ZGlmZiAtLWdpdCBhLy5ienJpZ25vcmUgYi8uYnpyaWdub3JlCmluZGV4IDk1OWE3ZGYuLjg5NzA4NGQgMTAwNjQ0Ci0tLSBhLy5ienJpZ25vcmUKKysrIGIvLmJ6cmlnbm9yZQpAQCAtMzMsNyArMzMsNiBAQAogTW9kdWxlcy9jb25maWcuYwogTW9kdWxlcy9sZF9zb19haXgKIFBhcnNlci9wZ2VuCi1QYXJzZXIvcGdlbi5zdGFtcAogTGliL3Rlc3QvZGF0YS8qCiBMaWIvbGliMnRvMy9HcmFtbWFyKi5waWNrbGUKIExpYi9saWIydG8zL1BhdHRlcm5HcmFtbWFyKi5waWNrbGUKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGMxYTgwNTUuLjQ5Mjk5ZWUgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMTUsNiArMTUsNyBAQAogRG9jL3Rvb2xzL3B5Z21lbnRzLwogRG9jL3Rvb2xzL3NwaGlueC8KIExpYi9saWIydG8zLyoucGlja2xlCitMaWIvX3N5c2NvbmZpZ2RhdGEucHkKIExpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCkBAIC0yNCw2ICsyNSw3IEBACiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2NvbmZpZy5jCiBNb2R1bGVzL2xkX3NvX2FpeAorTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiBQQ2J1aWxkLyouYnNjCiBQQ2J1aWxkLyouZGxsCkBAIC0zNyw3ICszOSw2IEBACiBQQ2J1aWxkL2FtZDY0LwogLnB1cmlmeQogUGFyc2VyL3BnZW4KLVBhcnNlci9wZ2VuLnN0YW1wCiBfX3B5Y2FjaGVfXwogYXV0b200dGUuY2FjaGUKIGJ1aWxkLwpkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmluZGV4IGVkMTMxNzEuLjY0YmI3Y2YgMTAwNjQ0Ci0tLSBhLy5oZ2VvbAorKysgYi8uaGdlb2wKQEAgLTI4LDggKzI4LDExIEBACiAKIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCA9IEJJTgogTGliL3Rlc3QvY2prZW5jb2RpbmdzLyogPSBCSU4KLUxpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KIExpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS8qLmRlY1Rlc3QgPSBCSU4KK0xpYi90ZXN0L3NuZGhkcmRhdGEvc25kaGRyLiogPSBCSU4KK0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0ID0gQklOCisKK0xpYi92ZW52L3NjcmlwdHMvbnQvKiA9IEJJTgogCiAjIEFsbCBvdGhlciBmaWxlcyAod2hpY2ggcHJlc3VtYWJseSBhcmUgaHVtYW4tZWRpdGFibGUpIGFyZSAibmF0aXZlIi4KICMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHJ1bGUhCmRpZmYgLS1naXQgYS8uaGdpZ25vcmUgYi8uaGdpZ25vcmUKaW5kZXggMjRkZjNiOS4uYTAxYTE3OCAxMDA2NDQKLS0tIGEvLmhnaWdub3JlCisrKyBiLy5oZ2lnbm9yZQpAQCAtNSw3ICs1LDggQEAKIE1ha2VmaWxlLnByZSQKIFRBR1MkCiBhdXRvbTR0ZS5jYWNoZSQKLWJ1aWxkLworXmJ1aWxkLworXkRvYy9idWlsZC8KIGJ1aWxkbm8kCiBjb25maWcuY2FjaGUKIGNvbmZpZy5sb2cKQEAgLTMxLDcgKzMyLDYgQEAKIE1vZHVsZXMvY29uZmlnLmMKIE1vZHVsZXMvbGRfc29fYWl4JAogUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKIF5jb3JlCiBecHl0aG9uLWdkYi5weQogXnB5dGhvbi5leGUtZ2RiLnB5CkBAIC00Nyw2ICs0Nyw3IEBACiAqLnB5ZAogKi5jb3ZlcgogKn4KK0xpYi9fc3lzY29uZmlnZGF0YS5weQogTGliL2xpYjJ0bzMvKi5waWNrbGUKIExpYi90ZXN0L2RhdGEvKgogTWlzYy8qLndwdQpAQCAtNTQsNiArNTUsMTggQEAKIFBDL3B5dGhvbm50X3JjKi5oCiBQQy8qLm9iagogUEMvKi5leGUKK1BDLyovKi5leGUKK1BDLyovKi5leHAKK1BDLyovKi5saWIKK1BDLyovKi5ic2MKK1BDLyovKi5kbGwKK1BDLyovKi5wZGIKK1BDLyovKi51c2VyCitQQy8qLyoubmNiCitQQy8qLyouc3VvCitQQy8qL1dpbjMyLXRlbXAtKgorUEMvKi94NjQtdGVtcC0qCitQQy8qL2FtZDY0CiBQQ2J1aWxkLyouZXhlCiBQQ2J1aWxkLyouZGxsCiBQQ2J1aWxkLyoucGRiCkBAIC02Miw4ICs3NSwxNSBAQAogUENidWlsZC8qLm8KIFBDYnVpbGQvKi5uY2IKIFBDYnVpbGQvKi5ic2MKK1BDYnVpbGQvKi51c2VyCitQQ2J1aWxkLyouc3VvCitQQ2J1aWxkLyouKnNkZgogUENidWlsZC9XaW4zMi10ZW1wLSoKK1BDYnVpbGQveDY0LXRlbXAtKgorUENidWlsZC9hbWQ2NAorQnVpbGRMb2cuaHRtCiBfX3B5Y2FjaGVfXworTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYgogTW9kdWxlcy9fdGVzdGVtYmVkCiAuY292ZXJhZ2UKIGNvdmVyYWdlLwpkaWZmIC0tZ2l0IGEvLmhndGFncyBiLy5oZ3RhZ3MKaW5kZXggZjA2MWI5MC4uZWZhNGQyZSAxMDA2NDQKLS0tIGEvLmhndGFncworKysgYi8uaGd0YWdzCkBAIC05OSwzICs5OSwxMyBAQAogNzA4NTQwM2RhZjQzOWFkYjNmOWU3MGVmMTNmNmJlZGIxYzQ0NzM3NiB2My4yLjNyYzEKIDQyOGYwNWNiNzI3N2UxZDQyYmI5ZGQ4ZDFhZjZiNjI3MGViYzYxMTIgdjMuMi4zcmMyCiAzZDA2ODZkOTBmNTVhNzhmOTZkOTQwM2RhMmM1MmRjMjQxMTQxOWQwIHYzLjIuMworZjFhOWE2NTA1NzMxNzE0ZjBlMTU3NDUzZmY4NTBlM2I3MTYxNWM0NSB2My4zLjBhMQorMmY2OWRiNTJkNmRlMzA2Y2RhZWYwYTBjYzAwY2M4MjNmYjM1MGIwMSB2My4zLjBhMgorMGI1M2I3MGE0MGEwMDAxMzUwNWViMzVlMzY2MDA1N2I2MmJlNzdiZSB2My4zLjBhMworN2M1MTM4OGEzYWE3Y2U3NmE4NTQxYmJiZGZjMDVkMmQyNTlhMTYyYyB2My4zLjBhNAorZTE1YzU1NGNkNDNlYjIzYmMwYTUyOGE0ZTg3NDFkYTliYmVjOTYwNyB2My4zLjBiMQorNDk3MmE4ZjFiMmFhM2Q3Y2RkNjRkYzk2YWE3ZmExMTJmZTFlYTM0MyB2My4zLjBiMgorOGJiNWM3YmM0NmJhNDM4MDQ0ODBmM2UzMjhlMWZhOTU2NjcyYzg4NSB2My4zLjByYzEKKzg4YTA3OTJlOGJhM2U0OTE2YjI0YzdlN2E1MjJjMjc3ZDMyNmQ2NmUgdjMuMy4wcmMyCitjMTkxZDIxY2VmYWZiMzgzMmM0NTU3MGU4NDg1NGUzMDlhYTYyZWFhIHYzLjMuMHJjMworYmQ4YWZiOTBlYmYyOGJhNGVkYzkwMWQ0YTIzNWY3NWU3YmJjNzlmZCB2My4zLjAKZGlmZiAtLWdpdCBhLy5oZ3RvdWNoIGIvLmhndG91Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5MzZmYQotLS0gL2Rldi9udWxsCisrKyBiLy5oZ3RvdWNoCkBAIC0wLDAgKzEsMTIgQEAKKyMgLSotIE1ha2VmaWxlIC0qLQorIyBEZWZpbmUgZGVwZW5kZW5jaWVzIG9mIGdlbmVyYXRlZCBmaWxlcyB0aGF0IGFyZSBjaGVja2VkIGludG8gaGcuCisjIFRoZSBzeW50YXggb2YgdGhpcyBmaWxlIHVzZXMgbWFrZSBydWxlIGRlcGVuZGVuY2llcywgd2l0aG91dCBhY3Rpb25zCisKK1B5dGhvbi9pbXBvcnRsaWIuaDogTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFB5dGhvbi9mcmVlemVfaW1wb3J0bGliLnB5CisKK0luY2x1ZGUvYXN0Lmg6IFBhcnNlci9QeXRob24uYXNkbCBQYXJzZXIvYXNkbC5weSBQYXJzZXIvYXNkbF9jLnB5CitQeXRob24vUHl0aG9uLWFzdC5jOiBJbmNsdWRlL2FzdC5oCisKK1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oOiBQeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkgTGliL29wY29kZS5weQorCitPYmplY3RzL3R5cGVzbG90cy5pbmM6IEluY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMucHkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggY2I1NmVhOS4uNmE4MDRkNCAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtNTMsNyArNTMsNyBAQAogCWZpCiAJQGlmIFsgISAtZCB0b29scy9weWdtZW50cyBdOyB0aGVuIFwKIAkgIGVjaG8gIkNoZWNraW5nIG91dCBQeWdtZW50cy4uLiI7IFwKLQkgIHN2biBjaGVja291dCAkKFNWTlJPT1QpL2V4dGVybmFsL1B5Z21lbnRzLTEuMy4xL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzOyBcCisJICBzdm4gY2hlY2tvdXQgJChTVk5ST09UKS9leHRlcm5hbC9QeWdtZW50cy0xLjVkZXYtMjAxMjA5MzAvcHlnbWVudHMgdG9vbHMvcHlnbWVudHM7IFwKIAlmaQogCiB1cGRhdGU6IGNsZWFuIGNoZWNrb3V0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ0ZGRhN2MuLmIyOGFhNWYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0xNDYsNyArMTQ2LDcgQEAKICAgIExpa2UgYGB1I2BgLCBidXQgdGhlIFB5dGhvbiBvYmplY3QgbWF5IGFsc28gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgdGhlCiAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBwb2ludGVyIGlzIHNldCB0byAqTlVMTCouCiAKLWBgVWBgICg6Y2xhc3M6YHN0cmApIFtQeVVuaWNvZGVPYmplY3QgXCpdCitgYFVgYCAoOmNsYXNzOmBzdHJgKSBbUHlPYmplY3QgXCpdCiAgICBSZXF1aXJlcyB0aGF0IHRoZSBQeXRob24gb2JqZWN0IGlzIGEgVW5pY29kZSBvYmplY3QsIHdpdGhvdXQgYXR0ZW1wdGluZwogICAgYW55IGNvbnZlcnNpb24uICBSYWlzZXMgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUgb2JqZWN0IGlzIG5vdCBhIFVuaWNvZGUKICAgIG9iamVjdC4gIFRoZSBDIHZhcmlhYmxlIG1heSBhbHNvIGJlIGRlY2xhcmVkIGFzIDpjOnR5cGU6YFB5T2JqZWN0XCpgLgpAQCAtMjYwLDkgKzI2MCwxMiBAQAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgogCi1gYGNgYCAoOmNsYXNzOmBieXRlc2Agb2YgbGVuZ3RoIDEpIFtjaGFyXQotICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMSwKLSAgIHRvIGEgQyA6Yzp0eXBlOmBjaGFyYC4KK2BgY2BgICg6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2YgbGVuZ3RoIDEpIFtjaGFyXQorICAgQ29udmVydCBhIFB5dGhvbiBieXRlLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9yCisgICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0IG9mIGxlbmd0aCAxLCB0byBhIEMgOmM6dHlwZTpgY2hhcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBbGxvdyA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cy4KIAogYGBDYGAgKDpjbGFzczpgc3RyYCBvZiBsZW5ndGggMSkgW2ludF0KICAgIENvbnZlcnQgYSBQeXRob24gY2hhcmFjdGVyLCByZXByZXNlbnRlZCBhcyBhIDpjbGFzczpgc3RyYCBvYmplY3Qgb2YKQEAgLTMxNSw2ICszMTgsMTUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBgYFB5X0NMRUFOVVBfU1VQUE9SVEVEYGAgd2FzIGFkZGVkLgogCitgYHBgYCAoOmNsYXNzOmBib29sYCkgW2ludF0KKyAgIFRlc3RzIHRoZSB2YWx1ZSBwYXNzZWQgaW4gZm9yIHRydXRoIChhIGJvb2xlYW4gKipwKipccmVkaWNhdGUpIGFuZCBjb252ZXJ0cworICAgdGhlIHJlc3VsdCB0byBpdHMgZXF1aXZhbGVudCBDIHRydWUvZmFsc2UgaW50ZWdlciB2YWx1ZS4KKyAgIFNldHMgdGhlIGludCB0byAxIGlmIHRoZSBleHByZXNzaW9uIHdhcyB0cnVlIGFuZCAwIGlmIGl0IHdhcyBmYWxzZS4KKyAgIFRoaXMgYWNjZXB0cyBhbnkgdmFsaWQgUHl0aG9uIHZhbHVlLiAgU2VlIDpyZWY6YHRydXRoYCBmb3IgbW9yZQorICAgaW5mb3JtYXRpb24gYWJvdXQgaG93IFB5dGhvbiB0ZXN0cyB2YWx1ZXMgZm9yIHRydXRoLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogYGAoaXRlbXMpYGAgKDpjbGFzczpgdHVwbGVgKSBbKm1hdGNoaW5nLWl0ZW1zKl0KICAgIFRoZSBvYmplY3QgbXVzdCBiZSBhIFB5dGhvbiBzZXF1ZW5jZSB3aG9zZSBsZW5ndGggaXMgdGhlIG51bWJlciBvZiBmb3JtYXQgdW5pdHMKICAgIGluICppdGVtcyouICBUaGUgQyBhcmd1bWVudHMgbXVzdCBjb3JyZXNwb25kIHRvIHRoZSBpbmRpdmlkdWFsIGZvcm1hdCB1bml0cyBpbgpAQCAtMzM2LDYgKzM0OCwxNSBAQAogICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAgZG9lcyBub3QgdG91Y2ggdGhlIGNvbnRlbnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIEMKICAgIHZhcmlhYmxlKHMpLgogCitgYCRgYAorICAgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzYCBvbmx5OgorICAgSW5kaWNhdGVzIHRoYXQgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgaW4gdGhlIFB5dGhvbiBhcmd1bWVudCBsaXN0IGFyZQorICAga2V5d29yZC1vbmx5LiAgQ3VycmVudGx5LCBhbGwga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBtdXN0IGFsc28gYmUgb3B0aW9uYWwKKyAgIGFyZ3VtZW50cywgc28gYGB8YGAgbXVzdCBhbHdheXMgYmUgc3BlY2lmaWVkIGJlZm9yZSBgYCRgYCBpbiB0aGUgZm9ybWF0CisgICBzdHJpbmcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBgYDpgYAogICAgVGhlIGxpc3Qgb2YgZm9ybWF0IHVuaXRzIGVuZHMgaGVyZTsgdGhlIHN0cmluZyBhZnRlciB0aGUgY29sb24gaXMgdXNlZCBhcyB0aGUKICAgIGZ1bmN0aW9uIG5hbWUgaW4gZXJyb3IgbWVzc2FnZXMgKHRoZSAiYXNzb2NpYXRlZCB2YWx1ZSIgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdCBiL0RvYy9jLWFwaS9idWZmZXIucnN0CmluZGV4IGQ5OGVjZTMuLmQ2MzY5MzUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9idWZmZXIucnN0CisrKyBiL0RvYy9jLWFwaS9idWZmZXIucnN0CkBAIC03LDYgKzcsNyBAQAogCiAuLiBzZWN0aW9uYXV0aG9yOjogR3JlZyBTdGVpbiA8Z3N0ZWluQGx5cmEub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IEJlbmphbWluIFBldGVyc29uCisuLiBzZWN0aW9uYXV0aG9yOjogU3RlZmFuIEtyYWgKIAogCiAuLiBpbmRleDo6CkBAIC0yMCw3ICsyMSw3IEBACiAKIFdoaWxlIGVhY2ggb2YgdGhlc2UgdHlwZXMgaGF2ZSB0aGVpciBvd24gc2VtYW50aWNzLCB0aGV5IHNoYXJlIHRoZSBjb21tb24KIGNoYXJhY3RlcmlzdGljIG9mIGJlaW5nIGJhY2tlZCBieSBhIHBvc3NpYmx5IGxhcmdlIG1lbW9yeSBidWZmZXIuICBJdCBpcwotdGhlbiBkZXNpcmVhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKK3RoZW4gZGVzaXJhYmxlLCBpbiBzb21lIHNpdHVhdGlvbnMsIHRvIGFjY2VzcyB0aGF0IGJ1ZmZlciBkaXJlY3RseSBhbmQKIHdpdGhvdXQgaW50ZXJtZWRpYXRlIGNvcHlpbmcuCiAKIFB5dGhvbiBwcm92aWRlcyBzdWNoIGEgZmFjaWxpdHkgYXQgdGhlIEMgbGV2ZWwgaW4gdGhlIGZvcm0gb2YgdGhlICpidWZmZXIKQEAgLTYwLDggKzYxLDEwIEBACiByZXNvdXJjZSBsZWFrcy4KIAogCi1UaGUgYnVmZmVyIHN0cnVjdHVyZQotPT09PT09PT09PT09PT09PT09PT0KKy4uIF9idWZmZXItc3RydWN0dXJlOgorCitCdWZmZXIgc3RydWN0dXJlCis9PT09PT09PT09PT09PT09CiAKIEJ1ZmZlciBzdHJ1Y3R1cmVzIChvciBzaW1wbHkgImJ1ZmZlcnMiKSBhcmUgdXNlZnVsIGFzIGEgd2F5IHRvIGV4cG9zZSB0aGUKIGJpbmFyeSBkYXRhIGZyb20gYW5vdGhlciBvYmplY3QgdG8gdGhlIFB5dGhvbiBwcm9ncmFtbWVyLiAgVGhleSBjYW4gYWxzbyBiZQpAQCAtNzgsOTYgKzgxLDMzOSBAQAogYXJvdW5kIGEgYnVmZmVyIGlzIG5lZWRlZCwgYSA6cmVmOmBtZW1vcnl2aWV3IDxtZW1vcnl2aWV3LW9iamVjdHM+YCBvYmplY3QKIGNhbiBiZSBjcmVhdGVkLgogCitGb3Igc2hvcnQgaW5zdHJ1Y3Rpb25zIGhvdyB0byB3cml0ZSBhbiBleHBvcnRpbmcgb2JqZWN0LCBzZWUKKzpyZWY6YEJ1ZmZlciBPYmplY3QgU3RydWN0dXJlcyA8YnVmZmVyLXN0cnVjdHM+YC4gRm9yIG9idGFpbmluZworYSBidWZmZXIsIHNlZSA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgLgogCiAuLiBjOnR5cGU6OiBQeV9idWZmZXIKIAotICAgLi4gYzptZW1iZXI6OiB2b2lkICpidWYKKyAgIC4uIGM6bWVtYmVyOjogdm9pZCBcKm9iagogCi0gICAgICBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBtZW1vcnkgZm9yIHRoZSBvYmplY3QuCisgICAgICBBIG5ldyByZWZlcmVuY2UgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QuIFRoZSByZWZlcmVuY2UgaXMgb3duZWQgYnkKKyAgICAgIHRoZSBjb25zdW1lciBhbmQgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCBhbmQgc2V0IHRvICpOVUxMKiBieQorICAgICAgOmM6ZnVuYzpgUHlCdWZmZXJfUmVsZWFzZWAuIFRoZSBmaWVsZCBpcyB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiBhbnkgc3RhbmRhcmQgQy1BUEkgZnVuY3Rpb24uCisKKyAgICAgIEFzIGEgc3BlY2lhbCBjYXNlLCBmb3IgKnRlbXBvcmFyeSogYnVmZmVycyB0aGF0IGFyZSB3cmFwcGVkIGJ5CisgICAgICA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcmAgb3IgOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbEluZm9gCisgICAgICB0aGlzIGZpZWxkIGlzICpOVUxMKi4gSW4gZ2VuZXJhbCwgZXhwb3J0aW5nIG9iamVjdHMgTVVTVCBOT1QKKyAgICAgIHVzZSB0aGlzIHNjaGVtZS4KKworICAgLi4gYzptZW1iZXI6OiB2b2lkIFwqYnVmCisKKyAgICAgIEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIGRlc2NyaWJlZCBieSB0aGUgYnVmZmVyCisgICAgICBmaWVsZHMuIFRoaXMgY2FuIGJlIGFueSBsb2NhdGlvbiB3aXRoaW4gdGhlIHVuZGVybHlpbmcgcGh5c2ljYWwgbWVtb3J5CisgICAgICBibG9jayBvZiB0aGUgZXhwb3J0ZXIuIEZvciBleGFtcGxlLCB3aXRoIG5lZ2F0aXZlIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYAorICAgICAgdGhlIHZhbHVlIG1heSBwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBtZW1vcnkgYmxvY2suCisKKyAgICAgIEZvciBjb250aWd1b3VzIGFycmF5cywgdGhlIHZhbHVlIHBvaW50cyB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBtZW1vcnkKKyAgICAgIGJsb2NrLgogCiAgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgbGVuCi0gICAgICA6bm9pbmRleDoKIAotICAgICAgVGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgbWVtb3J5IGluIGJ5dGVzLgorICAgICAgYGBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplYGAuIEZvciBjb250aWd1b3VzIGFycmF5cywgdGhpcyBpcyB0aGUgbGVuZ3RoCisgICAgICBvZiB0aGUgdW5kZXJseWluZyBtZW1vcnkgYmxvY2suIEZvciBub24tY29udGlndW91cyBhcnJheXMsIGl0IGlzIHRoZSBsZW5ndGgKKyAgICAgIHRoYXQgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIHdvdWxkIGhhdmUgaWYgaXQgd2VyZSBjb3BpZWQgdG8gYSBjb250aWd1b3VzCisgICAgICByZXByZXNlbnRhdGlvbi4KKworICAgICAgQWNjZXNzaW5nIGBgKChjaGFyICopYnVmKVswXSB1cCB0byAoKGNoYXIgKilidWYpW2xlbi0xXWBgIGlzIG9ubHkgdmFsaWQKKyAgICAgIGlmIHRoZSBidWZmZXIgaGFzIGJlZW4gb2J0YWluZWQgYnkgYSByZXF1ZXN0IHRoYXQgZ3VhcmFudGVlcyBjb250aWd1aXR5LiBJbgorICAgICAgbW9zdCBjYXNlcyBzdWNoIGEgcmVxdWVzdCB3aWxsIGJlIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgIG9yIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAuCiAKICAgIC4uIGM6bWVtYmVyOjogaW50IHJlYWRvbmx5CiAKLSAgICAgIEFuIGluZGljYXRvciBvZiB3aGV0aGVyIHRoZSBidWZmZXIgaXMgcmVhZCBvbmx5LgotCi0gICAuLiBjOm1lbWJlcjo6IGNvbnN0IGNoYXIgKmZvcm1hdAotICAgICAgOm5vaW5kZXg6Ci0KLSAgICAgIEEgKk5VTEwqIHRlcm1pbmF0ZWQgc3RyaW5nIGluIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN0eWxlIHN5bnRheCBnaXZpbmcKLSAgICAgIHRoZSBjb250ZW50cyBvZiB0aGUgZWxlbWVudHMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGJ1ZmZlci4gIElmIHRoaXMgaXMKLSAgICAgICpOVUxMKiwgYGAiQiJgYCAodW5zaWduZWQgYnl0ZXMpIGlzIGFzc3VtZWQuCi0KLSAgIC4uIGM6bWVtYmVyOjogaW50IG5kaW0KLQotICAgICAgVGhlIG51bWJlciBvZiBkaW1lbnNpb25zIHRoZSBtZW1vcnkgcmVwcmVzZW50cyBhcyBhIG11bHRpLWRpbWVuc2lvbmFsCi0gICAgICBhcnJheS4gIElmIGl0IGlzIDAsIDpjOmRhdGE6YHN0cmlkZXNgIGFuZCA6YzpkYXRhOmBzdWJvZmZzZXRzYCBtdXN0IGJlCi0gICAgICAqTlVMTCouCi0KLSAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCAqc2hhcGUKLQotICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGBccyB0aGUgbGVuZ3RoIG9mIDpjOmRhdGE6YG5kaW1gIGdpdmluZyB0aGUKLSAgICAgIHNoYXBlIG9mIHRoZSBtZW1vcnkgYXMgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheS4gIE5vdGUgdGhhdAotICAgICAgYGAoKCpzaGFwZSlbMF0gKiAuLi4gKiAoKnNoYXBlKVtuZGltcy0xXSkqaXRlbXNpemVgYCBzaG91bGQgYmUgZXF1YWwgdG8KLSAgICAgIDpjOmRhdGE6YGxlbmAuCi0KLSAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCAqc3RyaWRlcwotCi0gICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YFxzIHRoZSBsZW5ndGggb2YgOmM6ZGF0YTpgbmRpbWAgZ2l2aW5nIHRoZQotICAgICAgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgdG8gZ2V0IHRvIGEgbmV3IGVsZW1lbnQgaW4gZWFjaCBkaW1lbnNpb24uCi0KLSAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCAqc3Vib2Zmc2V0cwotCi0gICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YFxzIHRoZSBsZW5ndGggb2YgOmM6ZGF0YTpgbmRpbWAuICBJZiB0aGVzZQotICAgICAgc3Vib2Zmc2V0IG51bWJlcnMgYXJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLCB0aGVuIHRoZSB2YWx1ZSBzdG9yZWQKLSAgICAgIGFsb25nIHRoZSBpbmRpY2F0ZWQgZGltZW5zaW9uIGlzIGEgcG9pbnRlciBhbmQgdGhlIHN1Ym9mZnNldCB2YWx1ZQotICAgICAgZGljdGF0ZXMgaG93IG1hbnkgYnl0ZXMgdG8gYWRkIHRvIHRoZSBwb2ludGVyIGFmdGVyIGRlLXJlZmVyZW5jaW5nLiBBCi0gICAgICBzdWJvZmZzZXQgdmFsdWUgdGhhdCBpdCBuZWdhdGl2ZSBpbmRpY2F0ZXMgdGhhdCBubyBkZS1yZWZlcmVuY2luZyBzaG91bGQKLSAgICAgIG9jY3VyIChzdHJpZGluZyBpbiBhIGNvbnRpZ3VvdXMgbWVtb3J5IGJsb2NrKS4KLQotICAgICAgSGVyZSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVsZW1lbnQgaW4gYW4gTi1EIGFycmF5Ci0gICAgICBwb2ludGVkIHRvIGJ5IGFuIE4tZGltZW5zaW9uYWwgaW5kZXggd2hlbiB0aGVyZSBhcmUgYm90aCBub24tTlVMTCBzdHJpZGVzCi0gICAgICBhbmQgc3Vib2Zmc2V0czo6Ci0KLSAgICAgICAgICB2b2lkICpnZXRfaXRlbV9wb2ludGVyKGludCBuZGltLCB2b2lkICpidWYsIFB5X3NzaXplX3QgKnN0cmlkZXMsCi0gICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN1Ym9mZnNldHMsIFB5X3NzaXplX3QgKmluZGljZXMpIHsKLSAgICAgICAgICAgICAgY2hhciAqcG9pbnRlciA9IChjaGFyKilidWY7Ci0gICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICBwb2ludGVyICs9IHN0cmlkZXNbaV0gKiBpbmRpY2VzW2ldOwotICAgICAgICAgICAgICAgICAgaWYgKHN1Ym9mZnNldHNbaV0gPj0wICkgewotICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXIgPSAqKChjaGFyKiopcG9pbnRlcikgKyBzdWJvZmZzZXRzW2ldOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybiAodm9pZCopcG9pbnRlcjsKLSAgICAgICAgICAgfQotCisgICAgICBBbiBpbmRpY2F0b3Igb2Ygd2hldGhlciB0aGUgYnVmZmVyIGlzIHJlYWQtb25seS4gVGhpcyBmaWVsZCBpcyBjb250cm9sbGVkCisgICAgICBieSB0aGUgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBmbGFnLgogCiAgICAuLiBjOm1lbWJlcjo6IFB5X3NzaXplX3QgaXRlbXNpemUKIAotICAgICAgVGhpcyBpcyBhIHN0b3JhZ2UgZm9yIHRoZSBpdGVtc2l6ZSAoaW4gYnl0ZXMpIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUKLSAgICAgIHNoYXJlZCBtZW1vcnkuIEl0IGlzIHRlY2huaWNhbGx5IHVuLW5lY2Vzc2FyeSBhcyBpdCBjYW4gYmUgb2J0YWluZWQKLSAgICAgIHVzaW5nIDpjOmZ1bmM6YFB5QnVmZmVyX1NpemVGcm9tRm9ybWF0YCwgaG93ZXZlciBhbiBleHBvcnRlciBtYXkga25vdwotICAgICAgdGhpcyBpbmZvcm1hdGlvbiB3aXRob3V0IHBhcnNpbmcgdGhlIGZvcm1hdCBzdHJpbmcgYW5kIGl0IGlzIG5lY2Vzc2FyeQotICAgICAgdG8ga25vdyB0aGUgaXRlbXNpemUgZm9yIHByb3BlciBpbnRlcnByZXRhdGlvbiBvZiBzdHJpZGluZy4gVGhlcmVmb3JlLAotICAgICAgc3RvcmluZyBpdCBpcyBtb3JlIGNvbnZlbmllbnQgYW5kIGZhc3Rlci4KKyAgICAgIEl0ZW0gc2l6ZSBpbiBieXRlcyBvZiBhIHNpbmdsZSBlbGVtZW50LiBTYW1lIGFzIHRoZSB2YWx1ZSBvZiA6ZnVuYzpgc3RydWN0LmNhbGNzaXplYAorICAgICAgY2FsbGVkIG9uIG5vbi1OVUxMIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5mb3JtYXRgIHZhbHVlcy4KIAotICAgLi4gYzptZW1iZXI6OiB2b2lkICppbnRlcm5hbAorICAgICAgSW1wb3J0YW50IGV4Y2VwdGlvbjogSWYgYSBjb25zdW1lciByZXF1ZXN0cyBhIGJ1ZmZlciB3aXRob3V0IHRoZQorICAgICAgOmM6bWFjcm86YFB5QlVGX0ZPUk1BVGAgZmxhZywgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLmZvcm1hdGAgd2lsbAorICAgICAgYmUgc2V0IHRvICAqTlVMTCosICBidXQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBzdGlsbCBoYXMKKyAgICAgIHRoZSB2YWx1ZSBmb3IgdGhlIG9yaWdpbmFsIGZvcm1hdC4KKworICAgICAgSWYgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLnNoYXBlYCBpcyBwcmVzZW50LCB0aGUgZXF1YWxpdHkKKyAgICAgIGBgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9PSBsZW5gYCBzdGlsbCBob2xkcyBhbmQgdGhlIGNvbnN1bWVyCisgICAgICBjYW4gdXNlIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgdG8gbmF2aWdhdGUgdGhlIGJ1ZmZlci4KKworICAgICAgSWYgOmM6bWVtYmVyOmB+UHlfQnVmZmVyLnNoYXBlYCBpcyAqTlVMTCogYXMgYSByZXN1bHQgb2YgYSA6YzptYWNybzpgUHlCVUZfU0lNUExFYAorICAgICAgb3IgYSA6YzptYWNybzpgUHlCVUZfV1JJVEFCTEVgIHJlcXVlc3QsIHRoZSBjb25zdW1lciBtdXN0IGRpc3JlZ2FyZAorICAgICAgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLml0ZW1zaXplYCBhbmQgYXNzdW1lIGBgaXRlbXNpemUgPT0gMWBgLgorCisgICAuLiBjOm1lbWJlcjo6IGNvbnN0IGNoYXIgXCpmb3JtYXQKKworICAgICAgQSAqTlVMKiB0ZXJtaW5hdGVkIHN0cmluZyBpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSBzeW50YXggZGVzY3JpYmluZworICAgICAgdGhlIGNvbnRlbnRzIG9mIGEgc2luZ2xlIGl0ZW0uIElmIHRoaXMgaXMgKk5VTEwqLCBgYCJCImBgICh1bnNpZ25lZCBieXRlcykKKyAgICAgIGlzIGFzc3VtZWQuCisKKyAgICAgIFRoaXMgZmllbGQgaXMgY29udHJvbGxlZCBieSB0aGUgOmM6bWFjcm86YFB5QlVGX0ZPUk1BVGAgZmxhZy4KKworICAgLi4gYzptZW1iZXI6OiBpbnQgbmRpbQorCisgICAgICBUaGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgdGhlIG1lbW9yeSByZXByZXNlbnRzIGFzIGFuIG4tZGltZW5zaW9uYWwgYXJyYXkuCisgICAgICBJZiBpdCBpcyAwLCA6YzptZW1iZXI6YH5QeV9CdWZmZXIuYnVmYCBwb2ludHMgdG8gYSBzaW5nbGUgaXRlbSByZXByZXNlbnRpbmcKKyAgICAgIGEgc2NhbGFyLiBJbiB0aGlzIGNhc2UsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYAorICAgICAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdWJvZmZzZXRzYCBNVVNUIGJlICpOVUxMKi4KKworICAgICAgVGhlIG1hY3JvIDpjOm1hY3JvOmBQeUJVRl9NQVhfTkRJTWAgbGltaXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaW1lbnNpb25zCisgICAgICB0byA2NC4gRXhwb3J0ZXJzIE1VU1QgcmVzcGVjdCB0aGlzIGxpbWl0LCBjb25zdW1lcnMgb2YgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgIGJ1ZmZlcnMgU0hPVUxEIGJlIGFibGUgdG8gaGFuZGxlIHVwIHRvIDpjOm1hY3JvOmBQeUJVRl9NQVhfTkRJTWAgZGltZW5zaW9ucy4KKworICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IFwqc2hhcGUKKworICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGAgb2YgbGVuZ3RoIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYAorICAgICAgaW5kaWNhdGluZyB0aGUgc2hhcGUgb2YgdGhlIG1lbW9yeSBhcyBhbiBuLWRpbWVuc2lvbmFsIGFycmF5LiBOb3RlIHRoYXQKKyAgICAgIGBgc2hhcGVbMF0gKiAuLi4gKiBzaGFwZVtuZGltLTFdICogaXRlbXNpemVgYCBNVVNUIGJlIGVxdWFsIHRvCisgICAgICA6YzptZW1iZXI6YH5QeV9idWZmZXIubGVuYC4KKworICAgICAgU2hhcGUgdmFsdWVzIGFyZSByZXN0cmljdGVkIHRvIGBgc2hhcGVbbl0gPj0gMGBgLiBUaGUgY2FzZQorICAgICAgYGBzaGFwZVtuXSA9PSAwYGAgcmVxdWlyZXMgc3BlY2lhbCBhdHRlbnRpb24uIFNlZSBgY29tcGxleCBhcnJheXNgXworICAgICAgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCisKKyAgICAgIFRoZSBzaGFwZSBhcnJheSBpcyByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgLi4gYzptZW1iZXI6OiBQeV9zc2l6ZV90IFwqc3RyaWRlcworCisgICAgICBBbiBhcnJheSBvZiA6Yzp0eXBlOmBQeV9zc2l6ZV90YCBvZiBsZW5ndGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm5kaW1gCisgICAgICBnaXZpbmcgdGhlIG51bWJlciBvZiBieXRlcyB0byBza2lwIHRvIGdldCB0byBhIG5ldyBlbGVtZW50IGluIGVhY2gKKyAgICAgIGRpbWVuc2lvbi4KKworICAgICAgU3RyaWRlIHZhbHVlcyBjYW4gYmUgYW55IGludGVnZXIuIEZvciByZWd1bGFyIGFycmF5cywgc3RyaWRlcyBhcmUKKyAgICAgIHVzdWFsbHkgcG9zaXRpdmUsIGJ1dCBhIGNvbnN1bWVyIE1VU1QgYmUgYWJsZSB0byBoYW5kbGUgdGhlIGNhc2UKKyAgICAgIGBgc3RyaWRlc1tuXSA8PSAwYGAuIFNlZSBgY29tcGxleCBhcnJheXNgXyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgICAgVGhlIHN0cmlkZXMgYXJyYXkgaXMgcmVhZC1vbmx5IGZvciB0aGUgY29uc3VtZXIuCisKKyAgIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBcKnN1Ym9mZnNldHMKKworICAgICAgQW4gYXJyYXkgb2YgOmM6dHlwZTpgUHlfc3NpemVfdGAgb2YgbGVuZ3RoIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYC4KKyAgICAgIElmIGBgc3Vib2Zmc2V0c1tuXSA+PSAwYGAsIHRoZSB2YWx1ZXMgc3RvcmVkIGFsb25nIHRoZSBudGggZGltZW5zaW9uIGFyZQorICAgICAgcG9pbnRlcnMgYW5kIHRoZSBzdWJvZmZzZXQgdmFsdWUgZGljdGF0ZXMgaG93IG1hbnkgYnl0ZXMgdG8gYWRkIHRvIGVhY2gKKyAgICAgIHBvaW50ZXIgYWZ0ZXIgZGUtcmVmZXJlbmNpbmcuIEEgc3Vib2Zmc2V0IHZhbHVlIHRoYXQgaXMgbmVnYXRpdmUKKyAgICAgIGluZGljYXRlcyB0aGF0IG5vIGRlLXJlZmVyZW5jaW5nIHNob3VsZCBvY2N1ciAoc3RyaWRpbmcgaW4gYSBjb250aWd1b3VzCisgICAgICBtZW1vcnkgYmxvY2spLgorCisgICAgICBUaGlzIHR5cGUgb2YgYXJyYXkgcmVwcmVzZW50YXRpb24gaXMgdXNlZCBieSB0aGUgUHl0aG9uIEltYWdpbmcgTGlicmFyeQorICAgICAgKFBJTCkuIFNlZSBgY29tcGxleCBhcnJheXNgXyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbiBob3cgdG8gYWNjZXNzIGVsZW1lbnRzCisgICAgICBvZiBzdWNoIGFuIGFycmF5LgorCisgICAgICBUaGUgc3Vib2Zmc2V0cyBhcnJheSBpcyByZWFkLW9ubHkgZm9yIHRoZSBjb25zdW1lci4KKworICAgLi4gYzptZW1iZXI6OiB2b2lkIFwqaW50ZXJuYWwKIAogICAgICAgVGhpcyBpcyBmb3IgdXNlIGludGVybmFsbHkgYnkgdGhlIGV4cG9ydGluZyBvYmplY3QuIEZvciBleGFtcGxlLCB0aGlzCiAgICAgICBtaWdodCBiZSByZS1jYXN0IGFzIGFuIGludGVnZXIgYnkgdGhlIGV4cG9ydGVyIGFuZCB1c2VkIHRvIHN0b3JlIGZsYWdzCiAgICAgICBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGUgc2hhcGUsIHN0cmlkZXMsIGFuZCBzdWJvZmZzZXRzIGFycmF5cyBtdXN0IGJlCi0gICAgICBmcmVlZCB3aGVuIHRoZSBidWZmZXIgaXMgcmVsZWFzZWQuIFRoZSBjb25zdW1lciBzaG91bGQgbmV2ZXIgYWx0ZXIgdGhpcworICAgICAgZnJlZWQgd2hlbiB0aGUgYnVmZmVyIGlzIHJlbGVhc2VkLiBUaGUgY29uc3VtZXIgTVVTVCBOT1QgYWx0ZXIgdGhpcwogICAgICAgdmFsdWUuCiAKKy4uIF9idWZmZXItcmVxdWVzdC10eXBlczoKKworQnVmZmVyIHJlcXVlc3QgdHlwZXMKKz09PT09PT09PT09PT09PT09PT09CisKK0J1ZmZlcnMgYXJlIHVzdWFsbHkgb2J0YWluZWQgYnkgc2VuZGluZyBhIGJ1ZmZlciByZXF1ZXN0IHRvIGFuIGV4cG9ydGluZworb2JqZWN0IHZpYSA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgLiBTaW5jZSB0aGUgY29tcGxleGl0eSBvZiB0aGUgbG9naWNhbAorc3RydWN0dXJlIG9mIHRoZSBtZW1vcnkgY2FuIHZhcnkgZHJhc3RpY2FsbHksIHRoZSBjb25zdW1lciB1c2VzIHRoZSAqZmxhZ3MqCithcmd1bWVudCB0byBzcGVjaWZ5IHRoZSBleGFjdCBidWZmZXIgdHlwZSBpdCBjYW4gaGFuZGxlLgorCitBbGwgOmM6ZGF0YTpgUHlfYnVmZmVyYCBmaWVsZHMgYXJlIHVuYW1iaWd1b3VzbHkgZGVmaW5lZCBieSB0aGUgcmVxdWVzdAordHlwZS4KKworcmVxdWVzdC1pbmRlcGVuZGVudCBmaWVsZHMKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitUaGUgZm9sbG93aW5nIGZpZWxkcyBhcmUgbm90IGluZmx1ZW5jZWQgYnkgKmZsYWdzKiBhbmQgbXVzdCBhbHdheXMgYmUgZmlsbGVkIGluCit3aXRoIHRoZSBjb3JyZWN0IHZhbHVlczogOmM6bWVtYmVyOmB+UHlfYnVmZmVyLm9iamAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgLAorOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmxlbmAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5uZGltYC4KKworCityZWFkb25seSwgZm9ybWF0Cit+fn5+fn5+fn5+fn5+fn5+CisKKyAgIC4uIGM6bWFjcm86OiBQeUJVRl9XUklUQUJMRQorCisgICAgICBDb250cm9scyB0aGUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnJlYWRvbmx5YCBmaWVsZC4gSWYgc2V0LCB0aGUgZXhwb3J0ZXIKKyAgICAgIE1VU1QgcHJvdmlkZSBhIHdyaXRhYmxlIGJ1ZmZlciBvciBlbHNlIHJlcG9ydCBmYWlsdXJlLiBPdGhlcndpc2UsIHRoZQorICAgICAgZXhwb3J0ZXIgTUFZIHByb3ZpZGUgZWl0aGVyIGEgcmVhZC1vbmx5IG9yIHdyaXRhYmxlIGJ1ZmZlciwgYnV0IHRoZSBjaG9pY2UKKyAgICAgIE1VU1QgYmUgY29uc2lzdGVudCBmb3IgYWxsIGNvbnN1bWVycy4KKworICAgLi4gYzptYWNybzo6IFB5QlVGX0ZPUk1BVAorCisgICAgICBDb250cm9scyB0aGUgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmZvcm1hdGAgZmllbGQuIElmIHNldCwgdGhpcyBmaWVsZCBNVVNUCisgICAgICBiZSBmaWxsZWQgaW4gY29ycmVjdGx5LiBPdGhlcndpc2UsIHRoaXMgZmllbGQgTVVTVCBiZSAqTlVMTCouCisKKworOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBjYW4gYmUgXHwnZCB0byBhbnkgb2YgdGhlIGZsYWdzIGluIHRoZSBuZXh0IHNlY3Rpb24uCitTaW5jZSA6YzptYWNybzpgUHlCVUZfU0lNUExFYCBpcyBkZWZpbmVkIGFzIDAsIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAKK2NhbiBiZSB1c2VkIGFzIGEgc3RhbmQtYWxvbmUgZmxhZyB0byByZXF1ZXN0IGEgc2ltcGxlIHdyaXRhYmxlIGJ1ZmZlci4KKworOmM6bWFjcm86YFB5QlVGX0ZPUk1BVGAgY2FuIGJlIFx8J2QgdG8gYW55IG9mIHRoZSBmbGFncyBleGNlcHQgOmM6bWFjcm86YFB5QlVGX1NJTVBMRWAuCitUaGUgbGF0dGVyIGFscmVhZHkgaW1wbGllcyBmb3JtYXQgYGBCYGAgKHVuc2lnbmVkIGJ5dGVzKS4KKworCitzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIGZsYWdzIHRoYXQgY29udHJvbCB0aGUgbG9naWNhbCBzdHJ1Y3R1cmUgb2YgdGhlIG1lbW9yeSBhcmUgbGlzdGVkCitpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIGNvbXBsZXhpdHkuIE5vdGUgdGhhdCBlYWNoIGZsYWcgY29udGFpbnMgYWxsIGJpdHMKK29mIHRoZSBmbGFncyBiZWxvdyBpdC4KKworCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAgUmVxdWVzdCAgICAgICAgICAgICAgICAgICAgfCBzaGFwZSB8IHN0cmlkZXMgfCBzdWJvZmZzZXRzIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09Kz09PT09PT09PSs9PT09PT09PT09PT0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9JTkRJUkVDVCB8ICB5ZXMgIHwgICB5ZXMgICB8IGlmIG5lZWRlZCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERVMgIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfTkQgICAgICAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9TSU1QTEUgICB8ICBOVUxMIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKKworCitjb250aWd1aXR5IHJlcXVlc3RzCit+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0Mgb3IgRm9ydHJhbiBjb250aWd1aXR5IGNhbiBiZSBleHBsaWNpdGx5IHJlcXVlc3RlZCwgd2l0aCBhbmQgd2l0aG91dCBzdHJpZGUKK2luZm9ybWF0aW9uLiBXaXRob3V0IHN0cmlkZSBpbmZvcm1hdGlvbiwgdGhlIGJ1ZmZlciBtdXN0IGJlIEMtY29udGlndW91cy4KKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgIFJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc2hhcGUgfCBzdHJpZGVzIHwgc3Vib2Zmc2V0cyB8IGNvbnRpZyB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09Kz09PT09PT09KworfCAuLiBjOm1hY3JvOjogUHlCVUZfQ19DT05USUdVT1VTICAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBDICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9GX0NPTlRJR1VPVVMgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIEYgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX0FOWV9DT05USUdVT1VTIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8IEMgb3IgRiB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfTkQgICAgICAgICAgICAgfCAgeWVzICB8ICAgTlVMTCAgfCAgICBOVUxMICAgIHwgICBDICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rCisKKworY29tcG91bmQgcmVxdWVzdHMKK35+fn5+fn5+fn5+fn5+fn5+CisKK0FsbCBwb3NzaWJsZSByZXF1ZXN0cyBhcmUgZnVsbHkgZGVmaW5lZCBieSBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZSBmbGFncyBpbgordGhlIHByZXZpb3VzIHNlY3Rpb24uIEZvciBjb252ZW5pZW5jZSwgdGhlIGJ1ZmZlciBwcm90b2NvbCBwcm92aWRlcyBmcmVxdWVudGx5Cit1c2VkIGNvbWJpbmF0aW9ucyBhcyBzaW5nbGUgZmxhZ3MuCisKK0luIHRoZSBmb2xsb3dpbmcgdGFibGUgKlUqIHN0YW5kcyBmb3IgdW5kZWZpbmVkIGNvbnRpZ3VpdHkuIFRoZSBjb25zdW1lciB3b3VsZAoraGF2ZSB0byBjYWxsIDpjOmZ1bmM6YFB5QnVmZmVyX0lzQ29udGlndW91c2AgdG8gZGV0ZXJtaW5lIGNvbnRpZ3VpdHkuCisKKworCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgIFJlcXVlc3QgICAgICAgICAgICAgICAgICAgICAgfCBzaGFwZSB8IHN0cmlkZXMgfCBzdWJvZmZzZXRzIHwgY29udGlnIHwgcmVhZG9ubHkgfCBmb3JtYXQgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSs9PT09PT09PT0rPT09PT09PT09PT09Kz09PT09PT09Kz09PT09PT09PT0rPT09PT09PT0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9GVUxMICAgICAgIHwgIHllcyAgfCAgIHllcyAgIHwgaWYgbmVlZGVkICB8ICAgVSAgICB8ICAgICAwICAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTF9STyAgICB8ICB5ZXMgIHwgICB5ZXMgICB8IGlmIG5lZWRlZCAgfCAgIFUgICAgfCAgMSBvciAwICB8ICB5ZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1JFQ09SRFMgICAgfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgICAgIDAgICAgfCAgeWVzICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTX1JPIHwgIHllcyAgfCAgIHllcyAgIHwgICAgTlVMTCAgICB8ICAgVSAgICB8ICAxIG9yIDAgIHwgIHllcyAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfU1RSSURFRCAgICB8ICB5ZXMgIHwgICB5ZXMgICB8ICAgIE5VTEwgICAgfCAgIFUgICAgfCAgICAgMCAgICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKK3wgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERURfUk8gfCAgeWVzICB8ICAgeWVzICAgfCAgICBOVUxMICAgIHwgICBVICAgIHwgIDEgb3IgMCAgfCAgTlVMTCAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0rCit8IC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUcgICAgIHwgIHllcyAgfCAgIE5VTEwgIHwgICAgTlVMTCAgICB8ICAgQyAgICB8ICAgICAwICAgIHwgIE5VTEwgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tKworfCAuLiBjOm1hY3JvOjogUHlCVUZfQ09OVElHX1JPICB8ICB5ZXMgIHwgICBOVUxMICB8ICAgIE5VTEwgICAgfCAgIEMgICAgfCAgMSBvciAwICB8ICBOVUxMICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLSsKKworCitDb21wbGV4IGFycmF5cworPT09PT09PT09PT09PT0KKworTnVtUHktc3R5bGU6IHNoYXBlIGFuZCBzdHJpZGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworVGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIE51bVB5LXN0eWxlIGFycmF5cyBpcyBkZWZpbmVkIGJ5IDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAsCis6YzptZW1iZXI6YH5QeV9idWZmZXIubmRpbWAsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zaGFwZWAgYW5kIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYC4KKworSWYgYGBuZGltID09IDBgYCwgdGhlIG1lbW9yeSBsb2NhdGlvbiBwb2ludGVkIHRvIGJ5IDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgIGlzCitpbnRlcnByZXRlZCBhcyBhIHNjYWxhciBvZiBzaXplIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5pdGVtc2l6ZWAuIEluIHRoYXQgY2FzZSwKK2JvdGggOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN0cmlkZXNgIGFyZSAqTlVMTCouCisKK0lmIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYCBpcyAqTlVMTCosIHRoZSBhcnJheSBpcyBpbnRlcnByZXRlZCBhcworYSBzdGFuZGFyZCBuLWRpbWVuc2lvbmFsIEMtYXJyYXkuIE90aGVyd2lzZSwgdGhlIGNvbnN1bWVyIG11c3QgYWNjZXNzIGFuCituLWRpbWVuc2lvbmFsIGFycmF5IGFzIGZvbGxvd3M6CisKKyAgIGBgcHRyID0gKGNoYXIgKilidWYgKyBpbmRpY2VzWzBdICogc3RyaWRlc1swXSArIC4uLiArIGluZGljZXNbbi0xXSAqIHN0cmlkZXNbbi0xXWBgCisgICBgYGl0ZW0gPSAqKCh0eXBlb2YoaXRlbSkgKilwdHIpO2BgCisKKworQXMgbm90ZWQgYWJvdmUsIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5idWZgIGNhbiBwb2ludCB0byBhbnkgbG9jYXRpb24gd2l0aGluCit0aGUgYWN0dWFsIG1lbW9yeSBibG9jay4gQW4gZXhwb3J0ZXIgY2FuIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhIGJ1ZmZlciB3aXRoCit0aGlzIGZ1bmN0aW9uOgorCisuLiBjb2RlLWJsb2NrOjogcHl0aG9uCisKKyAgIGRlZiB2ZXJpZnlfc3RydWN0dXJlKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpOgorICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHJlcHJlc2VudCBhIHZhbGlkIGFycmF5IHdpdGhpbgorICAgICAgICAgIHRoZSBib3VuZHMgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnk6CisgICAgICAgICAgICAgIGNoYXIgKm1lbTogc3RhcnQgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICAgICBtZW1sZW46IGxlbmd0aCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgICAgIG9mZnNldDogKGNoYXIgKilidWYgLSBtZW0KKyAgICAgICAiIiIKKyAgICAgICBpZiBvZmZzZXQgJSBpdGVtc2l6ZToKKyAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgaWYgb2Zmc2V0IDwgMCBvciBvZmZzZXQraXRlbXNpemUgPiBtZW1sZW46CisgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgIGlmIGFueSh2ICUgaXRlbXNpemUgZm9yIHYgaW4gc3RyaWRlcyk6CisgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgaWYgbmRpbSA8PSAwOgorICAgICAgICAgICByZXR1cm4gbmRpbSA9PSAwIGFuZCBub3Qgc2hhcGUgYW5kIG5vdCBzdHJpZGVzCisgICAgICAgaWYgMCBpbiBzaGFwZToKKyAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgIGltaW4gPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICAgICBpbWF4ID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdID4gMCkKKworICAgICAgIHJldHVybiAwIDw9IG9mZnNldCtpbWluIGFuZCBvZmZzZXQraW1heCtpdGVtc2l6ZSA8PSBtZW1sZW4KKworCitQSUwtc3R5bGU6IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0luIGFkZGl0aW9uIHRvIHRoZSByZWd1bGFyIGl0ZW1zLCBQSUwtc3R5bGUgYXJyYXlzIGNhbiBjb250YWluIHBvaW50ZXJzCit0aGF0IG11c3QgYmUgZm9sbG93ZWQgaW4gb3JkZXIgdG8gZ2V0IHRvIHRoZSBuZXh0IGVsZW1lbnQgaW4gYSBkaW1lbnNpb24uCitGb3IgZXhhbXBsZSwgdGhlIHJlZ3VsYXIgdGhyZWUtZGltZW5zaW9uYWwgQy1hcnJheSBgYGNoYXIgdlsyXVsyXVszXWBgIGNhbgorYWxzbyBiZSB2aWV3ZWQgYXMgYW4gYXJyYXkgb2YgMiBwb2ludGVycyB0byAyIHR3by1kaW1lbnNpb25hbCBhcnJheXM6CitgYGNoYXIgKCp2WzJdKVsyXVszXWBgLiBJbiBzdWJvZmZzZXRzIHJlcHJlc2VudGF0aW9uLCB0aG9zZSB0d28gcG9pbnRlcnMKK2NhbiBiZSBlbWJlZGRlZCBhdCB0aGUgc3RhcnQgb2YgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmJ1ZmAsIHBvaW50aW5nCit0byB0d28gYGBjaGFyIHhbMl1bM11gYCBhcnJheXMgdGhhdCBjYW4gYmUgbG9jYXRlZCBhbnl3aGVyZSBpbiBtZW1vcnkuCisKKworSGVyZSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGVsZW1lbnQgaW4gYW4gTi1EIGFycmF5Citwb2ludGVkIHRvIGJ5IGFuIE4tZGltZW5zaW9uYWwgaW5kZXggd2hlbiB0aGVyZSBhcmUgYm90aCBub24tTlVMTCBzdHJpZGVzCithbmQgc3Vib2Zmc2V0czo6CisKKyAgIHZvaWQgKmdldF9pdGVtX3BvaW50ZXIoaW50IG5kaW0sIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCAqc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3Vib2Zmc2V0cywgUHlfc3NpemVfdCAqaW5kaWNlcykgeworICAgICAgIGNoYXIgKnBvaW50ZXIgPSAoY2hhciopYnVmOworICAgICAgIGludCBpOworICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGltOyBpKyspIHsKKyAgICAgICAgICAgcG9pbnRlciArPSBzdHJpZGVzW2ldICogaW5kaWNlc1tpXTsKKyAgICAgICAgICAgaWYgKHN1Ym9mZnNldHNbaV0gPj0wICkgeworICAgICAgICAgICAgICAgcG9pbnRlciA9ICooKGNoYXIqKilwb2ludGVyKSArIHN1Ym9mZnNldHNbaV07CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgcmV0dXJuICh2b2lkKilwb2ludGVyOworICAgfQorCiAKIEJ1ZmZlci1yZWxhdGVkIGZ1bmN0aW9ucwogPT09PT09PT09PT09PT09PT09PT09PT09CiAKLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9DaGVja0J1ZmZlcihQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gMSBpZiAqb2JqKiBzdXBwb3J0cyB0aGUgYnVmZmVyIGludGVyZmFjZSBvdGhlcndpc2UgMC4gIFdoZW4gMSBpcwpAQCAtMTc1LDE1MiArNDIxLDcxIEBACiAgICBzdWNjZWVkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPYmplY3RfR2V0QnVmZmVyKFB5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeU9iamVjdF9HZXRCdWZmZXIoUHlPYmplY3QgKmV4cG9ydGVyLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIAotICAgICAgRXhwb3J0IGEgdmlldyBvdmVyIHNvbWUgaW50ZXJuYWwgZGF0YSBmcm9tIHRoZSB0YXJnZXQgb2JqZWN0ICpvYmoqLgotICAgICAgKm9iaiogbXVzdCBub3QgYmUgTlVMTCwgYW5kICp2aWV3KiBtdXN0IHBvaW50IHRvIGFuIGV4aXN0aW5nCi0gICAgICA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBhbGxvY2F0ZWQgYnkgdGhlIGNhbGxlciAobW9zdCB1c2VzIG9mCi0gICAgICB0aGlzIGZ1bmN0aW9uIHdpbGwgc2ltcGx5IGRlY2xhcmUgYSBsb2NhbCB2YXJpYWJsZSBvZiB0eXBlCi0gICAgICA6Yzp0eXBlOmBQeV9idWZmZXJgKS4gIFRoZSAqZmxhZ3MqIGFyZ3VtZW50IGlzIGEgYml0IGZpZWxkIGluZGljYXRpbmcKLSAgICAgIHdoYXQga2luZCBvZiBidWZmZXIgaXMgcmVxdWVzdGVkLiAgVGhlIGJ1ZmZlciBpbnRlcmZhY2UgYWxsb3dzCi0gICAgICBmb3IgY29tcGxpY2F0ZWQgbWVtb3J5IGxheW91dCBwb3NzaWJpbGl0aWVzOyBob3dldmVyLCBzb21lIGNhbGxlcnMKLSAgICAgIHdvbid0IHdhbnQgdG8gaGFuZGxlIGFsbCB0aGUgY29tcGxleGl0eSBhbmQgaW5zdGVhZCByZXF1ZXN0IGEgc2ltcGxlCi0gICAgICB2aWV3IG9mIHRoZSB0YXJnZXQgb2JqZWN0ICh1c2luZyA6YzptYWNybzpgUHlCVUZfU0lNUExFYCBmb3IgYSByZWFkLW9ubHkKLSAgICAgIHZpZXcgYW5kIDpjOm1hY3JvOmBQeUJVRl9XUklUQUJMRWAgZm9yIGEgcmVhZC13cml0ZSB2aWV3KS4KKyAgIFNlbmQgYSByZXF1ZXN0IHRvICpleHBvcnRlciogdG8gZmlsbCBpbiAqdmlldyogYXMgc3BlY2lmaWVkIGJ5ICAqZmxhZ3MqLgorICAgSWYgdGhlIGV4cG9ydGVyIGNhbm5vdCBwcm92aWRlIGEgYnVmZmVyIG9mIHRoZSBleGFjdCB0eXBlLCBpdCBNVVNUIHJhaXNlCisgICA6YzpkYXRhOmBQeUV4Y19CdWZmZXJFcnJvcmAsIHNldCA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZAorICAgcmV0dXJuIC0xLgogCi0gICAgICBTb21lIGV4cG9ydGVycyBtYXkgbm90IGJlIGFibGUgdG8gc2hhcmUgbWVtb3J5IGluIGV2ZXJ5IHBvc3NpYmxlIHdheSBhbmQKLSAgICAgIG1heSBuZWVkIHRvIHJhaXNlIGVycm9ycyB0byBzaWduYWwgdG8gc29tZSBjb25zdW1lcnMgdGhhdCBzb21ldGhpbmcgaXMKLSAgICAgIGp1c3Qgbm90IHBvc3NpYmxlLiBUaGVzZSBlcnJvcnMgc2hvdWxkIGJlIGEgOmV4YzpgQnVmZmVyRXJyb3JgIHVubGVzcwotICAgICAgdGhlcmUgaXMgYW5vdGhlciBlcnJvciB0aGF0IGlzIGFjdHVhbGx5IGNhdXNpbmcgdGhlIHByb2JsZW0uIFRoZQotICAgICAgZXhwb3J0ZXIgY2FuIHVzZSBmbGFncyBpbmZvcm1hdGlvbiB0byBzaW1wbGlmeSBob3cgbXVjaCBvZiB0aGUKLSAgICAgIDpjOmRhdGE6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIGlzIGZpbGxlZCBpbiB3aXRoIG5vbi1kZWZhdWx0IHZhbHVlcyBhbmQvb3IKLSAgICAgIHJhaXNlIGFuIGVycm9yIGlmIHRoZSBvYmplY3QgY2FuJ3Qgc3VwcG9ydCBhIHNpbXBsZXIgdmlldyBvZiBpdHMgbWVtb3J5LgorICAgT24gc3VjY2VzcywgZmlsbCBpbiAqdmlldyosIHNldCA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gYSBuZXcgcmVmZXJlbmNlCisgICB0byAqZXhwb3J0ZXIqIGFuZCByZXR1cm4gMC4gSW4gdGhlIGNhc2Ugb2YgY2hhaW5lZCBidWZmZXIgcHJvdmlkZXJzCisgICB0aGF0IHJlZGlyZWN0IHJlcXVlc3RzIHRvIGEgc2luZ2xlIG9iamVjdCwgOmM6bWVtYmVyOmB2aWV3LT5vYmpgIE1BWQorICAgcmVmZXIgdG8gdGhpcyBvYmplY3QgaW5zdGVhZCBvZiAqZXhwb3J0ZXIqIChTZWUgOnJlZjpgQnVmZmVyIE9iamVjdCBTdHJ1Y3R1cmVzIDxidWZmZXItc3RydWN0cz5gKS4KIAotICAgICAgT24gc3VjY2VzcywgMCBpcyByZXR1cm5lZCBhbmQgdGhlICp2aWV3KiBzdHJ1Y3R1cmUgaXMgZmlsbGVkIHdpdGggdXNlZnVsCi0gICAgICB2YWx1ZXMuICBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgYW5kIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQ7IHRoZSAqdmlldyoKLSAgICAgIGlzIGxlZnQgaW4gYW4gdW5kZWZpbmVkIHN0YXRlLgotCi0gICAgICBUaGUgZm9sbG93aW5nIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIHRvIHRoZSAqZmxhZ3MqIGFyZ3VtZW50cy4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NJTVBMRQotCi0gICAgICAgICBUaGlzIGlzIHRoZSBkZWZhdWx0IGZsYWcuICBUaGUgcmV0dXJuZWQgYnVmZmVyIGV4cG9zZXMgYSByZWFkLW9ubHkKLSAgICAgICAgIG1lbW9yeSBhcmVhLiAgVGhlIGZvcm1hdCBvZiBkYXRhIGlzIGFzc3VtZWQgdG8gYmUgcmF3IHVuc2lnbmVkIGJ5dGVzLAotICAgICAgICAgd2l0aG91dCBhbnkgcGFydGljdWxhciBzdHJ1Y3R1cmUuICBUaGlzIGlzIGEgInN0YW5kLWFsb25lIiBmbGFnCi0gICAgICAgICBjb25zdGFudC4gIEl0IG5ldmVyIG5lZWRzIHRvIGJlICd8J2QgdG8gdGhlIG90aGVycy4gIFRoZSBleHBvcnRlciB3aWxsCi0gICAgICAgICByYWlzZSBhbiBlcnJvciBpZiBpdCBjYW5ub3QgcHJvdmlkZSBzdWNoIGEgY29udGlndW91cyBidWZmZXIgb2YgYnl0ZXMuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9XUklUQUJMRQotCi0gICAgICAgICBMaWtlIDpjOm1hY3JvOmBQeUJVRl9TSU1QTEVgLCBidXQgdGhlIHJldHVybmVkIGJ1ZmZlciBpcyB3cml0YWJsZS4gIElmCi0gICAgICAgICB0aGUgZXhwb3J0ZXIgZG9lc24ndCBzdXBwb3J0IHdyaXRhYmxlIGJ1ZmZlcnMsIGFuIGVycm9yIGlzIHJhaXNlZC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERVMKLQotICAgICAgICAgVGhpcyBpbXBsaWVzIDpjOm1hY3JvOmBQeUJVRl9ORGAuICBUaGUgcmV0dXJuZWQgYnVmZmVyIG11c3QgcHJvdmlkZQotICAgICAgICAgc3RyaWRlcyBpbmZvcm1hdGlvbiAoaS5lLiB0aGUgc3RyaWRlcyBjYW5ub3QgYmUgTlVMTCkuICBUaGlzIHdvdWxkIGJlCi0gICAgICAgICB1c2VkIHdoZW4gdGhlIGNvbnN1bWVyIGNhbiBoYW5kbGUgc3RyaWRlZCwgZGlzY29udGlndW91cyBhcnJheXMuCi0gICAgICAgICBIYW5kbGluZyBzdHJpZGVzIGF1dG9tYXRpY2FsbHkgYXNzdW1lcyB5b3UgY2FuIGhhbmRsZSBzaGFwZS4gIFRoZQotICAgICAgICAgZXhwb3J0ZXIgY2FuIHJhaXNlIGFuIGVycm9yIGlmIGEgc3RyaWRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGF0YSBpcwotICAgICAgICAgbm90IHBvc3NpYmxlIChpLmUuIHdpdGhvdXQgdGhlIHN1Ym9mZnNldHMpLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfTkQKLQotICAgICAgICAgVGhlIHJldHVybmVkIGJ1ZmZlciBtdXN0IHByb3ZpZGUgc2hhcGUgaW5mb3JtYXRpb24uICBUaGUgbWVtb3J5IHdpbGwgYmUKLSAgICAgICAgIGFzc3VtZWQgQy1zdHlsZSBjb250aWd1b3VzIChsYXN0IGRpbWVuc2lvbiB2YXJpZXMgdGhlIGZhc3Rlc3QpLiAgVGhlCi0gICAgICAgICBleHBvcnRlciBtYXkgcmFpc2UgYW4gZXJyb3IgaWYgaXQgY2Fubm90IHByb3ZpZGUgdGhpcyBraW5kIG9mCi0gICAgICAgICBjb250aWd1b3VzIGJ1ZmZlci4gIElmIHRoaXMgaXMgbm90IGdpdmVuIHRoZW4gc2hhcGUgd2lsbCBiZSAqTlVMTCouCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9DX0NPTlRJR1VPVVMKLSAgICAgICAgICAgICAgICAgIFB5QlVGX0ZfQ09OVElHVU9VUwotICAgICAgICAgICAgICAgICAgUHlCVUZfQU5ZX0NPTlRJR1VPVVMKLQotICAgICAgICAgVGhlc2UgZmxhZ3MgaW5kaWNhdGUgdGhhdCB0aGUgY29udGlndWl0eSByZXR1cm5lZCBidWZmZXIgbXVzdCBiZQotICAgICAgICAgcmVzcGVjdGl2ZWx5LCBDLWNvbnRpZ3VvdXMgKGxhc3QgZGltZW5zaW9uIHZhcmllcyB0aGUgZmFzdGVzdCksIEZvcnRyYW4KLSAgICAgICAgIGNvbnRpZ3VvdXMgKGZpcnN0IGRpbWVuc2lvbiB2YXJpZXMgdGhlIGZhc3Rlc3QpIG9yIGVpdGhlciBvbmUuICBBbGwgb2YKLSAgICAgICAgIHRoZXNlIGZsYWdzIGltcGx5IDpjOm1hY3JvOmBQeUJVRl9TVFJJREVTYCBhbmQgZ3VhcmFudGVlIHRoYXQgdGhlCi0gICAgICAgICBzdHJpZGVzIGJ1ZmZlciBpbmZvIHN0cnVjdHVyZSB3aWxsIGJlIGZpbGxlZCBpbiBjb3JyZWN0bHkuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9JTkRJUkVDVAotCi0gICAgICAgICBUaGlzIGZsYWcgaW5kaWNhdGVzIHRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBoYXZlIHN1Ym9mZnNldHMKLSAgICAgICAgIGluZm9ybWF0aW9uICh3aGljaCBjYW4gYmUgTlVMTCBpZiBubyBzdWJvZmZzZXRzIGFyZSBuZWVkZWQpLiAgVGhpcyBjYW4KLSAgICAgICAgIGJlIHVzZWQgd2hlbiB0aGUgY29uc3VtZXIgY2FuIGhhbmRsZSBpbmRpcmVjdCBhcnJheSByZWZlcmVuY2luZyBpbXBsaWVkCi0gICAgICAgICBieSB0aGVzZSBzdWJvZmZzZXRzLiBUaGlzIGltcGxpZXMgOmM6bWFjcm86YFB5QlVGX1NUUklERVNgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfRk9STUFUCi0KLSAgICAgICAgIFRoZSByZXR1cm5lZCBidWZmZXIgbXVzdCBoYXZlIHRydWUgZm9ybWF0IGluZm9ybWF0aW9uIGlmIHRoaXMgZmxhZyBpcwotICAgICAgICAgcHJvdmlkZWQuICBUaGlzIHdvdWxkIGJlIHVzZWQgd2hlbiB0aGUgY29uc3VtZXIgaXMgZ29pbmcgdG8gYmUgY2hlY2tpbmcKLSAgICAgICAgIGZvciB3aGF0ICdraW5kJyBvZiBkYXRhIGlzIGFjdHVhbGx5IHN0b3JlZC4gIEFuIGV4cG9ydGVyIHNob3VsZCBhbHdheXMKLSAgICAgICAgIGJlIGFibGUgdG8gcHJvdmlkZSB0aGlzIGluZm9ybWF0aW9uIGlmIHJlcXVlc3RlZC4gIElmIGZvcm1hdCBpcyBub3QKLSAgICAgICAgIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHRoZW4gdGhlIGZvcm1hdCBtdXN0IGJlIHJldHVybmVkIGFzICpOVUxMKiAod2hpY2gKLSAgICAgICAgIG1lYW5zIGBgJ0InYGAsIG9yIHVuc2lnbmVkIGJ5dGVzKS4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERUQKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMgfCBQeUJVRl9XUklUQUJMRSlgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX1NUUklERURfUk8KLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX1NUUklERVMpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9SRUNPUkRTCi0KLSAgICAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYChQeUJVRl9TVFJJREVTIHwgUHlCVUZfRk9STUFUIHwKLSAgICAgICAgIFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfUkVDT1JEU19STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfU1RSSURFUyB8IFB5QlVGX0ZPUk1BVClgYC4KLQotICAgICAgLi4gYzptYWNybzo6IFB5QlVGX0ZVTEwKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX0lORElSRUNUIHwgUHlCVUZfRk9STUFUIHwKLSAgICAgICAgIFB5QlVGX1dSSVRBQkxFKWBgLgotCi0gICAgICAuLiBjOm1hY3JvOjogUHlCVUZfRlVMTF9STwotCi0gICAgICAgICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGAoUHlCVUZfSU5ESVJFQ1QgfCBQeUJVRl9GT1JNQVQpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUcKLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX05EIHwgUHlCVUZfV1JJVEFCTEUpYGAuCi0KLSAgICAgIC4uIGM6bWFjcm86OiBQeUJVRl9DT05USUdfUk8KLQotICAgICAgICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgKFB5QlVGX05EKWBgLgorICAgU3VjY2Vzc2Z1bCBjYWxscyB0byA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIG11c3QgYmUgcGFpcmVkIHdpdGggY2FsbHMKKyAgIHRvIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgLCBzaW1pbGFyIHRvIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgLgorICAgVGh1cywgYWZ0ZXIgdGhlIGNvbnN1bWVyIGlzIGRvbmUgd2l0aCB0aGUgYnVmZmVyLCA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYAorICAgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX1JlbGVhc2UoUHlfYnVmZmVyICp2aWV3KQogCi0gICBSZWxlYXNlIHRoZSBidWZmZXIgKnZpZXcqLiAgVGhpcyBzaG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1ZmZlciBpcyBubwotICAgbG9uZ2VyIGJlaW5nIHVzZWQgYXMgaXQgbWF5IGZyZWUgbWVtb3J5IGZyb20gaXQuCisgICBSZWxlYXNlIHRoZSBidWZmZXIgKnZpZXcqIGFuZCBkZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IKKyAgIDpjOm1lbWJlcjpgdmlldy0+b2JqYC4gVGhpcyBmdW5jdGlvbiBNVVNUIGJlIGNhbGxlZCB3aGVuIHRoZSBidWZmZXIKKyAgIGlzIG5vIGxvbmdlciBiZWluZyB1c2VkLCBvdGhlcndpc2UgcmVmZXJlbmNlIGxlYWtzIG1heSBvY2N1ci4KKworICAgSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIGEgYnVmZmVyIHRoYXQgd2FzIG5vdCBvYnRhaW5lZCB2aWEKKyAgIDpjOmZ1bmM6YFB5T2JqZWN0X0dldEJ1ZmZlcmAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlCdWZmZXJfU2l6ZUZyb21Gb3JtYXQoY29uc3QgY2hhciAqKQogCi0gICBSZXR1cm4gdGhlIGltcGxpZWQgOmM6ZGF0YTpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgZnJvbSB0aGUgc3RydWN0LXN0eXBlCi0gICA6YzpkYXRhOmB+UHlfYnVmZmVyLmZvcm1hdGAuCisgICBSZXR1cm4gdGhlIGltcGxpZWQgOmM6ZGF0YTpgflB5X2J1ZmZlci5pdGVtc2l6ZWAgZnJvbSA6YzpkYXRhOmB+UHlfYnVmZmVyLmZvcm1hdGAuCisgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnRyYW4pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5QnVmZmVyX0lzQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIGNoYXIgb3JkZXIpCiAKLSAgIFJldHVybiAxIGlmIHRoZSBtZW1vcnkgZGVmaW5lZCBieSB0aGUgKnZpZXcqIGlzIEMtc3R5bGUgKCpmb3J0cmFuKiBpcwotICAgYGAnQydgYCkgb3IgRm9ydHJhbi1zdHlsZSAoKmZvcnRyYW4qIGlzIGBgJ0YnYGApIGNvbnRpZ3VvdXMgb3IgZWl0aGVyIG9uZQotICAgKCpmb3J0cmFuKiBpcyBgYCdBJ2BgKS4gIFJldHVybiAwIG90aGVyd2lzZS4KKyAgIFJldHVybiAxIGlmIHRoZSBtZW1vcnkgZGVmaW5lZCBieSB0aGUgKnZpZXcqIGlzIEMtc3R5bGUgKCpvcmRlciogaXMKKyAgIGBgJ0MnYGApIG9yIEZvcnRyYW4tc3R5bGUgKCpvcmRlciogaXMgYGAnRidgYCkgY29udGlndW91cyBvciBlaXRoZXIgb25lCisgICAoKm9yZGVyKiBpcyBgYCdBJ2BgKS4gIFJldHVybiAwIG90aGVyd2lzZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW0sIFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBjaGFyIGZvcnRyYW4pCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUJ1ZmZlcl9GaWxsQ29udGlndW91c1N0cmlkZXMoaW50IG5kaW0sIFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBjaGFyIG9yZGVyKQogCiAgICBGaWxsIHRoZSAqc3RyaWRlcyogYXJyYXkgd2l0aCBieXRlLXN0cmlkZXMgb2YgYSBjb250aWd1b3VzIChDLXN0eWxlIGlmCi0gICAqZm9ydHJhbiogaXMgYGAnQydgYCBvciBGb3J0cmFuLXN0eWxlIGlmICpmb3J0cmFuKiBpcyBgYCdGJ2BgKSBhcnJheSBvZiB0aGUKKyAgICpvcmRlciogaXMgYGAnQydgYCBvciBGb3J0cmFuLXN0eWxlIGlmICpvcmRlciogaXMgYGAnRidgYCkgYXJyYXkgb2YgdGhlCiAgICBnaXZlbiBzaGFwZSB3aXRoIHRoZSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMgcGVyIGVsZW1lbnQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGludCByZWFkb25seSwgaW50IGluZm9mbGFncykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlCdWZmZXJfRmlsbEluZm8oUHlfYnVmZmVyICp2aWV3LCBQeU9iamVjdCAqZXhwb3J0ZXIsIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sIGludCByZWFkb25seSwgaW50IGZsYWdzKQogCi0gICBGaWxsIGluIGEgYnVmZmVyLWluZm8gc3RydWN0dXJlLCAqdmlldyosIGNvcnJlY3RseSBmb3IgYW4gZXhwb3J0ZXIgdGhhdCBjYW4KLSAgIG9ubHkgc2hhcmUgYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSBvZiAidW5zaWduZWQgYnl0ZXMiIG9mIHRoZSBnaXZlbgotICAgbGVuZ3RoLiAgUmV0dXJuIDAgb24gc3VjY2VzcyBhbmQgLTEgKHdpdGggcmFpc2luZyBhbiBlcnJvcikgb24gZXJyb3IuCisgICBIYW5kbGUgYnVmZmVyIHJlcXVlc3RzIGZvciBhbiBleHBvcnRlciB0aGF0IHdhbnRzIHRvIGV4cG9zZSAqYnVmKiBvZiBzaXplICpsZW4qCisgICB3aXRoIHdyaXRhYmlsaXR5IHNldCBhY2NvcmRpbmcgdG8gKnJlYWRvbmx5Ki4gKmJ1ZiogaXMgaW50ZXJwcmV0ZWQgYXMgYSBzZXF1ZW5jZQorICAgb2YgdW5zaWduZWQgYnl0ZXMuCisKKyAgIFRoZSAqZmxhZ3MqIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgcmVxdWVzdCB0eXBlLiBUaGlzIGZ1bmN0aW9uIGFsd2F5cyBmaWxscyBpbgorICAgKnZpZXcqIGFzIHNwZWNpZmllZCBieSBmbGFncywgdW5sZXNzICpidWYqIGhhcyBiZWVuIGRlc2lnbmF0ZWQgYXMgcmVhZC1vbmx5CisgICBhbmQgOmM6bWFjcm86YFB5QlVGX1dSSVRBQkxFYCBpcyBzZXQgaW4gKmZsYWdzKi4KKworICAgT24gc3VjY2Vzcywgc2V0IDpjOm1lbWJlcjpgdmlldy0+b2JqYCB0byBhIG5ldyByZWZlcmVuY2UgdG8gKmV4cG9ydGVyKiBhbmQKKyAgIHJldHVybiAwLiBPdGhlcndpc2UsIHJhaXNlIDpjOmRhdGE6YFB5RXhjX0J1ZmZlckVycm9yYCwgc2V0CisgICA6YzptZW1iZXI6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZCByZXR1cm4gLTE7CisKKyAgIElmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhcyBwYXJ0IG9mIGEgOnJlZjpgZ2V0YnVmZmVycHJvYyA8YnVmZmVyLXN0cnVjdHM+YCwKKyAgICpleHBvcnRlciogTVVTVCBiZSBzZXQgdG8gdGhlIGV4cG9ydGluZyBvYmplY3QuIE90aGVyd2lzZSwgKmV4cG9ydGVyKiBNVVNUCisgICBiZSBOVUxMLgorCisKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvZGUucnN0IGIvRG9jL2MtYXBpL2NvZGUucnN0CmluZGV4IDY5MzJiYjEuLjU3ZTgwNzIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9jb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvY29kZS5yc3QKQEAgLTMxLDExICszMSwxMSBAQAogCiAgICBSZXR1cm4gdHJ1ZSBpZiAqY28qIGlzIGEgOmNsYXNzOmBjb2RlYCBvYmplY3QKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeUNvZGVfR2V0TnVtRnJlZShQeU9iamVjdCAqY28pCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5Q29kZV9HZXROdW1GcmVlKFB5Q29kZU9iamVjdCAqY28pCiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGZyZWUgdmFyaWFibGVzIGluICpjbyouCiAKLS4uIGM6ZnVuY3Rpb246OiBQeUNvZGVPYmplY3QgKlB5Q29kZV9OZXcoaW50IGFyZ2NvdW50LCBpbnQga3dvbmx5YXJnY291bnQsIGludCBubG9jYWxzLCBpbnQgc3RhY2tzaXplLCBpbnQgZmxhZ3MsIFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICp2YXJuYW1lcywgUHlPYmplY3QgKmZyZWV2YXJzLCBQeU9iamVjdCAqY2VsbHZhcnMsIFB5T2JqZWN0ICpmaWxlbmFtZSwgUHlPYmplY3QgKm5hbWUsIGludCBmaXJzdGxpbmVubywgUHlPYmplY3QgKmxub3RhYikKKy4uIGM6ZnVuY3Rpb246OiBQeUNvZGVPYmplY3QqIFB5Q29kZV9OZXcoaW50IGFyZ2NvdW50LCBpbnQga3dvbmx5YXJnY291bnQsIGludCBubG9jYWxzLCBpbnQgc3RhY2tzaXplLCBpbnQgZmxhZ3MsIFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqbmFtZXMsIFB5T2JqZWN0ICp2YXJuYW1lcywgUHlPYmplY3QgKmZyZWV2YXJzLCBQeU9iamVjdCAqY2VsbHZhcnMsIFB5T2JqZWN0ICpmaWxlbmFtZSwgUHlPYmplY3QgKm5hbWUsIGludCBmaXJzdGxpbmVubywgUHlPYmplY3QgKmxub3RhYikKIAogICAgUmV0dXJuIGEgbmV3IGNvZGUgb2JqZWN0LiAgSWYgeW91IG5lZWQgYSBkdW1teSBjb2RlIG9iamVjdCB0bwogICAgY3JlYXRlIGEgZnJhbWUsIHVzZSA6YzpmdW5jOmBQeUNvZGVfTmV3RW1wdHlgIGluc3RlYWQuICBDYWxsaW5nCkBAIC00Myw3ICs0Myw3IEBACiAgICB2ZXJzaW9uIHNpbmNlIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBieXRlY29kZSBjaGFuZ2VzIG9mdGVuLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDb2RlX05ld0VtcHR5KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgaW50IGZpcnN0bGluZW5vKQorLi4gYzpmdW5jdGlvbjo6IFB5Q29kZU9iamVjdCogUHlDb2RlX05ld0VtcHR5KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSwgaW50IGZpcnN0bGluZW5vKQogCiAgICBSZXR1cm4gYSBuZXcgZW1wdHkgY29kZSBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLAogICAgZnVuY3Rpb24gbmFtZSwgYW5kIGZpcnN0IGxpbmUgbnVtYmVyLiAgSXQgaXMgaWxsZWdhbCB0bwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0IGIvRG9jL2MtYXBpL2NvbnZlcnNpb24ucnN0CmluZGV4IGRmYzBhM2EuLjk1NzhmOTggMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9jb252ZXJzaW9uLnJzdAorKysgYi9Eb2MvYy1hcGkvY29udmVyc2lvbi5yc3QKQEAgLTExOSwxMyArMTE5LDEzIEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlPU19zdHJpY21wKGNoYXIgKnMxLCBjaGFyICpzMikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlPU19zdHJpY21wKGNoYXIgKnMxLCBjaGFyICpzMikKIAogICAgQ2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIG9mIHN0cmluZ3MuIFRoZSBmdW5jdGlvbiB3b3JrcyBhbG1vc3QKICAgIGlkZW50aWNhbGx5IHRvIDpjOmZ1bmM6YHN0cmNtcGAgZXhjZXB0IHRoYXQgaXQgaWdub3JlcyB0aGUgY2FzZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlPU19zdHJuaWNtcChjaGFyICpzMSwgY2hhciAqczIsIFB5X3NzaXplX3QgIHNpemUpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5T1Nfc3RybmljbXAoY2hhciAqczEsIGNoYXIgKnMyLCBQeV9zc2l6ZV90ICBzaXplKQogCiAgICBDYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2Ygc3RyaW5ncy4gVGhlIGZ1bmN0aW9uIHdvcmtzIGFsbW9zdAogICAgaWRlbnRpY2FsbHkgdG8gOmM6ZnVuYzpgc3RybmNtcGAgZXhjZXB0IHRoYXQgaXQgaWdub3JlcyB0aGUgY2FzZS4KZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9kYXRldGltZS5yc3QgYi9Eb2MvYy1hcGkvZGF0ZXRpbWUucnN0CmluZGV4IGZjZDEzOTUuLjM5NTQyYmQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2MtYXBpL2RhdGV0aW1lLnJzdApAQCAtMTcwLDYgKzE3MCwzMSBAQAogICAgUmV0dXJuIHRoZSBtaWNyb3NlY29uZCwgYXMgYW4gaW50IGZyb20gMCB0aHJvdWdoIDk5OTk5OS4KIAogCitNYWNyb3MgdG8gZXh0cmFjdCBmaWVsZHMgZnJvbSB0aW1lIGRlbHRhIG9iamVjdHMuICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhbgoraW5zdGFuY2Ugb2YgOmM6ZGF0YTpgUHlEYXRlVGltZV9EZWx0YWAsIGluY2x1ZGluZyBzdWJjbGFzc2VzLiBUaGUgYXJndW1lbnQgbXVzdAorbm90IGJlICpOVUxMKiwgYW5kIHRoZSB0eXBlIGlzIG5vdCBjaGVja2VkOgorCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RGF0ZVRpbWVfREVMVEFfR0VUX0RBWVMoUHlEYXRlVGltZV9EZWx0YSAqbykKKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cywgYXMgYW4gaW50IGZyb20gLTk5OTk5OTk5OSB0byA5OTk5OTk5OTkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEYXRlVGltZV9ERUxUQV9HRVRfU0VDT05EUyhQeURhdGVUaW1lX0RlbHRhICpvKQorCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBzZWNvbmRzLCBhcyBhbiBpbnQgZnJvbSAwIHRocm91Z2ggODYzOTkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlEYXRlVGltZV9ERUxUQV9HRVRfTUlDUk9TRUNPTkQoUHlEYXRlVGltZV9EZWx0YSAqbykKKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzLCBhcyBhbiBpbnQgZnJvbSAwIHRocm91Z2ggOTk5OTk5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiBNYWNyb3MgZm9yIHRoZSBjb252ZW5pZW5jZSBvZiBtb2R1bGVzIGltcGxlbWVudGluZyB0aGUgREIgQVBJOgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RGF0ZVRpbWVfRnJvbVRpbWVzdGFtcChQeU9iamVjdCAqYXJncykKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9kaWN0LnJzdCBiL0RvYy9jLWFwaS9kaWN0LnJzdAppbmRleCA2ZGY4NGUwLi42YmFjYzMyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZGljdC5yc3QKKysrIGIvRG9jL2MtYXBpL2RpY3QucnN0CkBAIC0zNiwxMSArMzYsMTEgQEAKICAgIFJldHVybiBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LCBvciAqTlVMTCogb24gZmFpbHVyZS4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RGljdFByb3h5X05ldyhQeU9iamVjdCAqZGljdCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlEaWN0UHJveHlfTmV3KFB5T2JqZWN0ICptYXBwaW5nKQogCi0gICBSZXR1cm4gYSBwcm94eSBvYmplY3QgZm9yIGEgbWFwcGluZyB3aGljaCBlbmZvcmNlcyByZWFkLW9ubHkgYmVoYXZpb3IuCi0gICBUaGlzIGlzIG5vcm1hbGx5IHVzZWQgdG8gY3JlYXRlIGEgcHJveHkgdG8gcHJldmVudCBtb2RpZmljYXRpb24gb2YgdGhlCi0gICBkaWN0aW9uYXJ5IGZvciBub24tZHluYW1pYyBjbGFzcyB0eXBlcy4KKyAgIFJldHVybiBhIDpjbGFzczpgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWAgb2JqZWN0IGZvciBhIG1hcHBpbmcgd2hpY2gKKyAgIGVuZm9yY2VzIHJlYWQtb25seSBiZWhhdmlvci4gIFRoaXMgaXMgbm9ybWFsbHkgdXNlZCB0byBjcmVhdGUgYSB2aWV3IHRvCisgICBwcmV2ZW50IG1vZGlmaWNhdGlvbiBvZiB0aGUgZGljdGlvbmFyeSBmb3Igbm9uLWR5bmFtaWMgY2xhc3MgdHlwZXMuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICpwKQpAQCAtMjA5LDMgKzIwOSwxMCBAQAogICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlcTI6CiAgICAgICAgICAgICAgIGlmIG92ZXJyaWRlIG9yIGtleSBub3QgaW4gYToKICAgICAgICAgICAgICAgICAgIGFba2V5XSA9IHZhbHVlCisKKworLi4gYzpmdW5jdGlvbjo6IGludCBQeURpY3RfQ2xlYXJGcmVlTGlzdCgpCisKKyAgIENsZWFyIHRoZSBmcmVlIGxpc3QuIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGZyZWVkIGl0ZW1zLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdCBiL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAppbmRleCA2ZjEzYzgwLi45YTY2YjdmIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CkBAIC0xMjksNiArMTI5LDQxIEBACiAgICAgICBleGNlcHRpb24gc3RhdGUuCiAKIAorLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKnB0eXBlLCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlPYmplY3QgKipwdHJhY2ViYWNrKQorCisgICBSZXRyaWV2ZSB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGNhdWdodCwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBSZXR1cm5zIG5ldyByZWZlcmVuY2VzIGZvciB0aGUgdGhyZWUgb2JqZWN0cywgYW55IG9mIHdoaWNoCisgICBtYXkgYmUgKk5VTEwqLiAgRG9lcyBub3QgbW9kaWZ5IHRoZSBleGNlcHRpb24gaW5mbyBzdGF0ZS4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm90IG5vcm1hbGx5IHVzZWQgYnkgY29kZSB0aGF0IHdhbnRzIHRvIGhhbmRsZSBleGNlcHRpb25zLgorICAgICAgUmF0aGVyLCBpdCBjYW4gYmUgdXNlZCB3aGVuIGNvZGUgbmVlZHMgdG8gc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZSB0ZW1wb3JhcmlseS4gIFVzZSA6YzpmdW5jOmBQeUVycl9TZXRFeGNJbmZvYCB0byByZXN0b3JlIG9yIGNsZWFyIHRoZQorICAgICAgZXhjZXB0aW9uIHN0YXRlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIFB5T2JqZWN0ICp0cmFjZWJhY2spCisKKyAgIFNldCB0aGUgZXhjZXB0aW9uIGluZm8sIGFzIGtub3duIGZyb20gYGBzeXMuZXhjX2luZm8oKWBgLiAgVGhpcyByZWZlcnMKKyAgIHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcyBhbHJlYWR5IGNhdWdodCwgbm90IHRvIGFuIGV4Y2VwdGlvbiB0aGF0IHdhcworICAgZnJlc2hseSByYWlzZWQuICBUaGlzIGZ1bmN0aW9uIHN0ZWFscyB0aGUgcmVmZXJlbmNlcyBvZiB0aGUgYXJndW1lbnRzLgorICAgVG8gY2xlYXIgdGhlIGV4Y2VwdGlvbiBzdGF0ZSwgcGFzcyAqTlVMTCogZm9yIGFsbCB0aHJlZSBhcmd1bWVudHMuCisgICBGb3IgZ2VuZXJhbCBydWxlcyBhYm91dCB0aGUgdGhyZWUgYXJndW1lbnRzLCBzZWUgOmM6ZnVuYzpgUHlFcnJfUmVzdG9yZWAuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBub3JtYWxseSB1c2VkIGJ5IGNvZGUgdGhhdCB3YW50cyB0byBoYW5kbGUgZXhjZXB0aW9ucy4KKyAgICAgIFJhdGhlciwgaXQgY2FuIGJlIHVzZWQgd2hlbiBjb2RlIG5lZWRzIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGV4Y2VwdGlvbgorICAgICAgc3RhdGUgdGVtcG9yYXJpbHkuICBVc2UgOmM6ZnVuYzpgUHlFcnJfR2V0RXhjSW5mb2AgdG8gcmVhZCB0aGUgZXhjZXB0aW9uCisgICAgICBzdGF0ZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFcnJfU2V0U3RyaW5nKFB5T2JqZWN0ICp0eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKQogCiAgICBUaGlzIGlzIHRoZSBtb3N0IGNvbW1vbiB3YXkgdG8gc2V0IHRoZSBlcnJvciBpbmRpY2F0b3IuICBUaGUgZmlyc3QgYXJndW1lbnQKQEAgLTIzMCw2ICsyNjUsMTYgQEAKICAgIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBleGNlcHRpb24gdHlwZSB0byBiZSByYWlzZWQuIEF2YWlsYWJpbGl0eTogV2luZG93cy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKKworICAgVGhpcyBpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJhaXNlIDpleGM6YEltcG9ydEVycm9yYC4gKm1zZyogd2lsbCBiZQorICAgc2V0IGFzIHRoZSBleGNlcHRpb24ncyBtZXNzYWdlIHN0cmluZy4gKm5hbWUqIGFuZCAqcGF0aCosIGJvdGggb2Ygd2hpY2ggY2FuCisgICBiZSBgYE5VTExgYCwgd2lsbCBiZSBzZXQgYXMgdGhlIDpleGM6YEltcG9ydEVycm9yYCdzIHJlc3BlY3RpdmUgYGBuYW1lYGAKKyAgIGFuZCBgYHBhdGhgYCBhdHRyaWJ1dGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUVycl9TeW50YXhMb2NhdGlvbkV4KGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAogICAgU2V0IGZpbGUsIGxpbmUsIGFuZCBvZmZzZXQgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IGV4Y2VwdGlvbi4gIElmIHRoZQpAQCAtMjM4LDcgKzI4Myw3IEBACiAgICBpcyBhIDpleGM6YFN5bnRheEVycm9yYC4gKmZpbGVuYW1lKiBpcyBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcKICAgICg6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZ2ApLgogCi0uLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5RXJyX1N5bnRheExvY2F0aW9uKGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQpAQCAtMzExLDYgKzM1Niw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfQ2hlY2tTaWduYWxzKCkKIAogICAgLi4gaW5kZXg6OgpAQCAtNDIxLDE3ICs0NjcsMTggQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUV4Y2VwdGlvbl9HZXRDYXVzZShQeU9iamVjdCAqZXgpCiAKLSAgIFJldHVybiB0aGUgY2F1c2UgKGFub3RoZXIgZXhjZXB0aW9uIGluc3RhbmNlIHNldCBieSBgYHJhaXNlIC4uLiBmcm9tIC4uLmBgKQotICAgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGNlcHRpb24gYXMgYSBuZXcgcmVmZXJlbmNlLCBhcyBhY2Nlc3NpYmxlIGZyb20gUHl0aG9uCi0gICB0aHJvdWdoIDphdHRyOmBfX2NhdXNlX19gLiAgSWYgdGhlcmUgaXMgbm8gY2F1c2UgYXNzb2NpYXRlZCwgdGhpcyByZXR1cm5zCi0gICAqTlVMTCouCisgICBSZXR1cm4gdGhlIGNhdXNlIChlaXRoZXIgYW4gZXhjZXB0aW9uIGluc3RhbmNlLCBvciA6Y29uc3Q6YE5vbmVgLAorICAgc2V0IGJ5IGBgcmFpc2UgLi4uIGZyb20gLi4uYGApIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhjZXB0aW9uIGFzIGEgbmV3CisgICByZWZlcmVuY2UsIGFzIGFjY2Vzc2libGUgZnJvbSBQeXRob24gdGhyb3VnaCA6YXR0cjpgX19jYXVzZV9fYC4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqZXgsIFB5T2JqZWN0ICpjdHgpCiAKICAgIFNldCB0aGUgY2F1c2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGNlcHRpb24gdG8gKmN0eCouICBVc2UgKk5VTEwqIHRvIGNsZWFyCi0gICBpdC4gIFRoZXJlIGlzIG5vIHR5cGUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgKmN0eCogaXMgYW4gZXhjZXB0aW9uIGluc3RhbmNlLgotICAgVGhpcyBzdGVhbHMgYSByZWZlcmVuY2UgdG8gKmN0eCouCisgICBpdC4gIFRoZXJlIGlzIG5vIHR5cGUgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgKmN0eCogaXMgZWl0aGVyIGFuIGV4Y2VwdGlvbgorICAgaW5zdGFuY2Ugb3IgOmNvbnN0OmBOb25lYC4gIFRoaXMgc3RlYWxzIGEgcmVmZXJlbmNlIHRvICpjdHgqLgorCisgICA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGlzIGltcGxpY2l0bHkgc2V0IHRvIGBgVHJ1ZWBgIGJ5IHRoaXMgZnVuY3Rpb24uCiAKIAogLi4gX3VuaWNvZGVleGNlcHRpb25zOgpAQCAtNTI1LDcgKzU3Miw3IEBACiAKICAgIE1hcmtzIGEgcG9pbnQgd2hlcmUgYSByZWN1cnNpdmUgQy1sZXZlbCBjYWxsIGlzIGFib3V0IHRvIGJlIHBlcmZvcm1lZC4KIAotICAgSWYgOmNvbnN0OmBVU0VfU1RBQ0tDSEVDS2AgaXMgZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIHRoZSBPUworICAgSWYgOmNvbnN0OmBVU0VfU1RBQ0tDSEVDS2AgaXMgZGVmaW5lZCwgdGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgdGhlIE9TCiAgICBzdGFjayBvdmVyZmxvd2VkIHVzaW5nIDpjOmZ1bmM6YFB5T1NfQ2hlY2tTdGFja2AuICBJbiB0aGlzIGlzIHRoZSBjYXNlLCBpdAogICAgc2V0cyBhIDpleGM6YE1lbW9yeUVycm9yYCBhbmQgcmV0dXJucyBhIG5vbnplcm8gdmFsdWUuCiAKQEAgLTU4Miw2NSArNjI5LDExNiBAQAogOmM6dHlwZTpgUHlPYmplY3RcKmA7IHRoZXkgYXJlIGFsbCBjbGFzcyBvYmplY3RzLiAgRm9yIGNvbXBsZXRlbmVzcywgaGVyZSBhcmUgYWxsCiB0aGUgdmFyaWFibGVzOgogCi0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUHl0aG9uIE5hbWUgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCi18IDpjOmRhdGE6YFB5RXhjX0Jhc2VFeGNlcHRpb25gICAgICAgIHwgOmV4YzpgQmFzZUV4Y2VwdGlvbmAgICAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0V4Y2VwdGlvbmAgICAgICAgICAgIHwgOmV4YzpgRXhjZXB0aW9uYCAgICAgICAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0FyaXRobWV0aWNFcnJvcmAgICAgIHwgOmV4YzpgQXJpdGhtZXRpY0Vycm9yYCAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0xvb2t1cEVycm9yYCAgICAgICAgIHwgOmV4YzpgTG9va3VwRXJyb3JgICAgICAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0Fzc2VydGlvbkVycm9yYCAgICAgIHwgOmV4YzpgQXNzZXJ0aW9uRXJyb3JgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0F0dHJpYnV0ZUVycm9yYCAgICAgIHwgOmV4YzpgQXR0cmlidXRlRXJyb3JgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0VPRkVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgRU9GRXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0Vudmlyb25tZW50RXJyb3JgICAgIHwgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAgICAgfCBcKDEpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcmAgIHwgOmV4YzpgRmxvYXRpbmdQb2ludEVycm9yYCAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0lPRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSU9FcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0ltcG9ydEVycm9yYCAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0luZGV4RXJyb3JgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0tleUVycm9yYCAgICAgICAgICAgIHwgOmV4YzpgS2V5RXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX0tleWJvYXJkSW50ZXJydXB0YCAgIHwgOmV4YzpgS2V5Ym9hcmRJbnRlcnJ1cHRgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX01lbW9yeUVycm9yYCAgICAgICAgIHwgOmV4YzpgTWVtb3J5RXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX05hbWVFcnJvcmAgICAgICAgICAgIHwgOmV4YzpgTmFtZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3JgIHwgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgT1NFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX092ZXJmbG93RXJyb3JgICAgICAgIHwgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgIHwgOmV4YzpgUmVmZXJlbmNlRXJyb3JgICAgICAgfCBcKDIpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgIHwgOmV4YzpgUnVudGltZUVycm9yYCAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1N5bnRheEVycm9yYCAgICAgICAgIHwgOmV4YzpgU3ludGF4RXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUVycm9yYCAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXJyb3JgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUV4aXRgICAgICAgICAgIHwgOmV4YzpgU3lzdGVtRXhpdGAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1R5cGVFcnJvcmAgICAgICAgICAgIHwgOmV4YzpgVHlwZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1ZhbHVlRXJyb3JgICAgICAgICAgIHwgOmV4YzpgVmFsdWVFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1dpbmRvd3NFcnJvcmAgICAgICAgIHwgOmV4YzpgV2luZG93c0Vycm9yYCAgICAgICAgfCBcKDMpICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCi18IDpjOmRhdGE6YFB5RXhjX1plcm9EaXZpc2lvbkVycm9yYCAgIHwgOmV4YzpgWmVyb0RpdmlzaW9uRXJyb3JgICAgfCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBOYW1lICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCit8IDpjOmRhdGE6YFB5RXhjX0Jhc2VFeGNlcHRpb25gICAgICAgICAgICB8IDpleGM6YEJhc2VFeGNlcHRpb25gICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0V4Y2VwdGlvbmAgICAgICAgICAgICAgICB8IDpleGM6YEV4Y2VwdGlvbmAgICAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0FyaXRobWV0aWNFcnJvcmAgICAgICAgICB8IDpleGM6YEFyaXRobWV0aWNFcnJvcmAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0xvb2t1cEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YExvb2t1cEVycm9yYCAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Fzc2VydGlvbkVycm9yYCAgICAgICAgICB8IDpleGM6YEFzc2VydGlvbkVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0F0dHJpYnV0ZUVycm9yYCAgICAgICAgICB8IDpleGM6YEF0dHJpYnV0ZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Jsb2NraW5nSU9FcnJvcmAgICAgICAgICB8IDpleGM6YEJsb2NraW5nSU9FcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Jyb2tlblBpcGVFcnJvcmAgICAgICAgICB8IDpleGM6YEJyb2tlblBpcGVFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0NoaWxkUHJvY2Vzc0Vycm9yYCAgICAgICB8IDpleGM6YENoaWxkUHJvY2Vzc0Vycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25FcnJvcmAgICAgICAgICB8IDpleGM6YENvbm5lY3Rpb25FcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3JgICB8IDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgICB8IDpleGM6YENvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZXNldEVycm9yYCAgICB8IDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYCAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ZpbGVFeGlzdHNFcnJvcmAgICAgICAgICB8IDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yYCAgICAgICB8IDpleGM6YEZpbGVOb3RGb3VuZEVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0VPRkVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YEVPRkVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcmAgICAgICB8IDpleGM6YEZsb2F0aW5nUG9pbnRFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ltcG9ydEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YEltcG9ydEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0luZGV4RXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YEluZGV4RXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ludGVycnVwdGVkRXJyb3JgICAgICAgICB8IDpleGM6YEludGVycnVwdGVkRXJyb3JgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0lzQURpcmVjdG9yeUVycm9yYCAgICAgICB8IDpleGM6YElzQURpcmVjdG9yeUVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0tleUVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YEtleUVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0tleWJvYXJkSW50ZXJydXB0YCAgICAgICB8IDpleGM6YEtleWJvYXJkSW50ZXJydXB0YCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX01lbW9yeUVycm9yYCAgICAgICAgICAgICB8IDpleGM6YE1lbW9yeUVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05hbWVFcnJvcmAgICAgICAgICAgICAgICB8IDpleGM6YE5hbWVFcnJvcmAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcmAgICAgICB8IDpleGM6YE5vdEFEaXJlY3RvcnlFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3JgICAgICB8IDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgICAgICAgICAgICAgICAgICB8IDpleGM6YE9TRXJyb3JgICAgICAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX092ZXJmbG93RXJyb3JgICAgICAgICAgICB8IDpleGM6YE92ZXJmbG93RXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1Blcm1pc3Npb25FcnJvcmAgICAgICAgICB8IDpleGM6YFBlcm1pc3Npb25FcnJvcmAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcmAgICAgICB8IDpleGM6YFByb2Nlc3NMb29rdXBFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgICAgICB8IDpleGM6YFJlZmVyZW5jZUVycm9yYCAgICAgICAgICAgfCBcKDIpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFJ1bnRpbWVFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5bnRheEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YFN5bnRheEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUVycm9yYCAgICAgICAgICAgICB8IDpleGM6YFN5c3RlbUVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1RpbWVvdXRFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFRpbWVvdXRFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUV4aXRgICAgICAgICAgICAgICB8IDpleGM6YFN5c3RlbUV4aXRgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1R5cGVFcnJvcmAgICAgICAgICAgICAgICB8IDpleGM6YFR5cGVFcnJvcmAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1ZhbHVlRXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YFZhbHVlRXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1plcm9EaXZpc2lvbkVycm9yYCAgICAgICB8IDpleGM6YFplcm9EaXZpc2lvbkVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgOmM6ZGF0YTpgUHlFeGNfQmxvY2tpbmdJT0Vycm9yYCwgOmM6ZGF0YTpgUHlFeGNfQnJva2VuUGlwZUVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0NoaWxkUHJvY2Vzc0Vycm9yYCwgOmM6ZGF0YTpgUHlFeGNfQ29ubmVjdGlvbkVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0Nvbm5lY3Rpb25SZXNldEVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfRmlsZUV4aXN0c0Vycm9yYCwKKyAgIDpjOmRhdGE6YFB5RXhjX0ZpbGVOb3RGb3VuZEVycm9yYCwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19Jc0FEaXJlY3RvcnlFcnJvcmAsIDpjOmRhdGE6YFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcmAsCisgICA6YzpkYXRhOmBQeUV4Y19QZXJtaXNzaW9uRXJyb3JgLCA6YzpkYXRhOmBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3JgCisgICBhbmQgOmM6ZGF0YTpgUHlFeGNfVGltZW91dEVycm9yYCB3ZXJlIGludHJvZHVjZWQgZm9sbG93aW5nIDpwZXA6YDMxNTFgLgorCisKK1RoZXNlIGFyZSBjb21wYXRpYmlsaXR5IGFsaWFzZXMgdG8gOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmA6CisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgOmM6ZGF0YTpgUHlFeGNfRW52aXJvbm1lbnRFcnJvcmAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19JT0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1dpbmRvd3NFcnJvcmAgICAgICAgIHwgXCgzKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZXNlIGFsaWFzZXMgdXNlZCB0byBiZSBzZXBhcmF0ZSBleGNlcHRpb24gdHlwZXMuCisKIAogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBQeUV4Y19CYXNlRXhjZXB0aW9uCkBAIC02NDksMjggKzc0Nyw0MiBAQAogICAgc2luZ2xlOiBQeUV4Y19Mb29rdXBFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Bc3NlcnRpb25FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19BdHRyaWJ1dGVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19CbG9ja2luZ0lPRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQnJva2VuUGlwZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Nvbm5lY3Rpb25SZWZ1c2VkRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfQ29ubmVjdGlvblJlc2V0RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfRU9GRXJyb3IKLSAgIHNpbmdsZTogUHlFeGNfRW52aXJvbm1lbnRFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19GaWxlRXhpc3RzRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfRmlsZU5vdEZvdW5kRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yCi0gICBzaW5nbGU6IFB5RXhjX0lPRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfSW1wb3J0RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfSW5kZXhFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19JbnRlcnJ1cHRlZEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0lzQURpcmVjdG9yeUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0tleUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0tleWJvYXJkSW50ZXJydXB0CiAgICBzaW5nbGU6IFB5RXhjX01lbW9yeUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX05hbWVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Ob3RBRGlyZWN0b3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19PU0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX092ZXJmbG93RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfUGVybWlzc2lvbkVycm9yCisgICBzaW5nbGU6IFB5RXhjX1Byb2Nlc3NMb29rdXBFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19SZWZlcmVuY2VFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19SdW50aW1lRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfU3ludGF4RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfU3lzdGVtRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfU3lzdGVtRXhpdAorICAgc2luZ2xlOiBQeUV4Y19UaW1lb3V0RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfVHlwZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1ZhbHVlRXJyb3IKLSAgIHNpbmdsZTogUHlFeGNfV2luZG93c0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX1plcm9EaXZpc2lvbkVycm9yCisgICBzaW5nbGU6IFB5RXhjX0Vudmlyb25tZW50RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfSU9FcnJvcgorICAgc2luZ2xlOiBQeUV4Y19XaW5kb3dzRXJyb3IKIAogTm90ZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QgYi9Eb2MvYy1hcGkvZnVuY3Rpb24ucnN0CmluZGV4IDMxODA1ZmQuLmFkOTgzMjIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9mdW5jdGlvbi5yc3QKKysrIGIvRG9jL2MtYXBpL2Z1bmN0aW9uLnJzdApAQCAtMzgsNiArMzgsMTYgQEAKICAgIG9iamVjdCwgdGhlIGFyZ3VtZW50IGRlZmF1bHRzIGFuZCBjbG9zdXJlIGFyZSBzZXQgdG8gKk5VTEwqLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqcXVhbG5hbWUpCisKKyAgIEFzIDpjOmZ1bmM6YFB5RnVuY3Rpb25fTmV3YCwgYnV0IGFsc28gYWxsb3dzIHRvIHNldCB0aGUgZnVuY3Rpb24gb2JqZWN0J3MKKyAgIGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlLiAgKnF1YWxuYW1lKiBzaG91bGQgYmUgYSB1bmljb2RlIG9iamVjdCBvciBOVUxMOworICAgaWYgTlVMTCwgdGhlIGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlIGlzIHNldCB0byB0aGUgc2FtZSB2YWx1ZSBhcyBpdHMKKyAgIGBgX19uYW1lX19gYCBhdHRyaWJ1dGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlGdW5jdGlvbl9HZXRDb2RlKFB5T2JqZWN0ICpvcCkKIAogICAgUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdCAqb3AqLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2ltcG9ydC5yc3QgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdAppbmRleCBjZjQ4MzYzLi4yNzAxNTJlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW1wb3J0LnJzdAorKysgYi9Eb2MvYy1hcGkvaW1wb3J0LnJzdApAQCAtMzAsMTMgKzMwLDEzIEBACiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jayhjb25zdCBjaGFyICpuYW1lKQogCi0gICBUaGlzIHZlcnNpb24gb2YgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYCBkb2VzIG5vdCBibG9jay4gSXQncyBpbnRlbmRlZAotICAgdG8gYmUgdXNlZCBpbiBDIGZ1bmN0aW9ucyB0aGF0IGltcG9ydCBvdGhlciBtb2R1bGVzIHRvIGV4ZWN1dGUgYSBmdW5jdGlvbi4KLSAgIFRoZSBpbXBvcnQgbWF5IGJsb2NrIGlmIGFub3RoZXIgdGhyZWFkIGhvbGRzIHRoZSBpbXBvcnQgbG9jay4gVGhlIGZ1bmN0aW9uCi0gICA6YzpmdW5jOmBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrYCBuZXZlciBibG9ja3MuIEl0IGZpcnN0IHRyaWVzIHRvIGZldGNoCi0gICB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMgYW5kIGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYAotICAgdW5sZXNzIHRoZSBsb2NrIGlzIGhlbGQsIGluIHdoaWNoIGNhc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcmFpc2UgYW4KLSAgIDpleGM6YEltcG9ydEVycm9yYC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgYSBkZXByZWNhdGVkIGFsaWFzIG9mIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gZmFpbCBpbW1lZGlhdGVseSB3aGVuIHRoZSBpbXBvcnQgbG9jayB3YXMgaGVsZAorICAgICAgYnkgYW5vdGhlciB0aHJlYWQuICBJbiBQeXRob24gMy4zIHRob3VnaCwgdGhlIGxvY2tpbmcgc2NoZW1lIHN3aXRjaGVkCisgICAgICB0byBwZXItbW9kdWxlIGxvY2tzIGZvciBtb3N0IHB1cnBvc2VzLCBzbyB0aGlzIGZ1bmN0aW9uJ3Mgc3BlY2lhbAorICAgICAgYmVoYXZpb3VyIGlzbid0IG5lZWRlZCBhbnltb3JlLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlRXgoY2hhciAqbmFtZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpsb2NhbHMsIFB5T2JqZWN0ICpmcm9tbGlzdCkKQEAgLTQ0LDggKzQ0LDcgQEAKICAgIC4uIGluZGV4OjogYnVpbHRpbjogX19pbXBvcnRfXwogCiAgICBJbXBvcnQgYSBtb2R1bGUuICBUaGlzIGlzIGJlc3QgZGVzY3JpYmVkIGJ5IHJlZmVycmluZyB0byB0aGUgYnVpbHQtaW4gUHl0aG9uCi0gICBmdW5jdGlvbiA6ZnVuYzpgX19pbXBvcnRfX2AsIGFzIHRoZSBzdGFuZGFyZCA6ZnVuYzpgX19pbXBvcnRfX2AgZnVuY3Rpb24gY2FsbHMKLSAgIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHkuCisgICBmdW5jdGlvbiA6ZnVuYzpgX19pbXBvcnRfX2AuCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUgb3IgdG9wLWxldmVsCiAgICBwYWNrYWdlLCBvciAqTlVMTCogd2l0aCBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUuICBMaWtlIGZvcgpAQCAtNTcsNyArNTYsNyBAQAogICAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKIAogICAgSW1wb3J0IGEgbW9kdWxlLiAgVGhpcyBpcyBiZXN0IGRlc2NyaWJlZCBieSByZWZlcnJpbmcgdG8gdGhlIGJ1aWx0LWluIFB5dGhvbgogICAgZnVuY3Rpb24gOmZ1bmM6YF9faW1wb3J0X19gLCBhcyB0aGUgc3RhbmRhcmQgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIGNhbGxzCkBAIC02OCw2ICs2NywxNiBAQAogICAgdGhlIHJldHVybiB2YWx1ZSB3aGVuIGEgc3VibW9kdWxlIG9mIGEgcGFja2FnZSB3YXMgcmVxdWVzdGVkIGlzIG5vcm1hbGx5IHRoZQogICAgdG9wLWxldmVsIHBhY2thZ2UsIHVubGVzcyBhIG5vbi1lbXB0eSAqZnJvbWxpc3QqIHdhcyBnaXZlbi4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmZyb21saXN0LCBpbnQgbGV2ZWwpCisKKyAgIFNpbWlsYXIgdG8gOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYW4KKyAgIFVURi04IGVuY29kZWQgc3RyaW5nIGluc3RlYWQgb2YgYSBVbmljb2RlIG9iamVjdC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIE5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKiBhcmUgbm8gbG9uZ2VyIGFjY2VwdGVkLgogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0ltcG9ydChQeU9iamVjdCAqbmFtZSkKIApAQCAtODYsNyArOTUsNyBAQAogICAgYW4gZXhjZXB0aW9uIHNldCBvbiBmYWlsdXJlICh0aGUgbW9kdWxlIHN0aWxsIGV4aXN0cyBpbiB0aGlzIGNhc2UpLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIAogICAgUmV0dXJuIHRoZSBtb2R1bGUgb2JqZWN0IGNvcnJlc3BvbmRpbmcgdG8gYSBtb2R1bGUgbmFtZS4gIFRoZSAqbmFtZSogYXJndW1lbnQKICAgIG1heSBiZSBvZiB0aGUgZm9ybSBgYHBhY2thZ2UubW9kdWxlYGAuIEZpcnN0IGNoZWNrIHRoZSBtb2R1bGVzIGRpY3Rpb25hcnkgaWYKQEAgLTEwMCw2ICsxMDksMTQgQEAKICAgICAgIG9yIG9uZSBvZiBpdHMgdmFyaWFudHMgdG8gaW1wb3J0IGEgbW9kdWxlLiAgUGFja2FnZSBzdHJ1Y3R1cmVzIGltcGxpZWQgYnkgYQogICAgICAgZG90dGVkIG5hbWUgZm9yICpuYW1lKiBhcmUgbm90IGNyZWF0ZWQgaWYgbm90IGFscmVhZHkgcHJlc2VudC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUltcG9ydF9BZGRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSkKKworICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3RgLCBidXQgdGhlIG5hbWUgaXMgYSBVVEYtOAorICAgZW5jb2RlZCBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvKQogCkBAIC0xMzYsMjUgKzE1Myw0MyBAQAogICAgU2VlIGFsc28gOmM6ZnVuYzpgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcyhjaGFyICpuYW1lLCBQeU9iamVjdCAqY28sIGNoYXIgKnBhdGhuYW1lLCBjaGFyICpjcGF0aG5hbWUpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqY28sIFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKmNwYXRobmFtZSkKIAogICAgTGlrZSA6YzpmdW5jOmBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4YCwgYnV0IHRoZSA6YXR0cjpgX19jYWNoZWRfX2AKICAgIGF0dHJpYnV0ZSBvZiB0aGUgbW9kdWxlIG9iamVjdCBpcyBzZXQgdG8gKmNwYXRobmFtZSogaWYgaXQgaXMKICAgIG5vbi1gYE5VTExgYC4gIE9mIHRoZSB0aHJlZSBmdW5jdGlvbnMsIHRoaXMgaXMgdGhlIHByZWZlcnJlZCBvbmUgdG8gdXNlLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcyhjaGFyICpuYW1lLCBQeU9iamVjdCAqY28sIGNoYXIgKnBhdGhuYW1lLCBjaGFyICpjcGF0aG5hbWUpCisKKyAgIExpa2UgOmM6ZnVuYzpgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3RgLCBidXQgKm5hbWUqLCAqcGF0aG5hbWUqIGFuZAorICAgKmNwYXRobmFtZSogYXJlIFVURi04IGVuY29kZWQgc3RyaW5ncy4gQXR0ZW1wdHMgYXJlIGFsc28gbWFkZSB0byBmaWd1cmUgb3V0CisgICB3aGF0IHRoZSB2YWx1ZSBmb3IgKnBhdGhuYW1lKiBzaG91bGQgYmUgZnJvbSAqY3BhdGhuYW1lKiBpZiB0aGUgZm9ybWVyIGlzCisgICBzZXQgdG8gYGBOVUxMYGAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVzZXMgOmZ1bmM6YGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCBpbiBjYWxjdWxhdGluZyB0aGUgc291cmNlIHBhdGggaWYKKyAgICAgIG9ubHkgdGhlIGJ5dGVjb2RlIHBhdGggaXMgcHJvdmlkZWQuCisKIAogLi4gYzpmdW5jdGlvbjo6IGxvbmcgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIoKQogCiAgICBSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgUHl0aG9uIGJ5dGVjb2RlIGZpbGVzIChhLmsuYS4gOmZpbGU6YC5weWNgIGFuZAogICAgOmZpbGU6YC5weW9gIGZpbGVzKS4gIFRoZSBtYWdpYyBudW1iZXIgc2hvdWxkIGJlIHByZXNlbnQgaW4gdGhlIGZpcnN0IGZvdXIgYnl0ZXMKLSAgIG9mIHRoZSBieXRlY29kZSBmaWxlLCBpbiBsaXR0bGUtZW5kaWFuIGJ5dGUgb3JkZXIuCisgICBvZiB0aGUgYnl0ZWNvZGUgZmlsZSwgaW4gbGl0dGxlLWVuZGlhbiBieXRlIG9yZGVyLiBSZXR1cm5zIC0xIG9uIGVycm9yLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIHZhbHVlIG9mIC0xIHVwb24gZmFpbHVyZS4KIAogCiAuLiBjOmZ1bmN0aW9uOjogY29uc3QgY2hhciAqIFB5SW1wb3J0X0dldE1hZ2ljVGFnKCkKIAogICAgUmV0dXJuIHRoZSBtYWdpYyB0YWcgc3RyaW5nIGZvciA6cGVwOmAzMTQ3YCBmb3JtYXQgUHl0aG9uIGJ5dGVjb2RlIGZpbGUKLSAgIG5hbWVzLgorICAgbmFtZXMuICBLZWVwIGluIG1pbmQgdGhhdCB0aGUgdmFsdWUgYXQgYGBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYGAgaXMKKyAgIGF1dGhvcml0YXRpdmUgYW5kIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhpcyBmdW5jdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKQEAgLTIwMCw3ICsyMzUsNyBAQAogICAgRm9yIGludGVybmFsIHVzZSBvbmx5LgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKGNoYXIgKm5hbWUpCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChQeU9iamVjdCAqbmFtZSkKIAogICAgTG9hZCBhIGZyb3plbiBtb2R1bGUgbmFtZWQgKm5hbWUqLiAgUmV0dXJuIGBgMWBgIGZvciBzdWNjZXNzLCBgYDBgYCBpZiB0aGUKICAgIG1vZHVsZSBpcyBub3QgZm91bmQsIGFuZCBgYC0xYGAgd2l0aCBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBpbml0aWFsaXphdGlvbgpAQCAtMjA4LDYgKzI0MywxNCBAQAogICAgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYC4gIChOb3RlIHRoZSBtaXNub21lciAtLS0gdGhpcyBmdW5jdGlvbiB3b3VsZAogICAgcmVsb2FkIHRoZSBtb2R1bGUgaWYgaXQgd2FzIGFscmVhZHkgaW1wb3J0ZWQuKQogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZShjaGFyICpuYW1lKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhCisgICBVVEYtOCBlbmNvZGVkIHN0cmluZyBpbnN0ZWFkIG9mIGEgVW5pY29kZSBvYmplY3QuCisKIAogLi4gYzp0eXBlOjogc3RydWN0IF9mcm96ZW4KIApAQCAtMjQ3LDEzICsyOTAsMTMgQEAKIAogICAgU3RydWN0dXJlIGRlc2NyaWJpbmcgYSBzaW5nbGUgZW50cnkgaW4gdGhlIGxpc3Qgb2YgYnVpbHQtaW4gbW9kdWxlcy4gIEVhY2ggb2YKICAgIHRoZXNlIHN0cnVjdHVyZXMgZ2l2ZXMgdGhlIG5hbWUgYW5kIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGZvciBhIG1vZHVsZSBidWlsdAotICAgaW50byB0aGUgaW50ZXJwcmV0ZXIuICBQcm9ncmFtcyB3aGljaCBlbWJlZCBQeXRob24gbWF5IHVzZSBhbiBhcnJheSBvZiB0aGVzZQotICAgc3RydWN0dXJlcyBpbiBjb25qdW5jdGlvbiB3aXRoIDpjOmZ1bmM6YFB5SW1wb3J0X0V4dGVuZEluaXR0YWJgIHRvIHByb3ZpZGUKLSAgIGFkZGl0aW9uYWwgYnVpbHQtaW4gbW9kdWxlcy4gIFRoZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbgotICAgOmZpbGU6YEluY2x1ZGUvaW1wb3J0LmhgIGFzOjoKKyAgIGludG8gdGhlIGludGVycHJldGVyLiAgVGhlIG5hbWUgaXMgYW4gQVNDSUkgZW5jb2RlZCBzdHJpbmcuICBQcm9ncmFtcyB3aGljaAorICAgZW1iZWQgUHl0aG9uIG1heSB1c2UgYW4gYXJyYXkgb2YgdGhlc2Ugc3RydWN0dXJlcyBpbiBjb25qdW5jdGlvbiB3aXRoCisgICA6YzpmdW5jOmBQeUltcG9ydF9FeHRlbmRJbml0dGFiYCB0byBwcm92aWRlIGFkZGl0aW9uYWwgYnVpbHQtaW4gbW9kdWxlcy4KKyAgIFRoZSBzdHJ1Y3R1cmUgaXMgZGVmaW5lZCBpbiA6ZmlsZTpgSW5jbHVkZS9pbXBvcnQuaGAgYXM6OgogCiAgICAgICBzdHJ1Y3QgX2luaXR0YWIgewotICAgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgICAgY2hhciAqbmFtZTsgICAgICAgICAgICAgICAgIC8qIEFTQ0lJIGVuY29kZWQgc3RyaW5nICovCiAgICAgICAgICAgUHlPYmplY3QqICgqaW5pdGZ1bmMpKHZvaWQpOwogICAgICAgfTsKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2luZGV4LnJzdCBiL0RvYy9jLWFwaS9pbmRleC5yc3QKaW5kZXggMTJhMWVjNy4uYTBjYjZlNSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2luZGV4LnJzdAorKysgYi9Eb2MvYy1hcGkvaW5kZXgucnN0CkBAIC0yNSwzICsyNSw0IEBACiAgICBpbml0LnJzdAogICAgbWVtb3J5LnJzdAogICAgb2JqaW1wbC5yc3QKKyAgIHN0YWJsZS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA3NTA3ZTNiLi45NWZmNGVlIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC02NDYsNyArNjQ2LDcgQEAKICAgIDpjOmZ1bmM6YFB5R0lMU3RhdGVfUmVsZWFzZWAgb24gdGhlIHNhbWUgdGhyZWFkLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeVRocmVhZFN0YXRlIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkKKy4uIGM6ZnVuY3Rpb246OiBQeVRocmVhZFN0YXRlKiBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpCiAKICAgIEdldCB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUgZm9yIHRoaXMgdGhyZWFkLiAgTWF5IHJldHVybiBgYE5VTExgYCBpZiBubwogICAgR0lMU3RhdGUgQVBJIGhhcyBiZWVuIHVzZWQgb24gdGhlIGN1cnJlbnQgdGhyZWFkLiAgTm90ZSB0aGF0IHRoZSBtYWluIHRocmVhZApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xpc3QucnN0IGIvRG9jL2MtYXBpL2xpc3QucnN0CmluZGV4IGZlYjkwMTUuLjViMjYzYTcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9saXN0LnJzdAorKysgYi9Eb2MvYy1hcGkvbGlzdC5yc3QKQEAgLTE0MiwzICsxNDIsMTAgQEAKIAogICAgUmV0dXJuIGEgbmV3IHR1cGxlIG9iamVjdCBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiAqbGlzdCo7IGVxdWl2YWxlbnQgdG8KICAgIGBgdHVwbGUobGlzdClgYC4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5TGlzdF9DbGVhckZyZWVMaXN0KCkKKworICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IGUyZjU4YWQuLjM2NWFiZDcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTEwMCw2ICsxMDAsMjAgQEAKICAgIHN0cmluZyBpcyBmaXJzdCBlbmNvZGVkIHRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZURlY2ltYWxgCiAgICBhbmQgdGhlbiBjb252ZXJ0ZWQgdXNpbmcgOmM6ZnVuYzpgUHlMb25nX0Zyb21TdHJpbmdgLgogCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCisKKyAgIENvbnZlcnQgYSBzZXF1ZW5jZSBvZiBVbmljb2RlIGRpZ2l0cyBpbiB0aGUgc3RyaW5nICp1KiB0byBhIFB5dGhvbiBpbnRlZ2VyCisgICB2YWx1ZS4gIFRoZSBVbmljb2RlIHN0cmluZyBpcyBmaXJzdCBlbmNvZGVkIHRvIGEgYnl0ZSBzdHJpbmcgdXNpbmcKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsYCBhbmQgdGhlbiBjb252ZXJ0ZWQgdXNpbmcKKyAgIDpjOmZ1bmM6YFB5TG9uZ19Gcm9tU3RyaW5nYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVZvaWRQdHIodm9pZCAqcCkKIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0IGIvRG9jL2MtYXBpL21lbW9yeXZpZXcucnN0CmluZGV4IDZiNDljZGYuLjVlNTA5NzcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tZW1vcnl2aWV3LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5dmlldy5yc3QKQEAgLTE3LDE2ICsxNywyMSBAQAogCiAgICBDcmVhdGUgYSBtZW1vcnl2aWV3IG9iamVjdCBmcm9tIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIHRoZSBidWZmZXIgaW50ZXJmYWNlLgogICAgSWYgKm9iaiogc3VwcG9ydHMgd3JpdGFibGUgYnVmZmVyIGV4cG9ydHMsIHRoZSBtZW1vcnl2aWV3IG9iamVjdCB3aWxsIGJlCi0gICByZWFkYWJsZSBhbmQgd3JpdGFibGUsIG90aGVyd2lzZSBpdCB3aWxsIGJlIHJlYWQtb25seS4KKyAgIHJlYWQvd3JpdGUsIG90aGVyd2lzZSBpdCBtYXkgYmUgZWl0aGVyIHJlYWQtb25seSBvciByZWFkL3dyaXRlIGF0IHRoZQorICAgZGlzY3JldGlvbiBvZiB0aGUgZXhwb3J0ZXIuCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKKworICAgQ3JlYXRlIGEgbWVtb3J5dmlldyBvYmplY3QgdXNpbmcgKm1lbSogYXMgdGhlIHVuZGVybHlpbmcgYnVmZmVyLgorICAgKmZsYWdzKiBjYW4gYmUgb25lIG9mIDpjOm1hY3JvOmBQeUJVRl9SRUFEYCBvciA6YzptYWNybzpgUHlCVUZfV1JJVEVgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKnZpZXcpCiAKICAgIENyZWF0ZSBhIG1lbW9yeXZpZXcgb2JqZWN0IHdyYXBwaW5nIHRoZSBnaXZlbiBidWZmZXIgc3RydWN0dXJlICp2aWV3Ki4KLSAgIFRoZSBtZW1vcnl2aWV3IG9iamVjdCB0aGVuIG93bnMgdGhlIGJ1ZmZlciByZXByZXNlbnRlZCBieSAqdmlldyosIHdoaWNoCi0gICBtZWFucyB5b3Ugc2hvdWxkbid0IHRyeSB0byBjYWxsIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIHlvdXJzZWxmOiBpdAotICAgd2lsbCBiZSBkb25lIG9uIGRlYWxsb2NhdGlvbiBvZiB0aGUgbWVtb3J5dmlldyBvYmplY3QuCi0KKyAgIEZvciBzaW1wbGUgYnl0ZSBidWZmZXJzLCA6YzpmdW5jOmBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeWAgaXMgdGhlIHByZWZlcnJlZAorICAgZnVuY3Rpb24uCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCAqUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMoUHlPYmplY3QgKm9iaiwgaW50IGJ1ZmZlcnR5cGUsIGNoYXIgb3JkZXIpCiAKQEAgLTQzLDEwICs0OCwxNiBAQAogICAgY3VycmVudGx5IGFsbG93ZWQgdG8gY3JlYXRlIHN1YmNsYXNzZXMgb2YgOmNsYXNzOmBtZW1vcnl2aWV3YC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlfYnVmZmVyICpQeU1lbW9yeVZpZXdfR0VUX0JVRkZFUihQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IFB5X2J1ZmZlciAqUHlNZW1vcnlWaWV3X0dFVF9CVUZGRVIoUHlPYmplY3QgKm12aWV3KQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBidWZmZXIgc3RydWN0dXJlIHdyYXBwZWQgYnkgdGhlIGdpdmVuCi0gICBtZW1vcnl2aWV3IG9iamVjdC4gIFRoZSBvYmplY3QgKiptdXN0KiogYmUgYSBtZW1vcnl2aWV3IGluc3RhbmNlOwotICAgdGhpcyBtYWNybyBkb2Vzbid0IGNoZWNrIGl0cyB0eXBlLCB5b3UgbXVzdCBkbyBpdCB5b3Vyc2VsZiBvciB5b3UKLSAgIHdpbGwgcmlzayBjcmFzaGVzLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5dmlldydzIHByaXZhdGUgY29weSBvZiB0aGUgZXhwb3J0ZXIncyBidWZmZXIuCisgICAqbXZpZXcqICoqbXVzdCoqIGJlIGEgbWVtb3J5dmlldyBpbnN0YW5jZTsgdGhpcyBtYWNybyBkb2Vzbid0IGNoZWNrIGl0cyB0eXBlLAorICAgeW91IG11c3QgZG8gaXQgeW91cnNlbGYgb3IgeW91IHdpbGwgcmlzayBjcmFzaGVzLgorCisuLiBjOmZ1bmN0aW9uOjogUHlfYnVmZmVyICpQeU1lbW9yeVZpZXdfR0VUX0JBU0UoUHlPYmplY3QgKm12aWV3KQorCisgICBSZXR1cm4gZWl0aGVyIGEgcG9pbnRlciB0byB0aGUgZXhwb3J0aW5nIG9iamVjdCB0aGF0IHRoZSBtZW1vcnl2aWV3IGlzIGJhc2VkCisgICBvbiBvciAqTlVMTCogaWYgdGhlIG1lbW9yeXZpZXcgaGFzIGJlZW4gY3JlYXRlZCBieSBvbmUgb2YgdGhlIGZ1bmN0aW9ucworICAgOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgIG9yIDpjOmZ1bmM6YFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyYC4KKyAgICptdmlldyogKiptdXN0KiogYmUgYSBtZW1vcnl2aWV3IGluc3RhbmNlLgogCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvbW9kdWxlLnJzdCBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CmluZGV4IGZmZDY4ZTMuLjNiZTdmZTMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9tb2R1bGUucnN0CisrKyBiL0RvYy9jLWFwaS9tb2R1bGUucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICA6YzpkYXRhOmBQeU1vZHVsZV9UeXBlYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9OZXdPYmplY3QoUHlPYmplY3QgKm5hbWUpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCkBAIC00MCw2ICs0MCwxNCBAQAogICAgT25seSB0aGUgbW9kdWxlJ3MgOmF0dHI6YF9fZG9jX19gIGFuZCA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZXMgYXJlIGZpbGxlZCBpbjsKICAgIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyBhIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5TW9kdWxlX05ldyhjb25zdCBjaGFyICpuYW1lKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5SW1wb3J0X05ld09iamVjdGAsIGJ1dCB0aGUgbmFtZSBpcyBhbiBVVEYtOCBlbmNvZGVkCisgICBzdHJpbmcgaW5zdGVhZCBvZiBhIFVuaWNvZGUgb2JqZWN0LgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlNb2R1bGVfR2V0RGljdChQeU9iamVjdCAqbW9kdWxlKQogCkBAIC01Miw3ICs2MCw3IEBACiAgICBtYW5pcHVsYXRlIGEgbW9kdWxlJ3MgOmF0dHI6YF9fZGljdF9fYC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbW9kdWxlKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXROYW1lT2JqZWN0KFB5T2JqZWN0ICptb2R1bGUpCiAKICAgIC4uIGluZGV4OjoKICAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCkBAIC02MSwxNSArNjksMTMgQEAKICAgIFJldHVybiAqbW9kdWxlKidzIDphdHRyOmBfX25hbWVfX2AgdmFsdWUuICBJZiB0aGUgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgb25lLAogICAgb3IgaWYgaXQgaXMgbm90IGEgc3RyaW5nLCA6ZXhjOmBTeXN0ZW1FcnJvcmAgaXMgcmFpc2VkIGFuZCAqTlVMTCogaXMgcmV0dXJuZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0uLiBjOmZ1bmN0aW9uOjogY2hhciogUHlNb2R1bGVfR2V0RmlsZW5hbWUoUHlPYmplY3QgKm1vZHVsZSkKIAotICAgU2ltaWxhciB0byA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdGAgYnV0IHJldHVybiB0aGUgZmlsZW5hbWUKLSAgIGVuY29kZWQgdG8gJ3V0Zi04Jy4KKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU1vZHVsZV9HZXROYW1lKFB5T2JqZWN0ICptb2R1bGUpCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLSAgICAgIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lYCByYWlzZXMgOmM6dHlwZTpgVW5pY29kZUVuY29kZUVycm9yYCBvbgotICAgICAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLCB1c2UgOmM6ZnVuYzpgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3RgIGluc3RlYWQuCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldE5hbWVPYmplY3RgIGJ1dCByZXR1cm4gdGhlIG5hbWUgZW5jb2RlZCB0bworICAgYGAndXRmLTgnYGAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdChQeU9iamVjdCAqbW9kdWxlKQpAQCAtODEsMTEgKzg3LDIxIEBACiAgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCAqbW9kdWxlKiB3YXMgbG9hZGVkIHVzaW5nICptb2R1bGUqJ3MKICAgIDphdHRyOmBfX2ZpbGVfX2AgYXR0cmlidXRlLiAgSWYgdGhpcyBpcyBub3QgZGVmaW5lZCwgb3IgaWYgaXQgaXMgbm90IGEKICAgIHVuaWNvZGUgc3RyaW5nLCByYWlzZSA6ZXhjOmBTeXN0ZW1FcnJvcmAgYW5kIHJldHVybiAqTlVMTCo7IG90aGVyd2lzZSByZXR1cm4KLSAgIGEgcmVmZXJlbmNlIHRvIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YC4KKyAgIGEgcmVmZXJlbmNlIHRvIGEgVW5pY29kZSBvYmplY3QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGM6ZnVuY3Rpb246OiBjaGFyKiBQeU1vZHVsZV9HZXRGaWxlbmFtZShQeU9iamVjdCAqbW9kdWxlKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBidXQgcmV0dXJuIHRoZSBmaWxlbmFtZQorICAgZW5jb2RlZCB0byAndXRmLTgnLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4yCisgICAgICA6YzpmdW5jOmBQeU1vZHVsZV9HZXRGaWxlbmFtZWAgcmFpc2VzIDpjOnR5cGU6YFVuaWNvZGVFbmNvZGVFcnJvcmAgb24KKyAgICAgIHVuZW5jb2RhYmxlIGZpbGVuYW1lcywgdXNlIDpjOmZ1bmM6YFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0YCBpbnN0ZWFkLgorCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1vZHVsZV9HZXRTdGF0ZShQeU9iamVjdCAqbW9kdWxlKQogCiAgICBSZXR1cm4gdGhlICJzdGF0ZSIgb2YgdGhlIG1vZHVsZSwgdGhhdCBpcywgYSBwb2ludGVyIHRvIHRoZSBibG9jayBvZiBtZW1vcnkKQEAgLTk3LDggKzExMywyOCBAQAogCiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSA6Yzp0eXBlOmBQeU1vZHVsZURlZmAgc3RydWN0IGZyb20gd2hpY2ggdGhlIG1vZHVsZSB3YXMKICAgIGNyZWF0ZWQsIG9yICpOVUxMKiBpZiB0aGUgbW9kdWxlIHdhc24ndCBjcmVhdGVkIHdpdGgKLSAgIDpjOmZ1bmM6YFB5TW9kdWxlX0NyZWF0ZWAuCisgICA6YzpmdW5jOmBQeU1vZHVsZV9DcmVhdGVgLmkKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVN0YXRlX0ZpbmRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZikKKworICAgUmV0dXJucyB0aGUgbW9kdWxlIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkIGZyb20gKmRlZiogZm9yIHRoZSBjdXJyZW50IGludGVycHJldGVyLgorICAgVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhhdCB0aGUgbW9kdWxlIG9iamVjdCBoYXMgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgd2l0aAorICAgOmM6ZnVuYzpgUHlTdGF0ZV9BZGRNb2R1bGVgIGJlZm9yZWhhbmQuIEluIGNhc2UgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlIG9iamVjdCBpcyBub3QKKyAgIGZvdW5kIG9yIGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUgeWV0LCBpdCByZXR1cm5zIE5VTEwuCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9BZGRNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZiwgUHlPYmplY3QgKm1vZHVsZSkKKworICAgQXR0YWNoZXMgdGhlIG1vZHVsZSBvYmplY3QgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiB0byB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuIFRoaXMgYWxsb3dzCisgICB0aGUgbW9kdWxlIG9iamVjdCB0byBiZSBhY2Nlc3NpYmxlIHZpYQorICAgOmM6ZnVuYzpgUHlTdGF0ZV9GaW5kTW9kdWxlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoUHlNb2R1bGVEZWYgKmRlZiwgUHlPYmplY3QgKm1vZHVsZSkKKworICAgUmVtb3ZlcyB0aGUgbW9kdWxlIG9iamVjdCBjcmVhdGVkIGZyb20gKmRlZiogZnJvbSB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiBJbml0aWFsaXppbmcgQyBtb2R1bGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvb2JqZWN0LnJzdCBiL0RvYy9jLWFwaS9vYmplY3QucnN0CmluZGV4IGQwZDQ1YWQuLmQ4OTU1NDcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9vYmplY3QucnN0CisrKyBiL0RvYy9jLWFwaS9vYmplY3QucnN0CkBAIC02LDYgKzYsMTkgQEAKID09PT09PT09PT09PT09PQogCiAKKy4uIGM6dmFyOjogUHlPYmplY3QqIFB5X05vdEltcGxlbWVudGVkCisKKyAgIFRoZSBgYE5vdEltcGxlbWVudGVkYGAgc2luZ2xldG9uLCB1c2VkIHRvIHNpZ25hbCB0aGF0IGFuIG9wZXJhdGlvbiBpcworICAgbm90IGltcGxlbWVudGVkIGZvciB0aGUgZ2l2ZW4gdHlwZSBjb21iaW5hdGlvbi4KKworCisuLiBjOm1hY3JvOjogUHlfUkVUVVJOX05PVElNUExFTUVOVEVECisKKyAgIFByb3Blcmx5IGhhbmRsZSByZXR1cm5pbmcgOmM6ZGF0YTpgUHlfTm90SW1wbGVtZW50ZWRgIGZyb20gd2l0aGluIGEgQworICAgZnVuY3Rpb24gKHRoYXQgaXMsIGluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIE5vdEltcGxlbWVudGVkIGFuZAorICAgcmV0dXJuIGl0KS4KKworCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICpvLCBGSUxFICpmcCwgaW50IGZsYWdzKQogCiAgICBQcmludCBhbiBvYmplY3QgKm8qLCBvbiBmaWxlICpmcCouICBSZXR1cm5zIGBgLTFgYCBvbiBlcnJvci4gIFRoZSBmbGFncyBhcmd1bWVudApAQCAtODgsNiArMTAxLDIyIEBACiAgICBUaGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBQeXRob24gc3RhdGVtZW50IGBgZGVsIG8uYXR0cl9uYW1lYGAuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfR2VuZXJpY0dldERpY3QoUHlPYmplY3QgKm8sIHZvaWQgKmNvbnRleHQpCisKKyAgIEEgZ2VuZXJpYyBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGdldHRlciBvZiBhIGBgX19kaWN0X19gYCBkZXNjcmlwdG9yLiBJdAorICAgY3JlYXRlcyB0aGUgZGljdGlvbmFyeSBpZiBuZWNlc3NhcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvLCB2b2lkICpjb250ZXh0KQorCisgICBBIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBzZXR0ZXIgb2YgYSBgYF9fZGljdF9fYGAgZGVzY3JpcHRvci4gVGhpcworICAgaW1wbGVtZW50YXRpb24gZG9lcyBub3QgYWxsb3cgdGhlIGRpY3Rpb25hcnkgdG8gYmUgZGVsZXRlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9iamVjdF9SaWNoQ29tcGFyZShQeU9iamVjdCAqbzEsIFB5T2JqZWN0ICpvMiwgaW50IG9waWQpCiAKICAgIENvbXBhcmUgdGhlIHZhbHVlcyBvZiAqbzEqIGFuZCAqbzIqIHVzaW5nIHRoZSBvcGVyYXRpb24gc3BlY2lmaWVkIGJ5ICpvcGlkKiwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zZXQucnN0IGIvRG9jL2MtYXBpL3NldC5yc3QKaW5kZXggNjZiNDdjNC4uNWYwZWY5MCAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3NldC5yc3QKKysrIGIvRG9jL2MtYXBpL3NldC5yc3QKQEAgLTE1NywzICsxNTcsMTAgQEAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlTZXRfQ2xlYXIoUHlPYmplY3QgKnNldCkKIAogICAgRW1wdHkgYW4gZXhpc3Rpbmcgc2V0IG9mIGFsbCBlbGVtZW50cy4KKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5U2V0X0NsZWFyRnJlZUxpc3QoKQorCisgICBDbGVhciB0aGUgZnJlZSBsaXN0LiBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBmcmVlZCBpdGVtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3RhYmxlLnJzdCBiL0RvYy9jLWFwaS9zdGFibGUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODhjMWMKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvYy1hcGkvc3RhYmxlLnJzdApAQCAtMCwwICsxLDM5IEBACisuLiBoaWdobGlnaHRsYW5nOjogYworCisuLiBfc3RhYmxlOgorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitTdGFibGUgQXBwbGljdGlvbiBCaW5hcnkgSW50ZXJmYWNlCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RyYWRpdGlvbmFsbHksIHRoZSBDIEFQSSBvZiBQeXRob24gd2lsbCBjaGFuZ2Ugd2l0aCBldmVyeSByZWxlYXNlLgorTW9zdCBjaGFuZ2VzIHdpbGwgYmUgc291cmNlLWNvbXBhdGlibGUsIHR5cGljYWxseSBieSBvbmx5IGFkZGluZyBBUEksCityYXRoZXIgdGhhbiBjaGFuZ2luZyBleGlzdGluZyBBUEkgb3IgcmVtb3ZpbmcgQVBJIChhbHRob3VnaCBzb21lCitpbnRlcmZhY2VzIGRvIGdldCByZW1vdmVkIGFmdGVyIGJlaW5nIGRlcHJlY2F0ZWQgZmlyc3QpLgorCitVbmZvcnR1bmF0ZWx5LCB0aGUgQVBJIGNvbXBhdGliaWxpdHkgZG9lcyBub3QgZXh0ZW5kIHRvIGJpbmFyeQorY29tcGF0aWJpbGl0eSAodGhlIEFCSSkuIFRoZSByZWFzb24gaXMgcHJpbWFyaWx5IHRoZSBldm9sdXRpb24gb2YKK3N0cnVjdCBkZWZpbml0aW9ucywgd2hlcmUgYWRkaXRpb24gb2YgYSBuZXcgZmllbGQsIG9yIGNoYW5naW5nCit0aGUgdHlwZSBvZiBhIGZpZWxkLCBtaWdodCBub3QgYnJlYWsgdGhlIEFQSSwgYnV0IGNhbiBicmVhayB0aGUgQUJJLgorQXMgYSBjb25zZXF1ZW5jZSwgZXh0ZW5zaW9uIG1vZHVsZXMgbmVlZCB0byBiZSByZWNvbXBpbGVkIGZvcgorZXZlcnkgUHl0aG9uIHJlbGVhc2UgKGFsdGhvdWdoIGFuIGV4Y2VwdGlvbiBpcyBwb3NzaWJsZSBvbiBVbml4Cit3aGVuIG5vbmUgb2YgdGhlIGFmZmVjdGVkIGludGVyZmFjZXMgYXJlIHVzZWQpLiBJbiBhZGRpdGlvbiwgb24KK1dpbmRvd3MsIGV4dGVuc2lvbiBtb2R1bGVzIGxpbmsgd2l0aCBhIHNwZWNpZmljIHB5dGhvblhZLmRsbCBhbmQKK25lZWQgdG8gYmUgcmVjb21waWxlZCB0byBsaW5rIHdpdGggYSBuZXdlciBvbmUuCisKK1NpbmNlIFB5dGhvbiAzLjIsIGEgc3Vic2V0IG9mIHRoZSBBUEkgaGFzIGJlZW4gZGVjbGFyZWQgdG8gZ3VhcmFudGVlCithIHN0YWJsZSBBQkkuIEV4dGVuc2lvbiBtb2R1bGVzIHdpc2hpbmcgdG8gdXNlIHRoaXMgQVBJIG5lZWQgdG8gZGVmaW5lCitQeV9MSU1JVEVEX0FQSS4gQSBudW1iZXIgb2YgaW50ZXJwcmV0ZXIgZGV0YWlscyB0aGVuIGJlY29tZSBoaWRkZW4KK2Zyb20gdGhlIGV4dGVuc2lvbiBtb2R1bGU7IGluIHJldHVybiwgYSBtb2R1bGUgaXMgYnVpbHQgdGhhdCB3b3Jrcworb24gYW55IDMueCB2ZXJzaW9uICh4Pj0yKSB3aXRob3V0IHJlY29tcGlsYXRpb24uIEluIHNvbWUgY2FzZXMsIHRoZQorc3RhYmxlIEFCSSBuZWVkcyB0byBiZSBleHRlbmRlZCB3aXRoIG5ldyBmdW5jdGlvbnMuIEV4dGVuc2lvbnMgbW9kdWxlcword2lzaGluZyB0byB1c2UgdGhlc2UgbmV3IEFQSXMgbmVlZCB0byBzZXQgUHlfTElNSVRFRF9BUEkgdG8gdGhlCitQWV9WRVJTSU9OX0hFWCB2YWx1ZSBvZiB0aGUgbWluaW11bSBQeXRob24gdmVyc2lvbiB0aGV5IHdhbnQgdG8KK3N1cHBvcnQgKGUuZy4gMHgwMzAzMDAwMCBmb3IgUHl0aG9uIDMuMykuIFN1Y2ggbW9kdWxlcyB3aWxsIHdvcmsKK29uIGFsbCBzdWJzZXF1ZW50IFB5dGhvbiByZWxlYXNlcywgYnV0IGZhaWwgdG8gbG9hZCAoYmVjYXVzZSBvZgorbWlzc2luZyBzeW1ib2xzKSBvbiB0aGUgb2xkZXIgcmVsZWFzZXMuCisKK0FzIG9mIFB5dGhvbiAzLjIsIHRoZSBzZXQgb2YgZnVuY3Rpb25zIGF2YWlsYWJsZSB0byB0aGUgbGltaXRlZCBBUEkKK2lzIGRvY3VtZW50ZWQgaW4gUEVQIDM4NC4KKworLi4gWFhYIGNvcHkgZXhhY3QgbGlzdCBoZXJlPyBJbnRvIGVhY2ggZnVuY3Rpb25zIGRlZmluaXRpb24/CmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvdHlwZS5yc3QgYi9Eb2MvYy1hcGkvdHlwZS5yc3QKaW5kZXggYjMzODZlYS4uNDRjNzMxYSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3R5cGUucnN0CisrKyBiL0RvYy9jLWFwaS90eXBlLnJzdApAQCAtNTEsMTMgKzUxLDEzIEBACiAgICBtb2RpZmljYXRpb24gb2YgdGhlIGF0dHJpYnV0ZXMgb3IgYmFzZSBjbGFzc2VzIG9mIHRoZSB0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0hhc0ZlYXR1cmUoUHlPYmplY3QgKm8sIGludCBmZWF0dXJlKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeVR5cGVfSGFzRmVhdHVyZShQeVR5cGVPYmplY3QgKm8sIGludCBmZWF0dXJlKQogCiAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgdHlwZSBvYmplY3QgKm8qIHNldHMgdGhlIGZlYXR1cmUgKmZlYXR1cmUqLiAgVHlwZSBmZWF0dXJlcwogICAgYXJlIGRlbm90ZWQgYnkgc2luZ2xlIGJpdCBmbGFncy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogaW50IFB5VHlwZV9JU19HQyhQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX0lTX0dDKFB5VHlwZU9iamVjdCAqbykKIAogICAgUmV0dXJuIHRydWUgaWYgdGhlIHR5cGUgb2JqZWN0IGluY2x1ZGVzIHN1cHBvcnQgZm9yIHRoZSBjeWNsZSBkZXRlY3RvcjsgdGhpcwogICAgdGVzdHMgdGhlIHR5cGUgZmxhZyA6Y29uc3Q6YFB5X1RQRkxBR1NfSEFWRV9HQ2AuCkBAIC03MCwxMyArNzAsMTQgQEAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfR2VuZXJpY0FsbG9jKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlfc3NpemVfdCBuaXRlbXMpCiAKLSAgIFhYWDogRG9jdW1lbnQuCi0KKyAgIEdlbmVyaWMgaGFuZGxlciBmb3IgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvZiBhIHR5cGUgb2JqZWN0LiAgVXNlCisgICBQeXRob24ncyBkZWZhdWx0IG1lbW9yeSBhbGxvY2F0aW9uIG1lY2hhbmlzbSB0byBhbGxvY2F0ZSBhIG5ldyBpbnN0YW5jZSBhbmQKKyAgIGluaXRpYWxpemUgYWxsIGl0cyBjb250ZW50cyB0byAqTlVMTCouCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlUeXBlX0dlbmVyaWNOZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiAKLSAgIFhYWDogRG9jdW1lbnQuCi0KKyAgIEdlbmVyaWMgaGFuZGxlciBmb3IgdGhlIDphdHRyOmB0cF9uZXdgIHNsb3Qgb2YgYSB0eXBlIG9iamVjdC4gIENyZWF0ZSBhCisgICBuZXcgaW5zdGFuY2UgdXNpbmcgdGhlIHR5cGUncyA6YXR0cjpgdHBfYWxsb2NgIHNsb3QuCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlUeXBlX1JlYWR5KFB5VHlwZU9iamVjdCAqdHlwZSkKIApAQCAtODQsMyArODUsMTUgQEAKICAgIHRoZWlyIGluaXRpYWxpemF0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYWRkaW5nIGluaGVyaXRlZCBzbG90cwogICAgZnJvbSBhIHR5cGUncyBiYXNlIGNsYXNzLiAgUmV0dXJuIGBgMGBgIG9uIHN1Y2Nlc3MsIG9yIHJldHVybiBgYC0xYGAgYW5kIHNldHMgYW4KICAgIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMgKnNwZWMpCisKKyAgIENyZWF0ZXMgYW5kIHJldHVybnMgYSBoZWFwIHR5cGUgb2JqZWN0IGZyb20gdGhlICpzcGVjKiBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcyhQeVR5cGVfU3BlYyAqc3BlYywgUHlPYmplY3QgKmJhc2VzKQorCisgICBDcmVhdGVzIGFuZCByZXR1cm5zIGEgaGVhcCB0eXBlIG9iamVjdCBmcm9tIHRoZSAqc3BlYyouIEluIGFkZGl0aW9uIHRvIHRoYXQsCisgICB0aGUgY3JlYXRlZCBoZWFwIHR5cGUgY29udGFpbnMgYWxsIHR5cGVzIGNvbnRhaW5lZCBieSB0aGUgKmJhc2VzKiB0dXBsZSBhcyBiYXNlCisgICB0eXBlcy4gVGhpcyBhbGxvd3MgdGhlIGNhbGxlciB0byByZWZlcmVuY2Ugb3RoZXIgaGVhcCB0eXBlcyBhcyBiYXNlIHR5cGVzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS90eXBlb2JqLnJzdCBiL0RvYy9jLWFwaS90eXBlb2JqLnJzdAppbmRleCA2OGNhOWFkLi5lYTFhMGFkIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKKysrIGIvRG9jL2MtYXBpL3R5cGVvYmoucnN0CkBAIC0xMTk4LDQ2ICsxMTk4LDg4IEBACiAKIC4uIHNlY3Rpb25hdXRob3I6OiBHcmVnIEouIFN0ZWluIDxncmVnQGx5cmEub3JnPgogLi4gc2VjdGlvbmF1dGhvcjo6IEJlbmphbWluIFBldGVyc29uCi0KLQotVGhlIDpyZWY6YGJ1ZmZlciBpbnRlcmZhY2UgPGJ1ZmZlcm9iamVjdHM+YCBleHBvcnRzIGEgbW9kZWwgd2hlcmUgYW4gb2JqZWN0IGNhbiBleHBvc2UgaXRzIGludGVybmFsCi1kYXRhLgotCi1JZiBhbiBvYmplY3QgZG9lcyBub3QgZXhwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlLCB0aGVuIGl0cyA6YXR0cjpgdHBfYXNfYnVmZmVyYAotbWVtYmVyIGluIHRoZSA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHN0cnVjdHVyZSBzaG91bGQgYmUgKk5VTEwqLiAgT3RoZXJ3aXNlLCB0aGUKLTphdHRyOmB0cF9hc19idWZmZXJgIHdpbGwgcG9pbnQgdG8gYSA6Yzp0eXBlOmBQeUJ1ZmZlclByb2NzYCBzdHJ1Y3R1cmUuCi0KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGVmYW4gS3JhaAogCiAuLiBjOnR5cGU6OiBQeUJ1ZmZlclByb2NzCiAKLSAgIFN0cnVjdHVyZSB1c2VkIHRvIGhvbGQgdGhlIGZ1bmN0aW9uIHBvaW50ZXJzIHdoaWNoIGRlZmluZSBhbiBpbXBsZW1lbnRhdGlvbiBvZgotICAgdGhlIGJ1ZmZlciBwcm90b2NvbC4KKyAgIFRoaXMgc3RydWN0dXJlIGhvbGRzIHBvaW50ZXJzIHRvIHRoZSBmdW5jdGlvbnMgcmVxdWlyZWQgYnkgdGhlCisgICA6cmVmOmBCdWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YC4gVGhlIHByb3RvY29sIGRlZmluZXMgaG93CisgICBhbiBleHBvcnRlciBvYmplY3QgY2FuIGV4cG9zZSBpdHMgaW50ZXJuYWwgZGF0YSB0byBjb25zdW1lciBvYmplY3RzLgogCi0gICAuLiBjOm1lbWJlcjo6IGdldGJ1ZmZlcnByb2MgYmZfZ2V0YnVmZmVyCisuLiBjOm1lbWJlcjo6IGdldGJ1ZmZlcnByb2MgUHlCdWZmZXJQcm9jcy5iZl9nZXRidWZmZXIKIAotICAgICAgVGhpcyBzaG91bGQgZmlsbCBhIDpjOnR5cGU6YFB5X2J1ZmZlcmAgd2l0aCB0aGUgbmVjZXNzYXJ5IGRhdGEgZm9yCi0gICAgICBleHBvcnRpbmcgdGhlIHR5cGUuICBUaGUgc2lnbmF0dXJlIG9mIDpkYXRhOmBnZXRidWZmZXJwcm9jYCBpcyBgYGludAotICAgICAgKFB5T2JqZWN0ICpvYmosIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKWBgLiAgKm9iaiogaXMgdGhlIG9iamVjdCB0bwotICAgICAgZXhwb3J0LCAqdmlldyogaXMgdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0IHRvIGZpbGwsIGFuZCAqZmxhZ3MqIGdpdmVzCi0gICAgICB0aGUgY29uZGl0aW9ucyB0aGUgY2FsbGVyIHdhbnRzIHRoZSBtZW1vcnkgdW5kZXIuICAoU2VlCi0gICAgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIGZvciBhbGwgZmxhZ3MuKSAgOmM6bWVtYmVyOmBiZl9nZXRidWZmZXJgIGlzCi0gICAgICByZXNwb25zaWJsZSBmb3IgZmlsbGluZyAqdmlldyogd2l0aCB0aGUgYXBwcm9wcmlhdGUgaW5mb3JtYXRpb24uCi0gICAgICAoOmM6ZnVuYzpgUHlCdWZmZXJfRmlsbFZpZXdgIGNhbiBiZSB1c2VkIGluIHNpbXBsZSBjYXNlcy4pICBTZWUKLSAgICAgIDpjOnR5cGU6YFB5X2J1ZmZlcmBccyBkb2NzIGZvciB3aGF0IG5lZWRzIHRvIGJlIGZpbGxlZCBpbi4KKyAgIFRoZSBzaWduYXR1cmUgb2YgdGhpcyBmdW5jdGlvbiBpczo6CisKKyAgICAgICBpbnQgKFB5T2JqZWN0ICpleHBvcnRlciwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpOworCisgICBIYW5kbGUgYSByZXF1ZXN0IHRvICpleHBvcnRlciogdG8gZmlsbCBpbiAqdmlldyogYXMgc3BlY2lmaWVkIGJ5ICpmbGFncyouCisgICBFeGNlcHQgZm9yIHBvaW50ICgzKSwgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBNVVNUIHRha2UgdGhlc2UKKyAgIHN0ZXBzOgorCisgICAoMSkgQ2hlY2sgaWYgdGhlIHJlcXVlc3QgY2FuIGJlIG1ldC4gSWYgbm90LCByYWlzZSA6YzpkYXRhOmBQeUV4Y19CdWZmZXJFcnJvcmAsCisgICAgICAgc2V0IDpjOmRhdGE6YHZpZXctPm9iamAgdG8gKk5VTEwqIGFuZCByZXR1cm4gLTEuCisKKyAgICgyKSBGaWxsIGluIHRoZSByZXF1ZXN0ZWQgZmllbGRzLgorCisgICAoMykgSW5jcmVtZW50IGFuIGludGVybmFsIGNvdW50ZXIgZm9yIHRoZSBudW1iZXIgb2YgZXhwb3J0cy4KKworICAgKDQpIFNldCA6YzpkYXRhOmB2aWV3LT5vYmpgIHRvICpleHBvcnRlciogYW5kIGluY3JlbWVudCA6YzpkYXRhOmB2aWV3LT5vYmpgLgorCisgICAoNSkgUmV0dXJuIDAuCisKKyAgIElmICpleHBvcnRlciogaXMgcGFydCBvZiBhIGNoYWluIG9yIHRyZWUgb2YgYnVmZmVyIHByb3ZpZGVycywgdHdvIG1haW4KKyAgIHNjaGVtZXMgY2FuIGJlIHVzZWQ6CisKKyAgICogUmUtZXhwb3J0OiBFYWNoIG1lbWJlciBvZiB0aGUgdHJlZSBhY3RzIGFzIHRoZSBleHBvcnRpbmcgb2JqZWN0IGFuZAorICAgICBzZXRzIDpjOmRhdGE6YHZpZXctPm9iamAgdG8gYSBuZXcgcmVmZXJlbmNlIHRvIGl0c2VsZi4KKworICAgKiBSZWRpcmVjdDogVGhlIGJ1ZmZlciByZXF1ZXN0IGlzIHJlZGlyZWN0ZWQgdG8gdGhlIHJvb3Qgb2JqZWN0IG9mIHRoZQorICAgICB0cmVlLiBIZXJlLCA6YzpkYXRhOmB2aWV3LT5vYmpgIHdpbGwgYmUgYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSByb290CisgICAgIG9iamVjdC4KKworICAgVGhlIGluZGl2aWR1YWwgZmllbGRzIG9mICp2aWV3KiBhcmUgZGVzY3JpYmVkIGluIHNlY3Rpb24KKyAgIDpyZWY6YEJ1ZmZlciBzdHJ1Y3R1cmUgPGJ1ZmZlci1zdHJ1Y3R1cmU+YCwgdGhlIHJ1bGVzIGhvdyBhbiBleHBvcnRlcgorICAgbXVzdCByZWFjdCB0byBzcGVjaWZpYyByZXF1ZXN0cyBhcmUgaW4gc2VjdGlvbgorICAgOnJlZjpgQnVmZmVyIHJlcXVlc3QgdHlwZXMgPGJ1ZmZlci1yZXF1ZXN0LXR5cGVzPmAuCisKKyAgIEFsbCBtZW1vcnkgcG9pbnRlZCB0byBpbiB0aGUgOmM6dHlwZTpgUHlfYnVmZmVyYCBzdHJ1Y3R1cmUgYmVsb25ncyB0bworICAgdGhlIGV4cG9ydGVyIGFuZCBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGVyZSBhcmUgbm8gY29uc3VtZXJzIGxlZnQuCisgICA6YzptZW1iZXI6YH5QeV9idWZmZXIuZm9ybWF0YCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnNoYXBlYCwKKyAgIDpjOm1lbWJlcjpgflB5X2J1ZmZlci5zdHJpZGVzYCwgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLnN1Ym9mZnNldHNgCisgICBhbmQgOmM6bWVtYmVyOmB+UHlfYnVmZmVyLmludGVybmFsYAorICAgYXJlIHJlYWQtb25seSBmb3IgdGhlIGNvbnN1bWVyLgorCisgICA6YzpmdW5jOmBQeUJ1ZmZlcl9GaWxsSW5mb2AgcHJvdmlkZXMgYW4gZWFzeSB3YXkgb2YgZXhwb3NpbmcgYSBzaW1wbGUKKyAgIGJ5dGVzIGJ1ZmZlciB3aGlsZSBkZWFsaW5nIGNvcnJlY3RseSB3aXRoIGFsbCByZXF1ZXN0IHR5cGVzLgorCisgICA6YzpmdW5jOmBQeU9iamVjdF9HZXRCdWZmZXJgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgorCisuLiBjOm1lbWJlcjo6IHJlbGVhc2VidWZmZXJwcm9jIFB5QnVmZmVyUHJvY3MuYmZfcmVsZWFzZWJ1ZmZlcgorCisgICBUaGUgc2lnbmF0dXJlIG9mIHRoaXMgZnVuY3Rpb24gaXM6OgorCisgICAgICAgdm9pZCAoUHlPYmplY3QgKmV4cG9ydGVyLCBQeV9idWZmZXIgKnZpZXcpOworCisgICBIYW5kbGUgYSByZXF1ZXN0IHRvIHJlbGVhc2UgdGhlIHJlc291cmNlcyBvZiB0aGUgYnVmZmVyLiBJZiBubyByZXNvdXJjZXMKKyAgIG5lZWQgdG8gYmUgcmVsZWFzZWQsIDpjOm1lbWJlcjpgUHlCdWZmZXJQcm9jcy5iZl9yZWxlYXNlYnVmZmVyYCBtYXkgYmUKKyAgICpOVUxMKi4gT3RoZXJ3aXNlLCBhIHN0YW5kYXJkIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlCisgICB0aGVzZSBvcHRpb25hbCBzdGVwczoKKworICAgKDEpIERlY3JlbWVudCBhbiBpbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIGV4cG9ydHMuCisKKyAgICgyKSBJZiB0aGUgY291bnRlciBpcyAwLCBmcmVlIGFsbCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoICp2aWV3Ki4KKworICAgVGhlIGV4cG9ydGVyIE1VU1QgdXNlIHRoZSA6YzptZW1iZXI6YH5QeV9idWZmZXIuaW50ZXJuYWxgIGZpZWxkIHRvIGtlZXAKKyAgIHRyYWNrIG9mIGJ1ZmZlci1zcGVjaWZpYyByZXNvdXJjZXMuIFRoaXMgZmllbGQgaXMgZ3VhcmFudGVlZCB0byByZW1haW4KKyAgIGNvbnN0YW50LCB3aGlsZSBhIGNvbnN1bWVyIE1BWSBwYXNzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYnVmZmVyIGFzIHRoZQorICAgKnZpZXcqIGFyZ3VtZW50LgogCiAKLSAgIC4uIGM6bWVtYmVyOjogcmVsZWFzZWJ1ZmZlcnByb2MgYmZfcmVsZWFzZWJ1ZmZlcgorICAgVGhpcyBmdW5jdGlvbiBNVVNUIE5PVCBkZWNyZW1lbnQgOmM6ZGF0YTpgdmlldy0+b2JqYCwgc2luY2UgdGhhdCBpcworICAgZG9uZSBhdXRvbWF0aWNhbGx5IGluIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgICh0aGlzIHNjaGVtZSBpcworICAgdXNlZnVsIGZvciBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzKS4KIAotICAgICAgVGhpcyBzaG91bGQgcmVsZWFzZSB0aGUgcmVzb3VyY2VzIG9mIHRoZSBidWZmZXIuICBUaGUgc2lnbmF0dXJlIG9mCi0gICAgICA6YzpkYXRhOmByZWxlYXNlYnVmZmVycHJvY2AgaXMgYGB2b2lkIChQeU9iamVjdCAqb2JqLCBQeV9idWZmZXIgKnZpZXcpYGAuCi0gICAgICBJZiB0aGUgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaXMgbm90IHByb3ZpZGVkIChpLmUuIGl0IGlzCi0gICAgICAqTlVMTCopLCB0aGVuIGl0IGRvZXMgbm90IGV2ZXIgbmVlZCB0byBiZSBjYWxsZWQuCiAKLSAgICAgIFRoZSBleHBvcnRlciBvZiB0aGUgYnVmZmVyIGludGVyZmFjZSBtdXN0IG1ha2Ugc3VyZSB0aGF0IGFueSBtZW1vcnkKLSAgICAgIHBvaW50ZWQgdG8gaW4gdGhlIDpjOnR5cGU6YFB5X2J1ZmZlcmAgc3RydWN0dXJlIHJlbWFpbnMgdmFsaWQgdW50aWwKLSAgICAgIHJlbGVhc2VidWZmZXIgaXMgY2FsbGVkLiAgRXhwb3J0ZXJzIHdpbGwgbmVlZCB0byBkZWZpbmUgYQotICAgICAgOmM6ZGF0YTpgYmZfcmVsZWFzZWJ1ZmZlcmAgZnVuY3Rpb24gaWYgdGhleSBjYW4gcmUtYWxsb2NhdGUgdGhlaXIgbWVtb3J5LAotICAgICAgc3RyaWRlcywgc2hhcGUsIHN1Ym9mZnNldHMsIG9yIGZvcm1hdCB2YXJpYWJsZXMgd2hpY2ggdGhleSBtaWdodCBzaGFyZQotICAgICAgdGhyb3VnaCB0aGUgc3RydWN0IGJ1ZmZlcmluZm8uCi0KLSAgICAgIFNlZSA6YzpmdW5jOmBQeUJ1ZmZlcl9SZWxlYXNlYC4KKyAgIDpjOmZ1bmM6YFB5QnVmZmVyX1JlbGVhc2VgIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBjb25zdW1lciB0aGF0CisgICB3cmFwcyB0aGlzIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IGQxYjU3ZDkuLjJhYzUxZGYgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTYsMzggKzYsNzIgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIHNlY3Rpb25hdXRob3I6OiBNYXJjLUFuZHLDqSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogR2VvcmcgQnJhbmRsIDxnZW9yZ0BweXRob24ub3JnPgogCiBVbmljb2RlIE9iamVjdHMKIF5eXl5eXl5eXl5eXl5eXgogCitTaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzkzYCBpbiBQeXRob24gMy4zLCBVbmljb2RlIG9iamVjdHMgaW50ZXJuYWxseQordXNlIGEgdmFyaWV0eSBvZiByZXByZXNlbnRhdGlvbnMsIGluIG9yZGVyIHRvIGFsbG93IGhhbmRsaW5nIHRoZSBjb21wbGV0ZSByYW5nZQorb2YgVW5pY29kZSBjaGFyYWN0ZXJzIHdoaWxlIHN0YXlpbmcgbWVtb3J5IGVmZmljaWVudC4gIFRoZXJlIGFyZSBzcGVjaWFsIGNhc2VzCitmb3Igc3RyaW5ncyB3aGVyZSBhbGwgY29kZSBwb2ludHMgYXJlIGJlbG93IDEyOCwgMjU2LCBvciA2NTUzNjsgb3RoZXJ3aXNlLCBjb2RlCitwb2ludHMgbXVzdCBiZSBiZWxvdyAxMTE0MTEyICh3aGljaCBpcyB0aGUgZnVsbCBVbmljb2RlIHJhbmdlKS4KKworOmM6dHlwZTpgUHlfVU5JQ09ERSpgIGFuZCBVVEYtOCByZXByZXNlbnRhdGlvbnMgYXJlIGNyZWF0ZWQgb24gZGVtYW5kIGFuZCBjYWNoZWQKK2luIHRoZSBVbmljb2RlIG9iamVjdC4gIFRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgcmVwcmVzZW50YXRpb24gaXMgZGVwcmVjYXRlZAorYW5kIGluZWZmaWNpZW50OyBpdCBzaG91bGQgYmUgYXZvaWRlZCBpbiBwZXJmb3JtYW5jZS0gb3IgbWVtb3J5LXNlbnNpdGl2ZQorc2l0dWF0aW9ucy4KKworRHVlIHRvIHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gdGhlIG9sZCBBUElzIGFuZCB0aGUgbmV3IEFQSXMsIHVuaWNvZGUgb2JqZWN0cworY2FuIGludGVybmFsbHkgYmUgaW4gdHdvIHN0YXRlcyBkZXBlbmRpbmcgb24gaG93IHRoZXkgd2VyZSBjcmVhdGVkOgorCisqICJjYW5vbmljYWwiIHVuaWNvZGUgb2JqZWN0cyBhcmUgYWxsIG9iamVjdHMgY3JlYXRlZCBieSBhIG5vbi1kZXByZWNhdGVkCisgIHVuaWNvZGUgQVBJLiAgVGhleSB1c2UgdGhlIG1vc3QgZWZmaWNpZW50IHJlcHJlc2VudGF0aW9uIGFsbG93ZWQgYnkgdGhlCisgIGltcGxlbWVudGF0aW9uLgorCisqICJsZWdhY3kiIHVuaWNvZGUgb2JqZWN0cyBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoIG9uZSBvZiB0aGUgZGVwcmVjYXRlZAorICBBUElzICh0eXBpY2FsbHkgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Vbmljb2RlYCkgYW5kIG9ubHkgYmVhciB0aGUKKyAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uOyB5b3Ugd2lsbCBoYXZlIHRvIGNhbGwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBvbiB0aGVtIGJlZm9yZSBjYWxsaW5nIGFueSBvdGhlciBBUEkuCisKKwogVW5pY29kZSBUeXBlCiAiIiIiIiIiIiIiIiIKIAogVGhlc2UgYXJlIHRoZSBiYXNpYyBVbmljb2RlIG9iamVjdCB0eXBlcyB1c2VkIGZvciB0aGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBpbgogUHl0aG9uOgogCisuLiBjOnR5cGU6OiBQeV9VQ1M0CisgICAgICAgICAgICBQeV9VQ1MyCisgICAgICAgICAgICBQeV9VQ1MxCisKKyAgIFRoZXNlIHR5cGVzIGFyZSB0eXBlZGVmcyBmb3IgdW5zaWduZWQgaW50ZWdlciB0eXBlcyB3aWRlIGVub3VnaCB0byBjb250YWluCisgICBjaGFyYWN0ZXJzIG9mIDMyIGJpdHMsIDE2IGJpdHMgYW5kIDggYml0cywgcmVzcGVjdGl2ZWx5LiAgV2hlbiBkZWFsaW5nIHdpdGgKKyAgIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlcnMsIHVzZSA6Yzp0eXBlOmBQeV9VQ1M0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gYzp0eXBlOjogUHlfVU5JQ09ERQogCi0gICBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgc3RvcmFnZSB0eXBlIHdoaWNoIGlzIHVzZWQgYnkgUHl0aG9uIGludGVybmFsbHkgYXMKLSAgIGJhc2lzIGZvciBob2xkaW5nIFVuaWNvZGUgb3JkaW5hbHMuICBQeXRob24ncyBkZWZhdWx0IGJ1aWxkcyB1c2UgYSAxNi1iaXQgdHlwZQotICAgZm9yIDpjOnR5cGU6YFB5X1VOSUNPREVgIGFuZCBzdG9yZSBVbmljb2RlIHZhbHVlcyBpbnRlcm5hbGx5IGFzIFVDUzIuIEl0IGlzIGFsc28KLSAgIHBvc3NpYmxlIHRvIGJ1aWxkIGEgVUNTNCB2ZXJzaW9uIG9mIFB5dGhvbiAobW9zdCByZWNlbnQgTGludXggZGlzdHJpYnV0aW9ucyBjb21lCi0gICB3aXRoIFVDUzQgYnVpbGRzIG9mIFB5dGhvbikuIFRoZXNlIGJ1aWxkcyB0aGVuIHVzZSBhIDMyLWJpdCB0eXBlIGZvcgotICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYW5kIHN0b3JlIFVuaWNvZGUgZGF0YSBpbnRlcm5hbGx5IGFzIFVDUzQuIE9uIHBsYXRmb3JtcwotICAgd2hlcmUgOmM6dHlwZTpgd2NoYXJfdGAgaXMgYXZhaWxhYmxlIGFuZCBjb21wYXRpYmxlIHdpdGggdGhlIGNob3NlbiBQeXRob24KLSAgIFVuaWNvZGUgYnVpbGQgdmFyaWFudCwgOmM6dHlwZTpgUHlfVU5JQ09ERWAgaXMgYSB0eXBlZGVmIGFsaWFzIGZvcgotICAgOmM6dHlwZTpgd2NoYXJfdGAgdG8gZW5oYW5jZSBuYXRpdmUgcGxhdGZvcm0gY29tcGF0aWJpbGl0eS4gT24gYWxsIG90aGVyCi0gICBwbGF0Zm9ybXMsIDpjOnR5cGU6YFB5X1VOSUNPREVgIGlzIGEgdHlwZWRlZiBhbGlhcyBmb3IgZWl0aGVyIDpjOnR5cGU6YHVuc2lnbmVkCi0gICBzaG9ydGAgKFVDUzIpIG9yIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmdgIChVQ1M0KS4KKyAgIFRoaXMgaXMgYSB0eXBlZGVmIG9mIDpjOnR5cGU6YHdjaGFyX3RgLCB3aGljaCBpcyBhIDE2LWJpdCB0eXBlIG9yIDMyLWJpdCB0eXBlCisgICBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLgogCi1Ob3RlIHRoYXQgVUNTMiBhbmQgVUNTNCBQeXRob24gYnVpbGRzIGFyZSBub3QgYmluYXJ5IGNvbXBhdGlibGUuIFBsZWFzZSBrZWVwCi10aGlzIGluIG1pbmQgd2hlbiB3cml0aW5nIGV4dGVuc2lvbnMgb3IgaW50ZXJmYWNlcy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgdGhpcyB3YXMgYSAxNi1iaXQgdHlwZSBvciBhIDMyLWJpdCB0eXBlIGRlcGVuZGluZyBvbgorICAgICAgd2hldGhlciB5b3Ugc2VsZWN0ZWQgYSAibmFycm93IiBvciAid2lkZSIgVW5pY29kZSB2ZXJzaW9uIG9mIFB5dGhvbiBhdAorICAgICAgYnVpbGQgdGltZS4KIAogCi0uLiBjOnR5cGU6OiBQeVVuaWNvZGVPYmplY3QKKy4uIGM6dHlwZTo6IFB5QVNDSUlPYmplY3QKKyAgICAgICAgICAgIFB5Q29tcGFjdFVuaWNvZGVPYmplY3QKKyAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdAogCi0gICBUaGlzIHN1YnR5cGUgb2YgOmM6dHlwZTpgUHlPYmplY3RgIHJlcHJlc2VudHMgYSBQeXRob24gVW5pY29kZSBvYmplY3QuCisgICBUaGVzZSBzdWJ0eXBlcyBvZiA6Yzp0eXBlOmBQeU9iamVjdGAgcmVwcmVzZW50IGEgUHl0aG9uIFVuaWNvZGUgb2JqZWN0LiAgSW4KKyAgIGFsbW9zdCBhbGwgY2FzZXMsIHRoZXkgc2hvdWxkbid0IGJlIHVzZWQgZGlyZWN0bHksIHNpbmNlIGFsbCBBUEkgZnVuY3Rpb25zCisgICB0aGF0IGRlYWwgd2l0aCBVbmljb2RlIG9iamVjdHMgdGFrZSBhbmQgcmV0dXJuIDpjOnR5cGU6YFB5T2JqZWN0YCBwb2ludGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzp2YXI6OiBQeVR5cGVPYmplY3QgUHlVbmljb2RlX1R5cGUKQEAgLTQ1LDEwICs3OSwxMCBAQAogICAgVGhpcyBpbnN0YW5jZSBvZiA6Yzp0eXBlOmBQeVR5cGVPYmplY3RgIHJlcHJlc2VudHMgdGhlIFB5dGhvbiBVbmljb2RlIHR5cGUuICBJdAogICAgaXMgZXhwb3NlZCB0byBQeXRob24gY29kZSBhcyBgYHN0cmBgLgogCisKIFRoZSBmb2xsb3dpbmcgQVBJcyBhcmUgcmVhbGx5IEMgbWFjcm9zIGFuZCBjYW4gYmUgdXNlZCB0byBkbyBmYXN0IGNoZWNrcyBhbmQgdG8KIGFjY2VzcyBpbnRlcm5hbCByZWFkLW9ubHkgZGF0YSBvZiBVbmljb2RlIG9iamVjdHM6CiAKLQogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfQ2hlY2soUHlPYmplY3QgKm8pCiAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgKm8qIGlzIGEgVW5pY29kZSBvYmplY3Qgb3IgYW4gaW5zdGFuY2Ugb2YgYSBVbmljb2RlCkBAIC02MSwyOCArOTUsMTA2IEBACiAgICBzdWJ0eXBlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfU0laRShQeU9iamVjdCAqbykKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JFQURZKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdC4gICpvKiBoYXMgdG8gYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QKLSAgIGNoZWNrZWQpLgorICAgRW5zdXJlIHRoZSBzdHJpbmcgb2JqZWN0ICpvKiBpcyBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICByZXF1aXJlZCBiZWZvcmUgdXNpbmcgYW55IG9mIHRoZSBhY2Nlc3MgbWFjcm9zIGRlc2NyaWJlZCBiZWxvdy4KKworICAgLi4gWFhYIGV4cGFuZCBvbiB3aGVuIGl0IGlzIG5vdCByZXF1aXJlZAorCisgICBSZXR1cm5zIDAgb24gc3VjY2VzcyBhbmQgLTEgd2l0aCBhbiBleGNlcHRpb24gc2V0IG9uIGZhaWx1cmUsIHdoaWNoIGluCisgICBwYXJ0aWN1bGFyIGhhcHBlbnMgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlPYmplY3QgKm8pCiAKLSAgIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgb2JqZWN0J3MgaW50ZXJuYWwgYnVmZmVyIGluIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhCi0gICA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3RgIChub3QgY2hlY2tlZCkuCisgICBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgVW5pY29kZSBzdHJpbmcsIGluIGNvZGUgcG9pbnRzLiAgKm8qIGhhcyB0byBiZSBhCisgICBVbmljb2RlIG9iamVjdCBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24gKG5vdCBjaGVja2VkKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9BU19VTklDT0RFKFB5T2JqZWN0ICpvKQorLi4gYzpmdW5jdGlvbjo6IFB5X1VDUzEqIFB5VW5pY29kZV8xQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzIqIFB5VW5pY29kZV8yQllURV9EQVRBKFB5T2JqZWN0ICpvKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5VW5pY29kZV80QllURV9EQVRBKFB5T2JqZWN0ICpvKQogCi0gICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBpbnRlcm5hbCA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIG9iamVjdC4gICpvKgotICAgaGFzIHRvIGJlIGEgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGNhc3QgdG8gVUNTMSwgVUNTMiBvciBVQ1M0CisgICBpbnRlZ2VyIHR5cGVzIGZvciBkaXJlY3QgY2hhcmFjdGVyIGFjY2Vzcy4gIE5vIGNoZWNrcyBhcmUgcGVyZm9ybWVkIGlmIHRoZQorICAgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIGhhcyB0aGUgY29ycmVjdCBjaGFyYWN0ZXIgc2l6ZTsgdXNlCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAgdG8gc2VsZWN0IHRoZSByaWdodCBtYWNyby4gIE1ha2Ugc3VyZQorICAgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURZYCBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlIGFjY2Vzc2luZyB0aGlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCi0uLiBjOmZ1bmN0aW9uOjogY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisuLiBjOm1hY3JvOjogUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQKIAotICAgUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgaW50ZXJuYWwgYnVmZmVyIG9mIHRoZSBvYmplY3QuICpvKiBoYXMgdG8gYmUgYQotICAgOmM6dHlwZTpgUHlVbmljb2RlT2JqZWN0YCAobm90IGNoZWNrZWQpLgorICAgUmV0dXJuIHZhbHVlcyBvZiB0aGUgOmM6ZnVuYzpgUHlVbmljb2RlX0tJTkRgIG1hY3JvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9LSU5EKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gb25lIG9mIHRoZSBQeVVuaWNvZGUga2luZCBjb25zdGFudHMgKHNlZSBhYm92ZSkgdGhhdCBpbmRpY2F0ZSBob3cgbWFueQorICAgYnl0ZXMgcGVyIGNoYXJhY3RlciB0aGlzIFVuaWNvZGUgb2JqZWN0IHVzZXMgdG8gc3RvcmUgaXRzIGRhdGEuICAqbyogaGFzIHRvCisgICBiZSBhIFVuaWNvZGUgb2JqZWN0IGluIHRoZSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiAobm90IGNoZWNrZWQpLgorCisgICAuLiBYWFggZG9jdW1lbnQgIjAiIHJldHVybiB2YWx1ZT8KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5VW5pY29kZV9EQVRBKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gYSB2b2lkIHBvaW50ZXIgdG8gdGhlIHJhdyB1bmljb2RlIGJ1ZmZlci4gICpvKiBoYXMgdG8gYmUgYSBVbmljb2RlCisgICBvYmplY3QgaW4gdGhlICJjYW5vbmljYWwiIHJlcHJlc2VudGF0aW9uIChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5VW5pY29kZV9XUklURShpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgdmFsdWUpCisKKyAgIFdyaXRlIGludG8gYSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gKmRhdGEqIChhcyBvYnRhaW5lZCB3aXRoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfREFUQWApLiAgVGhpcyBtYWNybyBkb2VzIG5vdCBkbyBhbnkgc2FuaXR5IGNoZWNrcyBhbmQgaXMKKyAgIGludGVuZGVkIGZvciB1c2FnZSBpbiBsb29wcy4gIFRoZSBjYWxsZXIgc2hvdWxkIGNhY2hlIHRoZSAqa2luZCogdmFsdWUgYW5kCisgICAqZGF0YSogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIG90aGVyIG1hY3JvIGNhbGxzLiAgKmluZGV4KiBpcyB0aGUgaW5kZXggaW4KKyAgIHRoZSBzdHJpbmcgKHN0YXJ0cyBhdCAwKSBhbmQgKnZhbHVlKiBpcyB0aGUgbmV3IGNvZGUgcG9pbnQgdmFsdWUgd2hpY2ggc2hvdWxkCisgICBiZSB3cml0dGVuIHRvIHRoYXQgbG9jYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SRUFEKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY29kZSBwb2ludCBmcm9tIGEgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uICpkYXRhKiAoYXMgb2J0YWluZWQgd2l0aAorICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RBVEFgKS4gIE5vIGNoZWNrcyBvciByZWFkeSBjYWxscyBhcmUgcGVyZm9ybWVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCBQeVVuaWNvZGVfUkVBRF9DSEFSKFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90IGluZGV4KQorCisgICBSZWFkIGEgY2hhcmFjdGVyIGZyb20gYSBVbmljb2RlIG9iamVjdCAqbyosIHdoaWNoIG11c3QgYmUgaW4gdGhlICJjYW5vbmljYWwiCisgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRGAgaWYgeW91CisgICBkbyBtdWx0aXBsZSBjb25zZWN1dGl2ZSByZWFkcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShQeU9iamVjdCAqbykKKworICAgUmV0dXJuIHRoZSBtYXhpbXVtIGNvZGUgcG9pbnQgdGhhdCBpcyBzdWl0YWJsZSBmb3IgY3JlYXRpbmcgYW5vdGhlciBzdHJpbmcKKyAgIGJhc2VkIG9uICpvKiwgd2hpY2ggbXVzdCBiZSBpbiB0aGUgImNhbm9uaWNhbCIgcmVwcmVzZW50YXRpb24uICBUaGlzIGlzCisgICBhbHdheXMgYW4gYXBwcm94aW1hdGlvbiBidXQgbW9yZSBlZmZpY2llbnQgdGhhbiBpdGVyYXRpbmcgb3ZlciB0aGUgc3RyaW5nLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCkKQEAgLTkwLDYgKzIwMiw0NiBAQAogICAgQ2xlYXIgdGhlIGZyZWUgbGlzdC4gUmV0dXJuIHRoZSB0b3RhbCBudW1iZXIgb2YgZnJlZWQgaXRlbXMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dFVF9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24sIGluCisgICBjb2RlIHVuaXRzICh0aGlzIGluY2x1ZGVzIHN1cnJvZ2F0ZSBwYWlycyBhcyAyIHVuaXRzKS4gICpvKiBoYXMgdG8gYmUgYQorICAgVW5pY29kZSBvYmplY3QgKG5vdCBjaGVja2VkKS4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIFVuaWNvZGUgQVBJLCBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0dFVF9MRU5HVEhgLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKFB5T2JqZWN0ICpvKQorCisgICBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIGRlcHJlY2F0ZWQgOmM6dHlwZTpgUHlfVU5JQ09ERWAgcmVwcmVzZW50YXRpb24gaW4KKyAgIGJ5dGVzLiAgKm8qIGhhcyB0byBiZSBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSBVbmljb2RlIEFQSSwgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9HRVRfTEVOR1RIYC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FTX1VOSUNPREUoUHlPYmplY3QgKm8pCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciogUHlVbmljb2RlX0FTX0RBVEEoUHlPYmplY3QgKm8pCisKKyAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0LiAgVGhlCisgICBgYEFTX0RBVEFgYCBmb3JtIGNhc3RzIHRoZSBwb2ludGVyIHRvIDpjOnR5cGU6YGNvbnN0IGNoYXIgKmAuICAqbyogaGFzIHRvIGJlCisgICBhIFVuaWNvZGUgb2JqZWN0IChub3QgY2hlY2tlZCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIG1hY3JvIGlzIG5vdyBpbmVmZmljaWVudCAtLSBiZWNhdXNlIGluIG1hbnkgY2FzZXMgdGhlCisgICAgICA6Yzp0eXBlOmBQeV9VTklDT0RFYCByZXByZXNlbnRhdGlvbiBkb2VzIG5vdCBleGlzdCBhbmQgbmVlZHMgdG8gYmUgY3JlYXRlZAorICAgICAgLS0gYW5kIGNhbiBmYWlsIChyZXR1cm4gKk5VTEwqIHdpdGggYW4gZXhjZXB0aW9uIHNldCkuICBUcnkgdG8gcG9ydCB0aGUKKyAgICAgIGNvZGUgdG8gdXNlIHRoZSBuZXcgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIG1hY3JvcyBvciB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9XUklURWAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX1JFQURgLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgVW5pY29kZSBBUEksIHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIHRoZQorICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX25CWVRFX0RBVEFgIGZhbWlseSBvZiBtYWNyb3MuCisKKwogVW5pY29kZSBDaGFyYWN0ZXIgUHJvcGVydGllcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCkBAIC0xNjYsMTYgKzMxOCwyNSBAQAogCiAgICBSZXR1cm4gdGhlIGNoYXJhY3RlciAqY2gqIGNvbnZlcnRlZCB0byBsb3dlciBjYXNlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZXMgc2ltcGxlIGNhc2UgbWFwcGluZ3MuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUgUHlfVU5JQ09ERV9UT1VQUEVSKFB5X1VOSUNPREUgY2gpCiAKICAgIFJldHVybiB0aGUgY2hhcmFjdGVyICpjaCogY29udmVydGVkIHRvIHVwcGVyIGNhc2UuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBzaW1wbGUgY2FzZSBtYXBwaW5ncy4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSBQeV9VTklDT0RFX1RPVElUTEUoUHlfVU5JQ09ERSBjaCkKIAogICAgUmV0dXJuIHRoZSBjaGFyYWN0ZXIgKmNoKiBjb252ZXJ0ZWQgdG8gdGl0bGUgY2FzZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VzIHNpbXBsZSBjYXNlIG1hcHBpbmdzLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfVU5JQ09ERV9UT0RFQ0lNQUwoUHlfVU5JQ09ERSBjaCkKIApAQCAtMTk1LDMxICszNTYsNjYgQEAKICAgIHBvc3NpYmxlLiAgVGhpcyBtYWNybyBkb2VzIG5vdCByYWlzZSBleGNlcHRpb25zLgogCiAKLVBsYWluIFB5X1VOSUNPREUKLSIiIiIiIiIiIiIiIiIiIiIKK1RoZXNlIEFQSXMgY2FuIGJlIHVzZWQgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6CisKKy4uIGM6bWFjcm86OiBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkKKworICAgQ2hlY2sgaWYgKmNoKiBpcyBhbiBoaWdoIHN1cnJvZ2F0ZSAoYGAweEQ4MDAgPD0gY2ggPD0gMHhEQkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGNoKQorCisgICBDaGVjayBpZiAqY2gqIGlzIGEgbG93IHN1cnJvZ2F0ZSAoYGAweERDMDAgPD0gY2ggPD0gMHhERkZGYGApLgorCisuLiBjOm1hY3JvOjogUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KQorCisgICBKb2luIHR3byBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgcmV0dXJuIGEgc2luZ2xlIFB5X1VDUzQgdmFsdWUuCisgICAqaGlnaCogYW5kICpsb3cqIGFyZSByZXNwZWN0aXZlbHkgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHN1cnJvZ2F0ZXMgaW4gYQorICAgc3Vycm9nYXRlIHBhaXIuCisKKworQ3JlYXRpbmcgYW5kIGFjY2Vzc2luZyBVbmljb2RlIHN0cmluZ3MKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCiAKIFRvIGNyZWF0ZSBVbmljb2RlIG9iamVjdHMgYW5kIGFjY2VzcyB0aGVpciBiYXNpYyBzZXF1ZW5jZSBwcm9wZXJ0aWVzLCB1c2UgdGhlc2UKIEFQSXM6CiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IHNpemUsIFB5X1VDUzQgbWF4Y2hhcikKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorICAgQ3JlYXRlIGEgbmV3IFVuaWNvZGUgb2JqZWN0LiAgKm1heGNoYXIqIHNob3VsZCBiZSB0aGUgdHJ1ZSBtYXhpbXVtIGNvZGUgcG9pbnQKKyAgIHRvIGJlIHBsYWNlZCBpbiB0aGUgc3RyaW5nLiAgQXMgYW4gYXBwcm94aW1hdGlvbiwgaXQgY2FuIGJlIHJvdW5kZWQgdXAgdG8gdGhlCisgICBuZWFyZXN0IHZhbHVlIGluIHRoZSBzZXF1ZW5jZSAxMjcsIDI1NSwgNjU1MzUsIDExMTQxMTEuCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGZyb20gdGhlIFB5X1VOSUNPREUgYnVmZmVyICp1KiBvZiB0aGUgZ2l2ZW4gc2l6ZS4gKnUqCi0gICBtYXkgYmUgKk5VTEwqIHdoaWNoIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzCi0gICByZXNwb25zaWJpbGl0eSB0byBmaWxsIGluIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldwotICAgb2JqZWN0LiBJZiB0aGUgYnVmZmVyIGlzIG5vdCAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LgotICAgVGhlcmVmb3JlLCBtb2RpZmljYXRpb24gb2YgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSoKLSAgIGlzICpOVUxMKi4KKyAgIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBhbGxvY2F0ZSBhIG5ldyBVbmljb2RlIG9iamVjdC4gIE9iamVjdHMKKyAgIGNyZWF0ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbiBhcmUgbm90IHJlc2l6YWJsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKGludCBraW5kLCBjb25zdCB2b2lkICpidWZmZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKKyAgIENyZWF0ZSBhIG5ldyBVbmljb2RlIG9iamVjdCB3aXRoIHRoZSBnaXZlbiAqa2luZCogKHBvc3NpYmxlIHZhbHVlcyBhcmUKKyAgIDpjOm1hY3JvOmBQeVVuaWNvZGVfMUJZVEVfS0lORGAgZXRjLiwgYXMgcmV0dXJuZWQgYnkKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9LSU5EYCkuICBUaGUgKmJ1ZmZlciogbXVzdCBwb2ludCB0byBhbiBhcnJheSBvZiAqc2l6ZSoKKyAgIHVuaXRzIG9mIDEsIDIgb3IgNCBieXRlcyBwZXIgY2hhcmFjdGVyLCBhcyBnaXZlbiBieSB0aGUga2luZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogCi0gICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBjaGFyIGJ1ZmZlciAqdSouICBUaGUgYnl0ZXMgd2lsbCBiZSBpbnRlcnByZXRlZAotICAgYXMgYmVpbmcgVVRGLTggZW5jb2RlZC4gICp1KiBtYXkgYWxzbyBiZSAqTlVMTCogd2hpY2gKLSAgIGNhdXNlcyB0aGUgY29udGVudHMgdG8gYmUgdW5kZWZpbmVkLiBJdCBpcyB0aGUgdXNlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZpbGwgaW4KLSAgIHRoZSBuZWVkZWQgZGF0YS4gIFRoZSBidWZmZXIgaXMgY29waWVkIGludG8gdGhlIG5ldyBvYmplY3QuIElmIHRoZSBidWZmZXIgaXMgbm90Ci0gICAqTlVMTCosIHRoZSByZXR1cm4gdmFsdWUgbWlnaHQgYmUgYSBzaGFyZWQgb2JqZWN0LiBUaGVyZWZvcmUsIG1vZGlmaWNhdGlvbiBvZgotICAgdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdCBpcyBvbmx5IGFsbG93ZWQgd2hlbiAqdSogaXMgKk5VTEwqLgorICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgZnJvbSB0aGUgY2hhciBidWZmZXIgKnUqLiAgVGhlIGJ5dGVzIHdpbGwgYmUKKyAgIGludGVycHJldGVkIGFzIGJlaW5nIFVURi04IGVuY29kZWQuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4gSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkCisgICBvYmplY3QsIGkuZS4gbW9kaWZpY2F0aW9uIG9mIHRoZSBkYXRhIGlzIG5vdCBhbGxvd2VkLgorCisgICBJZiAqdSogaXMgKk5VTEwqLCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVVuaWNvZGVgCisgICB3aXRoIHRoZSBidWZmZXIgc2V0IHRvICpOVUxMKi4gIFRoaXMgdXNhZ2UgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZgorICAgOmM6ZnVuYzpgUHlVbmljb2RlX05ld2AuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQpAQCAtMjYwLDE4ICs0NTYsMjcgQEAKICAgIHwgOmF0dHI6YCVsZGAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsaWAgICAgICAgfCBsb25nICAgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsaSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsdWAgICAgICAgfCB1bnNpZ25lZCBsb25nICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsdSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbGRgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGQiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCVsbGlgICAgICAgfCBsb25nIGxvbmcgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbGkiKWBgLiAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCVsbHVgICAgICAgfCB1bnNpZ25lZCBsb25nIGxvbmcgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiVsbHUiKWBgLiAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6ZGAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6ZCIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmF0dHI6YCV6aWAgICAgICAgfCBQeV9zc2l6ZV90ICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6aSIpYGAuICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YCV6dWAgICAgICAgfCBzaXplX3QgICAgICAgICAgICAgIHwgRXhhY3RseSBlcXVpdmFsZW50IHRvICAgICAgICAgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgYGBwcmludGYoIiV6dSIpYGAuICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTMyMiw0NyArNTI3LDE4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgYGAiJWxsZCJgYCBhbmQgYGAiJWxsdSJgYCBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIGBgIiVsaSJgYCwgYGAiJWxsaSJgYCBhbmQgYGAiJXppImBgIGFkZGVkLgorCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJncykKIAogICAgSWRlbnRpY2FsIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tRm9ybWF0YCBleGNlcHQgdGhhdCBpdCB0YWtlcyBleGFjdGx5IHR3bwogICAgYXJndW1lbnRzLgogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSShQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKLSAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IHJlcGxhY2luZyBhbGwgZGVjaW1hbCBkaWdpdHMgaW4KLSAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIGJ5IEFTQ0lJIGRpZ2l0cyAwLS05Ci0gICBhY2NvcmRpbmcgdG8gdGhlaXIgZGVjaW1hbCB2YWx1ZS4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uCi0gICBvY2N1cnMuCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCi0gICA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIsICpOVUxMKiBpZiAqdW5pY29kZSogaXMgbm90IGEgVW5pY29kZSBvYmplY3QuCi0gICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVkCi0gICBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4gdXNlZCBpbgotICAgbW9zdCBDIGZ1bmN0aW9ucy4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZUNvcHkoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIENyZWF0ZSBhIGNvcHkgb2YgYSBVbmljb2RlIHN0cmluZyBlbmRpbmcgd2l0aCBhIG51bCBjaGFyYWN0ZXIuIFJldHVybiAqTlVMTCoKLSAgIGFuZCByYWlzZSBhIDpleGM6YE1lbW9yeUVycm9yYCBleGNlcHRpb24gb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSwKLSAgIG90aGVyd2lzZSByZXR1cm4gYSBuZXcgYWxsb2NhdGVkIGJ1ZmZlciAodXNlIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgIHRvIGZyZWUKLSAgIHRoZSBidWZmZXIpLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nIG1heSBjb250YWluCi0gICBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkIHdoZW4KLSAgIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdC4KLQotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdChQeU9iamVjdCAqb2JqLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoUHlPYmplY3QgKm9iaiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENvZXJjZSBhbiBlbmNvZGVkIG9iamVjdCAqb2JqKiB0byBhbiBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIGEgcmVmZXJlbmNlIHdpdGgKICAgIGluY3JlbWVudGVkIHJlZmNvdW50LgpAQCAtMzc5LDE1ICs1NTUsMjI3IEBACiAgICBkZWNyZWYnaW5nIHRoZSByZXR1cm5lZCBvYmplY3RzLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9HZXRMZW5ndGgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIFJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdCwgaW4gY29kZSBwb2ludHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsIFB5X3NzaXplX3QgaG93X21hbnkpCisKKyAgIENvcHkgY2hhcmFjdGVycyBmcm9tIG9uZSBVbmljb2RlIG9iamVjdCBpbnRvIGFub3RoZXIuICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zCisgICBjaGFyYWN0ZXIgY29udmVyc2lvbiB3aGVuIG5lY2Vzc2FyeSBhbmQgZmFsbHMgYmFjayB0byA6YzpmdW5jOmBtZW1jcHlgIGlmCisgICBwb3NzaWJsZS4gIFJldHVybnMgYGAtMWBgIGFuZCBzZXRzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvciwgb3RoZXJ3aXNlIHJldHVybnMKKyAgIGBgMGBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgZmlsbF9jaGFyKQorCisgICBGaWxsIGEgc3RyaW5nIHdpdGggYSBjaGFyYWN0ZXI6IHdyaXRlICpmaWxsX2NoYXIqIGludG8KKyAgIGBgdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdYGAuCisKKyAgIEZhaWwgaWYgKmZpbGxfY2hhciogaXMgYmlnZ2VyIHRoYW4gdGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3Rlciwgb3IgaWYgdGhlCisgICBzdHJpbmcgaGFzIG1vcmUgdGhhbiAxIHJlZmVyZW5jZS4KKworICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygd3JpdHRlbiBjaGFyYWN0ZXIsIG9yIHJldHVybiBgYC0xYGAgYW5kIHJhaXNlIGFuCisgICBleGNlcHRpb24gb24gZXJyb3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1dyaXRlQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2hhcmFjdGVyKQorCisgICBXcml0ZSBhIGNoYXJhY3RlciB0byBhIHN0cmluZy4gIFRoZSBzdHJpbmcgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCB0aHJvdWdoCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4gIFNpbmNlIFVuaWNvZGUgc3RyaW5ncyBhcmUgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLAorICAgdGhlIHN0cmluZyBtdXN0IG5vdCBiZSBzaGFyZWQsIG9yIGhhdmUgYmVlbiBoYXNoZWQgeWV0LgorCisgICBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB0aGF0ICp1bmljb2RlKiBpcyBhIFVuaWNvZGUgb2JqZWN0LCB0aGF0IHRoZSBpbmRleCBpcworICAgbm90IG91dCBvZiBib3VuZHMsIGFuZCB0aGF0IHRoZSBvYmplY3QgY2FuIGJlIG1vZGlmaWVkIHNhZmVseSAoaS5lLiB0aGF0IGl0CisgICBpdHMgcmVmZXJlbmNlIGNvdW50IGlzIG9uZSksIGluIGNvbnRyYXN0IHRvIHRoZSBtYWNybyB2ZXJzaW9uCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfV1JJVEVfQ0hBUmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0IFB5VW5pY29kZV9SZWFkQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCkKKworICAgUmVhZCBhIGNoYXJhY3RlciBmcm9tIGEgc3RyaW5nLiAgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhhdCAqdW5pY29kZSogaXMgYQorICAgVW5pY29kZSBvYmplY3QgYW5kIHRoZSBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kcywgaW4gY29udHJhc3QgdG8gdGhlIG1hY3JvCisgICB2ZXJzaW9uIDpjOmZ1bmM6YFB5VW5pY29kZV9SRUFEX0NIQVJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9TdWJzdHJpbmcoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorCisgICBSZXR1cm4gYSBzdWJzdHJpbmcgb2YgKnN0ciosIGZyb20gY2hhcmFjdGVyIGluZGV4ICpzdGFydCogKGluY2x1ZGVkKSB0bworICAgY2hhcmFjdGVyIGluZGV4ICplbmQqIChleGNsdWRlZCkuICBOZWdhdGl2ZSBpbmRpY2VzIGFyZSBub3Qgc3VwcG9ydGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVUNTNCogUHlVbmljb2RlX0FzVUNTNChQeU9iamVjdCAqdSwgUHlfVUNTNCAqYnVmZmVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGJ1ZmxlbiwgaW50IGNvcHlfbnVsbCkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgVUNTNCBidWZmZXIsIGluY2x1ZGluZyBhIG51bGwgY2hhcmFjdGVyLCBpZgorICAgKmNvcHlfbnVsbCogaXMgc2V0LiAgUmV0dXJucyAqTlVMTCogYW5kIHNldHMgYW4gZXhjZXB0aW9uIG9uIGVycm9yIChpbgorICAgcGFydGljdWxhciwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqYnVmbGVuKiBpcyBzbWFsbGVyIHRoYW4gdGhlIGxlbmd0aCBvZgorICAgKnUqKS4gICpidWZmZXIqIGlzIHJldHVybmVkIG9uIHN1Y2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VQ1M0KiBQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqdSkKKworICAgQ29weSB0aGUgc3RyaW5nICp1KiBpbnRvIGEgbmV3IFVDUzQgYnVmZmVyIHRoYXQgaXMgYWxsb2NhdGVkIHVzaW5nCisgICA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLiAgSWYgdGhpcyBmYWlscywgKk5VTEwqIGlzIHJldHVybmVkIHdpdGggYQorICAgOmV4YzpgTWVtb3J5RXJyb3JgIHNldC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRGVwcmVjYXRlZCBQeV9VTklDT0RFIEFQSXMKKyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiCisKKy4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKworVGhlc2UgQVBJIGZ1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCB3aXRoIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiA6cGVwOmAzOTNgLgorRXh0ZW5zaW9uIG1vZHVsZXMgY2FuIGNvbnRpbnVlIHVzaW5nIHRoZW0sIGFzIHRoZXkgd2lsbCBub3QgYmUgcmVtb3ZlZCBpbiBQeXRob24KKzMueCwgYnV0IG5lZWQgdG8gYmUgYXdhcmUgdGhhdCB0aGVpciB1c2UgY2FuIG5vdyBjYXVzZSBwZXJmb3JtYW5jZSBhbmQgbWVtb3J5IGhpdHMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwgUHlfc3NpemVfdCBzaXplKQorCisgICBDcmVhdGUgYSBVbmljb2RlIG9iamVjdCBmcm9tIHRoZSBQeV9VTklDT0RFIGJ1ZmZlciAqdSogb2YgdGhlIGdpdmVuIHNpemUuICp1KgorICAgbWF5IGJlICpOVUxMKiB3aGljaCBjYXVzZXMgdGhlIGNvbnRlbnRzIHRvIGJlIHVuZGVmaW5lZC4gSXQgaXMgdGhlIHVzZXIncworICAgcmVzcG9uc2liaWxpdHkgdG8gZmlsbCBpbiB0aGUgbmVlZGVkIGRhdGEuICBUaGUgYnVmZmVyIGlzIGNvcGllZCBpbnRvIHRoZSBuZXcKKyAgIG9iamVjdC4KKworICAgSWYgdGhlIGJ1ZmZlciBpcyBub3QgKk5VTEwqLCB0aGUgcmV0dXJuIHZhbHVlIG1pZ2h0IGJlIGEgc2hhcmVkIG9iamVjdC4KKyAgIFRoZXJlZm9yZSwgbW9kaWZpY2F0aW9uIG9mIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QgaXMgb25seSBhbGxvd2VkIHdoZW4KKyAgICp1KiBpcyAqTlVMTCouCisKKyAgIElmIHRoZSBidWZmZXIgaXMgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfUkVBRFlgIG11c3QgYmUgY2FsbGVkIG9uY2UgdGhlCisgICBzdHJpbmcgY29udGVudCBoYXMgYmVlbiBmaWxsZWQgYmVmb3JlIHVzaW5nIGFueSBvZiB0aGUgYWNjZXNzIG1hY3JvcyBzdWNoIGFzCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfS0lORGAuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGFgIG9yCisgICA6YzpmdW5jOmBQeVVuaWNvZGVfTmV3YC4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfVU5JQ09ERSogUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgcmVhZC1vbmx5IHBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0J3MgaW50ZXJuYWwKKyAgIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciwgb3IgKk5VTEwqIG9uIGVycm9yLiBUaGlzIHdpbGwgY3JlYXRlIHRoZQorICAgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QgaWYgaXQgaXMgbm90IHlldAorICAgYXZhaWxhYmxlLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBzdHJpbmcgbWF5IGNvbnRhaW4KKyAgIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycywgd2hpY2ggd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbgorICAgdXNlZCBpbiBtb3N0IEMgZnVuY3Rpb25zLgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0YCwKKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9TdWJzdHJpbmdgLCA6YzpmdW5jOmBQeVVuaWNvZGVfUmVhZENoYXJgIG9yIHNpbWlsYXIgbmV3CisgICBBUElzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgcmVwbGFjaW5nIGFsbCBkZWNpbWFsIGRpZ2l0cyBpbgorICAgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgQVNDSUkgZGlnaXRzIDAtLTkKKyAgIGFjY29yZGluZyB0byB0aGVpciBkZWNpbWFsIHZhbHVlLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gb2NjdXJzLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9VTklDT0RFKiBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKKworICAgTGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlYCwgYnV0IGFsc28gc2F2ZXMgdGhlIDpjOmZ1bmM6YFB5X1VOSUNPREVgCisgICBhcnJheSBsZW5ndGggaW4gKnNpemUqLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmBQeV9VTklDT0RFKmAgc3RyaW5nCisgICBtYXkgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUKKyAgIHRydW5jYXRlZCB3aGVuIHVzZWQgaW4gbW9zdCBDIGZ1bmN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IFB5X1VOSUNPREUqIFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICp1bmljb2RlKQorCisgICBDcmVhdGUgYSBjb3B5IG9mIGEgVW5pY29kZSBzdHJpbmcgZW5kaW5nIHdpdGggYSBudWwgY2hhcmFjdGVyLiBSZXR1cm4gKk5VTEwqCisgICBhbmQgcmFpc2UgYSA6ZXhjOmBNZW1vcnlFcnJvcmAgZXhjZXB0aW9uIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUsCisgICBvdGhlcndpc2UgcmV0dXJuIGEgbmV3IGFsbG9jYXRlZCBidWZmZXIgKHVzZSA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlCisgICB0aGUgYnVmZmVyKS4gTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERSpgIHN0cmluZyBtYXkKKyAgIGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLCB3aGljaCB3b3VsZCBjYXVzZSB0aGUgc3RyaW5nIHRvIGJlCisgICB0cnVuY2F0ZWQgd2hlbiB1c2VkIGluIG1vc3QgQyBmdW5jdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisgICBQbGVhc2UgbWlncmF0ZSB0byB1c2luZyA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAgb3Igc2ltaWxhciBuZXcgQVBJcy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSBkZXByZWNhdGVkIDpjOnR5cGU6YFB5X1VOSUNPREVgIHJlcHJlc2VudGF0aW9uLCBpbgorICAgY29kZSB1bml0cyAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuCisKKyAgIFBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRMZW5ndGhgLgorCisKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0Zyb21PYmplY3QoUHlPYmplY3QgKm9iaikKIAogICAgU2hvcnRjdXQgZm9yIGBgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KG9iaiwgTlVMTCwgInN0cmljdCIpYGAgd2hpY2ggaXMgdXNlZAogICAgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgd2hlbmV2ZXIgY29lcmNpb24gdG8gVW5pY29kZSBpcyBuZWVkZWQuCiAKLUlmIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyA6Yzp0eXBlOmB3Y2hhcl90YCBhbmQgcHJvdmlkZXMgYSBoZWFkZXIgZmlsZSB3Y2hhci5oLAotUHl0aG9uIGNhbiBpbnRlcmZhY2UgZGlyZWN0bHkgdG8gdGhpcyB0eXBlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLgotU3VwcG9ydCBpcyBvcHRpbWl6ZWQgaWYgUHl0aG9uJ3Mgb3duIDpjOnR5cGU6YFB5X1VOSUNPREVgIHR5cGUgaXMgaWRlbnRpY2FsIHRvCi10aGUgc3lzdGVtJ3MgOmM6dHlwZTpgd2NoYXJfdGAuCisKK0xvY2FsZSBFbmNvZGluZworIiIiIiIiIiIiIiIiIiIiCisKK1RoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBjYW4gYmUgdXNlZCB0byBkZWNvZGUgdGV4dCBmcm9tIHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4KKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBpbnQgc3Vycm9nYXRlZXNjYXBlKQorCisgICBEZWNvZGUgYSBzdHJpbmcgZnJvbSB0aGUgY3VycmVudCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBkZWNvZGVyIGlzIHN0cmljdCBpZgorICAgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgZXF1YWwgdG8gemVybywgb3RoZXJ3aXNlIGl0IHVzZXMgdGhlCisgICBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkgdG8gZXNjYXBlIHVuZGVjb2RhYmxlCisgICBieXRlcy4gSWYgYSBieXRlIHNlcXVlbmNlIGNhbiBiZSBkZWNvZGVkIGFzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciBhbmQKKyAgICpzdXJyb2dhdGVlc2NhcGUqIGlzIG5vdCBlcXVhbCB0byB6ZXJvLCB0aGUgYnl0ZSBzZXF1ZW5jZSBpcyBlc2NhcGVkIHVzaW5nCisgICB0aGUgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgaW5zdGVhZCBvZiBiZWluZyBkZWNvZGVkLiAgKnN0cioKKyAgIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQgY2Fubm90IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgorCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgVXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYCB0byBkZWNvZGUgYSBzdHJpbmcgZnJvbQorICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgKHRoZSBsb2NhbGUgZW5jb2RpbmcgcmVhZCBhdAorICAgICAgUHl0aG9uIHN0YXJ0dXApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoY29uc3QgY2hhciAqc3RyLCBpbnQgc3Vycm9nYXRlZXNjYXBlKQorCisgICBTaW1pbGFyIHRvIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplYCwgYnV0IGNvbXB1dGUgdGhlIHN0cmluZworICAgbGVuZ3RoIHVzaW5nIDpjOmZ1bmM6YHN0cmxlbmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUxvY2FsZShQeU9iamVjdCAqdW5pY29kZSwgaW50IHN1cnJvZ2F0ZWVzY2FwZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZW5jb2RlciBpcworICAgc3RyaWN0IGlmICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSBpdCB1c2VzIHRoZQorICAgYGAnc3Vycm9nYXRlZXNjYXBlJ2BgIGVycm9yIGhhbmRsZXIgKDpwZXA6YDM4M2ApLiBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYAorICAgb2JqZWN0LiAqc3RyKiBjYW5ub3QgY29udGFpbiBlbWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuCisKKyAgIC4uIHNlZWFsc286OgorCisgICAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGAgdG8gZW5jb2RlIGEgc3RyaW5nIHRvCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCAodGhlIGxvY2FsZSBlbmNvZGluZyByZWFkIGF0CisgICAgICBQeXRob24gc3RhcnR1cCkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIEZpbGUgU3lzdGVtIEVuY29kaW5nCkBAIC00MzAsNiArODE4LDEzIEBACiAgICBJZiA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBub3Qgc2V0LCBmYWxsIGJhY2sgdG8gdGhlCiAgICBsb2NhbGUgZW5jb2RpbmcuCiAKKyAgIC4uIHNlZWFsc286OgorCisgICAgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBpcyBpbml0aWFsaXplZCBhdCBzdGFydHVwIGZyb20gdGhlCisgICAgICBsb2NhbGUgZW5jb2RpbmcgYW5kIGNhbm5vdCBiZSBtb2RpZmllZCBsYXRlci4gSWYgeW91IG5lZWQgdG8gZGVjb2RlIGEKKyAgICAgIHN0cmluZyBmcm9tIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZywgdXNlCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZWAuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBVc2UgYGAnc3RyaWN0J2BgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KIApAQCAtNDU4LDYgKzg1MywxMyBAQAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCisgICAuLiBzZWVhbHNvOjoKKworICAgICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgaW5pdGlhbGl6ZWQgYXQgc3RhcnR1cCBmcm9tIHRoZQorICAgICAgbG9jYWxlIGVuY29kaW5nIGFuZCBjYW5ub3QgYmUgbW9kaWZpZWQgbGF0ZXIuIElmIHlvdSBuZWVkIHRvIGVuY29kZSBhCisgICAgICBzdHJpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLCB1c2UKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVMb2NhbGVgLgorCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCkBAIC00NzksOSArODgxLDkgQEAKICAgIENvcHkgdGhlIFVuaWNvZGUgb2JqZWN0IGNvbnRlbnRzIGludG8gdGhlIDpjOnR5cGU6YHdjaGFyX3RgIGJ1ZmZlciAqdyouICBBdCBtb3N0CiAgICAqc2l6ZSogOmM6dHlwZTpgd2NoYXJfdGAgY2hhcmFjdGVycyBhcmUgY29waWVkIChleGNsdWRpbmcgYSBwb3NzaWJseSB0cmFpbGluZwogICAgMC10ZXJtaW5hdGlvbiBjaGFyYWN0ZXIpLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgOmM6dHlwZTpgd2NoYXJfdGAgY2hhcmFjdGVycwotICAgY29waWVkIG9yIC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90YAorICAgY29waWVkIG9yIC0xIGluIGNhc2Ugb2YgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Yzp0eXBlOmB3Y2hhcl90KmAKICAgIHN0cmluZyBtYXkgb3IgbWF5IG5vdCBiZSAwLXRlcm1pbmF0ZWQuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcgotICAgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIDpjOnR5cGU6YHdjaGFyX3RgIHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQgaW4gY2FzZSB0aGlzIGlzCisgICB0byBtYWtlIHN1cmUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZyBpcyAwLXRlcm1pbmF0ZWQgaW4gY2FzZSB0aGlzIGlzCiAgICByZXF1aXJlZCBieSB0aGUgYXBwbGljYXRpb24uIEFsc28sIG5vdGUgdGhhdCB0aGUgOmM6dHlwZTpgd2NoYXJfdCpgIHN0cmluZwogICAgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoIHdvdWxkIGNhdXNlIHRoZSBzdHJpbmcgdG8gYmUgdHJ1bmNhdGVkCiAgICB3aGVuIHVzZWQgd2l0aCBtb3N0IEMgZnVuY3Rpb25zLgpAQCAtNDk3LDEyICs4OTksMzIgQEAKICAgIFJldHVybnMgYSBidWZmZXIgYWxsb2NhdGVkIGJ5IDpjOmZ1bmM6YFB5TWVtX0FsbG9jYCAodXNlCiAgICA6YzpmdW5jOmBQeU1lbV9GcmVlYCB0byBmcmVlIGl0KSBvbiBzdWNjZXNzLiBPbiBlcnJvciwgcmV0dXJucyAqTlVMTCosCiAgICAqXCpzaXplKiBpcyB1bmRlZmluZWQgYW5kIHJhaXNlcyBhIDpleGM6YE1lbW9yeUVycm9yYC4gTm90ZSB0aGF0IHRoZQotICAgcmVzdWx0aW5nIDpjOnR5cGU6YHdjaGFyX3QqYCBzdHJpbmcgbWlnaHQgY29udGFpbiBudWxsIGNoYXJhY3RlcnMsIHdoaWNoCisgICByZXN1bHRpbmcgOmM6dHlwZTpgd2NoYXJfdGAgc3RyaW5nIG1pZ2h0IGNvbnRhaW4gbnVsbCBjaGFyYWN0ZXJzLCB3aGljaAogICAgd291bGQgY2F1c2UgdGhlIHN0cmluZyB0byBiZSB0cnVuY2F0ZWQgd2hlbiB1c2VkIHdpdGggbW9zdCBDIGZ1bmN0aW9ucy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorVUNTNCBTdXBwb3J0CisiIiIiIiIiIiIiIiIKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIFhYWCBhcmUgdGhlc2UgbWVhbnQgdG8gYmUgcHVibGljPworCisuLiBjOmZ1bmN0aW9uOjogc2l6ZV90IFB5X1VDUzRfc3RybGVuKGNvbnN0IFB5X1VDUzQgKnUpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJjcHkoUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RybmNweShQeV9VQ1M0ICpzMSwgY29uc3QgUHlfVUNTNCAqczIsIHNpemVfdCBuKQorICAgICAgICAgICAgICAgIFB5X1VDUzQqIFB5X1VDUzRfc3RyY2F0KFB5X1VDUzQgKnMxLCBjb25zdCBQeV9VQ1M0ICpzMikKKyAgICAgICAgICAgICAgICBpbnQgUHlfVUNTNF9zdHJjbXAoY29uc3QgUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyKQorICAgICAgICAgICAgICAgIGludCBQeV9VQ1M0X3N0cm5jbXAoY29uc3QgUHlfVUNTNCAqczEsIGNvbnN0IFB5X1VDUzQgKnMyLCBzaXplX3QgbikKKyAgICAgICAgICAgICAgICBQeV9VQ1M0KiBQeV9VQ1M0X3N0cmNocihjb25zdCBQeV9VQ1M0ICpzLCBQeV9VQ1M0IGMpCisgICAgICAgICAgICAgICAgUHlfVUNTNCogUHlfVUNTNF9zdHJyY2hyKGNvbnN0IFB5X1VDUzQgKnMsIFB5X1VDUzQgYykKKworICAgVGhlc2UgdXRpbGl0eSBmdW5jdGlvbnMgd29yayBvbiBzdHJpbmdzIG9mIDpjOnR5cGU6YFB5X1VDUzRgIGNoYXJhY3RlcnMgYW5kCisgICBvdGhlcndpc2UgYmVoYXZlIGxpa2UgdGhlIEMgc3RhbmRhcmQgbGlicmFyeSBmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lLgorCisKIC4uIF9idWlsdGluY29kZWNzOgogCiBCdWlsdC1pbiBDb2RlY3MKQEAgLTUzNyw3ICs5NTksOCBAQAogVGhlc2UgYXJlIHRoZSBnZW5lcmljIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgZW5jb2RlZCBzdHJpbmcgKnMqLgogICAgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZSBwYXJhbWV0ZXJzIG9mIHRoZSBzYW1lIG5hbWUKQEAgLTU0Niw3ICs5NjksMTggQEAKICAgIHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGUoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzIG9iamVjdC4KKyAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZQorICAgbmFtZSBpbiB0aGUgVW5pY29kZSA6bWV0aDpgZW5jb2RlYCBtZXRob2QuIFRoZSBjb2RlYyB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cAorICAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQorICAgdGhlIGNvZGVjLgorCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyICpzKiBvZiB0aGUgZ2l2ZW4gKnNpemUqIGFuZCByZXR1cm4gYSBQeXRob24KICAgIGJ5dGVzIG9iamVjdC4gICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUKQEAgLTU1NCwxNCArOTg4LDkgQEAKICAgIHRvIGJlIHVzZWQgaXMgbG9va2VkIHVwIHVzaW5nIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkuICBSZXR1cm4gKk5VTEwqIGlmIGFuCiAgICBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzIG9iamVjdC4KLSAgICplbmNvZGluZyogYW5kICplcnJvcnMqIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgc2FtZQotICAgbmFtZSBpbiB0aGUgVW5pY29kZSA6bWV0aDpgZW5jb2RlYCBtZXRob2QuIFRoZSBjb2RlYyB0byBiZSB1c2VkIGlzIGxvb2tlZCB1cAotICAgdXNpbmcgdGhlIFB5dGhvbiBjb2RlYyByZWdpc3RyeS4gUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmdgLgogCiAKIFVURi04IENvZGVjcwpAQCAtNTc2LDcgKzEwMDUsOCBAQAogICAgKnMqLiBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKIAogICAgSWYgKmNvbnN1bWVkKiBpcyAqTlVMTCosIGJlaGF2ZSBsaWtlIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVVVEY4YC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgdHJhaWxpbmcgaW5jb21wbGV0ZSBVVEYtOCBieXRlIHNlcXVlbmNlcyB3aWxsIG5vdCBiZQpAQCAtNTg0LDEzICsxMDE0LDYgQEAKICAgIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVVEYtOCBhbmQKLSAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5Ci0gICB0aGUgY29kZWMuCi0KLQogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQogCiAgICBFbmNvZGUgYSBVbmljb2RlIG9iamVjdCB1c2luZyBVVEYtOCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCkBAIC01OTgsMTMgKzEwMjEsNDggQEAKICAgIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICpzaXplKQorCisgICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGVuY29kaW5nIChVVEYtOCkgb2YgdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQKKyAgIHN0b3JlIHRoZSBzaXplIG9mIHRoZSBlbmNvZGVkIHJlcHJlc2VudGF0aW9uIChpbiBieXRlcykgaW4gKnNpemUqLiAgKnNpemUqCisgICBjYW4gYmUgKk5VTEwqLCBpbiB0aGlzIGNhc2Ugbm8gc2l6ZSB3aWxsIGJlIHN0b3JlZC4KKworICAgSW4gdGhlIGNhc2Ugb2YgYW4gZXJyb3IsICpOVUxMKiBpcyByZXR1cm5lZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQgYW5kIG5vCisgICAqc2l6ZSogaXMgc3RvcmVkLgorCisgICBUaGlzIGNhY2hlcyB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24gb2YgdGhlIHN0cmluZyBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZAorICAgc3Vic2VxdWVudCBjYWxscyB3aWxsIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHNhbWUgYnVmZmVyLiAgVGhlIGNhbGxlciBpcyBub3QKKyAgIHJlc3BvbnNpYmxlIGZvciBkZWFsbG9jYXRpbmcgdGhlIGJ1ZmZlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gYzpmdW5jdGlvbjo6IGNoYXIqIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEFzIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VURjhBbmRTaXplYCwgYnV0IGRvZXMgbm90IHN0b3JlIHRoZSBzaXplLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY4KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciAqcyogb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVVEYtOCBhbmQKKyAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nYCBvciA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZWAuCisKKwogVVRGLTMyIENvZGVjcwogIiIiIiIiIiIiIiIiIgogCiBUaGVzZSBhcmUgdGhlIFVURi0zMiBjb2RlYyBBUElzOgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjMyKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlcikKIAogICAgRGVjb2RlICpzaXplKiBieXRlcyBmcm9tIGEgVVRGLTMyIGVuY29kZWQgYnVmZmVyIHN0cmluZyBhbmQgcmV0dXJuIHRoZQogICAgY29ycmVzcG9uZGluZyBVbmljb2RlIG9iamVjdC4gICplcnJvcnMqIChpZiBub24tKk5VTEwqKSBkZWZpbmVzIHRoZSBlcnJvcgpAQCAtNjI1LDE0ICsxMDgzLDEzIEBACiAgICBBZnRlciBjb21wbGV0aW9uLCAqXCpieXRlb3JkZXIqIGlzIHNldCB0byB0aGUgY3VycmVudCBieXRlIG9yZGVyIGF0IHRoZSBlbmQKICAgIG9mIGlucHV0IGRhdGEuCiAKLSAgIEluIGEgbmFycm93IGJ1aWxkIGNvZGVwb2ludHMgb3V0c2lkZSB0aGUgQk1QIHdpbGwgYmUgZGVjb2RlZCBhcyBzdXJyb2dhdGUgcGFpcnMuCi0KICAgIElmICpieXRlb3JkZXIqIGlzICpOVUxMKiwgdGhlIGNvZGVjIHN0YXJ0cyBpbiBuYXRpdmUgb3JkZXIgbW9kZS4KIAogICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpieXRlb3JkZXIsIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjMyYC4gSWYKICAgICpjb25zdW1lZCogaXMgbm90ICpOVUxMKiwgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWxgIHdpbGwgbm90IHRyZWF0CkBAIC02NDEsNyArMTA5OCwxNSBAQAogICAgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjMyKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMzIgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKKyAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCisgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKIAogICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBVVEYtMzIgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgVW5pY29kZQogICAgZGF0YSBpbiAqcyouICBPdXRwdXQgaXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBieXRlIG9yZGVyOjoKQEAgLTY1OCwxMiArMTEyMyw5IEBACiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTMyIGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCi0gICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgotICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmdgLgogCiAKIFVURi0xNiBDb2RlY3MKQEAgLTY3Miw3ICsxMTM0LDggQEAKIFRoZXNlIGFyZSB0aGUgVVRGLTE2IGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGludCAqYnl0ZW9yZGVyKQogCiAgICBEZWNvZGUgKnNpemUqIGJ5dGVzIGZyb20gYSBVVEYtMTYgZW5jb2RlZCBidWZmZXIgc3RyaW5nIGFuZCByZXR1cm4gdGhlCiAgICBjb3JyZXNwb25kaW5nIFVuaWNvZGUgb2JqZWN0LiAgKmVycm9ycyogKGlmIG5vbi0qTlVMTCopIGRlZmluZXMgdGhlIGVycm9yCkBAIC02OTksNyArMTE2Miw4IEBACiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmJ5dGVvcmRlciwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMTZgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bGAgd2lsbCBub3QgdHJlYXQKQEAgLTcwOCw3ICsxMTcyLDE1IEBACiAgICBudW1iZXIgb2YgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gZGVjb2RlZCB3aWxsIGJlIHN0b3JlZCBpbiAqY29uc3VtZWQqLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVVURjE2KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgYnl0ZW9yZGVyKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGUgc3RyaW5nIHVzaW5nIHRoZSBVVEYtMTYgZW5jb2RpbmcgaW4gbmF0aXZlIGJ5dGUKKyAgIG9yZGVyLiBUaGUgc3RyaW5nIGFsd2F5cyBzdGFydHMgd2l0aCBhIEJPTSBtYXJrLiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuCisgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgaW50IGJ5dGVvcmRlcikKIAogICAgUmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBVVEYtMTYgZW5jb2RlZCB2YWx1ZSBvZiB0aGUgVW5pY29kZQogICAgZGF0YSBpbiAqcyouICBPdXRwdXQgaXMgd3JpdHRlbiBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBieXRlIG9yZGVyOjoKQEAgLTcyNiwxMiArMTE5OCw5IEBACiAKICAgIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIFJldHVybiBhIFB5dGhvbiBieXRlIHN0cmluZyB1c2luZyB0aGUgVVRGLTE2IGVuY29kaW5nIGluIG5hdGl2ZSBieXRlCi0gICBvcmRlci4gVGhlIHN0cmluZyBhbHdheXMgc3RhcnRzIHdpdGggYSBCT00gbWFyay4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLgotICAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmdgLgogCiAKIFVURi03IENvZGVjcwpAQCAtNzQ2LDcgKzEyMTUsOCBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgUHlfc3NpemVfdCAqY29uc3VtZWQpCiAKICAgIElmICpjb25zdW1lZCogaXMgKk5VTEwqLCBiZWhhdmUgbGlrZSA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlVVRGN2AuICBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCB0cmFpbGluZyBpbmNvbXBsZXRlIFVURi03IGJhc2UtNjQgc2VjdGlvbnMgd2lsbCBub3QKQEAgLTc1NCw3ICsxMjI0LDggQEAKICAgIGJ5dGVzIHRoYXQgaGF2ZSBiZWVuIGRlY29kZWQgd2lsbCBiZSBzdG9yZWQgaW4gKmNvbnN1bWVkKi4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJhc2U2NFNldE8sIGludCBiYXNlNjRXaGl0ZVNwYWNlLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVVEY3KGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sIGludCBiYXNlNjRXaGl0ZVNwYWNlLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiBzaXplIHVzaW5nIFVURi03IGFuZAogICAgcmV0dXJuIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkKQEAgLTc2NSw2ICsxMjM2LDExIEBACiAgICBub256ZXJvLCB3aGl0ZXNwYWNlIHdpbGwgYmUgZW5jb2RlZCBpbiBiYXNlLTY0LiAgQm90aCBhcmUgc2V0IHRvIHplcm8gZm9yIHRoZQogICAgUHl0aG9uICJ1dGYtNyIgY29kZWMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEkuCisKKyAgIC4uIFhYWCByZXBsYWNlIHdpdGggd2hhdD8KKwogCiBVbmljb2RlLUVzY2FwZSBDb2RlY3MKICIiIiIiIiIiIiIiIiIiIiIiIiIiIgpAQCAtNzcyLDE5ICsxMjQ4LDEzIEBACiBUaGVzZSBhcmUgdGhlICJVbmljb2RlIEVzY2FwZSIgY29kZWMgQVBJczoKIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBVbmljb2RlLUVzY2FwZSBlbmNvZGVkCiAgICBzdHJpbmcgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgVW5pY29kZS1Fc2NhcGUgYW5kCi0gICByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCi0gICBjb2RlYy4KLQotCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIFVuaWNvZGUtRXNjYXBlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24KQEAgLTc5MiwyNSArMTI2MiwzMCBAQAogICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKKworICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBVbmljb2RlLUVzY2FwZSBhbmQKKyAgIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKKyAgIGNvZGVjLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZ2AuCisKKwogUmF3LVVuaWNvZGUtRXNjYXBlIENvZGVjcwogIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgogCiBUaGVzZSBhcmUgdGhlICJSYXcgVW5pY29kZSBFc2NhcGUiIGNvZGVjIEFQSXM6CiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIENyZWF0ZSBhIFVuaWNvZGUgb2JqZWN0IGJ5IGRlY29kaW5nICpzaXplKiBieXRlcyBvZiB0aGUgUmF3LVVuaWNvZGUtRXNjYXBlCiAgICBlbmNvZGVkIHN0cmluZyAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKGNvbnN0IFB5X1VOSUNPREUgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgY29uc3QgY2hhciAqZXJyb3JzKQotCi0gICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIFJhdy1Vbmljb2RlLUVzY2FwZQotICAgYW5kIHJldHVybiBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQotICAgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcwpAQCAtODE4LDYgKzEyOTMsMTggQEAKICAgIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgogCiAKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCisKKyAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgUmF3LVVuaWNvZGUtRXNjYXBlCisgICBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CisgICB0aGUgY29kZWMuCisKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyA0LjAKKyAgICAgIFBhcnQgb2YgdGhlIG9sZC1zdHlsZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBBUEk7IHBsZWFzZSBtaWdyYXRlIHRvIHVzaW5nCisgICAgICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nYC4KKworCiBMYXRpbi0xIENvZGVjcwogIiIiIiIiIiIiIiIiIiIKIApAQCAtODMxLDE4ICsxMzE4LDIyIEBACiAgICAqcyouICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgTGF0aW4tMSBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgUHl0aG9uIGJ5dGVzCisgICBvYmplY3QuICBFcnJvciBoYW5kbGluZyBpcyAic3RyaWN0Ii4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcworICAgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgTGF0aW4tMSBhbmQKICAgIHJldHVybiBhIFB5dGhvbiBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5CiAgICB0aGUgY29kZWMuCiAKLQotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIExhdGluLTEgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nYC4KIAogCiBBU0NJSSBDb2RlY3MKQEAgLTg1OCwxOCArMTM0OSwyMiBAQAogICAgKnMqLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUgY29kZWMuCiAKIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKKworICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdXNpbmcgQVNDSUkgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBjb25zdCBjaGFyICplcnJvcnMpCiAKICAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgQVNDSUkgYW5kCiAgICByZXR1cm4gYSBQeXRob24gYnl0ZXMgb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieQogICAgdGhlIGNvZGVjLgogCi0KLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIEFTQ0lJIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBhcyBQeXRob24gYnl0ZXMKLSAgIG9iamVjdC4gIEVycm9yIGhhbmRsaW5nIGlzICJzdHJpY3QiLiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzCi0gICByYWlzZWQgYnkgdGhlIGNvZGVjLgorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nYC4KIAogCiBDaGFyYWN0ZXIgTWFwIENvZGVjcwpAQCAtODk4LDcgKzEzOTMsOCBAQAogCiBUaGVzZSBhcmUgdGhlIG1hcHBpbmcgY29kZWMgQVBJczoKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcChjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgQ3JlYXRlIGEgVW5pY29kZSBvYmplY3QgYnkgZGVjb2RpbmcgKnNpemUqIGJ5dGVzIG9mIHRoZSBlbmNvZGVkIHN0cmluZyAqcyogdXNpbmcKICAgIHRoZSBnaXZlbiAqbWFwcGluZyogb2JqZWN0LiAgUmV0dXJuICpOVUxMKiBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCBieSB0aGUKQEAgLTkwOCwxMyArMTQwNCw2IEBACiAgICB0cmVhdGVkIGFzICJ1bmRlZmluZWQgbWFwcGluZyIuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICptYXBwaW5nLCBjb25zdCBjaGFyICplcnJvcnMpCi0KLSAgIEVuY29kZSB0aGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogdXNpbmcgdGhlIGdpdmVuCi0gICAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gYSBQeXRob24gc3RyaW5nIG9iamVjdC4gUmV0dXJuICpOVUxMKiBpZiBhbgotICAgZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlIGNvZGVjLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKm1hcHBpbmcpCiAKICAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiAqbWFwcGluZyogb2JqZWN0IGFuZCByZXR1cm4gdGhlIHJlc3VsdApAQCAtOTI0LDcgKzE0MTMsOCBAQAogVGhlIGZvbGxvd2luZyBjb2RlYyBBUEkgaXMgc3BlY2lhbCBpbiB0aGF0IG1hcHMgVW5pY29kZSB0byBVbmljb2RlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgVHJhbnNsYXRlIGEgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYnVmZmVyIG9mIHRoZSBnaXZlbiAqc2l6ZSogYnkgYXBwbHlpbmcgYQogICAgY2hhcmFjdGVyIG1hcHBpbmcgKnRhYmxlKiB0byBpdCBhbmQgcmV0dXJuIHRoZSByZXN1bHRpbmcgVW5pY29kZSBvYmplY3QuICBSZXR1cm4KQEAgLTkzNyw2ICsxNDI3LDIyIEBACiAgICBhbmQgc2VxdWVuY2VzIHdvcmsgd2VsbC4gIFVubWFwcGVkIGNoYXJhY3RlciBvcmRpbmFscyAob25lcyB3aGljaCBjYXVzZSBhCiAgICA6ZXhjOmBMb29rdXBFcnJvcmApIGFyZSBsZWZ0IHVudG91Y2hlZCBhbmQgYXJlIGNvcGllZCBhcy1pcy4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSS4KKworICAgLi4gWFhYIHJlcGxhY2Ugd2l0aCB3aGF0PworCisKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgY29uc3QgY2hhciAqZXJyb3JzKQorCisgICBFbmNvZGUgdGhlIDpjOnR5cGU6YFB5X1VOSUNPREVgIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gKnNpemUqIHVzaW5nIHRoZSBnaXZlbgorICAgKm1hcHBpbmcqIG9iamVjdCBhbmQgcmV0dXJuIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuIFJldHVybiAqTlVMTCogaWYgYW4KKyAgIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDQuMAorICAgICAgUGFydCBvZiB0aGUgb2xkLXN0eWxlIDpjOnR5cGU6YFB5X1VOSUNPREVgIEFQSTsgcGxlYXNlIG1pZ3JhdGUgdG8gdXNpbmcKKyAgICAgIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmdgLgogCiAKIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzCkBAIC05NTMsNyArMTQ1OSw4IEBACiAgICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9EZWNvZGVNQkNTU3RhdGVmdWwoY29uc3QgY2hhciAqcywgaW50IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpjb25zdW1lZCkKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0RlY29kZU1CQ1NTdGF0ZWZ1bChjb25zdCBjaGFyICpzLCBpbnQgc2l6ZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBpbnQgKmNvbnN1bWVkKQogCiAgICBJZiAqY29uc3VtZWQqIGlzICpOVUxMKiwgYmVoYXZlIGxpa2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZU1CQ1NgLiBJZgogICAgKmNvbnN1bWVkKiBpcyBub3QgKk5VTEwqLCA6YzpmdW5jOmBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsYCB3aWxsIG5vdCBkZWNvZGUKQEAgLTk2MSwxOCArMTQ2OCwzMSBAQAogICAgaW4gKmNvbnN1bWVkKi4KIAogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCisKKyAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIE1CQ1MgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcworICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisKKworLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2UoaW50IGNvZGVfcGFnZSwgUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKworICAgRW5jb2RlIHRoZSBVbmljb2RlIG9iamVjdCB1c2luZyB0aGUgc3BlY2lmaWVkIGNvZGUgcGFnZSBhbmQgcmV0dXJuIGEgUHl0aG9uCisgICBieXRlcyBvYmplY3QuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGJ5IHRoZSBjb2RlYy4gVXNlCisgICA6YzpkYXRhOmBDUF9BQ1BgIGNvZGUgcGFnZSB0byBnZXQgdGhlIE1CQ1MgZW5jb2Rlci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUsIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgRW5jb2RlIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBidWZmZXIgb2YgdGhlIGdpdmVuICpzaXplKiB1c2luZyBNQkNTIGFuZCByZXR1cm4KICAgIGEgUHl0aG9uIGJ5dGVzIG9iamVjdC4gIFJldHVybiAqTlVMTCogaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgYnkgdGhlCiAgICBjb2RlYy4KIAotCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCi0KLSAgIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHVzaW5nIE1CQ1MgYW5kIHJldHVybiB0aGUgcmVzdWx0IGFzIFB5dGhvbiBieXRlcwotICAgb2JqZWN0LiAgRXJyb3IgaGFuZGxpbmcgaXMgInN0cmljdCIuICBSZXR1cm4gKk5VTEwqIGlmIGFuIGV4Y2VwdGlvbiB3YXMKLSAgIHJhaXNlZCBieSB0aGUgY29kZWMuCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisgICAgICBQYXJ0IG9mIHRoZSBvbGQtc3R5bGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgQVBJOyBwbGVhc2UgbWlncmF0ZSB0byB1c2luZworICAgICAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzTUJDU1N0cmluZ2Agb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlYC4KIAogCiBNZXRob2RzICYgU2xvdHMKQEAgLTEwMTEsNyArMTUzMSw4IEBACiAgICBjaGFyYWN0ZXJzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBzdHJpbmdzLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqdGFibGUsIGNvbnN0IGNoYXIgKmVycm9ycykKKy4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX1RyYW5zbGF0ZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqdGFibGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIAogICAgVHJhbnNsYXRlIGEgc3RyaW5nIGJ5IGFwcGx5aW5nIGEgY2hhcmFjdGVyIG1hcHBpbmcgdGFibGUgdG8gaXQgYW5kIHJldHVybiB0aGUKICAgIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4KQEAgLTEwMzMsMTQgKzE1NTQsMTYgQEAKICAgIFVuaWNvZGUgc3RyaW5nLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1RhaWxtYXRjaChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKy4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1RhaWxtYXRjaChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKIAogICAgUmV0dXJuIDEgaWYgKnN1YnN0ciogbWF0Y2hlcyBgYHN0cltzdGFydDplbmRdYGAgYXQgdGhlIGdpdmVuIHRhaWwgZW5kCiAgICAoKmRpcmVjdGlvbiogPT0gLTEgbWVhbnMgdG8gZG8gYSBwcmVmaXggbWF0Y2gsICpkaXJlY3Rpb24qID09IDEgYSBzdWZmaXggbWF0Y2gpLAogICAgMCBvdGhlcndpc2UuIFJldHVybiBgYC0xYGAgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCisuLiBjOmZ1bmN0aW9uOjogUHlfc3NpemVfdCBQeVVuaWNvZGVfRmluZChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCiAKICAgIFJldHVybiB0aGUgZmlyc3QgcG9zaXRpb24gb2YgKnN1YnN0ciogaW4gYGBzdHJbc3RhcnQ6ZW5kXWBgIHVzaW5nIHRoZSBnaXZlbgogICAgKmRpcmVjdGlvbiogKCpkaXJlY3Rpb24qID09IDEgbWVhbnMgdG8gZG8gYSBmb3J3YXJkIHNlYXJjaCwgKmRpcmVjdGlvbiogPT0gLTEgYQpAQCAtMTA0OSwxMyArMTU3MiwyNyBAQAogICAgb2NjdXJyZWQgYW5kIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQorLi4gYzpmdW5jdGlvbjo6IFB5X3NzaXplX3QgUHlVbmljb2RlX0ZpbmRDaGFyKFB5T2JqZWN0ICpzdHIsIFB5X1VDUzQgY2gsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKKworICAgUmV0dXJuIHRoZSBmaXJzdCBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyICpjaCogaW4gYGBzdHJbc3RhcnQ6ZW5kXWBgIHVzaW5nCisgICB0aGUgZ2l2ZW4gKmRpcmVjdGlvbiogKCpkaXJlY3Rpb24qID09IDEgbWVhbnMgdG8gZG8gYSBmb3J3YXJkIHNlYXJjaCwKKyAgICpkaXJlY3Rpb24qID09IC0xIGEgYmFja3dhcmQgc2VhcmNoKS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGluZGV4IG9mIHRoZQorICAgZmlyc3QgbWF0Y2g7IGEgdmFsdWUgb2YgYGAtMWBgIGluZGljYXRlcyB0aGF0IG5vIG1hdGNoIHdhcyBmb3VuZCwgYW5kIGBgLTJgYAorICAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQgYW5kIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBzZXQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGM6ZnVuY3Rpb246OiBQeV9zc2l6ZV90IFB5VW5pY29kZV9Db3VudChQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiAKICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIG5vbi1vdmVybGFwcGluZyBvY2N1cnJlbmNlcyBvZiAqc3Vic3RyKiBpbgogICAgYGBzdHJbc3RhcnQ6ZW5kXWBgLiAgUmV0dXJuIGBgLTFgYCBpZiBhbiBlcnJvciBvY2N1cnJlZC4KIAogCi0uLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9SZXBsYWNlKFB5T2JqZWN0ICpzdHIsIFB5T2JqZWN0ICpzdWJzdHIsIFB5T2JqZWN0ICpyZXBsc3RyLCBQeV9zc2l6ZV90IG1heGNvdW50KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbHN0ciwgUHlfc3NpemVfdCBtYXhjb3VudCkKIAogICAgUmVwbGFjZSBhdCBtb3N0ICptYXhjb3VudCogb2NjdXJyZW5jZXMgb2YgKnN1YnN0ciogaW4gKnN0ciogd2l0aCAqcmVwbHN0ciogYW5kCiAgICByZXR1cm4gdGhlIHJlc3VsdGluZyBVbmljb2RlIG9iamVjdC4gKm1heGNvdW50KiA9PSAtMSBtZWFucyByZXBsYWNlIGFsbApAQCAtMTA3Niw3ICsxNjEzLDcgQEAKICAgIElTTy04ODU5LTEgaWYgaXQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMiLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBpbnQgUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCAgUHlPYmplY3QgKnJpZ2h0LCAgaW50IG9wKQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsICBQeU9iamVjdCAqcmlnaHQsICBpbnQgb3ApCiAKICAgIFJpY2ggY29tcGFyZSB0d28gdW5pY29kZSBzdHJpbmdzIGFuZCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKQEAgLTExMDMsOCArMTY0MCw4IEBACiAgICBDaGVjayB3aGV0aGVyICplbGVtZW50KiBpcyBjb250YWluZWQgaW4gKmNvbnRhaW5lciogYW5kIHJldHVybiB0cnVlIG9yIGZhbHNlCiAgICBhY2NvcmRpbmdseS4KIAotICAgKmVsZW1lbnQqIGhhcyB0byBjb2VyY2UgdG8gYSBvbmUgZWxlbWVudCBVbmljb2RlIHN0cmluZy4gYGAtMWBgIGlzIHJldHVybmVkIGlmCi0gICB0aGVyZSB3YXMgYW4gZXJyb3IuCisgICAqZWxlbWVudCogaGFzIHRvIGNvZXJjZSB0byBhIG9uZSBlbGVtZW50IFVuaWNvZGUgc3RyaW5nLiBgYC0xYGAgaXMgcmV0dXJuZWQKKyAgIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KIAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZShQeU9iamVjdCAqKnN0cmluZykKQEAgLTExMjMsNyArMTY2MCw2IEBACiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKGNvbnN0IGNoYXIgKnYpCiAKICAgIEEgY29tYmluYXRpb24gb2YgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21TdHJpbmdgIGFuZAotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0ludGVybkluUGxhY2VgLCByZXR1cm5pbmcgZWl0aGVyIGEgbmV3IHVuaWNvZGUgc3RyaW5nIG9iamVjdAotICAgdGhhdCBoYXMgYmVlbiBpbnRlcm5lZCwgb3IgYSBuZXcgKCJvd25lZCIpIHJlZmVyZW5jZSB0byBhbiBlYXJsaWVyIGludGVybmVkCi0gICBzdHJpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUuCi0KKyAgIDpjOmZ1bmM6YFB5VW5pY29kZV9JbnRlcm5JblBsYWNlYCwgcmV0dXJuaW5nIGVpdGhlciBhIG5ldyB1bmljb2RlIHN0cmluZworICAgb2JqZWN0IHRoYXQgaGFzIGJlZW4gaW50ZXJuZWQsIG9yIGEgbmV3ICgib3duZWQiKSByZWZlcmVuY2UgdG8gYW4gZWFybGllcgorICAgaW50ZXJuZWQgc3RyaW5nIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdCBiL0RvYy9jLWFwaS92ZXJ5aGlnaC5yc3QKaW5kZXggNDFjZGQ2Yi4uNDk5ZWIzZSAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3ZlcnloaWdoLnJzdAorKysgYi9Eb2MvYy1hcGkvdmVyeWhpZ2gucnN0CkBAIC05NSwxMiArOTUsNiBAQAogICAgbGVhdmluZyAqY2xvc2VpdCogc2V0IHRvIGBgMGBgIGFuZCAqZmxhZ3MqIHNldCB0byAqTlVMTCouCiAKIAotLi4gYzpmdW5jdGlvbjo6IGludCBQeVJ1bl9TaW1wbGVGaWxlRmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzKQotCi0gICBUaGlzIGlzIGEgc2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gOmM6ZnVuYzpgUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3NgIGJlbG93LAotICAgbGVhdmluZyAqY2xvc2VpdCogc2V0IHRvIGBgMGBgLgotCi0KIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlSdW5fU2ltcGxlRmlsZUV4KEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGNsb3NlaXQpCiAKICAgIFRoaXMgaXMgYSBzaW1wbGlmaWVkIGludGVyZmFjZSB0byA6YzpmdW5jOmBQeVJ1bl9TaW1wbGVGaWxlRXhGbGFnc2AgYmVsb3csCmRpZmYgLS1naXQgYS9Eb2MvY29uZi5weSBiL0RvYy9jb25mLnB5CmluZGV4IDU1NWYyODEuLjZiMDg1ZTAgMTAwNjQ0Ci0tLSBhL0RvYy9jb25mLnB5CisrKyBiL0RvYy9jb25mLnB5CkBAIC05MSw3ICs5MSw3IEBACiB9CiAKICMgT3V0cHV0IGFuIE9wZW5TZWFyY2ggZGVzY3JpcHRpb24gZmlsZS4KLWh0bWxfdXNlX29wZW5zZWFyY2ggPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjInCitodG1sX3VzZV9vcGVuc2VhcmNoID0gJ2h0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJyArIHZlcnNpb24KIAogIyBBZGRpdGlvbmFsIHN0YXRpYyBmaWxlcy4KIGh0bWxfc3RhdGljX3BhdGggPSBbJ3Rvb2xzL3NwaGlueGV4dC9zdGF0aWMnXQpkaWZmIC0tZ2l0IGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdCBiL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKaW5kZXggYzdkN2JkMS4uYTEwMDRhZCAxMDA2NDQKLS0tIGEvRG9jL2RhdGEvcmVmY291bnRzLmRhdAorKysgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CkBAIC00NjUsNiArNDY1LDExIEBACiBQeUZ1bmN0aW9uX05ldzpQeU9iamVjdCo6Y29kZTorMToKIFB5RnVuY3Rpb25fTmV3OlB5T2JqZWN0KjpnbG9iYWxzOisxOgogCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6OisxOgorUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWU6UHlPYmplY3QqOmNvZGU6KzE6CitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZTpQeU9iamVjdCo6Z2xvYmFsczorMToKK1B5RnVuY3Rpb25fTmV3V2l0aFF1YWxOYW1lOlB5T2JqZWN0KjpxdWFsbmFtZTorMToKKwogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOmludDo6OgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpvcDowOgogUHlGdW5jdGlvbl9TZXRDbG9zdXJlOlB5T2JqZWN0KjpjbG9zdXJlOisxOgpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0IGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CmluZGV4IGUxNWRjNzYuLjcxNzAyZTUgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKQEAgLTE2MCw3ICsxNjAsNyBAQAogLi4gY2xhc3M6OiBFeHRlbnNpb24KIAogICAgVGhlIEV4dGVuc2lvbiBjbGFzcyBkZXNjcmliZXMgYSBzaW5nbGUgQyBvciBDKytleHRlbnNpb24gbW9kdWxlIGluIGEgc2V0dXAKLSAgIHNjcmlwdC4gSXQgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGl0cyBjb25zdHJ1Y3RvcgorICAgc2NyaXB0LiBJdCBhY2NlcHRzIHRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgaW4gaXRzIGNvbnN0cnVjdG9yOgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXJndW1lbnQgbmFtZSAgICAgICAgICB8IHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR5cGUgICAgICAgICAgICAgICAgICAgICAgfApAQCAtMTE1NywxMiArMTE1NywxMSBAQAogCiAuLiBmdW5jdGlvbjo6IGdyb2tfZW52aXJvbm1lbnRfZXJyb3IoZXhjWywgcHJlZml4PSdlcnJvcjogJ10pCiAKLSAgIEdlbmVyYXRlIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCAgKDpleGM6YElPRXJyb3JgCi0gICBvciA6ZXhjOmBPU0Vycm9yYCkgZXhjZXB0aW9uIG9iamVjdC4gICBIYW5kbGVzIFB5dGhvbiAxLjUuMSBhbmQgbGF0ZXIgc3R5bGVzLAotICAgYW5kIGRvZXMgd2hhdCBpdCBjYW4gdG8gZGVhbCB3aXRoICBleGNlcHRpb24gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYSBmaWxlbmFtZQotICAgKHdoaWNoIGhhcHBlbnMgd2hlbiB0aGUgZXJyb3IgIGlzIGR1ZSB0byBhIHR3by1maWxlIG9wZXJhdGlvbiwgc3VjaCBhcwotICAgOmZ1bmM6YHJlbmFtZWAgb3IgIDpmdW5jOmBsaW5rYCkuICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzIGEgc3RyaW5nCi0gICBwcmVmaXhlZCAgd2l0aCAqcHJlZml4Ki4KKyAgIEdlbmVyYXRlIGEgdXNlZnVsIGVycm9yIG1lc3NhZ2UgZnJvbSBhbiA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gb2JqZWN0LgorICAgSGFuZGxlcyBQeXRob24gMS41LjEgYW5kIGxhdGVyIHN0eWxlcywgYW5kIGRvZXMgd2hhdCBpdCBjYW4gdG8gZGVhbCB3aXRoCisgICBleGNlcHRpb24gb2JqZWN0cyB0aGF0IGRvbid0IGhhdmUgYSBmaWxlbmFtZSAod2hpY2ggaGFwcGVucyB3aGVuIHRoZSBlcnJvcgorICAgaXMgZHVlIHRvIGEgdHdvLWZpbGUgb3BlcmF0aW9uLCBzdWNoIGFzIDpmdW5jOmByZW5hbWVgIG9yIDpmdW5jOmBsaW5rYCkuCisgICBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFzIGEgc3RyaW5nIHByZWZpeGVkIHdpdGggKnByZWZpeCouCiAKIAogLi4gZnVuY3Rpb246OiBzcGxpdF9xdW90ZWQocykKZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdCBiL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAppbmRleCA3ZmQ5ZjcyLi5lZjk1YWM5IDEwMDY0NAotLS0gYS9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CkBAIC0zMjEsNyArMzIxLDcgQEAKIAogVGhlIDpjb25zdDpgTUVUSF9LRVlXT1JEU2AgYml0IG1heSBiZSBzZXQgaW4gdGhlIHRoaXJkIGZpZWxkIGlmIGtleXdvcmQKIGFyZ3VtZW50cyBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4gIEluIHRoaXMgY2FzZSwgdGhlIEMgZnVuY3Rpb24gc2hvdWxkCi1hY2NlcHQgYSB0aGlyZCBgYFB5T2JqZWN0IFwqYGAgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmRzLgorYWNjZXB0IGEgdGhpcmQgYGBQeU9iamVjdCAqYGAgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmRzLgogVXNlIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc2AgdG8gcGFyc2UgdGhlIGFyZ3VtZW50cyB0byBzdWNoIGEKIGZ1bmN0aW9uLgogCkBAIC0zODQsOSArMzg0LDYgQEAKICAgICAgICAgICBpbXBvcnRzIGl0LiAqLwogICAgICAgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic3BhbSIpOwogCi1BbiBleGFtcGxlIG1heSBiZSBmb3VuZCBpbiB0aGUgZmlsZSA6ZmlsZTpgRGVtby9lbWJlZC9kZW1vLmNgIGluIHRoZSBQeXRob24KLXNvdXJjZSBkaXN0cmlidXRpb24uCi0KIC4uIG5vdGU6OgogCiAgICBSZW1vdmluZyBlbnRyaWVzIGZyb20gYGBzeXMubW9kdWxlc2BgIG9yIGltcG9ydGluZyBjb21waWxlZCBtb2R1bGVzIGludG8KZGlmZiAtLWdpdCBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0IGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKaW5kZXggMzAwMTQxNS4uMzc2ZDA5YSAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKKysrIGIvRG9jL2V4dGVuZGluZy9uZXd0eXBlcy5yc3QKQEAgLTI2LDExICsyNiwxMiBAQAogPT09PT09PT09PQogCiBUaGUgUHl0aG9uIHJ1bnRpbWUgc2VlcyBhbGwgUHl0aG9uIG9iamVjdHMgYXMgdmFyaWFibGVzIG9mIHR5cGUKLTpjOnR5cGU6YFB5T2JqZWN0XCpgLiAgQSA6Yzp0eXBlOmBQeU9iamVjdGAgaXMgbm90IGEgdmVyeSBtYWduaWZpY2VudCBvYmplY3QgLSBpdAotanVzdCBjb250YWlucyB0aGUgcmVmY291bnQgYW5kIGEgcG9pbnRlciB0byB0aGUgb2JqZWN0J3MgInR5cGUgb2JqZWN0Ii4gIFRoaXMgaXMKLXdoZXJlIHRoZSBhY3Rpb24gaXM7IHRoZSB0eXBlIG9iamVjdCBkZXRlcm1pbmVzIHdoaWNoIChDKSBmdW5jdGlvbnMgZ2V0IGNhbGxlZAotd2hlbiwgZm9yIGluc3RhbmNlLCBhbiBhdHRyaWJ1dGUgZ2V0cyBsb29rZWQgdXAgb24gYW4gb2JqZWN0IG9yIGl0IGlzIG11bHRpcGxpZWQKLWJ5IGFub3RoZXIgb2JqZWN0LiAgVGhlc2UgQyBmdW5jdGlvbnMgYXJlIGNhbGxlZCAidHlwZSBtZXRob2RzIi4KKzpjOnR5cGU6YFB5T2JqZWN0XCpgLCB3aGljaCBzZXJ2ZXMgYXMgYSAiYmFzZSB0eXBlIiBmb3IgYWxsIFB5dGhvbiBvYmplY3RzLgorOmM6dHlwZTpgUHlPYmplY3RgIGl0c2VsZiBvbmx5IGNvbnRhaW5zIHRoZSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIHRoZQorb2JqZWN0J3MgInR5cGUgb2JqZWN0Ii4gIFRoaXMgaXMgd2hlcmUgdGhlIGFjdGlvbiBpczsgdGhlIHR5cGUgb2JqZWN0IGRldGVybWluZXMKK3doaWNoIChDKSBmdW5jdGlvbnMgZ2V0IGNhbGxlZCB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGF0dHJpYnV0ZSBnZXRzIGxvb2tlZAordXAgb24gYW4gb2JqZWN0IG9yIGl0IGlzIG11bHRpcGxpZWQgYnkgYW5vdGhlciBvYmplY3QuICBUaGVzZSBDIGZ1bmN0aW9ucworYXJlIGNhbGxlZCAidHlwZSBtZXRob2RzIi4KIAogU28sIGlmIHlvdSB3YW50IHRvIGRlZmluZSBhIG5ldyBvYmplY3QgdHlwZSwgeW91IG5lZWQgdG8gY3JlYXRlIGEgbmV3IHR5cGUKIG9iamVjdC4KQEAgLTUwLDE1ICs1MSwxNSBAQAogICAgICAgIFB5T2JqZWN0X0hFQUQKICAgIH0gbm9kZHlfTm9kZHlPYmplY3Q7CiAKLVRoaXMgaXMgd2hhdCBhIE5vZGR5IG9iamVjdCB3aWxsIGNvbnRhaW4tLS1pbiB0aGlzIGNhc2UsIG5vdGhpbmcgbW9yZSB0aGFuIGV2ZXJ5Ci1QeXRob24gb2JqZWN0IGNvbnRhaW5zLCBuYW1lbHkgYSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIGEgdHlwZSBvYmplY3QuICBUaGVzZQotYXJlIHRoZSBmaWVsZHMgdGhlIGBgUHlPYmplY3RfSEVBRGBgIG1hY3JvIGJyaW5ncyBpbi4gIFRoZSByZWFzb24gZm9yIHRoZSBtYWNybwotaXMgdG8gc3RhbmRhcmRpemUgdGhlIGxheW91dCBhbmQgdG8gZW5hYmxlIHNwZWNpYWwgZGVidWdnaW5nIGZpZWxkcyBpbiBkZWJ1ZwotYnVpbGRzLiAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIHNlbWljb2xvbiBhZnRlciB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm87IG9uZQotaXMgaW5jbHVkZWQgaW4gdGhlIG1hY3JvIGRlZmluaXRpb24uICBCZSB3YXJ5IG9mIGFkZGluZyBvbmUgYnkgYWNjaWRlbnQ7IGl0J3MKLWVhc3kgdG8gZG8gZnJvbSBoYWJpdCwgYW5kIHlvdXIgY29tcGlsZXIgbWlnaHQgbm90IGNvbXBsYWluLCBidXQgc29tZW9uZSBlbHNlJ3MKLXByb2JhYmx5IHdpbGwhICAoT24gV2luZG93cywgTVNWQyBpcyBrbm93biB0byBjYWxsIHRoaXMgYW4gZXJyb3IgYW5kIHJlZnVzZSB0bwotY29tcGlsZSB0aGUgY29kZS4pCitUaGlzIGlzIHdoYXQgYSBOb2RkeSBvYmplY3Qgd2lsbCBjb250YWluLS0taW4gdGhpcyBjYXNlLCBub3RoaW5nIG1vcmUgdGhhbiB3aGF0CitldmVyeSBQeXRob24gb2JqZWN0IGNvbnRhaW5zLS0tYSByZWZjb3VudCBhbmQgYSBwb2ludGVyIHRvIGEgdHlwZSBvYmplY3QuCitUaGVzZSBhcmUgdGhlIGZpZWxkcyB0aGUgYGBQeU9iamVjdF9IRUFEYGAgbWFjcm8gYnJpbmdzIGluLiAgVGhlIHJlYXNvbiBmb3IgdGhlCittYWNybyBpcyB0byBzdGFuZGFyZGl6ZSB0aGUgbGF5b3V0IGFuZCB0byBlbmFibGUgc3BlY2lhbCBkZWJ1Z2dpbmcgZmllbGRzIGluCitkZWJ1ZyBidWlsZHMuICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gc2VtaWNvbG9uIGFmdGVyIHRoZSBgYFB5T2JqZWN0X0hFQURgYAorbWFjcm87IG9uZSBpcyBpbmNsdWRlZCBpbiB0aGUgbWFjcm8gZGVmaW5pdGlvbi4gIEJlIHdhcnkgb2YgYWRkaW5nIG9uZSBieQorYWNjaWRlbnQ7IGl0J3MgZWFzeSB0byBkbyBmcm9tIGhhYml0LCBhbmQgeW91ciBjb21waWxlciBtaWdodCBub3QgY29tcGxhaW4sCitidXQgc29tZW9uZSBlbHNlJ3MgcHJvYmFibHkgd2lsbCEgIChPbiBXaW5kb3dzLCBNU1ZDIGlzIGtub3duIHRvIGNhbGwgdGhpcyBhbgorZXJyb3IgYW5kIHJlZnVzZSB0byBjb21waWxlIHRoZSBjb2RlLikKIAogRm9yIGNvbnRyYXN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgY29ycmVzcG9uZGluZyBkZWZpbml0aW9uIGZvciBzdGFuZGFyZAogUHl0aG9uIGZsb2F0czo6CkBAIC0yMjQsNyArMjI1LDcgQEAKIEFkZGluZyBkYXRhIGFuZCBtZXRob2RzIHRvIHRoZSBCYXNpYyBleGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1MZXQncyBleHBlbmQgdGhlIGJhc2ljIGV4YW1wbGUgdG8gYWRkIHNvbWUgZGF0YSBhbmQgbWV0aG9kcy4gIExldCdzIGFsc28gbWFrZQorTGV0J3MgZXh0ZW5kIHRoZSBiYXNpYyBleGFtcGxlIHRvIGFkZCBzb21lIGRhdGEgYW5kIG1ldGhvZHMuICBMZXQncyBhbHNvIG1ha2UKIHRoZSB0eXBlIHVzYWJsZSBhcyBhIGJhc2UgY2xhc3MuIFdlJ2xsIGNyZWF0ZSBhIG5ldyBtb2R1bGUsIDptb2Q6YG5vZGR5MmAgdGhhdAogYWRkcyB0aGVzZSBjYXBhYmlsaXRpZXM6CiAKQEAgLTI4OCwxOCArMjg5LDE2IEBACiAgICAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgICAgeworICAgICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgfQorICAgICAgICAgICB9CiAKICAgICAgICAgICAgc2VsZi0+bGFzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgICAgIHsKKyAgICAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgfQorICAgICAgICAgICB9CiAKICAgICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICAgICB9CkBAIC0zMjcsOCArMzI2LDggQEAKIGNyZWF0ZWQuIE5ldyBtZXRob2RzIGFsd2F5cyBhY2NlcHQgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmd1bWVudHMsIGJ1dCB0aGV5CiBvZnRlbiBpZ25vcmUgdGhlIGFyZ3VtZW50cywgbGVhdmluZyB0aGUgYXJndW1lbnQgaGFuZGxpbmcgdG8gaW5pdGlhbGl6ZXIKIG1ldGhvZHMuIE5vdGUgdGhhdCBpZiB0aGUgdHlwZSBzdXBwb3J0cyBzdWJjbGFzc2luZywgdGhlIHR5cGUgcGFzc2VkIG1heSBub3QgYmUKLXRoZSB0eXBlIGJlaW5nIGRlZmluZWQuICBUaGUgbmV3IG1ldGhvZCBjYWxscyB0aGUgdHBfYWxsb2Mgc2xvdCB0byBhbGxvY2F0ZQotbWVtb3J5LiBXZSBkb24ndCBmaWxsIHRoZSA6YXR0cjpgdHBfYWxsb2NgIHNsb3Qgb3Vyc2VsdmVzLiBSYXRoZXIKK3RoZSB0eXBlIGJlaW5nIGRlZmluZWQuICBUaGUgbmV3IG1ldGhvZCBjYWxscyB0aGUgOmF0dHI6YHRwX2FsbG9jYCBzbG90IHRvCithbGxvY2F0ZSBtZW1vcnkuIFdlIGRvbid0IGZpbGwgdGhlIDphdHRyOmB0cF9hbGxvY2Agc2xvdCBvdXJzZWx2ZXMuIFJhdGhlcgogOmM6ZnVuYzpgUHlUeXBlX1JlYWR5YCBmaWxscyBpdCBmb3IgdXMgYnkgaW5oZXJpdGluZyBpdCBmcm9tIG91ciBiYXNlIGNsYXNzLAogd2hpY2ggaXMgOmNsYXNzOmBvYmplY3RgIGJ5IGRlZmF1bHQuICBNb3N0IHR5cGVzIHVzZSB0aGUgZGVmYXVsdCBhbGxvY2F0aW9uLgogCkBAIC00NDUsMTUgKzQ0NCw2IEBACiAgICBzdGF0aWMgUHlPYmplY3QgKgogICAgTm9kZHlfbmFtZShOb2RkeSogc2VsZikKICAgIHsKLSAgICAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdCA9IE5VTEw7Ci0gICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7Ci0KLSAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgICAgZm9ybWF0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiJXMgJXMiKTsKLSAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgfQotCiAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAiZmlyc3QiKTsKICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NjQsMjAgKzQ1NCwxMyBAQAogICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICB9CiAKLSAgICAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICByZXN1bHQgPSBQeVN0cmluZ19Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKLSAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiAgICB9CiAKIFRoZSBtZXRob2QgaXMgaW1wbGVtZW50ZWQgYXMgYSBDIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSA6Y2xhc3M6YE5vZGR5YCAob3IKIDpjbGFzczpgTm9kZHlgIHN1YmNsYXNzKSBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuICBNZXRob2RzIGFsd2F5cyB0YWtlIGFuCiBpbnN0YW5jZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIE1ldGhvZHMgb2Z0ZW4gdGFrZSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkCi1hcmd1bWVudHMgYXMgd2VsbCwgYnV0IGluIHRoaXMgY2FzZWQgd2UgZG9uJ3QgdGFrZSBhbnkgYW5kIGRvbid0IG5lZWQgdG8gYWNjZXB0Cithcmd1bWVudHMgYXMgd2VsbCwgYnV0IGluIHRoaXMgY2FzZSB3ZSBkb24ndCB0YWtlIGFueSBhbmQgZG9uJ3QgbmVlZCB0byBhY2NlcHQKIGEgcG9zaXRpb25hbCBhcmd1bWVudCB0dXBsZSBvciBrZXl3b3JkIGFyZ3VtZW50IGRpY3Rpb25hcnkuIFRoaXMgbWV0aG9kIGlzCiBlcXVpdmFsZW50IHRvIHRoZSBQeXRob24gbWV0aG9kOjoKIApAQCAtMTEyNCw5ICsxMTA3LDYgQEAKIGF0IHRoZSBlbmQ7IGl0IGlzIGEgc2VudGluZWwgdGhhdCBtYXJrcyB0aGUgZW5kIG9mIHRoZSBhcnJheS4gIFRoZQogOmF0dHI6YG1sX25hbWVgIGZpZWxkIG9mIHRoZSBzZW50aW5lbCBtdXN0IGJlICpOVUxMKi4KIAotWFhYIE5lZWQgdG8gcmVmZXIgdG8gc29tZSB1bmlmaWVkIGRpc2N1c3Npb24gb2YgdGhlIHN0cnVjdHVyZSBmaWVsZHMsIHNoYXJlZAotd2l0aCB0aGUgbmV4dCBzZWN0aW9uLgotCiBUaGUgc2Vjb25kIHRhYmxlIGlzIHVzZWQgdG8gZGVmaW5lIGF0dHJpYnV0ZXMgd2hpY2ggbWFwIGRpcmVjdGx5IHRvIGRhdGEgc3RvcmVkCiBpbiB0aGUgaW5zdGFuY2UuICBBIHZhcmlldHkgb2YgcHJpbWl0aXZlIEMgdHlwZXMgYXJlIHN1cHBvcnRlZCwgYW5kIGFjY2VzcyBtYXkKIGJlIHJlYWQtb25seSBvciByZWFkLXdyaXRlLiAgVGhlIHN0cnVjdHVyZXMgaW4gdGhlIHRhYmxlIGFyZSBkZWZpbmVkIGFzOjoKQEAgLTExNDYsOCArMTEyNiw2IEBACiBjb252ZXJ0IFB5dGhvbiB2YWx1ZXMgdG8gYW5kIGZyb20gQyB2YWx1ZXMuICBUaGUgOmF0dHI6YGZsYWdzYCBmaWVsZCBpcyB1c2VkIHRvCiBzdG9yZSBmbGFncyB3aGljaCBjb250cm9sIGhvdyB0aGUgYXR0cmlidXRlIGNhbiBiZSBhY2Nlc3NlZC4KIAotWFhYIE5lZWQgdG8gbW92ZSBzb21lIG9mIHRoaXMgdG8gYSBzaGFyZWQgc2VjdGlvbiEKLQogVGhlIGZvbGxvd2luZyBmbGFnIGNvbnN0YW50cyBhcmUgZGVmaW5lZCBpbiA6ZmlsZTpgc3RydWN0bWVtYmVyLmhgOyB0aGV5IG1heSBiZQogY29tYmluZWQgdXNpbmcgYml0d2lzZS1PUi4KIApAQCAtMTM3Miw3ICsxMzUwLDcgQEAKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQogCi1YWFggc29tZSBmaWVsZHMgbmVlZCB0byBiZSBhZGRlZCBoZXJlLi4uIDo6Cis6OgogCiAgICAvKiBJdGVyYXRvcnMgKi8KICAgIGdldGl0ZXJmdW5jIHRwX2l0ZXI7CmRpZmYgLS1naXQgYS9Eb2MvZmFxL2Rlc2lnbi5yc3QgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKaW5kZXggN2M1MTE2ZC4uNmI4YThmZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9kZXNpZ24ucnN0CisrKyBiL0RvYy9mYXEvZGVzaWduLnJzdApAQCAtNTE1LDE0ICs1MTUsMTYgQEAKIAogRGljdGlvbmFyaWVzIHdvcmsgYnkgY29tcHV0aW5nIGEgaGFzaCBjb2RlIGZvciBlYWNoIGtleSBzdG9yZWQgaW4gdGhlIGRpY3Rpb25hcnkKIHVzaW5nIHRoZSA6ZnVuYzpgaGFzaGAgYnVpbHQtaW4gZnVuY3Rpb24uICBUaGUgaGFzaCBjb2RlIHZhcmllcyB3aWRlbHkgZGVwZW5kaW5nCi1vbiB0aGUga2V5OyBmb3IgZXhhbXBsZSwgIlB5dGhvbiIgaGFzaGVzIHRvIC01MzkyOTQyOTYgd2hpbGUgInB5dGhvbiIsIGEgc3RyaW5nCi10aGF0IGRpZmZlcnMgYnkgYSBzaW5nbGUgYml0LCBoYXNoZXMgdG8gMTE0MjMzMTk3Ni4gIFRoZSBoYXNoIGNvZGUgaXMgdGhlbiB1c2VkCi10byBjYWxjdWxhdGUgYSBsb2NhdGlvbiBpbiBhbiBpbnRlcm5hbCBhcnJheSB3aGVyZSB0aGUgdmFsdWUgd2lsbCBiZSBzdG9yZWQuCi1Bc3N1bWluZyB0aGF0IHlvdSdyZSBzdG9yaW5nIGtleXMgdGhhdCBhbGwgaGF2ZSBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMsIHRoaXMKLW1lYW5zIHRoYXQgZGljdGlvbmFyaWVzIHRha2UgY29uc3RhbnQgdGltZSAtLSBPKDEpLCBpbiBjb21wdXRlciBzY2llbmNlIG5vdGF0aW9uCi0tLSB0byByZXRyaWV2ZSBhIGtleS4gIEl0IGFsc28gbWVhbnMgdGhhdCBubyBzb3J0ZWQgb3JkZXIgb2YgdGhlIGtleXMgaXMKLW1haW50YWluZWQsIGFuZCB0cmF2ZXJzaW5nIHRoZSBhcnJheSBhcyB0aGUgYGAua2V5cygpYGAgYW5kIGBgLml0ZW1zKClgYCBkbyB3aWxsCi1vdXRwdXQgdGhlIGRpY3Rpb25hcnkncyBjb250ZW50IGluIHNvbWUgYXJiaXRyYXJ5IGp1bWJsZWQgb3JkZXIuCitvbiB0aGUga2V5IGFuZCBhIHBlci1wcm9jZXNzIHNlZWQ7IGZvciBleGFtcGxlLCAiUHl0aG9uIiBjb3VsZCBoYXNoIHRvCistNTM5Mjk0Mjk2IHdoaWxlICJweXRob24iLCBhIHN0cmluZyB0aGF0IGRpZmZlcnMgYnkgYSBzaW5nbGUgYml0LCBjb3VsZCBoYXNoCit0byAxMTQyMzMxOTc2LiAgVGhlIGhhc2ggY29kZSBpcyB0aGVuIHVzZWQgdG8gY2FsY3VsYXRlIGEgbG9jYXRpb24gaW4gYW4KK2ludGVybmFsIGFycmF5IHdoZXJlIHRoZSB2YWx1ZSB3aWxsIGJlIHN0b3JlZC4gIEFzc3VtaW5nIHRoYXQgeW91J3JlIHN0b3JpbmcKK2tleXMgdGhhdCBhbGwgaGF2ZSBkaWZmZXJlbnQgaGFzaCB2YWx1ZXMsIHRoaXMgbWVhbnMgdGhhdCBkaWN0aW9uYXJpZXMgdGFrZQorY29uc3RhbnQgdGltZSAtLSBPKDEpLCBpbiBjb21wdXRlciBzY2llbmNlIG5vdGF0aW9uIC0tIHRvIHJldHJpZXZlIGEga2V5LiAgSXQKK2Fsc28gbWVhbnMgdGhhdCBubyBzb3J0ZWQgb3JkZXIgb2YgdGhlIGtleXMgaXMgbWFpbnRhaW5lZCwgYW5kIHRyYXZlcnNpbmcgdGhlCithcnJheSBhcyB0aGUgYGAua2V5cygpYGAgYW5kIGBgLml0ZW1zKClgYCBkbyB3aWxsIG91dHB1dCB0aGUgZGljdGlvbmFyeSdzCitjb250ZW50IGluIHNvbWUgYXJiaXRyYXJ5IGp1bWJsZWQgb3JkZXIgdGhhdCBjYW4gY2hhbmdlIHdpdGggZXZlcnkgaW52b2NhdGlvbiBvZgorYSBwcm9ncmFtLgogCiAKIFdoeSBtdXN0IGRpY3Rpb25hcnkga2V5cyBiZSBpbW11dGFibGU/CkBAIC02MzQsNyArNjM2LDcgQEAKIFB5dGhvbiAyLjYgYWRkcyBhbiA6bW9kOmBhYmNgIG1vZHVsZSB0aGF0IGxldHMgeW91IGRlZmluZSBBYnN0cmFjdCBCYXNlIENsYXNzZXMKIChBQkNzKS4gIFlvdSBjYW4gdGhlbiB1c2UgOmZ1bmM6YGlzaW5zdGFuY2VgIGFuZCA6ZnVuYzpgaXNzdWJjbGFzc2AgdG8gY2hlY2sKIHdoZXRoZXIgYW4gaW5zdGFuY2Ugb3IgYSBjbGFzcyBpbXBsZW1lbnRzIGEgcGFydGljdWxhciBBQkMuICBUaGUKLTptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgZGVmaW5lcyBhIHNldCBvZiB1c2VmdWwgQUJDcyBzdWNoIGFzCis6bW9kOmBjb2xsZWN0aW9ucy5hYmNgIG1vZHVsZSBkZWZpbmVzIGEgc2V0IG9mIHVzZWZ1bCBBQkNzIHN1Y2ggYXMKIDpjbGFzczpgSXRlcmFibGVgLCA6Y2xhc3M6YENvbnRhaW5lcmAsIGFuZCA6Y2xhc3M6YE11dGFibGVNYXBwaW5nYC4KIAogRm9yIFB5dGhvbiwgbWFueSBvZiB0aGUgYWR2YW50YWdlcyBvZiBpbnRlcmZhY2Ugc3BlY2lmaWNhdGlvbnMgY2FuIGJlIG9idGFpbmVkCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2V4dGVuZGluZy5yc3QgYi9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKaW5kZXggN2M2ODRhMC4uZmEyNDVjNyAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9leHRlbmRpbmcucnN0CisrKyBiL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdApAQCAtNDQ1LDM0ICs0NDUsMyBAQAogVGhlIEJvb3N0IFB5dGhvbiBMaWJyYXJ5IChCUEwsIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcHl0aG9uL2RvYy9pbmRleC5odG1sKQogcHJvdmlkZXMgYSB3YXkgb2YgZG9pbmcgdGhpcyBmcm9tIEMrKyAoaS5lLiB5b3UgY2FuIGluaGVyaXQgZnJvbSBhbiBleHRlbnNpb24KIGNsYXNzIHdyaXR0ZW4gaW4gQysrIHVzaW5nIHRoZSBCUEwpLgotCi0KLVdoZW4gaW1wb3J0aW5nIG1vZHVsZSBYLCB3aHkgZG8gSSBnZXQgInVuZGVmaW5lZCBzeW1ib2w6IFB5VW5pY29kZVVDUzIqIj8KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IGFyZSB1c2luZyBhIHZlcnNpb24gb2YgUHl0aG9uIHRoYXQgdXNlcyBhIDQtYnl0ZSByZXByZXNlbnRhdGlvbiBmb3IgVW5pY29kZQotY2hhcmFjdGVycywgYnV0IHNvbWUgQyBleHRlbnNpb24gbW9kdWxlIHlvdSBhcmUgaW1wb3J0aW5nIHdhcyBjb21waWxlZCB1c2luZyBhCi1QeXRob24gdGhhdCB1c2VzIGEgMi1ieXRlIHJlcHJlc2VudGF0aW9uIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgKHRoZSBkZWZhdWx0KS4KLQotSWYgaW5zdGVhZCB0aGUgbmFtZSBvZiB0aGUgdW5kZWZpbmVkIHN5bWJvbCBzdGFydHMgd2l0aCBgYFB5VW5pY29kZVVDUzRgYCwgdGhlCi1wcm9ibGVtIGlzIHRoZSByZXZlcnNlOiBQeXRob24gd2FzIGJ1aWx0IHVzaW5nIDItYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMsIGFuZAotdGhlIGV4dGVuc2lvbiBtb2R1bGUgd2FzIGNvbXBpbGVkIHVzaW5nIGEgUHl0aG9uIHdpdGggNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycy4KLQotVGhpcyBjYW4gZWFzaWx5IG9jY3VyIHdoZW4gdXNpbmcgcHJlLWJ1aWx0IGV4dGVuc2lvbiBwYWNrYWdlcy4gIFJlZEhhdCBMaW51eAotNy54LCBpbiBwYXJ0aWN1bGFyLCBwcm92aWRlZCBhICJweXRob24yIiBiaW5hcnkgdGhhdCBpcyBjb21waWxlZCB3aXRoIDQtYnl0ZQotVW5pY29kZS4gIFRoaXMgb25seSBjYXVzZXMgdGhlIGxpbmsgZmFpbHVyZSBpZiB0aGUgZXh0ZW5zaW9uIHVzZXMgYW55IG9mIHRoZQotYGBQeVVuaWNvZGVfKigpYGAgZnVuY3Rpb25zLiAgSXQgaXMgYWxzbyBhIHByb2JsZW0gaWYgYW4gZXh0ZW5zaW9uIHVzZXMgYW55IG9mCi10aGUgVW5pY29kZS1yZWxhdGVkIGZvcm1hdCBzcGVjaWZpZXJzIGZvciA6YzpmdW5jOmBQeV9CdWlsZFZhbHVlYCAob3Igc2ltaWxhcikgb3IKLXBhcmFtZXRlciBzcGVjaWZpY2F0aW9ucyBmb3IgOmM6ZnVuYzpgUHlBcmdfUGFyc2VUdXBsZWAuCi0KLVlvdSBjYW4gY2hlY2sgdGhlIHNpemUgb2YgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGEgUHl0aG9uIGludGVycHJldGVyIGlzIHVzaW5nIGJ5Ci1jaGVja2luZyB0aGUgdmFsdWUgb2Ygc3lzLm1heHVuaWNvZGU6Ci0KLSAgID4+PiBpbXBvcnQgc3lzCi0gICA+Pj4gaWYgc3lzLm1heHVuaWNvZGUgPiA2NTUzNToKLSAgIC4uLiAgICAgcHJpbnQoJ1VDUzQgYnVpbGQnKQotICAgLi4uIGVsc2U6Ci0gICAuLi4gICAgIHByaW50KCdVQ1MyIGJ1aWxkJykKLQotVGhlIG9ubHkgd2F5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbSBpcyB0byB1c2UgZXh0ZW5zaW9uIG1vZHVsZXMgY29tcGlsZWQgd2l0aCBhCi1QeXRob24gYmluYXJ5IGJ1aWx0IHVzaW5nIHRoZSBzYW1lIHNpemUgZm9yIFVuaWNvZGUgY2hhcmFjdGVycy4KZGlmZiAtLWdpdCBhL0RvYy9mYXEvbGlicmFyeS5yc3QgYi9Eb2MvZmFxL2xpYnJhcnkucnN0CmluZGV4IDczODVjNTkuLmNhYjJkN2IgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvbGlicmFyeS5yc3QKKysrIGIvRG9jL2ZhcS9saWJyYXJ5LnJzdApAQCAtMzUxLDcgKzM1MSw3IEBACiAgICBXb3JrZXIgPFRocmVhZCh3b3JrZXIgMSwgc3RhcnRlZCAxMzAyODM4MzI3OTc0NTYpPiBydW5uaW5nIHdpdGggYXJndW1lbnQgNQogICAgLi4uCiAKLUNvbnN1bHQgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsczsgdGhlIDpjbGFzczpgfnF1ZXVlLlF1ZXVlYGAKK0NvbnN1bHQgdGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlsczsgdGhlIDpjbGFzczpgfnF1ZXVlLlF1ZXVlYAogY2xhc3MgcHJvdmlkZXMgYSBmZWF0dXJlZnVsIGludGVyZmFjZS4KIAogCmRpZmYgLS1naXQgYS9Eb2MvZ2xvc3NhcnkucnN0IGIvRG9jL2dsb3NzYXJ5LnJzdAppbmRleCAzYzExZGU3Li4zNWJkYjk2IDEwMDY0NAotLS0gYS9Eb2MvZ2xvc3NhcnkucnN0CisrKyBiL0RvYy9nbG9zc2FyeS5yc3QKQEAgLTM0LDcgKzM0LDcgQEAKICAgICAgIHN1YmNsYXNzZXMsIHdoaWNoIGFyZSBjbGFzc2VzIHRoYXQgZG9uJ3QgaW5oZXJpdCBmcm9tIGEgY2xhc3MgYnV0IGFyZQogICAgICAgc3RpbGwgcmVjb2duaXplZCBieSA6ZnVuYzpgaXNpbnN0YW5jZWAgYW5kIDpmdW5jOmBpc3N1YmNsYXNzYDsgc2VlIHRoZQogICAgICAgOm1vZDpgYWJjYCBtb2R1bGUgZG9jdW1lbnRhdGlvbi4gIFB5dGhvbiBjb21lcyB3aXRoIG1hbnkgYnVpbHQtaW4gQUJDcyBmb3IKLSAgICAgIGRhdGEgc3RydWN0dXJlcyAoaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUpLCBudW1iZXJzIChpbiB0aGUKKyAgICAgIGRhdGEgc3RydWN0dXJlcyAoaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlKSwgbnVtYmVycyAoaW4gdGhlCiAgICAgICA6bW9kOmBudW1iZXJzYCBtb2R1bGUpLCBzdHJlYW1zIChpbiB0aGUgOm1vZDpgaW9gIG1vZHVsZSksIGltcG9ydCBmaW5kZXJzCiAgICAgICBhbmQgbG9hZGVycyAoaW4gdGhlIDptb2Q6YGltcG9ydGxpYi5hYmNgIG1vZHVsZSkuICBZb3UgY2FuIGNyZWF0ZSB5b3VyIG93bgogICAgICAgQUJDcyB3aXRoIHRoZSA6bW9kOmBhYmNgIG1vZHVsZS4KQEAgLTIwOSw5ICsyMDksOSBAQAogCiAgICBmaW5kZXIKICAgICAgIEFuIG9iamVjdCB0aGF0IHRyaWVzIHRvIGZpbmQgdGhlIDp0ZXJtOmBsb2FkZXJgIGZvciBhIG1vZHVsZS4gSXQgbXVzdAotICAgICAgaW1wbGVtZW50IGEgbWV0aG9kIG5hbWVkIDptZXRoOmBmaW5kX21vZHVsZWAuIFNlZSA6cGVwOmAzMDJgIGZvcgotICAgICAgZGV0YWlscyBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgZm9yIGFuCi0gICAgICA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AuCisgICAgICBpbXBsZW1lbnQgZWl0aGVyIGEgbWV0aG9kIG5hbWVkIDptZXRoOmBmaW5kX2xvYWRlcmAgb3IgYSBtZXRob2QgbmFtZWQKKyAgICAgIDptZXRoOmBmaW5kX21vZHVsZWAuIFNlZSA6cGVwOmAzMDJgIGFuZCA6cGVwOmA0MjBgIGZvciBkZXRhaWxzIGFuZAorICAgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgZm9yIGFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYC4KIAogICAgZmxvb3IgZGl2aXNpb24KICAgICAgIE1hdGhlbWF0aWNhbCBkaXZpc2lvbiB0aGF0IHJvdW5kcyBkb3duIHRvIG5lYXJlc3QgaW50ZWdlci4gIFRoZSBmbG9vcgpAQCAtMzE1LDYgKzMxNSwxNyBAQAogICAgICAgcm9sZSBpbiBwbGFjZXMgd2hlcmUgYSBjb25zdGFudCBoYXNoIHZhbHVlIGlzIG5lZWRlZCwgZm9yIGV4YW1wbGUgYXMgYSBrZXkKICAgICAgIGluIGEgZGljdGlvbmFyeS4KIAorICAgaW1wb3J0IHBhdGgKKyAgICAgIEEgbGlzdCBvZiBsb2NhdGlvbnMgKG9yIDp0ZXJtOmBwYXRoIGVudHJpZXMgPHBhdGggZW50cnk+YCkgdGhhdCBhcmUKKyAgICAgIHNlYXJjaGVkIGJ5IHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGZvciBtb2R1bGVzIHRvIGltcG9ydC4gRHVyaW5nCisgICAgICBpbXBvcnQsIHRoaXMgbGlzdCBvZiBsb2NhdGlvbnMgdXN1YWxseSBjb21lcyBmcm9tIDpkYXRhOmBzeXMucGF0aGAsIGJ1dAorICAgICAgZm9yIHN1YnBhY2thZ2VzIGl0IG1heSBhbHNvIGNvbWUgZnJvbSB0aGUgcGFyZW50IHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKKyAgICAgIGF0dHJpYnV0ZS4KKworICAgaW1wb3J0aW5nCisgICAgICBUaGUgcHJvY2VzcyBieSB3aGljaCBQeXRob24gY29kZSBpbiBvbmUgbW9kdWxlIGlzIG1hZGUgYXZhaWxhYmxlIHRvCisgICAgICBQeXRob24gY29kZSBpbiBhbm90aGVyIG1vZHVsZS4KKwogICAgaW1wb3J0ZXIKICAgICAgIEFuIG9iamVjdCB0aGF0IGJvdGggZmluZHMgYW5kIGxvYWRzIGEgbW9kdWxlOyBib3RoIGEKICAgICAgIDp0ZXJtOmBmaW5kZXJgIGFuZCA6dGVybTpgbG9hZGVyYCBvYmplY3QuCkBAIC00MzQsMTIgKzQ0NSwxNyBAQAogCiAgICBtYXBwaW5nCiAgICAgICBBIGNvbnRhaW5lciBvYmplY3QgdGhhdCBzdXBwb3J0cyBhcmJpdHJhcnkga2V5IGxvb2t1cHMgYW5kIGltcGxlbWVudHMgdGhlCi0gICAgICBtZXRob2RzIHNwZWNpZmllZCBpbiB0aGUgOmNsYXNzOmB+Y29sbGVjdGlvbnMuTWFwcGluZ2Agb3IKLSAgICAgIDpjbGFzczpgfmNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nYAorICAgICAgbWV0aG9kcyBzcGVjaWZpZWQgaW4gdGhlIDpjbGFzczpgfmNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYCBvcgorICAgICAgOmNsYXNzOmB+Y29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYAogICAgICAgOnJlZjpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxjb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM+YC4gIEV4YW1wbGVzCiAgICAgICBpbmNsdWRlIDpjbGFzczpgZGljdGAsIDpjbGFzczpgY29sbGVjdGlvbnMuZGVmYXVsdGRpY3RgLAogICAgICAgOmNsYXNzOmBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGAgYW5kIDpjbGFzczpgY29sbGVjdGlvbnMuQ291bnRlcmAuCiAKKyAgIG1ldGEgcGF0aCBmaW5kZXIKKyAgICAgIEEgZmluZGVyIHJldHVybmVkIGJ5IGEgc2VhcmNoIG9mIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gIE1ldGEgcGF0aAorICAgICAgZmluZGVycyBhcmUgcmVsYXRlZCB0bywgYnV0IGRpZmZlcmVudCBmcm9tIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMKKyAgICAgIDxwYXRoIGVudHJ5IGZpbmRlcj5gLgorCiAgICBtZXRhY2xhc3MKICAgICAgIFRoZSBjbGFzcyBvZiBhIGNsYXNzLiAgQ2xhc3MgZGVmaW5pdGlvbnMgY3JlYXRlIGEgY2xhc3MgbmFtZSwgYSBjbGFzcwogICAgICAgZGljdGlvbmFyeSwgYW5kIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMuICBUaGUgbWV0YWNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvcgpAQCAtNDY0LDYgKzQ4MCwxMSBAQAogICAgICAgZm9yIGEgbWVtYmVyIGR1cmluZyBsb29rdXAuIFNlZSBgVGhlIFB5dGhvbiAyLjMgTWV0aG9kIFJlc29sdXRpb24gT3JkZXIKICAgICAgIDxodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8+YF8uCiAKKyAgIG1vZHVsZQorICAgICAgQW4gb2JqZWN0IHRoYXQgc2VydmVzIGFzIGFuIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUuICBNb2R1bGVzCisgICAgICBoYXZlIGEgbmFtZXNwYWNlIGNvbnRhaW5pbmcgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTW9kdWxlcyBhcmUgbG9hZGVkCisgICAgICBpbnRvIFB5dGhvbiBieSB0aGUgcHJvY2VzcyBvZiA6dGVybTpgaW1wb3J0aW5nYC4KKwogICAgTVJPCiAgICAgICBTZWUgOnRlcm06YG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyYC4KIApAQCAtNDk2LDYgKzUxNywxMiBAQAogICAgICAgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBieSB0aGUgOm1vZDpgcmFuZG9tYCBhbmQgOm1vZDpgaXRlcnRvb2xzYAogICAgICAgbW9kdWxlcywgcmVzcGVjdGl2ZWx5LgogCisgICBuYW1lc3BhY2UgcGFja2FnZQorICAgICAgQSA6cGVwOmA0MjBgIDp0ZXJtOmBwYWNrYWdlYCB3aGljaCBzZXJ2ZXMgb25seSBhcyBhIGNvbnRhaW5lciBmb3IKKyAgICAgIHN1YnBhY2thZ2VzLiAgTmFtZXNwYWNlIHBhY2thZ2VzIG1heSBoYXZlIG5vIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uLAorICAgICAgYW5kIHNwZWNpZmljYWxseSBhcmUgbm90IGxpa2UgYSA6dGVybTpgcmVndWxhciBwYWNrYWdlYCBiZWNhdXNlIHRoZXkKKyAgICAgIGhhdmUgbm8gYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIG5lc3RlZCBzY29wZQogICAgICAgVGhlIGFiaWxpdHkgdG8gcmVmZXIgdG8gYSB2YXJpYWJsZSBpbiBhbiBlbmNsb3NpbmcgZGVmaW5pdGlvbi4gIEZvcgogICAgICAgaW5zdGFuY2UsIGEgZnVuY3Rpb24gZGVmaW5lZCBpbnNpZGUgYW5vdGhlciBmdW5jdGlvbiBjYW4gcmVmZXIgdG8KQEAgLTUxNiw2ICs1NDMsMzMgQEAKICAgICAgIChtZXRob2RzKS4gIEFsc28gdGhlIHVsdGltYXRlIGJhc2UgY2xhc3Mgb2YgYW55IDp0ZXJtOmBuZXctc3R5bGUKICAgICAgIGNsYXNzYC4KIAorICAgcGFja2FnZQorICAgICAgQSBQeXRob24gbW9kdWxlIHdoaWNoIGNhbiBjb250YWluIHN1Ym1vZHVsZXMgb3IgcmVjdXJzaXZlbHksCisgICAgICBzdWJwYWNrYWdlcy4gIFRlY2huaWNhbGx5LCBhIHBhY2thZ2UgaXMgYSBQeXRob24gbW9kdWxlIHdpdGggYW4KKyAgICAgIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuCisKKyAgIHBhdGggZW50cnkKKyAgICAgIEEgc2luZ2xlIGxvY2F0aW9uIG9uIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIHdoaWNoIHRoZSA6dGVybTpgcGF0aAorICAgICAgYmFzZWQgZmluZGVyYCBjb25zdWx0cyB0byBmaW5kIG1vZHVsZXMgZm9yIGltcG9ydGluZy4KKworICAgcGF0aCBlbnRyeSBmaW5kZXIKKyAgICAgIEEgOnRlcm06YGZpbmRlcmAgcmV0dXJuZWQgYnkgYSBjYWxsYWJsZSBvbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgCisgICAgICAoaS5lLiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tgKSB3aGljaCBrbm93cyBob3cgdG8gbG9jYXRlIG1vZHVsZXMgZ2l2ZW4KKyAgICAgIGEgOnRlcm06YHBhdGggZW50cnlgLgorCisgICBwYXRoIGVudHJ5IGhvb2sKKyAgICAgIEEgY2FsbGFibGUgb24gdGhlIDpkYXRhOmBzeXMucGF0aF9ob29rYCBsaXN0IHdoaWNoIHJldHVybnMgYSA6dGVybTpgcGF0aAorICAgICAgZW50cnkgZmluZGVyYCBpZiBpdCBrbm93cyBob3cgdG8gZmluZCBtb2R1bGVzIG9uIGEgc3BlY2lmaWMgOnRlcm06YHBhdGgKKyAgICAgIGVudHJ5YC4KKworICAgcGF0aCBiYXNlZCBmaW5kZXIKKyAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAorICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KKworICAgcG9ydGlvbgorICAgICAgQSBzZXQgb2YgZmlsZXMgaW4gYSBzaW5nbGUgZGlyZWN0b3J5IChwb3NzaWJseSBzdG9yZWQgaW4gYSB6aXAgZmlsZSkKKyAgICAgIHRoYXQgY29udHJpYnV0ZSB0byBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhcyBkZWZpbmVkIGluIDpwZXA6YDQyMGAuCisKICAgIHBvc2l0aW9uYWwgYXJndW1lbnQKICAgICAgIFRoZSBhcmd1bWVudHMgYXNzaWduZWQgdG8gbG9jYWwgbmFtZXMgaW5zaWRlIGEgZnVuY3Rpb24gb3IgbWV0aG9kLAogICAgICAgZGV0ZXJtaW5lZCBieSB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGdpdmVuIGluIHRoZSBjYWxsLiAgYGAqYGAgaXMKQEAgLTUyMyw5ICs1NzcsMjMgQEAKICAgICAgIGRlZmluaXRpb24pLCBvciBwYXNzIHNldmVyYWwgYXJndW1lbnRzIGFzIGEgbGlzdCB0byBhIGZ1bmN0aW9uLiAgU2VlCiAgICAgICA6dGVybTpgYXJndW1lbnRgLgogCisgICBwcm92aXNpb25hbCBwYWNrYWdlCisgICAgICBBIHByb3Zpc2lvbmFsIHBhY2thZ2UgaXMgb25lIHdoaWNoIGhhcyBiZWVuIGRlbGliZXJhdGVseSBleGNsdWRlZCBmcm9tCisgICAgICB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGd1YXJhbnRlZXMuICBXaGlsZSBtYWpvcgorICAgICAgY2hhbmdlcyB0byBzdWNoIHBhY2thZ2VzIGFyZSBub3QgZXhwZWN0ZWQsIGFzIGxvbmcgYXMgdGhleSBhcmUgbWFya2VkCisgICAgICBwcm92aXNpb25hbCwgYmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwKKyAgICAgIG9mIHRoZSBwYWNrYWdlKSBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSBjb3JlIGRldmVsb3BlcnMuICBTdWNoCisgICAgICBjaGFuZ2VzIHdpbGwgbm90IGJlIG1hZGUgZ3JhdHVpdG91c2x5IC0tIHRoZXkgd2lsbCBvY2N1ciBvbmx5IGlmIHNlcmlvdXMKKyAgICAgIGZsYXdzIGFyZSB1bmNvdmVyZWQgdGhhdCB3ZXJlIG1pc3NlZCBwcmlvciB0byB0aGUgaW5jbHVzaW9uIG9mIHRoZQorICAgICAgcGFja2FnZS4KKworICAgICAgVGhpcyBwcm9jZXNzIGFsbG93cyB0aGUgc3RhbmRhcmQgbGlicmFyeSB0byBjb250aW51ZSB0byBldm9sdmUgb3ZlcgorICAgICAgdGltZSwgd2l0aG91dCBsb2NraW5nIGluIHByb2JsZW1hdGljIGRlc2lnbiBlcnJvcnMgZm9yIGV4dGVuZGVkIHBlcmlvZHMKKyAgICAgIG9mIHRpbWUuICBTZWUgOnBlcDpgNDExYCBmb3IgbW9yZSBkZXRhaWxzLgorCiAgICBQeXRob24gMzAwMAotICAgICAgTmlja25hbWUgZm9yIHRoZSBQeXRob24gMy54IHJlbGVhc2UgbGluZSAoY29pbmVkIGxvbmcgYWdvIHdoZW4gdGhlIHJlbGVhc2UKLSAgICAgIG9mIHZlcnNpb24gMyB3YXMgc29tZXRoaW5nIGluIHRoZSBkaXN0YW50IGZ1dHVyZS4pICBUaGlzIGlzIGFsc28KKyAgICAgIE5pY2tuYW1lIGZvciB0aGUgUHl0aG9uIDMueCByZWxlYXNlIGxpbmUgKGNvaW5lZCBsb25nIGFnbyB3aGVuIHRoZQorICAgICAgcmVsZWFzZSBvZiB2ZXJzaW9uIDMgd2FzIHNvbWV0aGluZyBpbiB0aGUgZGlzdGFudCBmdXR1cmUuKSAgVGhpcyBpcyBhbHNvCiAgICAgICBhYmJyZXZpYXRlZCAiUHkzayIuCiAKICAgIFB5dGhvbmljCkBAIC01NDQsNiArNjEyLDMyIEBACiAgICAgICAgICBmb3IgcGllY2UgaW4gZm9vZDoKICAgICAgICAgICAgICBwcmludChwaWVjZSkKIAorICAgcXVhbGlmaWVkIG5hbWUKKyAgICAgIEEgZG90dGVkIG5hbWUgc2hvd2luZyB0aGUgInBhdGgiIGZyb20gYSBtb2R1bGUncyBnbG9iYWwgc2NvcGUgdG8gYQorICAgICAgY2xhc3MsIGZ1bmN0aW9uIG9yIG1ldGhvZCBkZWZpbmVkIGluIHRoYXQgbW9kdWxlLCBhcyBkZWZpbmVkIGluCisgICAgICA6cGVwOmAzMTU1YC4gIEZvciB0b3AtbGV2ZWwgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLCB0aGUgcXVhbGlmaWVkIG5hbWUKKyAgICAgIGlzIHRoZSBzYW1lIGFzIHRoZSBvYmplY3QncyBuYW1lOjoKKworICAgICAgICAgPj4+IGNsYXNzIEM6CisgICAgICAgICAuLi4gICAgIGNsYXNzIEQ6CisgICAgICAgICAuLi4gICAgICAgICBkZWYgbWV0aChzZWxmKToKKyAgICAgICAgIC4uLiAgICAgICAgICAgICBwYXNzCisgICAgICAgICAuLi4KKyAgICAgICAgID4+PiBDLl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MnCisgICAgICAgICA+Pj4gQy5ELl9fcXVhbG5hbWVfXworICAgICAgICAgJ0MuRCcKKyAgICAgICAgID4+PiBDLkQubWV0aC5fX3F1YWxuYW1lX18KKyAgICAgICAgICdDLkQubWV0aCcKKworICAgICAgV2hlbiB1c2VkIHRvIHJlZmVyIHRvIG1vZHVsZXMsIHRoZSAqZnVsbHkgcXVhbGlmaWVkIG5hbWUqIG1lYW5zIHRoZQorICAgICAgZW50aXJlIGRvdHRlZCBwYXRoIHRvIHRoZSBtb2R1bGUsIGluY2x1ZGluZyBhbnkgcGFyZW50IHBhY2thZ2VzLAorICAgICAgZS5nLiBgYGVtYWlsLm1pbWUudGV4dGBgOjoKKworICAgICAgICAgPj4+IGltcG9ydCBlbWFpbC5taW1lLnRleHQKKyAgICAgICAgID4+PiBlbWFpbC5taW1lLnRleHQuX19uYW1lX18KKyAgICAgICAgICdlbWFpbC5taW1lLnRleHQnCisKICAgIHJlZmVyZW5jZSBjb3VudAogICAgICAgVGhlIG51bWJlciBvZiByZWZlcmVuY2VzIHRvIGFuIG9iamVjdC4gIFdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbgogICAgICAgb2JqZWN0IGRyb3BzIHRvIHplcm8sIGl0IGlzIGRlYWxsb2NhdGVkLiAgUmVmZXJlbmNlIGNvdW50aW5nIGlzCkBAIC01NTIsNiArNjQ2LDEwIEBACiAgICAgICA6ZnVuYzpgfnN5cy5nZXRyZWZjb3VudGAgZnVuY3Rpb24gdGhhdCBwcm9ncmFtbWVycyBjYW4gY2FsbCB0byByZXR1cm4gdGhlCiAgICAgICByZWZlcmVuY2UgY291bnQgZm9yIGEgcGFydGljdWxhciBvYmplY3QuCiAKKyAgIHJlZ3VsYXIgcGFja2FnZQorICAgICAgQSB0cmFkaXRpb25hbCA6dGVybTpgcGFja2FnZWAsIHN1Y2ggYXMgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbgorICAgICAgYGBfX2luaXRfXy5weWBgIGZpbGUuCisKICAgIF9fc2xvdHNfXwogICAgICAgQSBkZWNsYXJhdGlvbiBpbnNpZGUgYSBjbGFzcyB0aGF0IHNhdmVzIG1lbW9yeSBieSBwcmUtZGVjbGFyaW5nIHNwYWNlIGZvcgogICAgICAgaW5zdGFuY2UgYXR0cmlidXRlcyBhbmQgZWxpbWluYXRpbmcgaW5zdGFuY2UgZGljdGlvbmFyaWVzLiAgVGhvdWdoCkBAIC01ODYsNiArNjg0LDE0IEBACiAgICAgICBhbiA6dGVybTpgZXhwcmVzc2lvbmAgb3IgYSBvbmUgb2Ygc2V2ZXJhbCBjb25zdHJ1Y3RzIHdpdGggYSBrZXl3b3JkLCBzdWNoCiAgICAgICBhcyA6a2V5d29yZDpgaWZgLCA6a2V5d29yZDpgd2hpbGVgIG9yIDprZXl3b3JkOmBmb3JgLgogCisgICBzdHJ1Y3Qgc2VxdWVuY2UKKyAgICAgIEEgdHVwbGUgd2l0aCBuYW1lZCBlbGVtZW50cy4gU3RydWN0IHNlcXVlbmNlcyBleHBvc2UgYW4gaW50ZXJmYWNlIHNpbWlsYXIKKyAgICAgIHRvIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaW4gdGhhdCBlbGVtZW50cyBjYW4gZWl0aGVyIGJlIGFjY2Vzc2VkIGVpdGhlciBieQorICAgICAgaW5kZXggb3IgYXMgYW4gYXR0cmlidXRlLiBIb3dldmVyLCB0aGV5IGRvIG5vdCBoYXZlIGFueSBvZiB0aGUgbmFtZWQgdHVwbGUKKyAgICAgIG1ldGhvZHMgbGlrZSA6bWV0aDpgfmNvbGxlY3Rpb25zLnNvbWVuYW1lZHR1cGxlLl9tYWtlYCBvcgorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5zb21lbmFtZWR0dXBsZS5fYXNkaWN0YC4gRXhhbXBsZXMgb2Ygc3RydWN0IHNlcXVlbmNlcworICAgICAgaW5jbHVkZSA6ZGF0YTpgc3lzLmZsb2F0X2luZm9gIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmBvcy5zdGF0YC4KKwogICAgdHJpcGxlLXF1b3RlZCBzdHJpbmcKICAgICAgIEEgc3RyaW5nIHdoaWNoIGlzIGJvdW5kIGJ5IHRocmVlIGluc3RhbmNlcyBvZiBlaXRoZXIgYSBxdW90YXRpb24gbWFyawogICAgICAgKCIpIG9yIGFuIGFwb3N0cm9waGUgKCcpLiAgV2hpbGUgdGhleSBkb24ndCBwcm92aWRlIGFueSBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QgYi9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKaW5kZXggMTYxNmY2Ny4uMGI1MTNmOSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CisrKyBiL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdApAQCAtMzYsOSArMzYsNyBAQAogbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlIGRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24KIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmQgaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLgogV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlIHByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMKLXdlcmUgZGVmaW5lZC4gIE5vdGUgdGhhdCBkZXNjcmlwdG9ycyBhcmUgb25seSBpbnZva2VkIGZvciBuZXcgc3R5bGUgb2JqZWN0cyBvcgotY2xhc3NlcyAoYSBjbGFzcyBpcyBuZXcgc3R5bGUgaWYgaXQgaW5oZXJpdHMgZnJvbSA6Y2xhc3M6YG9iamVjdGAgb3IKLTpjbGFzczpgdHlwZWApLgord2VyZSBkZWZpbmVkLgogCiBEZXNjcmlwdG9ycyBhcmUgYSBwb3dlcmZ1bCwgZ2VuZXJhbCBwdXJwb3NlIHByb3RvY29sLiAgVGhleSBhcmUgdGhlIG1lY2hhbmlzbQogYmVoaW5kIHByb3BlcnRpZXMsIG1ldGhvZHMsIHN0YXRpYyBtZXRob2RzLCBjbGFzcyBtZXRob2RzLCBhbmQgOmZ1bmM6YHN1cGVyKClgLgpAQCAtODksOCArODcsNiBAQAogaXMgaW52b2tlZCBhY2NvcmRpbmcgdG8gdGhlIHByZWNlZGVuY2UgcnVsZXMgbGlzdGVkIGJlbG93LgogCiBUaGUgZGV0YWlscyBvZiBpbnZvY2F0aW9uIGRlcGVuZCBvbiB3aGV0aGVyIGBgb2JqYGAgaXMgYW4gb2JqZWN0IG9yIGEgY2xhc3MuCi1FaXRoZXIgd2F5LCBkZXNjcmlwdG9ycyBvbmx5IHdvcmsgZm9yIG5ldyBzdHlsZSBvYmplY3RzIGFuZCBjbGFzc2VzLiAgQSBjbGFzcyBpcwotbmV3IHN0eWxlIGlmIGl0IGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBvYmplY3RgLgogCiBGb3Igb2JqZWN0cywgdGhlIG1hY2hpbmVyeSBpcyBpbiA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gIHdoaWNoCiB0cmFuc2Zvcm1zIGBgYi54YGAgaW50byBgYHR5cGUoYikuX19kaWN0X19bJ3gnXS5fX2dldF9fKGIsIHR5cGUoYikpYGAuICBUaGUKQEAgLTExNSw3ICsxMTEsNiBAQAogCiAqIGRlc2NyaXB0b3JzIGFyZSBpbnZva2VkIGJ5IHRoZSA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgbWV0aG9kCiAqIG92ZXJyaWRpbmcgOm1ldGg6YF9fZ2V0YXR0cmlidXRlX19gIHByZXZlbnRzIGF1dG9tYXRpYyBkZXNjcmlwdG9yIGNhbGxzCi0qIDptZXRoOmBfX2dldGF0dHJpYnV0ZV9fYCBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIG5ldyBzdHlsZSBjbGFzc2VzIGFuZCBvYmplY3RzCiAqIDptZXRoOmBvYmplY3QuX19nZXRhdHRyaWJ1dGVfX2AgYW5kIDptZXRoOmB0eXBlLl9fZ2V0YXR0cmlidXRlX19gIG1ha2UKICAgZGlmZmVyZW50IGNhbGxzIHRvIDptZXRoOmBfX2dldF9fYC4KICogZGF0YSBkZXNjcmlwdG9ycyBhbHdheXMgb3ZlcnJpZGUgaW5zdGFuY2UgZGljdGlvbmFyaWVzLgpAQCAtMTI4LDEwICsxMjMsNyBAQAogYGBtYGAgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLiAgSWYgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBgYG1gYCByZXZlcnRzIHRvIGEKIHNlYXJjaCB1c2luZyA6bWV0aDpgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX19gLgogCi1Ob3RlLCBpbiBQeXRob24gMi4yLCBgYHN1cGVyKEIsIG9iaikubSgpYGAgd291bGQgb25seSBpbnZva2UgOm1ldGg6YF9fZ2V0X19gIGlmCi1gYG1gYCB3YXMgYSBkYXRhIGRlc2NyaXB0b3IuICBJbiBQeXRob24gMi4zLCBub24tZGF0YSBkZXNjcmlwdG9ycyBhbHNvIGdldAotaW52b2tlZCB1bmxlc3MgYW4gb2xkLXN0eWxlIGNsYXNzIGlzIGludm9sdmVkLiAgVGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlCi1pbiA6YzpmdW5jOmBzdXBlcl9nZXRhdHRybygpYCBpbgorVGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYXJlIGluIDpjOmZ1bmM6YHN1cGVyX2dldGF0dHJvKClgIGluCiBgT2JqZWN0cy90eXBlb2JqZWN0LmMgPGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy92aWV3L3B5dGhvbi90cnVuay9PYmplY3RzL3R5cGVvYmplY3QuYz92aWV3PW1hcmt1cD5gXwogYW5kIGEgcHVyZSBQeXRob24gZXF1aXZhbGVudCBjYW4gYmUgZm91bmQgaW4gYEd1aWRvJ3MgVHV0b3JpYWxgXy4KIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0IGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CmluZGV4IGViYmIyMjkuLmI2MjFhODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9mdW5jdGlvbmFsLnJzdAorKysgYi9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKQEAgLTI5MiwxMyArMjkyLDE0IEBACiBBcHBseWluZyA6ZnVuYzpgaXRlcmAgdG8gYSBkaWN0aW9uYXJ5IGFsd2F5cyBsb29wcyBvdmVyIHRoZSBrZXlzLCBidXQKIGRpY3Rpb25hcmllcyBoYXZlIG1ldGhvZHMgdGhhdCByZXR1cm4gb3RoZXIgaXRlcmF0b3JzLiAgSWYgeW91IHdhbnQgdG8gaXRlcmF0ZQogb3ZlciB2YWx1ZXMgb3Iga2V5L3ZhbHVlIHBhaXJzLCB5b3UgY2FuIGV4cGxpY2l0bHkgY2FsbCB0aGUKLTptZXRoOmB+ZGljdC52YWx1ZXNgIG9yIDptZXRoOmB+ZGljdC5pdGVtc2AgbWV0aG9kcyB0byBnZXQgYW4gYXBwcm9wcmlhdGUgaXRlcmF0b3IuCis6bWV0aDpgfmRpY3QudmFsdWVzYCBvciA6bWV0aDpgfmRpY3QuaXRlbXNgIG1ldGhvZHMgdG8gZ2V0IGFuIGFwcHJvcHJpYXRlCitpdGVyYXRvci4KIAogVGhlIDpmdW5jOmBkaWN0YCBjb25zdHJ1Y3RvciBjYW4gYWNjZXB0IGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBhIGZpbml0ZSBzdHJlYW0KIG9mIGBgKGtleSwgdmFsdWUpYGAgdHVwbGVzOgogCiAgICAgPj4+IEwgPSBbKCdJdGFseScsICdSb21lJyksICgnRnJhbmNlJywgJ1BhcmlzJyksICgnVVMnLCAnV2FzaGluZ3RvbiBEQycpXQotICAgID4+PiBkaWN0KGl0ZXIoTCkpCisgICAgPj4+IGRpY3QoaXRlcihMKSkgICNkb2N0ZXN0OiArU0tJUAogICAgIHsnSXRhbHknOiAnUm9tZScsICdVUyc6ICdXYXNoaW5ndG9uIERDJywgJ0ZyYW5jZSc6ICdQYXJpcyd9CiAKIEZpbGVzIGFsc28gc3VwcG9ydCBpdGVyYXRpb24gYnkgY2FsbGluZyB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggYTExZDNkYS4uZjQ0ZThjMCAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICB1cmxsaWIyLnJzdAogICAgd2Vic2VydmVycy5yc3QKICAgIGFyZ3BhcnNlLnJzdAorICAgaXBhZGRyZXNzLnJzdAogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdCBiL0RvYy9ob3d0by9pcGFkZHJlc3MucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGZmM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvaG93dG8vaXBhZGRyZXNzLnJzdApAQCAtMCwwICsxLDM0MSBAQAorLi4gX2lwYWRkcmVzcy1ob3d0bzoKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitBbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGlwYWRkcmVzcyBtb2R1bGUKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCis6YXV0aG9yOiBQZXRlciBNb29keQorOmF1dGhvcjogTmljayBDb2dobGFuCisKKy4uIHRvcGljOjogT3ZlcnZpZXcKKworICAgVGhpcyBkb2N1bWVudCBhaW1zIHRvIHByb3ZpZGUgYSBnZW50bGUgaW50cm9kdWN0aW9uIHRvIHRoZQorICAgOm1vZDpgaXBhZGRyZXNzYCBtb2R1bGUuIEl0IGlzIGFpbWVkIHByaW1hcmlseSBhdCB1c2VycyB0aGF0IGFyZW4ndAorICAgYWxyZWFkeSBmYW1pbGlhciB3aXRoIElQIG5ldHdvcmtpbmcgdGVybWlub2xvZ3ksIGJ1dCBtYXkgYWxzbyBiZSB1c2VmdWwKKyAgIHRvIG5ldHdvcmsgZW5naW5lZXJzIHdhbnRpbmcgYW4gb3ZlcnZpZXcgb2YgaG93IDptb2Q6YGlwYWRkcmVzc2AKKyAgIHJlcHJlc2VudHMgSVAgbmV0d29yayBhZGRyZXNzaW5nIGNvbmNlcHRzLgorCisKK0NyZWF0aW5nIEFkZHJlc3MvTmV0d29yay9JbnRlcmZhY2Ugb2JqZWN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NpbmNlIDptb2Q6YGlwYWRkcmVzc2AgaXMgYSBtb2R1bGUgZm9yIGluc3BlY3RpbmcgYW5kIG1hbmlwdWxhdGluZyBJUCBhZGRyZXNzZXMsCit0aGUgZmlyc3QgdGhpbmcgeW91J2xsIHdhbnQgdG8gZG8gaXMgY3JlYXRlIHNvbWUgb2JqZWN0cy4gIFlvdSBjYW4gdXNlCis6bW9kOmBpcGFkZHJlc3NgIHRvIGNyZWF0ZSBvYmplY3RzIGZyb20gc3RyaW5ncyBhbmQgaW50ZWdlcnMuCisKKworQSBOb3RlIG9uIElQIFZlcnNpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yIHJlYWRlcnMgdGhhdCBhcmVuJ3QgcGFydGljdWxhcmx5IGZhbWlsaWFyIHdpdGggSVAgYWRkcmVzc2luZywgaXQncworaW1wb3J0YW50IHRvIGtub3cgdGhhdCB0aGUgSW50ZXJuZXQgUHJvdG9jb2wgaXMgY3VycmVudGx5IGluIHRoZSBwcm9jZXNzCitvZiBtb3ZpbmcgZnJvbSB2ZXJzaW9uIDQgb2YgdGhlIHByb3RvY29sIHRvIHZlcnNpb24gNi4gVGhpcyB0cmFuc2l0aW9uIGlzCitvY2N1cnJpbmcgbGFyZ2VseSBiZWNhdXNlIHZlcnNpb24gNCBvZiB0aGUgcHJvdG9jb2wgZG9lc24ndCBwcm92aWRlIGVub3VnaAorYWRkcmVzc2VzIHRvIGhhbmRsZSB0aGUgbmVlZHMgb2YgdGhlIHdob2xlIHdvcmxkLCBlc3BlY2lhbGx5IGdpdmVuIHRoZQoraW5jcmVhc2luZyBudW1iZXIgb2YgZGV2aWNlcyB3aXRoIGRpcmVjdCBjb25uZWN0aW9ucyB0byB0aGUgaW50ZXJuZXQuCisKK0V4cGxhaW5pbmcgdGhlIGRldGFpbHMgb2YgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHR3byB2ZXJzaW9ucyBvZiB0aGUKK3Byb3RvY29sIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBpbnRyb2R1Y3Rpb24sIGJ1dCByZWFkZXJzIG5lZWQgdG8gYXQKK2xlYXN0IGJlIGF3YXJlIHRoYXQgdGhlc2UgdHdvIHZlcnNpb25zIGV4aXN0LCBhbmQgaXQgd2lsbCBzb21ldGltZXMgYmUKK25lY2Vzc2FyeSB0byBmb3JjZSB0aGUgdXNlIG9mIG9uZSB2ZXJzaW9uIG9yIHRoZSBvdGhlci4KKworCitJUCBIb3N0IEFkZHJlc3NlcworLS0tLS0tLS0tLS0tLS0tLS0KKworQWRkcmVzc2VzLCBvZnRlbiByZWZlcnJlZCB0byBhcyAiaG9zdCBhZGRyZXNzZXMiIGFyZSB0aGUgbW9zdCBiYXNpYyB1bml0Cit3aGVuIHdvcmtpbmcgd2l0aCBJUCBhZGRyZXNzaW5nLiBUaGUgc2ltcGxlc3Qgd2F5IHRvIGNyZWF0ZSBhZGRyZXNzZXMgaXMKK3RvIHVzZSB0aGUgOmZ1bmM6YGlwYWRkcmVzcy5pcF9hZGRyZXNzYCBmYWN0b3J5IGZ1bmN0aW9uLCB3aGljaCBhdXRvbWF0aWNhbGx5CitkZXRlcm1pbmVzIHdoZXRoZXIgdG8gY3JlYXRlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzIGJhc2VkIG9uIHRoZSBwYXNzZWQgaW4KK3ZhbHVlOgorCisuLiB0ZXN0c2V0dXA6OgorICAgPj4+IGltcG9ydCBpcGFkZHJlc3MKKworOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6REI4OjoxJykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCisKK0FkZHJlc3NlcyBjYW4gYWxzbyBiZSBjcmVhdGVkIGRpcmVjdGx5IGZyb20gaW50ZWdlcnMuIFZhbHVlcyB0aGF0IHdpbGwKK2ZpdCB3aXRoaW4gMzIgYml0cyBhcmUgYXNzdW1lZCB0byBiZSBJUHY0IGFkZHJlc3Nlczo6CisKKyAgID4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygzMjIxMjI1OTg1KQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjEpCisgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEnKQorCitUbyBmb3JjZSB0aGUgdXNlIG9mIElQdjQgb3IgSVB2NiBhZGRyZXNzZXMsIHRoZSByZWxldmFudCBjbGFzc2VzIGNhbiBiZQoraW52b2tlZCBkaXJlY3RseS4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHRvIGZvcmNlIGNyZWF0aW9uIG9mIElQdjYKK2FkZHJlc3NlcyBmb3Igc21hbGwgaW50ZWdlcnM6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoMSkKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoMSkKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoMSkKKyAgIElQdjZBZGRyZXNzKCc6OjEnKQorCisKK0RlZmluaW5nIE5ldHdvcmtzCistLS0tLS0tLS0tLS0tLS0tLQorCitIb3N0IGFkZHJlc3NlcyBhcmUgdXN1YWxseSBncm91cGVkIHRvZ2V0aGVyIGludG8gSVAgbmV0d29ya3MsIHNvCis6bW9kOmBpcGFkZHJlc3NgIHByb3ZpZGVzIGEgd2F5IHRvIGNyZWF0ZSwgaW5zcGVjdCBhbmQgbWFuaXB1bGF0ZSBuZXR3b3JrCitkZWZpbml0aW9ucy4gSVAgbmV0d29yayBvYmplY3RzIGFyZSBjb25zdHJ1Y3RlZCBmcm9tIHN0cmluZ3MgdGhhdCBkZWZpbmUgdGhlCityYW5nZSBvZiBob3N0IGFkZHJlc3NlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoYXQgbmV0d29yay4gVGhlIHNpbXBsZXN0IGZvcm0KK2ZvciB0aGF0IGluZm9ybWF0aW9uIGlzIGEgIm5ldHdvcmsgYWRkcmVzcy9uZXR3b3JrIHByZWZpeCIgcGFpciwgd2hlcmUgdGhlCitwcmVmaXggZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgYml0cyB0aGF0IGFyZSBjb21wYXJlZCB0byBkZXRlcm1pbmUKK3doZXRoZXIgb3Igbm90IGFuIGFkZHJlc3MgaXMgcGFydCBvZiB0aGUgbmV0d29yayBhbmQgdGhlIG5ldHdvcmsgYWRkcmVzcworZGVmaW5lcyB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhvc2UgYml0cy4KKworQXMgZm9yIGFkZHJlc3NlcywgYSBmYWN0b3J5IGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRoYXQgZGV0ZXJtaW5lcyB0aGUgY29ycmVjdAorSVAgdmVyc2lvbiBhdXRvbWF0aWNhbGx5OjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKworTmV0d29yayBvYmplY3RzIGNhbm5vdCBoYXZlIGFueSBob3N0IGJpdHMgc2V0LiAgVGhlIHByYWN0aWNhbCBlZmZlY3Qgb2YgdGhpcworaXMgdGhhdCBgYDE5Mi4wLjIuMS8yNGBgIGRvZXMgbm90IGRlc2NyaWJlIGEgbmV0d29yay4gIFN1Y2ggZGVmaW5pdGlvbnMgYXJlCityZWZlcnJlZCB0byBhcyBpbnRlcmZhY2Ugb2JqZWN0cyBzaW5jZSB0aGUgaXAtb24tYS1uZXR3b3JrIG5vdGF0aW9uIGlzCitjb21tb25seSB1c2VkIHRvIGRlc2NyaWJlIG5ldHdvcmsgaW50ZXJmYWNlcyBvZiBhIGNvbXB1dGVyIG9uIGEgZ2l2ZW4gbmV0d29yaworYW5kIGFyZSBkZXNjcmliZWQgZnVydGhlciBpbiB0aGUgbmV4dCBzZWN0aW9uLgorCitCeSBkZWZhdWx0LCBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIG5ldHdvcmsgb2JqZWN0IHdpdGggaG9zdCBiaXRzIHNldCB3aWxsCityZXN1bHQgaW4gOmV4YzpgVmFsdWVFcnJvcmAgYmVpbmcgcmFpc2VkLiBUbyByZXF1ZXN0IHRoYXQgdGhlCithZGRpdGlvbmFsIGJpdHMgaW5zdGVhZCBiZSBjb2VyY2VkIHRvIHplcm8sIHRoZSBmbGFnIGBgc3RyaWN0PUZhbHNlYGAgY2FuCitiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjEvMjQnKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAxOTIuMC4yLjEvMjQgaGFzIGhvc3QgYml0cyBzZXQKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTkyLjAuMi4xLzI0Jywgc3RyaWN0PUZhbHNlKQorICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKK1doaWxlIHRoZSBzdHJpbmcgZm9ybSBvZmZlcnMgc2lnbmlmaWNhbnRseSBtb3JlIGZsZXhpYmlsaXR5LCBuZXR3b3JrcyBjYW4KK2Fsc28gYmUgZGVmaW5lZCB3aXRoIGludGVnZXJzLCBqdXN0IGxpa2UgaG9zdCBhZGRyZXNzZXMuIEluIHRoaXMgY2FzZSwgdGhlCituZXR3b3JrIGlzIGNvbnNpZGVyZWQgdG8gY29udGFpbiBvbmx5IHRoZSBzaW5nbGUgYWRkcmVzcyBpZGVudGlmaWVkIGJ5IHRoZQoraW50ZWdlciwgc28gdGhlIG5ldHdvcmsgcHJlZml4IGluY2x1ZGVzIHRoZSBlbnRpcmUgbmV0d29yayBhZGRyZXNzOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKDMyMjEyMjU5ODQpCisgICBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzMyJykKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yayg0MjU0MDc2NjQxMTI4MjU5Mjg1NjkwMzk4NDk1MTY1MzgyNjU2MCkKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCisKK0FzIHdpdGggYWRkcmVzc2VzLCBjcmVhdGlvbiBvZiBhIHBhcnRpY3VsYXIga2luZCBvZiBuZXR3b3JrIGNhbiBiZSBmb3JjZWQKK2J5IGNhbGxpbmcgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgdGhlIGZhY3RvcnkKK2Z1bmN0aW9uLgorCisKK0hvc3QgSW50ZXJmYWNlcworLS0tLS0tLS0tLS0tLS0tCisKK0FzIG1lbnRpb25lZCBqdXN0IGFib3ZlLCBpZiB5b3UgbmVlZCB0byBkZXNjcmliZSBhbiBhZGRyZXNzIG9uIGEgcGFydGljdWxhcgorbmV0d29yaywgbmVpdGhlciB0aGUgYWRkcmVzcyBub3IgdGhlIG5ldHdvcmsgY2xhc3NlcyBhcmUgc3VmZmljaWVudC4KK05vdGF0aW9uIGxpa2UgYGAxOTIuMC4yLjEvMjRgYCBpcyBjb21tb25seSB1c2VkIGJ5IG5ldHdvcmsgZW5naW5lZXJzIGFuZCB0aGUKK3Blb3BsZSB3aG8gd3JpdGUgdG9vbHMgZm9yIGZpcmV3YWxscyBhbmQgcm91dGVycyBhcyBzaG9ydGhhbmQgZm9yICJ0aGUgaG9zdAorYGAxOTIuMC4yLjFgYCBvbiB0aGUgbmV0d29yayBgYDE5Mi4wLjIuMC8yNGBgIiwgQWNjb3JkaW5nbHksIDptb2Q6YGlwYWRkcmVzc2AKK3Byb3ZpZGVzIGEgc2V0IG9mIGh5YnJpZCBjbGFzc2VzIHRoYXQgYXNzb2NpYXRlIGFuIGFkZHJlc3Mgd2l0aCBhIHBhcnRpY3VsYXIKK25ldHdvcmsuIFRoZSBpbnRlcmZhY2UgZm9yIGNyZWF0aW9uIGlzIGlkZW50aWNhbCB0byB0aGF0IGZvciBkZWZpbmluZyBuZXR3b3JrCitvYmplY3RzLCBleGNlcHQgdGhhdCB0aGUgYWRkcmVzcyBwb3J0aW9uIGlzbid0IGNvbnN0cmFpbmVkIHRvIGJlaW5nIGEgbmV0d29yaworYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzE5Mi4wLjIuMS8yNCcpCisgICBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgPj4+IGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKKyAgIElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKKworSW50ZWdlciBpbnB1dHMgYXJlIGFjY2VwdGVkIChhcyB3aXRoIG5ldHdvcmtzKSwgYW5kIHVzZSBvZiBhIHBhcnRpY3VsYXIgSVAKK3ZlcnNpb24gY2FuIGJlIGZvcmNlZCBieSBjYWxsaW5nIHRoZSByZWxldmFudCBjb25zdHJ1Y3RvciBkaXJlY3RseS4KKworCitJbnNwZWN0aW5nIEFkZHJlc3MvTmV0d29yay9JbnRlcmZhY2UgT2JqZWN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWW91J3ZlIGdvbmUgdG8gdGhlIHRyb3VibGUgb2YgY3JlYXRpbmcgYW4gSVB2KDR8NikoQWRkcmVzc3xOZXR3b3JrfEludGVyZmFjZSkKK29iamVjdCwgc28geW91IHByb2JhYmx5IHdhbnQgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IGl0LiAgOm1vZDpgaXBhZGRyZXNzYAordHJpZXMgdG8gbWFrZSBkb2luZyB0aGlzIGVhc3kgYW5kIGludHVpdGl2ZS4KKworRXh0cmFjdGluZyB0aGUgSVAgdmVyc2lvbjo6CisKKyAgID4+PiBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IGFkZHI2ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgID4+PiBhZGRyNi52ZXJzaW9uCisgICA2CisgICA+Pj4gYWRkcjQudmVyc2lvbgorICAgNAorCitPYnRhaW5pbmcgdGhlIG5ldHdvcmsgZnJvbSBhbiBpbnRlcmZhY2U6OgorCisgICA+Pj4gaG9zdDQgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxOTIuMC4yLjEvMjQnKQorICAgPj4+IGhvc3Q0Lm5ldHdvcmsKKyAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGhvc3Q2ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQorICAgPj4+IGhvc3Q2Lm5ldHdvcmsKKyAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKKworRmluZGluZyBvdXQgaG93IG1hbnkgaW5kaXZpZHVhbCBhZGRyZXNzZXMgYXJlIGluIGEgbmV0d29yazo6CisKKyAgID4+PiBuZXQ0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICA+Pj4gbmV0NC5udW1fYWRkcmVzc2VzCisgICAyNTYKKyAgID4+PiBuZXQ2ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzk2JykKKyAgID4+PiBuZXQ2Lm51bV9hZGRyZXNzZXMKKyAgIDQyOTQ5NjcyOTYKKworSXRlcmF0aW5nIHRocm91Z2ggdGhlICJ1c2FibGUiIGFkZHJlc3NlcyBvbiBhIG5ldHdvcms6OgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IGZvciB4IGluIG5ldDQuaG9zdHMoKToKKyAgIC4uLiAgICAgcHJpbnQoeCkgICMgZG9jdGVzdDogK0VMTElQU0lTCisgICAxOTIuMC4yLjEKKyAgIDE5Mi4wLjIuMgorICAgMTkyLjAuMi4zCisgICAxOTIuMC4yLjQKKyAgIC4uLgorICAgMTkyLjAuMi4yNTIKKyAgIDE5Mi4wLjIuMjUzCisgICAxOTIuMC4yLjI1NAorCisKK09idGFpbmluZyB0aGUgbmV0bWFzayAoaS5lLiBzZXQgYml0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXR3b3JrIHByZWZpeCkgb3IKK3RoZSBob3N0bWFzayAoYW55IGJpdHMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIG5ldG1hc2spOgorCisgICA+Pj4gbmV0NCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorICAgPj4+IG5ldDQubmV0bWFzaworICAgSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjAnKQorICAgPj4+IG5ldDQuaG9zdG1hc2sKKyAgIElQdjRBZGRyZXNzKCcwLjAuMC4yNTUnKQorICAgPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQorICAgPj4+IG5ldDYubmV0bWFzaworICAgSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorICAgPj4+IG5ldDYuaG9zdG1hc2sKKyAgIElQdjZBZGRyZXNzKCc6OmZmZmY6ZmZmZicpCisKKworRXhwbG9kaW5nIG9yIGNvbXByZXNzaW5nIHRoZSBhZGRyZXNzOjoKKworICAgPj4+IGFkZHI2LmV4cGxvZGVkCisgICAnMjAwMTowZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxJworICAgPj4+IGFkZHI2LmNvbXByZXNzZWQKKyAgICcyMDAxOmRiODo6MScKKyAgID4+PiBuZXQ2LmV4cGxvZGVkCisgICAnMjAwMTowZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwLzk2JworICAgPj4+IG5ldDYuY29tcHJlc3NlZAorICAgJzIwMDE6ZGI4OjovOTYnCisKK1doaWxlIElQdjQgZG9lc24ndCBzdXBwb3J0IGV4cGxvc2lvbiBvciBjb21wcmVzc2lvbiwgdGhlIGFzc29jaWF0ZWQgb2JqZWN0cworc3RpbGwgcHJvdmlkZSB0aGUgcmVsZXZhbnQgcHJvcGVydGllcyBzbyB0aGF0IHZlcnNpb24gbmV1dHJhbCBjb2RlIGNhbgorZWFzaWx5IGVuc3VyZSB0aGUgbW9zdCBjb25jaXNlIG9yIG1vc3QgdmVyYm9zZSBmb3JtIGlzIHVzZWQgZm9yIElQdjYKK2FkZHJlc3NlcyB3aGlsZSBzdGlsbCBjb3JyZWN0bHkgaGFuZGxpbmcgSVB2NCBhZGRyZXNzZXMuCisKKworTmV0d29ya3MgYXMgbGlzdHMgb2YgQWRkcmVzc2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSXQncyBzb21ldGltZXMgdXNlZnVsIHRvIHRyZWF0IG5ldHdvcmtzIGFzIGxpc3RzLiAgVGhpcyBtZWFucyBpdCBpcyBwb3NzaWJsZQordG8gaW5kZXggdGhlbSBsaWtlIHRoaXM6OgorCisgICA+Pj4gbmV0NFsxXQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gbmV0NFstMV0KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjI1NScpCisgICA+Pj4gbmV0NlsxXQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKKyAgID4+PiBuZXQ2Wy0xXQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjpmZmZmOmZmZmYnKQorCisKK0l0IGFsc28gbWVhbnMgdGhhdCBuZXR3b3JrIG9iamVjdHMgbGVuZCB0aGVtc2VsdmVzIHRvIHVzaW5nIHRoZSBsaXN0CittZW1iZXJzaGlwIHRlc3Qgc3ludGF4IGxpa2UgdGhpczo6CisKKyAgIGlmIGFkZHJlc3MgaW4gbmV0d29yazoKKyAgICAgICAjIGRvIHNvbWV0aGluZworCitDb250YWlubWVudCB0ZXN0aW5nIGlzIGRvbmUgZWZmaWNpZW50bHkgYmFzZWQgb24gdGhlIG5ldHdvcmsgcHJlZml4OjoKKworICAgPj4+IGFkZHI0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpCisgICA+Pj4gYWRkcjQgaW4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICBUcnVlCisgICA+Pj4gYWRkcjQgaW4gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE5Mi4wLjMuMC8yNCcpCisgICBGYWxzZQorCisKK0NvbXBhcmlzb25zCis9PT09PT09PT09PQorCis6bW9kOmBpcGFkZHJlc3NgIHByb3ZpZGVzIHNvbWUgc2ltcGxlLCBob3BlZnVsbHkgaW50dWl0aXZlIHdheXMgdG8gY29tcGFyZQorb2JqZWN0cywgd2hlcmUgaXQgbWFrZXMgc2Vuc2U6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMScpIDwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4wLjIuMicpCisgICBUcnVlCisKK0EgOmV4YzpgVHlwZUVycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkIGlmIHlvdSB0cnkgdG8gY29tcGFyZSBvYmplY3RzIG9mCitkaWZmZXJlbnQgdmVyc2lvbnMgb3IgZGlmZmVyZW50IHR5cGVzLgorCisKK1VzaW5nIElQIEFkZHJlc3NlcyB3aXRoIG90aGVyIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3RoZXIgbW9kdWxlcyB0aGF0IHVzZSBJUCBhZGRyZXNzZXMgKHN1Y2ggYXMgOm1vZDpgc29ja2V0YCkgdXN1YWxseSB3b24ndAorYWNjZXB0IG9iamVjdHMgZnJvbSB0aGlzIG1vZHVsZSBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBtdXN0IGJlIGNvZXJjZWQgdG8KK2FuIGludGVnZXIgb3Igc3RyaW5nIHRoYXQgdGhlIG90aGVyIG1vZHVsZSB3aWxsIGFjY2VwdDo6CisKKyAgID4+PiBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMC4yLjEnKQorICAgPj4+IHN0cihhZGRyNCkKKyAgICcxOTIuMC4yLjEnCisgICA+Pj4gaW50KGFkZHI0KQorICAgMzIyMTIyNTk4NQorCisKK0dldHRpbmcgbW9yZSBkZXRhaWwgd2hlbiBpbnN0YW5jZSBjcmVhdGlvbiBmYWlscworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1doZW4gY3JlYXRpbmcgYWRkcmVzcy9uZXR3b3JrL2ludGVyZmFjZSBvYmplY3RzIHVzaW5nIHRoZSB2ZXJzaW9uLWFnbm9zdGljCitmYWN0b3J5IGZ1bmN0aW9ucywgYW55IGVycm9ycyB3aWxsIGJlIHJlcG9ydGVkIGFzIDpleGM6YFZhbHVlRXJyb3JgIHdpdGgKK2EgZ2VuZXJpYyBlcnJvciBtZXNzYWdlIHRoYXQgc2ltcGx5IHNheXMgdGhlIHBhc3NlZCBpbiB2YWx1ZSB3YXMgbm90CityZWNvZ25pemVkIGFzIGFuIG9iamVjdCBvZiB0aGF0IHR5cGUuIFRoZSBsYWNrIG9mIGEgc3BlY2lmaWMgZXJyb3IgaXMKK2JlY2F1c2UgaXQncyBuZWNlc3NhcnkgdG8ga25vdyB3aGV0aGVyIHRoZSB2YWx1ZSBpcyAqc3VwcG9zZWQqIHRvIGJlIElQdjQKK29yIElQdjYgaW4gb3JkZXIgdG8gcHJvdmlkZSBtb3JlIGRldGFpbCBvbiB3aHkgaXQgaGFzIGJlZW4gcmVqZWN0ZWQuCisKK1RvIHN1cHBvcnQgdXNlIGNhc2VzIHdoZXJlIGl0IGlzIHVzZWZ1bCB0byBoYXZlIGFjY2VzcyB0byB0aGlzIGFkZGl0aW9uYWwKK2RldGFpbCwgdGhlIGluZGl2aWR1YWwgY2xhc3MgY29uc3RydWN0b3JzIGFjdHVhbGx5IHJhaXNlIHRoZQorOmV4YzpgVmFsdWVFcnJvcmAgc3ViY2xhc3NlcyA6ZXhjOmBpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3JgIGFuZAorOmV4YzpgaXBhZGRyZXNzLk5ldG1hc2tWYWx1ZUVycm9yYCB0byBpbmRpY2F0ZSBleGFjdGx5IHdoaWNoIHBhcnQgb2YKK3RoZSBkZWZpbml0aW9uIGZhaWxlZCB0byBwYXJzZSBjb3JyZWN0bHkuCisKK1RoZSBlcnJvciBtZXNzYWdlcyBhcmUgc2lnbmlmaWNhbnRseSBtb3JlIGRldGFpbGVkIHdoZW4gdXNpbmcgdGhlCitjbGFzcyBjb25zdHJ1Y3RvcnMgZGlyZWN0bHkuIEZvciBleGFtcGxlOjoKKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCIxOTIuMTY4LjAuMjU2IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBWYWx1ZUVycm9yOiAnMTkyLjE2OC4wLjI1NicgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCIxOTIuMTY4LjAuMjU2IikKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBpcGFkZHJlc3MuQWRkcmVzc1ZhbHVlRXJyb3I6IE9jdGV0IDI1NiAoPiAyNTUpIG5vdCBwZXJtaXR0ZWQgaW4gJzE5Mi4xNjguMC4yNTYnCisKKyAgID4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygiMTkyLjE2OC4wLjEvNjQiKQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgIFZhbHVlRXJyb3I6ICcxOTIuMTY4LjAuMS82NCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBuZXR3b3JrCisgICA+Pj4gaXBhZGRyZXNzLklQdjROZXR3b3JrKCIxOTIuMTY4LjAuMS82NCIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgaXBhZGRyZXNzLk5ldG1hc2tWYWx1ZUVycm9yOiAnNjQnIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2sKKworSG93ZXZlciwgYm90aCBvZiB0aGUgbW9kdWxlIHNwZWNpZmljIGV4Y2VwdGlvbnMgaGF2ZSA6ZXhjOmBWYWx1ZUVycm9yYCBhcyB0aGVpcgorcGFyZW50IGNsYXNzLCBzbyBpZiB5b3UncmUgbm90IGNvbmNlcm5lZCB3aXRoIHRoZSBwYXJ0aWN1bGFyIHR5cGUgb2YgZXJyb3IsCit5b3UgY2FuIHN0aWxsIHdyaXRlIGNvZGUgbGlrZSB0aGUgZm9sbG93aW5nOjoKKworICAgdHJ5OgorICAgICAgIG5ldHdvcmsgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoYWRkcmVzcykKKyAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgIHByaW50KCdhZGRyZXNzL25ldG1hc2sgaXMgaW52YWxpZCBmb3IgSVB2NDonLCBhZGRyZXNzKQorCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKaW5kZXggMzcwYzc1Ny4uOTJhZjBlYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CisrKyBiL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdApAQCAtMTMxNiw2ICsxMzE2LDMzIEBACiBzZWN0aW9uIDxodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4zL3RvcGljcy9sb2dnaW5nLyNjb25maWd1cmluZy1sb2dnaW5nPmBfCiBvZiB0aGUgRGphbmdvIGRvY3VtZW50YXRpb24uCiAKKy4uIF9jb29rYm9vay1yb3RhdG9yLW5hbWVyOgorCitVc2luZyBhIHJvdGF0b3IgYW5kIG5hbWVyIHRvIGN1c3RvbWlzZSBsb2cgcm90YXRpb24gcHJvY2Vzc2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQW4gZXhhbXBsZSBvZiBob3cgeW91IGNhbiBkZWZpbmUgYSBuYW1lciBhbmQgcm90YXRvciBpcyBnaXZlbiBpbiB0aGUgZm9sbG93aW5nCitzbmlwcGV0LCB3aGljaCBzaG93cyB6bGliLWJhc2VkIGNvbXByZXNzaW9uIG9mIHRoZSBsb2cgZmlsZTo6CisKKyAgICBkZWYgbmFtZXIobmFtZSk6CisgICAgICAgIHJldHVybiBuYW1lICsgIi5neiIKKworICAgIGRlZiByb3RhdG9yKHNvdXJjZSwgZGVzdCk6CisgICAgICAgIHdpdGggb3Blbihzb3VyY2UsICJyYiIpIGFzIHNmOgorICAgICAgICAgICAgZGF0YSA9IHNmLnJlYWQoKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MoZGF0YSwgOSkKKyAgICAgICAgICAgIHdpdGggb3BlbihkZXN0LCAid2IiKSBhcyBkZjoKKyAgICAgICAgICAgICAgICBkZi53cml0ZShjb21wcmVzc2VkKQorICAgICAgICBvcy5yZW1vdmUoc291cmNlKQorCisgICAgcmggPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIoLi4uKQorICAgIHJoLnJvdGF0b3IgPSByb3RhdG9yCisgICAgcmgubmFtZXIgPSBuYW1lcgorCitUaGVzZSBhcmUgbm90ICJ0cnVlIiAuZ3ogZmlsZXMsIGFzIHRoZXkgYXJlIGJhcmUgY29tcHJlc3NlZCBkYXRhLCB3aXRoIG5vCisiY29udGFpbmVyIiBzdWNoIGFzIHlvdeKAmWQgZmluZCBpbiBhbiBhY3R1YWwgZ3ppcCBmaWxlLiBUaGlzIHNuaXBwZXQgaXMganVzdAorZm9yIGlsbHVzdHJhdGlvbiBwdXJwb3Nlcy4KKwogQSBtb3JlIGVsYWJvcmF0ZSBtdWx0aXByb2Nlc3NpbmcgZXhhbXBsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xNTcyLDcgKzE1OTksNyBAQAogCiAgICAgICAnQVNDSUkgc2VjdGlvblx1ZmVmZlVuaWNvZGUgc2VjdGlvbicKIAotICAgVGhlIFVuaWNvZGUgY29kZSBwb2ludCBgYCdcZmVmZmBgYCwgd2hlbiBlbmNvZGVkIHVzaW5nIFVURi04LCB3aWxsIGJlCisgICBUaGUgVW5pY29kZSBjb2RlIHBvaW50IGBgJ1xmZWZmJ2BgLCB3aGVuIGVuY29kZWQgdXNpbmcgVVRGLTgsIHdpbGwgYmUKICAgIGVuY29kZWQgYXMgYSBVVEYtOCBCT00gLS0gdGhlIGJ5dGUtc3RyaW5nIGBgYidceGVmXHhiYlx4YmYnYGAuCiAKICMuIFJlcGxhY2UgdGhlIEFTQ0lJIHNlY3Rpb24gd2l0aCB3aGF0ZXZlciBwbGFjZWhvbGRlcnMgeW91IGxpa2UsIGJ1dCBtYWtlIHN1cmUKZGlmZiAtLWdpdCBhL0RvYy9ob3d0by9zb2NrZXRzLnJzdCBiL0RvYy9ob3d0by9zb2NrZXRzLnJzdAppbmRleCAyNzliYjNlLi5jYTY1MjhiIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vc29ja2V0cy5yc3QKKysrIGIvRG9jL2hvd3RvL3NvY2tldHMucnN0CkBAIC0yNSw4ICsyNSw4IEBACiB3b3JraW5nLiBJdCBkb2Vzbid0IGNvdmVyIHRoZSBmaW5lIHBvaW50cyAoYW5kIHRoZXJlIGFyZSBhIGxvdCBvZiB0aGVtKSwgYnV0IEkKIGhvcGUgaXQgd2lsbCBnaXZlIHlvdSBlbm91Z2ggYmFja2dyb3VuZCB0byBiZWdpbiB1c2luZyB0aGVtIGRlY2VudGx5LgogCi1JJ20gb25seSBnb2luZyB0byB0YWxrIGFib3V0IElORVQgc29ja2V0cywgYnV0IHRoZXkgYWNjb3VudCBmb3IgYXQgbGVhc3QgOTklIG9mCi10aGUgc29ja2V0cyBpbiB1c2UuIEFuZCBJJ2xsIG9ubHkgdGFsayBhYm91dCBTVFJFQU0gc29ja2V0cyAtIHVubGVzcyB5b3UgcmVhbGx5CitJJ20gb25seSBnb2luZyB0byB0YWxrIGFib3V0IElORVQgKGkuZS4gSVB2NCkgc29ja2V0cywgYnV0IHRoZXkgYWNjb3VudCBmb3IgYXQgbGVhc3QgOTklIG9mCit0aGUgc29ja2V0cyBpbiB1c2UuIEFuZCBJJ2xsIG9ubHkgdGFsayBhYm91dCBTVFJFQU0gKGkuZS4gVENQKSBzb2NrZXRzIC0gdW5sZXNzIHlvdSByZWFsbHkKIGtub3cgd2hhdCB5b3UncmUgZG9pbmcgKGluIHdoaWNoIGNhc2UgdGhpcyBIT1dUTyBpc24ndCBmb3IgeW91ISksIHlvdSdsbCBnZXQKIGJldHRlciBiZWhhdmlvciBhbmQgcGVyZm9ybWFuY2UgZnJvbSBhIFNUUkVBTSBzb2NrZXQgdGhhbiBhbnl0aGluZyBlbHNlLiBJIHdpbGwKIHRyeSB0byBjbGVhciB1cCB0aGUgbXlzdGVyeSBvZiB3aGF0IGEgc29ja2V0IGlzLCBhcyB3ZWxsIGFzIHNvbWUgaGludHMgb24gaG93IHRvCkBAIC0yMDgsMTAgKzIwOCwxMCBAQAogICAgICAgICAgICAgICAgdG90YWxzZW50ID0gdG90YWxzZW50ICsgc2VudAogCiAgICAgICAgZGVmIG15cmVjZWl2ZShzZWxmKToKLSAgICAgICAgICAgbXNnID0gJycKKyAgICAgICAgICAgbXNnID0gYicnCiAgICAgICAgICAgIHdoaWxlIGxlbihtc2cpIDwgTVNHTEVOOgogICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnNvY2sucmVjdihNU0dMRU4tbGVuKG1zZykpCi0gICAgICAgICAgICAgICBpZiBjaHVuayA9PSAnJzoKKyAgICAgICAgICAgICAgIGlmIGNodW5rID09IGInJzoKICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInNvY2tldCBjb25uZWN0aW9uIGJyb2tlbiIpCiAgICAgICAgICAgICAgICBtc2cgPSBtc2cgKyBjaHVuawogICAgICAgICAgICByZXR1cm4gbXNnCkBAIC0zNzEsMTIgKzM3MSw2IEBACiBwb3RlbnRpYWxfd3JpdGVycyBsaXN0LiBJZiBpdCBzaG93cyB1cCBpbiB0aGUgd3JpdGFibGUgbGlzdCwgeW91IGhhdmUgYSBkZWNlbnQKIGNoYW5jZSB0aGF0IGl0IGhhcyBjb25uZWN0ZWQuCiAKLU9uZSB2ZXJ5IG5hc3R5IHByb2JsZW0gd2l0aCBgYHNlbGVjdGBgOiBpZiBzb21ld2hlcmUgaW4gdGhvc2UgaW5wdXQgbGlzdHMgb2YKLXNvY2tldHMgaXMgb25lIHdoaWNoIGhhcyBkaWVkIGEgbmFzdHkgZGVhdGgsIHRoZSBgYHNlbGVjdGBgIHdpbGwgZmFpbC4gWW91IHRoZW4KLW5lZWQgdG8gbG9vcCB0aHJvdWdoIGV2ZXJ5IHNpbmdsZSBkYW1uIHNvY2tldCBpbiBhbGwgdGhvc2UgbGlzdHMgYW5kIGRvIGEKLWBgc2VsZWN0KFtzb2NrXSxbXSxbXSwwKWBgIHVudGlsIHlvdSBmaW5kIHRoZSBiYWQgb25lLiBUaGF0IHRpbWVvdXQgb2YgMCBtZWFucwotaXQgd29uJ3QgdGFrZSBsb25nLCBidXQgaXQncyB1Z2x5LgotCiBBY3R1YWxseSwgYGBzZWxlY3RgYCBjYW4gYmUgaGFuZHkgZXZlbiB3aXRoIGJsb2NraW5nIHNvY2tldHMuIEl0J3Mgb25lIHdheSBvZgogZGV0ZXJtaW5pbmcgd2hldGhlciB5b3Ugd2lsbCBibG9jayAtIHRoZSBzb2NrZXQgcmV0dXJucyBhcyByZWFkYWJsZSB3aGVuIHRoZXJlJ3MKIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVycy4gIEhvd2V2ZXIsIHRoaXMgc3RpbGwgZG9lc24ndCBoZWxwIHdpdGggdGhlIHByb2JsZW0gb2YKQEAgLTM4NiwyNiArMzgwLDYgQEAKIGZpbGVzLiBEb24ndCB0cnkgdGhpcyBvbiBXaW5kb3dzLiBPbiBXaW5kb3dzLCBgYHNlbGVjdGBgIHdvcmtzIHdpdGggc29ja2V0cwogb25seS4gQWxzbyBub3RlIHRoYXQgaW4gQywgbWFueSBvZiB0aGUgbW9yZSBhZHZhbmNlZCBzb2NrZXQgb3B0aW9ucyBhcmUgZG9uZQogZGlmZmVyZW50bHkgb24gV2luZG93cy4gSW4gZmFjdCwgb24gV2luZG93cyBJIHVzdWFsbHkgdXNlIHRocmVhZHMgKHdoaWNoIHdvcmsKLXZlcnksIHZlcnkgd2VsbCkgd2l0aCBteSBzb2NrZXRzLiBGYWNlIGl0LCBpZiB5b3Ugd2FudCBhbnkga2luZCBvZiBwZXJmb3JtYW5jZSwKLXlvdXIgY29kZSB3aWxsIGxvb2sgdmVyeSBkaWZmZXJlbnQgb24gV2luZG93cyB0aGFuIG9uIFVuaXguCit2ZXJ5LCB2ZXJ5IHdlbGwpIHdpdGggbXkgc29ja2V0cy4KIAogCi1QZXJmb3JtYW5jZQotLS0tLS0tLS0tLS0KLQotVGhlcmUncyBubyBxdWVzdGlvbiB0aGF0IHRoZSBmYXN0ZXN0IHNvY2tldHMgY29kZSB1c2VzIG5vbi1ibG9ja2luZyBzb2NrZXRzIGFuZAotc2VsZWN0IHRvIG11bHRpcGxleCB0aGVtLiBZb3UgY2FuIHB1dCB0b2dldGhlciBzb21ldGhpbmcgdGhhdCB3aWxsIHNhdHVyYXRlIGEKLUxBTiBjb25uZWN0aW9uIHdpdGhvdXQgcHV0dGluZyBhbnkgc3RyYWluIG9uIHRoZSBDUFUuCi0KLVRoZSB0cm91YmxlIGlzIHRoYXQgYW4gYXBwIHdyaXR0ZW4gdGhpcyB3YXkgY2FuJ3QgZG8gbXVjaCBvZiBhbnl0aGluZyBlbHNlIC0KLWl0IG5lZWRzIHRvIGJlIHJlYWR5IHRvIHNodWZmbGUgYnl0ZXMgYXJvdW5kIGF0IGFsbCB0aW1lcy4gQXNzdW1pbmcgdGhhdCB5b3VyCi1hcHAgaXMgYWN0dWFsbHkgc3VwcG9zZWQgdG8gZG8gc29tZXRoaW5nIG1vcmUgdGhhbiB0aGF0LCB0aHJlYWRpbmcgaXMgdGhlCi1vcHRpbWFsIHNvbHV0aW9uLCAoYW5kIHVzaW5nIG5vbi1ibG9ja2luZyBzb2NrZXRzIHdpbGwgYmUgZmFzdGVyIHRoYW4gdXNpbmcKLWJsb2NraW5nIHNvY2tldHMpLgotCi1GaW5hbGx5LCByZW1lbWJlciB0aGF0IGV2ZW4gdGhvdWdoIGJsb2NraW5nIHNvY2tldHMgYXJlIHNvbWV3aGF0IHNsb3dlciB0aGFuCi1ub24tYmxvY2tpbmcsIGluIG1hbnkgY2FzZXMgdGhleSBhcmUgdGhlICJyaWdodCIgc29sdXRpb24uIEFmdGVyIGFsbCwgaWYgeW91cgotYXBwIGlzIGRyaXZlbiBieSB0aGUgZGF0YSBpdCByZWNlaXZlcyBvdmVyIGEgc29ja2V0LCB0aGVyZSdzIG5vdCBtdWNoIHNlbnNlIGluCi1jb21wbGljYXRpbmcgdGhlIGxvZ2ljIGp1c3Qgc28geW91ciBhcHAgY2FuIHdhaXQgb24gYGBzZWxlY3RgYCBpbnN0ZWFkIG9mCi1gYHJlY3ZgYC4KLQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0IGIvRG9jL2hvd3RvL3VuaWNvZGUucnN0CmluZGV4IGY5ZWVhZTQuLjVkOWUwMjcgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by91bmljb2RlLnJzdAorKysgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKQEAgLTQxNCw3ICs0MTQsNyBAQAogLS0tLS0tLS0tLQogCiBUaGUgYGBzdHJgYCB0eXBlIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIGxpYnJhcnkgcmVmZXJlbmNlIGF0Ci06cmVmOmB0eXBlc3NlcWAuCis6cmVmOmB0ZXh0c2VxYC4KIAogVGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6bW9kOmB1bmljb2RlZGF0YWAgbW9kdWxlLgogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdXJsbGliMi5yc3QgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKaW5kZXggODdmNDJiYS4uOTU1ZTQ1NSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VybGxpYjIucnN0CisrKyBiL0RvYy9ob3d0by91cmxsaWIyLnJzdApAQCAtNTYsNiArNTYsMTMgQEAKICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oJ2h0dHA6Ly9weXRob24ub3JnLycpCiAgICAgaHRtbCA9IHJlc3BvbnNlLnJlYWQoKQogCitJZiB5b3Ugd2lzaCB0byByZXRyaWV2ZSBhIHJlc291cmNlIHZpYSBVUkwgYW5kIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uLAoreW91IGNhbiBkbyBzbyB2aWEgdGhlIDpmdW5jOmB1cmxyZXRyaWV2ZWAgZnVuY3Rpb246OgorCisgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0CisgICAgbG9jYWxfZmlsZW5hbWUsIGhlYWRlcnMgPSB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZSgnaHR0cDovL3B5dGhvbi5vcmcvJykKKyAgICBodG1sID0gb3Blbihsb2NhbF9maWxlbmFtZSkKKwogTWFueSB1c2VzIG9mIHVybGxpYiB3aWxsIGJlIHRoYXQgc2ltcGxlIChub3RlIHRoYXQgaW5zdGVhZCBvZiBhbiAnaHR0cDonIFVSTCB3ZQogY291bGQgaGF2ZSB1c2VkIGFuIFVSTCBzdGFydGluZyB3aXRoICdmdHA6JywgJ2ZpbGU6JywgZXRjLikuICBIb3dldmVyLCBpdCdzIHRoZQogcHVycG9zZSBvZiB0aGlzIHR1dG9yaWFsIHRvIGV4cGxhaW4gdGhlIG1vcmUgY29tcGxpY2F0ZWQgY2FzZXMsIGNvbmNlbnRyYXRpbmcgb24KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9tcF9iZW5jaG1hcmtzLnB5IGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKaW5kZXggYWNkZjY0Mi4uMzc2M2VhOSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKKysrIGIvRG9jL2luY2x1ZGVzL21wX2JlbmNobWFya3MucHkKQEAgLTYsMTYgKzYsMTIgQEAKICMKIAogaW1wb3J0IHRpbWUKLWltcG9ydCBzeXMKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBxdWV1ZQogaW1wb3J0IGdjCiAKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIF90aW1lciA9IHRpbWUuY2xvY2sKLWVsc2U6Ci0gICAgX3RpbWVyID0gdGltZS50aW1lCitfdGltZXIgPSB0aW1lLnBlcmZfY291bnRlcgogCiBkZWx0YSA9IDEKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5Mi5jIGIvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCmluZGV4IDliOGVhZmIuLjk2NDE1NTggMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTIuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04NiwxNSArODQsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEwNSwxNCArOTQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE0NSwxMiArMTI3LDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMTczLDcgKzE1NSw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Mih2b2lkKSAKK1B5SW5pdF9ub2RkeTIodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5My5jIGIvRG9jL2luY2x1ZGVzL25vZGR5My5jCmluZGV4IDg5ZjNhNzcuLjhhNWE3NTMgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTMuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxTU2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC04OCwyMiArODYsMjIgQEAKIHN0YXRpYyBpbnQKIE5vZGR5X3NldGZpcnN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGZpcnN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gICAgICAKLSAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+Zmlyc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gIHJldHVybiAwOworICAgIGlmICghIFB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlyc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihzZWxmLT5maXJzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5maXJzdCA9IHZhbHVlOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTYsMzAgKzExNCwzMCBAQAogc3RhdGljIGludAogTm9kZHlfc2V0bGFzdChOb2RkeSAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQogewotICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJDYW5ub3QgZGVsZXRlIHRoZSBsYXN0IGF0dHJpYnV0ZSIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICAKLSAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGxhc3QgYXR0cmlidXRlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmciKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgICAgIAotICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7Ci0gIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gIHNlbGYtPmxhc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKLSAgcmV0dXJuIDA7CisgICAgaWYgKCEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5sYXN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5R2V0U2V0RGVmIE5vZGR5X2dldHNldGVyc1tdID0gewotICAgIHsiZmlyc3QiLCAKKyAgICB7ImZpcnN0IiwKICAgICAgKGdldHRlcilOb2RkeV9nZXRmaXJzdCwgKHNldHRlcilOb2RkeV9zZXRmaXJzdCwKICAgICAgImZpcnN0IG5hbWUiLAogICAgICBOVUxMfSwKLSAgICB7Imxhc3QiLCAKKyAgICB7Imxhc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGxhc3QsIChzZXR0ZXIpTm9kZHlfc2V0bGFzdCwKICAgICAgImxhc3QgbmFtZSIsCiAgICAgIE5VTEx9LApAQCAtMTQ5LDIzICsxNDcsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiT08iLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRm9ybWF0KGZvcm1hdCwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUyAlUyIsIHNlbGYtPmZpcnN0LCBzZWxmLT5sYXN0KTsKIH0KIAogc3RhdGljIFB5TWV0aG9kRGVmIE5vZGR5X21ldGhvZHNbXSA9IHsKQEAgLTE5OCwxMiArMTgwLDEyIEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKiB0cF9mbGFncyAqLwogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBOb2RkeV9tZXRob2RzLCAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgTm9kZHlfbWVtYmVycywgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIE5vZGR5X2dldHNldGVycywgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwpAQCAtMjI2LDcgKzIwOCw3IEBACiB9OwogCiBQeU1PRElOSVRfRlVOQwotUHlJbml0X25vZGR5Myh2b2lkKSAKK1B5SW5pdF9ub2RkeTModm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jIGIvRG9jL2luY2x1ZGVzL25vZGR5NC5jCmluZGV4IDZhOTZmYWMuLmViOTYyMmEgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTQuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCAKK3N0YXRpYyBpbnQKIE5vZGR5X2NsZWFyKE5vZGR5ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0bXA7CkBAIC01OCwxOCArNTgsMTYgQEAKICAgICBzZWxmID0gKE5vZGR5ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5maXJzdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBzZWxmLT5udW1iZXIgPSAwOwogICAgIH0KQEAgLTg0LDEwICs4MiwxMCBAQAogCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaXJzdCIsICJsYXN0IiwgIm51bWJlciIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwgCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T09pIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VsZi0+bnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIC0xOyAKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZpcnN0KSB7CiAgICAgICAgIHRtcCA9IHNlbGYtPmZpcnN0OwpAQCAtMTIwLDE1ICsxMTgsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIE5vZGR5X25hbWUoTm9kZHkqIHNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwotCi0gICAgaWYgKGZvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIlcyAlcyIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJmaXJzdCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzOSwxNCArMTI4LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIk9PIiwgc2VsZi0+Zmlyc3QsIHNlbGYtPmxhc3QpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMgJVMiLCBzZWxmLT5maXJzdCwgc2VsZi0+bGFzdCk7CiB9CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBOb2RkeV9tZXRob2RzW10gPSB7CkBAIC0xODIsMTAgKzE2NCwxMCBAQAogICAgICJOb2RkeSBvYmplY3RzIiwgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgICh0cmF2ZXJzZXByb2MpTm9kZHlfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KICAgICAoaW5xdWlyeSlOb2RkeV9jbGVhciwgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgTm9kZHlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIE5vZGR5X21lbWJlcnMsICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTIwOCw3ICsxOTAsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9ub2RkeTQodm9pZCkgCitQeUluaXRfbm9kZHk0KHZvaWQpCiB7CiAgICAgUHlPYmplY3QqIG07CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L190aHJlYWQucnN0IGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKaW5kZXggMzY5ZTljZC4uNzUxYzNlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvX3RocmVhZC5yc3QKQEAgLTM1LDYgKzM1LDkgQEAKIAogICAgUmFpc2VkIG9uIHRocmVhZC1zcGVjaWZpYyBlcnJvcnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGlzIG5vdyBhIHN5bm9ueW0gb2YgdGhlIGJ1aWx0LWluIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisKIAogLi4gZGF0YTo6IExvY2tUeXBlCiAKQEAgLTkxLDcgKzk0LDcgQEAKICAgICpzaXplKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIHN0YWNrIHNpemUgdG8gYmUgdXNlZCBmb3Igc3Vic2VxdWVudGx5IGNyZWF0ZWQKICAgIHRocmVhZHMsIGFuZCBtdXN0IGJlIDAgKHVzZSBwbGF0Zm9ybSBvciBjb25maWd1cmVkIGRlZmF1bHQpIG9yIGEgcG9zaXRpdmUKICAgIGludGVnZXIgdmFsdWUgb2YgYXQgbGVhc3QgMzIsNzY4ICgzMmtCKS4gSWYgY2hhbmdpbmcgdGhlIHRocmVhZCBzdGFjayBzaXplIGlzCi0gICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBUaHJlYWRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCisgICB1bnN1cHBvcnRlZCwgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzIHJhaXNlZC4gIElmIHRoZSBzcGVjaWZpZWQgc3RhY2sgc2l6ZSBpcwogICAgaW52YWxpZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBzdGFjayBzaXplIGlzIHVubW9kaWZpZWQuICAzMmtCCiAgICBpcyBjdXJyZW50bHkgdGhlIG1pbmltdW0gc3VwcG9ydGVkIHN0YWNrIHNpemUgdmFsdWUgdG8gZ3VhcmFudGVlIHN1ZmZpY2llbnQKICAgIHN0YWNrIHNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmLiAgTm90ZSB0aGF0IHNvbWUgcGxhdGZvcm1zIG1heSBoYXZlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hYmMucnN0IGIvRG9jL2xpYnJhcnkvYWJjLnJzdAppbmRleCAxMDQ4YjI0Li5kY2E2OTkzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FiYy5yc3QKQEAgLTE4LDcgKzE4LDcgQEAKIAogVGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgY29uY3JldGUgY2xhc3NlcyB0aGF0IGRlcml2ZSBmcm9tCiBBQkNzOyB0aGVzZSBjYW4sIG9mIGNvdXJzZSwgYmUgZnVydGhlciBkZXJpdmVkLiBJbiBhZGRpdGlvbiB0aGUKLTptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUgaGFzIHNvbWUgQUJDcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hldGhlcgorOm1vZDpgY29sbGVjdGlvbnMuYWJjYCBzdWJtb2R1bGUgaGFzIHNvbWUgQUJDcyB0aGF0IGNhbiBiZSB1c2VkIHRvIHRlc3Qgd2hldGhlcgogYSBjbGFzcyBvciBpbnN0YW5jZSBwcm92aWRlcyBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLCBmb3IgZXhhbXBsZSwgaXMgaXQKIGhhc2hhYmxlIG9yIGEgbWFwcGluZy4KIApAQCAtNTUsNiArNTUsOSBAQAogICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh0dXBsZSwgTXlBQkMpCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCgpLCBNeUFCQykKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFJldHVybnMgdGhlIHJlZ2lzdGVyZWQgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorCiAgICBZb3UgY2FuIGFsc28gb3ZlcnJpZGUgdGhpcyBtZXRob2QgaW4gYW4gYWJzdHJhY3QgYmFzZSBjbGFzczoKIAogICAgLi4gbWV0aG9kOjogX19zdWJjbGFzc2hvb2tfXyhzdWJjbGFzcykKQEAgLTEyNCwxOSArMTI3LDE4IEBACiAgICBhdmFpbGFibGUgYXMgYSBtZXRob2Qgb2YgYGBGb29gYCwgc28gaXQgaXMgcHJvdmlkZWQgc2VwYXJhdGVseS4KIAogCi1JdCBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGVjb3JhdG9yczoKK1RoZSA6bW9kOmBhYmNgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGVjb3JhdG9yczoKIAogLi4gZGVjb3JhdG9yOjogYWJzdHJhY3RtZXRob2QoZnVuY3Rpb24pCiAKICAgIEEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3QgbWV0aG9kcy4KIAotICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYAotICAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZAotICAgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4KLSAgIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsCi0gICBtZWNoYW5pc21zLgorICAgVXNpbmcgdGhpcyBkZWNvcmF0b3IgcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYAorICAgb3IgaXMgZGVyaXZlZCBmcm9tIGl0LiAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gIFRoZSBhYnN0cmFjdCBtZXRob2RzIGNhbiBiZSBjYWxsZWQgdXNpbmcgYW55CisgICBvZiB0aGUgbm9ybWFsICdzdXBlcicgY2FsbCBtZWNoYW5pc21zLiAgOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBtYXkgYmUgdXNlZAorICAgdG8gZGVjbGFyZSBhYnN0cmFjdCBtZXRob2RzIGZvciBwcm9wZXJ0aWVzIGFuZCBkZXNjcmlwdG9ycy4KIAogICAgRHluYW1pY2FsbHkgYWRkaW5nIGFic3RyYWN0IG1ldGhvZHMgdG8gYSBjbGFzcywgb3IgYXR0ZW1wdGluZyB0byBtb2RpZnkgdGhlCiAgICBhYnN0cmFjdGlvbiBzdGF0dXMgb2YgYSBtZXRob2Qgb3IgY2xhc3Mgb25jZSBpdCBpcyBjcmVhdGVkLCBhcmUgbm90CkBAIC0xNDQsMTIgKzE0Niw1MiBAQAogICAgcmVndWxhciBpbmhlcml0YW5jZTsgInZpcnR1YWwgc3ViY2xhc3NlcyIgcmVnaXN0ZXJlZCB3aXRoIHRoZSBBQkMncwogICAgOm1ldGg6YHJlZ2lzdGVyYCBtZXRob2QgYXJlIG5vdCBhZmZlY3RlZC4KIAotICAgVXNhZ2U6OgorICAgV2hlbiA6ZnVuYzpgYWJzdHJhY3RtZXRob2RgIGlzIGFwcGxpZWQgaW4gY29tYmluYXRpb24gd2l0aCBvdGhlciBtZXRob2QKKyAgIGRlc2NyaXB0b3JzLCBpdCBzaG91bGQgYmUgYXBwbGllZCBhcyB0aGUgaW5uZXJtb3N0IGRlY29yYXRvciwgYXMgc2hvd24gaW4KKyAgIHRoZSBmb2xsb3dpbmcgdXNhZ2UgZXhhbXBsZXM6OgogCiAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1BQkNNZXRhKToKICAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfbWV0aG9kKHNlbGYsIC4uLik6CiAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgIEBhYnN0cmFjdG1ldGhvZAorICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9jbGFzc21ldGhvZChjbHMsIC4uLik6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICBAYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICBkZWYgbXlfYWJzdHJhY3Rfc3RhdGljbWV0aG9kKC4uLik6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICBAbXlfYWJzdHJhY3RfcHJvcGVydHkuc2V0dGVyCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIG15X2Fic3RyYWN0X3Byb3BlcnR5KHNlbGYsIHZhbCk6CisgICAgICAgICAgICAgIC4uLgorCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9nZXRfeChzZWxmKToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgQGFic3RyYWN0bWV0aG9kCisgICAgICAgICAgZGVmIF9zZXRfeChzZWxmLCB2YWwpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICB4ID0gcHJvcGVydHkoX2dldF94LCBfc2V0X3gpCisKKyAgIEluIG9yZGVyIHRvIGNvcnJlY3RseSBpbnRlcm9wZXJhdGUgd2l0aCB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBtYWNoaW5lcnksCisgICB0aGUgZGVzY3JpcHRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyBhYnN0cmFjdCB1c2luZworICAgOmF0dHI6YF9faXNhYnN0cmFjdG1ldGhvZF9fYC4gSW4gZ2VuZXJhbCwgdGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGBgVHJ1ZWBgCisgICBpZiBhbnkgb2YgdGhlIG1ldGhvZHMgdXNlZCB0byBjb21wb3NlIHRoZSBkZXNjcmlwdG9yIGFyZSBhYnN0cmFjdC4gRm9yCisgICBleGFtcGxlLCBQeXRob24ncyBidWlsdC1pbiBwcm9wZXJ0eSBkb2VzIHRoZSBlcXVpdmFsZW50IG9mOjoKKworICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAuLi4KKyAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICBkZWYgX19pc2Fic3RyYWN0bWV0aG9kX18oc2VsZik6CisgICAgICAgICAgICAgIHJldHVybiBhbnkoZ2V0YXR0cihmLCAnX19pc2Fic3RyYWN0bWV0aG9kX18nLCBGYWxzZSkgZm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgZiBpbiAoc2VsZi5fZmdldCwgc2VsZi5fZnNldCwgc2VsZi5fZmRlbCkpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNzQsNiArMjE2LDggQEAKICAgICAgICAgICAgICAgLi4uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgIFVzZSA6Y2xhc3M6YGNsYXNzbWV0aG9kYCB3aXRoIDpmdW5jOmBhYnN0cmFjdG1ldGhvZGAgaW5zdGVhZC4KIAogCiAuLiBkZWNvcmF0b3I6OiBhYnN0cmFjdHN0YXRpY21ldGhvZChmdW5jdGlvbikKQEAgLTE4OSwxOCArMjMzLDE5IEBACiAgICAgICAgICAgICAgIC4uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICBVc2UgOmNsYXNzOmBzdGF0aWNtZXRob2RgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgogCiAKLS4uIGZ1bmN0aW9uOjogYWJzdHJhY3Rwcm9wZXJ0eShmZ2V0PU5vbmUsIGZzZXQ9Tm9uZSwgZmRlbD1Ob25lLCBkb2M9Tm9uZSkKKy4uIGRlY29yYXRvcjo6IGFic3RyYWN0cHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCiAKICAgIEEgc3ViY2xhc3Mgb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBwcm9wZXJ0eWAsIGluZGljYXRpbmcgYW4gYWJzdHJhY3QgcHJvcGVydHkuCiAKLSAgIFVzaW5nIHRoaXMgZnVuY3Rpb24gcmVxdWlyZXMgdGhhdCB0aGUgY2xhc3MncyBtZXRhY2xhc3MgaXMgOmNsYXNzOmBBQkNNZXRhYCBvcgotICAgaXMgZGVyaXZlZCBmcm9tIGl0LgotICAgQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBBQkNNZXRhYCBjYW5ub3QgYmUKLSAgIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzIGFyZSBvdmVycmlkZGVuLgotICAgVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZyBhbnkgb2YgdGhlIG5vcm1hbAotICAgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCisgICBVc2luZyB0aGlzIGZ1bmN0aW9uIHJlcXVpcmVzIHRoYXQgdGhlIGNsYXNzJ3MgbWV0YWNsYXNzIGlzIDpjbGFzczpgQUJDTWV0YWAKKyAgIG9yIGlzIGRlcml2ZWQgZnJvbSBpdC4gQSBjbGFzcyB0aGF0IGhhcyBhIG1ldGFjbGFzcyBkZXJpdmVkIGZyb20KKyAgIDpjbGFzczpgQUJDTWV0YWAgY2Fubm90IGJlIGluc3RhbnRpYXRlZCB1bmxlc3MgYWxsIG9mIGl0cyBhYnN0cmFjdCBtZXRob2RzCisgICBhbmQgcHJvcGVydGllcyBhcmUgb3ZlcnJpZGRlbi4gVGhlIGFic3RyYWN0IHByb3BlcnRpZXMgY2FuIGJlIGNhbGxlZCB1c2luZworICAgYW55IG9mIHRoZSBub3JtYWwgJ3N1cGVyJyBjYWxsIG1lY2hhbmlzbXMuCiAKICAgIFVzYWdlOjoKIApAQCAtMjE3LDYgKzI2Miw5IEBACiAgICAgICAgICAgZGVmIHNldHgoc2VsZiwgdmFsdWUpOiAuLi4KICAgICAgICAgICB4ID0gYWJzdHJhY3Rwcm9wZXJ0eShnZXR4LCBzZXR4KQogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICAgVXNlIDpjbGFzczpgcHJvcGVydHlgIHdpdGggOmZ1bmM6YGFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkCisKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QgYi9Eb2MvbGlicmFyeS9hcmNoaXZpbmcucnN0CmluZGV4IDc1ZDEzN2MuLmM5Mjg0OTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FyY2hpdmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJjaGl2aW5nLnJzdApAQCAtNSw4ICs1LDkgQEAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHN1cHBvcnQgZGF0YSBjb21wcmVzc2lvbiB3aXRoIHRoZSB6bGliLAotZ3ppcCwgYW5kIGJ6aXAyIGFsZ29yaXRobXMsIGFuZCAgdGhlIGNyZWF0aW9uIG9mIFpJUC0gYW5kIHRhci1mb3JtYXQgYXJjaGl2ZXMuCi1TZWUgYWxzbyA6cmVmOmBhcmNoaXZpbmctb3BlcmF0aW9uc2AgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlLgorZ3ppcCwgYnppcDIgYW5kIGx6bWEgYWxnb3JpdGhtcywgYW5kIHRoZSBjcmVhdGlvbiBvZiBaSVAtIGFuZCB0YXItZm9ybWF0CithcmNoaXZlcy4gIFNlZSBhbHNvIDpyZWY6YGFyY2hpdmluZy1vcGVyYXRpb25zYCBwcm92aWRlZCBieSB0aGUgOm1vZDpgc2h1dGlsYAorbW9kdWxlLgogCiAKIC4uIHRvY3RyZWU6OgpAQCAtMTQsNSArMTUsNiBAQAogICAgemxpYi5yc3QKICAgIGd6aXAucnN0CiAgICBiejIucnN0CisgICBsem1hLnJzdAogICAgemlwZmlsZS5yc3QKICAgIHRhcmZpbGUucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKaW5kZXggNTI3M2U5Yi4uOWY2YTFlYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdApAQCAtMzcxLDE2ICszNzEsMTYgQEAKIF5eXl5eXl5eXl5eXl5eXgogCiA6Y2xhc3M6YEFyZ3VtZW50UGFyc2VyYCBvYmplY3RzIGFsbG93IHRoZSBoZWxwIGZvcm1hdHRpbmcgdG8gYmUgY3VzdG9taXplZCBieQotc3BlY2lmeWluZyBhbiBhbHRlcm5hdGUgZm9ybWF0dGluZyBjbGFzcy4gIEN1cnJlbnRseSwgdGhlcmUgYXJlIHRocmVlIHN1Y2gKK3NwZWNpZnlpbmcgYW4gYWx0ZXJuYXRlIGZvcm1hdHRpbmcgY2xhc3MuICBDdXJyZW50bHksIHRoZXJlIGFyZSBmb3VyIHN1Y2gKIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIFJhd1RleHRIZWxwRm9ybWF0dGVyCiAgICAgICAgICAgIEFyZ3VtZW50RGVmYXVsdHNIZWxwRm9ybWF0dGVyCisgICAgICAgICAgIE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcgogCi1UaGUgZmlyc3QgdHdvIGFsbG93IG1vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLAotd2hpbGUgdGhlIGxhc3QgYXV0b21hdGljYWxseSBhZGRzIGluZm9ybWF0aW9uIGFib3V0IGFyZ3VtZW50IGRlZmF1bHQgdmFsdWVzLgotCis6Y2xhc3M6YFJhd0Rlc2NyaXB0aW9uSGVscEZvcm1hdHRlcmAgYW5kIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIGdpdmUKK21vcmUgY29udHJvbCBvdmVyIGhvdyB0ZXh0dWFsIGRlc2NyaXB0aW9ucyBhcmUgZGlzcGxheWVkLgogQnkgZGVmYXVsdCwgOmNsYXNzOmBBcmd1bWVudFBhcnNlcmAgb2JqZWN0cyBsaW5lLXdyYXAgdGhlIGRlc2NyaXB0aW9uXyBhbmQKIGVwaWxvZ18gdGV4dHMgaW4gY29tbWFuZC1saW5lIGhlbHAgbWVzc2FnZXM6OgogCkBAIC00MzMsOCArNDMzLDggQEAKIDpjbGFzczpgUmF3VGV4dEhlbHBGb3JtYXR0ZXJgIG1haW50YWlucyB3aGl0ZXNwYWNlIGZvciBhbGwgc29ydHMgb2YgaGVscCB0ZXh0LAogaW5jbHVkaW5nIGFyZ3VtZW50IGRlc2NyaXB0aW9ucy4KIAotVGhlIG90aGVyIGZvcm1hdHRlciBjbGFzcyBhdmFpbGFibGUsIDpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgLAotd2lsbCBhZGQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgZWFjaCBvZiB0aGUgYXJndW1lbnRzOjoKKzpjbGFzczpgQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXJgIGF1dG9tYXRpY2FsbHkgYWRkcyBpbmZvcm1hdGlvbiBhYm91dAorZGVmYXVsdCB2YWx1ZXMgdG8gZWFjaCBvZiB0aGUgYXJndW1lbnQgaGVscCBtZXNzYWdlczo6CiAKICAgID4+PiBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgIC4uLiAgICAgcHJvZz0nUFJPRycsCkBAIC00NTEsNiArNDUxLDI1IEBACiAgICAgLWgsIC0taGVscCAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogICAgIC0tZm9vIEZPTyAgIEZPTyEgKGRlZmF1bHQ6IDQyKQogCis6Y2xhc3M6YE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcmAgdXNlcyB0aGUgbmFtZSBvZiB0aGUgdHlwZV8gYXJndW1lbnQgZm9yIGVhY2gKK2FyZ3VtZW50IGFzIHRoZSBkaXNwbGF5IG5hbWUgZm9yIGl0cyB2YWx1ZXMgKHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZXN0XworYXMgdGhlIHJlZ3VsYXIgZm9ybWF0dGVyIGRvZXMpOjoKKworICAgPj4+IHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgLi4uICAgICBwcm9nPSdQUk9HJywKKyAgIC4uLiAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgID4+PiBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWZvbycsIHR5cGU9aW50KQorICAgPj4+IHBhcnNlci5hZGRfYXJndW1lbnQoJ2JhcicsIHR5cGU9ZmxvYXQpCisgICA+Pj4gcGFyc2VyLnByaW50X2hlbHAoKQorICAgdXNhZ2U6IFBST0cgWy1oXSBbLS1mb28gaW50XSBmbG9hdAorCisgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgZmxvYXQKKworICAgb3B0aW9uYWwgYXJndW1lbnRzOgorICAgICAtaCwgLS1oZWxwICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgICAgIC0tZm9vIGludAorCiAKIGNvbmZsaWN0X2hhbmRsZXIKIF5eXl5eXl5eXl5eXl5eXl4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FycmF5LnJzdCBiL0RvYy9saWJyYXJ5L2FycmF5LnJzdAppbmRleCBkNTYzY2NlLi44ZjY5NDNhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcnJheS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJyYXkucnN0CkBAIC0xNCwzNiArMTQsNTQgQEAKIDpkZm46YHR5cGUgY29kZWAsIHdoaWNoIGlzIGEgc2luZ2xlIGNoYXJhY3Rlci4gIFRoZSBmb2xsb3dpbmcgdHlwZSBjb2RlcyBhcmUKIGRlZmluZWQ6CiAKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IFR5cGUgY29kZSB8IEMgVHlwZSAgICAgICAgIHwgUHl0aG9uIFR5cGUgICAgICAgfCBNaW5pbXVtIHNpemUgaW4gYnl0ZXMgfAotKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PSsKLXwgYGAnYidgYCAgIHwgc2lnbmVkIGNoYXIgICAgfCBpbnQgICAgICAgICAgICAgICB8IDEgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdCJ2BgICAgfCB1bnNpZ25lZCBjaGFyICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ3UnYGAgICB8IFB5X1VOSUNPREUgICAgIHwgVW5pY29kZSBjaGFyYWN0ZXIgfCAyIChzZWUgbm90ZSkgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnaCdgYCAgIHwgc2lnbmVkIHNob3J0ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdIJ2BgICAgfCB1bnNpZ25lZCBzaG9ydCB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ2knYGAgICB8IHNpZ25lZCBpbnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnSSdgYCAgIHwgdW5zaWduZWQgaW50ICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdsJ2BgICAgfCBzaWduZWQgbG9uZyAgICB8IGludCAgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgJ0wnYGAgICB8IHVuc2lnbmVkIGxvbmcgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGAnZidgYCAgIHwgZmxvYXQgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYCdkJ2BgICAgfCBkb3VibGUgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBUeXBlIGNvZGUgfCBDIFR5cGUgICAgICAgICAgICAgfCBQeXRob24gVHlwZSAgICAgICB8IE1pbmltdW0gc2l6ZSBpbiBieXRlcyB8IE5vdGVzIHwKKys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ2InYGAgICB8IHNpZ25lZCBjaGFyICAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnQidgYCAgIHwgdW5zaWduZWQgY2hhciAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAxICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCd1J2BgICAgfCBQeV9VTklDT0RFICAgICAgICAgfCBVbmljb2RlIGNoYXJhY3RlciB8IDIgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2gnYGAgICB8IHNpZ25lZCBzaG9ydCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnSCdgYCAgIHwgdW5zaWduZWQgc2hvcnQgICAgIHwgaW50ICAgICAgICAgICAgICAgfCAyICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdpJ2BgICAgfCBzaWduZWQgaW50ICAgICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ0knYGAgICB8IHVuc2lnbmVkIGludCAgICAgICB8IGludCAgICAgICAgICAgICAgIHwgMiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnbCdgYCAgIHwgc2lnbmVkIGxvbmcgICAgICAgIHwgaW50ICAgICAgICAgICAgICAgfCA0ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdMJ2BgICAgfCB1bnNpZ25lZCBsb25nICAgICAgfCBpbnQgICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3EnYGAgICB8IHNpZ25lZCBsb25nIGxvbmcgICB8IGludCAgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgXCgyKSAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAnUSdgYCAgIHwgdW5zaWduZWQgbG9uZyBsb25nIHwgaW50ICAgICAgICAgICAgICAgfCA4ICAgICAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKworfCBgYCdmJ2BgICAgfCBmbG9hdCAgICAgICAgICAgICAgfCBmbG9hdCAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2QnYGAgICB8IGRvdWJsZSAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfAorKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIAotLi4gbm90ZTo6CitOb3RlczoKIAotICAgVGhlIGBgJ3UnYGAgdHlwZWNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3MgdW5pY29kZSBjaGFyYWN0ZXIuICBPbiBuYXJyb3cKLSAgIFVuaWNvZGUgYnVpbGRzIHRoaXMgaXMgMi1ieXRlcywgb24gd2lkZSBidWlsZHMgdGhpcyBpcyA0LWJ5dGVzLgorKDEpCisgICBUaGUgYGAndSdgYCB0eXBlIGNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3Mgb2Jzb2xldGUgdW5pY29kZSBjaGFyYWN0ZXIKKyAgICg6Yzp0eXBlOmBQeV9VTklDT0RFYCB3aGljaCBpcyA6Yzp0eXBlOmB3Y2hhcl90YCkuIERlcGVuZGluZyBvbiB0aGUKKyAgIHBsYXRmb3JtLCBpdCBjYW4gYmUgMTYgYml0cyBvciAzMiBiaXRzLgorCisgICBgYCd1J2BgIHdpbGwgYmUgcmVtb3ZlZCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYAorICAgQVBJLgorCisgICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjMgNC4wCisKKygyKQorICAgVGhlIGBgJ3EnYGAgYW5kIGBgJ1EnYGAgdHlwZSBjb2RlcyBhcmUgYXZhaWxhYmxlIG9ubHkgaWYKKyAgIHRoZSBwbGF0Zm9ybSBDIGNvbXBpbGVyIHVzZWQgdG8gYnVpbGQgUHl0aG9uIHN1cHBvcnRzIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwKKyAgIG9yLCBvbiBXaW5kb3dzLCA6Yzp0eXBlOmBfX2ludDY0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIFRoZSBhY3R1YWwgcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzIGlzIGRldGVybWluZWQgYnkgdGhlIG1hY2hpbmUgYXJjaGl0ZWN0dXJlCiAoc3RyaWN0bHkgc3BlYWtpbmcsIGJ5IHRoZSBDIGltcGxlbWVudGF0aW9uKS4gIFRoZSBhY3R1YWwgc2l6ZSBjYW4gYmUgYWNjZXNzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzdC5yc3QgYi9Eb2MvbGlicmFyeS9hc3QucnN0CmluZGV4IGUyYzBiNmQuLjE2ZGUzY2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2FzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN0LnJzdApAQCAtOTYsOSArOTYsNiBAQAogQWJzdHJhY3QgR3JhbW1hcgogLS0tLS0tLS0tLS0tLS0tLQogCi1UaGUgbW9kdWxlIGRlZmluZXMgYSBzdHJpbmcgY29uc3RhbnQgYGBfX3ZlcnNpb25fX2BgIHdoaWNoIGlzIHRoZSBkZWNpbWFsCi1TdWJ2ZXJzaW9uIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBzaG93biBiZWxvdy4KLQogVGhlIGFic3RyYWN0IGdyYW1tYXIgaXMgY3VycmVudGx5IGRlZmluZWQgYXMgZm9sbG93czoKIAogLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi8uLi9QYXJzZXIvUHl0aG9uLmFzZGwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCA3NWIzY2RhLi41NWM2MWQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC0xOTcsNiArMTk3LDkgQEAKIG1hcnNoYWxsZWQsIGFmdGVyIHNldHRpbmcgdGhlIGNoYW5uZWwgdGVybWluYXRvciB0byBgYE5vbmVgYCB0byBlbnN1cmUgdGhhdAogYW55IGV4dHJhbmVvdXMgZGF0YSBzZW50IGJ5IHRoZSB3ZWIgY2xpZW50IGFyZSBpZ25vcmVkLiA6OgogCisKKyAgIGltcG9ydCBhc3luY2hhdAorCiAgICBjbGFzcyBodHRwX3JlcXVlc3RfaGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKIAogICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrLCBhZGRyLCBzZXNzaW9ucywgbG9nKToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jb3JlLnJzdAppbmRleCA2MTliN2JiLi43Y2FjY2ExIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY29yZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNvcmUucnN0CkBAIC0xODQsMTIgKzE4NCwxNSBAQAogICAgTW9zdCBvZiB0aGVzZSBhcmUgbmVhcmx5IGlkZW50aWNhbCB0byB0aGVpciBzb2NrZXQgcGFydG5lcnMuCiAKIAotICAgLi4gbWV0aG9kOjogY3JlYXRlX3NvY2tldChmYW1pbHksIHR5cGUpCisgICAuLiBtZXRob2Q6OiBjcmVhdGVfc29ja2V0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgdHlwZT1zb2NrZXQuU09DS19TVFJFQU0pCiAKICAgICAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIHRoZSBjcmVhdGlvbiBvZiBhIG5vcm1hbCBzb2NrZXQsIGFuZCB3aWxsIHVzZSB0aGUKICAgICAgIHNhbWUgb3B0aW9ucyBmb3IgY3JlYXRpb24uICBSZWZlciB0byB0aGUgOm1vZDpgc29ja2V0YCBkb2N1bWVudGF0aW9uIGZvcgogICAgICAgaW5mb3JtYXRpb24gb24gY3JlYXRpbmcgc29ja2V0cy4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgICpmYW1pbHkqIGFuZCAqdHlwZSogYXJndW1lbnRzIGNhbiBiZSBvbWl0dGVkLgorCiAKICAgIC4uIG1ldGhvZDo6IGNvbm5lY3QoYWRkcmVzcykKIApAQCAtMjc0LDEzICsyNzcsMTMgQEAKIEhlcmUgaXMgYSB2ZXJ5IGJhc2ljIEhUVFAgY2xpZW50IHRoYXQgdXNlcyB0aGUgOmNsYXNzOmBkaXNwYXRjaGVyYCBjbGFzcyB0bwogaW1wbGVtZW50IGl0cyBzb2NrZXQgaGFuZGxpbmc6OgogCi0gICBpbXBvcnQgYXN5bmNvcmUsIHNvY2tldAorICAgaW1wb3J0IGFzeW5jb3JlCiAKICAgIGNsYXNzIEhUVFBDbGllbnQoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcGF0aCk6CiAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgIHNlbGYuY29ubmVjdCggKGhvc3QsIDgwKSApCiAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYnl0ZXMoJ0dFVCAlcyBIVFRQLzEuMFxyXG5Ib3N0OiAlc1xyXG5cclxuJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhdGgsIGhvc3QpLCAnYXNjaWknKQpAQCAtMzE0LDcgKzMxNyw2IEBACiBjb25uZWN0aW9ucyBhbmQgZGlzcGF0Y2hlcyB0aGUgaW5jb21pbmcgY29ubmVjdGlvbnMgdG8gYSBoYW5kbGVyOjoKIAogICAgIGltcG9ydCBhc3luY29yZQotICAgIGltcG9ydCBzb2NrZXQKIAogICAgIGNsYXNzIEVjaG9IYW5kbGVyKGFzeW5jb3JlLmRpc3BhdGNoZXJfd2l0aF9zZW5kKToKIApAQCAtMzI3LDcgKzMyOSw3IEBACiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpOgogICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoKQogICAgICAgICAgICAgc2VsZi5zZXRfcmV1c2VfYWRkcigpCiAgICAgICAgICAgICBzZWxmLmJpbmQoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKQEAgLTMzOCw0ICszNDAsMyBAQAogCiAgICAgc2VydmVyID0gRWNob1NlcnZlcignbG9jYWxob3N0JywgODA4MCkKICAgICBhc3luY29yZS5sb29wKCkKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdCBiL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKaW5kZXggN2M3NmJhYi4uMmUyMmNhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXRleGl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CkBAIC05LDEzICs5LDE0IEBACiAKIFRoZSA6bW9kOmBhdGV4aXRgIG1vZHVsZSBkZWZpbmVzIGZ1bmN0aW9ucyB0byByZWdpc3RlciBhbmQgdW5yZWdpc3RlciBjbGVhbnVwCiBmdW5jdGlvbnMuICBGdW5jdGlvbnMgdGh1cyByZWdpc3RlcmVkIGFyZSBhdXRvbWF0aWNhbGx5IGV4ZWN1dGVkIHVwb24gbm9ybWFsCi1pbnRlcnByZXRlciB0ZXJtaW5hdGlvbi4gIFRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQgaXMgbm90Ci1kZWZpbmVkOyBpZiB5b3UgaGF2ZSBjbGVhbnVwIG9wZXJhdGlvbnMgdGhhdCBkZXBlbmQgb24gZWFjaCBvdGhlciwgeW91IHNob3VsZAotd3JhcCB0aGVtIGluIGEgZnVuY3Rpb24gYW5kIHJlZ2lzdGVyIHRoYXQgb25lLiAgVGhpcyBrZWVwcyA6bW9kOmBhdGV4aXRgIHNpbXBsZS4KK2ludGVycHJldGVyIHRlcm1pbmF0aW9uLiAgOm1vZDpgYXRleGl0YCBydW5zIHRoZXNlIGZ1bmN0aW9ucyBpbiB0aGUgKnJldmVyc2UqCitvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgcmVnaXN0ZXJlZDsgaWYgeW91IHJlZ2lzdGVyIGBgQWBgLCBgYEJgYCwgYW5kIGBgQ2BgLAorYXQgaW50ZXJwcmV0ZXIgdGVybWluYXRpb24gdGltZSB0aGV5IHdpbGwgYmUgcnVuIGluIHRoZSBvcmRlciBgYENgYCwgYGBCYGAsCitgYEFgYC4KIAotTm90ZTogdGhlIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHZpYSB0aGlzIG1vZHVsZSBhcmUgbm90IGNhbGxlZCB3aGVuIHRoZSBwcm9ncmFtCi1pcyBraWxsZWQgYnkgYSBzaWduYWwgbm90IGhhbmRsZWQgYnkgUHl0aG9uLCB3aGVuIGEgUHl0aG9uIGZhdGFsIGludGVybmFsIGVycm9yCi1pcyBkZXRlY3RlZCwgb3Igd2hlbiA6ZnVuYzpgb3MuX2V4aXRgIGlzIGNhbGxlZC4KKyoqTm90ZToqKiBUaGUgZnVuY3Rpb25zIHJlZ2lzdGVyZWQgdmlhIHRoaXMgbW9kdWxlIGFyZSBub3QgY2FsbGVkIHdoZW4gdGhlCitwcm9ncmFtIGlzIGtpbGxlZCBieSBhIHNpZ25hbCBub3QgaGFuZGxlZCBieSBQeXRob24sIHdoZW4gYSBQeXRob24gZmF0YWwKK2ludGVybmFsIGVycm9yIGlzIGRldGVjdGVkLCBvciB3aGVuIDpmdW5jOmBvcy5fZXhpdGAgaXMgY2FsbGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoZnVuYywgKmFyZ3MsICoqa2FyZ3MpCkBAIC02Nyw4ICs2OCw5IEBACiBtYWtpbmcgYW4gZXhwbGljaXQgY2FsbCBpbnRvIHRoaXMgbW9kdWxlIGF0IHRlcm1pbmF0aW9uLiA6OgogCiAgICB0cnk6Ci0gICAgICAgX2NvdW50ID0gaW50KG9wZW4oIi90bXAvY291bnRlciIpLnJlYWQoKSkKLSAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgIHdpdGggb3BlbigiL3RtcC9jb3VudGVyIikgYXMgaW5maWxlOgorICAgICAgICAgICBfY291bnQgPSBpbnQoaW5maWxlLnJlYWQoKSkKKyAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICBfY291bnQgPSAwCiAKICAgIGRlZiBpbmNyY291bnRlcihuKToKQEAgLTc2LDcgKzc4LDggQEAKICAgICAgICBfY291bnQgPSBfY291bnQgKyBuCiAKICAgIGRlZiBzYXZlY291bnRlcigpOgotICAgICAgIG9wZW4oIi90bXAvY291bnRlciIsICJ3Iikud3JpdGUoIiVkIiAlIF9jb3VudCkKKyAgICAgICB3aXRoIG9wZW4oIi90bXAvY291bnRlciIsICJ3IikgYXMgb3V0ZmlsZToKKyAgICAgICAgICAgb3V0ZmlsZS53cml0ZSgiJWQiICUgX2NvdW50KQogCiAgICBpbXBvcnQgYXRleGl0CiAgICBhdGV4aXQucmVnaXN0ZXIoc2F2ZWNvdW50ZXIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0IGIvRG9jL2xpYnJhcnkvYmFzZTY0LnJzdAppbmRleCBjMDhkZjE1Li5hZGUwZjA3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iYXNlNjQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Jhc2U2NC5yc3QKQEAgLTE4LDkgKzE4LDE0IEBACiAKIFRoZXJlIGFyZSB0d28gaW50ZXJmYWNlcyBwcm92aWRlZCBieSB0aGlzIG1vZHVsZS4gIFRoZSBtb2Rlcm4gaW50ZXJmYWNlCiBzdXBwb3J0cyBlbmNvZGluZyBhbmQgZGVjb2RpbmcgQVNDSUkgYnl0ZSBzdHJpbmcgb2JqZWN0cyB1c2luZyBhbGwgdGhyZWUKLWFscGhhYmV0cy4gIFRoZSBsZWdhY3kgaW50ZXJmYWNlIHByb3ZpZGVzIGZvciBlbmNvZGluZyBhbmQgZGVjb2RpbmcgdG8gYW5kIGZyb20KLWZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMgYnl0ZSBzdHJpbmdzLCBidXQgb25seSB1c2luZyB0aGUgQmFzZTY0IHN0YW5kYXJkCi1hbHBoYWJldC4KK2FscGhhYmV0cy4gQWRkaXRpb25hbGx5LCB0aGUgZGVjb2RpbmcgZnVuY3Rpb25zIG9mIHRoZSBtb2Rlcm4gaW50ZXJmYWNlIGFsc28KK2FjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuIFRoZSBsZWdhY3kgaW50ZXJmYWNlCitwcm92aWRlcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIGFuZCBmcm9tIGZpbGUtbGlrZSBvYmplY3RzIGFzIHdlbGwgYXMKK2J5dGUgc3RyaW5ncywgYnV0IG9ubHkgdXNpbmcgdGhlIEJhc2U2NCBzdGFuZGFyZCBhbHBoYWJldC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFTQ0lJLW9ubHkgVW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGRlY29kaW5nIGZ1bmN0aW9ucyBvZgorICAgdGhlIG1vZGVybiBpbnRlcmZhY2UuCiAKIFRoZSBtb2Rlcm4gaW50ZXJmYWNlIHByb3ZpZGVzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hcnkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWZiZGMxCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvYmluYXJ5LnJzdApAQCAtMCwwICsxLDIzIEBACisuLiBfYmluYXJ5c2VydmljZXM6CisKKyoqKioqKioqKioqKioqKioqKioqCitCaW5hcnkgRGF0YSBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioKKworVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIHNvbWUgYmFzaWMgc2VydmljZXMgb3BlcmF0aW9ucworZm9yIG1hbmlwdWxhdGlvbiBvZiBiaW5hcnkgZGF0YS4gT3RoZXIgb3BlcmF0aW9ucyBvbiBiaW5hcnkgZGF0YSwgc3BlY2lmaWNhbGx5CitpbiByZWxhdGlvbiB0byBmaWxlIGZvcm1hdHMgYW5kIG5ldHdvcmsgcHJvdG9jb2xzLCBhcmUgZGVzY3JpYmVkIGluIHRoZQorcmVsZXZhbnQgc2VjdGlvbnMuCisKK1NvbWUgbGlicmFyaWVzIGRlc2NyaWJlZCB1bmRlciA6cmVmOmB0ZXh0c2VydmljZXNgIGFsc28gd29yayB3aXRoIGVpdGhlcgorQVNDSUktY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cyAoZm9yIGV4YW1wbGUsIDptb2Q6YHJlYCkgb3IgYWxsIGJpbmFyeSBkYXRhCisoZm9yIGV4YW1wbGUsIDptb2Q6YGRpZmZsaWJgKS4KKworSW4gYWRkaXRpb24sIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uJ3MgYnVpbHQtaW4gYmluYXJ5IGRhdGEgdHlwZXMgaW4KKzpyZWY6YGJpbmFyeXNlcWAuCisKKy4uIHRvY3RyZWU6OgorCisgICBzdHJ1Y3QucnN0CisgICBjb2RlY3MucnN0CisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdCBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAppbmRleCAyYWEzNzAyLi5iYWY0MzBkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CkBAIC0yMCw4ICsyMCwxMyBAQAogCiAuLiBub3RlOjoKIAotICAgRW5jb2RpbmcgYW5kIGRlY29kaW5nIGZ1bmN0aW9ucyBkbyBub3QgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncy4gIE9ubHkgYnl0ZXN0cmluZwotICAgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNhbiBiZSBwcm9jZXNzZWQuCisgICBgYGEyYl8qYGAgZnVuY3Rpb25zIGFjY2VwdCBVbmljb2RlIHN0cmluZ3MgY29udGFpbmluZyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMuCisgICBPdGhlciBmdW5jdGlvbnMgb25seSBhY2NlcHQgYnl0ZXMgYW5kIGJ5dGVzLWNvbXBhdGlibGUgb2JqZWN0cyAoc3VjaCBhcworICAgYnl0ZWFycmF5IG9iamVjdHMgYW5kIG90aGVyIG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSBidWZmZXIgQVBJKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFTQ0lJLW9ubHkgdW5pY29kZSBzdHJpbmdzIGFyZSBub3cgYWNjZXB0ZWQgYnkgdGhlIGBgYTJiXypgYCBmdW5jdGlvbnMuCisKIAogVGhlIDptb2Q6YGJpbmFzY2lpYCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggOTMxNDRiNi4uZDA2YTM5YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC0xLDIwMSArMSwyMDIgQEAKLTptb2Q6YGJ6MmAgLS0tIENvbXByZXNzaW9uIGNvbXBhdGlibGUgd2l0aCA6cHJvZ3JhbTpgYnppcDJgCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOm1vZDpgYnoyYCAtLS0gU3VwcG9ydCBmb3IgOnByb2dyYW06YGJ6aXAyYCBjb21wcmVzc2lvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiBiejIKLSAgIDpzeW5vcHNpczogSW50ZXJmYWNlIHRvIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIHJvdXRpbmVzCi0gICAgICAgICAgICAgIGNvbXBhdGlibGUgd2l0aCBiemlwMi4KKyAgIDpzeW5vcHNpczogSW50ZXJmYWNlcyBmb3IgYnppcDIgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uCiAuLiBtb2R1bGVhdXRob3I6OiBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IEd1c3Rhdm8gTmllbWV5ZXIgPG5pZW1leWVyQGNvbmVjdGl2YS5jb20+CisuLiBzZWN0aW9uYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgogCiAKLVRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSBpbnRlcmZhY2UgZm9yIHRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4KLUl0IGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgb25lLXNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kCi10eXBlcyBmb3Igc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgaW50ZXJmYWNlIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgYnppcDIgY29tcHJlc3Npb24gYWxnb3JpdGhtLgogCi1IZXJlIGlzIGEgc3VtbWFyeSBvZiB0aGUgZmVhdHVyZXMgb2ZmZXJlZCBieSB0aGUgYnoyIG1vZHVsZToKK1RoZSA6bW9kOmBiejJgIG1vZHVsZSBjb250YWluczoKIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgYSBjb21wbGV0ZSBmaWxlIGludGVyZmFjZSwgaW5jbHVkaW5nCi0gIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZWAsIDptZXRoOmB+QloyRmlsZS5yZWFkbGluZXNgLAotICA6bWV0aDpgfkJaMkZpbGUud3JpdGVsaW5lc2AsIDptZXRoOmB+QloyRmlsZS5zZWVrYCwgZXRjOworKiBUaGUgOmZ1bmM6YC5vcGVuYCBmdW5jdGlvbiBhbmQgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBmb3IgcmVhZGluZyBhbmQKKyAgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLgorKiBUaGUgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXMgZm9yCisgIGluY3JlbWVudGFsIChkZSljb21wcmVzc2lvbi4KKyogVGhlIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBmdW5jdGlvbnMgZm9yIG9uZS1zaG90CisgIChkZSljb21wcmVzc2lvbi4KIAotKiA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzIGltcGxlbWVudHMgZW11bGF0ZWQgOm1ldGg6YH5CWjJGaWxlLnNlZWtgIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBpbXBsZW1lbnRzIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQ7Ci0KLSogOmNsYXNzOmBCWjJGaWxlYCBjbGFzcyBvZmZlcnMgYW4gb3B0aW1pemVkIGxpbmUgaXRlcmF0aW9uIHVzaW5nIGEgcmVhZGFoZWFkCi0gIGFsZ29yaXRobTsKLQotKiBTZXF1ZW50aWFsIChkZSljb21wcmVzc2lvbiBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQKLSAgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgIGNsYXNzZXM7Ci0KLSogT25lLXNob3QgKGRlKWNvbXByZXNzaW9uIHN1cHBvcnRlZCBieSA6ZnVuYzpgY29tcHJlc3NgIGFuZCA6ZnVuYzpgZGVjb21wcmVzc2AKLSAgZnVuY3Rpb25zOwotCi0qIFRocmVhZCBzYWZldHkgdXNlcyBpbmRpdmlkdWFsIGxvY2tpbmcgbWVjaGFuaXNtLgorQWxsIG9mIHRoZSBjbGFzc2VzIGluIHRoaXMgbW9kdWxlIG1heSBzYWZlbHkgYmUgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgogCiAKIChEZSljb21wcmVzc2lvbiBvZiBmaWxlcwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhhbmRsaW5nIG9mIGNvbXByZXNzZWQgZmlsZXMgaXMgb2ZmZXJlZCBieSB0aGUgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcy4KKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0ncicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLCByZXR1cm5pbmcgYSA6dGVybTpgZmlsZQorICAgb2JqZWN0YC4KKworICAgQXMgd2l0aCB0aGUgY29uc3RydWN0b3IgZm9yIDpjbGFzczpgQloyRmlsZWAsIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZQorICAgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBvciBhbiBleGlzdGluZworICAgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ3cnYGAsIGBgJ3diJ2BgLAorICAgYGAnYSdgYCwgb3IgYGAnYWInYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnd3QnYGAsIG9yIGBgJ2F0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEJaMkZpbGVgIGNvbnN0cnVjdG9yLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBCWjJGaWxlYAorICAgY29uc3RydWN0b3I6IGBgQloyRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbD1jb21wcmVzc2xldmVsKWBgLiBJbgorICAgdGhpcyBjYXNlLCB0aGUgKmVuY29kaW5nKiwgKmVycm9ycyogYW5kICpuZXdsaW5lKiBhcmd1bWVudHMgbXVzdCBub3QgYmUKKyAgIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgQloyRmlsZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZywgZXJyb3IKKyAgIGhhbmRsaW5nIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKLS4uIGluZGV4OjoKLSAgIHNpbmdsZTogdW5pdmVyc2FsIG5ld2xpbmVzOyBiejIuQloyRmlsZSBjbGFzcworLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPU5vbmUsIGNvbXByZXNzbGV2ZWw9OSkKIAotLi4gY2xhc3M6OiBCWjJGaWxlKGZpbGVuYW1lLCBtb2RlPSdyJywgYnVmZmVyaW5nPTAsIGNvbXByZXNzbGV2ZWw9OSkKKyAgIE9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCiAKLSAgIE9wZW4gYSBiejIgZmlsZS4gTW9kZSBjYW4gYmUgZWl0aGVyIGBgJ3InYGAgb3IgYGAndydgYCwgZm9yIHJlYWRpbmcgKGRlZmF1bHQpCi0gICBvciB3cml0aW5nLiBXaGVuIG9wZW5lZCBmb3Igd3JpdGluZywgdGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QKLSAgIGV4aXN0LCBhbmQgdHJ1bmNhdGVkIG90aGVyd2lzZS4gSWYgKmJ1ZmZlcmluZyogaXMgZ2l2ZW4sIGBgMGBgIG1lYW5zCi0gICB1bmJ1ZmZlcmVkLCBhbmQgbGFyZ2VyIG51bWJlcnMgc3BlY2lmeSB0aGUgYnVmZmVyIHNpemU7IHRoZSBkZWZhdWx0IGlzCi0gICBgYDBgYC4gSWYgKmNvbXByZXNzbGV2ZWwqIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kCi0gICBgYDlgYDsgdGhlIGRlZmF1bHQgaXMgYGA5YGAuIEFkZCBhIGBgJ1UnYGAgdG8gbW9kZSB0byBvcGVuIHRoZSBmaWxlIGZvciBpbnB1dAotICAgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4gIEFueSBsaW5lIGVuZGluZyBpbiB0aGUgaW5wdXQgZmlsZSB3aWxsIGJlCi0gICBzZWVuIGFzIGEgYGAnXG4nYGAgaW4gUHl0aG9uLiAgQWxzbywgYSBmaWxlIHNvIG9wZW5lZCBnYWlucyB0aGUgYXR0cmlidXRlCi0gICA6YXR0cjpgbmV3bGluZXNgOyB0aGUgdmFsdWUgZm9yIHRoaXMgYXR0cmlidXRlIGlzIG9uZSBvZiBgYE5vbmVgYCAobm8gbmV3bGluZQotICAgcmVhZCB5ZXQpLCBgYCdccidgYCwgYGAnXG4nYGAsIGBgJ1xyXG4nYGAgb3IgYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUKLSAgIG5ld2xpbmUgdHlwZXMgc2Vlbi4gVW5pdmVyc2FsIG5ld2xpbmVzIGFyZSBhdmFpbGFibGUgb25seSB3aGVuCi0gICByZWFkaW5nLiBJbnN0YW5jZXMgc3VwcG9ydCBpdGVyYXRpb24gaW4gdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCA6Y2xhc3M6YGZpbGVgCi0gICBpbnN0YW5jZXMuCisgICBJZiAqZmlsZW5hbWUqIGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCwgb3BlbiB0aGUgbmFtZWQgZmlsZQorICAgZGlyZWN0bHkuIE90aGVyd2lzZSwgKmZpbGVuYW1lKiBzaG91bGQgYmUgYSA6dGVybTpgZmlsZSBvYmplY3RgLCB3aGljaCB3aWxsCisgICBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAotICAgOmNsYXNzOmBCWjJGaWxlYCBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCdyJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAndydgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCdhJ2BgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgJ3JiJ2BgLCBgYCd3YidgYCwgYW5kIGBgJ2FiJ2BgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCd3J2BgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgJ2EnYGAuCisKKyAgIFRoZSAqYnVmZmVyaW5nKiBhcmd1bWVudCBpcyBpZ25vcmVkLiBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuCisKKyAgIElmICptb2RlKiBpcyBgYCd3J2BgIG9yIGBgJ2EnYGAsICpjb21wcmVzc2xldmVsKiBjYW4gYmUgYSBudW1iZXIgYmV0d2VlbgorICAgYGAxYGAgYW5kIGBgOWBgIHNwZWNpZnlpbmcgdGhlIGxldmVsIG9mIGNvbXByZXNzaW9uOiBgYDFgYCBwcm9kdWNlcyB0aGUKKyAgIGxlYXN0IGNvbXByZXNzaW9uLCBhbmQgYGA5YGAgKGRlZmF1bHQpIHByb2R1Y2VzIHRoZSBtb3N0IGNvbXByZXNzaW9uLgorCisgICBJZiAqbW9kZSogaXMgYGAncidgYCwgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlCisgICBjb21wcmVzc2VkIHN0cmVhbXMuCisKKyAgIDpjbGFzczpgQloyRmlsZWAgcHJvdmlkZXMgYWxsIG9mIHRoZSBtZW1iZXJzIHNwZWNpZmllZCBieSB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICA6Y2xhc3M6YEJaMkZpbGVgIGFsc28gcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2Q6CisKKyAgIC4uIG1ldGhvZDo6IHBlZWsoW25dKQorCisgICAgICBSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4gQXQgbGVhc3Qgb25lCisgICAgICBieXRlIG9mIGRhdGEgd2lsbCBiZSByZXR1cm5lZCAodW5sZXNzIGF0IEVPRikuIFRoZSBleGFjdCBudW1iZXIgb2YgYnl0ZXMKKyAgICAgIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSA6bWV0aDpgZmlsZW5vYCwgOm1ldGg6YHJlYWRhYmxlYCwgOm1ldGg6YHNlZWthYmxlYCwgOm1ldGg6YHdyaXRhYmxlYCwKKyAgICAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmByZWFkaW50b2AgbWV0aG9kcyB3ZXJlIGFkZGVkLgogCi0gICAuLiBub3RlOjoKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IHdhcyBhZGRlZCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIDp0ZXJtOmBmaWxlIG9iamVjdGAgaW5zdGVhZCBvZiBhbgorICAgICAgYWN0dWFsIGZpbGVuYW1lLgogCi0gICAgICBUaGlzIGNsYXNzIGRvZXMgbm90IHN1cHBvcnQgaW5wdXQgZmlsZXMgY29udGFpbmluZyBtdWx0aXBsZSBzdHJlYW1zIChzdWNoCi0gICAgICBhcyB0aG9zZSBwcm9kdWNlZCBieSB0aGUgOnByb2dyYW06YHBiemlwMmAgdG9vbCkuIFdoZW4gcmVhZGluZyBzdWNoIGFuCi0gICAgICBpbnB1dCBmaWxlLCBvbmx5IHRoZSBmaXJzdCBzdHJlYW0gd2lsbCBiZSBhY2Nlc3NpYmxlLiBJZiB5b3UgcmVxdWlyZQotICAgICAgc3VwcG9ydCBmb3IgbXVsdGktc3RyZWFtIGZpbGVzLCBjb25zaWRlciB1c2luZyB0aGUgdGhpcmQtcGFydHkKLSAgICAgIDptb2Q6YGJ6MmZpbGVgIG1vZHVsZSAoYXZhaWxhYmxlIGZyb20KLSAgICAgIGBQeVBJIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYnoyZmlsZT5gXykuIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEKLSAgICAgIGJhY2twb3J0IG9mIFB5dGhvbiAzLjMncyA6Y2xhc3M6YEJaMkZpbGVgIGNsYXNzLCB3aGljaCBkb2VzIHN1cHBvcnQKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnYSdgYCAoYXBwZW5kKSBtb2RlIHdhcyBhZGRlZCwgYWxvbmcgd2l0aCBzdXBwb3J0IGZvciByZWFkaW5nCiAgICAgICBtdWx0aS1zdHJlYW0gZmlsZXMuCiAKIAotICAgLi4gbWV0aG9kOjogY2xvc2UoKQotCi0gICAgICBDbG9zZSB0aGUgZmlsZS4gU2V0cyBkYXRhIGF0dHJpYnV0ZSA6YXR0cjpgY2xvc2VkYCB0byB0cnVlLiBBIGNsb3NlZCBmaWxlCi0gICAgICBjYW5ub3QgYmUgdXNlZCBmb3IgZnVydGhlciBJL08gb3BlcmF0aW9ucy4gOm1ldGg6YGNsb3NlYCBtYXkgYmUgY2FsbGVkCi0gICAgICBtb3JlIHRoYW4gb25jZSB3aXRob3V0IGVycm9yLgotCi0KLSAgIC4uIG1ldGhvZDo6IHJlYWQoW3NpemVdKQotCi0gICAgICBSZWFkIGF0IG1vc3QgKnNpemUqIHVuY29tcHJlc3NlZCBieXRlcywgcmV0dXJuZWQgYXMgYSBieXRlIHN0cmluZy4gSWYgdGhlCi0gICAgICAqc2l6ZSogYXJndW1lbnQgaXMgbmVnYXRpdmUgb3Igb21pdHRlZCwgcmVhZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4KLQotCi0gICAuLiBtZXRob2Q6OiByZWFkbGluZShbc2l6ZV0pCi0KLSAgICAgIFJldHVybiB0aGUgbmV4dCBsaW5lIGZyb20gdGhlIGZpbGUsIGFzIGEgYnl0ZSBzdHJpbmcsIHJldGFpbmluZyBuZXdsaW5lLgotICAgICAgQSBub24tbmVnYXRpdmUgKnNpemUqIGFyZ3VtZW50IGxpbWl0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8KLSAgICAgIHJldHVybiAoYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZCB0aGVuKS4gUmV0dXJuIGFuIGVtcHR5IGJ5dGUKLSAgICAgIHN0cmluZyBhdCBFT0YuCi0KLQotICAgLi4gbWV0aG9kOjogcmVhZGxpbmVzKFtzaXplXSkKLQotICAgICAgUmV0dXJuIGEgbGlzdCBvZiBsaW5lcyByZWFkLiBUaGUgb3B0aW9uYWwgKnNpemUqIGFyZ3VtZW50LCBpZiBnaXZlbiwgaXMgYW4KLSAgICAgIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGxpbmVzIHJldHVybmVkLgotCi0KLSAgIC4uIG1ldGhvZDo6IHNlZWsob2Zmc2V0Wywgd2hlbmNlXSkKLQotICAgICAgTW92ZSB0byBuZXcgZmlsZSBwb3NpdGlvbi4gQXJndW1lbnQgKm9mZnNldCogaXMgYSBieXRlIGNvdW50LiBPcHRpb25hbAotICAgICAgYXJndW1lbnQgKndoZW5jZSogZGVmYXVsdHMgdG8gYGBvcy5TRUVLX1NFVGBgIG9yIGBgMGBgIChvZmZzZXQgZnJvbSBzdGFydAotICAgICAgb2YgZmlsZTsgb2Zmc2V0IHNob3VsZCBiZSBgYD49IDBgYCk7IG90aGVyIHZhbHVlcyBhcmUgYGBvcy5TRUVLX0NVUmBgIG9yCi0gICAgICBgYDFgYCAobW92ZSByZWxhdGl2ZSB0byBjdXJyZW50IHBvc2l0aW9uOyBvZmZzZXQgY2FuIGJlIHBvc2l0aXZlIG9yCi0gICAgICBuZWdhdGl2ZSksIGFuZCBgYG9zLlNFRUtfRU5EYGAgb3IgYGAyYGAgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGU7Ci0gICAgICBvZmZzZXQgaXMgdXN1YWxseSBuZWdhdGl2ZSwgYWx0aG91Z2ggbWFueSBwbGF0Zm9ybXMgYWxsb3cgc2Vla2luZyBiZXlvbmQKLSAgICAgIHRoZSBlbmQgb2YgYSBmaWxlKS4KLQotICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgb2YgYnoyIGZpbGVzIGlzIGVtdWxhdGVkLCBhbmQgZGVwZW5kaW5nIG9uIHRoZQotICAgICAgcGFyYW1ldGVycyB0aGUgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KLQotCi0gICAuLiBtZXRob2Q6OiB0ZWxsKCkKLQotICAgICAgUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24sIGFuIGludGVnZXIuCi0KLQotICAgLi4gbWV0aG9kOjogd3JpdGUoZGF0YSkKLQotICAgICAgV3JpdGUgdGhlIGJ5dGUgc3RyaW5nICpkYXRhKiB0byBmaWxlLiBOb3RlIHRoYXQgZHVlIHRvIGJ1ZmZlcmluZywKLSAgICAgIDptZXRoOmBjbG9zZWAgbWF5IGJlIG5lZWRlZCBiZWZvcmUgdGhlIGZpbGUgb24gZGlzayByZWZsZWN0cyB0aGUgZGF0YQotICAgICAgd3JpdHRlbi4KLQotCi0gICAuLiBtZXRob2Q6OiB3cml0ZWxpbmVzKHNlcXVlbmNlX29mX2J5dGVfc3RyaW5ncykKLQotICAgICAgV3JpdGUgdGhlIHNlcXVlbmNlIG9mIGJ5dGUgc3RyaW5ncyB0byB0aGUgZmlsZS4gTm90ZSB0aGF0IG5ld2xpbmVzIGFyZSBub3QKLSAgICAgIGFkZGVkLiBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QgcHJvZHVjaW5nIGJ5dGUgc3RyaW5ncy4KLSAgICAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIHdyaXRlKCkgZm9yIGVhY2ggYnl0ZSBzdHJpbmcuCi0KLQotU2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNlcXVlbnRpYWwgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gaXMgZG9uZSB1c2luZyB0aGUgY2xhc3NlcwotOmNsYXNzOmBCWjJDb21wcmVzc29yYCBhbmQgOmNsYXNzOmBCWjJEZWNvbXByZXNzb3JgLgotCitJbmNyZW1lbnRhbCAoZGUpY29tcHJlc3Npb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBjbGFzczo6IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbD05KQogCiAgICBDcmVhdGUgYSBuZXcgY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZQotICAgOmZ1bmM6YGNvbXByZXNzYCBmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgKmNvbXByZXNzbGV2ZWwqIHBhcmFtZXRlciwgaWYgZ2l2ZW4sCi0gICBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgOyB0aGUgZGVmYXVsdCBpcyBgYDlgYC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgY29tcHJlc3NgIGZ1bmN0aW9uCisgICBpbnN0ZWFkLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCiAKICAgIC4uIG1ldGhvZDo6IGNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBjb21wcmVzc29yIG9iamVjdC4gSXQgd2lsbCByZXR1cm4gY2h1bmtzIG9mCi0gICAgICBjb21wcmVzc2VkIGRhdGEgd2hlbmV2ZXIgcG9zc2libGUuIFdoZW4geW91J3ZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvCi0gICAgICBjb21wcmVzcywgY2FsbCB0aGUgOm1ldGg6YGZsdXNoYCBtZXRob2QgdG8gZmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLAotICAgICAgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwgYnVmZmVycy4KKyAgICAgIFByb3ZpZGUgZGF0YSB0byB0aGUgY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZiBjb21wcmVzc2VkIGRhdGEKKyAgICAgIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIFdoZW4geW91IGhhdmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGEgdG8gdGhlIGNvbXByZXNzb3IsIGNhbGwgdGhlCisgICAgICA6bWV0aDpgZmx1c2hgIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuCiAKIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQogCi0gICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MgYW5kIHJldHVybiB3aGF0IGlzIGxlZnQgaW4gaW50ZXJuYWwKLSAgICAgIGJ1ZmZlcnMuIFlvdSBtdXN0IG5vdCB1c2UgdGhlIGNvbXByZXNzb3Igb2JqZWN0IGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCisgICAgICBGaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuIFJldHVybnMgdGhlIGNvbXByZXNzZWQgZGF0YSBsZWZ0IGluCisgICAgICBpbnRlcm5hbCBidWZmZXJzLgorCisgICAgICBUaGUgY29tcHJlc3NvciBvYmplY3QgbWF5IG5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KIAogCiAuLiBjbGFzczo6IEJaMkRlY29tcHJlc3NvcigpCiAKICAgIENyZWF0ZSBhIG5ldyBkZWNvbXByZXNzb3Igb2JqZWN0LiBUaGlzIG9iamVjdCBtYXkgYmUgdXNlZCB0byBkZWNvbXByZXNzIGRhdGEKLSAgIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LCB1c2UgdGhlCi0gICA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24gaW5zdGVhZC4KKyAgIGluY3JlbWVudGFsbHkuIEZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSA6ZnVuYzpgZGVjb21wcmVzc2AgZnVuY3Rpb24KKyAgIGluc3RlYWQuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YEJaMkZpbGVgLiBJZgorICAgICAgeW91IG5lZWQgdG8gZGVjb21wcmVzcyBhIG11bHRpLXN0cmVhbSBpbnB1dCB3aXRoIDpjbGFzczpgQloyRGVjb21wcmVzc29yYCwKKyAgICAgIHlvdSBtdXN0IHVzZSBhIG5ldyBkZWNvbXByZXNzb3IgZm9yIGVhY2ggc3RyZWFtLgogCiAgICAuLiBtZXRob2Q6OiBkZWNvbXByZXNzKGRhdGEpCiAKLSAgICAgIFByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3Mgb2YKLSAgICAgIGRlY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBJZiB5b3UgdHJ5IHRvIGRlY29tcHJlc3MgZGF0YSBhZnRlcgotICAgICAgdGhlIGVuZCBvZiBzdHJlYW0gaXMgZm91bmQsIDpleGM6YEVPRkVycm9yYCB3aWxsIGJlIHJhaXNlZC4gSWYgYW55IGRhdGEKLSAgICAgIHdhcyBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHN0cmVhbSwgaXQnbGwgYmUgaWdub3JlZCBhbmQgc2F2ZWQgaW4KLSAgICAgIDphdHRyOmB1bnVzZWRfZGF0YWAgYXR0cmlidXRlLgorICAgICAgUHJvdmlkZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2YgZGVjb21wcmVzc2VkCisgICAgICBkYXRhIGlmIHBvc3NpYmxlLCBvciBhbiBlbXB0eSBieXRlIHN0cmluZyBvdGhlcndpc2UuCisKKyAgICAgIEF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3RyZWFtIGlzCisgICAgICByZWFjaGVkIHJhaXNlcyBhbiA6ZXhjOmBFT0ZFcnJvcmAuIElmIGFueSBkYXRhIGlzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YKKyAgICAgIHRoZSBzdHJlYW0sIGl0IGlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBoYXMgYmVlbgorICAgICAgcmVhY2hlZCwgaXRzIHZhbHVlIHdpbGwgYmUgYGBiJydgYC4KIAogCiBPbmUtc2hvdCAoZGUpY29tcHJlc3Npb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1PbmUtc2hvdCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBpcyBwcm92aWRlZCB0aHJvdWdoIHRoZSA6ZnVuYzpgY29tcHJlc3NgCi1hbmQgOmZ1bmM6YGRlY29tcHJlc3NgIGZ1bmN0aW9ucy4KLQotCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIAotICAgQ29tcHJlc3MgKmRhdGEqIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwgdXNlCi0gICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkNvbXByZXNzb3JgIGluc3RlYWQuIFRoZSAqY29tcHJlc3NsZXZlbCogcGFyYW1ldGVyLAotICAgaWYgZ2l2ZW4sIG11c3QgYmUgYSBudW1iZXIgYmV0d2VlbiBgYDFgYCBhbmQgYGA5YGA7IHRoZSBkZWZhdWx0IGlzIGBgOWBgLgorICAgQ29tcHJlc3MgKmRhdGEqLgorCisgICAqY29tcHJlc3NsZXZlbCosIGlmIGdpdmVuLCBtdXN0IGJlIGEgbnVtYmVyIGJldHdlZW4gYGAxYGAgYW5kIGBgOWBgLiBUaGUKKyAgIGRlZmF1bHQgaXMgYGA5YGAuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGEgOmNsYXNzOmBCWjJDb21wcmVzc29yYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhKQogCi0gICBEZWNvbXByZXNzICpkYXRhKiBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gZGVjb21wcmVzcyBkYXRhIHNlcXVlbnRpYWxseSwKLSAgIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKyAgIERlY29tcHJlc3MgKmRhdGEqLgorCisgICBJZiAqZGF0YSogaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgbXVsdGlwbGUgY29tcHJlc3NlZCBzdHJlYW1zLCBkZWNvbXByZXNzCisgICBhbGwgb2YgdGhlIHN0cmVhbXMuCisKKyAgIEZvciBpbmNyZW1lbnRhbCBkZWNvbXByZXNzaW9uLCB1c2UgYSA6Y2xhc3M6YEJaMkRlY29tcHJlc3NvcmAgaW5zdGVhZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIG11bHRpLXN0cmVhbSBpbnB1dHMgd2FzIGFkZGVkLgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jaHVuay5yc3QgYi9Eb2MvbGlicmFyeS9jaHVuay5yc3QKaW5kZXggZDM1NThhNC4uYzFiYTQ5NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY2h1bmsucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NodW5rLnJzdApAQCAtODQsOCArODQsOSBAQAogICAgICAgQ2xvc2UgYW5kIHNraXAgdG8gdGhlIGVuZCBvZiB0aGUgY2h1bmsuICBUaGlzIGRvZXMgbm90IGNsb3NlIHRoZQogICAgICAgdW5kZXJseWluZyBmaWxlLgogCi0gICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCi0gICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuCisgICBUaGUgcmVtYWluaW5nIG1ldGhvZHMgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiBjYWxsZWQgYWZ0ZXIgdGhlCisgICA6bWV0aDpgY2xvc2VgIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuICBCZWZvcmUgUHl0aG9uIDMuMywgdGhleSB1c2VkIHRvCisgICByYWlzZSA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGlzYXR0eSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jbWQucnN0IGIvRG9jL2xpYnJhcnkvY21kLnJzdAppbmRleCA5NDNjMDRhLi45NzIyOTI4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NtZC5yc3QKQEAgLTI4NSw4ICsyODUsOCBAQAogICAgICAgICBkZWYgZG9fcGxheWJhY2soc2VsZiwgYXJnKToKICAgICAgICAgICAgICdQbGF5YmFjayBjb21tYW5kcyBmcm9tIGEgZmlsZTogIFBMQVlCQUNLIHJvc2UuY21kJwogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgICAgICBjbWRzID0gb3BlbihhcmcpLnJlYWQoKS5zcGxpdGxpbmVzKCkKLSAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGNtZHMpCisgICAgICAgICAgICB3aXRoIG9wZW4oYXJnKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuY21kcXVldWUuZXh0ZW5kKGYucmVhZCgpLnNwbGl0bGluZXMoKSkKICAgICAgICAgZGVmIHByZWNtZChzZWxmLCBsaW5lKToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLmxvd2VyKCkKICAgICAgICAgICAgIGlmIHNlbGYuZmlsZSBhbmQgJ3BsYXliYWNrJyBub3QgaW4gbGluZToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CmluZGV4IDc2MmJiOTguLjA3MWZjMjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZWNzLnJzdApAQCAtNDU4LDcgKzQ1OCw4IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlc2V0KCkKIAotICAgICAgUmVzZXQgdGhlIGVuY29kZXIgdG8gdGhlIGluaXRpYWwgc3RhdGUuCisgICAgICBSZXNldCB0aGUgZW5jb2RlciB0byB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIG91dHB1dCBpcyBkaXNjYXJkZWQ6IGNhbGwKKyAgICAgIGBgLmVuY29kZSgnJywgZmluYWw9VHJ1ZSlgYCB0byByZXNldCB0aGUgZW5jb2RlciBhbmQgdG8gZ2V0IHRoZSBvdXRwdXQuCiAKIAogLi4gbWV0aG9kOjogSW5jcmVtZW50YWxFbmNvZGVyLmdldHN0YXRlKCkKQEAgLTc4NiwxMSArNzg3LDkgQEAKIEVuY29kaW5ncyBhbmQgVW5pY29kZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVN0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzICh0byBiZSBwcmVjaXNlCi1hcyA6Yzp0eXBlOmBQeV9VTklDT0RFYCBhcnJheXMpLiBEZXBlbmRpbmcgb24gdGhlIHdheSBQeXRob24gaXMgY29tcGlsZWQgKGVpdGhlcgotdmlhIGBgLS13aXRob3V0LXdpZGUtdW5pY29kZWBgIG9yIGBgLS13aXRoLXdpZGUtdW5pY29kZWBgLCB3aXRoIHRoZQotZm9ybWVyIGJlaW5nIHRoZSBkZWZhdWx0KSA6Yzp0eXBlOmBQeV9VTklDT0RFYCBpcyBlaXRoZXIgYSAxNi1iaXQgb3IgMzItYml0IGRhdGEKLXR5cGUuIE9uY2UgYSBzdHJpbmcgb2JqZWN0IGlzIHVzZWQgb3V0c2lkZSBvZiBDUFUgYW5kIG1lbW9yeSwgQ1BVIGVuZGlhbm5lc3MKK1N0cmluZ3MgYXJlIHN0b3JlZCBpbnRlcm5hbGx5IGFzIHNlcXVlbmNlcyBvZiBjb2RlcG9pbnRzIGluIHJhbmdlIGBgMCAtIDEwRkZGRmBgCisoc2VlIDpwZXA6YDM5M2AgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGUgaW1wbGVtZW50YXRpb24pLgorT25jZSBhIHN0cmluZyBvYmplY3QgaXMgdXNlZCBvdXRzaWRlIG9mIENQVSBhbmQgbWVtb3J5LCBDUFUgZW5kaWFubmVzcwogYW5kIGhvdyB0aGVzZSBhcnJheXMgYXJlIHN0b3JlZCBhcyBieXRlcyBiZWNvbWUgYW4gaXNzdWUuICBUcmFuc2Zvcm1pbmcgYQogc3RyaW5nIG9iamVjdCBpbnRvIGEgc2VxdWVuY2Ugb2YgYnl0ZXMgaXMgY2FsbGVkIGVuY29kaW5nIGFuZCByZWNyZWF0aW5nIHRoZQogc3RyaW5nIG9iamVjdCBmcm9tIHRoZSBzZXF1ZW5jZSBvZiBieXRlcyBpcyBrbm93biBhcyBkZWNvZGluZy4gIFRoZXJlIGFyZSBtYW55CkBAIC05MDEsNiArOTAwLDE1IEBACiBjYXNlIG9yIHVzZSBhIGh5cGhlbiBpbnN0ZWFkIG9mIGFuIHVuZGVyc2NvcmUgYXJlIGFsc28gdmFsaWQgYWxpYXNlczsgdGhlcmVmb3JlLAogZS5nLiBgYCd1dGYtOCdgYCBpcyBhIHZhbGlkIGFsaWFzIGZvciB0aGUgYGAndXRmXzgnYGAgY29kZWMuCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgU29tZSBjb21tb24gZW5jb2RpbmdzIGNhbiBieXBhc3MgdGhlIGNvZGVjcyBsb29rdXAgbWFjaGluZXJ5IHRvCisgICBpbXByb3ZlIHBlcmZvcm1hbmNlLiAgVGhlc2Ugb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgYXJlIG9ubHkKKyAgIHJlY29nbml6ZWQgYnkgQ1B5dGhvbiBmb3IgYSBsaW1pdGVkIHNldCBvZiBhbGlhc2VzOiB1dGYtOCwgdXRmOCwKKyAgIGxhdGluLTEsIGxhdGluMSwgaXNvLTg4NTktMSwgbWJjcyAoV2luZG93cyBvbmx5KSwgYXNjaWksIHV0Zi0xNiwKKyAgIGFuZCB1dGYtMzIuICBVc2luZyBhbHRlcm5hdGl2ZSBzcGVsbGluZ3MgZm9yIHRoZXNlIGVuY29kaW5ncyBtYXkKKyAgIHJlc3VsdCBpbiBzbG93ZXIgZXhlY3V0aW9uLgorCiBNYW55IG9mIHRoZSBjaGFyYWN0ZXIgc2V0cyBzdXBwb3J0IHRoZSBzYW1lIGxhbmd1YWdlcy4gVGhleSB2YXJ5IGluIGluZGl2aWR1YWwKIGNoYXJhY3RlcnMgKGUuZy4gd2hldGhlciB0aGUgRVVSTyBTSUdOIGlzIHN1cHBvcnRlZCBvciBub3QpLCBhbmQgaW4gdGhlCiBhc3NpZ25tZW50IG9mIGNoYXJhY3RlcnMgdG8gY29kZSBwb3NpdGlvbnMuIEZvciB0aGUgRXVyb3BlYW4gbGFuZ3VhZ2VzIGluCkBAIC0xMDAzLDYgKzEwMTEsMTEgQEAKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgY3AxMjU4ICAgICAgICAgIHwgd2luZG93cy0xMjU4ICAgICAgICAgICAgICAgICAgIHwgVmlldG5hbWVzZSAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgY3A2NTAwMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgV2luZG93cyBvbmx5OiBXaW5kb3dzIFVURi04ICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKGBgQ1BfVVRGOGBgKSAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgLi4gdmVyc2lvbmFkZGVkOjogMy4zICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2pwICAgICAgICAgIHwgZXVjanAsIHVqaXMsIHUtamlzICAgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgZXVjX2ppc18yMDA0ICAgIHwgamlzeDAyMTMsIGV1Y2ppczIwMDQgICAgICAgICAgIHwgSmFwYW5lc2UgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTExNjAsNiArMTE3Myw4IEBACiB8IHVuaWNvZGVfaW50ZXJuYWwgICB8ICAgICAgICAgfCBSZXR1cm4gdGhlIGludGVybmFsICAgICAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IHJlcHJlc2VudGF0aW9uIG9mIHRoZSAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgb3BlcmFuZCAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIGRlcHJlY2F0ZWQ6OiAzLjMgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFRoZSBmb2xsb3dpbmcgY29kZWNzIHByb3ZpZGUgYnl0ZXMtdG8tYnl0ZXMgbWFwcGluZ3MuCkBAIC0xMjcyLDEyICsxMjg3LDEzIEBACiAuLiBtb2R1bGU6OiBlbmNvZGluZ3MubWJjcwogICAgOnN5bm9wc2lzOiBXaW5kb3dzIEFOU0kgY29kZXBhZ2UKIAotRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLiBUaGlzIGNvZGVjIG9ubHkKLXN1cHBvcnRzIGBgJ3N0cmljdCdgYCBhbmQgYGAncmVwbGFjZSdgYCBlcnJvciBoYW5kbGVycyB0byBlbmNvZGUsIGFuZAotYGAnc3RyaWN0J2BgIGFuZCBgYCdpZ25vcmUnYGAgZXJyb3IgaGFuZGxlcnMgdG8gZGVjb2RlLgorRW5jb2RlIG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSBBTlNJIGNvZGVwYWdlIChDUF9BQ1ApLgogCiBBdmFpbGFiaWxpdHk6IFdpbmRvd3Mgb25seS4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFN1cHBvcnQgYW55IGVycm9yIGhhbmRsZXIuCisKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICBCZWZvcmUgMy4yLCB0aGUgKmVycm9ycyogYXJndW1lbnQgd2FzIGlnbm9yZWQ7IGBgJ3JlcGxhY2UnYGAgd2FzIGFsd2F5cyB1c2VkCiAgICB0byBlbmNvZGUsIGFuZCBgYCdpZ25vcmUnYGAgdG8gZGVjb2RlLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg3MzQ4OQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTAsMCArMSwxODIgQEAKKzptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgLS0tIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyBmb3IgQ29udGFpbmVycworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGNvbGxlY3Rpb25zLmFiYworICAgOnN5bm9wc2lzOiBBYnN0cmFjdCBiYXNlIGNsYXNzZXMgZm9yIGNvbnRhaW5lcnMKKy4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSYXltb25kIEhldHRpbmdlciA8cHl0aG9uIGF0IHJjbi5jb20+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgRm9ybWVybHksIHRoaXMgbW9kdWxlIHdhcyBwYXJ0IG9mIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorCisuLiB0ZXN0c2V0dXA6OiAqCisKKyAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICoKKyAgIGltcG9ydCBpdGVydG9vbHMKKyAgIF9fbmFtZV9fID0gJzxkb2N0ZXN0PicKKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvY29sbGVjdGlvbnMvYWJjLnB5YAorCistLS0tLS0tLS0tLS0tLQorCitUaGlzIG1vZHVsZSBwcm92aWRlcyA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIDxhYnN0cmFjdCBiYXNlIGNsYXNzPmAgdGhhdAorY2FuIGJlIHVzZWQgdG8gdGVzdCB3aGV0aGVyIGEgY2xhc3MgcHJvdmlkZXMgYSBwYXJ0aWN1bGFyIGludGVyZmFjZTsgZm9yCitleGFtcGxlLCB3aGV0aGVyIGl0IGlzIGhhc2hhYmxlIG9yIHdoZXRoZXIgaXQgaXMgYSBtYXBwaW5nLgorCisKKy4uIF9jb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM6CisKK0NvbGxlY3Rpb25zIEFic3RyYWN0IEJhc2UgQ2xhc3NlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBjb2xsZWN0aW9ucyBtb2R1bGUgb2ZmZXJzIHRoZSBmb2xsb3dpbmcgOnRlcm06YEFCQ3MgPGFic3RyYWN0IGJhc2UgY2xhc3M+YDoKKworPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitBQkMgICAgICAgICAgICAgICAgICAgICAgICBJbmhlcml0cyBmcm9tICAgICAgICAgIEFic3RyYWN0IE1ldGhvZHMgICAgICAgIE1peGluIE1ldGhvZHMKKz09PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgCis6Y2xhc3M6YEhhc2hhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19oYXNoX19gYAorOmNsYXNzOmBJdGVyYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgSXRlcmF0b3JgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgICAgICAgYGBfX25leHRfX2BgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFNpemVkYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZW5fX2BgCis6Y2xhc3M6YENhbGxhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jYWxsX19gYAorCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19nZXRpdGVtX19gYCAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YENvbnRhaW5lcmAKKworOmNsYXNzOmBNdXRhYmxlU2VxdWVuY2VgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgLCAgICAgICAgYGBhcHBlbmRgYCwgYGByZXZlcnNlYGAsIGBgZXh0ZW5kYGAsIGBgcG9wYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgaW5zZXJ0YGAgICAgICAgICAgICAgIGBgcmVtb3ZlYGAsIGBgY2xlYXJgYCwgYW5kIGBgX19pYWRkX19gYAorCis6Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorCis6Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgYWRkYGAsICAgICAgICAgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAgICAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2lhbmRfX2BgLCBgYF9faXhvcl9fYGAsIGFuZCBgYF9faXN1Yl9fYGAKKworOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCisKKzpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgICAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBgc2V0ZGVmYXVsdGBgCisKKworOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAorOmNsYXNzOmBJdGVtc1ZpZXdgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKKzpjbGFzczpgS2V5c1ZpZXdgICAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCis6Y2xhc3M6YFZhbHVlc1ZpZXdgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYAorPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworLi4gY2xhc3M6OiBDb250YWluZXIKKyAgICAgICAgICAgSGFzaGFibGUKKyAgICAgICAgICAgU2l6ZWQKKyAgICAgICAgICAgQ2FsbGFibGUKKworICAgQUJDcyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgcmVzcGVjdGl2ZWx5IHRoZSBtZXRob2RzIDptZXRoOmBfX2NvbnRhaW5zX19gLAorICAgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9fbGVuX19gLCBhbmQgOm1ldGg6YF9fY2FsbF9fYC4KKworLi4gY2xhc3M6OiBJdGVyYWJsZQorCisgICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KKyAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCisKKy4uIGNsYXNzOjogSXRlcmF0b3IKKworICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBhbmQgOm1ldGg6YG5leHRgIG1ldGhvZHMuCisgICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgorCisuLiBjbGFzczo6IFNlcXVlbmNlCisgICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KKworLi4gY2xhc3M6OiBTZXQKKyAgICAgICAgICAgTXV0YWJsZVNldAorCisgICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KKworLi4gY2xhc3M6OiBNYXBwaW5nCisgICAgICAgICAgIE11dGFibGVNYXBwaW5nCisKKyAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KKworLi4gY2xhc3M6OiBNYXBwaW5nVmlldworICAgICAgICAgICBJdGVtc1ZpZXcKKyAgICAgICAgICAgS2V5c1ZpZXcKKyAgICAgICAgICAgVmFsdWVzVmlldworCisgICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KKworCitUaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKK3BhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgorCisgICAgc2l6ZSA9IE5vbmUKKyAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6CisgICAgICAgIHNpemUgPSBsZW4obXl2YXIpCisKK1NldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKK2NsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKK3RoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZworYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCitUaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKKzptZXRoOmBpc2Rpc2pvaW50YCA6OgorCisgICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6CisgICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCisgICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCisgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgorICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQorICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKKyAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKKyAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCisgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKKyAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCisgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCisKKyAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKKyAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKKyAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKKworTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46CisKKygxKQorICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAorICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCisgICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCisgICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAorICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KKyAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKKyAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCisgICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQorICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCisKKygyKQorICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCisgICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCisgICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KKworKDMpCisgICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKKyAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCisgICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKKyAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQorICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgorCisuLiBzZWVhbHNvOjoKKworICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCisgICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KKworICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCA1N2UwNDgxLi40NWRhNGU1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC0yLDE3ICsyLDE3IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogY29sbGVjdGlvbnMKLSAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcworICAgIDpzeW5vcHNpczogQ29udGFpbmVyIGRhdGF0eXBlcwogLi4gbW9kdWxlYXV0aG9yOjogUmF5bW9uZCBIZXR0aW5nZXIgPHB5dGhvbkByY24uY29tPgogLi4gc2VjdGlvbmF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob25AcmNuLmNvbT4KIAogLi4gdGVzdHNldHVwOjogKgogCi0gICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCAqCi0gICBpbXBvcnQgaXRlcnRvb2xzCi0gICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCisgICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKgorICAgIGltcG9ydCBpdGVydG9vbHMKKyAgICBfX25hbWVfXyA9ICc8ZG9jdGVzdD4nCiAKLSoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL2NvbGxlY3Rpb25zLnB5YCBhbmQgOnNvdXJjZTpgTGliL19hYmNvbGwucHlgCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weWAKIAogLS0tLS0tLS0tLS0tLS0KIApAQCAtMjMsNiArMjMsNyBAQAogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBuYW1lZHR1cGxlYCAgICAgIGZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIHR1cGxlIHN1YmNsYXNzZXMgd2l0aCBuYW1lZCBmaWVsZHMKIDpjbGFzczpgZGVxdWVgICAgICAgICAgIGxpc3QtbGlrZSBjb250YWluZXIgd2l0aCBmYXN0IGFwcGVuZHMgYW5kIHBvcHMgb24gZWl0aGVyIGVuZAorOmNsYXNzOmBDaGFpbk1hcGAgICAgICAgZGljdC1saWtlIGNsYXNzIGZvciBjcmVhdGluZyBhIHNpbmdsZSB2aWV3IG9mIG11bHRpcGxlIG1hcHBpbmdzCiA6Y2xhc3M6YENvdW50ZXJgICAgICAgICBkaWN0IHN1YmNsYXNzIGZvciBjb3VudGluZyBoYXNoYWJsZSBvYmplY3RzCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCAgICBkaWN0IHN1YmNsYXNzIHRoYXQgcmVtZW1iZXJzIHRoZSBvcmRlciBlbnRyaWVzIHdlcmUgYWRkZWQKIDpjbGFzczpgZGVmYXVsdGRpY3RgICAgIGRpY3Qgc3ViY2xhc3MgdGhhdCBjYWxscyBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gc3VwcGx5IG1pc3NpbmcgdmFsdWVzCkBAIC0zMSwxMCArMzIsMTY3IEBACiA6Y2xhc3M6YFVzZXJTdHJpbmdgICAgICB3cmFwcGVyIGFyb3VuZCBzdHJpbmcgb2JqZWN0cyBmb3IgZWFzaWVyIHN0cmluZyBzdWJjbGFzc2luZwogPT09PT09PT09PT09PT09PT09PT09ICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotSW4gYWRkaXRpb24gdG8gdGhlIGNvbmNyZXRlIGNvbnRhaW5lciBjbGFzc2VzLCB0aGUgY29sbGVjdGlvbnMgbW9kdWxlIHByb3ZpZGVzCi06cmVmOmBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgPGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlcz5gIHRoYXQgY2FuIGJlCi11c2VkIHRvIHRlc3Qgd2hldGhlciBhIGNsYXNzIHByb3ZpZGVzIGEgcGFydGljdWxhciBpbnRlcmZhY2UsIGZvciBleGFtcGxlLAotd2hldGhlciBpdCBpcyBoYXNoYWJsZSBvciBhIG1hcHBpbmcuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgIE1vdmVkIDpyZWY6YGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlc2AgdG8gdGhlIDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AgbW9kdWxlLgorICAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhleSBjb250aW51ZSB0byBiZSB2aXNpYmxlIGluIHRoaXMgbW9kdWxlCisgICAgYXMgd2VsbC4KKworCis6Y2xhc3M6YENoYWluTWFwYCBvYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitBIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIGlzIHByb3ZpZGVkIGZvciBxdWlja2x5IGxpbmtpbmcgYSBudW1iZXIgb2YgbWFwcGluZ3MKK3NvIHRoZXkgY2FuIGJlIHRyZWF0ZWQgYXMgYSBzaW5nbGUgdW5pdC4gIEl0IGlzIG9mdGVuIG11Y2ggZmFzdGVyIHRoYW4gY3JlYXRpbmcKK2EgbmV3IGRpY3Rpb25hcnkgYW5kIHJ1bm5pbmcgbXVsdGlwbGUgOm1ldGg6YH5kaWN0LnVwZGF0ZWAgY2FsbHMuCisKK1RoZSBjbGFzcyBjYW4gYmUgdXNlZCB0byBzaW11bGF0ZSBuZXN0ZWQgc2NvcGVzIGFuZCBpcyB1c2VmdWwgaW4gdGVtcGxhdGluZy4KKworLi4gY2xhc3M6OiBDaGFpbk1hcCgqbWFwcykKKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgZ3JvdXBzIG11bHRpcGxlIGRpY3RzIG9yIG90aGVyIG1hcHBpbmdzIHRvZ2V0aGVyIHRvCisgICAgY3JlYXRlIGEgc2luZ2xlLCB1cGRhdGVhYmxlIHZpZXcuICBJZiBubyAqbWFwcyogYXJlIHNwZWNpZmllZCwgYSBzaW5nbGUgZW1wdHkKKyAgICBkaWN0aW9uYXJ5IGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBuZXcgY2hhaW4gYWx3YXlzIGhhcyBhdCBsZWFzdCBvbmUgbWFwcGluZy4KKworICAgIFRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGFyZSBzdG9yZWQgaW4gYSBsaXN0LiAgVGhhdCBsaXN0IGlzIHB1YmxpYyBhbmQgY2FuCisgICAgYWNjZXNzZWQgb3IgdXBkYXRlZCB1c2luZyB0aGUgKm1hcHMqIGF0dHJpYnV0ZS4gIFRoZXJlIGlzIG5vIG90aGVyIHN0YXRlLgorCisgICAgTG9va3VwcyBzZWFyY2ggdGhlIHVuZGVybHlpbmcgbWFwcGluZ3Mgc3VjY2Vzc2l2ZWx5IHVudGlsIGEga2V5IGlzIGZvdW5kLiAgSW4KKyAgICBjb250cmFzdCwgd3JpdGVzLCB1cGRhdGVzLCBhbmQgZGVsZXRpb25zIG9ubHkgb3BlcmF0ZSBvbiB0aGUgZmlyc3QgbWFwcGluZy4KKworICAgIEEgOmNsYXNzOmBDaGFpbk1hcGAgaW5jb3Jwb3JhdGVzIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmdzIGJ5IHJlZmVyZW5jZS4gIFNvLCBpZgorICAgIG9uZSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5ncyBnZXRzIHVwZGF0ZWQsIHRob3NlIGNoYW5nZXMgd2lsbCBiZSByZWZsZWN0ZWQKKyAgICBpbiA6Y2xhc3M6YENoYWluTWFwYC4KKworICAgIEFsbCBvZiB0aGUgdXN1YWwgZGljdGlvbmFyeSBtZXRob2RzIGFyZSBzdXBwb3J0ZWQuICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYQorICAgICptYXBzKiBhdHRyaWJ1dGUsIGEgbWV0aG9kIGZvciBjcmVhdGluZyBuZXcgc3ViY29udGV4dHMsIGFuZCBhIHByb3BlcnR5IGZvcgorICAgIGFjY2Vzc2luZyBhbGwgYnV0IHRoZSBmaXJzdCBtYXBwaW5nOgorCisgICAgLi4gYXR0cmlidXRlOjogbWFwcworCisgICAgICAgIEEgdXNlciB1cGRhdGVhYmxlIGxpc3Qgb2YgbWFwcGluZ3MuICBUaGUgbGlzdCBpcyBvcmRlcmVkIGZyb20KKyAgICAgICAgZmlyc3Qtc2VhcmNoZWQgdG8gbGFzdC1zZWFyY2hlZC4gIEl0IGlzIHRoZSBvbmx5IHN0b3JlZCBzdGF0ZSBhbmQgY2FuCisgICAgICAgIGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB3aGljaCBtYXBwaW5ncyBhcmUgc2VhcmNoZWQuICBUaGUgbGlzdCBzaG91bGQKKyAgICAgICAgYWx3YXlzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIG1hcHBpbmcuCisKKyAgICAuLiBtZXRob2Q6OiBuZXdfY2hpbGQoKQorCisgICAgICAgIFJldHVybnMgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhIG5ldyA6Y2xhc3M6YGRpY3RgIGZvbGxvd2VkIGJ5CisgICAgICAgIGFsbCBvZiB0aGUgbWFwcyBpbiB0aGUgY3VycmVudCBpbnN0YW5jZS4gIEEgY2FsbCB0byBgYGQubmV3X2NoaWxkKClgYCBpcworICAgICAgICBlcXVpdmFsZW50IHRvOiBgYENoYWluTWFwKHt9LCAqZC5tYXBzKWBgLiAgVGhpcyBtZXRob2QgaXMgdXNlZCBmb3IKKyAgICAgICAgY3JlYXRpbmcgc3ViY29udGV4dHMgdGhhdCBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGFsdGVyaW5nIHZhbHVlcyBpbiBhbnkKKyAgICAgICAgb2YgdGhlIHBhcmVudCBtYXBwaW5ncy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHBhcmVudHMKKworICAgICAgICBQcm9wZXJ0eSByZXR1cm5pbmcgYSBuZXcgOmNsYXNzOmBDaGFpbk1hcGAgY29udGFpbmluZyBhbGwgb2YgdGhlIG1hcHMgaW4KKyAgICAgICAgdGhlIGN1cnJlbnQgaW5zdGFuY2UgZXhjZXB0IHRoZSBmaXJzdCBvbmUuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc2tpcHBpbmcKKyAgICAgICAgdGhlIGZpcnN0IG1hcCBpbiB0aGUgc2VhcmNoLiAgVXNlIGNhc2VzIGFyZSBzaW1pbGFyIHRvIHRob3NlIGZvciB0aGUKKyAgICAgICAgOmtleXdvcmQ6YG5vbmxvY2FsYCBrZXl3b3JkIHVzZWQgaW4gOnRlcm06YG5lc3RlZCBzY29wZXMgPG5lc3RlZAorICAgICAgICBzY29wZT5gLiAgVGhlIHVzZSBjYXNlcyBhbHNvIHBhcmFsbGVsIHRob3NlIGZvciB0aGUgYnVpbHQtaW4KKyAgICAgICAgOmZ1bmM6YHN1cGVyYCBmdW5jdGlvbi4gIEEgcmVmZXJlbmNlIHRvIGBgZC5wYXJlbnRzYGAgaXMgZXF1aXZhbGVudCB0bzoKKyAgICAgICAgYGBDaGFpbk1hcCgqZC5tYXBzWzE6XSlgYC4KKworCisuLiBzZWVhbHNvOjoKKworICAgICogVGhlIGBNdWx0aUNvbnRleHQgY2xhc3MKKyAgICAgIDxodHRwczovL2dpdGh1Yi5jb20vZW50aG91Z2h0L2NvZGV0b29scy9ibG9iLzQuMC4wL2NvZGV0b29scy9jb250ZXh0cy9tdWx0aV9jb250ZXh0LnB5PmBfCisgICAgICBpbiB0aGUgRW50aG91Z2h0IGBDb2RlVG9vbHMgcGFja2FnZQorICAgICAgPGh0dHBzOi8vZ2l0aHViLmNvbS9lbnRob3VnaHQvY29kZXRvb2xzPmBfIGhhcyBvcHRpb25zIHRvIHN1cHBvcnQKKyAgICAgIHdyaXRpbmcgdG8gYW55IG1hcHBpbmcgaW4gdGhlIGNoYWluLgorCisgICAgKiBEamFuZ28ncyBgQ29udGV4dCBjbGFzcworICAgICAgPGh0dHA6Ly9jb2RlLmRqYW5nb3Byb2plY3QuY29tL2Jyb3dzZXIvZGphbmdvL3RydW5rL2RqYW5nby90ZW1wbGF0ZS9jb250ZXh0LnB5PmBfCisgICAgICBmb3IgdGVtcGxhdGluZyBpcyBhIHJlYWQtb25seSBjaGFpbiBvZiBtYXBwaW5ncy4gIEl0IGFsc28gZmVhdHVyZXMKKyAgICAgIHB1c2hpbmcgYW5kIHBvcHBpbmcgb2YgY29udGV4dHMgc2ltaWxhciB0byB0aGUKKyAgICAgIDptZXRoOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXAubmV3X2NoaWxkYCBtZXRob2QgYW5kIHRoZQorICAgICAgOm1ldGg6YH5jb2xsZWN0aW9ucy5DaGFpbk1hcC5wYXJlbnRzYCBwcm9wZXJ0eS4KKworICAgICogVGhlIGBOZXN0ZWQgQ29udGV4dHMgcmVjaXBlCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NDM0Lz5gXyBoYXMgb3B0aW9ucyB0byBjb250cm9sCisgICAgICB3aGV0aGVyIHdyaXRlcyBhbmQgb3RoZXIgbXV0YXRpb25zIGFwcGx5IG9ubHkgdG8gdGhlIGZpcnN0IG1hcHBpbmcgb3IgdG8KKyAgICAgIGFueSBtYXBwaW5nIGluIHRoZSBjaGFpbi4KKworICAgICogQSBgZ3JlYXRseSBzaW1wbGlmaWVkIHJlYWQtb25seSB2ZXJzaW9uIG9mIENoYWlubWFwCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvMzA1MjY4Lz5gXy4KKworCis6Y2xhc3M6YENoYWluTWFwYCBFeGFtcGxlcyBhbmQgUmVjaXBlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhpcyBzZWN0aW9uIHNob3dzIHZhcmlvdXMgYXBwcm9hY2hlcyB0byB3b3JraW5nIHdpdGggY2hhaW5lZCBtYXBzLgorCisKK0V4YW1wbGUgb2Ygc2ltdWxhdGluZyBQeXRob24ncyBpbnRlcm5hbCBsb29rdXAgY2hhaW46OgorCisgICAgICAgIGltcG9ydCBidWlsdGlucworICAgICAgICBweWxvb2t1cCA9IENoYWluTWFwKGxvY2FscygpLCBnbG9iYWxzKCksIHZhcnMoYnVpbHRpbnMpKQorCitFeGFtcGxlIG9mIGxldHRpbmcgdXNlciBzcGVjaWZpZWQgY29tbWFuZC1saW5lIGFyZ3VtZW50cyB0YWtlIHByZWNlZGVuY2Ugb3ZlcgorZW52aXJvbm1lbnQgdmFyaWFibGVzIHdoaWNoIGluIHR1cm4gdGFrZSBwcmVjZWRlbmNlIG92ZXIgZGVmYXVsdCB2YWx1ZXM6OgorCisgICAgICAgIGltcG9ydCBvcywgYXJncGFyc2UKKworICAgICAgICBkZWZhdWx0cyA9IHsnY29sb3InOiAncmVkJywgJ3VzZXInOiAnZ3Vlc3QnfQorCisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11c2VyJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb2xvcicpCisgICAgICAgIG5hbWVzcGFjZSA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICAgICAgY29tbWFuZF9saW5lX2FyZ3MgPSB7azp2IGZvciBrLCB2IGluIHZhcnMobmFtZXNwYWNlKS5pdGVtcygpIGlmIHZ9CisKKyAgICAgICAgY29tYmluZWQgPSBDaGFpbk1hcChjb21tYW5kX2xpbmVfYXJncywgb3MuZW52aXJvbiwgZGVmYXVsdHMpCisgICAgICAgIHByaW50KGNvbWJpbmVkWydjb2xvciddKQorICAgICAgICBwcmludChjb21iaW5lZFsndXNlciddKQorCitFeGFtcGxlIHBhdHRlcm5zIGZvciB1c2luZyB0aGUgOmNsYXNzOmBDaGFpbk1hcGAgY2xhc3MgdG8gc2ltdWxhdGUgbmVzdGVkCitjb250ZXh0czo6CisKKyAgICAgICAgYyA9IENoYWluTWFwKCkgICAgICAgICMgQ3JlYXRlIHJvb3QgY29udGV4dAorICAgICAgICBkID0gYy5uZXdfY2hpbGQoKSAgICAgIyBDcmVhdGUgbmVzdGVkIGNoaWxkIGNvbnRleHQKKyAgICAgICAgZSA9IGMubmV3X2NoaWxkKCkgICAgICMgQ2hpbGQgb2YgYywgaW5kZXBlbmRlbnQgZnJvbSBkCisgICAgICAgIGUubWFwc1swXSAgICAgICAgICAgICAjIEN1cnJlbnQgY29udGV4dCBkaWN0aW9uYXJ5IC0tIGxpa2UgUHl0aG9uJ3MgbG9jYWxzKCkKKyAgICAgICAgZS5tYXBzWy0xXSAgICAgICAgICAgICMgUm9vdCBjb250ZXh0IC0tIGxpa2UgUHl0aG9uJ3MgZ2xvYmFscygpCisgICAgICAgIGUucGFyZW50cyAgICAgICAgICAgICAjIEVuY2xvc2luZyBjb250ZXh0IGNoYWluIC0tIGxpa2UgUHl0aG9uJ3Mgbm9ubG9jYWxzCisKKyAgICAgICAgZFsneCddICAgICAgICAgICAgICAgICMgR2V0IGZpcnN0IGtleSBpbiB0aGUgY2hhaW4gb2YgY29udGV4dHMKKyAgICAgICAgZFsneCddID0gMSAgICAgICAgICAgICMgU2V0IHZhbHVlIGluIGN1cnJlbnQgY29udGV4dAorICAgICAgICBkZWwgZFsneCddICAgICAgICAgICAgIyBEZWxldGUgZnJvbSBjdXJyZW50IGNvbnRleHQKKyAgICAgICAgbGlzdChkKSAgICAgICAgICAgICAgICMgQWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgayBpbiBkICAgICAgICAgICAgICAgICMgQ2hlY2sgYWxsIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgbGVuKGQpICAgICAgICAgICAgICAgICMgTnVtYmVyIG9mIG5lc3RlZCB2YWx1ZXMKKyAgICAgICAgZC5pdGVtcygpICAgICAgICAgICAgICMgQWxsIG5lc3RlZCBpdGVtcworICAgICAgICBkaWN0KGQpICAgICAgICAgICAgICAgIyBGbGF0dGVuIGludG8gYSByZWd1bGFyIGRpY3Rpb25hcnkKKworVGhlIDpjbGFzczpgQ2hhaW5NYXBgIGNsYXNzIG9ubHkgbWFrZXMgdXBkYXRlcyAod3JpdGVzIGFuZCBkZWxldGlvbnMpIHRvIHRoZQorZmlyc3QgbWFwcGluZyBpbiB0aGUgY2hhaW4gd2hpbGUgbG9va3VwcyB3aWxsIHNlYXJjaCB0aGUgZnVsbCBjaGFpbi4gIEhvd2V2ZXIsCitpZiBkZWVwIHdyaXRlcyBhbmQgZGVsZXRpb25zIGFyZSBkZXNpcmVkLCBpdCBpcyBlYXN5IHRvIG1ha2UgYSBzdWJjbGFzcyB0aGF0Cit1cGRhdGVzIGtleXMgZm91bmQgZGVlcGVyIGluIHRoZSBjaGFpbjo6CisKKyAgICBjbGFzcyBEZWVwQ2hhaW5NYXAoQ2hhaW5NYXApOgorICAgICAgICAnVmFyaWFudCBvZiBDaGFpbk1hcCB0aGF0IGFsbG93cyBkaXJlY3QgdXBkYXRlcyB0byBpbm5lciBzY29wZXMnCisKKyAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICAgICAgZm9yIG1hcHBpbmcgaW4gc2VsZi5tYXBzOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBtYXBwaW5nOgorICAgICAgICAgICAgICAgICAgICBtYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYubWFwc1swXVtrZXldID0gdmFsdWUKKworICAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgIGZvciBtYXBwaW5nIGluIHNlbGYubWFwczoKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gbWFwcGluZzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG1hcHBpbmdba2V5XQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKKworICAgID4+PiBkID0gRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snfSwgeydlbGVwaGFudCcgOiAnYmx1ZSd9LCB7J2xpb24nIDogJ3llbGxvdyd9KQorICAgID4+PiBkWydsaW9uJ10gPSAnb3JhbmdlJyAgICAgICAgICMgdXBkYXRlIGFuIGV4aXN0aW5nIGtleSB0d28gbGV2ZWxzIGRvd24KKyAgICA+Pj4gZFsnc25ha2UnXSA9ICdyZWQnICAgICAgICAgICAjIG5ldyBrZXlzIGdldCBhZGRlZCB0byB0aGUgdG9wbW9zdCBkaWN0CisgICAgPj4+IGRlbCBkWydlbGVwaGFudCddICAgICAgICAgICAgIyByZW1vdmUgYW4gZXhpc3Rpbmcga2V5IG9uZSBsZXZlbCBkb3duCisgICAgRGVlcENoYWluTWFwKHsnemVicmEnOiAnYmxhY2snLCAnc25ha2UnOiAncmVkJ30sIHt9LCB7J2xpb24nOiAnb3JhbmdlJ30pCiAKIAogOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCkBAIC01OSw4NSArMjE3LDg1IEBACiAKIC4uIGNsYXNzOjogQ291bnRlcihbaXRlcmFibGUtb3ItbWFwcGluZ10pCiAKLSAgIEEgOmNsYXNzOmBDb3VudGVyYCBpcyBhIDpjbGFzczpgZGljdGAgc3ViY2xhc3MgZm9yIGNvdW50aW5nIGhhc2hhYmxlIG9iamVjdHMuCi0gICBJdCBpcyBhbiB1bm9yZGVyZWQgY29sbGVjdGlvbiB3aGVyZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cwotICAgYW5kIHRoZWlyIGNvdW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkgdmFsdWVzLiAgQ291bnRzIGFyZSBhbGxvd2VkIHRvIGJlCi0gICBhbnkgaW50ZWdlciB2YWx1ZSBpbmNsdWRpbmcgemVybyBvciBuZWdhdGl2ZSBjb3VudHMuICBUaGUgOmNsYXNzOmBDb3VudGVyYAotICAgY2xhc3MgaXMgc2ltaWxhciB0byBiYWdzIG9yIG11bHRpc2V0cyBpbiBvdGhlciBsYW5ndWFnZXMuCisgICAgQSA6Y2xhc3M6YENvdW50ZXJgIGlzIGEgOmNsYXNzOmBkaWN0YCBzdWJjbGFzcyBmb3IgY291bnRpbmcgaGFzaGFibGUgb2JqZWN0cy4KKyAgICBJdCBpcyBhbiB1bm9yZGVyZWQgY29sbGVjdGlvbiB3aGVyZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIGRpY3Rpb25hcnkga2V5cworICAgIGFuZCB0aGVpciBjb3VudHMgYXJlIHN0b3JlZCBhcyBkaWN0aW9uYXJ5IHZhbHVlcy4gIENvdW50cyBhcmUgYWxsb3dlZCB0byBiZQorICAgIGFueSBpbnRlZ2VyIHZhbHVlIGluY2x1ZGluZyB6ZXJvIG9yIG5lZ2F0aXZlIGNvdW50cy4gIFRoZSA6Y2xhc3M6YENvdW50ZXJgCisgICAgY2xhc3MgaXMgc2ltaWxhciB0byBiYWdzIG9yIG11bHRpc2V0cyBpbiBvdGhlciBsYW5ndWFnZXMuCiAKLSAgIEVsZW1lbnRzIGFyZSBjb3VudGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBpbml0aWFsaXplZCBmcm9tIGFub3RoZXIKLSAgICptYXBwaW5nKiAob3IgY291bnRlcik6CisgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGluaXRpYWxpemVkIGZyb20gYW5vdGhlcgorICAgICptYXBwaW5nKiAob3IgY291bnRlcik6CiAKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgbmV3LCBlbXB0eSBjb3VudGVyCiAgICAgICAgID4+PiBjID0gQ291bnRlcignZ2FsbGFoYWQnKSAgICAgICAgICAgICAgICAgIyBhIG5ldyBjb3VudGVyIGZyb20gYW4gaXRlcmFibGUKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKHsncmVkJzogNCwgJ2JsdWUnOiAyfSkgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBhIG1hcHBpbmcKICAgICAgICAgPj4+IGMgPSBDb3VudGVyKGNhdHM9NCwgZG9ncz04KSAgICAgICAgICAgICAjIGEgbmV3IGNvdW50ZXIgZnJvbSBrZXl3b3JkIGFyZ3MKIAotICAgQ291bnRlciBvYmplY3RzIGhhdmUgYSBkaWN0aW9uYXJ5IGludGVyZmFjZSBleGNlcHQgdGhhdCB0aGV5IHJldHVybiBhIHplcm8KLSAgIGNvdW50IGZvciBtaXNzaW5nIGl0ZW1zIGluc3RlYWQgb2YgcmFpc2luZyBhIDpleGM6YEtleUVycm9yYDoKKyAgICBDb3VudGVyIG9iamVjdHMgaGF2ZSBhIGRpY3Rpb25hcnkgaW50ZXJmYWNlIGV4Y2VwdCB0aGF0IHRoZXkgcmV0dXJuIGEgemVybworICAgIGNvdW50IGZvciBtaXNzaW5nIGl0ZW1zIGluc3RlYWQgb2YgcmFpc2luZyBhIDpleGM6YEtleUVycm9yYDoKIAogICAgICAgICA+Pj4gYyA9IENvdW50ZXIoWydlZ2dzJywgJ2hhbSddKQogICAgICAgICA+Pj4gY1snYmFjb24nXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnQgb2YgYSBtaXNzaW5nIGVsZW1lbnQgaXMgemVybwogICAgICAgICAwCiAKLSAgIFNldHRpbmcgYSBjb3VudCB0byB6ZXJvIGRvZXMgbm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYSBjb3VudGVyLgotICAgVXNlIGBgZGVsYGAgdG8gcmVtb3ZlIGl0IGVudGlyZWx5OgorICAgIFNldHRpbmcgYSBjb3VudCB0byB6ZXJvIGRvZXMgbm90IHJlbW92ZSBhbiBlbGVtZW50IGZyb20gYSBjb3VudGVyLgorICAgIFVzZSBgYGRlbGBgIHRvIHJlbW92ZSBpdCBlbnRpcmVseToKIAogICAgICAgICA+Pj4gY1snc2F1c2FnZSddID0gMCAgICAgICAgICAgICAgICAgICAgICAgICMgY291bnRlciBlbnRyeSB3aXRoIGEgemVybyBjb3VudAogICAgICAgICA+Pj4gZGVsIGNbJ3NhdXNhZ2UnXSAgICAgICAgICAgICAgICAgICAgICAgICMgZGVsIGFjdHVhbGx5IHJlbW92ZXMgdGhlIGVudHJ5CiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLSAgIENvdW50ZXIgb2JqZWN0cyBzdXBwb3J0IHRocmVlIG1ldGhvZHMgYmV5b25kIHRob3NlIGF2YWlsYWJsZSBmb3IgYWxsCi0gICBkaWN0aW9uYXJpZXM6CisgICAgQ291bnRlciBvYmplY3RzIHN1cHBvcnQgdGhyZWUgbWV0aG9kcyBiZXlvbmQgdGhvc2UgYXZhaWxhYmxlIGZvciBhbGwKKyAgICBkaWN0aW9uYXJpZXM6CiAKLSAgIC4uIG1ldGhvZDo6IGVsZW1lbnRzKCkKKyAgICAuLiBtZXRob2Q6OiBlbGVtZW50cygpCiAKLSAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzCi0gICAgICBjb3VudC4gIEVsZW1lbnRzIGFyZSByZXR1cm5lZCBpbiBhcmJpdHJhcnkgb3JkZXIuICBJZiBhbiBlbGVtZW50J3MgY291bnQKLSAgICAgIGlzIGxlc3MgdGhhbiBvbmUsIDptZXRoOmBlbGVtZW50c2Agd2lsbCBpZ25vcmUgaXQuCisgICAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGVsZW1lbnRzIHJlcGVhdGluZyBlYWNoIGFzIG1hbnkgdGltZXMgYXMgaXRzCisgICAgICAgIGNvdW50LiAgRWxlbWVudHMgYXJlIHJldHVybmVkIGluIGFyYml0cmFyeSBvcmRlci4gIElmIGFuIGVsZW1lbnQncyBjb3VudAorICAgICAgICBpcyBsZXNzIHRoYW4gb25lLCA6bWV0aDpgZWxlbWVudHNgIHdpbGwgaWdub3JlIGl0LgogCiAgICAgICAgICAgICA+Pj4gYyA9IENvdW50ZXIoYT00LCBiPTIsIGM9MCwgZD0tMikKICAgICAgICAgICAgID4+PiBsaXN0KGMuZWxlbWVudHMoKSkKICAgICAgICAgICAgIFsnYScsICdhJywgJ2EnLCAnYScsICdiJywgJ2InXQogCi0gICAuLiBtZXRob2Q6OiBtb3N0X2NvbW1vbihbbl0pCisgICAgLi4gbWV0aG9kOjogbW9zdF9jb21tb24oW25dKQogCi0gICAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSAqbiogbW9zdCBjb21tb24gZWxlbWVudHMgYW5kIHRoZWlyIGNvdW50cyBmcm9tIHRoZQotICAgICAgbW9zdCBjb21tb24gdG8gdGhlIGxlYXN0LiAgSWYgKm4qIGlzIG5vdCBzcGVjaWZpZWQsIDpmdW5jOmBtb3N0X2NvbW1vbmAKLSAgICAgIHJldHVybnMgKmFsbCogZWxlbWVudHMgaW4gdGhlIGNvdW50ZXIuICBFbGVtZW50cyB3aXRoIGVxdWFsIGNvdW50cyBhcmUKLSAgICAgIG9yZGVyZWQgYXJiaXRyYXJpbHk6CisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlICpuKiBtb3N0IGNvbW1vbiBlbGVtZW50cyBhbmQgdGhlaXIgY291bnRzIGZyb20gdGhlCisgICAgICAgIG1vc3QgY29tbW9uIHRvIHRoZSBsZWFzdC4gIElmICpuKiBpcyBub3Qgc3BlY2lmaWVkLCA6ZnVuYzpgbW9zdF9jb21tb25gCisgICAgICAgIHJldHVybnMgKmFsbCogZWxlbWVudHMgaW4gdGhlIGNvdW50ZXIuICBFbGVtZW50cyB3aXRoIGVxdWFsIGNvdW50cyBhcmUKKyAgICAgICAgb3JkZXJlZCBhcmJpdHJhcmlseToKIAogICAgICAgICAgICAgPj4+IENvdW50ZXIoJ2FicmFjYWRhYnJhJykubW9zdF9jb21tb24oMykKICAgICAgICAgICAgIFsoJ2EnLCA1KSwgKCdyJywgMiksICgnYicsIDIpXQogCi0gICAuLiBtZXRob2Q6OiBzdWJ0cmFjdChbaXRlcmFibGUtb3ItbWFwcGluZ10pCisgICAgLi4gbWV0aG9kOjogc3VidHJhY3QoW2l0ZXJhYmxlLW9yLW1hcHBpbmddKQogCi0gICAgICBFbGVtZW50cyBhcmUgc3VidHJhY3RlZCBmcm9tIGFuICppdGVyYWJsZSogb3IgZnJvbSBhbm90aGVyICptYXBwaW5nKgotICAgICAgKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBzdWJ0cmFjdHMgY291bnRzIGluc3RlYWQKLSAgICAgIG9mIHJlcGxhY2luZyB0aGVtLiAgQm90aCBpbnB1dHMgYW5kIG91dHB1dHMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUuCisgICAgICAgIEVsZW1lbnRzIGFyZSBzdWJ0cmFjdGVkIGZyb20gYW4gKml0ZXJhYmxlKiBvciBmcm9tIGFub3RoZXIgKm1hcHBpbmcqCisgICAgICAgIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgc3VidHJhY3RzIGNvdW50cyBpbnN0ZWFkCisgICAgICAgIG9mIHJlcGxhY2luZyB0aGVtLiAgQm90aCBpbnB1dHMgYW5kIG91dHB1dHMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUuCiAKICAgICAgICAgICAgID4+PiBjID0gQ291bnRlcihhPTQsIGI9MiwgYz0wLCBkPS0yKQogICAgICAgICAgICAgPj4+IGQgPSBDb3VudGVyKGE9MSwgYj0yLCBjPTMsIGQ9NCkKICAgICAgICAgICAgID4+PiBjLnN1YnRyYWN0KGQpCiAgICAgICAgICAgICBDb3VudGVyKHsnYSc6IDMsICdiJzogMCwgJ2MnOiAtMywgJ2QnOiAtNn0pCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAotICAgVGhlIHVzdWFsIGRpY3Rpb25hcnkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMKLSAgIGV4Y2VwdCBmb3IgdHdvIHdoaWNoIHdvcmsgZGlmZmVyZW50bHkgZm9yIGNvdW50ZXJzLgorICAgIFRoZSB1c3VhbCBkaWN0aW9uYXJ5IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSBmb3IgOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzCisgICAgZXhjZXB0IGZvciB0d28gd2hpY2ggd29yayBkaWZmZXJlbnRseSBmb3IgY291bnRlcnMuCiAKLSAgIC4uIG1ldGhvZDo6IGZyb21rZXlzKGl0ZXJhYmxlKQorICAgIC4uIG1ldGhvZDo6IGZyb21rZXlzKGl0ZXJhYmxlKQogCi0gICAgICBUaGlzIGNsYXNzIG1ldGhvZCBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIDpjbGFzczpgQ291bnRlcmAgb2JqZWN0cy4KKyAgICAgICAgVGhpcyBjbGFzcyBtZXRob2QgaXMgbm90IGltcGxlbWVudGVkIGZvciA6Y2xhc3M6YENvdW50ZXJgIG9iamVjdHMuCiAKLSAgIC4uIG1ldGhvZDo6IHVwZGF0ZShbaXRlcmFibGUtb3ItbWFwcGluZ10pCisgICAgLi4gbWV0aG9kOjogdXBkYXRlKFtpdGVyYWJsZS1vci1tYXBwaW5nXSkKIAotICAgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGFkZGVkLWluIGZyb20gYW5vdGhlcgotICAgICAgKm1hcHBpbmcqIChvciBjb3VudGVyKS4gIExpa2UgOm1ldGg6YGRpY3QudXBkYXRlYCBidXQgYWRkcyBjb3VudHMKLSAgICAgIGluc3RlYWQgb2YgcmVwbGFjaW5nIHRoZW0uICBBbHNvLCB0aGUgKml0ZXJhYmxlKiBpcyBleHBlY3RlZCB0byBiZSBhCi0gICAgICBzZXF1ZW5jZSBvZiBlbGVtZW50cywgbm90IGEgc2VxdWVuY2Ugb2YgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4KKyAgICAgICAgRWxlbWVudHMgYXJlIGNvdW50ZWQgZnJvbSBhbiAqaXRlcmFibGUqIG9yIGFkZGVkLWluIGZyb20gYW5vdGhlcgorICAgICAgICAqbWFwcGluZyogKG9yIGNvdW50ZXIpLiAgTGlrZSA6bWV0aDpgZGljdC51cGRhdGVgIGJ1dCBhZGRzIGNvdW50cworICAgICAgICBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtLiAgQWxzbywgdGhlICppdGVyYWJsZSogaXMgZXhwZWN0ZWQgdG8gYmUgYQorICAgICAgICBzZXF1ZW5jZSBvZiBlbGVtZW50cywgbm90IGEgc2VxdWVuY2Ugb2YgYGAoa2V5LCB2YWx1ZSlgYCBwYWlycy4KIAogQ29tbW9uIHBhdHRlcm5zIGZvciB3b3JraW5nIHdpdGggOmNsYXNzOmBDb3VudGVyYCBvYmplY3RzOjoKIApAQCAtMTQ5LDcgKzMwNyw3IEBACiAgICAgYy5pdGVtcygpICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdG8gYSBsaXN0IG9mIChlbGVtLCBjbnQpIHBhaXJzCiAgICAgQ291bnRlcihkaWN0KGxpc3Rfb2ZfcGFpcnMpKSAgICAjIGNvbnZlcnQgZnJvbSBhIGxpc3Qgb2YgKGVsZW0sIGNudCkgcGFpcnMKICAgICBjLm1vc3RfY29tbW9uKClbOi1uOi0xXSAgICAgICAgICMgbiBsZWFzdCBjb21tb24gZWxlbWVudHMKLSAgICBjICs9IENvdW50ZXIoKSAgICAgICAgICAgICAgICAgICMgcmVtb3ZlIHplcm8gYW5kIG5lZ2F0aXZlIGNvdW50cworICAgICtjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgemVybyBhbmQgbmVnYXRpdmUgY291bnRzCiAKIFNldmVyYWwgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgYXJlIHByb3ZpZGVkIGZvciBjb21iaW5pbmcgOmNsYXNzOmBDb3VudGVyYAogb2JqZWN0cyB0byBwcm9kdWNlIG11bHRpc2V0cyAoY291bnRlcnMgdGhhdCBoYXZlIGNvdW50cyBncmVhdGVyIHRoYW4gemVybykuCkBAIC0xNjksMzIgKzMyNyw0NCBAQAogICAgID4+PiBjIHwgZCAgICAgICAgICAgICAgICAgICAgICAgIyB1bmlvbjogIG1heChjW3hdLCBkW3hdKQogICAgIENvdW50ZXIoeydhJzogMywgJ2InOiAyfSkKIAorVW5hcnkgYWRkaXRpb24gYW5kIHN1YnN0cmFjdGlvbiBhcmUgc2hvcnRjdXRzIGZvciBhZGRpbmcgYW4gZW1wdHkgY291bnRlcgorb3Igc3VidHJhY3RpbmcgZnJvbSBhbiBlbXB0eSBjb3VudGVyLgorCisgICAgPj4+IGMgPSBDb3VudGVyKGE9MiwgYj0tNCkKKyAgICA+Pj4gK2MKKyAgICBDb3VudGVyKHsnYSc6IDJ9KQorICAgID4+PiAtYworICAgIENvdW50ZXIoeydiJzogNH0pCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgIEFkZGVkIHN1cHBvcnQgZm9yIHVuYXJ5IHBsdXMsIHVuYXJ5IG1pbnVzLCBhbmQgaW4tcGxhY2UgbXVsdGlzZXQgb3BlcmF0aW9ucy4KKwogLi4gbm90ZTo6CiAKLSAgIENvdW50ZXJzIHdlcmUgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3NpdGl2ZSBpbnRlZ2VycyB0byByZXByZXNlbnQKLSAgIHJ1bm5pbmcgY291bnRzOyBob3dldmVyLCBjYXJlIHdhcyB0YWtlbiB0byBub3QgdW5uZWNlc3NhcmlseSBwcmVjbHVkZSB1c2UKLSAgIGNhc2VzIG5lZWRpbmcgb3RoZXIgdHlwZXMgb3IgbmVnYXRpdmUgdmFsdWVzLiAgVG8gaGVscCB3aXRoIHRob3NlIHVzZSBjYXNlcywKLSAgIHRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG1pbmltdW0gcmFuZ2UgYW5kIHR5cGUgcmVzdHJpY3Rpb25zLgorICAgIENvdW50ZXJzIHdlcmUgcHJpbWFyaWx5IGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBwb3NpdGl2ZSBpbnRlZ2VycyB0byByZXByZXNlbnQKKyAgICBydW5uaW5nIGNvdW50czsgaG93ZXZlciwgY2FyZSB3YXMgdGFrZW4gdG8gbm90IHVubmVjZXNzYXJpbHkgcHJlY2x1ZGUgdXNlCisgICAgY2FzZXMgbmVlZGluZyBvdGhlciB0eXBlcyBvciBuZWdhdGl2ZSB2YWx1ZXMuICBUbyBoZWxwIHdpdGggdGhvc2UgdXNlIGNhc2VzLAorICAgIHRoaXMgc2VjdGlvbiBkb2N1bWVudHMgdGhlIG1pbmltdW0gcmFuZ2UgYW5kIHR5cGUgcmVzdHJpY3Rpb25zLgogCi0gICAqIFRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzIGl0c2VsZiBpcyBhIGRpY3Rpb25hcnkgc3ViY2xhc3Mgd2l0aCBubwotICAgICByZXN0cmljdGlvbnMgb24gaXRzIGtleXMgYW5kIHZhbHVlcy4gIFRoZSB2YWx1ZXMgYXJlIGludGVuZGVkIHRvIGJlIG51bWJlcnMKLSAgICAgcmVwcmVzZW50aW5nIGNvdW50cywgYnV0IHlvdSAqY291bGQqIHN0b3JlIGFueXRoaW5nIGluIHRoZSB2YWx1ZSBmaWVsZC4KKyAgICAqIFRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzIGl0c2VsZiBpcyBhIGRpY3Rpb25hcnkgc3ViY2xhc3Mgd2l0aCBubworICAgICAgcmVzdHJpY3Rpb25zIG9uIGl0cyBrZXlzIGFuZCB2YWx1ZXMuICBUaGUgdmFsdWVzIGFyZSBpbnRlbmRlZCB0byBiZSBudW1iZXJzCisgICAgICByZXByZXNlbnRpbmcgY291bnRzLCBidXQgeW91ICpjb3VsZCogc3RvcmUgYW55dGhpbmcgaW4gdGhlIHZhbHVlIGZpZWxkLgogCi0gICAqIFRoZSA6bWV0aDpgbW9zdF9jb21tb25gIG1ldGhvZCByZXF1aXJlcyBvbmx5IHRoYXQgdGhlIHZhbHVlcyBiZSBvcmRlcmFibGUuCisgICAgKiBUaGUgOm1ldGg6YG1vc3RfY29tbW9uYCBtZXRob2QgcmVxdWlyZXMgb25seSB0aGF0IHRoZSB2YWx1ZXMgYmUgb3JkZXJhYmxlLgogCi0gICAqIEZvciBpbi1wbGFjZSBvcGVyYXRpb25zIHN1Y2ggYXMgYGBjW2tleV0gKz0gMWBgLCB0aGUgdmFsdWUgdHlwZSBuZWVkIG9ubHkKLSAgICAgc3VwcG9ydCBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uICBTbyBmcmFjdGlvbnMsIGZsb2F0cywgYW5kIGRlY2ltYWxzIHdvdWxkCi0gICAgIHdvcmsgYW5kIG5lZ2F0aXZlIHZhbHVlcyBhcmUgc3VwcG9ydGVkLiAgVGhlIHNhbWUgaXMgYWxzbyB0cnVlIGZvcgotICAgICA6bWV0aDpgdXBkYXRlYCBhbmQgOm1ldGg6YHN1YnRyYWN0YCB3aGljaCBhbGxvdyBuZWdhdGl2ZSBhbmQgemVybyB2YWx1ZXMKLSAgICAgZm9yIGJvdGggaW5wdXRzIGFuZCBvdXRwdXRzLgorICAgICogRm9yIGluLXBsYWNlIG9wZXJhdGlvbnMgc3VjaCBhcyBgYGNba2V5XSArPSAxYGAsIHRoZSB2YWx1ZSB0eXBlIG5lZWQgb25seQorICAgICAgc3VwcG9ydCBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uICBTbyBmcmFjdGlvbnMsIGZsb2F0cywgYW5kIGRlY2ltYWxzIHdvdWxkCisgICAgICB3b3JrIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZC4gIFRoZSBzYW1lIGlzIGFsc28gdHJ1ZSBmb3IKKyAgICAgIDptZXRoOmB1cGRhdGVgIGFuZCA6bWV0aDpgc3VidHJhY3RgIHdoaWNoIGFsbG93IG5lZ2F0aXZlIGFuZCB6ZXJvIHZhbHVlcworICAgICAgZm9yIGJvdGggaW5wdXRzIGFuZCBvdXRwdXRzLgogCi0gICAqIFRoZSBtdWx0aXNldCBtZXRob2RzIGFyZSBkZXNpZ25lZCBvbmx5IGZvciB1c2UgY2FzZXMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMuCi0gICAgIFRoZSBpbnB1dHMgbWF5IGJlIG5lZ2F0aXZlIG9yIHplcm8sIGJ1dCBvbmx5IG91dHB1dHMgd2l0aCBwb3NpdGl2ZSB2YWx1ZXMKLSAgICAgYXJlIGNyZWF0ZWQuICBUaGVyZSBhcmUgbm8gdHlwZSByZXN0cmljdGlvbnMsIGJ1dCB0aGUgdmFsdWUgdHlwZSBuZWVkcyB0bwotICAgICBzdXBwb3J0IGFkZGl0aW9uLCBzdWJ0cmFjdGlvbiwgYW5kIGNvbXBhcmlzb24uCisgICAgKiBUaGUgbXVsdGlzZXQgbWV0aG9kcyBhcmUgZGVzaWduZWQgb25seSBmb3IgdXNlIGNhc2VzIHdpdGggcG9zaXRpdmUgdmFsdWVzLgorICAgICAgVGhlIGlucHV0cyBtYXkgYmUgbmVnYXRpdmUgb3IgemVybywgYnV0IG9ubHkgb3V0cHV0cyB3aXRoIHBvc2l0aXZlIHZhbHVlcworICAgICAgYXJlIGNyZWF0ZWQuICBUaGVyZSBhcmUgbm8gdHlwZSByZXN0cmljdGlvbnMsIGJ1dCB0aGUgdmFsdWUgdHlwZSBuZWVkcyB0bworICAgICAgc3VwcG9ydCBhZGRpdGlvbiwgc3VidHJhY3Rpb24sIGFuZCBjb21wYXJpc29uLgogCi0gICAqIFRoZSA6bWV0aDpgZWxlbWVudHNgIG1ldGhvZCByZXF1aXJlcyBpbnRlZ2VyIGNvdW50cy4gIEl0IGlnbm9yZXMgemVybyBhbmQKLSAgICAgbmVnYXRpdmUgY291bnRzLgorICAgICogVGhlIDptZXRoOmBlbGVtZW50c2AgbWV0aG9kIHJlcXVpcmVzIGludGVnZXIgY291bnRzLiAgSXQgaWdub3JlcyB6ZXJvIGFuZAorICAgICAgbmVnYXRpdmUgY291bnRzLgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjE3LDcgKzM4Nyw3IEBACiAgICAgKiBUbyBlbnVtZXJhdGUgYWxsIGRpc3RpbmN0IG11bHRpc2V0cyBvZiBhIGdpdmVuIHNpemUgb3ZlciBhIGdpdmVuIHNldCBvZgogICAgICAgZWxlbWVudHMsIHNlZSA6ZnVuYzpgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50YC4KIAotICAgICAgICAgIG1hcChDb3VudGVyLCBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgnQUJDJywgMikpIC0tPiBBQSBBQiBBQyBCQiBCQyBDQworICAgICAgICAgICAgbWFwKENvdW50ZXIsIGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCdBQkMnLCAyKSkgLS0+IEFBIEFCIEFDIEJCIEJDIENDCiAKIAogOmNsYXNzOmBkZXF1ZWAgb2JqZWN0cwpAQCAtMjI1LDEwNSArMzk1LDEwNSBAQAogCiAuLiBjbGFzczo6IGRlcXVlKFtpdGVyYWJsZSwgW21heGxlbl1dKQogCi0gICBSZXR1cm5zIGEgbmV3IGRlcXVlIG9iamVjdCBpbml0aWFsaXplZCBsZWZ0LXRvLXJpZ2h0ICh1c2luZyA6bWV0aDpgYXBwZW5kYCkgd2l0aAotICAgZGF0YSBmcm9tICppdGVyYWJsZSouICBJZiAqaXRlcmFibGUqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBuZXcgZGVxdWUgaXMgZW1wdHkuCisgICAgUmV0dXJucyBhIG5ldyBkZXF1ZSBvYmplY3QgaW5pdGlhbGl6ZWQgbGVmdC10by1yaWdodCAodXNpbmcgOm1ldGg6YGFwcGVuZGApIHdpdGgKKyAgICBkYXRhIGZyb20gKml0ZXJhYmxlKi4gIElmICppdGVyYWJsZSogaXMgbm90IHNwZWNpZmllZCwgdGhlIG5ldyBkZXF1ZSBpcyBlbXB0eS4KIAotICAgRGVxdWVzIGFyZSBhIGdlbmVyYWxpemF0aW9uIG9mIHN0YWNrcyBhbmQgcXVldWVzICh0aGUgbmFtZSBpcyBwcm9ub3VuY2VkICJkZWNrIgotICAgYW5kIGlzIHNob3J0IGZvciAiZG91YmxlLWVuZGVkIHF1ZXVlIikuICBEZXF1ZXMgc3VwcG9ydCB0aHJlYWQtc2FmZSwgbWVtb3J5Ci0gICBlZmZpY2llbnQgYXBwZW5kcyBhbmQgcG9wcyBmcm9tIGVpdGhlciBzaWRlIG9mIHRoZSBkZXF1ZSB3aXRoIGFwcHJveGltYXRlbHkgdGhlCi0gICBzYW1lIE8oMSkgcGVyZm9ybWFuY2UgaW4gZWl0aGVyIGRpcmVjdGlvbi4KKyAgICBEZXF1ZXMgYXJlIGEgZ2VuZXJhbGl6YXRpb24gb2Ygc3RhY2tzIGFuZCBxdWV1ZXMgKHRoZSBuYW1lIGlzIHByb25vdW5jZWQgImRlY2siCisgICAgYW5kIGlzIHNob3J0IGZvciAiZG91YmxlLWVuZGVkIHF1ZXVlIikuICBEZXF1ZXMgc3VwcG9ydCB0aHJlYWQtc2FmZSwgbWVtb3J5CisgICAgZWZmaWNpZW50IGFwcGVuZHMgYW5kIHBvcHMgZnJvbSBlaXRoZXIgc2lkZSBvZiB0aGUgZGVxdWUgd2l0aCBhcHByb3hpbWF0ZWx5IHRoZQorICAgIHNhbWUgTygxKSBwZXJmb3JtYW5jZSBpbiBlaXRoZXIgZGlyZWN0aW9uLgogCi0gICBUaG91Z2ggOmNsYXNzOmBsaXN0YCBvYmplY3RzIHN1cHBvcnQgc2ltaWxhciBvcGVyYXRpb25zLCB0aGV5IGFyZSBvcHRpbWl6ZWQgZm9yCi0gICBmYXN0IGZpeGVkLWxlbmd0aCBvcGVyYXRpb25zIGFuZCBpbmN1ciBPKG4pIG1lbW9yeSBtb3ZlbWVudCBjb3N0cyBmb3IKLSAgIGBgcG9wKDApYGAgYW5kIGBgaW5zZXJ0KDAsIHYpYGAgb3BlcmF0aW9ucyB3aGljaCBjaGFuZ2UgYm90aCB0aGUgc2l6ZSBhbmQKLSAgIHBvc2l0aW9uIG9mIHRoZSB1bmRlcmx5aW5nIGRhdGEgcmVwcmVzZW50YXRpb24uCisgICAgVGhvdWdoIDpjbGFzczpgbGlzdGAgb2JqZWN0cyBzdXBwb3J0IHNpbWlsYXIgb3BlcmF0aW9ucywgdGhleSBhcmUgb3B0aW1pemVkIGZvcgorICAgIGZhc3QgZml4ZWQtbGVuZ3RoIG9wZXJhdGlvbnMgYW5kIGluY3VyIE8obikgbWVtb3J5IG1vdmVtZW50IGNvc3RzIGZvcgorICAgIGBgcG9wKDApYGAgYW5kIGBgaW5zZXJ0KDAsIHYpYGAgb3BlcmF0aW9ucyB3aGljaCBjaGFuZ2UgYm90aCB0aGUgc2l6ZSBhbmQKKyAgICBwb3NpdGlvbiBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHJlcHJlc2VudGF0aW9uLgogCiAKLSAgIElmICptYXhsZW4qIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgKk5vbmUqLCBkZXF1ZXMgbWF5IGdyb3cgdG8gYW4KLSAgIGFyYml0cmFyeSBsZW5ndGguICBPdGhlcndpc2UsIHRoZSBkZXF1ZSBpcyBib3VuZGVkIHRvIHRoZSBzcGVjaWZpZWQgbWF4aW11bQotICAgbGVuZ3RoLiAgT25jZSBhIGJvdW5kZWQgbGVuZ3RoIGRlcXVlIGlzIGZ1bGwsIHdoZW4gbmV3IGl0ZW1zIGFyZSBhZGRlZCwgYQotICAgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgaXRlbXMgYXJlIGRpc2NhcmRlZCBmcm9tIHRoZSBvcHBvc2l0ZSBlbmQuICBCb3VuZGVkCi0gICBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIgaW4KLSAgIFVuaXguIFRoZXkgYXJlIGFsc28gdXNlZnVsIGZvciB0cmFja2luZyB0cmFuc2FjdGlvbnMgYW5kIG90aGVyIHBvb2xzIG9mIGRhdGEKLSAgIHdoZXJlIG9ubHkgdGhlIG1vc3QgcmVjZW50IGFjdGl2aXR5IGlzIG9mIGludGVyZXN0LgorICAgIElmICptYXhsZW4qIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgKk5vbmUqLCBkZXF1ZXMgbWF5IGdyb3cgdG8gYW4KKyAgICBhcmJpdHJhcnkgbGVuZ3RoLiAgT3RoZXJ3aXNlLCB0aGUgZGVxdWUgaXMgYm91bmRlZCB0byB0aGUgc3BlY2lmaWVkIG1heGltdW0KKyAgICBsZW5ndGguICBPbmNlIGEgYm91bmRlZCBsZW5ndGggZGVxdWUgaXMgZnVsbCwgd2hlbiBuZXcgaXRlbXMgYXJlIGFkZGVkLCBhCisgICAgY29ycmVzcG9uZGluZyBudW1iZXIgb2YgaXRlbXMgYXJlIGRpc2NhcmRlZCBmcm9tIHRoZSBvcHBvc2l0ZSBlbmQuICBCb3VuZGVkCisgICAgbGVuZ3RoIGRlcXVlcyBwcm92aWRlIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byB0aGUgYGB0YWlsYGAgZmlsdGVyIGluCisgICAgVW5peC4gVGhleSBhcmUgYWxzbyB1c2VmdWwgZm9yIHRyYWNraW5nIHRyYW5zYWN0aW9ucyBhbmQgb3RoZXIgcG9vbHMgb2YgZGF0YQorICAgIHdoZXJlIG9ubHkgdGhlIG1vc3QgcmVjZW50IGFjdGl2aXR5IGlzIG9mIGludGVyZXN0LgogCiAKLSAgIERlcXVlIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgICAgRGVxdWUgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAotICAgLi4gbWV0aG9kOjogYXBwZW5kKHgpCisgICAgLi4gbWV0aG9kOjogYXBwZW5kKHgpCiAKLSAgICAgIEFkZCAqeCogdG8gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLgorICAgICAgICBBZGQgKngqIHRvIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZS4KIAogCi0gICAuLiBtZXRob2Q6OiBhcHBlbmRsZWZ0KHgpCisgICAgLi4gbWV0aG9kOjogYXBwZW5kbGVmdCh4KQogCi0gICAgICBBZGQgKngqIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLgorICAgICAgICBBZGQgKngqIHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKKyAgICAuLiBtZXRob2Q6OiBjbGVhcigpCiAKLSAgICAgIFJlbW92ZSBhbGwgZWxlbWVudHMgZnJvbSB0aGUgZGVxdWUgbGVhdmluZyBpdCB3aXRoIGxlbmd0aCAwLgorICAgICAgICBSZW1vdmUgYWxsIGVsZW1lbnRzIGZyb20gdGhlIGRlcXVlIGxlYXZpbmcgaXQgd2l0aCBsZW5ndGggMC4KIAogCi0gICAuLiBtZXRob2Q6OiBjb3VudCh4KQorICAgIC4uIG1ldGhvZDo6IGNvdW50KHgpCiAKLSAgICAgIENvdW50IHRoZSBudW1iZXIgb2YgZGVxdWUgZWxlbWVudHMgZXF1YWwgdG8gKngqLgorICAgICAgICBDb3VudCB0aGUgbnVtYmVyIG9mIGRlcXVlIGVsZW1lbnRzIGVxdWFsIHRvICp4Ki4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLSAgIC4uIG1ldGhvZDo6IGV4dGVuZChpdGVyYWJsZSkKKyAgICAuLiBtZXRob2Q6OiBleHRlbmQoaXRlcmFibGUpCiAKLSAgICAgIEV4dGVuZCB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gdGhlIGl0ZXJhYmxlCi0gICAgICBhcmd1bWVudC4KKyAgICAgICAgRXh0ZW5kIHRoZSByaWdodCBzaWRlIG9mIHRoZSBkZXF1ZSBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUKKyAgICAgICAgYXJndW1lbnQuCiAKIAotICAgLi4gbWV0aG9kOjogZXh0ZW5kbGVmdChpdGVyYWJsZSkKKyAgICAuLiBtZXRob2Q6OiBleHRlbmRsZWZ0KGl0ZXJhYmxlKQogCi0gICAgICBFeHRlbmQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gKml0ZXJhYmxlKi4KLSAgICAgIE5vdGUsIHRoZSBzZXJpZXMgb2YgbGVmdCBhcHBlbmRzIHJlc3VsdHMgaW4gcmV2ZXJzaW5nIHRoZSBvcmRlciBvZgotICAgICAgZWxlbWVudHMgaW4gdGhlIGl0ZXJhYmxlIGFyZ3VtZW50LgorICAgICAgICBFeHRlbmQgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUgYnkgYXBwZW5kaW5nIGVsZW1lbnRzIGZyb20gKml0ZXJhYmxlKi4KKyAgICAgICAgTm90ZSwgdGhlIHNlcmllcyBvZiBsZWZ0IGFwcGVuZHMgcmVzdWx0cyBpbiByZXZlcnNpbmcgdGhlIG9yZGVyIG9mCisgICAgICAgIGVsZW1lbnRzIGluIHRoZSBpdGVyYWJsZSBhcmd1bWVudC4KIAogCi0gICAuLiBtZXRob2Q6OiBwb3AoKQorICAgIC4uIG1ldGhvZDo6IHBvcCgpCiAKLSAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGVsZW1lbnQgZnJvbSB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCi0gICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgorICAgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGRlcXVlLiBJZiBubworICAgICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgogCiAKLSAgIC4uIG1ldGhvZDo6IHBvcGxlZnQoKQorICAgIC4uIG1ldGhvZDo6IHBvcGxlZnQoKQogCi0gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCi0gICAgICBlbGVtZW50cyBhcmUgcHJlc2VudCwgcmFpc2VzIGFuIDpleGM6YEluZGV4RXJyb3JgLgorICAgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBlbGVtZW50IGZyb20gdGhlIGxlZnQgc2lkZSBvZiB0aGUgZGVxdWUuIElmIG5vCisgICAgICAgIGVsZW1lbnRzIGFyZSBwcmVzZW50LCByYWlzZXMgYW4gOmV4YzpgSW5kZXhFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcmVtb3ZlKHZhbHVlKQorICAgIC4uIG1ldGhvZDo6IHJlbW92ZSh2YWx1ZSkKIAotICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQotICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICAgIFJlbW92ZWQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnZhbHVlKi4gIElmIG5vdCBmb3VuZCwgcmFpc2VzIGEKKyAgICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuCiAKIAotICAgLi4gbWV0aG9kOjogcmV2ZXJzZSgpCisgICAgLi4gbWV0aG9kOjogcmV2ZXJzZSgpCiAKLSAgICAgIFJldmVyc2UgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXF1ZSBpbi1wbGFjZSBhbmQgdGhlbiByZXR1cm4gYGBOb25lYGAuCisgICAgICAgIFJldmVyc2UgdGhlIGVsZW1lbnRzIG9mIHRoZSBkZXF1ZSBpbi1wbGFjZSBhbmQgdGhlbiByZXR1cm4gYGBOb25lYGAuCiAKLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiByb3RhdGUobikKKyAgICAuLiBtZXRob2Q6OiByb3RhdGUobikKIAotICAgICAgUm90YXRlIHRoZSBkZXF1ZSAqbiogc3RlcHMgdG8gdGhlIHJpZ2h0LiAgSWYgKm4qIGlzIG5lZ2F0aXZlLCByb3RhdGUgdG8KLSAgICAgIHRoZSBsZWZ0LiAgUm90YXRpbmcgb25lIHN0ZXAgdG8gdGhlIHJpZ2h0IGlzIGVxdWl2YWxlbnQgdG86Ci0gICAgICBgYGQuYXBwZW5kbGVmdChkLnBvcCgpKWBgLgorICAgICAgICBSb3RhdGUgdGhlIGRlcXVlICpuKiBzdGVwcyB0byB0aGUgcmlnaHQuICBJZiAqbiogaXMgbmVnYXRpdmUsIHJvdGF0ZSB0bworICAgICAgICB0aGUgbGVmdC4gIFJvdGF0aW5nIG9uZSBzdGVwIHRvIHRoZSByaWdodCBpcyBlcXVpdmFsZW50IHRvOgorICAgICAgICBgYGQuYXBwZW5kbGVmdChkLnBvcCgpKWBgLgogCiAKLSAgIERlcXVlIG9iamVjdHMgYWxzbyBwcm92aWRlIG9uZSByZWFkLW9ubHkgYXR0cmlidXRlOgorICAgIERlcXVlIG9iamVjdHMgYWxzbyBwcm92aWRlIG9uZSByZWFkLW9ubHkgYXR0cmlidXRlOgogCi0gICAuLiBhdHRyaWJ1dGU6OiBtYXhsZW4KKyAgICAuLiBhdHRyaWJ1dGU6OiBtYXhsZW4KIAotICAgICAgTWF4aW11bSBzaXplIG9mIGEgZGVxdWUgb3IgKk5vbmUqIGlmIHVuYm91bmRlZC4KKyAgICAgICAgTWF4aW11bSBzaXplIG9mIGEgZGVxdWUgb3IgKk5vbmUqIGlmIHVuYm91bmRlZC4KIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSwgZGVxdWVzIHN1cHBvcnQgaXRlcmF0aW9uLCBwaWNrbGluZywgYGBsZW4oZClgYCwKQEAgLTMzNiw1NiArNTA2LDU2IEBACiAKIC4uIGRvY3Rlc3Q6OgogCi0gICA+Pj4gZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLSAgID4+PiBkID0gZGVxdWUoJ2doaScpICAgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgd2l0aCB0aHJlZSBpdGVtcwotICAgPj4+IGZvciBlbGVtIGluIGQ6ICAgICAgICAgICAgICAgICAgICMgaXRlcmF0ZSBvdmVyIHRoZSBkZXF1ZSdzIGVsZW1lbnRzCi0gICAuLi4gICAgIHByaW50KGVsZW0udXBwZXIoKSkKLSAgIEcKLSAgIEgKLSAgIEkKKyAgICA+Pj4gZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKKyAgICA+Pj4gZCA9IGRlcXVlKCdnaGknKSAgICAgICAgICAgICAgICAgIyBtYWtlIGEgbmV3IGRlcXVlIHdpdGggdGhyZWUgaXRlbXMKKyAgICA+Pj4gZm9yIGVsZW0gaW4gZDogICAgICAgICAgICAgICAgICAgIyBpdGVyYXRlIG92ZXIgdGhlIGRlcXVlJ3MgZWxlbWVudHMKKyAgICAuLi4gICAgIHByaW50KGVsZW0udXBwZXIoKSkKKyAgICBHCisgICAgSAorICAgIEkKIAotICAgPj4+IGQuYXBwZW5kKCdqJykgICAgICAgICAgICAgICAgICAgICMgYWRkIGEgbmV3IGVudHJ5IHRvIHRoZSByaWdodCBzaWRlCi0gICA+Pj4gZC5hcHBlbmRsZWZ0KCdmJykgICAgICAgICAgICAgICAgIyBhZGQgYSBuZXcgZW50cnkgdG8gdGhlIGxlZnQgc2lkZQotICAgPj4+IGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlcXVlCi0gICBkZXF1ZShbJ2YnLCAnZycsICdoJywgJ2knLCAnaiddKQorICAgID4+PiBkLmFwcGVuZCgnaicpICAgICAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgcmlnaHQgc2lkZQorICAgID4+PiBkLmFwcGVuZGxlZnQoJ2YnKSAgICAgICAgICAgICAgICAjIGFkZCBhIG5ldyBlbnRyeSB0byB0aGUgbGVmdCBzaWRlCisgICAgPj4+IGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlcXVlCisgICAgZGVxdWUoWydmJywgJ2cnLCAnaCcsICdpJywgJ2onXSkKIAotICAgPj4+IGQucG9wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIHJpZ2h0bW9zdCBpdGVtCi0gICAnaicKLSAgID4+PiBkLnBvcGxlZnQoKSAgICAgICAgICAgICAgICAgICAgICAjIHJldHVybiBhbmQgcmVtb3ZlIHRoZSBsZWZ0bW9zdCBpdGVtCi0gICAnZicKLSAgID4+PiBsaXN0KGQpICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZXF1ZQotICAgWydnJywgJ2gnLCAnaSddCi0gICA+Pj4gZFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IGxlZnRtb3N0IGl0ZW0KLSAgICdnJwotICAgPj4+IGRbLTFdICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcGVlayBhdCByaWdodG1vc3QgaXRlbQotICAgJ2knCisgICAgPj4+IGQucG9wKCkgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIHJpZ2h0bW9zdCBpdGVtCisgICAgJ2onCisgICAgPj4+IGQucG9wbGVmdCgpICAgICAgICAgICAgICAgICAgICAgICMgcmV0dXJuIGFuZCByZW1vdmUgdGhlIGxlZnRtb3N0IGl0ZW0KKyAgICAnZicKKyAgICA+Pj4gbGlzdChkKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsaXN0IHRoZSBjb250ZW50cyBvZiB0aGUgZGVxdWUKKyAgICBbJ2cnLCAnaCcsICdpJ10KKyAgICA+Pj4gZFswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IGxlZnRtb3N0IGl0ZW0KKyAgICAnZycKKyAgICA+Pj4gZFstMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBwZWVrIGF0IHJpZ2h0bW9zdCBpdGVtCisgICAgJ2knCiAKLSAgID4+PiBsaXN0KHJldmVyc2VkKGQpKSAgICAgICAgICAgICAgICAjIGxpc3QgdGhlIGNvbnRlbnRzIG9mIGEgZGVxdWUgaW4gcmV2ZXJzZQotICAgWydpJywgJ2gnLCAnZyddCi0gICA+Pj4gJ2gnIGluIGQgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWFyY2ggdGhlIGRlcXVlCi0gICBUcnVlCi0gICA+Pj4gZC5leHRlbmQoJ2prbCcpICAgICAgICAgICAgICAgICAgIyBhZGQgbXVsdGlwbGUgZWxlbWVudHMgYXQgb25jZQotICAgPj4+IGQKLSAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKLSAgID4+PiBkLnJvdGF0ZSgxKSAgICAgICAgICAgICAgICAgICAgICAjIHJpZ2h0IHJvdGF0aW9uCi0gICA+Pj4gZAotICAgZGVxdWUoWydsJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnayddKQotICAgPj4+IGQucm90YXRlKC0xKSAgICAgICAgICAgICAgICAgICAgICMgbGVmdCByb3RhdGlvbgotICAgPj4+IGQKLSAgIGRlcXVlKFsnZycsICdoJywgJ2knLCAnaicsICdrJywgJ2wnXSkKKyAgICA+Pj4gbGlzdChyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAgIyBsaXN0IHRoZSBjb250ZW50cyBvZiBhIGRlcXVlIGluIHJldmVyc2UKKyAgICBbJ2knLCAnaCcsICdnJ10KKyAgICA+Pj4gJ2gnIGluIGQgICAgICAgICAgICAgICAgICAgICAgICAgIyBzZWFyY2ggdGhlIGRlcXVlCisgICAgVHJ1ZQorICAgID4+PiBkLmV4dGVuZCgnamtsJykgICAgICAgICAgICAgICAgICAjIGFkZCBtdWx0aXBsZSBlbGVtZW50cyBhdCBvbmNlCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJ10pCisgICAgPj4+IGQucm90YXRlKDEpICAgICAgICAgICAgICAgICAgICAgICMgcmlnaHQgcm90YXRpb24KKyAgICA+Pj4gZAorICAgIGRlcXVlKFsnbCcsICdnJywgJ2gnLCAnaScsICdqJywgJ2snXSkKKyAgICA+Pj4gZC5yb3RhdGUoLTEpICAgICAgICAgICAgICAgICAgICAgIyBsZWZ0IHJvdGF0aW9uCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJ10pCiAKLSAgID4+PiBkZXF1ZShyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgaW4gcmV2ZXJzZSBvcmRlcgotICAgZGVxdWUoWydsJywgJ2snLCAnaicsICdpJywgJ2gnLCAnZyddKQotICAgPj4+IGQuY2xlYXIoKSAgICAgICAgICAgICAgICAgICAgICAgICMgZW1wdHkgdGhlIGRlcXVlCi0gICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW5ub3QgcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKLSAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHB5c2hlbGwjNj4iLCBsaW5lIDEsIGluIC10b3BsZXZlbC0KLSAgICAgICBkLnBvcCgpCi0gICBJbmRleEVycm9yOiBwb3AgZnJvbSBhbiBlbXB0eSBkZXF1ZQorICAgID4+PiBkZXF1ZShyZXZlcnNlZChkKSkgICAgICAgICAgICAgICAjIG1ha2UgYSBuZXcgZGVxdWUgaW4gcmV2ZXJzZSBvcmRlcgorICAgIGRlcXVlKFsnbCcsICdrJywgJ2onLCAnaScsICdoJywgJ2cnXSkKKyAgICA+Pj4gZC5jbGVhcigpICAgICAgICAgICAgICAgICAgICAgICAgIyBlbXB0eSB0aGUgZGVxdWUKKyAgICA+Pj4gZC5wb3AoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBjYW5ub3QgcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIEZpbGUgIjxweXNoZWxsIzY+IiwgbGluZSAxLCBpbiAtdG9wbGV2ZWwtCisgICAgICAgICAgICBkLnBvcCgpCisgICAgSW5kZXhFcnJvcjogcG9wIGZyb20gYW4gZW1wdHkgZGVxdWUKIAotICAgPj4+IGQuZXh0ZW5kbGVmdCgnYWJjJykgICAgICAgICAgICAgICMgZXh0ZW5kbGVmdCgpIHJldmVyc2VzIHRoZSBpbnB1dCBvcmRlcgotICAgPj4+IGQKLSAgIGRlcXVlKFsnYycsICdiJywgJ2EnXSkKKyAgICA+Pj4gZC5leHRlbmRsZWZ0KCdhYmMnKSAgICAgICAgICAgICAgIyBleHRlbmRsZWZ0KCkgcmV2ZXJzZXMgdGhlIGlucHV0IG9yZGVyCisgICAgPj4+IGQKKyAgICBkZXF1ZShbJ2MnLCAnYicsICdhJ10pCiAKIAogOmNsYXNzOmBkZXF1ZWAgUmVjaXBlcwpAQCAtMzk2LDkgKzU2NiwxMCBAQAogQm91bmRlZCBsZW5ndGggZGVxdWVzIHByb3ZpZGUgZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHRoZSBgYHRhaWxgYCBmaWx0ZXIKIGluIFVuaXg6OgogCi0gICBkZWYgdGFpbChmaWxlbmFtZSwgbj0xMCk6Ci0gICAgICAgJ1JldHVybiB0aGUgbGFzdCBuIGxpbmVzIG9mIGEgZmlsZScKLSAgICAgICByZXR1cm4gZGVxdWUob3BlbihmaWxlbmFtZSksIG4pCisgICAgZGVmIHRhaWwoZmlsZW5hbWUsIG49MTApOgorICAgICAgICAnUmV0dXJuIHRoZSBsYXN0IG4gbGluZXMgb2YgYSBmaWxlJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICByZXR1cm4gZGVxdWUoZiwgbikKIAogQW5vdGhlciBhcHByb2FjaCB0byB1c2luZyBkZXF1ZXMgaXMgdG8gbWFpbnRhaW4gYSBzZXF1ZW5jZSBvZiByZWNlbnRseQogYWRkZWQgZWxlbWVudHMgYnkgYXBwZW5kaW5nIHRvIHRoZSByaWdodCBhbmQgcG9wcGluZyB0byB0aGUgbGVmdDo6CkBAIC00MTksMTAgKzU5MCwxMCBAQAogZGVsZXRpb24uICBGb3IgZXhhbXBsZSwgYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBgYGRlbCBkW25dYGAgcmVsaWVzIG9uCiB0aGUgOm1ldGg6YHJvdGF0ZWAgbWV0aG9kIHRvIHBvc2l0aW9uIGVsZW1lbnRzIHRvIGJlIHBvcHBlZDo6CiAKLSAgIGRlZiBkZWxldGVfbnRoKGQsIG4pOgotICAgICAgIGQucm90YXRlKC1uKQotICAgICAgIGQucG9wbGVmdCgpCi0gICAgICAgZC5yb3RhdGUobikKKyAgICBkZWYgZGVsZXRlX250aChkLCBuKToKKyAgICAgICAgZC5yb3RhdGUoLW4pCisgICAgICAgIGQucG9wbGVmdCgpCisgICAgICAgIGQucm90YXRlKG4pCiAKIFRvIGltcGxlbWVudCA6Y2xhc3M6YGRlcXVlYCBzbGljaW5nLCB1c2UgYSBzaW1pbGFyIGFwcHJvYWNoIGFwcGx5aW5nCiA6bWV0aDpgcm90YXRlYCB0byBicmluZyBhIHRhcmdldCBlbGVtZW50IHRvIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGRlcXVlLiBSZW1vdmUKQEAgLTQzOCw1MCArNjA5LDUwIEBACiAKIC4uIGNsYXNzOjogZGVmYXVsdGRpY3QoW2RlZmF1bHRfZmFjdG9yeVssIC4uLl1dKQogCi0gICBSZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnktbGlrZSBvYmplY3QuICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBpcyBhIHN1YmNsYXNzIG9mIHRoZQotICAgYnVpbHQtaW4gOmNsYXNzOmBkaWN0YCBjbGFzcy4gIEl0IG92ZXJyaWRlcyBvbmUgbWV0aG9kIGFuZCBhZGRzIG9uZSB3cml0YWJsZQotICAgaW5zdGFuY2UgdmFyaWFibGUuICBUaGUgcmVtYWluaW5nIGZ1bmN0aW9uYWxpdHkgaXMgdGhlIHNhbWUgYXMgZm9yIHRoZQotICAgOmNsYXNzOmBkaWN0YCBjbGFzcyBhbmQgaXMgbm90IGRvY3VtZW50ZWQgaGVyZS4KKyAgICBSZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnktbGlrZSBvYmplY3QuICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBpcyBhIHN1YmNsYXNzIG9mIHRoZQorICAgIGJ1aWx0LWluIDpjbGFzczpgZGljdGAgY2xhc3MuICBJdCBvdmVycmlkZXMgb25lIG1ldGhvZCBhbmQgYWRkcyBvbmUgd3JpdGFibGUKKyAgICBpbnN0YW5jZSB2YXJpYWJsZS4gIFRoZSByZW1haW5pbmcgZnVuY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlCisgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyBhbmQgaXMgbm90IGRvY3VtZW50ZWQgaGVyZS4KIAotICAgVGhlIGZpcnN0IGFyZ3VtZW50IHByb3ZpZGVzIHRoZSBpbml0aWFsIHZhbHVlIGZvciB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKLSAgIGF0dHJpYnV0ZTsgaXQgZGVmYXVsdHMgdG8gYGBOb25lYGAuIEFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0cmVhdGVkIHRoZSBzYW1lCi0gICBhcyBpZiB0aGV5IHdlcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YGRpY3RgIGNvbnN0cnVjdG9yLCBpbmNsdWRpbmcga2V5d29yZAotICAgYXJndW1lbnRzLgorICAgIFRoZSBmaXJzdCBhcmd1bWVudCBwcm92aWRlcyB0aGUgaW5pdGlhbCB2YWx1ZSBmb3IgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgCisgICAgYXR0cmlidXRlOyBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYC4gQWxsIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRyZWF0ZWQgdGhlIHNhbWUKKyAgICBhcyBpZiB0aGV5IHdlcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YGRpY3RgIGNvbnN0cnVjdG9yLCBpbmNsdWRpbmcga2V5d29yZAorICAgIGFyZ3VtZW50cy4KIAogCi0gICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2QgaW4gYWRkaXRpb24gdG8gdGhlCi0gICBzdGFuZGFyZCA6Y2xhc3M6YGRpY3RgIG9wZXJhdGlvbnM6CisgICAgOmNsYXNzOmBkZWZhdWx0ZGljdGAgb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kIGluIGFkZGl0aW9uIHRvIHRoZQorICAgIHN0YW5kYXJkIDpjbGFzczpgZGljdGAgb3BlcmF0aW9uczoKIAotICAgLi4gbWV0aG9kOjogX19taXNzaW5nX18oa2V5KQorICAgIC4uIG1ldGhvZDo6IF9fbWlzc2luZ19fKGtleSkKIAotICAgICAgSWYgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCwgdGhpcyByYWlzZXMgYQotICAgICAgOmV4YzpgS2V5RXJyb3JgIGV4Y2VwdGlvbiB3aXRoIHRoZSAqa2V5KiBhcyBhcmd1bWVudC4KKyAgICAgICAgSWYgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYCwgdGhpcyByYWlzZXMgYQorICAgICAgICA6ZXhjOmBLZXlFcnJvcmAgZXhjZXB0aW9uIHdpdGggdGhlICprZXkqIGFzIGFyZ3VtZW50LgogCi0gICAgICBJZiA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBpcyBub3QgYGBOb25lYGAsIGl0IGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cwotICAgICAgdG8gcHJvdmlkZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBnaXZlbiAqa2V5KiwgdGhpcyB2YWx1ZSBpcyBpbnNlcnRlZCBpbgotICAgICAgdGhlIGRpY3Rpb25hcnkgZm9yIHRoZSAqa2V5KiwgYW5kIHJldHVybmVkLgorICAgICAgICBJZiA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBpcyBub3QgYGBOb25lYGAsIGl0IGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cworICAgICAgICB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGdpdmVuICprZXkqLCB0aGlzIHZhbHVlIGlzIGluc2VydGVkIGluCisgICAgICAgIHRoZSBkaWN0aW9uYXJ5IGZvciB0aGUgKmtleSosIGFuZCByZXR1cm5lZC4KIAotICAgICAgSWYgY2FsbGluZyA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCByYWlzZXMgYW4gZXhjZXB0aW9uIHRoaXMgZXhjZXB0aW9uIGlzCi0gICAgICBwcm9wYWdhdGVkIHVuY2hhbmdlZC4KKyAgICAgICAgSWYgY2FsbGluZyA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCByYWlzZXMgYW4gZXhjZXB0aW9uIHRoaXMgZXhjZXB0aW9uIGlzCisgICAgICAgIHByb3BhZ2F0ZWQgdW5jaGFuZ2VkLgogCi0gICAgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgYnkgdGhlIDptZXRoOmBfX2dldGl0ZW1fX2AgbWV0aG9kIG9mIHRoZQotICAgICAgOmNsYXNzOmBkaWN0YCBjbGFzcyB3aGVuIHRoZSByZXF1ZXN0ZWQga2V5IGlzIG5vdCBmb3VuZDsgd2hhdGV2ZXIgaXQKLSAgICAgIHJldHVybnMgb3IgcmFpc2VzIGlzIHRoZW4gcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IDptZXRoOmBfX2dldGl0ZW1fX2AuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgOm1ldGg6YF9fZ2V0aXRlbV9fYCBtZXRob2Qgb2YgdGhlCisgICAgICAgIDpjbGFzczpgZGljdGAgY2xhc3Mgd2hlbiB0aGUgcmVxdWVzdGVkIGtleSBpcyBub3QgZm91bmQ7IHdoYXRldmVyIGl0CisgICAgICAgIHJldHVybnMgb3IgcmFpc2VzIGlzIHRoZW4gcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IDptZXRoOmBfX2dldGl0ZW1fX2AuCiAKLSAgICAgIE5vdGUgdGhhdCA6bWV0aDpgX19taXNzaW5nX19gIGlzICpub3QqIGNhbGxlZCBmb3IgYW55IG9wZXJhdGlvbnMgYmVzaWRlcwotICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYC4gVGhpcyBtZWFucyB0aGF0IDptZXRoOmBnZXRgIHdpbGwsIGxpa2Ugbm9ybWFsCi0gICAgICBkaWN0aW9uYXJpZXMsIHJldHVybiBgYE5vbmVgYCBhcyBhIGRlZmF1bHQgcmF0aGVyIHRoYW4gdXNpbmcKLSAgICAgIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgLgorICAgICAgICBOb3RlIHRoYXQgOm1ldGg6YF9fbWlzc2luZ19fYCBpcyAqbm90KiBjYWxsZWQgZm9yIGFueSBvcGVyYXRpb25zIGJlc2lkZXMKKyAgICAgICAgOm1ldGg6YF9fZ2V0aXRlbV9fYC4gVGhpcyBtZWFucyB0aGF0IDptZXRoOmBnZXRgIHdpbGwsIGxpa2Ugbm9ybWFsCisgICAgICAgIGRpY3Rpb25hcmllcywgcmV0dXJuIGBgTm9uZWBgIGFzIGEgZGVmYXVsdCByYXRoZXIgdGhhbiB1c2luZworICAgICAgICA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YC4KIAogCi0gICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZToKKyAgICA6Y2xhc3M6YGRlZmF1bHRkaWN0YCBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBpbnN0YW5jZSB2YXJpYWJsZToKIAogCi0gICAuLiBhdHRyaWJ1dGU6OiBkZWZhdWx0X2ZhY3RvcnkKKyAgICAuLiBhdHRyaWJ1dGU6OiBkZWZhdWx0X2ZhY3RvcnkKIAotICAgICAgVGhpcyBhdHRyaWJ1dGUgaXMgdXNlZCBieSB0aGUgOm1ldGg6YF9fbWlzc2luZ19fYCBtZXRob2Q7IGl0IGlzCi0gICAgICBpbml0aWFsaXplZCBmcm9tIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IsIGlmIHByZXNlbnQsIG9yIHRvCi0gICAgICBgYE5vbmVgYCwgaWYgYWJzZW50LgorICAgICAgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGJ5IHRoZSA6bWV0aDpgX19taXNzaW5nX19gIG1ldGhvZDsgaXQgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGNvbnN0cnVjdG9yLCBpZiBwcmVzZW50LCBvciB0bworICAgICAgICBgYE5vbmVgYCwgaWYgYWJzZW50LgogCiAKIDpjbGFzczpgZGVmYXVsdGRpY3RgIEV4YW1wbGVzCkBAIC00OTAsMTMgKzY2MSwxMyBAQAogVXNpbmcgOmNsYXNzOmBsaXN0YCBhcyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAsIGl0IGlzIGVhc3kgdG8gZ3JvdXAgYQogc2VxdWVuY2Ugb2Yga2V5LXZhbHVlIHBhaXJzIGludG8gYSBkaWN0aW9uYXJ5IG9mIGxpc3RzOgogCi0gICA+Pj4gcyA9IFsoJ3llbGxvdycsIDEpLCAoJ2JsdWUnLCAyKSwgKCd5ZWxsb3cnLCAzKSwgKCdibHVlJywgNCksICgncmVkJywgMSldCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGxpc3QpCi0gICA+Pj4gZm9yIGssIHYgaW4gczoKLSAgIC4uLiAgICAgZFtrXS5hcHBlbmQodikKLSAgIC4uLgotICAgPj4+IGxpc3QoZC5pdGVtcygpKQotICAgWygnYmx1ZScsIFsyLCA0XSksICgncmVkJywgWzFdKSwgKCd5ZWxsb3cnLCBbMSwgM10pXQorICAgID4+PiBzID0gWygneWVsbG93JywgMSksICgnYmx1ZScsIDIpLCAoJ3llbGxvdycsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKV0KKyAgICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkW2tdLmFwcGVuZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCiAKIFdoZW4gZWFjaCBrZXkgaXMgZW5jb3VudGVyZWQgZm9yIHRoZSBmaXJzdCB0aW1lLCBpdCBpcyBub3QgYWxyZWFkeSBpbiB0aGUKIG1hcHBpbmc7IHNvIGFuIGVudHJ5IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB1c2luZyB0aGUgOmF0dHI6YGRlZmF1bHRfZmFjdG9yeWAKQEAgLTUwNiwyNCArNjc3LDI0IEBACiA6bWV0aDpgbGlzdC5hcHBlbmRgIG9wZXJhdGlvbiBhZGRzIGFub3RoZXIgdmFsdWUgdG8gdGhlIGxpc3QuIFRoaXMgdGVjaG5pcXVlIGlzCiBzaW1wbGVyIGFuZCBmYXN0ZXIgdGhhbiBhbiBlcXVpdmFsZW50IHRlY2huaXF1ZSB1c2luZyA6bWV0aDpgZGljdC5zZXRkZWZhdWx0YDoKIAotICAgPj4+IGQgPSB7fQotICAgPj4+IGZvciBrLCB2IGluIHM6Ci0gICAuLi4gICAgIGQuc2V0ZGVmYXVsdChrLCBbXSkuYXBwZW5kKHYpCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2JsdWUnLCBbMiwgNF0pLCAoJ3JlZCcsIFsxXSksICgneWVsbG93JywgWzEsIDNdKV0KKyAgICA+Pj4gZCA9IHt9CisgICAgPj4+IGZvciBrLCB2IGluIHM6CisgICAgLi4uICAgICBkLnNldGRlZmF1bHQoaywgW10pLmFwcGVuZCh2KQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdibHVlJywgWzIsIDRdKSwgKCdyZWQnLCBbMV0pLCAoJ3llbGxvdycsIFsxLCAzXSldCiAKIFNldHRpbmcgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHRvIDpjbGFzczpgaW50YCBtYWtlcyB0aGUKIDpjbGFzczpgZGVmYXVsdGRpY3RgIHVzZWZ1bCBmb3IgY291bnRpbmcgKGxpa2UgYSBiYWcgb3IgbXVsdGlzZXQgaW4gb3RoZXIKIGxhbmd1YWdlcyk6CiAKLSAgID4+PiBzID0gJ21pc3Npc3NpcHBpJwotICAgPj4+IGQgPSBkZWZhdWx0ZGljdChpbnQpCi0gICA+Pj4gZm9yIGsgaW4gczoKLSAgIC4uLiAgICAgZFtrXSArPSAxCi0gICAuLi4KLSAgID4+PiBsaXN0KGQuaXRlbXMoKSkKLSAgIFsoJ2knLCA0KSwgKCdwJywgMiksICgncycsIDQpLCAoJ20nLCAxKV0KKyAgICA+Pj4gcyA9ICdtaXNzaXNzaXBwaScKKyAgICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGludCkKKyAgICA+Pj4gZm9yIGsgaW4gczoKKyAgICAuLi4gICAgIGRba10gKz0gMQorICAgIC4uLgorICAgID4+PiBsaXN0KGQuaXRlbXMoKSkKKyAgICBbKCdpJywgNCksICgncCcsIDIpLCAoJ3MnLCA0KSwgKCdtJywgMSldCiAKIFdoZW4gYSBsZXR0ZXIgaXMgZmlyc3QgZW5jb3VudGVyZWQsIGl0IGlzIG1pc3NpbmcgZnJvbSB0aGUgbWFwcGluZywgc28gdGhlCiA6YXR0cjpgZGVmYXVsdF9mYWN0b3J5YCBmdW5jdGlvbiBjYWxscyA6ZnVuYzpgaW50YCB0byBzdXBwbHkgYSBkZWZhdWx0IGNvdW50IG9mCkBAIC01MzQsMjMgKzcwNSwyMyBAQAogaXMgdG8gdXNlIGEgbGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGNhbiBzdXBwbHkgYW55IGNvbnN0YW50IHZhbHVlIChub3QganVzdAogemVybyk6CiAKLSAgID4+PiBkZWYgY29uc3RhbnRfZmFjdG9yeSh2YWx1ZSk6Ci0gICAuLi4gICAgIHJldHVybiBsYW1iZGE6IHZhbHVlCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KGNvbnN0YW50X2ZhY3RvcnkoJzxtaXNzaW5nPicpKQotICAgPj4+IGQudXBkYXRlKG5hbWU9J0pvaG4nLCBhY3Rpb249J3JhbicpCi0gICA+Pj4gJyUobmFtZSlzICUoYWN0aW9uKXMgdG8gJShvYmplY3QpcycgJSBkCi0gICAnSm9obiByYW4gdG8gPG1pc3Npbmc+JworICAgID4+PiBkZWYgY29uc3RhbnRfZmFjdG9yeSh2YWx1ZSk6CisgICAgLi4uICAgICByZXR1cm4gbGFtYmRhOiB2YWx1ZQorICAgID4+PiBkID0gZGVmYXVsdGRpY3QoY29uc3RhbnRfZmFjdG9yeSgnPG1pc3Npbmc+JykpCisgICAgPj4+IGQudXBkYXRlKG5hbWU9J0pvaG4nLCBhY3Rpb249J3JhbicpCisgICAgPj4+ICclKG5hbWUpcyAlKGFjdGlvbilzIHRvICUob2JqZWN0KXMnICUgZAorICAgICdKb2huIHJhbiB0byA8bWlzc2luZz4nCiAKIFNldHRpbmcgdGhlIDphdHRyOmBkZWZhdWx0X2ZhY3RvcnlgIHRvIDpjbGFzczpgc2V0YCBtYWtlcyB0aGUKIDpjbGFzczpgZGVmYXVsdGRpY3RgIHVzZWZ1bCBmb3IgYnVpbGRpbmcgYSBkaWN0aW9uYXJ5IG9mIHNldHM6CiAKLSAgID4+PiBzID0gWygncmVkJywgMSksICgnYmx1ZScsIDIpLCAoJ3JlZCcsIDMpLCAoJ2JsdWUnLCA0KSwgKCdyZWQnLCAxKSwgKCdibHVlJywgNCldCi0gICA+Pj4gZCA9IGRlZmF1bHRkaWN0KHNldCkKLSAgID4+PiBmb3IgaywgdiBpbiBzOgotICAgLi4uICAgICBkW2tdLmFkZCh2KQotICAgLi4uCi0gICA+Pj4gbGlzdChkLml0ZW1zKCkpCi0gICBbKCdibHVlJywgc2V0KFsyLCA0XSkpLCAoJ3JlZCcsIHNldChbMSwgM10pKV0KKyAgICA+Pj4gcyA9IFsoJ3JlZCcsIDEpLCAoJ2JsdWUnLCAyKSwgKCdyZWQnLCAzKSwgKCdibHVlJywgNCksICgncmVkJywgMSksICgnYmx1ZScsIDQpXQorICAgID4+PiBkID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgID4+PiBmb3IgaywgdiBpbiBzOgorICAgIC4uLiAgICAgZFtrXS5hZGQodikKKyAgICAuLi4KKyAgICA+Pj4gbGlzdChkLml0ZW1zKCkpCisgICAgWygnYmx1ZScsIHsyLCA0fSksICgncmVkJywgezEsIDN9KV0KIAogCiA6ZnVuYzpgbmFtZWR0dXBsZWAgRmFjdG9yeSBGdW5jdGlvbiBmb3IgVHVwbGVzIHdpdGggTmFtZWQgRmllbGRzCkBAIC01NjIsMTY4ICs3MzMsMTMxIEBACiAKIC4uIGZ1bmN0aW9uOjogbmFtZWR0dXBsZSh0eXBlbmFtZSwgZmllbGRfbmFtZXMsIHZlcmJvc2U9RmFsc2UsIHJlbmFtZT1GYWxzZSkKIAotICAgUmV0dXJucyBhIG5ldyB0dXBsZSBzdWJjbGFzcyBuYW1lZCAqdHlwZW5hbWUqLiAgVGhlIG5ldyBzdWJjbGFzcyBpcyB1c2VkIHRvCi0gICBjcmVhdGUgdHVwbGUtbGlrZSBvYmplY3RzIHRoYXQgaGF2ZSBmaWVsZHMgYWNjZXNzaWJsZSBieSBhdHRyaWJ1dGUgbG9va3VwIGFzCi0gICB3ZWxsIGFzIGJlaW5nIGluZGV4YWJsZSBhbmQgaXRlcmFibGUuICBJbnN0YW5jZXMgb2YgdGhlIHN1YmNsYXNzIGFsc28gaGF2ZSBhCi0gICBoZWxwZnVsIGRvY3N0cmluZyAod2l0aCB0eXBlbmFtZSBhbmQgZmllbGRfbmFtZXMpIGFuZCBhIGhlbHBmdWwgOm1ldGg6YF9fcmVwcl9fYAotICAgbWV0aG9kIHdoaWNoIGxpc3RzIHRoZSB0dXBsZSBjb250ZW50cyBpbiBhIGBgbmFtZT12YWx1ZWBgIGZvcm1hdC4KKyAgICBSZXR1cm5zIGEgbmV3IHR1cGxlIHN1YmNsYXNzIG5hbWVkICp0eXBlbmFtZSouICBUaGUgbmV3IHN1YmNsYXNzIGlzIHVzZWQgdG8KKyAgICBjcmVhdGUgdHVwbGUtbGlrZSBvYmplY3RzIHRoYXQgaGF2ZSBmaWVsZHMgYWNjZXNzaWJsZSBieSBhdHRyaWJ1dGUgbG9va3VwIGFzCisgICAgd2VsbCBhcyBiZWluZyBpbmRleGFibGUgYW5kIGl0ZXJhYmxlLiAgSW5zdGFuY2VzIG9mIHRoZSBzdWJjbGFzcyBhbHNvIGhhdmUgYQorICAgIGhlbHBmdWwgZG9jc3RyaW5nICh3aXRoIHR5cGVuYW1lIGFuZCBmaWVsZF9uYW1lcykgYW5kIGEgaGVscGZ1bCA6bWV0aDpgX19yZXByX19gCisgICAgbWV0aG9kIHdoaWNoIGxpc3RzIHRoZSB0dXBsZSBjb250ZW50cyBpbiBhIGBgbmFtZT12YWx1ZWBgIGZvcm1hdC4KIAotICAgVGhlICpmaWVsZF9uYW1lcyogYXJlIGEgc2luZ2xlIHN0cmluZyB3aXRoIGVhY2ggZmllbGRuYW1lIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlCi0gICBhbmQvb3IgY29tbWFzLCBmb3IgZXhhbXBsZSBgYCd4IHknYGAgb3IgYGAneCwgeSdgYC4gIEFsdGVybmF0aXZlbHksICpmaWVsZF9uYW1lcyoKLSAgIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3Mgc3VjaCBhcyBgYFsneCcsICd5J11gYC4KKyAgICBUaGUgKmZpZWxkX25hbWVzKiBhcmUgYSBzaW5nbGUgc3RyaW5nIHdpdGggZWFjaCBmaWVsZG5hbWUgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2UKKyAgICBhbmQvb3IgY29tbWFzLCBmb3IgZXhhbXBsZSBgYCd4IHknYGAgb3IgYGAneCwgeSdgYC4gIEFsdGVybmF0aXZlbHksICpmaWVsZF9uYW1lcyoKKyAgICBjYW4gYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHN1Y2ggYXMgYGBbJ3gnLCAneSddYGAuCiAKLSAgIEFueSB2YWxpZCBQeXRob24gaWRlbnRpZmllciBtYXkgYmUgdXNlZCBmb3IgYSBmaWVsZG5hbWUgZXhjZXB0IGZvciBuYW1lcwotICAgc3RhcnRpbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVmFsaWQgaWRlbnRpZmllcnMgY29uc2lzdCBvZiBsZXR0ZXJzLCBkaWdpdHMsCi0gICBhbmQgdW5kZXJzY29yZXMgYnV0IGRvIG5vdCBzdGFydCB3aXRoIGEgZGlnaXQgb3IgdW5kZXJzY29yZSBhbmQgY2Fubm90IGJlCi0gICBhIDptb2Q6YGtleXdvcmRgIHN1Y2ggYXMgKmNsYXNzKiwgKmZvciosICpyZXR1cm4qLCAqZ2xvYmFsKiwgKnBhc3MqLAotICAgb3IgKnJhaXNlKi4KKyAgICBBbnkgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXIgbWF5IGJlIHVzZWQgZm9yIGEgZmllbGRuYW1lIGV4Y2VwdCBmb3IgbmFtZXMKKyAgICBzdGFydGluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBWYWxpZCBpZGVudGlmaWVycyBjb25zaXN0IG9mIGxldHRlcnMsIGRpZ2l0cywKKyAgICBhbmQgdW5kZXJzY29yZXMgYnV0IGRvIG5vdCBzdGFydCB3aXRoIGEgZGlnaXQgb3IgdW5kZXJzY29yZSBhbmQgY2Fubm90IGJlCisgICAgYSA6bW9kOmBrZXl3b3JkYCBzdWNoIGFzICpjbGFzcyosICpmb3IqLCAqcmV0dXJuKiwgKmdsb2JhbCosICpwYXNzKiwKKyAgICBvciAqcmFpc2UqLgogCi0gICBJZiAqcmVuYW1lKiBpcyB0cnVlLCBpbnZhbGlkIGZpZWxkbmFtZXMgYXJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQKLSAgIHdpdGggcG9zaXRpb25hbCBuYW1lcy4gIEZvciBleGFtcGxlLCBgYFsnYWJjJywgJ2RlZicsICdnaGknLCAnYWJjJ11gYCBpcwotICAgY29udmVydGVkIHRvIGBgWydhYmMnLCAnXzEnLCAnZ2hpJywgJ18zJ11gYCwgZWxpbWluYXRpbmcgdGhlIGtleXdvcmQKLSAgIGBgZGVmYGAgYW5kIHRoZSBkdXBsaWNhdGUgZmllbGRuYW1lIGBgYWJjYGAuCisgICAgSWYgKnJlbmFtZSogaXMgdHJ1ZSwgaW52YWxpZCBmaWVsZG5hbWVzIGFyZSBhdXRvbWF0aWNhbGx5IHJlcGxhY2VkCisgICAgd2l0aCBwb3NpdGlvbmFsIG5hbWVzLiAgRm9yIGV4YW1wbGUsIGBgWydhYmMnLCAnZGVmJywgJ2doaScsICdhYmMnXWBgIGlzCisgICAgY29udmVydGVkIHRvIGBgWydhYmMnLCAnXzEnLCAnZ2hpJywgJ18zJ11gYCwgZWxpbWluYXRpbmcgdGhlIGtleXdvcmQKKyAgICBgYGRlZmBgIGFuZCB0aGUgZHVwbGljYXRlIGZpZWxkbmFtZSBgYGFiY2BgLgogCi0gICBJZiAqdmVyYm9zZSogaXMgdHJ1ZSwgdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcHJpbnRlZCBqdXN0IGJlZm9yZSBiZWluZyBidWlsdC4KKyAgICBJZiAqdmVyYm9zZSogaXMgdHJ1ZSwgdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcHJpbnRlZCBhZnRlciBpdCBpcworICAgIGJ1aWx0LiAgVGhpcyBvcHRpb24gaXMgb3V0ZGF0ZWQ7IGluc3RlYWQsIGl0IGlzIHNpbXBsZXIgdG8gcHJpbnQgdGhlCisgICAgOmF0dHI6YF9zb3VyY2VgIGF0dHJpYnV0ZS4KIAotICAgTmFtZWQgdHVwbGUgaW5zdGFuY2VzIGRvIG5vdCBoYXZlIHBlci1pbnN0YW5jZSBkaWN0aW9uYXJpZXMsIHNvIHRoZXkgYXJlCi0gICBsaWdodHdlaWdodCBhbmQgcmVxdWlyZSBubyBtb3JlIG1lbW9yeSB0aGFuIHJlZ3VsYXIgdHVwbGVzLgorICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQorICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCi0gICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQorICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAogCiAuLiBkb2N0ZXN0OjoKLSAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICA6b3B0aW9uczogK05PUk1BTElaRV9XSElURVNQQUNFCiAKLSAgID4+PiAjIEJhc2ljIGV4YW1wbGUKLSAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKLSAgID4+PiBwID0gUG9pbnQoeD0xMCwgeT0xMSkKLQotICAgPj4+ICMgRXhhbXBsZSB1c2luZyB0aGUgdmVyYm9zZSBvcHRpb24gdG8gcHJpbnQgdGhlIGNsYXNzIGRlZmluaXRpb24KLSAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScsIHZlcmJvc2U9VHJ1ZSkKLSAgIGNsYXNzIFBvaW50KHR1cGxlKToKLSAgICAgICAgICAgJ1BvaW50KHgsIHkpJwotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX19zbG90c19fID0gKCkKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIF9maWVsZHMgPSAoJ3gnLCAneScpCi0gICA8QkxBTktMSU5FPgotICAgICAgICAgICBkZWYgX19uZXdfXyhfY2xzLCB4LCB5KToKLSAgICAgICAgICAgICAgICdDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgUG9pbnQoeCwgeSknCi0gICAgICAgICAgICAgICByZXR1cm4gX3R1cGxlLl9fbmV3X18oX2NscywgKHgsIHkpKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgQGNsYXNzbWV0aG9kCi0gICAgICAgICAgIGRlZiBfbWFrZShjbHMsIGl0ZXJhYmxlLCBuZXc9dHVwbGUuX19uZXdfXywgbGVuPWxlbik6Ci0gICAgICAgICAgICAgICAnTWFrZSBhIG5ldyBQb2ludCBvYmplY3QgZnJvbSBhIHNlcXVlbmNlIG9yIGl0ZXJhYmxlJwotICAgICAgICAgICAgICAgcmVzdWx0ID0gbmV3KGNscywgaXRlcmFibGUpCi0gICAgICAgICAgICAgICBpZiBsZW4ocmVzdWx0KSAhPSAyOgotICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignRXhwZWN0ZWQgMiBhcmd1bWVudHMsIGdvdCAlZCcgJSBsZW4ocmVzdWx0KSkKLSAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gYSBuaWNlbHkgZm9ybWF0dGVkIHJlcHJlc2VudGF0aW9uIHN0cmluZycKLSAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXyArICcoeD0lciwgeT0lciknICUgc2VsZgotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9hc2RpY3Qoc2VsZik6Ci0gICAgICAgICAgICAgICAnUmV0dXJuIGEgbmV3IE9yZGVyZWREaWN0IHdoaWNoIG1hcHMgZmllbGQgbmFtZXMgdG8gdGhlaXIgdmFsdWVzJwotICAgICAgICAgICAgICAgcmV0dXJuIE9yZGVyZWREaWN0KHppcChzZWxmLl9maWVsZHMsIHNlbGYpKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgX19kaWN0X18gPSBwcm9wZXJ0eShfYXNkaWN0KQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgZGVmIF9yZXBsYWNlKF9zZWxmLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgJ1JldHVybiBhIG5ldyBQb2ludCBvYmplY3QgcmVwbGFjaW5nIHNwZWNpZmllZCBmaWVsZHMgd2l0aCBuZXcgdmFsdWVzJwotICAgICAgICAgICAgICAgcmVzdWx0ID0gX3NlbGYuX21ha2UobWFwKGt3ZHMucG9wLCAoJ3gnLCAneScpLCBfc2VsZikpCi0gICAgICAgICAgICAgICBpZiBrd2RzOgotICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0dvdCB1bmV4cGVjdGVkIGZpZWxkIG5hbWVzOiAlcicgJSBsaXN0KGt3ZHMua2V5cygpKSkKLSAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgIDxCTEFOS0xJTkU+Ci0gICAgICAgICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKLSAgICAgICAgICAgICAgICdSZXR1cm4gc2VsZiBhcyBhIHBsYWluIHR1cGxlLiAgIFVzZWQgYnkgY29weSBhbmQgcGlja2xlLicKLSAgICAgICAgICAgICAgIHJldHVybiB0dXBsZShzZWxmKQotICAgPEJMQU5LTElORT4KLSAgICAgICAgICAgeCA9IF9wcm9wZXJ0eShfaXRlbWdldHRlcigwKSwgZG9jPSdBbGlhcyBmb3IgZmllbGQgbnVtYmVyIDAnKQotICAgICAgICAgICB5ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKDEpLCBkb2M9J0FsaWFzIGZvciBmaWVsZCBudW1iZXIgMScpCi0KLSAgID4+PiBwID0gUG9pbnQoMTEsIHk9MjIpICAgICAjIGluc3RhbnRpYXRlIHdpdGggcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cwotICAgPj4+IHBbMF0gKyBwWzFdICAgICAgICAgICAgICMgaW5kZXhhYmxlIGxpa2UgdGhlIHBsYWluIHR1cGxlICgxMSwgMjIpCi0gICAzMwotICAgPj4+IHgsIHkgPSBwICAgICAgICAgICAgICAgICMgdW5wYWNrIGxpa2UgYSByZWd1bGFyIHR1cGxlCi0gICA+Pj4geCwgeQotICAgKDExLCAyMikKLSAgID4+PiBwLnggKyBwLnkgICAgICAgICAgICAgICAjIGZpZWxkcyBhbHNvIGFjY2Vzc2libGUgYnkgbmFtZQotICAgMzMKLSAgID4+PiBwICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWRhYmxlIF9fcmVwcl9fIHdpdGggYSBuYW1lPXZhbHVlIHN0eWxlCi0gICBQb2ludCh4PTExLCB5PTIyKQorICAgID4+PiAjIEJhc2ljIGV4YW1wbGUKKyAgICA+Pj4gUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pCisgICAgPj4+IHAgPSBQb2ludCgxMSwgeT0yMikgICAgICMgaW5zdGFudGlhdGUgd2l0aCBwb3NpdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCisgICAgPj4+IHBbMF0gKyBwWzFdICAgICAgICAgICAgICMgaW5kZXhhYmxlIGxpa2UgdGhlIHBsYWluIHR1cGxlICgxMSwgMjIpCisgICAgMzMKKyAgICA+Pj4geCwgeSA9IHAgICAgICAgICAgICAgICAgIyB1bnBhY2sgbGlrZSBhIHJlZ3VsYXIgdHVwbGUKKyAgICA+Pj4geCwgeQorICAgICgxMSwgMjIpCisgICAgPj4+IHAueCArIHAueSAgICAgICAgICAgICAgICMgZmllbGRzIGFsc28gYWNjZXNzaWJsZSBieSBuYW1lCisgICAgMzMKKyAgICA+Pj4gcCAgICAgICAgICAgICAgICAgICAgICAgIyByZWFkYWJsZSBfX3JlcHJfXyB3aXRoIGEgbmFtZT12YWx1ZSBzdHlsZQorICAgIFBvaW50KHg9MTEsIHk9MjIpCiAKIE5hbWVkIHR1cGxlcyBhcmUgZXNwZWNpYWxseSB1c2VmdWwgZm9yIGFzc2lnbmluZyBmaWVsZCBuYW1lcyB0byByZXN1bHQgdHVwbGVzIHJldHVybmVkCiBieSB0aGUgOm1vZDpgY3N2YCBvciA6bW9kOmBzcWxpdGUzYCBtb2R1bGVzOjoKIAotICAgRW1wbG95ZWVSZWNvcmQgPSBuYW1lZHR1cGxlKCdFbXBsb3llZVJlY29yZCcsICduYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZScpCisgICAgRW1wbG95ZWVSZWNvcmQgPSBuYW1lZHR1cGxlKCdFbXBsb3llZVJlY29yZCcsICduYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZScpCiAKLSAgIGltcG9ydCBjc3YKLSAgIGZvciBlbXAgaW4gbWFwKEVtcGxveWVlUmVjb3JkLl9tYWtlLCBjc3YucmVhZGVyKG9wZW4oImVtcGxveWVlcy5jc3YiLCAicmIiKSkpOgotICAgICAgIHByaW50KGVtcC5uYW1lLCBlbXAudGl0bGUpCisgICAgaW1wb3J0IGNzdgorICAgIGZvciBlbXAgaW4gbWFwKEVtcGxveWVlUmVjb3JkLl9tYWtlLCBjc3YucmVhZGVyKG9wZW4oImVtcGxveWVlcy5jc3YiLCAicmIiKSkpOgorICAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQogCi0gICBpbXBvcnQgc3FsaXRlMwotICAgY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgnL2NvbXBhbnlkYXRhJykKLSAgIGN1cnNvciA9IGNvbm4uY3Vyc29yKCkKLSAgIGN1cnNvci5leGVjdXRlKCdTRUxFQ1QgbmFtZSwgYWdlLCB0aXRsZSwgZGVwYXJ0bWVudCwgcGF5Z3JhZGUgRlJPTSBlbXBsb3llZXMnKQotICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGN1cnNvci5mZXRjaGFsbCgpKToKLSAgICAgICBwcmludChlbXAubmFtZSwgZW1wLnRpdGxlKQorICAgIGltcG9ydCBzcWxpdGUzCisgICAgY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgnL2NvbXBhbnlkYXRhJykKKyAgICBjdXJzb3IgPSBjb25uLmN1cnNvcigpCisgICAgY3Vyc29yLmV4ZWN1dGUoJ1NFTEVDVCBuYW1lLCBhZ2UsIHRpdGxlLCBkZXBhcnRtZW50LCBwYXlncmFkZSBGUk9NIGVtcGxveWVlcycpCisgICAgZm9yIGVtcCBpbiBtYXAoRW1wbG95ZWVSZWNvcmQuX21ha2UsIGN1cnNvci5mZXRjaGFsbCgpKToKKyAgICAgICAgcHJpbnQoZW1wLm5hbWUsIGVtcC50aXRsZSkKIAogSW4gYWRkaXRpb24gdG8gdGhlIG1ldGhvZHMgaW5oZXJpdGVkIGZyb20gdHVwbGVzLCBuYW1lZCB0dXBsZXMgc3VwcG9ydAotdGhyZWUgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBvbmUgYXR0cmlidXRlLiAgVG8gcHJldmVudCBjb25mbGljdHMgd2l0aAordGhyZWUgYWRkaXRpb25hbCBtZXRob2RzIGFuZCB0d28gYXR0cmlidXRlcy4gIFRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGgKIGZpZWxkIG5hbWVzLCB0aGUgbWV0aG9kIGFuZCBhdHRyaWJ1dGUgbmFtZXMgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlLgogCiAuLiBjbGFzc21ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9tYWtlKGl0ZXJhYmxlKQogCi0gICBDbGFzcyBtZXRob2QgdGhhdCBtYWtlcyBhIG5ldyBpbnN0YW5jZSBmcm9tIGFuIGV4aXN0aW5nIHNlcXVlbmNlIG9yIGl0ZXJhYmxlLgorICAgIENsYXNzIG1ldGhvZCB0aGF0IG1ha2VzIGEgbmV3IGluc3RhbmNlIGZyb20gYW4gZXhpc3Rpbmcgc2VxdWVuY2Ugb3IgaXRlcmFibGUuCiAKLS4uIGRvY3Rlc3Q6OgorICAgIC4uIGRvY3Rlc3Q6OgogCi0gICAgICA+Pj4gdCA9IFsxMSwgMjJdCi0gICAgICA+Pj4gUG9pbnQuX21ha2UodCkKLSAgICAgIFBvaW50KHg9MTEsIHk9MjIpCisgICAgICAgID4+PiB0ID0gWzExLCAyMl0KKyAgICAgICAgPj4+IFBvaW50Ll9tYWtlKHQpCisgICAgICAgIFBvaW50KHg9MTEsIHk9MjIpCiAKIC4uIG1ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9hc2RpY3QoKQogCi0gICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICB2YWx1ZXM6OgorICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YE9yZGVyZWREaWN0YCB3aGljaCBtYXBzIGZpZWxkIG5hbWVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICB2YWx1ZXMuICBOb3RlLCB0aGlzIG1ldGhvZCBpcyBubyBsb25nZXIgbmVlZGVkIG5vdyB0aGF0IHRoZSBzYW1lIGVmZmVjdCBjYW4KKyAgICBiZSBhY2hpZXZlZCBieSB1c2luZyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHZhcnNgIGZ1bmN0aW9uOjoKIAotICAgICAgPj4+IHAuX2FzZGljdCgpCi0gICAgICBPcmRlcmVkRGljdChbKCd4JywgMTEpLCAoJ3knLCAyMildKQorICAgICAgICA+Pj4gdmFycyhwKQorICAgICAgICBPcmRlcmVkRGljdChbKCd4JywgMTEpLCAoJ3knLCAyMildKQogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgUmV0dXJucyBhbiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBpbnN0ZWFkIG9mIGEgcmVndWxhciA6Y2xhc3M6YGRpY3RgLgorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCisgICAgICAgIFJldHVybnMgYW4gOmNsYXNzOmBPcmRlcmVkRGljdGAgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgOmNsYXNzOmBkaWN0YC4KIAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX3JlcGxhY2Uoa3dhcmdzKQogCi0gICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG5hbWVkIHR1cGxlIHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3Ci0gICB2YWx1ZXM6CisgICAgUmV0dXJuIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBuYW1lZCB0dXBsZSByZXBsYWNpbmcgc3BlY2lmaWVkIGZpZWxkcyB3aXRoIG5ldworICAgIHZhbHVlczo6CiAKLTo6CisgICAgICAgID4+PiBwID0gUG9pbnQoeD0xMSwgeT0yMikKKyAgICAgICAgPj4+IHAuX3JlcGxhY2UoeD0zMykKKyAgICAgICAgUG9pbnQoeD0zMywgeT0yMikKIAotICAgICAgPj4+IHAgPSBQb2ludCh4PTExLCB5PTIyKQotICAgICAgPj4+IHAuX3JlcGxhY2UoeD0zMykKLSAgICAgIFBvaW50KHg9MzMsIHk9MjIpCisgICAgICAgID4+PiBmb3IgcGFydG51bSwgcmVjb3JkIGluIGludmVudG9yeS5pdGVtcygpOgorICAgICAgICAuLi4gICAgIGludmVudG9yeVtwYXJ0bnVtXSA9IHJlY29yZC5fcmVwbGFjZShwcmljZT1uZXdwcmljZXNbcGFydG51bV0sIHRpbWVzdGFtcD10aW1lLm5vdygpKQogCi0gICAgICA+Pj4gZm9yIHBhcnRudW0sIHJlY29yZCBpbiBpbnZlbnRvcnkuaXRlbXMoKToKLSAgICAgIC4uLiAgICAgaW52ZW50b3J5W3BhcnRudW1dID0gcmVjb3JkLl9yZXBsYWNlKHByaWNlPW5ld3ByaWNlc1twYXJ0bnVtXSwgdGltZXN0YW1wPXRpbWUubm93KCkpCisuLiBhdHRyaWJ1dGU6OiBzb21lbmFtZWR0dXBsZS5fc291cmNlCisKKyAgICBBIHN0cmluZyB3aXRoIHRoZSBwdXJlIFB5dGhvbiBzb3VyY2UgY29kZSB1c2VkIHRvIGNyZWF0ZSB0aGUgbmFtZWQKKyAgICB0dXBsZSBjbGFzcy4gIFRoZSBzb3VyY2UgbWFrZXMgdGhlIG5hbWVkIHR1cGxlIHNlbGYtZG9jdW1lbnRpbmcuCisgICAgSXQgY2FuIGJlIHByaW50ZWQsIGV4ZWN1dGVkIHVzaW5nIDpmdW5jOmBleGVjYCwgb3Igc2F2ZWQgdG8gYSBmaWxlCisgICAgYW5kIGltcG9ydGVkLgorCisgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGF0dHJpYnV0ZTo6IHNvbWVuYW1lZHR1cGxlLl9maWVsZHMKIAotICAgVHVwbGUgb2Ygc3RyaW5ncyBsaXN0aW5nIHRoZSBmaWVsZCBuYW1lcy4gIFVzZWZ1bCBmb3IgaW50cm9zcGVjdGlvbgotICAgYW5kIGZvciBjcmVhdGluZyBuZXcgbmFtZWQgdHVwbGUgdHlwZXMgZnJvbSBleGlzdGluZyBuYW1lZCB0dXBsZXMuCisgICAgVHVwbGUgb2Ygc3RyaW5ncyBsaXN0aW5nIHRoZSBmaWVsZCBuYW1lcy4gIFVzZWZ1bCBmb3IgaW50cm9zcGVjdGlvbgorICAgIGFuZCBmb3IgY3JlYXRpbmcgbmV3IG5hbWVkIHR1cGxlIHR5cGVzIGZyb20gZXhpc3RpbmcgbmFtZWQgdHVwbGVzLgogCi0uLiBkb2N0ZXN0OjoKKyAgICAuLiBkb2N0ZXN0OjoKIAotICAgICAgPj4+IHAuX2ZpZWxkcyAgICAgICAgICAgICMgdmlldyB0aGUgZmllbGQgbmFtZXMKLSAgICAgICgneCcsICd5JykKKyAgICAgICAgPj4+IHAuX2ZpZWxkcyAgICAgICAgICAgICMgdmlldyB0aGUgZmllbGQgbmFtZXMKKyAgICAgICAgKCd4JywgJ3knKQogCi0gICAgICA+Pj4gQ29sb3IgPSBuYW1lZHR1cGxlKCdDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCi0gICAgICA+Pj4gUGl4ZWwgPSBuYW1lZHR1cGxlKCdQaXhlbCcsIFBvaW50Ll9maWVsZHMgKyBDb2xvci5fZmllbGRzKQotICAgICAgPj4+IFBpeGVsKDExLCAyMiwgMTI4LCAyNTUsIDApCi0gICAgICBQaXhlbCh4PTExLCB5PTIyLCByZWQ9MTI4LCBncmVlbj0yNTUsIGJsdWU9MCkKKyAgICAgICAgPj4+IENvbG9yID0gbmFtZWR0dXBsZSgnQ29sb3InLCAncmVkIGdyZWVuIGJsdWUnKQorICAgICAgICA+Pj4gUGl4ZWwgPSBuYW1lZHR1cGxlKCdQaXhlbCcsIFBvaW50Ll9maWVsZHMgKyBDb2xvci5fZmllbGRzKQorICAgICAgICA+Pj4gUGl4ZWwoMTEsIDIyLCAxMjgsIDI1NSwgMCkKKyAgICAgICAgUGl4ZWwoeD0xMSwgeT0yMiwgcmVkPTEyOCwgZ3JlZW49MjU1LCBibHVlPTApCiAKIFRvIHJldHJpZXZlIGEgZmllbGQgd2hvc2UgbmFtZSBpcyBzdG9yZWQgaW4gYSBzdHJpbmcsIHVzZSB0aGUgOmZ1bmM6YGdldGF0dHJgCiBmdW5jdGlvbjoKQEAgLTczNCwzMSArODY4LDMwIEBACiBUbyBjb252ZXJ0IGEgZGljdGlvbmFyeSB0byBhIG5hbWVkIHR1cGxlLCB1c2UgdGhlIGRvdWJsZS1zdGFyLW9wZXJhdG9yCiAoYXMgZGVzY3JpYmVkIGluIDpyZWY6YHR1dC11bnBhY2tpbmctYXJndW1lbnRzYCk6CiAKLSAgID4+PiBkID0geyd4JzogMTEsICd5JzogMjJ9Ci0gICA+Pj4gUG9pbnQoKipkKQotICAgUG9pbnQoeD0xMSwgeT0yMikKKyAgICA+Pj4gZCA9IHsneCc6IDExLCAneSc6IDIyfQorICAgID4+PiBQb2ludCgqKmQpCisgICAgUG9pbnQoeD0xMSwgeT0yMikKIAogU2luY2UgYSBuYW1lZCB0dXBsZSBpcyBhIHJlZ3VsYXIgUHl0aG9uIGNsYXNzLCBpdCBpcyBlYXN5IHRvIGFkZCBvciBjaGFuZ2UKIGZ1bmN0aW9uYWxpdHkgd2l0aCBhIHN1YmNsYXNzLiAgSGVyZSBpcyBob3cgdG8gYWRkIGEgY2FsY3VsYXRlZCBmaWVsZCBhbmQKIGEgZml4ZWQtd2lkdGggcHJpbnQgZm9ybWF0OgogCiAgICAgPj4+IGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgpCi0gICAgICAgICAgICBAcHJvcGVydHkKLSAgICAgICAgICAgIGRlZiBoeXBvdChzZWxmKToKLSAgICAgICAgICAgICAgICByZXR1cm4gKHNlbGYueCAqKiAyICsgc2VsZi55ICoqIDIpICoqIDAuNQotICAgICAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQorICAgICAgICBfX3Nsb3RzX18gPSAoKQorICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIGh5cG90KHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKKyAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCiAKICAgICA+Pj4gZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcpOgotICAgICAgICAgICAgcHJpbnQocCkKKyAgICAgICAgcHJpbnQocCkKICAgICBQb2ludDogeD0gMy4wMDAgIHk9IDQuMDAwICBoeXBvdD0gNS4wMDAKICAgICBQb2ludDogeD0xNC4wMDAgIHk9IDAuNzE0ICBoeXBvdD0xNC4wMTgKIAogVGhlIHN1YmNsYXNzIHNob3duIGFib3ZlIHNldHMgYGBfX3Nsb3RzX19gYCB0byBhbiBlbXB0eSB0dXBsZS4gIFRoaXMgaGVscHMKIGtlZXAgbWVtb3J5IHJlcXVpcmVtZW50cyBsb3cgYnkgcHJldmVudGluZyB0aGUgY3JlYXRpb24gb2YgaW5zdGFuY2UgZGljdGlvbmFyaWVzLgogCi0KIFN1YmNsYXNzaW5nIGlzIG5vdCB1c2VmdWwgZm9yIGFkZGluZyBuZXcsIHN0b3JlZCBmaWVsZHMuICBJbnN0ZWFkLCBzaW1wbHkKIGNyZWF0ZSBhIG5ldyBuYW1lZCB0dXBsZSB0eXBlIGZyb20gdGhlIDphdHRyOmBfZmllbGRzYCBhdHRyaWJ1dGU6CiAKQEAgLTc3MCw2ICs5MDMsNyBAQAogICAgID4+PiBBY2NvdW50ID0gbmFtZWR0dXBsZSgnQWNjb3VudCcsICdvd25lciBiYWxhbmNlIHRyYW5zYWN0aW9uX2NvdW50JykKICAgICA+Pj4gZGVmYXVsdF9hY2NvdW50ID0gQWNjb3VudCgnPG93bmVyIG5hbWU+JywgMC4wLCAwKQogICAgID4+PiBqb2huc19hY2NvdW50ID0gZGVmYXVsdF9hY2NvdW50Ll9yZXBsYWNlKG93bmVyPSdKb2huJykKKyAgICA+Pj4gamFuZXNfYWNjb3VudCA9IGRlZmF1bHRfYWNjb3VudC5fcmVwbGFjZShvd25lcj0nSmFuZScpCiAKIEVudW1lcmF0ZWQgY29uc3RhbnRzIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIG5hbWVkIHR1cGxlcywgYnV0IGl0IGlzIHNpbXBsZXIKIGFuZCBtb3JlIGVmZmljaWVudCB0byB1c2UgYSBzaW1wbGUgY2xhc3MgZGVjbGFyYXRpb246CkBAIC03NzgsMTkgKzkxMiwxOSBAQAogICAgID4+PiBTdGF0dXMub3BlbiwgU3RhdHVzLnBlbmRpbmcsIFN0YXR1cy5jbG9zZWQKICAgICAoMCwgMSwgMikKICAgICA+Pj4gY2xhc3MgU3RhdHVzOgotICAgICAgICAgICAgb3BlbiwgcGVuZGluZywgY2xvc2VkID0gcmFuZ2UoMykKKyAgICAgICAgb3BlbiwgcGVuZGluZywgY2xvc2VkID0gcmFuZ2UoMykKIAogLi4gc2VlYWxzbzo6CiAKLSAgICogYE5hbWVkIHR1cGxlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTAwMjYxLz5gXwotICAgICBhZGFwdGVkIGZvciBQeXRob24gMi40LgorICAgICogYE5hbWVkIHR1cGxlIHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTAwMjYxLz5gXworICAgICAgYWRhcHRlZCBmb3IgUHl0aG9uIDIuNC4KIAotICAgKiBgUmVjaXBlIGZvciBuYW1lZCB0dXBsZSBhYnN0cmFjdCBiYXNlIGNsYXNzIHdpdGggYSBtZXRhY2xhc3MgbWl4LWluCi0gICAgIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81Nzc2MjktbmFtZWR0dXBsZWFiYy1hYnN0cmFjdC1iYXNlLWNsYXNzLW1peC1pbi1mb3ItbmFtZWQvPmBfCi0gICAgIGJ5IEphbiBLYWxpc3pld3NraS4gIEJlc2lkZXMgcHJvdmlkaW5nIGFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IKLSAgICAgbmFtZWQgdHVwbGVzLCBpdCBhbHNvIHN1cHBvcnRzIGFuIGFsdGVybmF0ZSA6dGVybTpgbWV0YWNsYXNzYC1iYXNlZAotICAgICBjb25zdHJ1Y3RvciB0aGF0IGlzIGNvbnZlbmllbnQgZm9yIHVzZSBjYXNlcyB3aGVyZSBuYW1lZCB0dXBsZXMgYXJlIGJlaW5nCi0gICAgIHN1YmNsYXNzZWQuCisgICAgKiBgUmVjaXBlIGZvciBuYW1lZCB0dXBsZSBhYnN0cmFjdCBiYXNlIGNsYXNzIHdpdGggYSBtZXRhY2xhc3MgbWl4LWluCisgICAgICA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc3NjI5LW5hbWVkdHVwbGVhYmMtYWJzdHJhY3QtYmFzZS1jbGFzcy1taXgtaW4tZm9yLW5hbWVkLz5gXworICAgICAgYnkgSmFuIEthbGlzemV3c2tpLiAgQmVzaWRlcyBwcm92aWRpbmcgYW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvcgorICAgICAgbmFtZWQgdHVwbGVzLCBpdCBhbHNvIHN1cHBvcnRzIGFuIGFsdGVybmF0ZSA6dGVybTpgbWV0YWNsYXNzYC1iYXNlZAorICAgICAgY29uc3RydWN0b3IgdGhhdCBpcyBjb252ZW5pZW50IGZvciB1c2UgY2FzZXMgd2hlcmUgbmFtZWQgdHVwbGVzIGFyZSBiZWluZworICAgICAgc3ViY2xhc3NlZC4KIAogCiA6Y2xhc3M6YE9yZGVyZWREaWN0YCBvYmplY3RzCkBAIC04MDIsMzYgKzkzNiwzNiBAQAogCiAuLiBjbGFzczo6IE9yZGVyZWREaWN0KFtpdGVtc10pCiAKLSAgIFJldHVybiBhbiBpbnN0YW5jZSBvZiBhIGRpY3Qgc3ViY2xhc3MsIHN1cHBvcnRpbmcgdGhlIHVzdWFsIDpjbGFzczpgZGljdGAKLSAgIG1ldGhvZHMuICBBbiAqT3JkZXJlZERpY3QqIGlzIGEgZGljdCB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgdGhhdCBrZXlzCi0gICB3ZXJlIGZpcnN0IGluc2VydGVkLiBJZiBhIG5ldyBlbnRyeSBvdmVyd3JpdGVzIGFuIGV4aXN0aW5nIGVudHJ5LCB0aGUKLSAgIG9yaWdpbmFsIGluc2VydGlvbiBwb3NpdGlvbiBpcyBsZWZ0IHVuY2hhbmdlZC4gIERlbGV0aW5nIGFuIGVudHJ5IGFuZAotICAgcmVpbnNlcnRpbmcgaXQgd2lsbCBtb3ZlIGl0IHRvIHRoZSBlbmQuCisgICAgUmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgZGljdCBzdWJjbGFzcywgc3VwcG9ydGluZyB0aGUgdXN1YWwgOmNsYXNzOmBkaWN0YAorICAgIG1ldGhvZHMuICBBbiAqT3JkZXJlZERpY3QqIGlzIGEgZGljdCB0aGF0IHJlbWVtYmVycyB0aGUgb3JkZXIgdGhhdCBrZXlzCisgICAgd2VyZSBmaXJzdCBpbnNlcnRlZC4gSWYgYSBuZXcgZW50cnkgb3ZlcndyaXRlcyBhbiBleGlzdGluZyBlbnRyeSwgdGhlCisgICAgb3JpZ2luYWwgaW5zZXJ0aW9uIHBvc2l0aW9uIGlzIGxlZnQgdW5jaGFuZ2VkLiAgRGVsZXRpbmcgYW4gZW50cnkgYW5kCisgICAgcmVpbnNlcnRpbmcgaXQgd2lsbCBtb3ZlIGl0IHRvIHRoZSBlbmQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCi0gICAuLiBtZXRob2Q6OiBwb3BpdGVtKGxhc3Q9VHJ1ZSkKKyAgICAuLiBtZXRob2Q6OiBwb3BpdGVtKGxhc3Q9VHJ1ZSkKIAotICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgKGtleSwgdmFsdWUpIHBhaXIuICBUaGUgcGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKLSAgICAgIG9yIEZJRk8gb3JkZXIgaWYgZmFsc2UuCisgICAgICAgIFRoZSA6bWV0aDpgcG9waXRlbWAgbWV0aG9kIGZvciBvcmRlcmVkIGRpY3Rpb25hcmllcyByZXR1cm5zIGFuZCByZW1vdmVzIGEKKyAgICAgICAgKGtleSwgdmFsdWUpIHBhaXIuICBUaGUgcGFpcnMgYXJlIHJldHVybmVkIGluIExJRk8gb3JkZXIgaWYgKmxhc3QqIGlzIHRydWUKKyAgICAgICAgb3IgRklGTyBvcmRlciBpZiBmYWxzZS4KIAotICAgLi4gbWV0aG9kOjogbW92ZV90b19lbmQoa2V5LCBsYXN0PVRydWUpCisgICAgLi4gbWV0aG9kOjogbW92ZV90b19lbmQoa2V5LCBsYXN0PVRydWUpCiAKLSAgICAgIE1vdmUgYW4gZXhpc3RpbmcgKmtleSogdG8gZWl0aGVyIGVuZCBvZiBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuICBUaGUgaXRlbQotICAgICAgaXMgbW92ZWQgdG8gdGhlIHJpZ2h0IGVuZCBpZiAqbGFzdCogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpIG9yIHRvIHRoZQotICAgICAgYmVnaW5uaW5nIGlmICpsYXN0KiBpcyBmYWxzZS4gIFJhaXNlcyA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlICprZXkqIGRvZXMKLSAgICAgIG5vdCBleGlzdDo6CisgICAgICAgIE1vdmUgYW4gZXhpc3RpbmcgKmtleSogdG8gZWl0aGVyIGVuZCBvZiBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuICBUaGUgaXRlbQorICAgICAgICBpcyBtb3ZlZCB0byB0aGUgcmlnaHQgZW5kIGlmICpsYXN0KiBpcyB0cnVlICh0aGUgZGVmYXVsdCkgb3IgdG8gdGhlCisgICAgICAgIGJlZ2lubmluZyBpZiAqbGFzdCogaXMgZmFsc2UuICBSYWlzZXMgOmV4YzpgS2V5RXJyb3JgIGlmIHRoZSAqa2V5KiBkb2VzCisgICAgICAgIG5vdCBleGlzdDo6CiAKLSAgICAgICAgICA+Pj4gZCA9IE9yZGVyZWREaWN0LmZyb21rZXlzKCdhYmNkZScpCi0gICAgICAgICAgPj4+IGQubW92ZV90b19lbmQoJ2InKQotICAgICAgICAgID4+PiAnJy5qb2luKGQua2V5cygpKQotICAgICAgICAgICdhY2RlYicKLSAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicsIGxhc3Q9RmFsc2UpCi0gICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCi0gICAgICAgICAgJ2JhY2RlJworICAgICAgICAgICAgPj4+IGQgPSBPcmRlcmVkRGljdC5mcm9ta2V5cygnYWJjZGUnKQorICAgICAgICAgICAgPj4+IGQubW92ZV90b19lbmQoJ2InKQorICAgICAgICAgICAgPj4+ICcnLmpvaW4oZC5rZXlzKCkpCisgICAgICAgICAgICAnYWNkZWInCisgICAgICAgICAgICA+Pj4gZC5tb3ZlX3RvX2VuZCgnYicsIGxhc3Q9RmFsc2UpCisgICAgICAgICAgICA+Pj4gJycuam9pbihkLmtleXMoKSkKKyAgICAgICAgICAgICdiYWNkZScKIAotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCisgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiBJbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgbWFwcGluZyBtZXRob2RzLCBvcmRlcmVkIGRpY3Rpb25hcmllcyBhbHNvIHN1cHBvcnQKIHJldmVyc2UgaXRlcmF0aW9uIHVzaW5nIDpmdW5jOmByZXZlcnNlZGAuCkBAIC04NDksOCArOTgzLDggQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIGBFcXVpdmFsZW50IE9yZGVyZWREaWN0IHJlY2lwZSA8aHR0cDovL2NvZGUuYWN0aXZlc3RhdGUuY29tL3JlY2lwZXMvNTc2NjkzLz5gXwotICAgdGhhdCBydW5zIG9uIFB5dGhvbiAyLjQgb3IgbGF0ZXIuCisgICAgYEVxdWl2YWxlbnQgT3JkZXJlZERpY3QgcmVjaXBlIDxodHRwOi8vY29kZS5hY3RpdmVzdGF0ZS5jb20vcmVjaXBlcy81NzY2OTMvPmBfCisgICAgdGhhdCBydW5zIG9uIFB5dGhvbiAyLjQgb3IgbGF0ZXIuCiAKIDpjbGFzczpgT3JkZXJlZERpY3RgIEV4YW1wbGVzIGFuZCBSZWNpcGVzCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgpAQCAtODkzLDcgKzEwMjcsNyBAQAogQW4gb3JkZXJlZCBkaWN0aW9uYXJ5IGNhbiBiZSBjb21iaW5lZCB3aXRoIHRoZSA6Y2xhc3M6YENvdW50ZXJgIGNsYXNzCiBzbyB0aGF0IHRoZSBjb3VudGVyIHJlbWVtYmVycyB0aGUgb3JkZXIgZWxlbWVudHMgYXJlIGZpcnN0IGVuY291bnRlcmVkOjoKIAotICAgY2xhc3MgT3JkZXJlZENvdW50ZXIoQ291bnRlciwgT3JkZXJlZERpY3QpOgorICAgIGNsYXNzIE9yZGVyZWRDb3VudGVyKENvdW50ZXIsIE9yZGVyZWREaWN0KToKICAgICAgICAgJ0NvdW50ZXIgdGhhdCByZW1lbWJlcnMgdGhlIG9yZGVyIGVsZW1lbnRzIGFyZSBmaXJzdCBlbmNvdW50ZXJlZCcKIAogICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC05MTQsMTkgKzEwNDgsMTkgQEAKIAogLi4gY2xhc3M6OiBVc2VyRGljdChbaW5pdGlhbGRhdGFdKQogCi0gICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIGRpY3Rpb25hcnkuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUga2VwdCBpbiBhCi0gICByZWd1bGFyIGRpY3Rpb25hcnksIHdoaWNoIGlzIGFjY2Vzc2libGUgdmlhIHRoZSA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mCi0gICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMuICBJZiAqaW5pdGlhbGRhdGEqIGlzIHByb3ZpZGVkLCA6YXR0cjpgZGF0YWAgaXMKLSAgIGluaXRpYWxpemVkIHdpdGggaXRzIGNvbnRlbnRzOyBub3RlIHRoYXQgYSByZWZlcmVuY2UgdG8gKmluaXRpYWxkYXRhKiB3aWxsIG5vdAotICAgYmUga2VwdCwgYWxsb3dpbmcgaXQgYmUgdXNlZCBmb3Igb3RoZXIgcHVycG9zZXMuCisgICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBkaWN0aW9uYXJ5LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYQorICAgIHJlZ3VsYXIgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YKKyAgICA6Y2xhc3M6YFVzZXJEaWN0YCBpbnN0YW5jZXMuICBJZiAqaW5pdGlhbGRhdGEqIGlzIHByb3ZpZGVkLCA6YXR0cjpgZGF0YWAgaXMKKyAgICBpbml0aWFsaXplZCB3aXRoIGl0cyBjb250ZW50czsgbm90ZSB0aGF0IGEgcmVmZXJlbmNlIHRvICppbml0aWFsZGF0YSogd2lsbCBub3QKKyAgICBiZSBrZXB0LCBhbGxvd2luZyBpdCBiZSB1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KIAotICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtYXBwaW5ncywKLSAgIDpjbGFzczpgVXNlckRpY3RgIGluc3RhbmNlcyBwcm92aWRlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlOgorICAgIEluIGFkZGl0aW9uIHRvIHN1cHBvcnRpbmcgdGhlIG1ldGhvZHMgYW5kIG9wZXJhdGlvbnMgb2YgbWFwcGluZ3MsCisgICAgOmNsYXNzOmBVc2VyRGljdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CiAKLSAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKKyAgICAuLiBhdHRyaWJ1dGU6OiBkYXRhCiAKLSAgICAgIEEgcmVhbCBkaWN0aW9uYXJ5IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZSA6Y2xhc3M6YFVzZXJEaWN0YAotICAgICAgY2xhc3MuCisgICAgICAgIEEgcmVhbCBkaWN0aW9uYXJ5IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZSA6Y2xhc3M6YFVzZXJEaWN0YAorICAgICAgICBjbGFzcy4KIAogCiAKQEAgLTk0NCwxOSArMTA3OCwxOSBAQAogCiAuLiBjbGFzczo6IFVzZXJMaXN0KFtsaXN0XSkKIAotICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBsaXN0LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYSByZWd1bGFyCi0gICBsaXN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgOmF0dHI6YGRhdGFgIGF0dHJpYnV0ZSBvZiA6Y2xhc3M6YFVzZXJMaXN0YAotICAgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGluaXRpYWxseSBzZXQgdG8gYSBjb3B5IG9mICpsaXN0KiwKLSAgIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IGxpc3QgYGBbXWBgLiAgKmxpc3QqIGNhbiBiZSBhbnkgaXRlcmFibGUsIGZvcgotICAgZXhhbXBsZSBhIHJlYWwgUHl0aG9uIGxpc3Qgb3IgYSA6Y2xhc3M6YFVzZXJMaXN0YCBvYmplY3QuCisgICAgQ2xhc3MgdGhhdCBzaW11bGF0ZXMgYSBsaXN0LiAgVGhlIGluc3RhbmNlJ3MgY29udGVudHMgYXJlIGtlcHQgaW4gYSByZWd1bGFyCisgICAgbGlzdCwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlIDphdHRyOmBkYXRhYCBhdHRyaWJ1dGUgb2YgOmNsYXNzOmBVc2VyTGlzdGAKKyAgICBpbnN0YW5jZXMuICBUaGUgaW5zdGFuY2UncyBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKmxpc3QqLAorICAgIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IGxpc3QgYGBbXWBgLiAgKmxpc3QqIGNhbiBiZSBhbnkgaXRlcmFibGUsIGZvcgorICAgIGV4YW1wbGUgYSByZWFsIFB5dGhvbiBsaXN0IG9yIGEgOmNsYXNzOmBVc2VyTGlzdGAgb2JqZWN0LgogCi0gICBJbiBhZGRpdGlvbiB0byBzdXBwb3J0aW5nIHRoZSBtZXRob2RzIGFuZCBvcGVyYXRpb25zIG9mIG11dGFibGUgc2VxdWVuY2VzLAotICAgOmNsYXNzOmBVc2VyTGlzdGAgaW5zdGFuY2VzIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGU6CisgICAgSW4gYWRkaXRpb24gdG8gc3VwcG9ydGluZyB0aGUgbWV0aG9kcyBhbmQgb3BlcmF0aW9ucyBvZiBtdXRhYmxlIHNlcXVlbmNlcywKKyAgICA6Y2xhc3M6YFVzZXJMaXN0YCBpbnN0YW5jZXMgcHJvdmlkZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZToKIAotICAgLi4gYXR0cmlidXRlOjogZGF0YQorICAgIC4uIGF0dHJpYnV0ZTo6IGRhdGEKIAotICAgICAgQSByZWFsIDpjbGFzczpgbGlzdGAgb2JqZWN0IHVzZWQgdG8gc3RvcmUgdGhlIGNvbnRlbnRzIG9mIHRoZQotICAgICAgOmNsYXNzOmBVc2VyTGlzdGAgY2xhc3MuCisgICAgICAgIEEgcmVhbCA6Y2xhc3M6YGxpc3RgIG9iamVjdCB1c2VkIHRvIHN0b3JlIHRoZSBjb250ZW50cyBvZiB0aGUKKyAgICAgICAgOmNsYXNzOmBVc2VyTGlzdGAgY2xhc3MuCiAKICoqU3ViY2xhc3NpbmcgcmVxdWlyZW1lbnRzOioqIFN1YmNsYXNzZXMgb2YgOmNsYXNzOmBVc2VyTGlzdGAgYXJlIGV4cGVjdCB0bwogb2ZmZXIgYSBjb25zdHJ1Y3RvciB3aGljaCBjYW4gYmUgY2FsbGVkIHdpdGggZWl0aGVyIG5vIGFyZ3VtZW50cyBvciBvbmUKQEAgLTk4MSwxNjggKzExMTUsMTAgQEAKIAogLi4gY2xhc3M6OiBVc2VyU3RyaW5nKFtzZXF1ZW5jZV0pCiAKLSAgIENsYXNzIHRoYXQgc2ltdWxhdGVzIGEgc3RyaW5nIG9yIGEgVW5pY29kZSBzdHJpbmcgb2JqZWN0LiAgVGhlIGluc3RhbmNlJ3MKLSAgIGNvbnRlbnQgaXMga2VwdCBpbiBhIHJlZ3VsYXIgc3RyaW5nIG9iamVjdCwgd2hpY2ggaXMgYWNjZXNzaWJsZSB2aWEgdGhlCi0gICA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlclN0cmluZ2AgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MKLSAgIGNvbnRlbnRzIGFyZSBpbml0aWFsbHkgc2V0IHRvIGEgY29weSBvZiAqc2VxdWVuY2UqLiAgVGhlICpzZXF1ZW5jZSogY2FuCi0gICBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YFVzZXJTdHJpbmdgIChvciBhCi0gICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZwotICAgdGhlIGJ1aWx0LWluIDpmdW5jOmBzdHJgIGZ1bmN0aW9uLgotCi0KLS4uIF9jb2xsZWN0aW9ucy1hYnN0cmFjdC1iYXNlLWNsYXNzZXM6Ci0KLUFCQ3MgLSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIGNvbGxlY3Rpb25zIG1vZHVsZSBvZmZlcnMgdGhlIGZvbGxvd2luZyA6dGVybTpgQUJDcyA8YWJzdHJhY3QgYmFzZSBjbGFzcz5gOgotCi09PT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUFCQyAgICAgICAgICAgICAgICAgICAgICAgIEluaGVyaXRzIGZyb20gICAgICAgICAgQWJzdHJhY3QgTWV0aG9kcyAgICAgICAgTWl4aW4gTWV0aG9kcwotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci06Y2xhc3M6YENvbnRhaW5lcmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAKLTpjbGFzczpgSGFzaGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2hhc2hfX2BgCi06Y2xhc3M6YEl0ZXJhYmxlYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYAotOmNsYXNzOmBJdGVyYXRvcmAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fbmV4dF9fYGAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKLTpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCi0KLTpjbGFzczpgU2VxdWVuY2VgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBfX2l0ZXJfX2BgLCBgYF9fcmV2ZXJzZWRfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGluZGV4YGAsIGFuZCBgYGNvdW50YGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYAotCi06Y2xhc3M6YE11dGFibGVTZXF1ZW5jZWAgICA6Y2xhc3M6YFNlcXVlbmNlYCAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNlcXVlbmNlYCBtZXRob2RzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fZGVsaXRlbV9fYGAsICAgICAgICBgYGFwcGVuZGBgLCBgYHJldmVyc2VgYCwgYGBleHRlbmRgYCwgYGBwb3BgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBpbnNlcnRgYCAgICAgICAgICAgICAgYGByZW1vdmVgYCwgYW5kIGBgX19pYWRkX19gYAotCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAotCi06Y2xhc3M6YE11dGFibGVTZXRgICAgICAgICA6Y2xhc3M6YFNldGAgICAgICAgICAgIGBgYWRkYGAsICAgICAgICAgICAgICAgIEluaGVyaXRlZCA6Y2xhc3M6YFNldGAgbWV0aG9kcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBkaXNjYXJkYGAgICAgICAgICAgICAgYGBjbGVhcmBgLCBgYHBvcGBgLCBgYHJlbW92ZWBgLCBgYF9faW9yX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2lhbmRfX2BgLCBgYF9faXhvcl9fYGAsIGFuZCBgYF9faXN1Yl9fYGAKLQotOmNsYXNzOmBNYXBwaW5nYCAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYGtleXNgYCwgYGBpdGVtc2BgLCBgYHZhbHVlc2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYGdldGBgLCBgYF9fZXFfX2BgLCBhbmQgYGBfX25lX19gYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCi0KLTpjbGFzczpgTXV0YWJsZU1hcHBpbmdgICAgIDpjbGFzczpgTWFwcGluZ2AgICAgICAgYGBfX3NldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgTWFwcGluZ2AgbWV0aG9kcyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2RlbGl0ZW1fX2BgICAgICAgICAgYGBwb3BgYCwgYGBwb3BpdGVtYGAsIGBgY2xlYXJgYCwgYGB1cGRhdGVgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGBgc2V0ZGVmYXVsdGBgCi0KLQotOmNsYXNzOmBNYXBwaW5nVmlld2AgICAgICAgOmNsYXNzOmBTaXplZGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAotOmNsYXNzOmBJdGVtc1ZpZXdgICAgICAgICAgOmNsYXNzOmBNYXBwaW5nVmlld2AsICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAKLTpjbGFzczpgS2V5c1ZpZXdgICAgICAgICAgIDpjbGFzczpgTWFwcGluZ1ZpZXdgLCAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgU2V0YCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCi06Y2xhc3M6YFZhbHVlc1ZpZXdgICAgICAgICA6Y2xhc3M6YE1hcHBpbmdWaWV3YCAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYAotPT09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotLi4gY2xhc3M6OiBDb250YWluZXIKLSAgICAgICAgICAgSGFzaGFibGUKLSAgICAgICAgICAgU2l6ZWQKLSAgICAgICAgICAgQ2FsbGFibGUKLQotICAgQUJDcyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgcmVzcGVjdGl2ZWx5IHRoZSBtZXRob2RzIDptZXRoOmBfX2NvbnRhaW5zX19gLAotICAgOm1ldGg6YF9faGFzaF9fYCwgOm1ldGg6YF9fbGVuX19gLCBhbmQgOm1ldGg6YF9fY2FsbF9fYC4KLQotLi4gY2xhc3M6OiBJdGVyYWJsZQotCi0gICBBQkMgZm9yIGNsYXNzZXMgdGhhdCBwcm92aWRlIHRoZSA6bWV0aDpgX19pdGVyX19gIG1ldGhvZC4KLSAgIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mIDp0ZXJtOmBpdGVyYWJsZWAuCi0KLS4uIGNsYXNzOjogSXRlcmF0b3IKLQotICAgQUJDIGZvciBjbGFzc2VzIHRoYXQgcHJvdmlkZSB0aGUgOm1ldGg6YF9faXRlcl9fYCBhbmQgOm1ldGg6YG5leHRgIG1ldGhvZHMuCi0gICBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6dGVybTpgaXRlcmF0b3JgLgotCi0uLiBjbGFzczo6IFNlcXVlbmNlCi0gICAgICAgICAgIE11dGFibGVTZXF1ZW5jZQotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgOnRlcm06YHNlcXVlbmNlcyA8c2VxdWVuY2U+YC4KLQotLi4gY2xhc3M6OiBTZXQKLSAgICAgICAgICAgTXV0YWJsZVNldAotCi0gICBBQkNzIGZvciByZWFkLW9ubHkgYW5kIG11dGFibGUgc2V0cy4KLQotLi4gY2xhc3M6OiBNYXBwaW5nCi0gICAgICAgICAgIE11dGFibGVNYXBwaW5nCi0KLSAgIEFCQ3MgZm9yIHJlYWQtb25seSBhbmQgbXV0YWJsZSA6dGVybTpgbWFwcGluZ3MgPG1hcHBpbmc+YC4KLQotLi4gY2xhc3M6OiBNYXBwaW5nVmlldwotICAgICAgICAgICBJdGVtc1ZpZXcKLSAgICAgICAgICAgS2V5c1ZpZXcKLSAgICAgICAgICAgVmFsdWVzVmlldwotCi0gICBBQkNzIGZvciBtYXBwaW5nLCBpdGVtcywga2V5cywgYW5kIHZhbHVlcyA6dGVybTpgdmlld3MgPHZpZXc+YC4KLQotCi1UaGVzZSBBQkNzIGFsbG93IHVzIHRvIGFzayBjbGFzc2VzIG9yIGluc3RhbmNlcyBpZiB0aGV5IHByb3ZpZGUKLXBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwgZm9yIGV4YW1wbGU6OgotCi0gICAgc2l6ZSA9IE5vbmUKLSAgICBpZiBpc2luc3RhbmNlKG15dmFyLCBjb2xsZWN0aW9ucy5TaXplZCk6Ci0gICAgICAgIHNpemUgPSBsZW4obXl2YXIpCi0KLVNldmVyYWwgb2YgdGhlIEFCQ3MgYXJlIGFsc28gdXNlZnVsIGFzIG1peGlucyB0aGF0IG1ha2UgaXQgZWFzaWVyIHRvIGRldmVsb3AKLWNsYXNzZXMgc3VwcG9ydGluZyBjb250YWluZXIgQVBJcy4gIEZvciBleGFtcGxlLCB0byB3cml0ZSBhIGNsYXNzIHN1cHBvcnRpbmcKLXRoZSBmdWxsIDpjbGFzczpgU2V0YCBBUEksIGl0IG9ubHkgbmVjZXNzYXJ5IHRvIHN1cHBseSB0aGUgdGhyZWUgdW5kZXJseWluZwotYWJzdHJhY3QgbWV0aG9kczogOm1ldGg6YF9fY29udGFpbnNfX2AsIDptZXRoOmBfX2l0ZXJfX2AsIGFuZCA6bWV0aDpgX19sZW5fX2AuCi1UaGUgQUJDIHN1cHBsaWVzIHRoZSByZW1haW5pbmcgbWV0aG9kcyBzdWNoIGFzIDptZXRoOmBfX2FuZF9fYCBhbmQKLTptZXRoOmBpc2Rpc2pvaW50YCA6OgotCi0gICAgY2xhc3MgTGlzdEJhc2VkU2V0KGNvbGxlY3Rpb25zLlNldCk6Ci0gICAgICAgICAnJycgQWx0ZXJuYXRlIHNldCBpbXBsZW1lbnRhdGlvbiBmYXZvcmluZyBzcGFjZSBvdmVyIHNwZWVkCi0gICAgICAgICAgICAgYW5kIG5vdCByZXF1aXJpbmcgdGhlIHNldCBlbGVtZW50cyB0byBiZSBoYXNoYWJsZS4gJycnCi0gICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlcmFibGUpOgotICAgICAgICAgICAgIHNlbGYuZWxlbWVudHMgPSBsc3QgPSBbXQotICAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBpdGVyYWJsZToKLSAgICAgICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIGxzdDoKLSAgICAgICAgICAgICAgICAgICAgIGxzdC5hcHBlbmQodmFsdWUpCi0gICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5lbGVtZW50cykKLSAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgotICAgICAgICAgICAgIHJldHVybiB2YWx1ZSBpbiBzZWxmLmVsZW1lbnRzCi0gICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKLSAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYuZWxlbWVudHMpCi0KLSAgICBzMSA9IExpc3RCYXNlZFNldCgnYWJjZGVmJykKLSAgICBzMiA9IExpc3RCYXNlZFNldCgnZGVmZ2hpJykKLSAgICBvdmVybGFwID0gczEgJiBzMiAgICAgICAgICAgICMgVGhlIF9fYW5kX18oKSBtZXRob2QgaXMgc3VwcG9ydGVkIGF1dG9tYXRpY2FsbHkKLQotTm90ZXMgb24gdXNpbmcgOmNsYXNzOmBTZXRgIGFuZCA6Y2xhc3M6YE11dGFibGVTZXRgIGFzIGEgbWl4aW46Ci0KLSgxKQotICAgU2luY2Ugc29tZSBzZXQgb3BlcmF0aW9ucyBjcmVhdGUgbmV3IHNldHMsIHRoZSBkZWZhdWx0IG1peGluIG1ldGhvZHMgbmVlZAotICAgYSB3YXkgdG8gY3JlYXRlIG5ldyBpbnN0YW5jZXMgZnJvbSBhbiBpdGVyYWJsZS4gVGhlIGNsYXNzIGNvbnN0cnVjdG9yIGlzCi0gICBhc3N1bWVkIHRvIGhhdmUgYSBzaWduYXR1cmUgaW4gdGhlIGZvcm0gYGBDbGFzc05hbWUoaXRlcmFibGUpYGAuCi0gICBUaGF0IGFzc3VtcHRpb24gaXMgZmFjdG9yZWQtb3V0IHRvIGFuIGludGVybmFsIGNsYXNzbWV0aG9kIGNhbGxlZAotICAgOm1ldGg6YF9mcm9tX2l0ZXJhYmxlYCB3aGljaCBjYWxscyBgYGNscyhpdGVyYWJsZSlgYCB0byBwcm9kdWNlIGEgbmV3IHNldC4KLSAgIElmIHRoZSA6Y2xhc3M6YFNldGAgbWl4aW4gaXMgYmVpbmcgdXNlZCBpbiBhIGNsYXNzIHdpdGggYSBkaWZmZXJlbnQKLSAgIGNvbnN0cnVjdG9yIHNpZ25hdHVyZSwgeW91IHdpbGwgbmVlZCB0byBvdmVycmlkZSA6bWV0aDpgX2Zyb21faXRlcmFibGVgCi0gICB3aXRoIGEgY2xhc3NtZXRob2QgdGhhdCBjYW4gY29uc3RydWN0IG5ldyBpbnN0YW5jZXMgZnJvbQotICAgYW4gaXRlcmFibGUgYXJndW1lbnQuCi0KLSgyKQotICAgVG8gb3ZlcnJpZGUgdGhlIGNvbXBhcmlzb25zIChwcmVzdW1hYmx5IGZvciBzcGVlZCwgYXMgdGhlCi0gICBzZW1hbnRpY3MgYXJlIGZpeGVkKSwgcmVkZWZpbmUgOm1ldGg6YF9fbGVfX2AgYW5kCi0gICB0aGVuIHRoZSBvdGhlciBvcGVyYXRpb25zIHdpbGwgYXV0b21hdGljYWxseSBmb2xsb3cgc3VpdC4KLQotKDMpCi0gICBUaGUgOmNsYXNzOmBTZXRgIG1peGluIHByb3ZpZGVzIGEgOm1ldGg6YF9oYXNoYCBtZXRob2QgdG8gY29tcHV0ZSBhIGhhc2ggdmFsdWUKLSAgIGZvciB0aGUgc2V0OyBob3dldmVyLCA6bWV0aDpgX19oYXNoX19gIGlzIG5vdCBkZWZpbmVkIGJlY2F1c2Ugbm90IGFsbCBzZXRzCi0gICBhcmUgaGFzaGFibGUgb3IgaW1tdXRhYmxlLiAgVG8gYWRkIHNldCBoYXNoYWJpbHR5IHVzaW5nIG1peGlucywKLSAgIGluaGVyaXQgZnJvbSBib3RoIDptZXRoOmBTZXRgIGFuZCA6bWV0aDpgSGFzaGFibGVgLCB0aGVuIGRlZmluZQotICAgYGBfX2hhc2hfXyA9IFNldC5faGFzaGBgLgotCi0uLiBzZWVhbHNvOjoKLQotICAgKiBgT3JkZXJlZFNldCByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3NjY5NC8+YF8gZm9yIGFuCi0gICAgIGV4YW1wbGUgYnVpbHQgb24gOmNsYXNzOmBNdXRhYmxlU2V0YC4KLQotICAgKiBGb3IgbW9yZSBhYm91dCBBQkNzLCBzZWUgdGhlIDptb2Q6YGFiY2AgbW9kdWxlIGFuZCA6cGVwOmAzMTE5YC4KKyAgICBDbGFzcyB0aGF0IHNpbXVsYXRlcyBhIHN0cmluZyBvciBhIFVuaWNvZGUgc3RyaW5nIG9iamVjdC4gIFRoZSBpbnN0YW5jZSdzCisgICAgY29udGVudCBpcyBrZXB0IGluIGEgcmVndWxhciBzdHJpbmcgb2JqZWN0LCB3aGljaCBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUKKyAgICA6YXR0cjpgZGF0YWAgYXR0cmlidXRlIG9mIDpjbGFzczpgVXNlclN0cmluZ2AgaW5zdGFuY2VzLiAgVGhlIGluc3RhbmNlJ3MKKyAgICBjb250ZW50cyBhcmUgaW5pdGlhbGx5IHNldCB0byBhIGNvcHkgb2YgKnNlcXVlbmNlKi4gIFRoZSAqc2VxdWVuY2UqIGNhbgorICAgIGJlIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgYnl0ZXNgLCA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgVXNlclN0cmluZ2AgKG9yIGEKKyAgICBzdWJjbGFzcykgb3IgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIHdoaWNoIGNhbiBiZSBjb252ZXJ0ZWQgaW50byBhIHN0cmluZyB1c2luZworICAgIHRoZSBidWlsdC1pbiA6ZnVuYzpgc3RyYCBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdCBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbmN5LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDJkYWUyCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVuY3kucnN0CkBAIC0wLDAgKzEsMzIgQEAKKy4uIF9jb25jdXJyZW5jeToKKworKioqKioqKioqKioqKioqKioqKioKK0NvbmN1cnJlbnQgRXhlY3V0aW9uCisqKioqKioqKioqKioqKioqKioqKgorCitUaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgc3VwcG9ydCBmb3IgY29uY3VycmVudAorZXhlY3V0aW9uIG9mIGNvZGUuIFRoZSBhcHByb3ByaWF0ZSBjaG9pY2Ugb2YgdG9vbCB3aWxsIGRlcGVuZCBvbiB0aGUKK3Rhc2sgdG8gYmUgZXhlY3V0ZWQgKENQVSBib3VuZCB2cyBJTyBib3VuZCkgYW5kIHByZWZlcnJlZCBzdHlsZSBvZgorZGV2ZWxvcG1lbnQgKGV2ZW50IGRyaXZlbiBjb29wZXJhdGl2ZSBtdWx0aXRhc2tpbmcgdnMgcHJlZW1wdGl2ZQorbXVsdGl0YXNraW5nKSBIZXJlJ3MgYW4gb3ZlcnZpZXc6CisKKworLi4gdG9jdHJlZTo6CisKKyAgIHRocmVhZGluZy5yc3QKKyAgIG11bHRpcHJvY2Vzc2luZy5yc3QKKyAgIGNvbmN1cnJlbnQucnN0CisgICBjb25jdXJyZW50LmZ1dHVyZXMucnN0CisgICBzdWJwcm9jZXNzLnJzdAorICAgc2NoZWQucnN0CisgICBxdWV1ZS5yc3QKKyAgIHNlbGVjdC5yc3QKKworCitUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0IG1vZHVsZXMgZm9yIHNvbWUgb2YgdGhlIGFib3ZlIHNlcnZpY2VzOgorCisuLiB0b2N0cmVlOjoKKworICAgZHVtbXlfdGhyZWFkaW5nLnJzdAorICAgX3RocmVhZC5yc3QKKyAgIF9kdW1teV90aHJlYWQucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0IGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdAppbmRleCBlZWUyMjg1Li43ZWQ5OWQ1IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKQEAgLTEzNiwyMCArMTM2LDIzIEBACiAgICAgICAgICAgICdodHRwOi8vd3d3LmJiYy5jby51ay8nLAogICAgICAgICAgICAnaHR0cDovL3NvbWUtbWFkZS11cC1kb21haW4uY29tLyddCiAKKyAgICMgUmV0cmlldmUgYSBzaW5nbGUgcGFnZSBhbmQgcmVwb3J0IHRoZSB1cmwgYW5kIGNvbnRlbnRzCiAgICBkZWYgbG9hZF91cmwodXJsLCB0aW1lb3V0KToKLSAgICAgICByZXR1cm4gdXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwsIHRpbWVvdXQ9dGltZW91dCkucmVhZCgpCisgICAgICAgY29ubiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4odXJsLCB0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgcmV0dXJuIGNvbm4ucmVhZGFsbCgpCiAKKyAgICMgV2UgY2FuIHVzZSBhIHdpdGggc3RhdGVtZW50IHRvIGVuc3VyZSB0aHJlYWRzIGFyZSBjbGVhbmVkIHVwIHByb21wdGx5CiAgICB3aXRoIGNvbmN1cnJlbnQuZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkgYXMgZXhlY3V0b3I6Ci0gICAgICAgZnV0dXJlX3RvX3VybCA9IGRpY3QoKGV4ZWN1dG9yLnN1Ym1pdChsb2FkX3VybCwgdXJsLCA2MCksIHVybCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdXJsIGluIFVSTFMpCi0KKyAgICAgICAjIFN0YXJ0IHRoZSBsb2FkIG9wZXJhdGlvbnMgYW5kIG1hcmsgZWFjaCBmdXR1cmUgd2l0aCBpdHMgVVJMCisgICAgICAgZnV0dXJlX3RvX3VybCA9IHtleGVjdXRvci5zdWJtaXQobG9hZF91cmwsIHVybCwgNjApOnVybCBmb3IgdXJsIGluIFVSTFN9CiAgICAgICAgZm9yIGZ1dHVyZSBpbiBjb25jdXJyZW50LmZ1dHVyZXMuYXNfY29tcGxldGVkKGZ1dHVyZV90b191cmwpOgogICAgICAgICAgICB1cmwgPSBmdXR1cmVfdG9fdXJsW2Z1dHVyZV0KLSAgICAgICAgICAgaWYgZnV0dXJlLmV4Y2VwdGlvbigpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgcHJpbnQoJyVyIGdlbmVyYXRlZCBhbiBleGNlcHRpb246ICVzJyAlICh1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dHVyZS5leGNlcHRpb24oKSkpCisgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgIGRhdGEgPSBmdXR1cmUucmVzdWx0KCkKKyAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICBwcmludCgnJXIgZ2VuZXJhdGVkIGFuIGV4Y2VwdGlvbjogJXMnICUgKHVybCwgZXhjKSkKICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihmdXR1cmUucmVzdWx0KCkpKSkKKyAgICAgICAgICAgICAgIHByaW50KCclciBwYWdlIGlzICVkIGJ5dGVzJyAlICh1cmwsIGxlbihkYXRhKSkpCiAKIAogUHJvY2Vzc1Bvb2xFeGVjdXRvcgpAQCAtMTcwLDYgKzE3MywxMiBAQAogICAgb2YgYXQgbW9zdCAqbWF4X3dvcmtlcnMqIHByb2Nlc3Nlcy4gIElmICptYXhfd29ya2VycyogaXMgYGBOb25lYGAgb3Igbm90CiAgICBnaXZlbiwgaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBvbiB0aGUgbWFjaGluZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gb25lIG9mIHRoZSB3b3JrZXIgcHJvY2Vzc2VzIHRlcm1pbmF0ZXMgYWJydXB0bHksIGEKKyAgICAgIDpleGM6YEJyb2tlblByb2Nlc3NQb29sYCBlcnJvciBpcyBub3cgcmFpc2VkLiAgUHJldmlvdXNseSwgYmVoYXZpb3VyCisgICAgICB3YXMgdW5kZWZpbmVkIGJ1dCBvcGVyYXRpb25zIG9uIHRoZSBleGVjdXRvciBvciBpdHMgZnV0dXJlcyB3b3VsZCBvZnRlbgorICAgICAgZnJlZXplIG9yIGRlYWRsb2NrLgorCiAKIC4uIF9wcm9jZXNzcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKQEAgLTM3MSwzICszODAsMTYgQEAKICAgIDpwZXA6YDMxNDhgIC0tIGZ1dHVyZXMgLSBleGVjdXRlIGNvbXB1dGF0aW9ucyBhc3luY2hyb25vdXNseQogICAgICAgVGhlIHByb3Bvc2FsIHdoaWNoIGRlc2NyaWJlZCB0aGlzIGZlYXR1cmUgZm9yIGluY2x1c2lvbiBpbiB0aGUgUHl0aG9uCiAgICAgICBzdGFuZGFyZCBsaWJyYXJ5LgorCisKK0V4Y2VwdGlvbiBjbGFzc2VzCistLS0tLS0tLS0tLS0tLS0tLQorCisuLiBleGNlcHRpb246OiBCcm9rZW5Qcm9jZXNzUG9vbAorCisgICBEZXJpdmVkIGZyb20gOmV4YzpgUnVudGltZUVycm9yYCwgdGhpcyBleGNlcHRpb24gY2xhc3MgaXMgcmFpc2VkIHdoZW4KKyAgIG9uZSBvZiB0aGUgd29ya2VycyBvZiBhIDpjbGFzczpgUHJvY2Vzc1Bvb2xFeGVjdXRvcmAgaGFzIHRlcm1pbmF0ZWQKKyAgIGluIGEgbm9uLWNsZWFuIGZhc2hpb24gKGZvciBleGFtcGxlLCBpZiBpdCB3YXMga2lsbGVkIGZyb20gdGhlIG91dHNpZGUpLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWJhNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5yc3QKQEAgLTAsMCArMSw2IEBACitUaGUgOm1vZDpgY29uY3VycmVudGAgcGFja2FnZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ3VycmVudGx5LCB0aGVyZSBpcyBvbmx5IG9uZSBtb2R1bGUgaW4gdGhpcyBwYWNrYWdlOgorCisqIDptb2Q6YGNvbmN1cnJlbnQuZnV0dXJlc2AgLS0gTGF1bmNoaW5nIHBhcmFsbGVsIHRhc2tzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdCBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CmluZGV4IGU4ZGMxN2YuLmVkOWViYjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0CkBAIC0xMiw4ICsxMiwxMSBAQAogc3RhdGVtZW50LiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgYWxzbyA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgIGFuZAogOnJlZjpgY29udGV4dC1tYW5hZ2Vyc2AuCiAKLUZ1bmN0aW9ucyBwcm92aWRlZDoKIAorVXRpbGl0aWVzCistLS0tLS0tLS0KKworRnVuY3Rpb25zIGFuZCBjbGFzc2VzIHByb3ZpZGVkOgogCiAuLiBkZWNvcmF0b3I6OiBjb250ZXh0bWFuYWdlcgogCkBAIC0xNjgsNiArMTcxLDM0OCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gY2xhc3M6OiBFeGl0U3RhY2soKQorCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IGlzIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzeSB0byBwcm9ncmFtbWF0aWNhbGx5CisgICBjb21iaW5lIG90aGVyIGNvbnRleHQgbWFuYWdlcnMgYW5kIGNsZWFudXAgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IHRob3NlCisgICB0aGF0IGFyZSBvcHRpb25hbCBvciBvdGhlcndpc2UgZHJpdmVuIGJ5IGlucHV0IGRhdGEuCisKKyAgIEZvciBleGFtcGxlLCBhIHNldCBvZiBmaWxlcyBtYXkgZWFzaWx5IGJlIGhhbmRsZWQgaW4gYSBzaW5nbGUgd2l0aAorICAgc3RhdGVtZW50IGFzIGZvbGxvd3M6OgorCisgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgIyBBbGwgb3BlbmVkIGZpbGVzIHdpbGwgYXV0b21hdGljYWxseSBiZSBjbG9zZWQgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICMgdGhlIHdpdGggc3RhdGVtZW50LCBldmVuIGlmIGF0dGVtcHRzIHRvIG9wZW4gZmlsZXMgbGF0ZXIKKyAgICAgICAgICAjIGluIHRoZSBsaXN0IHRocm93IGFuIGV4Y2VwdGlvbgorCisgICBFYWNoIGluc3RhbmNlIG1haW50YWlucyBhIHN0YWNrIG9mIHJlZ2lzdGVyZWQgY2FsbGJhY2tzIHRoYXQgYXJlIGNhbGxlZCBpbgorICAgcmV2ZXJzZSBvcmRlciB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjbG9zZWQgKGVpdGhlciBleHBsaWNpdGx5IG9yIGltcGxpY2l0bHkKKyAgIGF0IHRoZSBlbmQgb2YgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4gTm90ZSB0aGF0IGNhbGxiYWNrcyBhcmUgKm5vdCoKKyAgIGludm9rZWQgaW1wbGljaXRseSB3aGVuIHRoZSBjb250ZXh0IHN0YWNrIGluc3RhbmNlIGlzIGdhcmJhZ2UgY29sbGVjdGVkLgorCisgICBUaGlzIHN0YWNrIG1vZGVsIGlzIHVzZWQgc28gdGhhdCBjb250ZXh0IG1hbmFnZXJzIHRoYXQgYWNxdWlyZSB0aGVpcgorICAgcmVzb3VyY2VzIGluIHRoZWlyIGBgX19pbml0X19gYCBtZXRob2QgKHN1Y2ggYXMgZmlsZSBvYmplY3RzKSBjYW4gYmUKKyAgIGhhbmRsZWQgY29ycmVjdGx5LgorCisgICBTaW5jZSByZWdpc3RlcmVkIGNhbGxiYWNrcyBhcmUgaW52b2tlZCBpbiB0aGUgcmV2ZXJzZSBvcmRlciBvZgorICAgcmVnaXN0cmF0aW9uLCB0aGlzIGVuZHMgdXAgYmVoYXZpbmcgYXMgaWYgbXVsdGlwbGUgbmVzdGVkIDprZXl3b3JkOmB3aXRoYAorICAgc3RhdGVtZW50cyBoYWQgYmVlbiB1c2VkIHdpdGggdGhlIHJlZ2lzdGVyZWQgc2V0IG9mIGNhbGxiYWNrcy4gVGhpcyBldmVuCisgICBleHRlbmRzIHRvIGV4Y2VwdGlvbiBoYW5kbGluZyAtIGlmIGFuIGlubmVyIGNhbGxiYWNrIHN1cHByZXNzZXMgb3IgcmVwbGFjZXMKKyAgIGFuIGV4Y2VwdGlvbiwgdGhlbiBvdXRlciBjYWxsYmFja3Mgd2lsbCBiZSBwYXNzZWQgYXJndW1lbnRzIGJhc2VkIG9uIHRoYXQKKyAgIHVwZGF0ZWQgc3RhdGUuCisKKyAgIFRoaXMgaXMgYSByZWxhdGl2ZWx5IGxvdyBsZXZlbCBBUEkgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBkZXRhaWxzIG9mCisgICBjb3JyZWN0bHkgdW53aW5kaW5nIHRoZSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcy4gSXQgcHJvdmlkZXMgYSBzdWl0YWJsZQorICAgZm91bmRhdGlvbiBmb3IgaGlnaGVyIGxldmVsIGNvbnRleHQgbWFuYWdlcnMgdGhhdCBtYW5pcHVsYXRlIHRoZSBleGl0CisgICBzdGFjayBpbiBhcHBsaWNhdGlvbiBzcGVjaWZpYyB3YXlzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZW50ZXJfY29udGV4dChjbSkKKworICAgICAgRW50ZXJzIGEgbmV3IGNvbnRleHQgbWFuYWdlciBhbmQgYWRkcyBpdHMgOm1ldGg6YF9fZXhpdF9fYCBtZXRob2QgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIHRoZSBjb250ZXh0CisgICAgICBtYW5hZ2VyJ3Mgb3duIDptZXRoOmBfX2VudGVyX19gIG1ldGhvZC4KKworICAgICAgVGhlc2UgY29udGV4dCBtYW5hZ2VycyBtYXkgc3VwcHJlc3MgZXhjZXB0aW9ucyBqdXN0IGFzIHRoZXkgbm9ybWFsbHkKKyAgICAgIHdvdWxkIGlmIHVzZWQgZGlyZWN0bHkgYXMgcGFydCBvZiBhIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuCisKKyAgIC4uIG1ldGhvZDo6IHB1c2goZXhpdCkKKworICAgICAgQWRkcyBhIGNvbnRleHQgbWFuYWdlcidzIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kIHRvIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgQXMgYGBfX2VudGVyX19gYCBpcyAqbm90KiBpbnZva2VkLCB0aGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjb3ZlcgorICAgICAgcGFydCBvZiBhbiA6bWV0aDpgX19lbnRlcl9fYCBpbXBsZW1lbnRhdGlvbiB3aXRoIGEgY29udGV4dCBtYW5hZ2VyJ3Mgb3duCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZC4KKworICAgICAgSWYgcGFzc2VkIGFuIG9iamVjdCB0aGF0IGlzIG5vdCBhIGNvbnRleHQgbWFuYWdlciwgdGhpcyBtZXRob2QgYXNzdW1lcworICAgICAgaXQgaXMgYSBjYWxsYmFjayB3aXRoIHRoZSBzYW1lIHNpZ25hdHVyZSBhcyBhIGNvbnRleHQgbWFuYWdlcidzCisgICAgICA6bWV0aDpgX19leGl0X19gIG1ldGhvZCBhbmQgYWRkcyBpdCBkaXJlY3RseSB0byB0aGUgY2FsbGJhY2sgc3RhY2suCisKKyAgICAgIEJ5IHJldHVybmluZyB0cnVlIHZhbHVlcywgdGhlc2UgY2FsbGJhY2tzIGNhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZQorICAgICAgc2FtZSB3YXkgY29udGV4dCBtYW5hZ2VyIDptZXRoOmBfX2V4aXRfX2AgbWV0aG9kcyBjYW4uCisKKyAgICAgIFRoZSBwYXNzZWQgaW4gb2JqZWN0IGlzIHJldHVybmVkIGZyb20gdGhlIGZ1bmN0aW9uLCBhbGxvd2luZyB0aGlzCisgICAgICBtZXRob2QgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworICAgLi4gbWV0aG9kOjogY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgIEFjY2VwdHMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCBhcmd1bWVudHMgYW5kIGFkZHMgaXQgdG8KKyAgICAgIHRoZSBjYWxsYmFjayBzdGFjay4KKworICAgICAgVW5saWtlIHRoZSBvdGhlciBtZXRob2RzLCBjYWxsYmFja3MgYWRkZWQgdGhpcyB3YXkgY2Fubm90IHN1cHByZXNzCisgICAgICBleGNlcHRpb25zIChhcyB0aGV5IGFyZSBuZXZlciBwYXNzZWQgdGhlIGV4Y2VwdGlvbiBkZXRhaWxzKS4KKworICAgICAgVGhlIHBhc3NlZCBpbiBjYWxsYmFjayBpcyByZXR1cm5lZCBmcm9tIHRoZSBmdW5jdGlvbiwgYWxsb3dpbmcgdGhpcworICAgICAgbWV0aG9kIHRvIGJlIHVzZWQgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IuCisKKyAgIC4uIG1ldGhvZDo6IHBvcF9hbGwoKQorCisgICAgICBUcmFuc2ZlcnMgdGhlIGNhbGxiYWNrIHN0YWNrIHRvIGEgZnJlc2ggOmNsYXNzOmBFeGl0U3RhY2tgIGluc3RhbmNlCisgICAgICBhbmQgcmV0dXJucyBpdC4gTm8gY2FsbGJhY2tzIGFyZSBpbnZva2VkIGJ5IHRoaXMgb3BlcmF0aW9uIC0gaW5zdGVhZCwKKyAgICAgIHRoZXkgd2lsbCBub3cgYmUgaW52b2tlZCB3aGVuIHRoZSBuZXcgc3RhY2sgaXMgY2xvc2VkIChlaXRoZXIKKyAgICAgIGV4cGxpY2l0bHkgb3IgaW1wbGljaXRseSBhdCB0aGUgZW5kIG9mIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCkuCisKKyAgICAgIEZvciBleGFtcGxlLCBhIGdyb3VwIG9mIGZpbGVzIGNhbiBiZSBvcGVuZWQgYXMgYW4gImFsbCBvciBub3RoaW5nIgorICAgICAgb3BlcmF0aW9uIGFzIGZvbGxvd3M6OgorCisgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAgY2xvc2VfZmlsZXMgPSBzdGFjay5wb3BfYWxsKCkuY2xvc2UKKyAgICAgICAgICAgICAjIElmIG9wZW5pbmcgYW55IGZpbGUgZmFpbHMsIGFsbCBwcmV2aW91c2x5IG9wZW5lZCBmaWxlcyB3aWxsIGJlCisgICAgICAgICAgICAgIyBjbG9zZWQgYXV0b21hdGljYWxseS4gSWYgYWxsIGZpbGVzIGFyZSBvcGVuZWQgc3VjY2Vzc2Z1bGx5LAorICAgICAgICAgICAgICMgdGhleSB3aWxsIHJlbWFpbiBvcGVuIGV2ZW4gYWZ0ZXIgdGhlIHdpdGggc3RhdGVtZW50IGVuZHMuCisgICAgICAgICAgICAgIyBjbG9zZV9maWxlcygpIGNhbiB0aGVuIGJlIGludm9rZWQgZXhwbGljaXRseSB0byBjbG9zZSB0aGVtIGFsbAorCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIEltbWVkaWF0ZWx5IHVud2luZHMgdGhlIGNhbGxiYWNrIHN0YWNrLCBpbnZva2luZyBjYWxsYmFja3MgaW4gdGhlCisgICAgICByZXZlcnNlIG9yZGVyIG9mIHJlZ2lzdHJhdGlvbi4gRm9yIGFueSBjb250ZXh0IG1hbmFnZXJzIGFuZCBleGl0CisgICAgICBjYWxsYmFja3MgcmVnaXN0ZXJlZCwgdGhlIGFyZ3VtZW50cyBwYXNzZWQgaW4gd2lsbCBpbmRpY2F0ZSB0aGF0IG5vCisgICAgICBleGNlcHRpb24gb2NjdXJyZWQuCisKKworRXhhbXBsZXMgYW5kIFJlY2lwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgc29tZSBleGFtcGxlcyBhbmQgcmVjaXBlcyBmb3IgbWFraW5nIGVmZmVjdGl2ZSB1c2Ugb2YKK3RoZSB0b29scyBwcm92aWRlZCBieSA6bW9kOmBjb250ZXh0bGliYC4KKworCitTdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgcHJpbWFyeSB1c2UgY2FzZSBmb3IgOmNsYXNzOmBFeGl0U3RhY2tgIGlzIHRoZSBvbmUgZ2l2ZW4gaW4gdGhlIGNsYXNzCitkb2N1bWVudGF0aW9uOiBzdXBwb3J0aW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgYW5kIG90aGVyCitjbGVhbnVwIG9wZXJhdGlvbnMgaW4gYSBzaW5nbGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlIHZhcmlhYmlsaXR5CittYXkgY29tZSBmcm9tIHRoZSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBuZWVkZWQgYmVpbmcgZHJpdmVuIGJ5IHVzZXIKK2lucHV0IChzdWNoIGFzIG9wZW5pbmcgYSB1c2VyIHNwZWNpZmllZCBjb2xsZWN0aW9uIG9mIGZpbGVzKSwgb3IgZnJvbQorc29tZSBvZiB0aGUgY29udGV4dCBtYW5hZ2VycyBiZWluZyBvcHRpb25hbDo6CisKKyAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gcmVzb3VyY2VzOgorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChyZXNvdXJjZSkKKyAgICAgICAgaWYgbmVlZF9zcGVjaWFsIHJlc291cmNlOgorICAgICAgICAgICAgc3BlY2lhbCA9IGFjcXVpcmVfc3BlY2lhbF9yZXNvdXJjZSgpCisgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyZWxlYXNlX3NwZWNpYWxfcmVzb3VyY2UsIHNwZWNpYWwpCisgICAgICAgICMgUGVyZm9ybSBvcGVyYXRpb25zIHRoYXQgdXNlIHRoZSBhY3F1aXJlZCByZXNvdXJjZXMKKworQXMgc2hvd24sIDpjbGFzczpgRXhpdFN0YWNrYCBhbHNvIG1ha2VzIGl0IHF1aXRlIGVhc3kgdG8gdXNlIDprZXl3b3JkOmB3aXRoYAorc3RhdGVtZW50cyB0byBtYW5hZ2UgYXJiaXRyYXJ5IHJlc291cmNlcyB0aGF0IGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgdGhlCitjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuCisKKworU2ltcGxpZnlpbmcgc3VwcG9ydCBmb3Igc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0luIHRoZSBzcGVjaWZpYyBjYXNlIG9mIGEgc2luZ2xlIG9wdGlvbmFsIGNvbnRleHQgbWFuYWdlciwgOmNsYXNzOmBFeGl0U3RhY2tgCitpbnN0YW5jZXMgY2FuIGJlIHVzZWQgYXMgYSAiZG8gbm90aGluZyIgY29udGV4dCBtYW5hZ2VyLCBhbGxvd2luZyBhIGNvbnRleHQKK21hbmFnZXIgdG8gZWFzaWx5IGJlIG9taXR0ZWQgd2l0aG91dCBhZmZlY3RpbmcgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mCit0aGUgc291cmNlIGNvZGU6OgorCisgICBkZWYgZGVidWdfdHJhY2UoZGV0YWlscyk6CisgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICByZXR1cm4gVHJhY2VDb250ZXh0KGRldGFpbHMpCisgICAgICAgIyBEb24ndCBkbyBhbnl0aGluZyBzcGVjaWFsIHdpdGggdGhlIGNvbnRleHQgaW4gcmVsZWFzZSBtb2RlCisgICAgICAgcmV0dXJuIEV4aXRTdGFjaygpCisKKyAgIHdpdGggZGVidWdfdHJhY2UoKToKKyAgICAgICAjIFN1aXRlIGlzIHRyYWNlZCBpbiBkZWJ1ZyBtb2RlLCBidXQgcnVucyBub3JtYWxseSBvdGhlcndpc2UKKworCitDYXRjaGluZyBleGNlcHRpb25zIGZyb20gYGBfX2VudGVyX19gYCBtZXRob2RzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0l0IGlzIG9jY2FzaW9uYWxseSBkZXNpcmFibGUgdG8gY2F0Y2ggZXhjZXB0aW9ucyBmcm9tIGFuIGBgX19lbnRlcl9fYGAKK21ldGhvZCBpbXBsZW1lbnRhdGlvbiwgKndpdGhvdXQqIGluYWR2ZXJ0ZW50bHkgY2F0Y2hpbmcgZXhjZXB0aW9ucyBmcm9tCit0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IG9yIHRoZSBjb250ZXh0IG1hbmFnZXIncyBgYF9fZXhpdF9fYGAKK21ldGhvZC4gQnkgdXNpbmcgOmNsYXNzOmBFeGl0U3RhY2tgIHRoZSBzdGVwcyBpbiB0aGUgY29udGV4dCBtYW5hZ2VtZW50Citwcm90b2NvbCBjYW4gYmUgc2VwYXJhdGVkIHNsaWdodGx5IGluIG9yZGVyIHRvIGFsbG93IHRoaXM6OgorCisgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICB0cnk6CisgICAgICAgeCA9IHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICMgaGFuZGxlIF9fZW50ZXJfXyBleGNlcHRpb24KKyAgIGVsc2U6CisgICAgICAgd2l0aCBzdGFjazoKKyAgICAgICAgICAgIyBIYW5kbGUgbm9ybWFsIGNhc2UKKworQWN0dWFsbHkgbmVlZGluZyB0byBkbyB0aGlzIGlzIGxpa2VseSB0byBpbmRpY2F0ZSB0aGF0IHRoZSB1bmRlcmx5aW5nIEFQSQorc2hvdWxkIGJlIHByb3ZpZGluZyBhIGRpcmVjdCByZXNvdXJjZSBtYW5hZ2VtZW50IGludGVyZmFjZSBmb3IgdXNlIHdpdGgKKzprZXl3b3JkOmB0cnlgLzprZXl3b3JkOmBleGNlcHRgLzprZXl3b3JkOmBmaW5hbGx5YCBzdGF0ZW1lbnRzLCBidXQgbm90CithbGwgQVBJcyBhcmUgd2VsbCBkZXNpZ25lZCBpbiB0aGF0IHJlZ2FyZC4gV2hlbiBhIGNvbnRleHQgbWFuYWdlciBpcyB0aGUKK29ubHkgcmVzb3VyY2UgbWFuYWdlbWVudCBBUEkgcHJvdmlkZWQsIHRoZW4gOmNsYXNzOmBFeGl0U3RhY2tgIGNhbiBtYWtlIGl0CitlYXNpZXIgdG8gaGFuZGxlIHZhcmlvdXMgc2l0dWF0aW9ucyB0aGF0IGNhbid0IGJlIGhhbmRsZWQgZGlyZWN0bHkgaW4gYQorOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4KKworCitDbGVhbmluZyB1cCBpbiBhbiBgYF9fZW50ZXJfX2BgIGltcGxlbWVudGF0aW9uCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK0FzIG5vdGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIDptZXRoOmBFeGl0U3RhY2sucHVzaGAsIHRoaXMKK21ldGhvZCBjYW4gYmUgdXNlZnVsIGluIGNsZWFuaW5nIHVwIGFuIGFscmVhZHkgYWxsb2NhdGVkIHJlc291cmNlIGlmIGxhdGVyCitzdGVwcyBpbiB0aGUgOm1ldGg6YF9fZW50ZXJfX2AgaW1wbGVtZW50YXRpb24gZmFpbC4KKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgZG9pbmcgdGhpcyBmb3IgYSBjb250ZXh0IG1hbmFnZXIgdGhhdCBhY2NlcHRzIHJlc291cmNlCithY3F1aXNpdGlvbiBhbmQgcmVsZWFzZSBmdW5jdGlvbnMsIGFsb25nIHdpdGggYW4gb3B0aW9uYWwgdmFsaWRhdGlvbiBmdW5jdGlvbiwKK2FuZCBtYXBzIHRoZW0gdG8gdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbDo6CisKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEV4aXRTdGFjaworCisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIob2JqZWN0KToKKworICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhY3F1aXJlX3Jlc291cmNlLCByZWxlYXNlX3Jlc291cmNlLCBjaGVja19yZXNvdXJjZV9vaz1Ob25lKToKKyAgICAgICAgICAgc2VsZi5hY3F1aXJlX3Jlc291cmNlID0gYWNxdWlyZV9yZXNvdXJjZQorICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UgPSByZWxlYXNlX3Jlc291cmNlCisgICAgICAgICAgIGlmIGNoZWNrX3Jlc291cmNlX29rIGlzIE5vbmU6CisgICAgICAgICAgICAgICBkZWYgY2hlY2tfcmVzb3VyY2Vfb2socmVzb3VyY2UpOgorICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgIHNlbGYuY2hlY2tfcmVzb3VyY2Vfb2sgPSBjaGVja19yZXNvdXJjZV9vaworCisgICAgICAgQGNvbnRleHRtYW5hZ2VyCisgICAgICAgZGVmIF9jbGVhbnVwX29uX2Vycm9yKHNlbGYpOgorICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgc3RhY2sucHVzaChzZWxmKQorICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgICAgICMgVGhlIHZhbGlkYXRpb24gY2hlY2sgcGFzc2VkIGFuZCBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAjIEFjY29yZGluZ2x5LCB3ZSB3YW50IHRvIGtlZXAgdGhlIHJlc291cmNlLCBhbmQgcGFzcyBpdAorICAgICAgICAgICAgICAgIyBiYWNrIHRvIG91ciBjYWxsZXIKKyAgICAgICAgICAgICAgIHN0YWNrLnBvcF9hbGwoKQorCisgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgcmVzb3VyY2UgPSBzZWxmLmFjcXVpcmVfcmVzb3VyY2UoKQorICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfb25fZXJyb3IoKToKKyAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNoZWNrX3Jlc291cmNlX29rKHJlc291cmNlKToKKyAgICAgICAgICAgICAgICAgICBtc2cgPSAiRmFpbGVkIHZhbGlkYXRpb24gZm9yIHshcn0iCisgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKG1zZy5mb3JtYXQocmVzb3VyY2UpKQorICAgICAgICAgICByZXR1cm4gcmVzb3VyY2UKKworICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAjIFdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGFueSBvZiBvdXIgcmVzb3VyY2UgcmVsZWFzZSBsb2dpYworICAgICAgICAgICBzZWxmLnJlbGVhc2VfcmVzb3VyY2UoKQorCisKK1JlcGxhY2luZyBhbnkgdXNlIG9mIGBgdHJ5LWZpbmFsbHlgYCBhbmQgZmxhZyB2YXJpYWJsZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQSBwYXR0ZXJuIHlvdSB3aWxsIHNvbWV0aW1lcyBzZWUgaXMgYSBgYHRyeS1maW5hbGx5YGAgc3RhdGVtZW50IHdpdGggYSBmbGFnCit2YXJpYWJsZSB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgYm9keSBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHNob3VsZAorYmUgZXhlY3V0ZWQuIEluIGl0cyBzaW1wbGVzdCBmb3JtICh0aGF0IGNhbid0IGFscmVhZHkgYmUgaGFuZGxlZCBqdXN0IGJ5Cit1c2luZyBhbiBgYGV4Y2VwdGBgIGNsYXVzZSBpbnN0ZWFkKSwgaXQgbG9va3Mgc29tZXRoaW5nIGxpa2UgdGhpczo6CisKKyAgIGNsZWFudXBfbmVlZGVkID0gVHJ1ZQorICAgdHJ5OgorICAgICAgIHJlc3VsdCA9IHBlcmZvcm1fb3BlcmF0aW9uKCkKKyAgICAgICBpZiByZXN1bHQ6CisgICAgICAgICAgIGNsZWFudXBfbmVlZGVkID0gRmFsc2UKKyAgIGZpbmFsbHk6CisgICAgICAgaWYgY2xlYW51cF9uZWVkZWQ6CisgICAgICAgICAgIGNsZWFudXBfcmVzb3VyY2VzKCkKKworQXMgd2l0aCBhbnkgYGB0cnlgYCBzdGF0ZW1lbnQgYmFzZWQgY29kZSwgdGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yCitkZXZlbG9wbWVudCBhbmQgcmV2aWV3LCBiZWNhdXNlIHRoZSBzZXR1cCBjb2RlIGFuZCB0aGUgY2xlYW51cCBjb2RlIGNhbiBlbmQKK3VwIGJlaW5nIHNlcGFyYXRlZCBieSBhcmJpdHJhcmlseSBsb25nIHNlY3Rpb25zIG9mIGNvZGUuCisKKzpjbGFzczpgRXhpdFN0YWNrYCBtYWtlcyBpdCBwb3NzaWJsZSB0byBpbnN0ZWFkIHJlZ2lzdGVyIGEgY2FsbGJhY2sgZm9yCitleGVjdXRpb24gYXQgdGhlIGVuZCBvZiBhIGBgd2l0aGBgIHN0YXRlbWVudCwgYW5kIHRoZW4gbGF0ZXIgZGVjaWRlIHRvIHNraXAKK2V4ZWN1dGluZyB0aGF0IGNhbGxiYWNrOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBzdGFjay5jYWxsYmFjayhjbGVhbnVwX3Jlc291cmNlcykKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBzdGFjay5wb3BfYWxsKCkKKworVGhpcyBhbGxvd3MgdGhlIGludGVuZGVkIGNsZWFudXAgdXAgYmVoYXZpb3VyIHRvIGJlIG1hZGUgZXhwbGljaXQgdXAgZnJvbnQsCityYXRoZXIgdGhhbiByZXF1aXJpbmcgYSBzZXBhcmF0ZSBmbGFnIHZhcmlhYmxlLgorCitJZiBhIHBhcnRpY3VsYXIgYXBwbGljYXRpb24gdXNlcyB0aGlzIHBhdHRlcm4gYSBsb3QsIGl0IGNhbiBiZSBzaW1wbGlmaWVkCitldmVuIGZ1cnRoZXIgYnkgbWVhbnMgb2YgYSBzbWFsbCBoZWxwZXIgY2xhc3M6OgorCisgICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IEV4aXRTdGFjaworCisgICBjbGFzcyBDYWxsYmFjayhFeGl0U3RhY2spOgorICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsYmFjaywgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgIHN1cGVyKENhbGxiYWNrLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgICAgIHNlbGYuY2FsbGJhY2soY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpCisKKyAgICAgICBkZWYgY2FuY2VsKHNlbGYpOgorICAgICAgICAgICBzZWxmLnBvcF9hbGwoKQorCisgICB3aXRoIENhbGxiYWNrKGNsZWFudXBfcmVzb3VyY2VzKSBhcyBjYjoKKyAgICAgICByZXN1bHQgPSBwZXJmb3JtX29wZXJhdGlvbigpCisgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICBjYi5jYW5jZWwoKQorCitJZiB0aGUgcmVzb3VyY2UgY2xlYW51cCBpc24ndCBhbHJlYWR5IG5lYXRseSBidW5kbGVkIGludG8gYSBzdGFuZGFsb25lCitmdW5jdGlvbiwgdGhlbiBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byB1c2UgdGhlIGRlY29yYXRvciBmb3JtIG9mCis6bWV0aDpgRXhpdFN0YWNrLmNhbGxiYWNrYCB0byBkZWNsYXJlIHRoZSByZXNvdXJjZSBjbGVhbnVwIGluCithZHZhbmNlOjoKKworICAgZnJvbSBjb250ZXh0bGliIGltcG9ydCBFeGl0U3RhY2sKKworICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICBkZWYgY2xlYW51cF9yZXNvdXJjZXMoKToKKyAgICAgICAgICAgLi4uCisgICAgICAgcmVzdWx0ID0gcGVyZm9ybV9vcGVyYXRpb24oKQorICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgc3RhY2sucG9wX2FsbCgpCisKK0R1ZSB0byB0aGUgd2F5IHRoZSBkZWNvcmF0b3IgcHJvdG9jb2wgd29ya3MsIGEgY2FsbGJhY2sgZnVuY3Rpb24KK2RlY2xhcmVkIHRoaXMgd2F5IGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXJzLiBJbnN0ZWFkLCBhbnkgcmVzb3VyY2VzIHRvCitiZSByZWxlYXNlZCBtdXN0IGJlIGFjY2Vzc2VkIGFzIGNsb3N1cmUgdmFyaWFibGVzCisKKworVXNpbmcgYSBjb250ZXh0IG1hbmFnZXIgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKzpjbGFzczpgQ29udGV4dERlY29yYXRvcmAgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIGEgY29udGV4dCBtYW5hZ2VyIGluCitib3RoIGFuIG9yZGluYXJ5IGBgd2l0aGBgIHN0YXRlbWVudCBhbmQgYWxzbyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvci4KKworRm9yIGV4YW1wbGUsIGl0IGlzIHNvbWV0aW1lcyB1c2VmdWwgdG8gd3JhcCBmdW5jdGlvbnMgb3IgZ3JvdXBzIG9mIHN0YXRlbWVudHMKK3dpdGggYSBsb2dnZXIgdGhhdCBjYW4gdHJhY2sgdGhlIHRpbWUgb2YgZW50cnkgYW5kIHRpbWUgb2YgZXhpdC4gIFJhdGhlciB0aGFuCit3cml0aW5nIGJvdGggYSBmdW5jdGlvbiBkZWNvcmF0b3IgYW5kIGEgY29udGV4dCBtYW5hZ2VyIGZvciB0aGUgdGFzaywKK2luaGVyaXRpbmcgZnJvbSA6Y2xhc3M6YENvbnRleHREZWNvcmF0b3JgIHByb3ZpZGVzIGJvdGggY2FwYWJpbGl0aWVzIGluIGEKK3NpbmdsZSBkZWZpbml0aW9uOjoKKworICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgQ29udGV4dERlY29yYXRvcgorICAgIGltcG9ydCBsb2dnaW5nCisKKyAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuSU5GTykKKworICAgIGNsYXNzIHRyYWNrX2VudHJ5X2FuZF9leGl0KENvbnRleHREZWNvcmF0b3IpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKKyAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGMsIGV4Y190Yik6CisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisKK0luc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzIGJvdGggYSBjb250ZXh0IG1hbmFnZXI6OgorCisgICAgd2l0aCB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpOgorICAgICAgICBwcmludCgnU29tZSB0aW1lIGNvbnN1bWluZyBhY3Rpdml0eSBnb2VzIGhlcmUnKQorICAgICAgICBsb2FkX3dpZGdldCgpCisKK0FuZCBhbHNvIGFzIGEgZnVuY3Rpb24gZGVjb3JhdG9yOjoKKworICAgIEB0cmFja19lbnRyeV9hbmRfZXhpdCgnd2lkZ2V0IGxvYWRlcicpCisgICAgZGVmIGFjdGl2aXR5KCk6CisgICAgICAgIHByaW50KCdTb21lIHRpbWUgY29uc3VtaW5nIGFjdGl2aXR5IGdvZXMgaGVyZScpCisgICAgICAgIGxvYWRfd2lkZ2V0KCkKKworTm90ZSB0aGF0IHRoZXJlIGlzIG9uZSBhZGRpdGlvbmFsIGxpbWl0YXRpb24gd2hlbiB1c2luZyBjb250ZXh0IG1hbmFnZXJzCithcyBmdW5jdGlvbiBkZWNvcmF0b3JzOiB0aGVyZSdzIG5vIHdheSB0byBhY2Nlc3MgdGhlIHJldHVybiB2YWx1ZSBvZgorOm1ldGg6YF9fZW50ZXJfX2AuIElmIHRoYXQgdmFsdWUgaXMgbmVlZGVkLCB0aGVuIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byB1c2UKK2FuIGV4cGxpY2l0IGBgd2l0aGBgIHN0YXRlbWVudC4KKwogLi4gc2VlYWxzbzo6CiAKICAgIDpwZXA6YDAzNDNgIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvcHlyZWcucnN0IGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKaW5kZXggYTJkMzE2ZS4uNDEwNjFlNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29weXJlZy5yc3QKQEAgLTMyLDYgKzMyLDggQEAKICAgIHJldHVybmVkIGJ5ICpmdW5jdGlvbiogYXQgcGlja2xpbmcgdGltZS4gIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKICAgICpvYmplY3QqIGlzIGEgY2xhc3Mgb3IgKmNvbnN0cnVjdG9yKiBpcyBub3QgY2FsbGFibGUuCiAKLSAgIFNlZSB0aGUgOm1vZDpgcGlja2xlYCBtb2R1bGUgZm9yIG1vcmUgZGV0YWlscyBvbiB0aGUgaW50ZXJmYWNlIGV4cGVjdGVkIG9mCi0gICAqZnVuY3Rpb24qIGFuZCAqY29uc3RydWN0b3IqLgotCisgICBTZWUgdGhlIDptb2Q6YHBpY2tsZWAgbW9kdWxlIGZvciBtb3JlIGRldGFpbHMgb24gdGhlIGludGVyZmFjZQorICAgZXhwZWN0ZWQgb2YgKmZ1bmN0aW9uKiBhbmQgKmNvbnN0cnVjdG9yKi4gIE5vdGUgdGhhdCB0aGUKKyAgIDphdHRyOmB+cGlja2xlLlBpY2tsZXIuZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSBvZiBhIHBpY2tsZXIKKyAgIG9iamVjdCBvciBzdWJjbGFzcyBvZiA6Y2xhc3M6YHBpY2tsZS5QaWNrbGVyYCBjYW4gYWxzbyBiZSB1c2VkIGZvcgorICAgZGVjbGFyaW5nIHJlZHVjdGlvbiBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdC5yc3QgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKaW5kZXggMGJlNTcxZS4uYjRjOTBjZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0LnJzdApAQCAtMTUsOSArMTUsOSBAQAogCiBUaGlzIG1vZHVsZSBpbXBsZW1lbnRzIGFuIGludGVyZmFjZSB0byB0aGUgOm1hbnBhZ2U6YGNyeXB0KDMpYCByb3V0aW5lLCB3aGljaCBpcwogYSBvbmUtd2F5IGhhc2ggZnVuY3Rpb24gYmFzZWQgdXBvbiBhIG1vZGlmaWVkIERFUyBhbGdvcml0aG07IHNlZSB0aGUgVW5peCBtYW4KLXBhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBhbGxvd2luZyBQeXRob24gc2NyaXB0cyB0bwotYWNjZXB0IHR5cGVkIHBhc3N3b3JkcyBmcm9tIHRoZSB1c2VyLCBvciBhdHRlbXB0aW5nIHRvIGNyYWNrIFVuaXggcGFzc3dvcmRzIHdpdGgKLWEgZGljdGlvbmFyeS4KK3BhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4gIFBvc3NpYmxlIHVzZXMgaW5jbHVkZSBzdG9yaW5nIGhhc2hlZCBwYXNzd29yZHMKK3NvIHlvdSBjYW4gY2hlY2sgcGFzc3dvcmRzIHdpdGhvdXQgc3RvcmluZyB0aGUgYWN0dWFsIHBhc3N3b3JkLCBvciBhdHRlbXB0aW5nCit0byBjcmFjayBVbml4IHBhc3N3b3JkcyB3aXRoIGEgZGljdGlvbmFyeS4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNyeXB0KDMpCiAKQEAgLTI2LDE1ICsyNiw3NCBAQAogZXh0ZW5zaW9ucyBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2lsbCBhbHNvICBiZSBhdmFpbGFibGUgb24KIHRoaXMgbW9kdWxlLgogCitIYXNoaW5nIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLQogCi0uLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQpCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworVGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUgZGVmaW5lcyB0aGUgbGlzdCBvZiBoYXNoaW5nIG1ldGhvZHMgKG5vdCBhbGwgbWV0aG9kcworYXJlIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zKToKKworLi4gZGF0YTo6IE1FVEhPRF9TSEE1MTIKKworICAgQSBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgODYgY2hhcmFjdGVyCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgc3Ryb25nZXN0IG1ldGhvZC4KKworLi4gZGF0YTo6IE1FVEhPRF9TSEEyNTYKKworICAgQW5vdGhlciBNb2R1bGFyIENyeXB0IEZvcm1hdCBtZXRob2Qgd2l0aCAxNiBjaGFyYWN0ZXIgc2FsdCBhbmQgNDMKKyAgIGNoYXJhY3RlciBoYXNoLgorCisuLiBkYXRhOjogTUVUSE9EX01ENQorCisgICBBbm90aGVyIE1vZHVsYXIgQ3J5cHQgRm9ybWF0IG1ldGhvZCB3aXRoIDggY2hhcmFjdGVyIHNhbHQgYW5kIDIyCisgICBjaGFyYWN0ZXIgaGFzaC4KKworLi4gZGF0YTo6IE1FVEhPRF9DUllQVAorCisgICBUaGUgdHJhZGl0aW9uYWwgbWV0aG9kIHdpdGggYSAyIGNoYXJhY3RlciBzYWx0IGFuZCAxMyBjaGFyYWN0ZXJzIG9mCisgICBoYXNoLiAgVGhpcyBpcyB0aGUgd2Vha2VzdCBtZXRob2QuCisKKworTW9kdWxlIEF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBtZXRob2RzCisKKyAgIEEgbGlzdCBvZiBhdmFpbGFibGUgcGFzc3dvcmQgaGFzaGluZyBhbGdvcml0aG1zLCBhcworICAgYGBjcnlwdC5NRVRIT0RfKmBgIG9iamVjdHMuICBUaGlzIGxpc3QgaXMgc29ydGVkIGZyb20gc3Ryb25nZXN0IHRvCisgICB3ZWFrZXN0LCBhbmQgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGF0IGxlYXN0IGBgY3J5cHQuTUVUSE9EX0NSWVBUYGAuCisKKworTW9kdWxlIEZ1bmN0aW9ucworLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgorCisuLiBmdW5jdGlvbjo6IGNyeXB0KHdvcmQsIHNhbHQ9Tm9uZSkKIAogICAgKndvcmQqIHdpbGwgdXN1YWxseSBiZSBhIHVzZXIncyBwYXNzd29yZCBhcyB0eXBlZCBhdCBhIHByb21wdCBvciAgaW4gYSBncmFwaGljYWwKLSAgIGludGVyZmFjZS4gICpzYWx0KiBpcyB1c3VhbGx5IGEgcmFuZG9tIHR3by1jaGFyYWN0ZXIgc3RyaW5nIHdoaWNoIHdpbGwgYmUgdXNlZAotICAgdG8gcGVydHVyYiB0aGUgREVTIGFsZ29yaXRobSBpbiBvbmUgb2YgNDA5NiB3YXlzLiAgVGhlIGNoYXJhY3RlcnMgaW4gKnNhbHQqIG11c3QKLSAgIGJlIGluIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAuICBSZXR1cm5zIHRoZSBoYXNoZWQgcGFzc3dvcmQgYXMgYSBzdHJpbmcsIHdoaWNoCi0gICB3aWxsIGJlIGNvbXBvc2VkIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgc2FtZSBhbHBoYWJldCBhcyB0aGUgc2FsdCAodGhlIGZpcnN0IHR3bwotICAgY2hhcmFjdGVycyByZXByZXNlbnQgdGhlIHNhbHQgaXRzZWxmKS4KKyAgIGludGVyZmFjZS4gIFRoZSBvcHRpb25hbCAqc2FsdCogaXMgZWl0aGVyIGEgc3RyaW5nIGFzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBta3NhbHRgLCBvbmUgb2YgdGhlIGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgKHRob3VnaCBub3QgYWxsCisgICBtYXkgYmUgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMpLCBvciBhIGZ1bGwgZW5jcnlwdGVkIHBhc3N3b3JkCisgICBpbmNsdWRpbmcgc2FsdCwgYXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbi4gIElmICpzYWx0KiBpcyBub3QKKyAgIHByb3ZpZGVkLCB0aGUgc3Ryb25nZXN0IG1ldGhvZCB3aWxsIGJlIHVzZWQgKGFzIHJldHVybmVkIGJ5CisgICA6ZnVuYzpgbWV0aG9kc2AuCisKKyAgIENoZWNraW5nIGEgcGFzc3dvcmQgaXMgdXN1YWxseSBkb25lIGJ5IHBhc3NpbmcgdGhlIHBsYWluLXRleHQgcGFzc3dvcmQKKyAgIGFzICp3b3JkKiBhbmQgdGhlIGZ1bGwgcmVzdWx0cyBvZiBhIHByZXZpb3VzIDpmdW5jOmBjcnlwdGAgY2FsbCwKKyAgIHdoaWNoIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgcmVzdWx0cyBvZiB0aGlzIGNhbGwuCisKKyAgICpzYWx0KiAoZWl0aGVyIGEgcmFuZG9tIDIgb3IgMTYgY2hhcmFjdGVyIHN0cmluZywgcG9zc2libHkgcHJlZml4ZWQgd2l0aAorICAgYGAkZGlnaXQkYGAgdG8gaW5kaWNhdGUgdGhlIG1ldGhvZCkgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHBlcnR1cmIgdGhlCisgICBlbmNyeXB0aW9uIGFsZ29yaXRobS4gIFRoZSBjaGFyYWN0ZXJzIGluICpzYWx0KiBtdXN0IGJlIGluIHRoZSBzZXQKKyAgIGBgWy4vYS16QS1aMC05XWBgLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgTW9kdWxhciBDcnlwdCBGb3JtYXQgd2hpY2gKKyAgIHByZWZpeGVzIGEgYGAkZGlnaXQkYGAuCisKKyAgIFJldHVybnMgdGhlIGhhc2hlZCBwYXNzd29yZCBhcyBhIHN0cmluZywgd2hpY2ggd2lsbCBiZSBjb21wb3NlZCBvZgorICAgY2hhcmFjdGVycyBmcm9tIHRoZSBzYW1lIGFscGhhYmV0IGFzIHRoZSBzYWx0LgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogY3J5cHQoMykKIApAQCAtNDIsMTggKzEwMSw1MiBAQAogICAgZGlmZmVyZW50IHNpemVzIGluIHRoZSAqc2FsdCosIGl0IGlzIHJlY29tbWVuZGVkIHRvIHVzZSAgdGhlIGZ1bGwgY3J5cHRlZAogICAgcGFzc3dvcmQgYXMgc2FsdCB3aGVuIGNoZWNraW5nIGZvciBhIHBhc3N3b3JkLgogCi1BIHNpbXBsZSBleGFtcGxlIGlsbHVzdHJhdGluZyB0eXBpY2FsIHVzZTo6CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWNjZXB0IGBgY3J5cHQuTUVUSE9EXypgYCB2YWx1ZXMgaW4gYWRkaXRpb24gdG8gc3RyaW5ncyBmb3IgKnNhbHQqLgogCi0gICBpbXBvcnQgY3J5cHQsIGdldHBhc3MsIHB3ZAorCisuLiBmdW5jdGlvbjo6IG1rc2FsdChtZXRob2Q9Tm9uZSkKKworICAgUmV0dXJuIGEgcmFuZG9tbHkgZ2VuZXJhdGVkIHNhbHQgb2YgdGhlIHNwZWNpZmllZCBtZXRob2QuICBJZiBubworICAgKm1ldGhvZCogaXMgZ2l2ZW4sIHRoZSBzdHJvbmdlc3QgbWV0aG9kIGF2YWlsYWJsZSBhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YG1ldGhvZHNgIGlzIHVzZWQuCisKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJpbmcgZWl0aGVyIG9mIDIgY2hhcmFjdGVycyBpbiBsZW5ndGggZm9yCisgICBgYGNyeXB0Lk1FVEhPRF9DUllQVGBgLCBvciAxOSBjaGFyYWN0ZXJzIHN0YXJ0aW5nIHdpdGggYGAkZGlnaXQkYGAgYW5kCisgICAxNiByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZSBzZXQgYGBbLi9hLXpBLVowLTldYGAsIHN1aXRhYmxlIGZvcgorICAgcGFzc2luZyBhcyB0aGUgKnNhbHQqIGFyZ3VtZW50IHRvIDpmdW5jOmBjcnlwdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCitFeGFtcGxlcworLS0tLS0tLS0KKworQSBzaW1wbGUgZXhhbXBsZSBpbGx1c3RyYXRpbmcgdHlwaWNhbCB1c2UgKGEgY29uc3RhbnQtdGltZSBjb21wYXJpc29uCitvcGVyYXRpb24gaXMgbmVlZGVkIHRvIGxpbWl0IGV4cG9zdXJlIHRvIHRpbWluZyBhdHRhY2tzLgorOmZ1bmM6YGhtYWMuY29tcGFyZV9kaWdlc3RgIGlzIHN1aXRhYmxlIGZvciB0aGlzIHB1cnBvc2UpOjoKKworICAgaW1wb3J0IHB3ZAorICAgaW1wb3J0IGNyeXB0CisgICBpbXBvcnQgZ2V0cGFzcworICAgZnJvbSBobWFjIGltcG9ydCBjb21wYXJlX2RpZ2VzdCBhcyBjb21wYXJlX2hhc2gKIAogICAgZGVmIGxvZ2luKCk6Ci0gICAgICAgdXNlcm5hbWUgPSBpbnB1dCgnUHl0aG9uIGxvZ2luOicpCisgICAgICAgdXNlcm5hbWUgPSBpbnB1dCgnUHl0aG9uIGxvZ2luOiAnKQogICAgICAgIGNyeXB0ZWRwYXNzd2QgPSBwd2QuZ2V0cHduYW0odXNlcm5hbWUpWzFdCiAgICAgICAgaWYgY3J5cHRlZHBhc3N3ZDoKICAgICAgICAgICAgaWYgY3J5cHRlZHBhc3N3ZCA9PSAneCcgb3IgY3J5cHRlZHBhc3N3ZCA9PSAnKic6Ci0gICAgICAgICAgICAgICByYWlzZSAiU29ycnksIGN1cnJlbnRseSBubyBzdXBwb3J0IGZvciBzaGFkb3cgcGFzc3dvcmRzIgorICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbm8gc3VwcG9ydCBmb3Igc2hhZG93IHBhc3N3b3JkcycpCiAgICAgICAgICAgIGNsZWFydGV4dCA9IGdldHBhc3MuZ2V0cGFzcygpCi0gICAgICAgICAgIHJldHVybiBjcnlwdC5jcnlwdChjbGVhcnRleHQsIGNyeXB0ZWRwYXNzd2QpID09IGNyeXB0ZWRwYXNzd2QKKyAgICAgICAgICAgcmV0dXJuIGNvbXBhcmVfaGFzaChjcnlwdC5jcnlwdChjbGVhcnRleHQsIGNyeXB0ZWRwYXNzd2QpLCBjcnlwdGVkcGFzc3dkKQogICAgICAgIGVsc2U6Ci0gICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgIHJldHVybiBUcnVlCiAKK1RvIGdlbmVyYXRlIGEgaGFzaCBvZiBhIHBhc3N3b3JkIHVzaW5nIHRoZSBzdHJvbmdlc3QgYXZhaWxhYmxlIG1ldGhvZCBhbmQKK2NoZWNrIGl0IGFnYWluc3QgdGhlIG9yaWdpbmFsOjoKKworICAgaW1wb3J0IGNyeXB0CisgICBmcm9tIGhtYWMgaW1wb3J0IGNvbXBhcmVfZGlnZXN0IGFzIGNvbXBhcmVfaGFzaAorCisgICBoYXNoZWQgPSBjcnlwdC5jcnlwdChwbGFpbnRleHQpCisgICBpZiBub3QgY29tcGFyZV9oYXNoKGhhc2hlZCwgY3J5cHQuY3J5cHQocGxhaW50ZXh0LCBoYXNoZWQpKToKKyAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImhhc2hlZCB2ZXJzaW9uIGRvZXNuJ3QgdmFsaWRhdGUgYWdhaW5zdCBvcmlnaW5hbCIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAppbmRleCBhMjMzNTYxLi40NjllZGU0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKQEAgLTgsNiArOCw3IEBACiAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaW1wbGVtZW50IHZhcmlvdXMgYWxnb3JpdGhtcyBvZiBhCiBjcnlwdG9ncmFwaGljIG5hdHVyZS4gIFRoZXkgYXJlIGF2YWlsYWJsZSBhdCB0aGUgZGlzY3JldGlvbiBvZiB0aGUgaW5zdGFsbGF0aW9uLgorT24gVW5peCBzeXN0ZW1zLCB0aGUgOm1vZDpgY3J5cHRgIG1vZHVsZSBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiBIZXJlJ3MgYW4gb3ZlcnZpZXc6CiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggZDhkZjdmYy4uNGYxOWNlZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC0xMSwxNSArMTEsMTUgQEAKICAgIHBhaXI6IGRhdGE7IHRhYnVsYXIKIAogVGhlIHNvLWNhbGxlZCBDU1YgKENvbW1hIFNlcGFyYXRlZCBWYWx1ZXMpIGZvcm1hdCBpcyB0aGUgbW9zdCBjb21tb24gaW1wb3J0IGFuZAotZXhwb3J0IGZvcm1hdCBmb3Igc3ByZWFkc2hlZXRzIGFuZCBkYXRhYmFzZXMuICBUaGVyZSBpcyBubyAiQ1NWIHN0YW5kYXJkIiwgc28KLXRoZSBmb3JtYXQgaXMgb3BlcmF0aW9uYWxseSBkZWZpbmVkIGJ5IHRoZSBtYW55IGFwcGxpY2F0aW9ucyB3aGljaCByZWFkIGFuZAotd3JpdGUgaXQuICBUaGUgbGFjayBvZiBhIHN0YW5kYXJkIG1lYW5zIHRoYXQgc3VidGxlIGRpZmZlcmVuY2VzIG9mdGVuIGV4aXN0IGluCi10aGUgZGF0YSBwcm9kdWNlZCBhbmQgY29uc3VtZWQgYnkgZGlmZmVyZW50IGFwcGxpY2F0aW9ucy4gIFRoZXNlIGRpZmZlcmVuY2VzIGNhbgotbWFrZSBpdCBhbm5veWluZyB0byBwcm9jZXNzIENTViBmaWxlcyBmcm9tIG11bHRpcGxlIHNvdXJjZXMuICBTdGlsbCwgd2hpbGUgdGhlCi1kZWxpbWl0ZXJzIGFuZCBxdW90aW5nIGNoYXJhY3RlcnMgdmFyeSwgdGhlIG92ZXJhbGwgZm9ybWF0IGlzIHNpbWlsYXIgZW5vdWdoCi10aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHdyaXRlIGEgc2luZ2xlIG1vZHVsZSB3aGljaCBjYW4gZWZmaWNpZW50bHkgbWFuaXB1bGF0ZQotc3VjaCBkYXRhLCBoaWRpbmcgdGhlIGRldGFpbHMgb2YgcmVhZGluZyBhbmQgd3JpdGluZyB0aGUgZGF0YSBmcm9tIHRoZQotcHJvZ3JhbW1lci4KK2V4cG9ydCBmb3JtYXQgZm9yIHNwcmVhZHNoZWV0cyBhbmQgZGF0YWJhc2VzLiAgQ1NWIGZvcm1hdCB3YXMgdXNlZCBmb3IgbWFueQoreWVhcnMgcHJpb3IgdG8gYXR0ZW1wdHMgdG8gZGVzY3JpYmUgdGhlIGZvcm1hdCBpbiBhIHN0YW5kYXJkaXplZCB3YXkgaW4KKzpyZmM6YDQxODBgLiAgVGhlIGxhY2sgb2YgYSB3ZWxsLWRlZmluZWQgc3RhbmRhcmQgbWVhbnMgdGhhdCBzdWJ0bGUgZGlmZmVyZW5jZXMKK29mdGVuIGV4aXN0IGluIHRoZSBkYXRhIHByb2R1Y2VkIGFuZCBjb25zdW1lZCBieSBkaWZmZXJlbnQgYXBwbGljYXRpb25zLiAgVGhlc2UKK2RpZmZlcmVuY2VzIGNhbiBtYWtlIGl0IGFubm95aW5nIHRvIHByb2Nlc3MgQ1NWIGZpbGVzIGZyb20gbXVsdGlwbGUgc291cmNlcy4KK1N0aWxsLCB3aGlsZSB0aGUgZGVsaW1pdGVycyBhbmQgcXVvdGluZyBjaGFyYWN0ZXJzIHZhcnksIHRoZSBvdmVyYWxsIGZvcm1hdCBpcworc2ltaWxhciBlbm91Z2ggdGhhdCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSBhIHNpbmdsZSBtb2R1bGUgd2hpY2ggY2FuCitlZmZpY2llbnRseSBtYW5pcHVsYXRlIHN1Y2ggZGF0YSwgaGlkaW5nIHRoZSBkZXRhaWxzIG9mIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGhlCitkYXRhIGZyb20gdGhlIHByb2dyYW1tZXIuCiAKIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSBpbXBsZW1lbnRzIGNsYXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgdGFidWxhciBkYXRhIGluIENTVgogZm9ybWF0LiAgSXQgYWxsb3dzIHByb2dyYW1tZXJzIHRvIHNheSwgIndyaXRlIHRoaXMgZGF0YSBpbiB0aGUgZm9ybWF0IHByZWZlcnJlZApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKaW5kZXggM2M2MDJjOC4uM2U0YWZkMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CkBAIC0zOSw5ICszOSwxNCBAQAogY29udmVudGlvbiwgd2hpbGUgKndpbmRsbCogbGlicmFyaWVzIGNhbGwgZnVuY3Rpb25zIHVzaW5nIHRoZSBgYHN0ZGNhbGxgYAogY2FsbGluZyBjb252ZW50aW9uLiAqb2xlZGxsKiBhbHNvIHVzZXMgdGhlIGBgc3RkY2FsbGBgIGNhbGxpbmcgY29udmVudGlvbiwgYW5kCiBhc3N1bWVzIHRoZSBmdW5jdGlvbnMgcmV0dXJuIGEgV2luZG93cyA6Yzp0eXBlOmBIUkVTVUxUYCBlcnJvciBjb2RlLiBUaGUgZXJyb3IKLWNvZGUgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IHJhaXNlIGEgOmNsYXNzOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiB3aGVuIHRoZQorY29kZSBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgcmFpc2UgYSA6Y2xhc3M6YE9TRXJyb3JgIGV4Y2VwdGlvbiB3aGVuIHRoZQogZnVuY3Rpb24gY2FsbCBmYWlscy4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFdpbmRvd3MgZXJyb3JzIHVzZWQgdG8gcmFpc2UgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKworCiBIZXJlIGFyZSBzb21lIGV4YW1wbGVzIGZvciBXaW5kb3dzLiBOb3RlIHRoYXQgYGBtc3ZjcnRgYCBpcyB0aGUgTVMgc3RhbmRhcmQgQwogbGlicmFyeSBjb250YWluaW5nIG1vc3Qgc3RhbmRhcmQgQyBmdW5jdGlvbnMsIGFuZCB1c2VzIHRoZSBjZGVjbCBjYWxsaW5nCiBjb252ZW50aW9uOjoKQEAgLTE4OSw3ICsxOTQsNyBAQAogICAgPj4+IHdpbmRsbC5rZXJuZWwzMi5HZXRNb2R1bGVIYW5kbGVBKDMyKSAjIGRvY3Rlc3Q6ICtXSU5ET1dTCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KLSAgIFdpbmRvd3NFcnJvcjogZXhjZXB0aW9uOiBhY2Nlc3MgdmlvbGF0aW9uIHJlYWRpbmcgMHgwMDAwMDAyMAorICAgT1NFcnJvcjogZXhjZXB0aW9uOiBhY2Nlc3MgdmlvbGF0aW9uIHJlYWRpbmcgMHgwMDAwMDAyMAogICAgPj4+CiAKIFRoZXJlIGFyZSwgaG93ZXZlciwgZW5vdWdoIHdheXMgdG8gY3Jhc2ggUHl0aG9uIHdpdGggOm1vZDpgY3R5cGVzYCwgc28geW91CkBAIC00OTYsNyArNTAxLDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAzLCBpbiBWYWxpZEhhbmRsZQotICAgV2luZG93c0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCisgICBPU0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCiAgICA+Pj4KIAogYGBXaW5FcnJvcmBgIGlzIGEgZnVuY3Rpb24gd2hpY2ggd2lsbCBjYWxsIFdpbmRvd3MgYGBGb3JtYXRNZXNzYWdlKClgYCBhcGkgdG8KQEAgLTkyNiwyMSArOTMxLDIxIEBACiA6bW9kOmBjdHlwZXNgIGFsbG93cyB0byBjcmVhdGUgQyBjYWxsYWJsZSBmdW5jdGlvbiBwb2ludGVycyBmcm9tIFB5dGhvbiBjYWxsYWJsZXMuCiBUaGVzZSBhcmUgc29tZXRpbWVzIGNhbGxlZCAqY2FsbGJhY2sgZnVuY3Rpb25zKi4KIAotRmlyc3QsIHlvdSBtdXN0IGNyZWF0ZSBhIGNsYXNzIGZvciB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHRoZSBjbGFzcyBrbm93cyB0aGUKK0ZpcnN0LCB5b3UgbXVzdCBjcmVhdGUgYSBjbGFzcyBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiBUaGUgY2xhc3Mga25vd3MgdGhlCiBjYWxsaW5nIGNvbnZlbnRpb24sIHRoZSByZXR1cm4gdHlwZSwgYW5kIHRoZSBudW1iZXIgYW5kIHR5cGVzIG9mIGFyZ3VtZW50cyB0aGlzCiBmdW5jdGlvbiB3aWxsIHJlY2VpdmUuCiAKLVRoZSBDRlVOQ1RZUEUgZmFjdG9yeSBmdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlCi1ub3JtYWwgY2RlY2wgY2FsbGluZyBjb252ZW50aW9uLCBhbmQsIG9uIFdpbmRvd3MsIHRoZSBXSU5GVU5DVFlQRSBmYWN0b3J5Ci1mdW5jdGlvbiBjcmVhdGVzIHR5cGVzIGZvciBjYWxsYmFjayBmdW5jdGlvbnMgdXNpbmcgdGhlIHN0ZGNhbGwgY2FsbGluZwotY29udmVudGlvbi4KK1RoZSA6ZnVuYzpgQ0ZVTkNUWVBFYCBmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucwordXNpbmcgdGhlIGBgY2RlY2xgYCBjYWxsaW5nIGNvbnZlbnRpb24uIE9uIFdpbmRvd3MsIHRoZSA6ZnVuYzpgV0lORlVOQ1RZUEVgCitmYWN0b3J5IGZ1bmN0aW9uIGNyZWF0ZXMgdHlwZXMgZm9yIGNhbGxiYWNrIGZ1bmN0aW9ucyB1c2luZyB0aGUgYGBzdGRjYWxsYGAKK2NhbGxpbmcgY29udmVudGlvbi4KIAogQm90aCBvZiB0aGVzZSBmYWN0b3J5IGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdCB0eXBlIGFzIGZpcnN0CiBhcmd1bWVudCwgYW5kIHRoZSBjYWxsYmFjayBmdW5jdGlvbnMgZXhwZWN0ZWQgYXJndW1lbnQgdHlwZXMgYXMgdGhlIHJlbWFpbmluZwogYXJndW1lbnRzLgogCiBJIHdpbGwgcHJlc2VudCBhbiBleGFtcGxlIGhlcmUgd2hpY2ggdXNlcyB0aGUgc3RhbmRhcmQgQyBsaWJyYXJ5J3MKLTpjOmZ1bmM6YHFzb3J0YCBmdW5jdGlvbiwgdGhpcyBpcyB1c2VkIHRvIHNvcnQgaXRlbXMgd2l0aCB0aGUgaGVscCBvZiBhIGNhbGxiYWNrCis6YzpmdW5jOmBxc29ydGAgZnVuY3Rpb24sIHRoYXQgaXMgdXNlZCB0byBzb3J0IGl0ZW1zIHdpdGggdGhlIGhlbHAgb2YgYSBjYWxsYmFjawogZnVuY3Rpb24uICA6YzpmdW5jOmBxc29ydGAgd2lsbCBiZSB1c2VkIHRvIHNvcnQgYW4gYXJyYXkgb2YgaW50ZWdlcnM6OgogCiAgICA+Pj4gSW50QXJyYXk1ID0gY19pbnQgKiA1CkBAIC05NTMsNyArOTU4LDcgQEAKIGl0ZW1zIGluIHRoZSBkYXRhIGFycmF5LCB0aGUgc2l6ZSBvZiBvbmUgaXRlbSwgYW5kIGEgcG9pbnRlciB0byB0aGUgY29tcGFyaXNvbgogZnVuY3Rpb24sIHRoZSBjYWxsYmFjay4gVGhlIGNhbGxiYWNrIHdpbGwgdGhlbiBiZSBjYWxsZWQgd2l0aCB0d28gcG9pbnRlcnMgdG8KIGl0ZW1zLCBhbmQgaXQgbXVzdCByZXR1cm4gYSBuZWdhdGl2ZSBpbnRlZ2VyIGlmIHRoZSBmaXJzdCBpdGVtIGlzIHNtYWxsZXIgdGhhbgotdGhlIHNlY29uZCwgYSB6ZXJvIGlmIHRoZXkgYXJlIGVxdWFsLCBhbmQgYSBwb3NpdGl2ZSBpbnRlZ2VyIGVsc2UuCit0aGUgc2Vjb25kLCBhIHplcm8gaWYgdGhleSBhcmUgZXF1YWwsIGFuZCBhIHBvc2l0aXZlIGludGVnZXIgb3RoZXJ3aXNlLgogCiBTbyBvdXIgY2FsbGJhY2sgZnVuY3Rpb24gcmVjZWl2ZXMgcG9pbnRlcnMgdG8gaW50ZWdlcnMsIGFuZCBtdXN0IHJldHVybiBhbgogaW50ZWdlci4gRmlyc3Qgd2UgY3JlYXRlIHRoZSBgYHR5cGVgYCBmb3IgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uOjoKQEAgLTk2MSwzNiArOTY2LDggQEAKICAgID4+PiBDTVBGVU5DID0gQ0ZVTkNUWVBFKGNfaW50LCBQT0lOVEVSKGNfaW50KSwgUE9JTlRFUihjX2ludCkpCiAgICA+Pj4KIAotRm9yIHRoZSBmaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24sIHdlIHNpbXBseSBwcmludCB0aGUKLWFyZ3VtZW50cyB3ZSBnZXQsIGFuZCByZXR1cm4gMCAoaW5jcmVtZW50YWwgZGV2ZWxvcG1lbnQgOy0pOjoKLQotICAgPj4+IGRlZiBweV9jbXBfZnVuYyhhLCBiKToKLSAgIC4uLiAgICAgcHJpbnQoInB5X2NtcF9mdW5jIiwgYSwgYikKLSAgIC4uLiAgICAgcmV0dXJuIDAKLSAgIC4uLgotICAgPj4+Ci0KLUNyZWF0ZSB0aGUgQyBjYWxsYWJsZSBjYWxsYmFjazo6Ci0KLSAgID4+PiBjbXBfZnVuYyA9IENNUEZVTkMocHlfY21wX2Z1bmMpCi0gICA+Pj4KLQotQW5kIHdlJ3JlIHJlYWR5IHRvIGdvOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgcHlfY21wX2Z1bmMgPGN0eXBlcy5MUF9jX2xvbmcgb2JqZWN0IGF0IDB4MDAuLi4+IDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweDAwLi4uPgotICAgPj4+Ci0KLVdlIGtub3cgaG93IHRvIGFjY2VzcyB0aGUgY29udGVudHMgb2YgYSBwb2ludGVyLCBzbyBsZXRzIHJlZGVmaW5lIG91ciBjYWxsYmFjazo6CitUbyBnZXQgc3RhcnRlZCwgaGVyZSBpcyBhIHNpbXBsZSBjYWxsYmFjayB0aGF0IHNob3dzIHRoZSB2YWx1ZXMgaXQgZ2V0cworcGFzc2VkOjoKIAogICAgPj4+IGRlZiBweV9jbXBfZnVuYyhhLCBiKToKICAgIC4uLiAgICAgcHJpbnQoInB5X2NtcF9mdW5jIiwgYVswXSwgYlswXSkKQEAgLTk5OSwyMyArOTc2LDcgQEAKICAgID4+PiBjbXBfZnVuYyA9IENNUEZVTkMocHlfY21wX2Z1bmMpCiAgICA+Pj4KIAotSGVyZSBpcyB3aGF0IHdlIGdldCBvbiBXaW5kb3dzOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBjbXBfZnVuYykgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgNyAxCi0gICBweV9jbXBfZnVuYyAzMyAxCi0gICBweV9jbXBfZnVuYyA5OSAxCi0gICBweV9jbXBfZnVuYyA1IDEKLSAgIHB5X2NtcF9mdW5jIDcgNQotICAgcHlfY21wX2Z1bmMgMzMgNQotICAgcHlfY21wX2Z1bmMgOTkgNQotICAgcHlfY21wX2Z1bmMgNyA5OQotICAgcHlfY21wX2Z1bmMgMzMgOTkKLSAgIHB5X2NtcF9mdW5jIDcgMzMKLSAgID4+PgotCi1JdCBpcyBmdW5ueSB0byBzZWUgdGhhdCBvbiBsaW51eCB0aGUgc29ydCBmdW5jdGlvbiBzZWVtcyB0byB3b3JrIG11Y2ggbW9yZQotZWZmaWNpZW50bHksIGl0IGlzIGRvaW5nIGxlc3MgY29tcGFyaXNvbnM6OgorVGhlIHJlc3VsdDo6CiAKICAgID4+PiBxc29ydChpYSwgbGVuKGlhKSwgc2l6ZW9mKGNfaW50KSwgY21wX2Z1bmMpICMgZG9jdGVzdDogK0xJTlVYCiAgICBweV9jbXBfZnVuYyA1IDEKQEAgLTEwMjUsMzIgKzk4NiwxMyBAQAogICAgcHlfY21wX2Z1bmMgMSA3CiAgICA+Pj4KIAotQWgsIHdlJ3JlIG5lYXJseSBkb25lISBUaGUgbGFzdCBzdGVwIGlzIHRvIGFjdHVhbGx5IGNvbXBhcmUgdGhlIHR3byBpdGVtcyBhbmQKLXJldHVybiBhIHVzZWZ1bCByZXN1bHQ6OgorTm93IHdlIGNhbiBhY3R1YWxseSBjb21wYXJlIHRoZSB0d28gaXRlbXMgYW5kIHJldHVybiBhIHVzZWZ1bCByZXN1bHQ6OgogCiAgICA+Pj4gZGVmIHB5X2NtcF9mdW5jKGEsIGIpOgogICAgLi4uICAgICBwcmludCgicHlfY21wX2Z1bmMiLCBhWzBdLCBiWzBdKQogICAgLi4uICAgICByZXR1cm4gYVswXSAtIGJbMF0KICAgIC4uLgogICAgPj4+Ci0KLUZpbmFsIHJ1biBvbiBXaW5kb3dzOjoKLQotICAgPj4+IHFzb3J0KGlhLCBsZW4oaWEpLCBzaXplb2YoY19pbnQpLCBDTVBGVU5DKHB5X2NtcF9mdW5jKSkgIyBkb2N0ZXN0OiArV0lORE9XUwotICAgcHlfY21wX2Z1bmMgMzMgNwotICAgcHlfY21wX2Z1bmMgOTkgMzMKLSAgIHB5X2NtcF9mdW5jIDUgOTkKLSAgIHB5X2NtcF9mdW5jIDEgOTkKLSAgIHB5X2NtcF9mdW5jIDMzIDcKLSAgIHB5X2NtcF9mdW5jIDEgMzMKLSAgIHB5X2NtcF9mdW5jIDUgMzMKLSAgIHB5X2NtcF9mdW5jIDUgNwotICAgcHlfY21wX2Z1bmMgMSA3Ci0gICBweV9jbXBfZnVuYyA1IDEKLSAgID4+PgotCi1hbmQgb24gTGludXg6OgotCiAgICA+Pj4gcXNvcnQoaWEsIGxlbihpYSksIHNpemVvZihjX2ludCksIENNUEZVTkMocHlfY21wX2Z1bmMpKSAjIGRvY3Rlc3Q6ICtMSU5VWAogICAgcHlfY21wX2Z1bmMgNSAxCiAgICBweV9jbXBfZnVuYyAzMyA5OQpAQCAtMTA1OSw5ICsxMDAxLDYgQEAKICAgIHB5X2NtcF9mdW5jIDUgNwogICAgPj4+CiAKLUl0IGlzIHF1aXRlIGludGVyZXN0aW5nIHRvIHNlZSB0aGF0IHRoZSBXaW5kb3dzIDpmdW5jOmBxc29ydGAgZnVuY3Rpb24gbmVlZHMKLW1vcmUgY29tcGFyaXNvbnMgdGhhbiB0aGUgbGludXggdmVyc2lvbiEKLQogQXMgd2UgY2FuIGVhc2lseSBjaGVjaywgb3VyIGFycmF5IGlzIHNvcnRlZCBub3c6OgogCiAgICA+Pj4gZm9yIGkgaW4gaWE6IHByaW50KGksIGVuZD0iICIpCkBAIC0xMDcxLDkgKzEwMTAsOSBAQAogCiAqKkltcG9ydGFudCBub3RlIGZvciBjYWxsYmFjayBmdW5jdGlvbnM6KioKIAotTWFrZSBzdXJlIHlvdSBrZWVwIHJlZmVyZW5jZXMgdG8gQ0ZVTkNUWVBFIG9iamVjdHMgYXMgbG9uZyBhcyB0aGV5IGFyZSB1c2VkIGZyb20KLUMgY29kZS4gOm1vZDpgY3R5cGVzYCBkb2Vzbid0LCBhbmQgaWYgeW91IGRvbid0LCB0aGV5IG1heSBiZSBnYXJiYWdlIGNvbGxlY3RlZCwKLWNyYXNoaW5nIHlvdXIgcHJvZ3JhbSB3aGVuIGEgY2FsbGJhY2sgaXMgbWFkZS4KK01ha2Ugc3VyZSB5b3Uga2VlcCByZWZlcmVuY2VzIHRvIDpmdW5jOmBDRlVOQ1RZUEVgIG9iamVjdHMgYXMgbG9uZyBhcyB0aGV5IGFyZQordXNlZCBmcm9tIEMgY29kZS4gOm1vZDpgY3R5cGVzYCBkb2Vzbid0LCBhbmQgaWYgeW91IGRvbid0LCB0aGV5IG1heSBiZSBnYXJiYWdlCitjb2xsZWN0ZWQsIGNyYXNoaW5nIHlvdXIgcHJvZ3JhbSB3aGVuIGEgY2FsbGJhY2sgaXMgbWFkZS4KIAogCiAuLiBfY3R5cGVzLWFjY2Vzc2luZy12YWx1ZXMtZXhwb3J0ZWQtZnJvbS1kbGxzOgpAQCAtMTM1MCw3ICsxMjg5LDEwIEBACiAgICBhc3N1bWVkIHRvIHJldHVybiB0aGUgd2luZG93cyBzcGVjaWZpYyA6Y2xhc3M6YEhSRVNVTFRgIGNvZGUuICA6Y2xhc3M6YEhSRVNVTFRgCiAgICB2YWx1ZXMgY29udGFpbiBpbmZvcm1hdGlvbiBzcGVjaWZ5aW5nIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGNhbGwgZmFpbGVkIG9yCiAgICBzdWNjZWVkZWQsIHRvZ2V0aGVyIHdpdGggYWRkaXRpb25hbCBlcnJvciBjb2RlLiAgSWYgdGhlIHJldHVybiB2YWx1ZSBzaWduYWxzIGEKLSAgIGZhaWx1cmUsIGFuIDpjbGFzczpgV2luZG93c0Vycm9yYCBpcyBhdXRvbWF0aWNhbGx5IHJhaXNlZC4KKyAgIGZhaWx1cmUsIGFuIDpjbGFzczpgT1NFcnJvcmAgaXMgYXV0b21hdGljYWxseSByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBXaW5kb3dzRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLgogCiAKIC4uIGNsYXNzOjogV2luRExMKG5hbWUsIG1vZGU9REVGQVVMVF9NT0RFLCBoYW5kbGU9Tm9uZSwgdXNlX2Vycm5vPUZhbHNlLCB1c2VfbGFzdF9lcnJvcj1GYWxzZSkKQEAgLTE5NjcsMTEgKzE5MDksMTQgQEAKIC4uIGZ1bmN0aW9uOjogV2luRXJyb3IoY29kZT1Ob25lLCBkZXNjcj1Ob25lKQogCiAgICBXaW5kb3dzIG9ubHk6IHRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHdvcnN0LW5hbWVkIHRoaW5nIGluIGN0eXBlcy4gSXQKLSAgIGNyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgV2luZG93c0Vycm9yLiAgSWYgKmNvZGUqIGlzIG5vdCBzcGVjaWZpZWQsCisgICBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIE9TRXJyb3IuICBJZiAqY29kZSogaXMgbm90IHNwZWNpZmllZCwKICAgIGBgR2V0TGFzdEVycm9yYGAgaXMgY2FsbGVkIHRvIGRldGVybWluZSB0aGUgZXJyb3IgY29kZS4gSWYgKmRlc2NyKiBpcyBub3QKICAgIHNwZWNpZmllZCwgOmZ1bmM6YEZvcm1hdEVycm9yYCBpcyBjYWxsZWQgdG8gZ2V0IGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUKICAgIGVycm9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQW4gaW5zdGFuY2Ugb2YgOmV4YzpgV2luZG93c0Vycm9yYCB1c2VkIHRvIGJlIGNyZWF0ZWQuCisKIAogLi4gZnVuY3Rpb246OiB3c3RyaW5nX2F0KGFkZHJlc3MsIHNpemU9LTEpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CmluZGV4IDExYWI1ZDAuLjllNWNiNTUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdApAQCAtNTk5LDYgKzU5OSwxNyBAQAogICAgICAgT25seSBvbmUgKmNoKiBjYW4gYmUgcHVzaGVkIGJlZm9yZSA6bWV0aDpgZ2V0Y2hgIGlzIGNhbGxlZC4KIAogCisuLiBmdW5jdGlvbjo6IHVuZ2V0X3djaChjaCkKKworICAgUHVzaCAqY2gqIHNvIHRoZSBuZXh0IDptZXRoOmBnZXRfd2NoYCB3aWxsIHJldHVybiBpdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIE9ubHkgb25lICpjaCogY2FuIGJlIHB1c2hlZCBiZWZvcmUgOm1ldGg6YGdldF93Y2hgIGlzIGNhbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiB1bmdldG1vdXNlKGlkLCB4LCB5LCB6LCBic3RhdGUpCiAKICAgIFB1c2ggYSA6Y29uc3Q6YEtFWV9NT1VTRWAgZXZlbnQgb250byB0aGUgaW5wdXQgcXVldWUsIGFzc29jaWF0aW5nIHRoZSBnaXZlbgpAQCAtNjQzLDcgKzY1NCw3IEBACiAtLS0tLS0tLS0tLS0tLQogCiBXaW5kb3cgb2JqZWN0cywgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YGluaXRzY3JgIGFuZCA6ZnVuYzpgbmV3d2luYCBhYm92ZSwgaGF2ZQotdGhlIGZvbGxvd2luZyBtZXRob2RzOgordGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5hZGRjaChjaFssIGF0dHJdKQpAQCAtODMxLDYgKzg0MiwxNiBAQAogICAgZXZlbnQuCiAKIAorLi4gYXR0cmlidXRlOjogd2luZG93LmVuY29kaW5nCisKKyAgIEVuY29kaW5nIHVzZWQgdG8gZW5jb2RlIG1ldGhvZCBhcmd1bWVudHMgKFVuaWNvZGUgc3RyaW5ncyBhbmQgY2hhcmFjdGVycykuCisgICBUaGUgZW5jb2RpbmcgYXR0cmlidXRlIGlzIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQgd2luZG93IHdoZW4gYSBzdWJ3aW5kb3cKKyAgIGlzIGNyZWF0ZWQsIGZvciBleGFtcGxlIHdpdGggOm1ldGg6YHdpbmRvdy5zdWJ3aW5gLiBCeSBkZWZhdWx0LCB0aGUgbG9jYWxlCisgICBlbmNvZGluZyBpcyB1c2VkIChzZWUgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2ApLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiB3aW5kb3cuZXJhc2UoKQogCiAgICBDbGVhciB0aGUgd2luZG93LgpAQCAtODU0LDExICs4NzUsMjAgQEAKICAgIHVudGlsIGEga2V5IGlzIHByZXNzZWQuCiAKIAorLi4gbWV0aG9kOjogd2luZG93LmdldF93Y2goW3ksIHhdKQorCisgICBHZXQgYSB3aWRlIGNoYXJhY3Rlci4gUmV0dXJuIGEgY2hhcmFjdGVyIGZvciBtb3N0IGtleXMsIG9yIGFuIGludGVnZXIgZm9yCisgICBmdW5jdGlvbiBrZXlzLCBrZXlwYWQga2V5cywgYW5kIG90aGVyIHNwZWNpYWwga2V5cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogd2luZG93LmdldGtleShbeSwgeF0pCiAKICAgIEdldCBhIGNoYXJhY3RlciwgcmV0dXJuaW5nIGEgc3RyaW5nIGluc3RlYWQgb2YgYW4gaW50ZWdlciwgYXMgOm1ldGg6YGdldGNoYAotICAgZG9lcy4gRnVuY3Rpb24ga2V5cywga2V5cGFkIGtleXMgYW5kIHNvIG9uIHJldHVybiBhIG11bHRpYnl0ZSBzdHJpbmcgY29udGFpbmluZwotICAgdGhlIGtleSBuYW1lLiAgSW4gbm8tZGVsYXkgbW9kZSwgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpZiB0aGVyZSBpcyBubyBpbnB1dC4KKyAgIGRvZXMuIEZ1bmN0aW9uIGtleXMsIGtleXBhZCBrZXlzIGFuZCBvdGhlciBzcGVjaWFsIGtleXMgcmV0dXJuIGEgbXVsdGlieXRlCisgICBzdHJpbmcgY29udGFpbmluZyB0aGUga2V5IG5hbWUuICBJbiBuby1kZWxheSBtb2RlLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGlmCisgICB0aGVyZSBpcyBubyBpbnB1dC4KIAogCiAuLiBtZXRob2Q6OiB3aW5kb3cuZ2V0bWF4eXgoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGF0eXBlcy5yc3QKaW5kZXggNmI0YTcxYS4uZDAzODJlMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGF0YXR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRhdHlwZXMucnN0CkBAIC0yMSwxMSArMjEsMTAgQEAKICAgIGRhdGV0aW1lLnJzdAogICAgY2FsZW5kYXIucnN0CiAgICBjb2xsZWN0aW9ucy5yc3QKKyAgIGNvbGxlY3Rpb25zLmFiYy5yc3QKICAgIGhlYXBxLnJzdAogICAgYmlzZWN0LnJzdAogICAgYXJyYXkucnN0Ci0gICBzY2hlZC5yc3QKLSAgIHF1ZXVlLnJzdAogICAgd2Vha3JlZi5yc3QKICAgIHR5cGVzLnJzdAogICAgY29weS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdCBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAppbmRleCA4OGZhMDFjLi43YzBhYWMzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CkBAIC00MDQsMTIgKzQwNCwxOSBAQAogLi4gY2xhc3NtZXRob2Q6OiBkYXRlLmZyb210aW1lc3RhbXAodGltZXN0YW1wKQogCiAgICBSZXR1cm4gdGhlIGxvY2FsIGRhdGUgY29ycmVzcG9uZGluZyB0byB0aGUgUE9TSVggdGltZXN0YW1wLCBzdWNoIGFzIGlzIHJldHVybmVkCi0gICBieSA6ZnVuYzpgdGltZS50aW1lYC4gIFRoaXMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dAotICAgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMgOmM6ZnVuYzpgbG9jYWx0aW1lYCBmdW5jdGlvbi4KKyAgIGJ5IDpmdW5jOmB0aW1lLnRpbWVgLiAgVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMgb3V0CisgICBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBsb2NhbHRpbWVgIGZ1bmN0aW9uLAorICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbHVyZS4KICAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgZnJvbSAxOTcwIHRocm91Z2ggMjAzOC4gIE5vdGUKICAgIHRoYXQgb24gbm9uLVBPU0lYIHN5c3RlbXMgdGhhdCBpbmNsdWRlIGxlYXAgc2Vjb25kcyBpbiB0aGVpciBub3Rpb24gb2YgYQogICAgdGltZXN0YW1wLCBsZWFwIHNlY29uZHMgYXJlIGlnbm9yZWQgYnkgOm1ldGg6YGZyb210aW1lc3RhbXBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiB0aGUgdGltZXN0YW1wCisgICAgICBpcyBvdXQgb2YgdGhlIHJhbmdlIG9mIHZhbHVlcyBzdXBwb3J0ZWQgYnkgdGhlIHBsYXRmb3JtIEMKKyAgICAgIDpjOmZ1bmM6YGxvY2FsdGltZWAgZnVuY3Rpb24uIFJhaXNlIDpleGM6YE9TRXJyb3JgIGluc3RlYWQgb2YKKyAgICAgIDpleGM6YFZhbHVlRXJyb3JgIG9uIDpjOmZ1bmM6YGxvY2FsdGltZWAgZmFpbHVyZS4KKwogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGUuZnJvbW9yZGluYWwob3JkaW5hbCkKIApAQCAtNzEzLDIzICs3MjAsNDQgQEAKICAgIGVxdWl2YWxlbnQgdG8KICAgIGBgdHouZnJvbXV0YyhkYXRldGltZS51dGNmcm9tdGltZXN0YW1wKHRpbWVzdGFtcCkucmVwbGFjZSh0emluZm89dHopKWBgLgogCi0gICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgLCBpZiB0aGUgdGltZXN0YW1wIGlzIG91dCBvZgorICAgOm1ldGg6YGZyb210aW1lc3RhbXBgIG1heSByYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcyBvdXQgb2YKICAgIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGxvY2FsdGltZWAgb3IKLSAgIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb25zLiAgSXQncyBjb21tb24gZm9yIHRoaXMgdG8gYmUgcmVzdHJpY3RlZCB0byB5ZWFycyBpbgorICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbnMsIGFuZCA6ZXhjOmBPU0Vycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yCisgICA6YzpmdW5jOmBnbXRpbWVgIGZhaWx1cmUuCisgICBJdCdzIGNvbW1vbiBmb3IgdGhpcyB0byBiZSByZXN0cmljdGVkIHRvIHllYXJzIGluCiAgICAxOTcwIHRocm91Z2ggMjAzOC4gTm90ZSB0aGF0IG9uIG5vbi1QT1NJWCBzeXN0ZW1zIHRoYXQgaW5jbHVkZSBsZWFwIHNlY29uZHMgaW4KICAgIHRoZWlyIG5vdGlvbiBvZiBhIHRpbWVzdGFtcCwgbGVhcCBzZWNvbmRzIGFyZSBpZ25vcmVkIGJ5IDptZXRoOmBmcm9tdGltZXN0YW1wYCwKICAgIGFuZCB0aGVuIGl0J3MgcG9zc2libGUgdG8gaGF2ZSB0d28gdGltZXN0YW1wcyBkaWZmZXJpbmcgYnkgYSBzZWNvbmQgdGhhdCB5aWVsZAogICAgaWRlbnRpY2FsIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3RzLiBTZWUgYWxzbyA6bWV0aDpgdXRjZnJvbXRpbWVzdGFtcGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9ucy4gUmFpc2UgOmV4YzpgT1NFcnJvcmAKKyAgICAgIGluc3RlYWQgb2YgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgbG9jYWx0aW1lYCBvciA6YzpmdW5jOmBnbXRpbWVgCisgICAgICBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCh0aW1lc3RhbXApCiAKICAgIFJldHVybiB0aGUgVVRDIDpjbGFzczpgLmRhdGV0aW1lYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCB0aW1lc3RhbXAsIHdpdGgKLSAgIDphdHRyOmB0emluZm9gIGBgTm9uZWBgLiBUaGlzIG1heSByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaWYgdGhlIHRpbWVzdGFtcCBpcwotICAgb3V0IG9mIHRoZSByYW5nZSBvZiB2YWx1ZXMgc3VwcG9ydGVkIGJ5IHRoZSBwbGF0Zm9ybSBDIDpjOmZ1bmM6YGdtdGltZWAgZnVuY3Rpb24uCisgICA6YXR0cjpgdHppbmZvYCBgYE5vbmVgYC4gVGhpcyBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAsIGlmIHRoZSB0aW1lc3RhbXAgaXMKKyAgIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBnbXRpbWVgIGZ1bmN0aW9uLAorICAgYW5kIDpleGM6YE9TRXJyb3JgIG9uIDpjOmZ1bmM6YGdtdGltZWAgZmFpbHVyZS4KICAgIEl0J3MgY29tbW9uIGZvciB0aGlzIHRvIGJlIHJlc3RyaWN0ZWQgdG8geWVhcnMgaW4gMTk3MCB0aHJvdWdoIDIwMzguIFNlZSBhbHNvCiAgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAuCiAKKyAgIE9uIHRoZSBQT1NJWCBjb21wbGlhbnQgcGxhdGZvcm1zLCBgYHV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKWBgCisgICBpcyBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbjo6CisKKyAgICAgZGF0ZXRpbWUoMTk3MCwgMSwgMSkgKyB0aW1lZGVsdGEoc2Vjb25kcz10aW1lc3RhbXApCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSYWlzZSA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpbnN0ZWFkIG9mIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB0aW1lc3RhbXAKKyAgICAgIGlzIG91dCBvZiB0aGUgcmFuZ2Ugb2YgdmFsdWVzIHN1cHBvcnRlZCBieSB0aGUgcGxhdGZvcm0gQworICAgICAgOmM6ZnVuYzpgZ210aW1lYCBmdW5jdGlvbi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaW5zdGVhZCBvZgorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAgb24gOmM6ZnVuYzpgZ210aW1lYCBmYWlsdXJlLgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuZnJvbW9yZGluYWwob3JkaW5hbCkKIApAQCAtODczLDEzICs5MDEsMjAgQEAKICAgICpkYXRldGltZTEqIGlzIGNvbnNpZGVyZWQgbGVzcyB0aGFuICpkYXRldGltZTIqIHdoZW4gKmRhdGV0aW1lMSogcHJlY2VkZXMKICAgICpkYXRldGltZTIqIGluIHRpbWUuCiAKLSAgIElmIG9uZSBjb21wYXJhbmQgaXMgbmFpdmUgYW5kIHRoZSBvdGhlciBpcyBhd2FyZSwgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisgICBJZiBvbmUgY29tcGFyYW5kIGlzIG5haXZlIGFuZCB0aGUgb3RoZXIgaXMgYXdhcmUsIDpleGM6YFR5cGVFcnJvcmAKKyAgIGlzIHJhaXNlZCBpZiBhbiBvcmRlciBjb21wYXJpc29uIGlzIGF0dGVtcHRlZC4gIEZvciBlcXVhbGl0eQorICAgY29tcGFyaXNvbnMsIG5haXZlIGluc3RhbmNlcyBhcmUgbmV2ZXIgZXF1YWwgdG8gYXdhcmUgaW5zdGFuY2VzLgorCiAgICBJZiBib3RoIGNvbXBhcmFuZHMgYXJlIGF3YXJlLCBhbmQgaGF2ZSB0aGUgc2FtZSA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUsIHRoZQogICAgY29tbW9uIDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSBpcyBpZ25vcmVkIGFuZCB0aGUgYmFzZSBkYXRldGltZXMgYXJlCiAgICBjb21wYXJlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUgYW5kIGhhdmUgZGlmZmVyZW50IDphdHRyOmB0emluZm9gCiAgICBhdHRyaWJ1dGVzLCB0aGUgY29tcGFyYW5kcyBhcmUgZmlyc3QgYWRqdXN0ZWQgYnkgc3VidHJhY3RpbmcgdGhlaXIgVVRDCiAgICBvZmZzZXRzIChvYnRhaW5lZCBmcm9tIGBgc2VsZi51dGNvZmZzZXQoKWBgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgZGF0ZXRpbWVgCisgICAgICBpbnN0YW5jZXMgZG9uJ3QgcmFpc2UgOmV4YzpgVHlwZUVycm9yYC4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIEluIG9yZGVyIHRvIHN0b3AgY29tcGFyaXNvbiBmcm9tIGZhbGxpbmcgYmFjayB0byB0aGUgZGVmYXVsdCBzY2hlbWUgb2YgY29tcGFyaW5nCkBAIC05MjIsMTcgKzk1NywyMiBAQAogICAgZGF0ZXRpbWUgd2l0aCBubyBjb252ZXJzaW9uIG9mIGRhdGUgYW5kIHRpbWUgZGF0YS4KIAogCi0uLiBtZXRob2Q6OiBkYXRldGltZS5hc3RpbWV6b25lKHR6KQorLi4gbWV0aG9kOjogZGF0ZXRpbWUuYXN0aW1lem9uZSh0ej1Ob25lKQogCi0gICBSZXR1cm4gYSA6Y2xhc3M6YC5kYXRldGltZWAgb2JqZWN0IHdpdGggbmV3IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSAqdHoqLAorICAgUmV0dXJuIGEgOmNsYXNzOmBkYXRldGltZWAgb2JqZWN0IHdpdGggbmV3IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZSAqdHoqLAogICAgYWRqdXN0aW5nIHRoZSBkYXRlIGFuZCB0aW1lIGRhdGEgc28gdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBVVEMgdGltZSBhcwogICAgKnNlbGYqLCBidXQgaW4gKnR6KidzIGxvY2FsIHRpbWUuCiAKLSAgICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cworICAgSWYgcHJvdmlkZWQsICp0eiogbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcywgYW5kIGl0cwogICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgKnNlbGYqIG11c3QKICAgIGJlIGF3YXJlIChgYHNlbGYudHppbmZvYGAgbXVzdCBub3QgYmUgYGBOb25lYGAsIGFuZCBgYHNlbGYudXRjb2Zmc2V0KClgYCBtdXN0CiAgICBub3QgcmV0dXJuIGBgTm9uZWBgKS4KIAorICAgSWYgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIChvciB3aXRoIGBgdHo9Tm9uZWBgKSB0aGUgc3lzdGVtIGxvY2FsCisgICB0aW1lem9uZSBpcyBhc3N1bWVkLiAgVGhlIGBgdHppbmZvYGAgYXR0cmlidXRlIG9mIHRoZSBjb252ZXJ0ZWQKKyAgIGRhdGV0aW1lIGluc3RhbmNlIHdpbGwgYmUgc2V0IHRvIGFuIGluc3RhbmNlIG9mIDpjbGFzczpgdGltZXpvbmVgCisgICB3aXRoIHRoZSB6b25lIG5hbWUgYW5kIG9mZnNldCBvYnRhaW5lZCBmcm9tIHRoZSBPUy4KKwogICAgSWYgYGBzZWxmLnR6aW5mb2BgIGlzICp0eiosIGBgc2VsZi5hc3RpbWV6b25lKHR6KWBgIGlzIGVxdWFsIHRvICpzZWxmKjogIG5vCiAgICBhZGp1c3RtZW50IG9mIGRhdGUgb3IgdGltZSBkYXRhIGlzIHBlcmZvcm1lZC4gRWxzZSB0aGUgcmVzdWx0IGlzIGxvY2FsCiAgICB0aW1lIGluIHRpbWUgem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKQEAgLTk1OSw2ICs5OTksOSBAQAogICAgICAgICAgICMgQ29udmVydCBmcm9tIFVUQyB0byB0eidzIGxvY2FsIHRpbWUuCiAgICAgICAgICAgcmV0dXJuIHR6LmZyb211dGModXRjKQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnR6KiBub3cgY2FuIGJlIG9taXR0ZWQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudXRjb2Zmc2V0KCkKIApAQCAtMTAxNSw2ICsxMDU4LDM5IEBACiAgICBSZXR1cm4gdGhlIHByb2xlcHRpYyBHcmVnb3JpYW4gb3JkaW5hbCBvZiB0aGUgZGF0ZS4gIFRoZSBzYW1lIGFzCiAgICBgYHNlbGYuZGF0ZSgpLnRvb3JkaW5hbCgpYGAuCiAKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLnRpbWVzdGFtcCgpCisKKyAgIFJldHVybiBQT1NJWCB0aW1lc3RhbXAgY29ycmVzcG9uZGluZyB0byB0aGUgOmNsYXNzOmBkYXRldGltZWAKKyAgIGluc3RhbmNlLiAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDpjbGFzczpgZmxvYXRgIHNpbWlsYXIgdG8gdGhhdAorICAgcmV0dXJuZWQgYnkgOmZ1bmM6YHRpbWUudGltZWAuCisKKyAgIE5haXZlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlcyBhcmUgYXNzdW1lZCB0byByZXByZXNlbnQgbG9jYWwKKyAgIHRpbWUgYW5kIHRoaXMgbWV0aG9kIHJlbGllcyBvbiB0aGUgcGxhdGZvcm0gQyA6YzpmdW5jOmBta3RpbWVgCisgICBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBjb252ZXJzaW9uLiAgU2luY2UgOmNsYXNzOmBkYXRldGltZWAKKyAgIHN1cHBvcnRzIHdpZGVyIHJhbmdlIG9mIHZhbHVlcyB0aGFuIDpjOmZ1bmM6YG1rdGltZWAgb24gbWFueQorICAgcGxhdGZvcm1zLCB0aGlzIG1ldGhvZCBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAgZm9yIHRpbWVzIGZhcgorICAgaW4gdGhlIHBhc3Qgb3IgZmFyIGluIHRoZSBmdXR1cmUuCisKKyAgIEZvciBhd2FyZSA6Y2xhc3M6YGRhdGV0aW1lYCBpbnN0YW5jZXMsIHRoZSByZXR1cm4gdmFsdWUgaXMgY29tcHV0ZWQKKyAgIGFzOjoKKworICAgICAgKGR0IC0gZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykpLnRvdGFsX3NlY29uZHMoKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoZXJlIGlzIG5vIG1ldGhvZCB0byBvYnRhaW4gdGhlIFBPU0lYIHRpbWVzdGFtcCBkaXJlY3RseSBmcm9tIGEKKyAgICAgIG5haXZlIDpjbGFzczpgZGF0ZXRpbWVgIGluc3RhbmNlIHJlcHJlc2VudGluZyBVVEMgdGltZS4gIElmIHlvdXIKKyAgICAgIGFwcGxpY2F0aW9uIHVzZXMgdGhpcyBjb252ZW50aW9uIGFuZCB5b3VyIHN5c3RlbSB0aW1lem9uZSBpcyBub3QKKyAgICAgIHNldCB0byBVVEMsIHlvdSBjYW4gb2J0YWluIHRoZSBQT1NJWCB0aW1lc3RhbXAgYnkgc3VwcGx5aW5nCisgICAgICBgYHR6aW5mbz10aW1lem9uZS51dGNgYDo6CisKKyAgICAgICAgIHRpbWVzdGFtcCA9IGR0LnJlcGxhY2UodHppbmZvPXRpbWV6b25lLnV0YykudGltZXN0YW1wKCkKKworICAgICAgb3IgYnkgY2FsY3VsYXRpbmcgdGhlIHRpbWVzdGFtcCBkaXJlY3RseTo6CisKKyAgICAgICAgIHRpbWVzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEpKSAvIHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLndlZWtkYXkoKQogCkBAIC0xMjU0LDcgKzEzMzAsMTAgQEAKIAogKiBjb21wYXJpc29uIG9mIDpjbGFzczpgLnRpbWVgIHRvIDpjbGFzczpgLnRpbWVgLCB3aGVyZSAqYSogaXMgY29uc2lkZXJlZCBsZXNzCiAgIHRoYW4gKmIqIHdoZW4gKmEqIHByZWNlZGVzICpiKiBpbiB0aW1lLiAgSWYgb25lIGNvbXBhcmFuZCBpcyBuYWl2ZSBhbmQgdGhlIG90aGVyCi0gIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUsIGFuZCBoYXZlCisgIGlzIGF3YXJlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiBhbiBvcmRlciBjb21wYXJpc29uIGlzIGF0dGVtcHRlZC4gRm9yIGVxdWFsaXR5CisgIGNvbXBhcmlzb25zLCBuYWl2ZSBpbnN0YW5jZXMgYXJlIG5ldmVyIGVxdWFsIHRvIGF3YXJlIGluc3RhbmNlcy4KKworICBJZiBib3RoIGNvbXBhcmFuZHMgYXJlIGF3YXJlLCBhbmQgaGF2ZQogICB0aGUgc2FtZSA6YXR0cjpgdHppbmZvYCBhdHRyaWJ1dGUsIHRoZSBjb21tb24gOmF0dHI6YHR6aW5mb2AgYXR0cmlidXRlIGlzCiAgIGlnbm9yZWQgYW5kIHRoZSBiYXNlIHRpbWVzIGFyZSBjb21wYXJlZC4gIElmIGJvdGggY29tcGFyYW5kcyBhcmUgYXdhcmUgYW5kCiAgIGhhdmUgZGlmZmVyZW50IDphdHRyOmB0emluZm9gIGF0dHJpYnV0ZXMsIHRoZSBjb21wYXJhbmRzIGFyZSBmaXJzdCBhZGp1c3RlZCBieQpAQCAtMTI2NCw2ICsxMzQzLDEwIEBACiAgIGRpZmZlcmVudCB0eXBlLCA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCB1bmxlc3MgdGhlIGNvbXBhcmlzb24gaXMgYGA9PWBgIG9yCiAgIGBgIT1gYC4gIFRoZSBsYXR0ZXIgY2FzZXMgcmV0dXJuIDpjb25zdDpgRmFsc2VgIG9yIDpjb25zdDpgVHJ1ZWAsIHJlc3BlY3RpdmVseS4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICBFcXVhbGl0eSBjb21wYXJpc29ucyBiZXR3ZWVuIG5haXZlIGFuZCBhd2FyZSA6Y2xhc3M6YHRpbWVgIGluc3RhbmNlcworICAgICBkb24ndCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgLgorCiAqIGhhc2gsIHVzZSBhcyBkaWN0IGtleQogCiAqIGVmZmljaWVudCBwaWNrbGluZwpAQCAtMTU4NywxMSArMTY3MCwxMiBAQAogOmNsYXNzOmB0aW1lem9uZWAgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotQSA6Y2xhc3M6YHRpbWV6b25lYCBvYmplY3QgcmVwcmVzZW50cyBhIHRpbWV6b25lIHRoYXQgaXMgZGVmaW5lZCBieSBhCi1maXhlZCBvZmZzZXQgZnJvbSBVVEMuICBOb3RlIHRoYXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbm5vdCBiZSB1c2VkCi10byByZXByZXNlbnQgdGltZXpvbmUgaW5mb3JtYXRpb24gaW4gdGhlIGxvY2F0aW9ucyB3aGVyZSBkaWZmZXJlbnQKLW9mZnNldHMgYXJlIHVzZWQgaW4gZGlmZmVyZW50IGRheXMgb2YgdGhlIHllYXIgb3Igd2hlcmUgaGlzdG9yaWNhbAotY2hhbmdlcyBoYXZlIGJlZW4gbWFkZSB0byBjaXZpbCB0aW1lLgorVGhlIDpjbGFzczpgdGltZXpvbmVgIGNsYXNzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmB0emluZm9gLCBlYWNoCitpbnN0YW5jZSBvZiB3aGljaCByZXByZXNlbnRzIGEgdGltZXpvbmUgZGVmaW5lZCBieSBhIGZpeGVkIG9mZnNldCBmcm9tCitVVEMuICBOb3RlIHRoYXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzIGNhbm5vdCBiZSB1c2VkIHRvIHJlcHJlc2VudAordGltZXpvbmUgaW5mb3JtYXRpb24gaW4gdGhlIGxvY2F0aW9ucyB3aGVyZSBkaWZmZXJlbnQgb2Zmc2V0cyBhcmUgdXNlZAoraW4gZGlmZmVyZW50IGRheXMgb2YgdGhlIHllYXIgb3Igd2hlcmUgaGlzdG9yaWNhbCBjaGFuZ2VzIGhhdmUgYmVlbgorbWFkZSB0byBjaXZpbCB0aW1lLgogCiAKIC4uIGNsYXNzOjogdGltZXpvbmUob2Zmc2V0WywgbmFtZV0pCkBAIC0xNzYwLDggKzE4NDQsNyBAQAogfCAgICAgICAgICAgfCBkZWNpbWFsIG51bWJlciBbMDAsOTldLiAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIHwgXCg1KSAgfAotfCAgICAgICAgICAgfCBudW1iZXIgWzAwMDEsOTk5OV0gKHN0cnB0aW1lKSwgfCAgICAgICB8Ci18ICAgICAgICAgICB8IFsxMDAwLDk5OTldIChzdHJmdGltZSkuICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIFswMDAxLDk5OTldLiAgICAgICAgICAgIHwgICAgICAgfAogKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiB8IGBgJXpgYCAgICB8IFVUQyBvZmZzZXQgaW4gdGhlIGZvcm0gK0hITU0gICB8IFwoNikgIHwKIHwgICAgICAgICAgIHwgb3IgLUhITU0gKGVtcHR5IHN0cmluZyBpZiB0aGUgIHwgICAgICAgfApAQCAtMTc5NSwxMCArMTg3OCw3IEBACiAgICBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgogCiAoNSkKLSAgIEZvciB0ZWNobmljYWwgcmVhc29ucywgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2QgZG9lcyBub3Qgc3VwcG9ydAotICAgZGF0ZXMgYmVmb3JlIHllYXIgMTAwMDogYGB0LnN0cmZ0aW1lKGZvcm1hdClgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gYGB0LnllYXIgPCAxMDAwYGAgZXZlbiBpZiBgYGZvcm1hdGBgIGRvZXMKLSAgIG5vdCBjb250YWluIGBgJVlgYCBkaXJlY3RpdmUuICBUaGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QgY2FuCisgICBUaGUgOm1ldGg6YHN0cnB0aW1lYCBtZXRob2QgY2FuCiAgICBwYXJzZSB5ZWFycyBpbiB0aGUgZnVsbCBbMSwgOTk5OV0gcmFuZ2UsIGJ1dCB5ZWFycyA8IDEwMDAgbXVzdCBiZQogICAgemVyby1maWxsZWQgdG8gNC1kaWdpdCB3aWR0aC4KIApAQCAtMTgwNiw2ICsxODg2LDEwIEBACiAgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucywgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2Qgd2FzIHJlc3RyaWN0ZWQgdG8KICAgICAgIHllYXJzID49IDE5MDAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBJbiB2ZXJzaW9uIDMuMiwgOm1ldGg6YHN0cmZ0aW1lYCBtZXRob2Qgd2FzIHJlc3RyaWN0ZWQgdG8KKyAgICAgIHllYXJzID49IDEwMDAuCisKICg2KQogICAgRm9yIGV4YW1wbGUsIGlmIDptZXRoOmB1dGNvZmZzZXRgIHJldHVybnMgYGB0aW1lZGVsdGEoaG91cnM9LTMsIG1pbnV0ZXM9LTMwKWBgLAogICAgYGAlemBgIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyBgYCctMDMzMCdgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlYnVnLnJzdCBiL0RvYy9saWJyYXJ5L2RlYnVnLnJzdAppbmRleCBiMmVlNGZhLi5jNjlmYjFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWJ1Zy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGVidWcucnN0CkBAIC0xMCw3ICsxMCw4IEBACiAuLiB0b2N0cmVlOjoKIAogICAgYmRiLnJzdAorICAgZmF1bHRoYW5kbGVyLnJzdAogICAgcGRiLnJzdAogICAgcHJvZmlsZS5yc3QKICAgIHRpbWVpdC5yc3QKLSAgIHRyYWNlLnJzdApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyAgIHRyYWNlLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAppbmRleCBlZjhiNDNmLi40YTJiMmQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kZWNpbWFsLnJzdApAQCAtOSw2ICs5LDcgQEAKIC4uIG1vZHVsZWF1dGhvcjo6IFJheW1vbmQgSGV0dGluZ2VyIDxweXRob24gYXQgcmNuLmNvbT4KIC4uIG1vZHVsZWF1dGhvcjo6IEFhaHogPGFhaHogYXQgcG9ib3guY29tPgogLi4gbW9kdWxlYXV0aG9yOjogVGltIFBldGVycyA8dGltLm9uZSBhdCBjb21jYXN0Lm5ldD4KKy4uIG1vZHVsZWF1dGhvcjo6IFN0ZWZhbiBLcmFoIDxza3JhaCBhdCBieXRlcmVlZi5vcmc+CiAuLiBzZWN0aW9uYXV0aG9yOjogUmF5bW9uZCBELiBIZXR0aW5nZXIgPHB5dGhvbiBhdCByY24uY29tPgogCiAuLiBpbXBvcnQgbW9kdWxlcyBmb3IgdGVzdGluZyBpbmxpbmUgZG9jdGVzdHMgd2l0aCB0aGUgU3BoaW54IGRvY3Rlc3QgYnVpbGRlcgpAQCAtMjAsOCArMjEsOSBAQAogICAgIyBtYWtlIHN1cmUgZWFjaCBncm91cCBnZXRzIGEgZnJlc2ggY29udGV4dAogICAgc2V0Y29udGV4dChDb250ZXh0KCkpCiAKLVRoZSA6bW9kOmBkZWNpbWFsYCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgZGVjaW1hbCBmbG9hdGluZyBwb2ludAotYXJpdGhtZXRpYy4gIEl0IG9mZmVycyBzZXZlcmFsIGFkdmFudGFnZXMgb3ZlciB0aGUgOmNsYXNzOmBmbG9hdGAgZGF0YXR5cGU6CitUaGUgOm1vZDpgZGVjaW1hbGAgbW9kdWxlIHByb3ZpZGVzIHN1cHBvcnQgZm9yIGZhc3QgY29ycmVjdGx5LXJvdW5kZWQKK2RlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4gSXQgb2ZmZXJzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVyIHRoZQorOmNsYXNzOmBmbG9hdGAgZGF0YXR5cGU6CiAKICogRGVjaW1hbCAiaXMgYmFzZWQgb24gYSBmbG9hdGluZy1wb2ludCBtb2RlbCB3aGljaCB3YXMgZGVzaWduZWQgd2l0aCBwZW9wbGUKICAgaW4gbWluZCwgYW5kIG5lY2Vzc2FyaWx5IGhhcyBhIHBhcmFtb3VudCBndWlkaW5nIHByaW5jaXBsZSAtLSBjb21wdXRlcnMgbXVzdApAQCAtOTIsNyArOTQsNyBAQAogY29uc2lkZXJlZCBhcyBpbmZvcm1hdGlvbmFsLCBvciB0cmVhdGVkIGFzIGV4Y2VwdGlvbnMuIFRoZSBzaWduYWxzIGluIHRoZQogZGVjaW1hbCBtb2R1bGUgYXJlOiA6Y29uc3Q6YENsYW1wZWRgLCA6Y29uc3Q6YEludmFsaWRPcGVyYXRpb25gLAogOmNvbnN0OmBEaXZpc2lvbkJ5WmVyb2AsIDpjb25zdDpgSW5leGFjdGAsIDpjb25zdDpgUm91bmRlZGAsIDpjb25zdDpgU3Vibm9ybWFsYCwKLTpjb25zdDpgT3ZlcmZsb3dgLCBhbmQgOmNvbnN0OmBVbmRlcmZsb3dgLgorOmNvbnN0OmBPdmVyZmxvd2AsIDpjb25zdDpgVW5kZXJmbG93YCBhbmQgOmNvbnN0OmBGbG9hdE9wZXJhdGlvbmAuCiAKIEZvciBlYWNoIHNpZ25hbCB0aGVyZSBpcyBhIGZsYWcgYW5kIGEgdHJhcCBlbmFibGVyLiAgV2hlbiBhIHNpZ25hbCBpcwogZW5jb3VudGVyZWQsIGl0cyBmbGFnIGlzIHNldCB0byBvbmUsIHRoZW4sIGlmIHRoZSB0cmFwIGVuYWJsZXIgaXMKQEAgLTEyMiw3ICsxMjQsNyBAQAogCiAgICA+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCiAgICA+Pj4gZ2V0Y29udGV4dCgpCi0gICBDb250ZXh0KHByZWM9MjgsIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5OTk5LCBFbWF4PTk5OTk5OTk5OSwKKyAgIENvbnRleHQocHJlYz0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bXSwgdHJhcHM9W092ZXJmbG93LCBEaXZpc2lvbkJ5WmVybywKICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbl0pCiAKQEAgLTEzMiw3ICsxMzQsNyBAQAogQ29uc3RydWN0aW9uIGZyb20gYW4gaW50ZWdlciBvciBhIGZsb2F0IHBlcmZvcm1zIGFuIGV4YWN0IGNvbnZlcnNpb24gb2YgdGhlCiB2YWx1ZSBvZiB0aGF0IGludGVnZXIgb3IgZmxvYXQuICBEZWNpbWFsIG51bWJlcnMgaW5jbHVkZSBzcGVjaWFsIHZhbHVlcyBzdWNoIGFzCiA6Y29uc3Q6YE5hTmAgd2hpY2ggc3RhbmRzIGZvciAiTm90IGEgbnVtYmVyIiwgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlCi06Y29uc3Q6YEluZmluaXR5YCwgYW5kIDpjb25zdDpgLTBgLgorOmNvbnN0OmBJbmZpbml0eWAsIGFuZCA6Y29uc3Q6YC0wYDo6CiAKICAgID4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDI4CiAgICA+Pj4gRGVjaW1hbCgxMCkKQEAgLTE1Miw2ICsxNTQsMjUgQEAKICAgID4+PiBEZWNpbWFsKCctSW5maW5pdHknKQogICAgRGVjaW1hbCgnLUluZmluaXR5JykKIAorSWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYCBzaWduYWwgaXMgdHJhcHBlZCwgYWNjaWRlbnRhbCBtaXhpbmcgb2YKK2RlY2ltYWxzIGFuZCBmbG9hdHMgaW4gY29uc3RydWN0b3JzIG9yIG9yZGVyaW5nIGNvbXBhcmlzb25zIHJhaXNlcworYW4gZXhjZXB0aW9uOjoKKworICAgPj4+IGMgPSBnZXRjb250ZXh0KCkKKyAgID4+PiBjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgID4+PiBEZWNpbWFsKDMuMTQpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgZGVjaW1hbC5GbG9hdE9wZXJhdGlvbjogWzxjbGFzcyAnZGVjaW1hbC5GbG9hdE9wZXJhdGlvbic+XQorICAgPj4+IERlY2ltYWwoJzMuNScpIDwgMy43CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkZsb2F0T3BlcmF0aW9uOiBbPGNsYXNzICdkZWNpbWFsLkZsb2F0T3BlcmF0aW9uJz5dCisgICA+Pj4gRGVjaW1hbCgnMy41JykgPT0gMy41CisgICBUcnVlCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCiBUaGUgc2lnbmlmaWNhbmNlIG9mIGEgbmV3IERlY2ltYWwgaXMgZGV0ZXJtaW5lZCBzb2xlbHkgYnkgdGhlIG51bWJlciBvZiBkaWdpdHMKIGlucHV0LiAgQ29udGV4dCBwcmVjaXNpb24gYW5kIHJvdW5kaW5nIG9ubHkgY29tZSBpbnRvIHBsYXkgZHVyaW5nIGFyaXRobWV0aWMKIG9wZXJhdGlvbnMuCkBAIC0xNjksNiArMTkwLDE2IEBACiAgICA+Pj4gRGVjaW1hbCgnMy4xNDE1OTI2NTM1JykgKyBEZWNpbWFsKCcyLjcxODI4MTgyODUnKQogICAgRGVjaW1hbCgnNS44NTk4OCcpCiAKK0lmIHRoZSBpbnRlcm5hbCBsaW1pdHMgb2YgdGhlIEMgdmVyc2lvbiBhcmUgZXhjZWVkZWQsIGNvbnN0cnVjdGluZworYSBkZWNpbWFsIHJhaXNlcyA6Y2xhc3M6YEludmFsaWRPcGVyYXRpb25gOjoKKworICAgPj4+IERlY2ltYWwoIjFlOTk5OTk5OTk5OTk5OTk5OTk5OSIpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICBkZWNpbWFsLkludmFsaWRPcGVyYXRpb246IFs8Y2xhc3MgJ2RlY2ltYWwuSW52YWxpZE9wZXJhdGlvbic+XQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworCiBEZWNpbWFscyBpbnRlcmFjdCB3ZWxsIHdpdGggbXVjaCBvZiB0aGUgcmVzdCBvZiBQeXRob24uICBIZXJlIGlzIGEgc21hbGwgZGVjaW1hbAogZmxvYXRpbmcgcG9pbnQgZmx5aW5nIGNpcmN1czoKIApAQCAtMjQ0LDcgKzI3NSw3IEBACiAgICBEZWNpbWFsKCcwLjE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NzE0Mjg1NycpCiAKICAgID4+PiBFeHRlbmRlZENvbnRleHQKLSAgIENvbnRleHQocHJlYz05LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIEVtaW49LTk5OTk5OTk5OSwgRW1heD05OTk5OTk5OTksCisgICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTksIEVtYXg9OTk5OTk5LAogICAgICAgICAgICBjYXBpdGFscz0xLCBjbGFtcD0wLCBmbGFncz1bXSwgdHJhcHM9W10pCiAgICA+Pj4gc2V0Y29udGV4dChFeHRlbmRlZENvbnRleHQpCiAgICA+Pj4gRGVjaW1hbCgxKSAvIERlY2ltYWwoNykKQEAgLTI2OSw3ICszMDAsNyBAQAogICAgPj4+IERlY2ltYWwoMzU1KSAvIERlY2ltYWwoMTEzKQogICAgRGVjaW1hbCgnMy4xNDE1OTI5MicpCiAgICA+Pj4gZ2V0Y29udGV4dCgpCi0gICBDb250ZXh0KHByZWM9OSwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBFbWluPS05OTk5OTk5OTksIEVtYXg9OTk5OTk5OTk5LAorICAgQ29udGV4dChwcmVjPTksIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgRW1pbj0tOTk5OTk5LCBFbWF4PTk5OTk5OSwKICAgICAgICAgICAgY2FwaXRhbHM9MSwgY2xhbXA9MCwgZmxhZ3M9W0luZXhhY3QsIFJvdW5kZWRdLCB0cmFwcz1bXSkKIAogVGhlICpmbGFncyogZW50cnkgc2hvd3MgdGhhdCB0aGUgcmF0aW9uYWwgYXBwcm94aW1hdGlvbiB0byA6Y29uc3Q6YFBpYCB3YXMKQEAgLTM1OCw2ICszODksMTAgQEAKICAgICAgIFRoZSBhcmd1bWVudCB0byB0aGUgY29uc3RydWN0b3IgaXMgbm93IHBlcm1pdHRlZCB0byBiZSBhIDpjbGFzczpgZmxvYXRgCiAgICAgICBpbnN0YW5jZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpjbGFzczpgZmxvYXRgIGFyZ3VtZW50cyByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIDpleGM6YEZsb2F0T3BlcmF0aW9uYAorICAgICAgdHJhcCBpcyBzZXQuIEJ5IGRlZmF1bHQgdGhlIHRyYXAgaXMgb2ZmLgorCiAgICBEZWNpbWFsIGZsb2F0aW5nIHBvaW50IG9iamVjdHMgc2hhcmUgbWFueSBwcm9wZXJ0aWVzIHdpdGggdGhlIG90aGVyIGJ1aWx0LWluCiAgICBudW1lcmljIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBmbG9hdGAgYW5kIDpjbGFzczpgaW50YC4gIEFsbCBvZiB0aGUgdXN1YWwgbWF0aAogICAgb3BlcmF0aW9ucyBhbmQgc3BlY2lhbCBtZXRob2RzIGFwcGx5LiAgTGlrZXdpc2UsIGRlY2ltYWwgb2JqZWN0cyBjYW4gYmUKQEAgLTcwMiw2ICs3MzcsMTEgQEAKICAgICAgIHJlc3VsdGluZyBleHBvbmVudCBpcyBncmVhdGVyIHRoYW4gOmF0dHI6YEVtYXhgIG9yIGxlc3MgdGhhbgogICAgICAgOmF0dHI6YEV0aW55YC4KIAorICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgICAgKndhdGNoZXhwKiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgZnJvbSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbgorICAgICAgICAgYW5kIGlzIG5vdCBwcmVzZW50IGluIHRoZSBDIHZlcnNpb24uIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB2ZXJzaW9uCisgICAgICAgICAzLjQsIHdoZXJlIGl0IGRlZmF1bHRzIHRvIGBgVHJ1ZWBgLgorCiAgICAuLiBtZXRob2Q6OiByYWRpeCgpCiAKICAgICAgIFJldHVybiBgYERlY2ltYWwoMTApYGAsIHRoZSByYWRpeCAoYmFzZSkgaW4gd2hpY2ggdGhlIDpjbGFzczpgRGVjaW1hbGAKQEAgLTg4MCwzOSArOTIwLDMzIEBACiAgICBJbiBzaW5nbGUgdGhyZWFkZWQgZW52aXJvbm1lbnRzLCBpdCBpcyBwcmVmZXJhYmxlIHRvIG5vdCB1c2UgdGhpcyBjb250ZXh0IGF0CiAgICBhbGwuICBJbnN0ZWFkLCBzaW1wbHkgY3JlYXRlIGNvbnRleHRzIGV4cGxpY2l0bHkgYXMgZGVzY3JpYmVkIGJlbG93LgogCi0gICBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIHByZWNpc2lvbj0yOCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9FVkVOLCBhbmQgZW5hYmxlZCB0cmFwcwotICAgZm9yIE92ZXJmbG93LCBJbnZhbGlkT3BlcmF0aW9uLCBhbmQgRGl2aXNpb25CeVplcm8uCisgICBUaGUgZGVmYXVsdCB2YWx1ZXMgYXJlIDphdHRyOmBwcmVjYFwgPVwgOmNvbnN0OmAyOGAsCisgICA6YXR0cjpgcm91bmRpbmdgXCA9XCA6Y29uc3Q6YFJPVU5EX0hBTEZfRVZFTmAsCisgICBhbmQgZW5hYmxlZCB0cmFwcyBmb3IgOmNsYXNzOmBPdmVyZmxvd2AsIDpjbGFzczpgSW52YWxpZE9wZXJhdGlvbmAsIGFuZAorICAgOmNsYXNzOmBEaXZpc2lvbkJ5WmVyb2AuCiAKIEluIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBzdXBwbGllZCBjb250ZXh0cywgbmV3IGNvbnRleHRzIGNhbiBiZSBjcmVhdGVkIHdpdGggdGhlCiA6Y2xhc3M6YENvbnRleHRgIGNvbnN0cnVjdG9yLgogCiAKLS4uIGNsYXNzOjogQ29udGV4dChwcmVjPU5vbmUsIHJvdW5kaW5nPU5vbmUsIHRyYXBzPU5vbmUsIGZsYWdzPU5vbmUsIEVtaW49Tm9uZSwgRW1heD1Ob25lLCBjYXBpdGFscz1Ob25lLCBjbGFtcD1Ob25lKQorLi4gY2xhc3M6OiBDb250ZXh0KHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUpCiAKICAgIENyZWF0ZXMgYSBuZXcgY29udGV4dC4gIElmIGEgZmllbGQgaXMgbm90IHNwZWNpZmllZCBvciBpcyA6Y29uc3Q6YE5vbmVgLCB0aGUKICAgIGRlZmF1bHQgdmFsdWVzIGFyZSBjb3BpZWQgZnJvbSB0aGUgOmNvbnN0OmBEZWZhdWx0Q29udGV4dGAuICBJZiB0aGUgKmZsYWdzKgogICAgZmllbGQgaXMgbm90IHNwZWNpZmllZCBvciBpcyA6Y29uc3Q6YE5vbmVgLCBhbGwgZmxhZ3MgYXJlIGNsZWFyZWQuCiAKLSAgIFRoZSAqcHJlYyogZmllbGQgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgcHJlY2lzaW9uIGZvciBhcml0aG1ldGljCi0gICBvcGVyYXRpb25zIGluIHRoZSBjb250ZXh0LgorICAgKnByZWMqIGlzIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIFs6Y29uc3Q6YDFgLCA6Y29uc3Q6YE1BWF9QUkVDYF0gdGhhdCBzZXRzCisgICB0aGUgcHJlY2lzaW9uIGZvciBhcml0aG1ldGljIG9wZXJhdGlvbnMgaW4gdGhlIGNvbnRleHQuCiAKLSAgIFRoZSAqcm91bmRpbmcqIG9wdGlvbiBpcyBvbmUgb2Y6Ci0KLSAgICogOmNvbnN0OmBST1VORF9DRUlMSU5HYCAodG93YXJkcyA6Y29uc3Q6YEluZmluaXR5YCksCi0gICAqIDpjb25zdDpgUk9VTkRfRE9XTmAgKHRvd2FyZHMgemVybyksCi0gICAqIDpjb25zdDpgUk9VTkRfRkxPT1JgICh0b3dhcmRzIDpjb25zdDpgLUluZmluaXR5YCksCi0gICAqIDpjb25zdDpgUk9VTkRfSEFMRl9ET1dOYCAodG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgdG93YXJkcyB6ZXJvKSwKLSAgICogOmNvbnN0OmBST1VORF9IQUxGX0VWRU5gICh0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlciksCi0gICAqIDpjb25zdDpgUk9VTkRfSEFMRl9VUGAgKHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIGF3YXkgZnJvbSB6ZXJvKSwgb3IKLSAgICogOmNvbnN0OmBST1VORF9VUGAgKGF3YXkgZnJvbSB6ZXJvKS4KLSAgICogOmNvbnN0OmBST1VORF8wNVVQYCAoYXdheSBmcm9tIHplcm8gaWYgbGFzdCBkaWdpdCBhZnRlciByb3VuZGluZyB0b3dhcmRzIHplcm8KLSAgICAgd291bGQgaGF2ZSBiZWVuIDAgb3IgNTsgb3RoZXJ3aXNlIHRvd2FyZHMgemVybykKKyAgIFRoZSAqcm91bmRpbmcqIG9wdGlvbiBpcyBvbmUgb2YgdGhlIGNvbnN0YW50cyBsaXN0ZWQgaW4gdGhlIHNlY3Rpb24KKyAgIGBSb3VuZGluZyBNb2Rlc2BfLgogCiAgICBUaGUgKnRyYXBzKiBhbmQgKmZsYWdzKiBmaWVsZHMgbGlzdCBhbnkgc2lnbmFscyB0byBiZSBzZXQuIEdlbmVyYWxseSwgbmV3CiAgICBjb250ZXh0cyBzaG91bGQgb25seSBzZXQgdHJhcHMgYW5kIGxlYXZlIHRoZSBmbGFncyBjbGVhci4KIAogICAgVGhlICpFbWluKiBhbmQgKkVtYXgqIGZpZWxkcyBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgb3V0ZXIgbGltaXRzIGFsbG93YWJsZQotICAgZm9yIGV4cG9uZW50cy4KKyAgIGZvciBleHBvbmVudHMuICpFbWluKiBtdXN0IGJlIGluIHRoZSByYW5nZSBbOmNvbnN0OmBNSU5fRU1JTmAsIDpjb25zdDpgMGBdLAorICAgKkVtYXgqIGluIHRoZSByYW5nZSBbOmNvbnN0OmAwYCwgOmNvbnN0OmBNQVhfRU1BWGBdLgogCiAgICBUaGUgKmNhcGl0YWxzKiBmaWVsZCBpcyBlaXRoZXIgOmNvbnN0OmAwYCBvciA6Y29uc3Q6YDFgICh0aGUgZGVmYXVsdCkuIElmIHNldCB0bwogICAgOmNvbnN0OmAxYCwgZXhwb25lbnRzIGFyZSBwcmludGVkIHdpdGggYSBjYXBpdGFsIDpjb25zdDpgRWA7IG90aGVyd2lzZSwgYQpAQCAtOTUxLDYgKzk4NSwxMiBAQAogCiAgICAgICBSZXNldHMgYWxsIG9mIHRoZSBmbGFncyB0byA6Y29uc3Q6YDBgLgogCisgICAuLiBtZXRob2Q6OiBjbGVhcl90cmFwcygpCisKKyAgICAgIFJlc2V0cyBhbGwgb2YgdGhlIHRyYXBzIHRvIDpjb25zdDpgMGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBjb3B5KCkKIAogICAgICAgUmV0dXJuIGEgZHVwbGljYXRlIG9mIHRoZSBjb250ZXh0LgpAQCAtMTI1MCw4ICsxMjkwLDEzIEBACiAgICAgICBXaXRoIHR3byBhcmd1bWVudHMsIGNvbXB1dGUgYGB4Kip5YGAuICBJZiBgYHhgYCBpcyBuZWdhdGl2ZSB0aGVuIGBgeWBgCiAgICAgICBtdXN0IGJlIGludGVncmFsLiAgVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIGBgeWBgIGlzIGludGVncmFsIGFuZAogICAgICAgdGhlIHJlc3VsdCBpcyBmaW5pdGUgYW5kIGNhbiBiZSBleHByZXNzZWQgZXhhY3RseSBpbiAncHJlY2lzaW9uJyBkaWdpdHMuCi0gICAgICBUaGUgcmVzdWx0IHNob3VsZCBhbHdheXMgYmUgY29ycmVjdGx5IHJvdW5kZWQsIHVzaW5nIHRoZSByb3VuZGluZyBtb2RlIG9mCi0gICAgICB0aGUgY3VycmVudCB0aHJlYWQncyBjb250ZXh0LgorICAgICAgVGhlIHJvdW5kaW5nIG1vZGUgb2YgdGhlIGNvbnRleHQgaXMgdXNlZC4gUmVzdWx0cyBhcmUgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkCisgICAgICBpbiB0aGUgUHl0aG9uIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgQyBtb2R1bGUgY29tcHV0ZXMgOm1ldGg6YHBvd2VyYCBpbiB0ZXJtcyBvZiB0aGUgY29ycmVjdGx5LXJvdW5kZWQKKyAgICAgICAgIDptZXRoOmBleHBgIGFuZCA6bWV0aDpgbG5gIGZ1bmN0aW9ucy4gVGhlIHJlc3VsdCBpcyB3ZWxsLWRlZmluZWQgYnV0CisgICAgICAgICBvbmx5ICJhbG1vc3QgYWx3YXlzIGNvcnJlY3RseS1yb3VuZGVkIi4KIAogICAgICAgV2l0aCB0aHJlZSBhcmd1bWVudHMsIGNvbXB1dGUgYGAoeCoqeSkgJSBtb2R1bG9gYC4gIEZvciB0aGUgdGhyZWUgYXJndW1lbnQKICAgICAgIGZvcm0sIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zIG9uIHRoZSBhcmd1bWVudHMgaG9sZDoKQEAgLTEzMzksNiArMTM4NCw2OSBAQAogCiAuLiAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKIAorLi4gX2RlY2ltYWwtcm91bmRpbmctbW9kZXM6CisKK0NvbnN0YW50cworLS0tLS0tLS0tCisKK1RoZSBjb25zdGFudHMgaW4gdGhpcyBzZWN0aW9uIGFyZSBvbmx5IHJlbGV2YW50IGZvciB0aGUgQyBtb2R1bGUuIFRoZXkKK2FyZSBhbHNvIGluY2x1ZGVkIGluIHRoZSBwdXJlIFB5dGhvbiB2ZXJzaW9uIGZvciBjb21wYXRpYmlsaXR5LgorCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgMzItYml0ICAgICAgICB8ICAgICAgICAgICAgNjQtYml0ICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCit8IC4uIGRhdGE6OiBNQVhfUFJFQyAgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgLi4gZGF0YTo6IE1BWF9FTUFYICB8IDpjb25zdDpgNDI1MDAwMDAwYCAgfCA6Y29uc3Q6YDk5OTk5OTk5OTk5OTk5OTk5OWAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCAuLiBkYXRhOjogTUlOX0VNSU4gIHwgOmNvbnN0OmAtNDI1MDAwMDAwYCB8IDpjb25zdDpgLTk5OTk5OTk5OTk5OTk5OTk5OWAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IC4uIGRhdGE6OiBNSU5fRVRJTlkgfCA6Y29uc3Q6YC04NDk5OTk5OTlgIHwgOmNvbnN0OmAtMTk5OTk5OTk5OTk5OTk5OTk5N2AgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworCisuLiBkYXRhOjogSEFWRV9USFJFQURTCisKKyAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIFRydWUuIElmIFB5dGhvbiBpcyBjb21waWxlZCB3aXRob3V0IHRocmVhZHMsIHRoZQorICAgQyB2ZXJzaW9uIGF1dG9tYXRpY2FsbHkgZGlzYWJsZXMgdGhlIGV4cGVuc2l2ZSB0aHJlYWQgbG9jYWwgY29udGV4dAorICAgbWFjaGluZXJ5LiBJbiB0aGlzIGNhc2UsIHRoZSB2YWx1ZSBpcyBGYWxzZS4KKworUm91bmRpbmcgbW9kZXMKKy0tLS0tLS0tLS0tLS0tCisKKy4uIGRhdGE6OiBST1VORF9DRUlMSU5HCisKKyAgIFJvdW5kIHRvd2FyZHMgOmNvbnN0OmBJbmZpbml0eWAuCisKKy4uIGRhdGE6OiBST1VORF9ET1dOCisKKyAgIFJvdW5kIHRvd2FyZHMgemVyby4KKworLi4gZGF0YTo6IFJPVU5EX0ZMT09SCisKKyAgIFJvdW5kIHRvd2FyZHMgOmNvbnN0OmAtSW5maW5pdHlgLgorCisuLiBkYXRhOjogUk9VTkRfSEFMRl9ET1dOCisKKyAgIFJvdW5kIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvd2FyZHMgemVyby4KKworLi4gZGF0YTo6IFJPVU5EX0hBTEZfRVZFTgorCisgICBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlci4KKworLi4gZGF0YTo6IFJPVU5EX0hBTEZfVVAKKworICAgUm91bmQgdG8gbmVhcmVzdCB3aXRoIHRpZXMgZ29pbmcgYXdheSBmcm9tIHplcm8uCisKKy4uIGRhdGE6OiBST1VORF9VUAorCisgICBSb3VuZCBhd2F5IGZyb20gemVyby4KKworLi4gZGF0YTo6IFJPVU5EXzA1VVAKKworICAgUm91bmQgYXdheSBmcm9tIHplcm8gaWYgbGFzdCBkaWdpdCBhZnRlciByb3VuZGluZyB0b3dhcmRzIHplcm8gd291bGQgaGF2ZQorICAgYmVlbiAwIG9yIDU7IG90aGVyd2lzZSByb3VuZCB0b3dhcmRzIHplcm8uCisKIAogLi4gX2RlY2ltYWwtc2lnbmFsczoKIApAQCAtMTQwMyw3ICsxNTExLDYgQEAKICAgICAgIEluZmluaXR5IC8gSW5maW5pdHkKICAgICAgIHggJSAwCiAgICAgICBJbmZpbml0eSAlIHgKLSAgICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKICAgICAgIHNxcnQoLXgpIGFuZCB4ID4gMAogICAgICAgMCAqKiAwCiAgICAgICB4ICoqIChub24taW50ZWdlcikKQEAgLTE0NDYsNiArMTU1MywyMyBAQAogICAgT2NjdXJzIHdoZW4gYSBzdWJub3JtYWwgcmVzdWx0IGlzIHB1c2hlZCB0byB6ZXJvIGJ5IHJvdW5kaW5nLiA6Y2xhc3M6YEluZXhhY3RgCiAgICBhbmQgOmNsYXNzOmBTdWJub3JtYWxgIGFyZSBhbHNvIHNpZ25hbGVkLgogCisKKy4uIGNsYXNzOjogRmxvYXRPcGVyYXRpb24KKworICAgIEVuYWJsZSBzdHJpY3RlciBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzLgorCisgICAgSWYgdGhlIHNpZ25hbCBpcyBub3QgdHJhcHBlZCAoZGVmYXVsdCksIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGlzCisgICAgcGVybWl0dGVkIGluIHRoZSA6Y2xhc3M6YH5kZWNpbWFsLkRlY2ltYWxgIGNvbnN0cnVjdG9yLAorICAgIDptZXRoOmB+ZGVjaW1hbC5Db250ZXh0LmNyZWF0ZV9kZWNpbWFsYCBhbmQgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLgorICAgIEJvdGggY29udmVyc2lvbiBhbmQgY29tcGFyaXNvbnMgYXJlIGV4YWN0LiBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkCisgICAgb3BlcmF0aW9uIGlzIHNpbGVudGx5IHJlY29yZGVkIGJ5IHNldHRpbmcgOmV4YzpgRmxvYXRPcGVyYXRpb25gIGluIHRoZQorICAgIGNvbnRleHQgZmxhZ3MuIEV4cGxpY2l0IGNvbnZlcnNpb25zIHdpdGggOm1ldGg6YH5kZWNpbWFsLkRlY2ltYWwuZnJvbV9mbG9hdGAKKyAgICBvciA6bWV0aDpgfmRlY2ltYWwuQ29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0YCBkbyBub3Qgc2V0IHRoZSBmbGFnLgorCisgICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAorICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIDpleGM6YEZsb2F0T3BlcmF0aW9uYC4KKworCiBUaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIGhpZXJhcmNoeSBvZiBzaWduYWxzOjoKIAogICAgZXhjZXB0aW9ucy5Bcml0aG1ldGljRXJyb3IoZXhjZXB0aW9ucy5FeGNlcHRpb24pCkBAIC0xNDU4LDEwICsxNTgyLDEyIEBACiAgICAgICAgICAgIEludmFsaWRPcGVyYXRpb24KICAgICAgICAgICAgUm91bmRlZAogICAgICAgICAgICBTdWJub3JtYWwKKyAgICAgICAgICAgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgZXhjZXB0aW9ucy5UeXBlRXJyb3IpCiAKIC4uICUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJQogCiAKKwogLi4gX2RlY2ltYWwtbm90ZXM6CiAKIEZsb2F0aW5nIFBvaW50IE5vdGVzCkBAIC0xNTcxLDcgKzE2OTcsNyBAQAogdGhlIGZvbGxvd2luZyBjYWxjdWxhdGlvbiByZXR1cm5zIGEgdmFsdWUgZXF1YWwgdG8gemVybzoKIAogICAgPj4+IDEgLyBEZWNpbWFsKCdJbmZpbml0eScpCi0gICBEZWNpbWFsKCcwRS0xMDAwMDAwMDI2JykKKyAgIERlY2ltYWwoJzBFLTEwMDAwMjYnKQogCiAuLiAlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUKIApAQCAtMTU4Myw3ICsxNzA5LDcgQEAKIAogVGhlIDpmdW5jOmBnZXRjb250ZXh0YCBmdW5jdGlvbiBhY2Nlc3NlcyBhIGRpZmZlcmVudCA6Y2xhc3M6YENvbnRleHRgIG9iamVjdCBmb3IKIGVhY2ggdGhyZWFkLiAgSGF2aW5nIHNlcGFyYXRlIHRocmVhZCBjb250ZXh0cyBtZWFucyB0aGF0IHRocmVhZHMgbWF5IG1ha2UKLWNoYW5nZXMgKHN1Y2ggYXMgYGBnZXRjb250ZXh0LnByZWM9MTBgYCkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRocmVhZHMuCitjaGFuZ2VzIChzdWNoIGFzIGBgZ2V0Y29udGV4dCgpLnByZWM9MTBgYCkgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIG90aGVyIHRocmVhZHMuCiAKIExpa2V3aXNlLCB0aGUgOmZ1bmM6YHNldGNvbnRleHRgIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgYXNzaWducyBpdHMgdGFyZ2V0IHRvCiB0aGUgY3VycmVudCB0aHJlYWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXBncmFwaC1vdXRwdXQucG5nIGIvRG9jL2xpYnJhcnkvZGVwZ3JhcGgtb3V0cHV0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjBiYjFiCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvZGVwZ3JhcGgtb3V0cHV0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QgYi9Eb2MvbGlicmFyeS9kZXZlbG9wbWVudC5yc3QKaW5kZXggYzgyMmUwOC4uMjM2ODc2OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGV2ZWxvcG1lbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RldmVsb3BtZW50LnJzdApAQCAtMTksNSArMTksOCBAQAogICAgcHlkb2MucnN0CiAgICBkb2N0ZXN0LnJzdAogICAgdW5pdHRlc3QucnN0CisgICB1bml0dGVzdC5tb2NrLnJzdAorICAgdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKICAgIDJ0bzMucnN0CiAgICB0ZXN0LnJzdAorICAgdmVudi5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0IGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKaW5kZXggYmRjMzdiMy4uODM2ZTI0MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKQEAgLTc1Miw4ICs3NTIsOCBAQAogICAgICAgICMgd2UncmUgcGFzc2luZyB0aGVzZSBhcyBhcmd1bWVudHMgdG8gdGhlIGRpZmYgZnVuY3Rpb24KICAgICAgICBmcm9tZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdChmcm9tZmlsZSkuc3RfbXRpbWUpCiAgICAgICAgdG9kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KHRvZmlsZSkuc3RfbXRpbWUpCi0gICAgICAgZnJvbWxpbmVzID0gb3Blbihmcm9tZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQotICAgICAgIHRvbGluZXMgPSBvcGVuKHRvZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQorICAgICAgIHdpdGggb3Blbihmcm9tbGluZXMpIGFzIGZyb21mLCBvcGVuKHRvZmlsZSkgYXMgdG9mOgorICAgICAgICAgICBmcm9tbGluZXMsIHRvbGluZXMgPSBsaXN0KGZyb21mKSwgbGlzdCh0b2YpCiAKICAgICAgICBpZiBvcHRpb25zLnU6CiAgICAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kaXMucnN0IGIvRG9jL2xpYnJhcnkvZGlzLnJzdAppbmRleCAxMDhjZGE3Li44NTRjNTIxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kaXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKQEAgLTE3MSwxMSArMTcxLDYgQEAKIAogKipHZW5lcmFsIGluc3RydWN0aW9ucyoqCiAKLS4uIG9wY29kZTo6IFNUT1BfQ09ERQotCi0gICBJbmRpY2F0ZXMgZW5kLW9mLWNvZGUgdG8gdGhlIGNvbXBpbGVyLCBub3QgdXNlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCi0KLQogLi4gb3Bjb2RlOjogTk9QCiAKICAgIERvIG5vdGhpbmcgY29kZS4gIFVzZWQgYXMgYSBwbGFjZWhvbGRlciBieSB0aGUgYnl0ZWNvZGUgb3B0aW1pemVyLgpAQCAtNDM2LDYgKzQzMSwxMyBAQAogICAgUG9wcyBgYFRPU2BgIGFuZCB5aWVsZHMgaXQgZnJvbSBhIDp0ZXJtOmBnZW5lcmF0b3JgLgogCiAKKy4uIG9wY29kZTo6IFlJRUxEX0ZST00KKworICAgUG9wcyBgYFRPU2BgIGFuZCBkZWxlZ2F0ZXMgdG8gaXQgYXMgYSBzdWJpdGVyYXRvciBmcm9tIGEgOnRlcm06YGdlbmVyYXRvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIG9wY29kZTo6IElNUE9SVF9TVEFSCiAKICAgIExvYWRzIGFsbCBzeW1ib2xzIG5vdCBzdGFydGluZyB3aXRoIGBgJ18nYGAgZGlyZWN0bHkgZnJvbSB0aGUgbW9kdWxlIFRPUyB0byB0aGUKQEAgLTc1Miw5ICs3NTQsMTAgQEAKIAogLi4gb3Bjb2RlOjogTUFLRV9GVU5DVElPTiAoYXJnYykKIAotICAgUHVzaGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCBvbiB0aGUgc3RhY2suICBUT1MgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZQotICAgZnVuY3Rpb24uICBUaGUgZnVuY3Rpb24gb2JqZWN0IGlzIGRlZmluZWQgdG8gaGF2ZSAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLAotICAgd2hpY2ggYXJlIGZvdW5kIGJlbG93IFRPUy4KKyAgIFB1c2hlcyBhIG5ldyBmdW5jdGlvbiBvYmplY3Qgb24gdGhlIHN0YWNrLiAgVE9TIGlzIHRoZQorICAgOnRlcm06YHF1YWxpZmllZCBuYW1lYCBvZiB0aGUgZnVuY3Rpb247IFRPUzEgaXMgdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoCisgICB0aGUgZnVuY3Rpb24uICBUaGUgZnVuY3Rpb24gb2JqZWN0IGlzIGRlZmluZWQgdG8gaGF2ZSAqYXJnYyogZGVmYXVsdCBwYXJhbWV0ZXJzLAorICAgd2hpY2ggYXJlIGZvdW5kIGJlbG93IFRPUzEuCiAKIAogLi4gb3Bjb2RlOjogTUFLRV9DTE9TVVJFIChhcmdjKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpc3R1dGlscy5yc3QKaW5kZXggMjM4Yjc5ZC4uMTFhMjk0OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzdHV0aWxzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXN0dXRpbHMucnN0CkBAIC0xMiwxOCArMTIsMTQgQEAKIDEwMCUtcHVyZSBQeXRob24sIG9yIG1heSBiZSBleHRlbnNpb24gbW9kdWxlcyB3cml0dGVuIGluIEMsIG9yIG1heSBiZQogY29sbGVjdGlvbnMgb2YgUHl0aG9uIHBhY2thZ2VzIHdoaWNoIGluY2x1ZGUgbW9kdWxlcyBjb2RlZCBpbiBib3RoIFB5dGhvbiBhbmQgQy4KIAotVGhpcyBwYWNrYWdlIGlzIGRpc2N1c3NlZCBpbiB0d28gc2VwYXJhdGUgY2hhcHRlcnM6CiAKK1VzZXIgZG9jdW1lbnRhdGlvbiBhbmQgQVBJIHJlZmVyZW5jZSBhcmUgcHJvdmlkZWQgaW4gYW5vdGhlciBkb2N1bWVudDoKIAogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YGRpc3R1dGlscy1pbmRleGAKICAgICAgIFRoZSBtYW51YWwgZm9yIGRldmVsb3BlcnMgYW5kIHBhY2thZ2VycyBvZiBQeXRob24gbW9kdWxlcy4gIFRoaXMgZGVzY3JpYmVzCiAgICAgICBob3cgdG8gcHJlcGFyZSA6bW9kOmBkaXN0dXRpbHNgXCAtYmFzZWQgcGFja2FnZXMgc28gdGhhdCB0aGV5IG1heSBiZQotICAgICAgZWFzaWx5IGluc3RhbGxlZCBpbnRvIGFuIGV4aXN0aW5nIFB5dGhvbiBpbnN0YWxsYXRpb24uCi0KLSAgIDpyZWY6YGluc3RhbGwtaW5kZXhgCi0gICAgICBBbiAiYWRtaW5pc3RyYXRvcnMiIG1hbnVhbCB3aGljaCBpbmNsdWRlcyBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsaW5nCi0gICAgICBtb2R1bGVzIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4gIFlvdSBkbyBub3QgbmVlZCB0byBiZSBhCi0gICAgICBQeXRob24gcHJvZ3JhbW1lciB0byByZWFkIHRoaXMgbWFudWFsLgotCisgICAgICBlYXNpbHkgaW5zdGFsbGVkIGludG8gYW4gZXhpc3RpbmcgUHl0aG9uIGluc3RhbGxhdGlvbi4gIElmIGFsc28gY29udGFpbnMKKyAgICAgIGluc3RydWN0aW9ucyBmb3IgZW5kLXVzZXJzIHdhbnRpbmcgdG8gaW5zdGFsbCBhIGRpc3R1dGlscy1iYXNlZCBwYWNrYWdlLAorICAgICAgOnJlZjpgaW5zdGFsbC1pbmRleGAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CmluZGV4IGVjOGVkYmUuLjIyMmM3MTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RvY3Rlc3QucnN0CkBAIC0zMjAsNyArMzIwLDggQEAKICAgVGFicyBpbiBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZSB0ZXN0ZWQgY29kZSBhcmUgbm90IG1vZGlmaWVkLiAgQmVjYXVzZSBhbnkKICAgaGFyZCB0YWJzIGluIHRoZSBzYW1wbGUgb3V0cHV0ICphcmUqIGV4cGFuZGVkLCB0aGlzIG1lYW5zIHRoYXQgaWYgdGhlIGNvZGUKICAgb3V0cHV0IGluY2x1ZGVzIGhhcmQgdGFicywgdGhlIG9ubHkgd2F5IHRoZSBkb2N0ZXN0IGNhbiBwYXNzIGlzIGlmIHRoZQotICA6Y29uc3Q6YE5PUk1BTElaRV9XSElURVNQQUNFYCBvcHRpb24gb3IgZGlyZWN0aXZlIGlzIGluIGVmZmVjdC4KKyAgOmNvbnN0OmBOT1JNQUxJWkVfV0hJVEVTUEFDRWAgb3B0aW9uIG9yIDpyZWY6YGRpcmVjdGl2ZSA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAKKyAgaXMgaW4gZWZmZWN0LgogICBBbHRlcm5hdGl2ZWx5LCB0aGUgdGVzdCBjYW4gYmUgcmV3cml0dGVuIHRvIGNhcHR1cmUgdGhlIG91dHB1dCBhbmQgY29tcGFyZSBpdAogICB0byBhbiBleHBlY3RlZCB2YWx1ZSBhcyBwYXJ0IG9mIHRoZSB0ZXN0LiAgVGhpcyBoYW5kbGluZyBvZiB0YWJzIGluIHRoZQogICBzb3VyY2Ugd2FzIGFycml2ZWQgYXQgdGhyb3VnaCB0cmlhbCBhbmQgZXJyb3IsIGFuZCBoYXMgcHJvdmVuIHRvIGJlIHRoZSBsZWFzdApAQCAtNDg1LDE1ICs0ODYsMTYgQEAKICAgICAgU3ludGF4RXJyb3I6IGludmFsaWQgc3ludGF4CiAKIAorLi4gX29wdGlvbi1mbGFncy1hbmQtZGlyZWN0aXZlczoKIC4uIF9kb2N0ZXN0LW9wdGlvbnM6CiAKLU9wdGlvbiBGbGFncyBhbmQgRGlyZWN0aXZlcwotXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCitPcHRpb24gRmxhZ3MKK15eXl5eXl5eXl5eXgogCiBBIG51bWJlciBvZiBvcHRpb24gZmxhZ3MgY29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgZG9jdGVzdCdzIGJlaGF2aW9yLgogU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFncyBhcmUgc3VwcGxpZWQgYXMgbW9kdWxlIGNvbnN0YW50cywgd2hpY2ggY2FuIGJlCiBvcidlZCB0b2dldGhlciBhbmQgcGFzc2VkIHRvIHZhcmlvdXMgZnVuY3Rpb25zLiAgVGhlIG5hbWVzIGNhbiBhbHNvIGJlIHVzZWQgaW4KLWRvY3Rlc3QgZGlyZWN0aXZlcyAoc2VlIGJlbG93KS4KKzpyZWY6YGRvY3Rlc3QgZGlyZWN0aXZlcyA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAuCiAKIFRoZSBmaXJzdCBncm91cCBvZiBvcHRpb25zIGRlZmluZSB0ZXN0IHNlbWFudGljcywgY29udHJvbGxpbmcgYXNwZWN0cyBvZiBob3cKIGRvY3Rlc3QgZGVjaWRlcyB3aGV0aGVyIGFjdHVhbCBvdXRwdXQgbWF0Y2hlcyBhbiBleGFtcGxlJ3MgZXhwZWN0ZWQgb3V0cHV0OgpAQCAtNTQ3LDE0ICs1NDksMTQgQEAKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJdCB3aWxsIGFsc28gaWdub3JlIHRoZSBtb2R1bGUgbmFtZSB1c2VkIGluIFB5dGhvbiAzIGRvY3Rlc3QgcmVwb3J0cy4gSGVuY2UKLSAgIGJvdGggdGhlc2UgdmFyaWF0aW9ucyB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSB0ZXN0IGlzIHJ1biB1bmRlcgotICAgUHl0aG9uIDIuNyBvciBQeXRob24gMy4yIChvciBsYXRlciB2ZXJzaW9ucyk6CisgICBib3RoIG9mIHRoZXNlIHZhcmlhdGlvbnMgd2lsbCB3b3JrIHdpdGggdGhlIGZsYWcgc3BlY2lmaWVkLCByZWdhcmRsZXNzIG9mCisgICB3aGV0aGVyIHRoZSB0ZXN0IGlzIHJ1biB1bmRlciBQeXRob24gMi43IG9yIFB5dGhvbiAzLjIgKG9yIGxhdGVyIHZlcnNpb25zKTo6CiAKLSAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpICNkb2N0ZXN0OiArSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwKKyAgICAgID4+PiByYWlzZSBDdXN0b21FcnJvcignbWVzc2FnZScpCiAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICBDdXN0b21FcnJvcjogbWVzc2FnZQogCi0gICAgICA+Pj4gcmFpc2UgQ3VzdG9tRXJyb3IoJ21lc3NhZ2UnKSAjZG9jdGVzdDogK0lHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICA+Pj4gcmFpc2UgQ3VzdG9tRXJyb3IoJ21lc3NhZ2UnKQogICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgbXlfbW9kdWxlLkN1c3RvbUVycm9yOiBtZXNzYWdlCiAKQEAgLTU2NCwxNSArNTY2LDE2IEBACiAgICBleGNlcHRpb24gbmFtZS4gVXNpbmcgOmNvbnN0OmBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTGAgYW5kIHRoZSBkZXRhaWxzCiAgICBmcm9tIFB5dGhvbiAyLjMgaXMgYWxzbyB0aGUgb25seSBjbGVhciB3YXkgdG8gd3JpdGUgYSBkb2N0ZXN0IHRoYXQgZG9lc24ndAogICAgY2FyZSBhYm91dCB0aGUgZXhjZXB0aW9uIGRldGFpbCB5ZXQgY29udGludWVzIHRvIHBhc3MgdW5kZXIgUHl0aG9uIDIuMyBvcgotICAgZWFybGllciAodGhvc2UgcmVsZWFzZXMgZG8gbm90IHN1cHBvcnQgZG9jdGVzdCBkaXJlY3RpdmVzIGFuZCBpZ25vcmUgdGhlbQotICAgYXMgaXJyZWxldmFudCBjb21tZW50cykuIEZvciBleGFtcGxlLCA6OgorICAgZWFybGllciAodGhvc2UgcmVsZWFzZXMgZG8gbm90IHN1cHBvcnQgOnJlZjpgZG9jdGVzdCBkaXJlY3RpdmVzCisgICA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAgYW5kIGlnbm9yZSB0aGVtIGFzIGlycmVsZXZhbnQgY29tbWVudHMpLiBGb3IgZXhhbXBsZTo6CiAKLSAgICAgID4+PiAoMSwgMilbM10gPSAnbW9vJyAjZG9jdGVzdDogK0lHTk9SRV9FWENFUFRJT05fREVUQUlMCisgICAgICA+Pj4gKDEsIDIpWzNdID0gJ21vbycKICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPwogICAgICAgVHlwZUVycm9yOiBvYmplY3QgZG9lc24ndCBzdXBwb3J0IGl0ZW0gYXNzaWdubWVudAogCi0gICBwYXNzZXMgdW5kZXIgUHl0aG9uIDIuMyBhbmQgbGF0ZXIgUHl0aG9uIHZlcnNpb25zLCBldmVuIHRob3VnaCB0aGUgZGV0YWlsCisgICBwYXNzZXMgdW5kZXIgUHl0aG9uIDIuMyBhbmQgbGF0ZXIgUHl0aG9uIHZlcnNpb25zIHdpdGggdGhlIGZsYWcgc3BlY2lmaWVkLAorICAgZXZlbiB0aG91Z2ggdGhlIGRldGFpbAogICAgY2hhbmdlZCBpbiBQeXRob24gMi40IHRvIHNheSAiZG9lcyBub3QiIGluc3RlYWQgb2YgImRvZXNuJ3QiLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpAQCAtNjM0LDkgKzYzNywzMCBAQAogCiAgICBBIGJpdG1hc2sgb3InaW5nIHRvZ2V0aGVyIGFsbCB0aGUgcmVwb3J0aW5nIGZsYWdzIGFib3ZlLgogCi0iRG9jdGVzdCBkaXJlY3RpdmVzIiBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhlIG9wdGlvbiBmbGFncyBmb3IgaW5kaXZpZHVhbAotZXhhbXBsZXMuICBEb2N0ZXN0IGRpcmVjdGl2ZXMgYXJlIGV4cHJlc3NlZCBhcyBhIHNwZWNpYWwgUHl0aG9uIGNvbW1lbnQKLWZvbGxvd2luZyBhbiBleGFtcGxlJ3Mgc291cmNlIGNvZGU6CisKK1RoZXJlIGlzIGFsc28gYSB3YXkgdG8gcmVnaXN0ZXIgbmV3IG9wdGlvbiBmbGFnIG5hbWVzLCB0aG91Z2ggdGhpcyBpc24ndAordXNlZnVsIHVubGVzcyB5b3UgaW50ZW5kIHRvIGV4dGVuZCA6bW9kOmBkb2N0ZXN0YCBpbnRlcm5hbHMgdmlhIHN1YmNsYXNzaW5nOgorCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfb3B0aW9uZmxhZyhuYW1lKQorCisgICBDcmVhdGUgYSBuZXcgb3B0aW9uIGZsYWcgd2l0aCBhIGdpdmVuIG5hbWUsIGFuZCByZXR1cm4gdGhlIG5ldyBmbGFnJ3MgaW50ZWdlcgorICAgdmFsdWUuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2AgY2FuIGJlIHVzZWQgd2hlbiBzdWJjbGFzc2luZworICAgOmNsYXNzOmBPdXRwdXRDaGVja2VyYCBvciA6Y2xhc3M6YERvY1Rlc3RSdW5uZXJgIHRvIGNyZWF0ZSBuZXcgb3B0aW9ucyB0aGF0IGFyZQorICAgc3VwcG9ydGVkIGJ5IHlvdXIgc3ViY2xhc3Nlcy4gIDpmdW5jOmByZWdpc3Rlcl9vcHRpb25mbGFnYCBzaG91bGQgYWx3YXlzIGJlCisgICBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBpZGlvbTo6CisKKyAgICAgIE1ZX0ZMQUcgPSByZWdpc3Rlcl9vcHRpb25mbGFnKCdNWV9GTEFHJykKKworCisuLiBfZG9jdGVzdC1kaXJlY3RpdmVzOgorCitEaXJlY3RpdmVzCiteXl5eXl5eXl5eCisKK0RvY3Rlc3QgZGlyZWN0aXZlcyBtYXkgYmUgdXNlZCB0byBtb2RpZnkgdGhlIDpyZWY6YG9wdGlvbiBmbGFncworPGRvY3Rlc3Qtb3B0aW9ucz5gIGZvciBhbiBpbmRpdmlkdWFsIGV4YW1wbGUuICBEb2N0ZXN0IGRpcmVjdGl2ZXMgYXJlCitzcGVjaWFsIFB5dGhvbiBjb21tZW50cyBmb2xsb3dpbmcgYW4gZXhhbXBsZSdzIHNvdXJjZSBjb2RlOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IGRvY3Rlc3QKICAgIGRpcmVjdGl2ZTogIiMiICJkb2N0ZXN0OiIgYGRpcmVjdGl2ZV9vcHRpb25zYApAQCAtNjkzLDIwICs3MTcsNiBAQAogZnVuY3Rpb25zIHRoYXQgcnVuIGRvY3Rlc3RzLCBlc3RhYmxpc2hpbmcgZGlmZmVyZW50IGRlZmF1bHRzLiAgSW4gc3VjaCBjYXNlcywKIGRpc2FibGluZyBhbiBvcHRpb24gdmlhIGBgLWBgIGluIGEgZGlyZWN0aXZlIGNhbiBiZSB1c2VmdWwuCiAKLVRoZXJlJ3MgYWxzbyBhIHdheSB0byByZWdpc3RlciBuZXcgb3B0aW9uIGZsYWcgbmFtZXMsIGFsdGhvdWdoIHRoaXMgaXNuJ3QgdXNlZnVsCi11bmxlc3MgeW91IGludGVuZCB0byBleHRlbmQgOm1vZDpgZG9jdGVzdGAgaW50ZXJuYWxzIHZpYSBzdWJjbGFzc2luZzoKLQotCi0uLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX29wdGlvbmZsYWcobmFtZSkKLQotICAgQ3JlYXRlIGEgbmV3IG9wdGlvbiBmbGFnIHdpdGggYSBnaXZlbiBuYW1lLCBhbmQgcmV0dXJuIHRoZSBuZXcgZmxhZydzIGludGVnZXIKLSAgIHZhbHVlLiAgOmZ1bmM6YHJlZ2lzdGVyX29wdGlvbmZsYWdgIGNhbiBiZSB1c2VkIHdoZW4gc3ViY2xhc3NpbmcKLSAgIDpjbGFzczpgT3V0cHV0Q2hlY2tlcmAgb3IgOmNsYXNzOmBEb2NUZXN0UnVubmVyYCB0byBjcmVhdGUgbmV3IG9wdGlvbnMgdGhhdCBhcmUKLSAgIHN1cHBvcnRlZCBieSB5b3VyIHN1YmNsYXNzZXMuICA6ZnVuYzpgcmVnaXN0ZXJfb3B0aW9uZmxhZ2Agc2hvdWxkIGFsd2F5cyBiZQotICAgY2FsbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgaWRpb206OgotCi0gICAgICBNWV9GTEFHID0gcmVnaXN0ZXJfb3B0aW9uZmxhZygnTVlfRkxBRycpCi0KIAogLi4gX2RvY3Rlc3Qtd2FybmluZ3M6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IGQ4ZjMzMGYuLjlmMGE5ZTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtNzMsMTcgKzczLDM4IEBACiAqIDpjbGFzczpgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0YCAtLSBUaGUgc3RhcnQgYm91bmRhcnkgY2xhaW1lZCBpbiB0aGUKICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIHdhcyBuZXZlciBmb3VuZC4KIAorKiA6Y2xhc3M6YENsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdGAgLS0gQSBzdGFydCBib3VuZGFyeSB3YXMgZm91bmQsIGJ1dAorICBubyBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5IHdhcyBldmVyIGZvdW5kLgorCisgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAqIDpjbGFzczpgRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RgIC0tIFRoZSBtZXNzYWdlIGhhZCBhIGNvbnRpbnVhdGlvbgogICBsaW5lIGFzIGl0cyBmaXJzdCBoZWFkZXIgbGluZS4KIAogKiA6Y2xhc3M6YE1pc3BsYWNlZEVudmVsb3BlSGVhZGVyRGVmZWN0YCAtIEEgIlVuaXggRnJvbSIgaGVhZGVyIHdhcyBmb3VuZCBpbiB0aGUKICAgbWlkZGxlIG9mIGEgaGVhZGVyIGJsb2NrLgogCisqIDpjbGFzczpgTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3RgIC0gQSBsaW5lIHdhcyBmb3VuZCB3aGlsZSBwYXJzaW5nCisgIGhlYWRlcnMgdGhhdCBoYWQgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBidXQgY29udGFpbmVkIG5vICc6Jy4gIFBhcnNpbmcKKyAgY29udGludWVzIGFzc3VtaW5nIHRoYXQgdGhlIGxpbmUgcmVwcmVzZW50cyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgYm9keS4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogKiA6Y2xhc3M6YE1hbGZvcm1lZEhlYWRlckRlZmVjdGAgLS0gQSBoZWFkZXIgd2FzIGZvdW5kIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwKICAgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuCiAKKyAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICBUaGlzIGRlZmVjdCBoYXMgbm90IGJlZW4gdXNlZCBmb3Igc2V2ZXJhbCBQeXRob24gdmVyc2lvbnMuCisKICogOmNsYXNzOmBNdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3RgIC0tIEEgbWVzc2FnZSBjbGFpbWVkIHRvIGJlIGEKICAgOm1pbWV0eXBlOmBtdWx0aXBhcnRgLCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4gIE5vdGUgdGhhdCB3aGVuIGEgbWVzc2FnZSBoYXMKICAgdGhpcyBkZWZlY3QsIGl0cyA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBtZXRob2QgbWF5IHJldHVybiBmYWxzZSBldmVuIHRob3VnaCBpdHMKICAgY29udGVudCB0eXBlIGNsYWltcyB0byBiZSA6bWltZXR5cGU6YG11bHRpcGFydGAuCiAKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCB0aGUgcGFkZGluZyB3YXMgbm90IGNvcnJlY3QuICBFbm91Z2ggcGFkZGluZyBpcyBhZGRlZCB0bworICBwZXJmb3JtIHRoZSBkZWNvZGUsIGJ1dCB0aGUgcmVzdWx0aW5nIGRlY29kZWQgYnl0ZXMgbWF5IGJlIGludmFsaWQuCisKKyogOmNsYXNzOmBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdGAgLS0gV2hlbiBkZWNvZGluZyBhIGJsb2NrIG9mIGJhc2U2NAorICBlbm9jZGVkIGJ5dGVzLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NCBhbHBoZWJldCB3ZXJlIGVuY291bnRlcmVkLgorICBUaGUgY2hhcmFjdGVycyBhcmUgaWdub3JlZCwgYnV0IHRoZSByZXN1bHRpbmcgZGVjb2RlZCBieXRlcyBtYXkgYmUgaW52YWxpZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CmluZGV4IDg4YzYyYTIuLmMxNzJhY2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdApAQCAtMzIsNyArMzIsNyBAQAogOm1vZDpgZW1haWwuZ2VuZXJhdG9yYCBtb2R1bGU6CiAKIAotLi4gY2xhc3M6OiBHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NzgpCisuLiBjbGFzczo6IEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgcG9saWN5PU5vbmUpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyB0YWtlcyBhIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0IHN1cHBvcnQgdGhlIDptZXRoOmB3cml0ZWAgbWV0aG9kCkBAIC01MywxMCArNTMsMTcgQEAKICAgIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGNsYXNzLiAgU2V0IHRvIHplcm8gdG8gZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5IDpyZmM6YDI4MjJgLgogCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAorICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKKyAgIGlzIHVzZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgR2VuZXJhdG9yYCBtZXRob2RzIGFyZToKIAogCi0gICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9J1xcbicpCisgICAuLiBtZXRob2Q6OiBmbGF0dGVuKG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9Tm9uZSkKIAogICAgICAgUHJpbnQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSByb290ZWQgYXQKICAgICAgICptc2cqIHRvIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpZWQgd2hlbiB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGluc3RhbmNlCkBAIC03MiwxOSArNzksMjAgQEAKICAgICAgIE5vdGUgdGhhdCBmb3Igc3VicGFydHMsIG5vIGVudmVsb3BlIGhlYWRlciBpcyBldmVyIHByaW50ZWQuCiAKICAgICAgIE9wdGlvbmFsICpsaW5lc2VwKiBzcGVjaWZpZXMgdGhlIGxpbmUgc2VwYXJhdG9yIGNoYXJhY3RlciB1c2VkIHRvCi0gICAgICB0ZXJtaW5hdGUgbGluZXMgaW4gdGhlIG91dHB1dC4gIEl0IGRlZmF1bHRzIHRvIGBgXG5gYCBiZWNhdXNlIHRoYXQgaXMKLSAgICAgIHRoZSBtb3N0IHVzZWZ1bCB2YWx1ZSBmb3IgUHl0aG9uIGFwcGxpY2F0aW9uIGNvZGUgKG90aGVyIGxpYnJhcnkgcGFja2FnZXMKLSAgICAgIGV4cGVjdCBgYFxuYGAgc2VwYXJhdGVkIGxpbmVzKS4gIGBgbGluZXNlcD1cclxuYGAgY2FuIGJlIHVzZWQgdG8KLSAgICAgIGdlbmVyYXRlIG91dHB1dCB3aXRoIFJGQy1jb21wbGlhbnQgbGluZSBzZXBhcmF0b3JzLgorICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQorICAgICAgc3BlY2lmaWVkIGJ5IHRoZSAqbXNnKlwncyBvciBgYEdlbmVyYXRvcmBgXCdzIGBgcG9saWN5YGAuCiAKLSAgICAgIE1lc3NhZ2VzIHBhcnNlZCB3aXRoIGEgQnl0ZXMgcGFyc2VyIHRoYXQgaGF2ZSBhCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgOGJpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhCi0gICAgICB1c2UgYSA3Yml0IENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlIGhlYWRlcnMKLSAgICAgIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgdW5rbm93bi04Yml0YC4KKyAgICAgIEJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcywgaWYgdGhlIHBvbGljeSB0aGF0CisgICAgICBhcHBsaWVzIHdoZW4gYGBmbGF0dGVuYGAgaXMgcnVuIGhhcyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCisgICAgICBzZXQgdG8gYGA4Yml0YGAsIGBgR2VuZXJhdG9yYGAgd2lsbCBvcGVyYXRlIGFzIGlmIGl0IHdlcmUgc2V0IHRvCisgICAgICBgYDdiaXRgYC4gIFRoaXMgbWVhbnMgdGhhdCBtZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUKKyAgICAgIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHdpbGwgYmUgY29udmVydGVkCisgICAgICB0byBhIHVzZSBhIGBgN2JpdGBgIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlCisgICAgICBoZWFkZXJzIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgYHVua25vd24tOGJpdGBgLgogCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgOGJpdCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZSAqbGluZXNlcCoKLSAgICAgICAgIGFyZ3VtZW50LgorICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKKyAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKQEAgLTEwMyw3ICsxMTEsOCBAQAogZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKIDptb2Q6YGVtYWlsLm1lc3NhZ2VgLgogCi0uLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4KQorLi4gY2xhc3M6OiBCeXRlc0dlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgYmluYXJ5CiAgICA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0CkBAIC0xMjUsMTkgKzEzNCwzMSBAQAogICAgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5CiAgICA6cmZjOmAyODIyYC4KIAorICAgVGhlICpwb2xpY3kqIGtleXdvcmQgc3BlY2lmaWVzIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAgb2JqZWN0IHRoYXQgY29udHJvbHMgYQorICAgbnVtYmVyIG9mIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeQorICAgbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCiAgICBUaGUgb3RoZXIgcHVibGljIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgogCiAKLSAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD0nXG4nKQorICAgLi4gbWV0aG9kOjogZmxhdHRlbihtc2csIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPU5vbmUpCiAKICAgICAgIFByaW50IHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgcm9vdGVkCiAgICAgICBhdCAqbXNnKiB0byB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgCiAgICAgICBpbnN0YW5jZSB3YXMgY3JlYXRlZC4gIFN1YnBhcnRzIGFyZSB2aXNpdGVkIGRlcHRoLWZpcnN0IGFuZCB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0IHdpbGwgYmUgcHJvcGVybHkgTUlNRSBlbmNvZGVkLiAgSWYgdGhlIGlucHV0IHRoYXQgY3JlYXRlZCB0aGUgKm1zZyoKLSAgICAgIGNvbnRhaW5lZCBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgYW5kIHRob3NlIGJ5dGVzIGhhdmUgbm90IGJlZW4KLSAgICAgIG1vZGlmaWVkLCB0aGV5IHdpbGwgYmUgY29waWVkIGZhaXRoZnVsbHkgdG8gdGhlIG91dHB1dCwgZXZlbiBpZiBkb2luZyBzbwotICAgICAgaXMgbm90IHN0cmljdGx5IFJGQyBjb21wbGlhbnQuICAoVG8gcHJvZHVjZSBzdHJpY3RseSBSRkMgY29tcGxpYW50Ci0gICAgICBvdXRwdXQsIHVzZSB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzLikKKyAgICAgIHRleHQgd2lsbCBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uCisgICAgICA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIGlzIGBgOGJpdGBgICh0aGUgZGVmYXVsdCksCisgICAgICB0aGVuIGFueSBieXRlcyB3aXRoIHRoZSBoaWdoIGJpdCBzZXQgaW4gdGhlIG9yaWdpbmFsIHBhcnNlZCBtZXNzYWdlIHRoYXQKKyAgICAgIGhhdmUgbm90IGJlZW4gbW9kaWZpZWQgd2lsbCBiZSBjb3BpZWQgZmFpdGhmdWxseSB0byB0aGUgb3V0cHV0LiAgSWYKKyAgICAgIGBgY3RlX3R5cGVgYCBpcyBgYDdiaXRgYCwgdGhlIGJ5dGVzIHdpbGwgYmUgY29udmVydGVkIGFzIG5lZWRlZAorICAgICAgdXNpbmcgYW4gQVNDSUktY29tcGF0aWJsZSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nLiAgSW4gcGFydGljdWxhciwKKyAgICAgIFJGQy1pbnZhbGlkIG5vbi1BU0NJSSBieXRlcyBpbiBoZWFkZXJzIHdpbGwgYmUgZW5jb2RlZCB1c2luZyB0aGUgTUlNRQorICAgICAgYGB1bmtub3duLThiaXRgYCBjaGFyYWN0ZXIgc2V0LCB0aHVzIHJlbmRlcmluZyB0aGVtIFJGQy1jb21wbGlhbnQuCisKKyAgICAgIC4uIFhYWDogVGhlcmUgc2hvdWxkIGJlIGEgY29tcGxlbWVudGFyeSBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQworICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBidXQgbGVhdmVzIENURSA4Yml0IHBhcnRzIGFsb25lLgogCiAgICAgICBNZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUgYQogICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIDhiaXQgd2lsbCBiZSByZWNvbnN0cnVjdGVkCkBAIC0xNTIsMTAgKzE3Myw4IEBACiAgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgogCiAgICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJdCBkZWZhdWx0cyB0byBgYFxuYGAgYmVjYXVzZSB0aGF0IGlzCi0gICAgICB0aGUgbW9zdCB1c2VmdWwgdmFsdWUgZm9yIFB5dGhvbiBhcHBsaWNhdGlvbiBjb2RlIChvdGhlciBsaWJyYXJ5IHBhY2thZ2VzCi0gICAgICBleHBlY3QgYGBcbmBgIHNlcGFyYXRlZCBsaW5lcykuICBgYGxpbmVzZXA9XHJcbmBgIGNhbiBiZSB1c2VkIHRvCi0gICAgICBnZW5lcmF0ZSBvdXRwdXQgd2l0aCBSRkMtY29tcGxpYW50IGxpbmUgc2VwYXJhdG9ycy4KKyAgICAgIHRlcm1pbmF0ZSBsaW5lcyBpbiB0aGUgb3V0cHV0LiAgSWYgc3BlY2lmaWVkIGl0IG92ZXJyaWRlcyB0aGUgdmFsdWUKKyAgICAgIHNwZWNpZmllZCBieSB0aGUgYGBHZW5lcmF0b3JgYFwgJ3MgYGBwb2xpY3lgYC4KIAogICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CmluZGV4IDdkMmRjMmUuLjM0NmQyM2YgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdApAQCAtMzEsOCArMzEsOCBAQAogICAgPj4+IG1zZyA9IE1lc3NhZ2UoKQogICAgPj4+IGggPSBIZWFkZXIoJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJykKICAgID4+PiBtc2dbJ1N1YmplY3QnXSA9IGgKLSAgID4+PiBwcmludChtc2cuYXNfc3RyaW5nKCkpCi0gICBTdWJqZWN0OiA9P2lzby04ODU5LTE/cT9wPUY2c3RhbD89CisgICA+Pj4gbXNnLmFzX3N0cmluZygpCisgICAnU3ViamVjdDogPT9pc28tODg1OS0xP3E/cD1GNnN0YWw/PVxuXG4nCiAKIAogCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogICAgICAgPj4+IGZyb20gZW1haWwuaGVhZGVyIGltcG9ydCBkZWNvZGVfaGVhZGVyCiAgICAgICA+Pj4gZGVjb2RlX2hlYWRlcignPT9pc28tODg1OS0xP3E/cD1GNnN0YWw/PScpCi0gICAgICBbKCdwXHhmNnN0YWwnLCAnaXNvLTg4NTktMScpXQorICAgICAgWyhiJ3BceGY2c3RhbCcsICdpc28tODg1OS0xJyldCiAKIAogLi4gZnVuY3Rpb246OiBtYWtlX2hlYWRlcihkZWNvZGVkX3NlcSwgbWF4bGluZWxlbj1Ob25lLCBoZWFkZXJfbmFtZT1Ob25lLCBjb250aW51YXRpb25fd3M9JyAnKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ODQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKQEAgLTAsMCArMSw0NTIgQEAKKzptb2Q6YGVtYWlsLmhlYWRlcnJlZ2lzdHJ5YDogQ3VzdG9tIEhlYWRlciBPYmplY3RzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBtb2R1bGU6OiBlbWFpbC5oZWFkZXJyZWdpc3RyeQorICAgOnN5bm9wc2lzOiBBdXRvbWF0aWMgUGFyc2luZyBvZiBoZWFkZXJzIGJhc2VkIG9uIHRoZSBmaWVsZCBuYW1lCisKKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorCisKKy4uIG5vdGU6OgorCisgICBUaGUgaGVhZGVycmVnaXN0cnkgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKKyAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCisgICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAorICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCisKK0hlYWRlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IGN1c3RvbWl6ZWQgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHN0cmAuICBUaGUKK3BhcnRpY3VsYXIgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYSBnaXZlbiBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUKKzphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBvZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgaW4KK2VmZmVjdCB3aGVuIHRoZSBoZWFkZXJzIGFyZSBjcmVhdGVkLiAgVGhpcyBzZWN0aW9uIGRvY3VtZW50cyB0aGUgcGFydGljdWxhcgorYGBoZWFkZXJfZmFjdG9yeWBgIGltcGxlbWVudGVkIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIGZvciBoYW5kbGluZyA6UkZDOmA1MzIyYAorY29tcGxpYW50IGVtYWlsIG1lc3NhZ2VzLCB3aGljaCBub3Qgb25seSBwcm92aWRlcyBjdXN0b21pemVkIGhlYWRlciBvYmplY3RzIGZvcgordmFyaW91cyBoZWFkZXIgdHlwZXMsIGJ1dCBhbHNvIHByb3ZpZGVzIGFuIGV4dGVuc2lvbiBtZWNoYW5pc20gZm9yIGFwcGxpY2F0aW9ucwordG8gYWRkIHRoZWlyIG93biBjdXN0b20gaGVhZGVyIHR5cGVzLgorCitXaGVuIHVzaW5nIGFueSBvZiB0aGUgcG9saWN5IG9iamVjdHMgZGVyaXZlZCBmcm9tCis6ZGF0YTpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAsIGFsbCBoZWFkZXJzIGFyZSBwcm9kdWNlZCBieQorOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgIGFuZCBoYXZlIDpjbGFzczpgLkJhc2VIZWFkZXJgIGFzIHRoZWlyIGxhc3QgYmFzZQorY2xhc3MuICBFYWNoIGhlYWRlciBjbGFzcyBoYXMgYW4gYWRkaXRpb25hbCBiYXNlIGNsYXNzIHRoYXQgaXMgZGV0ZXJtaW5lZCBieQordGhlIHR5cGUgb2YgdGhlIGhlYWRlci4gIEZvciBleGFtcGxlLCBtYW55IGhlYWRlcnMgaGF2ZSB0aGUgY2xhc3MKKzpjbGFzczpgLlVuc3RydWN0dXJlZEhlYWRlcmAgYXMgdGhlaXIgb3RoZXIgYmFzZSBjbGFzcy4gIFRoZSBzcGVjaWFsaXplZCBzZWNvbmQKK2NsYXNzIGZvciBhIGhlYWRlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIsIHVzaW5nIGEgbG9va3VwCit0YWJsZSBzdG9yZWQgaW4gdGhlIDpjbGFzczpgLkhlYWRlclJlZ2lzdHJ5YC4gIEFsbCBvZiB0aGlzIGlzIG1hbmFnZWQKK3RyYW5zcGFyZW50bHkgZm9yIHRoZSB0eXBpY2FsIGFwcGxpY2F0aW9uIHByb2dyYW0sIGJ1dCBpbnRlcmZhY2VzIGFyZSBwcm92aWRlZAorZm9yIG1vZGlmeWluZyB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdXNlIGJ5IG1vcmUgY29tcGxleCBhcHBsaWNhdGlvbnMuCisKK1RoZSBzZWN0aW9ucyBiZWxvdyBmaXJzdCBkb2N1bWVudCB0aGUgaGVhZGVyIGJhc2UgY2xhc3NlcyBhbmQgdGhlaXIgYXR0cmlidXRlcywKK2ZvbGxvd2VkIGJ5IHRoZSBBUEkgZm9yIG1vZGlmeWluZyB0aGUgYmVoYXZpb3Igb2YgOmNsYXNzOmAuSGVhZGVyUmVnaXN0cnlgLCBhbmQKK2ZpbmFsbHkgdGhlIHN1cHBvcnQgY2xhc3NlcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBwYXJzZWQgZnJvbSBzdHJ1Y3R1cmVkCitoZWFkZXJzLgorCisKKy4uIGNsYXNzOjogQmFzZUhlYWRlcihuYW1lLCB2YWx1ZSkKKworICAgKm5hbWUqIGFuZCAqdmFsdWUqIGFyZSBwYXNzZWQgdG8gYGBCYXNlSGVhZGVyYGAgZnJvbSB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBjYWxsLiAgVGhlIHN0cmluZyB2YWx1ZSBvZgorICAgYW55IGhlYWRlciBvYmplY3QgaXMgdGhlICp2YWx1ZSogZnVsbHkgZGVjb2RlZCB0byB1bmljb2RlLgorCisgICBUaGlzIGJhc2UgY2xhc3MgZGVmaW5lcyB0aGUgZm9sbG93aW5nIHJlYWQtb25seSBwcm9wZXJ0aWVzOgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciAodGhlIHBvcnRpb24gb2YgdGhlIGZpZWxkIGJlZm9yZSB0aGUgJzonKS4gIFRoaXMKKyAgICAgIGlzIGV4YWN0bHkgdGhlIHZhbHVlIHBhc3NlZCBpbiB0aGUgOmF0dHI6YH5FbWFpbFBvbGljeS5oZWFkZXJfZmFjdG9yeWAKKyAgICAgIGNhbGwgZm9yICpuYW1lKjsgdGhhdCBpcywgY2FzZSBpcyBwcmVzZXJ2ZWQuCisKKworICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cworCisgICAgICBBIHR1cGxlIG9mIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyRGVmZWN0YCBpbnN0YW5jZXMgcmVwb3J0aW5nIGFueQorICAgICAgUkZDIGNvbXBsaWFuY2UgcHJvYmxlbXMgZm91bmQgZHVyaW5nIHBhcnNpbmcuICBUaGUgZW1haWwgcGFja2FnZSB0cmllcyB0bworICAgICAgYmUgY29tcGxldGUgYWJvdXQgZGV0ZWN0aW5nIGNvbXBsaWFuY2UgaXNzdWVzLiAgU2VlIHRoZSA6bW9kOmBlcnJvcnNgCisgICAgICBtb2R1bGUgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUgdHlwZXMgb2YgZGVmZWN0cyB0aGF0IG1heSBiZSByZXBvcnRlZC4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfY291bnQKKworICAgICAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGhlYWRlcnMgb2YgdGhpcyB0eXBlIHRoYXQgY2FuIGhhdmUgdGhlIHNhbWUKKyAgICAgIGBgbmFtZWBgLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB1bmxpbWl0ZWQuICBUaGUgYGBCYXNlSGVhZGVyYGAgdmFsdWUKKyAgICAgIGZvciB0aGlzIGF0dHJpYnV0ZSBpcyBgYE5vbmVgYDsgaXQgaXMgZXhwZWN0ZWQgdGhhdCBzcGVjaWFsaXplZCBoZWFkZXIKKyAgICAgIGNsYXNzZXMgd2lsbCBvdmVycmlkZSB0aGlzIHZhbHVlIGFzIG5lZWRlZC4KKworICAgYGBCYXNlSGVhZGVyYGAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZCwgd2hpY2ggaXMgY2FsbGVkIGJ5IHRoZQorICAgZW1haWwgbGlicmFyeSBjb2RlIGFuZCBzaG91bGQgbm90IGluIGdlbmVyYWwgYmUgY2FsbGVkIGJ5IGFwcGxpY2F0aW9uCisgICBwcm9ncmFtczoKKworICAgLi4gbWV0aG9kOjogZm9sZCgqLCBwb2xpY3kpCisKKyAgICAgIFJldHVybiBhIHN0cmluZyBjb250YWluaW5nIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5saW5lc2VwYAorICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZworICAgICAgdG8gKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YKKyAgICAgIGBgOGJpdGBgIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBzdHJpbmdzCisgICAgICBtYXkgbm90IGNvbnRhaW4gYmluYXJ5IGRhdGEuCisKKworICAgYGBCYXNlSGVhZGVyYGAgYnkgaXRzZWxmIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBvYmplY3QuICBJdAorICAgZGVmaW5lcyBhIHByb3RvY29sIHRoYXQgZWFjaCBzcGVjaWFsaXplZCBoZWFkZXIgY29vcGVyYXRlcyB3aXRoIGluIG9yZGVyIHRvCisgICBwcm9kdWNlIHRoZSBoZWFkZXIgb2JqZWN0LiAgU3BlY2lmaWNhbGx5LCBgYEJhc2VIZWFkZXJgYCByZXF1aXJlcyB0aGF0CisgICB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgcHJvdmlkZSBhIDpmdW5jOmBjbGFzc21ldGhvZGAgbmFtZWQgYGBwYXJzZWBgLiAgVGhpcworICAgbWV0aG9kIGlzIGNhbGxlZCBhcyBmb2xsb3dzOjoKKworICAgICAgIHBhcnNlKHN0cmluZywga3dkcykKKworICAgYGBrd2RzYGAgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgb25lIHByZS1pbml0aWFsaXplZCBrZXksIGBgZGVmZWN0c2BgLgorICAgYGBkZWZlY3RzYGAgaXMgYW4gZW1wdHkgbGlzdC4gIFRoZSBwYXJzZSBtZXRob2Qgc2hvdWxkIGFwcGVuZCBhbnkgZGV0ZWN0ZWQKKyAgIGRlZmVjdHMgdG8gdGhpcyBsaXN0LiAgT24gcmV0dXJuLCB0aGUgYGBrd2RzYGAgZGljdGlvbmFyeSAqbXVzdCogY29udGFpbgorICAgdmFsdWVzIGZvciBhdCBsZWFzdCB0aGUga2V5cyBgYGRlY29kZWRgYCBhbmQgYGBkZWZlY3RzYGAuICBgYGRlY29kZWRgYAorICAgc2hvdWxkIGJlIHRoZSBzdHJpbmcgdmFsdWUgZm9yIHRoZSBoZWFkZXIgKHRoYXQgaXMsIHRoZSBoZWFkZXIgdmFsdWUgZnVsbHkKKyAgIGRlY29kZWQgdG8gdW5pY29kZSkuICBUaGUgcGFyc2UgbWV0aG9kIHNob3VsZCBhc3N1bWUgdGhhdCAqc3RyaW5nKiBtYXkKKyAgIGNvbnRhaW4gdHJhbnNwb3J0IGVuY29kZWQgcGFydHMsIGJ1dCBzaG91bGQgY29ycmVjdGx5IGhhbmRsZSBhbGwgdmFsaWQKKyAgIHVuaWNvZGUgY2hhcmFjdGVycyBhcyB3ZWxsIHNvIHRoYXQgaXQgY2FuIHBhcnNlIHVuLWVuY29kZWQgaGVhZGVyIHZhbHVlcy4KKworICAgYGBCYXNlSGVhZGVyYGAncyBgYF9fbmV3X19gYCB0aGVuIGNyZWF0ZXMgdGhlIGhlYWRlciBpbnN0YW5jZSwgYW5kIGNhbGxzIGl0cworICAgYGBpbml0YGAgbWV0aG9kLiAgVGhlIHNwZWNpYWxpemVkIGNsYXNzIG9ubHkgbmVlZHMgdG8gcHJvdmlkZSBhbiBgYGluaXRgYAorICAgbWV0aG9kIGlmIGl0IHdpc2hlcyB0byBzZXQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIGJleW9uZCB0aG9zZSBwcm92aWRlZCBieQorICAgYGBCYXNlSGVhZGVyYGAgaXRzZWxmLiAgU3VjaCBhbiBgYGluaXRgYCBtZXRob2Qgc2hvdWxkIGxvb2sgbGlrZSB0aGlzOjoKKworICAgICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgc2VsZi5fbXlhdHRyID0ga3cucG9wKCdteWF0dHInKQorICAgICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgIFRoYXQgaXMsIGFueXRoaW5nIGV4dHJhIHRoYXQgdGhlIHNwZWNpYWxpemVkIGNsYXNzIHB1dHMgaW4gdG8gdGhlIGBga3dkc2BgCisgICBkaWN0aW9uYXJ5IHNob3VsZCBiZSByZW1vdmVkIGFuZCBoYW5kbGVkLCBhbmQgdGhlIHJlbWFpbmluZyBjb250ZW50cyBvZgorICAgYGBrd2BgIChhbmQgYGBhcmdzYGApIHBhc3NlZCB0byB0aGUgYGBCYXNlSGVhZGVyYGAgYGBpbml0YGAgbWV0aG9kLgorCisKKy4uIGNsYXNzOjogVW5zdHJ1Y3R1cmVkSGVhZGVyCisKKyAgIEFuICJ1bnN0cnVjdHVyZWQiIGhlYWRlciBpcyB0aGUgZGVmYXVsdCB0eXBlIG9mIGhlYWRlciBpbiA6cmZjOmA1MzIyYC4KKyAgIEFueSBoZWFkZXIgdGhhdCBkb2VzIG5vdCBoYXZlIGEgc3BlY2lmaWVkIHN5bnRheCBpcyB0cmVhdGVkIGFzCisgICB1bnN0cnVjdHVyZWQuICBUaGUgY2xhc3NpYyBleGFtcGxlIG9mIGFuIHVuc3RydWN0dXJlZCBoZWFkZXIgaXMgdGhlCisgICA6bWFpbGhlYWRlcjpgU3ViamVjdGAgaGVhZGVyLgorCisgICBJbiA6cmZjOmA1MzIyYCwgYW4gdW5zdHJ1Y3R1cmVkIGhlYWRlciBpcyBhIHJ1biBvZiBhcmJpdHJhcnkgdGV4dCBpbiB0aGUKKyAgIEFTQ0lJIGNoYXJhY3RlciBzZXQuICA6cmZjOmAyMDQ3YCwgaG93ZXZlciwgaGFzIGFuIDpyZmM6YDUzMjJgIGNvbXBhdGlibGUKKyAgIG1lY2hhbmlzbSBmb3IgZW5jb2Rpbmcgbm9uLUFTQ0lJIHRleHQgYXMgQVNDSUkgY2hhcmFjdGVycyB3aXRoaW4gYSBoZWFkZXIKKyAgIHZhbHVlLiAgV2hlbiBhICp2YWx1ZSogY29udGFpbmluZyBlbmNvZGVkIHdvcmRzIGlzIHBhc3NlZCB0byB0aGUKKyAgIGNvbnN0cnVjdG9yLCB0aGUgYGBVbnN0cnVjdHVyZWRIZWFkZXJgYCBwYXJzZXIgY29udmVydHMgc3VjaCBlbmNvZGVkIHdvcmRzCisgICBiYWNrIGluIHRvIHRoZSBvcmlnaW5hbCB1bmljb2RlLCBmb2xsb3dpbmcgdGhlIDpyZmM6YDIwNDdgIHJ1bGVzIGZvcgorICAgdW5zdHJ1Y3R1cmVkIHRleHQuICBUaGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBhdHRlbXB0IHRvIGRlY29kZSBjZXJ0YWluCisgICBub24tY29tcGxpYW50IGVuY29kZWQgd29yZHMuICBEZWZlY3RzIGFyZSByZWdpc3RlcmVkIGluIHN1Y2ggY2FzZXMsIGFzIHdlbGwKKyAgIGFzIGRlZmVjdHMgZm9yIGlzc3VlcyBzdWNoIGFzIGludmFsaWQgY2hhcmFjdGVycyB3aXRoaW4gdGhlIGVuY29kZWQgd29yZHMgb3IKKyAgIHRoZSBub24tZW5jb2RlZCB0ZXh0LgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIG5vIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KKworCisuLiBjbGFzczo6IERhdGVIZWFkZXIKKworICAgOnJmYzpgNTMyMmAgc3BlY2lmaWVzIGEgdmVyeSBzcGVjaWZpYyBmb3JtYXQgZm9yIGRhdGVzIHdpdGhpbiBlbWFpbCBoZWFkZXJzLgorICAgVGhlIGBgRGF0ZUhlYWRlcmBgIHBhcnNlciByZWNvZ25pemVzIHRoYXQgZGF0ZSBmb3JtYXQsIGFzIHdlbGwgYXMKKyAgIHJlY29nbml6aW5nIGEgbnVtYmVyIG9mIHZhcmlhbnQgZm9ybXMgdGhhdCBhcmUgc29tZXRpbWVzIGZvdW5kICJpbiB0aGUKKyAgIHdpbGQiLgorCisgICBUaGlzIGhlYWRlciB0eXBlIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiBkYXRldGltZQorCisgICAgICBJZiB0aGUgaGVhZGVyIHZhbHVlIGNhbiBiZSByZWNvZ25pemVkIGFzIGEgdmFsaWQgZGF0ZSBvZiBvbmUgZm9ybSBvcgorICAgICAgYW5vdGhlciwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250YWluIGEgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgCisgICAgICBpbnN0YW5jZSByZXByZXNlbnRpbmcgdGhhdCBkYXRlLiAgSWYgdGhlIHRpbWV6b25lIG9mIHRoZSBpbnB1dCBkYXRlIGlzCisgICAgICBzcGVjaWZpZWQgYXMgYGAtMDAwMGBgIChpbmRpY2F0aW5nIGl0IGlzIGluIFVUQyBidXQgY29udGFpbnMgbm8KKyAgICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzb3VyY2UgdGltZXpvbmUpLCB0aGVuIDphdHRyOmAuZGF0ZXRpbWVgIHdpbGwgYmUgYQorICAgICAgbmFpdmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgLiAgSWYgYSBzcGVjaWZpYyB0aW1lem9uZSBvZmZzZXQgaXMKKyAgICAgIGZvdW5kIChpbmNsdWRpbmcgYCswMDAwYCksIHRoZW4gOmF0dHI6YC5kYXRldGltZWAgd2lsbCBjb250YWluIGFuIGF3YXJlCisgICAgICBgYGRhdGV0aW1lYGAgdGhhdCB1c2VzIDpjbGFzczpgZGF0ZXRpbWUudGltZXpvbmVgIHRvIHJlY29yZCB0aGUgdGltZXpvbmUKKyAgICAgIG9mZnNldC4KKworICAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIG9mIHRoZSBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSBmb3JtYXR0aW5nIHRoZQorICAgYGBkYXRldGltZWBgIGFjY29yZGluZyB0byB0aGUgOnJmYzpgNTMyMmAgcnVsZXM7IHRoYXQgaXMsIGl0IGlzIHNldCB0bzo6CisKKyAgICAgICBlbWFpbC51dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5kYXRldGltZSkKKworICAgV2hlbiBjcmVhdGluZyBhIGBgRGF0ZUhlYWRlcmBgLCAqdmFsdWUqIG1heSBiZQorICAgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGluc3RhbmNlLiAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQKKyAgIHRoZSBmb2xsb3dpbmcgY29kZSBpcyB2YWxpZCBhbmQgZG9lcyB3aGF0IG9uZSB3b3VsZCBleHBlY3Q6OgorCisgICAgICAgbXNnWydEYXRlJ10gID0gZGF0ZXRpbWUoMjAxMSwgNywgMTUsIDIxKQorCisgICBCZWNhdXNlIHRoaXMgaXMgYSBuYWl2ZSBgYGRhdGV0aW1lYGAgaXQgd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBhIFVUQworICAgdGltZXN0YW1wLCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZSB3aWxsIGhhdmUgYSB0aW1lem9uZSBvZiBgYC0wMDAwYGAuICBNdWNoCisgICBtb3JlIHVzZWZ1bCBpcyB0byB1c2UgdGhlIDpmdW5jOmB+ZW1haWwudXRpbHMubG9jYWx0aW1lYCBmdW5jdGlvbiBmcm9tIHRoZQorICAgOm1vZDpgfmVtYWlsLnV0aWxzYCBtb2R1bGU6OgorCisgICAgICAgbXNnWydEYXRlJ10gPSB1dGlscy5sb2NhbHRpbWUoKQorCisgICBUaGlzIGV4YW1wbGUgc2V0cyB0aGUgZGF0ZSBoZWFkZXIgdG8gdGhlIGN1cnJlbnQgdGltZSBhbmQgZGF0ZSB1c2luZworICAgdGhlIGN1cnJlbnQgdGltZXpvbmUgb2Zmc2V0LgorCisKKy4uIGNsYXNzOjogQWRkcmVzc0hlYWRlcgorCisgICBBZGRyZXNzIGhlYWRlcnMgYXJlIG9uZSBvZiB0aGUgbW9zdCBjb21wbGV4IHN0cnVjdHVyZWQgaGVhZGVyIHR5cGVzLgorICAgVGhlIGBgQWRkcmVzc0hlYWRlcmBgIGNsYXNzIHByb3ZpZGVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gYW55IGFkZHJlc3MKKyAgIGhlYWRlci4KKworICAgVGhpcyBoZWFkZXIgdHlwZSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworCisgICAuLiBhdHRyaWJ1dGU6OiBncm91cHMKKworICAgICAgQSB0dXBsZSBvZiA6Y2xhc3M6YC5Hcm91cGAgb2JqZWN0cyBlbmNvZGluZyB0aGUKKyAgICAgIGFkZHJlc3NlcyBhbmQgZ3JvdXBzIGZvdW5kIGluIHRoZSBoZWFkZXIgdmFsdWUuICBBZGRyZXNzZXMgdGhhdCBhcmUKKyAgICAgIG5vdCBwYXJ0IG9mIGEgZ3JvdXAgYXJlIHJlcHJlc2VudGVkIGluIHRoaXMgbGlzdCBhcyBzaW5nbGUtYWRkcmVzcworICAgICAgYGBHcm91cHNgYCB3aG9zZSA6YXR0cjpgfi5Hcm91cC5kaXNwbGF5X25hbWVgIGlzIGBgTm9uZWBgLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJlc3NlcworCisgICAgICBBIHR1cGxlIG9mIDpjbGFzczpgLkFkZHJlc3NgIG9iamVjdHMgZW5jb2RpbmcgYWxsCisgICAgICBvZiB0aGUgaW5kaXZpZHVhbCBhZGRyZXNzZXMgZnJvbSB0aGUgaGVhZGVyIHZhbHVlLiAgSWYgdGhlIGhlYWRlciB2YWx1ZQorICAgICAgY29udGFpbnMgYW55IGdyb3VwcywgdGhlIGluZGl2aWR1YWwgYWRkcmVzc2VzIGZyb20gdGhlIGdyb3VwIGFyZSBpbmNsdWRlZAorICAgICAgaW4gdGhlIGxpc3QgYXQgdGhlIHBvaW50IHdoZXJlIHRoZSBncm91cCBvY2N1cnMgaW4gdGhlIHZhbHVlICh0aGF0IGlzLAorICAgICAgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIGlzICJmbGF0dGVuZWQiIGludG8gYSBvbmUgZGltZW5zaW9uYWwgbGlzdCkuCisKKyAgIFRoZSBgYGRlY29kZWRgYCB2YWx1ZSBvZiB0aGUgaGVhZGVyIHdpbGwgaGF2ZSBhbGwgZW5jb2RlZCB3b3JkcyBkZWNvZGVkIHRvCisgICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8gdW5pY29kZS4gIFRoZQorICAgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlIDpjbGFzczpgc3RyYCB2YWx1ZSBvZgorICAgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywgJ2BgLgorCisgICBBIGxpc3Qgb2YgOmNsYXNzOmAuQWRkcmVzc2AgYW5kIDpjbGFzczpgLkdyb3VwYCBvYmplY3RzIGluIGFueSBjb21iaW5hdGlvbgorICAgbWF5IGJlIHVzZWQgdG8gc2V0IHRoZSB2YWx1ZSBvZiBhbiBhZGRyZXNzIGhlYWRlci4gIGBgR3JvdXBgYCBvYmplY3RzIHdob3NlCisgICBgYGRpc3BsYXlfbmFtZWBgIGlzIGBgTm9uZWBgIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgc2luZ2xlIGFkZHJlc3Nlcywgd2hpY2gKKyAgIGFsbG93cyBhbiBhZGRyZXNzIGxpc3QgdG8gYmUgY29waWVkIHdpdGggZ3JvdXBzIGludGFjdCBieSB1c2luZyB0aGUgbGlzdAorICAgb2J0YWluZWQgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCisKKworLi4gY2xhc3M6OiBTaW5nbGVBZGRyZXNzSGVhZGVyCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmNsYXNzOmAuQWRkcmVzc0hlYWRlcmAgdGhhdCBhZGRzIG9uZQorICAgYWRkaXRpb25hbCBhdHRyaWJ1dGU6CisKKworICAgLi4gYXR0cmlidXRlOjogYWRkcmVzcworCisgICAgICBUaGUgc2luZ2xlIGFkZHJlc3MgZW5jb2RlZCBieSB0aGUgaGVhZGVyIHZhbHVlLiAgSWYgdGhlIGhlYWRlciB2YWx1ZQorICAgICAgYWN0dWFsbHkgY29udGFpbnMgbW9yZSB0aGFuIG9uZSBhZGRyZXNzICh3aGljaCB3b3VsZCBiZSBhIHZpb2xhdGlvbiBvZgorICAgICAgdGhlIFJGQyB1bmRlciB0aGUgZGVmYXVsdCA6bW9kOmBwb2xpY3lgKSwgYWNjZXNzaW5nIHRoaXMgYXR0cmlidXRlIHdpbGwKKyAgICAgIHJlc3VsdCBpbiBhIDpleGM6YFZhbHVlRXJyb3JgLgorCisKK01hbnkgb2YgdGhlIGFib3ZlIGNsYXNzZXMgYWxzbyBoYXZlIGEgYGBVbmlxdWVgYCB2YXJpYW50IChmb3IgZXhhbXBsZSwKK2BgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyYGApLiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBpcyB0aGF0IGluIHRoZSBgYFVuaXF1ZWBgCit2YXJpYW50LCA6YXR0cjpgfi5CYXNlSGVhZGVyLm1heF9jb3VudGAgaXMgc2V0IHRvIDEuCisKKworLi4gY2xhc3M6OiBNSU1FVmVyc2lvbkhlYWRlcgorCisgICBUaGVyZSBpcyByZWFsbHkgb25seSBvbmUgdmFsaWQgdmFsdWUgZm9yIHRoZSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAorICAgaGVhZGVyLCBhbmQgdGhhdCBpcyBgYDEuMGBgLiAgRm9yIGZ1dHVyZSBwcm9vZmluZywgdGhpcyBoZWFkZXIgY2xhc3MKKyAgIHN1cHBvcnRzIG90aGVyIHZhbGlkIHZlcnNpb24gbnVtYmVycy4gIElmIGEgdmVyc2lvbiBudW1iZXIgaGFzIGEgdmFsaWQgdmFsdWUKKyAgIHBlciA6cmZjOmAyMDQ1YCwgdGhlbiB0aGUgaGVhZGVyIG9iamVjdCB3aWxsIGhhdmUgbm9uLWBgTm9uZWBgIHZhbHVlcyBmb3IKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorCisgICAgICBUaGUgdmVyc2lvbiBudW1iZXIgYXMgYSBzdHJpbmcsIHdpdGggYW55IHdoaXRlc3BhY2UgYW5kL29yIGNvbW1lbnRzCisgICAgICByZW1vdmVkLgorCisgICAuLiBhdHRyaWJ1dGU6OiBtYWpvcgorCisgICAgICBUaGUgbWFqb3IgdmVyc2lvbiBudW1iZXIgYXMgYW4gaW50ZWdlcgorCisgICAuLiBhdHRyaWJ1dGU6OiBtaW5vcgorCisgICAgICBUaGUgbWlub3IgdmVyc2lvbiBudW1iZXIgYXMgYW4gaW50ZWdlcgorCisKKy4uIGNsYXNzOjogUGFyYW1ldGVyaXplZE1JTUVIZWFkZXIKKworICAgIE1PTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKKyAgICBhIGNlcnRhaW4gdmFsdWUsIGRlc2NyaWJlZCB1bmRlciB0aGUgY2xhc3MgZm9yIHRoYXQgaGVhZGVyLiAgU29tZSBjYW4KKyAgICBhbHNvIHRha2UgYSBsaXN0IG9mIHN1cHBsZW1lbnRhbCBwYXJhbWV0ZXJzLCB3aGljaCBoYXZlIGEgY29tbW9uIGZvcm1hdC4KKyAgICBUaGlzIGNsYXNzIHNlcnZlcyBhcyBhIGJhc2UgZm9yIGFsbCB0aGUgTUlNRSBoZWFkZXJzIHRoYXQgdGFrZSBwYXJhbWV0ZXJzLgorCisgICAgLi4gYXR0cmlidXRlOjogcGFyYW1zCisKKyAgICAgICBBIGRpY3Rpb25hcnkgbWFwcGluZyBwYXJhbWV0ZXIgbmFtZXMgdG8gcGFyYW1ldGVyIHZhbHVlcy4KKworCisuLiBjbGFzczo6IENvbnRlbnRUeXBlSGVhZGVyCisKKyAgICBBIDpjbGFzczpgUGFyYW1ldGVyaXplZE1JTUVIaGVhZGVyYCBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorCisgICAgLi4gYXR0cmlidXRlOjogY29udGVudF90eXBlCisKKyAgICAgICBUaGUgY29udGVudCB0eXBlIHN0cmluZywgaW4gdGhlIGZvcm0gYGBtYWludHlwZS9zdWJ0eXBlYGAuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBtYWludHlwZQorCisgICAgLi4gYXR0cmlidXRlOjogc3VidHlwZQorCisKKy4uIGNsYXNzOjogQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyCisKKyAgICBBIDpjbGFzczpgUGFyYW1ldGVyaXplZE1JTUVIaGVhZGVyYCBjbGFzcyB0aGF0IGhhbmRsZXMgdGhlCisgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNvbnRlbnQtZGlzcG9zaXRpb24KKworICAgICAgIGBgaW5saW5lYGAgYW5kIGBgYXR0YWNobWVudGBgIGFyZSB0aGUgb25seSB2YWxpZCB2YWx1ZXMgaW4gY29tbW9uIHVzZS4KKworCisuLiBjbGFzczo6IENvbnRlbnRUcmFuc2ZlckVuY29kaW5nCisKKyAgIEhhbmRsZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGN0ZQorCisgICAgICBWYWxpZCB2YWx1ZXMgYXJlIGBgN2JpdGBgLCBgYDhiaXRgYCwgYGBiYXNlNjRgYCwgYW5kCisgICAgICBgYHF1b3RlZC1wcmludGFibGVgYC4gIFNlZSA6cmZjOmAyMDQ1YCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworCisKKy4uIGNsYXNzOjogSGVhZGVyUmVnaXN0cnkoYmFzZV9jbGFzcz1CYXNlSGVhZGVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfY2xhc3M9VW5zdHJ1Y3R1cmVkSGVhZGVyLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9kZWZhdWx0X21hcD1UcnVlKQorCisgICAgVGhpcyBpcyB0aGUgZmFjdG9yeSB1c2VkIGJ5IDpjbGFzczpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeWAgYnkgZGVmYXVsdC4KKyAgICBgYEhlYWRlclJlZ2lzdHJ5YGAgYnVpbGRzIHRoZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBpbnN0YW5jZQorICAgIGR5bmFtaWNhbGx5LCB1c2luZyAqYmFzZV9jbGFzcyogYW5kIGEgc3BlY2lhbGl6ZWQgY2xhc3MgcmV0cmlldmVkIGZyb20gYQorICAgIHJlZ2lzdHJ5IHRoYXQgaXQgaG9sZHMuICBXaGVuIGEgZ2l2ZW4gaGVhZGVyIG5hbWUgZG9lcyBub3QgYXBwZWFyIGluIHRoZQorICAgIHJlZ2lzdHJ5LCB0aGUgY2xhc3Mgc3BlY2lmaWVkIGJ5ICpkZWZhdWx0X2NsYXNzKiBpcyB1c2VkIGFzIHRoZSBzcGVjaWFsaXplZAorICAgIGNsYXNzLiAgV2hlbiAqdXNlX2RlZmF1bHRfbWFwKiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCB0aGUgc3RhbmRhcmQKKyAgICBtYXBwaW5nIG9mIGhlYWRlciBuYW1lcyB0byBjbGFzc2VzIGlzIGNvcGllZCBpbiB0byB0aGUgcmVnaXN0cnkgZHVyaW5nCisgICAgaW5pdGlhbGl6YXRpb24uICAqYmFzZV9jbGFzcyogaXMgYWx3YXlzIHRoZSBsYXN0IGNsYXNzIGluIHRoZSBnZW5lcmF0ZWQKKyAgICBjbGFzcydzIGBgX19iYXNlc19fYGAgbGlzdC4KKworICAgIFRoZSBkZWZhdWx0IG1hcHBpbmdzIGFyZToKKworICAgICAgOnN1YmplY3Q6ICAgICAgICAgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyCisgICAgICA6ZGF0ZTogICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyCisgICAgICA6cmVzZW50LWRhdGU6ICAgICBEYXRlSGVhZGVyCisgICAgICA6b3JpZy1kYXRlOiAgICAgICBVbmlxdWVEYXRlSGVhZGVyCisgICAgICA6c2VuZGVyOiAgICAgICAgICBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LXNlbmRlcjogICBTaW5nbGVBZGRyZXNzSGVhZGVyCisgICAgICA6dG86ICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LXRvOiAgICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6Y2M6ICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LWNjOiAgICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6ZnJvbTogICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisgICAgICA6cmVzZW50LWZyb206ICAgICBBZGRyZXNzSGVhZGVyCisgICAgICA6cmVwbHktdG86ICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyCisKKyAgICBgYEhlYWRlclJlZ2lzdHJ5YGAgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKKworCisgICAgLi4gbWV0aG9kOjogbWFwX3RvX3R5cGUoc2VsZiwgbmFtZSwgY2xzKQorCisgICAgICAgKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gYmUgbWFwcGVkLiAgSXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8KKyAgICAgICBsb3dlciBjYXNlIGluIHRoZSByZWdpc3RyeS4gICpjbHMqIGlzIHRoZSBzcGVjaWFsaXplZCBjbGFzcyB0byBiZSB1c2VkLAorICAgICAgIGFsb25nIHdpdGggKmJhc2VfY2xhc3MqLCB0byBjcmVhdGUgdGhlIGNsYXNzIHVzZWQgdG8gaW5zdGFudGlhdGUgaGVhZGVycworICAgICAgIHRoYXQgbWF0Y2ggKm5hbWUqLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2dldGl0ZW1fXyhuYW1lKQorCisgICAgICAgQ29uc3RydWN0IGFuZCByZXR1cm4gYSBjbGFzcyB0byBoYW5kbGUgY3JlYXRpbmcgYSAqbmFtZSogaGVhZGVyLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2NhbGxfXyhuYW1lLCB2YWx1ZSkKKworICAgICAgIFJldHJpZXZlcyB0aGUgc3BlY2lhbGl6ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCAqbmFtZSogZnJvbSB0aGUKKyAgICAgICByZWdpc3RyeSAodXNpbmcgKmRlZmF1bHRfY2xhc3MqIGlmICpuYW1lKiBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlCisgICAgICAgcmVnaXN0cnkpIGFuZCBjb21wb3NlcyBpdCB3aXRoICpiYXNlX2NsYXNzKiB0byBwcm9kdWNlIGEgY2xhc3MsCisgICAgICAgY2FsbHMgdGhlIGNvbnN0cnVjdGVkIGNsYXNzJ3MgY29uc3RydWN0b3IsIHBhc3NpbmcgaXQgdGhlIHNhbWUKKyAgICAgICBhcmd1bWVudCBsaXN0LCBhbmQgZmluYWxseSByZXR1cm5zIHRoZSBjbGFzcyBpbnN0YW5jZSBjcmVhdGVkIHRoZXJlYnkuCisKKworVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB0aGUgY2xhc3NlcyB1c2VkIHRvIHJlcHJlc2VudCBkYXRhIHBhcnNlZCBmcm9tCitzdHJ1Y3R1cmVkIGhlYWRlcnMgYW5kIGNhbiwgaW4gZ2VuZXJhbCwgYmUgdXNlZCBieSBhbiBhcHBsaWNhdGlvbiBwcm9ncmFtIHRvCitjb25zdHJ1Y3Qgc3RydWN0dXJlZCB2YWx1ZXMgdG8gYXNzaWduIHRvIHNwZWNpZmljIGhlYWRlcnMuCisKKworLi4gY2xhc3M6OiBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nJywgdXNlcm5hbWU9JycsIGRvbWFpbj0nJywgYWRkcl9zcGVjPU5vbmUpCisKKyAgIFRoZSBjbGFzcyB1c2VkIHRvIHJlcHJlc2VudCBhbiBlbWFpbCBhZGRyZXNzLiAgVGhlIGdlbmVyYWwgZm9ybSBvZiBhbgorICAgYWRkcmVzcyBpczo6CisKKyAgICAgIFtkaXNwbGF5X25hbWVdIDx1c2VybmFtZUBkb21haW4+CisKKyAgIG9yOjoKKworICAgICAgdXNlcm5hbWVAZG9tYWluCisKKyAgIHdoZXJlIGVhY2ggcGFydCBtdXN0IGNvbmZvcm0gdG8gc3BlY2lmaWMgc3ludGF4IHJ1bGVzIHNwZWxsZWQgb3V0IGluCisgICA6cmZjOmA1MzIyYC4KKworICAgQXMgYSBjb252ZW5pZW5jZSAqYWRkcl9zcGVjKiBjYW4gYmUgc3BlY2lmaWVkIGluc3RlYWQgb2YgKnVzZXJuYW1lKiBhbmQKKyAgICpkb21haW4qLCBpbiB3aGljaCBjYXNlICp1c2VybmFtZSogYW5kICpkb21haW4qIHdpbGwgYmUgcGFyc2VkIGZyb20gdGhlCisgICAqYWRkcl9zcGVjKi4gIEFuICphZGRyX3NwZWMqIG11c3QgYmUgYSBwcm9wZXJseSBSRkMgcXVvdGVkIHN0cmluZzsgaWYgaXQgaXMKKyAgIG5vdCBgYEFkZHJlc3NgYCB3aWxsIHJhaXNlIGFuIGVycm9yLiAgVW5pY29kZSBjaGFyYWN0ZXJzIGFyZSBhbGxvd2VkIGFuZAorICAgd2lsbCBiZSBwcm9wZXJ0eSBlbmNvZGVkIHdoZW4gc2VyaWFsaXplZC4gIEhvd2V2ZXIsIHBlciB0aGUgUkZDcywgdW5pY29kZSBpcworICAgKm5vdCogYWxsb3dlZCBpbiB0aGUgdXNlcm5hbWUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogZGlzcGxheV9uYW1lCisKKyAgICAgIFRoZSBkaXNwbGF5IG5hbWUgcG9ydGlvbiBvZiB0aGUgYWRkcmVzcywgaWYgYW55LCB3aXRoIGFsbCBxdW90aW5nCisgICAgICByZW1vdmVkLiAgSWYgdGhlIGFkZHJlc3MgZG9lcyBub3QgaGF2ZSBhIGRpc3BsYXkgbmFtZSwgdGhpcyBhdHRyaWJ1dGUKKyAgICAgIHdpbGwgYmUgYW4gZW1wdHkgc3RyaW5nLgorCisgICAuLiBhdHRyaWJ1dGU6OiB1c2VybmFtZQorCisgICAgICBUaGUgYGB1c2VybmFtZWBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MsIHdpdGggYWxsIHF1b3RpbmcgcmVtb3ZlZC4KKworICAgLi4gYXR0cmlidXRlOjogZG9tYWluCisKKyAgICAgIFRoZSBgYGRvbWFpbmBgIHBvcnRpb24gb2YgdGhlIGFkZHJlc3MuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJfc3BlYworCisgICAgICBUaGUgYGB1c2VybmFtZUBkb21haW5gYCBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBjb3JyZWN0bHkgcXVvdGVkCisgICAgICBmb3IgdXNlIGFzIGEgYmFyZSBhZGRyZXNzICh0aGUgc2Vjb25kIGZvcm0gc2hvd24gYWJvdmUpLiAgVGhpcworICAgICAgYXR0cmlidXRlIGlzIG5vdCBtdXRhYmxlLgorCisgICAuLiBtZXRob2Q6OiBfX3N0cl9fKCkKKworICAgICAgVGhlIGBgc3RyYGAgdmFsdWUgb2YgdGhlIG9iamVjdCBpcyB0aGUgYWRkcmVzcyBxdW90ZWQgYWNjb3JkaW5nIHRvCisgICAgICA6cmZjOmA1MzIyYCBydWxlcywgYnV0IHdpdGggbm8gQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyBvZiBhbnkgbm9uLUFTQ0lJCisgICAgICBjaGFyYWN0ZXJzLgorCisgICBUbyBzdXBwb3J0IFNNVFAgKDpyZmM6YDUzMjFgKSwgYGBBZGRyZXNzYGAgaGFuZGxlcyBvbmUgc3BlY2lhbCBjYXNlOiBpZgorICAgYGB1c2VybmFtZWBgIGFuZCBgYGRvbWFpbmBgIGFyZSBib3RoIHRoZSBlbXB0eSBzdHJpbmcgKG9yIGBgTm9uZWBgKSwgdGhlbgorICAgdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGUgYGBBZGRyZXNzYGAgaXMgYGA8PmBgLgorCisKKy4uIGNsYXNzOjogR3JvdXAoZGlzcGxheV9uYW1lPU5vbmUsIGFkZHJlc3Nlcz1Ob25lKQorCisgICBUaGUgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYW4gYWRkcmVzcyBncm91cC4gIFRoZSBnZW5lcmFsIGZvcm0gb2YgYW4KKyAgIGFkZHJlc3MgZ3JvdXAgaXM6OgorCisgICAgIGRpc3BsYXlfbmFtZTogW2FkZHJlc3MtbGlzdF07CisKKyAgIEFzIGEgY29udmVuaWVuY2UgZm9yIHByb2Nlc3NpbmcgbGlzdHMgb2YgYWRkcmVzc2VzIHRoYXQgY29uc2lzdCBvZiBhIG1peHR1cmUKKyAgIG9mIGdyb3VwcyBhbmQgc2luZ2xlIGFkZHJlc3NlcywgYSBgYEdyb3VwYGAgbWF5IGFsc28gYmUgdXNlZCB0byByZXByZXNlbnQKKyAgIHNpbmdsZSBhZGRyZXNzZXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgYSBncm91cCBieSBzZXR0aW5nICpkaXNwbGF5X25hbWUqIHRvCisgICBgYE5vbmVgYCBhbmQgcHJvdmlkaW5nIGEgbGlzdCBvZiB0aGUgc2luZ2xlIGFkZHJlc3MgYXMgKmFkZHJlc3NlcyouCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRpc3BsYXlfbmFtZQorCisgICAgICBUaGUgYGBkaXNwbGF5X25hbWVgYCBvZiB0aGUgZ3JvdXAuICBJZiBpdCBpcyBgYE5vbmVgYCBhbmQgdGhlcmUgaXMKKyAgICAgIGV4YWN0bHkgb25lIGBgQWRkcmVzc2BgIGluIGBgYWRkcmVzc2VzYGAsIHRoZW4gdGhlIGBgR3JvdXBgYCByZXByZXNlbnRzIGEKKyAgICAgIHNpbmdsZSBhZGRyZXNzIHRoYXQgaXMgbm90IGluIGEgZ3JvdXAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGFkZHJlc3NlcworCisgICAgICBBIHBvc3NpYmx5IGVtcHR5IHR1cGxlIG9mIDpjbGFzczpgLkFkZHJlc3NgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZQorICAgICAgYWRkcmVzc2VzIGluIHRoZSBncm91cC4KKworICAgLi4gbWV0aG9kOjogX19zdHJfXygpCisKKyAgICAgIFRoZSBgYHN0cmBgIHZhbHVlIG9mIGEgYGBHcm91cGBgIGlzIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gOnJmYzpgNTMyMmAsCisgICAgICBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nIG9mIGFueSBub24tQVNDSUkgY2hhcmFjdGVycy4gIElmCisgICAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIG5vbmUgYW5kIHRoZXJlIGlzIGEgc2luZ2xlIGBgQWRkcmVzc2BgIGluIHRoZQorICAgICAgYGBhZGRyZXNzZXNgYCBsaXN0LCB0aGUgYGBzdHJgYCB2YWx1ZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgYHN0cmBgIG9mCisgICAgICB0aGF0IHNpbmdsZSBgYEFkZHJlc3NgYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKaW5kZXggZjY4NWU1NC4uNTlhYjQ3ZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QKQEAgLTExMSwxMCArMTExLDE0IEBACiAgICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAogICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCiAgICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIG9yIGlmIHRoZSBwYXlsb2FkIGhhcyBib2d1cyBiYXNlNjQgZGF0YSwgdGhlIHBheWxvYWQgaXMKKyAgICAgIGhlYWRlciBpcyBtaXNzaW5nLCB0aGUgcGF5bG9hZCBpcwogICAgICAgcmV0dXJuZWQgYXMtaXMgKHVuZGVjb2RlZCkuICBJbiBhbGwgY2FzZXMgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJpbmFyeQogICAgICAgZGF0YS4gIElmIHRoZSBtZXNzYWdlIGlzIGEgbXVsdGlwYXJ0IGFuZCB0aGUgKmRlY29kZSogZmxhZyBpcyBgYFRydWVgYCwKLSAgICAgIHRoZW4gYGBOb25lYGAgaXMgcmV0dXJuZWQuCisgICAgICB0aGVuIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgSWYgdGhlIHBheWxvYWQgaXMgYmFzZTY0IGFuZCBpdCB3YXMgbm90CisgICAgICBwZXJmZWN0bHkgZm9ybWVkIChtaXNzaW5nIHBhZGRpbmcsIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgYmFzZTY0CisgICAgICBhbHBoYWJldCksIHRoZW4gYW4gYXBwcm9wcmlhdGUgZGVmZWN0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UncworICAgICAgZGVmZWN0IHByb3BlcnR5ICg6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RgIG9yCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RgLCByZXNwZWN0aXZlbHkpLgogCiAgICAgICBXaGVuICpkZWNvZGUqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBib2R5IGlzIHJldHVybmVkIGFzIGEgc3RyaW5nCiAgICAgICB3aXRob3V0IGRlY29kaW5nIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AuICBIb3dldmVyLApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAppbmRleCBhZTM0MGY3Li5kYjU1ODRjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdApAQCAtMTc1LDcgKzE3NSw3IEBACiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLnRleHQKIAotLi4gY2xhc3M6OiBNSU1FVGV4dChfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9J3VzLWFzY2lpJykKKy4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS50ZXh0YAogCkBAIC0xODUsNSArMTg1LDUgQEAKICAgIG1pbm9yIHR5cGUgYW5kIGRlZmF1bHRzIHRvIDptaW1ldHlwZTpgcGxhaW5gLiAgKl9jaGFyc2V0KiBpcyB0aGUgY2hhcmFjdGVyCiAgICBzZXQgb2YgdGhlIHRleHQgYW5kIGlzIHBhc3NlZCBhcyBhIHBhcmFtZXRlciB0byB0aGUKICAgIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cwotICAgdG8gYGB1cy1hc2NpaWBgLiAgTm8gZ3Vlc3Npbmcgb3IgZW5jb2RpbmcgaXMgcGVyZm9ybWVkIG9uIHRoZSB0ZXh0IGRhdGEuCi0KKyAgIHRvIGBgdXMtYXNjaWlgYCBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgYGBhc2NpaWBgIGNvZGVwb2ludHMsIGFuZAorICAgYGB1dGYtOGBgIG90aGVyd2lzZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CmluZGV4IDQ5YTU5YzAuLjZhNDM1NjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdApAQCAtNTgsMTIgKzU4LDE4IEBACiBIZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgOgogCiAKLS4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCisuLiBjbGFzczo6IEZlZWRQYXJzZXIoX2ZhY3Rvcnk9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIENyZWF0ZSBhIDpjbGFzczpgRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEgbm8tYXJndW1lbnQKICAgIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLiAgSXQKICAgIGRlZmF1bHRzIHRvIHRoZSA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCiAKKyAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKKyAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMyBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKwogICAgLi4gbWV0aG9kOjogZmVlZChkYXRhKQogCiAgICAgICBGZWVkIHRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIHNvbWUgbW9yZSBkYXRhLiAgKmRhdGEqIHNob3VsZCBiZSBhIHN0cmluZwpAQCAtOTQsMTUgKzEwMCwxOCBAQAogVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCiBwcm92aWRlcyBhbiBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBwYXJzZSBhIG1lc3NhZ2Ugd2hlbiB0aGUgY29tcGxldGUgY29udGVudHMKIG9mIHRoZSBtZXNzYWdlIGFyZSBhdmFpbGFibGUgaW4gYSBzdHJpbmcgb3IgZmlsZS4gIFRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgCi1tb2R1bGUgYWxzbyBwcm92aWRlcyBhIHNlY29uZCBjbGFzcywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCB3aGljaCBjYW4gYmUKLXVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgaGVhZGVycyBvZiB0aGUgbWVzc2FnZS4KLTpjbGFzczpgSGVhZGVyUGFyc2VyYCBjYW4gYmUgbXVjaCBmYXN0ZXIgaW4gdGhlc2Ugc2l0dWF0aW9ucywgc2luY2UgaXQgZG9lcyBub3QKLWF0dGVtcHQgdG8gcGFyc2UgdGhlIG1lc3NhZ2UgYm9keSwgaW5zdGVhZCBzZXR0aW5nIHRoZSBwYXlsb2FkIHRvIHRoZSByYXcgYm9keQotYXMgYSBzdHJpbmcuIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBoYXMgdGhlIHNhbWUgQVBJIGFzIHRoZSA6Y2xhc3M6YFBhcnNlcmAKLWNsYXNzLgorbW9kdWxlIGFsc28gcHJvdmlkZXMgaGVhZGVyLW9ubHkgcGFyc2VycywgY2FsbGVkIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQKKzpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgSGVhZGVyUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc0hlYWRlclBhcnNlcmAKK2NhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQorbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQoraGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBjbGFzczo6IFBhcnNlcihfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAogICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZApAQCAtMTEwLDEzICsxMTksMTMgQEAKICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCiAgICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCiAKLSAgIFRoZSBvcHRpb25hbCAqc3RyaWN0KiBmbGFnIGlzIGlnbm9yZWQuCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCisgICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQgcG9saWN5IG1haW50YWlucworICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDIuNAotICAgICAgQmVjYXVzZSB0aGUgOmNsYXNzOmBQYXJzZXJgIGNsYXNzIGlzIGEgYmFja3dhcmQgY29tcGF0aWJsZSBBUEkgd3JhcHBlcgotICAgICAgYXJvdW5kIHRoZSBuZXctaW4tUHl0aG9uIDIuNCA6Y2xhc3M6YEZlZWRQYXJzZXJgLCAqYWxsKiBwYXJzaW5nIGlzCi0gICAgICBlZmZlY3RpdmVseSBub24tc3RyaWN0LiAgWW91IHNob3VsZCBzaW1wbHkgc3RvcCBwYXNzaW5nIGEgKnN0cmljdCogZmxhZyB0bwotICAgICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQorICAgICAgKnBvbGljeSoga2V5d29yZC4KIAogICAgVGhlIG90aGVyIHB1YmxpYyA6Y2xhc3M6YFBhcnNlcmAgbWV0aG9kcyBhcmU6CiAKQEAgLTE0NywxMiArMTU2LDE4IEBACiAgICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgogCiAKLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisuLiBjbGFzczo6IEJ5dGVzUGFyc2VyKF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIHBvbGljeT1wb2xpY3kuZGVmYXVsdCkKIAogICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCiAgICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4gICpzdHJpY3QqIGlzIHN1cHBvcnRlZCBvbmx5IHRvIG1ha2UgcG9ydGluZwotICAgY29kZSBlYXNpZXI7IGl0IGlzIGRlcHJlY2F0ZWQuCisgICB0aGUgOmNsYXNzOmBQYXJzZXJgIGNvbnN0cnVjdG9yLgorCisgICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdAorICAgY29udHJvbHMgYSBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgcGFyc2VyJ3Mgb3BlcmF0aW9uLiAgVGhlIGRlZmF1bHQKKyAgIHBvbGljeSBtYWludGFpbnMgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKICAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJvbmx5PUZhbHNlKQogCkBAIC0xOTAsMzkgKzIwNSw1MyBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwKIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8KLSAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZCAqc3RyaWN0KiBhcmUgaW50ZXJwcmV0ZWQgYXMKKyAgIGBgUGFyc2VyKCkucGFyc2VzdHIocylgYC4gICpfY2xhc3MqIGFuZCAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMKICAgIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgc3RyaWN0PU5vbmUpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5kZWZhdWx0KQogCiAgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIGJ5dGUgc3RyaW5nLiAgVGhpcyBpcyBleGFjdGx5CiAgICBlcXVpdmFsZW50IHRvIGBgQnl0ZXNQYXJzZXIoKS5wYXJzZWJ5dGVzKHMpYGAuICBPcHRpb25hbCAqX2NsYXNzKiBhbmQKICAgICpzdHJpY3QqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsIHN0cmljdD1Ob25lKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLgotICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gIE9wdGlvbmFsICpfY2xhc3MqCi0gICBhbmQgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIGBgUGFyc2VyKCkucGFyc2UoZnApYGAuICAqX2NsYXNzKgorICAgYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCBzdHJpY3Q9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjoKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmRlZmF1bHQpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKICAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICBPcHRpb25hbCAqX2NsYXNzKiBhbmQgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgUGFyc2VyYAorICAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcyB3aXRoIHRoZSA6Y2xhc3M6YFBhcnNlcmAKICAgIGNsYXNzIGNvbnN0cnVjdG9yLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgeW91IG1pZ2h0IHVzZSB0aGlzIGF0IGFuIGludGVyYWN0aXZlIFB5dGhvbiBwcm9tcHQ6OgogCiAgICA+Pj4gaW1wb3J0IGVtYWlsCi0gICA+Pj4gbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhteVN0cmluZykKKyAgID4+PiBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG15U3RyaW5nKSAgIyBkb2N0ZXN0OiArU0tJUAogCiAKIEFkZGl0aW9uYWwgbm90ZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLnBvbGljeS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wb2xpY3kucnN0CkBAIC0wLDAgKzEsNDk3IEBACis6bW9kOmBlbWFpbC5wb2xpY3lgOiBQb2xpY3kgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gbW9kdWxlOjogZW1haWwucG9saWN5CisgICA6c3lub3BzaXM6IENvbnRyb2xsaW5nIHRoZSBwYXJzaW5nIGFuZCBnZW5lcmF0aW5nIG9mIG1lc3NhZ2VzCisKKy4uIG1vZHVsZWF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IFIuIERhdmlkIE11cnJheSA8cmRtdXJyYXlAYml0ZGFuY2UuY29tPgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBwcmltZSBmb2N1cyBpcyB0aGUgaGFuZGxpbmcgb2YgZW1haWwgbWVzc2FnZXMgYXMKK2Rlc2NyaWJlZCBieSB0aGUgdmFyaW91cyBlbWFpbCBhbmQgTUlNRSBSRkNzLiAgSG93ZXZlciwgdGhlIGdlbmVyYWwgZm9ybWF0IG9mCitlbWFpbCBtZXNzYWdlcyAoYSBibG9jayBvZiBoZWFkZXIgZmllbGRzIGVhY2ggY29uc2lzdGluZyBvZiBhIG5hbWUgZm9sbG93ZWQgYnkKK2EgY29sb24gZm9sbG93ZWQgYnkgYSB2YWx1ZSwgdGhlIHdob2xlIGJsb2NrIGZvbGxvd2VkIGJ5IGEgYmxhbmsgbGluZSBhbmQgYW4KK2FyYml0cmFyeSAnYm9keScpLCBpcyBhIGZvcm1hdCB0aGF0IGhhcyBmb3VuZCB1dGlsaXR5IG91dHNpZGUgb2YgdGhlIHJlYWxtIG9mCitlbWFpbC4gIFNvbWUgb2YgdGhlc2UgdXNlcyBjb25mb3JtIGZhaXJseSBjbG9zZWx5IHRvIHRoZSBtYWluIFJGQ3MsIHNvbWUgZG8KK25vdC4gIEFuZCBldmVuIHdoZW4gd29ya2luZyB3aXRoIGVtYWlsLCB0aGVyZSBhcmUgdGltZXMgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8KK2JyZWFrIHN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIFJGQ3MuCisKK1BvbGljeSBvYmplY3RzIGdpdmUgdGhlIGVtYWlsIHBhY2thZ2UgdGhlIGZsZXhpYmlsaXR5IHRvIGhhbmRsZSBhbGwgdGhlc2UKK2Rpc3BhcmF0ZSB1c2UgY2FzZXMuCisKK0EgOmNsYXNzOmBQb2xpY3lgIG9iamVjdCBlbmNhcHN1bGF0ZXMgYSBzZXQgb2YgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB0aGF0Citjb250cm9sIHRoZSBiZWhhdmlvciBvZiB2YXJpb3VzIGNvbXBvbmVudHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgZHVyaW5nIHVzZS4KKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZXMgY2FuIGJlIHBhc3NlZCB0byB2YXJpb3VzIGNsYXNzZXMgYW5kIG1ldGhvZHMgaW4gdGhlCitlbWFpbCBwYWNrYWdlIHRvIGFsdGVyIHRoZSBkZWZhdWx0IGJlaGF2aW9yLiAgVGhlIHNldHRhYmxlIHZhbHVlcyBhbmQgdGhlaXIKK2RlZmF1bHRzIGFyZSBkZXNjcmliZWQgYmVsb3cuCisKK1RoZXJlIGlzIGEgZGVmYXVsdCBwb2xpY3kgdXNlZCBieSBhbGwgY2xhc3NlcyBpbiB0aGUgZW1haWwgcGFja2FnZS4gIFRoaXMKK3BvbGljeSBpcyBuYW1lZCA6Y2xhc3M6YENvbXBhdDMyYCwgd2l0aCBhIGNvcnJlc3BvbmRpbmcgcHJlLWRlZmluZWQgaW5zdGFuY2UKK25hbWVkIDpjb25zdDpgY29tcGF0MzJgLiAgSXQgcHJvdmlkZXMgZm9yIGNvbXBsZXRlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKGluCitzb21lIGNhc2VzLCBpbmNsdWRpbmcgYnVnIGNvbXBhdGliaWxpdHkpIHdpdGggdGhlIHByZS1QeXRob24zLjMgdmVyc2lvbiBvZiB0aGUKK2VtYWlsIHBhY2thZ2UuCisKK1RoZSBmaXJzdCBwYXJ0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiBjb3ZlcnMgdGhlIGZlYXR1cmVzIG9mIDpjbGFzczpgUG9saWN5YCwgYW4KKzp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCAgdGhhdCBkZWZpbmVzIHRoZSBmZWF0dXJlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsCitwb2xpY3kgb2JqZWN0cywgaW5jbHVkaW5nIDpjb25zdDpgY29tcGF0MzJgLiAgVGhpcyBpbmNsdWRlcyBjZXJ0YWluIGhvb2sKK21ldGhvZHMgdGhhdCBhcmUgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHdoaWNoIGEgY3VzdG9tIHBvbGljeQorY291bGQgb3ZlcnJpZGUgdG8gb2J0YWluIGRpZmZlcmVudCBiZWhhdmlvci4KKworV2hlbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGFjcXVpcmVzIGEgcG9saWN5LgorQnkgZGVmYXVsdCB0aGlzIHdpbGwgYmUgOmNvbnN0OmBjb21wYXQzMmAsIGJ1dCBhIGRpZmZlcmVudCBwb2xpY3kgY2FuIGJlCitzcGVjaWZpZWQuICBJZiB0aGUgYGBNZXNzYWdlYGAgaXMgY3JlYXRlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBhIHBvbGljeQorcGFzc2VkIHRvIHRoZSBwYXJzZXIgd2lsbCBiZSB0aGUgcG9saWN5IHVzZWQgYnkgdGhlIGBgTWVzc2FnZWBgIGl0IGNyZWF0ZXMuICBJZgordGhlIGBgTWVzc2FnZWBgIGlzIGNyZWF0ZWQgYnkgdGhlIHByb2dyYW0sIHRoZW4gdGhlIHBvbGljeSBjYW4gYmUgc3BlY2lmaWVkCit3aGVuIGl0IGlzIGNyZWF0ZWQuICBXaGVuIGEgYGBNZXNzYWdlYGAgaXMgcGFzc2VkIHRvIGEgOm1vZDpgfmVtYWlsLmdlbmVyYXRvcmAsCit0aGUgZ2VuZXJhdG9yIHVzZXMgdGhlIHBvbGljeSBmcm9tIHRoZSBgYE1lc3NhZ2VgYCBieSBkZWZhdWx0LCBidXQgeW91IGNhbiBhbHNvCitwYXNzIGEgc3BlY2lmaWMgcG9saWN5IHRvIHRoZSBnZW5lcmF0b3IgdGhhdCB3aWxsIG92ZXJyaWRlIHRoZSBvbmUgc3RvcmVkIG9uCit0aGUgYGBNZXNzYWdlYGAgb2JqZWN0LgorCis6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2VzIGFyZSBpbW11dGFibGUsIGJ1dCB0aGV5IGNhbiBiZSBjbG9uZWQsIGFjY2VwdGluZyB0aGUKK3NhbWUga2V5d29yZCBhcmd1bWVudHMgYXMgdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGFuZCByZXR1cm5pbmcgYSBuZXcKKzpjbGFzczpgUG9saWN5YCBpbnN0YW5jZSB0aGF0IGlzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYnV0IHdpdGggdGhlIHNwZWNpZmllZAorYXR0cmlidXRlcyB2YWx1ZXMgY2hhbmdlZC4KKworQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIGNvdWxkIGJlIHVzZWQgdG8gcmVhZCBhbiBlbWFpbCBtZXNzYWdlIGZyb20gYQorZmlsZSBvbiBkaXNrIGFuZCBwYXNzIGl0IHRvIHRoZSBzeXN0ZW0gYGBzZW5kbWFpbGBgIHByb2dyYW0gb24gYSBVbml4IHN5c3RlbTo6CisKKyAgID4+PiBmcm9tIGVtYWlsIGltcG9ydCBtc2dfZnJvbV9iaW5hcnlfZmlsZQorICAgPj4+IGZyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBCeXRlc0dlbmVyYXRvcgorICAgPj4+IGZyb20gc3VicHJvY2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUKKyAgID4+PiB3aXRoIG9wZW4oJ215bXNnLnR4dCcsICdiJykgYXMgZjoKKyAgIC4uLiAgICAgbXNnID0gbXNnX2Zyb21fYmluYXJ5X2ZpbGUoZikKKyAgID4+PiBwID0gUG9wZW4oWydzZW5kbWFpbCcsIG1zZ1snVG8nXVswXS5hZGRyZXNzXSwgc3RkaW49UElQRSkKKyAgID4+PiBnID0gQnl0ZXNHZW5lcmF0b3IocC5zdGRpbiwgcG9saWN5PW1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpKQorICAgPj4+IGcuZmxhdHRlbihtc2cpCisgICA+Pj4gcC5zdGRpbi5jbG9zZSgpCisgICA+Pj4gcmMgPSBwLndhaXQoKQorCitIZXJlIHdlIGFyZSB0ZWxsaW5nIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgdG8gdXNlIHRoZSBSRkMKK2NvcnJlY3QgbGluZSBzZXBhcmF0b3IgY2hhcmFjdGVycyB3aGVuIGNyZWF0aW5nIHRoZSBiaW5hcnkgc3RyaW5nIHRvIGZlZWQgaW50bworYGBzZW5kbWFpbCdzYGAgYGBzdGRpbmBgLCB3aGVyZSB0aGUgZGVmYXVsdCBwb2xpY3kgd291bGQgdXNlIGBgXG5gYCBsaW5lCitzZXBhcmF0b3JzLgorCitTb21lIGVtYWlsIHBhY2thZ2UgbWV0aG9kcyBhY2NlcHQgYSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50LCBhbGxvd2luZyB0aGUKK3BvbGljeSB0byBiZSBvdmVycmlkZGVuIGZvciB0aGF0IG1ldGhvZC4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgdXNlcwordGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmFzX3N0cmluZ2AgbWV0aG9kIG9mIHRoZSAqbXNnKiBvYmplY3QgZnJvbQordGhlIHByZXZpb3VzIGV4YW1wbGUgYW5kIHdyaXRlcyB0aGUgbWVzc2FnZSB0byBhIGZpbGUgdXNpbmcgdGhlIG5hdGl2ZSBsaW5lCitzZXBhcmF0b3JzIGZvciB0aGUgcGxhdGZvcm0gb24gd2hpY2ggaXQgaXMgcnVubmluZzo6CisKKyAgID4+PiBpbXBvcnQgb3MKKyAgID4+PiB3aXRoIG9wZW4oJ2NvbnZlcnRlZC50eHQnLCAnd2InKSBhcyBmOgorICAgLi4uICAgICBmLndyaXRlKG1zZy5hc19zdHJpbmcocG9saWN5PW1zZy5wb2xpY3kuY2xvbmUobGluZXNlcD1vcy5saW5lc2VwKSkKKworUG9saWN5IG9iamVjdHMgY2FuIGFsc28gYmUgY29tYmluZWQgdXNpbmcgdGhlIGFkZGl0aW9uIG9wZXJhdG9yLCBwcm9kdWNpbmcgYQorcG9saWN5IG9iamVjdCB3aG9zZSBzZXR0aW5ncyBhcmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgbm9uLWRlZmF1bHQgdmFsdWVzIG9mIHRoZQorc3VtbWVkIG9iamVjdHM6OgorCisgICA+Pj4gY29tcGF0X1NNVFAgPSBlbWFpbC5wb2xpY3kuY2xvbmUobGluZXNlcD0nXHJcbicpCisgICA+Pj4gY29tcGF0X3N0cmljdCA9IGVtYWlsLnBvbGljeS5jbG9uZShyYWlzZV9vbl9kZWZlY3Q9VHJ1ZSkKKyAgID4+PiBjb21wYXRfc3RyaWN0X1NNVFAgPSBjb21wYXRfU01UUCArIGNvbXBhdF9zdHJpY3QKKworVGhpcyBvcGVyYXRpb24gaXMgbm90IGNvbW11dGF0aXZlOyB0aGF0IGlzLCB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIG9iamVjdHMgYXJlCithZGRlZCBtYXR0ZXJzLiAgVG8gaWxsdXN0cmF0ZTo6CisKKyAgID4+PiBwb2xpY3kxMDAgPSBjb21wYXQzMi5jbG9uZShtYXhfbGluZV9sZW5ndGg9MTAwKQorICAgPj4+IHBvbGljeTgwID0gY29tcGF0MzIuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTgwKQorICAgPj4+IGFwb2xpY3kgPSBwb2xpY3kxMDAgKyBQb2xpY3k4MAorICAgPj4+IGFwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICA4MAorICAgPj4+IGFwb2xpY3kgPSBwb2xpY3k4MCArIHBvbGljeTEwMAorICAgPj4+IGFwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICAxMDAKKworCisuLiBjbGFzczo6IFBvbGljeSgqKmt3KQorCisgICBUaGlzIGlzIHRoZSA6dGVybTpgYWJzdHJhY3QgYmFzZSBjbGFzc2AgZm9yIGFsbCBwb2xpY3kgY2xhc3Nlcy4gIEl0IHByb3ZpZGVzCisgICBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyBmb3IgYSBjb3VwbGUgb2YgdHJpdmlhbCBtZXRob2RzLCBhcyB3ZWxsIGFzIHRoZQorICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGltbXV0YWJpbGl0eSBwcm9wZXJ0eSwgdGhlIDptZXRoOmBjbG9uZWAgbWV0aG9kLCBhbmQKKyAgIHRoZSBjb25zdHJ1Y3RvciBzZW1hbnRpY3MuCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBvZiBhIHBvbGljeSBjbGFzcyBjYW4gYmUgcGFzc2VkIHZhcmlvdXMga2V5d29yZCBhcmd1bWVudHMuCisgICBUaGUgYXJndW1lbnRzIHRoYXQgbWF5IGJlIHNwZWNpZmllZCBhcmUgYW55IG5vbi1tZXRob2QgcHJvcGVydGllcyBvbiB0aGlzCisgICBjbGFzcywgcGx1cyBhbnkgYWRkaXRpb25hbCBub24tbWV0aG9kIHByb3BlcnRpZXMgb24gdGhlIGNvbmNyZXRlIGNsYXNzLiAgQQorICAgdmFsdWUgc3BlY2lmaWVkIGluIHRoZSBjb25zdHJ1Y3RvciB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlLgorCisgICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzLCBhbmQgdGh1cyB2YWx1ZXMgZm9yIHRoZQorICAgZm9sbG93aW5nIG1heSBiZSBwYXNzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIGFueSBwb2xpY3kgY2xhc3M6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9saW5lX2xlbmd0aAorCisgICAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW55IGxpbmUgaW4gdGhlIHNlcmlhbGl6ZWQgb3V0cHV0LCBub3QgY291bnRpbmcgdGhlCisgICAgICBlbmQgb2YgbGluZSBjaGFyYWN0ZXIocykuICBEZWZhdWx0IGlzIDc4LCBwZXIgOnJmYzpgNTMyMmAuICBBIHZhbHVlIG9mCisgICAgICBgYDBgYCBvciA6Y29uc3Q6YE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIGxpbmUgd3JhcHBpbmcgc2hvdWxkIGJlCisgICAgICBkb25lIGF0IGFsbC4KKworICAgLi4gYXR0cmlidXRlOjogbGluZXNlcAorCisgICAgICBUaGUgc3RyaW5nIHRvIGJlIHVzZWQgdG8gdGVybWluYXRlIGxpbmVzIGluIHNlcmlhbGl6ZWQgb3V0cHV0LiAgVGhlCisgICAgICBkZWZhdWx0IGlzIGBgXG5gYCBiZWNhdXNlIHRoYXQncyB0aGUgaW50ZXJuYWwgZW5kLW9mLWxpbmUgZGlzY2lwbGluZSB1c2VkCisgICAgICBieSBQeXRob24sIHRob3VnaCBgYFxyXG5gYCBpcyByZXF1aXJlZCBieSB0aGUgUkZDcy4KKworICAgLi4gYXR0cmlidXRlOjogY3RlX3R5cGUKKworICAgICAgQ29udHJvbHMgdGhlIHR5cGUgb2YgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MgdGhhdCBtYXkgYmUgb3IgYXJlCisgICAgICByZXF1aXJlZCB0byBiZSB1c2VkLiAgVGhlIHBvc3NpYmxlIHZhbHVlcyBhcmU6CisKKyAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgIGBgN2JpdGBgICBhbGwgZGF0YSBtdXN0IGJlICI3IGJpdCBjbGVhbiIgKEFTQ0lJLW9ubHkpLiAgVGhpcyBtZWFucyB0aGF0CisgICAgICAgICAgICAgICAgd2hlcmUgbmVjZXNzYXJ5IGRhdGEgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGVpdGhlcgorICAgICAgICAgICAgICAgIHF1b3RlZC1wcmludGFibGUgb3IgYmFzZTY0IGVuY29kaW5nLgorCisgICAgICBgYDhiaXRgYCAgZGF0YSBpcyBub3QgY29uc3RyYWluZWQgdG8gYmUgNyBiaXQgY2xlYW4uICBEYXRhIGluIGhlYWRlcnMgaXMKKyAgICAgICAgICAgICAgICBzdGlsbCByZXF1aXJlZCB0byBiZSBBU0NJSS1vbmx5IGFuZCBzbyB3aWxsIGJlIGVuY29kZWQgKHNlZQorICAgICAgICAgICAgICAgICdiaW5hcnlfZm9sZCcgYmVsb3cgZm9yIGFuIGV4Y2VwdGlvbiksIGJ1dCBib2R5IHBhcnRzIG1heSB1c2UKKyAgICAgICAgICAgICAgICB0aGUgYGA4Yml0YGAgQ1RFLgorICAgICAgPT09PT09PT0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgICBBIGBgY3RlX3R5cGVgYCB2YWx1ZSBvZiBgYDhiaXRgYCBvbmx5IHdvcmtzIHdpdGggYGBCeXRlc0dlbmVyYXRvcmBgLCBub3QKKyAgICAgIGBgR2VuZXJhdG9yYGAsIGJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgY29udGFpbiBiaW5hcnkgZGF0YS4gIElmIGEKKyAgICAgIGBgR2VuZXJhdG9yYGAgaXMgb3BlcmF0aW5nIHVuZGVyIGEgcG9saWN5IHRoYXQgc3BlY2lmaWVzCisgICAgICBgYGN0ZV90eXBlPThiaXRgYCwgaXQgd2lsbCBhY3QgYXMgaWYgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiByYWlzZV9vbl9kZWZlY3QKKworICAgICAgSWYgOmNvbnN0OmBUcnVlYCwgYW55IGRlZmVjdHMgZW5jb3VudGVyZWQgd2lsbCBiZSByYWlzZWQgYXMgZXJyb3JzLiAgSWYKKyAgICAgIDpjb25zdDpgRmFsc2VgICh0aGUgZGVmYXVsdCksIGRlZmVjdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlCisgICAgICA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YCBtZXRob2QuCisKKyAgIFRoZSBmb2xsb3dpbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZCBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYnkgY29kZSB1c2luZworICAgdGhlIGVtYWlsIGxpYnJhcnkgdG8gY3JlYXRlIHBvbGljeSBpbnN0YW5jZXMgd2l0aCBjdXN0b20gc2V0dGluZ3M6CisKKyAgIC4uIG1ldGhvZDo6IGNsb25lKCoqa3cpCisKKyAgICAgIFJldHVybiBhIG5ldyA6Y2xhc3M6YFBvbGljeWAgaW5zdGFuY2Ugd2hvc2UgYXR0cmlidXRlcyBoYXZlIHRoZSBzYW1lCisgICAgICB2YWx1ZXMgYXMgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGV4Y2VwdCB3aGVyZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZQorICAgICAgZ2l2ZW4gbmV3IHZhbHVlcyBieSB0aGUga2V5d29yZCBhcmd1bWVudHMuCisKKyAgIFRoZSByZW1haW5pbmcgOmNsYXNzOmBQb2xpY3lgIG1ldGhvZHMgYXJlIGNhbGxlZCBieSB0aGUgZW1haWwgcGFja2FnZSBjb2RlLAorICAgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBlbWFpbCBwYWNrYWdlLgorICAgQSBjdXN0b20gcG9saWN5IG11c3QgaW1wbGVtZW50IGFsbCBvZiB0aGVzZSBtZXRob2RzLgorCisgICAuLiBtZXRob2Q6OiBoYW5kbGVfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICBIYW5kbGUgYSAqZGVmZWN0KiBmb3VuZCBvbiAqb2JqKi4gIFdoZW4gdGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcworICAgICAgbWV0aG9kLCAqZGVmZWN0KiB3aWxsIGFsd2F5cyBiZSBhIHN1YmNsYXNzIG9mCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lcnJvcnMuRGVmZWN0YC4KKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2hlY2tzIHRoZSA6YXR0cjpgcmFpc2Vfb25fZGVmZWN0YCBmbGFnLiAgSWYKKyAgICAgIGl0IGlzIGBgVHJ1ZWBgLCAqZGVmZWN0KiBpcyByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLiAgSWYgaXQgaXMgYGBGYWxzZWBgCisgICAgICAodGhlIGRlZmF1bHQpLCAqb2JqKiBhbmQgKmRlZmVjdCogYXJlIHBhc3NlZCB0byA6bWV0aDpgcmVnaXN0ZXJfZGVmZWN0YC4KKworICAgLi4gbWV0aG9kOjogcmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQorCisgICAgICBSZWdpc3RlciBhICpkZWZlY3QqIG9uICpvYmoqLiAgSW4gdGhlIGVtYWlsIHBhY2thZ2UsICpkZWZlY3QqIHdpbGwgYWx3YXlzCisgICAgICBiZSBhIHN1YmNsYXNzIG9mIDpjbGFzczpgfmVtYWlsLmVycm9ycy5EZWZlY3RgLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgYGBhcHBlbmRgYCBtZXRob2Qgb2YgdGhlIGBgZGVmZWN0c2BgCisgICAgICBhdHRyaWJ1dGUgb2YgKm9iaiouICBXaGVuIHRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIDphdHRyOmBoYW5kbGVfZGVmZWN0YCwKKyAgICAgICpvYmoqIHdpbGwgbm9ybWFsbHkgaGF2ZSBhIGBgZGVmZWN0c2BgIGF0dHJpYnV0ZSB0aGF0IGhhcyBhbiBgYGFwcGVuZGBgCisgICAgICBtZXRob2QuICBDdXN0b20gb2JqZWN0IHR5cGVzIHVzZWQgd2l0aCB0aGUgZW1haWwgcGFja2FnZSAoZm9yIGV4YW1wbGUsCisgICAgICBjdXN0b20gYGBNZXNzYWdlYGAgb2JqZWN0cykgc2hvdWxkIGFsc28gcHJvdmlkZSBzdWNoIGFuIGF0dHJpYnV0ZSwKKyAgICAgIG90aGVyd2lzZSBkZWZlY3RzIGluIHBhcnNlZCBtZXNzYWdlcyB3aWxsIHJhaXNlIHVuZXhwZWN0ZWQgZXJyb3JzLgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfbWF4X2NvdW50KG5hbWUpCisKKyAgICAgIFJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICpuYW1lKi4KKworICAgICAgQ2FsbGVkIHdoZW4gYSBoZWFkZXIgaXMgYWRkZWQgdG8gYSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgCisgICAgICBvYmplY3QuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbm90IGBgMGBgIG9yIGBgTm9uZWBgLCBhbmQgdGhlcmUgYXJlCisgICAgICBhbHJlYWR5IGEgbnVtYmVyIG9mIGhlYWRlcnMgd2l0aCB0aGUgbmFtZSAqbmFtZSogZXF1YWwgdG8gdGhlIHZhbHVlCisgICAgICByZXR1cm5lZCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIEJlY2F1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYGBNZXNzYWdlLl9fc2V0aXRlbV9fYGAgaXMgdG8gYXBwZW5kIHRoZQorICAgICAgdmFsdWUgdG8gdGhlIGxpc3Qgb2YgaGVhZGVycywgaXQgaXMgZWFzeSB0byBjcmVhdGUgZHVwbGljYXRlIGhlYWRlcnMKKyAgICAgIHdpdGhvdXQgcmVhbGl6aW5nIGl0LiAgVGhpcyBtZXRob2QgYWxsb3dzIGNlcnRhaW4gaGVhZGVycyB0byBiZSBsaW1pdGVkCisgICAgICBpbiB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB0aGF0IGhlYWRlciB0aGF0IG1heSBiZSBhZGRlZCB0byBhCisgICAgICBgYE1lc3NhZ2VgYCBwcm9ncmFtbWF0aWNhbGx5LiAgKFRoZSBsaW1pdCBpcyBub3Qgb2JzZXJ2ZWQgYnkgdGhlIHBhcnNlciwKKyAgICAgIHdoaWNoIHdpbGwgZmFpdGhmdWxseSBwcm9kdWNlIGFzIG1hbnkgaGVhZGVycyBhcyBleGlzdCBpbiB0aGUgbWVzc2FnZQorICAgICAgYmVpbmcgcGFyc2VkLikKKworICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBgYE5vbmVgYCBmb3IgYWxsIGhlYWRlciBuYW1lcy4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCBhIGxpc3Qgb2Ygc3RyaW5ncywgZWFjaCBzdHJpbmcKKyAgICAgIGVuZGluZyB3aXRoIHRoZSBsaW5lIHNlcGFyYXRpb24gY2hhcmFjdGVycyBmb3VuZCBpbiB0aGUgc291cmNlIGJlaW5nCisgICAgICBwYXJzZWQuICBUaGUgZmlyc3QgbGluZSBpbmNsdWRlcyB0aGUgZmllbGQgaGVhZGVyIG5hbWUgYW5kIHNlcGFyYXRvci4KKyAgICAgIEFsbCB3aGl0ZXNwYWNlIGluIHRoZSBzb3VyY2UgaXMgcHJlc2VydmVkLiAgVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZQorICAgICAgYGAobmFtZSwgdmFsdWUpYGAgdHVwbGUgdGhhdCBpcyB0byBiZSBzdG9yZWQgaW4gdGhlIGBgTWVzc2FnZWBgIHRvCisgICAgICByZXByZXNlbnQgdGhlIHBhcnNlZCBoZWFkZXIuCisKKyAgICAgIElmIGFuIGltcGxlbWVudGF0aW9uIHdpc2hlcyB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGlzdGluZworICAgICAgZW1haWwgcGFja2FnZSBwb2xpY2llcywgKm5hbWUqIHNob3VsZCBiZSB0aGUgY2FzZSBwcmVzZXJ2ZWQgbmFtZSAoYWxsCisgICAgICBjaGFyYWN0ZXJzIHVwIHRvIHRoZSAnYGA6YGAnIHNlcGFyYXRvciksIHdoaWxlICp2YWx1ZSogc2hvdWxkIGJlIHRoZQorICAgICAgdW5mb2xkZWQgdmFsdWUgKGFsbCBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXJzIHJlbW92ZWQsIGJ1dCB3aGl0ZXNwYWNlCisgICAgICBrZXB0IGludGFjdCksIHN0cmlwcGVkIG9mIGxlYWRpbmcgd2hpdGVzcGFjZS4KKworICAgICAgKnNvdXJjZWxpbmVzKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9zdG9yZV9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgVGhlIGVtYWlsIHBhY2thZ2UgY2FsbHMgdGhpcyBtZXRob2Qgd2l0aCB0aGUgbmFtZSBhbmQgdmFsdWUgcHJvdmlkZWQgYnkKKyAgICAgIHRoZSBhcHBsaWNhdGlvbiBwcm9ncmFtIHdoZW4gdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gaXMgbW9kaWZ5aW5nIGEKKyAgICAgIGBgTWVzc2FnZWBgIHByb2dyYW1tYXRpY2FsbHkgKGFzIG9wcG9zZWQgdG8gYSBgYE1lc3NhZ2VgYCBjcmVhdGVkIGJ5IGEKKyAgICAgIHBhcnNlcikuICBUaGUgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIGBgKG5hbWUsIHZhbHVlKWBgIHR1cGxlIHRoYXQgaXMgdG8KKyAgICAgIGJlIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIuCisKKyAgICAgIElmIGFuIGltcGxlbWVudGF0aW9uIHdpc2hlcyB0byByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBleGlzdGluZworICAgICAgZW1haWwgcGFja2FnZSBwb2xpY2llcywgdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBzaG91bGQgYmUgc3RyaW5ncyBvcgorICAgICAgc3RyaW5nIHN1YmNsYXNzZXMgdGhhdCBkbyBub3QgY2hhbmdlIHRoZSBjb250ZW50IG9mIHRoZSBwYXNzZWQgaW4KKyAgICAgIGFyZ3VtZW50cy4KKworICAgICAgVGhlcmUgaXMgbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfZmV0Y2hfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKKyAgICAgIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgd2hlbiB0aGF0IGhlYWRlciBpcyByZXF1ZXN0ZWQgYnkgdGhlCisgICAgICBhcHBsaWNhdGlvbiBwcm9ncmFtLCBhbmQgd2hhdGV2ZXIgdGhlIG1ldGhvZCByZXR1cm5zIGlzIHdoYXQgaXMgcGFzc2VkCisgICAgICBiYWNrIHRvIHRoZSBhcHBsaWNhdGlvbiBhcyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBiZWluZyByZXRyaWV2ZWQuCisgICAgICBOb3RlIHRoYXQgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgaGVhZGVyIHdpdGggdGhlIHNhbWUgbmFtZSBzdG9yZWQgaW4KKyAgICAgIHRoZSBgYE1lc3NhZ2VgYDsgdGhlIG1ldGhvZCBpcyBwYXNzZWQgdGhlIHNwZWNpZmljIG5hbWUgYW5kIHZhbHVlIG9mIHRoZQorICAgICAgaGVhZGVyIGRlc3RpbmVkIHRvIGJlIHJldHVybmVkIHRvIHRoZSBhcHBsaWNhdGlvbi4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgbWV0aG9kLgorCisgICAgICBUaGVyZSBpcyBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisKKyAgIC4uIG1ldGhvZDo6IGZvbGQobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBlbWFpbCBwYWNrYWdlIGNhbGxzIHRoaXMgbWV0aG9kIHdpdGggdGhlICpuYW1lKiBhbmQgKnZhbHVlKiBjdXJyZW50bHkKKyAgICAgIHN0b3JlZCBpbiB0aGUgYGBNZXNzYWdlYGAgZm9yIGEgZ2l2ZW4gaGVhZGVyLiAgVGhlIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEKKyAgICAgIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIgImZvbGRlZCIgY29ycmVjdGx5IChhY2NvcmRpbmcgdG8gdGhlCisgICAgICBwb2xpY3kgc2V0dGluZ3MpIGJ5IGNvbXBvc2luZyB0aGUgKm5hbWUqIHdpdGggdGhlICp2YWx1ZSogYW5kIGluc2VydGluZworICAgICAgOmF0dHI6YGxpbmVzZXBgIGNoYXJhY3RlcnMgYXQgdGhlIGFwcHJvcHJpYXRlIHBsYWNlcy4gIFNlZSA6cmZjOmA1MzIyYAorICAgICAgZm9yIGEgZGlzY3Vzc2lvbiBvZiB0aGUgcnVsZXMgZm9yIGZvbGRpbmcgZW1haWwgaGVhZGVycy4KKworICAgICAgKnZhbHVlKiBtYXkgY29udGFpbiBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhLiAgVGhlcmUgc2hvdWxkIGJlIG5vCisgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGluIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgdGhlIG1ldGhvZC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCwgZXhjZXB0IHRoYXQgdGhlIHJldHVybmVkIHZhbHVlIHNob3VsZCBiZSBhCisgICAgICBieXRlcyBvYmplY3QgcmF0aGVyIHRoYW4gYSBzdHJpbmcuCisKKyAgICAgICp2YWx1ZSogbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4gIFRoZXNlIGNvdWxkIGJlCisgICAgICBjb252ZXJ0ZWQgYmFjayBpbnRvIGJpbmFyeSBkYXRhIGluIHRoZSByZXR1cm5lZCBieXRlcyBvYmplY3QuCisKKworLi4gY2xhc3M6OiBDb21wYXQzMigqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBwb2xpY3kuICBJdAorICAgcmVwbGljYXRlcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGVtYWlsIHBhY2thZ2UgaW4gUHl0aG9uIDMuMi4gIFRoZQorICAgOm1vZDpgcG9saWN5YCBtb2R1bGUgYWxzbyBkZWZpbmVzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsCisgICA6Y29uc3Q6YGNvbXBhdDMyYCwgdGhhdCBpcyB1c2VkIGFzIHRoZSBkZWZhdWx0IHBvbGljeS4gIFRodXMgdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIGlzIHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4yLgorCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCisgICBhYnN0cmFjdCBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIG5hbWUgaXMgcGFyc2VkIGFzIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlICdgYDpgYCcgYW5kIHJldHVybmVkCisgICAgICB1bm1vZGlmaWVkLiAgVGhlIHZhbHVlIGlzIGRldGVybWluZWQgYnkgc3RyaXBwaW5nIGxlYWRpbmcgd2hpdGVzcGFjZSBvZmYKKyAgICAgIHRoZSByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsCisgICAgICBhbmQgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3N0b3JlX3BhcnNlKG5hbWUsIHZhbHVlKQorCisgICAgICBUaGUgbmFtZSBhbmQgdmFsdWUgYXJlIHJldHVybmVkIHVubW9kaWZpZWQuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIGJpbmFyeSBkYXRhLCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhCisgICAgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKyAgICAgIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgorCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIGZvbGRpbmcKKyAgICAgIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzCisgICAgICBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZSBgYG1heF9saW5lX2xlbmd0aGBgLiAgTm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGFyZQorICAgICAgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIEhlYWRlcnMgYXJlIGZvbGRlZCB1c2luZyB0aGUgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgZm9sZGluZworICAgICAgYWxnb3JpdGhtLCB3aGljaCBwcmVzZXJ2ZXMgZXhpc3RpbmcgbGluZSBicmVha3MgaW4gdGhlIHZhbHVlLCBhbmQgd3JhcHMKKyAgICAgIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlIGBgbWF4X2xpbmVfbGVuZ3RoYGAuICBJZiBgYGN0ZV90eXBlYGAgaXMKKyAgICAgIGBgN2JpdGBgLCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAKKyAgICAgIGNoYXJzZXQuICBPdGhlcndpc2UgdGhlIG9yaWdpbmFsIHNvdXJjZSBoZWFkZXIgaXMgdXNlZCwgd2l0aCBpdHMgZXhpc3RpbmcKKyAgICAgIGxpbmUgYnJlYWtzIGFuZCBhbmQgYW55IChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaXQgbWF5IGNvbnRhaW4uCisKKworLi4gbm90ZTo6CisKKyAgIFRoZSBkb2N1bWVudGF0aW9uIGJlbG93IGRlc2NyaWJlcyBuZXcgcG9saWNpZXMgdGhhdCBhcmUgaW5jbHVkZWQgaW4gdGhlCisgICBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuCisgICBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgZmVhdHVyZSkKKyAgIG1heSBvY2N1ciBpZiBkZWVtZWQgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKworLi4gY2xhc3M6OiBFbWFpbFBvbGljeSgqKmt3KQorCisgICBUaGlzIGNvbmNyZXRlIDpjbGFzczpgUG9saWN5YCBwcm92aWRlcyBiZWhhdmlvciB0aGF0IGlzIGludGVuZGVkIHRvIGJlIGZ1bGx5CisgICBjb21wbGlhbnQgd2l0aCB0aGUgY3VycmVudCBlbWFpbCBSRkNzLiAgVGhlc2UgaW5jbHVkZSAoYnV0IGFyZSBub3QgbGltaXRlZAorICAgdG8pIDpyZmM6YDUzMjJgLCA6cmZjOmAyMDQ3YCwgYW5kIHRoZSBjdXJyZW50IE1JTUUgUkZDcy4KKworICAgVGhpcyBwb2xpY3kgYWRkcyBuZXcgaGVhZGVyIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtcy4gIEluc3RlYWQgb2YKKyAgIHNpbXBsZSBzdHJpbmdzLCBoZWFkZXJzIGFyZSBjdXN0b20gb2JqZWN0cyB3aXRoIGN1c3RvbSBhdHRyaWJ1dGVzIGRlcGVuZGluZworICAgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIHBhcnNpbmcgYW5kIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5IGltcGxlbWVudAorICAgOnJmYzpgMjA0N2AgYW5kIDpyZmM6YDUzMjJgLgorCisgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0byBhbGwKKyAgIHBvbGljaWVzLCB0aGlzIHBvbGljeSBhZGRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBhdHRyaWJ1dGVzOgorCisgICAuLiBhdHRyaWJ1dGU6OiByZWZvbGRfc291cmNlCisKKyAgICAgIElmIHRoZSB2YWx1ZSBmb3IgYSBoZWFkZXIgaW4gdGhlIGBgTWVzc2FnZWBgIG9iamVjdCBvcmlnaW5hdGVkIGZyb20gYQorICAgICAgOm1vZDpgfmVtYWlsLnBhcnNlcmAgKGFzIG9wcG9zZWQgdG8gYmVpbmcgc2V0IGJ5IGEgcHJvZ3JhbSksIHRoaXMKKyAgICAgIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBvciBub3QgYSBnZW5lcmF0b3Igc2hvdWxkIHJlZm9sZCB0aGF0IHZhbHVlCisgICAgICB3aGVuIHRyYW5zZm9ybWluZyB0aGUgbWVzc2FnZSBiYWNrIGludG8gc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzCisgICAgICBhcmU6CisKKyAgICAgID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAgIGBgbm9uZWBgICBhbGwgc291cmNlIHZhbHVlcyB1c2Ugb3JpZ2luYWwgZm9sZGluZworCisgICAgICBgYGxvbmdgYCAgc291cmNlIHZhbHVlcyB0aGF0IGhhdmUgYW55IGxpbmUgdGhhdCBpcyBsb25nZXIgdGhhbgorICAgICAgICAgICAgICAgIGBgbWF4X2xpbmVfbGVuZ3RoYGAgd2lsbCBiZSByZWZvbGRlZAorCisgICAgICBgYGFsbGBgICAgYWxsIHZhbHVlcyBhcmUgcmVmb2xkZWQuCisgICAgICA9PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgIFRoZSBkZWZhdWx0IGlzIGBgbG9uZ2BgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBoZWFkZXJfZmFjdG9yeQorCisgICAgICBBIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgYGBuYW1lYGAgYW5kIGBgdmFsdWVgYCwgd2hlcmUKKyAgICAgIGBgbmFtZWBgIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kIGBgdmFsdWVgYCBpcyBhbiB1bmZvbGRlZCBoZWFkZXIgZmllbGQKKyAgICAgIHZhbHVlLCBhbmQgcmV0dXJucyBhIHN0cmluZyBzdWJjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhhdCBoZWFkZXIuICBBCisgICAgICBkZWZhdWx0IGBgaGVhZGVyX2ZhY3RvcnlgYCAoc2VlIDptb2Q6YH5lbWFpbC5oZWFkZXJyZWdpc3RyeWApIGlzIHByb3ZpZGVkCisgICAgICB0aGF0IHVuZGVyc3RhbmRzIHNvbWUgb2YgdGhlIDpSRkM6YDUzMjJgIGhlYWRlciBmaWVsZCB0eXBlcy4gIChDdXJyZW50bHkKKyAgICAgIGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlIHNwZWNpYWwgdHJlYXRtZW50LCB3aGlsZSBhbGwgb3RoZXIKKyAgICAgIGZpZWxkcyBhcmUgdHJlYXRlZCBhcyB1bnN0cnVjdHVyZWQuICBUaGlzIGxpc3Qgd2lsbCBiZSBjb21wbGV0ZWQgYmVmb3JlCisgICAgICB0aGUgZXh0ZW5zaW9uIGlzIG1hcmtlZCBzdGFibGUuKQorCisgICBUaGUgY2xhc3MgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGFic3RyYWN0CisgICBtZXRob2RzIG9mIDpjbGFzczpgUG9saWN5YDoKKworICAgLi4gbWV0aG9kOjogaGVhZGVyX21heF9jb3VudChuYW1lKQorCisgICAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUKKyAgICAgIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5tYXhfY291bnRgIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgIHNwZWNpYWxpemVkIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBoZWFkZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4KKworICAgLi4gbWV0aG9kOjogaGVhZGVyX3NvdXJjZV9wYXJzZShzb3VyY2VsaW5lcykKKworICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHRoYXQgZm9yIHRoZQorICAgICAgOmNsYXNzOmBDb21wYXQzMmAgcG9saWN5LgorCisgICAuLiBtZXRob2Q6OiBoZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4gIElmIHRoZSBpbnB1dCB2YWx1ZSBoYXMgYSBgYG5hbWVgYAorICAgICAgYXR0cmlidXRlIGFuZCBpdCBtYXRjaGVzICpuYW1lKiBpZ25vcmluZyBjYXNlLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQKKyAgICAgIHVuY2hhbmdlZC4gIE90aGVyd2lzZSB0aGUgKm5hbWUqIGFuZCAqdmFsdWUqIGFyZSBwYXNzZWQgdG8KKyAgICAgIGBgaGVhZGVyX2ZhY3RvcnlgYCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQgYXMKKyAgICAgIHRoZSB2YWx1ZS4gIEluIHRoaXMgY2FzZSBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZCBpZiB0aGUgaW5wdXQgdmFsdWUKKyAgICAgIGNvbnRhaW5zIENSIG9yIExGIGNoYXJhY3RlcnMuCisKKyAgIC4uIG1ldGhvZDo6IGhlYWRlcl9mZXRjaF9wYXJzZShuYW1lLCB2YWx1ZSkKKworICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSwgaXQgaXMgcmV0dXJuZWQgdG8gdW5tb2RpZmllZC4KKyAgICAgIE90aGVyd2lzZSB0aGUgKm5hbWUqLCBhbmQgdGhlICp2YWx1ZSogd2l0aCBhbnkgQ1Igb3IgTEYgY2hhcmFjdGVycworICAgICAgcmVtb3ZlZCwgYXJlIHBhc3NlZCB0byB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLCBhbmQgdGhlIHJlc3VsdGluZyBjdXN0b20KKyAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkIGludG8KKyAgICAgIHRoZSB1bmljb2RlIHVua25vd24tY2hhcmFjdGVyIGdseXBoLgorCisgICAuLiBtZXRob2Q6OiBmb2xkKG5hbWUsIHZhbHVlKQorCisgICAgICBIZWFkZXIgZm9sZGluZyBpcyBjb250cm9sbGVkIGJ5IHRoZSA6YXR0cjpgcmVmb2xkX3NvdXJjZWAgcG9saWN5IHNldHRpbmcuCisgICAgICBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSAnc291cmNlIHZhbHVlJyBpZiBhbmQgb25seSBpZiBpdCBkb2VzIG5vdAorICAgICAgaGF2ZSBhIGBgbmFtZWBgIGF0dHJpYnV0ZSAoaGF2aW5nIGEgYGBuYW1lYGAgYXR0cmlidXRlIG1lYW5zIGl0IGlzIGEKKyAgICAgIGhlYWRlciBvYmplY3Qgb2Ygc29tZSBzb3J0KS4gIElmIGEgc291cmNlIHZhbHVlIG5lZWRzIHRvIGJlIHJlZm9sZGVkCisgICAgICBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSwgaXQgaXMgY29udmVydGVkIGludG8gYSBjdXN0b20gaGVhZGVyIG9iamVjdCBieQorICAgICAgcGFzc2luZyB0aGUgKm5hbWUqIGFuZCB0aGUgKnZhbHVlKiB3aXRoIGFueSBDUiBhbmQgTEYgY2hhcmFjdGVycyByZW1vdmVkCisgICAgICB0byB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLiAgRm9sZGluZyBvZiBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIGRvbmUgYnkKKyAgICAgIGNhbGxpbmcgaXRzIGBgZm9sZGBgIG1ldGhvZCB3aXRoIHRoZSBjdXJyZW50IHBvbGljeS4KKworICAgICAgU291cmNlIHZhbHVlcyBhcmUgc3BsaXQgaW50byBsaW5lcyB1c2luZyA6bWV0aDpgfnN0ci5zcGxpdGxpbmVzYC4gIElmCisgICAgICB0aGUgdmFsdWUgaXMgbm90IHRvIGJlIHJlZm9sZGVkLCB0aGUgbGluZXMgYXJlIHJlam9pbmVkIHVzaW5nIHRoZQorICAgICAgYGBsaW5lc2VwYGAgZnJvbSB0aGUgcG9saWN5IGFuZCByZXR1cm5lZC4gIFRoZSBleGNlcHRpb24gaXMgbGluZXMKKyAgICAgIGNvbnRhaW5pbmcgbm9uLWFzY2lpIGJpbmFyeSBkYXRhLiAgSW4gdGhhdCBjYXNlIHRoZSB2YWx1ZSBpcyByZWZvbGRlZAorICAgICAgcmVnYXJkbGVzcyBvZiB0aGUgYGByZWZvbGRfc291cmNlYGAgc2V0dGluZywgd2hpY2ggY2F1c2VzIHRoZSBiaW5hcnkgZGF0YQorICAgICAgdG8gYmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldC4KKworICAgLi4gbWV0aG9kOjogZm9sZF9iaW5hcnkobmFtZSwgdmFsdWUpCisKKyAgICAgIFRoZSBzYW1lIGFzIDptZXRoOmBmb2xkYCBpZiA6YXR0cjpgY3RlX3R5cGVgIGlzIGBgN2JpdGBgLCBleGNlcHQgdGhhdAorICAgICAgdGhlIHJldHVybmVkIHZhbHVlIGlzIGJ5dGVzLgorCisgICAgICBJZiA6YXR0cjpgY3RlX3R5cGVgIGlzIGBgOGJpdGBgLCBub24tQVNDSUkgYmluYXJ5IGRhdGEgaXMgY29udmVydGVkIGJhY2sKKyAgICAgIGludG8gYnl0ZXMuICBIZWFkZXJzIHdpdGggYmluYXJ5IGRhdGEgYXJlIG5vdCByZWZvbGRlZCwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgIGBgcmVmb2xkX2hlYWRlcmBgIHNldHRpbmcsIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZXRoZXIgdGhlCisgICAgICBiaW5hcnkgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgorCitUaGUgZm9sbG93aW5nIGluc3RhbmNlcyBvZiA6Y2xhc3M6YEVtYWlsUG9saWN5YCBwcm92aWRlIGRlZmF1bHRzIHN1aXRhYmxlIGZvcgorc3BlY2lmaWMgYXBwbGljYXRpb24gZG9tYWlucy4gIE5vdGUgdGhhdCBpbiB0aGUgZnV0dXJlIHRoZSBiZWhhdmlvciBvZiB0aGVzZQoraW5zdGFuY2VzIChpbiBwYXJ0aWN1bGFyIHRoZSBgYEhUVFBgYCBpbnN0YW5jZSkgbWF5IGJlIGFkanVzdGVkIHRvIGNvbmZvcm0gZXZlbgorbW9yZSBjbG9zZWx5IHRvIHRoZSBSRkNzIHJlbGV2YW50IHRvIHRoZWlyIGRvbWFpbnMuCisKKy4uIGRhdGE6OiBkZWZhdWx0CisKKyAgIEFuIGluc3RhbmNlIG9mIGBgRW1haWxQb2xpY3lgYCB3aXRoIGFsbCBkZWZhdWx0cyB1bmNoYW5nZWQuICBUaGlzIHBvbGljeQorICAgdXNlcyB0aGUgc3RhbmRhcmQgUHl0aG9uIGBgXG5gYCBsaW5lIGVuZGluZ3MgcmF0aGVyIHRoYW4gdGhlIFJGQy1jb3JyZWN0CisgICBgYFxyXG5gYC4KKworLi4gZGF0YTo6IFNNVFAKKworICAgU3VpdGFibGUgZm9yIHNlcmlhbGl6aW5nIG1lc3NhZ2VzIGluIGNvbmZvcm1hbmNlIHdpdGggdGhlIGVtYWlsIFJGQ3MuCisgICBMaWtlIGBgZGVmYXVsdGBgLCBidXQgd2l0aCBgYGxpbmVzZXBgYCBzZXQgdG8gYGBcclxuYGAsIHdoaWNoIGlzIFJGQworICAgY29tcGxpYW50LgorCisuLiBkYXRhOjogSFRUUAorCisgICBTdWl0YWJsZSBmb3Igc2VyaWFsaXppbmcgaGVhZGVycyB3aXRoIGZvciB1c2UgaW4gSFRUUCB0cmFmZmljLiAgTGlrZQorICAgYGBTTVRQYGAgZXhjZXB0IHRoYXQgYGBtYXhfbGluZV9sZW5ndGhgYCBpcyBzZXQgdG8gYGBOb25lYGAgKHVubGltaXRlZCkuCisKKy4uIGRhdGE6OiBzdHJpY3QKKworICAgQ29udmVuaWVuY2UgaW5zdGFuY2UuICBUaGUgc2FtZSBhcyBgYGRlZmF1bHRgYCBleGNlcHQgdGhhdAorICAgYGByYWlzZV9vbl9kZWZlY3RgYCBpcyBzZXQgdG8gYGBUcnVlYGAuICBUaGlzIGFsbG93cyBhbnkgcG9saWN5IHRvIGJlIG1hZGUKKyAgIHN0cmljdCBieSB3cml0aW5nOjoKKworICAgICAgICBzb21lcG9saWN5ICsgcG9saWN5LnN0cmljdAorCitXaXRoIGFsbCBvZiB0aGVzZSA6Y2xhc3M6YEVtYWlsUG9saWNpZXMgPC5FbWFpbFBvbGljeT5gLCB0aGUgZWZmZWN0aXZlIEFQSSBvZgordGhlIGVtYWlsIHBhY2thZ2UgaXMgY2hhbmdlZCBmcm9tIHRoZSBQeXRob24gMy4yIEFQSSBpbiB0aGUgZm9sbG93aW5nIHdheXM6CisKKyAgICogU2V0dGluZyBhIGhlYWRlciBvbiBhIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgcmVzdWx0cyBpbiB0aGF0CisgICAgIGhlYWRlciBiZWluZyBwYXJzZWQgYW5kIGEgY3VzdG9tIGhlYWRlciBvYmplY3QgY3JlYXRlZC4KKworICAgKiBGZXRjaGluZyBhIGhlYWRlciB2YWx1ZSBmcm9tIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCByZXN1bHRzCisgICAgIGluIHRoYXQgaGVhZGVyIGJlaW5nIHBhcnNlZCBhbmQgYSBjdXN0b20gaGVhZGVyIG9iamVjdCBjcmVhdGVkIGFuZAorICAgICByZXR1cm5lZC4KKworICAgKiBBbnkgY3VzdG9tIGhlYWRlciBvYmplY3QsIG9yIGFueSBoZWFkZXIgdGhhdCBpcyByZWZvbGRlZCBkdWUgdG8gdGhlCisgICAgIHBvbGljeSBzZXR0aW5ncywgaXMgZm9sZGVkIHVzaW5nIGFuIGFsZ29yaXRobSB0aGF0IGZ1bGx5IGltcGxlbWVudHMgdGhlCisgICAgIFJGQyBmb2xkaW5nIGFsZ29yaXRobXMsIGluY2x1ZGluZyBrbm93aW5nIHdoZXJlIGVuY29kZWQgd29yZHMgYXJlIHJlcXVpcmVkCisgICAgIGFuZCBhbGxvd2VkLgorCitGcm9tIHRoZSBhcHBsaWNhdGlvbiB2aWV3LCB0aGlzIG1lYW5zIHRoYXQgYW55IGhlYWRlciBvYnRhaW5lZCB0aHJvdWdoIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBpcyBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IHdpdGggY3VzdG9tCithdHRyaWJ1dGVzLCB3aG9zZSBzdHJpbmcgdmFsdWUgaXMgdGhlIGZ1bGx5IGRlY29kZWQgdW5pY29kZSB2YWx1ZSBvZiB0aGUKK2hlYWRlci4gIExpa2V3aXNlLCBhIGhlYWRlciBtYXkgYmUgYXNzaWduZWQgYSBuZXcgdmFsdWUsIG9yIGEgbmV3IGhlYWRlcgorY3JlYXRlZCwgdXNpbmcgYSB1bmljb2RlIHN0cmluZywgYW5kIHRoZSBwb2xpY3kgd2lsbCB0YWtlIGNhcmUgb2YgY29udmVydGluZwordGhlIHVuaWNvZGUgc3RyaW5nIGludG8gdGhlIGNvcnJlY3QgUkZDIGVuY29kZWQgZm9ybS4KKworVGhlIGN1c3RvbSBoZWFkZXIgb2JqZWN0cyBhbmQgdGhlaXIgYXR0cmlidXRlcyBhcmUgZGVzY3JpYmVkIGluCis6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwucnN0CmluZGV4IDQ1MzBiOTUuLmVmNTM1NGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5yc3QKQEAgLTUxLDYgKzUxLDggQEAKICAgIGVtYWlsLm1lc3NhZ2UucnN0CiAgICBlbWFpbC5wYXJzZXIucnN0CiAgICBlbWFpbC5nZW5lcmF0b3IucnN0CisgICBlbWFpbC5wb2xpY3kucnN0CisgICBlbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKICAgIGVtYWlsLm1pbWUucnN0CiAgICBlbWFpbC5oZWFkZXIucnN0CiAgICBlbWFpbC5jaGFyc2V0LnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwudXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAppbmRleCAxMWJmM2IyLi5iYWQwYjI0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC51dGlsLnJzdApAQCAtMjksMTMgKzI5LDIxIEBACiAgICBmYWlscywgaW4gd2hpY2ggY2FzZSBhIDItdHVwbGUgb2YgYGAoJycsICcnKWBgIGlzIHJldHVybmVkLgogCiAKLS4uIGZ1bmN0aW9uOjogZm9ybWF0YWRkcihwYWlyKQorLi4gZnVuY3Rpb246OiBmb3JtYXRhZGRyKHBhaXIsIGNoYXJzZXQ9J3V0Zi04JykKIAogICAgVGhlIGludmVyc2Ugb2YgOm1ldGg6YHBhcnNlYWRkcmAsIHRoaXMgdGFrZXMgYSAyLXR1cGxlIG9mIHRoZSBmb3JtIGBgKHJlYWxuYW1lLAogICAgZW1haWxfYWRkcmVzcylgYCBhbmQgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIHN1aXRhYmxlIGZvciBhIDptYWlsaGVhZGVyOmBUb2Agb3IKICAgIDptYWlsaGVhZGVyOmBDY2AgaGVhZGVyLiAgSWYgdGhlIGZpcnN0IGVsZW1lbnQgb2YgKnBhaXIqIGlzIGZhbHNlLCB0aGVuIHRoZQogICAgc2Vjb25kIGVsZW1lbnQgaXMgcmV0dXJuZWQgdW5tb2RpZmllZC4KIAorICAgT3B0aW9uYWwgKmNoYXJzZXQqIGlzIHRoZSBjaGFyYWN0ZXIgc2V0IHRoYXQgd2lsbCBiZSB1c2VkIGluIHRoZSA6cmZjOmAyMDQ3YAorICAgZW5jb2Rpbmcgb2YgdGhlIGBgcmVhbG5hbWVgYCBpZiB0aGUgYGByZWFsbmFtZWBgIGNvbnRhaW5zIG5vbi1BU0NJSQorICAgY2hhcmFjdGVycy4gIENhbiBiZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHN0cmAgb3IgYQorICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YC4gIERlZmF1bHRzIHRvIGBgdXRmLThgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqY2hhcnNldCogb3B0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YWRkcmVzc2VzKGZpZWxkdmFsdWVzKQogCkBAIC03NCw2ICs4MiwyMCBAQAogICAgaW5kZXhlcyA2LCA3LCBhbmQgOCBvZiB0aGUgcmVzdWx0IHR1cGxlIGFyZSBub3QgdXNhYmxlLgogCiAKKy4uIGZ1bmN0aW9uOjogcGFyc2VkYXRlX3RvX2RhdGV0aW1lKGRhdGUpCisKKyAgIFRoZSBpbnZlcnNlIG9mIDpmdW5jOmBmb3JtYXRfZGF0ZXRpbWVgLiAgUGVyZm9ybXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMKKyAgIDpmdW5jOmBwYXJzZWRhdGVgLCBidXQgb24gc3VjY2VzcyByZXR1cm5zIGEgOm1vZDpgfmRhdGV0aW1lLmRhdGV0aW1lYC4gIElmCisgICB0aGUgaW5wdXQgZGF0ZSBoYXMgYSB0aW1lem9uZSBvZiBgYC0wMDAwYGAsIHRoZSBgYGRhdGV0aW1lYGAgd2lsbCBiZSBhIG5haXZlCisgICBgYGRhdGV0aW1lYGAsIGFuZCBpZiB0aGUgZGF0ZSBpcyBjb25mb3JtaW5nIHRvIHRoZSBSRkNzIGl0IHdpbGwgcmVwcmVzZW50IGEKKyAgIHRpbWUgaW4gVVRDIGJ1dCB3aXRoIG5vIGluZGljYXRpb24gb2YgdGhlIGFjdHVhbCBzb3VyY2UgdGltZXpvbmUgb2YgdGhlCisgICBtZXNzYWdlIHRoZSBkYXRlIGNvbWVzIGZyb20uICBJZiB0aGUgaW5wdXQgZGF0ZSBoYXMgYW55IG90aGVyIHZhbGlkIHRpbWV6b25lCisgICBvZmZzZXQsIHRoZSBgYGRhdGV0aW1lYGAgd2lsbCBiZSBhbiBhd2FyZSBgYGRhdGV0aW1lYGAgd2l0aCB0aGUKKyAgIGNvcnJlc3BvbmRpbmcgYSA6Y2xhc3M6YH5kYXRldGltZS50aW1lem9uZWAgOmNsYXNzOmB+ZGF0ZXRpbWUudHppbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBta3RpbWVfdHoodHVwbGUpCiAKICAgIFR1cm4gYSAxMC10dXBsZSBhcyByZXR1cm5lZCBieSA6ZnVuYzpgcGFyc2VkYXRlX3R6YCBpbnRvIGEgVVRDIHRpbWVzdGFtcC4gIEl0CkBAIC0xMDUsNiArMTI3LDM2IEBACiAgICBgYEZhbHNlYGAuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAKIAorLi4gZnVuY3Rpb246OiBmb3JtYXRfZGF0ZXRpbWUoZHQsIHVzZWdtdD1GYWxzZSkKKworICAgTGlrZSBgYGZvcm1hdGRhdGVgYCwgYnV0IHRoZSBpbnB1dCBpcyBhIDptb2Q6YGRhdGV0aW1lYCBpbnN0YW5jZS4gIElmIGl0IGlzCisgICBhIG5haXZlIGRhdGV0aW1lLCBpdCBpcyBhc3N1bWVkIHRvIGJlICJVVEMgd2l0aCBubyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHNvdXJjZSB0aW1lem9uZSIsIGFuZCB0aGUgY29udmVudGlvbmFsIGBgLTAwMDBgYCBpcyB1c2VkIGZvciB0aGUgdGltZXpvbmUuCisgICBJZiBpdCBpcyBhbiBhd2FyZSBgYGRhdGV0aW1lYGAsIHRoZW4gdGhlIG51bWVyaWMgdGltZXpvbmUgb2Zmc2V0IGlzIHVzZWQuCisgICBJZiBpdCBpcyBhbiBhd2FyZSB0aW1lem9uZSB3aXRoIG9mZnNldCB6ZXJvLCB0aGVuICp1c2VnbXQqIG1heSBiZSBzZXQgdG8KKyAgIGBgVHJ1ZWBgLCBpbiB3aGljaCBjYXNlIHRoZSBzdHJpbmcgYGBHTVRgYCBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG51bWVyaWMKKyAgIHRpbWV6b25lIG9mZnNldC4gIFRoaXMgcHJvdmlkZXMgYSB3YXkgdG8gZ2VuZXJhdGUgc3RhbmRhcmRzIGNvbmZvcm1hbnQgSFRUUAorICAgZGF0ZSBoZWFkZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGxvY2FsdGltZShkdD1Ob25lKQorCisgICAgUmV0dXJuIGxvY2FsIHRpbWUgYXMgYW4gYXdhcmUgZGF0ZXRpbWUgb2JqZWN0LiAgSWYgY2FsbGVkIHdpdGhvdXQKKyAgICBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KiBhcmd1bWVudCBzaG91bGQgYmUgYQorICAgIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZSwgYW5kIGl0IGlzIGNvbnZlcnRlZCB0byB0aGUgbG9jYWwgdGltZQorICAgIHpvbmUgYWNjb3JkaW5nIHRvIHRoZSBzeXN0ZW0gdGltZSB6b25lIGRhdGFiYXNlLiAgSWYgKmR0KiBpcyBuYWl2ZSAodGhhdAorICAgIGlzLCBgYGR0LnR6aW5mb2BgIGlzIGBgTm9uZWBgKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLiAgSW4gdGhpcworICAgIGNhc2UsIGEgcG9zaXRpdmUgb3IgemVybyB2YWx1ZSBmb3IgKmlzZHN0KiBjYXVzZXMgYGBsb2NhbHRpbWVgYCB0byBwcmVzdW1lCisgICAgaW5pdGlhbGx5IHRoYXQgc3VtbWVyIHRpbWUgKGZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmcgVGltZSkgaXMgb3IgaXMgbm90CisgICAgKHJlc3BlY3RpdmVseSkgaW4gZWZmZWN0IGZvciB0aGUgc3BlY2lmaWVkIHRpbWUuICBBIG5lZ2F0aXZlIHZhbHVlIGZvcgorICAgICppc2RzdCogY2F1c2VzIHRoZSBgYGxvY2FsdGltZWBgIHRvIGF0dGVtcHQgdG8gZGl2aW5lIHdoZXRoZXIgc3VtbWVyIHRpbWUKKyAgICBpcyBpbiBlZmZlY3QgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSkKIAogICAgUmV0dXJucyBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYW4gOnJmYzpgMjgyMmBcIC1jb21wbGlhbnQKQEAgLTExNSw3ICsxNjcsOCBAQAogICAgbWF5IGJlIHVzZWZ1bCBjZXJ0YWluIGNhc2VzLCBzdWNoIGFzIGEgY29uc3RydWN0aW5nIGRpc3RyaWJ1dGVkIHN5c3RlbSB0aGF0CiAgICB1c2VzIGEgY29uc2lzdGVudCBkb21haW4gbmFtZSBhY3Jvc3MgbXVsdGlwbGUgaG9zdHMuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIGRvbWFpbiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgQWRkZWQgdGhlICpkb21haW4qIGtleXdvcmQuCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvZGVfcmZjMjIzMShzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAppbmRleCA3ZDYyMmMyLi4wNTNiYTU2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9leGNlcHRpb25zLnJzdApAQCAtMzQsNiArMzQsMjcgQEAKIGRlZmluaW5nIGV4Y2VwdGlvbnMgaXMgYXZhaWxhYmxlIGluIHRoZSBQeXRob24gVHV0b3JpYWwgdW5kZXIKIDpyZWY6YHR1dC11c2VyZXhjZXB0aW9uc2AuCiAKK1doZW4gcmFpc2luZyAob3IgcmUtcmFpc2luZykgYW4gZXhjZXB0aW9uIGluIGFuIDprZXl3b3JkOmBleGNlcHRgIGNsYXVzZQorOmF0dHI6YF9fY29udGV4dF9fYCBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0aGUgbGFzdCBleGNlcHRpb24gY2F1Z2h0OyBpZiB0aGUKK25ldyBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgdGhlIHRyYWNlYmFjayB0aGF0IGlzIGV2ZW50dWFsbHkgZGlzcGxheWVkIHdpbGwKK2luY2x1ZGUgdGhlIG9yaWdpbmF0aW5nIGV4Y2VwdGlvbihzKSBhbmQgdGhlIGZpbmFsIGV4Y2VwdGlvbi4KKworVGhpcyBpbXBsaWNpdCBleGNlcHRpb24gY2hhaW4gY2FuIGJlIG1hZGUgZXhwbGljaXQgYnkgdXNpbmcgOmtleXdvcmQ6YGZyb21gIHdpdGgKKzprZXl3b3JkOmByYWlzZWAuICBUaGUgc2luZ2xlIGFyZ3VtZW50IHRvIDprZXl3b3JkOmBmcm9tYCBtdXN0IGJlIGFuIGV4Y2VwdGlvbgorb3IgYGBOb25lYGAuIEl0IHdpbGwgYmUgc2V0IGFzIDphdHRyOmBfX2NhdXNlX19gIG9uIHRoZSByYWlzZWQgZXhjZXB0aW9uLgorU2V0dGluZyA6YXR0cjpgX19jYXVzZV9fYCBpbXBsaWNpdGx5IHNldHMgdGhlIDphdHRyOmBfX3N1cHByZXNzX2NvbnRleHRfX2AgdG8KK2BgVHJ1ZWBgLiBJZiA6YXR0cjpgX19jYXVzZV9fYCBpcyBhbiBleGNlcHRpb24sIGl0IHdpbGwgYmUgZGlzcGxheWVkLiBJZgorOmF0dHI6YF9fY2F1c2VfX2AgaXMgcHJlc2VudCBvciA6YXR0cjpgX19zdXBwcmVzc19jb250ZXh0X19gIGhhcyBhIHRydWUgdmFsdWUsCis6YXR0cjpgX19jb250ZXh0X19gIHdpbGwgbm90IGJlIGRpc3BsYXllZC4KKworSW4gZWl0aGVyIGNhc2UsIHRoZSBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGluZyBjb2RlIHdpbGwgbm90IGRpc3BsYXkgYW55IG9mIHRoZQorcmVtYWluaW5nIGxpbmtzIGluIHRoZSA6YXR0cjpgX19jb250ZXh0X19gIGNoYWluIGlmIDphdHRyOmBfX2NhdXNlX19gIGhhcyBiZWVuCitzZXQuCisKKworQmFzZSBjbGFzc2VzCistLS0tLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIG1vc3RseSBhcyBiYXNlIGNsYXNzZXMgZm9yIG90aGVyIGV4Y2VwdGlvbnMuCiAKIC4uIGV4Y2VwdGlvbjo6IEJhc2VFeGNlcHRpb24KQEAgLTkwLDI3ICsxMTEsOCBAQAogICAgY2FuIGJlIHJhaXNlZCBkaXJlY3RseSBieSA6ZnVuYzpgY29kZWNzLmxvb2t1cGAuCiAKIAotLi4gZXhjZXB0aW9uOjogRW52aXJvbm1lbnRFcnJvcgotCi0gICBUaGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyB0aGF0IGNhbiBvY2N1ciBvdXRzaWRlIHRoZSBQeXRob24gc3lzdGVtOgotICAgOmV4YzpgSU9FcnJvcmAsIDpleGM6YE9TRXJyb3JgLiAgV2hlbiBleGNlcHRpb25zIG9mIHRoaXMgdHlwZSBhcmUgY3JlYXRlZCB3aXRoIGEKLSAgIDItdHVwbGUsIHRoZSBmaXJzdCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUgaW5zdGFuY2UncyA6YXR0cjpgZXJybm9gIGF0dHJpYnV0ZQotICAgKGl0IGlzIGFzc3VtZWQgdG8gYmUgYW4gZXJyb3IgbnVtYmVyKSwgYW5kIHRoZSBzZWNvbmQgaXRlbSBpcyBhdmFpbGFibGUgb24gdGhlCi0gICA6YXR0cjpgc3RyZXJyb3JgIGF0dHJpYnV0ZSAoaXQgaXMgdXN1YWxseSB0aGUgYXNzb2NpYXRlZCBlcnJvciBtZXNzYWdlKS4gIFRoZQotICAgdHVwbGUgaXRzZWxmIGlzIGFsc28gYXZhaWxhYmxlIG9uIHRoZSA6YXR0cjpgYXJnc2AgYXR0cmlidXRlLgotCi0gICBXaGVuIGFuIDpleGM6YEVudmlyb25tZW50RXJyb3JgIGV4Y2VwdGlvbiBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIDMtdHVwbGUsIHRoZQotICAgZmlyc3QgdHdvIGl0ZW1zIGFyZSBhdmFpbGFibGUgYXMgYWJvdmUsIHdoaWxlIHRoZSB0aGlyZCBpdGVtIGlzIGF2YWlsYWJsZSBvbiB0aGUKLSAgIDphdHRyOmBmaWxlbmFtZWAgYXR0cmlidXRlLiAgSG93ZXZlciwgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUKLSAgIDphdHRyOmBhcmdzYCBhdHRyaWJ1dGUgY29udGFpbnMgb25seSBhIDItdHVwbGUgb2YgdGhlIGZpcnN0IHR3byBjb25zdHJ1Y3RvcgotICAgYXJndW1lbnRzLgotCi0gICBUaGUgOmF0dHI6YGZpbGVuYW1lYCBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgd2hlbiB0aGlzIGV4Y2VwdGlvbiBpcyBjcmVhdGVkIHdpdGgKLSAgIG90aGVyIHRoYW4gMyBhcmd1bWVudHMuICBUaGUgOmF0dHI6YGVycm5vYCBhbmQgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGVzIGFyZQotICAgYWxzbyBgYE5vbmVgYCB3aGVuIHRoZSBpbnN0YW5jZSB3YXMgY3JlYXRlZCB3aXRoIG90aGVyIHRoYW4gMiBvciAzIGFyZ3VtZW50cy4KLSAgIEluIHRoaXMgbGFzdCBjYXNlLCA6YXR0cjpgYXJnc2AgY29udGFpbnMgdGhlIHZlcmJhdGltIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBhcyBhCi0gICB0dXBsZS4KLQorQ29uY3JldGUgZXhjZXB0aW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHRoZSBleGNlcHRpb25zIHRoYXQgYXJlIHVzdWFsbHkgcmFpc2VkLgogCkBAIC0xNTEsMjEgKzE1MywxOSBAQAogICAgaXQgaXMgdGVjaG5pY2FsbHkgbm90IGFuIGVycm9yLgogCiAKLS4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYW4gSS9PIG9wZXJhdGlvbiAoc3VjaCBhcyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHByaW50YCBvcgotICAgOmZ1bmM6YG9wZW5gIGZ1bmN0aW9ucyBvciBhIG1ldGhvZCBvZiBhIDp0ZXJtOmBmaWxlIG9iamVjdGApIGZhaWxzIGZvciBhbgotICAgSS9PLXJlbGF0ZWQgcmVhc29uLCBlLmcuLCAiZmlsZSBub3QgZm91bmQiIG9yICJkaXNrIGZ1bGwiLgotCi0gICBUaGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIFNlZSB0aGUgZGlzY3Vzc2lvbiBhYm92ZQotICAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9uIGluc3RhbmNlIGF0dHJpYnV0ZXMuCi0KLQogLi4gZXhjZXB0aW9uOjogSW1wb3J0RXJyb3IKIAogICAgUmFpc2VkIHdoZW4gYW4gOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGZhaWxzIHRvIGZpbmQgdGhlIG1vZHVsZSBkZWZpbml0aW9uCiAgICBvciB3aGVuIGEgYGBmcm9tIC4uLiBpbXBvcnRgYCBmYWlscyB0byBmaW5kIGEgbmFtZSB0aGF0IGlzIHRvIGJlIGltcG9ydGVkLgogCisgICBUaGUgOmF0dHI6YG5hbWVgIGFuZCA6YXR0cjpgcGF0aGAgYXR0cmlidXRlcyBjYW4gYmUgc2V0IHVzaW5nIGtleXdvcmQtb25seQorICAgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4gV2hlbiBzZXQgdGhleSByZXByZXNlbnQgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZQorICAgdGhhdCB3YXMgYXR0ZW1wdGVkIHRvIGJlIGltcG9ydGVkIGFuZCB0aGUgcGF0aCB0byBhbnkgZmlsZSB3aGljaCB0cmlnZ2VyZWQKKyAgIHRoZSBleGNlcHRpb24sIHJlc3BlY3RpdmVseS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSA6YXR0cjpgbmFtZWAgYW5kIDphdHRyOmBwYXRoYCBhdHRyaWJ1dGVzLgorCiAKIC4uIGV4Y2VwdGlvbjo6IEluZGV4RXJyb3IKIApAQCAtMjIxLDE3ICsyMjEsMzAgQEAKIAogICAgLi4gaW5kZXg6OiBtb2R1bGU6IGVycm5vCiAKLSAgIFRoaXMgZXhjZXB0aW9uIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYC4gIEl0IGlzIHJhaXNlZCB3aGVuIGEKLSAgIGZ1bmN0aW9uIHJldHVybnMgYSBzeXN0ZW0tcmVsYXRlZCBlcnJvciAobm90IGZvciBpbGxlZ2FsIGFyZ3VtZW50IHR5cGVzIG9yCi0gICBvdGhlciBpbmNpZGVudGFsIGVycm9ycykuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgYSBudW1lcmljIGVycm9yCi0gICBjb2RlIGZyb20gOmM6ZGF0YTpgZXJybm9gLCBhbmQgdGhlIDphdHRyOmBzdHJlcnJvcmAgYXR0cmlidXRlIGlzIHRoZQotICAgY29ycmVzcG9uZGluZyBzdHJpbmcsIGFzIHdvdWxkIGJlIHByaW50ZWQgYnkgdGhlIEMgZnVuY3Rpb24gOmM6ZnVuYzpgcGVycm9yYC4KLSAgIFNlZSB0aGUgbW9kdWxlIDptb2Q6YGVycm5vYCwgd2hpY2ggY29udGFpbnMgbmFtZXMgZm9yIHRoZSBlcnJvciBjb2RlcyBkZWZpbmVkCi0gICBieSB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtLgorICAgVGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYSBzeXN0ZW0gZnVuY3Rpb24gcmV0dXJucyBhIHN5c3RlbS1yZWxhdGVkCisgICBlcnJvciwgaW5jbHVkaW5nIEkvTyBmYWlsdXJlcyBzdWNoIGFzICJmaWxlIG5vdCBmb3VuZCIgb3IgImRpc2sgZnVsbCIKKyAgIChub3QgZm9yIGlsbGVnYWwgYXJndW1lbnQgdHlwZXMgb3Igb3RoZXIgaW5jaWRlbnRhbCBlcnJvcnMpLiAgT2Z0ZW4gYQorICAgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAgd2lsbCBhY3R1YWxseSBiZSByYWlzZWQgYXMgZGVzY3JpYmVkIGluCisgICBgT1MgZXhjZXB0aW9uc2BfIGJlbG93LiAgVGhlIDphdHRyOmBlcnJub2AgYXR0cmlidXRlIGlzIGEgbnVtZXJpYyBlcnJvcgorICAgY29kZSBmcm9tIHRoZSBDIHZhcmlhYmxlIDpjOmRhdGE6YGVycm5vYC4KIAotICAgRm9yIGV4Y2VwdGlvbnMgdGhhdCBpbnZvbHZlIGEgZmlsZSBzeXN0ZW0gcGF0aCAoc3VjaCBhcyA6ZnVuYzpgY2hkaXJgIG9yCi0gICA6ZnVuYzpgdW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGEgdGhpcmQgYXR0cmlidXRlLAotICAgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorICAgVW5kZXIgV2luZG93cywgdGhlIDphdHRyOmB3aW5lcnJvcmAgYXR0cmlidXRlIGdpdmVzIHlvdSB0aGUgbmF0aXZlCisgICBXaW5kb3dzIGVycm9yIGNvZGUuICBUaGUgOmF0dHI6YGVycm5vYCBhdHRyaWJ1dGUgaXMgdGhlbiBhbiBhcHByb3hpbWF0ZQorICAgdHJhbnNsYXRpb24sIGluIFBPU0lYIHRlcm1zLCBvZiB0aGF0IG5hdGl2ZSBlcnJvciBjb2RlLgorCisgICBVbmRlciBhbGwgcGxhdGZvcm1zLCB0aGUgOmF0dHI6YHN0cmVycm9yYCBhdHRyaWJ1dGUgaXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgIGVycm9yIG1lc3NhZ2UgYXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0gKGFzIGZvcm1hdHRlZCBieSB0aGUgQworICAgZnVuY3Rpb25zIDpjOmZ1bmM6YHBlcnJvcmAgdW5kZXIgUE9TSVgsIGFuZCA6YzpmdW5jOmBGb3JtYXRNZXNzYWdlYAorICAgV2luZG93cykuCisKKyAgIEZvciBleGNlcHRpb25zIHRoYXQgaW52b2x2ZSBhIGZpbGUgc3lzdGVtIHBhdGggKHN1Y2ggYXMgOmZ1bmM6YG9wZW5gIG9yCisgICA6ZnVuYzpgb3MudW5saW5rYCksIHRoZSBleGNlcHRpb24gaW5zdGFuY2Ugd2lsbCBjb250YWluIGFuIGFkZGl0aW9uYWwKKyAgIGF0dHJpYnV0ZSwgOmF0dHI6YGZpbGVuYW1lYCwgd2hpY2ggaXMgdGhlIGZpbGUgbmFtZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgRW52aXJvbm1lbnRFcnJvcmAsIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBXaW5kb3dzRXJyb3JgLAorICAgICAgOmV4YzpgVk1TRXJyb3JgLCA6ZXhjOmBzb2NrZXQuZXJyb3JgLCA6ZXhjOmBzZWxlY3QuZXJyb3JgIGFuZAorICAgICAgOmV4YzpgbW1hcC5lcnJvcmAgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE92ZXJmbG93RXJyb3IKQEAgLTI2Miw4ICsyNzUsMjAgQEAKIC4uIGV4Y2VwdGlvbjo6IFN0b3BJdGVyYXRpb24KIAogICAgUmFpc2VkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBuZXh0YCBhbmQgYW4gOnRlcm06YGl0ZXJhdG9yYFwncwotICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kIHRvIHNpZ25hbCB0aGF0IHRoZXJlIGFyZSBubyBmdXJ0aGVyIHZhbHVlcy4KKyAgIDptZXRoOmB+aXRlcmF0b3IuX19uZXh0X19gIG1ldGhvZCB0byBzaWduYWwgdGhhdCB0aGVyZSBhcmUgbm8gZnVydGhlcgorICAgaXRlbXMgcHJvZHVjZWQgYnkgdGhlIGl0ZXJhdG9yLgogCisgICBUaGUgZXhjZXB0aW9uIG9iamVjdCBoYXMgYSBzaW5nbGUgYXR0cmlidXRlIDphdHRyOmB2YWx1ZWAsIHdoaWNoIGlzCisgICBnaXZlbiBhcyBhbiBhcmd1bWVudCB3aGVuIGNvbnN0cnVjdGluZyB0aGUgZXhjZXB0aW9uLCBhbmQgZGVmYXVsdHMKKyAgIHRvIDpjb25zdDpgTm9uZWAuCisKKyAgIFdoZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gcmV0dXJucywgYSBuZXcgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgaW5zdGFuY2UgaXMKKyAgIHJhaXNlZCwgYW5kIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhcyB0aGUKKyAgIDphdHRyOmB2YWx1ZWAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgZXhjZXB0aW9uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB2YWx1ZWBgIGF0dHJpYnV0ZSBhbmQgdGhlIGFiaWxpdHkgZm9yIGdlbmVyYXRvciBmdW5jdGlvbnMgdG8KKyAgICAgIHVzZSBpdCB0byByZXR1cm4gYSB2YWx1ZS4KIAogLi4gZXhjZXB0aW9uOjogU3ludGF4RXJyb3IKIApAQCAtMzcyLDIxICszOTcsNiBAQAogICAgbW9yZSBwcmVjaXNlIGV4Y2VwdGlvbiBzdWNoIGFzIDpleGM6YEluZGV4RXJyb3JgLgogCiAKLS4uIGV4Y2VwdGlvbjo6IFZNU0Vycm9yCi0KLSAgIE9ubHkgYXZhaWxhYmxlIG9uIFZNUy4gIFJhaXNlZCB3aGVuIGEgVk1TLXNwZWNpZmljIGVycm9yIG9jY3Vycy4KLQotCi0uLiBleGNlcHRpb246OiBXaW5kb3dzRXJyb3IKLQotICAgUmFpc2VkIHdoZW4gYSBXaW5kb3dzLXNwZWNpZmljIGVycm9yIG9jY3VycyBvciB3aGVuIHRoZSBlcnJvciBudW1iZXIgZG9lcyBub3QKLSAgIGNvcnJlc3BvbmQgdG8gYW4gOmM6ZGF0YTpgZXJybm9gIHZhbHVlLiAgVGhlIDphdHRyOmB3aW5lcnJvcmAgYW5kCi0gICA6YXR0cjpgc3RyZXJyb3JgIHZhbHVlcyBhcmUgY3JlYXRlZCBmcm9tIHRoZSByZXR1cm4gdmFsdWVzIG9mIHRoZQotICAgOmM6ZnVuYzpgR2V0TGFzdEVycm9yYCBhbmQgOmM6ZnVuYzpgRm9ybWF0TWVzc2FnZWAgZnVuY3Rpb25zIGZyb20gdGhlIFdpbmRvd3MKLSAgIFBsYXRmb3JtIEFQSS4gVGhlIDphdHRyOmBlcnJub2AgdmFsdWUgbWFwcyB0aGUgOmF0dHI6YHdpbmVycm9yYCB2YWx1ZSB0bwotICAgY29ycmVzcG9uZGluZyBgYGVycm5vLmhgYCB2YWx1ZXMuIFRoaXMgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KLQotCiAuLiBleGNlcHRpb246OiBaZXJvRGl2aXNpb25FcnJvcgogCiAgICBSYWlzZWQgd2hlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIGEgZGl2aXNpb24gb3IgbW9kdWxvIG9wZXJhdGlvbiBpcyB6ZXJvLiAgVGhlCkBAIC0zOTQsNiArNDA0LDEzNiBAQAogICAgb3BlcmF0aW9uLgogCiAKK1RoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUga2VwdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zOworc3RhcnRpbmcgZnJvbSBQeXRob24gMy4zLCB0aGV5IGFyZSBhbGlhc2VzIG9mIDpleGM6YE9TRXJyb3JgLgorCisuLiBleGNlcHRpb246OiBFbnZpcm9ubWVudEVycm9yCisKKy4uIGV4Y2VwdGlvbjo6IElPRXJyb3IKKworLi4gZXhjZXB0aW9uOjogVk1TRXJyb3IKKworICAgT25seSBhdmFpbGFibGUgb24gVk1TLgorCisuLiBleGNlcHRpb246OiBXaW5kb3dzRXJyb3IKKworICAgT25seSBhdmFpbGFibGUgb24gV2luZG93cy4KKworCitPUyBleGNlcHRpb25zCiteXl5eXl5eXl5eXl5eCisKK1RoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucyBhcmUgc3ViY2xhc3NlcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhleSBnZXQgcmFpc2VkCitkZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBlcnJvciBjb2RlLgorCisuLiBleGNlcHRpb246OiBCbG9ja2luZ0lPRXJyb3IKKworICAgUmFpc2VkIHdoZW4gYW4gb3BlcmF0aW9uIHdvdWxkIGJsb2NrIG9uIGFuIG9iamVjdCAoZS5nLiBzb2NrZXQpIHNldAorICAgZm9yIG5vbi1ibG9ja2luZyBvcGVyYXRpb24uCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQUdBSU5gYCwgYGBFQUxSRUFEWWBgLAorICAgYGBFV09VTERCTE9DS2BgIGFuZCBgYEVJTlBST0dSRVNTYGAuCisKKyAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YE9TRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGNhbiBoYXZlCisgICBvbmUgbW9yZSBhdHRyaWJ1dGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNoYXJhY3RlcnNfd3JpdHRlbgorCisgICAgICBBbiBpbnRlZ2VyIGNvbnRhaW5pbmcgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbQorICAgICAgYmVmb3JlIGl0IGJsb2NrZWQuICBUaGlzIGF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgd2hlbiB1c2luZyB0aGUKKyAgICAgIGJ1ZmZlcmVkIEkvTyBjbGFzc2VzIGZyb20gdGhlIDptb2Q6YGlvYCBtb2R1bGUuCisKKy4uIGV4Y2VwdGlvbjo6IENoaWxkUHJvY2Vzc0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIGFuIG9wZXJhdGlvbiBvbiBhIGNoaWxkIHByb2Nlc3MgZmFpbGVkLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNISUxEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25FcnJvcgorCisgICBBIGJhc2UgY2xhc3MgZm9yIGNvbm5lY3Rpb24tcmVsYXRlZCBpc3N1ZXMuCisKKyAgIFN1YmNsYXNzZXMgYXJlIDpleGM6YEJyb2tlblBpcGVFcnJvcmAsIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgLAorICAgOmV4YzpgQ29ubmVjdGlvblJlZnVzZWRFcnJvcmAgYW5kIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYC4KKworLi4gZXhjZXB0aW9uOjogQnJva2VuUGlwZUVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIG9uIGEKKyAgIHBpcGUgd2hpbGUgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQsIG9yIHRyeWluZyB0byB3cml0ZSBvbiBhIHNvY2tldAorICAgd2hpY2ggaGFzIGJlZW4gc2h1dGRvd24gZm9yIHdyaXRpbmcuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFUElQRWBgIGFuZCBgYEVTSFVURE9XTmBgLgorCisuLiBleGNlcHRpb246OiBDb25uZWN0aW9uQWJvcnRlZEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGF0dGVtcHQKKyAgIGlzIGFib3J0ZWQgYnkgdGhlIHBlZXIuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFQ09OTkFCT1JURURgYC4KKworLi4gZXhjZXB0aW9uOjogQ29ubmVjdGlvblJlZnVzZWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YENvbm5lY3Rpb25FcnJvcmAsIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBhdHRlbXB0CisgICBpcyByZWZ1c2VkIGJ5IHRoZSBwZWVyLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUNPTk5SRUZVU0VEYGAuCisKKy4uIGV4Y2VwdGlvbjo6IENvbm5lY3Rpb25SZXNldEVycm9yCisKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCwgcmFpc2VkIHdoZW4gYSBjb25uZWN0aW9uIGlzCisgICByZXNldCBieSB0aGUgcGVlci4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVDT05OUkVTRVRgYC4KKworLi4gZXhjZXB0aW9uOjogRmlsZUV4aXN0c0Vycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSB3aGljaCBhbHJlYWR5IGV4aXN0cy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVFWElTVGBgLgorCisuLiBleGNlcHRpb246OiBGaWxlTm90Rm91bmRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGZpbGUgb3IgZGlyZWN0b3J5IGlzIHJlcXVlc3RlZCBidXQgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT0VOVGBgLgorCisuLiBleGNlcHRpb246OiBJbnRlcnJ1cHRlZEVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQgYnkgYW4gaW5jb21pbmcgc2lnbmFsLgorICAgQ29ycmVzcG9uZHMgdG8gOmM6ZGF0YTpgZXJybm9gIGBgRUVJTlRSYGAuCisKKy4uIGV4Y2VwdGlvbjo6IElzQURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZmlsZSBvcGVyYXRpb24gKHN1Y2ggYXMgOmZ1bmM6YG9zLnJlbW92ZWApIGlzIHJlcXVlc3RlZAorICAgb24gYSBkaXJlY3RvcnkuCisgICBDb3JyZXNwb25kcyB0byA6YzpkYXRhOmBlcnJub2AgYGBFSVNESVJgYC4KKworLi4gZXhjZXB0aW9uOjogTm90QURpcmVjdG9yeUVycm9yCisKKyAgIFJhaXNlZCB3aGVuIGEgZGlyZWN0b3J5IG9wZXJhdGlvbiAoc3VjaCBhcyA6ZnVuYzpgb3MubGlzdGRpcmApIGlzIHJlcXVlc3RlZAorICAgb24gc29tZXRoaW5nIHdoaWNoIGlzIG5vdCBhIGRpcmVjdG9yeS4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVOT1RESVJgYC4KKworLi4gZXhjZXB0aW9uOjogUGVybWlzc2lvbkVycm9yCisKKyAgIFJhaXNlZCB3aGVuIHRyeWluZyB0byBydW4gYW4gb3BlcmF0aW9uIHdpdGhvdXQgdGhlIGFkZXF1YXRlIGFjY2VzcworICAgcmlnaHRzIC0gZm9yIGV4YW1wbGUgZmlsZXN5c3RlbSBwZXJtaXNzaW9ucy4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVBQ0NFU2BgIGFuZCBgYEVQRVJNYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFByb2Nlc3NMb29rdXBFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIGdpdmVuIHByb2Nlc3MgZG9lc24ndCBleGlzdC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVTUkNIYGAuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgd2hlbiBhIHN5c3RlbSBmdW5jdGlvbiB0aW1lZCBvdXQgYXQgdGhlIHN5c3RlbSBsZXZlbC4KKyAgIENvcnJlc3BvbmRzIHRvIDpjOmRhdGE6YGVycm5vYCBgYEVUSU1FRE9VVGBgLgorCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIEFsbCB0aGUgYWJvdmUgOmV4YzpgT1NFcnJvcmAgc3ViY2xhc3NlcyB3ZXJlIGFkZGVkLgorCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIGV4Y2VwdGlvbiBoaWVyYXJjaHkKKworCitXYXJuaW5ncworLS0tLS0tLS0KKwogVGhlIGZvbGxvd2luZyBleGNlcHRpb25zIGFyZSB1c2VkIGFzIHdhcm5pbmcgY2F0ZWdvcmllczsgc2VlIHRoZSA6bW9kOmB3YXJuaW5nc2AKIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmF1bHRoYW5kbGVyLnJzdCBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MzMzYyMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2ZhdWx0aGFuZGxlci5yc3QKQEAgLTAsMCArMSwxMzYgQEAKKzptb2Q6YGZhdWx0aGFuZGxlcmAgLS0tIER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogZmF1bHRoYW5kbGVyCisgICA6c3lub3BzaXM6IER1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2suCisKK1RoaXMgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksIG9uIGEgZmF1bHQsCithZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlciBzaWduYWwuIENhbGwgOmZ1bmM6YGZhdWx0aGFuZGxlci5lbmFibGVgIHRvCitpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLAorOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQgOmNvbnN0OmBTSUdJTExgIHNpZ25hbHMuIFlvdSBjYW4gYWxzbworZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZSA6ZW52dmFyOmBQWVRIT05GQVVMVEhBTkRMRVJgIGVudmlyb25tZW50Cit2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAgYGBmYXVsdGhhbmRsZXJgYCBjb21tYW5kIGxpbmUgb3B0aW9uLgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjb21wYXRpYmxlIHdpdGggc3lzdGVtIGZhdWx0IGhhbmRsZXJzIGxpa2UgQXBwb3J0IG9yIHRoZQorV2luZG93cyBmYXVsdCBoYW5kbGVyLiBUaGUgbW9kdWxlIHVzZXMgYW4gYWx0ZXJuYXRpdmUgc3RhY2sgZm9yIHNpZ25hbCBoYW5kbGVycworaWYgdGhlIDpjOmZ1bmM6YHNpZ2FsdHN0YWNrYCBmdW5jdGlvbiBpcyBhdmFpbGFibGUuIFRoaXMgYWxsb3dzIGl0IHRvIGR1bXAgdGhlCit0cmFjZWJhY2sgZXZlbiBvbiBhIHN0YWNrIG92ZXJmbG93LgorCitUaGUgZmF1bHQgaGFuZGxlciBpcyBjYWxsZWQgb24gY2F0YXN0cm9waGljIGNhc2VzIGFuZCB0aGVyZWZvcmUgY2FuIG9ubHkgdXNlCitzaWduYWwtc2FmZSBmdW5jdGlvbnMgKGUuZy4gaXQgY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBvbiB0aGUgaGVhcCkuIEJlY2F1c2Ugb2YKK3RoaXMgbGltaXRhdGlvbiB0cmFjZWJhY2sgZHVtcGluZyBpcyBtaW5pbWFsIGNvbXBhcmVkIHRvIG5vcm1hbCBQeXRob24KK3RyYWNlYmFja3M6CisKKyogT25seSBBU0NJSSBpcyBzdXBwb3J0ZWQuIFRoZSBgYGJhY2tzbGFzaHJlcGxhY2VgYCBlcnJvciBoYW5kbGVyIGlzIHVzZWQgb24KKyAgZW5jb2RpbmcuCisqIEVhY2ggc3RyaW5nIGlzIGxpbWl0ZWQgdG8gNTAwIGNoYXJhY3RlcnMuCisqIE9ubHkgdGhlIGZpbGVuYW1lLCB0aGUgZnVuY3Rpb24gbmFtZSBhbmQgdGhlIGxpbmUgbnVtYmVyIGFyZQorICBkaXNwbGF5ZWQuIChubyBzb3VyY2UgY29kZSkKKyogSXQgaXMgbGltaXRlZCB0byAxMDAgZnJhbWVzIGFuZCAxMDAgdGhyZWFkcy4KKworQnkgZGVmYXVsdCwgdGhlIFB5dGhvbiB0cmFjZWJhY2sgaXMgd3JpdHRlbiB0byA6ZGF0YTpgc3lzLnN0ZGVycmAuIFRvIHNlZQordHJhY2ViYWNrcywgYXBwbGljYXRpb25zIG11c3QgYmUgcnVuIGluIHRoZSB0ZXJtaW5hbC4gQSBsb2cgZmlsZSBjYW4KK2FsdGVybmF0aXZlbHkgYmUgcGFzc2VkIHRvIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYC4KKworVGhlIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDLCBzbyB0cmFjZWJhY2tzIGNhbiBiZSBkdW1wZWQgb24gYSBjcmFzaCBvciB3aGVuCitQeXRob24gaXMgZGVhZGxvY2tlZC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworRHVtcCB0aGUgdHJhY2ViYWNrCistLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBkdW1wX3RyYWNlYmFjayhmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMgaW50byAqZmlsZSouIElmICphbGxfdGhyZWFkcyogaXMKKyAgIGBgRmFsc2VgYCwgZHVtcCBvbmx5IHRoZSBjdXJyZW50IHRocmVhZC4KKworCitGYXVsdCBoYW5kbGVyIHN0YXRlCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZW5hYmxlKGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSkKKworICAgRW5hYmxlIHRoZSBmYXVsdCBoYW5kbGVyOiBpbnN0YWxsIGhhbmRsZXJzIGZvciB0aGUgOmNvbnN0OmBTSUdTRUdWYCwKKyAgIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgIGFuZCA6Y29uc3Q6YFNJR0lMTGAKKyAgIHNpZ25hbHMgdG8gZHVtcCB0aGUgUHl0aG9uIHRyYWNlYmFjay4gSWYgKmFsbF90aHJlYWRzKiBpcyBgYFRydWVgYCwKKyAgIHByb2R1Y2UgdHJhY2ViYWNrcyBmb3IgZXZlcnkgcnVubmluZyB0aHJlYWQuIE90aGVyd2lzZSwgZHVtcCBvbmx5IHRoZSBjdXJyZW50CisgICB0aHJlYWQuCisKKy4uIGZ1bmN0aW9uOjogZGlzYWJsZSgpCisKKyAgIERpc2FibGUgdGhlIGZhdWx0IGhhbmRsZXI6IHVuaW5zdGFsbCB0aGUgc2lnbmFsIGhhbmRsZXJzIGluc3RhbGxlZCBieQorICAgOmZ1bmM6YGVuYWJsZWAuCisKKy4uIGZ1bmN0aW9uOjogaXNfZW5hYmxlZCgpCisKKyAgIENoZWNrIGlmIHRoZSBmYXVsdCBoYW5kbGVyIGlzIGVuYWJsZWQuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrcyBhZnRlciBhIHRpbWVvdXQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PUZhbHNlLCBmaWxlPXN5cy5zdGRlcnIsIGV4aXQ9RmFsc2UpCisKKyAgIER1bXAgdGhlIHRyYWNlYmFja3Mgb2YgYWxsIHRocmVhZHMsIGFmdGVyIGEgdGltZW91dCBvZiAqdGltZW91dCogc2Vjb25kcywgb3IKKyAgIGV2ZXJ5ICp0aW1lb3V0KiBzZWNvbmRzIGlmICpyZXBlYXQqIGlzIGBgVHJ1ZWBgLiAgSWYgKmV4aXQqIGlzIGBgVHJ1ZWBgLCBjYWxsCisgICA6YzpmdW5jOmBfZXhpdGAgd2l0aCBzdGF0dXM9MSBhZnRlciBkdW1waW5nIHRoZSB0cmFjZWJhY2tzLiAgKE5vdGUKKyAgIDpjOmZ1bmM6YF9leGl0YCBleGl0cyB0aGUgcHJvY2VzcyBpbW1lZGlhdGVseSwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBkbyBhbnkKKyAgIGNsZWFudXAgbGlrZSBmbHVzaGluZyBmaWxlIGJ1ZmZlcnMuKSBJZiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIHR3aWNlLCB0aGUgbmV3CisgICBjYWxsIHJlcGxhY2VzIHByZXZpb3VzIHBhcmFtZXRlcnMgYW5kIHJlc2V0cyB0aGUgdGltZW91dC4gVGhlIHRpbWVyIGhhcyBhCisgICBzdWItc2Vjb25kIHJlc29sdXRpb24uCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgdXNpbmcgYSB3YXRjaGRvZyB0aHJlYWQgYW5kIHRoZXJlZm9yZSBpcyBub3QKKyAgIGF2YWlsYWJsZSBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCB0aHJlYWRzIGRpc2FibGVkLgorCisuLiBmdW5jdGlvbjo6IGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisKKyAgIENhbmNlbCB0aGUgbGFzdCBjYWxsIHRvIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAuCisKKworRHVtcCB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoc2lnbnVtLCBmaWxlPXN5cy5zdGRlcnIsIGFsbF90aHJlYWRzPVRydWUsIGNoYWluPUZhbHNlKQorCisgICBSZWdpc3RlciBhIHVzZXIgc2lnbmFsOiBpbnN0YWxsIGEgaGFuZGxlciBmb3IgdGhlICpzaWdudW0qIHNpZ25hbCB0byBkdW1wCisgICB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzLCBvciBvZiB0aGUgY3VycmVudCB0aHJlYWQgaWYgKmFsbF90aHJlYWRzKiBpcworICAgYGBGYWxzZWBgLCBpbnRvICpmaWxlKi4gQ2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciBpZiBjaGFpbiBpcyBgYFRydWVgYC4KKworICAgTm90IGF2YWlsYWJsZSBvbiBXaW5kb3dzLgorCisuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXIoc2lnbnVtKQorCisgICBVbnJlZ2lzdGVyIGEgdXNlciBzaWduYWw6IHVuaW5zdGFsbCB0aGUgaGFuZGxlciBvZiB0aGUgKnNpZ251bSogc2lnbmFsCisgICBpbnN0YWxsZWQgYnkgOmZ1bmM6YHJlZ2lzdGVyYC4gUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzaWduYWwgd2FzIHJlZ2lzdGVyZWQsCisgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICBOb3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCisKKworRmlsZSBkZXNjcmlwdG9yIGlzc3VlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworOmZ1bmM6YGVuYWJsZWAsIDpmdW5jOmBkdW1wX3RyYWNlYmFja19sYXRlcmAgYW5kIDpmdW5jOmByZWdpc3RlcmAga2VlcCB0aGUKK2ZpbGUgZGVzY3JpcHRvciBvZiB0aGVpciAqZmlsZSogYXJndW1lbnQuIElmIHRoZSBmaWxlIGlzIGNsb3NlZCBhbmQgaXRzIGZpbGUKK2Rlc2NyaXB0b3IgaXMgcmV1c2VkIGJ5IGEgbmV3IGZpbGUsIG9yIGlmIDpmdW5jOmBvcy5kdXAyYCBpcyB1c2VkIHRvIHJlcGxhY2UKK3RoZSBmaWxlIGRlc2NyaXB0b3IsIHRoZSB0cmFjZWJhY2sgd2lsbCBiZSB3cml0dGVuIGludG8gYSBkaWZmZXJlbnQgZmlsZS4gQ2FsbAordGhlc2UgZnVuY3Rpb25zIGFnYWluIGVhY2ggdGltZSB0aGF0IHRoZSBmaWxlIGlzIHJlcGxhY2VkLgorCisKK0V4YW1wbGUKKy0tLS0tLS0KKworRXhhbXBsZSBvZiBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBMaW51eDogOjoKKworICAgICQgcHl0aG9uIC1xIC1YIGZhdWx0aGFuZGxlcgorICAgID4+PiBpbXBvcnQgY3R5cGVzCisgICAgPj4+IGN0eXBlcy5zdHJpbmdfYXQoMCkKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IFNlZ21lbnRhdGlvbiBmYXVsdAorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiODk5ZjM5NzAwOgorICAgICAgRmlsZSAiL2hvbWUvcHl0aG9uL2NweXRob24vTGliL2N0eXBlcy9fX2luaXRfXy5weSIsIGxpbmUgNDg2IGluIHN0cmluZ19hdAorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSBpbiA8bW9kdWxlPgorICAgIFNlZ21lbnRhdGlvbiBmYXVsdAorCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mY250bC5yc3QgYi9Eb2MvbGlicmFyeS9mY250bC5yc3QKaW5kZXggNjE5MjQwMC4uOWE5Y2RjMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZmNudGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZjbnRsLnJzdApAQCAtMTksNiArMTksMTEgQEAKIGBgc3lzLnN0ZGluLmZpbGVubygpYGAsIG9yIGEgOmNsYXNzOmBpby5JT0Jhc2VgIG9iamVjdCwgc3VjaCBhcyBgYHN5cy5zdGRpbmBgCiBpdHNlbGYsIHdoaWNoIHByb3ZpZGVzIGEgOm1ldGg6YGZpbGVub2AgdGhhdCByZXR1cm5zIGEgZ2VudWluZSBmaWxlIGRlc2NyaXB0b3IuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBJT0Vycm9yYCB3aGVyZSB0aGV5IG5vdworICAgcmFpc2UgYSA6ZXhjOmBPU0Vycm9yYC4KKworCiBUaGUgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIApAQCAtNDAsNyArNDUsNyBAQAogICAgbGFyZ2VyIHRoYW4gMTAyNCBieXRlcywgdGhpcyBpcyBtb3N0IGxpa2VseSB0byByZXN1bHQgaW4gYSBzZWdtZW50YXRpb24KICAgIHZpb2xhdGlvbiBvciBhIG1vcmUgc3VidGxlIGRhdGEgY29ycnVwdGlvbi4KIAotICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkLgorICAgSWYgdGhlIDpjOmZ1bmM6YGZjbnRsYCBmYWlscywgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCiAKIC4uIGZ1bmN0aW9uOjogaW9jdGwoZmQsIG9wWywgYXJnWywgbXV0YXRlX2ZsYWddXSkKQEAgLTEwNyw3ICsxMTIsNyBAQAogICAgV2hlbiAqb3BlcmF0aW9uKiBpcyA6Y29uc3Q6YExPQ0tfU0hgIG9yIDpjb25zdDpgTE9DS19FWGAsIGl0IGNhbiBhbHNvIGJlCiAgICBiaXR3aXNlIE9SZWQgd2l0aCA6Y29uc3Q6YExPQ0tfTkJgIHRvIGF2b2lkIGJsb2NraW5nIG9uIGxvY2sgYWNxdWlzaXRpb24uCiAgICBJZiA6Y29uc3Q6YExPQ0tfTkJgIGlzIHVzZWQgYW5kIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZCwgYW4KLSAgIDpleGM6YElPRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGFuZCB0aGUgZXhjZXB0aW9uIHdpbGwgaGF2ZSBhbiAqZXJybm8qCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGV4Y2VwdGlvbiB3aWxsIGhhdmUgYW4gKmVycm5vKgogICAgYXR0cmlidXRlIHNldCB0byA6Y29uc3Q6YEVBQ0NFU2Agb3IgOmNvbnN0OmBFQUdBSU5gIChkZXBlbmRpbmcgb24gdGhlCiAgICBvcGVyYXRpbmcgc3lzdGVtOyBmb3IgcG9ydGFiaWxpdHksIGNoZWNrIGZvciBib3RoIHZhbHVlcykuICBPbiBhdCBsZWFzdCBzb21lCiAgICBzeXN0ZW1zLCA6Y29uc3Q6YExPQ0tfRVhgIGNhbiBvbmx5IGJlIHVzZWQgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciByZWZlcnMgdG8gYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZmlsZWNtcC5yc3QgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAppbmRleCBkZTIwZmIxLi5hZGQ2OGEzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlY21wLnJzdAorKysgYi9Eb2MvbGlicmFyeS9maWxlY21wLnJzdApAQCAtMjEsMTEgKzIxLDggQEAKICAgIENvbXBhcmUgdGhlIGZpbGVzIG5hbWVkICpmMSogYW5kICpmMiosIHJldHVybmluZyBgYFRydWVgYCBpZiB0aGV5IHNlZW0gZXF1YWwsCiAgICBgYEZhbHNlYGAgb3RoZXJ3aXNlLgogCi0gICBVbmxlc3MgKnNoYWxsb3cqIGlzIGdpdmVuIGFuZCBpcyBmYWxzZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgCi0gICBzaWduYXR1cmVzIGFyZSB0YWtlbiB0byBiZSBlcXVhbC4KLQotICAgRmlsZXMgdGhhdCB3ZXJlIGNvbXBhcmVkIHVzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBub3QgYmUgY29tcGFyZWQgYWdhaW4gdW5sZXNzCi0gICB0aGVpciA6ZnVuYzpgb3Muc3RhdGAgc2lnbmF0dXJlIGNoYW5nZXMuCisgICBJZiAqc2hhbGxvdyogaXMgdHJ1ZSwgZmlsZXMgd2l0aCBpZGVudGljYWwgOmZ1bmM6YG9zLnN0YXRgIHNpZ25hdHVyZXMgYXJlCisgICB0YWtlbiB0byBiZSBlcXVhbC4gIE90aGVyd2lzZSwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlcyBhcmUgY29tcGFyZWQuCiAKICAgIE5vdGUgdGhhdCBubyBleHRlcm5hbCBwcm9ncmFtcyBhcmUgY2FsbGVkIGZyb20gdGhpcyBmdW5jdGlvbiwgZ2l2aW5nIGl0CiAgICBwb3J0YWJpbGl0eSBhbmQgZWZmaWNpZW5jeS4KQEAgLTUxLDIzICs0OCwxMSBAQAogICAgb25lIG9mIHRoZSB0aHJlZSByZXR1cm5lZCBsaXN0cy4KIAogCi1FeGFtcGxlOjoKLQotICAgPj4+IGltcG9ydCBmaWxlY21wCi0gICA+Pj4gZmlsZWNtcC5jbXAoJ3VuZG9jLnJzdCcsICd1bmRvYy5yc3QnKQotICAgVHJ1ZQotICAgPj4+IGZpbGVjbXAuY21wKCd1bmRvYy5yc3QnLCAnaW5kZXgucnN0JykKLSAgIEZhbHNlCi0KLQogLi4gX2RpcmNtcC1vYmplY3RzOgogCiBUaGUgOmNsYXNzOmBkaXJjbXBgIGNsYXNzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTpjbGFzczpgZGlyY21wYCBpbnN0YW5jZXMgYXJlIGJ1aWx0IHVzaW5nIHRoaXMgY29uc3RydWN0b3I6Ci0KLQogLi4gY2xhc3M6OiBkaXJjbXAoYSwgYiwgaWdub3JlPU5vbmUsIGhpZGU9Tm9uZSkKIAogICAgQ29uc3RydWN0IGEgbmV3IGRpcmVjdG9yeSBjb21wYXJpc29uIG9iamVjdCwgdG8gY29tcGFyZSB0aGUgZGlyZWN0b3JpZXMgKmEqIGFuZApAQCAtODMsNyArNjgsNyBAQAogCiAgICAuLiBtZXRob2Q6OiByZXBvcnQoKQogCi0gICAgICBQcmludCAodG8gYGBzeXMuc3Rkb3V0YGApIGEgY29tcGFyaXNvbiBiZXR3ZWVuICphKiBhbmQgKmIqLgorICAgICAgUHJpbnQgKHRvIDpkYXRhOmBzeXMuc3Rkb3V0YCkgYSBjb21wYXJpc29uIGJldHdlZW4gKmEqIGFuZCAqYiouCiAKIAogICAgLi4gbWV0aG9kOjogcmVwb3J0X3BhcnRpYWxfY2xvc3VyZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0IGIvRG9jL2xpYnJhcnkvZmlsZWlucHV0LnJzdAppbmRleCBhYzQ0MzExLi5mOGVjNDM2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9maWxlaW5wdXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZpbGVpbnB1dC5yc3QKQEAgLTI4LDcgKzI4LDEwIEBACiBBbGwgZmlsZXMgYXJlIG9wZW5lZCBpbiB0ZXh0IG1vZGUgYnkgZGVmYXVsdCwgYnV0IHlvdSBjYW4gb3ZlcnJpZGUgdGhpcyBieQogc3BlY2lmeWluZyB0aGUgKm1vZGUqIHBhcmFtZXRlciBpbiB0aGUgY2FsbCB0byA6ZnVuYzpgLmlucHV0YCBvcgogOmNsYXNzOmBGaWxlSW5wdXRgLiAgSWYgYW4gSS9PIGVycm9yIG9jY3VycyBkdXJpbmcgb3BlbmluZyBvciByZWFkaW5nIGEgZmlsZSwKLTpleGM6YElPRXJyb3JgIGlzIHJhaXNlZC4KKzpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkOyBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIElmIGBgc3lzLnN0ZGluYGAgaXMgdXNlZCBtb3JlIHRoYW4gb25jZSwgdGhlIHNlY29uZCBhbmQgZnVydGhlciB1c2Ugd2lsbCByZXR1cm4KIG5vIGxpbmVzLCBleGNlcHQgcGVyaGFwcyBmb3IgaW50ZXJhY3RpdmUgdXNlLCBvciBpZiBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IHJlc2V0CkBAIC0xNjgsMTAgKzE3MSw2IEBACiBpdCBpcyBkZWxldGVkIHdoZW4gdGhlIG91dHB1dCBmaWxlIGlzIGNsb3NlZC4gIEluLXBsYWNlIGZpbHRlcmluZyBpcyBkaXNhYmxlZAogd2hlbiBzdGFuZGFyZCBpbnB1dCBpcyByZWFkLgogCi0uLiBub3RlOjoKLQotICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgd29yayBmb3IgTVMtRE9TIDgrMyBmaWxlc3lzdGVtcy4KLQogCiBUaGUgdHdvIGZvbGxvd2luZyBvcGVuaW5nIGhvb2tzIGFyZSBwcm92aWRlZCBieSB0aGlzIG1vZHVsZToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggYTY2OWIxYi4uMTQxOWFmNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC00MCw3ICs0MCw3IEBACiAKIFRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgogCi0uLiBjbGFzczo6IEZUUChob3N0PScnLCB1c2VyPScnLCBwYXNzd2Q9JycsIGFjY3Q9JydbLCB0aW1lb3V0XSkKKy4uIGNsYXNzOjogRlRQKGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgRlRQYCBjbGFzcy4gIFdoZW4gKmhvc3QqIGlzIGdpdmVuLCB0aGUKICAgIG1ldGhvZCBjYWxsIGBgY29ubmVjdChob3N0KWBgIGlzIG1hZGUuICBXaGVuICp1c2VyKiBpcyBnaXZlbiwgYWRkaXRpb25hbGx5CkBAIC00OCw3ICs0OCw4IEBACiAgICAqYWNjdCogZGVmYXVsdCB0byB0aGUgZW1wdHkgc3RyaW5nIHdoZW4gbm90IGdpdmVuKS4gIFRoZSBvcHRpb25hbCAqdGltZW91dCoKICAgIHBhcmFtZXRlciBzcGVjaWZpZXMgYSB0aW1lb3V0IGluIHNlY29uZHMgZm9yIGJsb2NraW5nIG9wZXJhdGlvbnMgbGlrZSB0aGUKICAgIGNvbm5lY3Rpb24gYXR0ZW1wdCAoaWYgaXMgbm90IHNwZWNpZmllZCwgdGhlIGdsb2JhbCBkZWZhdWx0IHRpbWVvdXQgc2V0dGluZwotICAgd2lsbCBiZSB1c2VkKS4KKyAgIHdpbGwgYmUgdXNlZCkuICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQKKyAgIHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgogCiAgICA6Y2xhc3M6YEZUUGAgY2xhc3Mgc3VwcG9ydHMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQuIEhlcmUgaXMgYSBzYW1wbGUKICAgIG9uIGhvdyB1c2luZyBpdDoKQEAgLTY4LDggKzY5LDExIEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCi0uLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBba2V5ZmlsZVssIGNlcnRmaWxlWywgY29udGV4dFssIHRpbWVvdXRdXV1dKQorCisuLiBjbGFzczo6IEZUUF9UTFMoaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSwgdGltZW91dD1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgRlRQYCBzdWJjbGFzcyB3aGljaCBhZGRzIFRMUyBzdXBwb3J0IHRvIEZUUCBhcyBkZXNjcmliZWQgaW4KICAgIDpyZmM6YDQyMTdgLgpAQCAtODAsMTAgKzg0LDE1IEBACiAgICBwcml2YXRlIGtleSBhbmQgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBuYW1lIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uCiAgICAqY29udGV4dCogcGFyYW1ldGVyIGlzIGEgOmNsYXNzOmBzc2wuU1NMQ29udGV4dGAgb2JqZWN0IHdoaWNoIGFsbG93cwogICAgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgY2VydGlmaWNhdGVzIGFuZCBwcml2YXRlIGtleXMgaW50byBhCi0gICBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpIHN0cnVjdHVyZS4KKyAgIHNpbmdsZSAocG90ZW50aWFsbHkgbG9uZy1saXZlZCkgc3RydWN0dXJlLiAqc291cmNlX2FkZHJlc3MqIGlzIGEgMi10dXBsZQorICAgYGAoaG9zdCwgcG9ydClgYCBmb3IgdGhlIHNvY2tldCB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUKKyAgIGNvbm5lY3RpbmcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAgICBIZXJlJ3MgYSBzYW1wbGUgc2Vzc2lvbiB1c2luZyB0aGUgOmNsYXNzOmBGVFBfVExTYCBjbGFzczoKIAogICAgPj4+IGZyb20gZnRwbGliIGltcG9ydCBGVFBfVExTCkBAIC0xMzUsOCArMTQ0LDcgQEAKICAgIFRoZSBzZXQgb2YgYWxsIGV4Y2VwdGlvbnMgKGFzIGEgdHVwbGUpIHRoYXQgbWV0aG9kcyBvZiA6Y2xhc3M6YEZUUGAKICAgIGluc3RhbmNlcyBtYXkgcmFpc2UgYXMgYSByZXN1bHQgb2YgcHJvYmxlbXMgd2l0aCB0aGUgRlRQIGNvbm5lY3Rpb24gKGFzCiAgICBvcHBvc2VkIHRvIHByb2dyYW1taW5nIGVycm9ycyBtYWRlIGJ5IHRoZSBjYWxsZXIpLiAgVGhpcyBzZXQgaW5jbHVkZXMgdGhlCi0gICBmb3VyIGV4Y2VwdGlvbnMgbGlzdGVkIGFib3ZlIGFzIHdlbGwgYXMgOmV4Yzpgc29ja2V0LmVycm9yYCBhbmQKLSAgIDpleGM6YElPRXJyb3JgLgorICAgZm91ciBleGNlcHRpb25zIGxpc3RlZCBhYm92ZSBhcyB3ZWxsIGFzIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIHNlZWFsc286OgpAQCAtMTc0LDcgKzE4Miw3IEBACiAgICBkZWJ1Z2dpbmcgb3V0cHV0LCBsb2dnaW5nIGVhY2ggbGluZSBzZW50IGFuZCByZWNlaXZlZCBvbiB0aGUgY29udHJvbCBjb25uZWN0aW9uLgogCiAKLS4uIG1ldGhvZDo6IEZUUC5jb25uZWN0KGhvc3Q9JycsIHBvcnQ9MFssIHRpbWVvdXRdKQorLi4gbWV0aG9kOjogRlRQLmNvbm5lY3QoaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIENvbm5lY3QgdG8gdGhlIGdpdmVuIGhvc3QgYW5kIHBvcnQuICBUaGUgZGVmYXVsdCBwb3J0IG51bWJlciBpcyBgYDIxYGAsIGFzCiAgICBzcGVjaWZpZWQgYnkgdGhlIEZUUCBwcm90b2NvbCBzcGVjaWZpY2F0aW9uLiAgSXQgaXMgcmFyZWx5IG5lZWRlZCB0byBzcGVjaWZ5IGEKQEAgLTE4MiwxMCArMTkwLDE0IEBACiAgICBpbnN0YW5jZTsgaXQgc2hvdWxkIG5vdCBiZSBjYWxsZWQgYXQgYWxsIGlmIGEgaG9zdCB3YXMgZ2l2ZW4gd2hlbiB0aGUgaW5zdGFuY2UKICAgIHdhcyBjcmVhdGVkLiAgQWxsIG90aGVyIG1ldGhvZHMgY2FuIG9ubHkgYmUgdXNlZCBhZnRlciBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KICAgIG1hZGUuCi0KICAgIFRoZSBvcHRpb25hbCAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQuIElmIG5vICp0aW1lb3V0KiBpcyBwYXNzZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0CiAgICBzZXR0aW5nIHdpbGwgYmUgdXNlZC4KKyAgICpzb3VyY2VfYWRkcmVzcyogaXMgYSAyLXR1cGxlIGBgKGhvc3QsIHBvcnQpYGAgZm9yIHRoZSBzb2NrZXQgdG8gYmluZCB0byBhcworICAgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNvdXJjZV9hZGRyZXNzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKIC4uIG1ldGhvZDo6IEZUUC5nZXR3ZWxjb21lKCkKQEAgLTI0MSwxMyArMjUzLDEyIEBACiAKICAgIFJldHJpZXZlIGEgZmlsZSBvciBkaXJlY3RvcnkgbGlzdGluZyBpbiBBU0NJSSB0cmFuc2ZlciBtb2RlLiAgKmNtZCogc2hvdWxkIGJlCiAgICBhbiBhcHByb3ByaWF0ZSBgYFJFVFJgYCBjb21tYW5kIChzZWUgOm1ldGg6YHJldHJiaW5hcnlgKSBvciBhIGNvbW1hbmQgc3VjaCBhcwotICAgYGBMSVNUYGAsIGBgTkxTVGBgIG9yIGBgTUxTRGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KKyAgIGBgTElTVGBgIG9yIGBgTkxTVGBgICh1c3VhbGx5IGp1c3QgdGhlIHN0cmluZyBgYCdMSVNUJ2BgKS4KICAgIGBgTElTVGBgIHJldHJpZXZlcyBhIGxpc3Qgb2YgZmlsZXMgYW5kIGluZm9ybWF0aW9uIGFib3V0IHRob3NlIGZpbGVzLgotICAgYGBOTFNUYGAgcmV0cmlldmVzIGEgbGlzdCBvZiBmaWxlIG5hbWVzLiAgT24gc29tZSBzZXJ2ZXJzLCBgYE1MU0RgYCByZXRyaWV2ZXMKLSAgIGEgbWFjaGluZSByZWFkYWJsZSBsaXN0IG9mIGZpbGVzIGFuZCBpbmZvcm1hdGlvbiBhYm91dCB0aG9zZSBmaWxlcy4gIFRoZQotICAgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50IGNvbnRhaW5pbmcKLSAgIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqIHByaW50cyB0aGUKLSAgIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCisgICBgYE5MU1RgYCByZXRyaWV2ZXMgYSBsaXN0IG9mIGZpbGUgbmFtZXMuCisgICBUaGUgKmNhbGxiYWNrKiBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSB3aXRoIGEgc3RyaW5nIGFyZ3VtZW50CisgICBjb250YWluaW5nIHRoZSBsaW5lIHdpdGggdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqCisgICBwcmludHMgdGhlIGxpbmUgdG8gYGBzeXMuc3Rkb3V0YGAuCiAKIAogLi4gbWV0aG9kOjogRlRQLnNldF9wYXN2KGJvb2xlYW4pCkBAIC0zMDcsNiArMzE4LDIwIEBACiAgICBpbiA6bWV0aDpgdHJhbnNmZXJjbWRgLgogCiAKKy4uIG1ldGhvZDo6IEZUUC5tbHNkKHBhdGg9IiIsIGZhY3RzPVtdKQorCisgICBMaXN0IGEgZGlyZWN0b3J5IGluIGEgc3RhbmRhcmRpemVkIGZvcm1hdCBieSB1c2luZyBNTFNEIGNvbW1hbmQKKyAgICg6cmZjOmAzNjU5YCkuICBJZiAqcGF0aCogaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYXNzdW1lZC4KKyAgICpmYWN0cyogaXMgYSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSB0eXBlIG9mIGluZm9ybWF0aW9uIGRlc2lyZWQKKyAgIChlLmcuIGBgWyJ0eXBlIiwgInNpemUiLCAicGVybSJdYGApLiAgUmV0dXJuIGEgZ2VuZXJhdG9yIG9iamVjdCB5aWVsZGluZyBhCisgICB0dXBsZSBvZiB0d28gZWxlbWVudHMgZm9yIGV2ZXJ5IGZpbGUgZm91bmQgaW4gcGF0aC4gIEZpcnN0IGVsZW1lbnQgaXMgdGhlCisgICBmaWxlIG5hbWUsIHRoZSBzZWNvbmQgb25lIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGZhY3RzIGFib3V0IHRoZSBmaWxlCisgICBuYW1lLiAgQ29udGVudCBvZiB0aGlzIGRpY3Rpb25hcnkgbWlnaHQgYmUgbGltaXRlZCBieSB0aGUgKmZhY3RzKiBhcmd1bWVudAorICAgYnV0IHNlcnZlciBpcyBub3QgZ3VhcmFudGVlZCB0byByZXR1cm4gYWxsIHJlcXVlc3RlZCBmYWN0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogRlRQLm5sc3QoYXJndW1lbnRbLCAuLi5dKQogCiAgICBSZXR1cm4gYSBsaXN0IG9mIGZpbGUgbmFtZXMgYXMgcmV0dXJuZWQgYnkgdGhlIGBgTkxTVGBgIGNvbW1hbmQuICBUaGUKQEAgLTMxNCw2ICszMzksOCBAQAogICAgZGlyZWN0b3J5KS4gIE11bHRpcGxlIGFyZ3VtZW50cyBjYW4gYmUgdXNlZCB0byBwYXNzIG5vbi1zdGFuZGFyZCBvcHRpb25zIHRvCiAgICB0aGUgYGBOTFNUYGAgY29tbWFuZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMyB1c2UgOm1ldGg6YG1sc2RgIGluc3RlYWQuCisKIAogLi4gbWV0aG9kOjogRlRQLmRpcihhcmd1bWVudFssIC4uLl0pCiAKQEAgLTMyNCw2ICszNTEsOCBAQAogICAgYXMgYSAqY2FsbGJhY2sqIGZ1bmN0aW9uIGFzIGZvciA6bWV0aDpgcmV0cmxpbmVzYDsgdGhlIGRlZmF1bHQgcHJpbnRzIHRvCiAgICBgYHN5cy5zdGRvdXRgYC4gIFRoaXMgbWV0aG9kIHJldHVybnMgYGBOb25lYGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMgdXNlIDptZXRoOmBtbHNkYCBpbnN0ZWFkLgorCiAKIC4uIG1ldGhvZDo6IEZUUC5yZW5hbWUoZnJvbW5hbWUsIHRvbmFtZSkKIApAQCAtMzk2LDYgKzQyNSwxNCBAQAogCiAgICBTZXQgdXAgc2VjdXJlIGNvbnRyb2wgY29ubmVjdGlvbiBieSB1c2luZyBUTFMgb3IgU1NMLCBkZXBlbmRpbmcgb24gd2hhdCBzcGVjaWZpZWQgaW4gOm1ldGg6YHNzbF92ZXJzaW9uYCBhdHRyaWJ1dGUuCiAKKy4uIG1ldGhvZDo6IEZUUF9UTFMuY2NjKCkKKworICAgUmV2ZXJ0IGNvbnRyb2wgY2hhbm5lbCBiYWNrIHRvIHBsYWludGV4dC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0YWtlCisgICBhZHZhbnRhZ2Ugb2YgZmlyZXdhbGxzIHRoYXQga25vdyBob3cgdG8gaGFuZGxlIE5BVCB3aXRoIG5vbi1zZWN1cmUgRlRQCisgICB3aXRob3V0IG9wZW5pbmcgZml4ZWQgcG9ydHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBtZXRob2Q6OiBGVFBfVExTLnByb3RfcCgpCiAKICAgIFNldCB1cCBzZWN1cmUgZGF0YSBjb25uZWN0aW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKaW5kZXggMzFkOGNmMS4uMGZiNDhmNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CkBAIC0xNyw5ICsxNyw5IEBACiA6ZnVuYzpgYmluYCAgICAgICAgICA6ZnVuYzpgZXZhbGAgICAgICAgOmZ1bmM6YGludGAgICAgICAgICA6ZnVuYzpgb3BlbmAgICAgICA6ZnVuYzpgc3RyYAogOmZ1bmM6YGJvb2xgICAgICAgICAgOmZ1bmM6YGV4ZWNgICAgICAgIDpmdW5jOmBpc2luc3RhbmNlYCAgOmZ1bmM6YG9yZGAgICAgICAgOmZ1bmM6YHN1bWAKIDpmdW5jOmBieXRlYXJyYXlgICAgIDpmdW5jOmBmaWx0ZXJgICAgICA6ZnVuYzpgaXNzdWJjbGFzc2AgIDpmdW5jOmBwb3dgICAgICAgIDpmdW5jOmBzdXBlcmAKLTpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIDpmdW5jOmB0dXBsZWAKKzpmdW5jOmBieXRlc2AgICAgICAgIDpmdW5jOmBmbG9hdGAgICAgICA6ZnVuYzpgaXRlcmAgICAgICAgIDpmdW5jOmBwcmludGAgICAgIHxmdW5jLXR1cGxlfF8KIDpmdW5jOmBjYWxsYWJsZWAgICAgIDpmdW5jOmBmb3JtYXRgICAgICA6ZnVuYzpgbGVuYCAgICAgICAgIDpmdW5jOmBwcm9wZXJ0eWAgIDpmdW5jOmB0eXBlYAotOmZ1bmM6YGNocmAgICAgICAgICAgfGZ1bmMtZnJvemVuc2V0fF8gIDpmdW5jOmBsaXN0YCAgICAgICAgOmZ1bmM6YHJhbmdlYCAgICAgOmZ1bmM6YHZhcnNgCis6ZnVuYzpgY2hyYCAgICAgICAgICB8ZnVuYy1mcm96ZW5zZXR8XyAgfGZ1bmMtbGlzdHxfICAgICAgICB8ZnVuYy1yYW5nZXxfICAgICA6ZnVuYzpgdmFyc2AKIDpmdW5jOmBjbGFzc21ldGhvZGAgIDpmdW5jOmBnZXRhdHRyYCAgICA6ZnVuYzpgbG9jYWxzYCAgICAgIDpmdW5jOmByZXByYCAgICAgIDpmdW5jOmB6aXBgCiA6ZnVuYzpgY29tcGlsZWAgICAgICA6ZnVuYzpgZ2xvYmFsc2AgICAgOmZ1bmM6YG1hcGAgICAgICAgICA6ZnVuYzpgcmV2ZXJzZWRgICA6ZnVuYzpgX19pbXBvcnRfX2AKIDpmdW5jOmBjb21wbGV4YCAgICAgIDpmdW5jOmBoYXNhdHRyYCAgICA6ZnVuYzpgbWF4YCAgICAgICAgIDpmdW5jOmByb3VuZGAKQEAgLTMzLDYgKzMzLDkgQEAKIC4uIHxmdW5jLWZyb3plbnNldHwgcmVwbGFjZTo6IGBgZnJvemVuc2V0KClgYAogLi4gfGZ1bmMtbWVtb3J5dmlld3wgcmVwbGFjZTo6IGBgbWVtb3J5dmlldygpYGAKIC4uIHxmdW5jLXNldHwgcmVwbGFjZTo6IGBgc2V0KClgYAorLi4gfGZ1bmMtbGlzdHwgcmVwbGFjZTo6IGBgbGlzdCgpYGAKKy4uIHxmdW5jLXR1cGxlfCByZXBsYWNlOjogYGB0dXBsZSgpYGAKKy4uIHxmdW5jLXJhbmdlfCByZXBsYWNlOjogYGByYW5nZSgpYGAKIAogCiAuLiBmdW5jdGlvbjo6IGFicyh4KQpAQCAtOTMsNiArOTYsNyBAQAogICAgLi4gaW5kZXg6OiBwYWlyOiBCb29sZWFuOyB0eXBlCiAKIAorLi4gX2Z1bmMtYnl0ZWFycmF5OgogLi4gZnVuY3Rpb246OiBieXRlYXJyYXkoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgYXJyYXkgb2YgYnl0ZXMuICBUaGUgOmNsYXNzOmBieXRlYXJyYXlgIHR5cGUgaXMgYSBtdXRhYmxlCkBAIC0xMTgsNyArMTIyLDEwIEBACiAKICAgIFdpdGhvdXQgYW4gYXJndW1lbnQsIGFuIGFycmF5IG9mIHNpemUgMCBpcyBjcmVhdGVkLgogCisgICBTZWUgYWxzbyA6cmVmOmBiaW5hcnlzZXFgIGFuZCA6cmVmOmB0eXBlYnl0ZWFycmF5YC4KIAorCisuLiBfZnVuYy1ieXRlczoKIC4uIGZ1bmN0aW9uOjogYnl0ZXMoW3NvdXJjZVssIGVuY29kaW5nWywgZXJyb3JzXV1dKQogCiAgICBSZXR1cm4gYSBuZXcgImJ5dGVzIiBvYmplY3QsIHdoaWNoIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyBpbgpAQCAtMTMwLDYgKzEzNyw4IEBACiAKICAgIEJ5dGVzIG9iamVjdHMgY2FuIGFsc28gYmUgY3JlYXRlZCB3aXRoIGxpdGVyYWxzLCBzZWUgOnJlZjpgc3RyaW5nc2AuCiAKKyAgIFNlZSBhbHNvIDpyZWY6YGJpbmFyeXNlcWAsIDpyZWY6YHR5cGVieXRlc2AsIGFuZCA6cmVmOmBieXRlcy1tZXRob2RzYC4KKwogCiAuLiBmdW5jdGlvbjo6IGNhbGxhYmxlKG9iamVjdCkKIApAQCAtMTUyLDEwICsxNjEsNiBAQAogICAgMSwxMTQsMTExICgweDEwRkZGRiBpbiBiYXNlIDE2KS4gIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmICppKiBpcwogICAgb3V0c2lkZSB0aGF0IHJhbmdlLgogCi0gICBOb3RlIHRoYXQgb24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCB0aGUgcmVzdWx0IGlzIGEgc3RyaW5nIG9mCi0gICBsZW5ndGggdHdvIGZvciAqaSogZ3JlYXRlciB0aGFuIDY1LDUzNSAoMHhGRkZGIGluIGhleGFkZWNpbWFsKS4KLQotCiAKIC4uIGZ1bmN0aW9uOjogY2xhc3NtZXRob2QoZnVuY3Rpb24pCiAKQEAgLTMxMiwxNyArMzE3LDE4IEBACiAKICAgICAgID4+PiBpbXBvcnQgc3RydWN0CiAgICAgICA+Pj4gZGlyKCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBtb2R1bGUgbmFtZXNwYWNlCi0gICAgICBbJ19fYnVpbHRpbnNfXycsICdfX2RvY19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCi0gICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlCi0gICAgICBbJ1N0cnVjdCcsICdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgJ19fcGFja2FnZV9fJywgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKKyAgICAgIFsnX19idWlsdGluc19fJywgJ19fbmFtZV9fJywgJ3N0cnVjdCddCisgICAgICA+Pj4gZGlyKHN0cnVjdCkgICAjIHNob3cgdGhlIG5hbWVzIGluIHRoZSBzdHJ1Y3QgbW9kdWxlICMgZG9jdGVzdDogK1NLSVAKKyAgICAgIFsnU3RydWN0JywgJ19fYWxsX18nLCAnX19idWlsdGluc19fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCisgICAgICAgJ19faW5pdGlhbGl6aW5nX18nLCAnX19sb2FkZXJfXycsICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsCisgICAgICAgJ19jbGVhcmNhY2hlJywgJ2NhbGNzaXplJywgJ2Vycm9yJywgJ3BhY2snLCAncGFja19pbnRvJywKICAgICAgICAndW5wYWNrJywgJ3VucGFja19mcm9tJ10KICAgICAgID4+PiBjbGFzcyBTaGFwZShvYmplY3QpOgotICAgICAgICAgICAgICBkZWYgX19kaXJfXyhzZWxmKToKLSAgICAgICAgICAgICAgICAgIHJldHVybiBbJ2FyZWEnLCAncGVyaW1ldGVyJywgJ2xvY2F0aW9uJ10KKyAgICAgIC4uLiAgICAgZGVmIF9fZGlyX18oc2VsZik6CisgICAgICAuLi4gICAgICAgICByZXR1cm4gWydhcmVhJywgJ3BlcmltZXRlcicsICdsb2NhdGlvbiddCiAgICAgICA+Pj4gcyA9IFNoYXBlKCkKICAgICAgID4+PiBkaXIocykKLSAgICAgIFsnYXJlYScsICdwZXJpbWV0ZXInLCAnbG9jYXRpb24nXQorICAgICAgWydhcmVhJywgJ2xvY2F0aW9uJywgJ3BlcmltZXRlciddCiAKICAgIC4uIG5vdGU6OgogCkBAIC02MjEsOSArNjI3LDkgQEAKICAgIHRvIGEgc3RyaW5nIChzdHJpcHBpbmcgYSB0cmFpbGluZyBuZXdsaW5lKSwgYW5kIHJldHVybnMgdGhhdC4gIFdoZW4gRU9GIGlzCiAgICByZWFkLCA6ZXhjOmBFT0ZFcnJvcmAgaXMgcmFpc2VkLiAgRXhhbXBsZTo6CiAKLSAgICAgID4+PiBzID0gaW5wdXQoJy0tPiAnKQorICAgICAgPj4+IHMgPSBpbnB1dCgnLS0+ICcpICAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAgICAtLT4gTW9udHkgUHl0aG9uJ3MgRmx5aW5nIENpcmN1cwotICAgICAgPj4+IHMKKyAgICAgID4+PiBzICAjIGRvY3Rlc3Q6ICtTS0lQCiAgICAgICAiTW9udHkgUHl0aG9uJ3MgRmx5aW5nIENpcmN1cyIKIAogICAgSWYgdGhlIDptb2Q6YHJlYWRsaW5lYCBtb2R1bGUgd2FzIGxvYWRlZCwgdGhlbiA6ZnVuYzpgaW5wdXRgIHdpbGwgdXNlIGl0CkBAIC02ODksNiArNjk1LDggQEAKICAgICpzZW50aW5lbCosIDpleGM6YFN0b3BJdGVyYXRpb25gIHdpbGwgYmUgcmFpc2VkLCBvdGhlcndpc2UgdGhlIHZhbHVlIHdpbGwKICAgIGJlIHJldHVybmVkLgogCisgICBTZWUgYWxzbyA6cmVmOmB0eXBlaXRlcmAuCisKICAgIE9uZSB1c2VmdWwgYXBwbGljYXRpb24gb2YgdGhlIHNlY29uZCBmb3JtIG9mIDpmdW5jOmBpdGVyYCBpcyB0byByZWFkIGxpbmVzIG9mCiAgICBhIGZpbGUgdW50aWwgYSBjZXJ0YWluIGxpbmUgaXMgcmVhY2hlZC4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSByZWFkcyBhIGZpbGUKICAgIHVudGlsIHRoZSA6bWV0aDpgcmVhZGxpbmVgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZzo6CkBAIC03MDQsMTYgKzcxMiwxMiBAQAogICAgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3IgYSBtYXBwaW5nIChkaWN0aW9uYXJ5KS4KIAogCisuLiBfZnVuYy1saXN0OgogLi4gZnVuY3Rpb246OiBsaXN0KFtpdGVyYWJsZV0pCisgICA6bm9pbmRleDoKIAotICAgUmV0dXJuIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncwotICAgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0cwotICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMKLSAgIG1hZGUgYW5kIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4gIEZvciBpbnN0YW5jZSwgYGBsaXN0KCdhYmMnKWBgCi0gICByZXR1cm5zIGBgWydhJywgJ2InLCAnYyddYGAgYW5kIGBgbGlzdCggKDEsIDIsIDMpIClgYCByZXR1cm5zIGBgWzEsIDIsIDNdYGAuCi0gICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIG5ldyBlbXB0eSBsaXN0LCBgYFtdYGAuCi0KLSAgIDpjbGFzczpgbGlzdGAgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmBsaXN0YCBpcyBhY3R1YWxseSBhIG11dGFibGUKKyAgIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXEtbGlzdGAgYW5kIDpyZWY6YHR5cGVzc2VxYC4KIAogCiAuLiBmdW5jdGlvbjo6IGxvY2FscygpCkBAIC04MTIsMTAgKzgxNiwxMCBAQAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBmaWxlIG9iamVjdDsgb3BlbigpIGJ1aWx0LWluIGZ1bmN0aW9uCiAKLS4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBtb2RlPSdyJywgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpCisuLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz0tMSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgT3BlbiAqZmlsZSogYW5kIHJldHVybiBhIGNvcnJlc3BvbmRpbmcgOnRlcm06YGZpbGUgb2JqZWN0YC4gIElmIHRoZSBmaWxlCi0gICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBjYW5ub3QgYmUgb3BlbmVkLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQuCiAKICAgICpmaWxlKiBpcyBlaXRoZXIgYSBzdHJpbmcgb3IgYnl0ZXMgb2JqZWN0IGdpdmluZyB0aGUgcGF0aG5hbWUgKGFic29sdXRlIG9yCiAgICByZWxhdGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSkgb2YgdGhlIGZpbGUgdG8gYmUgb3BlbmVkIG9yCkBAIC04MjYsMTcgKzgzMCwyMCBAQAogICAgKm1vZGUqIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZSBpcwogICAgb3BlbmVkLiAgSXQgZGVmYXVsdHMgdG8gYGAncidgYCB3aGljaCBtZWFucyBvcGVuIGZvciByZWFkaW5nIGluIHRleHQgbW9kZS4KICAgIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlIGBgJ3cnYGAgZm9yIHdyaXRpbmcgKHRydW5jYXRpbmcgdGhlIGZpbGUgaWYgaXQKLSAgIGFscmVhZHkgZXhpc3RzKSwgYW5kIGBgJ2EnYGAgZm9yIGFwcGVuZGluZyAod2hpY2ggb24gKnNvbWUqIFVuaXggc3lzdGVtcywKLSAgIG1lYW5zIHRoYXQgKmFsbCogd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIHJlZ2FyZGxlc3Mgb2YgdGhlCi0gICBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiAgSW4gdGV4dCBtb2RlLCBpZiAqZW5jb2RpbmcqIGlzIG5vdCBzcGVjaWZpZWQgdGhlCi0gICBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudC4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UKLSAgIGJpbmFyeSBtb2RlIGFuZCBsZWF2ZSAqZW5jb2RpbmcqIHVuc3BlY2lmaWVkLikgIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOgorICAgYWxyZWFkeSBleGlzdHMpLCBgYCd4J2BgIGZvciBleGNsdXNpdmUgY3JlYXRpb24gYW5kIGBgJ2EnYGAgZm9yIGFwcGVuZGluZworICAgKHdoaWNoIG9uICpzb21lKiBVbml4IHN5c3RlbXMsIG1lYW5zIHRoYXQgKmFsbCogd3JpdGVzIGFwcGVuZCB0byB0aGUgZW5kIG9mCisgICB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiAgSW4gdGV4dCBtb2RlLCBpZgorICAgKmVuY29kaW5nKiBpcyBub3Qgc3BlY2lmaWVkIHRoZSBlbmNvZGluZyB1c2VkIGlzIHBsYXRmb3JtIGRlcGVuZGVudDoKKyAgIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKWBgIGlzIGNhbGxlZCB0byBnZXQgdGhlIGN1cnJlbnQgbG9jYWxlCisgICBlbmNvZGluZy4gKEZvciByZWFkaW5nIGFuZCB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlCisgICAqZW5jb2RpbmcqIHVuc3BlY2lmaWVkLikgIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOgogCiAgICA9PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBDaGFyYWN0ZXIgTWVhbmluZwogICAgLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgYGAncidgYCAgIG9wZW4gZm9yIHJlYWRpbmcgKGRlZmF1bHQpCiAgICBgYCd3J2BgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdAorICAgYGAneCdgYCAgIG9wZW4gZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiwgZmFpbGluZyBpZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cwogICAgYGAnYSdgYCAgIG9wZW4gZm9yIHdyaXRpbmcsIGFwcGVuZGluZyB0byB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIGl0IGV4aXN0cwogICAgYGAnYidgYCAgIGJpbmFyeSBtb2RlCiAgICBgYCd0J2BgICAgdGV4dCBtb2RlIChkZWZhdWx0KQpAQCAtOTIyLDYgKzkyOSwxNiBAQAogICAgY2xvc2VkLiAgSWYgYSBmaWxlbmFtZSBpcyBnaXZlbiAqY2xvc2VmZCogaGFzIG5vIGVmZmVjdCBhbmQgbXVzdCBiZSBgYFRydWVgYAogICAgKHRoZSBkZWZhdWx0KS4KIAorICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlIHVuZGVybHlpbmcKKyAgIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoCisgICAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgKHBhc3NpbmcKKyAgIDptb2Q6YG9zLm9wZW5gIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eSBzaW1pbGFyIHRvIHBhc3NpbmcKKyAgIGBgTm9uZWBgKS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqb3BlbmVyKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorICAgICAgVGhlIGBgJ3gnYGAgbW9kZSB3YXMgYWRkZWQuCisKICAgIFRoZSB0eXBlIG9mIDp0ZXJtOmBmaWxlIG9iamVjdGAgcmV0dXJuZWQgYnkgdGhlIDpmdW5jOmBvcGVuYCBmdW5jdGlvbgogICAgZGVwZW5kcyBvbiB0aGUgbW9kZS4gIFdoZW4gOmZ1bmM6YG9wZW5gIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0CiAgICBtb2RlIChgYCd3J2BgLCBgYCdyJ2BgLCBgYCd3dCdgYCwgYGAncnQnYGAsIGV0Yy4pLCBpdCByZXR1cm5zIGEgc3ViY2xhc3Mgb2YKQEAgLTk0Nyw2ICs5NjQsMTEgQEAKICAgICh3aGVyZSA6ZnVuYzpgb3BlbmAgaXMgZGVjbGFyZWQpLCA6bW9kOmBvc2AsIDptb2Q6YG9zLnBhdGhgLCA6bW9kOmB0ZW1wZmlsZWAsCiAgICBhbmQgOm1vZDpgc2h1dGlsYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkLCBpdCBpcyBub3cgYW4gYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisgICAgICA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgdGhlIGZpbGUgb3BlbmVkIGluIGV4Y2x1c2l2ZQorICAgICAgY3JlYXRpb24gbW9kZSAoYGAneCdgYCkgYWxyZWFkeSBleGlzdHMuCisKIAogLi4gWFhYIHdvcmtzIGZvciBieXRlcyB0b28sIGJ1dCBzaG91bGQgaXQ/CiAuLiBmdW5jdGlvbjo6IG9yZChjKQpAQCAtOTU2LDkgKzk3OCw2IEBACiAgICBwb2ludCBvZiB0aGF0IGNoYXJhY3Rlci4gIEZvciBleGFtcGxlLCBgYG9yZCgnYScpYGAgcmV0dXJucyB0aGUgaW50ZWdlciBgYDk3YGAKICAgIGFuZCBgYG9yZCgnXHUyMDIwJylgYCByZXR1cm5zIGBgODIyNGBgLiAgVGhpcyBpcyB0aGUgaW52ZXJzZSBvZiA6ZnVuYzpgY2hyYC4KIAotICAgT24gd2lkZSBVbmljb2RlIGJ1aWxkcywgaWYgdGhlIGFyZ3VtZW50IGxlbmd0aCBpcyBub3Qgb25lLCBhCi0gICA6ZXhjOmBUeXBlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgT24gbmFycm93IFVuaWNvZGUgYnVpbGRzLCBzdHJpbmdzCi0gICBvZiBsZW5ndGggdHdvIGFyZSBhY2NlcHRlZCB3aGVuIHRoZXkgZm9ybSBhIFVURi0xNiBzdXJyb2dhdGUgcGFpci4KIAogLi4gZnVuY3Rpb246OiBwb3coeCwgeVssIHpdKQogCkBAIC05NzYsNyArOTk1LDcgQEAKICAgIG11c3QgYmUgb2YgaW50ZWdlciB0eXBlcywgYW5kICp5KiBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4KIAogCi0uLiBmdW5jdGlvbjo6IHByaW50KCpvYmplY3RzLCBzZXA9JyAnLCBlbmQ9J1xcbicsIGZpbGU9c3lzLnN0ZG91dCkKKy4uIGZ1bmN0aW9uOjogcHJpbnQoKm9iamVjdHMsIHNlcD0nICcsIGVuZD0nXFxuJywgZmlsZT1zeXMuc3Rkb3V0LCBmbHVzaD1GYWxzZSkKIAogICAgUHJpbnQgKm9iamVjdHMqIHRvIHRoZSBzdHJlYW0gKmZpbGUqLCBzZXBhcmF0ZWQgYnkgKnNlcCogYW5kIGZvbGxvd2VkIGJ5CiAgICAqZW5kKi4gICpzZXAqLCAqZW5kKiBhbmQgKmZpbGUqLCBpZiBwcmVzZW50LCBtdXN0IGJlIGdpdmVuIGFzIGtleXdvcmQKQEAgLTk4OSw5ICsxMDA4LDEyIEBACiAgICAqZW5kKi4KIAogICAgVGhlICpmaWxlKiBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdCB3aXRoIGEgYGB3cml0ZShzdHJpbmcpYGAgbWV0aG9kOyBpZiBpdAotICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuIE91dHB1dCBidWZmZXJpbmcKLSAgIGlzIGRldGVybWluZWQgYnkgKmZpbGUqLiBVc2UgYGBmaWxlLmZsdXNoKClgYCB0byBlbnN1cmUsIGZvciBpbnN0YW5jZSwKLSAgIGltbWVkaWF0ZSBhcHBlYXJhbmNlIG9uIGEgc2NyZWVuLgorICAgaXMgbm90IHByZXNlbnQgb3IgYGBOb25lYGAsIDpkYXRhOmBzeXMuc3Rkb3V0YCB3aWxsIGJlIHVzZWQuICBXaGV0aGVyIG91dHB1dAorICAgaXMgYnVmZmVyZWQgaXMgdXN1YWxseSBkZXRlcm1pbmVkIGJ5ICpmaWxlKiwgYnV0IGlmIHRoZSAgKmZsdXNoKiBrZXl3b3JkCisgICBhcmd1bWVudCBpcyB0cnVlLCB0aGUgc3RyZWFtIGlzIGZvcmNpYmx5IGZsdXNoZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmZsdXNoKiBrZXl3b3JkIGFyZ3VtZW50LgogCiAKIC4uIGZ1bmN0aW9uOjogcHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpCkBAIC0xMDYzLDYzICsxMDg1LDEzIEBACiAgICBgYGZkZWxgYCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMuCiAKIAotLi4gWFhYIGRvZXMgYWNjZXB0IG9iamVjdHMgd2l0aCBfX2luZGV4X18gdG9vCisuLiBfZnVuYy1yYW5nZToKIC4uIGZ1bmN0aW9uOjogcmFuZ2Uoc3RvcCkKICAgICAgICAgICAgICAgcmFuZ2Uoc3RhcnQsIHN0b3BbLCBzdGVwXSkKKyAgIDpub2luZGV4OgogCi0gICBUaGlzIGlzIGEgdmVyc2F0aWxlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBpdGVyYWJsZXMgeWllbGRpbmcgYXJpdGhtZXRpYwotICAgcHJvZ3Jlc3Npb25zLiAgSXQgaXMgbW9zdCBvZnRlbiB1c2VkIGluIDprZXl3b3JkOmBmb3JgIGxvb3BzLiAgVGhlIGFyZ3VtZW50cwotICAgbXVzdCBiZSBpbnRlZ2Vycy4gIElmIHRoZSAqc3RlcCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGAxYGAuCi0gICBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDBgYC4gIFRoZSBmdWxsIGZvcm0KLSAgIHJldHVybnMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgYGBbc3RhcnQsIHN0YXJ0ICsgc3RlcCwgc3RhcnQgKyAyICogc3RlcCwKLSAgIC4uLl1gYC4gIElmICpzdGVwKiBpcyBwb3NpdGl2ZSwgdGhlIGxhc3QgZWxlbWVudCBpcyB0aGUgbGFyZ2VzdCBgYHN0YXJ0ICsgaSAqCi0gICBzdGVwYGAgbGVzcyB0aGFuICpzdG9wKjsgaWYgKnN0ZXAqIGlzIG5lZ2F0aXZlLCB0aGUgbGFzdCBlbGVtZW50IGlzIHRoZQotICAgc21hbGxlc3QgYGBzdGFydCArIGkgKiBzdGVwYGAgZ3JlYXRlciB0aGFuICpzdG9wKi4gICpzdGVwKiBtdXN0IG5vdCBiZSB6ZXJvCi0gICAob3IgZWxzZSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQpLiAgRXhhbXBsZToKLQotICAgICAgPj4+IGxpc3QocmFuZ2UoMTApKQotICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAxMSkpCi0gICAgICBbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpCi0gICAgICBbMCwgNSwgMTAsIDE1LCAyMCwgMjVdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAxMCwgMykpCi0gICAgICBbMCwgMywgNiwgOV0KLSAgICAgID4+PiBsaXN0KHJhbmdlKDAsIC0xMCwgLTEpKQotICAgICAgWzAsIC0xLCAtMiwgLTMsIC00LCAtNSwgLTYsIC03LCAtOCwgLTldCi0gICAgICA+Pj4gbGlzdChyYW5nZSgwKSkKLSAgICAgIFtdCi0gICAgICA+Pj4gbGlzdChyYW5nZSgxLCAwKSkKLSAgICAgIFtdCi0KLSAgIFJhbmdlIG9iamVjdHMgaW1wbGVtZW50IHRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNlcXVlbmNlYCBBQkMsIGFuZCBwcm92aWRlCi0gICBmZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmQKLSAgIHN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSA6cmVmOmB0eXBlc3NlcWApOgotCi0gICAgICA+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IHIKLSAgICAgIHJhbmdlKDAsIDIwLCAyKQotICAgICAgPj4+IDExIGluIHIKLSAgICAgIEZhbHNlCi0gICAgICA+Pj4gMTAgaW4gcgotICAgICAgVHJ1ZQotICAgICAgPj4+IHIuaW5kZXgoMTApCi0gICAgICA1Ci0gICAgICA+Pj4gcls1XQotICAgICAgMTAKLSAgICAgID4+PiByWzo1XQotICAgICAgcmFuZ2UoMCwgMTAsIDIpCi0gICAgICA+Pj4gclstMV0KLSAgICAgIDE4Ci0KLSAgIFJhbmdlcyBjb250YWluaW5nIGFic29sdXRlIHZhbHVlcyBsYXJnZXIgdGhhbiA6ZGF0YTpgc3lzLm1heHNpemVgIGFyZSBwZXJtaXR0ZWQKLSAgIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIDpmdW5jOmBsZW5gKSB3aWxsIHJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgSW1wbGVtZW50IHRoZSBTZXF1ZW5jZSBBQkMuCi0gICAgICBTdXBwb3J0IHNsaWNpbmcgYW5kIG5lZ2F0aXZlIGluZGljZXMuCi0gICAgICBUZXN0IGludGVnZXJzIGZvciBtZW1iZXJzaGlwIGluIGNvbnN0YW50IHRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcKLSAgICAgIHRocm91Z2ggYWxsIGl0ZW1zLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmByYW5nZWAgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxLXJhbmdlYCBhbmQgOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogcmVwcihvYmplY3QpCkBAIC0xMjQwLDEwICsxMjEyLDEyIEBACiAgICBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBpbiA6cmVmOmB0eXBlc2AuCiAKIAorLi4gX2Z1bmMtc3RyOgogLi4gZnVuY3Rpb246OiBzdHIob2JqZWN0PScnKQogICAgICAgICAgICAgICBzdHIob2JqZWN0WywgZW5jb2RpbmdbLCBlcnJvcnNdXSkKIAotICAgUmV0dXJuIGEgc3RyaW5nIHZlcnNpb24gb2YgYW4gb2JqZWN0LCB1c2luZyBvbmUgb2YgdGhlIGZvbGxvd2luZyBtb2RlczoKKyAgIFJldHVybiBhIDpyZWY6YHN0cmluZyA8dGV4dHNlcT5gIHZlcnNpb24gb2YgYW4gb2JqZWN0LCB1c2luZyBvbmUgb2YgdGhlCisgICBmb2xsb3dpbmcgbW9kZXM6CiAKICAgIElmICplbmNvZGluZyogYW5kL29yICplcnJvcnMqIGFyZSBnaXZlbiwgOmZ1bmM6YHN0cmAgd2lsbCBkZWNvZGUgdGhlCiAgICAqb2JqZWN0KiB3aGljaCBjYW4gZWl0aGVyIGJlIGEgYnl0ZSBzdHJpbmcgb3IgYSBjaGFyYWN0ZXIgYnVmZmVyIHVzaW5nCkBAIC0xMjY2LDExICsxMjQwLDkgQEAKICAgIE9iamVjdHMgY2FuIHNwZWNpZnkgd2hhdCBgYHN0cihvYmplY3QpYGAgcmV0dXJucyBieSBkZWZpbmluZyBhIDptZXRoOmBfX3N0cl9fYAogICAgc3BlY2lhbCBtZXRob2QuCiAKLSAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHN0cmluZ3Mgc2VlIDpyZWY6YHR5cGVzc2VxYCB3aGljaCBkZXNjcmliZXMgc2VxdWVuY2UKLSAgIGZ1bmN0aW9uYWxpdHkgKHN0cmluZ3MgYXJlIHNlcXVlbmNlcyksIGFuZCBhbHNvIHRoZSBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcwotICAgZGVzY3JpYmVkIGluIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbi4gVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzLAotICAgc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2Agc2VjdGlvbi4gSW4gYWRkaXRpb24gc2VlIHRoZQotICAgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCisgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdHJpbmdzIGFuZCBzdHJpbmcgbWV0aG9kcywgc2VlIHRoZSA6cmVmOmB0ZXh0c2VxYAorICAgc2VjdGlvbi4gIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBzdHJpbmctZm9ybWF0dGluZ2AKKyAgIHNlY3Rpb24uICBJbiBhZGRpdGlvbiwgc2VlIHRoZSA6cmVmOmBzdHJpbmdzZXJ2aWNlc2Agc2VjdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IHN1bShpdGVyYWJsZVssIHN0YXJ0XSkKQEAgLTEzMzAsMjYgKzEzMDIsMjQgQEAKICAgIEFjY29yZGluZ2x5LCA6ZnVuYzpgc3VwZXJgIGlzIHVuZGVmaW5lZCBmb3IgaW1wbGljaXQgbG9va3VwcyB1c2luZyBzdGF0ZW1lbnRzIG9yCiAgICBvcGVyYXRvcnMgc3VjaCBhcyBgYHN1cGVyKClbbmFtZV1gYC4KIAotICAgQWxzbyBub3RlIHRoYXQgOmZ1bmM6YHN1cGVyYCBpcyBub3QgbGltaXRlZCB0byB1c2UgaW5zaWRlIG1ldGhvZHMuICBUaGUgdHdvCi0gICBhcmd1bWVudCBmb3JtIHNwZWNpZmllcyB0aGUgYXJndW1lbnRzIGV4YWN0bHkgYW5kIG1ha2VzIHRoZSBhcHByb3ByaWF0ZQotICAgcmVmZXJlbmNlcy4gIFRoZSB6ZXJvIGFyZ3VtZW50IGZvcm0gYXV0b21hdGljYWxseSBzZWFyY2hlcyB0aGUgc3RhY2sgZnJhbWUKLSAgIGZvciB0aGUgY2xhc3MgKGBgX19jbGFzc19fYGApIGFuZCB0aGUgZmlyc3QgYXJndW1lbnQuCisgICBBbHNvIG5vdGUgdGhhdCwgYXNpZGUgZnJvbSB0aGUgemVybyBhcmd1bWVudCBmb3JtLCA6ZnVuYzpgc3VwZXJgIGlzIG5vdAorICAgbGltaXRlZCB0byB1c2UgaW5zaWRlIG1ldGhvZHMuICBUaGUgdHdvIGFyZ3VtZW50IGZvcm0gc3BlY2lmaWVzIHRoZQorICAgYXJndW1lbnRzIGV4YWN0bHkgYW5kIG1ha2VzIHRoZSBhcHByb3ByaWF0ZSByZWZlcmVuY2VzLiAgVGhlIHplcm8KKyAgIGFyZ3VtZW50IGZvcm0gb25seSB3b3JrcyBpbnNpZGUgYSBjbGFzcyBkZWZpbml0aW9uLCBhcyB0aGUgY29tcGlsZXIgZmlsbHMKKyAgIGluIHRoZSBuZWNlc3NhcnkgZGV0YWlscyB0byBjb3JyZWN0bHkgcmV0cmlldmUgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQsCisgICBhcyB3ZWxsIGFzIGFjY2Vzc2luZyB0aGUgY3VycmVudCBpbnN0YW5jZSBmb3Igb3JkaW5hcnkgbWV0aG9kcy4KIAogICAgRm9yIHByYWN0aWNhbCBzdWdnZXN0aW9ucyBvbiBob3cgdG8gZGVzaWduIGNvb3BlcmF0aXZlIGNsYXNzZXMgdXNpbmcKICAgIDpmdW5jOmBzdXBlcmAsIHNlZSBgZ3VpZGUgdG8gdXNpbmcgc3VwZXIoKQogICAgPGh0dHA6Ly9yaGV0dGluZ2VyLndvcmRwcmVzcy5jb20vMjAxMS8wNS8yNi9zdXBlci1jb25zaWRlcmVkLXN1cGVyLz5gXy4KIAogCisuLiBfZnVuYy10dXBsZToKIC4uIGZ1bmN0aW9uOjogdHVwbGUoW2l0ZXJhYmxlXSkKKyAgIDpub2luZGV4OgogCi0gICBSZXR1cm4gYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncwotICAgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4KLSAgIGl0ZXJhdG9yIG9iamVjdC4gSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4KLSAgIEZvciBpbnN0YW5jZSwgYGB0dXBsZSgnYWJjJylgYCByZXR1cm5zIGBgKCdhJywgJ2InLCAnYycpYGAgYW5kIGBgdHVwbGUoWzEsIDIsCi0gICAzXSlgYCByZXR1cm5zIGBgKDEsIDIsIDMpYGAuICBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIG5ldyBlbXB0eQotICAgdHVwbGUsIGBgKClgYC4KLQotICAgOmNsYXNzOmB0dXBsZWAgaXMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvY3VtZW50ZWQgaW4gOnJlZjpgdHlwZXNzZXFgLgorICAgUmF0aGVyIHRoYW4gYmVpbmcgYSBmdW5jdGlvbiwgOmNsYXNzOmB0dXBsZWAgaXMgYWN0dWFsbHkgYW4gaW1tdXRhYmxlCisgICBzZXF1ZW5jZSB0eXBlLCBhcyBkb2N1bWVudGVkIGluIDpyZWY6YHR5cGVzc2VxLXR1cGxlYCBhbmQgOnJlZjpgdHlwZXNzZXFgLgogCiAKIC4uIGZ1bmN0aW9uOjogdHlwZShvYmplY3QpCkBAIC0xMzc4LDYgKzEzNDgsOCBAQAogICAgICAgLi4uCiAgICAgICA+Pj4gWCA9IHR5cGUoJ1gnLCAob2JqZWN0LCksIGRpY3QoYT0xKSkKIAorICAgU2VlIGFsc28gOnJlZjpgYmx0aW4tdHlwZS1vYmplY3RzYC4KKwogCiAuLiBmdW5jdGlvbjo6IHZhcnMoW29iamVjdF0pCiAKQEAgLTE0MzQsNyArMTQwNiw3IEBACiAgICAgICBUcnVlCiAKIAotLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9W10sIGxldmVsPS0xKQorLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKQogCiAgICAuLiBpbmRleDo6CiAgICAgICBzdGF0ZW1lbnQ6IGltcG9ydApAQCAtMTQ0OSw4ICsxNDIxLDkgQEAKICAgIHJlcGxhY2VkIChieSBpbXBvcnRpbmcgdGhlIDptb2Q6YGJ1aWx0aW5zYCBtb2R1bGUgYW5kIGFzc2lnbmluZyB0bwogICAgYGBidWlsdGlucy5fX2ltcG9ydF9fYGApIGluIG9yZGVyIHRvIGNoYW5nZSBzZW1hbnRpY3Mgb2YgdGhlCiAgICA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQsIGJ1dCBub3dhZGF5cyBpdCBpcyB1c3VhbGx5IHNpbXBsZXIgdG8gdXNlIGltcG9ydAotICAgaG9va3MgKHNlZSA6cGVwOmAzMDJgKS4gIERpcmVjdCB1c2Ugb2YgOmZ1bmM6YF9faW1wb3J0X19gIGlzIHJhcmUsIGV4Y2VwdCBpbgotICAgY2FzZXMgd2hlcmUgeW91IHdhbnQgdG8gaW1wb3J0IGEgbW9kdWxlIHdob3NlIG5hbWUgaXMgb25seSBrbm93biBhdCBydW50aW1lLgorICAgaG9va3MgKHNlZSA6cGVwOmAzMDJgKSB0byBhdHRhaW4gdGhlIHNhbWUgZ29hbHMuICBEaXJlY3QgdXNlIG9mCisgICA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgZW50aXJlbHkgZGlzY291cmFnZWQgaW4gZmF2b3Igb2YKKyAgIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAuCiAKICAgIFRoZSBmdW5jdGlvbiBpbXBvcnRzIHRoZSBtb2R1bGUgKm5hbWUqLCBwb3RlbnRpYWxseSB1c2luZyB0aGUgZ2l2ZW4gKmdsb2JhbHMqCiAgICBhbmQgKmxvY2FscyogdG8gZGV0ZXJtaW5lIGhvdyB0byBpbnRlcnByZXQgdGhlIG5hbWUgaW4gYSBwYWNrYWdlIGNvbnRleHQuCkBAIC0xNDU5LDEzICsxNDMyLDExIEBACiAgICBub3QgdXNlIGl0cyAqbG9jYWxzKiBhcmd1bWVudCBhdCBhbGwsIGFuZCB1c2VzIGl0cyAqZ2xvYmFscyogb25seSB0bwogICAgZGV0ZXJtaW5lIHRoZSBwYWNrYWdlIGNvbnRleHQgb2YgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudC4KIAotICAgKmxldmVsKiBzcGVjaWZpZXMgd2hldGhlciB0byB1c2UgYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gYGAwYGAKLSAgIG1lYW5zIG9ubHkgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzLiBQb3NpdGl2ZSB2YWx1ZXMgZm9yICpsZXZlbCogaW5kaWNhdGUgdGhlCi0gICBudW1iZXIgb2YgcGFyZW50IGRpcmVjdG9yaWVzIHRvIHNlYXJjaCByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZQotICAgbW9kdWxlIGNhbGxpbmcgOmZ1bmM6YF9faW1wb3J0X19gLiAgTmVnYXRpdmUgdmFsdWVzIGF0dGVtcHQgYm90aCBhbiBpbXBsaWNpdAotICAgcmVsYXRpdmUgaW1wb3J0IGFuZCBhbiBhYnNvbHV0ZSBpbXBvcnQgKHVzYWdlIG9mIG5lZ2F0aXZlIHZhbHVlcyBmb3IgKmxldmVsKgotICAgYXJlIHN0cm9uZ2x5IGRpc2NvdXJhZ2VkIGFzIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob24gZG8gbm90IHN1cHBvcnQgc3VjaAotICAgdmFsdWVzKS4gSW1wb3J0IHN0YXRlbWVudHMgb25seSB1c2UgdmFsdWVzIG9mIDAgb3IgZ3JlYXRlci4KKyAgICpsZXZlbCogc3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuIGBgMGBgICh0aGUKKyAgIGRlZmF1bHQpIG1lYW5zIG9ubHkgcGVyZm9ybSBhYnNvbHV0ZSBpbXBvcnRzLiAgUG9zaXRpdmUgdmFsdWVzIGZvcgorICAgKmxldmVsKiBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlCisgICBkaXJlY3Rvcnkgb2YgdGhlIG1vZHVsZSBjYWxsaW5nIDpmdW5jOmBfX2ltcG9ydF9fYCAoc2VlIDpwZXA6YDMyOGAgZm9yIHRoZQorICAgZGV0YWlscykuCiAKICAgIFdoZW4gdGhlICpuYW1lKiB2YXJpYWJsZSBpcyBvZiB0aGUgZm9ybSBgYHBhY2thZ2UubW9kdWxlYGAsIG5vcm1hbGx5LCB0aGUKICAgIHRvcC1sZXZlbCBwYWNrYWdlICh0aGUgbmFtZSB1cCB0aWxsIHRoZSBmaXJzdCBkb3QpIGlzIHJldHVybmVkLCAqbm90KiB0aGUKQEAgLTE0OTgsNiArMTQ2OSwxMCBAQAogICAgSWYgeW91IHNpbXBseSB3YW50IHRvIGltcG9ydCBhIG1vZHVsZSAocG90ZW50aWFsbHkgd2l0aGluIGEgcGFja2FnZSkgYnkgbmFtZSwKICAgIHVzZSA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgTmVnYXRpdmUgdmFsdWVzIGZvciAqbGV2ZWwqIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkICh3aGljaCBhbHNvIGNoYW5nZXMKKyAgICAgIHRoZSBkZWZhdWx0IHZhbHVlIHRvIDApLgorCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rvb2xzLnJzdAppbmRleCAwNDc0M2QzLi5mNWM2NjA4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0b29scy5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGRlY29yYXRvcjo6IGxydV9jYWNoZShtYXhzaXplPTEwMCkKKy4uIGRlY29yYXRvcjo6IGxydV9jYWNoZShtYXhzaXplPTEyOCwgdHlwZWQ9RmFsc2UpCiAKICAgIERlY29yYXRvciB0byB3cmFwIGEgZnVuY3Rpb24gd2l0aCBhIG1lbW9pemluZyBjYWxsYWJsZSB0aGF0IHNhdmVzIHVwIHRvIHRoZQogICAgKm1heHNpemUqIG1vc3QgcmVjZW50IGNhbGxzLiAgSXQgY2FuIHNhdmUgdGltZSB3aGVuIGFuIGV4cGVuc2l2ZSBvciBJL08gYm91bmQKQEAgLTQ5LDggKzQ5LDEzIEBACiAgICBTaW5jZSBhIGRpY3Rpb25hcnkgaXMgdXNlZCB0byBjYWNoZSByZXN1bHRzLCB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZAogICAgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbiBtdXN0IGJlIGhhc2hhYmxlLgogCi0gICBJZiAqbWF4c2l6ZSogaXMgc2V0IHRvIE5vbmUsIHRoZSBMUlUgZmVhdHVyZSBpcyBkaXNhYmxlZCBhbmQgdGhlIGNhY2hlCi0gICBjYW4gZ3JvdyB3aXRob3V0IGJvdW5kLgorICAgSWYgKm1heHNpemUqIGlzIHNldCB0byBOb25lLCB0aGUgTFJVIGZlYXR1cmUgaXMgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZSBjYW4KKyAgIGdyb3cgd2l0aG91dCBib3VuZC4gIFRoZSBMUlUgZmVhdHVyZSBwZXJmb3JtcyBiZXN0IHdoZW4gKm1heHNpemUqIGlzIGEKKyAgIHBvd2VyLW9mLXR3by4KKworICAgSWYgKnR5cGVkKiBpcyBzZXQgdG8gVHJ1ZSwgZnVuY3Rpb24gYXJndW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcyB3aWxsIGJlCisgICBjYWNoZWQgc2VwYXJhdGVseS4gIEZvciBleGFtcGxlLCBgYGYoMylgYCBhbmQgYGBmKDMuMClgYCB3aWxsIGJlIHRyZWF0ZWQKKyAgIGFzIGRpc3RpbmN0IGNhbGxzIHdpdGggZGlzdGluY3QgcmVzdWx0cy4KIAogICAgVG8gaGVscCBtZWFzdXJlIHRoZSBlZmZlY3RpdmVuZXNzIG9mIHRoZSBjYWNoZSBhbmQgdHVuZSB0aGUgKm1heHNpemUqCiAgICBwYXJhbWV0ZXIsIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIGlzIGluc3RydW1lbnRlZCB3aXRoIGEgOmZ1bmM6YGNhY2hlX2luZm9gCkBAIC02Nyw4ICs3Miw4IEBACiAKICAgIEFuIGBMUlUgKGxlYXN0IHJlY2VudGx5IHVzZWQpIGNhY2hlCiAgICA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DYWNoZV9hbGdvcml0aG1zI0xlYXN0X1JlY2VudGx5X1VzZWQ+YF8gd29ya3MKLSAgIGJlc3Qgd2hlbiBtb3JlIHJlY2VudCBjYWxscyBhcmUgdGhlIGJlc3QgcHJlZGljdG9ycyBvZiB1cGNvbWluZyBjYWxscyAoZm9yCi0gICBleGFtcGxlLCB0aGUgbW9zdCBwb3B1bGFyIGFydGljbGVzIG9uIGEgbmV3cyBzZXJ2ZXIgdGVuZCB0byBjaGFuZ2UgZGFpbHkpLgorICAgYmVzdCB3aGVuIHRoZSBtb3N0IHJlY2VudCBjYWxscyBhcmUgdGhlIGJlc3QgcHJlZGljdG9ycyBvZiB1cGNvbWluZyBjYWxscyAoZm9yCisgICBleGFtcGxlLCB0aGUgbW9zdCBwb3B1bGFyIGFydGljbGVzIG9uIGEgbmV3cyBzZXJ2ZXIgdGVuZCB0byBjaGFuZ2UgZWFjaCBkYXkpLgogICAgVGhlIGNhY2hlJ3Mgc2l6ZSBsaW1pdCBhc3N1cmVzIHRoYXQgdGhlIGNhY2hlIGRvZXMgbm90IGdyb3cgd2l0aG91dCBib3VuZCBvbgogICAgbG9uZy1ydW5uaW5nIHByb2Nlc3NlcyBzdWNoIGFzIHdlYiBzZXJ2ZXJzLgogCkBAIC0xMTEsNiArMTE2LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKnR5cGVkKiBvcHRpb24uCisKIC4uIGRlY29yYXRvcjo6IHRvdGFsX29yZGVyaW5nCiAKICAgIEdpdmVuIGEgY2xhc3MgZGVmaW5pbmcgb25lIG9yIG1vcmUgcmljaCBjb21wYXJpc29uIG9yZGVyaW5nIG1ldGhvZHMsIHRoaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2djLnJzdCBiL0RvYy9saWJyYXJ5L2djLnJzdAppbmRleCAwMjgxYmI3Li40MWJkYTFlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZ2MucnN0CkBAIC0xNTMsOCArMTUzLDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKLVRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgcHJvdmlkZWQgZm9yIHJlYWQtb25seSBhY2Nlc3MgKHlvdSBjYW4gbXV0YXRlIGl0cwotdmFsdWUgYnV0IHNob3VsZCBub3QgcmViaW5kIGl0KToKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBwcm92aWRlZCBmb3IgcmVhZC1vbmx5IGFjY2VzcyAoeW91IGNhbiBtdXRhdGUgdGhlCit2YWx1ZXMgYnV0IHNob3VsZCBub3QgcmViaW5kIHRoZW0pOgogCiAuLiBkYXRhOjogZ2FyYmFnZQogCkBAIC0xODMsNiArMTgzLDQxIEBACiAgICAgICA6Y29uc3Q6YERFQlVHX1VOQ09MTEVDVEFCTEVgIGlzIHNldCwgaW4gYWRkaXRpb24gYWxsIHVuY29sbGVjdGFibGUgb2JqZWN0cwogICAgICAgYXJlIHByaW50ZWQuCiAKKy4uIGRhdGE6OiBjYWxsYmFja3MKKworICAgQSBsaXN0IG9mIGNhbGxiYWNrcyB0aGF0IHdpbGwgYmUgaW52b2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgYmVmb3JlIGFuZAorICAgYWZ0ZXIgY29sbGVjdGlvbi4gIFRoZSBjYWxsYmFja3Mgd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLAorICAgKnBoYXNlKiBhbmQgKmluZm8qLgorCisgICAqcGhhc2UqIGNhbiBiZSBvbmUgb2YgdHdvIHZhbHVlczoKKworICAgICAgInN0YXJ0IjogVGhlIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBhYm91dCB0byBzdGFydC4KKworICAgICAgInN0b3AiOiBUaGUgZ2FyYmFnZSBjb2xsZWN0aW9uIGhhcyBmaW5pc2hlZC4KKworICAgKmluZm8qIGlzIGEgZGljdCBwcm92aWRpbmcgbW9yZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGNhbGxiYWNrLiAgVGhlIGZvbGxvd2luZworICAga2V5cyBhcmUgY3VycmVudGx5IGRlZmluZWQ6CisKKyAgICAgICJnZW5lcmF0aW9uIjogVGhlIG9sZGVzdCBnZW5lcmF0aW9uIGJlaW5nIGNvbGxlY3RlZC4KKworICAgICAgImNvbGxlY3RlZCI6IFdoZW4gKnBoYXNlKiBpcyAic3RvcCIsIHRoZSBudW1iZXIgb2Ygb2JqZWN0cworICAgICAgc3VjY2Vzc2Z1bGx5IGNvbGxlY3RlZC4KKworICAgICAgInVuY29sbGVjdGFibGUiOiBXaGVuICpwaGFzZSogaXMgInN0b3AiLCB0aGUgbnVtYmVyIG9mIG9iamVjdHMKKyAgICAgIHRoYXQgY291bGQgbm90IGJlIGNvbGxlY3RlZCBhbmQgd2VyZSBwdXQgaW4gOmRhdGE6YGdhcmJhZ2VgLgorCisgICBBcHBsaWNhdGlvbnMgY2FuIGFkZCB0aGVpciBvd24gY2FsbGJhY2tzIHRvIHRoaXMgbGlzdC4gIFRoZSBwcmltYXJ5CisgICB1c2UgY2FzZXMgYXJlOgorCisgICAgICBHYXRoZXJpbmcgc3RhdGlzdGljcyBhYm91dCBnYXJiYWdlIGNvbGxlY3Rpb24sIHN1Y2ggYXMgaG93IG9mdGVuCisgICAgICB2YXJpb3VzIGdlbmVyYXRpb25zIGFyZSBjb2xsZWN0ZWQsIGFuZCBob3cgbG9uZyB0aGUgY29sbGVjdGlvbgorICAgICAgdGFrZXMuCisKKyAgICAgIEFsbG93aW5nIGFwcGxpY2F0aW9ucyB0byBpZGVudGlmeSBhbmQgY2xlYXIgdGhlaXIgb3duIHVuY29sbGVjdGFibGUKKyAgICAgIHR5cGVzIHdoZW4gdGhleSBhcHBlYXIgaW4gOmRhdGE6YGdhcmJhZ2VgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBhcmUgcHJvdmlkZWQgZm9yIHVzZSB3aXRoIDpmdW5jOmBzZXRfZGVidWdgOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CmluZGV4IDBmYTAyMmMuLjgyNTMxMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CkBAIC0xODUsMTAgKzE4NSwxMyBAQAogICAgdHJhbnNsYXRpb24gb2JqZWN0IGZyb20gdGhlIGNhY2hlOyB0aGUgYWN0dWFsIGluc3RhbmNlIGRhdGEgaXMgc3RpbGwgc2hhcmVkIHdpdGgKICAgIHRoZSBjYWNoZS4KIAotICAgSWYgbm8gOmZpbGU6YC5tb2AgZmlsZSBpcyBmb3VuZCwgdGhpcyBmdW5jdGlvbiByYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYKKyAgIElmIG5vIDpmaWxlOmAubW9gIGZpbGUgaXMgZm91bmQsIHRoaXMgZnVuY3Rpb24gcmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmCiAgICAqZmFsbGJhY2sqIGlzIGZhbHNlICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIGFuZCByZXR1cm5zIGEKICAgIDpjbGFzczpgTnVsbFRyYW5zbGF0aW9uc2AgaW5zdGFuY2UgaWYgKmZhbGxiYWNrKiBpcyB0cnVlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBmdW5jdGlvbjo6IGluc3RhbGwoZG9tYWluLCBsb2NhbGVkaXI9Tm9uZSwgY29kZXNldD1Ob25lLCBuYW1lcz1Ob25lKQogCkBAIC0zNDIsNyArMzQ1LDcgQEAKIAogSWYgdGhlIDpmaWxlOmAubW9gIGZpbGUncyBtYWdpYyBudW1iZXIgaXMgaW52YWxpZCwgb3IgaWYgb3RoZXIgcHJvYmxlbXMgb2NjdXIKIHdoaWxlIHJlYWRpbmcgdGhlIGZpbGUsIGluc3RhbnRpYXRpbmcgYSA6Y2xhc3M6YEdOVVRyYW5zbGF0aW9uc2AgY2xhc3MgY2FuIHJhaXNlCi06ZXhjOmBJT0Vycm9yYC4KKzpleGM6YE9TRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIG92ZXJyaWRkZW4gZnJvbSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZ3ppcC5yc3QgYi9Eb2MvbGlicmFyeS9nemlwLnJzdAppbmRleCA5NDIyZWE5Li41MGQwNDYyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9nemlwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9nemlwLnJzdApAQCAtMTMsOSArMTMsMTEgQEAKIAogVGhlIGRhdGEgY29tcHJlc3Npb24gaXMgcHJvdmlkZWQgYnkgdGhlIDptb2Q6YHpsaWJgIG1vZHVsZS4KIAotVGhlIDptb2Q6YGd6aXBgIG1vZHVsZSBwcm92aWRlcyB0aGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MuIFRoZSA6Y2xhc3M6YEd6aXBGaWxlYAotY2xhc3MgcmVhZHMgYW5kIHdyaXRlcyA6cHJvZ3JhbTpgZ3ppcGBcIC1mb3JtYXQgZmlsZXMsIGF1dG9tYXRpY2FsbHkgY29tcHJlc3NpbmcKLW9yIGRlY29tcHJlc3NpbmcgdGhlIGRhdGEgc28gdGhhdCBpdCBsb29rcyBsaWtlIGFuIG9yZGluYXJ5IDp0ZXJtOmBmaWxlIG9iamVjdGAuCitUaGUgOm1vZDpgZ3ppcGAgbW9kdWxlIHByb3ZpZGVzIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcywgYXMgd2VsbCBhcyB0aGUKKzpmdW5jOmAub3BlbmAsIDpmdW5jOmBjb21wcmVzc2AgYW5kIDpmdW5jOmBkZWNvbXByZXNzYCBjb252ZW5pZW5jZSBmdW5jdGlvbnMuCitUaGUgOmNsYXNzOmBHemlwRmlsZWAgY2xhc3MgcmVhZHMgYW5kIHdyaXRlcyA6cHJvZ3JhbTpgZ3ppcGBcIC1mb3JtYXQgZmlsZXMsCithdXRvbWF0aWNhbGx5IGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgdGhlIGRhdGEgc28gdGhhdCBpdCBsb29rcyBsaWtlIGFuCitvcmRpbmFyeSA6dGVybTpgZmlsZSBvYmplY3RgLgogCiBOb3RlIHRoYXQgYWRkaXRpb25hbCBmaWxlIGZvcm1hdHMgd2hpY2ggY2FuIGJlIGRlY29tcHJlc3NlZCBieSB0aGUKIDpwcm9ncmFtOmBnemlwYCBhbmQgOnByb2dyYW06YGd1bnppcGAgcHJvZ3JhbXMsIHN1Y2ggIGFzIHRob3NlIHByb2R1Y2VkIGJ5CkBAIC0yNCw2ICsyNiwzNCBAQAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CiAKIAorLi4gZnVuY3Rpb246OiBvcGVuKGZpbGVuYW1lLCBtb2RlPSdyYicsIGNvbXByZXNzbGV2ZWw9OSwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSkKKworICAgT3BlbiBhIGd6aXAtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIDpjbGFzczpgc3RyYCBvcgorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICBUaGUgKm1vZGUqIGFyZ3VtZW50IGNhbiBiZSBhbnkgb2YgYGAncidgYCwgYGAncmInYGAsIGBgJ2EnYGAsIGBgJ2FiJ2BgLAorICAgYGAndydgYCwgb3IgYGAnd2InYGAgZm9yIGJpbmFyeSBtb2RlLCBvciBgYCdydCdgYCwgYGAnYXQnYGAsIG9yIGBgJ3d0J2BgIGZvcgorICAgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBpcyBgYCdyYidgYC4KKworICAgVGhlICpjb21wcmVzc2xldmVsKiBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGZyb20gMSB0byA5LCBhcyBmb3IgdGhlCisgICA6Y2xhc3M6YEd6aXBGaWxlYCBjb25zdHJ1Y3Rvci4KKworICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIDpjbGFzczpgR3ppcEZpbGVgCisgICBjb25zdHJ1Y3RvcjogYGBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbClgYC4gSW4gdGhpcyBjYXNlLCB0aGUKKyAgICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICBGb3IgdGV4dCBtb2RlLCBhIDpjbGFzczpgR3ppcEZpbGVgIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yCisgICBoYW5kbGluZyBiZWhhdmlvciwgYW5kIGxpbmUgZW5kaW5nKHMpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgKmZpbGVuYW1lKiBiZWluZyBhIGZpbGUgb2JqZWN0LCBzdXBwb3J0IGZvciB0ZXh0IG1vZGUsCisgICAgICBhbmQgdGhlICplbmNvZGluZyosICplcnJvcnMqIGFuZCAqbmV3bGluZSogYXJndW1lbnRzLgorCisKIC4uIGNsYXNzOjogR3ppcEZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT1Ob25lLCBjb21wcmVzc2xldmVsPTksIGZpbGVvYmo9Tm9uZSwgbXRpbWU9Tm9uZSkKIAogICAgQ29uc3RydWN0b3IgZm9yIHRoZSA6Y2xhc3M6YEd6aXBGaWxlYCBjbGFzcywgd2hpY2ggc2ltdWxhdGVzIG1vc3Qgb2YgdGhlCkBAIC00Niw5ICs3Niw5IEBACiAgICBvciBgYCd3YidgYCwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZpbGUgd2lsbCBiZSByZWFkIG9yIHdyaXR0ZW4uICBUaGUgZGVmYXVsdAogICAgaXMgdGhlIG1vZGUgb2YgKmZpbGVvYmoqIGlmIGRpc2Nlcm5pYmxlOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IGlzIGBgJ3JiJ2BgLgogCi0gICBOb3RlIHRoYXQgdGhlIGZpbGUgaXMgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZTsgdGV4dCBtb2RlIGlzIG5vdAotICAgc3VwcG9ydGVkLiBJZiB5b3UgbmVlZCB0byByZWFkIGEgY29tcHJlc3NlZCBmaWxlIGluIHRleHQgbW9kZSwgd3JhcCB5b3VyCi0gICA6Y2xhc3M6YEd6aXBGaWxlYCB3aXRoIGFuIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAuCisgICBOb3RlIHRoYXQgdGhlIGZpbGUgaXMgYWx3YXlzIG9wZW5lZCBpbiBiaW5hcnkgbW9kZS4gVG8gb3BlbiBhIGNvbXByZXNzZWQgZmlsZQorICAgaW4gdGV4dCBtb2RlLCB1c2UgOmZ1bmM6YC5vcGVuYCAob3Igd3JhcCB5b3VyIDpjbGFzczpgR3ppcEZpbGVgIHdpdGggYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmApLgogCiAgICBUaGUgKmNvbXByZXNzbGV2ZWwqIGFyZ3VtZW50IGlzIGFuIGludGVnZXIgZnJvbSBgYDFgYCB0byBgYDlgYCBjb250cm9sbGluZyB0aGUKICAgIGxldmVsIG9mIGNvbXByZXNzaW9uOyBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIGFuZApAQCAtNzEsNyArMTAxLDcgQEAKIAogICAgOmNsYXNzOmBHemlwRmlsZWAgc3VwcG9ydHMgdGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIGludGVyZmFjZSwKICAgIGluY2x1ZGluZyBpdGVyYXRpb24gYW5kIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgT25seSB0aGUKLSAgIDptZXRoOmByZWFkMWAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kcyBhcmVuJ3QgaW1wbGVtZW50ZWQuCisgICA6bWV0aDpgdHJ1bmNhdGVgIG1ldGhvZCBpc24ndCBpbXBsZW1lbnRlZC4KIAogICAgOmNsYXNzOmBHemlwRmlsZWAgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZDoKIApAQCAtOTMsMTIgKzEyMyw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgU3VwcG9ydCBmb3IgdW5zZWVrYWJsZSBmaWxlcyB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWQxYCBtZXRob2QgaXMgbm93IGltcGxlbWVudGVkLgogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZW5hbWUsIG1vZGU9J3JiJywgY29tcHJlc3NsZXZlbD05KQotCi0gICBUaGlzIGlzIGEgc2hvcnRoYW5kIGZvciBgYEd6aXBGaWxlKGZpbGVuYW1lLGBgIGBgbW9kZSxgYCBgYGNvbXByZXNzbGV2ZWwpYGAuCi0gICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBpcyByZXF1aXJlZDsgKm1vZGUqIGRlZmF1bHRzIHRvIGBgJ3JiJ2BgIGFuZAotICAgKmNvbXByZXNzbGV2ZWwqIGRlZmF1bHRzIHRvIGBgOWBgLgogCiAuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGNvbXByZXNzbGV2ZWw9OSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaG1hYy5yc3QgYi9Eb2MvbGlicmFyeS9obWFjLnJzdAppbmRleCBlZmYyNzI0Li4wNzA2ZmY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9obWFjLnJzdAorKysgYi9Eb2MvbGlicmFyeS9obWFjLnJzdApAQCAtMzgsNiArMzgsMTMgQEAKICAgIGdpdmVuIHRvIHRoZSBjb25zdHJ1Y3Rvci4gIEl0IG1heSBjb250YWluIG5vbi1BU0NJSSBieXRlcywgaW5jbHVkaW5nIE5VTAogICAgYnl0ZXMuCiAKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBXaGVuIGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIDptZXRoOmBkaWdlc3RgIHRvIGFuIGV4dGVybmFsbHktc3VwcGxpZWQKKyAgICAgIGRpZ2VzdCBkdXJpbmcgYSB2ZXJpZmljYXRpb24gcm91dGluZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQorICAgICAgOmZ1bmM6YGNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBgYD09YGAgb3BlcmF0b3IKKyAgICAgIHRvIHJlZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSB0byB0aW1pbmcgYXR0YWNrcy4KKwogCiAuLiBtZXRob2Q6OiBITUFDLmhleGRpZ2VzdCgpCiAKQEAgLTQ1LDYgKzUyLDEzIEBACiAgICBsZW5ndGggY29udGFpbmluZyBvbmx5IGhleGFkZWNpbWFsIGRpZ2l0cy4gIFRoaXMgbWF5IGJlIHVzZWQgdG8gZXhjaGFuZ2UgdGhlCiAgICB2YWx1ZSBzYWZlbHkgaW4gZW1haWwgb3Igb3RoZXIgbm9uLWJpbmFyeSBlbnZpcm9ubWVudHMuCiAKKyAgIC4uIHdhcm5pbmc6OgorCisgICAgICBXaGVuIGNvbXBhcmluZyB0aGUgb3V0cHV0IG9mIDptZXRoOmBoZXhkaWdlc3RgIHRvIGFuIGV4dGVybmFsbHktc3VwcGxpZWQKKyAgICAgIGRpZ2VzdCBkdXJpbmcgYSB2ZXJpZmljYXRpb24gcm91dGluZSwgaXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoZQorICAgICAgOmZ1bmM6YGNvbXBhcmVfZGlnZXN0YCBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBgYD09YGAgb3BlcmF0b3IKKyAgICAgIHRvIHJlZHVjZSB0aGUgdnVsbmVyYWJpbGl0eSB0byB0aW1pbmcgYXR0YWNrcy4KKwogCiAuLiBtZXRob2Q6OiBITUFDLmNvcHkoKQogCkBAIC01Miw2ICs2NiwyNyBAQAogICAgY29tcHV0ZSB0aGUgZGlnZXN0cyBvZiBzdHJpbmdzIHRoYXQgc2hhcmUgYSBjb21tb24gaW5pdGlhbCBzdWJzdHJpbmcuCiAKIAorVGhpcyBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbjoKKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBhID09IGJgYC4gIFRoaXMgZnVuY3Rpb24gdXNlcyBhbiBhcHByb2FjaCBkZXNpZ25lZCB0byBwcmV2ZW50CisgICB0aW1pbmcgYW5hbHlzaXMgYnkgYXZvaWRpbmcgY29udGVudC1iYXNlZCBzaG9ydCBjaXJjdWl0aW5nIGJlaGF2aW91ciwKKyAgIG1ha2luZyBpdCBhcHByb3ByaWF0ZSBmb3IgY3J5cHRvZ3JhcGh5LiAgKmEqIGFuZCAqYiogbXVzdCBib3RoIGJlIG9mIHRoZQorICAgc2FtZSB0eXBlOiBlaXRoZXIgOmNsYXNzOmBzdHJgIChBU0NJSSBvbmx5LCBhcyBlLmcuIHJldHVybmVkIGJ5CisgICA6bWV0aDpgSE1BQy5oZXhkaWdlc3RgKSwgb3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sCisgICAoZS5nLiA6Y2xhc3M6YGJ5dGVzYCkuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJZiAqYSogYW5kICpiKiBhcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIG9yIGlmIGFuIGVycm9yIG9jY3VycywKKyAgICAgIGEgdGltaW5nIGF0dGFjayBjb3VsZCB0aGVvcmV0aWNhbGx5IHJldmVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgIHR5cGVzIGFuZCBsZW5ndGhzIG9mICphKiBhbmQgKmIqLS1idXQgbm90IHRoZWlyIHZhbHVlcy4KKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YGhhc2hsaWJgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLmVudGl0aWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CmluZGV4IGI4YjRhYTguLjY1Y2U4MTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwuZW50aXRpZXMucnN0CkBAIC05LDExICs5LDE5IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIGRlZmluZXMgdGhyZWUgZGljdGlvbmFyaWVzLCBgYG5hbWUyY29kZXBvaW50YGAsIGBgY29kZXBvaW50Mm5hbWVgYCwKLWFuZCBgYGVudGl0eWRlZnNgYC4gYGBlbnRpdHlkZWZzYGAgaXMgdXNlZCB0byBwcm92aWRlIHRoZSA6YXR0cjpgZW50aXR5ZGVmc2AKLWF0dHJpYnV0ZSBvZiB0aGUgOmNsYXNzOmBodG1sLnBhcnNlci5IVE1MUGFyc2VyYCBjbGFzcy4gIFRoZSBkZWZpbml0aW9uIHByb3ZpZGVkCi1oZXJlIGNvbnRhaW5zIGFsbCB0aGUgZW50aXRpZXMgZGVmaW5lZCBieSBYSFRNTCAxLjAgdGhhdCBjYW4gYmUgaGFuZGxlZCB1c2luZwotc2ltcGxlIHRleHR1YWwgc3Vic3RpdHV0aW9uIGluIHRoZSBMYXRpbi0xIGNoYXJhY3RlciBzZXQgKElTTy04ODU5LTEpLgorVGhpcyBtb2R1bGUgZGVmaW5lcyBmb3VyIGRpY3Rpb25hcmllcywgOmRhdGE6YGh0bWw1YCwKKzpkYXRhOmBuYW1lMmNvZGVwb2ludGAsIDpkYXRhOmBjb2RlcG9pbnQybmFtZWAsIGFuZCA6ZGF0YTpgZW50aXR5ZGVmc2AuCisKKworLi4gZGF0YTo6IGh0bWw1CisKKyAgIEEgZGljdGlvbmFyeSB0aGF0IG1hcHMgSFRNTDUgbmFtZWQgY2hhcmFjdGVyIHJlZmVyZW5jZXMgWyNdXyB0byB0aGUKKyAgIGVxdWl2YWxlbnQgVW5pY29kZSBjaGFyYWN0ZXIocyksIGUuZy4gYGBodG1sNVsnZ3Q7J10gPT0gJz4nYGAuCisgICBOb3RlIHRoYXQgdGhlIHRyYWlsaW5nIHNlbWljb2xvbiBpcyBpbmNsdWRlZCBpbiB0aGUgbmFtZSAoZS5nLiBgYCdndDsnYGApLAorICAgaG93ZXZlciBzb21lIG9mIHRoZSBuYW1lcyBhcmUgYWNjZXB0ZWQgYnkgdGhlIHN0YW5kYXJkIGV2ZW4gd2l0aG91dCB0aGUKKyAgIHNlbWljb2xvbjogaW4gdGhpcyBjYXNlIHRoZSBuYW1lIGlzIHByZXNlbnQgd2l0aCBhbmQgd2l0aG91dCB0aGUgYGAnOydgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IGVudGl0eWRlZnMKQEAgLTMwLDMgKzM4LDggQEAKIC4uIGRhdGE6OiBjb2RlcG9pbnQybmFtZQogCiAgICBBIGRpY3Rpb25hcnkgdGhhdCBtYXBzIFVuaWNvZGUgY29kZXBvaW50cyB0byBIVE1MIGVudGl0eSBuYW1lcy4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9uYW1lZC1jaGFyYWN0ZXItcmVmZXJlbmNlcy5odG1sCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLnBhcnNlci5yc3QKaW5kZXggZjNjMzZlYy4uZTQxNTRlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHRtbC5wYXJzZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2h0bWwucGFyc2VyLnJzdApAQCAtMTYsMTMgKzE2LDE0IEBACiBUaGlzIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3MgOmNsYXNzOmBIVE1MUGFyc2VyYCB3aGljaCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvcgogcGFyc2luZyB0ZXh0IGZpbGVzIGZvcm1hdHRlZCBpbiBIVE1MIChIeXBlclRleHQgTWFyay11cCBMYW5ndWFnZSkgYW5kIFhIVE1MLgogCi0uLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PVRydWUpCisuLiBjbGFzczo6IEhUTUxQYXJzZXIoc3RyaWN0PUZhbHNlKQogCi0gICBDcmVhdGUgYSBwYXJzZXIgaW5zdGFuY2UuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCAodGhlIGRlZmF1bHQpLCBpbnZhbGlkCi0gICBIVE1MIHJlc3VsdHMgaW4gOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb25zIFsjXV8uICBJZgotICAgKnN0cmljdCogaXMgYGBGYWxzZWBgLCB0aGUgcGFyc2VyIHVzZXMgaGV1cmlzdGljcyB0byBtYWtlIGEgYmVzdCBndWVzcyBhdAotICAgdGhlIGludGVudGlvbiBvZiBhbnkgaW52YWxpZCBIVE1MIGl0IGVuY291bnRlcnMsIHNpbWlsYXIgdG8gdGhlIHdheSBtb3N0Ci0gICBicm93c2VycyBkby4gIFVzaW5nIGBgc3RyaWN0PUZhbHNlYGAgaXMgYWR2aXNlZC4KKyAgIENyZWF0ZSBhIHBhcnNlciBpbnN0YW5jZS4gIElmICpzdHJpY3QqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpLCB0aGUgcGFyc2VyCisgICB3aWxsIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAuICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCB0aGUgcGFyc2VyCisgICB3aWxsIHJhaXNlIGFuIDpleGM6YH5odG1sLnBhcnNlci5IVE1MUGFyc2VFcnJvcmAgZXhjZXB0aW9uIGluc3RlYWQgWyNdXyB3aGVuCisgICBpdCdzIG5vdCBhYmxlIHRvIHBhcnNlIHRoZSBtYXJrdXAuCisgICBUaGUgdXNlIG9mIGBgc3RyaWN0PVRydWVgYCBpcyBkaXNjb3VyYWdlZCBhbmQgdGhlICpzdHJpY3QqIGFyZ3VtZW50IGlzCisgICBkZXByZWNhdGVkLgogCiAgICBBbiA6Y2xhc3M6YC5IVE1MUGFyc2VyYCBpbnN0YW5jZSBpcyBmZWQgSFRNTCBkYXRhIGFuZCBjYWxscyBoYW5kbGVyIG1ldGhvZHMKICAgIHdoZW4gc3RhcnQgdGFncywgZW5kIHRhZ3MsIHRleHQsIGNvbW1lbnRzLCBhbmQgb3RoZXIgbWFya3VwIGVsZW1lbnRzIGFyZQpAQCAtMzIsNyArMzMsMTIgQEAKICAgIFRoaXMgcGFyc2VyIGRvZXMgbm90IGNoZWNrIHRoYXQgZW5kIHRhZ3MgbWF0Y2ggc3RhcnQgdGFncyBvciBjYWxsIHRoZSBlbmQtdGFnCiAgICBoYW5kbGVyIGZvciBlbGVtZW50cyB3aGljaCBhcmUgY2xvc2VkIGltcGxpY2l0bHkgYnkgY2xvc2luZyBhbiBvdXRlciBlbGVtZW50LgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiAqc3RyaWN0KiBrZXl3b3JkIGFkZGVkCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgKnN0cmljdCoga2V5d29yZCBhZGRlZC4KKworICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy4zIDMuNQorICAgICAgVGhlICpzdHJpY3QqIGFyZ3VtZW50IGFuZCB0aGUgc3RyaWN0IG1vZGUgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQuCisgICAgICBUaGUgcGFyc2VyIGlzIG5vdyBhYmxlIHRvIGFjY2VwdCBhbmQgcGFyc2UgaW52YWxpZCBtYXJrdXAgdG9vLgogCiBBbiBleGNlcHRpb24gaXMgZGVmaW5lZCBhcyB3ZWxsOgogCkBAIC00Niw2ICs1MiwxMCBAQAogICAgZGV0ZWN0ZWQsIGFuZCA6YXR0cjpgb2Zmc2V0YCBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW50byB0aGUgbGluZSBhdAogICAgd2hpY2ggdGhlIGNvbnN0cnVjdCBzdGFydHMuCiAKKyAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuMyAzLjUKKyAgICAgIFRoaXMgZXhjZXB0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYmVjYXVzZSBpdCdzIG5ldmVyIHJhaXNlZCBieSB0aGUgcGFyc2VyCisgICAgICAod2hlbiB0aGUgZGVmYXVsdCBub24tc3RyaWN0IG1vZGUgaXMgdXNlZCkuCisKIAogRXhhbXBsZSBIVE1MIFBhcnNlciBBcHBsaWNhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHRtbC5yc3QgYi9Eb2MvbGlicmFyeS9odG1sLnJzdAppbmRleCAzYWQxYzBjLi4xMTA3Y2E5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odG1sLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odG1sLnJzdApAQCAtMTksMyArMTksMTAgQEAKICAgIGF0dHJpYnV0ZSB2YWx1ZSBkZWxpbWl0ZWQgYnkgcXVvdGVzLCBhcyBpbiBgYDxhIGhyZWY9Ii4uLiI+YGAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCistLS0tLS0tLS0tLS0tLQorCitTdWJtb2R1bGVzIGluIHRoZSBgYGh0bWxgYCBwYWNrYWdlIGFyZToKKworKiA6bW9kOmBodG1sLnBhcnNlcmAgLS0gSFRNTC9YSFRNTCBwYXJzZXIgd2l0aCBsZW5pZW50IHBhcnNpbmcgbW9kZQorKiA6bW9kOmBodG1sLmVudGl0aWVzYCAtLSBIVE1MIGVudGl0eSBkZWZpbml0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jbGllbnQucnN0CmluZGV4IGQ0MzlmMjQuLjU1OTlkYWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY2xpZW50LnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNsaWVudC5yc3QKQEAgLTM0Myw2ICszNDMsMTUgQEAKIHwgOmNvbnN0OmBVUEdSQURFX1JFUVVJUkVEYCAgICAgICAgICAgICAgICB8IGBgNDI2YGAgfCBIVFRQIFVwZ3JhZGUgdG8gVExTLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI4MTdgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBQUkVDT05ESVRJT05fUkVRVUlSRURgICAgICAgICAgICB8IGBgNDI4YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBUT09fTUFOWV9SRVFVRVNUU2AgICAgICAgICAgICAgICB8IGBgNDI5YGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFYCB8IGBgNDMxYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgOmNvbnN0OmBJTlRFUk5BTF9TRVJWRVJfRVJST1JgICAgICAgICAgICB8IGBgNTAwYGAgfCBIVFRQLzEuMSwgYFJGQyAyNjE2LCBTZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDEwLjUuMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgPGh0dHA6Ly93d3cudzMub3JnL1Byb3RvY29scy9yZmMyNjE2L3JmYzI2MTYtc2VjMTAuaHRtbCNzZWMxMC41LjE+YF8gIHwKQEAgLTM3Myw2ICszODIsMTIgQEAKIHwgOmNvbnN0OmBOT1RfRVhURU5ERURgICAgICAgICAgICAgICAgICAgICB8IGBgNTEwYGAgfCBBbiBIVFRQIEV4dGVuc2lvbiBGcmFtZXdvcmssICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDI3NzRgLCBTZWN0aW9uIDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgOmNvbnN0OmBORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEYCB8IGBgNTExYGAgfCBBZGRpdGlvbmFsIEhUVFAgU3RhdHVzIENvZGVzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IDpyZmM6YDY1ODVgLCBTZWN0aW9uIDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFkZGVkIGNvZGVzIGBgNDI4YGAsIGBgNDI5YGAsIGBgNDMxYGAgYW5kIGBgNTExYGAgZnJvbSA6cmZjOmA2NTg1YC4KIAogCiAuLiBkYXRhOjogcmVzcG9uc2VzCkBAIC01MDYsNiArNTIxLDEyIEBACiAKICAgIFJlYWRzIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBib2R5LCBvciB1cCB0byB0aGUgbmV4dCAqYW10KiBieXRlcy4KIAorLi4gbWV0aG9kOjogSFRUUFJlc3BvbnNlLnJlYWRpbnRvKGIpCisKKyAgIFJlYWRzIHVwIHRvIHRoZSBuZXh0IGxlbihiKSBieXRlcyBvZiB0aGUgcmVzcG9uc2UgYm9keSBpbnRvIHRoZSBidWZmZXIgKmIqLgorICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBIVFRQUmVzcG9uc2UuZ2V0aGVhZGVyKG5hbWUsIGRlZmF1bHQ9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVqYXIucnN0CmluZGV4IGNjOGYyNTEuLjQwZjI0ZjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2h0dHAuY29va2llamFyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZWphci5yc3QKQEAgLTQwLDcgKzQwLDExIEBACiAuLiBleGNlcHRpb246OiBMb2FkRXJyb3IKIAogICAgSW5zdGFuY2VzIG9mIDpjbGFzczpgRmlsZUNvb2tpZUphcmAgcmFpc2UgdGhpcyBleGNlcHRpb24gb24gZmFpbHVyZSB0byBsb2FkCi0gICBjb29raWVzIGZyb20gYSBmaWxlLiAgOmV4YzpgTG9hZEVycm9yYCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLgorICAgY29va2llcyBmcm9tIGEgZmlsZS4gIDpleGM6YExvYWRFcnJvcmAgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIExvYWRFcnJvciB3YXMgbWFkZSBhIHN1YmNsYXNzIG9mIDpleGM6YE9TRXJyb3JgIGluc3RlYWQgb2YKKyAgICAgIDpleGM6YElPRXJyb3JgLgogCiAKIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CkBAIC0yNTcsOSArMjYxLDEyIEBACiAgICBBcmd1bWVudHMgYXJlIGFzIGZvciA6bWV0aDpgc2F2ZWAuCiAKICAgIFRoZSBuYW1lZCBmaWxlIG11c3QgYmUgaW4gdGhlIGZvcm1hdCB1bmRlcnN0b29kIGJ5IHRoZSBjbGFzcywgb3IKLSAgIDpleGM6YExvYWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBbHNvLCA6ZXhjOmBJT0Vycm9yYCBtYXkgYmUgcmFpc2VkLCBmb3IKKyAgIDpleGM6YExvYWRFcnJvcmAgd2lsbCBiZSByYWlzZWQuICBBbHNvLCA6ZXhjOmBPU0Vycm9yYCBtYXkgYmUgcmFpc2VkLCBmb3IKICAgIGV4YW1wbGUgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBJT0Vycm9yYCB1c2VkIHRvIGJlIHJhaXNlZCwgaXQgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIG1ldGhvZDo6IEZpbGVDb29raWVKYXIucmV2ZXJ0KGZpbGVuYW1lPU5vbmUsIGlnbm9yZV9kaXNjYXJkPUZhbHNlLCBpZ25vcmVfZXhwaXJlcz1GYWxzZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuY29va2llcy5yc3QKaW5kZXggNWFlM2ZkNC4uNjQ2ZjJlOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaHR0cC5jb29raWVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwLmNvb2tpZXMucnN0CkBAIC0yMiw5ICsyMiwxMiBAQAogQ29va2llIGhhbmRsaW5nLiAgQXMgYSByZXN1bHQsIHRoZSBwYXJzaW5nIHJ1bGVzIHVzZWQgYXJlIGEgYml0IGxlc3Mgc3RyaWN0LgogCiBUaGUgY2hhcmFjdGVyIHNldCwgOmRhdGE6YHN0cmluZy5hc2NpaV9sZXR0ZXJzYCwgOmRhdGE6YHN0cmluZy5kaWdpdHNgIGFuZAotYGAhIyQlJicqKy0uXl9gfH5gYCBkZW5vdGUgdGhlIHNldCBvZiB2YWxpZCBjaGFyYWN0ZXJzIGFsbG93ZWQgYnkgdGhpcyBtb2R1bGUKK2BgISMkJSYnKistLl5fYHx+OmBgIGRlbm90ZSB0aGUgc2V0IG9mIHZhbGlkIGNoYXJhY3RlcnMgYWxsb3dlZCBieSB0aGlzIG1vZHVsZQogaW4gQ29va2llIG5hbWUgKGFzIDphdHRyOmB+TW9yc2VsLmtleWApLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgQWxsb3dlZCAnOicgYXMgYSB2YWxpZCBDb29raWUgbmFtZSBjaGFyYWN0ZXIuCisKIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAucnN0IGIvRG9jL2xpYnJhcnkvaHR0cC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM4N2EzNwotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2h0dHAucnN0CkBAIC0wLDAgKzEsMTEgQEAKKzptb2Q6YGh0dHBgIC0tLSBIVFRQIG1vZHVsZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYGBodHRwYGAgaXMgYSBwYWNrYWdlIHRoYXQgY29sbGVjdHMgc2V2ZXJhbCBtb2R1bGVzIGZvciB3b3JraW5nIHdpdGggdGhlCitIeXBlclRleHQgVHJhbnNmZXIgUHJvdG9jb2w6CisKKyogOm1vZDpgaHR0cC5jbGllbnRgIGlzIGEgbG93LWxldmVsIEhUVFAgcHJvdG9jb2wgY2xpZW50OyBmb3IgaGlnaC1sZXZlbCBVUkwKKyAgb3BlbmluZyB1c2UgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisqIDptb2Q6YGh0dHAuc2VydmVyYCBjb250YWlucyBiYXNpYyBIVFRQIHNlcnZlciBjbGFzc2VzIGJhc2VkIG9uIDptb2Q6YHNvY2tldHNlcnZlcmAKKyogOm1vZDpgaHR0cC5jb29raWVzYCBoYXMgdXRpbGl0aWVzIGZvciBpbXBsZW1lbnRpbmcgc3RhdGUgbWFuYWdlbWVudCB3aXRoIGNvb2tpZXMKKyogOm1vZDpgaHR0cC5jb29raWVqYXJgIHByb3ZpZGVzIHBlcnNpc3RlbmNlIG9mIGNvb2tpZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAppbmRleCAzMDBlMzMyLi5jYmFkM2VkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CkBAIC0xNzksMTkgKzE3OSwzMCBAQAogCiAgICAuLiBtZXRob2Q6OiBzZW5kX3Jlc3BvbnNlKGNvZGUsIG1lc3NhZ2U9Tm9uZSkKIAotICAgICAgU2VuZHMgYSByZXNwb25zZSBoZWFkZXIgYW5kIGxvZ3MgdGhlIGFjY2VwdGVkIHJlcXVlc3QuIFRoZSBIVFRQIHJlc3BvbnNlCi0gICAgICBsaW5lIGlzIHNlbnQsIGZvbGxvd2VkIGJ5ICpTZXJ2ZXIqIGFuZCAqRGF0ZSogaGVhZGVycy4gVGhlIHZhbHVlcyBmb3IKLSAgICAgIHRoZXNlIHR3byBoZWFkZXJzIGFyZSBwaWNrZWQgdXAgZnJvbSB0aGUgOm1ldGg6YHZlcnNpb25fc3RyaW5nYCBhbmQKLSAgICAgIDptZXRoOmBkYXRlX3RpbWVfc3RyaW5nYCBtZXRob2RzLCByZXNwZWN0aXZlbHkuCisgICAgICBBZGRzIGEgcmVzcG9uc2UgaGVhZGVyIHRvIHRoZSBoZWFkZXJzIGJ1ZmZlciBhbmQgbG9ncyB0aGUgYWNjZXB0ZWQKKyAgICAgIHJlcXVlc3QuIFRoZSBIVFRQIHJlc3BvbnNlIGxpbmUgaXMgd3JpdHRlbiB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLAorICAgICAgZm9sbG93ZWQgYnkgKlNlcnZlciogYW5kICpEYXRlKiBoZWFkZXJzLiBUaGUgdmFsdWVzIGZvciB0aGVzZSB0d28gaGVhZGVycworICAgICAgYXJlIHBpY2tlZCB1cCBmcm9tIHRoZSA6bWV0aDpgdmVyc2lvbl9zdHJpbmdgIGFuZAorICAgICAgOm1ldGg6YGRhdGVfdGltZV9zdHJpbmdgIG1ldGhvZHMsIHJlc3BlY3RpdmVseS4gSWYgdGhlIHNlcnZlciBkb2VzIG5vdAorICAgICAgaW50ZW5kIHRvIHNlbmQgYW55IG90aGVyIGhlYWRlcnMgdXNpbmcgdGhlIDptZXRoOmBzZW5kX2hlYWRlcmAgbWV0aG9kLAorICAgICAgdGhlbiA6bWV0aDpgc2VuZF9yZXNwb25zZWAgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGEgOm1ldGg6YGVuZF9oZWFkZXJzYAorICAgICAgY2FsbC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEhlYWRlcnMgYXJlIHN0b3JlZCB0byBhbiBpbnRlcm5hbCBidWZmZXIgYW5kIDptZXRoOmBlbmRfaGVhZGVyc2AKKyAgICAgICAgIG5lZWRzIHRvIGJlIGNhbGxlZCBleHBsaWNpdGx5LgorCiAKICAgIC4uIG1ldGhvZDo6IHNlbmRfaGVhZGVyKGtleXdvcmQsIHZhbHVlKQogCi0gICAgICBTdG9yZXMgdGhlIEhUVFAgaGVhZGVyIHRvIGFuIGludGVybmFsIGJ1ZmZlciB3aGljaCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlCi0gICAgICBvdXRwdXQgc3RyZWFtIHdoZW4gOm1ldGg6YGVuZF9oZWFkZXJzYCBtZXRob2QgaXMgaW52b2tlZC4KLSAgICAgICprZXl3b3JkKiBzaG91bGQgc3BlY2lmeSB0aGUgaGVhZGVyIGtleXdvcmQsIHdpdGggKnZhbHVlKgotICAgICAgc3BlY2lmeWluZyBpdHMgdmFsdWUuCisgICAgICBBZGRzIHRoZSBIVFRQIGhlYWRlciB0byBhbiBpbnRlcm5hbCBidWZmZXIgd2hpY2ggd2lsbCBiZSB3cml0dGVuIHRvIHRoZQorICAgICAgb3V0cHV0IHN0cmVhbSB3aGVuIGVpdGhlciA6bWV0aDpgZW5kX2hlYWRlcnNgIG9yIDptZXRoOmBmbHVzaF9oZWFkZXJzYCBpcworICAgICAgaW52b2tlZC4gKmtleXdvcmQqIHNob3VsZCBzcGVjaWZ5IHRoZSBoZWFkZXIga2V5d29yZCwgd2l0aCAqdmFsdWUqCisgICAgICBzcGVjaWZ5aW5nIGl0cyB2YWx1ZS4gTm90ZSB0aGF0LCBhZnRlciB0aGUgc2VuZF9oZWFkZXIgY2FsbHMgYXJlIGRvbmUsCisgICAgICA6bWV0aDpgZW5kX2hlYWRlcnNgIE1VU1QgQkUgY2FsbGVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSBvcGVyYXRpb24uCiAKLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIFN0b3JpbmcgdGhlIGhlYWRlcnMgaW4gYW4gaW50ZXJuYWwgYnVmZmVyCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgorICAgICAgICAgSGVhZGVycyBhcmUgc3RvcmVkIGluIGFuIGludGVybmFsIGJ1ZmZlci4KIAogCiAgICAuLiBtZXRob2Q6OiBzZW5kX3Jlc3BvbnNlX29ubHkoY29kZSwgbWVzc2FnZT1Ob25lKQpAQCAtMjA1LDEwICsyMTYsMTkgQEAKIAogICAgLi4gbWV0aG9kOjogZW5kX2hlYWRlcnMoKQogCi0gICAgICBXcml0ZSB0aGUgYnVmZmVyZWQgSFRUUCBoZWFkZXJzIHRvIHRoZSBvdXRwdXQgc3RyZWFtIGFuZCBzZW5kIGEgYmxhbmsKLSAgICAgIGxpbmUsIGluZGljYXRpbmcgdGhlIGVuZCBvZiB0aGUgSFRUUCBoZWFkZXJzIGluIHRoZSByZXNwb25zZS4KKyAgICAgIEFkZHMgYSBibGFuayBsaW5lCisgICAgICAoaW5kaWNhdGluZyB0aGUgZW5kIG9mIHRoZSBIVFRQIGhlYWRlcnMgaW4gdGhlIHJlc3BvbnNlKQorICAgICAgdG8gdGhlIGhlYWRlcnMgYnVmZmVyIGFuZCBjYWxscyA6bWV0aDpgZmx1c2hfaGVhZGVycygpYC4KIAotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIgV3JpdGluZyB0aGUgYnVmZmVyZWQgaGVhZGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBUaGUgYnVmZmVyZWQgaGVhZGVycyBhcmUgd3JpdHRlbiB0byB0aGUgb3V0cHV0IHN0cmVhbS4KKworICAgLi4gbWV0aG9kOjogZmx1c2hfaGVhZGVycygpCisKKyAgICAgIEZpbmFsbHkgc2VuZCB0aGUgaGVhZGVycyB0byB0aGUgb3V0cHV0IHN0cmVhbSBhbmQgZmx1c2ggdGhlIGludGVybmFsCisgICAgICBoZWFkZXJzIGJ1ZmZlci4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKICAgIC4uIG1ldGhvZDo6IGxvZ19yZXF1ZXN0KGNvZGU9Jy0nLCBzaXplPSctJykKIApAQCAtMjUwLDggKzI3MCwxMSBAQAogCiAgICAuLiBtZXRob2Q6OiBhZGRyZXNzX3N0cmluZygpCiAKLSAgICAgIFJldHVybnMgdGhlIGNsaWVudCBhZGRyZXNzLCBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuIEEgbmFtZSBsb29rdXAgaXMKLSAgICAgIHBlcmZvcm1lZCBvbiB0aGUgY2xpZW50J3MgSVAgYWRkcmVzcy4KKyAgICAgIFJldHVybnMgdGhlIGNsaWVudCBhZGRyZXNzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgUHJldmlvdXNseSwgYSBuYW1lIGxvb2t1cCB3YXMgcGVyZm9ybWVkLiBUbyBhdm9pZCBuYW1lIHJlc29sdXRpb24KKyAgICAgICAgIGRlbGF5cywgaXQgbm93IGFsd2F5cyByZXR1cm5zIHRoZSBJUCBhZGRyZXNzLgogCiAKIC4uIGNsYXNzOjogU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzLCBzZXJ2ZXIpCkBAIC0yOTksNyArMzIyLDcgQEAKICAgICAgIHJlc3BvbnNlIGlmIHRoZSA6ZnVuYzpgbGlzdGRpcmAgZmFpbHMuCiAKICAgICAgIElmIHRoZSByZXF1ZXN0IHdhcyBtYXBwZWQgdG8gYSBmaWxlLCBpdCBpcyBvcGVuZWQgYW5kIHRoZSBjb250ZW50cyBhcmUKLSAgICAgIHJldHVybmVkLiAgQW55IDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpbiBvcGVuaW5nIHRoZSByZXF1ZXN0ZWQgZmlsZSBpcworICAgICAgcmV0dXJuZWQuICBBbnkgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGluIG9wZW5pbmcgdGhlIHJlcXVlc3RlZCBmaWxlIGlzCiAgICAgICBtYXBwZWQgdG8gYSBgYDQwNGBgLCBgYCdGaWxlIG5vdCBmb3VuZCdgYCBlcnJvci4gT3RoZXJ3aXNlLCB0aGUgY29udGVudAogICAgICAgdHlwZSBpcyBndWVzc2VkIGJ5IGNhbGxpbmcgdGhlIDptZXRoOmBndWVzc190eXBlYCBtZXRob2QsIHdoaWNoIGluIHR1cm4KICAgICAgIHVzZXMgdGhlICpleHRlbnNpb25zX21hcCogdmFyaWFibGUuCkBAIC0zNzgsMyArNDAxLDkgQEAKIAogICAgTm90ZSB0aGF0IENHSSBzY3JpcHRzIHdpbGwgYmUgcnVuIHdpdGggVUlEIG9mIHVzZXIgbm9ib2R5LCBmb3Igc2VjdXJpdHkKICAgIHJlYXNvbnMuICBQcm9ibGVtcyB3aXRoIHRoZSBDR0kgc2NyaXB0IHdpbGwgYmUgdHJhbnNsYXRlZCB0byBlcnJvciA0MDMuCisKKzpjbGFzczpgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyYCBjYW4gYmUgZW5hYmxlZCBpbiB0aGUgY29tbWFuZCBsaW5lIGJ5IHBhc3NpbmcKK3RoZSBgYC0tY2dpYGAgb3B0aW9uLjo6CisKKyAgICAgICAgcHl0aG9uIC1tIGh0dHAuc2VydmVyIC0tY2dpIDgwMDAKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW1hcGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAppbmRleCAzZjQ1Yzk1Li5mZWZiMjg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdApAQCAtNjQsMTQgKzY0LDIxIEBACiBUaGVyZSdzIGFsc28gYSBzdWJjbGFzcyBmb3Igc2VjdXJlIGNvbm5lY3Rpb25zOgogCiAKLS4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSkKKy4uIGNsYXNzOjogSU1BUDRfU1NMKGhvc3Q9JycsIHBvcnQ9SU1BUDRfU1NMX1BPUlQsIGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgc3NsX2NvbnRleHQ9Tm9uZSkKIAogICAgVGhpcyBpcyBhIHN1YmNsYXNzIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YElNQVA0YCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMCiAgICBlbmNyeXB0ZWQgc29ja2V0ICh0byB1c2UgdGhpcyBjbGFzcyB5b3UgbmVlZCBhIHNvY2tldCBtb2R1bGUgdGhhdCB3YXMgY29tcGlsZWQKICAgIHdpdGggU1NMIHN1cHBvcnQpLiAgSWYgKmhvc3QqIGlzIG5vdCBzcGVjaWZpZWQsIGBgJydgYCAodGhlIGxvY2FsIGhvc3QpIGlzIHVzZWQuCiAgICBJZiAqcG9ydCogaXMgb21pdHRlZCwgdGhlIHN0YW5kYXJkIElNQVA0LW92ZXItU1NMIHBvcnQgKDk5MykgaXMgdXNlZC4gICprZXlmaWxlKgogICAgYW5kICpjZXJ0ZmlsZSogYXJlIGFsc28gb3B0aW9uYWwgLSB0aGV5IGNhbiBjb250YWluIGEgUEVNIGZvcm1hdHRlZCBwcml2YXRlIGtleQotICAgYW5kIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4KKyAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uICpzc2xfY29udGV4dCogcGFyYW1ldGVyIGlzIGEKKyAgIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdCB3aGljaCBhbGxvd3MgYnVuZGxpbmcgU1NMIGNvbmZpZ3VyYXRpb24KKyAgIG9wdGlvbnMsIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpCisgICBzdHJ1Y3R1cmUuIE5vdGUgdGhhdCB0aGUgKmtleWZpbGUqLypjZXJ0ZmlsZSogcGFyYW1ldGVycyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggKnNzbF9jb250ZXh0KiwKKyAgIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCBpcyB0aHJvd24gaWYgKmtleWZpbGUqLypjZXJ0ZmlsZSogaXMgcHJvdmlkZWQgYWxvbmcgd2l0aCAqc3NsX2NvbnRleHQqLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnNzbF9jb250ZXh0KiBwYXJhbWV0ZXIgYWRkZWQuCiAKIAogVGhlIHNlY29uZCBzdWJjbGFzcyBhbGxvd3MgZm9yIGNvbm5lY3Rpb25zIGNyZWF0ZWQgYnkgYSBjaGlsZCBwcm9jZXNzOgpAQCAtMTA2LDEzICsxMTMsMTUgQEAKIAogLi4gZnVuY3Rpb246OiBUaW1lMkludGVybmFsZGF0ZShkYXRlX3RpbWUpCiAKLSAgIENvbnZlcnQgKmRhdGVfdGltZSogdG8gYW4gSU1BUDQgYGBJTlRFUk5BTERBVEVgYCByZXByZXNlbnRhdGlvbi4gIFRoZQotICAgcmV0dXJuIHZhbHVlIGlzIGEgc3RyaW5nIGluIHRoZSBmb3JtOiBgYCJERC1NbW0tWVlZWSBISDpNTTpTUwotICAgK0hITU0iYGAgKGluY2x1ZGluZyBkb3VibGUtcXVvdGVzKS4gIFRoZSAqZGF0ZV90aW1lKiBhcmd1bWVudCBjYW4gYmUgYQotICAgbnVtYmVyIChpbnQgb3IgZmxvYXQpIHJlcHJlc2VudGluZyBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcyByZXR1cm5lZAotICAgYnkgOmZ1bmM6YHRpbWUudGltZWApLCBhIDktdHVwbGUgcmVwcmVzZW50aW5nIGxvY2FsIHRpbWUgKGFzIHJldHVybmVkIGJ5Ci0gICA6ZnVuYzpgdGltZS5sb2NhbHRpbWVgKSwgb3IgYSBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0IGNhc2UsIGl0Ci0gICBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgorICAgQ29udmVydCAqZGF0ZV90aW1lKiB0byBhbiBJTUFQNCBgYElOVEVSTkFMREFURWBgIHJlcHJlc2VudGF0aW9uLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIHN0cmluZyBpbiB0aGUgZm9ybTogYGAiREQtTW1tLVlZWVkgSEg6TU06U1MKKyAgICtISE1NImBgIChpbmNsdWRpbmcgZG91YmxlLXF1b3RlcykuICBUaGUgKmRhdGVfdGltZSogYXJndW1lbnQgY2FuCisgICBiZSBhIG51bWJlciAoaW50IG9yIGZsb2F0KSByZXByZXNlbnRpbmcgc2Vjb25kcyBzaW5jZSBlcG9jaCAoYXMKKyAgIHJldHVybmVkIGJ5IDpmdW5jOmB0aW1lLnRpbWVgKSwgYSA5LXR1cGxlIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lCisgICBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHRpbWUuc3RydWN0X3RpbWVgIChhcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YHRpbWUubG9jYWx0aW1lYCksIGFuIGF3YXJlIGluc3RhbmNlIG9mCisgICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCwgb3IgYSBkb3VibGUtcXVvdGVkIHN0cmluZy4gIEluIHRoZSBsYXN0CisgICBjYXNlLCBpdCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LgogCiBOb3RlIHRoYXQgSU1BUDQgbWVzc2FnZSBudW1iZXJzIGNoYW5nZSBhcyB0aGUgbWFpbGJveCBjaGFuZ2VzOyBpbiBwYXJ0aWN1bGFyLAogYWZ0ZXIgYW4gYGBFWFBVTkdFYGAgY29tbWFuZCBwZXJmb3JtcyBkZWxldGlvbnMgdGhlIHJlbWFpbmluZyBtZXNzYWdlcyBhcmUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcC5yc3QgYi9Eb2MvbGlicmFyeS9pbXAucnN0CmluZGV4IDEzNDViMjUuLjVjYWRkYTkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wLnJzdApAQCAtMzAsNiArMzAsOSBAQAogICAgOmNvbnN0OmBQWV9TT1VSQ0VgLCA6Y29uc3Q6YFBZX0NPTVBJTEVEYCwgb3IgOmNvbnN0OmBDX0VYVEVOU0lPTmAsIGRlc2NyaWJlZAogICAgYmVsb3cuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVzZSB0aGUgY29uc3RhbnRzIGRlZmluZWQgb24gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgaW5zdGVhZC4KKwogCiAuLiBmdW5jdGlvbjo6IGZpbmRfbW9kdWxlKG5hbWVbLCBwYXRoXSkKIApAQCAtNjksNiArNzIsOSBAQAogICAgdGhlbiB1c2UgOmZ1bmM6YGZpbmRfbW9kdWxlYCB3aXRoIHRoZSAqcGF0aCogYXJndW1lbnQgc2V0IHRvIGBgUC5fX3BhdGhfX2BgLgogICAgV2hlbiAqUCogaXRzZWxmIGhhcyBhIGRvdHRlZCBuYW1lLCBhcHBseSB0aGlzIHJlY2lwZSByZWN1cnNpdmVseS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVXNlIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIGluc3RlYWQuCisKIAogLi4gZnVuY3Rpb246OiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24pCiAKQEAgLTkwLDYgKzk2LDEwIEBACiAgICBpdCB3YXMgbm90IGBgTm9uZWBgLCBldmVuIHdoZW4gYW4gZXhjZXB0aW9uIGlzIHJhaXNlZC4gIFRoaXMgaXMgYmVzdCBkb25lCiAgICB1c2luZyBhIDprZXl3b3JkOmB0cnlgIC4uLiA6a2V5d29yZDpgZmluYWxseWAgc3RhdGVtZW50LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBVbm5lZWRlZCBhcyBsb2FkZXJzIHNob3VsZCBiZSB1c2VkIHRvIGxvYWQgbW9kdWxlcyBhbmQKKyAgICAgIDpmdW5jOmBmaW5kX21vZHVsZWAgaXMgZGVwcmVjYXRlZC4KKwogCiAuLiBmdW5jdGlvbjo6IG5ld19tb2R1bGUobmFtZSkKIApAQCAtOTcsMzcgKzEwNyw2IEBACiAgICBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKIAotLi4gZnVuY3Rpb246OiBsb2NrX2hlbGQoKQotCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGltcG9ydCBsb2NrIGlzIGN1cnJlbnRseSBoZWxkLCBlbHNlIGBgRmFsc2VgYC4gT24KLSAgIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIGFsd2F5cyByZXR1cm4gYGBGYWxzZWBgLgotCi0gICBPbiBwbGF0Zm9ybXMgd2l0aCB0aHJlYWRzLCBhIHRocmVhZCBleGVjdXRpbmcgYW4gaW1wb3J0IGhvbGRzIGFuIGludGVybmFsIGxvY2sKLSAgIHVudGlsIHRoZSBpbXBvcnQgaXMgY29tcGxldGUuIFRoaXMgbG9jayBibG9ja3Mgb3RoZXIgdGhyZWFkcyBmcm9tIGRvaW5nIGFuCi0gICBpbXBvcnQgdW50aWwgdGhlIG9yaWdpbmFsIGltcG9ydCBjb21wbGV0ZXMsIHdoaWNoIGluIHR1cm4gcHJldmVudHMgb3RoZXIgdGhyZWFkcwotICAgZnJvbSBzZWVpbmcgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0cyBjb25zdHJ1Y3RlZCBieSB0aGUgb3JpZ2luYWwgdGhyZWFkIHdoaWxlCi0gICBpbiB0aGUgcHJvY2VzcyBvZiBjb21wbGV0aW5nIGl0cyBpbXBvcnQgKGFuZCB0aGUgaW1wb3J0cywgaWYgYW55LCB0cmlnZ2VyZWQgYnkKLSAgIHRoYXQpLgotCi0KLS4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKLQotICAgQWNxdWlyZSB0aGUgaW50ZXJwcmV0ZXIncyBpbXBvcnQgbG9jayBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkLiAgVGhpcyBsb2NrIHNob3VsZAotICAgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbiBpbXBvcnRpbmcgbW9kdWxlcy4KLQotICAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgdGhlIGltcG9ydCBsb2NrLCB0aGUgc2FtZSB0aHJlYWQgbWF5IGFjcXVpcmUgaXQKLSAgIGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZSB0aHJlYWQgbXVzdCByZWxlYXNlIGl0IG9uY2UgZm9yIGVhY2ggdGltZSBpdCBoYXMKLSAgIGFjcXVpcmVkIGl0LgotCi0gICBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLQotCi0uLiBmdW5jdGlvbjo6IHJlbGVhc2VfbG9jaygpCi0KLSAgIFJlbGVhc2UgdGhlIGludGVycHJldGVyJ3MgaW1wb3J0IGxvY2suIE9uIHBsYXRmb3JtcyB3aXRob3V0IHRocmVhZHMsIHRoaXMKLSAgIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4KLQotCiAuLiBmdW5jdGlvbjo6IHJlbG9hZChtb2R1bGUpCiAKICAgIFJlbG9hZCBhIHByZXZpb3VzbHkgaW1wb3J0ZWQgKm1vZHVsZSouICBUaGUgYXJndW1lbnQgbXVzdCBiZSBhIG1vZHVsZSBvYmplY3QsIHNvCkBAIC0yMDEsMTQgKzE4MCwxOSBAQAogICAgc291cmNlICpwYXRoKi4gIEZvciBleGFtcGxlLCBpZiAqcGF0aCogaXMgYGAvZm9vL2Jhci9iYXoucHlgYCB0aGUgcmV0dXJuCiAgICB2YWx1ZSB3b3VsZCBiZSBgYC9mb28vYmFyL19fcHljYWNoZV9fL2Jhei5jcHl0aG9uLTMyLnB5Y2BgIGZvciBQeXRob24gMy4yLgogICAgVGhlIGBgY3B5dGhvbi0zMmBgIHN0cmluZyBjb21lcyBmcm9tIHRoZSBjdXJyZW50IG1hZ2ljIHRhZyAoc2VlCi0gICA6ZnVuYzpgZ2V0X3RhZ2ApLiAgVGhlIHJldHVybmVkIHBhdGggd2lsbCBlbmQgaW4gYGAucHljYGAgd2hlbgotICAgYGBfX2RlYnVnX19gYCBpcyBUcnVlIG9yIGBgLnB5b2BgIGZvciBhbiBvcHRpbWl6ZWQgUHl0aG9uCisgICA6ZnVuYzpgZ2V0X3RhZ2A7IGlmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCB0aGVuCisgICA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZCkuICBUaGUgcmV0dXJuZWQgcGF0aCB3aWxsIGVuZCBpbgorICAgYGAucHljYGAgd2hlbiBgYF9fZGVidWdfX2BgIGlzIFRydWUgb3IgYGAucHlvYGAgZm9yIGFuIG9wdGltaXplZCBQeXRob24KICAgIChpLmUuIGBgX19kZWJ1Z19fYGAgaXMgRmFsc2UpLiAgQnkgcGFzc2luZyBpbiBUcnVlIG9yIEZhbHNlIGZvcgogICAgKmRlYnVnX292ZXJyaWRlKiB5b3UgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0ncyB2YWx1ZSBmb3IgYGBfX2RlYnVnX19gYCBmb3IKICAgIGV4dGVuc2lvbiBzZWxlY3Rpb24uCiAKICAgICpwYXRoKiBuZWVkIG5vdCBleGlzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIElmIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBgYE5vbmVgYCwgdGhlbgorICAgICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgorCiAKIC4uIGZ1bmN0aW9uOjogc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIApAQCAtMjE2LDcgKzIwMCwxMyBAQAogICAgZmlsZSBwYXRoLiAgRm9yIGV4YW1wbGUsIGlmICpwYXRoKiBpcwogICAgYGAvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXouY3B5dGhvbi0zMi5weWNgYCB0aGUgcmV0dXJuZWQgcGF0aCB3b3VsZCBiZQogICAgYGAvZm9vL2Jhci9iYXoucHlgYC4gICpwYXRoKiBuZWVkIG5vdCBleGlzdCwgaG93ZXZlciBpZiBpdCBkb2VzIG5vdCBjb25mb3JtCi0gICB0byA6cGVwOmAzMTQ3YCBmb3JtYXQsIGEgYGBWYWx1ZUVycm9yYGAgaXMgcmFpc2VkLgorICAgdG8gOnBlcDpgMzE0N2AgZm9ybWF0LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gSWYKKyAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZCwKKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdoZW4KKyAgICAgIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnYCBpcyBub3QgZGVmaW5lZC4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF90YWcoKQpAQCAtMjI0LDYgKzIxNCw2NCBAQAogICAgUmV0dXJuIHRoZSA6cGVwOmAzMTQ3YCBtYWdpYyB0YWcgc3RyaW5nIG1hdGNoaW5nIHRoaXMgdmVyc2lvbiBvZiBQeXRob24ncwogICAgbWFnaWMgbnVtYmVyLCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgZ2V0X21hZ2ljYC4KIAorICAgLi4gbm90ZTo6CisgICAgICBZb3UgbWF5IHVzZSA6YXR0cjpgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AgZGlyZWN0bHkgc3RhcnRpbmcKKyAgICAgIGluIFB5dGhvbiAzLjMuCisKKworVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaGVscCBpbnRlcmFjdCB3aXRoIHRoZSBpbXBvcnQgc3lzdGVtJ3MgaW50ZXJuYWwKK2xvY2tpbmcgbWVjaGFuaXNtLiAgTG9ja2luZyBzZW1hbnRpY3Mgb2YgaW1wb3J0cyBhcmUgYW4gaW1wbGVtZW50YXRpb24KK2RldGFpbCB3aGljaCBtYXkgdmFyeSBmcm9tIHJlbGVhc2UgdG8gcmVsZWFzZS4gIEhvd2V2ZXIsIFB5dGhvbiBlbnN1cmVzCit0aGF0IGNpcmN1bGFyIGltcG9ydHMgd29yayB3aXRob3V0IGFueSBkZWFkbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiBsb2NrX2hlbGQoKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBjdXJyZW50bHkgaGVsZCwgZWxzZQorICAgYGBGYWxzZWBgLiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCBhbHdheXMgcmV0dXJuIGBgRmFsc2VgYC4KKworICAgT24gcGxhdGZvcm1zIHdpdGggdGhyZWFkcywgYSB0aHJlYWQgZXhlY3V0aW5nIGFuIGltcG9ydCBmaXJzdCBob2xkcyBhCisgICBnbG9iYWwgaW1wb3J0IGxvY2ssIHRoZW4gc2V0cyB1cCBhIHBlci1tb2R1bGUgbG9jayBmb3IgdGhlIHJlc3Qgb2YgdGhlCisgICBpbXBvcnQuICBUaGlzIGJsb2NrcyBvdGhlciB0aHJlYWRzIGZyb20gaW1wb3J0aW5nIHRoZSBzYW1lIG1vZHVsZSB1bnRpbAorICAgdGhlIG9yaWdpbmFsIGltcG9ydCBjb21wbGV0ZXMsIHByZXZlbnRpbmcgb3RoZXIgdGhyZWFkcyBmcm9tIHNlZWluZworICAgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0cyBjb25zdHJ1Y3RlZCBieSB0aGUgb3JpZ2luYWwgdGhyZWFkLiAgQW4KKyAgIGV4Y2VwdGlvbiBpcyBtYWRlIGZvciBjaXJjdWxhciBpbXBvcnRzLCB3aGljaCBieSBjb25zdHJ1Y3Rpb24gaGF2ZSB0bworICAgZXhwb3NlIGFuIGluY29tcGxldGUgbW9kdWxlIG9iamVjdCBhdCBzb21lIHBvaW50LgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGxvY2tpbmcgc2NoZW1lIGhhcyBjaGFuZ2VkIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yCisgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKKyAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgorCisKKy4uIGZ1bmN0aW9uOjogYWNxdWlyZV9sb2NrKCkKKworICAgQWNxdWlyZSB0aGUgaW50ZXJwcmV0ZXIncyBnbG9iYWwgaW1wb3J0IGxvY2sgZm9yIHRoZSBjdXJyZW50IHRocmVhZC4KKyAgIFRoaXMgbG9jayBzaG91bGQgYmUgdXNlZCBieSBpbXBvcnQgaG9va3MgdG8gZW5zdXJlIHRocmVhZC1zYWZldHkgd2hlbgorICAgaW1wb3J0aW5nIG1vZHVsZXMuCisKKyAgIE9uY2UgYSB0aHJlYWQgaGFzIGFjcXVpcmVkIHRoZSBpbXBvcnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0CisgICBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQgaGFzCisgICBhY3F1aXJlZCBpdC4KKworICAgT24gcGxhdGZvcm1zIHdpdGhvdXQgdGhyZWFkcywgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBUaGUgbG9ja2luZyBzY2hlbWUgaGFzIGNoYW5nZWQgdG8gcGVyLW1vZHVsZSBsb2NrcyBmb3IKKyAgIHRoZSBtb3N0IHBhcnQuICBBIGdsb2JhbCBpbXBvcnQgbG9jayBpcyBrZXB0IGZvciBzb21lIGNyaXRpY2FsIHRhc2tzLAorICAgc3VjaCBhcyBpbml0aWFsaXppbmcgdGhlIHBlci1tb2R1bGUgbG9ja3MuCisKKworLi4gZnVuY3Rpb246OiByZWxlYXNlX2xvY2soKQorCisgICBSZWxlYXNlIHRoZSBpbnRlcnByZXRlcidzIGdsb2JhbCBpbXBvcnQgbG9jay4gT24gcGxhdGZvcm1zIHdpdGhvdXQKKyAgIHRocmVhZHMsIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgVGhlIGxvY2tpbmcgc2NoZW1lIGhhcyBjaGFuZ2VkIHRvIHBlci1tb2R1bGUgbG9ja3MgZm9yCisgICB0aGUgbW9zdCBwYXJ0LiAgQSBnbG9iYWwgaW1wb3J0IGxvY2sgaXMga2VwdCBmb3Igc29tZSBjcml0aWNhbCB0YXNrcywKKyAgIHN1Y2ggYXMgaW5pdGlhbGl6aW5nIHRoZSBwZXItbW9kdWxlIGxvY2tzLgorCiAKIFRoZSBmb2xsb3dpbmcgY29uc3RhbnRzIHdpdGggaW50ZWdlciB2YWx1ZXMsIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUsIGFyZSB1c2VkCiB0byBpbmRpY2F0ZSB0aGUgc2VhcmNoIHJlc3VsdCBvZiA6ZnVuYzpgZmluZF9tb2R1bGVgLgpAQCAtMjMzLDMxICsyODEsNDMgQEAKIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgYSBzb3VyY2UgZmlsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQWV9DT01QSUxFRAogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGNvbXBpbGVkIGNvZGUgb2JqZWN0IGZpbGUuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogQ19FWFRFTlNJT04KIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgZHluYW1pY2FsbHkgbG9hZGFibGUgc2hhcmVkIGxpYnJhcnkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogUEtHX0RJUkVDVE9SWQogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIHBhY2thZ2UgZGlyZWN0b3J5LgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZGF0YTo6IENfQlVJTFRJTgogCiAgICBUaGUgbW9kdWxlIHdhcyBmb3VuZCBhcyBhIGJ1aWx0LWluIG1vZHVsZS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCiAKIC4uIGRhdGE6OiBQWV9GUk9aRU4KIAogICAgVGhlIG1vZHVsZSB3YXMgZm91bmQgYXMgYSBmcm96ZW4gbW9kdWxlLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gY2xhc3M6OiBOdWxsSW1wb3J0ZXIocGF0aF9zdHJpbmcpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CmluZGV4IDE2NDkwNjMuLjY4MWYxZDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdApAQCAtNjMsNyArNjMsNyBAQAogRnVuY3Rpb25zCiAtLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9e30sIGxvY2Fscz17fSwgZnJvbWxpc3Q9bGlzdCgpLCBsZXZlbD0wKQorLi4gZnVuY3Rpb246OiBfX2ltcG9ydF9fKG5hbWUsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUsIGZyb21saXN0PSgpLCBsZXZlbD0wKQogCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbi4KIApAQCAtODYsNiArODYsMzAgQEAKICAgICB0aGF0IHdhcyBpbXBvcnRlZCAoZS5nLiBgYHBrZy5tb2RgYCksIHdoaWxlIDpmdW5jOmBfX2ltcG9ydF9fYCByZXR1cm5zIHRoZQogICAgIHRvcC1sZXZlbCBwYWNrYWdlIG9yIG1vZHVsZSAoZS5nLiBgYHBrZ2BgKS4KIAorLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihuYW1lLCBwYXRoPU5vbmUpCisKKyAgIEZpbmQgdGhlIGxvYWRlciBmb3IgYSBtb2R1bGUsIG9wdGlvbmFsbHkgd2l0aGluIHRoZSBzcGVjaWZpZWQgKnBhdGgqLiBJZiB0aGUKKyAgIG1vZHVsZSBpcyBpbiA6YXR0cjpgc3lzLm1vZHVsZXNgLCB0aGVuIGBgc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfX2BgIGlzCisgICByZXR1cm5lZCAodW5sZXNzIHRoZSBsb2FkZXIgd291bGQgYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCkuIE90aGVyd2lzZSBhIHNlYXJjaCB1c2luZyA6YXR0cjpgc3lzLm1ldGFfcGF0aGAKKyAgIGlzIGRvbmUuIGBgTm9uZWBgIGlzIHJldHVybmVkIGlmIG5vIGxvYWRlciBpcyBmb3VuZC4KKworICAgQSBkb3R0ZWQgbmFtZSBkb2VzIG5vdCBoYXZlIGl0cyBwYXJlbnQncyBpbXBsaWNpdGx5IGltcG9ydGVkLiBJZiB0aGF0IGlzCisgICBkZXNpcmVkIChhbHRob3VnaCBub3QgbmVzc2FyaWx5IHJlcXVpcmVkIHRvIGZpbmQgdGhlIGxvYWRlciwgaXQgd2lsbCBtb3N0CisgICBsaWtlbHkgYmUgbmVlZGVkIGlmIHRoZSBsb2FkZXIgYWN0dWFsbHkgaXMgdXNlZCB0byBsb2FkIHRoZSBtb2R1bGUpLCB0aGVuCisgICB5b3Ugd2lsbCBoYXZlIHRvIGltcG9ydCB0aGUgcGFja2FnZXMgY29udGFpbmluZyB0aGUgbW9kdWxlIHByaW9yIHRvIGNhbGxpbmcKKyAgIHRoaXMgZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICBJbnZhbGlkYXRlIHRoZSBpbnRlcm5hbCBjYWNoZXMgb2YgZmluZGVycyBzdG9yZWQgYXQKKyAgIDpkYXRhOmBzeXMubWV0YV9wYXRoYC4gSWYgYSBmaW5kZXIgaW1wbGVtZW50cyBgYGludmFsaWRhdGVfY2FjaGVzKClgYCB0aGVuIGl0CisgICB3aWxsIGJlIGNhbGxlZCB0byBwZXJmb3JtIHRoZSBpbnZhbGlkYXRpb24uICBUaGlzIGZ1bmN0aW9uIG1heSBiZSBuZWVkZWQgaWYKKyAgIHNvbWUgbW9kdWxlcyBhcmUgaW5zdGFsbGVkIHdoaWxlIHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5nIGFuZCB5b3UgZXhwZWN0IHRoZQorICAgcHJvZ3JhbSB0byBub3RpY2UgdGhlIGNoYW5nZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIDptb2Q6YGltcG9ydGxpYi5hYmNgIC0tIEFic3RyYWN0IGJhc2UgY2xhc3NlcyByZWxhdGVkIHRvIGltcG9ydAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05NywxOSArMTIxLDkwIEBACiB1c2VkIGJ5IDprZXl3b3JkOmBpbXBvcnRgLiBTb21lIHN1YmNsYXNzZXMgb2YgdGhlIGNvcmUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzCiBhcmUgYWxzbyBwcm92aWRlZCB0byBoZWxwIGluIGltcGxlbWVudGluZyB0aGUgY29yZSBBQkNzLgogCitBQkMgaGllcmFyY2h5OjoKKworICAgIG9iamVjdAorICAgICArLS0gRmluZGVyIChkZXByZWNhdGVkKQorICAgICB8ICAgICstLSBNZXRhUGF0aEZpbmRlcgorICAgICB8ICAgICstLSBQYXRoRW50cnlGaW5kZXIKKyAgICAgKy0tIExvYWRlcgorICAgICAgICAgICstLSBSZXNvdXJjZUxvYWRlciAtLS0tLS0tLSsKKyAgICAgICAgICArLS0gSW5zcGVjdExvYWRlciAgICAgICAgICB8CisgICAgICAgICAgICAgICArLS0gRXhlY3V0aW9uTG9hZGVyIC0tKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICstLSBGaWxlTG9hZGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFNvdXJjZUxvYWRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5TG9hZGVyIChkZXByZWNhdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tIFB5UHljTG9hZGVyIChkZXByZWNhdGVkKQorCiAKIC4uIGNsYXNzOjogRmluZGVyCiAKLSAgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBmaW5kZXJgLgotICAgIFNlZSA6cGVwOmAzMDJgIGZvciB0aGUgZXhhY3QgZGVmaW5pdGlvbiBmb3IgYSBmaW5kZXIuCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBmaW5kZXJgLgogCi0gICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGg9Tm9uZSkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFVzZSA6Y2xhc3M6YE1ldGFQYXRoRmluZGVyYCBvciA6Y2xhc3M6YFBhdGhFbnRyeUZpbmRlcmAgaW5zdGVhZC4KIAotICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAotICAgICAgICBtb2R1bGUuIElmIHRoZSA6dGVybTpgZmluZGVyYCBpcyBmb3VuZCBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYW5kIHRoZQotICAgICAgICBtb2R1bGUgdG8gYmUgc2VhcmNoZWQgZm9yIGlzIGEgc3VicGFja2FnZSBvciBtb2R1bGUgdGhlbiAqcGF0aCogd2lsbAotICAgICAgICBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZSBwYXJlbnQgcGFja2FnZS4gSWYgYSBsb2FkZXIKLSAgICAgICAgY2Fubm90IGJlIGZvdW5kLCBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIG1ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisKKyAgICAgIEFuIGFic3RhY3QgbWV0aG9kIGZvciBmaW5kaW5nIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgIG1vZHVsZS4gIE9yaWdpbmFsbHkgc3BlY2lmaWVkIGluIDpwZXA6YDMwMmAsIHRoaXMgbWV0aG9kIHdhcyBtZWFudAorICAgICAgZm9yIHVzZSBpbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgYW5kIGluIHRoZSBwYXRoLWJhc2VkIGltcG9ydCBzdWJzeXN0ZW0uCisKKworLi4gY2xhc3M6OiBNZXRhUGF0aEZpbmRlcgorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHJlcHJlc2VudGluZyBhIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYC4gRm9yCisgICBjb21wYXRpYmlsaXR5LCB0aGlzIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBGaW5kZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICAgIEFuIGFic3RyYWN0IG1ldGhvZCBmb3IgZmluZGluZyBhIDp0ZXJtOmBsb2FkZXJgIGZvciB0aGUgc3BlY2lmaWVkCisgICAgICBtb2R1bGUuICBJZiB0aGlzIGlzIGEgdG9wLWxldmVsIGltcG9ydCwgKnBhdGgqIHdpbGwgYmUgYGBOb25lYGAuCisgICAgICBPdGhlcndpc2UsIHRoaXMgaXMgYSBzZWFyY2ggZm9yIGEgc3VicGFja2FnZSBvciBtb2R1bGUgYW5kICpwYXRoKgorICAgICAgd2lsbCBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZSBwYXJlbnQKKyAgICAgIHBhY2thZ2UuIElmIGEgbG9hZGVyIGNhbm5vdCBiZSBmb3VuZCwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQW4gb3B0aW9uYWwgbWV0aG9kIHdoaWNoLCB3aGVuIGNhbGxlZCwgc2hvdWxkIGludmFsaWRhdGUgYW55IGludGVybmFsCisgICAgICBjYWNoZSB1c2VkIGJ5IHRoZSBmaW5kZXIuIFVzZWQgYnkgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AKKyAgICAgIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBjYWNoZXMgb2YgYWxsIGZpbmRlcnMgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLgorCisKKy4uIGNsYXNzOjogUGF0aEVudHJ5RmluZGVyCisKKyAgIEFuIGFic3RyYWN0IGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gIFRob3VnaAorICAgaXQgYmVhcnMgc29tZSBzaW1pbGFyaXRpZXMgdG8gOmNsYXNzOmBNZXRhUGF0aEZpbmRlcmAsIGBgUGF0aEVudHJ5RmluZGVyYGAKKyAgIGlzIG1lYW50IGZvciB1c2Ugb25seSB3aXRoaW4gdGhlIHBhdGgtYmFzZWQgaW1wb3J0IHN1YnN5c3RlbSBwcm92aWRlZAorICAgYnkgOmNsYXNzOmBQYXRoRmluZGVyYC4gVGhpcyBBQkMgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEZpbmRlcmAgZm9yCisgICBjb21wYXRpYmlsaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogZmluZF9sb2FkZXIoZnVsbG5hbWUpOgorCisgICAgICBBbiBhYnN0cmFjdCBtZXRob2QgZm9yIGZpbmRpbmcgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIHNwZWNpZmllZAorICAgICAgbW9kdWxlLiAgUmV0dXJucyBhIDItdHVwbGUgb2YgYGAobG9hZGVyLCBwb3J0aW9uKWBgIHdoZXJlIGBgcG9ydGlvbmBgCisgICAgICBpcyBhIHNlcXVlbmNlIG9mIGZpbGUgc3lzdGVtIGxvY2F0aW9ucyBjb250cmlidXRpbmcgdG8gcGFydCBvZiBhIG5hbWVzcGFjZQorICAgICAgcGFja2FnZS4gVGhlIGxvYWRlciBtYXkgYmUgYGBOb25lYGAgd2hpbGUgc3BlY2lmeWluZyBgYHBvcnRpb25gYCB0bworICAgICAgc2lnbmlmeSB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSBsb2NhdGlvbnMgdG8gYSBuYW1lc3BhY2UKKyAgICAgIHBhY2thZ2UuIEFuIGVtcHR5IGxpc3QgY2FuIGJlIHVzZWQgZm9yIGBgcG9ydGlvbmBgIHRvIHNpZ25pZnkgdGhlIGxvYWRlcgorICAgICAgaXMgbm90IHBhcnQgb2YgYSBwYWNrYWdlLiBJZiBgYGxvYWRlcmBgIGlzIGBgTm9uZWBgIGFuZCBgYHBvcnRpb25gYCBpcworICAgICAgdGhlIGVtcHR5IGxpc3QgdGhlbiBubyBsb2FkZXIgb3IgbG9jYXRpb24gZm9yIGEgbmFtZXNwYWNlIHBhY2thZ2Ugd2VyZQorICAgICAgZm91bmQgKGkuZS4gZmFpbHVyZSB0byBmaW5kIGFueXRoaW5nIGZvciB0aGUgbW9kdWxlKS4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpOgorCisgICAgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBGaW5kZXIuZmluZF9tb2R1bGVgIHdoaWNoIGlzCisgICAgICBlcXVpdmFsZW50IHRvIGBgc2VsZi5maW5kX2xvYWRlcihmdWxsbmFtZSlbMF1gYC4KKworICAgLi4gbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICBBbiBvcHRpb25hbCBtZXRob2Qgd2hpY2gsIHdoZW4gY2FsbGVkLCBzaG91bGQgaW52YWxpZGF0ZSBhbnkgaW50ZXJuYWwKKyAgICAgIGNhY2hlIHVzZWQgYnkgdGhlIGZpbmRlci4gVXNlZCBieSA6bWV0aDpgUGF0aEZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2AKKyAgICAgIHdoZW4gaW52YWxpZGF0aW5nIHRoZSBjYWNoZXMgb2YgYWxsIGNhY2hlZCBmaW5kZXJzLgogCiAKIC4uIGNsYXNzOjogTG9hZGVyCkBAIC0xNTksNiArMjU0LDEzIEBACiAgICAgICAgICAgICAoVGhpcyBpcyBub3Qgc2V0IGJ5IHRoZSBidWlsdC1pbiBpbXBvcnQgbWFjaGluZXJ5LAogICAgICAgICAgICAgYnV0IGl0IHNob3VsZCBiZSBzZXQgd2hlbmV2ZXIgYSA6dGVybTpgbG9hZGVyYCBpcyB1c2VkLikKIAorICAgIC4uIG1ldGhvZDo6IG1vZHVsZV9yZXByKG1vZHVsZSkKKworICAgICAgICBBbiBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2hlbiBpbXBsZW1lbnRlZCBjYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZQorICAgICAgICBnaXZlbiBtb2R1bGUncyByZXByLCBhcyBhIHN0cmluZy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6IDMuMworCiAKIC4uIGNsYXNzOjogUmVzb3VyY2VMb2FkZXIKIApAQCAtMjI0LDYgKzMyNiwzOCBAQAogICAgICAgICBtb2R1bGUuCiAKIAorLi4gY2xhc3M6OiBGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHdoaWNoIGluaGVyaXRzIGZyb20gOmNsYXNzOmBSZXNvdXJjZUxvYWRlcmAgYW5kCisgICA6Y2xhc3M6YEV4ZWN1dGlvbkxvYWRlcmAsIHByb3ZpZGluZyBjb25jcmVhdGUgaW1wbGVtZW50YXRpb25zIG9mCisgICA6bWV0aDpgUmVzb3VyY2VMb2FkZXIuZ2V0X2RhdGFgIGFuZCA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWAuCisKKyAgIFRoZSAqZnVsbG5hbWUqIGFyZ3VtZW50IGlzIGEgZnVsbHkgcmVzb2x2ZWQgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBsb2FkZXIgaXMKKyAgIHRvIGhhbmRsZS4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZmlsZSBmb3IgdGhlIG1vZHVsZS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIGNhbiBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgUGF0aCB0byB0aGUgZmlsZSBvZiB0aGUgbW9kdWxlLgorCisgICAuLiBtZXRob2Q6OiBsb2FkX21vZHVsZShmdWxsbmFtZSkKKworICAgICAgQ2FsbHMgc3VwZXIncyBgYGxvYWRfbW9kdWxlKClgYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2RhdGEocGF0aCkKKworICAgICAgUmV0dXJucyB0aGUgb3BlbiwgYmluYXJ5IGZpbGUgZm9yICpwYXRoKi4KKworCiAuLiBjbGFzczo6IFNvdXJjZUxvYWRlcgogCiAgICAgQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wbGVtZW50aW5nIHNvdXJjZSAoYW5kIG9wdGlvbmFsbHkgYnl0ZWNvZGUpCkBAIC0yNDMsMTIgKzM3NywzMSBAQAogICAgIG9wdGltaXphdGlvbiB0byBzcGVlZCB1cCBsb2FkaW5nIGJ5IHJlbW92aW5nIHRoZSBwYXJzaW5nIHN0ZXAgb2YgUHl0aG9uJ3MKICAgICBjb21waWxlciwgYW5kIHNvIG5vIGJ5dGVjb2RlLXNwZWNpZmljIEFQSSBpcyBleHBvc2VkLgogCi0gICAgLi4gbWV0aG9kOjogcGF0aF9tdGltZShzZWxmLCBwYXRoKQorICAgIC4uIG1ldGhvZDo6IHBhdGhfc3RhdHMocGF0aCkKKworICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIDpjbGFzczpgZGljdGAgY29udGFpbmluZworICAgICAgICBtZXRhZGF0YSBhYm91dCB0aGUgc3BlY2lmZWQgcGF0aC4gIFN1cHBvcnRlZCBkaWN0aW9uYXJ5IGtleXMgYXJlOgorCisgICAgICAgIC0gYGAnbXRpbWUnYGAgKG1hbmRhdG9yeSk6IGFuIGludGVnZXIgb3IgZmxvYXRpbmctcG9pbnQgbnVtYmVyCisgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgc291cmNlIGNvZGU7CisgICAgICAgIC0gYGAnc2l6ZSdgYCAob3B0aW9uYWwpOiB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgc291cmNlIGNvZGUuCisKKyAgICAgICAgQW55IG90aGVyIGtleXMgaW4gdGhlIGRpY3Rpb25hcnkgYXJlIGlnbm9yZWQsIHRvIGFsbG93IGZvciBmdXR1cmUKKyAgICAgICAgZXh0ZW5zaW9ucy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgIC4uIG1ldGhvZDo6IHBhdGhfbXRpbWUocGF0aCkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggcmV0dXJucyB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZQogICAgICAgICBzcGVjaWZpZWQgcGF0aC4KIAotICAgIC4uIG1ldGhvZDo6IHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpCisgICAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgICAgICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgOm1ldGg6YHBhdGhfc3RhdHNgLiAgWW91IGRvbid0CisgICAgICAgICAgIGhhdmUgdG8gaW1wbGVtZW50IGl0LCBidXQgaXQgaXMgc3RpbGwgYXZhaWxhYmxlIGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgIHB1cnBvc2VzLgorCisgICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKIAogICAgICAgICBPcHRpb25hbCBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd3JpdGVzIHRoZSBzcGVjaWZpZWQgYnl0ZXMgdG8gYSBmaWxlCiAgICAgICAgIHBhdGguIEFueSBpbnRlcm1lZGlhdGUgZGlyZWN0b3JpZXMgd2hpY2ggZG8gbm90IGV4aXN0IGFyZSB0byBiZSBjcmVhdGVkCkBAIC0yNTcsMjMgKzQxMCwyNSBAQAogICAgICAgICBXaGVuIHdyaXRpbmcgdG8gdGhlIHBhdGggZmFpbHMgYmVjYXVzZSB0aGUgcGF0aCBpcyByZWFkLW9ubHkKICAgICAgICAgKDphdHRyOmBlcnJuby5FQUNDRVNgKSwgZG8gbm90IHByb3BhZ2F0ZSB0aGUgZXhjZXB0aW9uLgogCi0gICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X2NvZGVgLgogCi0gICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpCisgICAgLi4gbWV0aG9kOjogbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YExvYWRlci5sb2FkX21vZHVsZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGdldF9zb3VyY2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuZ2V0X3NvdXJjZWAuCiAKLSAgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKQorICAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCiAKICAgICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YEluc3BlY3RMb2FkZXIuaXNfcGFja2FnZWAuIEEgbW9kdWxlCi0gICAgICAgIGlzIGRldGVybWluZWQgdG8gYmUgYSBwYWNrYWdlIGlmIGl0cyBmaWxlIHBhdGggaXMgYSBmaWxlIG5hbWVkCi0gICAgICAgIGBgX19pbml0X19gYCB3aGVuIHRoZSBmaWxlIGV4dGVuc2lvbiBpcyByZW1vdmVkLgorICAgICAgICBpcyBkZXRlcm1pbmVkIHRvIGJlIGEgcGFja2FnZSBpZiBpdHMgZmlsZSBwYXRoIChhcyBwcm92aWRlZCBieQorICAgICAgICA6bWV0aDpgRXhlY3V0aW9uTG9hZGVyLmdldF9maWxlbmFtZWApIGlzIGEgZmlsZSBuYW1lZAorICAgICAgICBgYF9faW5pdF9fYGAgd2hlbiB0aGUgZmlsZSBleHRlbnNpb24gaXMgcmVtb3ZlZCAqKmFuZCoqIHRoZSBtb2R1bGUgbmFtZQorICAgICAgICBpdHNlbGYgZG9lcyBub3QgZW5kIGluIGBgX19pbml0X19gYC4KIAogCiAuLiBjbGFzczo6IFB5TG9hZGVyCkBAIC0zNzQsNiArNTI5LDEwIEBACiAgICAgICAgIDpjbGFzczpgUHlMb2FkZXJgLiBEbyBub3RlIHRoYXQgdGhpcyBzb2x1dGlvbiB3aWxsIG5vdCBzdXBwb3J0CiAgICAgICAgIHNvdXJjZWxlc3MvYnl0ZWNvZGUtb25seSBsb2FkaW5nOyBvbmx5IHNvdXJjZSAqYW5kKiBieXRlY29kZSBsb2FkaW5nLgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBVcGRhdGVkIHRvIHBhcnNlIChidXQgbm90IHVzZSkgdGhlIG5ldyBzb3VyY2Ugc2l6ZSBmaWVsZCBpbiBieXRlY29kZQorICAgICAgIGZpbGVzIHdoZW4gcmVhZGluZyBhbmQgdG8gd3JpdGUgb3V0IHRoZSBmaWVsZCBwcm9wZXJseSB3aGVuIHdyaXRpbmcuCisKICAgICAuLiBtZXRob2Q6OiBzb3VyY2VfbXRpbWUoZnVsbG5hbWUpCiAKICAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHdoaWNoIHJldHVybnMgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgc291cmNlCkBAIC00MTcsMTIgKzU3Niw1OSBAQAogVGhpcyBtb2R1bGUgY29udGFpbnMgdGhlIHZhcmlvdXMgb2JqZWN0cyB0aGF0IGhlbHAgOmtleXdvcmQ6YGltcG9ydGAKIGZpbmQgYW5kIGxvYWQgbW9kdWxlcy4KIAorLi4gYXR0cmlidXRlOjogU09VUkNFX1NVRkZJWEVTCisKKyAgIEEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgcmVjb2duaXplZCBmaWxlIHN1ZmZpeGVzIGZvciBzb3VyY2UKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBERUJVR19CWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIGZpbGUgc3VmZml4ZXMgZm9yIG5vbi1vcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBmaWxlIHN1ZmZpeGVzIGZvciBvcHRpbWl6ZWQgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBCWVRFQ09ERV9TVUZGSVhFUworCisgICBBIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHJlY29nbml6ZWQgZmlsZSBzdWZmaXhlcyBmb3IgYnl0ZWNvZGUKKyAgIG1vZHVsZXMuIFNldCB0byBlaXRoZXIgOmF0dHI6YERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTYCBvcgorICAgOmF0dHI6YE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU2AgYmFzZWQgb24gd2hldGhlciBgYF9fZGVidWdfX2BgIGlzIHRydWUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBhdHRyaWJ1dGU6OiBFWFRFTlNJT05fU1VGRklYRVMKKworICAgQSBsaXN0IG9mIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSByZWNvZ25pemVkIGZpbGUgc3VmZml4ZXMgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogYWxsX3N1ZmZpeGVzKCkKKworICAgUmV0dXJucyBhIGNvbWJpbmVkIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgYWxsIGZpbGUgc3VmZml4ZXMgZm9yCisgICBtb2R1bGVzIHJlY29nbml6ZWQgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkuIFRoaXMgaXMgYQorICAgaGVscGVyIGZvciBjb2RlIHdoaWNoIHNpbXBseSBuZWVkcyB0byBrbm93IGlmIGEgZmlsZXN5c3RlbSBwYXRoCisgICBwb3RlbnRpYWxseSByZWZlcnMgdG8gYSBtb2R1bGUgd2l0aG91dCBuZWVkaW5nIGFueSBkZXRhaWxzIG9uIHRoZSBraW5kCisgICBvZiBtb2R1bGUgKGZvciBleGFtcGxlLCA6ZnVuYzpgaW5zcGVjdC5nZXRtb2R1bGVuYW1lYCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gY2xhc3M6OiBCdWlsdGluSW1wb3J0ZXIKIAogICAgIEFuIDp0ZXJtOmBpbXBvcnRlcmAgZm9yIGJ1aWx0LWluIG1vZHVsZXMuIEFsbCBrbm93biBidWlsdC1pbiBtb2R1bGVzIGFyZQogICAgIGxpc3RlZCBpbiA6ZGF0YTpgc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzYC4gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZQotICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaW5kZXJgIGFuZCA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAKLSAgICBBQkNzLgorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgYW5kCisgICAgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgIEFCQ3MuCiAKICAgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCiAgICAgaW5zdGFudGlhdGlvbi4KQEAgLTQzMSw0OCArNjM3LDIyMyBAQAogLi4gY2xhc3M6OiBGcm96ZW5JbXBvcnRlcgogCiAgICAgQW4gOnRlcm06YGltcG9ydGVyYCBmb3IgZnJvemVuIG1vZHVsZXMuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBhbmQgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkluc3BlY3RMb2FkZXJgCi0gICAgQUJDcy4KKyAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIGFuZAorICAgIDpjbGFzczpgaW1wb3J0bGliLmFiYy5JbnNwZWN0TG9hZGVyYCBBQkNzLgogCiAgICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgogICAgIGluc3RhbnRpYXRpb24uCiAKIAorLi4gY2xhc3M6OiBXaW5kb3dzUmVnaXN0cnlGaW5kZXIKKworICAgOnRlcm06YEZpbmRlcmAgZm9yIG1vZHVsZXMgZGVjbGFyZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuICBUaGlzIGNsYXNzCisgICBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisKKyAgIE9ubHkgY2xhc3MgbWV0aG9kcyBhcmUgZGVmaW5lZCBieSB0aGlzIGNsYXNzIHRvIGFsbGV2aWF0ZSB0aGUgbmVlZCBmb3IKKyAgIGluc3RhbnRpYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGNsYXNzOjogUGF0aEZpbmRlcgogCi0gICAgOnRlcm06YEZpbmRlcmAgZm9yIDpkYXRhOmBzeXMucGF0aGAuIFRoaXMgY2xhc3MgaW1wbGVtZW50cyB0aGUKLSAgICA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBBQkMuCisgICBBIDp0ZXJtOmBGaW5kZXJgIGZvciA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBwYWNrYWdlIGBgX19wYXRoX19gYCBhdHRyaWJ1dGVzLgorICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuTWV0YVBhdGhGaW5kZXJgIEFCQy4KIAotICAgIFRoaXMgY2xhc3MgZG9lcyBub3QgcGVyZmVjdGx5IG1pcnJvciB0aGUgc2VtYW50aWNzIG9mIDprZXl3b3JkOmBpbXBvcnRgIGluCi0gICAgdGVybXMgb2YgOmRhdGE6YHN5cy5wYXRoYC4gTm8gaW1wbGljaXQgcGF0aCBob29rcyBhcmUgYXNzdW1lZCBmb3IKLSAgICBzaW1wbGlmaWNhdGlvbiBvZiB0aGUgY2xhc3MgYW5kIGl0cyBzZW1hbnRpY3MuCisgICBPbmx5IGNsYXNzIG1ldGhvZHMgYXJlIGRlZmluZWQgYnkgdGhpcyBjbGFzcyB0byBhbGxldmlhdGUgdGhlIG5lZWQgZm9yCisgICBpbnN0YW50aWF0aW9uLgogCi0gICAgT25seSBjbGFzcyBtZXRob2RzIGFyZSBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MgdG8gYWxsZXZpYXRlIHRoZSBuZWVkIGZvcgotICAgIGluc3RhbnRpYXRpb24uCisgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCiAKLSAgICAuLiBjbGFzc21ldGhvZDo6IGZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoPU5vbmUpCisgICAgIENsYXNzIG1ldGhvZCB0aGF0IGF0dGVtcHRzIHRvIGZpbmQgYSA6dGVybTpgbG9hZGVyYCBmb3IgdGhlIG1vZHVsZQorICAgICBzcGVjaWZpZWQgYnkgKmZ1bGxuYW1lKiBvbiA6ZGF0YTpgc3lzLnBhdGhgIG9yLCBpZiBkZWZpbmVkLCBvbgorICAgICAqcGF0aCouIEZvciBlYWNoIHBhdGggZW50cnkgdGhhdCBpcyBzZWFyY2hlZCwKKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpcyBjaGVja2VkLiBJZiBhIG5vbi1mYWxzZSBvYmplY3QgaXMKKyAgICAgZm91bmQgdGhlbiBpdCBpcyB1c2VkIGFzIHRoZSA6dGVybTpgZmluZGVyYCB0byBsb29rIGZvciB0aGUgbW9kdWxlCisgICAgIGJlaW5nIHNlYXJjaGVkIGZvci4gSWYgbm8gZW50cnkgaXMgZm91bmQgaW4KKyAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgdGhlbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzCisgICAgIHNlYXJjaGVkIGZvciBhIGZpbmRlciBmb3IgdGhlIHBhdGggZW50cnkgYW5kLCBpZiBmb3VuZCwgaXMgc3RvcmVkIGluCisgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgYWxvbmcgd2l0aCBiZWluZyBxdWVyaWVkIGFib3V0IHRoZQorICAgICBtb2R1bGUuIElmIG5vIGZpbmRlciBpcyBldmVyIGZvdW5kIHRoZW4gYGBOb25lYGAgaXMgYm90aCBzdG9yZWQgaW4KKyAgICAgdGhlIGNhY2hlIGFuZCByZXR1cm5lZC4KIAotICAgICAgICBDbGFzcyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBmaW5kIGEgOnRlcm06YGxvYWRlcmAgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgc3BlY2lmaWVkIGJ5ICpmdWxsbmFtZSogb24gOmRhdGE6YHN5cy5wYXRoYCBvciwgaWYgZGVmaW5lZCwgb24KLSAgICAgICAgKnBhdGgqLiBGb3IgZWFjaCBwYXRoIGVudHJ5IHRoYXQgaXMgc2VhcmNoZWQsCi0gICAgICAgIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgaXMgY2hlY2tlZC4gSWYgYW4gbm9uLWZhbHNlIG9iamVjdCBpcwotICAgICAgICBmb3VuZCB0aGVuIGl0IGlzIHVzZWQgYXMgdGhlIDp0ZXJtOmBmaW5kZXJgIHRvIGxvb2sgZm9yIHRoZSBtb2R1bGUKLSAgICAgICAgYmVpbmcgc2VhcmNoZWQgZm9yLiBJZiBubyBlbnRyeSBpcyBmb3VuZCBpbgotICAgICAgICA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCB0aGVuIDpkYXRhOmBzeXMucGF0aF9ob29rc2AgaXMKLSAgICAgICAgc2VhcmNoZWQgZm9yIGEgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBhbmQsIGlmIGZvdW5kLCBpcyBzdG9yZWQgaW4KLSAgICAgICAgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBhbG9uZyB3aXRoIGJlaW5nIHF1ZXJpZWQgYWJvdXQgdGhlCi0gICAgICAgIG1vZHVsZS4gSWYgbm8gZmluZGVyIGlzIGV2ZXIgZm91bmQgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4KKyAgIC4uIGNsYXNzbWV0aG9kOjogaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgIENhbGxzIDptZXRoOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlci5pbnZhbGlkYXRlX2NhY2hlc2Agb24gYWxsCisgICAgIGZpbmRlcnMgc3RvcmVkIGluIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKKworLi4gY2xhc3M6OiBGaWxlRmluZGVyKHBhdGgsIFwqbG9hZGVyX2RldGFpbHMpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlBhdGhFbnRyeUZpbmRlcmAgd2hpY2gKKyAgIGNhY2hlcyByZXN1bHRzIGZyb20gdGhlIGZpbGUgc3lzdGVtLgorCisgICBUaGUgKnBhdGgqIGFyZ3VtZW50IGlzIHRoZSBkaXJlY3RvcnkgZm9yIHdoaWNoIHRoZSBmaW5kZXIgaXMgaW4gY2hhcmdlIG9mCisgICBzZWFyY2hpbmcuCisKKyAgIFRoZSAqbG9hZGVyX2RldGFpbHMqIGFyZ3VtZW50IGlzIGEgdmFyaWFibGUgbnVtYmVyIG9mIDItaXRlbSB0dXBsZXMgZWFjaAorICAgY29udGFpbmluZyBhIGxvYWRlciBhbmQgYSBzZXF1ZW5jZSBvZiBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcy4KKworICAgVGhlIGZpbmRlciB3aWxsIGNhY2hlIHRoZSBkaXJlY3RvcnkgY29udGVudHMgYXMgbmVjZXNzYXJ5LCBtYWtpbmcgc3RhdCBjYWxscworICAgZm9yIGVhY2ggbW9kdWxlIHNlYXJjaCB0byB2ZXJpZnkgdGhlIGNhY2hlIGlzIG5vdCBvdXRkYXRlZC4gQmVjYXVzZSBjYWNoZQorICAgc3RhbGVuZXNzIHJlbGllcyB1cG9uIHRoZSBncmFudWxhcml0eSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIHN0YXRlCisgICBpbmZvcm1hdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0sIHRoZXJlIGlzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9mCisgICBzZWFyY2hpbmcgZm9yIGEgbW9kdWxlLCBjcmVhdGluZyBhIG5ldyBmaWxlLCBhbmQgdGhlbiBzZWFyY2hpbmcgZm9yIHRoZQorICAgbW9kdWxlIHRoZSBuZXcgZmlsZSByZXByZXNlbnRzLiBJZiB0aGUgb3BlcmF0aW9ucyBoYXBwZW4gZmFzdCBlbm91Z2ggdG8gZml0CisgICB3aXRoaW4gdGhlIGdyYW51bGFyaXR5IG9mIHN0YXQgY2FsbHMsIHRoZW4gdGhlIG1vZHVsZSBzZWFyY2ggd2lsbCBmYWlsLiBUbworICAgcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nLCB3aGVuIHlvdSBjcmVhdGUgYSBtb2R1bGUgZHluYW1pY2FsbHksIG1ha2Ugc3VyZQorICAgdG8gY2FsbCA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdGhlIGZpbmRlciB3aWxsIHNlYXJjaCBpbi4KKworICAgLi4gbWV0aG9kOjogZmluZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICAgIEF0dGVtcHQgdG8gZmluZCB0aGUgbG9hZGVyIHRvIGhhbmRsZSAqZnVsbG5hbWUqIHdpdGhpbiA6YXR0cjpgcGF0aGAuCisKKyAgIC4uIG1ldGhvZDo6IGludmFsaWRhdGVfY2FjaGVzKCkKKworICAgICAgQ2xlYXIgb3V0IHRoZSBpbnRlcm5hbCBjYWNoZS4KKworICAgLi4gY2xhc3NtZXRob2Q6OiBwYXRoX2hvb2soXCpsb2FkZXJfZGV0YWlscykKKworICAgICAgQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgZm9yIHVzZSBvbiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLgorICAgICAgQW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBGaWxlRmluZGVyYCBpcyByZXR1cm5lZCBieSB0aGUgY2xvc3VyZSB1c2luZyB0aGUKKyAgICAgIHBhdGggYXJndW1lbnQgZ2l2ZW4gdG8gdGhlIGNsb3N1cmUgZGlyZWN0bHkgYW5kICpsb2FkZXJfZGV0YWlscyoKKyAgICAgIGluZGlyZWN0bHkuCisKKyAgICAgIElmIHRoZSBhcmd1bWVudCB0byB0aGUgY2xvc3VyZSBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LAorICAgICAgOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4KKworCisuLiBjbGFzczo6IFNvdXJjZUZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisKKyAgIEEgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOmNsYXNzOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcmAgYnkKKyAgIHN1YmNsYXNzaW5nIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCBhbmQgcHJvdmlkaW5nIHNvbWUgY29uY3JldGUKKyAgIGltcGxlbWVudGF0aW9ucyBvZiBvdGhlciBtZXRob2RzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogbmFtZQorCisgICAgICBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgdGhpcyBsb2FkZXIgd2lsbCBoYW5kbGUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhdGgKKworICAgICAgVGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm4gdHJ1ZSBpZiA6YXR0cjpgcGF0aGAgYXBwZWFycyB0byBiZSBmb3IgYSBwYWNrYWdlLgorCisgICAuLiBtZXRob2Q6OiBwYXRoX3N0YXRzKHBhdGgpCisKKyAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX3N0YXRzYC4KKworICAgLi4gbWV0aG9kOjogc2V0X2RhdGEocGF0aCwgZGF0YSkKKworICAgICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyLnNldF9kYXRhYC4KKworCisuLiBjbGFzczo6IFNvdXJjZWxlc3NGaWxlTG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorCisgICBBIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCB3aGljaCBjYW4KKyAgIGltcG9ydCBieXRlY29kZSBmaWxlcyAoaS5lLiBubyBzb3VyY2UgY29kZSBmaWxlcyBleGlzdCkuCisKKyAgIFBsZWFzZSBub3RlIHRoYXQgZGlyZWN0IHVzZSBvZiBieXRlY29kZSBmaWxlcyAoYW5kIHRodXMgbm90IHNvdXJjZSBjb2RlCisgICBmaWxlcykgaW5oaWJpdHMgeW91ciBtb2R1bGVzIGZyb20gYmVpbmcgdXNhYmxlIGJ5IGFsbCBQeXRob24KKyAgIGltcGxlbWVudGF0aW9ucyBvciBuZXcgdmVyc2lvbnMgb2YgUHl0aG9uIHdoaWNoIGNoYW5nZSB0aGUgYnl0ZWNvZGUKKyAgIGZvcm1hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHdpbGwgaGFuZGxlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFRoZSBwYXRoIHRvIHRoZSBieXRlY29kZSBmaWxlLgorCisgICAuLiBtZXRob2Q6OiBpc19wYWNrYWdlKGZ1bGxuYW1lKQorCisgICAgICBEZXRlcm1pbmVzIGlmIHRoZSBtb2R1bGUgaXMgYSBwYWNrYWdlIGJhc2VkIG9uIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X2NvZGUoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgdGhlIGNvZGUgb2JqZWN0IGZvciA6YXR0cjpgbmFtZWAgY3JlYXRlZCBmcm9tIDphdHRyOmBwYXRoYC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBieXRlY29kZSBmaWxlcyBoYXZlIG5vIHNvdXJjZSB3aGVuIHRoaXMgbG9hZGVyIGlzCisgICAgICB1c2VkLgorCisKKy4uIGNsYXNzOjogRXh0ZW5zaW9uRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKKworICAgQSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlcmAgZm9yCisgICBleHRlbnNpb24gbW9kdWxlcy4KKworICAgVGhlICpmdWxsbmFtZSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGxvYWRlciBpcyB0bworICAgc3VwcG9ydC4gVGhlICpwYXRoKiBhcmd1bWVudCBpcyB0aGUgcGF0aCB0byB0aGUgZXh0ZW5zaW9uIG1vZHVsZSdzIGZpbGUuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCisKKyAgICAgIE5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgbG9hZGVyIHN1cHBvcnRzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYXRoCisKKyAgICAgIFBhdGggdG8gdGhlIGV4dGVuc2lvbiBtb2R1bGUuCisKKyAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQorCisgICAgICBMb2FkcyB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpZiBhbmQgb25seSBpZiAqZnVsbG5hbWUqIGlzIHRoZSBzYW1lIGFzCisgICAgICA6YXR0cjpgbmFtZWAgb3IgaXMgYGBOb25lYGAuCisKKyAgIC4uIG1ldGhvZDo6IGlzX3BhY2thZ2UoZnVsbG5hbWUpCisKKyAgICAgIFJldHVybnMgYGBUcnVlYGAgaWYgdGhlIGZpbGUgcGF0aCBwb2ludHMgdG8gYSBwYWNrYWdlJ3MgYGBfX2luaXRfX2BgCisgICAgICBtb2R1bGUgYmFzZWQgb24gOmF0dHI6YEVYVEVOU0lPTl9TVUZGSVhFU2AuCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb2RlKGZ1bGxuYW1lKQorCisgICAgICBSZXR1cm5zIGBgTm9uZWBgIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGxhY2sgYSBjb2RlIG9iamVjdC4KKworICAgLi4gbWV0aG9kOjogZ2V0X3NvdXJjZShmdWxsbmFtZSkKKworICAgICAgUmV0dXJucyBgYE5vbmVgYCBhcyBleHRlbnNpb24gbW9kdWxlcyBkbyBub3QgaGF2ZSBzb3VyY2UgY29kZS4KIAogCiA6bW9kOmBpbXBvcnRsaWIudXRpbGAgLS0gVXRpbGl0eSBjb2RlIGZvciBpbXBvcnRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBtb2R1bGU6OiBpbXBvcnRsaWIudXRpbAotICAgIDpzeW5vcHNpczogSW1wb3J0ZXJzIGFuZCBwYXRoIGhvb2tzCisgICAgOnN5bm9wc2lzOiBVdGlsaXR5IGNvZGUgZm9yIGltcG9ydGVycwogCiBUaGlzIG1vZHVsZSBjb250YWlucyB0aGUgdmFyaW91cyBvYmplY3RzIHRoYXQgaGVscCBpbiB0aGUgY29uc3RydWN0aW9uIG9mCiBhbiA6dGVybTpgaW1wb3J0ZXJgLgogCisuLiBmdW5jdGlvbjo6IHJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKQorCisgICBSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLgorCisgICBJZiAgKipuYW1lKiogaGFzIG5vIGxlYWRpbmcgZG90cywgdGhlbiAqKm5hbWUqKiBpcyBzaW1wbHkgcmV0dXJuZWQuIFRoaXMKKyAgIGFsbG93cyBmb3IgdXNhZ2Ugc3VjaCBhcworICAgYGBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoJ3N5cycsIF9fcGFja2FnZV9fKWBgIHdpdGhvdXQgZG9pbmcgYQorICAgY2hlY2sgdG8gc2VlIGlmIHRoZSAqKnBhY2thZ2UqKiBhcmd1bWVudCBpcyBuZWVkZWQuCisKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqKm5hbWUqKiBpcyBhIHJlbGF0aXZlIG1vZHVsZSBuYW1lIGJ1dAorICAgcGFja2FnZSBpcyBhIGZhbHNlIHZhbHVlIChlLmcuIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcpLgorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgYWxzbyByYWlzZWQgYSByZWxhdGl2ZSBuYW1lIHdvdWxkIGVzY2FwZSBpdHMgY29udGFpbmluZworICAgcGFja2FnZSAoZS5nLiByZXF1ZXN0aW5nIGBgLi5iYWNvbmBgIGZyb20gd2l0aGluIHRoZSBgYHNwYW1gYCBwYWNrYWdlKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGRlY29yYXRvcjo6IG1vZHVsZV9mb3JfbG9hZGVyCiAKICAgICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciBhIDp0ZXJtOmBsb2FkZXJgIG1ldGhvZCwKQEAgLTQ4MSwyMiArODYyLDMwIEBACiAgICAgc2lnbmF0dXJlIHRha2luZyB0d28gcG9zaXRpb25hbCBhcmd1bWVudHMKICAgICAoZS5nLiBgYGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSlgYCkgZm9yIHdoaWNoIHRoZSBzZWNvbmQgYXJndW1lbnQKICAgICB3aWxsIGJlIHRoZSBtb2R1bGUgKipvYmplY3QqKiB0byBiZSB1c2VkIGJ5IHRoZSBsb2FkZXIuCi0gICAgTm90ZSB0aGF0IHRoZSBkZWNvcmF0b3IKLSAgICB3aWxsIG5vdCB3b3JrIG9uIHN0YXRpYyBtZXRob2RzIGJlY2F1c2Ugb2YgdGhlIGFzc3VtcHRpb24gb2YgdHdvCi0gICAgYXJndW1lbnRzLgorICAgIE5vdGUgdGhhdCB0aGUgZGVjb3JhdG9yIHdpbGwgbm90IHdvcmsgb24gc3RhdGljIG1ldGhvZHMgYmVjYXVzZSBvZiB0aGUKKyAgICBhc3N1bXB0aW9uIG9mIHR3byBhcmd1bWVudHMuCiAKICAgICBUaGUgZGVjb3JhdGVkIG1ldGhvZCB3aWxsIHRha2UgaW4gdGhlICoqbmFtZSoqIG9mIHRoZSBtb2R1bGUgdG8gYmUgbG9hZGVkCiAgICAgYXMgZXhwZWN0ZWQgZm9yIGEgOnRlcm06YGxvYWRlcmAuIElmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCB0aGVuIGEgbmV3IG9uZSBpcyBjb25zdHJ1Y3RlZCB3aXRoIGl0cwotICAgIDphdHRyOmBfX25hbWVfX2AgYXR0cmlidXRlIHNldC4gT3RoZXJ3aXNlIHRoZSBtb2R1bGUgZm91bmQgaW4KLSAgICA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlIG1ldGhvZC4gSWYgYW4KLSAgICBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSBkZWNvcmF0ZWQgbWV0aG9kIGFuZCBhIG1vZHVsZSB3YXMgYWRkZWQgdG8KKyAgICA6YXR0cjpgX19uYW1lX19gIGF0dHJpYnV0ZSBzZXQgdG8gKipuYW1lKiosIDphdHRyOmBfX2xvYWRlcl9fYCBzZXQgdG8KKyAgICAqKnNlbGYqKiwgYW5kIDphdHRyOmBfX3BhY2thZ2VfX2Agc2V0IGlmCisgICAgOm1ldGg6YGltcG9ydGxpYi5hYmMuSW5zcGVjdExvYWRlci5pc19wYWNrYWdlYCBpcyBkZWZpbmVkIGZvciAqKnNlbGYqKiBhbmQKKyAgICBkb2VzIG5vdCByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZm9yICoqbmFtZSoqLiBJZiBhIG5ldyBtb2R1bGUgaXMgbm90CisgICAgbmVlZGVkIHRoZW4gdGhlIG1vZHVsZSBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHdpbGwgYmUgcGFzc2VkIGludG8gdGhlCisgICAgbWV0aG9kLgorCisgICAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBieSB0aGUgZGVjb3JhdGVkIG1ldGhvZCBhbmQgYSBtb2R1bGUgd2FzIGFkZGVkIHRvCiAgICAgOmRhdGE6YHN5cy5tb2R1bGVzYCBpdCB3aWxsIGJlIHJlbW92ZWQgdG8gcHJldmVudCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAogICAgIG1vZHVsZSBmcm9tIGJlaW5nIGluIGxlZnQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gSWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeQogICAgIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgdGhlbiBpdCBpcyBsZWZ0IGFsb25lLgogCiAgICAgVXNlIG9mIHRoaXMgZGVjb3JhdG9yIGhhbmRsZXMgYWxsIHRoZSBkZXRhaWxzIG9mIHdoaWNoIG1vZHVsZSBvYmplY3QgYQotICAgIGxvYWRlciBzaG91bGQgaW5pdGlhbGl6ZSBhcyBzcGVjaWZpZWQgYnkgOnBlcDpgMzAyYC4KKyAgICBsb2FkZXIgc2hvdWxkIGluaXRpYWxpemUgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDMwMmAgYXMgYmVzdCBhcyBwb3NzaWJsZS4KKworICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgOmF0dHI6YF9fbG9hZGVyX19gIGFuZCA6YXR0cjpgX19wYWNrYWdlX19gIGFyZSBhdXRvbWF0aWNhbGx5IHNldAorICAgICAgICh3aGVuIHBvc3NpYmxlKS4KIAogLi4gZGVjb3JhdG9yOjogc2V0X2xvYWRlcgogCkBAIC01MDQsNyArODkzLDEzIEBACiAgICAgdG8gc2V0IHRoZSA6YXR0cjpgX19sb2FkZXJfX2AKICAgICBhdHRyaWJ1dGUgb24gbG9hZGVkIG1vZHVsZXMuIElmIHRoZSBhdHRyaWJ1dGUgaXMgYWxyZWFkeSBzZXQgdGhlIGRlY29yYXRvcgogICAgIGRvZXMgbm90aGluZy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50IHRvIHRoZQotICAgIHdyYXBwZWQgbWV0aG9kIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisgICAgd3JhcHBlZCBtZXRob2QgKGkuZS4gYGBzZWxmYGApIGlzIHdoYXQgOmF0dHI6YF9fbG9hZGVyX19gIHNob3VsZCBiZSBzZXQgdG8uCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IDpmdW5jOmBtb2R1bGVfZm9yX2xvYWRlcmAgYmUgdXNlZCBvdmVyIHRoaXMKKyAgICAgIGRlY29yYXRvciBhcyBpdCBzdWJzdW1lcyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisKIAogLi4gZGVjb3JhdG9yOjogc2V0X3BhY2thZ2UKIApAQCAtNTE1LDggKzkxMCwxMiBAQAogICAgIHNldCBvbiBhbmQgbm90IHRoZSBtb2R1bGUgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4KIAogICAgIFJlbGlhbmNlIG9uIHRoaXMgZGVjb3JhdG9yIGlzIGRpc2NvdXJhZ2VkIHdoZW4gaXQgaXMgcG9zc2libGUgdG8gc2V0Ci0gICAgOmF0dHI6YF9fcGFja2FnZV9fYCBiZWZvcmUgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSBpcyBwb3NzaWJsZS4gQnkKLSAgICBzZXR0aW5nIGl0IGJlZm9yZSB0aGUgY29kZSBmb3IgdGhlIG1vZHVsZSBpcyBleGVjdXRlZCBpdCBhbGxvd3MgdGhlCi0gICAgYXR0cmlidXRlIHRvIGJlIHVzZWQgYXQgdGhlIGdsb2JhbCBsZXZlbCBvZiB0aGUgbW9kdWxlIGR1cmluZworICAgIDphdHRyOmBfX3BhY2thZ2VfX2AgYmVmb3JlIGltcG9ydGluZy4gQnkKKyAgICBzZXR0aW5nIGl0IGJlZm9yZWhhbmQgdGhlIGNvZGUgZm9yIHRoZSBtb2R1bGUgaXMgZXhlY3V0ZWQgd2l0aCB0aGUKKyAgICBhdHRyaWJ1dGUgc2V0IGFuZCB0aHVzIGNhbiBiZSB1c2VkIGJ5IGdsb2JhbCBsZXZlbCBjb2RlIGR1cmluZwogICAgIGluaXRpYWxpemF0aW9uLgogCisgICAuLiBub3RlOjoKKworICAgICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCA6ZnVuYzpgbW9kdWxlX2Zvcl9sb2FkZXJgIGJlIHVzZWQgb3ZlciB0aGlzCisgICAgICBkZWNvcmF0b3IgYXMgaXQgc3Vic3VtZXMgdGhpcyBmdW5jdGlvbmFsaXR5LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5kZXgucnN0IGIvRG9jL2xpYnJhcnkvaW5kZXgucnN0CmluZGV4IDlhYzY4OGMuLmJhMjAzNjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luZGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbmRleC5yc3QKQEAgLTQ2LDcgKzQ2LDggQEAKICAgIHN0ZHR5cGVzLnJzdAogICAgZXhjZXB0aW9ucy5yc3QKIAotICAgc3RyaW5ncy5yc3QKKyAgIHRleHQucnN0CisgICBiaW5hcnkucnN0CiAgICBkYXRhdHlwZXMucnN0CiAgICBudW1lcmljLnJzdAogICAgZnVuY3Rpb25hbC5yc3QKQEAgLTU2LDcgKzU3LDcgQEAKICAgIGZpbGVmb3JtYXRzLnJzdAogICAgY3J5cHRvLnJzdAogICAgYWxsb3MucnN0Ci0gICBzb21lb3MucnN0CisgICBjb25jdXJyZW5jeS5yc3QKICAgIGlwYy5yc3QKICAgIG5ldGRhdGEucnN0CiAgICBtYXJrdXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IGQxMjdjZTguLjAxYmJjZTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0xOTAsMTMgKzE5MCwyNiBAQAogICAgY29tcGFyZWQgdG8gdGhlIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZSA6bW9kOmBpbXBgIG1vZHVsZTsgc2VlIHRoZQogICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gbW9kdWxlIHR5cGVzLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisgICAgICBZb3UgbWF5IGNoZWNrIHRoZSBmaWxlIHBhdGgncyBzdWZmaXggYWdhaW5zdCB0aGUgc3VwcG9ydGVkIHN1ZmZpeGVzCisgICAgICBsaXN0ZWQgaW4gOm1vZDpgaW1wb3J0bGliLm1hY2hpbmVyeWAgdG8gaW5mZXIgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRtb2R1bGVuYW1lKHBhdGgpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIG5hbWVkIGJ5IHRoZSBmaWxlICpwYXRoKiwgd2l0aG91dCBpbmNsdWRpbmcgdGhlCi0gICBuYW1lcyBvZiBlbmNsb3NpbmcgcGFja2FnZXMuICBUaGlzIHVzZXMgdGhlIHNhbWUgYWxnb3JpdGhtIGFzIHRoZSBpbnRlcnByZXRlcgotICAgdXNlcyB3aGVuIHNlYXJjaGluZyBmb3IgbW9kdWxlcy4gIElmIHRoZSBuYW1lIGNhbm5vdCBiZSBtYXRjaGVkIGFjY29yZGluZyB0byB0aGUKLSAgIGludGVycHJldGVyJ3MgcnVsZXMsIGBgTm9uZWBgIGlzIHJldHVybmVkLgorICAgbmFtZXMgb2YgZW5jbG9zaW5nIHBhY2thZ2VzLiBUaGUgZmlsZSBleHRlbnNpb24gaXMgY2hlY2tlZCBhZ2FpbnN0IGFsbCBvZgorICAgdGhlIGVudHJpZXMgaW4gOmZ1bmM6YGltcG9ydGxpYi5tYWNoaW5lcnkuYWxsX3N1ZmZpeGVzYC4gSWYgaXQgbWF0Y2hlcywKKyAgIHRoZSBmaW5hbCBwYXRoIGNvbXBvbmVudCBpcyByZXR1cm5lZCB3aXRoIHRoZSBleHRlbnNpb24gcmVtb3ZlZC4KKyAgIE90aGVyd2lzZSwgYGBOb25lYGAgaXMgcmV0dXJuZWQuCisKKyAgIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uICpvbmx5KiByZXR1cm5zIGEgbWVhbmluZ2Z1bCBuYW1lIGZvciBhY3R1YWwKKyAgIFB5dGhvbiBtb2R1bGVzIC0gcGF0aHMgdGhhdCBwb3RlbnRpYWxseSByZWZlciB0byBQeXRob24gcGFja2FnZXMgd2lsbAorICAgc3RpbGwgcmV0dXJuIGBgTm9uZWBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiB0aGUKKyAgICAgIGRlcHJlY2F0ZWQgOmZ1bmM6YGdldG1vZHVsZWluZm9gLgogCiAKIC4uIGZ1bmN0aW9uOjogaXNtb2R1bGUob2JqZWN0KQpAQCAtMzU1LDE3ICszNjgsMjUgQEAKICAgIGFyZ3VtZW50IG1heSBiZSBhIG1vZHVsZSwgY2xhc3MsIG1ldGhvZCwgZnVuY3Rpb24sIHRyYWNlYmFjaywgZnJhbWUsIG9yIGNvZGUKICAgIG9iamVjdC4gIFRoZSBzb3VyY2UgY29kZSBpcyByZXR1cm5lZCBhcyBhIGxpc3Qgb2YgdGhlIGxpbmVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCiAgICBvYmplY3QgYW5kIHRoZSBsaW5lIG51bWJlciBpbmRpY2F0ZXMgd2hlcmUgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdAotICAgbGluZSBvZiBjb2RlIHdhcyBmb3VuZC4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUgY2Fubm90CisgICBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QKICAgIGJlIHJldHJpZXZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpbnN0ZWFkIG9mIDpleGM6YElPRXJyb3JgLCBub3cgYW4gYWxpYXMgb2YgdGhlCisgICAgICBmb3JtZXIuCisKIAogLi4gZnVuY3Rpb246OiBnZXRzb3VyY2Uob2JqZWN0KQogCiAgICBSZXR1cm4gdGhlIHRleHQgb2YgdGhlIHNvdXJjZSBjb2RlIGZvciBhbiBvYmplY3QuIFRoZSBhcmd1bWVudCBtYXkgYmUgYSBtb2R1bGUsCiAgICBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QuICBUaGUgc291cmNlIGNvZGUgaXMKLSAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YElPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKKyAgIHJldHVybmVkIGFzIGEgc2luZ2xlIHN0cmluZy4gIEFuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgc291cmNlIGNvZGUKICAgIGNhbm5vdCBiZSByZXRyaWV2ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBJT0Vycm9yYCwgbm93IGFuIGFsaWFzIG9mIHRoZQorICAgICAgZm9ybWVyLgorCiAKIC4uIGZ1bmN0aW9uOjogY2xlYW5kb2MoZG9jKQogCkBAIC0zNzQsNiArMzk1LDI2NCBAQAogICAgb253YXJkcyBpcyByZW1vdmVkLiAgQWxzbywgYWxsIHRhYnMgYXJlIGV4cGFuZGVkIHRvIHNwYWNlcy4KIAogCisuLiBfaW5zcGVjdC1zaWduYXR1cmUtb2JqZWN0OgorCitJbnRyb3NwZWN0aW5nIGNhbGxhYmxlcyB3aXRoIHRoZSBTaWduYXR1cmUgb2JqZWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgU2lnbmF0dXJlIG9iamVjdCByZXByZXNlbnRzIHRoZSBjYWxsIHNpZ25hdHVyZSBvZiBhIGNhbGxhYmxlIG9iamVjdCBhbmQgaXRzCityZXR1cm4gYW5ub3RhdGlvbi4gIFRvIHJldHJpZXZlIGEgU2lnbmF0dXJlIG9iamVjdCwgdXNlIHRoZSA6ZnVuYzpgc2lnbmF0dXJlYAorZnVuY3Rpb24uCisKKy4uIGZ1bmN0aW9uOjogc2lnbmF0dXJlKGNhbGxhYmxlKQorCisgICBSZXR1cm4gYSA6Y2xhc3M6YFNpZ25hdHVyZWAgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gYGBjYWxsYWJsZWBgOjoKKworICAgICAgPj4+IGZyb20gaW5zcGVjdCBpbXBvcnQgc2lnbmF0dXJlCisgICAgICA+Pj4gZGVmIGZvbyhhLCAqLCBiOmludCwgKiprd2FyZ3MpOgorICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorCisgICAgICA+Pj4gc3RyKHNpZykKKyAgICAgICcoYSwgKiwgYjppbnQsICoqa3dhcmdzKScKKworICAgICAgPj4+IHN0cihzaWcucGFyYW1ldGVyc1snYiddKQorICAgICAgJ2I6aW50JworCisgICAgICA+Pj4gc2lnLnBhcmFtZXRlcnNbJ2InXS5hbm5vdGF0aW9uCisgICAgICA8Y2xhc3MgJ2ludCc+CisKKyAgIEFjY2VwdHMgYSB3aWRlIHJhbmdlIG9mIHB5dGhvbiBjYWxsYWJsZXMsIGZyb20gcGxhaW4gZnVuY3Rpb25zIGFuZCBjbGFzc2VzIHRvCisgICA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgIG9iamVjdHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBTb21lIGNhbGxhYmxlcyBtYXkgbm90IGJlIGludHJvc3BlY3RhYmxlIGluIGNlcnRhaW4gaW1wbGVtZW50YXRpb25zIG9mCisgICAgICBQeXRob24uICBGb3IgZXhhbXBsZSwgaW4gQ1B5dGhvbiwgYnVpbHQtaW4gZnVuY3Rpb25zIGRlZmluZWQgaW4gQyBwcm92aWRlCisgICAgICBubyBtZXRhZGF0YSBhYm91dCB0aGVpciBhcmd1bWVudHMuCisKKworLi4gY2xhc3M6OiBTaWduYXR1cmUKKworICAgQSBTaWduYXR1cmUgb2JqZWN0IHJlcHJlc2VudHMgdGhlIGNhbGwgc2lnbmF0dXJlIG9mIGEgZnVuY3Rpb24gYW5kIGl0cyByZXR1cm4KKyAgIGFubm90YXRpb24uICBGb3IgZWFjaCBwYXJhbWV0ZXIgYWNjZXB0ZWQgYnkgdGhlIGZ1bmN0aW9uIGl0IHN0b3JlcyBhCisgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0IGluIGl0cyA6YXR0cjpgcGFyYW1ldGVyc2AgY29sbGVjdGlvbi4KKworICAgU2lnbmF0dXJlIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgVXNlIDptZXRoOmBTaWduYXR1cmUucmVwbGFjZWAgdG8gbWFrZSBhCisgICBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBTaWduYXR1cmUuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgYSByZXR1cm4gYW5ub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnBhcmFtZXRlcnMKKworICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICA6Y2xhc3M6YFBhcmFtZXRlcmAgb2JqZWN0cy4KKworICAgLi4gYXR0cmlidXRlOjogU2lnbmF0dXJlLnJldHVybl9hbm5vdGF0aW9uCisKKyAgICAgIFRoZSAicmV0dXJuIiBhbm5vdGF0aW9uIGZvciB0aGUgY2FsbGFibGUuICBJZiB0aGUgY2FsbGFibGUgaGFzIG5vICJyZXR1cm4iCisgICAgICBhbm5vdGF0aW9uLCB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5iaW5kKCphcmdzLCAqKmt3YXJncykKKworICAgICAgQ3JlYXRlIGEgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIHRvIHBhcmFtZXRlcnMuCisgICAgICBSZXR1cm5zIDpjbGFzczpgQm91bmRBcmd1bWVudHNgIGlmIGBgKmFyZ3NgYCBhbmQgYGAqKmt3YXJnc2BgIG1hdGNoIHRoZQorICAgICAgc2lnbmF0dXJlLCBvciByYWlzZXMgYSA6ZXhjOmBUeXBlRXJyb3JgLgorCisgICAuLiBtZXRob2Q6OiBTaWduYXR1cmUuYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykKKworICAgICAgV29ya3MgdGhlIHNhbWUgd2F5IGFzIDptZXRoOmBTaWduYXR1cmUuYmluZGAsIGJ1dCBhbGxvd3MgdGhlIG9taXNzaW9uIG9mCisgICAgICBzb21lIHJlcXVpcmVkIGFyZ3VtZW50cyAobWltaWNzIDpmdW5jOmBmdW5jdG9vbHMucGFydGlhbGAgYmVoYXZpb3IuKQorICAgICAgUmV0dXJucyA6Y2xhc3M6YEJvdW5kQXJndW1lbnRzYCwgb3IgcmFpc2VzIGEgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGUKKyAgICAgIHBhc3NlZCBhcmd1bWVudHMgZG8gbm90IG1hdGNoIHRoZSBzaWduYXR1cmUuCisKKyAgIC4uIG1ldGhvZDo6IFNpZ25hdHVyZS5yZXBsYWNlKCpbLCBwYXJhbWV0ZXJzXVssIHJldHVybl9hbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFNpZ25hdHVyZSBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZSB3YXMgaW52b2tlZAorICAgICAgb24uICBJdCBpcyBwb3NzaWJsZSB0byBwYXNzIGRpZmZlcmVudCBgYHBhcmFtZXRlcnNgYCBhbmQvb3IKKyAgICAgIGBgcmV0dXJuX2Fubm90YXRpb25gYCB0byBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0aWVzIG9mIHRoZSBiYXNlCisgICAgICBzaWduYXR1cmUuICBUbyByZW1vdmUgcmV0dXJuX2Fubm90YXRpb24gZnJvbSB0aGUgY29waWVkIFNpZ25hdHVyZSwgcGFzcyBpbgorICAgICAgOmF0dHI6YFNpZ25hdHVyZS5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBkZWYgdGVzdChhLCBiKToKKyAgICAgICAgIC4uLiAgICAgcGFzcworICAgICAgICAgPj4+IHNpZyA9IHNpZ25hdHVyZSh0ZXN0KQorICAgICAgICAgPj4+IG5ld19zaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj0ibmV3IHJldHVybiBhbm5vIikKKyAgICAgICAgID4+PiBzdHIobmV3X3NpZykKKyAgICAgICAgICIoYSwgYikgLT4gJ25ldyByZXR1cm4gYW5ubyciCisKKworLi4gY2xhc3M6OiBQYXJhbWV0ZXIKKworICAgUGFyYW1ldGVyIG9iamVjdHMgYXJlICppbW11dGFibGUqLiAgSW5zdGVhZCBvZiBtb2RpZnlpbmcgYSBQYXJhbWV0ZXIgb2JqZWN0LAorICAgeW91IGNhbiB1c2UgOm1ldGg6YFBhcmFtZXRlci5yZXBsYWNlYCB0byBjcmVhdGUgYSBtb2RpZmllZCBjb3B5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIuZW1wdHkKKworICAgICAgQSBzcGVjaWFsIGNsYXNzLWxldmVsIG1hcmtlciB0byBzcGVjaWZ5IGFic2VuY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgYW5kCisgICAgICBhbm5vdGF0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLm5hbWUKKworICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciBhcyBhIHN0cmluZy4gIE11c3QgYmUgYSB2YWxpZCBweXRob24gaWRlbnRpZmllcgorICAgICAgbmFtZSAod2l0aCB0aGUgZXhjZXB0aW9uIG9mIGBgUE9TSVRJT05BTF9PTkxZYGAgcGFyYW1ldGVycywgd2hpY2ggY2FuIGhhdmUKKyAgICAgIGl0IHNldCB0byBgYE5vbmVgYCkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CisKKyAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdAorICAgICAgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byA6YXR0cjpgUGFyYW1ldGVyLmVtcHR5YC4KKworICAgLi4gYXR0cmlidXRlOjogUGFyYW1ldGVyLmFubm90YXRpb24KKworICAgICAgVGhlIGFubm90YXRpb24gZm9yIHRoZSBwYXJhbWV0ZXIuICBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBhbm5vdGF0aW9uLAorICAgICAgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0IHRvIDphdHRyOmBQYXJhbWV0ZXIuZW1wdHlgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBQYXJhbWV0ZXIua2luZAorCisgICAgICBEZXNjcmliZXMgaG93IGFyZ3VtZW50IHZhbHVlcyBhcmUgYm91bmQgdG8gdGhlIHBhcmFtZXRlci4gIFBvc3NpYmxlIHZhbHVlcworICAgICAgKGFjY2Vzc2libGUgdmlhIDpjbGFzczpgUGFyYW1ldGVyYCwgbGlrZSBgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlgYCk6CisKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgICAgTmFtZSAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT05MWSogICAgICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBwb3NpdGlvbmFsICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBoYXMgbm8gZXhwbGljaXQgc3ludGF4IGZvciBkZWZpbmluZyAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCBidXQgbWFueSBidWlsdC1pbnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCBleHRlbnNpb24gbW9kdWxlIGZ1bmN0aW9ucyAoZXNwZWNpYWxseSAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRob3NlIHRoYXQgYWNjZXB0IG9ubHkgb25lIG9yIHR3byBwYXJhbWV0ZXJzKXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFjY2VwdCB0aGVtLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlBPU0lUSU9OQUxfT1JfS0VZV09SRCp8IFZhbHVlIG1heSBiZSBzdXBwbGllZCBhcyBlaXRoZXIgYSBrZXl3b3JkIG9yIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uYWwgYXJndW1lbnQgKHRoaXMgaXMgdGhlIHN0YW5kYXJkICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJpbmRpbmcgYmVoYXZpb3VyIGZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGluIFB5dGhvbi4pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9QT1NJVElPTkFMKiAgICAgICB8IEEgdHVwbGUgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhdCBhcmVuJ3QgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGJvdW5kIHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGNvcnJlc3BvbmRzIHRvIGEgYGAqYXJnc2BgIHBhcmFtZXRlciBpbiBhICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKktFWVdPUkRfT05MWSogICAgICAgICB8IFZhbHVlIG11c3QgYmUgc3VwcGxpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LnwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IEtleXdvcmQgb25seSBwYXJhbWV0ZXJzIGFyZSB0aG9zZSB3aGljaCAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGFwcGVhciBhZnRlciBhIGBgKmBgIG9yIGBgKmFyZ3NgYCBlbnRyeSBpbiBhIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBmdW5jdGlvbiBkZWZpbml0aW9uLiAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICAgIHwgKlZBUl9LRVlXT1JEKiAgICAgICAgICB8IEEgZGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCBib3VuZHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IHRvIGFueSBvdGhlciBwYXJhbWV0ZXIuIFRoaXMgY29ycmVzcG9uZHMgdG8gYXwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGBgKiprd2FyZ3NgYCBwYXJhbWV0ZXIgaW4gYSBQeXRob24gZnVuY3Rpb24gIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8IGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgICAgRXhhbXBsZTogcHJpbnQgYWxsIGtleXdvcmQtb25seSBhcmd1bWVudHMgd2l0aG91dCBkZWZhdWx0IHZhbHVlczo6CisKKyAgICAgICAgID4+PiBkZWYgZm9vKGEsIGIsICosIGMsIGQ9MTApOgorICAgICAgICAgLi4uICAgICBwYXNzCisKKyAgICAgICAgID4+PiBzaWcgPSBzaWduYXR1cmUoZm9vKQorICAgICAgICAgPj4+IGZvciBwYXJhbSBpbiBzaWcucGFyYW1ldGVycy52YWx1ZXMoKToKKyAgICAgICAgIC4uLiAgICAgaWYgKHBhcmFtLmtpbmQgPT0gcGFyYW0uS0VZV09SRF9PTkxZIGFuZAorICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSk6CisgICAgICAgICAuLi4gICAgICAgICBwcmludCgnUGFyYW1ldGVyOicsIHBhcmFtKQorICAgICAgICAgUGFyYW1ldGVyOiBjCisKKyAgIC4uIG1ldGhvZDo6IFBhcmFtZXRlci5yZXBsYWNlKCpbLCBuYW1lXVssIGtpbmRdWywgZGVmYXVsdF1bLCBhbm5vdGF0aW9uXSkKKworICAgICAgQ3JlYXRlIGEgbmV3IFBhcmFtZXRlciBpbnN0YW5jZSBiYXNlZCBvbiB0aGUgaW5zdGFuY2UgcmVwbGFjZWQgd2FzIGludm9rZWQKKyAgICAgIG9uLiAgVG8gb3ZlcnJpZGUgYSA6Y2xhc3M6YFBhcmFtZXRlcmAgYXR0cmlidXRlLCBwYXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICBhcmd1bWVudC4gIFRvIHJlbW92ZSBhIGRlZmF1bHQgdmFsdWUgb3IvYW5kIGFuIGFubm90YXRpb24gZnJvbSBhCisgICAgICBQYXJhbWV0ZXIsIHBhc3MgOmF0dHI6YFBhcmFtZXRlci5lbXB0eWAuCisKKyAgICAgIDo6CisKKyAgICAgICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IFBhcmFtZXRlcgorICAgICAgICAgPj4+IHBhcmFtID0gUGFyYW1ldGVyKCdmb28nLCBQYXJhbWV0ZXIuS0VZV09SRF9PTkxZLCBkZWZhdWx0PTQyKQorICAgICAgICAgPj4+IHN0cihwYXJhbSkKKyAgICAgICAgICdmb289NDInCisKKyAgICAgICAgID4+PiBzdHIocGFyYW0ucmVwbGFjZSgpKSAjIFdpbGwgY3JlYXRlIGEgc2hhbGxvdyBjb3B5IG9mICdwYXJhbScKKyAgICAgICAgICdmb289NDInCisKKyAgICAgICAgID4+PiBzdHIocGFyYW0ucmVwbGFjZShkZWZhdWx0PVBhcmFtZXRlci5lbXB0eSwgYW5ub3RhdGlvbj0nc3BhbScpKQorICAgICAgICAgImZvbzonc3BhbSciCisKKworLi4gY2xhc3M6OiBCb3VuZEFyZ3VtZW50cworCisgICBSZXN1bHQgb2YgYSA6bWV0aDpgU2lnbmF0dXJlLmJpbmRgIG9yIDptZXRoOmBTaWduYXR1cmUuYmluZF9wYXJ0aWFsYCBjYWxsLgorICAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzIHRvIHRoZSBmdW5jdGlvbidzIHBhcmFtZXRlcnMuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3VtZW50cworCisgICAgICBBbiBvcmRlcmVkLCBtdXRhYmxlIG1hcHBpbmcgKDpjbGFzczpgY29sbGVjdGlvbnMuT3JkZXJlZERpY3RgKSBvZgorICAgICAgcGFyYW1ldGVycycgbmFtZXMgdG8gYXJndW1lbnRzJyB2YWx1ZXMuICBDb250YWlucyBvbmx5IGV4cGxpY2l0bHkgYm91bmQKKyAgICAgIGFyZ3VtZW50cy4gIENoYW5nZXMgaW4gOmF0dHI6YGFyZ3VtZW50c2Agd2lsbCByZWZsZWN0IGluIDphdHRyOmBhcmdzYCBhbmQKKyAgICAgIDphdHRyOmBrd2FyZ3NgLgorCisgICAgICBTaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIDphdHRyOmBTaWduYXR1cmUucGFyYW1ldGVyc2AgZm9yIGFueQorICAgICAgYXJndW1lbnQgcHJvY2Vzc2luZyBwdXJwb3Nlcy4KKworICAgICAgLi4gbm90ZTo6CisKKyAgICAgICAgIEFyZ3VtZW50cyBmb3Igd2hpY2ggOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBvcgorICAgICAgICAgOm1ldGg6YFNpZ25hdHVyZS5iaW5kX3BhcnRpYWxgIHJlbGllZCBvbiBhIGRlZmF1bHQgdmFsdWUgYXJlIHNraXBwZWQuCisgICAgICAgICBIb3dldmVyLCBpZiBuZWVkZWQsIGl0IGlzIGVhc3kgdG8gaW5jbHVkZSB0aGVtLgorCisgICAgICA6OgorCisgICAgICAgID4+PiBkZWYgZm9vKGEsIGI9MTApOgorICAgICAgICAuLi4gICAgIHBhc3MKKworICAgICAgICA+Pj4gc2lnID0gc2lnbmF0dXJlKGZvbykKKyAgICAgICAgPj4+IGJhID0gc2lnLmJpbmQoNSkKKworICAgICAgICA+Pj4gYmEuYXJncywgYmEua3dhcmdzCisgICAgICAgICgoNSwpLCB7fSkKKworICAgICAgICA+Pj4gZm9yIHBhcmFtIGluIHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpOgorICAgICAgICAuLi4gICAgIGlmIHBhcmFtLm5hbWUgbm90IGluIGJhLmFyZ3VtZW50czoKKyAgICAgICAgLi4uICAgICAgICAgYmEuYXJndW1lbnRzW3BhcmFtLm5hbWVdID0gcGFyYW0uZGVmYXVsdAorCisgICAgICAgID4+PiBiYS5hcmdzLCBiYS5rd2FyZ3MKKyAgICAgICAgKCg1LCAxMCksIHt9KQorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJvdW5kQXJndW1lbnRzLmFyZ3MKKworICAgICAgQSB0dXBsZSBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyB2YWx1ZXMuICBEeW5hbWljYWxseSBjb21wdXRlZCBmcm9tIHRoZQorICAgICAgOmF0dHI6YGFyZ3VtZW50c2AgYXR0cmlidXRlLgorCisgICAuLiBhdHRyaWJ1dGU6OiBCb3VuZEFyZ3VtZW50cy5rd2FyZ3MKKworICAgICAgQSBkaWN0IG9mIGtleXdvcmQgYXJndW1lbnRzIHZhbHVlcy4gIER5bmFtaWNhbGx5IGNvbXB1dGVkIGZyb20gdGhlCisgICAgICA6YXR0cjpgYXJndW1lbnRzYCBhdHRyaWJ1dGUuCisKKyAgIFRoZSA6YXR0cjpgYXJnc2AgYW5kIDphdHRyOmBrd2FyZ3NgIHByb3BlcnRpZXMgY2FuIGJlIHVzZWQgdG8gaW52b2tlCisgICBmdW5jdGlvbnM6OgorCisgICAgICBkZWYgdGVzdChhLCAqLCBiKToKKyAgICAgICAgIC4uLgorCisgICAgICBzaWcgPSBzaWduYXR1cmUodGVzdCkKKyAgICAgIGJhID0gc2lnLmJpbmQoMTAsIGI9MjApCisgICAgICB0ZXN0KCpiYS5hcmdzLCAqKmJhLmt3YXJncykKKworCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzYyYCAtIEZ1bmN0aW9uIFNpZ25hdHVyZSBPYmplY3QuCisgICAgICBUaGUgZGV0YWlsZWQgc3BlY2lmaWNhdGlvbiwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQgZXhhbXBsZXMuCisKKwogLi4gX2luc3BlY3QtY2xhc3Nlcy1mdW5jdGlvbnM6CiAKIENsYXNzZXMgYW5kIGZ1bmN0aW9ucwpAQCAtMzk2LDkgKzY3NSw5IEBACiAgICA6dGVybTpgbmFtZWQgdHVwbGVgIGBgQXJnU3BlYyhhcmdzLCB2YXJhcmdzLCBrZXl3b3JkcywgZGVmYXVsdHMpYGAgaXMKICAgIHJldHVybmVkLiAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gKnZhcmFyZ3MqIGFuZCAqa2V5d29yZHMqCiAgICBhcmUgdGhlIG5hbWVzIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gKmRlZmF1bHRzKiBpcyBhCi0gICB0dXBsZSBvZiBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBvciBOb25lIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0IGFyZ3VtZW50czsKLSAgIGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0ICpuKiBlbGVtZW50cwotICAgbGlzdGVkIGluICphcmdzKi4KKyAgIHR1cGxlIG9mIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGFyZSBubyBkZWZhdWx0CisgICBhcmd1bWVudHM7IGlmIHRoaXMgdHVwbGUgaGFzICpuKiBlbGVtZW50cywgdGhleSBjb3JyZXNwb25kIHRvIHRoZSBsYXN0CisgICAqbiogZWxlbWVudHMgbGlzdGVkIGluICphcmdzKi4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuMAogICAgICAgVXNlIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AgaW5zdGVhZCwgd2hpY2ggcHJvdmlkZXMgaW5mb3JtYXRpb24gYWJvdXQKQEAgLTQxNCwxNCArNjkzLDE5IEBACiAgICBhbm5vdGF0aW9ucylgYAogCiAgICAqYXJncyogaXMgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gICp2YXJhcmdzKiBhbmQgKnZhcmt3KiBhcmUgdGhlIG5hbWVzCi0gICBvZiB0aGUgYGAqYGAgYW5kIGBgKipgYCBhcmd1bWVudHMgb3IgYGBOb25lYGAuICAqZGVmYXVsdHMqIGlzIGFuIG4tdHVwbGUgb2YKLSAgIHRoZSBkZWZhdWx0IHZhbHVlcyBvZiB0aGUgbGFzdCBuIGFyZ3VtZW50cy4gICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2YKKyAgIG9mIHRoZSBgYCpgYCBhbmQgYGAqKmBgIGFyZ3VtZW50cyBvciBgYE5vbmVgYC4gICpkZWZhdWx0cyogaXMgYW4gKm4qLXR1cGxlCisgICBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgb2YgdGhlIGxhc3QgKm4qIGFyZ3VtZW50cywgb3IgYGBOb25lYGAgaWYgdGhlcmUgYXJlIG5vCisgICBkZWZhdWx0IGFyZ3VtZW50cy4gICprd29ubHlhcmdzKiBpcyBhIGxpc3Qgb2YKICAgIGtleXdvcmQtb25seSBhcmd1bWVudCBuYW1lcy4gICprd29ubHlkZWZhdWx0cyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMKICAgIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4gICphbm5vdGF0aW9ucyogaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgYXJndW1lbnQKICAgIG5hbWVzIHRvIGFubm90YXRpb25zLgogCiAgICBUaGUgZmlyc3QgZm91ciBpdGVtcyBpbiB0aGUgdHVwbGUgY29ycmVzcG9uZCB0byA6ZnVuYzpgZ2V0YXJnc3BlY2AuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgQ29uc2lkZXIgdXNpbmcgdGhlIG5ldyA6cmVmOmBTaWduYXR1cmUgT2JqZWN0IDxpbnNwZWN0LXNpZ25hdHVyZS1vYmplY3Q+YAorICAgICAgaW50ZXJmYWNlLCB3aGljaCBwcm92aWRlcyBhIGJldHRlciB3YXkgb2YgaW50cm9zcGVjdGluZyBmdW5jdGlvbnMuCisKIAogLi4gZnVuY3Rpb246OiBnZXRhcmd2YWx1ZXMoZnJhbWUpCiAKQEAgLTQzMiwxMSArNzE2LDIzIEBACiAgICBsb2NhbHMgZGljdGlvbmFyeSBvZiB0aGUgZ2l2ZW4gZnJhbWUuCiAKIAotLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlXSkKKy4uIGZ1bmN0aW9uOjogZm9ybWF0YXJnc3BlYyhhcmdzWywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnNbLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZSwgZm9ybWF0cmV0dXJucywgZm9ybWF0YW5ub3RhdGlvbnNdXSkKIAotICAgRm9ybWF0IGEgcHJldHR5IGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgZm91ciB2YWx1ZXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBnZXRhcmdzcGVjYC4gIFRoZSBmb3JtYXRcKiBhcmd1bWVudHMgYXJlIHRoZSBjb3JyZXNwb25kaW5nIG9wdGlvbmFsCi0gICBmb3JtYXR0aW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdG8gdHVybiBuYW1lcyBhbmQgdmFsdWVzIGludG8gc3RyaW5ncy4KKyAgIEZvcm1hdCBhIHByZXR0eSBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieQorICAgOmZ1bmM6YGdldGFyZ3NwZWNgIG9yIDpmdW5jOmBnZXRmdWxsYXJnc3BlY2AuCisKKyAgIFRoZSBmaXJzdCBzZXZlbiBhcmd1bWVudHMgYXJlIChgYGFyZ3NgYCwgYGB2YXJhcmdzYGAsIGBgdmFya3dgYCwKKyAgIGBgZGVmYXVsdHNgYCwgYGBrd29ubHlhcmdzYGAsIGBga3dvbmx5ZGVmYXVsdHNgYCwgYGBhbm5vdGF0aW9uc2BgKS4gVGhlCisgICBvdGhlciBmaXZlIGFyZ3VtZW50cyBhcmUgdGhlIGNvcnJlc3BvbmRpbmcgb3B0aW9uYWwgZm9ybWF0dGluZyBmdW5jdGlvbnMKKyAgIHRoYXQgYXJlIGNhbGxlZCB0byB0dXJuIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBzdHJpbmdzLiBUaGUgbGFzdCBhcmd1bWVudAorICAgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdG8gZm9ybWF0IHRoZSBzZXF1ZW5jZSBvZiBhcmd1bWVudHMuIEZvciBleGFtcGxlOjoKKworICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGZvcm1hdGFyZ3NwZWMsIGdldGZ1bGxhcmdzcGVjCisgICAgPj4+IGRlZiBmKGE6IGludCwgYjogZmxvYXQpOgorICAgIC4uLiAgICAgcGFzcworICAgIC4uLgorICAgID4+PiBmb3JtYXRhcmdzcGVjKCpnZXRmdWxsYXJnc3BlYyhmKSkKKyAgICAnKGE6IGludCwgYjogZmxvYXQpJwogCiAKIC4uIGZ1bmN0aW9uOjogZm9ybWF0YXJndmFsdWVzKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzLCBmb3JtYXRhcmcsIGZvcm1hdHZhcmFyZ3MsIGZvcm1hdHZhcmt3LCBmb3JtYXR2YWx1ZV0pCkBAIC00NjgsMTcgKzc2NCwzNiBAQAogICAgID4+PiBmcm9tIGluc3BlY3QgaW1wb3J0IGdldGNhbGxhcmdzCiAgICAgPj4+IGRlZiBmKGEsIGI9MSwgKnBvcywgKipuYW1lZCk6CiAgICAgLi4uICAgICBwYXNzCi0gICAgPj4+IGdldGNhbGxhcmdzKGYsIDEsIDIsIDMpCi0gICAgeydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9Ci0gICAgPj4+IGdldGNhbGxhcmdzKGYsIGE9MiwgeD00KQotICAgIHsnYSc6IDIsICduYW1lZCc6IHsneCc6IDR9LCAnYic6IDEsICdwb3MnOiAoKX0KKyAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZiwgMSwgMiwgMykgPT0geydhJzogMSwgJ25hbWVkJzoge30sICdiJzogMiwgJ3Bvcyc6ICgzLCl9CisgICAgVHJ1ZQorICAgID4+PiBnZXRjYWxsYXJncyhmLCBhPTIsIHg9NCkgPT0geydhJzogMiwgJ25hbWVkJzogeyd4JzogNH0sICdiJzogMSwgJ3Bvcyc6ICgpfQorICAgIFRydWUKICAgICA+Pj4gZ2V0Y2FsbGFyZ3MoZikKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgYXQgbGVhc3QgMSBhcmd1bWVudCAoMCBnaXZlbikKKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2EnCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiBub3RlOjoKKyAgICAgIENvbnNpZGVyIHVzaW5nIHRoZSBuZXcgOm1ldGg6YFNpZ25hdHVyZS5iaW5kYCBpbnN0ZWFkLgorCisKKy4uIGZ1bmN0aW9uOjogZ2V0Y2xvc3VyZXZhcnMoZnVuYykKKworICAgR2V0IHRoZSBtYXBwaW5nIG9mIGV4dGVybmFsIG5hbWUgcmVmZXJlbmNlcyBpbiBhIFB5dGhvbiBmdW5jdGlvbiBvcgorICAgbWV0aG9kICpmdW5jKiB0byB0aGVpciBjdXJyZW50IHZhbHVlcy4gQQorICAgOnRlcm06YG5hbWVkIHR1cGxlYCBgYENsb3N1cmVWYXJzKG5vbmxvY2FscywgZ2xvYmFscywgYnVpbHRpbnMsIHVuYm91bmQpYGAKKyAgIGlzIHJldHVybmVkLiAqbm9ubG9jYWxzKiBtYXBzIHJlZmVyZW5jZWQgbmFtZXMgdG8gbGV4aWNhbCBjbG9zdXJlCisgICB2YXJpYWJsZXMsICpnbG9iYWxzKiB0byB0aGUgZnVuY3Rpb24ncyBtb2R1bGUgZ2xvYmFscyBhbmQgKmJ1aWx0aW5zKiB0bworICAgdGhlIGJ1aWx0aW5zIHZpc2libGUgZnJvbSB0aGUgZnVuY3Rpb24gYm9keS4gKnVuYm91bmQqIGlzIHRoZSBzZXQgb2YgbmFtZXMKKyAgIHJlZmVyZW5jZWQgaW4gdGhlIGZ1bmN0aW9uIHRoYXQgY291bGQgbm90IGJlIHJlc29sdmVkIGF0IGFsbCBnaXZlbiB0aGUKKyAgIGN1cnJlbnQgbW9kdWxlIGdsb2JhbHMgYW5kIGJ1aWx0aW5zLgorCisgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZiAqZnVuYyogaXMgbm90IGEgUHl0aG9uIGZ1bmN0aW9uIG9yIG1ldGhvZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIAogLi4gX2luc3BlY3Qtc3RhY2s6CiAKQEAgLTY0MywzICs5NTgsMjcgQEAKICAgICAqIEdFTl9DTE9TRUQ6IEV4ZWN1dGlvbiBoYXMgY29tcGxldGVkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworVGhlIGN1cnJlbnQgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBjYW4gYWxzbyBiZSBxdWVyaWVkLiBUaGlzIGlzCittb3N0bHkgdXNlZnVsIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB0byBlbnN1cmUgdGhhdCBpbnRlcm5hbCBzdGF0ZSBpcyBiZWluZwordXBkYXRlZCBhcyBleHBlY3RlZDoKKworLi4gZnVuY3Rpb246OiBnZXRnZW5lcmF0b3Jsb2NhbHMoZ2VuZXJhdG9yKQorCisgICBHZXQgdGhlIG1hcHBpbmcgb2YgbGl2ZSBsb2NhbCB2YXJpYWJsZXMgaW4gKmdlbmVyYXRvciogdG8gdGhlaXIgY3VycmVudAorICAgdmFsdWVzLiAgQSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHRoYXQgbWFwcyBmcm9tIHZhcmlhYmxlIG5hbWVzIHRvIHZhbHVlcy4KKyAgIFRoaXMgaXMgdGhlIGVxdWl2YWxlbnQgb2YgY2FsbGluZyA6ZnVuYzpgbG9jYWxzYCBpbiB0aGUgYm9keSBvZiB0aGUKKyAgIGdlbmVyYXRvciwgYW5kIGFsbCB0aGUgc2FtZSBjYXZlYXRzIGFwcGx5LgorCisgICBJZiAqZ2VuZXJhdG9yKiBpcyBhIDp0ZXJtOmBnZW5lcmF0b3JgIHdpdGggbm8gY3VycmVudGx5IGFzc29jaWF0ZWQgZnJhbWUsCisgICB0aGVuIGFuIGVtcHR5IGRpY3Rpb25hcnkgaXMgcmV0dXJuZWQuICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZCBpZgorICAgKmdlbmVyYXRvciogaXMgbm90IGEgUHl0aG9uIGdlbmVyYXRvciBvYmplY3QuCisKKyAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgVGhpcyBmdW5jdGlvbiByZWxpZXMgb24gdGhlIGdlbmVyYXRvciBleHBvc2luZyBhIFB5dGhvbiBzdGFjayBmcmFtZQorICAgICAgZm9yIGludHJvc3BlY3Rpb24sIHdoaWNoIGlzbid0IGd1YXJhbnRlZWQgdG8gYmUgdGhlIGNhc2UgaW4gYWxsCisgICAgICBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLiBJbiBzdWNoIGNhc2VzLCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx3YXlzCisgICAgICByZXR1cm4gYW4gZW1wdHkgZGljdGlvbmFyeS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QgYi9Eb2MvbGlicmFyeS9pbnRlcm5ldC5yc3QKaW5kZXggNmZhNzg3My4uYjg5NTBiYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaW50ZXJuZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ludGVybmV0LnJzdApAQCAtMjMsMTAgKzIzLDEyIEBACiAgICBjZ2kucnN0CiAgICBjZ2l0Yi5yc3QKICAgIHdzZ2lyZWYucnN0CisgICB1cmxsaWIucnN0CiAgICB1cmxsaWIucmVxdWVzdC5yc3QKICAgIHVybGxpYi5wYXJzZS5yc3QKICAgIHVybGxpYi5lcnJvci5yc3QKICAgIHVybGxpYi5yb2JvdHBhcnNlci5yc3QKKyAgIGh0dHAucnN0CiAgICBodHRwLmNsaWVudC5yc3QKICAgIGZ0cGxpYi5yc3QKICAgIHBvcGxpYi5yc3QKQEAgLTQwLDUgKzQyLDcgQEAKICAgIGh0dHAuc2VydmVyLnJzdAogICAgaHR0cC5jb29raWVzLnJzdAogICAgaHR0cC5jb29raWVqYXIucnN0CisgICB4bWxycGMucnN0CiAgICB4bWxycGMuY2xpZW50LnJzdAogICAgeG1scnBjLnNlcnZlci5yc3QKKyAgIGlwYWRkcmVzcy5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCA2MmVhZjZkLi5lODNlNTVjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC0zNyw2ICszNywxMCBAQAogd2lsbCByYWlzZSBhIGBgVHlwZUVycm9yYGAuICBTbyB3aWxsIGdpdmluZyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB0byB0aGUKIGBgd3JpdGUoKWBgIG1ldGhvZCBvZiBhIHRleHQgc3RyZWFtLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgT3BlcmF0aW9ucyB0aGF0IHVzZWQgdG8gcmFpc2UgOmV4YzpgSU9FcnJvcmAgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgLCBzaW5jZQorICAgOmV4YzpgSU9FcnJvcmAgaXMgbm93IGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIFRleHQgSS9PCiBeXl5eXl5eXgpAQCAtNTUsNyArNTksNyBAQAogCiAgICBmID0gaW8uU3RyaW5nSU8oInNvbWUgaW5pdGlhbCB0ZXh0IGRhdGEiKQogCi1UaGUgdGV4dCBzdHJlYW0gQVBJIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgaW4gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZQorVGhlIHRleHQgc3RyZWFtIEFQSSBpcyBkZXNjcmliZWQgaW4gZGV0YWlsIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mCiA6Y2xhc3M6YFRleHRJT0Jhc2VgLgogCiAKQEAgLTExMywyMSArMTE3LDEzIEBACiAKIC4uIGV4Y2VwdGlvbjo6IEJsb2NraW5nSU9FcnJvcgogCi0gICBFcnJvciByYWlzZWQgd2hlbiBibG9ja2luZyB3b3VsZCBvY2N1ciBvbiBhIG5vbi1ibG9ja2luZyBzdHJlYW0uICBJdCBpbmhlcml0cwotICAgOmV4YzpgSU9FcnJvcmAuCi0KLSAgIEluIGFkZGl0aW9uIHRvIHRob3NlIG9mIDpleGM6YElPRXJyb3JgLCA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGhhcyBvbmUKLSAgIGF0dHJpYnV0ZToKLQotICAgLi4gYXR0cmlidXRlOjogY2hhcmFjdGVyc193cml0dGVuCi0KLSAgICAgIEFuIGludGVnZXIgY29udGFpbmluZyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbiB0byB0aGUgc3RyZWFtCi0gICAgICBiZWZvcmUgaXQgYmxvY2tlZC4KKyAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IGFsaWFzIGZvciB0aGUgYnVpbHRpbiA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgCisgICBleGNlcHRpb24uCiAKIAogLi4gZXhjZXB0aW9uOjogVW5zdXBwb3J0ZWRPcGVyYXRpb24KIAotICAgQW4gZXhjZXB0aW9uIGluaGVyaXRpbmcgOmV4YzpgSU9FcnJvcmAgYW5kIDpleGM6YFZhbHVlRXJyb3JgIHRoYXQgaXMgcmFpc2VkCisgICBBbiBleGNlcHRpb24gaW5oZXJpdGluZyA6ZXhjOmBPU0Vycm9yYCBhbmQgOmV4YzpgVmFsdWVFcnJvcmAgdGhhdCBpcyByYWlzZWQKICAgIHdoZW4gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uIGlzIGNhbGxlZCBvbiBhIHN0cmVhbS4KIAogCkBAIC0yMDYsOCArMjAyLDggQEAKICAgIEV2ZW4gdGhvdWdoIDpjbGFzczpgSU9CYXNlYCBkb2VzIG5vdCBkZWNsYXJlIDptZXRoOmByZWFkYCwgOm1ldGg6YHJlYWRpbnRvYCwKICAgIG9yIDptZXRoOmB3cml0ZWAgYmVjYXVzZSB0aGVpciBzaWduYXR1cmVzIHdpbGwgdmFyeSwgaW1wbGVtZW50YXRpb25zIGFuZAogICAgY2xpZW50cyBzaG91bGQgY29uc2lkZXIgdGhvc2UgbWV0aG9kcyBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UuICBBbHNvLAotICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YElPRXJyb3JgIHdoZW4gb3BlcmF0aW9ucyB0aGV5IGRvIG5vdAotICAgc3VwcG9ydCBhcmUgY2FsbGVkLgorICAgaW1wbGVtZW50YXRpb25zIG1heSByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIChvciA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmApCisgICB3aGVuIG9wZXJhdGlvbnMgdGhleSBkbyBub3Qgc3VwcG9ydCBhcmUgY2FsbGVkLgogCiAgICBUaGUgYmFzaWMgdHlwZSB1c2VkIGZvciBiaW5hcnkgZGF0YSByZWFkIGZyb20gb3Igd3JpdHRlbiB0byBhIGZpbGUgaXMKICAgIDpjbGFzczpgYnl0ZXNgLiAgOmNsYXNzOmBieXRlYXJyYXlgXHMgYXJlIGFjY2VwdGVkIHRvbywgYW5kIGluIHNvbWUgY2FzZXMKQEAgLTIxNSwxNSArMjExLDE1IEBACiAgICA6Y2xhc3M6YHN0cmAgZGF0YS4KIAogICAgTm90ZSB0aGF0IGNhbGxpbmcgYW55IG1ldGhvZCAoZXZlbiBpbnF1aXJpZXMpIG9uIGEgY2xvc2VkIHN0cmVhbSBpcwotICAgdW5kZWZpbmVkLiAgSW1wbGVtZW50YXRpb25zIG1heSByYWlzZSA6ZXhjOmBJT0Vycm9yYCBpbiB0aGlzIGNhc2UuCisgICB1bmRlZmluZWQuICBJbXBsZW1lbnRhdGlvbnMgbWF5IHJhaXNlIDpleGM6YFZhbHVlRXJyb3JgIGluIHRoaXMgY2FzZS4KIAotICAgSU9CYXNlIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nIHRoYXQgYW4KLSAgIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEgc3RyZWFtLgotICAgTGluZXMgYXJlIGRlZmluZWQgc2xpZ2h0bHkgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHN0cmVhbSBpcwotICAgYSBiaW5hcnkgc3RyZWFtICh5aWVsZGluZyBieXRlcyksIG9yIGEgdGV4dCBzdHJlYW0gKHlpZWxkaW5nIGNoYXJhY3RlcgotICAgc3RyaW5ncykuICBTZWUgOm1ldGg6YH5JT0Jhc2UucmVhZGxpbmVgIGJlbG93LgorICAgOmNsYXNzOmBJT0Jhc2VgIChhbmQgaXRzIHN1YmNsYXNzZXMpIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCBtZWFuaW5nCisgICB0aGF0IGFuIDpjbGFzczpgSU9CYXNlYCBvYmplY3QgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgeWllbGRpbmcgdGhlIGxpbmVzIGluIGEKKyAgIHN0cmVhbS4gIExpbmVzIGFyZSBkZWZpbmVkIHNsaWdodGx5IGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICAgc3RyZWFtIGlzIGEgYmluYXJ5IHN0cmVhbSAoeWllbGRpbmcgYnl0ZXMpLCBvciBhIHRleHQgc3RyZWFtICh5aWVsZGluZworICAgY2hhcmFjdGVyIHN0cmluZ3MpLiAgU2VlIDptZXRoOmB+SU9CYXNlLnJlYWRsaW5lYCBiZWxvdy4KIAotICAgSU9CYXNlIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKKyAgIDpjbGFzczpgSU9CYXNlYCBpcyBhbHNvIGEgY29udGV4dCBtYW5hZ2VyIGFuZCB0aGVyZWZvcmUgc3VwcG9ydHMgdGhlCiAgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LiAgSW4gdGhpcyBleGFtcGxlLCAqZmlsZSogaXMgY2xvc2VkIGFmdGVyIHRoZQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCdzIHN1aXRlIGlzIGZpbmlzaGVkLS0tZXZlbiBpZiBhbiBleGNlcHRpb24gb2NjdXJzOjoKIApAQCAtMjQzLDEyICsyMzksMTIgQEAKIAogICAgLi4gYXR0cmlidXRlOjogY2xvc2VkCiAKLSAgICAgIFRydWUgaWYgdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGlzIGNsb3NlZC4KIAogICAgLi4gbWV0aG9kOjogZmlsZW5vKCkKIAogICAgICAgUmV0dXJuIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvciAoYW4gaW50ZWdlcikgb2YgdGhlIHN0cmVhbSBpZiBpdAotICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQorICAgICAgZXhpc3RzLiAgQW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZSBJTyBvYmplY3QgZG9lcyBub3QgdXNlIGEgZmlsZQogICAgICAgZGVzY3JpcHRvci4KIAogICAgLi4gbWV0aG9kOjogZmx1c2goKQpAQCAtMjY0LDcgKzI2MCw3IEBACiAgICAuLiBtZXRob2Q6OiByZWFkYWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIGNhbiBiZSByZWFkIGZyb20uICBJZiBGYWxzZSwgOm1ldGg6YHJlYWRgCi0gICAgICB3aWxsIHJhaXNlIDpleGM6YElPRXJyb3JgLgorICAgICAgd2lsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gbWV0aG9kOjogcmVhZGxpbmUobGltaXQ9LTEpCiAKQEAgLTI5OSwxMCArMjk1LDE1IEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKICAgICAgICAgIFRoZSBgYFNFRUtfKmBgIGNvbnN0YW50cy4KIAorICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAgICBTb21lIG9wZXJhdGluZyBzeXN0ZW1zIGNvdWxkIHN1cHBvcnQgYWRkaXRpb25hbCB2YWx1ZXMsIGxpa2UKKyAgICAgICAgIDpkYXRhOmBvcy5TRUVLX0hPTEVgIG9yIDpkYXRhOmBvcy5TRUVLX0RBVEFgLiBUaGUgdmFsaWQgdmFsdWVzCisgICAgICAgICBmb3IgYSBmaWxlIGNvdWxkIGRlcGVuZCBvbiBpdCBiZWluZyBvcGVuIGluIHRleHQgb3IgYmluYXJ5IG1vZGUuCisKICAgIC4uIG1ldGhvZDo6IHNlZWthYmxlKCkKIAogICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJlYW0gc3VwcG9ydHMgcmFuZG9tIGFjY2Vzcy4gIElmIGBgRmFsc2VgYCwKLSAgICAgIDptZXRoOmBzZWVrYCwgOm1ldGg6YHRlbGxgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCBhbmQgOm1ldGg6YHRydW5jYXRlYCB3aWxsIHJhaXNlIDpleGM6YE9TRXJyb3JgLgogCiAgICAuLiBtZXRob2Q6OiB0ZWxsKCkKIApAQCAtMzIwLDcgKzMyMSw3IEBACiAgICAuLiBtZXRob2Q6OiB3cml0YWJsZSgpCiAKICAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyZWFtIHN1cHBvcnRzIHdyaXRpbmcuICBJZiBgYEZhbHNlYGAsCi0gICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCisgICAgICA6bWV0aDpgd3JpdGVgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgIHdpbGwgcmFpc2UgOmV4YzpgT1NFcnJvcmAuCiAKICAgIC4uIG1ldGhvZDo6IHdyaXRlbGluZXMobGluZXMpCiAKQEAgLTMzOSw3ICszNDAsNyBAQAogICAgKHRoaXMgaXMgbGVmdCB0byBCdWZmZXJlZCBJL08gYW5kIFRleHQgSS9PLCBkZXNjcmliZWQgbGF0ZXIgaW4gdGhpcyBwYWdlKS4KIAogICAgSW4gYWRkaXRpb24gdG8gdGhlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgZnJvbSA6Y2xhc3M6YElPQmFzZWAsCi0gICBSYXdJT0Jhc2UgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBtZXRob2RzOgorICAgOmNsYXNzOmBSYXdJT0Jhc2VgIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKIAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCkBAIC0zNTksMTggKzM2MCwxOCBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyCi0gICAgICBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KKyAgICAgIFJlYWQgdXAgdG8gYGBsZW4oYilgYCBieXRlcyBpbnRvIDpjbGFzczpgYnl0ZWFycmF5YCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgdGhlIG9iamVjdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZSBhbmQgbm8KICAgICAgIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqLCB0byB0aGUgdW5kZXJseWluZyByYXcKLSAgICAgIHN0cmVhbSBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIFRoaXMgY2FuIGJlIGxlc3MgdGhhbgotICAgICAgYGBsZW4oYilgYCwgZGVwZW5kaW5nIG9uIHNwZWNpZmljcyBvZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtLCBhbmQKLSAgICAgIGVzcGVjaWFsbHkgaWYgaXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUuICBgYE5vbmVgYCBpcyByZXR1cm5lZCBpZiB0aGUKLSAgICAgIHJhdyBzdHJlYW0gaXMgc2V0IG5vdCB0byBibG9jayBhbmQgbm8gc2luZ2xlIGJ5dGUgY291bGQgYmUgcmVhZGlseQotICAgICAgd3JpdHRlbiB0byBpdC4KKyAgICAgIFdyaXRlIHRoZSBnaXZlbiA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiosIHRvIHRoZQorICAgICAgdW5kZXJseWluZyByYXcgc3RyZWFtIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgVGhpcyBjYW4KKyAgICAgIGJlIGxlc3MgdGhhbiBgYGxlbihiKWBgLCBkZXBlbmRpbmcgb24gc3BlY2lmaWNzIG9mIHRoZSB1bmRlcmx5aW5nIHJhdworICAgICAgc3RyZWFtLCBhbmQgZXNwZWNpYWxseSBpZiBpdCBpcyBpbiBub24tYmxvY2tpbmcgbW9kZS4gIGBgTm9uZWBgIGlzCisgICAgICByZXR1cm5lZCBpZiB0aGUgcmF3IHN0cmVhbSBpcyBzZXQgbm90IHRvIGJsb2NrIGFuZCBubyBzaW5nbGUgYnl0ZSBjb3VsZAorICAgICAgYmUgcmVhZGlseSB3cml0dGVuIHRvIGl0LgogCiAKIC4uIGNsYXNzOjogQnVmZmVyZWRJT0Jhc2UKQEAgLTQyMCw4ICs0MjEsOCBAQAogICAgLi4gbWV0aG9kOjogcmVhZChuPS0xKQogCiAgICAgICBSZWFkIGFuZCByZXR1cm4gdXAgdG8gKm4qIGJ5dGVzLiAgSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGBgTm9uZWBgLCBvcgotICAgICAgbmVnYXRpdmUsIGRhdGEgaXMgcmVhZCBhbmQgcmV0dXJuZWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuICBBbiBlbXB0eSBieXRlcwotICAgICAgb2JqZWN0IGlzIHJldHVybmVkIGlmIHRoZSBzdHJlYW0gaXMgYWxyZWFkeSBhdCBFT0YuCisgICAgICBuZWdhdGl2ZSwgZGF0YSBpcyByZWFkIGFuZCByZXR1cm5lZCB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIEFuIGVtcHR5CisgICAgICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaXMgcmV0dXJuZWQgaWYgdGhlIHN0cmVhbSBpcyBhbHJlYWR5IGF0IEVPRi4KIAogICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIHBvc2l0aXZlLCBhbmQgdGhlIHVuZGVybHlpbmcgcmF3IHN0cmVhbSBpcyBub3QKICAgICAgIGludGVyYWN0aXZlLCBtdWx0aXBsZSByYXcgcmVhZHMgbWF5IGJlIGlzc3VlZCB0byBzYXRpc2Z5IHRoZSBieXRlIGNvdW50CkBAIC00NDEsMjIgKzQ0MiwyMyBAQAogCiAgICAuLiBtZXRob2Q6OiByZWFkaW50byhiKQogCi0gICAgICBSZWFkIHVwIHRvIGxlbihiKSBieXRlcyBpbnRvIGJ5dGVhcnJheSAqYiogYW5kIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICByZWFkLgorICAgICAgUmVhZCB1cCB0byBgYGxlbihiKWBgIGJ5dGVzIGludG8gYnl0ZWFycmF5ICpiKiBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YKKyAgICAgIGJ5dGVzIHJlYWQuCiAKICAgICAgIExpa2UgOm1ldGg6YHJlYWRgLCBtdWx0aXBsZSByZWFkcyBtYXkgYmUgaXNzdWVkIHRvIHRoZSB1bmRlcmx5aW5nIHJhdwotICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyAnaW50ZXJhY3RpdmUnLgorICAgICAgc3RyZWFtLCB1bmxlc3MgdGhlIGxhdHRlciBpcyBpbnRlcmFjdGl2ZS4KIAogICAgICAgQSA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgdW5kZXJseWluZyByYXcgc3RyZWFtIGlzIGluCiAgICAgICBub24gYmxvY2tpbmctbW9kZSwgYW5kIGhhcyBubyBkYXRhIGF2YWlsYWJsZSBhdCB0aGUgbW9tZW50LgogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgZ2l2ZW4gYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlcgotICAgICAgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmIHRoZSB3cml0ZSBmYWlscwotICAgICAgYW4gOmV4YzpgSU9FcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKLSAgICAgIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZSB1bmRlcmx5aW5nCi0gICAgICBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5IHJlYXNvbnMuCisgICAgICBXcml0ZSB0aGUgZ2l2ZW4gOmNsYXNzOmBieXRlc2Agb3IgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdCwgKmIqIGFuZAorICAgICAgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuIGBgbGVuKGIpYGAsIHNpbmNlIGlmCisgICAgICB0aGUgd3JpdGUgZmFpbHMgYW4gOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQpLiAgRGVwZW5kaW5nIG9uIHRoZQorICAgICAgYWN0dWFsIGltcGxlbWVudGF0aW9uLCB0aGVzZSBieXRlcyBtYXkgYmUgcmVhZGlseSB3cml0dGVuIHRvIHRoZQorICAgICAgdW5kZXJseWluZyBzdHJlYW0sIG9yIGhlbGQgaW4gYSBidWZmZXIgZm9yIHBlcmZvcm1hbmNlIGFuZCBsYXRlbmN5CisgICAgICByZWFzb25zLgogCiAgICAgICBXaGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBhIDpleGM6YEJsb2NraW5nSU9FcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQogICAgICAgZGF0YSBuZWVkZWQgdG8gYmUgd3JpdHRlbiB0byB0aGUgcmF3IHN0cmVhbSBidXQgaXQgY291bGRuJ3QgYWNjZXB0CkBAIC00NjYsNyArNDY4LDcgQEAKIFJhdyBGaWxlIEkvTwogXl5eXl5eXl5eXl5eCiAKLS4uIGNsYXNzOjogRmlsZUlPKG5hbWUsIG1vZGU9J3InLCBjbG9zZWZkPVRydWUpCisuLiBjbGFzczo6IEZpbGVJTyhuYW1lLCBtb2RlPSdyJywgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSkKIAogICAgOmNsYXNzOmBGaWxlSU9gIHJlcHJlc2VudHMgYW4gT1MtbGV2ZWwgZmlsZSBjb250YWluaW5nIGJ5dGVzIGRhdGEuCiAgICBJdCBpbXBsZW1lbnRzIHRoZSA6Y2xhc3M6YFJhd0lPQmFzZWAgaW50ZXJmYWNlIChhbmQgdGhlcmVmb3JlIHRoZQpAQCAtNDc0LDIyICs0NzYsMzUgQEAKIAogICAgVGhlICpuYW1lKiBjYW4gYmUgb25lIG9mIHR3byB0aGluZ3M6CiAKLSAgICogYSBjaGFyYWN0ZXIgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHBhdGggdG8gdGhlIGZpbGUKLSAgICAgd2hpY2ggd2lsbCBiZSBvcGVuZWQ7CisgICAqIGEgY2hhcmFjdGVyIHN0cmluZyBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZQorICAgICBmaWxlIHdoaWNoIHdpbGwgYmUgb3BlbmVkOwogICAgKiBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIGFuIGV4aXN0aW5nIE9TLWxldmVsIGZpbGUgZGVzY3JpcHRvcgogICAgICB0byB3aGljaCB0aGUgcmVzdWx0aW5nIDpjbGFzczpgRmlsZUlPYCBvYmplY3Qgd2lsbCBnaXZlIGFjY2Vzcy4KIAotICAgVGhlICptb2RlKiBjYW4gYmUgYGAncidgYCwgYGAndydgYCBvciBgYCdhJ2BgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgd3JpdGluZywKLSAgIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvcgotICAgd3JpdGluZyBvciBhcHBlbmRpbmc7IGl0IHdpbGwgYmUgdHJ1bmNhdGVkIHdoZW4gb3BlbmVkIGZvciB3cml0aW5nLiAgQWRkIGEKKyAgIFRoZSAqbW9kZSogY2FuIGJlIGBgJ3InYGAsIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYCBmb3IgcmVhZGluZworICAgKGRlZmF1bHQpLCB3cml0aW5nLCBleGNsdXNpdmUgY3JlYXRpb24gb3IgYXBwZW5kaW5nLiBUaGUgZmlsZSB3aWxsIGJlCisgICBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3Qgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlCisgICB0cnVuY2F0ZWQgd2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcuIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYKKyAgIGl0IGFscmVhZHkgZXhpc3RzIHdoZW4gb3BlbmVkIGZvciBjcmVhdGluZy4gT3BlbmluZyBhIGZpbGUgZm9yIGNyZWF0aW5nCisgICBpbXBsaWVzIHdyaXRpbmcsIHNvIHRoaXMgbW9kZSBiZWhhdmVzIGluIGEgc2ltaWxhciB3YXkgdG8gYGAndydgYC4gQWRkIGEKICAgIGBgJysnYGAgdG8gdGhlIG1vZGUgdG8gYWxsb3cgc2ltdWx0YW5lb3VzIHJlYWRpbmcgYW5kIHdyaXRpbmcuCiAKICAgIFRoZSA6bWV0aDpgcmVhZGAgKHdoZW4gY2FsbGVkIHdpdGggYSBwb3NpdGl2ZSBhcmd1bWVudCksIDptZXRoOmByZWFkaW50b2AKICAgIGFuZCA6bWV0aDpgd3JpdGVgIG1ldGhvZHMgb24gdGhpcyBjbGFzcyB3aWxsIG9ubHkgbWFrZSBvbmUgc3lzdGVtIGNhbGwuCiAKKyAgIEEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZSB1bmRlcmx5aW5nCisgICBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcgKm9wZW5lciogd2l0aAorICAgKCpuYW1lKiwgKmZsYWdzKikuICpvcGVuZXIqIG11c3QgcmV0dXJuIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIChwYXNzaW5nCisgICA6bW9kOmBvcy5vcGVuYCBhcyAqb3BlbmVyKiByZXN1bHRzIGluIGZ1bmN0aW9uYWxpdHkgc2ltaWxhciB0byBwYXNzaW5nCisgICBgYE5vbmVgYCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKm9wZW5lciogcGFyYW1ldGVyIHdhcyBhZGRlZC4KKyAgICAgIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIDpjbGFzczpgSU9CYXNlYCBhbmQKICAgIDpjbGFzczpgUmF3SU9CYXNlYCwgOmNsYXNzOmBGaWxlSU9gIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZGF0YQotICAgYXR0cmlidXRlcyBhbmQgbWV0aG9kczoKKyAgIGF0dHJpYnV0ZXM6CiAKICAgIC4uIGF0dHJpYnV0ZTo6IG1vZGUKIApAQCAtNTM3LDcgKzU1Miw3IEBACiAKICAgIC4uIG1ldGhvZDo6IGdldHZhbHVlKCkKIAotICAgICAgUmV0dXJuIGBgYnl0ZXNgYCBjb250YWluaW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGJ1ZmZlci4KKyAgICAgIFJldHVybiA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGJ1ZmZlci4KIAogICAgLi4gbWV0aG9kOjogcmVhZDEoKQogCkBAIC01ODEsNyArNTk2LDcgQEAKIAogICAgQSBidWZmZXIgcHJvdmlkaW5nIGhpZ2hlci1sZXZlbCBhY2Nlc3MgdG8gYSB3cml0ZWFibGUsIHNlcXVlbnRpYWwKICAgIDpjbGFzczpgUmF3SU9CYXNlYCBvYmplY3QuICBJdCBpbmhlcml0cyA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYC4KLSAgIFdoZW4gd3JpdGluZyB0byB0aGlzIG9iamVjdCwgZGF0YSBpcyBub3JtYWxseSBoZWxkIGludG8gYW4gaW50ZXJuYWwKKyAgIFdoZW4gd3JpdGluZyB0byB0aGlzIG9iamVjdCwgZGF0YSBpcyBub3JtYWxseSBwbGFjZWQgaW50byBhbiBpbnRlcm5hbAogICAgYnVmZmVyLiAgVGhlIGJ1ZmZlciB3aWxsIGJlIHdyaXR0ZW4gb3V0IHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgUmF3SU9CYXNlYAogICAgb2JqZWN0IHVuZGVyIHZhcmlvdXMgY29uZGl0aW9ucywgaW5jbHVkaW5nOgogCkBAIC01OTQsOCArNjA5LDYgQEAKICAgICpyYXcqIHN0cmVhbS4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSB0aGlyZCBhcmd1bWVudCwgKm1heF9idWZmZXJfc2l6ZSosIGlzIHN1cHBvcnRlZCwgYnV0IHVudXNlZCBhbmQgZGVwcmVjYXRlZC4KLQogICAgOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAgcHJvdmlkZXMgb3Igb3ZlcnJpZGVzIHRoZXNlIG1ldGhvZHMgaW4gYWRkaXRpb24gdG8KICAgIHRob3NlIGZyb20gOmNsYXNzOmBCdWZmZXJlZElPQmFzZWAgYW5kIDpjbGFzczpgSU9CYXNlYDoKIApAQCAtNjA2LDkgKzYxOSwxMCBAQAogCiAgICAuLiBtZXRob2Q6OiB3cml0ZShiKQogCi0gICAgICBXcml0ZSB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCwgKmIqIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcwotICAgICAgd3JpdHRlbi4gIFdoZW4gaW4gbm9uLWJsb2NraW5nIG1vZGUsIGEgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQKLSAgICAgIGlmIHRoZSBidWZmZXIgbmVlZHMgdG8gYmUgd3JpdHRlbiBvdXQgYnV0IHRoZSByYXcgc3RyZWFtIGJsb2Nrcy4KKyAgICAgIFdyaXRlIHRoZSA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LCAqYiogYW5kIHJldHVybiB0aGUKKyAgICAgIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiAgV2hlbiBpbiBub24tYmxvY2tpbmcgbW9kZSwgYQorICAgICAgOmV4YzpgQmxvY2tpbmdJT0Vycm9yYCBpcyByYWlzZWQgaWYgdGhlIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0dGVuIG91dCBidXQKKyAgICAgIHRoZSByYXcgc3RyZWFtIGJsb2Nrcy4KIAogCiAuLiBjbGFzczo6IEJ1ZmZlcmVkUmFuZG9tKHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSkKQEAgLTYyMSw4ICs2MzUsNiBAQAogICAgaW4gdGhlIGZpcnN0IGFyZ3VtZW50LiAgSWYgdGhlICpidWZmZXJfc2l6ZSogaXMgb21pdHRlZCBpdCBkZWZhdWx0cyB0bwogICAgOmRhdGE6YERFRkFVTFRfQlVGRkVSX1NJWkVgLgogCi0gICBBIHRoaXJkIGFyZ3VtZW50LCAqbWF4X2J1ZmZlcl9zaXplKiwgaXMgc3VwcG9ydGVkLCBidXQgdW51c2VkIGFuZCBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkUmFuZG9tYCBpcyBjYXBhYmxlIG9mIGFueXRoaW5nIDpjbGFzczpgQnVmZmVyZWRSZWFkZXJgIG9yCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkV3JpdGVyYCBjYW4gZG8uCiAKQEAgLTYzNyw5ICs2NDksNiBAQAogICAgd3JpdGVhYmxlIHJlc3BlY3RpdmVseS4gIElmIHRoZSAqYnVmZmVyX3NpemUqIGlzIG9taXR0ZWQgaXQgZGVmYXVsdHMgdG8KICAgIDpkYXRhOmBERUZBVUxUX0JVRkZFUl9TSVpFYC4KIAotICAgQSBmb3VydGggYXJndW1lbnQsICptYXhfYnVmZmVyX3NpemUqLCBpcyBzdXBwb3J0ZWQsIGJ1dCB1bnVzZWQgYW5kCi0gICBkZXByZWNhdGVkLgotCiAgICA6Y2xhc3M6YEJ1ZmZlcmVkUldQYWlyYCBpbXBsZW1lbnRzIGFsbCBvZiA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYFwncyBtZXRob2RzCiAgICBleGNlcHQgZm9yIDptZXRoOmB+QnVmZmVyZWRJT0Jhc2UuZGV0YWNoYCwgd2hpY2ggcmFpc2VzCiAgICA6ZXhjOmBVbnN1cHBvcnRlZE9wZXJhdGlvbmAuCkBAIC02ODIsNyArNjkxLDcgQEAKIAogICAgICAgVGhlIHVuZGVybHlpbmcgYmluYXJ5IGJ1ZmZlciAoYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBpbnN0YW5jZSkgdGhhdAogICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBkZWFscyB3aXRoLiAgVGhpcyBpcyBub3QgcGFydCBvZiB0aGUKLSAgICAgIDpjbGFzczpgVGV4dElPQmFzZWAgQVBJIGFuZCBtYXkgbm90IGV4aXN0IG9uIHNvbWUgaW1wbGVtZW50YXRpb25zLgorICAgICAgOmNsYXNzOmBUZXh0SU9CYXNlYCBBUEkgYW5kIG1heSBub3QgZXhpc3QgaW4gc29tZSBpbXBsZW1lbnRhdGlvbnMuCiAKICAgIC4uIG1ldGhvZDo6IGRldGFjaCgpCiAKQEAgLTc0MiwxMyArNzUxLDE1IEBACiAgICAgICB3cml0dGVuLgogCiAKLS4uIGNsYXNzOjogVGV4dElPV3JhcHBlcihidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsIGxpbmVfYnVmZmVyaW5nPUZhbHNlKQorLi4gY2xhc3M6OiBUZXh0SU9XcmFwcGVyKGJ1ZmZlciwgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPUZhbHNlLCB3cml0ZV90aHJvdWdoPUZhbHNlKQogCiAgICBBIGJ1ZmZlcmVkIHRleHQgc3RyZWFtIG92ZXIgYSA6Y2xhc3M6YEJ1ZmZlcmVkSU9CYXNlYCBiaW5hcnkgc3RyZWFtLgogICAgSXQgaW5oZXJpdHMgOmNsYXNzOmBUZXh0SU9CYXNlYC4KIAogICAgKmVuY29kaW5nKiBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgc3RyZWFtIHdpbGwgYmUgZGVjb2RlZCBvcgotICAgZW5jb2RlZCB3aXRoLiAgSXQgZGVmYXVsdHMgdG8gOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZ2AuCisgICBlbmNvZGVkIHdpdGguICBJdCBkZWZhdWx0cyB0bworICAgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLgogCiAgICAqZXJyb3JzKiBpcyBhbiBvcHRpb25hbCBzdHJpbmcgdGhhdCBzcGVjaWZpZXMgaG93IGVuY29kaW5nIGFuZCBkZWNvZGluZwogICAgZXJyb3JzIGFyZSB0byBiZSBoYW5kbGVkLiAgUGFzcyBgYCdzdHJpY3QnYGAgdG8gcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYApAQCAtNzg1LDYgKzc5NiwxOSBAQAogICAgSWYgKmxpbmVfYnVmZmVyaW5nKiBpcyBgYFRydWVgYCwgOm1ldGg6YGZsdXNoYCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvCiAgICB3cml0ZSBjb250YWlucyBhIG5ld2xpbmUgY2hhcmFjdGVyLgogCisgICBJZiAqd3JpdGVfdGhyb3VnaCogaXMgYGBUcnVlYGAsIGNhbGxzIHRvIDptZXRoOmB3cml0ZWAgYXJlIGd1YXJhbnRlZWQKKyAgIG5vdCB0byBiZSBidWZmZXJlZDogYW55IGRhdGEgd3JpdHRlbiBvbiB0aGUgOmNsYXNzOmBUZXh0SU9XcmFwcGVyYAorICAgb2JqZWN0IGlzIGltbWVkaWF0ZWx5IGhhbmRsZWQgdG8gaXRzIHVuZGVybHlpbmcgYmluYXJ5ICpidWZmZXIqLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp3cml0ZV90aHJvdWdoKiBhcmd1bWVudCBoYXMgYmVlbiBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBkZWZhdWx0ICplbmNvZGluZyogaXMgbm93IGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKWBgCisgICAgICBpbnN0ZWFkIG9mIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKClgYC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKKyAgICAgIGxvY2FsZSBlbmNvZGluZyB1c2luZyA6ZnVuYzpgbG9jYWxlLnNldGxvY2FsZWAsIHVzZSB0aGUgY3VycmVudCBsb2NhbGUKKyAgICAgIGVuY29kaW5nIGluc3RlYWQgb2YgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nLgorCiAgICA6Y2xhc3M6YFRleHRJT1dyYXBwZXJgIHByb3ZpZGVzIG9uZSBhdHRyaWJ1dGUgaW4gYWRkaXRpb24gdG8gdGhvc2Ugb2YKICAgIDpjbGFzczpgVGV4dElPQmFzZWAgYW5kIGl0cyBwYXJlbnRzOgogCkBAIC04NTEsOCArODc1LDggQEAKIGtpbmQgb2YgSS9PIHdoaWNoIGlzIHBlcmZvcm1lZC4gIEZvciBleGFtcGxlLCBvbiBzb21lIG1vZGVybiBPU2VzIHN1Y2ggYXMgTGludXgsCiB1bmJ1ZmZlcmVkIGRpc2sgSS9PIGNhbiBiZSBhcyBmYXN0IGFzIGJ1ZmZlcmVkIEkvTy4gIFRoZSBib3R0b20gbGluZSwgaG93ZXZlciwKIGlzIHRoYXQgYnVmZmVyZWQgSS9PIG9mZmVycyBwcmVkaWN0YWJsZSBwZXJmb3JtYW5jZSByZWdhcmRsZXNzIG9mIHRoZSBwbGF0Zm9ybQotYW5kIHRoZSBiYWNraW5nIGRldmljZS4gIFRoZXJlZm9yZSwgaXQgaXMgbW9zdCBhbHdheXMgcHJlZmVyYWJsZSB0byB1c2UgYnVmZmVyZWQKLUkvTyByYXRoZXIgdGhhbiB1bmJ1ZmZlcmVkIEkvTyBmb3IgYmluYXJ5IGRhdGFsCithbmQgdGhlIGJhY2tpbmcgZGV2aWNlLiAgVGhlcmVmb3JlLCBpdCBpcyBhbG1vc3QgYWx3YXlzIHByZWZlcmFibGUgdG8gdXNlCitidWZmZXJlZCBJL08gcmF0aGVyIHRoYW4gdW5idWZmZXJlZCBJL08gZm9yIGJpbmFyeSBkYXRhLgogCiBUZXh0IEkvTwogXl5eXl5eXl4KQEAgLTg4Nyw4ICs5MTEsOCBAQAogOmNsYXNzOmBCdWZmZXJlZFdyaXRlcmAsIDpjbGFzczpgQnVmZmVyZWRSYW5kb21gIGFuZCA6Y2xhc3M6YEJ1ZmZlcmVkUldQYWlyYCkKIGFyZSBub3QgcmVlbnRyYW50LiAgV2hpbGUgcmVlbnRyYW50IGNhbGxzIHdpbGwgbm90IGhhcHBlbiBpbiBub3JtYWwgc2l0dWF0aW9ucywKIHRoZXkgY2FuIGFyaXNlIGZyb20gZG9pbmcgSS9PIGluIGEgOm1vZDpgc2lnbmFsYCBoYW5kbGVyLiAgSWYgYSB0aHJlYWQgdHJpZXMgdG8KLXJlbnRlciBhIGJ1ZmZlcmVkIG9iamVjdCB3aGljaCBpdCBpcyBhbHJlYWR5IGFjY2Vzc2luZywgYSA6ZXhjOmBSdW50aW1lRXJyb3JgIGlzCi1yYWlzZWQuICBOb3RlIHRoaXMgZG9lc24ndCBwcm9oaWJpdCBhIGRpZmZlcmVudCB0aHJlYWQgZnJvbSBlbnRlcmluZyB0aGUKK3JlLWVudGVyIGEgYnVmZmVyZWQgb2JqZWN0IHdoaWNoIGl0IGlzIGFscmVhZHkgYWNjZXNzaW5nLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAKK2lzIHJhaXNlZC4gIE5vdGUgdGhpcyBkb2Vzbid0IHByb2hpYml0IGEgZGlmZmVyZW50IHRocmVhZCBmcm9tIGVudGVyaW5nIHRoZQogYnVmZmVyZWQgb2JqZWN0LgogCiBUaGUgYWJvdmUgaW1wbGljaXRseSBleHRlbmRzIHRvIHRleHQgZmlsZXMsIHNpbmNlIHRoZSA6ZnVuYzpgb3BlbigpYCBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXBhZGRyZXNzLnJzdCBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZkODRhZgotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2lwYWRkcmVzcy5yc3QKQEAgLTAsMCArMSw4MDQgQEAKKzptb2Q6YGlwYWRkcmVzc2AgLS0tIElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IGlwYWRkcmVzcworICAgOnN5bm9wc2lzOiBJUHY0L0lQdjYgbWFuaXB1bGF0aW9uIGxpYnJhcnkuCisuLiBtb2R1bGVhdXRob3I6OiBQZXRlciBNb29keQorCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9pcGFkZHJlc3MucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKKy4uIG5vdGU6OgorCisgICBUaGUgYGBpcGFkZHJlc3NgYCBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQorICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKKyAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgcGFja2FnZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAorICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCisKKzptb2Q6YGlwYWRkcmVzc2AgcHJvdmlkZXMgdGhlIGNhcGFiaWxpdGllcyB0byBjcmVhdGUsIG1hbmlwdWxhdGUgYW5kCitvcGVyYXRlIG9uIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzIGFuZCBuZXR3b3Jrcy4KKworVGhlIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBpbiB0aGlzIG1vZHVsZSBtYWtlIGl0IHN0cmFpZ2h0Zm9yd2FyZCB0byBoYW5kbGUKK3ZhcmlvdXMgdGFza3MgcmVsYXRlZCB0byBJUCBhZGRyZXNzZXMsIGluY2x1ZGluZyBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0d28KK2hvc3RzIGFyZSBvbiB0aGUgc2FtZSBzdWJuZXQsIGl0ZXJhdGluZyBvdmVyIGFsbCBob3N0cyBpbiBhIHBhcnRpY3VsYXIKK3N1Ym5ldCwgY2hlY2tpbmcgd2hldGhlciBvciBub3QgYSBzdHJpbmcgcmVwcmVzZW50cyBhIHZhbGlkIElQIGFkZHJlc3Mgb3IKK25ldHdvcmsgZGVmaW5pdGlvbiwgYW5kIHNvIG9uLgorCitUaGlzIGlzIHRoZSBmdWxsIG1vZHVsZSBBUEkgcmVmZXJlbmNlIC0gZm9yIGFuIG92ZXJ2aWV3IGFuZCBpbnRyb2R1Y3Rpb24sCitzZWUgOnJlZjpgaXBhZGRyZXNzLWhvd3RvYC4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworQ29udmVuaWVuY2UgZmFjdG9yeSBmdW5jdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBpcGFkZHJlc3NgIG1vZHVsZSBwcm92aWRlcyBmYWN0b3J5IGZ1bmN0aW9ucyB0byBjb252ZW5pZW50bHkgY3JlYXRlCitJUCBhZGRyZXNzZXMsIG5ldHdvcmtzIGFuZCBpbnRlcmZhY2VzOgorCisuLiBmdW5jdGlvbjo6IGlwX2FkZHJlc3MoYWRkcmVzcykKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NEFkZHJlc3NgIG9yIDpjbGFzczpgSVB2NkFkZHJlc3NgIG9iamVjdCBkZXBlbmRpbmcgb24KKyAgIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gIEVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2VzIG1heSBiZQorICAgc3VwcGxpZWQ7IGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorICAgQSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbGlkIElQdjQKKyAgIG9yIElQdjYgYWRkcmVzcy4KKworLi4gdGVzdHNldHVwOjoKKyAgID4+PiBpbXBvcnQgaXBhZGRyZXNzCisgICA+Pj4gZnJvbSBpcGFkZHJlc3MgaW1wb3J0IChpcF9uZXR3b3JrLCBJUHY0QWRkcmVzcywgSVB2NEludGVyZmFjZSwKKyAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgIElQdjROZXR3b3JrKQorCis6OgorCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICA+Pj4gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzIwMDE6ZGI4OjonKQorICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorCisKKy4uIGZ1bmN0aW9uOjogaXBfbmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9VHJ1ZSkKKworICAgUmV0dXJuIGFuIDpjbGFzczpgSVB2NE5ldHdvcmtgIG9yIDpjbGFzczpgSVB2Nk5ldHdvcmtgIG9iamVjdCBkZXBlbmRpbmcgb24KKyAgIHRoZSBJUCBhZGRyZXNzIHBhc3NlZCBhcyBhcmd1bWVudC4gICphZGRyZXNzKiBpcyBhIHN0cmluZyBvciBpbnRlZ2VyCisgICByZXByZXNlbnRpbmcgdGhlIElQIG5ldHdvcmsuICBFaXRoZXIgSVB2NCBvciBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsKKyAgIGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LiAgKnN0cmljdCoKKyAgIGlzIHBhc3NlZCB0byA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBjb25zdHJ1Y3Rvci4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqYWRkcmVzcyogZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgSVB2NCBvcgorICAgSVB2NiBhZGRyZXNzLCBvciBpZiB0aGUgbmV0d29yayBoYXMgaG9zdCBiaXRzIHNldC4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMTY4LjAuMC8yOCcpCisgICBJUHY0TmV0d29yaygnMTkyLjE2OC4wLjAvMjgnKQorCisKKy4uIGZ1bmN0aW9uOjogaXBfaW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIFJldHVybiBhbiA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgIG9yIDpjbGFzczpgSVB2NkludGVyZmFjZWAgb2JqZWN0IGRlcGVuZGluZworICAgb24gdGhlIElQIGFkZHJlc3MgcGFzc2VkIGFzIGFyZ3VtZW50LiAgKmFkZHJlc3MqIGlzIGEgc3RyaW5nIG9yIGludGVnZXIKKyAgIHJlcHJlc2VudGluZyB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsKKyAgIGludGVnZXJzIGxlc3MgdGhhbiAyKiozMiB3aWxsIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LiAgQQorICAgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkIGlmICphZGRyZXNzKiBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBJUHY0IG9yCisgICBJUHY2IGFkZHJlc3MuCisKK09uZSBkb3duc2lkZSBvZiB0aGVzZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgaXMgdGhhdCB0aGUgbmVlZCB0byBoYW5kbGUgYm90aAorSVB2NCBhbmQgSVB2NiBmb3JtYXRzIG1lYW5zIHRoYXQgZXJyb3IgbWVzc2FnZXMgcHJvdmlkZSBtaW5pbWFsCitpbmZvcm1hdGlvbiBvbiB0aGUgcHJlY2lzZSBlcnJvciwgYXMgdGhlIGZ1bmN0aW9ucyBkb24ndCBrbm93IHdoZXRoZXIgdGhlCitJUHY0IG9yIElQdjYgZm9ybWF0IHdhcyBpbnRlbmRlZC4gTW9yZSBkZXRhaWxlZCBlcnJvciByZXBvcnRpbmcgY2FuIGJlCitvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBhcHByb3ByaWF0ZSB2ZXJzaW9uIHNwZWNpZmljIGNsYXNzIGNvbnN0cnVjdG9ycworZGlyZWN0bHkuCisKKworSVAgQWRkcmVzc2VzCistLS0tLS0tLS0tLS0KKworQWRkcmVzcyBvYmplY3RzCiteXl5eXl5eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgSVB2NEFkZHJlc3NgIGFuZCA6Y2xhc3M6YElQdjZBZGRyZXNzYCBvYmplY3RzIHNoYXJlIGEgbG90IG9mIGNvbW1vbgorYXR0cmlidXRlcy4gIFNvbWUgYXR0cmlidXRlcyB0aGF0IGFyZSBvbmx5IG1lYW5pbmdmdWwgZm9yIElQdjYgYWRkcmVzc2VzIGFyZQorYWxzbyBpbXBsZW1lbnRlZCBieSA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvYmplY3RzLCBpbiBvcmRlciB0byBtYWtlIGl0IGVhc2llciB0bword3JpdGUgY29kZSB0aGF0IGhhbmRsZXMgYm90aCBJUCB2ZXJzaW9ucyBjb3JyZWN0bHkuCisKKy4uIGNsYXNzOjogSVB2NEFkZHJlc3MoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjQgYWRkcmVzcy4gIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29uc3RpdHV0ZXMgYSB2YWxpZCBJUHY0IGFkZHJlc3M6CisKKyAgIDEuIEEgc3RyaW5nIGluIGRlY2ltYWwtZG90IG5vdGF0aW9uLCBjb25zaXN0aW5nIG9mIGZvdXIgZGVjaW1hbCBpbnRlZ2VycyBpbgorICAgICAgdGhlIGluY2x1c2l2ZSByYW5nZSAwLTI1NSwgc2VwYXJhdGVkIGJ5IGRvdHMgKGUuZy4gYGAxOTIuMTY4LjAuMWBgKS4gRWFjaAorICAgICAgaW50ZWdlciByZXByZXNlbnRzIGFuIG9jdGV0IChieXRlKSBpbiB0aGUgYWRkcmVzcy4gTGVhZGluZyB6ZXJvZXMgYXJlCisgICAgICB0b2xlcmF0ZWQgb25seSBmb3IgdmFsdWVzIGxlc3MgdGhlbiA4IChhcyB0aGVyZSBpcyBubyBhbWJpZ3VpdHkKKyAgICAgIGJldHdlZW4gdGhlIGRlY2ltYWwgYW5kIG9jdGFsIGludGVycHJldGF0aW9ucyBvZiBzdWNoIHN0cmluZ3MpLgorICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAzMiBiaXRzLgorICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggNCAobW9zdAorICAgICAgc2lnbmlmaWNhbnQgb2N0ZXQgZmlyc3QpLgorCisgICA+Pj4gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKQorICAgPj4+IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygzMjMyMjM1NTIxKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykKKyAgID4+PiBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYidceEMwXHhBOFx4MDBceDAxJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMTY4LjAuMScpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKworICAgICAgVGhlIGFwcHJvcHJpYXRlIHZlcnNpb24gbnVtYmVyOiBgYDRgYCBmb3IgSVB2NCwgYGA2YGAgZm9yIElQdjYuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKworICAgICAgVGhlIHRvdGFsIG51bWJlciBvZiBiaXRzIGluIHRoZSBhZGRyZXNzIHJlcHJlc2VudGF0aW9uIGZvciB0aGlzCisgICAgICB2ZXJzaW9uOiBgYDMyYGAgZm9yIElQdjQsIGBgMTI4YGAgZm9yIElQdjYuCisKKyAgICAgIFRoZSBwcmVmaXggZGVmaW5lcyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcgYml0cyBpbiBhbiAgYWRkcmVzcyB0aGF0CisgICAgICBhcmUgY29tcGFyZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFuIGFkZHJlc3MgaXMgcGFydCBvZiBhCisgICAgICBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBjb21wcmVzc2VkCisgICAuLiBhdHRyaWJ1dGU6OiBleHBsb2RlZAorCisgICAgICBUaGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLiBMZWFkaW5nIHplcm9lcworICAgICAgYXJlIG5ldmVyIGluY2x1ZGVkIGluIHRoZSByZXByZXNlbnRhdGlvbi4KKworICAgICAgQXMgSVB2NCBkb2VzIG5vdCBkZWZpbmUgYSBzaG9ydGhhbmQgbm90YXRpb24gZm9yIGFkZHJlc3NlcyB3aXRoIG9jdGV0cworICAgICAgc2V0IHRvIHplcm8sIHRoZXNlIHR3byBhdHRyaWJ1dGVzIGFyZSBhbHdheXMgdGhlIHNhbWUgYXMgYGBzdHIoYWRkcilgYAorICAgICAgZm9yIElQdjQgYWRkcmVzc2VzLiBFeHBvc2luZyB0aGVzZSBhdHRyaWJ1dGVzIG1ha2VzIGl0IGVhc2llciB0bworICAgICAgd3JpdGUgZGlzcGxheSBjb2RlIHRoYXQgY2FuIGhhbmRsZSBib3RoIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwYWNrZWQKKworICAgICAgVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MgLSBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZgorICAgICAgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aCAobW9zdCBzaWduaWZpY2FudCBvY3RldCBmaXJzdCkuIFRoaXMgaXMgNCBieXRlcworICAgICAgZm9yIElQdjQgYW5kIDE2IGJ5dGVzIGZvciBJUHY2LgorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuICBTZWUKKyAgICAgIDpSRkM6YDMxNzFgIChmb3IgSVB2NCkgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorCisgICAgICBgYFRydWVgYCBpZiB0aGUgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuICBTZWUKKyAgICAgIDpSRkM6YDE5MThgIChmb3IgSVB2NCkgb3IgOlJGQzpgNDE5M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgdW5zcGVjaWZpZWQuICBTZWUgOlJGQzpgNTM3NWAgKGZvciBJUHY0KQorICAgICAgb3IgOlJGQzpgMjM3M2AgKGZvciBJUHY2KS4KKworICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoaXMgaXMgYSBsb29wYmFjayBhZGRyZXNzLiAgU2VlIDpSRkM6YDMzMzBgIChmb3IgSVB2NCkKKyAgICAgIG9yIDpSRkM6YDIzNzNgIChmb3IgSVB2NikuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgYGBUcnVlYGAgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwgdXNhZ2UuICBTZWUKKyAgICAgIDpSRkM6YDM5MjdgLgorCisKKy4uIGNsYXNzOjogSVB2NkFkZHJlc3MoYWRkcmVzcykKKworICAgQ29uc3RydWN0IGFuIElQdjYgYWRkcmVzcy4gIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICphZGRyZXNzKiBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MuCisKKyAgIFRoZSBmb2xsb3dpbmcgY29uc3RpdHV0ZXMgYSB2YWxpZCBJUHY2IGFkZHJlc3M6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgZ3JvdXBzIG9mIGZvdXIgaGV4YWRlY2ltYWwgZGlnaXRzLCBlYWNoCisgICAgICBncm91cCByZXByZXNlbnRpbmcgMTYgYml0cy4gIFRoZSBncm91cHMgYXJlIHNlcGFyYXRlZCBieSBjb2xvbnMuCisgICAgICBUaGlzIGRlc2NyaWJlcyBhbiAqZXhwbG9kZWQqIChsb25naGFuZCkgbm90YXRpb24uICBUaGUgc3RyaW5nIGNhbgorICAgICAgYWxzbyBiZSAqY29tcHJlc3NlZCogKHNob3J0aGFuZCBub3RhdGlvbikgYnkgdmFyaW91cyBtZWFucy4gIFNlZQorICAgICAgOlJGQzpgNDI5MWAgZm9yIGRldGFpbHMuICBGb3IgZXhhbXBsZSwKKyAgICAgIGBgIjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowYWJjOjAwMDc6MGRlZiJgYCBjYW4gYmUgY29tcHJlc3NlZCB0bworICAgICAgYGAiOjphYmM6NzpkZWYiYGAuCisgICAyLiBBbiBpbnRlZ2VyIHRoYXQgZml0cyBpbnRvIDEyOCBiaXRzLgorICAgMy4gQW4gaW50ZWdlciBwYWNrZWQgaW50byBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBvZiBsZW5ndGggMTYsIGJpZy1lbmRpYW4uCisKKyAgID4+PiBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKKyAgIElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbXByZXNzZWQKKworICAgVGhlIHNob3J0IGZvcm0gb2YgdGhlIGFkZHJlc3MgcmVwcmVzZW50YXRpb24sIHdpdGggbGVhZGluZyB6ZXJvZXMgaW4KKyAgIGdyb3VwcyBvbWl0dGVkIGFuZCB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiBncm91cHMgY29uc2lzdGluZyBlbnRpcmVseSBvZgorICAgemVyb2VzIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBlbXB0eSBncm91cC4KKworICAgVGhpcyBpcyBhbHNvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBgYHN0cihhZGRyKWBgIGZvciBJUHY2IGFkZHJlc3Nlcy4KKworICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgVGhlIGxvbmcgZm9ybSBvZiB0aGUgYWRkcmVzcyByZXByZXNlbnRhdGlvbiwgd2l0aCBhbGwgbGVhZGluZyB6ZXJvZXMgYW5kCisgICBncm91cHMgY29uc2lzdGluZyBlbnRpcmVseSBvZiB6ZXJvZXMgaW5jbHVkZWQuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHBhY2tlZAorICAgLi4gYXR0cmlidXRlOjogdmVyc2lvbgorICAgLi4gYXR0cmlidXRlOjogbWF4X3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogaXNfbXVsdGljYXN0CisgICAuLiBhdHRyaWJ1dGU6OiBpc19wcml2YXRlCisgICAuLiBhdHRyaWJ1dGU6OiBpc191bnNwZWNpZmllZAorICAgLi4gYXR0cmlidXRlOjogaXNfcmVzZXJ2ZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xvb3BiYWNrCisgICAuLiBhdHRyaWJ1dGU6OiBpc19saW5rX2xvY2FsCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19zaXRlX2xvY2FsCisKKyAgICAgIGBgVHJ1ZWBgIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBzaXRlLWxvY2FsIHVzYWdlLiAgTm90ZSB0aGF0CisgICAgICB0aGUgc2l0ZS1sb2NhbCBhZGRyZXNzIHNwYWNlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgOlJGQzpgMzg3OWAuIFVzZQorICAgICAgOmF0dHI6YH5JUHY0QWRkcmVzcy5pc19wcml2YXRlYCB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUKKyAgICAgIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbCBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSA6UkZDOmA0MTkzYC4KKworICAgLi4gYXR0cmlidXRlOjogaXB2NF9tYXBwZWQKKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSBJUHY0IG1hcHBlZCBhZGRyZXNzZXMgKHN0YXJ0aW5nIHdpdGgKKyAgICAgIGBgOjpGRkZGLzk2YGApLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0IHRoZSBlbWJlZGRlZCBJUHY0IGFkZHJlc3MuCisgICAgICBGb3IgYW55IG90aGVyIGFkZHJlc3MsIHRoaXMgcHJvcGVydHkgd2lsbCBiZSBgYE5vbmVgYC4KKworICAgLi4gYXR0cmlidXRlOjogc2l4dG9mb3VyCisKKyAgICAgIEZvciBhZGRyZXNzZXMgdGhhdCBhcHBlYXIgdG8gYmUgNnRvNCBhZGRyZXNzZXMgIChzdGFydGluZyB3aXRoCisgICAgICBgYDIwMDI6Oi8xNmBgKSBhcyBkZWZpbmVkIGJ5IDpSRkM6YDMwNTZgLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0CisgICAgICB0aGUgZW1iZWRkZWQgSVB2NCBhZGRyZXNzLiAgRm9yIGFueSBvdGhlciBhZGRyZXNzLCB0aGlzIHByb3BlcnR5IHdpbGwKKyAgICAgIGJlIGBgTm9uZWBgLgorCisgICAuLiBhdHRyaWJ1dGU6OiB0ZXJlZG8KKworICAgICAgRm9yIGFkZHJlc3NlcyB0aGF0IGFwcGVhciB0byBiZSBUZXJlZG8gYWRkcmVzc2VzIChzdGFydGluZyB3aXRoCisgICAgICBgYDIwMDE6Oi8zMmBgKSBhcyBkZWZpbmVkIGJ5IDpSRkM6YDQzODBgLCB0aGlzIHByb3BlcnR5IHdpbGwgcmVwb3J0CisgICAgICB0aGUgZW1iZWRkZWQgYGAoc2VydmVyLCBjbGllbnQpYGAgSVAgYWRkcmVzcyBwYWlyLiAgRm9yIGFueSBvdGhlcgorICAgICAgYWRkcmVzcywgdGhpcyBwcm9wZXJ0eSB3aWxsIGJlIGBgTm9uZWBgLgorCisKK0NvbnZlcnNpb24gdG8gU3RyaW5ncyBhbmQgSW50ZWdlcnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gaW50ZXJvcGVyYXRlIHdpdGggbmV0d29ya2luZyBpbnRlcmZhY2VzIHN1Y2ggYXMgdGhlIHNvY2tldCBtb2R1bGUsCithZGRyZXNzZXMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gc3RyaW5ncyBvciBpbnRlZ2Vycy4gVGhpcyBpcyBoYW5kbGVkIHVzaW5nCit0aGUgOmZ1bmM6YHN0cmAgYW5kIDpmdW5jOmBpbnRgIGJ1aWx0aW4gZnVuY3Rpb25zOjoKKworICAgPj4+IHN0cihpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMC4xJykpCisgICAnMTkyLjE2OC4wLjEnCisgICA+Pj4gaW50KGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjE2OC4wLjEnKSkKKyAgIDMyMzIyMzU1MjEKKyAgID4+PiBzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKyAgICc6OjEnCisgICA+Pj4gaW50KGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpCisgICAxCisKKworT3BlcmF0b3JzCiteXl5eXl5eXl4KKworQWRkcmVzcyBvYmplY3RzIHN1cHBvcnQgc29tZSBvcGVyYXRvcnMuICBVbmxlc3Mgc3RhdGVkIG90aGVyd2lzZSwgb3BlcmF0b3JzIGNhbgorb25seSBiZSBhcHBsaWVkIGJldHdlZW4gY29tcGF0aWJsZSBvYmplY3RzIChpLmUuIElQdjQgd2l0aCBJUHY0LCBJUHY2IHdpdGgKK0lQdjYpLgorCisKK0xvZ2ljYWwgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIgorCitBZGRyZXNzIG9iamVjdHMgY2FuIGJlIGNvbXBhcmVkIHdpdGggdGhlIHVzdWFsIHNldCBvZiBsb2dpY2FsIG9wZXJhdG9ycy4gIFNvbWUKK2V4YW1wbGVzOjoKKworICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSA+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgVHJ1ZQorICAgPj4+IElQdjRBZGRyZXNzKCcxMjcuMC4wLjInKSA9PSBJUHY0QWRkcmVzcygnMTI3LjAuMC4xJykKKyAgIEZhbHNlCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpICE9IElQdjRBZGRyZXNzKCcxMjcuMC4wLjEnKQorICAgVHJ1ZQorCisKK0FyaXRobWV0aWMgb3BlcmF0b3JzCisiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitJbnRlZ2VycyBjYW4gYmUgYWRkZWQgdG8gb3Igc3VidHJhY3RlZCBmcm9tIGFkZHJlc3Mgb2JqZWN0cy4gIFNvbWUgZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpICsgMworICAgSVB2NEFkZHJlc3MoJzEyNy4wLjAuNScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzEyNy4wLjAuMicpIC0gMworICAgSVB2NEFkZHJlc3MoJzEyNi4yNTUuMjU1LjI1NScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzI1NS4yNTUuMjU1LjI1NScpICsgMQorICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yOiA0Mjk0OTY3Mjk2ICg+PSAyKiozMikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MKKworCitJUCBOZXR3b3JrIGRlZmluaXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YElQdjROZXR3b3JrYCBhbmQgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cyBwcm92aWRlIGEgbWVjaGFuaXNtCitmb3IgZGVmaW5pbmcgYW5kIGluc3BlY3RpbmcgSVAgbmV0d29yayBkZWZpbml0aW9ucy4gIEEgbmV0d29yayBkZWZpbml0aW9uCitjb25zaXN0cyBvZiBhICptYXNrKiBhbmQgYSAqbmV0d29yayBhZGRyZXNzKiwgYW5kIGFzIHN1Y2ggZGVmaW5lcyBhIHJhbmdlIG9mCitJUCBhZGRyZXNzZXMgdGhhdCBlcXVhbCB0aGUgbmV0d29yayBhZGRyZXNzIHdoZW4gbWFza2VkIChiaW5hcnkgQU5EKSB3aXRoIHRoZQorbWFzay4gIEZvciBleGFtcGxlLCBhIG5ldHdvcmsgZGVmaW5pdGlvbiB3aXRoIHRoZSBtYXNrIGBgMjU1LjI1NS4yNTUuMGBgIGFuZAordGhlIG5ldHdvcmsgYWRkcmVzcyBgYDE5Mi4xNjguMS4wYGAgY29uc2lzdHMgb2YgSVAgYWRkcmVzc2VzIGluIHRoZSBpbmNsdXNpdmUKK3JhbmdlIGBgMTkyLjE2OC4xLjBgYCB0byBgYDE5Mi4xNjguMS4yNTVgYC4KKworCitQcmVmaXgsIG5ldCBtYXNrIGFuZCBob3N0IG1hc2sKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGVyZSBhcmUgc2V2ZXJhbCBlcXVpdmFsZW50IHdheXMgdG8gc3BlY2lmeSBJUCBuZXR3b3JrIG1hc2tzLiAgQSAqcHJlZml4KgorYGAvPG5iaXRzPmBgIGlzIGEgbm90YXRpb24gdGhhdCBkZW5vdGVzIGhvdyBtYW55IGhpZ2gtb3JkZXIgYml0cyBhcmUgc2V0IGluCit0aGUgbmV0d29yayBtYXNrLiAgQSAqbmV0IG1hc2sqIGlzIGFuIElQIGFkZHJlc3Mgd2l0aCBzb21lIG51bWJlciBvZgoraGlnaC1vcmRlciBiaXRzIHNldC4gIFRodXMgdGhlIHByZWZpeCBgYC8yNGBgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIG5ldCBtYXNrCitgYDI1NS4yNTUuMjU1LjBgYCBpbiBJUHY0LCBvciBgYGZmZmY6ZmYwMDo6YGAgaW4gSVB2Ni4gIEluIGFkZGl0aW9uLCBhCisqaG9zdCBtYXNrKiBpcyB0aGUgbG9naWNhbCBpbnZlcnNlIG9mIGEgKm5ldCBtYXNrKiwgYW5kIGlzIHNvbWV0aW1lcyB1c2VkCisoZm9yIGV4YW1wbGUgaW4gQ2lzY28gYWNjZXNzIGNvbnRyb2wgbGlzdHMpIHRvIGRlbm90ZSBhIG5ldHdvcmsgbWFzay4gIFRoZQoraG9zdCBtYXNrIGVxdWl2YWxlbnQgdG8gYGAvMjRgYCBpbiBJUHY0IGlzIGBgMC4wLjAuMjU1YGAuCisKKworTmV0d29yayBvYmplY3RzCiteXl5eXl5eXl5eXl5eXl4KKworQWxsIGF0dHJpYnV0ZXMgaW1wbGVtZW50ZWQgYnkgYWRkcmVzcyBvYmplY3RzIGFyZSBpbXBsZW1lbnRlZCBieSBuZXR3b3JrCitvYmplY3RzIGFzIHdlbGwuICBJbiBhZGRpdGlvbiwgbmV0d29yayBvYmplY3RzIGltcGxlbWVudCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCitBbGwgb2YgdGhlc2UgYXJlIGNvbW1vbiBiZXR3ZWVuIDpjbGFzczpgSVB2NE5ldHdvcmtgIGFuZCA6Y2xhc3M6YElQdjZOZXR3b3JrYCwKK3NvIHRvIGF2b2lkIGR1cGxpY2F0aW9uIHRoZXkgYXJlIG9ubHkgZG9jdW1lbnRlZCBmb3IgOmNsYXNzOmBJUHY0TmV0d29ya2AuCisKKy4uIGNsYXNzOjogSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0PVRydWUpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY0IG5ldHdvcmsgZGVmaW5pdGlvbi4gICphZGRyZXNzKiBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIDEuIEEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgYW4gSVAgYWRkcmVzcyBhbmQgYW4gb3B0aW9uYWwgbWFzaywgc2VwYXJhdGVkIGJ5CisgICAgICBhIHNsYXNoIChgYC9gYCkuICBUaGUgSVAgYWRkcmVzcyBpcyB0aGUgbmV0d29yayBhZGRyZXNzLCBhbmQgdGhlIG1hc2sKKyAgICAgIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgbnVtYmVyLCB3aGljaCBtZWFucyBpdCdzIGEgKnByZWZpeCosIG9yIGEgc3RyaW5nCisgICAgICByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IGFkZHJlc3MuICBJZiBpdCdzIHRoZSBsYXR0ZXIsIHRoZSBtYXNrIGlzCisgICAgICBpbnRlcnByZXRlZCBhcyBhICpuZXQgbWFzayogaWYgaXQgc3RhcnRzIHdpdGggYSBub24temVybyBmaWVsZCwgb3IgYXMKKyAgICAgIGEgKmhvc3QgbWFzayogaWYgaXQgc3RhcnRzIHdpdGggYSB6ZXJvIGZpZWxkLiAgSWYgbm8gbWFzayBpcyBwcm92aWRlZCwKKyAgICAgIGl0J3MgY29uc2lkZXJlZCB0byBiZSBgYC8zMmBgLgorCisgICAgICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyAqYWRkcmVzcyogc3BlY2lmaWNhdGlvbnMgYXJlIGVxdWl2YWxlbnQ6CisgICAgICBgYDE5Mi4xNjguMS4wLzI0YGAsIGBgMTkyLjE2OC4xLjAvMjU1LjI1NS4yNTUuMGBgIGFuZAorICAgICAgYGAxOTIuMTY4LjEuMC8wLjAuMC4yNTVgYC4KKworICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAzMiBiaXRzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEKKyAgICAgIHNpbmdsZS1hZGRyZXNzIG5ldHdvcmssIHdpdGggdGhlIG5ldHdvcmsgYWRkcmVzcyBiZWluZyAqYWRkcmVzcyogYW5kCisgICAgICB0aGUgbWFzayBiZWluZyBgYC8zMmBgLgorCisgICAzLiBBbiBpbnRlZ2VyIHBhY2tlZCBpbnRvIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0IG9mIGxlbmd0aCA0LCBiaWctZW5kaWFuLgorICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCisKKyAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjQKKyAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgorICAgYW4gSVB2NCBhZGRyZXNzLgorCisgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCBhbmQgaG9zdCBiaXRzIGFyZSBzZXQgaW4gdGhlIHN1cHBsaWVkIGFkZHJlc3MsCisgICB0aGVuIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGhvc3QgYml0cyBhcmUgbWFza2VkIG91dAorICAgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGFkZHJlc3MuCisKKyAgIFVubGVzcyBzdGF0ZWQgb3RoZXJ3aXNlLCBhbGwgbmV0d29yayBtZXRob2RzIGFjY2VwdGluZyBvdGhlciBuZXR3b3JrL2FkZHJlc3MKKyAgIG9iamVjdHMgd2lsbCByYWlzZSA6ZXhjOmBUeXBlRXJyb3JgIGlmIHRoZSBhcmd1bWVudCdzIElQIHZlcnNpb24gaXMKKyAgIGluY29tcGF0aWJsZSB0byBgYHNlbGZgYAorCisgICAuLiBhdHRyaWJ1dGU6OiB2ZXJzaW9uCisgICAuLiBhdHRyaWJ1dGU6OiBtYXhfcHJlZml4bGVuCisKKyAgICAgIFJlZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBkb2N1bWVudGF0aW9uIGluCisgICAgICA6Y2xhc3M6YElQdjRBZGRyZXNzYAorCisgICAuLiBhdHRyaWJ1dGU6OiBpc19tdWx0aWNhc3QKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3ByaXZhdGUKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Vuc3BlY2lmaWVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19yZXNlcnZlZAorICAgLi4gYXR0cmlidXRlOjogaXNfbG9vcGJhY2sKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX2xpbmtfbG9jYWwKKworICAgICAgVGhlc2UgYXR0cmlidXRlcyBhcmUgdHJ1ZSBmb3IgdGhlIG5ldHdvcmsgYXMgYSB3aG9sZSBpZiB0aGV5IGFyZSB0cnVlCisgICAgICB0cnVlIGZvciBib3RoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZSBicm9hZGNhc3QgYWRkcmVzcworCisgICAuLiBhdHRyaWJ1dGU6OiBuZXR3b3JrX2FkZHJlc3MKKworICAgICAgVGhlIG5ldHdvcmsgYWRkcmVzcyBmb3IgdGhlIG5ldHdvcmsuIFRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZQorICAgICAgcHJlZml4IGxlbmd0aCB0b2dldGhlciB1bmlxdWVseSBkZWZpbmUgYSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBicm9hZGNhc3RfYWRkcmVzcworCisgICAgICBUaGUgYnJvYWRjYXN0IGFkZHJlc3MgZm9yIHRoZSBuZXR3b3JrLiBQYWNrZXRzIHNlbnQgdG8gdGhlIGJyb2FkY2FzdAorICAgICAgYWRkcmVzcyBzaG91bGQgYmUgcmVjZWl2ZWQgYnkgZXZlcnkgaG9zdCBvbiB0aGUgbmV0d29yay4KKworICAgLi4gYXR0cmlidXRlOjogaG9zdCBtYXNrCisKKyAgICAgIFRoZSBob3N0IG1hc2ssIGFzIGEgc3RyaW5nLgorCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG5ldHdvcmssIHdpdGggdGhlIG1hc2sgaW4gcHJlZml4CisgICAgICBub3RhdGlvbi4KKworICAgICAgYGB3aXRoX3ByZWZpeGxlbmBgIGFuZCBgYGNvbXByZXNzZWRgYCBhcmUgYWx3YXlzIHRoZSBzYW1lIGFzCisgICAgICBgYHN0cihuZXR3b3JrKWBgLgorICAgICAgYGBleHBsb2RlZGBgIHVzZXMgdGhlIGV4cGxvZGVkIGZvcm0gdGhlIG5ldHdvcmsgYWRkcmVzcy4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuZXR3b3JrLCB3aXRoIHRoZSBtYXNrIGluIG5ldCBtYXNrCisgICAgICBub3RhdGlvbi4KKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBBIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yaywgd2l0aCB0aGUgbWFzayBpbiBob3N0IG1hc2sKKyAgICAgIG5vdGF0aW9uLgorCisgICAuLiBhdHRyaWJ1dGU6OiBudW1fYWRkcmVzc2VzCisKKyAgICAgIFRoZSB0b3RhbCBudW1iZXIgb2YgYWRkcmVzc2VzIGluIHRoZSBuZXR3b3JrLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVmaXhsZW4KKworICAgICAgTGVuZ3RoIG9mIHRoZSBuZXR3b3JrIHByZWZpeCwgaW4gYml0cy4KKworICAgLi4gbWV0aG9kOjogaG9zdHMoKQorCisgICAgICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHVzYWJsZSBob3N0cyBpbiB0aGUgbmV0d29yay4gIFRoZSB1c2FibGUKKyAgICAgIGhvc3RzIGFyZSBhbGwgdGhlIElQIGFkZHJlc3NlcyB0aGF0IGJlbG9uZyB0byB0aGUgbmV0d29yaywgZXhjZXB0IHRoZQorICAgICAgbmV0d29yayBhZGRyZXNzIGl0c2VsZiBhbmQgdGhlIG5ldHdvcmsgYnJvYWRjYXN0IGFkZHJlc3MuCisKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOScpLmhvc3RzKCkpICAjZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFCisgICAgICAgICBbSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi4yJyksCisgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMycpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi40JyksCisgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpLCBJUHY0QWRkcmVzcygnMTkyLjAuMi42JyldCisKKyAgIC4uIG1ldGhvZDo6IG92ZXJsYXBzKG90aGVyKQorCisgICAgICBgYFRydWVgYCBpZiB0aGlzIG5ldHdvcmsgaXMgcGFydGx5IG9yIHdob2xseSBjb250YWluZWQgaW4gKm90aGVyKiBvcgorICAgICAgb3IgKm90aGVyKiBpcyB3aG9sbHkgY29udGFpbmVkIGluIHRoaXMgbmV0d29yay4KKworICAgLi4gbWV0aG9kOjogYWRkcmVzc19leGNsdWRlKG5ldHdvcmspCisKKyAgICAgIENvbXB1dGVzIHRoZSBuZXR3b3JrIGRlZmluaXRpb25zIHJlc3VsdGluZyBmcm9tIHJlbW92aW5nIHRoZSBnaXZlbgorICAgICAgKm5ldHdvcmsqIGZyb20gdGhpcyBvbmUuICBSZXR1cm5zIGFuIGl0ZXJhdG9yIG9mIG5ldHdvcmsgb2JqZWN0cy4KKyAgICAgIFJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCBpZiAqbmV0d29yayogaXMgbm90IGNvbXBsZXRlbHkgY29udGFpbmVkIGluCisgICAgICB0aGlzIG5ldHdvcmsuCisKKyAgICAgICAgID4+PiBuMSA9IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpCisgICAgICAgICA+Pj4gbjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICAgPj4+IGxpc3QobjEuYWRkcmVzc19leGNsdWRlKG4yKSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi44LzI5JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjQvMzAnKSwKKyAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4yLzMxJyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKV0KKworICAgLi4gbWV0aG9kOjogc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisKKyAgICAgIFRoZSBzdWJuZXRzIHRoYXQgam9pbiB0byBtYWtlIHRoZSBjdXJyZW50IG5ldHdvcmsgZGVmaW5pdGlvbiwgZGVwZW5kaW5nCisgICAgICBvbiB0aGUgYXJndW1lbnQgdmFsdWVzLiAgKnByZWZpeGxlbl9kaWZmKiBpcyB0aGUgYW1vdW50IG91ciBwcmVmaXgKKyAgICAgIGxlbmd0aCBzaG91bGQgYmUgaW5jcmVhc2VkIGJ5LiAgKm5ld19wcmVmaXgqIGlzIHRoZSBkZXNpcmVkIG5ldworICAgICAgcHJlZml4IG9mIHRoZSBzdWJuZXRzOyBpdCBtdXN0IGJlIGxhcmdlciB0aGFuIG91ciBwcmVmaXguICBPbmUgYW5kCisgICAgICBvbmx5IG9uZSBvZiAqcHJlZml4bGVuX2RpZmYqIGFuZCAqbmV3X3ByZWZpeCogbXVzdCBiZSBzZXQuICBSZXR1cm5zIGFuCisgICAgICBpdGVyYXRvciBvZiBuZXR3b3JrIG9iamVjdHMuCisKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMoKSkKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjEyOC8yNScpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0yKSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTI2KSkgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JyksCisgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JyksIElQdjROZXR3b3JrKCcxOTIuMC4yLjE5Mi8yNicpXQorICAgICAgICAgPj4+IGxpc3QoaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VibmV0cyhuZXdfcHJlZml4PTIzKSkKKyAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZXcgcHJlZml4IG11c3QgYmUgbG9uZ2VyJykKKyAgICAgICAgIFZhbHVlRXJyb3I6IG5ldyBwcmVmaXggbXVzdCBiZSBsb25nZXIKKyAgICAgICAgID4+PiBsaXN0KGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1Ym5ldHMobmV3X3ByZWZpeD0yNSkpCisgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0KKworICAgLi4gbWV0aG9kOjogc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKQorCisgICAgICBUaGUgc3VwZXJuZXQgY29udGFpbmluZyB0aGlzIG5ldHdvcmsgZGVmaW5pdGlvbiwgZGVwZW5kaW5nIG9uIHRoZQorICAgICAgYXJndW1lbnQgdmFsdWVzLiAgKnByZWZpeGxlbl9kaWZmKiBpcyB0aGUgYW1vdW50IG91ciBwcmVmaXggbGVuZ3RoCisgICAgICBzaG91bGQgYmUgZGVjcmVhc2VkIGJ5LiAgKm5ld19wcmVmaXgqIGlzIHRoZSBkZXNpcmVkIG5ldyBwcmVmaXggb2YKKyAgICAgIHRoZSBzdXBlcm5ldDsgaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gb3VyIHByZWZpeC4gIE9uZSBhbmQgb25seSBvbmUKKyAgICAgIG9mICpwcmVmaXhsZW5fZGlmZiogYW5kICpuZXdfcHJlZml4KiBtdXN0IGJlIHNldC4gIFJldHVybnMgYSBzaW5nbGUKKyAgICAgIG5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VwZXJuZXQoKQorICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yMycpCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4wLzI0Jykuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MikKKyAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4wLjAvMjInKQorICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpLnN1cGVybmV0KG5ld19wcmVmaXg9MjApCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMC4wLzIwJykKKworICAgLi4gbWV0aG9kOjogY29tcGFyZV9uZXR3b3JrcyhvdGhlcikKKworICAgICAgQ29tcGFyZSB0aGlzIG5ldHdvcmsgdG8gKm90aGVyKi4gIEluIHRoaXMgY29tcGFyaXNvbiBvbmx5IHRoZSBuZXR3b3JrCisgICAgICBhZGRyZXNzZXMgYXJlIGNvbnNpZGVyZWQ7IGhvc3QgYml0cyBhcmVuJ3QuICBSZXR1cm5zIGVpdGhlciBgYC0xYGAsCisgICAgICBgYDBgYCBvciBgYDFgYC4KKworICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpLmNvbXBhcmVfbmV0d29ya3MoaXBfbmV0d29yaygnMTkyLjAuMi4yLzMyJykpCisgICAgICAgICAtMQorICAgICAgICAgPj4+IGlwX25ldHdvcmsoJzE5Mi4wLjIuMS8zMicpLmNvbXBhcmVfbmV0d29ya3MoaXBfbmV0d29yaygnMTkyLjAuMi4wLzMyJykpCisgICAgICAgICAxCisgICAgICAgICA+Pj4gaXBfbmV0d29yaygnMTkyLjAuMi4xLzMyJykuY29tcGFyZV9uZXR3b3JrcyhpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKSkKKyAgICAgICAgIDAKKworCisuLiBjbGFzczo6IElQdjZOZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NiBuZXR3b3JrIGRlZmluaXRpb24uICAqYWRkcmVzcyogY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAxLiBBIHN0cmluZyBjb25zaXN0aW5nIG9mIGFuIElQIGFkZHJlc3MgYW5kIGFuIG9wdGlvbmFsIG1hc2ssIHNlcGFyYXRlZCBieQorICAgICAgYSBzbGFzaCAoYGAvYGApLiAgVGhlIElQIGFkZHJlc3MgaXMgdGhlIG5ldHdvcmsgYWRkcmVzcywgYW5kIHRoZSBtYXNrCisgICAgICBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIG51bWJlciwgd2hpY2ggbWVhbnMgaXQncyBhICpwcmVmaXgqLCBvciBhIHN0cmluZworICAgICAgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBhZGRyZXNzLiAgSWYgaXQncyB0aGUgbGF0dGVyLCB0aGUgbWFzayBpcworICAgICAgaW50ZXJwcmV0ZWQgYXMgYSAqbmV0IG1hc2sqLiAgSWYgbm8gbWFzayBpcyBwcm92aWRlZCwgaXQncyBjb25zaWRlcmVkIHRvCisgICAgICBiZSBgYC8xMjhgYC4KKworICAgICAgRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgKmFkZHJlc3MqIHNwZWNpZmljYXRpb25zIGFyZSBlcXVpdmFsZW50OgorICAgICAgYGAyMDAxOmRiMDA6OjAvMjRgYCBhbmQgYGAyMDAxOmRiMDA6OjAvZmZmZjpmZjAwOjpgYC4KKworICAgMi4gQW4gaW50ZWdlciB0aGF0IGZpdHMgaW50byAxMjggYml0cy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhCisgICAgICBzaW5nbGUtYWRkcmVzcyBuZXR3b3JrLCB3aXRoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYmVpbmcgKmFkZHJlc3MqIGFuZAorICAgICAgdGhlIG1hc2sgYmVpbmcgYGAvMTI4YGAuCisKKyAgIDMuIEFuIGludGVnZXIgcGFja2VkIGludG8gYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3Qgb2YgbGVuZ3RoIDE2LCBiaXQtZW5kaWFuLgorICAgICAgVGhlIGludGVycHJldGF0aW9uIGlzIHNpbWlsYXIgdG8gYW4gaW50ZWdlciAqYWRkcmVzcyouCisKKyAgIEFuIDpleGM6YEFkZHJlc3NWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgKmFkZHJlc3MqIGlzIG5vdCBhIHZhbGlkIElQdjYKKyAgIGFkZHJlc3MuICBBIDpleGM6YE5ldG1hc2tWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIG1hc2sgaXMgbm90IHZhbGlkIGZvcgorICAgYW4gSVB2NiBhZGRyZXNzLgorCisgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCBhbmQgaG9zdCBiaXRzIGFyZSBzZXQgaW4gdGhlIHN1cHBsaWVkIGFkZHJlc3MsCisgICB0aGVuIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGhvc3QgYml0cyBhcmUgbWFza2VkIG91dAorICAgdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBuZXR3b3JrIGFkZHJlc3MuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKyAgIC4uIGF0dHJpYnV0ZTo6IG1heF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX211bHRpY2FzdAorICAgLi4gYXR0cmlidXRlOjogaXNfcHJpdmF0ZQorICAgLi4gYXR0cmlidXRlOjogaXNfdW5zcGVjaWZpZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IGlzX3Jlc2VydmVkCisgICAuLiBhdHRyaWJ1dGU6OiBpc19sb29wYmFjaworICAgLi4gYXR0cmlidXRlOjogaXNfbGlua19sb2NhbAorICAgLi4gYXR0cmlidXRlOjogbmV0d29ya19hZGRyZXNzCisgICAuLiBhdHRyaWJ1dGU6OiBicm9hZGNhc3RfYWRkcmVzcworICAgLi4gYXR0cmlidXRlOjogaG9zdCBtYXNrCisgICAuLiBhdHRyaWJ1dGU6OiB3aXRoX3ByZWZpeGxlbgorICAgLi4gYXR0cmlidXRlOjogY29tcHJlc3NlZAorICAgLi4gYXR0cmlidXRlOjogZXhwbG9kZWQKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworICAgLi4gYXR0cmlidXRlOjogbnVtX2FkZHJlc3NlcworICAgLi4gYXR0cmlidXRlOjogcHJlZml4bGVuCisgICAuLiBtZXRob2Q6OiBob3N0cygpCisgICAuLiBtZXRob2Q6OiBvdmVybGFwcyhvdGhlcikKKyAgIC4uIG1ldGhvZDo6IGFkZHJlc3NfZXhjbHVkZShuZXR3b3JrKQorICAgLi4gbWV0aG9kOjogc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisgICAuLiBtZXRob2Q6OiBzdXBlcm5ldChwcmVmaXhsZW5fZGlmZj0xLCBuZXdfcHJlZml4PU5vbmUpCisgICAuLiBtZXRob2Q6OiBjb21wYXJlX25ldHdvcmtzKG90aGVyKQorCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0TmV0d29ya2AKKworICAgLi4gYXR0cmlidXRlOjogaXNfc2l0ZV9sb2NhbAorCisgICAgICBUaGVzZSBhdHRyaWJ1dGUgaXMgdHJ1ZSBmb3IgdGhlIG5ldHdvcmsgYXMgYSB3aG9sZSBpZiBpdCBpcyB0cnVlCisgICAgICB0cnVlIGZvciBib3RoIHRoZSBuZXR3b3JrIGFkZHJlc3MgYW5kIHRoZSBicm9hZGNhc3QgYWRkcmVzcworCisKK09wZXJhdG9ycworXl5eXl5eXl5eCisKK05ldHdvcmsgb2JqZWN0cyBzdXBwb3J0IHNvbWUgb3BlcmF0b3JzLiAgVW5sZXNzIHN0YXRlZCBvdGhlcndpc2UsIG9wZXJhdG9ycyBjYW4KK29ubHkgYmUgYXBwbGllZCBiZXR3ZWVuIGNvbXBhdGlibGUgb2JqZWN0cyAoaS5lLiBJUHY0IHdpdGggSVB2NCwgSVB2NiB3aXRoCitJUHY2KS4KKworCitMb2dpY2FsIG9wZXJhdG9ycworIiIiIiIiIiIiIiIiIiIiIiIKKworTmV0d29yayBvYmplY3RzIGNhbiBiZSBjb21wYXJlZCB3aXRoIHRoZSB1c3VhbCBzZXQgb2YgbG9naWNhbCBvcGVyYXRvcnMsCitzaW1pbGFybHkgdG8gYWRkcmVzcyBvYmplY3RzLgorCisKK0l0ZXJhdGlvbgorIiIiIiIiIiIiCisKK05ldHdvcmsgb2JqZWN0cyBjYW4gYmUgaXRlcmF0ZWQgdG8gbGlzdCBhbGwgdGhlIGFkZHJlc3NlcyBiZWxvbmdpbmcgdG8gdGhlCituZXR3b3JrLiAgRm9yIGl0ZXJhdGlvbiwgKmFsbCogaG9zdHMgYXJlIHJldHVybmVkLCBpbmNsdWRpbmcgdW51c2FibGUgaG9zdHMKKyhmb3IgdXNhYmxlIGhvc3RzLCB1c2UgdGhlIDptZXRoOmB+SVB2NE5ldHdvcmsuaG9zdHNgIG1ldGhvZCkuICBBbgorZXhhbXBsZTo6CisKKyAgID4+PiBmb3IgYWRkciBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4Jyk6CisgICAuLi4gICBhZGRyCisgICAuLi4KKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMScpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4yJykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjMnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNCcpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi41JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjYnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNycpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi44JykKKyAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjknKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTAnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTEnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTInKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTQnKQorICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTUnKQorCisKK05ldHdvcmtzIGFzIGNvbnRhaW5lcnMgb2YgYWRkcmVzc2VzCisiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIgorCitOZXR3b3JrIG9iamVjdHMgY2FuIGFjdCBhcyBjb250YWluZXJzIG9mIGFkZHJlc3Nlcy4gIFNvbWUgZXhhbXBsZXM6OgorCisgICA+Pj4gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yOCcpWzBdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgID4+PiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JylbMTVdCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xNScpCisgICA+Pj4gSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNicpIGluIElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgVHJ1ZQorICAgPj4+IElQdjRBZGRyZXNzKCcxOTIuMC4zLjYnKSBpbiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI4JykKKyAgIEZhbHNlCisKKworSW50ZXJmYWNlIG9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGNsYXNzOjogSVB2NEludGVyZmFjZShhZGRyZXNzKQorCisgICBDb25zdHJ1Y3QgYW4gSVB2NCBpbnRlcmZhY2UuICBUaGUgbWVhbmluZyBvZiAqYWRkcmVzcyogaXMgYXMgaW4gdGhlCisgICBjb25zdHJ1Y3RvciBvZiA6Y2xhc3M6YElQdjROZXR3b3JrYCwgZXhjZXB0IHRoYXQgYXJiaXRyYXJ5IGhvc3QgYWRkcmVzc2VzCisgICBhcmUgYWx3YXlzIGFjY2VwdGVkLgorCisgICA6Y2xhc3M6YElQdjRJbnRlcmZhY2VgIGlzIGEgc3ViY2xhc3Mgb2YgOmNsYXNzOmBJUHY0QWRkcmVzc2AsIHNvIGl0IGluaGVyaXRzCisgICBhbGwgdGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGF0IGNsYXNzLiAgSW4gYWRkaXRpb24sIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcworICAgYXJlIGF2YWlsYWJsZToKKworICAgLi4gYXR0cmlidXRlOjogaXAKKworICAgICAgVGhlIGFkZHJlc3MgKDpjbGFzczpgSVB2NEFkZHJlc3NgKSB3aXRob3V0IG5ldHdvcmsgaW5mb3JtYXRpb24uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS5pcAorICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNScpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5ldHdvcmsKKworICAgICAgVGhlIG5ldHdvcmsgKDpjbGFzczpgSVB2NE5ldHdvcmtgKSB0aGlzIGludGVyZmFjZSBiZWxvbmdzIHRvLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2UubmV0d29yaworICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfcHJlZml4bGVuCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbWFzayBpbiBwcmVmaXggbm90YXRpb24uCisKKyAgICAgICAgID4+PiBpbnRlcmZhY2UgPSBJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjUvMjQnKQorICAgICAgICAgPj4+IGludGVyZmFjZS53aXRoX3ByZWZpeGxlbgorICAgICAgICAgJzE5Mi4wLjIuNS8yNCcKKworICAgLi4gYXR0cmlidXRlOjogd2l0aF9uZXRtYXNrCisKKyAgICAgIEEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnRlcmZhY2Ugd2l0aCB0aGUgbmV0d29yayBhcyBhIG5ldCBtYXNrLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9uZXRtYXNrCisgICAgICAgICAnMTkyLjAuMi41LzI1NS4yNTUuMjU1LjAnCisKKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfaG9zdG1hc2sKKworICAgICAgQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGludGVyZmFjZSB3aXRoIHRoZSBuZXR3b3JrIGFzIGEgaG9zdCBtYXNrLgorCisgICAgICAgICA+Pj4gaW50ZXJmYWNlID0gSVB2NEludGVyZmFjZSgnMTkyLjAuMi41LzI0JykKKyAgICAgICAgID4+PiBpbnRlcmZhY2Uud2l0aF9ob3N0bWFzaworICAgICAgICAgJzE5Mi4wLjIuNS8wLjAuMC4yNTUnCisKKworLi4gY2xhc3M6OiBJUHY2SW50ZXJmYWNlKGFkZHJlc3MpCisKKyAgIENvbnN0cnVjdCBhbiBJUHY2IGludGVyZmFjZS4gIFRoZSBtZWFuaW5nIG9mICphZGRyZXNzKiBpcyBhcyBpbiB0aGUKKyAgIGNvbnN0cnVjdG9yIG9mIDpjbGFzczpgSVB2Nk5ldHdvcmtgLCBleGNlcHQgdGhhdCBhcmJpdHJhcnkgaG9zdCBhZGRyZXNzZXMKKyAgIGFyZSBhbHdheXMgYWNjZXB0ZWQuCisKKyAgIDpjbGFzczpgSVB2NkludGVyZmFjZWAgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YElQdjZBZGRyZXNzYCwgc28gaXQgaW5oZXJpdHMKKyAgIGFsbCB0aGUgYXR0cmlidXRlcyBmcm9tIHRoYXQgY2xhc3MuICBJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzCisgICBhcmUgYXZhaWxhYmxlOgorCisgICAuLiBhdHRyaWJ1dGU6OiBpcAorICAgLi4gYXR0cmlidXRlOjogbmV0d29yaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9wcmVmaXhsZW4KKyAgIC4uIGF0dHJpYnV0ZTo6IHdpdGhfbmV0bWFzaworICAgLi4gYXR0cmlidXRlOjogd2l0aF9ob3N0bWFzaworCisgICAgICBSZWZlciB0byB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgZG9jdW1lbnRhdGlvbiBpbgorICAgICAgOmNsYXNzOmBJUHY0SW50ZXJmYWNlYC4KKworCitPdGhlciBNb2R1bGUgTGV2ZWwgRnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtb2R1bGUgYWxzbyBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnM6CisKKy4uIGZ1bmN0aW9uOjogdjRfaW50X3RvX3BhY2tlZChhZGRyZXNzKQorCisgICBSZXByZXNlbnQgYW4gYWRkcmVzcyBhcyA0IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKyAgICphZGRyZXNzKiBpcyBhbiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGFuIElQdjQgSVAgYWRkcmVzcy4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgIElQdjQgSVAgYWRkcmVzcy4KKworICAgPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKDMyMjEyMjU5ODUpCisgICBJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykKKyAgID4+PiBpcGFkZHJlc3MudjRfaW50X3RvX3BhY2tlZCgzMjIxMjI1OTg1KQorICAgYidceGMwXHgwMFx4MDJceDAxJworCisKKy4uIGZ1bmN0aW9uOjogdjZfaW50X3RvX3BhY2tlZChhZGRyZXNzKQorCisgICBSZXByZXNlbnQgYW4gYWRkcmVzcyBhcyAxNiBwYWNrZWQgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisgICAqYWRkcmVzcyogaXMgYW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY2IElQIGFkZHJlc3MuICBBCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlIGludGVnZXIgaXMgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIHRvIGJlIGFuCisgICBJUHY2IElQIGFkZHJlc3MuCisKKworLi4gZnVuY3Rpb246OiBzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkKKworICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIHRoZSBzdW1tYXJpemVkIG5ldHdvcmsgcmFuZ2UgZ2l2ZW4gdGhlIGZpcnN0IGFuZCBsYXN0CisgICBJUCBhZGRyZXNzZXMuICAqZmlyc3QqIGlzIHRoZSBmaXJzdCA6Y2xhc3M6YElQdjRBZGRyZXNzYCBvcgorICAgOmNsYXNzOmBJUHY2QWRkcmVzc2AgaW4gdGhlIHJhbmdlIGFuZCAqbGFzdCogaXMgdGhlIGxhc3QgOmNsYXNzOmBJUHY0QWRkcmVzc2AKKyAgIG9yIDpjbGFzczpgSVB2NkFkZHJlc3NgIGluIHRoZSByYW5nZS4gIEEgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQgaWYKKyAgICpmaXJzdCogb3IgKmxhc3QqIGFyZSBub3QgSVAgYWRkcmVzc2VzIG9yIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbi4gIEEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiAqbGFzdCogaXMgbm90IGdyZWF0ZXIgdGhhbiAqZmlyc3QqIG9yIGlmCisgICAqZmlyc3QqIGFkZHJlc3MgdmVyc2lvbiBpcyBub3QgNCBvciA2LgorCisgICA+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluIGlwYWRkcmVzcy5zdW1tYXJpemVfYWRkcmVzc19yYW5nZSgKKyAgIC4uLiAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpLAorICAgLi4uICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMTkyLjAuMi4xMzAnKSldCisgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpLCBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMzEnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTMwLzMyJyldCisKKworLi4gZnVuY3Rpb246OiBjb2xsYXBzZV9hZGRyZXNzZXMoYWRkcmVzc2VzKQorCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgdGhlIGNvbGxhcHNlZCA6Y2xhc3M6YElQdjROZXR3b3JrYCBvcgorICAgOmNsYXNzOmBJUHY2TmV0d29ya2Agb2JqZWN0cy4gICphZGRyZXNzZXMqIGlzIGFuIGl0ZXJhdG9yIG9mCisgICA6Y2xhc3M6YElQdjROZXR3b3JrYCBvciA6Y2xhc3M6YElQdjZOZXR3b3JrYCBvYmplY3RzLiAgQSA6ZXhjOmBUeXBlRXJyb3JgIGlzCisgICByYWlzZWQgaWYgKmFkZHJlc3NlcyogY29udGFpbnMgbWl4ZWQgdmVyc2lvbiBvYmplY3RzLgorCisgICA+Pj4gW2lwYWRkciBmb3IgaXBhZGRyIGluCisgICAuLi4gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgIC4uLiBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JyldKV0KKyAgIFtJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JyldCisKKworLi4gZnVuY3Rpb246OiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKQorCisgICBSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLiAgQWRkcmVzcworICAgYW5kIE5ldHdvcmsgb2JqZWN0cyBhcmUgbm90IHNvcnRhYmxlIGJ5IGRlZmF1bHQ7IHRoZXkncmUgZnVuZGFtZW50YWxseQorICAgZGlmZmVyZW50LCBzbyB0aGUgZXhwcmVzc2lvbjo6CisKKyAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBUaGVyZSBhcmUgc29tZSB0aW1lcyBob3dldmVyLCB3aGVyZSB5b3UgbWF5IHdpc2ggdG8KKyAgIGhhdmUgOm1vZDpgaXBhZGRyZXNzYCBzb3J0IHRoZXNlIGFueXdheS4gIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdSBjYW4gdXNlCisgICB0aGlzIGZ1bmN0aW9uIGFzIHRoZSBgYGtleWBgIGFyZ3VtZW50IHRvIDpmdW5jOmBzb3J0ZWQoKWAuCisKKyAgICpvYmoqIGlzIGVpdGhlciBhIG5ldHdvcmsgb3IgYWRkcmVzcyBvYmplY3QuCisKKworQ3VzdG9tIEV4Y2VwdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIHN1cHBvcnQgbW9yZSBzcGVjaWZpYyBlcnJvciByZXBvcnRpbmcgZnJvbSBjbGFzcyBjb25zdHJ1Y3RvcnMsIHRoZQorbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgorCisuLiBleGNlcHRpb246OiBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgYWRkcmVzcy4KKworCisuLiBleGNlcHRpb246OiBOZXRtYXNrVmFsdWVFcnJvcihWYWx1ZUVycm9yKQorCisgICBBbnkgdmFsdWUgZXJyb3IgcmVsYXRlZCB0byB0aGUgbmV0bWFzay4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lwYy5yc3QgYi9Eb2MvbGlicmFyeS9pcGMucnN0CmluZGV4IGM4NzMwNjUuLjkxZWM2OTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lwYy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXBjLnJzdApAQCAtOCw3ICs4LDcgQEAKIHRvIGNvbW11bmljYXRlLgogCiBTb21lIG1vZHVsZXMgb25seSB3b3JrIGZvciB0d28gcHJvY2Vzc2VzIHRoYXQgYXJlIG9uIHRoZSBzYW1lIG1hY2hpbmUsIGUuZy4KLTptb2Q6YHNpZ25hbGAgYW5kIDptb2Q6YHN1YnByb2Nlc3NgLiAgT3RoZXIgbW9kdWxlcyBzdXBwb3J0IG5ldHdvcmtpbmcgcHJvdG9jb2xzCis6bW9kOmBzaWduYWxgIGFuZCA6bW9kOmBtbWFwYC4gIE90aGVyIG1vZHVsZXMgc3VwcG9ydCBuZXR3b3JraW5nIHByb3RvY29scwogdGhhdCB0d28gb3IgbW9yZSBwcm9jZXNzZXMgY2FuIHVzZWQgdG8gY29tbXVuaWNhdGUgYWNyb3NzIG1hY2hpbmVzLgogCiBUaGUgbGlzdCBvZiBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgaXM6CkBAIC0xNiw5ICsxNiw5IEBACiAKIC4uIHRvY3RyZWU6OgogCi0gICBzdWJwcm9jZXNzLnJzdAogICAgc29ja2V0LnJzdAogICAgc3NsLnJzdAotICAgc2lnbmFsLnJzdAogICAgYXN5bmNvcmUucnN0CiAgICBhc3luY2hhdC5yc3QKKyAgIHNpZ25hbC5yc3QKKyAgIG1tYXAucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0IGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAppbmRleCAzMDhmOTI1Li4xZWI1NTRhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKQEAgLTQ2LDcgKzQ2LDcgQEAKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIEl0ZXJhdG9yICAgICAgICAgICAgICAgIEFyZ3VtZW50cyAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4YW1wbGUKID09PT09PT09PT09PT09PT09PT09ICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKKzpmdW5jOmBhY2N1bXVsYXRlYCAgICAgIHAgWyxmdW5jXSAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAwK3AxLCBwMCtwMStwMiwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1YGAKIDpmdW5jOmBjaGFpbmAgICAgICAgICAgIHAsIHEsIC4uLiAgICAgICAgICAgICAgICAgICAgICAgcDAsIHAxLCAuLi4gcGxhc3QsIHEwLCBxMSwgLi4uICAgICAgICAgICAgICAgICAgICAgIGBgY2hhaW4oJ0FCQycsICdERUYnKSAtLT4gQSBCIEMgRCBFIEZgYAogOmZ1bmM6YGNvbXByZXNzYCAgICAgICAgZGF0YSwgc2VsZWN0b3JzICAgICAgICAgICAgICAgICAoZFswXSBpZiBzWzBdKSwgKGRbMV0gaWYgc1sxXSksIC4uLiAgICAgICAgICAgICAgICAgYGBjb21wcmVzcygnQUJDREVGJywgWzEsMCwxLDAsMSwxXSkgLS0+IEEgQyBFIEZgYAogOmZ1bmM6YGRyb3B3aGlsZWAgICAgICAgcHJlZCwgc2VxICAgICAgICAgICAgICAgICAgICAgICBzZXFbbl0sIHNlcVtuKzFdLCBzdGFydGluZyB3aGVuIHByZWQgZmFpbHMgICAgICAgICAgYGBkcm9wd2hpbGUobGFtYmRhIHg6IHg8NSwgWzEsNCw2LDQsMV0pIC0tPiA2IDQgMWBgCkBAIC04NCwyMyArODQsNjEgQEAKIHN0cmVhbXMgb2YgaW5maW5pdGUgbGVuZ3RoLCBzbyB0aGV5IHNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIGJ5IGZ1bmN0aW9ucyBvcgogbG9vcHMgdGhhdCB0cnVuY2F0ZSB0aGUgc3RyZWFtLgogCi0uLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGUpCisuLiBmdW5jdGlvbjo6IGFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkKIAogICAgIE1ha2UgYW4gaXRlcmF0b3IgdGhhdCByZXR1cm5zIGFjY3VtdWxhdGVkIHN1bXMuIEVsZW1lbnRzIG1heSBiZSBhbnkgYWRkYWJsZQotICAgIHR5cGUgaW5jbHVkaW5nIDpjbGFzczpgRGVjaW1hbGAgb3IgOmNsYXNzOmBGcmFjdGlvbmAuICBFcXVpdmFsZW50IHRvOjoKKyAgICB0eXBlIGluY2x1ZGluZyA6Y2xhc3M6YERlY2ltYWxgIG9yIDpjbGFzczpgRnJhY3Rpb25gLiAgSWYgdGhlIG9wdGlvbmFsCisgICAgKmZ1bmMqIGFyZ3VtZW50IGlzIHN1cHBsaWVkLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzCisgICAgYW5kIGl0IHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIGFkZGl0aW9uLgogCi0gICAgICAgIGRlZiBhY2N1bXVsYXRlKGl0ZXJhYmxlKToKKyAgICBFcXVpdmFsZW50IHRvOjoKKworICAgICAgICBkZWYgYWNjdW11bGF0ZShpdGVyYWJsZSwgZnVuYz1vcGVyYXRvci5hZGQpOgogICAgICAgICAgICAgJ1JldHVybiBydW5uaW5nIHRvdGFscycKICAgICAgICAgICAgICMgYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkgLS0+IDEgMyA2IDEwIDE1CisgICAgICAgICAgICAjIGFjY3VtdWxhdGUoWzEsMiwzLDQsNV0sIG9wZXJhdG9yLm11bCkgLS0+IDEgMiA2IDI0IDEyMAogICAgICAgICAgICAgaXQgPSBpdGVyKGl0ZXJhYmxlKQogICAgICAgICAgICAgdG90YWwgPSBuZXh0KGl0KQogICAgICAgICAgICAgeWllbGQgdG90YWwKICAgICAgICAgICAgIGZvciBlbGVtZW50IGluIGl0OgotICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWwgKyBlbGVtZW50CisgICAgICAgICAgICAgICAgdG90YWwgPSBmdW5jKHRvdGFsLCBlbGVtZW50KQogICAgICAgICAgICAgICAgIHlpZWxkIHRvdGFsCiAKKyAgICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgdXNlcyBmb3IgdGhlICpmdW5jKiBhcmd1bWVudC4gIEl0IGNhbiBiZSBzZXQgdG8KKyAgICA6ZnVuYzpgbWluYCBmb3IgYSBydW5uaW5nIG1pbmltdW0sIDpmdW5jOmBtYXhgIGZvciBhIHJ1bm5pbmcgbWF4aW11bSwgb3IKKyAgICA6ZnVuYzpgb3BlcmF0b3IubXVsYCBmb3IgYSBydW5uaW5nIHByb2R1Y3QuICBBbW9ydGl6YXRpb24gdGFibGVzIGNhbiBiZQorICAgIGJ1aWx0IGJ5IGFjY3VtdWxhdGluZyBpbnRlcmVzdCBhbmQgYXBwbHlpbmcgcGF5bWVudHMuICBGaXJzdC1vcmRlcgorICAgIGByZWN1cnJlbmNlIHJlbGF0aW9ucyA8aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZWN1cnJlbmNlX3JlbGF0aW9uPmBfCisgICAgY2FuIGJlIG1vZGVsZWQgYnkgc3VwcGx5aW5nIHRoZSBpbml0aWFsIHZhbHVlIGluIHRoZSBpdGVyYWJsZSBhbmQgdXNpbmcgb25seQorICAgIHRoZSBhY2N1bXVsYXRlZCB0b3RhbCBpbiAqZnVuYyogYXJndW1lbnQ6OgorCisgICAgICA+Pj4gZGF0YSA9IFszLCA0LCA2LCAyLCAxLCA5LCAwLCA3LCA1LCA4XQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBvcGVyYXRvci5tdWwpKSAgICAgIyBydW5uaW5nIHByb2R1Y3QKKyAgICAgIFszLCAxMiwgNzIsIDE0NCwgMTQ0LCAxMjk2LCAwLCAwLCAwLCAwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShkYXRhLCBtYXgpKSAgICAgICAgICAgICAgIyBydW5uaW5nIG1heGltdW0KKyAgICAgIFszLCA0LCA2LCA2LCA2LCA5LCA5LCA5LCA5LCA5XQorCisgICAgICAjIEFtb3J0aXplIGEgNSUgbG9hbiBvZiAxMDAwIHdpdGggNCBhbm51YWwgcGF5bWVudHMgb2YgOTAKKyAgICAgID4+PiBjYXNoZmxvd3MgPSBbMTAwMCwgLTkwLCAtOTAsIC05MCwgLTkwXQorICAgICAgPj4+IGxpc3QoYWNjdW11bGF0ZShjYXNoZmxvd3MsIGxhbWJkYSBiYWwsIHBtdDogYmFsKjEuMDUgKyBwbXQpKQorICAgICAgWzEwMDAsIDk2MC4wLCA5MTguMCwgODczLjkwMDAwMDAwMDAwMDEsIDgyNy41OTUwMDAwMDAwMDAxXQorCisgICAgICAjIENoYW90aWMgcmVjdXJyZW5jZSByZWxhdGlvbiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xvZ2lzdGljX21hcAorICAgICAgPj4+IGxvZ2lzdGljX21hcCA9IGxhbWJkYSB4LCBfOiAgciAqIHggKiAoMSAtIHgpCisgICAgICA+Pj4gciA9IDMuOAorICAgICAgPj4+IHgwID0gMC40CisgICAgICA+Pj4gaW5wdXRzID0gcmVwZWF0KHgwLCAzNikgICAgICMgb25seSB0aGUgaW5pdGlhbCB2YWx1ZSBpcyB1c2VkCisgICAgICA+Pj4gW2Zvcm1hdCh4LCAnLjJmJykgZm9yIHggaW4gYWNjdW11bGF0ZShpbnB1dHMsIGxvZ2lzdGljX21hcCldCisgICAgICBbJzAuNDAnLCAnMC45MScsICcwLjMwJywgJzAuODEnLCAnMC42MCcsICcwLjkyJywgJzAuMjknLCAnMC43OScsICcwLjYzJywKKyAgICAgICAnMC44OCcgLCcwLjM5JywgJzAuOTAnLCAnMC4zMycsICcwLjg0JywgJzAuNTInLCAnMC45NScsICcwLjE4JywgJzAuNTcnLAorICAgICAgICcwLjkzJywgJzAuMjUnLCAnMC43MScsICcwLjc5JywgJzAuNjMnLCAnMC44OCcsICcwLjM5JywgJzAuOTEnLCAnMC4zMicsCisgICAgICAgJzAuODMnLCAnMC41NCcsICcwLjk1JywgJzAuMjAnLCAnMC42MCcsICcwLjkxJywgJzAuMzAnLCAnMC44MCcsICcwLjYwJ10KKwogICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCB0aGUgb3B0aW9uYWwgKmZ1bmMqIHBhcmFtZXRlci4KKwogLi4gZnVuY3Rpb246OiBjaGFpbigqaXRlcmFibGVzKQogCiAgICBNYWtlIGFuIGl0ZXJhdG9yIHRoYXQgcmV0dXJucyBlbGVtZW50cyBmcm9tIHRoZSBmaXJzdCBpdGVyYWJsZSB1bnRpbCBpdCBpcwpAQCAtNjY4LDcgKzcwNiw4IEBACiAgICAgICAgcmV0dXJuIHppcChhLCBiKQogCiAgICBkZWYgZ3JvdXBlcihuLCBpdGVyYWJsZSwgZmlsbHZhbHVlPU5vbmUpOgotICAgICAgICJncm91cGVyKDMsICdBQkNERUZHJywgJ3gnKSAtLT4gQUJDIERFRiBHeHgiCisgICAgICAgIkNvbGxlY3QgZGF0YSBpbnRvIGZpeGVkLWxlbmd0aCBjaHVua3Mgb3IgYmxvY2tzIgorICAgICAgICMgZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgogICAgICAgIGFyZ3MgPSBbaXRlcihpdGVyYWJsZSldICogbgogICAgICAgIHJldHVybiB6aXBfbG9uZ2VzdCgqYXJncywgZmlsbHZhbHVlPWZpbGx2YWx1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggNDVhYmEwYS4uZDQ2ZjFjZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC00NzUsOCArNDc1LDExIEBACiBsb2NhbGUgc29tZXdoYXQgcGFpbmZ1bCB0byB1c2UgY29ycmVjdGx5LgogCiBJbml0aWFsbHksIHdoZW4gYSBwcm9ncmFtIGlzIHN0YXJ0ZWQsIHRoZSBsb2NhbGUgaXMgdGhlIGBgQ2BgIGxvY2FsZSwgbm8gbWF0dGVyCi13aGF0IHRoZSB1c2VyJ3MgcHJlZmVycmVkIGxvY2FsZSBpcy4gIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseSBzYXkgdGhhdCBpdAotd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGJ5IGNhbGxpbmcgYGBzZXRsb2NhbGUoTENfQUxMLCAnJylgYC4KK3doYXQgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIGlzLiAgVGhlcmUgaXMgb25lIGV4Y2VwdGlvbjogdGhlCis6ZGF0YTpgTENfQ1RZUEVgIGNhdGVnb3J5IGlzIGNoYW5nZWQgYXQgc3RhcnR1cCB0byBzZXQgdGhlIGN1cnJlbnQgbG9jYWxlCitlbmNvZGluZyB0byB0aGUgdXNlcidzIHByZWZlcnJlZCBsb2NhbGUgZW5jb2RpbmcuIFRoZSBwcm9ncmFtIG11c3QgZXhwbGljaXRseQorc2F5IHRoYXQgaXQgd2FudHMgdGhlIHVzZXIncyBwcmVmZXJyZWQgbG9jYWxlIHNldHRpbmdzIGZvciBvdGhlciBjYXRlZ29yaWVzIGJ5CitjYWxsaW5nIGBgc2V0bG9jYWxlKExDX0FMTCwgJycpYGAuCiAKIEl0IGlzIGdlbmVyYWxseSBhIGJhZCBpZGVhIHRvIGNhbGwgOmZ1bmM6YHNldGxvY2FsZWAgaW4gc29tZSBsaWJyYXJ5IHJvdXRpbmUsCiBzaW5jZSBhcyBhIHNpZGUgZWZmZWN0IGl0IGFmZmVjdHMgdGhlIGVudGlyZSBwcm9ncmFtLiAgU2F2aW5nIGFuZCByZXN0b3JpbmcgaXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggZWY2NWNmYS4uNTM3YjhjNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTE2NCw2ICsxNjQsODcgQEAKICAgICAgIGNoYW5nZWQuICBJZiBpdCBoYXMsIHRoZSBleGlzdGluZyBzdHJlYW0gaXMgZmx1c2hlZCBhbmQgY2xvc2VkIGFuZCB0aGUKICAgICAgIGZpbGUgb3BlbmVkIGFnYWluLCBiZWZvcmUgb3V0cHV0dGluZyB0aGUgcmVjb3JkIHRvIHRoZSBmaWxlLgogCisuLiBfYmFzZS1yb3RhdGluZy1oYW5kbGVyOgorCitCYXNlUm90YXRpbmdIYW5kbGVyCiteXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6Y2xhc3M6YEJhc2VSb3RhdGluZ0hhbmRsZXJgIGNsYXNzLCBsb2NhdGVkIGluIHRoZSA6bW9kOmBsb2dnaW5nLmhhbmRsZXJzYAorbW9kdWxlLCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMsCis6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgIGFuZCA6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIFlvdSBzaG91bGQKK25vdCBuZWVkIHRvIGluc3RhbnRpYXRlIHRoaXMgY2xhc3MsIGJ1dCBpdCBoYXMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyB5b3UgbWF5CituZWVkIHRvIG92ZXJyaWRlLgorCisuLiBjbGFzczo6IEJhc2VSb3RhdGluZ0hhbmRsZXIoZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKQorCisgICBUaGUgcGFyYW1ldGVycyBhcmUgYXMgZm9yIDpjbGFzczpgRmlsZUhhbmRsZXJgLiBUaGUgYXR0cmlidXRlcyBhcmU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5hbWVyCisKKyAgICAgIElmIHRoaXMgYXR0cmlidXRlIGlzIHNldCB0byBhIGNhbGxhYmxlLCB0aGUgOm1ldGg6YHJvdGF0aW9uX2ZpbGVuYW1lYAorICAgICAgbWV0aG9kIGRlbGVnYXRlcyB0byB0aGlzIGNhbGxhYmxlLiBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlCisgICAgICBhcmUgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGlvbl9maWxlbmFtZWAuCisKKyAgICAgIC4uIG5vdGU6OiBUaGUgbmFtZXIgZnVuY3Rpb24gaXMgY2FsbGVkIHF1aXRlIGEgZmV3IHRpbWVzIGR1cmluZyByb2xsb3ZlciwKKyAgICAgICAgIHNvIGl0IHNob3VsZCBiZSBhcyBzaW1wbGUgYW5kIGFzIGZhc3QgYXMgcG9zc2libGUuIEl0IHNob3VsZCBhbHNvCisgICAgICAgICByZXR1cm4gdGhlIHNhbWUgb3V0cHV0IGV2ZXJ5IHRpbWUgZm9yIGEgZ2l2ZW4gaW5wdXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAgIHJvbGxvdmVyIGJlaGF2aW91ciBtYXkgbm90IHdvcmsgYXMgZXhwZWN0ZWQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKyAgIC4uIGF0dHJpYnV0ZTo6IEJhc2VSb3RhdGluZ0hhbmRsZXIucm90YXRvcgorCisgICAgICBJZiB0aGlzIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYSBjYWxsYWJsZSwgdGhlIDptZXRoOmByb3RhdGVgIG1ldGhvZAorICAgICAgZGVsZWdhdGVzIHRvIHRoaXMgY2FsbGFibGUuICBUaGUgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhlIGNhbGxhYmxlIGFyZQorICAgICAgdGhvc2UgcGFzc2VkIHRvIDptZXRoOmByb3RhdGVgLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogQmFzZVJvdGF0aW5nSGFuZGxlci5yb3RhdGlvbl9maWxlbmFtZShkZWZhdWx0X25hbWUpCisKKyAgICAgIE1vZGlmeSB0aGUgZmlsZW5hbWUgb2YgYSBsb2cgZmlsZSB3aGVuIHJvdGF0aW5nLgorCisgICAgICBUaGlzIGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBjdXN0b20gZmlsZW5hbWUgY2FuIGJlIHByb3ZpZGVkLgorCisgICAgICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgJ25hbWVyJyBhdHRyaWJ1dGUgb2YgdGhlIGhhbmRsZXIsCisgICAgICBpZiBpdCdzIGNhbGxhYmxlLCBwYXNzaW5nIHRoZSBkZWZhdWx0IG5hbWUgdG8gaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QKKyAgICAgIGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBgYE5vbmVgYCksIHRoZSBuYW1lIGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKworICAgICAgOnBhcmFtIGRlZmF1bHRfbmFtZTogVGhlIGRlZmF1bHQgbmFtZSBmb3IgdGhlIGxvZyBmaWxlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisgICAuLiBtZXRob2Q6OiBCYXNlUm90YXRpbmdIYW5kbGVyLnJvdGF0ZShzb3VyY2UsIGRlc3QpCisKKyAgICAgIFdoZW4gcm90YXRpbmcsIHJvdGF0ZSB0aGUgY3VycmVudCBsb2cuCisKKyAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAncm90YXRvcicgYXR0cmlidXRlIG9mIHRoZSBoYW5kbGVyLAorICAgICAgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgc291cmNlIGFuZCBkZXN0IGFyZ3VtZW50cyB0byBpdC4gSWYgdGhlCisgICAgICBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIGBgTm9uZWBgKSwgdGhlIHNvdXJjZSBpcyBzaW1wbHkKKyAgICAgIHJlbmFtZWQgdG8gdGhlIGRlc3RpbmF0aW9uLgorCisgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5IHRoZSBiYXNlCisgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgZS5nLiAndGVzdC5sb2cnCisgICAgICA6cGFyYW0gZGVzdDogICBUaGUgZGVzdGluYXRpb24gZmlsZW5hbWUuIFRoaXMgaXMgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHNvdXJjZSBpcyByb3RhdGVkIHRvLCBlLmcuICd0ZXN0LmxvZy4xJy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSByZWFzb24gdGhlIGF0dHJpYnV0ZXMgZXhpc3QgaXMgdG8gc2F2ZSB5b3UgaGF2aW5nIHRvIHN1YmNsYXNzIC0geW91IGNhbiB1c2UKK3RoZSBzYW1lIGNhbGxhYmxlcyBmb3IgaW5zdGFuY2VzIG9mIDpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAgYW5kCis6Y2xhc3M6YFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmAuIElmIGVpdGhlciB0aGUgbmFtZXIgb3Igcm90YXRvciBjYWxsYWJsZQorcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhpcyB3aWxsIGJlIGhhbmRsZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGFueSBvdGhlcgorZXhjZXB0aW9uIGR1cmluZyBhbiA6bWV0aDpgZW1pdGAgY2FsbCwgaS5lLiB2aWEgdGhlIDptZXRoOmBoYW5kbGVFcnJvcmAgbWV0aG9kCitvZiB0aGUgaGFuZGxlci4KKworSWYgeW91IG5lZWQgdG8gbWFrZSBtb3JlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gcm90YXRpb24gcHJvY2Vzc2luZywgeW91IGNhbgorb3ZlcnJpZGUgdGhlIG1ldGhvZHMuCisKK0ZvciBhbiBleGFtcGxlLCBzZWUgOnJlZjpgY29va2Jvb2stcm90YXRvci1uYW1lcmAuCisKKwogLi4gX3JvdGF0aW5nLWZpbGUtaGFuZGxlcjoKIAogUm90YXRpbmdGaWxlSGFuZGxlcgpAQCAtNDUyLDYgKzUzMywxNSBAQAogICAgICAgICAgYmVoYXZpb3VyKSBidXQgY2FuIGJlIHNldCB0byBgYEZhbHNlYGAgb24gYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZQogICAgICAgICAgaW4gb3JkZXIgZm9yIHRoYXQgaW5zdGFuY2UgdG8gKm5vdCogYXBwZW5kIHRoZSBOVUwgdGVybWluYXRvci4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIChTZWU6IDppc3N1ZTpgMTI0MTlgLikgSW4gZWFybGllciB2ZXJzaW9ucywgdGhlcmUgd2FzIG5vIGZhY2lsaXR5IGZvcgorICAgICAgICAgYW4gImlkZW50IiBvciAidGFnIiBwcmVmaXggdG8gaWRlbnRpZnkgdGhlIHNvdXJjZSBvZiB0aGUgbWVzc2FnZS4gVGhpcworICAgICAgICAgY2FuIG5vdyBiZSBzcGVjaWZpZWQgdXNpbmcgYSBjbGFzcy1sZXZlbCBhdHRyaWJ1dGUsIGRlZmF1bHRpbmcgdG8KKyAgICAgICAgIGBgIiJgYCB0byBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIsIGJ1dCB3aGljaCBjYW4gYmUgb3ZlcnJpZGRlbiBvbgorICAgICAgICAgYSBgYFN5c0xvZ0hhbmRsZXJgYCBpbnN0YW5jZSBpbiBvcmRlciBmb3IgdGhhdCBpbnN0YW5jZSB0byBwcmVwZW5kCisgICAgICAgICB0aGUgaWRlbnQgdG8gZXZlcnkgbWVzc2FnZSBoYW5kbGVkLiBOb3RlIHRoYXQgdGhlIHByb3ZpZGVkIGlkZW50IG11c3QKKyAgICAgICAgIGJlIHRleHQsIG5vdCBieXRlcywgYW5kIGlzIHByZXBlbmRlZCB0byB0aGUgbWVzc2FnZSBleGFjdGx5IGFzIGlzLgorCiAgICAuLiBtZXRob2Q6OiBlbmNvZGVQcmlvcml0eShmYWNpbGl0eSwgcHJpb3JpdHkpCiAKICAgICAgIEVuY29kZXMgdGhlIGZhY2lsaXR5IGFuZCBwcmlvcml0eSBpbnRvIGFuIGludGVnZXIuIFlvdSBjYW4gcGFzcyBpbiBzdHJpbmdzCkBAIC02MTQsNyArNzA0LDcgQEAKIHN1cHBvcnRzIHNlbmRpbmcgbG9nZ2luZyBtZXNzYWdlcyB0byBhbiBlbWFpbCBhZGRyZXNzIHZpYSBTTVRQLgogCiAKLS4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSkKKy4uIGNsYXNzOjogU01UUEhhbmRsZXIobWFpbGhvc3QsIGZyb21hZGRyLCB0b2FkZHJzLCBzdWJqZWN0LCBjcmVkZW50aWFscz1Ob25lLCBzZWN1cmU9Tm9uZSwgdGltZW91dD0xLjApCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgU01UUEhhbmRsZXJgIGNsYXNzLiBUaGUgaW5zdGFuY2UgaXMKICAgIGluaXRpYWxpemVkIHdpdGggdGhlIGZyb20gYW5kIHRvIGFkZHJlc3NlcyBhbmQgc3ViamVjdCBsaW5lIG9mIHRoZSBlbWFpbC4gVGhlCkBAIC02MzAsNiArNzIwLDEyIEBACiAgICBhbmQgY2VydGlmaWNhdGUgZmlsZS4gKFRoaXMgdHVwbGUgaXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YHNtdHBsaWIuU01UUC5zdGFydHRsc2AgbWV0aG9kLikKIAorICAgQSB0aW1lb3V0IGNhbiBiZSBzcGVjaWZpZWQgZm9yIGNvbW11bmljYXRpb24gd2l0aCB0aGUgU01UUCBzZXJ2ZXIgdXNpbmcgdGhlCisgICAqdGltZW91dCogYXJndW1lbnQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCB3YXMgYWRkZWQuCisKICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCiAgICAgICBGb3JtYXRzIHRoZSByZWNvcmQgYW5kIHNlbmRzIGl0IHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzc2Vlcy4KQEAgLTY5MCw3ICs3ODYsNyBAQAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKLSAgICAgIENhbGxzIDptZXRoOmBmbHVzaGAsIHNldHMgdGhlIHRhcmdldCB0byA6Y29uc3Q6YE5vbmVgIGFuZCBjbGVhcnMgdGhlCisgICAgICBDYWxscyA6bWV0aDpgZmx1c2hgLCBzZXRzIHRoZSB0YXJnZXQgdG8gYGBOb25lYGAgYW5kIGNsZWFycyB0aGUKICAgICAgIGJ1ZmZlci4KIAogCkBAIC04NTksNiArOTU1LDE1IEBACiAgICAgICBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGNhbGwgdGhpcyBiZWZvcmUgeW91ciBhcHBsaWNhdGlvbiBleGl0cywgdGhlcmUKICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KIAorICAgLi4gbWV0aG9kOjogZW5xdWV1ZV9zZW50aW5lbCgpCisKKyAgICAgIFdyaXRlcyBhIHNlbnRpbmVsIHRvIHRoZSBxdWV1ZSB0byB0ZWxsIHRoZSBsaXN0ZW5lciB0byBxdWl0LiBUaGlzCisgICAgICBpbXBsZW1lbnRhdGlvbiB1c2VzIGBgcHV0X25vd2FpdCgpYGAuICBZb3UgbWF5IHdhbnQgdG8gb3ZlcnJpZGUgdGhpcworICAgICAgbWV0aG9kIGlmIHlvdSB3YW50IHRvIHVzZSB0aW1lb3V0cyBvciB3b3JrIHdpdGggY3VzdG9tIHF1ZXVlCisgICAgICBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CmluZGV4IGI2NjIyZTMuLjBkOTU2YjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CkBAIC0yMTMsNiArMjEzLDkgQEAKICAgIExvZ3MgYSBtZXNzYWdlIHdpdGggbGV2ZWwgOmNvbnN0OmBXQVJOSU5HYCBvbiB0aGlzIGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKICAgIGludGVycHJldGVkIGFzIGZvciA6bWV0aDpgZGVidWdgLgogCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgbWV0aG9kIGBgd2FybmBgIHdoaWNoIGlzIGZ1bmN0aW9uYWxseQorICAgICAgaWRlbnRpY2FsIHRvIGBgd2FybmluZ2BgLiBBcyBgYHdhcm5gYCBpcyBkZXByZWNhdGVkLCBwbGVhc2UgZG8gbm90IHVzZQorICAgICAgaXQgLSB1c2UgYGB3YXJuaW5nYGAgaW5zdGVhZC4KIAogLi4gbWV0aG9kOjogTG9nZ2VyLmVycm9yKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCkBAIC00OTIsNiArNDk1LDE5IEBACiAgICAgICB3YW50IGFsbCBsb2dnaW5nIHRpbWVzIHRvIGJlIHNob3duIGluIEdNVCwgc2V0IHRoZSBgYGNvbnZlcnRlcmBgCiAgICAgICBhdHRyaWJ1dGUgaW4gdGhlIGBgRm9ybWF0dGVyYGAgY2xhc3MuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91c2x5LCB0aGUgZGVmYXVsdCBJU08gODYwMSBmb3JtYXQgd2FzIGhhcmQtY29kZWQgYXMgaW4gdGhpcworICAgICAgICAgZXhhbXBsZTogYGAyMDEwLTA5LTA2IDIyOjM4OjE1LDI5MmBgIHdoZXJlIHRoZSBwYXJ0IGJlZm9yZSB0aGUgY29tbWEgaXMKKyAgICAgICAgIGhhbmRsZWQgYnkgYSBzdHJwdGltZSBmb3JtYXQgc3RyaW5nIChgYCclWS0lbS0lZCAlSDolTTolUydgYCksIGFuZCB0aGUKKyAgICAgICAgIHBhcnQgYWZ0ZXIgdGhlIGNvbW1hIGlzIGEgbWlsbGlzZWNvbmQgdmFsdWUuIEJlY2F1c2Ugc3RycHRpbWUgZG9lcyBub3QKKyAgICAgICAgIGhhdmUgYSBmb3JtYXQgcGxhY2Vob2xkZXIgZm9yIG1pbGxpc2Vjb25kcywgdGhlIG1pbGxpc2Vjb25kIHZhbHVlIGlzCisgICAgICAgICBhcHBlbmRlZCB1c2luZyBhbm90aGVyIGZvcm1hdCBzdHJpbmcsIGBgJyVzLCUwM2QnYGAg4oCTIGFuZCBib3RoIG9mIHRoZXNlCisgICAgICAgICBmb3JtYXQgc3RyaW5ncyBoYXZlIGJlZW4gaGFyZGNvZGVkIGludG8gdGhpcyBtZXRob2QuIFdpdGggdGhlIGNoYW5nZSwKKyAgICAgICAgIHRoZXNlIHN0cmluZ3MgYXJlIGRlZmluZWQgYXMgY2xhc3MtbGV2ZWwgYXR0cmlidXRlcyB3aGljaCBjYW4gYmUKKyAgICAgICAgIG92ZXJyaWRkZW4gYXQgdGhlIGluc3RhbmNlIGxldmVsIHdoZW4gZGVzaXJlZC4gVGhlIG5hbWVzIG9mIHRoZQorICAgICAgICAgYXR0cmlidXRlcyBhcmUgYGBkZWZhdWx0X3RpbWVfZm9ybWF0YGAgKGZvciB0aGUgc3RycHRpbWUgZm9ybWF0IHN0cmluZykKKyAgICAgICAgIGFuZCBgYGRlZmF1bHRfbXNlY19mb3JtYXRgYCAoZm9yIGFwcGVuZGluZyB0aGUgbWlsbGlzZWNvbmQgdmFsdWUpLgorCiAgICAuLiBtZXRob2Q6OiBmb3JtYXRFeGNlcHRpb24oZXhjX2luZm8pCiAKICAgICAgIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBleGNlcHRpb24gaW5mb3JtYXRpb24gKGEgc3RhbmRhcmQgZXhjZXB0aW9uIHR1cGxlIGFzCkBAIC05MDEsOCArOTE3LDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogd2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAotICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cyBhcmUKLSAgIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorICAgTG9ncyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCA6Y29uc3Q6YFdBUk5JTkdgIG9uIHRoZSByb290IGxvZ2dlci4gVGhlIGFyZ3VtZW50cworICAgYXJlIGludGVycHJldGVkIGFzIGZvciA6ZnVuYzpgZGVidWdgLgorCisgICAuLiBub3RlOjogVGhlcmUgaXMgYW4gb2Jzb2xldGUgZnVuY3Rpb24gYGB3YXJuYGAgd2hpY2ggaXMgZnVuY3Rpb25hbGx5CisgICAgICBpZGVudGljYWwgdG8gYGB3YXJuaW5nYGAuIEFzIGBgd2FybmBgIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSBkbyBub3QgdXNlCisgICAgICBpdCAtIHVzZSBgYHdhcm5pbmdgYCBpbnN0ZWFkLgogCiAKIC4uIGZ1bmN0aW9uOjogZXJyb3IobXNnLCAqYXJncywgKiprd2FyZ3MpCkBAIC0xMDI4LDEyICsxMDQ4LDI3IEBACiAgICB8IGBgc3RyZWFtYGAgICB8IFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSAgfAogICAgfCAgICAgICAgICAgICAgfCBTdHJlYW1IYW5kbGVyLiBOb3RlIHRoYXQgdGhpcyBhcmd1bWVudCBpcyAgIHwKICAgIHwgICAgICAgICAgICAgIHwgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGggYXJlICB8Ci0gICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgaGFuZGxlcnNgYCB8IElmIHNwZWNpZmllZCwgdGhpcyBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgfAorICAgfCAgICAgICAgICAgICAgfCBhbHJlYWR5IGNyZWF0ZWQgaGFuZGxlcnMgdG8gYWRkIHRvIHRoZSByb290IHwKKyAgIHwgICAgICAgICAgICAgIHwgbG9nZ2VyLiBBbnkgaGFuZGxlcnMgd2hpY2ggZG9uJ3QgYWxyZWFkeSAgICB8CisgICB8ICAgICAgICAgICAgICB8IGhhdmUgYSBmb3JtYXR0ZXIgc2V0IHdpbGwgYmUgYXNzaWduZWQgdGhlICAgfAorICAgfCAgICAgICAgICAgICAgfCBkZWZhdWx0IGZvcm1hdHRlciBjcmVhdGVkIGluIHRoaXMgZnVuY3Rpb24uIHwKKyAgIHwgICAgICAgICAgICAgIHwgTm90ZSB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlICAgICB8CisgICB8ICAgICAgICAgICAgICB8IHdpdGggJ2ZpbGVuYW1lJyBvciAnc3RyZWFtJyAtIGlmIGJvdGggYXJlICAgfAorICAgfCAgICAgICAgICAgICAgfCBwcmVzZW50LCBhIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC4gICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgYGBzdHlsZWBgIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBgYGhhbmRsZXJzYGAgYXJndW1lbnQgd2FzIGFkZGVkLiBBZGRpdGlvbmFsIGNoZWNrcyB3ZXJlIGFkZGVkIHRvCisgICAgICBjYXRjaCBzaXR1YXRpb25zIHdoZXJlIGluY29tcGF0aWJsZSBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCAoZS5nLgorICAgICAgYGBoYW5kbGVyc2BgIHRvZ2V0aGVyIHdpdGggYGBzdHJlYW1gYCBvciBgYGZpbGVuYW1lYGAsIG9yIGBgc3RyZWFtYGAKKyAgICAgIHRvZ2V0aGVyIHdpdGggYGBmaWxlbmFtZWBgKS4KKwogCiAuLiBmdW5jdGlvbjo6IHNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbHptYS5yc3QgYi9Eb2MvbGlicmFyeS9sem1hLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDlmYTA4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTAsMCArMSwzODIgQEAKKzptb2Q6YGx6bWFgIC0tLSBDb21wcmVzc2lvbiB1c2luZyB0aGUgTFpNQSBhbGdvcml0aG0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogbHptYQorICAgOnN5bm9wc2lzOiBBIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorLi4gbW9kdWxlYXV0aG9yOjogTmFkZWVtIFZhd2RhIDxuYWRlZW0udmF3ZGFAZ21haWwuY29tPgorLi4gc2VjdGlvbmF1dGhvcjo6IE5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgY2xhc3NlcyBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBjb21wcmVzc2luZyBhbmQKK2RlY29tcHJlc3NpbmcgZGF0YSB1c2luZyB0aGUgTFpNQSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIEFsc28gaW5jbHVkZWQgaXMgYSBmaWxlCitpbnRlcmZhY2Ugc3VwcG9ydGluZyB0aGUgYGAueHpgYCBhbmQgbGVnYWN5IGBgLmx6bWFgYCBmaWxlIGZvcm1hdHMgdXNlZCBieSB0aGUKKzpwcm9ncmFtOmB4emAgdXRpbGl0eSwgYXMgd2VsbCBhcyByYXcgY29tcHJlc3NlZCBzdHJlYW1zLgorCitUaGUgaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlIGlzIHZlcnkgc2ltaWxhciB0byB0aGF0IG9mIHRoZSA6bW9kOmBiejJgCittb2R1bGUuIEhvd2V2ZXIsIG5vdGUgdGhhdCA6Y2xhc3M6YExaTUFGaWxlYCBpcyAqbm90KiB0aHJlYWQtc2FmZSwgdW5saWtlCis6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCwgc28gaWYgeW91IG5lZWQgdG8gdXNlIGEgc2luZ2xlIDpjbGFzczpgTFpNQUZpbGVgIGluc3RhbmNlCitmcm9tIG11bHRpcGxlIHRocmVhZHMsIGl0IGlzIG5lY2Vzc2FyeSB0byBwcm90ZWN0IGl0IHdpdGggYSBsb2NrLgorCisKKy4uIGV4Y2VwdGlvbjo6IExaTUFFcnJvcgorCisgICBUaGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGNvbXByZXNzaW9uIG9yCisgICBkZWNvbXByZXNzaW9uLCBvciB3aGlsZSBpbml0aWFsaXppbmcgdGhlIGNvbXByZXNzb3IvZGVjb21wcmVzc29yIHN0YXRlLgorCisKK1JlYWRpbmcgYW5kIHdyaXRpbmcgY29tcHJlc3NlZCBmaWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlbmFtZSwgbW9kZT0icmIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUsIHJldHVybmluZyBhIDp0ZXJtOmBmaWxlCisgICBvYmplY3RgLgorCisgICBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzCisgICBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbiBleGlzdGluZyBmaWxlIG9iamVjdCB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCJyImBgLCBgYCJyYiJgYCwgYGAidyJgYCwgYGAid2IiYGAsCisgICBgYCJhImBgIG9yIGBgImFiImBgIGZvciBiaW5hcnkgbW9kZSwgb3IgYGAicnQiYGAsIGBgInd0ImBgLCBvciBgYCJhdCJgYCBmb3IKKyAgIHRleHQgbW9kZS4gVGhlIGRlZmF1bHQgaXMgYGAicmIiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSAqZm9ybWF0KiBhbmQgKmZpbHRlcnMqIGFyZ3VtZW50cyBoYXZlCisgICB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BRGVjb21wcmVzc29yYC4gSW4gdGhpcyBjYXNlLCB0aGUgKmNoZWNrKgorICAgYW5kICpwcmVzZXQqIGFyZ3VtZW50cyBzaG91bGQgbm90IGJlIHVzZWQuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kCisgICAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZ3MgYXMgZm9yIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgLgorCisgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgOmNsYXNzOmBMWk1BRmlsZWAKKyAgIGNvbnN0cnVjdG9yOiBgYExaTUFGaWxlKGZpbGVuYW1lLCBtb2RlLCAuLi4pYGAuIEluIHRoaXMgY2FzZSwgdGhlICplbmNvZGluZyosCisgICAqZXJyb3JzKiBhbmQgKm5ld2xpbmUqIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgRm9yIHRleHQgbW9kZSwgYSA6Y2xhc3M6YExaTUFGaWxlYCBvYmplY3QgaXMgY3JlYXRlZCwgYW5kIHdyYXBwZWQgaW4gYW4KKyAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvcgorICAgaGFuZGxpbmcgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworCisuLiBjbGFzczo6IExaTUFGaWxlKGZpbGVuYW1lPU5vbmUsIG1vZGU9InIiLCBcKiwgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBtb2RlLgorCisgICBBbiA6Y2xhc3M6YExaTUFGaWxlYCBjYW4gd3JhcCBhbiBhbHJlYWR5LW9wZW4gOnRlcm06YGZpbGUgb2JqZWN0YCwgb3Igb3BlcmF0ZQorICAgZGlyZWN0bHkgb24gYSBuYW1lZCBmaWxlLiBUaGUgKmZpbGVuYW1lKiBhcmd1bWVudCBzcGVjaWZpZXMgZWl0aGVyIHRoZSBmaWxlCisgICBvYmplY3QgdG8gd3JhcCwgb3IgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gb3BlbiAoYXMgYSA6Y2xhc3M6YHN0cmAgb3IKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCkuIFdoZW4gd3JhcHBpbmcgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QsIHRoZSB3cmFwcGVkCisgICBmaWxlIHdpbGwgbm90IGJlIGNsb3NlZCB3aGVuIHRoZSA6Y2xhc3M6YExaTUFGaWxlYCBpcyBjbG9zZWQuCisKKyAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGVpdGhlciBgYCJyImBgIGZvciByZWFkaW5nIChkZWZhdWx0KSwgYGAidyJgYCBmb3IKKyAgIG92ZXJ3cml0aW5nLCBvciBgYCJhImBgIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMKKyAgIGBgInJiImBgLCBgYCJ3YiJgYCwgYW5kIGBgImFiImBgIHJlc3BlY3RpdmVseS4KKworICAgSWYgKmZpbGVuYW1lKiBpcyBhIGZpbGUgb2JqZWN0IChyYXRoZXIgdGhhbiBhbiBhY3R1YWwgZmlsZSBuYW1lKSwgYSBtb2RlIG9mCisgICBgYCJ3ImBgIGRvZXMgbm90IHRydW5jYXRlIHRoZSBmaWxlLCBhbmQgaXMgaW5zdGVhZCBlcXVpdmFsZW50IHRvIGBgImEiYGAuCisKKyAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHJlYWRpbmcsIHRoZSBpbnB1dCBmaWxlIG1heSBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZgorICAgbXVsdGlwbGUgc2VwYXJhdGUgY29tcHJlc3NlZCBzdHJlYW1zLiBUaGVzZSBhcmUgdHJhbnNwYXJlbnRseSBkZWNvZGVkIGFzIGEKKyAgIHNpbmdsZSBsb2dpY2FsIHN0cmVhbS4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpmb3JtYXQqIGFuZCAqZmlsdGVycyogYXJndW1lbnRzIGhhdmUKKyAgIHRoZSBzYW1lIG1lYW5pbmdzIGFzIGZvciA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLiBJbiB0aGlzIGNhc2UsIHRoZSAqY2hlY2sqCisgICBhbmQgKnByZXNldCogYXJndW1lbnRzIHNob3VsZCBub3QgYmUgdXNlZC4KKworICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3Igd3JpdGluZywgdGhlICpmb3JtYXQqLCAqY2hlY2sqLCAqcHJlc2V0KiBhbmQKKyAgICpmaWx0ZXJzKiBhcmd1bWVudHMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5ncyBhcyBmb3IgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAuCisKKyAgIDpjbGFzczpgTFpNQUZpbGVgIHN1cHBvcnRzIGFsbCB0aGUgbWVtYmVycyBzcGVjaWZpZWQgYnkKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgLCBleGNlcHQgZm9yIDptZXRoOmBkZXRhY2hgIGFuZCA6bWV0aDpgdHJ1bmNhdGVgLgorICAgSXRlcmF0aW9uIGFuZCB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcmUgc3VwcG9ydGVkLgorCisgICBUaGUgZm9sbG93aW5nIG1ldGhvZCBpcyBhbHNvIHByb3ZpZGVkOgorCisgICAuLiBtZXRob2Q6OiBwZWVrKHNpemU9LTEpCisKKyAgICAgIFJldHVybiBidWZmZXJlZCBkYXRhIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBmaWxlIHBvc2l0aW9uLiBBdCBsZWFzdCBvbmUKKyAgICAgIGJ5dGUgb2YgZGF0YSB3aWxsIGJlIHJldHVybmVkLCB1bmxlc3MgRU9GIGhhcyBiZWVuIHJlYWNoZWQuIFRoZSBleGFjdAorICAgICAgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkICh0aGUgKnNpemUqIGFyZ3VtZW50IGlzIGlnbm9yZWQpLgorCisKK0NvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBjbGFzczo6IExaTUFDb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDcmVhdGUgYSBjb21wcmVzc29yIG9iamVjdCwgd2hpY2ggY2FuIGJlIHVzZWQgdG8gY29tcHJlc3MgZGF0YSBpbmNyZW1lbnRhbGx5LgorCisgICBGb3IgYSBtb3JlIGNvbnZlbmllbnQgd2F5IG9mIGNvbXByZXNzaW5nIGEgc2luZ2xlIGNodW5rIG9mIGRhdGEsIHNlZQorICAgOmZ1bmM6YGNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB3aGF0IGNvbnRhaW5lciBmb3JtYXQgc2hvdWxkIGJlIHVzZWQuCisgICBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorCisgICAqIDpjb25zdDpgRk9STUFUX1haYDogVGhlIGBgLnh6YGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9ybWF0LgorCisgICAqIDpjb25zdDpgRk9STUFUX0FMT05FYDogVGhlIGxlZ2FjeSBgYC5sem1hYGAgY29udGFpbmVyIGZvcm1hdC4KKyAgICAgIFRoaXMgZm9ybWF0IGlzIG1vcmUgbGltaXRlZCB0aGFuIGBgLnh6YGAgLS0gaXQgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkKKyAgICAgIGNoZWNrcyBvciBtdWx0aXBsZSBmaWx0ZXJzLgorCisgICAqIDpjb25zdDpgRk9STUFUX1JBV2A6IEEgcmF3IGRhdGEgc3RyZWFtLCBub3QgdXNpbmcgYW55IGNvbnRhaW5lciBmb3JtYXQuCisgICAgICBUaGlzIGZvcm1hdCBzcGVjaWZpZXIgZG9lcyBub3Qgc3VwcG9ydCBpbnRlZ3JpdHkgY2hlY2tzLCBhbmQgcmVxdWlyZXMgdGhhdAorICAgICAgeW91IGFsd2F5cyBzcGVjaWZ5IGEgY3VzdG9tIGZpbHRlciBjaGFpbiAoZm9yIGJvdGggY29tcHJlc3Npb24gYW5kCisgICAgICBkZWNvbXByZXNzaW9uKS4gQWRkaXRpb25hbGx5LCBkYXRhIGNvbXByZXNzZWQgaW4gdGhpcyBtYW5uZXIgY2Fubm90IGJlCisgICAgICBkZWNvbXByZXNzZWQgdXNpbmcgOmNvbnN0OmBGT1JNQVRfQVVUT2AgKHNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgKS4KKworICAgVGhlICpjaGVjayogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGludGVncml0eSBjaGVjayB0byBpbmNsdWRlIGluIHRoZQorICAgY29tcHJlc3NlZCBkYXRhLiBUaGlzIGNoZWNrIGlzIHVzZWQgd2hlbiBkZWNvbXByZXNzaW5nLCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgIGRhdGEgaGFzIG5vdCBiZWVuIGNvcnJ1cHRlZC4gUG9zc2libGUgdmFsdWVzIGFyZToKKworICAgKiA6Y29uc3Q6YENIRUNLX05PTkVgOiBObyBpbnRlZ3JpdHkgY2hlY2suCisgICAgIFRoaXMgaXMgdGhlIGRlZmF1bHQgKGFuZCB0aGUgb25seSBhY2NlcHRhYmxlIHZhbHVlKSBmb3IKKyAgICAgOmNvbnN0OmBGT1JNQVRfQUxPTkVgIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfQ1JDMzJgOiAzMi1iaXQgQ3ljbGljIFJlZHVuZGFuY3kgQ2hlY2suCisKKyAgICogOmNvbnN0OmBDSEVDS19DUkM2NGA6IDY0LWJpdCBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4KKyAgICAgVGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgOmNvbnN0OmBGT1JNQVRfWFpgLgorCisgICAqIDpjb25zdDpgQ0hFQ0tfU0hBMjU2YDogMjU2LWJpdCBTZWN1cmUgSGFzaCBBbGdvcml0aG0uCisKKyAgIElmIHRoZSBzcGVjaWZpZWQgY2hlY2sgaXMgbm90IHN1cHBvcnRlZCwgYW4gOmNsYXNzOmBMWk1BRXJyb3JgIGlzIHJhaXNlZC4KKworICAgVGhlIGNvbXByZXNzaW9uIHNldHRpbmdzIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICBsZXZlbCAod2l0aCB0aGUgKnByZXNldCogYXJndW1lbnQpLCBvciBpbiBkZXRhaWwgYXMgYSBjdXN0b20gZmlsdGVyIGNoYWluCisgICAod2l0aCB0aGUgKmZpbHRlcnMqIGFyZ3VtZW50KS4KKworICAgVGhlICpwcmVzZXQqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiBgYDBgYCBhbmQKKyAgIGBgOWBgIChpbmNsdXNpdmUpLCBvcHRpb25hbGx5IE9SLWVkIHdpdGggdGhlIGNvbnN0YW50CisgICA6Y29uc3Q6YFBSRVNFVF9FWFRSRU1FYC4gSWYgbmVpdGhlciAqcHJlc2V0KiBub3IgKmZpbHRlcnMqIGFyZSBnaXZlbiwgdGhlCisgICBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHVzZSA6Y29uc3Q6YFBSRVNFVF9ERUZBVUxUYCAocHJlc2V0IGxldmVsIGBgNmBgKS4KKyAgIEhpZ2hlciBwcmVzZXRzIHByb2R1Y2Ugc21hbGxlciBvdXRwdXQsIGJ1dCBtYWtlIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzCisgICBzbG93ZXIuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBJbiBhZGRpdGlvbiB0byBiZWluZyBtb3JlIENQVS1pbnRlbnNpdmUsIGNvbXByZXNzaW9uIHdpdGggaGlnaGVyIHByZXNldHMKKyAgICAgIGFsc28gcmVxdWlyZXMgbXVjaCBtb3JlIG1lbW9yeSAoYW5kIHByb2R1Y2VzIG91dHB1dCB0aGF0IG5lZWRzIG1vcmUgbWVtb3J5CisgICAgICB0byBkZWNvbXByZXNzKS4gV2l0aCBwcmVzZXQgYGA5YGAgZm9yIGV4YW1wbGUsIHRoZSBvdmVyaGVhZCBmb3IgYW4KKyAgICAgIDpjbGFzczpgTFpNQUNvbXByZXNzb3JgIG9iamVjdCBjYW4gYmUgYXMgaGlnaCBhcyA4MDBNaUIuIEZvciB0aGlzIHJlYXNvbiwKKyAgICAgIGl0IGlzIGdlbmVyYWxseSBiZXN0IHRvIHN0aWNrIHdpdGggdGhlIGRlZmF1bHQgcHJlc2V0LgorCisgICBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgZmlsdGVyIGNoYWluIHNwZWNpZmllci4KKyAgIFNlZSA6cmVmOmBmaWx0ZXItY2hhaW4tc3BlY3NgIGZvciBkZXRhaWxzLgorCisgICAuLiBtZXRob2Q6OiBjb21wcmVzcyhkYXRhKQorCisgICAgICBDb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKKyAgICAgIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuIFNvbWUgb2YKKyAgICAgICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bworICAgICAgOm1ldGg6YGNvbXByZXNzYCBhbmQgOm1ldGg6YGZsdXNoYC4gVGhlIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlCisgICAgICBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgb3V0cHV0IG9mIGFueSBwcmV2aW91cyBjYWxscyB0byA6bWV0aDpgY29tcHJlc3NgLgorCisgICAuLiBtZXRob2Q6OiBmbHVzaCgpCisKKyAgICAgIEZpbmlzaCB0aGUgY29tcHJlc3Npb24gcHJvY2VzcywgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0CisgICAgICBjb250YWluaW5nIGFueSBkYXRhIHN0b3JlZCBpbiB0aGUgY29tcHJlc3NvcidzIGludGVybmFsIGJ1ZmZlcnMuCisKKyAgICAgIFRoZSBjb21wcmVzc29yIGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4KKworCisuLiBjbGFzczo6IExaTUFEZWNvbXByZXNzb3IoZm9ybWF0PUZPUk1BVF9BVVRPLCBtZW1saW1pdD1Ob25lLCBmaWx0ZXJzPU5vbmUpCisKKyAgIENyZWF0ZSBhIGRlY29tcHJlc3NvciBvYmplY3QsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRlY29tcHJlc3MgZGF0YQorICAgaW5jcmVtZW50YWxseS4KKworICAgRm9yIGEgbW9yZSBjb252ZW5pZW50IHdheSBvZiBkZWNvbXByZXNzaW5nIGFuIGVudGlyZSBjb21wcmVzc2VkIHN0cmVhbSBhdAorICAgb25jZSwgc2VlIDpmdW5jOmBkZWNvbXByZXNzYC4KKworICAgVGhlICpmb3JtYXQqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCB0aGF0IHNob3VsZCBiZSB1c2VkLiBUaGUKKyAgIGRlZmF1bHQgaXMgOmNvbnN0OmBGT1JNQVRfQVVUT2AsIHdoaWNoIGNhbiBkZWNvbXByZXNzIGJvdGggYGAueHpgYCBhbmQKKyAgIGBgLmx6bWFgYCBmaWxlcy4gT3RoZXIgcG9zc2libGUgdmFsdWVzIGFyZSA6Y29uc3Q6YEZPUk1BVF9YWmAsCisgICA6Y29uc3Q6YEZPUk1BVF9BTE9ORWAsIGFuZCA6Y29uc3Q6YEZPUk1BVF9SQVdgLgorCisgICBUaGUgKm1lbWxpbWl0KiBhcmd1bWVudCBzcGVjaWZpZXMgYSBsaW1pdCAoaW4gYnl0ZXMpIG9uIHRoZSBhbW91bnQgb2YgbWVtb3J5CisgICB0aGF0IHRoZSBkZWNvbXByZXNzb3IgY2FuIHVzZS4gV2hlbiB0aGlzIGFyZ3VtZW50IGlzIHVzZWQsIGRlY29tcHJlc3Npb24gd2lsbAorICAgZmFpbCB3aXRoIGFuIDpjbGFzczpgTFpNQUVycm9yYCBpZiBpdCBpcyBub3QgcG9zc2libGUgdG8gZGVjb21wcmVzcyB0aGUgaW5wdXQKKyAgIHdpdGhpbiB0aGUgZ2l2ZW4gbWVtb3J5IGxpbWl0LgorCisgICBUaGUgKmZpbHRlcnMqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgZmlsdGVyIGNoYWluIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlCisgICB0aGUgc3RyZWFtIGJlaW5nIGRlY29tcHJlc3NlZC4gVGhpcyBhcmd1bWVudCBpcyByZXF1aXJlZCBpZiAqZm9ybWF0KiBpcworICAgOmNvbnN0OmBGT1JNQVRfUkFXYCwgYnV0IHNob3VsZCBub3QgYmUgdXNlZCBmb3Igb3RoZXIgZm9ybWF0cy4KKyAgIFNlZSA6cmVmOmBmaWx0ZXItY2hhaW4tc3BlY3NgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGZpbHRlciBjaGFpbnMuCisKKyAgIC4uIG5vdGU6OgorICAgICAgVGhpcyBjbGFzcyBkb2VzIG5vdCB0cmFuc3BhcmVudGx5IGhhbmRsZSBpbnB1dHMgY29udGFpbmluZyBtdWx0aXBsZQorICAgICAgY29tcHJlc3NlZCBzdHJlYW1zLCB1bmxpa2UgOmZ1bmM6YGRlY29tcHJlc3NgIGFuZCA6Y2xhc3M6YExaTUFGaWxlYC4gVG8KKyAgICAgIGRlY29tcHJlc3MgYSBtdWx0aS1zdHJlYW0gaW5wdXQgd2l0aCA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgLCB5b3UgbXVzdAorICAgICAgY3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBmb3IgZWFjaCBzdHJlYW0uCisKKyAgIC4uIG1ldGhvZDo6IGRlY29tcHJlc3MoZGF0YSkKKworICAgICAgRGVjb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIGEgOmNsYXNzOmBieXRlc2AKKyAgICAgIG9iamVjdCBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgZGF0YSBmb3IgYXQgbGVhc3QgcGFydCBvZiB0aGUgaW5wdXQuCisgICAgICBTb21lIG9mICpkYXRhKiBtYXkgYmUgYnVmZmVyZWQgaW50ZXJuYWxseSwgZm9yIHVzZSBpbiBsYXRlciBjYWxscyB0bworICAgICAgOm1ldGg6YGRlY29tcHJlc3NgLiBUaGUgcmV0dXJuZWQgZGF0YSBzaG91bGQgYmUgY29uY2F0ZW5hdGVkIHdpdGggdGhlCisgICAgICBvdXRwdXQgb2YgYW55IHByZXZpb3VzIGNhbGxzIHRvIDptZXRoOmBkZWNvbXByZXNzYC4KKworICAgLi4gYXR0cmlidXRlOjogY2hlY2sKKworICAgICAgVGhlIElEIG9mIHRoZSBpbnRlZ3JpdHkgY2hlY2sgdXNlZCBieSB0aGUgaW5wdXQgc3RyZWFtLiBUaGlzIG1heSBiZQorICAgICAgOmNvbnN0OmBDSEVDS19VTktOT1dOYCB1bnRpbCBlbm91Z2ggb2YgdGhlIGlucHV0IGhhcyBiZWVuIGRlY29kZWQgdG8KKyAgICAgIGRldGVybWluZSB3aGF0IGludGVncml0eSBjaGVjayBpdCB1c2VzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBlb2YKKworICAgICAgVHJ1ZSBpZiB0aGUgZW5kLW9mLXN0cmVhbSBtYXJrZXIgaGFzIGJlZW4gcmVhY2hlZC4KKworICAgLi4gYXR0cmlidXRlOjogdW51c2VkX2RhdGEKKworICAgICAgRGF0YSBmb3VuZCBhZnRlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIHN0cmVhbS4KKworICAgICAgQmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSBpcyByZWFjaGVkLCB0aGlzIHdpbGwgYmUgYGBiIiJgYC4KKworCisuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBDb21wcmVzcyAqZGF0YSogKGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSwgcmV0dXJuaW5nIHRoZSBjb21wcmVzc2VkIGRhdGEgYXMgYQorICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgorCisgICBTZWUgOmNsYXNzOmBMWk1BQ29tcHJlc3NvcmAgYWJvdmUgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICpmb3JtYXQqLCAqY2hlY2sqLAorICAgKnByZXNldCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMuCisKKworLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGEsIGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKQorCisgICBEZWNvbXByZXNzICpkYXRhKiAoYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QpLCByZXR1cm5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhCisgICBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKworICAgSWYgKmRhdGEqIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIG11bHRpcGxlIGRpc3RpbmN0IGNvbXByZXNzZWQgc3RyZWFtcywKKyAgIGRlY29tcHJlc3MgYWxsIG9mIHRoZXNlIHN0cmVhbXMsIGFuZCByZXR1cm4gdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHJlc3VsdHMuCisKKyAgIFNlZSA6Y2xhc3M6YExaTUFEZWNvbXByZXNzb3JgIGFib3ZlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAqZm9ybWF0KiwKKyAgICptZW1saW1pdCogYW5kICpmaWx0ZXJzKiBhcmd1bWVudHMuCisKKworTWlzY2VsbGFuZW91cworLS0tLS0tLS0tLS0tLQorCisuLiBmdW5jdGlvbjo6IGlzX2NoZWNrX3N1cHBvcnRlZChjaGVjaykKKworICAgUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBpbnRlZ3JpdHkgY2hlY2sgaXMgc3VwcG9ydGVkIG9uIHRoaXMgc3lzdGVtLgorCisgICA6Y29uc3Q6YENIRUNLX05PTkVgIGFuZCA6Y29uc3Q6YENIRUNLX0NSQzMyYCBhcmUgYWx3YXlzIHN1cHBvcnRlZC4KKyAgIDpjb25zdDpgQ0hFQ0tfQ1JDNjRgIGFuZCA6Y29uc3Q6YENIRUNLX1NIQTI1NmAgbWF5IGJlIHVuYXZhaWxhYmxlIGlmIHlvdSBhcmUKKyAgIHVzaW5nIGEgdmVyc2lvbiBvZiA6cHJvZ3JhbTpgbGlibHptYWAgdGhhdCB3YXMgY29tcGlsZWQgd2l0aCBhIGxpbWl0ZWQKKyAgIGZlYXR1cmUgc2V0LgorCisKKy4uIF9maWx0ZXItY2hhaW4tc3BlY3M6CisKK1NwZWNpZnlpbmcgY3VzdG9tIGZpbHRlciBjaGFpbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBmaWx0ZXIgY2hhaW4gc3BlY2lmaWVyIGlzIGEgc2VxdWVuY2Ugb2YgZGljdGlvbmFyaWVzLCB3aGVyZSBlYWNoIGRpY3Rpb25hcnkKK2NvbnRhaW5zIHRoZSBJRCBhbmQgb3B0aW9ucyBmb3IgYSBzaW5nbGUgZmlsdGVyLiBFYWNoIGRpY3Rpb25hcnkgbXVzdCBjb250YWluCit0aGUga2V5IGBgImlkImBgLCBhbmQgbWF5IGNvbnRhaW4gYWRkaXRpb25hbCBrZXlzIHRvIHNwZWNpZnkgZmlsdGVyLWRlcGVuZGVudAorb3B0aW9ucy4gVmFsaWQgZmlsdGVyIElEcyBhcmUgYXMgZm9sbG93czoKKworKiBDb21wcmVzc2lvbiBmaWx0ZXJzOgorICAgKiA6Y29uc3Q6YEZJTFRFUl9MWk1BMWAgKGZvciB1c2Ugd2l0aCA6Y29uc3Q6YEZPUk1BVF9BTE9ORWApCisgICAqIDpjb25zdDpgRklMVEVSX0xaTUEyYCAoZm9yIHVzZSB3aXRoIDpjb25zdDpgRk9STUFUX1haYCBhbmQgOmNvbnN0OmBGT1JNQVRfUkFXYCkKKworKiBEZWx0YSBmaWx0ZXI6CisgICAqIDpjb25zdDpgRklMVEVSX0RFTFRBYAorCisqIEJyYW5jaC1DYWxsLUp1bXAgKEJDSikgZmlsdGVyczoKKyAgICogOmNvbnN0OmBGSUxURVJfWDg2YAorICAgKiA6Y29uc3Q6YEZJTFRFUl9JQTY0YAorICAgKiA6Y29uc3Q6YEZJTFRFUl9BUk1gCisgICAqIDpjb25zdDpgRklMVEVSX0FSTVRIVU1CYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9QT1dFUlBDYAorICAgKiA6Y29uc3Q6YEZJTFRFUl9TUEFSQ2AKKworQSBmaWx0ZXIgY2hhaW4gY2FuIGNvbnNpc3Qgb2YgdXAgdG8gNCBmaWx0ZXJzLCBhbmQgY2Fubm90IGJlIGVtcHR5LiBUaGUgbGFzdAorZmlsdGVyIGluIHRoZSBjaGFpbiBtdXN0IGJlIGEgY29tcHJlc3Npb24gZmlsdGVyLCBhbmQgYW55IG90aGVyIGZpbHRlcnMgbXVzdCBiZQorZGVsdGEgb3IgQkNKIGZpbHRlcnMuCisKK0NvbXByZXNzaW9uIGZpbHRlcnMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgKHNwZWNpZmllZCBhcyBhZGRpdGlvbmFsCitlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5IHJlcHJlc2VudGluZyB0aGUgZmlsdGVyKToKKworICAgKiBgYHByZXNldGBgOiBBIGNvbXByZXNzaW9uIHByZXNldCB0byB1c2UgYXMgYSBzb3VyY2Ugb2YgZGVmYXVsdCB2YWx1ZXMgZm9yCisgICAgIG9wdGlvbnMgdGhhdCBhcmUgbm90IHNwZWNpZmllZCBleHBsaWNpdGx5LgorICAgKiBgYGRpY3Rfc2l6ZWBgOiBEaWN0aW9uYXJ5IHNpemUgaW4gYnl0ZXMuIFRoaXMgc2hvdWxkIGJlIGJldHdlZW4gNEtpQiBhbmQKKyAgICAgMS41R2lCIChpbmNsdXNpdmUpLgorICAgKiBgYGxjYGA6IE51bWJlciBvZiBsaXRlcmFsIGNvbnRleHQgYml0cy4KKyAgICogYGBscGBgOiBOdW1iZXIgb2YgbGl0ZXJhbCBwb3NpdGlvbiBiaXRzLiBUaGUgc3VtIGBgbGMgKyBscGBgIG11c3QgYmUgYXQKKyAgICAgbW9zdCA0LgorICAgKiBgYHBiYGA6IE51bWJlciBvZiBwb3NpdGlvbiBiaXRzOyBtdXN0IGJlIGF0IG1vc3QgNC4KKyAgICogYGBtb2RlYGA6IDpjb25zdDpgTU9ERV9GQVNUYCBvciA6Y29uc3Q6YE1PREVfTk9STUFMYC4KKyAgICogYGBuaWNlX2xlbmBgOiBXaGF0IHNob3VsZCBiZSBjb25zaWRlcmVkIGEgIm5pY2UgbGVuZ3RoIiBmb3IgYSBtYXRjaC4KKyAgICAgVGhpcyBzaG91bGQgYmUgMjczIG9yIGxlc3MuCisgICAqIGBgbWZgYDogV2hhdCBtYXRjaCBmaW5kZXIgdG8gdXNlIC0tIDpjb25zdDpgTUZfSEMzYCwgOmNvbnN0OmBNRl9IQzRgLAorICAgICA6Y29uc3Q6YE1GX0JUMmAsIDpjb25zdDpgTUZfQlQzYCwgb3IgOmNvbnN0OmBNRl9CVDRgLgorICAgKiBgYGRlcHRoYGA6IE1heGltdW0gc2VhcmNoIGRlcHRoIHVzZWQgYnkgbWF0Y2ggZmluZGVyLiAwIChkZWZhdWx0KSBtZWFucyB0bworICAgICBzZWxlY3QgYXV0b21hdGljYWxseSBiYXNlZCBvbiBvdGhlciBmaWx0ZXIgb3B0aW9ucy4KKworVGhlIGRlbHRhIGZpbHRlciBzdG9yZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYnl0ZXMsIHByb2R1Y2luZyBtb3JlIHJlcGV0aXRpdmUKK2lucHV0IGZvciB0aGUgY29tcHJlc3NvciBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuIEl0IG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUKK1RoZSBkZWx0YSBmaWx0ZXIgc3VwcG9ydHMgb25seSBvbmUgb3B0aW9uLCBgYGRpc3RgYC4gVGhpcyBpbmRpY2F0ZXMgdGhlIGRpc3RhbmNlCitiZXR3ZWVuIGJ5dGVzIHRvIGJlIHN1YnRyYWN0ZWQuIFRoZSBkZWZhdWx0IGlzIDEsIGkuZS4gdGFrZSB0aGUgZGlmZmVyZW5jZXMKK2JldHdlZW4gYWRqYWNlbnQgYnl0ZXMuCisKK1RoZSBCQ0ogZmlsdGVycyBhcmUgaW50ZW5kZWQgdG8gYmUgYXBwbGllZCB0byBtYWNoaW5lIGNvZGUuIFRoZXkgY29udmVydAorcmVsYXRpdmUgYnJhbmNoZXMsIGNhbGxzIGFuZCBqdW1wcyBpbiB0aGUgY29kZSB0byB1c2UgYWJzb2x1dGUgYWRkcmVzc2luZywgd2l0aAordGhlIGFpbSBvZiBpbmNyZWFzaW5nIHRoZSByZWR1bmRhbmN5IHRoYXQgY2FuIGJlIGV4cGxvaXRlZCBieSB0aGUgY29tcHJlc3Nvci4KK1RoZXNlIGZpbHRlcnMgc3VwcG9ydCBvbmUgb3B0aW9uLCBgYHN0YXJ0X29mZnNldGBgLiBUaGlzIHNwZWNpZmllcyB0aGUgYWRkcmVzcwordGhhdCBzaG91bGQgYmUgbWFwcGVkIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IGRhdGEuIFRoZSBkZWZhdWx0IGlzIDAuCisKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK1JlYWRpbmcgaW4gYSBjb21wcmVzc2VkIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiKSBhcyBmOgorICAgICAgIGZpbGVfY29udGVudCA9IGYucmVhZCgpCisKK0NyZWF0aW5nIGEgY29tcHJlc3NlZCBmaWxlOjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGEgPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICB3aXRoIGx6bWEub3BlbigiZmlsZS54eiIsICJ3IikgYXMgZjoKKyAgICAgICBmLndyaXRlKGRhdGEpCisKK0NvbXByZXNzaW5nIGRhdGEgaW4gbWVtb3J5OjoKKworICAgaW1wb3J0IGx6bWEKKyAgIGRhdGFfaW4gPSBiIkluc2VydCBEYXRhIEhlcmUiCisgICBkYXRhX291dCA9IGx6bWEuY29tcHJlc3MoZGF0YV9pbikKKworSW5jcmVtZW50YWwgY29tcHJlc3Npb246OgorCisgICBpbXBvcnQgbHptYQorICAgbHpjID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisgICBvdXQxID0gbHpjLmNvbXByZXNzKGIiU29tZSBkYXRhXG4iKQorICAgb3V0MiA9IGx6Yy5jb21wcmVzcyhiIkFub3RoZXIgcGllY2Ugb2YgZGF0YVxuIikKKyAgIG91dDMgPSBsemMuY29tcHJlc3MoYiJFdmVuIG1vcmUgZGF0YVxuIikKKyAgIG91dDQgPSBsemMuZmx1c2goKQorICAgIyBDb25jYXRlbmF0ZSBhbGwgdGhlIHBhcnRpYWwgcmVzdWx0czoKKyAgIHJlc3VsdCA9IGIiIi5qb2luKFtvdXQxLCBvdXQyLCBvdXQzLCBvdXQ0XSkKKworV3JpdGluZyBjb21wcmVzc2VkIGRhdGEgdG8gYW4gYWxyZWFkeS1vcGVuIGZpbGU6OgorCisgICBpbXBvcnQgbHptYQorICAgd2l0aCBvcGVuKCJmaWxlLnh6IiwgIndiIikgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiVGhpcyBkYXRhIHdpbGwgbm90IGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgd2l0aCBsem1hLm9wZW4oZiwgInciKSBhcyBsemY6CisgICAgICAgICAgIGx6Zi53cml0ZShiIlRoaXMgKndpbGwqIGJlIGNvbXByZXNzZWRcbiIpCisgICAgICAgZi53cml0ZShiIk5vdCBjb21wcmVzc2VkXG4iKQorCitDcmVhdGluZyBhIGNvbXByZXNzZWQgZmlsZSB1c2luZyBhIGN1c3RvbSBmaWx0ZXIgY2hhaW46OgorCisgICBpbXBvcnQgbHptYQorICAgbXlfZmlsdGVycyA9IFsKKyAgICAgICB7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJkaXN0IjogNX0sCisgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyLCAicHJlc2V0IjogNyB8IGx6bWEuUFJFU0VUX0VYVFJFTUV9LAorICAgXQorICAgd2l0aCBsem1hLm9wZW4oImZpbGUueHoiLCAidyIsIGZpbHRlcnM9bXlfZmlsdGVycykgYXMgZjoKKyAgICAgICBmLndyaXRlKGIiYmxhaCBibGFoIGJsYWgiKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbWFya3VwLnJzdCBiL0RvYy9saWJyYXJ5L21hcmt1cC5yc3QKaW5kZXggMWI0Y2NhNS4uMTU4OGFhOCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWFya3VwLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tYXJrdXAucnN0CkBAIC05LDIwICs5LDEzIEBACiBMYW5ndWFnZSAoU0dNTCkgYW5kIHRoZSBIeXBlcnRleHQgTWFya3VwIExhbmd1YWdlIChIVE1MKSwgYW5kIHNldmVyYWwgaW50ZXJmYWNlcwogZm9yIHdvcmtpbmcgd2l0aCB0aGUgRXh0ZW5zaWJsZSBNYXJrdXAgTGFuZ3VhZ2UgKFhNTCkuCiAKLUl0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbW9kdWxlcyBpbiB0aGUgOm1vZDpgeG1sYCBwYWNrYWdlIHJlcXVpcmUgdGhhdAotdGhlcmUgYmUgYXQgbGVhc3Qgb25lIFNBWC1jb21wbGlhbnQgWE1MIHBhcnNlciBhdmFpbGFibGUuIFRoZSBFeHBhdCBwYXJzZXIgaXMKLWluY2x1ZGVkIHdpdGggUHl0aG9uLCBzbyB0aGUgOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgIG1vZHVsZSB3aWxsIGFsd2F5cyBiZQotYXZhaWxhYmxlLgotCi1UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDptb2Q6YHhtbC5kb21gIGFuZCA6bW9kOmB4bWwuc2F4YCBwYWNrYWdlcyBhcmUgdGhlCi1kZWZpbml0aW9uIG9mIHRoZSBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBET00gYW5kIFNBWCBpbnRlcmZhY2VzLgotCiAKIC4uIHRvY3RyZWU6OgogCiAgICBodG1sLnJzdAogICAgaHRtbC5wYXJzZXIucnN0CiAgICBodG1sLmVudGl0aWVzLnJzdAorICAgeG1sLnJzdAogICAgeG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAogICAgeG1sLmRvbS5yc3QKICAgIHhtbC5kb20ubWluaWRvbS5yc3QKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21hdGgucnN0IGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKaW5kZXggOThjNWIzMy4uNjJjMGYzNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKQEAgLTE4NCw2ICsxODQsMTkgQEAKICAgIHJlc3VsdCBpcyBjYWxjdWxhdGVkIGluIGEgd2F5IHdoaWNoIGlzIGFjY3VyYXRlIGZvciAqeCogbmVhciB6ZXJvLgogCiAKKy4uIGZ1bmN0aW9uOjogbG9nMih4KQorCisgICBSZXR1cm4gdGhlIGJhc2UtMiBsb2dhcml0aG0gb2YgKngqLiBUaGlzIGlzIHVzdWFsbHkgbW9yZSBhY2N1cmF0ZSB0aGFuCisgICBgYGxvZyh4LCAyKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gc2VlYWxzbzo6CisKKyAgICAgIDptZXRoOmBpbnQuYml0X2xlbmd0aGAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgbmVjZXNzYXJ5IHRvIHJlcHJlc2VudAorICAgICAgYW4gaW50ZWdlciBpbiBiaW5hcnksIGV4Y2x1ZGluZyB0aGUgc2lnbiBhbmQgbGVhZGluZyB6ZXJvcy4KKworCiAuLiBmdW5jdGlvbjo6IGxvZzEwKHgpCiAKICAgIFJldHVybiB0aGUgYmFzZS0xMCBsb2dhcml0aG0gb2YgKngqLiAgVGhpcyBpcyB1c3VhbGx5IG1vcmUgYWNjdXJhdGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21tYXAucnN0IGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKaW5kZXggNWYwZjAwNC4uMWExOWE3ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbW1hcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbW1hcC5yc3QKQEAgLTE5NiwxMiArMTk2LDE2IEBACiAgICAgICBtb3ZlIHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAogCi0gICAuLiBtZXRob2Q6OiByZWFkKG51bSkKKyAgIC4uIG1ldGhvZDo6IHJlYWQoW25dKQogCi0gICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpudW0qIGJ5dGVzIHN0YXJ0aW5nIGZyb20gdGhlCi0gICAgICBjdXJyZW50IGZpbGUgcG9zaXRpb247IHRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlCi0gICAgICBieXRlcyB0aGF0IHdlcmUgcmV0dXJuZWQuCisgICAgICBSZXR1cm4gYSA6Y2xhc3M6YGJ5dGVzYCBjb250YWluaW5nIHVwIHRvICpuKiBieXRlcyBzdGFydGluZyBmcm9tIHRoZQorICAgICAgY3VycmVudCBmaWxlIHBvc2l0aW9uLiBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgKk5vbmUqIG9yIG5lZ2F0aXZlLAorICAgICAgcmV0dXJuIGFsbCBieXRlcyBmcm9tIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUKKyAgICAgIG1hcHBpbmcuIFRoZSBmaWxlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgYWZ0ZXIgdGhlIGJ5dGVzIHRoYXQgd2VyZQorICAgICAgcmV0dXJuZWQuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBcmd1bWVudCBjYW4gYmUgb21pdHRlZCBvciAqTm9uZSouCiAKICAgIC4uIG1ldGhvZDo6IHJlYWRfYnl0ZSgpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QgYi9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CmluZGV4IDg4OWEwYzUuLjlkMjM3MjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdApAQCAtMjAsNiArMjAsMTEgQEAKIGZvciBpbnRlcm5hdGlvbmFsaXplZCBhcHBsaWNhdGlvbnMuIFRoZSB3aWRlIGNoYXIgQVBJIHNob3VsZCBiZSB1c2VkIHdoZXJlCiBldmVyIHBvc3NpYmxlCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBPcGVyYXRpb25zIGluIHRoaXMgbW9kdWxlIG5vdyByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aGVyZSA6ZXhjOmBJT0Vycm9yYAorICAgd2FzIHJhaXNlZC4KKworCiAuLiBfbXN2Y3J0LWZpbGVzOgogCiBGaWxlIE9wZXJhdGlvbnMKQEAgLTI5LDcgKzM0LDcgQEAKIC4uIGZ1bmN0aW9uOjogbG9ja2luZyhmZCwgbW9kZSwgbmJ5dGVzKQogCiAgICBMb2NrIHBhcnQgb2YgYSBmaWxlIGJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciAqZmQqIGZyb20gdGhlIEMgcnVudGltZS4gIFJhaXNlcwotICAgOmV4YzpgSU9FcnJvcmAgb24gZmFpbHVyZS4gIFRoZSBsb2NrZWQgcmVnaW9uIG9mIHRoZSBmaWxlIGV4dGVuZHMgZnJvbSB0aGUKKyAgIDpleGM6YE9TRXJyb3JgIG9uIGZhaWx1cmUuICBUaGUgbG9ja2VkIHJlZ2lvbiBvZiB0aGUgZmlsZSBleHRlbmRzIGZyb20gdGhlCiAgICBjdXJyZW50IGZpbGUgcG9zaXRpb24gZm9yICpuYnl0ZXMqIGJ5dGVzLCBhbmQgbWF5IGNvbnRpbnVlIGJleW9uZCB0aGUgZW5kIG9mIHRoZQogICAgZmlsZS4gICptb2RlKiBtdXN0IGJlIG9uZSBvZiB0aGUgOmNvbnN0OmBMS19cKmAgY29uc3RhbnRzIGxpc3RlZCBiZWxvdy4gTXVsdGlwbGUKICAgIHJlZ2lvbnMgaW4gYSBmaWxlIG1heSBiZSBsb2NrZWQgYXQgdGhlIHNhbWUgdGltZSwgYnV0IG1heSBub3Qgb3ZlcmxhcC4gIEFkamFjZW50CkBAIC00MSwxMyArNDYsMTMgQEAKIAogICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIHRoZSBwcm9ncmFtCiAgICBpbW1lZGlhdGVseSB0cmllcyBhZ2FpbiBhZnRlciAxIHNlY29uZC4gIElmLCBhZnRlciAxMCBhdHRlbXB0cywgdGhlIGJ5dGVzIGNhbm5vdAotICAgYmUgbG9ja2VkLCA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQuCisgICBiZSBsb2NrZWQsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KIAogCiAuLiBkYXRhOjogTEtfTkJMQ0sKICAgICAgICAgICBMS19OQlJMQ0sKIAotICAgTG9ja3MgdGhlIHNwZWNpZmllZCBieXRlcy4gSWYgdGhlIGJ5dGVzIGNhbm5vdCBiZSBsb2NrZWQsIDpleGM6YElPRXJyb3JgIGlzCisgICBMb2NrcyB0aGUgc3BlY2lmaWVkIGJ5dGVzLiBJZiB0aGUgYnl0ZXMgY2Fubm90IGJlIGxvY2tlZCwgOmV4YzpgT1NFcnJvcmAgaXMKICAgIHJhaXNlZC4KIAogCkBAIC03Myw3ICs3OCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogZ2V0X29zZmhhbmRsZShmZCkKIAotICAgUmV0dXJuIHRoZSBmaWxlIGhhbmRsZSBmb3IgdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgUmFpc2VzIDpleGM6YElPRXJyb3JgIGlmCisgICBSZXR1cm4gdGhlIGZpbGUgaGFuZGxlIGZvciB0aGUgZmlsZSBkZXNjcmlwdG9yICpmZCouICBSYWlzZXMgOmV4YzpgT1NFcnJvcmAgaWYKICAgICpmZCogaXMgbm90IHJlY29nbml6ZWQuCiAKIApAQCAtMTQ0LDQgKzE0OSw0IEBACiAuLiBmdW5jdGlvbjo6IGhlYXBtaW4oKQogCiAgICBGb3JjZSB0aGUgOmM6ZnVuYzpgbWFsbG9jYCBoZWFwIHRvIGNsZWFuIGl0c2VsZiB1cCBhbmQgcmV0dXJuIHVudXNlZCBibG9ja3MgdG8KLSAgIHRoZSBvcGVyYXRpbmcgc3lzdGVtLiAgT24gZmFpbHVyZSwgdGhpcyByYWlzZXMgOmV4YzpgSU9FcnJvcmAuCisgICB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gIE9uIGZhaWx1cmUsIHRoaXMgcmFpc2VzIDpleGM6YE9TRXJyb3JgLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdCBiL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKaW5kZXggNDI3MWZjMi4uODJjODYxMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CkBAIC0yOSw3ICsyOSw3IEBACiAgICAgRnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhpcyBwYWNrYWdlIHJlcXVpcmVzIHRoYXQgdGhlIGBgX19tYWluX19gYCBtb2R1bGUgYmUKICAgICBpbXBvcnRhYmxlIGJ5IHRoZSBjaGlsZHJlbi4gVGhpcyBpcyBjb3ZlcmVkIGluIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1wcm9ncmFtbWluZ2AKICAgICBob3dldmVyIGl0IGlzIHdvcnRoIHBvaW50aW5nIG91dCBoZXJlLiBUaGlzIG1lYW5zIHRoYXQgc29tZSBleGFtcGxlcywgc3VjaAotICAgIGFzIHRoZSA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5Qb29sYCBleGFtcGxlcyB3aWxsIG5vdCB3b3JrIGluIHRoZQorICAgIGFzIHRoZSA6Y2xhc3M6YG11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2xgIGV4YW1wbGVzIHdpbGwgbm90IHdvcmsgaW4gdGhlCiAgICAgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuIEZvciBleGFtcGxlOjoKIAogICAgICAgICA+Pj4gZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKQEAgLTEyMSw5ICsxMjEsNyBAQAogICAgICAgICAgIHByaW50KHEuZ2V0KCkpICAgICMgcHJpbnRzICJbNDIsIE5vbmUsICdoZWxsbyddIgogICAgICAgICAgIHAuam9pbigpCiAKLSAgIFF1ZXVlcyBhcmUgdGhyZWFkIGFuZCBwcm9jZXNzIHNhZmUsIGJ1dCBub3RlIHRoYXQgdGhleSBtdXN0IG5ldmVyCi0gICBiZSBpbnN0YW50aWF0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBpbXBvcnRpbmcgYSBtb2R1bGU6IHRoaXMgY2FuIGxlYWQKLSAgIHRvIGEgZGVhZGxvY2shICAoc2VlIDpyZWY6YHRocmVhZGVkLWltcG9ydHNgKQorICAgUXVldWVzIGFyZSB0aHJlYWQgYW5kIHByb2Nlc3Mgc2FmZS4KIAogKipQaXBlcyoqCiAKQEAgLTIyOSwxMSArMjI3LDExIEBACiAgICBob2xkcyBQeXRob24gb2JqZWN0cyBhbmQgYWxsb3dzIG90aGVyIHByb2Nlc3NlcyB0byBtYW5pcHVsYXRlIHRoZW0gdXNpbmcKICAgIHByb3hpZXMuCiAKLSAgIEEgbWFuYWdlciByZXR1cm5lZCBieSA6ZnVuYzpgTWFuYWdlcmAgd2lsbCBzdXBwb3J0IHR5cGVzIDpjbGFzczpgbGlzdGAsCi0gICA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YE5hbWVzcGFjZWAsIDpjbGFzczpgTG9ja2AsIDpjbGFzczpgUkxvY2tgLAotICAgOmNsYXNzOmBTZW1hcGhvcmVgLCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgLCA6Y2xhc3M6YENvbmRpdGlvbmAsCi0gICA6Y2xhc3M6YEV2ZW50YCwgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgVmFsdWVgIGFuZCA6Y2xhc3M6YEFycmF5YC4gIEZvcgotICAgZXhhbXBsZSwgOjoKKyAgIEEgbWFuYWdlciByZXR1cm5lZCBieSA6ZnVuYzpgTWFuYWdlcmAgd2lsbCBzdXBwb3J0IHR5cGVzCisgICA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YE5hbWVzcGFjZWAsIDpjbGFzczpgTG9ja2AsCisgICA6Y2xhc3M6YFJMb2NrYCwgOmNsYXNzOmBTZW1hcGhvcmVgLCA6Y2xhc3M6YEJvdW5kZWRTZW1hcGhvcmVgLAorICAgOmNsYXNzOmBDb25kaXRpb25gLCA6Y2xhc3M6YEV2ZW50YCwgOmNsYXNzOmBCYXJyaWVyYCwKKyAgIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFZhbHVlYCBhbmQgOmNsYXNzOmBBcnJheWAuICBGb3IgZXhhbXBsZSwgOjoKIAogICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MsIE1hbmFnZXIKIApAQCAtMjQ0LDE3ICsyNDIsMTYgQEAKICAgICAgICAgICBsLnJldmVyc2UoKQogCiAgICAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKCkKKyAgICAgICAgICB3aXRoIE1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICAgICBkID0gbWFuYWdlci5kaWN0KCkKKyAgICAgICAgICAgICAgbCA9IG1hbmFnZXIubGlzdChyYW5nZSgxMCkpCiAKLSAgICAgICAgICBkID0gbWFuYWdlci5kaWN0KCkKLSAgICAgICAgICBsID0gbWFuYWdlci5saXN0KHJhbmdlKDEwKSkKKyAgICAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWYsIGFyZ3M9KGQsIGwpKQorICAgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgICAgcC5qb2luKCkKIAotICAgICAgICAgIHAgPSBQcm9jZXNzKHRhcmdldD1mLCBhcmdzPShkLCBsKSkKLSAgICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgICBwLmpvaW4oKQotCi0gICAgICAgICAgcHJpbnQoZCkKLSAgICAgICAgICBwcmludChsKQorICAgICAgICAgICAgICBwcmludChkKQorICAgICAgICAgICAgICBwcmludChsKQogCiAgICB3aWxsIHByaW50IDo6CiAKQEAgLTI4MiwxMCArMjc5LDEwIEBACiAgICAgICAgcmV0dXJuIHgqeAogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICAgIHBvb2wgPSBQb29sKHByb2Nlc3Nlcz00KSAgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCBbMTBdKSAgICAgIyBldmFsdWF0ZSAiZigxMCkiIGFzeW5jaHJvbm91c2x5Ci0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjEwMCIgdW5sZXNzIHlvdXIgY29tcHV0ZXIgaXMgKnZlcnkqIHNsb3cKLSAgICAgICBwcmludChwb29sLm1hcChmLCByYW5nZSgxMCkpKSAgICAgICAgICAjIHByaW50cyAiWzAsIDEsIDQsLi4uLCA4MV0iCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sICAgICAgICAgIyBzdGFydCA0IHdvcmtlciBwcm9jZXNzZXMKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCBbMTBdKSAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdworICAgICAgICAgICBwcmludChwb29sLm1hcChmLCByYW5nZSgxMCkpKSAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAogCiBSZWZlcmVuY2UKQEAgLTI5OCw3ICsyOTUsOCBAQAogOmNsYXNzOmBQcm9jZXNzYCBhbmQgZXhjZXB0aW9ucwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCi0uLiBjbGFzczo6IFByb2Nlc3MoZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9KQorLi4gY2xhc3M6OiBQcm9jZXNzKGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwgXAorICAgICAgICAgICAgICAgICAgICosIGRhZW1vbj1Ob25lKQogCiAgICBQcm9jZXNzIG9iamVjdHMgcmVwcmVzZW50IGFjdGl2aXR5IHRoYXQgaXMgcnVuIGluIGEgc2VwYXJhdGUgcHJvY2Vzcy4gVGhlCiAgICA6Y2xhc3M6YFByb2Nlc3NgIGNsYXNzIGhhcyBlcXVpdmFsZW50cyBvZiBhbGwgdGhlIG1ldGhvZHMgb2YKQEAgLTMwOCwxOCArMzA2LDIyIEBACiAgICBzaG91bGQgYWx3YXlzIGJlIGBgTm9uZWBgOyBpdCBleGlzdHMgc29sZWx5IGZvciBjb21wYXRpYmlsaXR5IHdpdGgKICAgIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAuICAqdGFyZ2V0KiBpcyB0aGUgY2FsbGFibGUgb2JqZWN0IHRvIGJlIGludm9rZWQgYnkKICAgIHRoZSA6bWV0aDpgcnVuKClgIG1ldGhvZC4gIEl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCBtZWFuaW5nIG5vdGhpbmcgaXMKLSAgIGNhbGxlZC4gKm5hbWUqIGlzIHRoZSBwcm9jZXNzIG5hbWUuICBCeSBkZWZhdWx0LCBhIHVuaXF1ZSBuYW1lIGlzIGNvbnN0cnVjdGVkCi0gICBvZiB0aGUgZm9ybSAnUHJvY2Vzcy1OXCA6c3ViOmAxYDpOXCA6c3ViOmAyYDouLi46TlwgOnN1Yjpga2AnIHdoZXJlIE5cCi0gICA6c3ViOmAxYCxOXCA6c3ViOmAyYCwuLi4sTlwgOnN1Yjpga2AgaXMgYSBzZXF1ZW5jZSBvZiBpbnRlZ2VycyB3aG9zZSBsZW5ndGgKLSAgIGlzIGRldGVybWluZWQgYnkgdGhlICpnZW5lcmF0aW9uKiBvZiB0aGUgcHJvY2Vzcy4gICphcmdzKiBpcyB0aGUgYXJndW1lbnQKLSAgIHR1cGxlIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgb2Yga2V5d29yZAotICAgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0bwotICAgKnRhcmdldCouCisgICBjYWxsZWQuICpuYW1lKiBpcyB0aGUgcHJvY2VzcyBuYW1lIChzZWUgOmF0dHI6YG5hbWVgIGZvciBtb3JlIGRldGFpbHMpLgorICAgKmFyZ3MqIGlzIHRoZSBhcmd1bWVudCB0dXBsZSBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgKmt3YXJncyogaXMgYQorICAgZGljdGlvbmFyeSBvZiBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHRhcmdldCBpbnZvY2F0aW9uLiAgSWYgcHJvdmlkZWQsCisgICB0aGUga2V5d29yZC1vbmx5ICpkYWVtb24qIGFyZ3VtZW50IHNldHMgdGhlIHByb2Nlc3MgOmF0dHI6YGRhZW1vbmAgZmxhZworICAgdG8gYGBUcnVlYGAgb3IgYGBGYWxzZWBgLiAgSWYgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdGhpcyBmbGFnIHdpbGwgYmUKKyAgIGluaGVyaXRlZCBmcm9tIHRoZSBjcmVhdGluZyBwcm9jZXNzLgorCisgICBCeSBkZWZhdWx0LCBubyBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byAqdGFyZ2V0Ki4KIAogICAgSWYgYSBzdWJjbGFzcyBvdmVycmlkZXMgdGhlIGNvbnN0cnVjdG9yLCBpdCBtdXN0IG1ha2Ugc3VyZSBpdCBpbnZva2VzIHRoZQogICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoOm1ldGg6YFByb2Nlc3MuX19pbml0X19gKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZQogICAgdG8gdGhlIHByb2Nlc3MuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCB0aGUgKmRhZW1vbiogYXJndW1lbnQuCisKICAgIC4uIG1ldGhvZDo6IHJ1bigpCiAKICAgICAgIE1ldGhvZCByZXByZXNlbnRpbmcgdGhlIHByb2Nlc3MncyBhY3Rpdml0eS4KQEAgLTMzOCwxMCArMzQwLDkgQEAKIAogICAgLi4gbWV0aG9kOjogam9pbihbdGltZW91dF0pCiAKLSAgICAgIEJsb2NrIHRoZSBjYWxsaW5nIHRocmVhZCB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzCi0gICAgICBjYWxsZWQgdGVybWluYXRlcyBvciB1bnRpbCB0aGUgb3B0aW9uYWwgdGltZW91dCBvY2N1cnMuCi0KLSAgICAgIElmICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIHRoZXJlIGlzIG5vIHRpbWVvdXQuCisgICAgICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVvdXQqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoZSBtZXRob2QKKyAgICAgIGJsb2NrcyB1bnRpbCB0aGUgcHJvY2VzcyB3aG9zZSA6bWV0aDpgam9pbmAgbWV0aG9kIGlzIGNhbGxlZCB0ZXJtaW5hdGVzLgorICAgICAgSWYgKnRpbWVvdXQqIGlzIGEgcG9zaXRpdmUgbnVtYmVyLCBpdCBibG9ja3MgYXQgbW9zdCAqdGltZW91dCogc2Vjb25kcy4KIAogICAgICAgQSBwcm9jZXNzIGNhbiBiZSBqb2luZWQgbWFueSB0aW1lcy4KIApAQCAtMzUwLDExICszNTEsMTQgQEAKIAogICAgLi4gYXR0cmlidXRlOjogbmFtZQogCi0gICAgICBUaGUgcHJvY2VzcydzIG5hbWUuCisgICAgICBUaGUgcHJvY2VzcydzIG5hbWUuICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcworICAgICAgb25seS4gIEl0IGhhcyBubyBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lCisgICAgICBuYW1lLgogCi0gICAgICBUaGUgbmFtZSBpcyBhIHN0cmluZyB1c2VkIGZvciBpZGVudGlmaWNhdGlvbiBwdXJwb3NlcyBvbmx5LiAgSXQgaGFzIG5vCi0gICAgICBzZW1hbnRpY3MuICBNdWx0aXBsZSBwcm9jZXNzZXMgbWF5IGJlIGdpdmVuIHRoZSBzYW1lIG5hbWUuICBUaGUgaW5pdGlhbAotICAgICAgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLgorICAgICAgVGhlIGluaXRpYWwgbmFtZSBpcyBzZXQgYnkgdGhlIGNvbnN0cnVjdG9yLiAgSWYgbm8gZXhwbGljaXQgbmFtZSBpcworICAgICAgcHJvdmlkZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBhIG5hbWUgb2YgdGhlIGZvcm0KKyAgICAgICdQcm9jZXNzLU5cIDpzdWI6YDFgOk5cIDpzdWI6YDJgOi4uLjpOXCA6c3ViOmBrYCcgaXMgY29uc3RydWN0ZWQsIHdoZXJlCisgICAgICBlYWNoIE5cIDpzdWI6YGtgIGlzIHRoZSBOLXRoIGNoaWxkIG9mIGl0cyBwYXJlbnQuCiAKICAgIC4uIG1ldGhvZDo6IGlzX2FsaXZlCiAKQEAgLTQwNiw2ICs0MTAsMjEgQEAKIAogICAgICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCisgICAuLiBhdHRyaWJ1dGU6OiBzZW50aW5lbAorCisgICAgICBBIG51bWVyaWMgaGFuZGxlIG9mIGEgc3lzdGVtIG9iamVjdCB3aGljaCB3aWxsIGJlY29tZSAicmVhZHkiIHdoZW4KKyAgICAgIHRoZSBwcm9jZXNzIGVuZHMuCisKKyAgICAgIFlvdSBjYW4gdXNlIHRoaXMgdmFsdWUgaWYgeW91IHdhbnQgdG8gd2FpdCBvbiBzZXZlcmFsIGV2ZW50cyBhdAorICAgICAgb25jZSB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuICBPdGhlcndpc2UKKyAgICAgIGNhbGxpbmcgOm1ldGg6YGpvaW4oKWAgaXMgc2ltcGxlci4KKworICAgICAgT24gV2luZG93cywgdGhpcyBpcyBhbiBPUyBoYW5kbGUgdXNhYmxlIHdpdGggdGhlIGBgV2FpdEZvclNpbmdsZU9iamVjdGBgCisgICAgICBhbmQgYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzYGAgZmFtaWx5IG9mIEFQSSBjYWxscy4gIE9uIFVuaXgsIHRoaXMgaXMKKyAgICAgIGEgZmlsZSBkZXNjcmlwdG9yIHVzYWJsZSB3aXRoIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgc2VsZWN0YCBtb2R1bGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiB0ZXJtaW5hdGUoKQogCiAgICAgICBUZXJtaW5hdGUgdGhlIHByb2Nlc3MuICBPbiBVbml4IHRoaXMgaXMgZG9uZSB1c2luZyB0aGUgYGBTSUdURVJNYGAgc2lnbmFsOwpAQCAtNDQ1LDYgKzQ2NCw5IEBACiAgICAgICAgPj4+IHAuZXhpdGNvZGUgPT0gLXNpZ25hbC5TSUdURVJNCiAgICAgICAgVHJ1ZQogCisuLiBleGNlcHRpb246OiBQcm9jZXNzRXJyb3IKKworICAgVGhlIGJhc2UgY2xhc3Mgb2YgYWxsIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AgZXhjZXB0aW9ucy4KIAogLi4gZXhjZXB0aW9uOjogQnVmZmVyVG9vU2hvcnQKIApAQCAtNDU0LDYgKzQ3NiwxMyBAQAogICAgSWYgYGBlYGAgaXMgYW4gaW5zdGFuY2Ugb2YgOmV4YzpgQnVmZmVyVG9vU2hvcnRgIHRoZW4gYGBlLmFyZ3NbMF1gYCB3aWxsIGdpdmUKICAgIHRoZSBtZXNzYWdlIGFzIGEgYnl0ZSBzdHJpbmcuCiAKKy4uIGV4Y2VwdGlvbjo6IEF1dGhlbnRpY2F0aW9uRXJyb3IKKworICAgUmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFcnJvcgorCisgICBSYWlzZWQgYnkgbWV0aG9kcyB3aXRoIGEgdGltZW91dCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuCiAKIFBpcGVzIGFuZCBRdWV1ZXMKIH5+fn5+fn5+fn5+fn5+fn4KQEAgLTQ2NSw3ICs0OTQsNyBAQAogRm9yIHBhc3NpbmcgbWVzc2FnZXMgb25lIGNhbiB1c2UgOmZ1bmM6YFBpcGVgIChmb3IgYSBjb25uZWN0aW9uIGJldHdlZW4gdHdvCiBwcm9jZXNzZXMpIG9yIGEgcXVldWUgKHdoaWNoIGFsbG93cyBtdWx0aXBsZSBwcm9kdWNlcnMgYW5kIGNvbnN1bWVycykuCiAKLVRoZSA6Y2xhc3M6YFF1ZXVlYCwgOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcucXVldWVzLlNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCitUaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzIGFyZSBtdWx0aS1wcm9kdWNlciwKIG11bHRpLWNvbnN1bWVyIEZJRk8gcXVldWVzIG1vZGVsbGVkIG9uIHRoZSA6Y2xhc3M6YHF1ZXVlLlF1ZXVlYCBjbGFzcyBpbiB0aGUKIHN0YW5kYXJkIGxpYnJhcnkuICBUaGV5IGRpZmZlciBpbiB0aGF0IDpjbGFzczpgUXVldWVgIGxhY2tzIHRoZQogOm1ldGg6YH5xdWV1ZS5RdWV1ZS50YXNrX2RvbmVgIGFuZCA6bWV0aDpgfnF1ZXVlLlF1ZXVlLmpvaW5gIG1ldGhvZHMgaW50cm9kdWNlZApAQCAtNjExLDcgKzY0MCw3IEBACiAgICAgICBleGl0cyAtLSBzZWUgOm1ldGg6YGpvaW5fdGhyZWFkYC4KIAogCi0uLiBjbGFzczo6IG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMuU2ltcGxlUXVldWUoKQorLi4gY2xhc3M6OiBTaW1wbGVRdWV1ZSgpCiAKICAgIEl0IGlzIGEgc2ltcGxpZmllZCA6Y2xhc3M6YFF1ZXVlYCB0eXBlLCB2ZXJ5IGNsb3NlIHRvIGEgbG9ja2VkIDpjbGFzczpgUGlwZWAuCiAKQEAgLTYzNSw4ICs2NjQsOCBAQAogCiAgICAuLiBtZXRob2Q6OiB0YXNrX2RvbmUoKQogCi0gICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZSBjb25zdW1lcgotICAgICAgdGhyZWFkcy4gIEZvciBlYWNoIDptZXRoOmB+UXVldWUuZ2V0YCB1c2VkIHRvIGZldGNoIGEgdGFzaywgYSBzdWJzZXF1ZW50CisgICAgICBJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4gVXNlZCBieSBxdWV1ZQorICAgICAgY29uc3VtZXJzLiAgRm9yIGVhY2ggOm1ldGg6YH5RdWV1ZS5nZXRgIHVzZWQgdG8gZmV0Y2ggYSB0YXNrLCBhIHN1YnNlcXVlbnQKICAgICAgIGNhbGwgdG8gOm1ldGg6YHRhc2tfZG9uZWAgdGVsbHMgdGhlIHF1ZXVlIHRoYXQgdGhlIHByb2Nlc3Npbmcgb24gdGhlIHRhc2sKICAgICAgIGlzIGNvbXBsZXRlLgogCkBAIC02NTMsNyArNjgyLDcgQEAKICAgICAgIEJsb2NrIHVudGlsIGFsbCBpdGVtcyBpbiB0aGUgcXVldWUgaGF2ZSBiZWVuIGdvdHRlbiBhbmQgcHJvY2Vzc2VkLgogCiAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCi0gICAgICBxdWV1ZS4gIFRoZSBjb3VudCBnb2VzIGRvd24gd2hlbmV2ZXIgYSBjb25zdW1lciB0aHJlYWQgY2FsbHMKKyAgICAgIHF1ZXVlLiAgVGhlIGNvdW50IGdvZXMgZG93biB3aGVuZXZlciBhIGNvbnN1bWVyIGNhbGxzCiAgICAgICA6bWV0aDpgdGFza19kb25lYCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uCiAgICAgICBpdCBpcyBjb21wbGV0ZS4gIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywKICAgICAgIDptZXRoOmB+UXVldWUuam9pbmAgdW5ibG9ja3MuCkBAIC03NjcsNiArNzk2LDkgQEAKICAgICAgICp0aW1lb3V0KiBpcyBhIG51bWJlciB0aGVuIHRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHRpbWUgaW4gc2Vjb25kcyB0bwogICAgICAgYmxvY2suICBJZiAqdGltZW91dCogaXMgYGBOb25lYGAgdGhlbiBhbiBpbmZpbml0ZSB0aW1lb3V0IGlzIHVzZWQuCiAKKyAgICAgIE5vdGUgdGhhdCBtdWx0aXBsZSBjb25uZWN0aW9uIG9iamVjdHMgbWF5IGJlIHBvbGxlZCBhdCBvbmNlIGJ5CisgICAgICB1c2luZyA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAuCisKICAgIC4uIG1ldGhvZDo6IHNlbmRfYnl0ZXMoYnVmZmVyWywgb2Zmc2V0Wywgc2l6ZV1dKQogCiAgICAgICBTZW5kIGJ5dGUgZGF0YSBmcm9tIGFuIG9iamVjdCBzdXBwb3J0aW5nIHRoZSBidWZmZXIgaW50ZXJmYWNlIGFzIGEKQEAgLTc4NSw5ICs4MTcsMTQgQEAKICAgICAgIHRvIHJlY2VpdmUgYW5kIHRoZSBvdGhlciBlbmQgaGFzIGNsb3NlZC4KIAogICAgICAgSWYgKm1heGxlbmd0aCogaXMgc3BlY2lmaWVkIGFuZCB0aGUgbWVzc2FnZSBpcyBsb25nZXIgdGhhbiAqbWF4bGVuZ3RoKgotICAgICAgdGhlbiA6ZXhjOmBJT0Vycm9yYCBpcyByYWlzZWQgYW5kIHRoZSBjb25uZWN0aW9uIHdpbGwgbm8gbG9uZ2VyIGJlCisgICAgICB0aGVuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIGNvbm5lY3Rpb24gd2lsbCBubyBsb25nZXIgYmUKICAgICAgIHJlYWRhYmxlLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgSU9FcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKKwogICAgLi4gbWV0aG9kOjogcmVjdl9ieXRlc19pbnRvKGJ1ZmZlclssIG9mZnNldF0pCiAKICAgICAgIFJlYWQgaW50byAqYnVmZmVyKiBhIGNvbXBsZXRlIG1lc3NhZ2Ugb2YgYnl0ZSBkYXRhIHNlbnQgZnJvbSB0aGUgb3RoZXIgZW5kCkBAIC04MDUsNiArODQyLDE0IEBACiAgICAgICByYWlzZWQgYW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlIGlzIGF2YWlsYWJsZSBhcyBgYGUuYXJnc1swXWBgIHdoZXJlIGBgZWBgCiAgICAgICBpcyB0aGUgZXhjZXB0aW9uIGluc3RhbmNlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29ubmVjdGlvbiBvYmplY3RzIHRoZW1zZWx2ZXMgY2FuIG5vdyBiZSB0cmFuc2ZlcnJlZCBiZXR3ZWVuIHByb2Nlc3NlcworICAgICAgdXNpbmcgOm1ldGg6YENvbm5lY3Rpb24uc2VuZGAgYW5kIDptZXRoOmBDb25uZWN0aW9uLnJlY3ZgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIENvbm5lY3Rpb24gb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBjb25uZWN0aW9uIG9iamVjdCwgYW5kIDptZXRoOmBfX2V4aXRfX2AgY2FsbHMgOm1ldGg6YGNsb3NlYC4KIAogRm9yIGV4YW1wbGU6CiAKQEAgLTg1Niw2ICs5MDEsMTIgQEAKIE5vdGUgdGhhdCBvbmUgY2FuIGFsc28gY3JlYXRlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzIGJ5IHVzaW5nIGEgbWFuYWdlcgogb2JqZWN0IC0tIHNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctbWFuYWdlcnNgLgogCisuLiBjbGFzczo6IEJhcnJpZXIocGFydGllc1ssIGFjdGlvblssIHRpbWVvdXRdXSkKKworICAgQSBiYXJyaWVyIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC4uIGNsYXNzOjogQm91bmRlZFNlbWFwaG9yZShbdmFsdWVdKQogCiAgICBBIGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdDogYSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYC4KQEAgLTg2NSwyMCArOTE2LDE3IEBACiAKIC4uIGNsYXNzOjogQ29uZGl0aW9uKFtsb2NrXSkKIAotICAgQSBjb25kaXRpb24gdmFyaWFibGU6IGEgY2xvbmUgb2YgOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYC4KKyAgIEEgY29uZGl0aW9uIHZhcmlhYmxlOiBhbiBhbGlhcyBmb3IgOmNsYXNzOmB0aHJlYWRpbmcuQ29uZGl0aW9uYC4KIAogICAgSWYgKmxvY2sqIGlzIHNwZWNpZmllZCB0aGVuIGl0IHNob3VsZCBiZSBhIDpjbGFzczpgTG9ja2Agb3IgOmNsYXNzOmBSTG9ja2AKICAgIG9iamVjdCBmcm9tIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2AuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAuLiBjbGFzczo6IEV2ZW50KCkKIAogICAgQSBjbG9uZSBvZiA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAuCi0gICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgaW50ZXJuYWwgc2VtYXBob3JlIG9uIGV4aXQsIHNvIGl0Ci0gICB3aWxsIGFsd2F5cyByZXR1cm4gYGBUcnVlYGAgZXhjZXB0IGlmIGEgdGltZW91dCBpcyBnaXZlbiBhbmQgdGhlIG9wZXJhdGlvbgotICAgdGltZXMgb3V0LgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgUHJldmlvdXNseSwgdGhlIG1ldGhvZCBhbHdheXMgcmV0dXJuZWQgYGBOb25lYGAuCiAKIC4uIGNsYXNzOjogTG9jaygpCiAKQEAgLTg5NCw2ICs5NDIsMTIgQEAKIAogLi4gbm90ZTo6CiAKKyAgIFRoZSA6bWV0aDpgYWNxdWlyZWAgYW5kIDptZXRoOmB3YWl0YCBtZXRob2RzIG9mIGVhY2ggb2YgdGhlc2UgdHlwZXMKKyAgIHRyZWF0IG5lZ2F0aXZlIHRpbWVvdXRzIGFzIHplcm8gdGltZW91dHMuICBUaGlzIGRpZmZlcnMgZnJvbQorICAgOm1vZDpgdGhyZWFkaW5nYCB3aGVyZSwgc2luY2UgdmVyc2lvbiAzLjIsIHRoZSBlcXVpdmFsZW50CisgICA6bWV0aDpgYWNxdWlyZWAgbWV0aG9kcyB0cmVhdCBuZWdhdGl2ZSB0aW1lb3V0cyBhcyBpbmZpbml0ZQorICAgdGltZW91dHMuCisKICAgIE9uIE1hYyBPUyBYLCBgYHNlbV90aW1lZHdhaXRgYCBpcyB1bnN1cHBvcnRlZCwgc28gY2FsbGluZyBgYGFjcXVpcmUoKWBgIHdpdGgKICAgIGEgdGltZW91dCB3aWxsIGVtdWxhdGUgdGhhdCBmdW5jdGlvbidzIGJlaGF2aW9yIHVzaW5nIGEgc2xlZXBpbmcgbG9vcC4KIApAQCAtOTE1LDEwICs5NjksMTEgQEAKIEl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBzaGFyZWQgb2JqZWN0cyB1c2luZyBzaGFyZWQgbWVtb3J5IHdoaWNoIGNhbiBiZQogaW5oZXJpdGVkIGJ5IGNoaWxkIHByb2Nlc3Nlcy4KIAotLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJnc1ssIGxvY2tdKQorLi4gZnVuY3Rpb246OiBWYWx1ZSh0eXBlY29kZV9vcl90eXBlLCAqYXJncywgbG9jaz1UcnVlKQogCiAgICBSZXR1cm4gYSA6bW9kOmBjdHlwZXNgIG9iamVjdCBhbGxvY2F0ZWQgZnJvbSBzaGFyZWQgbWVtb3J5LiAgQnkgZGVmYXVsdCB0aGUKLSAgIHJldHVybiB2YWx1ZSBpcyBhY3R1YWxseSBhIHN5bmNocm9uaXplZCB3cmFwcGVyIGZvciB0aGUgb2JqZWN0LgorICAgcmV0dXJuIHZhbHVlIGlzIGFjdHVhbGx5IGEgc3luY2hyb25pemVkIHdyYXBwZXIgZm9yIHRoZSBvYmplY3QuICBUaGUgb2JqZWN0CisgICBpdHNlbGYgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgKnZhbHVlKiBhdHRyaWJ1dGUgb2YgYSA6Y2xhc3M6YFZhbHVlYC4KIAogICAgKnR5cGVjb2RlX29yX3R5cGUqIGRldGVybWluZXMgdGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIG9iamVjdDogaXQgaXMgZWl0aGVyIGEKICAgIGN0eXBlcyB0eXBlIG9yIGEgb25lIGNoYXJhY3RlciB0eXBlY29kZSBvZiB0aGUga2luZCB1c2VkIGJ5IHRoZSA6bW9kOmBhcnJheWAKQEAgLTEwMDcsNyArMTA2Miw3IEBACiAgICBhdHRyaWJ1dGVzIHdoaWNoIGFsbG93IG9uZSB0byB1c2UgaXQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIHN0cmluZ3MgLS0gc2VlCiAgICBkb2N1bWVudGF0aW9uIGZvciA6bW9kOmBjdHlwZXNgLgogCi0uLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSkKIAogICAgVGhlIHNhbWUgYXMgOmZ1bmM6YFJhd0FycmF5YCBleGNlcHQgdGhhdCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mICpsb2NrKiBhCiAgICBwcm9jZXNzLXNhZmUgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgbWF5IGJlIHJldHVybmVkIGluc3RlYWQgb2YgYSByYXcgY3R5cGVzCkBAIC0xMDIyLDcgKzEwNzcsNyBAQAogCiAgICBOb3RlIHRoYXQgKmxvY2sqIGlzIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50LgogCi0uLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzWywgbG9ja10pCisuLiBmdW5jdGlvbjo6IFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpCiAKICAgIFRoZSBzYW1lIGFzIDpmdW5jOmBSYXdWYWx1ZWAgZXhjZXB0IHRoYXQgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiAqbG9jayogYQogICAgcHJvY2Vzcy1zYWZlIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIG1heSBiZSByZXR1cm5lZCBpbnN0ZWFkIG9mIGEgcmF3IGN0eXBlcwpAQCAtMTEyNCw4ICsxMTc5LDEwIEBACiB+fn5+fn5+fgogCiBNYW5hZ2VycyBwcm92aWRlIGEgd2F5IHRvIGNyZWF0ZSBkYXRhIHdoaWNoIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBkaWZmZXJlbnQKLXByb2Nlc3Nlcy4gQSBtYW5hZ2VyIG9iamVjdCBjb250cm9scyBhIHNlcnZlciBwcm9jZXNzIHdoaWNoIG1hbmFnZXMgKnNoYXJlZAotb2JqZWN0cyouICBPdGhlciBwcm9jZXNzZXMgY2FuIGFjY2VzcyB0aGUgc2hhcmVkIG9iamVjdHMgYnkgdXNpbmcgcHJveGllcy4KK3Byb2Nlc3NlcywgaW5jbHVkaW5nIHNoYXJpbmcgb3ZlciBhIG5ldHdvcmsgYmV0d2VlbiBwcm9jZXNzZXMgcnVubmluZyBvbgorZGlmZmVyZW50IG1hY2hpbmVzLiBBIG1hbmFnZXIgb2JqZWN0IGNvbnRyb2xzIGEgc2VydmVyIHByb2Nlc3Mgd2hpY2ggbWFuYWdlcworKnNoYXJlZCBvYmplY3RzKi4gIE90aGVyIHByb2Nlc3NlcyBjYW4gYWNjZXNzIHRoZSBzaGFyZWQgb2JqZWN0cyBieSB1c2luZworcHJveGllcy4KIAogLi4gZnVuY3Rpb246OiBtdWx0aXByb2Nlc3NpbmcuTWFuYWdlcigpCiAKQEAgLTExOTgsOSArMTI1NSwxMCBAQAogICAgICAgdHlwZSBvZiBzaGFyZWQgb2JqZWN0LiAgVGhpcyBtdXN0IGJlIGEgc3RyaW5nLgogCiAgICAgICAqY2FsbGFibGUqIGlzIGEgY2FsbGFibGUgdXNlZCBmb3IgY3JlYXRpbmcgb2JqZWN0cyBmb3IgdGhpcyB0eXBlCi0gICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY3JlYXRlZCB1c2luZyB0aGUKLSAgICAgIDptZXRoOmBmcm9tX2FkZHJlc3NgIGNsYXNzbWV0aG9kIG9yIGlmIHRoZSAqY3JlYXRlX21ldGhvZCogYXJndW1lbnQgaXMKLSAgICAgIGBgRmFsc2VgYCB0aGVuIHRoaXMgY2FuIGJlIGxlZnQgYXMgYGBOb25lYGAuCisgICAgICBpZGVudGlmaWVyLiAgSWYgYSBtYW5hZ2VyIGluc3RhbmNlIHdpbGwgYmUgY29ubmVjdGVkIHRvIHRoZQorICAgICAgc2VydmVyIHVzaW5nIHRoZSA6bWV0aDpgY29ubmVjdGAgbWV0aG9kLCBvciBpZiB0aGUKKyAgICAgICpjcmVhdGVfbWV0aG9kKiBhcmd1bWVudCBpcyBgYEZhbHNlYGAgdGhlbiB0aGlzIGNhbiBiZSBsZWZ0IGFzCisgICAgICBgYE5vbmVgYC4KIAogICAgICAgKnByb3h5dHlwZSogaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YEJhc2VQcm94eWAgd2hpY2ggaXMgdXNlZCB0byBjcmVhdGUKICAgICAgIHByb3hpZXMgZm9yIHNoYXJlZCBvYmplY3RzIHdpdGggdGhpcyAqdHlwZWlkKi4gIElmIGBgTm9uZWBgIHRoZW4gYSBwcm94eQpAQCAtMTIzMiw2ICsxMjkwLDE0IEBACiAKICAgICAgIFRoZSBhZGRyZXNzIHVzZWQgYnkgdGhlIG1hbmFnZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBNYW5hZ2VyIG9iamVjdHMgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHN0YXJ0cyB0aGUgc2VydmVyCisgICAgICBwcm9jZXNzIChpZiBpdCBoYXMgbm90IGFscmVhZHkgc3RhcnRlZCkgYW5kIHRoZW4gcmV0dXJucyB0aGUKKyAgICAgIG1hbmFnZXIgb2JqZWN0LiAgOm1ldGg6YF9fZXhpdF9fYCBjYWxscyA6bWV0aDpgc2h1dGRvd25gLgorCisgICAgICBJbiBwcmV2aW91cyB2ZXJzaW9ucyA6bWV0aDpgX19lbnRlcl9fYCBkaWQgbm90IHN0YXJ0IHRoZQorICAgICAgbWFuYWdlcidzIHNlcnZlciBwcm9jZXNzIGlmIGl0IHdhcyBub3QgYWxyZWFkeSBzdGFydGVkLgogCiAuLiBjbGFzczo6IFN5bmNNYW5hZ2VyCiAKQEAgLTEyNDEsNiArMTMwNywxMyBAQAogCiAgICBJdCBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgogCisgICAuLiBtZXRob2Q6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCisKKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5CYXJyaWVyYCBvYmplY3QgYW5kIHJldHVybiBhCisgICAgICBwcm94eSBmb3IgaXQuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAgICAuLiBtZXRob2Q6OiBCb3VuZGVkU2VtYXBob3JlKFt2YWx1ZV0pCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlYCBvYmplY3QgYW5kIHJldHVybiBhCkBAIC0xMjU0LDYgKzEzMjcsOSBAQAogICAgICAgSWYgKmxvY2sqIGlzIHN1cHBsaWVkIHRoZW4gaXQgc2hvdWxkIGJlIGEgcHJveHkgZm9yIGEKICAgICAgIDpjbGFzczpgdGhyZWFkaW5nLkxvY2tgIG9yIDpjbGFzczpgdGhyZWFkaW5nLlJMb2NrYCBvYmplY3QuCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBUaGUgOm1ldGg6YHdhaXRfZm9yYCBtZXRob2Qgd2FzIGFkZGVkLgorCiAgICAuLiBtZXRob2Q6OiBFdmVudCgpCiAKICAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YHRocmVhZGluZy5FdmVudGAgb2JqZWN0IGFuZCByZXR1cm4gYSBwcm94eSBmb3IgaXQuCkBAIC0xMzU5LDExICsxNDM1LDEwIEBACiAgICBNeU1hbmFnZXIucmVnaXN0ZXIoJ01hdGhzJywgTWF0aHNDbGFzcykKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBtYW5hZ2VyID0gTXlNYW5hZ2VyKCkKLSAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKLSAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQotICAgICAgIHByaW50KG1hdGhzLmFkZCg0LCAzKSkgICAgICAgICAjIHByaW50cyA3Ci0gICAgICAgcHJpbnQobWF0aHMubXVsKDcsIDgpKSAgICAgICAgICMgcHJpbnRzIDU2CisgICAgICAgd2l0aCBNeU1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICBtYXRocyA9IG1hbmFnZXIuTWF0aHMoKQorICAgICAgICAgICBwcmludChtYXRocy5hZGQoNCwgMykpICAgICAgICAgIyBwcmludHMgNworICAgICAgICAgICBwcmludChtYXRocy5tdWwoNywgOCkpICAgICAgICAgIyBwcmludHMgNTYKIAogCiBVc2luZyBhIHJlbW90ZSBtYW5hZ2VyCkBAIC0xNTYzLDcgKzE2MzgsNyBAQAogT25lIGNhbiBjcmVhdGUgYSBwb29sIG9mIHByb2Nlc3NlcyB3aGljaCB3aWxsIGNhcnJ5IG91dCB0YXNrcyBzdWJtaXR0ZWQgdG8gaXQKIHdpdGggdGhlIDpjbGFzczpgUG9vbGAgY2xhc3MuCiAKLS4uIGNsYXNzOjogbXVsdGlwcm9jZXNzaW5nLlBvb2woW3Byb2Nlc3Nlc1ssIGluaXRpYWxpemVyWywgaW5pdGFyZ3NbLCBtYXh0YXNrc3BlcmNoaWxkXV1dXSkKKy4uIGNsYXNzOjogUG9vbChbcHJvY2Vzc2VzWywgaW5pdGlhbGl6ZXJbLCBpbml0YXJnc1ssIG1heHRhc2tzcGVyY2hpbGRdXV1dKQogCiAgICBBIHByb2Nlc3MgcG9vbCBvYmplY3Qgd2hpY2ggY29udHJvbHMgYSBwb29sIG9mIHdvcmtlciBwcm9jZXNzZXMgdG8gd2hpY2ggam9icwogICAgY2FuIGJlIHN1Ym1pdHRlZC4gIEl0IHN1cHBvcnRzIGFzeW5jaHJvbm91cyByZXN1bHRzIHdpdGggdGltZW91dHMgYW5kCkBAIC0xNjU4LDYgKzE3MzMsMjQgQEAKICAgICAgIHJldHVybmVkIGl0ZXJhdG9yIHNob3VsZCBiZSBjb25zaWRlcmVkIGFyYml0cmFyeS4gIChPbmx5IHdoZW4gdGhlcmUgaXMKICAgICAgIG9ubHkgb25lIHdvcmtlciBwcm9jZXNzIGlzIHRoZSBvcmRlciBndWFyYW50ZWVkIHRvIGJlICJjb3JyZWN0Ii4pCiAKKyAgIC4uIG1ldGhvZDo6IHN0YXJtYXAoZnVuYywgaXRlcmFibGVbLCBjaHVua3NpemVdKQorCisgICAgICBMaWtlIDptZXRoOmBtYXBgIGV4Y2VwdCB0aGF0IHRoZSBlbGVtZW50cyBvZiB0aGUgYGl0ZXJhYmxlYCBhcmUgZXhwZWN0ZWQKKyAgICAgIHRvIGJlIGl0ZXJhYmxlcyB0aGF0IGFyZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuCisKKyAgICAgIEhlbmNlIGFuIGBpdGVyYWJsZWAgb2YgYFsoMSwyKSwgKDMsIDQpXWAgcmVzdWx0cyBpbiBgW2Z1bmMoMSwyKSwKKyAgICAgIGZ1bmMoMyw0KV1gLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbWV0aG9kOjogc3Rhcm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZVssIGNodW5rc2l6ZVssIGNhbGxiYWNrWywgZXJyb3JfYmFja11dXSkKKworICAgICAgQSBjb21iaW5hdGlvbiBvZiA6bWV0aDpgc3Rhcm1hcGAgYW5kIDptZXRoOmBtYXBfYXN5bmNgIHRoYXQgaXRlcmF0ZXMgb3ZlcgorICAgICAgYGl0ZXJhYmxlYCBvZiBpdGVyYWJsZXMgYW5kIGNhbGxzIGBmdW5jYCB3aXRoIHRoZSBpdGVyYWJsZXMgdW5wYWNrZWQuCisgICAgICBSZXR1cm5zIGEgcmVzdWx0IG9iamVjdC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKIAogICAgICAgUHJldmVudHMgYW55IG1vcmUgdGFza3MgZnJvbSBiZWluZyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wuICBPbmNlIGFsbCB0aGUKQEAgLTE2NzQsNiArMTc2NywxMSBAQAogICAgICAgV2FpdCBmb3IgdGhlIHdvcmtlciBwcm9jZXNzZXMgdG8gZXhpdC4gIE9uZSBtdXN0IGNhbGwgOm1ldGg6YGNsb3NlYCBvcgogICAgICAgOm1ldGg6YHRlcm1pbmF0ZWAgYmVmb3JlIHVzaW5nIDptZXRoOmBqb2luYC4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBQb29sIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCAtLSBzZWUKKyAgICAgIDpyZWY6YHR5cGVjb250ZXh0bWFuYWdlcmAuICA6bWV0aDpgX19lbnRlcl9fYCByZXR1cm5zIHRoZSBwb29sCisgICAgICBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmB0ZXJtaW5hdGVgLgorCiAKIC4uIGNsYXNzOjogQXN5bmNSZXN1bHQKIApAQCAtMTcwOCwyMSArMTgwNiwyMCBAQAogICAgICAgIHJldHVybiB4KngKIAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgICBwb29sID0gUG9vbChwcm9jZXNzZXM9NCkgICAgICAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgd2l0aCBQb29sKHByb2Nlc3Nlcz00KSBhcyBwb29sOiAgICAgICAgICMgc3RhcnQgNCB3b3JrZXIgcHJvY2Vzc2VzCisgICAgICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmMoZiwgKDEwLCkpICMgZXZhbHVhdGUgImYoMTApIiBhc3luY2hyb25vdXNseQorICAgICAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAjIHByaW50cyAiMTAwIiB1bmxlc3MgeW91ciBjb21wdXRlciBpcyAqdmVyeSogc2xvdwogCi0gICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyhmLCAoMTAsKSkgICAjIGV2YWx1YXRlICJmKDEwKSIgYXN5bmNocm9ub3VzbHkKLSAgICAgICBwcmludChyZXN1bHQuZ2V0KHRpbWVvdXQ9MSkpICAgICAgICAgICMgcHJpbnRzICIxMDAiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CisgICAgICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICMgcHJpbnRzICJbMCwgMSwgNCwuLi4sIDgxXSIKIAotICAgICAgIHByaW50KHBvb2wubWFwKGYsIHJhbmdlKDEwKSkpICAgICAgICAgIyBwcmludHMgIlswLCAxLCA0LC4uLiwgODFdIgorICAgICAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCisgICAgICAgICAgIHByaW50KG5leHQoaXQpKSAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIwIgorICAgICAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMSIKKyAgICAgICAgICAgcHJpbnQoaXQubmV4dCh0aW1lb3V0PTEpKSAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93CiAKLSAgICAgICBpdCA9IHBvb2wuaW1hcChmLCByYW5nZSgxMCkpCi0gICAgICAgcHJpbnQobmV4dChpdCkpICAgICAgICAgICAgICAgICAgICAgICAjIHByaW50cyAiMCIKLSAgICAgICBwcmludChuZXh0KGl0KSkgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbnRzICIxIgotICAgICAgIHByaW50KGl0Lm5leHQodGltZW91dD0xKSkgICAgICAgICAgICAgIyBwcmludHMgIjQiIHVubGVzcyB5b3VyIGNvbXB1dGVyIGlzICp2ZXJ5KiBzbG93Ci0KLSAgICAgICBpbXBvcnQgdGltZQotICAgICAgIHJlc3VsdCA9IHBvb2wuYXBwbHlfYXN5bmModGltZS5zbGVlcCwgKDEwLCkpCi0gICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgICAjIHJhaXNlcyBUaW1lb3V0RXJyb3IKKyAgICAgICAgICAgaW1wb3J0IHRpbWUKKyAgICAgICAgICAgcmVzdWx0ID0gcG9vbC5hcHBseV9hc3luYyh0aW1lLnNsZWVwLCAoMTAsKSkKKyAgICAgICAgICAgcHJpbnQocmVzdWx0LmdldCh0aW1lb3V0PTEpKSAgICAgICAgIyByYWlzZXMgVGltZW91dEVycm9yCiAKIAogLi4gX211bHRpcHJvY2Vzc2luZy1saXN0ZW5lcnMtY2xpZW50czoKQEAgLTE3MzgsOCArMTgzNSw5IEBACiAKIEhvd2V2ZXIsIHRoZSA6bW9kOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbmAgbW9kdWxlIGFsbG93cyBzb21lIGV4dHJhCiBmbGV4aWJpbGl0eS4gIEl0IGJhc2ljYWxseSBnaXZlcyBhIGhpZ2ggbGV2ZWwgbWVzc2FnZSBvcmllbnRlZCBBUEkgZm9yIGRlYWxpbmcKLXdpdGggc29ja2V0cyBvciBXaW5kb3dzIG5hbWVkIHBpcGVzLCBhbmQgYWxzbyBoYXMgc3VwcG9ydCBmb3IgKmRpZ2VzdAotYXV0aGVudGljYXRpb24qIHVzaW5nIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUuCit3aXRoIHNvY2tldHMgb3IgV2luZG93cyBuYW1lZCBwaXBlcy4gIEl0IGFsc28gaGFzIHN1cHBvcnQgZm9yICpkaWdlc3QKK2F1dGhlbnRpY2F0aW9uKiB1c2luZyB0aGUgOm1vZDpgaG1hY2AgbW9kdWxlLCBhbmQgZm9yIHBvbGxpbmcKK211bHRpcGxlIGNvbm5lY3Rpb25zIGF0IHRoZSBzYW1lIHRpbWUuCiAKIAogLi4gZnVuY3Rpb246OiBkZWxpdmVyX2NoYWxsZW5nZShjb25uZWN0aW9uLCBhdXRoa2V5KQpAQCAtMTc0OSwxNSArMTg0NywxNSBAQAogCiAgICBJZiB0aGUgcmVwbHkgbWF0Y2hlcyB0aGUgZGlnZXN0IG9mIHRoZSBtZXNzYWdlIHVzaW5nICphdXRoa2V5KiBhcyB0aGUga2V5CiAgICB0aGVuIGEgd2VsY29tZSBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdGlvbi4gIE90aGVyd2lzZQotICAgOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogYW5zd2VyQ2hhbGxlbmdlKGNvbm5lY3Rpb24sIGF1dGhrZXkpCiAKICAgIFJlY2VpdmUgYSBtZXNzYWdlLCBjYWxjdWxhdGUgdGhlIGRpZ2VzdCBvZiB0aGUgbWVzc2FnZSB1c2luZyAqYXV0aGtleSogYXMgdGhlCiAgICBrZXksIGFuZCB0aGVuIHNlbmQgdGhlIGRpZ2VzdCBiYWNrLgogCi0gICBJZiBhIHdlbGNvbWUgbWVzc2FnZSBpcyBub3QgcmVjZWl2ZWQsIHRoZW4gOmV4YzpgQXV0aGVudGljYXRpb25FcnJvcmAgaXMKLSAgIHJhaXNlZC4KKyAgIElmIGEgd2VsY29tZSBtZXNzYWdlIGlzIG5vdCByZWNlaXZlZCwgdGhlbgorICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKIC4uIGZ1bmN0aW9uOjogQ2xpZW50KGFkZHJlc3NbLCBmYW1pbHlbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dKQogCkBAIC0xNzcxLDcgKzE4NjksOCBAQAogICAgSWYgKmF1dGhlbnRpY2F0ZSogaXMgYGBUcnVlYGAgb3IgKmF1dGhrZXkqIGlzIGEgYnl0ZSBzdHJpbmcgdGhlbiBkaWdlc3QKICAgIGF1dGhlbnRpY2F0aW9uIGlzIHVzZWQuICBUaGUga2V5IHVzZWQgZm9yIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgZWl0aGVyCiAgICAqYXV0aGtleSogb3IgYGBjdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5YGAgaWYgKmF1dGhrZXkqIGlzIGBgTm9uZWBgLgotICAgSWYgYXV0aGVudGljYXRpb24gZmFpbHMgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuICBTZWUKKyAgIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLiAgU2VlCiAgICA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KIAogLi4gY2xhc3M6OiBMaXN0ZW5lcihbYWRkcmVzc1ssIGZhbWlseVssIGJhY2tsb2dbLCBhdXRoZW50aWNhdGVbLCBhdXRoa2V5XV1dXV0pCkBAIC0xODEyLDEzICsxOTExLDE1IEBACiAgICBgYGN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXlgYCBpcyB1c2VkIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkuICBJZgogICAgKmF1dGhrZXkqIGlzIGBgTm9uZWBgIGFuZCAqYXV0aGVudGljYXRlKiBpcyBgYEZhbHNlYGAgdGhlbiBubwogICAgYXV0aGVudGljYXRpb24gaXMgZG9uZS4gIElmIGF1dGhlbnRpY2F0aW9uIGZhaWxzIHRoZW4KLSAgIDpleGM6YEF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4gIFNlZSA6cmVmOmBtdWx0aXByb2Nlc3NpbmctYXV0aC1rZXlzYC4KKyAgIDpleGM6YH5tdWx0aXByb2Nlc3NpbmcuQXV0aGVudGljYXRpb25FcnJvcmAgaXMgcmFpc2VkLgorICAgU2VlIDpyZWY6YG11bHRpcHJvY2Vzc2luZy1hdXRoLWtleXNgLgogCiAgICAuLiBtZXRob2Q6OiBhY2NlcHQoKQogCiAgICAgICBBY2NlcHQgYSBjb25uZWN0aW9uIG9uIHRoZSBib3VuZCBzb2NrZXQgb3IgbmFtZWQgcGlwZSBvZiB0aGUgbGlzdGVuZXIKICAgICAgIG9iamVjdCBhbmQgcmV0dXJuIGEgOmNsYXNzOmBDb25uZWN0aW9uYCBvYmplY3QuICBJZiBhdXRoZW50aWNhdGlvbiBpcwotICAgICAgYXR0ZW1wdGVkIGFuZCBmYWlscywgdGhlbiA6ZXhjOmBBdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCisgICAgICBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuCisgICAgICA6ZXhjOmB+bXVsdGlwcm9jZXNzaW5nLkF1dGhlbnRpY2F0aW9uRXJyb3JgIGlzIHJhaXNlZC4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC0xODM3LDEyICsxOTM4LDQ0IEBACiAgICAgICBUaGUgYWRkcmVzcyBmcm9tIHdoaWNoIHRoZSBsYXN0IGFjY2VwdGVkIGNvbm5lY3Rpb24gY2FtZS4gIElmIHRoaXMgaXMKICAgICAgIHVuYXZhaWxhYmxlIHRoZW4gaXQgaXMgYGBOb25lYGAuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgTGlzdGVuZXIgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIC0tIHNlZQorICAgICAgOnJlZjpgdHlwZWNvbnRleHRtYW5hZ2VyYC4gIDptZXRoOmBfX2VudGVyX19gIHJldHVybnMgdGhlCisgICAgICBsaXN0ZW5lciBvYmplY3QsIGFuZCA6bWV0aDpgX19leGl0X19gIGNhbGxzIDptZXRoOmBjbG9zZWAuCiAKLVRoZSBtb2R1bGUgZGVmaW5lcyB0d28gZXhjZXB0aW9uczoKKy4uIGZ1bmN0aW9uOjogd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKQogCi0uLiBleGNlcHRpb246OiBBdXRoZW50aWNhdGlvbkVycm9yCisgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluICpvYmplY3RfbGlzdCogaXMgcmVhZHkuICBSZXR1cm5zIHRoZSBsaXN0IG9mCisgICB0aG9zZSBvYmplY3RzIGluICpvYmplY3RfbGlzdCogd2hpY2ggYXJlIHJlYWR5LiAgSWYgKnRpbWVvdXQqIGlzIGEKKyAgIGZsb2F0IHRoZW4gdGhlIGNhbGwgYmxvY2tzIGZvciBhdCBtb3N0IHRoYXQgbWFueSBzZWNvbmRzLiAgSWYKKyAgICp0aW1lb3V0KiBpcyBgYE5vbmVgYCB0aGVuIGl0IHdpbGwgYmxvY2sgZm9yIGFuIHVubGltaXRlZCBwZXJpb2QuCisgICBBIG5lZ2F0aXZlIHRpbWVvdXQgaXMgZXF1aXZhbGVudCB0byBhIHplcm8gdGltZW91dC4KIAotICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIHRoZXJlIGlzIGFuIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorICAgRm9yIGJvdGggVW5peCBhbmQgV2luZG93cywgYW4gb2JqZWN0IGNhbiBhcHBlYXIgaW4gKm9iamVjdF9saXN0KiBpZgorICAgaXQgaXMKKworICAgKiBhIHJlYWRhYmxlIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYCBvYmplY3Q7CisgICAqIGEgY29ubmVjdGVkIGFuZCByZWFkYWJsZSA6Y2xhc3M6YHNvY2tldC5zb2NrZXRgIG9iamVjdDsgb3IKKyAgICogdGhlIDphdHRyOmB+bXVsdGlwcm9jZXNzaW5nLlByb2Nlc3Muc2VudGluZWxgIGF0dHJpYnV0ZSBvZiBhCisgICAgIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYCBvYmplY3QuCisKKyAgIEEgY29ubmVjdGlvbiBvciBzb2NrZXQgb2JqZWN0IGlzIHJlYWR5IHdoZW4gdGhlcmUgaXMgZGF0YSBhdmFpbGFibGUKKyAgIHRvIGJlIHJlYWQgZnJvbSBpdCwgb3IgdGhlIG90aGVyIGVuZCBoYXMgYmVlbiBjbG9zZWQuCisKKyAgICoqVW5peCoqOiBgYHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQpYGAgYWxtb3N0IGVxdWl2YWxlbnQKKyAgIGBgc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCB0aW1lb3V0KWBgLiAgVGhlIGRpZmZlcmVuY2UgaXMKKyAgIHRoYXQsIGlmIDpmdW5jOmBzZWxlY3Quc2VsZWN0YCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaXQgY2FuCisgICByYWlzZSA6ZXhjOmBPU0Vycm9yYCB3aXRoIGFuIGVycm9yIG51bWJlciBvZiBgYEVJTlRSYGAsIHdoZXJlYXMKKyAgIDpmdW5jOmB3YWl0YCB3aWxsIG5vdC4KKworICAgKipXaW5kb3dzKio6IEFuIGl0ZW0gaW4gKm9iamVjdF9saXN0KiBtdXN0IGVpdGhlciBiZSBhbiBpbnRlZ2VyCisgICBoYW5kbGUgd2hpY2ggaXMgd2FpdGFibGUgKGFjY29yZGluZyB0byB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IHRoZQorICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgV2luMzIgZnVuY3Rpb24gYGBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKClgYCkKKyAgIG9yIGl0IGNhbiBiZSBhbiBvYmplY3Qgd2l0aCBhIDptZXRoOmBmaWxlbm9gIG1ldGhvZCB3aGljaCByZXR1cm5zIGEKKyAgIHNvY2tldCBoYW5kbGUgb3IgcGlwZSBoYW5kbGUuICAoTm90ZSB0aGF0IHBpcGUgaGFuZGxlcyBhbmQgc29ja2V0CisgICBoYW5kbGVzIGFyZSAqKm5vdCoqIHdhaXRhYmxlIGhhbmRsZXMuKQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAqKkV4YW1wbGVzKioKQEAgLTE4NTUsMTkgKzE5ODgsMTYgQEAKICAgIGZyb20gYXJyYXkgaW1wb3J0IGFycmF5CiAKICAgIGFkZHJlc3MgPSAoJ2xvY2FsaG9zdCcsIDYwMDApICAgICAjIGZhbWlseSBpcyBkZWR1Y2VkIHRvIGJlICdBRl9JTkVUJwotICAgbGlzdGVuZXIgPSBMaXN0ZW5lcihhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykKIAotICAgY29ubiA9IGxpc3RlbmVyLmFjY2VwdCgpCi0gICBwcmludCgnY29ubmVjdGlvbiBhY2NlcHRlZCBmcm9tJywgbGlzdGVuZXIubGFzdF9hY2NlcHRlZCkKKyAgIHdpdGggTGlzdGVuZXIoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpIGFzIGxpc3RlbmVyOgorICAgICAgIHdpdGggbGlzdGVuZXIuYWNjZXB0KCkgYXMgY29ubjoKKyAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Rpb24gYWNjZXB0ZWQgZnJvbScsIGxpc3RlbmVyLmxhc3RfYWNjZXB0ZWQpCiAKLSAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCisgICAgICAgICAgIGNvbm4uc2VuZChbMi4yNSwgTm9uZSwgJ2p1bmsnLCBmbG9hdF0pCiAKLSAgIGNvbm4uc2VuZF9ieXRlcyhiJ2hlbGxvJykKKyAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKGInaGVsbG8nKQogCi0gICBjb25uLnNlbmRfYnl0ZXMoYXJyYXkoJ2knLCBbNDIsIDE3MjldKSkKLQotICAgY29ubi5jbG9zZSgpCi0gICBsaXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhhcnJheSgnaScsIFs0MiwgMTcyOV0pKQogCiBUaGUgZm9sbG93aW5nIGNvZGUgY29ubmVjdHMgdG8gdGhlIHNlcnZlciBhbmQgcmVjZWl2ZXMgc29tZSBkYXRhIGZyb20gdGhlCiBzZXJ2ZXI6OgpAQCAtMTg3NiwxNyArMjAwNiw1MCBAQAogICAgZnJvbSBhcnJheSBpbXBvcnQgYXJyYXkKIAogICAgYWRkcmVzcyA9ICgnbG9jYWxob3N0JywgNjAwMCkKLSAgIGNvbm4gPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1iJ3NlY3JldCBwYXNzd29yZCcpCiAKLSAgIHByaW50KGNvbm4ucmVjdigpKSAgICAgICAgICAgICAgICAgICMgPT4gWzIuMjUsIE5vbmUsICdqdW5rJywgZmxvYXRdCisgICB3aXRoIENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWInc2VjcmV0IHBhc3N3b3JkJykgYXMgY29ubjoKKyAgICAgICBwcmludChjb25uLnJlY3YoKSkgICAgICAgICAgICAgICAgICAjID0+IFsyLjI1LCBOb25lLCAnanVuaycsIGZsb2F0XQogCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKKyAgICAgICBwcmludChjb25uLnJlY3ZfYnl0ZXMoKSkgICAgICAgICAgICAjID0+ICdoZWxsbycKIAotICAgYXJyID0gYXJyYXkoJ2knLCBbMCwgMCwgMCwgMCwgMF0pCi0gICBwcmludChjb25uLnJlY3ZfYnl0ZXNfaW50byhhcnIpKSAgICAjID0+IDgKLSAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQorICAgICAgIGFyciA9IGFycmF5KCdpJywgWzAsIDAsIDAsIDAsIDBdKQorICAgICAgIHByaW50KGNvbm4ucmVjdl9ieXRlc19pbnRvKGFycikpICAgICMgPT4gOAorICAgICAgIHByaW50KGFycikgICAgICAgICAgICAgICAgICAgICAgICAgICMgPT4gYXJyYXkoJ2knLCBbNDIsIDE3MjksIDAsIDAsIDBdKQogCi0gICBjb25uLmNsb3NlKCkKK1RoZSBmb2xsb3dpbmcgY29kZSB1c2VzIDpmdW5jOmB+bXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24ud2FpdGAgdG8KK3dhaXQgZm9yIG1lc3NhZ2VzIGZyb20gbXVsdGlwbGUgcHJvY2Vzc2VzIGF0IG9uY2U6OgorCisgICBpbXBvcnQgdGltZSwgcmFuZG9tCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgUGlwZSwgY3VycmVudF9wcm9jZXNzCisgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgIGRlZiBmb28odyk6CisgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICB3LnNlbmQoKGksIGN1cnJlbnRfcHJvY2VzcygpLm5hbWUpKQorICAgICAgIHcuY2xvc2UoKQorCisgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICAgIHJlYWRlcnMgPSBbXQorCisgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgIHIsIHcgPSBQaXBlKGR1cGxleD1GYWxzZSkKKyAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgcCA9IFByb2Nlc3ModGFyZ2V0PWZvbywgYXJncz0odywpKQorICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIyBXZSBjbG9zZSB0aGUgd3JpdGFibGUgZW5kIG9mIHRoZSBwaXBlIG5vdyB0byBiZSBzdXJlIHRoYXQKKyAgICAgICAgICAgIyBwIGlzIHRoZSBvbmx5IHByb2Nlc3Mgd2hpY2ggb3ducyBhIGhhbmRsZSBmb3IgaXQuICBUaGlzCisgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IHdoZW4gcCBjbG9zZXMgaXRzIGhhbmRsZSBmb3IgdGhlIHdyaXRhYmxlIGVuZCwKKyAgICAgICAgICAgIyB3YWl0KCkgd2lsbCBwcm9tcHRseSByZXBvcnQgdGhlIHJlYWRhYmxlIGVuZCBhcyBiZWluZyByZWFkeS4KKyAgICAgICAgICAgdy5jbG9zZSgpCisKKyAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICBmb3IgciBpbiB3YWl0KHJlYWRlcnMpOgorICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgcHJpbnQobXNnKQogCiAKIC4uIF9tdWx0aXByb2Nlc3NpbmctYWRkcmVzcy1mb3JtYXRzOgpAQCAtMjA0Nyw3ICsyMjEwLDcgQEAKIAogICAgIEl0IGlzIHByb2JhYmx5IGJlc3QgdG8gc3RpY2sgdG8gdXNpbmcgcXVldWVzIG9yIHBpcGVzIGZvciBjb21tdW5pY2F0aW9uCiAgICAgYmV0d2VlbiBwcm9jZXNzZXMgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGxvd2VyIGxldmVsIHN5bmNocm9uaXphdGlvbgotICAgIHByaW1pdGl2ZXMgZnJvbSB0aGUgOm1vZDpgdGhyZWFkaW5nYCBtb2R1bGUuCisgICAgcHJpbWl0aXZlcy4KIAogUGlja2xhYmlsaXR5CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L25udHBsaWIucnN0IGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKaW5kZXggMjQ3ZWZiNy4uODdhNTBiMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbm50cGxpYi5yc3QKQEAgLTcwLDEwICs3MCwyMyBAQAogICAgY29ubmVjdGluZyB0byBhbiBOTlRQIHNlcnZlciBvbiB0aGUgbG9jYWwgbWFjaGluZSBhbmQgaW50ZW5kIHRvIGNhbGwKICAgIHJlYWRlci1zcGVjaWZpYyBjb21tYW5kcywgc3VjaCBhcyBgYGdyb3VwYGAuICBJZiB5b3UgZ2V0IHVuZXhwZWN0ZWQKICAgIDpleGM6YE5OVFBQZXJtYW5lbnRFcnJvcmBcIHMsIHlvdSBtaWdodCBuZWVkIHRvIHNldCAqcmVhZGVybW9kZSouCisgICA6Y2xhc3M6YE5OVFBgIGNsYXNzIHN1cHBvcnRzIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHRvCisgICB1bmNvbmRpdGlvbmFsbHkgY29uc3VtZSA6ZXhjOmBzb2NrZXQuZXJyb3JgIGV4Y2VwdGlvbnMgYW5kIHRvIGNsb3NlIHRoZSBOTlRQCisgICBjb25uZWN0aW9uIHdoZW4gZG9uZS4gSGVyZSBpcyBhIHNhbXBsZSBvbiBob3cgdXNpbmcgaXQ6CisKKyAgICA+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCisgICAgPj4+IHdpdGggTk5UUCgnbmV3cy5nbWFuZS5vcmcnKSBhcyBuOgorICAgIC4uLiAgICAgbi5ncm91cCgnZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycpCisgICAgLi4uCisgICAgKCcyMTEgMTc1NSAxIDE3NTUgZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycsIDE3NTUsIDEsIDE3NTUsICdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgICA+Pj4KKwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgKnVzZW5ldHJjKiBpcyBub3cgRmFsc2UgYnkgZGVmYXVsdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFN1cHBvcnQgZm9yIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IHdhcyBhZGRlZC4KIAogLi4gY2xhc3M6OiBOTlRQX1NTTChob3N0LCBwb3J0PTU2MywgdXNlcj1Ob25lLCBwYXNzd29yZD1Ob25lLCBzc2xfY29udGV4dD1Ob25lLCByZWFkZXJtb2RlPU5vbmUsIHVzZW5ldHJjPUZhbHNlLCBbdGltZW91dF0pCiAKQEAgLTUwNCw2ICs1MTcsOSBAQAogICAgYXJ0aWNsZSB3aXRoIG1lc3NhZ2UgSUQgKmlkKi4gIE1vc3Qgb2YgdGhlIHRpbWUsIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdAogICAgZW5hYmxlZCBieSBOTlRQIHNlcnZlciBhZG1pbmlzdHJhdG9ycy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZC4KKwogCiAuLiBYWFggZGVwcmVjYXRlZDoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbnVtZXJpYy5yc3QgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAppbmRleCBiYTIyY2I2Li4yNzMyYTg0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9udW1lcmljLnJzdAorKysgYi9Eb2MvbGlicmFyeS9udW1lcmljLnJzdApAQCAtOCw5ICs4LDkgQEAKIFRoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBudW1lcmljIGFuZCBtYXRoLXJlbGF0ZWQgZnVuY3Rpb25zCiBhbmQgZGF0YSB0eXBlcy4gVGhlIDptb2Q6YG51bWJlcnNgIG1vZHVsZSBkZWZpbmVzIGFuIGFic3RyYWN0IGhpZXJhcmNoeSBvZgogbnVtZXJpYyB0eXBlcy4gVGhlIDptb2Q6YG1hdGhgIGFuZCA6bW9kOmBjbWF0aGAgbW9kdWxlcyBjb250YWluIHZhcmlvdXMKLW1hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIEZvciB1c2VycyBtb3JlCi1pbnRlcmVzdGVkIGluIGRlY2ltYWwgYWNjdXJhY3kgdGhhbiBpbiBzcGVlZCwgdGhlIDptb2Q6YGRlY2ltYWxgIG1vZHVsZSBzdXBwb3J0cwotZXhhY3QgcmVwcmVzZW50YXRpb25zIG9mIGRlY2ltYWwgbnVtYmVycy4KK21hdGhlbWF0aWNhbCBmdW5jdGlvbnMgZm9yIGZsb2F0aW5nLXBvaW50IGFuZCBjb21wbGV4IG51bWJlcnMuIFRoZSA6bW9kOmBkZWNpbWFsYAorbW9kdWxlIHN1cHBvcnRzIGV4YWN0IHJlcHJlc2VudGF0aW9ucyBvZiBkZWNpbWFsIG51bWJlcnMsIHVzaW5nIGFyYml0cmFyeSBwcmVjaXNpb24KK2FyaXRobWV0aWMuCiAKIFRoZSBmb2xsb3dpbmcgbW9kdWxlcyBhcmUgZG9jdW1lbnRlZCBpbiB0aGlzIGNoYXB0ZXI6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggMjE0ZTI3Yy4uMjBhODRiNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTcwLDExICs3MCwxNiBAQAogCiAuLiBmdW5jdGlvbjo6IGV4aXN0cyhwYXRoKQogCi0gICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIHJlZmVycyB0byBhbiBleGlzdGluZyBwYXRoLiAgUmV0dXJucyBgYEZhbHNlYGAgZm9yCi0gICBicm9rZW4gc3ltYm9saWMgbGlua3MuIE9uIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmCi0gICBwZXJtaXNzaW9uIGlzIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiByZWZlcnMgdG8gYW4gZXhpc3RpbmcgcGF0aCBvciBhbiBvcGVuCisgICBmaWxlIGRlc2NyaXB0b3IuICBSZXR1cm5zIGBgRmFsc2VgYCBmb3IgYnJva2VuIHN5bWJvbGljIGxpbmtzLiAgT24KKyAgIHNvbWUgcGxhdGZvcm1zLCB0aGlzIGZ1bmN0aW9uIG1heSByZXR1cm4gYGBGYWxzZWBgIGlmIHBlcm1pc3Npb24gaXMKKyAgIG5vdCBncmFudGVkIHRvIGV4ZWN1dGUgOmZ1bmM6YG9zLnN0YXRgIG9uIHRoZSByZXF1ZXN0ZWQgZmlsZSwgZXZlbgogICAgaWYgdGhlICpwYXRoKiBwaHlzaWNhbGx5IGV4aXN0cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpwYXRoKiBjYW4gbm93IGJlIGFuIGludGVnZXI6IGBgVHJ1ZWBgIGlzIHJldHVybmVkIGlmIGl0IGlzIGFuCisgICAgICAgb3BlbiBmaWxlIGRlc2NyaXB0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UuCisKIAogLi4gZnVuY3Rpb246OiBsZXhpc3RzKHBhdGgpCiAKQEAgLTI1NCw3ICsyNTksOCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBZGRlZCBXaW5kb3dzIHN1cHBvcnQuCiAKIAogLi4gZnVuY3Rpb246OiBzYW1lc3RhdChzdGF0MSwgc3RhdDIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggNDEwZTAzYS4uMmU0NWRlMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtOTYsNiArOTYsMTMgQEAKIHByb2Nlc3MgYW5kIHVzZXIuCiAKIAorLi4gZnVuY3Rpb246OiBjdGVybWlkKCkKKworICAgUmV0dXJuIHRoZSBmaWxlbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbCBvZiB0aGUgcHJvY2Vzcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisKIC4uIGRhdGE6OiBlbnZpcm9uCiAKICAgIEEgbWFwcGluZyBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzdHJpbmcgZW52aXJvbm1lbnQuIEZvciBleGFtcGxlLApAQCAtMTc3LDYgKzE4NCwyOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gZnVuY3Rpb246OiBnZXRlbnYoa2V5LCBkZWZhdWx0PU5vbmUpCisKKyAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICprZXkqIGlmIGl0IGV4aXN0cywgb3IKKyAgICpkZWZhdWx0KiBpZiBpdCBkb2Vzbid0LiAqa2V5KiwgKmRlZmF1bHQqIGFuZCB0aGUgcmVzdWx0IGFyZSBzdHIuCisKKyAgIE9uIFVuaXgsIGtleXMgYW5kIHZhbHVlcyBhcmUgZGVjb2RlZCB3aXRoIDpmdW5jOmBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYAorICAgYW5kIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLiBVc2UgOmZ1bmM6YG9zLmdldGVudmJgIGlmIHlvdQorICAgd291bGQgbGlrZSB0byB1c2UgYSBkaWZmZXJlbnQgZW5jb2RpbmcuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXgsIFdpbmRvd3MuCisKKworLi4gZnVuY3Rpb246OiBnZXRlbnZiKGtleSwgZGVmYXVsdD1Ob25lKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCisgICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgYnl0ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBmbGF2b3JzIG9mIFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorCisKIC4uIGZ1bmN0aW9uOjogZ2V0X2V4ZWNfcGF0aChlbnY9Tm9uZSkKIAogICAgUmV0dXJucyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGEgbmFtZWQKQEAgLTE4OCwxMyArMjE3LDYgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKLS4uIGZ1bmN0aW9uOjogY3Rlcm1pZCgpCi0KLSAgIFJldHVybiB0aGUgZmlsZW5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY29udHJvbGxpbmcgdGVybWluYWwgb2YgdGhlIHByb2Nlc3MuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotCiAuLiBmdW5jdGlvbjo6IGdldGVnaWQoKQogCiAgICBSZXR1cm4gdGhlIGVmZmVjdGl2ZSBncm91cCBpZCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKQEAgLTIyMSw2ICsyNDMsMTcgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCisuLiBmdW5jdGlvbjo6IGdldGdyb3VwbGlzdCh1c2VyLCBncm91cCkKKworICAgUmV0dXJuIGxpc3Qgb2YgZ3JvdXAgaWRzIHRoYXQgKnVzZXIqIGJlbG9uZ3MgdG8uIElmICpncm91cCogaXMgbm90IGluIHRoZQorICAgbGlzdCwgaXQgaXMgaW5jbHVkZWQ7IHR5cGljYWxseSwgKmdyb3VwKiBpcyBzcGVjaWZpZWQgYXMgdGhlIGdyb3VwIElECisgICBmaWVsZCBmcm9tIHRoZSBwYXNzd29yZCByZWNvcmQgZm9yICp1c2VyKi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBmdW5jdGlvbjo6IGdldGdyb3VwcygpCiAKICAgIFJldHVybiBsaXN0IG9mIHN1cHBsZW1lbnRhbCBncm91cCBpZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHByb2Nlc3MuCkBAIC0yNDIsMTcgKzI3NSw2IEBACiAgICAgICBvYnRhaW5lZCB3aXRoIDpmdW5jOmBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJgLgogCiAKLS4uIGZ1bmN0aW9uOjogaW5pdGdyb3Vwcyh1c2VybmFtZSwgZ2lkKQotCi0gICBDYWxsIHRoZSBzeXN0ZW0gaW5pdGdyb3VwcygpIHRvIGluaXRpYWxpemUgdGhlIGdyb3VwIGFjY2VzcyBsaXN0IHdpdGggYWxsIG9mCi0gICB0aGUgZ3JvdXBzIG9mIHdoaWNoIHRoZSBzcGVjaWZpZWQgdXNlcm5hbWUgaXMgYSBtZW1iZXIsIHBsdXMgdGhlIHNwZWNpZmllZAotICAgZ3JvdXAgaWQuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLQogLi4gZnVuY3Rpb246OiBnZXRsb2dpbigpCiAKICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgdXNlciBsb2dnZWQgaW4gb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsIG9mIHRoZQpAQCAtMjk3LDExICszMTksNDAgQEAKICAgIHRoZSBpZCByZXR1cm5lZCBpcyB0aGUgb25lIG9mIHRoZSBpbml0IHByb2Nlc3MgKDEpLCBvbiBXaW5kb3dzIGl0IGlzIHN0aWxsCiAgICB0aGUgc2FtZSBpZCwgd2hpY2ggbWF5IGJlIGFscmVhZHkgcmV1c2VkIGJ5IGFub3RoZXIgcHJvY2Vzcy4KIAotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzLgogCisKKy4uIGZ1bmN0aW9uOjogZ2V0cHJpb3JpdHkod2hpY2gsIHdobykKKworICAgLi4gaW5kZXg6OiBzaW5nbGU6IHByb2Nlc3M7IHNjaGVkdWxpbmcgcHJpb3JpdHkKKworICAgR2V0IHByb2dyYW0gc2NoZWR1bGluZyBwcmlvcml0eS4gIFRoZSB2YWx1ZSAqd2hpY2gqIGlzIG9uZSBvZgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCA6Y29uc3Q6YFBSSU9fUEdSUGAsIG9yIDpjb25zdDpgUFJJT19VU0VSYCwgYW5kICp3aG8qCisgICBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byAqd2hpY2gqIChhIHByb2Nlc3MgaWRlbnRpZmllciBmb3IKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgcHJvY2VzcyBncm91cCBpZGVudGlmaWVyIGZvciA6Y29uc3Q6YFBSSU9fUEdSUGAsIGFuZCBhCisgICB1c2VyIElEIGZvciA6Y29uc3Q6YFBSSU9fVVNFUmApLiAgQSB6ZXJvIHZhbHVlIGZvciAqd2hvKiBkZW5vdGVzCisgICAocmVzcGVjdGl2ZWx5KSB0aGUgY2FsbGluZyBwcm9jZXNzLCB0aGUgcHJvY2VzcyBncm91cCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLAorICAgb3IgdGhlIHJlYWwgdXNlciBJRCBvZiB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBQUklPX1BST0NFU1MKKyAgICAgICAgICBQUklPX1BHUlAKKyAgICAgICAgICBQUklPX1VTRVIKKworICAgUGFyYW1ldGVycyBmb3IgdGhlIDpmdW5jOmBnZXRwcmlvcml0eWAgYW5kIDpmdW5jOmBzZXRwcmlvcml0eWAgZnVuY3Rpb25zLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZ2V0cmVzdWlkKCkKIAogICAgUmV0dXJuIGEgdHVwbGUgKHJ1aWQsIGV1aWQsIHN1aWQpIGRlbm90aW5nIHRoZSBjdXJyZW50IHByb2Nlc3MncwpAQCAtMzMxLDI0ICszODIsMTMgQEAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IGdldGVudihrZXksIGRlZmF1bHQ9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogaW5pdGdyb3Vwcyh1c2VybmFtZSwgZ2lkKQogCi0gICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAqa2V5KiBpZiBpdCBleGlzdHMsIG9yCi0gICAqZGVmYXVsdCogaWYgaXQgZG9lc24ndC4gKmtleSosICpkZWZhdWx0KiBhbmQgdGhlIHJlc3VsdCBhcmUgc3RyLgorICAgQ2FsbCB0aGUgc3lzdGVtIGluaXRncm91cHMoKSB0byBpbml0aWFsaXplIHRoZSBncm91cCBhY2Nlc3MgbGlzdCB3aXRoIGFsbCBvZgorICAgdGhlIGdyb3VwcyBvZiB3aGljaCB0aGUgc3BlY2lmaWVkIHVzZXJuYW1lIGlzIGEgbWVtYmVyLCBwbHVzIHRoZSBzcGVjaWZpZWQKKyAgIGdyb3VwIGlkLgogCi0gICBPbiBVbml4LCBrZXlzIGFuZCB2YWx1ZXMgYXJlIGRlY29kZWQgd2l0aCA6ZnVuYzpgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZ2AKLSAgIGFuZCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlci4gVXNlIDpmdW5jOmBvcy5nZXRlbnZiYCBpZiB5b3UKLSAgIHdvdWxkIGxpa2UgdG8gdXNlIGEgZGlmZmVyZW50IGVuY29kaW5nLgotCi0gICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LCBXaW5kb3dzLgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0ZW52YihrZXksIGRlZmF1bHQ9Tm9uZSkKLQotICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgKmtleSogaWYgaXQgZXhpc3RzLCBvcgotICAgKmRlZmF1bHQqIGlmIGl0IGRvZXNuJ3QuICprZXkqLCAqZGVmYXVsdCogYW5kIHRoZSByZXN1bHQgYXJlIGJ5dGVzLgotCi0gICBBdmFpbGFiaWxpdHk6IG1vc3QgZmxhdm9ycyBvZiBVbml4LgorICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDEwLDcgKzQ1MCw3IEBACiAKIC4uIGZ1bmN0aW9uOjogc2V0cGdycCgpCiAKLSAgIENhbGwgdGhlIHN5c3RlbSBjYWxsIDpjOmZ1bmM6YHNldHBncnBgIG9yIDpjOmZ1bmM6YHNldHBncnAoMCwgMClgIGRlcGVuZGluZyBvbgorICAgQ2FsbCB0aGUgc3lzdGVtIGNhbGwgOmM6ZnVuYzpgc2V0cGdycGAgb3IgYGBzZXRwZ3JwKDAsIDApYGAgZGVwZW5kaW5nIG9uCiAgICB3aGljaCB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIChpZiBhbnkpLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgdGhlIHNlbWFudGljcy4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgpAQCAtNDI1LDYgKzQ2NSwyNSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpb3JpdHkpCisKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBwcm9jZXNzOyBzY2hlZHVsaW5nIHByaW9yaXR5CisKKyAgIFNldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIFRoZSB2YWx1ZSAqd2hpY2gqIGlzIG9uZSBvZgorICAgOmNvbnN0OmBQUklPX1BST0NFU1NgLCA6Y29uc3Q6YFBSSU9fUEdSUGAsIG9yIDpjb25zdDpgUFJJT19VU0VSYCwgYW5kICp3aG8qCisgICBpcyBpbnRlcnByZXRlZCByZWxhdGl2ZSB0byAqd2hpY2gqIChhIHByb2Nlc3MgaWRlbnRpZmllciBmb3IKKyAgIDpjb25zdDpgUFJJT19QUk9DRVNTYCwgcHJvY2VzcyBncm91cCBpZGVudGlmaWVyIGZvciA6Y29uc3Q6YFBSSU9fUEdSUGAsIGFuZCBhCisgICB1c2VyIElEIGZvciA6Y29uc3Q6YFBSSU9fVVNFUmApLiBBIHplcm8gdmFsdWUgZm9yICp3aG8qIGRlbm90ZXMKKyAgIChyZXNwZWN0aXZlbHkpIHRoZSBjYWxsaW5nIHByb2Nlc3MsIHRoZSBwcm9jZXNzIGdyb3VwIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MsCisgICBvciB0aGUgcmVhbCB1c2VyIElEIG9mIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisgICAqcHJpb3JpdHkqIGlzIGEgdmFsdWUgaW4gdGhlIHJhbmdlIC0yMCB0byAxOS4gVGhlIGRlZmF1bHQgcHJpb3JpdHkgaXMgMDsKKyAgIGxvd2VyIHByaW9yaXRpZXMgY2F1c2UgbW9yZSBmYXZvcmFibGUgc2NoZWR1bGluZy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogc2V0cmVnaWQocmdpZCwgZWdpZCkKIAogICAgU2V0IHRoZSBjdXJyZW50IHByb2Nlc3MncyByZWFsIGFuZCBlZmZlY3RpdmUgZ3JvdXAgaWRzLgpAQCAtNTExLDE1ICs1NzAsMzEgQEAKICAgICAgIHNpbmdsZTogZ2V0aG9zdG5hbWUoKSAoaW4gbW9kdWxlIHNvY2tldCkKICAgICAgIHNpbmdsZTogZ2V0aG9zdGJ5YWRkcigpIChpbiBtb2R1bGUgc29ja2V0KQogCi0gICBSZXR1cm4gYSA1LXR1cGxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nCi0gICBzeXN0ZW0uICBUaGUgdHVwbGUgY29udGFpbnMgNSBzdHJpbmdzOiBgYChzeXNuYW1lLCBub2RlbmFtZSwgcmVsZWFzZSwgdmVyc2lvbiwKLSAgIG1hY2hpbmUpYGAuICBTb21lIHN5c3RlbXMgdHJ1bmNhdGUgdGhlIG5vZGVuYW1lIHRvIDggY2hhcmFjdGVycyBvciB0byB0aGUKKyAgIFJldHVybnMgaW5mb3JtYXRpb24gaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdpdGggZml2ZSBhdHRyaWJ1dGVzOgorCisgICAqIDphdHRyOmBzeXNuYW1lYCAtIG9wZXJhdGluZyBzeXN0ZW0gbmFtZQorICAgKiA6YXR0cjpgbm9kZW5hbWVgIC0gbmFtZSBvZiBtYWNoaW5lIG9uIG5ldHdvcmsgKGltcGxlbWVudGF0aW9uLWRlZmluZWQpCisgICAqIDphdHRyOmByZWxlYXNlYCAtIG9wZXJhdGluZyBzeXN0ZW0gcmVsZWFzZQorICAgKiA6YXR0cjpgdmVyc2lvbmAgLSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24KKyAgICogOmF0dHI6YG1hY2hpbmVgIC0gaGFyZHdhcmUgaWRlbnRpZmllcgorCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgb2JqZWN0IGlzIGFsc28gaXRlcmFibGUsIGJlaGF2aW5nCisgICBsaWtlIGEgZml2ZS10dXBsZSBjb250YWluaW5nIDphdHRyOmBzeXNuYW1lYCwgOmF0dHI6YG5vZGVuYW1lYCwKKyAgIDphdHRyOmByZWxlYXNlYCwgOmF0dHI6YHZlcnNpb25gLCBhbmQgOmF0dHI6YG1hY2hpbmVgCisgICBpbiB0aGF0IG9yZGVyLgorCisgICBTb21lIHN5c3RlbXMgdHJ1bmNhdGUgOmF0dHI6YG5vZGVuYW1lYCB0byA4IGNoYXJhY3RlcnMgb3IgdG8gdGhlCiAgICBsZWFkaW5nIGNvbXBvbmVudDsgYSBiZXR0ZXIgd2F5IHRvIGdldCB0aGUgaG9zdG5hbWUgaXMKICAgIDpmdW5jOmBzb2NrZXQuZ2V0aG9zdG5hbWVgICBvciBldmVuCiAgICBgYHNvY2tldC5nZXRob3N0YnlhZGRyKHNvY2tldC5nZXRob3N0bmFtZSgpKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IHJlY2VudCBmbGF2b3JzIG9mIFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXR1cm4gdHlwZSBjaGFuZ2VkIGZyb20gYSB0dXBsZSB0byBhIHR1cGxlLWxpa2Ugb2JqZWN0CisgICAgICB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCisKIAogLi4gZnVuY3Rpb246OiB1bnNldGVudihrZXkpCiAKQEAgLTU0MiwxNSArNjE3LDE2IEBACiBGaWxlIE9iamVjdCBDcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlc2UgZnVuY3Rpb25zIGNyZWF0ZSBuZXcgOnRlcm06YGZpbGUgb2JqZWN0cyA8ZmlsZSBvYmplY3Q+YC4gKFNlZSBhbHNvIDpmdW5jOmBvcGVuYC4pCitUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgbmV3IDp0ZXJtOmBmaWxlIG9iamVjdHMgPGZpbGUgb2JqZWN0PmAuICAoU2VlIGFsc28KKzpmdW5jOmB+b3Mub3BlbmAgZm9yIG9wZW5pbmcgZmlsZSBkZXNjcmlwdG9ycy4pCiAKIAogLi4gZnVuY3Rpb246OiBmZG9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKIAotICAgUmV0dXJuIGFuIG9wZW4gZmlsZSBvYmplY3QgY29ubmVjdGVkIHRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgKmZkKi4KLSAgIFRoaXMgaXMgYW4gYWxpYXMgb2YgOmZ1bmM6YG9wZW5gIGFuZCBhY2NlcHRzIHRoZSBzYW1lIGFyZ3VtZW50cy4KLSAgIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgb2YgOmZ1bmM6YGZkb3BlbmAKLSAgIG11c3QgYWx3YXlzIGJlIGFuIGludGVnZXIuCisgICBSZXR1cm4gYW4gb3BlbiBmaWxlIG9iamVjdCBjb25uZWN0ZWQgdG8gdGhlIGZpbGUgZGVzY3JpcHRvciAqZmQqLiAgVGhpcyBpcyBhbgorICAgYWxpYXMgb2YgdGhlIDpmdW5jOmBvcGVuYCBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYWNjZXB0cyB0aGUgc2FtZSBhcmd1bWVudHMuCisgICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIDpmdW5jOmBmZG9wZW5gIG11c3QgYWx3YXlzCisgICBiZSBhbiBpbnRlZ2VyLgogCiAKIC4uIF9vcy1mZC1vcHM6CkBAIC01NzIsNiArNjQ4LDcgQEAKIGRlc2NyaXB0b3IgZGlyZWN0bHkgd2lsbCBieXBhc3MgdGhlIGZpbGUgb2JqZWN0IG1ldGhvZHMsIGlnbm9yaW5nIGFzcGVjdHMgc3VjaAogYXMgaW50ZXJuYWwgYnVmZmVyaW5nIG9mIGRhdGEuCiAKKwogLi4gZnVuY3Rpb246OiBjbG9zZShmZCkKIAogICAgQ2xvc2UgZmlsZSBkZXNjcmlwdG9yICpmZCouCkBAIC01ODksNyArNjY2LDcgQEAKIC4uIGZ1bmN0aW9uOjogY2xvc2VyYW5nZShmZF9sb3csIGZkX2hpZ2gpCiAKICAgIENsb3NlIGFsbCBmaWxlIGRlc2NyaXB0b3JzIGZyb20gKmZkX2xvdyogKGluY2x1c2l2ZSkgdG8gKmZkX2hpZ2gqIChleGNsdXNpdmUpLAotICAgaWdub3JpbmcgZXJyb3JzLiBFcXVpdmFsZW50IHRvOjoKKyAgIGlnbm9yaW5nIGVycm9ycy4gRXF1aXZhbGVudCB0byAoYnV0IG11Y2ggZmFzdGVyIHRoYW4pOjoKIAogICAgICAgZm9yIGZkIGluIHJhbmdlKGZkX2xvdywgZmRfaGlnaCk6CiAgICAgICAgICAgdHJ5OgpAQCAtNjIyLDggKzY5OSw5IEBACiAKIC4uIGZ1bmN0aW9uOjogZmNobW9kKGZkLCBtb2RlKQogCi0gICBDaGFuZ2UgdGhlIG1vZGUgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICBTZWUgdGhlIGRvY3MKLSAgIGZvciA6ZnVuYzpgY2htb2RgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLgorICAgQ2hhbmdlIHRoZSBtb2RlIG9mIHRoZSBmaWxlIGdpdmVuIGJ5ICpmZCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiAgU2VlIHRoZQorICAgZG9jcyBmb3IgOmZ1bmM6YGNobW9kYCBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMKKyAgIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5jaG1vZChmZCwgbW9kZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC02MzEsNyArNzA5LDkgQEAKIC4uIGZ1bmN0aW9uOjogZmNob3duKGZkLCB1aWQsIGdpZCkKIAogICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgdGhlIGZpbGUgZ2l2ZW4gYnkgKmZkKiB0byB0aGUgbnVtZXJpYyAqdWlkKgotICAgYW5kICpnaWQqLiAgVG8gbGVhdmUgb25lIG9mIHRoZSBpZHMgdW5jaGFuZ2VkLCBzZXQgaXQgdG8gLTEuCisgICBhbmQgKmdpZCouICBUbyBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4gIFNlZQorICAgOmZ1bmM6YGNob3duYC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLmNob3duKGZkLCB1aWQsCisgICBnaWQpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNjYyLDIwICs3NDIsMjQgQEAKICAgIGluY2x1ZGVkIGluIGBgcGF0aGNvbmZfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAorICAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MucGF0aGNvbmYoZmQsIG5hbWUpYGAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBmdW5jdGlvbjo6IGZzdGF0KGZkKQogCi0gICBSZXR1cm4gc3RhdHVzIGZvciBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgfm9zLnN0YXRgLgorICAgUmV0dXJuIHN0YXR1cyBmb3IgZmlsZSBkZXNjcmlwdG9yICpmZCosIGxpa2UgOmZ1bmM6YH5vcy5zdGF0YC4gIEFzIG9mIFB5dGhvbgorICAgMy4zLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0KGZkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAogLi4gZnVuY3Rpb246OiBmc3RhdHZmcyhmZCkKIAotICAgUmV0dXJuIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIGZpbGUgYXNzb2NpYXRlZCB3aXRoIGZpbGUKLSAgIGRlc2NyaXB0b3IgKmZkKiwgbGlrZSA6ZnVuYzpgc3RhdHZmc2AuCisgICBSZXR1cm4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZpbGVzeXN0ZW0gY29udGFpbmluZyB0aGUgZmlsZSBhc3NvY2lhdGVkIHdpdGgKKyAgIGZpbGUgZGVzY3JpcHRvciAqZmQqLCBsaWtlIDpmdW5jOmBzdGF0dmZzYC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGBvcy5zdGF0dmZzKGZkKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKQEAgLTY4OSwxMyArNzczLDE0IEBACiAgICBgYGYuZmx1c2goKWBgLCBhbmQgdGhlbiBkbyBgYG9zLmZzeW5jKGYuZmlsZW5vKCkpYGAsIHRvIGVuc3VyZSB0aGF0IGFsbCBpbnRlcm5hbAogICAgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggKmYqIGFyZSB3cml0dGVuIHRvIGRpc2suCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgYW5kIFdpbmRvd3MuCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAogLi4gZnVuY3Rpb246OiBmdHJ1bmNhdGUoZmQsIGxlbmd0aCkKIAotICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgc28gdGhhdCBpdCBpcyBhdCBtb3N0Ci0gICAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgc28gdGhhdCBpdCBpcyBhdAorICAgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLnRydW5jYXRlKGZkLCBsZW5ndGgpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIApAQCAtNzA4LDYgKzc5MywzMSBAQAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAKKy4uIGZ1bmN0aW9uOjogbG9ja2YoZmQsIGNtZCwgbGVuKQorCisgICBBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgorICAgKmZkKiBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgICpjbWQqIHNwZWNpZmllcyB0aGUgY29tbWFuZCB0byB1c2UgLSBvbmUgb2YgOmRhdGE6YEZfTE9DS2AsIDpkYXRhOmBGX1RMT0NLYCwKKyAgIDpkYXRhOmBGX1VMT0NLYCBvciA6ZGF0YTpgRl9URVNUYC4KKyAgICpsZW4qIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBGX0xPQ0sKKyAgICAgICAgICBGX1RMT0NLCisgICAgICAgICAgRl9VTE9DSworICAgICAgICAgIEZfVEVTVAorCisgICBGbGFncyB0aGF0IHNwZWNpZnkgd2hhdCBhY3Rpb24gOmZ1bmM6YGxvY2tmYCB3aWxsIHRha2UuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBsc2VlayhmZCwgcG9zLCBob3cpCiAKICAgIFNldCB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiBmaWxlIGRlc2NyaXB0b3IgKmZkKiB0byBwb3NpdGlvbiAqcG9zKiwgbW9kaWZpZWQKQEAgLTcyNCwyMSArODM0LDI5IEBACiAgICAgICAgICAgU0VFS19FTkQKIAogICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YGxzZWVrYCBmdW5jdGlvbi4gVGhlaXIgdmFsdWVzIGFyZSAwLCAxLCBhbmQgMiwKLSAgIHJlc3BlY3RpdmVseS4gQXZhaWxhYmlsaXR5OiBXaW5kb3dzLCBVbml4LgorICAgcmVzcGVjdGl2ZWx5LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyBjb3VsZCBzdXBwb3J0IGFkZGl0aW9uYWwgdmFsdWVzLCBsaWtlCisgICAgICA6ZGF0YTpgb3MuU0VFS19IT0xFYCBvciA6ZGF0YTpgb3MuU0VFS19EQVRBYC4KIAogCi0uLiBmdW5jdGlvbjo6IG9wZW4oZmlsZSwgZmxhZ3NbLCBtb2RlXSkKKy4uIGZ1bmN0aW9uOjogb3BlbihmaWxlLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIE9wZW4gdGhlIGZpbGUgKmZpbGUqIGFuZCBzZXQgdmFyaW91cyBmbGFncyBhY2NvcmRpbmcgdG8gKmZsYWdzKiBhbmQgcG9zc2libHkKLSAgIGl0cyBtb2RlIGFjY29yZGluZyB0byAqbW9kZSouICBUaGUgZGVmYXVsdCAqbW9kZSogaXMgYGAwbzc3N2BgIChvY3RhbCksIGFuZAotICAgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUgaXMgZmlyc3QgbWFza2VkIG91dC4gIFJldHVybiB0aGUgZmlsZSBkZXNjcmlwdG9yIGZvcgotICAgdGhlIG5ld2x5IG9wZW5lZCBmaWxlLgorICAgaXRzIG1vZGUgYWNjb3JkaW5nIHRvICptb2RlKi4gIFdoZW4gY29tcHV0aW5nICptb2RlKiwgdGhlIGN1cnJlbnQgdW1hc2sgdmFsdWUKKyAgIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIG5ld2x5IG9wZW5lZCBmaWxlLgogCiAgICBGb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZmxhZyBhbmQgbW9kZSB2YWx1ZXMsIHNlZSB0aGUgQyBydW4tdGltZSBkb2N1bWVudGF0aW9uOwogICAgZmxhZyBjb25zdGFudHMgKGxpa2UgOmNvbnN0OmBPX1JET05MWWAgYW5kIDpjb25zdDpgT19XUk9OTFlgKSBhcmUgZGVmaW5lZCBpbgogICAgdGhpcyBtb2R1bGUgdG9vIChzZWUgOnJlZjpgb3Blbi1jb25zdGFudHNgKS4gIEluIHBhcnRpY3VsYXIsIG9uIFdpbmRvd3MgYWRkaW5nCiAgICA6Y29uc3Q6YE9fQklOQVJZYCBpcyBuZWVkZWQgdG8gb3BlbiBmaWxlcyBpbiBiaW5hcnkgbW9kZS4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKQEAgLTc0OCw2ICs4NjYsOSBAQAogICAgICAgOm1ldGg6YH5maWxlLnJlYWRgIGFuZCA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZHMgKGFuZCBtYW55IG1vcmUpLiAgVG8KICAgICAgIHdyYXAgYSBmaWxlIGRlc2NyaXB0b3IgaW4gYSBmaWxlIG9iamVjdCwgdXNlIDpmdW5jOmBmZG9wZW5gLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW5wdHkoKQogCkBAIC03NjgsNiArODg5LDc5IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKIAorLi4gZnVuY3Rpb246OiBwaXBlMihmbGFncykKKworICAgQ3JlYXRlIGEgcGlwZSB3aXRoICpmbGFncyogc2V0IGF0b21pY2FsbHkuCisgICAqZmxhZ3MqIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSBPUmluZyB0b2dldGhlciBvbmUgb3IgbW9yZSBvZiB0aGVzZSB2YWx1ZXM6CisgICA6ZGF0YTpgT19OT05CTE9DS2AsIDpkYXRhOmBPX0NMT0VYRUNgLgorICAgUmV0dXJuIGEgcGFpciBvZiBmaWxlIGRlc2NyaXB0b3JzIGBgKHIsIHcpYGAgdXNhYmxlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nLAorICAgcmVzcGVjdGl2ZWx5LgorCisgICBBdmFpbGFiaWxpdHk6IHNvbWUgZmxhdm9ycyBvZiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBvc2l4X2ZhbGxvY2F0ZShmZCwgb2Zmc2V0LCBsZW4pCisKKyAgIEVuc3VyZXMgdGhhdCBlbm91Z2ggZGlzayBzcGFjZSBpcyBhbGxvY2F0ZWQgZm9yIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqZmQqCisgICBzdGFydGluZyBmcm9tICpvZmZzZXQqIGFuZCBjb250aW51aW5nIGZvciAqbGVuKiBieXRlcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpCisKKyAgIEFubm91bmNlcyBhbiBpbnRlbnRpb24gdG8gYWNjZXNzIGRhdGEgaW4gYSBzcGVjaWZpYyBwYXR0ZXJuIHRodXMgYWxsb3dpbmcKKyAgIHRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLgorICAgVGhlIGFkdmljZSBhcHBsaWVzIHRvIHRoZSByZWdpb24gb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpmZCogc3RhcnRpbmcgYXQKKyAgICpvZmZzZXQqIGFuZCBjb250aW51aW5nIGZvciAqbGVuKiBieXRlcy4KKyAgICphZHZpY2UqIGlzIG9uZSBvZiA6ZGF0YTpgUE9TSVhfRkFEVl9OT1JNQUxgLCA6ZGF0YTpgUE9TSVhfRkFEVl9TRVFVRU5USUFMYCwKKyAgIDpkYXRhOmBQT1NJWF9GQURWX1JBTkRPTWAsIDpkYXRhOmBQT1NJWF9GQURWX05PUkVVU0VgLAorICAgOmRhdGE6YFBPU0lYX0ZBRFZfV0lMTE5FRURgIG9yIDpkYXRhOmBQT1NJWF9GQURWX0RPTlRORUVEYC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogUE9TSVhfRkFEVl9OT1JNQUwKKyAgICAgICAgICBQT1NJWF9GQURWX1NFUVVFTlRJQUwKKyAgICAgICAgICBQT1NJWF9GQURWX1JBTkRPTQorICAgICAgICAgIFBPU0lYX0ZBRFZfTk9SRVVTRQorICAgICAgICAgIFBPU0lYX0ZBRFZfV0lMTE5FRUQKKyAgICAgICAgICBQT1NJWF9GQURWX0RPTlRORUVECisKKyAgIEZsYWdzIHRoYXQgY2FuIGJlIHVzZWQgaW4gKmFkdmljZSogaW4gOmZ1bmM6YHBvc2l4X2ZhZHZpc2VgIHRoYXQgc3BlY2lmeQorICAgdGhlIGFjY2VzcyBwYXR0ZXJuIHRoYXQgaXMgbGlrZWx5IHRvIGJlIHVzZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwcmVhZChmZCwgYnVmZmVyc2l6ZSwgb2Zmc2V0KQorCisgICBSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IsICpmZCosIGF0IGEgcG9zaXRpb24gb2YgKm9mZnNldCouIEl0IHdpbGwgcmVhZCB1cAorICAgdG8gKmJ1ZmZlcnNpemUqIG51bWJlciBvZiBieXRlcy4gVGhlIGZpbGUgb2Zmc2V0IHJlbWFpbnMgdW5jaGFuZ2VkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHdyaXRlKGZkLCBzdHJpbmcsIG9mZnNldCkKKworICAgV3JpdGUgKnN0cmluZyogdG8gYSBmaWxlIGRlc2NyaXB0b3IsICpmZCosIGZyb20gKm9mZnNldCosIGxlYXZpbmcgdGhlIGZpbGUKKyAgIG9mZnNldCB1bmNoYW5nZWQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiByZWFkKGZkLCBuKQogCiAgICBSZWFkIGF0IG1vc3QgKm4qIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yICpmZCouIFJldHVybiBhIGJ5dGVzdHJpbmcgY29udGFpbmluZyB0aGUKQEAgLTc3OSwxMCArOTczLDYyIEBACiAgICAuLiBub3RlOjoKIAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCBmb3IgbG93LWxldmVsIEkvTyBhbmQgbXVzdCBiZSBhcHBsaWVkIHRvIGEgZmlsZQotICAgICAgZGVzY3JpcHRvciBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmAgb3IgOmZ1bmM6YHBpcGVgLiAgVG8gcmVhZCBhICJmaWxlIG9iamVjdCIKLSAgICAgIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3BlbmAgb3IgYnkgOmZ1bmM6YHBvcGVuYCBvcgotICAgICAgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3RkaW5gLCB1c2UgaXRzIDptZXRoOmB+ZmlsZS5yZWFkYCBvcgotICAgICAgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2RzLgorICAgICAgZGVzY3JpcHRvciBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3Mub3BlbmAgb3IgOmZ1bmM6YHBpcGVgLiAgVG8gcmVhZCBhCisgICAgICAiZmlsZSBvYmplY3QiIHJldHVybmVkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3BlbmAgb3IgYnkKKyAgICAgIDpmdW5jOmBwb3BlbmAgb3IgOmZ1bmM6YGZkb3BlbmAsIG9yIDpkYXRhOmBzeXMuc3RkaW5gLCB1c2UgaXRzCisgICAgICA6bWV0aDpgfmZpbGUucmVhZGAgb3IgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2RzLgorCisKKy4uIGZ1bmN0aW9uOjogc2VuZGZpbGUob3V0LCBpbiwgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICAgIHNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPU5vbmUsIHRyYWlsZXJzPU5vbmUsIGZsYWdzPTApCisKKyAgIENvcHkgKm5ieXRlcyogYnl0ZXMgZnJvbSBmaWxlIGRlc2NyaXB0b3IgKmluKiB0byBmaWxlIGRlc2NyaXB0b3IgKm91dCoKKyAgIHN0YXJ0aW5nIGF0ICpvZmZzZXQqLgorICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudC4gV2hlbiBFT0YgaXMgcmVhY2hlZCByZXR1cm4gMC4KKworICAgVGhlIGZpcnN0IGZ1bmN0aW9uIG5vdGF0aW9uIGlzIHN1cHBvcnRlZCBieSBhbGwgcGxhdGZvcm1zIHRoYXQgZGVmaW5lCisgICA6ZnVuYzpgc2VuZGZpbGVgLgorCisgICBPbiBMaW51eCwgaWYgKm9mZnNldCogaXMgZ2l2ZW4gYXMgYGBOb25lYGAsIHRoZSBieXRlcyBhcmUgcmVhZCBmcm9tIHRoZQorICAgY3VycmVudCBwb3NpdGlvbiBvZiAqaW4qIGFuZCB0aGUgcG9zaXRpb24gb2YgKmluKiBpcyB1cGRhdGVkLgorCisgICBUaGUgc2Vjb25kIGNhc2UgbWF5IGJlIHVzZWQgb24gTWFjIE9TIFggYW5kIEZyZWVCU0Qgd2hlcmUgKmhlYWRlcnMqIGFuZAorICAgKnRyYWlsZXJzKiBhcmUgYXJiaXRyYXJ5IHNlcXVlbmNlcyBvZiBidWZmZXJzIHRoYXQgYXJlIHdyaXR0ZW4gYmVmb3JlIGFuZAorICAgYWZ0ZXIgdGhlIGRhdGEgZnJvbSAqaW4qIGlzIHdyaXR0ZW4uIEl0IHJldHVybnMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGNhc2UuCisKKyAgIE9uIE1hYyBPUyBYIGFuZCBGcmVlQlNELCBhIHZhbHVlIG9mIDAgZm9yICpuYnl0ZXMqIHNwZWNpZmllcyB0byBzZW5kIHVudGlsCisgICB0aGUgZW5kIG9mICppbiogaXMgcmVhY2hlZC4KKworICAgT24gU29sYXJpcywgKm91dCogbWF5IGJlIHRoZSBmaWxlIGRlc2NyaXB0b3Igb2YgYSByZWd1bGFyIGZpbGUgb3IgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3Igb2YgYSBzb2NrZXQuIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsICpvdXQqIG11c3QgYmUgdGhlIGZpbGUKKyAgIGRlc2NyaXB0b3Igb2YgYW4gb3BlbiBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IFNGX05PRElTS0lPCisgICAgICAgICAgU0ZfTU5PV0FJVAorICAgICAgICAgIFNGX1NZTkMKKworICAgUGFyYW1ldGVycyB0byB0aGUgOmZ1bmM6YHNlbmRmaWxlYCBmdW5jdGlvbiwgaWYgdGhlIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzCisgICB0aGVtLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcmVhZHYoZmQsIGJ1ZmZlcnMpCisKKyAgIFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuICpidWZmZXJzKiBpcworICAgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcworICAgcmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAogCiAuLiBmdW5jdGlvbjo6IHRjZ2V0cGdycChmZCkKQEAgLTgyNiw2ICsxMDcyLDE3IEBACiAgICAgICA6bWV0aDpgfmZpbGUud3JpdGVgIG1ldGhvZC4KIAogCisuLiBmdW5jdGlvbjo6IHdyaXRldihmZCwgYnVmZmVycykKKworICAgV3JpdGUgdGhlIGNvbnRlbnRzIG9mICpidWZmZXJzKiB0byBmaWxlIGRlc2NyaXB0b3IgKmZkKiwgd2hlcmUgKmJ1ZmZlcnMqCisgICBpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2YgYnVmZmVycy4KKyAgIFJldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIF9vcGVuLWNvbnN0YW50czoKIAogYGBvcGVuKClgYCBmbGFnIGNvbnN0YW50cwpAQCAtODU3LDkgKzExMTQsMTIgQEAKICAgICAgICAgICBPX05PQ1RUWQogICAgICAgICAgIE9fU0hMT0NLCiAgICAgICAgICAgT19FWExPQ0sKKyAgICAgICAgICBPX0NMT0VYRUMKIAogICAgVGhlc2UgY29uc3RhbnRzIGFyZSBvbmx5IGF2YWlsYWJsZSBvbiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkIDpkYXRhOmBPX0NMT0VYRUNgIGNvbnN0YW50LgogCiAuLiBkYXRhOjogT19CSU5BUlkKICAgICAgICAgICBPX05PSU5IRVJJVApAQCAtODgyLDEyICsxMTQyLDEwNiBAQAogICAgdGhlIEMgbGlicmFyeS4KIAogCisuLiBkYXRhOjogUlRMRF9MQVpZCisgICAgICAgICAgUlRMRF9OT1cKKyAgICAgICAgICBSVExEX0dMT0JBTAorICAgICAgICAgIFJUTERfTE9DQUwKKyAgICAgICAgICBSVExEX05PREVMRVRFCisgICAgICAgICAgUlRMRF9OT0xPQUQKKyAgICAgICAgICBSVExEX0RFRVBCSU5ECisKKyAgIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZSA6bWFucGFnZTpgZGxvcGVuKDMpYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gX3Rlcm1pbmFsLXNpemU6CisKK1F1ZXJ5aW5nIHRoZSBzaXplIG9mIGEgdGVybWluYWwKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogZ2V0X3Rlcm1pbmFsX3NpemUoZmQ9U1RET1VUX0ZJTEVOTykKKworICAgUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgYGAoY29sdW1ucywgbGluZXMpYGAsCisgICB0dXBsZSBvZiB0eXBlIDpjbGFzczpgdGVybWluYWxfc2l6ZWAuCisKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCBgYGZkYGAgKGRlZmF1bHQgYGBTVERPVVRfRklMRU5PYGAsIG9yIHN0YW5kYXJkCisgICBvdXRwdXQpIHNwZWNpZmllcyB3aGljaCBmaWxlIGRlc2NyaXB0b3Igc2hvdWxkIGJlIHF1ZXJpZWQuCisKKyAgIElmIHRoZSBmaWxlIGRlc2NyaXB0b3IgaXMgbm90IGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCBhbiA6ZXhjOmBPU0Vycm9yYAorICAgaXMgdGhyb3duLgorCisgICA6ZnVuYzpgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplYCBpcyB0aGUgaGlnaC1sZXZlbCBmdW5jdGlvbiB3aGljaAorICAgc2hvdWxkIG5vcm1hbGx5IGJlIHVzZWQsIGBgb3MuZ2V0X3Rlcm1pbmFsX3NpemVgYCBpcyB0aGUgbG93LWxldmVsCisgICBpbXBsZW1lbnRhdGlvbi4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisuLiBjbGFzczo6IHRlcm1pbmFsX3NpemUKKworICAgQSBzdWJjbGFzcyBvZiB0dXBsZSwgaG9sZGluZyBgYChjb2x1bW5zLCBsaW5lcylgYCBvZiB0aGUgdGVybWluYWwgd2luZG93IHNpemUuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvbHVtbnMKKworICAgICAgV2lkdGggb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaW5lcworCisgICAgICBIZWlnaHQgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdyBpbiBjaGFyYWN0ZXJzLgorCisKIC4uIF9vcy1maWxlLWRpcjoKIAogRmlsZXMgYW5kIERpcmVjdG9yaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLi4gZnVuY3Rpb246OiBhY2Nlc3MocGF0aCwgbW9kZSkKK09uIHNvbWUgVW5peCBwbGF0Zm9ybXMsIG1hbnkgb2YgdGhlc2UgZnVuY3Rpb25zIHN1cHBvcnQgb25lIG9yIG1vcmUgb2YgdGhlc2UKK2ZlYXR1cmVzOgorCisuLiBfcGF0aF9mZDoKKworKiAqKnNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3I6KioKKyAgRm9yIHNvbWUgZnVuY3Rpb25zLCB0aGUgKnBhdGgqIGFyZ3VtZW50IGNhbiBiZSBub3Qgb25seSBhIHN0cmluZyBnaXZpbmcgYSBwYXRoCisgIG5hbWUsIGJ1dCBhbHNvIGEgZmlsZSBkZXNjcmlwdG9yLiAgVGhlIGZ1bmN0aW9uIHdpbGwgdGhlbiBvcGVyYXRlIG9uIHRoZSBmaWxlCisgIHJlZmVycmVkIHRvIGJ5IHRoZSBkZXNjcmlwdG9yLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsIHRoZQorICBgYGYuLi5gYCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqcGF0aCogY2FuIGJlIHNwZWNpZmllZCBhcyBhIGZpbGUgZGVzY3JpcHRvciBvbgorICB5b3VyIHBsYXRmb3JtIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19mZGAuICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQKKyAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCisgIElmIHRoZSBmdW5jdGlvbiBhbHNvIHN1cHBvcnRzICpkaXJfZmQqIG9yICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cywgaXQgaXMKKyAgYW4gZXJyb3IgdG8gc3BlY2lmeSBvbmUgb2YgdGhvc2Ugd2hlbiBzdXBwbHlpbmcgKnBhdGgqIGFzIGEgZmlsZSBkZXNjcmlwdG9yLgorCisuLiBfZGlyX2ZkOgorCisqICoqcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzOioqIElmICpkaXJfZmQqIGlzIG5vdCBgYE5vbmVgYCwgaXQKKyAgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSBwYXRoIHRvIG9wZXJhdGUKKyAgb24gc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS4gIElmIHRoZQorICBwYXRoIGlzIGFic29sdXRlLCAqZGlyX2ZkKiBpcyBpZ25vcmVkLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsCisgIHRoZSBgYC4uLmF0YGAgb3IgYGBmLi4uYXRgYCB2ZXJzaW9uIG9mIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqZGlyX2ZkKiBpcyBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybSB1c2luZworICA6ZGF0YTpgb3Muc3VwcG9ydHNfZGlyX2ZkYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEKKyAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKy4uIF9mb2xsb3dfc3ltbGlua3M6CisKKyogKipub3QgZm9sbG93aW5nIHN5bWxpbmtzOioqIElmICpmb2xsb3dfc3ltbGlua3MqIGlzCisgIGBgRmFsc2VgYCwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggdG8gb3BlcmF0ZSBvbiBpcyBhIHN5bWJvbGljIGxpbmssCisgIHRoZSBmdW5jdGlvbiB3aWxsIG9wZXJhdGUgb24gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlCisgIGxpbmsgcG9pbnRzIHRvLiAgKEZvciBQT1NJWCBzeXN0ZW1zLCBQeXRob24gd2lsbCBjYWxsIHRoZSBgYGwuLi5gYCB2ZXJzaW9uIG9mCisgIHRoZSBmdW5jdGlvbi4pCisKKyAgWW91IGNhbiBjaGVjayB3aGV0aGVyIG9yIG5vdCAqZm9sbG93X3N5bWxpbmtzKiBpcyBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybQorICB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYC4gIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdAorICB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisKKworCisuLiBmdW5jdGlvbjo6IGFjY2VzcyhwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZWZmZWN0aXZlX2lkcz1GYWxzZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFVzZSB0aGUgcmVhbCB1aWQvZ2lkIHRvIHRlc3QgZm9yIGFjY2VzcyB0byAqcGF0aCouICBOb3RlIHRoYXQgbW9zdCBvcGVyYXRpb25zCiAgICB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYQpAQCAtODk4LDYgKzEyNTIsMTUgQEAKICAgIDpjb25zdDpgRmFsc2VgIGlmIG5vdC4gU2VlIHRoZSBVbml4IG1hbiBwYWdlIDptYW5wYWdlOmBhY2Nlc3MoMilgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbi4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeQorICAgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgSWYgKmVmZmVjdGl2ZV9pZHMqIGlzIGBgVHJ1ZWBgLCA6ZnVuYzpgYWNjZXNzYCB3aWxsIHBlcmZvcm0gaXRzIGFjY2VzcworICAgY2hlY2tzIHVzaW5nIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCBpbnN0ZWFkIG9mIHRoZSByZWFsIHVpZC9naWQuCisgICAqZWZmZWN0aXZlX2lkcyogbWF5IG5vdCBiZSBzdXBwb3J0ZWQgb24geW91ciBwbGF0Zm9ybTsgeW91IGNhbiBjaGVjayB3aGV0aGVyCisgICBvciBub3QgaXQgaXMgYXZhaWxhYmxlIHVzaW5nIDpkYXRhOmBvcy5zdXBwb3J0c19lZmZlY3RpdmVfaWRzYC4gIElmIGl0IGlzCisgICB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKICAgIC4uIG5vdGU6OgpAQCAtOTE3LDExICsxMjgwLDggQEAKIAogICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIGZwID0gb3BlbigibXlmaWxlIikKLSAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAgICAgIHJldHVybiAic29tZSBkZWZhdWx0IGRhdGEiCi0gICAgICAgICAgICAgIyBOb3QgYSBwZXJtaXNzaW9uIGVycm9yLgotICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICAgICAgIHJldHVybiAic29tZSBkZWZhdWx0IGRhdGEiCiAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgIHdpdGggZnA6CiAgICAgICAgICAgICAgICAgIHJldHVybiBmcC5yZWFkKCkKQEAgLTkzMiwyOSArMTI5MiwxOCBAQAogICAgICAgc3VjY2VlZCwgcGFydGljdWxhcmx5IGZvciBvcGVyYXRpb25zIG9uIG5ldHdvcmsgZmlsZXN5c3RlbXMgd2hpY2ggbWF5IGhhdmUKICAgICAgIHBlcm1pc3Npb25zIHNlbWFudGljcyBiZXlvbmQgdGhlIHVzdWFsIFBPU0lYIHBlcm1pc3Npb24tYml0IG1vZGVsLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqLCAqZWZmZWN0aXZlX2lkcyosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXJzLgorCiAKIC4uIGRhdGE6OiBGX09LCisgICAgICAgICAgUl9PSworICAgICAgICAgIFdfT0sKKyAgICAgICAgICBYX09LCiAKLSAgIFZhbHVlIHRvIHBhc3MgYXMgdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUgZXhpc3RlbmNlIG9mCi0gICAqcGF0aCouCi0KLQotLi4gZGF0YTo6IFJfT0sKLQotICAgVmFsdWUgdG8gaW5jbHVkZSBpbiB0aGUgKm1vZGUqIHBhcmFtZXRlciBvZiA6ZnVuYzpgYWNjZXNzYCB0byB0ZXN0IHRoZQotICAgcmVhZGFiaWxpdHkgb2YgKnBhdGgqLgotCi0KLS4uIGRhdGE6OiBXX09LCi0KLSAgIFZhbHVlIHRvIGluY2x1ZGUgaW4gdGhlICptb2RlKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YGFjY2Vzc2AgdG8gdGVzdCB0aGUKLSAgIHdyaXRhYmlsaXR5IG9mICpwYXRoKi4KLQotCi0uLiBkYXRhOjogWF9PSwotCi0gICBWYWx1ZSB0byBpbmNsdWRlIGluIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIGRldGVybWluZSBpZgotICAgKnBhdGgqIGNhbiBiZSBleGVjdXRlZC4KKyAgIFZhbHVlcyB0byBwYXNzIGFzIHRoZSAqbW9kZSogcGFyYW1ldGVyIG9mIDpmdW5jOmBhY2Nlc3NgIHRvIHRlc3QgdGhlCisgICBleGlzdGVuY2UsIHJlYWRhYmlsaXR5LCB3cml0YWJpbGl0eSBhbmQgZXhlY3V0YWJpbGl0eSBvZiAqcGF0aCosCisgICByZXNwZWN0aXZlbHkuCiAKIAogLi4gZnVuY3Rpb246OiBjaGRpcihwYXRoKQpAQCAtOTYzLDMzICsxMzEyLDE3IEBACiAKICAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byAqcGF0aCouCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KLQotCi0uLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKLQotICAgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBkaXJlY3RvcnkgcmVwcmVzZW50ZWQgYnkgdGhlIGZpbGUKLSAgIGRlc2NyaXB0b3IgKmZkKi4gIFRoZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYW4gb3BlbmVkIGRpcmVjdG9yeSwgbm90IGFuIG9wZW4KLSAgIGZpbGUuCi0KLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotCi0uLiBmdW5jdGlvbjo6IGdldGN3ZCgpCi0KLSAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YC4gIFRoZQorICAgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbiBvcGVuIGZpbGUuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAotCi0uLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQotCi0gICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLQotICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvcgorICAgICAgb24gc29tZSBwbGF0Zm9ybXMuCiAKIAotLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzKQorLi4gZnVuY3Rpb246OiBjaGZsYWdzKHBhdGgsIGZsYWdzLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgU2V0IHRoZSBmbGFncyBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKmZsYWdzKi4gKmZsYWdzKiBtYXkgdGFrZSBhIGNvbWJpbmF0aW9uCiAgICAoYml0d2lzZSBPUikgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXMgKGFzIGRlZmluZWQgaW4gdGhlIDptb2Q6YHN0YXRgIG1vZHVsZSk6CkBAIC0xMDA3LDE2ICsxMzQwLDE1IEBACiAgICAqIDpkYXRhOmBzdGF0LlNGX05PVU5MSU5LYAogICAgKiA6ZGF0YTpgc3RhdC5TRl9TTkFQU0hPVGAKIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCi0KLS4uIGZ1bmN0aW9uOjogY2hyb290KHBhdGgpCi0KLSAgIENoYW5nZSB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQgcHJvY2VzcyB0byAqcGF0aCouIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KIAogCi0uLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUpCisuLiBmdW5jdGlvbjo6IGNobW9kKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ2hhbmdlIHRoZSBtb2RlIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqbW9kZSouICptb2RlKiBtYXkgdGFrZSBvbmUgb2YgdGhlCiAgICBmb2xsb3dpbmcgdmFsdWVzIChhcyBkZWZpbmVkIGluIHRoZSA6bW9kOmBzdGF0YCBtb2R1bGUpIG9yIGJpdHdpc2UgT1JlZApAQCAtMTA0MiwyOCArMTM3NCw3NyBAQAogICAgKiA6ZGF0YTpgc3RhdC5TX0lXT1RIYAogICAgKiA6ZGF0YTpgc3RhdC5TX0lYT1RIYAogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCwKKyAgIDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiBub3RlOjoKIAotICAgICAgQWx0aG91Z2ggV2luZG93cyBzdXBwb3J0cyA6ZnVuYzpgY2htb2RgLCB5b3UgY2FuIG9ubHkgIHNldCB0aGUgZmlsZSdzIHJlYWQtb25seQotICAgICAgZmxhZyB3aXRoIGl0ICh2aWEgdGhlIGBgc3RhdC5TX0lXUklURWBgICBhbmQgYGBzdGF0LlNfSVJFQURgYAotICAgICAgY29uc3RhbnRzIG9yIGEgY29ycmVzcG9uZGluZyBpbnRlZ2VyIHZhbHVlKS4gIEFsbCBvdGhlciBiaXRzIGFyZQotICAgICAgaWdub3JlZC4KKyAgICAgIEFsdGhvdWdoIFdpbmRvd3Mgc3VwcG9ydHMgOmZ1bmM6YGNobW9kYCwgeW91IGNhbiBvbmx5IHNldCB0aGUgZmlsZSdzCisgICAgICByZWFkLW9ubHkgZmxhZyB3aXRoIGl0ICh2aWEgdGhlIGBgc3RhdC5TX0lXUklURWBgIGFuZCBgYHN0YXQuU19JUkVBRGBgCisgICAgICBjb25zdGFudHMgb3IgYSBjb3JyZXNwb25kaW5nIGludGVnZXIgdmFsdWUpLiAgQWxsIG90aGVyIGJpdHMgYXJlIGlnbm9yZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyAqcGF0aCogYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IsCisgICAgICBhbmQgdGhlICpkaXJfZmQqIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudHMuCiAKIAotLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCkKKy4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdWlkLCBnaWQsICosIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gVG8gbGVhdmUKLSAgIG9uZSBvZiB0aGUgaWRzIHVuY2hhbmdlZCwgc2V0IGl0IHRvIC0xLgorICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gIFRvCisgICBsZWF2ZSBvbmUgb2YgdGhlIGlkcyB1bmNoYW5nZWQsIHNldCBpdCB0byAtMS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKyAgIFNlZSA6ZnVuYzpgc2h1dGlsLmNob3duYCBmb3IgYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG5hbWVzIGluCisgICBhZGRpdGlvbiB0byBudW1lcmljIGlkcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKiwKKyAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KKworCisuLiBmdW5jdGlvbjo6IGNocm9vdChwYXRoKQorCisgICBDaGFuZ2UgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50IHByb2Nlc3MgdG8gKnBhdGgqLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorLi4gZnVuY3Rpb246OiBmY2hkaXIoZmQpCisKKyAgIENoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZGlyZWN0b3J5IHJlcHJlc2VudGVkIGJ5IHRoZSBmaWxlCisgICBkZXNjcmlwdG9yICpmZCouICBUaGUgZGVzY3JpcHRvciBtdXN0IHJlZmVyIHRvIGFuIG9wZW5lZCBkaXJlY3RvcnksIG5vdCBhbgorICAgb3BlbiBmaWxlLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGBgb3MuY2hkaXIoZmQpYGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworCisuLiBmdW5jdGlvbjo6IGdldGN3ZCgpCisKKyAgIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KKworCisuLiBmdW5jdGlvbjo6IGdldGN3ZGIoKQorCisgICBSZXR1cm4gYSBieXRlc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisKIC4uIGZ1bmN0aW9uOjogbGNoZmxhZ3MocGF0aCwgZmxhZ3MpCiAKLSAgIFNldCB0aGUgZmxhZ3Mgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICpmbGFncyosIGxpa2UgOmZ1bmM6YGNoZmxhZ3NgLCBidXQgZG8gbm90Ci0gICBmb2xsb3cgc3ltYm9saWMgbGlua3MuCisgICBTZXQgdGhlIGZsYWdzIG9mICpwYXRoKiB0byB0aGUgbnVtZXJpYyAqZmxhZ3MqLCBsaWtlIDpmdW5jOmBjaGZsYWdzYCwgYnV0IGRvCisgICBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiAgQXMgb2YgUHl0aG9uIDMuMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICBgYG9zLmNoZmxhZ3MocGF0aCwgZmxhZ3MsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCkBAIC0xMDcxLDExMCArMTQ1MiwxMDEgQEAKIC4uIGZ1bmN0aW9uOjogbGNobW9kKHBhdGgsIG1vZGUpCiAKICAgIENoYW5nZSB0aGUgbW9kZSBvZiAqcGF0aCogdG8gdGhlIG51bWVyaWMgKm1vZGUqLiBJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpcwotICAgYWZmZWN0cyB0aGUgc3ltbGluayByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiBTZWUgdGhlIGRvY3MgZm9yIDpmdW5jOmBjaG1vZGAKLSAgIGZvciBwb3NzaWJsZSB2YWx1ZXMgb2YgKm1vZGUqLgorICAgYWZmZWN0cyB0aGUgc3ltbGluayByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0LiAgU2VlIHRoZSBkb2NzIGZvciA6ZnVuYzpgY2htb2RgCisgICBmb3IgcG9zc2libGUgdmFsdWVzIG9mICptb2RlKi4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgYGBvcy5jaG1vZChwYXRoLCBtb2RlLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpYGAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBmdW5jdGlvbjo6IGxjaG93bihwYXRoLCB1aWQsIGdpZCkKIAotICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gVGhpcwotICAgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLgorICAgQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgKnBhdGgqIHRvIHRoZSBudW1lcmljICp1aWQqIGFuZCAqZ2lkKi4gIFRoaXMKKyAgIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudAorICAgdG8gYGBvcy5jaG93bihwYXRoLCB1aWQsIGdpZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKWBgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAotLi4gZnVuY3Rpb246OiBsaW5rKHNvdXJjZSwgbGlua19uYW1lKQorLi4gZnVuY3Rpb246OiBsaW5rKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKLSAgIENyZWF0ZSBhIGhhcmQgbGluayBwb2ludGluZyB0byAqc291cmNlKiBuYW1lZCAqbGlua19uYW1lKi4KKyAgIENyZWF0ZSBhIGhhcmQgbGluayBwb2ludGluZyB0byAqc3JjKiBuYW1lZCAqZHN0Ki4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YCwgYW5kIDpyZWY6YG5vdAorICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgV2luZG93cyBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqc3JjX2Rpcl9mZCosICpkc3RfZGlyX2ZkKiwgYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3RkaXIocGF0aD0nLicpCiAKICAgIFJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieQotICAgKnBhdGgqIChkZWZhdWx0OiBgYCcuJ2BgKS4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlci4gIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKKyAgICpwYXRoKi4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlciwgYW5kIGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKICAgIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCiAKLSAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCB3aXRoIGEgYnl0ZXMgb3Igc3RyaW5nIGFyZ3VtZW50LCBhbmQgcmV0dXJucwotICAgZmlsZW5hbWVzIG9mIHRoZSBzYW1lIGRhdGF0eXBlLgorICAgKnBhdGgqIG1heSBiZSBlaXRoZXIgb2YgdHlwZSBgYHN0cmBgIG9yIG9mIHR5cGUgYGBieXRlc2BgLiAgSWYgKnBhdGgqCisgICBpcyBvZiB0eXBlIGBgYnl0ZXNgYCwgdGhlIGZpbGVuYW1lcyByZXR1cm5lZCB3aWxsIGFsc28gYmUgb2YgdHlwZSBgYGJ5dGVzYGA7CisgICBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlcywgdGhleSB3aWxsIGJlIG9mIHR5cGUgYGBzdHJgYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IKKyAgIDxwYXRoX2ZkPmA7IHRoZSBmaWxlIGRlc2NyaXB0b3IgbXVzdCByZWZlciB0byBhIGRpcmVjdG9yeS4KKworICAgLi4gbm90ZTo6CisgICAgICBUbyBlbmNvZGUgYGBzdHJgYCBmaWxlbmFtZXMgdG8gYGBieXRlc2BgLCB1c2UgOmZ1bmM6YH5vcy5mc2VuY29kZWAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqcGF0aCogcGFyYW1ldGVyIGJlY2FtZSBvcHRpb25hbC4KIAotLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoKQorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCisKKworLi4gZnVuY3Rpb246OiBsc3RhdChwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkKIAogICAgUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhbiA6YzpmdW5jOmBsc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCiAgICBTaW1pbGFyIHRvIDpmdW5jOmB+b3Muc3RhdGAsIGJ1dCBkb2VzIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuICBPbgogICAgcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgc3ltYm9saWMgbGlua3MsIHRoaXMgaXMgYW4gYWxpYXMgZm9yCi0gICA6ZnVuYzpgfm9zLnN0YXRgLgorICAgOmZ1bmM6YH5vcy5zdGF0YC4gIEFzIG9mIFB5dGhvbiAzLjMsIHRoaXMgaXMgZXF1aXZhbGVudCB0byBgYG9zLnN0YXQocGF0aCwKKyAgIGRpcl9mZD1kaXJfZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSlgYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAotCi0uLiBmdW5jdGlvbjo6IG1rZmlmbyhwYXRoWywgbW9kZV0pCi0KLSAgIENyZWF0ZSBhIEZJRk8gKGEgbmFtZWQgcGlwZSkgbmFtZWQgKnBhdGgqIHdpdGggbnVtZXJpYyBtb2RlICptb2RlKi4gIFRoZQotICAgZGVmYXVsdCAqbW9kZSogaXMgYGAwbzY2NmBgIChvY3RhbCkuICBUaGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQKLSAgIG91dCBmcm9tIHRoZSBtb2RlLgotCi0gICBGSUZPcyBhcmUgcGlwZXMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgbGlrZSByZWd1bGFyIGZpbGVzLiAgRklGT3MgZXhpc3QgdW50aWwgdGhleQotICAgYXJlIGRlbGV0ZWQgKGZvciBleGFtcGxlIHdpdGggOmZ1bmM6YG9zLnVubGlua2ApLiBHZW5lcmFsbHksIEZJRk9zIGFyZSB1c2VkIGFzCi0gICByZW5kZXp2b3VzIGJldHdlZW4gImNsaWVudCIgYW5kICJzZXJ2ZXIiIHR5cGUgcHJvY2Vzc2VzOiB0aGUgc2VydmVyIG9wZW5zIHRoZQotICAgRklGTyBmb3IgcmVhZGluZywgYW5kIHRoZSBjbGllbnQgb3BlbnMgaXQgZm9yIHdyaXRpbmcuICBOb3RlIHRoYXQgOmZ1bmM6YG1rZmlmb2AKLSAgIGRvZXNuJ3Qgb3BlbiB0aGUgRklGTyAtLS0gaXQganVzdCBjcmVhdGVzIHRoZSByZW5kZXp2b3VzIHBvaW50LgotCi0gICBBdmFpbGFiaWxpdHk6IFVuaXguCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAogCi0uLiBmdW5jdGlvbjo6IG1rbm9kKGZpbGVuYW1lWywgbW9kZT0wbzYwMFssIGRldmljZT0wXV0pCisuLiBmdW5jdGlvbjo6IG1rZGlyKHBhdGgsIG1vZGU9MG83NzcsICosIGRpcl9mZD1Ob25lKQogCi0gICBDcmVhdGUgYSBmaWxlc3lzdGVtIG5vZGUgKGZpbGUsIGRldmljZSBzcGVjaWFsIGZpbGUgb3IgbmFtZWQgcGlwZSkgbmFtZWQKLSAgICpmaWxlbmFtZSouICptb2RlKiBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGUgdHlwZSBvZiBub2RlCi0gICB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2YgYGBzdGF0LlNfSUZSRUdgYCwKLSAgIGBgc3RhdC5TX0lGQ0hSYGAsIGBgc3RhdC5TX0lGQkxLYGAsIGFuZCBgYHN0YXQuU19JRklGT2BgICh0aG9zZSBjb25zdGFudHMgYXJlCi0gICBhdmFpbGFibGUgaW4gOm1vZDpgc3RhdGApLiAgRm9yIGBgc3RhdC5TX0lGQ0hSYGAgYW5kIGBgc3RhdC5TX0lGQkxLYGAsCi0gICAqZGV2aWNlKiBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nCi0gICA6ZnVuYzpgb3MubWFrZWRldmApLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC4KKyAgIENyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLgogCisgICBPbiBzb21lIHN5c3RlbXMsICptb2RlKiBpcyBpZ25vcmVkLiAgV2hlcmUgaXQgaXMgdXNlZCwgdGhlIGN1cnJlbnQgdW1hc2sKKyAgIHZhbHVlIGlzIGZpcnN0IG1hc2tlZCBvdXQuICBJZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYAorICAgaXMgcmFpc2VkLgogCi0uLiBmdW5jdGlvbjo6IG1ham9yKGRldmljZSkKLQotICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1ham9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCi0gICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCi0KLQotLi4gZnVuY3Rpb246OiBtaW5vcihkZXZpY2UpCi0KLSAgIEV4dHJhY3QgdGhlIGRldmljZSBtaW5vciBudW1iZXIgZnJvbSBhIHJhdyBkZXZpY2UgbnVtYmVyICh1c3VhbGx5IHRoZQotICAgOmF0dHI6YHN0X2RldmAgb3IgOmF0dHI6YHN0X3JkZXZgIGZpZWxkIGZyb20gOmM6dHlwZTpgc3RhdGApLgotCi0KLS4uIGZ1bmN0aW9uOjogbWFrZWRldihtYWpvciwgbWlub3IpCi0KLSAgIENvbXBvc2UgYSByYXcgZGV2aWNlIG51bWJlciBmcm9tIHRoZSBtYWpvciBhbmQgbWlub3IgZGV2aWNlIG51bWJlcnMuCi0KLQotLi4gZnVuY3Rpb246OiBta2RpcihwYXRoWywgbW9kZV0pCi0KLSAgIENyZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAqcGF0aCogd2l0aCBudW1lcmljIG1vZGUgKm1vZGUqLiBUaGUgZGVmYXVsdCAqbW9kZSoKLSAgIGlzIGBgMG83NzdgYCAob2N0YWwpLiAgT24gc29tZSBzeXN0ZW1zLCAqbW9kZSogaXMgaWdub3JlZC4gIFdoZXJlIGl0IGlzIHVzZWQsCi0gICB0aGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0LiAgSWYgdGhlIGRpcmVjdG9yeSBhbHJlYWR5Ci0gICBleGlzdHMsIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZC4KKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KIAogICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzOyBzZWUgdGhlCiAgICA6bW9kOmB0ZW1wZmlsZWAgbW9kdWxlJ3MgOmZ1bmM6YHRlbXBmaWxlLm1rZHRlbXBgIGZ1bmN0aW9uLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogbWFrZWRpcnMocGF0aCwgbW9kZT0wbzc3NywgZXhpc3Rfb2s9RmFsc2UpCiAKQEAgLTEyMDUsNiArMTU3Nyw2MCBAQAogICAgICAgVGhlICpleGlzdF9vayogcGFyYW1ldGVyLgogCiAKKy4uIGZ1bmN0aW9uOjogbWtmaWZvKHBhdGgsIG1vZGU9MG82NjYsICosIGRpcl9mZD1Ob25lKQorCisgICBDcmVhdGUgYSBGSUZPIChhIG5hbWVkIHBpcGUpIG5hbWVkICpwYXRoKiB3aXRoIG51bWVyaWMgbW9kZSAqbW9kZSouCisgICBUaGUgY3VycmVudCB1bWFzayB2YWx1ZSBpcyBmaXJzdCBtYXNrZWQgb3V0IGZyb20gdGhlIG1vZGUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKworICAgRklGT3MgYXJlIHBpcGVzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGxpa2UgcmVndWxhciBmaWxlcy4gIEZJRk9zIGV4aXN0IHVudGlsIHRoZXkKKyAgIGFyZSBkZWxldGVkIChmb3IgZXhhbXBsZSB3aXRoIDpmdW5jOmBvcy51bmxpbmtgKS4gR2VuZXJhbGx5LCBGSUZPcyBhcmUgdXNlZCBhcworICAgcmVuZGV6dm91cyBiZXR3ZWVuICJjbGllbnQiIGFuZCAic2VydmVyIiB0eXBlIHByb2Nlc3NlczogdGhlIHNlcnZlciBvcGVucyB0aGUKKyAgIEZJRk8gZm9yIHJlYWRpbmcsIGFuZCB0aGUgY2xpZW50IG9wZW5zIGl0IGZvciB3cml0aW5nLiAgTm90ZSB0aGF0IDpmdW5jOmBta2ZpZm9gCisgICBkb2Vzbid0IG9wZW4gdGhlIEZJRk8gLS0tIGl0IGp1c3QgY3JlYXRlcyB0aGUgcmVuZGV6dm91cyBwb2ludC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KKworCisuLiBmdW5jdGlvbjo6IG1rbm9kKGZpbGVuYW1lLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIENyZWF0ZSBhIGZpbGVzeXN0ZW0gbm9kZSAoZmlsZSwgZGV2aWNlIHNwZWNpYWwgZmlsZSBvciBuYW1lZCBwaXBlKSBuYW1lZAorICAgKmZpbGVuYW1lKi4gKm1vZGUqIHNwZWNpZmllcyBib3RoIHRoZSBwZXJtaXNzaW9ucyB0byB1c2UgYW5kIHRoZSB0eXBlIG9mIG5vZGUKKyAgIHRvIGJlIGNyZWF0ZWQsIGJlaW5nIGNvbWJpbmVkIChiaXR3aXNlIE9SKSB3aXRoIG9uZSBvZiBgYHN0YXQuU19JRlJFR2BgLAorICAgYGBzdGF0LlNfSUZDSFJgYCwgYGBzdGF0LlNfSUZCTEtgYCwgYW5kIGBgc3RhdC5TX0lGSUZPYGAgKHRob3NlIGNvbnN0YW50cyBhcmUKKyAgIGF2YWlsYWJsZSBpbiA6bW9kOmBzdGF0YCkuICBGb3IgYGBzdGF0LlNfSUZDSFJgYCBhbmQgYGBzdGF0LlNfSUZCTEtgYCwKKyAgICpkZXZpY2UqIGRlZmluZXMgdGhlIG5ld2x5IGNyZWF0ZWQgZGV2aWNlIHNwZWNpYWwgZmlsZSAocHJvYmFibHkgdXNpbmcKKyAgIDpmdW5jOmBvcy5tYWtlZGV2YCksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCisKKy4uIGZ1bmN0aW9uOjogbWFqb3IoZGV2aWNlKQorCisgICBFeHRyYWN0IHRoZSBkZXZpY2UgbWFqb3IgbnVtYmVyIGZyb20gYSByYXcgZGV2aWNlIG51bWJlciAodXN1YWxseSB0aGUKKyAgIDphdHRyOmBzdF9kZXZgIG9yIDphdHRyOmBzdF9yZGV2YCBmaWVsZCBmcm9tIDpjOnR5cGU6YHN0YXRgKS4KKworCisuLiBmdW5jdGlvbjo6IG1pbm9yKGRldmljZSkKKworICAgRXh0cmFjdCB0aGUgZGV2aWNlIG1pbm9yIG51bWJlciBmcm9tIGEgcmF3IGRldmljZSBudW1iZXIgKHVzdWFsbHkgdGhlCisgICA6YXR0cjpgc3RfZGV2YCBvciA6YXR0cjpgc3RfcmRldmAgZmllbGQgZnJvbSA6Yzp0eXBlOmBzdGF0YCkuCisKKworLi4gZnVuY3Rpb246OiBtYWtlZGV2KG1ham9yLCBtaW5vcikKKworICAgQ29tcG9zZSBhIHJhdyBkZXZpY2UgbnVtYmVyIGZyb20gdGhlIG1ham9yIGFuZCBtaW5vciBkZXZpY2UgbnVtYmVycy4KKworCiAuLiBmdW5jdGlvbjo6IHBhdGhjb25mKHBhdGgsIG5hbWUpCiAKICAgIFJldHVybiBzeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiByZWxldmFudCB0byBhIG5hbWVkIGZpbGUuICpuYW1lKgpAQCAtMTIyMCw2ICsxNjQ2LDkgQEAKICAgIGluY2x1ZGVkIGluIGBgcGF0aGNvbmZfbmFtZXNgYCwgYW4gOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdpdGgKICAgIDpjb25zdDpgZXJybm8uRUlOVkFMYCBmb3IgdGhlIGVycm9yIG51bWJlci4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yCisgICA8cGF0aF9mZD5gLgorCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIApAQCAtMTIyNywzOCArMTY1Niw1MyBAQAogCiAgICBEaWN0aW9uYXJ5IG1hcHBpbmcgbmFtZXMgYWNjZXB0ZWQgYnkgOmZ1bmM6YHBhdGhjb25mYCBhbmQgOmZ1bmM6YGZwYXRoY29uZmAgdG8KICAgIHRoZSBpbnRlZ2VyIHZhbHVlcyBkZWZpbmVkIGZvciB0aG9zZSBuYW1lcyBieSB0aGUgaG9zdCBvcGVyYXRpbmcgc3lzdGVtLiAgVGhpcwotICAgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzZXQgb2YgbmFtZXMga25vd24gdG8gdGhlIHN5c3RlbS4gQXZhaWxhYmlsaXR5OgotICAgVW5peC4KKyAgIGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgc2V0IG9mIG5hbWVzIGtub3duIHRvIHRoZSBzeXN0ZW0uCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlYWRsaW5rKHBhdGgpCisuLiBmdW5jdGlvbjo6IHJlYWRsaW5rKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4gIFRoZQotICAgcmVzdWx0IG1heSBiZSBlaXRoZXIgYW4gYWJzb2x1dGUgb3IgcmVsYXRpdmUgcGF0aG5hbWU7IGlmIGl0IGlzIHJlbGF0aXZlLCBpdCBtYXkKLSAgIGJlIGNvbnZlcnRlZCB0byBhbiBhYnNvbHV0ZSBwYXRobmFtZSB1c2luZyBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksCi0gICByZXN1bHQpYGAuCisgICByZXN1bHQgbWF5IGJlIGVpdGhlciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBwYXRobmFtZTsgaWYgaXQgaXMgcmVsYXRpdmUsIGl0CisgICBtYXkgYmUgY29udmVydGVkIHRvIGFuIGFic29sdXRlIHBhdGhuYW1lIHVzaW5nCisgICBgYG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUocGF0aCksIHJlc3VsdClgYC4KIAogICAgSWYgdGhlICpwYXRoKiBpcyBhIHN0cmluZyBvYmplY3QsIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKICAgIGFuZCB0aGUgY2FsbCBtYXkgcmFpc2UgYW4gVW5pY29kZURlY29kZUVycm9yLiBJZiB0aGUgKnBhdGgqIGlzIGEgYnl0ZXMKICAgIG9iamVjdCwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAuCisKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cwogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgV2luZG93cyA2LjAgKFZpc3RhKSBzeW1ib2xpYyBsaW5rcy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgpCisKKy4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGZpbGUgKnBhdGgqLiAgSWYgKnBhdGgqIGlzIGEgZGlyZWN0b3J5LCA6ZXhjOmBPU0Vycm9yYCBpcwotICAgcmFpc2VkOyBzZWUgOmZ1bmM6YHJtZGlyYCBiZWxvdyB0byByZW1vdmUgYSBkaXJlY3RvcnkuICBUaGlzIGlzIGlkZW50aWNhbCB0bwotICAgdGhlIDpmdW5jOmB1bmxpbmtgIGZ1bmN0aW9uIGRvY3VtZW50ZWQgYmVsb3cuICBPbiBXaW5kb3dzLCBhdHRlbXB0aW5nIHRvCi0gICByZW1vdmUgYSBmaWxlIHRoYXQgaXMgaW4gdXNlIGNhdXNlcyBhbiBleGNlcHRpb24gdG8gYmUgcmFpc2VkOyBvbiBVbml4LCB0aGUKLSAgIGRpcmVjdG9yeSBlbnRyeSBpcyByZW1vdmVkIGJ1dCB0aGUgc3RvcmFnZSBhbGxvY2F0ZWQgdG8gdGhlIGZpbGUgaXMgbm90IG1hZGUKLSAgIGF2YWlsYWJsZSB1bnRpbCB0aGUgb3JpZ2luYWwgZmlsZSBpcyBubyBsb25nZXIgaW4gdXNlLgorICAgcmFpc2VkLiAgVXNlIDpmdW5jOmBybWRpcmAgdG8gcmVtb3ZlIGRpcmVjdG9yaWVzLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycworICAgPGRpcl9mZD5gLgorCisgICBPbiBXaW5kb3dzLCBhdHRlbXB0aW5nIHRvIHJlbW92ZSBhIGZpbGUgdGhhdCBpcyBpbiB1c2UgY2F1c2VzIGFuIGV4Y2VwdGlvbiB0bworICAgYmUgcmFpc2VkOyBvbiBVbml4LCB0aGUgZGlyZWN0b3J5IGVudHJ5IGlzIHJlbW92ZWQgYnV0IHRoZSBzdG9yYWdlIGFsbG9jYXRlZAorICAgdG8gdGhlIGZpbGUgaXMgbm90IG1hZGUgYXZhaWxhYmxlIHVudGlsIHRoZSBvcmlnaW5hbCBmaWxlIGlzIG5vIGxvbmdlciBpbiB1c2UuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIDpmdW5jOmB1bmxpbmtgLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlZGlycyhwYXRoKQogCkBAIC0xMjc0LDcgKzE3MTgsNyBAQAogICAgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuCiAKIAotLi4gZnVuY3Rpb246OiByZW5hbWUoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IHJlbmFtZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCiAKICAgIFJlbmFtZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKnNyYyogdG8gKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwKICAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgT24gVW5peCwgaWYgKmRzdCogZXhpc3RzIGFuZCBpcyBhIGZpbGUsIGl0IHdpbGwKQEAgLTEyODIsMTEgKzE3MjYsMTggQEAKICAgIFVuaXggZmxhdm9ycyBpZiAqc3JjKiBhbmQgKmRzdCogYXJlIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtcy4gIElmIHN1Y2Nlc3NmdWwsCiAgICB0aGUgcmVuYW1pbmcgd2lsbCBiZSBhbiBhdG9taWMgb3BlcmF0aW9uICh0aGlzIGlzIGEgUE9TSVggcmVxdWlyZW1lbnQpLiAgT24KICAgIFdpbmRvd3MsIGlmICpkc3QqIGFscmVhZHkgZXhpc3RzLCA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZCBldmVuIGlmIGl0IGlzIGEKLSAgIGZpbGU7IHRoZXJlIG1heSBiZSBubyB3YXkgdG8gaW1wbGVtZW50IGFuIGF0b21pYyByZW5hbWUgd2hlbiAqZHN0KiBuYW1lcyBhbgotICAgZXhpc3RpbmcgZmlsZS4KKyAgIGZpbGUuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgc3BlY2lmeWluZyAqc3JjX2Rpcl9mZCogYW5kL29yICpkc3RfZGlyX2ZkKiB0bworICAgc3VwcGx5IDpyZWY6YHBhdGhzIHJlbGF0aXZlIHRvIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmAuCisKKyAgIElmIHlvdSB3YW50IGNyb3NzLXBsYXRmb3JtIG92ZXJ3cml0aW5nIG9mIHRoZSBkZXN0aW5hdGlvbiwgdXNlIDpmdW5jOmByZXBsYWNlYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqc3JjX2Rpcl9mZCogYW5kICpkc3RfZGlyX2ZkKiBhcmd1bWVudHMuCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWVzKG9sZCwgbmV3KQogCkBAIC0xMzAxLDIyICsxNzUyLDQ2IEBACiAgICAgICBwZXJtaXNzaW9ucyBuZWVkZWQgdG8gcmVtb3ZlIHRoZSBsZWFmIGRpcmVjdG9yeSBvciBmaWxlLgogCiAKLS4uIGZ1bmN0aW9uOjogcm1kaXIocGF0aCkKKy4uIGZ1bmN0aW9uOjogcmVwbGFjZShzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUpCisKKyAgIFJlbmFtZSB0aGUgZmlsZSBvciBkaXJlY3RvcnkgKnNyYyogdG8gKmRzdCouICBJZiAqZHN0KiBpcyBhIGRpcmVjdG9yeSwKKyAgIDpleGM6YE9TRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgSWYgKmRzdCogZXhpc3RzIGFuZCBpcyBhIGZpbGUsIGl0IHdpbGwKKyAgIGJlIHJlcGxhY2VkIHNpbGVudGx5IGlmIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9uLiAgVGhlIG9wZXJhdGlvbiBtYXkgZmFpbAorICAgaWYgKnNyYyogYW5kICpkc3QqIGFyZSBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbXMuICBJZiBzdWNjZXNzZnVsLAorICAgdGhlIHJlbmFtaW5nIHdpbGwgYmUgYW4gYXRvbWljIG9wZXJhdGlvbiAodGhpcyBpcyBhIFBPU0lYIHJlcXVpcmVtZW50KS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCBzcGVjaWZ5aW5nICpzcmNfZGlyX2ZkKiBhbmQvb3IgKmRzdF9kaXJfZmQqIHRvCisgICBzdXBwbHkgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzIDxkaXJfZmQ+YC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCiAgICBSZW1vdmUgKGRlbGV0ZSkgdGhlIGRpcmVjdG9yeSAqcGF0aCouICBPbmx5IHdvcmtzIHdoZW4gdGhlIGRpcmVjdG9yeSBpcwogICAgZW1wdHksIG90aGVyd2lzZSwgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLiAgSW4gb3JkZXIgdG8gcmVtb3ZlIHdob2xlCiAgICBkaXJlY3RvcnkgdHJlZXMsIDpmdW5jOmBzaHV0aWwucm10cmVlYCBjYW4gYmUgdXNlZC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKLS4uIGZ1bmN0aW9uOjogc3RhdChwYXRoKQorCisuLiBmdW5jdGlvbjo6IHN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBQZXJmb3JtIHRoZSBlcXVpdmFsZW50IG9mIGEgOmM6ZnVuYzpgc3RhdGAgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguCi0gICAoVGhpcyBmdW5jdGlvbiBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayB1c2UgOmZ1bmM6YGxzdGF0YC4pCisgICAqcGF0aCogbWF5IGJlIHNwZWNpZmllZCBhcyBlaXRoZXIgYSBzdHJpbmcgb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuCisgICAoVGhpcyBmdW5jdGlvbiBub3JtYWxseSBmb2xsb3dzIHN5bWxpbmtzOyB0byBzdGF0IGEgc3ltbGluayBhZGQgdGhlIGFyZ3VtZW50CisgICBgYGZvbGxvd19zeW1saW5rcz1GYWxzZWBgLCBvciB1c2UgOmZ1bmM6YGxzdGF0YC4pCiAKLSAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0IHdob3NlIGF0dHJpYnV0ZXMgY29ycmVzcG9uZCB0byB0aGUgbWVtYmVycwotICAgb2YgdGhlIDpjOnR5cGU6YHN0YXRgIHN0cnVjdHVyZSwgbmFtZWx5OgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2hvc2UgYXR0cmlidXRlcyBjb3JyZXNwb25kIHJvdWdobHkKKyAgIHRvIHRoZSBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIG5hbWVseToKIAogICAgKiA6YXR0cjpgc3RfbW9kZWAgLSBwcm90ZWN0aW9uIGJpdHMsCiAgICAqIDphdHRyOmBzdF9pbm9gIC0gaW5vZGUgbnVtYmVyLApAQCAtMTMyNSwxMCArMTgwMCwxOCBAQAogICAgKiA6YXR0cjpgc3RfdWlkYCAtIHVzZXIgaWQgb2Ygb3duZXIsCiAgICAqIDphdHRyOmBzdF9naWRgIC0gZ3JvdXAgaWQgb2Ygb3duZXIsCiAgICAqIDphdHRyOmBzdF9zaXplYCAtIHNpemUgb2YgZmlsZSwgaW4gYnl0ZXMsCi0gICAqIDphdHRyOmBzdF9hdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcywKLSAgICogOmF0dHI6YHN0X210aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24sCi0gICAqIDphdHRyOmBzdF9jdGltZWAgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEgY2hhbmdlIG9uCi0gICAgIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MpCisgICAqIDphdHRyOmBzdF9hdGltZWAgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcyBleHByZXNzZWQgaW4gc2Vjb25kcywKKyAgICogOmF0dHI6YHN0X210aW1lYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24KKyAgICAgZXhwcmVzc2VkIGluIHNlY29uZHMsCisgICAqIDphdHRyOmBzdF9jdGltZWAgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEKKyAgICAgY2hhbmdlIG9uIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MsIGV4cHJlc3NlZCBpbiBzZWNvbmRzCisgICAqIDphdHRyOmBzdF9hdGltZV9uc2AgLSB0aW1lIG9mIG1vc3QgcmVjZW50IGFjY2VzcworICAgICBleHByZXNzZWQgaW4gbmFub3NlY29uZHMgYXMgYW4gaW50ZWdlciwKKyAgICogOmF0dHI6YHN0X210aW1lX25zYCAtIHRpbWUgb2YgbW9zdCByZWNlbnQgY29udGVudCBtb2RpZmljYXRpb24KKyAgICAgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzIGFzIGFuIGludGVnZXIsCisgICAqIDphdHRyOmBzdF9jdGltZV9uc2AgLSBwbGF0Zm9ybSBkZXBlbmRlbnQ7IHRpbWUgb2YgbW9zdCByZWNlbnQgbWV0YWRhdGEKKyAgICAgY2hhbmdlIG9uIFVuaXgsIG9yIHRoZSB0aW1lIG9mIGNyZWF0aW9uIG9uIFdpbmRvd3MsCisgICAgIGV4cHJlc3NlZCBpbiBuYW5vc2Vjb25kcyBhcyBhbiBpbnRlZ2VyCiAKICAgIE9uIHNvbWUgVW5peCBzeXN0ZW1zIChzdWNoIGFzIExpbnV4KSwgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIG1heSBhbHNvIGJlCiAgICBhdmFpbGFibGU6CkBAIC0xMzU4LDEzICsxODQxLDI1IEBACiAgICAgICBvciBGQVQzMiBmaWxlIHN5c3RlbXMsIDphdHRyOmBzdF9tdGltZWAgaGFzIDItc2Vjb25kIHJlc29sdXRpb24sIGFuZAogICAgICAgOmF0dHI6YHN0X2F0aW1lYCBoYXMgb25seSAxLWRheSByZXNvbHV0aW9uLiAgU2VlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbQogICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgICAgIFNpbWlsYXJseSwgYWx0aG91Z2ggOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwKKyAgICAgIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgIGFyZSBhbHdheXMgZXhwcmVzc2VkIGluIG5hbm9zZWNvbmRzLCBtYW55CisgICAgICBzeXN0ZW1zIGRvIG5vdCBwcm92aWRlIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgT24gc3lzdGVtcyB0aGF0IGRvCisgICAgICBwcm92aWRlIG5hbm9zZWNvbmQgcHJlY2lzaW9uLCB0aGUgZmxvYXRpbmctcG9pbnQgb2JqZWN0IHVzZWQgdG8KKyAgICAgIHN0b3JlIDphdHRyOmBzdF9hdGltZWAsIDphdHRyOmBzdF9tdGltZWAsIGFuZCA6YXR0cjpgc3RfY3RpbWVgCisgICAgICBjYW5ub3QgcHJlc2VydmUgYWxsIG9mIGl0LCBhbmQgYXMgc3VjaCB3aWxsIGJlIHNsaWdodGx5IGluZXhhY3QuCisgICAgICBJZiB5b3UgbmVlZCB0aGUgZXhhY3QgdGltZXN0YW1wcyB5b3Ugc2hvdWxkIGFsd2F5cyB1c2UKKyAgICAgIDphdHRyOmBzdF9hdGltZV9uc2AsIDphdHRyOmBzdF9tdGltZV9uc2AsIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgLgogCi0gICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgfm9zLnN0YXRgIGlzIGFsc28gYWNjZXNzaWJsZQotICAgYXMgYSB0dXBsZSBvZiBhdCBsZWFzdCAxMCBpbnRlZ2VycyBnaXZpbmcgdGhlIG1vc3QgaW1wb3J0YW50IChhbmQgcG9ydGFibGUpCi0gICBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIGluIHRoZSBvcmRlciA6YXR0cjpgc3RfbW9kZWAsCi0gICA6YXR0cjpgc3RfaW5vYCwgOmF0dHI6YHN0X2RldmAsIDphdHRyOmBzdF9ubGlua2AsIDphdHRyOmBzdF91aWRgLAotICAgOmF0dHI6YHN0X2dpZGAsIDphdHRyOmBzdF9zaXplYCwgOmF0dHI6YHN0X2F0aW1lYCwgOmF0dHI6YHN0X210aW1lYCwKLSAgIDphdHRyOmBzdF9jdGltZWAuIE1vcmUgaXRlbXMgbWF5IGJlIGFkZGVkIGF0IHRoZSBlbmQgYnkgc29tZSBpbXBsZW1lbnRhdGlvbnMuCisgICBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHJldHVybiB2YWx1ZSBvZiA6ZnVuYzpgfm9zLnN0YXRgIGlzIGFsc28KKyAgIGFjY2Vzc2libGUgYXMgYSB0dXBsZSBvZiBhdCBsZWFzdCAxMCBpbnRlZ2VycyBnaXZpbmcgdGhlIG1vc3QgaW1wb3J0YW50IChhbmQKKyAgIHBvcnRhYmxlKSBtZW1iZXJzIG9mIHRoZSA6Yzp0eXBlOmBzdGF0YCBzdHJ1Y3R1cmUsIGluIHRoZSBvcmRlcgorICAgOmF0dHI6YHN0X21vZGVgLCA6YXR0cjpgc3RfaW5vYCwgOmF0dHI6YHN0X2RldmAsIDphdHRyOmBzdF9ubGlua2AsCisgICA6YXR0cjpgc3RfdWlkYCwgOmF0dHI6YHN0X2dpZGAsIDphdHRyOmBzdF9zaXplYCwgOmF0dHI6YHN0X2F0aW1lYCwKKyAgIDphdHRyOmBzdF9tdGltZWAsIDphdHRyOmBzdF9jdGltZWAuIE1vcmUgaXRlbXMgbWF5IGJlIGFkZGVkIGF0IHRoZSBlbmQgYnkKKyAgIHNvbWUgaW1wbGVtZW50YXRpb25zLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RhdAogCkBAIC0xMzg1LDYgKzE4ODAsMTIgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLAorICAgICAgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIGEgcGF0aCwKKyAgICAgIGFuZCB0aGUgOmF0dHI6YHN0X2F0aW1lX25zYCwgOmF0dHI6YHN0X210aW1lX25zYCwKKyAgICAgIGFuZCA6YXR0cjpgc3RfY3RpbWVfbnNgIG1lbWJlcnMuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0X2Zsb2F0X3RpbWVzKFtuZXd2YWx1ZV0pCiAKQEAgLTE0MTAsNiArMTkxMSw4IEBACiAgICBhcmUgcHJvY2Vzc2VkLCB0aGlzIGFwcGxpY2F0aW9uIHNob3VsZCB0dXJuIHRoZSBmZWF0dXJlIG9mZiB1bnRpbCB0aGUgbGlicmFyeQogICAgaGFzIGJlZW4gY29ycmVjdGVkLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIAogLi4gZnVuY3Rpb246OiBzdGF0dmZzKHBhdGgpCiAKQEAgLTE0MjUsMzQgKzE5MjgsMTE4IEBACiAgICByZWFkLW9ubHksIGFuZCBpZiA6Y29uc3Q6YFNUX05PU1VJRGAgaXMgc2V0LCB0aGUgc2VtYW50aWNzIG9mCiAgICBzZXR1aWQvc2V0Z2lkIGJpdHMgYXJlIGRpc2FibGVkIG9yIG5vdCBzdXBwb3J0ZWQuCiAKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgVGhlIDpjb25zdDpgU1RfUkRPTkxZYCBhbmQgOmNvbnN0OmBTVF9OT1NVSURgIGNvbnN0YW50cyB3ZXJlIGFkZGVkLgogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgogCi0uLiBmdW5jdGlvbjo6IHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUpCi0gICAgICAgICAgICAgIHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpCisKKy4uIGRhdGE6OiBzdXBwb3J0c19kaXJfZmQKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGVpciAqZGlyX2ZkKiBwYXJhbWV0ZXIuICBEaWZmZXJlbnQgcGxhdGZvcm1zCisgICBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4gb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbiBvbmUgbWlnaHQKKyAgIGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydAorICAgKmRpcl9mZCogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uCisgICBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHVzZSBvZiBpdHMgKmRpcl9mZCoKKyAgIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19kaXJfZmRgYC4gIEFzIGFuIGV4YW1wbGUsCisgICB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIgb2YgOmZ1bmM6YG9zLnN0YXRgCisgICBpcyBsb2NhbGx5IGF2YWlsYWJsZTo6CisKKyAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2Rpcl9mZAorCisgICBDdXJyZW50bHkgKmRpcl9mZCogcGFyYW1ldGVycyBvbmx5IHdvcmsgb24gVW5peCBwbGF0Zm9ybXM7IG5vbmUgb2YgdGhlbSB3b3JrCisgICBvbiBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZWZmZWN0aXZlX2lkcworCisgICBBIDpjbGFzczpgfmNvbGxlY3Rpb25zLlNldGAgb2JqZWN0IGluZGljYXRpbmcgd2hpY2ggZnVuY3Rpb25zIGluIHRoZQorICAgOm1vZDpgb3NgIG1vZHVsZSBwZXJtaXQgdXNlIG9mIHRoZSAqZWZmZWN0aXZlX2lkcyogcGFyYW1ldGVyIGZvcgorICAgOmZ1bmM6YG9zLmFjY2Vzc2AuICBJZiB0aGUgbG9jYWwgcGxhdGZvcm0gc3VwcG9ydHMgaXQsIHRoZSBjb2xsZWN0aW9uIHdpbGwKKyAgIGNvbnRhaW4gOmZ1bmM6YG9zLmFjY2Vzc2AsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGVtcHR5LgorCisgICBUbyBjaGVjayB3aGV0aGVyIHlvdSBjYW4gdXNlIHRoZSAqZWZmZWN0aXZlX2lkcyogcGFyYW1ldGVyIGZvcgorICAgOmZ1bmM6YG9zLmFjY2Vzc2AsIHVzZSB0aGUgYGBpbmBgIG9wZXJhdG9yIG9uIGBgc3VwcG9ydHNfZGlyX2ZkYGAsIGxpa2Ugc286OgorCisgICAgICAgb3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMKKworICAgQ3VycmVudGx5ICplZmZlY3RpdmVfaWRzKiBvbmx5IHdvcmtzIG9uIFVuaXggcGxhdGZvcm1zOyBpdCBkb2VzIG5vdCB3b3JrIG9uCisgICBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogc3VwcG9ydHNfZmQKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHNwZWNpZnlpbmcgdGhlaXIgKnBhdGgqIHBhcmFtZXRlciBhcyBhbiBvcGVuIGZpbGUKKyAgIGRlc2NyaXB0b3IuICBEaWZmZXJlbnQgcGxhdGZvcm1zIHByb3ZpZGUgZGlmZmVyZW50IGZ1bmN0aW9uYWxpdHksIGFuZCBhbgorICAgb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbiBvbmUgbWlnaHQgYmUgdW5zdXBwb3J0ZWQgb24gYW5vdGhlci4gIEZvcgorICAgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQgc3VwcG9ydCAqZmQqIGFsd2F5cyBhbGxvdyBzcGVjaWZ5aW5nCisgICB0aGUgcGFyYW1ldGVyLCBidXQgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgbm90CisgICBhY3R1YWxseSBhdmFpbGFibGUuCisKKyAgIFRvIGNoZWNrIHdoZXRoZXIgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9uIHBlcm1pdHMgc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUKKyAgIGRlc2NyaXB0b3IgZm9yIGl0cyAqcGF0aCogcGFyYW1ldGVyLCB1c2UgdGhlIGBgaW5gYCBvcGVyYXRvciBvbgorICAgYGBzdXBwb3J0c19mZGBgLiBBcyBhbiBleGFtcGxlLCB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyCisgICA6ZnVuYzpgb3MuY2hkaXJgIGFjY2VwdHMgb3BlbiBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gY2FsbGVkIG9uIHlvdXIgbG9jYWwKKyAgIHBsYXRmb3JtOjoKKworICAgICAgIG9zLmNoZGlyIGluIG9zLnN1cHBvcnRzX2ZkCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MKKworICAgQSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5TZXRgIG9iamVjdCBpbmRpY2F0aW5nIHdoaWNoIGZ1bmN0aW9ucyBpbiB0aGUKKyAgIDptb2Q6YG9zYCBtb2R1bGUgcGVybWl0IHVzZSBvZiB0aGVpciAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXIuICBEaWZmZXJlbnQKKyAgIHBsYXRmb3JtcyBwcm92aWRlIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5LCBhbmQgYW4gb3B0aW9uIHRoYXQgbWlnaHQgd29yayBvbgorICAgb25lIG1pZ2h0IGJlIHVuc3VwcG9ydGVkIG9uIGFub3RoZXIuICBGb3IgY29uc2lzdGVuY3kncyBzYWtlcywgZnVuY3Rpb25zIHRoYXQKKyAgIHN1cHBvcnQgKmZvbGxvd19zeW1saW5rcyogYWx3YXlzIGFsbG93IHNwZWNpZnlpbmcgdGhlIHBhcmFtZXRlciwgYnV0IHdpbGwKKyAgIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgZnVuY3Rpb25hbGl0eSBpcyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLgorCisgICBUbyBjaGVjayB3aGV0aGVyIGEgcGFydGljdWxhciBmdW5jdGlvbiBwZXJtaXRzIHVzZSBvZiBpdHMgKmZvbGxvd19zeW1saW5rcyoKKyAgIHBhcmFtZXRlciwgdXNlIHRoZSBgYGluYGAgb3BlcmF0b3Igb24gYGBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYC4gIEFzIGFuCisgICBleGFtcGxlLCB0aGlzIGV4cHJlc3Npb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXIKKyAgIG9mIDpmdW5jOmBvcy5zdGF0YCBpcyBsb2NhbGx5IGF2YWlsYWJsZTo6CisKKyAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHN5bWxpbmsoc291cmNlLCBsaW5rX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKQogCiAgICBDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvICpzb3VyY2UqIG5hbWVkICpsaW5rX25hbWUqLgogCi0gICBPbiBXaW5kb3dzLCBzeW1saW5rIHZlcnNpb24gdGFrZXMgYW4gYWRkaXRpb25hbCBvcHRpb25hbCBwYXJhbWV0ZXIsCi0gICAqdGFyZ2V0X2lzX2RpcmVjdG9yeSosIHdoaWNoIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4KLQotICAgT24gV2luZG93cywgYSBzeW1saW5rIHJlcHJlc2VudHMgYSBmaWxlIG9yIGEgZGlyZWN0b3J5LCBhbmQgZG9lcyBub3QgbW9ycGggdG8KLSAgIHRoZSB0YXJnZXQgZHluYW1pY2FsbHkuICBJZiAqdGFyZ2V0X2lzX2RpcmVjdG9yeSogaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGUKLSAgIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGFzIGEgZGlyZWN0b3J5IHN5bWxpbmssIG90aGVyd2lzZSBhcyBhIGZpbGUgc3ltbGluawotICAgKHRoZSBkZWZhdWx0KS4KKyAgIE9uIFdpbmRvd3MsIGEgc3ltbGluayByZXByZXNlbnRzIGVpdGhlciBhIGZpbGUgb3IgYSBkaXJlY3RvcnksIGFuZCBkb2VzIG5vdAorICAgbW9ycGggdG8gdGhlIHRhcmdldCBkeW5hbWljYWxseS4gIElmICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBzZXQgdG8gYGBUcnVlYGAsCisgICB0aGUgc3ltbGluayB3aWxsIGJlIGNyZWF0ZWQgYXMgYSBkaXJlY3Rvcnkgc3ltbGluaywgb3RoZXJ3aXNlIGFzIGEgZmlsZSBzeW1saW5rCisgICAodGhlIGRlZmF1bHQpLiAgT24gbm9uLVdpbmRvdyBwbGF0Zm9ybXMsICp0YXJnZXRfaXNfZGlyZWN0b3J5KiBpcyBpZ25vcmVkLgogCiAgICBTeW1ib2xpYyBsaW5rIHN1cHBvcnQgd2FzIGludHJvZHVjZWQgaW4gV2luZG93cyA2LjAgKFZpc3RhKS4gIDpmdW5jOmBzeW1saW5rYAogICAgd2lsbCByYWlzZSBhIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIG9uIFdpbmRvd3MgdmVyc2lvbnMgZWFybGllciB0aGFuIDYuMC4KIAorICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMKKyAgIDxkaXJfZmQ+YC4KKwogICAgLi4gbm90ZTo6CiAKLSAgICAgIFRoZSAqU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UqIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseQotICAgICAgY3JlYXRlIHN5bWxpbmtzLiBUaGlzIHByaXZpbGVnZSBpcyBub3QgdHlwaWNhbGx5IGdyYW50ZWQgdG8gcmVndWxhcgotICAgICAgdXNlcnMgYnV0IGlzIGF2YWlsYWJsZSB0byBhY2NvdW50cyB3aGljaCBjYW4gZXNjYWxhdGUgcHJpdmlsZWdlcyB0byB0aGUKLSAgICAgIGFkbWluaXN0cmF0b3IgbGV2ZWwuIEVpdGhlciBvYnRhaW5pbmcgdGhlIHByaXZpbGVnZSBvciBydW5uaW5nIHlvdXIKKyAgICAgIE9uIFdpbmRvd3MsIHRoZSAqU2VDcmVhdGVTeW1ib2xpY0xpbmtQcml2aWxlZ2UqIGlzIHJlcXVpcmVkIGluIG9yZGVyIHRvCisgICAgICBzdWNjZXNzZnVsbHkgY3JlYXRlIHN5bWxpbmtzLiBUaGlzIHByaXZpbGVnZSBpcyBub3QgdHlwaWNhbGx5IGdyYW50ZWQgdG8KKyAgICAgIHJlZ3VsYXIgdXNlcnMgYnV0IGlzIGF2YWlsYWJsZSB0byBhY2NvdW50cyB3aGljaCBjYW4gZXNjYWxhdGUgcHJpdmlsZWdlcworICAgICAgdG8gdGhlIGFkbWluaXN0cmF0b3IgbGV2ZWwuIEVpdGhlciBvYnRhaW5pbmcgdGhlIHByaXZpbGVnZSBvciBydW5uaW5nIHlvdXIKICAgICAgIGFwcGxpY2F0aW9uIGFzIGFuIGFkbWluaXN0cmF0b3IgYXJlIHdheXMgdG8gc3VjY2Vzc2Z1bGx5IGNyZWF0ZSBzeW1saW5rcy4KIAogICAgICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBhbiB1bnByaXZpbGVnZWQKQEAgLTE0NjMsMzEgKzIwNTAsODUgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBXaW5kb3dzIDYuMCAoVmlzdGEpIHN5bWJvbGljIGxpbmtzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhcmd1bWVudCwgYW5kIG5vdyBhbGxvdyAqdGFyZ2V0X2lzX2RpcmVjdG9yeSoKKyAgICAgIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy4KIAotLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCkKIAotICAgUmVtb3ZlIChkZWxldGUpIHRoZSBmaWxlICpwYXRoKi4gIFRoaXMgaXMgdGhlIHNhbWUgZnVuY3Rpb24gYXMKLSAgIDpmdW5jOmByZW1vdmVgOyB0aGUgOmZ1bmM6YHVubGlua2AgbmFtZSBpcyBpdHMgdHJhZGl0aW9uYWwgVW5peAotICAgbmFtZS4KKy4uIGZ1bmN0aW9uOjogc3luYygpCisKKyAgIEZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHRydW5jYXRlKHBhdGgsIGxlbmd0aCkKKworICAgVHJ1bmNhdGUgdGhlIGZpbGUgY29ycmVzcG9uZGluZyB0byAqcGF0aCosIHNvIHRoYXQgaXQgaXMgYXQgbW9zdAorICAgKmxlbmd0aCogYnl0ZXMgaW4gc2l6ZS4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCisKKyAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0bworICAgOmZ1bmM6YHJlbW92ZWA7IHRoZSBgYHVubGlua2BgIG5hbWUgaXMgaXRzIHRyYWRpdGlvbmFsIFVuaXgKKyAgIG5hbWUuICBQbGVhc2Ugc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciA6ZnVuYzpgcmVtb3ZlYCBmb3IKKyAgIGZ1cnRoZXIgaW5mb3JtYXRpb24uCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGUgKmRpcl9mZCogcGFyYW1ldGVyLgogCi0uLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzKQogCi0gICBTZXQgdGhlIGFjY2VzcyBhbmQgbW9kaWZpZWQgdGltZXMgb2YgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpwYXRoKi4gSWYgKnRpbWVzKgotICAgaXMgYGBOb25lYGAsIHRoZW4gdGhlIGZpbGUncyBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIGFyZSBzZXQgdG8gdGhlIGN1cnJlbnQKLSAgIHRpbWUuIChUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gcnVubmluZyB0aGUgVW5peCBwcm9ncmFtIDpwcm9ncmFtOmB0b3VjaGAgb24KLSAgIHRoZSBwYXRoLikgIE90aGVyd2lzZSwgKnRpbWVzKiBtdXN0IGJlIGEgMi10dXBsZSBvZiBudW1iZXJzLCBvZiB0aGUgZm9ybQotICAgYGAoYXRpbWUsIG10aW1lKWBgIHdoaWNoIGlzIHVzZWQgdG8gc2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzLAotICAgcmVzcGVjdGl2ZWx5LiBXaGV0aGVyIGEgZGlyZWN0b3J5IGNhbiBiZSBnaXZlbiBmb3IgKnBhdGgqIGRlcGVuZHMgb24gd2hldGhlcgotICAgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW1wbGVtZW50cyBkaXJlY3RvcmllcyBhcyBmaWxlcyAoZm9yIGV4YW1wbGUsIFdpbmRvd3MKLSAgIGRvZXMgbm90KS4gIE5vdGUgdGhhdCB0aGUgZXhhY3QgdGltZXMgeW91IHNldCBoZXJlIG1heSBub3QgYmUgcmV0dXJuZWQgYnkgYQotICAgc3Vic2VxdWVudCA6ZnVuYzpgfm9zLnN0YXRgIGNhbGwsIGRlcGVuZGluZyBvbiB0aGUgcmVzb2x1dGlvbiB3aXRoIHdoaWNoIHlvdXIKLSAgIG9wZXJhdGluZyBzeXN0ZW0gcmVjb3JkcyBhY2Nlc3MgYW5kIG1vZGlmaWNhdGlvbiB0aW1lczsgc2VlIDpmdW5jOmB+b3Muc3RhdGAuCisuLiBmdW5jdGlvbjo6IHV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKworICAgU2V0IHRoZSBhY2Nlc3MgYW5kIG1vZGlmaWVkIHRpbWVzIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqcGF0aCouCisKKyAgIDpmdW5jOmB1dGltZWAgdGFrZXMgdHdvIG9wdGlvbmFsIHBhcmFtZXRlcnMsICp0aW1lcyogYW5kICpucyouCisgICBUaGVzZSBzcGVjaWZ5IHRoZSB0aW1lcyBzZXQgb24gKnBhdGgqIGFuZCBhcmUgdXNlZCBhcyBmb2xsb3dzOgorCisgICAtIElmICpucyogaXMgbm90IGBgTm9uZWBgLAorICAgICBpdCBtdXN0IGJlIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChhdGltZV9ucywgbXRpbWVfbnMpYGAKKyAgICAgd2hlcmUgZWFjaCBtZW1iZXIgaXMgYW4gaW50IGV4cHJlc3NpbmcgbmFub3NlY29uZHMuCisgICAtIElmICp0aW1lcyogaXMgbm90IGBgTm9uZWBgLAorICAgICBpdCBtdXN0IGJlIGEgMi10dXBsZSBvZiB0aGUgZm9ybSBgYChhdGltZSwgbXRpbWUpYGAKKyAgICAgd2hlcmUgZWFjaCBtZW1iZXIgaXMgYW4gaW50IG9yIGZsb2F0IGV4cHJlc3Npbmcgc2Vjb25kcy4KKyAgIC0gSWYgKnRpbWVzKiBhbmQgKm5zKiBhcmUgYm90aCBgYE5vbmVgYCwKKyAgICAgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgYGBucz0oYXRpbWVfbnMsIG10aW1lX25zKWBgCisgICAgIHdoZXJlIGJvdGggdGltZXMgYXJlIHRoZSBjdXJyZW50IHRpbWUuCisgICAgIChUaGUgZWZmZWN0IGlzIHNpbWlsYXIgdG8gcnVubmluZyB0aGUgVW5peCBwcm9ncmFtCisgICAgIDpwcm9ncmFtOmB0b3VjaGAgb24gKnBhdGgqLikKKworICAgSXQgaXMgYW4gZXJyb3IgdG8gc3BlY2lmeSB0dXBsZXMgZm9yIGJvdGggKnRpbWVzKiBhbmQgKm5zKi4KKworICAgV2hldGhlciBhIGRpcmVjdG9yeSBjYW4gYmUgZ2l2ZW4gZm9yICpwYXRoKgorICAgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGltcGxlbWVudHMgZGlyZWN0b3JpZXMgYXMgZmlsZXMKKyAgIChmb3IgZXhhbXBsZSwgV2luZG93cyBkb2VzIG5vdCkuICBOb3RlIHRoYXQgdGhlIGV4YWN0IHRpbWVzIHlvdSBzZXQgaGVyZSBtYXkKKyAgIG5vdCBiZSByZXR1cm5lZCBieSBhIHN1YnNlcXVlbnQgOmZ1bmM6YH5vcy5zdGF0YCBjYWxsLCBkZXBlbmRpbmcgb24gdGhlCisgICByZXNvbHV0aW9uIHdpdGggd2hpY2ggeW91ciBvcGVyYXRpbmcgc3lzdGVtIHJlY29yZHMgYWNjZXNzIGFuZCBtb2RpZmljYXRpb24KKyAgIHRpbWVzOyBzZWUgOmZ1bmM6YH5vcy5zdGF0YC4gIFRoZSBiZXN0IHdheSB0byBwcmVzZXJ2ZSBleGFjdCB0aW1lcyBpcyB0bworICAgdXNlIHRoZSAqc3RfYXRpbWVfbnMqIGFuZCAqc3RfbXRpbWVfbnMqIGZpZWxkcyBmcm9tIHRoZSA6ZnVuYzpgb3Muc3RhdGAKKyAgIHJlc3VsdCBvYmplY3Qgd2l0aCB0aGUgKm5zKiBwYXJhbWV0ZXIgdG8gYHV0aW1lYC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAsCisgICA6cmVmOmBwYXRocyByZWxhdGl2ZSB0byBkaXJlY3RvcnkgZGVzY3JpcHRvcnMgPGRpcl9mZD5gIGFuZCA6cmVmOmBub3QKKyAgIGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCisgICAgICBhbmQgdGhlICpkaXJfZmQqLCAqZm9sbG93X3N5bWxpbmtzKiwgYW5kICpucyogcGFyYW1ldGVycy4KKwogCiAuLiBmdW5jdGlvbjo6IHdhbGsodG9wLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgZm9sbG93bGlua3M9RmFsc2UpCiAKQEAgLTE1MzQsOSArMjE3NSw5IEBACiAKICAgIC4uIG5vdGU6OgogCi0gICAgICBCZSBhd2FyZSB0aGF0IHNldHRpbmcgKmZvbGxvd2xpbmtzKiB0byBgYFRydWVgYCBjYW4gbGVhZCB0byBpbmZpbml0ZSByZWN1cnNpb24gaWYgYQotICAgICAgbGluayBwb2ludHMgdG8gYSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0c2VsZi4gOmZ1bmM6YHdhbGtgIGRvZXMgbm90IGtlZXAgdHJhY2sgb2YKLSAgICAgIHRoZSBkaXJlY3RvcmllcyBpdCB2aXNpdGVkIGFscmVhZHkuCisgICAgICBCZSBhd2FyZSB0aGF0IHNldHRpbmcgKmZvbGxvd2xpbmtzKiB0byBgYFRydWVgYCBjYW4gbGVhZCB0byBpbmZpbml0ZQorICAgICAgcmVjdXJzaW9uIGlmIGEgbGluayBwb2ludHMgdG8gYSBwYXJlbnQgZGlyZWN0b3J5IG9mIGl0c2VsZi4gOmZ1bmM6YHdhbGtgCisgICAgICBkb2VzIG5vdCBrZWVwIHRyYWNrIG9mIHRoZSBkaXJlY3RvcmllcyBpdCB2aXNpdGVkIGFscmVhZHkuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xNTcyLDYgKzIyMTMsMTM3IEBACiAgICAgICAgICAgICAgIG9zLnJtZGlyKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKIAogCisuLiBmdW5jdGlvbjo6IGZ3YWxrKHRvcD0nLicsIHRvcGRvd249VHJ1ZSwgb25lcnJvcj1Ob25lLCAqLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1Ob25lKQorCisgICAuLiBpbmRleDo6CisgICAgICBzaW5nbGU6IGRpcmVjdG9yeTsgd2Fsa2luZworICAgICAgc2luZ2xlOiBkaXJlY3Rvcnk7IHRyYXZlcnNhbAorCisgICBUaGlzIGJlaGF2ZXMgZXhhY3RseSBsaWtlIDpmdW5jOmB3YWxrYCwgZXhjZXB0IHRoYXQgaXQgeWllbGRzIGEgNC10dXBsZQorICAgYGAoZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcywgZGlyZmQpYGAsIGFuZCBpdCBzdXBwb3J0cyBgYGRpcl9mZGBgLgorCisgICAqZGlycGF0aCosICpkaXJuYW1lcyogYW5kICpmaWxlbmFtZXMqIGFyZSBpZGVudGljYWwgdG8gOmZ1bmM6YHdhbGtgIG91dHB1dCwKKyAgIGFuZCAqZGlyZmQqIGlzIGEgZmlsZSBkZXNjcmlwdG9yIHJlZmVycmluZyB0byB0aGUgZGlyZWN0b3J5ICpkaXJwYXRoKi4KKworICAgVGhpcyBmdW5jdGlvbiBhbHdheXMgc3VwcG9ydHMgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCisgICA8ZGlyX2ZkPmAgYW5kIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLiAgTm90ZSBob3dldmVyCisgICB0aGF0LCB1bmxpa2Ugb3RoZXIgZnVuY3Rpb25zLCB0aGUgOmZ1bmM6YGZ3YWxrYCBkZWZhdWx0IHZhbHVlIGZvcgorICAgKmZvbGxvd19zeW1saW5rcyogaXMgYGBGYWxzZWBgLgorCisgICAuLiBub3RlOjoKKworICAgICAgU2luY2UgOmZ1bmM6YGZ3YWxrYCB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycywgdGhvc2UgYXJlIG9ubHkgdmFsaWQgdW50aWwKKyAgICAgIHRoZSBuZXh0IGl0ZXJhdGlvbiBzdGVwLCBzbyB5b3Ugc2hvdWxkIGR1cGxpY2F0ZSB0aGVtIChlLmcuIHdpdGgKKyAgICAgIDpmdW5jOmBkdXBgKSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gbG9uZ2VyLgorCisgICBUaGlzIGV4YW1wbGUgZGlzcGxheXMgdGhlIG51bWJlciBvZiBieXRlcyB0YWtlbiBieSBub24tZGlyZWN0b3J5IGZpbGVzIGluIGVhY2gKKyAgIGRpcmVjdG9yeSB1bmRlciB0aGUgc3RhcnRpbmcgZGlyZWN0b3J5LCBleGNlcHQgdGhhdCBpdCBkb2Vzbid0IGxvb2sgdW5kZXIgYW55CisgICBDVlMgc3ViZGlyZWN0b3J5OjoKKworICAgICAgaW1wb3J0IG9zCisgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgorICAgICAgICAgIHByaW50KHJvb3QsICJjb25zdW1lcyIsIGVuZD0iIikKKyAgICAgICAgICBwcmludChzdW0oW29zLnN0YXQobmFtZSwgZGlyX2ZkPXJvb3RmZCkuc3Rfc2l6ZSBmb3IgbmFtZSBpbiBmaWxlc10pLAorICAgICAgICAgICAgICAgIGVuZD0iIikKKyAgICAgICAgICBwcmludCgiYnl0ZXMgaW4iLCBsZW4oZmlsZXMpLCAibm9uLWRpcmVjdG9yeSBmaWxlcyIpCisgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKKyAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcworCisgICBJbiB0aGUgbmV4dCBleGFtcGxlLCB3YWxraW5nIHRoZSB0cmVlIGJvdHRvbS11cCBpcyBlc3NlbnRpYWw6CisgICA6ZnVuYzpgcm1kaXJgIGRvZXNuJ3QgYWxsb3cgZGVsZXRpbmcgYSBkaXJlY3RvcnkgYmVmb3JlIHRoZSBkaXJlY3RvcnkgaXMKKyAgIGVtcHR5OjoKKworICAgICAgIyBEZWxldGUgZXZlcnl0aGluZyByZWFjaGFibGUgZnJvbSB0aGUgZGlyZWN0b3J5IG5hbWVkIGluICJ0b3AiLAorICAgICAgIyBhc3N1bWluZyB0aGVyZSBhcmUgbm8gc3ltYm9saWMgbGlua3MuCisgICAgICAjIENBVVRJT046ICBUaGlzIGlzIGRhbmdlcm91cyEgIEZvciBleGFtcGxlLCBpZiB0b3AgPT0gJy8nLCBpdAorICAgICAgIyBjb3VsZCBkZWxldGUgYWxsIHlvdXIgZGlzayBmaWxlcy4KKyAgICAgIGltcG9ydCBvcworICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsodG9wLCB0b3Bkb3duPUZhbHNlKToKKyAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAgICAgb3Mucm1kaXIobmFtZSwgZGlyX2ZkPXJvb3RmZCkKKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCitMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGVzZSBmdW5jdGlvbnMgYXJlIGFsbCBhdmFpbGFibGUgb24gTGludXggb25seS4KKworLi4gZnVuY3Rpb246OiBnZXR4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmb3IKKyAgICpwYXRoKi4gKmF0dHJpYnV0ZSogY2FuIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgc3RyLCBpdCBpcyBlbmNvZGVkCisgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogbGlzdHhhdHRyKHBhdGg9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlcyBvbiAqcGF0aCouICBUaGUKKyAgIGF0dHJpYnV0ZXMgaW4gdGhlIGxpc3QgYXJlIHJlcHJlc2VudGVkIGFzIHN0cmluZ3MgZGVjb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZy4gIElmICpwYXRoKiBpcyBgYE5vbmVgYCwgOmZ1bmM6YGxpc3R4YXR0cmAgd2lsbCBleGFtaW5lIHRoZSBjdXJyZW50CisgICBkaXJlY3RvcnkuCisKKyAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gIGFuZAorICAgOnJlZjpgbm90IGZvbGxvd2luZyBzeW1saW5rcyA8Zm9sbG93X3N5bWxpbmtzPmAuCisKKworLi4gZnVuY3Rpb246OiByZW1vdmV4YXR0cihwYXRoLCBhdHRyaWJ1dGUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBSZW1vdmVzIHRoZSBleHRlbmRlZCBmaWxlc3lzdGVtIGF0dHJpYnV0ZSAqYXR0cmlidXRlKiBmcm9tICpwYXRoKi4KKyAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCisgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgorCisgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKKyAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgorCisKKy4uIGZ1bmN0aW9uOjogc2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCB2YWx1ZSwgZmxhZ3M9MCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIFNldCB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogb24gKnBhdGgqIHRvICp2YWx1ZSouCisgICAqYXR0cmlidXRlKiBtdXN0IGJlIGEgYnl0ZXMgb3Igc3RyIHdpdGggbm8gZW1iZWRkZWQgTlVMcy4gSWYgaXQgaXMgYSBzdHIsCisgICBpdCBpcyBlbmNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuICAqZmxhZ3MqIG1heSBiZQorICAgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIG9yIDpkYXRhOmBYQVRUUl9DUkVBVEVgLiBJZiA6ZGF0YTpgWEFUVFJfUkVQTEFDRWAgaXMKKyAgIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LCBgYEVFWElTVFNgYCB3aWxsIGJlIHJhaXNlZC4KKyAgIElmIDpkYXRhOmBYQVRUUl9DUkVBVEVgIGlzIGdpdmVuIGFuZCB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzLCB0aGUKKyAgIGF0dHJpYnV0ZSB3aWxsIG5vdCBiZSBjcmVhdGVkIGFuZCBgYEVOT0RBVEFgYCB3aWxsIGJlIHJhaXNlZC4KKworICAgVGhpcyBmdW5jdGlvbiBjYW4gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yIDxwYXRoX2ZkPmAgYW5kCisgICA6cmVmOmBub3QgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEEgYnVnIGluIExpbnV4IGtlcm5lbCB2ZXJzaW9ucyBsZXNzIHRoYW4gMi42LjM5IGNhdXNlZCB0aGUgZmxhZ3MgYXJndW1lbnQKKyAgICAgIHRvIGJlIGlnbm9yZWQgb24gc29tZSBmaWxlc3lzdGVtcy4KKworCisuLiBkYXRhOjogWEFUVFJfU0laRV9NQVgKKworICAgVGhlIG1heGltdW0gc2l6ZSB0aGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGNhbiBiZS4gQ3VycmVudGx5LCB0aGlzCisgICBpcyA2NCBraWxvYnl0ZXMgb24gTGludXguCisKKworLi4gZGF0YTo6IFhBVFRSX0NSRUFURQorCisgICBUaGlzIGlzIGEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSBmbGFncyBhcmd1bWVudCBpbiA6ZnVuYzpgc2V0eGF0dHJgLiBJdAorICAgaW5kaWNhdGVzIHRoZSBvcGVyYXRpb24gbXVzdCBjcmVhdGUgYW4gYXR0cmlidXRlLgorCisKKy4uIGRhdGE6OiBYQVRUUl9SRVBMQUNFCisKKyAgIFRoaXMgaXMgYSBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlIGZsYWdzIGFyZ3VtZW50IGluIDpmdW5jOmBzZXR4YXR0cmAuIEl0CisgICBpbmRpY2F0ZXMgdGhlIG9wZXJhdGlvbiBtdXN0IHJlcGxhY2UgYW4gZXhpc3RpbmcgYXR0cmlidXRlLgorCisKIC4uIF9vcy1wcm9jZXNzOgogCiBQcm9jZXNzIE1hbmFnZW1lbnQKQEAgLTE2NDUsOCArMjQxNywxNiBAQAogICAgOmZ1bmM6YGV4ZWNscGAsIDpmdW5jOmBleGVjdmAsIGFuZCA6ZnVuYzpgZXhlY3ZwYCBhbGwgY2F1c2UgdGhlIG5ldyBwcm9jZXNzIHRvCiAgICBpbmhlcml0IHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgY3VycmVudCBwcm9jZXNzLgogCisgICBGb3IgOmZ1bmM6YGV4ZWN2ZWAgb24gc29tZSBwbGF0Zm9ybXMsICpwYXRoKiBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbgorICAgZmlsZSBkZXNjcmlwdG9yLiAgVGhpcyBmdW5jdGlvbmFsaXR5IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm07CisgICB5b3UgY2FuIGNoZWNrIHdoZXRoZXIgb3Igbm90IGl0IGlzIGF2YWlsYWJsZSB1c2luZyA6ZGF0YTpgb3Muc3VwcG9ydHNfZmRgLgorICAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYC4KKwogICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKgorICAgICAgZm9yIDpmdW5jOmBleGVjdmVgLgogCiAuLiBmdW5jdGlvbjo6IF9leGl0KG4pCiAKQEAgLTE4MzYsNiArMjYxNiw4IEBACiAgICB3aWxsIGJlIHNldCB0byAqc2lnKi4gVGhlIFdpbmRvd3MgdmVyc2lvbiBvZiA6ZnVuYzpga2lsbGAgYWRkaXRpb25hbGx5IHRha2VzCiAgICBwcm9jZXNzIGhhbmRsZXMgdG8gYmUga2lsbGVkLgogCisgICBTZWUgYWxzbyA6ZnVuYzpgc2lnbmFsLnB0aHJlYWRfa2lsbGAuCisKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogICAgICAgV2luZG93cyBzdXBwb3J0LgogCkBAIC0yMDI2LDE0ICsyODA4LDMwIEBACiAKIC4uIGZ1bmN0aW9uOjogdGltZXMoKQogCi0gICBSZXR1cm4gYSA1LXR1cGxlIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW5kaWNhdGluZyBhY2N1bXVsYXRlZCAocHJvY2Vzc29yCi0gICBvciBvdGhlcikgdGltZXMsIGluIHNlY29uZHMuICBUaGUgaXRlbXMgYXJlOiB1c2VyIHRpbWUsIHN5c3RlbSB0aW1lLAotICAgY2hpbGRyZW4ncyB1c2VyIHRpbWUsIGNoaWxkcmVuJ3Mgc3lzdGVtIHRpbWUsIGFuZCBlbGFwc2VkIHJlYWwgdGltZSBzaW5jZSBhCi0gICBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdCwgaW4gdGhhdCBvcmRlci4gIFNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQotICAgOm1hbnBhZ2U6YHRpbWVzKDIpYCBvciB0aGUgY29ycmVzcG9uZGluZyBXaW5kb3dzIFBsYXRmb3JtIEFQSSBkb2N1bWVudGF0aW9uLgotICAgT24gV2luZG93cywgb25seSB0aGUgZmlyc3QgdHdvIGl0ZW1zIGFyZSBmaWxsZWQsIHRoZSBvdGhlcnMgYXJlIHplcm8uCisgICBSZXR1cm5zIHRoZSBjdXJyZW50IGdsb2JhbCBwcm9jZXNzIHRpbWVzLgorICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBmaXZlIGF0dHJpYnV0ZXM6CiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cworICAgKiA6YXR0cjpgdXNlcmAgLSB1c2VyIHRpbWUKKyAgICogOmF0dHI6YHN5c3RlbWAgLSBzeXN0ZW0gdGltZQorICAgKiA6YXR0cjpgY2hpbGRyZW5fdXNlcmAgLSB1c2VyIHRpbWUgb2YgYWxsIGNoaWxkIHByb2Nlc3NlcworICAgKiA6YXR0cjpgY2hpbGRyZW5fc3lzdGVtYCAtIHN5c3RlbSB0aW1lIG9mIGFsbCBjaGlsZCBwcm9jZXNzZXMKKyAgICogOmF0dHI6YGVsYXBzZWRgIC0gZWxhcHNlZCByZWFsIHRpbWUgc2luY2UgYSBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdAorCisgICBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoaXMgb2JqZWN0IGFsc28gYmVoYXZlcyBsaWtlIGEgZml2ZS10dXBsZQorICAgY29udGFpbmluZyA6YXR0cjpgdXNlcmAsIDphdHRyOmBzeXN0ZW1gLCA6YXR0cjpgY2hpbGRyZW5fdXNlcmAsCisgICA6YXR0cjpgY2hpbGRyZW5fc3lzdGVtYCwgYW5kIDphdHRyOmBlbGFwc2VkYCBpbiB0aGF0IG9yZGVyLgorCisgICBTZWUgdGhlIFVuaXggbWFudWFsIHBhZ2UKKyAgIDptYW5wYWdlOmB0aW1lcygyKWAgb3IgdGhlIGNvcnJlc3BvbmRpbmcgV2luZG93cyBQbGF0Zm9ybSBBUEkgZG9jdW1lbnRhdGlvbi4KKyAgIE9uIFdpbmRvd3MsIG9ubHkgOmF0dHI6YHVzZXJgIGFuZCA6YXR0cjpgc3lzdGVtYCBhcmUga25vd247IHRoZSBvdGhlcgorICAgYXR0cmlidXRlcyBhcmUgemVyby4KKyAgIE9uIE9TLzIsIG9ubHkgOmF0dHI6YGVsYXBzZWRgIGlzIGtub3duOyB0aGUgb3RoZXIgYXR0cmlidXRlcyBhcmUgemVyby4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LCBXaW5kb3dzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSB0dXBsZS1saWtlIG9iamVjdAorICAgICAgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzLgogCiAKIC4uIGZ1bmN0aW9uOjogd2FpdCgpCkBAIC0yMDQ2LDYgKzI4NDQsNTggQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisuLiBmdW5jdGlvbjo6IHdhaXRpZChpZHR5cGUsIGlkLCBvcHRpb25zKQorCisgICBXYWl0IGZvciB0aGUgY29tcGxldGlvbiBvZiBvbmUgb3IgbW9yZSBjaGlsZCBwcm9jZXNzZXMuCisgICAqaWR0eXBlKiBjYW4gYmUgOmRhdGE6YFBfUElEYCwgOmRhdGE6YFBfUEdJRGAgb3IgOmRhdGE6YFBfQUxMYC4KKyAgICppZCogc3BlY2lmaWVzIHRoZSBwaWQgdG8gd2FpdCBvbi4KKyAgICpvcHRpb25zKiBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBPUmluZyBvZiBvbmUgb3IgbW9yZSBvZiA6ZGF0YTpgV0VYSVRFRGAsCisgICA6ZGF0YTpgV1NUT1BQRURgIG9yIDpkYXRhOmBXQ09OVElOVUVEYCBhbmQgYWRkaXRpb25hbGx5IG1heSBiZSBPUmVkIHdpdGgKKyAgIDpkYXRhOmBXTk9IQU5HYCBvciA6ZGF0YTpgV05PV0FJVGAuIFRoZSByZXR1cm4gdmFsdWUgaXMgYW4gb2JqZWN0CisgICByZXByZXNlbnRpbmcgdGhlIGRhdGEgY29udGFpbmVkIGluIHRoZSA6Yzp0eXBlOmBzaWdpbmZvX3RgIHN0cnVjdHVyZSwgbmFtZWx5OgorICAgOmF0dHI6YHNpX3BpZGAsIDphdHRyOmBzaV91aWRgLCA6YXR0cjpgc2lfc2lnbm9gLCA6YXR0cjpgc2lfc3RhdHVzYCwKKyAgIDphdHRyOmBzaV9jb2RlYCBvciBgYE5vbmVgYCBpZiA6ZGF0YTpgV05PSEFOR2AgaXMgc3BlY2lmaWVkIGFuZCB0aGVyZSBhcmUgbm8KKyAgIGNoaWxkcmVuIGluIGEgd2FpdGFibGUgc3RhdGUuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBQX1BJRAorICAgICAgICAgIFBfUEdJRAorICAgICAgICAgIFBfQUxMCisKKyAgIFRoZXNlIGFyZSB0aGUgcG9zc2libGUgdmFsdWVzIGZvciAqaWR0eXBlKiBpbiA6ZnVuYzpgd2FpdGlkYC4gVGhleSBhZmZlY3QKKyAgIGhvdyAqaWQqIGlzIGludGVycHJldGVkLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogV0VYSVRFRAorICAgICAgICAgIFdTVE9QUEVECisgICAgICAgICAgV05PV0FJVAorCisgICBGbGFncyB0aGF0IGNhbiBiZSB1c2VkIGluICpvcHRpb25zKiBpbiA6ZnVuYzpgd2FpdGlkYCB0aGF0IHNwZWNpZnkgd2hhdAorICAgY2hpbGQgc2lnbmFsIHRvIHdhaXQgZm9yLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTERfRVhJVEVECisgICAgICAgICAgQ0xEX0RVTVBFRAorICAgICAgICAgIENMRF9UUkFQUEVECisgICAgICAgICAgQ0xEX0NPTlRJTlVFRAorCisgICBUaGVzZSBhcmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3IgOmF0dHI6YHNpX2NvZGVgIGluIHRoZSByZXN1bHQgcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmB3YWl0aWRgLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogd2FpdHBpZChwaWQsIG9wdGlvbnMpCiAKQEAgLTIxMTAsNyArMjk2MCw3IEBACiAgICBUaGlzIG9wdGlvbiBjYXVzZXMgY2hpbGQgcHJvY2Vzc2VzIHRvIGJlIHJlcG9ydGVkIGlmIHRoZXkgaGF2ZSBiZWVuIGNvbnRpbnVlZAogICAgZnJvbSBhIGpvYiBjb250cm9sIHN0b3Agc2luY2UgdGhlaXIgc3RhdHVzIHdhcyBsYXN0IHJlcG9ydGVkLgogCi0gICBBdmFpbGFiaWxpdHk6IFNvbWUgVW5peCBzeXN0ZW1zLgorICAgQXZhaWxhYmlsaXR5OiBzb21lIFVuaXggc3lzdGVtcy4KIAogCiAuLiBkYXRhOjogV1VOVFJBQ0VECkBAIC0yMTg3LDYgKzMwMzcsMTI5IEBACiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKIAorSW50ZXJmYWNlIHRvIHRoZSBzY2hlZHVsZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXNlIGZ1bmN0aW9ucyBjb250cm9sIGhvdyBhIHByb2Nlc3MgaXMgYWxsb2NhdGVkIENQVSB0aW1lIGJ5IHRoZSBvcGVyYXRpbmcKK3N5c3RlbS4gVGhleSBhcmUgb25seSBhdmFpbGFibGUgb24gc29tZSBVbml4IHBsYXRmb3Jtcy4gRm9yIG1vcmUgZGV0YWlsZWQKK2luZm9ybWF0aW9uLCBjb25zdWx0IHlvdXIgVW5peCBtYW5wYWdlcy4KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBmb2xsb3dpbmcgc2NoZWR1bGluZyBwb2xpY2llcyBhcmUgZXhwb3NlZCBpZiB0aGV5IGFyZSBhIHN1cHBvcnRlZCBieSB0aGUKK29wZXJhdGluZyBzeXN0ZW0uCisKKy4uIGRhdGE6OiBTQ0hFRF9PVEhFUgorCisgICBUaGUgZGVmYXVsdCBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX0JBVENICisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBDUFUtaW50ZW5zaXZlIHByb2Nlc3NlcyB0aGF0IHRyaWVzIHRvIHByZXNlcnZlCisgICBpbnRlcmFjdGl2aXR5IG9uIHRoZSByZXN0IG9mIHRoZSBjb21wdXRlci4KKworLi4gZGF0YTo6IFNDSEVEX0lETEUKKworICAgU2NoZWR1bGluZyBwb2xpY3kgZm9yIGV4dHJlbWVseSBsb3cgcHJpb3JpdHkgYmFja2dyb3VuZCB0YXNrcy4KKworLi4gZGF0YTo6IFNDSEVEX1NQT1JBRElDCisKKyAgIFNjaGVkdWxpbmcgcG9saWN5IGZvciBzcG9yYWRpYyBzZXJ2ZXIgcHJvZ3JhbXMuCisKKy4uIGRhdGE6OiBTQ0hFRF9GSUZPCisKKyAgIEEgRmlyc3QgSW4gRmlyc3QgT3V0IHNjaGVkdWxpbmcgcG9saWN5LgorCisuLiBkYXRhOjogU0NIRURfUlIKKworICAgQSByb3VuZC1yb2JpbiBzY2hlZHVsaW5nIHBvbGljeS4KKworLi4gZGF0YTo6IFNDSEVEX1JFU0VUX09OX0ZPUksKKworICAgVGhpcyBmbGFnIGNhbiBPUidlZCB3aXRoIGFueSBvdGhlciBzY2hlZHVsaW5nIHBvbGljeS4gV2hlbiBhIHByb2Nlc3Mgd2l0aAorICAgdGhpcyBmbGFnIHNldCBmb3JrcywgaXRzIGNoaWxkJ3Mgc2NoZWR1bGluZyBwb2xpY3kgYW5kIHByaW9yaXR5IGFyZSByZXNldCB0bworICAgdGhlIGRlZmF1bHQuCisKKworLi4gY2xhc3M6OiBzY2hlZF9wYXJhbShzY2hlZF9wcmlvcml0eSkKKworICAgVGhpcyBjbGFzcyByZXByZXNlbnRzIHR1bmFibGUgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIHVzZWQgaW4KKyAgIDpmdW5jOmBzY2hlZF9zZXRwYXJhbWAsIDpmdW5jOmBzY2hlZF9zZXRzY2hlZHVsZXJgLCBhbmQKKyAgIDpmdW5jOmBzY2hlZF9nZXRwYXJhbWAuIEl0IGlzIGltbXV0YWJsZS4KKworICAgQXQgdGhlIG1vbWVudCwgdGhlcmUgaXMgb25seSBvbmUgcG9zc2libGUgcGFyYW1ldGVyOgorCisgICAuLiBhdHRyaWJ1dGU6OiBzY2hlZF9wcmlvcml0eQorCisgICAgICBUaGUgc2NoZWR1bGluZyBwcmlvcml0eSBmb3IgYSBzY2hlZHVsaW5nIHBvbGljeS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9saWN5KQorCisgICBHZXQgdGhlIG1pbmltdW0gcHJpb3JpdHkgdmFsdWUgZm9yICpwb2xpY3kqLiAqcG9saWN5KiBpcyBvbmUgb2YgdGhlCisgICBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMgYWJvdmUuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSkKKworICAgR2V0IHRoZSBtYXhpbXVtIHByaW9yaXR5IHZhbHVlIGZvciAqcG9saWN5Ki4gKnBvbGljeSogaXMgb25lIG9mIHRoZQorICAgc2NoZWR1bGluZyBwb2xpY3kgY29uc3RhbnRzIGFib3ZlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfc2V0c2NoZWR1bGVyKHBpZCwgcG9saWN5LCBwYXJhbSkKKworICAgU2V0IHRoZSBzY2hlZHVsaW5nIHBvbGljeSBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucworICAgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gKnBvbGljeSogaXMgb25lIG9mIHRoZSBzY2hlZHVsaW5nIHBvbGljeSBjb25zdGFudHMKKyAgIGFib3ZlLiAqcGFyYW0qIGlzIGEgOmNsYXNzOmBzY2hlZF9wYXJhbWAgaW5zdGFuY2UuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRzY2hlZHVsZXIocGlkKQorCisgICBSZXR1cm4gdGhlIHNjaGVkdWxpbmcgcG9saWN5IGZvciB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi4gQSAqcGlkKiBvZiAwCisgICBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiBUaGUgcmVzdWx0IGlzIG9uZSBvZiB0aGUgc2NoZWR1bGluZyBwb2xpY3kKKyAgIGNvbnN0YW50cyBhYm92ZS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldHBhcmFtKHBpZCwgcGFyYW0pCisKKyAgIFNldCBhIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBmb3IgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucworICAgdGhlIGNhbGxpbmcgcHJvY2Vzcy4gKnBhcmFtKiBpcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfZ2V0cGFyYW0ocGlkKQorCisgICBSZXR1cm4gdGhlIHNjaGVkdWxpbmcgcGFyYW1ldGVycyBhcyBhIDpjbGFzczpgc2NoZWRfcGFyYW1gIGluc3RhbmNlIGZvciB0aGUKKyAgIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouIEEgKnBpZCogb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLgorCisKKy4uIGZ1bmN0aW9uOjogc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCkKKworICAgUmV0dXJuIHRoZSByb3VuZC1yb2JpbiBxdWFudHVtIGluIHNlY29uZHMgZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqLiBBCisgICAqcGlkKiBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF95aWVsZCgpCisKKyAgIFZvbHVudGFyaWx5IHJlbGlucXVpc2ggdGhlIENQVS4KKworCisuLiBmdW5jdGlvbjo6IHNjaGVkX3NldGFmZmluaXR5KHBpZCwgbWFzaykKKworICAgUmVzdHJpY3QgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MgaWYgemVybykgdG8gYQorICAgc2V0IG9mIENQVXMuICAqbWFzayogaXMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZSBzZXQgb2YKKyAgIENQVXMgdG8gd2hpY2ggdGhlIHByb2Nlc3Mgc2hvdWxkIGJlIHJlc3RyaWN0ZWQuCisKKworLi4gZnVuY3Rpb246OiBzY2hlZF9nZXRhZmZpbml0eShwaWQpCisKKyAgIFJldHVybiB0aGUgc2V0IG9mIENQVXMgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogKG9yIHRoZSBjdXJyZW50IHByb2Nlc3MKKyAgIGlmIHplcm8pIGlzIHJlc3RyaWN0ZWQgdG8uCisKKyAgIC4uIHNlZWFsc286OgorICAgICAgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnRgIHJldHVybnMgdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZQorICAgICAgc3lzdGVtLgorCisKIC4uIF9vcy1wYXRoOgogCiBNaXNjZWxsYW5lb3VzIFN5c3RlbSBJbmZvcm1hdGlvbgpAQCAtMjIxMSw3ICszMTg0LDcgQEAKICAgIGluY2x1ZGVkIGluIGBgY29uZnN0cl9uYW1lc2BgLCBhbiA6ZXhjOmBPU0Vycm9yYCBpcyByYWlzZWQgd2l0aAogICAgOmNvbnN0OmBlcnJuby5FSU5WQUxgIGZvciB0aGUgZXJyb3IgbnVtYmVyLgogCi0gICBBdmFpbGFiaWxpdHk6IFVuaXgKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAogCiAuLiBkYXRhOjogY29uZnN0cl9uYW1lcwpAQCAtMjMzMyw2ICszMzA2LDkgQEAKIAogICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHJhbmRvbSBieXRlcyBmcm9tIGFuIE9TLXNwZWNpZmljIHJhbmRvbW5lc3Mgc291cmNlLiAgVGhlCiAgICByZXR1cm5lZCBkYXRhIHNob3VsZCBiZSB1bnByZWRpY3RhYmxlIGVub3VnaCBmb3IgY3J5cHRvZ3JhcGhpYyBhcHBsaWNhdGlvbnMsCi0gICB0aG91Z2ggaXRzIGV4YWN0IHF1YWxpdHkgZGVwZW5kcyBvbiB0aGUgT1MgaW1wbGVtZW50YXRpb24uICBPbiBhIFVOSVgtbGlrZQorICAgdGhvdWdoIGl0cyBleGFjdCBxdWFsaXR5IGRlcGVuZHMgb24gdGhlIE9TIGltcGxlbWVudGF0aW9uLiAgT24gYSBVbml4LWxpa2UKICAgIHN5c3RlbSB0aGlzIHdpbGwgcXVlcnkgL2Rldi91cmFuZG9tLCBhbmQgb24gV2luZG93cyBpdCB3aWxsIHVzZSBDcnlwdEdlblJhbmRvbS4KICAgIElmIGEgcmFuZG9tbmVzcyBzb3VyY2UgaXMgbm90IGZvdW5kLCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB3aWxsIGJlIHJhaXNlZC4KKworICAgRm9yIGFuIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKKyAgIHByb3ZpZGVkIGJ5IHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdCBiL0RvYy9saWJyYXJ5L29zc2F1ZGlvZGV2LnJzdAppbmRleCBlZDg0NDEzLi4zMDAyNzAwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vc3NhdWRpb2Rldi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3NzYXVkaW9kZXYucnN0CkBAIC0zOCw2ICszOCwxMCBAQAogICAgVGhpcyBwcm9iYWJseSBhbGwgd2FycmFudHMgYSBmb290bm90ZSBvciB0d28sIGJ1dCBJIGRvbid0IHVuZGVyc3RhbmQKICAgIHRoaW5ncyB3ZWxsIGVub3VnaCByaWdodCBub3cgdG8gd3JpdGUgaXQhICAgLS1HUFcKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIE9wZXJhdGlvbnMgaW4gdGhpcyBtb2R1bGUgbm93IHJhaXNlIDpleGM6YE9TRXJyb3JgIHdoZXJlIDpleGM6YElPRXJyb3JgCisgICB3YXMgcmFpc2VkLgorCiAKIC4uIHNlZWFsc286OgogCkBAIC01Niw3ICs2MCw3IEBACiAgICB3aGF0IHdlbnQgd3JvbmcuCiAKICAgIChJZiA6bW9kOmBvc3NhdWRpb2RldmAgcmVjZWl2ZXMgYW4gZXJyb3IgZnJvbSBhIHN5c3RlbSBjYWxsIHN1Y2ggYXMKLSAgIDpjOmZ1bmM6YG9wZW5gLCA6YzpmdW5jOmB3cml0ZWAsIG9yIDpjOmZ1bmM6YGlvY3RsYCwgaXQgcmFpc2VzIDpleGM6YElPRXJyb3JgLgorICAgOmM6ZnVuYzpgb3BlbmAsIDpjOmZ1bmM6YHdyaXRlYCwgb3IgOmM6ZnVuYzpgaW9jdGxgLCBpdCByYWlzZXMgOmV4YzpgT1NFcnJvcmAuCiAgICBFcnJvcnMgZGV0ZWN0ZWQgZGlyZWN0bHkgYnkgOm1vZDpgb3NzYXVkaW9kZXZgIHJlc3VsdCBpbiA6ZXhjOmBPU1NBdWRpb0Vycm9yYC4pCiAKICAgIChGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBleGNlcHRpb24gY2xhc3MgaXMgYWxzbyBhdmFpbGFibGUgYXMKQEAgLTE2OSw3ICsxNzMsNyBAQAogY29ycmVzcG9uZGVuY2UgaXMgb2J2aW91czogZm9yIGV4YW1wbGUsIDptZXRoOmBzZXRmbXRgIGNvcnJlc3BvbmRzIHRvIHRoZQogYGBTTkRDVExfRFNQX1NFVEZNVGBgIGlvY3RsLCBhbmQgOm1ldGg6YHN5bmNgIHRvIGBgU05EQ1RMX0RTUF9TWU5DYGAgKHRoaXMgY2FuCiBiZSB1c2VmdWwgd2hlbiBjb25zdWx0aW5nIHRoZSBPU1MgZG9jdW1lbnRhdGlvbikuICBJZiB0aGUgdW5kZXJseWluZwotOmZ1bmM6YGlvY3RsYCBmYWlscywgdGhleSBhbGwgcmFpc2UgOmV4YzpgSU9FcnJvcmAuCis6ZnVuYzpgaW9jdGxgIGZhaWxzLCB0aGV5IGFsbCByYWlzZSA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfYXVkaW9fZGV2aWNlLm5vbmJsb2NrKCkKQEAgLTM0NSw3ICszNDksNyBAQAogLi4gbWV0aG9kOjogb3NzX21peGVyX2RldmljZS5jbG9zZSgpCiAKICAgIFRoaXMgbWV0aG9kIGNsb3NlcyB0aGUgb3BlbiBtaXhlciBkZXZpY2UgZmlsZS4gIEFueSBmdXJ0aGVyIGF0dGVtcHRzIHRvIHVzZSB0aGUKLSAgIG1peGVyIGFmdGVyIHRoaXMgZmlsZSBpcyBjbG9zZWQgd2lsbCByYWlzZSBhbiA6ZXhjOmBJT0Vycm9yYC4KKyAgIG1peGVyIGFmdGVyIHRoaXMgZmlsZSBpcyBjbG9zZWQgd2lsbCByYWlzZSBhbiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLmZpbGVubygpCkBAIC00MDQsNyArNDA4LDcgQEAKICAgIHJldHVybmVkLCBidXQgYm90aCB2b2x1bWVzIGFyZSB0aGUgc2FtZS4KIAogICAgUmFpc2VzIDpleGM6YE9TU0F1ZGlvRXJyb3JgIGlmIGFuIGludmFsaWQgY29udHJvbCB3YXMgaXMgc3BlY2lmaWVkLCBvcgotICAgOmV4YzpgSU9FcnJvcmAgaWYgYW4gdW5zdXBwb3J0ZWQgY29udHJvbCBpcyBzcGVjaWZpZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBpZiBhbiB1bnN1cHBvcnRlZCBjb250cm9sIGlzIHNwZWNpZmllZC4KIAogCiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLnNldChjb250cm9sLCAobGVmdCwgcmlnaHQpKQpAQCAtNDI4LDcgKzQzMiw3IEBACiAuLiBtZXRob2Q6OiBvc3NfbWl4ZXJfZGV2aWNlLnNldF9yZWNzcmMoYml0bWFzaykKIAogICAgQ2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHNwZWNpZnkgYSByZWNvcmRpbmcgc291cmNlLiAgUmV0dXJucyBhIGJpdG1hc2sgaW5kaWNhdGluZwotICAgdGhlIG5ldyByZWNvcmRpbmcgc291cmNlIChvciBzb3VyY2VzKSBpZiBzdWNjZXNzZnVsOyByYWlzZXMgOmV4YzpgSU9FcnJvcmAgaWYgYW4KKyAgIHRoZSBuZXcgcmVjb3JkaW5nIHNvdXJjZSAob3Igc291cmNlcykgaWYgc3VjY2Vzc2Z1bDsgcmFpc2VzIDpleGM6YE9TRXJyb3JgIGlmIGFuCiAgICBpbnZhbGlkIHNvdXJjZSB3YXMgc3BlY2lmaWVkLiAgVG8gc2V0IHRoZSBjdXJyZW50IHJlY29yZGluZyBzb3VyY2UgdG8gdGhlCiAgICBtaWNyb3Bob25lIGlucHV0OjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGRiLnJzdCBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKaW5kZXggMWU5ZGU2My4uZjRlMzdhYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGRiLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wZGIucnN0CkBAIC0zOCw2ICszOCwxMSBAQAogICAgPiA8c3RyaW5nPigxKT8oKQogICAgKFBkYikKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgOm1vZDpgcmVhZGxpbmVgIG1vZHVsZSBpcyBhdmFpbGFibGUgZm9yIGNvbW1hbmRzIGFuZAorICAgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lcyBhcmUgb2ZmZXJlZCBhcworICAgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC4KKwogOmZpbGU6YHBkYi5weWAgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLiAgRm9yCiBleGFtcGxlOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdCBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKaW5kZXggYTFmOWFmMi4uMjg3YTA4YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CkBAIC0yODcsNiArMjg3LDI5IEBACiAKICAgICAgIFNlZSA6cmVmOmBwaWNrbGUtcGVyc2lzdGVudGAgZm9yIGRldGFpbHMgYW5kIGV4YW1wbGVzIG9mIHVzZXMuCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IGRpc3BhdGNoX3RhYmxlCisKKyAgICAgIEEgcGlja2xlciBvYmplY3QncyBkaXNwYXRjaCB0YWJsZSBpcyBhIHJlZ2lzdHJ5IG9mICpyZWR1Y3Rpb24KKyAgICAgIGZ1bmN0aW9ucyogb2YgdGhlIGtpbmQgd2hpY2ggY2FuIGJlIGRlY2xhcmVkIHVzaW5nCisgICAgICA6ZnVuYzpgY29weXJlZy5waWNrbGVgLiAgSXQgaXMgYSBtYXBwaW5nIHdob3NlIGtleXMgYXJlIGNsYXNzZXMKKyAgICAgIGFuZCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjdGlvbiBmdW5jdGlvbnMuICBBIHJlZHVjdGlvbiBmdW5jdGlvbgorICAgICAgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgb2YgdGhlIGFzc29jaWF0ZWQgY2xhc3MgYW5kIHNob3VsZAorICAgICAgY29uZm9ybSB0byB0aGUgc2FtZSBpbnRlcmZhY2UgYXMgYSA6bWV0aDpgfm9iamVjdC5fX3JlZHVjZV9fYAorICAgICAgbWV0aG9kLgorCisgICAgICBCeSBkZWZhdWx0LCBhIHBpY2tsZXIgb2JqZWN0IHdpbGwgbm90IGhhdmUgYQorICAgICAgOmF0dHI6YGRpc3BhdGNoX3RhYmxlYCBhdHRyaWJ1dGUsIGFuZCBpdCB3aWxsIGluc3RlYWQgdXNlIHRoZQorICAgICAgZ2xvYmFsIGRpc3BhdGNoIHRhYmxlIG1hbmFnZWQgYnkgdGhlIDptb2Q6YGNvcHlyZWdgIG1vZHVsZS4KKyAgICAgIEhvd2V2ZXIsIHRvIGN1c3RvbWl6ZSB0aGUgcGlja2xpbmcgZm9yIGEgc3BlY2lmaWMgcGlja2xlciBvYmplY3QKKyAgICAgIG9uZSBjYW4gc2V0IHRoZSA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSB0byBhIGRpY3QtbGlrZQorICAgICAgb2JqZWN0LiAgQWx0ZXJuYXRpdmVseSwgaWYgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YFBpY2tsZXJgIGhhcyBhCisgICAgICA6YXR0cjpgZGlzcGF0Y2hfdGFibGVgIGF0dHJpYnV0ZSB0aGVuIHRoaXMgd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgICAgZGVmYXVsdCBkaXNwYXRjaCB0YWJsZSBmb3IgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MuCisKKyAgICAgIFNlZSA6cmVmOmBwaWNrbGUtZGlzcGF0Y2hgIGZvciB1c2FnZSBleGFtcGxlcy4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKICAgIC4uIGF0dHJpYnV0ZTo6IGZhc3QKIAogICAgICAgRGVwcmVjYXRlZC4gRW5hYmxlIGZhc3QgbW9kZSBpZiBzZXQgdG8gYSB0cnVlIHZhbHVlLiAgVGhlIGZhc3QgbW9kZQpAQCAtNTc3LDYgKzYwMCw0NCBAQAogCiAuLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2RicGlja2xlLnB5CiAKKy4uIF9waWNrbGUtZGlzcGF0Y2g6CisKK0Rpc3BhdGNoIFRhYmxlcworXl5eXl5eXl5eXl5eXl5eCisKK0lmIG9uZSB3YW50cyB0byBjdXN0b21pemUgcGlja2xpbmcgb2Ygc29tZSBjbGFzc2VzIHdpdGhvdXQgZGlzdHVyYmluZworYW55IG90aGVyIGNvZGUgd2hpY2ggZGVwZW5kcyBvbiBwaWNrbGluZywgdGhlbiBvbmUgY2FuIGNyZWF0ZSBhCitwaWNrbGVyIHdpdGggYSBwcml2YXRlIGRpc3BhdGNoIHRhYmxlLgorCitUaGUgZ2xvYmFsIGRpc3BhdGNoIHRhYmxlIG1hbmFnZWQgYnkgdGhlIDptb2Q6YGNvcHlyZWdgIG1vZHVsZSBpcworYXZhaWxhYmxlIGFzIDpkYXRhOmBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlYC4gIFRoZXJlZm9yZSwgb25lIG1heQorY2hvb3NlIHRvIHVzZSBhIG1vZGlmaWVkIGNvcHkgb2YgOmRhdGE6YGNvcHlyZWcuZGlzcGF0Y2hfdGFibGVgIGFzIGEKK3ByaXZhdGUgZGlzcGF0Y2ggdGFibGUuCisKK0ZvciBleGFtcGxlIDo6CisKKyAgIGYgPSBpby5CeXRlc0lPKCkKKyAgIHAgPSBwaWNrbGUuUGlja2xlcihmKQorICAgcC5kaXNwYXRjaF90YWJsZSA9IGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICBwLmRpc3BhdGNoX3RhYmxlW1NvbWVDbGFzc10gPSByZWR1Y2VfU29tZUNsYXNzCisKK2NyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgOmNsYXNzOmBwaWNrbGUuUGlja2xlcmAgd2l0aCBhIHByaXZhdGUgZGlzcGF0Y2gKK3RhYmxlIHdoaWNoIGhhbmRsZXMgdGhlIGBgU29tZUNsYXNzYGAgY2xhc3Mgc3BlY2lhbGx5LiAgQWx0ZXJuYXRpdmVseSwKK3RoZSBjb2RlIDo6CisKKyAgIGNsYXNzIE15UGlja2xlcihwaWNrbGUuUGlja2xlcik6CisgICAgICAgZGlzcGF0Y2hfdGFibGUgPSBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlLmNvcHkoKQorICAgICAgIGRpc3BhdGNoX3RhYmxlW1NvbWVDbGFzc10gPSByZWR1Y2VfU29tZUNsYXNzCisgICBmID0gaW8uQnl0ZXNJTygpCisgICBwID0gTXlQaWNrbGVyKGYpCisKK2RvZXMgdGhlIHNhbWUsIGJ1dCBhbGwgaW5zdGFuY2VzIG9mIGBgTXlQaWNrbGVyYGAgd2lsbCBieSBkZWZhdWx0CitzaGFyZSB0aGUgc2FtZSBkaXNwYXRjaCB0YWJsZS4gIFRoZSBlcXVpdmFsZW50IGNvZGUgdXNpbmcgdGhlCis6bW9kOmBjb3B5cmVnYCBtb2R1bGUgaXMgOjoKKworICAgY29weXJlZy5waWNrbGUoU29tZUNsYXNzLCByZWR1Y2VfU29tZUNsYXNzKQorICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgcCA9IHBpY2tsZS5QaWNrbGVyKGYpCiAKIC4uIF9waWNrbGUtc3RhdGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BrZ3V0aWwucnN0IGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKaW5kZXggMzExOGZmMi4uMjJkNDRlYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QKQEAgLTU2LDIxICs1NiwzMiBAQAogICAgTm90ZSB0aGF0IDpjbGFzczpgSW1wSW1wb3J0ZXJgIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IGJlaW5nIHVzZWQgYnkKICAgIHBsYWNlbWVudCBvbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisKIAogLi4gY2xhc3M6OiBJbXBMb2FkZXIoZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpCiAKICAgIDpwZXA6YDMwMmAgTG9hZGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0uCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKyAgICAgIFRoaXMgZW11bGF0aW9uIGlzIG5vIGxvbmdlciBuZWVkZWQsIGFzIHRoZSBzdGFuZGFyZCBpbXBvcnQgbWVjaGFuaXNtCisgICAgICBpcyBub3cgZnVsbHkgUEVQIDMwMiBjb21wbGlhbnQgYW5kIGF2YWlsYWJsZSBpbiA6bW9kOmBpbXBvcnRsaWJgCisKIAogLi4gZnVuY3Rpb246OiBmaW5kX2xvYWRlcihmdWxsbmFtZSkKIAotICAgRmluZCBhIDpwZXA6YDMwMmAgImxvYWRlciIgb2JqZWN0IGZvciAqZnVsbG5hbWUqLgorICAgUmV0cmlldmUgYSA6cGVwOmAzMDJgIG1vZHVsZSBsb2FkZXIgZm9yIHRoZSBnaXZlbiAqZnVsbG5hbWUqLgogCi0gICBJZiAqZnVsbG5hbWUqIGNvbnRhaW5zIGRvdHMsIHBhdGggbXVzdCBiZSB0aGUgY29udGFpbmluZyBwYWNrYWdlJ3MKLSAgIGBgX19wYXRoX19gYC4gIFJldHVybnMgYGBOb25lYGAgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuCi0gICBUaGlzIGZ1bmN0aW9uIHVzZXMgOmZ1bmM6YGl0ZXJfaW1wb3J0ZXJzYCwgYW5kIGlzIHRodXMgc3ViamVjdCB0byB0aGUgc2FtZQotICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoIGFzIHRoZQotICAgV2luZG93cyByZWdpc3RyeS4KKyAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYCB0aGF0CisgICBzZXRzIHRoZSAqcGF0aCogYXJndW1lbnQgY29ycmVjdGx5IHdoZW4gc2VhcmNoaW5nIGZvciBzdWJtb2R1bGVzLCBhbmQKKyAgIGFsc28gZW5zdXJlcyBwYXJlbnQgcGFja2FnZXMgKGlmIGFueSkgYXJlIGltcG9ydGVkIGJlZm9yZSBzZWFyY2hpbmcgZm9yCisgICBzdWJtb2R1bGVzLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVXBkYXRlZCB0byBiZSBiYXNlZCBkaXJlY3RseSBvbiA6bW9kOmBpbXBvcnRsaWJgIHJhdGhlciB0aGFuIHJlbHlpbmcKKyAgICAgIG9uIHRoZSBwYWNrYWdlIGludGVybmFsIFBFUCAzMDIgaW1wb3J0IGVtdWxhdGlvbi4KIAogCiAuLiBmdW5jdGlvbjo6IGdldF9pbXBvcnRlcihwYXRoX2l0ZW0pCkBAIC04MCwxMyArOTEsMTMgQEAKICAgIFRoZSByZXR1cm5lZCBpbXBvcnRlciBpcyBjYWNoZWQgaW4gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBpZiBpdCB3YXMKICAgIG5ld2x5IGNyZWF0ZWQgYnkgYSBwYXRoIGhvb2suCiAKLSAgIElmIHRoZXJlIGlzIG5vIGltcG9ydGVyLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBiYXNpYyBpbXBvcnQgbWFjaGluZXJ5IGlzCi0gICByZXR1cm5lZC4gIFRoaXMgd3JhcHBlciBpcyBuZXZlciBpbnNlcnRlZCBpbnRvIHRoZSBpbXBvcnRlciBjYWNoZSAoYGBOb25lYGAKLSAgIGlzIGluc2VydGVkIGluc3RlYWQpLgotCiAgICBUaGUgY2FjaGUgKG9yIHBhcnQgb2YgaXQpIGNhbiBiZSBjbGVhcmVkIG1hbnVhbGx5IGlmIGEgcmVzY2FuIG9mCiAgICA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGlzIG5lY2Vzc2FyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKQogCkBAIC0xMDIsNDYgKzExMyw1MiBAQAogICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoIGFzIHRoZQogICAgV2luZG93cyByZWdpc3RyeS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFVwZGF0ZWQgdG8gYmUgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiByZWx5aW5nCisgICAgICBvbiB0aGUgcGFja2FnZSBpbnRlcm5hbCBQRVAgMzAyIGltcG9ydCBlbXVsYXRpb24uCisKIAogLi4gZnVuY3Rpb246OiBpdGVyX2ltcG9ydGVycyhmdWxsbmFtZT0nJykKIAogICAgWWllbGQgOnBlcDpgMzAyYCBpbXBvcnRlcnMgZm9yIHRoZSBnaXZlbiBtb2R1bGUgbmFtZS4KIAotICAgSWYgZnVsbG5hbWUgY29udGFpbnMgYSAnLicsIHRoZSBpbXBvcnRlcnMgd2lsbCBiZSBmb3IgdGhlIHBhY2thZ2UgY29udGFpbmluZwotICAgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAsCi0gICA6ZGF0YTpgc3lzLnBhdGhgLCBhbmQgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBtYWNoaW5lcnksIGluIHRoYXQgb3JkZXIuICBJZgotICAgdGhlIG5hbWVkIG1vZHVsZSBpcyBpbiBhIHBhY2thZ2UsIHRoYXQgcGFja2FnZSBpcyBpbXBvcnRlZCBhcyBhIHNpZGUgZWZmZWN0Ci0gICBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgorICAgSWYgZnVsbG5hbWUgY29udGFpbnMgYSAnLicsIHRoZSBpbXBvcnRlcnMgd2lsbCBiZSBmb3IgdGhlIHBhY2thZ2UKKyAgIGNvbnRhaW5pbmcgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsIHJlZ2lzdGVyZWQgdG9wIGxldmVsCisgICBpbXBvcnRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCiAKLSAgIE5vbi06cGVwOmAzMDJgIG1lY2hhbmlzbXMgKGUuZy4gdGhlIFdpbmRvd3MgcmVnaXN0cnkpIHVzZWQgYnkgdGhlIHN0YW5kYXJkCi0gICBpbXBvcnQgbWFjaGluZXJ5IHRvIGZpbmQgZmlsZXMgaW4gYWx0ZXJuYXRpdmUgbG9jYXRpb25zIGFyZSBwYXJ0aWFsbHkKLSAgIHN1cHBvcnRlZCwgYnV0IGFyZSBzZWFyY2hlZCAqYWZ0ZXIqIDpkYXRhOmBzeXMucGF0aGAuICBOb3JtYWxseSwgdGhlc2UKLSAgIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgKmJlZm9yZSogOmRhdGE6YHN5cy5wYXRoYCwgcHJldmVudGluZyA6ZGF0YTpgc3lzLnBhdGhgCi0gICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCisgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQorICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCiAKLSAgIEZvciB0aGlzIHRvIGNhdXNlIGEgdmlzaWJsZSBkaWZmZXJlbmNlIGluIGJlaGF2aW91ciwgdGhlcmUgbXVzdCBiZSBhIG1vZHVsZQotICAgb3IgcGFja2FnZSBuYW1lIHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgYm90aCA6ZGF0YTpgc3lzLnBhdGhgIGFuZCBvbmUgb2YgdGhlCi0gICBub24tOnBlcDpgMzAyYCBmaWxlIHN5c3RlbSBtZWNoYW5pc21zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZW11bGF0aW9uIHdpbGwgZmluZAotICAgdGhlIGZvcm1lciB2ZXJzaW9uLCB3aGlsZSB0aGUgYnVpbHRpbiBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgorICAgSWYgbm8gbW9kdWxlIG5hbWUgaXMgc3BlY2lmaWVkLCBhbGwgdG9wIGxldmVsIGltcG9ydGVycyBhcmUgcHJvZHVjZWQuCiAKLSAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6Ci0gICBgYGltcC5DX0VYVEVOU0lPTmBgLCBgYGltcC5QWV9TT1VSQ0VgYCwgYGBpbXAuUFlfQ09NUElMRURgYCwKLSAgIGBgaW1wLlBLR19ESVJFQ1RPUllgYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgogCiAKIC4uIGZ1bmN0aW9uOjogaXRlcl9tb2R1bGVzKHBhdGg9Tm9uZSwgcHJlZml4PScnKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCisgICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCiAgICBwYXRoIGlzIGBgTm9uZWBgLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gYGBzeXMucGF0aGBgLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KIAogICAgKnByZWZpeCogaXMgYSBzdHJpbmcgdG8gb3V0cHV0IG9uIHRoZSBmcm9udCBvZiBldmVyeSBtb2R1bGUgbmFtZSBvbiBvdXRwdXQuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgT25seSB3b3JrcyBmb3IgYSA6dGVybTpgZmluZGVyYCB3aGljaCBkZWZpbmVzIGFuIGBgaXRlcl9tb2R1bGVzKClgYAorICAgICAgbWV0aG9kLiBUaGlzIGludGVyZmFjZSBpcyBub24tc3RhbmRhcmQsIHNvIHRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcworICAgICAgaW1wbGVtZW50YXRpb25zIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgYW5kCisgICAgICA6Y2xhc3M6YHppcGltcG9ydC56aXBpbXBvcnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCisgICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCiAgICAqcGF0aCosIG9yLCBpZiBwYXRoIGlzIGBgTm9uZWBgLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgogCiAgICAqcGF0aCogc2hvdWxkIGJlIGVpdGhlciBgYE5vbmVgYCBvciBhIGxpc3Qgb2YgcGF0aHMgdG8gbG9vayBmb3IgbW9kdWxlcyBpbi4KQEAgLTE2Niw2ICsxODMsMTYgQEAKICAgICAgICMgbGlzdCBhbGwgc3VibW9kdWxlcyBvZiBjdHlwZXMKICAgICAgIHdhbGtfcGFja2FnZXMoY3R5cGVzLl9fcGF0aF9fLCBjdHlwZXMuX19uYW1lX18gKyAnLicpCiAKKyAgIC4uIG5vdGU6OgorICAgICAgT25seSB3b3JrcyBmb3IgYSA6dGVybTpgZmluZGVyYCB3aGljaCBkZWZpbmVzIGFuIGBgaXRlcl9tb2R1bGVzKClgYAorICAgICAgbWV0aG9kLiBUaGlzIGludGVyZmFjZSBpcyBub24tc3RhbmRhcmQsIHNvIHRoZSBtb2R1bGUgYWxzbyBwcm92aWRlcworICAgICAgaW1wbGVtZW50YXRpb25zIGZvciA6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcmAgYW5kCisgICAgICA6Y2xhc3M6YHppcGltcG9ydC56aXBpbXBvcnRlcmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBVcGRhdGVkIHRvIGJlIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAgcmF0aGVyIHRoYW4gcmVseWluZworICAgICAgb24gdGhlIHBhY2thZ2UgaW50ZXJuYWwgUEVQIDMwMiBpbXBvcnQgZW11bGF0aW9uLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2RhdGEocGFja2FnZSwgcmVzb3VyY2UpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdCBiL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAppbmRleCAxNTdhYzNhLi5hNmE5OGYxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CkBAIC0zMCw4ICszMCw4IEBACiAgICByZXR1cm5lZCBhcyBzdHJpbmdzLgogCiAgICBWYWx1ZXMgdGhhdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhcmUgcmV0dXJuZWQgYXMgZ2l2ZW4gYnkgdGhlIHBhcmFtZXRlciBwcmVzZXRzLgotICAgSWYgYml0cyBpcyBnaXZlbiBhcyBgYCcnYGAsIHRoZSA6YzpmdW5jOmBzaXplb2YocG9pbnRlcilgIChvcgotICAgOmM6ZnVuYzpgc2l6ZW9mKGxvbmcpYCBvbiBQeXRob24gdmVyc2lvbiA8IDEuNS4yKSBpcyB1c2VkIGFzIGluZGljYXRvciBmb3IgdGhlCisgICBJZiBiaXRzIGlzIGdpdmVuIGFzIGBgJydgYCwgdGhlIGBgc2l6ZW9mKHBvaW50ZXIpYGAgKG9yCisgICBgYHNpemVvZihsb25nKWBgIG9uIFB5dGhvbiB2ZXJzaW9uIDwgMS41LjIpIGlzIHVzZWQgYXMgaW5kaWNhdG9yIGZvciB0aGUKICAgIHN1cHBvcnRlZCBwb2ludGVyIHNpemUuCiAKICAgIFRoZSBmdW5jdGlvbiByZWxpZXMgb24gdGhlIHN5c3RlbSdzIDpmaWxlOmBmaWxlYCBjb21tYW5kIHRvIGRvIHRoZSBhY3R1YWwgd29yay4KQEAgLTE1OCwxNCArMTU4LDIwIEBACiAKIC4uIGZ1bmN0aW9uOjogdW5hbWUoKQogCi0gICBGYWlybHkgcG9ydGFibGUgdW5hbWUgaW50ZXJmYWNlLiBSZXR1cm5zIGEgdHVwbGUgb2Ygc3RyaW5ncyBgYChzeXN0ZW0sIG5vZGUsCi0gICByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lLCBwcm9jZXNzb3IpYGAgaWRlbnRpZnlpbmcgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0uCisgICBGYWlybHkgcG9ydGFibGUgdW5hbWUgaW50ZXJmYWNlLiBSZXR1cm5zIGEgOmZ1bmM6YH5jb2xsZWN0aW9ucy5uYW1lZHR1cGxlYAorICAgY29udGFpbmluZyBzaXggYXR0cmlidXRlczogOmF0dHI6YHN5c3RlbWAsIDphdHRyOmBub2RlYCwgOmF0dHI6YHJlbGVhc2VgLAorICAgOmF0dHI6YHZlcnNpb25gLCA6YXR0cjpgbWFjaGluZWAsIGFuZCA6YXR0cjpgcHJvY2Vzc29yYC4KIAotICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmZ1bmM6YG9zLnVuYW1lYCBmdW5jdGlvbiB0aGlzIGFsc28gcmV0dXJucyBwb3NzaWJsZQotICAgcHJvY2Vzc29yIGluZm9ybWF0aW9uIGFzIGFkZGl0aW9uYWwgdHVwbGUgZW50cnkuCisgICBOb3RlIHRoYXQgdGhpcyBhZGRzIGEgc2l4dGggYXR0cmlidXRlICg6YXR0cjpgcHJvY2Vzc29yYCkgbm90IHByZXNlbnQKKyAgIGluIHRoZSA6ZnVuYzpgb3MudW5hbWVgIHJlc3VsdC4gIEFsc28sIHRoZSBhdHRyaWJ1dGUgbmFtZXMgYXJlIGRpZmZlcmVudAorICAgZm9yIHRoZSBmaXJzdCB0d28gYXR0cmlidXRlczsgOmZ1bmM6YG9zLnVuYW1lYCBuYW1lcyB0aGVtCisgICA6YXR0cjpgc3lzbmFtZWAgYW5kIDphdHRyOmBub2RlbmFtZWAuCiAKICAgIEVudHJpZXMgd2hpY2ggY2Fubm90IGJlIGRldGVybWluZWQgYXJlIHNldCB0byBgYCcnYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZXN1bHQgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8gYSBuYW1lZHR1cGxlLgorCiAKIEphdmEgUGxhdGZvcm0KIC0tLS0tLS0tLS0tLS0KQEAgLTIxNCw2ICsyMjAsMTAgQEAKICAgIHByZWZlcnJpbmcgOmZ1bmM6YHdpbjMycGlwZS5wb3BlbmAuICBPbiBXaW5kb3dzIE5ULCA6ZnVuYzpgd2luMzJwaXBlLnBvcGVuYAogICAgc2hvdWxkIHdvcms7IG9uIFdpbmRvd3MgOXggaXQgaGFuZ3MgZHVlIHRvIGJ1Z3MgaW4gdGhlIE1TIEMgbGlicmFyeS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiBpcyBvYnNvbGV0ZS4gIFVzZSB0aGUgOm1vZDpgc3VicHJvY2Vzc2AgbW9kdWxlLiAgQ2hlY2sKKyAgICAgIGVzcGVjaWFsbHkgdGhlIDpyZWY6YHN1YnByb2Nlc3MtcmVwbGFjZW1lbnRzYCBzZWN0aW9uLgorCiAKIE1hYyBPUyBQbGF0Zm9ybQogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCAxY2Q0ZDI2Li41NWM5ZDcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQzLDYgKzQzLDEyIEBACiB1c2VzIHRoZSBzeXN0ZW0gZnVuY3Rpb24gOmZ1bmM6YG9zLnVyYW5kb21gIHRvIGdlbmVyYXRlIHJhbmRvbSBudW1iZXJzCiBmcm9tIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCiAKKy4uIHdhcm5pbmc6OgorCisgICBUaGUgZ2VuZXJhdG9ycyBvZiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgc2hvdWxkIG5vdCBiZSB1c2VkIGZvciBzZWN1cml0eQorICAgcHVycG9zZXMuIFVzZSA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGlmIHlvdSByZXF1aXJlIGEgY3J5cHRvZ3JhcGhpY2FsbHkKKyAgIHNlY3VyZSBwc2V1ZG9yYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KKwogCiBCb29ra2VlcGluZyBmdW5jdGlvbnM6CiAKQEAgLTE0NSw2ICsxNTEsOSBAQAogICAgYXJndW1lbnQuICBUaGlzIGlzIGVzcGVjaWFsbHkgZmFzdCBhbmQgc3BhY2UgZWZmaWNpZW50IGZvciBzYW1wbGluZyBmcm9tIGEgbGFyZ2UKICAgIHBvcHVsYXRpb246ICBgYHNhbXBsZShyYW5nZSgxMDAwMDAwMCksIDYwKWBgLgogCisgICBJZiB0aGUgc2FtcGxlIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIHBvcHVsYXRpb24gc2l6ZSwgYSA6ZXhjOmBWYWx1ZUVycm9yYAorICAgaXMgcmFpc2VkLgorCiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBnZW5lcmF0ZSBzcGVjaWZpYyByZWFsLXZhbHVlZCBkaXN0cmlidXRpb25zLiBGdW5jdGlvbgogcGFyYW1ldGVycyBhcmUgbmFtZWQgYWZ0ZXIgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIGluIHRoZSBkaXN0cmlidXRpb24ncwogZXF1YXRpb24sIGFzIHVzZWQgaW4gY29tbW9uIG1hdGhlbWF0aWNhbCBwcmFjdGljZTsgbW9zdCBvZiB0aGVzZSBlcXVhdGlvbnMgY2FuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggODM5N2FhZC4uMDc2MjNjOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtNDE0LDE3ICs0MTQsMjQgQEAKIGFjY2VwdGVkIGJ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gcGFyc2VyOjoKIAogICAgXGEgICAgICBcYiAgICAgIFxmICAgICAgXG4KLSAgIFxyICAgICAgXHQgICAgICBcdiAgICAgIFx4Ci0gICBcXAorICAgXHIgICAgICBcdCAgICAgIFx1ICAgICAgXFUKKyAgIFx2ICAgICAgXHggICAgICBcXAogCiAoTm90ZSB0aGF0IGBgXGJgYCBpcyB1c2VkIHRvIHJlcHJlc2VudCB3b3JkIGJvdW5kYXJpZXMsIGFuZCBtZWFucyAiYmFja3NwYWNlIgogb25seSBpbnNpZGUgY2hhcmFjdGVyIGNsYXNzZXMuKQogCitgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBhcmUgb25seSByZWNvZ25pemVkIGluIFVuaWNvZGUKK3BhdHRlcm5zLiAgSW4gYnl0ZXMgcGF0dGVybnMgdGhleSBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LgorCiBPY3RhbCBlc2NhcGVzIGFyZSBpbmNsdWRlZCBpbiBhIGxpbWl0ZWQgZm9ybS4gIElmIHRoZSBmaXJzdCBkaWdpdCBpcyBhIDAsIG9yIGlmCiB0aGVyZSBhcmUgdGhyZWUgb2N0YWwgZGlnaXRzLCBpdCBpcyBjb25zaWRlcmVkIGFuIG9jdGFsIGVzY2FwZS4gT3RoZXJ3aXNlLCBpdCBpcwogYSBncm91cCByZWZlcmVuY2UuICBBcyBmb3Igc3RyaW5nIGxpdGVyYWxzLCBvY3RhbCBlc2NhcGVzIGFyZSBhbHdheXMgYXQgbW9zdAogdGhyZWUgZGlnaXRzIGluIGxlbmd0aC4KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBgYCdcdSdgYCBhbmQgYGAnXFUnYGAgZXNjYXBlIHNlcXVlbmNlcyBoYXZlIGJlZW4gYWRkZWQuCisKKwogCiAuLiBfY29udGVudHMtb2YtbW9kdWxlLXJlOgogCkBAIC02ODQsOSArNjkxLDEyIEBACiAKIC4uIGZ1bmN0aW9uOjogZXNjYXBlKHN0cmluZykKIAotICAgUmV0dXJuICpzdHJpbmcqIHdpdGggYWxsIG5vbi1hbHBoYW51bWVyaWNzIGJhY2tzbGFzaGVkOyB0aGlzIGlzIHVzZWZ1bCBpZiB5b3UKLSAgIHdhbnQgdG8gbWF0Y2ggYW4gYXJiaXRyYXJ5IGxpdGVyYWwgc3RyaW5nIHRoYXQgbWF5IGhhdmUgcmVndWxhciBleHByZXNzaW9uCi0gICBtZXRhY2hhcmFjdGVycyBpbiBpdC4KKyAgIEVzY2FwZSBhbGwgdGhlIGNoYXJhY3RlcnMgaW4gcGF0dGVybiBleGNlcHQgQVNDSUkgbGV0dGVycywgbnVtYmVycyBhbmQgYGAnXydgYC4KKyAgIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIG1hdGNoIGFuIGFyYml0cmFyeSBsaXRlcmFsIHN0cmluZyB0aGF0IG1heQorICAgaGF2ZSByZWd1bGFyIGV4cHJlc3Npb24gbWV0YWNoYXJhY3RlcnMgaW4gaXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgYGAnXydgYCBjaGFyYWN0ZXIgaXMgbm8gbG9uZ2VyIGVzY2FwZWQuCiAKIAogLi4gZnVuY3Rpb246OiBwdXJnZSgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QgYi9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKaW5kZXggYWI1NTE5Ny4uMTEzNDYxOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdApAQCAtMTk5LDcgKzE5OSw3IEBACiAgICBoaXN0ZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmV4cGFuZHVzZXIoIn4iKSwgIi5weWhpc3QiKQogICAgdHJ5OgogICAgICAgIHJlYWRsaW5lLnJlYWRfaGlzdG9yeV9maWxlKGhpc3RmaWxlKQotICAgZXhjZXB0IElPRXJyb3I6CisgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgcGFzcwogICAgaW1wb3J0IGF0ZXhpdAogICAgYXRleGl0LnJlZ2lzdGVyKHJlYWRsaW5lLndyaXRlX2hpc3RvcnlfZmlsZSwgaGlzdGZpbGUpCkBAIC0yMjQsNyArMjI0LDcgQEAKICAgICAgICAgICAgaWYgaGFzYXR0cihyZWFkbGluZSwgInJlYWRfaGlzdG9yeV9maWxlIik6CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoaGlzdGZpbGUpCi0gICAgICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICBhdGV4aXQucmVnaXN0ZXIoc2VsZi5zYXZlX2hpc3RvcnksIGhpc3RmaWxlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QgYi9Eb2MvbGlicmFyeS9yZXNvdXJjZS5yc3QKaW5kZXggYzE2YjAxMy4uMDNhN2NiNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmVzb3VyY2UucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Jlc291cmNlLnJzdApAQCAtMTQsMTMgKzE0LDE1IEBACiBTeW1ib2xpYyBjb25zdGFudHMgYXJlIHVzZWQgdG8gc3BlY2lmeSBwYXJ0aWN1bGFyIHN5c3RlbSByZXNvdXJjZXMgYW5kIHRvCiByZXF1ZXN0IHVzYWdlIGluZm9ybWF0aW9uIGFib3V0IGVpdGhlciB0aGUgY3VycmVudCBwcm9jZXNzIG9yIGl0cyBjaGlsZHJlbi4KIAotQSBzaW5nbGUgZXhjZXB0aW9uIGlzIGRlZmluZWQgZm9yIGVycm9yczoKK0FuIDpleGM6YE9TRXJyb3JgIGlzIHJhaXNlZCBvbiBzeXNjYWxsIGZhaWx1cmUuCiAKIAogLi4gZXhjZXB0aW9uOjogZXJyb3IKIAotICAgVGhlIGZ1bmN0aW9ucyBkZXNjcmliZWQgYmVsb3cgbWF5IHJhaXNlIHRoaXMgZXJyb3IgaWYgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGwKLSAgIGZhaWx1cmVzIHVuZXhwZWN0ZWRseS4KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEZvbGxvd2luZyA6cGVwOmAzMTUxYCwgdGhpcyBjbGFzcyB3YXMgbWFkZSBhbiBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiBSZXNvdXJjZSBMaW1pdHMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NjaGVkLnJzdCBiL0RvYy9saWJyYXJ5L3NjaGVkLnJzdAppbmRleCAwMDBkYmEwLi5kNmM4NmM3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2NoZWQucnN0CkBAIC0xNCw3ICsxNCw3IEBACiBUaGUgOm1vZDpgc2NoZWRgIG1vZHVsZSBkZWZpbmVzIGEgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBhIGdlbmVyYWwgcHVycG9zZSBldmVudAogc2NoZWR1bGVyOgogCi0uLiBjbGFzczo6IHNjaGVkdWxlcih0aW1lZnVuYywgZGVsYXlmdW5jKQorLi4gY2xhc3M6OiBzY2hlZHVsZXIodGltZWZ1bmM9dGltZS50aW1lLCBkZWxheWZ1bmM9dGltZS5zbGVlcCkKIAogICAgVGhlIDpjbGFzczpgc2NoZWR1bGVyYCBjbGFzcyBkZWZpbmVzIGEgZ2VuZXJpYyBpbnRlcmZhY2UgdG8gc2NoZWR1bGluZyBldmVudHMuCiAgICBJdCBuZWVkcyB0d28gZnVuY3Rpb25zIHRvIGFjdHVhbGx5IGRlYWwgd2l0aCB0aGUgIm91dHNpZGUgd29ybGQiIC0tLSAqdGltZWZ1bmMqCkBAIC0yNSw2ICsyNSwxMiBAQAogICAgZXZlbnQgaXMgcnVuIHRvIGFsbG93IG90aGVyIHRocmVhZHMgYW4gb3Bwb3J0dW5pdHkgdG8gcnVuIGluIG11bHRpLXRocmVhZGVkCiAgICBhcHBsaWNhdGlvbnMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZWZ1bmMqIGFuZCAqZGVsYXlmdW5jKiBwYXJhbWV0ZXJzIGFyZSBvcHRpb25hbC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6Y2xhc3M6YHNjaGVkdWxlcmAgY2xhc3MgY2FuIGJlIHNhZmVseSB1c2VkIGluIG11bHRpLXRocmVhZGVkCisgICAgICBlbnZpcm9ubWVudHMuCisKIEV4YW1wbGU6OgogCiAgICA+Pj4gaW1wb3J0IHNjaGVkLCB0aW1lCkBAIC00NCwzMyArNTAsNiBAQAogICAgRnJvbSBwcmludF90aW1lIDkzMDM0MzcwMC4yNzMKICAgIDkzMDM0MzcwMC4yNzYKIAotSW4gbXVsdGktdGhyZWFkZWQgZW52aXJvbm1lbnRzLCB0aGUgOmNsYXNzOmBzY2hlZHVsZXJgIGNsYXNzIGhhcyBsaW1pdGF0aW9ucwotd2l0aCByZXNwZWN0IHRvIHRocmVhZC1zYWZldHksIGluYWJpbGl0eSB0byBpbnNlcnQgYSBuZXcgdGFzayBiZWZvcmUKLXRoZSBvbmUgY3VycmVudGx5IHBlbmRpbmcgaW4gYSBydW5uaW5nIHNjaGVkdWxlciwgYW5kIGhvbGRpbmcgdXAgdGhlIG1haW4KLXRocmVhZCB1bnRpbCB0aGUgZXZlbnQgcXVldWUgaXMgZW1wdHkuICBJbnN0ZWFkLCB0aGUgcHJlZmVycmVkIGFwcHJvYWNoCi1pcyB0byB1c2UgdGhlIDpjbGFzczpgdGhyZWFkaW5nLlRpbWVyYCBjbGFzcyBpbnN0ZWFkLgotCi1FeGFtcGxlOjoKLQotICAgID4+PiBpbXBvcnQgdGltZQotICAgID4+PiBmcm9tIHRocmVhZGluZyBpbXBvcnQgVGltZXIKLSAgICA+Pj4gZGVmIHByaW50X3RpbWUoKToKLSAgICAuLi4gICAgIHByaW50KCJGcm9tIHByaW50X3RpbWUiLCB0aW1lLnRpbWUoKSkKLSAgICAuLi4KLSAgICA+Pj4gZGVmIHByaW50X3NvbWVfdGltZXMoKToKLSAgICAuLi4gICAgIHByaW50KHRpbWUudGltZSgpKQotICAgIC4uLiAgICAgVGltZXIoNSwgcHJpbnRfdGltZSwgKCkpLnN0YXJ0KCkKLSAgICAuLi4gICAgIFRpbWVyKDEwLCBwcmludF90aW1lLCAoKSkuc3RhcnQoKQotICAgIC4uLiAgICAgdGltZS5zbGVlcCgxMSkgICMgc2xlZXAgd2hpbGUgdGltZS1kZWxheSBldmVudHMgZXhlY3V0ZQotICAgIC4uLiAgICAgcHJpbnQodGltZS50aW1lKCkpCi0gICAgLi4uCi0gICAgPj4+IHByaW50X3NvbWVfdGltZXMoKQotICAgIDkzMDM0MzY5MC4yNTcKLSAgICBGcm9tIHByaW50X3RpbWUgOTMwMzQzNjk1LjI3NAotICAgIEZyb20gcHJpbnRfdGltZSA5MzAzNDM3MDAuMjczCi0gICAgOTMwMzQzNzAxLjMwMQotCi0KIC4uIF9zY2hlZHVsZXItb2JqZWN0czoKIAogU2NoZWR1bGVyIE9iamVjdHMKQEAgLTc5LDI2ICs1OCwzOCBAQAogOmNsYXNzOmBzY2hlZHVsZXJgIGluc3RhbmNlcyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlczoKIAogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisuLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9W10sIGt3YXJncz17fSkKIAogICAgU2NoZWR1bGUgYSBuZXcgZXZlbnQuIFRoZSAqdGltZSogYXJndW1lbnQgc2hvdWxkIGJlIGEgbnVtZXJpYyB0eXBlIGNvbXBhdGlibGUKICAgIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgKnRpbWVmdW5jKiBmdW5jdGlvbiBwYXNzZWQgIHRvIHRoZSBjb25zdHJ1Y3Rvci4KICAgIEV2ZW50cyBzY2hlZHVsZWQgZm9yIHRoZSBzYW1lICp0aW1lKiB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciBvZiB0aGVpcgogICAgKnByaW9yaXR5Ki4KIAotICAgRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcgYGBhY3Rpb24oKmFyZ3VtZW50KWBgLiAgKmFyZ3VtZW50KiBtdXN0IGJlIGEKLSAgIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMgZm9yICphY3Rpb24qLgorICAgRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcgYGBhY3Rpb24oKmFyZ3VtZW50LCAqKmt3YXJncylgYC4KKyAgICphcmd1bWVudCogbXVzdCBiZSBhIHNlcXVlbmNlIGhvbGRpbmcgdGhlIHBhcmFtZXRlcnMgZm9yICphY3Rpb24qLgorICAgKmt3YXJncyogbXVzdCBiZSBhIGRpY3Rpb25hcnkgaG9sZGluZyB0aGUga2V5d29yZCBwYXJhbWV0ZXJzIGZvciAqYWN0aW9uKi4KIAogICAgUmV0dXJuIHZhbHVlIGlzIGFuIGV2ZW50IHdoaWNoIG1heSBiZSB1c2VkIGZvciBsYXRlciBjYW5jZWxsYXRpb24gb2YgdGhlIGV2ZW50CiAgICAoc2VlIDptZXRoOmBjYW5jZWxgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICphcmd1bWVudCogcGFyYW1ldGVyIGlzIG9wdGlvbmFsLgogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIuZW50ZXIoZGVsYXksIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50KQorICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCisKKy4uIG1ldGhvZDo6IHNjaGVkdWxlci5lbnRlcihkZWxheSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQ9W10sIGt3YXJncz17fSkKIAogICAgU2NoZWR1bGUgYW4gZXZlbnQgZm9yICpkZWxheSogbW9yZSB0aW1lIHVuaXRzLiBPdGhlciB0aGFuIHRoZSByZWxhdGl2ZSB0aW1lLCB0aGUKICAgIG90aGVyIGFyZ3VtZW50cywgdGhlIGVmZmVjdCBhbmQgdGhlIHJldHVybiB2YWx1ZSBhcmUgdGhlIHNhbWUgYXMgdGhvc2UgZm9yCiAgICA6bWV0aDpgZW50ZXJhYnNgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmFyZ3VtZW50KiBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgKmt3YXJncyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gbWV0aG9kOjogc2NoZWR1bGVyLmNhbmNlbChldmVudCkKIApAQCAtMTExLDEyICsxMDIsMTYgQEAKICAgIFJldHVybiB0cnVlIGlmIHRoZSBldmVudCBxdWV1ZSBpcyBlbXB0eS4KIAogCi0uLiBtZXRob2Q6OiBzY2hlZHVsZXIucnVuKCkKKy4uIG1ldGhvZDo6IHNjaGVkdWxlci5ydW4oYmxvY2tpbmc9VHJ1ZSkKIAotICAgUnVuIGFsbCBzY2hlZHVsZWQgZXZlbnRzLiBUaGlzIGZ1bmN0aW9uIHdpbGwgd2FpdCAgKHVzaW5nIHRoZSA6ZnVuYzpgZGVsYXlmdW5jYAorICAgUnVuIGFsbCBzY2hlZHVsZWQgZXZlbnRzLiBUaGlzIG1ldGhvZCB3aWxsIHdhaXQgICh1c2luZyB0aGUgOmZ1bmM6YGRlbGF5ZnVuY2AKICAgIGZ1bmN0aW9uIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IpIGZvciB0aGUgbmV4dCBldmVudCwgdGhlbiBleGVjdXRlIGl0IGFuZCBzbwogICAgb24gdW50aWwgdGhlcmUgYXJlIG5vIG1vcmUgc2NoZWR1bGVkIGV2ZW50cy4KIAorICAgSWYgKmJsb2NraW5nKiBpcyBGYWxzZSBleGVjdXRlcyB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlIHNvb25lc3QKKyAgIChpZiBhbnkpIGFuZCB0aGVuIHJldHVybiB0aGUgZGVhZGxpbmUgb2YgdGhlIG5leHQgc2NoZWR1bGVkIGNhbGwgaW4gdGhlCisgICBzY2hlZHVsZXIgKGlmIGFueSkuCisKICAgIEVpdGhlciAqYWN0aW9uKiBvciAqZGVsYXlmdW5jKiBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uLiAgSW4gZWl0aGVyIGNhc2UsIHRoZQogICAgc2NoZWR1bGVyIHdpbGwgbWFpbnRhaW4gYSBjb25zaXN0ZW50IHN0YXRlIGFuZCBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbi4gIElmIGFuCiAgICBleGNlcHRpb24gaXMgcmFpc2VkIGJ5ICphY3Rpb24qLCB0aGUgZXZlbnQgd2lsbCBub3QgYmUgYXR0ZW1wdGVkIGluIGZ1dHVyZSBjYWxscwpAQCAtMTI3LDYgKzEyMiw5IEBACiAgICB0aGUgY2FsbGluZyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBjYW5jZWxpbmcgIGV2ZW50cyB3aGljaCBhcmUgbm8gbG9uZ2VyCiAgICBwZXJ0aW5lbnQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgKmJsb2NraW5nKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgorCiAuLiBhdHRyaWJ1dGU6OiBzY2hlZHVsZXIucXVldWUKIAogICAgUmVhZC1vbmx5IGF0dHJpYnV0ZSByZXR1cm5pbmcgYSBsaXN0IG9mIHVwY29taW5nIGV2ZW50cyBpbiB0aGUgb3JkZXIgdGhleQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdCBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKaW5kZXggYTQ1MGVjMi4uNGU2MGY0YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CkBAIC02LDcgKzYsOCBAQAogCiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgOmM6ZnVuYzpgc2VsZWN0YCBhbmQgOmM6ZnVuYzpgcG9sbGAgZnVuY3Rpb25zCi1hdmFpbGFibGUgaW4gbW9zdCBvcGVyYXRpbmcgc3lzdGVtcywgOmM6ZnVuYzpgZXBvbGxgIGF2YWlsYWJsZSBvbiBMaW51eCAyLjUrIGFuZAorYXZhaWxhYmxlIGluIG1vc3Qgb3BlcmF0aW5nIHN5c3RlbXMsIDpjOmZ1bmM6YGRldnBvbGxgIGF2YWlsYWJsZSBvbgorU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMsIDpjOmZ1bmM6YGVwb2xsYCBhdmFpbGFibGUgb24gTGludXggMi41KyBhbmQKIDpjOmZ1bmM6YGtxdWV1ZWAgYXZhaWxhYmxlIG9uIG1vc3QgQlNELgogTm90ZSB0aGF0IG9uIFdpbmRvd3MsIGl0IG9ubHkgd29ya3MgZm9yIHNvY2tldHM7IG9uIG90aGVyIG9wZXJhdGluZyBzeXN0ZW1zLAogaXQgYWxzbyB3b3JrcyBmb3Igb3RoZXIgZmlsZSB0eXBlcyAoaW4gcGFydGljdWxhciwgb24gVW5peCwgaXQgd29ya3Mgb24gcGlwZXMpLgpAQCAtMTgsMTcgKzE5LDM4IEBACiAKIC4uIGV4Y2VwdGlvbjo6IGVycm9yCiAKLSAgIFRoZSBleGNlcHRpb24gcmFpc2VkIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIKLSAgIGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgZXJyb3IgY29kZSBmcm9tIDpjOmRhdGE6YGVycm5vYCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKLSAgIHN0cmluZywgYXMgd291bGQgYmUgcHJpbnRlZCBieSB0aGUgQyBmdW5jdGlvbiA6YzpmdW5jOmBwZXJyb3JgLgorICAgQSBkZXByZWNhdGVkIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKLS4uIGZ1bmN0aW9uOjogZXBvbGwoc2l6ZWhpbnQ9LTEpCisuLiBmdW5jdGlvbjo6IGRldnBvbGwoKQogCi0gICAoT25seSBzdXBwb3J0ZWQgb24gTGludXggMi41LjQ0IGFuZCBuZXdlci4pICBSZXR1cm5zIGFuIGVkZ2UgcG9sbGluZyBvYmplY3QsCi0gICB3aGljaCBjYW4gYmUgdXNlZCBhcyBFZGdlIG9yIExldmVsIFRyaWdnZXJlZCBpbnRlcmZhY2UgZm9yIEkvTyBldmVudHM7IHNlZQotICAgc2VjdGlvbiA6cmVmOmBlcG9sbC1vYmplY3RzYCBiZWxvdyBmb3IgdGhlIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IGVwb2xsaW5nCi0gICBvYmplY3RzLgorICAgKE9ubHkgc3VwcG9ydGVkIG9uIFNvbGFyaXMgYW5kIGRlcml2YXRpdmVzLikgIFJldHVybnMgYSBgYC9kZXYvcG9sbGBgCisgICBwb2xsaW5nIG9iamVjdDsgc2VlIHNlY3Rpb24gOnJlZjpgZGV2cG9sbC1vYmplY3RzYCBiZWxvdyBmb3IgdGhlCisgICBtZXRob2RzIHN1cHBvcnRlZCBieSBkZXZwb2xsIG9iamVjdHMuCisKKyAgIDpjOmZ1bmM6YGRldnBvbGxgIG9iamVjdHMgYXJlIGxpbmtlZCB0byB0aGUgbnVtYmVyIG9mIGZpbGUKKyAgIGRlc2NyaXB0b3JzIGFsbG93ZWQgYXQgdGhlIHRpbWUgb2YgaW5zdGFudGlhdGlvbi4gSWYgeW91ciBwcm9ncmFtCisgICByZWR1Y2VzIHRoaXMgdmFsdWUsIDpjOmZ1bmM6YGRldnBvbGxgIHdpbGwgZmFpbC4gSWYgeW91ciBwcm9ncmFtCisgICBpbmNyZWFzZXMgdGhpcyB2YWx1ZSwgOmM6ZnVuYzpgZGV2cG9sbGAgbWF5IHJldHVybiBhbgorICAgaW5jb21wbGV0ZSBsaXN0IG9mIGFjdGl2ZSBmaWxlIGRlc2NyaXB0b3JzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBlcG9sbChzaXplaGludD0tMSwgZmxhZ3M9MCkKKworICAgKE9ubHkgc3VwcG9ydGVkIG9uIExpbnV4IDIuNS40NCBhbmQgbmV3ZXIuKSBSZXR1cm4gYW4gZWRnZSBwb2xsaW5nIG9iamVjdCwKKyAgIHdoaWNoIGNhbiBiZSB1c2VkIGFzIEVkZ2Ugb3IgTGV2ZWwgVHJpZ2dlcmVkIGludGVyZmFjZSBmb3IgSS9PCisgICBldmVudHMuICpzaXplaGludCogaXMgZGVwcmVjYXRlZCBhbmQgY29tcGxldGVseSBpZ25vcmVkLiAqZmxhZ3MqIGNhbiBiZSBzZXQKKyAgIHRvIDpjb25zdDpgRVBPTExfQ0xPRVhFQ2AsIHdoaWNoIGNhdXNlcyB0aGUgZXBvbGwgZGVzY3JpcHRvciB0byBiZSBjbG9zZWQKKyAgIGF1dG9tYXRpY2FsbHkgd2hlbiA6ZnVuYzpgb3MuZXhlY3ZlYCBpcyBjYWxsZWQuIFNlZSBzZWN0aW9uCisgICA6cmVmOmBlcG9sbC1vYmplY3RzYCBiZWxvdyBmb3IgdGhlIG1ldGhvZHMgc3VwcG9ydGVkIGJ5IGVwb2xsaW5nIG9iamVjdHMuCisKKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZmxhZ3MqIHBhcmFtZXRlci4KIAogCiAuLiBmdW5jdGlvbjo6IHBvbGwoKQpAQCAtMTA2LDYgKzEyOCw3NCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAorLi4gX2RldnBvbGwtb2JqZWN0czoKKworYGAvZGV2L3BvbGxgYCBQb2xsaW5nIE9iamVjdHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgaHR0cDovL2RldmVsb3BlcnMuc3VuLmNvbS9zb2xhcmlzL2FydGljbGVzL3VzaW5nX2RldnBvbGwuaHRtbAorICAgaHR0cDovL2RldmVsb3BlcnMuc3VuLmNvbS9zb2xhcmlzL2FydGljbGVzL3BvbGxpbmdfZWZmaWNpZW50Lmh0bWwKKworU29sYXJpcyBhbmQgZGVyaXZhdGl2ZXMgaGF2ZSBgYC9kZXYvcG9sbGBgLiBXaGlsZSA6YzpmdW5jOmBzZWxlY3RgIGlzCitPKGhpZ2hlc3QgZmlsZSBkZXNjcmlwdG9yKSBhbmQgOmM6ZnVuYzpgcG9sbGAgaXMgTyhudW1iZXIgb2YgZmlsZQorZGVzY3JpcHRvcnMpLCBgYC9kZXYvcG9sbGBgIGlzIE8oYWN0aXZlIGZpbGUgZGVzY3JpcHRvcnMpLgorCitgYC9kZXYvcG9sbGBgIGJlaGF2aW91ciBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBzdGFuZGFyZCA6YzpmdW5jOmBwb2xsYAorb2JqZWN0LgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwucmVnaXN0ZXIoZmRbLCBldmVudG1hc2tdKQorCisgICBSZWdpc3RlciBhIGZpbGUgZGVzY3JpcHRvciB3aXRoIHRoZSBwb2xsaW5nIG9iamVjdC4gIEZ1dHVyZSBjYWxscyB0byB0aGUKKyAgIDptZXRoOmBwb2xsYCBtZXRob2Qgd2lsbCB0aGVuIGNoZWNrIHdoZXRoZXIgdGhlIGZpbGUgZGVzY3JpcHRvciBoYXMgYW55IHBlbmRpbmcKKyAgIEkvTyBldmVudHMuICAqZmQqIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IHdpdGggYSA6bWV0aDpgZmlsZW5vYAorICAgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnRlZ2VyLiAgRmlsZSBvYmplY3RzIGltcGxlbWVudCA6bWV0aDpgZmlsZW5vYCwgc28gdGhleQorICAgY2FuIGFsc28gYmUgdXNlZCBhcyB0aGUgYXJndW1lbnQuCisKKyAgICpldmVudG1hc2sqIGlzIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgeW91IHdhbnQgdG8KKyAgIGNoZWNrIGZvci4gVGhlIGNvbnN0YW50cyBhcmUgdGhlIHNhbWUgdGhhdCB3aXRoIDpjOmZ1bmM6YHBvbGxgCisgICBvYmplY3QuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGEgY29tYmluYXRpb24gb2YgdGhlIGNvbnN0YW50cyA6Y29uc3Q6YFBPTExJTmAsCisgICA6Y29uc3Q6YFBPTExQUklgLCBhbmQgOmNvbnN0OmBQT0xMT1VUYC4KKworICAgLi4gd2FybmluZzo6CisKKyAgICAgIFJlZ2lzdGVyaW5nIGEgZmlsZSBkZXNjcmlwdG9yIHRoYXQncyBhbHJlYWR5IHJlZ2lzdGVyZWQgaXMgbm90IGFuCisgICAgICBlcnJvciwgYnV0IHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLiBUaGUgYXBwcm9waWF0ZSBhY3Rpb24gaXMgdG8KKyAgICAgIHVucmVnaXN0ZXIgb3IgbW9kaWZ5IGl0IGZpcnN0LiBUaGlzIGlzIGFuIGltcG9ydGFudCBkaWZmZXJlbmNlCisgICAgICBjb21wYXJlZCB3aXRoIDpjOmZ1bmM6YHBvbGxgLgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwubW9kaWZ5KGZkWywgZXZlbnRtYXNrXSkKKworICAgVGhpcyBtZXRob2QgZG9lcyBhbiA6bWV0aDpgdW5yZWdpc3RlcmAgZm9sbG93ZWQgYnkgYQorICAgOm1ldGg6YHJlZ2lzdGVyYC4gSXQgaXMgKGEgYml0KSBtb3JlIGVmZmljaWVudCB0aGF0IGRvaW5nIHRoZSBzYW1lCisgICBleHBsaWNpdGx5LgorCisKKy4uIG1ldGhvZDo6IGRldnBvbGwudW5yZWdpc3RlcihmZCkKKworICAgUmVtb3ZlIGEgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRyYWNrZWQgYnkgYSBwb2xsaW5nIG9iamVjdC4gIEp1c3QgbGlrZSB0aGUKKyAgIDptZXRoOmByZWdpc3RlcmAgbWV0aG9kLCAqZmQqIGNhbiBiZSBhbiBpbnRlZ2VyIG9yIGFuIG9iamVjdCB3aXRoIGEKKyAgIDptZXRoOmBmaWxlbm9gIG1ldGhvZCB0aGF0IHJldHVybnMgYW4gaW50ZWdlci4KKworICAgQXR0ZW1wdGluZyB0byByZW1vdmUgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCBpcworICAgc2FmZWx5IGlnbm9yZWQuCisKKworLi4gbWV0aG9kOjogZGV2cG9sbC5wb2xsKFt0aW1lb3V0XSkKKworICAgUG9sbHMgdGhlIHNldCBvZiByZWdpc3RlcmVkIGZpbGUgZGVzY3JpcHRvcnMsIGFuZCByZXR1cm5zIGEgcG9zc2libHktZW1wdHkgbGlzdAorICAgY29udGFpbmluZyBgYChmZCwgZXZlbnQpYGAgMi10dXBsZXMgZm9yIHRoZSBkZXNjcmlwdG9ycyB0aGF0IGhhdmUgZXZlbnRzIG9yCisgICBlcnJvcnMgdG8gcmVwb3J0LiAqZmQqIGlzIHRoZSBmaWxlIGRlc2NyaXB0b3IsIGFuZCAqZXZlbnQqIGlzIGEgYml0bWFzayB3aXRoCisgICBiaXRzIHNldCBmb3IgdGhlIHJlcG9ydGVkIGV2ZW50cyBmb3IgdGhhdCBkZXNjcmlwdG9yIC0tLSA6Y29uc3Q6YFBPTExJTmAgZm9yCisgICB3YWl0aW5nIGlucHV0LCA6Y29uc3Q6YFBPTExPVVRgIHRvIGluZGljYXRlIHRoYXQgdGhlIGRlc2NyaXB0b3IgY2FuIGJlIHdyaXR0ZW4KKyAgIHRvLCBhbmQgc28gZm9ydGguIEFuIGVtcHR5IGxpc3QgaW5kaWNhdGVzIHRoYXQgdGhlIGNhbGwgdGltZWQgb3V0IGFuZCBubyBmaWxlCisgICBkZXNjcmlwdG9ycyBoYWQgYW55IGV2ZW50cyB0byByZXBvcnQuIElmICp0aW1lb3V0KiBpcyBnaXZlbiwgaXQgc3BlY2lmaWVzIHRoZQorICAgbGVuZ3RoIG9mIHRpbWUgaW4gbWlsbGlzZWNvbmRzIHdoaWNoIHRoZSBzeXN0ZW0gd2lsbCB3YWl0IGZvciBldmVudHMgYmVmb3JlCisgICByZXR1cm5pbmcuIElmICp0aW1lb3V0KiBpcyBvbWl0dGVkLCAtMSwgb3IgOmNvbnN0OmBOb25lYCwgdGhlIGNhbGwgd2lsbAorICAgYmxvY2sgdW50aWwgdGhlcmUgaXMgYW4gZXZlbnQgZm9yIHRoaXMgcG9sbCBvYmplY3QuCisKKwogLi4gX2Vwb2xsLW9iamVjdHM6CiAKIEVkZ2UgYW5kIExldmVsIFRyaWdnZXIgUG9sbGluZyAoZXBvbGwpIE9iamVjdHMKQEAgLTE2NSwxMSArMjU1LDYgQEAKIAogICAgUmVnaXN0ZXIgYSBmZCBkZXNjcmlwdG9yIHdpdGggdGhlIGVwb2xsIG9iamVjdC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgUmVnaXN0ZXJpbmcgYSBmaWxlIGRlc2NyaXB0b3IgdGhhdCdzIGFscmVhZHkgcmVnaXN0ZXJlZCByYWlzZXMgYW4KLSAgICAgSU9FcnJvciAtLSBjb250cmFyeSB0byA6cmVmOmBwb2xsLW9iamVjdHNgJ3MgcmVnaXN0ZXIuCi0KIAogLi4gbWV0aG9kOjogZXBvbGwubW9kaWZ5KGZkLCBldmVudG1hc2spCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NobGV4LnJzdCBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdAppbmRleCAwMTEzZmI3Li45NDFlMDkwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2hsZXgucnN0CkBAIC0zNCw2ICszNCw0MCBAQAogICAgICAgcGFzc2luZyBgYE5vbmVgYCBmb3IgKnMqIHdpbGwgcmVhZCB0aGUgc3RyaW5nIHRvIHNwbGl0IGZyb20gc3RhbmRhcmQKICAgICAgIGlucHV0LgogCisKKy4uIGZ1bmN0aW9uOjogcXVvdGUocykKKworICAgUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgKnMqLiAgVGhlIHJldHVybmVkIHZhbHVlIGlzIGEKKyAgIHN0cmluZyB0aGF0IGNhbiBzYWZlbHkgYmUgdXNlZCBhcyBvbmUgdG9rZW4gaW4gYSBzaGVsbCBjb21tYW5kIGxpbmUsIGZvcgorICAgY2FzZXMgd2hlcmUgeW91IGNhbm5vdCB1c2UgYSBsaXN0LgorCisgICBUaGlzIGlkaW9tIHdvdWxkIGJlIHVuc2FmZTo6CisKKyAgICAgID4+PiBmaWxlbmFtZSA9ICdzb21lZmlsZTsgcm0gLXJmIH4nCisgICAgICA+Pj4gY29tbWFuZCA9ICdscyAtbCB7fScuZm9ybWF0KGZpbGVuYW1lKQorICAgICAgPj4+IHByaW50KGNvbW1hbmQpICAjIGV4ZWN1dGVkIGJ5IGEgc2hlbGw6IGJvb20hCisgICAgICBscyAtbCBzb21lZmlsZTsgcm0gLXJmIH4KKworICAgOmZ1bmM6YHF1b3RlYCBsZXRzIHlvdSBwbHVnIHRoZSBzZWN1cml0eSBob2xlOjoKKworICAgICAgPj4+IGNvbW1hbmQgPSAnbHMgLWwge30nLmZvcm1hdChxdW90ZShmaWxlbmFtZSkpCisgICAgICA+Pj4gcHJpbnQoY29tbWFuZCkKKyAgICAgIGxzIC1sICdzb21lZmlsZTsgcm0gLXJmIH4nCisgICAgICA+Pj4gcmVtb3RlX2NvbW1hbmQgPSAnc3NoIGhvbWUge30nLmZvcm1hdChxdW90ZShjb21tYW5kKSkKKyAgICAgID4+PiBwcmludChyZW1vdGVfY29tbWFuZCkKKyAgICAgIHNzaCBob21lICdscyAtbCAnIiciJ3NvbWVmaWxlOyBybSAtcmYgficiJyInJworCisgICBUaGUgcXVvdGluZyBpcyBjb21wYXRpYmxlIHdpdGggVU5JWCBzaGVsbHMgYW5kIHdpdGggOmZ1bmM6YHNwbGl0YDoKKworICAgICAgPj4+IHJlbW90ZV9jb21tYW5kID0gc3BsaXQocmVtb3RlX2NvbW1hbmQpCisgICAgICA+Pj4gcmVtb3RlX2NvbW1hbmQKKyAgICAgIFsnc3NoJywgJ2hvbWUnLCAibHMgLWwgJ3NvbWVmaWxlOyBybSAtcmYgficiXQorICAgICAgPj4+IGNvbW1hbmQgPSBzcGxpdChyZW1vdGVfY29tbWFuZFstMV0pCisgICAgICA+Pj4gY29tbWFuZAorICAgICAgWydscycsICctbCcsICdzb21lZmlsZTsgcm0gLXJmIH4nXQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogVGhlIDptb2Q6YHNobGV4YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzOgogCiAKQEAgLTI4Miw1ICszMTYsNCBAQAogCiAqIEVPRiBpcyBzaWduYWxlZCB3aXRoIGEgOmNvbnN0OmBOb25lYCB2YWx1ZTsKIAotKiBRdW90ZWQgZW1wdHkgc3RyaW5ncyAoYGAnJ2BgKSBhcmUgYWxsb3dlZDsKLQorKiBRdW90ZWQgZW1wdHkgc3RyaW5ncyAoYGAnJ2BgKSBhcmUgYWxsb3dlZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IDE4ZjY0ODUuLjA4MGM5MjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtNDcsNDUgKzQ3LDEyOSBAQAogICAgYmUgY29waWVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY29weWZpbGUoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IGNvcHlmaWxlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgQ29weSB0aGUgY29udGVudHMgKG5vIG1ldGFkYXRhKSBvZiB0aGUgZmlsZSBuYW1lZCAqc3JjKiB0byBhIGZpbGUgbmFtZWQKLSAgICpkc3QqLiAgKmRzdCogbXVzdCBiZSB0aGUgY29tcGxldGUgdGFyZ2V0IGZpbGUgbmFtZTsgbG9vayBhdAotICAgOmZ1bmM6YHNodXRpbC5jb3B5YCBmb3IgYSBjb3B5IHRoYXQgYWNjZXB0cyBhIHRhcmdldCBkaXJlY3RvcnkgcGF0aC4gIElmCi0gICAqc3JjKiBhbmQgKmRzdCogYXJlIHRoZSBzYW1lIGZpbGVzLCA6ZXhjOmBFcnJvcmAgaXMgcmFpc2VkLgotICAgVGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uIG11c3QgYmUgd3JpdGFibGU7IG90aGVyd2lzZSwgIGFuIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbgotICAgd2lsbCBiZSByYWlzZWQuIElmICpkc3QqIGFscmVhZHkgZXhpc3RzLCBpdCB3aWxsIGJlIHJlcGxhY2VkLiAgIFNwZWNpYWwgZmlsZXMKLSAgIHN1Y2ggYXMgY2hhcmFjdGVyIG9yIGJsb2NrIGRldmljZXMgYW5kIHBpcGVzIGNhbm5vdCBiZSBjb3BpZWQgd2l0aCB0aGlzCi0gICBmdW5jdGlvbi4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgKmRzdCogYW5kIHJldHVybiAqZHN0Ki4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgKmRzdCogbXVzdCBiZSB0aGUgY29tcGxldGUgdGFyZ2V0IGZpbGUgbmFtZTsgbG9vayBhdCA6ZnVuYzpgc2h1dGlsLmNvcHlgCisgICBmb3IgYSBjb3B5IHRoYXQgYWNjZXB0cyBhIHRhcmdldCBkaXJlY3RvcnkgcGF0aC4gIElmICpzcmMqIGFuZCAqZHN0KgorICAgc3BlY2lmeSB0aGUgc2FtZSBmaWxlLCA6ZXhjOmBFcnJvcmAgaXMgcmFpc2VkLgogCisgICBUaGUgZGVzdGluYXRpb24gbG9jYXRpb24gbXVzdCBiZSB3cml0YWJsZTsgb3RoZXJ3aXNlLCBhbiA6ZXhjOmBPU0Vycm9yYAorICAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBJZiAqZHN0KiBhbHJlYWR5IGV4aXN0cywgaXQgd2lsbCBiZSByZXBsYWNlZC4KKyAgIFNwZWNpYWwgZmlsZXMgc3VjaCBhcyBjaGFyYWN0ZXIgb3IgYmxvY2sgZGV2aWNlcyBhbmQgcGlwZXMgY2Fubm90IGJlCisgICBjb3BpZWQgd2l0aCB0aGlzIGZ1bmN0aW9uLgogCi0uLiBmdW5jdGlvbjo6IGNvcHltb2RlKHNyYywgZHN0KQorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UgYW5kICpzcmMqIGlzIGEgc3ltYm9saWMgbGluaywKKyAgIGEgbmV3IHN5bWJvbGljIGxpbmsgd2lsbCBiZSBjcmVhdGVkIGluc3RlYWQgb2YgY29weWluZyB0aGUKKyAgIGZpbGUgKnNyYyogcG9pbnRzIHRvLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgSU9FcnJvcmAgdXNlZCB0byBiZSByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBPU0Vycm9yYC4KKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50LgorICAgICAgTm93IHJldHVybnMgKmRzdCouCisKKy4uIGZ1bmN0aW9uOjogY29weW1vZGUoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBDb3B5IHRoZSBwZXJtaXNzaW9uIGJpdHMgZnJvbSAqc3JjKiB0byAqZHN0Ki4gIFRoZSBmaWxlIGNvbnRlbnRzLCBvd25lciwgYW5kCiAgICBncm91cCBhcmUgdW5hZmZlY3RlZC4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aCBuYW1lcyBnaXZlbiBhcyBzdHJpbmdzLgorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZCBib3RoICpzcmMqIGFuZCAqZHN0KiBhcmUgc3ltYm9saWMgbGlua3MsCisgICA6ZnVuYzpgY29weW1vZGVgIHdpbGwgYXR0ZW1wdCB0byBtb2RpZnkgdGhlIG1vZGUgb2YgKmRzdCogaXRzZWxmIChyYXRoZXIKKyAgIHRoYW4gdGhlIGZpbGUgaXQgcG9pbnRzIHRvKS4gIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgYXZhaWxhYmxlIG9uIGV2ZXJ5CisgICBwbGF0Zm9ybTsgcGxlYXNlIHNlZSA6ZnVuYzpgY29weXN0YXRgIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgSWYKKyAgIDpmdW5jOmBjb3B5bW9kZWAgY2Fubm90IG1vZGlmeSBzeW1ib2xpYyBsaW5rcyBvbiB0aGUgbG9jYWwgcGxhdGZvcm0sIGFuZCBpdAorICAgaXMgYXNrZWQgdG8gZG8gc28sIGl0IHdpbGwgZG8gbm90aGluZyBhbmQgcmV0dXJuLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnQuCiAKLS4uIGZ1bmN0aW9uOjogY29weXN0YXQoc3JjLCBkc3QpCisuLiBmdW5jdGlvbjo6IGNvcHlzdGF0KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAotICAgQ29weSB0aGUgcGVybWlzc2lvbiBiaXRzLCBsYXN0IGFjY2VzcyB0aW1lLCBsYXN0IG1vZGlmaWNhdGlvbiB0aW1lLCBhbmQgZmxhZ3MKLSAgIGZyb20gKnNyYyogdG8gKmRzdCouICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZCBncm91cCBhcmUgdW5hZmZlY3RlZC4gICpzcmMqCi0gICBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgIENvcHkgdGhlIHBlcm1pc3Npb24gYml0cywgbGFzdCBhY2Nlc3MgdGltZSwgbGFzdCBtb2RpZmljYXRpb24gdGltZSwgYW5kCisgICBmbGFncyBmcm9tICpzcmMqIHRvICpkc3QqLiAgT24gTGludXgsIDpmdW5jOmBjb3B5c3RhdGAgYWxzbyBjb3BpZXMgdGhlCisgICAiZXh0ZW5kZWQgYXR0cmlidXRlcyIgd2hlcmUgcG9zc2libGUuICBUaGUgZmlsZSBjb250ZW50cywgb3duZXIsIGFuZAorICAgZ3JvdXAgYXJlIHVuYWZmZWN0ZWQuICAqc3JjKiBhbmQgKmRzdCogYXJlIHBhdGggbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KIAorICAgSWYgKmZvbGxvd19zeW1saW5rcyogaXMgZmFsc2UsIGFuZCAqc3JjKiBhbmQgKmRzdCogYm90aAorICAgcmVmZXIgdG8gc3ltYm9saWMgbGlua3MsIDpmdW5jOmBjb3B5c3RhdGAgd2lsbCBvcGVyYXRlIG9uCisgICB0aGUgc3ltYm9saWMgbGlua3MgdGhlbXNlbHZlcyByYXRoZXIgdGhhbiB0aGUgZmlsZXMgdGhlCisgICBzeW1ib2xpYyBsaW5rcyByZWZlciB0by0tcmVhZGluZyB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUKKyAgICpzcmMqIHN5bWJvbGljIGxpbmssIGFuZCB3cml0aW5nIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUKKyAgICpkc3QqIHN5bWJvbGljIGxpbmsuCiAKLS4uIGZ1bmN0aW9uOjogY29weShzcmMsIGRzdCkKKyAgIC4uIG5vdGU6OgogCi0gICBDb3B5IHRoZSBmaWxlICpzcmMqIHRvIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSAqZHN0Ki4gIElmICpkc3QqIGlzIGEgZGlyZWN0b3J5LCBhCi0gICBmaWxlIHdpdGggdGhlIHNhbWUgYmFzZW5hbWUgYXMgKnNyYyogIGlzIGNyZWF0ZWQgKG9yIG92ZXJ3cml0dGVuKSBpbiB0aGUKLSAgIGRpcmVjdG9yeSBzcGVjaWZpZWQuICBQZXJtaXNzaW9uIGJpdHMgYXJlIGNvcGllZC4gICpzcmMqIGFuZCAqZHN0KiBhcmUgcGF0aAotICAgbmFtZXMgZ2l2ZW4gYXMgc3RyaW5ncy4KKyAgICAgIE5vdCBhbGwgcGxhdGZvcm1zIHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gZXhhbWluZSBhbmQKKyAgICAgIG1vZGlmeSBzeW1ib2xpYyBsaW5rcy4gIFB5dGhvbiBpdHNlbGYgY2FuIHRlbGwgeW91IHdoYXQKKyAgICAgIGZ1bmN0aW9uYWxpdHkgaXMgbG9jYWxseSBhdmFpbGFibGUuCiAKKyAgICAgICogSWYgYGBvcy5jaG1vZCBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgYCBpcworICAgICAgICBgYFRydWVgYCwgOmZ1bmM6YGNvcHlzdGF0YCBjYW4gbW9kaWZ5IHRoZSBwZXJtaXNzaW9uCisgICAgICAgIGJpdHMgb2YgYSBzeW1ib2xpYyBsaW5rLgogCi0uLiBmdW5jdGlvbjo6IGNvcHkyKHNyYywgZHN0KQorICAgICAgKiBJZiBgYG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rc2BgIGlzCisgICAgICAgIGBgVHJ1ZWBgLCA6ZnVuYzpgY29weXN0YXRgIGNhbiBtb2RpZnkgdGhlIGxhc3QgYWNjZXNzCisgICAgICAgIGFuZCBtb2RpZmljYXRpb24gdGltZXMgb2YgYSBzeW1ib2xpYyBsaW5rLgogCi0gICBTaW1pbGFyIHRvIDpmdW5jOmBzaHV0aWwuY29weWAsIGJ1dCBtZXRhZGF0YSBpcyBjb3BpZWQgYXMgd2VsbCAtLSBpbiBmYWN0LAotICAgdGhpcyBpcyBqdXN0IDpmdW5jOmBzaHV0aWwuY29weWAgZm9sbG93ZWQgYnkgOmZ1bmM6YGNvcHlzdGF0YC4gIFRoaXMgaXMKLSAgIHNpbWlsYXIgdG8gdGhlIFVuaXggY29tbWFuZCA6cHJvZ3JhbTpgY3AgLXBgLgorICAgICAgKiBJZiBgYG9zLmNoZmxhZ3MgaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzYGAgaXMKKyAgICAgICAgYGBUcnVlYGAsIDpmdW5jOmBjb3B5c3RhdGAgY2FuIG1vZGlmeSB0aGUgZmxhZ3Mgb2YKKyAgICAgICAgYSBzeW1ib2xpYyBsaW5rLiAgKGBgb3MuY2hmbGFnc2BgIGlzIG5vdCBhdmFpbGFibGUgb24KKyAgICAgICAgYWxsIHBsYXRmb3Jtcy4pCiAKKyAgICAgIE9uIHBsYXRmb3JtcyB3aGVyZSBzb21lIG9yIGFsbCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkKKyAgICAgIGlzIHVuYXZhaWxhYmxlLCB3aGVuIGFza2VkIHRvIG1vZGlmeSBhIHN5bWJvbGljIGxpbmssCisgICAgICA6ZnVuYzpgY29weXN0YXRgIHdpbGwgY29weSBldmVyeXRoaW5nIGl0IGNhbi4KKyAgICAgIDpmdW5jOmBjb3B5c3RhdGAgbmV2ZXIgcmV0dXJucyBmYWlsdXJlLgorCisgICAgICBQbGVhc2Ugc2VlIDpkYXRhOmBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3NgCisgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50IGFuZCBzdXBwb3J0IGZvciBMaW51eCBleHRlbmRlZCBhdHRyaWJ1dGVzLgorCisuLiBmdW5jdGlvbjo6IGNvcHkoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQorCisgICBDb3BpZXMgdGhlIGZpbGUgKnNyYyogdG8gdGhlIGZpbGUgb3IgZGlyZWN0b3J5ICpkc3QqLiAgKnNyYyogYW5kICpkc3QqCisgICBzaG91bGQgYmUgc3RyaW5ncy4gIElmICpkc3QqIHNwZWNpZmllcyBhIGRpcmVjdG9yeSwgdGhlIGZpbGUgd2lsbCBiZQorICAgY29waWVkIGludG8gKmRzdCogdXNpbmcgdGhlIGJhc2UgZmlsZW5hbWUgZnJvbSAqc3JjKi4gIFJldHVybnMgdGhlCisgICBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCisKKyAgIElmICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLCBhbmQgKnNyYyogaXMgYSBzeW1ib2xpYyBsaW5rLAorICAgKmRzdCogd2lsbCBiZSBjcmVhdGVkIGFzIGEgc3ltYm9saWMgbGluay4gIElmICpmb2xsb3dfc3ltbGlua3MqCisgICBpcyB0cnVlIGFuZCAqc3JjKiBpcyBhIHN5bWJvbGljIGxpbmssICpkc3QqIHdpbGwgYmUgYSBjb3B5IG9mCisgICB0aGUgZmlsZSAqc3JjKiByZWZlcnMgdG8uCisKKyAgIDpmdW5jOmBjb3B5YCBjb3BpZXMgdGhlIGZpbGUgZGF0YSBhbmQgdGhlIGZpbGUncyBwZXJtaXNzaW9uCisgICBtb2RlIChzZWUgOmZ1bmM6YG9zLmNobW9kYCkuICBPdGhlciBtZXRhZGF0YSwgbGlrZSB0aGUKKyAgIGZpbGUncyBjcmVhdGlvbiBhbmQgbW9kaWZpY2F0aW9uIHRpbWVzLCBpcyBub3QgcHJlc2VydmVkLgorICAgVG8gcHJlc2VydmUgYWxsIGZpbGUgbWV0YWRhdGEgZnJvbSB0aGUgb3JpZ2luYWwsIHVzZQorICAgOmZ1bmM6YH5zaHV0aWwuY29weTJgIGluc3RlYWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KKyAgICAgIE5vdyByZXR1cm5zIHBhdGggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZmlsZS4KKworLi4gZnVuY3Rpb246OiBjb3B5MihzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCisKKyAgIElkZW50aWNhbCB0byA6ZnVuYzpgfnNodXRpbC5jb3B5YCBleGNlcHQgdGhhdCA6ZnVuYzpgY29weTJgCisgICBhbHNvIGF0dGVtcHRzIHRvIHByZXNlcnZlIGFsbCBmaWxlIG1ldGFkYXRhLgorCisgICBXaGVuICpmb2xsb3dfc3ltbGlua3MqIGlzIGZhbHNlLCBhbmQgKnNyYyogaXMgYSBzeW1ib2xpYworICAgbGluaywgOmZ1bmM6YGNvcHkyYCBhdHRlbXB0cyB0byBjb3B5IGFsbCBtZXRhZGF0YSBmcm9tIHRoZQorICAgKnNyYyogc3ltYm9saWMgbGluayB0byB0aGUgbmV3bHktY3JlYXRlZCAqZHN0KiBzeW1ib2xpYyBsaW5rLgorICAgSG93ZXZlciwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKyAgIE9uIHBsYXRmb3JtcyB3aGVyZSBzb21lIG9yIGFsbCBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgIHVuYXZhaWxhYmxlLCA6ZnVuYzpgY29weTJgIHdpbGwgcHJlc2VydmUgYWxsIHRoZSBtZXRhZGF0YQorICAgaXQgY2FuOyA6ZnVuYzpgY29weTJgIG5ldmVyIHJldHVybnMgZmFpbHVyZS4KKworICAgOmZ1bmM6YGNvcHkyYCB1c2VzIDpmdW5jOmBjb3B5c3RhdGAgdG8gY29weSB0aGUgZmlsZSBtZXRhZGF0YS4KKyAgIFBsZWFzZSBzZWUgOmZ1bmM6YGNvcHlzdGF0YCBmb3IgbW9yZSBpbmZvcm1hdGlvbgorICAgYWJvdXQgcGxhdGZvcm0gc3VwcG9ydCBmb3IgbW9kaWZ5aW5nIHN5bWJvbGljIGxpbmsgbWV0YWRhdGEuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudCwgdHJ5IHRvIGNvcHkgZXh0ZW5kZWQKKyAgICAgIGZpbGUgc3lzdGVtIGF0dHJpYnV0ZXMgdG9vIChjdXJyZW50bHkgTGludXggb25seSkuCisgICAgICBOb3cgcmV0dXJucyBwYXRoIHRvIHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCiAKIC4uIGZ1bmN0aW9uOjogaWdub3JlX3BhdHRlcm5zKFwqcGF0dGVybnMpCiAKQEAgLTk2LDE2ICsxODAsMTcgQEAKIAogLi4gZnVuY3Rpb246OiBjb3B5dHJlZShzcmMsIGRzdCwgc3ltbGlua3M9RmFsc2UsIGlnbm9yZT1Ob25lLCBjb3B5X2Z1bmN0aW9uPWNvcHkyLCBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3M9RmFsc2UpCiAKLSAgIFJlY3Vyc2l2ZWx5IGNvcHkgYW4gZW50aXJlIGRpcmVjdG9yeSB0cmVlIHJvb3RlZCBhdCAqc3JjKi4gIFRoZSBkZXN0aW5hdGlvbgorICAgUmVjdXJzaXZlbHkgY29weSBhbiBlbnRpcmUgZGlyZWN0b3J5IHRyZWUgcm9vdGVkIGF0ICpzcmMqLCByZXR1cm5pbmcgdGhlCisgICBkZXN0aW5hdGlvbiBkaXJlY3RvcnkuICBUaGUgZGVzdGluYXRpb24KICAgIGRpcmVjdG9yeSwgbmFtZWQgYnkgKmRzdCosIG11c3Qgbm90IGFscmVhZHkgZXhpc3Q7IGl0IHdpbGwgYmUgY3JlYXRlZCBhcwogICAgd2VsbCBhcyBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIFBlcm1pc3Npb25zIGFuZCB0aW1lcyBvZiBkaXJlY3RvcmllcwogICAgYXJlIGNvcGllZCB3aXRoIDpmdW5jOmBjb3B5c3RhdGAsIGluZGl2aWR1YWwgZmlsZXMgYXJlIGNvcGllZCB1c2luZwogICAgOmZ1bmM6YHNodXRpbC5jb3B5MmAuCiAKICAgIElmICpzeW1saW5rcyogaXMgdHJ1ZSwgc3ltYm9saWMgbGlua3MgaW4gdGhlIHNvdXJjZSB0cmVlIGFyZSByZXByZXNlbnRlZCBhcwotICAgc3ltYm9saWMgbGlua3MgaW4gdGhlIG5ldyB0cmVlLCBidXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBvcmlnaW5hbCBsaW5rcyBpcyBOT1QKLSAgIGNvcGllZDsgaWYgZmFsc2Ugb3Igb21pdHRlZCwgdGhlIGNvbnRlbnRzIGFuZCBtZXRhZGF0YSBvZiB0aGUgbGlua2VkIGZpbGVzCi0gICBhcmUgY29waWVkIHRvIHRoZSBuZXcgdHJlZS4KKyAgIHN5bWJvbGljIGxpbmtzIGluIHRoZSBuZXcgdHJlZSBhbmQgdGhlIG1ldGFkYXRhIG9mIHRoZSBvcmlnaW5hbCBsaW5rcyB3aWxsCisgICBiZSBjb3BpZWQgYXMgZmFyIGFzIHRoZSBwbGF0Zm9ybSBhbGxvd3M7IGlmIGZhbHNlIG9yIG9taXR0ZWQsIHRoZSBjb250ZW50cworICAgYW5kIG1ldGFkYXRhIG9mIHRoZSBsaW5rZWQgZmlsZXMgYXJlIGNvcGllZCB0byB0aGUgbmV3IHRyZWUuCiAKICAgIFdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZSwgaWYgdGhlIGZpbGUgcG9pbnRlZCBieSB0aGUgc3ltbGluayBkb2Vzbid0CiAgICBleGlzdCwgYSBleGNlcHRpb24gd2lsbCBiZSBhZGRlZCBpbiB0aGUgbGlzdCBvZiBlcnJvcnMgcmFpc2VkIGluCkBAIC0xMjksMTMgKzIxNCwxNSBAQAogICAgSWYgKmNvcHlfZnVuY3Rpb24qIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgY2FsbGFibGUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gY29weQogICAgZWFjaCBmaWxlLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzb3VyY2UgcGF0aCBhbmQgdGhlIGRlc3RpbmF0aW9uIHBhdGgKICAgIGFzIGFyZ3VtZW50cy4gQnkgZGVmYXVsdCwgOmZ1bmM6YHNodXRpbC5jb3B5MmAgaXMgdXNlZCwgYnV0IGFueSBmdW5jdGlvbgotICAgdGhhdCBzdXBwb3J0cyB0aGUgc2FtZSBzaWduYXR1cmUgKGxpa2UgOmZ1bmM6YGNvcHlgKSBjYW4gYmUgdXNlZC4KKyAgIHRoYXQgc3VwcG9ydHMgdGhlIHNhbWUgc2lnbmF0dXJlIChsaWtlIDpmdW5jOmBzaHV0aWwuY29weWApIGNhbiBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQ29weSBtZXRhZGF0YSB3aGVuICpzeW1saW5rcyogaXMgZmFsc2UuCisgICAgICBOb3cgcmV0dXJucyAqZHN0Ki4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSAqY29weV9mdW5jdGlvbiogYXJndW1lbnQgdG8gYmUgYWJsZSB0byBwcm92aWRlIGEgY3VzdG9tIGNvcHkKICAgICAgIGZ1bmN0aW9uLgotCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgQWRkZWQgdGhlICppZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3MqIGFyZ3VtZW50IHRvIHNpbGVudCBkYW5nbGluZyBzeW1saW5rcwogICAgICAgZXJyb3JzIHdoZW4gKnN5bWxpbmtzKiBpcyBmYWxzZS4KIApAQCAtMTUwLDE5ICsyMzcsNDIgQEAKICAgIGhhbmRsZWQgYnkgY2FsbGluZyBhIGhhbmRsZXIgc3BlY2lmaWVkIGJ5ICpvbmVycm9yKiBvciwgaWYgdGhhdCBpcyBvbWl0dGVkLAogICAgdGhleSByYWlzZSBhbiBleGNlcHRpb24uCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBPbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IHRoZSBuZWNlc3NhcnkgZmQtYmFzZWQgZnVuY3Rpb25zIGEgc3ltbGluaworICAgICAgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIG9mIDpmdW5jOmBybXRyZWVgIGlzIHVzZWQgYnkgZGVmYXVsdC4gIE9uIG90aGVyCisgICAgICBwbGF0Zm9ybXMsIHRoZSA6ZnVuYzpgcm10cmVlYCBpbXBsZW1lbnRhdGlvbiBpcyBzdXNjZXB0aWJsZSB0byBhIHN5bWxpbmsKKyAgICAgIGF0dGFjazogZ2l2ZW4gcHJvcGVyIHRpbWluZyBhbmQgY2lyY3Vtc3RhbmNlcywgYXR0YWNrZXJzIGNhbiBtYW5pcHVsYXRlCisgICAgICBzeW1saW5rcyBvbiB0aGUgZmlsZXN5c3RlbSB0byBkZWxldGUgZmlsZXMgdGhleSB3b3VsZG4ndCBiZSBhYmxlIHRvIGFjY2VzcworICAgICAgb3RoZXJ3aXNlLiAgQXBwbGljYXRpb25zIGNhbiB1c2UgdGhlIDpkYXRhOmBybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrc2AKKyAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZSB0byBkZXRlcm1pbmUgd2hpY2ggY2FzZSBhcHBsaWVzLgorCiAgICBJZiAqb25lcnJvciogaXMgcHJvdmlkZWQsIGl0IG11c3QgYmUgYSBjYWxsYWJsZSB0aGF0IGFjY2VwdHMgdGhyZWUKLSAgIHBhcmFtZXRlcnM6ICpmdW5jdGlvbiosICpwYXRoKiwgYW5kICpleGNpbmZvKi4gVGhlIGZpcnN0IHBhcmFtZXRlciwKLSAgICpmdW5jdGlvbiosIGlzIHRoZSBmdW5jdGlvbiB3aGljaCByYWlzZWQgdGhlIGV4Y2VwdGlvbjsgaXQgd2lsbCBiZQotICAgOmZ1bmM6YG9zLnBhdGguaXNsaW5rYCwgOmZ1bmM6YG9zLmxpc3RkaXJgLCA6ZnVuYzpgb3MucmVtb3ZlYCBvcgotICAgOmZ1bmM6YG9zLnJtZGlyYC4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyLCAqcGF0aCosIHdpbGwgYmUgdGhlIHBhdGggbmFtZSBwYXNzZWQKLSAgIHRvICpmdW5jdGlvbiouICBUaGUgdGhpcmQgcGFyYW1ldGVyLCAqZXhjaW5mbyosIHdpbGwgYmUgdGhlIGV4Y2VwdGlvbgotICAgaW5mb3JtYXRpb24gcmV0dXJuIGJ5IDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgRXhjZXB0aW9ucyByYWlzZWQgYnkgKm9uZXJyb3IqCi0gICB3aWxsIG5vdCBiZSBjYXVnaHQuCisgICBwYXJhbWV0ZXJzOiAqZnVuY3Rpb24qLCAqcGF0aCosIGFuZCAqZXhjaW5mbyouCisKKyAgIFRoZSBmaXJzdCBwYXJhbWV0ZXIsICpmdW5jdGlvbiosIGlzIHRoZSBmdW5jdGlvbiB3aGljaCByYWlzZWQgdGhlIGV4Y2VwdGlvbjsKKyAgIGl0IGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtIGFuZCBpbXBsZW1lbnRhdGlvbi4gIFRoZSBzZWNvbmQgcGFyYW1ldGVyLAorICAgKnBhdGgqLCB3aWxsIGJlIHRoZSBwYXRoIG5hbWUgcGFzc2VkIHRvICpmdW5jdGlvbiouICBUaGUgdGhpcmQgcGFyYW1ldGVyLAorICAgKmV4Y2luZm8qLCB3aWxsIGJlIHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkKKyAgIDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgRXhjZXB0aW9ucyByYWlzZWQgYnkgKm9uZXJyb3IqIHdpbGwgbm90IGJlIGNhdWdodC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIGEgc3ltbGluayBhdHRhY2sgcmVzaXN0YW50IHZlcnNpb24gdGhhdCBpcyB1c2VkIGF1dG9tYXRpY2FsbHkKKyAgICAgIGlmIHBsYXRmb3JtIHN1cHBvcnRzIGZkLWJhc2VkIGZ1bmN0aW9ucy4KKworICAgLi4gYXR0cmlidXRlOjogcm10cmVlLmF2b2lkc19zeW1saW5rX2F0dGFja3MKKworICAgICAgSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGN1cnJlbnQgcGxhdGZvcm0gYW5kIGltcGxlbWVudGF0aW9uIHByb3ZpZGVzIGEKKyAgICAgIHN5bWxpbmsgYXR0YWNrIHJlc2lzdGFudCB2ZXJzaW9uIG9mIDpmdW5jOmBybXRyZWVgLiAgQ3VycmVudGx5IHRoaXMgaXMKKyAgICAgIG9ubHkgdHJ1ZSBmb3IgcGxhdGZvcm1zIHN1cHBvcnRpbmcgZmQtYmFzZWQgZGlyZWN0b3J5IGFjY2VzcyBmdW5jdGlvbnMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGZ1bmN0aW9uOjogbW92ZShzcmMsIGRzdCkKIAotICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopLgorICAgUmVjdXJzaXZlbHkgbW92ZSBhIGZpbGUgb3IgZGlyZWN0b3J5ICgqc3JjKikgdG8gYW5vdGhlciBsb2NhdGlvbiAoKmRzdCopCisgICBhbmQgcmV0dXJuIHRoZSBkZXN0aW5hdGlvbi4KIAogICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5IG9yIGEgc3ltbGluayB0byBhIGRpcmVjdG9yeSwgdGhlbiAqc3JjKiBpcwogICAgbW92ZWQgaW5zaWRlIHRoYXQgZGlyZWN0b3J5LgpAQCAtMTczLDcgKzI4Myw2MSBAQAogCiAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gdGhlIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiA6ZnVuYzpgb3MucmVuYW1lYCBpcwogICAgdXNlZC4gIE90aGVyd2lzZSwgKnNyYyogaXMgY29waWVkICh1c2luZyA6ZnVuYzpgc2h1dGlsLmNvcHkyYCkgdG8gKmRzdCogYW5kCi0gICB0aGVuIHJlbW92ZWQuCisgICB0aGVuIHJlbW92ZWQuIEluIGNhc2Ugb2Ygc3ltbGlua3MsIGEgbmV3IHN5bWxpbmsgcG9pbnRpbmcgdG8gdGhlIHRhcmdldCBvZgorICAgKnNyYyogd2lsbCBiZSBjcmVhdGVkIGluIG9yIGFzICpkc3QqIGFuZCAqc3JjKiB3aWxsIGJlIHJlbW92ZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBleHBsaWNpdCBzeW1saW5rIGhhbmRsaW5nIGZvciBmb3JlaWduIGZpbGVzeXN0ZW1zLCB0aHVzIGFkYXB0aW5nCisgICAgICBpdCB0byB0aGUgYmVoYXZpb3Igb2YgR05VJ3MgOnByb2dyYW06YG12YC4KKyAgICAgIE5vdyByZXR1cm5zICpkc3QqLgorCisuLiBmdW5jdGlvbjo6IGRpc2tfdXNhZ2UocGF0aCkKKworICAgUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aCBhcyBhIDp0ZXJtOmBuYW1lZCB0dXBsZWAKKyAgIHdpdGggdGhlIGF0dHJpYnV0ZXMgKnRvdGFsKiwgKnVzZWQqIGFuZCAqZnJlZSosIHdoaWNoIGFyZSB0aGUgYW1vdW50IG9mCisgICB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICBBdmFpbGFiaWxpdHk6IFVuaXgsIFdpbmRvd3MuCisKKy4uIGZ1bmN0aW9uOjogY2hvd24ocGF0aCwgdXNlcj1Ob25lLCBncm91cD1Ob25lKQorCisgICBDaGFuZ2Ugb3duZXIgKnVzZXIqIGFuZC9vciAqZ3JvdXAqIG9mIHRoZSBnaXZlbiAqcGF0aCouCisKKyAgICp1c2VyKiBjYW4gYmUgYSBzeXN0ZW0gdXNlciBuYW1lIG9yIGEgdWlkOyB0aGUgc2FtZSBhcHBsaWVzIHRvICpncm91cCouIEF0CisgICBsZWFzdCBvbmUgYXJndW1lbnQgaXMgcmVxdWlyZWQuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBvcy5jaG93bmAsIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogd2hpY2goY21kLCBtb2RlPW9zLkZfT0sgfCBvcy5YX09LLCBwYXRoPU5vbmUpCisKKyAgIFJldHVybiB0aGUgcGF0aCB0byBhbiBleGVjdXRhYmxlIHdoaWNoIHdvdWxkIGJlIHJ1biBpZiB0aGUgZ2l2ZW4gKmNtZCogd2FzCisgICBjYWxsZWQuICBJZiBubyAqY21kKiB3b3VsZCBiZSBjYWxsZWQsIHJldHVybiBgYE5vbmVgYC4KKworICAgKm1vZGUqIGlzIGEgcGVybWlzc2lvbiBtYXNrIHBhc3NlZCBhIHRvIDpmdW5jOmBvcy5hY2Nlc3NgLCBieSBkZWZhdWx0CisgICBkZXRlcm1pbmluZyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIGV4ZWN1dGFibGUuCisKKyAgIFdoZW4gbm8gKnBhdGgqIGlzIHNwZWNpZmllZCwgdGhlIHJlc3VsdHMgb2YgOmZ1bmM6YG9zLmVudmlyb25gIGFyZSB1c2VkLAorICAgcmV0dXJuaW5nIGVpdGhlciB0aGUgIlBBVEgiIHZhbHVlIG9yIGEgZmFsbGJhY2sgb2YgOmF0dHI6YG9zLmRlZnBhdGhgLgorCisgICBPbiBXaW5kb3dzLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgYWx3YXlzIHByZXBlbmRlZCB0byB0aGUgKnBhdGgqIHdoZXRoZXIKKyAgIG9yIG5vdCB5b3UgdXNlIHRoZSBkZWZhdWx0IG9yIHByb3ZpZGUgeW91ciBvd24sIHdoaWNoIGlzIHRoZSBiZWhhdmlvciB0aGUKKyAgIGNvbW1hbmQgc2hlbGwgdXNlcyB3aGVuIGZpbmRpbmcgZXhlY3V0YWJsZXMuICBBZGRpdGlvbmFseSwgd2hlbiBmaW5kaW5nIHRoZQorICAgKmNtZCogaW4gdGhlICpwYXRoKiwgdGhlIGBgUEFUSEVYVGBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGNoZWNrZWQuICBGb3IKKyAgIGV4YW1wbGUsIGlmIHlvdSBjYWxsIGBgc2h1dGlsLndoaWNoKCJweXRob24iKWBgLCA6ZnVuYzpgd2hpY2hgIHdpbGwgc2VhcmNoCisgICBgYFBBVEhFWFRgYCB0byBrbm93IHRoYXQgaXQgc2hvdWxkIGxvb2sgZm9yIGBgcHl0aG9uLmV4ZWBgIHdpdGhpbiB0aGUgKnBhdGgqCisgICBkaXJlY3Rvcmllcy4gIEZvciBleGFtcGxlLCBvbiBXaW5kb3dzOjoKKworICAgICAgPj4+IHNodXRpbC53aGljaCgicHl0aG9uIikKKyAgICAgICdjOlxccHl0aG9uMzNcXHB5dGhvbi5leGUnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAKIC4uIGV4Y2VwdGlvbjo6IEVycm9yCkBAIC0xODYsNyArMzUwLDcgQEAKIC4uIF9zaHV0aWwtY29weXRyZWUtZXhhbXBsZToKIAogY29weXRyZWUgZXhhbXBsZQotOjo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fgogCiBUaGlzIGV4YW1wbGUgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSA6ZnVuYzpgY29weXRyZWVgIGZ1bmN0aW9uLCBkZXNjcmliZWQKIGFib3ZlLCB3aXRoIHRoZSBkb2NzdHJpbmcgb21pdHRlZC4gIEl0IGRlbW9uc3RyYXRlcyBtYW55IG9mIHRoZSBvdGhlciBmdW5jdGlvbnMKQEAgLTI1MCw2ICs0MTQsOCBAQAogQXJjaGl2aW5nIG9wZXJhdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuMgorCiBIaWdoLWxldmVsIHV0aWxpdGllcyB0byBjcmVhdGUgYW5kIHJlYWQgY29tcHJlc3NlZCBhbmQgYXJjaGl2ZWQgZmlsZXMgYXJlIGFsc28KIHByb3ZpZGVkLiAgVGhleSByZWx5IG9uIHRoZSA6bW9kOmB6aXBmaWxlYCBhbmQgOm1vZDpgdGFyZmlsZWAgbW9kdWxlcy4KIApAQCAtMjc3LDggKzQ0Myw2IEBACiAgICAqbG9nZ2VyKiBtdXN0IGJlIGFuIG9iamVjdCBjb21wYXRpYmxlIHdpdGggOnBlcDpgMjgyYCwgdXN1YWxseSBhbiBpbnN0YW5jZSBvZgogICAgOmNsYXNzOmBsb2dnaW5nLkxvZ2dlcmAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2FyY2hpdmVfZm9ybWF0cygpCiAKQEAgLTI5NSw4ICs0NTksNiBAQAogICAgWW91IGNhbiByZWdpc3RlciBuZXcgZm9ybWF0cyBvciBwcm92aWRlIHlvdXIgb3duIGFyY2hpdmVyIGZvciBhbnkgZXhpc3RpbmcKICAgIGZvcm1hdHMsIGJ5IHVzaW5nIDpmdW5jOmByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogcmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSwgZnVuY3Rpb24sIFtleHRyYV9hcmdzLCBbZGVzY3JpcHRpb25dXSkKIApAQCAtMzA5LDE1ICs0NzEsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogaXMgdXNlZCBieSA6ZnVuYzpgZ2V0X2FyY2hpdmVfZm9ybWF0c2Agd2hpY2ggcmV0dXJucyB0aGUKICAgIGxpc3Qgb2YgYXJjaGl2ZXJzLiBEZWZhdWx0cyB0byBhbiBlbXB0eSBsaXN0LgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQobmFtZSkKIAogICAgUmVtb3ZlIHRoZSBhcmNoaXZlIGZvcm1hdCAqbmFtZSogZnJvbSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgZm9ybWF0cy4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KIAogLi4gZnVuY3Rpb246OiB1bnBhY2tfYXJjaGl2ZShmaWxlbmFtZVssIGV4dHJhY3RfZGlyWywgZm9ybWF0XV0pCiAKQEAgLTMzMiw4ICs0OTAsNiBAQAogICAgYW5kIHNlZSBpZiBhbiB1bnBhY2tlciB3YXMgcmVnaXN0ZXJlZCBmb3IgdGhhdCBleHRlbnNpb24uIEluIGNhc2Ugbm9uZSBpcwogICAgZm91bmQsIGEgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQogCiAuLiBmdW5jdGlvbjo6IHJlZ2lzdGVyX3VucGFja19mb3JtYXQobmFtZSwgZXh0ZW5zaW9ucywgZnVuY3Rpb25bLCBleHRyYV9hcmdzWywgZGVzY3JpcHRpb25dXSkKIApAQCAtMzUxLDE1ICs1MDcsMTEgQEAKICAgICpkZXNjcmlwdGlvbiogY2FuIGJlIHByb3ZpZGVkIHRvIGRlc2NyaWJlIHRoZSBmb3JtYXQsIGFuZCB3aWxsIGJlIHJldHVybmVkCiAgICBieSB0aGUgOmZ1bmM6YGdldF91bnBhY2tfZm9ybWF0c2AgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KG5hbWUpCiAKICAgIFVucmVnaXN0ZXIgYW4gdW5wYWNrIGZvcm1hdC4gKm5hbWUqIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3JtYXQuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3VucGFja19mb3JtYXRzKCkKIApAQCAtMzc3LDEzICs1MjksMTEgQEAKICAgIFlvdSBjYW4gcmVnaXN0ZXIgbmV3IGZvcm1hdHMgb3IgcHJvdmlkZSB5b3VyIG93biB1bnBhY2tlciBmb3IgYW55IGV4aXN0aW5nCiAgICBmb3JtYXRzLCBieSB1c2luZyA6ZnVuYzpgcmVnaXN0ZXJfdW5wYWNrX2Zvcm1hdGAuCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCiAKIC4uIF9zaHV0aWwtYXJjaGl2aW5nLWV4YW1wbGU6CiAKIEFyY2hpdmluZyBleGFtcGxlCi06Ojo6Ojo6Ojo6Ojo6Ojo6Ogorfn5+fn5+fn5+fn5+fn5+fn4KIAogSW4gdGhpcyBleGFtcGxlLCB3ZSBjcmVhdGUgYSBnemlwJ2VkIHRhci1maWxlIGFyY2hpdmUgY29udGFpbmluZyBhbGwgZmlsZXMKIGZvdW5kIGluIHRoZSA6ZmlsZTpgLnNzaGAgZGlyZWN0b3J5IG9mIHRoZSB1c2VyOjoKQEAgLTQwNiwzICs1NTYsMzYgQEAKICAgICAtcnctLS0tLS0tIHRhcmVrL3N0YWZmICAgIDE2NzUgMjAwOC0wNi0wOSAxMzoyNjo1NCAuL2lkX3JzYQogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAgIDM5NyAyMDA4LTA2LTA5IDEzOjI2OjU0IC4vaWRfcnNhLnB1YgogICAgIC1ydy1yLS1yLS0gdGFyZWsvc3RhZmYgICAzNzE5MiAyMDEwLTAyLTA2IDE4OjIzOjEwIC4va25vd25faG9zdHMKKworCitRdWVyeWluZyB0aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IHRlcm1pbmFsCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IGdldF90ZXJtaW5hbF9zaXplKGZhbGxiYWNrPShjb2x1bW5zLCBsaW5lcykpCisKKyAgIEdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICBGb3IgZWFjaCBvZiB0aGUgdHdvIGRpbWVuc2lvbnMsIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYGBDT0xVTU5TYGAKKyAgIGFuZCBgYExJTkVTYGAgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgIHRoZSB2YWx1ZSBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGl0IGlzIHVzZWQuCisKKyAgIFdoZW4gYGBDT0xVTU5TYGAgb3IgYGBMSU5FU2BgIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICB0aGUgdGVybWluYWwgY29ubmVjdGVkIHRvIDpkYXRhOmBzeXMuX19zdGRvdXRfX2AgaXMgcXVlcmllZAorICAgYnkgaW52b2tpbmcgOmZ1bmM6YG9zLmdldF90ZXJtaW5hbF9zaXplYC4KKworICAgSWYgdGhlIHRlcm1pbmFsIHNpemUgY2Fubm90IGJlIHN1Y2Nlc3NmdWxseSBxdWVyaWVkLCBlaXRoZXIgYmVjYXVzZQorICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIHRoZSB2YWx1ZSBnaXZlbiBpbiBgYGZhbGxiYWNrYGAgcGFyYW1ldGVyCisgICBpcyB1c2VkLiBgYGZhbGxiYWNrYGAgZGVmYXVsdHMgdG8gYGAoODAsIDI0KWBgIHdoaWNoIGlzIHRoZSBkZWZhdWx0CisgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgIFRoZSB2YWx1ZSByZXR1cm5lZCBpcyBhIG5hbWVkIHR1cGxlIG9mIHR5cGUgOmNsYXNzOmBvcy50ZXJtaW5hbF9zaXplYC4KKworICAgU2VlIGFsc286IFRoZSBTaW5nbGUgVU5JWCBTcGVjaWZpY2F0aW9uLCBWZXJzaW9uIDIsCisgICBgT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYF8uCisKKy4uIF9gT3RoZXIgRW52aXJvbm1lbnQgVmFyaWFibGVzYDoKKyAgIGh0dHA6Ly9wdWJzLm9wZW5ncm91cC5vcmcvb25saW5lcHVicy83OTA4Nzk5L3hiZC9lbnZ2YXIuaHRtbCN0YWdfMDAyXzAwMworCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0IGIvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAppbmRleCBkMWNhZTEzLi4yYTQ3MmZlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKQEAgLTQ0LDYgKzQ0LDkgQEAKICAgc2lnbmFsIGhhbmRsZXJzIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIGNhbGN1bGF0aW9uIGZpbmlzaGVzLgogCiAKKy4uIF9zaWduYWxzLWFuZC10aHJlYWRzOgorCisKIFNpZ25hbHMgYW5kIHRocmVhZHMKIF5eXl5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMTMxLDYgKzEzNCwyOCBAQAogICAgaW4gdXNlciBhbmQga2VybmVsIHNwYWNlLiBTSUdQUk9GIGlzIGRlbGl2ZXJlZCB1cG9uIGV4cGlyYXRpb24uCiAKIAorLi4gZGF0YTo6IFNJR19CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgYmxvY2tlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBTSUdfVU5CTE9DSworCisgICBBIHBvc3NpYmxlIHZhbHVlIGZvciB0aGUgKmhvdyogcGFyYW1ldGVyIHRvIDpmdW5jOmBwdGhyZWFkX3NpZ21hc2tgCisgICBpbmRpY2F0aW5nIHRoYXQgc2lnbmFscyBhcmUgdG8gYmUgdW5ibG9ja2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFNJR19TRVRNQVNLCisKKyAgIEEgcG9zc2libGUgdmFsdWUgZm9yIHRoZSAqaG93KiBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AKKyAgIGluZGljYXRpbmcgdGhhdCB0aGUgc2lnbmFsIG1hc2sgaXMgdG8gYmUgcmVwbGFjZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIG9uZSBleGNlcHRpb246CiAKIC4uIGV4Y2VwdGlvbjo6IEl0aW1lckVycm9yCkBAIC0xMzgsNyArMTYzLDExIEBACiAgICBSYWlzZWQgdG8gc2lnbmFsIGFuIGVycm9yIGZyb20gdGhlIHVuZGVybHlpbmcgOmZ1bmM6YHNldGl0aW1lcmAgb3IKICAgIDpmdW5jOmBnZXRpdGltZXJgIGltcGxlbWVudGF0aW9uLiBFeHBlY3QgdGhpcyBlcnJvciBpZiBhbiBpbnZhbGlkCiAgICBpbnRlcnZhbCB0aW1lciBvciBhIG5lZ2F0aXZlIHRpbWUgaXMgcGFzc2VkIHRvIDpmdW5jOmBzZXRpdGltZXJgLgotICAgVGhpcyBlcnJvciBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgSU9FcnJvcmAuCisgICBUaGlzIGVycm9yIGlzIGEgc3VidHlwZSBvZiA6ZXhjOmBPU0Vycm9yYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICBUaGlzIGVycm9yIHVzZWQgdG8gYmUgYSBzdWJ0eXBlIG9mIDpleGM6YElPRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIFRoZSA6bW9kOmBzaWduYWxgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgpAQCAtMTcyLDYgKzIwMSw2NSBAQAogICAgd2lsbCB0aGVuIGJlIGNhbGxlZC4gIFJldHVybnMgbm90aGluZy4gIE5vdCBvbiBXaW5kb3dzLiAoU2VlIHRoZSBVbml4IG1hbiBwYWdlCiAgICA6bWFucGFnZTpgc2lnbmFsKDIpYC4pCiAKKyAgIFNlZSBhbHNvIDpmdW5jOmBzaWd3YWl0YCwgOmZ1bmM6YHNpZ3dhaXRpbmZvYCwgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAgYW5kCisgICA6ZnVuYzpgc2lncGVuZGluZ2AuCisKKworLi4gZnVuY3Rpb246OiBwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pCisKKyAgIFNlbmQgdGhlIHNpZ25hbCAqc2lnbnVtKiB0byB0aGUgdGhyZWFkICp0aHJlYWRfaWQqLCBhbm90aGVyIHRocmVhZCBpbiB0aGUKKyAgIHNhbWUgcHJvY2VzcyBhcyB0aGUgY2FsbGVyLiAgVGhlIHRhcmdldCB0aHJlYWQgY2FuIGJlIGV4ZWN1dGluZyBhbnkgY29kZQorICAgKFB5dGhvbiBvciBub3QpLiAgSG93ZXZlciwgaWYgdGhlIHRhcmdldCB0aHJlYWQgaXMgZXhlY3V0aW5nIHRoZSBQeXRob24KKyAgIGludGVycHJldGVyLCB0aGUgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyB3aWxsIGJlIDpyZWY6YGV4ZWN1dGVkIGJ5IHRoZSBtYWluCisgICB0aHJlYWQgPHNpZ25hbHMtYW5kLXRocmVhZHM+YC4gIFRoZXJlZm9yZSwgdGhlIG9ubHkgcG9pbnQgb2Ygc2VuZGluZyBhIHNpZ25hbCB0byBhIHBhcnRpY3VsYXIKKyAgIFB5dGhvbiB0aHJlYWQgd291bGQgYmUgdG8gZm9yY2UgYSBydW5uaW5nIHN5c3RlbSBjYWxsIHRvIGZhaWwgd2l0aAorICAgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAuCisKKyAgIFVzZSA6ZnVuYzpgdGhyZWFkaW5nLmdldF9pZGVudCgpYCBvciB0aGUgOmF0dHI6YH50aHJlYWRpbmcuVGhyZWFkLmlkZW50YAorICAgYXR0cmlidXRlIG9mIDpjbGFzczpgdGhyZWFkaW5nLlRocmVhZGAgb2JqZWN0cyB0byBnZXQgYSBzdWl0YWJsZSB2YWx1ZQorICAgZm9yICp0aHJlYWRfaWQqLgorCisgICBJZiAqc2lnbnVtKiBpcyAwLCB0aGVuIG5vIHNpZ25hbCBpcyBzZW50LCBidXQgZXJyb3IgY2hlY2tpbmcgaXMgc3RpbGwKKyAgIHBlcmZvcm1lZDsgdGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjayBpZiB0aGUgdGFyZ2V0IHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXggKHNlZSB0aGUgbWFuIHBhZ2UgOm1hbnBhZ2U6YHB0aHJlYWRfa2lsbCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YG9zLmtpbGxgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHB0aHJlYWRfc2lnbWFzayhob3csIG1hc2spCisKKyAgIEZldGNoIGFuZC9vciBjaGFuZ2UgdGhlIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4gIFRoZSBzaWduYWwgbWFzaworICAgaXMgdGhlIHNldCBvZiBzaWduYWxzIHdob3NlIGRlbGl2ZXJ5IGlzIGN1cnJlbnRseSBibG9ja2VkIGZvciB0aGUgY2FsbGVyLgorICAgUmV0dXJuIHRoZSBvbGQgc2lnbmFsIG1hc2sgYXMgYSBzZXQgb2Ygc2lnbmFscy4KKworICAgVGhlIGJlaGF2aW9yIG9mIHRoZSBjYWxsIGlzIGRlcGVuZGVudCBvbiB0aGUgdmFsdWUgb2YgKmhvdyosIGFzIGZvbGxvd3MuCisKKyAgICogOmRhdGE6YFNJR19CTE9DS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHRoZSB1bmlvbiBvZiB0aGUgY3VycmVudAorICAgICBzZXQgYW5kIHRoZSAqbWFzayogYXJndW1lbnQuCisgICAqIDpkYXRhOmBTSUdfVU5CTE9DS2A6IFRoZSBzaWduYWxzIGluICptYXNrKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBjdXJyZW50CisgICAgIHNldCBvZiBibG9ja2VkIHNpZ25hbHMuICBJdCBpcyBwZXJtaXNzaWJsZSB0byBhdHRlbXB0IHRvIHVuYmxvY2sgYQorICAgICBzaWduYWwgd2hpY2ggaXMgbm90IGJsb2NrZWQuCisgICAqIDpkYXRhOmBTSUdfU0VUTUFTS2A6IFRoZSBzZXQgb2YgYmxvY2tlZCBzaWduYWxzIGlzIHNldCB0byB0aGUgKm1hc2sqCisgICAgIGFyZ3VtZW50LgorCisgICAqbWFzayogaXMgYSBzZXQgb2Ygc2lnbmFsIG51bWJlcnMgKGUuZy4gezpjb25zdDpgc2lnbmFsLlNJR0lOVGAsCisgICA6Y29uc3Q6YHNpZ25hbC5TSUdURVJNYH0pLiBVc2UgYGByYW5nZSgxLCBzaWduYWwuTlNJRylgYCBmb3IgYSBmdWxsIG1hc2sKKyAgIGluY2x1ZGluZyBhbGwgc2lnbmFscy4KKworICAgRm9yIGV4YW1wbGUsIGBgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbXSlgYCByZWFkcyB0aGUKKyAgIHNpZ25hbCBtYXNrIG9mIHRoZSBjYWxsaW5nIHRocmVhZC4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LiBTZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWdwcm9jbWFzaygzKWAgYW5kCisgICA6bWFucGFnZTpgcHRocmVhZF9zaWdtYXNrKDMpYCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHNpZ3BlbmRpbmdgIGFuZCA6ZnVuYzpgc2lnd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogc2V0aXRpbWVyKHdoaWNoLCBzZWNvbmRzWywgaW50ZXJ2YWxdKQogCkBAIC0yMDEsMTMgKzI4OSwxNyBAQAogCiAuLiBmdW5jdGlvbjo6IHNldF93YWtldXBfZmQoZmQpCiAKLSAgIFNldCB0aGUgd2FrZXVwIGZkIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCBhIGBgJ1wwJ2BgIGJ5dGUgaXMKLSAgIHdyaXR0ZW4gdG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieSBhIGxpYnJhcnkgdG8gd2FrZXVwIGEgcG9sbCBvciBzZWxlY3QKLSAgIGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkgcHJvY2Vzc2VkLgorICAgU2V0IHRoZSB3YWtldXAgZmlsZSBkZXNjcmlwdG9yIHRvICpmZCouICBXaGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLCB0aGUKKyAgIHNpZ25hbCBudW1iZXIgaXMgd3JpdHRlbiBhcyBhIHNpbmdsZSBieXRlIGludG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieQorICAgYSBsaWJyYXJ5IHRvIHdha2V1cCBhIHBvbGwgb3Igc2VsZWN0IGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkKKyAgIHByb2Nlc3NlZC4KIAogICAgVGhlIG9sZCB3YWtldXAgZmQgaXMgcmV0dXJuZWQuICAqZmQqIG11c3QgYmUgbm9uLWJsb2NraW5nLiAgSXQgaXMgdXAgdG8gdGhlCiAgICBsaWJyYXJ5IHRvIHJlbW92ZSBhbnkgYnl0ZXMgYmVmb3JlIGNhbGxpbmcgcG9sbCBvciBzZWxlY3QgYWdhaW4uCiAKKyAgIFVzZSBmb3IgZXhhbXBsZSBgYHN0cnVjdC51bnBhY2soJyV1QicgJSBsZW4oZGF0YSksIGRhdGEpYGAgdG8gZGVjb2RlIHRoZQorICAgc2lnbmFsIG51bWJlcnMgbGlzdC4KKwogICAgV2hlbiB0aHJlYWRzIGFyZSBlbmFibGVkLCB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZDsKICAgIGF0dGVtcHRpbmcgdG8gY2FsbCBpdCBmcm9tIG90aGVyIHRocmVhZHMgd2lsbCBjYXVzZSBhIDpleGM6YFZhbHVlRXJyb3JgCiAgICBleGNlcHRpb24gdG8gYmUgcmFpc2VkLgpAQCAtMjQ3LDYgKzMzOSw3MyBAQAogICAgOmNvbnN0OmBTSUdURVJNYC4gQSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpbiBhbnkgb3RoZXIgY2FzZS4KIAogCisuLiBmdW5jdGlvbjo6IHNpZ3BlbmRpbmcoKQorCisgICBFeGFtaW5lIHRoZSBzZXQgb2Ygc2lnbmFscyB0aGF0IGFyZSBwZW5kaW5nIGZvciBkZWxpdmVyeSB0byB0aGUgY2FsbGluZworICAgdGhyZWFkIChpLmUuLCB0aGUgc2lnbmFscyB3aGljaCBoYXZlIGJlZW4gcmFpc2VkIHdoaWxlIGJsb2NrZWQpLiAgUmV0dXJuIHRoZQorICAgc2V0IG9mIHRoZSBwZW5kaW5nIHNpZ25hbHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lncGVuZGluZygyKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AgYW5kIDpmdW5jOmBzaWd3YWl0YC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBzaWd3YWl0KHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBzaWduYWwKKyAgIChyZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzKSwgYW5kIHJldHVybnMgdGhlIHNpZ25hbCBudW1iZXIuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdCgzKWAgZm9yIGZ1cnRoZXIKKyAgIGluZm9ybWF0aW9uKS4KKworICAgU2VlIGFsc28gOmZ1bmM6YHBhdXNlYCwgOmZ1bmM6YHB0aHJlYWRfc2lnbWFza2AsIDpmdW5jOmBzaWdwZW5kaW5nYCwKKyAgIDpmdW5jOmBzaWd3YWl0aW5mb2AgYW5kIDpmdW5jOmBzaWd0aW1lZHdhaXRgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IHNpZ3dhaXRpbmZvKHNpZ3NldCkKKworICAgU3VzcGVuZCBleGVjdXRpb24gb2YgdGhlIGNhbGxpbmcgdGhyZWFkIHVudGlsIHRoZSBkZWxpdmVyeSBvZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIHNwZWNpZmllZCBpbiB0aGUgc2lnbmFsIHNldCAqc2lnc2V0Ki4gIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZQorICAgc2lnbmFsIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIHBlbmRpbmcgbGlzdCBvZiBzaWduYWxzLiBJZiBvbmUgb2YgdGhlCisgICBzaWduYWxzIGluICpzaWdzZXQqIGlzIGFscmVhZHkgcGVuZGluZyBmb3IgdGhlIGNhbGxpbmcgdGhyZWFkLCB0aGUgZnVuY3Rpb24KKyAgIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhhdCBzaWduYWwuIFRoZSBzaWduYWwKKyAgIGhhbmRsZXIgaXMgbm90IGNhbGxlZCBmb3IgdGhlIGRlbGl2ZXJlZCBzaWduYWwuIFRoZSBmdW5jdGlvbiByYWlzZXMgYW4KKyAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIHRoYXQgaXMgbm90IGluCisgICAqc2lnc2V0Ki4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbiBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGNvbnRhaW5lZCBpbiB0aGUKKyAgIDpjOnR5cGU6YHNpZ2luZm9fdGAgc3RydWN0dXJlLCBuYW1lbHk6IDphdHRyOmBzaV9zaWdub2AsIDphdHRyOmBzaV9jb2RlYCwKKyAgIDphdHRyOmBzaV9lcnJub2AsIDphdHRyOmBzaV9waWRgLCA6YXR0cjpgc2lfdWlkYCwgOmF0dHI6YHNpX3N0YXR1c2AsCisgICA6YXR0cjpgc2lfYmFuZGAuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peCAoc2VlIHRoZSBtYW4gcGFnZSA6bWFucGFnZTpgc2lnd2FpdGluZm8oMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3RpbWVkd2FpdGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogc2lndGltZWR3YWl0KHNpZ3NldCwgdGltZW91dCkKKworICAgTGlrZSA6ZnVuYzpgc2lnd2FpdGluZm9gLCBidXQgdGFrZXMgYW4gYWRkaXRpb25hbCAqdGltZW91dCogYXJndW1lbnQKKyAgIHNwZWNpZnlpbmcgYSB0aW1lb3V0LiBJZiAqdGltZW91dCogaXMgc3BlY2lmaWVkIGFzIDpjb25zdDpgMGAsIGEgcG9sbCBpcworICAgcGVyZm9ybWVkLiBSZXR1cm5zIDpjb25zdDpgTm9uZWAgaWYgYSB0aW1lb3V0IG9jY3Vycy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4IChzZWUgdGhlIG1hbiBwYWdlIDptYW5wYWdlOmBzaWd0aW1lZHdhaXQoMilgIGZvciBmdXJ0aGVyCisgICBpbmZvcm1hdGlvbikuCisKKyAgIFNlZSBhbHNvIDpmdW5jOmBwYXVzZWAsIDpmdW5jOmBzaWd3YWl0YCBhbmQgOmZ1bmM6YHNpZ3dhaXRpbmZvYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gX3NpZ25hbC1leGFtcGxlOgogCiBFeGFtcGxlCkBAIC0yNjMsNyArNDIyLDcgQEAKIAogICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgcHJpbnQoJ1NpZ25hbCBoYW5kbGVyIGNhbGxlZCB3aXRoIHNpZ25hbCcsIHNpZ251bSkKLSAgICAgICByYWlzZSBJT0Vycm9yKCJDb3VsZG4ndCBvcGVuIGRldmljZSEiKQorICAgICAgIHJhaXNlIE9TRXJyb3IoIkNvdWxkbid0IG9wZW4gZGV2aWNlISIpCiAKICAgICMgU2V0IHRoZSBzaWduYWwgaGFuZGxlciBhbmQgYSA1LXNlY29uZCBhbGFybQogICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NpdGUucnN0IGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKaW5kZXggNTc5NTcxYS4uMzZiODBjMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2l0ZS5yc3QKQEAgLTE2LDcgKzE2LDE0IEBACiAuLiBpbmRleDo6IHRyaXBsZTogbW9kdWxlOyBzZWFyY2g7IHBhdGgKIAogSW1wb3J0aW5nIHRoaXMgbW9kdWxlIHdpbGwgYXBwZW5kIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAotYW5kIGFkZCBhIGZldyBidWlsdGlucy4KK2FuZCBhZGQgYSBmZXcgYnVpbHRpbnMsIHVubGVzcyA6b3B0aW9uOmAtU2Agd2FzIHVzZWQuICBJbiB0aGF0IGNhc2UsIHRoaXMgbW9kdWxlCitjYW4gYmUgc2FmZWx5IGltcG9ydGVkIHdpdGggbm8gYXV0b21hdGljIG1vZGlmaWNhdGlvbnMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aAorb3IgYWRkaXRpb25zIHRvIHRoZSBidWlsdGlucy4gIFRvIGV4cGxpY2l0bHkgdHJpZ2dlciB0aGUgdXN1YWwgc2l0ZS1zcGVjaWZpYworYWRkaXRpb25zLCBjYWxsIHRoZSA6ZnVuYzpgc2l0ZS5tYWluYCBmdW5jdGlvbi4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEltcG9ydGluZyB0aGUgbW9kdWxlIHVzZWQgdG8gdHJpZ2dlciBwYXRocyBtYW5pcHVsYXRpb24gZXZlbiB3aGVuIHVzaW5nCisgICA6b3B0aW9uOmAtU2AuCiAKIC4uIGluZGV4OjoKICAgIHBhaXI6IHNpdGUtcHl0aG9uOyBkaXJlY3RvcnkKQEAgLTMxLDYgKzM4LDE1IEBACiBpZiBpdCByZWZlcnMgdG8gYW4gZXhpc3RpbmcgZGlyZWN0b3J5LCBhbmQgaWYgc28sIGFkZHMgaXQgdG8gYGBzeXMucGF0aGBgIGFuZAogYWxzbyBpbnNwZWN0cyB0aGUgbmV3bHkgYWRkZWQgcGF0aCBmb3IgY29uZmlndXJhdGlvbiBmaWxlcy4KIAorSWYgYSBmaWxlIG5hbWVkICJweXZlbnYuY2ZnIiBleGlzdHMgb25lIGRpcmVjdG9yeSBhYm92ZSBzeXMuZXhlY3V0YWJsZSwKK3N5cy5wcmVmaXggYW5kIHN5cy5leGVjX3ByZWZpeCBhcmUgc2V0IHRvIHRoYXQgZGlyZWN0b3J5IGFuZAoraXQgaXMgYWxzbyBjaGVja2VkIGZvciBzaXRlLXBhY2thZ2VzIGFuZCBzaXRlLXB5dGhvbiAoc3lzLmJhc2VfcHJlZml4IGFuZAorc3lzLmJhc2VfZXhlY19wcmVmaXggd2lsbCBhbHdheXMgYmUgdGhlICJyZWFsIiBwcmVmaXhlcyBvZiB0aGUgUHl0aG9uCitpbnN0YWxsYXRpb24pLiBJZiAicHl2ZW52LmNmZyIgKGEgYm9vdHN0cmFwIGNvbmZpZ3VyYXRpb24gZmlsZSkgY29udGFpbnMKK3RoZSBrZXkgImluY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMiIHNldCB0byBhbnl0aGluZyBvdGhlciB0aGFuICJmYWxzZSIKKyhjYXNlLWluc2Vuc2l0aXZlKSwgdGhlIHN5c3RlbS1sZXZlbCBwcmVmaXhlcyB3aWxsIHN0aWxsIGFsc28gYmUKK3NlYXJjaGVkIGZvciBzaXRlLXBhY2thZ2VzOyBvdGhlcndpc2UgdGhleSB3b24ndC4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0gOmZpbGU6YHtuYW1lfS5wdGhgCiBhbmQgZXhpc3RzIGluIG9uZSBvZiB0aGUgZm91ciBkaXJlY3RvcmllcyBtZW50aW9uZWQgYWJvdmU7IGl0cyBjb250ZW50cyBhcmUKIGFkZGl0aW9uYWwgaXRlbXMgKG9uZSBwZXIgbGluZSkgdG8gYmUgYWRkZWQgdG8gYGBzeXMucGF0aGBgLiAgTm9uLWV4aXN0aW5nIGl0ZW1zCkBAIC0xMjksOCArMTQ1LDE5IEBACiAgICA6ZmlsZTpgfi9MaWJyYXJ5L1B5dGhvbi97WC5ZfWAgZm9yIE1hYyBmcmFtZXdvcmsgYnVpbGRzLCBhbmQKICAgIDpmaWxlOmB7JUFQUERBVEElfVxcUHl0aG9uYCBmb3IgV2luZG93cy4gIFRoaXMgdmFsdWUgaXMgdXNlZCBieSBEaXN0dXRpbHMgdG8KICAgIGNvbXB1dGUgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcmllcyBmb3Igc2NyaXB0cywgZGF0YSBmaWxlcywgUHl0aG9uIG1vZHVsZXMsCi0gICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4gIFNlZQotICAgYWxzbyA6ZW52dmFyOmBQWVRIT05VU0VSQkFTRWAuCisgICBldGMuIGZvciB0aGUgOnJlZjpgdXNlciBpbnN0YWxsYXRpb24gc2NoZW1lIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YC4KKyAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTlVTRVJCQVNFYC4KKworCisuLiBmdW5jdGlvbjo6IG1haW4oKQorCisgICBBZGRzIGFsbCB0aGUgc3RhbmRhcmQgc2l0ZS1zcGVjaWZpYyBkaXJlY3RvcmllcyB0byB0aGUgbW9kdWxlIHNlYXJjaAorICAgcGF0aC4gIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGlzIG1vZHVsZSBpcyBpbXBvcnRlZCwKKyAgIHVubGVzcyB0aGUgOnByb2dyYW06YHB5dGhvbmAgaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgOm9wdGlvbjpgLVNgCisgICBmbGFnLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGJlIGNhbGxlZCB1bmNvbmRpdGlvbm5hbGx5LgogCiAKIC4uIGZ1bmN0aW9uOjogYWRkc2l0ZWRpcihzaXRlZGlyLCBrbm93bl9wYXRocz1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGJmZGM3MjcuLjJjYTcxZmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTIwLDE3ICsyMCwyNCBAQAogQWRkaXRpb25hbGx5IHRoZSBTTVRQQ2hhbm5lbCBtYXkgYmUgZXh0ZW5kZWQgdG8gaW1wbGVtZW50IHZlcnkgc3BlY2lmaWMKIGludGVyYWN0aW9uIGJlaGF2aW91ciB3aXRoIFNNVFAgY2xpZW50cy4KIAorVGhlIGNvZGUgc3VwcG9ydHMgOlJGQzpgNTMyMWAsIHBsdXMgdGhlIDpyZmM6YDE4NzBgIFNJWkUgZXh0ZW5zaW9uLgorCisKIFNNVFBTZXJ2ZXIgT2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gY2xhc3M6OiBTTVRQU2VydmVyKGxvY2FsYWRkciwgcmVtb3RlYWRkcikKKy4uIGNsYXNzOjogU01UUFNlcnZlcihsb2NhbGFkZHIsIHJlbW90ZWFkZHIsIGRhdGFfc2l6ZV9saW1pdD0zMzU1NDQzMikKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUFNlcnZlcmAgb2JqZWN0LCB3aGljaCBiaW5kcyB0byBsb2NhbCBhZGRyZXNzCiAgICAqbG9jYWxhZGRyKi4gIEl0IHdpbGwgdHJlYXQgKnJlbW90ZWFkZHIqIGFzIGFuIHVwc3RyZWFtIFNNVFAgcmVsYXllci4gIEl0CiAgICBpbmhlcml0cyBmcm9tIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIGFuZCBzbyB3aWxsIGluc2VydCBpdHNlbGYgaW50bwogICAgOm1vZDpgYXN5bmNvcmVgJ3MgZXZlbnQgbG9vcCBvbiBpbnN0YW50aWF0aW9uLgogCisgICAqZGF0YV9zaXplX2xpbWl0KiBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2lsbCBiZQorICAgYWNjZXB0ZWQgaW4gYSBgYERBVEFgYCBjb21tYW5kLiAgQSB2YWx1ZSBvZiBgYE5vbmVgYCBvciBgYDBgYCBtZWFucyBubworICAgbGltaXQuCisKICAgIC4uIG1ldGhvZDo6IHByb2Nlc3NfbWVzc2FnZShwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKIAogICAgICAgUmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgZXhjZXB0aW9uLiBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8KQEAgLTE1NiwxMSArMTYzLDE1IEBACiAgICBDb21tYW5kICBBY3Rpb24gdGFrZW4KICAgID09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIEhFTE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCi0gICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBiYXNlIGNvbW1hbmQgbW9kZS4KKyAgIEVITE8gICAgIEFjY2VwdHMgdGhlIGdyZWV0aW5nIGZyb20gdGhlIGNsaWVudCBhbmQgc3RvcmVzIGl0IGluCisgICAgICAgICAgICA6YXR0cjpgc2Vlbl9ncmVldGluZ2AuICBTZXRzIHNlcnZlciB0byBleHRlbmRlZCBjb21tYW5kIG1vZGUuCiAgICBOT09QICAgICBUYWtlcyBubyBhY3Rpb24uCiAgICBRVUlUICAgICBDbG9zZXMgdGhlIGNvbm5lY3Rpb24gY2xlYW5seS4KICAgIE1BSUwgICAgIEFjY2VwdHMgdGhlICJNQUlMIEZST006IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzcyBhcwotICAgICAgICAgICAgOmF0dHI6YG1haWxmcm9tYC4KKyAgICAgICAgICAgIDphdHRyOmBtYWlsZnJvbWAuICBJbiBleHRlbmRlZCBjb21tYW5kIG1vZGUsIGFjY2VwdHMgdGhlCisgICAgICAgICAgICA6cmZjOmAxODcwYCBTSVpFIGF0dHJpYnV0ZSBhbmQgcmVzcG9uZHMgYXBwcm9wcmlhdGVseSBiYXNlZCBvbiB0aGUKKyAgICAgICAgICAgIHZhbHVlIG9mICpkYXRhX3NpemVfbGltaXQqLgogICAgUkNQVCAgICAgQWNjZXB0cyB0aGUgIlJDUFQgVE86IiBzeW50YXggYW5kIHN0b3JlcyB0aGUgc3VwcGxpZWQgYWRkcmVzc2VzIGluCiAgICAgICAgICAgICB0aGUgOmF0dHI6YHJjcHR0b3NgIGxpc3QuCiAgICBSU0VUICAgICBSZXNldHMgdGhlIDphdHRyOmBtYWlsZnJvbWAsIDphdHRyOmByY3B0dG9zYCwgYW5kCkBAIC0xNjgsNCArMTc5LDcgQEAKICAgIERBVEEgICAgIFNldHMgdGhlIGludGVybmFsIHN0YXRlIHRvIDphdHRyOmBEQVRBYCBhbmQgc3RvcmVzIHJlbWFpbmluZyBsaW5lcwogICAgICAgICAgICAgZnJvbSB0aGUgY2xpZW50IGluIDphdHRyOmByZWNlaXZlZF9kYXRhYCB1bnRpbCB0aGUgdGVybWluYXRvcgogICAgICAgICAgICAgYGAiXHJcbi5cclxuImBgIGlzIHJlY2VpdmVkLgorICAgSEVMUCAgICAgUmV0dXJucyBtaW5pbWFsIGluZm9ybWF0aW9uIG9uIGNvbW1hbmQgc3ludGF4CisgICBWUkZZICAgICBSZXR1cm5zIGNvZGUgMjUyICh0aGUgc2VydmVyIGRvZXNuJ3Qga25vdyBpZiB0aGUgYWRkcmVzcyBpcyB2YWxpZCkKKyAgIEVYUE4gICAgIFJlcG9ydHMgdGhhdCB0aGUgY29tbWFuZCBpcyBub3QgaW1wbGVtZW50ZWQuCiAgICA9PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CmluZGV4IDMxMDFhYjcuLjcxMTk4MWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NtdHBsaWIucnN0CkBAIC0yMCw3ICsyMCw3IEBACiBQcm90b2NvbCkgYW5kIDpyZmM6YDE4NjlgIChTTVRQIFNlcnZpY2UgRXh0ZW5zaW9ucykuCiAKIAotLi4gY2xhc3M6OiBTTVRQKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZVssIHRpbWVvdXRdKQorLi4gY2xhc3M6OiBTTVRQKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZVssIHRpbWVvdXRdLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBBIDpjbGFzczpgU01UUGAgaW5zdGFuY2UgZW5jYXBzdWxhdGVzIGFuIFNNVFAgY29ubmVjdGlvbi4gIEl0IGhhcyBtZXRob2RzCiAgICB0aGF0IHN1cHBvcnQgYSBmdWxsIHJlcGVydG9pcmUgb2YgU01UUCBhbmQgRVNNVFAgb3BlcmF0aW9ucy4gSWYgdGhlIG9wdGlvbmFsCkBAIC0yOSwxMyArMjksMzQgQEAKICAgIHJhaXNlZCBpZiB0aGUgc3BlY2lmaWVkIGhvc3QgZG9lc24ndCByZXNwb25kIGNvcnJlY3RseS4gVGhlIG9wdGlvbmFsCiAgICAqdGltZW91dCogcGFyYW1ldGVyIHNwZWNpZmllcyBhIHRpbWVvdXQgaW4gc2Vjb25kcyBmb3IgYmxvY2tpbmcgb3BlcmF0aW9ucwogICAgbGlrZSB0aGUgY29ubmVjdGlvbiBhdHRlbXB0IChpZiBub3Qgc3BlY2lmaWVkLCB0aGUgZ2xvYmFsIGRlZmF1bHQgdGltZW91dAotICAgc2V0dGluZyB3aWxsIGJlIHVzZWQpLgorICAgc2V0dGluZyB3aWxsIGJlIHVzZWQpLiBUaGUgb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIGFsbG93cyB0byBiaW5kIHRvIHNvbWUKKyAgIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIGluIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgIGFuZC9vciB0byBzb21lIHNwZWNpZmljIHNvdXJjZSBUQ1AgcG9ydC4gSXQgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSwKKyAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZgorICAgb21pdHRlZCAob3IgaWYgaG9zdCBvciBwb3J0IGFyZSBgYCcnYGAgYW5kL29yIDAgcmVzcGVjdGl2ZWx5KSB0aGUgT1MgZGVmYXVsdAorICAgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgogCiAgICBGb3Igbm9ybWFsIHVzZSwgeW91IHNob3VsZCBvbmx5IHJlcXVpcmUgdGhlIGluaXRpYWxpemF0aW9uL2Nvbm5lY3QsCiAgICA6bWV0aDpgc2VuZG1haWxgLCBhbmQgOm1ldGg6YHF1aXRgIG1ldGhvZHMuICBBbiBleGFtcGxlIGlzIGluY2x1ZGVkIGJlbG93LgogCisgICBUaGUgOmNsYXNzOmBTTVRQYCBjbGFzcyBzdXBwb3J0cyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdXNlZAorICAgbGlrZSB0aGlzLCB0aGUgU01UUCBgYFFVSVRgYCBjb21tYW5kIGlzIGlzc3VlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlCisgICA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGV4aXRzLiAgRS5nLjo6CiAKLS4uIGNsYXNzOjogU01UUF9TU0woaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmVbLCB0aW1lb3V0XSkKKyAgICA+Pj4gZnJvbSBzbXRwbGliIGltcG9ydCBTTVRQCisgICAgPj4+IHdpdGggU01UUCgiZG9tYWluLm9yZyIpIGFzIHNtdHA6CisgICAgLi4uICAgICBzbXRwLm5vb3AoKQorICAgIC4uLgorICAgICgyNTAsIGInT2snKQorICAgID4+PgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgd2FzIGFkZGVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgc291cmNlX2FkZHJlc3MgYXJndW1lbnQgd2FzIGFkZGVkLgorCisuLiBjbGFzczo6IFNNVFBfU1NMKGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lWywgdGltZW91dF0sIGNvbnRleHQ9Tm9uZSwgc291cmNlX2FkZHJlc3M9Tm9uZSkKIAogICAgQSA6Y2xhc3M6YFNNVFBfU1NMYCBpbnN0YW5jZSBiZWhhdmVzIGV4YWN0bHkgdGhlIHNhbWUgYXMgaW5zdGFuY2VzIG9mCiAgICA6Y2xhc3M6YFNNVFBgLiA6Y2xhc3M6YFNNVFBfU1NMYCBzaG91bGQgYmUgdXNlZCBmb3Igc2l0dWF0aW9ucyB3aGVyZSBTU0wgaXMKQEAgLTQzLDE4ICs2NCwzMyBAQAogICAgbm90IGFwcHJvcHJpYXRlLiBJZiAqaG9zdCogaXMgbm90IHNwZWNpZmllZCwgdGhlIGxvY2FsIGhvc3QgaXMgdXNlZC4gSWYKICAgICpwb3J0KiBpcyB6ZXJvLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuICprZXlmaWxlKgogICAgYW5kICpjZXJ0ZmlsZSogYXJlIGFsc28gb3B0aW9uYWwsIGFuZCBjYW4gY29udGFpbiBhIFBFTSBmb3JtYXR0ZWQgcHJpdmF0ZSBrZXkKLSAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uIFRoZSBvcHRpb25hbCAqdGltZW91dCoKKyAgIGFuZCBjZXJ0aWZpY2F0ZSBjaGFpbiBmaWxlIGZvciB0aGUgU1NMIGNvbm5lY3Rpb24uICpjb250ZXh0KiBhbHNvIG9wdGlvbmFsLCBjYW4gY29udGFpbgorICAgYSBTU0xDb250ZXh0LCBhbmQgaXMgYW4gYWx0ZXJuYXRpdmUgdG8ga2V5ZmlsZSBhbmQgY2VydGZpbGU7IElmIGl0IGlzIHNwZWNpZmllZCBib3RoCisgICBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBtdXN0IGJlIE5vbmUuICBUaGUgb3B0aW9uYWwgKnRpbWVvdXQqCiAgICBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgdGltZW91dCBpbiBzZWNvbmRzIGZvciBibG9ja2luZyBvcGVyYXRpb25zIGxpa2UgdGhlCiAgICBjb25uZWN0aW9uIGF0dGVtcHQgKGlmIG5vdCBzcGVjaWZpZWQsIHRoZSBnbG9iYWwgZGVmYXVsdCB0aW1lb3V0IHNldHRpbmcKLSAgIHdpbGwgYmUgdXNlZCkuCisgICB3aWxsIGJlIHVzZWQpLiBUaGUgb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyIGFsbG93cyB0byBiaW5kIHRvIHNvbWUKKyAgIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIGluIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlIG5ldHdvcmsgaW50ZXJmYWNlcywKKyAgIGFuZC9vciB0byBzb21lIHNwZWNpZmljIHNvdXJjZSB0Y3AgcG9ydC4gSXQgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSwKKyAgIGZvciB0aGUgc29ja2V0IHRvIGJpbmQgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLiBJZgorICAgb21pdHRlZCAob3IgaWYgaG9zdCBvciBwb3J0IGFyZSBgYCcnYGAgYW5kL29yIDAgcmVzcGVjdGl2ZWx5KSB0aGUgT1MgZGVmYXVsdAorICAgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIHNvdXJjZV9hZGRyZXNzIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogCi0uLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUpCisuLiBjbGFzczo6IExNVFAoaG9zdD0nJywgcG9ydD1MTVRQX1BPUlQsIGxvY2FsX2hvc3RuYW1lPU5vbmUsIHNvdXJjZV9hZGRyZXNzPU5vbmUpCiAKICAgIFRoZSBMTVRQIHByb3RvY29sLCB3aGljaCBpcyB2ZXJ5IHNpbWlsYXIgdG8gRVNNVFAsIGlzIGhlYXZpbHkgYmFzZWQgb24gdGhlCi0gICBzdGFuZGFyZCBTTVRQIGNsaWVudC4gSXQncyBjb21tb24gdG8gdXNlIFVuaXggc29ja2V0cyBmb3IgTE1UUCwgc28gb3VyIDptZXRoOmBjb25uZWN0YAotICAgbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydCBzZXJ2ZXIuIFRvIHNwZWNpZnkgYQotICAgVW5peCBzb2NrZXQsIHlvdSBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciAqaG9zdCosIHN0YXJ0aW5nIHdpdGggYSAnLycuCisgICBzdGFuZGFyZCBTTVRQIGNsaWVudC4gSXQncyBjb21tb24gdG8gdXNlIFVuaXggc29ja2V0cyBmb3IgTE1UUCwgc28gb3VyCisgICA6bWV0aDpgY29ubmVjdGAgbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAorICAgc2VydmVyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGxvY2FsX2hvc3RuYW1lIGFuZCBzb3VyY2VfYWRkcmVzcyBoYXZlIHRoZQorICAgc2FtZSBtZWFuaW5nIGFzIHRoYXQgb2YgU01UUCBjbGllbnQuIFRvIHNwZWNpZnkgYSBVbml4IHNvY2tldCwgeW91IG11c3QgdXNlCisgICBhbiBhYnNvbHV0ZSBwYXRoIGZvciAqaG9zdCosIHN0YXJ0aW5nIHdpdGggYSAnLycuCiAKICAgIEF1dGhlbnRpY2F0aW9uIGlzIHN1cHBvcnRlZCwgdXNpbmcgdGhlIHJlZ3VsYXIgU01UUCBtZWNoYW5pc20uIFdoZW4gdXNpbmcgYSBVbml4CiAgICBzb2NrZXQsIExNVFAgZ2VuZXJhbGx5IGRvbid0IHN1cHBvcnQgb3IgcmVxdWlyZSBhbnkgYXV0aGVudGljYXRpb24sIGJ1dCB5b3VyCkBAIC0yNDIsNyArMjc4LDcgQEAKICAgICAgIE5vIHN1aXRhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB3YXMgZm91bmQuCiAKIAotLi4gbWV0aG9kOjogU01UUC5zdGFydHRscyhrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUpCisuLiBtZXRob2Q6OiBTTVRQLnN0YXJ0dGxzKGtleWZpbGU9Tm9uZSwgY2VydGZpbGU9Tm9uZSwgY29udGV4dD1Ob25lKQogCiAgICBQdXQgdGhlIFNNVFAgY29ubmVjdGlvbiBpbiBUTFMgKFRyYW5zcG9ydCBMYXllciBTZWN1cml0eSkgbW9kZS4gIEFsbCBTTVRQCiAgICBjb21tYW5kcyB0aGF0IGZvbGxvdyB3aWxsIGJlIGVuY3J5cHRlZC4gIFlvdSBzaG91bGQgdGhlbiBjYWxsIDptZXRoOmBlaGxvYApAQCAtMjUxLDYgKzI4Nyw5IEBACiAgICBJZiAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogYXJlIHByb3ZpZGVkLCB0aGVzZSBhcmUgcGFzc2VkIHRvIHRoZSA6bW9kOmBzb2NrZXRgCiAgICBtb2R1bGUncyA6ZnVuYzpgc3NsYCBmdW5jdGlvbi4KIAorICAgT3B0aW9uYWwgKmNvbnRleHQqIHBhcmFtZXRlciBpcyBhIDpjbGFzczpgc3NsLlNTTENvbnRleHRgIG9iamVjdDsgVGhpcyBpcyBhbiBhbHRlcm5hdGl2ZSB0bworICAgdXNpbmcgYSBrZXlmaWxlIGFuZCBhIGNlcnRmaWxlIGFuZCBpZiBzcGVjaWZpZWQgYm90aCAqa2V5ZmlsZSogYW5kICpjZXJ0ZmlsZSogc2hvdWxkIGJlIE5vbmUuCisKICAgIElmIHRoZXJlIGhhcyBiZWVuIG5vIHByZXZpb3VzIGBgRUhMT2BgIG9yIGBgSEVMT2BgIGNvbW1hbmQgdGhpcyBzZXNzaW9uLAogICAgdGhpcyBtZXRob2QgdHJpZXMgRVNNVFAgYGBFSExPYGAgZmlyc3QuCiAKQEAgLTI2Myw2ICszMDIsOSBAQAogICAgOmV4YzpgUnVudGltZUVycm9yYAogICAgICBTU0wvVExTIHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZSB0byB5b3VyIFB5dGhvbiBpbnRlcnByZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpjb250ZXh0KiB3YXMgYWRkZWQuCisKIAogLi4gbWV0aG9kOjogU01UUC5zZW5kbWFpbChmcm9tX2FkZHIsIHRvX2FkZHJzLCBtc2csIG1haWxfb3B0aW9ucz1bXSwgcmNwdF9vcHRpb25zPVtdKQogCkBAIC0zMjAsNyArMzYyLDggQEAKICAgIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIHRoZSBjb25uZWN0aW9uIHdpbGwgYmUgb3BlbiBldmVuIGFmdGVyIGFuIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiAqbXNnKiBtYXkgYmUgYSBieXRlIHN0cmluZy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAqbXNnKiBtYXkgYmUgYSBieXRlIHN0cmluZy4KIAogCiAuLiBtZXRob2Q6OiBTTVRQLnNlbmRfbWVzc2FnZShtc2csIGZyb21fYWRkcj1Ob25lLCB0b19hZGRycz1Ob25lLCBcCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAppbmRleCAzNDRhMjlmLi41NzM3YjQwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKQEAgLTQwLDkgKzQwLDIzIEBACiBEZXBlbmRpbmcgb24gdGhlIHN5c3RlbSBhbmQgdGhlIGJ1aWxkIG9wdGlvbnMsIHZhcmlvdXMgc29ja2V0IGZhbWlsaWVzCiBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi1Tb2NrZXQgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOgorVGhlIGFkZHJlc3MgZm9ybWF0IHJlcXVpcmVkIGJ5IGEgcGFydGljdWxhciBzb2NrZXQgb2JqZWN0IGlzIGF1dG9tYXRpY2FsbHkKK3NlbGVjdGVkIGJhc2VkIG9uIHRoZSBhZGRyZXNzIGZhbWlseSBzcGVjaWZpZWQgd2hlbiB0aGUgc29ja2V0IG9iamVjdCB3YXMKK2NyZWF0ZWQuICBTb2NrZXQgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBmb2xsb3dzOgogCi0tIEEgc2luZ2xlIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgOmNvbnN0OmBBRl9VTklYYCBhZGRyZXNzIGZhbWlseS4KKy0gVGhlIGFkZHJlc3Mgb2YgYW4gOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgYm91bmQgdG8gYSBmaWxlIHN5c3RlbSBub2RlCisgIGlzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nLCB1c2luZyB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgYW5kIHRoZQorICBgYCdzdXJyb2dhdGVlc2NhcGUnYGAgZXJyb3IgaGFuZGxlciAoc2VlIDpwZXA6YDM4M2ApLiAgQW4gYWRkcmVzcyBpbgorICBMaW51eCdzIGFic3RyYWN0IG5hbWVzcGFjZSBpcyByZXR1cm5lZCBhcyBhIDpjbGFzczpgYnl0ZXNgIG9iamVjdCB3aXRoCisgIGFuIGluaXRpYWwgbnVsbCBieXRlOyBub3RlIHRoYXQgc29ja2V0cyBpbiB0aGlzIG5hbWVzcGFjZSBjYW4KKyAgY29tbXVuaWNhdGUgd2l0aCBub3JtYWwgZmlsZSBzeXN0ZW0gc29ja2V0cywgc28gcHJvZ3JhbXMgaW50ZW5kZWQgdG8KKyAgcnVuIG9uIExpbnV4IG1heSBuZWVkIHRvIGRlYWwgd2l0aCBib3RoIHR5cGVzIG9mIGFkZHJlc3MuICBBIHN0cmluZyBvcgorICA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgY2FuIGJlIHVzZWQgZm9yIGVpdGhlciB0eXBlIG9mIGFkZHJlc3Mgd2hlbgorICBwYXNzaW5nIGl0IGFzIGFuIGFyZ3VtZW50LgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUHJldmlvdXNseSwgOmNvbnN0OmBBRl9VTklYYCBzb2NrZXQgcGF0aHMgd2VyZSBhc3N1bWVkIHRvIHVzZSBVVEYtOAorICAgICAgZW5jb2RpbmcuCiAKIC0gQSBwYWlyIGBgKGhvc3QsIHBvcnQpYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfSU5FVGAgYWRkcmVzcyBmYW1pbHksCiAgIHdoZXJlICpob3N0KiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgZWl0aGVyIGEgaG9zdG5hbWUgaW4gSW50ZXJuZXQgZG9tYWluCkBAIC04MCw2ICs5NCwxOSBAQAogICAgIElmICphZGRyX3R5cGUqIGlzIDpjb25zdDpgVElQQ19BRERSX0lEYCwgdGhlbiAqdjEqIGlzIHRoZSBub2RlLCAqdjIqIGlzIHRoZQogICAgIHJlZmVyZW5jZSwgYW5kICp2Myogc2hvdWxkIGJlIHNldCB0byAwLgogCistIEEgdHVwbGUgYGAoaW50ZXJmYWNlLCApYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgQUZfQ0FOYCBhZGRyZXNzIGZhbWlseSwKKyAgd2hlcmUgKmludGVyZmFjZSogaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgbmV0d29yayBpbnRlcmZhY2UgbmFtZSBsaWtlCisgIGBgJ2NhbjAnYGAuIFRoZSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGBgJydgYCBjYW4gYmUgdXNlZCB0byByZWNlaXZlIHBhY2tldHMKKyAgZnJvbSBhbGwgbmV0d29yayBpbnRlcmZhY2VzIG9mIHRoaXMgZmFtaWx5LgorCistIEEgc3RyaW5nIG9yIGEgdHVwbGUgYGAoaWQsIHVuaXQpYGAgaXMgdXNlZCBmb3IgdGhlIDpjb25zdDpgU1lTUFJPVE9fQ09OVFJPTGAKKyAgcHJvdG9jb2wgb2YgdGhlIDpjb25zdDpgUEZfU1lTVEVNYCBmYW1pbHkuIFRoZSBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgYQorICBrZXJuZWwgY29udHJvbCB1c2luZyBhIGR5bmFtaWNhbGx5LWFzc2lnbmVkIElELiBUaGUgdHVwbGUgY2FuIGJlIHVzZWQgaWYgSUQKKyAgYW5kIHVuaXQgbnVtYmVyIG9mIHRoZSBrZXJuZWwgY29udHJvbCBhcmUga25vd24gb3IgaWYgYSByZWdpc3RlcmVkIElEIGlzCisgIHVzZWQuCisKKyAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKIC0gQ2VydGFpbiBvdGhlciBhZGRyZXNzIGZhbWlsaWVzICg6Y29uc3Q6YEFGX0JMVUVUT09USGAsIDpjb25zdDpgQUZfUEFDS0VUYCkKICAgc3VwcG9ydCBzcGVjaWZpYyByZXByZXNlbnRhdGlvbnMuCiAKQEAgLTk5LDggKzEyNiw5IEBACiBudW1lcmljIGFkZHJlc3MgaW4gKmhvc3QqIHBvcnRpb24uCiAKIEFsbCBlcnJvcnMgcmFpc2UgZXhjZXB0aW9ucy4gIFRoZSBub3JtYWwgZXhjZXB0aW9ucyBmb3IgaW52YWxpZCBhcmd1bWVudCB0eXBlcwotYW5kIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBjYW4gYmUgcmFpc2VkOyBlcnJvcnMgcmVsYXRlZCB0byBzb2NrZXQgb3IgYWRkcmVzcwotc2VtYW50aWNzIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmAgb3Igb25lIG9mIGl0cyBzdWJjbGFzc2VzLgorYW5kIG91dC1vZi1tZW1vcnkgY29uZGl0aW9ucyBjYW4gYmUgcmFpc2VkOyBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjMsIGVycm9ycworcmVsYXRlZCB0byBzb2NrZXQgb3IgYWRkcmVzcyBzZW1hbnRpY3MgcmFpc2UgOmV4YzpgT1NFcnJvcmAgb3Igb25lIG9mIGl0cworc3ViY2xhc3NlcyAodGhleSB1c2VkIHRvIHJhaXNlIDpleGM6YHNvY2tldC5lcnJvcmApLgogCiBOb24tYmxvY2tpbmcgbW9kZSBpcyBzdXBwb3J0ZWQgdGhyb3VnaCA6bWV0aDpgfnNvY2tldC5zZXRibG9ja2luZ2AuICBBCiBnZW5lcmFsaXphdGlvbiBvZiB0aGlzIGJhc2VkIG9uIHRpbWVvdXRzIGlzIHN1cHBvcnRlZCB0aHJvdWdoCkBAIC0xMTUsMjAgKzE0MywxNSBAQAogCiAuLiBleGNlcHRpb246OiBlcnJvcgogCi0gICAuLiBpbmRleDo6IG1vZHVsZTogZXJybm8KKyAgIEEgZGVwcmVjYXRlZCBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBJT0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvciBzb2NrZXQtcmVsYXRlZAotICAgZXJyb3JzLiAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgaW5zcGVjdCBpdHMgYGBlcnJub2BgIGF0dHJpYnV0ZSB0bwotICAgZGlzY3JpbWluYXRlIGJldHdlZW4gZGlmZmVyZW50IGtpbmRzIG9mIGVycm9ycy4KLQotICAgLi4gc2VlYWxzbzo6Ci0gICAgICBUaGUgOm1vZDpgZXJybm9gIG1vZHVsZSBjb250YWlucyBzeW1ib2xpYyBuYW1lcyBmb3IgdGhlIGVycm9yIGNvZGVzCi0gICAgICBkZWZpbmVkIGJ5IHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0uCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgRm9sbG93aW5nIDpwZXA6YDMxNTFgLCB0aGlzIGNsYXNzIHdhcyBtYWRlIGFuIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IGhlcnJvcgogCi0gICBBIHN1YmNsYXNzIG9mIDpleGM6YHNvY2tldC5lcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBmb3IKICAgIGFkZHJlc3MtcmVsYXRlZCBlcnJvcnMsIGkuZS4gZm9yIGZ1bmN0aW9ucyB0aGF0IHVzZSAqaF9lcnJubyogaW4gdGhlIFBPU0lYCiAgICBDIEFQSSwgaW5jbHVkaW5nIDpmdW5jOmBnZXRob3N0YnluYW1lX2V4YCBhbmQgOmZ1bmM6YGdldGhvc3RieWFkZHJgLgogICAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIgYGAoaF9lcnJubywgc3RyaW5nKWBgIHJlcHJlc2VudGluZyBhbgpAQCAtMTM2LDEwICsxNTksMTIgQEAKICAgICpzdHJpbmcqIHJlcHJlc2VudHMgdGhlIGRlc2NyaXB0aW9uIG9mICpoX2Vycm5vKiwgYXMgcmV0dXJuZWQgYnkgdGhlCiAgICA6YzpmdW5jOmBoc3RyZXJyb3JgIEMgZnVuY3Rpb24uCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IGdhaWVycm9yCiAKLSAgIEEgc3ViY2xhc3Mgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgorICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCwgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGZvcgogICAgYWRkcmVzcy1yZWxhdGVkIGVycm9ycyBieSA6ZnVuYzpgZ2V0YWRkcmluZm9gIGFuZCA6ZnVuYzpgZ2V0bmFtZWluZm9gLgogICAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHBhaXIgYGAoZXJyb3IsIHN0cmluZylgYCByZXByZXNlbnRpbmcgYW4gZXJyb3IKICAgIHJldHVybmVkIGJ5IGEgbGlicmFyeSBjYWxsLiAgKnN0cmluZyogcmVwcmVzZW50cyB0aGUgZGVzY3JpcHRpb24gb2YKQEAgLTE0NywxNSArMTcyLDE5IEBACiAgICBudW1lcmljICplcnJvciogdmFsdWUgd2lsbCBtYXRjaCBvbmUgb2YgdGhlIDpjb25zdDpgRUFJX1wqYCBjb25zdGFudHMKICAgIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGNsYXNzIHdhcyBtYWRlIGEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIC4uIGV4Y2VwdGlvbjo6IHRpbWVvdXQKIAotICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLCB0aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhIHRpbWVvdXQKKyAgIEEgc3ViY2xhc3Mgb2YgOmV4YzpgT1NFcnJvcmAsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgdGltZW91dAogICAgb2NjdXJzIG9uIGEgc29ja2V0IHdoaWNoIGhhcyBoYWQgdGltZW91dHMgZW5hYmxlZCB2aWEgYSBwcmlvciBjYWxsIHRvCiAgICA6bWV0aDpgfnNvY2tldC5zZXR0aW1lb3V0YCAob3IgaW1wbGljaXRseSB0aHJvdWdoCiAgICA6ZnVuYzpgfnNvY2tldC5zZXRkZWZhdWx0dGltZW91dGApLiAgVGhlIGFjY29tcGFueWluZyB2YWx1ZSBpcyBhIHN0cmluZwogICAgd2hvc2UgdmFsdWUgaXMgY3VycmVudGx5IGFsd2F5cyAidGltZWQgb3V0Ii4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgY2xhc3Mgd2FzIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogLi4gZGF0YTo6IEFGX1VOSVgKICAgICAgICAgICBBRl9JTkVUCkBAIC0xOTgsNiArMjI3LDcgQEAKICAgICAgICAgICBTT01BWENPTk4KICAgICAgICAgICBNU0dfKgogICAgICAgICAgIFNPTF8qCisgICAgICAgICAgU0NNXyoKICAgICAgICAgICBJUFBST1RPXyoKICAgICAgICAgICBJUFBPUlRfKgogICAgICAgICAgIElOQUREUl8qCkBAIC0yMTUsNiArMjQ1LDMyIEBACiAgICBpbiB0aGUgVW5peCBoZWFkZXIgZmlsZXMgYXJlIGRlZmluZWQ7IGZvciBhIGZldyBzeW1ib2xzLCBkZWZhdWx0IHZhbHVlcyBhcmUKICAgIHByb3ZpZGVkLgogCisuLiBkYXRhOjogQUZfQ0FOCisgICAgICAgICAgUEZfQ0FOCisgICAgICAgICAgU09MX0NBTl8qCisgICAgICAgICAgQ0FOXyoKKworICAgTWFueSBjb25zdGFudHMgb2YgdGhlc2UgZm9ybXMsIGRvY3VtZW50ZWQgaW4gdGhlIExpbnV4IGRvY3VtZW50YXRpb24sIGFyZQorICAgYWxzbyBkZWZpbmVkIGluIHRoZSBzb2NrZXQgbW9kdWxlLgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4yNS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IEFGX1JEUworICAgICAgICAgIFBGX1JEUworICAgICAgICAgIFNPTF9SRFMKKyAgICAgICAgICBSRFNfKgorCisgICBNYW55IGNvbnN0YW50cyBvZiB0aGVzZSBmb3JtcywgZG9jdW1lbnRlZCBpbiB0aGUgTGludXggZG9jdW1lbnRhdGlvbiwgYXJlCisgICBhbHNvIGRlZmluZWQgaW4gdGhlIHNvY2tldCBtb2R1bGUuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjMwLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogU0lPXyoKICAgICAgICAgICBSQ1ZBTExfKgogCkBAIC0zOTMsMTAgKzQ0OSwxNSBAQAogCiAgICBDcmVhdGUgYSBuZXcgc29ja2V0IHVzaW5nIHRoZSBnaXZlbiBhZGRyZXNzIGZhbWlseSwgc29ja2V0IHR5cGUgYW5kIHByb3RvY29sCiAgICBudW1iZXIuICBUaGUgYWRkcmVzcyBmYW1pbHkgc2hvdWxkIGJlIDpjb25zdDpgQUZfSU5FVGAgKHRoZSBkZWZhdWx0KSwKLSAgIDpjb25zdDpgQUZfSU5FVDZgIG9yIDpjb25zdDpgQUZfVU5JWGAuICBUaGUgc29ja2V0IHR5cGUgc2hvdWxkIGJlCi0gICA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCAodGhlIGRlZmF1bHQpLCA6Y29uc3Q6YFNPQ0tfREdSQU1gIG9yIHBlcmhhcHMgb25lIG9mIHRoZQotICAgb3RoZXIgYGBTT0NLX2BgIGNvbnN0YW50cy4gIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUKLSAgIG9taXR0ZWQgaW4gdGhhdCBjYXNlLgorICAgOmNvbnN0OmBBRl9JTkVUNmAsIDpjb25zdDpgQUZfVU5JWGAsIDpjb25zdDpgQUZfQ0FOYCBvciA6Y29uc3Q6YEFGX1JEU2AuIFRoZQorICAgc29ja2V0IHR5cGUgc2hvdWxkIGJlIDpjb25zdDpgU09DS19TVFJFQU1gICh0aGUgZGVmYXVsdCksCisgICA6Y29uc3Q6YFNPQ0tfREdSQU1gLCA6Y29uc3Q6YFNPQ0tfUkFXYCBvciBwZXJoYXBzIG9uZSBvZiB0aGUgb3RoZXIgYGBTT0NLX2BgCisgICBjb25zdGFudHMuIFRoZSBwcm90b2NvbCBudW1iZXIgaXMgdXN1YWxseSB6ZXJvIGFuZCBtYXkgYmUgb21pdHRlZCBpbiB0aGF0CisgICBjYXNlIG9yIDpjb25zdDpgQ0FOX1JBV2AgaW4gY2FzZSB0aGUgYWRkcmVzcyBmYW1pbHkgaXMgOmNvbnN0OmBBRl9DQU5gLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlIEFGX0NBTiBmYW1pbHkgd2FzIGFkZGVkLgorICAgICAgVGhlIEFGX1JEUyBmYW1pbHkgd2FzIGFkZGVkLgogCiAKIC4uIGZ1bmN0aW9uOjogc29ja2V0cGFpcihbZmFtaWx5WywgdHlwZVssIHByb3RvXV1dKQpAQCAtNDY0LDcgKzUyNSw3IEBACiAgICBVbml4IG1hbnVhbCBwYWdlIDptYW5wYWdlOmBpbmV0KDMpYCBmb3IgZGV0YWlscy4KIAogICAgSWYgdGhlIElQdjQgYWRkcmVzcyBzdHJpbmcgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgaW52YWxpZCwKLSAgIDpleGM6YHNvY2tldC5lcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgorICAgOmV4YzpgT1NFcnJvcmAgd2lsbCBiZSByYWlzZWQuIE5vdGUgdGhhdCBleGFjdGx5IHdoYXQgaXMgdmFsaWQgZGVwZW5kcyBvbgogICAgdGhlIHVuZGVybHlpbmcgQyBpbXBsZW1lbnRhdGlvbiBvZiA6YzpmdW5jOmBpbmV0X2F0b25gLgogCiAgICA6ZnVuYzpgaW5ldF9hdG9uYCBkb2VzIG5vdCBzdXBwb3J0IElQdjYsIGFuZCA6ZnVuYzpgaW5ldF9wdG9uYCBzaG91bGQgYmUgdXNlZApAQCAtNDgxLDcgKzU0Miw3IEBACiAgICBhcmd1bWVudC4KIAogICAgSWYgdGhlIGJ5dGUgc2VxdWVuY2UgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgbm90IGV4YWN0bHkgNCBieXRlcyBpbgotICAgbGVuZ3RoLCA6ZXhjOmBzb2NrZXQuZXJyb3JgIHdpbGwgYmUgcmFpc2VkLiA6ZnVuYzpgaW5ldF9udG9hYCBkb2VzIG5vdAorICAgbGVuZ3RoLCA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gOmZ1bmM6YGluZXRfbnRvYWAgZG9lcyBub3QKICAgIHN1cHBvcnQgSVB2NiwgYW5kIDpmdW5jOmBpbmV0X250b3BgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgZm9yIElQdjQvdjYgZHVhbAogICAgc3RhY2sgc3VwcG9ydC4KIApAQCAtNDk1LDcgKzU1Niw3IEBACiAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAogICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBJUCBhZGRyZXNzIHN0cmluZyAqaXBfc3RyaW5nKiBpcyBpbnZhbGlkLAotICAgOmV4Yzpgc29ja2V0LmVycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCisgICA6ZXhjOmBPU0Vycm9yYCB3aWxsIGJlIHJhaXNlZC4gTm90ZSB0aGF0IGV4YWN0bHkgd2hhdCBpcyB2YWxpZCBkZXBlbmRzIG9uCiAgICBib3RoIHRoZSB2YWx1ZSBvZiAqYWRkcmVzc19mYW1pbHkqIGFuZCB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBvZgogICAgOmM6ZnVuYzpgaW5ldF9wdG9uYC4KIApAQCAtNTEzLDExICs1NzQsNTQgQEAKICAgIFN1cHBvcnRlZCB2YWx1ZXMgZm9yICphZGRyZXNzX2ZhbWlseSogYXJlIGN1cnJlbnRseSA6Y29uc3Q6YEFGX0lORVRgIGFuZAogICAgOmNvbnN0OmBBRl9JTkVUNmAuIElmIHRoZSBzdHJpbmcgKnBhY2tlZF9pcCogaXMgbm90IHRoZSBjb3JyZWN0IGxlbmd0aCBmb3IgdGhlCiAgICBzcGVjaWZpZWQgYWRkcmVzcyBmYW1pbHksIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLiAgQQotICAgOmV4Yzpgc29ja2V0LmVycm9yYCBpcyByYWlzZWQgZm9yIGVycm9ycyBmcm9tIHRoZSBjYWxsIHRvIDpmdW5jOmBpbmV0X250b3BgLgorICAgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkIGZvciBlcnJvcnMgZnJvbSB0aGUgY2FsbCB0byA6ZnVuYzpgaW5ldF9udG9wYC4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4IChtYXliZSBub3QgYWxsIHBsYXRmb3JtcykuCiAKIAorLi4KKyAgIFhYWDogQXJlIHNlbmRtc2coKSwgcmVjdm1zZygpIGFuZCBDTVNHXyooKSBhdmFpbGFibGUgb24gYW55CisgICBub24tVW5peCBwbGF0Zm9ybXM/ICBUaGUgb2xkIChvYnNvbGV0ZT8pIDQuMkJTRCBmb3JtIG9mIHRoZQorICAgaW50ZXJmYWNlLCBpbiB3aGljaCBzdHJ1Y3QgbXNnaGRyIGhhcyBubyBtc2dfY29udHJvbCBvcgorICAgbXNnX2NvbnRyb2xsZW4gbWVtYmVycywgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQuCisKKy4uIGZ1bmN0aW9uOjogQ01TR19MRU4obGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIHRvdGFsIGxlbmd0aCwgd2l0aG91dCB0cmFpbGluZyBwYWRkaW5nLCBvZiBhbiBhbmNpbGxhcnkKKyAgIGRhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4gKmxlbmd0aCouICBUaGlzIHZhbHVlCisgICBjYW4gb2Z0ZW4gYmUgdXNlZCBhcyB0aGUgYnVmZmVyIHNpemUgZm9yIDptZXRoOmB+c29ja2V0LnJlY3Ztc2dgIHRvCisgICByZWNlaXZlIGEgc2luZ2xlIGl0ZW0gb2YgYW5jaWxsYXJ5IGRhdGEsIGJ1dCA6cmZjOmAzNTQyYCByZXF1aXJlcworICAgcG9ydGFibGUgYXBwbGljYXRpb25zIHRvIHVzZSA6ZnVuYzpgQ01TR19TUEFDRWAgYW5kIHRodXMgaW5jbHVkZQorICAgc3BhY2UgZm9yIHBhZGRpbmcsIGV2ZW4gd2hlbiB0aGUgaXRlbSB3aWxsIGJlIHRoZSBsYXN0IGluIHRoZQorICAgYnVmZmVyLiAgUmFpc2VzIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmICpsZW5ndGgqIGlzIG91dHNpZGUgdGhlCisgICBwZXJtaXNzaWJsZSByYW5nZSBvZiB2YWx1ZXMuCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IENNU0dfU1BBQ0UobGVuZ3RoKQorCisgICBSZXR1cm4gdGhlIGJ1ZmZlciBzaXplIG5lZWRlZCBmb3IgOm1ldGg6YH5zb2NrZXQucmVjdm1zZ2AgdG8KKyAgIHJlY2VpdmUgYW4gYW5jaWxsYXJ5IGRhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4KKyAgICpsZW5ndGgqLCBhbG9uZyB3aXRoIGFueSB0cmFpbGluZyBwYWRkaW5nLiAgVGhlIGJ1ZmZlciBzcGFjZSBuZWVkZWQKKyAgIHRvIHJlY2VpdmUgbXVsdGlwbGUgaXRlbXMgaXMgdGhlIHN1bSBvZiB0aGUgOmZ1bmM6YENNU0dfU1BBQ0VgCisgICB2YWx1ZXMgZm9yIHRoZWlyIGFzc29jaWF0ZWQgZGF0YSBsZW5ndGhzLiAgUmFpc2VzCisgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYCBpZiAqbGVuZ3RoKiBpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZSByYW5nZQorICAgb2YgdmFsdWVzLgorCisgICBOb3RlIHRoYXQgc29tZSBzeXN0ZW1zIG1pZ2h0IHN1cHBvcnQgYW5jaWxsYXJ5IGRhdGEgd2l0aG91dAorICAgcHJvdmlkaW5nIHRoaXMgZnVuY3Rpb24uICBBbHNvIG5vdGUgdGhhdCBzZXR0aW5nIHRoZSBidWZmZXIgc2l6ZQorICAgdXNpbmcgdGhlIHJlc3VsdHMgb2YgdGhpcyBmdW5jdGlvbiBtYXkgbm90IHByZWNpc2VseSBsaW1pdCB0aGUKKyAgIGFtb3VudCBvZiBhbmNpbGxhcnkgZGF0YSB0aGF0IGNhbiBiZSByZWNlaXZlZCwgc2luY2UgYWRkaXRpb25hbAorICAgZGF0YSBtYXkgYmUgYWJsZSB0byBmaXQgaW50byB0aGUgcGFkZGluZyBhcmVhLgorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnZXRkZWZhdWx0dGltZW91dCgpCiAKICAgIFJldHVybiB0aGUgZGVmYXVsdCB0aW1lb3V0IGluIHNlY29uZHMgKGZsb2F0KSBmb3IgbmV3IHNvY2tldCBvYmplY3RzLiBBIHZhbHVlCkBAIC01MzMsNiArNjM3LDU5IEBACiAgICBtZWFuaW5ncy4KIAogCisuLiBmdW5jdGlvbjo6IHNldGhvc3RuYW1lKG5hbWUpCisKKyAgIFNldCB0aGUgbWFjaGluZSdzIGhvc3RuYW1lIHRvICpuYW1lKi4gIFRoaXMgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBPU0Vycm9yYCBpZiB5b3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmlnaHRzLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogaWZfbmFtZWluZGV4KCkKKworICAgUmV0dXJuIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmZvcm1hdGlvbgorICAgKGluZGV4IGludCwgbmFtZSBzdHJpbmcpIHR1cGxlcy4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBzeXN0ZW0gY2FsbCBmYWlscy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX25hbWV0b2luZGV4KGlmX25hbWUpCisKKyAgIFJldHVybiBhIG5ldHdvcmsgaW50ZXJmYWNlIGluZGV4IG51bWJlciBjb3JyZXNwb25kaW5nIHRvIGFuCisgICBpbnRlcmZhY2UgbmFtZS4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIG5vIGludGVyZmFjZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBmdW5jdGlvbjo6IGlmX2luZGV4dG9uYW1lKGlmX2luZGV4KQorCisgICBSZXR1cm4gYSBuZXR3b3JrIGludGVyZmFjZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gYQorICAgaW50ZXJmYWNlIGluZGV4IG51bWJlci4KKyAgIDpleGM6YE9TRXJyb3JgIGlmIG5vIGludGVyZmFjZSB3aXRoIHRoZSBnaXZlbiBpbmRleCBleGlzdHMuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBmcm9tc2hhcmUoZGF0YSkKKworICAgSW5zdGFudGlhdGUgYSBzb2NrZXQgZnJvbSBkYXRhIG9idGFpbmVkIGZyb20gOm1ldGg6YH5zb2NrZXQuc2hhcmVgLgorICAgVGhlIHNvY2tldCBpcyBhc3N1bWVkIHRvIGJlIGluIGJsb2NraW5nIG1vZGUuCisKKyAgIEF2YWlsYWJpbGl0eTogV2luZG93cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZGF0YTo6IFNvY2tldFR5cGUKIAogICAgVGhpcyBpcyBhIFB5dGhvbiB0eXBlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHNvY2tldCBvYmplY3QgdHlwZS4gSXQgaXMgdGhlCkBAIC03MDYsNiArODYzLDEwOSBAQAogICAgdG8gemVyby4gKFRoZSBmb3JtYXQgb2YgKmFkZHJlc3MqIGRlcGVuZHMgb24gdGhlIGFkZHJlc3MgZmFtaWx5IC0tLSBzZWUgYWJvdmUuKQogCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkKKworICAgUmVjZWl2ZSBub3JtYWwgZGF0YSAodXAgdG8gKmJ1ZnNpemUqIGJ5dGVzKSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbQorICAgdGhlIHNvY2tldC4gIFRoZSAqYW5jYnVmc2l6ZSogYXJndW1lbnQgc2V0cyB0aGUgc2l6ZSBpbiBieXRlcyBvZgorICAgdGhlIGludGVybmFsIGJ1ZmZlciB1c2VkIHRvIHJlY2VpdmUgdGhlIGFuY2lsbGFyeSBkYXRhOyBpdCBkZWZhdWx0cworICAgdG8gMCwgbWVhbmluZyB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIHdpbGwgYmUgcmVjZWl2ZWQuICBBcHByb3ByaWF0ZQorICAgYnVmZmVyIHNpemVzIGZvciBhbmNpbGxhcnkgZGF0YSBjYW4gYmUgY2FsY3VsYXRlZCB1c2luZworICAgOmZ1bmM6YENNU0dfU1BBQ0VgIG9yIDpmdW5jOmBDTVNHX0xFTmAsIGFuZCBpdGVtcyB3aGljaCBkbyBub3QgZml0CisgICBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmUgdHJ1bmNhdGVkIG9yIGRpc2NhcmRlZC4gIFRoZSAqZmxhZ3MqCisgICBhcmd1bWVudCBkZWZhdWx0cyB0byAwIGFuZCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgIDptZXRoOmByZWN2YC4KKworICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIDQtdHVwbGU6IGBgKGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywKKyAgIGFkZHJlc3MpYGAuICBUaGUgKmRhdGEqIGl0ZW0gaXMgYSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgaG9sZGluZyB0aGUKKyAgIG5vbi1hbmNpbGxhcnkgZGF0YSByZWNlaXZlZC4gIFRoZSAqYW5jZGF0YSogaXRlbSBpcyBhIGxpc3Qgb2YgemVybworICAgb3IgbW9yZSB0dXBsZXMgYGAoY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEpYGAgcmVwcmVzZW50aW5nCisgICB0aGUgYW5jaWxsYXJ5IGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiAqY21zZ19sZXZlbCogYW5kCisgICAqY21zZ190eXBlKiBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kCisgICBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kICpjbXNnX2RhdGEqIGlzIGEKKyAgIDpjbGFzczpgYnl0ZXNgIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBUaGUgKm1zZ19mbGFncyoKKyAgIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFncyBpbmRpY2F0aW5nIGNvbmRpdGlvbnMgb24KKyAgIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgIElmIHRoZSByZWNlaXZpbmcgc29ja2V0IGlzIHVuY29ubmVjdGVkLCAqYWRkcmVzcyogaXMgdGhlIGFkZHJlc3Mgb2YKKyAgIHRoZSBzZW5kaW5nIHNvY2tldCwgaWYgYXZhaWxhYmxlOyBvdGhlcndpc2UsIGl0cyB2YWx1ZSBpcworICAgdW5zcGVjaWZpZWQuCisKKyAgIE9uIHNvbWUgc3lzdGVtcywgOm1ldGg6YHNlbmRtc2dgIGFuZCA6bWV0aDpgcmVjdm1zZ2AgY2FuIGJlIHVzZWQgdG8KKyAgIHBhc3MgZmlsZSBkZXNjcmlwdG9ycyBiZXR3ZWVuIHByb2Nlc3NlcyBvdmVyIGFuIDpjb25zdDpgQUZfVU5JWGAKKyAgIHNvY2tldC4gIFdoZW4gdGhpcyBmYWNpbGl0eSBpcyB1c2VkIChpdCBpcyBvZnRlbiByZXN0cmljdGVkIHRvCisgICA6Y29uc3Q6YFNPQ0tfU1RSRUFNYCBzb2NrZXRzKSwgOm1ldGg6YHJlY3Ztc2dgIHdpbGwgcmV0dXJuLCBpbiBpdHMKKyAgIGFuY2lsbGFyeSBkYXRhLCBpdGVtcyBvZiB0aGUgZm9ybSBgYChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgIHNvY2tldC5TQ01fUklHSFRTLCBmZHMpYGAsIHdoZXJlICpmZHMqIGlzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0CisgICByZXByZXNlbnRpbmcgdGhlIG5ldyBmaWxlIGRlc2NyaXB0b3JzIGFzIGEgYmluYXJ5IGFycmF5IG9mIHRoZQorICAgbmF0aXZlIEMgOmM6dHlwZTpgaW50YCB0eXBlLiAgSWYgOm1ldGg6YHJlY3Ztc2dgIHJhaXNlcyBhbgorICAgZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLCBpdCB3aWxsIGZpcnN0IGF0dGVtcHQgdG8KKyAgIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGlzIG1lY2hhbmlzbS4KKworICAgU29tZSBzeXN0ZW1zIGRvIG5vdCBpbmRpY2F0ZSB0aGUgdHJ1bmNhdGVkIGxlbmd0aCBvZiBhbmNpbGxhcnkgZGF0YQorICAgaXRlbXMgd2hpY2ggaGF2ZSBiZWVuIG9ubHkgcGFydGlhbGx5IHJlY2VpdmVkLiAgSWYgYW4gaXRlbSBhcHBlYXJzCisgICB0byBleHRlbmQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciwgOm1ldGg6YHJlY3Ztc2dgIHdpbGwgaXNzdWUKKyAgIGEgOmV4YzpgUnVudGltZVdhcm5pbmdgLCBhbmQgd2lsbCByZXR1cm4gdGhlIHBhcnQgb2YgaXQgd2hpY2ggaXMKKyAgIGluc2lkZSB0aGUgYnVmZmVyIHByb3ZpZGVkIGl0IGhhcyBub3QgYmVlbiB0cnVuY2F0ZWQgYmVmb3JlIHRoZQorICAgc3RhcnQgb2YgaXRzIGFzc29jaWF0ZWQgZGF0YS4KKworICAgT24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IHRoZSA6Y29uc3Q6YFNDTV9SSUdIVFNgIG1lY2hhbmlzbSwgdGhlCisgICBmb2xsb3dpbmcgZnVuY3Rpb24gd2lsbCByZWNlaXZlIHVwIHRvICptYXhmZHMqIGZpbGUgZGVzY3JpcHRvcnMsCisgICByZXR1cm5pbmcgdGhlIG1lc3NhZ2UgZGF0YSBhbmQgYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGRlc2NyaXB0b3JzCisgICAod2hpbGUgaWdub3JpbmcgdW5leHBlY3RlZCBjb25kaXRpb25zIHN1Y2ggYXMgdW5yZWxhdGVkIGNvbnRyb2wKKyAgIG1lc3NhZ2VzIGJlaW5nIHJlY2VpdmVkKS4gIFNlZSBhbHNvIDptZXRoOmBzZW5kbXNnYC4gOjoKKworICAgICAgaW1wb3J0IHNvY2tldCwgYXJyYXkKKworICAgICAgZGVmIHJlY3ZfZmRzKHNvY2ssIG1zZ2xlbiwgbWF4ZmRzKToKKyAgICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpICAgIyBBcnJheSBvZiBpbnRzCisgICAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNvY2sucmVjdm1zZyhtc2dsZW4sIHNvY2tldC5DTVNHX0xFTihtYXhmZHMgKiBmZHMuaXRlbXNpemUpKQorICAgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgICBpZiAoY21zZ19sZXZlbCA9PSBzb2NrZXQuU09MX1NPQ0tFVCBhbmQgY21zZ190eXBlID09IHNvY2tldC5TQ01fUklHSFRTKToKKyAgICAgICAgICAgICAgICAgICMgQXBwZW5kIGRhdGEsIGlnbm9yaW5nIGFueSB0cnVuY2F0ZWQgaW50ZWdlcnMgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgIGZkcy5mcm9tc3RyaW5nKGNtc2dfZGF0YVs6bGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgICByZXR1cm4gbXNnLCBsaXN0KGZkcykKKworICAgQXZhaWxhYmlsaXR5OiBtb3N0IFVuaXggcGxhdGZvcm1zLCBwb3NzaWJseSBvdGhlcnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIG1ldGhvZDo6IHNvY2tldC5yZWN2bXNnX2ludG8oYnVmZmVyc1ssIGFuY2J1ZnNpemVbLCBmbGFnc11dKQorCisgICBSZWNlaXZlIG5vcm1hbCBkYXRhIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tIHRoZSBzb2NrZXQsIGJlaGF2aW5nIGFzCisgICA6bWV0aDpgcmVjdm1zZ2Agd291bGQsIGJ1dCBzY2F0dGVyIHRoZSBub24tYW5jaWxsYXJ5IGRhdGEgaW50byBhCisgICBzZXJpZXMgb2YgYnVmZmVycyBpbnN0ZWFkIG9mIHJldHVybmluZyBhIG5ldyBieXRlcyBvYmplY3QuICBUaGUKKyAgICpidWZmZXJzKiBhcmd1bWVudCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIG9iamVjdHMgdGhhdCBleHBvcnQKKyAgIHdyaXRhYmxlIGJ1ZmZlcnMgKGUuZy4gOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpOyB0aGVzZSB3aWxsIGJlCisgICBmaWxsZWQgd2l0aCBzdWNjZXNzaXZlIGNodW5rcyBvZiB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhIHVudGlsIGl0CisgICBoYXMgYWxsIGJlZW4gd3JpdHRlbiBvciB0aGVyZSBhcmUgbm8gbW9yZSBidWZmZXJzLiAgVGhlIG9wZXJhdGluZworICAgc3lzdGVtIG1heSBzZXQgYSBsaW1pdCAoOmZ1bmM6YH5vcy5zeXNjb25mYCB2YWx1ZSBgYFNDX0lPVl9NQVhgYCkKKyAgIG9uIHRoZSBudW1iZXIgb2YgYnVmZmVycyB0aGF0IGNhbiBiZSB1c2VkLiAgVGhlICphbmNidWZzaXplKiBhbmQKKyAgICpmbGFncyogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgOm1ldGg6YHJlY3Ztc2dgLgorCisgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogYGAobmJ5dGVzLCBhbmNkYXRhLCBtc2dfZmxhZ3MsCisgICBhZGRyZXNzKWBgLCB3aGVyZSAqbmJ5dGVzKiBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG9mCisgICBub24tYW5jaWxsYXJ5IGRhdGEgd3JpdHRlbiBpbnRvIHRoZSBidWZmZXJzLCBhbmQgKmFuY2RhdGEqLAorICAgKm1zZ19mbGFncyogYW5kICphZGRyZXNzKiBhcmUgdGhlIHNhbWUgYXMgZm9yIDptZXRoOmByZWN2bXNnYC4KKworICAgRXhhbXBsZTo6CisKKyAgICAgID4+PiBpbXBvcnQgc29ja2V0CisgICAgICA+Pj4gczEsIHMyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgPj4+IGIxID0gYnl0ZWFycmF5KGInLS0tLScpCisgICAgICA+Pj4gYjIgPSBieXRlYXJyYXkoYicwMTIzNDU2Nzg5JykKKyAgICAgID4+PiBiMyA9IGJ5dGVhcnJheShiJy0tLS0tLS0tLS0tLS0tJykKKyAgICAgID4+PiBzMS5zZW5kKGInTWFyeSBoYWQgYSBsaXR0bGUgbGFtYicpCisgICAgICAyMgorICAgICAgPj4+IHMyLnJlY3Ztc2dfaW50byhbYjEsIG1lbW9yeXZpZXcoYjIpWzI6OV0sIGIzXSkKKyAgICAgICgyMiwgW10sIDAsIE5vbmUpCisgICAgICA+Pj4gW2IxLCBiMiwgYjNdCisgICAgICBbYnl0ZWFycmF5KGInTWFyeScpLCBieXRlYXJyYXkoYicwMSBoYWQgYSA5JyksIGJ5dGVhcnJheShiJ2xpdHRsZSBsYW1iLS0tJyldCisKKyAgIEF2YWlsYWJpbGl0eTogbW9zdCBVbml4IHBsYXRmb3JtcywgcG9zc2libHkgb3RoZXJzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzb2NrZXQucmVjdmZyb21faW50byhidWZmZXJbLCBuYnl0ZXNbLCBmbGFnc11dKQogCiAgICBSZWNlaXZlIGRhdGEgZnJvbSB0aGUgc29ja2V0LCB3cml0aW5nIGl0IGludG8gKmJ1ZmZlciogaW5zdGVhZCBvZiBjcmVhdGluZyBhCkBAIC03NTUsNiArMTAxNSw0MSBAQAogICAgYWJvdmUuKQogCiAKKy4uIG1ldGhvZDo6IHNvY2tldC5zZW5kbXNnKGJ1ZmZlcnNbLCBhbmNkYXRhWywgZmxhZ3NbLCBhZGRyZXNzXV1dKQorCisgICBTZW5kIG5vcm1hbCBhbmQgYW5jaWxsYXJ5IGRhdGEgdG8gdGhlIHNvY2tldCwgZ2F0aGVyaW5nIHRoZQorICAgbm9uLWFuY2lsbGFyeSBkYXRhIGZyb20gYSBzZXJpZXMgb2YgYnVmZmVycyBhbmQgY29uY2F0ZW5hdGluZyBpdAorICAgaW50byBhIHNpbmdsZSBtZXNzYWdlLiAgVGhlICpidWZmZXJzKiBhcmd1bWVudCBzcGVjaWZpZXMgdGhlCisgICBub24tYW5jaWxsYXJ5IGRhdGEgYXMgYW4gaXRlcmFibGUgb2YgYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0cworICAgKGUuZy4gOmNsYXNzOmBieXRlc2Agb2JqZWN0cyk7IHRoZSBvcGVyYXRpbmcgc3lzdGVtIG1heSBzZXQgYSBsaW1pdAorICAgKDpmdW5jOmB+b3Muc3lzY29uZmAgdmFsdWUgYGBTQ19JT1ZfTUFYYGApIG9uIHRoZSBudW1iZXIgb2YgYnVmZmVycworICAgdGhhdCBjYW4gYmUgdXNlZC4gIFRoZSAqYW5jZGF0YSogYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBhbmNpbGxhcnkKKyAgIGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpIGFzIGFuIGl0ZXJhYmxlIG9mIHplcm8gb3IgbW9yZSB0dXBsZXMKKyAgIGBgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKWBgLCB3aGVyZSAqY21zZ19sZXZlbCogYW5kCisgICAqY21zZ190eXBlKiBhcmUgaW50ZWdlcnMgc3BlY2lmeWluZyB0aGUgcHJvdG9jb2wgbGV2ZWwgYW5kCisgICBwcm90b2NvbC1zcGVjaWZpYyB0eXBlIHJlc3BlY3RpdmVseSwgYW5kICpjbXNnX2RhdGEqIGlzIGEKKyAgIGJ1ZmZlci1jb21wYXRpYmxlIG9iamVjdCBob2xkaW5nIHRoZSBhc3NvY2lhdGVkIGRhdGEuICBOb3RlIHRoYXQKKyAgIHNvbWUgc3lzdGVtcyAoaW4gcGFydGljdWxhciwgc3lzdGVtcyB3aXRob3V0IDpmdW5jOmBDTVNHX1NQQUNFYCkKKyAgIG1pZ2h0IHN1cHBvcnQgc2VuZGluZyBvbmx5IG9uZSBjb250cm9sIG1lc3NhZ2UgcGVyIGNhbGwuICBUaGUKKyAgICpmbGFncyogYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICA6bWV0aDpgc2VuZGAuICBJZiAqYWRkcmVzcyogaXMgc3VwcGxpZWQgYW5kIG5vdCBgYE5vbmVgYCwgaXQgc2V0cyBhCisgICBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciB0aGUgbWVzc2FnZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlCisgICBudW1iZXIgb2YgYnl0ZXMgb2Ygbm9uLWFuY2lsbGFyeSBkYXRhIHNlbnQuCisKKyAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2VuZHMgdGhlIGxpc3Qgb2YgZmlsZSBkZXNjcmlwdG9ycyAqZmRzKgorICAgb3ZlciBhbiA6Y29uc3Q6YEFGX1VOSVhgIHNvY2tldCwgb24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IHRoZQorICAgOmNvbnN0OmBTQ01fUklHSFRTYCBtZWNoYW5pc20uICBTZWUgYWxzbyA6bWV0aDpgcmVjdm1zZ2AuIDo6CisKKyAgICAgIGltcG9ydCBzb2NrZXQsIGFycmF5CisKKyAgICAgIGRlZiBzZW5kX2Zkcyhzb2NrLCBtc2csIGZkcyk6CisgICAgICAgICAgcmV0dXJuIHNvY2suc2VuZG1zZyhbbXNnXSwgWyhzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNDTV9SSUdIVFMsIGFycmF5LmFycmF5KCJpIiwgZmRzKSldKQorCisgICBBdmFpbGFiaWxpdHk6IG1vc3QgVW5peCBwbGF0Zm9ybXMsIHBvc3NpYmx5IG90aGVycy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogc29ja2V0LnNldGJsb2NraW5nKGZsYWcpCiAKICAgIFNldCBibG9ja2luZyBvciBub24tYmxvY2tpbmcgbW9kZSBvZiB0aGUgc29ja2V0OiBpZiAqZmxhZyogaXMgZmFsc2UsIHRoZQpAQCAtNzk2LDkgKzEwOTEsMjIgQEAKICAgIFNodXQgZG93biBvbmUgb3IgYm90aCBoYWx2ZXMgb2YgdGhlIGNvbm5lY3Rpb24uICBJZiAqaG93KiBpcyA6Y29uc3Q6YFNIVVRfUkRgLAogICAgZnVydGhlciByZWNlaXZlcyBhcmUgZGlzYWxsb3dlZC4gIElmICpob3cqIGlzIDpjb25zdDpgU0hVVF9XUmAsIGZ1cnRoZXIgc2VuZHMKICAgIGFyZSBkaXNhbGxvd2VkLiAgSWYgKmhvdyogaXMgOmNvbnN0OmBTSFVUX1JEV1JgLCBmdXJ0aGVyIHNlbmRzIGFuZCByZWNlaXZlcyBhcmUKLSAgIGRpc2FsbG93ZWQuICBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCBzaHV0dGluZyBkb3duIG9uZSBoYWxmIG9mIHRoZSBjb25uZWN0aW9uCi0gICBjYW4gYWxzbyBjbG9zZSB0aGUgb3Bwb3NpdGUgaGFsZiAoZS5nLiBvbiBNYWMgT1MgWCwgYGBzaHV0ZG93bihTSFVUX1dSKWBgIGRvZXMKLSAgIG5vdCBhbGxvdyBmdXJ0aGVyIHJlYWRzIG9uIHRoZSBvdGhlciBlbmQgb2YgdGhlIGNvbm5lY3Rpb24pLgorICAgZGlzYWxsb3dlZC4KKworCisuLiBtZXRob2Q6OiBzb2NrZXQuc2hhcmUocHJvY2Vzc19pZCkKKworICAgIDpwbGF0Zm9ybTogV2luZG93cworCisgICAgRHVwbGFjZXQgYSBzb2NrZXQgYW5kIHByZXBhcmUgaXQgZm9yIHNoYXJpbmcgd2l0aCBhIHRhcmdldCBwcm9jZXNzLiAgVGhlCisgICAgdGFyZ2V0IHByb2Nlc3MgbXVzdCBiZSBwcm92aWRlZCB3aXRoICpwcm9jZXNzX2lkKi4gIFRoZSByZXN1bHRpbmcgYnl0ZXMgb2JqZWN0CisgICAgY2FuIHRoZW4gYmUgcGFzc2VkIHRvIHRoZSB0YXJnZXQgcHJvY2VzcyB1c2luZyBzb21lIGZvcm0gb2YgaW50ZXJwcm9jZXNzCisgICAgY29tbXVuaWNhdGlvbiBhbmQgdGhlIHNvY2tldCBjYW4gYmUgcmVjcmVhdGVkIHRoZXJlIHVzaW5nIDpmdW5jOmBmcm9tc2hhcmVgLgorICAgIE9uY2UgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBpdCBpcyBzYWZlIHRvIGNsb3NlIHRoZSBzb2NrZXQgc2luY2UKKyAgICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBoYXMgYWxyZWFkeSBkdXBsaWNhdGVkIGl0IGZvciB0aGUgdGFyZ2V0IHByb2Nlc3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gbWV0aG9kcyA6bWV0aDpgcmVhZGAgb3IgOm1ldGg6YHdyaXRlYDsgdXNlCiA6bWV0aDpgfnNvY2tldC5yZWN2YCBhbmQgOm1ldGg6YH5zb2NrZXQuc2VuZGAgd2l0aG91dCAqZmxhZ3MqIGFyZ3VtZW50IGluc3RlYWQuCkBAIC05NDMsMTMgKzEyNTEsMTMgQEAKICAgICAgICBhZiwgc29ja3R5cGUsIHByb3RvLCBjYW5vbm5hbWUsIHNhID0gcmVzCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChhZiwgc29ja3R5cGUsIHByb3RvKQotICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgorICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKICAgICAgICB0cnk6CiAgICAgICAgICAgIHMuYmluZChzYSkKICAgICAgICAgICAgcy5saXN0ZW4oMSkKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICBzID0gTm9uZQogICAgICAgICAgICBjb250aW51ZQpAQCAtOTc4LDEyICsxMjg2LDEyIEBACiAgICAgICAgYWYsIHNvY2t0eXBlLCBwcm90bywgY2Fub25uYW1lLCBzYSA9IHJlcwogICAgICAgIHRyeToKICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoYWYsIHNvY2t0eXBlLCBwcm90bykKLSAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIG1zZzoKKyAgICAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6CiAgICAgICAgICAgIHMgPSBOb25lCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgdHJ5OgogICAgICAgICAgICBzLmNvbm5lY3Qoc2EpCi0gICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgbXNnOgogICAgICAgICAgICBzLmNsb3NlKCkKICAgICAgICAgICAgcyA9IE5vbmUKICAgICAgICAgICAgY29udGludWUKQEAgLTk5Nyw3ICsxMzA1LDcgQEAKICAgIHByaW50KCdSZWNlaXZlZCcsIHJlcHIoZGF0YSkpCiAKIAotVGhlIGxhc3QgZXhhbXBsZSBzaG93cyBob3cgdG8gd3JpdGUgYSB2ZXJ5IHNpbXBsZSBuZXR3b3JrIHNuaWZmZXIgd2l0aCByYXcKK1RoZSBuZXh0IGV4YW1wbGUgc2hvd3MgaG93IHRvIHdyaXRlIGEgdmVyeSBzaW1wbGUgbmV0d29yayBzbmlmZmVyIHdpdGggcmF3CiBzb2NrZXRzIG9uIFdpbmRvd3MuIFRoZSBleGFtcGxlIHJlcXVpcmVzIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyB0byBtb2RpZnkKIHRoZSBpbnRlcmZhY2U6OgogCkBAIC0xMDIyLDExICsxMzMwLDUxIEBACiAgICAjIGRpc2FibGVkIHByb21pc2N1b3VzIG1vZGUKICAgIHMuaW9jdGwoc29ja2V0LlNJT19SQ1ZBTEwsIHNvY2tldC5SQ1ZBTExfT0ZGKQogCitUaGUgbGFzdCBleGFtcGxlIHNob3dzIGhvdyB0byB1c2UgdGhlIHNvY2tldCBpbnRlcmZhY2UgdG8gY29tbXVuaWNhdGUgdG8gYSBDQU4KK25ldHdvcmsuIFRoaXMgZXhhbXBsZSBtaWdodCByZXF1aXJlIHNwZWNpYWwgcHJpdmlsZWRnZTo6CisKKyAgIGltcG9ydCBzb2NrZXQKKyAgIGltcG9ydCBzdHJ1Y3QKKworCisgICAjIENBTiBmcmFtZSBwYWNraW5nL3VucGFja2luZyAoc2VlICdzdHJ1Y3QgY2FuX2ZyYW1lJyBpbiA8bGludXgvY2FuLmg+KQorCisgICBjYW5fZnJhbWVfZm10ID0gIj1JQjN4OHMiCisgICBjYW5fZnJhbWVfc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShjYW5fZnJhbWVfZm10KQorCisgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNhbl9pZCwgZGF0YSk6CisgICAgICAgY2FuX2RsYyA9IGxlbihkYXRhKQorICAgICAgIGRhdGEgPSBkYXRhLmxqdXN0KDgsIGInXHgwMCcpCisgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNhbl9mcmFtZV9mbXQsIGNhbl9pZCwgY2FuX2RsYywgZGF0YSkKKworICAgZGVmIGRpc3NlY3RfY2FuX2ZyYW1lKGZyYW1lKToKKyAgICAgICBjYW5faWQsIGNhbl9kbGMsIGRhdGEgPSBzdHJ1Y3QudW5wYWNrKGNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgIHJldHVybiAoY2FuX2lkLCBjYW5fZGxjLCBkYXRhWzpjYW5fZGxjXSkKKworCisgICAjIGNyZWF0ZSBhIHJhdyBzb2NrZXQgYW5kIGJpbmQgaXQgdG8gdGhlICd2Y2FuMCcgaW50ZXJmYWNlCisgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgcy5iaW5kKCgndmNhbjAnLCkpCisKKyAgIHdoaWxlIFRydWU6CisgICAgICAgY2YsIGFkZHIgPSBzLnJlY3Zmcm9tKGNhbl9mcmFtZV9zaXplKQorCisgICAgICAgcHJpbnQoJ1JlY2VpdmVkOiBjYW5faWQ9JXgsIGNhbl9kbGM9JXgsIGRhdGE9JXMnICUgZGlzc2VjdF9jYW5fZnJhbWUoY2YpKQorCisgICAgICAgdHJ5OgorICAgICAgICAgICBzLnNlbmQoY2YpCisgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgIHByaW50KCdFcnJvciBzZW5kaW5nIENBTiBmcmFtZScpCisKKyAgICAgICB0cnk6CisgICAgICAgICAgIHMuc2VuZChidWlsZF9jYW5fZnJhbWUoMHgwMSwgYidceDAxXHgwMlx4MDMnKSkKKyAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgcHJpbnQoJ0Vycm9yIHNlbmRpbmcgQ0FOIGZyYW1lJykKIAogUnVubmluZyBhbiBleGFtcGxlIHNldmVyYWwgdGltZXMgd2l0aCB0b28gc21hbGwgZGVsYXkgYmV0d2VlbiBleGVjdXRpb25zLCBjb3VsZAogbGVhZCB0byB0aGlzIGVycm9yOjoKIAotICAgc29ja2V0LmVycm9yOiBbRXJybm8gOThdIEFkZHJlc3MgYWxyZWFkeSBpbiB1c2UKKyAgIE9TRXJyb3I6IFtFcnJubyA5OF0gQWRkcmVzcyBhbHJlYWR5IGluIHVzZQogCiBUaGlzIGlzIGJlY2F1c2UgdGhlIHByZXZpb3VzIGV4ZWN1dGlvbiBoYXMgbGVmdCB0aGUgc29ja2V0IGluIGEgYGBUSU1FX1dBSVRgYAogc3RhdGUsIGFuZCBjYW4ndCBiZSBpbW1lZGlhdGVseSByZXVzZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0IGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAppbmRleCA1Mjg3ZjE3Li4yOGU4YTBhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKQEAgLTE1MywxMCArMTUzLDI0IEBACiAKIC4uIG1ldGhvZDo6IEJhc2VTZXJ2ZXIuc2VydmVfZm9yZXZlcihwb2xsX2ludGVydmFsPTAuNSkKIAotICAgSGFuZGxlIHJlcXVlc3RzIHVudGlsIGFuIGV4cGxpY2l0IDptZXRoOmBzaHV0ZG93bmAgcmVxdWVzdC4KLSAgIFBvbGwgZm9yIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLgotICAgSWYgeW91IG5lZWQgdG8gZG8gcGVyaW9kaWMgdGFza3MsIGRvIHRoZW0gaW4gYW5vdGhlciB0aHJlYWQuCisgICBIYW5kbGUgcmVxdWVzdHMgdW50aWwgYW4gZXhwbGljaXQgOm1ldGg6YHNodXRkb3duYCByZXF1ZXN0LiAgUG9sbCBmb3IKKyAgIHNodXRkb3duIGV2ZXJ5ICpwb2xsX2ludGVydmFsKiBzZWNvbmRzLiBJZ25vcmVzIDphdHRyOmBzZWxmLnRpbWVvdXRgLiAgSXQKKyAgIGFsc28gY2FsbHMgOm1ldGg6YHNlcnZpY2VfYWN0aW9uc2AsIHdoaWNoIG1heSBiZSB1c2VkIGJ5IGEgc3ViY2xhc3Mgb3IgbWl4aW4KKyAgIHRvIHByb3ZpZGUgYWN0aW9ucyBzcGVjaWZpYyB0byBhIGdpdmVuIHNlcnZpY2UuICBGb3IgZXhhbXBsZSwgdGhlCisgICA6Y2xhc3M6YEZvcmtpbmdNaXhJbmAgY2xhc3MgdXNlcyA6bWV0aDpgc2VydmljZV9hY3Rpb25zYCB0byBjbGVhbiB1cCB6b21iaWUKKyAgIGNoaWxkIHByb2Nlc3Nlcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCBgYHNlcnZpY2VfYWN0aW9uc2BgIGNhbGwgdG8gdGhlIGBgc2VydmVfZm9yZXZlcmBgIG1ldGhvZC4KKworCisuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNlcnZpY2VfYWN0aW9ucygpCisKKyAgIFRoaXMgaXMgY2FsbGVkIGluIHRoZSA6bWV0aDpgc2VydmVfZm9yZXZlcmAgbG9vcC4gVGhpcyBtZXRob2QgaXMgY2FuIGJlCisgICBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb3IgbWl4aW4gY2xhc3NlcyB0byBwZXJmb3JtIGFjdGlvbnMgc3BlY2lmaWMgdG8KKyAgIGEgZ2l2ZW4gc2VydmljZSwgc3VjaCBhcyBjbGVhbnVwIGFjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBCYXNlU2VydmVyLnNodXRkb3duKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdCBiL0RvYy9saWJyYXJ5L3NvbWVvcy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyMDA5YmIuLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvc29tZW9zLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS4uIF9zb21lb3M6Ci0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLU9wdGlvbmFsIE9wZXJhdGluZyBTeXN0ZW0gU2VydmljZXMKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotVGhlIG1vZHVsZXMgZGVzY3JpYmVkIGluIHRoaXMgY2hhcHRlciBwcm92aWRlIGludGVyZmFjZXMgdG8gb3BlcmF0aW5nIHN5c3RlbQotZmVhdHVyZXMgdGhhdCBhcmUgYXZhaWxhYmxlIG9uIHNlbGVjdGVkIG9wZXJhdGluZyBzeXN0ZW1zIG9ubHkuIFRoZSBpbnRlcmZhY2VzCi1hcmUgZ2VuZXJhbGx5IG1vZGVsZWQgYWZ0ZXIgdGhlIFVuaXggb3IgQyBpbnRlcmZhY2VzIGJ1dCB0aGV5IGFyZSBhdmFpbGFibGUgb24KLXNvbWUgb3RoZXIgc3lzdGVtcyBhcyB3ZWxsIChlLmcuIFdpbmRvd3MpLiAgSGVyZSdzIGFuIG92ZXJ2aWV3OgotCi0KLS4uIHRvY3RyZWU6OgotCi0gICBzZWxlY3QucnN0Ci0gICB0aHJlYWRpbmcucnN0Ci0gICBtdWx0aXByb2Nlc3NpbmcucnN0Ci0gICBjb25jdXJyZW50LmZ1dHVyZXMucnN0Ci0gICBtbWFwLnJzdAotICAgcmVhZGxpbmUucnN0Ci0gICBybGNvbXBsZXRlci5yc3QKLSAgIGR1bW15X3RocmVhZGluZy5yc3QKLSAgIF90aHJlYWQucnN0Ci0gICBfZHVtbXlfdGhyZWFkLnJzdApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCA5M2Y2ZDgyLi43ZDE1NmRlZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTM2OSw2ICszNjksMjIgQEAKICAgICAgIG1ldGhvZCB3aXRoIDpjb25zdDpgTm9uZWAgZm9yICpoYW5kbGVyKi4KIAogCisgICAuLiBtZXRob2Q6OiBzZXRfdHJhY2VfY2FsbGJhY2sodHJhY2VfY2FsbGJhY2spCisKKyAgICAgIFJlZ2lzdGVycyAqdHJhY2VfY2FsbGJhY2sqIHRvIGJlIGNhbGxlZCBmb3IgZWFjaCBTUUwgc3RhdGVtZW50IHRoYXQgaXMKKyAgICAgIGFjdHVhbGx5IGV4ZWN1dGVkIGJ5IHRoZSBTUUxpdGUgYmFja2VuZC4KKworICAgICAgVGhlIG9ubHkgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayBpcyB0aGUgc3RhdGVtZW50IChhcyBzdHJpbmcpIHRoYXQKKyAgICAgIGlzIGJlaW5nIGV4ZWN1dGVkLiBUaGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpcyBpZ25vcmVkLiBOb3RlIHRoYXQKKyAgICAgIHRoZSBiYWNrZW5kIGRvZXMgbm90IG9ubHkgcnVuIHN0YXRlbWVudHMgcGFzc2VkIHRvIHRoZSA6bWV0aDpgQ3Vyc29yLmV4ZWN1dGVgCisgICAgICBtZXRob2RzLiAgT3RoZXIgc291cmNlcyBpbmNsdWRlIHRoZSB0cmFuc2FjdGlvbiBtYW5hZ2VtZW50IG9mIHRoZSBQeXRob24KKyAgICAgIG1vZHVsZSBhbmQgdGhlIGV4ZWN1dGlvbiBvZiB0cmlnZ2VycyBkZWZpbmVkIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLgorCisgICAgICBQYXNzaW5nIDpjb25zdDpgTm9uZWAgYXMgKnRyYWNlX2NhbGxiYWNrKiB3aWxsIGRpc2FibGUgdGhlIHRyYWNlIGNhbGxiYWNrLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBtZXRob2Q6OiBlbmFibGVfbG9hZF9leHRlbnNpb24oZW5hYmxlZCkKIAogICAgICAgVGhpcyByb3V0aW5lIGFsbG93cy9kaXNhbGxvd3MgdGhlIFNRTGl0ZSBlbmdpbmUgdG8gbG9hZCBTUUxpdGUgZXh0ZW5zaW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggMGY1Y2VhMi4uNzcxOTZlMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC01Myw5ICs1Myw2OSBAQAogICAgKGN1cnJlbnRseSBwcm92aWRlZCBieSB0aGUgT3BlblNTTCBsaWJyYXJ5KS4gIFRoaXMgc2lnbmlmaWVzIHNvbWUKICAgIHByb2JsZW0gaW4gdGhlIGhpZ2hlci1sZXZlbCBlbmNyeXB0aW9uIGFuZCBhdXRoZW50aWNhdGlvbiBsYXllciB0aGF0J3MKICAgIHN1cGVyaW1wb3NlZCBvbiB0aGUgdW5kZXJseWluZyBuZXR3b3JrIGNvbm5lY3Rpb24uICBUaGlzIGVycm9yCi0gICBpcyBhIHN1YnR5cGUgb2YgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaW4gdHVybiBpcyBhIHN1YnR5cGUgb2YKLSAgIDpleGM6YElPRXJyb3JgLiAgVGhlIGVycm9yIGNvZGUgYW5kIG1lc3NhZ2Ugb2YgOmV4YzpgU1NMRXJyb3JgIGluc3RhbmNlcwotICAgYXJlIHByb3ZpZGVkIGJ5IHRoZSBPcGVuU1NMIGxpYnJhcnkuCisgICBpcyBhIHN1YnR5cGUgb2YgOmV4YzpgT1NFcnJvcmAuICBUaGUgZXJyb3IgY29kZSBhbmQgbWVzc2FnZSBvZgorICAgOmV4YzpgU1NMRXJyb3JgIGluc3RhbmNlcyBhcmUgcHJvdmlkZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyeS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpleGM6YFNTTEVycm9yYCB1c2VkIHRvIGJlIGEgc3VidHlwZSBvZiA6ZXhjOmBzb2NrZXQuZXJyb3JgLgorCisgICAuLiBhdHRyaWJ1dGU6OiBsaWJyYXJ5CisKKyAgICAgIEEgc3RyaW5nIG1uZW1vbmljIGRlc2lnbmF0aW5nIHRoZSBPcGVuU1NMIHN1Ym1vZHVsZSBpbiB3aGljaCB0aGUgZXJyb3IKKyAgICAgIG9jY3VycmVkLCBzdWNoIGFzIGBgU1NMYGAsIGBgUEVNYGAgb3IgYGBYNTA5YGAuICBUaGUgcmFuZ2Ugb2YgcG9zc2libGUKKyAgICAgIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBPcGVuU1NMIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiByZWFzb24KKworICAgICAgQSBzdHJpbmcgbW5lbW9uaWMgZGVzaWduYXRpbmcgdGhlIHJlYXNvbiB0aGlzIGVycm9yIG9jY3VycmVkLCBmb3IKKyAgICAgIGV4YW1wbGUgYGBDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEYGAuICBUaGUgcmFuZ2Ugb2YgcG9zc2libGUKKyAgICAgIHZhbHVlcyBkZXBlbmRzIG9uIHRoZSBPcGVuU1NMIHZlcnNpb24uCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xaZXJvUmV0dXJuRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgYW5kCisgICB0aGUgU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIGNsZWFubHkuICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0CisgICBtZWFuIHRoYXQgdGhlIHVuZGVybHlpbmcgdHJhbnNwb3J0IChyZWFkIFRDUCkgaGFzIGJlZW4gY2xvc2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMV2FudFJlYWRFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgYnkgYSA6cmVmOmBub24tYmxvY2tpbmcgU1NMIHNvY2tldAorICAgPHNzbC1ub25ibG9ja2luZz5gIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgZGF0YSwgYnV0IG1vcmUgZGF0YSBuZWVkcworICAgdG8gYmUgcmVjZWl2ZWQgb24gdGhlIHVuZGVybHlpbmcgVENQIHRyYW5zcG9ydCBiZWZvcmUgdGhlIHJlcXVlc3QgY2FuIGJlCisgICBmdWxmaWxsZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBleGNlcHRpb246OiBTU0xXYW50V3JpdGVFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgYnkgYSA6cmVmOmBub24tYmxvY2tpbmcgU1NMIHNvY2tldAorICAgPHNzbC1ub25ibG9ja2luZz5gIHdoZW4gdHJ5aW5nIHRvIHJlYWQgb3Igd3JpdGUgZGF0YSwgYnV0IG1vcmUgZGF0YSBuZWVkcworICAgdG8gYmUgc2VudCBvbiB0aGUgdW5kZXJseWluZyBUQ1AgdHJhbnNwb3J0IGJlZm9yZSB0aGUgcmVxdWVzdCBjYW4gYmUKKyAgIGZ1bGZpbGxlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGV4Y2VwdGlvbjo6IFNTTFN5c2NhbGxFcnJvcgorCisgICBBIHN1YmNsYXNzIG9mIDpleGM6YFNTTEVycm9yYCByYWlzZWQgd2hlbiBhIHN5c3RlbSBlcnJvciB3YXMgZW5jb3VudGVyZWQKKyAgIHdoaWxlIHRyeWluZyB0byBmdWxmaWxsIGFuIG9wZXJhdGlvbiBvbiBhIFNTTCBzb2NrZXQuICBVbmZvcnR1bmF0ZWx5LAorICAgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gaW5zcGVjdCB0aGUgb3JpZ2luYWwgZXJybm8gbnVtYmVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZXhjZXB0aW9uOjogU1NMRU9GRXJyb3IKKworICAgQSBzdWJjbGFzcyBvZiA6ZXhjOmBTU0xFcnJvcmAgcmFpc2VkIHdoZW4gdGhlIFNTTCBjb25uZWN0aW9uIGhhcyBiZWVuCisgICB0ZXJtaW5hdGVkIGFicnVwdGx5LiAgR2VuZXJhbGx5LCB5b3Ugc2hvdWxkbid0IHRyeSB0byByZXVzZSB0aGUgdW5kZXJseWluZworICAgdHJhbnNwb3J0IHdoZW4gdGhpcyBlcnJvciBpcyBlbmNvdW50ZXJlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIGV4Y2VwdGlvbjo6IENlcnRpZmljYXRlRXJyb3IKIApAQCAtMTYxLDYgKzIyMSwzNSBAQAogUmFuZG9tIGdlbmVyYXRpb24KIF5eXl5eXl5eXl5eXl5eXl5eCiAKKy4uIGZ1bmN0aW9uOjogUkFORF9ieXRlcyhudW0pCisKKyAgIFJldHVybnMgKm51bSogY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIFJhaXNlcyBhbgorICAgOmNsYXNzOmBTU0xFcnJvcmAgaWYgdGhlIFBSTkcgaGFzIG5vdCBiZWVuIHNlZWRlZCB3aXRoIGVub3VnaCBkYXRhIG9yIGlmIHRoZQorICAgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgUkFORCBtZXRob2QuIDpmdW5jOmBSQU5EX3N0YXR1c2AKKyAgIGNhbiBiZSB1c2VkIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgdGhlIFBSTkcgYW5kIDpmdW5jOmBSQU5EX2FkZGAgY2FuIGJlIHVzZWQKKyAgIHRvIHNlZWQgdGhlIFBSTkcuCisKKyAgIFJlYWQgdGhlIFdpa2lwZWRpYSBhcnRpY2xlLCBgQ3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIHBzZXVkb3JhbmRvbSBudW1iZXIKKyAgIGdlbmVyYXRvciAoQ1NQUk5HKQorICAgPGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQ3J5cHRvZ3JhcGhpY2FsbHlfc2VjdXJlX3BzZXVkb3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yPmBfLAorICAgdG8gZ2V0IHRoZSByZXF1aXJlbWVudHMgb2YgYSBjcnlwdG9ncmFwaGljYWxseSBnZW5lcmF0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IFJBTkRfcHNldWRvX2J5dGVzKG51bSkKKworICAgUmV0dXJucyAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpOiBieXRlcyBhcmUgKm51bSogcHNldWRvLXJhbmRvbSBieXRlcywKKyAgIGlzX2NyeXB0b2dyYXBoaWMgaXMgVHJ1ZSBpZiB0aGUgYnl0ZXMgZ2VuZXJhdGVkIGFyZSBjcnlwdG9ncmFwaGljYWxseQorICAgc3Ryb25nLiBSYWlzZXMgYW4gOmNsYXNzOmBTU0xFcnJvcmAgaWYgdGhlIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZQorICAgY3VycmVudCBSQU5EIG1ldGhvZC4KKworICAgR2VuZXJhdGVkIHBzZXVkby1yYW5kb20gYnl0ZSBzZXF1ZW5jZXMgd2lsbCBiZSB1bmlxdWUgaWYgdGhleSBhcmUgb2YKKyAgIHN1ZmZpY2llbnQgbGVuZ3RoLCBidXQgYXJlIG5vdCBuZWNlc3NhcmlseSB1bnByZWRpY3RhYmxlLiBUaGV5IGNhbiBiZSB1c2VkCisgICBmb3Igbm9uLWNyeXB0b2dyYXBoaWMgcHVycG9zZXMgYW5kIGZvciBjZXJ0YWluIHB1cnBvc2VzIGluIGNyeXB0b2dyYXBoaWMKKyAgIHByb3RvY29scywgYnV0IHVzdWFsbHkgbm90IGZvciBrZXkgZ2VuZXJhdGlvbiBldGMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBmdW5jdGlvbjo6IFJBTkRfc3RhdHVzKCkKIAogICAgUmV0dXJucyBUcnVlIGlmIHRoZSBTU0wgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGhhcyBiZWVuIHNlZWRlZCB3aXRoCkBAIC0xNzAsNyArMjU5LDcgQEAKIAogLi4gZnVuY3Rpb246OiBSQU5EX2VnZChwYXRoKQogCi0gICBJZiB5b3UgYXJlIHJ1bm5pbmcgYW4gZW50cm9weS1nYXRoZXJpbmcgZGFlbW9uIChFR0QpIHNvbWV3aGVyZSwgYW5kIGBgcGF0aGBgCisgICBJZiB5b3UgYXJlIHJ1bm5pbmcgYW4gZW50cm9weS1nYXRoZXJpbmcgZGFlbW9uIChFR0QpIHNvbWV3aGVyZSwgYW5kICpwYXRoKgogICAgaXMgdGhlIHBhdGhuYW1lIG9mIGEgc29ja2V0IGNvbm5lY3Rpb24gb3BlbiB0byBpdCwgdGhpcyB3aWxsIHJlYWQgMjU2IGJ5dGVzCiAgICBvZiByYW5kb21uZXNzIGZyb20gdGhlIHNvY2tldCwgYW5kIGFkZCBpdCB0byB0aGUgU1NMIHBzZXVkby1yYW5kb20gbnVtYmVyCiAgICBnZW5lcmF0b3IgdG8gaW5jcmVhc2UgdGhlIHNlY3VyaXR5IG9mIGdlbmVyYXRlZCBzZWNyZXQga2V5cy4gIFRoaXMgaXMKQEAgLTE4MSw4ICsyNzAsOCBAQAogCiAuLiBmdW5jdGlvbjo6IFJBTkRfYWRkKGJ5dGVzLCBlbnRyb3B5KQogCi0gICBNaXhlcyB0aGUgZ2l2ZW4gYGBieXRlc2BgIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKLSAgIHBhcmFtZXRlciBgYGVudHJvcHlgYCAoYSBmbG9hdCkgaXMgYSBsb3dlciBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4KKyAgIE1peGVzIHRoZSBnaXZlbiAqYnl0ZXMqIGludG8gdGhlIFNTTCBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuICBUaGUKKyAgIHBhcmFtZXRlciAqZW50cm9weSogKGEgZmxvYXQpIGlzIGEgbG93ZXIgYm91bmQgb24gdGhlIGVudHJvcHkgY29udGFpbmVkIGluCiAgICBzdHJpbmcgKHNvIHlvdSBjYW4gYWx3YXlzIHVzZSA6Y29uc3Q6YDAuMGApLiAgU2VlIDpyZmM6YDE3NTBgIGZvciBtb3JlCiAgICBpbmZvcm1hdGlvbiBvbiBzb3VyY2VzIG9mIGVudHJvcHkuCiAKQEAgLTIzOCw2ICszMjcsOSBAQAogICAgd2lsbCBhdHRlbXB0IHRvIHZhbGlkYXRlIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdGUgYWdhaW5zdCB0aGF0IHNldCBvZiByb290CiAgICBjZXJ0aWZpY2F0ZXMsIGFuZCB3aWxsIGZhaWwgaWYgdGhlIHZhbGlkYXRpb24gYXR0ZW1wdCBmYWlscy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgbm93IElQdjYtY29tcGF0aWJsZS4KKwogLi4gZnVuY3Rpb246OiBERVJfY2VydF90b19QRU1fY2VydChERVJfY2VydF9ieXRlcykKIAogICAgR2l2ZW4gYSBjZXJ0aWZpY2F0ZSBhcyBhIERFUi1lbmNvZGVkIGJsb2Igb2YgYnl0ZXMsIHJldHVybnMgYSBQRU0tZW5jb2RlZApAQCAtMzQ1LDYgKzQzNyw0NiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorLi4gZGF0YTo6IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRQorCisgICBVc2UgdGhlIHNlcnZlcidzIGNpcGhlciBvcmRlcmluZyBwcmVmZXJlbmNlLCByYXRoZXIgdGhhbiB0aGUgY2xpZW50J3MuCisgICBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIGNsaWVudCBzb2NrZXRzIGFuZCBTU0x2MiBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9TSU5HTEVfREhfVVNFCisKKyAgIFByZXZlbnRzIHJlLXVzZSBvZiB0aGUgc2FtZSBESCBrZXkgZm9yIGRpc3RpbmN0IFNTTCBzZXNzaW9ucy4gIFRoaXMKKyAgIGltcHJvdmVzIGZvcndhcmQgc2VjcmVjeSBidXQgcmVxdWlyZXMgbW9yZSBjb21wdXRhdGlvbmFsIHJlc291cmNlcy4KKyAgIFRoaXMgb3B0aW9uIG9ubHkgYXBwbGllcyB0byBzZXJ2ZXIgc29ja2V0cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIGRhdGE6OiBPUF9TSU5HTEVfRUNESF9VU0UKKworICAgUHJldmVudHMgcmUtdXNlIG9mIHRoZSBzYW1lIEVDREgga2V5IGZvciBkaXN0aW5jdCBTU0wgc2Vzc2lvbnMuICBUaGlzCisgICBpbXByb3ZlcyBmb3J3YXJkIHNlY3JlY3kgYnV0IHJlcXVpcmVzIG1vcmUgY29tcHV0YXRpb25hbCByZXNvdXJjZXMuCisgICBUaGlzIG9wdGlvbiBvbmx5IGFwcGxpZXMgdG8gc2VydmVyIHNvY2tldHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBkYXRhOjogT1BfTk9fQ09NUFJFU1NJT04KKworICAgRGlzYWJsZSBjb21wcmVzc2lvbiBvbiB0aGUgU1NMIGNoYW5uZWwuICBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgYXBwbGljYXRpb24KKyAgIHByb3RvY29sIHN1cHBvcnRzIGl0cyBvd24gY29tcHJlc3Npb24gc2NoZW1lLgorCisgICBUaGlzIG9wdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSB3aXRoIE9wZW5TU0wgMS4wLjAgYW5kIGxhdGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IEhBU19FQ0RICisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgRWxsaXB0aWMgQ3VydmUtYmFzZWQKKyAgIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZS4gIFRoaXMgc2hvdWxkIGJlIHRydWUgdW5sZXNzIHRoZSBmZWF0dXJlIHdhcworICAgZXhwbGljaXRseSBkaXNhYmxlZCBieSB0aGUgZGlzdHJpYnV0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBkYXRhOjogSEFTX1NOSQogCiAgICBXaGV0aGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIHRoZSAqU2VydmVyIE5hbWUKQEAgLTM1NCw2ICs0ODYsMjMgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGRhdGE6OiBIQVNfTlBOCisKKyAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgKk5leHQgUHJvdG9jb2wKKyAgIE5lZ290aWF0aW9uKiBhcyBkZXNjcmliZWQgaW4gdGhlIGBOUE4gZHJhZnQgc3BlY2lmaWNhdGlvbgorICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtbmV4dHByb3RvbmVnPmBfLiBXaGVuIHRydWUsCisgICB5b3UgY2FuIHVzZSB0aGUgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIG1ldGhvZCB0byBhZHZlcnRpc2UKKyAgIHdoaWNoIHByb3RvY29scyB5b3Ugd2FudCB0byBzdXBwb3J0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IENIQU5ORUxfQklORElOR19UWVBFUworCisgICBMaXN0IG9mIHN1cHBvcnRlZCBUTFMgY2hhbm5lbCBiaW5kaW5nIHR5cGVzLiAgU3RyaW5ncyBpbiB0aGlzIGxpc3QKKyAgIGNhbiBiZSB1c2VkIGFzIGFyZ3VtZW50cyB0byA6bWV0aDpgU1NMU29ja2V0LmdldF9jaGFubmVsX2JpbmRpbmdgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogLi4gZGF0YTo6IE9QRU5TU0xfVkVSU0lPTgogCiAgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIE9wZW5TU0wgbGlicmFyeSBsb2FkZWQgYnkgdGhlIGludGVycHJldGVyOjoKQEAgLTQ3OSw2ICs2MjgsMzcgQEAKICAgIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IGRlZmluZXMgaXRzIHVzZSwgYW5kIHRoZSBudW1iZXIgb2Ygc2VjcmV0CiAgICBiaXRzIGJlaW5nIHVzZWQuICBJZiBubyBjb25uZWN0aW9uIGhhcyBiZWVuIGVzdGFibGlzaGVkLCByZXR1cm5zIGBgTm9uZWBgLgogCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuY29tcHJlc3Npb24oKQorCisgICBSZXR1cm4gdGhlIGNvbXByZXNzaW9uIGFsZ29yaXRobSBiZWluZyB1c2VkIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYAorICAgaWYgdGhlIGNvbm5lY3Rpb24gaXNuJ3QgY29tcHJlc3NlZC4KKworICAgSWYgdGhlIGhpZ2hlci1sZXZlbCBwcm90b2NvbCBzdXBwb3J0cyBpdHMgb3duIGNvbXByZXNzaW9uIG1lY2hhbmlzbSwKKyAgIHlvdSBjYW4gdXNlIDpkYXRhOmBPUF9OT19DT01QUkVTU0lPTmAgdG8gZGlzYWJsZSBTU0wtbGV2ZWwgY29tcHJlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBtZXRob2Q6OiBTU0xTb2NrZXQuZ2V0X2NoYW5uZWxfYmluZGluZyhjYl90eXBlPSJ0bHMtdW5pcXVlIikKKworICAgR2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciBjdXJyZW50IGNvbm5lY3Rpb24sIGFzIGEgYnl0ZXMgb2JqZWN0LiAgUmV0dXJucworICAgYGBOb25lYGAgaWYgbm90IGNvbm5lY3RlZCBvciB0aGUgaGFuZHNoYWtlIGhhcyBub3QgYmVlbiBjb21wbGV0ZWQuCisKKyAgIFRoZSAqY2JfdHlwZSogcGFyYW1ldGVyIGFsbG93IHNlbGVjdGlvbiBvZiB0aGUgZGVzaXJlZCBjaGFubmVsIGJpbmRpbmcKKyAgIHR5cGUuIFZhbGlkIGNoYW5uZWwgYmluZGluZyB0eXBlcyBhcmUgbGlzdGVkIGluIHRoZQorICAgOmRhdGE6YENIQU5ORUxfQklORElOR19UWVBFU2AgbGlzdC4gIEN1cnJlbnRseSBvbmx5IHRoZSAndGxzLXVuaXF1ZScgY2hhbm5lbAorICAgYmluZGluZywgZGVmaW5lZCBieSA6cmZjOmA1OTI5YCwgaXMgc3VwcG9ydGVkLiAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZQorICAgcmFpc2VkIGlmIGFuIHVuc3VwcG9ydGVkIGNoYW5uZWwgYmluZGluZyB0eXBlIGlzIHJlcXVlc3RlZC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKy4uIG1ldGhvZDo6IFNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorCisgICBSZXR1cm5zIHRoZSBwcm90b2NvbCB0aGF0IHdhcyBzZWxlY3RlZCBkdXJpbmcgdGhlIFRMUy9TU0wgaGFuZHNoYWtlLiBJZgorICAgOm1ldGg6YFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIHdhcyBub3QgY2FsbGVkLCBvciBpZiB0aGUgb3RoZXIgcGFydHkKKyAgIGRvZXMgbm90IHN1cHBvcnQgTlBOLCBvciBpZiB0aGUgaGFuZHNoYWtlIGhhcyBub3QgeWV0IGhhcHBlbmVkLCB0aGlzIHdpbGwKKyAgIHJldHVybiBgYE5vbmVgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC51bndyYXAoKQogCkBAIC00ODgsNyArNjY4LDYgQEAKICAgIHJldHVybmVkIHNvY2tldCBzaG91bGQgYWx3YXlzIGJlIHVzZWQgZm9yIGZ1cnRoZXIgY29tbXVuaWNhdGlvbiB3aXRoIHRoZQogICAgb3RoZXIgc2lkZSBvZiB0aGUgY29ubmVjdGlvbiwgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbmFsIHNvY2tldC4KIAotCiAuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuY29udGV4dAogCiAgICBUaGUgOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3QgdGhpcyBTU0wgc29ja2V0IGlzIHRpZWQgdG8uICBJZiB0aGUgU1NMCkBAIC01MTgsNyArNjk3LDcgQEAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCi0uLiBtZXRob2Q6OiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0ZmlsZSwga2V5ZmlsZT1Ob25lKQorLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSkKIAogICAgTG9hZCBhIHByaXZhdGUga2V5IGFuZCB0aGUgY29ycmVzcG9uZGluZyBjZXJ0aWZpY2F0ZS4gIFRoZSAqY2VydGZpbGUqCiAgICBzdHJpbmcgbXVzdCBiZSB0aGUgcGF0aCB0byBhIHNpbmdsZSBmaWxlIGluIFBFTSBmb3JtYXQgY29udGFpbmluZyB0aGUKQEAgLTUyOSw5ICs3MDgsMjUgQEAKICAgIDpyZWY6YHNzbC1jZXJ0aWZpY2F0ZXNgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgY2VydGlmaWNhdGUKICAgIGlzIHN0b3JlZCBpbiB0aGUgKmNlcnRmaWxlKi4KIAorICAgVGhlICpwYXNzd29yZCogYXJndW1lbnQgbWF5IGJlIGEgZnVuY3Rpb24gdG8gY2FsbCB0byBnZXQgdGhlIHBhc3N3b3JkIGZvcgorICAgZGVjcnlwdGluZyB0aGUgcHJpdmF0ZSBrZXkuICBJdCB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIHRoZSBwcml2YXRlIGtleSBpcworICAgZW5jcnlwdGVkIGFuZCBhIHBhc3N3b3JkIGlzIG5lY2Vzc2FyeS4gIEl0IHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLAorICAgYW5kIGl0IHNob3VsZCByZXR1cm4gYSBzdHJpbmcsIGJ5dGVzLCBvciBieXRlYXJyYXkuICBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzCisgICBhIHN0cmluZyBpdCB3aWxsIGJlIGVuY29kZWQgYXMgVVRGLTggYmVmb3JlIHVzaW5nIGl0IHRvIGRlY3J5cHQgdGhlIGtleS4KKyAgIEFsdGVybmF0aXZlbHkgYSBzdHJpbmcsIGJ5dGVzLCBvciBieXRlYXJyYXkgdmFsdWUgbWF5IGJlIHN1cHBsaWVkIGRpcmVjdGx5CisgICBhcyB0aGUgKnBhc3N3b3JkKiBhcmd1bWVudC4gIEl0IHdpbGwgYmUgaWdub3JlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgaXMgbm90CisgICBlbmNyeXB0ZWQgYW5kIG5vIHBhc3N3b3JkIGlzIG5lZWRlZC4KKworICAgSWYgdGhlICpwYXNzd29yZCogYXJndW1lbnQgaXMgbm90IHNwZWNpZmllZCBhbmQgYSBwYXNzd29yZCBpcyByZXF1aXJlZCwKKyAgIE9wZW5TU0wncyBidWlsdC1pbiBwYXNzd29yZCBwcm9tcHRpbmcgbWVjaGFuaXNtIHdpbGwgYmUgdXNlZCB0bworICAgaW50ZXJhY3RpdmVseSBwcm9tcHQgdGhlIHVzZXIgZm9yIGEgcGFzc3dvcmQuCisKICAgIEFuIDpjbGFzczpgU1NMRXJyb3JgIGlzIHJhaXNlZCBpZiB0aGUgcHJpdmF0ZSBrZXkgZG9lc24ndAogICAgbWF0Y2ggd2l0aCB0aGUgY2VydGlmaWNhdGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKnBhc3N3b3JkKi4KKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lKQogCiAgICBMb2FkIGEgc2V0IG9mICJjZXJ0aWZpY2F0aW9uIGF1dGhvcml0eSIgKENBKSBjZXJ0aWZpY2F0ZXMgdXNlZCB0byB2YWxpZGF0ZQpAQCAtNTcwLDYgKzc2NSw1MyBAQAogICAgICAgd2hlbiBjb25uZWN0ZWQsIHRoZSA6bWV0aDpgU1NMU29ja2V0LmNpcGhlcmAgbWV0aG9kIG9mIFNTTCBzb2NrZXRzIHdpbGwKICAgICAgIGdpdmUgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBjaXBoZXIuCiAKKy4uIG1ldGhvZDo6IFNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHMocHJvdG9jb2xzKQorCisgICBTcGVjaWZ5IHdoaWNoIHByb3RvY29scyB0aGUgc29ja2V0IHNob3VsZCBhdmVydGlzZSBkdXJpbmcgdGhlIFNTTC9UTFMKKyAgIGhhbmRzaGFrZS4gSXQgc2hvdWxkIGJlIGEgbGlzdCBvZiBzdHJpbmdzLCBsaWtlIGBgWydodHRwLzEuMScsICdzcGR5LzInXWBgLAorICAgb3JkZXJlZCBieSBwcmVmZXJlbmNlLiBUaGUgc2VsZWN0aW9uIG9mIGEgcHJvdG9jb2wgd2lsbCBoYXBwZW4gZHVyaW5nIHRoZQorICAgaGFuZHNoYWtlLCBhbmQgd2lsbCBwbGF5IG91dCBhY2NvcmRpbmcgdG8gdGhlIGBOUE4gZHJhZnQgc3BlY2lmaWNhdGlvbgorICAgPGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWFnbC10bHMtbmV4dHByb3RvbmVnPmBfLiBBZnRlciBhCisgICBzdWNjZXNzZnVsIGhhbmRzaGFrZSwgdGhlIDptZXRoOmBTU0xTb2NrZXQuc2VsZWN0ZWRfbnBuX3Byb3RvY29sYCBtZXRob2Qgd2lsbAorICAgcmV0dXJuIHRoZSBhZ3JlZWQtdXBvbiBwcm90b2NvbC4KKworICAgVGhpcyBtZXRob2Qgd2lsbCByYWlzZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBpZiA6ZGF0YTpgSEFTX05QTmAgaXMKKyAgIEZhbHNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcyhkaGZpbGUpCisKKyAgIExvYWQgdGhlIGtleSBnZW5lcmF0aW9uIHBhcmFtZXRlcnMgZm9yIERpZmZpZS1IZWxtYW4gKERIKSBrZXkgZXhjaGFuZ2UuCisgICBVc2luZyBESCBrZXkgZXhjaGFuZ2UgaW1wcm92ZXMgZm9yd2FyZCBzZWNyZWN5IGF0IHRoZSBleHBlbnNlIG9mCisgICBjb21wdXRhdGlvbmFsIHJlc291cmNlcyAoYm90aCBvbiB0aGUgc2VydmVyIGFuZCBvbiB0aGUgY2xpZW50KS4KKyAgIFRoZSAqZGhmaWxlKiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIERICisgICBwYXJhbWV0ZXJzIGluIFBFTSBmb3JtYXQuCisKKyAgIFRoaXMgc2V0dGluZyBkb2Vzbid0IGFwcGx5IHRvIGNsaWVudCBzb2NrZXRzLiAgWW91IGNhbiBhbHNvIHVzZSB0aGUKKyAgIDpkYXRhOmBPUF9TSU5HTEVfREhfVVNFYCBvcHRpb24gdG8gZnVydGhlciBpbXByb3ZlIHNlY3VyaXR5LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZShjdXJ2ZV9uYW1lKQorCisgICBTZXQgdGhlIGN1cnZlIG5hbWUgZm9yIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuIChFQ0RIKSBrZXkKKyAgIGV4Y2hhbmdlLiAgRUNESCBpcyBzaWduaWZpY2FudGx5IGZhc3RlciB0aGFuIHJlZ3VsYXIgREggd2hpbGUgYXJndWFibHkKKyAgIGFzIHNlY3VyZS4gIFRoZSAqY3VydmVfbmFtZSogcGFyYW1ldGVyIHNob3VsZCBiZSBhIHN0cmluZyBkZXNjcmliaW5nCisgICBhIHdlbGwta25vd24gZWxsaXB0aWMgY3VydmUsIGZvciBleGFtcGxlIGBgcHJpbWUyNTZ2MWBgIGZvciBhIHdpZGVseQorICAgc3VwcG9ydGVkIGN1cnZlLgorCisgICBUaGlzIHNldHRpbmcgZG9lc24ndCBhcHBseSB0byBjbGllbnQgc29ja2V0cy4gIFlvdSBjYW4gYWxzbyB1c2UgdGhlCisgICA6ZGF0YTpgT1BfU0lOR0xFX0VDREhfVVNFYCBvcHRpb24gdG8gZnVydGhlciBpbXByb3ZlIHNlY3VyaXR5LgorCisgICBUaGlzIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIGlmIDpkYXRhOmBIQVNfRUNESGAgaXMgRmFsc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIGBTU0wvVExTICYgUGVyZmVjdCBGb3J3YXJkIFNlY3JlY3kgPGh0dHA6Ly92aW5jZW50LmJlcm5hdC5pbS9lbi9ibG9nLzIwMTEtc3NsLXBlcmZlY3QtZm9yd2FyZC1zZWNyZWN5Lmh0bWw+YF8KKyAgICAgICAgIFZpbmNlbnQgQmVybmF0LgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCiAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKQEAgLTk4NCwxMyArMTIyNiwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb2NrLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NvY2tdLCBbXSwgW10pCi0gICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc29ja10sIFtdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzb2NrXSwgW10sIFtdKQorICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NvY2tdLCBbXSkKIAogCiAuLiBfc3NsLXNlY3VyaXR5OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RhdC5yc3QgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdAppbmRleCA3ZGU5OGI2Li5mNDdmNDY0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGF0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGF0LnJzdApAQCAtMTA0LDYgKzEwNCwxNiBAQAogICAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICB3YWxrdHJlZShzeXMuYXJndlsxXSwgdmlzaXRmaWxlKQogCitBbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gY292ZXJ0IGEgZmlsZSdzIG1vZGUgaW4gYSBodW1hbgorcmVhZGFibGUgc3RyaW5nOgorCisuLiBmdW5jdGlvbjo6IGZpbGVtb2RlKG1vZGUpCisKKyAgIENvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIEFsbCB0aGUgdmFyaWFibGVzIGJlbG93IGFyZSBzaW1wbHkgc3ltYm9saWMgaW5kZXhlcyBpbnRvIHRoZSAxMC10dXBsZSByZXR1cm5lZAogYnkgOmZ1bmM6YG9zLnN0YXRgLCA6ZnVuYzpgb3MuZnN0YXRgIG9yIDpmdW5jOmBvcy5sc3RhdGAuCiAKQEAgLTM0NCw0ICszNTQsMyBAQAogICAgVGhlIGZpbGUgaXMgYSBzbmFwc2hvdCBmaWxlLgogCiBTZWUgdGhlIFwqQlNEIG9yIE1hYyBPUyBzeXN0ZW1zIG1hbiBwYWdlIDptYW5wYWdlOmBjaGZsYWdzKDIpYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDc4YTI3OTkuLjQzM2JlZmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTE1LDYgKzE1LDEwIEBACiBUaGUgcHJpbmNpcGFsIGJ1aWx0LWluIHR5cGVzIGFyZSBudW1lcmljcywgc2VxdWVuY2VzLCBtYXBwaW5ncywgY2xhc3NlcywKIGluc3RhbmNlcyBhbmQgZXhjZXB0aW9ucy4KIAorU29tZSBjb2xsZWN0aW9uIGNsYXNzZXMgYXJlIG11dGFibGUuICBUaGUgbWV0aG9kcyB0aGF0IGFkZCwgc3VidHJhY3QsIG9yCityZWFycmFuZ2UgdGhlaXIgbWVtYmVycyBpbiBwbGFjZSwgYW5kIGRvbid0IHJldHVybiBhIHNwZWNpZmljIGl0ZW0sIG5ldmVyIHJldHVybgordGhlIGNvbGxlY3Rpb24gaW5zdGFuY2UgaXRzZWxmIGJ1dCBgYE5vbmVgYC4KKwogU29tZSBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgYnkgc2V2ZXJhbCBvYmplY3QgdHlwZXM7IGluIHBhcnRpY3VsYXIsCiBwcmFjdGljYWxseSBhbGwgb2JqZWN0cyBjYW4gYmUgY29tcGFyZWQsIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGFuZCBjb252ZXJ0ZWQKIHRvIGEgc3RyaW5nICh3aXRoIHRoZSA6ZnVuYzpgcmVwcmAgZnVuY3Rpb24gb3IgdGhlIHNsaWdodGx5IGRpZmZlcmVudApAQCAtNjQxLDM0ICs2NDUsMzQgQEAKIAogSGVyZSBhcmUgdGhlIHJ1bGVzIGluIGRldGFpbDoKIAotIC0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQotICAgYnkgYGBQYGAsIGRlZmluZSBgYGhhc2goeClgYCBhcyBgYG0gKiBpbnZtb2QobiwgUCkgJSBQYGAsIHdoZXJlIGBgaW52bW9kKG4sCi0gICBQKWBgIGdpdmVzIHRoZSBpbnZlcnNlIG9mIGBgbmBgIG1vZHVsbyBgYFBgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMgbm90IGRpdmlzaWJsZQorICBieSBgYFBgYCwgZGVmaW5lIGBgaGFzaCh4KWBgIGFzIGBgbSAqIGludm1vZChuLCBQKSAlIFBgYCwgd2hlcmUgYGBpbnZtb2QobiwKKyAgUClgYCBnaXZlcyB0aGUgaW52ZXJzZSBvZiBgYG5gYCBtb2R1bG8gYGBQYGAuCiAKLSAtIElmIGBgeCA9IG0gLyBuYGAgaXMgYSBub25uZWdhdGl2ZSByYXRpb25hbCBudW1iZXIgYW5kIGBgbmBgIGlzCi0gICBkaXZpc2libGUgYnkgYGBQYGAgKGJ1dCBgYG1gYCBpcyBub3QpIHRoZW4gYGBuYGAgaGFzIG5vIGludmVyc2UKLSAgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQotICAgYGBoYXNoKHgpYGAgdG8gYmUgdGhlIGNvbnN0YW50IHZhbHVlIGBgc3lzLmhhc2hfaW5mby5pbmZgYC4KKy0gSWYgYGB4ID0gbSAvIG5gYCBpcyBhIG5vbm5lZ2F0aXZlIHJhdGlvbmFsIG51bWJlciBhbmQgYGBuYGAgaXMKKyAgZGl2aXNpYmxlIGJ5IGBgUGBgIChidXQgYGBtYGAgaXMgbm90KSB0aGVuIGBgbmBgIGhhcyBubyBpbnZlcnNlCisgIG1vZHVsbyBgYFBgYCBhbmQgdGhlIHJ1bGUgYWJvdmUgZG9lc24ndCBhcHBseTsgaW4gdGhpcyBjYXNlIGRlZmluZQorICBgYGhhc2goeClgYCB0byBiZSB0aGUgY29uc3RhbnQgdmFsdWUgYGBzeXMuaGFzaF9pbmZvLmluZmBgLgogCi0gLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAotICAgYXMgYGAtaGFzaCgteClgYC4gIElmIHRoZSByZXN1bHRpbmcgaGFzaCBpcyBgYC0xYGAsIHJlcGxhY2UgaXQgd2l0aAotICAgYGAtMmBgLgorLSBJZiBgYHggPSBtIC8gbmBgIGlzIGEgbmVnYXRpdmUgcmF0aW9uYWwgbnVtYmVyIGRlZmluZSBgYGhhc2goeClgYAorICBhcyBgYC1oYXNoKC14KWBgLiAgSWYgdGhlIHJlc3VsdGluZyBoYXNoIGlzIGBgLTFgYCwgcmVwbGFjZSBpdCB3aXRoCisgIGBgLTJgYC4KIAotIC0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAotICAgYW5kIGBgc3lzLmhhc2hfaW5mby5uYW5gYCBhcmUgdXNlZCBhcyBoYXNoIHZhbHVlcyBmb3IgcG9zaXRpdmUKLSAgIGluZmluaXR5LCBuZWdhdGl2ZSBpbmZpbml0eSwgb3IgbmFucyAocmVzcGVjdGl2ZWx5KS4gIChBbGwgaGFzaGFibGUKLSAgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKKy0gVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGBgc3lzLmhhc2hfaW5mby5pbmZgYCwgYGAtc3lzLmhhc2hfaW5mby5pbmZgYAorICBhbmQgYGBzeXMuaGFzaF9pbmZvLm5hbmBgIGFyZSB1c2VkIGFzIGhhc2ggdmFsdWVzIGZvciBwb3NpdGl2ZQorICBpbmZpbml0eSwgbmVnYXRpdmUgaW5maW5pdHksIG9yIG5hbnMgKHJlc3BlY3RpdmVseSkuICAoQWxsIGhhc2hhYmxlCisgIG5hbnMgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLikKIAotIC0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAotICAgYW5kIGltYWdpbmFyeSBwYXJ0cyBhcmUgY29tYmluZWQgYnkgY29tcHV0aW5nIGBgaGFzaCh6LnJlYWwpICsKLSAgIHN5cy5oYXNoX2luZm8uaW1hZyAqIGhhc2goei5pbWFnKWBgLCByZWR1Y2VkIG1vZHVsbwotICAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCi0gICBgYHJhbmdlKC0yKiooc3lzLmhhc2hfaW5mby53aWR0aCAtIDEpLCAyKiooc3lzLmhhc2hfaW5mby53aWR0aCAtCi0gICAxKSlgYC4gIEFnYWluLCBpZiB0aGUgcmVzdWx0IGlzIGBgLTFgYCwgaXQncyByZXBsYWNlZCB3aXRoIGBgLTJgYC4KKy0gRm9yIGEgOmNsYXNzOmBjb21wbGV4YCBudW1iZXIgYGB6YGAsIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgcmVhbAorICBhbmQgaW1hZ2luYXJ5IHBhcnRzIGFyZSBjb21iaW5lZCBieSBjb21wdXRpbmcgYGBoYXNoKHoucmVhbCkgKworICBzeXMuaGFzaF9pbmZvLmltYWcgKiBoYXNoKHouaW1hZylgYCwgcmVkdWNlZCBtb2R1bG8KKyAgYGAyKipzeXMuaGFzaF9pbmZvLndpZHRoYGAgc28gdGhhdCBpdCBsaWVzIGluCisgIGBgcmFuZ2UoLTIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0gMSksIDIqKihzeXMuaGFzaF9pbmZvLndpZHRoIC0KKyAgMSkpYGAuICBBZ2FpbiwgaWYgdGhlIHJlc3VsdCBpcyBgYC0xYGAsIGl0J3MgcmVwbGFjZWQgd2l0aCBgYC0yYGAuCiAKIAogVG8gY2xhcmlmeSB0aGUgYWJvdmUgcnVsZXMsIGhlcmUncyBzb21lIGV4YW1wbGUgUHl0aG9uIGNvZGUsCi1lcXVpdmFsZW50IHRvIHRoZSBidWlsdGluIGhhc2gsIGZvciBjb21wdXRpbmcgdGhlIGhhc2ggb2YgYSByYXRpb25hbAorZXF1aXZhbGVudCB0byB0aGUgYnVpbHQtaW4gaGFzaCwgZm9yIGNvbXB1dGluZyB0aGUgaGFzaCBvZiBhIHJhdGlvbmFsCiBudW1iZXIsIDpjbGFzczpgZmxvYXRgLCBvciA6Y2xhc3M6YGNvbXBsZXhgOjoKIAogCkBAIC03OTYsMTEwICs4MDAsMzUgQEAKIAogLi4gX3R5cGVzc2VxOgogCi1TZXF1ZW5jZSBUeXBlcyAtLS0gOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YGxpc3RgLCA6Y2xhc3M6YHR1cGxlYCwgOmNsYXNzOmByYW5nZWAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU2VxdWVuY2UgVHlwZXMgLS0tIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgdHVwbGVgLCA6Y2xhc3M6YHJhbmdlYAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGVyZSBhcmUgc2l4IHNlcXVlbmNlIHR5cGVzOiBzdHJpbmdzLCBieXRlIHNlcXVlbmNlcyAoOmNsYXNzOmBieXRlc2Agb2JqZWN0cyksCi1ieXRlIGFycmF5cyAoOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4gIEZvcgotb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCBjbGFzc2VzLCBhbmQKLXRoZSA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlLgorVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Ugb2JqZWN0cy4KK0FkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YKKzpyZWY6YGJpbmFyeSBkYXRhIDxiaW5hcnlzZXE+YCBhbmQgOnJlZjpgdGV4dCBzdHJpbmdzIDx0ZXh0c2VxPmAgYXJlCitkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLgogCiAKLS4uIGluZGV4OjoKLSAgIG9iamVjdDogc2VxdWVuY2UKLSAgIG9iamVjdDogc3RyaW5nCi0gICBvYmplY3Q6IGJ5dGVzCi0gICBvYmplY3Q6IGJ5dGVhcnJheQotICAgb2JqZWN0OiB0dXBsZQotICAgb2JqZWN0OiBsaXN0Ci0gICBvYmplY3Q6IHJhbmdlCisuLiBfdHlwZXNzZXEtY29tbW9uOgogCi1TdHJpbmdzIGNvbnRhaW4gVW5pY29kZSBjaGFyYWN0ZXJzLiAgVGhlaXIgbGl0ZXJhbHMgYXJlIHdyaXR0ZW4gaW4gc2luZ2xlIG9yCi1kb3VibGUgcXVvdGVzOiBgYCd4eXp6eSdgYCwgYGAiZnJvYm96eiJgYC4gIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dAotc3RyaW5nIGxpdGVyYWxzLiAgSW4gYWRkaXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZQotYWxzbyBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uLgorQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBjb250YWluIHNpbmdsZSBieXRlcyAtLSB0aGUgZm9ybWVyIGlzIGltbXV0YWJsZQotd2hpbGUgdGhlIGxhdHRlciBpcyBhIG11dGFibGUgc2VxdWVuY2UuCi1CeXRlcyBvYmplY3RzIGNhbiBiZSBjb25zdHJ1Y3RlZCBieSB1c2luZyB0aGUKLWNvbnN0cnVjdG9yLCA6ZnVuYzpgYnl0ZXNgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGEgYGBiYGAgcHJlZml4IHdpdGggbm9ybWFsCi1zdHJpbmcgc3ludGF4OiBgYGIneHl6enknYGAuICBUbyBjb25zdHJ1Y3QgYnl0ZSBhcnJheXMsIHVzZSB0aGUKLTpmdW5jOmBieXRlYXJyYXlgIGZ1bmN0aW9uLgorLi4gaW5kZXg6OiBvYmplY3Q6IHNlcXVlbmNlCiAKLVdoaWxlIHN0cmluZyBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2YgY2hhcmFjdGVycyAocmVwcmVzZW50ZWQgYnkgc3RyaW5ncyBvZgotbGVuZ3RoIDEpLCBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgYXJlIHNlcXVlbmNlcyBvZiAqaW50ZWdlcnMqIChiZXR3ZWVuIDAKLWFuZCAyNTUpLCByZXByZXNlbnRpbmcgdGhlIEFTQ0lJIHZhbHVlIG9mIHNpbmdsZSBieXRlcy4gIFRoYXQgbWVhbnMgdGhhdCBmb3IKLWEgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCAqYiosIGBgYlswXWBgIHdpbGwgYmUgYW4gaW50ZWdlciwgd2hpbGUKLWBgYlswOjFdYGAgd2lsbCBiZSBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3Qgb2YgbGVuZ3RoIDEuICBUaGUKLXJlcHJlc2VudGF0aW9uIG9mIGJ5dGVzIG9iamVjdHMgdXNlcyB0aGUgbGl0ZXJhbCBmb3JtYXQgKGBgYicuLi4nYGApIHNpbmNlIGl0Ci1pcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzUwLCAxOSwgMTAwXSlgYC4gIFlvdSBjYW4gYWx3YXlzCi1jb252ZXJ0IGEgYnl0ZXMgb2JqZWN0IGludG8gYSBsaXN0IG9mIGludGVnZXJzIHVzaW5nIGBgbGlzdChiKWBgLgotCi1BbHNvLCB3aGlsZSBpbiBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMsIGJ5dGUgc3RyaW5ncyBhbmQgVW5pY29kZSBzdHJpbmdzCi1jb3VsZCBiZSBleGNoYW5nZWQgZm9yIGVhY2ggb3RoZXIgcmF0aGVyIGZyZWVseSAoYmFycmluZyBlbmNvZGluZyBpc3N1ZXMpLAotc3RyaW5ncyBhbmQgYnl0ZXMgYXJlIG5vdyBjb21wbGV0ZWx5IHNlcGFyYXRlIGNvbmNlcHRzLiAgVGhlcmUncyBubyBpbXBsaWNpdAotZW4tL2RlY29kaW5nIGlmIHlvdSBwYXNzIGFuIG9iamVjdCBvZiB0aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cwotY29tcGFyZXMgdW5lcXVhbCB0byBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QuCi0KLUxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogYGBbYSwKLWIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvciAobm90IHdpdGhpbiBzcXVhcmUKLWJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcywgYnV0IGFuIGVtcHR5IHR1cGxlIG11c3QgaGF2ZQotdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsIGIsIGNgYCBvciBgYCgpYGAuICBBIHNpbmdsZSBpdGVtIHR1cGxlCi1tdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSwgc3VjaCBhcyBgYChkLClgYC4KLQotT2JqZWN0cyBvZiB0eXBlIHJhbmdlIGFyZSBjcmVhdGVkIHVzaW5nIHRoZSA6ZnVuYzpgcmFuZ2VgIGZ1bmN0aW9uLiAgVGhleSBkb24ndAotc3VwcG9ydCBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24sIGFuZCB1c2luZyA6ZnVuYzpgbWluYCBvciA6ZnVuYzpgbWF4YCBvbgotdGhlbSBpcyBpbmVmZmljaWVudC4KLQotTW9zdCBzZXF1ZW5jZSB0eXBlcyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucy4gIFRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAKLW9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzIHRoZSBjb21wYXJpc29uIG9wZXJhdGlvbnMuICBUaGUgYGArYGAgYW5kCi1gYCpgYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpYyBvcGVyYXRpb25zLgotWzNdXyBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlIHByb3ZpZGVkIGZvciA6cmVmOmB0eXBlc3NlcS1tdXRhYmxlYC4KK1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0IHNlcXVlbmNlIHR5cGVzLAorYm90aCBtdXRhYmxlIGFuZCBpbW11dGFibGUuIFRoZSA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWAgQUJDIGlzCitwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24KK2N1c3RvbSBzZXF1ZW5jZSB0eXBlcy4KIAogVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5CiAob3BlcmF0aW9ucyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSkuICBJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqCi1hcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGU7ICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmUgaW50ZWdlcnMuCithcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLCAqaiogYW5kICprKiBhcmUgaW50ZWdlcnMgYW5kICp4KiBpcworYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouCiAKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgT3BlcmF0aW9uICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKLSs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKLXwgYGB4IGluIHNgYCAgICAgICB8IGBgVHJ1ZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICB8IFwoMSkgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGB4IG5vdCBpbiBzYGAgICB8IGBgRmFsc2VgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyB8IFwoMSkgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzICsgdGBgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgICB8IFwoNikgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8ICp0KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzICogbiwgbiAqIHNgYCB8ICpuKiBzaGFsbG93IGNvcGllcyBvZiAqcyogICAgICB8IFwoMikgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IGNvbmNhdGVuYXRlZCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2ldYGAgICAgICAgICB8ICppKlwgdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICB8IFwoMykgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2k6al1gYCAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg0KSAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzW2k6ajprXWBgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg1KSAgIHwKLXwgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBsZW4ocylgYCAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBtaW4ocylgYCAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBtYXgocylgYCAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzLmluZGV4KGkpYGAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cmVuY2UgICB8ICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8IG9mICppKiBpbiAqcyogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgYGBzLmNvdW50KGkpYGAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICB8ICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICB8ICppKiBpbiAqcyogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLQotU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZCBsaXN0cyBhcmUKLWNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0Ci10byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZQotb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUKLTpyZWY6YGNvbXBhcmlzb25zYCBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLikKK1RoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlCitjb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgIChyZXBldGl0aW9uKQorb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4KIAogLi4gaW5kZXg6OgogICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBzZXF1ZW5jZTsgdHlwZXMKQEAgLTkxMiwxOCArODQxLDY3IEBACiAgICBwYWlyOiBzbGljZTsgb3BlcmF0aW9uCiAgICBvcGVyYXRvcjogaW4KICAgIG9wZXJhdG9yOiBub3QgaW4KKyAgIHNpbmdsZTogY291bnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBpbmRleCgpIChzZXF1ZW5jZSBtZXRob2QpCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKK3wgYGB4IGluIHNgYCAgICAgICAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgIHwgXCgxKSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBGYWxzZWBgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzIHwgXCgxKSAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlcXVhbCB0byAqeCosIGVsc2UgYGBUcnVlYGAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzICsgdGBgICAgICAgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAgIHwgKDYpKDcpICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzICogbmBgIG9yICAgICAgICAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgIHwgKDIpKDcpICAgfAorfCBgYG4gKiBzYGAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBzW2ldYGAgICAgICAgICAgICAgICAgIHwgKmkqXCB0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgIHwgXCgzKSAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgc1tpOmpdYGAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICB8ICgzKSg0KSAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHNbaTpqOmtdYGAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgfCAoMykoNSkgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYGxlbihzKWBgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgYGBtaW4ocylgYCAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgbWF4KHMpYGAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlICAgfCBcKDgpICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyICAgICB8ICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKXwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IGBgcy5jb3VudCh4KWBgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICB8ICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKK1NlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsIHR1cGxlcworYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmcgY29ycmVzcG9uZGluZyBlbGVtZW50cy4KK1RoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlCit0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwKK2RldGFpbHMgc2VlIDpyZWY6YGNvbXBhcmlzb25zYCBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLikKIAogTm90ZXM6CiAKICgxKQotICAgV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYWN0IGxpa2UgYQotICAgc3Vic3RyaW5nIHRlc3QuCisgICBXaGlsZSB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlCisgICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzCisgICAoc3VjaCBhcyA6Y2xhc3M6YHN0cmAsIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWApIGFsc28gdXNlCisgICB0aGVtIGZvciBzdWJzZXF1ZW5jZSB0ZXN0aW5nOjoKKworICAgICAgPj4+ICJnZyIgaW4gImVnZ3MiCisgICAgICBUcnVlCiAKICgyKQogICAgVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gYGAwYGAgYXJlIHRyZWF0ZWQgYXMgYGAwYGAgKHdoaWNoIHlpZWxkcyBhbiBlbXB0eQogICAgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSBhbHNvIHRoYXQgdGhlIGNvcGllcyBhcmUgc2hhbGxvdzsKICAgIG5lc3RlZCBzdHJ1Y3R1cmVzIGFyZSBub3QgY29waWVkLiAgVGhpcyBvZnRlbiBoYXVudHMgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsKLSAgIGNvbnNpZGVyOgorICAgY29uc2lkZXI6OgogCiAgICAgICA+Pj4gbGlzdHMgPSBbW11dICogMwogICAgICAgPj4+IGxpc3RzCkBAIC05MzUsNyArOTEzLDcgQEAKICAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgYGBbW11dYGAgaXMgYSBvbmUtZWxlbWVudCBsaXN0IGNvbnRhaW5pbmcgYW4gZW1wdHkKICAgIGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiBgYFtbXV0gKiAzYGAgYXJlIChwb2ludGVycyB0bykgdGhpcyBzaW5nbGUgZW1wdHkKICAgIGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZiBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4KLSAgIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZiBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6CisgICBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2YgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OjoKIAogICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXQogICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKQpAQCAtOTY2LDMzICs5NDQsNDc2IEBACiAgICBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC4KIAogKDYpCi0gICBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzdHJpbmdzIGFsd2F5cyByZXN1bHRzIGluIGEgbmV3IG9iamVjdC4gIFRoaXMgbWVhbnMKLSAgIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsIGhhdmUgYSBxdWFkcmF0aWMKLSAgIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsCi0gICB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6CisgICBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXcgb2JqZWN0LiAgVGhpcworICAgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEKKyAgIHF1YWRyYXRpYyBydW50aW1lIGNvc3QgaW4gdGhlIHRvdGFsIHNlcXVlbmNlIGxlbmd0aC4gIFRvIGdldCBhIGxpbmVhcgorICAgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXMgYmVsb3c6CiAKICAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YHN0cmAgb2JqZWN0cywgeW91IGNhbiBidWlsZCBhIGxpc3QgYW5kIHVzZQotICAgICA6bWV0aDpgc3RyLmpvaW5gIGF0IHRoZSBlbmQ7CisgICAgIDptZXRoOmBzdHIuam9pbmAgYXQgdGhlIGVuZCBvciBlbHNlIHdyaXRlIHRvIGEgOmNsYXNzOmBpby5TdHJpbmdJT2AKKyAgICAgaW5zdGFuY2UgYW5kIHJldHJpZXZlIGl0cyB2YWx1ZSB3aGVuIGNvbXBsZXRlCiAKICAgICogaWYgY29uY2F0ZW5hdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2UKLSAgICAgOm1ldGg6YGJ5dGVzLmpvaW5gLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlIGNvbmNhdGVuYXRpb24gd2l0aCBhCi0gICAgIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3QuICA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0cyBhcmUgbXV0YWJsZSBhbmQKLSAgICAgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtLgorICAgICA6bWV0aDpgYnl0ZXMuam9pbmAgb3IgOmNsYXNzOmBpby5CeXRlc0lPYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZQorICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSA6Y2xhc3M6YGJ5dGVhcnJheWAgb2JqZWN0LiAgOmNsYXNzOmBieXRlYXJyYXlgCisgICAgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbQogCisgICAqIGlmIGNvbmNhdGVuYXRpbmcgOmNsYXNzOmB0dXBsZWAgb2JqZWN0cywgZXh0ZW5kIGEgOmNsYXNzOmBsaXN0YCBpbnN0ZWFkCisKKyAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgZG9jdW1lbnRhdGlvbgorCisKKyg3KQorICBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzIDpjbGFzczpgcmFuZ2VgKSBvbmx5IHN1cHBvcnQgaXRlbSBzZXF1ZW5jZXMKKyAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb24ndCBzdXBwb3J0IHNlcXVlbmNlCisgIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi4KKworKDgpCisgICBgYGluZGV4YGAgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouCisgICBXaGVuIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3cKKyAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZSBleHRyYQorICAgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLCBvbmx5CisgICB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nIHJlbGF0aXZlIHRvCisgICB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGUgc2xpY2UuCisKKworLi4gX3R5cGVzc2VxLWltbXV0YWJsZToKKworSW1tdXRhYmxlIFNlcXVlbmNlIFR5cGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBpbW11dGFibGU7IHNlcXVlbmNlOyB0eXBlcworICAgb2JqZWN0OiB0dXBsZQorICAgYnVpbHRpbjogaGFzaAorCitUaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5IGltcGxlbWVudCB0aGF0IGlzCitub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzIHN1cHBvcnQgZm9yIHRoZSA6ZnVuYzpgaGFzaGAKK2J1aWx0LWluLgorCitUaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgOmNsYXNzOmB0dXBsZWAgaW5zdGFuY2VzLCB0bworYmUgdXNlZCBhcyA6Y2xhc3M6YGRpY3RgIGtleXMgYW5kIHN0b3JlZCBpbiA6Y2xhc3M6YHNldGAgYW5kIDpjbGFzczpgZnJvemVuc2V0YAoraW5zdGFuY2VzLgorCitBdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZSB2YWx1ZXMgd2lsbAorcmVzdWx0IGluIDpleGM6YFR5cGVFcnJvcmAuCisKKworLi4gX3R5cGVzc2VxLW11dGFibGU6CisKK011dGFibGUgU2VxdWVuY2UgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgdHJpcGxlOiBtdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKKyAgIG9iamVjdDogbGlzdAorICAgb2JqZWN0OiBieXRlYXJyYXkKKworVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzLgorVGhlIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWAgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQKK2Vhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLgorCitJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55CitpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUKK2FuZCB2YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCA6Y2xhc3M6YGJ5dGVhcnJheWAgb25seQorYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS4KKworCisuLiBpbmRleDo6CisgICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcworICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBsaXN0OyB0eXBlCisgICBwYWlyOiBzdWJzY3JpcHQ7IGFzc2lnbm1lbnQKKyAgIHBhaXI6IHNsaWNlOyBhc3NpZ25tZW50CisgICBzdGF0ZW1lbnQ6IGRlbAorICAgc2luZ2xlOiBhcHBlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBjbGVhcigpIChzZXF1ZW5jZSBtZXRob2QpCisgICBzaW5nbGU6IGNvcHkoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBleHRlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBpbnNlcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiBwb3AoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiByZW1vdmUoKSAoc2VxdWVuY2UgbWV0aG9kKQorICAgc2luZ2xlOiByZXZlcnNlKCkgKHNlcXVlbmNlIG1ldGhvZCkKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09KworfCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5IHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpcyByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCAgIHwgXCgxKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmUgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tsZW4ocyk6bGVuKHMpXSA9IFt4XWBgKSAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tIGBgc2BgICAgfCBcKDUpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgZGVsIHNbOl1gYCkgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mIGBgc2BgfCBcKDUpICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzIGBgc1s6XWBgKSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbnRlbnRzIG9mICp0KiAoc2FtZSBhcyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gdGBgKSAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgKSAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgIHwgXCgyKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqIHwgXCgzKSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSBgYHNbaV0gPT0geGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgIHwgXCg0KSAgICAgICAgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCisKK05vdGVzOgorCisoMSkKKyAgICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuCisKKygyKQorICAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdAorICAgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC4KKworKDMpCisgICBgYHJlbW92ZWBgIHJhaXNlcyA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuICp4KiBpcyBub3QgZm91bmQgaW4gKnMqLgorCisoNCkKKyAgIFRoZSA6bWV0aDpgcmV2ZXJzZWAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZgorICAgc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0IG9wZXJhdGVzIGJ5CisgICBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS4KKworKDUpCisgICA6bWV0aDpgY2xlYXJgIGFuZCA6bWV0aDpgIWNvcHlgIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGUKKyAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBzbGljaW5nIG9wZXJhdGlvbnMKKyAgIChzdWNoIGFzIDpjbGFzczpgZGljdGAgYW5kIDpjbGFzczpgc2V0YCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisgICAgICA6bWV0aDpgY2xlYXJgIGFuZCA6bWV0aDpgIWNvcHlgIG1ldGhvZHMuCisKKworLi4gX3R5cGVzc2VxLWxpc3Q6CisKK0xpc3RzCistLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogbGlzdAorCitMaXN0cyBhcmUgbXV0YWJsZSBzZXF1ZW5jZXMsIHR5cGljYWxseSB1c2VkIHRvIHN0b3JlIGNvbGxlY3Rpb25zIG9mCitob21vZ2VuZW91cyBpdGVtcyAod2hlcmUgdGhlIHByZWNpc2UgZGVncmVlIG9mIHNpbWlsYXJpdHkgd2lsbCB2YXJ5IGJ5CithcHBsaWNhdGlvbikuCisKKy4uIGNsYXNzOjogbGlzdChbaXRlcmFibGVdKQorCisgICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOgorCisgICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGAKKyAgICogVXNpbmcgc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYFthXWBgLCBgYFthLCBiLCBjXWBgCisgICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiBgYFt4IGZvciB4IGluIGl0ZXJhYmxlXWBgCisgICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYAorCisgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lCisgICBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYQorICAgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqCisgICBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kIHJldHVybmVkLCBzaW1pbGFyIHRvIGBgaXRlcmFibGVbOl1gYC4KKyAgIEZvciBleGFtcGxlLCBgYGxpc3QoJ2FiYycpYGAgcmV0dXJucyBgYFsnYScsICdiJywgJ2MnXWBgIGFuZAorICAgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSwgMiwgM11gYC4KKyAgIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ldyBlbXB0eSBsaXN0LCBgYFtdYGAuCisKKworICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZSA6ZnVuYzpgc29ydGVkYAorICAgYnVpbHQtaW4uCisKKyAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgYW5kCisgICA6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucy4gTGlzdHMgYWxzbyBwcm92aWRlIHRoZQorICAgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBsaXN0LnNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSkKKworICAgICAgVGhpcyBtZXRob2Qgc29ydHMgdGhlIGxpc3QgaW4gcGxhY2UsIHVzaW5nIG9ubHkgYGA8YGAgY29tcGFyaXNvbnMKKyAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55IGNvbXBhcmlzb24gb3BlcmF0aW9ucworICAgICAgZmFpbCwgdGhlIGVudGlyZSBzb3J0IG9wZXJhdGlvbiB3aWxsIGZhaWwgKGFuZCB0aGUgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0CisgICAgICBpbiBhIHBhcnRpYWxseSBtb2RpZmllZCBzdGF0ZSkuCisKKyAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdCBhCisgICAgICBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50IChmb3IgZXhhbXBsZSwgYGBrZXk9c3RyLmxvd2VyYGApLgorICAgICAgVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kCisgICAgICB0aGVuIHVzZWQgZm9yIHRoZSBlbnRpcmUgc29ydGluZyBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYAorICAgICAgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlCisgICAgICBrZXkgdmFsdWUuCisKKyAgICAgIFRoZSA6ZnVuYzpgZnVuY3Rvb2xzLmNtcF90b19rZXlgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYSAyLngKKyAgICAgIHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uCisKKyAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3QgZWxlbWVudHMKKyAgICAgIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisKKyAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuCisgICAgICBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlcyBieSBzaWRlCisgICAgICBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2UgOmZ1bmM6YHNvcnRlZGAgdG8KKyAgICAgIGV4cGxpY2l0bHkgcmVxdWVzdCBhIG5ldyBzb3J0ZWQgbGlzdCBpbnN0YW5jZSkuCisKKyAgICAgIFRoZSA6bWV0aDpgc29ydGAgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG8gYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZSBpZiBpdAorICAgICAgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwKKyAgICAgIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yIHNvcnRpbmcgaW4gbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieQorICAgICAgZGVwYXJ0bWVudCwgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLgorCisgICAgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgICAgIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4KKyAgICAgICAgIGluc3BlY3QsIHRoZSBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUKKyAgICAgICAgIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgOmV4YzpgVmFsdWVFcnJvcmAgaWYgaXQgY2FuCisgICAgICAgICBkZXRlY3QgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuCisKKworLi4gX3R5cGVzc2VxLXR1cGxlOgorCitUdXBsZXMKKy0tLS0tLQorCisuLiBpbmRleDo6IG9iamVjdDogdHVwbGUKKworVHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZgoraGV0ZXJvZ2VuZW91cyBkYXRhIChzdWNoIGFzIHRoZSAyLXR1cGxlcyBwcm9kdWNlZCBieSB0aGUgOmZ1bmM6YGVudW1lcmF0ZWAKK2J1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZgoraG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhIDpjbGFzczpgc2V0YCBvcgorOmNsYXNzOmBkaWN0YCBpbnN0YW5jZSkuCisKKy4uIGNsYXNzOjogdHVwbGUoW2l0ZXJhYmxlXSkKKworICAgVHVwbGVzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBhIG51bWJlciBvZiB3YXlzOgorCisgICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiBgYCgpYGAKKyAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6IGBgYSxgYCBvciBgYChhLClgYAorICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgCisgICAqIFVzaW5nIHRoZSA6ZnVuYzpgdHVwbGVgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvciBgYHR1cGxlKGl0ZXJhYmxlKWBgCisKKyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZSBzYW1lCisgICBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYSBzZXF1ZW5jZSwgYQorICAgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBJZiAqaXRlcmFibGUqCisgICBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4gRm9yIGV4YW1wbGUsCisgICBgYHR1cGxlKCdhYmMnKWBgIHJldHVybnMgYGAoJ2EnLCAnYicsICdjJylgYCBhbmQKKyAgIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLgorICAgSWYgbm8gYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCBgYCgpYGAuCisKKyAgIE5vdGUgdGhhdCBpdCBpcyBhY3R1YWxseSB0aGUgY29tbWEgd2hpY2ggbWFrZXMgYSB0dXBsZSwgbm90IHRoZSBwYXJlbnRoZXNlcy4KKyAgIFRoZSBwYXJlbnRoZXNlcyBhcmUgb3B0aW9uYWwsIGV4Y2VwdCBpbiB0aGUgZW1wdHkgdHVwbGUgY2FzZSwgb3IKKyAgIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyBhbWJpZ3VpdHkuIEZvciBleGFtcGxlLAorICAgYGBmKGEsIGIsIGMpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggdGhyZWUgYXJndW1lbnRzLCB3aGlsZQorICAgYGBmKChhLCBiLCBjKSlgYCBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlIHNvbGUgYXJndW1lbnQuCisKKyAgIFR1cGxlcyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCisgICBvcGVyYXRpb25zLgorCitGb3IgaGV0ZXJvZ2VuZW91cyBjb2xsZWN0aW9ucyBvZiBkYXRhIHdoZXJlIGFjY2VzcyBieSBuYW1lIGlzIGNsZWFyZXIgdGhhbgorYWNjZXNzIGJ5IGluZGV4LCA6ZnVuYzpgY29sbGVjdGlvbnMubmFtZWR0dXBsZWAgbWF5IGJlIGEgbW9yZSBhcHByb3ByaWF0ZQorY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LgorCisKKy4uIF90eXBlc3NlcS1yYW5nZToKKworUmFuZ2VzCistLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IHJhbmdlCisKK1RoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIHJlcHJlc2VudHMgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIG9mIG51bWJlcnMgYW5kIGlzCitjb21tb25seSB1c2VkIGZvciBsb29waW5nIGEgc3BlY2lmaWMgbnVtYmVyIG9mIHRpbWVzIGluIDprZXl3b3JkOmBmb3JgCitsb29wcy4KKworLi4gY2xhc3M6OiByYW5nZShzdG9wKQorICAgICAgICAgICByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKQorCisgICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzIChlaXRoZXIgYnVpbHQtaW4KKyAgIDpjbGFzczpgaW50YCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYCBzcGVjaWFsCisgICBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYDFgYC4KKyAgIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLgorICAgSWYgKnN0ZXAqIGlzIHplcm8sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KKworICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZCBieSB0aGUKKyAgIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZAorICAgYGByW2ldIDwgc3RvcGBgLgorCisgICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsIGRldGVybWluZWQgYnkKKyAgIHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGUgY29uc3RyYWludHMgYXJlIGBgaSA+PSAwYGAKKyAgIGFuZCBgYHJbaV0gPiBzdG9wYGAuCisKKyAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlCisgICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlIGludGVycHJldGVkCisgICBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnkgdGhlIHBvc2l0aXZlCisgICBpbmRpY2VzLgorCisgICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gOmRhdGE6YHN5cy5tYXhzaXplYCBhcmUKKyAgIHBlcm1pdHRlZCBidXQgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyA6ZnVuYzpgbGVuYCkgbWF5IHJhaXNlCisgICA6ZXhjOmBPdmVyZmxvd0Vycm9yYC4KKworICAgUmFuZ2UgZXhhbXBsZXM6OgorCisgICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpCisgICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSkKKyAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSkKKyAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSkKKyAgICAgIFswLCAzLCA2LCA5XQorICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpCisgICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV0KKyAgICAgID4+PiBsaXN0KHJhbmdlKDApKQorICAgICAgW10KKyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKQorICAgICAgW10KKworICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucworICAgZXhjZXB0IGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHMgY2FuCisgICBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmQgcmVwZXRpdGlvbiBhbmQKKyAgIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS4KKworICAgLi4gZGF0YTogc3RhcnQKKworICAgICAgVGhlIHZhbHVlIG9mIHRoZSAqc3RhcnQqIHBhcmFtZXRlciAob3IgYGAwYGAgaWYgdGhlIHBhcmFtZXRlciB3YXMKKyAgICAgIG5vdCBzdXBwbGllZCkKKworICAgLi4gZGF0YTogc3RvcAorCisgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXIKKworICAgLi4gZGF0YTogc3RlcAorCisgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGVwKiBwYXJhbWV0ZXIgKG9yIGBgMWBgIGlmIHRoZSBwYXJhbWV0ZXIgd2FzCisgICAgICBub3Qgc3VwcGxpZWQpCisKK1RoZSBhZHZhbnRhZ2Ugb2YgdGhlIDpjbGFzczpgcmFuZ2VgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgOmNsYXNzOmBsaXN0YCBvcgorOmNsYXNzOmB0dXBsZWAgaXMgdGhhdCBhIDpjbGFzczpgcmFuZ2VgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lCisoc21hbGwpIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQKK29ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nIGluZGl2aWR1YWwKK2l0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS4KKworUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIDpjbGFzczpgY29sbGVjdGlvbnMuU2VxdWVuY2VgIEFCQywgYW5kIHByb3ZpZGUKK2ZlYXR1cmVzIHN1Y2ggYXMgY29udGFpbm1lbnQgdGVzdHMsIGVsZW1lbnQgaW5kZXggbG9va3VwLCBzbGljaW5nIGFuZAorc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlIDpyZWY6YHR5cGVzc2VxYCk6CisKKyAgID4+PiByID0gcmFuZ2UoMCwgMjAsIDIpCisgICA+Pj4gcgorICAgcmFuZ2UoMCwgMjAsIDIpCisgICA+Pj4gMTEgaW4gcgorICAgRmFsc2UKKyAgID4+PiAxMCBpbiByCisgICBUcnVlCisgICA+Pj4gci5pbmRleCgxMCkKKyAgIDUKKyAgID4+PiByWzVdCisgICAxMAorICAgPj4+IHJbOjVdCisgICByYW5nZSgwLCAxMCwgMikKKyAgID4+PiByWy0xXQorICAgMTgKKworVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoIGBgPT1gYCBhbmQgYGAhPWBgIGNvbXBhcmVzCit0aGVtIGFzIHNlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmCit0aGV5IHJlcHJlc2VudCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMuICAoTm90ZSB0aGF0IHR3byByYW5nZQorb2JqZWN0cyB0aGF0IGNvbXBhcmUgZXF1YWwgbWlnaHQgaGF2ZSBkaWZmZXJlbnQgOmF0dHI6YHN0YXJ0YCwKKzphdHRyOmBzdG9wYCBhbmQgOmF0dHI6YHN0ZXBgIGF0dHJpYnV0ZXMsIGZvciBleGFtcGxlIGBgcmFuZ2UoMCkgPT0KK3JhbmdlKDIsIDEsIDMpYGAgb3IgYGByYW5nZSgwLCAzLCAyKSA9PSByYW5nZSgwLCA0LCAyKWBgLikKKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKKyAgIEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLgorICAgU3VwcG9ydCBzbGljaW5nIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLgorICAgVGVzdCA6Y2xhc3M6YGludGAgb2JqZWN0cyBmb3IgbWVtYmVyc2hpcCBpbiBjb25zdGFudCB0aW1lIGluc3RlYWQgb2YKKyAgIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2Ugb2JqZWN0cyBiYXNlZCBvbiB0aGUKKyAgIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGV5IGRlZmluZSAoaW5zdGVhZCBvZiBjb21wYXJpbmcgYmFzZWQgb24KKyAgIG9iamVjdCBpZGVudGl0eSkuCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgVGhlIDphdHRyOmBzdGFydGAsIDphdHRyOmBzdG9wYCBhbmQgOmF0dHI6YHN0ZXBgIGF0dHJpYnV0ZXMuCisKKworLi4gX3RleHRzZXE6CisKK1RleHQgU2VxdWVuY2UgVHlwZSAtLS0gOmNsYXNzOmBzdHJgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBpbmRleDo6CisgICBvYmplY3Q6IHN0cmluZworICAgb2JqZWN0OiBieXRlcworICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogaW8uU3RyaW5nSU8KKworCitUZXh0dWFsIGRhdGEgaW4gUHl0aG9uIGlzIGhhbmRsZWQgd2l0aCBgYHN0cmBgIG9iamVjdHMsIHdoaWNoIGFyZSBpbW11dGFibGUKKzpyZWY6YHNlcXVlbmNlcyA8dHlwZXNzZXE+YCBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLiAgU3RyaW5nIGxpdGVyYWxzIGFyZQord3JpdHRlbiBpbiBhIHZhcmlldHkgb2Ygd2F5czoKKworKiBTaW5nbGUgcXVvdGVzOiBgYCdhbGxvd3MgZW1iZWRkZWQgImRvdWJsZSIgcXVvdGVzJ2BgCisqIERvdWJsZSBxdW90ZXM6IGBgImFsbG93cyBlbWJlZGRlZCAnc2luZ2xlJyBxdW90ZXMiYGAuCisqIFRyaXBsZSBxdW90ZWQ6IGBgJycnVGhyZWUgc2luZ2xlIHF1b3RlcycnJ2BgLCBgYCIiIlRocmVlIGRvdWJsZSBxdW90ZXMiIiJgYAorCitUcmlwbGUgcXVvdGVkIHN0cmluZ3MgbWF5IHNwYW4gbXVsdGlwbGUgbGluZXMgLSBhbGwgYXNzb2NpYXRlZCB3aGl0ZXNwYWNlIHdpbGwKK2JlIGluY2x1ZGVkIGluIHRoZSBzdHJpbmcgbGl0ZXJhbC4KKworU3RyaW5nIGxpdGVyYWxzIHRoYXQgYXJlIHBhcnQgb2YgYSBzaW5nbGUgZXhwcmVzc2lvbiBhbmQgaGF2ZSBvbmx5IHdoaXRlc3BhY2UKK2JldHdlZW4gdGhlbSB3aWxsIGJlIGltcGxpY2l0bHkgY29udmVydGVkIHRvIGEgc2luZ2xlIHN0cmluZyBsaXRlcmFsLiBUaGF0CitpcywgYGAoInNwYW0gIiAiZWdncyIpID09ICJzcGFtIGVnZ3MiYGAuCisKK1NlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dCB0aGUgdmFyaW91cyBmb3JtcyBvZiBzdHJpbmcgbGl0ZXJhbCwKK2luY2x1ZGluZyBzdXBwb3J0ZWQgZXNjYXBlIHNlcXVlbmNlcywgYW5kIHRoZSBgYHJgYCAoInJhdyIpIHByZWZpeCB0aGF0CitkaXNhYmxlcyBtb3N0IGVzY2FwZSBzZXF1ZW5jZSBwcm9jZXNzaW5nLgorCitTdHJpbmdzIG1heSBhbHNvIGJlIGNyZWF0ZWQgZnJvbSBvdGhlciBvYmplY3RzIHdpdGggdGhlIGJ1aWx0LWluCitmdW5jdGlvbiA6ZnVuYzpgc3RyYC4KKworU2luY2UgdGhlcmUgaXMgbm8gc2VwYXJhdGUgImNoYXJhY3RlciIgdHlwZSwgaW5kZXhpbmcgYSBzdHJpbmcgcHJvZHVjZXMKK3N0cmluZ3Mgb2YgbGVuZ3RoIDEuIFRoYXQgaXMsIGZvciBhIG5vbi1lbXB0eSBzdHJpbmcgKnMqLCBgYHNbMF0gPT0gc1swOjFdYGAuCisKK1RoZXJlIGlzIGFsc28gbm8gbXV0YWJsZSBzdHJpbmcgdHlwZSwgYnV0IDptZXRoOmBzdHIuam9pbmAgb3IKKzpjbGFzczpgaW8uU3RyaW5nSU9gIGNhbiBiZSB1c2VkIHRvIGVmZmljaWVudGx5IGNvbnN0cnVjdCBzdHJpbmdzIGZyb20KK211bHRpcGxlIGZyYWdtZW50cy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMiBzZXJpZXMsIHRoZSBgYHVgYCBwcmVmaXggaXMKKyAgIG9uY2UgYWdhaW4gcGVybWl0dGVkIG9uIHN0cmluZyBsaXRlcmFscy4gSXQgaGFzIG5vIGVmZmVjdCBvbiB0aGUgbWVhbmluZworICAgb2Ygc3RyaW5nIGxpdGVyYWxzIGFuZCBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCB0aGUgYGByYGAgcHJlZml4LgogCiAuLiBfc3RyaW5nLW1ldGhvZHM6CiAKIFN0cmluZyBNZXRob2RzCiAtLS0tLS0tLS0tLS0tLQogCi0uLiBpbmRleDo6IHBhaXI6IHN0cmluZzsgbWV0aG9kcworLi4gaW5kZXg6OgorICAgcGFpcjogc3RyaW5nOyBtZXRob2RzCisgICBtb2R1bGU6IHJlCiAKLVN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LgorU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSA6cmVmOmBjb21tb24gPHR5cGVzc2VxLWNvbW1vbj5gIHNlcXVlbmNlCitvcGVyYXRpb25zLCBhbG9uZyB3aXRoIHRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LgogCi1JbiBhZGRpdGlvbiwgUHl0aG9uJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZQotOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZQotOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3Igc3RyaW5nCi1mdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KK1N0cmluZ3MgYWxzbyBzdXBwb3J0IHR3byBzdHlsZXMgb2Ygc3RyaW5nIGZvcm1hdHRpbmcsIG9uZSBwcm92aWRpbmcgYSBsYXJnZQorZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgOm1ldGg6YHN0ci5mb3JtYXRgLAorOnJlZjpgZm9ybWF0c3RyaW5nc2AgYW5kIDpyZWY6YHN0cmluZy1mb3JtYXR0aW5nYCkgYW5kIHRoZSBvdGhlciBiYXNlZCBvbiBDCitgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXMgYW5kIGlzCitzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlIGNhc2VzIGl0IGNhbgoraGFuZGxlICg6cmVmOmBvbGQtc3RyaW5nLWZvcm1hdHRpbmdgKS4KKworVGhlIDpyZWY6YHRleHRzZXJ2aWNlc2Agc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSBjb3ZlcnMgYSBudW1iZXIgb2YKK290aGVyIG1vZHVsZXMgdGhhdCBwcm92aWRlIHZhcmlvdXMgdGV4dCByZWxhdGVkIHV0aWxpdGllcyAoaW5jbHVkaW5nIHJlZ3VsYXIKK2V4cHJlc3Npb24gc3VwcG9ydCBpbiB0aGUgOm1vZDpgcmVgIG1vZHVsZSkuCiAKIC4uIG1ldGhvZDo6IHN0ci5jYXBpdGFsaXplKCkKIApAQCAtMTAwMCw2ICsxNDIxLDIzIEBACiAgICByZXN0IGxvd2VyY2FzZWQuCiAKIAorLi4gbWV0aG9kOjogc3RyLmNhc2Vmb2xkKCkKKworICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmUgdXNlZCBmb3IKKyAgIGNhc2VsZXNzIG1hdGNoaW5nLgorCisgICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZSBpdCBpcworICAgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHRoZSBHZXJtYW4KKyAgIGxvd2VyY2FzZSBsZXR0ZXIgYGAnw58nYGAgaXMgZXF1aXZhbGVudCB0byBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeQorICAgbG93ZXJjYXNlLCA6bWV0aDpgbG93ZXJgIHdvdWxkIGRvIG5vdGhpbmcgdG8gYGAnw58nYGA7IDptZXRoOmBjYXNlZm9sZGAKKyAgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLgorCisgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBzdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKQogCiAgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUKQEAgLTEyMDcsNiArMTY0NSw5IEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIGxvd2VyY2FzZS4KIAorICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgorCiAKIC4uIG1ldGhvZDo6IHN0ci5sc3RyaXAoW2NoYXJzXSkKIApAQCAtMTI3OSw3ICsxNzIwLDcgQEAKICAgIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieSB0aGUgc3RyaW5nIGl0c2VsZi4KIAogCi0uLiBtZXRob2Q6OiBzdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpCiAKICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZSBkZWxpbWl0ZXIgc3RyaW5nLgogICAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqCkBAIC0xMzAxLDcgKzE3NDIsNyBAQAogICAgICAgJ21pc3Npc3MnCiAKIAotLi4gbWV0aG9kOjogc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKQorLi4gbWV0aG9kOjogc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlIGRlbGltaXRlcgogICAgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0cyBhcmUgZG9uZSAodGh1cywKQEAgLTEzNzAsNyArMTgxMSw4IEBACiAuLiBtZXRob2Q6OiBzdHIuc3dhcGNhc2UoKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlIGFuZAotICAgdmljZSB2ZXJzYS4KKyAgIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdCBpcyBub3QgbmVjZXNzYXJpbHkgdHJ1ZSB0aGF0CisgICBgYHMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHNgYC4KIAogCiAuLiBtZXRob2Q6OiBzdHIudGl0bGUoKQpAQCAtMTQyMSw3ICsxODYzLDExIEBACiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXyBjb252ZXJ0ZWQgdG8KICAgIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHN0ci51cHBlcigpLmlzdXBwZXIoKWBgIG1pZ2h0IGJlIGBgRmFsc2VgYCBpZiBgYHNgYAogICAgY29udGFpbnMgdW5jYXNlZCBjaGFyYWN0ZXJzIG9yIGlmIHRoZSBVbmljb2RlIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcKLSAgIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuCisgICBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLAorICAgdGl0bGVjYXNlKS4KKworICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlIFVuaWNvZGUKKyAgIFN0YW5kYXJkLgogCiAKIC4uIG1ldGhvZDo6IHN0ci56ZmlsbCh3aWR0aCkKQEAgLTE0MzQsOCArMTg4MCw4IEBACiAKIC4uIF9vbGQtc3RyaW5nLWZvcm1hdHRpbmc6CiAKLU9sZCBTdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYGBwcmludGZgYC1zdHlsZSBTdHJpbmcgRm9ybWF0dGluZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6CiAgICBzaW5nbGU6IGZvcm1hdHRpbmcsIHN0cmluZyAoJSkKQEAgLTE0NDcsMjMgKzE4OTMsMTkgQEAKICAgIHNpbmdsZTogJSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgaW50ZXJwb2xhdGlvbgogCi0uLiBYWFggaXMgdGhlIG5vdGUgZW5vdWdoPwotCiAuLiBub3RlOjoKIAotICAgVGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9ucyBkZXNjcmliZWQgaGVyZSBhcmUgbW9kZWxsZWQgb24gQydzIHByaW50ZigpCi0gICBzeW50YXguICBUaGV5IG9ubHkgc3VwcG9ydCBmb3JtYXR0aW5nIG9mIGNlcnRhaW4gYnVpbHRpbiB0eXBlcy4gIFRoZQotICAgdXNlIG9mIGEgYmluYXJ5IG9wZXJhdG9yIG1lYW5zIHRoYXQgY2FyZSBtYXkgYmUgbmVlZGVkIGluIG9yZGVyIHRvCi0gICBmb3JtYXQgdHVwbGVzIGFuZCBkaWN0aW9uYXJpZXMgY29ycmVjdGx5LiAgQXMgdGhlIG5ldwotICAgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHN5bnRheCBpcyBtb3JlIGZsZXhpYmxlIGFuZCBoYW5kbGVzIHR1cGxlcyBhbmQKLSAgIGRpY3Rpb25hcmllcyBuYXR1cmFsbHksIGl0IGlzIHJlY29tbWVuZGVkIGZvciBuZXcgY29kZS4gIEhvd2V2ZXIsIHRoZXJlCi0gICBhcmUgbm8gY3VycmVudCBwbGFucyB0byBkZXByZWNhdGUgcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcuCisgICBUaGUgZm9ybWF0dGluZyBvcGVyYXRpb25zIGRlc2NyaWJlZCBoZXJlIGV4aGliaXQgYSB2YXJpZXR5IG9mIHF1aXJrcyB0aGF0CisgICBsZWFkIHRvIGEgbnVtYmVyIG9mIGNvbW1vbiBlcnJvcnMgKHN1Y2ggYXMgZmFpbGluZyB0byBkaXNwbGF5IHR1cGxlcyBhbmQKKyAgIGRpY3Rpb25hcmllcyBjb3JyZWN0bHkpLiAgVXNpbmcgdGhlIG5ld2VyIDptZXRoOmBzdHIuZm9ybWF0YCBpbnRlcmZhY2UKKyAgIGhlbHBzIGF2b2lkIHRoZXNlIGVycm9ycywgYW5kIGFsc28gcHJvdmlkZXMgYSBnZW5lcmFsbHkgbW9yZSBwb3dlcmZ1bCwKKyAgIGZsZXhpYmxlIGFuZCBleHRlbnNpYmxlIGFwcHJvYWNoIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzIGEgc3RyaW5nKSwgYGAlYGAgY29udmVyc2lvbgogc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkIHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzIG9mICp2YWx1ZXMqLgotVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZSB1c2luZyA6YzpmdW5jOmBzcHJpbnRmYCBpbiB0aGUgQyBsYW5ndWFnZS4KK1RoZSBlZmZlY3QgaXMgc2ltaWxhciB0byB1c2luZyB0aGUgOmM6ZnVuYzpgc3ByaW50ZmAgaW4gdGhlIEMgbGFuZ3VhZ2UuCiAKIElmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLXR1cGxlCiBvYmplY3QuIFs1XV8gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseSB0aGUgbnVtYmVyIG9mCkBAIC0xNjIxLDIxMSArMjA2MywxNzggQEAKICAgIGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZSB2YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vCiAgICBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLgogCi0uLiBpbmRleDo6Ci0gICBtb2R1bGU6IHN0cmluZwotICAgbW9kdWxlOiByZQogCi1BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXMgOm1vZDpgc3RyaW5nYCBhbmQKLTptb2Q6YHJlYC4KKy4uIF9iaW5hcnlzZXE6CiAKLQotLi4gX3R5cGVzc2VxLXJhbmdlOgotCi1SYW5nZSBUeXBlCi0tLS0tLS0tLS0tCi0KLS4uIGluZGV4Ojogb2JqZWN0OiByYW5nZQotCi1UaGUgOmNsYXNzOmByYW5nZWAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3IKLWxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSA6Y2xhc3M6YHJhbmdlYCB0eXBlIGlzIHRoYXQgYW4gOmNsYXNzOmByYW5nZWAKLW9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUKLXJhbmdlIGl0IHJlcHJlc2VudHMuCi0KLVJhbmdlIG9iamVjdHMgaGF2ZSByZWxhdGl2ZWx5IGxpdHRsZSBiZWhhdmlvcjogdGhleSBzdXBwb3J0IGluZGV4aW5nLCBjb250YWlucywKLWl0ZXJhdGlvbiwgdGhlIDpmdW5jOmBsZW5gIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0uLiBtZXRob2Q6OiByYW5nZS5jb3VudCh4KQotCi0gICBSZXR1cm4gdGhlIG51bWJlciBvZiAqaSoncyBmb3Igd2hpY2ggYGBzW2ldID09IHhgYC4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0uLiBtZXRob2Q6OiByYW5nZS5pbmRleCh4KQotCi0gICBSZXR1cm4gdGhlIHNtYWxsZXN0ICppKiBzdWNoIHRoYXQgYGBzW2ldID09IHhgYC4gIFJhaXNlcwotICAgOmV4YzpgVmFsdWVFcnJvcmAgd2hlbiAqeCogaXMgbm90IGluIHRoZSByYW5nZS4KLQotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0uLiBfdHlwZXNzZXEtbXV0YWJsZToKLQotTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQmluYXJ5IFNlcXVlbmNlIFR5cGVzIC0tLSA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgLCA6Y2xhc3M6YG1lbW9yeXZpZXdgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gaW5kZXg6OgotICAgdHJpcGxlOiBtdXRhYmxlOyBzZXF1ZW5jZTsgdHlwZXMKLSAgIG9iamVjdDogbGlzdAorICAgb2JqZWN0OiBieXRlcwogICAgb2JqZWN0OiBieXRlYXJyYXkKKyAgIG9iamVjdDogbWVtb3J5dmlldworICAgbW9kdWxlOiBhcnJheQogCi1MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93IGluLXBsYWNlCi1tb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZW4gYWRkZWQgdG8gdGhlCi1sYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLiAgU3RyaW5ncyBhbmQgdHVwbGVzIGFyZQotaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90IGJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlCi1mb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4KLWFyYml0cmFyeSBvYmplY3QpLgorVGhlIGNvcmUgYnVpbHQtaW4gdHlwZXMgZm9yIG1hbmlwdWxhdGluZyBiaW5hcnkgZGF0YSBhcmUgOmNsYXNzOmBieXRlc2AgYW5kCis6Y2xhc3M6YGJ5dGVhcnJheWAuIFRoZXkgYXJlIHN1cHBvcnRlZCBieSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHdoaWNoIHVzZXMKK3RoZSBidWZmZXIgcHJvdG9jb2wgdG8gYWNjZXNzIHRoZSBtZW1vcnkgb2Ygb3RoZXIgYmluYXJ5IG9iamVjdHMgd2l0aG91dAorbmVlZGluZyB0byBtYWtlIGEgY29weS4KIAotTm90ZSB0aGF0IHdoaWxlIGxpc3RzIGFsbG93IHRoZWlyIGl0ZW1zIHRvIGJlIG9mIGFueSB0eXBlLCBieXRlYXJyYXkgb2JqZWN0Ci0iaXRlbXMiIGFyZSBhbGwgaW50ZWdlcnMgaW4gdGhlIHJhbmdlIDAgPD0geCA8IDI1Ni4KK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlIHN1cHBvcnRzIGVmZmljaWVudCBzdG9yYWdlIG9mIGJhc2ljIGRhdGEgdHlwZXMgbGlrZQorMzItYml0IGludGVnZXJzIGFuZCBJRUVFNzU0IGRvdWJsZS1wcmVjaXNpb24gZmxvYXRpbmcgdmFsdWVzLgogCi0uLiBpbmRleDo6Ci0gICB0cmlwbGU6IG9wZXJhdGlvbnMgb247IHNlcXVlbmNlOyB0eXBlcwotICAgdHJpcGxlOiBvcGVyYXRpb25zIG9uOyBsaXN0OyB0eXBlCi0gICBwYWlyOiBzdWJzY3JpcHQ7IGFzc2lnbm1lbnQKLSAgIHBhaXI6IHNsaWNlOyBhc3NpZ25tZW50Ci0gICBzdGF0ZW1lbnQ6IGRlbAotICAgc2luZ2xlOiBhcHBlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBleHRlbmQoKSAoc2VxdWVuY2UgbWV0aG9kKQotICAgc2luZ2xlOiBjb3VudCgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IGluZGV4KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogaW5zZXJ0KCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcG9wKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcmVtb3ZlKCkgKHNlcXVlbmNlIG1ldGhvZCkKLSAgIHNpbmdsZTogcmV2ZXJzZSgpIChzZXF1ZW5jZSBtZXRob2QpCi0gICBzaW5nbGU6IHNvcnQoKSAoc2VxdWVuY2UgbWV0aG9kKQorLi4gX3R5cGVieXRlczoKIAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09KwotfCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5IHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpcyByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCAgIHwgXCgxKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmUgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuZXh0ZW5kKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgIHwgXCgyKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSoncyBmb3IgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgIHwgXCgzKSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8ICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGpgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcy5pbnNlcnQoaSwgeClgYCAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgfCBcKDQpICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgIHwgXCg1KSAgICAgICAgICAgICAgICB8Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgIHwgXCgzKSAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLnJldmVyc2UoKWBgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICB8IFwoNikgICAgICAgICAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzLnNvcnQoW2tleVssIHJldmVyc2VdXSlgYCB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSB8ICg2KSwgKDcpLCAoOCkgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rCitCeXRlcworLS0tLS0KKworLi4gaW5kZXg6OiBvYmplY3Q6IGJ5dGVzCisKK0J5dGVzIG9iamVjdHMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXMgb2Ygc2luZ2xlIGJ5dGVzLiBTaW5jZSBtYW55IG1ham9yCitiaW5hcnkgcHJvdG9jb2xzIGFyZSBiYXNlZCBvbiB0aGUgQVNDSUkgdGV4dCBlbmNvZGluZywgYnl0ZXMgb2JqZWN0cyBvZmZlcgorc2V2ZXJhbCBtZXRob2RzIHRoYXQgYXJlIG9ubHkgdmFsaWQgd2hlbiB3b3JraW5nIHdpdGggQVNDSUkgY29tcGF0aWJsZQorZGF0YSBhbmQgYXJlIGNsb3NlbHkgcmVsYXRlZCB0byBzdHJpbmcgb2JqZWN0cyBpbiBhIHZhcmlldHkgb2Ygb3RoZXIgd2F5cy4KKworRmlyc3RseSwgdGhlIHN5bnRheCBmb3IgYnl0ZXMgbGl0ZXJhbHMgaXMgbGFyZ2VseSB0aGUgc2FtZSBhcyB0aGF0IGZvciBzdHJpbmcKK2xpdGVyYWxzLCBleGNlcHQgdGhhdCBhIGBgYmBgIHByZWZpeCBpcyBhZGRlZDoKKworKiBTaW5nbGUgcXVvdGVzOiBgYGInc3RpbGwgYWxsb3dzIGVtYmVkZGVkICJkb3VibGUiIHF1b3RlcydgYAorKiBEb3VibGUgcXVvdGVzOiBgYGIic3RpbGwgYWxsb3dzIGVtYmVkZGVkICdzaW5nbGUnIHF1b3RlcyJgYC4KKyogVHJpcGxlIHF1b3RlZDogYGBiJycnMyBzaW5nbGUgcXVvdGVzJycnYGAsIGBgYiIiIjMgZG91YmxlIHF1b3RlcyIiImBgCisKK09ubHkgQVNDSUkgY2hhcmFjdGVycyBhcmUgcGVybWl0dGVkIGluIGJ5dGVzIGxpdGVyYWxzIChyZWdhcmRsZXNzIG9mIHRoZQorZGVjbGFyZWQgc291cmNlIGNvZGUgZW5jb2RpbmcpLiBBbnkgYmluYXJ5IHZhbHVlcyBvdmVyIDEyNyBtdXN0IGJlIGVudGVyZWQKK2ludG8gYnl0ZXMgbGl0ZXJhbHMgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGVzY2FwZSBzZXF1ZW5jZS4KKworQXMgd2l0aCBzdHJpbmcgbGl0ZXJhbHMsIGJ5dGVzIGxpdGVyYWxzIG1heSBhbHNvIHVzZSBhIGBgcmBgIHByZWZpeCB0byBkaXNhYmxlCitwcm9jZXNzaW5nIG9mIGVzY2FwZSBzZXF1ZW5jZXMuIFNlZSA6cmVmOmBzdHJpbmdzYCBmb3IgbW9yZSBhYm91dCB0aGUgdmFyaW91cworZm9ybXMgb2YgYnl0ZXMgbGl0ZXJhbCwgaW5jbHVkaW5nIHN1cHBvcnRlZCBlc2NhcGUgc2VxdWVuY2VzLgorCitXaGlsZSBieXRlcyBsaXRlcmFscyBhbmQgcmVwcmVzZW50YXRpb25zIGFyZSBiYXNlZCBvbiBBU0NJSSB0ZXh0LCBieXRlcworb2JqZWN0cyBhY3R1YWxseSBiZWhhdmUgbGlrZSBpbW11dGFibGUgc2VxdWVuY2VzIG9mIGludGVnZXJzLCB3aXRoIGVhY2gKK3ZhbHVlIGluIHRoZSBzZXF1ZW5jZSByZXN0cmljdGVkIHN1Y2ggdGhhdCBgYDAgPD0geCA8IDI1NmBgIChhdHRlbXB0cyB0bwordmlvbGF0ZSB0aGlzIHJlc3RyaWN0aW9uIHdpbGwgdHJpZ2dlciA6ZXhjOmBWYWx1ZUVycm9yYC4gVGhpcyBpcyBkb25lCitkZWxpYmVyYXRlbHkgdG8gZW1waGFzaXNlIHRoYXQgd2hpbGUgbWFueSBiaW5hcnkgZm9ybWF0cyBpbmNsdWRlIEFTQ0lJIGJhc2VkCitlbGVtZW50cyBhbmQgY2FuIGJlIHVzZWZ1bGx5IG1hbmlwdWxhdGVkIHdpdGggc29tZSB0ZXh0LW9yaWVudGVkIGFsZ29yaXRobXMsCit0aGlzIGlzIG5vdCBnZW5lcmFsbHkgdGhlIGNhc2UgZm9yIGFyYml0cmFyeSBiaW5hcnkgZGF0YSAoYmxpbmRseSBhcHBseWluZwordGV4dCBwcm9jZXNzaW5nIGFsZ29yaXRobXMgdG8gYmluYXJ5IGRhdGEgZm9ybWF0cyB0aGF0IGFyZSBub3QgQVNDSUkKK2NvbXBhdGlibGUgd2lsbCB1c3VhbGx5IGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uKS4KKworSW4gYWRkaXRpb24gdG8gdGhlIGxpdGVyYWwgZm9ybXMsIGJ5dGVzIG9iamVjdHMgY2FuIGJlIGNyZWF0ZWQgaW4gYSBudW1iZXIgb2YKK290aGVyIHdheXM6CisKKyogQSB6ZXJvLWZpbGxlZCBieXRlcyBvYmplY3Qgb2YgYSBzcGVjaWZpZWQgbGVuZ3RoOiBgYGJ5dGVzKDEwKWBgCisqIEZyb20gYW4gaXRlcmFibGUgb2YgaW50ZWdlcnM6IGBgYnl0ZXMocmFuZ2UoMjApKWBgCisqIENvcHlpbmcgZXhpc3RpbmcgYmluYXJ5IGRhdGEgdmlhIHRoZSBidWZmZXIgcHJvdG9jb2w6ICBgYGJ5dGVzKG9iailgYAorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZXMgPGZ1bmMtYnl0ZXM+YCBidWlsdC1pbi4KKworU2luY2UgYnl0ZXMgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGludGVnZXJzLCBmb3IgYSBieXRlcyBvYmplY3QgKmIqLAorYGBiWzBdYGAgd2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvYmplY3Qgb2YKK2xlbmd0aCAxLiAgKFRoaXMgY29udHJhc3RzIHdpdGggdGV4dCBzdHJpbmdzLCB3aGVyZSBib3RoIGluZGV4aW5nIGFuZAorc2xpY2luZyB3aWxsIHByb2R1Y2UgYSBzdHJpbmcgb2YgbGVuZ3RoIDEpCisKK1RoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlIGxpdGVyYWwgZm9ybWF0IChgYGInLi4uJ2BgKQorc2luY2UgaXQgaXMgb2Z0ZW4gbW9yZSB1c2VmdWwgdGhhbiBlLmcuIGBgYnl0ZXMoWzQ2LCA0NiwgNDZdKWBgLiAgWW91IGNhbgorYWx3YXlzIGNvbnZlcnQgYSBieXRlcyBvYmplY3QgaW50byBhIGxpc3Qgb2YgaW50ZWdlcnMgdXNpbmcgYGBsaXN0KGIpYGAuCiAKIAotTm90ZXM6Ci0KLSgxKQotICAgKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy4KLQotKDIpCi0gICAqeCogY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuCi0KLSgzKQotICAgUmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcwotICAgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSA6bWV0aDpgaW5kZXhgIG1ldGhvZCwgdGhlIHNlcXVlbmNlCi0gICBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZAotICAgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuCi0KLSg0KQotICAgV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIHRoZSA6bWV0aDpgaW5zZXJ0YAotICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsCi0gICBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLgotCi0oNSkKLSAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gYGAtMWBgLCBzbyB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxhc3QKLSAgIGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuCi0KLSg2KQotICAgVGhlIDptZXRoOmBzb3J0YCBhbmQgOm1ldGg6YHJldmVyc2VgIG1ldGhvZHMgbW9kaWZ5IHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IKLSAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiBzb3J0aW5nIG9yIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdQotICAgdGhhdCB0aGV5IG9wZXJhdGUgYnkgc2lkZSBlZmZlY3QsIHRoZXkgZG9uJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQKLSAgIHNlcXVlbmNlLgotCi0oNykKLSAgIFRoZSA6bWV0aDpgc29ydGAgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgdGhlCi0gICBjb21wYXJpc29ucy4gIEVhY2ggbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgotCi0gICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3QgYSBjb21wYXJpc29uCi0gICBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogYGBrZXk9c3RyLmxvd2VyYGAuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4KLSAgIFVzZSA6ZnVuYzpgZnVuY3Rvb2xzLmNtcF90b19rZXlgIHRvIGNvbnZlcnQgYW4KLSAgIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLgorLi4gbm90ZTo6CisgICBGb3IgUHl0aG9uIDIueCB1c2VyczogSW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzLCBhIHZhcmlldHkgb2YgaW1wbGljaXQKKyAgIGNvbnZlcnNpb25zIGJldHdlZW4gOC1iaXQgc3RyaW5ncyAodGhlIGNsb3Nlc3QgdGhpbmcgMi54IG9mZmVycyB0byBhCisgICBidWlsdC1pbiBiaW5hcnkgZGF0YSB0eXBlKSBhbmQgVW5pY29kZSBzdHJpbmdzIHdlcmUgcGVybWl0dGVkLiBUaGlzIHdhcyBhCisgICBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3b3JrYXJvdW5kIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgUHl0aG9uCisgICBvcmlnaW5hbGx5IG9ubHkgc3VwcG9ydGVkIDgtYml0IHRleHQsIGFuZCBVbmljb2RlIHRleHQgd2FzIGEgbGF0ZXIKKyAgIGFkZGl0aW9uLiBJbiBQeXRob24gMy54LCB0aG9zZSBpbXBsaWNpdCBjb252ZXJzaW9ucyBhcmUgZ29uZSAtIGNvbnZlcnNpb25zCisgICBiZXR3ZWVuIDgtYml0IGJpbmFyeSBkYXRhIGFuZCBVbmljb2RlIHRleHQgbXVzdCBiZSBleHBsaWNpdCwgYW5kIGJ5dGVzIGFuZAorICAgc3RyaW5nIG9iamVjdHMgd2lsbCBhbHdheXMgY29tcGFyZSB1bmVxdWFsLgogCiAKLSAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3QgZWxlbWVudHMgYXJlCi0gICBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuCisuLiBfdHlwZWJ5dGVhcnJheToKIAotICAgVGhlIDptZXRoOmBzb3J0YCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBCi0gICBzb3J0IGlzIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzCi0gICB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvcgotICAgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuCitCeXRlYXJyYXkgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0KIAotICAgLi4gaW1wbC1kZXRhaWw6OgorLi4gaW5kZXg6OiBvYmplY3Q6IGJ5dGVhcnJheQogCi0gICAgICBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLCB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuCi0gICAgICBpbnNwZWN0LCB0aGUgbGlzdCBpcyB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlCi0gICAgICBsaXN0IGFwcGVhciBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIDpleGM6YFZhbHVlRXJyb3JgIGlmIGl0IGNhbgotICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LgorOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMgYXJlIGEgbXV0YWJsZSBjb3VudGVycGFydCB0byA6Y2xhc3M6YGJ5dGVzYAorb2JqZWN0cy4gVGhlcmUgaXMgbm8gZGVkaWNhdGVkIGxpdGVyYWwgc3ludGF4IGZvciBieXRlYXJyYXkgb2JqZWN0cywgaW5zdGVhZAordGhleSBhcmUgYWx3YXlzIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgY29uc3RydWN0b3I6CiAKLSg4KQotICAgOm1ldGg6YHNvcnRgIGlzIG5vdCBzdXBwb3J0ZWQgYnkgOmNsYXNzOmBieXRlYXJyYXlgIG9iamVjdHMuCisqIENyZWF0aW5nIGFuIGVtcHR5IGluc3RhbmNlOiBgYGJ5dGVhcnJheSgpYGAKKyogQ3JlYXRpbmcgYSB6ZXJvLWZpbGxlZCBpbnN0YW5jZSB3aXRoIGEgZ2l2ZW4gbGVuZ3RoOiBgYGJ5dGVhcnJheSgxMClgYAorKiBGcm9tIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzOiBgYGJ5dGVhcnJheShyYW5nZSgyMCkpYGAKKyogQ29weWluZyBleGlzdGluZyBiaW5hcnkgZGF0YSB2aWEgdGhlIGJ1ZmZlciBwcm90b2NvbDogIGBgYnl0ZWFycmF5KGInSGkhKWBgCisKK0FzIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBtdXRhYmxlLCB0aGV5IHN1cHBvcnQgdGhlCis6cmVmOmBtdXRhYmxlIDx0eXBlc3NlcS1tdXRhYmxlPmAgc2VxdWVuY2Ugb3BlcmF0aW9ucyBpbiBhZGRpdGlvbiB0byB0aGUKK2NvbW1vbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9wZXJhdGlvbnMgZGVzY3JpYmVkIGluIDpyZWY6YGJ5dGVzLW1ldGhvZHNgLgorCitBbHNvIHNlZSB0aGUgOnJlZjpgYnl0ZWFycmF5IDxmdW5jLWJ5dGVhcnJheT5gIGJ1aWx0LWluLgogCiAKIC4uIF9ieXRlcy1tZXRob2RzOgogCi1CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitCeXRlcyBhbmQgQnl0ZWFycmF5IE9wZXJhdGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBpbmRleDo6IHBhaXI6IGJ5dGVzOyBtZXRob2RzCiAgICAgICAgICAgIHBhaXI6IGJ5dGVhcnJheTsgbWV0aG9kcwogCi1CeXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMsIGJlaW5nICJzdHJpbmdzIG9mIGJ5dGVzIiwgaGF2ZSBhbGwgbWV0aG9kcyBmb3VuZCBvbgotc3RyaW5ncywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIDpmdW5jOmBlbmNvZGVgLCA6ZnVuYzpgZm9ybWF0YCBhbmQKLTpmdW5jOmBpc2lkZW50aWZpZXJgLCB3aGljaCBkbyBub3QgbWFrZSBzZW5zZSB3aXRoIHRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcKLXRoZSBvYmplY3RzIHRvIHN0cmluZ3MsIHRoZXkgaGF2ZSBhIDpmdW5jOmBkZWNvZGVgIG1ldGhvZC4KK0JvdGggYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIHN1cHBvcnQgdGhlIDpyZWY6YGNvbW1vbiA8dHlwZXNzZXEtY29tbW9uPmAKK3NlcXVlbmNlIG9wZXJhdGlvbnMuIFRoZXkgaW50ZXJvcGVyYXRlIG5vdCBqdXN0IHdpdGggb3BlcmFuZHMgb2YgdGhlIHNhbWUKK3R5cGUsIGJ1dCB3aXRoIGFueSBvYmplY3QgdGhhdCBzdXBwb3J0cyB0aGUKKzpyZWY6YGJ1ZmZlciBwcm90b2NvbCA8YnVmZmVyb2JqZWN0cz5gLiBEdWUgdG8gdGhpcyBmbGV4aWJpbGl0eSwgdGhleSBjYW4gYmUKK2ZyZWVseSBtaXhlZCBpbiBvcGVyYXRpb25zIHdpdGhvdXQgY2F1c2luZyBlcnJvcnMuIEhvd2V2ZXIsIHRoZSByZXR1cm4gdHlwZQorb2YgdGhlIHJlc3VsdCBtYXkgZGVwZW5kIG9uIHRoZSBvcmRlciBvZiBvcGVyYW5kcy4KIAotV2hlcmV2ZXIgb25lIG9mIHRoZXNlIG1ldGhvZHMgbmVlZHMgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcyBjaGFyYWN0ZXJzCi0oZS5nLiB0aGUgOmZ1bmM6YGlzLi4uYCBtZXRob2RzKSwgdGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZC4KK0R1ZSB0byB0aGUgY29tbW9uIHVzZSBvZiBBU0NJSSB0ZXh0IGFzIHRoZSBiYXNpcyBmb3IgYmluYXJ5IHByb3RvY29scywgYnl0ZXMKK2FuZCBieXRlYXJyYXkgb2JqZWN0cyBwcm92aWRlIGFsbW9zdCBhbGwgbWV0aG9kcyBmb3VuZCBvbiB0ZXh0IHN0cmluZ3MsIHdpdGgKK3RoZSBleGNlcHRpb25zIG9mOgorCisqIDptZXRoOmBzdHIuZW5jb2RlYCAod2hpY2ggY29udmVydHMgdGV4dCBzdHJpbmdzIHRvIGJ5dGVzIG9iamVjdHMpCisqIDptZXRoOmBzdHIuZm9ybWF0YCBhbmQgOm1ldGg6YHN0ci5mb3JtYXRfbWFwYCAod2hpY2ggYXJlIHVzZWQgdG8gZm9ybWF0CisgIHRleHQgZm9yIGRpc3BsYXkgdG8gdXNlcnMpCisqIDptZXRoOmBzdHIuaXNpZGVudGlmaWVyYCwgOm1ldGg6YHN0ci5pc251bWVyaWNgLCA6bWV0aDpgc3RyLmlzZGVjaW1hbGAsCisgIDptZXRoOmBzdHIuaXNwcmludGFibGVgICh3aGljaCBhcmUgdXNlZCB0byBjaGVjayB2YXJpb3VzIHByb3BlcnRpZXMgb2YKKyAgdGV4dCBzdHJpbmdzIHdoaWNoIGFyZSBub3QgdHlwaWNhbGx5IGFwcGxpY2FibGUgdG8gYmluYXJ5IHByb3RvY29scykuCisKK0FsbCBvdGhlciBzdHJpbmcgbWV0aG9kcyBhcmUgc3VwcG9ydGVkLCBhbHRob3VnaCBzb21ldGltZXMgd2l0aCBzbGlnaHQKK2RpZmZlcmVuY2VzIGluIGZ1bmN0aW9uYWxpdHkgYW5kIHNlbWFudGljcyAoYXMgZGVzY3JpYmVkIGJlbG93KS4KIAogLi4gbm90ZTo6CiAKICAgIFRoZSBtZXRob2RzIG9uIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBkb24ndCBhY2NlcHQgc3RyaW5ncyBhcyB0aGVpcgogICAgYXJndW1lbnRzLCBqdXN0IGFzIHRoZSBtZXRob2RzIG9uIHN0cmluZ3MgZG9uJ3QgYWNjZXB0IGJ5dGVzIGFzIHRoZWlyCi0gICBhcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgeW91IGhhdmUgdG8gd3JpdGUgOjoKKyAgIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZTo6CiAKICAgICAgIGEgPSAiYWJjIgogICAgICAgYiA9IGEucmVwbGFjZSgiYSIsICJmIikKIAotICAgYW5kIDo6CisgICBhbmQ6OgogCiAgICAgICBhID0gYiJhYmMiCiAgICAgICBiID0gYS5yZXBsYWNlKGIiYSIsIGIiZiIpCiAKK1doZW5ldmVyIGEgYnl0ZXMgb3IgYnl0ZWFycmF5IG1ldGhvZCBuZWVkcyB0byBpbnRlcnByZXQgdGhlIGJ5dGVzIGFzCitjaGFyYWN0ZXJzIChlLmcuIHRoZSA6bWV0aDpgaXMuLi5gIG1ldGhvZHMsIDptZXRoOmBzcGxpdGAsIDptZXRoOmBzdHJpcGApLAordGhlIEFTQ0lJIGNoYXJhY3RlciBzZXQgaXMgYXNzdW1lZCAodGV4dCBzdHJpbmdzIHVzZSBVbmljb2RlIHNlbWFudGljcykuCisKKy4uIG5vdGU6OgorICAgVXNpbmcgdGhlc2UgQVNDSUkgYmFzZWQgbWV0aG9kcyB0byBtYW5pcHVsYXRlIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90CisgICBzdG9yZWQgaW4gYW4gQVNDSUkgYmFzZWQgZm9ybWF0IG1heSBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbi4KKworVGhlIHNlYXJjaCBvcGVyYXRpb25zICg6a2V5d29yZDpgaW5gLCA6bWV0aDpgY291bnRgLCA6bWV0aDpgZmluZGAsCis6bWV0aDpgaW5kZXhgLCA6bWV0aDpgcmZpbmRgIGFuZCA6bWV0aDpgcmluZGV4YCkgYWxsIGFjY2VwdCBib3RoIGludGVnZXJzCitpbiB0aGUgcmFuZ2UgMCB0byAyNTUgKGluY2x1c2l2ZSkgYXMgd2VsbCBhcyBieXRlcyBhbmQgYnl0ZSBhcnJheSBzZXF1ZW5jZXMuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBbGwgb2YgdGhlIHNlYXJjaCBtZXRob2RzIGFsc28gYWNjZXB0IGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAgdG8gMjU1CisgICAoaW5jbHVzaXZlKSBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworCitFYWNoIGJ5dGVzIGFuZCBieXRlYXJyYXkgaW5zdGFuY2UgcHJvdmlkZXMgYSA6bWV0aDpgZGVjb2RlYCBjb252ZW5pZW5jZQorbWV0aG9kIHRoYXQgaXMgdGhlIGludmVyc2Ugb2YgOm1ldGg6YHN0ci5lbmNvZGVgOgogCiAuLiBtZXRob2Q6OiBieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKQogICAgICAgICAgICAgYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpCkBAIC0xODQxLDggKzIyNTAsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cy4KIAotCi1UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOgorU2luY2UgMiBoZXhhZGVjaW1hbCBkaWdpdHMgY29ycmVzcG9uZCBwcmVjaXNlbHkgdG8gYSBzaW5nbGUgYnl0ZSwgaGV4YWRlY2ltYWwKK251bWJlcnMgYXJlIGEgY29tbW9ubHkgdXNlZCBmb3JtYXQgZm9yIGRlc2NyaWJpbmcgYmluYXJ5IGRhdGEuIEFjY29yZGluZ2x5LAordGhlIGJ5dGVzIGFuZCBieXRlYXJyYXkgdHlwZXMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNsYXNzIG1ldGhvZCB0byByZWFkIGRhdGEgaW4KK3RoYXQgZm9ybWF0OgogCiAuLiBjbGFzc21ldGhvZDo6IGJ5dGVzLmZyb21oZXgoc3RyaW5nKQogICAgICAgICAgICAgICAgICBieXRlYXJyYXkuZnJvbWhleChzdHJpbmcpCkBAIC0xODUxLDggKzIyNjIsOCBAQAogICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d28gaGV4YWRlY2ltYWwKICAgIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLgogCi0gICA+Pj4gYnl0ZXMuZnJvbWhleCgnZjAgZjFmMiAgJykKLSAgIGInXHhmMFx4ZjFceGYyJworICAgPj4+IGJ5dGVzLmZyb21oZXgoJzJFZjAgRjFmMiAgJykKKyAgIGInLlx4ZjBceGYxXHhmMicKIAogCiBUaGUgbWFrZXRyYW5zIGFuZCB0cmFuc2xhdGUgbWV0aG9kcyBkaWZmZXIgaW4gc2VtYW50aWNzIGZyb20gdGhlIHZlcnNpb25zCkBAIC0xODg2LDYgKzIyOTcsNDM0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKIAogCisuLiBfdHlwZW1lbW9yeXZpZXc6CisKK01lbW9yeSBWaWV3cworLS0tLS0tLS0tLS0tCisKKzpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cyBhbGxvdyBQeXRob24gY29kZSB0byBhY2Nlc3MgdGhlIGludGVybmFsIGRhdGEKK29mIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB3aXRob3V0Citjb3B5aW5nLgorCisuLiBjbGFzczo6IG1lbW9yeXZpZXcob2JqKQorCisgICBDcmVhdGUgYSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHRoYXQgcmVmZXJlbmNlcyAqb2JqKi4gICpvYmoqIG11c3Qgc3VwcG9ydCB0aGUKKyAgIGJ1ZmZlciBwcm90b2NvbC4gIEJ1aWx0LWluIG9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wgaW5jbHVkZQorICAgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YC4KKworICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIGhhcyB0aGUgbm90aW9uIG9mIGFuICplbGVtZW50Kiwgd2hpY2ggaXMgdGhlCisgICBhdG9taWMgbWVtb3J5IHVuaXQgaGFuZGxlZCBieSB0aGUgb3JpZ2luYXRpbmcgb2JqZWN0ICpvYmoqLiAgRm9yIG1hbnkKKyAgIHNpbXBsZSB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYnl0ZXNgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAsIGFuIGVsZW1lbnQKKyAgIGlzIGEgc2luZ2xlIGJ5dGUsIGJ1dCBvdGhlciB0eXBlcyBzdWNoIGFzIDpjbGFzczpgYXJyYXkuYXJyYXlgIG1heSBoYXZlCisgICBiaWdnZXIgZWxlbWVudHMuCisKKyAgIGBgbGVuKHZpZXcpYGAgaXMgZXF1YWwgdG8gdGhlIGxlbmd0aCBvZiA6Y2xhc3M6YH5tZW1vcnl2aWV3LnRvbGlzdGAuCisgICBJZiBgYHZpZXcubmRpbSA9IDBgYCwgdGhlIGxlbmd0aCBpcyAxLiBJZiBgYHZpZXcubmRpbSA9IDFgYCwgdGhlIGxlbmd0aAorICAgaXMgZXF1YWwgdG8gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdmlldy4gRm9yIGhpZ2hlciBkaW1lbnNpb25zLAorICAgdGhlIGxlbmd0aCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZgorICAgdGhlIHZpZXcuIFRoZSA6Y2xhc3M6YH5tZW1vcnl2aWV3Lml0ZW1zaXplYCBhdHRyaWJ1dGUgd2lsbCBnaXZlIHlvdSB0aGUKKyAgIG51bWJlciBvZiBieXRlcyBpbiBhIHNpbmdsZSBlbGVtZW50LgorCisgICBBIDpjbGFzczpgbWVtb3J5dmlld2Agc3VwcG9ydHMgc2xpY2luZyB0byBleHBvc2UgaXRzIGRhdGEuIElmCisgICA6Y2xhc3M6YH5tZW1vcnl2aWV3LmZvcm1hdGAgaXMgb25lIG9mIHRoZSBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMKKyAgIGZyb20gdGhlIDptb2Q6YHN0cnVjdGAgbW9kdWxlLCBpbmRleGluZyB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50CisgICB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuIEZ1bGwgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgorCisgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICA+Pj4gdlsxXQorICAgIDk4CisgICAgPj4+IHZbLTFdCisgICAgMTAzCisgICAgPj4+IHZbMTo0XQorICAgIDxtZW1vcnkgYXQgMHg3ZjNkZGM5ZjQzNTA+CisgICAgPj4+IGJ5dGVzKHZbMTo0XSkKKyAgICBiJ2JjZScKKworICAgT3RoZXIgbmF0aXZlIGZvcm1hdHM6OgorCisgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWy0xMTExMTExMSwgMjIyMjIyMjIsIC0zMzMzMzMzMywgNDQ0NDQ0NDRdKQorICAgICAgPj4+IGFbMF0KKyAgICAgIC0xMTExMTExMQorICAgICAgPj4+IGFbLTFdCisgICAgICA0NDQ0NDQ0NAorICAgICAgPj4+IGFbMjozXS50b2xpc3QoKQorICAgICAgWy0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6Ml0udG9saXN0KCkKKyAgICAgIFstMTExMTExMTEsIC0zMzMzMzMzM10KKyAgICAgID4+PiBhWzo6LTFdLnRvbGlzdCgpCisgICAgICBbNDQ0NDQ0NDQsIC0zMzMzMzMzMywgMjIyMjIyMjIsIC0xMTExMTExMV0KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIElmIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB3cml0YWJsZSwgdGhlIG1lbW9yeXZpZXcgc3VwcG9ydHMgc2xpY2UKKyAgIGFzc2lnbm1lbnQuIFJlc2l6aW5nIGlzIG5vdCBhbGxvd2VkOjoKKworICAgICAgPj4+IGRhdGEgPSBieXRlYXJyYXkoYidhYmNlZmcnKQorICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGRhdGEpCisgICAgICA+Pj4gdi5yZWFkb25seQorICAgICAgRmFsc2UKKyAgICAgID4+PiB2WzBdID0gb3JkKGIneicpCisgICAgICA+Pj4gZGF0YQorICAgICAgYnl0ZWFycmF5KGInemJjZWZnJykKKyAgICAgID4+PiB2WzE6NF0gPSBiJzEyMycKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MTIzZmcnKQorICAgICAgPj4+IHZbMjozXSA9IGInc3BhbScKKyAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KKyAgICAgIFZhbHVlRXJyb3I6IG1lbW9yeXZpZXcgYXNzaWdubWVudDogbHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcworICAgICAgPj4+IHZbMjo2XSA9IGInc3BhbScKKyAgICAgID4+PiBkYXRhCisgICAgICBieXRlYXJyYXkoYid6MXNwYW0nKQorCisgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgb2YgaGFzaGFibGUgKHJlYWQtb25seSkgdHlwZXMgd2l0aCBmb3JtYXRzCisgICAnQicsICdiJyBvciAnYycgYXJlIGFsc28gaGFzaGFibGUuIFRoZSBoYXNoIGlzIGRlZmluZWQgYXMKKyAgIGBgaGFzaChtKSA9PSBoYXNoKG0udG9ieXRlcygpKWBgOjoKKworICAgICAgPj4+IHYgPSBtZW1vcnl2aWV3KGInYWJjZWZnJykKKyAgICAgID4+PiBoYXNoKHYpID09IGhhc2goYidhYmNlZmcnKQorICAgICAgVHJ1ZQorICAgICAgPj4+IGhhc2godlsyOjRdKSA9PSBoYXNoKGInY2UnKQorICAgICAgVHJ1ZQorICAgICAgPj4+IGhhc2godls6Oi0yXSkgPT0gaGFzaChiJ2FiY2VmZydbOjotMl0pCisgICAgICBUcnVlCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBPbmUtZGltZW5zaW9uYWwgbWVtb3J5dmlld3Mgd2l0aCBmb3JtYXRzICdCJywgJ2InIG9yICdjJyBhcmUgbm93IGhhc2hhYmxlLgorCisgICAuLiBub3RlOjoKKyAgICAgIEhhc2hpbmcgb2YgbWVtb3J5dmlld3Mgd2l0aCBmb3JtYXRzIG90aGVyIHRoYW4gJ0InLCAnYicgb3IgJ2MnIGFzIHdlbGwKKyAgICAgIGFzIGhhc2hpbmcgb2YgbXVsdGktZGltZW5zaW9uYWwgbWVtb3J5dmlld3MgaXMgcG9zc2libGUgaW4gdmVyc2lvbiAzLjMuMCwKKyAgICAgIGJ1dCB3aWxsIHJhaXNlIGFuIGVycm9yIGluIDMuMy4xIGluIG9yZGVyIHRvIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgbmV3CisgICAgICBtZW1vcnl2aWV3IGVxdWFsaXR5IGRlZmluaXRpb24uCisKKyAgIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHNldmVyYWwgbWV0aG9kczoKKworICAgLi4gbWV0aG9kOjogX19lcV9fKGV4cG9ydGVyKQorCisgICAgICBBIG1lbW9yeXZpZXcgYW5kIGEgOnBlcDpgMzExOGAgZXhwb3J0ZXIgYXJlIGVxdWFsIGlmIHRoZWlyIHNoYXBlcyBhcmUKKyAgICAgIGVxdWl2YWxlbnQgYW5kIGlmIGFsbCBjb3JyZXNwb25kaW5nIHZhbHVlcyBhcmUgZXF1YWwgd2hlbiB0aGUgb3BlcmFuZHMnCisgICAgICByZXNwZWN0aXZlIGZvcm1hdCBjb2RlcyBhcmUgaW50ZXJwcmV0ZWQgdXNpbmcgOm1vZDpgc3RydWN0YCBzeW50YXguCisKKyAgICAgIEZvciB0aGUgc3Vic2V0IG9mIDptb2Q6YHN0cnVjdGAgZm9ybWF0IHN0cmluZ3MgY3VycmVudGx5IHN1cHBvcnRlZCBieQorICAgICAgOm1ldGg6YHRvbGlzdGAsIGBgdmBgIGFuZCBgYHdgYCBhcmUgZXF1YWwgaWYgYGB2LnRvbGlzdCgpID09IHcudG9saXN0KClgYDo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXkKKyAgICAgICAgID4+PiBhID0gYXJyYXkuYXJyYXkoJ0knLCBbMSwgMiwgMywgNCwgNV0pCisgICAgICAgICA+Pj4gYiA9IGFycmF5LmFycmF5KCdkJywgWzEuMCwgMi4wLCAzLjAsIDQuMCwgNS4wXSkKKyAgICAgICAgID4+PiBjID0gYXJyYXkuYXJyYXkoJ2InLCBbNSwgMywgMV0pCisgICAgICAgICA+Pj4geCA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiB5ID0gbWVtb3J5dmlldyhiKQorICAgICAgICAgPj4+IHggPT0gYSA9PSB5ID09IGIKKyAgICAgICAgIFRydWUKKyAgICAgICAgID4+PiB4LnRvbGlzdCgpID09IGEudG9saXN0KCkgPT0geS50b2xpc3QoKSA9PSBiLnRvbGlzdCgpCisgICAgICAgICBUcnVlCisgICAgICAgICA+Pj4geiA9IHlbOjotMl0KKyAgICAgICAgID4+PiB6ID09IGMKKyAgICAgICAgIFRydWUKKyAgICAgICAgID4+PiB6LnRvbGlzdCgpID09IGMudG9saXN0KCkKKyAgICAgICAgIFRydWUKKworICAgICAgSWYgZWl0aGVyIGZvcm1hdCBzdHJpbmcgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgOm1vZDpgc3RydWN0YCBtb2R1bGUsCisgICAgICB0aGVuIHRoZSBvYmplY3RzIHdpbGwgYWx3YXlzIGNvbXBhcmUgYXMgdW5lcXVhbCAoZXZlbiBpZiB0aGUgZm9ybWF0CisgICAgICBzdHJpbmdzIGFuZCBidWZmZXIgY29udGVudHMgYXJlIGlkZW50aWNhbCk6OgorCisgICAgICAgICA+Pj4gZnJvbSBjdHlwZXMgaW1wb3J0IEJpZ0VuZGlhblN0cnVjdHVyZSwgY19sb25nCisgICAgICAgICA+Pj4gY2xhc3MgQkVQb2ludChCaWdFbmRpYW5TdHJ1Y3R1cmUpOgorICAgICAgICAgLi4uICAgICBfZmllbGRzXyA9IFsoIngiLCBjX2xvbmcpLCAoInkiLCBjX2xvbmcpXQorICAgICAgICAgLi4uCisgICAgICAgICA+Pj4gcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgPj4+IGEgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgPj4+IGIgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgPj4+IGEgPT0gcG9pbnQKKyAgICAgICAgIEZhbHNlCisgICAgICAgICA+Pj4gYSA9PSBiCisgICAgICAgICBGYWxzZQorCisgICAgICBOb3RlIHRoYXQsIGFzIHdpdGggZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgYGB2IGlzIHdgYCBkb2VzICpub3QqIGltcGx5CisgICAgICBgYHYgPT0gd2BgIGZvciBtZW1vcnl2aWV3IG9iamVjdHMuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBQcmV2aW91cyB2ZXJzaW9ucyBjb21wYXJlZCB0aGUgcmF3IG1lbW9yeSBkaXNyZWdhcmRpbmcgdGhlIGl0ZW0gZm9ybWF0CisgICAgICAgICBhbmQgdGhlIGxvZ2ljYWwgYXJyYXkgc3RydWN0dXJlLgorCisgICAuLiBtZXRob2Q6OiB0b2J5dGVzKCkKKworICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBieXRlc3RyaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICAgICBjYWxsaW5nIHRoZSA6Y2xhc3M6YGJ5dGVzYCBjb25zdHJ1Y3RvciBvbiB0aGUgbWVtb3J5dmlldy4gOjoKKworICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIiYWJjIikKKyAgICAgICAgID4+PiBtLnRvYnl0ZXMoKQorICAgICAgICAgYidhYmMnCisgICAgICAgICA+Pj4gYnl0ZXMobSkKKyAgICAgICAgIGInYWJjJworCisgICAgICBGb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gdGhlIGZsYXR0ZW5lZCBsaXN0CisgICAgICByZXByZXNlbnRhdGlvbiB3aXRoIGFsbCBlbGVtZW50cyBjb252ZXJ0ZWQgdG8gYnl0ZXMuIDptZXRoOmB0b2J5dGVzYAorICAgICAgc3VwcG9ydHMgYWxsIGZvcm1hdCBzdHJpbmdzLCBpbmNsdWRpbmcgdGhvc2UgdGhhdCBhcmUgbm90IGluCisgICAgICA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzeW50YXguCisKKyAgIC4uIG1ldGhvZDo6IHRvbGlzdCgpCisKKyAgICAgIFJldHVybiB0aGUgZGF0YSBpbiB0aGUgYnVmZmVyIGFzIGEgbGlzdCBvZiBlbGVtZW50cy4gOjoKKworICAgICAgICAgPj4+IG1lbW9yeXZpZXcoYidhYmMnKS50b2xpc3QoKQorICAgICAgICAgWzk3LCA5OCwgOTldCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdkJywgWzEuMSwgMi4yLCAzLjNdKQorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgICA+Pj4gbS50b2xpc3QoKQorICAgICAgICAgWzEuMSwgMi4yLCAzLjNdCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICA6bWV0aDpgdG9saXN0YCBub3cgc3VwcG9ydHMgYWxsIHNpbmdsZSBjaGFyYWN0ZXIgbmF0aXZlIGZvcm1hdHMgaW4KKyAgICAgICAgIDptb2Q6YHN0cnVjdGAgbW9kdWxlIHN5bnRheCBhcyB3ZWxsIGFzIG11bHRpLWRpbWVuc2lvbmFsCisgICAgICAgICByZXByZXNlbnRhdGlvbnMuCisKKyAgIC4uIG1ldGhvZDo6IHJlbGVhc2UoKQorCisgICAgICBSZWxlYXNlIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBleHBvc2VkIGJ5IHRoZSBtZW1vcnl2aWV3IG9iamVjdC4gIE1hbnkKKyAgICAgIG9iamVjdHMgdGFrZSBzcGVjaWFsIGFjdGlvbnMgd2hlbiBhIHZpZXcgaXMgaGVsZCBvbiB0aGVtIChmb3IgZXhhbXBsZSwKKyAgICAgIGEgOmNsYXNzOmBieXRlYXJyYXlgIHdvdWxkIHRlbXBvcmFyaWx5IGZvcmJpZCByZXNpemluZyk7IHRoZXJlZm9yZSwKKyAgICAgIGNhbGxpbmcgcmVsZWFzZSgpIGlzIGhhbmR5IHRvIHJlbW92ZSB0aGVzZSByZXN0cmljdGlvbnMgKGFuZCBmcmVlIGFueQorICAgICAgZGFuZ2xpbmcgcmVzb3VyY2VzKSBhcyBzb29uIGFzIHBvc3NpYmxlLgorCisgICAgICBBZnRlciB0aGlzIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQsIGFueSBmdXJ0aGVyIG9wZXJhdGlvbiBvbiB0aGUgdmlldworICAgICAgcmFpc2VzIGEgOmNsYXNzOmBWYWx1ZUVycm9yYCAoZXhjZXB0IDptZXRoOmByZWxlYXNlKClgIGl0c2VsZiB3aGljaCBjYW4KKyAgICAgIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyk6OgorCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYidhYmMnKQorICAgICAgICAgPj4+IG0ucmVsZWFzZSgpCisgICAgICAgICA+Pj4gbVswXQorICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgVmFsdWVFcnJvcjogb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdAorCisgICAgICBUaGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIGNhbiBiZSB1c2VkIGZvciBhIHNpbWlsYXIgZWZmZWN0LAorICAgICAgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudDo6CisKKyAgICAgICAgID4+PiB3aXRoIG1lbW9yeXZpZXcoYidhYmMnKSBhcyBtOgorICAgICAgICAgLi4uICAgICBtWzBdCisgICAgICAgICAuLi4KKyAgICAgICAgIDk3CisgICAgICAgICA+Pj4gbVswXQorICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgICAgVmFsdWVFcnJvcjogb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdAorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKworICAgLi4gbWV0aG9kOjogY2FzdChmb3JtYXRbLCBzaGFwZV0pCisKKyAgICAgIENhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4gKnNoYXBlKiBkZWZhdWx0cyB0bworICAgICAgYGBbYnl0ZV9sZW5ndGgvL25ld19pdGVtc2l6ZV1gYCwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgcmVzdWx0IHZpZXcKKyAgICAgIHdpbGwgYmUgb25lLWRpbWVuc2lvbmFsLiBUaGUgcmV0dXJuIHZhbHVlIGlzIGEgbmV3IG1lbW9yeXZpZXcsIGJ1dAorICAgICAgdGhlIGJ1ZmZlciBpdHNlbGYgaXMgbm90IGNvcGllZC4gU3VwcG9ydGVkIGNhc3RzIGFyZSAxRCAtPiBDLWNvbnRpZ3VvdXMKKyAgICAgIGFuZCBDLWNvbnRpZ3VvdXMgLT4gMUQuCisKKyAgICAgIEJvdGggZm9ybWF0cyBhcmUgcmVzdHJpY3RlZCB0byBzaW5nbGUgZWxlbWVudCBuYXRpdmUgZm9ybWF0cyBpbgorICAgICAgOm1vZDpgc3RydWN0YCBzeW50YXguIE9uZSBvZiB0aGUgZm9ybWF0cyBtdXN0IGJlIGEgYnl0ZSBmb3JtYXQKKyAgICAgICgnQicsICdiJyBvciAnYycpLiBUaGUgYnl0ZSBsZW5ndGggb2YgdGhlIHJlc3VsdCBtdXN0IGJlIHRoZSBzYW1lCisgICAgICBhcyB0aGUgb3JpZ2luYWwgbGVuZ3RoLgorCisgICAgICBDYXN0IDFEL2xvbmcgdG8gMUQvdW5zaWduZWQgYnl0ZXM6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdsJywgWzEsMiwzXSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhhKQorICAgICAgICAgPj4+IHguZm9ybWF0CisgICAgICAgICAnbCcKKyAgICAgICAgID4+PiB4Lml0ZW1zaXplCisgICAgICAgICA4CisgICAgICAgICA+Pj4gbGVuKHgpCisgICAgICAgICAzCisgICAgICAgICA+Pj4geC5uYnl0ZXMKKyAgICAgICAgIDI0CisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnQicpCisgICAgICAgICA+Pj4geS5mb3JtYXQKKyAgICAgICAgICdCJworICAgICAgICAgPj4+IHkuaXRlbXNpemUKKyAgICAgICAgIDEKKyAgICAgICAgID4+PiBsZW4oeSkKKyAgICAgICAgIDI0CisgICAgICAgICA+Pj4geS5uYnl0ZXMKKyAgICAgICAgIDI0CisKKyAgICAgIENhc3QgMUQvdW5zaWduZWQgYnl0ZXMgdG8gMUQvY2hhcjo6CisKKyAgICAgICAgID4+PiBiID0gYnl0ZWFycmF5KGInenl6JykKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhiKQorICAgICAgICAgPj4+IHhbMF0gPSBiJ2EnCisgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CisgICAgICAgICBWYWx1ZUVycm9yOiBtZW1vcnl2aWV3OiBpbnZhbGlkIHZhbHVlIGZvciBmb3JtYXQgIkIiCisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnYycpCisgICAgICAgICA+Pj4geVswXSA9IGInYScKKyAgICAgICAgID4+PiBiCisgICAgICAgICBieXRlYXJyYXkoYidheXonKQorCisgICAgICBDYXN0IDFEL2J5dGVzIHRvIDNEL2ludHMgdG8gMUQvc2lnbmVkIGNoYXI6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IHN0cnVjdAorICAgICAgICAgPj4+IGJ1ZiA9IHN0cnVjdC5wYWNrKCJpIioxMiwgKmxpc3QocmFuZ2UoMTIpKSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhidWYpCisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnaScsIHNoYXBlPVsyLDIsM10pCisgICAgICAgICA+Pj4geS50b2xpc3QoKQorICAgICAgICAgW1tbMCwgMSwgMl0sIFszLCA0LCA1XV0sIFtbNiwgNywgOF0sIFs5LCAxMCwgMTFdXV0KKyAgICAgICAgID4+PiB5LmZvcm1hdAorICAgICAgICAgJ2knCisgICAgICAgICA+Pj4geS5pdGVtc2l6ZQorICAgICAgICAgNAorICAgICAgICAgPj4+IGxlbih5KQorICAgICAgICAgMgorICAgICAgICAgPj4+IHkubmJ5dGVzCisgICAgICAgICA0OAorICAgICAgICAgPj4+IHogPSB5LmNhc3QoJ2InKQorICAgICAgICAgPj4+IHouZm9ybWF0CisgICAgICAgICAnYicKKyAgICAgICAgID4+PiB6Lml0ZW1zaXplCisgICAgICAgICAxCisgICAgICAgICA+Pj4gbGVuKHopCisgICAgICAgICA0OAorICAgICAgICAgPj4+IHoubmJ5dGVzCisgICAgICAgICA0OAorCisgICAgICBDYXN0IDFEL3Vuc2lnbmVkIGNoYXIgdG8gdG8gMkQvdW5zaWduZWQgbG9uZzo6CisKKyAgICAgICAgID4+PiBidWYgPSBzdHJ1Y3QucGFjaygiTCIqNiwgKmxpc3QocmFuZ2UoNikpKQorICAgICAgICAgPj4+IHggPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgID4+PiB5ID0geC5jYXN0KCdMJywgc2hhcGU9WzIsM10pCisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAyCisgICAgICAgICA+Pj4geS5uYnl0ZXMKKyAgICAgICAgIDQ4CisgICAgICAgICA+Pj4geS50b2xpc3QoKQorICAgICAgICAgW1swLCAxLCAyXSwgWzMsIDQsIDVdXQorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgVGhlcmUgYXJlIGFsc28gc2V2ZXJhbCByZWFkb25seSBhdHRyaWJ1dGVzIGF2YWlsYWJsZToKKworICAgLi4gYXR0cmlidXRlOjogb2JqCisKKyAgICAgIFRoZSB1bmRlcmx5aW5nIG9iamVjdCBvZiB0aGUgbWVtb3J5dmlldzo6CisKKyAgICAgICAgID4+PiBiICA9IGJ5dGVhcnJheShiJ3h5eicpCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgID4+PiBtLm9iaiBpcyBiCisgICAgICAgICBUcnVlCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBuYnl0ZXMKKworICAgICAgYGBuYnl0ZXMgPT0gcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9PSBsZW4obS50b2J5dGVzKCkpYGAuIFRoaXMgaXMKKyAgICAgIHRoZSBhbW91bnQgb2Ygc3BhY2UgaW4gYnl0ZXMgdGhhdCB0aGUgYXJyYXkgd291bGQgdXNlIGluIGEgY29udGlndW91cworICAgICAgcmVwcmVzZW50YXRpb24uIEl0IGlzIG5vdCBuZWNlc3NhcmlseSBlcXVhbCB0byBsZW4obSk6OgorCisgICAgICAgICA+Pj4gaW1wb3J0IGFycmF5CisgICAgICAgICA+Pj4gYSA9IGFycmF5LmFycmF5KCdpJywgWzEsMiwzLDQsNV0pCisgICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgID4+PiBsZW4obSkKKyAgICAgICAgIDUKKyAgICAgICAgID4+PiBtLm5ieXRlcworICAgICAgICAgMjAKKyAgICAgICAgID4+PiB5ID0gbVs6OjJdCisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAzCisgICAgICAgICA+Pj4geS5uYnl0ZXMKKyAgICAgICAgIDEyCisgICAgICAgICA+Pj4gbGVuKHkudG9ieXRlcygpKQorICAgICAgICAgMTIKKworICAgICAgTXVsdGktZGltZW5zaW9uYWwgYXJyYXlzOjoKKworICAgICAgICAgPj4+IGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgID4+PiBidWYgPSBzdHJ1Y3QucGFjaygiZCIqMTIsICpbMS41KnggZm9yIHggaW4gcmFuZ2UoMTIpXSkKKyAgICAgICAgID4+PiB4ID0gbWVtb3J5dmlldyhidWYpCisgICAgICAgICA+Pj4geSA9IHguY2FzdCgnZCcsIHNoYXBlPVszLDRdKQorICAgICAgICAgPj4+IHkudG9saXN0KCkKKyAgICAgICAgIFtbMC4wLCAxLjUsIDMuMCwgNC41XSwgWzYuMCwgNy41LCA5LjAsIDEwLjVdLCBbMTIuMCwgMTMuNSwgMTUuMCwgMTYuNV1dCisgICAgICAgICA+Pj4gbGVuKHkpCisgICAgICAgICAzCisgICAgICAgICA+Pj4geS5uYnl0ZXMKKyAgICAgICAgIDk2CisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiByZWFkb25seQorCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LgorCisgICAuLiBhdHRyaWJ1dGU6OiBmb3JtYXQKKworICAgICAgQSBzdHJpbmcgY29udGFpbmluZyB0aGUgZm9ybWF0IChpbiA6bW9kOmBzdHJ1Y3RgIG1vZHVsZSBzdHlsZSkgZm9yIGVhY2gKKyAgICAgIGVsZW1lbnQgaW4gdGhlIHZpZXcuIEEgbWVtb3J5dmlldyBjYW4gYmUgY3JlYXRlZCBmcm9tIGV4cG9ydGVycyB3aXRoCisgICAgICBhcmJpdHJhcnkgZm9ybWF0IHN0cmluZ3MsIGJ1dCBzb21lIG1ldGhvZHMgKGUuZy4gOm1ldGg6YHRvbGlzdGApIGFyZQorICAgICAgcmVzdHJpY3RlZCB0byBuYXRpdmUgc2luZ2xlIGVsZW1lbnQgZm9ybWF0cy4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIGZvcm1hdCBgYCdCJ2BgIGlzIG5vdyBoYW5kbGVkIGFjY29yZGluZyB0byB0aGUgc3RydWN0IG1vZHVsZSBzeW50YXguCisgICAgICAgICBUaGlzIG1lYW5zIHRoYXQgYGBtZW1vcnl2aWV3KGInYWJjJylbMF0gPT0gYidhYmMnWzBdID09IDk3YGAuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGl0ZW1zaXplCisKKyAgICAgIFRoZSBzaXplIGluIGJ5dGVzIG9mIGVhY2ggZWxlbWVudCBvZiB0aGUgbWVtb3J5dmlldzo6CisKKyAgICAgICAgID4+PiBpbXBvcnQgYXJyYXksIHN0cnVjdAorICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGFycmF5LmFycmF5KCdIJywgWzMyMDAwLCAzMjAwMSwgMzIwMDJdKSkKKyAgICAgICAgID4+PiBtLml0ZW1zaXplCisgICAgICAgICAyCisgICAgICAgICA+Pj4gbVswXQorICAgICAgICAgMzIwMDAKKyAgICAgICAgID4+PiBzdHJ1Y3QuY2FsY3NpemUoJ0gnKSA9PSBtLml0ZW1zaXplCisgICAgICAgICBUcnVlCisKKyAgIC4uIGF0dHJpYnV0ZTo6IG5kaW0KKworICAgICAgQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSB0aGUKKyAgICAgIG1lbW9yeSByZXByZXNlbnRzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzaGFwZQorCisgICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2hhcGUgb2YgdGhlCisgICAgICBtZW1vcnkgYXMgYW4gTi1kaW1lbnNpb25hbCBhcnJheS4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFuIGVtcHR5IHR1cGxlIGluc3RlYWQgb2YgTm9uZSB3aGVuIG5kaW0gPSAwLgorCisgICAuLiBhdHRyaWJ1dGU6OiBzdHJpZGVzCisKKyAgICAgIEEgdHVwbGUgb2YgaW50ZWdlcnMgdGhlIGxlbmd0aCBvZiA6YXR0cjpgbmRpbWAgZ2l2aW5nIHRoZSBzaXplIGluIGJ5dGVzIHRvCisgICAgICBhY2Nlc3MgZWFjaCBlbGVtZW50IGZvciBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAgICBBbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbiBuZGltID0gMC4KKworICAgLi4gYXR0cmlidXRlOjogc3Vib2Zmc2V0cworCisgICAgICBVc2VkIGludGVybmFsbHkgZm9yIFBJTC1zdHlsZSBhcnJheXMuIFRoZSB2YWx1ZSBpcyBpbmZvcm1hdGlvbmFsIG9ubHkuCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNfY29udGlndW91cworCisgICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgQy1jb250aWd1b3VzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gYXR0cmlidXRlOjogZl9jb250aWd1b3VzCisKKyAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBGb3J0cmFuIGNvbnRpZ3VvdXMuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBhdHRyaWJ1dGU6OiBjb250aWd1b3VzCisKKyAgICAgIEEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBjb250aWd1b3VzLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBfdHlwZXMtc2V0OgogCiBTZXQgVHlwZXMgLS0tIDpjbGFzczpgc2V0YCwgOmNsYXNzOmBmcm96ZW5zZXRgCkBAIC0xODk3LDcgKzI3MzYsNyBAQAogQ29tbW9uIHVzZXMgaW5jbHVkZSBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmQKIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sIGRpZmZlcmVuY2UsIGFuZAogc3ltbWV0cmljIGRpZmZlcmVuY2UuCi0oRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdCBpbiA6Y2xhc3M6YGRpY3RgLCA6Y2xhc3M6YGxpc3RgLAorKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQtaW4gOmNsYXNzOmBkaWN0YCwgOmNsYXNzOmBsaXN0YCwKIGFuZCA6Y2xhc3M6YHR1cGxlYCBjbGFzc2VzLCBhbmQgdGhlIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUuKQogCiBMaWtlIG90aGVyIGNvbGxlY3Rpb25zLCBzZXRzIHN1cHBvcnQgYGB4IGluIHNldGBgLCBgYGxlbihzZXQpYGAsIGFuZCBgYGZvciB4IGluCkBAIC0yMDk3LDcgKzI5MzYsNyBAQAogCiBBIDpkZm46YG1hcHBpbmdgIG9iamVjdCBtYXBzIDp0ZXJtOmBoYXNoYWJsZWAgdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLgogTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZCBtYXBwaW5nCi10eXBlLCB0aGUgOmRmbjpgZGljdGlvbmFyeWAuICAoRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdCBpbgordHlwZSwgdGhlIDpkZm46YGRpY3Rpb25hcnlgLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQtaW4KIDpjbGFzczpgbGlzdGAsIDpjbGFzczpgc2V0YCwgYW5kIDpjbGFzczpgdHVwbGVgIGNsYXNzZXMsIGFuZCB0aGUKIDptb2Q6YGNvbGxlY3Rpb25zYCBtb2R1bGUuKQogCkBAIC0yMjI5LDEzICszMDY4LDEzIEBACiAKICAgIC4uIG1ldGhvZDo6IGl0ZW1zKCkKIAotICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBpdGVtcyAoYGAoa2V5LCB2YWx1ZSlgYCBwYWlycykuICBTZWUKLSAgICAgIGJlbG93IGZvciBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy4KKyAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5J3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGAgcGFpcnMpLgorICAgICAgU2VlIHRoZSA6cmVmOmBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyA8ZGljdC12aWV3cz5gLgogCiAgICAuLiBtZXRob2Q6OiBrZXlzKCkKIAotICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyBrZXlzLiAgU2VlIGJlbG93IGZvciBkb2N1bWVudGF0aW9uIG9mCi0gICAgICB2aWV3IG9iamVjdHMuCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgdGhlIDpyZWY6YGRvY3VtZW50YXRpb24KKyAgICAgIG9mIHZpZXcgb2JqZWN0cyA8ZGljdC12aWV3cz5gLgogCiAgICAuLiBtZXRob2Q6OiBwb3Aoa2V5WywgZGVmYXVsdF0pCiAKQEAgLTIyNjksOCArMzEwOCwxMiBAQAogCiAgICAuLiBtZXRob2Q6OiB2YWx1ZXMoKQogCi0gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIHZhbHVlcy4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZgotICAgICAgdmlldyBvYmplY3RzLgorICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgdGhlCisgICAgICA6cmVmOmBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyA8ZGljdC12aWV3cz5gLgorCisuLiBzZWVhbHNvOjoKKyAgIDpjbGFzczpgdHlwZXMuTWFwcGluZ1Byb3h5VHlwZWAgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVhZC1vbmx5IHZpZXcKKyAgIG9mIGEgOmNsYXNzOmBkaWN0YC4KIAogCiAuLiBfZGljdC12aWV3czoKQEAgLTIzMTYsNyArMzE1OSw3IEBACiB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0IGBgKGtleSwgdmFsdWUpYGAgcGFpcnMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUsCiB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZSBub3QgdHJlYXRlZCBhcyBzZXQtbGlrZQogc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLikgIEZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZQotb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyA6Y2xhc3M6YGNvbGxlY3Rpb25zLlNldGAgYXJlCitvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLlNldGAgYXJlCiBhdmFpbGFibGUgKGZvciBleGFtcGxlLCBgYD09YGAsIGBgPGBgLCBvciBgYF5gYCkuCiAKIEFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOjoKQEAgLTIzNTEsMTU5ICszMTk0LDYgQEAKICAgIHsnanVpY2UnLCAnc2F1c2FnZScsICdiYWNvbicsICdzcGFtJ30KIAogCi0uLiBfdHlwZW1lbW9yeXZpZXc6Ci0KLW1lbW9yeXZpZXcgdHlwZQotPT09PT09PT09PT09PT09Ci0KLTpjbGFzczpgbWVtb3J5dmlld2Agb2JqZWN0cyBhbGxvdyBQeXRob24gY29kZSB0byBhY2Nlc3MgdGhlIGludGVybmFsIGRhdGEKLW9mIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSA6cmVmOmBidWZmZXIgcHJvdG9jb2wgPGJ1ZmZlcm9iamVjdHM+YCB3aXRob3V0Ci1jb3B5aW5nLiAgTWVtb3J5IGlzIGdlbmVyYWxseSBpbnRlcnByZXRlZCBhcyBzaW1wbGUgYnl0ZXMuCi0KLS4uIGNsYXNzOjogbWVtb3J5dmlldyhvYmopCi0KLSAgIENyZWF0ZSBhIDpjbGFzczpgbWVtb3J5dmlld2AgdGhhdCByZWZlcmVuY2VzICpvYmoqLiAgKm9iaiogbXVzdCBzdXBwb3J0IHRoZQotICAgYnVmZmVyIHByb3RvY29sLiAgQnVpbHQtaW4gb2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIGJ1ZmZlciBwcm90b2NvbCBpbmNsdWRlCi0gICA6Y2xhc3M6YGJ5dGVzYCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgLgotCi0gICBBIDpjbGFzczpgbWVtb3J5dmlld2AgaGFzIHRoZSBub3Rpb24gb2YgYW4gKmVsZW1lbnQqLCB3aGljaCBpcyB0aGUKLSAgIGF0b21pYyBtZW1vcnkgdW5pdCBoYW5kbGVkIGJ5IHRoZSBvcmlnaW5hdGluZyBvYmplY3QgKm9iaiouICBGb3IgbWFueQotICAgc2ltcGxlIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCwgYW4gZWxlbWVudAotICAgaXMgYSBzaW5nbGUgYnl0ZSwgYnV0IG90aGVyIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBhcnJheS5hcnJheWAgbWF5IGhhdmUKLSAgIGJpZ2dlciBlbGVtZW50cy4KLQotICAgYGBsZW4odmlldylgYCByZXR1cm5zIHRoZSB0b3RhbCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIG1lbW9yeXZpZXcsCi0gICAqdmlldyouICBUaGUgOmNsYXNzOmB+bWVtb3J5dmlldy5pdGVtc2l6ZWAgYXR0cmlidXRlIHdpbGwgZ2l2ZSB5b3UgdGhlCi0gICBudW1iZXIgb2YgYnl0ZXMgaW4gYSBzaW5nbGUgZWxlbWVudC4KLQotICAgQSA6Y2xhc3M6YG1lbW9yeXZpZXdgIHN1cHBvcnRzIHNsaWNpbmcgdG8gZXhwb3NlIGl0cyBkYXRhLiAgVGFraW5nIGEgc2luZ2xlCi0gICBpbmRleCB3aWxsIHJldHVybiBhIHNpbmdsZSBlbGVtZW50IGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LiAgRnVsbAotICAgc2xpY2luZyB3aWxsIHJlc3VsdCBpbiBhIHN1YnZpZXc6OgotCi0gICAgICA+Pj4gdiA9IG1lbW9yeXZpZXcoYidhYmNlZmcnKQotICAgICAgPj4+IHZbMV0KLSAgICAgIGInYicKLSAgICAgID4+PiB2Wy0xXQotICAgICAgYidnJwotICAgICAgPj4+IHZbMTo0XQotICAgICAgPG1lbW9yeSBhdCAweDc3YWIyOD4KLSAgICAgID4+PiBieXRlcyh2WzE6NF0pCi0gICAgICBiJ2JjZScKLQotICAgSWYgdGhlIG9iamVjdCB0aGUgbWVtb3J5dmlldyBpcyBvdmVyIHN1cHBvcnRzIGNoYW5naW5nIGl0cyBkYXRhLCB0aGUKLSAgIG1lbW9yeXZpZXcgc3VwcG9ydHMgc2xpY2UgYXNzaWdubWVudDo6Ci0KLSAgICAgID4+PiBkYXRhID0gYnl0ZWFycmF5KGInYWJjZWZnJykKLSAgICAgID4+PiB2ID0gbWVtb3J5dmlldyhkYXRhKQotICAgICAgPj4+IHYucmVhZG9ubHkKLSAgICAgIEZhbHNlCi0gICAgICA+Pj4gdlswXSA9IGIneicKLSAgICAgID4+PiBkYXRhCi0gICAgICBieXRlYXJyYXkoYid6YmNlZmcnKQotICAgICAgPj4+IHZbMTo0XSA9IGInMTIzJwotICAgICAgPj4+IGRhdGEKLSAgICAgIGJ5dGVhcnJheShiJ3oxMjNmZycpCi0gICAgICA+Pj4gdlsyXSA9IGInc3BhbScKLSAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICAgIFZhbHVlRXJyb3I6IGNhbm5vdCBtb2RpZnkgc2l6ZSBvZiBtZW1vcnl2aWV3IG9iamVjdAotCi0gICBOb3RpY2UgaG93IHRoZSBzaXplIG9mIHRoZSBtZW1vcnl2aWV3IG9iamVjdCBjYW5ub3QgYmUgY2hhbmdlZC4KLQotICAgOmNsYXNzOmBtZW1vcnl2aWV3YCBoYXMgc2V2ZXJhbCBtZXRob2RzOgotCi0gICAuLiBtZXRob2Q6OiB0b2J5dGVzKCkKLQotICAgICAgUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBieXRlc3RyaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCi0gICAgICBjYWxsaW5nIHRoZSA6Y2xhc3M6YGJ5dGVzYCBjb25zdHJ1Y3RvciBvbiB0aGUgbWVtb3J5dmlldy4gOjoKLQotICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGIiYWJjIikKLSAgICAgICAgID4+PiBtLnRvYnl0ZXMoKQotICAgICAgICAgYidhYmMnCi0gICAgICAgICA+Pj4gYnl0ZXMobSkKLSAgICAgICAgIGInYWJjJwotCi0gICAuLiBtZXRob2Q6OiB0b2xpc3QoKQotCi0gICAgICBSZXR1cm4gdGhlIGRhdGEgaW4gdGhlIGJ1ZmZlciBhcyBhIGxpc3Qgb2YgaW50ZWdlcnMuIDo6Ci0KLSAgICAgICAgID4+PiBtZW1vcnl2aWV3KGInYWJjJykudG9saXN0KCkKLSAgICAgICAgIFs5NywgOTgsIDk5XQotCi0gICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKLQotICAgICAgUmVsZWFzZSB0aGUgdW5kZXJseWluZyBidWZmZXIgZXhwb3NlZCBieSB0aGUgbWVtb3J5dmlldyBvYmplY3QuICBNYW55Ci0gICAgICBvYmplY3RzIHRha2Ugc3BlY2lhbCBhY3Rpb25zIHdoZW4gYSB2aWV3IGlzIGhlbGQgb24gdGhlbSAoZm9yIGV4YW1wbGUsCi0gICAgICBhIDpjbGFzczpgYnl0ZWFycmF5YCB3b3VsZCB0ZW1wb3JhcmlseSBmb3JiaWQgcmVzaXppbmcpOyB0aGVyZWZvcmUsCi0gICAgICBjYWxsaW5nIHJlbGVhc2UoKSBpcyBoYW5keSB0byByZW1vdmUgdGhlc2UgcmVzdHJpY3Rpb25zIChhbmQgZnJlZSBhbnkKLSAgICAgIGRhbmdsaW5nIHJlc291cmNlcykgYXMgc29vbiBhcyBwb3NzaWJsZS4KLQotICAgICAgQWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLCBhbnkgZnVydGhlciBvcGVyYXRpb24gb24gdGhlIHZpZXcKLSAgICAgIHJhaXNlcyBhIDpjbGFzczpgVmFsdWVFcnJvcmAgKGV4Y2VwdCA6bWV0aDpgcmVsZWFzZSgpYCBpdHNlbGYgd2hpY2ggY2FuCi0gICAgICBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMpOjoKLQotICAgICAgICAgPj4+IG0gPSBtZW1vcnl2aWV3KGInYWJjJykKLSAgICAgICAgID4+PiBtLnJlbGVhc2UoKQotICAgICAgICAgPj4+IG1bMF0KLSAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KLSAgICAgICAgIFZhbHVlRXJyb3I6IG9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QKLQotICAgICAgVGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCBjYW4gYmUgdXNlZCBmb3IgYSBzaW1pbGFyIGVmZmVjdCwKLSAgICAgIHVzaW5nIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQ6OgotCi0gICAgICAgICA+Pj4gd2l0aCBtZW1vcnl2aWV3KGInYWJjJykgYXMgbToKLSAgICAgICAgIC4uLiAgICAgbVswXQotICAgICAgICAgLi4uCi0gICAgICAgICBiJ2EnCi0gICAgICAgICA+Pj4gbVswXQotICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotICAgICAgICAgVmFsdWVFcnJvcjogb3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdAotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKLQotICAgVGhlcmUgYXJlIGFsc28gc2V2ZXJhbCByZWFkb25seSBhdHRyaWJ1dGVzIGF2YWlsYWJsZToKLQotICAgLi4gYXR0cmlidXRlOjogZm9ybWF0Ci0KLSAgICAgIEEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gOm1vZDpgc3RydWN0YCBtb2R1bGUgc3R5bGUpIGZvciBlYWNoCi0gICAgICBlbGVtZW50IGluIHRoZSB2aWV3LiAgVGhpcyBkZWZhdWx0cyB0byBgYCdCJ2BgLCBhIHNpbXBsZSBieXRlc3RyaW5nLgotCi0gICAuLiBhdHRyaWJ1dGU6OiBpdGVtc2l6ZQotCi0gICAgICBUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXc6OgotCi0gICAgICAgICA+Pj4gbSA9IG1lbW9yeXZpZXcoYXJyYXkuYXJyYXkoJ0gnLCBbMSwyLDNdKSkKLSAgICAgICAgID4+PiBtLml0ZW1zaXplCi0gICAgICAgICAyCi0gICAgICAgICA+Pj4gbVswXQotICAgICAgICAgYidceDAxXHgwMCcKLSAgICAgICAgID4+PiBsZW4obVswXSkgPT0gbS5pdGVtc2l6ZQotICAgICAgICAgVHJ1ZQotCi0gICAuLiBhdHRyaWJ1dGU6OiBzaGFwZQotCi0gICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2hhcGUgb2YgdGhlCi0gICAgICBtZW1vcnkgYXMgYSBOLWRpbWVuc2lvbmFsIGFycmF5LgotCi0gICAuLiBhdHRyaWJ1dGU6OiBuZGltCi0KLSAgICAgIEFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkgdGhlCi0gICAgICBtZW1vcnkgcmVwcmVzZW50cy4KLQotICAgLi4gYXR0cmlidXRlOjogc3RyaWRlcwotCi0gICAgICBBIHR1cGxlIG9mIGludGVnZXJzIHRoZSBsZW5ndGggb2YgOmF0dHI6YG5kaW1gIGdpdmluZyB0aGUgc2l6ZSBpbiBieXRlcyB0bwotICAgICAgYWNjZXNzIGVhY2ggZWxlbWVudCBmb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LgotCi0gICAuLiBhdHRyaWJ1dGU6OiByZWFkb25seQotCi0gICAgICBBIGJvb2wgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBtZW1vcnkgaXMgcmVhZCBvbmx5LgotCi0gICAuLiBtZW1vcnl2aWV3LnN1Ym9mZnNldHMgaXNuJ3QgZG9jdW1lbnRlZCBiZWNhdXNlIGl0IG9ubHkgc2VlbXMgdXNlZnVsIGZvciBDCi0KLQogLi4gX3R5cGVjb250ZXh0bWFuYWdlcjoKIAogQ29udGV4dCBNYW5hZ2VyIFR5cGVzCkBAIC0yNzI1LDcgKzM0MTUsNyBAQAogCiBUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVybiBhIHZhbHVlLiAgSXQKIHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIG51bGwgb2JqZWN0LCBuYW1lZAotYGBOb25lYGAgKGEgYnVpbHQtaW4gbmFtZSkuCitgYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShOb25lKSgpYGAgcHJvZHVjZXMgdGhlIHNhbWUgc2luZ2xldG9uLgogCiBJdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLgogCkBAIC0yNzM3LDcgKzM0MjcsOCBAQAogCiBUaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSA6cmVmOmBzbGljaW5nc2ApLiAgSXQgc3VwcG9ydHMgbm8KIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWQKLTpjb25zdDpgRWxsaXBzaXNgIChhIGJ1aWx0LWluIG5hbWUpLgorOmNvbnN0OmBFbGxpcHNpc2AgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoRWxsaXBzaXMpKClgYCBwcm9kdWNlcyB0aGUKKzpjb25zdDpgRWxsaXBzaXNgIHNpbmdsZXRvbi4KIAogSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC4KIApAQCAtMjc0OSw3ICszNDQwLDggQEAKIAogVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgZnJvbSBjb21wYXJpc29ucyBhbmQgYmluYXJ5IG9wZXJhdGlvbnMgd2hlbiB0aGV5IGFyZQogYXNrZWQgdG8gb3BlcmF0ZSBvbiB0eXBlcyB0aGV5IGRvbid0IHN1cHBvcnQuIFNlZSA6cmVmOmBjb21wYXJpc29uc2AgZm9yIG1vcmUKLWluZm9ybWF0aW9uLgoraW5mb3JtYXRpb24uICBUaGVyZSBpcyBleGFjdGx5IG9uZSBgYE5vdEltcGxlbWVudGVkYGAgb2JqZWN0LgorYGB0eXBlKE5vdEltcGxlbWVudGVkKSgpYGAgcHJvZHVjZXMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZS4KIAogSXQgaXMgd3JpdHRlbiBhcyBgYE5vdEltcGxlbWVudGVkYGAuCiAKQEAgLTI4MTUsNiArMzUwNywxMyBAQAogICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuCiAKIAorLi4gYXR0cmlidXRlOjogY2xhc3MuX19xdWFsbmFtZV9fCisKKyAgIFRoZSA6dGVybTpgcXVhbGlmaWVkIG5hbWVgIG9mIHRoZSBjbGFzcyBvciB0eXBlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBhdHRyaWJ1dGU6OiBjbGFzcy5fX21yb19fCiAKICAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW4gbG9va2luZyBmb3IKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CmluZGV4IDc5ZDRlM2YuLjljNjMyNzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdApAQCAtMTAsNyArMTAsNyBAQAogCiAuLiBzZWVhbHNvOjoKIAotICAgOnJlZjpgdHlwZXNzZXFgCisgICA6cmVmOmB0ZXh0c2VxYAogCiAgICA6cmVmOmBzdHJpbmctbWV0aG9kc2AKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RyaW5ncy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhmMTY1OC4uMDAwMDAwMAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmdzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS4uIF9zdHJpbmdzZXJ2aWNlczoKLQotKioqKioqKioqKioqKioqCi1TdHJpbmcgU2VydmljZXMKLSoqKioqKioqKioqKioqKgotCi1UaGUgbW9kdWxlcyBkZXNjcmliZWQgaW4gdGhpcyBjaGFwdGVyIHByb3ZpZGUgYSB3aWRlIHJhbmdlIG9mIHN0cmluZwotbWFuaXB1bGF0aW9uIG9wZXJhdGlvbnMuCi0KLUluIGFkZGl0aW9uLCBQeXRob24ncyBidWlsdC1pbiBzdHJpbmcgY2xhc3NlcyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHMKLWRlc2NyaWJlZCBpbiB0aGUgOnJlZjpgdHlwZXNzZXFgIHNlY3Rpb24sIGFuZCBhbHNvIHRoZSBzdHJpbmctc3BlY2lmaWMgbWV0aG9kcwotZGVzY3JpYmVkIGluIHRoZSA6cmVmOmBzdHJpbmctbWV0aG9kc2Agc2VjdGlvbi4gIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywKLXNlZSB0aGUgOnJlZjpgc3RyaW5nLWZvcm1hdHRpbmdgIHNlY3Rpb24uIEFsc28sIHNlZSB0aGUgOm1vZDpgcmVgIG1vZHVsZSBmb3IKLXN0cmluZyBmdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy4KLQotCi0uLiB0b2N0cmVlOjoKLQotICAgc3RyaW5nLnJzdAotICAgcmUucnN0Ci0gICBzdHJ1Y3QucnN0Ci0gICBkaWZmbGliLnJzdAotICAgdGV4dHdyYXAucnN0Ci0gICBjb2RlY3MucnN0Ci0gICB1bmljb2RlZGF0YS5yc3QKLSAgIHN0cmluZ3ByZXAucnN0Ci0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CmluZGV4IDEyODIwZTAuLjk5NDUwNmMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdApAQCAtMTg3LDE3ICsxODcsMjQgQEAKIHwgYGBRYGAgIHwgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDIpLCBcKDMpIHwKIHwgICAgICAgIHwgbG9uZ2AgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLXwgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKK3wgYGBuYGAgIHwgOmM6dHlwZTpgc3NpemVfdGAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLXwgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKK3wgYGBOYGAgIHwgOmM6dHlwZTpgc2l6ZV90YCAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDQpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBmYGAgIHwgOmM6dHlwZTpgZmxvYXRgICAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgNCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKKystLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKK3wgYGBkYGAgIHwgOmM6dHlwZTpgZG91YmxlYCAgICAgICAgIHwgZmxvYXQgICAgICAgICAgICAgIHwgOCAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBzYGAgIHwgOmM6dHlwZTpgY2hhcltdYCAgICAgICAgIHwgYnl0ZXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIHwgYGBwYGAgIHwgOmM6dHlwZTpgY2hhcltdYCAgICAgICAgIHwgYnl0ZXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLXwgYGBQYGAgIHwgOmM6dHlwZTpgdm9pZCBcKmAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDUpICAgICAgIHwKK3wgYGBQYGAgIHwgOmM6dHlwZTpgdm9pZCBcKmAgICAgICAgIHwgaW50ZWdlciAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfCBcKDYpICAgICAgIHwKICstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCduJ2BgIGFuZCBgYCdOJ2BgIGZvcm1hdHMuCisKIE5vdGVzOgogCiAoMSkKQEAgLTIxOSwxMSArMjI2LDE3IEBACiAgICAgICBVc2Ugb2YgdGhlIDptZXRoOmBfX2luZGV4X19gIG1ldGhvZCBmb3Igbm9uLWludGVnZXJzIGlzIG5ldyBpbiAzLjIuCiAKICg0KQorICAgVGhlIGBgJ24nYGAgYW5kIGBgJ04nYGAgY29udmVyc2lvbiBjb2RlcyBhcmUgb25seSBhdmFpbGFibGUgZm9yIHRoZSBuYXRpdmUKKyAgIHNpemUgKHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IG9yIHdpdGggdGhlIGBgJ0AnYGAgYnl0ZSBvcmRlciBjaGFyYWN0ZXIpLgorICAgRm9yIHRoZSBzdGFuZGFyZCBzaXplLCB5b3UgY2FuIHVzZSB3aGljaGV2ZXIgb2YgdGhlIG90aGVyIGludGVnZXIgZm9ybWF0cworICAgZml0cyB5b3VyIGFwcGxpY2F0aW9uLgorCisoNSkKICAgIEZvciB0aGUgYGAnZidgYCBhbmQgYGAnZCdgYCBjb252ZXJzaW9uIGNvZGVzLCB0aGUgcGFja2VkIHJlcHJlc2VudGF0aW9uIHVzZXMKICAgIHRoZSBJRUVFIDc1NCBiaW5hcnkzMiAoZm9yIGBgJ2YnYGApIG9yIGJpbmFyeTY0IChmb3IgYGAnZCdgYCkgZm9ybWF0LAogICAgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQgZm9ybWF0IHVzZWQgYnkgdGhlIHBsYXRmb3JtLgogCi0oNSkKKyg2KQogICAgVGhlIGBgJ1AnYGAgZm9ybWF0IGNoYXJhY3RlciBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIG5hdGl2ZSBieXRlIG9yZGVyaW5nCiAgICAoc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3Igd2l0aCB0aGUgYGAnQCdgYCBieXRlIG9yZGVyIGNoYXJhY3RlcikuIFRoZSBieXRlCiAgICBvcmRlciBjaGFyYWN0ZXIgYGAnPSdgYCBjaG9vc2VzIHRvIHVzZSBsaXR0bGUtIG9yIGJpZy1lbmRpYW4gb3JkZXJpbmcgYmFzZWQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0IGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKaW5kZXggZTI2MGExZi4uNjZkNmNiYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKQEAgLTMwLDE2ICszMCwyMSBAQAogdXNlIGNhc2VzLCB0aGUgdW5kZXJseWluZyA6Y2xhc3M6YFBvcGVuYCBpbnRlcmZhY2UgY2FuIGJlIHVzZWQgZGlyZWN0bHkuCiAKIAotLi4gZnVuY3Rpb246OiBjYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UpCisuLiBmdW5jdGlvbjo6IGNhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lKQogCiAgICBSdW4gdGhlIGNvbW1hbmQgZGVzY3JpYmVkIGJ5ICphcmdzKi4gIFdhaXQgZm9yIGNvbW1hbmQgdG8gY29tcGxldGUsIHRoZW4KICAgIHJldHVybiB0aGUgOmF0dHI6YHJldHVybmNvZGVgIGF0dHJpYnV0ZS4KIAogICAgVGhlIGFyZ3VtZW50cyBzaG93biBhYm92ZSBhcmUgbWVyZWx5IHRoZSBtb3N0IGNvbW1vbiBvbmVzLCBkZXNjcmliZWQgYmVsb3cKLSAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgc2xpZ2h0bHkgb2RkIG5vdGF0aW9uIGluCi0gICB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzCi0gICB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb25zIHBhc3NlcyBhbGwKLSAgIHN1cHBsaWVkIGFyZ3VtZW50cyBkaXJlY3RseSB0aHJvdWdoIHRvIHRoYXQgaW50ZXJmYWNlLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbiBwYXNzZXMgYWxsCisgICBzdXBwbGllZCBhcmd1bWVudHMgb3RoZXIgdGhhbiAqdGltZW91dCogZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtNjIsOCArNjcsMTEgQEAKICAgICAgIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2ggb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwCiAgICAgICB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCi0uLiBmdW5jdGlvbjo6IGNoZWNrX2NhbGwoYXJncywgKiwgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBjaGVja19jYWxsKGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLiBJZiB0aGUgcmV0dXJuCiAgICBjb2RlIHdhcyB6ZXJvIHRoZW4gcmV0dXJuLCBvdGhlcndpc2UgcmFpc2UgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYC4gVGhlCkBAIC03MSwxMCArNzksMTUgQEAKICAgIDphdHRyOmByZXR1cm5jb2RlYCBhdHRyaWJ1dGUuCiAKICAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHNsaWdodGx5IG9kZCBub3RhdGlvbiBpbgotICAgdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyB0aGUgc2FtZSBhcwotICAgdGhhdCBvZiB0aGUgOmNsYXNzOmBQb3BlbmAgY29uc3RydWN0b3IgLSB0aGlzIGZ1bmN0aW9ucyBwYXNzZXMgYWxsCi0gICBzdXBwbGllZCBhcmd1bWVudHMgZGlyZWN0bHkgdGhyb3VnaCB0byB0aGF0IGludGVyZmFjZS4KKyAgIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgIChoZW5jZSB0aGUgdXNlIG9mIGtleXdvcmQtb25seSBub3RhdGlvbgorICAgaW4gdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQorICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciAtIHRoaXMgZnVuY3Rpb24gcGFzc2VzIGFsbAorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisKKyAgIFRoZSAqdGltZW91dCogYXJndW1lbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBQb3Blbi53YWl0YC4gSWYgdGhlIHRpbWVvdXQKKyAgIGV4cGlyZXMsIHRoZSBjaGlsZCBwcm9jZXNzIHdpbGwgYmUga2lsbGVkIGFuZCB0aGVuIHdhaXRlZCBmb3IgYWdhaW4uICBUaGUKKyAgIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gd2lsbCBiZSByZS1yYWlzZWQgYWZ0ZXIgdGhlIGNoaWxkIHByb2Nlc3MKKyAgIGhhcyB0ZXJtaW5hdGVkLgogCiAgICBFeGFtcGxlczo6CiAKQEAgLTg2LDggKzk5LDYgQEAKICAgICAgICAgIC4uLgogICAgICAgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6IENvbW1hbmQgJ2V4aXQgMScgcmV0dXJuZWQgbm9uLXplcm8gZXhpdCBzdGF0dXMgMQogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjUKLQogICAgLi4gd2FybmluZzo6CiAKICAgICAgIEludm9raW5nIHRoZSBzeXN0ZW0gc2hlbGwgd2l0aCBgYHNoZWxsPVRydWVgYCBjYW4gYmUgYSBzZWN1cml0eSBoYXphcmQKQEAgLTEwMSw4ICsxMTIsMTEgQEAKICAgICAgIHByb2Nlc3MgbWF5IGJsb2NrIGlmIGl0IGdlbmVyYXRlcyBlbm91Z2ggb3V0cHV0IHRvIGEgcGlwZSB0byBmaWxsIHVwCiAgICAgICB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCi0uLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIHVuaXZlcnNhbF9uZXdsaW5lcz1GYWxzZSkKKworLi4gZnVuY3Rpb246OiBjaGVja19vdXRwdXQoYXJncywgKiwgc3RkaW49Tm9uZSwgc3RkZXJyPU5vbmUsIHNoZWxsPUZhbHNlLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0IGFzIGEgYnl0ZSBzdHJpbmcuCiAKQEAgLTExMiwxMSArMTI2LDE3IEBACiAgICBhdHRyaWJ1dGUuCiAKICAgIFRoZSBhcmd1bWVudHMgc2hvd24gYWJvdmUgYXJlIG1lcmVseSB0aGUgbW9zdCBjb21tb24gb25lcywgZGVzY3JpYmVkIGJlbG93Ci0gICBpbiA6cmVmOmBmcmVxdWVudGx5LXVzZWQtYXJndW1lbnRzYCAoaGVuY2UgdGhlIHNsaWdodGx5IG9kZCBub3RhdGlvbiBpbgotICAgdGhlIGFiYnJldmlhdGVkIHNpZ25hdHVyZSkuIFRoZSBmdWxsIGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBsYXJnZWx5IHRoZQotICAgc2FtZSBhcyB0aGF0IG9mIHRoZSA6Y2xhc3M6YFBvcGVuYCBjb25zdHJ1Y3RvciwgZXhjZXB0IHRoYXQgKnN0ZG91dCogaXMKLSAgIG5vdCBwZXJtaXR0ZWQgYXMgaXQgaXMgdXNlZCBpbnRlcm5hbGx5LiBBbGwgb3RoZXIgc3VwcGxpZWQgYXJndW1lbnRzIGFyZQotICAgcGFzc2VkIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yLgorICAgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgKGhlbmNlIHRoZSB1c2Ugb2Yga2V5d29yZC1vbmx5IG5vdGF0aW9uCisgICBpbiB0aGUgYWJicmV2aWF0ZWQgc2lnbmF0dXJlKS4gVGhlIGZ1bGwgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIGxhcmdlbHkgdGhlCisgICBzYW1lIGFzIHRoYXQgb2YgdGhlIDpjbGFzczpgUG9wZW5gIGNvbnN0cnVjdG9yIC0gdGhpcyBmdW5jdGlvbnMgcGFzc2VzIGFsbAorICAgc3VwcGxpZWQgYXJndW1lbnRzIG90aGVyIHRoYW4gKnRpbWVvdXQqIGRpcmVjdGx5IHRocm91Z2ggdG8gdGhhdCBpbnRlcmZhY2UuCisgICBJbiBhZGRpdGlvbiwgKnN0ZG91dCogaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBhcmd1bWVudCwgYXMgaXQgaXMgdXNlZAorICAgaW50ZXJuYWxseSB0byBjb2xsZWN0IHRoZSBvdXRwdXQgZnJvbSB0aGUgc3VicHJvY2Vzcy4KKworICAgVGhlICp0aW1lb3V0KiBhcmd1bWVudCBpcyBwYXNzZWQgdG8gOm1ldGg6YFBvcGVuLndhaXRgLiBJZiB0aGUgdGltZW91dAorICAgZXhwaXJlcywgdGhlIGNoaWxkIHByb2Nlc3Mgd2lsbCBiZSBraWxsZWQgYW5kIHRoZW4gd2FpdGVkIGZvciBhZ2Fpbi4gIFRoZQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbiB3aWxsIGJlIHJlLXJhaXNlZCBhZnRlciB0aGUgY2hpbGQgcHJvY2VzcworICAgaGFzIHRlcm1pbmF0ZWQuCiAKICAgIEV4YW1wbGVzOjoKIApAQCAtMTQ3LDcgKzE2Nyw3IEBACiAgICAgICAuLi4gICAgIHNoZWxsPVRydWUpCiAgICAgICAnbHM6IG5vbl9leGlzdGVudF9maWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XG4nCiAKLSAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKICAgIC4uIHdhcm5pbmc6OgogCkBAIC0xNjEsNiArMTgxLDE4IEBACiAgICAgICByZWFkIGluIHRoZSBjdXJyZW50IHByb2Nlc3MsIHRoZSBjaGlsZCBwcm9jZXNzIG1heSBibG9jayBpZiBpdAogICAgICAgZ2VuZXJhdGVzIGVub3VnaCBvdXRwdXQgdG8gdGhlIHBpcGUgdG8gZmlsbCB1cCB0aGUgT1MgcGlwZSBidWZmZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCisKKy4uIGRhdGE6OiBERVZOVUxMCisKKyAgIFNwZWNpYWwgdmFsdWUgdGhhdCBjYW4gYmUgdXNlZCBhcyB0aGUgKnN0ZGluKiwgKnN0ZG91dCogb3IgKnN0ZGVyciogYXJndW1lbnQKKyAgIHRvIDpjbGFzczpgUG9wZW5gIGFuZCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lhbCBmaWxlIDpkYXRhOmBvcy5kZXZudWxsYAorICAgd2lsbCBiZSB1c2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKwogCiAuLiBkYXRhOjogUElQRQogCkBAIC0xNzYsMTAgKzIwOCwzOCBAQAogICAgb3V0cHV0LgogCiAKKy4uIGV4Y2VwdGlvbjo6IFN1YnByb2Nlc3NFcnJvcgorCisgICAgQmFzZSBjbGFzcyBmb3IgYWxsIG90aGVyIGV4Y2VwdGlvbnMgZnJvbSB0aGlzIG1vZHVsZS4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGV4Y2VwdGlvbjo6IFRpbWVvdXRFeHBpcmVkCisKKyAgICBTdWJjbGFzcyBvZiA6ZXhjOmBTdWJwcm9jZXNzRXJyb3JgLCByYWlzZWQgd2hlbiBhIHRpbWVvdXQgZXhwaXJlcworICAgIHdoaWxlIHdhaXRpbmcgZm9yIGEgY2hpbGQgcHJvY2Vzcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IGNtZAorCisgICAgICAgIENvbW1hbmQgdGhhdCB3YXMgdXNlZCB0byBzcGF3biB0aGUgY2hpbGQgcHJvY2Vzcy4KKworICAgIC4uIGF0dHJpYnV0ZTo6IHRpbWVvdXQKKworICAgICAgICBUaW1lb3V0IGluIHNlY29uZHMuCisKKyAgICAuLiBhdHRyaWJ1dGU6OiBvdXRwdXQKKworICAgICAgICBPdXRwdXQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaWYgdGhpcyBleGNlcHRpb24gaXMgcmFpc2VkIGJ5CisgICAgICAgIDpmdW5jOmBjaGVja19vdXRwdXRgLiAgT3RoZXJ3aXNlLCBgYE5vbmVgYC4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGV4Y2VwdGlvbjo6IENhbGxlZFByb2Nlc3NFcnJvcgogCi0gICAgRXhjZXB0aW9uIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgOmZ1bmM6YGNoZWNrX2NhbGxgIG9yCi0gICAgOmZ1bmM6YGNoZWNrX291dHB1dGAgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgorICAgIFN1YmNsYXNzIG9mIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAsIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkKKyAgICA6ZnVuYzpgY2hlY2tfY2FsbGAgb3IgOmZ1bmM6YGNoZWNrX291dHB1dGAgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogCiAgICAgLi4gYXR0cmlidXRlOjogcmV0dXJuY29kZQogCkBAIC0yMTYsMjUgKzI3NiwyNyBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgZmlsZSBvYmplY3QsIGFuZCBgYE5vbmVgYC4gIDpkYXRhOmBQSVBFYCBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlCi0gICB0byB0aGUgY2hpbGQgc2hvdWxkIGJlIGNyZWF0ZWQuICBXaXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzIG9mIGBgTm9uZWBgLCBubwotICAgcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZSBoYW5kbGVzIHdpbGwgYmUgaW5oZXJpdGVkIGZyb20gdGhlCi0gICBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZSA6ZGF0YTpgU1RET1VUYCwgd2hpY2ggaW5kaWNhdGVzIHRoYXQKLSAgIHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUKLSAgIGhhbmRsZSBhcyBmb3Igc3Rkb3V0LgorICAgYXJlIDpkYXRhOmBQSVBFYCwgOmRhdGE6YERFVk5VTExgLCBhbiBleGlzdGluZyBmaWxlIGRlc2NyaXB0b3IgKGEgcG9zaXRpdmUKKyAgIGludGVnZXIpLCBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcworICAgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYCBpbmRpY2F0ZXMKKyAgIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiAgV2l0aCB0aGUgZGVmYXVsdAorICAgc2V0dGluZ3Mgb2YgYGBOb25lYGAsIG5vIHJlZGlyZWN0aW9uIHdpbGwgb2NjdXI7IHRoZSBjaGlsZCdzIGZpbGUgaGFuZGxlcworICAgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSB0aGUgcGFyZW50LiAgQWRkaXRpb25hbGx5LCAqc3RkZXJyKiBjYW4gYmUKKyAgIDpkYXRhOmBTVERPVVRgLCB3aGljaCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3RkZXJyIGRhdGEgZnJvbSB0aGUgY2hpbGQKKyAgIHByb2Nlc3Mgc2hvdWxkIGJlIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yICpzdGRvdXQqLgogCiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgc3VicHJvY2VzcyBtb2R1bGUKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCoKLSAgIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AKLSAgIG1vZGUgdXNpbmcgdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5IDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmdgLgotICAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkCi0gICB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvciA6ZGF0YTpgb3MubGluZXNlcGAuICBGb3IgKnN0ZG91dCogYW5kCi0gICAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLgotICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgCi0gICBjbGFzcyB3aGVuIHRoZSAqbmV3bGluZSogYXJndW1lbnQgdG8gaXRzIGNvbnN0cnVjdG9yIGlzIGBgTm9uZWBgLgorICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kCisgICAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyB0ZXh0IHN0cmVhbXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZQorICAgdXNpbmcgdGhlIGVuY29kaW5nIHJldHVybmVkIGJ5IDpmdW5jOmBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICA8bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nPmAuICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycworICAgYGAnXG4nYGAgaW4gdGhlIGlucHV0IHdpbGwgYmUgY29udmVydGVkIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yCisgICA6ZGF0YTpgb3MubGluZXNlcGAuICBGb3IgKnN0ZG91dCogYW5kICpzdGRlcnIqLCBhbGwgbGluZSBlbmRpbmdzIGluIHRoZQorICAgb3V0cHV0IHdpbGwgYmUgY29udmVydGVkIHRvIGBgJ1xuJ2BgLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQorICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYCBjbGFzcyB3aGVuIHRoZSAqbmV3bGluZSoKKyAgIGFyZ3VtZW50IHRvIGl0cyBjb25zdHJ1Y3RvciBpcyBgYE5vbmVgYC4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTI1NCw2ICszMTYsMTIgQEAKICAgIDptb2Q6YGZubWF0Y2hgLCA6ZnVuYzpgb3Mud2Fsa2AsIDpmdW5jOmBvcy5wYXRoLmV4cGFuZHZhcnNgLAogICAgOmZ1bmM6YG9zLnBhdGguZXhwYW5kdXNlcmAsIGFuZCA6bW9kOmBzaHV0aWxgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFdoZW4gKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZSBjbGFzcyB1c2VzIHRoZSBlbmNvZGluZworICAgICAgOmZ1bmM6YGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gCisgICAgICBpbnN0ZWFkIG9mIGBgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKClgYC4gIFNlZSB0aGUKKyAgICAgIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjaGFuZ2UuCisKICAgIC4uIHdhcm5pbmc6OgogCiAgICAgICBFeGVjdXRpbmcgc2hlbGwgY29tbWFuZHMgdGhhdCBpbmNvcnBvcmF0ZSB1bnNhbml0aXplZCBpbnB1dCBmcm9tIGFuCkBAIC0zODIsMTMgKzQ1MCwxNCBAQAogCiAgICAqc3RkaW4qLCAqc3Rkb3V0KiBhbmQgKnN0ZGVyciogc3BlY2lmeSB0aGUgZXhlY3V0ZWQgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0LAogICAgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmaWxlIGhhbmRsZXMsIHJlc3BlY3RpdmVseS4gIFZhbGlkIHZhbHVlcwotICAgYXJlIDpkYXRhOmBQSVBFYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlIGludGVnZXIpLCBhbgotICAgZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgIGluZGljYXRlcyB0aGF0IGEKLSAgIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIFdpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3Mgb2YKLSAgIGBgTm9uZWBgLCBubyByZWRpcmVjdGlvbiB3aWxsIG9jY3VyOyB0aGUgY2hpbGQncyBmaWxlIGhhbmRsZXMgd2lsbCBiZQotICAgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudC4gIEFkZGl0aW9uYWxseSwgKnN0ZGVyciogY2FuIGJlIDpkYXRhOmBTVERPVVRgLAotICAgd2hpY2ggaW5kaWNhdGVzIHRoYXQgdGhlIHN0ZGVyciBkYXRhIGZyb20gdGhlIGFwcGxpY2F0aW9ucyBzaG91bGQgYmUKLSAgIGNhcHR1cmVkIGludG8gdGhlIHNhbWUgZmlsZSBoYW5kbGUgYXMgZm9yIHN0ZG91dC4KKyAgIGFyZSA6ZGF0YTpgUElQRWAsIDpkYXRhOmBERVZOVUxMYCwgYW4gZXhpc3RpbmcgZmlsZSBkZXNjcmlwdG9yIChhIHBvc2l0aXZlCisgICBpbnRlZ2VyKSwgYW4gZXhpc3RpbmcgOnRlcm06YGZpbGUgb2JqZWN0YCwgYW5kIGBgTm9uZWBgLiAgOmRhdGE6YFBJUEVgCisgICBpbmRpY2F0ZXMgdGhhdCBhIG5ldyBwaXBlIHRvIHRoZSBjaGlsZCBzaG91bGQgYmUgY3JlYXRlZC4gIDpkYXRhOmBERVZOVUxMYAorICAgaW5kaWNhdGVzIHRoYXQgdGhlIHNwZWNpYWwgZmlsZSA6ZGF0YTpgb3MuZGV2bnVsbGAgd2lsbCBiZSB1c2VkLiBXaXRoIHRoZQorICAgZGVmYXVsdCBzZXR0aW5ncyBvZiBgYE5vbmVgYCwgbm8gcmVkaXJlY3Rpb24gd2lsbCBvY2N1cjsgdGhlIGNoaWxkJ3MgZmlsZQorICAgaGFuZGxlcyB3aWxsIGJlIGluaGVyaXRlZCBmcm9tIHRoZSBwYXJlbnQuICBBZGRpdGlvbmFsbHksICpzdGRlcnIqIGNhbiBiZQorICAgOmRhdGE6YFNURE9VVGAsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzdGRlcnIgZGF0YSBmcm9tIHRoZSBhcHBsaWNhdGlvbnMKKyAgIHNob3VsZCBiZSBjYXB0dXJlZCBpbnRvIHRoZSBzYW1lIGZpbGUgaGFuZGxlIGFzIGZvciBzdGRvdXQuCiAKICAgIElmICpwcmVleGVjX2ZuKiBpcyBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QsIHRoaXMgb2JqZWN0IHdpbGwgYmUgY2FsbGVkIGluIHRoZQogICAgY2hpbGQgcHJvY2VzcyBqdXN0IGJlZm9yZSB0aGUgY2hpbGQgaXMgZXhlY3V0ZWQuCkBAIC00OTgsNiArNTY3LDE1IEBACiA6ZXhjOmBDYWxsZWRQcm9jZXNzRXJyb3JgIGlmIHRoZSBjYWxsZWQgcHJvY2VzcyByZXR1cm5zIGEgbm9uLXplcm8gcmV0dXJuCiBjb2RlLgogCitBbGwgb2YgdGhlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB0aGF0IGFjY2VwdCBhICp0aW1lb3V0KiBwYXJhbWV0ZXIsIHN1Y2ggYXMKKzpmdW5jOmBjYWxsYCBhbmQgOm1ldGg6YFBvcGVuLmNvbW11bmljYXRlYCB3aWxsIHJhaXNlIDpleGM6YFRpbWVvdXRFeHBpcmVkYCBpZgordGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgdGhlIHByb2Nlc3MgZXhpdHMuCisKK0V4Y2VwdGlvbnMgZGVmaW5lZCBpbiB0aGlzIG1vZHVsZSBhbGwgaW5oZXJpdCBmcm9tIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgVGhlIDpleGM6YFN1YnByb2Nlc3NFcnJvcmAgYmFzZSBjbGFzcyB3YXMgYWRkZWQuCisKIAogU2VjdXJpdHkKIF5eXl5eXl5eCkBAIC01MjEsMTEgKzU5OSwxNSBAQAogICAgYXR0cmlidXRlLgogCiAKLS4uIG1ldGhvZDo6IFBvcGVuLndhaXQoKQorLi4gbWV0aG9kOjogUG9wZW4ud2FpdCh0aW1lb3V0PU5vbmUpCiAKICAgIFdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgU2V0IGFuZCByZXR1cm4gOmF0dHI6YHJldHVybmNvZGVgCiAgICBhdHRyaWJ1dGUuCiAKKyAgIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHRlcm1pbmF0ZSBhZnRlciAqdGltZW91dCogc2Vjb25kcywgcmFpc2UgYQorICAgOmV4YzpgVGltZW91dEV4cGlyZWRgIGV4Y2VwdGlvbi4gIEl0IGlzIHNhZmUgdG8gY2F0Y2ggdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeSB0aGUgd2FpdC4KKwogICAgLi4gd2FybmluZzo6CiAKICAgICAgIFRoaXMgd2lsbCBkZWFkbG9jayB3aGVuIHVzaW5nIGBgc3Rkb3V0PVBJUEVgYCBhbmQvb3IKQEAgLTUzMywxMyArNjE1LDE3IEBACiAgICAgICBhIHBpcGUgc3VjaCB0aGF0IGl0IGJsb2NrcyB3YWl0aW5nIGZvciB0aGUgT1MgcGlwZSBidWZmZXIgdG8KICAgICAgIGFjY2VwdCBtb3JlIGRhdGEuICBVc2UgOm1ldGg6YGNvbW11bmljYXRlYCB0byBhdm9pZCB0aGF0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgKnRpbWVvdXQqIHdhcyBhZGRlZC4KIAotLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSkKKworLi4gbWV0aG9kOjogUG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9Tm9uZSwgdGltZW91dD1Ob25lKQogCiAgICBJbnRlcmFjdCB3aXRoIHByb2Nlc3M6IFNlbmQgZGF0YSB0byBzdGRpbi4gIFJlYWQgZGF0YSBmcm9tIHN0ZG91dCBhbmQgc3RkZXJyLAotICAgdW50aWwgZW5kLW9mLWZpbGUgaXMgcmVhY2hlZC4gIFdhaXQgZm9yIHByb2Nlc3MgdG8gdGVybWluYXRlLiBUaGUgb3B0aW9uYWwKLSAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4KKyAgIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvciBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbAorICAgKmlucHV0KiBhcmd1bWVudCBzaG91bGQgYmUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBjaGlsZCBwcm9jZXNzLCBvcgorICAgYGBOb25lYGAsIGlmIG5vIGRhdGEgc2hvdWxkIGJlIHNlbnQgdG8gdGhlIGNoaWxkLiAgVGhlIHR5cGUgb2YgKmlucHV0KgorICAgbXVzdCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBhIHN0cmluZy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSlgYC4KIApAQCAtNTQ4LDExICs2MzQsMjkgQEAKICAgIGBgTm9uZWBgIGluIHRoZSByZXN1bHQgdHVwbGUsIHlvdSBuZWVkIHRvIGdpdmUgYGBzdGRvdXQ9UElQRWBgIGFuZC9vcgogICAgYGBzdGRlcnI9UElQRWBgIHRvby4KIAorICAgSWYgdGhlIHByb2Nlc3MgZG9lcyBub3QgdGVybWluYXRlIGFmdGVyICp0aW1lb3V0KiBzZWNvbmRzLCBhCisgICA6ZXhjOmBUaW1lb3V0RXhwaXJlZGAgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiAgQ2F0Y2hpbmcgdGhpcyBleGNlcHRpb24gYW5kCisgICByZXRyeWluZyBjb21tdW5pY2F0aW9uIHdpbGwgbm90IGxvc2UgYW55IG91dHB1dC4KKworICAgVGhlIGNoaWxkIHByb2Nlc3MgaXMgbm90IGtpbGxlZCBpZiB0aGUgdGltZW91dCBleHBpcmVzLCBzbyBpbiBvcmRlciB0bworICAgY2xlYW51cCBwcm9wZXJseSBhIHdlbGwtYmVoYXZlZCBhcHBsaWNhdGlvbiBzaG91bGQga2lsbCB0aGUgY2hpbGQgcHJvY2VzcyBhbmQKKyAgIGZpbmlzaCBjb21tdW5pY2F0aW9uOjoKKworICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oLi4uKQorICAgICAgdHJ5OgorICAgICAgICAgIG91dHMsIGVycnMgPSBwcm9jLmNvbW11bmljYXRlKHRpbWVvdXQ9MTUpCisgICAgICBleGNlcHQgVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgcHJvYy5raWxsKCkKKyAgICAgICAgICBvdXRzLCBlcnJzID0gcHJvYy5jb21tdW5pY2F0ZSgpCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGUgZGF0YSByZWFkIGlzIGJ1ZmZlcmVkIGluIG1lbW9yeSwgc28gZG8gbm90IHVzZSB0aGlzIG1ldGhvZCBpZiB0aGUgZGF0YQogICAgICAgc2l6ZSBpcyBsYXJnZSBvciB1bmxpbWl0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgorCiAKIC4uIG1ldGhvZDo6IFBvcGVuLnNlbmRfc2lnbmFsKHNpZ25hbCkKIApAQCAtOTk0LDMgKzEwOTgsOSBAQAogICAgYmFja3NsYXNoLiAgSWYgdGhlIG51bWJlciBvZiBiYWNrc2xhc2hlcyBpcyBvZGQsIHRoZSBsYXN0CiAgICBiYWNrc2xhc2ggZXNjYXBlcyB0aGUgbmV4dCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgYXMKICAgIGRlc2NyaWJlZCBpbiBydWxlIDMuCisKKworLi4gc2VlYWxzbzo6CisKKyAgIDptb2Q6YHNobGV4YAorICAgICAgTW9kdWxlIHdoaWNoIHByb3ZpZGVzIGZ1bmN0aW9uIHRvIHBhcnNlIGFuZCBlc2NhcGUgY29tbWFuZCBsaW5lcy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IDBlNGFkZWMuLmNkNmQ0YmYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjksNiArMjksMzMgQEAKICAgIGNvbW1hbmQgbGluZSwgc2VlIHRoZSA6bW9kOmBmaWxlaW5wdXRgIG1vZHVsZS4KIAogCisuLiBkYXRhOjogYmFzZV9leGVjX3ByZWZpeAorCisgICBTZXQgZHVyaW5nIFB5dGhvbiBzdGFydHVwLCBiZWZvcmUgYGBzaXRlLnB5YGAgaXMgcnVuLCB0byB0aGUgc2FtZSB2YWx1ZSBhcworICAgOmRhdGE6YGV4ZWNfcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYQorICAgOnJlZjpgdmlydHVhbCBlbnZpcm9ubWVudCA8dmVudi1kZWY+YCwgdGhlIHZhbHVlcyB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmCisgICBgYHNpdGUucHlgYCBmaW5kcyB0aGF0IGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBpbiB1c2UsIHRoZSB2YWx1ZXMgb2YKKyAgIDpkYXRhOmBwcmVmaXhgIGFuZCA6ZGF0YTpgZXhlY19wcmVmaXhgIHdpbGwgYmUgY2hhbmdlZCB0byBwb2ludCB0byB0aGUKKyAgIHZpcnR1YWwgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmRhdGE6YGJhc2VfcHJlZml4YCBhbmQKKyAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YCB3aWxsIHJlbWFpbiBwb2ludGluZyB0byB0aGUgYmFzZSBQeXRob24KKyAgIGluc3RhbGxhdGlvbiAodGhlIG9uZSB3aGljaCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCB3YXMgY3JlYXRlZCBmcm9tKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IGJhc2VfcHJlZml4CisKKyAgIFNldCBkdXJpbmcgUHl0aG9uIHN0YXJ0dXAsIGJlZm9yZSBgYHNpdGUucHlgYCBpcyBydW4sIHRvIHRoZSBzYW1lIHZhbHVlIGFzCisgICA6ZGF0YTpgcHJlZml4YC4gSWYgbm90IHJ1bm5pbmcgaW4gYSA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50IDx2ZW52LWRlZj5gLCB0aGUgdmFsdWVzCisgICB3aWxsIHN0YXkgdGhlIHNhbWU7IGlmIGBgc2l0ZS5weWBgIGZpbmRzIHRoYXQgYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGluCisgICB1c2UsIHRoZSB2YWx1ZXMgb2YgOmRhdGE6YHByZWZpeGAgYW5kIDpkYXRhOmBleGVjX3ByZWZpeGAgd2lsbCBiZSBjaGFuZ2VkIHRvCisgICBwb2ludCB0byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCwgd2hlcmVhcyA6ZGF0YTpgYmFzZV9wcmVmaXhgIGFuZAorICAgOmRhdGE6YGJhc2VfZXhlY19wcmVmaXhgIHdpbGwgcmVtYWluIHBvaW50aW5nIHRvIHRoZSBiYXNlIFB5dGhvbgorICAgaW5zdGFsbGF0aW9uICh0aGUgb25lIHdoaWNoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IHdhcyBjcmVhdGVkIGZyb20pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBkYXRhOjogYnl0ZW9yZGVyCiAKICAgIEFuIGluZGljYXRvciBvZiB0aGUgbmF0aXZlIGJ5dGUgb3JkZXIuICBUaGlzIHdpbGwgaGF2ZSB0aGUgdmFsdWUgYGAnYmlnJ2BgIG9uCkBAIC04MCw2ICsxMDcsMjIgQEAKICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgZm9yIGludGVybmFsIGFuZCBzcGVjaWFsaXplZCBwdXJwb3NlcyBvbmx5LgogCiAKKy4uIGZ1bmN0aW9uOjogX2RlYnVnbWFsbG9jc3RhdHMoKQorCisgICBQcmludCBsb3ctbGV2ZWwgaW5mb3JtYXRpb24gdG8gc3RkZXJyIGFib3V0IHRoZSBzdGF0ZSBvZiBDUHl0aG9uJ3MgbWVtb3J5CisgICBhbGxvY2F0b3IuCisKKyAgIElmIFB5dGhvbiBpcyBjb25maWd1cmVkIC0td2l0aC1weWRlYnVnLCBpdCBhbHNvIHBlcmZvcm1zIHNvbWUgZXhwZW5zaXZlCisgICBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVja3MuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisgICAuLiBpbXBsLWRldGFpbDo6CisKKyAgICAgIFRoaXMgZnVuY3Rpb24gaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbi4gIFRoZSBleGFjdCBvdXRwdXQgZm9ybWF0IGlzIG5vdAorICAgICAgZGVmaW5lZCBoZXJlLCBhbmQgbWF5IGNoYW5nZS4KKworCiAuLiBkYXRhOjogZGxsaGFuZGxlCiAKICAgIEludGVnZXIgc3BlY2lmeWluZyB0aGUgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMLiBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCkBAIC0xOTksNiArMjQyLDExIEBACiAgICBpbnN0YWxsZWQgaW4gOmZpbGU6YHtleGVjX3ByZWZpeH0vbGliL3B5dGhvbntYLll9L2xpYi1keW5sb2FkYCwgd2hlcmUgKlguWSoKICAgIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgICBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUgYXZhaWxhYmxlLCB2aWEKKyAgICAgIDpkYXRhOmBiYXNlX2V4ZWNfcHJlZml4YC4KKwogCiAuLiBkYXRhOjogZXhlY3V0YWJsZQogCkBAIC0yMzUsMTQgKzI4MywxMyBAQAogCiAuLiBkYXRhOjogZmxhZ3MKIAotICAgVGhlIHN0cnVjdCBzZXF1ZW5jZSAqZmxhZ3MqIGV4cG9zZXMgdGhlIHN0YXR1cyBvZiBjb21tYW5kIGxpbmUgZmxhZ3MuIFRoZQotICAgYXR0cmlidXRlcyBhcmUgcmVhZCBvbmx5LgorICAgVGhlIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgICpmbGFncyogZXhwb3NlcyB0aGUgc3RhdHVzIG9mIGNvbW1hbmQgbGluZQorICAgZmxhZ3MuIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCiAKICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICBhdHRyaWJ1dGUgICAgICAgICAgICAgICAgICAgICBmbGFnCiAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgOmNvbnN0OmBkZWJ1Z2AgICAgICAgICAgICAgICAgOm9wdGlvbjpgLWRgCi0gICA6Y29uc3Q6YGRpdmlzaW9uX3dhcm5pbmdgICAgICA6b3B0aW9uOmAtUWAKICAgIDpjb25zdDpgaW5zcGVjdGAgICAgICAgICAgICAgIDpvcHRpb246YC1pYAogICAgOmNvbnN0OmBpbnRlcmFjdGl2ZWAgICAgICAgICAgOm9wdGlvbjpgLWlgCiAgICA6Y29uc3Q6YG9wdGltaXplYCAgICAgICAgICAgICA6b3B0aW9uOmAtT2Agb3IgOm9wdGlvbjpgLU9PYApAQCAtMjYyLDE1ICszMDksMTggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAgICAgICBUaGUgYGBoYXNoX3JhbmRvbWl6YXRpb25gYCBhdHRyaWJ1dGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIG9ic29sZXRlIGBgZGl2aXNpb25fd2FybmluZ2BgIGF0dHJpYnV0ZS4KKwogCiAuLiBkYXRhOjogZmxvYXRfaW5mbwogCi0gICBBIHN0cnVjdHNlcSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdCBjb250YWlucyBsb3cgbGV2ZWwKLSAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsIHJlcHJlc2VudGF0aW9uLiAgVGhlIHZhbHVlcwotICAgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludCBjb25zdGFudHMgZGVmaW5lZCBpbiB0aGUgc3RhbmRhcmQKLSAgIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJyBwcm9ncmFtbWluZyBsYW5ndWFnZTsgc2VlIHNlY3Rpb24KLSAgIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQgW0M5OV1fLCAnQ2hhcmFjdGVyaXN0aWNzIG9mCi0gICBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCB0eXBlLiBJdAorICAgY29udGFpbnMgbG93IGxldmVsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcmVjaXNpb24gYW5kIGludGVybmFsCisgICByZXByZXNlbnRhdGlvbi4gIFRoZSB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdmFyaW91cyBmbG9hdGluZy1wb2ludAorICAgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIHN0YW5kYXJkIGhlYWRlciBmaWxlIDpmaWxlOmBmbG9hdC5oYCBmb3IgdGhlICdDJworICAgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2U7IHNlZSBzZWN0aW9uIDUuMi40LjIuMiBvZiB0aGUgMTk5OSBJU08vSUVDIEMgc3RhbmRhcmQKKyAgIFtDOTldXywgJ0NoYXJhY3RlcmlzdGljcyBvZiBmbG9hdGluZyB0eXBlcycsIGZvciBkZXRhaWxzLgogCiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGF0dHJpYnV0ZSAgICAgICAgICAgfCBmbG9hdC5oIG1hY3JvICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC00MDksNiArNDU5LDkgQEAKICAgIGRvZXMgbm90IGhhdmUgdG8gaG9sZCB0cnVlIGZvciB0aGlyZC1wYXJ0eSBleHRlbnNpb25zIGFzIGl0IGlzIGltcGxlbWVudGF0aW9uCiAgICBzcGVjaWZpYy4KIAorICAgT25seSB0aGUgbWVtb3J5IGNvbnN1bXB0aW9uIGRpcmVjdGx5IGF0dHJpYnV0ZWQgdG8gdGhlIG9iamVjdCBpcworICAgYWNjb3VudGVkIGZvciwgbm90IHRoZSBtZW1vcnkgY29uc3VtcHRpb24gb2Ygb2JqZWN0cyBpdCByZWZlcnMgdG8uCisKICAgIElmIGdpdmVuLCAqZGVmYXVsdCogd2lsbCBiZSByZXR1cm5lZCBpZiB0aGUgb2JqZWN0IGRvZXMgbm90IHByb3ZpZGUgbWVhbnMgdG8KICAgIHJldHJpZXZlIHRoZSBzaXplLiAgT3RoZXJ3aXNlIGEgOmV4YzpgVHlwZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIApAQCAtNTIwLDggKzU3Myw5IEBACiAKIC4uIGRhdGE6OiBoYXNoX2luZm8KIAotICAgQSBzdHJ1Y3RzZXEgZ2l2aW5nIHBhcmFtZXRlcnMgb2YgdGhlIG51bWVyaWMgaGFzaCBpbXBsZW1lbnRhdGlvbi4gIEZvcgotICAgbW9yZSBkZXRhaWxzIGFib3V0IGhhc2hpbmcgb2YgbnVtZXJpYyB0eXBlcywgc2VlIDpyZWY6YG51bWVyaWMtaGFzaGAuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIGdpdmluZyBwYXJhbWV0ZXJzIG9mIHRoZSBudW1lcmljIGhhc2gKKyAgIGltcGxlbWVudGF0aW9uLiAgRm9yIG1vcmUgZGV0YWlscyBhYm91dCBoYXNoaW5nIG9mIG51bWVyaWMgdHlwZXMsIHNlZQorICAgOnJlZjpgbnVtZXJpYy1oYXNoYC4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYXR0cmlidXRlICAgICAgICAgICB8IGV4cGxhbmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC01NTYsOCArNjEwLDggQEAKIAogICAgVGhpcyBpcyBjYWxsZWQgYGBoZXh2ZXJzaW9uYGAgc2luY2UgaXQgb25seSByZWFsbHkgbG9va3MgbWVhbmluZ2Z1bCB3aGVuIHZpZXdlZAogICAgYXMgdGhlIHJlc3VsdCBvZiBwYXNzaW5nIGl0IHRvIHRoZSBidWlsdC1pbiA6ZnVuYzpgaGV4YCBmdW5jdGlvbi4gIFRoZQotICAgc3RydWN0IHNlcXVlbmNlICA6ZGF0YTpgc3lzLnZlcnNpb25faW5mb2AgbWF5IGJlIHVzZWQgZm9yIGEgbW9yZSBodW1hbi1mcmllbmRseQotICAgZW5jb2Rpbmcgb2YgdGhlIHNhbWUgaW5mb3JtYXRpb24uCisgICA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gIG1heSBiZSB1c2VkIGZvciBhIG1vcmUKKyAgIGh1bWFuLWZyaWVuZGx5IGVuY29kaW5nIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uLgogCiAgICBUaGUgYGBoZXh2ZXJzaW9uYGAgaXMgYSAzMi1iaXQgbnVtYmVyIHdpdGggdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAKQEAgLTU4MywxMCArNjM3LDUxIEBACiAKICAgIFRodXMgYGAyLjEuMGEzYGAgaXMgaGV4dmVyc2lvbiBgYDB4MDIwMTAwYTNgYC4KIAorCisuLiBkYXRhOjogaW1wbGVtZW50YXRpb24KKworICAgQW4gb2JqZWN0IGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZQorICAgY3VycmVudGx5IHJ1bm5pbmcgUHl0aG9uIGludGVycHJldGVyLiAgVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZQorICAgcmVxdWlyZWQgdG8gZXhpc3QgaW4gYWxsIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCisKKyAgICpuYW1lKiBpcyB0aGUgaW1wbGVtZW50YXRpb24ncyBpZGVudGlmaWVyLCBlLmcuIGBgJ2NweXRob24nYGAuICBUaGUgYWN0dWFsCisgICBzdHJpbmcgaXMgZGVmaW5lZCBieSB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uLCBidXQgaXQgaXMgZ3VhcmFudGVlZCB0byBiZQorICAgbG93ZXIgY2FzZS4KKworICAgKnZlcnNpb24qIGlzIGEgbmFtZWQgdHVwbGUsIGluIHRoZSBzYW1lIGZvcm1hdCBhcworICAgOmRhdGE6YHN5cy52ZXJzaW9uX2luZm9gLiAgSXQgcmVwcmVzZW50cyB0aGUgdmVyc2lvbiBvZiB0aGUgUHl0aG9uCisgICAqaW1wbGVtZW50YXRpb24qLiAgVGhpcyBoYXMgYSBkaXN0aW5jdCBtZWFuaW5nIGZyb20gdGhlIHNwZWNpZmljCisgICB2ZXJzaW9uIG9mIHRoZSBQeXRob24gKmxhbmd1YWdlKiB0byB3aGljaCB0aGUgY3VycmVudGx5IHJ1bm5pbmcKKyAgIGludGVycHJldGVyIGNvbmZvcm1zLCB3aGljaCBgYHN5cy52ZXJzaW9uX2luZm9gYCByZXByZXNlbnRzLiAgRm9yCisgICBleGFtcGxlLCBmb3IgUHlQeSAxLjggYGBzeXMuaW1wbGVtZW50YXRpb24udmVyc2lvbmBgIG1pZ2h0IGJlCisgICBgYHN5cy52ZXJzaW9uX2luZm8oMSwgOCwgMCwgJ2ZpbmFsJywgMClgYCwgd2hlcmVhcyBgYHN5cy52ZXJzaW9uX2luZm9gYAorICAgd291bGQgYmUgYGBzeXMudmVyc2lvbl9pbmZvKDIsIDcsIDIsICdmaW5hbCcsIDApYGAuICBGb3IgQ1B5dGhvbiB0aGV5CisgICBhcmUgdGhlIHNhbWUgdmFsdWUsIHNpbmNlIGl0IGlzIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCisKKyAgICpoZXh2ZXJzaW9uKiBpcyB0aGUgaW1wbGVtZW50YXRpb24gdmVyc2lvbiBpbiBoZXhhZGVjaW1hbCBmb3JtYXQsIGxpa2UKKyAgIDpkYXRhOmBzeXMuaGV4dmVyc2lvbmAuCisKKyAgICpjYWNoZV90YWcqIGlzIHRoZSB0YWcgdXNlZCBieSB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpbiB0aGUgZmlsZW5hbWVzIG9mCisgICBjYWNoZWQgbW9kdWxlcy4gIEJ5IGNvbnZlbnRpb24sIGl0IHdvdWxkIGJlIGEgY29tcG9zaXRlIG9mIHRoZQorICAgaW1wbGVtZW50YXRpb24ncyBuYW1lIGFuZCB2ZXJzaW9uLCBsaWtlIGBgJ2NweXRob24tMzMnYGAuICBIb3dldmVyLCBhCisgICBQeXRob24gaW1wbGVtZW50YXRpb24gbWF5IHVzZSBzb21lIG90aGVyIHZhbHVlIGlmIGFwcHJvcHJpYXRlLiAgSWYKKyAgIGBgY2FjaGVfdGFnYGAgaXMgc2V0IHRvIGBgTm9uZWBgLCBpdCBpbmRpY2F0ZXMgdGhhdCBtb2R1bGUgY2FjaGluZyBzaG91bGQKKyAgIGJlIGRpc2FibGVkLgorCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8KKyAgIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uICBUaGVzZSBub24tc3RhbmRhcmQgYXR0cmlidXRlcyBtdXN0IHN0YXJ0IHdpdGgKKyAgIGFuIHVuZGVyc2NvcmUsIGFuZCBhcmUgbm90IGRlc2NyaWJlZCBoZXJlLiAgUmVnYXJkbGVzcyBvZiBpdHMgY29udGVudHMsCisgICA6ZGF0YTpgc3lzLmltcGxlbWVudGF0aW9uYCB3aWxsIG5vdCBjaGFuZ2UgZHVyaW5nIGEgcnVuIG9mIHRoZSBpbnRlcnByZXRlciwKKyAgIG5vciBiZXR3ZWVuIGltcGxlbWVudGF0aW9uIHZlcnNpb25zLiAgKEl0IG1heSBjaGFuZ2UgYmV0d2VlbiBQeXRob24KKyAgIGxhbmd1YWdlIHZlcnNpb25zLCBob3dldmVyLikgIFNlZSBgUEVQIDQyMWAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGRhdGE6OiBpbnRfaW5mbwogCi0gICBBIHN0cnVjdCBzZXF1ZW5jZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbidzCi0gICBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBpbnRlZ2Vycy4gIFRoZSBhdHRyaWJ1dGVzIGFyZSByZWFkIG9ubHkuCisgICBBIDp0ZXJtOmBzdHJ1Y3Qgc2VxdWVuY2VgIHRoYXQgaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgUHl0aG9uJ3MgaW50ZXJuYWwKKyAgIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4KIAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CkBAIC02NDEsOSArNzM2LDEzIEBACiAKIC4uIGRhdGE6OiBtYXh1bmljb2RlCiAKLSAgIEFuIGludGVnZXIgZ2l2aW5nIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBjb2RlIHBvaW50IGZvciBhIFVuaWNvZGUgY2hhcmFjdGVyLiAgVGhlCi0gICB2YWx1ZSBvZiB0aGlzIGRlcGVuZHMgb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgc3BlY2lmaWVzIHdoZXRoZXIgVW5pY29kZQotICAgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGFzIFVDUy0yIG9yIFVDUy00LgorICAgQW4gaW50ZWdlciBnaXZpbmcgdGhlIHZhbHVlIG9mIHRoZSBsYXJnZXN0IFVuaWNvZGUgY29kZSBwb2ludCwKKyAgIGkuZS4gYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYCBpbiBoZXhhZGVjaW1hbCkuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBCZWZvcmUgOnBlcDpgMzkzYCwgYGBzeXMubWF4dW5pY29kZWBgIHVzZWQgdG8gYmUgZWl0aGVyIGBgMHhGRkZGYGAKKyAgICAgIG9yIGBgMHgxMEZGRkZgYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0IHNwZWNpZmllZAorICAgICAgd2hldGhlciBVbmljb2RlIGNoYXJhY3RlcnMgd2VyZSBzdG9yZWQgYXMgVUNTLTIgb3IgVUNTLTQuCiAKIAogLi4gZGF0YTo6IG1ldGFfcGF0aApAQCAtNzE4LDM2ICs4MTcsMzUgQEAKICAgIFRoaXMgc3RyaW5nIGNvbnRhaW5zIGEgcGxhdGZvcm0gaWRlbnRpZmllciB0aGF0IGNhbiBiZSB1c2VkIHRvIGFwcGVuZAogICAgcGxhdGZvcm0tc3BlY2lmaWMgY29tcG9uZW50cyB0byA6ZGF0YTpgc3lzLnBhdGhgLCBmb3IgaW5zdGFuY2UuCiAKLSAgIEZvciBtb3N0IFVuaXggc3lzdGVtcywgdGhpcyBpcyB0aGUgbG93ZXJjYXNlZCBPUyBuYW1lIGFzIHJldHVybmVkIGJ5IGBgdW5hbWUKLSAgIC1zYGAgd2l0aCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgdmVyc2lvbiBhcyByZXR1cm5lZCBieSBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsCi0gICBlLmcuIGBgJ3N1bm9zNSdgYCwgKmF0IHRoZSB0aW1lIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8KLSAgIHRlc3QgZm9yIGEgc3BlY2lmaWMgc3lzdGVtIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlCi0gICBmb2xsb3dpbmcgaWRpb206OgorICAgRm9yIFVuaXggc3lzdGVtcywgZXhjZXB0IG9uIExpbnV4LCB0aGlzIGlzIHRoZSBsb3dlcmNhc2VkIE9TIG5hbWUgYXMKKyAgIHJldHVybmVkIGJ5IGBgdW5hbWUgLXNgYCB3aXRoIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB2ZXJzaW9uIGFzIHJldHVybmVkIGJ5CisgICBgYHVuYW1lIC1yYGAgYXBwZW5kZWQsIGUuZy4gYGAnc3Vub3M1J2BgIG9yIGBgJ2ZyZWVic2Q4J2BgLCAqYXQgdGhlIHRpbWUKKyAgIHdoZW4gUHl0aG9uIHdhcyBidWlsdCouICBVbmxlc3MgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBzeXN0ZW0KKyAgIHZlcnNpb24sIGl0IGlzIHRoZXJlZm9yZSByZWNvbW1lbmRlZCB0byB1c2UgdGhlIGZvbGxvd2luZyBpZGlvbTo6CiAKICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJyk6CiAgICAgICAgICAgIyBGcmVlQlNELXNwZWNpZmljIGNvZGUgaGVyZS4uLgogICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAjIExpbnV4LXNwZWNpZmljIGNvZGUgaGVyZS4uLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMi4yCi0gICAgICBTaW5jZSBsb3RzIG9mIGNvZGUgY2hlY2sgZm9yIGBgc3lzLnBsYXRmb3JtID09ICdsaW51eDInYGAsIGFuZCB0aGVyZSBpcwotICAgICAgbm8gZXNzZW50aWFsIGNoYW5nZSBiZXR3ZWVuIExpbnV4IDIueCBhbmQgMy54LCBgYHN5cy5wbGF0Zm9ybWBgIGlzIGFsd2F5cwotICAgICAgc2V0IHRvIGBgJ2xpbnV4MidgYCwgZXZlbiBvbiBMaW51eCAzLnguICBJbiBQeXRob24gMy4zIGFuZCBsYXRlciwgdGhlCi0gICAgICB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBzZXQgdG8gYGAnbGludXgnYGAsIHNvIGl0IGlzIHJlY29tbWVuZGVkIHRvIGFsd2F5cwotICAgICAgdXNlIHRoZSBgYHN0YXJ0c3dpdGhgYCBpZGlvbSBwcmVzZW50ZWQgYWJvdmUuCi0KICAgIEZvciBvdGhlciBzeXN0ZW1zLCB0aGUgdmFsdWVzIGFyZToKIAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIFN5c3RlbSAgICAgICAgICAgICAgICAgOmRhdGE6YHBsYXRmb3JtYCB2YWx1ZQotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgIExpbnV4ICgyLnggKmFuZCogMy54KSAgYGAnbGludXgyJ2BgCi0gICBXaW5kb3dzICAgICAgICAgICAgICAgIGBgJ3dpbjMyJ2BgCi0gICBXaW5kb3dzL0N5Z3dpbiAgICAgICAgIGBgJ2N5Z3dpbidgYAotICAgTWFjIE9TIFggICAgICAgICAgICAgICBgYCdkYXJ3aW4nYGAKLSAgIE9TLzIgICAgICAgICAgICAgICAgICAgYGAnb3MyJ2BgCi0gICBPUy8yIEVNWCAgICAgICAgICAgICAgIGBgJ29zMmVteCdgYAotICAgPT09PT09PT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBTeXN0ZW0gICAgICAgICAgIDpkYXRhOmBwbGF0Zm9ybWAgdmFsdWUKKyAgID09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICBMaW51eCAgICAgICAgICAgIGBgJ2xpbnV4J2BgCisgICBXaW5kb3dzICAgICAgICAgIGBgJ3dpbjMyJ2BgCisgICBXaW5kb3dzL0N5Z3dpbiAgIGBgJ2N5Z3dpbidgYAorICAgTWFjIE9TIFggICAgICAgICBgYCdkYXJ3aW4nYGAKKyAgIE9TLzIgICAgICAgICAgICAgYGAnb3MyJ2BgCisgICBPUy8yIEVNWCAgICAgICAgIGBgJ29zMmVteCdgYAorICAgPT09PT09PT09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIE9uIExpbnV4LCA6YXR0cjpgc3lzLnBsYXRmb3JtYCBkb2Vzbid0IGNvbnRhaW4gdGhlIG1ham9yIHZlcnNpb24gYW55bW9yZS4KKyAgICAgIEl0IGlzIGFsd2F5cyBgYCdsaW51eCdgYCwgaW5zdGVhZCBvZiBgYCdsaW51eDInYGAgb3IgYGAnbGludXgzJ2BgLiAgU2luY2UKKyAgICAgIG9sZGVyIFB5dGhvbiB2ZXJzaW9ucyBpbmNsdWRlIHRoZSB2ZXJzaW9uIG51bWJlciwgaXQgaXMgcmVjb21tZW5kZWQgdG8KKyAgICAgIGFsd2F5cyB1c2UgdGhlIGBgc3RhcnRzd2l0aGBgIGlkaW9tIHByZXNlbnRlZCBhYm92ZS4KIAogICAgLi4gc2VlYWxzbzo6CiAKQEAgLTc2NCwxMSArODYyLDE2IEBACiAgICBpbmRlcGVuZGVudCBQeXRob24gZmlsZXMgYXJlIGluc3RhbGxlZDsgYnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgc3RyaW5nCiAgICBgYCcvdXNyL2xvY2FsJ2BgLiAgVGhpcyBjYW4gYmUgc2V0IGF0IGJ1aWxkIHRpbWUgd2l0aCB0aGUgYGAtLXByZWZpeGBgCiAgICBhcmd1bWVudCB0byB0aGUgOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0LiAgVGhlIG1haW4gY29sbGVjdGlvbiBvZiBQeXRob24KLSAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YGAKKyAgIGxpYnJhcnkgbW9kdWxlcyBpcyBpbnN0YWxsZWQgaW4gdGhlIGRpcmVjdG9yeSA6ZmlsZTpge3ByZWZpeH0vbGliL3B5dGhvbntYLll9YAogICAgd2hpbGUgdGhlIHBsYXRmb3JtIGluZGVwZW5kZW50IGhlYWRlciBmaWxlcyAoYWxsIGV4Y2VwdCA6ZmlsZTpgcHljb25maWcuaGApIGFyZQogICAgc3RvcmVkIGluIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbntYLll9YCwgd2hlcmUgKlguWSogaXMgdGhlIHZlcnNpb24KICAgIG51bWJlciBvZiBQeXRob24sIGZvciBleGFtcGxlIGBgMy4yYGAuCiAKKyAgIC4uIG5vdGU6OiBJZiBhIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnQgPHZlbnYtZGVmPmAgaXMgaW4gZWZmZWN0LCB0aGlzCisgICAgICB2YWx1ZSB3aWxsIGJlIGNoYW5nZWQgaW4gYGBzaXRlLnB5YGAgdG8gcG9pbnQgdG8gdGhlIHZpcnR1YWwKKyAgICAgIGVudmlyb25tZW50LiBUaGUgdmFsdWUgZm9yIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIHdpbGwgc3RpbGwgYmUKKyAgICAgIGF2YWlsYWJsZSwgdmlhIDpkYXRhOmBiYXNlX3ByZWZpeGAuCisKIAogLi4gZGF0YTo6IHBzMQogICAgICAgICAgIHBzMgpAQCAtODA2LDExICs5MDksMTEgQEAKICAgIHRoZSBpbnRlcnByZXRlciBsb2FkcyBleHRlbnNpb24gbW9kdWxlcy4gIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyB3aWxsIGVuYWJsZSBhCiAgICBsYXp5IHJlc29sdmluZyBvZiBzeW1ib2xzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlLCBpZiBjYWxsZWQgYXMKICAgIGBgc3lzLnNldGRsb3BlbmZsYWdzKDApYGAuICBUbyBzaGFyZSBzeW1ib2xzIGFjcm9zcyBleHRlbnNpb24gbW9kdWxlcywgY2FsbCBhcwotICAgYGBzeXMuc2V0ZGxvcGVuZmxhZ3MoY3R5cGVzLlJUTERfR0xPQkFMKWBgLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZQotICAgZmxhZyBtb2R1bGVzIGNhbiBiZSBlaXRoZXIgZm91bmQgaW4gdGhlIDptb2Q6YGN0eXBlc2AgbW9kdWxlLCBvciBpbiB0aGUgOm1vZDpgRExGQ05gCi0gICBtb2R1bGUuIElmIDptb2Q6YERMRkNOYCBpcyBub3QgYXZhaWxhYmxlLCBpdCBjYW4gYmUgZ2VuZXJhdGVkIGZyb20KLSAgIDpmaWxlOmAvdXNyL2luY2x1ZGUvZGxmY24uaGAgdXNpbmcgdGhlIDpwcm9ncmFtOmBoMnB5YCBzY3JpcHQuIEF2YWlsYWJpbGl0eToKLSAgIFVuaXguCisgICBgYHN5cy5zZXRkbG9wZW5mbGFncyhvcy5SVExEX0dMT0JBTClgYC4gIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZyBtb2R1bGVzCisgICBjYW4gYmUgZm91bmQgaW4gdGhlIDptb2Q6YG9zYCBtb2R1bGUgKGBgUlRMRF94eHhgYCBjb25zdGFudHMsIGUuZy4KKyAgIDpkYXRhOmBvcy5SVExEX0xBWllgKS4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCiAuLiBmdW5jdGlvbjo6IHNldHByb2ZpbGUocHJvZmlsZWZ1bmMpCiAKQEAgLTEwMDMsMjIgKzExMDYsMzMgQEAKICAgICAgICB0byBhIGNvbnNvbGUgYW5kIFB5dGhvbiBhcHBzIHN0YXJ0ZWQgd2l0aCA6cHJvZ3JhbTpgcHl0aG9ud2AuCiAKIAotLi4gZGF0YTo6IHN1YnZlcnNpb24KKy4uIGRhdGE6OiB0aHJlYWRfaW5mbwogCi0gICBBIHRyaXBsZSAocmVwbywgYnJhbmNoLCB2ZXJzaW9uKSByZXByZXNlbnRpbmcgdGhlIFN1YnZlcnNpb24gaW5mb3JtYXRpb24gb2YgdGhlCi0gICBQeXRob24gaW50ZXJwcmV0ZXIuICpyZXBvKiBpcyB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeSwgYGAnQ1B5dGhvbidgYC4KLSAgICpicmFuY2gqIGlzIGEgc3RyaW5nIG9mIG9uZSBvZiB0aGUgZm9ybXMgYGAndHJ1bmsnYGAsIGBgJ2JyYW5jaGVzL25hbWUnYGAgb3IKLSAgIGBgJ3RhZ3MvbmFtZSdgYC4gKnZlcnNpb24qIGlzIHRoZSBvdXRwdXQgb2YgYGBzdm52ZXJzaW9uYGAsIGlmIHRoZSBpbnRlcnByZXRlcgotICAgd2FzIGJ1aWx0IGZyb20gYSBTdWJ2ZXJzaW9uIGNoZWNrb3V0OyBpdCBjb250YWlucyB0aGUgcmV2aXNpb24gbnVtYmVyIChyYW5nZSkKLSAgIGFuZCBwb3NzaWJseSBhIHRyYWlsaW5nICdNJyBpZiB0aGVyZSB3ZXJlIGxvY2FsIG1vZGlmaWNhdGlvbnMuIElmIHRoZSB0cmVlIHdhcwotICAgZXhwb3J0ZWQgKG9yIHN2bnZlcnNpb24gd2FzIG5vdCBhdmFpbGFibGUpLCBpdCBpcyB0aGUgcmV2aXNpb24gb2YKLSAgIGBgSW5jbHVkZS9wYXRjaGxldmVsLmhgYCBpZiB0aGUgYnJhbmNoIGlzIGEgdGFnLiBPdGhlcndpc2UsIGl0IGlzIGBgTm9uZWBgLgorICAgQSA6dGVybTpgc3RydWN0IHNlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQKKyAgIGltcGxlbWVudGF0aW9uLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy4yLjEKLSAgICAgIFB5dGhvbiBpcyBub3cgYGRldmVsb3BlZCA8aHR0cDovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8+YF8gdXNpbmcKLSAgICAgIE1lcmN1cmlhbC4gIEluIHJlY2VudCBQeXRob24gMy4yIGJ1Z2ZpeCByZWxlYXNlcywgOmRhdGE6YHN1YnZlcnNpb25gCi0gICAgICB0aGVyZWZvcmUgY29udGFpbnMgcGxhY2Vob2xkZXIgaW5mb3JtYXRpb24uICBJdCBpcyByZW1vdmVkIGluIFB5dGhvbgotICAgICAgMy4zLgorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IEF0dHJpYnV0ZSAgICAgICAgfCBFeHBsYW5hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCA6Y29uc3Q6YG5hbWVgICAgIHwgTmFtZSBvZiB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ250J2BgOiBXaW5kb3dzIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnb3MyJ2BgOiBPUy8yIHRocmVhZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdwdGhyZWFkJ2BgOiBQT1NJWCB0aHJlYWRzICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAqIGBgJ3NvbGFyaXMnYGA6IFNvbGFyaXMgdGhyZWFkcyAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgbG9ja2AgICAgfCBOYW1lIG9mIHRoZSBsb2NrIGltcGxlbWVudGF0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGAnc2VtYXBob3JlJ2BgOiBhIGxvY2sgdXNlcyBhIHNlbWFwaG9yZSAgICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgfCAgKiBgYCdtdXRleCtjb25kJ2BgOiBhIGxvY2sgdXNlcyBhIG11dGV4ICAgICAgICAgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICB8ICAgIGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgICogYGBOb25lYGAgaWYgdGhpcyBpbmZvcm1hdGlvbiBpcyB1bmtub3duICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmB2ZXJzaW9uYCB8IE5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5LiBJdCBpcyBhIHN0cmluZywgfAorICAgfCAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgdGhlc2UgaW5mb3JtYXRpb25zIGFyZSB1bmtub3duLiAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gZGF0YTo6IHRyYWNlYmFja2xpbWl0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0IGIvRG9jL2xpYnJhcnkvc3lzbG9nLnJzdAppbmRleCA5NzRlY2Y5Li42ZTkwZGMwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zeXNsb2cucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N5c2xvZy5yc3QKQEAgLTc5LDEyICs3OSwxNCBAQAogRmFjaWxpdGllczoKICAgIDpjb25zdDpgTE9HX0tFUk5gLCA6Y29uc3Q6YExPR19VU0VSYCwgOmNvbnN0OmBMT0dfTUFJTGAsIDpjb25zdDpgTE9HX0RBRU1PTmAsCiAgICA6Y29uc3Q6YExPR19BVVRIYCwgOmNvbnN0OmBMT0dfTFBSYCwgOmNvbnN0OmBMT0dfTkVXU2AsIDpjb25zdDpgTE9HX1VVQ1BgLAotICAgOmNvbnN0OmBMT0dfQ1JPTmAsIDpjb25zdDpgTE9HX1NZU0xPR2AgYW5kIDpjb25zdDpgTE9HX0xPQ0FMMGAgdG8KLSAgIDpjb25zdDpgTE9HX0xPQ0FMN2AuCisgICA6Y29uc3Q6YExPR19DUk9OYCwgOmNvbnN0OmBMT0dfU1lTTE9HYCwgOmNvbnN0OmBMT0dfTE9DQUwwYCB0bworICAgOmNvbnN0OmBMT0dfTE9DQUw3YCwgYW5kLCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLAorICAgOmNvbnN0OmBMT0dfQVVUSFBSSVZgLgogCiBMb2cgb3B0aW9uczoKLSAgIDpjb25zdDpgTE9HX1BJRGAsIDpjb25zdDpgTE9HX0NPTlNgLCA6Y29uc3Q6YExPR19OREVMQVlgLCA6Y29uc3Q6YExPR19OT1dBSVRgCi0gICBhbmQgOmNvbnN0OmBMT0dfUEVSUk9SYCBpZiBkZWZpbmVkIGluIGBgPHN5c2xvZy5oPmBgLgorICAgOmNvbnN0OmBMT0dfUElEYCwgOmNvbnN0OmBMT0dfQ09OU2AsIDpjb25zdDpgTE9HX05ERUxBWWAsIGFuZCwgaWYgZGVmaW5lZAorICAgaW4gYGA8c3lzbG9nLmg+YGAsIDpjb25zdDpgTE9HX09ERUxBWWAsIDpjb25zdDpgTE9HX05PV0FJVGAsIGFuZAorICAgOmNvbnN0OmBMT0dfUEVSUk9SYC4KIAogCiBFeGFtcGxlcwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGFyZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAppbmRleCA0NmU0OTAwLi44NmRkMzNkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS90YXJmaWxlLnJzdApAQCAtMTMsMTMgKzEzLDEzIEBACiAtLS0tLS0tLS0tLS0tLQogCiBUaGUgOm1vZDpgdGFyZmlsZWAgbW9kdWxlIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJlYWQgYW5kIHdyaXRlIHRhcgotYXJjaGl2ZXMsIGluY2x1ZGluZyB0aG9zZSB1c2luZyBnemlwIG9yIGJ6MiBjb21wcmVzc2lvbi4KK2FyY2hpdmVzLCBpbmNsdWRpbmcgdGhvc2UgdXNpbmcgZ3ppcCwgYnoyIGFuZCBsem1hIGNvbXByZXNzaW9uLgogVXNlIHRoZSA6bW9kOmB6aXBmaWxlYCBtb2R1bGUgdG8gcmVhZCBvciB3cml0ZSA6ZmlsZTpgLnppcGAgZmlsZXMsIG9yIHRoZQogaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyBpbiA6cmVmOmBzaHV0aWwgPGFyY2hpdmluZy1vcGVyYXRpb25zPmAuCiAKIFNvbWUgZmFjdHMgYW5kIGZpZ3VyZXM6CiAKLSogcmVhZHMgYW5kIHdyaXRlcyA6bW9kOmBnemlwYCBhbmQgOm1vZDpgYnoyYCBjb21wcmVzc2VkIGFyY2hpdmVzLgorKiByZWFkcyBhbmQgd3JpdGVzIDptb2Q6YGd6aXBgLCA6bW9kOmBiejJgIGFuZCA6bW9kOmBsem1hYCBjb21wcmVzc2VkIGFyY2hpdmVzLgogCiAqIHJlYWQvd3JpdGUgc3VwcG9ydCBmb3IgdGhlIFBPU0lYLjEtMTk4OCAodXN0YXIpIGZvcm1hdC4KIApAQCAtMzMsNiArMzMsOSBAQAogICBjaGFyYWN0ZXIgZGV2aWNlcyBhbmQgYmxvY2sgZGV2aWNlcyBhbmQgaXMgYWJsZSB0byBhY3F1aXJlIGFuZCByZXN0b3JlIGZpbGUKICAgaW5mb3JtYXRpb24gbGlrZSB0aW1lc3RhbXAsIGFjY2VzcyBwZXJtaXNzaW9ucyBhbmQgb3duZXIuCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICBBZGRlZCBzdXBwb3J0IGZvciA6bW9kOmBsem1hYCBjb21wcmVzc2lvbi4KKwogCiAuLiBmdW5jdGlvbjo6IG9wZW4obmFtZT1Ob25lLCBtb2RlPSdyJywgZmlsZW9iaj1Ob25lLCBidWZzaXplPTEwMjQwLCBcKlwqa3dhcmdzKQogCkBAIC01Niw2ICs1OSw4IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAncjpiejInYGAgICAgICB8IE9wZW4gZm9yIHJlYWRpbmcgd2l0aCBiemlwMiBjb21wcmVzc2lvbi4gICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3I6eHonYGAgICAgICAgfCBPcGVuIGZvciByZWFkaW5nIHdpdGggbHptYSBjb21wcmVzc2lvbi4gICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCBgYCdhJyBvciAnYTonYGAgIHwgT3BlbiBmb3IgYXBwZW5kaW5nIHdpdGggbm8gY29tcHJlc3Npb24uIFRoZSB8CiAgICB8ICAgICAgICAgICAgICAgICAgfCBmaWxlIGlzIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhpc3QuICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtNjUsMTEgKzcwLDEzIEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAndzpiejInYGAgICAgICB8IE9wZW4gZm9yIGJ6aXAyIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgJ3c6eHonYGAgICAgICAgfCBPcGVuIGZvciBsem1hIGNvbXByZXNzZWQgd3JpdGluZy4gICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICBOb3RlIHRoYXQgYGAnYTpneidgYCBvciBgYCdhOmJ6MidgYCBpcyBub3QgcG9zc2libGUuIElmICptb2RlKiBpcyBub3Qgc3VpdGFibGUKLSAgIHRvIG9wZW4gYSBjZXJ0YWluIChjb21wcmVzc2VkKSBmaWxlIGZvciByZWFkaW5nLCA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlCi0gICAqbW9kZSogYGAncidgYCB0byBhdm9pZCB0aGlzLiAgSWYgYSBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwKLSAgIDpleGM6YENvbXByZXNzaW9uRXJyb3JgIGlzIHJhaXNlZC4KKyAgIE5vdGUgdGhhdCBgYCdhOmd6J2BgLCBgYCdhOmJ6MidgYCBvciBgYCdhOnh6J2BgIGlzIG5vdCBwb3NzaWJsZS4gSWYgKm1vZGUqCisgICBpcyBub3Qgc3VpdGFibGUgdG8gb3BlbiBhIGNlcnRhaW4gKGNvbXByZXNzZWQpIGZpbGUgZm9yIHJlYWRpbmcsCisgICA6ZXhjOmBSZWFkRXJyb3JgIGlzIHJhaXNlZC4gVXNlICptb2RlKiBgYCdyJ2BgIHRvIGF2b2lkIHRoaXMuICBJZiBhCisgICBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCwgOmV4YzpgQ29tcHJlc3Npb25FcnJvcmAgaXMgcmFpc2VkLgogCiAgICBJZiAqZmlsZW9iaiogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIGFuIGFsdGVybmF0aXZlIHRvIGEgOnRlcm06YGZpbGUgb2JqZWN0YAogICAgb3BlbmVkIGluIGJpbmFyeSBtb2RlIGZvciAqbmFtZSouIEl0IGlzIHN1cHBvc2VkIHRvIGJlIGF0IHBvc2l0aW9uIDAuCkBAIC0xMDAsNiArMTA3LDkgQEAKICAgIHwgYGAncnxiejInYGAgfCBPcGVuIGEgYnppcDIgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgfAogICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgYGAncnx4eidgYCAgfCBPcGVuIGEgbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICAgfAorICAgfCAgICAgICAgICAgICB8IHJlYWRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnd3wnYGAgICAgfCBPcGVuIGFuIHVuY29tcHJlc3NlZCAqc3RyZWFtKiBmb3Igd3JpdGluZy4gfAogICAgKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IGBgJ3d8Z3onYGAgIHwgT3BlbiBhIGd6aXAgY29tcHJlc3NlZCAqc3RyZWFtKiBmb3IgICAgICAgIHwKQEAgLTEwOCw2ICsxMTgsOSBAQAogICAgfCBgYCd3fGJ6MidgYCB8IE9wZW4gYSBiemlwMiBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CiAgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCd3fHh6J2BgICB8IE9wZW4gYW4gbHptYSBjb21wcmVzc2VkICpzdHJlYW0qIGZvciAgICAgICB8CisgICB8ICAgICAgICAgICAgIHwgd3JpdGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIGNsYXNzOjogVGFyRmlsZQpAQCAtMjYzLDkgKzI3Niw5IEBACiAKICAgIElmICplcnJvcmxldmVsKiBpcyBgYDBgYCwgYWxsIGVycm9ycyBhcmUgaWdub3JlZCB3aGVuIHVzaW5nIDptZXRoOmBUYXJGaWxlLmV4dHJhY3RgLgogICAgTmV2ZXJ0aGVsZXNzLCB0aGV5IGFwcGVhciBhcyBlcnJvciBtZXNzYWdlcyBpbiB0aGUgZGVidWcgb3V0cHV0LCB3aGVuIGRlYnVnZ2luZwotICAgaXMgZW5hYmxlZC4gIElmIGBgMWBgLCBhbGwgKmZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcyA6ZXhjOmBPU0Vycm9yYCBvcgotICAgOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9ucy4gSWYgYGAyYGAsIGFsbCAqbm9uLWZhdGFsKiBlcnJvcnMgYXJlIHJhaXNlZCBhcwotICAgOmV4YzpgVGFyRXJyb3JgIGV4Y2VwdGlvbnMgYXMgd2VsbC4KKyAgIGlzIGVuYWJsZWQuICBJZiBgYDFgYCwgYWxsICpmYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgT1NFcnJvcmAKKyAgIGV4Y2VwdGlvbnMuIElmIGBgMmBgLCBhbGwgKm5vbi1mYXRhbCogZXJyb3JzIGFyZSByYWlzZWQgYXMgOmV4YzpgVGFyRXJyb3JgCisgICBleGNlcHRpb25zIGFzIHdlbGwuCiAKICAgIFRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBhcmd1bWVudHMgZGVmaW5lIHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgdG8gYmUKICAgIHVzZWQgZm9yIHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgYXJjaGl2ZSBhbmQgaG93IGNvbnZlcnNpb24gZXJyb3JzIGFyZSBnb2luZwpAQCAtMzYzLDE1ICszNzYsMTIgQEAKIC4uIG1ldGhvZDo6IFRhckZpbGUuZXh0cmFjdGZpbGUobWVtYmVyKQogCiAgICBFeHRyYWN0IGEgbWVtYmVyIGZyb20gdGhlIGFyY2hpdmUgYXMgYSBmaWxlIG9iamVjdC4gKm1lbWJlciogbWF5IGJlIGEgZmlsZW5hbWUKLSAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlLCBhIDp0ZXJtOmBmaWxlLWxpa2UKLSAgIG9iamVjdGAgaXMgcmV0dXJuZWQuIElmICptZW1iZXIqIGlzIGEgbGluaywgYSBmaWxlLWxpa2Ugb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20KLSAgIHRoZSBsaW5rJ3MgdGFyZ2V0LiBJZiAqbWVtYmVyKiBpcyBub25lIG9mIHRoZSBhYm92ZSwgOmNvbnN0OmBOb25lYCBpcyByZXR1cm5lZC4KKyAgIG9yIGEgOmNsYXNzOmBUYXJJbmZvYCBvYmplY3QuIElmICptZW1iZXIqIGlzIGEgcmVndWxhciBmaWxlIG9yIGEgbGluaywgYW4KKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCA6Y29uc3Q6YE5vbmVgIGlzCisgICByZXR1cm5lZC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIFRoZSBmaWxlLWxpa2Ugb2JqZWN0IGlzIHJlYWQtb25seS4gIEl0IHByb3ZpZGVzIHRoZSBtZXRob2RzCi0gICAgICA6bWV0aDpgcmVhZGAsIDptZXRoOmByZWFkbGluZWAsIDptZXRoOmByZWFkbGluZXNgLCA6bWV0aDpgc2Vla2AsIDptZXRoOmB0ZWxsYCwKLSAgICAgIGFuZCA6bWV0aDpgY2xvc2VgLCBhbmQgYWxzbyBzdXBwb3J0cyBpdGVyYXRpb24gb3ZlciBpdHMgbGluZXMuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgUmV0dXJuIGFuIDpjbGFzczpgaW8uQnVmZmVyZWRSZWFkZXJgIG9iamVjdC4KIAogCiAuLiBtZXRob2Q6OiBUYXJGaWxlLmFkZChuYW1lLCBhcmNuYW1lPU5vbmUsIHJlY3Vyc2l2ZT1UcnVlLCBleGNsdWRlPU5vbmUsICosIGZpbHRlcj1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdCBiL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKaW5kZXggNjQ2NjM0ZC4uOWJjNzljNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CkBAIC0xNjIsOSArMTYyLDEzIEBACiAuLiBtZXRob2Q6OiBUZWxuZXQud3JpdGUoYnVmZmVyKQogCiAgICBXcml0ZSBhIGJ5dGUgc3RyaW5nIHRvIHRoZSBzb2NrZXQsIGRvdWJsaW5nIGFueSBJQUMgY2hhcmFjdGVycy4gVGhpcyBjYW4KLSAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCBpZiB0aGUKKyAgIGJsb2NrIGlmIHRoZSBjb25uZWN0aW9uIGlzIGJsb2NrZWQuICBNYXkgcmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlCiAgICBjb25uZWN0aW9uIGlzIGNsb3NlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgbWV0aG9kIHVzZWQgdG8gcmFpc2UgOmV4Yzpgc29ja2V0LmVycm9yYCwgd2hpY2ggaXMgbm93IGFuIGFsaWFzCisgICAgICBvZiA6ZXhjOmBPU0Vycm9yYC4KKwogCiAuLiBtZXRob2Q6OiBUZWxuZXQuaW50ZXJhY3QoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS90ZW1wZmlsZS5yc3QKaW5kZXggYzE0M2I4OC4uOTZlYWQxZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGVtcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RlbXBmaWxlLnJzdApAQCAtMjUsNyArMjUsNyBAQAogCiBBbHNvLCBhbGwgdGhlIHVzZXItY2FsbGFibGUgZnVuY3Rpb25zIG5vdyB0YWtlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHdoaWNoCiBhbGxvdyBkaXJlY3QgY29udHJvbCBvdmVyIHRoZSBsb2NhdGlvbiBhbmQgbmFtZSBvZiB0ZW1wb3JhcnkgZmlsZXMuICBJdCBpcwotbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogYW5kICp0ZW1wbGF0ZSogdmFyaWFibGVzLgorbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byB1c2UgdGhlIGdsb2JhbCAqdGVtcGRpciogdmFyaWFibGUuCiBUbyBtYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgYXJndW1lbnQgb3JkZXIgaXMgc29tZXdoYXQgb2RkOyBpdAogaXMgcmVjb21tZW5kZWQgdG8gdXNlIGtleXdvcmQgYXJndW1lbnRzIGZvciBjbGFyaXR5LgogCkBAIC03Niw4ICs3Niw3IEBACiAgICBkYXRhIGlzIHNwb29sZWQgaW4gbWVtb3J5IHVudGlsIHRoZSBmaWxlIHNpemUgZXhjZWVkcyAqbWF4X3NpemUqLCBvcgogICAgdW50aWwgdGhlIGZpbGUncyA6ZnVuYzpgZmlsZW5vYCBtZXRob2QgaXMgY2FsbGVkLCBhdCB3aGljaCBwb2ludCB0aGUKICAgIGNvbnRlbnRzIGFyZSB3cml0dGVuIHRvIGRpc2sgYW5kIG9wZXJhdGlvbiBwcm9jZWVkcyBhcyB3aXRoCi0gICA6ZnVuYzpgVGVtcG9yYXJ5RmlsZWAuICBBbHNvLCBpdCdzIGBgdHJ1bmNhdGVgYCBtZXRob2QgZG9lcyBub3QKLSAgIGFjY2VwdCBhIGBgc2l6ZWBgIGFyZ3VtZW50LgorICAgOmZ1bmM6YFRlbXBvcmFyeUZpbGVgLgogCiAgICBUaGUgcmVzdWx0aW5nIGZpbGUgaGFzIG9uZSBhZGRpdGlvbmFsIG1ldGhvZCwgOmZ1bmM6YHJvbGxvdmVyYCwgd2hpY2gKICAgIGNhdXNlcyB0aGUgZmlsZSB0byByb2xsIG92ZXIgdG8gYW4gb24tZGlzayBmaWxlIHJlZ2FyZGxlc3Mgb2YgaXRzIHNpemUuCkBAIC04Nyw2ICs4Niw5IEBACiAgICB3aGV0aGVyIDpmdW5jOmByb2xsb3ZlcmAgaGFzIGJlZW4gY2FsbGVkLiBUaGlzIGZpbGUtbGlrZSBvYmplY3QgY2FuIGJlCiAgICB1c2VkIGluIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCwganVzdCBsaWtlIGEgbm9ybWFsIGZpbGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICB0aGUgdHJ1bmNhdGUgbWV0aG9kIG5vdyBhY2NlcHRzIGEgYGBzaXplYGAgYXJndW1lbnQuCisKIAogLi4gZnVuY3Rpb246OiBUZW1wb3JhcnlEaXJlY3Rvcnkoc3VmZml4PScnLCBwcmVmaXg9J3RtcCcsIGRpcj1Ob25lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDQwZjQxMTUuLjJlOGJhMzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC04MCwxNyArODAsMTIgQEAKIAogICAgLi4uIG1vcmUgdGVzdCBjbGFzc2VzIC4uLgogCi0gICBkZWYgdGVzdF9tYWluKCk6Ci0gICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTXlUZXN0Q2FzZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNeVRlc3RDYXNlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiBsaXN0IG90aGVyIHRlc3RzIC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgdGVzdF9tYWluKCkKKyAgICAgICB1bml0dGVzdC5tYWluKCkKIAotVGhpcyBib2lsZXJwbGF0ZSBjb2RlIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAKLWFzIHdlbGwgYXMgb24gaXRzIG93biBhcyBhIHNjcmlwdC4KK1RoaXMgY29kZSBwYXR0ZXJuIGFsbG93cyB0aGUgdGVzdGluZyBzdWl0ZSB0byBiZSBydW4gYnkgOm1vZDpgdGVzdC5yZWdydGVzdGAsCitvbiBpdHMgb3duIGFzIGEgc2NyaXB0IHRoYXQgc3VwcG9ydHMgdGhlIDptb2Q6YHVuaXR0ZXN0YCBDTEksIG9yIHZpYSB0aGUKK2BweXRob24gLW0gdW5pdHRlc3RgIENMSS4KIAogVGhlIGdvYWwgZm9yIHJlZ3Jlc3Npb24gdGVzdGluZyBpcyB0byB0cnkgdG8gYnJlYWsgY29kZS4gVGhpcyBsZWFkcyB0byBhIGZldwogZ3VpZGVsaW5lcyB0byBiZSBmb2xsb3dlZDoKQEAgLTEyOSwyMiArMTI0LDI3IEBACiAgIGFzIHdoYXQgdHlwZSBvZiBpbnB1dCBpcyB1c2VkLiBNaW5pbWl6ZSBjb2RlIGR1cGxpY2F0aW9uIGJ5IHN1YmNsYXNzaW5nIGEKICAgYmFzaWMgdGVzdCBjbGFzcyB3aXRoIGEgY2xhc3MgdGhhdCBzcGVjaWZpZXMgdGhlIGlucHV0OjoKIAotICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBjbGFzcyBUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbjoKIAogICAgICAgICAgZnVuYyA9IG15U3VwZXJXaGFtbXlGdW5jdGlvbgogCiAgICAgICAgICBkZWYgdGVzdF9mdW5jKHNlbGYpOgogICAgICAgICAgICAgIHNlbGYuZnVuYyhzZWxmLmFyZykKIAotICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRMaXN0cyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXNNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgYXJnID0gWzEsIDIsIDNdCiAKLSAgICAgY2xhc3MgQWNjZXB0U3RyaW5ncyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRTdHJpbmdzKFRlc3RGdW5jQWNjZXB0c1NlcXVlbmNlc01peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICBhcmcgPSAnYWJjJwogCi0gICAgIGNsYXNzIEFjY2VwdFR1cGxlcyhUZXN0RnVuY0FjY2VwdHNTZXF1ZW5jZXMpOgorICAgICBjbGFzcyBBY2NlcHRUdXBsZXMoVGVzdEZ1bmNBY2NlcHRzU2VxdWVuY2VzTWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIGFyZyA9ICgxLCAyLCAzKQogCisgIFdoZW4gdXNpbmcgdGhpcyBwYXR0ZXJuLCByZW1lbWJlciB0aGF0IGFsbCBjbGFzc2VzIHRoYXQgaW5oZXJpdCBmcm9tCisgIGB1bml0dGVzdC5UZXN0Q2FzZWAgYXJlIHJ1biBhcyB0ZXN0cy4gIFRoZSBgTWl4aW5gIGNsYXNzIGluIHRoZSBleGFtcGxlIGFib3ZlCisgIGRvZXMgbm90IGhhdmUgYW55IGRhdGEgYW5kIHNvIGNhbid0IGJlIHJ1biBieSBpdHNlbGYsIHRodXMgaXQgZG9lcyBub3QKKyAgaW5oZXJpdCBmcm9tIGB1bml0dGVzdC5UZXN0Q2FzZWAuCisKIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE2MCwxNCArMTYwLDE1IEBACiBUaGUgOm1vZDpgdGVzdGAgcGFja2FnZSBjYW4gYmUgcnVuIGFzIGEgc2NyaXB0IHRvIGRyaXZlIFB5dGhvbidzIHJlZ3Jlc3Npb24KIHRlc3Qgc3VpdGUsIHRoYW5rcyB0byB0aGUgOm9wdGlvbjpgLW1gIG9wdGlvbjogOnByb2dyYW06YHB5dGhvbiAtbSB0ZXN0YC4gVW5kZXIKIHRoZSBob29kLCBpdCB1c2VzIDptb2Q6YHRlc3QucmVncnRlc3RgOyB0aGUgY2FsbCA6cHJvZ3JhbTpgcHl0aG9uIC1tCi10ZXN0LnJlZ3J0ZXN0YCB1c2VkIGluIHByZXZpb3VzIFB5dGhvbiB2ZXJzaW9ucyBzdGlsbCB3b3JrcykuCi1SdW5uaW5nIHRoZSBzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24KLXRlc3RzIGluIHRoZSA6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUKLXBhY2thZ2Ugd2hvc2UgbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZQotZnVuY3Rpb24gOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudC4gVGhlIG5hbWVzIG9mIHRlc3RzIHRvIGV4ZWN1dGUgbWF5IGFsc28KLWJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlIHJlZ3Jlc3Npb24gdGVzdCAoOnByb2dyYW06YHB5dGhvbgotLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQgb25seSBwcmludAotd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkIGFuZCB0aHVzIG1pbmltaXplIG91dHB1dC4KK3Rlc3QucmVncnRlc3RgIHVzZWQgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zIHN0aWxsIHdvcmtzKS4gIFJ1bm5pbmcgdGhlCitzY3JpcHQgYnkgaXRzZWxmIGF1dG9tYXRpY2FsbHkgc3RhcnRzIHJ1bm5pbmcgYWxsIHJlZ3Jlc3Npb24gdGVzdHMgaW4gdGhlCis6bW9kOmB0ZXN0YCBwYWNrYWdlLiBJdCBkb2VzIHRoaXMgYnkgZmluZGluZyBhbGwgbW9kdWxlcyBpbiB0aGUgcGFja2FnZSB3aG9zZQorbmFtZSBzdGFydHMgd2l0aCBgYHRlc3RfYGAsIGltcG9ydGluZyB0aGVtLCBhbmQgZXhlY3V0aW5nIHRoZSBmdW5jdGlvbgorOmZ1bmM6YHRlc3RfbWFpbmAgaWYgcHJlc2VudCBvciBsb2FkaW5nIHRoZSB0ZXN0cyB2aWEKK3VuaXR0ZXN0LlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU1vZHVsZSBpZiBgYHRlc3RfbWFpbmBgIGRvZXMgbm90IGV4aXN0LiAgVGhlCituYW1lcyBvZiB0ZXN0cyB0byBleGVjdXRlIG1heSBhbHNvIGJlIHBhc3NlZCB0byB0aGUgc2NyaXB0LiBTcGVjaWZ5aW5nIGEgc2luZ2xlCityZWdyZXNzaW9uIHRlc3QgKDpwcm9ncmFtOmBweXRob24gLW0gdGVzdCB0ZXN0X3NwYW1gKSB3aWxsIG1pbmltaXplIG91dHB1dCBhbmQKK29ubHkgcHJpbnQgd2hldGhlciB0aGUgdGVzdCBwYXNzZWQgb3IgZmFpbGVkLgogCiBSdW5uaW5nIDptb2Q6YHRlc3RgIGRpcmVjdGx5IGFsbG93cyB3aGF0IHJlc291cmNlcyBhcmUgYXZhaWxhYmxlIGZvcgogdGVzdHMgdG8gdXNlIHRvIGJlIHNldC4gWW91IGRvIHRoaXMgYnkgdXNpbmcgdGhlIGBgLXVgYCBjb21tYW5kLWxpbmUKQEAgLTIyMywxNCArMjI0LDE0IEBACiAKIC4uIGRhdGE6OiB2ZXJib3NlCiAKLSAgIDpjb25zdDpgVHJ1ZWAgd2hlbiB2ZXJib3NlIG91dHB1dCBpcyBlbmFibGVkLiBTaG91bGQgYmUgY2hlY2tlZCB3aGVuIG1vcmUKKyAgIGBgVHJ1ZWBgIHdoZW4gdmVyYm9zZSBvdXRwdXQgaXMgZW5hYmxlZC4gU2hvdWxkIGJlIGNoZWNrZWQgd2hlbiBtb3JlCiAgICBkZXRhaWxlZCBpbmZvcm1hdGlvbiBpcyBkZXNpcmVkIGFib3V0IGEgcnVubmluZyB0ZXN0LiAqdmVyYm9zZSogaXMgc2V0IGJ5CiAgICA6bW9kOmB0ZXN0LnJlZ3J0ZXN0YC4KIAogCiAuLiBkYXRhOjogaXNfanl0aG9uCiAKLSAgIDpjb25zdDpgVHJ1ZWAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgorICAgYGBUcnVlYGAgaWYgdGhlIHJ1bm5pbmcgaW50ZXJwcmV0ZXIgaXMgSnl0aG9uLgogCiAKIC4uIGRhdGE6OiBURVNURk4KQEAgLTI0OSw3ICsyNTAsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpCiAKLSAgIFJldHVybiA6Y29uc3Q6YFRydWVgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgorICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpyZXNvdXJjZSogaXMgZW5hYmxlZCBhbmQgYXZhaWxhYmxlLiBUaGUgbGlzdCBvZgogICAgYXZhaWxhYmxlIHJlc291cmNlcyBpcyBvbmx5IHNldCB3aGVuIDptb2Q6YHRlc3QucmVncnRlc3RgIGlzIGV4ZWN1dGluZyB0aGUKICAgIHRlc3RzLgogCkBAIC0yNTgsNyArMjU5LDcgQEAKIAogICAgUmFpc2UgOmV4YzpgUmVzb3VyY2VEZW5pZWRgIGlmICpyZXNvdXJjZSogaXMgbm90IGF2YWlsYWJsZS4gKm1zZyogaXMgdGhlCiAgICBhcmd1bWVudCB0byA6ZXhjOmBSZXNvdXJjZURlbmllZGAgaWYgaXQgaXMgcmFpc2VkLiBBbHdheXMgcmV0dXJucwotICAgOmNvbnN0OmBUcnVlYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCisgICBgYFRydWVgYCBpZiBjYWxsZWQgYnkgYSBmdW5jdGlvbiB3aG9zZSBgYF9fbmFtZV9fYGAgaXMgYGAnX19tYWluX18nYGAuCiAgICBVc2VkIHdoZW4gdGVzdHMgYXJlIGV4ZWN1dGVkIGJ5IDptb2Q6YHRlc3QucmVncnRlc3RgLgogCiAKQEAgLTI4Niw2ICsyODcsMTUgQEAKICAgIFRoaXMgd2lsbCBydW4gYWxsIHRlc3RzIGRlZmluZWQgaW4gdGhlIG5hbWVkIG1vZHVsZS4KIAogCisuLiBmdW5jdGlvbjo6IHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUpCisKKyAgIFJ1biA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBvbiB0aGUgZ2l2ZW4gKm1vZHVsZSouICBSZXR1cm4KKyAgIGBgKGZhaWx1cmVfY291bnQsIHRlc3RfY291bnQpYGAuCisKKyAgIElmICp2ZXJib3NpdHkqIGlzIGBgTm9uZWBgLCA6ZnVuYzpgZG9jdGVzdC50ZXN0bW9kYCBpcyBydW4gd2l0aCB2ZXJib3NpdHkKKyAgIHNldCB0byA6ZGF0YTpgdmVyYm9zZWAuICBPdGhlcndpc2UsIGl0IGlzIHJ1biB3aXRoIHZlcmJvc2l0eSBzZXQgdG8KKyAgIGBgTm9uZWBgLgorCiAuLiBmdW5jdGlvbjo6IGNoZWNrX3dhcm5pbmdzKFwqZmlsdGVycywgcXVpZXQ9VHJ1ZSkKIAogICAgQSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciA6ZnVuYzpgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKWAgdGhhdCBtYWtlcyBpdApAQCAtMjk2LDEyICszMDYsMTIgQEAKIAogICAgYGBjaGVja193YXJuaW5nc2BgIGFjY2VwdHMgMi10dXBsZXMgb2YgdGhlIGZvcm0gYGAoIm1lc3NhZ2UgcmVnZXhwIiwKICAgIFdhcm5pbmdDYXRlZ29yeSlgYCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gSWYgb25lIG9yIG1vcmUgKmZpbHRlcnMqIGFyZQotICAgcHJvdmlkZWQsIG9yIGlmIHRoZSBvcHRpb25hbCBrZXl3b3JkIGFyZ3VtZW50ICpxdWlldCogaXMgOmNvbnN0OmBGYWxzZWAsCisgICBwcm92aWRlZCwgb3IgaWYgdGhlIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKnF1aWV0KiBpcyBgYEZhbHNlYGAsCiAgICBpdCBjaGVja3MgdG8gbWFrZSBzdXJlIHRoZSB3YXJuaW5ncyBhcmUgYXMgZXhwZWN0ZWQ6ICBlYWNoIHNwZWNpZmllZCBmaWx0ZXIKICAgIG11c3QgbWF0Y2ggYXQgbGVhc3Qgb25lIG9mIHRoZSB3YXJuaW5ncyByYWlzZWQgYnkgdGhlIGVuY2xvc2VkIGNvZGUgb3IgdGhlCiAgICB0ZXN0IGZhaWxzLCBhbmQgaWYgYW55IHdhcm5pbmdzIGFyZSByYWlzZWQgdGhhdCBkbyBub3QgbWF0Y2ggYW55IG9mIHRoZQogICAgc3BlY2lmaWVkIGZpbHRlcnMgdGhlIHRlc3QgZmFpbHMuICBUbyBkaXNhYmxlIHRoZSBmaXJzdCBvZiB0aGVzZSBjaGVja3MsCi0gICBzZXQgKnF1aWV0KiB0byA6Y29uc3Q6YFRydWVgLgorICAgc2V0ICpxdWlldCogdG8gYGBUcnVlYGAuCiAKICAgIElmIG5vIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0bzo6CiAKQEAgLTMxNiw3ICszMjYsNyBAQAogICAgcmVwcmVzZW50aW5nIHRoZSBtb3N0IHJlY2VudCB3YXJuaW5nIGNhbiBhbHNvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IHRocm91Z2gKICAgIHRoZSByZWNvcmRlciBvYmplY3QgKHNlZSBleGFtcGxlIGJlbG93KS4gIElmIG5vIHdhcm5pbmcgaGFzIGJlZW4gcmFpc2VkLAogICAgdGhlbiBhbnkgb2YgdGhlIGF0dHJpYnV0ZXMgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgZXhwZWN0ZWQgb24gYW4gb2JqZWN0Ci0gICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIDpjb25zdDpgTm9uZWAuCisgICByZXByZXNlbnRpbmcgYSB3YXJuaW5nIHdpbGwgcmV0dXJuIGBgTm9uZWBgLgogCiAgICBUaGUgcmVjb3JkZXIgb2JqZWN0IGFsc28gaGFzIGEgOm1ldGg6YHJlc2V0YCBtZXRob2QsIHdoaWNoIGNsZWFycyB0aGUKICAgIHdhcm5pbmdzIGxpc3QuCkBAIC0zNTQsNyArMzY0LDcgQEAKIAogLi4gZnVuY3Rpb246OiBjYXB0dXJlZF9zdGRvdXQoKQogCi0gICBUaGlzIGlzIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgcnVucyB0aGUgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBib2R5IHVzaW5nCisgICBBIGNvbnRleHQgbWFuYWdlciB0aGF0IHJ1bnMgdGhlIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQgYm9keSB1c2luZwogICAgYSA6Y2xhc3M6YFN0cmluZ0lPLlN0cmluZ0lPYCBvYmplY3QgYXMgc3lzLnN0ZG91dC4gIFRoYXQgb2JqZWN0IGNhbiBiZQogICAgcmV0cmlldmVkIHVzaW5nIHRoZSBgYGFzYGAgY2xhdXNlIG9mIHRoZSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50LgogCkBAIC0zNjUsNiArMzc1LDU3IEBACiAgICAgICBhc3NlcnQgcy5nZXR2YWx1ZSgpID09ICJoZWxsb1xuIgogCiAKKy4uIGZ1bmN0aW9uOjogdGVtcF9jd2QobmFtZT0ndGVtcGN3ZCcsIHF1aWV0PUZhbHNlLCBwYXRoPU5vbmUpCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nCisgICBkaXJlY3RvcnkgKENXRCkuCisKKyAgIEFuIGV4aXN0aW5nIHBhdGggbWF5IGJlIHByb3ZpZGVkIGFzICpwYXRoKiwgaW4gd2hpY2ggY2FzZSB0aGlzIGZ1bmN0aW9uCisgICBtYWtlcyBubyBjaGFuZ2VzIHRvIHRoZSBmaWxlIHN5c3RlbS4KKworICAgT3RoZXJ3aXNlLCB0aGUgbmV3IENXRCBpcyBjcmVhdGVkIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgaXQncyBuYW1lZAorICAgKm5hbWUqLiAgSWYgKnF1aWV0KiBpcyBgYEZhbHNlYGAgYW5kIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBvcgorICAgY2hhbmdlIHRoZSBDV0QsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0J3MgYGBUcnVlYGAsIG9ubHkgYSB3YXJuaW5nCisgICBpcyByYWlzZWQgYW5kIHRoZSBvcmlnaW5hbCBDV0QgaXMgdXNlZC4KKworCisuLiBmdW5jdGlvbjo6IHRlbXBfdW1hc2sodW1hc2spCisKKyAgIEEgY29udGV4dCBtYW5hZ2VyIHRoYXQgdGVtcG9yYXJpbHkgc2V0cyB0aGUgcHJvY2VzcyB1bWFzay4KKworCisuLiBmdW5jdGlvbjo6IGNhbl9zeW1saW5rKCkKKworICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBPUyBzdXBwb3J0cyBzeW1ib2xpYyBsaW5rcywgYGBGYWxzZWBgCisgICBvdGhlcndpc2UuCisKKworLi4gZGVjb3JhdG9yOjogc2tpcF91bmxlc3Nfc3ltbGluaygpCisKKyAgIEEgZGVjb3JhdG9yIGZvciBydW5uaW5nIHRlc3RzIHRoYXQgcmVxdWlyZSBzdXBwb3J0IGZvciBzeW1ib2xpYyBsaW5rcy4KKworCisuLiBkZWNvcmF0b3I6OiBhbnRpY2lwYXRlX2ZhaWx1cmUoY29uZGl0aW9uKQorCisgICBBIGRlY29yYXRvciB0byBjb25kaXRpb25hbGx5IG1hcmsgdGVzdHMgd2l0aAorICAgOmZ1bmM6YHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZWAuIEFueSB1c2Ugb2YgdGhpcyBkZWNvcmF0b3Igc2hvdWxkCisgICBoYXZlIGFuIGFzc29jaWF0ZWQgY29tbWVudCBpZGVudGlmeWluZyB0aGUgcmVsZXZhbnQgdHJhY2tlciBpc3N1ZS4KKworCisuLiBkZWNvcmF0b3I6OiBydW5fd2l0aF9sb2NhbGUoY2F0c3RyLCAqbG9jYWxlcykKKworICAgQSBkZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBsb2NhbGUsIGNvcnJlY3RseQorICAgcmVzZXR0aW5nIGl0IGFmdGVyIGl0IGhhcyBmaW5pc2hlZC4gICpjYXRzdHIqIGlzIHRoZSBsb2NhbGUgY2F0ZWdvcnkgYXMKKyAgIGEgc3RyaW5nIChmb3IgZXhhbXBsZSBgYCJMQ19BTEwiYGApLiAgVGhlICpsb2NhbGVzKiBwYXNzZWQgd2lsbCBiZSB0cmllZAorICAgc2VxdWVudGlhbGx5LCBhbmQgdGhlIGZpcnN0IHZhbGlkIGxvY2FsZSB3aWxsIGJlIHVzZWQuCisKKworLi4gZnVuY3Rpb246OiBtYWtlX2JhZF9mZCgpCisKKyAgIENyZWF0ZSBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvciBieSBvcGVuaW5nIGFuZCBjbG9zaW5nIGEgdGVtcG9yYXJ5IGZpbGUsCisgICBhbmQgcmV0dXJuaW5nIGl0cyBkZXNjcmlwb3IuCisKKwogLi4gZnVuY3Rpb246OiBpbXBvcnRfbW9kdWxlKG5hbWUsIGRlcHJlY2F0ZWQ9RmFsc2UpCiAKICAgIFRoaXMgZnVuY3Rpb24gaW1wb3J0cyBhbmQgcmV0dXJucyB0aGUgbmFtZWQgbW9kdWxlLiBVbmxpa2UgYSBub3JtYWwKQEAgLTM3Miw3ICs0MzMsNyBAQAogICAgY2Fubm90IGJlIGltcG9ydGVkLgogCiAgICBNb2R1bGUgYW5kIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMgYXJlIHN1cHByZXNzZWQgZHVyaW5nIHRoaXMgaW1wb3J0Ci0gICBpZiAqZGVwcmVjYXRlZCogaXMgOmNvbnN0OmBUcnVlYC4KKyAgIGlmICpkZXByZWNhdGVkKiBpcyBgYFRydWVgYC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKQEAgLTM5Niw5ICs0NTcsOSBAQAogICAgYGBzeXMubW9kdWxlc2BgIHdoZW4gdGhlIGZyZXNoIGltcG9ydCBpcyBjb21wbGV0ZS4KIAogICAgTW9kdWxlIGFuZCBwYWNrYWdlIGRlcHJlY2F0aW9uIG1lc3NhZ2VzIGFyZSBzdXBwcmVzc2VkIGR1cmluZyB0aGlzIGltcG9ydAotICAgaWYgKmRlcHJlY2F0ZWQqIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBpZiAqZGVwcmVjYXRlZCogaXMgYGBUcnVlYGAuCiAKLSAgIFRoaXMgZnVuY3Rpb24gd2lsbCByYWlzZSA6ZXhjOmB1bml0dGVzdC5Ta2lwVGVzdGAgaXMgdGhlIG5hbWVkIG1vZHVsZQorICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIDpleGM6YHVuaXR0ZXN0LlNraXBUZXN0YCBpZiB0aGUgbmFtZWQgbW9kdWxlCiAgICBjYW5ub3QgYmUgaW1wb3J0ZWQuCiAKICAgIEV4YW1wbGUgdXNlOjoKQEAgLTQxMyw2ICs0NzQsNDggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogCiAKKy4uIGZ1bmN0aW9uOjogYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCkKKworICAgQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCisgICBlcGhlbWVyYWwgcG9ydHMgaW4gb3JkZXIgdG8gZW5zdXJlIHdlIGFyZSB1c2luZyBhbiB1bmJvdW5kIHBvcnQuICBUaGlzIGlzCisgICBpbXBvcnRhbnQgYXMgbWFueSB0ZXN0cyBtYXkgYmUgcnVubmluZyBzaW11bHRhbmVvdXNseSwgZXNwZWNpYWxseSBpbiBhCisgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlCisgICBgYHNvY2suZmFtaWx5YGAgaXMgOmNvbnN0OmB+c29ja2V0LkFGX0lORVRgIGFuZCBgYHNvY2sudHlwZWBgIGlzCisgICA6Y29uc3Q6YH5zb2NrZXQuU09DS19TVFJFQU1gLCBhbmQgdGhlIHNvY2tldCBoYXMKKyAgIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRUFERFJgIG9yIDpjb25zdDpgfnNvY2tldC5TT19SRVVTRVBPUlRgIHNldCBvbiBpdC4KKyAgIFRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlc2Ugc29ja2V0IG9wdGlvbnMgZm9yIFRDUC9JUCBzb2NrZXRzLgorICAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcgbXVsdGljYXN0aW5nIHZpYQorICAgbXVsdGlwbGUgVURQIHNvY2tldHMuCisKKyAgIEFkZGl0aW9uYWxseSwgaWYgdGhlIDpjb25zdDpgfnNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFYCBzb2NrZXQgb3B0aW9uIGlzCisgICBhdmFpbGFibGUgKGkuZS4gb24gV2luZG93cyksIGl0IHdpbGwgYmUgc2V0IG9uIHRoZSBzb2NrZXQuICBUaGlzIHdpbGwKKyAgIHByZXZlbnQgYW55b25lIGVsc2UgZnJvbSBiaW5kaW5nIHRvIG91ciBob3N0L3BvcnQgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUKKyAgIHRlc3QuCisKKworLi4gZnVuY3Rpb246OiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKQorCisgICBSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcworICAgYWNoaWV2ZWQgYnkgY3JlYXRpbmcgYSB0ZW1wb3Jhcnkgc29ja2V0IHdpdGggdGhlIHNhbWUgZmFtaWx5IGFuZCB0eXBlIGFzCisgICB0aGUgYGBzb2NrYGAgcGFyYW1ldGVyIChkZWZhdWx0IGlzIDpjb25zdDpgfnNvY2tldC5BRl9JTkVUYCwKKyAgIDpjb25zdDpgfnNvY2tldC5TT0NLX1NUUkVBTWApLAorICAgYW5kIGJpbmRpbmcgaXQgdG8gdGhlIHNwZWNpZmllZCBob3N0IGFkZHJlc3MgKGRlZmF1bHRzIHRvIGBgMC4wLjAuMGBgKQorICAgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwgZWxpY2l0aW5nIGFuIHVudXNlZCBlcGhlbWVyYWwgcG9ydCBmcm9tIHRoZSBPUy4KKyAgIFRoZSB0ZW1wb3Jhcnkgc29ja2V0IGlzIHRoZW4gY2xvc2VkIGFuZCBkZWxldGVkLCBhbmQgdGhlIGVwaGVtZXJhbCBwb3J0IGlzCisgICByZXR1cm5lZC4KKworICAgRWl0aGVyIHRoaXMgbWV0aG9kIG9yIDpmdW5jOmBiaW5kX3BvcnRgIHNob3VsZCBiZSB1c2VkIGZvciBhbnkgdGVzdHMKKyAgIHdoZXJlIGEgc2VydmVyIHNvY2tldCBuZWVkcyB0byBiZSBib3VuZCB0byBhIHBhcnRpY3VsYXIgcG9ydCBmb3IgdGhlCisgICBkdXJhdGlvbiBvZiB0aGUgdGVzdC4KKyAgIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcgYSBweXRob24KKyAgIHNvY2tldCwgb3IgaWYgYW4gdW51c2VkIHBvcnQgbmVlZHMgdG8gYmUgcHJvdmlkZWQgaW4gYSBjb25zdHJ1Y3RvcgorICAgb3IgcGFzc2VkIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gKGkuZS4gdGhlIGBgLWFjY2VwdGBgIGFyZ3VtZW50IHRvCisgICBvcGVuc3NsJ3Mgc19zZXJ2ZXIgbW9kZSkuICBBbHdheXMgcHJlZmVyIDpmdW5jOmBiaW5kX3BvcnRgIG92ZXIKKyAgIDpmdW5jOmBmaW5kX3VudXNlZF9wb3J0YCB3aGVyZSBwb3NzaWJsZS4gIFVzaW5nIGEgaGFyZCBjb2RlZCBwb3J0IGlzCisgICBkaXNjb3VyYWdlZCBzaW5jZSBpdCBjYW4gbWFrZXMgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSB0ZXN0IGltcG9zc2libGUgdG8KKyAgIHJ1biBzaW11bHRhbmVvdXNseSwgd2hpY2ggaXMgYSBwcm9ibGVtIGZvciBidWlsZGJvdHMuCisKKwogVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4YywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L3RleHQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3YjY3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS90ZXh0LnJzdApAQCAtMCwwICsxLDI2IEBACisuLiBfc3RyaW5nc2VydmljZXM6CisuLiBfdGV4dHNlcnZpY2VzOgorCisqKioqKioqKioqKioqKioqKioqKioqKioKK1RleHQgUHJvY2Vzc2luZyBTZXJ2aWNlcworKioqKioqKioqKioqKioqKioqKioqKioqCisKK1RoZSBtb2R1bGVzIGRlc2NyaWJlZCBpbiB0aGlzIGNoYXB0ZXIgcHJvdmlkZSBhIHdpZGUgcmFuZ2Ugb2Ygc3RyaW5nCittYW5pcHVsYXRpb24gb3BlcmF0aW9ucyBhbmQgb3RoZXIgdGV4dCBwcm9jZXNzaW5nIHNlcnZpY2VzLgorCitUaGUgOm1vZDpgY29kZWNzYCBtb2R1bGUgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YGJpbmFyeXNlcnZpY2VzYCBpcyBhbHNvCitoaWdobHkgcmVsZXZhbnQgdG8gdGV4dCBwcm9jZXNzaW5nLiBJbiBhZGRpdGlvbiwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgorUHl0aG9uJ3MgYnVpbHQtaW4gc3RyaW5nIHR5cGUgaW4gOnJlZjpgdGV4dHNlcWAuCisKKworLi4gdG9jdHJlZTo6CisKKyAgIHN0cmluZy5yc3QKKyAgIHJlLnJzdAorICAgZGlmZmxpYi5yc3QKKyAgIHRleHR3cmFwLnJzdAorICAgdW5pY29kZWRhdGEucnN0CisgICBzdHJpbmdwcmVwLnJzdAorICAgcmVhZGxpbmUucnN0CisgICBybGNvbXBsZXRlci5yc3QKKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0IGIvRG9jL2xpYnJhcnkvdGV4dHdyYXAucnN0CmluZGV4IDNjMWVjZjYuLmM2MjUyNTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RleHR3cmFwLnJzdAorKysgYi9Eb2MvbGlicmFyeS90ZXh0d3JhcC5yc3QKQEAgLTEyLDcgKzEyLDcgQEAKIAogVGhlIDptb2Q6YHRleHR3cmFwYCBtb2R1bGUgcHJvdmlkZXMgdHdvIGNvbnZlbmllbmNlIGZ1bmN0aW9ucywgOmZ1bmM6YHdyYXBgIGFuZAogOmZ1bmM6YGZpbGxgLCBhcyB3ZWxsIGFzIDpjbGFzczpgVGV4dFdyYXBwZXJgLCB0aGUgY2xhc3MgdGhhdCBkb2VzIGFsbCB0aGUgd29yaywKLWFuZCBhIHV0aWxpdHkgZnVuY3Rpb24gIDpmdW5jOmBkZWRlbnRgLiAgSWYgeW91J3JlIGp1c3Qgd3JhcHBpbmcgb3IgZmlsbGluZyBvbmUKK2FuZCB0d28gdXRpbGl0eSBmdW5jdGlvbnMsIDpmdW5jOmBkZWRlbnRgIGFuZCA6ZnVuYzpgaW5kZW50YC4gIElmIHlvdSdyZSBqdXN0IHdyYXBwaW5nIG9yIGZpbGxpbmcgb25lCiBvciB0d28gIHRleHQgc3RyaW5ncywgdGhlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgZ29vZCBlbm91Z2g7CiBvdGhlcndpc2UsICB5b3Ugc2hvdWxkIHVzZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YFRleHRXcmFwcGVyYCBmb3IgZWZmaWNpZW5jeS4KIApAQCAtNDgsOSArNDgsMTAgQEAKIGh5cGhlbmF0ZWQgd29yZHM7IG9ubHkgdGhlbiB3aWxsIGxvbmcgd29yZHMgYmUgYnJva2VuIGlmIG5lY2Vzc2FyeSwgdW5sZXNzCiA6YXR0cjpgVGV4dFdyYXBwZXIuYnJlYWtfbG9uZ193b3Jkc2AgaXMgc2V0IHRvIGZhbHNlLgogCi1BbiBhZGRpdGlvbmFsIHV0aWxpdHkgZnVuY3Rpb24sIDpmdW5jOmBkZWRlbnRgLCBpcyBwcm92aWRlZCB0byByZW1vdmUKLWluZGVudGF0aW9uIGZyb20gc3RyaW5ncyB0aGF0IGhhdmUgdW53YW50ZWQgd2hpdGVzcGFjZSB0byB0aGUgbGVmdCBvZiB0aGUgdGV4dC4KLQorVHdvIGFkZGl0aW9uYWwgdXRpbGl0eSBmdW5jdGlvbiwgOmZ1bmM6YGRlZGVudGAgYW5kIDpmdW5jOmBpbmRlbnRgLCBhcmUKK3Byb3ZpZGVkIHRvIHJlbW92ZSBpbmRlbnRhdGlvbiBmcm9tIHN0cmluZ3MgdGhhdCBoYXZlIHVud2FudGVkIHdoaXRlc3BhY2UKK3RvIHRoZSBsZWZ0IG9mIHRoZSB0ZXh0IGFuZCB0byBhZGQgYW4gYXJiaXRyYXJ5IHByZWZpeCB0byBzZWxlY3RlZCBsaW5lcworaW4gYSBibG9jayBvZiB0ZXh0LgogCiAuLiBmdW5jdGlvbjo6IGRlZGVudCh0ZXh0KQogCkBAIC03NSw2ICs3NiwzMiBAQAogICAgICAgICAgIHByaW50KHJlcHIoZGVkZW50KHMpKSkgICMgcHJpbnRzICdoZWxsb1xuICB3b3JsZFxuJwogCiAKKy4uIGZ1bmN0aW9uOjogaW5kZW50KHRleHQsIHByZWZpeCwgcHJlZGljYXRlPU5vbmUpCisKKyAgIEFkZCAqcHJlZml4KiB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICp0ZXh0Ki4KKworICAgTGluZXMgYXJlIHNlcGFyYXRlZCBieSBjYWxsaW5nIGBgdGV4dC5zcGxpdGxpbmVzKFRydWUpYGAuCisKKyAgIEJ5IGRlZmF1bHQsICpwcmVmaXgqIGlzIGFkZGVkIHRvIGFsbCBsaW5lcyB0aGF0IGRvIG5vdCBjb25zaXN0CisgICBzb2xlbHkgb2Ygd2hpdGVzcGFjZSAoaW5jbHVkaW5nIGFueSBsaW5lIGVuZGluZ3MpLgorCisgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgID4+PiBzID0gJ2hlbGxvXG5cbiBcbndvcmxkJworICAgICAgPj4+IGluZGVudChzLCAnICAnKQorICAgICAgJyAgaGVsbG9cblxuIFxuICB3b3JsZCcKKworICAgVGhlIG9wdGlvbmFsICpwcmVkaWNhdGUqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggbGluZXMKKyAgIGFyZSBpbmRlbnRlZC4gRm9yIGV4YW1wbGUsIGl0IGlzIGVhc3kgdG8gYWRkICpwcmVmaXgqIHRvIGV2ZW4gZW1wdHkKKyAgIGFuZCB3aGl0ZXNwYWNlLW9ubHkgbGluZXM6OgorCisgICAgICA+Pj4gcHJpbnQoaW5kZW50KHMsICcrICcsIGxhbWJkYSBsaW5lOiBUcnVlKSkKKyAgICAgICsgaGVsbG8KKyAgICAgICsKKyAgICAgICsKKyAgICAgICsgd29ybGQKKworCiAuLiBjbGFzczo6IFRleHRXcmFwcGVyKCoqa3dhcmdzKQogCiAgICBUaGUgOmNsYXNzOmBUZXh0V3JhcHBlcmAgY29uc3RydWN0b3IgYWNjZXB0cyBhIG51bWJlciBvZiBvcHRpb25hbCBrZXl3b3JkCkBAIC0xMTAsNiArMTM3LDE1IEBACiAgICAgICBleHBhbmRlZCB0byBzcGFjZXMgdXNpbmcgdGhlIDptZXRoOmBleHBhbmR0YWJzYCBtZXRob2Qgb2YgKnRleHQqLgogCiAKKyAgIC4uIGF0dHJpYnV0ZTo6IHRhYnNpemUKKworICAgICAgKGRlZmF1bHQ6IGBgOGBgKSBJZiA6YXR0cjpgZXhwYW5kX3RhYnNgIGlzIHRydWUsIHRoZW4gYWxsIHRhYiBjaGFyYWN0ZXJzCisgICAgICBpbiAqdGV4dCogd2lsbCBiZSBleHBhbmRlZCB0byB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICBjdXJyZW50IGNvbHVtbiBhbmQgdGhlIGdpdmVuIHRhYiBzaXplLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAgICAuLiBhdHRyaWJ1dGU6OiByZXBsYWNlX3doaXRlc3BhY2UKIAogICAgICAgKGRlZmF1bHQ6IGBgVHJ1ZWBgKSBJZiB0cnVlLCBhZnRlciB0YWIgZXhwYW5zaW9uIGJ1dCBiZWZvcmUgd3JhcHBpbmcsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0IGIvRG9jL2xpYnJhcnkvdGhyZWFkaW5nLnJzdAppbmRleCA0MzA4N2VmLi4wNTg2M2EwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aHJlYWRpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RocmVhZGluZy5yc3QKQEAgLTIwLDE5ICsyMCw4IEBACiAgICBtZXRob2RzIGFuZCBmdW5jdGlvbnMgaW4gdGhpcyBtb2R1bGUgaW4gdGhlIFB5dGhvbiAyLnggc2VyaWVzIGFyZSBzdGlsbAogICAgc3VwcG9ydGVkIGJ5IHRoaXMgbW9kdWxlLgogCi0uLiBpbXBsLWRldGFpbDo6CiAKLSAgIER1ZSB0byB0aGUgOnRlcm06YEdsb2JhbCBJbnRlcnByZXRlciBMb2NrYCwgaW4gQ1B5dGhvbiBvbmx5IG9uZSB0aHJlYWQKLSAgIGNhbiBleGVjdXRlIFB5dGhvbiBjb2RlIGF0IG9uY2UgKGV2ZW4gdGhvdWdoIGNlcnRhaW4gcGVyZm9ybWFuY2Utb3JpZW50ZWQKLSAgIGxpYnJhcmllcyBtaWdodCBvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24pLgotICAgSWYgeW91IHdhbnQgeW91ciBhcHBsaWNhdGlvbiB0byBtYWtlIGJldHRlciBvZiB1c2Ugb2YgdGhlIGNvbXB1dGF0aW9uYWwKLSAgIHJlc291cmNlcyBvZiBtdWx0aS1jb3JlIG1hY2hpbmVzLCB5b3UgYXJlIGFkdmlzZWQgdG8gdXNlCi0gICA6bW9kOmBtdWx0aXByb2Nlc3NpbmdgIG9yIDpjbGFzczpgY29uY3VycmVudC5mdXR1cmVzLlByb2Nlc3NQb29sRXhlY3V0b3JgLgotICAgSG93ZXZlciwgdGhyZWFkaW5nIGlzIHN0aWxsIGFuIGFwcHJvcHJpYXRlIG1vZGVsIGlmIHlvdSB3YW50IHRvIHJ1bgotICAgbXVsdGlwbGUgSS9PLWJvdW5kIHRhc2tzIHNpbXVsdGFuZW91c2x5LgotCi0KLVRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYW5kIG9iamVjdHM6CitUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKIC4uIGZ1bmN0aW9uOjogYWN0aXZlX2NvdW50KCkKQEAgLTQxLDE2ICszMCw2IEBACiAgICBjb3VudCBpcyBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IHJldHVybmVkIGJ5IDpmdW5jOmAuZW51bWVyYXRlYC4KIAogCi0uLiBmdW5jdGlvbjo6IENvbmRpdGlvbigpCi0gICA6bm9pbmRleDoKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBjb25kaXRpb24gdmFyaWFibGUgb2JqZWN0LiBBIGNvbmRpdGlvbgotICAgdmFyaWFibGUgYWxsb3dzIG9uZSBvciBtb3JlIHRocmVhZHMgdG8gd2FpdCB1bnRpbCB0aGV5IGFyZSBub3RpZmllZCBieSBhbm90aGVyCi0gICB0aHJlYWQuCi0KLSAgIFNlZSA6cmVmOmBjb25kaXRpb24tb2JqZWN0c2AuCi0KLQogLi4gZnVuY3Rpb246OiBjdXJyZW50X3RocmVhZCgpCiAKICAgIFJldHVybiB0aGUgY3VycmVudCA6Y2xhc3M6YFRocmVhZGAgb2JqZWN0LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsZXIncyB0aHJlYWQKQEAgLTU5LDYgKzM4LDE3IEBACiAgICByZXR1cm5lZC4KIAogCisuLiBmdW5jdGlvbjo6IGdldF9pZGVudCgpCisKKyAgIFJldHVybiB0aGUgJ3RocmVhZCBpZGVudGlmaWVyJyBvZiB0aGUgY3VycmVudCB0aHJlYWQuICBUaGlzIGlzIGEgbm9uemVybworICAgaW50ZWdlci4gIEl0cyB2YWx1ZSBoYXMgbm8gZGlyZWN0IG1lYW5pbmc7IGl0IGlzIGludGVuZGVkIGFzIGEgbWFnaWMgY29va2llCisgICB0byBiZSB1c2VkIGUuZy4gdG8gaW5kZXggYSBkaWN0aW9uYXJ5IG9mIHRocmVhZC1zcGVjaWZpYyBkYXRhLiAgVGhyZWFkCisgICBpZGVudGlmaWVycyBtYXkgYmUgcmVjeWNsZWQgd2hlbiBhIHRocmVhZCBleGl0cyBhbmQgYW5vdGhlciB0aHJlYWQgaXMKKyAgIGNyZWF0ZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKIC4uIGZ1bmN0aW9uOjogZW51bWVyYXRlKCkKIAogICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgOmNsYXNzOmBUaHJlYWRgIG9iamVjdHMgY3VycmVudGx5IGFsaXZlLiAgVGhlIGxpc3QKQEAgLTY3LDg5ICs1Nyw2IEBACiAgICBhbmQgdGhyZWFkcyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHN0YXJ0ZWQuCiAKIAotLi4gZnVuY3Rpb246OiBFdmVudCgpCi0gICA6bm9pbmRleDoKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBldmVudCBvYmplY3QuICBBbiBldmVudCBtYW5hZ2VzIGEgZmxhZwotICAgdGhhdCBjYW4gYmUgc2V0IHRvIHRydWUgd2l0aCB0aGUgOm1ldGg6YH5FdmVudC5zZXRgIG1ldGhvZCBhbmQgcmVzZXQgdG8gZmFsc2UKLSAgIHdpdGggdGhlIDptZXRoOmBjbGVhcmAgbWV0aG9kLiAgVGhlIDptZXRoOmB3YWl0YCBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSBmbGFnCi0gICBpcyB0cnVlLgotCi0gICBTZWUgOnJlZjpgZXZlbnQtb2JqZWN0c2AuCi0KLQotLi4gY2xhc3M6OiBsb2NhbAotCi0gICBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aHJlYWQtbG9jYWwgZGF0YS4gIFRocmVhZC1sb2NhbCBkYXRhIGFyZSBkYXRhIHdob3NlCi0gICB2YWx1ZXMgYXJlIHRocmVhZCBzcGVjaWZpYy4gIFRvIG1hbmFnZSB0aHJlYWQtbG9jYWwgZGF0YSwganVzdCBjcmVhdGUgYW4KLSAgIGluc3RhbmNlIG9mIDpjbGFzczpgbG9jYWxgIChvciBhIHN1YmNsYXNzKSBhbmQgc3RvcmUgYXR0cmlidXRlcyBvbiBpdDo6Ci0KLSAgICAgIG15ZGF0YSA9IHRocmVhZGluZy5sb2NhbCgpCi0gICAgICBteWRhdGEueCA9IDEKLQotICAgVGhlIGluc3RhbmNlJ3MgdmFsdWVzIHdpbGwgYmUgZGlmZmVyZW50IGZvciBzZXBhcmF0ZSB0aHJlYWRzLgotCi0gICBGb3IgbW9yZSBkZXRhaWxzIGFuZCBleHRlbnNpdmUgZXhhbXBsZXMsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlCi0gICA6bW9kOmBfdGhyZWFkaW5nX2xvY2FsYCBtb2R1bGUuCi0KLQotLi4gZnVuY3Rpb246OiBMb2NrKCkKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBwcmltaXRpdmUgbG9jayBvYmplY3QuICBPbmNlIGEgdGhyZWFkIGhhcwotICAgYWNxdWlyZWQgaXQsIHN1YnNlcXVlbnQgYXR0ZW1wdHMgdG8gYWNxdWlyZSBpdCBibG9jaywgdW50aWwgaXQgaXMgcmVsZWFzZWQ7IGFueQotICAgdGhyZWFkIG1heSByZWxlYXNlIGl0LgotCi0gICBTZWUgOnJlZjpgbG9jay1vYmplY3RzYC4KLQotCi0uLiBmdW5jdGlvbjo6IFJMb2NrKCkKLQotICAgQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyByZWVudHJhbnQgbG9jayBvYmplY3QuIEEgcmVlbnRyYW50IGxvY2sKLSAgIG11c3QgYmUgcmVsZWFzZWQgYnkgdGhlIHRocmVhZCB0aGF0IGFjcXVpcmVkIGl0LiBPbmNlIGEgdGhyZWFkIGhhcyBhY3F1aXJlZCBhCi0gICByZWVudHJhbnQgbG9jaywgdGhlIHNhbWUgdGhyZWFkIG1heSBhY3F1aXJlIGl0IGFnYWluIHdpdGhvdXQgYmxvY2tpbmc7IHRoZQotICAgdGhyZWFkIG11c3QgcmVsZWFzZSBpdCBvbmNlIGZvciBlYWNoIHRpbWUgaXQgaGFzIGFjcXVpcmVkIGl0LgotCi0gICBTZWUgOnJlZjpgcmxvY2stb2JqZWN0c2AuCi0KLQotLi4gZnVuY3Rpb246OiBTZW1hcGhvcmUodmFsdWU9MSkKLSAgIDpub2luZGV4OgotCi0gICBBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbmV3IHNlbWFwaG9yZSBvYmplY3QuICBBIHNlbWFwaG9yZSBtYW5hZ2VzIGEKLSAgIGNvdW50ZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgOm1ldGg6YHJlbGVhc2VgIGNhbGxzIG1pbnVzIHRoZSBudW1iZXIgb2YKLSAgIDptZXRoOmBhY3F1aXJlYCBjYWxscywgcGx1cyBhbiBpbml0aWFsIHZhbHVlLiBUaGUgOm1ldGg6YGFjcXVpcmVgIG1ldGhvZCBibG9ja3MKLSAgIGlmIG5lY2Vzc2FyeSB1bnRpbCBpdCBjYW4gcmV0dXJuIHdpdGhvdXQgbWFraW5nIHRoZSBjb3VudGVyIG5lZ2F0aXZlLiAgSWYgbm90Ci0gICBnaXZlbiwgKnZhbHVlKiBkZWZhdWx0cyB0byAxLgotCi0gICBTZWUgOnJlZjpgc2VtYXBob3JlLW9iamVjdHNgLgotCi0KLS4uIGZ1bmN0aW9uOjogQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQotCi0gICBBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbmV3IGJvdW5kZWQgc2VtYXBob3JlIG9iamVjdC4gIEEgYm91bmRlZAotICAgc2VtYXBob3JlIGNoZWNrcyB0byBtYWtlIHN1cmUgaXRzIGN1cnJlbnQgdmFsdWUgZG9lc24ndCBleGNlZWQgaXRzIGluaXRpYWwKLSAgIHZhbHVlLiAgSWYgaXQgZG9lcywgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLiBJbiBtb3N0IHNpdHVhdGlvbnMgc2VtYXBob3JlcwotICAgYXJlIHVzZWQgdG8gZ3VhcmQgcmVzb3VyY2VzIHdpdGggbGltaXRlZCBjYXBhY2l0eS4gIElmIHRoZSBzZW1hcGhvcmUgaXMgcmVsZWFzZWQKLSAgIHRvbyBtYW55IHRpbWVzIGl0J3MgYSBzaWduIG9mIGEgYnVnLiAgSWYgbm90IGdpdmVuLCAqdmFsdWUqIGRlZmF1bHRzIHRvIDEuCi0KLQotLi4gY2xhc3M6OiBUaHJlYWQKLSAgIDpub2luZGV4OgotCi0gICBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHRocmVhZCBvZiBjb250cm9sLiAgVGhpcyBjbGFzcyBjYW4gYmUgc2FmZWx5Ci0gICBzdWJjbGFzc2VkIGluIGEgbGltaXRlZCBmYXNoaW9uLgotCi0gICBTZWUgOnJlZjpgdGhyZWFkLW9iamVjdHNgLgotCi0KLS4uIGNsYXNzOjogVGltZXIKLSAgIDpub2luZGV4OgotCi0gICBBIHRocmVhZCB0aGF0IGV4ZWN1dGVzIGEgZnVuY3Rpb24gYWZ0ZXIgYSBzcGVjaWZpZWQgaW50ZXJ2YWwgaGFzIHBhc3NlZC4KLQotICAgU2VlIDpyZWY6YHRpbWVyLW9iamVjdHNgLgotCi0KIC4uIGZ1bmN0aW9uOjogc2V0dHJhY2UoZnVuYykKIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IHRyYWNlIGZ1bmN0aW9uCkBAIC0xNzQsNyArODEsNyBAQAogICAgKnNpemUqIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgc3RhY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBzdWJzZXF1ZW50bHkgY3JlYXRlZAogICAgdGhyZWFkcywgYW5kIG11c3QgYmUgMCAodXNlIHBsYXRmb3JtIG9yIGNvbmZpZ3VyZWQgZGVmYXVsdCkgb3IgYSBwb3NpdGl2ZQogICAgaW50ZWdlciB2YWx1ZSBvZiBhdCBsZWFzdCAzMiw3NjggKDMya0IpLiBJZiBjaGFuZ2luZyB0aGUgdGhyZWFkIHN0YWNrIHNpemUgaXMKLSAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFRocmVhZEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgc3BlY2lmaWVkIHN0YWNrIHNpemUgaXMKKyAgIHVuc3VwcG9ydGVkLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIHNwZWNpZmllZCBzdGFjayBzaXplIGlzCiAgICBpbnZhbGlkLCBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBhbmQgdGhlIHN0YWNrIHNpemUgaXMgdW5tb2RpZmllZC4gIDMya0IKICAgIGlzIGN1cnJlbnRseSB0aGUgbWluaW11bSBzdXBwb3J0ZWQgc3RhY2sgc2l6ZSB2YWx1ZSB0byBndWFyYW50ZWUgc3VmZmljaWVudAogICAgc3RhY2sgc3BhY2UgZm9yIHRoZSBpbnRlcnByZXRlciBpdHNlbGYuICBOb3RlIHRoYXQgc29tZSBwbGF0Zm9ybXMgbWF5IGhhdmUKQEAgLTE5OCw3ICsxMDUsOCBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKIAotRGV0YWlsZWQgaW50ZXJmYWNlcyBmb3IgdGhlIG9iamVjdHMgYXJlIGRvY3VtZW50ZWQgYmVsb3cuCitUaGlzIG1vZHVsZSBkZWZpbmVzIGEgbnVtYmVyIG9mIGNsYXNzZXMsIHdoaWNoIGFyZSBkZXRhaWxlZCBpbiB0aGUgc2VjdGlvbnMKK2JlbG93LgogCiBUaGUgZGVzaWduIG9mIHRoaXMgbW9kdWxlIGlzIGxvb3NlbHkgYmFzZWQgb24gSmF2YSdzIHRocmVhZGluZyBtb2RlbC4gSG93ZXZlciwKIHdoZXJlIEphdmEgbWFrZXMgbG9ja3MgYW5kIGNvbmRpdGlvbiB2YXJpYWJsZXMgYmFzaWMgYmVoYXZpb3Igb2YgZXZlcnkgb2JqZWN0LApAQCAtMjExLDE3ICsxMTksMzggQEAKIEFsbCBvZiB0aGUgbWV0aG9kcyBkZXNjcmliZWQgYmVsb3cgYXJlIGV4ZWN1dGVkIGF0b21pY2FsbHkuCiAKIAorVGhyZWFkLUxvY2FsIERhdGEKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RocmVhZC1sb2NhbCBkYXRhIGlzIGRhdGEgd2hvc2UgdmFsdWVzIGFyZSB0aHJlYWQgc3BlY2lmaWMuICBUbyBtYW5hZ2UKK3RocmVhZC1sb2NhbCBkYXRhLCBqdXN0IGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YGxvY2FsYCAob3IgYQorc3ViY2xhc3MpIGFuZCBzdG9yZSBhdHRyaWJ1dGVzIG9uIGl0OjoKKworICBteWRhdGEgPSB0aHJlYWRpbmcubG9jYWwoKQorICBteWRhdGEueCA9IDEKKworVGhlIGluc3RhbmNlJ3MgdmFsdWVzIHdpbGwgYmUgZGlmZmVyZW50IGZvciBzZXBhcmF0ZSB0aHJlYWRzLgorCisKKy4uIGNsYXNzOjogbG9jYWwoKQorCisgICBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cyB0aHJlYWQtbG9jYWwgZGF0YS4KKworICAgRm9yIG1vcmUgZGV0YWlscyBhbmQgZXh0ZW5zaXZlIGV4YW1wbGVzLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZQorICAgOm1vZDpgX3RocmVhZGluZ19sb2NhbGAgbW9kdWxlLgorCisKIC4uIF90aHJlYWQtb2JqZWN0czoKIAogVGhyZWFkIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbiBhY3Rpdml0eSB0aGF0IGlzIHJ1biBpbiBhIHNlcGFyYXRlIHRocmVhZCBvZiBjb250cm9sLgotVGhlcmUgYXJlIHR3byB3YXlzIHRvIHNwZWNpZnkgdGhlIGFjdGl2aXR5OiBieSBwYXNzaW5nIGEgY2FsbGFibGUgb2JqZWN0IHRvIHRoZQotY29uc3RydWN0b3IsIG9yIGJ5IG92ZXJyaWRpbmcgdGhlIDptZXRoOmB+VGhyZWFkLnJ1bmAgbWV0aG9kIGluIGEgc3ViY2xhc3MuCi1ObyBvdGhlciBtZXRob2RzIChleGNlcHQgZm9yIHRoZSBjb25zdHJ1Y3Rvcikgc2hvdWxkIGJlIG92ZXJyaWRkZW4gaW4gYQotc3ViY2xhc3MuICBJbiBvdGhlciB3b3JkcywgICpvbmx5KiAgb3ZlcnJpZGUgdGhlIDptZXRoOmB+VGhyZWFkLl9faW5pdF9fYAotYW5kIDptZXRoOmB+VGhyZWFkLnJ1bmAgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLgorVGhlIDpjbGFzczpgVGhyZWFkYCBjbGFzcyByZXByZXNlbnRzIGFuIGFjdGl2aXR5IHRoYXQgaXMgcnVuIGluIGEgc2VwYXJhdGUKK3RocmVhZCBvZiBjb250cm9sLiAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIHNwZWNpZnkgdGhlIGFjdGl2aXR5OiBieSBwYXNzaW5nIGEKK2NhbGxhYmxlIG9iamVjdCB0byB0aGUgY29uc3RydWN0b3IsIG9yIGJ5IG92ZXJyaWRpbmcgdGhlIDptZXRoOmB+VGhyZWFkLnJ1bmAKK21ldGhvZCBpbiBhIHN1YmNsYXNzLiAgTm8gb3RoZXIgbWV0aG9kcyAoZXhjZXB0IGZvciB0aGUgY29uc3RydWN0b3IpIHNob3VsZCBiZQorb3ZlcnJpZGRlbiBpbiBhIHN1YmNsYXNzLiAgSW4gb3RoZXIgd29yZHMsICpvbmx5KiAgb3ZlcnJpZGUgdGhlCis6bWV0aDpgflRocmVhZC5fX2luaXRfX2AgYW5kIDptZXRoOmB+VGhyZWFkLnJ1bmAgbWV0aG9kcyBvZiB0aGlzIGNsYXNzLgogCiBPbmNlIGEgdGhyZWFkIG9iamVjdCBpcyBjcmVhdGVkLCBpdHMgYWN0aXZpdHkgbXVzdCBiZSBzdGFydGVkIGJ5IGNhbGxpbmcgdGhlCiB0aHJlYWQncyA6bWV0aDpgflRocmVhZC5zdGFydGAgbWV0aG9kLiAgVGhpcyBpbnZva2VzIHRoZSA6bWV0aDpgflRocmVhZC5ydW5gCkBAIC0yMzksMTAgKzE2OCwxMSBAQAogQSB0aHJlYWQgaGFzIGEgbmFtZS4gIFRoZSBuYW1lIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBhbmQgcmVhZCBvcgogY2hhbmdlZCB0aHJvdWdoIHRoZSA6YXR0cjpgflRocmVhZC5uYW1lYCBhdHRyaWJ1dGUuCiAKLUEgdGhyZWFkIGNhbiBiZSBmbGFnZ2VkIGFzIGEgImRhZW1vbiB0aHJlYWQiLiAgVGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGZsYWcKLWlzIHRoYXQgdGhlIGVudGlyZSBQeXRob24gcHJvZ3JhbSBleGl0cyB3aGVuIG9ubHkgZGFlbW9uIHRocmVhZHMgYXJlIGxlZnQuCi1UaGUgaW5pdGlhbCB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgY3JlYXRpbmcgdGhyZWFkLiAgVGhlIGZsYWcgY2FuIGJlCi1zZXQgdGhyb3VnaCB0aGUgOmF0dHI6YH5UaHJlYWQuZGFlbW9uYCBwcm9wZXJ0eS4KK0EgdGhyZWFkIGNhbiBiZSBmbGFnZ2VkIGFzIGEgImRhZW1vbiB0aHJlYWQiLiAgVGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGZsYWcgaXMKK3RoYXQgdGhlIGVudGlyZSBQeXRob24gcHJvZ3JhbSBleGl0cyB3aGVuIG9ubHkgZGFlbW9uIHRocmVhZHMgYXJlIGxlZnQuICBUaGUKK2luaXRpYWwgdmFsdWUgaXMgaW5oZXJpdGVkIGZyb20gdGhlIGNyZWF0aW5nIHRocmVhZC4gIFRoZSBmbGFnIGNhbiBiZSBzZXQKK3Rocm91Z2ggdGhlIDphdHRyOmB+VGhyZWFkLmRhZW1vbmAgcHJvcGVydHkgb3IgdGhlICpkYWVtb24qIGNvbnN0cnVjdG9yCithcmd1bWVudC4KIAogVGhlcmUgaXMgYSAibWFpbiB0aHJlYWQiIG9iamVjdDsgdGhpcyBjb3JyZXNwb25kcyB0byB0aGUgaW5pdGlhbCB0aHJlYWQgb2YKIGNvbnRyb2wgaW4gdGhlIFB5dGhvbiBwcm9ncmFtLiAgSXQgaXMgbm90IGEgZGFlbW9uIHRocmVhZC4KQEAgLTI1NSw3ICsxODUsOCBAQAogc2luY2UgaXQgaXMgaW1wb3NzaWJsZSB0byBkZXRlY3QgdGhlIHRlcm1pbmF0aW9uIG9mIGFsaWVuIHRocmVhZHMuCiAKIAotLi4gY2xhc3M6OiBUaHJlYWQoZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9KQorLi4gY2xhc3M6OiBUaHJlYWQoZ3JvdXA9Tm9uZSwgdGFyZ2V0PU5vbmUsIG5hbWU9Tm9uZSwgYXJncz0oKSwga3dhcmdzPXt9LCAqLCBcCisgICAgICAgICAgICAgICAgICBkYWVtb249Tm9uZSkKIAogICAgVGhpcyBjb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCB3aXRoIGtleXdvcmQgYXJndW1lbnRzLiAgQXJndW1lbnRzCiAgICBhcmU6CkBAIC0yNzQsMTAgKzIwNSwxNyBAQAogICAgKmt3YXJncyogaXMgYSBkaWN0aW9uYXJ5IG9mIGtleXdvcmQgYXJndW1lbnRzIGZvciB0aGUgdGFyZ2V0IGludm9jYXRpb24uCiAgICBEZWZhdWx0cyB0byBgYHt9YGAuCiAKKyAgIElmIG5vdCBgYE5vbmVgYCwgKmRhZW1vbiogZXhwbGljaXRseSBzZXRzIHdoZXRoZXIgdGhlIHRocmVhZCBpcyBkYWVtb25pYy4KKyAgIElmIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHRoZSBkYWVtb25pYyBwcm9wZXJ0eSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUKKyAgIGN1cnJlbnQgdGhyZWFkLgorCiAgICBJZiB0aGUgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRoZSBjb25zdHJ1Y3RvciwgaXQgbXVzdCBtYWtlIHN1cmUgdG8gaW52b2tlIHRoZQogICAgYmFzZSBjbGFzcyBjb25zdHJ1Y3RvciAoYGBUaHJlYWQuX19pbml0X18oKWBgKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZSB0bwogICAgdGhlIHRocmVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqZGFlbW9uKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogc3RhcnQoKQogCiAgICAgICBTdGFydCB0aGUgdGhyZWFkJ3MgYWN0aXZpdHkuCkBAIC0zNjgsNiArMzA2LDE4IEBACiAgICAgICBwcm9wZXJ0eSBpbnN0ZWFkLgogCiAKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRHVlIHRvIHRoZSA6dGVybTpgR2xvYmFsIEludGVycHJldGVyIExvY2tgLCBpbiBDUHl0aG9uIG9ubHkgb25lIHRocmVhZAorICAgY2FuIGV4ZWN1dGUgUHl0aG9uIGNvZGUgYXQgb25jZSAoZXZlbiB0aG91Z2ggY2VydGFpbiBwZXJmb3JtYW5jZS1vcmllbnRlZAorICAgbGlicmFyaWVzIG1pZ2h0IG92ZXJjb21lIHRoaXMgbGltaXRhdGlvbikuCisgICBJZiB5b3Ugd2FudCB5b3VyIGFwcGxpY2F0aW9uIHRvIG1ha2UgYmV0dGVyIG9mIHVzZSBvZiB0aGUgY29tcHV0YXRpb25hbAorICAgcmVzb3VyY2VzIG9mIG11bHRpLWNvcmUgbWFjaGluZXMsIHlvdSBhcmUgYWR2aXNlZCB0byB1c2UKKyAgIDptb2Q6YG11bHRpcHJvY2Vzc2luZ2Agb3IgOmNsYXNzOmBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvcmAuCisgICBIb3dldmVyLCB0aHJlYWRpbmcgaXMgc3RpbGwgYW4gYXBwcm9wcmlhdGUgbW9kZWwgaWYgeW91IHdhbnQgdG8gcnVuCisgICBtdWx0aXBsZSBJL08tYm91bmQgdGFza3Mgc2ltdWx0YW5lb3VzbHkuCisKKwogLi4gX2xvY2stb2JqZWN0czoKIAogTG9jayBPYmplY3RzCkBAIC0zOTksNDUgKzM0OSw1NSBAQAogQWxsIG1ldGhvZHMgYXJlIGV4ZWN1dGVkIGF0b21pY2FsbHkuCiAKIAotLi4gbWV0aG9kOjogTG9jay5hY3F1aXJlKGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpCisuLiBjbGFzczo6IExvY2soKQogCi0gICBBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgorICAgVGhlIGNsYXNzIGltcGxlbWVudGluZyBwcmltaXRpdmUgbG9jayBvYmplY3RzLiAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgYQorICAgbG9jaywgc3Vic2VxdWVudCBhdHRlbXB0cyB0byBhY3F1aXJlIGl0IGJsb2NrLCB1bnRpbCBpdCBpcyByZWxlYXNlZDsgYW55CisgICB0aHJlYWQgbWF5IHJlbGVhc2UgaXQuCiAKLSAgIFdoZW4gaW52b2tlZCB3aXRoIHRoZSAqYmxvY2tpbmcqIGFyZ3VtZW50IHNldCB0byBgYFRydWVgYCAodGhlIGRlZmF1bHQpLAotICAgYmxvY2sgdW50aWwgdGhlIGxvY2sgaXMgdW5sb2NrZWQsIHRoZW4gc2V0IGl0IHRvIGxvY2tlZCBhbmQgcmV0dXJuIGBgVHJ1ZWBgLgotCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gYGBGYWxzZWBgLCBkbyBub3QgYmxvY2suCi0gICBJZiBhIGNhbGwgd2l0aCAqYmxvY2tpbmcqIHNldCB0byBgYFRydWVgYCB3b3VsZCBibG9jaywgcmV0dXJuIGBgRmFsc2VgYAotICAgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgc2V0IHRoZSBsb2NrIHRvIGxvY2tlZCBhbmQgcmV0dXJuIGBgVHJ1ZWBgLgotCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgZmxvYXRpbmctcG9pbnQgKnRpbWVvdXQqIGFyZ3VtZW50IHNldCB0byBhIHBvc2l0aXZlCi0gICB2YWx1ZSwgYmxvY2sgZm9yIGF0IG1vc3QgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBieSAqdGltZW91dCoKLSAgIGFuZCBhcyBsb25nIGFzIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZC4gIEEgbmVnYXRpdmUgKnRpbWVvdXQqIGFyZ3VtZW50Ci0gICBzcGVjaWZpZXMgYW4gdW5ib3VuZGVkIHdhaXQuICBJdCBpcyBmb3JiaWRkZW4gdG8gc3BlY2lmeSBhICp0aW1lb3V0KgotICAgd2hlbiAqYmxvY2tpbmcqIGlzIGZhbHNlLgotCi0gICBUaGUgcmV0dXJuIHZhbHVlIGlzIGBgVHJ1ZWBgIGlmIHRoZSBsb2NrIGlzIGFjcXVpcmVkIHN1Y2Nlc3NmdWxseSwKLSAgIGBgRmFsc2VgYCBpZiBub3QgKGZvciBleGFtcGxlIGlmIHRoZSAqdGltZW91dCogZXhwaXJlZCkuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBUaGUgKnRpbWVvdXQqIHBhcmFtZXRlciBpcyBuZXcuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBMb2NrIGFjcXVpcmVzIGNhbiBub3cgYmUgaW50ZXJydXB0ZWQgYnkgc2lnbmFscyBvbiBQT1NJWC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBDaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCiAKIAotLi4gbWV0aG9kOjogTG9jay5yZWxlYXNlKCkKKyAgIC4uIG1ldGhvZDo6IGFjcXVpcmUoYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSkKIAotICAgUmVsZWFzZSBhIGxvY2suICBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLCBub3Qgb25seSB0aGUgdGhyZWFkCi0gICB3aGljaCBoYXMgYWNxdWlyZWQgdGhlIGxvY2suCisgICAgICBBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgogCi0gICBXaGVuIHRoZSBsb2NrIGlzIGxvY2tlZCwgcmVzZXQgaXQgdG8gdW5sb2NrZWQsIGFuZCByZXR1cm4uICBJZiBhbnkgb3RoZXIgdGhyZWFkcwotICAgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZSBvZiB0aGVtCi0gICB0byBwcm9jZWVkLgorICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCksCisgICAgICBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZCwgdGhlbiBzZXQgaXQgdG8gbG9ja2VkIGFuZCByZXR1cm4gYGBUcnVlYGAuCiAKLSAgIFdoZW4gaW52b2tlZCBvbiBhbiB1bmxvY2tlZCBsb2NrLCBhIDpleGM6YFRocmVhZEVycm9yYCBpcyByYWlzZWQuCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gYGBGYWxzZWBgLCBkbyBub3QgYmxvY2suCisgICAgICBJZiBhIGNhbGwgd2l0aCAqYmxvY2tpbmcqIHNldCB0byBgYFRydWVgYCB3b3VsZCBibG9jaywgcmV0dXJuIGBgRmFsc2VgYAorICAgICAgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgc2V0IHRoZSBsb2NrIHRvIGxvY2tlZCBhbmQgcmV0dXJuIGBgVHJ1ZWBgLgogCi0gICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgZmxvYXRpbmctcG9pbnQgKnRpbWVvdXQqIGFyZ3VtZW50IHNldCB0byBhIHBvc2l0aXZlCisgICAgICB2YWx1ZSwgYmxvY2sgZm9yIGF0IG1vc3QgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBieSAqdGltZW91dCoKKyAgICAgIGFuZCBhcyBsb25nIGFzIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZC4gIEEgbmVnYXRpdmUgKnRpbWVvdXQqIGFyZ3VtZW50CisgICAgICBzcGVjaWZpZXMgYW4gdW5ib3VuZGVkIHdhaXQuICBJdCBpcyBmb3JiaWRkZW4gdG8gc3BlY2lmeSBhICp0aW1lb3V0KgorICAgICAgd2hlbiAqYmxvY2tpbmcqIGlzIGZhbHNlLgorCisgICAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIGBgVHJ1ZWBgIGlmIHRoZSBsb2NrIGlzIGFjcXVpcmVkIHN1Y2Nlc3NmdWxseSwKKyAgICAgIGBgRmFsc2VgYCBpZiBub3QgKGZvciBleGFtcGxlIGlmIHRoZSAqdGltZW91dCogZXhwaXJlZCkuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBUaGUgKnRpbWVvdXQqIHBhcmFtZXRlciBpcyBuZXcuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBMb2NrIGFjcXVpcmVzIGNhbiBub3cgYmUgaW50ZXJydXB0ZWQgYnkgc2lnbmFscyBvbiBQT1NJWC4KKworCisgICAuLiBtZXRob2Q6OiByZWxlYXNlKCkKKworICAgICAgUmVsZWFzZSBhIGxvY2suICBUaGlzIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLCBub3Qgb25seSB0aGUgdGhyZWFkCisgICAgICB3aGljaCBoYXMgYWNxdWlyZWQgdGhlIGxvY2suCisKKyAgICAgIFdoZW4gdGhlIGxvY2sgaXMgbG9ja2VkLCByZXNldCBpdCB0byB1bmxvY2tlZCwgYW5kIHJldHVybi4gIElmIGFueSBvdGhlciB0aHJlYWRzCisgICAgICBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgdW5sb2NrZWQsIGFsbG93IGV4YWN0bHkgb25lIG9mIHRoZW0KKyAgICAgIHRvIHByb2NlZWQuCisKKyAgICAgIFdoZW4gaW52b2tlZCBvbiBhbiB1bmxvY2tlZCBsb2NrLCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCiAKIAogLi4gX3Jsb2NrLW9iamVjdHM6CkBAIC00NjEsNDcgKzQyMSw1OSBAQAogUmVlbnRyYW50IGxvY2tzIGFsc28gc3VwcG9ydCB0aGUgOnJlZjpgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIDx3aXRoLWxvY2tzPmAuCiAKIAotLi4gbWV0aG9kOjogUkxvY2suYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PS0xKQorLi4gY2xhc3M6OiBSTG9jaygpCiAKLSAgIEFjcXVpcmUgYSBsb2NrLCBibG9ja2luZyBvciBub24tYmxvY2tpbmcuCisgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgcmVlbnRyYW50IGxvY2sgb2JqZWN0cy4gIEEgcmVlbnRyYW50IGxvY2sgbXVzdCBiZQorICAgcmVsZWFzZWQgYnkgdGhlIHRocmVhZCB0aGF0IGFjcXVpcmVkIGl0LiAgT25jZSBhIHRocmVhZCBoYXMgYWNxdWlyZWQgYQorICAgcmVlbnRyYW50IGxvY2ssIHRoZSBzYW1lIHRocmVhZCBtYXkgYWNxdWlyZSBpdCBhZ2FpbiB3aXRob3V0IGJsb2NraW5nOyB0aGUKKyAgIHRocmVhZCBtdXN0IHJlbGVhc2UgaXQgb25jZSBmb3IgZWFjaCB0aW1lIGl0IGhhcyBhY3F1aXJlZCBpdC4KIAotICAgV2hlbiBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzOiBpZiB0aGlzIHRocmVhZCBhbHJlYWR5IG93bnMgdGhlIGxvY2ssIGluY3JlbWVudAotICAgdGhlIHJlY3Vyc2lvbiBsZXZlbCBieSBvbmUsIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuICBPdGhlcndpc2UsIGlmIGFub3RoZXIKLSAgIHRocmVhZCBvd25zIHRoZSBsb2NrLCBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZC4gIE9uY2UgdGhlIGxvY2sgaXMKLSAgIHVubG9ja2VkIChub3Qgb3duZWQgYnkgYW55IHRocmVhZCksIHRoZW4gZ3JhYiBvd25lcnNoaXAsIHNldCB0aGUgcmVjdXJzaW9uIGxldmVsCi0gICB0byBvbmUsIGFuZCByZXR1cm4uICBJZiBtb3JlIHRoYW4gb25lIHRocmVhZCBpcyBibG9ja2VkIHdhaXRpbmcgdW50aWwgdGhlIGxvY2sKLSAgIGlzIHVubG9ja2VkLCBvbmx5IG9uZSBhdCBhIHRpbWUgd2lsbCBiZSBhYmxlIHRvIGdyYWIgb3duZXJzaGlwIG9mIHRoZSBsb2NrLgotICAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlIGluIHRoaXMgY2FzZS4KLQotICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIHRydWUsIGRvIHRoZSBzYW1lIHRoaW5nIGFzIHdoZW4KLSAgIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgotCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gZmFsc2UsIGRvIG5vdCBibG9jay4gIElmIGEgY2FsbAotICAgd2l0aG91dCBhbiBhcmd1bWVudCB3b3VsZCBibG9jaywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5OyBvdGhlcndpc2UsIGRvIHRoZQotICAgc2FtZSB0aGluZyBhcyB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgotCi0gICBXaGVuIGludm9rZWQgd2l0aCB0aGUgZmxvYXRpbmctcG9pbnQgKnRpbWVvdXQqIGFyZ3VtZW50IHNldCB0byBhIHBvc2l0aXZlCi0gICB2YWx1ZSwgYmxvY2sgZm9yIGF0IG1vc3QgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBieSAqdGltZW91dCoKLSAgIGFuZCBhcyBsb25nIGFzIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZC4gIFJldHVybiB0cnVlIGlmIHRoZSBsb2NrIGhhcwotICAgYmVlbiBhY3F1aXJlZCwgZmFsc2UgaWYgdGhlIHRpbWVvdXQgaGFzIGVsYXBzZWQuCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBUaGUgKnRpbWVvdXQqIHBhcmFtZXRlciBpcyBuZXcuCisgICBOb3RlIHRoYXQgYGBSTG9ja2BgIGlzIGFjdHVhbGx5IGEgZmFjdG9yeSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIGluc3RhbmNlCisgICBvZiB0aGUgbW9zdCBlZmZpY2llbnQgdmVyc2lvbiBvZiB0aGUgY29uY3JldGUgUkxvY2sgY2xhc3MgdGhhdCBpcyBzdXBwb3J0ZWQKKyAgIGJ5IHRoZSBwbGF0Zm9ybS4KIAogCi0uLiBtZXRob2Q6OiBSTG9jay5yZWxlYXNlKCkKKyAgIC4uIG1ldGhvZDo6IGFjcXVpcmUoYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD0tMSkKIAotICAgUmVsZWFzZSBhIGxvY2ssIGRlY3JlbWVudGluZyB0aGUgcmVjdXJzaW9uIGxldmVsLiAgSWYgYWZ0ZXIgdGhlIGRlY3JlbWVudCBpdCBpcwotICAgemVybywgcmVzZXQgdGhlIGxvY2sgdG8gdW5sb2NrZWQgKG5vdCBvd25lZCBieSBhbnkgdGhyZWFkKSwgYW5kIGlmIGFueSBvdGhlcgotICAgdGhyZWFkcyBhcmUgYmxvY2tlZCB3YWl0aW5nIGZvciB0aGUgbG9jayB0byBiZWNvbWUgdW5sb2NrZWQsIGFsbG93IGV4YWN0bHkgb25lCi0gICBvZiB0aGVtIHRvIHByb2NlZWQuICBJZiBhZnRlciB0aGUgZGVjcmVtZW50IHRoZSByZWN1cnNpb24gbGV2ZWwgaXMgc3RpbGwKLSAgIG5vbnplcm8sIHRoZSBsb2NrIHJlbWFpbnMgbG9ja2VkIGFuZCBvd25lZCBieSB0aGUgY2FsbGluZyB0aHJlYWQuCisgICAgICBBY3F1aXJlIGEgbG9jaywgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nLgogCi0gICBPbmx5IGNhbGwgdGhpcyBtZXRob2Qgd2hlbiB0aGUgY2FsbGluZyB0aHJlYWQgb3ducyB0aGUgbG9jay4gQQotICAgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIGxvY2sgaXMKLSAgIHVubG9ja2VkLgorICAgICAgV2hlbiBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzOiBpZiB0aGlzIHRocmVhZCBhbHJlYWR5IG93bnMgdGhlIGxvY2ssIGluY3JlbWVudAorICAgICAgdGhlIHJlY3Vyc2lvbiBsZXZlbCBieSBvbmUsIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuICBPdGhlcndpc2UsIGlmIGFub3RoZXIKKyAgICAgIHRocmVhZCBvd25zIHRoZSBsb2NrLCBibG9jayB1bnRpbCB0aGUgbG9jayBpcyB1bmxvY2tlZC4gIE9uY2UgdGhlIGxvY2sgaXMKKyAgICAgIHVubG9ja2VkIChub3Qgb3duZWQgYnkgYW55IHRocmVhZCksIHRoZW4gZ3JhYiBvd25lcnNoaXAsIHNldCB0aGUgcmVjdXJzaW9uIGxldmVsCisgICAgICB0byBvbmUsIGFuZCByZXR1cm4uICBJZiBtb3JlIHRoYW4gb25lIHRocmVhZCBpcyBibG9ja2VkIHdhaXRpbmcgdW50aWwgdGhlIGxvY2sKKyAgICAgIGlzIHVubG9ja2VkLCBvbmx5IG9uZSBhdCBhIHRpbWUgd2lsbCBiZSBhYmxlIHRvIGdyYWIgb3duZXJzaGlwIG9mIHRoZSBsb2NrLgorICAgICAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlIGluIHRoaXMgY2FzZS4KIAotICAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlLgorICAgICAgV2hlbiBpbnZva2VkIHdpdGggdGhlICpibG9ja2luZyogYXJndW1lbnQgc2V0IHRvIHRydWUsIGRvIHRoZSBzYW1lIHRoaW5nIGFzIHdoZW4KKyAgICAgIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgorCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgKmJsb2NraW5nKiBhcmd1bWVudCBzZXQgdG8gZmFsc2UsIGRvIG5vdCBibG9jay4gIElmIGEgY2FsbAorICAgICAgd2l0aG91dCBhbiBhcmd1bWVudCB3b3VsZCBibG9jaywgcmV0dXJuIGZhbHNlIGltbWVkaWF0ZWx5OyBvdGhlcndpc2UsIGRvIHRoZQorICAgICAgc2FtZSB0aGluZyBhcyB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgorCisgICAgICBXaGVuIGludm9rZWQgd2l0aCB0aGUgZmxvYXRpbmctcG9pbnQgKnRpbWVvdXQqIGFyZ3VtZW50IHNldCB0byBhIHBvc2l0aXZlCisgICAgICB2YWx1ZSwgYmxvY2sgZm9yIGF0IG1vc3QgdGhlIG51bWJlciBvZiBzZWNvbmRzIHNwZWNpZmllZCBieSAqdGltZW91dCoKKyAgICAgIGFuZCBhcyBsb25nIGFzIHRoZSBsb2NrIGNhbm5vdCBiZSBhY3F1aXJlZC4gIFJldHVybiB0cnVlIGlmIHRoZSBsb2NrIGhhcworICAgICAgYmVlbiBhY3F1aXJlZCwgZmFsc2UgaWYgdGhlIHRpbWVvdXQgaGFzIGVsYXBzZWQuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBUaGUgKnRpbWVvdXQqIHBhcmFtZXRlciBpcyBuZXcuCisKKworICAgLi4gbWV0aG9kOjogcmVsZWFzZSgpCisKKyAgICAgIFJlbGVhc2UgYSBsb2NrLCBkZWNyZW1lbnRpbmcgdGhlIHJlY3Vyc2lvbiBsZXZlbC4gIElmIGFmdGVyIHRoZSBkZWNyZW1lbnQgaXQgaXMKKyAgICAgIHplcm8sIHJlc2V0IHRoZSBsb2NrIHRvIHVubG9ja2VkIChub3Qgb3duZWQgYnkgYW55IHRocmVhZCksIGFuZCBpZiBhbnkgb3RoZXIKKyAgICAgIHRocmVhZHMgYXJlIGJsb2NrZWQgd2FpdGluZyBmb3IgdGhlIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZQorICAgICAgb2YgdGhlbSB0byBwcm9jZWVkLiAgSWYgYWZ0ZXIgdGhlIGRlY3JlbWVudCB0aGUgcmVjdXJzaW9uIGxldmVsIGlzIHN0aWxsCisgICAgICBub256ZXJvLCB0aGUgbG9jayByZW1haW5zIGxvY2tlZCBhbmQgb3duZWQgYnkgdGhlIGNhbGxpbmcgdGhyZWFkLgorCisgICAgICBPbmx5IGNhbGwgdGhpcyBtZXRob2Qgd2hlbiB0aGUgY2FsbGluZyB0aHJlYWQgb3ducyB0aGUgbG9jay4gQQorICAgICAgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQgaWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIGxvY2sgaXMKKyAgICAgIHVubG9ja2VkLgorCisgICAgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuCiAKIAogLi4gX2NvbmRpdGlvbi1vYmplY3RzOgpAQCAtNTM2LDEwICs1MDgsNiBAQAogdGhlIHRocmVhZCB0aGF0IGNhbGxlZCA6bWV0aDpgfkNvbmRpdGlvbi5ub3RpZnlgIG9yIDptZXRoOmB+Q29uZGl0aW9uLm5vdGlmeV9hbGxgCiBmaW5hbGx5IHJlbGlucXVpc2hlcyBvd25lcnNoaXAgb2YgdGhlIGxvY2suCiAKLQotVXNhZ2UKLV5eXl5eCi0KIFRoZSB0eXBpY2FsIHByb2dyYW1taW5nIHN0eWxlIHVzaW5nIGNvbmRpdGlvbiB2YXJpYWJsZXMgdXNlcyB0aGUgbG9jayB0bwogc3luY2hyb25pemUgYWNjZXNzIHRvIHNvbWUgc2hhcmVkIHN0YXRlOyB0aHJlYWRzIHRoYXQgYXJlIGludGVyZXN0ZWQgaW4gYQogcGFydGljdWxhciBjaGFuZ2Ugb2Ygc3RhdGUgY2FsbCA6bWV0aDpgfkNvbmRpdGlvbi53YWl0YCByZXBlYXRlZGx5IHVudGlsIHRoZXkKQEAgLTU3OCwxNSArNTQ2LDE4IEBACiBpdGVtIHRvIHRoZSBidWZmZXIgb25seSBuZWVkcyB0byB3YWtlIHVwIG9uZSBjb25zdW1lciB0aHJlYWQuCiAKIAotSW50ZXJmYWNlCi1eXl5eXl5eXl4KLQogLi4gY2xhc3M6OiBDb25kaXRpb24obG9jaz1Ob25lKQogCisgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgY29uZGl0aW9uIHZhcmlhYmxlIG9iamVjdHMuICBBIGNvbmRpdGlvbiB2YXJpYWJsZQorICAgYWxsb3dzIG9uZSBvciBtb3JlIHRocmVhZHMgdG8gd2FpdCB1bnRpbCB0aGV5IGFyZSBub3RpZmllZCBieSBhbm90aGVyIHRocmVhZC4KKwogICAgSWYgdGhlICpsb2NrKiBhcmd1bWVudCBpcyBnaXZlbiBhbmQgbm90IGBgTm9uZWBgLCBpdCBtdXN0IGJlIGEgOmNsYXNzOmBMb2NrYAogICAgb3IgOmNsYXNzOmBSTG9ja2Agb2JqZWN0LCBhbmQgaXQgaXMgdXNlZCBhcyB0aGUgdW5kZXJseWluZyBsb2NrLiAgT3RoZXJ3aXNlLAogICAgYSBuZXcgOmNsYXNzOmBSTG9ja2Agb2JqZWN0IGlzIGNyZWF0ZWQgYW5kIHVzZWQgYXMgdGhlIHVuZGVybHlpbmcgbG9jay4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGNoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KKwogICAgLi4gbWV0aG9kOjogYWNxdWlyZSgqYXJncykKIAogICAgICAgQWNxdWlyZSB0aGUgdW5kZXJseWluZyBsb2NrLiBUaGlzIG1ldGhvZCBjYWxscyB0aGUgY29ycmVzcG9uZGluZyBtZXRob2Qgb24KQEAgLTY5NiwxMCArNjY3LDE5IEBACiAKIC4uIGNsYXNzOjogU2VtYXBob3JlKHZhbHVlPTEpCiAKKyAgIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBzZW1hcGhvcmUgb2JqZWN0cy4gIEEgc2VtYXBob3JlIG1hbmFnZXMgYSBjb3VudGVyCisgICByZXByZXNlbnRpbmcgdGhlIG51bWJlciBvZiA6bWV0aDpgcmVsZWFzZWAgY2FsbHMgbWludXMgdGhlIG51bWJlciBvZgorICAgOm1ldGg6YGFjcXVpcmVgIGNhbGxzLCBwbHVzIGFuIGluaXRpYWwgdmFsdWUuICBUaGUgOm1ldGg6YGFjcXVpcmVgIG1ldGhvZAorICAgYmxvY2tzIGlmIG5lY2Vzc2FyeSB1bnRpbCBpdCBjYW4gcmV0dXJuIHdpdGhvdXQgbWFraW5nIHRoZSBjb3VudGVyIG5lZ2F0aXZlLgorICAgSWYgbm90IGdpdmVuLCAqdmFsdWUqIGRlZmF1bHRzIHRvIDEuCisKICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCBnaXZlcyB0aGUgaW5pdGlhbCAqdmFsdWUqIGZvciB0aGUgaW50ZXJuYWwgY291bnRlcjsgaXQKICAgIGRlZmF1bHRzIHRvIGBgMWBgLiBJZiB0aGUgKnZhbHVlKiBnaXZlbiBpcyBsZXNzIHRoYW4gMCwgOmV4YzpgVmFsdWVFcnJvcmAgaXMKICAgIHJhaXNlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGNoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KKwogICAgLi4gbWV0aG9kOjogYWNxdWlyZShibG9ja2luZz1UcnVlLCB0aW1lb3V0PU5vbmUpCiAKICAgICAgIEFjcXVpcmUgYSBzZW1hcGhvcmUuCkBAIC03MzIsNiArNzEyLDE4IEBACiAgICAgICB0aGFuIHplcm8gYWdhaW4sIHdha2UgdXAgdGhhdCB0aHJlYWQuCiAKIAorLi4gY2xhc3M6OiBCb3VuZGVkU2VtYXBob3JlKHZhbHVlPTEpCisKKyAgIENsYXNzIGltcGxlbWVudGluZyBib3VuZGVkIHNlbWFwaG9yZSBvYmplY3RzLiAgQSBib3VuZGVkIHNlbWFwaG9yZSBjaGVja3MgdG8KKyAgIG1ha2Ugc3VyZSBpdHMgY3VycmVudCB2YWx1ZSBkb2Vzbid0IGV4Y2VlZCBpdHMgaW5pdGlhbCB2YWx1ZS4gIElmIGl0IGRvZXMsCisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuIEluIG1vc3Qgc2l0dWF0aW9ucyBzZW1hcGhvcmVzIGFyZSB1c2VkIHRvIGd1YXJkCisgICByZXNvdXJjZXMgd2l0aCBsaW1pdGVkIGNhcGFjaXR5LiAgSWYgdGhlIHNlbWFwaG9yZSBpcyByZWxlYXNlZCB0b28gbWFueSB0aW1lcworICAgaXQncyBhIHNpZ24gb2YgYSBidWcuICBJZiBub3QgZ2l2ZW4sICp2YWx1ZSogZGVmYXVsdHMgdG8gMS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIGNoYW5nZWQgZnJvbSBhIGZhY3RvcnkgZnVuY3Rpb24gdG8gYSBjbGFzcy4KKworCiAuLiBfc2VtYXBob3JlLWV4YW1wbGVzOgogCiA6Y2xhc3M6YFNlbWFwaG9yZWAgRXhhbXBsZQpAQCAtNzQzLDcgKzczNSw3IEBACiBtYWluIHRocmVhZCB3b3VsZCBpbml0aWFsaXplIHRoZSBzZW1hcGhvcmU6OgogCiAgICBtYXhjb25uZWN0aW9ucyA9IDUKLSAgIC4uLgorICAgIyAuLi4KICAgIHBvb2xfc2VtYSA9IEJvdW5kZWRTZW1hcGhvcmUodmFsdWU9bWF4Y29ubmVjdGlvbnMpCiAKIE9uY2Ugc3Bhd25lZCwgd29ya2VyIHRocmVhZHMgY2FsbCB0aGUgc2VtYXBob3JlJ3MgYWNxdWlyZSBhbmQgcmVsZWFzZSBtZXRob2RzCkBAIC03NTIsNyArNzQ0LDcgQEAKICAgIHdpdGggcG9vbF9zZW1hOgogICAgICAgIGNvbm4gPSBjb25uZWN0ZGIoKQogICAgICAgIHRyeToKLSAgICAgICAgICAgLi4uIHVzZSBjb25uZWN0aW9uIC4uLgorICAgICAgICAgICAjIC4uLiB1c2UgY29ubmVjdGlvbiAuLi4KICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICBjb25uLmNsb3NlKCkKIApAQCAtNzc1LDcgKzc2NywxMyBAQAogCiAuLiBjbGFzczo6IEV2ZW50KCkKIAotICAgVGhlIGludGVybmFsIGZsYWcgaXMgaW5pdGlhbGx5IGZhbHNlLgorICAgQ2xhc3MgaW1wbGVtZW50aW5nIGV2ZW50IG9iamVjdHMuICBBbiBldmVudCBtYW5hZ2VzIGEgZmxhZyB0aGF0IGNhbiBiZSBzZXQgdG8KKyAgIHRydWUgd2l0aCB0aGUgOm1ldGg6YH5FdmVudC5zZXRgIG1ldGhvZCBhbmQgcmVzZXQgdG8gZmFsc2Ugd2l0aCB0aGUKKyAgIDptZXRoOmBjbGVhcmAgbWV0aG9kLiAgVGhlIDptZXRoOmB3YWl0YCBtZXRob2QgYmxvY2tzIHVudGlsIHRoZSBmbGFnIGlzIHRydWUuCisgICBUaGUgZmxhZyBpcyBpbml0aWFsbHkgZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBjaGFuZ2VkIGZyb20gYSBmYWN0b3J5IGZ1bmN0aW9uIHRvIGEgY2xhc3MuCiAKICAgIC4uIG1ldGhvZDo6IGlzX3NldCgpCiAKQEAgLTg0MCw2ICs4MzgsOSBAQAogICAgQ3JlYXRlIGEgdGltZXIgdGhhdCB3aWxsIHJ1biAqZnVuY3Rpb24qIHdpdGggYXJndW1lbnRzICphcmdzKiBhbmQgIGtleXdvcmQKICAgIGFyZ3VtZW50cyAqa3dhcmdzKiwgYWZ0ZXIgKmludGVydmFsKiBzZWNvbmRzIGhhdmUgcGFzc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgY2hhbmdlZCBmcm9tIGEgZmFjdG9yeSBmdW5jdGlvbiB0byBhIGNsYXNzLgorCiAgICAuLiBtZXRob2Q6OiBjYW5jZWwoKQogCiAgICAgICBTdG9wIHRoZSB0aW1lciwgYW5kIGNhbmNlbCB0aGUgZXhlY3V0aW9uIG9mIHRoZSB0aW1lcidzIGFjdGlvbi4gIFRoaXMgd2lsbApAQCAtOTczLDI3ICs5NzQsMyBAQAogQ3VycmVudGx5LCA6Y2xhc3M6YExvY2tgLCA6Y2xhc3M6YFJMb2NrYCwgOmNsYXNzOmBDb25kaXRpb25gLAogOmNsYXNzOmBTZW1hcGhvcmVgLCBhbmQgOmNsYXNzOmBCb3VuZGVkU2VtYXBob3JlYCBvYmplY3RzIG1heSBiZSB1c2VkIGFzCiA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50IGNvbnRleHQgbWFuYWdlcnMuCi0KLQotLi4gX3RocmVhZGVkLWltcG9ydHM6Ci0KLUltcG9ydGluZyBpbiB0aHJlYWRlZCBjb2RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1XaGlsZSB0aGUgaW1wb3J0IG1hY2hpbmVyeSBpcyB0aHJlYWQtc2FmZSwgdGhlcmUgYXJlIHR3byBrZXkgcmVzdHJpY3Rpb25zIG9uCi10aHJlYWRlZCBpbXBvcnRzIGR1ZSB0byBpbmhlcmVudCBsaW1pdGF0aW9ucyBpbiB0aGUgd2F5IHRoYXQgdGhyZWFkLXNhZmV0eSBpcwotcHJvdmlkZWQ6Ci0KLSogRmlyc3RseSwgb3RoZXIgdGhhbiBpbiB0aGUgbWFpbiBtb2R1bGUsIGFuIGltcG9ydCBzaG91bGQgbm90IGhhdmUgdGhlCi0gIHNpZGUgZWZmZWN0IG9mIHNwYXduaW5nIGEgbmV3IHRocmVhZCBhbmQgdGhlbiB3YWl0aW5nIGZvciB0aGF0IHRocmVhZCBpbgotICBhbnkgd2F5LiBGYWlsaW5nIHRvIGFiaWRlIGJ5IHRoaXMgcmVzdHJpY3Rpb24gY2FuIGxlYWQgdG8gYSBkZWFkbG9jayBpZgotICB0aGUgc3Bhd25lZCB0aHJlYWQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBhdHRlbXB0cyB0byBpbXBvcnQgYSBtb2R1bGUuCi0qIFNlY29uZGx5LCBhbGwgaW1wb3J0IGF0dGVtcHRzIG11c3QgYmUgY29tcGxldGVkIGJlZm9yZSB0aGUgaW50ZXJwcmV0ZXIKLSAgc3RhcnRzIHNodXR0aW5nIGl0c2VsZiBkb3duLiBUaGlzIGNhbiBiZSBtb3N0IGVhc2lseSBhY2hpZXZlZCBieSBvbmx5Ci0gIHBlcmZvcm1pbmcgaW1wb3J0cyBmcm9tIG5vbi1kYWVtb24gdGhyZWFkcyBjcmVhdGVkIHRocm91Z2ggdGhlIHRocmVhZGluZwotICBtb2R1bGUuIERhZW1vbiB0aHJlYWRzIGFuZCB0aHJlYWRzIGNyZWF0ZWQgZGlyZWN0bHkgd2l0aCB0aGUgdGhyZWFkCi0gIG1vZHVsZSB3aWxsIHJlcXVpcmUgc29tZSBvdGhlciBmb3JtIG9mIHN5bmNocm9uaXphdGlvbiB0byBlbnN1cmUgdGhleSBkbwotICBub3QgYXR0ZW1wdCBpbXBvcnRzIGFmdGVyIHN5c3RlbSBzaHV0ZG93biBoYXMgY29tbWVuY2VkLiBGYWlsdXJlIHRvCi0gIGFiaWRlIGJ5IHRoaXMgcmVzdHJpY3Rpb24gd2lsbCBsZWFkIHRvIGludGVybWl0dGVudCBleGNlcHRpb25zIGFuZAotICBjcmFzaGVzIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93biAoYXMgdGhlIGxhdGUgaW1wb3J0cyBhdHRlbXB0IHRvCi0gIGFjY2VzcyBtYWNoaW5lcnkgd2hpY2ggaXMgbm8gbG9uZ2VyIGluIGEgdmFsaWQgc3RhdGUpLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZS5yc3QgYi9Eb2MvbGlicmFyeS90aW1lLnJzdAppbmRleCBlMGM3MDA3Li5iYWQzZjQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1lLnJzdApAQCAtNDEsMjUgKzQxLDYgQEAKICAgcGFyc2VkLCB0aGV5IGFyZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBQT1NJWCBhbmQgSVNPIEMgc3RhbmRhcmRzOiB2YWx1ZXMKICAgNjktLTk5IGFyZSBtYXBwZWQgdG8gMTk2OS0tMTk5OSwgYW5kIHZhbHVlcyAwLS02OCBhcmUgbWFwcGVkIHRvIDIwMDAtLTIwNjguCiAKLSAgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHllYXJzIHdpdGggbGVzcyB0aGFuIDQgZGlnaXRzIGFyZSB0cmVhdGVkCi0gIHNwZWNpYWxseSBieSA6ZnVuYzpgYXNjdGltZWAsIDpmdW5jOmBta3RpbWVgLCBhbmQgOmZ1bmM6YHN0cmZ0aW1lYCBmdW5jdGlvbnMKLSAgdGhhdCBvcGVyYXRlIG9uIGEgOS10dXBsZSBvciA6Y2xhc3M6YHN0cnVjdF90aW1lYCB2YWx1ZXMuIElmIHllYXIgKHRoZSBmaXJzdAotICB2YWx1ZSBpbiB0aGUgOS10dXBsZSkgaXMgc3BlY2lmaWVkIHdpdGggbGVzcyB0aGFuIDQgZGlnaXRzLCBpdHMgaW50ZXJwcmV0YXRpb24KLSAgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YgYGBhY2NlcHQyZHllYXJgYCB2YXJpYWJsZS4KLQotICBJZiBgYGFjY2VwdDJkeWVhcmBgIGlzIHRydWUgKGRlZmF1bHQpLCBhIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYmVoYXZpb3IgaXMKLSAgaW52b2tlZCBhcyBmb2xsb3dzOgotCi0gICAgLSBmb3IgMi1kaWdpdCB5ZWFyLCBjZW50dXJ5IGlzIGd1ZXNzZWQgYWNjb3JkaW5nIHRvIFBPU0lYIHJ1bGVzIGZvcgotICAgICAgYGAleWBgIHN0cnB0aW1lIGZvcm1hdC4gIEEgZGVwcmVjYXRpb24gd2FybmluZyBpcyBpc3N1ZWQgd2hlbiBjZW50dXJ5Ci0gICAgICBpbmZvcm1hdGlvbiBpcyBndWVzc2VkIGluIHRoaXMgd2F5LgotCi0gICAgLSBmb3IgMy1kaWdpdCBvciBuZWdhdGl2ZSB5ZWFyLCBhIDpleGM6YFZhbHVlRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLSAgSWYgYGBhY2NlcHQyZHllYXJgYCBpcyBmYWxzZSAoc2V0IGJ5IHRoZSBwcm9ncmFtIG9yIGFzIGEgcmVzdWx0IG9mIGEKLSAgbm9uLWVtcHR5IHZhbHVlIGFzc2lnbmVkIHRvIGBgUFlUSE9OWTJLYGAgZW52aXJvbm1lbnQgdmFyaWFibGUpIGFsbCB5ZWFyCi0gIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgZ2l2ZW4uCi0KIC4uIGluZGV4OjoKICAgIHNpbmdsZTogVVRDCiAgICBzaW5nbGU6IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lCkBAIC05Niw2ICs3NywxMSBAQAogCiAgIFNlZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVzZSBvYmplY3RzLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgIFRoZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCB0eXBlIHdhcyBleHRlbmRlZCB0byBwcm92aWRlIHRoZSA6YXR0cjpgdG1fZ210b2ZmYAorICAgICBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgd2hlbiBwbGF0Zm9ybSBzdXBwb3J0cyBjb3JyZXNwb25kaW5nCisgICAgIGBgc3RydWN0IHRtYGAgbWVtYmVycy4KKwogKiBVc2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRpbWUgcmVwcmVzZW50YXRpb25zOgogCiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTExNywyNCArMTAzLDYgQEAKIAogVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFuZCBkYXRhIGl0ZW1zOgogCi0KLS4uIGRhdGE6OiBhY2NlcHQyZHllYXIKLQotICAgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdHdvLWRpZ2l0IHllYXIgdmFsdWVzIHdpbGwgYmUKLSAgIG1hcHBlZCB0byAxOTY5LS0yMDY4IHJhbmdlIGJ5IDpmdW5jOmBhc2N0aW1lYCwgOmZ1bmM6YG1rdGltZWAsIGFuZAotICAgOmZ1bmM6YHN0cmZ0aW1lYCBmdW5jdGlvbnMuICBUaGlzIGlzIHRydWUgYnkgZGVmYXVsdCwgYnV0IHdpbGwgYmUKLSAgIHNldCB0byBmYWxzZSBpZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgOmVudnZhcjpgUFlUSE9OWTJLYCBoYXMKLSAgIGJlZW4gc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZy4gIEl0IG1heSBhbHNvIGJlIG1vZGlmaWVkIGF0IHJ1bgotICAgdGltZS4KLQotICAgLi4gZGVwcmVjYXRlZDo6IDMuMgotICAgICAgTWFwcGluZyBvZiAyLWRpZ2l0IHllYXIgdmFsdWVzIGJ5IDpmdW5jOmBhc2N0aW1lYCwKLSAgICAgIDpmdW5jOmBta3RpbWVgLCBhbmQgOmZ1bmM6YHN0cmZ0aW1lYCBmdW5jdGlvbnMgdG8gMTk2OS0tMjA2OAotICAgICAgcmFuZ2UgaXMgZGVwcmVjYXRlZC4gIFByb2dyYW1zIHRoYXQgbmVlZCB0byBwcm9jZXNzIDItZGlnaXQKLSAgICAgIHllYXJzIHNob3VsZCB1c2UgYGAleWBgIGNvZGUgYXZhaWxhYmxlIGluIDpmdW5jOmBzdHJwdGltZWAKLSAgICAgIGZ1bmN0aW9uIG9yIGNvbnZlcnQgMi1kaWdpdCB5ZWFyIHZhbHVlcyB0byA0LWRpZ2l0IHRoZW1zZWx2ZXMuCi0KLQogLi4gZGF0YTo6IGFsdHpvbmUKIAogICAgVGhlIG9mZnNldCBvZiB0aGUgbG9jYWwgRFNUIHRpbWV6b25lLCBpbiBzZWNvbmRzIHdlc3Qgb2YgVVRDLCBpZiBvbmUgaXMgZGVmaW5lZC4KQEAgLTE1Miw3ICsxMjAsOCBAQAogCiAgICAuLiBub3RlOjoKIAotICAgICAgVW5saWtlIHRoZSBDIGZ1bmN0aW9uIG9mIHRoZSBzYW1lIG5hbWUsIHRoZXJlIGlzIG5vIHRyYWlsaW5nIG5ld2xpbmUuCisgICAgICBVbmxpa2UgdGhlIEMgZnVuY3Rpb24gb2YgdGhlIHNhbWUgbmFtZSwgOmZ1bmM6YGFzY3RpbWVgIGRvZXMgbm90IGFkZCBhCisgICAgICB0cmFpbGluZyBuZXdsaW5lLgogCiAKIC4uIGZ1bmN0aW9uOjogY2xvY2soKQpAQCAtMTcyLDYgKzE0MSw5NyBAQAogICAgOmM6ZnVuYzpgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXJgLiBUaGUgcmVzb2x1dGlvbiBpcyB0eXBpY2FsbHkgYmV0dGVyIHRoYW4gb25lCiAgICBtaWNyb3NlY29uZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworICAgICAgVGhlIGJlaGF2aW91ciBvZiB0aGlzIGZ1bmN0aW9uIGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtOiB1c2UKKyAgICAgIDpmdW5jOmBwZXJmX2NvdW50ZXJgIG9yIDpmdW5jOmBwcm9jZXNzX3RpbWVgIGluc3RlYWQsIGRlcGVuZGluZyBvbiB5b3VyCisgICAgICByZXF1aXJlbWVudHMsIHRvIGhhdmUgYSB3ZWxsIGRlZmluZWQgYmVoYXZpb3VyLgorCisKKy4uIGZ1bmN0aW9uOjogY2xvY2tfZ2V0cmVzKGNsa19pZCkKKworICAgUmV0dXJuIHRoZSByZXNvbHV0aW9uIChwcmVjaXNpb24pIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgKmNsa19pZCouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBjbG9ja19nZXR0aW1lKGNsa19pZCkKKworICAgUmV0dXJuIHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgKmNsa19pZCouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBjbG9ja19zZXR0aW1lKGNsa19pZCwgdGltZSkKKworICAgU2V0IHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgKmNsa19pZCouCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX0hJR0hSRVMKKworICAgVGhlIFNvbGFyaXMgT1MgaGFzIGEgQ0xPQ0tfSElHSFJFUyB0aW1lciB0aGF0IGF0dGVtcHRzIHRvIHVzZSBhbiBvcHRpbWFsCisgICBoYXJkd2FyZSBzb3VyY2UsIGFuZCBtYXkgZ2l2ZSBjbG9zZSB0byBuYW5vc2Vjb25kIHJlc29sdXRpb24uICBDTE9DS19ISUdIUkVTCisgICBpcyB0aGUgbm9uYWRqdXN0YWJsZSwgaGlnaC1yZXNvbHV0aW9uIGNsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFNvbGFyaXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19NT05PVE9OSUMKKworICAgQ2xvY2sgdGhhdCBjYW5ub3QgYmUgc2V0IGFuZCByZXByZXNlbnRzIG1vbm90b25pYyB0aW1lIHNpbmNlIHNvbWUgdW5zcGVjaWZpZWQKKyAgIHN0YXJ0aW5nIHBvaW50LgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGRhdGE6OiBDTE9DS19NT05PVE9OSUNfUkFXCisKKyAgIFNpbWlsYXIgdG8gOmRhdGE6YENMT0NLX01PTk9UT05JQ2AsIGJ1dCBwcm92aWRlcyBhY2Nlc3MgdG8gYSByYXcKKyAgIGhhcmR3YXJlLWJhc2VkIHRpbWUgdGhhdCBpcyBub3Qgc3ViamVjdCB0byBOVFAgYWRqdXN0bWVudHMuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggMi42LjI4IG9yIGxhdGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECisKKyAgIEhpZ2gtcmVzb2x1dGlvbiBwZXItcHJvY2VzcyB0aW1lciBmcm9tIHRoZSBDUFUuCisKKyAgIEF2YWlsYWJpbGl0eTogVW5peC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZGF0YTo6IENMT0NLX1JFQUxUSU1FCisKKyAgIFN5c3RlbS13aWRlIHJlYWwtdGltZSBjbG9jay4gIFNldHRpbmcgdGhpcyBjbG9jayByZXF1aXJlcyBhcHByb3ByaWF0ZQorICAgcHJpdmlsZWdlcy4KKworICAgQXZhaWxhYmlsaXR5OiBVbml4LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBkYXRhOjogQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQKKworICAgVGhyZWFkLXNwZWNpZmljIENQVS10aW1lIGNsb2NrLgorCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAKIC4uIGZ1bmN0aW9uOjogY3RpbWUoW3NlY3NdKQogCkBAIC0xODYsNiArMjQ2LDMxIEBACiAgICBOb256ZXJvIGlmIGEgRFNUIHRpbWV6b25lIGlzIGRlZmluZWQuCiAKIAorLi4gZnVuY3Rpb246OiBnZXRfY2xvY2tfaW5mbyhuYW1lKQorCisgICBHZXQgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmllZCBjbG9jayBhcyBhIG5hbWVzcGFjZSBvYmplY3QuCisgICBTdXBwb3J0ZWQgY2xvY2sgbmFtZXMgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyB0byByZWFkIHRoZWlyIHZhbHVlCisgICBhcmU6CisKKyAgICogYGAnY2xvY2snYGA6IDpmdW5jOmB0aW1lLmNsb2NrYAorICAgKiBgYCdtb25vdG9uaWMnYGA6IDpmdW5jOmB0aW1lLm1vbm90b25pY2AKKyAgICogYGAncGVyZl9jb3VudGVyJ2BgOiA6ZnVuYzpgdGltZS5wZXJmX2NvdW50ZXJgCisgICAqIGBgJ3Byb2Nlc3NfdGltZSdgYDogOmZ1bmM6YHRpbWUucHJvY2Vzc190aW1lYAorICAgKiBgYCd0aW1lJ2BgOiA6ZnVuYzpgdGltZS50aW1lYAorCisgICBUaGUgcmVzdWx0IGhhcyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisKKyAgIC0gKmFkanVzdGFibGUqOiBgYFRydWVgYCBpZiB0aGUgY2xvY2sgY2FuIGJlIGNoYW5nZWQgYXV0b21hdGljYWxseSAoZS5nLiBieQorICAgICBhIE5UUCBkYWVtb24pIG9yIG1hbnVhbGx5IGJ5IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciwgYGBGYWxzZWBgIG90aGVyd2lzZQorICAgLSAqaW1wbGVtZW50YXRpb24qOiBUaGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBDIGZ1bmN0aW9uIHVzZWQgdG8gZ2V0CisgICAgIHRoZSBjbG9jayB2YWx1ZQorICAgLSAqbW9ub3RvbmljKjogYGBUcnVlYGAgaWYgdGhlIGNsb2NrIGNhbm5vdCBnbyBiYWNrd2FyZCwKKyAgICAgYGBGYWxzZWBgIG90aGVyd2lzZQorICAgLSAqcmVzb2x1dGlvbio6IFRoZSByZXNvbHV0aW9uIG9mIHRoZSBjbG9jayBpbiBzZWNvbmRzICg6Y2xhc3M6YGZsb2F0YCkKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKwogLi4gZnVuY3Rpb246OiBnbXRpbWUoW3NlY3NdKQogCiAgICBDb252ZXJ0IGEgdGltZSBleHByZXNzZWQgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggdG8gYSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBpbgpAQCAtMjE1LDYgKzMwMCw0NyBAQAogICAgVGhlIGVhcmxpZXN0IGRhdGUgZm9yIHdoaWNoIGl0IGNhbiBnZW5lcmF0ZSBhIHRpbWUgaXMgcGxhdGZvcm0tZGVwZW5kZW50LgogCiAKKy4uIGZ1bmN0aW9uOjogbW9ub3RvbmljKCkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSAoaW4gZnJhY3Rpb25hbCBzZWNvbmRzKSBvZiBhIG1vbm90b25pYyBjbG9jaywgaS5lLiBhIGNsb2NrCisgICB0aGF0IGNhbm5vdCBnbyBiYWNrd2FyZHMuICBUaGUgY2xvY2sgaXMgbm90IGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLgorICAgVGhlIHJlZmVyZW5jZSBwb2ludCBvZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlCisgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIE9uIFdpbmRvd3MgdmVyc2lvbnMgb2xkZXIgdGhhbiBWaXN0YSwgOmZ1bmM6YG1vbm90b25pY2AgZGV0ZWN0cworICAgOmM6ZnVuYzpgR2V0VGlja0NvdW50YCBpbnRlZ2VyIG92ZXJmbG93ICgzMiBiaXRzLCByb2xsLW92ZXIgYWZ0ZXIgNDkuNyBkYXlzKS4KKyAgIEl0IGluY3JlYXNlcyBhbiBpbnRlcm5hbCBlcG9jaCAocmVmZXJlbmNlIHRpbWUgYnkpIDJcIDpzdXA6YDMyYCBlYWNoIHRpbWUKKyAgIHRoYXQgYW4gb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICBUaGUgZXBvY2ggaXMgc3RvcmVkIGluIHRoZSBwcm9jZXNzLWxvY2FsIHN0YXRlCisgICBhbmQgc28gdGhlIHZhbHVlIG9mIDpmdW5jOmBtb25vdG9uaWNgIG1heSBiZSBkaWZmZXJlbnQgaW4gdHdvIFB5dGhvbgorICAgcHJvY2Vzc2VzIHJ1bm5pbmcgZm9yIG1vcmUgdGhhbiA0OSBkYXlzLiBPbiBtb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiBXaW5kb3dzCisgICBhbmQgb24gb3RoZXIgb3BlcmF0aW5nIHN5c3RlbXMsIDpmdW5jOmBtb25vdG9uaWNgIGlzIHN5c3RlbS13aWRlLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MsIE1hYyBPUyBYLCBMaW51eCwgRnJlZUJTRCwgT3BlbkJTRCwgU29sYXJpcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKworLi4gZnVuY3Rpb246OiBwZXJmX2NvdW50ZXIoKQorCisgICBSZXR1cm4gdGhlIHZhbHVlIChpbiBmcmFjdGlvbmFsIHNlY29uZHMpIG9mIGEgcGVyZm9ybWFuY2UgY291bnRlciwgaS5lLiBhCisgICBjbG9jayB3aXRoIHRoZSBoaWdoZXN0IGF2YWlsYWJsZSByZXNvbHV0aW9uIHRvIG1lYXN1cmUgYSBzaG9ydCBkdXJhdGlvbi4gIEl0CisgICBkb2VzIGluY2x1ZGUgdGltZSBlbGFwc2VkIGR1cmluZyBzbGVlcCBhbmQgaXMgc3lzdGVtLXdpZGUuICBUaGUgcmVmZXJlbmNlCisgICBwb2ludCBvZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbgorICAgdGhlIHJlc3VsdHMgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGZ1bmN0aW9uOjogcHJvY2Vzc190aW1lKCkKKworICAgUmV0dXJuIHRoZSB2YWx1ZSAoaW4gZnJhY3Rpb25hbCBzZWNvbmRzKSBvZiB0aGUgc3VtIG9mIHRoZSBzeXN0ZW0gYW5kIHVzZXIKKyAgIENQVSB0aW1lIG9mIHRoZSBjdXJyZW50IHByb2Nlc3MuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRpbWUgZWxhcHNlZCBkdXJpbmcKKyAgIHNsZWVwLiAgSXQgaXMgcHJvY2Vzcy13aWRlIGJ5IGRlZmluaXRpb24uICBUaGUgcmVmZXJlbmNlIHBvaW50IG9mIHRoZQorICAgcmV0dXJuZWQgdmFsdWUgaXMgdW5kZWZpbmVkLCBzbyB0aGF0IG9ubHkgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgcmVzdWx0cworICAgb2YgY29uc2VjdXRpdmUgY2FsbHMgaXMgdmFsaWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBmdW5jdGlvbjo6IHNsZWVwKHNlY3MpCiAKICAgIFN1c3BlbmQgZXhlY3V0aW9uIGZvciB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHNlY29uZHMuICBUaGUgYXJndW1lbnQgbWF5IGJlIGEKQEAgLTMwOCw5ICs0MzQsMTUgQEAKICAgIHwgYGAleWBgICAgIHwgWWVhciB3aXRob3V0IGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlciAgICAgICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIHwgWzAwLDk5XS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLSAgIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlci4gICAgICAgICB8IFwoNCkgIHwKKyAgIHwgYGAlWWBgICAgIHwgWWVhciB3aXRoIGNlbnR1cnkgYXMgYSBkZWNpbWFsIG51bWJlci4gICAgICAgICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKyAgIHwgYGAlemBgICAgIHwgVGltZSB6b25lIG9mZnNldCBpbmRpY2F0aW5nIGEgcG9zaXRpdmUgb3IgICAgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgbmVnYXRpdmUgdGltZSBkaWZmZXJlbmNlIGZyb20gVVRDL0dNVCBvZiB0aGUgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgZm9ybSArSEhNTSBvciAtSEhNTSwgd2hlcmUgSCByZXByZXNlbnRzIGRlY2ltYWx8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgaG91ciBkaWdpdHMgYW5kIE0gcmVwcmVzZW50cyBkZWNpbWFsIG1pbnV0ZSAgICB8ICAgICAgIHwKKyAgIHwgICAgICAgICAgIHwgZGlnaXRzIFstMjM6NTksICsyMzo1OV0uICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKyAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKICAgIHwgYGAlWmBgICAgIHwgVGltZSB6b25lIG5hbWUgKG5vIGNoYXJhY3RlcnMgaWYgbm8gdGltZSB6b25lICB8ICAgICAgIHwKICAgIHwgICAgICAgICAgIHwgZXhpc3RzKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKQEAgLTMzMiwxMiArNDY0LDYgQEAKICAgICAgIFdoZW4gdXNlZCB3aXRoIHRoZSA6ZnVuYzpgc3RycHRpbWVgIGZ1bmN0aW9uLCBgYCVVYGAgYW5kIGBgJVdgYCBhcmUgb25seSB1c2VkIGluCiAgICAgICBjYWxjdWxhdGlvbnMgd2hlbiB0aGUgZGF5IG9mIHRoZSB3ZWVrIGFuZCB0aGUgeWVhciBhcmUgc3BlY2lmaWVkLgogCi0gICAoNCkKLSAgICAgIFByb2R1Y2VzIGRpZmZlcmVudCByZXN1bHRzIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YKLSAgICAgIGBgdGltZS5hY2NlcHQyZHllYXJgYCB2YXJpYWJsZS4gIFNlZSA6cmVmOmBZZWFyIDIwMDAgKFkySykKLSAgICAgIGlzc3VlcyA8dGltZS15Mmtpc3N1ZXM+YCBmb3IgZGV0YWlscy4KLQotCiAgICBIZXJlIGlzIGFuIGV4YW1wbGUsIGEgZm9ybWF0IGZvciBkYXRlcyBjb21wYXRpYmxlIHdpdGggdGhhdCBzcGVjaWZpZWQgIGluIHRoZQogICAgOnJmYzpgMjgyMmAgSW50ZXJuZXQgZW1haWwgc3RhbmRhcmQuICBbI11fIDo6CiAKQEAgLTQxNiwxMCArNTQyLDEzIEBACiAgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOCAgICAgfCA6YXR0cjpgdG1faXNkc3RgICB8IDAsIDEgb3IgLTE7IHNlZSBiZWxvdyAgICAgICAgICAgfAogICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IE4vQSAgIHwgOmF0dHI6YHRtX3pvbmVgICAgfCBhYmJyZXZpYXRpb24gb2YgdGltZXpvbmUgbmFtZSAgIHwKKyAgICstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBOL0EgICB8IDphdHRyOmB0bV9nbXRvZmZgIHwgb2Zmc2V0IGVhc3Qgb2YgVVRDIGluIHNlY29uZHMgICB8CisgICArLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgQyBzdHJ1Y3R1cmUsIHRoZSBtb250aCB2YWx1ZSBpcyBhIHJhbmdlIG9mIFsxLCAxMl0sIG5vdAotICAgWzAsIDExXS4gIEEgeWVhciB2YWx1ZSB3aWxsIGJlIGhhbmRsZWQgYXMgZGVzY3JpYmVkIHVuZGVyIDpyZWY6YFllYXIgMjAwMAotICAgKFkySykgaXNzdWVzIDx0aW1lLXkya2lzc3Vlcz5gIGFib3ZlLiAgQSBgYC0xYGAgYXJndW1lbnQgYXMgdGhlIGRheWxpZ2h0CisgICBbMCwgMTFdLiAgQSBgYC0xYGAgYXJndW1lbnQgYXMgdGhlIGRheWxpZ2h0CiAgICBzYXZpbmdzIGZsYWcsIHBhc3NlZCB0byA6ZnVuYzpgbWt0aW1lYCB3aWxsIHVzdWFsbHkgcmVzdWx0IGluIHRoZSBjb3JyZWN0CiAgICBkYXlsaWdodCBzYXZpbmdzIHN0YXRlIHRvIGJlIGZpbGxlZCBpbi4KIApAQCAtNDI3LDYgKzU1Niw5IEBACiAgICA6Y2xhc3M6YHN0cnVjdF90aW1lYCwgb3IgaGF2aW5nIGVsZW1lbnRzIG9mIHRoZSB3cm9uZyB0eXBlLCBhCiAgICA6ZXhjOmBUeXBlRXJyb3JgIGlzIHJhaXNlZC4KIAorICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICA6YXR0cjpgdG1fZ210b2ZmYCBhbmQgOmF0dHI6YHRtX3pvbmVgIGF0dHJpYnV0ZXMgYXJlIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMKKyAgICAgd2l0aCBDIGxpYnJhcnkgc3VwcG9ydGluZyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgaW4gYGBzdHJ1Y3QgdG1gYC4KIAogLi4gZnVuY3Rpb246OiB0aW1lKCkKIApAQCAtNDM3LDcgKzU2OSw2IEBACiAgICBsb3dlciB2YWx1ZSB0aGFuIGEgcHJldmlvdXMgY2FsbCBpZiB0aGUgc3lzdGVtIGNsb2NrIGhhcyBiZWVuIHNldCBiYWNrIGJldHdlZW4KICAgIHRoZSB0d28gY2FsbHMuCiAKLQogLi4gZGF0YTo6IHRpbWV6b25lCiAKICAgIFRoZSBvZmZzZXQgb2YgdGhlIGxvY2FsIChub24tRFNUKSB0aW1lem9uZSwgaW4gc2Vjb25kcyB3ZXN0IG9mIFVUQyAobmVnYXRpdmUgaW4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CmluZGV4IGEzZWM2NmYuLmE0ODc5MTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZWl0LnJzdApAQCAtNzMsMTMgKzczLDEwIEBACiAKIC4uIGZ1bmN0aW9uOjogZGVmYXVsdF90aW1lcigpCiAKLSAgIERlZmluZSBhIGRlZmF1bHQgdGltZXIsIGluIGEgcGxhdGZvcm0tc3BlY2lmaWMgbWFubmVyLiBPbiBXaW5kb3dzLAotICAgOmZ1bmM6YHRpbWUuY2xvY2tgIGhhcyBtaWNyb3NlY29uZCBncmFudWxhcml0eSwgYnV0IDpmdW5jOmB0aW1lLnRpbWVgJ3MKLSAgIGdyYW51bGFyaXR5IGlzIDEvNjB0aCBvZiBhIHNlY29uZC4gIE9uIFVuaXgsIDpmdW5jOmB0aW1lLmNsb2NrYCBoYXMgMS8xMDB0aCBvZgotICAgYSBzZWNvbmQgZ3JhbnVsYXJpdHksIGFuZCA6ZnVuYzpgdGltZS50aW1lYCBpcyBtdWNoIG1vcmUgcHJlY2lzZS4gIE9uIGVpdGhlcgotICAgcGxhdGZvcm0sIDpmdW5jOmBkZWZhdWx0X3RpbWVyYCBtZWFzdXJlcyB3YWxsIGNsb2NrIHRpbWUsIG5vdCB0aGUgQ1BVCi0gICB0aW1lLiAgVGhpcyBtZWFucyB0aGF0IG90aGVyIHByb2Nlc3NlcyBydW5uaW5nIG9uIHRoZSBzYW1lIGNvbXB1dGVyIG1heQotICAgaW50ZXJmZXJlIHdpdGggdGhlIHRpbWluZy4KKyAgIFRoZSBkZWZhdWx0IHRpbWVyLCB3aGljaCBpcyBhbHdheXMgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAgaXMgbm93IHRoZSBkZWZhdWx0IHRpbWVyLgogCiAKIC4uIGNsYXNzOjogVGltZXIoc3RtdD0ncGFzcycsIHNldHVwPSdwYXNzJywgdGltZXI9PHRpbWVyIGZ1bmN0aW9uPikKQEAgLTE4NywxMyArMTg0LDIwIEBACiAKICAgIHN0YXRlbWVudCB0byBiZSBleGVjdXRlZCBvbmNlIGluaXRpYWxseSAoZGVmYXVsdCBgYHBhc3NgYCkKIAorLi4gY21kb3B0aW9uOjogLXAsIC0tcHJvY2VzcworCisgICBtZWFzdXJlIHByb2Nlc3MgdGltZSwgbm90IHdhbGxjbG9jayB0aW1lLCB1c2luZyA6ZnVuYzpgdGltZS5wcm9jZXNzX3RpbWVgCisgICBpbnN0ZWFkIG9mIDpmdW5jOmB0aW1lLnBlcmZfY291bnRlcmAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCiAuLiBjbWRvcHRpb246OiAtdCwgLS10aW1lCiAKLSAgIHVzZSA6ZnVuYzpgdGltZS50aW1lYCAoZGVmYXVsdCBvbiBhbGwgcGxhdGZvcm1zIGJ1dCBXaW5kb3dzKQorICAgdXNlIDpmdW5jOmB0aW1lLnRpbWVgIChkZXByZWNhdGVkKQogCiAuLiBjbWRvcHRpb246OiAtYywgLS1jbG9jawogCi0gICB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIChkZWZhdWx0IG9uIFdpbmRvd3MpCisgICB1c2UgOmZ1bmM6YHRpbWUuY2xvY2tgIChkZXByZWNhdGVkKQogCiAuLiBjbWRvcHRpb246OiAtdiwgLS12ZXJib3NlCiAKQEAgLTIxMSwxMiArMjE1LDExIEBACiBJZiA6b3B0aW9uOmAtbmAgaXMgbm90IGdpdmVuLCBhIHN1aXRhYmxlIG51bWJlciBvZiBsb29wcyBpcyBjYWxjdWxhdGVkIGJ5IHRyeWluZwogc3VjY2Vzc2l2ZSBwb3dlcnMgb2YgMTAgdW50aWwgdGhlIHRvdGFsIHRpbWUgaXMgYXQgbGVhc3QgMC4yIHNlY29uZHMuCiAKLTpmdW5jOmBkZWZhdWx0X3RpbWVyYCBtZWFzdXJhdGlvbnMgY2FuIGJlIGFmZmVjdGVkIGJ5IG90aGVyIHByb2dyYW1zIHJ1bm5pbmcgb24KLXRoZSBzYW1lIG1hY2hpbmUsIHNvCi10aGUgYmVzdCB0aGluZyB0byBkbyB3aGVuIGFjY3VyYXRlIHRpbWluZyBpcyBuZWNlc3NhcnkgaXMgdG8gcmVwZWF0Ci10aGUgdGltaW5nIGEgZmV3IHRpbWVzIGFuZCB1c2UgdGhlIGJlc3QgdGltZS4gIFRoZSA6b3B0aW9uOmAtcmAgb3B0aW9uIGlzIGdvb2QKLWZvciB0aGlzOyB0aGUgZGVmYXVsdCBvZiAzIHJlcGV0aXRpb25zIGlzIHByb2JhYmx5IGVub3VnaCBpbiBtb3N0IGNhc2VzLiAgT24KLVVuaXgsIHlvdSBjYW4gdXNlIDpmdW5jOmB0aW1lLmNsb2NrYCB0byBtZWFzdXJlIENQVSB0aW1lLgorOmZ1bmM6YGRlZmF1bHRfdGltZXJgIG1lYXN1cmVtZW50cyBjYW4gYmUgYWZmZWN0ZWQgYnkgb3RoZXIgcHJvZ3JhbXMgcnVubmluZyBvbgordGhlIHNhbWUgbWFjaGluZSwgc28gdGhlIGJlc3QgdGhpbmcgdG8gZG8gd2hlbiBhY2N1cmF0ZSB0aW1pbmcgaXMgbmVjZXNzYXJ5IGlzCit0byByZXBlYXQgdGhlIHRpbWluZyBhIGZldyB0aW1lcyBhbmQgdXNlIHRoZSBiZXN0IHRpbWUuICBUaGUgOm9wdGlvbjpgLXJgCitvcHRpb24gaXMgZ29vZCBmb3IgdGhpczsgdGhlIGRlZmF1bHQgb2YgMyByZXBldGl0aW9ucyBpcyBwcm9iYWJseSBlbm91Z2ggaW4KK21vc3QgY2FzZXMuICBZb3UgY2FuIHVzZSA6ZnVuYzpgdGltZS5wcm9jZXNzX3RpbWVgIHRvIG1lYXN1cmUgQ1BVIHRpbWUuCiAKIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnJzdCBiL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CmluZGV4IGY2ZTA5NWEuLjgzYTUzNzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CkBAIC0xOTQsMzUgKzE5NCwzMCBAQAogCiA6OgogCi0gICBmcm9tIHRraW50ZXIgaW1wb3J0ICoKKyAgICBpbXBvcnQgdGtpbnRlciBhcyB0awogCi0gICBjbGFzcyBBcHBsaWNhdGlvbihGcmFtZSk6Ci0gICAgICAgZGVmIHNheV9oaShzZWxmKToKLSAgICAgICAgICAgcHJpbnQoImhpIHRoZXJlLCBldmVyeW9uZSEiKQorICAgIGNsYXNzIEFwcGxpY2F0aW9uKHRrLkZyYW1lKToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lKToKKyAgICAgICAgICAgIHRrLkZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlcikKKyAgICAgICAgICAgIHNlbGYucGFjaygpCisgICAgICAgICAgICBzZWxmLmNyZWF0ZVdpZGdldHMoKQogCi0gICAgICAgZGVmIGNyZWF0ZVdpZGdldHMoc2VsZik6Ci0gICAgICAgICAgIHNlbGYuUVVJVCA9IEJ1dHRvbihzZWxmKQotICAgICAgICAgICBzZWxmLlFVSVRbInRleHQiXSA9ICJRVUlUIgotICAgICAgICAgICBzZWxmLlFVSVRbImZnIl0gPSAicmVkIgotICAgICAgICAgICBzZWxmLlFVSVRbImNvbW1hbmQiXSA9IHNlbGYucXVpdAorICAgICAgICBkZWYgY3JlYXRlV2lkZ2V0cyhzZWxmKToKKyAgICAgICAgICAgIHNlbGYuaGlfdGhlcmUgPSB0ay5CdXR0b24oc2VsZikKKyAgICAgICAgICAgIHNlbGYuaGlfdGhlcmVbInRleHQiXSA9ICJIZWxsbyBXb3JsZFxuKGNsaWNrIG1lKSIKKyAgICAgICAgICAgIHNlbGYuaGlfdGhlcmVbImNvbW1hbmQiXSA9IHNlbGYuc2F5X2hpCisgICAgICAgICAgICBzZWxmLmhpX3RoZXJlLnBhY2soc2lkZT0idG9wIikKIAotICAgICAgICAgICBzZWxmLlFVSVQucGFjayh7InNpZGUiOiAibGVmdCJ9KQorICAgICAgICAgICAgc2VsZi5RVUlUID0gdGsuQnV0dG9uKHNlbGYsIHRleHQ9IlFVSVQiLCBmZz0icmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9cm9vdC5kZXN0cm95KQorICAgICAgICAgICAgc2VsZi5RVUlULnBhY2soc2lkZT0iYm90dG9tIikKIAotICAgICAgICAgICBzZWxmLmhpX3RoZXJlID0gQnV0dG9uKHNlbGYpCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmVbInRleHQiXSA9ICJIZWxsbyIsCi0gICAgICAgICAgIHNlbGYuaGlfdGhlcmVbImNvbW1hbmQiXSA9IHNlbGYuc2F5X2hpCisgICAgICAgIGRlZiBzYXlfaGkoc2VsZik6CisgICAgICAgICAgICBwcmludCgiaGkgdGhlcmUsIGV2ZXJ5b25lISIpCiAKLSAgICAgICAgICAgc2VsZi5oaV90aGVyZS5wYWNrKHsic2lkZSI6ICJsZWZ0In0pCi0KLSAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUpOgotICAgICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIpCi0gICAgICAgICAgIHNlbGYucGFjaygpCi0gICAgICAgICAgIHNlbGYuY3JlYXRlV2lkZ2V0cygpCi0KLSAgIHJvb3QgPSBUaygpCi0gICBhcHAgPSBBcHBsaWNhdGlvbihtYXN0ZXI9cm9vdCkKLSAgIGFwcC5tYWlubG9vcCgpCi0gICByb290LmRlc3Ryb3koKQorICAgIHJvb3QgPSB0ay5UaygpCisgICAgYXBwID0gQXBwbGljYXRpb24obWFzdGVyPXJvb3QpCisgICAgYXBwLm1haW5sb29wKCkKIAogCiBBIChWZXJ5KSBRdWljayBMb29rIGF0IFRjbC9UawpAQCAtNzU1LDIyICs3NTAsMzIgQEAKICAgIGRpc3BsYXllZC4gIFlvdSBjYW4gdXNlIHRoZXNlIDptb2Q6YHRraW50ZXJgIGZ1bmN0aW9ucyB0byBhY2Nlc3MgdGhlc2Ugc3BlY2lhbAogICAgcG9pbnRzIGluIHRleHQgd2lkZ2V0czoKIAotICAgQXRFbmQoKQorLi4gZnVuY3Rpb246OiBBdEVuZCgpCiAgICAgICByZWZlcnMgdG8gdGhlIGxhc3QgcG9zaXRpb24gaW4gdGhlIHRleHQKIAotICAgQXRJbnNlcnQoKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0SW5zZXJ0KCkKICAgICAgIHJlZmVycyB0byB0aGUgcG9pbnQgd2hlcmUgdGhlIHRleHQgY3Vyc29yIGlzCiAKLSAgIEF0U2VsRmlyc3QoKQorICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisuLiBmdW5jdGlvbjo6IEF0U2VsRmlyc3QoKQogICAgICAgaW5kaWNhdGVzIHRoZSBiZWdpbm5pbmcgcG9pbnQgb2YgdGhlIHNlbGVjdGVkIHRleHQKIAotICAgQXRTZWxMYXN0KCkKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBBdFNlbExhc3QoKQogICAgICAgZGVub3RlcyB0aGUgbGFzdCBwb2ludCBvZiB0aGUgc2VsZWN0ZWQgdGV4dCBhbmQgZmluYWxseQogCi0gICBBdCh4WywgeV0pCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKy4uIGZ1bmN0aW9uOjogQXQoeFssIHldKQogICAgICAgcmVmZXJzIHRvIHRoZSBjaGFyYWN0ZXIgYXQgcGl4ZWwgbG9jYXRpb24gKngqLCAqeSogKHdpdGggKnkqIG5vdCB1c2VkIGluIHRoZQogICAgICAgY2FzZSBvZiBhIHRleHQgZW50cnkgd2lkZ2V0LCB3aGljaCBjb250YWlucyBhIHNpbmdsZSBsaW5lIG9mIHRleHQpLgogCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKIFRleHQgd2lkZ2V0IGluZGV4ZXMKICAgIFRoZSBpbmRleCBub3RhdGlvbiBmb3IgVGV4dCB3aWRnZXRzIGlzIHZlcnkgcmljaCBhbmQgaXMgYmVzdCBkZXNjcmliZWQgaW4gdGhlIFRrCiAgICBtYW4gcGFnZXMuCkBAIC04MTgsNCArODIzLDMgQEAKIHJlZmVyZW5jZSB0byB0aGUgaW1hZ2UuIFdoZW4gdGhlIGxhc3QgUHl0aG9uIHJlZmVyZW5jZSB0byB0aGUgaW1hZ2Ugb2JqZWN0IGlzCiBkZWxldGVkLCB0aGUgaW1hZ2UgZGF0YSBpcyBkZWxldGVkIGFzIHdlbGwsIGFuZCBUayB3aWxsIGRpc3BsYXkgYW4gZW1wdHkgYm94CiB3aGVyZXZlciB0aGUgaW1hZ2Ugd2FzIHVzZWQuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdCBiL0RvYy9saWJyYXJ5L3Rva2VuaXplLnJzdAppbmRleCA3MDkxOWNhLi4zN2Q5ZjQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90b2tlbml6ZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdG9rZW5pemUucnN0CkBAIC0xNyw5ICsxNywxMSBAQAogCiBUbyBzaW1wbGlmeSB0b2tlbiBzdHJlYW0gaGFuZGxpbmcsIGFsbCA6cmVmOmBvcGVyYXRvcnNgIGFuZCA6cmVmOmBkZWxpbWl0ZXJzYAogdG9rZW5zIGFyZSByZXR1cm5lZCB1c2luZyB0aGUgZ2VuZXJpYyA6ZGF0YTpgdG9rZW4uT1BgIHRva2VuIHR5cGUuICBUaGUgZXhhY3QKLXR5cGUgY2FuIGJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlIHRva2VuIGBgc3RyaW5nYGAgZmllbGQgb24gdGhlCi06dGVybTpgbmFtZWQgdHVwbGVgIHJldHVybmVkIGZyb20gOmZ1bmM6YHRva2VuaXplLnRva2VuaXplYCBmb3IgdGhlIGNoYXJhY3Rlcgotc2VxdWVuY2UgdGhhdCBpZGVudGlmaWVzIGEgc3BlY2lmaWMgb3BlcmF0b3IgdG9rZW4uCit0eXBlIGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZSBgYGV4YWN0X3R5cGVgYCBwcm9wZXJ0eSBvbiB0aGUKKzp0ZXJtOmBuYW1lZCB0dXBsZWAgcmV0dXJuZWQgZnJvbSA6ZnVuYzpgdG9rZW5pemUudG9rZW5pemVgLgorCitUb2tlbml6aW5nIElucHV0CistLS0tLS0tLS0tLS0tLS0tCiAKIFRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGlzIGEgOnRlcm06YGdlbmVyYXRvcmA6CiAKQEAgLTM5LDkgKzQxLDE3IEBACiAgICByZXR1cm5lZCBhcyBhIDp0ZXJtOmBuYW1lZCB0dXBsZWAgd2l0aCB0aGUgZmllbGQgbmFtZXM6CiAgICBgYHR5cGUgc3RyaW5nIHN0YXJ0IGVuZCBsaW5lYGAuCiAKKyAgIFRoZSByZXR1cm5lZCA6dGVybTpgbmFtZWQgdHVwbGVgIGhhcyBhIGFkZGl0aW9uYWwgcHJvcGVydHkgbmFtZWQKKyAgIGBgZXhhY3RfdHlwZWBgIHRoYXQgY29udGFpbnMgdGhlIGV4YWN0IG9wZXJhdG9yIHR5cGUgZm9yCisgICA6ZGF0YTpgdG9rZW4uT1BgIHRva2Vucy4gIEZvciBhbGwgb3RoZXIgdG9rZW4gdHlwZXMgYGBleGFjdF90eXBlYGAKKyAgIGVxdWFscyB0aGUgbmFtZWQgdHVwbGUgYGB0eXBlYGAgZmllbGQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBuYW1lZCB0dXBsZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBzdXBwb3J0IGZvciBgYGV4YWN0X3R5cGVgYC4KKwogICAgOmZ1bmM6YHRva2VuaXplYCBkZXRlcm1pbmVzIHRoZSBzb3VyY2UgZW5jb2Rpbmcgb2YgdGhlIGZpbGUgYnkgbG9va2luZyBmb3IgYQogICAgVVRGLTggQk9NIG9yIGVuY29kaW5nIGNvb2tpZSwgYWNjb3JkaW5nIHRvIDpwZXA6YDI2M2AuCiAKQEAgLTEyMiw2ICsxMzIsMzggQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIF90b2tlbml6ZS1jbGk6CisKK0NvbW1hbmQtTGluZSBVc2FnZQorLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCitUaGUgOm1vZDpgdG9rZW5pemVgIG1vZHVsZSBjYW4gYmUgZXhlY3V0ZWQgYXMgYSBzY3JpcHQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorSXQgaXMgYXMgc2ltcGxlIGFzOgorCisuLiBjb2RlLWJsb2NrOjogc2gKKworICAgcHl0aG9uIC1tIHRva2VuaXplIFstZV0gW2ZpbGVuYW1lLnB5XQorCitUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGFjY2VwdGVkOgorCisuLiBwcm9ncmFtOjogdG9rZW5pemUKKworLi4gY21kb3B0aW9uOjogLWgsIC0taGVscAorCisgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisKKy4uIGNtZG9wdGlvbjo6IC1lLCAtLWV4YWN0CisKKyAgIGRpc3BsYXkgdG9rZW4gbmFtZXMgdXNpbmcgdGhlIGV4YWN0IHR5cGUKKworSWYgOmZpbGU6YGZpbGVuYW1lLnB5YCBpcyBzcGVjaWZpZWQgaXRzIGNvbnRlbnRzIGFyZSB0b2tlbml6ZWQgdG8gc3Rkb3V0LgorT3RoZXJ3aXNlLCB0b2tlbml6YXRpb24gaXMgcGVyZm9ybWVkIG9uIHN0ZGluLgorCitFeGFtcGxlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKIEV4YW1wbGUgb2YgYSBzY3JpcHQgcmV3cml0ZXIgdGhhdCB0cmFuc2Zvcm1zIGZsb2F0IGxpdGVyYWxzIGludG8gRGVjaW1hbAogb2JqZWN0czo6CiAKQEAgLTE2NCwzICsyMDYsNjMgQEAKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCh0b2tudW0sIHRva3ZhbCkpCiAgICAgICAgIHJldHVybiB1bnRva2VuaXplKHJlc3VsdCkuZGVjb2RlKCd1dGYtOCcpCiAKK0V4YW1wbGUgb2YgdG9rZW5pemluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGUgc2NyaXB0OjoKKworICAgIGRlZiBzYXlfaGVsbG8oKToKKyAgICAgICAgcHJpbnQoIkhlbGxvLCBXb3JsZCEiKQorCisgICAgc2F5X2hlbGxvKCkKKword2lsbCBiZSB0b2tlbml6ZWQgdG8gdGhlIGZvbGxvd2luZyBvdXRwdXQgd2hlcmUgdGhlIGZpcnN0IGNvbHVtbiBpcyB0aGUgcmFuZ2UKK29mIHRoZSBsaW5lL2NvbHVtbiBjb29yZGluYXRlcyB3aGVyZSB0aGUgdG9rZW4gaXMgZm91bmQsIHRoZSBzZWNvbmQgY29sdW1uIGlzCit0aGUgbmFtZSBvZiB0aGUgdG9rZW4sIGFuZCB0aGUgZmluYWwgY29sdW1uIGlzIHRoZSB2YWx1ZSBvZiB0aGUgdG9rZW4gKGlmIGFueSkKKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICAkIHB5dGhvbiAtbSB0b2tlbml6ZSBoZWxsby5weQorICAgIDAsMC0wLDA6ICAgICAgICAgICAgRU5DT0RJTkcgICAgICAgJ3V0Zi04JworICAgIDEsMC0xLDM6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ2RlZicKKyAgICAxLDQtMSwxMzogICAgICAgICAgIE5BTUUgICAgICAgICAgICdzYXlfaGVsbG8nCisgICAgMSwxMy0xLDE0OiAgICAgICAgICBPUCAgICAgICAgICAgICAnKCcKKyAgICAxLDE0LTEsMTU6ICAgICAgICAgIE9QICAgICAgICAgICAgICcpJworICAgIDEsMTUtMSwxNjogICAgICAgICAgT1AgICAgICAgICAgICAgJzonCisgICAgMSwxNi0xLDE3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMiwwLTIsNDogICAgICAgICAgICBJTkRFTlQgICAgICAgICAnICAgICcKKyAgICAyLDQtMiw5OiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdwcmludCcKKyAgICAyLDktMiwxMDogICAgICAgICAgIE9QICAgICAgICAgICAgICcoJworICAgIDIsMTAtMiwyNTogICAgICAgICAgU1RSSU5HICAgICAgICAgJyJIZWxsbywgV29ybGQhIicKKyAgICAyLDI1LTIsMjY6ICAgICAgICAgIE9QICAgICAgICAgICAgICcpJworICAgIDIsMjYtMiwyNzogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDMsMC0zLDE6ICAgICAgICAgICAgTkwgICAgICAgICAgICAgJ1xuJworICAgIDQsMC00LDA6ICAgICAgICAgICAgREVERU5UICAgICAgICAgJycKKyAgICA0LDAtNCw5OiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdzYXlfaGVsbG8nCisgICAgNCw5LTQsMTA6ICAgICAgICAgICBPUCAgICAgICAgICAgICAnKCcKKyAgICA0LDEwLTQsMTE6ICAgICAgICAgIE9QICAgICAgICAgICAgICcpJworICAgIDQsMTEtNCwxMjogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDUsMC01LDA6ICAgICAgICAgICAgRU5ETUFSS0VSICAgICAgJycKKworVGhlIGV4YWN0IHRva2VuIHR5cGUgbmFtZXMgY2FuIGJlIGRpc3BsYXllZCB1c2luZyB0aGUgYGAtZWBgIG9wdGlvbjoKKworLi4gY29kZS1ibG9jazo6IHNoCisKKyAgICAkIHB5dGhvbiAtbSB0b2tlbml6ZSAtZSBoZWxsby5weQorICAgIDAsMC0wLDA6ICAgICAgICAgICAgRU5DT0RJTkcgICAgICAgJ3V0Zi04JworICAgIDEsMC0xLDM6ICAgICAgICAgICAgTkFNRSAgICAgICAgICAgJ2RlZicKKyAgICAxLDQtMSwxMzogICAgICAgICAgIE5BTUUgICAgICAgICAgICdzYXlfaGVsbG8nCisgICAgMSwxMy0xLDE0OiAgICAgICAgICBMUEFSICAgICAgICAgICAnKCcKKyAgICAxLDE0LTEsMTU6ICAgICAgICAgIFJQQVIgICAgICAgICAgICcpJworICAgIDEsMTUtMSwxNjogICAgICAgICAgQ09MT04gICAgICAgICAgJzonCisgICAgMSwxNi0xLDE3OiAgICAgICAgICBORVdMSU5FICAgICAgICAnXG4nCisgICAgMiwwLTIsNDogICAgICAgICAgICBJTkRFTlQgICAgICAgICAnICAgICcKKyAgICAyLDQtMiw5OiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdwcmludCcKKyAgICAyLDktMiwxMDogICAgICAgICAgIExQQVIgICAgICAgICAgICcoJworICAgIDIsMTAtMiwyNTogICAgICAgICAgU1RSSU5HICAgICAgICAgJyJIZWxsbywgV29ybGQhIicKKyAgICAyLDI1LTIsMjY6ICAgICAgICAgIFJQQVIgICAgICAgICAgICcpJworICAgIDIsMjYtMiwyNzogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDMsMC0zLDE6ICAgICAgICAgICAgTkwgICAgICAgICAgICAgJ1xuJworICAgIDQsMC00LDA6ICAgICAgICAgICAgREVERU5UICAgICAgICAgJycKKyAgICA0LDAtNCw5OiAgICAgICAgICAgIE5BTUUgICAgICAgICAgICdzYXlfaGVsbG8nCisgICAgNCw5LTQsMTA6ICAgICAgICAgICBMUEFSICAgICAgICAgICAnKCcKKyAgICA0LDEwLTQsMTE6ICAgICAgICAgIFJQQVIgICAgICAgICAgICcpJworICAgIDQsMTEtNCwxMjogICAgICAgICAgTkVXTElORSAgICAgICAgJ1xuJworICAgIDUsMC01LDA6ICAgICAgICAgICAgRU5ETUFSS0VSICAgICAgJycKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAppbmRleCBkNGE3NmI2Li42OTU0ODBmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CkBAIC0xLDUgKzEsNSBAQAotOm1vZDpgdHlwZXNgIC0tLSBOYW1lcyBmb3IgYnVpbHQtaW4gdHlwZXMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6bW9kOmB0eXBlc2AgLS0tIER5bmFtaWMgdHlwZSBjcmVhdGlvbiBhbmQgbmFtZXMgZm9yIGJ1aWx0LWluIHR5cGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIG1vZHVsZTo6IHR5cGVzCiAgICA6c3lub3BzaXM6IE5hbWVzIGZvciBidWlsdC1pbiB0eXBlcy4KQEAgLTgsMjAgKzgsNzcgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotVGhpcyBtb2R1bGUgZGVmaW5lcyBuYW1lcyBmb3Igc29tZSBvYmplY3QgdHlwZXMgdGhhdCBhcmUgdXNlZCBieSB0aGUgc3RhbmRhcmQKK1RoaXMgbW9kdWxlIGRlZmluZXMgdXRpbGl0eSBmdW5jdGlvbiB0byBhc3Npc3QgaW4gZHluYW1pYyBjcmVhdGlvbiBvZgorbmV3IHR5cGVzLgorCitJdCBhbHNvIGRlZmluZXMgbmFtZXMgZm9yIHNvbWUgb2JqZWN0IHR5cGVzIHRoYXQgYXJlIHVzZWQgYnkgdGhlIHN0YW5kYXJkCiBQeXRob24gaW50ZXJwcmV0ZXIsIGJ1dCBub3QgZXhwb3NlZCBhcyBidWlsdGlucyBsaWtlIDpjbGFzczpgaW50YCBvcgotOmNsYXNzOmBzdHJgIGFyZS4gIEFsc28sIGl0IGRvZXMgbm90IGluY2x1ZGUgc29tZSBvZiB0aGUgdHlwZXMgdGhhdCBhcmlzZQotdHJhbnNwYXJlbnRseSBkdXJpbmcgcHJvY2Vzc2luZyBzdWNoIGFzIHRoZSBgYGxpc3RpdGVyYXRvcmBgIHR5cGUuCis6Y2xhc3M6YHN0cmAgYXJlLgogCi1UeXBpY2FsIHVzZSBpcyBmb3IgOmZ1bmM6YGlzaW5zdGFuY2VgIG9yIDpmdW5jOmBpc3N1YmNsYXNzYCBjaGVja3MuCiAKLVRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIG5hbWVzOgorRHluYW1pYyBUeXBlIENyZWF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBuZXdfY2xhc3MobmFtZSwgYmFzZXM9KCksIGt3ZHM9Tm9uZSwgZXhlY19ib2R5PU5vbmUpCisKKyAgIENyZWF0ZXMgYSBjbGFzcyBvYmplY3QgZHluYW1pY2FsbHkgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4KKworICAgVGhlIGZpcnN0IHRocmVlIGFyZ3VtZW50cyBhcmUgdGhlIGNvbXBvbmVudHMgdGhhdCBtYWtlIHVwIGEgY2xhc3MKKyAgIGRlZmluaXRpb24gaGVhZGVyOiB0aGUgY2xhc3MgbmFtZSwgdGhlIGJhc2UgY2xhc3NlcyAoaW4gb3JkZXIpLCB0aGUKKyAgIGtleXdvcmQgYXJndW1lbnRzIChzdWNoIGFzIGBgbWV0YWNsYXNzYGApLgorCisgICBUaGUgKmV4ZWNfYm9keSogYXJndW1lbnQgaXMgYSBjYWxsYmFjayB0aGF0IGlzIHVzZWQgdG8gcG9wdWxhdGUgdGhlCisgICBmcmVzaGx5IGNyZWF0ZWQgY2xhc3MgbmFtZXNwYWNlLiBJdCBzaG91bGQgYWNjZXB0IHRoZSBjbGFzcyBuYW1lc3BhY2UKKyAgIGFzIGl0cyBzb2xlIGFyZ3VtZW50IGFuZCB1cGRhdGUgdGhlIG5hbWVzcGFjZSBkaXJlY3RseSB3aXRoIHRoZSBjbGFzcworICAgY29udGVudHMuIElmIG5vIGNhbGxiYWNrIGlzIHByb3ZpZGVkLCBpdCBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIHBhc3NpbmcKKyAgIGluIGBgbGFtYmRhIG5zOiBuc2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZnVuY3Rpb246OiBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzPSgpLCBrd2RzPU5vbmUpCisKKyAgIENhbGN1bGF0ZXMgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBhbmQgY3JlYXRlcyB0aGUgY2xhc3MgbmFtZXNwYWNlLgorCisgICBUaGUgYXJndW1lbnRzIGFyZSB0aGUgY29tcG9uZW50cyB0aGF0IG1ha2UgdXAgYSBjbGFzcyBkZWZpbml0aW9uIGhlYWRlcjoKKyAgIHRoZSBjbGFzcyBuYW1lLCB0aGUgYmFzZSBjbGFzc2VzIChpbiBvcmRlcikgYW5kIHRoZSBrZXl3b3JkIGFyZ3VtZW50cworICAgKHN1Y2ggYXMgYGBtZXRhY2xhc3NgYCkuCisKKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgYSAzLXR1cGxlOiBgYG1ldGFjbGFzcywgbmFtZXNwYWNlLCBrd2RzYGAKKworICAgKm1ldGFjbGFzcyogaXMgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcywgKm5hbWVzcGFjZSogaXMgdGhlCisgICBwcmVwYXJlZCBjbGFzcyBuYW1lc3BhY2UgYW5kICprd2RzKiBpcyBhbiB1cGRhdGVkIGNvcHkgb2YgdGhlIHBhc3NlZAorICAgaW4gKmt3ZHMqIGFyZ3VtZW50IHdpdGggYW55IGBgJ21ldGFjbGFzcydgYCBlbnRyeSByZW1vdmVkLiBJZiBubyAqa3dkcyoKKyAgIGFyZ3VtZW50IGlzIHBhc3NlZCBpbiwgdGhpcyB3aWxsIGJlIGFuIGVtcHR5IGRpY3QuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisuLiBzZWVhbHNvOjoKKworICAgOnJlZjpgbWV0YWNsYXNzZXNgCisgICAgICBGdWxsIGRldGFpbHMgb2YgdGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3Mgc3VwcG9ydGVkIGJ5IHRoZXNlIGZ1bmN0aW9ucworCisgICA6cGVwOmAzMTE1YCAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwCisgICAgICBJbnRyb2R1Y2VkIHRoZSBgYF9fcHJlcGFyZV9fYGAgbmFtZXNwYWNlIGhvb2sKKworCitTdGFuZGFyZCBJbnRlcnByZXRlciBUeXBlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgbmFtZXMgZm9yIG1hbnkgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIHJlcXVpcmVkIHRvCitpbXBsZW1lbnQgYSBQeXRob24gaW50ZXJwcmV0ZXIuIEl0IGRlbGliZXJhdGVseSBhdm9pZHMgaW5jbHVkaW5nIHNvbWUgb2YKK3RoZSB0eXBlcyB0aGF0IGFyaXNlIG9ubHkgaW5jaWRlbnRhbGx5IGR1cmluZyBwcm9jZXNzaW5nIHN1Y2ggYXMgdGhlCitgYGxpc3RpdGVyYXRvcmBgIHR5cGUuCisKK1R5cGljYWwgdXNlIG9mIHRoZXNlIG5hbWVzIGlzIGZvciA6ZnVuYzpgaXNpbnN0YW5jZWAgb3IKKzpmdW5jOmBpc3N1YmNsYXNzYCBjaGVja3MuCisKK1N0YW5kYXJkIG5hbWVzIGFyZSBkZWZpbmVkIGZvciB0aGUgZm9sbG93aW5nIHR5cGVzOgogCiAuLiBkYXRhOjogRnVuY3Rpb25UeXBlCiAgICAgICAgICAgTGFtYmRhVHlwZQogCi0gICBUaGUgdHlwZSBvZiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZCBmdW5jdGlvbnMgY3JlYXRlZCBieSA6a2V5d29yZDpgbGFtYmRhYAotICAgZXhwcmVzc2lvbnMuCisgICBUaGUgdHlwZSBvZiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZCBmdW5jdGlvbnMgY3JlYXRlZCBieQorICAgOmtleXdvcmQ6YGxhbWJkYWAgIGV4cHJlc3Npb25zLgogCiAKIC4uIGRhdGE6OiBHZW5lcmF0b3JUeXBlCkBAIC04NSwzICsxNDIsNzkgQEAKIAogICAgICAgSW4gb3RoZXIgaW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbiwgdGhpcyB0eXBlIG1heSBiZSBpZGVudGljYWwgdG8KICAgICAgIGBgR2V0U2V0RGVzY3JpcHRvclR5cGVgYC4KKworLi4gY2xhc3M6OiBNYXBwaW5nUHJveHlUeXBlKG1hcHBpbmcpCisKKyAgIFJlYWQtb25seSBwcm94eSBvZiBhIG1hcHBpbmcuIEl0IHByb3ZpZGVzIGEgZHluYW1pYyB2aWV3IG9uIHRoZSBtYXBwaW5nJ3MKKyAgIGVudHJpZXMsIHdoaWNoIG1lYW5zIHRoYXQgd2hlbiB0aGUgbWFwcGluZyBjaGFuZ2VzLCB0aGUgdmlldyByZWZsZWN0cyB0aGVzZQorICAgY2hhbmdlcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyAgIC4uIGRlc2NyaWJlOjoga2V5IGluIHByb3h5CisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nIGhhcyBhIGtleSAqa2V5KiwgZWxzZQorICAgICAgYGBGYWxzZWBgLgorCisgICAuLiBkZXNjcmliZTo6IHByb3h5W2tleV0KKworICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcgd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYQorICAgICAgOmV4YzpgS2V5RXJyb3JgIGlmICprZXkqIGlzIG5vdCBpbiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLgorCisgICAuLiBkZXNjcmliZTo6IGl0ZXIocHJveHkpCisKKyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcuICBUaGlzIGlzIGEKKyAgICAgIHNob3J0Y3V0IGZvciBgYGl0ZXIocHJveHkua2V5cygpKWBgLgorCisgICAuLiBkZXNjcmliZTo6IGxlbihwcm94eSkKKworICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHVuZGVybHlpbmcgbWFwcGluZy4KKworICAgLi4gbWV0aG9kOjogY29weSgpCisKKyAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nLgorCisgICAuLiBtZXRob2Q6OiBnZXQoa2V5WywgZGVmYXVsdF0pCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSB1bmRlcmx5aW5nIG1hcHBpbmcsIGVsc2UKKyAgICAgICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCBzbyB0aGF0CisgICAgICB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSA6ZXhjOmBLZXlFcnJvcmAuCisKKyAgIC4uIG1ldGhvZDo6IGl0ZW1zKCkKKworICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZydzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgCisgICAgICBwYWlycykuCisKKyAgIC4uIG1ldGhvZDo6IGtleXMoKQorCisgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgdW5kZXJseWluZyBtYXBwaW5nJ3Mga2V5cy4KKworICAgLi4gbWV0aG9kOjogdmFsdWVzKCkKKworICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIHVuZGVybHlpbmcgbWFwcGluZydzIHZhbHVlcy4KKworCisuLiBjbGFzczo6IFNpbXBsZU5hbWVzcGFjZQorCisgICBBIHNpbXBsZSA6Y2xhc3M6YG9iamVjdGAgc3ViY2xhc3MgdGhhdCBwcm92aWRlcyBhdHRyaWJ1dGUgYWNjZXNzIHRvIGl0cworICAgbmFtZXNwYWNlLCBhcyB3ZWxsIGFzIGEgbWVhbmluZ2Z1bCByZXByLgorCisgICBVbmxpa2UgOmNsYXNzOmBvYmplY3RgLCB3aXRoIGBgU2ltcGxlTmFtZXNwYWNlYGAgeW91IGNhbiBhZGQgYW5kIHJlbW92ZQorICAgYXR0cmlidXRlcy4gIElmIGEgYGBTaW1wbGVOYW1lc3BhY2VgYCBvYmplY3QgaXMgaW5pdGlhbGl6ZWQgd2l0aCBrZXl3b3JkCisgICBhcmd1bWVudHMsIHRob3NlIGFyZSBkaXJlY3RseSBhZGRlZCB0byB0aGUgdW5kZXJseWluZyBuYW1lc3BhY2UuCisKKyAgIFRoZSB0eXBlIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB0aGUgZm9sbG93aW5nIGNvZGU6OgorCisgICAgICAgY2xhc3MgU2ltcGxlTmFtZXNwYWNlOgorICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoa3dhcmdzKQorICAgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgICBrZXlzID0gc29ydGVkKHNlbGYuX19kaWN0X18pCisgICAgICAgICAgICAgICBpdGVtcyA9ICgie309eyFyfSIuZm9ybWF0KGssIHNlbGYuX19kaWN0X19ba10pIGZvciBrIGluIGtleXMpCisgICAgICAgICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHR5cGUoc2VsZikuX19uYW1lX18sICIsICIuam9pbihpdGVtcykpCisKKyAgIGBgU2ltcGxlTmFtZXNwYWNlYGAgbWF5IGJlIHVzZWZ1bCBhcyBhIHJlcGxhY2VtZW50IGZvciBgYGNsYXNzIE5TOiBwYXNzYGAuCisgICBIb3dldmVyLCBmb3IgYSBzdHJ1Y3R1cmVkIHJlY29yZCB0eXBlIHVzZSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgCisgICBpbnN0ZWFkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdCBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAppbmRleCAzYjFiYmUwLi4zNzg3YzM2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CkBAIC0xNSw4ICsxNSw4IEBACiAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgKFVDRCkgd2hpY2gKIGRlZmluZXMgY2hhcmFjdGVyIHByb3BlcnRpZXMgZm9yIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMuIFRoZSBkYXRhIGNvbnRhaW5lZCBpbgotdGhpcyBkYXRhYmFzZSBpcyBjb21waWxlZCBmcm9tIHRoZSBgVUNEIHZlcnNpb24gNi4wLjAKLTxodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy82LjAuMC91Y2Q+YF8uCit0aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA2LjEuMAorPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZD5gXy4KIAogVGhlIG1vZHVsZSB1c2VzIHRoZSBzYW1lIG5hbWVzIGFuZCBzeW1ib2xzIGFzIGRlZmluZWQgYnkgVW5pY29kZQogU3RhbmRhcmQgQW5uZXggIzQ0LCBgIlVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIgpAQCAtMjksNiArMjksOSBAQAogICAgTG9vayB1cCBjaGFyYWN0ZXIgYnkgbmFtZS4gIElmIGEgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIG5hbWUgaXMgZm91bmQsIHJldHVybgogICAgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLiAgSWYgbm90IGZvdW5kLCA6ZXhjOmBLZXlFcnJvcmAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsjXV8gYW5kIG5hbWVkIHNlcXVlbmNlcyBbI11fIGhhcyBiZWVuIGFkZGVkLgorCiAKIC4uIGZ1bmN0aW9uOjogbmFtZShjaHJbLCBkZWZhdWx0XSkKIApAQCAtMTYwLDMgKzE2Myw5IEBACiAgICA+Pj4gdW5pY29kZWRhdGEuYmlkaXJlY3Rpb25hbCgnXHUwNjYwJykgIyAnQSdyYWJpYywgJ04ndW1iZXIKICAgICdBTicKIAorCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZC9OYW1lQWxpYXNlcy50eHQKKworLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzYuMS4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2stZXhhbXBsZXMucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay1leGFtcGxlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxZTg4YQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2stZXhhbXBsZXMucnN0CkBAIC0wLDAgKzEsMTI0NiBAQAorOm1vZDpgdW5pdHRlc3QubW9ja2AgLS0tIGdldHRpbmcgc3RhcnRlZAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGVhdXRob3I6OiBNaWNoYWVsIEZvb3JkIDxtaWNoYWVsQHB5dGhvbi5vcmc+CisuLiBjdXJyZW50bW9kdWxlOjogdW5pdHRlc3QubW9jaworCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCisuLiBfZ2V0dGluZy1zdGFydGVkOgorCitVc2luZyBNb2NrCistLS0tLS0tLS0tCisKK01vY2sgUGF0Y2hpbmcgTWV0aG9kcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0NvbW1vbiB1c2VzIGZvciA6Y2xhc3M6YE1vY2tgIG9iamVjdHMgaW5jbHVkZToKKworKiBQYXRjaGluZyBtZXRob2RzCisqIFJlY29yZGluZyBtZXRob2QgY2FsbHMgb24gb2JqZWN0cworCitZb3UgbWlnaHQgd2FudCB0byByZXBsYWNlIGEgbWV0aG9kIG9uIGFuIG9iamVjdCB0byBjaGVjayB0aGF0CitpdCBpcyBjYWxsZWQgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudHMgYnkgYW5vdGhlciBwYXJ0IG9mIHRoZSBzeXN0ZW06CisKKyAgICA+Pj4gcmVhbCA9IFNvbWVDbGFzcygpCisgICAgPj4+IHJlYWwubWV0aG9kID0gTWFnaWNNb2NrKG5hbWU9J21ldGhvZCcpCisgICAgPj4+IHJlYWwubWV0aG9kKDMsIDQsIDUsIGtleT0ndmFsdWUnKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbWV0aG9kKCknIGlkPScuLi4nPgorCitPbmNlIG91ciBtb2NrIGhhcyBiZWVuIHVzZWQgKGByZWFsLm1ldGhvZGAgaW4gdGhpcyBleGFtcGxlKSBpdCBoYXMgbWV0aG9kcworYW5kIGF0dHJpYnV0ZXMgdGhhdCBhbGxvdyB5b3UgdG8gbWFrZSBhc3NlcnRpb25zIGFib3V0IGhvdyBpdCBoYXMgYmVlbiB1c2VkLgorCisuLiBub3RlOjoKKworICAgIEluIG1vc3Qgb2YgdGhlc2UgZXhhbXBsZXMgdGhlIDpjbGFzczpgTW9ja2AgYW5kIDpjbGFzczpgTWFnaWNNb2NrYCBjbGFzc2VzCisgICAgYXJlIGludGVyY2hhbmdlYWJsZS4gQXMgdGhlIGBNYWdpY01vY2tgIGlzIHRoZSBtb3JlIGNhcGFibGUgY2xhc3MgaXQgbWFrZXMKKyAgICBhIHNlbnNpYmxlIG9uZSB0byB1c2UgYnkgZGVmYXVsdC4KKworT25jZSB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgaXRzIDphdHRyOmB+TW9jay5jYWxsZWRgIGF0dHJpYnV0ZSBpcyBzZXQgdG8KK2BUcnVlYC4gTW9yZSBpbXBvcnRhbnRseSB3ZSBjYW4gdXNlIHRoZSA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCBvcgorOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoYCBtZXRob2QgdG8gY2hlY2sgdGhhdCBpdCB3YXMgY2FsbGVkIHdpdGgKK3RoZSBjb3JyZWN0IGFyZ3VtZW50cy4KKworVGhpcyBleGFtcGxlIHRlc3RzIHRoYXQgY2FsbGluZyBgUHJvZHVjdGlvbkNsYXNzKCkubWV0aG9kYCByZXN1bHRzIGluIGEgY2FsbCB0bwordGhlIGBzb21ldGhpbmdgIG1ldGhvZDoKKworICAgID4+PiBjbGFzcyBQcm9kdWN0aW9uQ2xhc3Mob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5zb21ldGhpbmcoMSwgMiwgMykKKyAgICAuLi4gICAgIGRlZiBzb21ldGhpbmcoc2VsZiwgYSwgYiwgYyk6CisgICAgLi4uICAgICAgICAgcGFzcworICAgIC4uLgorICAgID4+PiByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICA+Pj4gcmVhbC5zb21ldGhpbmcgPSBNYWdpY01vY2soKQorICAgID4+PiByZWFsLm1ldGhvZCgpCisgICAgPj4+IHJlYWwuc29tZXRoaW5nLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisKKworCitNb2NrIGZvciBNZXRob2QgQ2FsbHMgb24gYW4gT2JqZWN0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0luIHRoZSBsYXN0IGV4YW1wbGUgd2UgcGF0Y2hlZCBhIG1ldGhvZCBkaXJlY3RseSBvbiBhbiBvYmplY3QgdG8gY2hlY2sgdGhhdCBpdAord2FzIGNhbGxlZCBjb3JyZWN0bHkuIEFub3RoZXIgY29tbW9uIHVzZSBjYXNlIGlzIHRvIHBhc3MgYW4gb2JqZWN0IGludG8gYQorbWV0aG9kIChvciBzb21lIHBhcnQgb2YgdGhlIHN5c3RlbSB1bmRlciB0ZXN0KSBhbmQgdGhlbiBjaGVjayB0aGF0IGl0IGlzIHVzZWQKK2luIHRoZSBjb3JyZWN0IHdheS4KKworVGhlIHNpbXBsZSBgUHJvZHVjdGlvbkNsYXNzYCBiZWxvdyBoYXMgYSBgY2xvc2VyYCBtZXRob2QuIElmIGl0IGlzIGNhbGxlZCB3aXRoCithbiBvYmplY3QgdGhlbiBpdCBjYWxscyBgY2xvc2VgIG9uIGl0LgorCisgICAgPj4+IGNsYXNzIFByb2R1Y3Rpb25DbGFzcyhvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIGNsb3NlcihzZWxmLCBzb21ldGhpbmcpOgorICAgIC4uLiAgICAgICAgIHNvbWV0aGluZy5jbG9zZSgpCisgICAgLi4uCisKK1NvIHRvIHRlc3QgaXQgd2UgbmVlZCB0byBwYXNzIGluIGFuIG9iamVjdCB3aXRoIGEgYGNsb3NlYCBtZXRob2QgYW5kIGNoZWNrCit0aGF0IGl0IHdhcyBjYWxsZWQgY29ycmVjdGx5LgorCisgICAgPj4+IHJlYWwgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IHJlYWwuY2xvc2VyKG1vY2spCisgICAgPj4+IG1vY2suY2xvc2UuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKworV2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnkgd29yayB0byBwcm92aWRlIHRoZSAnY2xvc2UnIG1ldGhvZCBvbiBvdXIgbW9jay4KK0FjY2Vzc2luZyBjbG9zZSBjcmVhdGVzIGl0LiBTbywgaWYgJ2Nsb3NlJyBoYXNuJ3QgYWxyZWFkeSBiZWVuIGNhbGxlZCB0aGVuCithY2Nlc3NpbmcgaXQgaW4gdGhlIHRlc3Qgd2lsbCBjcmVhdGUgaXQsIGJ1dCA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYAord2lsbCByYWlzZSBhIGZhaWx1cmUgZXhjZXB0aW9uLgorCisKK01vY2tpbmcgQ2xhc3Nlcworfn5+fn5+fn5+fn5+fn5+CisKK0EgY29tbW9uIHVzZSBjYXNlIGlzIHRvIG1vY2sgb3V0IGNsYXNzZXMgaW5zdGFudGlhdGVkIGJ5IHlvdXIgY29kZSB1bmRlciB0ZXN0LgorV2hlbiB5b3UgcGF0Y2ggYSBjbGFzcywgdGhlbiB0aGF0IGNsYXNzIGlzIHJlcGxhY2VkIHdpdGggYSBtb2NrLiBJbnN0YW5jZXMKK2FyZSBjcmVhdGVkIGJ5ICpjYWxsaW5nIHRoZSBjbGFzcyouIFRoaXMgbWVhbnMgeW91IGFjY2VzcyB0aGUgIm1vY2sgaW5zdGFuY2UiCitieSBsb29raW5nIGF0IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIG1vY2tlZCBjbGFzcy4KKworSW4gdGhlIGV4YW1wbGUgYmVsb3cgd2UgaGF2ZSBhIGZ1bmN0aW9uIGBzb21lX2Z1bmN0aW9uYCB0aGF0IGluc3RhbnRpYXRlcyBgRm9vYAorYW5kIGNhbGxzIGEgbWV0aG9kIG9uIGl0LiBUaGUgY2FsbCB0byBgcGF0Y2hgIHJlcGxhY2VzIHRoZSBjbGFzcyBgRm9vYCB3aXRoIGEKK21vY2suIFRoZSBgRm9vYCBpbnN0YW5jZSBpcyB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIG1vY2ssIHNvIGl0IGlzIGNvbmZpZ3VyZWQKK2J5IG1vZGlmeWluZyB0aGUgbW9jayA6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYC4KKworICAgID4+PiBkZWYgc29tZV9mdW5jdGlvbigpOgorICAgIC4uLiAgICAgaW5zdGFuY2UgPSBtb2R1bGUuRm9vKCkKKyAgICAuLi4gICAgIHJldHVybiBpbnN0YW5jZS5tZXRob2QoKQorICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoKCdtb2R1bGUuRm9vJykgYXMgbW9jazoKKyAgICAuLi4gICAgIGluc3RhbmNlID0gbW9jay5yZXR1cm5fdmFsdWUKKyAgICAuLi4gICAgIGluc3RhbmNlLm1ldGhvZC5yZXR1cm5fdmFsdWUgPSAndGhlIHJlc3VsdCcKKyAgICAuLi4gICAgIHJlc3VsdCA9IHNvbWVfZnVuY3Rpb24oKQorICAgIC4uLiAgICAgYXNzZXJ0IHJlc3VsdCA9PSAndGhlIHJlc3VsdCcKKworCitOYW1pbmcgeW91ciBtb2Nrcworfn5+fn5+fn5+fn5+fn5+fn4KKworSXQgY2FuIGJlIHVzZWZ1bCB0byBnaXZlIHlvdXIgbW9ja3MgYSBuYW1lLiBUaGUgbmFtZSBpcyBzaG93biBpbiB0aGUgcmVwciBvZgordGhlIG1vY2sgYW5kIGNhbiBiZSBoZWxwZnVsIHdoZW4gdGhlIG1vY2sgYXBwZWFycyBpbiB0ZXN0IGZhaWx1cmUgbWVzc2FnZXMuIFRoZQorbmFtZSBpcyBhbHNvIHByb3BhZ2F0ZWQgdG8gYXR0cmlidXRlcyBvciBtZXRob2RzIG9mIHRoZSBtb2NrOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2sobmFtZT0nZm9vJykKKyAgICA+Pj4gbW9jaworICAgIDxNYWdpY01vY2sgbmFtZT0nZm9vJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tZXRob2QKKyAgICA8TWFnaWNNb2NrIG5hbWU9J2Zvby5tZXRob2QnIGlkPScuLi4nPgorCisKK1RyYWNraW5nIGFsbCBDYWxscworfn5+fn5+fn5+fn5+fn5+fn5+CisKK09mdGVuIHlvdSB3YW50IHRvIHRyYWNrIG1vcmUgdGhhbiBhIHNpbmdsZSBjYWxsIHRvIGEgbWV0aG9kLiBUaGUKKzphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCBhdHRyaWJ1dGUgcmVjb3JkcyBhbGwgY2FsbHMKK3RvIGNoaWxkIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2sgLSBhbmQgYWxzbyB0byB0aGVpciBjaGlsZHJlbi4KKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2suYXR0cmlidXRlLm1ldGhvZCgxMCwgeD01MykKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suYXR0cmlidXRlLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbW9jay5tb2NrX2NhbGxzCisgICAgW2NhbGwubWV0aG9kKCksIGNhbGwuYXR0cmlidXRlLm1ldGhvZCgxMCwgeD01MyldCisKK0lmIHlvdSBtYWtlIGFuIGFzc2VydGlvbiBhYm91dCBgbW9ja19jYWxsc2AgYW5kIGFueSB1bmV4cGVjdGVkIG1ldGhvZHMKK2hhdmUgYmVlbiBjYWxsZWQsIHRoZW4gdGhlIGFzc2VydGlvbiB3aWxsIGZhaWwuIFRoaXMgaXMgdXNlZnVsIGJlY2F1c2UgYXMgd2VsbAorYXMgYXNzZXJ0aW5nIHRoYXQgdGhlIGNhbGxzIHlvdSBleHBlY3RlZCBoYXZlIGJlZW4gbWFkZSwgeW91IGFyZSBhbHNvIGNoZWNraW5nCit0aGF0IHRoZXkgd2VyZSBtYWRlIGluIHRoZSByaWdodCBvcmRlciBhbmQgd2l0aCBubyBhZGRpdGlvbmFsIGNhbGxzOgorCitZb3UgdXNlIHRoZSA6ZGF0YTpgY2FsbGAgb2JqZWN0IHRvIGNvbnN0cnVjdCBsaXN0cyBmb3IgY29tcGFyaW5nIHdpdGgKK2Btb2NrX2NhbGxzYDoKKworICAgID4+PiBleHBlY3RlZCA9IFtjYWxsLm1ldGhvZCgpLCBjYWxsLmF0dHJpYnV0ZS5tZXRob2QoMTAsIHg9NTMpXQorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMgPT0gZXhwZWN0ZWQKKyAgICBUcnVlCisKKworU2V0dGluZyBSZXR1cm4gVmFsdWVzIGFuZCBBdHRyaWJ1dGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworU2V0dGluZyB0aGUgcmV0dXJuIHZhbHVlcyBvbiBhIG1vY2sgb2JqZWN0IGlzIHRyaXZpYWxseSBlYXN5OgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gbW9jay5yZXR1cm5fdmFsdWUgPSAzCisgICAgPj4+IG1vY2soKQorICAgIDMKKworT2YgY291cnNlIHlvdSBjYW4gZG8gdGhlIHNhbWUgZm9yIG1ldGhvZHMgb24gdGhlIG1vY2s6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLm1ldGhvZC5yZXR1cm5fdmFsdWUgPSAzCisgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAzCisKK1RoZSByZXR1cm4gdmFsdWUgY2FuIGFsc28gYmUgc2V0IGluIHRoZSBjb25zdHJ1Y3RvcjoKKworICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICA+Pj4gbW9jaygpCisgICAgMworCitJZiB5b3UgbmVlZCBhbiBhdHRyaWJ1dGUgc2V0dGluZyBvbiB5b3VyIG1vY2ssIGp1c3QgZG8gaXQ6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrLnggPSAzCisgICAgPj4+IG1vY2sueAorICAgIDMKKworU29tZXRpbWVzIHlvdSB3YW50IHRvIG1vY2sgdXAgYSBtb3JlIGNvbXBsZXggc2l0dWF0aW9uLCBsaWtlIGZvciBleGFtcGxlCitgbW9jay5jb25uZWN0aW9uLmN1cnNvcigpLmV4ZWN1dGUoIlNFTEVDVCAxIilgLiBJZiB3ZSB3YW50ZWQgdGhpcyBjYWxsIHRvCityZXR1cm4gYSBsaXN0LCB0aGVuIHdlIGhhdmUgdG8gY29uZmlndXJlIHRoZSByZXN1bHQgb2YgdGhlIG5lc3RlZCBjYWxsLgorCitXZSBjYW4gdXNlIDpkYXRhOmBjYWxsYCB0byBjb25zdHJ1Y3QgdGhlIHNldCBvZiBjYWxscyBpbiBhICJjaGFpbmVkIGNhbGwiIGxpa2UKK3RoaXMgZm9yIGVhc3kgYXNzZXJ0aW9uIGFmdGVyd2FyZHM6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBjdXJzb3IgPSBtb2NrLmNvbm5lY3Rpb24uY3Vyc29yLnJldHVybl92YWx1ZQorICAgID4+PiBjdXJzb3IuZXhlY3V0ZS5yZXR1cm5fdmFsdWUgPSBbJ2ZvbyddCisgICAgPj4+IG1vY2suY29ubmVjdGlvbi5jdXJzb3IoKS5leGVjdXRlKCJTRUxFQ1QgMSIpCisgICAgWydmb28nXQorICAgID4+PiBleHBlY3RlZCA9IGNhbGwuY29ubmVjdGlvbi5jdXJzb3IoKS5leGVjdXRlKCJTRUxFQ1QgMSIpLmNhbGxfbGlzdCgpCisgICAgPj4+IG1vY2subW9ja19jYWxscworICAgIFtjYWxsLmNvbm5lY3Rpb24uY3Vyc29yKCksIGNhbGwuY29ubmVjdGlvbi5jdXJzb3IoKS5leGVjdXRlKCdTRUxFQ1QgMScpXQorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMgPT0gZXhwZWN0ZWQKKyAgICBUcnVlCisKK0l0IGlzIHRoZSBjYWxsIHRvIGAuY2FsbF9saXN0KClgIHRoYXQgdHVybnMgb3VyIGNhbGwgb2JqZWN0IGludG8gYSBsaXN0IG9mCitjYWxscyByZXByZXNlbnRpbmcgdGhlIGNoYWluZWQgY2FsbHMuCisKKworUmFpc2luZyBleGNlcHRpb25zIHdpdGggbW9ja3MKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CisKK0EgdXNlZnVsIGF0dHJpYnV0ZSBpcyA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgLiBJZiB5b3Ugc2V0IHRoaXMgdG8gYW4KK2V4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSB0aGVuIHRoZSBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB0aGUgbW9jaworaXMgY2FsbGVkLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUV4Y2VwdGlvbignQm9vbSEnKSkKKyAgICA+Pj4gbW9jaygpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgRXhjZXB0aW9uOiBCb29tIQorCisKK1NpZGUgZWZmZWN0IGZ1bmN0aW9ucyBhbmQgaXRlcmFibGVzCit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCitgc2lkZV9lZmZlY3RgIGNhbiBhbHNvIGJlIHNldCB0byBhIGZ1bmN0aW9uIG9yIGFuIGl0ZXJhYmxlLiBUaGUgdXNlIGNhc2UgZm9yCitgc2lkZV9lZmZlY3RgIGFzIGFuIGl0ZXJhYmxlIGlzIHdoZXJlIHlvdXIgbW9jayBpcyBnb2luZyB0byBiZSBjYWxsZWQgc2V2ZXJhbAordGltZXMsIGFuZCB5b3Ugd2FudCBlYWNoIGNhbGwgdG8gcmV0dXJuIGEgZGlmZmVyZW50IHZhbHVlLiBXaGVuIHlvdSBzZXQKK2BzaWRlX2VmZmVjdGAgdG8gYW4gaXRlcmFibGUgZXZlcnkgY2FsbCB0byB0aGUgbW9jayByZXR1cm5zIHRoZSBuZXh0IHZhbHVlCitmcm9tIHRoZSBpdGVyYWJsZToKKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PVs0LCA1LCA2XSkKKyAgICA+Pj4gbW9jaygpCisgICAgNAorICAgID4+PiBtb2NrKCkKKyAgICA1CisgICAgPj4+IG1vY2soKQorICAgIDYKKworCitGb3IgbW9yZSBhZHZhbmNlZCB1c2UgY2FzZXMsIGxpa2UgZHluYW1pY2FsbHkgdmFyeWluZyB0aGUgcmV0dXJuIHZhbHVlcworZGVwZW5kaW5nIG9uIHdoYXQgdGhlIG1vY2sgaXMgY2FsbGVkIHdpdGgsIGBzaWRlX2VmZmVjdGAgY2FuIGJlIGEgZnVuY3Rpb24uCitUaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIG1vY2suIFdoYXRldmVyIHRoZQorZnVuY3Rpb24gcmV0dXJucyBpcyB3aGF0IHRoZSBjYWxsIHJldHVybnM6CisKKyAgICA+Pj4gdmFscyA9IHsoMSwgMik6IDEsICgyLCAzKTogMn0KKyAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzKToKKyAgICAuLi4gICAgIHJldHVybiB2YWxzW2FyZ3NdCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QpCisgICAgPj4+IG1vY2soMSwgMikKKyAgICAxCisgICAgPj4+IG1vY2soMiwgMykKKyAgICAyCisKKworQ3JlYXRpbmcgYSBNb2NrIGZyb20gYW4gRXhpc3RpbmcgT2JqZWN0Cit+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworT25lIHByb2JsZW0gd2l0aCBvdmVyIHVzZSBvZiBtb2NraW5nIGlzIHRoYXQgaXQgY291cGxlcyB5b3VyIHRlc3RzIHRvIHRoZQoraW1wbGVtZW50YXRpb24gb2YgeW91ciBtb2NrcyByYXRoZXIgdGhhbiB5b3VyIHJlYWwgY29kZS4gU3VwcG9zZSB5b3UgaGF2ZSBhCitjbGFzcyB0aGF0IGltcGxlbWVudHMgYHNvbWVfbWV0aG9kYC4gSW4gYSB0ZXN0IGZvciBhbm90aGVyIGNsYXNzLCB5b3UKK3Byb3ZpZGUgYSBtb2NrIG9mIHRoaXMgb2JqZWN0IHRoYXQgKmFsc28qIHByb3ZpZGVzIGBzb21lX21ldGhvZGAuIElmIGxhdGVyCit5b3UgcmVmYWN0b3IgdGhlIGZpcnN0IGNsYXNzLCBzbyB0aGF0IGl0IG5vIGxvbmdlciBoYXMgYHNvbWVfbWV0aG9kYCAtIHRoZW4KK3lvdXIgdGVzdHMgd2lsbCBjb250aW51ZSB0byBwYXNzIGV2ZW4gdGhvdWdoIHlvdXIgY29kZSBpcyBub3cgYnJva2VuIQorCitgTW9ja2AgYWxsb3dzIHlvdSB0byBwcm92aWRlIGFuIG9iamVjdCBhcyBhIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrLAordXNpbmcgdGhlIGBzcGVjYCBrZXl3b3JkIGFyZ3VtZW50LiBBY2Nlc3NpbmcgbWV0aG9kcyAvIGF0dHJpYnV0ZXMgb24gdGhlCittb2NrIHRoYXQgZG9uJ3QgZXhpc3Qgb24geW91ciBzcGVjaWZpY2F0aW9uIG9iamVjdCB3aWxsIGltbWVkaWF0ZWx5IHJhaXNlIGFuCithdHRyaWJ1dGUgZXJyb3IuIElmIHlvdSBjaGFuZ2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIHlvdXIgc3BlY2lmaWNhdGlvbiwgdGhlbgordGVzdHMgdGhhdCB1c2UgdGhhdCBjbGFzcyB3aWxsIHN0YXJ0IGZhaWxpbmcgaW1tZWRpYXRlbHkgd2l0aG91dCB5b3UgaGF2aW5nIHRvCitpbnN0YW50aWF0ZSB0aGUgY2xhc3MgaW4gdGhvc2UgdGVzdHMuCisKKyAgICA+Pj4gbW9jayA9IE1vY2soc3BlYz1Tb21lQ2xhc3MpCisgICAgPj4+IG1vY2sub2xkX21ldGhvZCgpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnb2xkX21ldGhvZCcKKworSWYgeW91IHdhbnQgYSBzdHJvbmdlciBmb3JtIG9mIHNwZWNpZmljYXRpb24gdGhhdCBwcmV2ZW50cyB0aGUgc2V0dGluZworb2YgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgYXMgd2VsbCBhcyB0aGUgZ2V0dGluZyBvZiB0aGVtIHRoZW4geW91IGNhbiB1c2UKK2BzcGVjX3NldGAgaW5zdGVhZCBvZiBgc3BlY2AuCisKKworCitQYXRjaCBEZWNvcmF0b3JzCistLS0tLS0tLS0tLS0tLS0tCisKKy4uIG5vdGU6OgorCisgICBXaXRoIGBwYXRjaGAgaXQgbWF0dGVycyB0aGF0IHlvdSBwYXRjaCBvYmplY3RzIGluIHRoZSBuYW1lc3BhY2Ugd2hlcmUgdGhleQorICAgYXJlIGxvb2tlZCB1cC4gVGhpcyBpcyBub3JtYWxseSBzdHJhaWdodGZvcndhcmQsIGJ1dCBmb3IgYSBxdWljayBndWlkZQorICAgcmVhZCA6cmVmOmB3aGVyZSB0byBwYXRjaCA8d2hlcmUtdG8tcGF0Y2g+YC4KKworCitBIGNvbW1vbiBuZWVkIGluIHRlc3RzIGlzIHRvIHBhdGNoIGEgY2xhc3MgYXR0cmlidXRlIG9yIGEgbW9kdWxlIGF0dHJpYnV0ZSwKK2ZvciBleGFtcGxlIHBhdGNoaW5nIGEgYnVpbHRpbiBvciBwYXRjaGluZyBhIGNsYXNzIGluIGEgbW9kdWxlIHRvIHRlc3QgdGhhdCBpdAoraXMgaW5zdGFudGlhdGVkLiBNb2R1bGVzIGFuZCBjbGFzc2VzIGFyZSBlZmZlY3RpdmVseSBnbG9iYWwsIHNvIHBhdGNoaW5nIG9uCit0aGVtIGhhcyB0byBiZSB1bmRvbmUgYWZ0ZXIgdGhlIHRlc3Qgb3IgdGhlIHBhdGNoIHdpbGwgcGVyc2lzdCBpbnRvIG90aGVyCit0ZXN0cyBhbmQgY2F1c2UgaGFyZCB0byBkaWFnbm9zZSBwcm9ibGVtcy4KKworbW9jayBwcm92aWRlcyB0aHJlZSBjb252ZW5pZW50IGRlY29yYXRvcnMgZm9yIHRoaXM6IGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIGFuZAorYHBhdGNoLmRpY3RgLiBgcGF0Y2hgIHRha2VzIGEgc2luZ2xlIHN0cmluZywgb2YgdGhlIGZvcm0KK2BwYWNrYWdlLm1vZHVsZS5DbGFzcy5hdHRyaWJ1dGVgIHRvIHNwZWNpZnkgdGhlIGF0dHJpYnV0ZSB5b3UgYXJlIHBhdGNoaW5nLiBJdAorYWxzbyBvcHRpb25hbGx5IHRha2VzIGEgdmFsdWUgdGhhdCB5b3Ugd2FudCB0aGUgYXR0cmlidXRlIChvciBjbGFzcyBvcgord2hhdGV2ZXIpIHRvIGJlIHJlcGxhY2VkIHdpdGguICdwYXRjaC5vYmplY3QnIHRha2VzIGFuIG9iamVjdCBhbmQgdGhlIG5hbWUgb2YKK3RoZSBhdHRyaWJ1dGUgeW91IHdvdWxkIGxpa2UgcGF0Y2hlZCwgcGx1cyBvcHRpb25hbGx5IHRoZSB2YWx1ZSB0byBwYXRjaCBpdAord2l0aC4KKworYHBhdGNoLm9iamVjdGA6CisKKyAgICA+Pj4gb3JpZ2luYWwgPSBTb21lQ2xhc3MuYXR0cmlidXRlCisgICAgPj4+IEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnYXR0cmlidXRlJywgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLiBkZWYgdGVzdCgpOgorICAgIC4uLiAgICAgYXNzZXJ0IFNvbWVDbGFzcy5hdHRyaWJ1dGUgPT0gc2VudGluZWwuYXR0cmlidXRlCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorICAgID4+PiBhc3NlcnQgU29tZUNsYXNzLmF0dHJpYnV0ZSA9PSBvcmlnaW5hbAorCisgICAgPj4+IEBwYXRjaCgncGFja2FnZS5tb2R1bGUuYXR0cmlidXRlJywgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLiBkZWYgdGVzdCgpOgorICAgIC4uLiAgICAgZnJvbSBwYWNrYWdlLm1vZHVsZSBpbXBvcnQgYXR0cmlidXRlCisgICAgLi4uICAgICBhc3NlcnQgYXR0cmlidXRlIGlzIHNlbnRpbmVsLmF0dHJpYnV0ZQorICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworSWYgeW91IGFyZSBwYXRjaGluZyBhIG1vZHVsZSAoaW5jbHVkaW5nIGBfX2J1aWx0aW5fX2ApIHRoZW4gdXNlIGBwYXRjaGAKK2luc3RlYWQgb2YgYHBhdGNoLm9iamVjdGA6CisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5maWxlX2hhbmRsZSkKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19idWlsdGluX18ub3BlbicsIG1vY2spOgorICAgIC4uLiAgICAgaGFuZGxlID0gb3BlbignZmlsZW5hbWUnLCAncicpCisgICAgLi4uCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCdmaWxlbmFtZScsICdyJykKKyAgICA+Pj4gYXNzZXJ0IGhhbmRsZSA9PSBzZW50aW5lbC5maWxlX2hhbmRsZSwgImluY29ycmVjdCBmaWxlIGhhbmRsZSByZXR1cm5lZCIKKworVGhlIG1vZHVsZSBuYW1lIGNhbiBiZSAnZG90dGVkJywgaW4gdGhlIGZvcm0gYHBhY2thZ2UubW9kdWxlYCBpZiBuZWVkZWQ6CisKKyAgICA+Pj4gQHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUuYXR0cmlidXRlJywgc2VudGluZWwuYXR0cmlidXRlKQorICAgIC4uLiBkZWYgdGVzdCgpOgorICAgIC4uLiAgICAgZnJvbSBwYWNrYWdlLm1vZHVsZSBpbXBvcnQgQ2xhc3NOYW1lCisgICAgLi4uICAgICBhc3NlcnQgQ2xhc3NOYW1lLmF0dHJpYnV0ZSA9PSBzZW50aW5lbC5hdHRyaWJ1dGUKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKK0EgbmljZSBwYXR0ZXJuIGlzIHRvIGFjdHVhbGx5IGRlY29yYXRlIHRlc3QgbWV0aG9kcyB0aGVtc2VsdmVzOgorCisgICAgPj4+IGNsYXNzIE15VGVzdCh1bml0dGVzdDIuVGVzdENhc2UpOgorICAgIC4uLiAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuYXR0cmlidXRlLCBzZW50aW5lbC5hdHRyaWJ1dGUpCisgICAgLi4uCisgICAgPj4+IG9yaWdpbmFsID0gU29tZUNsYXNzLmF0dHJpYnV0ZQorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykudGVzdF9zb21ldGhpbmcoKQorICAgID4+PiBhc3NlcnQgU29tZUNsYXNzLmF0dHJpYnV0ZSA9PSBvcmlnaW5hbAorCitJZiB5b3Ugd2FudCB0byBwYXRjaCB3aXRoIGEgTW9jaywgeW91IGNhbiB1c2UgYHBhdGNoYCB3aXRoIG9ubHkgb25lIGFyZ3VtZW50Cisob3IgYHBhdGNoLm9iamVjdGAgd2l0aCB0d28gYXJndW1lbnRzKS4gVGhlIG1vY2sgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UgYW5kCitwYXNzZWQgaW50byB0aGUgdGVzdCBmdW5jdGlvbiAvIG1ldGhvZDoKKworICAgID4+PiBjbGFzcyBNeVRlc3QodW5pdHRlc3QyLlRlc3RDYXNlKToKKyAgICAuLi4gICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnc3RhdGljX21ldGhvZCcpCisgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZiwgbW9ja19tZXRob2QpOgorICAgIC4uLiAgICAgICAgIFNvbWVDbGFzcy5zdGF0aWNfbWV0aG9kKCkKKyAgICAuLi4gICAgICAgICBtb2NrX21ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykudGVzdF9zb21ldGhpbmcoKQorCitZb3UgY2FuIHN0YWNrIHVwIG11bHRpcGxlIHBhdGNoIGRlY29yYXRvcnMgdXNpbmcgdGhpcyBwYXR0ZXJuOgorCisgICAgPj4+IGNsYXNzIE15VGVzdCh1bml0dGVzdDIuVGVzdENhc2UpOgorICAgIC4uLiAgICAgQHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUxJykKKyAgICAuLi4gICAgIEBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMicpCisgICAgLi4uICAgICBkZWYgdGVzdF9zb21ldGhpbmcoc2VsZiwgTW9ja0NsYXNzMiwgTW9ja0NsYXNzMSk6CisgICAgLi4uICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhY2thZ2UubW9kdWxlLkNsYXNzTmFtZTEgaXMgTW9ja0NsYXNzMSkKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUocGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lMiBpcyBNb2NrQ2xhc3MyKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3Rfc29tZXRoaW5nJykudGVzdF9zb21ldGhpbmcoKQorCitXaGVuIHlvdSBuZXN0IHBhdGNoIGRlY29yYXRvcnMgdGhlIG1vY2tzIGFyZSBwYXNzZWQgaW4gdG8gdGhlIGRlY29yYXRlZAorZnVuY3Rpb24gaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBsaWVkICh0aGUgbm9ybWFsICpweXRob24qIG9yZGVyIHRoYXQKK2RlY29yYXRvcnMgYXJlIGFwcGxpZWQpLiBUaGlzIG1lYW5zIGZyb20gdGhlIGJvdHRvbSB1cCwgc28gaW4gdGhlIGV4YW1wbGUKK2Fib3ZlIHRoZSBtb2NrIGZvciBgdGVzdF9tb2R1bGUuQ2xhc3NOYW1lMmAgaXMgcGFzc2VkIGluIGZpcnN0LgorCitUaGVyZSBpcyBhbHNvIDpmdW5jOmBwYXRjaC5kaWN0YCBmb3Igc2V0dGluZyB2YWx1ZXMgaW4gYSBkaWN0aW9uYXJ5IGp1c3QKK2R1cmluZyBhIHNjb3BlIGFuZCByZXN0b3JpbmcgdGhlIGRpY3Rpb25hcnkgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIHdoZW4gdGhlIHRlc3QKK2VuZHM6CisKKyAgID4+PiBmb28gPSB7J2tleSc6ICd2YWx1ZSd9CisgICA+Pj4gb3JpZ2luYWwgPSBmb28uY29weSgpCisgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KGZvbywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSwgY2xlYXI9VHJ1ZSk6CisgICAuLi4gICAgIGFzc2VydCBmb28gPT0geyduZXdrZXknOiAnbmV3dmFsdWUnfQorICAgLi4uCisgICA+Pj4gYXNzZXJ0IGZvbyA9PSBvcmlnaW5hbAorCitgcGF0Y2hgLCBgcGF0Y2gub2JqZWN0YCBhbmQgYHBhdGNoLmRpY3RgIGNhbiBhbGwgYmUgdXNlZCBhcyBjb250ZXh0IG1hbmFnZXJzLgorCitXaGVyZSB5b3UgdXNlIGBwYXRjaGAgdG8gY3JlYXRlIGEgbW9jayBmb3IgeW91LCB5b3UgY2FuIGdldCBhIHJlZmVyZW5jZSB0byB0aGUKK21vY2sgdXNpbmcgdGhlICJhcyIgZm9ybSBvZiB0aGUgd2l0aCBzdGF0ZW1lbnQ6CisKKyAgICA+Pj4gY2xhc3MgUHJvZHVjdGlvbkNsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaC5vYmplY3QoUHJvZHVjdGlvbkNsYXNzLCAnbWV0aG9kJykgYXMgbW9ja19tZXRob2Q6CisgICAgLi4uICAgICBtb2NrX21ldGhvZC5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgLi4uICAgICByZWFsID0gUHJvZHVjdGlvbkNsYXNzKCkKKyAgICAuLi4gICAgIHJlYWwubWV0aG9kKDEsIDIsIDMpCisgICAgLi4uCisgICAgPj4+IG1vY2tfbWV0aG9kLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyLCAzKQorCisKK0FzIGFuIGFsdGVybmF0aXZlIGBwYXRjaGAsIGBwYXRjaC5vYmplY3RgIGFuZCBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMKK2NsYXNzIGRlY29yYXRvcnMuIFdoZW4gdXNlZCBpbiB0aGlzIHdheSBpdCBpcyB0aGUgc2FtZSBhcyBhcHBseWluZyB0aGUKK2RlY29yYXRvciBpbmR2aWR1YWxseSB0byBldmVyeSBtZXRob2Qgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAidGVzdCIuCisKKworLi4gX2Z1cnRoZXItZXhhbXBsZXM6CisKK0Z1cnRoZXIgRXhhbXBsZXMKKz09PT09PT09PT09PT09PT0KKworCitIZXJlIGFyZSBzb21lIG1vcmUgZXhhbXBsZXMgZm9yIHNvbWUgc2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBzY2VuYXJpb3MuCisKKworTW9ja2luZyBjaGFpbmVkIGNhbGxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTW9ja2luZyBjaGFpbmVkIGNhbGxzIGlzIGFjdHVhbGx5IHN0cmFpZ2h0Zm9yd2FyZCB3aXRoIG1vY2sgb25jZSB5b3UKK3VuZGVyc3RhbmQgdGhlIDphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4gV2hlbiBhIG1vY2sgaXMgY2FsbGVkIGZvcgordGhlIGZpcnN0IHRpbWUsIG9yIHlvdSBmZXRjaCBpdHMgYHJldHVybl92YWx1ZWAgYmVmb3JlIGl0IGhhcyBiZWVuIGNhbGxlZCwgYQorbmV3IGBNb2NrYCBpcyBjcmVhdGVkLgorCitUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzZWUgaG93IHRoZSBvYmplY3QgcmV0dXJuZWQgZnJvbSBhIGNhbGwgdG8gYSBtb2NrZWQKK29iamVjdCBoYXMgYmVlbiB1c2VkIGJ5IGludGVycm9nYXRpbmcgdGhlIGByZXR1cm5fdmFsdWVgIG1vY2s6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgID4+PiBtb2NrKCkuZm9vKGE9MiwgYj0zKQorICAgIDxNb2NrIG5hbWU9J21vY2soKS5mb28oKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmZvby5hc3NlcnRfY2FsbGVkX3dpdGgoYT0yLCBiPTMpCisKK0Zyb20gaGVyZSBpdCBpcyBhIHNpbXBsZSBzdGVwIHRvIGNvbmZpZ3VyZSBhbmQgdGhlbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQKK2NoYWluZWQgY2FsbHMuIE9mIGNvdXJzZSBhbm90aGVyIGFsdGVybmF0aXZlIGlzIHdyaXRpbmcgeW91ciBjb2RlIGluIGEgbW9yZQordGVzdGFibGUgd2F5IGluIHRoZSBmaXJzdCBwbGFjZS4uLgorCitTbywgc3VwcG9zZSB3ZSBoYXZlIHNvbWUgY29kZSB0aGF0IGxvb2tzIGEgbGl0dGxlIGJpdCBsaWtlIHRoaXM6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5iYWNrZW5kID0gQmFja2VuZFByb3ZpZGVyKCkKKyAgICAuLi4gICAgIGRlZiBtZXRob2Qoc2VsZik6CisgICAgLi4uICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmJhY2tlbmQuZ2V0X2VuZHBvaW50KCdmb29iYXInKS5jcmVhdGVfY2FsbCgnc3BhbScsICdlZ2dzJykuc3RhcnRfY2FsbCgpCisgICAgLi4uICAgICAgICAgIyBtb3JlIGNvZGUKKworQXNzdW1pbmcgdGhhdCBgQmFja2VuZFByb3ZpZGVyYCBpcyBhbHJlYWR5IHdlbGwgdGVzdGVkLCBob3cgZG8gd2UgdGVzdAorYG1ldGhvZCgpYD8gU3BlY2lmaWNhbGx5LCB3ZSB3YW50IHRvIHRlc3QgdGhhdCB0aGUgY29kZSBzZWN0aW9uIGAjIG1vcmUKK2NvZGVgIHVzZXMgdGhlIHJlc3BvbnNlIG9iamVjdCBpbiB0aGUgY29ycmVjdCB3YXkuCisKK0FzIHRoaXMgY2hhaW4gb2YgY2FsbHMgaXMgbWFkZSBmcm9tIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSB3ZSBjYW4gbW9ua2V5IHBhdGNoCit0aGUgYGJhY2tlbmRgIGF0dHJpYnV0ZSBvbiBhIGBTb21ldGhpbmdgIGluc3RhbmNlLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZQord2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGZpbmFsIGNhbGwgdG8KK2BzdGFydF9jYWxsYCBzbyB3ZSBkb24ndCBoYXZlIG11Y2ggY29uZmlndXJhdGlvbiB0byBkby4gTGV0J3MgYXNzdW1lIHRoZQorb2JqZWN0IGl0IHJldHVybnMgaXMgJ2ZpbGUtbGlrZScsIHNvIHdlJ2xsIGVuc3VyZSB0aGF0IG91ciByZXNwb25zZSBvYmplY3QKK3VzZXMgdGhlIGJ1aWx0aW4gYGZpbGVgIGFzIGl0cyBgc3BlY2AuCisKK1RvIGRvIHRoaXMgd2UgY3JlYXRlIGEgbW9jayBpbnN0YW5jZSBhcyBvdXIgbW9jayBiYWNrZW5kIGFuZCBjcmVhdGUgYSBtb2NrCityZXNwb25zZSBvYmplY3QgZm9yIGl0LiBUbyBzZXQgdGhlIHJlc3BvbnNlIGFzIHRoZSByZXR1cm4gdmFsdWUgZm9yIHRoYXQgZmluYWwKK2BzdGFydF9jYWxsYCB3ZSBjb3VsZCBkbyB0aGlzOgorCisgICAgYG1vY2tfYmFja2VuZC5nZXRfZW5kcG9pbnQucmV0dXJuX3ZhbHVlLmNyZWF0ZV9jYWxsLnJldHVybl92YWx1ZS5zdGFydF9jYWxsLnJldHVybl92YWx1ZSA9IG1vY2tfcmVzcG9uc2VgLgorCitXZSBjYW4gZG8gdGhhdCBpbiBhIHNsaWdodGx5IG5pY2VyIHdheSB1c2luZyB0aGUgOm1ldGg6YH5Nb2NrLmNvbmZpZ3VyZV9tb2NrYAorbWV0aG9kIHRvIGRpcmVjdGx5IHNldCB0aGUgcmV0dXJuIHZhbHVlIGZvciB1czoKKworICAgID4+PiBzb21ldGhpbmcgPSBTb21ldGhpbmcoKQorICAgID4+PiBtb2NrX3Jlc3BvbnNlID0gTW9jayhzcGVjPWZpbGUpCisgICAgPj4+IG1vY2tfYmFja2VuZCA9IE1vY2soKQorICAgID4+PiBjb25maWcgPSB7J2dldF9lbmRwb2ludC5yZXR1cm5fdmFsdWUuY3JlYXRlX2NhbGwucmV0dXJuX3ZhbHVlLnN0YXJ0X2NhbGwucmV0dXJuX3ZhbHVlJzogbW9ja19yZXNwb25zZX0KKyAgICA+Pj4gbW9ja19iYWNrZW5kLmNvbmZpZ3VyZV9tb2NrKCoqY29uZmlnKQorCitXaXRoIHRoZXNlIHdlIG1vbmtleSBwYXRjaCB0aGUgIm1vY2sgYmFja2VuZCIgaW4gcGxhY2UgYW5kIGNhbiBtYWtlIHRoZSByZWFsCitjYWxsOgorCisgICAgPj4+IHNvbWV0aGluZy5iYWNrZW5kID0gbW9ja19iYWNrZW5kCisgICAgPj4+IHNvbWV0aGluZy5tZXRob2QoKQorCitVc2luZyA6YXR0cjpgfk1vY2subW9ja19jYWxsc2Agd2UgY2FuIGNoZWNrIHRoZSBjaGFpbmVkIGNhbGwgd2l0aCBhIHNpbmdsZQorYXNzZXJ0LiBBIGNoYWluZWQgY2FsbCBpcyBzZXZlcmFsIGNhbGxzIGluIG9uZSBsaW5lIG9mIGNvZGUsIHNvIHRoZXJlIHdpbGwgYmUKK3NldmVyYWwgZW50cmllcyBpbiBgbW9ja19jYWxsc2AuIFdlIGNhbiB1c2UgOm1ldGg6YGNhbGwuY2FsbF9saXN0YCB0byBjcmVhdGUKK3RoaXMgbGlzdCBvZiBjYWxscyBmb3IgdXM6CisKKyAgICA+Pj4gY2hhaW5lZCA9IGNhbGwuZ2V0X2VuZHBvaW50KCdmb29iYXInKS5jcmVhdGVfY2FsbCgnc3BhbScsICdlZ2dzJykuc3RhcnRfY2FsbCgpCisgICAgPj4+IGNhbGxfbGlzdCA9IGNoYWluZWQuY2FsbF9saXN0KCkKKyAgICA+Pj4gYXNzZXJ0IG1vY2tfYmFja2VuZC5tb2NrX2NhbGxzID09IGNhbGxfbGlzdAorCisKK1BhcnRpYWwgbW9ja2luZworLS0tLS0tLS0tLS0tLS0tCisKK0luIHNvbWUgdGVzdHMgSSB3YW50ZWQgdG8gbW9jayBvdXQgYSBjYWxsIHRvIGBkYXRldGltZS5kYXRlLnRvZGF5KCkKKzxodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvZGF0ZXRpbWUuaHRtbCNkYXRldGltZS5kYXRlLnRvZGF5PmBfIHRvIHJldHVybgorYSBrbm93biBkYXRlLCBidXQgSSBkaWRuJ3Qgd2FudCB0byBwcmV2ZW50IHRoZSBjb2RlIHVuZGVyIHRlc3QgZnJvbQorY3JlYXRpbmcgbmV3IGRhdGUgb2JqZWN0cy4gVW5mb3J0dW5hdGVseSBgZGF0ZXRpbWUuZGF0ZWAgaXMgd3JpdHRlbiBpbiBDLCBhbmQKK3NvIEkgY291bGRuJ3QganVzdCBtb25rZXktcGF0Y2ggb3V0IHRoZSBzdGF0aWMgYGRhdGUudG9kYXlgIG1ldGhvZC4KKworSSBmb3VuZCBhIHNpbXBsZSB3YXkgb2YgZG9pbmcgdGhpcyB0aGF0IGludm9sdmVkIGVmZmVjdGl2ZWx5IHdyYXBwaW5nIHRoZSBkYXRlCitjbGFzcyB3aXRoIGEgbW9jaywgYnV0IHBhc3NpbmcgdGhyb3VnaCBjYWxscyB0byB0aGUgY29uc3RydWN0b3IgdG8gdGhlIHJlYWwKK2NsYXNzIChhbmQgcmV0dXJuaW5nIHJlYWwgaW5zdGFuY2VzKS4KKworVGhlIDpmdW5jOmBwYXRjaCBkZWNvcmF0b3IgPHBhdGNoPmAgaXMgdXNlZCBoZXJlIHRvCittb2NrIG91dCB0aGUgYGRhdGVgIGNsYXNzIGluIHRoZSBtb2R1bGUgdW5kZXIgdGVzdC4gVGhlIDphdHRyOmBzaWRlX2VmZmVjdGAKK2F0dHJpYnV0ZSBvbiB0aGUgbW9jayBkYXRlIGNsYXNzIGlzIHRoZW4gc2V0IHRvIGEgbGFtYmRhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucworYSByZWFsIGRhdGUuIFdoZW4gdGhlIG1vY2sgZGF0ZSBjbGFzcyBpcyBjYWxsZWQgYSByZWFsIGRhdGUgd2lsbCBiZQorY29uc3RydWN0ZWQgYW5kIHJldHVybmVkIGJ5IGBzaWRlX2VmZmVjdGAuCisKKyAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQorICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5kYXRlJykgYXMgbW9ja19kYXRlOgorICAgIC4uLiAgICAgbW9ja19kYXRlLnRvZGF5LnJldHVybl92YWx1ZSA9IGRhdGUoMjAxMCwgMTAsIDgpCisgICAgLi4uICAgICBtb2NrX2RhdGUuc2lkZV9lZmZlY3QgPSBsYW1iZGEgKmFyZ3MsICoqa3c6IGRhdGUoKmFyZ3MsICoqa3cpCisgICAgLi4uCisgICAgLi4uICAgICBhc3NlcnQgbXltb2R1bGUuZGF0ZS50b2RheSgpID09IGRhdGUoMjAxMCwgMTAsIDgpCisgICAgLi4uICAgICBhc3NlcnQgbXltb2R1bGUuZGF0ZSgyMDA5LCA2LCA4KSA9PSBkYXRlKDIwMDksIDYsIDgpCisgICAgLi4uCisKK05vdGUgdGhhdCB3ZSBkb24ndCBwYXRjaCBgZGF0ZXRpbWUuZGF0ZWAgZ2xvYmFsbHksIHdlIHBhdGNoIGBkYXRlYCBpbiB0aGUKK21vZHVsZSB0aGF0ICp1c2VzKiBpdC4gU2VlIDpyZWY6YHdoZXJlIHRvIHBhdGNoIDx3aGVyZS10by1wYXRjaD5gLgorCitXaGVuIGBkYXRlLnRvZGF5KClgIGlzIGNhbGxlZCBhIGtub3duIGRhdGUgaXMgcmV0dXJuZWQsIGJ1dCBjYWxscyB0byB0aGUKK2BkYXRlKC4uLilgIGNvbnN0cnVjdG9yIHN0aWxsIHJldHVybiBub3JtYWwgZGF0ZXMuIFdpdGhvdXQgdGhpcyB5b3UgY2FuIGZpbmQKK3lvdXJzZWxmIGhhdmluZyB0byBjYWxjdWxhdGUgYW4gZXhwZWN0ZWQgcmVzdWx0IHVzaW5nIGV4YWN0bHkgdGhlIHNhbWUKK2FsZ29yaXRobSBhcyB0aGUgY29kZSB1bmRlciB0ZXN0LCB3aGljaCBpcyBhIGNsYXNzaWMgdGVzdGluZyBhbnRpLXBhdHRlcm4uCisKK0NhbGxzIHRvIHRoZSBkYXRlIGNvbnN0cnVjdG9yIGFyZSByZWNvcmRlZCBpbiB0aGUgYG1vY2tfZGF0ZWAgYXR0cmlidXRlcworKGBjYWxsX2NvdW50YCBhbmQgZnJpZW5kcykgd2hpY2ggbWF5IGFsc28gYmUgdXNlZnVsIGZvciB5b3VyIHRlc3RzLgorCitBbiBhbHRlcm5hdGl2ZSB3YXkgb2YgZGVhbGluZyB3aXRoIG1vY2tpbmcgZGF0ZXMsIG9yIG90aGVyIGJ1aWx0aW4gY2xhc3NlcywKK2lzIGRpc2N1c3NlZCBpbiBgdGhpcyBibG9nIGVudHJ5Cis8aHR0cDovL3dpbGxpYW1qb2huYmVydC5jb20vMjAxMS8wNy9ob3ctdG8tdW5pdC10ZXN0aW5nLWluLWRqYW5nby13aXRoLW1vY2tpbmctYW5kLXBhdGNoaW5nLz5gXy4KKworCitNb2NraW5nIGEgR2VuZXJhdG9yIE1ldGhvZAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQSBQeXRob24gZ2VuZXJhdG9yIGlzIGEgZnVuY3Rpb24gb3IgbWV0aG9kIHRoYXQgdXNlcyB0aGUgYHlpZWxkIHN0YXRlbWVudAorPGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5odG1sI3RoZS15aWVsZC1zdGF0ZW1lbnQ+YF8gdG8KK3JldHVybiBhIHNlcmllcyBvZiB2YWx1ZXMgd2hlbiBpdGVyYXRlZCBvdmVyIFsjXV8uCisKK0EgZ2VuZXJhdG9yIG1ldGhvZCAvIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byByZXR1cm4gdGhlIGdlbmVyYXRvciBvYmplY3QuIEl0IGlzCit0aGUgZ2VuZXJhdG9yIG9iamVjdCB0aGF0IGlzIHRoZW4gaXRlcmF0ZWQgb3Zlci4gVGhlIHByb3RvY29sIG1ldGhvZCBmb3IKK2l0ZXJhdGlvbiBpcyBgX19pdGVyX18KKzxodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYnJhcnkvc3RkdHlwZXMuaHRtbCNjb250YWluZXIuX19pdGVyX18+YF8sIHNvIHdlIGNhbgorbW9jayB0aGlzIHVzaW5nIGEgYE1hZ2ljTW9ja2AuCisKK0hlcmUncyBhbiBleGFtcGxlIGNsYXNzIHdpdGggYW4gIml0ZXIiIG1ldGhvZCBpbXBsZW1lbnRlZCBhcyBhIGdlbmVyYXRvcjoKKworICAgID4+PiBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBpdGVyKHNlbGYpOgorICAgIC4uLiAgICAgICAgIGZvciBpIGluIFsxLCAyLCAzXToKKyAgICAuLi4gICAgICAgICAgICAgeWllbGQgaQorICAgIC4uLgorICAgID4+PiBmb28gPSBGb28oKQorICAgID4+PiBsaXN0KGZvby5pdGVyKCkpCisgICAgWzEsIDIsIDNdCisKKworSG93IHdvdWxkIHdlIG1vY2sgdGhpcyBjbGFzcywgYW5kIGluIHBhcnRpY3VsYXIgaXRzICJpdGVyIiBtZXRob2Q/CisKK1RvIGNvbmZpZ3VyZSB0aGUgdmFsdWVzIHJldHVybmVkIGZyb20gdGhlIGl0ZXJhdGlvbiAoaW1wbGljaXQgaW4gdGhlIGNhbGwgdG8KK2BsaXN0YCksIHdlIG5lZWQgdG8gY29uZmlndXJlIHRoZSBvYmplY3QgcmV0dXJuZWQgYnkgdGhlIGNhbGwgdG8gYGZvby5pdGVyKClgLgorCisgICAgPj4+IG1vY2tfZm9vID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbW9ja19mb28uaXRlci5yZXR1cm5fdmFsdWUgPSBpdGVyKFsxLCAyLCAzXSkKKyAgICA+Pj4gbGlzdChtb2NrX2Zvby5pdGVyKCkpCisgICAgWzEsIDIsIDNdCisKKy4uIFsjXSBUaGVyZSBhcmUgYWxzbyBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgYW5kIG1vcmUgYGFkdmFuY2VkIHVzZXMKKyAgICA8aHR0cDovL3d3dy5kYWJlYXouY29tL2Nvcm91dGluZXMvaW5kZXguaHRtbD5gXyBvZiBnZW5lcmF0b3JzLCBidXQgd2UgYXJlbid0CisgICAgY29uY2VybmVkIGFib3V0IHRoZW0gaGVyZS4gQSB2ZXJ5IGdvb2QgaW50cm9kdWN0aW9uIHRvIGdlbmVyYXRvcnMgYW5kIGhvdworICAgIHBvd2VyZnVsIHRoZXkgYXJlIGlzOiBgR2VuZXJhdG9yIFRyaWNrcyBmb3IgU3lzdGVtcyBQcm9ncmFtbWVycworICAgIDxodHRwOi8vd3d3LmRhYmVhei5jb20vZ2VuZXJhdG9ycy8+YF8uCisKKworQXBwbHlpbmcgdGhlIHNhbWUgcGF0Y2ggdG8gZXZlcnkgdGVzdCBtZXRob2QKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0lmIHlvdSB3YW50IHNldmVyYWwgcGF0Y2hlcyBpbiBwbGFjZSBmb3IgbXVsdGlwbGUgdGVzdCBtZXRob2RzIHRoZSBvYnZpb3VzIHdheQoraXMgdG8gYXBwbHkgdGhlIHBhdGNoIGRlY29yYXRvcnMgdG8gZXZlcnkgbWV0aG9kLiBUaGlzIGNhbiBmZWVsIGxpa2UgdW5uZWNlc3NhcnkKK3JlcGV0aXRpb24uIEZvciBQeXRob24gMi42IG9yIG1vcmUgcmVjZW50IHlvdSBjYW4gdXNlIGBwYXRjaGAgKGluIGFsbCBpdHMKK3ZhcmlvdXMgZm9ybXMpIGFzIGEgY2xhc3MgZGVjb3JhdG9yLiBUaGlzIGFwcGxpZXMgdGhlIHBhdGNoZXMgdG8gYWxsIHRlc3QKK21ldGhvZHMgb24gdGhlIGNsYXNzLiBBIHRlc3QgbWV0aG9kIGlzIGlkZW50aWZpZWQgYnkgbWV0aG9kcyB3aG9zZSBuYW1lcyBzdGFydAord2l0aCBgdGVzdGA6CisKKyAgICA+Pj4gQHBhdGNoKCdteW1vZHVsZS5Tb21lQ2xhc3MnKQorICAgIC4uLiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIE1vY2tTb21lQ2xhc3MpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShteW1vZHVsZS5Tb21lQ2xhc3MgaXMgTW9ja1NvbWVDbGFzcykKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X3R3byhzZWxmLCBNb2NrU29tZUNsYXNzKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUobXltb2R1bGUuU29tZUNsYXNzIGlzIE1vY2tTb21lQ2xhc3MpCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgbm90X2FfdGVzdChzZWxmKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gJ3NvbWV0aGluZycKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X29uZScpLnRlc3Rfb25lKCkKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3R3bycpLnRlc3RfdHdvKCkKKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X3R3bycpLm5vdF9hX3Rlc3QoKQorICAgICdzb21ldGhpbmcnCisKK0FuIGFsdGVybmF0aXZlIHdheSBvZiBtYW5hZ2luZyBwYXRjaGVzIGlzIHRvIHVzZSB0aGUgOnJlZjpgc3RhcnQtYW5kLXN0b3BgLgorVGhlc2UgYWxsb3cgeW91IHRvIG1vdmUgdGhlIHBhdGNoaW5nIGludG8geW91ciBgc2V0VXBgIGFuZCBgdGVhckRvd25gIG1ldGhvZHMuCisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4gICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIgPSBwYXRjaCgnbXltb2R1bGUuZm9vJykKKyAgICAuLi4gICAgICAgICBzZWxmLm1vY2tfZm9vID0gc2VsZi5wYXRjaGVyLnN0YXJ0KCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLmFzc2VydFRydWUobXltb2R1bGUuZm9vIGlzIHNlbGYubW9ja19mb28pCisgICAgLi4uCisgICAgLi4uICAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyLnN0b3AoKQorICAgIC4uLgorICAgID4+PiBNeVRlc3QoJ3Rlc3RfZm9vJykucnVuKCkKKworSWYgeW91IHVzZSB0aGlzIHRlY2huaXF1ZSB5b3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgcGF0Y2hpbmcgaXMgInVuZG9uZSIgYnkKK2NhbGxpbmcgYHN0b3BgLiBUaGlzIGNhbiBiZSBmaWRkbGllciB0aGFuIHlvdSBtaWdodCB0aGluaywgYmVjYXVzZSBpZiBhbgorZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGUgc2V0VXAgdGhlbiB0ZWFyRG93biBpcyBub3QgY2FsbGVkLgorOm1ldGg6YHVuaXR0ZXN0LlRlc3RDYXNlLmFkZENsZWFudXBgIG1ha2VzIHRoaXMgZWFzaWVyOgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCdteW1vZHVsZS5mb28nKQorICAgIC4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisgICAgLi4uICAgICAgICAgc2VsZi5tb2NrX2ZvbyA9IHBhdGNoZXIuc3RhcnQoKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShteW1vZHVsZS5mb28gaXMgc2VsZi5tb2NrX2ZvbykKKyAgICAuLi4KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnJ1bigpCisKKworTW9ja2luZyBVbmJvdW5kIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1doaWxzdCB3cml0aW5nIHRlc3RzIHRvZGF5IEkgbmVlZGVkIHRvIHBhdGNoIGFuICp1bmJvdW5kIG1ldGhvZCogKHBhdGNoaW5nIHRoZQorbWV0aG9kIG9uIHRoZSBjbGFzcyByYXRoZXIgdGhhbiBvbiB0aGUgaW5zdGFuY2UpLiBJIG5lZWRlZCBzZWxmIHRvIGJlIHBhc3NlZAoraW4gYXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlY2F1c2UgSSB3YW50IHRvIG1ha2UgYXNzZXJ0cyBhYm91dCB3aGljaCBvYmplY3RzCit3ZXJlIGNhbGxpbmcgdGhpcyBwYXJ0aWN1bGFyIG1ldGhvZC4gVGhlIGlzc3VlIGlzIHRoYXQgeW91IGNhbid0IHBhdGNoIHdpdGggYQorbW9jayBmb3IgdGhpcywgYmVjYXVzZSBpZiB5b3UgcmVwbGFjZSBhbiB1bmJvdW5kIG1ldGhvZCB3aXRoIGEgbW9jayBpdCBkb2Vzbid0CitiZWNvbWUgYSBib3VuZCBtZXRob2Qgd2hlbiBmZXRjaGVkIGZyb20gdGhlIGluc3RhbmNlLCBhbmQgc28gaXQgZG9lc24ndCBnZXQKK3NlbGYgcGFzc2VkIGluLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBwYXRjaCB0aGUgdW5ib3VuZCBtZXRob2Qgd2l0aCBhIHJlYWwKK2Z1bmN0aW9uIGluc3RlYWQuIFRoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvciBtYWtlcyBpdCBzbyBzaW1wbGUgdG8KK3BhdGNoIG91dCBtZXRob2RzIHdpdGggYSBtb2NrIHRoYXQgaGF2aW5nIHRvIGNyZWF0ZSBhIHJlYWwgZnVuY3Rpb24gYmVjb21lcyBhCitudWlzYW5jZS4KKworSWYgeW91IHBhc3MgYGF1dG9zcGVjPVRydWVgIHRvIHBhdGNoIHRoZW4gaXQgZG9lcyB0aGUgcGF0Y2hpbmcgd2l0aCBhCisqcmVhbCogZnVuY3Rpb24gb2JqZWN0LiBUaGlzIGZ1bmN0aW9uIG9iamVjdCBoYXMgdGhlIHNhbWUgc2lnbmF0dXJlIGFzIHRoZSBvbmUKK2l0IGlzIHJlcGxhY2luZywgYnV0IGRlbGVnYXRlcyB0byBhIG1vY2sgdW5kZXIgdGhlIGhvb2QuIFlvdSBzdGlsbCBnZXQgeW91cgorbW9jayBhdXRvLWNyZWF0ZWQgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgYXMgYmVmb3JlLiBXaGF0IGl0IG1lYW5zIHRob3VnaCwgaXMKK3RoYXQgaWYgeW91IHVzZSBpdCB0byBwYXRjaCBvdXQgYW4gdW5ib3VuZCBtZXRob2Qgb24gYSBjbGFzcyB0aGUgbW9ja2VkCitmdW5jdGlvbiB3aWxsIGJlIHR1cm5lZCBpbnRvIGEgYm91bmQgbWV0aG9kIGlmIGl0IGlzIGZldGNoZWQgZnJvbSBhbiBpbnN0YW5jZS4KK0l0IHdpbGwgaGF2ZSBgc2VsZmAgcGFzc2VkIGluIGFzIHRoZSBmaXJzdCBhcmd1bWVudCwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkKK3dhbnRlZDoKKworICAgID4+PiBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAuLi4gICBkZWYgZm9vKHNlbGYpOgorICAgIC4uLiAgICAgcGFzcworICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoLm9iamVjdChGb28sICdmb28nLCBhdXRvc3BlYz1UcnVlKSBhcyBtb2NrX2ZvbzoKKyAgICAuLi4gICBtb2NrX2Zvby5yZXR1cm5fdmFsdWUgPSAnZm9vJworICAgIC4uLiAgIGZvbyA9IEZvbygpCisgICAgLi4uICAgZm9vLmZvbygpCisgICAgLi4uCisgICAgJ2ZvbycKKyAgICA+Pj4gbW9ja19mb28uYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoZm9vKQorCitJZiB3ZSBkb24ndCB1c2UgYGF1dG9zcGVjPVRydWVgIHRoZW4gdGhlIHVuYm91bmQgbWV0aG9kIGlzIHBhdGNoZWQgb3V0Cit3aXRoIGEgTW9jayBpbnN0YW5jZSBpbnN0ZWFkLCBhbmQgaXNuJ3QgY2FsbGVkIHdpdGggYHNlbGZgLgorCisKK0NoZWNraW5nIG11bHRpcGxlIGNhbGxzIHdpdGggbW9jaworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21vY2sgaGFzIGEgbmljZSBBUEkgZm9yIG1ha2luZyBhc3NlcnRpb25zIGFib3V0IGhvdyB5b3VyIG1vY2sgb2JqZWN0cyBhcmUgdXNlZC4KKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2suZm9vX2Jhci5yZXR1cm5fdmFsdWUgPSBOb25lCisgICAgPj4+IG1vY2suZm9vX2JhcignYmF6Jywgc3BhbT0nZWdncycpCisgICAgPj4+IG1vY2suZm9vX2Jhci5hc3NlcnRfY2FsbGVkX3dpdGgoJ2JheicsIHNwYW09J2VnZ3MnKQorCitJZiB5b3VyIG1vY2sgaXMgb25seSBiZWluZyBjYWxsZWQgb25jZSB5b3UgY2FuIHVzZSB0aGUKKzptZXRoOmBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgbWV0aG9kIHRoYXQgYWxzbyBhc3NlcnRzIHRoYXQgdGhlCis6YXR0cjpgY2FsbF9jb3VudGAgaXMgb25lLgorCisgICAgPj4+IG1vY2suZm9vX2Jhci5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYmF6Jywgc3BhbT0nZWdncycpCisgICAgPj4+IG1vY2suZm9vX2JhcigpCisgICAgPj4+IG1vY2suZm9vX2Jhci5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnYmF6Jywgc3BhbT0nZWdncycpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgdG8gYmUgY2FsbGVkIG9uY2UuIENhbGxlZCAyIHRpbWVzLgorCitCb3RoIGBhc3NlcnRfY2FsbGVkX3dpdGhgIGFuZCBgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGhgIG1ha2UgYXNzZXJ0aW9ucyBhYm91dAordGhlICptb3N0IHJlY2VudCogY2FsbC4gSWYgeW91ciBtb2NrIGlzIGdvaW5nIHRvIGJlIGNhbGxlZCBzZXZlcmFsIHRpbWVzLCBhbmQKK3lvdSB3YW50IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCAqYWxsKiB0aG9zZSBjYWxscyB5b3UgY2FuIHVzZQorOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc19saXN0YDoKKworICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrKDQsIDUsIDYpCisgICAgPj4+IG1vY2soKQorICAgID4+PiBtb2NrLmNhbGxfYXJnc19saXN0CisgICAgW2NhbGwoMSwgMiwgMyksIGNhbGwoNCwgNSwgNiksIGNhbGwoKV0KKworVGhlIDpkYXRhOmBjYWxsYCBoZWxwZXIgbWFrZXMgaXQgZWFzeSB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgdGhlc2UgY2FsbHMuIFlvdQorY2FuIGJ1aWxkIHVwIGEgbGlzdCBvZiBleHBlY3RlZCBjYWxscyBhbmQgY29tcGFyZSBpdCB0byBgY2FsbF9hcmdzX2xpc3RgLiBUaGlzCitsb29rcyByZW1hcmthYmx5IHNpbWlsYXIgdG8gdGhlIHJlcHIgb2YgdGhlIGBjYWxsX2FyZ3NfbGlzdGA6CisKKyAgICA+Pj4gZXhwZWN0ZWQgPSBbY2FsbCgxLCAyLCAzKSwgY2FsbCg0LCA1LCA2KSwgY2FsbCgpXQorICAgID4+PiBtb2NrLmNhbGxfYXJnc19saXN0ID09IGV4cGVjdGVkCisgICAgVHJ1ZQorCisKK0NvcGluZyB3aXRoIG11dGFibGUgYXJndW1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBbm90aGVyIHNpdHVhdGlvbiBpcyByYXJlLCBidXQgY2FuIGJpdGUgeW91LCBpcyB3aGVuIHlvdXIgbW9jayBpcyBjYWxsZWQgd2l0aAorbXV0YWJsZSBhcmd1bWVudHMuIGBjYWxsX2FyZ3NgIGFuZCBgY2FsbF9hcmdzX2xpc3RgIHN0b3JlICpyZWZlcmVuY2VzKiB0byB0aGUKK2FyZ3VtZW50cy4gSWYgdGhlIGFyZ3VtZW50cyBhcmUgbXV0YXRlZCBieSB0aGUgY29kZSB1bmRlciB0ZXN0IHRoZW4geW91IGNhbiBubworbG9uZ2VyIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB3aGF0IHRoZSB2YWx1ZXMgd2VyZSB3aGVuIHRoZSBtb2NrIHdhcyBjYWxsZWQuCisKK0hlcmUncyBzb21lIGV4YW1wbGUgY29kZSB0aGF0IHNob3dzIHRoZSBwcm9ibGVtLiBJbWFnaW5lIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zCitkZWZpbmVkIGluICdteW1vZHVsZSc6OgorCisgICAgZGVmIGZyb2IodmFsKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIGdyb2IodmFsKToKKyAgICAgICAgIkZpcnN0IGZyb2IgYW5kIHRoZW4gY2xlYXIgdmFsIgorICAgICAgICBmcm9iKHZhbCkKKyAgICAgICAgdmFsLmNsZWFyKCkKKworV2hlbiB3ZSB0cnkgdG8gdGVzdCB0aGF0IGBncm9iYCBjYWxscyBgZnJvYmAgd2l0aCB0aGUgY29ycmVjdCBhcmd1bWVudCBsb29rCit3aGF0IGhhcHBlbnM6CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnbXltb2R1bGUuZnJvYicpIGFzIG1vY2tfZnJvYjoKKyAgICAuLi4gICAgIHZhbCA9IHNldChbNl0pCisgICAgLi4uICAgICBteW1vZHVsZS5ncm9iKHZhbCkKKyAgICAuLi4KKyAgICA+Pj4gdmFsCisgICAgc2V0KFtdKQorICAgID4+PiBtb2NrX2Zyb2IuYXNzZXJ0X2NhbGxlZF93aXRoKHNldChbNl0pKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkOiAoKHNldChbNl0pLCksIHt9KQorICAgIENhbGxlZCB3aXRoOiAoKHNldChbXSksKSwge30pCisKK09uZSBwb3NzaWJpbGl0eSB3b3VsZCBiZSBmb3IgbW9jayB0byBjb3B5IHRoZSBhcmd1bWVudHMgeW91IHBhc3MgaW4uIFRoaXMKK2NvdWxkIHRoZW4gY2F1c2UgcHJvYmxlbXMgaWYgeW91IGRvIGFzc2VydGlvbnMgdGhhdCByZWx5IG9uIG9iamVjdCBpZGVudGl0eQorZm9yIGVxdWFsaXR5LgorCitIZXJlJ3Mgb25lIHNvbHV0aW9uIHRoYXQgdXNlcyB0aGUgOmF0dHI6YHNpZGVfZWZmZWN0YAorZnVuY3Rpb25hbGl0eS4gSWYgeW91IHByb3ZpZGUgYSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uIGZvciBhIG1vY2sgdGhlbgorYHNpZGVfZWZmZWN0YCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGFyZ3MgYXMgdGhlIG1vY2suIFRoaXMgZ2l2ZXMgdXMgYW4KK29wcG9ydHVuaXR5IHRvIGNvcHkgdGhlIGFyZ3VtZW50cyBhbmQgc3RvcmUgdGhlbSBmb3IgbGF0ZXIgYXNzZXJ0aW9ucy4gSW4gdGhpcworZXhhbXBsZSBJJ20gdXNpbmcgKmFub3RoZXIqIG1vY2sgdG8gc3RvcmUgdGhlIGFyZ3VtZW50cyBzbyB0aGF0IEkgY2FuIHVzZSB0aGUKK21vY2sgbWV0aG9kcyBmb3IgZG9pbmcgdGhlIGFzc2VydGlvbi4gQWdhaW4gYSBoZWxwZXIgZnVuY3Rpb24gc2V0cyB0aGlzIHVwIGZvcgorbWUuCisKKyAgICA+Pj4gZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorICAgID4+PiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2ssIHBhdGNoLCBERUZBVUxUCisgICAgPj4+IGRlZiBjb3B5X2NhbGxfYXJncyhtb2NrKToKKyAgICAuLi4gICAgIG5ld19tb2NrID0gTW9jaygpCisgICAgLi4uICAgICBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAuLi4gICAgICAgICBhcmdzID0gZGVlcGNvcHkoYXJncykKKyAgICAuLi4gICAgICAgICBrd2FyZ3MgPSBkZWVwY29weShrd2FyZ3MpCisgICAgLi4uICAgICAgICAgbmV3X21vY2soKmFyZ3MsICoqa3dhcmdzKQorICAgIC4uLiAgICAgICAgIHJldHVybiBERUZBVUxUCisgICAgLi4uICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAuLi4gICAgIHJldHVybiBuZXdfbW9jaworICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5mcm9iJykgYXMgbW9ja19mcm9iOgorICAgIC4uLiAgICAgbmV3X21vY2sgPSBjb3B5X2NhbGxfYXJncyhtb2NrX2Zyb2IpCisgICAgLi4uICAgICB2YWwgPSBzZXQoWzZdKQorICAgIC4uLiAgICAgbXltb2R1bGUuZ3JvYih2YWwpCisgICAgLi4uCisgICAgPj4+IG5ld19tb2NrLmFzc2VydF9jYWxsZWRfd2l0aChzZXQoWzZdKSkKKyAgICA+Pj4gbmV3X21vY2suY2FsbF9hcmdzCisgICAgY2FsbChzZXQoWzZdKSkKKworYGNvcHlfY2FsbF9hcmdzYCBpcyBjYWxsZWQgd2l0aCB0aGUgbW9jayB0aGF0IHdpbGwgYmUgY2FsbGVkLiBJdCByZXR1cm5zIGEgbmV3Cittb2NrIHRoYXQgd2UgZG8gdGhlIGFzc2VydGlvbiBvbi4gVGhlIGBzaWRlX2VmZmVjdGAgZnVuY3Rpb24gbWFrZXMgYSBjb3B5IG9mCit0aGUgYXJncyBhbmQgY2FsbHMgb3VyIGBuZXdfbW9ja2Agd2l0aCB0aGUgY29weS4KKworLi4gbm90ZTo6CisKKyAgICBJZiB5b3VyIG1vY2sgaXMgb25seSBnb2luZyB0byBiZSB1c2VkIG9uY2UgdGhlcmUgaXMgYW4gZWFzaWVyIHdheSBvZgorICAgIGNoZWNraW5nIGFyZ3VtZW50cyBhdCB0aGUgcG9pbnQgdGhleSBhcmUgY2FsbGVkLiBZb3UgY2FuIHNpbXBseSBkbyB0aGUKKyAgICBjaGVja2luZyBpbnNpZGUgYSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uLgorCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoYXJnKToKKyAgICAgICAgLi4uICAgICBhc3NlcnQgYXJnID09IHNldChbNl0pCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QpCisgICAgICAgID4+PiBtb2NrKHNldChbNl0pKQorICAgICAgICA+Pj4gbW9jayhzZXQoKSkKKyAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgLi4uCisgICAgICAgIEFzc2VydGlvbkVycm9yCisKK0FuIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIHN1YmNsYXNzIG9mIGBNb2NrYCBvciBgTWFnaWNNb2NrYCB0aGF0Citjb3BpZXMgKHVzaW5nIDpmdW5jOmBjb3B5LmRlZXBjb3B5YCkgdGhlIGFyZ3VtZW50cy4KK0hlcmUncyBhbiBleGFtcGxlIGltcGxlbWVudGF0aW9uOgorCisgICAgPj4+IGZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKKyAgICA+Pj4gY2xhc3MgQ29weWluZ01vY2soTWFnaWNNb2NrKToKKyAgICAuLi4gICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgIC4uLiAgICAgICAgIGFyZ3MgPSBkZWVwY29weShhcmdzKQorICAgIC4uLiAgICAgICAgIGt3YXJncyA9IGRlZXBjb3B5KGt3YXJncykKKyAgICAuLi4gICAgICAgICByZXR1cm4gc3VwZXIoQ29weWluZ01vY2ssIHNlbGYpLl9fY2FsbF9fKCphcmdzLCAqKmt3YXJncykKKyAgICAuLi4KKyAgICA+Pj4gYyA9IENvcHlpbmdNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBhcmcgPSBzZXQoKQorICAgID4+PiBjKGFyZykKKyAgICA+Pj4gYXJnLmFkZCgxKQorICAgID4+PiBjLmFzc2VydF9jYWxsZWRfd2l0aChzZXQoKSkKKyAgICA+Pj4gYy5hc3NlcnRfY2FsbGVkX3dpdGgoYXJnKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkIGNhbGw6IG1vY2soc2V0KFsxXSkpCisgICAgQWN0dWFsIGNhbGw6IG1vY2soc2V0KFtdKSkKKyAgICA+Pj4gYy5mb28KKyAgICA8Q29weWluZ01vY2sgbmFtZT0nbW9jay5mb28nIGlkPScuLi4nPgorCitXaGVuIHlvdSBzdWJjbGFzcyBgTW9ja2Agb3IgYE1hZ2ljTW9ja2AgYWxsIGR5bmFtaWNhbGx5IGNyZWF0ZWQgYXR0cmlidXRlcywKK2FuZCB0aGUgYHJldHVybl92YWx1ZWAgd2lsbCB1c2UgeW91ciBzdWJjbGFzcyBhdXRvbWF0aWNhbGx5LiBUaGF0IG1lYW5zIGFsbAorY2hpbGRyZW4gb2YgYSBgQ29weWluZ01vY2tgIHdpbGwgYWxzbyBoYXZlIHRoZSB0eXBlIGBDb3B5aW5nTW9ja2AuCisKKworTmVzdGluZyBQYXRjaGVzCistLS0tLS0tLS0tLS0tLS0KKworVXNpbmcgcGF0Y2ggYXMgYSBjb250ZXh0IG1hbmFnZXIgaXMgbmljZSwgYnV0IGlmIHlvdSBkbyBtdWx0aXBsZSBwYXRjaGVzIHlvdQorY2FuIGVuZCB1cCB3aXRoIG5lc3RlZCB3aXRoIHN0YXRlbWVudHMgaW5kZW50aW5nIGZ1cnRoZXIgYW5kIGZ1cnRoZXIgdG8gdGhlCityaWdodDoKKworICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlc3RfZm9vKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLkZvbycpIGFzIG1vY2tfZm9vOgorICAgIC4uLiAgICAgICAgICAgICB3aXRoIHBhdGNoKCdteW1vZHVsZS5CYXInKSBhcyBtb2NrX2JhcjoKKyAgICAuLi4gICAgICAgICAgICAgICAgIHdpdGggcGF0Y2goJ215bW9kdWxlLlNwYW0nKSBhcyBtb2NrX3NwYW06CisgICAgLi4uICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBtb2NrX2ZvbworICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBteW1vZHVsZS5CYXIgaXMgbW9ja19iYXIKKyAgICAuLi4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgbXltb2R1bGUuU3BhbSBpcyBtb2NrX3NwYW0KKyAgICAuLi4KKyAgICA+Pj4gb3JpZ2luYWwgPSBteW1vZHVsZS5Gb28KKyAgICA+Pj4gTXlUZXN0KCd0ZXN0X2ZvbycpLnRlc3RfZm9vKCkKKyAgICA+Pj4gYXNzZXJ0IG15bW9kdWxlLkZvbyBpcyBvcmlnaW5hbAorCitXaXRoIHVuaXR0ZXN0IGBjbGVhbnVwYCBmdW5jdGlvbnMgYW5kIHRoZSA6cmVmOmBzdGFydC1hbmQtc3RvcGAgd2UgY2FuCithY2hpZXZlIHRoZSBzYW1lIGVmZmVjdCB3aXRob3V0IHRoZSBuZXN0ZWQgaW5kZW50YXRpb24uIEEgc2ltcGxlIGhlbHBlcgorbWV0aG9kLCBgY3JlYXRlX3BhdGNoYCwgcHV0cyB0aGUgcGF0Y2ggaW4gcGxhY2UgYW5kIHJldHVybnMgdGhlIGNyZWF0ZWQgbW9jaworZm9yIHVzOgorCisgICAgPj4+IGNsYXNzIE15VGVzdChUZXN0Q2FzZSk6CisgICAgLi4uCisgICAgLi4uICAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIG5hbWUpOgorICAgIC4uLiAgICAgICAgIHBhdGNoZXIgPSBwYXRjaChuYW1lKQorICAgIC4uLiAgICAgICAgIHRoaW5nID0gcGF0Y2hlci5zdGFydCgpCisgICAgLi4uICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKyAgICAuLi4gICAgICAgICByZXR1cm4gdGhpbmcKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X2ZvbyhzZWxmKToKKyAgICAuLi4gICAgICAgICBtb2NrX2ZvbyA9IHNlbGYuY3JlYXRlX3BhdGNoKCdteW1vZHVsZS5Gb28nKQorICAgIC4uLiAgICAgICAgIG1vY2tfYmFyID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLkJhcicpCisgICAgLi4uICAgICAgICAgbW9ja19zcGFtID0gc2VsZi5jcmVhdGVfcGF0Y2goJ215bW9kdWxlLlNwYW0nKQorICAgIC4uLgorICAgIC4uLiAgICAgICAgIGFzc2VydCBteW1vZHVsZS5Gb28gaXMgbW9ja19mb28KKyAgICAuLi4gICAgICAgICBhc3NlcnQgbXltb2R1bGUuQmFyIGlzIG1vY2tfYmFyCisgICAgLi4uICAgICAgICAgYXNzZXJ0IG15bW9kdWxlLlNwYW0gaXMgbW9ja19zcGFtCisgICAgLi4uCisgICAgPj4+IG9yaWdpbmFsID0gbXltb2R1bGUuRm9vCisgICAgPj4+IE15VGVzdCgndGVzdF9mb28nKS5ydW4oKQorICAgID4+PiBhc3NlcnQgbXltb2R1bGUuRm9vIGlzIG9yaWdpbmFsCisKKworTW9ja2luZyBhIGRpY3Rpb25hcnkgd2l0aCBNYWdpY01vY2sKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1lvdSBtYXkgd2FudCB0byBtb2NrIGEgZGljdGlvbmFyeSwgb3Igb3RoZXIgY29udGFpbmVyIG9iamVjdCwgcmVjb3JkaW5nIGFsbAorYWNjZXNzIHRvIGl0IHdoaWxzdCBoYXZpbmcgaXQgc3RpbGwgYmVoYXZlIGxpa2UgYSBkaWN0aW9uYXJ5LgorCitXZSBjYW4gZG8gdGhpcyB3aXRoIDpjbGFzczpgTWFnaWNNb2NrYCwgd2hpY2ggd2lsbCBiZWhhdmUgbGlrZSBhIGRpY3Rpb25hcnksCithbmQgdXNpbmcgOmRhdGE6YH5Nb2NrLnNpZGVfZWZmZWN0YCB0byBkZWxlZ2F0ZSBkaWN0aW9uYXJ5IGFjY2VzcyB0byBhIHJlYWwKK3VuZGVybHlpbmcgZGljdGlvbmFyeSB0aGF0IGlzIHVuZGVyIG91ciBjb250cm9sLgorCitXaGVuIHRoZSBgX19nZXRpdGVtX19gIGFuZCBgX19zZXRpdGVtX19gIG1ldGhvZHMgb2Ygb3VyIGBNYWdpY01vY2tgIGFyZSBjYWxsZWQKKyhub3JtYWwgZGljdGlvbmFyeSBhY2Nlc3MpIHRoZW4gYHNpZGVfZWZmZWN0YCBpcyBjYWxsZWQgd2l0aCB0aGUga2V5IChhbmQgaW4KK3RoZSBjYXNlIG9mIGBfX3NldGl0ZW1fX2AgdGhlIHZhbHVlIHRvbykuIFdlIGNhbiBhbHNvIGNvbnRyb2wgd2hhdCBpcyByZXR1cm5lZC4KKworQWZ0ZXIgdGhlIGBNYWdpY01vY2tgIGhhcyBiZWVuIHVzZWQgd2UgY2FuIHVzZSBhdHRyaWJ1dGVzIGxpa2UKKzpkYXRhOmB+TW9jay5jYWxsX2FyZ3NfbGlzdGAgdG8gYXNzZXJ0IGFib3V0IGhvdyB0aGUgZGljdGlvbmFyeSB3YXMgdXNlZDoKKworICAgID4+PiBteV9kaWN0ID0geydhJzogMSwgJ2InOiAyLCAnYyc6IDN9CisgICAgPj4+IGRlZiBnZXRpdGVtKG5hbWUpOgorICAgIC4uLiAgICAgIHJldHVybiBteV9kaWN0W25hbWVdCisgICAgLi4uCisgICAgPj4+IGRlZiBzZXRpdGVtKG5hbWUsIHZhbCk6CisgICAgLi4uICAgICBteV9kaWN0W25hbWVdID0gdmFsCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gZ2V0aXRlbQorICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gc2V0aXRlbQorCisuLiBub3RlOjoKKworICAgIEFuIGFsdGVybmF0aXZlIHRvIHVzaW5nIGBNYWdpY01vY2tgIGlzIHRvIHVzZSBgTW9ja2AgYW5kICpvbmx5KiBwcm92aWRlCisgICAgdGhlIG1hZ2ljIG1ldGhvZHMgeW91IHNwZWNpZmljYWxseSB3YW50OgorCisgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgID4+PiBtb2NrLl9fc2V0aXRlbV9fID0gTW9jayhzaWRlX2VmZmVjdD1nZXRpdGVtKQorICAgICAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXyA9IE1vY2soc2lkZV9lZmZlY3Q9c2V0aXRlbSkKKworICAgIEEgKnRoaXJkKiBvcHRpb24gaXMgdG8gdXNlIGBNYWdpY01vY2tgIGJ1dCBwYXNzaW5nIGluIGBkaWN0YCBhcyB0aGUgYHNwZWNgCisgICAgKG9yIGBzcGVjX3NldGApIGFyZ3VtZW50IHNvIHRoYXQgdGhlIGBNYWdpY01vY2tgIGNyZWF0ZWQgb25seSBoYXMKKyAgICBkaWN0aW9uYXJ5IG1hZ2ljIG1ldGhvZHMgYXZhaWxhYmxlOgorCisgICAgICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKHNwZWNfc2V0PWRpY3QpCisgICAgICAgID4+PiBtb2NrLl9fZ2V0aXRlbV9fLnNpZGVfZWZmZWN0ID0gZ2V0aXRlbQorICAgICAgICA+Pj4gbW9jay5fX3NldGl0ZW1fXy5zaWRlX2VmZmVjdCA9IHNldGl0ZW0KKworV2l0aCB0aGVzZSBzaWRlIGVmZmVjdCBmdW5jdGlvbnMgaW4gcGxhY2UsIHRoZSBgbW9ja2Agd2lsbCBiZWhhdmUgbGlrZSBhIG5vcm1hbAorZGljdGlvbmFyeSBidXQgcmVjb3JkaW5nIHRoZSBhY2Nlc3MuIEl0IGV2ZW4gcmFpc2VzIGEgYEtleUVycm9yYCBpZiB5b3UgdHJ5Cit0byBhY2Nlc3MgYSBrZXkgdGhhdCBkb2Vzbid0IGV4aXN0LgorCisgICAgPj4+IG1vY2tbJ2EnXQorICAgIDEKKyAgICA+Pj4gbW9ja1snYyddCisgICAgMworICAgID4+PiBtb2NrWydkJ10KKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgIC4uLgorICAgIEtleUVycm9yOiAnZCcKKyAgICA+Pj4gbW9ja1snYiddID0gJ2Zpc2gnCisgICAgPj4+IG1vY2tbJ2QnXSA9ICdlZ2dzJworICAgID4+PiBtb2NrWydiJ10KKyAgICAnZmlzaCcKKyAgICA+Pj4gbW9ja1snZCddCisgICAgJ2VnZ3MnCisKK0FmdGVyIGl0IGhhcyBiZWVuIHVzZWQgeW91IGNhbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQgdGhlIGFjY2VzcyB1c2luZyB0aGUgbm9ybWFsCittb2NrIG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXM6CisKKyAgICA+Pj4gbW9jay5fX2dldGl0ZW1fXy5jYWxsX2FyZ3NfbGlzdAorICAgIFtjYWxsKCdhJyksIGNhbGwoJ2MnKSwgY2FsbCgnZCcpLCBjYWxsKCdiJyksIGNhbGwoJ2QnKV0KKyAgICA+Pj4gbW9jay5fX3NldGl0ZW1fXy5jYWxsX2FyZ3NfbGlzdAorICAgIFtjYWxsKCdiJywgJ2Zpc2gnKSwgY2FsbCgnZCcsICdlZ2dzJyldCisgICAgPj4+IG15X2RpY3QKKyAgICB7J2EnOiAxLCAnYyc6IDMsICdiJzogJ2Zpc2gnLCAnZCc6ICdlZ2dzJ30KKworCitNb2NrIHN1YmNsYXNzZXMgYW5kIHRoZWlyIGF0dHJpYnV0ZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdmFyaW91cyByZWFzb25zIHdoeSB5b3UgbWlnaHQgd2FudCB0byBzdWJjbGFzcyBgTW9ja2AuIE9uZSByZWFzb24KK21pZ2h0IGJlIHRvIGFkZCBoZWxwZXIgbWV0aG9kcy4gSGVyZSdzIGEgc2lsbHkgZXhhbXBsZToKKworICAgID4+PiBjbGFzcyBNeU1vY2soTWFnaWNNb2NrKToKKyAgICAuLi4gICAgIGRlZiBoYXNfYmVlbl9jYWxsZWQoc2VsZik6CisgICAgLi4uICAgICAgICAgcmV0dXJuIHNlbGYuY2FsbGVkCisgICAgLi4uCisgICAgPj4+IG15bW9jayA9IE15TW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbXltb2NrCisgICAgPE15TW9jayBpZD0nLi4uJz4KKyAgICA+Pj4gbXltb2NrLmhhc19iZWVuX2NhbGxlZCgpCisgICAgRmFsc2UKKyAgICA+Pj4gbXltb2NrKCkKKyAgICA+Pj4gbXltb2NrLmhhc19iZWVuX2NhbGxlZCgpCisgICAgVHJ1ZQorCitUaGUgc3RhbmRhcmQgYmVoYXZpb3VyIGZvciBgTW9ja2AgaW5zdGFuY2VzIGlzIHRoYXQgYXR0cmlidXRlcyBhbmQgdGhlIHJldHVybgordmFsdWUgbW9ja3MgYXJlIG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG1vY2sgdGhleSBhcmUgYWNjZXNzZWQgb24uIFRoaXMgZW5zdXJlcwordGhhdCBgTW9ja2AgYXR0cmlidXRlcyBhcmUgYE1vY2tzYCBhbmQgYE1hZ2ljTW9ja2AgYXR0cmlidXRlcyBhcmUgYE1hZ2ljTW9ja3NgCitbI11fLiBTbyBpZiB5b3UncmUgc3ViY2xhc3NpbmcgdG8gYWRkIGhlbHBlciBtZXRob2RzIHRoZW4gdGhleSdsbCBhbHNvIGJlCithdmFpbGFibGUgb24gdGhlIGF0dHJpYnV0ZXMgYW5kIHJldHVybiB2YWx1ZSBtb2NrIG9mIGluc3RhbmNlcyBvZiB5b3VyCitzdWJjbGFzcy4KKworICAgID4+PiBteW1vY2suZm9vCisgICAgPE15TW9jayBuYW1lPSdtb2NrLmZvbycgaWQ9Jy4uLic+CisgICAgPj4+IG15bW9jay5mb28uaGFzX2JlZW5fY2FsbGVkKCkKKyAgICBGYWxzZQorICAgID4+PiBteW1vY2suZm9vKCkKKyAgICA8TXlNb2NrIG5hbWU9J21vY2suZm9vKCknIGlkPScuLi4nPgorICAgID4+PiBteW1vY2suZm9vLmhhc19iZWVuX2NhbGxlZCgpCisgICAgVHJ1ZQorCitTb21ldGltZXMgdGhpcyBpcyBpbmNvbnZlbmllbnQuIEZvciBleGFtcGxlLCBgb25lIHVzZXIKKzxodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL21vY2svaXNzdWVzL2RldGFpbD9pZD0xMDU+YF8gaXMgc3ViY2xhc3NpbmcgbW9jayB0bworY3JlYXRlZCBhIGBUd2lzdGVkIGFkYXB0b3IKKzxodHRwOi8vdHdpc3RlZG1hdHJpeC5jb20vZG9jdW1lbnRzLzExLjAuMC9hcGkvdHdpc3RlZC5weXRob24uY29tcG9uZW50cy5odG1sPmBfLgorSGF2aW5nIHRoaXMgYXBwbGllZCB0byBhdHRyaWJ1dGVzIHRvbyBhY3R1YWxseSBjYXVzZXMgZXJyb3JzLgorCitgTW9ja2AgKGluIGFsbCBpdHMgZmxhdm91cnMpIHVzZXMgYSBtZXRob2QgY2FsbGVkIGBfZ2V0X2NoaWxkX21vY2tgIHRvIGNyZWF0ZQordGhlc2UgInN1Yi1tb2NrcyIgZm9yIGF0dHJpYnV0ZXMgYW5kIHJldHVybiB2YWx1ZXMuIFlvdSBjYW4gcHJldmVudCB5b3VyCitzdWJjbGFzcyBiZWluZyB1c2VkIGZvciBhdHRyaWJ1dGVzIGJ5IG92ZXJyaWRpbmcgdGhpcyBtZXRob2QuIFRoZSBzaWduYXR1cmUgaXMKK3RoYXQgaXQgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIChgKiprd2FyZ3NgKSB3aGljaCBhcmUgdGhlbiBwYXNzZWQKK29udG8gdGhlIG1vY2sgY29uc3RydWN0b3I6CisKKyAgICA+Pj4gY2xhc3MgU3ViY2xhc3MoTWFnaWNNb2NrKToKKyAgICAuLi4gICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgLi4uCisgICAgPj4+IG15bW9jayA9IFN1YmNsYXNzKCkKKyAgICA+Pj4gbXltb2NrLmZvbworICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5mb28nIGlkPScuLi4nPgorICAgID4+PiBhc3NlcnQgaXNpbnN0YW5jZShteW1vY2ssIFN1YmNsYXNzKQorICAgID4+PiBhc3NlcnQgbm90IGlzaW5zdGFuY2UobXltb2NrLmZvbywgU3ViY2xhc3MpCisgICAgPj4+IGFzc2VydCBub3QgaXNpbnN0YW5jZShteW1vY2soKSwgU3ViY2xhc3MpCisKKy4uIFsjXSBBbiBleGNlcHRpb24gdG8gdGhpcyBydWxlIGFyZSB0aGUgbm9uLWNhbGxhYmxlIG1vY2tzLiBBdHRyaWJ1dGVzIHVzZSB0aGUKKyAgICBjYWxsYWJsZSB2YXJpYW50IGJlY2F1c2Ugb3RoZXJ3aXNlIG5vbi1jYWxsYWJsZSBtb2NrcyBjb3VsZG4ndCBoYXZlIGNhbGxhYmxlCisgICAgbWV0aG9kcy4KKworCitNb2NraW5nIGltcG9ydHMgd2l0aCBwYXRjaC5kaWN0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uZSBzaXR1YXRpb24gd2hlcmUgbW9ja2luZyBjYW4gYmUgaGFyZCBpcyB3aGVyZSB5b3UgaGF2ZSBhIGxvY2FsIGltcG9ydCBpbnNpZGUKK2EgZnVuY3Rpb24uIFRoZXNlIGFyZSBoYXJkZXIgdG8gbW9jayBiZWNhdXNlIHRoZXkgYXJlbid0IHVzaW5nIGFuIG9iamVjdCBmcm9tCit0aGUgbW9kdWxlIG5hbWVzcGFjZSB0aGF0IHdlIGNhbiBwYXRjaCBvdXQuCisKK0dlbmVyYWxseSBsb2NhbCBpbXBvcnRzIGFyZSB0byBiZSBhdm9pZGVkLiBUaGV5IGFyZSBzb21ldGltZXMgZG9uZSB0byBwcmV2ZW50CitjaXJjdWxhciBkZXBlbmRlbmNpZXMsIGZvciB3aGljaCB0aGVyZSBpcyAqdXN1YWxseSogYSBtdWNoIGJldHRlciB3YXkgdG8gc29sdmUKK3RoZSBwcm9ibGVtIChyZWZhY3RvciB0aGUgY29kZSkgb3IgdG8gcHJldmVudCAidXAgZnJvbnQgY29zdHMiIGJ5IGRlbGF5aW5nIHRoZQoraW1wb3J0LiBUaGlzIGNhbiBhbHNvIGJlIHNvbHZlZCBpbiBiZXR0ZXIgd2F5cyB0aGFuIGFuIHVuY29uZGl0aW9uYWwgbG9jYWwKK2ltcG9ydCAoc3RvcmUgdGhlIG1vZHVsZSBhcyBhIGNsYXNzIG9yIG1vZHVsZSBhdHRyaWJ1dGUgYW5kIG9ubHkgZG8gdGhlIGltcG9ydAorb24gZmlyc3QgdXNlKS4KKworVGhhdCBhc2lkZSB0aGVyZSBpcyBhIHdheSB0byB1c2UgYG1vY2tgIHRvIGFmZmVjdCB0aGUgcmVzdWx0cyBvZiBhbiBpbXBvcnQuCitJbXBvcnRpbmcgZmV0Y2hlcyBhbiAqb2JqZWN0KiBmcm9tIHRoZSBgc3lzLm1vZHVsZXNgIGRpY3Rpb25hcnkuIE5vdGUgdGhhdCBpdAorZmV0Y2hlcyBhbiAqb2JqZWN0Kiwgd2hpY2ggbmVlZCBub3QgYmUgYSBtb2R1bGUuIEltcG9ydGluZyBhIG1vZHVsZSBmb3IgdGhlCitmaXJzdCB0aW1lIHJlc3VsdHMgaW4gYSBtb2R1bGUgb2JqZWN0IGJlaW5nIHB1dCBpbiBgc3lzLm1vZHVsZXNgLCBzbyB1c3VhbGx5Cit3aGVuIHlvdSBpbXBvcnQgc29tZXRoaW5nIHlvdSBnZXQgYSBtb2R1bGUgYmFjay4gVGhpcyBuZWVkIG5vdCBiZSB0aGUgY2FzZQoraG93ZXZlci4KKworVGhpcyBtZWFucyB5b3UgY2FuIHVzZSA6ZnVuYzpgcGF0Y2guZGljdGAgdG8gKnRlbXBvcmFyaWx5KiBwdXQgYSBtb2NrIGluIHBsYWNlCitpbiBgc3lzLm1vZHVsZXNgLiBBbnkgaW1wb3J0cyB3aGlsc3QgdGhpcyBwYXRjaCBpcyBhY3RpdmUgd2lsbCBmZXRjaCB0aGUgbW9jay4KK1doZW4gdGhlIHBhdGNoIGlzIGNvbXBsZXRlICh0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGV4aXRzLCB0aGUgd2l0aCBzdGF0ZW1lbnQKK2JvZHkgaXMgY29tcGxldGUgb3IgYHBhdGNoZXIuc3RvcCgpYCBpcyBjYWxsZWQpIHRoZW4gd2hhdGV2ZXIgd2FzIHRoZXJlCitwcmV2aW91c2x5IHdpbGwgYmUgcmVzdG9yZWQgc2FmZWx5LgorCitIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0IG1vY2tzIG91dCB0aGUgJ2Zvb2JsZScgbW9kdWxlLgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIHsnZm9vYmxlJzogbW9ja30pOgorICAgIC4uLiAgICBpbXBvcnQgZm9vYmxlCisgICAgLi4uICAgIGZvb2JsZS5ibG9iKCkKKyAgICAuLi4KKyAgICA8TW9jayBuYW1lPSdtb2NrLmJsb2IoKScgaWQ9Jy4uLic+CisgICAgPj4+IGFzc2VydCAnZm9vYmxlJyBub3QgaW4gc3lzLm1vZHVsZXMKKyAgICA+Pj4gbW9jay5ibG9iLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworQXMgeW91IGNhbiBzZWUgdGhlIGBpbXBvcnQgZm9vYmxlYCBzdWNjZWVkcywgYnV0IG9uIGV4aXQgdGhlcmUgaXMgbm8gJ2Zvb2JsZScKK2xlZnQgaW4gYHN5cy5tb2R1bGVzYC4KKworVGhpcyBhbHNvIHdvcmtzIGZvciB0aGUgYGZyb20gbW9kdWxlIGltcG9ydCBuYW1lYCBmb3JtOgorCisgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIHsnZm9vYmxlJzogbW9ja30pOgorICAgIC4uLiAgICBmcm9tIGZvb2JsZSBpbXBvcnQgYmxvYgorICAgIC4uLiAgICBibG9iLmJsaXAoKQorICAgIC4uLgorICAgIDxNb2NrIG5hbWU9J21vY2suYmxvYi5ibGlwKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLmJsb2IuYmxpcC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKK1dpdGggc2xpZ2h0bHkgbW9yZSB3b3JrIHlvdSBjYW4gYWxzbyBtb2NrIHBhY2thZ2UgaW1wb3J0czoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vZHVsZXMgPSB7J3BhY2thZ2UnOiBtb2NrLCAncGFja2FnZS5tb2R1bGUnOiBtb2NrLm1vZHVsZX0KKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KCdzeXMubW9kdWxlcycsIG1vZHVsZXMpOgorICAgIC4uLiAgICBmcm9tIHBhY2thZ2UubW9kdWxlIGltcG9ydCBmb29ibGUKKyAgICAuLi4gICAgZm9vYmxlKCkKKyAgICAuLi4KKyAgICA8TW9jayBuYW1lPSdtb2NrLm1vZHVsZS5mb29ibGUoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2subW9kdWxlLmZvb2JsZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKworVHJhY2tpbmcgb3JkZXIgb2YgY2FsbHMgYW5kIGxlc3MgdmVyYm9zZSBjYWxsIGFzc2VydGlvbnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6Y2xhc3M6YE1vY2tgIGNsYXNzIGFsbG93cyB5b3UgdG8gdHJhY2sgdGhlICpvcmRlciogb2YgbWV0aG9kIGNhbGxzIG9uCit5b3VyIG1vY2sgb2JqZWN0cyB0aHJvdWdoIHRoZSA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYCBhdHRyaWJ1dGUuIFRoaXMKK2RvZXNuJ3QgYWxsb3cgeW91IHRvIHRyYWNrIHRoZSBvcmRlciBvZiBjYWxscyBiZXR3ZWVuIHNlcGFyYXRlIG1vY2sgb2JqZWN0cywKK2hvd2V2ZXIgd2UgY2FuIHVzZSA6YXR0cjpgfk1vY2subW9ja19jYWxsc2AgdG8gYWNoaWV2ZSB0aGUgc2FtZSBlZmZlY3QuCisKK0JlY2F1c2UgbW9ja3MgdHJhY2sgY2FsbHMgdG8gY2hpbGQgbW9ja3MgaW4gYG1vY2tfY2FsbHNgLCBhbmQgYWNjZXNzaW5nIGFuCithcmJpdHJhcnkgYXR0cmlidXRlIG9mIGEgbW9jayBjcmVhdGVzIGEgY2hpbGQgbW9jaywgd2UgY2FuIGNyZWF0ZSBvdXIgc2VwYXJhdGUKK21vY2tzIGZyb20gYSBwYXJlbnQgb25lLiBDYWxscyB0byB0aG9zZSBjaGlsZCBtb2NrIHdpbGwgdGhlbiBhbGwgYmUgcmVjb3JkZWQsCitpbiBvcmRlciwgaW4gdGhlIGBtb2NrX2NhbGxzYCBvZiB0aGUgcGFyZW50OgorCisgICAgPj4+IG1hbmFnZXIgPSBNb2NrKCkKKyAgICA+Pj4gbW9ja19mb28gPSBtYW5hZ2VyLmZvbworICAgID4+PiBtb2NrX2JhciA9IG1hbmFnZXIuYmFyCisKKyAgICA+Pj4gbW9ja19mb28uc29tZXRoaW5nKCkKKyAgICA8TW9jayBuYW1lPSdtb2NrLmZvby5zb21ldGhpbmcoKScgaWQ9Jy4uLic+CisgICAgPj4+IG1vY2tfYmFyLm90aGVyLnRoaW5nKCkKKyAgICA8TW9jayBuYW1lPSdtb2NrLmJhci5vdGhlci50aGluZygpJyBpZD0nLi4uJz4KKworICAgID4+PiBtYW5hZ2VyLm1vY2tfY2FsbHMKKyAgICBbY2FsbC5mb28uc29tZXRoaW5nKCksIGNhbGwuYmFyLm90aGVyLnRoaW5nKCldCisKK1dlIGNhbiB0aGVuIGFzc2VydCBhYm91dCB0aGUgY2FsbHMsIGluY2x1ZGluZyB0aGUgb3JkZXIsIGJ5IGNvbXBhcmluZyB3aXRoCit0aGUgYG1vY2tfY2FsbHNgIGF0dHJpYnV0ZSBvbiB0aGUgbWFuYWdlciBtb2NrOgorCisgICAgPj4+IGV4cGVjdGVkX2NhbGxzID0gW2NhbGwuZm9vLnNvbWV0aGluZygpLCBjYWxsLmJhci5vdGhlci50aGluZygpXQorICAgID4+PiBtYW5hZ2VyLm1vY2tfY2FsbHMgPT0gZXhwZWN0ZWRfY2FsbHMKKyAgICBUcnVlCisKK0lmIGBwYXRjaGAgaXMgY3JlYXRpbmcsIGFuZCBwdXR0aW5nIGluIHBsYWNlLCB5b3VyIG1vY2tzIHRoZW4geW91IGNhbiBhdHRhY2gKK3RoZW0gdG8gYSBtYW5hZ2VyIG1vY2sgdXNpbmcgdGhlIDptZXRoOmB+TW9jay5hdHRhY2hfbW9ja2AgbWV0aG9kLiBBZnRlcgorYXR0YWNoaW5nIGNhbGxzIHdpbGwgYmUgcmVjb3JkZWQgaW4gYG1vY2tfY2FsbHNgIG9mIHRoZSBtYW5hZ2VyLgorCisgICAgPj4+IG1hbmFnZXIgPSBNYWdpY01vY2soKQorICAgID4+PiB3aXRoIHBhdGNoKCdteW1vZHVsZS5DbGFzczEnKSBhcyBNb2NrQ2xhc3MxOgorICAgIC4uLiAgICAgd2l0aCBwYXRjaCgnbXltb2R1bGUuQ2xhc3MyJykgYXMgTW9ja0NsYXNzMjoKKyAgICAuLi4gICAgICAgICBtYW5hZ2VyLmF0dGFjaF9tb2NrKE1vY2tDbGFzczEsICdNb2NrQ2xhc3MxJykKKyAgICAuLi4gICAgICAgICBtYW5hZ2VyLmF0dGFjaF9tb2NrKE1vY2tDbGFzczIsICdNb2NrQ2xhc3MyJykKKyAgICAuLi4gICAgICAgICBNb2NrQ2xhc3MxKCkuZm9vKCkKKyAgICAuLi4gICAgICAgICBNb2NrQ2xhc3MyKCkuYmFyKCkKKyAgICAuLi4KKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suTW9ja0NsYXNzMSgpLmZvbygpJyBpZD0nLi4uJz4KKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2suTW9ja0NsYXNzMigpLmJhcigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gbWFuYWdlci5tb2NrX2NhbGxzCisgICAgW2NhbGwuTW9ja0NsYXNzMSgpLAorICAgICBjYWxsLk1vY2tDbGFzczEoKS5mb28oKSwKKyAgICAgY2FsbC5Nb2NrQ2xhc3MyKCksCisgICAgIGNhbGwuTW9ja0NsYXNzMigpLmJhcigpXQorCitJZiBtYW55IGNhbGxzIGhhdmUgYmVlbiBtYWRlLCBidXQgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiBhIHBhcnRpY3VsYXIKK3NlcXVlbmNlIG9mIHRoZW0gdGhlbiBhbiBhbHRlcm5hdGl2ZSBpcyB0byB1c2UgdGhlCis6bWV0aDpgfk1vY2suYXNzZXJ0X2hhc19jYWxsc2AgbWV0aG9kLiBUaGlzIHRha2VzIGEgbGlzdCBvZiBjYWxscyAoY29uc3RydWN0ZWQKK3dpdGggdGhlIDpkYXRhOmBjYWxsYCBvYmplY3QpLiBJZiB0aGF0IHNlcXVlbmNlIG9mIGNhbGxzIGFyZSBpbgorOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIHRoZW4gdGhlIGFzc2VydCBzdWNjZWVkcy4KKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbSgpLmZvbygpLmJhcigpLmJheigpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrKCkuZm9vKCkuYmFyKCkuYmF6KCknIGlkPScuLi4nPgorICAgID4+PiBtLm9uZSgpLnR3bygpLnRocmVlKCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2sub25lKCkudHdvKCkudGhyZWUoKScgaWQ9Jy4uLic+CisgICAgPj4+IGNhbGxzID0gY2FsbC5vbmUoKS50d28oKS50aHJlZSgpLmNhbGxfbGlzdCgpCisgICAgPj4+IG0uYXNzZXJ0X2hhc19jYWxscyhjYWxscykKKworRXZlbiB0aG91Z2ggdGhlIGNoYWluZWQgY2FsbCBgbS5vbmUoKS50d28oKS50aHJlZSgpYCBhcmVuJ3QgdGhlIG9ubHkgY2FsbHMgdGhhdAoraGF2ZSBiZWVuIG1hZGUgdG8gdGhlIG1vY2ssIHRoZSBhc3NlcnQgc3RpbGwgc3VjY2VlZHMuCisKK1NvbWV0aW1lcyBhIG1vY2sgbWF5IGhhdmUgc2V2ZXJhbCBjYWxscyBtYWRlIHRvIGl0LCBhbmQgeW91IGFyZSBvbmx5IGludGVyZXN0ZWQKK2luIGFzc2VydGluZyBhYm91dCAqc29tZSogb2YgdGhvc2UgY2FsbHMuIFlvdSBtYXkgbm90IGV2ZW4gY2FyZSBhYm91dCB0aGUKK29yZGVyLiBJbiB0aGlzIGNhc2UgeW91IGNhbiBwYXNzIGBhbnlfb3JkZXI9VHJ1ZWAgdG8gYGFzc2VydF9oYXNfY2FsbHNgOgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBtKDEpLCBtLnR3bygyLCAzKSwgbS5zZXZlbig3KSwgbS5maWZ0eSgnNTAnKQorICAgICguLi4pCisgICAgPj4+IGNhbGxzID0gW2NhbGwuZmlmdHkoJzUwJyksIGNhbGwoMSksIGNhbGwuc2V2ZW4oNyldCisgICAgPj4+IG0uYXNzZXJ0X2hhc19jYWxscyhjYWxscywgYW55X29yZGVyPVRydWUpCisKKworTW9yZSBjb21wbGV4IGFyZ3VtZW50IG1hdGNoaW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVXNpbmcgdGhlIHNhbWUgYmFzaWMgY29uY2VwdCBhcyA6ZGF0YTpgQU5ZYCB3ZSBjYW4gaW1wbGVtZW50IG1hdGNoZXJzIHRvIGRvIG1vcmUKK2NvbXBsZXggYXNzZXJ0aW9ucyBvbiBvYmplY3RzIHVzZWQgYXMgYXJndW1lbnRzIHRvIG1vY2tzLgorCitTdXBwb3NlIHdlIGV4cGVjdCBzb21lIG9iamVjdCB0byBiZSBwYXNzZWQgdG8gYSBtb2NrIHRoYXQgYnkgZGVmYXVsdAorY29tcGFyZXMgZXF1YWwgYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5ICh3aGljaCBpcyB0aGUgUHl0aG9uIGRlZmF1bHQgZm9yIHVzZXIKK2RlZmluZWQgY2xhc3NlcykuIFRvIHVzZSA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCB3ZSB3b3VsZCBuZWVkIHRvIHBhc3MKK2luIHRoZSBleGFjdCBzYW1lIG9iamVjdC4gSWYgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiBzb21lIG9mIHRoZSBhdHRyaWJ1dGVzCitvZiB0aGlzIG9iamVjdCB0aGVuIHdlIGNhbiBjcmVhdGUgYSBtYXRjaGVyIHRoYXQgd2lsbCBjaGVjayB0aGVzZSBhdHRyaWJ1dGVzCitmb3IgdXMuCisKK1lvdSBjYW4gc2VlIGluIHRoaXMgZXhhbXBsZSBob3cgYSAnc3RhbmRhcmQnIGNhbGwgdG8gYGFzc2VydF9jYWxsZWRfd2l0aGAgaXNuJ3QKK3N1ZmZpY2llbnQ6CisKKyAgICA+Pj4gY2xhc3MgRm9vKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgYSwgYik6CisgICAgLi4uICAgICAgICAgc2VsZi5hLCBzZWxmLmIgPSBhLCBiCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKEZvbygxLCAyKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoRm9vKDEsIDIpKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkOiBjYWxsKDxfX21haW5fXy5Gb28gb2JqZWN0IGF0IDB4Li4uPikKKyAgICBBY3R1YWwgY2FsbDogY2FsbCg8X19tYWluX18uRm9vIG9iamVjdCBhdCAweC4uLj4pCisKK0EgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3Igb3VyIGBGb29gIGNsYXNzIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKKworICAgID4+PiBkZWYgY29tcGFyZShzZWxmLCBvdGhlcik6CisgICAgLi4uICAgICBpZiBub3QgdHlwZShzZWxmKSA9PSB0eXBlKG90aGVyKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAuLi4gICAgIGlmIHNlbGYuYSAhPSBvdGhlci5hOgorICAgIC4uLiAgICAgICAgIHJldHVybiBGYWxzZQorICAgIC4uLiAgICAgaWYgc2VsZi5iICE9IG90aGVyLmI6CisgICAgLi4uICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgLi4uICAgICByZXR1cm4gVHJ1ZQorICAgIC4uLgorCitBbmQgYSBtYXRjaGVyIG9iamVjdCB0aGF0IGNhbiB1c2UgY29tcGFyaXNvbiBmdW5jdGlvbnMgbGlrZSB0aGlzIGZvciBpdHMKK2VxdWFsaXR5IG9wZXJhdGlvbiB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6CisKKyAgICA+Pj4gY2xhc3MgTWF0Y2hlcihvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbXBhcmUsIHNvbWVfb2JqKToKKyAgICAuLi4gICAgICAgICBzZWxmLmNvbXBhcmUgPSBjb21wYXJlCisgICAgLi4uICAgICAgICAgc2VsZi5zb21lX29iaiA9IHNvbWVfb2JqCisgICAgLi4uICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5jb21wYXJlKHNlbGYuc29tZV9vYmosIG90aGVyKQorICAgIC4uLgorCitQdXR0aW5nIGFsbCB0aGlzIHRvZ2V0aGVyOgorCisgICAgPj4+IG1hdGNoX2ZvbyA9IE1hdGNoZXIoY29tcGFyZSwgRm9vKDEsIDIpKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChtYXRjaF9mb28pCisKK1RoZSBgTWF0Y2hlcmAgaXMgaW5zdGFudGlhdGVkIHdpdGggb3VyIGNvbXBhcmUgZnVuY3Rpb24gYW5kIHRoZSBgRm9vYCBvYmplY3QKK3dlIHdhbnQgdG8gY29tcGFyZSBhZ2FpbnN0LiBJbiBgYXNzZXJ0X2NhbGxlZF93aXRoYCB0aGUgYE1hdGNoZXJgIGVxdWFsaXR5CittZXRob2Qgd2lsbCBiZSBjYWxsZWQsIHdoaWNoIGNvbXBhcmVzIHRoZSBvYmplY3QgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoCithZ2FpbnN0IHRoZSBvbmUgd2UgY3JlYXRlZCBvdXIgbWF0Y2hlciB3aXRoLiBJZiB0aGV5IG1hdGNoIHRoZW4KK2Bhc3NlcnRfY2FsbGVkX3dpdGhgIHBhc3NlcywgYW5kIGlmIHRoZXkgZG9uJ3QgYW4gYEFzc2VydGlvbkVycm9yYCBpcyByYWlzZWQ6CisKKyAgICA+Pj4gbWF0Y2hfd3JvbmcgPSBNYXRjaGVyKGNvbXBhcmUsIEZvbygzLCA0KSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgobWF0Y2hfd3JvbmcpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQ6ICgoPE1hdGNoZXIgb2JqZWN0IGF0IDB4Li4uPiwpLCB7fSkKKyAgICBDYWxsZWQgd2l0aDogKCg8Rm9vIG9iamVjdCBhdCAweC4uLj4sKSwge30pCisKK1dpdGggYSBiaXQgb2YgdHdlYWtpbmcgeW91IGNvdWxkIGhhdmUgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24gcmFpc2UgdGhlCitgQXNzZXJ0aW9uRXJyb3JgIGRpcmVjdGx5IGFuZCBwcm92aWRlIGEgbW9yZSB1c2VmdWwgZmFpbHVyZSBtZXNzYWdlLgorCitBcyBvZiB2ZXJzaW9uIDEuNSwgdGhlIFB5dGhvbiB0ZXN0aW5nIGxpYnJhcnkgYFB5SGFtY3Jlc3QKKzxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvUHlIYW1jcmVzdD5gXyBwcm92aWRlcyBzaW1pbGFyIGZ1bmN0aW9uYWxpdHksCit0aGF0IG1heSBiZSB1c2VmdWwgaGVyZSwgaW4gdGhlIGZvcm0gb2YgaXRzIGVxdWFsaXR5IG1hdGNoZXIKKyhgaGFtY3Jlc3QubGlicmFyeS5pbnRlZ3JhdGlvbi5tYXRjaF9lcXVhbGl0eQorPGh0dHA6Ly9wYWNrYWdlcy5weXRob24ub3JnL1B5SGFtY3Jlc3QvaW50ZWdyYXRpb24uaHRtbCNoYW1jcmVzdC5saWJyYXJ5LmludGVncmF0aW9uLm1hdGNoX2VxdWFsaXR5PmBfKS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U1MDAzMQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0CkBAIC0wLDAgKzEsMjIyNSBAQAorOm1vZDpgdW5pdHRlc3QubW9ja2AgLS0tIG1vY2sgb2JqZWN0IGxpYnJhcnkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHVuaXR0ZXN0Lm1vY2sKKyAgIDpzeW5vcHNpczogTW9jayBvYmplY3QgbGlicmFyeS4KKy4uIG1vZHVsZWF1dGhvcjo6IE1pY2hhZWwgRm9vcmQgPG1pY2hhZWxAcHl0aG9uLm9yZz4KKy4uIGN1cnJlbnRtb2R1bGU6OiB1bml0dGVzdC5tb2NrCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuMworCis6bW9kOmB1bml0dGVzdC5tb2NrYCBpcyBhIGxpYnJhcnkgZm9yIHRlc3RpbmcgaW4gUHl0aG9uLiBJdCBhbGxvd3MgeW91IHRvCityZXBsYWNlIHBhcnRzIG9mIHlvdXIgc3lzdGVtIHVuZGVyIHRlc3Qgd2l0aCBtb2NrIG9iamVjdHMgYW5kIG1ha2UgYXNzZXJ0aW9ucworYWJvdXQgaG93IHRoZXkgaGF2ZSBiZWVuIHVzZWQuCisKK2B1bml0dGVzdC5tb2NrYCBwcm92aWRlcyBhIGNvcmUgOmNsYXNzOmBNb2NrYCBjbGFzcyByZW1vdmluZyB0aGUgbmVlZCB0bworY3JlYXRlIGEgaG9zdCBvZiBzdHVicyB0aHJvdWdob3V0IHlvdXIgdGVzdCBzdWl0ZS4gQWZ0ZXIgcGVyZm9ybWluZyBhbgorYWN0aW9uLCB5b3UgY2FuIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB3aGljaCBtZXRob2RzIC8gYXR0cmlidXRlcyB3ZXJlIHVzZWQKK2FuZCBhcmd1bWVudHMgdGhleSB3ZXJlIGNhbGxlZCB3aXRoLiBZb3UgY2FuIGFsc28gc3BlY2lmeSByZXR1cm4gdmFsdWVzIGFuZAorc2V0IG5lZWRlZCBhdHRyaWJ1dGVzIGluIHRoZSBub3JtYWwgd2F5LgorCitBZGRpdGlvbmFsbHksIG1vY2sgcHJvdmlkZXMgYSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvciB0aGF0IGhhbmRsZXMgcGF0Y2hpbmcKK21vZHVsZSBhbmQgY2xhc3MgbGV2ZWwgYXR0cmlidXRlcyB3aXRoaW4gdGhlIHNjb3BlIG9mIGEgdGVzdCwgYWxvbmcgd2l0aAorOmNvbnN0OmBzZW50aW5lbGAgZm9yIGNyZWF0aW5nIHVuaXF1ZSBvYmplY3RzLiBTZWUgdGhlIGBxdWljayBndWlkZWBfIGZvcgorc29tZSBleGFtcGxlcyBvZiBob3cgdG8gdXNlIDpjbGFzczpgTW9ja2AsIDpjbGFzczpgTWFnaWNNb2NrYCBhbmQKKzpmdW5jOmBwYXRjaGAuCisKK01vY2sgaXMgdmVyeSBlYXN5IHRvIHVzZSBhbmQgaXMgZGVzaWduZWQgZm9yIHVzZSB3aXRoIDptb2Q6YHVuaXR0ZXN0YC4gTW9jaworaXMgYmFzZWQgb24gdGhlICdhY3Rpb24gLT4gYXNzZXJ0aW9uJyBwYXR0ZXJuIGluc3RlYWQgb2YgYCdyZWNvcmQgLT4gcmVwbGF5J2AKK3VzZWQgYnkgbWFueSBtb2NraW5nIGZyYW1ld29ya3MuCisKK1RoZXJlIGlzIGEgYmFja3BvcnQgb2YgYHVuaXR0ZXN0Lm1vY2tgIGZvciBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbiwKK2F2YWlsYWJsZSBhcyBgbW9jayBvbiBQeVBJIDxodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvbW9jaz5gXy4KKworKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvdW5pdHRlc3QvbW9jay5weWAKKworCitRdWljayBHdWlkZQorLS0tLS0tLS0tLS0KKworOmNsYXNzOmBNb2NrYCBhbmQgOmNsYXNzOmBNYWdpY01vY2tgIG9iamVjdHMgY3JlYXRlIGFsbCBhdHRyaWJ1dGVzIGFuZAorbWV0aG9kcyBhcyB5b3UgYWNjZXNzIHRoZW0gYW5kIHN0b3JlIGRldGFpbHMgb2YgaG93IHRoZXkgaGF2ZSBiZWVuIHVzZWQuIFlvdQorY2FuIGNvbmZpZ3VyZSB0aGVtLCB0byBzcGVjaWZ5IHJldHVybiB2YWx1ZXMgb3IgbGltaXQgd2hhdCBhdHRyaWJ1dGVzIGFyZQorYXZhaWxhYmxlLCBhbmQgdGhlbiBtYWtlIGFzc2VydGlvbnMgYWJvdXQgaG93IHRoZXkgaGF2ZSBiZWVuIHVzZWQ6CisKKyAgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNYWdpY01vY2sKKyAgICA+Pj4gdGhpbmcgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgID4+PiB0aGluZy5tZXRob2QgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgPj4+IHRoaW5nLm1ldGhvZCgzLCA0LCA1LCBrZXk9J3ZhbHVlJykKKyAgICAzCisgICAgPj4+IHRoaW5nLm1ldGhvZC5hc3NlcnRfY2FsbGVkX3dpdGgoMywgNCwgNSwga2V5PSd2YWx1ZScpCisKKzphdHRyOmBzaWRlX2VmZmVjdGAgYWxsb3dzIHlvdSB0byBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaW5jbHVkaW5nIHJhaXNpbmcgYW4KK2V4Y2VwdGlvbiB3aGVuIGEgbW9jayBpcyBjYWxsZWQ6CisKKyAgID4+PiBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1LZXlFcnJvcignZm9vJykpCisgICA+Pj4gbW9jaygpCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgLi4uCisgICBLZXlFcnJvcjogJ2ZvbycKKworICAgPj4+IHZhbHVlcyA9IHsnYSc6IDEsICdiJzogMiwgJ2MnOiAzfQorICAgPj4+IGRlZiBzaWRlX2VmZmVjdChhcmcpOgorICAgLi4uICAgICByZXR1cm4gdmFsdWVzW2FyZ10KKyAgIC4uLgorICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgPj4+IG1vY2soJ2EnKSwgbW9jaygnYicpLCBtb2NrKCdjJykKKyAgICgxLCAyLCAzKQorICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBbNSwgNCwgMywgMiwgMV0KKyAgID4+PiBtb2NrKCksIG1vY2soKSwgbW9jaygpCisgICAoNSwgNCwgMykKKworTW9jayBoYXMgbWFueSBvdGhlciB3YXlzIHlvdSBjYW4gY29uZmlndXJlIGl0IGFuZCBjb250cm9sIGl0cyBiZWhhdmlvdXIuIEZvcgorZXhhbXBsZSB0aGUgYHNwZWNgIGFyZ3VtZW50IGNvbmZpZ3VyZXMgdGhlIG1vY2sgdG8gdGFrZSBpdHMgc3BlY2lmaWNhdGlvbgorZnJvbSBhbm90aGVyIG9iamVjdC4gQXR0ZW1wdGluZyB0byBhY2Nlc3MgYXR0cmlidXRlcyBvciBtZXRob2RzIG9uIHRoZSBtb2NrCit0aGF0IGRvbid0IGV4aXN0IG9uIHRoZSBzcGVjIHdpbGwgZmFpbCB3aXRoIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKK1RoZSA6ZnVuYzpgcGF0Y2hgIGRlY29yYXRvciAvIGNvbnRleHQgbWFuYWdlciBtYWtlcyBpdCBlYXN5IHRvIG1vY2sgY2xhc3NlcyBvcgorb2JqZWN0cyBpbiBhIG1vZHVsZSB1bmRlciB0ZXN0LiBUaGUgb2JqZWN0IHlvdSBzcGVjaWZ5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBhCittb2NrIChvciBvdGhlciBvYmplY3QpIGR1cmluZyB0aGUgdGVzdCBhbmQgcmVzdG9yZWQgd2hlbiB0aGUgdGVzdCBlbmRzOgorCisgICAgPj4+IGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKyAgICA+Pj4gQHBhdGNoKCdtb2R1bGUuQ2xhc3NOYW1lMicpCisgICAgLi4uIEBwYXRjaCgnbW9kdWxlLkNsYXNzTmFtZTEnKQorICAgIC4uLiBkZWYgdGVzdChNb2NrQ2xhc3MxLCBNb2NrQ2xhc3MyKToKKyAgICAuLi4gICAgIG1vZHVsZS5DbGFzc05hbWUxKCkKKyAgICAuLi4gICAgIG1vZHVsZS5DbGFzc05hbWUyKCkKKyAgICAuLi4gICAgIGFzc2VydCBNb2NrQ2xhc3MxIGlzIG1vZHVsZS5DbGFzc05hbWUxCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMiBpcyBtb2R1bGUuQ2xhc3NOYW1lMgorICAgIC4uLiAgICAgYXNzZXJ0IE1vY2tDbGFzczEuY2FsbGVkCisgICAgLi4uICAgICBhc3NlcnQgTW9ja0NsYXNzMi5jYWxsZWQKKyAgICAuLi4KKyAgICA+Pj4gdGVzdCgpCisKKy4uIG5vdGU6OgorCisgICBXaGVuIHlvdSBuZXN0IHBhdGNoIGRlY29yYXRvcnMgdGhlIG1vY2tzIGFyZSBwYXNzZWQgaW4gdG8gdGhlIGRlY29yYXRlZAorICAgZnVuY3Rpb24gaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBsaWVkICh0aGUgbm9ybWFsICpweXRob24qIG9yZGVyIHRoYXQKKyAgIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQpLiBUaGlzIG1lYW5zIGZyb20gdGhlIGJvdHRvbSB1cCwgc28gaW4gdGhlIGV4YW1wbGUKKyAgIGFib3ZlIHRoZSBtb2NrIGZvciBgbW9kdWxlLkNsYXNzTmFtZTFgIGlzIHBhc3NlZCBpbiBmaXJzdC4KKworICAgV2l0aCBgcGF0Y2hgIGl0IG1hdHRlcnMgdGhhdCB5b3UgcGF0Y2ggb2JqZWN0cyBpbiB0aGUgbmFtZXNwYWNlIHdoZXJlIHRoZXkKKyAgIGFyZSBsb29rZWQgdXAuIFRoaXMgaXMgbm9ybWFsbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgZm9yIGEgcXVpY2sgZ3VpZGUKKyAgIHJlYWQgOnJlZjpgd2hlcmUgdG8gcGF0Y2ggPHdoZXJlLXRvLXBhdGNoPmAuCisKK0FzIHdlbGwgYXMgYSBkZWNvcmF0b3IgYHBhdGNoYCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciBpbiBhIHdpdGgKK3N0YXRlbWVudDoKKworICAgID4+PiB3aXRoIHBhdGNoLm9iamVjdChQcm9kdWN0aW9uQ2xhc3MsICdtZXRob2QnLCByZXR1cm5fdmFsdWU9Tm9uZSkgYXMgbW9ja19tZXRob2Q6CisgICAgLi4uICAgICB0aGluZyA9IFByb2R1Y3Rpb25DbGFzcygpCisgICAgLi4uICAgICB0aGluZy5tZXRob2QoMSwgMiwgMykKKyAgICAuLi4KKyAgICA+Pj4gbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKworCitUaGVyZSBpcyBhbHNvIDpmdW5jOmBwYXRjaC5kaWN0YCBmb3Igc2V0dGluZyB2YWx1ZXMgaW4gYSBkaWN0aW9uYXJ5IGp1c3QKK2R1cmluZyBhIHNjb3BlIGFuZCByZXN0b3JpbmcgdGhlIGRpY3Rpb25hcnkgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIHdoZW4gdGhlIHRlc3QKK2VuZHM6CisKKyAgID4+PiBmb28gPSB7J2tleSc6ICd2YWx1ZSd9CisgICA+Pj4gb3JpZ2luYWwgPSBmb28uY29weSgpCisgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KGZvbywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSwgY2xlYXI9VHJ1ZSk6CisgICAuLi4gICAgIGFzc2VydCBmb28gPT0geyduZXdrZXknOiAnbmV3dmFsdWUnfQorICAgLi4uCisgICA+Pj4gYXNzZXJ0IGZvbyA9PSBvcmlnaW5hbAorCitNb2NrIHN1cHBvcnRzIHRoZSBtb2NraW5nIG9mIFB5dGhvbiA6cmVmOmBtYWdpYyBtZXRob2RzIDxtYWdpYy1tZXRob2RzPmAuIFRoZQorZWFzaWVzdCB3YXkgb2YgdXNpbmcgbWFnaWMgbWV0aG9kcyBpcyB3aXRoIHRoZSA6Y2xhc3M6YE1hZ2ljTW9ja2AgY2xhc3MuIEl0CithbGxvd3MgeW91IHRvIGRvIHRoaW5ncyBsaWtlOgorCisgICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgID4+PiBtb2NrLl9fc3RyX18ucmV0dXJuX3ZhbHVlID0gJ2Zvb2JhcmJheicKKyAgICA+Pj4gc3RyKG1vY2spCisgICAgJ2Zvb2JhcmJheicKKyAgICA+Pj4gbW9jay5fX3N0cl9fLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKK01vY2sgYWxsb3dzIHlvdSB0byBhc3NpZ24gZnVuY3Rpb25zIChvciBvdGhlciBNb2NrIGluc3RhbmNlcykgdG8gbWFnaWMgbWV0aG9kcworYW5kIHRoZXkgd2lsbCBiZSBjYWxsZWQgYXBwcm9wcmlhdGVseS4gVGhlIGBNYWdpY01vY2tgIGNsYXNzIGlzIGp1c3QgYSBNb2NrCit2YXJpYW50IHRoYXQgaGFzIGFsbCBvZiB0aGUgbWFnaWMgbWV0aG9kcyBwcmUtY3JlYXRlZCBmb3IgeW91ICh3ZWxsLCBhbGwgdGhlCit1c2VmdWwgb25lcyBhbnl3YXkpLgorCitUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2YgdXNpbmcgbWFnaWMgbWV0aG9kcyB3aXRoIHRoZSBvcmRpbmFyeSBNb2NrCitjbGFzczoKKworICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgPj4+IG1vY2suX19zdHJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPSd3aGVlZWVlZScpCisgICAgPj4+IHN0cihtb2NrKQorICAgICd3aGVlZWVlZScKKworRm9yIGVuc3VyaW5nIHRoYXQgdGhlIG1vY2sgb2JqZWN0cyBpbiB5b3VyIHRlc3RzIGhhdmUgdGhlIHNhbWUgYXBpIGFzIHRoZQorb2JqZWN0cyB0aGV5IGFyZSByZXBsYWNpbmcsIHlvdSBjYW4gdXNlIDpyZWY6YGF1dG8tc3BlY2NpbmcgPGF1dG8tc3BlY2Npbmc+YC4KK0F1dG8tc3BlY2NpbmcgY2FuIGJlIGRvbmUgdGhyb3VnaCB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudCB0byBwYXRjaCwgb3IgdGhlCis6ZnVuYzpgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbi4gQXV0by1zcGVjY2luZyBjcmVhdGVzIG1vY2sgb2JqZWN0cyB0aGF0CitoYXZlIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgYXMgdGhlIG9iamVjdHMgdGhleSBhcmUgcmVwbGFjaW5nLCBhbmQKK2FueSBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgKGluY2x1ZGluZyBjb25zdHJ1Y3RvcnMpIGhhdmUgdGhlIHNhbWUgY2FsbAorc2lnbmF0dXJlIGFzIHRoZSByZWFsIG9iamVjdC4KKworVGhpcyBlbnN1cmVzIHRoYXQgeW91ciBtb2NrcyB3aWxsIGZhaWwgaW4gdGhlIHNhbWUgd2F5IGFzIHlvdXIgcHJvZHVjdGlvbgorY29kZSBpZiB0aGV5IGFyZSB1c2VkIGluY29ycmVjdGx5OgorCisgICA+Pj4gZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBjcmVhdGVfYXV0b3NwZWMKKyAgID4+PiBkZWYgZnVuY3Rpb24oYSwgYiwgYyk6CisgICAuLi4gICAgIHBhc3MKKyAgIC4uLgorICAgPj4+IG1vY2tfZnVuY3Rpb24gPSBjcmVhdGVfYXV0b3NwZWMoZnVuY3Rpb24sIHJldHVybl92YWx1ZT0nZmlzaHknKQorICAgPj4+IG1vY2tfZnVuY3Rpb24oMSwgMiwgMykKKyAgICdmaXNoeScKKyAgID4+PiBtb2NrX2Z1bmN0aW9uLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICA+Pj4gbW9ja19mdW5jdGlvbignd3JvbmcgYXJndW1lbnRzJykKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAuLi4KKyAgIFR5cGVFcnJvcjogPGxhbWJkYT4oKSB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzICgxIGdpdmVuKQorCitgY3JlYXRlX2F1dG9zcGVjYCBjYW4gYWxzbyBiZSB1c2VkIG9uIGNsYXNzZXMsIHdoZXJlIGl0IGNvcGllcyB0aGUgc2lnbmF0dXJlIG9mCit0aGUgYF9faW5pdF9fYCBtZXRob2QsIGFuZCBvbiBjYWxsYWJsZSBvYmplY3RzIHdoZXJlIGl0IGNvcGllcyB0aGUgc2lnbmF0dXJlIG9mCit0aGUgYF9fY2FsbF9fYCBtZXRob2QuCisKKworCitUaGUgTW9jayBDbGFzcworLS0tLS0tLS0tLS0tLS0KKworCitgTW9ja2AgaXMgYSBmbGV4aWJsZSBtb2NrIG9iamVjdCBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSB1c2Ugb2Ygc3R1YnMgYW5kCit0ZXN0IGRvdWJsZXMgdGhyb3VnaG91dCB5b3VyIGNvZGUuIE1vY2tzIGFyZSBjYWxsYWJsZSBhbmQgY3JlYXRlIGF0dHJpYnV0ZXMgYXMKK25ldyBtb2NrcyB3aGVuIHlvdSBhY2Nlc3MgdGhlbSBbI11fLiBBY2Nlc3NpbmcgdGhlIHNhbWUgYXR0cmlidXRlIHdpbGwgYWx3YXlzCityZXR1cm4gdGhlIHNhbWUgbW9jay4gTW9ja3MgcmVjb3JkIGhvdyB5b3UgdXNlIHRoZW0sIGFsbG93aW5nIHlvdSB0byBtYWtlCithc3NlcnRpb25zIGFib3V0IHdoYXQgeW91ciBjb2RlIGhhcyBkb25lIHRvIHRoZW0uCisKKzpjbGFzczpgTWFnaWNNb2NrYCBpcyBhIHN1YmNsYXNzIG9mIGBNb2NrYCB3aXRoIGFsbCB0aGUgbWFnaWMgbWV0aG9kcworcHJlLWNyZWF0ZWQgYW5kIHJlYWR5IHRvIHVzZS4gVGhlcmUgYXJlIGFsc28gbm9uLWNhbGxhYmxlIHZhcmlhbnRzLCB1c2VmdWwKK3doZW4geW91IGFyZSBtb2NraW5nIG91dCBvYmplY3RzIHRoYXQgYXJlbid0IGNhbGxhYmxlOgorOmNsYXNzOmBOb25DYWxsYWJsZU1vY2tgIGFuZCA6Y2xhc3M6YE5vbkNhbGxhYmxlTWFnaWNNb2NrYAorCitUaGUgOmZ1bmM6YHBhdGNoYCBkZWNvcmF0b3JzIG1ha2VzIGl0IGVhc3kgdG8gdGVtcG9yYXJpbHkgcmVwbGFjZSBjbGFzc2VzCitpbiBhIHBhcnRpY3VsYXIgbW9kdWxlIHdpdGggYSBgTW9ja2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBwYXRjaGAgd2lsbCBjcmVhdGUKK2EgYE1hZ2ljTW9ja2AgZm9yIHlvdS4gWW91IGNhbiBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlIGNsYXNzIG9mIGBNb2NrYCB1c2luZwordGhlIGBuZXdfY2FsbGFibGVgIGFyZ3VtZW50IHRvIGBwYXRjaGAuCisKKworLi4gY2xhc3M6OiBNb2NrKHNwZWM9Tm9uZSwgc2lkZV9lZmZlY3Q9Tm9uZSwgcmV0dXJuX3ZhbHVlPURFRkFVTFQsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwgKiprd2FyZ3MpCisKKyAgICBDcmVhdGUgYSBuZXcgYE1vY2tgIG9iamVjdC4gYE1vY2tgIHRha2VzIHNldmVyYWwgb3B0aW9uYWwgYXJndW1lbnRzCisgICAgdGhhdCBzcGVjaWZ5IHRoZSBiZWhhdmlvdXIgb2YgdGhlIE1vY2sgb2JqZWN0OgorCisgICAgKiBgc3BlY2A6IFRoaXMgY2FuIGJlIGVpdGhlciBhIGxpc3Qgb2Ygc3RyaW5ncyBvciBhbiBleGlzdGluZyBvYmplY3QgKGEKKyAgICAgIGNsYXNzIG9yIGluc3RhbmNlKSB0aGF0IGFjdHMgYXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBtb2NrIG9iamVjdC4gSWYKKyAgICAgIHlvdSBwYXNzIGluIGFuIG9iamVjdCB0aGVuIGEgbGlzdCBvZiBzdHJpbmdzIGlzIGZvcm1lZCBieSBjYWxsaW5nIGRpciBvbgorICAgICAgdGhlIG9iamVjdCAoZXhjbHVkaW5nIHVuc3VwcG9ydGVkIG1hZ2ljIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMpLgorICAgICAgQWNjZXNzaW5nIGFueSBhdHRyaWJ1dGUgbm90IGluIHRoaXMgbGlzdCB3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICAgIElmIGBzcGVjYCBpcyBhbiBvYmplY3QgKHJhdGhlciB0aGFuIGEgbGlzdCBvZiBzdHJpbmdzKSB0aGVuCisgICAgICA6YXR0cjpgX19jbGFzc19fYCByZXR1cm5zIHRoZSBjbGFzcyBvZiB0aGUgc3BlYyBvYmplY3QuIFRoaXMgYWxsb3dzIG1vY2tzCisgICAgICB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cy4KKworICAgICogYHNwZWNfc2V0YDogQSBzdHJpY3RlciB2YXJpYW50IG9mIGBzcGVjYC4gSWYgdXNlZCwgYXR0ZW1wdGluZyB0byAqc2V0KgorICAgICAgb3IgZ2V0IGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9jayB0aGF0IGlzbid0IG9uIHRoZSBvYmplY3QgcGFzc2VkIGFzCisgICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgICogYHNpZGVfZWZmZWN0YDogQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIE1vY2sgaXMgY2FsbGVkLiBTZWUKKyAgICAgIHRoZSA6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIGF0dHJpYnV0ZS4gVXNlZnVsIGZvciByYWlzaW5nIGV4Y2VwdGlvbnMgb3IKKyAgICAgIGR5bmFtaWNhbGx5IGNoYW5naW5nIHJldHVybiB2YWx1ZXMuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZQorICAgICAgYXJndW1lbnRzIGFzIHRoZSBtb2NrLCBhbmQgdW5sZXNzIGl0IHJldHVybnMgOmRhdGE6YERFRkFVTFRgLCB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZS4KKworICAgICAgQWx0ZXJuYXRpdmVseSBgc2lkZV9lZmZlY3RgIGNhbiBiZSBhbiBleGNlcHRpb24gY2xhc3Mgb3IgaW5zdGFuY2UuIEluCisgICAgICB0aGlzIGNhc2UgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4KKworICAgICAgSWYgYHNpZGVfZWZmZWN0YCBpcyBhbiBpdGVyYWJsZSB0aGVuIGVhY2ggY2FsbCB0byB0aGUgbW9jayB3aWxsIHJldHVybgorICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuCisKKyAgICAgIEEgYHNpZGVfZWZmZWN0YCBjYW4gYmUgY2xlYXJlZCBieSBzZXR0aW5nIGl0IHRvIGBOb25lYC4KKworICAgICogYHJldHVybl92YWx1ZWA6IFRoZSB2YWx1ZSByZXR1cm5lZCB3aGVuIHRoZSBtb2NrIGlzIGNhbGxlZC4gQnkgZGVmYXVsdAorICAgICAgdGhpcyBpcyBhIG5ldyBNb2NrIChjcmVhdGVkIG9uIGZpcnN0IGFjY2VzcykuIFNlZSB0aGUKKyAgICAgIDphdHRyOmByZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4KKworICAgICogYHdyYXBzYDogSXRlbSBmb3IgdGhlIG1vY2sgb2JqZWN0IHRvIHdyYXAuIElmIGB3cmFwc2AgaXMgbm90IE5vbmUgdGhlbgorICAgICAgY2FsbGluZyB0aGUgTW9jayB3aWxsIHBhc3MgdGhlIGNhbGwgdGhyb3VnaCB0byB0aGUgd3JhcHBlZCBvYmplY3QKKyAgICAgIChyZXR1cm5pbmcgdGhlIHJlYWwgcmVzdWx0KS4gQXR0cmlidXRlIGFjY2VzcyBvbiB0aGUgbW9jayB3aWxsIHJldHVybiBhCisgICAgICBNb2NrIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvZiB0aGUgd3JhcHBlZAorICAgICAgb2JqZWN0IChzbyBhdHRlbXB0aW5nIHRvIGFjY2VzcyBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IHdpbGwKKyAgICAgIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmApLgorCisgICAgICBJZiB0aGUgbW9jayBoYXMgYW4gZXhwbGljaXQgYHJldHVybl92YWx1ZWAgc2V0IHRoZW4gY2FsbHMgYXJlIG5vdCBwYXNzZWQKKyAgICAgIHRvIHRoZSB3cmFwcGVkIG9iamVjdCBhbmQgdGhlIGByZXR1cm5fdmFsdWVgIGlzIHJldHVybmVkIGluc3RlYWQuCisKKyAgICAqIGBuYW1lYDogSWYgdGhlIG1vY2sgaGFzIGEgbmFtZSB0aGVuIGl0IHdpbGwgYmUgdXNlZCBpbiB0aGUgcmVwciBvZiB0aGUKKyAgICAgIG1vY2suIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBUaGUgbmFtZSBpcyBwcm9wYWdhdGVkIHRvIGNoaWxkCisgICAgICBtb2Nrcy4KKworICAgIE1vY2tzIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZQorICAgIHVzZWQgdG8gc2V0IGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYWZ0ZXIgaXQgaXMgY3JlYXRlZC4gU2VlIHRoZQorICAgIDptZXRoOmBjb25maWd1cmVfbW9ja2AgbWV0aG9kIGZvciBkZXRhaWxzLgorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGEgY29udmVuaWVudCB3YXkgb2YgYXNzZXJ0aW5nIHRoYXQgY2FsbHMgYXJlIG1hZGUgaW4gYQorICAgICAgICBwYXJ0aWN1bGFyIHdheToKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgxLCAyLCAzLCB0ZXN0PSd3b3cnKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIsIDMsIHRlc3Q9J3dvdycpCisKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfb25jZV93aXRoKCphcmdzLCAqKmt3YXJncykKKworICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgZXhhY3RseSBvbmNlIGFuZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyAgICAgICBhcmd1bWVudHMuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPSdiYXonKQorICAgICAgICAgICAgPj4+IG1vY2soJ2ZvbycsIGJhcj0nYmF6JykKKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nLCBiYXI9J2JheicpCisgICAgICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3I6IEV4cGVjdGVkICdtb2NrJyB0byBiZSBjYWxsZWQgb25jZS4gQ2FsbGVkIDIgdGltZXMuCisKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9hbnlfY2FsbCgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFRoZSBhc3NlcnQgcGFzc2VzIGlmIHRoZSBtb2NrIGhhcyAqZXZlciogYmVlbiBjYWxsZWQsIHVubGlrZQorICAgICAgICA6bWV0aDpgYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQgOm1ldGg6YGFzc2VydF9jYWxsZWRfb25jZV93aXRoYCB0aGF0CisgICAgICAgIG9ubHkgcGFzcyBpZiB0aGUgY2FsbCBpcyB0aGUgbW9zdCByZWNlbnQgb25lLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jaygxLCAyLCBhcmc9J3RoaW5nJykKKyAgICAgICAgICAgID4+PiBtb2NrKCdzb21lJywgJ3RoaW5nJywgJ2Vsc2UnKQorICAgICAgICAgICAgPj4+IG1vY2suYXNzZXJ0X2FueV9jYWxsKDEsIDIsIGFyZz0ndGhpbmcnKQorCisKKyAgICAuLiBtZXRob2Q6OiBhc3NlcnRfaGFzX2NhbGxzKGNhbGxzLCBhbnlfb3JkZXI9RmFsc2UpCisKKyAgICAgICAgYXNzZXJ0IHRoZSBtb2NrIGhhcyBiZWVuIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgY2FsbHMuCisgICAgICAgIFRoZSBgbW9ja19jYWxsc2AgbGlzdCBpcyBjaGVja2VkIGZvciB0aGUgY2FsbHMuCisKKyAgICAgICAgSWYgYGFueV9vcmRlcmAgaXMgRmFsc2UgKHRoZSBkZWZhdWx0KSB0aGVuIHRoZSBjYWxscyBtdXN0IGJlCisgICAgICAgIHNlcXVlbnRpYWwuIFRoZXJlIGNhbiBiZSBleHRyYSBjYWxscyBiZWZvcmUgb3IgYWZ0ZXIgdGhlCisgICAgICAgIHNwZWNpZmllZCBjYWxscy4KKworICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBUcnVlIHRoZW4gdGhlIGNhbGxzIGNhbiBiZSBpbiBhbnkgb3JkZXIsIGJ1dAorICAgICAgICB0aGV5IG11c3QgYWxsIGFwcGVhciBpbiA6YXR0cjpgbW9ja19jYWxsc2AuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKDEpCisgICAgICAgICAgICA+Pj4gbW9jaygyKQorICAgICAgICAgICAgPj4+IG1vY2soMykKKyAgICAgICAgICAgID4+PiBtb2NrKDQpCisgICAgICAgICAgICA+Pj4gY2FsbHMgPSBbY2FsbCgyKSwgY2FsbCgzKV0KKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMpCisgICAgICAgICAgICA+Pj4gY2FsbHMgPSBbY2FsbCg0KSwgY2FsbCgyKSwgY2FsbCgzKV0KKyAgICAgICAgICAgID4+PiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoY2FsbHMsIGFueV9vcmRlcj1UcnVlKQorCisKKyAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKKworICAgICAgICBUaGUgcmVzZXRfbW9jayBtZXRob2QgcmVzZXRzIGFsbCB0aGUgY2FsbCBhdHRyaWJ1dGVzIG9uIGEgbW9jayBvYmplY3Q6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrKCdoZWxsbycpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKKyAgICAgICAgICAgIFRydWUKKyAgICAgICAgICAgID4+PiBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCisgICAgICAgICAgICBGYWxzZQorCisgICAgICAgIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVyZSB5b3Ugd2FudCB0byBtYWtlIGEgc2VyaWVzIG9mIGFzc2VydGlvbnMgdGhhdAorICAgICAgICByZXVzZSB0aGUgc2FtZSBvYmplY3QuIE5vdGUgdGhhdCBgcmVzZXRfbW9ja2AgKmRvZXNuJ3QqIGNsZWFyIHRoZQorICAgICAgICByZXR1cm4gdmFsdWUsIDphdHRyOmBzaWRlX2VmZmVjdGAgb3IgYW55IGNoaWxkIGF0dHJpYnV0ZXMgeW91IGhhdmUKKyAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50LiBDaGlsZCBtb2NrcyBhbmQgdGhlIHJldHVybiB2YWx1ZSBtb2NrCisgICAgICAgIChpZiBhbnkpIGFyZSByZXNldCBhcyB3ZWxsLgorCisKKyAgICAuLiBtZXRob2Q6OiBtb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlKQorCisgICAgICAgIEFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIGBUcnVlYCB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LgorCisKKyAgICAuLiBtZXRob2Q6OiBhdHRhY2hfbW9jayhtb2NrLCBhdHRyaWJ1dGUpCisKKyAgICAgICAgQXR0YWNoIGEgbW9jayBhcyBhbiBhdHRyaWJ1dGUgb2YgdGhpcyBvbmUsIHJlcGxhY2luZyBpdHMgbmFtZSBhbmQKKyAgICAgICAgcGFyZW50LiBDYWxscyB0byB0aGUgYXR0YWNoZWQgbW9jayB3aWxsIGJlIHJlY29yZGVkIGluIHRoZQorICAgICAgICA6YXR0cjpgbWV0aG9kX2NhbGxzYCBhbmQgOmF0dHI6YG1vY2tfY2FsbHNgIGF0dHJpYnV0ZXMgb2YgdGhpcyBvbmUuCisKKworICAgIC4uIG1ldGhvZDo6IGNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorCisgICAgICAgIFNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRocm91Z2gga2V5d29yZCBhcmd1bWVudHMuCisKKyAgICAgICAgQXR0cmlidXRlcyBwbHVzIHJldHVybiB2YWx1ZXMgYW5kIHNpZGUgZWZmZWN0cyBjYW4gYmUgc2V0IG9uIGNoaWxkCisgICAgICAgIG1vY2tzIHVzaW5nIHN0YW5kYXJkIGRvdCBub3RhdGlvbiBhbmQgdW5wYWNraW5nIGEgZGljdGlvbmFyeSBpbiB0aGUKKyAgICAgICAgbWV0aG9kIGNhbGw6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICAgICAgICAgID4+PiBtb2NrLmNvbmZpZ3VyZV9tb2NrKCoqYXR0cnMpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2sub3RoZXIoKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEtleUVycm9yCisKKyAgICAgICAgVGhlIHNhbWUgdGhpbmcgY2FuIGJlIGFjaGlldmVkIGluIHRoZSBjb25zdHJ1Y3RvciBjYWxsIHRvIG1vY2tzOgorCisgICAgICAgICAgICA+Pj4gYXR0cnMgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhzb21lX2F0dHJpYnV0ZT0nZWdncycsICoqYXR0cnMpCisgICAgICAgICAgICA+Pj4gbW9jay5zb21lX2F0dHJpYnV0ZQorICAgICAgICAgICAgJ2VnZ3MnCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgMworICAgICAgICAgICAgPj4+IG1vY2sub3RoZXIoKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEtleUVycm9yCisKKyAgICAgICAgYGNvbmZpZ3VyZV9tb2NrYCBleGlzdHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZG8gY29uZmlndXJhdGlvbgorICAgICAgICBhZnRlciB0aGUgbW9jayBoYXMgYmVlbiBjcmVhdGVkLgorCisKKyAgICAuLiBtZXRob2Q6OiBfX2Rpcl9fKCkKKworICAgICAgICBgTW9ja2Agb2JqZWN0cyBsaW1pdCB0aGUgcmVzdWx0cyBvZiBgZGlyKHNvbWVfbW9jaylgIHRvIHVzZWZ1bCByZXN1bHRzLgorICAgICAgICBGb3IgbW9ja3Mgd2l0aCBhIGBzcGVjYCB0aGlzIGluY2x1ZGVzIGFsbCB0aGUgcGVybWl0dGVkIGF0dHJpYnV0ZXMKKyAgICAgICAgZm9yIHRoZSBtb2NrLgorCisgICAgICAgIFNlZSA6ZGF0YTpgRklMVEVSX0RJUmAgZm9yIHdoYXQgdGhpcyBmaWx0ZXJpbmcgZG9lcywgYW5kIGhvdyB0bworICAgICAgICBzd2l0Y2ggaXQgb2ZmLgorCisKKyAgICAuLiBtZXRob2Q6OiBfZ2V0X2NoaWxkX21vY2soKiprdykKKworICAgICAgICBDcmVhdGUgdGhlIGNoaWxkIG1vY2tzIGZvciBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUuCisgICAgICAgIEJ5IGRlZmF1bHQgY2hpbGQgbW9ja3Mgd2lsbCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBwYXJlbnQuCisgICAgICAgIFN1YmNsYXNzZXMgb2YgTW9jayBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIHRvIGN1c3RvbWl6ZSB0aGUgd2F5CisgICAgICAgIGNoaWxkIG1vY2tzIGFyZSBtYWRlLgorCisgICAgICAgIEZvciBub24tY2FsbGFibGUgbW9ja3MgdGhlIGNhbGxhYmxlIHZhcmlhbnQgd2lsbCBiZSB1c2VkIChyYXRoZXIgdGhhbgorICAgICAgICBhbnkgY3VzdG9tIHN1YmNsYXNzKS4KKworCisgICAgLi4gYXR0cmlidXRlOjogY2FsbGVkCisKKyAgICAgICAgQSBib29sZWFuIHJlcHJlc2VudGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgbW9jayBvYmplY3QgaGFzIGJlZW4gY2FsbGVkOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKKyAgICAgICAgICAgIEZhbHNlCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsZWQKKyAgICAgICAgICAgIFRydWUKKworICAgIC4uIGF0dHJpYnV0ZTo6IGNhbGxfY291bnQKKworICAgICAgICBBbiBpbnRlZ2VyIHRlbGxpbmcgeW91IGhvdyBtYW55IHRpbWVzIHRoZSBtb2NrIG9iamVjdCBoYXMgYmVlbiBjYWxsZWQ6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfY291bnQKKyAgICAgICAgICAgIDAKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfY291bnQKKyAgICAgICAgICAgIDIKKworCisgICAgLi4gYXR0cmlidXRlOjogcmV0dXJuX3ZhbHVlCisKKyAgICAgICAgU2V0IHRoaXMgdG8gY29uZmlndXJlIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBjYWxsaW5nIHRoZSBtb2NrOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlID0gJ2Zpc2gnCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICAnZmlzaCcKKworICAgICAgICBUaGUgZGVmYXVsdCByZXR1cm4gdmFsdWUgaXMgYSBtb2NrIG9iamVjdCBhbmQgeW91IGNhbiBjb25maWd1cmUgaXQgaW4KKyAgICAgICAgdGhlIG5vcm1hbCB3YXk6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5yZXR1cm5fdmFsdWUuYXR0cmlidXRlID0gc2VudGluZWwuQXR0cmlidXRlCisgICAgICAgICAgICA+Pj4gbW9jay5yZXR1cm5fdmFsdWUoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jaygpKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisKKyAgICAgICAgYHJldHVybl92YWx1ZWAgY2FuIGFsc28gYmUgc2V0IGluIHRoZSBjb25zdHJ1Y3RvcjoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT0zKQorICAgICAgICAgICAgPj4+IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgICAgICAgICAzCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICAzCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IHNpZGVfZWZmZWN0CisKKyAgICAgICAgVGhpcyBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIG1vY2sgaXMgY2FsbGVkLAorICAgICAgICBvciBhbiBleGNlcHRpb24gKGNsYXNzIG9yIGluc3RhbmNlKSB0byBiZSByYWlzZWQuCisKKyAgICAgICAgSWYgeW91IHBhc3MgaW4gYSBmdW5jdGlvbiBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHNhbWUgYXJndW1lbnRzIGFzIHRoZQorICAgICAgICBtb2NrIGFuZCB1bmxlc3MgdGhlIGZ1bmN0aW9uIHJldHVybnMgdGhlIDpkYXRhOmBERUZBVUxUYCBzaW5nbGV0b24gdGhlCisgICAgICAgIGNhbGwgdG8gdGhlIG1vY2sgd2lsbCB0aGVuIHJldHVybiB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gcmV0dXJucy4gSWYgdGhlCisgICAgICAgIGZ1bmN0aW9uIHJldHVybnMgOmRhdGE6YERFRkFVTFRgIHRoZW4gdGhlIG1vY2sgd2lsbCByZXR1cm4gaXRzIG5vcm1hbAorICAgICAgICB2YWx1ZSAoZnJvbSB0aGUgOmF0dHI6YHJldHVybl92YWx1ZWAuCisKKyAgICAgICAgQW4gZXhhbXBsZSBvZiBhIG1vY2sgdGhhdCByYWlzZXMgYW4gZXhjZXB0aW9uICh0byB0ZXN0IGV4Y2VwdGlvbgorICAgICAgICBoYW5kbGluZyBvZiBhbiBBUEkpOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBFeGNlcHRpb24oJ0Jvb20hJykKKyAgICAgICAgICAgID4+PiBtb2NrKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBFeGNlcHRpb246IEJvb20hCisKKyAgICAgICAgVXNpbmcgYHNpZGVfZWZmZWN0YCB0byByZXR1cm4gYSBzZXF1ZW5jZSBvZiB2YWx1ZXM6CisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5zaWRlX2VmZmVjdCA9IFszLCAyLCAxXQorICAgICAgICAgICAgPj4+IG1vY2soKSwgbW9jaygpLCBtb2NrKCkKKyAgICAgICAgICAgICgzLCAyLCAxKQorCisgICAgICAgIFRoZSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUKKyAgICAgICAgbW9jayAoc28gaXQgaXMgd2lzZSBmb3IgaXQgdG8gdGFrZSBhcmJpdHJhcnkgYXJncyBhbmQga2V5d29yZAorICAgICAgICBhcmd1bWVudHMpIGFuZCB3aGF0ZXZlciBpdCByZXR1cm5zIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZSBmb3IKKyAgICAgICAgdGhlIGNhbGwuIFRoZSBleGNlcHRpb24gaXMgaWYgYHNpZGVfZWZmZWN0YCByZXR1cm5zIDpkYXRhOmBERUZBVUxUYCwKKyAgICAgICAgaW4gd2hpY2ggY2FzZSB0aGUgbm9ybWFsIDphdHRyOmByZXR1cm5fdmFsdWVgIGlzIHVzZWQuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jayhyZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIC4uLiAgICAgcmV0dXJuIERFRkFVTFQKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgPj4+IG1vY2suc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgMworCisgICAgICAgIGBzaWRlX2VmZmVjdGAgY2FuIGJlIHNldCBpbiB0aGUgY29uc3RydWN0b3IuIEhlcmUncyBhbiBleGFtcGxlIHRoYXQKKyAgICAgICAgYWRkcyBvbmUgdG8gdGhlIHZhbHVlIHRoZSBtb2NrIGlzIGNhbGxlZCB3aXRoIGFuZCByZXR1cm5zIGl0OgorCisgICAgICAgICAgICA+Pj4gc2lkZV9lZmZlY3QgPSBsYW1iZGEgdmFsdWU6IHZhbHVlICsgMQorICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0KQorICAgICAgICAgICAgPj4+IG1vY2soMykKKyAgICAgICAgICAgIDQKKyAgICAgICAgICAgID4+PiBtb2NrKC04KQorICAgICAgICAgICAgLTcKKworICAgICAgICBTZXR0aW5nIGBzaWRlX2VmZmVjdGAgdG8gYE5vbmVgIGNsZWFycyBpdDoKKworICAgICAgICAgICAgPj4+IG0gPSBNb2NrKHNpZGVfZWZmZWN0PUtleUVycm9yLCByZXR1cm5fdmFsdWU9MykKKyAgICAgICAgICAgID4+PiBtKCkKKyAgICAgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgIEtleUVycm9yCisgICAgICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICAgICAgICAgID4+PiBtKCkKKyAgICAgICAgICAgIDMKKworCisgICAgLi4gYXR0cmlidXRlOjogY2FsbF9hcmdzCisKKyAgICAgICAgVGhpcyBpcyBlaXRoZXIgYE5vbmVgIChpZiB0aGUgbW9jayBoYXNuJ3QgYmVlbiBjYWxsZWQpLCBvciB0aGUKKyAgICAgICAgYXJndW1lbnRzIHRoYXQgdGhlIG1vY2sgd2FzIGxhc3QgY2FsbGVkIHdpdGguIFRoaXMgd2lsbCBiZSBpbiB0aGUKKyAgICAgICAgZm9ybSBvZiBhIHR1cGxlOiB0aGUgZmlyc3QgbWVtYmVyIGlzIGFueSBvcmRlcmVkIGFyZ3VtZW50cyB0aGUgbW9jaworICAgICAgICB3YXMgY2FsbGVkIHdpdGggKG9yIGFuIGVtcHR5IHR1cGxlKSBhbmQgdGhlIHNlY29uZCBtZW1iZXIgaXMgYW55CisgICAgICAgIGtleXdvcmQgYXJndW1lbnRzIChvciBhbiBlbXB0eSBkaWN0aW9uYXJ5KS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IHByaW50IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBOb25lCisgICAgICAgICAgICA+Pj4gbW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgICAgIGNhbGwoKQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzID09ICgpCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jaygzLCA0KQorICAgICAgICAgICAgPj4+IG1vY2suY2FsbF9hcmdzCisgICAgICAgICAgICBjYWxsKDMsIDQpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3MgPT0gKCgzLCA0KSwpCisgICAgICAgICAgICBUcnVlCisgICAgICAgICAgICA+Pj4gbW9jaygzLCA0LCA1LCBrZXk9J2Zpc2gnLCBuZXh0PSd3MDB0IScpCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3MKKyAgICAgICAgICAgIGNhbGwoMywgNCwgNSwga2V5PSdmaXNoJywgbmV4dD0ndzAwdCEnKQorCisgICAgICAgIGBjYWxsX2FyZ3NgLCBhbG9uZyB3aXRoIG1lbWJlcnMgb2YgdGhlIGxpc3RzIDphdHRyOmBjYWxsX2FyZ3NfbGlzdGAsCisgICAgICAgIDphdHRyOmBtZXRob2RfY2FsbHNgIGFuZCA6YXR0cjpgbW9ja19jYWxsc2AgYXJlIDpkYXRhOmBjYWxsYCBvYmplY3RzLgorICAgICAgICBUaGVzZSBhcmUgdHVwbGVzLCBzbyB0aGV5IGNhbiBiZSB1bnBhY2tlZCB0byBnZXQgYXQgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgYXJndW1lbnRzIGFuZCBtYWtlIG1vcmUgY29tcGxleCBhc3NlcnRpb25zLiBTZWUKKyAgICAgICAgOnJlZjpgY2FsbHMgYXMgdHVwbGVzIDxjYWxscy1hcy10dXBsZXM+YC4KKworCisgICAgLi4gYXR0cmlidXRlOjogY2FsbF9hcmdzX2xpc3QKKworICAgICAgICBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgdGhlIGNhbGxzIG1hZGUgdG8gdGhlIG1vY2sgb2JqZWN0IGluIHNlcXVlbmNlCisgICAgICAgIChzbyB0aGUgbGVuZ3RoIG9mIHRoZSBsaXN0IGlzIHRoZSBudW1iZXIgb2YgdGltZXMgaXQgaGFzIGJlZW4KKyAgICAgICAgY2FsbGVkKS4gQmVmb3JlIGFueSBjYWxscyBoYXZlIGJlZW4gbWFkZSBpdCBpcyBhbiBlbXB0eSBsaXN0LiBUaGUKKyAgICAgICAgOmRhdGE6YGNhbGxgIG9iamVjdCBjYW4gYmUgdXNlZCBmb3IgY29udmVuaWVudGx5IGNvbnN0cnVjdGluZyBsaXN0cyBvZgorICAgICAgICBjYWxscyB0byBjb21wYXJlIHdpdGggYGNhbGxfYXJnc19saXN0YC4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgICAgICAgICAgPj4+IG1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2soMywgNCkKKyAgICAgICAgICAgID4+PiBtb2NrKGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJykKKyAgICAgICAgICAgID4+PiBtb2NrLmNhbGxfYXJnc19saXN0CisgICAgICAgICAgICBbY2FsbCgpLCBjYWxsKDMsIDQpLCBjYWxsKGtleT0nZmlzaCcsIG5leHQ9J3cwMHQhJyldCisgICAgICAgICAgICA+Pj4gZXhwZWN0ZWQgPSBbKCksICgoMywgNCksKSwgKHsna2V5JzogJ2Zpc2gnLCAnbmV4dCc6ICd3MDB0ISd9LCldCisgICAgICAgICAgICA+Pj4gbW9jay5jYWxsX2FyZ3NfbGlzdCA9PSBleHBlY3RlZAorICAgICAgICAgICAgVHJ1ZQorCisgICAgICAgIE1lbWJlcnMgb2YgYGNhbGxfYXJnc19saXN0YCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IG1ldGhvZF9jYWxscworCisgICAgICAgIEFzIHdlbGwgYXMgdHJhY2tpbmcgY2FsbHMgdG8gdGhlbXNlbHZlcywgbW9ja3MgYWxzbyB0cmFjayBjYWxscyB0bworICAgICAgICBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLCBhbmQgKnRoZWlyKiBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2subWV0aG9kKCkKKyAgICAgICAgICAgIDxNb2NrIG5hbWU9J21vY2subWV0aG9kKCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2sucHJvcGVydHkubWV0aG9kLmF0dHJpYnV0ZSgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2RfY2FsbHMKKyAgICAgICAgICAgIFtjYWxsLm1ldGhvZCgpLCBjYWxsLnByb3BlcnR5Lm1ldGhvZC5hdHRyaWJ1dGUoKV0KKworICAgICAgICBNZW1iZXJzIG9mIGBtZXRob2RfY2FsbHNgIGFyZSA6ZGF0YTpgY2FsbGAgb2JqZWN0cy4gVGhlc2UgY2FuIGJlCisgICAgICAgIHVucGFja2VkIGFzIHR1cGxlcyB0byBnZXQgYXQgdGhlIGluZGl2aWR1YWwgYXJndW1lbnRzLiBTZWUKKyAgICAgICAgOnJlZjpgY2FsbHMgYXMgdHVwbGVzIDxjYWxscy1hcy10dXBsZXM+YC4KKworCisgICAgLi4gYXR0cmlidXRlOjogbW9ja19jYWxscworCisgICAgICAgIGBtb2NrX2NhbGxzYCByZWNvcmRzICphbGwqIGNhbGxzIHRvIHRoZSBtb2NrIG9iamVjdCwgaXRzIG1ldGhvZHMsIG1hZ2ljCisgICAgICAgIG1ldGhvZHMgKmFuZCogcmV0dXJuIHZhbHVlIG1vY2tzLgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICAgICA+Pj4gcmVzdWx0ID0gbW9jaygxLCAyLCAzKQorICAgICAgICAgICAgPj4+IG1vY2suZmlyc3QoYT0zKQorICAgICAgICAgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZpcnN0KCknIGlkPScuLi4nPgorICAgICAgICAgICAgPj4+IG1vY2suc2Vjb25kKCkKKyAgICAgICAgICAgIDxNYWdpY01vY2sgbmFtZT0nbW9jay5zZWNvbmQoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gaW50KG1vY2spCisgICAgICAgICAgICAxCisgICAgICAgICAgICA+Pj4gcmVzdWx0KDEpCisgICAgICAgICAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKSgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBleHBlY3RlZCA9IFtjYWxsKDEsIDIsIDMpLCBjYWxsLmZpcnN0KGE9MyksIGNhbGwuc2Vjb25kKCksCisgICAgICAgICAgICAuLi4gY2FsbC5fX2ludF9fKCksIGNhbGwoKSgxKV0KKyAgICAgICAgICAgID4+PiBtb2NrLm1vY2tfY2FsbHMgPT0gZXhwZWN0ZWQKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBNZW1iZXJzIG9mIGBtb2NrX2NhbGxzYCBhcmUgOmRhdGE6YGNhbGxgIG9iamVjdHMuIFRoZXNlIGNhbiBiZQorICAgICAgICB1bnBhY2tlZCBhcyB0dXBsZXMgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cy4gU2VlCisgICAgICAgIDpyZWY6YGNhbGxzIGFzIHR1cGxlcyA8Y2FsbHMtYXMtdHVwbGVzPmAuCisKKworICAgIC4uIGF0dHJpYnV0ZTo6IF9fY2xhc3NfXworCisgICAgICAgIE5vcm1hbGx5IHRoZSBgX19jbGFzc19fYCBhdHRyaWJ1dGUgb2YgYW4gb2JqZWN0IHdpbGwgcmV0dXJuIGl0cyB0eXBlLgorICAgICAgICBGb3IgYSBtb2NrIG9iamVjdCB3aXRoIGEgYHNwZWNgIGBfX2NsYXNzX19gIHJldHVybnMgdGhlIHNwZWMgY2xhc3MKKyAgICAgICAgaW5zdGVhZC4gVGhpcyBhbGxvd3MgbW9jayBvYmplY3RzIHRvIHBhc3MgYGlzaW5zdGFuY2VgIHRlc3RzIGZvciB0aGUKKyAgICAgICAgb2JqZWN0IHRoZXkgYXJlIHJlcGxhY2luZyAvIG1hc3F1ZXJhZGluZyBhczoKKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKHNwZWM9MykKKyAgICAgICAgICAgID4+PiBpc2luc3RhbmNlKG1vY2ssIGludCkKKyAgICAgICAgICAgIFRydWUKKworICAgICAgICBgX19jbGFzc19fYCBpcyBhc3NpZ25hYmxlIHRvLCB0aGlzIGFsbG93cyBhIG1vY2sgdG8gcGFzcyBhbgorICAgICAgICBgaXNpbnN0YW5jZWAgY2hlY2sgd2l0aG91dCBmb3JjaW5nIHlvdSB0byB1c2UgYSBzcGVjOgorCisgICAgICAgICAgICA+Pj4gbW9jayA9IE1vY2soKQorICAgICAgICAgICAgPj4+IG1vY2suX19jbGFzc19fID0gZGljdAorICAgICAgICAgICAgPj4+IGlzaW5zdGFuY2UobW9jaywgZGljdCkKKyAgICAgICAgICAgIFRydWUKKworLi4gY2xhc3M6OiBOb25DYWxsYWJsZU1vY2soc3BlYz1Ob25lLCB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsICoqa3dhcmdzKQorCisgICAgQSBub24tY2FsbGFibGUgdmVyc2lvbiBvZiBgTW9ja2AuIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUKKyAgICBtZWFuaW5nIG9mIGBNb2NrYCwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGByZXR1cm5fdmFsdWVgIGFuZCBgc2lkZV9lZmZlY3RgCisgICAgd2hpY2ggaGF2ZSBubyBtZWFuaW5nIG9uIGEgbm9uLWNhbGxhYmxlIG1vY2suCisKK01vY2sgb2JqZWN0cyB0aGF0IHVzZSBhIGNsYXNzIG9yIGFuIGluc3RhbmNlIGFzIGEgYHNwZWNgIG9yIGBzcGVjX3NldGAgYXJlIGFibGUKK3RvIHBhc3MgYGlzaW50YW5jZWAgdGVzdHM6CisKKyAgICA+Pj4gbW9jayA9IE1vY2soc3BlYz1Tb21lQ2xhc3MpCisgICAgPj4+IGlzaW5zdGFuY2UobW9jaywgU29tZUNsYXNzKQorICAgIFRydWUKKyAgICA+Pj4gbW9jayA9IE1vY2soc3BlY19zZXQ9U29tZUNsYXNzKCkpCisgICAgPj4+IGlzaW5zdGFuY2UobW9jaywgU29tZUNsYXNzKQorICAgIFRydWUKKworVGhlIGBNb2NrYCBjbGFzc2VzIGhhdmUgc3VwcG9ydCBmb3IgbW9ja2luZyBtYWdpYyBtZXRob2RzLiBTZWUgOnJlZjpgbWFnaWMKK21ldGhvZHMgPG1hZ2ljLW1ldGhvZHM+YCBmb3IgdGhlIGZ1bGwgZGV0YWlscy4KKworVGhlIG1vY2sgY2xhc3NlcyBhbmQgdGhlIDpmdW5jOmBwYXRjaGAgZGVjb3JhdG9ycyBhbGwgdGFrZSBhcmJpdHJhcnkga2V5d29yZAorYXJndW1lbnRzIGZvciBjb25maWd1cmF0aW9uLiBGb3IgdGhlIGBwYXRjaGAgZGVjb3JhdG9ycyB0aGUga2V5d29yZHMgYXJlCitwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBtb2NrIGJlaW5nIGNyZWF0ZWQuIFRoZSBrZXl3b3JkIGFyZ3VtZW50cworYXJlIGZvciBjb25maWd1cmluZyBhdHRyaWJ1dGVzIG9mIHRoZSBtb2NrOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKGF0dHJpYnV0ZT0zLCBvdGhlcj0nZmlzaCcpCisgICAgICAgID4+PiBtLmF0dHJpYnV0ZQorICAgICAgICAzCisgICAgICAgID4+PiBtLm90aGVyCisgICAgICAgICdmaXNoJworCitUaGUgcmV0dXJuIHZhbHVlIGFuZCBzaWRlIGVmZmVjdCBvZiBjaGlsZCBtb2NrcyBjYW4gYmUgc2V0IGluIHRoZSBzYW1lIHdheSwKK3VzaW5nIGRvdHRlZCBub3RhdGlvbi4gQXMgeW91IGNhbid0IHVzZSBkb3R0ZWQgbmFtZXMgZGlyZWN0bHkgaW4gYSBjYWxsIHlvdQoraGF2ZSB0byBjcmVhdGUgYSBkaWN0aW9uYXJ5IGFuZCB1bnBhY2sgaXQgdXNpbmcgYCoqYDoKKworICAgID4+PiBhdHRycyA9IHsnbWV0aG9kLnJldHVybl92YWx1ZSc6IDMsICdvdGhlci5zaWRlX2VmZmVjdCc6IEtleUVycm9yfQorICAgID4+PiBtb2NrID0gTW9jayhzb21lX2F0dHJpYnV0ZT0nZWdncycsICoqYXR0cnMpCisgICAgPj4+IG1vY2suc29tZV9hdHRyaWJ1dGUKKyAgICAnZWdncycKKyAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgIDMKKyAgICA+Pj4gbW9jay5vdGhlcigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgS2V5RXJyb3IKKworCisuLiBjbGFzczo6IFByb3BlcnR5TW9jaygqYXJncywgKiprd2FyZ3MpCisKKyAgIEEgbW9jayBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgcHJvcGVydHksIG9yIG90aGVyIGRlc2NyaXB0b3IsIG9uIGEgY2xhc3MuCisgICBgUHJvcGVydHlNb2NrYCBwcm92aWRlcyBgX19nZXRfX2AgYW5kIGBfX3NldF9fYCBtZXRob2RzIHNvIHlvdSBjYW4gc3BlY2lmeQorICAgYSByZXR1cm4gdmFsdWUgd2hlbiBpdCBpcyBmZXRjaGVkLgorCisgICBGZXRjaGluZyBhIGBQcm9wZXJ0eU1vY2tgIGluc3RhbmNlIGZyb20gYW4gb2JqZWN0IGNhbGxzIHRoZSBtb2NrLCB3aXRoCisgICBubyBhcmdzLiBTZXR0aW5nIGl0IGNhbGxzIHRoZSBtb2NrIHdpdGggdGhlIHZhbHVlIGJlaW5nIHNldC4KKworICAgICAgICA+Pj4gY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgIC4uLiAgICAgQHByb3BlcnR5CisgICAgICAgIC4uLiAgICAgZGVmIGZvbyhzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgcmV0dXJuICdzb21ldGhpbmcnCisgICAgICAgIC4uLiAgICAgQGZvby5zZXR0ZXIKKyAgICAgICAgLi4uICAgICBkZWYgZm9vKHNlbGYsIHZhbHVlKToKKyAgICAgICAgLi4uICAgICAgICAgcGFzcworICAgICAgICAuLi4KKyAgICAgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLkZvby5mb28nLCBuZXdfY2FsbGFibGU9UHJvcGVydHlNb2NrKSBhcyBtb2NrX2ZvbzoKKyAgICAgICAgLi4uICAgICBtb2NrX2Zvby5yZXR1cm5fdmFsdWUgPSAnbW9ja2l0eS1tb2NrJworICAgICAgICAuLi4gICAgIHRoaXNfZm9vID0gRm9vKCkKKyAgICAgICAgLi4uICAgICBwcmludCB0aGlzX2Zvby5mb28KKyAgICAgICAgLi4uICAgICB0aGlzX2Zvby5mb28gPSA2CisgICAgICAgIC4uLgorICAgICAgICBtb2NraXR5LW1vY2sKKyAgICAgICAgPj4+IG1vY2tfZm9vLm1vY2tfY2FsbHMKKyAgICAgICAgW2NhbGwoKSwgY2FsbCg2KV0KKworQmVjYXVzZSBvZiB0aGUgd2F5IG1vY2sgYXR0cmlidXRlcyBhcmUgc3RvcmVkIHlvdSBjYW4ndCBkaXJlY3RseSBhdHRhY2ggYQorYFByb3BlcnR5TW9ja2AgdG8gYSBtb2NrIG9iamVjdC4gSW5zdGVhZCB5b3UgY2FuIGF0dGFjaCBpdCB0byB0aGUgbW9jayB0eXBlCitvYmplY3Q6OgorCisgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgID4+PiBwID0gUHJvcGVydHlNb2NrKHJldHVybl92YWx1ZT0zKQorICAgID4+PiB0eXBlKG0pLmZvbyA9IHAKKyAgICA+Pj4gbS5mb28KKyAgICAzCisgICAgPj4+IHAuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisKK0NhbGxpbmcKK35+fn5+fn4KKworTW9jayBvYmplY3RzIGFyZSBjYWxsYWJsZS4gVGhlIGNhbGwgd2lsbCByZXR1cm4gdGhlIHZhbHVlIHNldCBhcyB0aGUKKzphdHRyOmB+TW9jay5yZXR1cm5fdmFsdWVgIGF0dHJpYnV0ZS4gVGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlIGlzIGEgbmV3IE1vY2sKK29iamVjdDsgaXQgaXMgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSB0aGUgcmV0dXJuIHZhbHVlIGlzIGFjY2Vzc2VkIChlaXRoZXIKK2V4cGxpY2l0bHkgb3IgYnkgY2FsbGluZyB0aGUgTW9jaykgLSBidXQgaXQgaXMgc3RvcmVkIGFuZCB0aGUgc2FtZSBvbmUKK3JldHVybmVkIGVhY2ggdGltZS4KKworQ2FsbHMgbWFkZSB0byB0aGUgb2JqZWN0IHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlIGF0dHJpYnV0ZXMKK2xpa2UgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc2AgYW5kIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NfbGlzdGAuCisKK0lmIDphdHRyOmB+TW9jay5zaWRlX2VmZmVjdGAgaXMgc2V0IHRoZW4gaXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIGNhbGwgaGFzCitiZWVuIHJlY29yZGVkLCBzbyBpZiBgc2lkZV9lZmZlY3RgIHJhaXNlcyBhbiBleGNlcHRpb24gdGhlIGNhbGwgaXMgc3RpbGwKK3JlY29yZGVkLgorCitUaGUgc2ltcGxlc3Qgd2F5IHRvIG1ha2UgYSBtb2NrIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIGNhbGxlZCBpcyB0byBtYWtlCis6YXR0cjpgfk1vY2suc2lkZV9lZmZlY3RgIGFuIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZToKKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1JbmRleEVycm9yKQorICAgICAgICA+Pj4gbSgxLCAyLCAzKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIEluZGV4RXJyb3IKKyAgICAgICAgPj4+IG0ubW9ja19jYWxscworICAgICAgICBbY2FsbCgxLCAyLCAzKV0KKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBLZXlFcnJvcignQmFuZyEnKQorICAgICAgICA+Pj4gbSgndHdvJywgJ3RocmVlJywgJ2ZvdXInKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAgLi4uCisgICAgICAgIEtleUVycm9yOiAnQmFuZyEnCisgICAgICAgID4+PiBtLm1vY2tfY2FsbHMKKyAgICAgICAgW2NhbGwoMSwgMiwgMyksIGNhbGwoJ3R3bycsICd0aHJlZScsICdmb3VyJyldCisKK0lmIGBzaWRlX2VmZmVjdGAgaXMgYSBmdW5jdGlvbiB0aGVuIHdoYXRldmVyIHRoYXQgZnVuY3Rpb24gcmV0dXJucyBpcyB3aGF0CitjYWxscyB0byB0aGUgbW9jayByZXR1cm4uIFRoZSBgc2lkZV9lZmZlY3RgIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZQorc2FtZSBhcmd1bWVudHMgYXMgdGhlIG1vY2suIFRoaXMgYWxsb3dzIHlvdSB0byB2YXJ5IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCitjYWxsIGR5bmFtaWNhbGx5LCBiYXNlZCBvbiB0aGUgaW5wdXQ6CisKKyAgICAgICAgPj4+IGRlZiBzaWRlX2VmZmVjdCh2YWx1ZSk6CisgICAgICAgIC4uLiAgICAgcmV0dXJuIHZhbHVlICsgMQorICAgICAgICAuLi4KKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9c2lkZV9lZmZlY3QpCisgICAgICAgID4+PiBtKDEpCisgICAgICAgIDIKKyAgICAgICAgPj4+IG0oMikKKyAgICAgICAgMworICAgICAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgICAgIFtjYWxsKDEpLCBjYWxsKDIpXQorCitJZiB5b3Ugd2FudCB0aGUgbW9jayB0byBzdGlsbCByZXR1cm4gdGhlIGRlZmF1bHQgcmV0dXJuIHZhbHVlIChhIG5ldyBtb2NrKSwgb3IKK2FueSBzZXQgcmV0dXJuIHZhbHVlLCB0aGVuIHRoZXJlIGFyZSB0d28gd2F5cyBvZiBkb2luZyB0aGlzLiBFaXRoZXIgcmV0dXJuCitgbW9jay5yZXR1cm5fdmFsdWVgIGZyb20gaW5zaWRlIGBzaWRlX2VmZmVjdGAsIG9yIHJldHVybiA6ZGF0YTpgREVGQVVMVGA6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soKQorICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIC4uLiAgICAgcmV0dXJuIG0ucmV0dXJuX3ZhbHVlCisgICAgICAgIC4uLgorICAgICAgICA+Pj4gbS5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0CisgICAgICAgID4+PiBtLnJldHVybl92YWx1ZSA9IDMKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzCisgICAgICAgID4+PiBkZWYgc2lkZV9lZmZlY3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgLi4uICAgICByZXR1cm4gREVGQVVMVAorICAgICAgICAuLi4KKyAgICAgICAgPj4+IG0uc2lkZV9lZmZlY3QgPSBzaWRlX2VmZmVjdAorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDMKKworVG8gcmVtb3ZlIGEgYHNpZGVfZWZmZWN0YCwgYW5kIHJldHVybiB0byB0aGUgZGVmYXVsdCBiZWhhdmlvdXIsIHNldCB0aGUKK2BzaWRlX2VmZmVjdGAgdG8gYE5vbmVgOgorCisgICAgICAgID4+PiBtID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT02KQorICAgICAgICA+Pj4gZGVmIHNpZGVfZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIC4uLiAgICAgcmV0dXJuIDMKKyAgICAgICAgLi4uCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAzCisgICAgICAgID4+PiBtLnNpZGVfZWZmZWN0ID0gTm9uZQorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDYKKworVGhlIGBzaWRlX2VmZmVjdGAgY2FuIGFsc28gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC4gUmVwZWF0ZWQgY2FsbHMgdG8gdGhlIG1vY2sKK3dpbGwgcmV0dXJuIHZhbHVlcyBmcm9tIHRoZSBpdGVyYWJsZSAodW50aWwgdGhlIGl0ZXJhYmxlIGlzIGV4aGF1c3RlZCBhbmQKK2EgYFN0b3BJdGVyYXRpb25gIGlzIHJhaXNlZCk6CisKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9WzEsIDIsIDNdKQorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDEKKyAgICAgICAgPj4+IG0oKQorICAgICAgICAyCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMworICAgICAgICA+Pj4gbSgpCisgICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4KKyAgICAgICAgU3RvcEl0ZXJhdGlvbgorCitJZiBhbnkgbWVtYmVycyBvZiB0aGUgaXRlcmFibGUgYXJlIGV4Y2VwdGlvbnMgdGhleSB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkIG9mCityZXR1cm5lZDo6CisKKyAgICAgICAgPj4+IGl0ZXJhYmxlID0gKDMzLCBWYWx1ZUVycm9yLCA2NikKKyAgICAgICAgPj4+IG0gPSBNYWdpY01vY2soc2lkZV9lZmZlY3Q9aXRlcmFibGUpCisgICAgICAgID4+PiBtKCkKKyAgICAgICAgMzMKKyAgICAgICAgPj4+IG0oKQorICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAgICAuLi4KKyAgICAgICAgVmFsdWVFcnJvcgorICAgICAgICA+Pj4gbSgpCisgICAgICAgIDY2CisKKworLi4gX2RlbGV0aW5nLWF0dHJpYnV0ZXM6CisKK0RlbGV0aW5nIEF0dHJpYnV0ZXMKK35+fn5+fn5+fn5+fn5+fn5+fn4KKworTW9jayBvYmplY3RzIGNyZWF0ZSBhdHRyaWJ1dGVzIG9uIGRlbWFuZC4gVGhpcyBhbGxvd3MgdGhlbSB0byBwcmV0ZW5kIHRvIGJlCitvYmplY3RzIG9mIGFueSB0eXBlLgorCitZb3UgbWF5IHdhbnQgYSBtb2NrIG9iamVjdCB0byByZXR1cm4gYEZhbHNlYCB0byBhIGBoYXNhdHRyYCBjYWxsLCBvciByYWlzZSBhbgorYEF0dHJpYnV0ZUVycm9yYCB3aGVuIGFuIGF0dHJpYnV0ZSBpcyBmZXRjaGVkLiBZb3UgY2FuIGRvIHRoaXMgYnkgcHJvdmlkaW5nCithbiBvYmplY3QgYXMgYSBgc3BlY2AgZm9yIGEgbW9jaywgYnV0IHRoYXQgaXNuJ3QgYWx3YXlzIGNvbnZlbmllbnQuCisKK1lvdSAiYmxvY2siIGF0dHJpYnV0ZXMgYnkgZGVsZXRpbmcgdGhlbS4gT25jZSBkZWxldGVkLCBhY2Nlc3NpbmcgYW4gYXR0cmlidXRlCit3aWxsIHJhaXNlIGFuIGBBdHRyaWJ1dGVFcnJvcmAuCisKKyAgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICAgPj4+IGhhc2F0dHIobW9jaywgJ20nKQorICAgIFRydWUKKyAgICA+Pj4gZGVsIG1vY2subQorICAgID4+PiBoYXNhdHRyKG1vY2ssICdtJykKKyAgICBGYWxzZQorICAgID4+PiBkZWwgbW9jay5mCisgICAgPj4+IG1vY2suZgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IGYKKworCitBdHRhY2hpbmcgTW9ja3MgYXMgQXR0cmlidXRlcworfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworV2hlbiB5b3UgYXR0YWNoIGEgbW9jayBhcyBhbiBhdHRyaWJ1dGUgb2YgYW5vdGhlciBtb2NrIChvciBhcyB0aGUgcmV0dXJuCit2YWx1ZSkgaXQgYmVjb21lcyBhICJjaGlsZCIgb2YgdGhhdCBtb2NrLiBDYWxscyB0byB0aGUgY2hpbGQgYXJlIHJlY29yZGVkIGluCit0aGUgOmF0dHI6YH5Nb2NrLm1ldGhvZF9jYWxsc2AgYW5kIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIG9mIHRoZQorcGFyZW50LiBUaGlzIGlzIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgY2hpbGQgbW9ja3MgYW5kIHRoZW4gYXR0YWNoaW5nIHRoZW0gdG8KK3RoZSBwYXJlbnQsIG9yIGZvciBhdHRhY2hpbmcgbW9ja3MgdG8gYSBwYXJlbnQgdGhhdCByZWNvcmRzIGFsbCBjYWxscyB0byB0aGUKK2NoaWxkcmVuIGFuZCBhbGxvd3MgeW91IHRvIG1ha2UgYXNzZXJ0aW9ucyBhYm91dCB0aGUgb3JkZXIgb2YgY2FsbHMgYmV0d2VlbgorbW9ja3M6CisKKyAgICA+Pj4gcGFyZW50ID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gY2hpbGQxID0gTWFnaWNNb2NrKHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBjaGlsZDIgPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IHBhcmVudC5jaGlsZDEgPSBjaGlsZDEKKyAgICA+Pj4gcGFyZW50LmNoaWxkMiA9IGNoaWxkMgorICAgID4+PiBjaGlsZDEoMSkKKyAgICA+Pj4gY2hpbGQyKDIpCisgICAgPj4+IHBhcmVudC5tb2NrX2NhbGxzCisgICAgW2NhbGwuY2hpbGQxKDEpLCBjYWxsLmNoaWxkMigyKV0KKworVGhlIGV4Y2VwdGlvbiB0byB0aGlzIGlzIGlmIHRoZSBtb2NrIGhhcyBhIG5hbWUuIFRoaXMgYWxsb3dzIHlvdSB0byBwcmV2ZW50Cit0aGUgInBhcmVudGluZyIgaWYgZm9yIHNvbWUgcmVhc29uIHlvdSBkb24ndCB3YW50IGl0IHRvIGhhcHBlbi4KKworICAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbm90X2FfY2hpbGQgPSBNYWdpY01vY2sobmFtZT0nbm90LWEtY2hpbGQnKQorICAgID4+PiBtb2NrLmF0dHJpYnV0ZSA9IG5vdF9hX2NoaWxkCisgICAgPj4+IG1vY2suYXR0cmlidXRlKCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J25vdC1hLWNoaWxkKCknIGlkPScuLi4nPgorICAgID4+PiBtb2NrLm1vY2tfY2FsbHMKKyAgICBbXQorCitNb2NrcyBjcmVhdGVkIGZvciB5b3UgYnkgOmZ1bmM6YHBhdGNoYCBhcmUgYXV0b21hdGljYWxseSBnaXZlbiBuYW1lcy4gVG8KK2F0dGFjaCBtb2NrcyB0aGF0IGhhdmUgbmFtZXMgdG8gYSBwYXJlbnQgeW91IHVzZSB0aGUgOm1ldGg6YH5Nb2NrLmF0dGFjaF9tb2NrYAorbWV0aG9kOgorCisgICAgPj4+IHRoaW5nMSA9IG9iamVjdCgpCisgICAgPj4+IHRoaW5nMiA9IG9iamVjdCgpCisgICAgPj4+IHBhcmVudCA9IE1hZ2ljTW9jaygpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLnRoaW5nMScsIHJldHVybl92YWx1ZT1Ob25lKSBhcyBjaGlsZDE6CisgICAgLi4uICAgICB3aXRoIHBhdGNoKCdfX21haW5fXy50aGluZzInLCByZXR1cm5fdmFsdWU9Tm9uZSkgYXMgY2hpbGQyOgorICAgIC4uLiAgICAgICAgIHBhcmVudC5hdHRhY2hfbW9jayhjaGlsZDEsICdjaGlsZDEnKQorICAgIC4uLiAgICAgICAgIHBhcmVudC5hdHRhY2hfbW9jayhjaGlsZDIsICdjaGlsZDInKQorICAgIC4uLiAgICAgICAgIGNoaWxkMSgnb25lJykKKyAgICAuLi4gICAgICAgICBjaGlsZDIoJ3R3bycpCisgICAgLi4uCisgICAgPj4+IHBhcmVudC5tb2NrX2NhbGxzCisgICAgW2NhbGwuY2hpbGQxKCdvbmUnKSwgY2FsbC5jaGlsZDIoJ3R3bycpXQorCisKKy4uIFsjXSBUaGUgb25seSBleGNlcHRpb25zIGFyZSBtYWdpYyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzICh0aG9zZSB0aGF0IGhhdmUKKyAgICAgICBsZWFkaW5nIGFuZCB0cmFpbGluZyBkb3VibGUgdW5kZXJzY29yZXMpLiBNb2NrIGRvZXNuJ3QgY3JlYXRlIHRoZXNlIGJ1dAorICAgICAgIGluc3RlYWQgb2YgcmFpc2VzIGFuIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBpbnRlcnByZXRlcgorICAgICAgIHdpbGwgb2Z0ZW4gaW1wbGljaXRseSByZXF1ZXN0IHRoZXNlIG1ldGhvZHMsIGFuZCBnZXRzICp2ZXJ5KiBjb25mdXNlZCB0bworICAgICAgIGdldCBhIG5ldyBNb2NrIG9iamVjdCB3aGVuIGl0IGV4cGVjdHMgYSBtYWdpYyBtZXRob2QuIElmIHlvdSBuZWVkIG1hZ2ljCisgICAgICAgbWV0aG9kIHN1cHBvcnQgc2VlIDpyZWY6YG1hZ2ljIG1ldGhvZHMgPG1hZ2ljLW1ldGhvZHM+YC4KKworCitUaGUgcGF0Y2hlcnMKKz09PT09PT09PT09PQorCitUaGUgcGF0Y2ggZGVjb3JhdG9ycyBhcmUgdXNlZCBmb3IgcGF0Y2hpbmcgb2JqZWN0cyBvbmx5IHdpdGhpbiB0aGUgc2NvcGUgb2YKK3RoZSBmdW5jdGlvbiB0aGV5IGRlY29yYXRlLiBUaGV5IGF1dG9tYXRpY2FsbHkgaGFuZGxlIHRoZSB1bnBhdGNoaW5nIGZvciB5b3UsCitldmVuIGlmIGV4Y2VwdGlvbnMgYXJlIHJhaXNlZC4gQWxsIG9mIHRoZXNlIGZ1bmN0aW9ucyBjYW4gYWxzbyBiZSB1c2VkIGluIHdpdGgKK3N0YXRlbWVudHMgb3IgYXMgY2xhc3MgZGVjb3JhdG9ycy4KKworCitwYXRjaAorLS0tLS0KKworLi4gbm90ZTo6CisKKyAgICBgcGF0Y2hgIGlzIHN0cmFpZ2h0Zm9yd2FyZCB0byB1c2UuIFRoZSBrZXkgaXMgdG8gZG8gdGhlIHBhdGNoaW5nIGluIHRoZQorICAgIHJpZ2h0IG5hbWVzcGFjZS4gU2VlIHRoZSBzZWN0aW9uIGB3aGVyZSB0byBwYXRjaGBfLgorCisuLiBmdW5jdGlvbjo6IHBhdGNoKHRhcmdldCwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLCBzcGVjX3NldD1Ob25lLCBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MpCisKKyAgICBgcGF0Y2hgIGFjdHMgYXMgYSBmdW5jdGlvbiBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBJbnNpZGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uIG9yIHdpdGggc3RhdGVtZW50LCB0aGUgYHRhcmdldGAKKyAgICBpcyBwYXRjaGVkIHdpdGggYSBgbmV3YCBvYmplY3QuIFdoZW4gdGhlIGZ1bmN0aW9uL3dpdGggc3RhdGVtZW50IGV4aXRzCisgICAgdGhlIHBhdGNoIGlzIHVuZG9uZS4KKworICAgIElmIGBuZXdgIGlzIG9taXR0ZWQsIHRoZW4gdGhlIHRhcmdldCBpcyByZXBsYWNlZCB3aXRoIGEKKyAgICA6Y2xhc3M6YE1hZ2ljTW9ja2AuIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGRlY29yYXRvciBhbmQgYG5ld2AgaXMKKyAgICBvbWl0dGVkLCB0aGUgY3JlYXRlZCBtb2NrIGlzIHBhc3NlZCBpbiBhcyBhbiBleHRyYSBhcmd1bWVudCB0byB0aGUKKyAgICBkZWNvcmF0ZWQgZnVuY3Rpb24uIElmIGBwYXRjaGAgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0aGUgY3JlYXRlZAorICAgIG1vY2sgaXMgcmV0dXJuZWQgYnkgdGhlIGNvbnRleHQgbWFuYWdlci4KKworICAgIGB0YXJnZXRgIHNob3VsZCBiZSBhIHN0cmluZyBpbiB0aGUgZm9ybSBgJ3BhY2thZ2UubW9kdWxlLkNsYXNzTmFtZSdgLiBUaGUKKyAgICBgdGFyZ2V0YCBpcyBpbXBvcnRlZCBhbmQgdGhlIHNwZWNpZmllZCBvYmplY3QgcmVwbGFjZWQgd2l0aCB0aGUgYG5ld2AKKyAgICBvYmplY3QsIHNvIHRoZSBgdGFyZ2V0YCBtdXN0IGJlIGltcG9ydGFibGUgZnJvbSB0aGUgZW52aXJvbm1lbnQgeW91IGFyZQorICAgIGNhbGxpbmcgYHBhdGNoYCBmcm9tLiBUaGUgdGFyZ2V0IGlzIGltcG9ydGVkIHdoZW4gdGhlIGRlY29yYXRlZCBmdW5jdGlvbgorICAgIGlzIGV4ZWN1dGVkLCBub3QgYXQgZGVjb3JhdGlvbiB0aW1lLgorCisgICAgVGhlIGBzcGVjYCBhbmQgYHNwZWNfc2V0YCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBgTWFnaWNNb2NrYAorICAgIGlmIHBhdGNoIGlzIGNyZWF0aW5nIG9uZSBmb3IgeW91LgorCisgICAgSW4gYWRkaXRpb24geW91IGNhbiBwYXNzIGBzcGVjPVRydWVgIG9yIGBzcGVjX3NldD1UcnVlYCwgd2hpY2ggY2F1c2VzCisgICAgcGF0Y2ggdG8gcGFzcyBpbiB0aGUgb2JqZWN0IGJlaW5nIG1vY2tlZCBhcyB0aGUgc3BlYy9zcGVjX3NldCBvYmplY3QuCisKKyAgICBgbmV3X2NhbGxhYmxlYCBhbGxvd3MgeW91IHRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgY2xhc3MsIG9yIGNhbGxhYmxlIG9iamVjdCwKKyAgICB0aGF0IHdpbGwgYmUgY2FsbGVkIHRvIGNyZWF0ZSB0aGUgYG5ld2Agb2JqZWN0LiBCeSBkZWZhdWx0IGBNYWdpY01vY2tgIGlzCisgICAgdXNlZC4KKworICAgIEEgbW9yZSBwb3dlcmZ1bCBmb3JtIG9mIGBzcGVjYCBpcyBgYXV0b3NwZWNgLiBJZiB5b3Ugc2V0IGBhdXRvc3BlYz1UcnVlYAorICAgIHRoZW4gdGhlIG1vY2sgd2l0aCBiZSBjcmVhdGVkIHdpdGggYSBzcGVjIGZyb20gdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4KKyAgICBBbGwgYXR0cmlidXRlcyBvZiB0aGUgbW9jayB3aWxsIGFsc28gaGF2ZSB0aGUgc3BlYyBvZiB0aGUgY29ycmVzcG9uZGluZworICAgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0IGJlaW5nIHJlcGxhY2VkLiBNZXRob2RzIGFuZCBmdW5jdGlvbnMgYmVpbmcgbW9ja2VkCisgICAgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkIGFuZCB3aWxsIHJhaXNlIGEgYFR5cGVFcnJvcmAgaWYgdGhleSBhcmUKKyAgICBjYWxsZWQgd2l0aCB0aGUgd3Jvbmcgc2lnbmF0dXJlLiBGb3IgbW9ja3MKKyAgICByZXBsYWNpbmcgYSBjbGFzcywgdGhlaXIgcmV0dXJuIHZhbHVlICh0aGUgJ2luc3RhbmNlJykgd2lsbCBoYXZlIHRoZSBzYW1lCisgICAgc3BlYyBhcyB0aGUgY2xhc3MuIFNlZSB0aGUgOmZ1bmM6YGNyZWF0ZV9hdXRvc3BlY2AgZnVuY3Rpb24gYW5kCisgICAgOnJlZjpgYXV0by1zcGVjY2luZ2AuCisKKyAgICBJbnN0ZWFkIG9mIGBhdXRvc3BlYz1UcnVlYCB5b3UgY2FuIHBhc3MgYGF1dG9zcGVjPXNvbWVfb2JqZWN0YCB0byB1c2UgYW4KKyAgICBhcmJpdHJhcnkgb2JqZWN0IGFzIHRoZSBzcGVjIGluc3RlYWQgb2YgdGhlIG9uZSBiZWluZyByZXBsYWNlZC4KKworICAgIEJ5IGRlZmF1bHQgYHBhdGNoYCB3aWxsIGZhaWwgdG8gcmVwbGFjZSBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QuIElmCisgICAgeW91IHBhc3MgaW4gYGNyZWF0ZT1UcnVlYCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdCwgcGF0Y2ggd2lsbAorICAgIGNyZWF0ZSB0aGUgYXR0cmlidXRlIGZvciB5b3Ugd2hlbiB0aGUgcGF0Y2hlZCBmdW5jdGlvbiBpcyBjYWxsZWQsIGFuZAorICAgIGRlbGV0ZSBpdCBhZ2FpbiBhZnRlcndhcmRzLiBUaGlzIGlzIHVzZWZ1bCBmb3Igd3JpdGluZyB0ZXN0cyBhZ2FpbnN0CisgICAgYXR0cmlidXRlcyB0aGF0IHlvdXIgcHJvZHVjdGlvbiBjb2RlIGNyZWF0ZXMgYXQgcnVudGltZS4gSXQgaXMgb2ZmIGJ5IGJ5CisgICAgZGVmYXVsdCBiZWNhdXNlIGl0IGNhbiBiZSBkYW5nZXJvdXMuIFdpdGggaXQgc3dpdGNoZWQgb24geW91IGNhbiB3cml0ZQorICAgIHBhc3NpbmcgdGVzdHMgYWdhaW5zdCBBUElzIHRoYXQgZG9uJ3QgYWN0dWFsbHkgZXhpc3QhCisKKyAgICBQYXRjaCBjYW4gYmUgdXNlZCBhcyBhIGBUZXN0Q2FzZWAgY2xhc3MgZGVjb3JhdG9yLiBJdCB3b3JrcyBieQorICAgIGRlY29yYXRpbmcgZWFjaCB0ZXN0IG1ldGhvZCBpbiB0aGUgY2xhc3MuIFRoaXMgcmVkdWNlcyB0aGUgYm9pbGVycGxhdGUKKyAgICBjb2RlIHdoZW4geW91ciB0ZXN0IG1ldGhvZHMgc2hhcmUgYSBjb21tb24gcGF0Y2hpbmdzIHNldC4gYHBhdGNoYCBmaW5kcworICAgIHRlc3RzIGJ5IGxvb2tpbmcgZm9yIG1ldGhvZCBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggYHBhdGNoLlRFU1RfUFJFRklYYC4KKyAgICBCeSBkZWZhdWx0IHRoaXMgaXMgYHRlc3RgLCB3aGljaCBtYXRjaGVzIHRoZSB3YXkgYHVuaXR0ZXN0YCBmaW5kcyB0ZXN0cy4KKyAgICBZb3UgY2FuIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgcHJlZml4IGJ5IHNldHRpbmcgYHBhdGNoLlRFU1RfUFJFRklYYC4KKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCB3aXRoIHRoZSB3aXRoIHN0YXRlbWVudC4gSGVyZSB0aGUKKyAgICBwYXRjaGluZyBhcHBsaWVzIHRvIHRoZSBpbmRlbnRlZCBibG9jayBhZnRlciB0aGUgd2l0aCBzdGF0ZW1lbnQuIElmIHlvdQorICAgIHVzZSAiYXMiIHRoZW4gdGhlIHBhdGNoZWQgb2JqZWN0IHdpbGwgYmUgYm91bmQgdG8gdGhlIG5hbWUgYWZ0ZXIgdGhlCisgICAgImFzIjsgdmVyeSB1c2VmdWwgaWYgYHBhdGNoYCBpcyBjcmVhdGluZyBhIG1vY2sgb2JqZWN0IGZvciB5b3UuCisKKyAgICBgcGF0Y2hgIHRha2VzIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cy4gVGhlc2Ugd2lsbCBiZSBwYXNzZWQgdG8KKyAgICB0aGUgYE1vY2tgIChvciBgbmV3X2NhbGxhYmxlYCkgb24gY29uc3RydWN0aW9uLgorCisgICAgYHBhdGNoLmRpY3QoLi4uKWAsIGBwYXRjaC5tdWx0aXBsZSguLi4pYCBhbmQgYHBhdGNoLm9iamVjdCguLi4pYCBhcmUKKyAgICBhdmFpbGFibGUgZm9yIGFsdGVybmF0ZSB1c2UtY2FzZXMuCisKK2BwYXRjaGAgYXMgZnVuY3Rpb24gZGVjb3JhdG9yLCBjcmVhdGluZyB0aGUgbW9jayBmb3IgeW91IGFuZCBwYXNzaW5nIGl0IGludG8KK3RoZSBkZWNvcmF0ZWQgZnVuY3Rpb246CisKKyAgICA+Pj4gQHBhdGNoKCdfX21haW5fXy5Tb21lQ2xhc3MnKQorICAgIC4uLiBkZWYgZnVuY3Rpb24obm9ybWFsX2FyZ3VtZW50LCBtb2NrX2NsYXNzKToKKyAgICAuLi4gICAgIHByaW50KG1vY2tfY2xhc3MgaXMgU29tZUNsYXNzKQorICAgIC4uLgorICAgID4+PiBmdW5jdGlvbihOb25lKQorICAgIFRydWUKKworUGF0Y2hpbmcgYSBjbGFzcyByZXBsYWNlcyB0aGUgY2xhc3Mgd2l0aCBhIGBNYWdpY01vY2tgICppbnN0YW5jZSouIElmIHRoZQorY2xhc3MgaXMgaW5zdGFudGlhdGVkIGluIHRoZSBjb2RlIHVuZGVyIHRlc3QgdGhlbiBpdCB3aWxsIGJlIHRoZQorOmF0dHI6YH5Nb2NrLnJldHVybl92YWx1ZWAgb2YgdGhlIG1vY2sgdGhhdCB3aWxsIGJlIHVzZWQuCisKK0lmIHRoZSBjbGFzcyBpcyBpbnN0YW50aWF0ZWQgbXVsdGlwbGUgdGltZXMgeW91IGNvdWxkIHVzZQorOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCB0byByZXR1cm4gYSBuZXcgbW9jayBlYWNoIHRpbWUuIEFsdGVybmF0aXZlbHkgeW91CitjYW4gc2V0IHRoZSBgcmV0dXJuX3ZhbHVlYCB0byBiZSBhbnl0aGluZyB5b3Ugd2FudC4KKworVG8gY29uZmlndXJlIHJldHVybiB2YWx1ZXMgb24gbWV0aG9kcyBvZiAqaW5zdGFuY2VzKiBvbiB0aGUgcGF0Y2hlZCBjbGFzcworeW91IG11c3QgZG8gdGhpcyBvbiB0aGUgYHJldHVybl92YWx1ZWAuIEZvciBleGFtcGxlOgorCisgICAgPj4+IGNsYXNzIENsYXNzKG9iamVjdCk6CisgICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHBhc3MKKyAgICAuLi4KKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uQ2xhc3MnKSBhcyBNb2NrQ2xhc3M6CisgICAgLi4uICAgICBpbnN0YW5jZSA9IE1vY2tDbGFzcy5yZXR1cm5fdmFsdWUKKyAgICAuLi4gICAgIGluc3RhbmNlLm1ldGhvZC5yZXR1cm5fdmFsdWUgPSAnZm9vJworICAgIC4uLiAgICAgYXNzZXJ0IENsYXNzKCkgaXMgaW5zdGFuY2UKKyAgICAuLi4gICAgIGFzc2VydCBDbGFzcygpLm1ldGhvZCgpID09ICdmb28nCisgICAgLi4uCisKK0lmIHlvdSB1c2UgYHNwZWNgIG9yIGBzcGVjX3NldGAgYW5kIGBwYXRjaGAgaXMgcmVwbGFjaW5nIGEgKmNsYXNzKiwgdGhlbiB0aGUKK3JldHVybiB2YWx1ZSBvZiB0aGUgY3JlYXRlZCBtb2NrIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjLgorCisgICAgPj4+IE9yaWdpbmFsID0gQ2xhc3MKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy5DbGFzcycsIHNwZWM9VHJ1ZSkKKyAgICA+Pj4gTW9ja0NsYXNzID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IGluc3RhbmNlID0gTW9ja0NsYXNzKCkKKyAgICA+Pj4gYXNzZXJ0IGlzaW5zdGFuY2UoaW5zdGFuY2UsIE9yaWdpbmFsKQorICAgID4+PiBwYXRjaGVyLnN0b3AoKQorCitUaGUgYG5ld19jYWxsYWJsZWAgYXJndW1lbnQgaXMgdXNlZnVsIHdoZXJlIHlvdSB3YW50IHRvIHVzZSBhbiBhbHRlcm5hdGl2ZQorY2xhc3MgdG8gdGhlIGRlZmF1bHQgOmNsYXNzOmBNYWdpY01vY2tgIGZvciB0aGUgY3JlYXRlZCBtb2NrLiBGb3IgZXhhbXBsZSwgaWYKK3lvdSB3YW50ZWQgYSA6Y2xhc3M6YE5vbkNhbGxhYmxlTW9ja2AgdG8gYmUgdXNlZDoKKworICAgID4+PiB0aGluZyA9IG9iamVjdCgpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLnRoaW5nJywgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaykgYXMgbW9ja190aGluZzoKKyAgICAuLi4gICAgIGFzc2VydCB0aGluZyBpcyBtb2NrX3RoaW5nCisgICAgLi4uICAgICB0aGluZygpCisgICAgLi4uCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiAnTm9uQ2FsbGFibGVNb2NrJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlCisKK0Fub3RoZXIgdXNlIGNhc2UgbWlnaHQgYmUgdG8gcmVwbGFjZSBhbiBvYmplY3Qgd2l0aCBhIGBTdHJpbmdJT2AgaW5zdGFuY2U6CisKKyAgICA+Pj4gZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKyAgICA+Pj4gZGVmIGZvbygpOgorICAgIC4uLiAgICAgcHJpbnQgJ1NvbWV0aGluZycKKyAgICAuLi4KKyAgICA+Pj4gQHBhdGNoKCdzeXMuc3Rkb3V0JywgbmV3X2NhbGxhYmxlPVN0cmluZ0lPKQorICAgIC4uLiBkZWYgdGVzdChtb2NrX3N0ZG91dCk6CisgICAgLi4uICAgICBmb28oKQorICAgIC4uLiAgICAgYXNzZXJ0IG1vY2tfc3Rkb3V0LmdldHZhbHVlKCkgPT0gJ1NvbWV0aGluZ1xuJworICAgIC4uLgorICAgID4+PiB0ZXN0KCkKKworV2hlbiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBmb3IgeW91LCBpdCBpcyBjb21tb24gdGhhdCB0aGUgZmlyc3QgdGhpbmcKK3lvdSBuZWVkIHRvIGRvIGlzIHRvIGNvbmZpZ3VyZSB0aGUgbW9jay4gU29tZSBvZiB0aGF0IGNvbmZpZ3VyYXRpb24gY2FuIGJlIGRvbmUKK2luIHRoZSBjYWxsIHRvIHBhdGNoLiBBbnkgYXJiaXRyYXJ5IGtleXdvcmRzIHlvdSBwYXNzIGludG8gdGhlIGNhbGwgd2lsbCBiZQordXNlZCB0byBzZXQgYXR0cmlidXRlcyBvbiB0aGUgY3JlYXRlZCBtb2NrOgorCisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgnX19tYWluX18udGhpbmcnLCBmaXJzdD0nb25lJywgc2Vjb25kPSd0d28nKQorICAgID4+PiBtb2NrX3RoaW5nID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IG1vY2tfdGhpbmcuZmlyc3QKKyAgICAnb25lJworICAgID4+PiBtb2NrX3RoaW5nLnNlY29uZAorICAgICd0d28nCisKK0FzIHdlbGwgYXMgYXR0cmlidXRlcyBvbiB0aGUgY3JlYXRlZCBtb2NrIGF0dHJpYnV0ZXMsIGxpa2UgdGhlCis6YXR0cjpgfk1vY2sucmV0dXJuX3ZhbHVlYCBhbmQgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YCwgb2YgY2hpbGQgbW9ja3MgY2FuCithbHNvIGJlIGNvbmZpZ3VyZWQuIFRoZXNlIGFyZW4ndCBzeW50YWN0aWNhbGx5IHZhbGlkIHRvIHBhc3MgaW4gZGlyZWN0bHkgYXMKK2tleXdvcmQgYXJndW1lbnRzLCBidXQgYSBkaWN0aW9uYXJ5IHdpdGggdGhlc2UgYXMga2V5cyBjYW4gc3RpbGwgYmUgZXhwYW5kZWQKK2ludG8gYSBgcGF0Y2hgIGNhbGwgdXNpbmcgYCoqYDoKKworICAgID4+PiBjb25maWcgPSB7J21ldGhvZC5yZXR1cm5fdmFsdWUnOiAzLCAnb3RoZXIuc2lkZV9lZmZlY3QnOiBLZXlFcnJvcn0KKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy50aGluZycsICoqY29uZmlnKQorICAgID4+PiBtb2NrX3RoaW5nID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IG1vY2tfdGhpbmcubWV0aG9kKCkKKyAgICAzCisgICAgPj4+IG1vY2tfdGhpbmcub3RoZXIoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEtleUVycm9yCisKKworcGF0Y2gub2JqZWN0CistLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBwYXRjaC5vYmplY3QodGFyZ2V0LCBhdHRyaWJ1dGUsIG5ldz1ERUZBVUxULCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKQorCisgICAgcGF0Y2ggdGhlIG5hbWVkIG1lbWJlciAoYGF0dHJpYnV0ZWApIG9uIGFuIG9iamVjdCAoYHRhcmdldGApIHdpdGggYSBtb2NrCisgICAgb2JqZWN0LgorCisgICAgYHBhdGNoLm9iamVjdGAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBBcmd1bWVudHMgYG5ld2AsIGBzcGVjYCwgYGNyZWF0ZWAsIGBzcGVjX3NldGAsIGBhdXRvc3BlY2AgYW5kCisgICAgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBMaWtlIGBwYXRjaGAsCisgICAgYHBhdGNoLm9iamVjdGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIGZvciBjb25maWd1cmluZyB0aGUgbW9jaworICAgIG9iamVjdCBpdCBjcmVhdGVzLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5vYmplY3RgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK1lvdSBjYW4gZWl0aGVyIGNhbGwgYHBhdGNoLm9iamVjdGAgd2l0aCB0aHJlZSBhcmd1bWVudHMgb3IgdHdvIGFyZ3VtZW50cy4gVGhlCit0aHJlZSBhcmd1bWVudCBmb3JtIHRha2VzIHRoZSBvYmplY3QgdG8gYmUgcGF0Y2hlZCwgdGhlIGF0dHJpYnV0ZSBuYW1lIGFuZCB0aGUKK29iamVjdCB0byByZXBsYWNlIHRoZSBhdHRyaWJ1dGUgd2l0aC4KKworV2hlbiBjYWxsaW5nIHdpdGggdGhlIHR3byBhcmd1bWVudCBmb3JtIHlvdSBvbWl0IHRoZSByZXBsYWNlbWVudCBvYmplY3QsIGFuZCBhCittb2NrIGlzIGNyZWF0ZWQgZm9yIHlvdSBhbmQgcGFzc2VkIGluIGFzIGFuIGV4dHJhIGFyZ3VtZW50IHRvIHRoZSBkZWNvcmF0ZWQKK2Z1bmN0aW9uOgorCisgICAgPj4+IEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfbWV0aG9kJykKKyAgICAuLi4gZGVmIHRlc3QobW9ja19tZXRob2QpOgorICAgIC4uLiAgICAgU29tZUNsYXNzLmNsYXNzX21ldGhvZCgzKQorICAgIC4uLiAgICAgbW9ja19tZXRob2QuYXNzZXJ0X2NhbGxlZF93aXRoKDMpCisgICAgLi4uCisgICAgPj4+IHRlc3QoKQorCitgc3BlY2AsIGBjcmVhdGVgIGFuZCB0aGUgb3RoZXIgYXJndW1lbnRzIHRvIGBwYXRjaC5vYmplY3RgIGhhdmUgdGhlIHNhbWUKK21lYW5pbmcgYXMgdGhleSBkbyBmb3IgYHBhdGNoYC4KKworCitwYXRjaC5kaWN0CistLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2guZGljdChpbl9kaWN0LCB2YWx1ZXM9KCksIGNsZWFyPUZhbHNlLCAqKmt3YXJncykKKworICAgIFBhdGNoIGEgZGljdGlvbmFyeSwgb3IgZGljdGlvbmFyeSBsaWtlIG9iamVjdCwgYW5kIHJlc3RvcmUgdGhlIGRpY3Rpb25hcnkKKyAgICB0byBpdHMgb3JpZ2luYWwgc3RhdGUgYWZ0ZXIgdGhlIHRlc3QuCisKKyAgICBgaW5fZGljdGAgY2FuIGJlIGEgZGljdGlvbmFyeSBvciBhIG1hcHBpbmcgbGlrZSBjb250YWluZXIuIElmIGl0IGlzIGEKKyAgICBtYXBwaW5nIHRoZW4gaXQgbXVzdCBhdCBsZWFzdCBzdXBwb3J0IGdldHRpbmcsIHNldHRpbmcgYW5kIGRlbGV0aW5nIGl0ZW1zCisgICAgcGx1cyBpdGVyYXRpbmcgb3ZlciBrZXlzLgorCisgICAgYGluX2RpY3RgIGNhbiBhbHNvIGJlIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIGRpY3Rpb25hcnksIHdoaWNoCisgICAgd2lsbCB0aGVuIGJlIGZldGNoZWQgYnkgaW1wb3J0aW5nIGl0LgorCisgICAgYHZhbHVlc2AgY2FuIGJlIGEgZGljdGlvbmFyeSBvZiB2YWx1ZXMgdG8gc2V0IGluIHRoZSBkaWN0aW9uYXJ5LiBgdmFsdWVzYAorICAgIGNhbiBhbHNvIGJlIGFuIGl0ZXJhYmxlIG9mIGAoa2V5LCB2YWx1ZSlgIHBhaXJzLgorCisgICAgSWYgYGNsZWFyYCBpcyBUcnVlIHRoZW4gdGhlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkIGJlZm9yZSB0aGUgbmV3CisgICAgdmFsdWVzIGFyZSBzZXQuCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGFsc28gYmUgY2FsbGVkIHdpdGggYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRvIHNldAorICAgIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeS4KKworICAgIGBwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgZGVjb3JhdG9yIG9yIGNsYXNzCisgICAgZGVjb3JhdG9yLiBXaGVuIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgYHBhdGNoLmRpY3RgIGhvbm91cnMKKyAgICBgcGF0Y2guVEVTVF9QUkVGSVhgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisKK2BwYXRjaC5kaWN0YCBjYW4gYmUgdXNlZCB0byBhZGQgbWVtYmVycyB0byBhIGRpY3Rpb25hcnksIG9yIHNpbXBseSBsZXQgYSB0ZXN0CitjaGFuZ2UgYSBkaWN0aW9uYXJ5LCBhbmQgZW5zdXJlIHRoZSBkaWN0aW9uYXJ5IGlzIHJlc3RvcmVkIHdoZW4gdGhlIHRlc3QKK2VuZHMuCisKKyAgICA+Pj4gZm9vID0ge30KKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KGZvbywgeyduZXdrZXknOiAnbmV3dmFsdWUnfSk6CisgICAgLi4uICAgICBhc3NlcnQgZm9vID09IHsnbmV3a2V5JzogJ25ld3ZhbHVlJ30KKyAgICAuLi4KKyAgICA+Pj4gYXNzZXJ0IGZvbyA9PSB7fQorCisgICAgPj4+IGltcG9ydCBvcworICAgID4+PiB3aXRoIHBhdGNoLmRpY3QoJ29zLmVudmlyb24nLCB7J25ld2tleSc6ICduZXd2YWx1ZSd9KToKKyAgICAuLi4gICAgIHByaW50IG9zLmVudmlyb25bJ25ld2tleSddCisgICAgLi4uCisgICAgbmV3dmFsdWUKKyAgICA+Pj4gYXNzZXJ0ICduZXdrZXknIG5vdCBpbiBvcy5lbnZpcm9uCisKK0tleXdvcmRzIGNhbiBiZSB1c2VkIGluIHRoZSBgcGF0Y2guZGljdGAgY2FsbCB0byBzZXQgdmFsdWVzIGluIHRoZSBkaWN0aW9uYXJ5OgorCisgICAgPj4+IG15bW9kdWxlID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbXltb2R1bGUuZnVuY3Rpb24ucmV0dXJuX3ZhbHVlID0gJ2Zpc2gnCisgICAgPj4+IHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBteW1vZHVsZT1teW1vZHVsZSk6CisgICAgLi4uICAgICBpbXBvcnQgbXltb2R1bGUKKyAgICAuLi4gICAgIG15bW9kdWxlLmZ1bmN0aW9uKCdzb21lJywgJ2FyZ3MnKQorICAgIC4uLgorICAgICdmaXNoJworCitgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgd2l0aCBkaWN0aW9uYXJ5IGxpa2Ugb2JqZWN0cyB0aGF0IGFyZW4ndCBhY3R1YWxseQorZGljdGlvbmFyaWVzLiBBdCB0aGUgdmVyeSBtaW5pbXVtIHRoZXkgbXVzdCBzdXBwb3J0IGl0ZW0gZ2V0dGluZywgc2V0dGluZywKK2RlbGV0aW5nIGFuZCBlaXRoZXIgaXRlcmF0aW9uIG9yIG1lbWJlcnNoaXAgdGVzdC4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUKK21hZ2ljIG1ldGhvZHMgYF9fZ2V0aXRlbV9fYCwgYF9fc2V0aXRlbV9fYCwgYF9fZGVsaXRlbV9fYCBhbmQgZWl0aGVyCitgX19pdGVyX19gIG9yIGBfX2NvbnRhaW5zX19gLgorCisgICAgPj4+IGNsYXNzIENvbnRhaW5lcihvYmplY3QpOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYudmFsdWVzID0ge30KKyAgICAuLi4gICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAuLi4gICAgICAgICByZXR1cm4gc2VsZi52YWx1ZXNbbmFtZV0KKyAgICAuLi4gICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgLi4uICAgICAgICAgc2VsZi52YWx1ZXNbbmFtZV0gPSB2YWx1ZQorICAgIC4uLiAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIG5hbWUpOgorICAgIC4uLiAgICAgICAgIGRlbCBzZWxmLnZhbHVlc1tuYW1lXQorICAgIC4uLiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHJldHVybiBpdGVyKHNlbGYudmFsdWVzKQorICAgIC4uLgorICAgID4+PiB0aGluZyA9IENvbnRhaW5lcigpCisgICAgPj4+IHRoaW5nWydvbmUnXSA9IDEKKyAgICA+Pj4gd2l0aCBwYXRjaC5kaWN0KHRoaW5nLCBvbmU9MiwgdHdvPTMpOgorICAgIC4uLiAgICAgYXNzZXJ0IHRoaW5nWydvbmUnXSA9PSAyCisgICAgLi4uICAgICBhc3NlcnQgdGhpbmdbJ3R3byddID09IDMKKyAgICAuLi4KKyAgICA+Pj4gYXNzZXJ0IHRoaW5nWydvbmUnXSA9PSAxCisgICAgPj4+IGFzc2VydCBsaXN0KHRoaW5nKSA9PSBbJ29uZSddCisKKworcGF0Y2gubXVsdGlwbGUKKy0tLS0tLS0tLS0tLS0tCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2gubXVsdGlwbGUodGFyZ2V0LCBzcGVjPU5vbmUsIGNyZWF0ZT1GYWxzZSwgc3BlY19zZXQ9Tm9uZSwgYXV0b3NwZWM9Tm9uZSwgbmV3X2NhbGxhYmxlPU5vbmUsICoqa3dhcmdzKQorCisgICAgUGVyZm9ybSBtdWx0aXBsZSBwYXRjaGVzIGluIGEgc2luZ2xlIGNhbGwuIEl0IHRha2VzIHRoZSBvYmplY3QgdG8gYmUKKyAgICBwYXRjaGVkIChlaXRoZXIgYXMgYW4gb2JqZWN0IG9yIGEgc3RyaW5nIHRvIGZldGNoIHRoZSBvYmplY3QgYnkgaW1wb3J0aW5nKQorICAgIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBmb3IgdGhlIHBhdGNoZXM6OgorCisgICAgICAgIHdpdGggcGF0Y2gubXVsdGlwbGUoc2V0dGluZ3MsIEZJUlNUX1BBVENIPSdvbmUnLCBTRUNPTkRfUEFUQ0g9J3R3bycpOgorICAgICAgICAgICAgLi4uCisKKyAgICBVc2UgOmRhdGE6YERFRkFVTFRgIGFzIHRoZSB2YWx1ZSBpZiB5b3Ugd2FudCBgcGF0Y2gubXVsdGlwbGVgIHRvIGNyZWF0ZQorICAgIG1vY2tzIGZvciB5b3UuIEluIHRoaXMgY2FzZSB0aGUgY3JlYXRlZCBtb2NrcyBhcmUgcGFzc2VkIGludG8gYSBkZWNvcmF0ZWQKKyAgICBmdW5jdGlvbiBieSBrZXl3b3JkLCBhbmQgYSBkaWN0aW9uYXJ5IGlzIHJldHVybmVkIHdoZW4gYHBhdGNoLm11bHRpcGxlYCBpcworICAgIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgcGF0Y2gubXVsdGlwbGVgIGNhbiBiZSB1c2VkIGFzIGEgZGVjb3JhdG9yLCBjbGFzcyBkZWNvcmF0b3Igb3IgYSBjb250ZXh0CisgICAgbWFuYWdlci4gVGhlIGFyZ3VtZW50cyBgc3BlY2AsIGBzcGVjX3NldGAsIGBjcmVhdGVgLCBgYXV0b3NwZWNgIGFuZAorICAgIGBuZXdfY2FsbGFibGVgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYHBhdGNoYC4gVGhlc2UgYXJndW1lbnRzIHdpbGwKKyAgICBiZSBhcHBsaWVkIHRvICphbGwqIHBhdGNoZXMgZG9uZSBieSBgcGF0Y2gubXVsdGlwbGVgLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5tdWx0aXBsZWAgaG9ub3VycyBgcGF0Y2guVEVTVF9QUkVGSVhgCisgICAgZm9yIGNob29zaW5nIHdoaWNoIG1ldGhvZHMgdG8gd3JhcC4KKworSWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUgbW9ja3MgZm9yIHlvdSwgdGhlbiB5b3UgY2FuIHVzZQorOmRhdGE6YERFRkFVTFRgIGFzIHRoZSB2YWx1ZS4gSWYgeW91IHVzZSBgcGF0Y2gubXVsdGlwbGVgIGFzIGEgZGVjb3JhdG9yCit0aGVuIHRoZSBjcmVhdGVkIG1vY2tzIGFyZSBwYXNzZWQgaW50byB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIGJ5IGtleXdvcmQuCisKKyAgICA+Pj4gdGhpbmcgPSBvYmplY3QoKQorICAgID4+PiBvdGhlciA9IG9iamVjdCgpCisKKyAgICA+Pj4gQHBhdGNoLm11bHRpcGxlKCdfX21haW5fXycsIHRoaW5nPURFRkFVTFQsIG90aGVyPURFRkFVTFQpCisgICAgLi4uIGRlZiB0ZXN0X2Z1bmN0aW9uKHRoaW5nLCBvdGhlcik6CisgICAgLi4uICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0aGluZywgTWFnaWNNb2NrKQorICAgIC4uLiAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uob3RoZXIsIE1hZ2ljTW9jaykKKyAgICAuLi4KKyAgICA+Pj4gdGVzdF9mdW5jdGlvbigpCisKK2BwYXRjaC5tdWx0aXBsZWAgY2FuIGJlIG5lc3RlZCB3aXRoIG90aGVyIGBwYXRjaGAgZGVjb3JhdG9ycywgYnV0IHB1dCBhcmd1bWVudHMKK3Bhc3NlZCBieSBrZXl3b3JkICphZnRlciogYW55IG9mIHRoZSBzdGFuZGFyZCBhcmd1bWVudHMgY3JlYXRlZCBieSBgcGF0Y2hgOgorCisgICAgPj4+IEBwYXRjaCgnc3lzLmV4aXQnKQorICAgIC4uLiBAcGF0Y2gubXVsdGlwbGUoJ19fbWFpbl9fJywgdGhpbmc9REVGQVVMVCwgb3RoZXI9REVGQVVMVCkKKyAgICAuLi4gZGVmIHRlc3RfZnVuY3Rpb24obW9ja19leGl0LCBvdGhlciwgdGhpbmcpOgorICAgIC4uLiAgICAgYXNzZXJ0ICdvdGhlcicgaW4gcmVwcihvdGhlcikKKyAgICAuLi4gICAgIGFzc2VydCAndGhpbmcnIGluIHJlcHIodGhpbmcpCisgICAgLi4uICAgICBhc3NlcnQgJ2V4aXQnIGluIHJlcHIobW9ja19leGl0KQorICAgIC4uLgorICAgID4+PiB0ZXN0X2Z1bmN0aW9uKCkKKworSWYgYHBhdGNoLm11bHRpcGxlYCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlCitjb250ZXh0IG1hbmdlciBpcyBhIGRpY3Rpb25hcnkgd2hlcmUgY3JlYXRlZCBtb2NrcyBhcmUga2V5ZWQgYnkgbmFtZToKKworICAgID4+PiB3aXRoIHBhdGNoLm11bHRpcGxlKCdfX21haW5fXycsIHRoaW5nPURFRkFVTFQsIG90aGVyPURFRkFVTFQpIGFzIHZhbHVlczoKKyAgICAuLi4gICAgIGFzc2VydCAnb3RoZXInIGluIHJlcHIodmFsdWVzWydvdGhlciddKQorICAgIC4uLiAgICAgYXNzZXJ0ICd0aGluZycgaW4gcmVwcih2YWx1ZXNbJ3RoaW5nJ10pCisgICAgLi4uICAgICBhc3NlcnQgdmFsdWVzWyd0aGluZyddIGlzIHRoaW5nCisgICAgLi4uICAgICBhc3NlcnQgdmFsdWVzWydvdGhlciddIGlzIG90aGVyCisgICAgLi4uCisKKworLi4gX3N0YXJ0LWFuZC1zdG9wOgorCitwYXRjaCBtZXRob2RzOiBzdGFydCBhbmQgc3RvcAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQWxsIHRoZSBwYXRjaGVycyBoYXZlIGBzdGFydGAgYW5kIGBzdG9wYCBtZXRob2RzLiBUaGVzZSBtYWtlIGl0IHNpbXBsZXIgdG8gZG8KK3BhdGNoaW5nIGluIGBzZXRVcGAgbWV0aG9kcyBvciB3aGVyZSB5b3Ugd2FudCB0byBkbyBtdWx0aXBsZSBwYXRjaGVzIHdpdGhvdXQKK25lc3RpbmcgZGVjb3JhdG9ycyBvciB3aXRoIHN0YXRlbWVudHMuCisKK1RvIHVzZSB0aGVtIGNhbGwgYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgb3IgYHBhdGNoLmRpY3RgIGFzIG5vcm1hbCBhbmQga2VlcCBhCityZWZlcmVuY2UgdG8gdGhlIHJldHVybmVkIGBwYXRjaGVyYCBvYmplY3QuIFlvdSBjYW4gdGhlbiBjYWxsIGBzdGFydGAgdG8gcHV0Cit0aGUgcGF0Y2ggaW4gcGxhY2UgYW5kIGBzdG9wYCB0byB1bmRvIGl0LgorCitJZiB5b3UgYXJlIHVzaW5nIGBwYXRjaGAgdG8gY3JlYXRlIGEgbW9jayBmb3IgeW91IHRoZW4gaXQgd2lsbCBiZSByZXR1cm5lZCBieQordGhlIGNhbGwgdG8gYHBhdGNoZXIuc3RhcnRgLgorCisgICAgPj4+IHBhdGNoZXIgPSBwYXRjaCgncGFja2FnZS5tb2R1bGUuQ2xhc3NOYW1lJykKKyAgICA+Pj4gZnJvbSBwYWNrYWdlIGltcG9ydCBtb2R1bGUKKyAgICA+Pj4gb3JpZ2luYWwgPSBtb2R1bGUuQ2xhc3NOYW1lCisgICAgPj4+IG5ld19tb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IGFzc2VydCBtb2R1bGUuQ2xhc3NOYW1lIGlzIG5vdCBvcmlnaW5hbAorICAgID4+PiBhc3NlcnQgbW9kdWxlLkNsYXNzTmFtZSBpcyBuZXdfbW9jaworICAgID4+PiBwYXRjaGVyLnN0b3AoKQorICAgID4+PiBhc3NlcnQgbW9kdWxlLkNsYXNzTmFtZSBpcyBvcmlnaW5hbAorICAgID4+PiBhc3NlcnQgbW9kdWxlLkNsYXNzTmFtZSBpcyBub3QgbmV3X21vY2sKKworCitBIHR5cGljYWwgdXNlIGNhc2UgZm9yIHRoaXMgbWlnaHQgYmUgZm9yIGRvaW5nIG11bHRpcGxlIHBhdGNoZXMgaW4gdGhlIGBzZXRVcGAKK21ldGhvZCBvZiBhIGBUZXN0Q2FzZWA6CisKKyAgICA+Pj4gY2xhc3MgTXlUZXN0KFRlc3RDYXNlKToKKyAgICAuLi4gICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAuLi4gICAgICAgICBzZWxmLnBhdGNoZXIxID0gcGF0Y2goJ3BhY2thZ2UubW9kdWxlLkNsYXNzMScpCisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyMiA9IHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzczInKQorICAgIC4uLiAgICAgICAgIHNlbGYuTW9ja0NsYXNzMSA9IHNlbGYucGF0Y2hlcjEuc3RhcnQoKQorICAgIC4uLiAgICAgICAgIHNlbGYuTW9ja0NsYXNzMiA9IHNlbGYucGF0Y2hlcjIuc3RhcnQoKQorICAgIC4uLgorICAgIC4uLiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHNlbGYucGF0Y2hlcjEuc3RvcCgpCisgICAgLi4uICAgICAgICAgc2VsZi5wYXRjaGVyMi5zdG9wKCkKKyAgICAuLi4KKyAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmKToKKyAgICAuLi4gICAgICAgICBhc3NlcnQgcGFja2FnZS5tb2R1bGUuQ2xhc3MxIGlzIHNlbGYuTW9ja0NsYXNzMQorICAgIC4uLiAgICAgICAgIGFzc2VydCBwYWNrYWdlLm1vZHVsZS5DbGFzczIgaXMgc2VsZi5Nb2NrQ2xhc3MyCisgICAgLi4uCisgICAgPj4+IE15VGVzdCgndGVzdF9zb21ldGhpbmcnKS5ydW4oKQorCisuLiBjYXV0aW9uOjoKKworICAgIElmIHlvdSB1c2UgdGhpcyB0ZWNobmlxdWUgeW91IG11c3QgZW5zdXJlIHRoYXQgdGhlIHBhdGNoaW5nIGlzICJ1bmRvbmUiIGJ5CisgICAgY2FsbGluZyBgc3RvcGAuIFRoaXMgY2FuIGJlIGZpZGRsaWVyIHRoYW4geW91IG1pZ2h0IHRoaW5rLCBiZWNhdXNlIGlmIGFuCisgICAgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiB0aGUgYGBzZXRVcGBgIHRoZW4gYGB0ZWFyRG93bmBgIGlzIG5vdCBjYWxsZWQuCisgICAgOm1ldGg6YHVuaXR0ZXN0LlRlc3RDYXNlLmFkZENsZWFudXBgIG1ha2VzIHRoaXMgZWFzaWVyOgorCisgICAgICAgID4+PiBjbGFzcyBNeVRlc3QoVGVzdENhc2UpOgorICAgICAgICAuLi4gICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgcGF0Y2hlciA9IHBhdGNoKCdwYWNrYWdlLm1vZHVsZS5DbGFzcycpCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuTW9ja0NsYXNzID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisgICAgICAgIC4uLgorICAgICAgICAuLi4gICAgIGRlZiB0ZXN0X3NvbWV0aGluZyhzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgYXNzZXJ0IHBhY2thZ2UubW9kdWxlLkNsYXNzIGlzIHNlbGYuTW9ja0NsYXNzCisgICAgICAgIC4uLgorCisgICAgQXMgYW4gYWRkZWQgYm9udXMgeW91IG5vIGxvbmdlciBuZWVkIHRvIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGBwYXRjaGVyYAorICAgIG9iamVjdC4KKworSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzdG9wIGFsbCBwYXRjaGVzIHdoaWNoIGhhdmUgYmVlbiBzdGFydGVkIGJ5IHVzaW5nCitgcGF0Y2guc3RvcGFsbGAuCisKKy4uIGZ1bmN0aW9uOjogcGF0Y2guc3RvcGFsbAorCisgICAgU3RvcCBhbGwgYWN0aXZlIHBhdGNoZXMuIE9ubHkgc3RvcHMgcGF0Y2hlcyBzdGFydGVkIHdpdGggYHN0YXJ0YC4KKworCitURVNUX1BSRUZJWAorLS0tLS0tLS0tLS0KKworQWxsIG9mIHRoZSBwYXRjaGVycyBjYW4gYmUgdXNlZCBhcyBjbGFzcyBkZWNvcmF0b3JzLiBXaGVuIHVzZWQgaW4gdGhpcyB3YXkKK3RoZXkgd3JhcCBldmVyeSB0ZXN0IG1ldGhvZCBvbiB0aGUgY2xhc3MuIFRoZSBwYXRjaGVycyByZWNvZ25pc2UgbWV0aG9kcyB0aGF0CitzdGFydCB3aXRoIGB0ZXN0YCBhcyBiZWluZyB0ZXN0IG1ldGhvZHMuIFRoaXMgaXMgdGhlIHNhbWUgd2F5IHRoYXQgdGhlCis6Y2xhc3M6YHVuaXR0ZXN0LlRlc3RMb2FkZXJgIGZpbmRzIHRlc3QgbWV0aG9kcyBieSBkZWZhdWx0LgorCitJdCBpcyBwb3NzaWJsZSB0aGF0IHlvdSB3YW50IHRvIHVzZSBhIGRpZmZlcmVudCBwcmVmaXggZm9yIHlvdXIgdGVzdHMuIFlvdSBjYW4KK2luZm9ybSB0aGUgcGF0Y2hlcnMgb2YgdGhlIGRpZmZlcmVudCBwcmVmaXggYnkgc2V0dGluZyBgcGF0Y2guVEVTVF9QUkVGSVhgOgorCisgICAgPj4+IHBhdGNoLlRFU1RfUFJFRklYID0gJ2ZvbycKKyAgICA+Pj4gdmFsdWUgPSAzCisgICAgPj4+CisgICAgPj4+IEBwYXRjaCgnX19tYWluX18udmFsdWUnLCAnbm90IHRocmVlJykKKyAgICAuLi4gY2xhc3MgVGhpbmcob2JqZWN0KToKKyAgICAuLi4gICAgIGRlZiBmb29fb25lKHNlbGYpOgorICAgIC4uLiAgICAgICAgIHByaW50IHZhbHVlCisgICAgLi4uICAgICBkZWYgZm9vX3R3byhzZWxmKToKKyAgICAuLi4gICAgICAgICBwcmludCB2YWx1ZQorICAgIC4uLgorICAgID4+PgorICAgID4+PiBUaGluZygpLmZvb19vbmUoKQorICAgIG5vdCB0aHJlZQorICAgID4+PiBUaGluZygpLmZvb190d28oKQorICAgIG5vdCB0aHJlZQorICAgID4+PiB2YWx1ZQorICAgIDMKKworCitOZXN0aW5nIFBhdGNoIERlY29yYXRvcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJZiB5b3Ugd2FudCB0byBwZXJmb3JtIG11bHRpcGxlIHBhdGNoZXMgdGhlbiB5b3UgY2FuIHNpbXBseSBzdGFjayB1cCB0aGUKK2RlY29yYXRvcnMuCisKK1lvdSBjYW4gc3RhY2sgdXAgbXVsdGlwbGUgcGF0Y2ggZGVjb3JhdG9ycyB1c2luZyB0aGlzIHBhdHRlcm46CisKKyAgICA+Pj4gQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdjbGFzc19tZXRob2QnKQorICAgIC4uLiBAcGF0Y2gub2JqZWN0KFNvbWVDbGFzcywgJ3N0YXRpY19tZXRob2QnKQorICAgIC4uLiBkZWYgdGVzdChtb2NrMSwgbW9jazIpOgorICAgIC4uLiAgICAgYXNzZXJ0IFNvbWVDbGFzcy5zdGF0aWNfbWV0aG9kIGlzIG1vY2sxCisgICAgLi4uICAgICBhc3NlcnQgU29tZUNsYXNzLmNsYXNzX21ldGhvZCBpcyBtb2NrMgorICAgIC4uLiAgICAgU29tZUNsYXNzLnN0YXRpY19tZXRob2QoJ2ZvbycpCisgICAgLi4uICAgICBTb21lQ2xhc3MuY2xhc3NfbWV0aG9kKCdiYXInKQorICAgIC4uLiAgICAgcmV0dXJuIG1vY2sxLCBtb2NrMgorICAgIC4uLgorICAgID4+PiBtb2NrMSwgbW9jazIgPSB0ZXN0KCkKKyAgICA+Pj4gbW9jazEuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisgICAgPj4+IG1vY2syLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdiYXInKQorCisKK05vdGUgdGhhdCB0aGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBmcm9tIHRoZSBib3R0b20gdXB3YXJkcy4gVGhpcyBpcyB0aGUKK3N0YW5kYXJkIHdheSB0aGF0IFB5dGhvbiBhcHBsaWVzIGRlY29yYXRvcnMuIFRoZSBvcmRlciBvZiB0aGUgY3JlYXRlZCBtb2NrcworcGFzc2VkIGludG8geW91ciB0ZXN0IGZ1bmN0aW9uIG1hdGNoZXMgdGhpcyBvcmRlci4KKworCisuLiBfd2hlcmUtdG8tcGF0Y2g6CisKK1doZXJlIHRvIHBhdGNoCistLS0tLS0tLS0tLS0tLQorCitgcGF0Y2hgIHdvcmtzIGJ5ICh0ZW1wb3JhcmlseSkgY2hhbmdpbmcgdGhlIG9iamVjdCB0aGF0IGEgKm5hbWUqIHBvaW50cyB0byB3aXRoCithbm90aGVyIG9uZS4gVGhlcmUgY2FuIGJlIG1hbnkgbmFtZXMgcG9pbnRpbmcgdG8gYW55IGluZGl2aWR1YWwgb2JqZWN0LCBzbworZm9yIHBhdGNoaW5nIHRvIHdvcmsgeW91IG11c3QgZW5zdXJlIHRoYXQgeW91IHBhdGNoIHRoZSBuYW1lIHVzZWQgYnkgdGhlIHN5c3RlbQordW5kZXIgdGVzdC4KKworVGhlIGJhc2ljIHByaW5jaXBsZSBpcyB0aGF0IHlvdSBwYXRjaCB3aGVyZSBhbiBvYmplY3QgaXMgKmxvb2tlZCB1cCosIHdoaWNoCitpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgcGxhY2UgYXMgd2hlcmUgaXQgaXMgZGVmaW5lZC4gQSBjb3VwbGUgb2YKK2V4YW1wbGVzIHdpbGwgaGVscCB0byBjbGFyaWZ5IHRoaXMuCisKK0ltYWdpbmUgd2UgaGF2ZSBhIHByb2plY3QgdGhhdCB3ZSB3YW50IHRvIHRlc3Qgd2l0aCB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZTo6CisKKyAgICBhLnB5CisgICAgICAgIC0+IERlZmluZXMgU29tZUNsYXNzCisKKyAgICBiLnB5CisgICAgICAgIC0+IGZyb20gYSBpbXBvcnQgU29tZUNsYXNzCisgICAgICAgIC0+IHNvbWVfZnVuY3Rpb24gaW5zdGFudGlhdGVzIFNvbWVDbGFzcworCitOb3cgd2Ugd2FudCB0byB0ZXN0IGBzb21lX2Z1bmN0aW9uYCBidXQgd2Ugd2FudCB0byBtb2NrIG91dCBgU29tZUNsYXNzYCB1c2luZworYHBhdGNoYC4gVGhlIHByb2JsZW0gaXMgdGhhdCB3aGVuIHdlIGltcG9ydCBtb2R1bGUgYiwgd2hpY2ggd2Ugd2lsbCBoYXZlIHRvCitkbyB0aGVuIGl0IGltcG9ydHMgYFNvbWVDbGFzc2AgZnJvbSBtb2R1bGUgYS4gSWYgd2UgdXNlIGBwYXRjaGAgdG8gbW9jayBvdXQKK2BhLlNvbWVDbGFzc2AgdGhlbiBpdCB3aWxsIGhhdmUgbm8gZWZmZWN0IG9uIG91ciB0ZXN0OyBtb2R1bGUgYiBhbHJlYWR5IGhhcyBhCityZWZlcmVuY2UgdG8gdGhlICpyZWFsKiBgU29tZUNsYXNzYCBhbmQgaXQgbG9va3MgbGlrZSBvdXIgcGF0Y2hpbmcgaGFkIG5vCitlZmZlY3QuCisKK1RoZSBrZXkgaXMgdG8gcGF0Y2ggb3V0IGBTb21lQ2xhc3NgIHdoZXJlIGl0IGlzIHVzZWQgKG9yIHdoZXJlIGl0IGlzIGxvb2tlZCB1cAorKS4gSW4gdGhpcyBjYXNlIGBzb21lX2Z1bmN0aW9uYCB3aWxsIGFjdHVhbGx5IGxvb2sgdXAgYFNvbWVDbGFzc2AgaW4gbW9kdWxlIGIsCit3aGVyZSB3ZSBoYXZlIGltcG9ydGVkIGl0LiBUaGUgcGF0Y2hpbmcgc2hvdWxkIGxvb2sgbGlrZTo6CisKKyAgICBAcGF0Y2goJ2IuU29tZUNsYXNzJykKKworSG93ZXZlciwgY29uc2lkZXIgdGhlIGFsdGVybmF0aXZlIHNjZW5hcmlvIHdoZXJlIGluc3RlYWQgb2YgYGZyb20gYSBpbXBvcnQKK1NvbWVDbGFzc2AgbW9kdWxlIGIgZG9lcyBgaW1wb3J0IGFgIGFuZCBgc29tZV9mdW5jdGlvbmAgdXNlcyBgYS5Tb21lQ2xhc3NgLiBCb3RoCitvZiB0aGVzZSBpbXBvcnQgZm9ybXMgYXJlIGNvbW1vbi4gSW4gdGhpcyBjYXNlIHRoZSBjbGFzcyB3ZSB3YW50IHRvIHBhdGNoIGlzCitiZWluZyBsb29rZWQgdXAgb24gdGhlIGEgbW9kdWxlIGFuZCBzbyB3ZSBoYXZlIHRvIHBhdGNoIGBhLlNvbWVDbGFzc2AgaW5zdGVhZDo6CisKKyAgICBAcGF0Y2goJ2EuU29tZUNsYXNzJykKKworCitQYXRjaGluZyBEZXNjcmlwdG9ycyBhbmQgUHJveHkgT2JqZWN0cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQm90aCBwYXRjaF8gYW5kIHBhdGNoLm9iamVjdF8gY29ycmVjdGx5IHBhdGNoIGFuZCByZXN0b3JlIGRlc2NyaXB0b3JzOiBjbGFzcworbWV0aG9kcywgc3RhdGljIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuIFlvdSBzaG91bGQgcGF0Y2ggdGhlc2Ugb24gdGhlICpjbGFzcyoKK3JhdGhlciB0aGFuIGFuIGluc3RhbmNlLiBUaGV5IGFsc28gd29yayB3aXRoICpzb21lKiBvYmplY3RzCit0aGF0IHByb3h5IGF0dHJpYnV0ZSBhY2Nlc3MsIGxpa2UgdGhlIGBkamFuZ28gc2V0dHRpbmdzIG9iamVjdAorPGh0dHA6Ly93d3cudm9pZHNwYWNlLm9yZy51ay9weXRob24vd2VibG9nL2FyY2hfZDdfMjAxMF8xMl8wNC5zaHRtbCNlMTE5OD5gXy4KKworCitNYWdpY01vY2sgYW5kIG1hZ2ljIG1ldGhvZCBzdXBwb3J0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIF9tYWdpYy1tZXRob2RzOgorCitNb2NraW5nIE1hZ2ljIE1ldGhvZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCis6Y2xhc3M6YE1vY2tgIHN1cHBvcnRzIG1vY2tpbmcgdGhlIFB5dGhvbiBwcm90b2NvbCBtZXRob2RzLCBhbHNvIGtub3duIGFzCisibWFnaWMgbWV0aG9kcyIuIFRoaXMgYWxsb3dzIG1vY2sgb2JqZWN0cyB0byByZXBsYWNlIGNvbnRhaW5lcnMgb3Igb3RoZXIKK29iamVjdHMgdGhhdCBpbXBsZW1lbnQgUHl0aG9uIHByb3RvY29scy4KKworQmVjYXVzZSBtYWdpYyBtZXRob2RzIGFyZSBsb29rZWQgdXAgZGlmZmVyZW50bHkgZnJvbSBub3JtYWwgbWV0aG9kcyBbI11fLCB0aGlzCitzdXBwb3J0IGhhcyBiZWVuIHNwZWNpYWxseSBpbXBsZW1lbnRlZC4gVGhpcyBtZWFucyB0aGF0IG9ubHkgc3BlY2lmaWMgbWFnaWMKK21ldGhvZHMgYXJlIHN1cHBvcnRlZC4gVGhlIHN1cHBvcnRlZCBsaXN0IGluY2x1ZGVzICphbG1vc3QqIGFsbCBvZiB0aGVtLiBJZgordGhlcmUgYXJlIGFueSBtaXNzaW5nIHRoYXQgeW91IG5lZWQgcGxlYXNlIGxldCB1cyBrbm93LgorCitZb3UgbW9jayBtYWdpYyBtZXRob2RzIGJ5IHNldHRpbmcgdGhlIG1ldGhvZCB5b3UgYXJlIGludGVyZXN0ZWQgaW4gdG8gYSBmdW5jdGlvbgorb3IgYSBtb2NrIGluc3RhbmNlLiBJZiB5b3UgYXJlIHVzaW5nIGEgZnVuY3Rpb24gdGhlbiBpdCAqbXVzdCogdGFrZSBgYHNlbGZgYCBhcwordGhlIGZpcnN0IGFyZ3VtZW50IFsjXV8uCisKKyAgID4+PiBkZWYgX19zdHJfXyhzZWxmKToKKyAgIC4uLiAgICAgcmV0dXJuICdmb29ibGUnCisgICAuLi4KKyAgID4+PiBtb2NrID0gTW9jaygpCisgICA+Pj4gbW9jay5fX3N0cl9fID0gX19zdHJfXworICAgPj4+IHN0cihtb2NrKQorICAgJ2Zvb2JsZScKKworICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9fc3RyX18gPSBNb2NrKCkKKyAgID4+PiBtb2NrLl9fc3RyX18ucmV0dXJuX3ZhbHVlID0gJ2Zvb2JsZScKKyAgID4+PiBzdHIobW9jaykKKyAgICdmb29ibGUnCisKKyAgID4+PiBtb2NrID0gTW9jaygpCisgICA+Pj4gbW9jay5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgPj4+IGxpc3QobW9jaykKKyAgIFtdCisKK09uZSB1c2UgY2FzZSBmb3IgdGhpcyBpcyBmb3IgbW9ja2luZyBvYmplY3RzIHVzZWQgYXMgY29udGV4dCBtYW5hZ2VycyBpbiBhCitgd2l0aGAgc3RhdGVtZW50OgorCisgICA+Pj4gbW9jayA9IE1vY2soKQorICAgPj4+IG1vY2suX19lbnRlcl9fID0gTW9jayhyZXR1cm5fdmFsdWU9J2ZvbycpCisgICA+Pj4gbW9jay5fX2V4aXRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPUZhbHNlKQorICAgPj4+IHdpdGggbW9jayBhcyBtOgorICAgLi4uICAgICBhc3NlcnQgbSA9PSAnZm9vJworICAgLi4uCisgICA+Pj4gbW9jay5fX2VudGVyX18uYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgID4+PiBtb2NrLl9fZXhpdF9fLmFzc2VydF9jYWxsZWRfd2l0aChOb25lLCBOb25lLCBOb25lKQorCitDYWxscyB0byBtYWdpYyBtZXRob2RzIGRvIG5vdCBhcHBlYXIgaW4gOmF0dHI6YH5Nb2NrLm1ldGhvZF9jYWxsc2AsIGJ1dCB0aGV5CithcmUgcmVjb3JkZWQgaW4gOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgLgorCisuLiBub3RlOjoKKworICAgSWYgeW91IHVzZSB0aGUgYHNwZWNgIGtleXdvcmQgYXJndW1lbnQgdG8gY3JlYXRlIGEgbW9jayB0aGVuIGF0dGVtcHRpbmcgdG8KKyAgIHNldCBhIG1hZ2ljIG1ldGhvZCB0aGF0IGlzbid0IGluIHRoZSBzcGVjIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworVGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWQgbWFnaWMgbWV0aG9kcyBpczoKKworKiBgYF9faGFzaF9fYGAsIGBgX19zaXplb2ZfX2BgLCBgYF9fcmVwcl9fYGAgYW5kIGBgX19zdHJfX2BgCisqIGBgX19kaXJfX2BgLCBgYF9fZm9ybWF0X19gYCBhbmQgYGBfX3N1YmNsYXNzZXNfX2BgCisqIGBgX19mbG9vcl9fYGAsIGBgX190cnVuY19fYGAgYW5kIGBgX19jZWlsX19gYAorKiBDb21wYXJpc29uczogYGBfX2NtcF9fYGAsIGBgX19sdF9fYGAsIGBgX19ndF9fYGAsIGBgX19sZV9fYGAsIGBgX19nZV9fYGAsCisgIGBgX19lcV9fYGAgYW5kIGBgX19uZV9fYGAKKyogQ29udGFpbmVyIG1ldGhvZHM6IGBgX19nZXRpdGVtX19gYCwgYGBfX3NldGl0ZW1fX2BgLCBgYF9fZGVsaXRlbV9fYGAsCisgIGBgX19jb250YWluc19fYGAsIGBgX19sZW5fX2BgLCBgYF9faXRlcl9fYGAsIGBgX19nZXRzbGljZV9fYGAsCisgIGBgX19zZXRzbGljZV9fYGAsIGBgX19yZXZlcnNlZF9fYGAgYW5kIGBgX19taXNzaW5nX19gYAorKiBDb250ZXh0IG1hbmFnZXI6IGBgX19lbnRlcl9fYGAgYW5kIGBgX19leGl0X19gYAorKiBVbmFyeSBudW1lcmljIG1ldGhvZHM6IGBgX19uZWdfX2BgLCBgYF9fcG9zX19gYCBhbmQgYGBfX2ludmVydF9fYGAKKyogVGhlIG51bWVyaWMgbWV0aG9kcyAoaW5jbHVkaW5nIHJpZ2h0IGhhbmQgYW5kIGluLXBsYWNlIHZhcmlhbnRzKToKKyAgYGBfX2FkZF9fYGAsIGBgX19zdWJfX2BgLCBgYF9fbXVsX19gYCwgYGBfX2Rpdl9fYGAsCisgIGBgX19mbG9vcmRpdl9fYGAsIGBgX19tb2RfX2BgLCBgYF9fZGl2bW9kX19gYCwgYGBfX2xzaGlmdF9fYGAsCisgIGBgX19yc2hpZnRfX2BgLCBgYF9fYW5kX19gYCwgYGBfX3hvcl9fYGAsIGBgX19vcl9fYGAsIGFuZCBgYF9fcG93X19gYAorKiBOdW1lcmljIGNvbnZlcnNpb24gbWV0aG9kczogYGBfX2NvbXBsZXhfX2BgLCBgYF9faW50X19gYCwgYGBfX2Zsb2F0X19gYCwKKyAgYGBfX2luZGV4X19gYCBhbmQgYGBfX2NvZXJjZV9fYGAKKyogRGVzY3JpcHRvciBtZXRob2RzOiBgYF9fZ2V0X19gYCwgYGBfX3NldF9fYGAgYW5kIGBgX19kZWxldGVfX2BgCisqIFBpY2tsaW5nOiBgYF9fcmVkdWNlX19gYCwgYGBfX3JlZHVjZV9leF9fYGAsIGBgX19nZXRpbml0YXJnc19fYGAsCisgIGBgX19nZXRuZXdhcmdzX19gYCwgYGBfX2dldHN0YXRlX19gYCBhbmQgYGBfX3NldHN0YXRlX19gYAorCisKK1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBleGlzdCBidXQgYXJlICpub3QqIHN1cHBvcnRlZCBhcyB0aGV5IGFyZSBlaXRoZXIgaW4gdXNlCitieSBtb2NrLCBjYW4ndCBiZSBzZXQgZHluYW1pY2FsbHksIG9yIGNhbiBjYXVzZSBwcm9ibGVtczoKKworKiBgYF9fZ2V0YXR0cl9fYGAsIGBgX19zZXRhdHRyX19gYCwgYGBfX2luaXRfX2BgIGFuZCBgYF9fbmV3X19gYAorKiBgYF9fcHJlcGFyZV9fYGAsIGBgX19pbnN0YW5jZWNoZWNrX19gYCwgYGBfX3N1YmNsYXNzY2hlY2tfX2BgLCBgYF9fZGVsX19gYAorCisKKworTWFnaWMgTW9jaworLS0tLS0tLS0tLQorCitUaGVyZSBhcmUgdHdvIGBNYWdpY01vY2tgIHZhcmlhbnRzOiBgTWFnaWNNb2NrYCBhbmQgYE5vbkNhbGxhYmxlTWFnaWNNb2NrYC4KKworCisuLiBjbGFzczo6IE1hZ2ljTW9jaygqYXJncywgKiprdykKKworICAgYGBNYWdpY01vY2tgYCBpcyBhIHN1YmNsYXNzIG9mIDpjbGFzczpgTW9ja2Agd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucworICAgb2YgbW9zdCBvZiB0aGUgbWFnaWMgbWV0aG9kcy4gWW91IGNhbiB1c2UgYGBNYWdpY01vY2tgYCB3aXRob3V0IGhhdmluZyB0bworICAgY29uZmlndXJlIHRoZSBtYWdpYyBtZXRob2RzIHlvdXJzZWxmLgorCisgICBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIDpjbGFzczpgTW9ja2AuCisKKyAgIElmIHlvdSB1c2UgdGhlIGBzcGVjYCBvciBgc3BlY19zZXRgIGFyZ3VtZW50cyB0aGVuICpvbmx5KiBtYWdpYyBtZXRob2RzCisgICB0aGF0IGV4aXN0IGluIHRoZSBzcGVjIHdpbGwgYmUgY3JlYXRlZC4KKworCisuLiBjbGFzczo6IE5vbkNhbGxhYmxlTWFnaWNNb2NrKCphcmdzLCAqKmt3KQorCisgICAgQSBub24tY2FsbGFibGUgdmVyc2lvbiBvZiBgTWFnaWNNb2NrYC4KKworICAgIFRoZSBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKKyAgICA6Y2xhc3M6YE1hZ2ljTW9ja2AsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBgcmV0dXJuX3ZhbHVlYCBhbmQKKyAgICBgc2lkZV9lZmZlY3RgIHdoaWNoIGhhdmUgbm8gbWVhbmluZyBvbiBhIG5vbi1jYWxsYWJsZSBtb2NrLgorCitUaGUgbWFnaWMgbWV0aG9kcyBhcmUgc2V0dXAgd2l0aCBgTWFnaWNNb2NrYCBvYmplY3RzLCBzbyB5b3UgY2FuIGNvbmZpZ3VyZSB0aGVtCithbmQgdXNlIHRoZW0gaW4gdGhlIHVzdWFsIHdheToKKworICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgPj4+IG1vY2tbM10gPSAnZmlzaCcKKyAgID4+PiBtb2NrLl9fc2V0aXRlbV9fLmFzc2VydF9jYWxsZWRfd2l0aCgzLCAnZmlzaCcpCisgICA+Pj4gbW9jay5fX2dldGl0ZW1fXy5yZXR1cm5fdmFsdWUgPSAncmVzdWx0JworICAgPj4+IG1vY2tbMl0KKyAgICdyZXN1bHQnCisKK0J5IGRlZmF1bHQgbWFueSBvZiB0aGUgcHJvdG9jb2wgbWV0aG9kcyBhcmUgcmVxdWlyZWQgdG8gcmV0dXJuIG9iamVjdHMgb2YgYQorc3BlY2lmaWMgdHlwZS4gVGhlc2UgbWV0aG9kcyBhcmUgcHJlY29uZmlndXJlZCB3aXRoIGEgZGVmYXVsdCByZXR1cm4gdmFsdWUsIHNvCit0aGF0IHRoZXkgY2FuIGJlIHVzZWQgd2l0aG91dCB5b3UgaGF2aW5nIHRvIGRvIGFueXRoaW5nIGlmIHlvdSBhcmVuJ3QgaW50ZXJlc3RlZAoraW4gdGhlIHJldHVybiB2YWx1ZS4gWW91IGNhbiBzdGlsbCAqc2V0KiB0aGUgcmV0dXJuIHZhbHVlIG1hbnVhbGx5IGlmIHlvdSB3YW50Cit0byBjaGFuZ2UgdGhlIGRlZmF1bHQuCisKK01ldGhvZHMgYW5kIHRoZWlyIGRlZmF1bHRzOgorCisqIGBgX19sdF9fYGA6IE5vdEltcGxlbWVudGVkCisqIGBgX19ndF9fYGA6IE5vdEltcGxlbWVudGVkCisqIGBgX19sZV9fYGA6IE5vdEltcGxlbWVudGVkCisqIGBgX19nZV9fYGA6IE5vdEltcGxlbWVudGVkCisqIGBgX19pbnRfX2BgIDogMQorKiBgYF9fY29udGFpbnNfX2BgIDogRmFsc2UKKyogYGBfX2xlbl9fYGAgOiAxCisqIGBgX19pdGVyX19gYCA6IGl0ZXIoW10pCisqIGBgX19leGl0X19gYCA6IEZhbHNlCisqIGBgX19jb21wbGV4X19gYCA6IDFqCisqIGBgX19mbG9hdF9fYGAgOiAxLjAKKyogYGBfX2Jvb2xfX2BgIDogVHJ1ZQorKiBgYF9faW5kZXhfX2BgIDogMQorKiBgYF9faGFzaF9fYGAgOiBkZWZhdWx0IGhhc2ggZm9yIHRoZSBtb2NrCisqIGBgX19zdHJfX2BgIDogZGVmYXVsdCBzdHIgZm9yIHRoZSBtb2NrCisqIGBgX19zaXplb2ZfX2BgOiBkZWZhdWx0IHNpemVvZiBmb3IgdGhlIG1vY2sKKworRm9yIGV4YW1wbGU6CisKKyAgID4+PiBtb2NrID0gTWFnaWNNb2NrKCkKKyAgID4+PiBpbnQobW9jaykKKyAgIDEKKyAgID4+PiBsZW4obW9jaykKKyAgIDAKKyAgID4+PiBsaXN0KG1vY2spCisgICBbXQorICAgPj4+IG9iamVjdCgpIGluIG1vY2sKKyAgIEZhbHNlCisKK1RoZSB0d28gZXF1YWxpdHkgbWV0aG9kLCBgX19lcV9fYCBhbmQgYF9fbmVfX2AsIGFyZSBzcGVjaWFsLgorVGhleSBkbyB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uIG9uIGlkZW50aXR5LCB1c2luZyBhIHNpZGUKK2VmZmVjdCwgdW5sZXNzIHlvdSBjaGFuZ2UgdGhlaXIgcmV0dXJuIHZhbHVlIHRvIHJldHVybiBzb21ldGhpbmcgZWxzZToKKworICAgPj4+IE1hZ2ljTW9jaygpID09IDMKKyAgIEZhbHNlCisgICA+Pj4gTWFnaWNNb2NrKCkgIT0gMworICAgVHJ1ZQorICAgPj4+IG1vY2sgPSBNYWdpY01vY2soKQorICAgPj4+IG1vY2suX19lcV9fLnJldHVybl92YWx1ZSA9IFRydWUKKyAgID4+PiBtb2NrID09IDMKKyAgIFRydWUKKworVGhlIHJldHVybiB2YWx1ZSBvZiBgTWFnaWNNb2NrLl9faXRlcl9fYCBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdCBhbmQgaXNuJ3QKK3JlcXVpcmVkIHRvIGJlIGFuIGl0ZXJhdG9yOgorCisgICA+Pj4gbW9jayA9IE1hZ2ljTW9jaygpCisgICA+Pj4gbW9jay5fX2l0ZXJfXy5yZXR1cm5fdmFsdWUgPSBbJ2EnLCAnYicsICdjJ10KKyAgID4+PiBsaXN0KG1vY2spCisgICBbJ2EnLCAnYicsICdjJ10KKyAgID4+PiBsaXN0KG1vY2spCisgICBbJ2EnLCAnYicsICdjJ10KKworSWYgdGhlIHJldHVybiB2YWx1ZSAqaXMqIGFuIGl0ZXJhdG9yLCB0aGVuIGl0ZXJhdGluZyBvdmVyIGl0IG9uY2Ugd2lsbCBjb25zdW1lCitpdCBhbmQgc3Vic2VxdWVudCBpdGVyYXRpb25zIHdpbGwgcmVzdWx0IGluIGFuIGVtcHR5IGxpc3Q6CisKKyAgID4+PiBtb2NrLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IGl0ZXIoWydhJywgJ2InLCAnYyddKQorICAgPj4+IGxpc3QobW9jaykKKyAgIFsnYScsICdiJywgJ2MnXQorICAgPj4+IGxpc3QobW9jaykKKyAgIFtdCisKK2BgTWFnaWNNb2NrYGAgaGFzIGFsbCBvZiB0aGUgc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZHMgY29uZmlndXJlZCBleGNlcHQgZm9yIHNvbWUKK29mIHRoZSBvYnNjdXJlIGFuZCBvYnNvbGV0ZSBvbmVzLiBZb3UgY2FuIHN0aWxsIHNldCB0aGVzZSB1cCBpZiB5b3Ugd2FudC4KKworTWFnaWMgbWV0aG9kcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnV0IG5vdCBzZXR1cCBieSBkZWZhdWx0IGluIGBgTWFnaWNNb2NrYGAgYXJlOgorCisqIGBgX19zdWJjbGFzc2VzX19gYAorKiBgYF9fZGlyX19gYAorKiBgYF9fZm9ybWF0X19gYAorKiBgYF9fZ2V0X19gYCwgYGBfX3NldF9fYGAgYW5kIGBgX19kZWxldGVfX2BgCisqIGBgX19yZXZlcnNlZF9fYGAgYW5kIGBgX19taXNzaW5nX19gYAorKiBgYF9fcmVkdWNlX19gYCwgYGBfX3JlZHVjZV9leF9fYGAsIGBgX19nZXRpbml0YXJnc19fYGAsIGBgX19nZXRuZXdhcmdzX19gYCwKKyAgYGBfX2dldHN0YXRlX19gYCBhbmQgYGBfX3NldHN0YXRlX19gYAorKiBgYF9fZ2V0Zm9ybWF0X19gYCBhbmQgYGBfX3NldGZvcm1hdF9fYGAKKworCisKKy4uIFsjXSBNYWdpYyBtZXRob2RzICpzaG91bGQqIGJlIGxvb2tlZCB1cCBvbiB0aGUgY2xhc3MgcmF0aGVyIHRoYW4gdGhlCisgICBpbnN0YW5jZS4gRGlmZmVyZW50IHZlcnNpb25zIG9mIFB5dGhvbiBhcmUgaW5jb25zaXN0ZW50IGFib3V0IGFwcGx5aW5nIHRoaXMKKyAgIHJ1bGUuIFRoZSBzdXBwb3J0ZWQgcHJvdG9jb2wgbWV0aG9kcyBzaG91bGQgd29yayB3aXRoIGFsbCBzdXBwb3J0ZWQgdmVyc2lvbnMKKyAgIG9mIFB5dGhvbi4KKy4uIFsjXSBUaGUgZnVuY3Rpb24gaXMgYmFzaWNhbGx5IGhvb2tlZCB1cCB0byB0aGUgY2xhc3MsIGJ1dCBlYWNoIGBgTW9ja2BgCisgICBpbnN0YW5jZSBpcyBrZXB0IGlzb2xhdGVkIGZyb20gdGhlIG90aGVycy4KKworCitIZWxwZXJzCis9PT09PT09CisKK3NlbnRpbmVsCistLS0tLS0tLQorCisuLiBkYXRhOjogc2VudGluZWwKKworICAgIFRoZSBgYHNlbnRpbmVsYGAgb2JqZWN0IHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgb2YgcHJvdmlkaW5nIHVuaXF1ZQorICAgIG9iamVjdHMgZm9yIHlvdXIgdGVzdHMuCisKKyAgICBBdHRyaWJ1dGVzIGFyZSBjcmVhdGVkIG9uIGRlbWFuZCB3aGVuIHlvdSBhY2Nlc3MgdGhlbSBieSBuYW1lLiBBY2Nlc3NpbmcKKyAgICB0aGUgc2FtZSBhdHRyaWJ1dGUgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIG9iamVjdC4gVGhlIG9iamVjdHMKKyAgICByZXR1cm5lZCBoYXZlIGEgc2Vuc2libGUgcmVwciBzbyB0aGF0IHRlc3QgZmFpbHVyZSBtZXNzYWdlcyBhcmUgcmVhZGFibGUuCisKK1NvbWV0aW1lcyB3aGVuIHRlc3RpbmcgeW91IG5lZWQgdG8gdGVzdCB0aGF0IGEgc3BlY2lmaWMgb2JqZWN0IGlzIHBhc3NlZCBhcyBhbgorYXJndW1lbnQgdG8gYW5vdGhlciBtZXRob2QsIG9yIHJldHVybmVkLiBJdCBjYW4gYmUgY29tbW9uIHRvIGNyZWF0ZSBuYW1lZAorc2VudGluZWwgb2JqZWN0cyB0byB0ZXN0IHRoaXMuIGBzZW50aW5lbGAgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSBvZgorY3JlYXRpbmcgYW5kIHRlc3RpbmcgdGhlIGlkZW50aXR5IG9mIG9iamVjdHMgbGlrZSB0aGlzLgorCitJbiB0aGlzIGV4YW1wbGUgd2UgbW9ua2V5IHBhdGNoIGBtZXRob2RgIHRvIHJldHVybiBgc2VudGluZWwuc29tZV9vYmplY3RgOgorCisgICAgPj4+IHJlYWwgPSBQcm9kdWN0aW9uQ2xhc3MoKQorICAgID4+PiByZWFsLm1ldGhvZCA9IE1vY2sobmFtZT0ibWV0aG9kIikKKyAgICA+Pj4gcmVhbC5tZXRob2QucmV0dXJuX3ZhbHVlID0gc2VudGluZWwuc29tZV9vYmplY3QKKyAgICA+Pj4gcmVzdWx0ID0gcmVhbC5tZXRob2QoKQorICAgID4+PiBhc3NlcnQgcmVzdWx0IGlzIHNlbnRpbmVsLnNvbWVfb2JqZWN0CisgICAgPj4+IHNlbnRpbmVsLnNvbWVfb2JqZWN0CisgICAgc2VudGluZWwuc29tZV9vYmplY3QKKworCitERUZBVUxUCistLS0tLS0tCisKKworLi4gZGF0YTo6IERFRkFVTFQKKworICAgIFRoZSBgREVGQVVMVGAgb2JqZWN0IGlzIGEgcHJlLWNyZWF0ZWQgc2VudGluZWwgKGFjdHVhbGx5CisgICAgYHNlbnRpbmVsLkRFRkFVTFRgKS4gSXQgY2FuIGJlIHVzZWQgYnkgOmF0dHI6YH5Nb2NrLnNpZGVfZWZmZWN0YAorICAgIGZ1bmN0aW9ucyB0byBpbmRpY2F0ZSB0aGF0IHRoZSBub3JtYWwgcmV0dXJuIHZhbHVlIHNob3VsZCBiZSB1c2VkLgorCisKKworY2FsbAorLS0tLQorCisuLiBmdW5jdGlvbjo6IGNhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgYGNhbGxgIGlzIGEgaGVscGVyIG9iamVjdCBmb3IgbWFraW5nIHNpbXBsZXIgYXNzZXJ0aW9ucywgZm9yIGNvbXBhcmluZyB3aXRoCisgICAgOmF0dHI6YH5Nb2NrLmNhbGxfYXJnc2AsIDphdHRyOmB+TW9jay5jYWxsX2FyZ3NfbGlzdGAsCisgICAgOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgIGFuZCA6YXR0cjpgfk1vY2subWV0aG9kX2NhbGxzYC4gYGNhbGxgIGNhbiBhbHNvIGJlCisgICAgdXNlZCB3aXRoIDptZXRoOmB+TW9jay5hc3NlcnRfaGFzX2NhbGxzYC4KKworICAgICAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICAgICAgPj4+IG0oMSwgMiwgYT0nZm9vJywgYj0nYmFyJykKKyAgICAgICAgPj4+IG0oKQorICAgICAgICA+Pj4gbS5jYWxsX2FyZ3NfbGlzdCA9PSBbY2FsbCgxLCAyLCBhPSdmb28nLCBiPSdiYXInKSwgY2FsbCgpXQorICAgICAgICBUcnVlCisKKy4uIG1ldGhvZDo6IGNhbGwuY2FsbF9saXN0KCkKKworICAgIEZvciBhIGNhbGwgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBtdWx0aXBsZSBjYWxscywgYGNhbGxfbGlzdGAKKyAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlIGludGVybWVkaWF0ZSBjYWxscyBhcyB3ZWxsIGFzIHRoZQorICAgIGZpbmFsIGNhbGwuCisKK2BjYWxsX2xpc3RgIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIG1ha2luZyBhc3NlcnRpb25zIG9uICJjaGFpbmVkIGNhbGxzIi4gQQorY2hhaW5lZCBjYWxsIGlzIG11bHRpcGxlIGNhbGxzIG9uIGEgc2luZ2xlIGxpbmUgb2YgY29kZS4gVGhpcyByZXN1bHRzIGluCittdWx0aXBsZSBlbnRyaWVzIGluIDphdHRyOmB+TW9jay5tb2NrX2NhbGxzYCBvbiBhIG1vY2suIE1hbnVhbGx5IGNvbnN0cnVjdGluZwordGhlIHNlcXVlbmNlIG9mIGNhbGxzIGNhbiBiZSB0ZWRpb3VzLgorCis6bWV0aDpgfmNhbGwuY2FsbF9saXN0YCBjYW4gY29uc3RydWN0IHRoZSBzZXF1ZW5jZSBvZiBjYWxscyBmcm9tIHRoZSBzYW1lCitjaGFpbmVkIGNhbGw6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jaygpCisgICAgPj4+IG0oMSkubWV0aG9kKGFyZz0nZm9vJykub3RoZXIoJ2JhcicpKDIuMCkKKyAgICA8TWFnaWNNb2NrIG5hbWU9J21vY2soKS5tZXRob2QoKS5vdGhlcigpKCknIGlkPScuLi4nPgorICAgID4+PiBrYWxsID0gY2FsbCgxKS5tZXRob2QoYXJnPSdmb28nKS5vdGhlcignYmFyJykoMi4wKQorICAgID4+PiBrYWxsLmNhbGxfbGlzdCgpCisgICAgW2NhbGwoMSksCisgICAgIGNhbGwoKS5tZXRob2QoYXJnPSdmb28nKSwKKyAgICAgY2FsbCgpLm1ldGhvZCgpLm90aGVyKCdiYXInKSwKKyAgICAgY2FsbCgpLm1ldGhvZCgpLm90aGVyKCkoMi4wKV0KKyAgICA+Pj4gbS5tb2NrX2NhbGxzID09IGthbGwuY2FsbF9saXN0KCkKKyAgICBUcnVlCisKKy4uIF9jYWxscy1hcy10dXBsZXM6CisKK0EgYGNhbGxgIG9iamVjdCBpcyBlaXRoZXIgYSB0dXBsZSBvZiAocG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpIG9yCisobmFtZSwgcG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpIGRlcGVuZGluZyBvbiBob3cgaXQgd2FzIGNvbnN0cnVjdGVkLiBXaGVuCit5b3UgY29uc3RydWN0IHRoZW0geW91cnNlbGYgdGhpcyBpc24ndCBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcsIGJ1dCB0aGUgYGNhbGxgCitvYmplY3RzIHRoYXQgYXJlIGluIHRoZSA6YXR0cjpgTW9jay5jYWxsX2FyZ3NgLCA6YXR0cjpgTW9jay5jYWxsX2FyZ3NfbGlzdGAgYW5kCis6YXR0cjpgTW9jay5tb2NrX2NhbGxzYCBhdHRyaWJ1dGVzIGNhbiBiZSBpbnRyb3NwZWN0ZWQgdG8gZ2V0IGF0IHRoZSBpbmRpdmlkdWFsCithcmd1bWVudHMgdGhleSBjb250YWluLgorCitUaGUgYGNhbGxgIG9iamVjdHMgaW4gOmF0dHI6YE1vY2suY2FsbF9hcmdzYCBhbmQgOmF0dHI6YE1vY2suY2FsbF9hcmdzX2xpc3RgCithcmUgdHdvLXR1cGxlcyBvZiAocG9zaXRpb25hbCBhcmdzLCBrZXl3b3JkIGFyZ3MpIHdoZXJlYXMgdGhlIGBjYWxsYCBvYmplY3RzCitpbiA6YXR0cjpgTW9jay5tb2NrX2NhbGxzYCwgYWxvbmcgd2l0aCBvbmVzIHlvdSBjb25zdHJ1Y3QgeW91cnNlbGYsIGFyZQordGhyZWUtdHVwbGVzIG9mIChuYW1lLCBwb3NpdGlvbmFsIGFyZ3MsIGtleXdvcmQgYXJncykuCisKK1lvdSBjYW4gdXNlIHRoZWlyICJ0dXBsZW5lc3MiIHRvIHB1bGwgb3V0IHRoZSBpbmRpdmlkdWFsIGFyZ3VtZW50cyBmb3IgbW9yZQorY29tcGxleCBpbnRyb3NwZWN0aW9uIGFuZCBhc3NlcnRpb25zLiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIGEgdHVwbGUKKyhhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSBhcmUgbm8gcG9zaXRpb25hbCBhcmd1bWVudHMpIGFuZCB0aGUga2V5d29yZAorYXJndW1lbnRzIGFyZSBhIGRpY3Rpb25hcnk6CisKKyAgICA+Pj4gbSA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9Tm9uZSkKKyAgICA+Pj4gbSgxLCAyLCAzLCBhcmc9J29uZScsIGFyZzI9J3R3bycpCisgICAgPj4+IGthbGwgPSBtLmNhbGxfYXJncworICAgID4+PiBhcmdzLCBrd2FyZ3MgPSBrYWxsCisgICAgPj4+IGFyZ3MKKyAgICAoMSwgMiwgMykKKyAgICA+Pj4ga3dhcmdzCisgICAgeydhcmcyJzogJ3R3bycsICdhcmcnOiAnb25lJ30KKyAgICA+Pj4gYXJncyBpcyBrYWxsWzBdCisgICAgVHJ1ZQorICAgID4+PiBrd2FyZ3MgaXMga2FsbFsxXQorICAgIFRydWUKKworICAgID4+PiBtID0gTWFnaWNNb2NrKCkKKyAgICA+Pj4gbS5mb28oNCwgNSwgNiwgYXJnPSd0d28nLCBhcmcyPSd0aHJlZScpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLmZvbygpJyBpZD0nLi4uJz4KKyAgICA+Pj4ga2FsbCA9IG0ubW9ja19jYWxsc1swXQorICAgID4+PiBuYW1lLCBhcmdzLCBrd2FyZ3MgPSBrYWxsCisgICAgPj4+IG5hbWUKKyAgICAnZm9vJworICAgID4+PiBhcmdzCisgICAgKDQsIDUsIDYpCisgICAgPj4+IGt3YXJncworICAgIHsnYXJnMic6ICd0aHJlZScsICdhcmcnOiAndHdvJ30KKyAgICA+Pj4gbmFtZSBpcyBtLm1vY2tfY2FsbHNbMF1bMF0KKyAgICBUcnVlCisKKworY3JlYXRlX2F1dG9zcGVjCistLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9RmFsc2UsIGluc3RhbmNlPUZhbHNlLCAqKmt3YXJncykKKworICAgIENyZWF0ZSBhIG1vY2sgb2JqZWN0IHVzaW5nIGFub3RoZXIgb2JqZWN0IGFzIGEgc3BlYy4gQXR0cmlidXRlcyBvbiB0aGUKKyAgICBtb2NrIHdpbGwgdXNlIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvbiB0aGUgYHNwZWNgIG9iamVjdCBhcyB0aGVpcgorICAgIHNwZWMuCisKKyAgICBGdW5jdGlvbnMgb3IgbWV0aG9kcyBiZWluZyBtb2NrZWQgd2lsbCBoYXZlIHRoZWlyIGFyZ3VtZW50cyBjaGVja2VkIHRvCisgICAgZW5zdXJlIHRoYXQgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3Qgc2lnbmF0dXJlLgorCisgICAgSWYgYHNwZWNfc2V0YCBpcyBgVHJ1ZWAgdGhlbiBhdHRlbXB0aW5nIHRvIHNldCBhdHRyaWJ1dGVzIHRoYXQgZG9uJ3QgZXhpc3QKKyAgICBvbiB0aGUgc3BlYyBvYmplY3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgSWYgYSBjbGFzcyBpcyB1c2VkIGFzIGEgc3BlYyB0aGVuIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIG1vY2sgKHRoZQorICAgIGluc3RhbmNlIG9mIHRoZSBjbGFzcykgd2lsbCBoYXZlIHRoZSBzYW1lIHNwZWMuIFlvdSBjYW4gdXNlIGEgY2xhc3MgYXMgdGhlCisgICAgc3BlYyBmb3IgYW4gaW5zdGFuY2Ugb2JqZWN0IGJ5IHBhc3NpbmcgYGluc3RhbmNlPVRydWVgLiBUaGUgcmV0dXJuZWQgbW9jaworICAgIHdpbGwgb25seSBiZSBjYWxsYWJsZSBpZiBpbnN0YW5jZXMgb2YgdGhlIG1vY2sgYXJlIGNhbGxhYmxlLgorCisgICAgYGNyZWF0ZV9hdXRvc3BlY2AgYWxzbyB0YWtlcyBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgcGFzc2VkIHRvCisgICAgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBjcmVhdGVkIG1vY2suCisKK1NlZSA6cmVmOmBhdXRvLXNwZWNjaW5nYCBmb3IgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSBhdXRvLXNwZWNjaW5nIHdpdGgKK2BjcmVhdGVfYXV0b3NwZWNgIGFuZCB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudCB0byA6ZnVuYzpgcGF0Y2hgLgorCisKK0FOWQorLS0tCisKKy4uIGRhdGE6OiBBTlkKKworU29tZXRpbWVzIHlvdSBtYXkgbmVlZCB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgKnNvbWUqIG9mIHRoZSBhcmd1bWVudHMgaW4gYQorY2FsbCB0byBtb2NrLCBidXQgZWl0aGVyIG5vdCBjYXJlIGFib3V0IHNvbWUgb2YgdGhlIGFyZ3VtZW50cyBvciB3YW50IHRvIHB1bGwKK3RoZW0gaW5kaXZpZHVhbGx5IG91dCBvZiA6YXR0cjpgfk1vY2suY2FsbF9hcmdzYCBhbmQgbWFrZSBtb3JlIGNvbXBsZXgKK2Fzc2VydGlvbnMgb24gdGhlbS4KKworVG8gaWdub3JlIGNlcnRhaW4gYXJndW1lbnRzIHlvdSBjYW4gcGFzcyBpbiBvYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCB0bworKmV2ZXJ5dGhpbmcqLiBDYWxscyB0byA6bWV0aDpgfk1vY2suYXNzZXJ0X2NhbGxlZF93aXRoYCBhbmQKKzptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgd2lsbCB0aGVuIHN1Y2NlZWQgbm8gbWF0dGVyIHdoYXQgd2FzCitwYXNzZWQgaW4uCisKKyAgICA+Pj4gbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG1vY2soJ2ZvbycsIGJhcj1vYmplY3QoKSkKKyAgICA+Pj4gbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgYmFyPUFOWSkKKworYEFOWWAgY2FuIGFsc28gYmUgdXNlZCBpbiBjb21wYXJpc29ucyB3aXRoIGNhbGwgbGlzdHMgbGlrZQorOmF0dHI6YH5Nb2NrLm1vY2tfY2FsbHNgOgorCisgICAgPj4+IG0gPSBNYWdpY01vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgPj4+IG0oMSkKKyAgICA+Pj4gbSgxLCAyKQorICAgID4+PiBtKG9iamVjdCgpKQorICAgID4+PiBtLm1vY2tfY2FsbHMgPT0gW2NhbGwoMSksIGNhbGwoMSwgMiksIEFOWV0KKyAgICBUcnVlCisKKworCitGSUxURVJfRElSCistLS0tLS0tLS0tCisKKy4uIGRhdGE6OiBGSUxURVJfRElSCisKK2BGSUxURVJfRElSYCBpcyBhIG1vZHVsZSBsZXZlbCB2YXJpYWJsZSB0aGF0IGNvbnRyb2xzIHRoZSB3YXkgbW9jayBvYmplY3RzCityZXNwb25kIHRvIGBkaXJgIChvbmx5IGZvciBQeXRob24gMi42IG9yIG1vcmUgcmVjZW50KS4gVGhlIGRlZmF1bHQgaXMgYFRydWVgLAord2hpY2ggdXNlcyB0aGUgZmlsdGVyaW5nIGRlc2NyaWJlZCBiZWxvdywgdG8gb25seSBzaG93IHVzZWZ1bCBtZW1iZXJzLiBJZiB5b3UKK2Rpc2xpa2UgdGhpcyBmaWx0ZXJpbmcsIG9yIG5lZWQgdG8gc3dpdGNoIGl0IG9mZiBmb3IgZGlhZ25vc3RpYyBwdXJwb3NlcywgdGhlbgorc2V0IGBtb2NrLkZJTFRFUl9ESVIgPSBGYWxzZWAuCisKK1dpdGggZmlsdGVyaW5nIG9uLCBgZGlyKHNvbWVfbW9jaylgIHNob3dzIG9ubHkgdXNlZnVsIGF0dHJpYnV0ZXMgYW5kIHdpbGwKK2luY2x1ZGUgYW55IGR5bmFtaWNhbGx5IGNyZWF0ZWQgYXR0cmlidXRlcyB0aGF0IHdvdWxkbid0IG5vcm1hbGx5IGJlIHNob3duLgorSWYgdGhlIG1vY2sgd2FzIGNyZWF0ZWQgd2l0aCBhIGBzcGVjYCAob3IgYGF1dG9zcGVjYCBvZiBjb3Vyc2UpIHRoZW4gYWxsIHRoZQorYXR0cmlidXRlcyBmcm9tIHRoZSBvcmlnaW5hbCBhcmUgc2hvd24sIGV2ZW4gaWYgdGhleSBoYXZlbid0IGJlZW4gYWNjZXNzZWQKK3lldDoKKworICAgID4+PiBkaXIoTW9jaygpKQorICAgIFsnYXNzZXJ0X2FueV9jYWxsJywKKyAgICAgJ2Fzc2VydF9jYWxsZWRfb25jZV93aXRoJywKKyAgICAgJ2Fzc2VydF9jYWxsZWRfd2l0aCcsCisgICAgICdhc3NlcnRfaGFzX2NhbGxzJywKKyAgICAgJ2F0dGFjaF9tb2NrJywKKyAgICAgLi4uCisgICAgPj4+IGZyb20gdXJsbGliIGltcG9ydCByZXF1ZXN0CisgICAgPj4+IGRpcihNb2NrKHNwZWM9cmVxdWVzdCkpCisgICAgWydBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXInLAorICAgICAnQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcicsCisgICAgICdBYnN0cmFjdEhUVFBIYW5kbGVyJywKKyAgICAgJ0Jhc2VIYW5kbGVyJywKKyAgICAgLi4uCisKK01hbnkgb2YgdGhlIG5vdC12ZXJ5LXVzZWZ1bCAocHJpdmF0ZSB0byBgTW9ja2AgcmF0aGVyIHRoYW4gdGhlIHRoaW5nIGJlaW5nCittb2NrZWQpIHVuZGVyc2NvcmUgYW5kIGRvdWJsZSB1bmRlcnNjb3JlIHByZWZpeGVkIGF0dHJpYnV0ZXMgaGF2ZSBiZWVuCitmaWx0ZXJlZCBmcm9tIHRoZSByZXN1bHQgb2YgY2FsbGluZyBgZGlyYCBvbiBhIGBNb2NrYC4gSWYgeW91IGRpc2xpa2UgdGhpcworYmVoYXZpb3VyIHlvdSBjYW4gc3dpdGNoIGl0IG9mZiBieSBzZXR0aW5nIHRoZSBtb2R1bGUgbGV2ZWwgc3dpdGNoCitgRklMVEVSX0RJUmA6CisKKyAgICA+Pj4gZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworICAgID4+PiBtb2NrLkZJTFRFUl9ESVIgPSBGYWxzZQorICAgID4+PiBkaXIobW9jay5Nb2NrKCkpCisgICAgWydfTm9uQ2FsbGFibGVNb2NrX19nZXRfcmV0dXJuX3ZhbHVlJywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX2dldF9zaWRlX2VmZmVjdCcsCisgICAgICdfTm9uQ2FsbGFibGVNb2NrX19yZXR1cm5fdmFsdWVfZG9jJywKKyAgICAgJ19Ob25DYWxsYWJsZU1vY2tfX3NldF9yZXR1cm5fdmFsdWUnLAorICAgICAnX05vbkNhbGxhYmxlTW9ja19fc2V0X3NpZGVfZWZmZWN0JywKKyAgICAgJ19fY2FsbF9fJywKKyAgICAgJ19fY2xhc3NfXycsCisgICAgIC4uLgorCitBbHRlcm5hdGl2ZWx5IHlvdSBjYW4ganVzdCB1c2UgYHZhcnMobXlfbW9jaylgIChpbnN0YW5jZSBtZW1iZXJzKSBhbmQKK2BkaXIodHlwZShteV9tb2NrKSlgICh0eXBlIG1lbWJlcnMpIHRvIGJ5cGFzcyB0aGUgZmlsdGVyaW5nIGlycmVzcGVjdGl2ZSBvZgorYG1vY2suRklMVEVSX0RJUmAuCisKKworbW9ja19vcGVuCistLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBtb2NrX29wZW4obW9jaz1Ob25lLCByZWFkX2RhdGE9Tm9uZSkKKworICAgIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1vY2sgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIGBvcGVuYC4gSXQgd29ya3MKKyAgICBmb3IgYG9wZW5gIGNhbGxlZCBkaXJlY3RseSBvciB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgVGhlIGBtb2NrYCBhcmd1bWVudCBpcyB0aGUgbW9jayBvYmplY3QgdG8gY29uZmlndXJlLiBJZiBgTm9uZWAgKHRoZQorICAgIGRlZmF1bHQpIHRoZW4gYSBgTWFnaWNNb2NrYCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSwgd2l0aCB0aGUgQVBJIGxpbWl0ZWQKKyAgICB0byBtZXRob2RzIG9yIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIG9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcy4KKworICAgIGByZWFkX2RhdGFgIGlzIGEgc3RyaW5nIGZvciB0aGUgYHJlYWRgIG1ldGhvZCBvZiB0aGUgZmlsZSBoYW5kbGUgdG8gcmV0dXJuLgorICAgIFRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQuCisKK1VzaW5nIGBvcGVuYCBhcyBhIGNvbnRleHQgbWFuYWdlciBpcyBhIGdyZWF0IHdheSB0byBlbnN1cmUgeW91ciBmaWxlIGhhbmRsZXMKK2FyZSBjbG9zZWQgcHJvcGVybHkgYW5kIGlzIGJlY29taW5nIGNvbW1vbjo6CisKKyAgICB3aXRoIG9wZW4oJy9zb21lL3BhdGgnLCAndycpIGFzIGY6CisgICAgICAgIGYud3JpdGUoJ3NvbWV0aGluZycpCisKK1RoZSBpc3N1ZSBpcyB0aGF0IGV2ZW4gaWYgeW91IG1vY2sgb3V0IHRoZSBjYWxsIHRvIGBvcGVuYCBpdCBpcyB0aGUKKypyZXR1cm5lZCBvYmplY3QqIHRoYXQgaXMgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciAoYW5kIGhhcyBgX19lbnRlcl9fYCBhbmQKK2BfX2V4aXRfX2AgY2FsbGVkKS4KKworTW9ja2luZyBjb250ZXh0IG1hbmFnZXJzIHdpdGggYSA6Y2xhc3M6YE1hZ2ljTW9ja2AgaXMgY29tbW9uIGVub3VnaCBhbmQgZmlkZGx5Citlbm91Z2ggdGhhdCBhIGhlbHBlciBmdW5jdGlvbiBpcyB1c2VmdWwuCisKKyAgICA+Pj4gbSA9IG1vY2tfb3BlbigpCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLm9wZW4nLCBtLCBjcmVhdGU9VHJ1ZSk6CisgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycsICd3JykgYXMgaDoKKyAgICAuLi4gICAgICAgICBoLndyaXRlKCdzb21lIHN0dWZmJykKKyAgICAuLi4KKyAgICA+Pj4gbS5tb2NrX2NhbGxzCisgICAgW2NhbGwoJ2ZvbycsICd3JyksCisgICAgIGNhbGwoKS5fX2VudGVyX18oKSwKKyAgICAgY2FsbCgpLndyaXRlKCdzb21lIHN0dWZmJyksCisgICAgIGNhbGwoKS5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKV0KKyAgICA+Pj4gbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJywgJ3cnKQorICAgID4+PiBoYW5kbGUgPSBtKCkKKyAgICA+Pj4gaGFuZGxlLndyaXRlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdzb21lIHN0dWZmJykKKworQW5kIGZvciByZWFkaW5nIGZpbGVzOgorCisgICAgPj4+IHdpdGggcGF0Y2goJ19fbWFpbl9fLm9wZW4nLCBtb2NrX29wZW4ocmVhZF9kYXRhPSdiaWJibGUnKSwgY3JlYXRlPVRydWUpIGFzIG06CisgICAgLi4uICAgICB3aXRoIG9wZW4oJ2ZvbycpIGFzIGg6CisgICAgLi4uICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKKyAgICAuLi4KKyAgICA+Pj4gbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgnZm9vJykKKyAgICA+Pj4gYXNzZXJ0IHJlc3VsdCA9PSAnYmliYmxlJworCisKKy4uIF9hdXRvLXNwZWNjaW5nOgorCitBdXRvc3BlY2NpbmcKKy0tLS0tLS0tLS0tLQorCitBdXRvc3BlY2NpbmcgaXMgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGBzcGVjYCBmZWF0dXJlIG9mIG1vY2suIEl0IGxpbWl0cyB0aGUKK2FwaSBvZiBtb2NrcyB0byB0aGUgYXBpIG9mIGFuIG9yaWdpbmFsIG9iamVjdCAodGhlIHNwZWMpLCBidXQgaXQgaXMgcmVjdXJzaXZlCisoaW1wbGVtZW50ZWQgbGF6aWx5KSBzbyB0aGF0IGF0dHJpYnV0ZXMgb2YgbW9ja3Mgb25seSBoYXZlIHRoZSBzYW1lIGFwaSBhcwordGhlIGF0dHJpYnV0ZXMgb2YgdGhlIHNwZWMuIEluIGFkZGl0aW9uIG1vY2tlZCBmdW5jdGlvbnMgLyBtZXRob2RzIGhhdmUgdGhlCitzYW1lIGNhbGwgc2lnbmF0dXJlIGFzIHRoZSBvcmlnaW5hbCBzbyB0aGV5IHJhaXNlIGEgYFR5cGVFcnJvcmAgaWYgdGhleSBhcmUKK2NhbGxlZCBpbmNvcnJlY3RseS4KKworQmVmb3JlIEkgZXhwbGFpbiBob3cgYXV0by1zcGVjY2luZyB3b3JrcywgaGVyZSdzIHdoeSBpdCBpcyBuZWVkZWQuCisKK2BNb2NrYCBpcyBhIHZlcnkgcG93ZXJmdWwgYW5kIGZsZXhpYmxlIG9iamVjdCwgYnV0IGl0IHN1ZmZlcnMgZnJvbSB0d28gZmxhd3MKK3doZW4gdXNlZCB0byBtb2NrIG91dCBvYmplY3RzIGZyb20gYSBzeXN0ZW0gdW5kZXIgdGVzdC4gT25lIG9mIHRoZXNlIGZsYXdzIGlzCitzcGVjaWZpYyB0byB0aGUgYE1vY2tgIGFwaSBhbmQgdGhlIG90aGVyIGlzIGEgbW9yZSBnZW5lcmFsIHByb2JsZW0gd2l0aCB1c2luZworbW9jayBvYmplY3RzLgorCitGaXJzdCB0aGUgcHJvYmxlbSBzcGVjaWZpYyB0byBgTW9ja2AuIGBNb2NrYCBoYXMgdHdvIGFzc2VydCBtZXRob2RzIHRoYXQgYXJlCitleHRyZW1lbHkgaGFuZHk6IDptZXRoOmB+TW9jay5hc3NlcnRfY2FsbGVkX3dpdGhgIGFuZAorOm1ldGg6YH5Nb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoYC4KKworICAgID4+PiBtb2NrID0gTW9jayhuYW1lPSdUaGluZycsIHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICA+Pj4gbW9jaygxLCAyLCAzKQorICAgID4+PiBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEsIDIsIDMpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgJ21vY2snIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworQmVjYXVzZSBtb2NrcyBhdXRvLWNyZWF0ZSBhdHRyaWJ1dGVzIG9uIGRlbWFuZCwgYW5kIGFsbG93IHlvdSB0byBjYWxsIHRoZW0KK3dpdGggYXJiaXRyYXJ5IGFyZ3VtZW50cywgaWYgeW91IG1pc3NwZWxsIG9uZSBvZiB0aGVzZSBhc3NlcnQgbWV0aG9kcyB0aGVuCit5b3VyIGFzc2VydGlvbiBpcyBnb25lOgorCisuLiBjb2RlLWJsb2NrOjogcHljb24KKworICAgID4+PiBtb2NrID0gTW9jayhuYW1lPSdUaGluZycsIHJldHVybl92YWx1ZT1Ob25lKQorICAgID4+PiBtb2NrKDEsIDIsIDMpCisgICAgPj4+IG1vY2suYXNzcmV0X2NhbGxlZF9vbmNlX3dpdGgoNCwgNSwgNikKKworWW91ciB0ZXN0cyBjYW4gcGFzcyBzaWxlbnRseSBhbmQgaW5jb3JyZWN0bHkgYmVjYXVzZSBvZiB0aGUgdHlwby4KKworVGhlIHNlY29uZCBpc3N1ZSBpcyBtb3JlIGdlbmVyYWwgdG8gbW9ja2luZy4gSWYgeW91IHJlZmFjdG9yIHNvbWUgb2YgeW91cgorY29kZSwgcmVuYW1lIG1lbWJlcnMgYW5kIHNvIG9uLCBhbnkgdGVzdHMgZm9yIGNvZGUgdGhhdCBpcyBzdGlsbCB1c2luZyB0aGUKKypvbGQgYXBpKiBidXQgdXNlcyBtb2NrcyBpbnN0ZWFkIG9mIHRoZSByZWFsIG9iamVjdHMgd2lsbCBzdGlsbCBwYXNzLiBUaGlzCittZWFucyB5b3VyIHRlc3RzIGNhbiBhbGwgcGFzcyBldmVuIHRob3VnaCB5b3VyIGNvZGUgaXMgYnJva2VuLgorCitOb3RlIHRoYXQgdGhpcyBpcyBhbm90aGVyIHJlYXNvbiB3aHkgeW91IG5lZWQgaW50ZWdyYXRpb24gdGVzdHMgYXMgd2VsbCBhcwordW5pdCB0ZXN0cy4gVGVzdGluZyBldmVyeXRoaW5nIGluIGlzb2xhdGlvbiBpcyBhbGwgZmluZSBhbmQgZGFuZHksIGJ1dCBpZiB5b3UKK2Rvbid0IHRlc3QgaG93IHlvdXIgdW5pdHMgYXJlICJ3aXJlZCB0b2dldGhlciIgdGhlcmUgaXMgc3RpbGwgbG90cyBvZiByb29tCitmb3IgYnVncyB0aGF0IHRlc3RzIG1pZ2h0IGhhdmUgY2F1Z2h0LgorCitgbW9ja2AgYWxyZWFkeSBwcm92aWRlcyBhIGZlYXR1cmUgdG8gaGVscCB3aXRoIHRoaXMsIGNhbGxlZCBzcGVjY2luZy4gSWYgeW91Cit1c2UgYSBjbGFzcyBvciBpbnN0YW5jZSBhcyB0aGUgYHNwZWNgIGZvciBhIG1vY2sgdGhlbiB5b3UgY2FuIG9ubHkgYWNjZXNzCithdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIHRoYXQgZXhpc3Qgb24gdGhlIHJlYWwgY2xhc3M6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gbW9jayA9IE1vY2soc3BlYz1yZXF1ZXN0LlJlcXVlc3QpCisgICAgPj4+IG1vY2suYXNzcmV0X2NhbGxlZF93aXRoCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYXNzcmV0X2NhbGxlZF93aXRoJworCitUaGUgc3BlYyBvbmx5IGFwcGxpZXMgdG8gdGhlIG1vY2sgaXRzZWxmLCBzbyB3ZSBzdGlsbCBoYXZlIHRoZSBzYW1lIGlzc3VlCit3aXRoIGFueSBtZXRob2RzIG9uIHRoZSBtb2NrOgorCisuLiBjb2RlLWJsb2NrOjogcHljb24KKworICAgID4+PiBtb2NrLmhhc19kYXRhKCkKKyAgICA8bW9jay5Nb2NrIG9iamVjdCBhdCAweC4uLj4KKyAgICA+Pj4gbW9jay5oYXNfZGF0YS5hc3NyZXRfY2FsbGVkX3dpdGgoKQorCitBdXRvLXNwZWNjaW5nIHNvbHZlcyB0aGlzIHByb2JsZW0uIFlvdSBjYW4gZWl0aGVyIHBhc3MgYGF1dG9zcGVjPVRydWVgIHRvCitgcGF0Y2hgIC8gYHBhdGNoLm9iamVjdGAgb3IgdXNlIHRoZSBgY3JlYXRlX2F1dG9zcGVjYCBmdW5jdGlvbiB0byBjcmVhdGUgYQorbW9jayB3aXRoIGEgc3BlYy4gSWYgeW91IHVzZSB0aGUgYGF1dG9zcGVjPVRydWVgIGFyZ3VtZW50IHRvIGBwYXRjaGAgdGhlbiB0aGUKK29iamVjdCB0aGF0IGlzIGJlaW5nIHJlcGxhY2VkIHdpbGwgYmUgdXNlZCBhcyB0aGUgc3BlYyBvYmplY3QuIEJlY2F1c2UgdGhlCitzcGVjY2luZyBpcyBkb25lICJsYXppbHkiICh0aGUgc3BlYyBpcyBjcmVhdGVkIGFzIGF0dHJpYnV0ZXMgb24gdGhlIG1vY2sgYXJlCithY2Nlc3NlZCkgeW91IGNhbiB1c2UgaXQgd2l0aCB2ZXJ5IGNvbXBsZXggb3IgZGVlcGx5IG5lc3RlZCBvYmplY3RzIChsaWtlCittb2R1bGVzIHRoYXQgaW1wb3J0IG1vZHVsZXMgdGhhdCBpbXBvcnQgbW9kdWxlcykgd2l0aG91dCBhIGJpZyBwZXJmb3JtYW5jZQoraGl0LgorCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBpdCBpbiB1c2U6CisKKyAgICA+Pj4gZnJvbSB1cmxsaWIgaW1wb3J0IHJlcXVlc3QKKyAgICA+Pj4gcGF0Y2hlciA9IHBhdGNoKCdfX21haW5fXy5yZXF1ZXN0JywgYXV0b3NwZWM9VHJ1ZSkKKyAgICA+Pj4gbW9ja19yZXF1ZXN0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgPj4+IHJlcXVlc3QgaXMgbW9ja19yZXF1ZXN0CisgICAgVHJ1ZQorICAgID4+PiBtb2NrX3JlcXVlc3QuUmVxdWVzdAorICAgIDxNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0JyBzcGVjPSdSZXF1ZXN0JyBpZD0nLi4uJz4KKworWW91IGNhbiBzZWUgdGhhdCBgcmVxdWVzdC5SZXF1ZXN0YCBoYXMgYSBzcGVjLiBgcmVxdWVzdC5SZXF1ZXN0YCB0YWtlcyB0d28KK2FyZ3VtZW50cyBpbiB0aGUgY29uc3RydWN0b3IgKG9uZSBvZiB3aGljaCBpcyBgc2VsZmApLiBIZXJlJ3Mgd2hhdCBoYXBwZW5zIGlmCit3ZSB0cnkgdG8gY2FsbCBpdCBpbmNvcnJlY3RseToKKworICAgID4+PiByZXEgPSByZXF1ZXN0LlJlcXVlc3QoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgVHlwZUVycm9yOiA8bGFtYmRhPigpIHRha2VzIGF0IGxlYXN0IDIgYXJndW1lbnRzICgxIGdpdmVuKQorCitUaGUgc3BlYyBhbHNvIGFwcGxpZXMgdG8gaW5zdGFudGlhdGVkIGNsYXNzZXMgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZgorc3BlY2NlZCBtb2Nrcyk6CisKKyAgICA+Pj4gcmVxID0gcmVxdWVzdC5SZXF1ZXN0KCdmb28nKQorICAgID4+PiByZXEKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0KCknIHNwZWM9J1JlcXVlc3QnIGlkPScuLi4nPgorCitgUmVxdWVzdGAgb2JqZWN0cyBhcmUgbm90IGNhbGxhYmxlLCBzbyB0aGUgcmV0dXJuIHZhbHVlIG9mIGluc3RhbnRpYXRpbmcgb3VyCittb2NrZWQgb3V0IGByZXF1ZXN0LlJlcXVlc3RgIGlzIGEgbm9uLWNhbGxhYmxlIG1vY2suIFdpdGggdGhlIHNwZWMgaW4gcGxhY2UKK2FueSB0eXBvcyBpbiBvdXIgYXNzZXJ0cyB3aWxsIHJhaXNlIHRoZSBjb3JyZWN0IGVycm9yOgorCisgICAgPj4+IHJlcS5hZGRfaGVhZGVyKCdzcGFtJywgJ2VnZ3MnKQorICAgIDxNYWdpY01vY2sgbmFtZT0ncmVxdWVzdC5SZXF1ZXN0KCkuYWRkX2hlYWRlcigpJyBpZD0nLi4uJz4KKyAgICA+Pj4gcmVxLmFkZF9oZWFkZXIuYXNzcmV0X2NhbGxlZF93aXRoCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAuLi4KKyAgICBBdHRyaWJ1dGVFcnJvcjogTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnYXNzcmV0X2NhbGxlZF93aXRoJworICAgID4+PiByZXEuYWRkX2hlYWRlci5hc3NlcnRfY2FsbGVkX3dpdGgoJ3NwYW0nLCAnZWdncycpCisKK0luIG1hbnkgY2FzZXMgeW91IHdpbGwganVzdCBiZSBhYmxlIHRvIGFkZCBgYXV0b3NwZWM9VHJ1ZWAgdG8geW91ciBleGlzdGluZworYHBhdGNoYCBjYWxscyBhbmQgdGhlbiBiZSBwcm90ZWN0ZWQgYWdhaW5zdCBidWdzIGR1ZSB0byB0eXBvcyBhbmQgYXBpCitjaGFuZ2VzLgorCitBcyB3ZWxsIGFzIHVzaW5nIGBhdXRvc3BlY2AgdGhyb3VnaCBgcGF0Y2hgIHRoZXJlIGlzIGEKKzpmdW5jOmBjcmVhdGVfYXV0b3NwZWNgIGZvciBjcmVhdGluZyBhdXRvc3BlY2NlZCBtb2NrcyBkaXJlY3RseToKKworICAgID4+PiBmcm9tIHVybGxpYiBpbXBvcnQgcmVxdWVzdAorICAgID4+PiBtb2NrX3JlcXVlc3QgPSBjcmVhdGVfYXV0b3NwZWMocmVxdWVzdCkKKyAgICA+Pj4gbW9ja19yZXF1ZXN0LlJlcXVlc3QoJ2ZvbycsICdiYXInKQorICAgIDxOb25DYWxsYWJsZU1hZ2ljTW9jayBuYW1lPSdtb2NrLlJlcXVlc3QoKScgc3BlYz0nUmVxdWVzdCcgaWQ9Jy4uLic+CisKK1RoaXMgaXNuJ3Qgd2l0aG91dCBjYXZlYXRzIGFuZCBsaW1pdGF0aW9ucyBob3dldmVyLCB3aGljaCBpcyB3aHkgaXQgaXMgbm90Cit0aGUgZGVmYXVsdCBiZWhhdmlvdXIuIEluIG9yZGVyIHRvIGtub3cgd2hhdCBhdHRyaWJ1dGVzIGFyZSBhdmFpbGFibGUgb24gdGhlCitzcGVjIG9iamVjdCwgYXV0b3NwZWMgaGFzIHRvIGludHJvc3BlY3QgKGFjY2VzcyBhdHRyaWJ1dGVzKSB0aGUgc3BlYy4gQXMgeW91Cit0cmF2ZXJzZSBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGEgY29ycmVzcG9uZGluZyB0cmF2ZXJzYWwgb2YgdGhlIG9yaWdpbmFsCitvYmplY3QgaXMgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJZiBhbnkgb2YgeW91ciBzcGVjY2VkIG9iamVjdHMgaGF2ZQorcHJvcGVydGllcyBvciBkZXNjcmlwdG9ycyB0aGF0IGNhbiB0cmlnZ2VyIGNvZGUgZXhlY3V0aW9uIHRoZW4geW91IG1heSBub3QgYmUKK2FibGUgdG8gdXNlIGF1dG9zcGVjLiBPbiB0aGUgb3RoZXIgaGFuZCBpdCBpcyBtdWNoIGJldHRlciB0byBkZXNpZ24geW91cgorb2JqZWN0cyBzbyB0aGF0IGludHJvc3BlY3Rpb24gaXMgc2FmZSBbI11fLgorCitBIG1vcmUgc2VyaW91cyBwcm9ibGVtIGlzIHRoYXQgaXQgaXMgY29tbW9uIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzIHRvIGJlCitjcmVhdGVkIGluIHRoZSBgX19pbml0X19gIG1ldGhvZCBhbmQgbm90IHRvIGV4aXN0IG9uIHRoZSBjbGFzcyBhdCBhbGwuCitgYXV0b3NwZWNgIGNhbid0IGtub3cgYWJvdXQgYW55IGR5bmFtaWNhbGx5IGNyZWF0ZWQgYXR0cmlidXRlcyBhbmQgcmVzdHJpY3RzCit0aGUgYXBpIHRvIHZpc2libGUgYXR0cmlidXRlcy4KKworICAgID4+PiBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAuLi4gICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICBzZWxmLmEgPSAzMworICAgIC4uLgorICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Tb21ldGhpbmcnLCBhdXRvc3BlYz1UcnVlKToKKyAgICAuLi4gICB0aGluZyA9IFNvbWV0aGluZygpCisgICAgLi4uICAgdGhpbmcuYQorICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIEF0dHJpYnV0ZUVycm9yOiBNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdhJworCitUaGVyZSBhcmUgYSBmZXcgZGlmZmVyZW50IHdheXMgb2YgcmVzb2x2aW5nIHRoaXMgcHJvYmxlbS4gVGhlIGVhc2llc3QsIGJ1dAorbm90IG5lY2Vzc2FyaWx5IHRoZSBsZWFzdCBhbm5veWluZywgd2F5IGlzIHRvIHNpbXBseSBzZXQgdGhlIHJlcXVpcmVkCithdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGNyZWF0aW9uLiBKdXN0IGJlY2F1c2UgYGF1dG9zcGVjYCBkb2Vzbid0IGFsbG93Cit5b3UgdG8gZmV0Y2ggYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0IG9uIHRoZSBzcGVjIGl0IGRvZXNuJ3QgcHJldmVudCB5b3UKK3NldHRpbmcgdGhlbToKKworICAgID4+PiB3aXRoIHBhdGNoKCdfX21haW5fXy5Tb21ldGhpbmcnLCBhdXRvc3BlYz1UcnVlKToKKyAgICAuLi4gICB0aGluZyA9IFNvbWV0aGluZygpCisgICAgLi4uICAgdGhpbmcuYSA9IDMzCisgICAgLi4uCisKK1RoZXJlIGlzIGEgbW9yZSBhZ2dyZXNzaXZlIHZlcnNpb24gb2YgYm90aCBgc3BlY2AgYW5kIGBhdXRvc3BlY2AgdGhhdCAqZG9lcyoKK3ByZXZlbnQgeW91IHNldHRpbmcgbm9uLWV4aXN0ZW50IGF0dHJpYnV0ZXMuIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvCitlbnN1cmUgeW91ciBjb2RlIG9ubHkgKnNldHMqIHZhbGlkIGF0dHJpYnV0ZXMgdG9vLCBidXQgb2J2aW91c2x5IGl0IHByZXZlbnRzCit0aGlzIHBhcnRpY3VsYXIgc2NlbmFyaW86CisKKyAgICA+Pj4gd2l0aCBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9VHJ1ZSwgc3BlY19zZXQ9VHJ1ZSk6CisgICAgLi4uICAgdGhpbmcgPSBTb21ldGhpbmcoKQorICAgIC4uLiAgIHRoaW5nLmEgPSAzMworICAgIC4uLgorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICAgQXR0cmlidXRlRXJyb3I6IE1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2EnCisKK1Byb2JhYmx5IHRoZSBiZXN0IHdheSBvZiBzb2x2aW5nIHRoZSBwcm9ibGVtIGlzIHRvIGFkZCBjbGFzcyBhdHRyaWJ1dGVzIGFzCitkZWZhdWx0IHZhbHVlcyBmb3IgaW5zdGFuY2UgbWVtYmVycyBpbml0aWFsaXNlZCBpbiBgX19pbml0X19gLiBOb3RlIHRoYXQgaWYKK3lvdSBhcmUgb25seSBzZXR0aW5nIGRlZmF1bHQgYXR0cmlidXRlcyBpbiBgX19pbml0X19gIHRoZW4gcHJvdmlkaW5nIHRoZW0gdmlhCitjbGFzcyBhdHRyaWJ1dGVzIChzaGFyZWQgYmV0d2VlbiBpbnN0YW5jZXMgb2YgY291cnNlKSBpcyBmYXN0ZXIgdG9vLiBlLmcuCisKKy4uIGNvZGUtYmxvY2s6OiBweXRob24KKworICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICBhID0gMzMKKworVGhpcyBicmluZ3MgdXAgYW5vdGhlciBpc3N1ZS4gSXQgaXMgcmVsYXRpdmVseSBjb21tb24gdG8gcHJvdmlkZSBhIGRlZmF1bHQKK3ZhbHVlIG9mIGBOb25lYCBmb3IgbWVtYmVycyB0aGF0IHdpbGwgbGF0ZXIgYmUgYW4gb2JqZWN0IG9mIGEgZGlmZmVyZW50IHR5cGUuCitgTm9uZWAgd291bGQgYmUgdXNlbGVzcyBhcyBhIHNwZWMgYmVjYXVzZSBpdCB3b3VsZG4ndCBsZXQgeW91IGFjY2VzcyAqYW55KgorYXR0cmlidXRlcyBvciBtZXRob2RzIG9uIGl0LiBBcyBgTm9uZWAgaXMgKm5ldmVyKiBnb2luZyB0byBiZSB1c2VmdWwgYXMgYQorc3BlYywgYW5kIHByb2JhYmx5IGluZGljYXRlcyBhIG1lbWJlciB0aGF0IHdpbGwgbm9ybWFsbHkgb2Ygc29tZSBvdGhlciB0eXBlLAorYGF1dG9zcGVjYCBkb2Vzbid0IHVzZSBhIHNwZWMgZm9yIG1lbWJlcnMgdGhhdCBhcmUgc2V0IHRvIGBOb25lYC4gVGhlc2Ugd2lsbAoranVzdCBiZSBvcmRpbmFyeSBtb2NrcyAod2VsbCAtIGBNYWdpY01vY2tzYCk6CisKKyAgICA+Pj4gY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgLi4uICAgICBtZW1iZXIgPSBOb25lCisgICAgLi4uCisgICAgPj4+IG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoU29tZXRoaW5nKQorICAgID4+PiBtb2NrLm1lbWJlci5mb28uYmFyLmJheigpCisgICAgPE1hZ2ljTW9jayBuYW1lPSdtb2NrLm1lbWJlci5mb28uYmFyLmJheigpJyBpZD0nLi4uJz4KKworSWYgbW9kaWZ5aW5nIHlvdXIgcHJvZHVjdGlvbiBjbGFzc2VzIHRvIGFkZCBkZWZhdWx0cyBpc24ndCB0byB5b3VyIGxpa2luZwordGhlbiB0aGVyZSBhcmUgbW9yZSBvcHRpb25zLiBPbmUgb2YgdGhlc2UgaXMgc2ltcGx5IHRvIHVzZSBhbiBpbnN0YW5jZSBhcyB0aGUKK3NwZWMgcmF0aGVyIHRoYW4gdGhlIGNsYXNzLiBUaGUgb3RoZXIgaXMgdG8gY3JlYXRlIGEgc3ViY2xhc3Mgb2YgdGhlCitwcm9kdWN0aW9uIGNsYXNzIGFuZCBhZGQgdGhlIGRlZmF1bHRzIHRvIHRoZSBzdWJjbGFzcyB3aXRob3V0IGFmZmVjdGluZyB0aGUKK3Byb2R1Y3Rpb24gY2xhc3MuIEJvdGggb2YgdGhlc2UgcmVxdWlyZSB5b3UgdG8gdXNlIGFuIGFsdGVybmF0aXZlIG9iamVjdCBhcwordGhlIHNwZWMuIFRoYW5rZnVsbHkgYHBhdGNoYCBzdXBwb3J0cyB0aGlzIC0geW91IGNhbiBzaW1wbHkgcGFzcyB0aGUKK2FsdGVybmF0aXZlIG9iamVjdCBhcyB0aGUgYGF1dG9zcGVjYCBhcmd1bWVudDoKKworICAgID4+PiBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAuLi4gICBkZWYgX19pbml0X18oc2VsZik6CisgICAgLi4uICAgICBzZWxmLmEgPSAzMworICAgIC4uLgorICAgID4+PiBjbGFzcyBTb21ldGhpbmdGb3JUZXN0KFNvbWV0aGluZyk6CisgICAgLi4uICAgYSA9IDMzCisgICAgLi4uCisgICAgPj4+IHAgPSBwYXRjaCgnX19tYWluX18uU29tZXRoaW5nJywgYXV0b3NwZWM9U29tZXRoaW5nRm9yVGVzdCkKKyAgICA+Pj4gbW9jayA9IHAuc3RhcnQoKQorICAgID4+PiBtb2NrLmEKKyAgICA8Tm9uQ2FsbGFibGVNYWdpY01vY2sgbmFtZT0nU29tZXRoaW5nLmEnIHNwZWM9J2ludCcgaWQ9Jy4uLic+CisKKworLi4gWyNdIFRoaXMgb25seSBhcHBsaWVzIHRvIGNsYXNzZXMgb3IgYWxyZWFkeSBpbnN0YW50aWF0ZWQgb2JqZWN0cy4gQ2FsbGluZworICAgYSBtb2NrZWQgY2xhc3MgdG8gY3JlYXRlIGEgbW9jayBpbnN0YW5jZSAqZG9lcyBub3QqIGNyZWF0ZSBhIHJlYWwgaW5zdGFuY2UuCisgICBJdCBpcyBvbmx5IGF0dHJpYnV0ZSBsb29rdXBzIC0gYWxvbmcgd2l0aCBjYWxscyB0byBgZGlyYCAtIHRoYXQgYXJlIGRvbmUuCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdAppbmRleCA3MmEzYTdiLi4yNjU3ZWJkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CkBAIC03OTIsMTEgKzc5MiwxNCBAQAogICAgICAgUnVuIHRoZSB0ZXN0LCBjb2xsZWN0aW5nIHRoZSByZXN1bHQgaW50byB0aGUgdGVzdCByZXN1bHQgb2JqZWN0IHBhc3NlZCBhcwogICAgICAgKnJlc3VsdCouICBJZiAqcmVzdWx0KiBpcyBvbWl0dGVkIG9yIGBgTm9uZWBgLCBhIHRlbXBvcmFyeSByZXN1bHQKICAgICAgIG9iamVjdCBpcyBjcmVhdGVkIChieSBjYWxsaW5nIHRoZSA6bWV0aDpgZGVmYXVsdFRlc3RSZXN1bHRgIG1ldGhvZCkgYW5kCi0gICAgICB1c2VkLiBUaGUgcmVzdWx0IG9iamVjdCBpcyBub3QgcmV0dXJuZWQgdG8gOm1ldGg6YHJ1bmAncyBjYWxsZXIuCisgICAgICB1c2VkLiBUaGUgcmVzdWx0IG9iamVjdCBpcyByZXR1cm5lZCB0byA6bWV0aDpgcnVuYCdzIGNhbGxlci4KIAogICAgICAgVGhlIHNhbWUgZWZmZWN0IG1heSBiZSBoYWQgYnkgc2ltcGx5IGNhbGxpbmcgdGhlIDpjbGFzczpgVGVzdENhc2VgCiAgICAgICBpbnN0YW5jZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIFByZXZpb3VzIHZlcnNpb25zIG9mIGBgcnVuYGAgZGlkIG5vdCByZXR1cm4gdGhlIHJlc3VsdC4gTmVpdGhlciBkaWQKKyAgICAgICAgIGNhbGxpbmcgYW4gaW5zdGFuY2UuCiAKICAgIC4uIG1ldGhvZDo6IHNraXBUZXN0KHJlYXNvbikKIApAQCAtODU3LDEwICs4NjAsMTEgQEAKICAgIHwgPFRlc3RDYXNlLmFzc2VydE5vdElzSW5zdGFuY2U+YCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwogCi0gICBBbGwgdGhlIGFzc2VydCBtZXRob2RzIChleGNlcHQgOm1ldGg6YGFzc2VydFJhaXNlc2AsCi0gICA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgYXNzZXJ0V2FybnNgLCA6bWV0aDpgYXNzZXJ0V2FybnNSZWdleGApCi0gICBhY2NlcHQgYSAqbXNnKiBhcmd1bWVudCB0aGF0LCBpZiBzcGVjaWZpZWQsIGlzIHVzZWQgYXMgdGhlIGVycm9yIG1lc3NhZ2Ugb24KLSAgIGZhaWx1cmUgKHNlZSBhbHNvIDpkYXRhOmBsb25nTWVzc2FnZWApLgorICAgQWxsIHRoZSBhc3NlcnQgbWV0aG9kcyBhY2NlcHQgYSAqbXNnKiBhcmd1bWVudCB0aGF0LCBpZiBzcGVjaWZpZWQsIGlzIHVzZWQKKyAgIGFzIHRoZSBlcnJvciBtZXNzYWdlIG9uIGZhaWx1cmUgKHNlZSBhbHNvIDpkYXRhOmBsb25nTWVzc2FnZWApLgorICAgTm90ZSB0aGF0IHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IGNhbiBiZSBwYXNzZWQgdG8gOm1ldGg6YGFzc2VydFJhaXNlc2AsCisgICA6bWV0aDpgYXNzZXJ0UmFpc2VzUmVnZXhgLCA6bWV0aDpgYXNzZXJ0V2FybnNgLCA6bWV0aDpgYXNzZXJ0V2FybnNSZWdleGAKKyAgIG9ubHkgd2hlbiB0aGV5IGFyZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKIApAQCAtOTU1LDcgKzk1OSw3IEBACiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKIAogICAgLi4gbWV0aG9kOjogYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgY2FsbGFibGUsICphcmdzLCAqKmt3ZHMpCi0gICAgICAgICAgICAgICBhc3NlcnRSYWlzZXMoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgYXNzZXJ0UmFpc2VzKGV4Y2VwdGlvbiwgbXNnPU5vbmUpCiAKICAgICAgIFRlc3QgdGhhdCBhbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gKmNhbGxhYmxlKiBpcyBjYWxsZWQgd2l0aCBhbnkKICAgICAgIHBvc2l0aW9uYWwgb3Iga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgYWxzbyBwYXNzZWQgdG8KQEAgLTk2NCwxMiArOTY4LDE2IEBACiAgICAgICBUbyBjYXRjaCBhbnkgb2YgYSBncm91cCBvZiBleGNlcHRpb25zLCBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VwdGlvbgogICAgICAgY2xhc3NlcyBtYXkgYmUgcGFzc2VkIGFzICpleGNlcHRpb24qLgogCi0gICAgICBJZiBvbmx5IHRoZSAqZXhjZXB0aW9uKiBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbwotICAgICAgdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKKyAgICAgIElmIG9ubHkgdGhlICpleGNlcHRpb24qIGFuZCBwb3NzaWJseSB0aGUgKm1zZyogYXJndW1lbnRzIGFyZSBnaXZlbiwKKyAgICAgIHJldHVybiBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyIHRlc3QgY2FuIGJlIHdyaXR0ZW4KKyAgICAgIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKIAogICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTb21lRXhjZXB0aW9uKToKICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICBXaGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIDptZXRoOmBhc3NlcnRSYWlzZXNgIGFjY2VwdHMgdGhlCisgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgKm1zZyouCisKICAgICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgd2lsbCBzdG9yZSB0aGUgY2F1Z2h0IGV4Y2VwdGlvbiBvYmplY3QgaW4gaXRzCiAgICAgICA6YXR0cjpgZXhjZXB0aW9uYCBhdHRyaWJ1dGUuICBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgdGhlIGludGVudGlvbgogICAgICAgaXMgdG8gcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUgZXhjZXB0aW9uIHJhaXNlZDo6CkBAIC05ODYsOSArOTk0LDEyIEBACiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgICAgQWRkZWQgdGhlIDphdHRyOmBleGNlcHRpb25gIGF0dHJpYnV0ZS4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4LCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFJhaXNlc1JlZ2V4KGV4Y2VwdGlvbiwgcmVnZXgpCisgICAgICAgICAgICAgICBhc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb24sIHJlZ2V4LCBtc2c9Tm9uZSkKIAogICAgICAgTGlrZSA6bWV0aDpgYXNzZXJ0UmFpc2VzYCBidXQgYWxzbyB0ZXN0cyB0aGF0ICpyZWdleCogbWF0Y2hlcwogICAgICAgb24gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbi4gICpyZWdleCogbWF5IGJlCkBAIC0xMDA1LDEyICsxMDE2LDE2IEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMQogICAgICAgICAgdW5kZXIgdGhlIG5hbWUgYGBhc3NlcnRSYWlzZXNSZWdleHBgYC4KKwogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgICAgIFJlbmFtZWQgdG8gOm1ldGg6YGFzc2VydFJhaXNlc1JlZ2V4YC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KKwogCiAgICAuLiBtZXRob2Q6OiBhc3NlcnRXYXJucyh3YXJuaW5nLCBjYWxsYWJsZSwgKmFyZ3MsICoqa3dkcykKLSAgICAgICAgICAgICAgIGFzc2VydFdhcm5zKHdhcm5pbmcpCisgICAgICAgICAgICAgICBhc3NlcnRXYXJucyh3YXJuaW5nLCBtc2c9Tm9uZSkKIAogICAgICAgVGVzdCB0aGF0IGEgd2FybmluZyBpcyB0cmlnZ2VyZWQgd2hlbiAqY2FsbGFibGUqIGlzIGNhbGxlZCB3aXRoIGFueQogICAgICAgcG9zaXRpb25hbCBvciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBhbHNvIHBhc3NlZCB0bwpAQCAtMTAxOSwxMiArMTAzNCwxNiBAQAogICAgICAgVG8gY2F0Y2ggYW55IG9mIGEgZ3JvdXAgb2Ygd2FybmluZ3MsIGEgdHVwbGUgY29udGFpbmluZyB0aGUgd2FybmluZwogICAgICAgY2xhc3NlcyBtYXkgYmUgcGFzc2VkIGFzICp3YXJuaW5ncyouCiAKLSAgICAgIElmIG9ubHkgdGhlICp3YXJuaW5nKiBhcmd1bWVudCBpcyBnaXZlbiwgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciBzbwotICAgICAgdGhhdCB0aGUgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSByYXRoZXIgdGhhbiBhcyBhIGZ1bmN0aW9uOjoKKyAgICAgIElmIG9ubHkgdGhlICp3YXJuaW5nKiBhbmQgcG9zc2libHkgdGhlICptc2cqIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sCisgICAgICByZXR1cm5zIGEgY29udGV4dCBtYW5hZ2VyIHNvIHRoYXQgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbgorICAgICAgaW5saW5lIHJhdGhlciB0aGFuIGFzIGEgZnVuY3Rpb246OgogCiAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoU29tZVdhcm5pbmcpOgogICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgIFdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciwgOm1ldGg6YGFzc2VydFJhaXNlc2AgYWNjZXB0cyB0aGUKKyAgICAgIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudCAqbXNnKi4KKwogICAgICAgVGhlIGNvbnRleHQgbWFuYWdlciB3aWxsIHN0b3JlIHRoZSBjYXVnaHQgd2FybmluZyBvYmplY3QgaW4gaXRzCiAgICAgICA6YXR0cjpgd2FybmluZ2AgYXR0cmlidXRlLCBhbmQgdGhlIHNvdXJjZSBsaW5lIHdoaWNoIHRyaWdnZXJlZCB0aGUKICAgICAgIHdhcm5pbmdzIGluIHRoZSA6YXR0cjpgZmlsZW5hbWVgIGFuZCA6YXR0cjpgbGluZW5vYCBhdHRyaWJ1dGVzLgpAQCAtMTA0Miw5ICsxMDYxLDEyIEBACiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgQWRkZWQgdGhlICptc2cqIGtleXdvcmQgYXJndW1lbnQgd2hlbiB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCiAKICAgIC4uIG1ldGhvZDo6IGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgsIGNhbGxhYmxlLCAqYXJncywgKiprd2RzKQotICAgICAgICAgICAgICAgYXNzZXJ0V2FybnNSZWdleCh3YXJuaW5nLCByZWdleCkKKyAgICAgICAgICAgICAgIGFzc2VydFdhcm5zUmVnZXgod2FybmluZywgcmVnZXgsIG1zZz1Ob25lKQogCiAgICAgICBMaWtlIDptZXRoOmBhc3NlcnRXYXJuc2AgYnV0IGFsc28gdGVzdHMgdGhhdCAqcmVnZXgqIG1hdGNoZXMgb24gdGhlCiAgICAgICBtZXNzYWdlIG9mIHRoZSB0cmlnZ2VyZWQgd2FybmluZy4gICpyZWdleCogbWF5IGJlIGEgcmVndWxhciBleHByZXNzaW9uCkBAIC0xMDYyLDYgKzEwODQsOCBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIEFkZGVkIHRoZSAqbXNnKiBrZXl3b3JkIGFyZ3VtZW50IHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4KIAogCiAgICBUaGVyZSBhcmUgYWxzbyBvdGhlciBtZXRob2RzIHVzZWQgdG8gcGVyZm9ybSBtb3JlIHNwZWNpZmljIGNoZWNrcywgc3VjaCBhczoKQEAgLTExNTEsMjEgKzExNzUsNiBAQAogICAgICAgICAgOm1ldGg6YC5hc3NlcnROb3RSZWdleGAuCiAKIAotICAgLi4gbWV0aG9kOjogYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0KHN1YnNldCwgZGljdGlvbmFyeSwgbXNnPU5vbmUpCi0KLSAgICAgIFRlc3RzIHdoZXRoZXIgdGhlIGtleS92YWx1ZSBwYWlycyBpbiAqZGljdGlvbmFyeSogYXJlIGEgc3VwZXJzZXQgb2YKLSAgICAgIHRob3NlIGluICpzdWJzZXQqLiAgSWYgbm90LCBhbiBlcnJvciBtZXNzYWdlIGxpc3RpbmcgdGhlIG1pc3Npbmcga2V5cwotICAgICAgYW5kIG1pc21hdGNoZWQgdmFsdWVzIGlzIGdlbmVyYXRlZC4KLQotICAgICAgTm90ZSwgdGhlIGFyZ3VtZW50cyBhcmUgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIG9mIHdoYXQgdGhlIG1ldGhvZCBuYW1lCi0gICAgICBkaWN0YXRlcy4gIEluc3RlYWQsIGNvbnNpZGVyIHVzaW5nIHRoZSBzZXQtbWV0aG9kcyBvbiA6cmVmOmBkaWN0aW9uYXJ5Ci0gICAgICB2aWV3cyA8ZGljdC12aWV3cz5gLCBmb3IgZXhhbXBsZTogYGBkLmtleXMoKSA8PSBlLmtleXMoKWBgIG9yCi0gICAgICBgYGQuaXRlbXMoKSA8PSBkLml0ZW1zKClgYC4KLQotICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCi0gICAgICAuLiBkZXByZWNhdGVkOjogMy4yCi0KLQogICAgLi4gbWV0aG9kOjogYXNzZXJ0Q291bnRFcXVhbChmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKIAogICAgICAgVGVzdCB0aGF0IHNlcXVlbmNlICpmaXJzdCogY29udGFpbnMgdGhlIHNhbWUgZWxlbWVudHMgYXMgKnNlY29uZCosCkBAIC0xMTgwLDIxICsxMTg5LDYgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIG1ldGhvZDo6IGFzc2VydFNhbWVFbGVtZW50cyhmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSkKLQotICAgICAgVGVzdCB0aGF0IHNlcXVlbmNlICpmaXJzdCogY29udGFpbnMgdGhlIHNhbWUgZWxlbWVudHMgYXMgKnNlY29uZCosCi0gICAgICByZWdhcmRsZXNzIG9mIHRoZWlyIG9yZGVyLiBXaGVuIHRoZXkgZG9uJ3QsIGFuIGVycm9yIG1lc3NhZ2UgbGlzdGluZwotICAgICAgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHNlcXVlbmNlcyB3aWxsIGJlIGdlbmVyYXRlZC4KLQotICAgICAgRHVwbGljYXRlIGVsZW1lbnRzIGFyZSBpZ25vcmVkIHdoZW4gY29tcGFyaW5nICpmaXJzdCogYW5kICpzZWNvbmQqLgotICAgICAgSXQgaXMgdGhlIGVxdWl2YWxlbnQgb2YgYGBhc3NlcnRFcXVhbChzZXQoZmlyc3QpLCBzZXQoc2Vjb25kKSlgYAotICAgICAgYnV0IGl0IHdvcmtzIHdpdGggc2VxdWVuY2VzIG9mIHVuaGFzaGFibGUgb2JqZWN0cyBhcyB3ZWxsLiBCZWNhdXNlCi0gICAgICBkdXBsaWNhdGVzIGFyZSBpZ25vcmVkLCB0aGlzIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgotICAgICAgOm1ldGg6YGFzc2VydENvdW50RXF1YWxgLgotCi0gICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjEKLSAgICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjIKLQogCiAgICAuLiBfdHlwZS1zcGVjaWZpYy1tZXRob2RzOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLmVycm9yLnJzdAppbmRleCAyODIzMjlmLi5lMjBkYjI3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS91cmxsaWIuZXJyb3IucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5lcnJvci5yc3QKQEAgLTgsMjEgKzgsMjMgQEAKIAogCiBUaGUgOm1vZDpgdXJsbGliLmVycm9yYCBtb2R1bGUgZGVmaW5lcyB0aGUgZXhjZXB0aW9uIGNsYXNzZXMgZm9yIGV4Y2VwdGlvbnMKLXJhaXNlZCBieSA6bW9kOmB1cmxsaWIucmVxdWVzdGAuICBUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgOmV4YzpgVVJMRXJyb3JgLAotd2hpY2ggaW5oZXJpdHMgZnJvbSA6ZXhjOmBJT0Vycm9yYC4KK3JhaXNlZCBieSA6bW9kOmB1cmxsaWIucmVxdWVzdGAuICBUaGUgYmFzZSBleGNlcHRpb24gY2xhc3MgaXMgOmV4YzpgVVJMRXJyb3JgLgogCiBUaGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMgYXJlIHJhaXNlZCBieSA6bW9kOmB1cmxsaWIuZXJyb3JgIGFzIGFwcHJvcHJpYXRlOgogCiAuLiBleGNlcHRpb246OiBVUkxFcnJvcgogCiAgICBUaGUgaGFuZGxlcnMgcmFpc2UgdGhpcyBleGNlcHRpb24gKG9yIGRlcml2ZWQgZXhjZXB0aW9ucykgd2hlbiB0aGV5IHJ1biBpbnRvCi0gICBhIHByb2JsZW0uICBJdCBpcyBhIHN1YmNsYXNzIG9mIDpleGM6YElPRXJyb3JgLgorICAgYSBwcm9ibGVtLiAgSXQgaXMgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogICAgLi4gYXR0cmlidXRlOjogcmVhc29uCiAKICAgICAgIFRoZSByZWFzb24gZm9yIHRoaXMgZXJyb3IuICBJdCBjYW4gYmUgYSBtZXNzYWdlIHN0cmluZyBvciBhbm90aGVyCi0gICAgICBleGNlcHRpb24gaW5zdGFuY2UgKDpleGM6YHNvY2tldC5lcnJvcmAgZm9yIHJlbW90ZSBVUkxzLCA6ZXhjOmBPU0Vycm9yYAotICAgICAgZm9yIGxvY2FsIFVSTHMpLgorICAgICAgZXhjZXB0aW9uIGluc3RhbmNlLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgOmV4YzpgVVJMRXJyb3JgIGhhcyBiZWVuIG1hZGUgYSBzdWJjbGFzcyBvZiA6ZXhjOmBPU0Vycm9yYCBpbnN0ZWFkCisgICAgICBvZiA6ZXhjOmBJT0Vycm9yYC4KIAogCiAuLiBleGNlcHRpb246OiBIVFRQRXJyb3IKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CmluZGV4IGJjMWRhNjIuLjIwOGNiOTcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdApAQCAtODEsOCArODEsNyBAQAogICAgdGhpcyBhcmd1bWVudCBpcyB0aGUgZW1wdHkgc3RyaW5nLgogCiAgICBJZiB0aGUgKmFsbG93X2ZyYWdtZW50cyogYXJndW1lbnQgaXMgZmFsc2UsIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBub3QKLSAgIGFsbG93ZWQsIGV2ZW4gaWYgdGhlIFVSTCdzIGFkZHJlc3Npbmcgc2NoZW1lIG5vcm1hbGx5IGRvZXMgc3VwcG9ydCB0aGVtLiAgVGhlCi0gICBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGFyZ3VtZW50IGlzIDpjb25zdDpgVHJ1ZWAuCisgICBhbGxvd2VkLiAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMgYXJndW1lbnQgaXMgOmNvbnN0OmBUcnVlYC4KIAogICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhY3R1YWxseSBhbiBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgdHVwbGVgLiAgVGhpcwogICAgY2xhc3MgaGFzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCByZWFkLW9ubHkgY29udmVuaWVuY2UgYXR0cmlidXRlczoKQEAgLTExOSw2ICsxMTgsMTEgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBJUHY2IFVSTCBwYXJzaW5nIGNhcGFiaWxpdGllcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSBmcmFnbWVudCBpcyBub3cgcGFyc2VkIGZvciBhbGwgVVJMIHNjaGVtZXMgKHVubGVzcyAqYWxsb3dfZnJhZ21lbnQqIGlzCisgICAgICBmYWxzZSksIGluIGFjY29yZGFuY2Ugd2l0aCA6cmZjOmAzOTg2YC4gIFByZXZpb3VzbHksIGEgd2hpdGVsaXN0IG9mCisgICAgICBzY2hlbWVzIHRoYXQgc3VwcG9ydCBmcmFnbWVudHMgZXhpc3RlZC4KKwogCiAuLiBmdW5jdGlvbjo6IHBhcnNlX3FzKHFzLCBrZWVwX2JsYW5rX3ZhbHVlcz1GYWxzZSwgc3RyaWN0X3BhcnNpbmc9RmFsc2UsIGVuY29kaW5nPSd1dGYtOCcsIGVycm9ycz0ncmVwbGFjZScpCiAKQEAgLTE0MSw4ICsxNDUsOSBAQAogICAgcGVyY2VudC1lbmNvZGVkIHNlcXVlbmNlcyBpbnRvIFVuaWNvZGUgY2hhcmFjdGVycywgYXMgYWNjZXB0ZWQgYnkgdGhlCiAgICA6bWV0aDpgYnl0ZXMuZGVjb2RlYCBtZXRob2QuCiAKLSAgIFVzZSB0aGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRvIGNvbnZlcnQgc3VjaAotICAgZGljdGlvbmFyaWVzIGludG8gcXVlcnkgc3RyaW5ncy4KKyAgIFVzZSB0aGUgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uICh3aXRoIHRoZSBgYGRvc2VxYGAKKyAgIHBhcmFtZXRlciBzZXQgdG8gYGBUcnVlYGApIHRvIGNvbnZlcnQgc3VjaCBkaWN0aW9uYXJpZXMgaW50byBxdWVyeQorICAgc3RyaW5ncy4KIAogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IGI0NzY0Y2MuLjg5OGZlNzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTE2LDcgKzE2LDcgQEAKIFRoZSA6bW9kOmB1cmxsaWIucmVxdWVzdGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CiAKIAotLi4gZnVuY3Rpb246OiB1cmxvcGVuKHVybCwgZGF0YT1Ob25lWywgdGltZW91dF0sICosIGNhZmlsZT1Ob25lLCBjYXBhdGg9Tm9uZSkKKy4uIGZ1bmN0aW9uOjogdXJsb3Blbih1cmwsIGRhdGE9Tm9uZVssIHRpbWVvdXRdLCAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUsIGNhZGVmYXVsdD1UcnVlKQogCiAgICBPcGVuIHRoZSBVUkwgKnVybCosIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYQogICAgOmNsYXNzOmBSZXF1ZXN0YCBvYmplY3QuCkBAIC01Myw5ICs1MywxNSBAQAogICAgcG9pbnQgdG8gYSBkaXJlY3Rvcnkgb2YgaGFzaGVkIGNlcnRpZmljYXRlIGZpbGVzLiAgTW9yZSBpbmZvcm1hdGlvbiBjYW4KICAgIGJlIGZvdW5kIGluIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnNgLgogCisgICBUaGUgKmNhZGVmYXVsdCogcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRvIGZhbGwgYmFjayB0byBsb2FkaW5nIGEKKyAgIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZGVmaW5lZCBieSB0aGUgdW5kZXJseWluZyBPcGVuU1NMIGxpYnJhcnkgaWYgdGhlCisgICAqY2FmaWxlKiBhbmQgKmNhcGF0aCogcGFyYW1ldGVycyBhcmUgb21pdHRlZC4gIFRoaXMgd2lsbCBvbmx5IHdvcmsgb24KKyAgIHNvbWUgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorCiAgICAuLiB3YXJuaW5nOjoKLSAgICAgIElmIG5laXRoZXIgKmNhZmlsZSogbm9yICpjYXBhdGgqIGlzIHNwZWNpZmllZCwgYW4gSFRUUFMgcmVxdWVzdAotICAgICAgd2lsbCBub3QgZG8gYW55IHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyJ3MgY2VydGlmaWNhdGUuCisgICAgICBJZiBuZWl0aGVyICpjYWZpbGUqIG5vciAqY2FwYXRoKiBpcyBzcGVjaWZpZWQsIGFuZCAqY2FkZWZhdWx0KiBpcyBGYWxzZSwKKyAgICAgIGFuIEhUVFBTIHJlcXVlc3Qgd2lsbCBub3QgZG8gYW55IHZlcmlmaWNhdGlvbiBvZiB0aGUgc2VydmVyJ3MKKyAgICAgIGNlcnRpZmljYXRlLgogCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBmaWxlLWxpa2Ugb2JqZWN0IHRoYXQgd29ya3MgYXMgYSA6dGVybTpgY29udGV4dCBtYW5hZ2VyYCwKICAgIHdpdGggdHdvIGFkZGl0aW9uYWwgbWV0aG9kcyBmcm9tIHRoZSA6bW9kOmB1cmxsaWIucmVzcG9uc2VgIG1vZHVsZQpAQCAtOTIsNiArOTgsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAgICAgICAqZGF0YSogY2FuIGJlIGFuIGl0ZXJhYmxlIG9iamVjdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICpjYWRlZmF1bHQqIHdhcyBhZGRlZC4KKwogLi4gZnVuY3Rpb246OiBpbnN0YWxsX29wZW5lcihvcGVuZXIpCiAKICAgIEluc3RhbGwgYW4gOmNsYXNzOmBPcGVuZXJEaXJlY3RvcmAgaW5zdGFuY2UgYXMgdGhlIGRlZmF1bHQgZ2xvYmFsIG9wZW5lci4KQEAgLTE0NSw3ICsxNTQsNyBAQAogCiBUaGUgZm9sbG93aW5nIGNsYXNzZXMgYXJlIHByb3ZpZGVkOgogCi0uLiBjbGFzczo6IFJlcXVlc3QodXJsLCBkYXRhPU5vbmUsIGhlYWRlcnM9e30sIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UpCisuLiBjbGFzczo6IFJlcXVlc3QodXJsLCBkYXRhPU5vbmUsIGhlYWRlcnM9e30sIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UsIG1ldGhvZD1Ob25lKQogCiAgICBUaGlzIGNsYXNzIGlzIGFuIGFic3RyYWN0aW9uIG9mIGEgVVJMIHJlcXVlc3QuCiAKQEAgLTE5OCw2ICsyMDcsMTMgQEAKICAgIGRvY3VtZW50LCBhbmQgdGhlIHVzZXIgaGFkIG5vIG9wdGlvbiB0byBhcHByb3ZlIHRoZSBhdXRvbWF0aWMKICAgIGZldGNoaW5nIG9mIHRoZSBpbWFnZSwgdGhpcyBzaG91bGQgYmUgdHJ1ZS4KIAorICAgKm1ldGhvZCogc2hvdWxkIGJlIGEgc3RyaW5nIHRoYXQgaW5kaWNhdGVzIHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRoYXQKKyAgIHdpbGwgYmUgdXNlZCAoZS5nLiBgYCdIRUFEJ2BgKS4gIEl0cyB2YWx1ZSBpcyBzdG9yZWQgaW4gdGhlCisgICA6YXR0cjpgflJlcXVlc3QubWV0aG9kYCBhdHRyaWJ1dGUgYW5kIGlzIHVzZWQgYnkgOm1ldGg6YGdldF9tZXRob2QoKWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIGFyZ3VtZW50IGlzIGFkZGVkIHRvIHRoZSBSZXF1ZXN0IGNsYXNzLgorCiAKIC4uIGNsYXNzOjogT3BlbmVyRGlyZWN0b3IoKQogCkBAIC0yNjMsMTAgKzI3OSwxMSBAQAogCiAuLiBjbGFzczo6IEhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQogCi0gICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkIGJlCi0gICBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0byBzZWN0aW9uCi0gICA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0IGJlCi0gICBzdXBwb3J0ZWQuCisgICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkCisgICBiZSBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0bworICAgc2VjdGlvbiA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0CisgICBiZSBzdXBwb3J0ZWQuIEhUVFBCYXNpY0F1dGhIYW5kbGVyIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuCisgICBwcmVzZW50ZWQgd2l0aCBhIHdyb25nIEF1dGhlbnRpY2F0aW9uIHNjaGVtZS4KIAogCiAuLiBjbGFzczo6IFByb3h5QmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKQEAgLTI4OCwxMCArMzA1LDE5IEBACiAKIC4uIGNsYXNzOjogSFRUUERpZ2VzdEF1dGhIYW5kbGVyKHBhc3N3b3JkX21ncj1Ob25lKQogCi0gICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkIGJlCi0gICBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0byBzZWN0aW9uCi0gICA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0IGJlCi0gICBzdXBwb3J0ZWQuCisgICBIYW5kbGUgYXV0aGVudGljYXRpb24gd2l0aCB0aGUgcmVtb3RlIGhvc3QuICpwYXNzd29yZF9tZ3IqLCBpZiBnaXZlbiwgc2hvdWxkCisgICBiZSBzb21ldGhpbmcgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggOmNsYXNzOmBIVFRQUGFzc3dvcmRNZ3JgOyByZWZlciB0bworICAgc2VjdGlvbiA6cmVmOmBodHRwLXBhc3N3b3JkLW1ncmAgZm9yIGluZm9ybWF0aW9uIG9uIHRoZSBpbnRlcmZhY2UgdGhhdCBtdXN0CisgICBiZSBzdXBwb3J0ZWQuIFdoZW4gYm90aCBEaWdlc3QgQXV0aGVudGljYXRpb24gSGFuZGxlciBhbmQgQmFzaWMKKyAgIEF1dGhlbnRpY2F0aW9uIEhhbmRsZXIgYXJlIGJvdGggYWRkZWQsIERpZ2VzdCBBdXRoZW50aWNhdGlvbiBpcyBhbHdheXMgdHJpZWQKKyAgIGZpcnN0LiBJZiB0aGUgRGlnZXN0IEF1dGhlbnRpY2F0aW9uIHJldHVybnMgYSA0MHggcmVzcG9uc2UgYWdhaW4sIGl0IGlzIHNlbnQKKyAgIHRvIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGhhbmRsZXIgdG8gSGFuZGxlLiAgVGhpcyBIYW5kbGVyIG1ldGhvZCB3aWxsIHJhaXNlIGEKKyAgIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gYXV0aGVudGljYXRpb24gc2NoZW1lIG90aGVyIHRoYW4KKyAgIERpZ2VzdCBvciBCYXNpYy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJhaXNlIDpleGM6YFZhbHVlRXJyb3JgIG9uIHVuc3VwcG9ydGVkIEF1dGhlbnRpY2F0aW9uIFNjaGVtZS4KKwogCiAKIC4uIGNsYXNzOjogUHJveHlEaWdlc3RBdXRoSGFuZGxlcihwYXNzd29yZF9tZ3I9Tm9uZSkKQEAgLTM4MiwyNyArNDA4LDI1IEBACiAgICBib29sZWFuLCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVxdWVzdCBpcyB1bnZlcmlmaWFibGUgYXMgZGVmaW5lZAogICAgYnkgUkZDIDI5NjUuCiAKLS4uIG1ldGhvZDo6IFJlcXVlc3QuYWRkX2RhdGEoZGF0YSkKKy4uIGF0dHJpYnV0ZTo6IFJlcXVlc3QubWV0aG9kCiAKLSAgIFNldCB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBkYXRhIHRvICpkYXRhKi4gIFRoaXMgaXMgaWdub3JlZCBieSBhbGwgaGFuZGxlcnMgZXhjZXB0Ci0gICBIVFRQIGhhbmRsZXJzIC0tLSBhbmQgdGhlcmUgaXQgc2hvdWxkIGJlIGEgYnl0ZSBzdHJpbmcsIGFuZCB3aWxsIGNoYW5nZSB0aGUKLSAgIHJlcXVlc3QgdG8gYmUgYGBQT1NUYGAgcmF0aGVyIHRoYW4gYGBHRVRgYC4KKyAgIFRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIHVzZS4gIFRoaXMgdmFsdWUgaXMgdXNlZCBieQorICAgOm1ldGg6YH5SZXF1ZXN0LmdldF9tZXRob2RgIHRvIG92ZXJyaWRlIHRoZSBjb21wdXRlZCBIVFRQIHJlcXVlc3QKKyAgIG1ldGhvZCB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXR1cm5lZC4gIFRoaXMgYXR0cmlidXRlIGlzIGluaXRpYWxpemVkIHdpdGgKKyAgIHRoZSB2YWx1ZSBvZiB0aGUgKm1ldGhvZCogYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3Rvci4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfbWV0aG9kKCkKIAotICAgUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuICBUaGlzIGlzIG9ubHkgbWVhbmluZ2Z1bCBmb3IKLSAgIEhUVFAgcmVxdWVzdHMsIGFuZCBjdXJyZW50bHkgYWx3YXlzIHJldHVybnMgYGAnR0VUJ2BgIG9yIGBgJ1BPU1QnYGAuCisgICBSZXR1cm4gYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZC4gIElmCisgICA6YXR0cjpgUmVxdWVzdC5tZXRob2RgIGlzIG5vdCBgYE5vbmVgYCwgcmV0dXJuIGl0cyB2YWx1ZSwgb3RoZXJ3aXNlIHJldHVybgorICAgYGAnR0VUJ2BgIGlmIDphdHRyOmBSZXF1ZXN0LmRhdGFgIGlzIGBgTm9uZWBgLCBvciBgYCdQT1NUJ2BgIGlmIGl0J3Mgbm90LgorICAgVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIEhUVFAgcmVxdWVzdHMuCiAKLQotLi4gbWV0aG9kOjogUmVxdWVzdC5oYXNfZGF0YSgpCi0KLSAgIFJldHVybiB3aGV0aGVyIHRoZSBpbnN0YW5jZSBoYXMgYSBub24tXCBgYE5vbmVgYCBkYXRhLgotCi0KLS4uIG1ldGhvZDo6IFJlcXVlc3QuZ2V0X2RhdGEoKQotCi0gICBSZXR1cm4gdGhlIGluc3RhbmNlJ3MgZGF0YS4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBnZXRfbWV0aG9kIG5vdyBsb29rcyBhdCB0aGUgdmFsdWUgb2YgOmF0dHI6YFJlcXVlc3QubWV0aG9kYC4KIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmFkZF9oZWFkZXIoa2V5LCB2YWwpCkBAIC00MzIsMjAgKzQ1Niw2MCBAQAogICAgUmV0dXJuIHRoZSBVUkwgZ2l2ZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgogCiAKKy4uIG1ldGhvZDo6IFJlcXVlc3Quc2V0X3Byb3h5KGhvc3QsIHR5cGUpCisKKyAgIFByZXBhcmUgdGhlIHJlcXVlc3QgYnkgY29ubmVjdGluZyB0byBhIHByb3h5IHNlcnZlci4gVGhlICpob3N0KiBhbmQgKnR5cGUqIHdpbGwKKyAgIHJlcGxhY2UgdGhvc2Ugb2YgdGhlIGluc3RhbmNlLCBhbmQgdGhlIGluc3RhbmNlJ3Mgc2VsZWN0b3Igd2lsbCBiZSB0aGUgb3JpZ2luYWwKKyAgIFVSTCBnaXZlbiBpbiB0aGUgY29uc3RydWN0b3IuCisKKworLi4gbWV0aG9kOjogUmVxdWVzdC5hZGRfZGF0YShkYXRhKQorCisgICBTZXQgdGhlIDpjbGFzczpgUmVxdWVzdGAgZGF0YSB0byAqZGF0YSouICBUaGlzIGlzIGlnbm9yZWQgYnkgYWxsIGhhbmRsZXJzIGV4Y2VwdAorICAgSFRUUCBoYW5kbGVycyAtLS0gYW5kIHRoZXJlIGl0IHNob3VsZCBiZSBhIGJ5dGUgc3RyaW5nLCBhbmQgd2lsbCBjaGFuZ2UgdGhlCisgICByZXF1ZXN0IHRvIGJlIGBgUE9TVGBgIHJhdGhlciB0aGFuIGBgR0VUYGAuICBEZXByZWNhdGVkIGluIDMuMywgdXNlCisgICA6YXR0cjpgUmVxdWVzdC5kYXRhYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMworCisKKy4uIG1ldGhvZDo6IFJlcXVlc3QuaGFzX2RhdGEoKQorCisgICBSZXR1cm4gd2hldGhlciB0aGUgaW5zdGFuY2UgaGFzIGEgbm9uLVwgYGBOb25lYGAgZGF0YS4gRGVwcmVjYXRlZCBpbiAzLjMsCisgICB1c2UgOmF0dHI6YFJlcXVlc3QuZGF0YWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKKworCisuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9kYXRhKCkKKworICAgUmV0dXJuIHRoZSBpbnN0YW5jZSdzIGRhdGEuICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0LmRhdGFgLgorCisgICAuLiBkZXByZWNhdGVkOjogMy4zCisKKwogLi4gbWV0aG9kOjogUmVxdWVzdC5nZXRfdHlwZSgpCiAKLSAgIFJldHVybiB0aGUgdHlwZSBvZiB0aGUgVVJMIC0tLSBhbHNvIGtub3duIGFzIHRoZSBzY2hlbWUuCisgICBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIFVSTCAtLS0gYWxzbyBrbm93biBhcyB0aGUgc2NoZW1lLiAgRGVwcmVjYXRlZCBpbiAzLjMsCisgICB1c2UgOmF0dHI6YFJlcXVlc3QudHlwZWAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9ob3N0KCkKIAotICAgUmV0dXJuIHRoZSBob3N0IHRvIHdoaWNoIGEgY29ubmVjdGlvbiB3aWxsIGJlIG1hZGUuCisgICBSZXR1cm4gdGhlIGhvc3QgdG8gd2hpY2ggYSBjb25uZWN0aW9uIHdpbGwgYmUgbWFkZS4gRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QuaG9zdGAuCisKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKIAogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9zZWxlY3RvcigpCiAKICAgIFJldHVybiB0aGUgc2VsZWN0b3IgLS0tIHRoZSBwYXJ0IG9mIHRoZSBVUkwgdGhhdCBpcyBzZW50IHRvIHRoZSBzZXJ2ZXIuCisgICBEZXByZWNhdGVkIGluIDMuMywgdXNlIDphdHRyOmBSZXF1ZXN0LnNlbGVjdG9yYC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9oZWFkZXIoaGVhZGVyX25hbWUsIGRlZmF1bHQ9Tm9uZSkKIApAQCAtNDYwLDIxICs1MjQsMjIgQEAKIAogLi4gbWV0aG9kOjogUmVxdWVzdC5zZXRfcHJveHkoaG9zdCwgdHlwZSkKIAotICAgUHJlcGFyZSB0aGUgcmVxdWVzdCBieSBjb25uZWN0aW5nIHRvIGEgcHJveHkgc2VydmVyLiBUaGUgKmhvc3QqIGFuZCAqdHlwZSogd2lsbAotICAgcmVwbGFjZSB0aG9zZSBvZiB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgaW5zdGFuY2UncyBzZWxlY3RvciB3aWxsIGJlIHRoZSBvcmlnaW5hbAotICAgVVJMIGdpdmVuIGluIHRoZSBjb25zdHJ1Y3Rvci4KLQotCiAuLiBtZXRob2Q6OiBSZXF1ZXN0LmdldF9vcmlnaW5fcmVxX2hvc3QoKQogCi0gICBSZXR1cm4gdGhlIHJlcXVlc3QtaG9zdCBvZiB0aGUgb3JpZ2luIHRyYW5zYWN0aW9uLCBhcyBkZWZpbmVkIGJ5IDpyZmM6YDI5NjVgLgotICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4KKyAgIFJldHVybiB0aGUgcmVxdWVzdC1ob3N0IG9mIHRoZSBvcmlnaW4gdHJhbnNhY3Rpb24sIGFzIGRlZmluZWQgYnkKKyAgIDpyZmM6YDI5NjVgLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4KKyAgIERlcHJlY2F0ZWQgaW4gMy4zLCB1c2UgOmF0dHI6YFJlcXVlc3Qub3JpZ2luX3JlcV9ob3N0YC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAKIC4uIG1ldGhvZDo6IFJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlKCkKIAogICAgUmV0dXJuIHdoZXRoZXIgdGhlIHJlcXVlc3QgaXMgdW52ZXJpZmlhYmxlLCBhcyBkZWZpbmVkIGJ5IFJGQyAyOTY1LiBTZWUgdGhlCi0gICBkb2N1bWVudGF0aW9uIGZvciB0aGUgOmNsYXNzOmBSZXF1ZXN0YCBjb25zdHJ1Y3Rvci4KKyAgIGRvY3VtZW50YXRpb24gZm9yIHRoZSA6Y2xhc3M6YFJlcXVlc3RgIGNvbnN0cnVjdG9yLiAgRGVwcmVjYXRlZCBpbiAzLjMsIHVzZQorICAgOmF0dHI6YFJlcXVlc3QudW52ZXJpZmlhYmxlYC4KKworICAgLi4gZGVwcmVjYXRlZDo6IDMuMwogCiAKIC4uIF9vcGVuZXItZGlyZWN0b3Itb2JqZWN0czoKQEAgLTExMzgsMTYgKzEyMDMsMTQgQEAKIGBgdXJsbGliYGAgKGFzIG9wcG9zZWQgdG8gYGB1cmxsaWIyYGApLiAgVGhleSBtaWdodCBiZWNvbWUgZGVwcmVjYXRlZCBhdAogc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLgogCi0KIC4uIGZ1bmN0aW9uOjogdXJscmV0cmlldmUodXJsLCBmaWxlbmFtZT1Ob25lLCByZXBvcnRob29rPU5vbmUsIGRhdGE9Tm9uZSkKIAotICAgQ29weSBhIG5ldHdvcmsgb2JqZWN0IGRlbm90ZWQgYnkgYSBVUkwgdG8gYSBsb2NhbCBmaWxlLCBpZiBuZWNlc3NhcnkuIElmIHRoZSBVUkwKLSAgIHBvaW50cyB0byBhIGxvY2FsIGZpbGUsIG9yIGEgdmFsaWQgY2FjaGVkIGNvcHkgb2YgdGhlIG9iamVjdCBleGlzdHMsIHRoZSBvYmplY3QKLSAgIGlzIG5vdCBjb3BpZWQuICBSZXR1cm4gYSB0dXBsZSBgYChmaWxlbmFtZSwgaGVhZGVycylgYCB3aGVyZSAqZmlsZW5hbWUqIGlzIHRoZQorICAgQ29weSBhIG5ldHdvcmsgb2JqZWN0IGRlbm90ZWQgYnkgYSBVUkwgdG8gYSBsb2NhbCBmaWxlLiBJZiB0aGUgVVJMCisgICBwb2ludHMgdG8gYSBsb2NhbCBmaWxlLCB0aGUgb2JqZWN0IHdpbGwgbm90IGJlIGNvcGllZCB1bmxlc3MgZmlsZW5hbWUgaXMgc3VwcGxpZWQuCisgICBSZXR1cm4gYSB0dXBsZSBgYChmaWxlbmFtZSwgaGVhZGVycylgYCB3aGVyZSAqZmlsZW5hbWUqIGlzIHRoZQogICAgbG9jYWwgZmlsZSBuYW1lIHVuZGVyIHdoaWNoIHRoZSBvYmplY3QgY2FuIGJlIGZvdW5kLCBhbmQgKmhlYWRlcnMqIGlzIHdoYXRldmVyCiAgICB0aGUgOm1ldGg6YGluZm9gIG1ldGhvZCBvZiB0aGUgb2JqZWN0IHJldHVybmVkIGJ5IDpmdW5jOmB1cmxvcGVuYCByZXR1cm5lZCAoZm9yCi0gICBhIHJlbW90ZSBvYmplY3QsIHBvc3NpYmx5IGNhY2hlZCkuIEV4Y2VwdGlvbnMgYXJlIHRoZSBzYW1lIGFzIGZvcgotICAgOmZ1bmM6YHVybG9wZW5gLgorICAgYSByZW1vdGUgb2JqZWN0KS4gRXhjZXB0aW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpmdW5jOmB1cmxvcGVuYC4KIAogICAgVGhlIHNlY29uZCBhcmd1bWVudCwgaWYgcHJlc2VudCwgc3BlY2lmaWVzIHRoZSBmaWxlIGxvY2F0aW9uIHRvIGNvcHkgdG8gKGlmCiAgICBhYnNlbnQsIHRoZSBsb2NhdGlvbiB3aWxsIGJlIGEgdGVtcGZpbGUgd2l0aCBhIGdlbmVyYXRlZCBuYW1lKS4gVGhlIHRoaXJkCkBAIC0xMTU4LDYgKzEyMjEsMTMgQEAKICAgIHRoaXJkIGFyZ3VtZW50IG1heSBiZSBgYC0xYGAgb24gb2xkZXIgRlRQIHNlcnZlcnMgd2hpY2ggZG8gbm90IHJldHVybiBhIGZpbGUKICAgIHNpemUgaW4gcmVzcG9uc2UgdG8gYSByZXRyaWV2YWwgcmVxdWVzdC4KIAorICAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIHRoZSBtb3N0IGNvbW1vbiB1c2FnZSBzY2VuYXJpbzo6CisKKyAgICAgID4+PiBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKyAgICAgID4+PiBsb2NhbF9maWxlbmFtZSwgaGVhZGVycyA9IHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwOi8vcHl0aG9uLm9yZy8nKQorICAgICAgPj4+IGh0bWwgPSBvcGVuKGxvY2FsX2ZpbGVuYW1lKQorICAgICAgPj4+IGh0bWwuY2xvc2UoKQorCiAgICBJZiB0aGUgKnVybCogdXNlcyB0aGUgOmZpbGU6YGh0dHA6YCBzY2hlbWUgaWRlbnRpZmllciwgdGhlIG9wdGlvbmFsICpkYXRhKgogICAgYXJndW1lbnQgbWF5IGJlIGdpdmVuIHRvIHNwZWNpZnkgYSBgYFBPU1RgYCByZXF1ZXN0IChub3JtYWxseSB0aGUgcmVxdWVzdAogICAgdHlwZSBpcyBgYEdFVGBgKS4gIFRoZSAqZGF0YSogYXJndW1lbnQgbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBpbiBzdGFuZGFyZApAQCAtMTE3MCwyMCArMTI0MCwyMCBAQAogICAgdGhlICBkb3dubG9hZCBpcyBpbnRlcnJ1cHRlZC4KIAogICAgVGhlICpDb250ZW50LUxlbmd0aCogaXMgdHJlYXRlZCBhcyBhIGxvd2VyIGJvdW5kOiBpZiB0aGVyZSdzIG1vcmUgZGF0YSAgdG8gcmVhZCwKLSAgIDpmdW5jOmB1cmxyZXRyaWV2ZWAgcmVhZHMgbW9yZSBkYXRhLCBidXQgaWYgbGVzcyBkYXRhIGlzIGF2YWlsYWJsZSwgIGl0IHJhaXNlcwotICAgdGhlIGV4Y2VwdGlvbi4KKyAgIHVybHJldHJpZXZlIHJlYWRzIG1vcmUgZGF0YSwgYnV0IGlmIGxlc3MgZGF0YSBpcyBhdmFpbGFibGUsICBpdCByYWlzZXMgdGhlCisgICBleGNlcHRpb24uCiAKICAgIFlvdSBjYW4gc3RpbGwgcmV0cmlldmUgdGhlIGRvd25sb2FkZWQgZGF0YSBpbiB0aGlzIGNhc2UsIGl0IGlzIHN0b3JlZCAgaW4gdGhlCiAgICA6YXR0cjpgY29udGVudGAgYXR0cmlidXRlIG9mIHRoZSBleGNlcHRpb24gaW5zdGFuY2UuCiAKLSAgIElmIG5vICpDb250ZW50LUxlbmd0aCogaGVhZGVyIHdhcyBzdXBwbGllZCwgOmZ1bmM6YHVybHJldHJpZXZlYCBjYW4gbm90IGNoZWNrCi0gICB0aGUgc2l6ZSBvZiB0aGUgZGF0YSBpdCBoYXMgZG93bmxvYWRlZCwgYW5kIGp1c3QgcmV0dXJucyBpdC4gIEluIHRoaXMgY2FzZQotICAgeW91IGp1c3QgaGF2ZSB0byBhc3N1bWUgdGhhdCB0aGUgZG93bmxvYWQgd2FzIHN1Y2Nlc3NmdWwuCisgICBJZiBubyAqQ29udGVudC1MZW5ndGgqIGhlYWRlciB3YXMgc3VwcGxpZWQsIHVybHJldHJpZXZlIGNhbiBub3QgY2hlY2sgdGhlIHNpemUKKyAgIG9mIHRoZSBkYXRhIGl0IGhhcyBkb3dubG9hZGVkLCBhbmQganVzdCByZXR1cm5zIGl0LiAgSW4gdGhpcyBjYXNlIHlvdSBqdXN0IGhhdmUKKyAgIHRvIGFzc3VtZSB0aGF0IHRoZSBkb3dubG9hZCB3YXMgc3VjY2Vzc2Z1bC4KIAogLi4gZnVuY3Rpb246OiB1cmxjbGVhbnVwKCkKIAotICAgQ2xlYXIgdGhlIGNhY2hlIHRoYXQgbWF5IGhhdmUgYmVlbiBidWlsdCB1cCBieSBwcmV2aW91cyBjYWxscyB0bwotICAgOmZ1bmM6YHVybHJldHJpZXZlYC4KKyAgIENsZWFucyB1cCB0ZW1wb3JhcnkgZmlsZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGxlZnQgYmVoaW5kIGJ5IHByZXZpb3VzCisgICBjYWxscyB0byA6ZnVuYzpgdXJscmV0cmlldmVgLgogCiAuLiBjbGFzczo6IFVSTG9wZW5lcihwcm94aWVzPU5vbmUsICoqeDUwOSkKIApAQCAtMTIwNyw3ICsxMjc3LDcgQEAKICAgICprZXlfZmlsZSogYW5kICpjZXJ0X2ZpbGUqIGFyZSBzdXBwb3J0ZWQgdG8gcHJvdmlkZSBhbiAgU1NMIGtleSBhbmQgY2VydGlmaWNhdGU7CiAgICBib3RoIGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBjbGllbnQgYXV0aGVudGljYXRpb24uCiAKLSAgIDpjbGFzczpgVVJMb3BlbmVyYCBvYmplY3RzIHdpbGwgcmFpc2UgYW4gOmV4YzpgSU9FcnJvcmAgZXhjZXB0aW9uIGlmIHRoZSBzZXJ2ZXIKKyAgIDpjbGFzczpgVVJMb3BlbmVyYCBvYmplY3RzIHdpbGwgcmFpc2UgYW4gOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlmIHRoZSBzZXJ2ZXIKICAgIHJldHVybnMgYW4gZXJyb3IgY29kZS4KIAogICAgIC4uIG1ldGhvZDo6IG9wZW4oZnVsbHVybCwgZGF0YT1Ob25lKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNhNzRiOAotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKQEAgLTAsMCArMSw5IEBACis6bW9kOmB1cmxsaWJgIC0tLSBVUkwgaGFuZGxpbmcgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYGB1cmxsaWJgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXZlcmFsIG1vZHVsZXMgZm9yIHdvcmtpbmcgd2l0aCBVUkxzOgorCisqIDptb2Q6YHVybGxpYi5yZXF1ZXN0YCBmb3Igb3BlbmluZyBhbmQgcmVhZGluZyBVUkxzCisqIDptb2Q6YHVybGxpYi5lcnJvcmAgY29udGFpbmluZyB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYnkgOm1vZDpgdXJsbGliLnJlcXVlc3RgCisqIDptb2Q6YHVybGxpYi5wYXJzZWAgZm9yIHBhcnNpbmcgVVJMcworKiA6bW9kOmB1cmxsaWIucm9ib3RwYXJzZXJgIGZvciBwYXJzaW5nIGBgcm9ib3RzLnR4dGBgIGZpbGVzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS92ZW52LnJzdCBiL0RvYy9saWJyYXJ5L3ZlbnYucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0OTk5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS92ZW52LnJzdApAQCAtMCwwICsxLDE4MCBAQAorOm1vZDpgdmVudmAgLS0tIENyZWF0aW9uIG9mIHZpcnR1YWwgZW52aXJvbm1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gbW9kdWxlOjogdmVudgorICAgOnN5bm9wc2lzOiBDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cy4KKy4uIG1vZHVsZWF1dGhvcjo6IFZpbmF5IFNhamlwIDx2aW5heV9zYWppcEB5YWhvby5jby51az4KKy4uIHNlY3Rpb25hdXRob3I6OiBWaW5heSBTYWppcCA8dmluYXlfc2FqaXBAeWFob28uY28udWs+CisKKworLi4gaW5kZXg6OiBwYWlyOiBFbnZpcm9ubWVudHM7IHZpcnR1YWwKKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKKyoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3ZlbnYucHlgCisKKy0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB2ZW52YCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgY3JlYXRpbmcgbGlnaHR3ZWlnaHQgInZpcnR1YWwKK2Vudmlyb25tZW50cyIgd2l0aCB0aGVpciBvd24gc2l0ZSBkaXJlY3Rvcmllcywgb3B0aW9uYWxseSBpc29sYXRlZCBmcm9tIHN5c3RlbQorc2l0ZSBkaXJlY3Rvcmllcy4gIEVhY2ggdmlydHVhbCBlbnZpcm9ubWVudCBoYXMgaXRzIG93biBQeXRob24gYmluYXJ5IChhbGxvd2luZworY3JlYXRpb24gb2YgZW52aXJvbm1lbnRzIHdpdGggdmFyaW91cyBQeXRob24gdmVyc2lvbnMpIGFuZCBjYW4gaGF2ZSBpdHMgb3duCitpbmRlcGVuZGVudCBzZXQgb2YgaW5zdGFsbGVkIFB5dGhvbiBwYWNrYWdlcyBpbiBpdHMgc2l0ZSBkaXJlY3Rvcmllcy4KKworCitDcmVhdGluZyB2aXJ0dWFsIGVudmlyb25tZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5jbHVkZTo6IC91c2luZy92ZW52LWNyZWF0ZS5pbmMKKworCisuLiBfdmVudi1kZWY6CisKKy4uIG5vdGU6OiBBIHZpcnR1YWwgZW52aXJvbm1lbnQgKGFsc28gY2FsbGVkIGEgYGB2ZW52YGApIGlzIGEgUHl0aG9uCisgICBlbnZpcm9ubWVudCBzdWNoIHRoYXQgdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzCisgICBpbnN0YWxsZWQgaW50byBpdCBhcmUgaXNvbGF0ZWQgZnJvbSB0aG9zZSBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbAorICAgZW52aXJvbm1lbnRzLCBhbmQgKGJ5IGRlZmF1bHQpIGFueSBsaWJyYXJpZXMgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLAorICAgaS5lLiBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91ciBvcGVyYXRpbmcgc3lzdGVtLgorCisgICBBIHZlbnYgaXMgYSBkaXJlY3RvcnkgdHJlZSB3aGljaCBjb250YWlucyBQeXRob24gZXhlY3V0YWJsZSBmaWxlcyBhbmQKKyAgIG90aGVyIGZpbGVzIHdoaWNoIGluZGljYXRlIHRoYXQgaXQgaXMgYSB2ZW52LgorCisgICBDb21tb24gaW5zdGFsbGF0aW9uIHRvb2xzIHN1Y2ggYXMgYGBEaXN0cmlidXRlYGAgYW5kIGBgcGlwYGAgd29yayBhcworICAgZXhwZWN0ZWQgd2l0aCB2ZW52cyAtIGkuZS4gd2hlbiBhIHZlbnYgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uCisgICBwYWNrYWdlcyBpbnRvIHRoZSB2ZW52IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCisgICBPZiBjb3Vyc2UsIHlvdSBuZWVkIHRvIGluc3RhbGwgdGhlbSBpbnRvIHRoZSB2ZW52IGZpcnN0OiB0aGlzIGNvdWxkIGJlCisgICBkb25lIGJ5IHJ1bm5pbmcgYGBkaXN0cmlidXRlX3NldHVwLnB5YGAgd2l0aCB0aGUgdmVudiBhY3RpdmF0ZWQsCisgICBmb2xsb3dlZCBieSBydW5uaW5nIGBgZWFzeV9pbnN0YWxsIHBpcGBgLiBBbHRlcm5hdGl2ZWx5LCB5b3UgY291bGQgZG93bmxvYWQKKyAgIHRoZSBzb3VyY2UgdGFyYmFsbHMgYW5kIHJ1biBgYHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsYGAgYWZ0ZXIgdW5wYWNraW5nLAorICAgd2l0aCB0aGUgdmVudiBhY3RpdmF0ZWQuCisKKyAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSAoaS5lLiB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlCisgICBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UKKyAgIGRpcmVjdG9yeSBvZiB0aGUgdmVudiwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24KKyAgIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmVudi4gSWYgYSB2ZW52IGlzIG5vdCBhY3RpdmUsIHRoZW4KKyAgIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkKKyAgIGFsbCBwb2ludCB0byBhIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24pLgorCisKK0FQSQorLS0tCisKKy4uIGhpZ2hsaWdodDo6IHB5dGhvbgorCitUaGUgaGlnaC1sZXZlbCBtZXRob2QgZGVzY3JpYmVkIGFib3ZlIG1ha2VzIHVzZSBvZiBhIHNpbXBsZSBBUEkgd2hpY2ggcHJvdmlkZXMKK21lY2hhbmlzbXMgZm9yIHRoaXJkLXBhcnR5IHZpcnR1YWwgZW52aXJvbm1lbnQgY3JlYXRvcnMgdG8gY3VzdG9taXplIGVudmlyb25tZW50CitjcmVhdGlvbiBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMsIHRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzLgorCisuLiBjbGFzczo6IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSkKKworICAgIFRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBrZXl3b3JkIGFyZ3VtZW50cyBvbgorICAgIGluc3RhbnRpYXRpb246CisKKyAgICAqIGBgc3lzdGVtX3NpdGVfcGFja2FnZXNgYCAtLSBhIEJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB0aGF0IHRoZSBzeXN0ZW0gUHl0aG9uCisgICAgICBzaXRlLXBhY2thZ2VzIHNob3VsZCBiZSBhdmFpbGFibGUgdG8gdGhlIGVudmlyb25tZW50IChkZWZhdWx0cyB0byBgYEZhbHNlYGApLgorCisgICAgKiBgYGNsZWFyYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIGRlbGV0ZSBhbnkgZXhpc3RpbmcgdGFyZ2V0CisgICAgICBkaXJlY3RvcnkgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4Y2VwdGlvbiAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworICAgICogYGBzeW1saW5rc2BgIC0tIGEgQm9vbGVhbiB2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYXR0ZW1wdCB0byBzeW1saW5rIHRoZQorICAgICAgUHl0aG9uIGJpbmFyeSAoYW5kIGFueSBuZWNlc3NhcnkgRExMcyBvciBvdGhlciBiaW5hcmllcywKKyAgICAgIGUuZy4gYGBweXRob253LmV4ZWBgKSwgcmF0aGVyIHRoYW4gY29weWluZy4gRGVmYXVsdHMgdG8gYGBUcnVlYGAgb24gTGludXggYW5kCisgICAgICBVbml4IHN5c3RlbXMsIGJ1dCBgYEZhbHNlYGAgb24gV2luZG93cy4KKworICAgICogYGB1cGdyYWRlYGAgLS0gYSBCb29sZWFuIHZhbHVlIHdoaWNoLCBpZiBUcnVlLCB3aWxsIHVwZ3JhZGUgYW4gZXhpc3RpbmcKKyAgICAgIGVudmlyb25tZW50IHdpdGggdGhlIHJ1bm5pbmcgUHl0aG9uIC0gZm9yIHVzZSB3aGVuIHRoYXQgUHl0aG9uIGhhcyBiZWVuCisgICAgICB1cGdyYWRlZCBpbi1wbGFjZSAoZGVmYXVsdHMgdG8gYGBGYWxzZWBgKS4KKworCisKKyAgICBDcmVhdG9ycyBvZiB0aGlyZC1wYXJ0eSB2aXJ0dWFsIGVudmlyb25tZW50IHRvb2xzIHdpbGwgYmUgZnJlZSB0byB1c2UgdGhlCisgICAgcHJvdmlkZWQgYGBFbnZCdWlsZGVyYGAgY2xhc3MgYXMgYSBiYXNlIGNsYXNzLgorCisgICAgVGhlIHJldHVybmVkIGVudi1idWlsZGVyIGlzIGFuIG9iamVjdCB3aGljaCBoYXMgYSBtZXRob2QsIGBgY3JlYXRlYGA6CisKKyAgICAuLiBtZXRob2Q6OiBjcmVhdGUoZW52X2RpcikKKworICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhcyByZXF1aXJlZCBhcmd1bWVudCB0aGUgcGF0aCAoYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8KKyAgICAgICAgdGhlIGN1cnJlbnQgZGlyZWN0b3J5KSBvZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB3aGljaCBpcyB0byBjb250YWluIHRoZQorICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LiAgVGhlIGBgY3JlYXRlYGAgbWV0aG9kIHdpbGwgZWl0aGVyIGNyZWF0ZSB0aGUKKyAgICAgICAgZW52aXJvbm1lbnQgaW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnksIG9yIHJhaXNlIGFuIGFwcHJvcHJpYXRlCisgICAgICAgIGV4Y2VwdGlvbi4KKworICAgICAgICBUaGUgYGBjcmVhdGVgYCBtZXRob2Qgb2YgdGhlIGBgRW52QnVpbGRlcmBgIGNsYXNzIGlsbHVzdHJhdGVzIHRoZSBob29rcworICAgICAgICBhdmFpbGFibGUgZm9yIHN1YmNsYXNzIGN1c3RvbWl6YXRpb246OgorCisgICAgICAgICAgICBkZWYgY3JlYXRlKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICAgIENyZWF0ZSBhIHZpcnR1YWxpemVkIFB5dGhvbiBlbnZpcm9ubWVudCBpbiBhIGRpcmVjdG9yeS4KKyAgICAgICAgICAgICAgICBlbnZfZGlyIGlzIHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIGNyZWF0ZSBhbiBlbnZpcm9ubWVudCBpbi4KKyAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICBlbnZfZGlyID0gb3MucGF0aC5hYnNwYXRoKGVudl9kaXIpCisgICAgICAgICAgICAgICAgY29udGV4dCA9IHNlbGYuY3JlYXRlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfY29uZmlndXJhdGlvbihjb250ZXh0KQorICAgICAgICAgICAgICAgIHNlbGYuc2V0dXBfcHl0aG9uKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5zZXR1cF9zY3JpcHRzKGNvbnRleHQpCisgICAgICAgICAgICAgICAgc2VsZi5wb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICAgICAgRWFjaCBvZiB0aGUgbWV0aG9kcyA6bWV0aDpgY3JlYXRlX2RpcmVjdG9yaWVzYCwKKyAgICAgICAgOm1ldGg6YGNyZWF0ZV9jb25maWd1cmF0aW9uYCwgOm1ldGg6YHNldHVwX3B5dGhvbmAsCisgICAgICAgIDptZXRoOmBzZXR1cF9zY3JpcHRzYCBhbmQgOm1ldGg6YHBvc3Rfc2V0dXBgIGNhbiBiZSBvdmVycmlkZGVuLgorCisgICAgLi4gbWV0aG9kOjogY3JlYXRlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisKKyAgICAgICAgQ3JlYXRlcyB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGFuZCBhbGwgbmVjZXNzYXJ5IGRpcmVjdG9yaWVzLCBhbmQKKyAgICAgICAgcmV0dXJucyBhIGNvbnRleHQgb2JqZWN0LiAgVGhpcyBpcyBqdXN0IGEgaG9sZGVyIGZvciBhdHRyaWJ1dGVzIChzdWNoIGFzCisgICAgICAgIHBhdGhzKSwgZm9yIHVzZSBieSB0aGUgb3RoZXIgbWV0aG9kcy4KKworICAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9jb25maWd1cmF0aW9uKGNvbnRleHQpCisKKyAgICAgICAgQ3JlYXRlcyB0aGUgYGBweXZlbnYuY2ZnYGAgY29uZmlndXJhdGlvbiBmaWxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IHNldHVwX3B5dGhvbihjb250ZXh0KQorCisgICAgICAgIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBQeXRob24gZXhlY3V0YWJsZSAoYW5kLCB1bmRlciBXaW5kb3dzLCBETExzKSBpbgorICAgICAgICB0aGUgZW52aXJvbm1lbnQuCisKKyAgICAuLiBtZXRob2Q6OiBzZXR1cF9zY3JpcHRzKGNvbnRleHQpCisKKyAgICAgICAgSW5zdGFsbHMgYWN0aXZhdGlvbiBzY3JpcHRzIGFwcHJvcHJpYXRlIHRvIHRoZSBwbGF0Zm9ybSBpbnRvIHRoZSB2aXJ0dWFsCisgICAgICAgIGVudmlyb25tZW50LgorCisgICAgLi4gbWV0aG9kOjogcG9zdF9zZXR1cChjb250ZXh0KQorCisgICAgICAgIEEgcGxhY2Vob2xkZXIgbWV0aG9kIHdoaWNoIGNhbiBiZSBvdmVycmlkZGVuIGluIHRoaXJkIHBhcnR5CisgICAgICAgIGltcGxlbWVudGF0aW9ucyB0byBwcmUtaW5zdGFsbCBwYWNrYWdlcyBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBvcgorICAgICAgICBwZXJmb3JtIG90aGVyIHBvc3QtY3JlYXRpb24gc3RlcHMuCisKKyAgICBJbiBhZGRpdGlvbiwgOmNsYXNzOmBFbnZCdWlsZGVyYCBwcm92aWRlcyB0aGlzIHV0aWxpdHkgbWV0aG9kIHRoYXQgY2FuIGJlCisgICAgY2FsbGVkIGZyb20gOm1ldGg6YHNldHVwX3NjcmlwdHNgIG9yIDptZXRoOmBwb3N0X3NldHVwYCBpbiBzdWJjbGFzc2VzIHRvCisgICAgYXNzaXN0IGluIGluc3RhbGxpbmcgY3VzdG9tIHNjcmlwdHMgaW50byB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KKworICAgIC4uIG1ldGhvZDo6IGluc3RhbGxfc2NyaXB0cyhjb250ZXh0LCBwYXRoKQorCisgICAgICAgICpwYXRoKiBpcyB0aGUgcGF0aCB0byBhIGRpcmVjdG9yeSB0aGF0IHNob3VsZCBjb250YWluIHN1YmRpcmVjdG9yaWVzCisgICAgICAgICJjb21tb24iLCAicG9zaXgiLCAibnQiLCBlYWNoIGNvbnRhaW5pbmcgc2NyaXB0cyBkZXN0aW5lZCBmb3IgdGhlIGJpbgorICAgICAgICBkaXJlY3RvcnkgaW4gdGhlIGVudmlyb25tZW50LiAgVGhlIGNvbnRlbnRzIG9mICJjb21tb24iIGFuZCB0aGUKKyAgICAgICAgZGlyZWN0b3J5IGNvcnJlc3BvbmRpbmcgdG8gOmRhdGE6YG9zLm5hbWVgIGFyZSBjb3BpZWQgYWZ0ZXIgc29tZSB0ZXh0CisgICAgICAgIHJlcGxhY2VtZW50IG9mIHBsYWNlaG9sZGVyczoKKworICAgICAgICAqIGBgX19WRU5WX0RJUl9fYGAgaXMgcmVwbGFjZWQgd2l0aCB0aGUgYWJzb2x1dGUgcGF0aCBvZiB0aGUgZW52aXJvbm1lbnQKKyAgICAgICAgICBkaXJlY3RvcnkuCisKKyAgICAgICAgKiBgYF9fVkVOVl9OQU1FX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBlbnZpcm9ubWVudCBuYW1lIChmaW5hbCBwYXRoCisgICAgICAgICAgc2VnbWVudCBvZiBlbnZpcm9ubWVudCBkaXJlY3RvcnkpLgorCisgICAgICAgICogYGBfX1ZFTlZfQklOX05BTUVfX2BgIGlzIHJlcGxhY2VkIHdpdGggdGhlIG5hbWUgb2YgdGhlIGJpbiBkaXJlY3RvcnkKKyAgICAgICAgICAoZWl0aGVyIGBgYmluYGAgb3IgYGBTY3JpcHRzYGApLgorCisgICAgICAgICogYGBfX1ZFTlZfUFlUSE9OX19gYCBpcyByZXBsYWNlZCB3aXRoIHRoZSBhYnNvbHV0ZSBwYXRoIG9mIHRoZQorICAgICAgICAgIGVudmlyb25tZW50J3MgZXhlY3V0YWJsZS4KKworCitUaGVyZSBpcyBhbHNvIGEgbW9kdWxlLWxldmVsIGNvbnZlbmllbmNlIGZ1bmN0aW9uOgorCisuLiBmdW5jdGlvbjo6IGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlKQorCisgICAgQ3JlYXRlIGFuIDpjbGFzczpgRW52QnVpbGRlcmAgd2l0aCB0aGUgZ2l2ZW4ga2V5d29yZCBhcmd1bWVudHMsIGFuZCBjYWxsIGl0cworICAgIDptZXRoOmB+RW52QnVpbGRlci5jcmVhdGVgIG1ldGhvZCB3aXRoIHRoZSAqZW52X2RpciogYXJndW1lbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKaW5kZXggOGFmMTlhMi4uODM4N2Y1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdApAQCAtMzM5LDggKzMzOSw3IEBACiAgICBXcml0ZSBhIHdhcm5pbmcgdG8gYSBmaWxlLiAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMKICAgIGBgZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZSlgYCBhbmQgd3JpdGVzIHRoZQogICAgcmVzdWx0aW5nIHN0cmluZyB0byAqZmlsZSosIHdoaWNoIGRlZmF1bHRzIHRvIGBgc3lzLnN0ZGVycmBgLiAgWW91IG1heSByZXBsYWNlCi0gICB0aGlzIGZ1bmN0aW9uIHdpdGggYW4gYWx0ZXJuYXRpdmUgaW1wbGVtZW50YXRpb24gYnkgYXNzaWduaW5nIHRvCi0gICBgYHdhcm5pbmdzLnNob3d3YXJuaW5nYGAuCisgICB0aGlzIGZ1bmN0aW9uIHdpdGggYW55IGNhbGxhYmxlIGJ5IGFzc2lnbmluZyB0byBgYHdhcm5pbmdzLnNob3d3YXJuaW5nYGAuCiAgICAqbGluZSogaXMgYSBsaW5lIG9mIHNvdXJjZSBjb2RlIHRvIGJlIGluY2x1ZGVkIGluIHRoZSB3YXJuaW5nCiAgICBtZXNzYWdlOyBpZiAqbGluZSogaXMgbm90IHN1cHBsaWVkLCA6ZnVuYzpgc2hvd3dhcm5pbmdgIHdpbGwKICAgIHRyeSB0byByZWFkIHRoZSBsaW5lIHNwZWNpZmllZCBieSAqZmlsZW5hbWUqIGFuZCAqbGluZW5vKi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dlYmJyb3dzZXIucnN0IGIvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QKaW5kZXggYjJkY2Y4Zi4uOWMyYjNhYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2ViYnJvd3Nlci5yc3QKQEAgLTk4LDQ3ICs5OCw1NSBAQAogbWF5IGJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGdldGAgZnVuY3Rpb24gYW5kIHRoZSBjb3JyZXNwb25kaW5nIGluc3RhbnRpYXRpb25zCiBmb3IgdGhlIGNvbnRyb2xsZXIgY2xhc3NlcywgYWxsIGRlZmluZWQgaW4gdGhpcyBtb2R1bGUuCiAKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBUeXBlIE5hbWUgICAgICAgICAgICAgfCBDbGFzcyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8Ci0rPT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKLXwgYGAnbW96aWxsYSdgYCAgICAgICAgIHwgOmNsYXNzOmBNb3ppbGxhKCdtb3ppbGxhJylgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2ZpcmVmb3gnYGAgICAgICAgICB8IDpjbGFzczpgTW96aWxsYSgnbW96aWxsYScpYCAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCduZXRzY2FwZSdgYCAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ25ldHNjYXBlJylgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnZ2FsZW9uJ2BgICAgICAgICAgIHwgOmNsYXNzOmBHYWxlb24oJ2dhbGVvbicpYCAgICAgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2VwaXBoYW55J2BgICAgICAgICB8IDpjbGFzczpgR2FsZW9uKCdlcGlwaGFueScpYCAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdza2lwc3RvbmUnYGAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdza2lwc3RvbmUnKWAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAna2ZtY2xpZW50J2BgICAgICAgIHwgOmNsYXNzOmBLb25xdWVyb3IoKWAgICAgICAgICAgICAgICAgICAgIHwgXCgxKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2tvbnF1ZXJvcidgYCAgICAgICB8IDpjbGFzczpgS29ucXVlcm9yKClgICAgICAgICAgICAgICAgICAgICB8IFwoMSkgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdrZm0nYGAgICAgICAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbW9zYWljJ2BgICAgICAgICAgIHwgOmNsYXNzOmBCYWNrZ3JvdW5kQnJvd3NlcignbW9zYWljJylgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ29wZXJhJ2BgICAgICAgICAgICB8IDpjbGFzczpgT3BlcmEoKWAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdncmFpbCdgYCAgICAgICAgICAgfCA6Y2xhc3M6YEdyYWlsKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnbGlua3MnYGAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcignbGlua3MnKWAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ2VsaW5rcydgYCAgICAgICAgICB8IDpjbGFzczpgRWxpbmtzKCdlbGlua3MnKWAgICAgICAgICAgICAgICB8ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdseW54J2BgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdseW54JylgICAgICAgICAgfCAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAndzNtJ2BgICAgICAgICAgICAgIHwgOmNsYXNzOmBHZW5lcmljQnJvd3NlcigndzNtJylgICAgICAgICAgIHwgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCi18IGBgJ3dpbmRvd3MtZGVmYXVsdCdgYCB8IDpjbGFzczpgV2luZG93c0RlZmF1bHRgICAgICAgICAgICAgICAgICB8IFwoMikgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKwotfCBgYCdtYWNvc3gnYGAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnZGVmYXVsdCcpYCAgICAgICAgICAgICAgfCBcKDMpICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGAnc2FmYXJpJ2BgICAgICAgICAgIHwgOmNsYXNzOmBNYWNPU1goJ3NhZmFyaScpYCAgICAgICAgICAgICAgIHwgXCgzKSAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IFR5cGUgTmFtZSAgICAgICAgICAgICAgfCBDbGFzcyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyB8CisrPT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT0rCit8IGBgJ21vemlsbGEnYGAgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2ZpcmVmb3gnYGAgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ21vemlsbGEnKWAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ25ldHNjYXBlJ2BgICAgICAgICAgfCA6Y2xhc3M6YE1vemlsbGEoJ25ldHNjYXBlJylgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2dhbGVvbidgYCAgICAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZ2FsZW9uJylgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2VwaXBoYW55J2BgICAgICAgICAgfCA6Y2xhc3M6YEdhbGVvbignZXBpcGhhbnknKWAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3NraXBzdG9uZSdgYCAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdza2lwc3RvbmUnKWAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2tmbWNsaWVudCdgYCAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2tvbnF1ZXJvcidgYCAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2tmbSdgYCAgICAgICAgICAgICAgfCA6Y2xhc3M6YEtvbnF1ZXJvcigpYCAgICAgICAgICAgICAgICAgICAgfCBcKDEpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ21vc2FpYydgYCAgICAgICAgICAgfCA6Y2xhc3M6YEJhY2tncm91bmRCcm93c2VyKCdtb3NhaWMnKWAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ29wZXJhJ2BgICAgICAgICAgICAgfCA6Y2xhc3M6YE9wZXJhKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2dyYWlsJ2BgICAgICAgICAgICAgfCA6Y2xhc3M6YEdyYWlsKClgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2xpbmtzJ2BgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdsaW5rcycpYCAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2VsaW5rcydgYCAgICAgICAgICAgfCA6Y2xhc3M6YEVsaW5rcygnZWxpbmtzJylgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2x5bngnYGAgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCdseW54JylgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3czbSdgYCAgICAgICAgICAgICAgfCA6Y2xhc3M6YEdlbmVyaWNCcm93c2VyKCd3M20nKWAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3dpbmRvd3MtZGVmYXVsdCdgYCAgfCA6Y2xhc3M6YFdpbmRvd3NEZWZhdWx0YCAgICAgICAgICAgICAgICAgfCBcKDIpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ21hY29zeCdgYCAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnZGVmYXVsdCcpYCAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ3NhZmFyaSdgYCAgICAgICAgICAgfCA6Y2xhc3M6YE1hY09TWCgnc2FmYXJpJylgICAgICAgICAgICAgICAgfCBcKDMpICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2dvb2dsZS1jaHJvbWUnYGAgICAgfCA6Y2xhc3M6YENocm9tZSgnZ29vZ2xlLWNocm9tZScpYCAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2Nocm9tZSdgYCAgICAgICAgICAgfCA6Y2xhc3M6YENocm9tZSgnY2hyb21lJylgICAgICAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2Nocm9taXVtJ2BgICAgICAgICAgfCA6Y2xhc3M6YENocm9taXVtKCdjaHJvbWl1bScpYCAgICAgICAgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCit8IGBgJ2Nocm9taXVtLWJyb3dzZXInYGAgfCA6Y2xhc3M6YENocm9taXVtKCdjaHJvbWl1bS1icm93c2VyJylgICAgfCAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKIE5vdGVzOgogCkBAIC0xNTUsMTIgKzE2MywxNSBAQAogKDMpCiAgICBPbmx5IG9uIE1hYyBPUyBYIHBsYXRmb3JtLgogCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgIFN1cHBvcnQgZm9yIENocm9tZS9DaHJvbWl1bSBoYXMgYmVlbiBhZGRlZC4KKwogSGVyZSBhcmUgc29tZSBzaW1wbGUgZXhhbXBsZXM6OgogCi0gICB1cmwgPSAnaHR0cDovL3d3dy5weXRob24ub3JnLycKKyAgIHVybCA9ICdodHRwOi8vZG9jcy5weXRob24ub3JnLycKIAogICAgIyBPcGVuIFVSTCBpbiBhIG5ldyB0YWIsIGlmIGEgYnJvd3NlciB3aW5kb3cgaXMgYWxyZWFkeSBvcGVuLgotICAgd2ViYnJvd3Nlci5vcGVuX25ld190YWIodXJsICsgJ2RvYy8nKQorICAgd2ViYnJvd3Nlci5vcGVuX25ld190YWIodXJsKQogCiAgICAjIE9wZW4gVVJMIGluIG5ldyB3aW5kb3csIHJhaXNpbmcgdGhlIHdpbmRvdyBpZiBwb3NzaWJsZS4KICAgIHdlYmJyb3dzZXIub3Blbl9uZXcodXJsKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdCBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKaW5kZXggZTQ5YjUxYi4uYTg3OGRhMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CkBAIC0zOCw3ICszOCwxMSBAQAogICAgKmtleSogaXMgdGhlIHByZWRlZmluZWQgaGFuZGxlIHRvIGNvbm5lY3QgdG8uCiAKICAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGhhbmRsZSBvZiB0aGUgb3BlbmVkIGtleS4gSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhCi0gICA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisgICA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBmdW5jdGlvbjo6IENyZWF0ZUtleShrZXksIHN1Yl9rZXkpCkBAIC01Nyw3ICs2MSwxMSBAQAogICAgSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LgogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYQotICAgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gZnVuY3Rpb246OiBDcmVhdGVLZXlFeChrZXksIHN1Yl9rZXksIHJlc2VydmVkPTAsIGFjY2Vzcz1LRVlfQUxMX0FDQ0VTUykKQEAgLTgyLDEwICs5MCwxNCBAQAogICAgSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgdGhpcyBmdW5jdGlvbiBvcGVucyB0aGUgZXhpc3Rpbmcga2V5LgogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBoYW5kbGUgb2YgdGhlIG9wZW5lZCBrZXkuIElmIHRoZSBmdW5jdGlvbiBmYWlscywgYQotICAgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIGZ1bmN0aW9uOjogRGVsZXRlS2V5KGtleSwgc3ViX2tleSkKIApAQCAtMTAwLDcgKzExMiwxMSBAQAogICAgKlRoaXMgbWV0aG9kIGNhbiBub3QgZGVsZXRlIGtleXMgd2l0aCBzdWJrZXlzLioKIAogICAgSWYgdGhlIG1ldGhvZCBzdWNjZWVkcywgdGhlIGVudGlyZSBrZXksIGluY2x1ZGluZyBhbGwgb2YgaXRzIHZhbHVlcywgaXMgcmVtb3ZlZC4KLSAgIElmIHRoZSBtZXRob2QgZmFpbHMsIGEgOmV4YzpgV2luZG93c0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorICAgSWYgdGhlIG1ldGhvZCBmYWlscywgYSA6ZXhjOmBPU0Vycm9yYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIHJhaXNlIGEgOmV4YzpgV2luZG93c0Vycm9yYCwgd2hpY2ggaXMgbm93IGFuCisgICAgICBhbGlhcyBvZiA6ZXhjOmBPU0Vycm9yYC4KIAogCiAuLiBmdW5jdGlvbjo6IERlbGV0ZUtleUV4KGtleSwgc3ViX2tleSwgYWNjZXNzPUtFWV9BTExfQUNDRVNTLCByZXNlcnZlZD0wKQpAQCAtMTI5LDEyICsxNDUsMTYgQEAKICAgICpUaGlzIG1ldGhvZCBjYW4gbm90IGRlbGV0ZSBrZXlzIHdpdGggc3Via2V5cy4qCiAKICAgIElmIHRoZSBtZXRob2Qgc3VjY2VlZHMsIHRoZSBlbnRpcmUga2V5LCBpbmNsdWRpbmcgYWxsIG9mIGl0cyB2YWx1ZXMsIGlzCi0gICByZW1vdmVkLiBJZiB0aGUgbWV0aG9kIGZhaWxzLCBhIDpleGM6YFdpbmRvd3NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgIHJlbW92ZWQuIElmIHRoZSBtZXRob2QgZmFpbHMsIGEgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzIHJhaXNlZC4KIAogICAgT24gdW5zdXBwb3J0ZWQgV2luZG93cyB2ZXJzaW9ucywgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaXMgcmFpc2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogLi4gZnVuY3Rpb246OiBEZWxldGVWYWx1ZShrZXksIHZhbHVlKQogCkBAIC0xNTYsOSArMTc2LDEzIEBACiAgICAqaW5kZXgqIGlzIGFuIGludGVnZXIgdGhhdCBpZGVudGlmaWVzIHRoZSBpbmRleCBvZiB0aGUga2V5IHRvIHJldHJpZXZlLgogCiAgICBUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gIEl0IGlzCi0gICB0eXBpY2FsbHkgY2FsbGVkIHJlcGVhdGVkbHkgdW50aWwgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcworICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5IHVudGlsIGEgOmV4YzpgT1NFcnJvcmAgZXhjZXB0aW9uIGlzCiAgICByYWlzZWQsIGluZGljYXRpbmcsIG5vIG1vcmUgdmFsdWVzIGFyZSBhdmFpbGFibGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIGZ1bmN0aW9uOjogRW51bVZhbHVlKGtleSwgaW5kZXgpCiAKQEAgLTE3MCw3ICsxOTQsNyBAQAogICAgKmluZGV4KiBpcyBhbiBpbnRlZ2VyIHRoYXQgaWRlbnRpZmllcyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIHJldHJpZXZlLgogCiAgICBUaGUgZnVuY3Rpb24gcmV0cmlldmVzIHRoZSBuYW1lIG9mIG9uZSBzdWJrZXkgZWFjaCB0aW1lIGl0IGlzIGNhbGxlZC4gSXQgaXMKLSAgIHR5cGljYWxseSBjYWxsZWQgcmVwZWF0ZWRseSwgdW50aWwgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgIGV4Y2VwdGlvbiBpcworICAgdHlwaWNhbGx5IGNhbGxlZCByZXBlYXRlZGx5LCB1bnRpbCBhIDpleGM6YE9TRXJyb3JgIGV4Y2VwdGlvbiBpcwogICAgcmFpc2VkLCBpbmRpY2F0aW5nIG5vIG1vcmUgdmFsdWVzLgogCiAgICBUaGUgcmVzdWx0IGlzIGEgdHVwbGUgb2YgMyBpdGVtczoKQEAgLTE4OSw2ICsyMTMsMTAgQEAKICAgIHwgICAgICAgfCA6bWV0aDpgU2V0VmFsdWVFeGApICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gcmFpc2UgYSA6ZXhjOmBXaW5kb3dzRXJyb3JgLCB3aGljaCBpcyBub3cgYW4KKyAgICAgIGFsaWFzIG9mIDpleGM6YE9TRXJyb3JgLgorCiAKIC4uIGZ1bmN0aW9uOjogRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzKHN0cikKIApAQCAtMjYwLDkgKzI4OCwxNCBAQAogCiAgICBUaGUgcmVzdWx0IGlzIGEgbmV3IGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIGtleS4KIAotICAgSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCA6ZXhjOmBXaW5kb3dzRXJyb3JgIGlzIHJhaXNlZC4KKyAgIElmIHRoZSBmdW5jdGlvbiBmYWlscywgOmV4YzpgT1NFcnJvcmAgaXMgcmFpc2VkLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMiBBbGxvdyB0aGUgdXNlIG9mIG5hbWVkIGFyZ3VtZW50cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICBBbGxvdyB0aGUgdXNlIG9mIG5hbWVkIGFyZ3VtZW50cy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byByYWlzZSBhIDpleGM6YFdpbmRvd3NFcnJvcmAsIHdoaWNoIGlzIG5vdyBhbgorICAgICAgYWxpYXMgb2YgOmV4YzpgT1NFcnJvcmAuCiAKIAogLi4gZnVuY3Rpb246OiBPcGVuS2V5RXgoKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd3NnaXJlZi5yc3QgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAppbmRleCAxZmQzNDUxLi4xY2VmMmU5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdAorKysgYi9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdApAQCAtNjA5LDYgKzYwOSw5IEBACiAgICAgICBhcyA6Y2xhc3M6YEJhc2VDR0lIYW5kbGVyYCBhbmQgOmNsYXNzOmBDR0lIYW5kbGVyYCkgdGhhdCBhcmUgbm90IEhUVFAgb3JpZ2luCiAgICAgICBzZXJ2ZXJzLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgICAgVGhlIHRlcm0gIlB5dGhvbiIgaXMgcmVwbGFjZWQgd2l0aCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyB0ZXJtIGxpa2UKKyAgICAgICAgICJDUHl0aG9uIiwgIkp5dGhvbiIgZXRjLgogCiAgICAuLiBtZXRob2Q6OiBCYXNlSGFuZGxlci5nZXRfc2NoZW1lKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKaW5kZXggYWUyODZiMC4uYTVjNmZiMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CkBAIC0xNDcsMTIgKzE0Nyw3IEBACiAgICB0aGUgRE9NIG5vZGUuCiAKICAgIFdpdGggYW4gZXhwbGljaXQgKmVuY29kaW5nKiBbMV1fIGFyZ3VtZW50LCB0aGUgcmVzdWx0IGlzIGEgYnl0ZQotICAgc3RyaW5nIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcuICBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdQotICAgYWx3YXlzIHNwZWNpZnkgYW4gZW5jb2Rpbmc7IHlvdSBtYXkgdXNlIGFueSBlbmNvZGluZyB5b3UgbGlrZSwgYnV0Ci0gICBhbiBhcmd1bWVudCBvZiAidXRmLTgiIGlzIHRoZSBtb3N0IGNvbW1vbiBjaG9pY2UsIGF2b2lkaW5nCi0gICA6ZXhjOmBVbmljb2RlRXJyb3JgIGV4Y2VwdGlvbnMgaW4gY2FzZSBvZiB1bnJlcHJlc2VudGFibGUgdGV4dAotICAgZGF0YS4KLQorICAgc3RyaW5nIGluIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcuCiAgICBXaXRoIG5vICplbmNvZGluZyogYXJndW1lbnQsIHRoZSByZXN1bHQgaXMgYSBVbmljb2RlIHN0cmluZywgYW5kIHRoZQogICAgWE1MIGRlY2xhcmF0aW9uIGluIHRoZSByZXN1bHRpbmcgc3RyaW5nIGRvZXMgbm90IHNwZWNpZnkgYW4KICAgIGVuY29kaW5nLiBFbmNvZGluZyB0aGlzIHN0cmluZyBpbiBhbiBlbmNvZGluZyBvdGhlciB0aGFuIFVURi04IGlzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0IGIvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAppbmRleCBjNWM4ODAyLi4yNmYxZmJlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKQEAgLTUsNDkgKzUsMzIzIEBACiAgICA6c3lub3BzaXM6IEltcGxlbWVudGF0aW9uIG9mIHRoZSBFbGVtZW50VHJlZSBBUEkuCiAuLiBtb2R1bGVhdXRob3I6OiBGcmVkcmlrIEx1bmRoIDxmcmVkcmlrQHB5dGhvbndhcmUuY29tPgogCi0qKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHlgCitUaGUgOm1vZDpgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCBtb2R1bGUgaW1wbGVtZW50cyBhIHNpbXBsZSBhbmQgZWZmaWNpZW50IEFQSQorZm9yIHBhcnNpbmcgYW5kIGNyZWF0aW5nIFhNTCBkYXRhLgogCi0tLS0tLS0tLS0tLS0tLQorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoaXMgbW9kdWxlIHdpbGwgdXNlIGEgZmFzdCBpbXBsZW1lbnRhdGlvbiB3aGVuZXZlciBhdmFpbGFibGUuCisgICBUaGUgOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAgbW9kdWxlIGlzIGRlcHJlY2F0ZWQuCiAKLVRoZSA6Y2xhc3M6YEVsZW1lbnRgIHR5cGUgaXMgYSBmbGV4aWJsZSBjb250YWluZXIgb2JqZWN0LCBkZXNpZ25lZCB0byBzdG9yZQotaGllcmFyY2hpY2FsIGRhdGEgc3RydWN0dXJlcyBpbiBtZW1vcnkuICBUaGUgdHlwZSBjYW4gYmUgZGVzY3JpYmVkIGFzIGEgY3Jvc3MKLWJldHdlZW4gYSBsaXN0IGFuZCBhIGRpY3Rpb25hcnkuCitUdXRvcmlhbAorLS0tLS0tLS0KIAotRWFjaCBlbGVtZW50IGhhcyBhIG51bWJlciBvZiBwcm9wZXJ0aWVzIGFzc29jaWF0ZWQgd2l0aCBpdDoKK1RoaXMgaXMgYSBzaG9ydCB0dXRvcmlhbCBmb3IgdXNpbmcgOm1vZDpgeG1sLmV0cmVlLkVsZW1lbnRUcmVlYCAoYGBFVGBgIGluCitzaG9ydCkuICBUaGUgZ29hbCBpcyB0byBkZW1vbnN0cmF0ZSBzb21lIG9mIHRoZSBidWlsZGluZyBibG9ja3MgYW5kIGJhc2ljCitjb25jZXB0cyBvZiB0aGUgbW9kdWxlLgogCi0qIGEgdGFnIHdoaWNoIGlzIGEgc3RyaW5nIGlkZW50aWZ5aW5nIHdoYXQga2luZCBvZiBkYXRhIHRoaXMgZWxlbWVudCByZXByZXNlbnRzCi0gICh0aGUgZWxlbWVudCB0eXBlLCBpbiBvdGhlciB3b3JkcykuCitYTUwgdHJlZSBhbmQgZWxlbWVudHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXgogCi0qIGEgbnVtYmVyIG9mIGF0dHJpYnV0ZXMsIHN0b3JlZCBpbiBhIFB5dGhvbiBkaWN0aW9uYXJ5LgorWE1MIGlzIGFuIGluaGVyZW50bHkgaGllcmFyY2hpY2FsIGRhdGEgZm9ybWF0LCBhbmQgdGhlIG1vc3QgbmF0dXJhbCB3YXkgdG8KK3JlcHJlc2VudCBpdCBpcyB3aXRoIGEgdHJlZS4gIGBgRVRgYCBoYXMgdHdvIGNsYXNzZXMgZm9yIHRoaXMgcHVycG9zZSAtCis6Y2xhc3M6YEVsZW1lbnRUcmVlYCByZXByZXNlbnRzIHRoZSB3aG9sZSBYTUwgZG9jdW1lbnQgYXMgYSB0cmVlLCBhbmQKKzpjbGFzczpgRWxlbWVudGAgcmVwcmVzZW50cyBhIHNpbmdsZSBub2RlIGluIHRoaXMgdHJlZS4gIEludGVyYWN0aW9ucyB3aXRoCit0aGUgd2hvbGUgZG9jdW1lbnQgKHJlYWRpbmcgYW5kIHdyaXRpbmcgdG8vZnJvbSBmaWxlcykgYXJlIHVzdWFsbHkgZG9uZQorb24gdGhlIDpjbGFzczpgRWxlbWVudFRyZWVgIGxldmVsLiAgSW50ZXJhY3Rpb25zIHdpdGggYSBzaW5nbGUgWE1MIGVsZW1lbnQKK2FuZCBpdHMgc3ViLWVsZW1lbnRzIGFyZSBkb25lIG9uIHRoZSA6Y2xhc3M6YEVsZW1lbnRgIGxldmVsLgogCi0qIGEgdGV4dCBzdHJpbmcuCisuLiBfZWxlbWVudHRyZWUtcGFyc2luZy14bWw6CiAKLSogYW4gb3B0aW9uYWwgdGFpbCBzdHJpbmcuCitQYXJzaW5nIFhNTAorXl5eXl5eXl5eXl4KIAotKiBhIG51bWJlciBvZiBjaGlsZCBlbGVtZW50cywgc3RvcmVkIGluIGEgUHl0aG9uIHNlcXVlbmNlCitXZSdsbCBiZSB1c2luZyB0aGUgZm9sbG93aW5nIFhNTCBkb2N1bWVudCBhcyB0aGUgc2FtcGxlIGRhdGEgZm9yIHRoaXMgc2VjdGlvbjoKIAotVG8gY3JlYXRlIGFuIGVsZW1lbnQgaW5zdGFuY2UsIHVzZSB0aGUgOmNsYXNzOmBFbGVtZW50YCBjb25zdHJ1Y3RvciBvciB0aGUKLTpmdW5jOmBTdWJFbGVtZW50YCBmYWN0b3J5IGZ1bmN0aW9uLgorLi4gY29kZS1ibG9jazo6IHhtbAogCi1UaGUgOmNsYXNzOmBFbGVtZW50VHJlZWAgY2xhc3MgY2FuIGJlIHVzZWQgdG8gd3JhcCBhbiBlbGVtZW50IHN0cnVjdHVyZSwgYW5kCi1jb252ZXJ0IGl0IGZyb20gYW5kIHRvIFhNTC4KKyAgIDw/eG1sIHZlcnNpb249IjEuMCI/PgorICAgPGRhdGE+CisgICAgICAgPGNvdW50cnkgbmFtZT0iTGllY2h0ZW5zdGVpbiI+CisgICAgICAgICAgIDxyYW5rPjE8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMDg8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xNDExMDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQXVzdHJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJTd2l0emVybGFuZCIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlNpbmdhcG9yZSI+CisgICAgICAgICAgIDxyYW5rPjQ8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz41OTkwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJNYWxheXNpYSIgZGlyZWN0aW9uPSJOIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlBhbmFtYSI+CisgICAgICAgICAgIDxyYW5rPjY4PC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDExPC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTM2MDA8L2dkcHBjPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iQ29zdGEgUmljYSIgZGlyZWN0aW9uPSJXIi8+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb2xvbWJpYSIgZGlyZWN0aW9uPSJFIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgPC9kYXRhPgogCi1BIEMgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBBUEkgaXMgYXZhaWxhYmxlIGFzIDptb2Q6YHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgLgorV2UgY2FuIGltcG9ydCB0aGlzIGRhdGEgYnkgcmVhZGluZyBmcm9tIGEgZmlsZTo6CisKKyAgIGltcG9ydCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgRVQKKyAgIHRyZWUgPSBFVC5wYXJzZSgnY291bnRyeV9kYXRhLnhtbCcpCisgICByb290ID0gdHJlZS5nZXRyb290KCkKKworT3IgZGlyZWN0bHkgZnJvbSBhIHN0cmluZzo6CisKKyAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKGNvdW50cnlfZGF0YV9hc19zdHJpbmcpCisKKzpmdW5jOmBmcm9tc3RyaW5nYCBwYXJzZXMgWE1MIGZyb20gYSBzdHJpbmcgZGlyZWN0bHkgaW50byBhbiA6Y2xhc3M6YEVsZW1lbnRgLAord2hpY2ggaXMgdGhlIHJvb3QgZWxlbWVudCBvZiB0aGUgcGFyc2VkIHRyZWUuICBPdGhlciBwYXJzaW5nIGZ1bmN0aW9ucyBtYXkKK2NyZWF0ZSBhbiA6Y2xhc3M6YEVsZW1lbnRUcmVlYC4gIENoZWNrIHRoZSBkb2N1bWVudGF0aW9uIHRvIGJlIHN1cmUuCisKK0FzIGFuIDpjbGFzczpgRWxlbWVudGAsIGBgcm9vdGBgIGhhcyBhIHRhZyBhbmQgYSBkaWN0aW9uYXJ5IG9mIGF0dHJpYnV0ZXM6OgorCisgICA+Pj4gcm9vdC50YWcKKyAgICdkYXRhJworICAgPj4+IHJvb3QuYXR0cmliCisgICB7fQorCitJdCBhbHNvIGhhcyBjaGlsZHJlbiBub2RlcyBvdmVyIHdoaWNoIHdlIGNhbiBpdGVyYXRlOjoKKworICAgPj4+IGZvciBjaGlsZCBpbiByb290OgorICAgLi4uICAgcHJpbnQoY2hpbGQudGFnLCBjaGlsZC5hdHRyaWIpCisgICAuLi4KKyAgIGNvdW50cnkgeyduYW1lJzogJ0xpZWNodGVuc3RlaW4nfQorICAgY291bnRyeSB7J25hbWUnOiAnU2luZ2Fwb3JlJ30KKyAgIGNvdW50cnkgeyduYW1lJzogJ1BhbmFtYSd9CisKK0NoaWxkcmVuIGFyZSBuZXN0ZWQsIGFuZCB3ZSBjYW4gYWNjZXNzIHNwZWNpZmljIGNoaWxkIG5vZGVzIGJ5IGluZGV4OjoKKworICAgPj4+IHJvb3RbMF1bMV0udGV4dAorICAgJzIwMDgnCisKK0ZpbmRpbmcgaW50ZXJlc3RpbmcgZWxlbWVudHMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworOmNsYXNzOmBFbGVtZW50YCBoYXMgc29tZSB1c2VmdWwgbWV0aG9kcyB0aGF0IGhlbHAgaXRlcmF0ZSByZWN1cnNpdmVseSBvdmVyIGFsbAordGhlIHN1Yi10cmVlIGJlbG93IGl0IChpdHMgY2hpbGRyZW4sIHRoZWlyIGNoaWxkcmVuLCBhbmQgc28gb24pLiAgRm9yIGV4YW1wbGUsCis6bWV0aDpgRWxlbWVudC5pdGVyYDo6CisKKyAgID4+PiBmb3IgbmVpZ2hib3IgaW4gcm9vdC5pdGVyKCduZWlnaGJvcicpOgorICAgLi4uICAgcHJpbnQobmVpZ2hib3IuYXR0cmliKQorICAgLi4uCisgICB7J25hbWUnOiAnQXVzdHJpYScsICdkaXJlY3Rpb24nOiAnRSd9CisgICB7J25hbWUnOiAnU3dpdHplcmxhbmQnLCAnZGlyZWN0aW9uJzogJ1cnfQorICAgeyduYW1lJzogJ01hbGF5c2lhJywgJ2RpcmVjdGlvbic6ICdOJ30KKyAgIHsnbmFtZSc6ICdDb3N0YSBSaWNhJywgJ2RpcmVjdGlvbic6ICdXJ30KKyAgIHsnbmFtZSc6ICdDb2xvbWJpYScsICdkaXJlY3Rpb24nOiAnRSd9CisKKzptZXRoOmBFbGVtZW50LmZpbmRhbGxgIGZpbmRzIG9ubHkgZWxlbWVudHMgd2l0aCBhIHRhZyB3aGljaCBhcmUgZGlyZWN0CitjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBlbGVtZW50LiAgOm1ldGg6YEVsZW1lbnQuZmluZGAgZmluZHMgdGhlICpmaXJzdCogY2hpbGQKK3dpdGggYSBwYXJ0aWN1bGFyIHRhZywgYW5kIDptZXRoOmBFbGVtZW50LnRleHRgIGFjY2Vzc2VzIHRoZSBlbGVtZW50J3MgdGV4dAorY29udGVudC4gIDptZXRoOmBFbGVtZW50LmdldGAgYWNjZXNzZXMgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzOjoKKworICAgPj4+IGZvciBjb3VudHJ5IGluIHJvb3QuZmluZGFsbCgnY291bnRyeScpOgorICAgLi4uICAgcmFuayA9IGNvdW50cnkuZmluZCgncmFuaycpLnRleHQKKyAgIC4uLiAgIG5hbWUgPSBjb3VudHJ5LmdldCgnbmFtZScpCisgICAuLi4gICBwcmludChuYW1lLCByYW5rKQorICAgLi4uCisgICBMaWVjaHRlbnN0ZWluIDEKKyAgIFNpbmdhcG9yZSA0CisgICBQYW5hbWEgNjgKKworTW9yZSBzb3BoaXN0aWNhdGVkIHNwZWNpZmljYXRpb24gb2Ygd2hpY2ggZWxlbWVudHMgdG8gbG9vayBmb3IgaXMgcG9zc2libGUgYnkKK3VzaW5nIDpyZWY6YFhQYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLgorCitNb2RpZnlpbmcgYW4gWE1MIEZpbGUKK15eXl5eXl5eXl5eXl5eXl5eXl5eXgorCis6Y2xhc3M6YEVsZW1lbnRUcmVlYCBwcm92aWRlcyBhIHNpbXBsZSB3YXkgdG8gYnVpbGQgWE1MIGRvY3VtZW50cyBhbmQgd3JpdGUgdGhlbSB0byBmaWxlcy4KK1RoZSA6bWV0aDpgRWxlbWVudFRyZWUud3JpdGVgIG1ldGhvZCBzZXJ2ZXMgdGhpcyBwdXJwb3NlLgorCitPbmNlIGNyZWF0ZWQsIGFuIDpjbGFzczpgRWxlbWVudGAgb2JqZWN0IG1heSBiZSBtYW5pcHVsYXRlZCBieSBkaXJlY3RseSBjaGFuZ2luZworaXRzIGZpZWxkcyAoc3VjaCBhcyA6YXR0cjpgRWxlbWVudC50ZXh0YCksIGFkZGluZyBhbmQgbW9kaWZ5aW5nIGF0dHJpYnV0ZXMKKyg6bWV0aDpgRWxlbWVudC5zZXRgIG1ldGhvZCksIGFzIHdlbGwgYXMgYWRkaW5nIG5ldyBjaGlsZHJlbiAoZm9yIGV4YW1wbGUKK3dpdGggOm1ldGg6YEVsZW1lbnQuYXBwZW5kYCkuCisKK0xldCdzIHNheSB3ZSB3YW50IHRvIGFkZCBvbmUgdG8gZWFjaCBjb3VudHJ5J3MgcmFuaywgYW5kIGFkZCBhbiBgYHVwZGF0ZWRgYAorYXR0cmlidXRlIHRvIHRoZSByYW5rIGVsZW1lbnQ6OgorCisgICA+Pj4gZm9yIHJhbmsgaW4gcm9vdC5pdGVyKCdyYW5rJyk6CisgICAuLi4gICBuZXdfcmFuayA9IGludChyYW5rLnRleHQpICsgMQorICAgLi4uICAgcmFuay50ZXh0ID0gc3RyKG5ld19yYW5rKQorICAgLi4uICAgcmFuay5zZXQoJ3VwZGF0ZWQnLCAneWVzJykKKyAgIC4uLgorICAgPj4+IHRyZWUud3JpdGUoJ291dHB1dC54bWwnKQorCitPdXIgWE1MIG5vdyBsb29rcyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiB4bWwKKworICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+CisgICA8ZGF0YT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJMaWVjaHRlbnN0ZWluIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj4yPC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTQxMTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkF1c3RyaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iU3dpdHplcmxhbmQiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJTaW5nYXBvcmUiPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjU8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz41OTkwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJNYWxheXNpYSIgZGlyZWN0aW9uPSJOIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgICAgIDxjb3VudHJ5IG5hbWU9IlBhbmFtYSI+CisgICAgICAgICAgIDxyYW5rIHVwZGF0ZWQ9InllcyI+Njk8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz4xMzYwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJDb3N0YSBSaWNhIiBkaXJlY3Rpb249IlciLz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkNvbG9tYmlhIiBkaXJlY3Rpb249IkUiLz4KKyAgICAgICA8L2NvdW50cnk+CisgICA8L2RhdGE+CisKK1dlIGNhbiByZW1vdmUgZWxlbWVudHMgdXNpbmcgOm1ldGg6YEVsZW1lbnQucmVtb3ZlYC4gIExldCdzIHNheSB3ZSB3YW50IHRvCityZW1vdmUgYWxsIGNvdW50cmllcyB3aXRoIGEgcmFuayBoaWdoZXIgdGhhbiA1MDo6CisKKyAgID4+PiBmb3IgY291bnRyeSBpbiByb290LmZpbmRhbGwoJ2NvdW50cnknKToKKyAgIC4uLiAgIHJhbmsgPSBpbnQoY291bnRyeS5maW5kKCdyYW5rJykudGV4dCkKKyAgIC4uLiAgIGlmIHJhbmsgPiA1MDoKKyAgIC4uLiAgICAgcm9vdC5yZW1vdmUoY291bnRyeSkKKyAgIC4uLgorICAgPj4+IHRyZWUud3JpdGUoJ291dHB1dC54bWwnKQorCitPdXIgWE1MIG5vdyBsb29rcyBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiB4bWwKKworICAgPD94bWwgdmVyc2lvbj0iMS4wIj8+CisgICA8ZGF0YT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJMaWVjaHRlbnN0ZWluIj4KKyAgICAgICAgICAgPHJhbmsgdXBkYXRlZD0ieWVzIj4yPC9yYW5rPgorICAgICAgICAgICA8eWVhcj4yMDA4PC95ZWFyPgorICAgICAgICAgICA8Z2RwcGM+MTQxMTAwPC9nZHBwYz4KKyAgICAgICAgICAgPG5laWdoYm9yIG5hbWU9IkF1c3RyaWEiIGRpcmVjdGlvbj0iRSIvPgorICAgICAgICAgICA8bmVpZ2hib3IgbmFtZT0iU3dpdHplcmxhbmQiIGRpcmVjdGlvbj0iVyIvPgorICAgICAgIDwvY291bnRyeT4KKyAgICAgICA8Y291bnRyeSBuYW1lPSJTaW5nYXBvcmUiPgorICAgICAgICAgICA8cmFuayB1cGRhdGVkPSJ5ZXMiPjU8L3Jhbms+CisgICAgICAgICAgIDx5ZWFyPjIwMTE8L3llYXI+CisgICAgICAgICAgIDxnZHBwYz41OTkwMDwvZ2RwcGM+CisgICAgICAgICAgIDxuZWlnaGJvciBuYW1lPSJNYWxheXNpYSIgZGlyZWN0aW9uPSJOIi8+CisgICAgICAgPC9jb3VudHJ5PgorICAgPC9kYXRhPgorCitCdWlsZGluZyBYTUwgZG9jdW1lbnRzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1RoZSA6ZnVuYzpgU3ViRWxlbWVudGAgZnVuY3Rpb24gYWxzbyBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvIGNyZWF0ZSBuZXcKK3N1Yi1lbGVtZW50cyBmb3IgYSBnaXZlbiBlbGVtZW50OjoKKworICAgPj4+IGEgPSBFVC5FbGVtZW50KCdhJykKKyAgID4+PiBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCisgICA+Pj4gYyA9IEVULlN1YkVsZW1lbnQoYSwgJ2MnKQorICAgPj4+IGQgPSBFVC5TdWJFbGVtZW50KGMsICdkJykKKyAgID4+PiBFVC5kdW1wKGEpCisgICA8YT48YiAvPjxjPjxkIC8+PC9jPjwvYT4KKworQWRkaXRpb25hbCByZXNvdXJjZXMKK15eXl5eXl5eXl5eXl5eXl5eXl5eCiAKIFNlZSBodHRwOi8vZWZmYm90Lm9yZy96b25lL2VsZW1lbnQtaW5kZXguaHRtIGZvciB0dXRvcmlhbHMgYW5kIGxpbmtzIHRvIG90aGVyCi1kb2NzLiAgRnJlZHJpayBMdW5kaCdzIHBhZ2UgaXMgYWxzbyB0aGUgbG9jYXRpb24gb2YgdGhlIGRldmVsb3BtZW50IHZlcnNpb24gb2YKLXRoZSB4bWwuZXRyZWUuRWxlbWVudFRyZWUuCitkb2NzLgogCi0uLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgVGhlIEVsZW1lbnRUcmVlIEFQSSBpcyB1cGRhdGVkIHRvIDEuMy4gIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUKLSAgIGBJbnRyb2R1Y2luZyBFbGVtZW50VHJlZSAxLjMKLSAgIDxodHRwOi8vZWZmYm90Lm9yZy96b25lL2VsZW1lbnR0cmVlLTEzLWludHJvLmh0bT5gXy4KIAorLi4gX2VsZW1lbnR0cmVlLXhwYXRoOgorCitYUGF0aCBzdXBwb3J0CistLS0tLS0tLS0tLS0tCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGxpbWl0ZWQgc3VwcG9ydCBmb3IKK2BYUGF0aCBleHByZXNzaW9ucyA8aHR0cDovL3d3dy53My5vcmcvVFIveHBhdGg+YF8gZm9yIGxvY2F0aW5nIGVsZW1lbnRzIGluIGEKK3RyZWUuICBUaGUgZ29hbCBpcyB0byBzdXBwb3J0IGEgc21hbGwgc3Vic2V0IG9mIHRoZSBhYmJyZXZpYXRlZCBzeW50YXg7IGEgZnVsbAorWFBhdGggZW5naW5lIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBtb2R1bGUuCisKK0V4YW1wbGUKK15eXl5eXl4KKworSGVyZSdzIGFuIGV4YW1wbGUgdGhhdCBkZW1vbnN0cmF0ZXMgc29tZSBvZiB0aGUgWFBhdGggY2FwYWJpbGl0aWVzIG9mIHRoZQorbW9kdWxlLiAgV2UnbGwgYmUgdXNpbmcgdGhlIGBgY291bnRyeWRhdGFgYCBYTUwgZG9jdW1lbnQgZnJvbSB0aGUKKzpyZWY6YFBhcnNpbmcgWE1MIDxlbGVtZW50dHJlZS1wYXJzaW5nLXhtbD5gIHNlY3Rpb246OgorCisgICBpbXBvcnQgeG1sLmV0cmVlLkVsZW1lbnRUcmVlIGFzIEVUCisKKyAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKGNvdW50cnlkYXRhKQorCisgICAjIFRvcC1sZXZlbCBlbGVtZW50cworICAgcm9vdC5maW5kYWxsKCIuIikKKworICAgIyBBbGwgJ25laWdoYm9yJyBncmFuZC1jaGlsZHJlbiBvZiAnY291bnRyeScgY2hpbGRyZW4gb2YgdGhlIHRvcC1sZXZlbAorICAgIyBlbGVtZW50cworICAgcm9vdC5maW5kYWxsKCIuL2NvdW50cnkvbmVpZ2hib3IiKQorCisgICAjIE5vZGVzIHdpdGggbmFtZT0nU2luZ2Fwb3JlJyB0aGF0IGhhdmUgYSAneWVhcicgY2hpbGQKKyAgIHJvb3QuZmluZGFsbCgiLi8veWVhci8uLltAbmFtZT0nU2luZ2Fwb3JlJ10iKQorCisgICAjICd5ZWFyJyBub2RlcyB0aGF0IGFyZSBjaGlsZHJlbiBvZiBub2RlcyB3aXRoIG5hbWU9J1NpbmdhcG9yZScKKyAgIHJvb3QuZmluZGFsbCgiLi8vKltAbmFtZT0nU2luZ2Fwb3JlJ10veWVhciIpCisKKyAgICMgQWxsICduZWlnaGJvcicgbm9kZXMgdGhhdCBhcmUgdGhlIHNlY29uZCBjaGlsZCBvZiB0aGVpciBwYXJlbnQKKyAgIHJvb3QuZmluZGFsbCgiLi8vbmVpZ2hib3JbMl0iKQorCitTdXBwb3J0ZWQgWFBhdGggc3ludGF4CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IFN5bnRheCAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKz09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgYGB0YWdgYCAgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgY2hpbGQgZWxlbWVudHMgd2l0aCB0aGUgZ2l2ZW4gdGFnLiAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IEZvciBleGFtcGxlLCBgYHNwYW1gYCBzZWxlY3RzIGFsbCBjaGlsZCBlbGVtZW50cyAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lZCBgYHNwYW1gYCwgYGBzcGFtL2VnZ2BgIHNlbGVjdHMgYWxsICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgZ3JhbmRjaGlsZHJlbiBuYW1lZCBgYGVnZ2BgIGluIGFsbCBjaGlsZHJlbiBuYW1lZCAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGBgc3BhbWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAqYGAgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgY2hpbGQgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgYGAqL2VnZ2BgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHNlbGVjdHMgYWxsIGdyYW5kY2hpbGRyZW4gbmFtZWQgYGBlZ2dgYC4gICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGAuYGAgICAgICAgICAgICAgICAgIHwgU2VsZWN0cyB0aGUgY3VycmVudCBub2RlLiAgVGhpcyBpcyBtb3N0bHkgdXNlZnVsICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGgsIHRvIGluZGljYXRlIHRoYXQgaXQncyAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBhIHJlbGF0aXZlIHBhdGguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IGBgLy9gYCAgICAgICAgICAgICAgICB8IFNlbGVjdHMgYWxsIHN1YmVsZW1lbnRzLCBvbiBhbGwgbGV2ZWxzIGJlbmVhdGggdGhlICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCBjdXJyZW50ICBlbGVtZW50LiAgRm9yIGV4YW1wbGUsIGBgLi8vZWdnYGAgc2VsZWN0cyAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgYWxsIGBgZWdnYGAgZWxlbWVudHMgaW4gdGhlIGVudGlyZSB0cmVlLiAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYC4uYGAgICAgICAgICAgICAgICAgfCBTZWxlY3RzIHRoZSBwYXJlbnQgZWxlbWVudC4gIFJldHVybnMgYGBOb25lYGAgaWYgdGhlIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgcGF0aCBhdHRlbXB0cyB0byByZWFjaCB0aGUgYW5jZXN0b3JzIG9mIHRoZSBzdGFydCAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGVsZW1lbnQgKHRoZSBlbGVtZW50IGBgZmluZGBgIHdhcyBjYWxsZWQgb24pLiAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbQGF0dHJpYl1gYCAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIHRoZSBnaXZlbiBhdHRyaWJ1dGUuICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYFtAYXR0cmliPSd2YWx1ZSddYGAgfCBTZWxlY3RzIGFsbCBlbGVtZW50cyBmb3Igd2hpY2ggdGhlIGdpdmVuIGF0dHJpYnV0ZSAgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgaGFzIHRoZSBnaXZlbiB2YWx1ZS4gIFRoZSB2YWx1ZSBjYW5ub3QgY29udGFpbiAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHF1b3Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbdGFnXWBgICAgICAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIGEgY2hpbGQgbmFtZWQgICAgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IGBgdGFnYGAuICBPbmx5IGltbWVkaWF0ZSBjaGlsZHJlbiBhcmUgc3VwcG9ydGVkLiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBbcG9zaXRpb25dYGAgICAgICAgIHwgU2VsZWN0cyBhbGwgZWxlbWVudHMgdGhhdCBhcmUgbG9jYXRlZCBhdCB0aGUgZ2l2ZW4gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHBvc2l0aW9uLiAgVGhlIHBvc2l0aW9uIGNhbiBiZSBlaXRoZXIgYW4gaW50ZWdlciAgICAgfAorfCAgICAgICAgICAgICAgICAgICAgICAgfCAoMSBpcyB0aGUgZmlyc3QgcG9zaXRpb24pLCB0aGUgZXhwcmVzc2lvbiBgYGxhc3QoKWBgIHwKK3wgICAgICAgICAgICAgICAgICAgICAgIHwgKGZvciB0aGUgbGFzdCBwb3NpdGlvbiksIG9yIGEgcG9zaXRpb24gcmVsYXRpdmUgdG8gICB8Cit8ICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBsYXN0IHBvc2l0aW9uIChlLmcuIGBgbGFzdCgpLTFgYCkuICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworUHJlZGljYXRlcyAoZXhwcmVzc2lvbnMgd2l0aGluIHNxdWFyZSBicmFja2V0cykgbXVzdCBiZSBwcmVjZWRlZCBieSBhIHRhZworbmFtZSwgYW4gYXN0ZXJpc2ssIG9yIGFub3RoZXIgcHJlZGljYXRlLiAgYGBwb3NpdGlvbmBgIHByZWRpY2F0ZXMgbXVzdCBiZQorcHJlY2VkZWQgYnkgYSB0YWcgbmFtZS4KKworUmVmZXJlbmNlCistLS0tLS0tLS0KIAogLi4gX2VsZW1lbnR0cmVlLWZ1bmN0aW9uczoKIAogRnVuY3Rpb25zCi0tLS0tLS0tLS0KK15eXl5eXl5eXgogCiAKIC4uIGZ1bmN0aW9uOjogQ29tbWVudCh0ZXh0PU5vbmUpCkBAIC0xNTksOSArNDMzLDkgQEAKICAgIEdlbmVyYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBYTUwgZWxlbWVudCwgaW5jbHVkaW5nIGFsbAogICAgc3ViZWxlbWVudHMuICAqZWxlbWVudCogaXMgYW4gOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZS4gICplbmNvZGluZyogWzFdXyBpcwogICAgdGhlIG91dHB1dCBlbmNvZGluZyAoZGVmYXVsdCBpcyBVUy1BU0NJSSkuICBVc2UgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0bwotICAgZ2VuZXJhdGUgYSBVbmljb2RlIHN0cmluZy4gICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsCi0gICBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4gIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpCi0gICBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KKyAgIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcgKG90aGVyd2lzZSwgYSBieXRlc3RyaW5nIGlzIGdlbmVyYXRlZCkuICAqbWV0aG9kKgorICAgaXMgZWl0aGVyIGBgInhtbCJgYCwgYGAiaHRtbCJgYCBvciBgYCJ0ZXh0ImBgIChkZWZhdWx0IGlzIGBgInhtbCJgYCkuCisgICBSZXR1cm5zIGFuIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KIAogCiAuLiBmdW5jdGlvbjo6IHRvc3RyaW5nbGlzdChlbGVtZW50LCBlbmNvZGluZz0idXMtYXNjaWkiLCBtZXRob2Q9InhtbCIpCkBAIC0xNjksMTEgKzQ0MywxMSBAQAogICAgR2VuZXJhdGVzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIFhNTCBlbGVtZW50LCBpbmNsdWRpbmcgYWxsCiAgICBzdWJlbGVtZW50cy4gICplbGVtZW50KiBpcyBhbiA6Y2xhc3M6YEVsZW1lbnRgIGluc3RhbmNlLiAgKmVuY29kaW5nKiBbMV1fIGlzCiAgICB0aGUgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4gIFVzZSBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvCi0gICBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLiAgKm1ldGhvZCogaXMgZWl0aGVyIGBgInhtbCJgYCwKLSAgIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcyBgYCJ4bWwiYGApLiAgUmV0dXJucyBhIGxpc3Qgb2YKLSAgIChvcHRpb25hbGx5KSBlbmNvZGVkIHN0cmluZ3MgY29udGFpbmluZyB0aGUgWE1MIGRhdGEuICBJdCBkb2VzIG5vdCBndWFyYW50ZWUKLSAgIGFueSBzcGVjaWZpYyBzZXF1ZW5jZSwgZXhjZXB0IHRoYXQgYGAiIi5qb2luKHRvc3RyaW5nbGlzdChlbGVtZW50KSkgPT0KLSAgIHRvc3RyaW5nKGVsZW1lbnQpYGAuCisgICBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nIChvdGhlcndpc2UsIGEgYnl0ZXN0cmluZyBpcyBnZW5lcmF0ZWQpLiAgKm1ldGhvZCoKKyAgIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcyBgYCJ4bWwiYGApLgorICAgUmV0dXJucyBhIGxpc3Qgb2YgKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5ncyBjb250YWluaW5nIHRoZSBYTUwgZGF0YS4KKyAgIEl0IGRvZXMgbm90IGd1YXJhbnRlZSBhbnkgc3BlY2lmaWMgc2VxdWVuY2UsIGV4Y2VwdCB0aGF0CisgICBgYCIiLmpvaW4odG9zdHJpbmdsaXN0KGVsZW1lbnQpKSA9PSB0b3N0cmluZyhlbGVtZW50KWBgLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtMTk4LDggKzQ3Miw3IEBACiAuLiBfZWxlbWVudHRyZWUtZWxlbWVudC1vYmplY3RzOgogCiBFbGVtZW50IE9iamVjdHMKLS0tLS0tLS0tLS0tLS0tLQotCiteXl5eXl5eXl5eXl5eXl4KIAogLi4gY2xhc3M6OiBFbGVtZW50KHRhZywgYXR0cmliPXt9LCAqKmV4dHJhKQogCkBAIC0yNTAsNyArNTIzLDcgQEAKICAgIC4uIG1ldGhvZDo6IGNsZWFyKCkKIAogICAgICAgUmVzZXRzIGFuIGVsZW1lbnQuICBUaGlzIGZ1bmN0aW9uIHJlbW92ZXMgYWxsIHN1YmVsZW1lbnRzLCBjbGVhcnMgYWxsCi0gICAgICBhdHRyaWJ1dGVzLCBhbmQgc2V0cyB0aGUgdGV4dCBhbmQgdGFpbCBhdHRyaWJ1dGVzIHRvIE5vbmUuCisgICAgICBhdHRyaWJ1dGVzLCBhbmQgc2V0cyB0aGUgdGV4dCBhbmQgdGFpbCBhdHRyaWJ1dGVzIHRvIGBgTm9uZWBgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldChrZXksIGRlZmF1bHQ9Tm9uZSkKQEAgLTI4MSwzNiArNTU0LDQzIEBACiAKICAgIC4uIG1ldGhvZDo6IGFwcGVuZChzdWJlbGVtZW50KQogCi0gICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudHMgaW50ZXJuYWwgbGlzdAotICAgICAgb2Ygc3ViZWxlbWVudHMuCisgICAgICBBZGRzIHRoZSBlbGVtZW50ICpzdWJlbGVtZW50KiB0byB0aGUgZW5kIG9mIHRoaXMgZWxlbWVudCdzIGludGVybmFsIGxpc3QKKyAgICAgIG9mIHN1YmVsZW1lbnRzLiAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgKnN1YmVsZW1lbnQqIGlzIG5vdCBhbgorICAgICAgOmNsYXNzOmBFbGVtZW50YC4KIAogCiAgICAuLiBtZXRob2Q6OiBleHRlbmQoc3ViZWxlbWVudHMpCiAKICAgICAgIEFwcGVuZHMgKnN1YmVsZW1lbnRzKiBmcm9tIGEgc2VxdWVuY2Ugb2JqZWN0IHdpdGggemVybyBvciBtb3JlIGVsZW1lbnRzLgotICAgICAgUmFpc2VzIDpleGM6YEFzc2VydGlvbkVycm9yYCBpZiBhIHN1YmVsZW1lbnQgaXMgbm90IGEgdmFsaWQgb2JqZWN0LgorICAgICAgUmFpc2VzIDpleGM6YFR5cGVFcnJvcmAgaWYgYSBzdWJlbGVtZW50IGlzIG5vdCBhbiA6Y2xhc3M6YEVsZW1lbnRgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCiAgICAgICBGaW5kcyB0aGUgZmlyc3Qgc3ViZWxlbWVudCBtYXRjaGluZyAqbWF0Y2gqLiAgKm1hdGNoKiBtYXkgYmUgYSB0YWcgbmFtZQotICAgICAgb3IgcGF0aC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZSBvciBgYE5vbmVgYC4KKyAgICAgIG9yIGEgOnJlZjpgcGF0aCA8ZWxlbWVudHRyZWUteHBhdGg+YC4gIFJldHVybnMgYW4gZWxlbWVudCBpbnN0YW5jZQorICAgICAgb3IgYGBOb25lYGAuICAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoKQorICAgLi4gbWV0aG9kOjogZmluZGFsbChtYXRjaCwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIGEgbGlzdAotICAgICAgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBGaW5kcyBhbGwgbWF0Y2hpbmcgc3ViZWxlbWVudHMsIGJ5IHRhZyBuYW1lIG9yCisgICAgICA6cmVmOmBwYXRoIDxlbGVtZW50dHJlZS14cGF0aD5gLiAgUmV0dXJucyBhIGxpc3QgY29udGFpbmluZyBhbGwgbWF0Y2hpbmcKKyAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLiAgKm5hbWVzcGFjZXMqIGlzIGFuIG9wdGlvbmFsIG1hcHBpbmcgZnJvbQorICAgICAgbmFtZXNwYWNlIHByZWZpeCB0byBmdWxsIG5hbWUuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSkKKyAgIC4uIG1ldGhvZDo6IGZpbmR0ZXh0KG1hdGNoLCBkZWZhdWx0PU5vbmUsIG5hbWVzcGFjZXM9Tm9uZSkKIAogICAgICAgRmluZHMgdGV4dCBmb3IgdGhlIGZpcnN0IHN1YmVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlCi0gICAgICBhIHRhZyBuYW1lIG9yIHBhdGguICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nCi0gICAgICBlbGVtZW50IGhhcyBubyB0ZXh0IGNvbnRlbnQgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgorICAgICAgYSB0YWcgbmFtZSBvciBhIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIHRoZSB0ZXh0IGNvbnRlbnQKKyAgICAgIG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciAqZGVmYXVsdCogaWYgbm8gZWxlbWVudCB3YXMgZm91bmQuCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG1hdGNoaW5nIGVsZW1lbnQgaGFzIG5vIHRleHQgY29udGVudCBhbiBlbXB0eSBzdHJpbmcKKyAgICAgIGlzIHJldHVybmVkLiAqbmFtZXNwYWNlcyogaXMgYW4gb3B0aW9uYWwgbWFwcGluZyBmcm9tIG5hbWVzcGFjZSBwcmVmaXgKKyAgICAgIHRvIGZ1bGwgbmFtZS4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRjaGlsZHJlbigpCkBAIC0zMjUsOSArNjA1LDEwIEBACiAgICAgICAgICBVc2UgbWV0aG9kIDptZXRoOmBFbGVtZW50Lml0ZXJgIGluc3RlYWQuCiAKIAotICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBlbGVtZW50KQorICAgLi4gbWV0aG9kOjogaW5zZXJ0KGluZGV4LCBzdWJlbGVtZW50KQogCi0gICAgICBJbnNlcnRzIGEgc3ViZWxlbWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBlbGVtZW50LgorICAgICAgSW5zZXJ0cyAqc3ViZWxlbWVudCogYXQgdGhlIGdpdmVuIHBvc2l0aW9uIGluIHRoaXMgZWxlbWVudC4gIFJhaXNlcworICAgICAgOmV4YzpgVHlwZUVycm9yYCBpZiAqc3ViZWxlbWVudCogaXMgbm90IGFuIDpjbGFzczpgRWxlbWVudGAuCiAKIAogICAgLi4gbWV0aG9kOjogaXRlcih0YWc9Tm9uZSkKQEAgLTM0MSwxMCArNjIyLDEzIEBACiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCi0gICAuLiBtZXRob2Q6OiBpdGVyZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYW4gaXRlcmFibGUKLSAgICAgIHlpZWxkaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cyBpbiBkb2N1bWVudCBvcmRlci4KKyAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IKKyAgICAgIDpyZWY6YHBhdGggPGVsZW1lbnR0cmVlLXhwYXRoPmAuICBSZXR1cm5zIGFuIGl0ZXJhYmxlIHlpZWxkaW5nIGFsbAorICAgICAgbWF0Y2hpbmcgZWxlbWVudHMgaW4gZG9jdW1lbnQgb3JkZXIuICpuYW1lc3BhY2VzKiBpcyBhbiBvcHRpb25hbCBtYXBwaW5nCisgICAgICBmcm9tIG5hbWVzcGFjZSBwcmVmaXggdG8gZnVsbCBuYW1lLgorCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0zODksNyArNjczLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1lbGVtZW50dHJlZS1vYmplY3RzOgogCiBFbGVtZW50VHJlZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBFbGVtZW50VHJlZShlbGVtZW50PU5vbmUsIGZpbGU9Tm9uZSkKQEAgLTQwOSwyOCArNjkzLDE5IEBACiAgICAgICBjYXJlLiAgKmVsZW1lbnQqIGlzIGFuIGVsZW1lbnQgaW5zdGFuY2UuCiAKIAotICAgLi4gbWV0aG9kOjogZmluZChtYXRjaCkKKyAgIC4uIG1ldGhvZDo6IGZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgdGhlIGZpcnN0IHRvcGxldmVsIGVsZW1lbnQgbWF0Y2hpbmcgKm1hdGNoKi4gICptYXRjaCogbWF5IGJlIGEgdGFnCi0gICAgICBuYW1lIG9yIHBhdGguICBTYW1lIGFzIGdldHJvb3QoKS5maW5kKG1hdGNoKS4gIFJldHVybnMgdGhlIGZpcnN0IG1hdGNoaW5nCi0gICAgICBlbGVtZW50LCBvciBgYE5vbmVgYCBpZiBubyBlbGVtZW50IHdhcyBmb3VuZC4KKyAgICAgIFNhbWUgYXMgOm1ldGg6YEVsZW1lbnQuZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAKLSAgIC4uIG1ldGhvZDo6IGZpbmRhbGwobWF0Y2gpCisgICAuLiBtZXRob2Q6OiBmaW5kYWxsKG1hdGNoLCBuYW1lc3BhY2VzPU5vbmUpCiAKLSAgICAgIEZpbmRzIGFsbCBtYXRjaGluZyBzdWJlbGVtZW50cywgYnkgdGFnIG5hbWUgb3IgcGF0aC4gIFNhbWUgYXMKLSAgICAgIGdldHJvb3QoKS5maW5kYWxsKG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4gIFJldHVybnMgYQotICAgICAgbGlzdCBjb250YWluaW5nIGFsbCBtYXRjaGluZyBlbGVtZW50cywgaW4gZG9jdW1lbnQgb3JkZXIuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmRhbGxgLCBzdGFydGluZyBhdCB0aGUgcm9vdCBvZiB0aGUgdHJlZS4KIAogCi0gICAuLiBtZXRob2Q6OiBmaW5kdGV4dChtYXRjaCwgZGVmYXVsdD1Ob25lKQorICAgLi4gbWV0aG9kOjogZmluZHRleHQobWF0Y2gsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKQogCi0gICAgICBGaW5kcyB0aGUgZWxlbWVudCB0ZXh0IGZvciB0aGUgZmlyc3QgdG9wbGV2ZWwgZWxlbWVudCB3aXRoIGdpdmVuIHRhZy4KLSAgICAgIFNhbWUgYXMgZ2V0cm9vdCgpLmZpbmR0ZXh0KG1hdGNoKS4gICptYXRjaCogbWF5IGJlIGEgdGFnIG5hbWUgb3IgcGF0aC4KLSAgICAgICpkZWZhdWx0KiBpcyB0aGUgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgZm91bmQuICBSZXR1cm5zCi0gICAgICB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50LCBvciB0aGUgZGVmYXVsdCB2YWx1ZSBubwotICAgICAgZWxlbWVudCB3YXMgZm91bmQuICBOb3RlIHRoYXQgaWYgdGhlIGVsZW1lbnQgaXMgZm91bmQsIGJ1dCBoYXMgbm8gdGV4dAotICAgICAgY29udGVudCwgdGhpcyBtZXRob2QgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICBTYW1lIGFzIDptZXRoOmBFbGVtZW50LmZpbmR0ZXh0YCwgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuCiAKIAogICAgLi4gbWV0aG9kOjogZ2V0aXRlcmF0b3IodGFnPU5vbmUpCkBAIC00NTEsMTEgKzcyNiw5IEBACiAgICAgICB0byBsb29rIGZvciAoZGVmYXVsdCBpcyB0byByZXR1cm4gYWxsIGVsZW1lbnRzKQogCiAKLSAgIC4uIG1ldGhvZDo6IGl0ZXJmaW5kKG1hdGNoKQorICAgLi4gbWV0aG9kOjogaXRlcmZpbmQobWF0Y2gsIG5hbWVzcGFjZXM9Tm9uZSkKIAotICAgICAgRmluZHMgYWxsIG1hdGNoaW5nIHN1YmVsZW1lbnRzLCBieSB0YWcgbmFtZSBvciBwYXRoLiAgU2FtZSBhcwotICAgICAgZ2V0cm9vdCgpLml0ZXJmaW5kKG1hdGNoKS4gUmV0dXJucyBhbiBpdGVyYWJsZSB5aWVsZGluZyBhbGwgbWF0Y2hpbmcKLSAgICAgIGVsZW1lbnRzIGluIGRvY3VtZW50IG9yZGVyLgorICAgICAgU2FtZSBhcyA6bWV0aDpgRWxlbWVudC5pdGVyZmluZGAsIHN0YXJ0aW5nIGF0IHRoZSByb290IG9mIHRoZSB0cmVlLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIApAQCAtNDY0LDIwICs3MzcsMjkgQEAKIAogICAgICAgTG9hZHMgYW4gZXh0ZXJuYWwgWE1MIHNlY3Rpb24gaW50byB0aGlzIGVsZW1lbnQgdHJlZS4gICpzb3VyY2UqIGlzIGEgZmlsZQogICAgICAgbmFtZSBvciA6dGVybTpgZmlsZSBvYmplY3RgLiAgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLgotICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgWE1MUGFyc2VyIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUgc2VjdGlvbgotICAgICAgcm9vdCBlbGVtZW50LgorICAgICAgSWYgbm90IGdpdmVuLCB0aGUgc3RhbmRhcmQgOmNsYXNzOmBYTUxQYXJzZXJgIHBhcnNlciBpcyB1c2VkLiAgUmV0dXJucyB0aGUKKyAgICAgIHNlY3Rpb24gcm9vdCBlbGVtZW50LgogCiAKLSAgIC4uIG1ldGhvZDo6IHdyaXRlKGZpbGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIsIHhtbF9kZWNsYXJhdGlvbj1Ob25lLCBtZXRob2Q9InhtbCIpCisgICAuLiBtZXRob2Q6OiB3cml0ZShmaWxlLCBlbmNvZGluZz0idXMtYXNjaWkiLCB4bWxfZGVjbGFyYXRpb249Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJ4bWwiKQogCiAgICAgICBXcml0ZXMgdGhlIGVsZW1lbnQgdHJlZSB0byBhIGZpbGUsIGFzIFhNTC4gICpmaWxlKiBpcyBhIGZpbGUgbmFtZSwgb3IgYQotICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dCBlbmNvZGluZwotICAgICAgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLiAgVXNlIGBgZW5jb2Rpbmc9InVuaWNvZGUiYGAgdG8gd3JpdGUgYSBVbmljb2RlIHN0cmluZy4KLSAgICAgICp4bWxfZGVjbGFyYXRpb24qIGNvbnRyb2xzIGlmIGFuIFhNTCBkZWNsYXJhdGlvbgotICAgICAgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBmaWxlLiAgVXNlIEZhbHNlIGZvciBuZXZlciwgVHJ1ZSBmb3IgYWx3YXlzLCBOb25lCi0gICAgICBmb3Igb25seSBpZiBub3QgVVMtQVNDSUkgb3IgVVRGLTggb3IgVW5pY29kZSAoZGVmYXVsdCBpcyBOb25lKS4gICptZXRob2QqIGlzCi0gICAgICBlaXRoZXIgYGAieG1sImBgLCBgYCJodG1sImBgIG9yIGBgInRleHQiYGAgKGRlZmF1bHQgaXMgYGAieG1sImBgKS4KLSAgICAgIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5nLgorICAgICAgOnRlcm06YGZpbGUgb2JqZWN0YCBvcGVuZWQgZm9yIHdyaXRpbmcuICAqZW5jb2RpbmcqIFsxXV8gaXMgdGhlIG91dHB1dAorICAgICAgZW5jb2RpbmcgKGRlZmF1bHQgaXMgVVMtQVNDSUkpLgorICAgICAgKnhtbF9kZWNsYXJhdGlvbiogY29udHJvbHMgaWYgYW4gWE1MIGRlY2xhcmF0aW9uIHNob3VsZCBiZSBhZGRlZCB0byB0aGUKKyAgICAgIGZpbGUuICBVc2UgYGBGYWxzZWBgIGZvciBuZXZlciwgYGBUcnVlYGAgZm9yIGFsd2F5cywgYGBOb25lYGAKKyAgICAgIGZvciBvbmx5IGlmIG5vdCBVUy1BU0NJSSBvciBVVEYtOCBvciBVbmljb2RlIChkZWZhdWx0IGlzIGBgTm9uZWBgKS4KKyAgICAgICptZXRob2QqIGlzIGVpdGhlciBgYCJ4bWwiYGAsIGBgImh0bWwiYGAgb3IgYGAidGV4dCJgYCAoZGVmYXVsdCBpcworICAgICAgYGAieG1sImBgKS4KKworICAgICAgVGhlIG91dHB1dCBpcyBlaXRoZXIgYSBzdHJpbmcgKDpjbGFzczpgc3RyYCkgb3IgYmluYXJ5ICg6Y2xhc3M6YGJ5dGVzYCkuCisgICAgICBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgdGhlICplbmNvZGluZyogYXJndW1lbnQuICBJZiAqZW5jb2RpbmcqIGlzCisgICAgICBgYCJ1bmljb2RlImBgLCB0aGUgb3V0cHV0IGlzIGEgc3RyaW5nOyBvdGhlcndpc2UsIGl0J3MgYmluYXJ5LiAgTm90ZSB0aGF0CisgICAgICB0aGlzIG1heSBjb25mbGljdCB3aXRoIHRoZSB0eXBlIG9mICpmaWxlKiBpZiBpdCdzIGFuIG9wZW4KKyAgICAgIDp0ZXJtOmBmaWxlIG9iamVjdGA7IG1ha2Ugc3VyZSB5b3UgZG8gbm90IHRyeSB0byB3cml0ZSBhIHN0cmluZyB0byBhCisgICAgICBiaW5hcnkgc3RyZWFtIGFuZCB2aWNlIHZlcnNhLgorCiAKIFRoaXMgaXMgdGhlIFhNTCBmaWxlIHRoYXQgaXMgZ29pbmcgdG8gYmUgbWFuaXB1bGF0ZWQ6OgogCkBAIC01MTAsNyArNzkyLDcgQEAKIC4uIF9lbGVtZW50dHJlZS1xbmFtZS1vYmplY3RzOgogCiBRTmFtZSBPYmplY3RzCi0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBRTmFtZSh0ZXh0X29yX3VyaSwgdGFnPU5vbmUpCkBAIC01MjYsNyArODA4LDcgQEAKIC4uIF9lbGVtZW50dHJlZS10cmVlYnVpbGRlci1vYmplY3RzOgogCiBUcmVlQnVpbGRlciBPYmplY3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tCiteXl5eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBUcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9Tm9uZSkKQEAgLTUzNCw5ICs4MTYsOSBAQAogICAgR2VuZXJpYyBlbGVtZW50IHN0cnVjdHVyZSBidWlsZGVyLiAgVGhpcyBidWlsZGVyIGNvbnZlcnRzIGEgc2VxdWVuY2Ugb2YKICAgIHN0YXJ0LCBkYXRhLCBhbmQgZW5kIG1ldGhvZCBjYWxscyB0byBhIHdlbGwtZm9ybWVkIGVsZW1lbnQgc3RydWN0dXJlLiAgWW91CiAgICBjYW4gdXNlIHRoaXMgY2xhc3MgdG8gYnVpbGQgYW4gZWxlbWVudCBzdHJ1Y3R1cmUgdXNpbmcgYSBjdXN0b20gWE1MIHBhcnNlciwKLSAgIG9yIGEgcGFyc2VyIGZvciBzb21lIG90aGVyIFhNTC1saWtlIGZvcm1hdC4gIFRoZSAqZWxlbWVudF9mYWN0b3J5KiBpcyBjYWxsZWQKLSAgIHRvIGNyZWF0ZSBuZXcgOmNsYXNzOmBFbGVtZW50YCBpbnN0YW5jZXMgd2hlbiBnaXZlbi4KLQorICAgb3IgYSBwYXJzZXIgZm9yIHNvbWUgb3RoZXIgWE1MLWxpa2UgZm9ybWF0LiAgKmVsZW1lbnRfZmFjdG9yeSosIHdoZW4gZ2l2ZW4sCisgICBtdXN0IGJlIGEgY2FsbGFibGUgYWNjZXB0aW5nIHR3byBwb3NpdGlvbmFsIGFyZ3VtZW50czogYSB0YWcgYW5kCisgICBhIGRpY3Qgb2YgYXR0cmlidXRlcy4gIEl0IGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIG5ldyBlbGVtZW50IGluc3RhbmNlLgogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCiAKQEAgLTU3Nyw3ICs4NTksNyBAQAogLi4gX2VsZW1lbnR0cmVlLXhtbHBhcnNlci1vYmplY3RzOgogCiBYTUxQYXJzZXIgT2JqZWN0cwotLS0tLS0tLS0tLS0tLS0tLS0KK15eXl5eXl5eXl5eXl5eXl5eCiAKIAogLi4gY2xhc3M6OiBYTUxQYXJzZXIoaHRtbD0wLCB0YXJnZXQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSkKQEAgLTU4NSw5ICs4NjcsOSBAQAogICAgOmNsYXNzOmBFbGVtZW50YCBzdHJ1Y3R1cmUgYnVpbGRlciBmb3IgWE1MIHNvdXJjZSBkYXRhLCBiYXNlZCBvbiB0aGUgZXhwYXQKICAgIHBhcnNlci4gICpodG1sKiBhcmUgcHJlZGVmaW5lZCBIVE1MIGVudGl0aWVzLiAgVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgYnkKICAgIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLiAgKnRhcmdldCogaXMgdGhlIHRhcmdldCBvYmplY3QuICBJZiBvbWl0dGVkLCB0aGUKLSAgIGJ1aWxkZXIgdXNlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3RhbmRhcmQgVHJlZUJ1aWxkZXIgY2xhc3MuICAqZW5jb2RpbmcqIFsxXV8KLSAgIGlzIG9wdGlvbmFsLiAgSWYgZ2l2ZW4sIHRoZSB2YWx1ZSBvdmVycmlkZXMgdGhlIGVuY29kaW5nIHNwZWNpZmllZCBpbiB0aGUKLSAgIFhNTCBmaWxlLgorICAgYnVpbGRlciB1c2VzIGFuIGluc3RhbmNlIG9mIHRoZSBzdGFuZGFyZCA6Y2xhc3M6YFRyZWVCdWlsZGVyYCBjbGFzcy4KKyAgICplbmNvZGluZyogWzFdXyBpcyBvcHRpb25hbC4gIElmIGdpdmVuLCB0aGUgdmFsdWUgb3ZlcnJpZGVzIHRoZSBlbmNvZGluZworICAgc3BlY2lmaWVkIGluIHRoZSBYTUwgZmlsZS4KIAogCiAgICAuLiBtZXRob2Q6OiBjbG9zZSgpCkBAIC02NDUsNiArOTI3LDI0IEBACiAgICAgPj4+IHBhcnNlci5jbG9zZSgpCiAgICAgNAogCitFeGNlcHRpb25zCiteXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogUGFyc2VFcnJvcgorCisgICBYTUwgcGFyc2UgZXJyb3IsIHJhaXNlZCBieSB0aGUgdmFyaW91cyBwYXJzaW5nIG1ldGhvZHMgaW4gdGhpcyBtb2R1bGUgd2hlbgorICAgcGFyc2luZyBmYWlscy4gIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW5zdGFuY2Ugb2YgdGhpcyBleGNlcHRpb24KKyAgIHdpbGwgY29udGFpbiBhIHVzZXItZnJpZW5kbHkgZXJyb3IgbWVzc2FnZS4gIEluIGFkZGl0aW9uLCBpdCB3aWxsIGhhdmUKKyAgIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBhdmFpbGFibGU6CisKKyAgIC4uIGF0dHJpYnV0ZTo6IGNvZGUKKworICAgICAgQSBudW1lcmljIGVycm9yIGNvZGUgZnJvbSB0aGUgZXhwYXQgcGFyc2VyLiBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YKKyAgICAgIDptb2Q6YHhtbC5wYXJzZXJzLmV4cGF0YCBmb3IgdGhlIGxpc3Qgb2YgZXJyb3IgY29kZXMgYW5kIHRoZWlyIG1lYW5pbmdzLgorCisgICAuLiBhdHRyaWJ1dGU6OiBwb3NpdGlvbgorCisgICAgICBBIHR1cGxlIG9mICpsaW5lKiwgKmNvbHVtbiogbnVtYmVycywgc3BlY2lmeWluZyB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwucnN0IGIvRG9jL2xpYnJhcnkveG1sLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWIyZTIzCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkveG1sLnJzdApAQCAtMCwwICsxLDI5IEBACisuLiBfeG1sOgorCitYTUwgUHJvY2Vzc2luZyBNb2R1bGVzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1B5dGhvbidzIGludGVyZmFjZXMgZm9yIHByb2Nlc3NpbmcgWE1MIGFyZSBncm91cGVkIGluIHRoZSBgYHhtbGBgIHBhY2thZ2UuCisKK0l0IGlzIGltcG9ydGFudCB0byBub3RlIHRoYXQgbW9kdWxlcyBpbiB0aGUgOm1vZDpgeG1sYCBwYWNrYWdlIHJlcXVpcmUgdGhhdAordGhlcmUgYmUgYXQgbGVhc3Qgb25lIFNBWC1jb21wbGlhbnQgWE1MIHBhcnNlciBhdmFpbGFibGUuIFRoZSBFeHBhdCBwYXJzZXIgaXMKK2luY2x1ZGVkIHdpdGggUHl0aG9uLCBzbyB0aGUgOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgIG1vZHVsZSB3aWxsIGFsd2F5cyBiZQorYXZhaWxhYmxlLgorCitUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDptb2Q6YHhtbC5kb21gIGFuZCA6bW9kOmB4bWwuc2F4YCBwYWNrYWdlcyBhcmUgdGhlCitkZWZpbml0aW9uIG9mIHRoZSBQeXRob24gYmluZGluZ3MgZm9yIHRoZSBET00gYW5kIFNBWCBpbnRlcmZhY2VzLgorCitUaGUgWE1MIGhhbmRsaW5nIHN1Ym1vZHVsZXMgYXJlOgorCisqIDptb2Q6YHhtbC5ldHJlZS5FbGVtZW50VHJlZWA6IHRoZSBFbGVtZW50VHJlZSBBUEksIGEgc2ltcGxlIGFuZCBsaWdodHdlaWdodAorCisuLgorCisqIDptb2Q6YHhtbC5kb21gOiB0aGUgRE9NIEFQSSBkZWZpbml0aW9uCisqIDptb2Q6YHhtbC5kb20ubWluaWRvbWA6IGEgbGlnaHR3ZWlnaHQgRE9NIGltcGxlbWVudGF0aW9uCisqIDptb2Q6YHhtbC5kb20ucHVsbGRvbWA6IHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHBhcnRpYWwgRE9NIHRyZWVzCisKKy4uCisKKyogOm1vZDpgeG1sLnNheGA6IFNBWDIgYmFzZSBjbGFzc2VzIGFuZCBjb252ZW5pZW5jZSBmdW5jdGlvbnMKKyogOm1vZDpgeG1sLnBhcnNlcnMuZXhwYXRgOiB0aGUgRXhwYXQgcGFyc2VyIGJpbmRpbmcKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5zYXgudXRpbHMucnN0IGIvRG9jL2xpYnJhcnkveG1sLnNheC51dGlscy5yc3QKaW5kZXggZmYzNmZkOC4uMGE0MDM4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLnNheC51dGlscy5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLnNheC51dGlscy5yc3QKQEAgLTYyLDcgKzYyLDcgQEAKICAgIHRhZ3MsIGlmIHNldCB0byAqVHJ1ZSogdGhleSBhcmUgZW1pdHRlZCBhcyBhIHNpbmdsZSBzZWxmLWNsb3NlZCB0YWcuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotICAgICAgc2hvcnRfZW1wdHlfZWxlbWVudHMKKyAgICAgIFRoZSAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIHBhcmFtZXRlci4KIAogCiAuLiBjbGFzczo6IFhNTEZpbHRlckJhc2UoYmFzZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKaW5kZXggZTcyNzcwYS4uMTg3MWM5OSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLmNsaWVudC5yc3QKQEAgLTgsNyArOCw3IEBACiAKIAogLi4gWFhYIE5vdCBldmVyeXRoaW5nIGlzIGRvY3VtZW50ZWQgeWV0LiAgSXQgbWlnaHQgYmUgZ29vZCB0byBkZXNjcmliZQotICAgTWFyc2hhbGxlciwgVW5tYXJzaGFsbGVyLCBnZXRwYXJzZXIsIGR1bXBzLCBsb2FkcywgYW5kIFRyYW5zcG9ydC4KKyAgIE1hcnNoYWxsZXIsIFVubWFyc2hhbGxlciwgZ2V0cGFyc2VyIGFuZCBUcmFuc3BvcnQuCiAKICoqU291cmNlIGNvZGU6KiogOnNvdXJjZTpgTGliL3htbHJwYy9jbGllbnQucHlgCiAKQEAgLTIxLDcgKzIxLDEyIEBACiBiZXR3ZWVuIGNvbmZvcm1hYmxlIFB5dGhvbiBvYmplY3RzIGFuZCBYTUwgb24gdGhlIHdpcmUuCiAKIAotLi4gY2xhc3M6OiBTZXJ2ZXJQcm94eSh1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLCBhbGxvd19ub25lPUZhbHNlLCB1c2VfZGF0ZXRpbWU9RmFsc2UpCisuLiBjbGFzczo6IFNlcnZlclByb3h5KHVyaSwgdHJhbnNwb3J0PU5vbmUsIGVuY29kaW5nPU5vbmUsIHZlcmJvc2U9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfbm9uZT1GYWxzZSwgdXNlX2RhdGV0aW1lPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICAgICAgIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogZmxhZyB3YXMgYWRkZWQuCiAKICAgIEEgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgaW5zdGFuY2UgaXMgYW4gb2JqZWN0IHRoYXQgbWFuYWdlcyBjb21tdW5pY2F0aW9uIHdpdGggYQogICAgcmVtb3RlIFhNTC1SUEMgc2VydmVyLiAgVGhlIHJlcXVpcmVkIGZpcnN0IGFyZ3VtZW50IGlzIGEgVVJJIChVbmlmb3JtIFJlc291cmNlCkBAIC0zNCw5ICszOSwxMyBAQAogICAgWE1MOyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgaXMgZm9yIGBgTm9uZWBgIHRvIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gVGhpcyBpcwogICAgYSBjb21tb25seS11c2VkIGV4dGVuc2lvbiB0byB0aGUgWE1MLVJQQyBzcGVjaWZpY2F0aW9uLCBidXQgaXNuJ3Qgc3VwcG9ydGVkIGJ5CiAgICBhbGwgY2xpZW50cyBhbmQgc2VydmVyczsgc2VlIGh0dHA6Ly9vbnRvc3lzLmNvbS94bWwtcnBjL2V4dGVuc2lvbnMucGhwIGZvciBhCi0gICBkZXNjcmlwdGlvbi4gIFRoZSAqdXNlX2RhdGV0aW1lKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMgdG8KLSAgIGJlIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzOyB0aGlzIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCi0gICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIG1heSBiZSBwYXNzZWQgdG8gY2FsbHMuCisgICBkZXNjcmlwdGlvbi4gIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgY2FuIGJlIHVzZWQgdG8gY2F1c2UgZGF0ZS90aW1lIHZhbHVlcworICAgdG8gYmUgcHJlc2VudGVkIGFzIDpjbGFzczpgZGF0ZXRpbWUuZGF0ZXRpbWVgIG9iamVjdHMgYW5kIGJpbmFyeSBkYXRhIHRvIGJlCisgICBwcmVzZW50ZWQgYXMgOmNsYXNzOmBieXRlc2Agb2JqZWN0czsgdGhpcyBmbGFnIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBhbmQgOmNsYXNzOmBieXRlc2Agb2JqZWN0cyBtYXkgYmUgcGFzc2VkIHRvIGNhbGxzLgorCisgICBUaGUgb2Jzb2xldGUgKnVzZV9kYXRldGltZSogZmxhZyBpcyBzaW1pbGFyIHRvICp1c2VfYnVpbHRpbl90eXBlcyogYnV0IGl0CisgICBhcHBsaWVzIG9ubHkgdG8gZGF0ZS90aW1lIHZhbHVlcy4KIAogICAgQm90aCB0aGUgSFRUUCBhbmQgSFRUUFMgdHJhbnNwb3J0cyBzdXBwb3J0IHRoZSBVUkwgc3ludGF4IGV4dGVuc2lvbiBmb3IgSFRUUAogICAgQmFzaWMgQXV0aGVudGljYXRpb246IGBgaHR0cDovL3VzZXI6cGFzc0Bob3N0OnBvcnQvcGF0aGBgLiAgVGhlICBgYHVzZXI6cGFzc2BgCkBAIC03OCwxMiArODcsMTIgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9ubHkgdGhlaXIgKl9fZGljdF9fKiBhdHRyaWJ1dGUgaXMgICAgICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHJhbnNtaXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBkYXRlc2AgICAgICAgICAgICAgICAgICB8IGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoIChwYXNzIGluIGFuICAgICAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgRGF0ZVRpbWVgIGNsYXNzKSBvciB8CisgICB8IDpjb25zdDpgZGF0ZXNgICAgICAgICAgICAgICAgICAgfCBJbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4gIFBhc3MgaW4gYW4gICAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YERhdGVUaW1lYCBjbGFzcyBvciAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBpbnN0YW5jZS4gICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBiaW5hcnkgZGF0YWAgICAgICAgICAgICB8IHBhc3MgaW4gYW4gaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgQmluYXJ5YCAgfAotICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd3JhcHBlciBjbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICB8IDpjb25zdDpgYmluYXJ5IGRhdGFgICAgICAgICAgICAgfCBQYXNzIGluIGFuIGluc3RhbmNlIG9mIHRoZSA6Y2xhc3M6YEJpbmFyeWAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdyYXBwZXIgY2xhc3Mgb3IgYSA6Y2xhc3M6YGJ5dGVzYCBpbnN0YW5jZS4gfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKICAgIFRoaXMgaXMgdGhlIGZ1bGwgc2V0IG9mIGRhdGEgdHlwZXMgc3VwcG9ydGVkIGJ5IFhNTC1SUEMuICBNZXRob2QgY2FsbHMgbWF5IGFsc28KQEAgLTk4LDggKzEwNyw5IEBACiAgICBlbnN1cmUgdGhhdCB0aGUgc3RyaW5nIGlzIGZyZWUgb2YgY2hhcmFjdGVycyB0aGF0IGFyZW4ndCBhbGxvd2VkIGluIFhNTCwgc3VjaCBhcwogICAgdGhlIGNvbnRyb2wgY2hhcmFjdGVycyB3aXRoIEFTQ0lJIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDMxIChleGNlcHQsIG9mIGNvdXJzZSwKICAgIHRhYiwgbmV3bGluZSBhbmQgY2FycmlhZ2UgcmV0dXJuKTsgZmFpbGluZyB0byBkbyB0aGlzIHdpbGwgcmVzdWx0IGluIGFuIFhNTC1SUEMKLSAgIHJlcXVlc3QgdGhhdCBpc24ndCB3ZWxsLWZvcm1lZCBYTUwuICBJZiB5b3UgaGF2ZSB0byBwYXNzIGFyYml0cmFyeSBzdHJpbmdzIHZpYQotICAgWE1MLVJQQywgdXNlIHRoZSA6Y2xhc3M6YEJpbmFyeWAgd3JhcHBlciBjbGFzcyBkZXNjcmliZWQgYmVsb3cuCisgICByZXF1ZXN0IHRoYXQgaXNuJ3Qgd2VsbC1mb3JtZWQgWE1MLiAgSWYgeW91IGhhdmUgdG8gcGFzcyBhcmJpdHJhcnkgYnl0ZXMKKyAgIHZpYSBYTUwtUlBDLCB1c2UgdGhlIDpjbGFzczpgYnl0ZXNgIGNsYXNzIG9yIHRoZSBjbGFzczpgQmluYXJ5YCB3cmFwcGVyIGNsYXNzCisgICBkZXNjcmliZWQgYmVsb3cuCiAKICAgIDpjbGFzczpgU2VydmVyYCBpcyByZXRhaW5lZCBhcyBhbiBhbGlhcyBmb3IgOmNsYXNzOmBTZXJ2ZXJQcm94eWAgZm9yIGJhY2t3YXJkcwogICAgY29tcGF0aWJpbGl0eS4gIE5ldyBjb2RlIHNob3VsZCB1c2UgOmNsYXNzOmBTZXJ2ZXJQcm94eWAuCkBAIC0yNDksNyArMjU5LDcgQEAKIEJpbmFyeSBPYmplY3RzCiAtLS0tLS0tLS0tLS0tLQogCi1UaGlzIGNsYXNzIG1heSBiZSBpbml0aWFsaXplZCBmcm9tIHN0cmluZyBkYXRhICh3aGljaCBtYXkgaW5jbHVkZSBOVUxzKS4gVGhlCitUaGlzIGNsYXNzIG1heSBiZSBpbml0aWFsaXplZCBmcm9tIGJ5dGVzIGRhdGEgKHdoaWNoIG1heSBpbmNsdWRlIE5VTHMpLiBUaGUKIHByaW1hcnkgYWNjZXNzIHRvIHRoZSBjb250ZW50IG9mIGEgOmNsYXNzOmBCaW5hcnlgIG9iamVjdCBpcyBwcm92aWRlZCBieSBhbgogYXR0cmlidXRlOgogCkBAIC0yNTcsMTUgKzI2NywxNSBAQAogLi4gYXR0cmlidXRlOjogQmluYXJ5LmRhdGEKIAogICAgVGhlIGJpbmFyeSBkYXRhIGVuY2Fwc3VsYXRlZCBieSB0aGUgOmNsYXNzOmBCaW5hcnlgIGluc3RhbmNlLiAgVGhlIGRhdGEgaXMKLSAgIHByb3ZpZGVkIGFzIGFuIDgtYml0IHN0cmluZy4KKyAgIHByb3ZpZGVkIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0LgogCiA6Y2xhc3M6YEJpbmFyeWAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgbWV0aG9kcywgc3VwcG9ydGVkIG1haW5seSBmb3IKIGludGVybmFsIHVzZSBieSB0aGUgbWFyc2hhbGxpbmcvdW5tYXJzaGFsbGluZyBjb2RlOgogCiAKLS4uIG1ldGhvZDo6IEJpbmFyeS5kZWNvZGUoc3RyaW5nKQorLi4gbWV0aG9kOjogQmluYXJ5LmRlY29kZShieXRlcykKIAotICAgQWNjZXB0IGEgYmFzZTY0IHN0cmluZyBhbmQgZGVjb2RlIGl0IGFzIHRoZSBpbnN0YW5jZSdzIG5ldyBkYXRhLgorICAgQWNjZXB0IGEgYmFzZTY0IDpjbGFzczpgYnl0ZXNgIG9iamVjdCBhbmQgZGVjb2RlIGl0IGFzIHRoZSBpbnN0YW5jZSdzIG5ldyBkYXRhLgogCiAKIC4uIG1ldGhvZDo6IEJpbmFyeS5lbmNvZGUob3V0KQpAQCAtNDcxLDE0ICs0ODEsMjEgQEAKICAgIGl0IHZpYSBhbiBleHRlbnNpb24sICBwcm92aWRlIGEgdHJ1ZSB2YWx1ZSBmb3IgKmFsbG93X25vbmUqLgogCiAKLS4uIGZ1bmN0aW9uOjogbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBsb2FkcyhkYXRhLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQogCiAgICBDb252ZXJ0IGFuIFhNTC1SUEMgcmVxdWVzdCBvciByZXNwb25zZSBpbnRvIFB5dGhvbiBvYmplY3RzLCBhIGBgKHBhcmFtcywKICAgIG1ldGhvZG5hbWUpYGAuICAqcGFyYW1zKiBpcyBhIHR1cGxlIG9mIGFyZ3VtZW50OyAqbWV0aG9kbmFtZSogaXMgYSBzdHJpbmcsIG9yCiAgICBgYE5vbmVgYCBpZiBubyBtZXRob2QgbmFtZSBpcyBwcmVzZW50IGluIHRoZSBwYWNrZXQuIElmIHRoZSBYTUwtUlBDIHBhY2tldAogICAgcmVwcmVzZW50cyBhIGZhdWx0IGNvbmRpdGlvbiwgdGhpcyBmdW5jdGlvbiB3aWxsIHJhaXNlIGEgOmV4YzpgRmF1bHRgIGV4Y2VwdGlvbi4KLSAgIFRoZSAqdXNlX2RhdGV0aW1lKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMgdG8gYmUgcHJlc2VudGVkIGFzCi0gICA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzOyB0aGlzIGlzIGZhbHNlIGJ5IGRlZmF1bHQuCisgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIGNhbiBiZSB1c2VkIHRvIGNhdXNlIGRhdGUvdGltZSB2YWx1ZXMgdG8gYmUKKyAgIHByZXNlbnRlZCBhcyA6Y2xhc3M6YGRhdGV0aW1lLmRhdGV0aW1lYCBvYmplY3RzIGFuZCBiaW5hcnkgZGF0YSB0byBiZQorICAgcHJlc2VudGVkIGFzIDpjbGFzczpgYnl0ZXNgIG9iamVjdHM7IHRoaXMgZmxhZyBpcyBmYWxzZSBieSBkZWZhdWx0LgorCisgICBUaGUgb2Jzb2xldGUgKnVzZV9kYXRldGltZSogZmxhZyBpcyBzaW1pbGFyIHRvICp1c2VfYnVpbHRpbl90eXBlcyogYnV0IGl0CisgICBhcHBsaWVzIG9ubHkgdG8gZGF0ZS90aW1lIHZhbHVlcy4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAKIC4uIF94bWxycGMtY2xpZW50LWV4YW1wbGU6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMucnN0IGIvRG9jL2xpYnJhcnkveG1scnBjLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTY4MTU3Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2xpYnJhcnkveG1scnBjLnJzdApAQCAtMCwwICsxLDEyIEBACis6bW9kOmB4bWxycGNgIC0tLSBYTUxSUEMgc2VydmVyIGFuZCBjbGllbnQgbW9kdWxlcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWE1MLVJQQyBpcyBhIFJlbW90ZSBQcm9jZWR1cmUgQ2FsbCBtZXRob2QgdGhhdCB1c2VzIFhNTCBwYXNzZWQgdmlhIEhUVFAgYXMgYQordHJhbnNwb3J0LiAgV2l0aCBpdCwgYSBjbGllbnQgY2FuIGNhbGwgbWV0aG9kcyB3aXRoIHBhcmFtZXRlcnMgb24gYSByZW1vdGUKK3NlcnZlciAodGhlIHNlcnZlciBpcyBuYW1lZCBieSBhIFVSSSkgYW5kIGdldCBiYWNrIHN0cnVjdHVyZWQgZGF0YS4KKworYGB4bWxycGNgYCBpcyBhIHBhY2thZ2UgdGhhdCBjb2xsZWN0cyBzZXJ2ZXIgYW5kIGNsaWVudCBtb2R1bGVzIGltcGxlbWVudGluZworWE1MLVJQQy4gIFRoZSBtb2R1bGVzIGFyZToKKworKiA6bW9kOmB4bWxycGMuY2xpZW50YAorKiA6bW9kOmB4bWxycGMuc2VydmVyYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAppbmRleCA2N2ZlYmE2Li42NDkzZmQ0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdApAQCAtMTYsNyArMTYsOSBAQAogOmNsYXNzOmBDR0lYTUxSUENSZXF1ZXN0SGFuZGxlcmAuCiAKIAotLi4gY2xhc3M6OiBTaW1wbGVYTUxSUENTZXJ2ZXIoYWRkciwgcmVxdWVzdEhhbmRsZXI9U2ltcGxlWE1MUlBDUmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpCisuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1TaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlcixcCisgICAgICAgICAgICAgICBsb2dSZXF1ZXN0cz1UcnVlLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLFwKKyAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQogCiAgICBDcmVhdGUgYSBuZXcgc2VydmVyIGluc3RhbmNlLiAgVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciByZWdpc3RyYXRpb24gb2YKICAgIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSBjYWxsZWQgYnkgdGhlIFhNTC1SUEMgcHJvdG9jb2wuICBUaGUgKnJlcXVlc3RIYW5kbGVyKgpAQCAtMjUsMTggKzI3LDMxIEBACiAgICBhcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXJgIGNvbnN0cnVjdG9yLiAgSWYgKmxvZ1JlcXVlc3RzKgogICAgaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCByZXF1ZXN0cyB3aWxsIGJlIGxvZ2dlZDsgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byBmYWxzZQogICAgd2lsbCB0dXJuIG9mZiBsb2dnaW5nLiAgIFRoZSAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkCi0gICBvbiB0byAgOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAorICAgb24gdG8gOm1vZDpgeG1scnBjLmNsaWVudGAgYW5kIGNvbnRyb2wgdGhlIFhNTC1SUEMgcmVzcG9uc2VzIHRoYXQgd2lsbCBiZSByZXR1cm5lZAogICAgZnJvbSB0aGUgc2VydmVyLiBUaGUgKmJpbmRfYW5kX2FjdGl2YXRlKiBwYXJhbWV0ZXIgY29udHJvbHMgd2hldGhlcgogICAgOm1ldGg6YHNlcnZlcl9iaW5kYCBhbmQgOm1ldGg6YHNlcnZlcl9hY3RpdmF0ZWAgYXJlIGNhbGxlZCBpbW1lZGlhdGVseSBieSB0aGUKICAgIGNvbnN0cnVjdG9yOyBpdCBkZWZhdWx0cyB0byB0cnVlLiBTZXR0aW5nIGl0IHRvIGZhbHNlIGFsbG93cyBjb2RlIHRvIG1hbmlwdWxhdGUKICAgIHRoZSAqYWxsb3dfcmV1c2VfYWRkcmVzcyogY2xhc3MgdmFyaWFibGUgYmVmb3JlIHRoZSBhZGRyZXNzIGlzIGJvdW5kLgorICAgVGhlICp1c2VfYnVpbHRpbl90eXBlcyogcGFyYW1ldGVyIGlzIHBhc3NlZCB0byB0aGUKKyAgIDpmdW5jOmB+eG1scnBjLmNsaWVudC5sb2Fkc2AgZnVuY3Rpb24gYW5kIGNvbnRyb2xzIHdoaWNoIHR5cGVzIGFyZSBwcm9jZXNzZWQKKyAgIHdoZW4gZGF0ZS90aW1lcyB2YWx1ZXMgb3IgYmluYXJ5IGRhdGEgYXJlIHJlY2VpdmVkOyBpdCBkZWZhdWx0cyB0byBmYWxzZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgogCiAKLS4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSkKKy4uIGNsYXNzOjogQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSxcCisgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IGluc3RhbmNlIHRvIGhhbmRsZSBYTUwtUlBDIHJlcXVlc3RzIGluIGEgQ0dJIGVudmlyb25tZW50LiAgVGhlCiAgICAqYWxsb3dfbm9uZSogYW5kICplbmNvZGluZyogcGFyYW1ldGVycyBhcmUgcGFzc2VkIG9uIHRvIDptb2Q6YHhtbHJwYy5jbGllbnRgCiAgICBhbmQgY29udHJvbCB0aGUgWE1MLVJQQyByZXNwb25zZXMgdGhhdCB3aWxsIGJlIHJldHVybmVkIGZyb20gdGhlIHNlcnZlci4KKyAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIHBhcmFtZXRlciBpcyBwYXNzZWQgdG8gdGhlCisgICA6ZnVuYzpgfnhtbHJwYy5jbGllbnQubG9hZHNgIGZ1bmN0aW9uIGFuZCBjb250cm9scyB3aGljaCB0eXBlcyBhcmUgcHJvY2Vzc2VkCisgICB3aGVuIGRhdGUvdGltZXMgdmFsdWVzIG9yIGJpbmFyeSBkYXRhIGFyZSByZWNlaXZlZDsgaXQgZGVmYXVsdHMgdG8gZmFsc2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBUaGUgKnVzZV9idWlsdGluX3R5cGVzKiBmbGFnIHdhcyBhZGRlZC4KIAogCiAuLiBjbGFzczo6IFNpbXBsZVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCkKQEAgLTIzMywxMiArMjQ4LDE3IEBACiA6Y2xhc3M6YERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAogCi0uLiBjbGFzczo6IERvY1hNTFJQQ1NlcnZlcihhZGRyLCByZXF1ZXN0SGFuZGxlcj1Eb2NYTUxSUENSZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSkKKy4uIGNsYXNzOjogRG9jWE1MUlBDU2VydmVyKGFkZHIsIHJlcXVlc3RIYW5kbGVyPURvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyLFwKKyAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsXAorICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSwgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKIAogICAgQ3JlYXRlIGEgbmV3IHNlcnZlciBpbnN0YW5jZS4gQWxsIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvcgogICAgOmNsYXNzOmBTaW1wbGVYTUxSUENTZXJ2ZXJgOyAqcmVxdWVzdEhhbmRsZXIqIGRlZmF1bHRzIHRvCiAgICA6Y2xhc3M6YERvY1hNTFJQQ1JlcXVlc3RIYW5kbGVyYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFRoZSAqdXNlX2J1aWx0aW5fdHlwZXMqIGZsYWcgd2FzIGFkZGVkLgorCiAKIC4uIGNsYXNzOjogRG9jQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdCBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CmluZGV4IDI2NGNkNDcuLjlmNmUwNzcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3ppcGZpbGUucnN0CkBAIC04Nyw3ICs4NywzMCBAQAogLi4gZGF0YTo6IFpJUF9ERUZMQVRFRAogCiAgICBUaGUgbnVtZXJpYyBjb25zdGFudCBmb3IgdGhlIHVzdWFsIFpJUCBjb21wcmVzc2lvbiBtZXRob2QuICBUaGlzIHJlcXVpcmVzIHRoZQotICAgOm1vZDpgemxpYmAgbW9kdWxlLiAgTm8gb3RoZXIgY29tcHJlc3Npb24gbWV0aG9kcyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4KKyAgIDptb2Q6YHpsaWJgIG1vZHVsZS4KKworCisuLiBkYXRhOjogWklQX0JaSVAyCisKKyAgIFRoZSBudW1lcmljIGNvbnN0YW50IGZvciB0aGUgQlpJUDIgY29tcHJlc3Npb24gbWV0aG9kLiAgVGhpcyByZXF1aXJlcyB0aGUKKyAgIDptb2Q6YGJ6MmAgbW9kdWxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworLi4gZGF0YTo6IFpJUF9MWk1BCisKKyAgIFRoZSBudW1lcmljIGNvbnN0YW50IGZvciB0aGUgTFpNQSBjb21wcmVzc2lvbiBtZXRob2QuICBUaGlzIHJlcXVpcmVzIHRoZQorICAgOm1vZDpgbHptYWAgbW9kdWxlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworICAgLi4gbm90ZTo6CisKKyAgICAgIFRoZSBaSVAgZmlsZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBoYXMgaW5jbHVkZWQgc3VwcG9ydCBmb3IgYnppcDIgY29tcHJlc3Npb24KKyAgICAgIHNpbmNlIDIwMDEsIGFuZCBmb3IgTFpNQSBjb21wcmVzc2lvbiBzaW5jZSAyMDA2LiBIb3dldmVyLCBzb21lIHRvb2xzCisgICAgICAoaW5jbHVkaW5nIG9sZGVyIFB5dGhvbiByZWxlYXNlcykgZG8gbm90IHN1cHBvcnQgdGhlc2UgY29tcHJlc3Npb24KKyAgICAgIG1ldGhvZHMsIGFuZCBtYXkgZWl0aGVyIHJlZnVzZSB0byBwcm9jZXNzIHRoZSBaSVAgZmlsZSBhbHRvZ2V0aGVyLAorICAgICAgb3IgZmFpbCB0byBleHRyYWN0IGluZGl2aWR1YWwgZmlsZXMuCiAKIAogLi4gc2VlYWxzbzo6CkBAIC0xMTgsOSArMTQxLDExIEBACiAgICBhZGRpbmcgYSBaSVAgYXJjaGl2ZSB0byBhbm90aGVyIGZpbGUgKHN1Y2ggYXMgOmZpbGU6YHB5dGhvbi5leGVgKS4gIElmCiAgICAqbW9kZSogaXMgYGBhYGAgYW5kIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IGF0IGFsbCwgaXQgaXMgY3JlYXRlZC4KICAgICpjb21wcmVzc2lvbiogaXMgdGhlIFpJUCBjb21wcmVzc2lvbiBtZXRob2QgdG8gdXNlIHdoZW4gd3JpdGluZyB0aGUgYXJjaGl2ZSwKLSAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCBvciA6Y29uc3Q6YFpJUF9ERUZMQVRFRGA7IHVucmVjb2duaXplZAotICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgUnVudGltZUVycm9yYCB0byBiZSByYWlzZWQuICBJZiA6Y29uc3Q6YFpJUF9ERUZMQVRFRGAKLSAgIGlzIHNwZWNpZmllZCBidXQgdGhlIDptb2Q6YHpsaWJgIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlLCA6ZXhjOmBSdW50aW1lRXJyb3JgCisgICBhbmQgc2hvdWxkIGJlIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKKyAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYDsgdW5yZWNvZ25pemVkCisgICB2YWx1ZXMgd2lsbCBjYXVzZSA6ZXhjOmBSdW50aW1lRXJyb3JgIHRvIGJlIHJhaXNlZC4gIElmIDpjb25zdDpgWklQX0RFRkxBVEVEYCwKKyAgIDpjb25zdDpgWklQX0JaSVAyYCBvciA6Y29uc3Q6YFpJUF9MWk1BYCBpcyBzcGVjaWZpZWQgYnV0IHRoZSBjb3JyZXNwb25kZWQgbW9kdWxlCisgICAoOm1vZDpgemxpYmAsIDptb2Q6YGJ6MmAgb3IgOm1vZDpgbHptYWApIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKICAgIGlzIGFsc28gcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCiAgICBgYFRydWVgYCB6aXBmaWxlIHdpbGwgY3JlYXRlIFpJUCBmaWxlcyB0aGF0IHVzZSB0aGUgWklQNjQgZXh0ZW5zaW9ucyB3aGVuCiAgICB0aGUgemlwZmlsZSBpcyBsYXJnZXIgdGhhbiAyIEdCLiBJZiBpdCBpcyAgZmFsc2UgKHRoZSBkZWZhdWx0KSA6bW9kOmB6aXBmaWxlYApAQCAtMTQzLDYgKzE2OCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKICAgICAgIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHVzZSA6Y2xhc3M6YFppcEZpbGVgIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgOm1vZDpgYnppcDIgPGJ6Mj5gIGFuZCA6bW9kOmBsem1hYCBjb21wcmVzc2lvbi4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLmNsb3NlKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdCBiL0RvYy9saWJyYXJ5L3ppcGltcG9ydC5yc3QKaW5kZXggNGYxNzA5Mi4uYjQ3YzM1YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvemlwaW1wb3J0LnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBpbXBvcnQucnN0CkBAIC04NSw5ICs4NSwxMiBAQAogCiAgICAuLiBtZXRob2Q6OiBnZXRfZGF0YShwYXRobmFtZSkKIAotICAgICAgUmV0dXJuIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCAqcGF0aG5hbWUqLiBSYWlzZSA6ZXhjOmBJT0Vycm9yYCBpZiB0aGUKKyAgICAgIFJldHVybiB0aGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggKnBhdGhuYW1lKi4gUmFpc2UgOmV4YzpgT1NFcnJvcmAgaWYgdGhlCiAgICAgICBmaWxlIHdhc24ndCBmb3VuZC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICAgIDpleGM6YElPRXJyb3JgIHVzZWQgdG8gYmUgcmFpc2VkIGluc3RlYWQgb2YgOmV4YzpgT1NFcnJvcmAuCisKIAogICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96bGliLnJzdCBiL0RvYy9saWJyYXJ5L3psaWIucnN0CmluZGV4IDg5N2Q5MTkuLjQyNTM1YTAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3psaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3psaWIucnN0CkBAIC01OCwxMiArNTgsMzcgQEAKICAgIGV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzLgogCiAKLS4uIGZ1bmN0aW9uOjogY29tcHJlc3NvYmooW2xldmVsXSkKKy4uIGZ1bmN0aW9uOjogY29tcHJlc3NvYmoobGV2ZWw9LTEsIG1ldGhvZD1ERUZMQVRFRCwgd2JpdHM9MTUsIG1lbWxldmVsPTgsIHN0cmF0ZWd5PVpfREVGQVVMVF9TVFJBVEVHWVssIHpkaWN0XSkKIAogICAgUmV0dXJucyBhIGNvbXByZXNzaW9uIG9iamVjdCwgdG8gYmUgdXNlZCBmb3IgY29tcHJlc3NpbmcgZGF0YSBzdHJlYW1zIHRoYXQgd29uJ3QKLSAgIGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLiAgKmxldmVsKiBpcyBhbiBpbnRlZ2VyIGZyb20gYGAxYGAgdG8gYGA5YGAgY29udHJvbGxpbmcKLSAgIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsgYGAxYGAgaXMgZmFzdGVzdCBhbmQgcHJvZHVjZXMgdGhlIGxlYXN0IGNvbXByZXNzaW9uLAotICAgYGA5YGAgaXMgc2xvd2VzdCBhbmQgcHJvZHVjZXMgdGhlIG1vc3QuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgYDZgYC4KKyAgIGZpdCBpbnRvIG1lbW9yeSBhdCBvbmNlLgorCisgICAqbGV2ZWwqIGlzIHRoZSBjb21wcmVzc2lvbiBsZXZlbCAtLSBhbiBpbnRlZ2VyIGZyb20gYGAxYGAgdG8gYGA5YGAuIEEgdmFsdWUKKyAgIG9mIGBgMWBgIGlzIGZhc3Rlc3QgYW5kIHByb2R1Y2VzIHRoZSBsZWFzdCBjb21wcmVzc2lvbiwgd2hpbGUgYSB2YWx1ZSBvZgorICAgYGA5YGAgaXMgc2xvd2VzdCBhbmQgcHJvZHVjZXMgdGhlIG1vc3QuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIGBgNmBgLgorCisgICAqbWV0aG9kKiBpcyB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBDdXJyZW50bHksIHRoZSBvbmx5IHN1cHBvcnRlZCB2YWx1ZSBpcworICAgYGBERUZMQVRFRGBgLgorCisgICAqd2JpdHMqIGlzIHRoZSBiYXNlIHR3byBsb2dhcml0aG0gb2YgdGhlIHNpemUgb2YgdGhlIHdpbmRvdyBidWZmZXIuIFRoaXMKKyAgIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGZyb20gYGA4YGAgdG8gYGAxNWBgLiBIaWdoZXIgdmFsdWVzIGdpdmUgYmV0dGVyCisgICBjb21wcmVzc2lvbiwgYnV0IHVzZSBtb3JlIG1lbW9yeS4KKworICAgKm1lbWxldmVsKiBjb250cm9scyB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGZvciBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4KKyAgIFZhbGlkIHZhbHVlcyByYW5nZSBmcm9tIGBgMWBgIHRvIGBgOWBgLiBIaWdoZXIgdmFsdWVzIHVzaW5nIG1vcmUgbWVtb3J5LAorICAgYnV0IGFyZSBmYXN0ZXIgYW5kIHByb2R1Y2Ugc21hbGxlciBvdXRwdXQuCisKKyAgICpzdHJhdGVneSogaXMgdXNlZCB0byB0dW5lIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIFBvc3NpYmxlIHZhbHVlcyBhcmUKKyAgIGBgWl9ERUZBVUxUX1NUUkFURUdZYGAsIGBgWl9GSUxURVJFRGBgLCBhbmQgYGBaX0hVRkZNQU5fT05MWWBgLgorCisgICAqemRpY3QqIGlzIGEgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5LiBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgYnl0ZXMKKyAgIChzdWNoIGFzIGEgOmNsYXNzOmBieXRlc2Agb2JqZWN0KSBjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBleHBlY3RlZAorICAgdG8gb2NjdXIgZnJlcXVlbnRseSBpbiB0aGUgZGF0YSB0aGF0IGlzIHRvIGJlIGNvbXByZXNzZWQuIFRob3NlIHN1YnNlcXVlbmNlcworICAgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gYmUgbW9zdCBjb21tb24gc2hvdWxkIGNvbWUgYXQgdGhlIGVuZCBvZiB0aGUgZGljdGlvbmFyeS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIEFkZGVkIHRoZSAqbWV0aG9kKiwgKndiaXRzKiwgKm1lbWxldmVsKiwgKnN0cmF0ZWd5KiBhbmQgKnpkaWN0KgorICAgICAgcGFyYW1ldGVycy4KIAogCiAuLiBmdW5jdGlvbjo6IGNyYzMyKGRhdGFbLCB2YWx1ZV0pCkBAIC04MiwxMiArMTA3LDEzIEBACiAKICAgIEFsd2F5cyByZXR1cm5zIGFuIHVuc2lnbmVkIDMyLWJpdCBpbnRlZ2VyLgogCi0uLiBub3RlOjoKLSAgIFRvIGdlbmVyYXRlIHRoZSBzYW1lIG51bWVyaWMgdmFsdWUgYWNyb3NzIGFsbCBQeXRob24gdmVyc2lvbnMgYW5kCi0gICBwbGF0Zm9ybXMgdXNlIGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZi4gIElmIHlvdSBhcmUgb25seSB1c2luZwotICAgdGhlIGNoZWNrc3VtIGluIHBhY2tlZCBiaW5hcnkgZm9ybWF0IHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhcyB0aGUKLSAgIHJldHVybiB2YWx1ZSBpcyB0aGUgY29ycmVjdCAzMmJpdCBiaW5hcnkgcmVwcmVzZW50YXRpb24KLSAgIHJlZ2FyZGxlc3Mgb2Ygc2lnbi4KKyAgIC4uIG5vdGU6OgorCisgICAgICBUbyBnZW5lcmF0ZSB0aGUgc2FtZSBudW1lcmljIHZhbHVlIGFjcm9zcyBhbGwgUHl0aG9uIHZlcnNpb25zIGFuZAorICAgICAgcGxhdGZvcm1zLCB1c2UgYGBjcmMzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4gIElmIHlvdSBhcmUgb25seSB1c2luZworICAgICAgdGhlIGNoZWNrc3VtIGluIHBhY2tlZCBiaW5hcnkgZm9ybWF0IHRoaXMgaXMgbm90IG5lY2Vzc2FyeSBhcyB0aGUKKyAgICAgIHJldHVybiB2YWx1ZSBpcyB0aGUgY29ycmVjdCAzMi1iaXQgYmluYXJ5IHJlcHJlc2VudGF0aW9uCisgICAgICByZWdhcmRsZXNzIG9mIHNpZ24uCiAKIAogLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGFbLCB3Yml0c1ssIGJ1ZnNpemVdXSkKQEAgLTExNCwxMSArMTQwLDI2IEBACiAgICB0byA6YzpmdW5jOmBtYWxsb2NgLiAgVGhlIGRlZmF1bHQgc2l6ZSBpcyAxNjM4NC4KIAogCi0uLiBmdW5jdGlvbjo6IGRlY29tcHJlc3NvYmooW3diaXRzXSkKKy4uIGZ1bmN0aW9uOjogZGVjb21wcmVzc29iaih3Yml0cz0xNVssIHpkaWN0XSkKIAogICAgUmV0dXJucyBhIGRlY29tcHJlc3Npb24gb2JqZWN0LCB0byBiZSB1c2VkIGZvciBkZWNvbXByZXNzaW5nIGRhdGEgc3RyZWFtcyB0aGF0Ci0gICB3b24ndCBmaXQgaW50byBtZW1vcnkgYXQgb25jZS4gIFRoZSAqd2JpdHMqIHBhcmFtZXRlciBjb250cm9scyB0aGUgc2l6ZSBvZiB0aGUKLSAgIHdpbmRvdyBidWZmZXIuCisgICB3b24ndCBmaXQgaW50byBtZW1vcnkgYXQgb25jZS4KKworICAgVGhlICp3Yml0cyogcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBzaXplIG9mIHRoZSB3aW5kb3cgYnVmZmVyLgorCisgICBUaGUgKnpkaWN0KiBwYXJhbWV0ZXIgc3BlY2lmaWVzIGEgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5LiBJZgorICAgcHJvdmlkZWQsIHRoaXMgbXVzdCBiZSB0aGUgc2FtZSBkaWN0aW9uYXJ5IGFzIHdhcyB1c2VkIGJ5IHRoZSBjb21wcmVzc29yIHRoYXQKKyAgIHByb2R1Y2VkIHRoZSBkYXRhIHRoYXQgaXMgdG8gYmUgZGVjb21wcmVzc2VkLgorCisgICAuLiBub3RlOjoKKworICAgICAgSWYgKnpkaWN0KiBpcyBhIG11dGFibGUgb2JqZWN0IChzdWNoIGFzIGEgOmNsYXNzOmBieXRlYXJyYXlgKSwgeW91IG11c3Qgbm90CisgICAgICBtb2RpZnkgaXRzIGNvbnRlbnRzIGJldHdlZW4gdGhlIGNhbGwgdG8gOmZ1bmM6YGRlY29tcHJlc3NvYmpgIGFuZCB0aGUgZmlyc3QKKyAgICAgIGNhbGwgdG8gdGhlIGRlY29tcHJlc3NvcidzIGBgZGVjb21wcmVzcygpYGAgbWV0aG9kLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgdGhlICp6ZGljdCogcGFyYW1ldGVyLgorCiAKIENvbXByZXNzaW9uIG9iamVjdHMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CiAKQEAgLTE1MCw3ICsxOTEsNyBAQAogICAgY29tcHJlc3MgYSBzZXQgb2YgZGF0YSB0aGF0IHNoYXJlIGEgY29tbW9uIGluaXRpYWwgcHJlZml4LgogCiAKLURlY29tcHJlc3Npb24gb2JqZWN0cyBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgbWV0aG9kcywgYW5kIHR3byBhdHRyaWJ1dGVzOgorRGVjb21wcmVzc2lvbiBvYmplY3RzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCiAKIC4uIGF0dHJpYnV0ZTo6IERlY29tcHJlc3MudW51c2VkX2RhdGEKQEAgLTE2MCwxMyArMjAxLDYgQEAKICAgIGF2YWlsYWJsZS4gIElmIHRoZSB3aG9sZSBieXRlc3RyaW5nIHR1cm5lZCBvdXQgdG8gY29udGFpbiBjb21wcmVzc2VkIGRhdGEsIHRoaXMgaXMKICAgIGBgYiIiYGAsIGFuIGVtcHR5IGJ5dGVzIG9iamVjdC4KIAotICAgVGhlIG9ubHkgd2F5IHRvIGRldGVybWluZSB3aGVyZSBhIGJ5dGVzdHJpbmcgb2YgY29tcHJlc3NlZCBkYXRhIGVuZHMgaXMgYnkgYWN0dWFsbHkKLSAgIGRlY29tcHJlc3NpbmcgaXQuICBUaGlzIG1lYW5zIHRoYXQgd2hlbiBjb21wcmVzc2VkIGRhdGEgaXMgY29udGFpbmVkIHBhcnQgb2YgYQotICAgbGFyZ2VyIGZpbGUsIHlvdSBjYW4gb25seSBmaW5kIHRoZSBlbmQgb2YgaXQgYnkgcmVhZGluZyBkYXRhIGFuZCBmZWVkaW5nIGl0Ci0gICBmb2xsb3dlZCBieSBzb21lIG5vbi1lbXB0eSBieXRlc3RyaW5nIGludG8gYSBkZWNvbXByZXNzaW9uIG9iamVjdCdzCi0gICA6bWV0aDpgZGVjb21wcmVzc2AgbWV0aG9kIHVudGlsIHRoZSA6YXR0cjpgdW51c2VkX2RhdGFgIGF0dHJpYnV0ZSBpcyBubyBsb25nZXIKLSAgIGVtcHR5LgotCiAKIC4uIGF0dHJpYnV0ZTo6IERlY29tcHJlc3MudW5jb25zdW1lZF90YWlsCiAKQEAgLTE3Nyw2ICsyMTEsMTcgQEAKICAgIDptZXRoOmBkZWNvbXByZXNzYCBtZXRob2QgY2FsbCBpbiBvcmRlciB0byBnZXQgY29ycmVjdCBvdXRwdXQuCiAKIAorLi4gYXR0cmlidXRlOjogRGVjb21wcmVzcy5lb2YKKworICAgQSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZW5kIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgc3RyZWFtIGhhcyBiZWVuCisgICByZWFjaGVkLgorCisgICBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYSBwcm9wZXJseS1mb3JtZWQgY29tcHJlc3NlZAorICAgc3RyZWFtLCBhbmQgYW4gaW5jb21wbGV0ZSBvciB0cnVuY2F0ZWQgb25lLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBtZXRob2Q6OiBEZWNvbXByZXNzLmRlY29tcHJlc3MoZGF0YVssIG1heF9sZW5ndGhdKQogCiAgICBEZWNvbXByZXNzICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVuY29tcHJlc3NlZCBkYXRhCkBAIC0yMTEsNiArMjU2LDI0IEBACiAgICBzZWVrcyBpbnRvIHRoZSBzdHJlYW0gYXQgYSBmdXR1cmUgcG9pbnQuCiAKIAorSW5mb3JtYXRpb24gYWJvdXQgdGhlIHZlcnNpb24gb2YgdGhlIHpsaWIgbGlicmFyeSBpbiB1c2UgaXMgYXZhaWxhYmxlIHRocm91Z2gKK3RoZSBmb2xsb3dpbmcgY29uc3RhbnRzOgorCisKKy4uIGRhdGE6OiBaTElCX1ZFUlNJT04KKworICAgVGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSB6bGliIGxpYnJhcnkgdGhhdCB3YXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIG1vZHVsZS4KKyAgIFRoaXMgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSB6bGliIGxpYnJhcnkgYWN0dWFsbHkgdXNlZCBhdCBydW50aW1lLCB3aGljaAorICAgaXMgYXZhaWxhYmxlIGFzIDpjb25zdDpgWkxJQl9SVU5USU1FX1ZFUlNJT05gLgorCisKKy4uIGRhdGE6OiBaTElCX1JVTlRJTUVfVkVSU0lPTgorCisgICBUaGUgdmVyc2lvbiBzdHJpbmcgb2YgdGhlIHpsaWIgbGlicmFyeSBhY3R1YWxseSBsb2FkZWQgYnkgdGhlIGludGVycHJldGVyLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKworCiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YGd6aXBgCmRpZmYgLS1naXQgYS9Eb2MvbGljZW5zZS5yc3QgYi9Eb2MvbGljZW5zZS5yc3QKaW5kZXggYTQ0ZmEwNC4uNjMyNmNlNCAxMDA2NDQKLS0tIGEvRG9jL2xpY2Vuc2UucnN0CisrKyBiL0RvYy9saWNlbnNlLnJzdApAQCAtMTIwLDYgKzEyMCw4IEBACiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwogfCAzLjIuMyAgICAgICAgICB8IDMuMi4yICAgICAgICB8IDIwMTIgICAgICAgfCBQU0YgICAgICAgIHwgeWVzICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCit8IDMuMy4wICAgICAgICAgIHwgMy4yICAgICAgICAgIHwgMjAxMiAgICAgICB8IFBTRiAgICAgICAgfCB5ZXMgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9tYWtlLmJhdCBiL0RvYy9tYWtlLmJhdAppbmRleCA0ZWEyZDUxLi5hMjIyMGMwIDEwMDY0NAotLS0gYS9Eb2MvbWFrZS5iYXQKKysrIGIvRG9jL21ha2UuYmF0CkBAIC0zNyw3ICszNyw3IEBACiBzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL1NwaGlueC0xLjAuNy9zcGhpbnggdG9vbHMvc3BoaW54CiBzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL2RvY3V0aWxzLTAuNi9kb2N1dGlscyB0b29scy9kb2N1dGlscwogc3ZuIGNvICVTVk5ST09UJS9leHRlcm5hbC9KaW5qYS0yLjMuMS9qaW5qYTIgdG9vbHMvamluamEyCi1zdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL1B5Z21lbnRzLTEuMy4xL3B5Z21lbnRzIHRvb2xzL3B5Z21lbnRzCitzdm4gY28gJVNWTlJPT1QlL2V4dGVybmFsL1B5Z21lbnRzLTEuNWRldi0yMDEyMDkzMC9weWdtZW50cyB0b29scy9weWdtZW50cwogZ290byBlbmQKIAogOnVwZGF0ZQpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IDMyMmU4YzguLmQwOTMzODMgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTM1LDEyICszNSwxOSBAQAogRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0J3MgKmlkZW50aXR5KiBuZXZlcgogY2hhbmdlcyBvbmNlIGl0IGhhcyBiZWVuIGNyZWF0ZWQ7IHlvdSBtYXkgdGhpbmsgb2YgaXQgYXMgdGhlIG9iamVjdCdzIGFkZHJlc3MgaW4KIG1lbW9yeS4gIFRoZSAnOmtleXdvcmQ6YGlzYCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlIGlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUKLTpmdW5jOmBpZGAgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyIHJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseQotaW1wbGVtZW50ZWQgYXMgaXRzIGFkZHJlc3MpLiBBbiBvYmplY3QncyA6ZGZuOmB0eXBlYCBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWyNdXworOmZ1bmM6YGlkYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXIgcmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS4KKworLi4gaW1wbC1kZXRhaWw6OgorCisgICBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZSBtZW1vcnkgYWRkcmVzcyB3aGVyZSBgYHhgYCBpcyBzdG9yZWQuCisKIEFuIG9iamVjdCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHMgKGUuZy4sICJkb2VzCiBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3Igb2JqZWN0cyBvZiB0aGF0CiB0eXBlLiAgVGhlIDpmdW5jOmB0eXBlYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdCdzIHR5cGUgKHdoaWNoIGlzIGFuIG9iamVjdAotaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW4KK2l0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0J3MgOmRmbjpgdHlwZWAgaXMgYWxzbyB1bmNoYW5nZWFibGUuCitbI11fCisKK1RoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW4KIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlIG9uY2UgdGhleQogYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhbiBpbW11dGFibGUgY29udGFpbmVyIG9iamVjdAogdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUKQEAgLTI3NiwxNiArMjgzLDE2IEBACiAgICAgICAgICAgICBzaW5nbGU6IGludGVnZXIKICAgICAgICAgICAgIHNpbmdsZTogVW5pY29kZQogCi0gICAgICAgICBUaGUgaXRlbXMgb2YgYSBzdHJpbmcgb2JqZWN0IGFyZSBVbmljb2RlIGNvZGUgdW5pdHMuICBBIFVuaWNvZGUgY29kZQotICAgICAgICAgdW5pdCBpcyByZXByZXNlbnRlZCBieSBhIHN0cmluZyBvYmplY3Qgb2Ygb25lIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlcgotICAgICAgICAgYSAxNi1iaXQgb3IgMzItYml0IHZhbHVlIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0KLSAgICAgICAgIHZhbHVlIGZvciB0aGUgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uCi0gICAgICAgICBob3cgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXkgYmUKLSAgICAgICAgIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d28gc2VwYXJhdGUKLSAgICAgICAgIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgY2hyYCBhbmQgOmZ1bmM6YG9yZGAgY29udmVydAotICAgICAgICAgYmV0d2VlbiBjb2RlIHVuaXRzIGFuZCBub25uZWdhdGl2ZSBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUKLSAgICAgICAgIG9yZGluYWxzIGFzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvCi0gICAgICAgICBvdGhlciBlbmNvZGluZ3MgYXJlIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgOm1ldGg6YGVuY29kZWAuCisgICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlIGNvZGVwb2ludHMuCisgICAgICAgICBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgIGNhbiBiZSByZXByZXNlbnRlZAorICAgICAgICAgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc24ndCBoYXZlIGEgOmM6dHlwZTpgY2hyYCB0eXBlLCBhbmQKKyAgICAgICAgIGV2ZXJ5IGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nIGlzIHJlcHJlc2VudGVkIGFzIGEgc3RyaW5nIG9iamVjdAorICAgICAgICAgd2l0aCBsZW5ndGggYGAxYGAuICBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG9yZGAgY29udmVydHMgYQorICAgICAgICAgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnQgKGFzIGFuIGludGVnZXIpOyA6ZnVuYzpgY2hyYCBjb252ZXJ0cworICAgICAgICAgYW4gaW50ZWdlciBpbiByYW5nZSBgYDAgLSAxMEZGRkZgYCB0byB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXIuCisgICAgICAgICA6bWV0aDpgc3RyLmVuY29kZWAgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIDpjbGFzczpgc3RyYCB0bworICAgICAgICAgOmNsYXNzOmBieXRlc2AgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLCBhbmQgOm1ldGg6YGJ5dGVzLmRlY29kZWAgY2FuCisgICAgICAgICBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLgogCiAgICAgICBUdXBsZXMKICAgICAgICAgIC4uIGluZGV4OjoKQEAgLTQ0OCw2ICs0NTUsMTEgQEAKICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCiAgICAgICB8IDphdHRyOmBfX25hbWVfX2AgICAgICAgIHwgVGhlIGZ1bmN0aW9uJ3MgbmFtZSAgICAgICAgICAgfCBXcml0YWJsZSAgfAogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKKyAgICAgIHwgOmF0dHI6YF9fcXVhbG5hbWVfX2AgICAgfCBUaGUgZnVuY3Rpb24ncyAgICAgICAgICAgICAgICB8IFdyaXRhYmxlICB8CisgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgOnRlcm06YHF1YWxpZmllZCBuYW1lYCAgICAgICAgfCAgICAgICAgICAgfAorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwKKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMgICAgICAgICB8ICAgICAgICAgICB8CisgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKwogICAgICAgfCA6YXR0cjpgX19tb2R1bGVfX2AgICAgICB8IFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlICAgIHwgV3JpdGFibGUgIHwKICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICB8ICAgICAgICAgICB8CiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuICAgICAgfCAgICAgICAgICAgfApAQCAtNjM5LDE3ICs2NTEsMjAgQEAKICAgICAgIHN0YXRlbWVudDogaW1wb3J0CiAgICAgICBvYmplY3Q6IG1vZHVsZQogCi0gICBNb2R1bGVzIGFyZSBpbXBvcnRlZCBieSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IChzZWUgc2VjdGlvbgotICAgOnJlZjpgaW1wb3J0YCkuIEEgbW9kdWxlIG9iamVjdCBoYXMgYQotICAgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZAotICAgYnkgdGhlIF9fZ2xvYmFsc19fIGF0dHJpYnV0ZSBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlKS4gIEF0dHJpYnV0ZQotICAgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBtLnhgYCBpcwotICAgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZQotICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc24ndCBuZWVkZWQgb25jZSB0aGUKLSAgIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLgorICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlIGNyZWF0ZWQgYnkKKyAgIHRoZSA6cmVmOmBpbXBvcnQgc3lzdGVtIDxpbXBvcnRzeXN0ZW0+YCBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUKKyAgIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCAoc2VlIDprZXl3b3JkOmBpbXBvcnRgKSwgb3IgYnkgY2FsbGluZworICAgZnVuY3Rpb25zIHN1Y2ggYXMgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCBhbmQgYnVpbHQtaW4KKyAgIDpmdW5jOmBfX2ltcG9ydF9fYC4gIEEgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYQorICAgZGljdGlvbmFyeSBvYmplY3QgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgCisgICBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUKKyAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0bworICAgYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQKKyAgIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzCisgICBkb25lKS4KIAotICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54ID0KLSAgIDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgorICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksIGUuZy4sCisgICBgYG0ueCA9IDFgYCBpcyBlcXVpdmFsZW50IHRvIGBgbS5fX2RpY3RfX1sieCJdID0gMWBgLgogCiAgICAuLiBpbmRleDo6IHNpbmdsZTogX19kaWN0X18gKG1vZHVsZSBhdHRyaWJ1dGUpCiAKQEAgLTY3MSwxMSArNjg2LDEyIEBACiAKICAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiA6YXR0cjpgX19uYW1lX19gIGlzIHRoZSBtb2R1bGUncyBuYW1lOwogICAgOmF0dHI6YF9fZG9jX19gIGlzIHRoZSBtb2R1bGUncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgYGBOb25lYGAgaWYKLSAgIHVuYXZhaWxhYmxlOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZSBtb2R1bGUKLSAgIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gIGF0dHJpYnV0ZSBpcyBub3QKLSAgIHByZXNlbnQgZm9yIEMgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yCi0gICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUKLSAgIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLgorICAgdW5hdmFpbGFibGU7IDphdHRyOmBfX2ZpbGVfX2AgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggdGhlCisgICBtb2R1bGUgd2FzIGxvYWRlZCwgaWYgaXQgd2FzIGxvYWRlZCBmcm9tIGEgZmlsZS4gVGhlIDphdHRyOmBfX2ZpbGVfX2AKKyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzIEMgbW9kdWxlcworICAgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWQgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcworICAgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQKKyAgIGxpYnJhcnkgZmlsZS4KIAogQ3VzdG9tIGNsYXNzZXMKICAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgKHNlZSBzZWN0aW9uCkBAIC0xMjUwLDEwICsxMjY2LDEwIEBACiAgICBpbW11dGFibGUgKGlmIHRoZSBvYmplY3QncyBoYXNoIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2gKICAgIGJ1Y2tldCkuCiAKLQogICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSA6bWV0aDpgX19lcV9fYCBhbmQgOm1ldGg6YF9faGFzaF9fYCBtZXRob2RzCiAgICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGggdGhlbXNlbHZlcykKLSAgIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLgorICAgYW5kIGBgeC5fX2hhc2hfXygpYGAgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoIHRoYXQgYGB4ID09IHlgYAorICAgaW1wbGllcyBib3RoIHRoYXQgYGB4IGlzIHlgYCBhbmQgYGBoYXNoKHgpID09IGhhc2goeSlgYC4KIAogICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyA6bWV0aDpgX19lcV9fYCBhbmQgZG9lcyBub3QgZGVmaW5lIDptZXRoOmBfX2hhc2hfX2AKICAgIHdpbGwgaGF2ZSBpdHMgOm1ldGg6YF9faGFzaF9fYCBpbXBsaWNpdGx5IHNldCB0byBgYE5vbmVgYC4gIFdoZW4gdGhlCkBAIC0xMjcyLDcgKzEyODgsMjcgQEAKICAgIGEgOmV4YzpgVHlwZUVycm9yYCB3b3VsZCBiZSBpbmNvcnJlY3RseSBpZGVudGlmaWVkIGFzIGhhc2hhYmxlIGJ5CiAgICBhbiBgYGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSlgYCBjYWxsLgogCi0gICBTZWUgYWxzbyB0aGUgOm9wdGlvbjpgLVJgIGNvbW1hbmQtbGluZSBvcHRpb24uCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBCeSBkZWZhdWx0LCB0aGUgOm1ldGg6YF9faGFzaF9fYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUKKyAgICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuICBBbHRob3VnaCB0aGV5CisgICAgICByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgUHl0aG9uIHByb2Nlc3MsIHRoZXkgYXJlIG5vdAorICAgICAgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZiBQeXRob24uCisKKyAgICAgIFRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtb2Ytc2VydmljZSBjYXVzZWQKKyAgICAgIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGUgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhCisgICAgICBkaWN0IGluc2VydGlvbiwgTyhuXjIpIGNvbXBsZXhpdHkuICBTZWUKKyAgICAgIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3IgZGV0YWlscy4KKworICAgICAgQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uIG9yZGVyIG9mIGRpY3RzLCBzZXRzIGFuZAorICAgICAgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlcyBhYm91dCB0aGlzIG9yZGVyaW5nCisgICAgICAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBidWlsZHMpLgorCisgICAgICBTZWUgYWxzbyA6ZW52dmFyOmBQWVRIT05IQVNIU0VFRGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogCiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2Jvb2xfXyhzZWxmKQpAQCAtMTM1Myw3ICsxMzg5LDggQEAKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZGlyX18oc2VsZikKIAotICAgQ2FsbGVkIHdoZW4gOmZ1bmM6YGRpcmAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuICBBIGxpc3QgbXVzdCBiZSByZXR1cm5lZC4KKyAgIENhbGxlZCB3aGVuIDpmdW5jOmBkaXJgIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmUKKyAgIHJldHVybmVkLiA6ZnVuYzpgZGlyYCBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZCBzb3J0cyBpdC4KIAogCiAuLiBfZGVzY3JpcHRvcnM6CkBAIC0xNTI0LDUzICsxNTYxLDExNSBAQAogQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIDpmdW5jOmB0eXBlYC4gQSBjbGFzcyBkZWZpbml0aW9uIGlzCi1yZWFkIGludG8gYSBzZXBhcmF0ZSBuYW1lc3BhY2UgYW5kIHRoZSB2YWx1ZSBvZiBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoZQotcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgZGljdClgYC4KK0J5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIDpmdW5jOmB0eXBlYC4gVGhlIGNsYXNzIGJvZHkgaXMKK2V4ZWN1dGVkIGluIGEgbmV3IG5hbWVzcGFjZSBhbmQgdGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgbG9jYWxseSB0byB0aGUKK3Jlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSlgYC4KIAotV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyByZWFkLCBpZiBhIGNhbGxhYmxlIGBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudAotaXMgcGFzc2VkIGFmdGVyIHRoZSBiYXNlcyBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiwgdGhlIGNhbGxhYmxlIGdpdmVuIHdpbGwgYmUKLWNhbGxlZCBpbnN0ZWFkIG9mIDpmdW5jOmB0eXBlYC4gIElmIG90aGVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkKLXdpbGwgYWxzbyBiZSBwYXNzZWQgdG8gdGhlIG1ldGFjbGFzcy4gIFRoaXMgYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlCi13cml0dGVuIHdoaWNoIG1vbml0b3Igb3IgYWx0ZXIgdGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3M6CitUaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXNlZCBieSBwYXNzaW5nIHRoZSBgYG1ldGFjbGFzc2BgCitrZXl3b3JkIGFyZ3VtZW50IGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGxpbmUsIG9yIGJ5IGluaGVyaXRpbmcgZnJvbSBhbgorZXhpc3RpbmcgY2xhc3MgdGhhdCBpbmNsdWRlZCBzdWNoIGFuIGFyZ3VtZW50LiBJbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsCitib3RoIGBgTXlDbGFzc2BgIGFuZCBgYE15U3ViY2xhc3NgYCBhcmUgaW5zdGFuY2VzIG9mIGBgTWV0YWBgOjoKIAotKiBNb2RpZnlpbmcgdGhlIGNsYXNzIGRpY3Rpb25hcnkgcHJpb3IgdG8gdGhlIGNsYXNzIGJlaW5nIGNyZWF0ZWQuCisgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgIHBhc3MKIAotKiBSZXR1cm5pbmcgYW4gaW5zdGFuY2Ugb2YgYW5vdGhlciBjbGFzcyAtLSBlc3NlbnRpYWxseSBwZXJmb3JtaW5nIHRoZSByb2xlIG9mIGEKLSAgZmFjdG9yeSBmdW5jdGlvbi4KKyAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU1ldGEpOgorICAgICAgIHBhc3MKIAotVGhlc2Ugc3RlcHMgd2lsbCBoYXZlIHRvIGJlIHBlcmZvcm1lZCBpbiB0aGUgbWV0YWNsYXNzJ3MgOm1ldGg6YF9fbmV3X19gIG1ldGhvZAotLS0gOm1ldGg6YHR5cGUuX19uZXdfX2AgY2FuIHRoZW4gYmUgY2FsbGVkIGZyb20gdGhpcyBtZXRob2QgdG8gY3JlYXRlIGEgY2xhc3MKLXdpdGggZGlmZmVyZW50IHByb3BlcnRpZXMuICBUaGlzIGV4YW1wbGUgYWRkcyBhIG5ldyBlbGVtZW50IHRvIHRoZSBjbGFzcwotZGljdGlvbmFyeSBiZWZvcmUgY3JlYXRpbmcgdGhlIGNsYXNzOjoKKyAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6CisgICAgICAgcGFzcwogCi0gIGNsYXNzIG1ldGFjbHModHlwZSk6Ci0gICAgICBkZWYgX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkaWN0KToKLSAgICAgICAgICBkaWN0Wydmb28nXSA9ICdtZXRhY2xzIHdhcyBoZXJlJwotICAgICAgICAgIHJldHVybiB0eXBlLl9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCkKK0FueSBvdGhlciBrZXl3b3JkIGFyZ3VtZW50cyB0aGF0IGFyZSBzcGVjaWZpZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlCitwYXNzZWQgdGhyb3VnaCB0byBhbGwgbWV0YWNsYXNzIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGJlbG93LgogCi1Zb3UgY2FuIG9mIGNvdXJzZSBhbHNvIG92ZXJyaWRlIG90aGVyIGNsYXNzIG1ldGhvZHMgKG9yIGFkZCBuZXcgbWV0aG9kcyk7IGZvcgotZXhhbXBsZSBkZWZpbmluZyBhIGN1c3RvbSA6bWV0aDpgX19jYWxsX19gIG1ldGhvZCBpbiB0aGUgbWV0YWNsYXNzIGFsbG93cyBjdXN0b20KLWJlaGF2aW9yIHdoZW4gdGhlIGNsYXNzIGlzIGNhbGxlZCwgZS5nLiBub3QgYWx3YXlzIGNyZWF0aW5nIGEgbmV3IGluc3RhbmNlLgorV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgb2NjdXI6CiAKLUlmIHRoZSBtZXRhY2xhc3MgaGFzIGEgOm1ldGg6YF9fcHJlcGFyZV9fYCBhdHRyaWJ1dGUgKHVzdWFsbHkgaW1wbGVtZW50ZWQgYXMgYQotY2xhc3Mgb3Igc3RhdGljIG1ldGhvZCksIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlIGNsYXNzIGJvZHkgaXMgZXZhbHVhdGVkIHdpdGgKLXRoZSBuYW1lIG9mIHRoZSBjbGFzcyBhbmQgYSB0dXBsZSBvZiBpdHMgYmFzZXMgZm9yIGFyZ3VtZW50cy4gIEl0IHNob3VsZCByZXR1cm4KLWFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZSBtYXBwaW5nIGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCB0byBzdG9yZSB0aGUKLW5hbWVzcGFjZSBvZiB0aGUgY2xhc3MuICBUaGUgZGVmYXVsdCBpcyBhIHBsYWluIGRpY3Rpb25hcnkuICBUaGlzIGNvdWxkIGJlIHVzZWQsCi1mb3IgZXhhbXBsZSwgdG8ga2VlcCB0cmFjayBvZiB0aGUgb3JkZXIgdGhhdCBjbGFzcyBhdHRyaWJ1dGVzIGFyZSBkZWNsYXJlZCBpbiBieQotcmV0dXJuaW5nIGFuIG9yZGVyZWQgZGljdGlvbmFyeS4KKyogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkCisqIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWQKKyogdGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQKKyogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkCiAKLVRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2UgcnVsZXM6CitEZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKLSogSWYgdGhlIGBgbWV0YWNsYXNzYGAga2V5d29yZCBhcmd1bWVudCBpcyBwYXNzZWQgd2l0aCB0aGUgYmFzZXMsIGl0IGlzIHVzZWQuCitUaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgZGV0ZXJtaW5lZCBhcyBmb2xsb3dzOgogCi0qIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGJhc2UgY2xhc3MsIGl0cyBtZXRhY2xhc3MgaXMgdXNlZC4KKyogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gOmZ1bmM6YHR5cGVgIGlzIHVzZWQKKyogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZgorICA6ZnVuYzpgdHlwZWAsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzCisqIGlmIGFuIGluc3RhbmNlIG9mIDpmdW5jOmB0eXBlYCBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgbWV0YWNsYXNzLCBvcgorICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyB1c2VkCiAKLSogT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCBtZXRhY2xhc3MgKDpjbGFzczpgdHlwZWApIGlzIHVzZWQuCitUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZAorbWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gYGB0eXBlKGNscylgYCkgb2YgYWxsIHNwZWNpZmllZAorYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYSBzdWJ0eXBlIG9mICphbGwqCitvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZSBtZXRhY2xhc3NlcyBtZWV0cwordGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gd2lsbCBmYWlsIHdpdGggYGBUeXBlRXJyb3JgYC4KKworCitQcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzIG5hbWVzcGFjZQoraXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgYGBfX3ByZXBhcmVfX2BgIGF0dHJpYnV0ZSwgaXQgaXMgY2FsbGVkCithcyBgYG5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcywgKiprd2RzKWBgICh3aGVyZSB0aGUKK2FkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uKS4KKworSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gYGBfX3ByZXBhcmVfX2BgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3MgbmFtZXNwYWNlCitpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSA6ZnVuYzpgZGljdGAgaW5zdGFuY2UuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTE1YCAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwCisgICAgICBJbnRyb2R1Y2VkIHRoZSBgYF9fcHJlcGFyZV9fYGAgbmFtZXNwYWNlIGhvb2sKKworCitFeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHkKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitUaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMKK2BgZXhlYyhib2R5LCBnbG9iYWxzKCksIG5hbWVzcGFjZSlgYC4gVGhlIGtleSBkaWZmZXJlbmNlIGZyb20gYSBub3JtYWwKK2NhbGwgdG8gOmZ1bmM6YGV4ZWNgIGlzIHRoYXQgbGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nCithbnkgbWV0aG9kcykgdG8gcmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZQorY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uCisKK0hvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbiwgbWV0aG9kcworZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUuCitDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IKK2NsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsIGZyb20gc3RhdGljIG1ldGhvZHMuCisKKworQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdAorXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitPbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3MgYm9keSwKK3RoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nCitgYG1ldGFjbGFzcyhuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpYGAgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzCitwYXNzZWQgaGVyZSBhcmUgdGhlIHNhbWUgYXMgdGhvc2UgcGFzc2VkIHRvIGBgX19wcmVwYXJlX19gYCkuCisKK1RoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tYXJndW1lbnQKK2Zvcm0gb2YgOmZ1bmM6YHN1cGVyYC4gYGBfX2NsYXNzX19gYCBpcyBhbiBpbXBsaWNpdCBjbG9zdXJlIHJlZmVyZW5jZQorY3JlYXRlZCBieSB0aGUgY29tcGlsZXIgaWYgYW55IG1ldGhvZHMgaW4gYSBjbGFzcyBib2R5IHJlZmVyIHRvIGVpdGhlcgorYGBfX2NsYXNzX19gYCBvciBgYHN1cGVyYGAuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm0gb2YKKzpmdW5jOmBzdXBlcmAgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkIGJhc2VkIG9uCitsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvIG1ha2UgdGhlCitjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBtZXRob2QuCisKK0FmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzcyBkZWNvcmF0b3JzCitpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZyBvYmplY3QgaXMgYm91bmQKK2luIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTM1YCAtIE5ldyBzdXBlcgorICAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCBgYF9fY2xhc3NfX2BgIGNsb3N1cmUgcmVmZXJlbmNlCisKKworTWV0YWNsYXNzIGV4YW1wbGUKK15eXl5eXl5eXl5eXl5eXl5eCiAKIFRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmUgYmVlbgotZXhwbG9yZWQgaW5jbHVkaW5nIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljIGRlbGVnYXRpb24sIGF1dG9tYXRpYworZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpYyBkZWxlZ2F0aW9uLCBhdXRvbWF0aWMKIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmQgYXV0b21hdGljIHJlc291cmNlCiBsb2NraW5nL3N5bmNocm9uaXphdGlvbi4KIApAQCAtMTU4Myw5ICsxNjgyLDkgQEAKICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKToKICAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCiAKLSAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIGNsYXNzZGljdCk6Ci0gICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChjbGFzc2RpY3QpKQotICAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShjbGFzc2RpY3QpCisgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6CisgICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChuYW1lc3BhY2UpKQorICAgICAgICAgICAgcmVzdWx0Lm1lbWJlcnMgPSB0dXBsZShuYW1lc3BhY2UpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAppbmRleCAyYzZhY2I2Li40MTUyM2NiIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdApAQCAtMzE4LDcgKzMxOCw3IEBACiAKIC4uIHByb2R1Y3Rpb25saXN0OjoKICAgIHlpZWxkX2F0b206ICIoIiBgeWllbGRfZXhwcmVzc2lvbmAgIikiCi0gICB5aWVsZF9leHByZXNzaW9uOiAieWllbGQiIFtgZXhwcmVzc2lvbl9saXN0YF0KKyAgIHlpZWxkX2V4cHJlc3Npb246ICJ5aWVsZCIgW2BleHByZXNzaW9uX2xpc3RgIHwgImZyb20iIGBleHByZXNzaW9uYF0KIAogVGhlIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIGdlbmVyYXRvciBmdW5jdGlvbiwKIGFuZCBjYW4gb25seSBiZSB1c2VkIGluIHRoZSBib2R5IG9mIGEgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFVzaW5nIGEKQEAgLTMzNiw3ICszMzYsMTAgQEAKIHRoZSBnZW5lcmF0b3IncyBtZXRob2RzLCB0aGUgZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUKIDprZXl3b3JkOmB5aWVsZGAgZXhwcmVzc2lvbiB3YXMganVzdCBhbm90aGVyIGV4dGVybmFsIGNhbGwuICBUaGUgdmFsdWUgb2YgdGhlCiA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gYWZ0ZXIgcmVzdW1pbmcgZGVwZW5kcyBvbiB0aGUgbWV0aG9kIHdoaWNoIHJlc3VtZWQKLXRoZSBleGVjdXRpb24uCit0aGUgZXhlY3V0aW9uLiBJZiA6bWV0aDpgX19uZXh0X19gIGlzIHVzZWQgKHR5cGljYWxseSB2aWEgZWl0aGVyIGEKKzprZXl3b3JkOmBmb3JgIG9yIHRoZSA6ZnVuYzpgbmV4dGAgYnVpbHRpbikgdGhlbiB0aGUgcmVzdWx0IGlzIDpjb25zdDpgTm9uZWAsCitvdGhlcndpc2UsIGlmIDptZXRoOmBzZW5kYCBpcyB1c2VkLCB0aGVuIHRoZSByZXN1bHQgd2lsbCBiZSB0aGUgdmFsdWUgcGFzc2VkCitpbiB0byB0aGF0IG1ldGhvZC4KIAogLi4gaW5kZXg6OiBzaW5nbGU6IGNvcm91dGluZQogCkBAIC0zNDYsMTIgKzM0OSwzMiBAQAogd2hlcmUgc2hvdWxkIHRoZSBleGVjdXRpb24gY29udGludWUgYWZ0ZXIgaXQgeWllbGRzOyB0aGUgY29udHJvbCBpcyBhbHdheXMKIHRyYW5zZmVycmVkIHRvIHRoZSBnZW5lcmF0b3IncyBjYWxsZXIuCiAKLVRoZSA6a2V5d29yZDpgeWllbGRgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSA6a2V5d29yZDpgdHJ5YCBjbGF1c2Ugb2YgYQorOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9ucyBhcmUgYWxsb3dlZCBpbiB0aGUgOmtleXdvcmQ6YHRyeWAgY2xhdXNlIG9mIGEKIDprZXl3b3JkOmB0cnlgIC4uLiAgOmtleXdvcmQ6YGZpbmFsbHlgIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90CiByZXN1bWVkIGJlZm9yZSBpdCBpcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnQgb3IgYnkgYmVpbmcKIGdhcmJhZ2UgY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvcidzIDptZXRoOmBjbG9zZWAgbWV0aG9kIHdpbGwgYmUKIGNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgOmtleXdvcmQ6YGZpbmFsbHlgIGNsYXVzZXMgdG8gZXhlY3V0ZS4KIAorV2hlbiBgYHlpZWxkIGZyb20gPGV4cHI+YGAgaXMgdXNlZCwgaXQgdHJlYXRzIHRoZSBzdXBwbGllZCBleHByZXNzaW9uIGFzCithIHN1Yml0ZXJhdG9yLiBBbGwgdmFsdWVzIHByb2R1Y2VkIGJ5IHRoYXQgc3ViaXRlcmF0b3IgYXJlIHBhc3NlZCBkaXJlY3RseQordG8gdGhlIGNhbGxlciBvZiB0aGUgY3VycmVudCBnZW5lcmF0b3IncyBtZXRob2RzLiBBbnkgdmFsdWVzIHBhc3NlZCBpbiB3aXRoCis6bWV0aDpgc2VuZGAgYW5kIGFueSBleGNlcHRpb25zIHBhc3NlZCBpbiB3aXRoIDptZXRoOmB0aHJvd2AgYXJlIHBhc3NlZCB0bwordGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgaWYgaXQgaGFzIHRoZSBhcHByb3ByaWF0ZSBtZXRob2RzLiBJZiB0aGlzIGlzIG5vdCB0aGUKK2Nhc2UsIHRoZW4gOm1ldGg6YHNlbmRgIHdpbGwgcmFpc2UgOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9yIDpleGM6YFR5cGVFcnJvcmAsCit3aGlsZSA6bWV0aDpgdGhyb3dgIHdpbGwganVzdCByYWlzZSB0aGUgcGFzc2VkIGluIGV4Y2VwdGlvbiBpbW1lZGlhdGVseS4KKworV2hlbiB0aGUgdW5kZXJseWluZyBpdGVyYXRvciBpcyBjb21wbGV0ZSwgdGhlIDphdHRyOmB+U3RvcEl0ZXJhdGlvbi52YWx1ZWAKK2F0dHJpYnV0ZSBvZiB0aGUgcmFpc2VkIDpleGM6YFN0b3BJdGVyYXRpb25gIGluc3RhbmNlIGJlY29tZXMgdGhlIHZhbHVlIG9mCit0aGUgeWllbGQgZXhwcmVzc2lvbi4gSXQgY2FuIGJlIGVpdGhlciBzZXQgZXhwbGljaXRseSB3aGVuIHJhaXNpbmcKKzpleGM6YFN0b3BJdGVyYXRpb25gLCBvciBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHN1Yi1pdGVyYXRvciBpcyBhIGdlbmVyYXRvcgorKGJ5IHJldHVybmluZyBhIHZhbHVlIGZyb20gdGhlIHN1Yi1nZW5lcmF0b3IpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMworICAgICAgQWRkZWQgYGB5aWVsZCBmcm9tIDxleHByPmBgIHRvIGRlbGVnYXRlIGNvbnRyb2wgZmxvdyB0byBhIHN1Yml0ZXJhdG9yCisKK1RoZSBwYXJlbnRoZXNlcyBjYW4gYmUgb21pdHRlZCB3aGVuIHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24gaXMgdGhlCitzb2xlIGV4cHJlc3Npb24gb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IHN0YXRlbWVudC4KKwogLi4gaW5kZXg6OiBvYmplY3Q6IGdlbmVyYXRvcgogCiAKQEAgLTQ1Miw2ICs0NzUsMTAgQEAKICAgICAgIFRoZSBwcm9wb3NhbCB0byBlbmhhbmNlIHRoZSBBUEkgYW5kIHN5bnRheCBvZiBnZW5lcmF0b3JzLCBtYWtpbmcgdGhlbQogICAgICAgdXNhYmxlIGFzIHNpbXBsZSBjb3JvdXRpbmVzLgogCisgICA6cGVwOmAwMzgwYCAtIFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorICAgICAgVGhlIHByb3Bvc2FsIHRvIGludHJvZHVjZSB0aGUgOnRva2VuOmB5aWVsZF9mcm9tYCBzeW50YXgsIG1ha2luZyBkZWxlZ2F0aW9uCisgICAgICB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LgorCiAKIC4uIF9wcmltYXJpZXM6CiAKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdCBiL0RvYy9yZWZlcmVuY2UvaW1wb3J0LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njg4ZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL3JlZmVyZW5jZS9pbXBvcnQucnN0CkBAIC0wLDAgKzEsNjk3IEBACisKKy4uIF9pbXBvcnRzeXN0ZW06CisKKyoqKioqKioqKioqKioqKioqCitUaGUgaW1wb3J0IHN5c3RlbQorKioqKioqKioqKioqKioqKioKKworLi4gaW5kZXg6OiBzaW5nbGU6IGltcG9ydCBtYWNoaW5lcnkKKworUHl0aG9uIGNvZGUgaW4gb25lIDp0ZXJtOmBtb2R1bGVgIGdhaW5zIGFjY2VzcyB0byB0aGUgY29kZSBpbiBhbm90aGVyIG1vZHVsZQorYnkgdGhlIHByb2Nlc3Mgb2YgOnRlcm06YGltcG9ydGluZ2AgaXQuICBUaGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGlzCit0aGUgbW9zdCBjb21tb24gd2F5IG9mIGludm9raW5nIHRoZSBpbXBvcnQgbWFjaGluZXJ5LCBidXQgaXQgaXMgbm90IHRoZSBvbmx5Cit3YXkuICBGdW5jdGlvbnMgc3VjaCBhcyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIGFuZCBidWlsdC1pbgorOmZ1bmM6YF9faW1wb3J0X19gIGNhbiBhbHNvIGJlIHVzZWQgdG8gaW52b2tlIHRoZSBpbXBvcnQgbWFjaGluZXJ5LgorCitUaGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGNvbWJpbmVzIHR3byBvcGVyYXRpb25zOyBpdCBzZWFyY2hlcyBmb3IgdGhlCituYW1lZCBtb2R1bGUsIHRoZW4gaXQgYmluZHMgdGhlIHJlc3VsdHMgb2YgdGhhdCBzZWFyY2ggdG8gYSBuYW1lIGluIHRoZSBsb2NhbAorc2NvcGUuICBUaGUgc2VhcmNoIG9wZXJhdGlvbiBvZiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IGlzIGRlZmluZWQgYXMKK2EgY2FsbCB0byB0aGUgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uLCB3aXRoIHRoZSBhcHByb3ByaWF0ZSBhcmd1bWVudHMuCitUaGUgcmV0dXJuIHZhbHVlIG9mIDpmdW5jOmBfX2ltcG9ydF9fYCBpcyB1c2VkIHRvIHBlcmZvcm0gdGhlIG5hbWUKK2JpbmRpbmcgb3BlcmF0aW9uIG9mIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQuICBTZWUgdGhlCis6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgZm9yIHRoZSBleGFjdCBkZXRhaWxzIG9mIHRoYXQgbmFtZSBiaW5kaW5nCitvcGVyYXRpb24uCisKK0EgZGlyZWN0IGNhbGwgdG8gOmZ1bmM6YF9faW1wb3J0X19gIHBlcmZvcm1zIG9ubHkgdGhlIG1vZHVsZSBzZWFyY2ggYW5kLCBpZgorZm91bmQsIHRoZSBtb2R1bGUgY3JlYXRpb24gb3BlcmF0aW9uLiAgV2hpbGUgY2VydGFpbiBzaWRlLWVmZmVjdHMgbWF5IG9jY3VyLAorc3VjaCBhcyB0aGUgaW1wb3J0aW5nIG9mIHBhcmVudCBwYWNrYWdlcywgYW5kIHRoZSB1cGRhdGluZyBvZiB2YXJpb3VzIGNhY2hlcworKGluY2x1ZGluZyA6ZGF0YTpgc3lzLm1vZHVsZXNgKSwgb25seSB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IHBlcmZvcm1zCithIG5hbWUgYmluZGluZyBvcGVyYXRpb24uCisKK1doZW4gY2FsbGluZyA6ZnVuYzpgX19pbXBvcnRfX2AgYXMgcGFydCBvZiBhbiBpbXBvcnQgc3RhdGVtZW50LCB0aGUKK2ltcG9ydCBzeXN0ZW0gZmlyc3QgY2hlY2tzIHRoZSBtb2R1bGUgZ2xvYmFsIG5hbWVzcGFjZSBmb3IgYSBmdW5jdGlvbiBieQordGhhdCBuYW1lLiBJZiBpdCBpcyBub3QgZm91bmQsIHRoZW4gdGhlIHN0YW5kYXJkIGJ1aWx0aW4gOmZ1bmM6YF9faW1wb3J0X19gCitpcyBjYWxsZWQuIE90aGVyIG1lY2hhbmlzbXMgZm9yIGludm9raW5nIHRoZSBpbXBvcnQgc3lzdGVtIChzdWNoIGFzCis6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgKSBkbyBub3QgcGVyZm9ybSB0aGlzIGNoZWNrIGFuZCB3aWxsIGFsd2F5cwordXNlIHRoZSBzdGFuZGFyZCBpbXBvcnQgc3lzdGVtLgorCitXaGVuIGEgbW9kdWxlIGlzIGZpcnN0IGltcG9ydGVkLCBQeXRob24gc2VhcmNoZXMgZm9yIHRoZSBtb2R1bGUgYW5kIGlmIGZvdW5kLAoraXQgY3JlYXRlcyBhIG1vZHVsZSBvYmplY3QgWyNmbm1vXV8sIGluaXRpYWxpemluZyBpdC4gIElmIHRoZSBuYW1lZCBtb2R1bGUKK2Nhbm5vdCBiZSBmb3VuZCwgYW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHJhaXNlZC4gIFB5dGhvbiBpbXBsZW1lbnRzIHZhcmlvdXMKK3N0cmF0ZWdpZXMgdG8gc2VhcmNoIGZvciB0aGUgbmFtZWQgbW9kdWxlIHdoZW4gdGhlIGltcG9ydCBtYWNoaW5lcnkgaXMKK2ludm9rZWQuICBUaGVzZSBzdHJhdGVnaWVzIGNhbiBiZSBtb2RpZmllZCBhbmQgZXh0ZW5kZWQgYnkgdXNpbmcgdmFyaW91cyBob29rcworZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9ucyBiZWxvdy4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgIFRoZSBpbXBvcnQgc3lzdGVtIGhhcyBiZWVuIHVwZGF0ZWQgdG8gZnVsbHkgaW1wbGVtZW50IHRoZSBzZWNvbmQgcGhhc2UKKyAgIG9mIFBFUCAzMDIuIFRoZXJlIGlzIG5vIGxvbmdlciBhbnkgaW1wbGljaXQgaW1wb3J0IG1hY2hpbmVyeSAtIHRoZSBmdWxsCisgICBpbXBvcnQgc3lzdGVtIGlzIGV4cG9zZWQgdGhyb3VnaCA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAuIEluIGFkZGl0aW9uLAorICAgbmF0aXZlIG5hbWVzcGFjZSBwYWNrYWdlIHN1cHBvcnQgaGFzIGJlZW4gaW1wbGVtZW50ZWQgKHNlZSBQRVAgNDIwKS4KKworCis6bW9kOmBpbXBvcnRsaWJgCis9PT09PT09PT09PT09PT09CisKK1RoZSA6bW9kOmBpbXBvcnRsaWJgIG1vZHVsZSBwcm92aWRlcyBhIHJpY2ggQVBJIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZQoraW1wb3J0IHN5c3RlbS4gIEZvciBleGFtcGxlIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgcHJvdmlkZXMgYQorcmVjb21tZW5kZWQsIHNpbXBsZXIgQVBJIHRoYW4gYnVpbHQtaW4gOmZ1bmM6YF9faW1wb3J0X19gIGZvciBpbnZva2luZyB0aGUKK2ltcG9ydCBtYWNoaW5lcnkuICBSZWZlciB0byB0aGUgOm1vZDpgaW1wb3J0bGliYCBsaWJyYXJ5IGRvY3VtZW50YXRpb24gZm9yCithZGRpdGlvbmFsIGRldGFpbC4KKworCisKK1BhY2thZ2VzCis9PT09PT09PQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBwYWNrYWdlCisKK1B5dGhvbiBoYXMgb25seSBvbmUgdHlwZSBvZiBtb2R1bGUgb2JqZWN0LCBhbmQgYWxsIG1vZHVsZXMgYXJlIG9mIHRoaXMgdHlwZSwKK3JlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbW9kdWxlIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgQywgb3Igc29tZXRoaW5nCitlbHNlLiAgVG8gaGVscCBvcmdhbml6ZSBtb2R1bGVzIGFuZCBwcm92aWRlIGEgbmFtaW5nIGhpZXJhcmNoeSwgUHl0aG9uIGhhcyBhCitjb25jZXB0IG9mIDp0ZXJtOmBwYWNrYWdlcyA8cGFja2FnZT5gLgorCitZb3UgY2FuIHRoaW5rIG9mIHBhY2thZ2VzIGFzIHRoZSBkaXJlY3RvcmllcyBvbiBhIGZpbGUgc3lzdGVtIGFuZCBtb2R1bGVzIGFzCitmaWxlcyB3aXRoaW4gZGlyZWN0b3JpZXMsIGJ1dCBkb24ndCB0YWtlIHRoaXMgYW5hbG9neSB0b28gbGl0ZXJhbGx5IHNpbmNlCitwYWNrYWdlcyBhbmQgbW9kdWxlcyBuZWVkIG5vdCBvcmlnaW5hdGUgZnJvbSB0aGUgZmlsZSBzeXN0ZW0uICBGb3IgdGhlCitwdXJwb3NlcyBvZiB0aGlzIGRvY3VtZW50YXRpb24sIHdlJ2xsIHVzZSB0aGlzIGNvbnZlbmllbnQgYW5hbG9neSBvZgorZGlyZWN0b3JpZXMgYW5kIGZpbGVzLiAgTGlrZSBmaWxlIHN5c3RlbSBkaXJlY3RvcmllcywgcGFja2FnZXMgYXJlIG9yZ2FuaXplZAoraGllcmFyY2hpY2FsbHksIGFuZCBwYWNrYWdlcyBtYXkgdGhlbXNlbHZlcyBjb250YWluIHN1YnBhY2thZ2VzLCBhcyB3ZWxsIGFzCityZWd1bGFyIG1vZHVsZXMuCisKK0l0J3MgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZCB0aGF0IGFsbCBwYWNrYWdlcyBhcmUgbW9kdWxlcywgYnV0IG5vdCBhbGwKK21vZHVsZXMgYXJlIHBhY2thZ2VzLiAgT3IgcHV0IGFub3RoZXIgd2F5LCBwYWNrYWdlcyBhcmUganVzdCBhIHNwZWNpYWwga2luZCBvZgorbW9kdWxlLiAgU3BlY2lmaWNhbGx5LCBhbnkgbW9kdWxlIHRoYXQgY29udGFpbnMgYSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlIGlzCitjb25zaWRlcmVkIGEgcGFja2FnZS4KKworQWxsIG1vZHVsZXMgaGF2ZSBhIG5hbWUuICBTdWJwYWNrYWdlIG5hbWVzIGFyZSBzZXBhcmF0ZWQgZnJvbSB0aGVpciBwYXJlbnQKK3BhY2thZ2UgbmFtZSBieSBkb3RzLCBha2luIHRvIFB5dGhvbidzIHN0YW5kYXJkIGF0dHJpYnV0ZSBhY2Nlc3Mgc3ludGF4LiAgVGh1cworeW91IG1pZ2h0IGhhdmUgYSBtb2R1bGUgY2FsbGVkIDptb2Q6YHN5c2AgYW5kIGEgcGFja2FnZSBjYWxsZWQgOm1vZDpgZW1haWxgLAord2hpY2ggaW4gdHVybiBoYXMgYSBzdWJwYWNrYWdlIGNhbGxlZCA6bW9kOmBlbWFpbC5taW1lYCBhbmQgYSBtb2R1bGUgd2l0aGluCit0aGF0IHN1YnBhY2thZ2UgY2FsbGVkIDptb2Q6YGVtYWlsLm1pbWUudGV4dGAuCisKKworUmVndWxhciBwYWNrYWdlcworLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgcGFpcjogcGFja2FnZTsgcmVndWxhcgorCitQeXRob24gZGVmaW5lcyB0d28gdHlwZXMgb2YgcGFja2FnZXMsIDp0ZXJtOmByZWd1bGFyIHBhY2thZ2VzIDxyZWd1bGFyCitwYWNrYWdlPmAgYW5kIDp0ZXJtOmBuYW1lc3BhY2UgcGFja2FnZXMgPG5hbWVzcGFjZSBwYWNrYWdlPmAuICBSZWd1bGFyCitwYWNrYWdlcyBhcmUgdHJhZGl0aW9uYWwgcGFja2FnZXMgYXMgdGhleSBleGlzdGVkIGluIFB5dGhvbiAzLjIgYW5kIGVhcmxpZXIuCitBIHJlZ3VsYXIgcGFja2FnZSBpcyB0eXBpY2FsbHkgaW1wbGVtZW50ZWQgYXMgYSBkaXJlY3RvcnkgY29udGFpbmluZyBhbgorYGBfX2luaXRfXy5weWBgIGZpbGUuICBXaGVuIGEgcmVndWxhciBwYWNrYWdlIGlzIGltcG9ydGVkLCB0aGlzCitgYF9faW5pdF9fLnB5YGAgZmlsZSBpcyBpbXBsaWNpdGx5IGV4ZWN1dGVkLCBhbmQgdGhlIG9iamVjdHMgaXQgZGVmaW5lcyBhcmUKK2JvdW5kIHRvIG5hbWVzIGluIHRoZSBwYWNrYWdlJ3MgbmFtZXNwYWNlLiAgVGhlIGBgX19pbml0X18ucHlgYCBmaWxlIGNhbgorY29udGFpbiB0aGUgc2FtZSBQeXRob24gY29kZSB0aGF0IGFueSBvdGhlciBtb2R1bGUgY2FuIGNvbnRhaW4sIGFuZCBQeXRob24KK3dpbGwgYWRkIHNvbWUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHRvIHRoZSBtb2R1bGUgd2hlbiBpdCBpcyBpbXBvcnRlZC4KKworRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgZmlsZSBzeXN0ZW0gbGF5b3V0IGRlZmluZXMgYSB0b3AgbGV2ZWwgYGBwYXJlbnRgYAorcGFja2FnZSB3aXRoIHRocmVlIHN1YnBhY2thZ2VzOjoKKworICAgIHBhcmVudC8KKyAgICAgICAgX19pbml0X18ucHkKKyAgICAgICAgb25lLworICAgICAgICAgICAgX19pbml0X18ucHkKKyAgICAgICAgdHdvLworICAgICAgICAgICAgX19pbml0X18ucHkKKyAgICAgICAgdGhyZWUvCisgICAgICAgICAgICBfX2luaXRfXy5weQorCitJbXBvcnRpbmcgYGBwYXJlbnQub25lYGAgd2lsbCBpbXBsaWNpdGx5IGV4ZWN1dGUgYGBwYXJlbnQvX19pbml0X18ucHlgYCBhbmQKK2BgcGFyZW50L29uZS9fX2luaXRfXy5weWBgLiAgU3Vic2VxdWVudCBpbXBvcnRzIG9mIGBgcGFyZW50LnR3b2BgIG9yCitgYHBhcmVudC50aHJlZWBgIHdpbGwgZXhlY3V0ZSBgYHBhcmVudC90d28vX19pbml0X18ucHlgYCBhbmQKK2BgcGFyZW50L3RocmVlL19faW5pdF9fLnB5YGAgcmVzcGVjdGl2ZWx5LgorCisKK05hbWVzcGFjZSBwYWNrYWdlcworLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBwYWlyOjogcGFja2FnZTsgbmFtZXNwYWNlCisgICAgcGFpcjo6IHBhY2thZ2U7IHBvcnRpb24KKworQSBuYW1lc3BhY2UgcGFja2FnZSBpcyBhIGNvbXBvc2l0ZSBvZiB2YXJpb3VzIDp0ZXJtOmBwb3J0aW9ucyA8cG9ydGlvbj5gLAord2hlcmUgZWFjaCBwb3J0aW9uIGNvbnRyaWJ1dGVzIGEgc3VicGFja2FnZSB0byB0aGUgcGFyZW50IHBhY2thZ2UuICBQb3J0aW9ucworbWF5IHJlc2lkZSBpbiBkaWZmZXJlbnQgbG9jYXRpb25zIG9uIHRoZSBmaWxlIHN5c3RlbS4gIFBvcnRpb25zIG1heSBhbHNvIGJlCitmb3VuZCBpbiB6aXAgZmlsZXMsIG9uIHRoZSBuZXR3b3JrLCBvciBhbnl3aGVyZSBlbHNlIHRoYXQgUHl0aG9uIHNlYXJjaGVzCitkdXJpbmcgaW1wb3J0LiAgTmFtZXNwYWNlIHBhY2thZ2VzIG1heSBvciBtYXkgbm90IGNvcnJlc3BvbmQgZGlyZWN0bHkgdG8KK29iamVjdHMgb24gdGhlIGZpbGUgc3lzdGVtOyB0aGV5IG1heSBiZSB2aXJ0dWFsIG1vZHVsZXMgdGhhdCBoYXZlIG5vIGNvbmNyZXRlCityZXByZXNlbnRhdGlvbi4KKworTmFtZXNwYWNlIHBhY2thZ2VzIGRvIG5vdCB1c2UgYW4gb3JkaW5hcnkgbGlzdCBmb3IgdGhlaXIgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGUuIFRoZXkgaW5zdGVhZCB1c2UgYSBjdXN0b20gaXRlcmFibGUgdHlwZSB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkKK3BlcmZvcm0gYSBuZXcgc2VhcmNoIGZvciBwYWNrYWdlIHBvcnRpb25zIG9uIHRoZSBuZXh0IGltcG9ydCBhdHRlbXB0IHdpdGhpbgordGhhdCBwYWNrYWdlIGlmIHRoZSBwYXRoIG9mIHRoZWlyIHBhcmVudCBwYWNrYWdlIChvciA6ZGF0YTpgc3lzLnBhdGhgIGZvciBhCit0b3AgbGV2ZWwgcGFja2FnZSkgY2hhbmdlcy4KKworV2l0aCBuYW1lc3BhY2UgcGFja2FnZXMsIHRoZXJlIGlzIG5vIGBgcGFyZW50L19faW5pdF9fLnB5YGAgZmlsZS4gIEluIGZhY3QsCit0aGVyZSBtYXkgYmUgbXVsdGlwbGUgYGBwYXJlbnRgYCBkaXJlY3RvcmllcyBmb3VuZCBkdXJpbmcgaW1wb3J0IHNlYXJjaCwgd2hlcmUKK2VhY2ggb25lIGlzIHByb3ZpZGVkIGJ5IGEgZGlmZmVyZW50IHBvcnRpb24uICBUaHVzIGBgcGFyZW50L29uZWBgIG1heSBub3QgYmUKK3BoeXNpY2FsbHkgbG9jYXRlZCBuZXh0IHRvIGBgcGFyZW50L3R3b2BgLiAgSW4gdGhpcyBjYXNlLCBQeXRob24gd2lsbCBjcmVhdGUgYQorbmFtZXNwYWNlIHBhY2thZ2UgZm9yIHRoZSB0b3AtbGV2ZWwgYGBwYXJlbnRgYCBwYWNrYWdlIHdoZW5ldmVyIGl0IG9yIG9uZSBvZgoraXRzIHN1YnBhY2thZ2VzIGlzIGltcG9ydGVkLgorCitTZWUgYWxzbyA6cGVwOmA0MjBgIGZvciB0aGUgbmFtZXNwYWNlIHBhY2thZ2Ugc3BlY2lmaWNhdGlvbi4KKworCitTZWFyY2hpbmcKKz09PT09PT09PQorCitUbyBiZWdpbiB0aGUgc2VhcmNoLCBQeXRob24gbmVlZHMgdGhlIDp0ZXJtOmBmdWxseSBxdWFsaWZpZWQgPHF1YWxpZmllZCBuYW1lPmAKK25hbWUgb2YgdGhlIG1vZHVsZSAob3IgcGFja2FnZSwgYnV0IGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkaXNjdXNzaW9uLCB0aGUKK2RpZmZlcmVuY2UgaXMgaW1tYXRlcmlhbCkgYmVpbmcgaW1wb3J0ZWQuICBUaGlzIG5hbWUgbWF5IGNvbWUgZnJvbSB2YXJpb3VzCithcmd1bWVudHMgdG8gdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCwgb3IgZnJvbSB0aGUgcGFyYW1ldGVycyB0byB0aGUKKzpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAgb3IgOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9ucy4KKworVGhpcyBuYW1lIHdpbGwgYmUgdXNlZCBpbiB2YXJpb3VzIHBoYXNlcyBvZiB0aGUgaW1wb3J0IHNlYXJjaCwgYW5kIGl0IG1heSBiZQordGhlIGRvdHRlZCBwYXRoIHRvIGEgc3VibW9kdWxlLCBlLmcuIGBgZm9vLmJhci5iYXpgYC4gIEluIHRoaXMgY2FzZSwgUHl0aG9uCitmaXJzdCB0cmllcyB0byBpbXBvcnQgYGBmb29gYCwgdGhlbiBgYGZvby5iYXJgYCwgYW5kIGZpbmFsbHkgYGBmb28uYmFyLmJhemBgLgorSWYgYW55IG9mIHRoZSBpbnRlcm1lZGlhdGUgaW1wb3J0cyBmYWlsLCBhbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorCisKK1RoZSBtb2R1bGUgY2FjaGUKKy0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogc3lzLm1vZHVsZXMKKworVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgZHVyaW5nIGltcG9ydCBzZWFyY2ggaXMgOmRhdGE6YHN5cy5tb2R1bGVzYC4gIFRoaXMKK21hcHBpbmcgc2VydmVzIGFzIGEgY2FjaGUgb2YgYWxsIG1vZHVsZXMgdGhhdCBoYXZlIGJlZW4gcHJldmlvdXNseSBpbXBvcnRlZCwKK2luY2x1ZGluZyB0aGUgaW50ZXJtZWRpYXRlIHBhdGhzLiAgU28gaWYgYGBmb28uYmFyLmJhemBgIHdhcyBwcmV2aW91c2x5CitpbXBvcnRlZCwgOmRhdGE6YHN5cy5tb2R1bGVzYCB3aWxsIGNvbnRhaW4gZW50cmllcyBmb3IgYGBmb29gYCwgYGBmb28uYmFyYGAsCithbmQgYGBmb28uYmFyLmJhemBgLiAgRWFjaCBrZXkgd2lsbCBoYXZlIGFzIGl0cyB2YWx1ZSB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUKK29iamVjdC4KKworRHVyaW5nIGltcG9ydCwgdGhlIG1vZHVsZSBuYW1lIGlzIGxvb2tlZCB1cCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGFuZCBpZgorcHJlc2VudCwgdGhlIGFzc29jaWF0ZWQgdmFsdWUgaXMgdGhlIG1vZHVsZSBzYXRpc2Z5aW5nIHRoZSBpbXBvcnQsIGFuZCB0aGUKK3Byb2Nlc3MgY29tcGxldGVzLiAgSG93ZXZlciwgaWYgdGhlIHZhbHVlIGlzIGBgTm9uZWBgLCB0aGVuIGFuCis6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIG1pc3NpbmcsIFB5dGhvbiB3aWxsCitjb250aW51ZSBzZWFyY2hpbmcgZm9yIHRoZSBtb2R1bGUuCisKKzpkYXRhOmBzeXMubW9kdWxlc2AgaXMgd3JpdGFibGUuICBEZWxldGluZyBhIGtleSBtYXkgbm90IGRlc3Ryb3kgdGhlCithc3NvY2lhdGVkIG1vZHVsZSAoYXMgb3RoZXIgbW9kdWxlcyBtYXkgaG9sZCByZWZlcmVuY2VzIHRvIGl0KSwKK2J1dCBpdCB3aWxsIGludmFsaWRhdGUgdGhlIGNhY2hlIGVudHJ5IGZvciB0aGUgbmFtZWQgbW9kdWxlLCBjYXVzaW5nCitQeXRob24gdG8gc2VhcmNoIGFuZXcgZm9yIHRoZSBuYW1lZCBtb2R1bGUgdXBvbiBpdHMgbmV4dAoraW1wb3J0LiBUaGUga2V5IGNhbiBhbHNvIGJlIGFzc2lnbmVkIHRvIGBgTm9uZWBgLCBmb3JjaW5nIHRoZSBuZXh0IGltcG9ydAorb2YgdGhlIG1vZHVsZSB0byByZXN1bHQgaW4gYW4gOmV4YzpgSW1wb3J0RXJyb3JgLgorCitCZXdhcmUgdGhvdWdoLCBhcyBpZiB5b3Uga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgbW9kdWxlIG9iamVjdCwKK2ludmFsaWRhdGUgaXRzIGNhY2hlIGVudHJ5IGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIGFuZCB0aGVuIHJlLWltcG9ydCB0aGUKK25hbWVkIG1vZHVsZSwgdGhlIHR3byBtb2R1bGUgb2JqZWN0cyB3aWxsICpub3QqIGJlIHRoZSBzYW1lLiBCeSBjb250cmFzdCwKKzpmdW5jOmBpbXAucmVsb2FkYCB3aWxsIHJldXNlIHRoZSAqc2FtZSogbW9kdWxlIG9iamVjdCwgYW5kIHNpbXBseQorcmVpbml0aWFsaXNlIHRoZSBtb2R1bGUgY29udGVudHMgYnkgcmVydW5uaW5nIHRoZSBtb2R1bGUncyBjb2RlLgorCisKK0ZpbmRlcnMgYW5kIGxvYWRlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogZmluZGVyCisgICAgc2luZ2xlOiBsb2FkZXIKKworSWYgdGhlIG5hbWVkIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCwgdGhlbiBQeXRob24ncyBpbXBvcnQKK3Byb3RvY29sIGlzIGludm9rZWQgdG8gZmluZCBhbmQgbG9hZCB0aGUgbW9kdWxlLiAgVGhpcyBwcm90b2NvbCBjb25zaXN0cyBvZgordHdvIGNvbmNlcHR1YWwgb2JqZWN0cywgOnRlcm06YGZpbmRlcnMgPGZpbmRlcj5gIGFuZCA6dGVybTpgbG9hZGVycyA8bG9hZGVyPmAuCitBIGZpbmRlcidzIGpvYiBpcyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBjYW4gZmluZCB0aGUgbmFtZWQgbW9kdWxlIHVzaW5nCit3aGF0ZXZlciBzdHJhdGVneSBpdCBrbm93cyBhYm91dC4gT2JqZWN0cyB0aGF0IGltcGxlbWVudCBib3RoIG9mIHRoZXNlCitpbnRlcmZhY2VzIGFyZSByZWZlcnJlZCB0byBhcyA6dGVybTpgaW1wb3J0ZXJzIDxpbXBvcnRlcj5gIC0gdGhleSByZXR1cm4KK3RoZW1zZWx2ZXMgd2hlbiB0aGV5IGZpbmQgdGhhdCB0aGV5IGNhbiBsb2FkIHRoZSByZXF1ZXN0ZWQgbW9kdWxlLgorCitQeXRob24gaW5jbHVkZXMgYSBudW1iZXIgb2YgZGVmYXVsdCBmaW5kZXJzIGFuZCBpbXBvcnRlcnMuICBPbmUKK2tub3dzIGhvdyB0byBsb2NhdGUgZnJvemVuIG1vZHVsZXMsIGFuZCBhbm90aGVyIGtub3dzIGhvdyB0byBsb2NhdGUKK2J1aWx0LWluIG1vZHVsZXMuICBBIHRoaXJkIGRlZmF1bHQgZmluZGVyIHNlYXJjaGVzIGFuIDp0ZXJtOmBpbXBvcnQgcGF0aGAKK2ZvciBtb2R1bGVzLiAgVGhlIDp0ZXJtOmBpbXBvcnQgcGF0aGAgaXMgYSBsaXN0IG9mIGxvY2F0aW9ucyB0aGF0IG1heQorbmFtZSBmaWxlIHN5c3RlbSBwYXRocyBvciB6aXAgZmlsZXMuICBJdCBjYW4gYWxzbyBiZSBleHRlbmRlZCB0byBzZWFyY2gKK2ZvciBhbnkgbG9jYXRhYmxlIHJlc291cmNlLCBzdWNoIGFzIHRob3NlIGlkZW50aWZpZWQgYnkgVVJMcy4KKworVGhlIGltcG9ydCBtYWNoaW5lcnkgaXMgZXh0ZW5zaWJsZSwgc28gbmV3IGZpbmRlcnMgY2FuIGJlIGFkZGVkIHRvIGV4dGVuZCB0aGUKK3JhbmdlIGFuZCBzY29wZSBvZiBtb2R1bGUgc2VhcmNoaW5nLgorCitGaW5kZXJzIGRvIG5vdCBhY3R1YWxseSBsb2FkIG1vZHVsZXMuICBJZiB0aGV5IGNhbiBmaW5kIHRoZSBuYW1lZCBtb2R1bGUsIHRoZXkKK3JldHVybiBhIDp0ZXJtOmBsb2FkZXJgLCB3aGljaCB0aGUgaW1wb3J0IG1hY2hpbmVyeSB0aGVuIGludm9rZXMgdG8gbG9hZCB0aGUKK21vZHVsZSBhbmQgY3JlYXRlIHRoZSBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QuCisKK1RoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIHByb3RvY29sIGZvciBmaW5kZXJzIGFuZCBsb2FkZXJzIGluIG1vcmUKK2RldGFpbCwgaW5jbHVkaW5nIGhvdyB5b3UgY2FuIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgbmV3IG9uZXMgdG8gZXh0ZW5kIHRoZQoraW1wb3J0IG1hY2hpbmVyeS4KKworCitJbXBvcnQgaG9va3MKKy0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICBzaW5nbGU6IGltcG9ydCBob29rcworICAgc2luZ2xlOiBtZXRhIGhvb2tzCisgICBzaW5nbGU6IHBhdGggaG9va3MKKyAgIHBhaXI6IGhvb2tzOyBpbXBvcnQKKyAgIHBhaXI6IGhvb2tzOyBtZXRhCisgICBwYWlyOiBob29rczsgcGF0aAorCitUaGUgaW1wb3J0IG1hY2hpbmVyeSBpcyBkZXNpZ25lZCB0byBiZSBleHRlbnNpYmxlOyB0aGUgcHJpbWFyeSBtZWNoYW5pc20gZm9yCit0aGlzIGFyZSB0aGUgKmltcG9ydCBob29rcyouICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGltcG9ydCBob29rczogKm1ldGEKK2hvb2tzKiBhbmQgKmltcG9ydCBwYXRoIGhvb2tzKi4KKworTWV0YSBob29rcyBhcmUgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBpbXBvcnQgcHJvY2Vzc2luZywgYmVmb3JlIGFueSBvdGhlcgoraW1wb3J0IHByb2Nlc3NpbmcgaGFzIG9jY3VycmVkLCBvdGhlciB0aGFuIDpkYXRhOmBzeXMubW9kdWxlc2AgY2FjaGUgbG9vayB1cC4KK1RoaXMgYWxsb3dzIG1ldGEgaG9va3MgdG8gb3ZlcnJpZGUgOmRhdGE6YHN5cy5wYXRoYCBwcm9jZXNzaW5nLCBmcm96ZW4KK21vZHVsZXMsIG9yIGV2ZW4gYnVpbHQtaW4gbW9kdWxlcy4gIE1ldGEgaG9va3MgYXJlIHJlZ2lzdGVyZWQgYnkgYWRkaW5nIG5ldworZmluZGVyIG9iamVjdHMgdG8gOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCBhcyBkZXNjcmliZWQgYmVsb3cuCisKK0ltcG9ydCBwYXRoIGhvb2tzIGFyZSBjYWxsZWQgYXMgcGFydCBvZiA6ZGF0YTpgc3lzLnBhdGhgIChvcgorYGBwYWNrYWdlLl9fcGF0aF9fYGApIHByb2Nlc3NpbmcsIGF0IHRoZSBwb2ludCB3aGVyZSB0aGVpciBhc3NvY2lhdGVkIHBhdGgKK2l0ZW0gaXMgZW5jb3VudGVyZWQuICBJbXBvcnQgcGF0aCBob29rcyBhcmUgcmVnaXN0ZXJlZCBieSBhZGRpbmcgbmV3IGNhbGxhYmxlcwordG8gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBhcyBkZXNjcmliZWQgYmVsb3cuCisKKworVGhlIG1ldGEgcGF0aAorLS0tLS0tLS0tLS0tLQorCisuLiBpbmRleDo6CisgICAgc2luZ2xlOiBzeXMubWV0YV9wYXRoCisgICAgcGFpcjogZmluZGVyOyBmaW5kX21vZHVsZQorICAgIHBhaXI6IGZpbmRlcjsgZmluZF9sb2FkZXIKKworV2hlbiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBQeXRob24gbmV4dAorc2VhcmNoZXMgOmRhdGE6YHN5cy5tZXRhX3BhdGhgLCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YgbWV0YSBwYXRoIGZpbmRlcgorb2JqZWN0cy4gIFRoZXNlIGZpbmRlcnMgYXJlIHF1ZXJpZWQgaW4gb3JkZXIgdG8gc2VlIGlmIHRoZXkga25vdyBob3cgdG8gaGFuZGxlCit0aGUgbmFtZWQgbW9kdWxlLiAgTWV0YSBwYXRoIGZpbmRlcnMgbXVzdCBpbXBsZW1lbnQgYSBtZXRob2QgY2FsbGVkCis6bWV0aDpgZmluZF9tb2R1bGUoKWAgd2hpY2ggdGFrZXMgdHdvIGFyZ3VtZW50cywgYSBuYW1lIGFuZCBhbiBpbXBvcnQgcGF0aC4KK1RoZSBtZXRhIHBhdGggZmluZGVyIGNhbiB1c2UgYW55IHN0cmF0ZWd5IGl0IHdhbnRzIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGNhbgoraGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUgb3Igbm90LgorCitJZiB0aGUgbWV0YSBwYXRoIGZpbmRlciBrbm93cyBob3cgdG8gaGFuZGxlIHRoZSBuYW1lZCBtb2R1bGUsIGl0IHJldHVybnMgYQorbG9hZGVyIG9iamVjdC4gIElmIGl0IGNhbm5vdCBoYW5kbGUgdGhlIG5hbWVkIG1vZHVsZSwgaXQgcmV0dXJucyBgYE5vbmVgYC4gIElmCis6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgcHJvY2Vzc2luZyByZWFjaGVzIHRoZSBlbmQgb2YgaXRzIGxpc3Qgd2l0aG91dCByZXR1cm5pbmcKK2EgbG9hZGVyLCB0aGVuIGFuIDpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBBbnkgb3RoZXIgZXhjZXB0aW9ucyByYWlzZWQKK2FyZSBzaW1wbHkgcHJvcGFnYXRlZCB1cCwgYWJvcnRpbmcgdGhlIGltcG9ydCBwcm9jZXNzLgorCitUaGUgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCBvZiBtZXRhIHBhdGggZmluZGVycyBpcyBjYWxsZWQgd2l0aCB0d28KK2FyZ3VtZW50cy4gIFRoZSBmaXJzdCBpcyB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZworaW1wb3J0ZWQsIGZvciBleGFtcGxlIGBgZm9vLmJhci5iYXpgYC4gIFRoZSBzZWNvbmQgYXJndW1lbnQgaXMgdGhlIHBhdGgKK2VudHJpZXMgdG8gdXNlIGZvciB0aGUgbW9kdWxlIHNlYXJjaC4gIEZvciB0b3AtbGV2ZWwgbW9kdWxlcywgdGhlIHNlY29uZAorYXJndW1lbnQgaXMgYGBOb25lYGAsIGJ1dCBmb3Igc3VibW9kdWxlcyBvciBzdWJwYWNrYWdlcywgdGhlIHNlY29uZAorYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJlbnQgcGFja2FnZSdzIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUuIElmCit0aGUgYXBwcm9wcmlhdGUgYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSBjYW5ub3QgYmUgYWNjZXNzZWQsIGFuCis6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorCitUaGUgbWV0YSBwYXRoIG1heSBiZSB0cmF2ZXJzZWQgbXVsdGlwbGUgdGltZXMgZm9yIGEgc2luZ2xlIGltcG9ydCByZXF1ZXN0LgorRm9yIGV4YW1wbGUsIGFzc3VtaW5nIG5vbmUgb2YgdGhlIG1vZHVsZXMgaW52b2x2ZWQgaGFzIGFscmVhZHkgYmVlbiBjYWNoZWQsCitpbXBvcnRpbmcgYGBmb28uYmFyLmJhemBgIHdpbGwgZmlyc3QgcGVyZm9ybSBhIHRvcCBsZXZlbCBpbXBvcnQsIGNhbGxpbmcKK2BgbXBmLmZpbmRfbW9kdWxlKCJmb28iLCBOb25lKWBgIG9uIGVhY2ggbWV0YSBwYXRoIGZpbmRlciAoYGBtcGZgYCkuIEFmdGVyCitgYGZvb2BgIGhhcyBiZWVuIGltcG9ydGVkLCBgYGZvby5iYXJgYCB3aWxsIGJlIGltcG9ydGVkIGJ5IHRyYXZlcnNpbmcgdGhlCittZXRhIHBhdGggYSBzZWNvbmQgdGltZSwgY2FsbGluZworYGBtcGYuZmluZF9tb2R1bGUoImZvby5iYXIiLCBmb28uX19wYXRoX18pYGAuIE9uY2UgYGBmb28uYmFyYGAgaGFzIGJlZW4KK2ltcG9ydGVkLCB0aGUgZmluYWwgdHJhdmVyc2FsIHdpbGwgY2FsbAorYGBtcGYuZmluZF9tb2R1bGUoImZvby5iYXIuYmF6IiwgZm9vLmJhci5fX3BhdGhfXylgYC4KKworU29tZSBtZXRhIHBhdGggZmluZGVycyBvbmx5IHN1cHBvcnQgdG9wIGxldmVsIGltcG9ydHMuIFRoZXNlIGltcG9ydGVycyB3aWxsCithbHdheXMgcmV0dXJuIGBgTm9uZWBgIHdoZW4gYW55dGhpbmcgb3RoZXIgdGhhbiBgYE5vbmVgYCBpcyBwYXNzZWQgYXMgdGhlCitzZWNvbmQgYXJndW1lbnQuCisKK1B5dGhvbidzIGRlZmF1bHQgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGhhcyB0aHJlZSBtZXRhIHBhdGggZmluZGVycywgb25lIHRoYXQKK2tub3dzIGhvdyB0byBpbXBvcnQgYnVpbHQtaW4gbW9kdWxlcywgb25lIHRoYXQga25vd3MgaG93IHRvIGltcG9ydCBmcm96ZW4KK21vZHVsZXMsIGFuZCBvbmUgdGhhdCBrbm93cyBob3cgdG8gaW1wb3J0IG1vZHVsZXMgZnJvbSBhbiA6dGVybTpgaW1wb3J0IHBhdGhgCisoaS5lLiB0aGUgOnRlcm06YHBhdGggYmFzZWQgZmluZGVyYCkuCisKKworTG9hZGVycworPT09PT09PQorCitJZiBhbmQgd2hlbiBhIG1vZHVsZSBsb2FkZXIgaXMgZm91bmQgaXRzCis6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCBtZXRob2QgaXMgY2FsbGVkLCB3aXRoIGEgc2luZ2xlCithcmd1bWVudCwgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQuICBUaGlzIG1ldGhvZAoraGFzIHNldmVyYWwgcmVzcG9uc2liaWxpdGllcywgYW5kIHNob3VsZCByZXR1cm4gdGhlIG1vZHVsZSBvYmplY3QgaXQgaGFzCitsb2FkZWQgWyNmbmxvXV8uICBJZiBpdCBjYW5ub3QgbG9hZCB0aGUgbW9kdWxlLCBpdCBzaG91bGQgcmFpc2UgYW4KKzpleGM6YEltcG9ydEVycm9yYCwgYWx0aG91Z2ggYW55IG90aGVyIGV4Y2VwdGlvbiByYWlzZWQgZHVyaW5nCis6bWV0aDpgbG9hZF9tb2R1bGUoKWAgd2lsbCBiZSBwcm9wYWdhdGVkLgorCitJbiBtYW55IGNhc2VzLCB0aGUgZmluZGVyIGFuZCBsb2FkZXIgY2FuIGJlIHRoZSBzYW1lIG9iamVjdDsgaW4gc3VjaCBjYXNlcyB0aGUKKzptZXRoOmBmaW5kZXIuZmluZF9tb2R1bGUoKWAgd291bGQganVzdCByZXR1cm4gYGBzZWxmYGAuCisKK0xvYWRlcnMgbXVzdCBzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzOgorCisgKiBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBtb2R1bGUgb2JqZWN0IHdpdGggdGhlIGdpdmVuIG5hbWUgaW4KKyAgIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZSBsb2FkZXIgbXVzdCB1c2UgdGhhdCBleGlzdGluZyBtb2R1bGUuICAoT3RoZXJ3aXNlLAorICAgOmZ1bmM6YGltcC5yZWxvYWRgIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5LikgIElmIHRoZSBuYW1lZCBtb2R1bGUgZG9lcworICAgbm90IGV4aXN0IGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIHRoZSBsb2FkZXIgbXVzdCBjcmVhdGUgYSBuZXcgbW9kdWxlCisgICBvYmplY3QgYW5kIGFkZCBpdCB0byA6ZGF0YTpgc3lzLm1vZHVsZXNgLgorCisgICBOb3RlIHRoYXQgdGhlIG1vZHVsZSAqbXVzdCogZXhpc3QgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYCBiZWZvcmUgdGhlIGxvYWRlcgorICAgZXhlY3V0ZXMgdGhlIG1vZHVsZSBjb2RlLiAgVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgdGhlIG1vZHVsZSBjb2RlIG1heQorICAgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGltcG9ydCBpdHNlbGY7IGFkZGluZyBpdCB0byA6ZGF0YTpgc3lzLm1vZHVsZXNgCisgICBiZWZvcmVoYW5kIHByZXZlbnRzIHVuYm91bmRlZCByZWN1cnNpb24gaW4gdGhlIHdvcnN0IGNhc2UgYW5kIG11bHRpcGxlCisgICBsb2FkaW5nIGluIHRoZSBiZXN0LgorCisgICBJZiBsb2FkaW5nIGZhaWxzLCB0aGUgbG9hZGVyIG11c3QgcmVtb3ZlIGFueSBtb2R1bGVzIGl0IGhhcyBpbnNlcnRlZCBpbnRvCisgICA6ZGF0YTpgc3lzLm1vZHVsZXNgLCBidXQgaXQgbXVzdCByZW1vdmUgKipvbmx5KiogdGhlIGZhaWxpbmcgbW9kdWxlLCBhbmQKKyAgIG9ubHkgaWYgdGhlIGxvYWRlciBpdHNlbGYgaGFzIGxvYWRlZCBpdCBleHBsaWNpdGx5LiAgQW55IG1vZHVsZSBhbHJlYWR5IGluCisgICB0aGUgOmRhdGE6YHN5cy5tb2R1bGVzYCBjYWNoZSwgYW5kIGFueSBtb2R1bGUgdGhhdCB3YXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZAorICAgYXMgYSBzaWRlLWVmZmVjdCwgbXVzdCByZW1haW4gaW4gdGhlIGNhY2hlLgorCisgKiBUaGUgbG9hZGVyIG1heSBzZXQgdGhlIGBgX19maWxlX19gYCBhdHRyaWJ1dGUgb2YgdGhlIG1vZHVsZS4gIElmIHNldCwgdGhpcworICAgYXR0cmlidXRlJ3MgdmFsdWUgbXVzdCBiZSBhIHN0cmluZy4gIFRoZSBsb2FkZXIgbWF5IG9wdCB0byBsZWF2ZQorICAgYGBfX2ZpbGVfX2BgIHVuc2V0IGlmIGl0IGhhcyBubyBzZW1hbnRpYyBtZWFuaW5nIChlLmcuIGEgbW9kdWxlIGxvYWRlZCBmcm9tCisgICBhIGRhdGFiYXNlKS4KKworICogVGhlIGxvYWRlciBtYXkgc2V0IHRoZSBgYF9fbmFtZV9fYGAgYXR0cmlidXRlIG9mIHRoZSBtb2R1bGUuICBXaGlsZSBub3QKKyAgIHJlcXVpcmVkLCBzZXR0aW5nIHRoaXMgYXR0cmlidXRlIGlzIGhpZ2hseSByZWNvbW1lbmRlZCBzbyB0aGF0IHRoZQorICAgOm1ldGg6YHJlcHIoKWAgb2YgdGhlIG1vZHVsZSBpcyBtb3JlIGluZm9ybWF0aXZlLgorCisgKiBJZiB0aGUgbW9kdWxlIGlzIGEgcGFja2FnZSAoZWl0aGVyIHJlZ3VsYXIgb3IgbmFtZXNwYWNlKSwgdGhlIGxvYWRlciBtdXN0CisgICBzZXQgdGhlIG1vZHVsZSBvYmplY3QncyBgYF9fcGF0aF9fYGAgYXR0cmlidXRlLiAgVGhlIHZhbHVlIG11c3QgYmUKKyAgIGl0ZXJhYmxlLCBidXQgbWF5IGJlIGVtcHR5IGlmIGBgX19wYXRoX19gYCBoYXMgbm8gZnVydGhlciBzaWduaWZpY2FuY2UKKyAgIHRvIHRoZSBsb2FkZXIuIElmIGBgX19wYXRoX19gYCBpcyBub3QgZW1wdHksIGl0IG11c3QgcHJvZHVjZSBzdHJpbmdzCisgICB3aGVuIGl0ZXJhdGVkIG92ZXIuIE1vcmUgZGV0YWlscyBvbiB0aGUgc2VtYW50aWNzIG9mIGBgX19wYXRoX19gYCBhcmUKKyAgIGdpdmVuIDpyZWY6YGJlbG93IDxwYWNrYWdlLXBhdGgtcnVsZXM+YC4KKworICogVGhlIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCB0byB0aGUgbG9hZGVyIG9iamVjdCB0aGF0IGxvYWRlZAorICAgdGhlIG1vZHVsZS4gIFRoaXMgaXMgbW9zdGx5IGZvciBpbnRyb3NwZWN0aW9uIGFuZCByZWxvYWRpbmcsIGJ1dCBjYW4gYmUKKyAgIHVzZWQgZm9yIGFkZGl0aW9uYWwgbG9hZGVyLXNwZWNpZmljIGZ1bmN0aW9uYWxpdHksIGZvciBleGFtcGxlIGdldHRpbmcKKyAgIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVyLgorCisgKiBUaGUgbW9kdWxlJ3MgYGBfX3BhY2thZ2VfX2BgIGF0dHJpYnV0ZSBzaG91bGQgYmUgc2V0LiAgSXRzIHZhbHVlIG11c3QgYmUgYQorICAgc3RyaW5nLCBidXQgaXQgY2FuIGJlIHRoZSBzYW1lIHZhbHVlIGFzIGl0cyBgYF9fbmFtZV9fYGAuICBJZiB0aGUgYXR0cmlidXRlCisgICBpcyBzZXQgdG8gYGBOb25lYGAgb3IgaXMgbWlzc2luZywgdGhlIGltcG9ydCBzeXN0ZW0gd2lsbCBmaWxsIGl0IGluIHdpdGggYQorICAgbW9yZSBhcHByb3ByaWF0ZSB2YWx1ZS4gIFdoZW4gdGhlIG1vZHVsZSBpcyBhIHBhY2thZ2UsIGl0cyBgYF9fcGFja2FnZV9fYGAKKyAgIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gaXRzIGBgX19uYW1lX19gYC4gIFdoZW4gdGhlIG1vZHVsZSBpcyBub3QgYSBwYWNrYWdlLAorICAgYGBfX3BhY2thZ2VfX2BgIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBmb3IgdG9wLWxldmVsIG1vZHVsZXMsIG9yCisgICBmb3Igc3VibW9kdWxlcywgdG8gdGhlIHBhcmVudCBwYWNrYWdlJ3MgbmFtZS4gIFNlZSA6cGVwOmAzNjZgIGZvciBmdXJ0aGVyCisgICBkZXRhaWxzLgorCisgICBUaGlzIGF0dHJpYnV0ZSBpcyB1c2VkIGluc3RlYWQgb2YgYGBfX25hbWVfX2BgIHRvIGNhbGN1bGF0ZSBleHBsaWNpdAorICAgcmVsYXRpdmUgaW1wb3J0cyBmb3IgbWFpbiBtb2R1bGVzLCBhcyBkZWZpbmVkIGluIDpwZXA6YDM2NmAuCisKKyAqIElmIHRoZSBtb2R1bGUgaXMgYSBQeXRob24gbW9kdWxlIChhcyBvcHBvc2VkIHRvIGEgYnVpbHQtaW4gbW9kdWxlIG9yIGEKKyAgIGR5bmFtaWNhbGx5IGxvYWRlZCBleHRlbnNpb24pLCB0aGUgbG9hZGVyIHNob3VsZCBleGVjdXRlIHRoZSBtb2R1bGUncyBjb2RlCisgICBpbiB0aGUgbW9kdWxlJ3MgZ2xvYmFsIG5hbWUgc3BhY2UgKGBgbW9kdWxlLl9fZGljdF9fYGApLgorCisKK01vZHVsZSByZXBycworLS0tLS0tLS0tLS0tCisKK0J5IGRlZmF1bHQsIGFsbCBtb2R1bGVzIGhhdmUgYSB1c2FibGUgcmVwciwgaG93ZXZlciBkZXBlbmRpbmcgb24gdGhlCithdHRyaWJ1dGVzIHNldCBhYm92ZSwgYW5kIGhvb2tzIGluIHRoZSBsb2FkZXIsIHlvdSBjYW4gbW9yZSBleHBsaWNpdGx5IGNvbnRyb2wKK3RoZSByZXByIG9mIG1vZHVsZSBvYmplY3RzLgorCitMb2FkZXJzIG1heSBpbXBsZW1lbnQgYSA6bWV0aDpgbW9kdWxlX3JlcHIoKWAgbWV0aG9kIHdoaWNoIHRha2VzIGEgc2luZ2xlCithcmd1bWVudCwgdGhlIG1vZHVsZSBvYmplY3QuICBXaGVuIGBgcmVwcihtb2R1bGUpYGAgaXMgY2FsbGVkIGZvciBhIG1vZHVsZQord2l0aCBhIGxvYWRlciBzdXBwb3J0aW5nIHRoaXMgcHJvdG9jb2wsIHdoYXRldmVyIGlzIHJldHVybmVkIGZyb20KK2BgbW9kdWxlLl9fbG9hZGVyX18ubW9kdWxlX3JlcHIobW9kdWxlKWBgIGlzIHJldHVybmVkIGFzIHRoZSBtb2R1bGUncyByZXByCit3aXRob3V0IGZ1cnRoZXIgcHJvY2Vzc2luZy4gIFRoaXMgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcuCisKK0lmIHRoZSBtb2R1bGUgaGFzIG5vIGBgX19sb2FkZXJfX2BgIGF0dHJpYnV0ZSwgb3IgdGhlIGxvYWRlciBoYXMgbm8KKzptZXRoOmBtb2R1bGVfcmVwcigpYCBtZXRob2QsIHRoZW4gdGhlIG1vZHVsZSBvYmplY3QgaW1wbGVtZW50YXRpb24gaXRzZWxmCit3aWxsIGNyYWZ0IGEgZGVmYXVsdCByZXByIHVzaW5nIHdoYXRldmVyIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZS4gIEl0IHdpbGwKK3RyeSB0byB1c2UgdGhlIGBgbW9kdWxlLl9fbmFtZV9fYGAsIGBgbW9kdWxlLl9fZmlsZV9fYGAsIGFuZAorYGBtb2R1bGUuX19sb2FkZXJfX2BgIGFzIGlucHV0IGludG8gdGhlIHJlcHIsIHdpdGggZGVmYXVsdHMgZm9yIHdoYXRldmVyCitpbmZvcm1hdGlvbiBpcyBtaXNzaW5nLgorCitIZXJlIGFyZSB0aGUgZXhhY3QgcnVsZXMgdXNlZDoKKworICogSWYgdGhlIG1vZHVsZSBoYXMgYSBgYF9fbG9hZGVyX19gYCBhbmQgdGhhdCBsb2FkZXIgaGFzIGEKKyAgIDptZXRoOmBtb2R1bGVfcmVwcigpYCBtZXRob2QsIGNhbGwgaXQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCwgd2hpY2ggaXMgdGhlCisgICBtb2R1bGUgb2JqZWN0LiAgVGhlIHZhbHVlIHJldHVybmVkIGlzIHVzZWQgYXMgdGhlIG1vZHVsZSdzIHJlcHIuCisKKyAqIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gOm1ldGg6YG1vZHVsZV9yZXByKClgLCB0aGUgZXhjZXB0aW9uIGlzIGNhdWdodAorICAgYW5kIGRpc2NhcmRlZCwgYW5kIHRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgbW9kdWxlJ3MgcmVwciBjb250aW51ZXMgYXMgaWYKKyAgIDptZXRoOmBtb2R1bGVfcmVwcigpYCBkaWQgbm90IGV4aXN0LgorCisgKiBJZiB0aGUgbW9kdWxlIGhhcyBhIGBgX19maWxlX19gYCBhdHRyaWJ1dGUsIHRoaXMgaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZQorICAgbW9kdWxlJ3MgcmVwci4KKworICogSWYgdGhlIG1vZHVsZSBoYXMgbm8gYGBfX2ZpbGVfX2BgIGJ1dCBkb2VzIGhhdmUgYSBgYF9fbG9hZGVyX19gYCwgdGhlbiB0aGUKKyAgIGxvYWRlcidzIHJlcHIgaXMgdXNlZCBhcyBwYXJ0IG9mIHRoZSBtb2R1bGUncyByZXByLgorCisgKiBPdGhlcndpc2UsIGp1c3QgdXNlIHRoZSBtb2R1bGUncyBgYF9fbmFtZV9fYGAgaW4gdGhlIHJlcHIuCisKK1RoaXMgZXhhbXBsZSwgZnJvbSA6cGVwOmA0MjBgIHNob3dzIGhvdyBhIGxvYWRlciBjYW4gY3JhZnQgaXRzIG93biBtb2R1bGUKK3JlcHI6OgorCisgICAgY2xhc3MgTmFtZXNwYWNlTG9hZGVyOgorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgICAgIHJldHVybiAiPG1vZHVsZSAne30nIChuYW1lc3BhY2UpPiIuZm9ybWF0KG1vZHVsZS5fX25hbWVfXykKKworCisuLiBfcGFja2FnZS1wYXRoLXJ1bGVzOgorCittb2R1bGUuX19wYXRoX18KKy0tLS0tLS0tLS0tLS0tLQorCitCeSBkZWZpbml0aW9uLCBpZiBhIG1vZHVsZSBoYXMgYW4gYGBfX3BhdGhfX2BgIGF0dHJpYnV0ZSwgaXQgaXMgYSBwYWNrYWdlLAorcmVnYXJkbGVzcyBvZiBpdHMgdmFsdWUuCisKK0EgcGFja2FnZSdzIGBgX19wYXRoX19gYCBhdHRyaWJ1dGUgaXMgdXNlZCBkdXJpbmcgaW1wb3J0cyBvZiBpdHMgc3VicGFja2FnZXMuCitXaXRoaW4gdGhlIGltcG9ydCBtYWNoaW5lcnksIGl0IGZ1bmN0aW9ucyBtdWNoIHRoZSBzYW1lIGFzIDpkYXRhOmBzeXMucGF0aGAsCitpLmUuIHByb3ZpZGluZyBhIGxpc3Qgb2YgbG9jYXRpb25zIHRvIHNlYXJjaCBmb3IgbW9kdWxlcyBkdXJpbmcgaW1wb3J0LgorSG93ZXZlciwgYGBfX3BhdGhfX2BgIGlzIHR5cGljYWxseSBtdWNoIG1vcmUgY29uc3RyYWluZWQgdGhhbgorOmRhdGE6YHN5cy5wYXRoYC4KKworYGBfX3BhdGhfX2BgIG11c3QgYmUgYW4gaXRlcmFibGUgb2Ygc3RyaW5ncywgYnV0IGl0IG1heSBiZSBlbXB0eS4KK1RoZSBzYW1lIHJ1bGVzIHVzZWQgZm9yIDpkYXRhOmBzeXMucGF0aGAgYWxzbyBhcHBseSB0byBhIHBhY2thZ2UncworYGBfX3BhdGhfX2BgLCBhbmQgOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCAoZGVzY3JpYmVkIGJlbG93KSBhcmUKK2NvbnN1bHRlZCB3aGVuIHRyYXZlcnNpbmcgYSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgLgorCitBIHBhY2thZ2UncyBgYF9faW5pdF9fLnB5YGAgZmlsZSBtYXkgc2V0IG9yIGFsdGVyIHRoZSBwYWNrYWdlJ3MgYGBfX3BhdGhfX2BgCithdHRyaWJ1dGUsIGFuZCB0aGlzIHdhcyB0eXBpY2FsbHkgdGhlIHdheSBuYW1lc3BhY2UgcGFja2FnZXMgd2VyZSBpbXBsZW1lbnRlZAorcHJpb3IgdG8gOnBlcDpgNDIwYC4gIFdpdGggdGhlIGFkb3B0aW9uIG9mIDpwZXA6YDQyMGAsIG5hbWVzcGFjZSBwYWNrYWdlcyBubworbG9uZ2VyIG5lZWQgdG8gc3VwcGx5IGBgX19pbml0X18ucHlgYCBmaWxlcyBjb250YWluaW5nIG9ubHkgYGBfX3BhdGhfX2BgCittYW5pcHVsYXRpb24gY29kZTsgdGhlIG5hbWVzcGFjZSBsb2FkZXIgYXV0b21hdGljYWxseSBzZXRzIGBgX19wYXRoX19gYAorY29ycmVjdGx5IGZvciB0aGUgbmFtZXNwYWNlIHBhY2thZ2UuCisKKworVGhlIFBhdGggQmFzZWQgRmluZGVyCis9PT09PT09PT09PT09PT09PT09PT0KKworLi4gaW5kZXg6OgorICAgIHNpbmdsZTogcGF0aCBiYXNlZCBmaW5kZXIKKworQXMgbWVudGlvbmVkIHByZXZpb3VzbHksIFB5dGhvbiBjb21lcyB3aXRoIHNldmVyYWwgZGVmYXVsdCBtZXRhIHBhdGggZmluZGVycy4KK09uZSBvZiB0aGVzZSwgY2FsbGVkIHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgLCBzZWFyY2hlcyBhbiA6dGVybTpgaW1wb3J0CitwYXRoYCwgd2hpY2ggY29udGFpbnMgYSBsaXN0IG9mIDp0ZXJtOmBwYXRoIGVudHJpZXMgPHBhdGggZW50cnk+YC4gIEVhY2ggcGF0aAorZW50cnkgbmFtZXMgYSBsb2NhdGlvbiB0byBzZWFyY2ggZm9yIG1vZHVsZXMuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBpdHNlbGYgZG9lc24ndCBrbm93IGhvdyB0byBpbXBvcnQgYW55dGhpbmcuIEluc3RlYWQsIGl0Cit0cmF2ZXJzZXMgdGhlIGluZGl2aWR1YWwgcGF0aCBlbnRyaWVzLCBhc3NvY2lhdGluZyBlYWNoIG9mIHRoZW0gd2l0aCBhCitwYXRoIGVudHJ5IGZpbmRlciB0aGF0IGtub3dzIGhvdyB0byBoYW5kbGUgdGhhdCBwYXJ0aWN1bGFyIGtpbmQgb2YgcGF0aC4KKworVGhlIGRlZmF1bHQgc2V0IG9mIHBhdGggZW50cnkgZmluZGVycyBpbXBsZW1lbnQgYWxsIHRoZSBzZW1hbnRpY3MgZm9yIGZpbmRpbmcKK21vZHVsZXMgb24gdGhlIGZpbGUgc3lzdGVtLCBoYW5kbGluZyBzcGVjaWFsIGZpbGUgdHlwZXMgc3VjaCBhcyBQeXRob24gc291cmNlCitjb2RlIChgYC5weWBgIGZpbGVzKSwgUHl0aG9uIGJ5dGUgY29kZSAoYGAucHljYGAgYW5kIGBgLnB5b2BgIGZpbGVzKSBhbmQKK3NoYXJlZCBsaWJyYXJpZXMgKGUuZy4gYGAuc29gYCBmaWxlcykuIFdoZW4gc3VwcG9ydGVkIGJ5IHRoZSA6bW9kOmB6aXBpbXBvcnRgCittb2R1bGUgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnksIHRoZSBkZWZhdWx0IHBhdGggZW50cnkgZmluZGVycyBhbHNvIGhhbmRsZQorbG9hZGluZyBhbGwgb2YgdGhlc2UgZmlsZSB0eXBlcyAob3RoZXIgdGhhbiBzaGFyZWQgbGlicmFyaWVzKSBmcm9tIHppcGZpbGVzLgorCitQYXRoIGVudHJpZXMgbmVlZCBub3QgYmUgbGltaXRlZCB0byBmaWxlIHN5c3RlbSBsb2NhdGlvbnMuICBUaGV5IGNhbiByZWZlciB0bworVVJMcywgZGF0YWJhc2UgcXVlcmllcywgb3IgYW55IG90aGVyIGxvY2F0aW9uIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhCitzdHJpbmcuCisKK1RoZSBwYXRoIGJhc2VkIGZpbmRlciBwcm92aWRlcyBhZGRpdGlvbmFsIGhvb2tzIGFuZCBwcm90b2NvbHMgc28gdGhhdCB5b3UKK2NhbiBleHRlbmQgYW5kIGN1c3RvbWl6ZSB0aGUgdHlwZXMgb2Ygc2VhcmNoYWJsZSBwYXRoIGVudHJpZXMuICBGb3IgZXhhbXBsZSwKK2lmIHlvdSB3YW50ZWQgdG8gc3VwcG9ydCBwYXRoIGVudHJpZXMgYXMgbmV0d29yayBVUkxzLCB5b3UgY291bGQgd3JpdGUgYSBob29rCit0aGF0IGltcGxlbWVudHMgSFRUUCBzZW1hbnRpY3MgdG8gZmluZCBtb2R1bGVzIG9uIHRoZSB3ZWIuICBUaGlzIGhvb2sgKGEKK2NhbGxhYmxlKSB3b3VsZCByZXR1cm4gYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgIHN1cHBvcnRpbmcgdGhlIHByb3RvY29sCitkZXNjcmliZWQgYmVsb3csIHdoaWNoIHdhcyB0aGVuIHVzZWQgdG8gZ2V0IGEgbG9hZGVyIGZvciB0aGUgbW9kdWxlIGZyb20gdGhlCit3ZWIuCisKK0Egd29yZCBvZiB3YXJuaW5nOiB0aGlzIHNlY3Rpb24gYW5kIHRoZSBwcmV2aW91cyBib3RoIHVzZSB0aGUgdGVybSAqZmluZGVyKiwKK2Rpc3Rpbmd1aXNoaW5nIGJldHdlZW4gdGhlbSBieSB1c2luZyB0aGUgdGVybXMgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgIGFuZAorOnRlcm06YHBhdGggZW50cnkgZmluZGVyYC4gIFRoZXNlIHR3byB0eXBlcyBvZiBmaW5kZXJzIGFyZSB2ZXJ5IHNpbWlsYXIsCitzdXBwb3J0IHNpbWlsYXIgcHJvdG9jb2xzLCBhbmQgZnVuY3Rpb24gaW4gc2ltaWxhciB3YXlzIGR1cmluZyB0aGUgaW1wb3J0Citwcm9jZXNzLCBidXQgaXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kIHRoYXQgdGhleSBhcmUgc3VidGx5IGRpZmZlcmVudC4KK0luIHBhcnRpY3VsYXIsIG1ldGEgcGF0aCBmaW5kZXJzIG9wZXJhdGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgaW1wb3J0Citwcm9jZXNzLCBhcyBrZXllZCBvZmYgdGhlIDpkYXRhOmBzeXMubWV0YV9wYXRoYCB0cmF2ZXJzYWwuCisKK0J5IGNvbnRyYXN0LCBwYXRoIGVudHJ5IGZpbmRlcnMgYXJlIGluIGEgc2Vuc2UgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsCitvZiB0aGUgcGF0aCBiYXNlZCBmaW5kZXIsIGFuZCBpbiBmYWN0LCBpZiB0aGUgcGF0aCBiYXNlZCBmaW5kZXIgd2VyZSB0byBiZQorcmVtb3ZlZCBmcm9tIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgbm9uZSBvZiB0aGUgcGF0aCBlbnRyeSBmaW5kZXIgc2VtYW50aWNzCit3b3VsZCBiZSBpbnZva2VkLgorCisKK1BhdGggZW50cnkgZmluZGVycworLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIGluZGV4OjoKKyAgICBzaW5nbGU6IHN5cy5wYXRoCisgICAgc2luZ2xlOiBzeXMucGF0aF9ob29rcworICAgIHNpbmdsZTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKKyAgICBzaW5nbGU6IFBZVEhPTlBBVEgKKworVGhlIDp0ZXJtOmBwYXRoIGJhc2VkIGZpbmRlcmAgaXMgcmVzcG9uc2libGUgZm9yIGZpbmRpbmcgYW5kIGxvYWRpbmcgUHl0aG9uCittb2R1bGVzIGFuZCBwYWNrYWdlcyB3aG9zZSBsb2NhdGlvbiBpcyBzcGVjaWZpZWQgd2l0aCBhIHN0cmluZyA6dGVybTpgcGF0aAorZW50cnlgLiAgTW9zdCBwYXRoIGVudHJpZXMgbmFtZSBsb2NhdGlvbnMgaW4gdGhlIGZpbGUgc3lzdGVtLCBidXQgdGhleSBuZWVkCitub3QgYmUgbGltaXRlZCB0byB0aGlzLgorCitBcyBhIG1ldGEgcGF0aCBmaW5kZXIsIHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGltcGxlbWVudHMgdGhlCis6bWV0aDpgZmluZF9tb2R1bGUoKWAgcHJvdG9jb2wgcHJldmlvdXNseSBkZXNjcmliZWQsIGhvd2V2ZXIgaXQgZXhwb3NlcworYWRkaXRpb25hbCBob29rcyB0aGF0IGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSBob3cgbW9kdWxlcyBhcmUgZm91bmQgYW5kCitsb2FkZWQgZnJvbSB0aGUgOnRlcm06YGltcG9ydCBwYXRoYC4KKworVGhyZWUgdmFyaWFibGVzIGFyZSB1c2VkIGJ5IHRoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgLCA6ZGF0YTpgc3lzLnBhdGhgLAorOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBhbmQgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4gIFRoZSBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZXMgb24gcGFja2FnZSBvYmplY3RzIGFyZSBhbHNvIHVzZWQuICBUaGVzZSBwcm92aWRlIGFkZGl0aW9uYWwgd2F5cwordGhhdCB0aGUgaW1wb3J0IG1hY2hpbmVyeSBjYW4gYmUgY3VzdG9taXplZC4KKworOmRhdGE6YHN5cy5wYXRoYCBjb250YWlucyBhIGxpc3Qgb2Ygc3RyaW5ncyBwcm92aWRpbmcgc2VhcmNoIGxvY2F0aW9ucyBmb3IKK21vZHVsZXMgYW5kIHBhY2thZ2VzLiAgSXQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgOmRhdGE6YFBZVEhPTlBBVEhgCitlbnZpcm9ubWVudCB2YXJpYWJsZSBhbmQgdmFyaW91cyBvdGhlciBpbnN0YWxsYXRpb24tIGFuZAoraW1wbGVtZW50YXRpb24tc3BlY2lmaWMgZGVmYXVsdHMuICBFbnRyaWVzIGluIDpkYXRhOmBzeXMucGF0aGAgY2FuIG5hbWUKK2RpcmVjdG9yaWVzIG9uIHRoZSBmaWxlIHN5c3RlbSwgemlwIGZpbGVzLCBhbmQgcG90ZW50aWFsbHkgb3RoZXIgImxvY2F0aW9ucyIKKyhzZWUgdGhlIDptb2Q6YHNpdGVgIG1vZHVsZSkgdGhhdCBzaG91bGQgYmUgc2VhcmNoZWQgZm9yIG1vZHVsZXMsIHN1Y2ggYXMKK1VSTHMsIG9yIGRhdGFiYXNlIHF1ZXJpZXMuCisKK1RoZSA6dGVybTpgcGF0aCBiYXNlZCBmaW5kZXJgIGlzIGEgOnRlcm06YG1ldGEgcGF0aCBmaW5kZXJgLCBzbyB0aGUgaW1wb3J0CittYWNoaW5lcnkgYmVnaW5zIHRoZSA6dGVybTpgaW1wb3J0IHBhdGhgIHNlYXJjaCBieSBjYWxsaW5nIHRoZSBwYXRoCitiYXNlZCBmaW5kZXIncyA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIGFzIGRlc2NyaWJlZCBwcmV2aW91c2x5LiAgV2hlbgordGhlIGBgcGF0aGBgIGFyZ3VtZW50IHRvIDptZXRoOmBmaW5kX21vZHVsZSgpYCBpcyBnaXZlbiwgaXQgd2lsbCBiZSBhCitsaXN0IG9mIHN0cmluZyBwYXRocyB0byB0cmF2ZXJzZSAtIHR5cGljYWxseSBhIHBhY2thZ2UncyBgYF9fcGF0aF9fYGAKK2F0dHJpYnV0ZSBmb3IgYW4gaW1wb3J0IHdpdGhpbiB0aGF0IHBhY2thZ2UuICBJZiB0aGUgYGBwYXRoYGAgYXJndW1lbnQKK2lzIGBgTm9uZWBgLCB0aGlzIGluZGljYXRlcyBhIHRvcCBsZXZlbCBpbXBvcnQgYW5kIDpkYXRhOmBzeXMucGF0aGAgaXMgdXNlZC4KKworVGhlIHBhdGggYmFzZWQgZmluZGVyIGl0ZXJhdGVzIG92ZXIgZXZlcnkgZW50cnkgaW4gdGhlIHNlYXJjaCBwYXRoLCBhbmQKK2ZvciBlYWNoIG9mIHRoZXNlLCBsb29rcyBmb3IgYW4gYXBwcm9wcmlhdGUgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBmb3IgdGhlCitwYXRoIGVudHJ5LiAgQmVjYXVzZSB0aGlzIGNhbiBiZSBhbiBleHBlbnNpdmUgb3BlcmF0aW9uIChlLmcuIHRoZXJlIG1heSBiZQorYHN0YXQoKWAgY2FsbCBvdmVyaGVhZHMgZm9yIHRoaXMgc2VhcmNoKSwgdGhlIHBhdGggYmFzZWQgZmluZGVyIG1haW50YWlucworYSBjYWNoZSBtYXBwaW5nIHBhdGggZW50cmllcyB0byBwYXRoIGVudHJ5IGZpbmRlcnMuICBUaGlzIGNhY2hlIGlzIG1haW50YWluZWQKK2luIDpkYXRhOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgKGRlc3BpdGUgdGhlIG5hbWUsIHRoaXMgY2FjaGUgYWN0dWFsbHkKK3N0b3JlcyBmaW5kZXIgb2JqZWN0cyByYXRoZXIgdGhhbiBiZWluZyBsaW1pdGVkIHRvIDp0ZXJtOmBpbXBvcnRlcmAgb2JqZWN0cykuCitJbiB0aGlzIHdheSwgdGhlIGV4cGVuc2l2ZSBzZWFyY2ggZm9yIGEgcGFydGljdWxhciA6dGVybTpgcGF0aCBlbnRyeWAKK2xvY2F0aW9uJ3MgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCBuZWVkIG9ubHkgYmUgZG9uZSBvbmNlLiAgVXNlciBjb2RlIGlzCitmcmVlIHRvIHJlbW92ZSBjYWNoZSBlbnRyaWVzIGZyb20gOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBmb3JjaW5nCit0aGUgcGF0aCBiYXNlZCBmaW5kZXIgdG8gcGVyZm9ybSB0aGUgcGF0aCBlbnRyeSBzZWFyY2ggYWdhaW4gWyNmbnBpY11fLgorCitJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgcHJlc2VudCBpbiB0aGUgY2FjaGUsIHRoZSBwYXRoIGJhc2VkIGZpbmRlciBpdGVyYXRlcworb3ZlciBldmVyeSBjYWxsYWJsZSBpbiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgLiAgRWFjaCBvZiB0aGUKKzp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tzIDxwYXRoIGVudHJ5IGhvb2s+YCBpbiB0aGlzIGxpc3QgaXMgY2FsbGVkIHdpdGggYQorc2luZ2xlIGFyZ3VtZW50LCB0aGUgcGF0aCBlbnRyeSB0byBiZSBzZWFyY2hlZC4gIFRoaXMgY2FsbGFibGUgbWF5IGVpdGhlcgorcmV0dXJuIGEgOnRlcm06YHBhdGggZW50cnkgZmluZGVyYCB0aGF0IGNhbiBoYW5kbGUgdGhlIHBhdGggZW50cnksIG9yIGl0IG1heQorcmFpc2UgOmV4YzpgSW1wb3J0RXJyb3JgLgorQW4gOmV4YzpgSW1wb3J0RXJyb3JgIGlzIHVzZWQgYnkgdGhlIHBhdGggYmFzZWQgZmluZGVyIHRvIHNpZ25hbCB0aGF0IHRoZSBob29rCitjYW5ub3QgZmluZCBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgZm9yIHRoYXQgOnRlcm06YHBhdGggZW50cnlgLiAgVGhlCitleGNlcHRpb24gaXMgaWdub3JlZCBhbmQgOnRlcm06YGltcG9ydCBwYXRoYCBpdGVyYXRpb24gY29udGludWVzLgorCitJZiA6ZGF0YTpgc3lzLnBhdGhfaG9va3NgIGl0ZXJhdGlvbiBlbmRzIHdpdGggbm8gOnRlcm06YHBhdGggZW50cnkgZmluZGVyYAorYmVpbmcgcmV0dXJuZWQsIHRoZW4gdGhlIHBhdGggYmFzZWQgZmluZGVyJ3MgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZAord2lsbCBzdG9yZSBgYE5vbmVgYCBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgICh0byBpbmRpY2F0ZSB0aGF0Cit0aGVyZSBpcyBubyBmaW5kZXIgZm9yIHRoaXMgcGF0aCBlbnRyeSkgYW5kIHJldHVybiBgYE5vbmVgYCwgaW5kaWNhdGluZyB0aGF0Cit0aGlzIDp0ZXJtOmBtZXRhIHBhdGggZmluZGVyYCBjb3VsZCBub3QgZmluZCB0aGUgbW9kdWxlLgorCitJZiBhIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcmAgKmlzKiByZXR1cm5lZCBieSBvbmUgb2YgdGhlIDp0ZXJtOmBwYXRoIGVudHJ5Citob29rYCBjYWxsYWJsZXMgb24gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCwgdGhlbiB0aGUgZm9sbG93aW5nIHByb3RvY29sIGlzIHVzZWQKK3RvIGFzayB0aGUgZmluZGVyIGZvciBhIG1vZHVsZSBsb2FkZXIsIHdoaWNoIGlzIHRoZW4gdXNlZCB0byBsb2FkIHRoZSBtb2R1bGUuCisKKworUGF0aCBlbnRyeSBmaW5kZXIgcHJvdG9jb2wKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0luIG9yZGVyIHRvIHN1cHBvcnQgaW1wb3J0cyBvZiBtb2R1bGVzIGFuZCBpbml0aWFsaXplZCBwYWNrYWdlcyBhbmQgYWxzbyB0bworY29udHJpYnV0ZSBwb3J0aW9ucyB0byBuYW1lc3BhY2UgcGFja2FnZXMsIHBhdGggZW50cnkgZmluZGVycyBtdXN0IGltcGxlbWVudAordGhlIDptZXRoOmBmaW5kX2xvYWRlcigpYCBtZXRob2QuCisKKzptZXRoOmBmaW5kX2xvYWRlcigpYCB0YWtlcyBvbmUgYXJndW1lbnQsIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUKK21vZHVsZSBiZWluZyBpbXBvcnRlZC4gIDptZXRoOmBmaW5kX2xvYWRlcigpYCByZXR1cm5zIGEgMi10dXBsZSB3aGVyZSB0aGUKK2ZpcnN0IGl0ZW0gaXMgdGhlIGxvYWRlciBhbmQgdGhlIHNlY29uZCBpdGVtIGlzIGEgbmFtZXNwYWNlIDp0ZXJtOmBwb3J0aW9uYC4KK1doZW4gdGhlIGZpcnN0IGl0ZW0gKGkuZS4gdGhlIGxvYWRlcikgaXMgYGBOb25lYGAsIHRoaXMgbWVhbnMgdGhhdCB3aGlsZSB0aGUKK3BhdGggZW50cnkgZmluZGVyIGRvZXMgbm90IGhhdmUgYSBsb2FkZXIgZm9yIHRoZSBuYW1lZCBtb2R1bGUsIGl0IGtub3dzIHRoYXQgdGhlCitwYXRoIGVudHJ5IGNvbnRyaWJ1dGVzIHRvIGEgbmFtZXNwYWNlIHBvcnRpb24gZm9yIHRoZSBuYW1lZCBtb2R1bGUuICBUaGlzIHdpbGwKK2FsbW9zdCBhbHdheXMgYmUgdGhlIGNhc2Ugd2hlcmUgUHl0aG9uIGlzIGFza2VkIHRvIGltcG9ydCBhIG5hbWVzcGFjZSBwYWNrYWdlCit0aGF0IGhhcyBubyBwaHlzaWNhbCBwcmVzZW5jZSBvbiB0aGUgZmlsZSBzeXN0ZW0uICBXaGVuIGEgcGF0aCBlbnRyeSBmaW5kZXIKK3JldHVybnMgYGBOb25lYGAgZm9yIHRoZSBsb2FkZXIsIHRoZSBzZWNvbmQgaXRlbSBvZiB0aGUgMi10dXBsZSByZXR1cm4gdmFsdWUKK211c3QgYmUgYSBzZXF1ZW5jZSwgYWx0aG91Z2ggaXQgY2FuIGJlIGVtcHR5LgorCitJZiA6bWV0aDpgZmluZF9sb2FkZXIoKWAgcmV0dXJucyBhIG5vbi1gYE5vbmVgYCBsb2FkZXIgdmFsdWUsIHRoZSBwb3J0aW9uIGlzCitpZ25vcmVkIGFuZCB0aGUgbG9hZGVyIGlzIHJldHVybmVkIGZyb20gdGhlIHBhdGggYmFzZWQgZmluZGVyLCB0ZXJtaW5hdGluZwordGhlIHNlYXJjaCB0aHJvdWdoIHRoZSBwYXRoIGVudHJpZXMuCisKK0ZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgaW1wb3J0Citwcm90b2NvbCwgbWFueSBwYXRoIGVudHJ5IGZpbmRlcnMgYWxzbyBzdXBwb3J0IHRoZSBzYW1lLAordHJhZGl0aW9uYWwgOm1ldGg6YGZpbmRfbW9kdWxlKClgIG1ldGhvZCB0aGF0IG1ldGEgcGF0aCBmaW5kZXJzIHN1cHBvcnQuCitIb3dldmVyIHBhdGggZW50cnkgZmluZGVyIDptZXRoOmBmaW5kX21vZHVsZSgpYCBtZXRob2RzIGFyZSBuZXZlciBjYWxsZWQKK3dpdGggYSBgYHBhdGhgYCBhcmd1bWVudCAodGhleSBhcmUgZXhwZWN0ZWQgdG8gcmVjb3JkIHRoZSBhcHByb3ByaWF0ZQorcGF0aCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbml0aWFsIGNhbGwgdG8gdGhlIHBhdGggaG9vaykuCisKK1RoZSA6bWV0aDpgZmluZF9tb2R1bGUoKWAgbWV0aG9kIG9uIHBhdGggZW50cnkgZmluZGVycyBpcyBkZXByZWNhdGVkLAorYXMgaXQgZG9lcyBub3QgYWxsb3cgdGhlIHBhdGggZW50cnkgZmluZGVyIHRvIGNvbnRyaWJ1dGUgcG9ydGlvbnMgdG8KK25hbWVzcGFjZSBwYWNrYWdlcy4gSW5zdGVhZCBwYXRoIGVudHJ5IGZpbmRlcnMgc2hvdWxkIGltcGxlbWVudCB0aGUKKzptZXRoOmBmaW5kX2xvYWRlcigpYCBtZXRob2QgYXMgZGVzY3JpYmVkIGFib3ZlLiBJZiBpdCBleGlzdHMgb24gdGhlIHBhdGgKK2VudHJ5IGZpbmRlciwgdGhlIGltcG9ydCBzeXN0ZW0gd2lsbCBhbHdheXMgY2FsbCA6bWV0aDpgZmluZF9sb2FkZXIoKWAKK2luIHByZWZlcmVuY2UgdG8gOm1ldGg6YGZpbmRfbW9kdWxlKClgLgorCisKK1JlcGxhY2luZyB0aGUgc3RhbmRhcmQgaW1wb3J0IHN5c3RlbQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1RoZSBtb3N0IHJlbGlhYmxlIG1lY2hhbmlzbSBmb3IgcmVwbGFjaW5nIHRoZSBlbnRpcmUgaW1wb3J0IHN5c3RlbSBpcyB0bworZGVsZXRlIHRoZSBkZWZhdWx0IGNvbnRlbnRzIG9mIDpkYXRhOmBzeXMubWV0YV9wYXRoYCwgcmVwbGFjaW5nIHRoZW0KK2VudGlyZWx5IHdpdGggYSBjdXN0b20gbWV0YSBwYXRoIGhvb2suCisKK0lmIGl0IGlzIGFjY2VwdGFibGUgdG8gb25seSBhbHRlciB0aGUgYmVoYXZpb3VyIG9mIGltcG9ydCBzdGF0ZW1lbnRzCit3aXRob3V0IGFmZmVjdGluZyBvdGhlciBBUElzIHRoYXQgYWNjZXNzIHRoZSBpbXBvcnQgc3lzdGVtLCB0aGVuIHJlcGxhY2luZwordGhlIGJ1aWx0aW4gOmZ1bmM6YF9faW1wb3J0X19gIGZ1bmN0aW9uIG1heSBiZSBzdWZmaWNpZW50LiBUaGlzIHRlY2huaXF1ZQorbWF5IGFsc28gYmUgZW1wbG95ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbCB0byBvbmx5IGFsdGVyIHRoZSBiZWhhdmlvdXIgb2YKK2ltcG9ydCBzdGF0ZW1lbnRzIHdpdGhpbiB0aGF0IG1vZHVsZS4KKworVG8gc2VsZWN0aXZlbHkgcHJldmVudCBpbXBvcnQgb2Ygc29tZSBtb2R1bGVzIGZyb20gYSBob29rIGVhcmx5IG9uIHRoZQorbWV0YSBwYXRoIChyYXRoZXIgdGhhbiBkaXNhYmxpbmcgdGhlIHN0YW5kYXJkIGltcG9ydCBzeXN0ZW0gZW50aXJlbHkpLAoraXQgaXMgc3VmZmljaWVudCB0byByYWlzZSA6ZXhjOmBJbXBvcnRFcnJvcmAgZGlyZWN0bHkgZnJvbQorOm1ldGg6YGZpbmRfbW9kdWxlYCBpbnN0ZWFkIG9mIHJldHVybmluZyBgYE5vbmVgYC4gVGhlIGxhdHRlciBpbmRpY2F0ZXMKK3RoYXQgdGhlIG1ldGEgcGF0aCBzZWFyY2ggc2hvdWxkIGNvbnRpbnVlLiB3aGlsZSByYWlzaW5nIGFuIGV4Y2VwdGlvbgordGVybWluYXRlcyBpdCBpbW1lZGlhdGVseS4KKworCitPcGVuIGlzc3VlcworPT09PT09PT09PT0KKworWFhYIEl0IHdvdWxkIGJlIHJlYWxseSBuaWNlIHRvIGhhdmUgYSBkaWFncmFtLgorCitYWFggKiAoaW1wb3J0X21hY2hpbmVyeS5yc3QpIGhvdyBhYm91dCBhIHNlY3Rpb24gZGV2b3RlZCBqdXN0IHRvIHRoZQorYXR0cmlidXRlcyBvZiBtb2R1bGVzIGFuZCBwYWNrYWdlcywgcGVyaGFwcyBleHBhbmRpbmcgdXBvbiBvciBzdXBwbGFudGluZyB0aGUKK3JlbGF0ZWQgZW50cmllcyBpbiB0aGUgZGF0YSBtb2RlbCByZWZlcmVuY2UgcGFnZT8KKworWFhYIHJ1bnB5LCBwa2d1dGlsLCBldCBhbCBpbiB0aGUgbGlicmFyeSBtYW51YWwgc2hvdWxkIGFsbCBnZXQgIlNlZSBBbHNvIgorbGlua3MgYXQgdGhlIHRvcCBwb2ludGluZyB0byB0aGUgbmV3IGltcG9ydCBzeXN0ZW0gc2VjdGlvbi4KKworCitSZWZlcmVuY2VzCis9PT09PT09PT09CisKK1RoZSBpbXBvcnQgbWFjaGluZXJ5IGhhcyBldm9sdmVkIGNvbnNpZGVyYWJseSBzaW5jZSBQeXRob24ncyBlYXJseSBkYXlzLiAgVGhlCitvcmlnaW5hbCBgc3BlY2lmaWNhdGlvbiBmb3IgcGFja2FnZXMKKzxodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG9jL2Vzc2F5cy9wYWNrYWdlcy5odG1sPmBfIGlzIHN0aWxsIGF2YWlsYWJsZSB0byByZWFkLAorYWx0aG91Z2ggc29tZSBkZXRhaWxzIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgd3JpdGluZyBvZiB0aGF0IGRvY3VtZW50LgorCitUaGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbiBmb3IgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIHdhcyA6cGVwOmAzMDJgLCB3aXRoCitzdWJzZXF1ZW50IGV4dGVuc2lvbiBpbiA6cGVwOmA0MjBgLgorCis6cGVwOmA0MjBgIGludHJvZHVjZWQgOnRlcm06YG5hbWVzcGFjZSBwYWNrYWdlcyA8bmFtZXNwYWNlIHBhY2thZ2U+YCBmb3IKK1B5dGhvbiAzLjMuICA6cGVwOmA0MjBgIGFsc28gaW50cm9kdWNlZCB0aGUgOm1ldGg6YGZpbmRfbG9hZGVyYCBwcm90b2NvbCBhcyBhbgorYWx0ZXJuYXRpdmUgdG8gOm1ldGg6YGZpbmRfbW9kdWxlYC4KKworOnBlcDpgMzY2YCBkZXNjcmliZXMgdGhlIGFkZGl0aW9uIG9mIHRoZSBgYF9fcGFja2FnZV9fYGAgYXR0cmlidXRlIGZvcgorZXhwbGljaXQgcmVsYXRpdmUgaW1wb3J0cyBpbiBtYWluIG1vZHVsZXMuCisKKzpwZXA6YDMyOGAgaW50cm9kdWNlZCBhYnNvbHV0ZSBhbmQgZXhwbGljaXQgcmVsYXRpdmUgaW1wb3J0cyBhbmQgaW5pdGlhbGx5Citwcm9wb3NlZCBgYF9fbmFtZV9fYGAgZm9yIHNlbWFudGljcyA6cGVwOmAzNjZgIHdvdWxkIGV2ZW50dWFsbHkgc3BlY2lmeSBmb3IKK2BgX19wYWNrYWdlX19gYC4KKworOnBlcDpgMzM4YCBkZWZpbmVzIGV4ZWN1dGluZyBtb2R1bGVzIGFzIHNjcmlwdHMuCisKKworRm9vdG5vdGVzCis9PT09PT09PT0KKworLi4gWyNmbm1vXSBTZWUgOmNsYXNzOmB0eXBlcy5Nb2R1bGVUeXBlYC4KKworLi4gWyNmbmxvXSBUaGUgaW1wb3J0bGliIGltcGxlbWVudGF0aW9uIGF2b2lkcyB1c2luZyB0aGUgcmV0dXJuIHZhbHVlCisgICBkaXJlY3RseS4gSW5zdGVhZCwgaXQgZ2V0cyB0aGUgbW9kdWxlIG9iamVjdCBieSBsb29raW5nIHRoZSBtb2R1bGUgbmFtZSB1cAorICAgaW4gOmRhdGE6YHN5cy5tb2R1bGVzYC4gIFRoZSBpbmRpcmVjdCBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0IGFuIGltcG9ydGVkCisgICBtb2R1bGUgbWF5IHJlcGxhY2UgaXRzZWxmIGluIDpkYXRhOmBzeXMubW9kdWxlc2AuICBUaGlzIGlzCisgICBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBiZWhhdmlvciB0aGF0IGlzIG5vdCBndWFyYW50ZWVkIHRvIHdvcmsgaW4gb3RoZXIKKyAgIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMuCisKKy4uIFsjZm5waWNdIEluIGxlZ2FjeSBjb2RlLCBpdCBpcyBwb3NzaWJsZSB0byBmaW5kIGluc3RhbmNlcyBvZgorICAgOmNsYXNzOmBpbXAuTnVsbEltcG9ydGVyYCBpbiB0aGUgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYC4gIEl0CisgICBpcyByZWNvbW1lbmRlZCB0aGF0IGNvZGUgYmUgY2hhbmdlZCB0byB1c2UgYGBOb25lYGAgaW5zdGVhZC4gIFNlZQorICAgOnJlZjpgcG9ydGluZ3B5dGhvbmNvZGVgIGZvciBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2luZGV4LnJzdCBiL0RvYy9yZWZlcmVuY2UvaW5kZXgucnN0CmluZGV4IGJkMWEyODEuLjU1ZjkzZDcgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvaW5kZXgucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvaW5kZXgucnN0CkBAIC0yNCw2ICsyNCw3IEBACiAgICBsZXhpY2FsX2FuYWx5c2lzLnJzdAogICAgZGF0YW1vZGVsLnJzdAogICAgZXhlY3V0aW9ubW9kZWwucnN0CisgICBpbXBvcnQucnN0CiAgICBleHByZXNzaW9ucy5yc3QKICAgIHNpbXBsZV9zdG10cy5yc3QKICAgIGNvbXBvdW5kX3N0bXRzLnJzdApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKaW5kZXggNGI0OTczOC4uOTRmMjE5YiAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CkBAIC00MDEsNyArNDAxLDcgQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgc3RyaW5nbGl0ZXJhbDogW2BzdHJpbmdwcmVmaXhgXShgc2hvcnRzdHJpbmdgIHwgYGxvbmdzdHJpbmdgKQotICAgc3RyaW5ncHJlZml4OiAiciIgfCAiUiIKKyAgIHN0cmluZ3ByZWZpeDogInIiIHwgInUiIHwgIlIiIHwgIlUiCiAgICBzaG9ydHN0cmluZzogIiciIGBzaG9ydHN0cmluZ2l0ZW1gKiAiJyIgfCAnIicgYHNob3J0c3RyaW5naXRlbWAqICciJwogICAgbG9uZ3N0cmluZzogIicnJyIgYGxvbmdzdHJpbmdpdGVtYCogIicnJyIgfCAnIiIiJyBgbG9uZ3N0cmluZ2l0ZW1gKiAnIiIiJwogICAgc2hvcnRzdHJpbmdpdGVtOiBgc2hvcnRzdHJpbmdjaGFyYCB8IGBzdHJpbmdlc2NhcGVzZXFgCkBAIC00MTIsNyArNDEyLDcgQEAKIAogLi4gcHJvZHVjdGlvbmxpc3Q6OgogICAgYnl0ZXNsaXRlcmFsOiBgYnl0ZXNwcmVmaXhgKGBzaG9ydGJ5dGVzYCB8IGBsb25nYnl0ZXNgKQotICAgYnl0ZXNwcmVmaXg6ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiIKKyAgIGJ5dGVzcHJlZml4OiAiYiIgfCAiQiIgfCAiYnIiIHwgIkJyIiB8ICJiUiIgfCAiQlIiIHwgInJiIiB8ICJyQiIgfCAiUmIiIHwgIlJCIgogICAgc2hvcnRieXRlczogIiciIGBzaG9ydGJ5dGVzaXRlbWAqICInIiB8ICciJyBgc2hvcnRieXRlc2l0ZW1gKiAnIicKICAgIGxvbmdieXRlczogIicnJyIgYGxvbmdieXRlc2l0ZW1gKiAiJycnIiB8ICciIiInIGBsb25nYnl0ZXNpdGVtYCogJyIiIicKICAgIHNob3J0Ynl0ZXNpdGVtOiBgc2hvcnRieXRlc2NoYXJgIHwgYGJ5dGVzZXNjYXBlc2VxYApAQCAtNDQxLDEwICs0NDEsMjQgQEAKIG1heSBvbmx5IGNvbnRhaW4gQVNDSUkgY2hhcmFjdGVyczsgYnl0ZXMgd2l0aCBhIG51bWVyaWMgdmFsdWUgb2YgMTI4IG9yIGdyZWF0ZXIKIG11c3QgYmUgZXhwcmVzc2VkIHdpdGggZXNjYXBlcy4KIAorQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggdW5pY29kZSBzdHJpbmdzIHdpdGggYQorYGB1YGAgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggY29kZWJhc2VzLgorCiBCb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhIGxldHRlciBgYCdyJ2BgCiBvciBgYCdSJ2BgOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCA6ZGZuOmByYXcgc3RyaW5nc2AgYW5kIHRyZWF0IGJhY2tzbGFzaGVzIGFzCiBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nIGxpdGVyYWxzLCBgYCdcVSdgYCBhbmQgYGAnXHUnYGAKLWVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS4KK2VzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkIHNwZWNpYWxseS4gR2l2ZW4gdGhhdCBQeXRob24gMi54J3MgcmF3Cit1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSB0aGFuIFB5dGhvbiAzLngncyB0aGUgYGAndXInYGAgc3ludGF4CitpcyBub3Qgc3VwcG9ydGVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKKyAgICAgIFRoZSBgYCdyYidgYCBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhcyBiZWVuIGFkZGVkIGFzIGEgc3lub255bQorICAgICAgb2YgYGAnYnInYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgU3VwcG9ydCBmb3IgdGhlIHVuaWNvZGUgbGVnYWN5IGxpdGVyYWwgKGBgdSd2YWx1ZSdgYCkgd2FzIHJlaW50cm9kdWNlZAorICAgICAgdG8gc2ltcGxpZnkgdGhlIG1haW50ZW5hbmNlIG9mIGR1YWwgUHl0aG9uIDIueCBhbmQgMy54IGNvZGViYXNlcy4KKyAgICAgIFNlZSA6cGVwOmA0MTRgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiBJbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkIChhbmQgYXJlCiByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3cgdGVybWluYXRlIHRoZSBzdHJpbmcuICAoQQpAQCAtNDkyLDEzICs1MDYsMTMgQEAKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIHwgRXNjYXBlIFNlcXVlbmNlIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHwKICs9PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKLXwgYGBcTntuYW1lfWBgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICB8ICAgICAgIHwKK3wgYGBcTntuYW1lfWBgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICB8IFwoNCkgIHwKIHwgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGBcdXh4eHhgYCAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSB8IFwoNCkgIHwKK3wgYGBcdXh4eHhgYCAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSB8IFwoNSkgIHwKIHwgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKLXwgYGBcVXh4eHh4eHh4YGAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSB8IFwoNSkgIHwKK3wgYGBcVXh4eHh4eHh4YGAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSB8IFwoNikgIHwKIHwgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKIApAQCAtNTE2LDEzICs1MzAsMTUgQEAKICAgIHdpdGggdGhlIGdpdmVuIHZhbHVlLgogCiAoNCkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWyNdXyBoYXMgYmVlbiBhZGRlZC4KKworKDUpCiAgICBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyIGNhbiBiZSBlbmNvZGVkIHVzaW5nCiAgICB0aGlzIGVzY2FwZSBzZXF1ZW5jZS4gIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC4KIAotKDUpCi0gICBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJhc2ljCi0gICBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGEgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzCi0gICBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZSBkZWZhdWx0KS4gIEV4YWN0bHkgZWlnaHQgaGV4IGRpZ2l0cworKDYpCisgICBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMKICAgIGFyZSByZXF1aXJlZC4KIAogCkBAIC03MDYsMyArNzIyLDggQEAKIG9jY3VycmVuY2Ugb3V0c2lkZSBzdHJpbmcgbGl0ZXJhbHMgYW5kIGNvbW1lbnRzIGlzIGFuIHVuY29uZGl0aW9uYWwgZXJyb3I6OgogCiAgICAkICAgICAgID8gICAgICAgYAorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvNi4xLjAvdWNkL05hbWVBbGlhc2VzLnR4dApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CmluZGV4IDczMTgzZDUuLjgxZGM3NDggMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKQEAgLTQyNCwxMCArNDI0LDEwIEBACiA6a2V5d29yZDpgZmluYWxseWAgY2xhdXNlLCB0aGF0IDprZXl3b3JkOmBmaW5hbGx5YCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlCiByZWFsbHkgbGVhdmluZyB0aGUgZnVuY3Rpb24uCiAKLUluIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgOmtleXdvcmQ6YHJldHVybmAgc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIHRvCi1pbmNsdWRlIGFuIDp0b2tlbjpgZXhwcmVzc2lvbl9saXN0YC4gIEluIHRoYXQgY29udGV4dCwgYSBiYXJlIDprZXl3b3JkOmByZXR1cm5gCi1pbmRpY2F0ZXMgdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgdG8gYmUKLXJhaXNlZC4KK0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgOmtleXdvcmQ6YHJldHVybmAgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZQorZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgOmV4YzpgU3RvcEl0ZXJhdGlvbmAgdG8gYmUgcmFpc2VkLiBUaGUgcmV0dXJuZWQKK3ZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0IDpleGM6YFN0b3BJdGVyYXRpb25gIGFuZAorYmVjb21lcyB0aGUgOmF0dHI6YFN0b3BJdGVyYXRpb24udmFsdWVgIGF0dHJpYnV0ZS4KIAogCiAuLiBfeWllbGQ6CkBAIC00NDksNiArNDQ5LDcgQEAKIGFuZCBpcyBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi4gVXNpbmcgYSA6a2V5d29yZDpgeWllbGRgCiBzdGF0ZW1lbnQgaW4gYSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIHN1ZmZpY2llbnQgdG8gY2F1c2UgdGhhdCBkZWZpbml0aW9uIHRvCiBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbCBmdW5jdGlvbi4KKwogV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4gaXRlcmF0b3Iga25vd24gYXMgYSBnZW5lcmF0b3IKIGl0ZXJhdG9yLCBvciBtb3JlIGNvbW1vbmx5LCBhIGdlbmVyYXRvci4gIFRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMKIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlIDpmdW5jOmBuZXh0YCBmdW5jdGlvbiBvbiB0aGUgZ2VuZXJhdG9yIHJlcGVhdGVkbHkgdW50aWwKQEAgLTQ2OCwxNCArNDY5LDI4IEBACiBnYXJiYWdlIGNvbGxlY3RlZCksIHRoZSBnZW5lcmF0b3ItaXRlcmF0b3IncyA6bWV0aDpgY2xvc2VgIG1ldGhvZCB3aWxsIGJlCiBjYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIDprZXl3b3JkOmBmaW5hbGx5YCBjbGF1c2VzIHRvIGV4ZWN1dGUuCiAKK1doZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvbiBhcworYSBzdWJpdGVyYXRvciwgcHJvZHVjaW5nIHZhbHVlcyBmcm9tIGl0IHVudGlsIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIGlzCitleGhhdXN0ZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBBZGRlZCBgYHlpZWxkIGZyb20gPGV4cHI+YGAgdG8gZGVsZWdhdGUgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3IKKworRm9yIGZ1bGwgZGV0YWlscyBvZiA6a2V5d29yZDpgeWllbGRgIHNlbWFudGljcywgcmVmZXIgdG8gdGhlIDpyZWY6YHlpZWxkZXhwcmAKK3NlY3Rpb24uCisKIC4uIHNlZWFsc286OgogCiAgICA6cGVwOmAwMjU1YCAtIFNpbXBsZSBHZW5lcmF0b3JzCiAgICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgOmtleXdvcmQ6YHlpZWxkYCBzdGF0ZW1lbnQgdG8gUHl0aG9uLgogCiAgICA6cGVwOmAwMzQyYCAtIENvcm91dGluZXMgdmlhIEVuaGFuY2VkIEdlbmVyYXRvcnMKLSAgICAgIFRoZSBwcm9wb3NhbCB0aGF0LCBhbW9uZyBvdGhlciBnZW5lcmF0b3IgZW5oYW5jZW1lbnRzLCBwcm9wb3NlZCBhbGxvd2luZwotICAgICAgOmtleXdvcmQ6YHlpZWxkYCB0byBhcHBlYXIgaW5zaWRlIGEgOmtleXdvcmQ6YHRyeWAgLi4uIDprZXl3b3JkOmBmaW5hbGx5YCBibG9jay4KKyAgICAgIFRoZSBwcm9wb3NhbCB0byBlbmhhbmNlIHRoZSBBUEkgYW5kIHN5bnRheCBvZiBnZW5lcmF0b3JzLCBtYWtpbmcgdGhlbQorICAgICAgdXNhYmxlIGFzIHNpbXBsZSBjb3JvdXRpbmVzLgorCisgICA6cGVwOmAwMzgwYCAtIFN5bnRheCBmb3IgRGVsZWdhdGluZyB0byBhIFN1YmdlbmVyYXRvcgorICAgICAgVGhlIHByb3Bvc2FsIHRvIGludHJvZHVjZSB0aGUgOnRva2VuOmB5aWVsZF9mcm9tYCBzeW50YXgsIG1ha2luZyBkZWxlZ2F0aW9uCisgICAgICB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LgogCiAKIC4uIF9yYWlzZToKQEAgLTY0NSwxNjEgKzY2MCw5OCBAQAogICAgcmVsYXRpdmVfbW9kdWxlOiAiLiIqIGBtb2R1bGVgIHwgIi4iKwogICAgbmFtZTogYGlkZW50aWZpZXJgCiAKLUltcG9ydCBzdGF0ZW1lbnRzIGFyZSBleGVjdXRlZCBpbiB0d28gc3RlcHM6ICgxKSBmaW5kIGEgbW9kdWxlLCBhbmQgaW5pdGlhbGl6ZQotaXQgaWYgbmVjZXNzYXJ5OyAoMikgZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIChvZiB0aGUgc2NvcGUKLXdoZXJlIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgb2NjdXJzKS4gVGhlIHN0YXRlbWVudCBjb21lcyBpbiB0d28KLWZvcm1zIGRpZmZlcmluZyBvbiB3aGV0aGVyIGl0IHVzZXMgdGhlIDprZXl3b3JkOmBmcm9tYCBrZXl3b3JkLiBUaGUgZmlyc3QgZm9ybQotKHdpdGhvdXQgOmtleXdvcmQ6YGZyb21gKSByZXBlYXRzIHRoZXNlIHN0ZXBzIGZvciBlYWNoIGlkZW50aWZpZXIgaW4gdGhlIGxpc3QuCi1UaGUgZm9ybSB3aXRoIDprZXl3b3JkOmBmcm9tYCBwZXJmb3JtcyBzdGVwICgxKSBvbmNlLCBhbmQgdGhlbiBwZXJmb3JtcyBzdGVwCi0oMikgcmVwZWF0ZWRseS4gRm9yIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHN0ZXAgKDEpLCBzZWUgdGhlCi06bW9kOmBpbXBvcnRsaWJgIG1vZHVsZS4KK1RoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyA6a2V5d29yZDpgZnJvbWAgY2xhdXNlKSBpcyBleGVjdXRlZCBpbiB0d28KK3N0ZXBzOgogCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBwYWNrYWdlCisjLiBmaW5kIGEgbW9kdWxlLCBsb2FkaW5nIGFuZCBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5CisjLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZSB3aGVyZQorICAgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBvY2N1cnMuCiAKLVRvIHVuZGVyc3RhbmQgaG93IHN0ZXAgKDEpIG9jY3Vycywgb25lIG11c3QgZmlyc3QgdW5kZXJzdGFuZCBob3cgUHl0aG9uIGhhbmRsZXMKLWhpZXJhcmNoaWNhbCBuYW1pbmcgb2YgbW9kdWxlcy4gVG8gaGVscCBvcmdhbml6ZSBtb2R1bGVzIGFuZCBwcm92aWRlIGEKLWhpZXJhcmNoeSBpbiBuYW1pbmcsIFB5dGhvbiBoYXMgYSBjb25jZXB0IG9mIHBhY2thZ2VzLiBBIHBhY2thZ2UgY2FuIGNvbnRhaW4KLW90aGVyIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHdoaWxlIG1vZHVsZXMgY2Fubm90IGNvbnRhaW4gb3RoZXIgbW9kdWxlcyBvcgotcGFja2FnZXMuIEZyb20gYSBmaWxlIHN5c3RlbSBwZXJzcGVjdGl2ZSwgcGFja2FnZXMgYXJlIGRpcmVjdG9yaWVzIGFuZCBtb2R1bGVzCi1hcmUgZmlsZXMuIFRoZSBvcmlnaW5hbCBgc3BlY2lmaWNhdGlvbiBmb3IgcGFja2FnZXMKLTxodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG9jL2Vzc2F5cy9wYWNrYWdlcy5odG1sPmBfIGlzIHN0aWxsIGF2YWlsYWJsZSB0byByZWFkLAotYWx0aG91Z2ggbWlub3IgZGV0YWlscyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHdyaXRpbmcgb2YgdGhhdCBkb2N1bWVudC4KK1doZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkKK2NvbW1hcykgdGhlIHR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QKK2FzIHRob3VnaCB0aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0CitzdGF0ZW1lbnRzLgogCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBzeXMubW9kdWxlcworVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBpcyBkZXNjcmliZWQgaW4KK2dyZWF0ZXIgZGV0YWlsIGluIHRoZSBzZWN0aW9uIG9uIHRoZSA6cmVmOmBpbXBvcnQgc3lzdGVtIDxpbXBvcnRzeXN0ZW0+YCwKK3doaWNoIGFsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXQgY2FuCitiZSBpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplCit0aGUgaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXkgaW5kaWNhdGUgZWl0aGVyCit0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhbiBlcnJvciBvY2N1cnJlZCB3aGlsZQoraW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvbiBvZiB0aGUgbW9kdWxlJ3MgY29kZS4KIAotT25jZSB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIGlzIGtub3duICh1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgdGhlIHRlcm0KLSJtb2R1bGUiIHdpbGwgcmVmZXIgdG8gYm90aCBwYWNrYWdlcyBhbmQgbW9kdWxlcyksIHNlYXJjaGluZwotZm9yIHRoZSBtb2R1bGUgb3IgcGFja2FnZSBjYW4gYmVnaW4uIFRoZSBmaXJzdCBwbGFjZSBjaGVja2VkIGlzCi06ZGF0YTpgc3lzLm1vZHVsZXNgLCB0aGUgY2FjaGUgb2YgYWxsIG1vZHVsZXMgdGhhdCBoYXZlIGJlZW4gaW1wb3J0ZWQKLXByZXZpb3VzbHkuIElmIHRoZSBtb2R1bGUgaXMgZm91bmQgdGhlcmUgdGhlbiBpdCBpcyB1c2VkIGluIHN0ZXAgKDIpIG9mIGltcG9ydAotdW5sZXNzIGBgTm9uZWBgIGlzIGZvdW5kIGluIDpkYXRhOmBzeXMubW9kdWxlc2AsIGluIHdoaWNoIGNhc2UKLTpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuCitJZiB0aGUgcmVxdWVzdGVkIG1vZHVsZSBpcyByZXRyaWV2ZWQgc3VjY2Vzc2Z1bGx5LCBpdCB3aWxsIGJlIG1hZGUKK2F2YWlsYWJsZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGluIG9uZSBvZiB0aHJlZSB3YXlzOgogCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBzeXMubWV0YV9wYXRoCi0gICAgc2luZ2xlOiBmaW5kZXIKLSAgICBwYWlyOiBmaW5kZXI7IGZpbmRfbW9kdWxlCi0gICAgc2luZ2xlOiBfX3BhdGhfXworKiBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgOmtleXdvcmQ6YGFzYCwgdGhlbiB0aGUgbmFtZQorICBmb2xsb3dpbmcgOmtleXdvcmQ6YGFzYCBpcyBib3VuZCBkaXJlY3RseSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlLgorKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYSB0b3AKKyAgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlJ3MgbmFtZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEKKyAgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUKKyogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlIG5hbWUKKyAgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwKKyAgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlIGltcG9ydGVkIG1vZHVsZQorICBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lIHJhdGhlciB0aGFuIGRpcmVjdGx5CiAKLUlmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluIHRoZSBjYWNoZSwgdGhlbiA6ZGF0YTpgc3lzLm1ldGFfcGF0aGAgaXMgc2VhcmNoZWQKLSh0aGUgc3BlY2lmaWNhdGlvbiBmb3IgOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGNhbiBiZSBmb3VuZCBpbiA6cGVwOmAzMDJgKS4KLVRoZSBvYmplY3QgaXMgYSBsaXN0IG9mIDp0ZXJtOmBmaW5kZXJgIG9iamVjdHMgd2hpY2ggYXJlIHF1ZXJpZWQgaW4gb3JkZXIgYXMgdG8KLXdoZXRoZXIgdGhleSBrbm93IGhvdyB0byBsb2FkIHRoZSBtb2R1bGUgYnkgY2FsbGluZyB0aGVpciA6bWV0aDpgZmluZF9tb2R1bGVgCi1tZXRob2Qgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBJZiB0aGUgbW9kdWxlIGhhcHBlbnMgdG8gYmUgY29udGFpbmVkCi13aXRoaW4gYSBwYWNrYWdlIChhcyBkZW5vdGVkIGJ5IHRoZSBleGlzdGVuY2Ugb2YgYSBkb3QgaW4gdGhlIG5hbWUpLCB0aGVuIGEKLXNlY29uZCBhcmd1bWVudCB0byA6bWV0aDpgZmluZF9tb2R1bGVgIGlzIGdpdmVuIGFzIHRoZSB2YWx1ZSBvZiB0aGUKLTphdHRyOmBfX3BhdGhfX2AgYXR0cmlidXRlIGZyb20gdGhlIHBhcmVudCBwYWNrYWdlIChldmVyeXRoaW5nIHVwIHRvIHRoZSBsYXN0Ci1kb3QgaW4gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCkuIElmIGEgZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUKLWl0IHJldHVybnMgYSA6dGVybTpgbG9hZGVyYCAoZGlzY3Vzc2VkIGxhdGVyKSBvciByZXR1cm5zIGBgTm9uZWBgLgotCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBzeXMucGF0aF9ob29rcwotICAgIHNpbmdsZTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKLSAgICBzaW5nbGU6IHN5cy5wYXRoCi0KLUlmIG5vbmUgb2YgdGhlIGZpbmRlcnMgb24gOmRhdGE6YHN5cy5tZXRhX3BhdGhgIGFyZSBhYmxlIHRvIGZpbmQgdGhlIG1vZHVsZQotdGhlbiBzb21lIGltcGxpY2l0bHkgZGVmaW5lZCBmaW5kZXJzIGFyZSBxdWVyaWVkLiBJbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uCi12YXJ5IGluIHdoYXQgaW1wbGljaXQgbWV0YSBwYXRoIGZpbmRlcnMgYXJlIGRlZmluZWQuIFRoZSBvbmUgdGhleSBhbGwgZG8KLWRlZmluZSwgdGhvdWdoLCBpcyBvbmUgdGhhdCBoYW5kbGVzIDpkYXRhOmBzeXMucGF0aF9ob29rc2AsCi06ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgLCBhbmQgOmRhdGE6YHN5cy5wYXRoYC4KLQotVGhlIGltcGxpY2l0IGZpbmRlciBzZWFyY2hlcyBmb3IgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaW4gdGhlICJwYXRocyIgc3BlY2lmaWVkCi1pbiBvbmUgb2YgdHdvIHBsYWNlcyAoInBhdGhzIiBkbyBub3QgaGF2ZSB0byBiZSBmaWxlIHN5c3RlbSBwYXRocykuIElmIHRoZQotbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIHN1cHBvc2VkIHRvIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlIHRoZW4gdGhlCi1zZWNvbmQgYXJndW1lbnQgcGFzc2VkIHRvIDptZXRoOmBmaW5kX21vZHVsZWAsIDphdHRyOmBfX3BhdGhfX2Agb24gdGhlIHBhcmVudAotcGFja2FnZSwgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mIHBhdGhzLiBJZiB0aGUgbW9kdWxlIGlzIG5vdCBjb250YWluZWQgaW4gYQotcGFja2FnZSB0aGVuIDpkYXRhOmBzeXMucGF0aGAgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mIHBhdGhzLgotCi1PbmNlIHRoZSBzb3VyY2Ugb2YgcGF0aHMgaXMgY2hvc2VuIGl0IGlzIGl0ZXJhdGVkIG92ZXIgdG8gZmluZCBhIGZpbmRlciB0aGF0Ci1jYW4gaGFuZGxlIHRoYXQgcGF0aC4gVGhlIGRpY3QgYXQgOmRhdGE6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCBjYWNoZXMKLWZpbmRlcnMgZm9yIHBhdGhzIGFuZCBpcyBjaGVja2VkIGZvciBhIGZpbmRlci4gSWYgdGhlIHBhdGggZG9lcyBub3QgaGF2ZSBhCi1maW5kZXIgY2FjaGVkIHRoZW4gOmRhdGE6YHN5cy5wYXRoX2hvb2tzYCBpcyBzZWFyY2hlZCBieSBjYWxsaW5nIGVhY2ggb2JqZWN0IGluCi10aGUgbGlzdCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50IG9mIHRoZSBwYXRoLCByZXR1cm5pbmcgYSBmaW5kZXIgb3IgcmFpc2VzCi06ZXhjOmBJbXBvcnRFcnJvcmAuIElmIGEgZmluZGVyIGlzIHJldHVybmVkIHRoZW4gaXQgaXMgY2FjaGVkIGluCi06ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIGFuZCB0aGVuIHVzZWQgZm9yIHRoYXQgcGF0aCBlbnRyeS4gSWYgbm8gZmluZGVyCi1jYW4gYmUgZm91bmQgYnV0IHRoZSBwYXRoIGV4aXN0cyB0aGVuIGEgdmFsdWUgb2YgYGBOb25lYGAgaXMKLXN0b3JlZCBpbiA6ZGF0YTpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHRvIHNpZ25pZnkgdGhhdCBhbiBpbXBsaWNpdCwKLWZpbGUtYmFzZWQgZmluZGVyIHRoYXQgaGFuZGxlcyBtb2R1bGVzIHN0b3JlZCBhcyBpbmRpdmlkdWFsIGZpbGVzIHNob3VsZCBiZQotdXNlZCBmb3IgdGhhdCBwYXRoLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBleGlzdCB0aGVuIGEgZmluZGVyIHdoaWNoIGFsd2F5cwotcmV0dXJucyBgYE5vbmVgYCBpcyBwbGFjZWQgaW4gdGhlIGNhY2hlIGZvciB0aGUgcGF0aC4KLQotLi4gaW5kZXg6OgotICAgIHNpbmdsZTogbG9hZGVyCi0gICAgcGFpcjogbG9hZGVyOyBsb2FkX21vZHVsZQotICAgIGV4Y2VwdGlvbjogSW1wb3J0RXJyb3IKLQotSWYgbm8gZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUgdGhlbiA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLiBPdGhlcndpc2UKLXNvbWUgZmluZGVyIHJldHVybmVkIGEgbG9hZGVyIHdob3NlIDptZXRoOmBsb2FkX21vZHVsZWAgbWV0aG9kIGlzIGNhbGxlZCB3aXRoCi10aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIGxvYWQgKHNlZSA6cGVwOmAzMDJgIGZvciB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBvZgotbG9hZGVycykuIEEgbG9hZGVyIGhhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXMgdG8gcGVyZm9ybSBvbiBhIG1vZHVsZSBpdAotbG9hZHMuIEZpcnN0LCBpZiB0aGUgbW9kdWxlIGFscmVhZHkgZXhpc3RzIGluIDpkYXRhOmBzeXMubW9kdWxlc2AgKGEKLXBvc3NpYmlsaXR5IGlmIHRoZSBsb2FkZXIgaXMgY2FsbGVkIG91dHNpZGUgb2YgdGhlIGltcG9ydCBtYWNoaW5lcnkpIHRoZW4gaXQKLWlzIHRvIHVzZSB0aGF0IG1vZHVsZSBmb3IgaW5pdGlhbGl6YXRpb24gYW5kIG5vdCBhIG5ldyBtb2R1bGUuIEJ1dCBpZiB0aGUKLW1vZHVsZSBkb2VzIG5vdCBleGlzdCBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIHRoZW4gaXQgaXMgdG8gYmUgYWRkZWQgdG8gdGhhdAotZGljdCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gYmVnaW5zLiBJZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIGxvYWRpbmcgb2YgdGhlCi1tb2R1bGUgYW5kIGl0IHdhcyBhZGRlZCB0byA6ZGF0YTpgc3lzLm1vZHVsZXNgIGl0IGlzIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUKLWRpY3QuIElmIGFuIGVycm9yIG9jY3VycyBidXQgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeSBpbiA6ZGF0YTpgc3lzLm1vZHVsZXNgIGl0Ci1pcyBsZWZ0IGluIHRoZSBkaWN0LgotCi0uLiBpbmRleDo6Ci0gICAgc2luZ2xlOiBfX25hbWVfXwotICAgIHNpbmdsZTogX19maWxlX18KLSAgICBzaW5nbGU6IF9fcGF0aF9fCi0gICAgc2luZ2xlOiBfX3BhY2thZ2VfXwotICAgIHNpbmdsZTogX19sb2FkZXJfXwotCi1UaGUgbG9hZGVyIG11c3Qgc2V0IHNldmVyYWwgYXR0cmlidXRlcyBvbiB0aGUgbW9kdWxlLiA6ZGF0YTpgX19uYW1lX19gIGlzIHRvIGJlCi1zZXQgdG8gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gOmRhdGE6YF9fZmlsZV9fYCBpcyB0byBiZSB0aGUgInBhdGgiIHRvIHRoZSBmaWxlCi11bmxlc3MgdGhlIG1vZHVsZSBpcyBidWlsdC1pbiAoYW5kIHRodXMgbGlzdGVkIGluCi06ZGF0YTpgc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzYCkgaW4gd2hpY2ggY2FzZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBzZXQuCi1JZiB3aGF0IGlzIGJlaW5nIGltcG9ydGVkIGlzIGEgcGFja2FnZSB0aGVuIDpkYXRhOmBfX3BhdGhfX2AgaXMgdG8gYmUgc2V0IHRvIGEKLWxpc3Qgb2YgcGF0aHMgdG8gYmUgc2VhcmNoZWQgd2hlbiBsb29raW5nIGZvciBtb2R1bGVzIGFuZCBwYWNrYWdlcyBjb250YWluZWQKLXdpdGhpbiB0aGUgcGFja2FnZSBiZWluZyBpbXBvcnRlZC4gOmRhdGE6YF9fcGFja2FnZV9fYCBpcyBvcHRpb25hbCBidXQgc2hvdWxkCi1iZSBzZXQgdG8gdGhlIG5hbWUgb2YgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgb3IgcGFja2FnZSAodGhlIGVtcHR5Ci1zdHJpbmcgaXMgdXNlZCBmb3IgbW9kdWxlIG5vdCBjb250YWluZWQgaW4gYSBwYWNrYWdlKS4gOmRhdGE6YF9fbG9hZGVyX19gIGlzCi1hbHNvIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBsb2FkZXIgb2JqZWN0IHRoYXQgaXMgbG9hZGluZyB0aGUKLW1vZHVsZS4KLQotLi4gaW5kZXg6OgotICAgIGV4Y2VwdGlvbjogSW1wb3J0RXJyb3IKLQotSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIHRoZW4gdGhlIGxvYWRlciByYWlzZXMgOmV4YzpgSW1wb3J0RXJyb3JgIGlmCi1zb21lIG90aGVyIGV4Y2VwdGlvbiBpcyBub3QgYWxyZWFkeSBiZWluZyBwcm9wYWdhdGVkLiBPdGhlcndpc2UgdGhlIGxvYWRlcgotcmV0dXJucyB0aGUgbW9kdWxlIHRoYXQgd2FzIGxvYWRlZCBhbmQgaW5pdGlhbGl6ZWQuCi0KLVdoZW4gc3RlcCAoMSkgZmluaXNoZXMgd2l0aG91dCByYWlzaW5nIGFuIGV4Y2VwdGlvbiwgc3RlcCAoMikgY2FuIGJlZ2luLgotCi1UaGUgZmlyc3QgZm9ybSBvZiA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgYmluZHMgdGhlIG1vZHVsZSBuYW1lIGluIHRoZSBsb2NhbAotbmFtZXNwYWNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LCBhbmQgdGhlbiBnb2VzIG9uIHRvIGltcG9ydCB0aGUgbmV4dCBpZGVudGlmaWVyLAotaWYgYW55LiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IDprZXl3b3JkOmBhc2AsIHRoZSBuYW1lIGZvbGxvd2luZwotOmtleXdvcmQ6YGFzYCBpcyB1c2VkIGFzIHRoZSBsb2NhbCBuYW1lIGZvciB0aGUgbW9kdWxlLgogCiAuLiBpbmRleDo6CiAgICBwYWlyOiBuYW1lOyBiaW5kaW5nCisgICBrZXl3b3JkOiBmcm9tCiAgICBleGNlcHRpb246IEltcG9ydEVycm9yCiAKLVRoZSA6a2V5d29yZDpgZnJvbWAgZm9ybSBkb2VzIG5vdCBiaW5kIHRoZSBtb2R1bGUgbmFtZTogaXQgZ29lcyB0aHJvdWdoIHRoZSBsaXN0Ci1vZiBpZGVudGlmaWVycywgbG9va3MgZWFjaCBvbmUgb2YgdGhlbSB1cCBpbiB0aGUgbW9kdWxlIGZvdW5kIGluIHN0ZXAgKDEpLCBhbmQKLWJpbmRzIHRoZSBuYW1lIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgdG8gdGhlIG9iamVjdCB0aHVzIGZvdW5kLiAgQXMgd2l0aCB0aGUKLWZpcnN0IGZvcm0gb2YgOmtleXdvcmQ6YGltcG9ydGAsIGFuIGFsdGVybmF0ZSBsb2NhbCBuYW1lIGNhbiBiZSBzdXBwbGllZCBieQotc3BlY2lmeWluZyAiOmtleXdvcmQ6YGFzYCBsb2NhbG5hbWUiLiAgSWYgYSBuYW1lIGlzIG5vdCBmb3VuZCwKLTpleGM6YEltcG9ydEVycm9yYCBpcyByYWlzZWQuICBJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIKLShgYCcqJ2BgKSwgYWxsIHB1YmxpYyBuYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbAotbmFtZXNwYWNlIG9mIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQuCitUaGUgOmtleXdvcmQ6YGZyb21gIGZvcm0gdXNlcyBhIHNsaWdodGx5IG1vcmUgY29tcGxleCBwcm9jZXNzOgorCisjLiBmaW5kIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGluIHRoZSA6a2V5d29yZDpgZnJvbWAgY2xhdXNlIGxvYWRpbmcgYW5kCisgICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5OworIy4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgOmtleXdvcmQ6YGltcG9ydGAgY2xhdXNlczoKKworICAgIy4gY2hlY2sgaWYgdGhlIGltcG9ydGVkIG1vZHVsZSBoYXMgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZQorICAgIy4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgdGhlbgorICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGUKKyAgICMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCA6ZXhjOmBJbXBvcnRFcnJvcmAgaXMgcmFpc2VkLgorICAgIy4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UsCisgICAgICB1c2luZyB0aGUgbmFtZSBpbiB0aGUgOmtleXdvcmQ6YGFzYCBjbGF1c2UgaWYgaXQgaXMgcHJlc2VudCwKKyAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWUKKworRXhhbXBsZXM6OgorCisgICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseQorICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHkKKyAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYgorICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6CisgICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0cgorCitJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKGBgJyonYGApLCBhbGwgcHVibGljCituYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZQord2hlcmUgdGhlIDprZXl3b3JkOmBpbXBvcnRgIHN0YXRlbWVudCBvY2N1cnMuCiAKIC4uIGluZGV4Ojogc2luZ2xlOiBfX2FsbF9fIChvcHRpb25hbCBtb2R1bGUgYXR0cmlidXRlKQogCiBUaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgbW9kdWxlJ3MKLW5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXQgbXVzdCBiZSBhIHNlcXVlbmNlIG9mCi1zdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5IHRoYXQgbW9kdWxlLiAgVGhlIG5hbWVzIGdpdmVuIGluCi1gYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZCBhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiBgYF9fYWxsX19gYAotaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgcHVibGljIG5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlJ3MKLW5hbWVzcGFjZSB3aGljaCBkbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGAnXydgYCkuCi1gYF9fYWxsX19gYCBzaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkCi1hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXMgbGlicmFyeQotbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS4KK25hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXQgbXVzdCBiZSBhIHNlcXVlbmNlCitvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5IHRoYXQgbW9kdWxlLiAgVGhlIG5hbWVzCitnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZCBhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZgorYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgcHVibGljIG5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZAoraW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlcgorKGBgJ18nYGApLiAgYGBfX2FsbF9fYGAgc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZAordG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzCitsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuCisKK1RoZSA6a2V5d29yZDpgZnJvbWAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLgorQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhCis6ZXhjOmBTeW50YXhFcnJvcmAuCisKKy4uIGluZGV4Ojogc2luZ2xlOiBfX2FsbF9fIChvcHRpb25hbCBtb2R1bGUgYXR0cmlidXRlKQorCitUaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgbW9kdWxlJ3MKK25hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCBgYF9fYWxsX19gYDsgaWYgZGVmaW5lZCwgaXQgbXVzdCBiZSBhIHNlcXVlbmNlCitvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5IHRoYXQgbW9kdWxlLiAgVGhlIG5hbWVzCitnaXZlbiBpbiBgYF9fYWxsX19gYCBhcmUgYWxsIGNvbnNpZGVyZWQgcHVibGljIGFuZCBhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZgorYGBfX2FsbF9fYGAgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgcHVibGljIG5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZAoraW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlcgorKGBgJ18nYGApLiAgYGBfX2FsbF9fYGAgc2hvdWxkIGNvbnRhaW4gdGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZAordG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZyBpdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzCitsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZSBpbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuCiAKIFRoZSA6a2V5d29yZDpgZnJvbWAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlIHdpbGQKIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9pbmRleHNpZGViYXIuaHRtbAppbmRleCA3NDhjYjkxLi5hMGVjMzJmIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L2luZGV4c2lkZWJhci5odG1sCisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvaW5kZXhzaWRlYmFyLmh0bWwKQEAgLTMsNyArMyw3IEBACiAJICAgIDxoMz5Eb2NzIGZvciBvdGhlciB2ZXJzaW9uczwvaDM+CiAJICAgIDx1bD4KIAkgICAgICA8bGk+PGEgaHJlZj0iaHR0cDovL2RvY3MucHl0aG9uLm9yZy8yLjcvIj5QeXRob24gMi43IChzdGFibGUpPC9hPjwvbGk+Ci0JICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy4zLyI+UHl0aG9uIDMuMyAoaW4gZGV2ZWxvcG1lbnQpPC9hPjwvbGk+CisJICAgICAgPGxpPjxhIGhyZWY9Imh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy40LyI+UHl0aG9uIDMuNCAoaW4gZGV2ZWxvcG1lbnQpPC9hPjwvbGk+CiAgICAgICAgICAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG9jL3ZlcnNpb25zLyI+T2xkIHZlcnNpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICA8L3VsPgogCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L2xheW91dC5odG1sIGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9sYXlvdXQuaHRtbAppbmRleCBkYjRhMzg2Li4zZjY4YTAwIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L2xheW91dC5odG1sCisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvbGF5b3V0Lmh0bWwKQEAgLTgsMTMgKzgsNzAgQEAKIHslIGJsb2NrIGV4dHJhaGVhZCAlfQogICAgIDxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBocmVmPSJ7eyBwYXRodG8oJ19zdGF0aWMvcHkucG5nJywgMSkgfX0iIC8+CiAgICAgeyUgaWYgbm90IGVtYmVkZGVkICV9PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3sgcGF0aHRvKCdfc3RhdGljL2NvcHlidXR0b24uanMnLCAxKSB9fSI+PC9zY3JpcHQ+eyUgZW5kaWYgJX0KKyAgICB7JSBpZiBwYWdlbmFtZSA9PSAnd2hhdHNuZXcvY2hhbmdlbG9nJyAlfQorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgICAgICAgIC8vIGFkZCB0aGUgc2VhcmNoIGZvcm0gYW5kIGJpbmQgdGhlIGV2ZW50cworICAgICAgICAgICQoJ2gxJykuYWZ0ZXIoWworICAgICAgICAgICAgJzxwPkZpbHRlciBlbnRyaWVzIGJ5IGNvbnRlbnQ6JywKKyAgICAgICAgICAgICc8aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9IiIgaWQ9InNlYXJjaGJveCIgc3R5bGU9IndpZHRoOiA1MCUiPicsCisgICAgICAgICAgICAnPGlucHV0IHR5cGU9InN1Ym1pdCIgaWQ9InNlYXJjaGJveC1zdWJtaXQiIHZhbHVlPSJGaWx0ZXIiPjwvcD4nCisgICAgICAgICAgXS5qb2luKCdcbicpKTsKKworICAgICAgICAgIGZ1bmN0aW9uIGRvZmlsdGVyKCkgeworICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgdmFyIHF1ZXJ5ID0gbmV3IFJlZ0V4cCgkKCcjc2VhcmNoYm94JykudmFsKCksICdpJyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gbm90IGEgdmFsaWQgcmVnZXggKHlldCkKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAvLyBmaW5kIGhlYWRlcnMgZm9yIHRoZSB2ZXJzaW9ucyAoV2hhdCdzIG5ldyBpbiBQeXRob24gWC5ZLlo/KQorICAgICAgICAgICAgICAkKCcjY2hhbmdlbG9nIGgyJykuZWFjaChmdW5jdGlvbihpbmRleDEsIGgyKSB7CisgICAgICAgICAgICAgICAgICB2YXIgaDJfcGFyZW50ID0gJChoMikucGFyZW50KCk7CisgICAgICAgICAgICAgICAgICB2YXIgc2VjdGlvbnNfZm91bmQgPSAwOworICAgICAgICAgICAgICAgICAgLy8gZmluZCBoZWFkZXJzIGZvciB0aGUgc2VjdGlvbnMgKENvcmUsIExpYnJhcnksIGV0Yy4pCisgICAgICAgICAgICAgICAgICBoMl9wYXJlbnQuZmluZCgnaDMnKS5lYWNoKGZ1bmN0aW9uKGluZGV4MiwgaDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICB2YXIgaDNfcGFyZW50ID0gJChoMykucGFyZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgdmFyIGVudHJpZXNfZm91bmQgPSAwOworICAgICAgICAgICAgICAgICAgICAgIC8vIGZpbmQgYWxsIHRoZSBlbnRyaWVzCisgICAgICAgICAgICAgICAgICAgICAgaDNfcGFyZW50LmZpbmQoJ2xpJykuZWFjaChmdW5jdGlvbihpbmRleDMsIGxpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsaSA9ICQobGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgcXVlcnkgbWF0Y2hlcyB0aGUgZW50cnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHF1ZXJ5LnRlc3QobGkudGV4dCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGkuc2hvdygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cmllc19mb3VuZCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGkuaGlkZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIGVudHJpZXMsIHNob3cgdGhlIHNlY3Rpb24sIG90aGVyd2lzZSBoaWRlIGl0CisgICAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJpZXNfZm91bmQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGgzX3BhcmVudC5zaG93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25zX2ZvdW5kKys7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICBoM19wYXJlbnQuaGlkZSgpOworICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgaWYgKHNlY3Rpb25zX2ZvdW5kID4gMCkKKyAgICAgICAgICAgICAgICAgICAgICBoMl9wYXJlbnQuc2hvdygpOworICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGgyX3BhcmVudC5oaWRlKCk7CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgIH0KKyAgICAgICAgICAkKCcjc2VhcmNoYm94Jykua2V5dXAoZG9maWx0ZXIpOworICAgICAgICAgICQoJyNzZWFyY2hib3gtc3VibWl0JykuY2xpY2soZG9maWx0ZXIpOworICAgICAgfSk7CisgICAgPC9zY3JpcHQ+CisgICAgeyUgZW5kaWYgJX0KIHt7IHN1cGVyKCkgfX0KIHslIGVuZGJsb2NrICV9CiB7JSBibG9jayBmb290ZXIgJX0KICAgICA8ZGl2IGNsYXNzPSJmb290ZXIiPgogICAgICZjb3B5OyA8YSBocmVmPSJ7eyBwYXRodG8oJ2NvcHlyaWdodCcpIH19Ij5Db3B5cmlnaHQ8L2E+IHt7IGNvcHlyaWdodHxlIH19LgogICAgIDxiciAvPgotICAgIFRoZSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBpcyBhIG5vbi1wcm9maXQgY29ycG9yYXRpb24uICAKKyAgICBUaGUgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gaXMgYSBub24tcHJvZml0IGNvcnBvcmF0aW9uLgogICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy9wc2YvZG9uYXRpb25zLyI+UGxlYXNlIGRvbmF0ZS48L2E+CiAgICAgPGJyIC8+CiAgICAgTGFzdCB1cGRhdGVkIG9uIHt7IGxhc3RfdXBkYXRlZHxlIH19LgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9wYXRjaGxldmVsLnB5CmluZGV4IGIwNzBkNjAuLmJjYTJlYjggMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvcGF0Y2hsZXZlbC5weQorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3BhdGNobGV2ZWwucHkKQEAgLTM0LDggKzM0LDcgQEAKIAogICAgIHJlbGVhc2UgPSB2ZXJzaW9uID0gJyVzLiVzJyAlIChkWydQWV9NQUpPUl9WRVJTSU9OJ10sIGRbJ1BZX01JTk9SX1ZFUlNJT04nXSkKICAgICBtaWNybyA9IGludChkWydQWV9NSUNST19WRVJTSU9OJ10pCi0gICAgaWYgbWljcm8gIT0gMDoKLSAgICAgICAgcmVsZWFzZSArPSAnLicgKyBzdHIobWljcm8pCisgICAgcmVsZWFzZSArPSAnLicgKyBzdHIobWljcm8pCiAKICAgICBsZXZlbCA9IGRbJ1BZX1JFTEVBU0VfTEVWRUwnXQogICAgIHN1ZmZpeGVzID0gewpAQCAtNTEsOCArNTAsNyBAQAogZGVmIGdldF9zeXNfdmVyc2lvbl9pbmZvKCk6CiAgICAgbWFqb3IsIG1pbm9yLCBtaWNybywgbGV2ZWwsIHNlcmlhbCA9IHN5cy52ZXJzaW9uX2luZm8KICAgICByZWxlYXNlID0gdmVyc2lvbiA9ICclcy4lcycgJSAobWFqb3IsIG1pbm9yKQotICAgIGlmIG1pY3JvOgotICAgICAgICByZWxlYXNlICs9ICcuJXMnICUgbWljcm8KKyAgICByZWxlYXNlICs9ICcuJXMnICUgbWljcm8KICAgICBpZiBsZXZlbCAhPSAnZmluYWwnOgogICAgICAgICByZWxlYXNlICs9ICclcyVzJyAlIChsZXZlbFswXSwgc2VyaWFsKQogICAgIHJldHVybiB2ZXJzaW9uLCByZWxlYXNlCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3B5c3BlY2lmaWMucHkKaW5kZXggOWIyY2M0Ny4uZThlYjcwMyAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9weXNwZWNpZmljLnB5CisrKyBiL0RvYy90b29scy9zcGhpbnhleHQvcHlzcGVjaWZpYy5weQpAQCAtNSwxMiArNSwxMiBAQAogCiAgICAgU3BoaW54IGV4dGVuc2lvbiB3aXRoIFB5dGhvbiBkb2Mtc3BlY2lmaWMgbWFya3VwLgogCi0gICAgOmNvcHlyaWdodDogMjAwOCwgMjAwOSwgMjAxMCBieSBHZW9yZyBCcmFuZGwuCisgICAgOmNvcHlyaWdodDogMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBieSBHZW9yZyBCcmFuZGwuCiAgICAgOmxpY2Vuc2U6IFB5dGhvbiBsaWNlbnNlLgogIiIiCiAKIElTU1VFX1VSSSA9ICdodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHA6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjIvJXMnCitTT1VSQ0VfVVJJID0gJ2h0dHA6Ly9oZy5weXRob24ub3JnL2NweXRob24vZmlsZS8zLjMvJXMnCiAKIGZyb20gZG9jdXRpbHMgaW1wb3J0IG5vZGVzLCB1dGlscwogZnJvbSBzcGhpbngudXRpbC5ub2RlcyBpbXBvcnQgc3BsaXRfZXhwbGljaXRfdGl0bGUKQEAgLTE3NCw2ICsxNzQsNDcgQEAKICAgICAgICAgcmV0dXJuIHJldAogCiAKKyMgU3VwcG9ydCBmb3IgaW5jbHVkaW5nIE1pc2MvTkVXUworCitpbXBvcnQgcmUKK2ltcG9ydCBjb2RlY3MKKworaXNzdWVfcmUgPSByZS5jb21waWxlKCcoW0lpXSlzc3VlICMoWzAtOV0rKScpCit3aGF0c25ld19yZSA9IHJlLmNvbXBpbGUociIoP2ltKV53aGF0J3MgbmV3IGluICguKj8pXD8/JCIpCisKK2NsYXNzIE1pc2NOZXdzKERpcmVjdGl2ZSk6CisgICAgaGFzX2NvbnRlbnQgPSBGYWxzZQorICAgIHJlcXVpcmVkX2FyZ3VtZW50cyA9IDEKKyAgICBvcHRpb25hbF9hcmd1bWVudHMgPSAwCisgICAgZmluYWxfYXJndW1lbnRfd2hpdGVzcGFjZSA9IEZhbHNlCisgICAgb3B0aW9uX3NwZWMgPSB7fQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgZm5hbWUgPSBzZWxmLmFyZ3VtZW50c1swXQorICAgICAgICBzb3VyY2UgPSBzZWxmLnN0YXRlX21hY2hpbmUuaW5wdXRfbGluZXMuc291cmNlKAorICAgICAgICAgICAgc2VsZi5saW5lbm8gLSBzZWxmLnN0YXRlX21hY2hpbmUuaW5wdXRfb2Zmc2V0IC0gMSkKKyAgICAgICAgc291cmNlX2RpciA9IHBhdGguZGlybmFtZShwYXRoLmFic3BhdGgoc291cmNlKSkKKyAgICAgICAgZnBhdGggPSBwYXRoLmpvaW4oc291cmNlX2RpciwgZm5hbWUpCisgICAgICAgIHNlbGYuc3RhdGUuZG9jdW1lbnQuc2V0dGluZ3MucmVjb3JkX2RlcGVuZGVuY2llcy5hZGQoZnBhdGgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZwID0gY29kZWNzLm9wZW4oZnBhdGgsIGVuY29kaW5nPSd1dGYtOCcpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY29udGVudCA9IGZwLnJlYWQoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICB0ZXh0ID0gJ1RoZSBORVdTIGZpbGUgaXMgbm90IGF2YWlsYWJsZS4nCisgICAgICAgICAgICBub2RlID0gbm9kZXMuc3Ryb25nKHRleHQsIHRleHQpCisgICAgICAgICAgICByZXR1cm4gW25vZGVdCisgICAgICAgIGNvbnRlbnQgPSBpc3N1ZV9yZS5zdWIocidgXDFzc3VlICNcMiA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy9cMj5gX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQpCisgICAgICAgIGNvbnRlbnQgPSB3aGF0c25ld19yZS5zdWIocidcMScsIGNvbnRlbnQpCisgICAgICAgICMgcmVtb3ZlIGZpcnN0IDMgbGluZXMgYXMgdGhleSBhcmUgdGhlIG1haW4gaGVhZGluZworICAgICAgICBsaW5lcyA9IFsnLi4gZGVmYXVsdC1yb2xlOjogb2JqJywgJyddICsgY29udGVudC5zcGxpdGxpbmVzKClbMzpdCisgICAgICAgIHNlbGYuc3RhdGVfbWFjaGluZS5pbnNlcnRfaW5wdXQobGluZXMsIGZuYW1lKQorICAgICAgICByZXR1cm4gW10KKworCiAjIFN1cHBvcnQgZm9yIGJ1aWxkaW5nICJ0b3BpYyBoZWxwIiBmb3IgcHlkb2MKIAogcHlkb2NfdG9waWNfbGFiZWxzID0gWwpAQCAtMjMwLDExICsyNzEsMTIgQEAKICAgICAgICAgICAgIGRvY3VtZW50LmFwcGVuZChkb2N0cmVlLmlkc1tsYWJlbGlkXSkKICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gU3RyaW5nT3V0cHV0KGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoZG9jdW1lbnQsIGRlc3RpbmF0aW9uKQotICAgICAgICAgICAgc2VsZi50b3BpY3NbbGFiZWxdID0gc3RyKHdyaXRlci5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLnRvcGljc1tsYWJlbF0gPSB3cml0ZXIub3V0cHV0LmVuY29kZSgndXRmLTgnKQogCiAgICAgZGVmIGZpbmlzaChzZWxmKToKICAgICAgICAgZiA9IG9wZW4ocGF0aC5qb2luKHNlbGYub3V0ZGlyLCAndG9waWNzLnB5JyksICd3JykKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgZi53cml0ZSgnIyAtKi0gY29kaW5nOiB1dGYtOCAtKi1cbicpCiAgICAgICAgICAgICBmLndyaXRlKCcjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uICVzXG4nICUgYXNjdGltZSgpKQogICAgICAgICAgICAgZi53cml0ZSgndG9waWNzID0gJyArIHBmb3JtYXQoc2VsZi50b3BpY3MpICsgJ1xuJykKICAgICAgICAgZmluYWxseToKQEAgLTMwNCwzICszNDYsNCBAQAogICAgIGFwcC5hZGRfZGVzY3JpcHRpb25fdW5pdCgnMnRvM2ZpeGVyJywgJzJ0bzNmaXhlcicsICclcyAoMnRvMyBmaXhlciknKQogICAgIGFwcC5hZGRfZGlyZWN0aXZlX3RvX2RvbWFpbigncHknLCAnZGVjb3JhdG9yJywgUHlEZWNvcmF0b3JGdW5jdGlvbikKICAgICBhcHAuYWRkX2RpcmVjdGl2ZV90b19kb21haW4oJ3B5JywgJ2RlY29yYXRvcm1ldGhvZCcsIFB5RGVjb3JhdG9yTWV0aG9kKQorICAgIGFwcC5hZGRfZGlyZWN0aXZlKCdtaXNjbmV3cycsIE1pc2NOZXdzKQpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2IGIvRG9jL3Rvb2xzL3NwaGlueGV4dC9zdXNwLWlnbm9yZWQuY3N2CmluZGV4IDUwNzZhZWQuLjJjMTVhNWMgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9zcGhpbnhleHQvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3BoaW54ZXh0L3N1c3AtaWdub3JlZC5jc3YKQEAgLTEsMTYgKzEsMjQgQEAKIGMtYXBpL2FyZywsOnJlZiwiUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk98TzpyZWYiIiwgJm9iamVjdCwgJmNhbGxiYWNrKSIKIGMtYXBpL2xpc3QsLDpoaWdoLGxpc3RbbG93OmhpZ2hdCiBjLWFwaS9saXN0LCw6aGlnaCxsaXN0W2xvdzpoaWdoXSA9IGl0ZW1saXN0CitjLWFwaS9zZXF1ZW5jZSwsOmkyLGRlbCBvW2kxOmkyXQogYy1hcGkvc2VxdWVuY2UsLDppMixvW2kxOmkyXQogYy1hcGkvc2VxdWVuY2UsLDppMixvW2kxOmkyXSA9IHYKLWMtYXBpL3NlcXVlbmNlLCw6aTIsZGVsIG9baTE6aTJdCiBjLWFwaS91bmljb2RlLCw6ZW5kLHN0cltzdGFydDplbmRdCitjLWFwaS91bmljb2RlLCw6c3RhcnQsdW5pY29kZVtzdGFydDpzdGFydCtsZW5ndGhdCitkaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KIGRpc3R1dGlscy9zZXR1cHNjcmlwdCwsOjosCiBleHRlbmRpbmcvZW1iZWRkaW5nLCw6bnVtYXJncywiaWYoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiI6bnVtYXJncyIiKSkiCi1leHRlbmRpbmcvZXh0ZW5kaW5nLCw6c2V0LCJpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86c2V0X2NhbGxiYWNrIiIsICZ0ZW1wKSkgeyIKIGV4dGVuZGluZy9leHRlbmRpbmcsLDpteWZ1bmN0aW9uLCJQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiRDpteWZ1bmN0aW9uIiIsICZjKTsiCitleHRlbmRpbmcvZXh0ZW5kaW5nLCw6c2V0LCJpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIk86c2V0X2NhbGxiYWNrIiIsICZ0ZW1wKSkgeyIKIGV4dGVuZGluZy9uZXd0eXBlcywsOmNhbGwsImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiInNzczpjYWxsIiIsICZhcmcxLCAmYXJnMiwgJmFyZzMpKSB7IgogZXh0ZW5kaW5nL3dpbmRvd3MsLDppbml0c3BhbSwvZXhwb3J0OmluaXRzcGFtCitmYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCitmYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgorZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJwcmludCgobGFtYmRhIFJ1LFJvLEl1LElvLElNLFN4LFN5OnJlZHVjZShsYW1iZGEgeCx5OngreSxtYXAobGFtYmRhIHksIgorZmFxL3Byb2dyYW1taW5nLCw6cmVkdWNlLCJTeD1TeCxTeT1TeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB4LHhjPVJ1LHljPXljLFJ1PVJ1LFJvPVJvLCIKK2ZhcS93aW5kb3dzLDIyOSw6RU9GLEBzZXRsb2NhbCBlbmFibGVleHRlbnNpb25zICYgcHl0aG9uIC14ICV+ZjAgJSogJiBnb3RvIDpFT0YKK2ZhcS93aW5kb3dzLDM5Myw6UkVHLC5weSA6UkVHX1NaOiBjOlw8cGF0aCB0byBweXRob24+XHB5dGhvbi5leGUgLXUgJXMgJXMKIGhvd3RvL2Nwb3J0aW5nLCw6YWRkLCJpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIiJpaTphZGRfaW50cyIiLCAmb25lLCAmdHdvKSkiCiBob3d0by9jcG9ydGluZywsOmVuY29kZSwiaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiTzplbmNvZGVfb2JqZWN0IiIsICZteW9iaikpIgogaG93dG8vY3BvcnRpbmcsLDpzYXksImlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiIlU6c2F5X2hlbGxvIiIsICZuYW1lKSkiCkBAIC0yMiwxOSArMzAsOTEgQEAKIGhvd3RvL2N1cnNlcywsOnJlZCwiVGhleSBhcmU6IDA6YmxhY2ssIDE6cmVkLCAyOmdyZWVuLCAzOnllbGxvdywgNDpibHVlLCA1Om1hZ2VudGEsIDY6Y3lhbiwgYW5kIgogaG93dG8vY3Vyc2VzLCw6d2hpdGUsIjc6d2hpdGUuIgogaG93dG8vY3Vyc2VzLCw6eWVsbG93LCJUaGV5IGFyZTogMDpibGFjaywgMTpyZWQsIDI6Z3JlZW4sIDM6eWVsbG93LCA0OmJsdWUsIDU6bWFnZW50YSwgNjpjeWFuLCBhbmQiCitob3d0by9pcGFkZHJlc3MsLDpEQjgsPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOkRCODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpEQjg6OjEnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxJykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJzo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6LzEyOCcpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LElQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxLzk2JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZGI4LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LD4+PiBhZGRyNiA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6MScpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IGhvc3Q2ID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTpkYjg6OjEvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gaG9zdDYgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcyMDAxOmRiODo6MS85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDpkYjgsPj4+IG5ldDYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTpkYjg6OjAvOTYnKQoraG93dG8vaXBhZGRyZXNzLCw6Oiw+Pj4gbmV0NiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyMDAxOmRiODo6MC85NicpCitob3d0by9pcGFkZHJlc3MsLDpmZmZmLElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKK2hvd3RvL2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTo6MScpCitob3d0by9pcGFkZHJlc3MsLDo6LElQdjZBZGRyZXNzKCcyMDAxOjpmZmZmOmZmZmYnKQoraG93dG8vaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnMjAwMTo6ZmZmZjpmZmZmJykKK2hvd3RvL2lwYWRkcmVzcywsOmRiOCwnMjAwMTpkYjg6OicKK2hvd3RvL2lwYWRkcmVzcywsOjosJzIwMDE6ZGI4OjonCitob3d0by9pcGFkZHJlc3MsLDpkYjgsJzIwMDE6ZGI4OjovOTYnCitob3d0by9pcGFkZHJlc3MsLDo6LCcyMDAxOmRiODo6Lzk2JworaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpBbmQgdGhpcywgdG9vIgoraG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCitob3d0by9sb2dnaW5nLCw6RG9pbmcsSU5GTzpyb290OkRvaW5nIHNvbWV0aGluZworaG93dG8vbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAoraG93dG8vbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitob3d0by9sb2dnaW5nLCw6TG9vayxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCitob3d0by9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitob3d0by9sb2dnaW5nLCw6cm9vdCxERUJVRzpyb290OlRoaXMgbWVzc2FnZSBzaG91bGQgZ28gdG8gdGhlIGxvZyBmaWxlCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RmluaXNoZWQKK2hvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTbyBzaG91bGQgdGhpcworaG93dG8vbG9nZ2luZywsOnJvb3QsSU5GTzpyb290OlN0YXJ0ZWQKK2hvd3RvL2xvZ2dpbmcsLDpyb290LCJXQVJOSU5HOnJvb3Q6QW5kIHRoaXMsIHRvbyIKK2hvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2hvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCitob3d0by9sb2dnaW5nLCw6U28sSU5GTzpyb290OlNvIHNob3VsZCB0aGlzCitob3d0by9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcworaG93dG8vbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKK2hvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKK2hvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOlRoaXMgbWVzc2FnZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBjb25zb2xlCitob3d0by9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKK2hvd3RvL3B5cG9ydGluZyw3NSw6OiwjIG1ha2Ugc3VyZSB0byB1c2UgOjogUHl0aG9uICphbmQqIDo6IFB5dGhvbiA6OiAzIHNvCitob3d0by9weXBvcnRpbmcsNzUsOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKK2hvd3RvL3B5cG9ydGluZyw3NSw6OiwnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMnCiBob3d0by9yZWdleCwsOjosCiBob3d0by9yZWdleCwsOmZvbywoPzpmb28pCiBob3d0by91cmxsaWIyLCw6ZXhhbXBsZSwiZm9yIGV4YW1wbGUgIiJqb2VAcGFzc3dvcmQ6ZXhhbXBsZS5jb20iIiIKIGhvd3RvL3dlYnNlcnZlcnMsLC4uIGltYWdlOiwuLiBpbWFnZTo6IGh0dHAucG5nCiBsaWJyYXJ5L2F1ZGlvb3AsLDppcG9zLCIjIGZhY3RvciA9IGF1ZGlvb3AuZmluZGZhY3Rvcihpbl90ZXN0W2lwb3MqMjppcG9zKjIrbGVuKG91dF90ZXN0KV0sIgorbGlicmFyeS9iaXNlY3QsMzIsOmhpLGFsbCh2YWwgPj0geCBmb3IgdmFsIGluIGFbaTpoaV0pCitsaWJyYXJ5L2Jpc2VjdCw0Miw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpob21lLG15X2RpcjogJHtDb21tb246aG9tZV9kaXJ9L3R3b3NoZWRzCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsOm9wdGlvbiwke3NlY3Rpb246b3B0aW9ufQorbGlicmFyeS9jb25maWdwYXJzZXIsLDpwYXRoLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6UHl0aG9uLHB5dGhvbl9kaXI6ICR7RnJhbWV3b3JrczpwYXRofS9QeXRob24vVmVyc2lvbnMvJHtGcmFtZXdvcmtzOlB5dGhvbn0KK2xpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgU2V0IHRoZSBvcHRpb25hbCBgcmF3YCBhcmd1bWVudCBvZiBnZXQoKSB0byBUcnVlIGlmIHlvdSB3aXNoIHRvIGRpc2FibGUKK2xpYnJhcnkvY29uZmlncGFyc2VyLCw6c3lzdGVtLHBhdGg6ICR7Q29tbW9uOnN5c3RlbV9kaXJ9L0xpYnJhcnkvRnJhbWV3b3Jrcy8KK2xpYnJhcnkvY29uZmlncGFyc2VyLCxgLCMgVGhlIG9wdGlvbmFsIGBmYWxsYmFja2AgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcHJvdmlkZSBhIGZhbGxiYWNrIHZhbHVlCitsaWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgdmFyc2AgYXJndW1lbnQgaXMgYSBkaWN0IHdpdGggbWVtYmVycyB0aGF0IHdpbGwgdGFrZQogbGlicmFyeS9kYXRldGltZSwsOk1NLAogbGlicmFyeS9kYXRldGltZSwsOlNTLAogbGlicmFyeS9kZWNpbWFsLCw6b3B0aW9uYWwsInRyYWlsbmVnOm9wdGlvbmFsIHRyYWlsaW5nIG1pbnVzIGluZGljYXRvciIKIGxpYnJhcnkvZGlmZmxpYiwsOmFoaSxhW2FsbzphaGldCiBsaWJyYXJ5L2RpZmZsaWIsLDpiaGksYltibG86YmhpXQorbGlicmFyeS9kaWZmbGliLCw6aTEsCiBsaWJyYXJ5L2RpZmZsaWIsLDppMiwKIGxpYnJhcnkvZGlmZmxpYiwsOmoyLAotbGlicmFyeS9kaWZmbGliLCw6aTEsCiBsaWJyYXJ5L2RpcywsOlRPUywKIGxpYnJhcnkvZGlzLCxgLFRPUyA9IGBUT1NgCiBsaWJyYXJ5L2RvY3Rlc3QsLGAsYGBmYWN0b3JpYWxgYCBmcm9tIHRoZSBgYGV4YW1wbGVgYCBtb2R1bGU6CkBAIC00NCw5NiArMTI0LDE4NiBAQAogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLCJhW3N0YXJ0OnN0b3AsIGldIgogbGlicmFyeS9mdW5jdGlvbnMsLDpzdG9wLGFbc3RhcnQ6c3RvcDpzdGVwXQogbGlicmFyeS9ob3RzaG90LCw6bGluZW5vLCJuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKSIKLWxpYnJhcnkvaHR0cGxpYiwsOnBvcnQsaG9zdDpwb3J0Ci1saWJyYXJ5L2ltYXBsaWIsLDpNTSwiIiJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSIiIgotbGlicmFyeS9pbWFwbGliLCw6U1MsIiIiREQtTW1tLVlZWVkgSEg6TU06U1MgK0hITU0iIiIKLWxpYnJhcnkvaXRlcnRvb2xzLCw6c3RvcCxlbGVtZW50cyBmcm9tIHNlcVtzdGFydDpzdG9wOnN0ZXBdCitsaWJyYXJ5L2h0dHAuY2xpZW50LCw6cG9ydCxob3N0OnBvcnQKK2xpYnJhcnkvaHR0cC5jb29raWVzLCxgLCEjJCUmJyorLS5eX2B8fjoKK2xpYnJhcnkvaW1hcGxpYiwsOk1NLCIiIkRELU1tbS1ZWVlZIEhIOk1NOlNTIgorbGlicmFyeS9pbWFwbGliLCw6U1MsIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCitsaWJyYXJ5L2luc3BlY3QsLDppbnQsIj4+PiBkZWYgZm9vKGEsICosIGI6aW50LCAqKmt3YXJncyk6IgorbGlicmFyeS9pbnNwZWN0LCw6aW50LCInKGEsICosIGI6aW50LCAqKmt3YXJncyknIgorbGlicmFyeS9pbnNwZWN0LCw6aW50LCdiOmludCcKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMTpkYjg6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LElQdjZBZGRyZXNzKCcyMDAxOmRiODo6JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCw+Pj4gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDAwJykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OixJUHY2QWRkcmVzcygnMjAwMTpkYjg6OjEwMDAnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRiOCxJUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkludGVyZmFjZSgnMjAwMTpkYjg6OjEwMDAvOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsPj4+IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOmRiODo6MTAwMC85NicpLm5ldHdvcmsKK2xpYnJhcnkvaXBhZGRyZXNzLCw6Oiw+Pj4gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6ZGI4OjoxMDAwLzk2JykubmV0d29yaworbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKQorbGlicmFyeS9pcGFkZHJlc3MsLDo6LElQdjZOZXR3b3JrKCcyMDAxOmRiODo6Lzk2JykKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZGI4LD4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjovOTYnKS5uZXRtYXNrCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6Oi85NicpLm5ldG1hc2sKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZmZmZixJUHY2QWRkcmVzcygnZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6OicpCitsaWJyYXJ5L2lwYWRkcmVzcywsOjosSVB2NkFkZHJlc3MoJ2ZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOjonKQorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjgsIj4+PiBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzk2Jywgc3RyaWN0PUZhbHNlKSIKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwiPj4+IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTpkYjg6OjEwMDAvOTYnLCBzdHJpY3Q9RmFsc2UpIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LCIiIjo6YWJjOjc6ZGVmIiIiCitsaWJyYXJ5L2lwYWRkcmVzcywsOmRlZiwiIiI6OmFiYzo3OmRlZiIiIgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDo6RkZGRi85NgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDI6Oi8xNgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6Oi8zMgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBzdHIoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKK2xpYnJhcnkvaXBhZGRyZXNzLCw6OiwnOjoxJworbGlicmFyeS9pcGFkZHJlc3MsLDo6LD4+PiBpbnQoaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKK2xpYnJhcnkvaXBhZGRyZXNzLCw6ZmYwMCxmZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjAwLDIwMDE6ZGIwMDo6MC8yNAorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6ZGIwMDo6MC8yNAorbGlicmFyeS9pcGFkZHJlc3MsLDpkYjAwLDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDo6LDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgorbGlicmFyeS9pcGFkZHJlc3MsLDpmZjAwLDIwMDE6ZGIwMDo6MC9mZmZmOmZmMDA6OgogbGlicmFyeS9pdGVydG9vbHMsLDpzdGVwLGVsZW1lbnRzIGZyb20gc2VxW3N0YXJ0OnN0b3A6c3RlcF0KK2xpYnJhcnkvaXRlcnRvb2xzLCw6c3RvcCxlbGVtZW50cyBmcm9tIHNlcVtzdGFydDpzdG9wOnN0ZXBdCiBsaWJyYXJ5L2xpbmVjYWNoZSwsOnN5cywic3lzOng6MzozOnN5czovZGV2Oi9iaW4vc2giCiBsaWJyYXJ5L2xvZ2dpbmcsLDpBbmQsCitsaWJyYXJ5L2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCitsaWJyYXJ5L2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKK2xpYnJhcnkvbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCitsaWJyYXJ5L2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKK2xpYnJhcnkvbG9nZ2luZywsOm1lc3NhZ2Usc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQogbGlicmFyeS9sb2dnaW5nLCw6cGFja2FnZTEsCiBsaWJyYXJ5L2xvZ2dpbmcsLDpwYWNrYWdlMiwKLWxpYnJhcnkvbG9nZ2luZywsOnJvb3QsCi1saWJyYXJ5L2xvZ2dpbmcsLDpUaGlzLAogbGlicmFyeS9sb2dnaW5nLCw6cG9ydCxob3N0OnBvcnQKK2xpYnJhcnkvbG9nZ2luZywsOnJvb3QsCitsaWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKK2xpYnJhcnkvbG9nZ2luZywsOlNvLElORk86U28gc2hvdWxkIHRoaXMKK2xpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKK2xpYnJhcnkvbG9nZ2luZywsOlRoaXMsCitsaWJyYXJ5L2xvZ2dpbmcsLDpXYXRjaCxXQVJOSU5HOnJvb3Q6V2F0Y2ggb3V0IQorbGlicmFyeS9sb2dnaW5nLmhhbmRsZXJzLCw6cG9ydCxob3N0OnBvcnQKIGxpYnJhcnkvbW1hcCwsOmkyLG9ialtpMTppMl0KLWxpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0aXRlbV9fJywgKDIwLCkpICAgICAjIGVxdWl2IHRvIGBsWzIwXWAiCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwiPj4+IGwuX2NhbGxtZXRob2QoJ19fZ2V0c2xpY2VfXycsICgyLCA3KSkgICAjIGVxdWl2IHRvIGBsWzI6N11gIgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgQmFzZU1hbmFnZXJgLgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBgUG9vbC5pbWFwKClgICh3aGljaCB3aWxsIHNhdmUgb24gdGhlIGFtb3VudCBvZiBjb2RlIG5lZWRlZCBhbnl3YXkpLgorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIEEgdGVzdCBmaWxlIGZvciB0aGUgYG11bHRpcHJvY2Vzc2luZ2AgcGFja2FnZQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBIHRlc3Qgb2YgYG11bHRpcHJvY2Vzc2luZy5Qb29sYCBjbGFzcwotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBBZGQgbW9yZSB0YXNrcyB1c2luZyBgcHV0KClgCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIGBCYXNlTWFuYWdlcmAuCitsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgQ2x1c3RlcmAgaXMgYSBzdWJjbGFzcyBvZiBgU3luY01hbmFnZXJgIHNvIGl0IGFsbG93cyBjcmVhdGlvbiBvZgogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBjcmVhdGUgc2VydmVyIGZvciBhIGBIb3N0TWFuYWdlcmAgb2JqZWN0CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIERlcGVuZHMgb24gYG11bHRpcHJvY2Vzc2luZ2AgcGFja2FnZSAtLSB0ZXN0ZWQgd2l0aCBgcHJvY2Vzc2luZy0wLjYwYAorbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYGhvc3RuYW1lYCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgaG9zdC4gIElmIGhvc3RuYW1lIGlzIG5vdAogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgdGhlbiBjb25zaWRlciB1c2luZyBgUG9vbC5tYXAoKWAgb3IKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRpdGVtX18nLCAoMjAsKSkgICAgICMgZXF1aXYgdG8gYGxbMjBdYCIKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCI+Pj4gbC5fY2FsbG1ldGhvZCgnX19nZXRzbGljZV9fJywgKDIsIDcpKSAgICMgZXF1aXYgdG8gYGxbMjo3XWAiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIE5vdCBzdXJlIGlmIHdlIHNob3VsZCBzeW5jaHJvbml6ZSBhY2Nlc3MgdG8gYHNvY2tldC5hY2NlcHQoKWAgbWV0aG9kIGJ5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIG9iamVjdC4gIChXZSBpbXBvcnQgYG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb25gIHRvIGVuYWJsZSB0aGlzIHBpY2tsaW5nLikKK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCxgLCMgYFBvb2wuaW1hcCgpYCAod2hpY2ggd2lsbCBzYXZlIG9uIHRoZSBhbW91bnQgb2YgY29kZSBuZWVkZWQgYW55d2F5KS4KK2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLCw6cXVldWUsIj4+PiBRdWV1ZU1hbmFnZXIucmVnaXN0ZXIoJ2dldF9xdWV1ZScsIGNhbGxhYmxlPWxhbWJkYTpxdWV1ZSkiCiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGYoKWAgYW5kIGBnKClgIGFjY2Vzc2libGUgdmlhIHByb3h5CiBsaWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCwjIHJlZ2lzdGVyIHRoZSBGb28gY2xhc3M7IG1ha2UgYGcoKWAgYW5kIGBfaCgpYCBhY2Nlc3NpYmxlIHZpYSBwcm94eQogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsIyByZWdpc3RlciB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGJhejsgdXNlIGBHZW5lcmF0b3JQcm94eWAgdG8gbWFrZSBwcm94aWVzCi1saWJyYXJ5L211bHRpcHJvY2Vzc2luZywsYCxgQ2x1c3RlcmAgaXMgYSBzdWJjbGFzcyBvZiBgU3luY01hbmFnZXJgIHNvIGl0IGFsbG93cyBjcmVhdGlvbiBvZgotbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYGhvc3RuYW1lYCBnaXZlcyB0aGUgbmFtZSBvZiB0aGUgaG9zdC4gIElmIGhvc3RuYW1lIGlzIG5vdAogbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcsLGAsYHNsb3RzYCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzbG90cyBmb3IgcHJvY2Vzc2VzIG9uCitsaWJyYXJ5L25udHBsaWIsLDpieXRlcyw6Ynl0ZXMKK2xpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLCJbJ3hyZWYnLCAnZnJvbScsICc6bGluZXMnLCAnOmJ5dGVzJywgJ3JlZmVyZW5jZXMnLCAnZGF0ZScsICdtZXNzYWdlLWlkJywgJ3N1YmplY3QnXSIKK2xpYnJhcnkvbm50cGxpYiwsOmxpbmVzLDpsaW5lcworbGlicmFyeS9ubnRwbGliLCw6bGluZXMsIlsneHJlZicsICdmcm9tJywgJzpsaW5lcycsICc6Ynl0ZXMnLCAncmVmZXJlbmNlcycsICdkYXRlJywgJ21lc3NhZ2UtaWQnLCAnc3ViamVjdCddIgogbGlicmFyeS9vcHRwYXJzZSwsOmxlbiwiZGVsIHBhcnNlci5yYXJnc1s6bGVuKHZhbHVlKV0iCiBsaWJyYXJ5L29zLnBhdGgsLDpmb28sYzpmb28KIGxpYnJhcnkvcGFyc2VyLCxgLCIiIk1ha2UgYSBmdW5jdGlvbiB0aGF0IHJhaXNlcyBhbiBhcmd1bWVudCB0byB0aGUgZXhwb25lbnQgYGV4cGAuIiIiCitsaWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KK2xpYnJhcnkvcGRiLCw6bGluZW5vLFtmaWxlbmFtZTpsaW5lbm8gfCBicG51bWJlciBbYnBudW1iZXIgLi4uXV0KK2xpYnJhcnkvcGlja2xlLCw6bWVtb3J5LCJjb25uID0gc3FsaXRlMy5jb25uZWN0KCIiOm1lbW9yeToiIikiCiBsaWJyYXJ5L3Bvc2l4LCxgLCJDRkxBR1M9IiJgZ2V0Y29uZiBMRlNfQ0ZMQUdTYCIiIE9QVD0iIi1nIC1PMiAkQ0ZMQUdTIiIiCi1saWJyYXJ5L3Byb2ZpbGUsLDpsaW5lbm8sbmNhbGxzICB0b3R0aW1lICBwZXJjYWxsICBjdW10aW1lICBwZXJjYWxsIGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ2NsYXNzaWZpZXJzJzogWydEZXZlbG9wbWVudCBTdGF0dXMgOjogNCAtIEJldGEnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0ludGVuZGVkIEF1ZGllbmNlIDo6IERldmVsb3BlcnMnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6IE1JVCBMaWNlbnNlJywiCitsaWJyYXJ5L3BwcmludCwyMDksOjosIidOYXR1cmFsIExhbmd1YWdlIDo6IEVuZ2xpc2gnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ09wZXJhdGluZyBTeXN0ZW0gOjogT1MgSW5kZXBlbmRlbnQnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDInLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjYnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjcnLCIKK2xpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcycsIgorbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInVG9waWMgOjogU29mdHdhcmUgRGV2ZWxvcG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJ10sIgogbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKK2xpYnJhcnkvcHJvZmlsZSwsOmxpbmVubyxuY2FsbHMgIHRvdHRpbWUgIHBlcmNhbGwgIGN1bXRpbWUgIHBlcmNhbGwgZmlsZW5hbWU6bGluZW5vKGZ1bmN0aW9uKQorbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKIGxpYnJhcnkvcHlleHBhdCwsOmVsZW0xLDxweTplbGVtMSAvPgogbGlicmFyeS9weWV4cGF0LCw6cHksInhtbG5zOnB5ID0gIiJodHRwOi8vd3d3LnB5dGhvbi5vcmcvbnMvIiI+IgogbGlicmFyeS9yZXByLCxgLCJyZXR1cm4gYG9iamAiCiBsaWJyYXJ5L3NtdHBsaWIsLDpwb3J0LCJhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQgc2VydmVyLiIKK2xpYnJhcnkvc210cGxpYiwsOnBvcnQsbWV0aG9kIG11c3Qgc3VwcG9ydCB0aGF0IGFzIHdlbGwgYXMgYSByZWd1bGFyIGhvc3Q6cG9ydAorbGlicmFyeS9zb2NrZXQsLDo6LCIoMTAsIDEsIDYsICcnLCAoJzIwMDE6ODg4OjIwMDA6ZDo6YTInLCA4MCwgMCwgMCkpXSIKIGxpYnJhcnkvc29ja2V0LCw6OiwnNWFlZjoyYjo6OCcKLWxpYnJhcnkvc3FsaXRlMywsOm1lbW9yeSwKK2xpYnJhcnkvc29ja2V0LCw6Y2FuLCJyZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pIgorbGlicmFyeS9zb2NrZXQsLDpsZW4sZmRzLmZyb21zdHJpbmcoY21zZ19kYXRhWzpsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorbGlicmFyeS9zcWxpdGUzLCw6YWdlLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3FsaXRlMywsOmFnZSwic2VsZWN0IG5hbWVfbGFzdCwgYWdlIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIKLWxpYnJhcnkvc3FsaXRlMywsOndobywic2VsZWN0IG5hbWVfbGFzdCwgYWdlIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIKLWxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbiBOYW1lIChlZywgY29tcGFueSkgW0ludGVybmV0IFdpZGdpdHMgUHR5IEx0ZF06TXkgT3JnYW5pemF0aW9uLCBJbmMuIgorbGlicmFyeS9zcWxpdGUzLCw6bWVtb3J5LAorbGlicmFyeS9zcWxpdGUzLCw6d2hvLCJjdXIuZXhlY3V0ZSgiInNlbGVjdCAqIGZyb20gcGVvcGxlIHdoZXJlIG5hbWVfbGFzdD06d2hvIGFuZCBhZ2U9OmFnZSIiLCB7IiJ3aG8iIjogd2hvLCAiImFnZSIiOiBhZ2V9KSIKIGxpYnJhcnkvc3NsLCw6TXksIk9yZ2FuaXphdGlvbmFsIFVuaXQgTmFtZSAoZWcsIHNlY3Rpb24pIFtdOk15IEdyb3VwIgorbGlicmFyeS9zc2wsLDpNeSwiT3JnYW5pemF0aW9uIE5hbWUgKGVnLCBjb21wYW55KSBbSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkXTpNeSBPcmdhbml6YXRpb24sIEluYy4iCiBsaWJyYXJ5L3NzbCwsOm15c2VydmVyLCJDb21tb24gTmFtZSAoZWcsIFlPVVIgbmFtZSkgW106bXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20iCiBsaWJyYXJ5L3NzbCwsOk15U3RhdGUsU3RhdGUgb3IgUHJvdmluY2UgTmFtZSAoZnVsbCBuYW1lKSBbU29tZS1TdGF0ZV06TXlTdGF0ZQogbGlicmFyeS9zc2wsLDpvcHMsRW1haWwgQWRkcmVzcyBbXTpvcHNAbXlzZXJ2ZXIubXlncm91cC5teW9yZ2FuaXphdGlvbi5jb20KIGxpYnJhcnkvc3NsLCw6U29tZSwiTG9jYWxpdHkgTmFtZSAoZWcsIGNpdHkpIFtdOlNvbWUgQ2l0eSIKIGxpYnJhcnkvc3NsLCw6VVMsQ291bnRyeSBOYW1lICgyIGxldHRlciBjb2RlKSBbQVVdOlVTCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4gYVs6Oi0xXS50b2xpc3QoKQorbGlicmFyeS9zdGR0eXBlcywsOjosPj4+IGFbOjoyXS50b2xpc3QoKQorbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiBoYXNoKHZbOjotMl0pID09IGhhc2goYidhYmNlZmcnWzo6LTJdKQogbGlicmFyeS9zdGR0eXBlcywsOmxlbixzW2xlbihzKTpsZW4ocyldCi1saWJyYXJ5L3N0ZHR5cGVzLCw6bGVuLHNbbGVuKHMpOmxlbihzKV0KK2xpYnJhcnkvc3RkdHlwZXMsLDo6LD4+PiB5ID0gbVs6OjJdCitsaWJyYXJ5L3N0ZHR5cGVzLCw6Oiw+Pj4geiA9IHlbOjotMl0KIGxpYnJhcnkvc3RyaW5nLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdHJpbmcsLDplbmQsc1tzdGFydDplbmRdCi1saWJyYXJ5L3N1YnByb2Nlc3MsLGAsIm91dHB1dD1gbXljbWQgbXlhcmdgIgogbGlicmFyeS9zdWJwcm9jZXNzLCxgLCJvdXRwdXQ9YGRtZXNnIHwgZ3JlcCBoZGFgIgorbGlicmFyeS9zdWJwcm9jZXNzLCxgLCJvdXRwdXQ9YG15Y21kIG15YXJnYCIKK2xpYnJhcnkvdGFyZmlsZSwsOmJ6MiwKIGxpYnJhcnkvdGFyZmlsZSwsOmNvbXByZXNzaW9uLGZpbGVtb2RlWzpjb21wcmVzc2lvbl0KIGxpYnJhcnkvdGFyZmlsZSwsOmd6LAotbGlicmFyeS90YXJmaWxlLCw6YnoyLAorbGlicmFyeS90YXJmaWxlLCw6eHosJ2E6eHonCitsaWJyYXJ5L3RhcmZpbGUsLDp4eiwncjp4eicKK2xpYnJhcnkvdGFyZmlsZSwsOnh6LCd3Onh6JwogbGlicmFyeS90aW1lLCw6bW0sCiBsaWJyYXJ5L3RpbWUsLDpzcywKIGxpYnJhcnkvdHVydGxlLCw6OixFeGFtcGxlOjoKLWxpYnJhcnkvdXJsbGliLCw6cG9ydCw6cG9ydAogbGlicmFyeS91cmxsaWIyLCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKK2xpYnJhcnkvdXJsbGliLCw6cG9ydCw6cG9ydAorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOmNsb3NlLENvbm5lY3Rpb246Y2xvc2UKK2xpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgorbGlicmFyeS91cmxsaWIucmVxdWVzdCwsOnBhc3N3b3JkLCIiImpvZTpwYXNzd29yZEBweXRob24ub3JnIiIiCiBsaWJyYXJ5L3V1aWQsLDp1dWlkLHVybjp1dWlkOjEyMzQ1Njc4LTEyMzQtNTY3OC0xMjM0LTU2NzgxMjM0NTY3OAotbGlicmFyeS94bWxycGNsaWIsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjbGliLCw6cGFzcyx1c2VyOnBhc3MKLWxpYnJhcnkveG1scnBjbGliLCw6cG9ydCxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwYXNzLGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpYnJhcnkveG1scnBjLmNsaWVudCwsOnBhc3MsdXNlcjpwYXNzCitsaWJyYXJ5L3htbHJwYy5jbGllbnQsLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKK2xpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKK2xpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgorbGljZW5zZSwsYCwqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVJJQyBZT1VORyBgYEFTIElTJycgQU5ECitsaWNlbnNlLCxgLFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKK2xpY2Vuc2UsLGAsKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBPcGVuU1NMIFBST0pFQ1QgYGBBUyBJUycnIEFORCBBTlkKIGxpY2Vuc2UsLGAsVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKIGxpY2Vuc2UsLDp6b29rbyxtYWlsdG86em9va29Aem9va28uY29tCi1saWNlbnNlLCxgLFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLXJlZmVyZW5jZS9kYXRhbW9kZWwsLDpzdGVwLGFbaTpqOnN0ZXBdCiByZWZlcmVuY2UvZGF0YW1vZGVsLCw6bWF4LAotcmVmZXJlbmNlL2V4cHJlc3Npb25zLCw6aW5kZXgseFtpbmRleDppbmRleF0KK3JlZmVyZW5jZS9kYXRhbW9kZWwsLDpzdGVwLGFbaTpqOnN0ZXBdCiByZWZlcmVuY2UvZXhwcmVzc2lvbnMsLDpkYXR1bSx7a2V5OmRhdHVtLi4ufQogcmVmZXJlbmNlL2V4cHJlc3Npb25zLCxgLGBleHByZXNzaW9ucy4uLmAKK3JlZmVyZW5jZS9leHByZXNzaW9ucywsOmluZGV4LHhbaW5kZXg6aW5kZXhdCiByZWZlcmVuY2UvZ3JhbW1hciwsOm91dHB1dCwjZGlhZ3JhbTpvdXRwdXQKIHJlZmVyZW5jZS9ncmFtbWFyLCw6cnVsZXMsI2RpYWdyYW06cnVsZXMKLXJlZmVyZW5jZS9ncmFtbWFyLCw6dG9rZW4sI2RpYWdyYW06dG9rZW4KIHJlZmVyZW5jZS9ncmFtbWFyLCxgLCdgJyB0ZXN0bGlzdDEgJ2AnCi1yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsOmZpbGVlbmNvZGluZywjIHZpbTpmaWxlZW5jb2Rpbmc9PGVuY29kaW5nLW5hbWU+CityZWZlcmVuY2UvZ3JhbW1hciwsOnRva2VuLCNkaWFncmFtOnRva2VuCiByZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwiLCAgICAgICA6ICAgICAgIC4gICAgICAgYCAgICAgICA9ICAgICAgIDsiCi10dXRvcmlhbC9kYXRhc3RydWN0dXJlcywsOnZhbHVlLGtleTp2YWx1ZSBwYWlycyB3aXRoaW4gdGhlIGJyYWNlcyBhZGRzIGluaXRpYWwga2V5OnZhbHVlIHBhaXJzCityZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcywsYCwkICAgICAgID8gICAgICAgYAorcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsLDpmaWxlZW5jb2RpbmcsIyB2aW06ZmlsZWVuY29kaW5nPTxlbmNvZGluZy1uYW1lPgogdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMsLDp2YWx1ZSxJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGRlbGV0ZSBhIGtleTp2YWx1ZQotdHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LCJmaWVsZHMgPSBzdHJ1Y3QudW5wYWNrKCc8SUlJSEgnLCBkYXRhW3N0YXJ0OnN0YXJ0KzE2XSkiCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZXh0cmEgPSBkYXRhW3N0YXJ0OnN0YXJ0K2V4dHJhX3NpemVdCi10dXRvcmlhbC9zdGRsaWIyLCw6c3RhcnQsZmlsZW5hbWUgPSBkYXRhW3N0YXJ0OnN0YXJ0K2ZpbGVuYW1lc2l6ZV0KK3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLCw6dmFsdWUsa2V5OnZhbHVlIHBhaXJzIHdpdGhpbiB0aGUgYnJhY2VzIGFkZHMgaW5pdGlhbCBrZXk6dmFsdWUgcGFpcnMKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsImxvZ2dpbmcud2FybmluZygnV2FybmluZzpjb25maWcgZmlsZSAlcyBub3QgZm91bmQnLCAnc2VydmVyLmNvbmYnKSIKIHR1dG9yaWFsL3N0ZGxpYjIsLDpjb25maWcsV0FSTklORzpyb290Oldhcm5pbmc6Y29uZmlnIGZpbGUgc2VydmVyLmNvbmYgbm90IGZvdW5kCiB0dXRvcmlhbC9zdGRsaWIyLCw6Q3JpdGljYWwsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCkBAIC0xNDEsMTUgKzMxMSwxNiBAQAogdHV0b3JpYWwvc3RkbGliMiwsOnJvb3QsQ1JJVElDQUw6cm9vdDpDcml0aWNhbCBlcnJvciAtLSBzaHV0dGluZyBkb3duCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxFUlJPUjpyb290OkVycm9yIG9jY3VycmVkCiB0dXRvcmlhbC9zdGRsaWIyLCw6cm9vdCxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCxleHRyYSA9IGRhdGFbc3RhcnQ6c3RhcnQrZXh0cmFfc2l6ZV0KK3R1dG9yaWFsL3N0ZGxpYjIsLDpzdGFydCwiZmllbGRzID0gc3RydWN0LnVucGFjaygnPElJSUhIJywgZGF0YVtzdGFydDpzdGFydCsxNl0pIgordHV0b3JpYWwvc3RkbGliMiwsOnN0YXJ0LGZpbGVuYW1lID0gZGF0YVtzdGFydDpzdGFydCtmaWxlbmFtZXNpemVdCiB0dXRvcmlhbC9zdGRsaWIyLCw6V2FybmluZyxXQVJOSU5HOnJvb3Q6V2FybmluZzpjb25maWcgZmlsZSBzZXJ2ZXIuY29uZiBub3QgZm91bmQKLXVzaW5nL2NtZGxpbmUsLDpsaW5lLGZpbGU6bGluZTogY2F0ZWdvcnk6IG1lc3NhZ2UKIHVzaW5nL2NtZGxpbmUsLDpjYXRlZ29yeSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmVycm9yaGFuZGxlciw6ZXJyb3JoYW5kbGVyCiB1c2luZy9jbWRsaW5lLCw6bGluZSxhY3Rpb246bWVzc2FnZTpjYXRlZ29yeTptb2R1bGU6bGluZQordXNpbmcvY21kbGluZSwsOmxpbmUsZmlsZTpsaW5lOiBjYXRlZ29yeTogbWVzc2FnZQogdXNpbmcvY21kbGluZSwsOm1lc3NhZ2UsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKIHVzaW5nL2NtZGxpbmUsLDptb2R1bGUsYWN0aW9uOm1lc3NhZ2U6Y2F0ZWdvcnk6bW9kdWxlOmxpbmUKLXVzaW5nL2NtZGxpbmUsLDplcnJvcmhhbmRsZXIsOmVycm9yaGFuZGxlcgotdXNpbmcvd2luZG93cywxNjIsYCxgYCB0aGlzIGZpeGVzIHN5bnRheCBoaWdobGlnaHRpbmcgZXJyb3JzIGluIHNvbWUgZWRpdG9ycyBkdWUgdG8gdGhlIFxcXFwgaGFja2VyeQotdXNpbmcvd2luZG93cywxNzAsYCxgYAogd2hhdHNuZXcvMi4wLDQxOCw6bGVuLAogd2hhdHNuZXcvMi4zLCw6OiwKIHdoYXRzbmV3LzIuMywsOmNvbmZpZywKQEAgLTE2MywxMTMgKzMzNCwzOCBAQAogd2hhdHNuZXcvMi41LCw6bWVtb3J5LDptZW1vcnk6CiB3aGF0c25ldy8yLjUsLDpzdGVwLFtzdGFydDpzdG9wOnN0ZXBdCiB3aGF0c25ldy8yLjUsLDpzdG9wLFtzdGFydDpzdG9wOnN0ZXBdCi1kaXN0dXRpbHMvZXhhbXBsZXMsMjY3LGAsVGhpcyBpcyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZm9vYmFyYGAgcGFja2FnZS4KLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwicHJpbnQoKGxhbWJkYSBSdSxSbyxJdSxJbyxJTSxTeCxTeTpyZWR1Y2UobGFtYmRhIHgseTp4K3ksbWFwKGxhbWJkYSB5LCIKLWZhcS9wcm9ncmFtbWluZywsOnJlZHVjZSwiU3g9U3gsU3k9U3k6cmVkdWNlKGxhbWJkYSB4LHk6eCt5LG1hcChsYW1iZGEgeCx4Yz1SdSx5Yz15YyxSdT1SdSxSbz1SbywiCi1mYXEvcHJvZ3JhbW1pbmcsLDpjaHIsIj49NC4wKSBvciAxK2YoeGMseWMseCp4LXkqeSt4YywyLjAqeCp5K3ljLGstMSxmKTpmKHhjLHljLHgseSxrLGYpOmNocigiCi1mYXEvcHJvZ3JhbW1pbmcsLDo6LGZvciB4IGluIHNlcXVlbmNlWzo6LTFdOgotZmFxL3dpbmRvd3MsMjI5LDpFT0YsQHNldGxvY2FsIGVuYWJsZWV4dGVuc2lvbnMgJiBweXRob24gLXggJX5mMCAlKiAmIGdvdG8gOkVPRgotZmFxL3dpbmRvd3MsMzkzLDpSRUcsLnB5IDpSRUdfU1o6IGM6XDxwYXRoIHRvIHB5dGhvbj5ccHl0aG9uLmV4ZSAtdSAlcyAlcwotbGlicmFyeS9iaXNlY3QsMzIsOmhpLGFsbCh2YWwgPj0geCBmb3IgdmFsIGluIGFbaTpoaV0pCi1saWJyYXJ5L2Jpc2VjdCw0Miw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQotbGlicmFyeS9odHRwLmNsaWVudCw1Miw6cG9ydCxob3N0OnBvcnQKLWxpYnJhcnkvbm50cGxpYiwsOmJ5dGVzLDpieXRlcwotbGlicmFyeS9ubnRwbGliLCw6bGluZXMsOmxpbmVzCi1saWJyYXJ5L25udHBsaWIsLDpsaW5lcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L25udHBsaWIsLDpieXRlcywiWyd4cmVmJywgJ2Zyb20nLCAnOmxpbmVzJywgJzpieXRlcycsICdyZWZlcmVuY2VzJywgJ2RhdGUnLCAnbWVzc2FnZS1pZCcsICdzdWJqZWN0J10iCi1saWJyYXJ5L3BpY2tsZSwsOm1lbW9yeSwiY29ubiA9IHNxbGl0ZTMuY29ubmVjdCgiIjptZW1vcnk6IiIpIgotbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLCIoc29ydCBieSBmaWxlbmFtZTpsaW5lbm8pLCIKLWxpYnJhcnkvc29ja2V0LCw6OiwiKDEwLCAxLCA2LCAnJywgKCcyMDAxOjg4ODoyMDAwOmQ6OmEyJywgODAsIDAsIDApKV0iCi1saWJyYXJ5L3N0ZHR5cGVzLCw6ZW5kLHNbc3RhcnQ6ZW5kXQotbGlicmFyeS9zdGR0eXBlcywsOmVuZCxzW3N0YXJ0OmVuZF0KLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpjbG9zZSxDb25uZWN0aW9uOmNsb3NlCi1saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LCw6cGFzc3dvcmQsIiIiam9lOnBhc3N3b3JkQHB5dGhvbi5vcmciIiIKLWxpYnJhcnkvdXJsbGliLnJlcXVlc3QsLDpsYW5nLCJ4bWxucz0iImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIiB4bWw6bGFuZz0iImVuIiIgbGFuZz0iImVuIiI+XG5cbjxoZWFkPlxuIgotbGlicmFyeS94bWxycGMuY2xpZW50LDEwMyw6cGFzcyxodHRwOi8vdXNlcjpwYXNzQGhvc3Q6cG9ydC9wYXRoCi1saWJyYXJ5L3htbHJwYy5jbGllbnQsMTAzLDpwb3J0LGh0dHA6Ly91c2VyOnBhc3NAaG9zdDpwb3J0L3BhdGgKLWxpYnJhcnkveG1scnBjLmNsaWVudCwxMDMsOnBhc3MsdXNlcjpwYXNzCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgT3BlblNTTCBQUk9KRUNUIGBgQVMgSVMnJyBBTkQgQU5ZCi1saWNlbnNlLCxgLCogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBFUklDIFlPVU5HIGBgQVMgSVMnJyBBTkQKLWxpY2Vuc2UsLGAsImBgU29mdHdhcmUnJyksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyIKLWxpY2Vuc2UsLGAsIlRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIgotcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsNzA0LGAsJCAgICAgICA/ICAgICAgIGAKLXdoYXRzbmV3LzIuNyw3MzUsOlN1bmRheSwnMjAwOTo0OlN1bmRheScKLXdoYXRzbmV3LzIuNyw4NjIsOjosImV4cG9ydCBQWVRIT05XQVJOSU5HUz1hbGwsZXJyb3I6OjpDb29raWU6MCIKLXdoYXRzbmV3LzIuNyw4NjIsOkNvb2tpZSwiZXhwb3J0IFBZVEhPTldBUk5JTkdTPWFsbCxlcnJvcjo6OkNvb2tpZTowIgotd2hhdHNuZXcvMi43LDE2MTksOjosPj4+IHVybHBhcnNlLnVybHBhcnNlKCdodHRwOi8vWzEwODA6Ojg6ODAwOjIwMEM6NDE3QV0vZm9vJykKIHdoYXRzbmV3LzIuNywxNjE5LDo6LCJQYXJzZVJlc3VsdChzY2hlbWU9J2h0dHAnLCBuZXRsb2M9J1sxMDgwOjo4OjgwMDoyMDBDOjQxN0FdJywiCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFNldCB0aGUgb3B0aW9uYWwgYHJhd2AgYXJndW1lbnQgb2YgZ2V0KCkgdG8gVHJ1ZSBpZiB5b3Ugd2lzaCB0byBkaXNhYmxlCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsYCwjIFRoZSBvcHRpb25hbCBgdmFyc2AgYXJndW1lbnQgaXMgYSBkaWN0IHdpdGggbWVtYmVycyB0aGF0IHdpbGwgdGFrZQotbGlicmFyeS9jb25maWdwYXJzZXIsLGAsIyBUaGUgb3B0aW9uYWwgYGZhbGxiYWNrYCBhcmd1bWVudCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGEgZmFsbGJhY2sgdmFsdWUKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6b3B0aW9uLCR7c2VjdGlvbjpvcHRpb259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOnN5c3RlbSxwYXRoOiAke0NvbW1vbjpzeXN0ZW1fZGlyfS9MaWJyYXJ5L0ZyYW1ld29ya3MvCi1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOmhvbWUsbXlfZGlyOiAke0NvbW1vbjpob21lX2Rpcn0vdHdvc2hlZHMKLWxpYnJhcnkvY29uZmlncGFyc2VyLCw6cGF0aCxweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L2NvbmZpZ3BhcnNlciwsOlB5dGhvbixweXRob25fZGlyOiAke0ZyYW1ld29ya3M6cGF0aH0vUHl0aG9uL1ZlcnNpb25zLyR7RnJhbWV3b3JrczpQeXRob259Ci1saWJyYXJ5L3BkYiwsOmxpbmVubyxbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dCi1saWJyYXJ5L3BkYiwsOmxpbmVubyxmaWxlbmFtZTpsaW5lbm8KLWxpYnJhcnkvbG9nZ2luZywsOldhdGNoLFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOnJvb3Q6U28gc2hvdWxkIHRoaXMKLWxpYnJhcnkvbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWxpYnJhcnkvbG9nZ2luZywsOkRvaW5nLElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWxpYnJhcnkvbG9nZ2luZywsOkZpbmlzaGVkLElORk86cm9vdDpGaW5pc2hlZAotbGlicmFyeS9sb2dnaW5nLCw6TG9vayxXQVJOSU5HOnJvb3Q6TG9vayBiZWZvcmUgeW91IGxlYXAhCi1saWJyYXJ5L2xvZ2dpbmcsLDpTbyxJTkZPOlNvIHNob3VsZCB0aGlzCi1saWJyYXJ5L2xvZ2dpbmcsLDpsb2dnZXIsc2V2ZXJpdHk6bG9nZ2VyIG5hbWU6bWVzc2FnZQotbGlicmFyeS9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi13aGF0c25ldy8zLjIsLDpkaXJlY3RvcnksLi4uICAgJHtidWlsZG91dDpkaXJlY3Rvcnl9L2Rvd25sb2Fkcy9kaXN0Ci13aGF0c25ldy8zLjIsLDpsb2NhdGlvbiwuLi4gem9wZTktbG9jYXRpb24gPSAke3pvcGU5OmxvY2F0aW9ufQotd2hhdHNuZXcvMy4yLCw6cHJlZml4LC4uLiB6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpXYXRjaCBvdXQhCi1ob3d0by9sb2dnaW5nLCw6V2F0Y2gsV0FSTklORzpyb290OldhdGNoIG91dCEKLWhvd3RvL2xvZ2dpbmcsLDpyb290LERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOnJvb3Q6VGhpcyBtZXNzYWdlIHNob3VsZCBnbyB0byB0aGUgbG9nIGZpbGUKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOlNvLElORk86cm9vdDpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOnJvb3QsIldBUk5JTkc6cm9vdDpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpyb290OkFuZCB0aGlzLCB0b28iCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6U3RhcnRlZAotaG93dG8vbG9nZ2luZywsOlN0YXJ0ZWQsSU5GTzpyb290OlN0YXJ0ZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LElORk86cm9vdDpEb2luZyBzb21ldGhpbmcKLWhvd3RvL2xvZ2dpbmcsLDpEb2luZyxJTkZPOnJvb3Q6RG9pbmcgc29tZXRoaW5nCi1ob3d0by9sb2dnaW5nLCw6cm9vdCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpGaW5pc2hlZCxJTkZPOnJvb3Q6RmluaXNoZWQKLWhvd3RvL2xvZ2dpbmcsLDpyb290LFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpMb29rLFdBUk5JTkc6cm9vdDpMb29rIGJlZm9yZSB5b3UgbGVhcCEKLWhvd3RvL2xvZ2dpbmcsLDpUaGlzLERFQlVHOlRoaXMgbWVzc2FnZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBjb25zb2xlCi1ob3d0by9sb2dnaW5nLCw6U28sSU5GTzpTbyBzaG91bGQgdGhpcwotaG93dG8vbG9nZ2luZywsOkFuZCwiV0FSTklORzpBbmQgdGhpcywgdG9vIgotaG93dG8vbG9nZ2luZywsOmxvZ2dlcixzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1ob3d0by9sb2dnaW5nLCw6bWVzc2FnZSxzZXZlcml0eTpsb2dnZXIgbmFtZTptZXNzYWdlCi1saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMsLDpwb3J0LGhvc3Q6cG9ydAotbGlicmFyeS9pbWFwbGliLDExNiw6TU0sIiIiREQtTW1tLVlZWVkgSEg6TU06U1MiCi1saWJyYXJ5L2ltYXBsaWIsMTE2LDpTUywiIiJERC1NbW0tWVlZWSBISDpNTTpTUyIKLXdoYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCi1ob3d0by9weXBvcnRpbmcsNzUsOjosIyBtYWtlIHN1cmUgdG8gdXNlIDo6IFB5dGhvbiAqYW5kKiA6OiBQeXRob24gOjogMyBzbwotaG93dG8vcHlwb3J0aW5nLDc1LDo6LCInUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uJywiCi1ob3d0by9weXBvcnRpbmcsNzUsOjosJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzJwotd2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKLXdoYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKLXdoYXRzbmV3LzMuMiwsOmxvY2F0aW9uLHpvcGU5LWxvY2F0aW9uID0gJHt6b3BlOTpsb2NhdGlvbn0KLXdoYXRzbmV3LzMuMiwsOnByZWZpeCx6b3BlLWNvbmYgPSAke2N1c3RvbTpwcmVmaXh9L2V0Yy96b3BlLmNvbmYKLXdoYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKLXdoYXRzbmV3LzMuMiwsOmRlYWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQotd2hhdHNuZXcvMy4yLCw6ZmVlZCw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCi13aGF0c25ldy8zLjIsLDpiZWVmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi13aGF0c25ldy8zLjIsLDpjYWZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8yLjcsMTYxOSw6Oiw+Pj4gdXJscGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bMTA4MDo6ODo4MDA6MjAwQzo0MTdBXS9mb28nKQord2hhdHNuZXcvMi43LDczNSw6U3VuZGF5LCcyMDA5OjQ6U3VuZGF5Jword2hhdHNuZXcvMi43LDg2Miw6Q29va2llLCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCit3aGF0c25ldy8yLjcsODYyLDo6LCJleHBvcnQgUFlUSE9OV0FSTklOR1M9YWxsLGVycm9yOjo6Q29va2llOjAiCiB3aGF0c25ldy8zLjIsLDphZmZlLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDphZmZlLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmJlZWYsIm5ldGxvYz0nW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0nLCIKK3doYXRzbmV3LzMuMiwsOmJlZWYsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Y2FmZSwibmV0bG9jPSdbZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXScsIgord2hhdHNuZXcvMy4yLCw6Y2FmZSw+Pj4gdXJsbGliLnBhcnNlLnVybHBhcnNlKCdodHRwOi8vW2RlYWQ6YmVlZjpjYWZlOjU0MTc6YWZmZTo4RkEzOmRlYWY6ZmVlZF0vZm9vLycpCiB3aGF0c25ldy8zLjIsLDpkZWFmLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCit3aGF0c25ldy8zLjIsLDpkZWFmLD4+PiB1cmxsaWIucGFyc2UudXJscGFyc2UoJ2h0dHA6Ly9bZGVhZDpiZWVmOmNhZmU6NTQxNzphZmZlOjhGQTM6ZGVhZjpmZWVkXS9mb28vJykKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwuLi4gICAke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOmRpcmVjdG9yeSwke2J1aWxkb3V0OmRpcmVjdG9yeX0vZG93bmxvYWRzL2Rpc3QKK3doYXRzbmV3LzMuMiwsOjosIiQgZXhwb3J0IFBZVEhPTldBUk5JTkdTPSdpZ25vcmU6OlJ1bnRpbWVXYXJuaW5nOjosb25jZTo6VW5pY29kZVdhcm5pbmc6OiciCiB3aGF0c25ldy8zLjIsLDpmZWVkLCJuZXRsb2M9J1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidjbGFzc2lmaWVycyc6IFsnRGV2ZWxvcG1lbnQgU3RhdHVzIDo6IDQgLSBCZXRhJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidJbnRlbmRlZCBBdWRpZW5jZSA6OiBEZXZlbG9wZXJzJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidMaWNlbnNlIDo6IE9TSSBBcHByb3ZlZCA6OiBNSVQgTGljZW5zZScsIgotbGlicmFyeS9wcHJpbnQsMjA5LDo6LCInTmF0dXJhbCBMYW5ndWFnZSA6OiBFbmdsaXNoJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidPcGVyYXRpbmcgU3lzdGVtIDo6IE9TIEluZGVwZW5kZW50JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24nLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyJywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi42JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMi43JywiCi1saWJyYXJ5L3BwcmludCwyMDksOjosIidUb3BpYyA6OiBTb2Z0d2FyZSBEZXZlbG9wbWVudCA6OiBMaWJyYXJpZXMnLCIKLWxpYnJhcnkvcHByaW50LDIwOSw6OiwiJ1RvcGljIDo6IFNvZnR3YXJlIERldmVsb3BtZW50IDo6IExpYnJhcmllcyA6OiBQeXRob24gTW9kdWxlcyddLCIKK3doYXRzbmV3LzMuMiwsOmZlZWQsPj4+IHVybGxpYi5wYXJzZS51cmxwYXJzZSgnaHR0cDovL1tkZWFkOmJlZWY6Y2FmZTo1NDE3OmFmZmU6OEZBMzpkZWFmOmZlZWRdL2Zvby8nKQord2hhdHNuZXcvMy4yLCw6Z3osIj4+PiB3aXRoIHRhcmZpbGUub3BlbihuYW1lPSdteWFyY2hpdmUudGFyLmd6JywgbW9kZT0ndzpneicpIGFzIHRmOiIKK3doYXRzbmV3LzMuMiwsOmxvY2F0aW9uLC4uLiB6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpsb2NhdGlvbix6b3BlOS1sb2NhdGlvbiA9ICR7em9wZTk6bG9jYXRpb259Cit3aGF0c25ldy8zLjIsLDpwcmVmaXgsLi4uIHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgord2hhdHNuZXcvMy4yLCw6cHJlZml4LHpvcGUtY29uZiA9ICR7Y3VzdG9tOnByZWZpeH0vZXRjL3pvcGUuY29uZgord2hhdHNuZXcvbmV3cywsOnBsYXRmb3JtLDpwbGF0Zm9ybToKK3doYXRzbmV3L25ld3MsLDpwYXNzd29yZCw6IFVucXVvdGUgYmVmb3JlIGI2NGVuY29kaW5nIHVzZXI6cGFzc3dvcmQgZHVyaW5nIEJhc2ljCit3aGF0c25ldy9uZXdzLCw6Y2xvc2UsQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIuCit3aGF0c25ldy9uZXdzLCw6UHl0aG9uQ21kLCJXaXRoIFRrIDwgOC41IF90a2ludGVyLmM6UHl0aG9uQ21kKCkgcmFpc2VkIFVuaWNvZGVEZWNvZGVFcnJvciwgY2F1c2VkIgord2hhdHNuZXcvbmV3cywsOmNsb3NlLDogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKK3doYXRzbmV3L25ld3MsLDo6LCI6IEZpeCBGVFAgdGVzdHMgZm9yIElQdjYsIGJpbmQgdG8gIiI6OjEiIiBpbnN0ZWFkIG9mICIibG9jYWxob3N0IiIuIgord2hhdHNuZXcvbmV3cywsOnRlc3QsOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQord2hhdHNuZXcvbmV3cywsOnRlc3QsOiBGaXggdGVzdF9wb3NpeDp0ZXN0X2dldGdyb3VwcyBmYWlsdXJlIHVuZGVyIFNvbGFyaXMuICBQYXRjaAord2hhdHNuZXcvbmV3cywsOk9saW1pdCxEcm9wIC1PUFQ6T2xpbWl0IGNvbXBpbGVyIG9wdGlvbi4KK3doYXRzbmV3L25ld3MsLDpNQVhZRUFSLHRpbWVkZWx0YSBmcm9tIGRhdGUgb3IgZGF0ZXRpbWUgZmFsbHMgb3V0c2lkZSBvZiB0aGUgTUlOWUVBUjpNQVhZRUFSIHJhbmdlLgord2hhdHNuZXcvbmV3cywsOmJ6Mix3aXRoIG1vZGUgJ3InIG9yICdyOmJ6MicgYW5kIGEgZmlsZW9iaiBhcmd1bWVudCB0aGF0IGNvbnRhaW5lZCBubyBkYXRhIG9yCit3aGF0c25ldy9uZXdzLCw6ZGIyLDogQWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWRibWxpYm9yZGVyPWRiMTpkYjI6Li4uIHRvIHNwZWNpZnkKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdCBiL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAppbmRleCBjZmYyNzEwLi4zMjgzZTU0IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CkBAIC0xODQsNyArMTg0LDYgQEAKIAogLi4gY29kZS1ibG9jazo6IG5vbmUKIAotCiAgICBBZnRlciBsb2NhbCBhc3NpZ25tZW50OiB0ZXN0IHNwYW0KICAgIEFmdGVyIG5vbmxvY2FsIGFzc2lnbm1lbnQ6IG5vbmxvY2FsIHNwYW0KICAgIEFmdGVyIGdsb2JhbCBhc3NpZ25tZW50OiBub25sb2NhbCBzcGFtCkBAIC02OTgsOSArNjk3LDkgQEAKICAgIGNsYXNzIEQoQyk6CiAgICAgICAgcGFzcwogCi0gICBmb3IgYyBpbiBbQiwgQywgRF06CisgICBmb3IgY2xzIGluIFtCLCBDLCBEXToKICAgICAgICB0cnk6Ci0gICAgICAgICAgIHJhaXNlIGMoKQorICAgICAgICAgICByYWlzZSBjbHMoKQogICAgICAgIGV4Y2VwdCBEOgogICAgICAgICAgICBwcmludCgiRCIpCiAgICAgICAgZXhjZXB0IEM6CmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0IGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdAppbmRleCBlMDA4ZGQ4Li4zNmFiYzljIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CisrKyBiL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKQEAgLTE5LDEzICsxOSwxMyBAQAogLi4gbWV0aG9kOjogbGlzdC5hcHBlbmQoeCkKICAgIDpub2luZGV4OgogCi0gICBBZGQgYW4gaXRlbSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0OyBlcXVpdmFsZW50IHRvIGBgYVtsZW4oYSk6XSA9IFt4XWBgLgorICAgQWRkIGFuIGl0ZW0gdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gIEVxdWl2YWxlbnQgdG8gYGBhW2xlbihhKTpdID0gW3hdYGAuCiAKIAogLi4gbWV0aG9kOjogbGlzdC5leHRlbmQoTCkKICAgIDpub2luZGV4OgogCi0gICBFeHRlbmQgdGhlIGxpc3QgYnkgYXBwZW5kaW5nIGFsbCB0aGUgaXRlbXMgaW4gdGhlIGdpdmVuIGxpc3Q7IGVxdWl2YWxlbnQgdG8KKyAgIEV4dGVuZCB0aGUgbGlzdCBieSBhcHBlbmRpbmcgYWxsIHRoZSBpdGVtcyBpbiB0aGUgZ2l2ZW4gbGlzdC4gIEVxdWl2YWxlbnQgdG8KICAgIGBgYVtsZW4oYSk6XSA9IExgYC4KIAogCkBAIC00MCw4ICs0MCw4IEBACiAuLiBtZXRob2Q6OiBsaXN0LnJlbW92ZSh4KQogICAgOm5vaW5kZXg6CiAKLSAgIFJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZSBsaXN0IHdob3NlIHZhbHVlIGlzICp4Ki4gSXQgaXMgYW4gZXJyb3IgaWYgdGhlcmUKLSAgIGlzIG5vIHN1Y2ggaXRlbS4KKyAgIFJlbW92ZSB0aGUgZmlyc3QgaXRlbSBmcm9tIHRoZSBsaXN0IHdob3NlIHZhbHVlIGlzICp4Ki4gIEl0IGlzIGFuIGVycm9yIGlmCisgICB0aGVyZSBpcyBubyBzdWNoIGl0ZW0uCiAKIAogLi4gbWV0aG9kOjogbGlzdC5wb3AoW2ldKQpAQCAtNzAsMTMgKzcwLDE0IEBACiAuLiBtZXRob2Q6OiBsaXN0LnNvcnQoKQogICAgOm5vaW5kZXg6CiAKLSAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0LCBpbiBwbGFjZS4KKyAgIFNvcnQgdGhlIGl0ZW1zIG9mIHRoZSBsaXN0IGluIHBsYWNlLgogCiAKIC4uIG1ldGhvZDo6IGxpc3QucmV2ZXJzZSgpCiAgICA6bm9pbmRleDoKIAotICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QsIGluIHBsYWNlLgorICAgUmV2ZXJzZSB0aGUgZWxlbWVudHMgb2YgdGhlIGxpc3QgaW4gcGxhY2UuCisKIAogQW4gZXhhbXBsZSB0aGF0IHVzZXMgbW9zdCBvZiB0aGUgbGlzdCBtZXRob2RzOjoKIApAQCAtOTksNiArMTAwLDEwIEBACiAgICA+Pj4gYQogICAgWy0xLCAxLCA2Ni4yNSwgMzMzLCAzMzMsIDEyMzQuNV0KIAorWW91IG1pZ2h0IGhhdmUgbm90aWNlZCB0aGF0IG1ldGhvZHMgbGlrZSBgYGluc2VydGBgLCBgYHJlbW92ZWBgIG9yIGBgc29ydGBgIHRoYXQKK21vZGlmeSB0aGUgbGlzdCBoYXZlIG5vIHJldHVybiB2YWx1ZSBwcmludGVkIC0tIHRoZXkgcmV0dXJuIGBgTm9uZWBgLiBbMV1fICBUaGlzCitpcyBhIGRlc2lnbiBwcmluY2lwbGUgZm9yIGFsbCBtdXRhYmxlIGRhdGEgc3RydWN0dXJlcyBpbiBQeXRob24uCisKIAogLi4gX3R1dC1saXN0cy1hcy1zdGFja3M6CiAKQEAgLTQ4MCw3ICs0ODUsNyBAQAogCiBQZXJmb3JtaW5nIGBgbGlzdChkLmtleXMoKSlgYCBvbiBhIGRpY3Rpb25hcnkgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBrZXlzCiB1c2VkIGluIHRoZSBkaWN0aW9uYXJ5LCBpbiBhcmJpdHJhcnkgb3JkZXIgKGlmIHlvdSB3YW50IGl0IHNvcnRlZCwganVzdCB1c2UKLWBgc29ydGVkKGQua2V5cygpKWBgIGluc3RlYWQpLiBbMV1fICBUbyBjaGVjayB3aGV0aGVyIGEgc2luZ2xlIGtleSBpcyBpbiB0aGUKK2Bgc29ydGVkKGQua2V5cygpKWBgIGluc3RlYWQpLiBbMl1fICBUbyBjaGVjayB3aGV0aGVyIGEgc2luZ2xlIGtleSBpcyBpbiB0aGUKIGRpY3Rpb25hcnksIHVzZSB0aGUgOmtleXdvcmQ6YGluYCBrZXl3b3JkLgogCiBIZXJlIGlzIGEgc21hbGwgZXhhbXBsZSB1c2luZyBhIGRpY3Rpb25hcnk6OgpAQCAtNjc3LDYgKzY4Miw5IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbMV0gQ2FsbGluZyBgYGQua2V5cygpYGAgd2lsbCByZXR1cm4gYSA6ZGZuOmBkaWN0aW9uYXJ5IHZpZXdgIG9iamVjdC4gIEl0CisuLiBbMV0gT3RoZXIgbGFuZ3VhZ2VzIG1heSByZXR1cm4gdGhlIG11dGF0ZWQgb2JqZWN0LCB3aGljaCBhbGxvd3MgbWV0aG9kCisgICAgICAgY2hhaW5pbmcsIHN1Y2ggYXMgYGBkLT5pbnNlcnQoImEiKS0+cmVtb3ZlKCJiIiktPnNvcnQoKTtgYC4KKworLi4gWzJdIENhbGxpbmcgYGBkLmtleXMoKWBgIHdpbGwgcmV0dXJuIGEgOmRmbjpgZGljdGlvbmFyeSB2aWV3YCBvYmplY3QuICBJdAogICAgICAgIHN1cHBvcnRzIG9wZXJhdGlvbnMgbGlrZSBtZW1iZXJzaGlwIHRlc3QgYW5kIGl0ZXJhdGlvbiwgYnV0IGl0cyBjb250ZW50cwogICAgICAgIGFyZSBub3QgaW5kZXBlbmRlbnQgb2YgdGhlIG9yaWdpbmFsIGRpY3Rpb25hcnkgLS0gaXQgaXMgb25seSBhICp2aWV3Ki4KZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CmluZGV4IGQ2MWRhZmMuLmNkYzJiZjIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdApAQCAtMTAsMTMgKzEwLDEzIEBACiBJbnZva2luZyB0aGUgSW50ZXJwcmV0ZXIKID09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjJgCitUaGUgUHl0aG9uIGludGVycHJldGVyIGlzIHVzdWFsbHkgaW5zdGFsbGVkIGFzIDpmaWxlOmAvdXNyL2xvY2FsL2Jpbi9weXRob24zLjNgCiBvbiB0aG9zZSBtYWNoaW5lcyB3aGVyZSBpdCBpcyBhdmFpbGFibGU7IHB1dHRpbmcgOmZpbGU6YC91c3IvbG9jYWwvYmluYCBpbiB5b3VyCiBVbml4IHNoZWxsJ3Mgc2VhcmNoIHBhdGggbWFrZXMgaXQgcG9zc2libGUgdG8gc3RhcnQgaXQgYnkgdHlwaW5nIHRoZSBjb21tYW5kOgogCiAuLiBjb2RlLWJsb2NrOjogdGV4dAogCi0gICBweXRob24zLjIKKyAgIHB5dGhvbjMuMwogCiB0byB0aGUgc2hlbGwuIFsjXV8gU2luY2UgdGhlIGNob2ljZSBvZiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBpbnRlcnByZXRlciBsaXZlcwogaXMgYW4gaW5zdGFsbGF0aW9uIG9wdGlvbiwgb3RoZXIgcGxhY2VzIGFyZSBwb3NzaWJsZTsgY2hlY2sgd2l0aCB5b3VyIGxvY2FsCkBAIC0yNCwxMSArMjQsMTEgQEAKIHBvcHVsYXIgYWx0ZXJuYXRpdmUgbG9jYXRpb24uKQogCiBPbiBXaW5kb3dzIG1hY2hpbmVzLCB0aGUgUHl0aG9uIGluc3RhbGxhdGlvbiBpcyB1c3VhbGx5IHBsYWNlZCBpbgotOmZpbGU6YEM6XFxQeXRob24zMmAsIHRob3VnaCB5b3UgY2FuIGNoYW5nZSB0aGlzIHdoZW4geW91J3JlIHJ1bm5pbmcgdGhlCis6ZmlsZTpgQzpcXFB5dGhvbjMzYCwgdGhvdWdoIHlvdSBjYW4gY2hhbmdlIHRoaXMgd2hlbiB5b3UncmUgcnVubmluZyB0aGUKIGluc3RhbGxlci4gIFRvIGFkZCB0aGlzIGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsICB5b3UgY2FuIHR5cGUgdGhlIGZvbGxvd2luZwogY29tbWFuZCBpbnRvIHRoZSBjb21tYW5kIHByb21wdCBpbiBhIERPUyBib3g6OgogCi0gICBzZXQgcGF0aD0lcGF0aCU7QzpccHl0aG9uMzIKKyAgIHNldCBwYXRoPSVwYXRoJTtDOlxweXRob24zMwogCiBUeXBpbmcgYW4gZW5kLW9mLWZpbGUgY2hhcmFjdGVyICg6a2JkOmBDb250cm9sLURgIG9uIFVuaXgsIDprYmQ6YENvbnRyb2wtWmAgb24KIFdpbmRvd3MpIGF0IHRoZSBwcmltYXJ5IHByb21wdCBjYXVzZXMgdGhlIGludGVycHJldGVyIHRvIGV4aXQgd2l0aCBhIHplcm8gZXhpdApAQCAtOTUsOCArOTUsOCBAQAogcHJpbnRzIGEgd2VsY29tZSBtZXNzYWdlIHN0YXRpbmcgaXRzIHZlcnNpb24gbnVtYmVyIGFuZCBhIGNvcHlyaWdodCBub3RpY2UKIGJlZm9yZSBwcmludGluZyB0aGUgZmlyc3QgcHJvbXB0OjoKIAotICAgJCBweXRob24zLjIKLSAgIFB5dGhvbiAzLjIuMyAoZGVmYXVsdCwgTWF5ICAzIDIwMTIsIDE1OjU0OjQyKQorICAgJCBweXRob24zLjMKKyAgIFB5dGhvbiAzLjMgKGRlZmF1bHQsIFNlcCAyNCAyMDEyLCAwOToyNTowNCkKICAgIFtHQ0MgNC42LjNdIG9uIGxpbnV4MgogICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgPj4+CkBAIC0xNDksNyArMTQ5LDcgQEAKIE9uIEJTRCdpc2ggVW5peCBzeXN0ZW1zLCBQeXRob24gc2NyaXB0cyBjYW4gYmUgbWFkZSBkaXJlY3RseSBleGVjdXRhYmxlLCBsaWtlCiBzaGVsbCBzY3JpcHRzLCBieSBwdXR0aW5nIHRoZSBsaW5lIDo6CiAKLSAgICMhIC91c3IvYmluL2VudiBweXRob24zLjIKKyAgICMhIC91c3IvYmluL2VudiBweXRob24zLjMKIAogKGFzc3VtaW5nIHRoYXQgdGhlIGludGVycHJldGVyIGlzIG9uIHRoZSB1c2VyJ3MgOmVudnZhcjpgUEFUSGApIGF0IHRoZSBiZWdpbm5pbmcKIG9mIHRoZSBzY3JpcHQgYW5kIGdpdmluZyB0aGUgZmlsZSBhbiBleGVjdXRhYmxlIG1vZGUuICBUaGUgYGAjIWBgIG11c3QgYmUgdGhlCmRpZmYgLS1naXQgYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CmluZGV4IGI2ZDk0YWMuLmMwN2E2NjggMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy90dXRvcmlhbC9pbnRyb2R1Y3Rpb24ucnN0CkBAIC0zOTAsNyArMzkwLDcgQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgIDpyZWY6YHR5cGVzc2VxYAorICAgOnJlZjpgdGV4dHNlcWAKICAgICAgIFN0cmluZ3MgYXJlIGV4YW1wbGVzIG9mICpzZXF1ZW5jZSB0eXBlcyosIGFuZCBzdXBwb3J0IHRoZSBjb21tb24KICAgICAgIG9wZXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHN1Y2ggdHlwZXMuCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKaW5kZXggMTI4ZTZhNi4uMWViZjc5MiAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYi5yc3QKQEAgLTE1LDcgKzE1LDcgQEAKIAogICAgPj4+IGltcG9ydCBvcwogICAgPj4+IG9zLmdldGN3ZCgpICAgICAgIyBSZXR1cm4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKLSAgICdDOlxcUHl0aG9uMzEnCisgICAnQzpcXFB5dGhvbjMzJwogICAgPj4+IG9zLmNoZGlyKCcvc2VydmVyL2FjY2Vzc2xvZ3MnKSAgICMgQ2hhbmdlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKICAgID4+PiBvcy5zeXN0ZW0oJ21rZGlyIHRvZGF5JykgICAjIFJ1biB0aGUgY29tbWFuZCBta2RpciBpbiB0aGUgc3lzdGVtIHNoZWxsCiAgICAwCkBAIC0yMDMsNyArMjAzLDcgQEAKID09PT09PT09PT09PT09PT0KIAogQ29tbW9uIGRhdGEgYXJjaGl2aW5nIGFuZCBjb21wcmVzc2lvbiBmb3JtYXRzIGFyZSBkaXJlY3RseSBzdXBwb3J0ZWQgYnkgbW9kdWxlcwotaW5jbHVkaW5nOiA6bW9kOmB6bGliYCwgOm1vZDpgZ3ppcGAsIDptb2Q6YGJ6MmAsIDptb2Q6YHppcGZpbGVgIGFuZAoraW5jbHVkaW5nOiA6bW9kOmB6bGliYCwgOm1vZDpgZ3ppcGAsIDptb2Q6YGJ6MmAsIDptb2Q6YGx6bWFgLCA6bW9kOmB6aXBmaWxlYCBhbmQKIDptb2Q6YHRhcmZpbGVgLiA6OgogCiAgICA+Pj4gaW1wb3J0IHpsaWIKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdCBiL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAppbmRleCAyMjY1Y2QwLi40YjZlMDM2IDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CkBAIC0xNDEsNyArMTQxLDkgQEAKIAogICAgaW1wb3J0IHN0cnVjdAogCi0gICBkYXRhID0gb3BlbignbXlmaWxlLnppcCcsICdyYicpLnJlYWQoKQorICAgd2l0aCBvcGVuKCdteWZpbGUuemlwJywgJ3JiJykgYXMgZjoKKyAgICAgICBkYXRhID0gZi5yZWFkKCkKKwogICAgc3RhcnQgPSAwCiAgICBmb3IgaSBpbiByYW5nZSgzKTogICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSBmaXJzdCAzIGZpbGUgaGVhZGVycwogICAgICAgIHN0YXJ0ICs9IDE0CkBAIC0yNzMsNyArMjc1LDcgQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgICBkWydwcmltYXJ5J10gICAgICAgICAgICAgICAgIyBlbnRyeSB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkCi0gICAgIEZpbGUgIkM6L3B5dGhvbjMxL2xpYi93ZWFrcmVmLnB5IiwgbGluZSA0NiwgaW4gX19nZXRpdGVtX18KKyAgICAgRmlsZSAiQzovcHl0aG9uMzMvbGliL3dlYWtyZWYucHkiLCBsaW5lIDQ2LCBpbiBfX2dldGl0ZW1fXwogICAgICAgIG8gPSBzZWxmLmRhdGFba2V5XSgpCiAgICBLZXlFcnJvcjogJ3ByaW1hcnknCiAKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9jbWRsaW5lLnJzdCBiL0RvYy91c2luZy9jbWRsaW5lLnJzdAppbmRleCBjZDRkMDJmLi4yNzAzNjg0IDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QKKysrIGIvRG9jL3VzaW5nL2NtZGxpbmUucnN0CkBAIC0yNCw3ICsyNCw3IEBACiAKIFdoZW4gaW52b2tpbmcgUHl0aG9uLCB5b3UgbWF5IHNwZWNpZnkgYW55IG9mIHRoZXNlIG9wdGlvbnM6OgogCi0gICAgcHl0aG9uIFstYkJkRWhpT1Jxc1N1dlZXeD9dIFstYyBjb21tYW5kIHwgLW0gbW9kdWxlLW5hbWUgfCBzY3JpcHQgfCAtIF0gW2FyZ3NdCisgICAgcHl0aG9uIFstYkJkRWhpT3FzU3V2Vld4P10gWy1jIGNvbW1hbmQgfCAtbSBtb2R1bGUtbmFtZSB8IHNjcmlwdCB8IC0gXSBbYXJnc10KIAogVGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlIGlzLCBvZiBjb3Vyc2UsIGEgc2ltcGxlIGludm9jYXRpb24gb2YgYSBzY3JpcHQ6OgogCkBAIC0yMjksMjMgKzIyOSwyMiBAQAogCiAuLiBjbWRvcHRpb246OiAtUgogCi0gICBUdXJuIG9uIGhhc2ggcmFuZG9taXphdGlvbiwgc28gdGhhdCB0aGUgOm1ldGg6YF9faGFzaF9fYCB2YWx1ZXMgb2Ygc3RyLCBieXRlcwotICAgYW5kIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuCi0gICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob24gcHJvY2VzcywgdGhleSBhcmUKLSAgIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mIFB5dGhvbi4KKyAgIEtlcHQgZm9yIGNvbXBhdGliaWxpdHkuICBPbiBQeXRob24gMy4zIGFuZCBncmVhdGVyLCBoYXNoIHJhbmRvbWl6YXRpb24gaXMKKyAgIHR1cm5lZCBvbiBieSBkZWZhdWx0LgogCi0gICBUaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsLW9mLXNlcnZpY2UgY2F1c2VkIGJ5Ci0gICBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0Ci0gICBjb25zdHJ1Y3Rpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCisgICBPbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBQeXRob24sIHRoaXMgb3B0aW9uIHR1cm5zIG9uIGhhc2ggcmFuZG9taXphdGlvbiwKKyAgIHNvIHRoYXQgdGhlIDptZXRoOmBfX2hhc2hfX2AgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lCisgICBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlIHJhbmRvbSB2YWx1ZS4gIEFsdGhvdWdoIHRoZXkgcmVtYWluCisgICBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob24gcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlCisgICBiZXR3ZWVuIHJlcGVhdGVkIGludm9jYXRpb25zIG9mIFB5dGhvbi4KKworICAgSGFzaCByYW5kb21pemF0aW9uIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEKKyAgIGRlbmlhbC1vZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0CisgICBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBjb25zdHJ1Y3Rpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCiAgICBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgZm9yIGRldGFpbHMuCiAKLSAgIENoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIG9yZGVyIGluIHdoaWNoIGtleXMgYXJlIHJldHJpZXZlZCBmcm9tIGEKLSAgIGRpY3QuICBBbHRob3VnaCBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlcyBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQKLSAgIHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kIDY0LWJpdCBidWlsZHMpLCBlbm91Z2ggcmVhbC13b3JsZCBjb2RlCi0gICBpbXBsaWNpdGx5IHJlbGllcyBvbiB0aGlzIG5vbi1ndWFyYW50ZWVkIGJlaGF2aW9yIHRoYXQgdGhlIHJhbmRvbWl6YXRpb24gaXMKLSAgIGRpc2FibGVkIGJ5IGRlZmF1bHQuCi0KLSAgIFNlZSBhbHNvIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYC4KKyAgIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYCBhbGxvd3MgeW91IHRvIHNldCBhIGZpeGVkIHZhbHVlIGZvciB0aGUgaGFzaAorICAgc2VlZCBzZWNyZXQuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMi4zCiAKQEAgLTI2Myw3ICsyNjIsOSBAQAogLi4gY21kb3B0aW9uOjogLVMKIAogICAgRGlzYWJsZSB0aGUgaW1wb3J0IG9mIHRoZSBtb2R1bGUgOm1vZDpgc2l0ZWAgYW5kIHRoZSBzaXRlLWRlcGVuZGVudAotICAgbWFuaXB1bGF0aW9ucyBvZiA6ZGF0YTpgc3lzLnBhdGhgIHRoYXQgaXQgZW50YWlscy4KKyAgIG1hbmlwdWxhdGlvbnMgb2YgOmRhdGE6YHN5cy5wYXRoYCB0aGF0IGl0IGVudGFpbHMuICBBbHNvIGRpc2FibGUgdGhlc2UKKyAgIG1hbmlwdWxhdGlvbnMgaWYgOm1vZDpgc2l0ZWAgaXMgZXhwbGljaXRseSBpbXBvcnRlZCBsYXRlciAoY2FsbAorICAgOmZ1bmM6YHNpdGUubWFpbmAgaWYgeW91IHdhbnQgdGhlbSB0byBiZSB0cmlnZ2VyZWQpLgogCiAKIC4uIGNtZG9wdGlvbjo6IC11CkBAIC0zNTcsNyArMzU4LDggQEAKIC4uIGNtZG9wdGlvbjo6IC1YCiAKICAgIFJlc2VydmVkIGZvciB2YXJpb3VzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIG9wdGlvbnMuICBDUHl0aG9uIGN1cnJlbnRseQotICAgZGVmaW5lcyBub25lIG9mIHRoZW0sIGJ1dCBhbGxvd3MgdG8gcGFzcyBhcmJpdHJhcnkgdmFsdWVzIGFuZCByZXRyaWV2ZQorICAgZGVmaW5lcyBqdXN0IG9uZSwgeW91IGNhbiB1c2UgYGAtWCBmYXVsdGhhbmRlcmBgIHRvIGVuYWJsZQorICAgOmRhdGE6YGZhdWx0aGFuZGxlcmAuIEl0IGFsc28gYWxsb3dzIHRvIHBhc3MgYXJiaXRyYXJ5IHZhbHVlcyBhbmQgcmV0cmlldmUKICAgIHRoZW0gdGhyb3VnaCB0aGUgOmRhdGE6YHN5cy5feG9wdGlvbnNgIGRpY3Rpb25hcnkuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCkBAIC00NzUsNyArNDc3LDcgQEAKIC4uIGVudnZhcjo6IFBZVEhPTkNBU0VPSwogCiAgICBJZiB0aGlzIGlzIHNldCwgUHl0aG9uIGlnbm9yZXMgY2FzZSBpbiA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnRzLiAgVGhpcwotICAgb25seSB3b3JrcyBvbiBXaW5kb3dzLCBPUyBYLCBhbmQgT1MvMi4KKyAgIG9ubHkgd29ya3Mgb24gV2luZG93cyBhbmQgT1MgWC4KIAogCiAuLiBlbnZ2YXI6OiBQWVRIT05ET05UV1JJVEVCWVRFQ09ERQpAQCAtNDg3LDkgKzQ4OSw4IEBACiAKIC4uIGVudnZhcjo6IFBZVEhPTkhBU0hTRUVECiAKLSAgIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIGBgcmFuZG9tYGAsIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUgYXMgc3BlY2lmeWluZwotICAgdGhlIDpvcHRpb246YC1SYCBvcHRpb246IGEgcmFuZG9tIHZhbHVlIGlzIHVzZWQgdG8gc2VlZCB0aGUgaGFzaGVzIG9mIHN0ciwKLSAgIGJ5dGVzIGFuZCBkYXRldGltZSBvYmplY3RzLgorICAgSWYgdGhpcyB2YXJpYWJsZSBpcyBub3Qgc2V0IG9yIHNldCB0byBgYHJhbmRvbWBgLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkCisgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4KIAogICAgSWYgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgIGlzIHNldCB0byBhbiBpbnRlZ2VyIHZhbHVlLCBpdCBpcyB1c2VkIGFzIGEgZml4ZWQKICAgIHNlZWQgZm9yIGdlbmVyYXRpbmcgdGhlIGhhc2goKSBvZiB0aGUgdHlwZXMgY292ZXJlZCBieSB0aGUgaGFzaApAQCAtNTAwLDggKzUwMSw3IEBACiAgICB2YWx1ZXMuCiAKICAgIFRoZSBpbnRlZ2VyIG11c3QgYmUgYSBkZWNpbWFsIG51bWJlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0uICBTcGVjaWZ5aW5nCi0gICB0aGUgdmFsdWUgMCB3aWxsIGxlYWQgdG8gdGhlIHNhbWUgaGFzaCB2YWx1ZXMgYXMgd2hlbiBoYXNoIHJhbmRvbWl6YXRpb24gaXMKLSAgIGRpc2FibGVkLgorICAgdGhlIHZhbHVlIDAgd2lsbCBkaXNhYmxlIGhhc2ggcmFuZG9taXphdGlvbi4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yLjMKIApAQCAtNTMxLDggKzUzMSw4IEBACiAKICAgIERlZmluZXMgdGhlIDpkYXRhOmB1c2VyIGJhc2UgZGlyZWN0b3J5IDxzaXRlLlVTRVJfQkFTRT5gLCB3aGljaCBpcyB1c2VkIHRvCiAgICBjb21wdXRlIHRoZSBwYXRoIG9mIHRoZSA6ZGF0YTpgdXNlciBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yeSA8c2l0ZS5VU0VSX1NJVEU+YAotICAgYW5kIDpyZWY6YERpc3R1dGlscyBpbnN0YWxsYXRpb24gcGF0aHMgPGluc3QtYWx0LWluc3RhbGwtdXNlcj5gIGZvciBgYHB5dGhvbgotICAgc2V0dXAucHkgaW5zdGFsbCAtLXVzZXJgYC4KKyAgIGFuZCA6cmVmOmBEaXN0dXRpbHMgaW5zdGFsbGF0aW9uIHBhdGhzIDxpbnN0LWFsdC1pbnN0YWxsLXVzZXI+YCBmb3IKKyAgIGBgcHl0aG9uIHNldHVwLnB5IGluc3RhbGwgLS11c2VyYGAuCiAKICAgIC4uIHNlZWFsc286OgogCkBAIC01NTEsNiArNTUxLDE0IEBACiAgICBzZXBhcmF0ZWQgc3RyaW5nLCBpdCBpcyBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgOm9wdGlvbjpgLVdgIG11bHRpcGxlCiAgICB0aW1lcy4KIAorLi4gZW52dmFyOjogUFlUSE9ORkFVTFRIQU5ETEVSCisKKyAgIElmIHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LCA6ZnVuYzpgZmF1bHRoYW5kbGVyLmVuYWJsZWAgaXMgY2FsbGVkCisgICBhdCBzdGFydHVwOiBpbnN0YWxsIGEgaGFuZGxlciBmb3IgOmNvbnN0OmBTSUdTRUdWYCwgOmNvbnN0OmBTSUdGUEVgLAorICAgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgIGFuZCA6Y29uc3Q6YFNJR0lMTGAgc2lnbmFscyB0byBkdW1wIHRoZQorICAgUHl0aG9uIHRyYWNlYmFjay4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byA6b3B0aW9uOmAtWGAgYGBmYXVsdGhhbmRsZXJgYAorICAgb3B0aW9uLgorCiAKIERlYnVnLW1vZGUgdmFyaWFibGVzCiB+fn5+fn5+fn5+fn5+fn5+fn5+fgpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2luZGV4LnJzdCBiL0RvYy91c2luZy9pbmRleC5yc3QKaW5kZXggMTIwMTE1My4uNTAyYWZhOSAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CkBAIC0xNyw0ICsxNyw0IEBACiAgICB1bml4LnJzdAogICAgd2luZG93cy5yc3QKICAgIG1hYy5yc3QKLQorICAgc2NyaXB0cy5yc3QKZGlmZiAtLWdpdCBhL0RvYy91c2luZy9zY3JpcHRzLnJzdCBiL0RvYy91c2luZy9zY3JpcHRzLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzg3NDE2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL3VzaW5nL3NjcmlwdHMucnN0CkBAIC0wLDAgKzEsMTIgQEAKKy4uIF90b29scy1hbmQtc2NyaXB0czoKKworQWRkaXRpb25hbCBUb29scyBhbmQgU2NyaXB0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBfc2NyaXB0cy1weXZlbnY6CisKK3B5dmVudiAtIENyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisuLiBpbmNsdWRlOjogdmVudi1jcmVhdGUuaW5jCisKZGlmZiAtLWdpdCBhL0RvYy91c2luZy92ZW52LWNyZWF0ZS5pbmMgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZGJjOWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvdXNpbmcvdmVudi1jcmVhdGUuaW5jCkBAIC0wLDAgKzEsODUgQEAKK0NyZWF0aW9uIG9mIDpyZWY6YHZpcnR1YWwgZW52aXJvbm1lbnRzIDx2ZW52LWRlZj5gIGlzIGRvbmUgYnkgZXhlY3V0aW5nIHRoZQorYGBweXZlbnZgYCBzY3JpcHQ6OgorCisgICAgcHl2ZW52IC9wYXRoL3RvL25ldy92aXJ0dWFsL2Vudmlyb25tZW50CisKK1J1bm5pbmcgdGhpcyBjb21tYW5kIGNyZWF0ZXMgdGhlIHRhcmdldCBkaXJlY3RvcnkgKGNyZWF0aW5nIGFueSBwYXJlbnQKK2RpcmVjdG9yaWVzIHRoYXQgZG9uJ3QgZXhpc3QgYWxyZWFkeSkgYW5kIHBsYWNlcyBhIGBgcHl2ZW52LmNmZ2BgIGZpbGUgaW4gaXQKK3dpdGggYSBgYGhvbWVgYCBrZXkgcG9pbnRpbmcgdG8gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gdGhlIGNvbW1hbmQgd2FzIHJ1bgorZnJvbS4gIEl0IGFsc28gY3JlYXRlcyBhIGBgYmluYGAgKG9yIGBgU2NyaXB0c2BgIG9uIFdpbmRvd3MpIHN1YmRpcmVjdG9yeQorY29udGFpbmluZyBhIGNvcHkgb2YgdGhlIGBgcHl0aG9uYGAgYmluYXJ5IChvciBiaW5hcmllcywgaW4gdGhlIGNhc2Ugb2YKK1dpbmRvd3MpLiAgSXQgYWxzbyBjcmVhdGVzIGFuIChpbml0aWFsbHkgZW1wdHkpIGBgbGliL3B5dGhvblguWS9zaXRlLXBhY2thZ2VzYGAKK3N1YmRpcmVjdG9yeSAob24gV2luZG93cywgdGhpcyBpcyBgYExpYlxzaXRlLXBhY2thZ2VzYGApLgorCisuLiBoaWdobGlnaHQ6OiBub25lCisKK09uIFdpbmRvd3MsIHlvdSBtYXkgaGF2ZSB0byBpbnZva2UgdGhlIGBgcHl2ZW52YGAgc2NyaXB0IGFzIGZvbGxvd3MsIGlmIHlvdQorZG9uJ3QgaGF2ZSB0aGUgcmVsZXZhbnQgUEFUSCBhbmQgUEFUSEVYVCBzZXR0aW5nczo6CisKKyAgICBjOlxUZW1wPmM6XFB5dGhvbjMzXHB5dGhvbiBjOlxQeXRob24zM1xUb29sc1xTY3JpcHRzXHB5dmVudi5weSBteWVudgorCitvciBlcXVpdmFsZW50bHk6OgorCisgICAgYzpcVGVtcD5jOlxQeXRob24zM1xweXRob24gLW0gdmVudiBteWVudgorCitUaGUgY29tbWFuZCwgaWYgcnVuIHdpdGggYGAtaGBgLCB3aWxsIHNob3cgdGhlIGF2YWlsYWJsZSBvcHRpb25zOjoKKworICAgIHVzYWdlOiBweXZlbnYgWy1oXSBbLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlc10gWy0tc3ltbGlua3NdIFstLWNsZWFyXQorICAgICAgICAgICAgICAgICAgWy0tdXBncmFkZV0gRU5WX0RJUiBbRU5WX0RJUiAuLi5dCisKKyAgICBDcmVhdGVzIHZpcnR1YWwgUHl0aG9uIGVudmlyb25tZW50cyBpbiBvbmUgb3IgbW9yZSB0YXJnZXQgZGlyZWN0b3JpZXMuCisKKyAgICBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgIEVOVl9ESVIgICAgICAgICAgICAgQSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRoZSBlbnZpcm9ubWVudCBpbi4KKworICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgIC1oLCAtLWhlbHAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyBHaXZlIGFjY2VzcyB0byB0aGUgZ2xvYmFsIHNpdGUtcGFja2FnZXMgZGlyIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICAgLS1zeW1saW5rcyAgICAgICAgICAgICBUcnkgdG8gdXNlIHN5bWxpbmtzIHJhdGhlciB0aGFuIGNvcGllcywgd2hlbiBzeW1saW5rcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNsZWFyICAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0IGFscmVhZHkgZXhpc3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cywgYW4gZXJyb3IgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAgICAgLS11cGdyYWRlICAgICAgICAgICAgICBVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KKworSWYgdGhlIHRhcmdldCBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQsIHVubGVzcwordGhlIGBgLS1jbGVhcmBgIG9yIGBgLS11cGdyYWRlYGAgb3B0aW9uIHdhcyBwcm92aWRlZC4KKworVGhlIGNyZWF0ZWQgYGBweXZlbnYuY2ZnYGAgZmlsZSBhbHNvIGluY2x1ZGVzIHRoZQorYGBpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzYGAga2V5LCBzZXQgdG8gYGB0cnVlYGAgaWYgYGB2ZW52YGAgaXMKK3J1biB3aXRoIHRoZSBgYC0tc3lzdGVtLXNpdGUtcGFja2FnZXNgYCBvcHRpb24sIGBgZmFsc2VgYCBvdGhlcndpc2UuCisKK011bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHB5dmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbAordmlydHVhbGVudiB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaAorcHJvdmlkZWQgcGF0aC4KKworT25jZSBhIHZlbnYgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEgc2NyaXB0IGluIHRoZQordmVudidzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZSBzY3JpcHQgaXMgcGxhdGZvcm0tc3BlY2lmaWM6IG9uCithIFBvc2l4IHBsYXRmb3JtLCB5b3Ugd291bGQgdHlwaWNhbGx5IGRvOjoKKworICAgICQgc291cmNlIDx2ZW52Pi9iaW4vYWN0aXZhdGUKKword2hlcmVhcyBvbiBXaW5kb3dzLCB5b3UgbWlnaHQgZG86OgorCisgICAgQzpcPiA8dmVudj4vU2NyaXB0cy9hY3RpdmF0ZQorCitpZiB5b3UgYXJlIHVzaW5nIHRoZSBgYGNtZC5leGVgYCBzaGVsbCwgb3IgcGVyaGFwczo6CisKKyAgICBQUyBDOlw+IDx2ZW52Pi9TY3JpcHRzL0FjdGl2YXRlLnBzMQorCitpZiB5b3UgdXNlIFBvd2VyU2hlbGwuCisKK1lvdSBkb24ndCBzcGVjaWZpY2FsbHkgKm5lZWQqIHRvIGFjdGl2YXRlIGFuIGVudmlyb25tZW50OyBhY3RpdmF0aW9uIGp1c3QKK3ByZXBlbmRzIHRoZSB2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQgInB5dGhvbiIgaW52b2tlcyB0aGUKK3ZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuIGluc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvCit1c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cyBpbnN0YWxsZWQgaW4gYSB2ZW52IHNob3VsZCBiZQorcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LCBhbmQgcnVuIHdpdGggdGhlIHZlbnYncyBQeXRob24gYXV0b21hdGljYWxseS4KKworWW91IGNhbiBkZWFjdGl2YXRlIGEgdmVudiBieSB0eXBpbmcgImRlYWN0aXZhdGUiIGluIHlvdXIgc2hlbGwuIFRoZSBleGFjdAorbWVjaGFuaXNtIGlzIHBsYXRmb3JtLXNwZWNpZmljOiBmb3IgZXhhbXBsZSwgdGhlIEJhc2ggYWN0aXZhdGlvbiBzY3JpcHQgZGVmaW5lcworYSAiZGVhY3RpdmF0ZSIgZnVuY3Rpb24sIHdoZXJlYXMgb24gV2luZG93cyB0aGVyZSBhcmUgc2VwYXJhdGUgc2NyaXB0cyBjYWxsZWQKK2BgZGVhY3RpdmF0ZS5iYXRgYCBhbmQgYGBEZWFjdGl2YXRlLnBzMWBgIHdoaWNoIGFyZSBpbnN0YWxsZWQgd2hlbiB0aGUgdmVudiBpcworY3JlYXRlZC4KKwpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0IGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CmluZGV4IDc0MmEyOTAuLmFlMjUyMTUgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy93aW5kb3dzLnJzdAorKysgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKQEAgLTgyLDYgKzgyLDggQEAKIHNldHRpbmdzIGluIFdpbmRvd3MuCiAKIAorLi4gX3NldHRpbmctZW52dmFyczoKKwogRXhjdXJzdXM6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTMwLDIxICsxMzIsMzMgQEAKICAgICAgIFNldHRpbmcgRW52aXJvbm1lbnQgdmFyaWFibGVzLCBMb3VpcyBKLiBGYXJydWdpYQogCiAKKy4uIF93aW5kb3dzLXBhdGgtbW9kOgorCiBGaW5kaW5nIHRoZSBQeXRob24gZXhlY3V0YWJsZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKwogQmVzaWRlcyB1c2luZyB0aGUgYXV0b21hdGljYWxseSBjcmVhdGVkIHN0YXJ0IG1lbnUgZW50cnkgZm9yIHRoZSBQeXRob24KLWludGVycHJldGVyLCB5b3UgbWlnaHQgd2FudCB0byBzdGFydCBQeXRob24gaW4gdGhlIERPUyBwcm9tcHQuICBUbyBtYWtlIHRoaXMKLXdvcmssIHlvdSBuZWVkIHRvIHNldCB5b3VyIDplbnZ2YXI6YCVQQVRIJWAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gaW5jbHVkZSB0aGUKLWRpcmVjdG9yeSBvZiB5b3VyIFB5dGhvbiBkaXN0cmlidXRpb24sIGRlbGltaXRlZCBieSBhIHNlbWljb2xvbiBmcm9tIG90aGVyCi1lbnRyaWVzLiAgQW4gZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3bwotZW50cmllcyBhcmUgV2luZG93cycgZGVmYXVsdCk6OgoraW50ZXJwcmV0ZXIsIHlvdSBtaWdodCB3YW50IHRvIHN0YXJ0IFB5dGhvbiBpbiB0aGUgY29tbWFuZCBwcm9tcHQuIEFzIG9mCitQeXRob24gMy4zLCB0aGUgaW5zdGFsbGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KIAotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQeXRob24yNQorQXQgdGhlICJDdXN0b21pemUgUHl0aG9uIDMuMyIgc2NyZWVuLCBhbiBvcHRpb24gY2FsbGVkCisiQWRkIHB5dGhvbi5leGUgdG8gc2VhcmNoIHBhdGgiIGNhbiBiZSBlbmFibGVkIHRvIGhhdmUgdGhlIGluc3RhbGxlciBwbGFjZQoreW91ciBpbnN0YWxsYXRpb24gaW50byB0aGUgOmVudnZhcjpgJVBBVEglYC4gVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUKKzpjb21tYW5kOmBweXRob25gIHRvIHJ1biB0aGUgaW50ZXJwcmV0ZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKK3NjcmlwdHMgd2l0aCBjb21tYW5kIGxpbmUgb3B0aW9ucywgc2VlIDpyZWY6YHVzaW5nLW9uLWNtZGxpbmVgIGRvY3VtZW50YXRpb24uCiAKLVR5cGluZyA6Y29tbWFuZDpgcHl0aG9uYCBvbiB5b3VyIGNvbW1hbmQgcHJvbXB0IHdpbGwgbm93IGZpcmUgdXAgdGhlIFB5dGhvbgotaW50ZXJwcmV0ZXIuICBUaHVzLCB5b3UgY2FuIGFsc28gZXhlY3V0ZSB5b3VyIHNjcmlwdHMgd2l0aCBjb21tYW5kIGxpbmUgb3B0aW9ucywKLXNlZSA6cmVmOmB1c2luZy1vbi1jbWRsaW5lYCBkb2N1bWVudGF0aW9uLgorSWYgeW91IGRvbid0IGVuYWJsZSB0aGlzIG9wdGlvbiBhdCBpbnN0YWxsIHRpbWUsIHlvdSBjYW4gYWx3YXlzIHJlLXJ1biB0aGUKK2luc3RhbGxlciB0byBjaG9vc2UgaXQuCisKK1RoZSBhbHRlcm5hdGl2ZSBpcyBtYW51YWxseSBtb2RpZnlpbmcgdGhlIDplbnZ2YXI6YCVQQVRIJWAgdXNpbmcgdGhlCitkaXJlY3Rpb25zIGluIDpyZWY6YHNldHRpbmctZW52dmFyc2AuIFlvdSBuZWVkIHRvIHNldCB5b3VyIDplbnZ2YXI6YCVQQVRIJWAKK2Vudmlyb25tZW50IHZhcmlhYmxlIHRvIGluY2x1ZGUgdGhlIGRpcmVjdG9yeSBvZiB5b3VyIFB5dGhvbiBkaXN0cmlidXRpb24sCitkZWxpbWl0ZWQgYnkgYSBzZW1pY29sb24gZnJvbSBvdGhlciBlbnRyaWVzLiBBbiBleGFtcGxlIHZhcmlhYmxlIGNvdWxkIGxvb2sKK2xpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFyZSBXaW5kb3dzJyBkZWZhdWx0KTo6CisKKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHl0aG9uMzMKIAogCiBGaW5kaW5nIG1vZHVsZXMKQEAgLTIwMywxMyArMjE3LDE5IEBACiBFeGVjdXRpbmcgc2NyaXB0cwogLS0tLS0tLS0tLS0tLS0tLS0KIAotUHl0aG9uIHNjcmlwdHMgKGZpbGVzIHdpdGggdGhlIGV4dGVuc2lvbiBgYC5weWBgKSB3aWxsIGJlIGV4ZWN1dGVkIGJ5Ci06cHJvZ3JhbTpgcHl0aG9uLmV4ZWAgYnkgZGVmYXVsdC4gIFRoaXMgZXhlY3V0YWJsZSBvcGVucyBhIHRlcm1pbmFsLCB3aGljaCBzdGF5cwotb3BlbiBldmVuIGlmIHRoZSBwcm9ncmFtIHVzZXMgYSBHVUkuICBJZiB5b3UgZG8gbm90IHdhbnQgdGhpcyB0byBoYXBwZW4sIHVzZSB0aGUKLWV4dGVuc2lvbiBgYC5weXdgYCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzY3JpcHQgdG8gYmUgZXhlY3V0ZWQgYnkKLTpwcm9ncmFtOmBweXRob253LmV4ZWAgYnkgZGVmYXVsdCAoYm90aCBleGVjdXRhYmxlcyBhcmUgbG9jYXRlZCBpbiB0aGUgdG9wLWxldmVsCi1vZiB5b3VyIFB5dGhvbiBpbnN0YWxsYXRpb24gZGlyZWN0b3J5KS4gIFRoaXMgc3VwcHJlc3NlcyB0aGUgdGVybWluYWwgd2luZG93IG9uCi1zdGFydHVwLgorQXMgb2YgUHl0aG9uIDMuMywgUHl0aG9uIGluY2x1ZGVzIGEgbGF1bmNoZXIgd2hpY2ggZmFjaWxpdGF0ZXMgcnVubmluZyBQeXRob24KK3NjcmlwdHMuIFNlZSA6cmVmOmBsYXVuY2hlcmAgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisKK0V4ZWN1dGluZyBzY3JpcHRzIHdpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1dpdGhvdXQgdGhlIFB5dGhvbiBsYXVuY2hlciBpbnN0YWxsZWQsIFB5dGhvbiBzY3JpcHRzIChmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24KK2BgLnB5YGApIHdpbGwgYmUgZXhlY3V0ZWQgYnkgOnByb2dyYW06YHB5dGhvbi5leGVgIGJ5IGRlZmF1bHQuICBUaGlzIGV4ZWN1dGFibGUKK29wZW5zIGEgdGVybWluYWwsIHdoaWNoIHN0YXlzIG9wZW4gZXZlbiBpZiB0aGUgcHJvZ3JhbSB1c2VzIGEgR1VJLiAgSWYgeW91IGRvCitub3Qgd2FudCB0aGlzIHRvIGhhcHBlbiwgdXNlIHRoZSBleHRlbnNpb24gYGAucHl3YGAgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2NyaXB0Cit0byBiZSBleGVjdXRlZCBieSA6cHJvZ3JhbTpgcHl0aG9udy5leGVgIGJ5IGRlZmF1bHQgKGJvdGggZXhlY3V0YWJsZXMgYXJlCitsb2NhdGVkIGluIHRoZSB0b3AtbGV2ZWwgb2YgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSkuICBUaGlzCitzdXBwcmVzc2VzIHRoZSB0ZXJtaW5hbCB3aW5kb3cgb24gc3RhcnR1cC4KIAogWW91IGNhbiBhbHNvIG1ha2UgYWxsIGBgLnB5YGAgc2NyaXB0cyBleGVjdXRlIHdpdGggOnByb2dyYW06YHB5dGhvbncuZXhlYCwKIHNldHRpbmcgdGhpcyB0aHJvdWdoIHRoZSB1c3VhbCBmYWNpbGl0aWVzLCBmb3IgZXhhbXBsZSAobWlnaHQgcmVxdWlyZQpAQCAtMjI1LDYgKzI0NSwyNTAgQEAKICAgICAgIGZ0eXBlIFB5dGhvbi5GaWxlPUM6XFBhdGhcdG9ccHl0aG9udy5leGUgIiUxIiAlKgogCiAKKy4uIF9sYXVuY2hlcjoKKworUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4gdmVyc2lvbmFkZGVkOjogMy4zCisKK1RoZSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MgaXMgYSB1dGlsaXR5IHdoaWNoIGFpZHMgaW4gdGhlIGxvY2F0aW9uIGFuZAorZXhlY3V0aW9uIG9mIGRpZmZlcmVudCBQeXRob24gdmVyc2lvbnMuICBJdCBhbGxvd3Mgc2NyaXB0cyAob3IgdGhlCitjb21tYW5kLWxpbmUpIHRvIGluZGljYXRlIGEgcHJlZmVyZW5jZSBmb3IgYSBzcGVjaWZpYyBQeXRob24gdmVyc2lvbiwgYW5kCit3aWxsIGxvY2F0ZSBhbmQgZXhlY3V0ZSB0aGF0IHZlcnNpb24uCisKK0dldHRpbmcgc3RhcnRlZAorLS0tLS0tLS0tLS0tLS0tCisKK0Zyb20gdGhlIGNvbW1hbmQtbGluZQorXl5eXl5eXl5eXl5eXl5eXl5eXl5eCisKK1lvdSBzaG91bGQgZW5zdXJlIHRoZSBsYXVuY2hlciBpcyBvbiB5b3VyIFBBVEggLSBkZXBlbmRpbmcgb24gaG93IGl0IHdhcworaW5zdGFsbGVkIGl0IG1heSBhbHJlYWR5IGJlIHRoZXJlLCBidXQgY2hlY2sganVzdCBpbiBjYXNlIGl0IGlzIG5vdC4KKworRnJvbSBhIGNvbW1hbmQtcHJvbXB0LCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoKKworOjoKKworICBweQorCitZb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQgaXMKK3N0YXJ0ZWQgLSBpdCBjYW4gYmUgZXhpdGVkIGFzIG5vcm1hbCwgYW5kIGFueSBhZGRpdGlvbmFsIGNvbW1hbmQtbGluZQorYXJndW1lbnRzIHNwZWNpZmllZCB3aWxsIGJlIHNlbnQgZGlyZWN0bHkgdG8gUHl0aG9uLgorCitJZiB5b3UgaGF2ZSBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24gMi54IGluc3RhbGxlZCAoZS5nLiwgMi42IGFuZCAyLjcpIHlvdQord2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gMi43IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjYsIHRyeSB0aGUKK2NvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTIuNgorCitJZiB5b3UgaGF2ZSBhIFB5dGhvbiAzLnggaW5zdGFsbGVkLCB0cnkgdGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTMKKworWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KKworRnJvbSBhIHNjcmlwdAorXl5eXl5eXl5eXl5eXgorCitMZXQncyBjcmVhdGUgYSB0ZXN0IFB5dGhvbiBzY3JpcHQgLSBjcmVhdGUgYSBmaWxlIGNhbGxlZCBgYGhlbGxvLnB5YGAgd2l0aCB0aGUKK2ZvbGxvd2luZyBjb250ZW50cworCis6OgorCisgICAgIyEgcHl0aG9uCisgICAgaW1wb3J0IHN5cworICAgIHN5cy5zdGRvdXQud3JpdGUoImhlbGxvIGZyb20gUHl0aG9uICVzXG4iICUgKHN5cy52ZXJzaW9uLCkpCisKK0Zyb20gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCBoZWxsby5weSBsaXZlcywgZXhlY3V0ZSB0aGUgY29tbWFuZDoKKworOjoKKworICAgcHkgaGVsbG8ucHkKKworWW91IHNob3VsZCBub3RpY2UgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHlvdXIgbGF0ZXN0IFB5dGhvbiAyLnggaW5zdGFsbGF0aW9uCitpcyBwcmludGVkLiAgTm93IHRyeSBjaGFuZ2luZyB0aGUgZmlyc3QgbGluZSB0byBiZToKKworOjoKKworICAgICMhIHB5dGhvbjMKKworUmUtZXhlY3V0aW5nIHRoZSBjb21tYW5kIHNob3VsZCBub3cgcHJpbnQgdGhlIGxhdGVzdCBQeXRob24gMy54IGluZm9ybWF0aW9uLgorQXMgd2l0aCB0aGUgYWJvdmUgY29tbWFuZC1saW5lIGV4YW1wbGVzLCB5b3UgY2FuIHNwZWNpZnkgYSBtb3JlIGV4cGxpY2l0Cit2ZXJzaW9uIHF1YWxpZmllci4gIEFzc3VtaW5nIHlvdSBoYXZlIFB5dGhvbiAyLjYgaW5zdGFsbGVkLCB0cnkgY2hhbmdpbmcgdGhlCitmaXJzdCBsaW5lIHRvIGBgIyEgcHl0aG9uMi42YGAgYW5kIHlvdSBzaG91bGQgZmluZCB0aGUgMi42IHZlcnNpb24KK2luZm9ybWF0aW9uIHByaW50ZWQuCisKK0Zyb20gZmlsZSBhc3NvY2lhdGlvbnMKK15eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVGhlIGxhdW5jaGVyIHNob3VsZCBoYXZlIGJlZW4gYXNzb2NpYXRlZCB3aXRoIFB5dGhvbiBmaWxlcyAoaS5lLiBgYC5weWBgLAorYGAucHl3YGAsIGBgLnB5Y2BgLCBgYC5weW9gYCBmaWxlcykgd2hlbiBpdCB3YXMgaW5zdGFsbGVkLiAgVGhpcyBtZWFucyB0aGF0Cit3aGVuIHlvdSBkb3VibGUtY2xpY2sgb24gb25lIG9mIHRoZXNlIGZpbGVzIGZyb20gV2luZG93cyBleHBsb3JlciB0aGUgbGF1bmNoZXIKK3dpbGwgYmUgdXNlZCwgYW5kIHRoZXJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgc2FtZSBmYWNpbGl0aWVzIGRlc2NyaWJlZCBhYm92ZSB0bworaGF2ZSB0aGUgc2NyaXB0IHNwZWNpZnkgdGhlIHZlcnNpb24gd2hpY2ggc2hvdWxkIGJlIHVzZWQuCisKK1RoZSBrZXkgYmVuZWZpdCBvZiB0aGlzIGlzIHRoYXQgYSBzaW5nbGUgbGF1bmNoZXIgY2FuIHN1cHBvcnQgbXVsdGlwbGUgUHl0aG9uCit2ZXJzaW9ucyBhdCB0aGUgc2FtZSB0aW1lIGRlcGVuZGluZyBvbiB0aGUgY29udGVudHMgb2YgdGhlIGZpcnN0IGxpbmUuCisKK1NoZWJhbmcgTGluZXMKKy0tLS0tLS0tLS0tLS0KKworSWYgdGhlIGZpcnN0IGxpbmUgb2YgYSBzY3JpcHQgZmlsZSBzdGFydHMgd2l0aCBgYCMhYGAsIGl0IGlzIGtub3duIGFzIGEKKyJzaGViYW5nIiBsaW5lLiAgTGludXggYW5kIG90aGVyIFVuaXggbGlrZSBvcGVyYXRpbmcgc3lzdGVtcyBoYXZlIG5hdGl2ZQorc3VwcG9ydCBmb3Igc3VjaCBsaW5lcyBhbmQgYXJlIGNvbW1vbmx5IHVzZWQgb24gc3VjaCBzeXN0ZW1zIHRvIGluZGljYXRlIGhvdworYSBzY3JpcHQgc2hvdWxkIGJlIGV4ZWN1dGVkLiAgVGhpcyBsYXVuY2hlciBhbGxvd3MgdGhlIHNhbWUgZmFjaWxpdGllcyB0byBiZQordXNpbmcgd2l0aCBQeXRob24gc2NyaXB0cyBvbiBXaW5kb3dzIGFuZCB0aGUgZXhhbXBsZXMgYWJvdmUgZGVtb25zdHJhdGUgdGhlaXIKK3VzZS4KKworVG8gYWxsb3cgc2hlYmFuZyBsaW5lcyBpbiBQeXRob24gc2NyaXB0cyB0byBiZSBwb3J0YWJsZSBiZXR3ZWVuIFVuaXggYW5kCitXaW5kb3dzLCB0aGlzIGxhdW5jaGVyIHN1cHBvcnRzIGEgbnVtYmVyIG9mICd2aXJ0dWFsJyBjb21tYW5kcyB0byBzcGVjaWZ5Cit3aGljaCBpbnRlcnByZXRlciB0byB1c2UuICBUaGUgc3VwcG9ydGVkIHZpcnR1YWwgY29tbWFuZHMgYXJlOgorCisqIGBgL3Vzci9iaW4vZW52IHB5dGhvbmBgCisqIGBgL3Vzci9iaW4vcHl0aG9uYGAKKyogYGAvdXNyL2xvY2FsL2Jpbi9weXRob25gYAorKiBgYHB5dGhvbmBgCisKK0ZvciBleGFtcGxlLCBpZiB0aGUgZmlyc3QgbGluZSBvZiB5b3VyIHNjcmlwdCBzdGFydHMgd2l0aAorCis6OgorCisgICMhIC91c3IvYmluL3B5dGhvbgorCitUaGUgZGVmYXVsdCBQeXRob24gd2lsbCBiZSBsb2NhdGVkIGFuZCB1c2VkLiAgQXMgbWFueSBQeXRob24gc2NyaXB0cyB3cml0dGVuCit0byB3b3JrIG9uIFVuaXggd2lsbCBhbHJlYWR5IGhhdmUgdGhpcyBsaW5lLCB5b3Ugc2hvdWxkIGZpbmQgdGhlc2Ugc2NyaXB0cyBjYW4KK2JlIHVzZWQgYnkgdGhlIGxhdW5jaGVyIHdpdGhvdXQgbW9kaWZpY2F0aW9uLiAgSWYgeW91IGFyZSB3cml0aW5nIGEgbmV3IHNjcmlwdAorb24gV2luZG93cyB3aGljaCB5b3UgaG9wZSB3aWxsIGJlIHVzZWZ1bCBvbiBVbml4LCB5b3Ugc2hvdWxkIHVzZSBvbmUgb2YgdGhlCitzaGViYW5nIGxpbmVzIHN0YXJ0aW5nIHdpdGggYGAvdXNyYGAuCisKK0FyZ3VtZW50cyBpbiBzaGViYW5nIGxpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgc2hlYmFuZyBsaW5lcyBjYW4gYWxzbyBzcGVjaWZ5IGFkZGl0aW9uYWwgb3B0aW9ucyB0byBiZSBwYXNzZWQgdG8gdGhlCitQeXRob24gaW50ZXJwcmV0ZXIuICBGb3IgZXhhbXBsZSwgaWYgeW91IGhhdmUgYSBzaGViYW5nIGxpbmU6CisKKzo6CisKKyAgIyEgL3Vzci9iaW4vcHl0aG9uIC12CisKK1RoZW4gUHl0aG9uIHdpbGwgYmUgc3RhcnRlZCB3aXRoIHRoZSBgYC12YGAgb3B0aW9uCisKK0N1c3RvbWl6YXRpb24KKy0tLS0tLS0tLS0tLS0KKworQ3VzdG9taXphdGlvbiB2aWEgSU5JIGZpbGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworICAgIFR3byAuaW5pIGZpbGVzIHdpbGwgYmUgc2VhcmNoZWQgYnkgdGhlIGxhdW5jaGVyIC0gYGBweS5pbmlgYCBpbiB0aGUKKyAgICBjdXJyZW50IHVzZXIncyAiYXBwbGljYXRpb24gZGF0YSIgZGlyZWN0b3J5IChpLmUuIHRoZSBkaXJlY3RvcnkgcmV0dXJuZWQKKyAgICBieSBjYWxsaW5nIHRoZSBXaW5kb3dzIGZ1bmN0aW9uIFNIR2V0Rm9sZGVyUGF0aCB3aXRoIENTSURMX0xPQ0FMX0FQUERBVEEpCisgICAgYW5kIGBgcHkuaW5pYGAgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBsYXVuY2hlci4gIFRoZSBzYW1lIC5pbmkKKyAgICBmaWxlcyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgJ2NvbnNvbGUnIHZlcnNpb24gb2YgdGhlIGxhdW5jaGVyIChpLmUuCisgICAgcHkuZXhlKSBhbmQgZm9yIHRoZSAnd2luZG93cycgdmVyc2lvbiAoaS5lLiBweXcuZXhlKQorCisgICAgQ3VzdG9taXphdGlvbiBzcGVjaWZpZWQgaW4gdGhlICJhcHBsaWNhdGlvbiBkaXJlY3RvcnkiIHdpbGwgaGF2ZQorICAgIHByZWNlZGVuY2Ugb3ZlciB0aGUgb25lIG5leHQgdG8gdGhlIGV4ZWN1dGFibGUsIHNvIGEgdXNlciwgd2hvIG1heSBub3QKKyAgICBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGUgLmluaSBmaWxlIG5leHQgdG8gdGhlIGxhdW5jaGVyLCBjYW4gb3ZlcnJpZGUKKyAgICBjb21tYW5kcyBpbiB0aGF0IGdsb2JhbCAuaW5pIGZpbGUpCisKK0N1c3RvbWl6aW5nIGRlZmF1bHQgUHl0aG9uIHZlcnNpb25zCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgorCitJbiBzb21lIGNhc2VzLCBhIHZlcnNpb24gcXVhbGlmaWVyIGNhbiBiZSBpbmNsdWRlZCBpbiBhIGNvbW1hbmQgdG8gZGljdGF0ZQord2hpY2ggdmVyc2lvbiBvZiBQeXRob24gd2lsbCBiZSB1c2VkIGJ5IHRoZSBjb21tYW5kLiBBIHZlcnNpb24gcXVhbGlmaWVyCitzdGFydHMgd2l0aCBhIG1ham9yIHZlcnNpb24gbnVtYmVyIGFuZCBjYW4gb3B0aW9uYWxseSBiZSBmb2xsb3dlZCBieSBhIHBlcmlvZAorKCcuJykgYW5kIGEgbWlub3IgdmVyc2lvbiBzcGVjaWZpZXIuIElmIHRoZSBtaW5vciBxdWFsaWZpZXIgaXMgc3BlY2lmaWVkLCBpdAorbWF5IG9wdGlvbmFsbHkgYmUgZm9sbG93ZWQgYnkgIi0zMiIgdG8gaW5kaWNhdGUgdGhlIDMyLWJpdCBpbXBsZW1lbnRhdGlvbiBvZgordGhhdCB2ZXJzaW9uIGJlIHVzZWQuCisKK0ZvciBleGFtcGxlLCBhIHNoZWJhbmcgbGluZSBvZiBgYCMhcHl0aG9uYGAgaGFzIG5vIHZlcnNpb24gcXVhbGlmaWVyLCB3aGlsZQorYGAjIXB5dGhvbjNgYCBoYXMgYSB2ZXJzaW9uIHF1YWxpZmllciB3aGljaCBzcGVjaWZpZXMgb25seSBhIG1ham9yIHZlcnNpb24uCisKK0lmIG5vIHZlcnNpb24gcXVhbGlmaWVycyBhcmUgZm91bmQgaW4gYSBjb21tYW5kLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK2BgUFlfUFlUSE9OYGAgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBkZWZhdWx0IHZlcnNpb24gcXVhbGlmaWVyIC0gdGhlIGRlZmF1bHQKK3ZhbHVlIGlzICIyIi4gTm90ZSB0aGlzIHZhbHVlIGNvdWxkIHNwZWNpZnkganVzdCBhIG1ham9yIHZlcnNpb24gKGUuZy4gIjIiKSBvcgorYSBtYWpvci5taW5vciBxdWFsaWZpZXIgKGUuZy4gIjIuNiIpLCBvciBldmVuIG1ham9yLm1pbm9yLTMyLgorCitJZiBubyBtaW5vciB2ZXJzaW9uIHF1YWxpZmllcnMgYXJlIGZvdW5kLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK2BgUFlfUFlUSE9Oe21ham9yfWBgICh3aGVyZSBgYHttYWpvcn1gYCBpcyB0aGUgY3VycmVudCBtYWpvciB2ZXJzaW9uIHF1YWxpZmllcgorYXMgZGV0ZXJtaW5lZCBhYm92ZSkgY2FuIGJlIHNldCB0byBzcGVjaWZ5IHRoZSBmdWxsIHZlcnNpb24uIElmIG5vIHN1Y2ggb3B0aW9uCitpcyBmb3VuZCwgdGhlIGxhdW5jaGVyIHdpbGwgZW51bWVyYXRlIHRoZSBpbnN0YWxsZWQgUHl0aG9uIHZlcnNpb25zIGFuZCB1c2UKK3RoZSBsYXRlc3QgbWlub3IgcmVsZWFzZSBmb3VuZCBmb3IgdGhlIG1ham9yIHZlcnNpb24sIHdoaWNoIGlzIGxpa2VseSwKK2FsdGhvdWdoIG5vdCBndWFyYW50ZWVkLCB0byBiZSB0aGUgbW9zdCByZWNlbnRseSBpbnN0YWxsZWQgdmVyc2lvbiBpbiB0aGF0CitmYW1pbHkuCisKK09uIDY0LWJpdCBXaW5kb3dzIHdpdGggYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIHNhbWUKKyhtYWpvci5taW5vcikgUHl0aG9uIHZlcnNpb24gaW5zdGFsbGVkLCB0aGUgNjQtYml0IHZlcnNpb24gd2lsbCBhbHdheXMgYmUKK3ByZWZlcnJlZC4gVGhpcyB3aWxsIGJlIHRydWUgZm9yIGJvdGggMzItYml0IGFuZCA2NC1iaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZQorbGF1bmNoZXIgLSBhIDMyLWJpdCBsYXVuY2hlciB3aWxsIHByZWZlciB0byBleGVjdXRlIGEgNjQtYml0IFB5dGhvbiBpbnN0YWxsYXRpb24KK29mIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBpZiBhdmFpbGFibGUuIFRoaXMgaXMgc28gdGhlIGJlaGF2aW9yIG9mIHRoZSBsYXVuY2hlcgorY2FuIGJlIHByZWRpY3RlZCBrbm93aW5nIG9ubHkgd2hhdCB2ZXJzaW9ucyBhcmUgaW5zdGFsbGVkIG9uIHRoZSBQQyBhbmQKK3dpdGhvdXQgcmVnYXJkIHRvIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgaW5zdGFsbGVkIChpLmUuLCB3aXRob3V0IGtub3dpbmcKK3doZXRoZXIgYSAzMiBvciA2NC1iaXQgdmVyc2lvbiBvZiBQeXRob24gYW5kIGNvcnJlc3BvbmRpbmcgbGF1bmNoZXIgd2FzCitpbnN0YWxsZWQgbGFzdCkuIEFzIG5vdGVkIGFib3ZlLCBhbiBvcHRpb25hbCAiLTMyIiBzdWZmaXggY2FuIGJlIHVzZWQgb24gYQordmVyc2lvbiBzcGVjaWZpZXIgdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3VyLgorCitFeGFtcGxlczoKKworKiBJZiBubyByZWxldmFudCBvcHRpb25zIGFyZSBzZXQsIHRoZSBjb21tYW5kcyBgYHB5dGhvbmBgIGFuZAorICBgYHB5dGhvbjJgYCB3aWxsIHVzZSB0aGUgbGF0ZXN0IFB5dGhvbiAyLnggdmVyc2lvbiBpbnN0YWxsZWQgYW5kCisgIHRoZSBjb21tYW5kIGBgcHl0aG9uM2BgIHdpbGwgdXNlIHRoZSBsYXRlc3QgUHl0aG9uIDMueCBpbnN0YWxsZWQuCisKKyogVGhlIGNvbW1hbmRzIGBgcHl0aG9uMy4xYGAgYW5kIGBgcHl0aG9uMi43YGAgd2lsbCBub3QgY29uc3VsdCBhbnkKKyAgb3B0aW9ucyBhdCBhbGwgYXMgdGhlIHZlcnNpb25zIGFyZSBmdWxseSBzcGVjaWZpZWQuCisKKyogSWYgYGBQWV9QWVRIT049M2BgLCB0aGUgY29tbWFuZHMgYGBweXRob25gYCBhbmQgYGBweXRob24zYGAgd2lsbCBib3RoIHVzZQorICB0aGUgbGF0ZXN0IGluc3RhbGxlZCBQeXRob24gMyB2ZXJzaW9uLgorCisqIElmIGBgUFlfUFlUSE9OPTMuMS0zMmBgLCB0aGUgY29tbWFuZCBgYHB5dGhvbmBgIHdpbGwgdXNlIHRoZSAzMi1iaXQKKyAgaW1wbGVtZW50YXRpb24gb2YgMy4xIHdoZXJlYXMgdGhlIGNvbW1hbmQgYGBweXRob24zYGAgd2lsbCB1c2UgdGhlIGxhdGVzdAorICBpbnN0YWxsZWQgUHl0aG9uIChQWV9QWVRIT04gd2FzIG5vdCBjb25zaWRlcmVkIGF0IGFsbCBhcyBhIG1ham9yCisgIHZlcnNpb24gd2FzIHNwZWNpZmllZC4pCisKKyogSWYgYGBQWV9QWVRIT049M2BgIGFuZCBgYFBZX1BZVEhPTjM9My4xYGAsIHRoZSBjb21tYW5kcworICBgYHB5dGhvbmBgIGFuZCBgYHB5dGhvbjNgYCB3aWxsIGJvdGggdXNlIHNwZWNpZmljYWxseSAzLjEKKworSW4gYWRkaXRpb24gdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzLCB0aGUgc2FtZSBzZXR0aW5ncyBjYW4gYmUgY29uZmlndXJlZAoraW4gdGhlIC5JTkkgZmlsZSB1c2VkIGJ5IHRoZSBsYXVuY2hlci4gIFRoZSBzZWN0aW9uIGluIHRoZSBJTkkgZmlsZSBpcworY2FsbGVkIGBgW2RlZmF1bHRzXWBgIGFuZCB0aGUga2V5IG5hbWUgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUKK2Vudmlyb25tZW50IHZhcmlhYmxlcyB3aXRob3V0IHRoZSBsZWFkaW5nIGBgUFlfYGAgcHJlZml4IChhbmQgbm90ZSB0aGF0Cit0aGUga2V5IG5hbWVzIGluIHRoZSBJTkkgZmlsZSBhcmUgY2FzZSBpbnNlbnNpdGl2ZS4pICBUaGUgY29udGVudHMgb2YKK2FuIGVudmlyb25tZW50IHZhcmlhYmxlIHdpbGwgb3ZlcnJpZGUgdGhpbmdzIHNwZWNpZmllZCBpbiB0aGUgSU5JIGZpbGUuCisKK0ZvciBleGFtcGxlOgorCisqIFNldHRpbmcgYGBQWV9QWVRIT049My4xYGAgaXMgZXF1aXZhbGVudCB0byB0aGUgSU5JIGZpbGUgY29udGFpbmluZzoKKworOjoKKworICBbZGVmYXVsdHNdCisgIHB5dGhvbj0zLjEKKworKiBTZXR0aW5nIGBgUFlfUFlUSE9OPTNgYCBhbmQgYGBQWV9QWVRIT04zPTMuMWBgIGlzIGVxdWl2YWxlbnQgdG8gdGhlIElOSSBmaWxlCisgIGNvbnRhaW5pbmc6CisKKzo6CisKKyAgW2RlZmF1bHRzXQorICBweXRob249MworICBweXRob24zPTMuMQorCitEaWFnbm9zdGljcworLS0tLS0tLS0tLS0KKworSWYgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgYGBQWUxBVU5DSF9ERUJVR2BgIGlzIHNldCAodG8gYW55IHZhbHVlKSwgdGhlCitsYXVuY2hlciB3aWxsIHByaW50IGRpYWdub3N0aWMgaW5mb3JtYXRpb24gdG8gc3RkZXJyIChpLmUuIHRvIHRoZSBjb25zb2xlKS4KK1doaWxlIHRoaXMgaW5mb3JtYXRpb24gbWFuYWdlcyB0byBiZSBzaW11bHRhbmVvdXNseSB2ZXJib3NlICphbmQqIHRlcnNlLCBpdAorc2hvdWxkIGFsbG93IHlvdSB0byBzZWUgd2hhdCB2ZXJzaW9ucyBvZiBQeXRob24gd2VyZSBsb2NhdGVkLCB3aHkgYQorcGFydGljdWxhciB2ZXJzaW9uIHdhcyBjaG9zZW4gYW5kIHRoZSBleGFjdCBjb21tYW5kLWxpbmUgdXNlZCB0byBleGVjdXRlIHRoZQordGFyZ2V0IFB5dGhvbi4KKworCiBBZGRpdGlvbmFsIG1vZHVsZXMKID09PT09PT09PT09PT09PT09PQogCkBAIC0zNDEsMyArNjA1LDcgQEAKICAgIGBBIFB5dGhvbiBmb3IgV2luZG93cyBUdXRvcmlhbCA8aHR0cDovL3d3dy5pbWxhZHJpcy5jb20vU2NyaXB0cy9QeXRob25Gb3JXaW5kb3dzLmh0bWw+YF8KICAgICAgIGJ5IEFtYW5kYSBCaXJtaW5naGFtLCAyMDA0CiAKKyAgIDpwZXA6YDM5N2AgLSBQeXRob24gbGF1bmNoZXIgZm9yIFdpbmRvd3MKKyAgICAgIFRoZSBwcm9wb3NhbCBmb3IgdGhlIGxhdW5jaGVyIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBQeXRob24gZGlzdHJpYnV0aW9uLgorCisKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjAucnN0IGIvRG9jL3doYXRzbmV3LzIuMC5yc3QKaW5kZXggODUwZTU3ZC4uNjRiOTA4YiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMC5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMC5yc3QKQEAgLTE2Niw3ICsxNjYsNyBAQAogcmVnaXN0ZXJpbmcgbmV3IGVuY29kaW5ncyB0aGF0IGFyZSB0aGVuIGF2YWlsYWJsZSB0aHJvdWdob3V0IGEgUHl0aG9uIHByb2dyYW0uCiBJZiBhbiBlbmNvZGluZyBpc24ndCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIHVzdWFsbHkgNy1iaXQgQVNDSUksCiB0aG91Z2ggaXQgY2FuIGJlIGNoYW5nZWQgZm9yIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBieSBjYWxsaW5nIHRoZQotOmZ1bmM6YHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoZW5jb2RpbmcpYCBmdW5jdGlvbiBpbiBhIGN1c3RvbWlzZWQgdmVyc2lvbiBvZgorYGBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKGVuY29kaW5nKWBgIGZ1bmN0aW9uIGluIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mCiA6ZmlsZTpgc2l0ZS5weWAuCiAKIENvbWJpbmluZyA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGFsd2F5cyBjb2VyY2VzIHRvIFVuaWNvZGUsIHVzaW5nIHRoZSBkZWZhdWx0CkBAIC0yMDMsNyArMjAzLDcgQEAKIAogVGhlIDptb2Q6YGNvZGVjc2AgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBsb29rIHVwIGV4aXN0aW5nIGVuY29kaW5ncyBhbmQKIHJlZ2lzdGVyIG5ldyBvbmVzLiAgVW5sZXNzIHlvdSB3YW50IHRvIGltcGxlbWVudCBhIG5ldyBlbmNvZGluZywgeW91J2xsIG1vc3QKLW9mdGVuIHVzZSB0aGUgOmZ1bmM6YGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhCitvZnRlbiB1c2UgdGhlIGBgY29kZWNzLmxvb2t1cChlbmNvZGluZylgYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhCiA0LWVsZW1lbnQgdHVwbGU6IGBgKGVuY29kZV9mdW5jLCBkZWNvZGVfZnVuYywgc3RyZWFtX3JlYWRlciwgc3RyZWFtX3dyaXRlcilgYC4KIAogKiAqZW5jb2RlX2Z1bmMqIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIFVuaWNvZGUgc3RyaW5nLCBhbmQgcmV0dXJucyBhIDItdHVwbGUKQEAgLTYwMCw3ICs2MDAsNyBAQAogQ2hhbmdlcyB0byBCdWlsdC1pbiBGdW5jdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUEgbmV3IGJ1aWx0LWluLCA6ZnVuYzpgemlwKHNlcTEsIHNlcTIsIC4uLilgLCBoYXMgYmVlbiBhZGRlZC4gIDpmdW5jOmB6aXBgCitBIG5ldyBidWlsdC1pbiwgYGB6aXAoc2VxMSwgc2VxMiwgLi4uKWBgLCBoYXMgYmVlbiBhZGRlZC4gIDpmdW5jOmB6aXBgCiByZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMgd2hlcmUgZWFjaCB0dXBsZSBjb250YWlucyB0aGUgaS10aCBlbGVtZW50IGZyb20gZWFjaCBvZgogdGhlIGFyZ3VtZW50IHNlcXVlbmNlcy4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gOmZ1bmM6YHppcGAgYW5kIGBgbWFwKE5vbmUsCiBzZXExLCBzZXEyKWBgIGlzIHRoYXQgOmZ1bmM6YG1hcGAgcGFkcyB0aGUgc2VxdWVuY2VzIHdpdGggYGBOb25lYGAgaWYgdGhlCkBAIC02MTksNyArNjE5LDcgQEAKIHdvdWxkIGJlIGBgKDIsIDAsIDEsICdiZXRhJywgMSlgYC4gKmxldmVsKiBpcyBhIHN0cmluZyBzdWNoIGFzIGBgImFscGhhImBgLAogYGAiYmV0YSJgYCwgb3IgYGAiZmluYWwiYGAgZm9yIGEgZmluYWwgcmVsZWFzZS4KIAotRGljdGlvbmFyaWVzIGhhdmUgYW4gb2RkIG5ldyBtZXRob2QsIDptZXRoOmBzZXRkZWZhdWx0KGtleSwgZGVmYXVsdClgLCB3aGljaAorRGljdGlvbmFyaWVzIGhhdmUgYW4gb2RkIG5ldyBtZXRob2QsIGBgc2V0ZGVmYXVsdChrZXksIGRlZmF1bHQpYGAsIHdoaWNoCiBiZWhhdmVzIHNpbWlsYXJseSB0byB0aGUgZXhpc3RpbmcgOm1ldGg6YGdldGAgbWV0aG9kLiAgSG93ZXZlciwgaWYgdGhlIGtleSBpcwogbWlzc2luZywgOm1ldGg6YHNldGRlZmF1bHRgIGJvdGggcmV0dXJucyB0aGUgdmFsdWUgb2YgKmRlZmF1bHQqIGFzIDptZXRoOmBnZXRgCiB3b3VsZCBkbywgYW5kIGFsc28gaW5zZXJ0cyBpdCBpbnRvIHRoZSBkaWN0aW9uYXJ5IGFzIHRoZSB2YWx1ZSBmb3IgKmtleSouICBUaHVzLApAQCAtMTAzOCw3ICsxMDM4LDcgQEAKIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgU29ja2V0IExheWVyLCB3aGljaCBlbmNyeXB0cyB0aGUgZGF0YSBiZWluZwogc2VudCBvdmVyIGEgc29ja2V0LiAgV2hlbiBjb21waWxpbmcgUHl0aG9uLCB5b3UgY2FuIGVkaXQgOmZpbGU6YE1vZHVsZXMvU2V0dXBgCiB0byBpbmNsdWRlIFNTTCBzdXBwb3J0LCB3aGljaCBhZGRzIGFuIGFkZGl0aW9uYWwgZnVuY3Rpb24gdG8gdGhlIDptb2Q6YHNvY2tldGAKLW1vZHVsZTogOmZ1bmM6YHNvY2tldC5zc2woc29ja2V0LCBrZXlmaWxlLCBjZXJ0ZmlsZSlgLCB3aGljaCB0YWtlcyBhIHNvY2tldAorbW9kdWxlOiBgYHNvY2tldC5zc2woc29ja2V0LCBrZXlmaWxlLCBjZXJ0ZmlsZSlgYCwgd2hpY2ggdGFrZXMgYSBzb2NrZXQKIG9iamVjdCBhbmQgcmV0dXJucyBhbiBTU0wgc29ja2V0LiAgVGhlIDptb2Q6YGh0dHBsaWJgIGFuZCA6bW9kOmB1cmxsaWJgIG1vZHVsZXMKIHdlcmUgYWxzbyBjaGFuZ2VkIHRvIHN1cHBvcnQgYGBodHRwczovL2BgIFVSTHMsIHRob3VnaCBubyBvbmUgaGFzIGltcGxlbWVudGVkCiBGVFAgb3IgU01UUCBvdmVyIFNTTC4KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjEucnN0IGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKaW5kZXggMTE3YWYxMC4uYjFhYjQ4ZSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKQEAgLTIwNCw3ICsyMDQsNyBAQAogbGlzdCwgb3IgYW55IG90aGVyIFB5dGhvbiBvYmplY3QuICBBbHRlcm5hdGl2ZWx5IHRoZXkgY2FuIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZgogdGhlIGNvbXBhcmlzb24gaXMgaW1wb3NzaWJsZSwgaW5jb25zaXN0ZW50LCBvciBvdGhlcndpc2UgbWVhbmluZ2xlc3MuCiAKLVRoZSBidWlsdC1pbiA6ZnVuYzpgY21wKEEsQilgIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJpY2ggY29tcGFyaXNvbiBtYWNoaW5lcnksCitUaGUgYnVpbHQtaW4gYGBjbXAoQSxCKWBgIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJpY2ggY29tcGFyaXNvbiBtYWNoaW5lcnksCiBhbmQgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmeWluZyB3aGljaCBjb21wYXJpc29uIG9wZXJhdGlvbiB0bwogdXNlOyB0aGlzIGlzIGdpdmVuIGFzIG9uZSBvZiB0aGUgc3RyaW5ncyBgYCI8ImBgLCBgYCI8PSJgYCwgYGAiPiJgYCwgYGAiPj0iYGAsCiBgYCI9PSJgYCwgb3IgYGAiIT0iYGAuICBJZiBjYWxsZWQgd2l0aG91dCB0aGUgb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQsCkBAIC0zNTAsNyArMzUwLDcgQEAKIGFuZCBhbm90aGVyIGJlaW5nIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gZGF0YSBzdHJ1Y3R1cmVzIHN1Y2ggYXMgdHJlZXMuCiAKIEZvciBleGFtcGxlLCBjb25zaWRlciBhIG1lbW9pemluZyBmdW5jdGlvbiB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBhbm90aGVyCi1mdW5jdGlvbiA6ZnVuYzpgZih4KWAgYnkgc3RvcmluZyB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudCBhbmQgaXRzIHJlc3VsdCBpbiBhCitmdW5jdGlvbiBgYGYoeClgYCBieSBzdG9yaW5nIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGFuZCBpdHMgcmVzdWx0IGluIGEKIGRpY3Rpb25hcnk6OgogCiAgICBfY2FjaGUgPSB7fQpAQCAtNjU2LDcgKzY1Niw3IEBACiAgIHVzZSA6bW9kOmBmdHBsaWJgIHRvIHJldHJpZXZlIGZpbGVzIGFuZCB0aGVuIGRvbid0IHdvcmsgZnJvbSBiZWhpbmQgYSBmaXJld2FsbC4KICAgSXQncyBkZWVtZWQgdW5saWtlbHkgdGhhdCB0aGlzIHdpbGwgY2F1c2UgcHJvYmxlbXMgZm9yIGFueW9uZSwgYmVjYXVzZSBOZXRzY2FwZQogICBkZWZhdWx0cyB0byBwYXNzaXZlIG1vZGUgYW5kIGZldyBwZW9wbGUgY29tcGxhaW4sIGJ1dCBpZiBwYXNzaXZlIG1vZGUgaXMKLSAgdW5zdWl0YWJsZSBmb3IgeW91ciBhcHBsaWNhdGlvbiBvciBuZXR3b3JrIHNldHVwLCBjYWxsIDptZXRoOmBzZXRfcGFzdigwKWAgb24KKyAgdW5zdWl0YWJsZSBmb3IgeW91ciBhcHBsaWNhdGlvbiBvciBuZXR3b3JrIHNldHVwLCBjYWxsIGBgc2V0X3Bhc3YoMClgYCBvbgogICBGVFAgb2JqZWN0cyB0byBkaXNhYmxlIHBhc3NpdmUgbW9kZS4KIAogKiBTdXBwb3J0IGZvciByYXcgc29ja2V0IGFjY2VzcyBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgc29ja2V0YCBtb2R1bGUsCkBAIC02NjYsNyArNjY2LDcgQEAKICAgZm9yIGRpc3BsYXlpbmcgdGltaW5nIHByb2ZpbGVzIGZvciBQeXRob24gcHJvZ3JhbXMsIGludm9rZWQgd2hlbiB0aGUgbW9kdWxlIGlzCiAgIHJ1biBhcyBhIHNjcmlwdC4gIENvbnRyaWJ1dGVkIGJ5ICBFcmljIFMuIFJheW1vbmQuCiAKLSogQSBuZXcgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IGZ1bmN0aW9uLCA6ZnVuYzpgc3lzLl9nZXRmcmFtZShbZGVwdGhdKWAsIGhhcworKiBBIG5ldyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZnVuY3Rpb24sIGBgc3lzLl9nZXRmcmFtZShbZGVwdGhdKWBgLCBoYXMKICAgYmVlbiBhZGRlZCB0byByZXR1cm4gYSBnaXZlbiBmcmFtZSBvYmplY3QgZnJvbSB0aGUgY3VycmVudCBjYWxsIHN0YWNrLgogICA6ZnVuYzpgc3lzLl9nZXRmcmFtZWAgcmV0dXJucyB0aGUgZnJhbWUgYXQgdGhlIHRvcCBvZiB0aGUgY2FsbCBzdGFjazsgIGlmIHRoZQogICBvcHRpb25hbCBpbnRlZ2VyIGFyZ3VtZW50ICpkZXB0aCogaXMgc3VwcGxpZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBmcmFtZQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4yLnJzdAppbmRleCAxZGIxZWU3Li4yZTcwNjlkIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4yLnJzdApAQCAtMTczLDEyICsxNzMsMTIgQEAKIAogKiA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIGF0dHJpYnV0ZSdzIGRvY3N0cmluZy4KIAotKiA6bWV0aDpgX19nZXRfXyhvYmplY3QpYCBpcyBhIG1ldGhvZCB0aGF0IHJldHJpZXZlcyB0aGUgYXR0cmlidXRlIHZhbHVlIGZyb20KKyogYGBfX2dldF9fKG9iamVjdClgYCBpcyBhIG1ldGhvZCB0aGF0IHJldHJpZXZlcyB0aGUgYXR0cmlidXRlIHZhbHVlIGZyb20KICAgKm9iamVjdCouCiAKLSogOm1ldGg6YF9fc2V0X18ob2JqZWN0LCB2YWx1ZSlgIHNldHMgdGhlIGF0dHJpYnV0ZSBvbiAqb2JqZWN0KiB0byAqdmFsdWUqLgorKiBgYF9fc2V0X18ob2JqZWN0LCB2YWx1ZSlgYCBzZXRzIHRoZSBhdHRyaWJ1dGUgb24gKm9iamVjdCogdG8gKnZhbHVlKi4KIAotKiA6bWV0aDpgX19kZWxldGVfXyhvYmplY3QsIHZhbHVlKWAgZGVsZXRlcyB0aGUgKnZhbHVlKiAgYXR0cmlidXRlIG9mICpvYmplY3QqLgorKiBgYF9fZGVsZXRlX18ob2JqZWN0LCB2YWx1ZSlgYCBkZWxldGVzIHRoZSAqdmFsdWUqICBhdHRyaWJ1dGUgb2YgKm9iamVjdCouCiAKIEZvciBleGFtcGxlLCB3aGVuIHlvdSB3cml0ZSBgYG9iai54YGAsIHRoZSBzdGVwcyB0aGF0IFB5dGhvbiBhY3R1YWxseSBwZXJmb3JtcwogYXJlOjoKQEAgLTI4OCw3ICsyODgsNyBAQAogd2hpY2ggaXMgdGhlIGJlaGF2aW91ciB3ZSdyZSBhZnRlci4gIFRoaXMgbG9va3VwIHJ1bGUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZQogZm9sbG93ZWQgYnkgQ29tbW9uIExpc3AuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YHN1cGVyYCwgcHJvdmlkZXMgYSB3YXkKIHRvIGdldCBhdCBhIGNsYXNzJ3Mgc3VwZXJjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIHRvIHJlaW1wbGVtZW50IFB5dGhvbidzCi1hbGdvcml0aG0uIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9ybSB3aWxsIGJlICA6ZnVuYzpgc3VwZXIoY2xhc3MsIG9iailgLCB3aGljaAorYWxnb3JpdGhtLiBUaGUgbW9zdCBjb21tb25seSB1c2VkIGZvcm0gd2lsbCBiZSAgYGBzdXBlcihjbGFzcywgb2JqKWBgLCB3aGljaAogcmV0dXJucyAgYSBib3VuZCBzdXBlcmNsYXNzIG9iamVjdCAobm90IHRoZSBhY3R1YWwgY2xhc3Mgb2JqZWN0KS4gIFRoaXMgZm9ybQogd2lsbCBiZSB1c2VkIGluIG1ldGhvZHMgdG8gY2FsbCBhIG1ldGhvZCBpbiB0aGUgc3VwZXJjbGFzczsgZm9yIGV4YW1wbGUsCiA6Y2xhc3M6YERgJ3MgOm1ldGg6YHNhdmVgIG1ldGhvZCB3b3VsZCBsb29rIGxpa2UgdGhpczo6CkBAIC0zMDEsNyArMzAxLDcgQEAKICAgICAgICAgICAgLi4uCiAKIDpmdW5jOmBzdXBlcmAgY2FuIGFsc28gcmV0dXJuIHVuYm91bmQgc3VwZXJjbGFzcyBvYmplY3RzIHdoZW4gY2FsbGVkIGFzCi06ZnVuYzpgc3VwZXIoY2xhc3MpYCBvciA6ZnVuYzpgc3VwZXIoY2xhc3MxLCBjbGFzczIpYCwgYnV0IHRoaXMgcHJvYmFibHkgd29uJ3QKK2Bgc3VwZXIoY2xhc3MpYGAgb3IgYGBzdXBlcihjbGFzczEsIGNsYXNzMilgYCwgYnV0IHRoaXMgcHJvYmFibHkgd29uJ3QKIG9mdGVuIGJlIHVzZWZ1bC4KIAogCkBAIC0zMTQsMTMgKzMxNCwxMyBAQAogYGBvYmoucGFyZW50YGAgaW50byBhIG1ldGhvZCBjYWxsIHN1Y2ggYXMgYGBvYmouZ2V0X3BhcmVudGBgLiAgUHl0aG9uIDIuMiBhZGRzCiBzb21lIG5ldyB3YXlzIG9mIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZSBhY2Nlc3MuCiAKLUZpcnN0LCA6bWV0aDpgX19nZXRhdHRyX18oYXR0cl9uYW1lKWAgaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IG5ldy1zdHlsZSBjbGFzc2VzLAorRmlyc3QsIGBgX19nZXRhdHRyX18oYXR0cl9uYW1lKWBgIGlzIHN0aWxsIHN1cHBvcnRlZCBieSBuZXctc3R5bGUgY2xhc3NlcywKIGFuZCBub3RoaW5nIGFib3V0IGl0IGhhcyBjaGFuZ2VkLiAgQXMgYmVmb3JlLCBpdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFuIGF0dGVtcHQKIGlzIG1hZGUgdG8gYWNjZXNzIGBgb2JqLmZvb2BgIGFuZCBubyBhdHRyaWJ1dGUgbmFtZWQgYGBmb29gYCBpcyBmb3VuZCBpbiB0aGUKIGluc3RhbmNlJ3MgZGljdGlvbmFyeS4KIAogTmV3LXN0eWxlIGNsYXNzZXMgYWxzbyBzdXBwb3J0IGEgbmV3IG1ldGhvZCwKLTptZXRoOmBfX2dldGF0dHJpYnV0ZV9fKGF0dHJfbmFtZSlgLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG1ldGhvZHMgaXMKK2BgX19nZXRhdHRyaWJ1dGVfXyhhdHRyX25hbWUpYGAuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcyBpcwogdGhhdCA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgaXMgKmFsd2F5cyogY2FsbGVkIHdoZW5ldmVyIGFueSBhdHRyaWJ1dGUgaXMKIGFjY2Vzc2VkLCB3aGlsZSB0aGUgb2xkIDptZXRoOmBfX2dldGF0dHJfX2AgaXMgb25seSBjYWxsZWQgaWYgYGBmb29gYCBpc24ndAogZm91bmQgaW4gdGhlIGluc3RhbmNlJ3MgZGljdGlvbmFyeS4KQEAgLTQ0MSw4ICs0NDEsOCBAQAogCiBJbiBQeXRob24gMi4yLCBpdGVyYXRpb24gY2FuIGJlIGltcGxlbWVudGVkIHNlcGFyYXRlbHksIGFuZCA6bWV0aDpgX19nZXRpdGVtX19gCiBtZXRob2RzIGNhbiBiZSBsaW1pdGVkIHRvIGNsYXNzZXMgdGhhdCByZWFsbHkgZG8gc3VwcG9ydCByYW5kb20gYWNjZXNzLiAgVGhlCi1iYXNpYyBpZGVhIG9mIGl0ZXJhdG9ycyBpcyAgc2ltcGxlLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBpdGVyKG9iailgCi1vciBgYGl0ZXIoQywgc2VudGluZWwpYGAsIGlzIHVzZWQgdG8gZ2V0IGFuIGl0ZXJhdG9yLiA6ZnVuYzpgaXRlcihvYmopYCByZXR1cm5zCitiYXNpYyBpZGVhIG9mIGl0ZXJhdG9ycyBpcyAgc2ltcGxlLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgaXRlcihvYmopYGAKK29yIGBgaXRlcihDLCBzZW50aW5lbClgYCwgaXMgdXNlZCB0byBnZXQgYW4gaXRlcmF0b3IuIGBgaXRlcihvYmopYGAgcmV0dXJucwogYW4gaXRlcmF0b3IgZm9yIHRoZSBvYmplY3QgKm9iaiosIHdoaWxlIGBgaXRlcihDLCBzZW50aW5lbClgYCByZXR1cm5zIGFuCiBpdGVyYXRvciB0aGF0IHdpbGwgaW52b2tlIHRoZSBjYWxsYWJsZSBvYmplY3QgKkMqIHVudGlsIGl0IHJldHVybnMgKnNlbnRpbmVsKiB0bwogc2lnbmFsIHRoYXQgdGhlIGl0ZXJhdG9yIGlzIGRvbmUuCkBAIC03OTMsNyArNzkzLDcgQEAKIAogQW5vdGhlciBjaGFuZ2UgaXMgc2ltcGxlciB0byBleHBsYWluLiBTaW5jZSB0aGVpciBpbnRyb2R1Y3Rpb24sIFVuaWNvZGUgc3RyaW5ncwogaGF2ZSBzdXBwb3J0ZWQgYW4gOm1ldGg6YGVuY29kZWAgbWV0aG9kIHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0byBhIHNlbGVjdGVkCi1lbmNvZGluZyBzdWNoIGFzIFVURi04IG9yIExhdGluLTEuICBBIHN5bW1ldHJpYyA6bWV0aDpgZGVjb2RlKFsqZW5jb2RpbmcqXSlgCitlbmNvZGluZyBzdWNoIGFzIFVURi04IG9yIExhdGluLTEuICBBIHN5bW1ldHJpYyBgYGRlY29kZShbKmVuY29kaW5nKl0pYGAKIG1ldGhvZCBoYXMgYmVlbiBhZGRlZCB0byA4LWJpdCBzdHJpbmdzICh0aG91Z2ggbm90IHRvIFVuaWNvZGUgc3RyaW5ncykgaW4gMi4yLgogOm1ldGg6YGRlY29kZWAgYXNzdW1lcyB0aGF0IHRoZSBzdHJpbmcgaXMgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQgZGVjb2RlcwogaXQsIHJldHVybmluZyB3aGF0ZXZlciBpcyByZXR1cm5lZCBieSB0aGUgY29kZWMuCkBAIC0xMjAzLDcgKzEyMDMsNyBAQAogICB0byBhbiBNQkNTIGVuY29kZWQgc3RyaW5nLCBhcyB1c2VkIGJ5IHRoZSBNaWNyb3NvZnQgZmlsZSBBUElzLiAgQXMgTUJDUyBpcwogICBleHBsaWNpdGx5IHVzZWQgYnkgdGhlIGZpbGUgQVBJcywgUHl0aG9uJ3MgY2hvaWNlIG9mIEFTQ0lJIGFzIHRoZSBkZWZhdWx0CiAgIGVuY29kaW5nIHR1cm5zIG91dCB0byBiZSBhbiBhbm5veWFuY2UuICBPbiBVbml4LCB0aGUgbG9jYWxlJ3MgY2hhcmFjdGVyIHNldCBpcwotICB1c2VkIGlmIDpmdW5jOmBsb2NhbGUubmxfbGFuZ2luZm8oQ09ERVNFVClgIGlzIGF2YWlsYWJsZS4gIChXaW5kb3dzIHN1cHBvcnQgd2FzCisgIHVzZWQgaWYgYGBsb2NhbGUubmxfbGFuZ2luZm8oQ09ERVNFVClgYCBpcyBhdmFpbGFibGUuICAoV2luZG93cyBzdXBwb3J0IHdhcwogICBjb250cmlidXRlZCBieSBNYXJrIEhhbW1vbmQgd2l0aCBhc3Npc3RhbmNlIGZyb20gTWFyYy1BbmRyw6kgTGVtYnVyZy4gVW5peAogICBzdXBwb3J0IHdhcyBhZGRlZCBieSBNYXJ0aW4gdm9uIEzDtndpcy4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjMucnN0IGIvRG9jL3doYXRzbmV3LzIuMy5yc3QKaW5kZXggZjRjNzllNC4uZjBlNDhkOSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMy5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMy5yc3QKQEAgLTUwNCw4ICs1MDQsOCBAQAogICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludGVnZXIgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm8KIAogU2xpZ2h0bHkgbW9yZSBhZHZhbmNlZCBwcm9ncmFtcyB3aWxsIHVzZSBhIGxvZ2dlciBvdGhlciB0aGFuIHRoZSByb290IGxvZ2dlci4KLVRoZSA6ZnVuYzpgZ2V0TG9nZ2VyKG5hbWUpYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBhIHBhcnRpY3VsYXIgbG9nLCBjcmVhdGluZwotaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuIDpmdW5jOmBnZXRMb2dnZXIoTm9uZSlgIHJldHVybnMgdGhlIHJvb3QgbG9nZ2VyLiA6OgorVGhlIGBgZ2V0TG9nZ2VyKG5hbWUpYGAgZnVuY3Rpb24gaXMgdXNlZCB0byBnZXQgYSBwYXJ0aWN1bGFyIGxvZywgY3JlYXRpbmcKK2l0IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0LiBgYGdldExvZ2dlcihOb25lKWBgIHJldHVybnMgdGhlIHJvb3QgbG9nZ2VyLiA6OgogCiAgICBsb2cgPSBsb2dnaW5nLmdldExvZ2dlcignc2VydmVyJykKICAgICAuLi4KQEAgLTcyNCwxMCArNzI0LDEwIEBACiAgIG9iamVjdHMgdG8gaXQuICBBZGRpdGlvbmFsIGJ1aWx0LWluIGFuZCBmcm96ZW4gbW9kdWxlcyBjYW4gYmUgaW1wb3J0ZWQgYnkgYW4KICAgb2JqZWN0IGFkZGVkIHRvIHRoaXMgbGlzdC4KIAotSW1wb3J0ZXIgb2JqZWN0cyBtdXN0IGhhdmUgYSBzaW5nbGUgbWV0aG9kLCA6bWV0aDpgZmluZF9tb2R1bGUoZnVsbG5hbWUsCi1wYXRoPU5vbmUpYC4gICpmdWxsbmFtZSogd2lsbCBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsIGUuZy4gYGBzdHJpbmdgYCBvcgorSW1wb3J0ZXIgb2JqZWN0cyBtdXN0IGhhdmUgYSBzaW5nbGUgbWV0aG9kLCBgYGZpbmRfbW9kdWxlKGZ1bGxuYW1lLAorcGF0aD1Ob25lKWBgLiAgKmZ1bGxuYW1lKiB3aWxsIGJlIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwgZS5nLiBgYHN0cmluZ2BgIG9yCiBgYGRpc3R1dGlscy5jb3JlYGAuICA6bWV0aDpgZmluZF9tb2R1bGVgIG11c3QgcmV0dXJuIGEgbG9hZGVyIG9iamVjdCB0aGF0IGhhcyBhCi1zaW5nbGUgbWV0aG9kLCA6bWV0aDpgbG9hZF9tb2R1bGUoZnVsbG5hbWUpYCwgdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIHRoZQorc2luZ2xlIG1ldGhvZCwgYGBsb2FkX21vZHVsZShmdWxsbmFtZSlgYCwgdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIHRoZQogY29ycmVzcG9uZGluZyBtb2R1bGUgb2JqZWN0LgogCiBQc2V1ZG8tY29kZSBmb3IgUHl0aG9uJ3MgbmV3IGltcG9ydCBsb2dpYywgdGhlcmVmb3JlLCBsb29rcyBzb21ldGhpbmcgbGlrZSB0aGlzCkBAIC05MzUsNyArOTM1LDcgQEAKICAgIFswLCAyLCA0XQogCiBUbyBzaW1wbGlmeSBpbXBsZW1lbnRpbmcgc2VxdWVuY2VzIHRoYXQgc3VwcG9ydCBleHRlbmRlZCBzbGljaW5nLCBzbGljZSBvYmplY3RzCi1ub3cgaGF2ZSBhIG1ldGhvZCA6bWV0aDpgaW5kaWNlcyhsZW5ndGgpYCB3aGljaCwgZ2l2ZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlLAorbm93IGhhdmUgYSBtZXRob2QgYGBpbmRpY2VzKGxlbmd0aClgYCB3aGljaCwgZ2l2ZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlLAogcmV0dXJucyBhIGBgKHN0YXJ0LCBzdG9wLCBzdGVwKWBgIHR1cGxlIHRoYXQgY2FuIGJlIHBhc3NlZCBkaXJlY3RseSB0bwogOmZ1bmM6YHJhbmdlYC4gOm1ldGg6YGluZGljZXNgIGhhbmRsZXMgb21pdHRlZCBhbmQgb3V0LW9mLWJvdW5kcyBpbmRpY2VzIGluIGEKIG1hbm5lciBjb25zaXN0ZW50IHdpdGggcmVndWxhciBzbGljZXMgKGFuZCB0aGlzIGlubm9jdW91cyBwaHJhc2UgaGlkZXMgYSB3ZWx0ZXIKQEAgLTk4NCw3ICs5ODQsNyBAQAogKiBCdWlsdC1pbiB0eXBlcyBub3cgc3VwcG9ydCB0aGUgZXh0ZW5kZWQgc2xpY2luZyBzeW50YXgsIGFzIGRlc2NyaWJlZCBpbgogICBzZWN0aW9uIDpyZWY6YHNlY3Rpb24tc2xpY2VzYCBvZiB0aGlzIGRvY3VtZW50LgogCi0qIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgc3VtKGl0ZXJhYmxlLCBzdGFydD0wKWAsICBhZGRzIHVwIHRoZSBudW1lcmljCisqIEEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCBgYHN1bShpdGVyYWJsZSwgc3RhcnQ9MClgYCwgIGFkZHMgdXAgdGhlIG51bWVyaWMKICAgaXRlbXMgaW4gdGhlIGl0ZXJhYmxlIG9iamVjdCBhbmQgcmV0dXJucyB0aGVpciBzdW0uICA6ZnVuYzpgc3VtYCBvbmx5IGFjY2VwdHMKICAgbnVtYmVycywgbWVhbmluZyB0aGF0IHlvdSBjYW4ndCB1c2UgaXQgdG8gY29uY2F0ZW5hdGUgYSBidW5jaCBvZiBzdHJpbmdzLgogICAoQ29udHJpYnV0ZWQgYnkgQWxleCBNYXJ0ZWxsaS4pCkBAIC05OTgsNyArOTk4LDcgQEAKICAgaXRzIGluZGV4LCBub3cgdGFrZXMgb3B0aW9uYWwgICpzdGFydCogYW5kICpzdG9wKiBhcmd1bWVudHMgdG8gbGltaXQgdGhlIHNlYXJjaAogICB0byAgb25seSBwYXJ0IG9mIHRoZSBsaXN0LgogCi0qIERpY3Rpb25hcmllcyBoYXZlIGEgbmV3IG1ldGhvZCwgOm1ldGg6YHBvcChrZXlbLCAqZGVmYXVsdCpdKWAsIHRoYXQgcmV0dXJucworKiBEaWN0aW9uYXJpZXMgaGF2ZSBhIG5ldyBtZXRob2QsIGBgcG9wKGtleVssICpkZWZhdWx0Kl0pYGAsIHRoYXQgcmV0dXJucwogICB0aGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byAqa2V5KiBhbmQgcmVtb3ZlcyB0aGF0IGtleS92YWx1ZSBwYWlyIGZyb20gdGhlCiAgIGRpY3Rpb25hcnkuICBJZiB0aGUgcmVxdWVzdGVkIGtleSBpc24ndCBwcmVzZW50IGluIHRoZSBkaWN0aW9uYXJ5LCAqZGVmYXVsdCogaXMKICAgcmV0dXJuZWQgaWYgaXQncyBzcGVjaWZpZWQgYW5kIDpleGM6YEtleUVycm9yYCByYWlzZWQgaWYgaXQgaXNuJ3QuIDo6CkBAIC0xMDIwLDcgKzEwMjAsNyBAQAogICAgICB7fQogICAgICA+Pj4KIAotICBUaGVyZSdzIGFsc28gYSBuZXcgY2xhc3MgbWV0aG9kLCAgOm1ldGg6YGRpY3QuZnJvbWtleXMoaXRlcmFibGUsIHZhbHVlKWAsIHRoYXQKKyAgVGhlcmUncyBhbHNvIGEgbmV3IGNsYXNzIG1ldGhvZCwgIGBgZGljdC5mcm9ta2V5cyhpdGVyYWJsZSwgdmFsdWUpYGAsIHRoYXQKICAgY3JlYXRlcyBhIGRpY3Rpb25hcnkgd2l0aCBrZXlzIHRha2VuIGZyb20gdGhlIHN1cHBsaWVkIGl0ZXJhdG9yICppdGVyYWJsZSogYW5kCiAgIGFsbCB2YWx1ZXMgc2V0IHRvICp2YWx1ZSosIGRlZmF1bHRpbmcgdG8gYGBOb25lYGAuCiAKQEAgLTEwOTMsNyArMTA5Myw3IEBACiAgIDEwMCBieXRlY29kZXMsIHNwZWVkaW5nIHVwIHNpbmdsZS10aHJlYWRlZCBhcHBsaWNhdGlvbnMgYnkgcmVkdWNpbmcgdGhlCiAgIHN3aXRjaGluZyBvdmVyaGVhZC4gIFNvbWUgbXVsdGl0aHJlYWRlZCBhcHBsaWNhdGlvbnMgbWF5IHN1ZmZlciBzbG93ZXIgcmVzcG9uc2UKICAgdGltZSwgYnV0IHRoYXQncyBlYXNpbHkgZml4ZWQgYnkgc2V0dGluZyB0aGUgbGltaXQgYmFjayB0byBhIGxvd2VyIG51bWJlciB1c2luZwotICA6ZnVuYzpgc3lzLnNldGNoZWNraW50ZXJ2YWwoTilgLiBUaGUgbGltaXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRoZSBuZXcKKyAgYGBzeXMuc2V0Y2hlY2tpbnRlcnZhbChOKWBgLiBUaGUgbGltaXQgY2FuIGJlIHJldHJpZXZlZCB3aXRoIHRoZSBuZXcKICAgOmZ1bmM6YHN5cy5nZXRjaGVja2ludGVydmFsYCBmdW5jdGlvbi4KIAogKiBPbmUgbWlub3IgYnV0IGZhci1yZWFjaGluZyBjaGFuZ2UgaXMgdGhhdCB0aGUgbmFtZXMgb2YgZXh0ZW5zaW9uIHR5cGVzIGRlZmluZWQKQEAgLTEyNzIsMTAgKzEyNzIsMTAgQEAKIAogKiBQcmV2aW91c2x5IHRoZSA6bW9kOmBkb2N0ZXN0YCBtb2R1bGUgd291bGQgb25seSBzZWFyY2ggdGhlIGRvY3N0cmluZ3Mgb2YKICAgcHVibGljIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucyBmb3IgdGVzdCBjYXNlcywgYnV0IGl0IG5vdyBhbHNvIGV4YW1pbmVzIHByaXZhdGUKLSAgb25lcyBhcyB3ZWxsLiAgVGhlIDpmdW5jOmBEb2NUZXN0U3VpdGUoYCBmdW5jdGlvbiBjcmVhdGVzIGEKKyAgb25lcyBhcyB3ZWxsLiAgVGhlIDpmdW5jOmBEb2NUZXN0U3VpdGVgIGZ1bmN0aW9uIGNyZWF0ZXMgYQogICA6Y2xhc3M6YHVuaXR0ZXN0LlRlc3RTdWl0ZWAgb2JqZWN0IGZyb20gYSBzZXQgb2YgOm1vZDpgZG9jdGVzdGAgdGVzdHMuCiAKLSogVGhlIG5ldyA6ZnVuYzpgZ2MuZ2V0X3JlZmVyZW50cyhvYmplY3QpYCBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlCisqIFRoZSBuZXcgYGBnYy5nZXRfcmVmZXJlbnRzKG9iamVjdClgYCBmdW5jdGlvbiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhlCiAgIG9iamVjdHMgcmVmZXJlbmNlZCBieSAqb2JqZWN0Ki4KIAogKiBUaGUgOm1vZDpgZ2V0b3B0YCBtb2R1bGUgZ2FpbmVkIGEgbmV3IGZ1bmN0aW9uLCA6ZnVuYzpgZ251X2dldG9wdGAsIHRoYXQKQEAgLTEzNDcsOCArMTM0Nyw4IEBACiAgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKLSogVHdvIG5ldyBmdW5jdGlvbnMgaW4gdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSwgOmZ1bmM6YGRlZ3JlZXMocmFkcylgIGFuZAotICA6ZnVuYzpgcmFkaWFucyhkZWdzKWAsIGNvbnZlcnQgYmV0d2VlbiByYWRpYW5zIGFuZCBkZWdyZWVzLiAgT3RoZXIgZnVuY3Rpb25zIGluCisqIFR3byBuZXcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGUsIGBgZGVncmVlcyhyYWRzKWBgIGFuZAorICBgYHJhZGlhbnMoZGVncylgYCwgY29udmVydCBiZXR3ZWVuIHJhZGlhbnMgYW5kIGRlZ3JlZXMuICBPdGhlciBmdW5jdGlvbnMgaW4KICAgdGhlIDptb2Q6YG1hdGhgIG1vZHVsZSBzdWNoIGFzIDpmdW5jOmBtYXRoLnNpbmAgYW5kIDpmdW5jOmBtYXRoLmNvc2AgaGF2ZSBhbHdheXMKICAgcmVxdWlyZWQgaW5wdXQgdmFsdWVzIG1lYXN1cmVkIGluIHJhZGlhbnMuICBBbHNvLCBhbiBvcHRpb25hbCAqYmFzZSogYXJndW1lbnQKICAgd2FzIGFkZGVkIHRvIDpmdW5jOmBtYXRoLmxvZ2AgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29tcHV0ZSBsb2dhcml0aG1zIGZvciBiYXNlcwpAQCAtMTQwNSw3ICsxNDA1LDcgQEAKICAgYW5kIHRoZXJlZm9yZSBmYXN0ZXIgcGVyZm9ybWFuY2UuICBTZXR0aW5nIHRoZSBwYXJzZXIgb2JqZWN0J3MKICAgOmF0dHI6YGJ1ZmZlcl90ZXh0YCBhdHRyaWJ1dGUgdG8gOmNvbnN0OmBUcnVlYCB3aWxsIGVuYWJsZSBidWZmZXJpbmcuCiAKLSogVGhlIDpmdW5jOmBzYW1wbGUocG9wdWxhdGlvbiwgaylgIGZ1bmN0aW9uIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgcmFuZG9tYAorKiBUaGUgYGBzYW1wbGUocG9wdWxhdGlvbiwgaylgYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHJhbmRvbWAKICAgbW9kdWxlLiAgKnBvcHVsYXRpb24qIGlzIGEgc2VxdWVuY2Ugb3IgOmNsYXNzOmB4cmFuZ2VgIG9iamVjdCBjb250YWluaW5nIHRoZQogICBlbGVtZW50cyBvZiBhIHBvcHVsYXRpb24sIGFuZCA6ZnVuYzpgc2FtcGxlYCBjaG9vc2VzICprKiBlbGVtZW50cyBmcm9tIHRoZQogICBwb3B1bGF0aW9uIHdpdGhvdXQgcmVwbGFjaW5nIGNob3NlbiBlbGVtZW50cy4gICprKiBjYW4gYmUgYW55IHZhbHVlIHVwIHRvCkBAIC0xNDUxLDcgKzE0NTEsNyBAQAogICBlbmNyeXB0aW9uIGlzIG5vdCBiZWxpZXZlZCB0byBiZSBzZWN1cmUuICBJZiB5b3UgbmVlZCBlbmNyeXB0aW9uLCB1c2Ugb25lIG9mIHRoZQogICBzZXZlcmFsIEFFUyBQeXRob24gbW9kdWxlcyB0aGF0IGFyZSBhdmFpbGFibGUgc2VwYXJhdGVseS4KIAotKiBUaGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUgZ2FpbmVkIGEgOmZ1bmM6YG1vdmUoc3JjLCBkZXN0KWAgZnVuY3Rpb24gdGhhdAorKiBUaGUgOm1vZDpgc2h1dGlsYCBtb2R1bGUgZ2FpbmVkIGEgYGBtb3ZlKHNyYywgZGVzdClgYCBmdW5jdGlvbiB0aGF0CiAgIHJlY3Vyc2l2ZWx5IG1vdmVzIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYSBuZXcgbG9jYXRpb24uCiAKICogU3VwcG9ydCBmb3IgbW9yZSBhZHZhbmNlZCBQT1NJWCBzaWduYWwgaGFuZGxpbmcgd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmBzaWduYWxgCkBAIC0xNDU5LDcgKzE0NTksNyBAQAogICBwbGF0Zm9ybXMuCiAKICogVGhlIDptb2Q6YHNvY2tldGAgbW9kdWxlIG5vdyBzdXBwb3J0cyB0aW1lb3V0cy4gIFlvdSBjYW4gY2FsbCB0aGUKLSAgOm1ldGg6YHNldHRpbWVvdXQodClgIG1ldGhvZCBvbiBhIHNvY2tldCBvYmplY3QgdG8gc2V0IGEgdGltZW91dCBvZiAqdCogc2Vjb25kcy4KKyAgYGBzZXR0aW1lb3V0KHQpYGAgbWV0aG9kIG9uIGEgc29ja2V0IG9iamVjdCB0byBzZXQgYSB0aW1lb3V0IG9mICp0KiBzZWNvbmRzLgogICBTdWJzZXF1ZW50IHNvY2tldCBvcGVyYXRpb25zIHRoYXQgdGFrZSBsb25nZXIgdGhhbiAqdCogc2Vjb25kcyB0byBjb21wbGV0ZSB3aWxsCiAgIGFib3J0IGFuZCByYWlzZSBhIDpleGM6YHNvY2tldC50aW1lb3V0YCBleGNlcHRpb24uCiAKQEAgLTE0ODAsOSArMTQ4MCw5IEBACiAgIDpwcm9ncmFtOmB0YXJgXCAtZm9ybWF0IGFyY2hpdmUgZmlsZXMuIChDb250cmlidXRlZCBieSBMYXJzIEd1c3TDpGJlbC4pCiAKICogVGhlIG5ldyA6bW9kOmB0ZXh0d3JhcGAgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3Igd3JhcHBpbmcgc3RyaW5ncwotICBjb250YWluaW5nIHBhcmFncmFwaHMgb2YgdGV4dC4gIFRoZSA6ZnVuYzpgd3JhcCh0ZXh0LCB3aWR0aClgIGZ1bmN0aW9uIHRha2VzIGEKKyAgY29udGFpbmluZyBwYXJhZ3JhcGhzIG9mIHRleHQuICBUaGUgYGB3cmFwKHRleHQsIHdpZHRoKWBgIGZ1bmN0aW9uIHRha2VzIGEKICAgc3RyaW5nIGFuZCByZXR1cm5zIGEgbGlzdCBjb250YWluaW5nIHRoZSB0ZXh0IHNwbGl0IGludG8gbGluZXMgb2Ygbm8gbW9yZSB0aGFuCi0gIHRoZSBjaG9zZW4gd2lkdGguICBUaGUgOmZ1bmM6YGZpbGwodGV4dCwgd2lkdGgpYCBmdW5jdGlvbiByZXR1cm5zIGEgc2luZ2xlCisgIHRoZSBjaG9zZW4gd2lkdGguICBUaGUgYGBmaWxsKHRleHQsIHdpZHRoKWBgIGZ1bmN0aW9uIHJldHVybnMgYSBzaW5nbGUKICAgc3RyaW5nLCByZWZvcm1hdHRlZCB0byBmaXQgaW50byBsaW5lcyBubyBsb25nZXIgdGhhbiB0aGUgY2hvc2VuIHdpZHRoLiAoQXMgeW91CiAgIGNhbiBndWVzcywgOmZ1bmM6YGZpbGxgIGlzIGJ1aWx0IG9uIHRvcCBvZiA6ZnVuYzpgd3JhcGAuICBGb3IgZXhhbXBsZTo6CiAKQEAgLTE5MDMsNyArMTkwMyw3IEBACiAgIHNob3J0IGludGAsICBgYElgYCBmb3IgOmM6dHlwZTpgdW5zaWduZWQgaW50YCwgIGFuZCBgYEtgYCBmb3IgOmM6dHlwZTpgdW5zaWduZWQKICAgbG9uZyBsb25nYC4KIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlPYmplY3RfRGVsSXRlbVN0cmluZyhtYXBwaW5nLCBjaGFyIFwqa2V5KWAgd2FzIGFkZGVkCisqIEEgbmV3IGZ1bmN0aW9uLCBgYFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcobWFwcGluZywgY2hhciAqa2V5KWBgIHdhcyBhZGRlZAogICBhcyBzaG9ydGhhbmQgZm9yIGBgUHlPYmplY3RfRGVsSXRlbShtYXBwaW5nLCBQeVN0cmluZ19OZXcoa2V5KSlgYC4KIAogKiBGaWxlIG9iamVjdHMgbm93IG1hbmFnZSB0aGVpciBpbnRlcm5hbCBzdHJpbmcgYnVmZmVyIGRpZmZlcmVudGx5LCBpbmNyZWFzaW5nCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi40LnJzdCBiL0RvYy93aGF0c25ldy8yLjQucnN0CmluZGV4IDlkMzM5YTUuLjVhMjhmODkgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjQucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjQucnN0CkBAIC0zNyw3ICszNyw3IEBACiAKIFB5dGhvbiAyLjMgaW50cm9kdWNlZCB0aGUgOm1vZDpgc2V0c2AgbW9kdWxlLiAgQyBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V0IGRhdGEKIHR5cGVzIGhhdmUgbm93IGJlZW4gYWRkZWQgdG8gdGhlIFB5dGhvbiBjb3JlIGFzIHR3byBuZXcgYnVpbHQtaW4gdHlwZXMsCi06ZnVuYzpgc2V0KGl0ZXJhYmxlKWAgYW5kIDpmdW5jOmBmcm96ZW5zZXQoaXRlcmFibGUpYC4gIFRoZXkgcHJvdmlkZSBoaWdoIHNwZWVkCitgYHNldChpdGVyYWJsZSlgYCBhbmQgYGBmcm96ZW5zZXQoaXRlcmFibGUpYGAuICBUaGV5IHByb3ZpZGUgaGlnaCBzcGVlZAogb3BlcmF0aW9ucyBmb3IgbWVtYmVyc2hpcCB0ZXN0aW5nLCBmb3IgZWxpbWluYXRpbmcgZHVwbGljYXRlcyBmcm9tIHNlcXVlbmNlcywKIGFuZCBmb3IgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgbGlrZSB1bmlvbnMsIGludGVyc2VjdGlvbnMsIGRpZmZlcmVuY2VzLCBhbmQKIHN5bW1ldHJpYyBkaWZmZXJlbmNlcy4gOjoKQEAgLTM0Niw3ICszNDYsNyBAQAogUEVQIDMyMjogUmV2ZXJzZSBJdGVyYXRpb24KID09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCA6ZnVuYzpgcmV2ZXJzZWQoc2VxKWAsIHRha2VzIGEgc2VxdWVuY2UgYW5kIHJldHVybnMgYW4KK0EgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uLCBgYHJldmVyc2VkKHNlcSlgYCwgdGFrZXMgYSBzZXF1ZW5jZSBhbmQgcmV0dXJucyBhbgogaXRlcmF0b3IgdGhhdCBsb29wcyBvdmVyIHRoZSBlbGVtZW50cyBvZiB0aGUgc2VxdWVuY2UgIGluIHJldmVyc2Ugb3JkZXIuICAgOjoKIAogICAgPj4+IGZvciBpIGluIHJldmVyc2VkKHhyYW5nZSgxLDQpKToKQEAgLTM4NCw3ICszODQsNyBAQAogCiBUaGUgc3RhbmRhcmQgbGlicmFyeSBwcm92aWRlcyBhIG51bWJlciBvZiB3YXlzIHRvIGV4ZWN1dGUgYSBzdWJwcm9jZXNzLCBvZmZlcmluZwogZGlmZmVyZW50IGZlYXR1cmVzIGFuZCBkaWZmZXJlbnQgbGV2ZWxzIG9mIGNvbXBsZXhpdHkuCi06ZnVuYzpgb3Muc3lzdGVtKGNvbW1hbmQpYCBpcyBlYXN5IHRvIHVzZSwgYnV0IHNsb3cgKGl0IHJ1bnMgYSBzaGVsbCBwcm9jZXNzCitgYG9zLnN5c3RlbShjb21tYW5kKWBgIGlzIGVhc3kgdG8gdXNlLCBidXQgc2xvdyAoaXQgcnVucyBhIHNoZWxsIHByb2Nlc3MKIHdoaWNoIGV4ZWN1dGVzIHRoZSBjb21tYW5kKSBhbmQgZGFuZ2Vyb3VzICh5b3UgaGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IGVzY2FwaW5nCiB0aGUgc2hlbGwncyBtZXRhY2hhcmFjdGVycykuICBUaGUgOm1vZDpgcG9wZW4yYCBtb2R1bGUgb2ZmZXJzIGNsYXNzZXMgdGhhdCBjYW4KIGNhcHR1cmUgc3RhbmRhcmQgb3V0cHV0IGFuZCBzdGFuZGFyZCBlcnJvciBmcm9tIHRoZSBzdWJwcm9jZXNzLCBidXQgdGhlIG5hbWluZwpAQCAtNDMxLDggKzQzMSw4IEBACiAKIE9uY2UgeW91J3ZlIGNyZWF0ZWQgdGhlIDpjbGFzczpgUG9wZW5gIGluc3RhbmNlLCAgeW91IGNhbiBjYWxsIGl0cyA6bWV0aDpgd2FpdGAKIG1ldGhvZCB0byBwYXVzZSB1bnRpbCB0aGUgc3VicHJvY2VzcyBoYXMgZXhpdGVkLCA6bWV0aDpgcG9sbGAgdG8gY2hlY2sgaWYgaXQncwotZXhpdGVkIHdpdGhvdXQgcGF1c2luZywgIG9yIDptZXRoOmBjb21tdW5pY2F0ZShkYXRhKWAgdG8gc2VuZCB0aGUgc3RyaW5nICpkYXRhKgotdG8gdGhlIHN1YnByb2Nlc3MncyBzdGFuZGFyZCBpbnB1dC4gICA6bWV0aDpgY29tbXVuaWNhdGUoZGF0YSlgICB0aGVuIHJlYWRzIGFueQorZXhpdGVkIHdpdGhvdXQgcGF1c2luZywgIG9yIGBgY29tbXVuaWNhdGUoZGF0YSlgYCB0byBzZW5kIHRoZSBzdHJpbmcgKmRhdGEqCit0byB0aGUgc3VicHJvY2VzcydzIHN0YW5kYXJkIGlucHV0LiAgIGBgY29tbXVuaWNhdGUoZGF0YSlgYCAgdGhlbiByZWFkcyBhbnkKIGRhdGEgdGhhdCB0aGUgc3VicHJvY2VzcyBoYXMgc2VudCB0byBpdHMgc3RhbmRhcmQgb3V0cHV0ICBvciBzdGFuZGFyZCBlcnJvciwKIHJldHVybmluZyBhIHR1cGxlIGBgKHN0ZG91dF9kYXRhLCBzdGRlcnJfZGF0YSlgYC4KIApAQCAtNzQ5LDEwICs3NDksMTAgQEAKIFRoZSBzb2x1dGlvbiBkZXNjcmliZWQgaW4gdGhlIFBFUCBpcyB0byBhZGQgdGhyZWUgbmV3IGZ1bmN0aW9ucyB0byB0aGUgUHl0aG9uCiBBUEkgdGhhdCBwZXJmb3JtIEFTQ0lJLW9ubHkgY29udmVyc2lvbnMsIGlnbm9yaW5nIHRoZSBsb2NhbGUgc2V0dGluZzoKIAotKiA6YzpmdW5jOmBQeU9TX2FzY2lpX3N0cnRvZChzdHIsIHB0cilgICBhbmQgOmM6ZnVuYzpgUHlPU19hc2NpaV9hdG9mKHN0ciwgcHRyKWAKKyogYGBQeU9TX2FzY2lpX3N0cnRvZChzdHIsIHB0cilgYCAgYW5kIGBgUHlPU19hc2NpaV9hdG9mKHN0ciwgcHRyKWBgCiAgIGJvdGggY29udmVydCBhIHN0cmluZyB0byBhIEMgOmM6dHlwZTpgZG91YmxlYC4KIAotKiA6YzpmdW5jOmBQeU9TX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCBidWZfbGVuLCBmb3JtYXQsIGQpYCBjb252ZXJ0cyBhCisqIGBgUHlPU19hc2NpaV9mb3JtYXRkKGJ1ZmZlciwgYnVmX2xlbiwgZm9ybWF0LCBkKWBgIGNvbnZlcnRzIGEKICAgOmM6dHlwZTpgZG91YmxlYCB0byBhbiBBU0NJSSBzdHJpbmcuCiAKIFRoZSBjb2RlIGZvciB0aGVzZSBmdW5jdGlvbnMgY2FtZSBmcm9tIHRoZSBHTGliIGxpYnJhcnkKQEAgLTc3OCw3ICs3NzgsNyBAQAogKiBEZWNvcmF0b3JzIGZvciBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2VyZSBhZGRlZCAoOnBlcDpgMzE4YCkuCiAKICogQnVpbHQtaW4gOmZ1bmM6YHNldGAgYW5kIDpmdW5jOmBmcm96ZW5zZXRgIHR5cGVzIHdlcmUgIGFkZGVkICg6cGVwOmAyMThgKS4KLSAgT3RoZXIgbmV3IGJ1aWx0LWlucyBpbmNsdWRlIHRoZSA6ZnVuYzpgcmV2ZXJzZWQoc2VxKWAgZnVuY3Rpb24gKDpwZXA6YDMyMmApLgorICBPdGhlciBuZXcgYnVpbHQtaW5zIGluY2x1ZGUgdGhlIGBgcmV2ZXJzZWQoc2VxKWBgIGZ1bmN0aW9uICg6cGVwOmAzMjJgKS4KIAogKiBHZW5lcmF0b3IgZXhwcmVzc2lvbnMgd2VyZSBhZGRlZCAoOnBlcDpgMjg5YCkuCiAKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCiAgIChBbGwgY2hhbmdlcyB0byA6bWV0aDpgc29ydGAgY29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIFRoZXJlIGlzIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIDpmdW5jOmBzb3J0ZWQoaXRlcmFibGUpYCB0aGF0IHdvcmtzIGxpa2UgdGhlCisqIFRoZXJlIGlzIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIGBgc29ydGVkKGl0ZXJhYmxlKWBgIHRoYXQgd29ya3MgbGlrZSB0aGUKICAgaW4tcGxhY2UgOm1ldGg6YGxpc3Quc29ydGAgbWV0aG9kIGJ1dCBjYW4gYmUgdXNlZCBpbiBleHByZXNzaW9ucy4gIFRoZQogICBkaWZmZXJlbmNlcyBhcmU6CiAKQEAgLTg5OCw4ICs4OTgsOCBAQAogICBGb3IgZXhhbXBsZSwgIHlvdSBjYW4gbm93IHJ1biB0aGUgUHl0aG9uIHByb2ZpbGVyIHdpdGggYGBweXRob24gLW0gcHJvZmlsZWBgLgogICAoQ29udHJpYnV0ZWQgYnkgTmljayBDb2dobGFuLikKIAotKiBUaGUgOmZ1bmM6YGV2YWwoZXhwciwgZ2xvYmFscywgbG9jYWxzKWAgYW5kIDpmdW5jOmBleGVjZmlsZShmaWxlbmFtZSwgZ2xvYmFscywKLSAgbG9jYWxzKWAgZnVuY3Rpb25zIGFuZCB0aGUgYGBleGVjYGAgc3RhdGVtZW50IG5vdyBhY2NlcHQgYW55IG1hcHBpbmcgdHlwZQorKiBUaGUgYGBldmFsKGV4cHIsIGdsb2JhbHMsIGxvY2FscylgYCBhbmQgYGBleGVjZmlsZShmaWxlbmFtZSwgZ2xvYmFscywKKyAgbG9jYWxzKWBgIGZ1bmN0aW9ucyBhbmQgdGhlIGBgZXhlY2BgIHN0YXRlbWVudCBub3cgYWNjZXB0IGFueSBtYXBwaW5nIHR5cGUKICAgZm9yIHRoZSAqbG9jYWxzKiBwYXJhbWV0ZXIuICBQcmV2aW91c2x5IHRoaXMgaGFkIHRvIGJlIGEgcmVndWxhciBQeXRob24KICAgZGljdGlvbmFyeS4gIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKQEAgLTEwOTAsNyArMTA5MCw3IEBACiAgIFl2ZXMgRGlvbm5lKSBhbmQgbmV3IDptZXRoOmBkZWxldGVhY2xgIGFuZCA6bWV0aDpgbXlyaWdodHNgIG1ldGhvZHMgKGNvbnRyaWJ1dGVkCiAgIGJ5IEFybmF1ZCBNYXppbikuCiAKLSogVGhlIDptb2Q6YGl0ZXJ0b29sc2AgbW9kdWxlIGdhaW5lZCBhIDpmdW5jOmBncm91cGJ5KGl0ZXJhYmxlWywgKmZ1bmMqXSlgCisqIFRoZSA6bW9kOmBpdGVydG9vbHNgIG1vZHVsZSBnYWluZWQgYSBgYGdyb3VwYnkoaXRlcmFibGVbLCAqZnVuYypdKWBgCiAgIGZ1bmN0aW9uLiAqaXRlcmFibGUqIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHJldHVybiBhIHN0cmVhbQogICBvZiBlbGVtZW50cywgYW5kIHRoZSBvcHRpb25hbCAqZnVuYyogcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhbgogICBlbGVtZW50IGFuZCByZXR1cm5zIGEga2V5IHZhbHVlOyBpZiBvbWl0dGVkLCB0aGUga2V5IGlzIHNpbXBseSB0aGUgZWxlbWVudApAQCAtMTEzOSw3ICsxMTM5LDcgQEAKIAogICAoQ29udHJpYnV0ZWQgYnkgSHllLVNoaWsgQ2hhbmcuKQogCi0qIDptb2Q6YGl0ZXJ0b29sc2AgYWxzbyBnYWluZWQgYSBmdW5jdGlvbiBuYW1lZCA6ZnVuYzpgdGVlKGl0ZXJhdG9yLCBOKWAgdGhhdAorKiA6bW9kOmBpdGVydG9vbHNgIGFsc28gZ2FpbmVkIGEgZnVuY3Rpb24gbmFtZWQgYGB0ZWUoaXRlcmF0b3IsIE4pYGAgdGhhdAogICByZXR1cm5zICpOKiBpbmRlcGVuZGVudCBpdGVyYXRvcnMgdGhhdCByZXBsaWNhdGUgKml0ZXJhdG9yKi4gIElmICpOKiBpcyBvbWl0dGVkLAogICB0aGUgZGVmYXVsdCBpcyAyLiA6OgogCkBAIC0xMTc3LDcgKzExNzcsNyBAQAogICAgICAgICAgbGV2ZWw9MCwgICMgTG9nIGFsbCBtZXNzYWdlcwogICAgICAgICAgZm9ybWF0PSclKGxldmVsbmFtZSk6JShwcm9jZXNzKTolKHRocmVhZCk6JShtZXNzYWdlKScpCiAKLSAgT3RoZXIgYWRkaXRpb25zIHRvIHRoZSA6bW9kOmBsb2dnaW5nYCBwYWNrYWdlIGluY2x1ZGUgYSA6bWV0aDpgbG9nKGxldmVsLCBtc2cpYAorICBPdGhlciBhZGRpdGlvbnMgdG8gdGhlIDptb2Q6YGxvZ2dpbmdgIHBhY2thZ2UgaW5jbHVkZSBhIGBgbG9nKGxldmVsLCBtc2cpYGAKICAgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB3ZWxsIGFzIGEgOmNsYXNzOmBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJgIGNsYXNzIHRoYXQKICAgcm90YXRlcyBpdHMgbG9nIGZpbGVzIGF0IGEgdGltZWQgaW50ZXJ2YWwuICBUaGUgbW9kdWxlIGFscmVhZHkgaGFkCiAgIDpjbGFzczpgUm90YXRpbmdGaWxlSGFuZGxlcmAsIHdoaWNoIHJvdGF0ZWQgbG9ncyBvbmNlIHRoZSBmaWxlIGV4Y2VlZGVkIGEKQEAgLTExOTYsNyArMTE5Niw3IEBACiAgIGdyb3VwIG9yIGZvciBhIHJhbmdlIG9mIGdyb3Vwcy4gKENvbnRyaWJ1dGVkIGJ5IErDvHJnZW4gQS4gRXJoYXJkLikKIAogKiBUd28gbmV3IGZ1bmN0aW9ucyB3ZXJlIGFkZGVkIHRvIHRoZSA6bW9kOmBvcGVyYXRvcmAgbW9kdWxlLAotICA6ZnVuYzpgYXR0cmdldHRlcihhdHRyKWAgYW5kIDpmdW5jOmBpdGVtZ2V0dGVyKGluZGV4KWAuIEJvdGggZnVuY3Rpb25zIHJldHVybgorICBgYGF0dHJnZXR0ZXIoYXR0cilgYCBhbmQgYGBpdGVtZ2V0dGVyKGluZGV4KWBgLiBCb3RoIGZ1bmN0aW9ucyByZXR1cm4KICAgY2FsbGFibGVzIHRoYXQgdGFrZSBhIHNpbmdsZSBhcmd1bWVudCBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBvcgogICBpdGVtOyB0aGVzZSBjYWxsYWJsZXMgbWFrZSBleGNlbGxlbnQgZGF0YSBleHRyYWN0b3JzIHdoZW4gdXNlZCB3aXRoIDpmdW5jOmBtYXBgCiAgIG9yIDpmdW5jOmBzb3J0ZWRgLiAgRm9yIGV4YW1wbGU6OgpAQCAtMTIyMywxNCArMTIyMywxNCBAQAogICByZXBsYWNlbWVudCBmb3IgOmZ1bmM6YHJmYzgyMi5mb3JtYXRkYXRlYC4gIFlvdSBtYXkgd2FudCB0byB3cml0ZSBuZXcgZS1tYWlsCiAgIHByb2Nlc3NpbmcgY29kZSB3aXRoIHRoaXMgaW4gbWluZC4gIChDaGFuZ2UgaW1wbGVtZW50ZWQgYnkgQW50aG9ueSBCYXh0ZXIuKQogCi0qIEEgbmV3IDpmdW5jOmB1cmFuZG9tKG4pYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YG9zYCBtb2R1bGUsIHJldHVybmluZworKiBBIG5ldyBgYHVyYW5kb20obilgYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YG9zYCBtb2R1bGUsIHJldHVybmluZwogICBhIHN0cmluZyBjb250YWluaW5nICpuKiBieXRlcyBvZiByYW5kb20gZGF0YS4gIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYWNjZXNzIHRvCiAgIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZXMgb2YgcmFuZG9tbmVzcyBzdWNoIGFzIDpmaWxlOmAvZGV2L3VyYW5kb21gIG9uIExpbnV4IG9yCiAgIHRoZSBXaW5kb3dzIENyeXB0b0FQSS4gIChDb250cmlidXRlZCBieSBUcmV2b3IgUGVycmluLikKIAotKiBBbm90aGVyIG5ldyBmdW5jdGlvbjogOmZ1bmM6YG9zLnBhdGgubGV4aXN0cyhwYXRoKWAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZQorKiBBbm90aGVyIG5ldyBmdW5jdGlvbjogYGBvcy5wYXRoLmxleGlzdHMocGF0aClgYCAgcmV0dXJucyB0cnVlIGlmIHRoZSBmaWxlCiAgIHNwZWNpZmllZCBieSAqcGF0aCogZXhpc3RzLCB3aGV0aGVyIG9yIG5vdCBpdCdzIGEgc3ltYm9saWMgbGluay4gIFRoaXMgZGlmZmVycwotICBmcm9tIHRoZSBleGlzdGluZyA6ZnVuYzpgb3MucGF0aC5leGlzdHMocGF0aClgIGZ1bmN0aW9uLCB3aGljaCByZXR1cm5zIGZhbHNlIGlmCisgIGZyb20gdGhlIGV4aXN0aW5nIGBgb3MucGF0aC5leGlzdHMocGF0aClgYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBmYWxzZSBpZgogICAqcGF0aCogaXMgYSBzeW1saW5rIHRoYXQgcG9pbnRzIHRvIGEgZGVzdGluYXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LgogICAoQ29udHJpYnV0ZWQgYnkgQmVuaSBDaGVybmlhdnNreS4pCiAKQEAgLTEyNDMsNyArMTI0Myw3IEBACiAqIFRoZSA6bW9kOmBwcm9maWxlYCBtb2R1bGUgY2FuIG5vdyBwcm9maWxlIEMgZXh0ZW5zaW9uIGZ1bmN0aW9ucy4gKENvbnRyaWJ1dGVkCiAgIGJ5IE5pY2sgQmFzdGluLikKIAotKiBUaGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgaGFzIGEgbmV3IG1ldGhvZCBjYWxsZWQgOm1ldGg6YGdldHJhbmRiaXRzKE4pYCB0aGF0CisqIFRoZSA6bW9kOmByYW5kb21gIG1vZHVsZSBoYXMgYSBuZXcgbWV0aG9kIGNhbGxlZCBgYGdldHJhbmRiaXRzKE4pYGAgdGhhdAogICByZXR1cm5zIGEgbG9uZyBpbnRlZ2VyICpOKiBiaXRzIGluIGxlbmd0aC4gIFRoZSBleGlzdGluZyA6bWV0aDpgcmFuZHJhbmdlYAogICBtZXRob2Qgbm93IHVzZXMgOm1ldGg6YGdldHJhbmRiaXRzYCB3aGVyZSBhcHByb3ByaWF0ZSwgbWFraW5nIGdlbmVyYXRpb24gb2YKICAgYXJiaXRyYXJpbHkgbGFyZ2UgcmFuZG9tIG51bWJlcnMgbW9yZSBlZmZpY2llbnQuICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZApAQCAtMTI3Miw3ICsxMjcyLDcgQEAKICAgdGhpcywgYnV0IDIuNCB3aWxsIHJhaXNlIGEgOmV4YzpgUnVudGltZUVycm9yYCBleGNlcHRpb24uCiAKICogVHdvIG5ldyBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgOm1vZDpgc29ja2V0YCBtb2R1bGUuIDpmdW5jOmBzb2NrZXRwYWlyYAotICByZXR1cm5zIGEgcGFpciBvZiBjb25uZWN0ZWQgc29ja2V0cyBhbmQgOmZ1bmM6YGdldHNlcnZieXBvcnQocG9ydClgIGxvb2tzIHVwIHRoZQorICByZXR1cm5zIGEgcGFpciBvZiBjb25uZWN0ZWQgc29ja2V0cyBhbmQgYGBnZXRzZXJ2Ynlwb3J0KHBvcnQpYGAgbG9va3MgdXAgdGhlCiAgIHNlcnZpY2UgbmFtZSBmb3IgYSBnaXZlbiBwb3J0IG51bWJlci4gKENvbnRyaWJ1dGVkIGJ5IERhdmUgQ29sZSBhbmQgQmFycnkKICAgV2Fyc2F3LikKIApAQCAtMTQ1NCwxMSArMTQ1NCwxMSBAQAogKiBBbm90aGVyIG5ldyBtYWNybywgOmM6bWFjcm86YFB5X0NMRUFSKG9iailgLCAgZGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YKICAgKm9iaiogYW5kIHNldHMgKm9iaiogdG8gdGhlIG51bGwgcG9pbnRlci4gIChDb250cmlidXRlZCBieSBKaW0gRnVsdG9uLikKIAotKiBBIG5ldyBmdW5jdGlvbiwgOmM6ZnVuYzpgUHlUdXBsZV9QYWNrKE4sIG9iajEsIG9iajIsIC4uLiwgb2JqTilgLCBjb25zdHJ1Y3RzCisqIEEgbmV3IGZ1bmN0aW9uLCBgYFB5VHVwbGVfUGFjayhOLCBvYmoxLCBvYmoyLCAuLi4sIG9iak4pYGAsIGNvbnN0cnVjdHMKICAgdHVwbGVzIGZyb20gYSB2YXJpYWJsZSBsZW5ndGggYXJndW1lbnQgbGlzdCBvZiBQeXRob24gb2JqZWN0cy4gIChDb250cmlidXRlZCBieQogICBSYXltb25kIEhldHRpbmdlci4pCiAKLSogQSBuZXcgZnVuY3Rpb24sIDpjOmZ1bmM6YFB5RGljdF9Db250YWlucyhkLCBrKWAsIGltcGxlbWVudHMgZmFzdCBkaWN0aW9uYXJ5CisqIEEgbmV3IGZ1bmN0aW9uLCBgYFB5RGljdF9Db250YWlucyhkLCBrKWBgLCBpbXBsZW1lbnRzIGZhc3QgZGljdGlvbmFyeQogICBsb29rdXBzIHdpdGhvdXQgbWFza2luZyBleGNlcHRpb25zIHJhaXNlZCBkdXJpbmcgdGhlIGxvb2stdXAgcHJvY2Vzcy4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuNS5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi41LnJzdAppbmRleCBlMDU5Y2Q1Li5iOTFlNjQ3IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi41LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi41LnJzdApAQCAtMTcxLDcgKzE3MSw3IEBACiAgICAgICAgICAgIHBvcHVwX21lbnUuYXBwZW5kKCAoIk9wZW4iLCBvcGVuX2Z1bmMsIDEpICkKIAogQW5vdGhlciBmdW5jdGlvbiBpbiB0aGUgOm1vZDpgZnVuY3Rvb2xzYCBtb2R1bGUgaXMgdGhlCi06ZnVuYzpgdXBkYXRlX3dyYXBwZXIod3JhcHBlciwgd3JhcHBlZClgIGZ1bmN0aW9uIHRoYXQgaGVscHMgeW91IHdyaXRlIHdlbGwtCitgYHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHdyYXBwZWQpYGAgZnVuY3Rpb24gdGhhdCBoZWxwcyB5b3Ugd3JpdGUgd2VsbC0KIGJlaGF2ZWQgZGVjb3JhdG9ycy4gIDpmdW5jOmB1cGRhdGVfd3JhcHBlcmAgY29waWVzIHRoZSBuYW1lLCBtb2R1bGUsIGFuZAogZG9jc3RyaW5nIGF0dHJpYnV0ZSB0byBhIHdyYXBwZXIgZnVuY3Rpb24gc28gdGhhdCB0cmFjZWJhY2tzIGluc2lkZSB0aGUgd3JhcHBlZAogZnVuY3Rpb24gYXJlIGVhc2llciB0byB1bmRlcnN0YW5kLiAgRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3cml0ZTo6CkBAIC00NTQsNyArNDU0LDcgQEAKIGBgdmFsID0geWllbGQgaWBgIGJ1dCBoYXZlIHRvIHVzZSBwYXJlbnRoZXNlcyB3aGVuIHRoZXJlJ3MgYW4gb3BlcmF0aW9uLCBhcyBpbgogYGB2YWwgPSAoeWllbGQgaSkgKyAxMmBgLikKIAotVmFsdWVzIGFyZSBzZW50IGludG8gYSBnZW5lcmF0b3IgYnkgY2FsbGluZyBpdHMgOm1ldGg6YHNlbmQodmFsdWUpYCBtZXRob2QuICBUaGUKK1ZhbHVlcyBhcmUgc2VudCBpbnRvIGEgZ2VuZXJhdG9yIGJ5IGNhbGxpbmcgaXRzIGBgc2VuZCh2YWx1ZSlgYCBtZXRob2QuICBUaGUKIGdlbmVyYXRvcidzIGNvZGUgaXMgdGhlbiByZXN1bWVkIGFuZCB0aGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIHJldHVybnMgdGhlCiBzcGVjaWZpZWQgKnZhbHVlKi4gIElmIHRoZSByZWd1bGFyIDptZXRoOmBuZXh0YCBtZXRob2QgaXMgY2FsbGVkLCB0aGUKIDprZXl3b3JkOmB5aWVsZGAgcmV0dXJucyA6Y29uc3Q6YE5vbmVgLgpAQCAtNDk2LDcgKzQ5Niw3IEBACiAKIEluIGFkZGl0aW9uIHRvIDptZXRoOmBzZW5kYCwgdGhlcmUgYXJlIHR3byBvdGhlciBuZXcgbWV0aG9kcyBvbiBnZW5lcmF0b3JzOgogCi0qIDptZXRoOmB0aHJvdyh0eXBlLCB2YWx1ZT1Ob25lLCB0cmFjZWJhY2s9Tm9uZSlgIGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCisqIGBgdGhyb3codHlwZSwgdmFsdWU9Tm9uZSwgdHJhY2ViYWNrPU5vbmUpYGAgaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KICAgaW5zaWRlIHRoZSBnZW5lcmF0b3I7IHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24KICAgd2hlcmUgdGhlIGdlbmVyYXRvcidzIGV4ZWN1dGlvbiBpcyBwYXVzZWQuCiAKQEAgLTY2MCw3ICs2NjAsNyBAQAogCiAqIFRoZSBjb2RlIGluICpCTE9DSyogaXMgZXhlY3V0ZWQuCiAKLSogSWYgKkJMT0NLKiByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgOm1ldGg6YF9fZXhpdF9fKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spYAorKiBJZiAqQkxPQ0sqIHJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBgYF9fZXhpdF9fKHR5cGUsIHZhbHVlLCB0cmFjZWJhY2spYGAKICAgaXMgY2FsbGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBkZXRhaWxzLCB0aGUgc2FtZSB2YWx1ZXMgcmV0dXJuZWQgYnkKICAgOmZ1bmM6YHN5cy5leGNfaW5mb2AuICBUaGUgbWV0aG9kJ3MgcmV0dXJuIHZhbHVlIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGV4Y2VwdGlvbgogICBpcyByZS1yYWlzZWQ6IGFueSBmYWxzZSB2YWx1ZSByZS1yYWlzZXMgdGhlIGV4Y2VwdGlvbiwgYW5kIGBgVHJ1ZWBgIHdpbGwgcmVzdWx0CkBAIC03NzMsNyArNzczLDcgQEAKICAgIHdpdGggZGJfdHJhbnNhY3Rpb24oZGIpIGFzIGN1cnNvcjoKICAgICAgICAuLi4KIAotVGhlIDptb2Q6YGNvbnRleHRsaWJgIG1vZHVsZSBhbHNvIGhhcyBhIDpmdW5jOmBuZXN0ZWQobWdyMSwgbWdyMiwgLi4uKWAgZnVuY3Rpb24KK1RoZSA6bW9kOmBjb250ZXh0bGliYCBtb2R1bGUgYWxzbyBoYXMgYSBgYG5lc3RlZChtZ3IxLCBtZ3IyLCAuLi4pYGAgZnVuY3Rpb24KIHRoYXQgY29tYmluZXMgYSBudW1iZXIgb2YgY29udGV4dCBtYW5hZ2VycyBzbyB5b3UgZG9uJ3QgbmVlZCB0byB3cml0ZSBuZXN0ZWQKICc6a2V5d29yZDpgd2l0aGAnIHN0YXRlbWVudHMuICBJbiB0aGlzIGV4YW1wbGUsIHRoZSBzaW5nbGUgJzprZXl3b3JkOmB3aXRoYCcKIHN0YXRlbWVudCBib3RoIHN0YXJ0cyBhIGRhdGFiYXNlIHRyYW5zYWN0aW9uIGFuZCBhY3F1aXJlcyBhIHRocmVhZCBsb2NrOjoKQEAgLTc4Miw3ICs3ODIsNyBAQAogICAgd2l0aCBuZXN0ZWQgKGRiX3RyYW5zYWN0aW9uKGRiKSwgbG9jaykgYXMgKGN1cnNvciwgbG9ja2VkKToKICAgICAgICAuLi4KIAotRmluYWxseSwgdGhlIDpmdW5jOmBjbG9zaW5nKG9iamVjdClgIGZ1bmN0aW9uIHJldHVybnMgKm9iamVjdCogc28gdGhhdCBpdCBjYW4gYmUKK0ZpbmFsbHksIHRoZSBgYGNsb3Npbmcob2JqZWN0KWBgIGZ1bmN0aW9uIHJldHVybnMgKm9iamVjdCogc28gdGhhdCBpdCBjYW4gYmUKIGJvdW5kIHRvIGEgdmFyaWFibGUsIGFuZCBjYWxscyBgYG9iamVjdC5jbG9zZWBgIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLiA6OgogCiAgICBpbXBvcnQgdXJsbGliLCBzeXMKQEAgLTk1NSw3ICs5NTUsNyBAQAogCiBBIGNvcnJlc3BvbmRpbmcgOmF0dHI6YG5iX2luZGV4YCBzbG90IHdhcyBhZGRlZCB0byB0aGUgQy1sZXZlbAogOmM6dHlwZTpgUHlOdW1iZXJNZXRob2RzYCBzdHJ1Y3R1cmUgdG8gbGV0IEMgZXh0ZW5zaW9ucyBpbXBsZW1lbnQgdGhpcyBwcm90b2NvbC4KLTpjOmZ1bmM6YFB5TnVtYmVyX0luZGV4KG9iailgIGNhbiBiZSB1c2VkIGluIGV4dGVuc2lvbiBjb2RlIHRvIGNhbGwgdGhlCitgYFB5TnVtYmVyX0luZGV4KG9iailgYCBjYW4gYmUgdXNlZCBpbiBleHRlbnNpb24gY29kZSB0byBjYWxsIHRoZQogOm1ldGg6YF9faW5kZXhfX2AgZnVuY3Rpb24gYW5kIHJldHJpZXZlIGl0cyByZXN1bHQuCiAKIApAQCAtOTc2LDcgKzk3Niw3IEBACiAKICogVGhlIDpjbGFzczpgZGljdGAgdHlwZSBoYXMgYSBuZXcgaG9vayBmb3IgbGV0dGluZyBzdWJjbGFzc2VzIHByb3ZpZGUgYSBkZWZhdWx0CiAgIHZhbHVlIHdoZW4gYSBrZXkgaXNuJ3QgY29udGFpbmVkIGluIHRoZSBkaWN0aW9uYXJ5LiBXaGVuIGEga2V5IGlzbid0IGZvdW5kLCB0aGUKLSAgZGljdGlvbmFyeSdzIDptZXRoOmBfX21pc3NpbmdfXyhrZXkpYCBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuICBUaGlzIGhvb2sgaXMgdXNlZAorICBkaWN0aW9uYXJ5J3MgYGBfX21pc3NpbmdfXyhrZXkpYGAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLiAgVGhpcyBob29rIGlzIHVzZWQKICAgdG8gaW1wbGVtZW50IHRoZSBuZXcgOmNsYXNzOmBkZWZhdWx0ZGljdGAgY2xhc3MgaW4gdGhlIDptb2Q6YGNvbGxlY3Rpb25zYAogICBtb2R1bGUuICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyBhIGRpY3Rpb25hcnkgIHRoYXQgcmV0dXJucyB6ZXJvIGZvciBhbnkKICAgbWlzc2luZyBrZXk6OgpAQCAtOTg5LDE2ICs5ODksMTYgQEAKICAgICAgcHJpbnQgZFsxXSwgZFsyXSAgICMgUHJpbnRzIDEsIDIKICAgICAgcHJpbnQgZFszXSwgZFs0XSAgICMgUHJpbnRzIDAsIDAKIAotKiBCb3RoIDgtYml0IGFuZCBVbmljb2RlIHN0cmluZ3MgaGF2ZSBuZXcgOm1ldGg6YHBhcnRpdGlvbihzZXApYCAgYW5kCi0gIDptZXRoOmBycGFydGl0aW9uKHNlcClgIG1ldGhvZHMgdGhhdCBzaW1wbGlmeSBhIGNvbW1vbiB1c2UgY2FzZS4KKyogQm90aCA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGhhdmUgbmV3IGBgcGFydGl0aW9uKHNlcClgYCAgYW5kCisgIGBgcnBhcnRpdGlvbihzZXApYGAgbWV0aG9kcyB0aGF0IHNpbXBsaWZ5IGEgY29tbW9uIHVzZSBjYXNlLgogCi0gIFRoZSA6bWV0aDpgZmluZChTKWAgbWV0aG9kIGlzIG9mdGVuIHVzZWQgdG8gZ2V0IGFuIGluZGV4IHdoaWNoIGlzIHRoZW4gdXNlZCB0bworICBUaGUgYGBmaW5kKFMpYGAgbWV0aG9kIGlzIG9mdGVuIHVzZWQgdG8gZ2V0IGFuIGluZGV4IHdoaWNoIGlzIHRoZW4gdXNlZCB0bwogICBzbGljZSB0aGUgc3RyaW5nIGFuZCBvYnRhaW4gdGhlIHBpZWNlcyB0aGF0IGFyZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzZXBhcmF0b3IuCi0gIDptZXRoOmBwYXJ0aXRpb24oc2VwKWAgY29uZGVuc2VzIHRoaXMgcGF0dGVybiBpbnRvIGEgc2luZ2xlIG1ldGhvZCBjYWxsIHRoYXQKKyAgYGBwYXJ0aXRpb24oc2VwKWBgIGNvbmRlbnNlcyB0aGlzIHBhdHRlcm4gaW50byBhIHNpbmdsZSBtZXRob2QgY2FsbCB0aGF0CiAgIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN1YnN0cmluZyBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvcgogICBpdHNlbGYsIGFuZCB0aGUgc3Vic3RyaW5nIGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzbid0IGZvdW5kLAogICB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgdHVwbGUgaXMgdGhlIGVudGlyZSBzdHJpbmcgYW5kIHRoZSBvdGhlciB0d28gZWxlbWVudHMKLSAgYXJlIGVtcHR5LiAgOm1ldGg6YHJwYXJ0aXRpb24oc2VwKWAgYWxzbyByZXR1cm5zIGEgMy10dXBsZSBidXQgc3RhcnRzIHNlYXJjaGluZworICBhcmUgZW1wdHkuICBgYHJwYXJ0aXRpb24oc2VwKWBgIGFsc28gcmV0dXJucyBhIDMtdHVwbGUgYnV0IHN0YXJ0cyBzZWFyY2hpbmcKICAgZnJvbSB0aGUgZW5kIG9mIHRoZSBzdHJpbmc7IHRoZSBgYHJgYCBzdGFuZHMgZm9yICdyZXZlcnNlJy4KIAogICBTb21lIGV4YW1wbGVzOjoKQEAgLTExNTcsNyArMTE1Nyw3IEBACiAKICAgLi4gUGF0Y2ggMTMxMzkzOSwgMTM1OTYxOAogCi0qIFRoZSA6ZnVuYzpgbG9uZyhzdHIsIGJhc2UpYCBmdW5jdGlvbiBpcyBub3cgZmFzdGVyIG9uIGxvbmcgZGlnaXQgc3RyaW5ncworKiBUaGUgYGBsb25nKHN0ciwgYmFzZSlgYCBmdW5jdGlvbiBpcyBub3cgZmFzdGVyIG9uIGxvbmcgZGlnaXQgc3RyaW5ncwogICBiZWNhdXNlIGZld2VyIGludGVybWVkaWF0ZSByZXN1bHRzIGFyZSBjYWxjdWxhdGVkLiAgVGhlIHBlYWsgaXMgZm9yIHN0cmluZ3Mgb2YKICAgYXJvdW5kIDgwMC0tMTAwMCBkaWdpdHMgd2hlcmUgIHRoZSBmdW5jdGlvbiBpcyA2IHRpbWVzIGZhc3Rlci4gKENvbnRyaWJ1dGVkIGJ5CiAgIEFsYW4gTWNJbnR5cmUgYW5kIGNvbW1pdHRlZCBhdCB0aGUgTmVlZEZvclNwZWVkIHNwcmludC4pCkBAIC0xMjY4LDcgKzEyNjgsNyBAQAogICAoQ29udHJpYnV0ZWQgYnkgR3VpZG8gdmFuIFJvc3N1bS4pCiAKICogVGhlIDpjbGFzczpgZGVxdWVgIGRvdWJsZS1lbmRlZCBxdWV1ZSB0eXBlIHN1cHBsaWVkIGJ5IHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AKLSAgbW9kdWxlIG5vdyBoYXMgYSA6bWV0aDpgcmVtb3ZlKHZhbHVlKWAgbWV0aG9kIHRoYXQgcmVtb3ZlcyB0aGUgZmlyc3Qgb2NjdXJyZW5jZQorICBtb2R1bGUgbm93IGhhcyBhIGBgcmVtb3ZlKHZhbHVlKWBgIG1ldGhvZCB0aGF0IHJlbW92ZXMgdGhlIGZpcnN0IG9jY3VycmVuY2UKICAgb2YgKnZhbHVlKiBpbiB0aGUgcXVldWUsIHJhaXNpbmcgOmV4YzpgVmFsdWVFcnJvcmAgaWYgdGhlIHZhbHVlIGlzbid0IGZvdW5kLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCkBAIC0xMjkxLDcgKzEyOTEsNyBAQAogKiBUaGUgOm1vZDpgY3N2YCBtb2R1bGUsIHdoaWNoIHBhcnNlcyBmaWxlcyBpbiBjb21tYS1zZXBhcmF0ZWQgdmFsdWUgZm9ybWF0LAogICByZWNlaXZlZCBzZXZlcmFsIGVuaGFuY2VtZW50cyBhbmQgYSBudW1iZXIgb2YgYnVnZml4ZXMuICBZb3UgY2FuIG5vdyBzZXQgdGhlCiAgIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIGZpZWxkIGJ5IGNhbGxpbmcgdGhlCi0gIDptZXRoOmBjc3YuZmllbGRfc2l6ZV9saW1pdChuZXdfbGltaXQpYCBmdW5jdGlvbjsgb21pdHRpbmcgdGhlICpuZXdfbGltaXQqCisgIGBgY3N2LmZpZWxkX3NpemVfbGltaXQobmV3X2xpbWl0KWBgIGZ1bmN0aW9uOyBvbWl0dGluZyB0aGUgKm5ld19saW1pdCoKICAgYXJndW1lbnQgd2lsbCByZXR1cm4gdGhlIGN1cnJlbnRseS1zZXQgbGltaXQuICBUaGUgOmNsYXNzOmByZWFkZXJgIGNsYXNzIG5vdyBoYXMKICAgYSA6YXR0cjpgbGluZV9udW1gIGF0dHJpYnV0ZSB0aGF0IGNvdW50cyB0aGUgbnVtYmVyIG9mIHBoeXNpY2FsIGxpbmVzIHJlYWQgZnJvbQogICB0aGUgc291cmNlOyByZWNvcmRzIGNhbiBzcGFuIG11bHRpcGxlIHBoeXNpY2FsIGxpbmVzLCBzbyA6YXR0cjpgbGluZV9udW1gIGlzIG5vdApAQCAtMTMwOCw3ICsxMzA4LDcgQEAKICAgKENvbnRyaWJ1dGVkIGJ5IFNraXAgTW9udGFuYXJvIGFuZCBBbmRyZXcgTWNOYW1hcmEuKQogCiAqIFRoZSA6Y2xhc3M6YGRhdGV0aW1lYCBjbGFzcyBpbiB0aGUgOm1vZDpgZGF0ZXRpbWVgICBtb2R1bGUgbm93IGhhcyBhCi0gIDptZXRoOmBzdHJwdGltZShzdHJpbmcsIGZvcm1hdClgICBtZXRob2QgZm9yIHBhcnNpbmcgZGF0ZSBzdHJpbmdzLCBjb250cmlidXRlZAorICBgYHN0cnB0aW1lKHN0cmluZywgZm9ybWF0KWBgICBtZXRob2QgZm9yIHBhcnNpbmcgZGF0ZSBzdHJpbmdzLCBjb250cmlidXRlZAogICBieSBKb3NoIFNwb2VycmkuIEl0IHVzZXMgdGhlIHNhbWUgZm9ybWF0IGNoYXJhY3RlcnMgYXMgOmZ1bmM6YHRpbWUuc3RycHRpbWVgIGFuZAogICA6ZnVuYzpgdGltZS5zdHJmdGltZWA6OgogCkBAIC0xNDAzLDcgKzE0MDMsNyBAQAogKiBUaGUgOm1vZDpgbWFpbGJveGAgbW9kdWxlIHVuZGVyd2VudCBhIG1hc3NpdmUgcmV3cml0ZSB0byBhZGQgdGhlIGNhcGFiaWxpdHkgdG8KICAgbW9kaWZ5IG1haWxib3hlcyBpbiBhZGRpdGlvbiB0byByZWFkaW5nIHRoZW0uICBBIG5ldyBzZXQgb2YgY2xhc3NlcyB0aGF0IGluY2x1ZGUKICAgOmNsYXNzOmBtYm94YCwgOmNsYXNzOmBNSGAsIGFuZCA6Y2xhc3M6YE1haWxkaXJgIGFyZSB1c2VkIHRvIHJlYWQgbWFpbGJveGVzLCBhbmQKLSAgaGF2ZSBhbiA6bWV0aDpgYWRkKG1lc3NhZ2UpYCBtZXRob2QgdG8gYWRkIG1lc3NhZ2VzLCA6bWV0aDpgcmVtb3ZlKGtleSlgIHRvCisgIGhhdmUgYW4gYGBhZGQobWVzc2FnZSlgYCBtZXRob2QgdG8gYWRkIG1lc3NhZ2VzLCBgYHJlbW92ZShrZXkpYGAgdG8KICAgcmVtb3ZlIG1lc3NhZ2VzLCBhbmQgOm1ldGg6YGxvY2tgLzptZXRoOmB1bmxvY2tgIHRvIGxvY2svdW5sb2NrIHRoZSBtYWlsYm94LgogICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29udmVydHMgYSBtYWlsZGlyLWZvcm1hdCBtYWlsYm94IGludG8gYW4gbWJveC1mb3JtYXQKICAgb25lOjoKQEAgLTE0NTgsNyArMTQ1OCw3IEBACiAgIDpmdW5jOmB3YWl0NGAgcmV0dXJuIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uICA6ZnVuYzpgd2FpdDNgIGRvZXNuJ3QgdGFrZSBhCiAgIHByb2Nlc3MgSUQgYXMgaW5wdXQsIHNvIGl0IHdhaXRzIGZvciBhbnkgY2hpbGQgcHJvY2VzcyB0byBleGl0IGFuZCByZXR1cm5zIGEKICAgMy10dXBsZSBvZiAqcHJvY2Vzcy1pZCosICpleGl0LXN0YXR1cyosICpyZXNvdXJjZS11c2FnZSogYXMgcmV0dXJuZWQgZnJvbSB0aGUKLSAgOmZ1bmM6YHJlc291cmNlLmdldHJ1c2FnZWAgZnVuY3Rpb24uIDpmdW5jOmB3YWl0NChwaWQpYCBkb2VzIHRha2UgYSBwcm9jZXNzIElELgorICA6ZnVuYzpgcmVzb3VyY2UuZ2V0cnVzYWdlYCBmdW5jdGlvbi4gYGB3YWl0NChwaWQpYGAgZG9lcyB0YWtlIGEgcHJvY2VzcyBJRC4KICAgKENvbnRyaWJ1dGVkIGJ5IENoYWQgSi4gU2Nocm9lZGVyLikKIAogICBPbiBGcmVlQlNELCB0aGUgOmZ1bmM6YG9zLnN0YXRgIGZ1bmN0aW9uIG5vdyByZXR1cm5zICB0aW1lcyB3aXRoIG5hbm9zZWNvbmQKQEAgLTE1MzIsOCArMTUzMiw4IEBACiAgIEluIFB5dGhvbiBjb2RlLCBuZXRsaW5rIGFkZHJlc3NlcyBhcmUgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZSBvZiAyIGludGVnZXJzLAogICBgYChwaWQsIGdyb3VwX21hc2spYGAuCiAKLSAgVHdvIG5ldyBtZXRob2RzIG9uIHNvY2tldCBvYmplY3RzLCA6bWV0aDpgcmVjdl9pbnRvKGJ1ZmZlcilgIGFuZAotICA6bWV0aDpgcmVjdmZyb21faW50byhidWZmZXIpYCwgc3RvcmUgdGhlIHJlY2VpdmVkIGRhdGEgaW4gYW4gb2JqZWN0ICB0aGF0CisgIFR3byBuZXcgbWV0aG9kcyBvbiBzb2NrZXQgb2JqZWN0cywgYGByZWN2X2ludG8oYnVmZmVyKWBgIGFuZAorICBgYHJlY3Zmcm9tX2ludG8oYnVmZmVyKWBgLCBzdG9yZSB0aGUgcmVjZWl2ZWQgZGF0YSBpbiBhbiBvYmplY3QgIHRoYXQKICAgc3VwcG9ydHMgdGhlIGJ1ZmZlciBwcm90b2NvbCBpbnN0ZWFkIG9mIHJldHVybmluZyB0aGUgZGF0YSBhcyBhIHN0cmluZy4gIFRoaXMKICAgbWVhbnMgeW91IGNhbiBwdXQgdGhlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhIG1lbW9yeS1tYXBwZWQgZmlsZS4KIApAQCAtMTU1Nyw4ICsxNTU3LDggQEAKICAgICAgeWVhciwgbnVtYmVyLCBuYW1lID0gcy51bnBhY2soZGF0YSkKIAogICBZb3UgY2FuIGFsc28gcGFjayBhbmQgdW5wYWNrIGRhdGEgdG8gYW5kIGZyb20gYnVmZmVyIG9iamVjdHMgZGlyZWN0bHkgdXNpbmcgdGhlCi0gIDptZXRoOmBwYWNrX2ludG8oYnVmZmVyLCBvZmZzZXQsIHYxLCB2MiwgLi4uKWAgYW5kIDptZXRoOmB1bnBhY2tfZnJvbShidWZmZXIsCi0gIG9mZnNldClgIG1ldGhvZHMuICBUaGlzIGxldHMgeW91IHN0b3JlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhIG1lbW9yeS0KKyAgYGBwYWNrX2ludG8oYnVmZmVyLCBvZmZzZXQsIHYxLCB2MiwgLi4uKWBgIGFuZCBgYHVucGFja19mcm9tKGJ1ZmZlciwKKyAgb2Zmc2V0KWBgIG1ldGhvZHMuICBUaGlzIGxldHMgeW91IHN0b3JlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhIG1lbW9yeS0KICAgbWFwcGVkIGZpbGUuCiAKICAgKDpjbGFzczpgU3RydWN0YCBvYmplY3RzIHdlcmUgaW1wbGVtZW50ZWQgYnkgQm9iIElwcG9saXRvIGF0IHRoZSBOZWVkRm9yU3BlZWQKQEAgLTE1OTIsNyArMTU5Miw3IEBACiAgIC4uIHBhdGNoIDkxODEwMQogCiAqIFRoZSA6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZSBub3cgbGV0cyB5b3Ugc2V0IHRoZSBzdGFjayBzaXplIHVzZWQgd2hlbiBuZXcKLSAgdGhyZWFkcyBhcmUgY3JlYXRlZC4gVGhlIDpmdW5jOmBzdGFja19zaXplKFsqc2l6ZSpdKWAgZnVuY3Rpb24gcmV0dXJucyB0aGUKKyAgdGhyZWFkcyBhcmUgY3JlYXRlZC4gVGhlIGBgc3RhY2tfc2l6ZShbKnNpemUqXSlgYCBmdW5jdGlvbiByZXR1cm5zIHRoZQogICBjdXJyZW50bHkgY29uZmlndXJlZCBzdGFjayBzaXplLCBhbmQgc3VwcGx5aW5nIHRoZSBvcHRpb25hbCAqc2l6ZSogcGFyYW1ldGVyCiAgIHNldHMgYSBuZXcgdmFsdWUuICBOb3QgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IGNoYW5naW5nIHRoZSBzdGFjayBzaXplLCBidXQKICAgV2luZG93cywgUE9TSVggdGhyZWFkaW5nLCBhbmQgT1MvMiBhbGwgZG8uIChDb250cmlidXRlZCBieSBBbmRyZXcgTWFjSW50eXJlLikKQEAgLTE5MTEsNyArMTkxMSw3IEBACiAgICBoID0gaGFzaGxpYi5uZXcoJ21kNScpICAgICAgICAgICMgUHJvdmlkZSBhbGdvcml0aG0gYXMgYSBzdHJpbmcKIAogT25jZSBhIGhhc2ggb2JqZWN0IGhhcyBiZWVuIGNyZWF0ZWQsIGl0cyBtZXRob2RzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmU6Ci06bWV0aDpgdXBkYXRlKHN0cmluZylgIGhhc2hlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSAgY3VycmVudCBkaWdlc3QKK2BgdXBkYXRlKHN0cmluZylgYCBoYXNoZXMgdGhlIHNwZWNpZmllZCBzdHJpbmcgaW50byB0aGUgIGN1cnJlbnQgZGlnZXN0CiBzdGF0ZSwgOm1ldGg6YGRpZ2VzdGAgYW5kIDptZXRoOmBoZXhkaWdlc3RgIHJldHVybiB0aGUgZGlnZXN0IHZhbHVlIGFzIGEgYmluYXJ5CiBzdHJpbmcgb3IgYSBzdHJpbmcgb2YgaGV4IGRpZ2l0cywgYW5kIDptZXRoOmBjb3B5YCByZXR1cm5zIGEgbmV3IGhhc2hpbmcgb2JqZWN0CiB3aXRoIHRoZSBzYW1lIGRpZ2VzdCBzdGF0ZS4KQEAgLTIxNjgsMjAgKzIxNjgsMjAgQEAKIAogKiBUd28gbmV3IG1hY3JvcyBjYW4gYmUgdXNlZCB0byBpbmRpY2F0ZSBDIGZ1bmN0aW9ucyB0aGF0IGFyZSBsb2NhbCB0byB0aGUKICAgY3VycmVudCBmaWxlIHNvIHRoYXQgYSBmYXN0ZXIgY2FsbGluZyBjb252ZW50aW9uIGNhbiBiZSB1c2VkLgotICA6YzpmdW5jOmBQeV9MT0NBTCh0eXBlKWAgZGVjbGFyZXMgdGhlIGZ1bmN0aW9uIGFzIHJldHVybmluZyBhIHZhbHVlIG9mIHRoZQorICBgYFB5X0xPQ0FMKHR5cGUpYGAgZGVjbGFyZXMgdGhlIGZ1bmN0aW9uIGFzIHJldHVybmluZyBhIHZhbHVlIG9mIHRoZQogICBzcGVjaWZpZWQgKnR5cGUqIGFuZCB1c2VzIGEgZmFzdC1jYWxsaW5nIHF1YWxpZmllci4KLSAgOmM6ZnVuYzpgUHlfTE9DQUxfSU5MSU5FKHR5cGUpYCBkb2VzIHRoZSBzYW1lIHRoaW5nIGFuZCBhbHNvIHJlcXVlc3RzIHRoZQorICBgYFB5X0xPQ0FMX0lOTElORSh0eXBlKWBgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYW5kIGFsc28gcmVxdWVzdHMgdGhlCiAgIGZ1bmN0aW9uIGJlIGlubGluZWQuICBJZiA6YzpmdW5jOmBQWV9MT0NBTF9BR0dSRVNTSVZFYCBpcyBkZWZpbmVkIGJlZm9yZQogICA6ZmlsZTpgcHl0aG9uLmhgIGlzIGluY2x1ZGVkLCBhIHNldCBvZiBtb3JlIGFnZ3Jlc3NpdmUgb3B0aW1pemF0aW9ucyBhcmUgZW5hYmxlZAogICBmb3IgdGhlIG1vZHVsZTsgeW91IHNob3VsZCBiZW5jaG1hcmsgdGhlIHJlc3VsdHMgdG8gZmluZCBvdXQgaWYgdGhlc2UKICAgb3B0aW1pemF0aW9ucyBhY3R1YWxseSBtYWtlIHRoZSBjb2RlIGZhc3Rlci4gIChDb250cmlidXRlZCBieSBGcmVkcmlrIEx1bmRoIGF0CiAgIHRoZSBOZWVkRm9yU3BlZWQgc3ByaW50LikKIAotKiA6YzpmdW5jOmBQeUVycl9OZXdFeGNlcHRpb24obmFtZSwgYmFzZSwgZGljdClgIGNhbiBub3cgYWNjZXB0IGEgdHVwbGUgb2YgYmFzZQorKiBgYFB5RXJyX05ld0V4Y2VwdGlvbihuYW1lLCBiYXNlLCBkaWN0KWBgIGNhbiBub3cgYWNjZXB0IGEgdHVwbGUgb2YgYmFzZQogICBjbGFzc2VzIGFzIGl0cyAqYmFzZSogYXJndW1lbnQuICAoQ29udHJpYnV0ZWQgYnkgR2VvcmcgQnJhbmRsLikKIAogKiBUaGUgOmM6ZnVuYzpgUHlFcnJfV2FybmAgZnVuY3Rpb24gZm9yIGlzc3Vpbmcgd2FybmluZ3MgaXMgbm93IGRlcHJlY2F0ZWQgaW4KLSAgZmF2b3VyIG9mIDpjOmZ1bmM6YFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tsZXZlbClgIHdoaWNoIGxldHMgeW91CisgIGZhdm91ciBvZiBgYFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tsZXZlbClgYCB3aGljaCBsZXRzIHlvdQogICBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIHNlcGFyYXRpbmcgdGhpcyBmdW5jdGlvbiBhbmQgdGhlIGNhbGxlci4gIEEKICAgKnN0YWNrbGV2ZWwqIG9mIDEgaXMgdGhlIGZ1bmN0aW9uIGNhbGxpbmcgOmM6ZnVuYzpgUHlFcnJfV2FybkV4YCwgMiBpcyB0aGUKICAgZnVuY3Rpb24gYWJvdmUgdGhhdCwgYW5kIHNvIGZvcnRoLiAgKEFkZGVkIGJ5IE5lYWwgTm9yd2l0ei4pCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4wLnJzdCBiL0RvYy93aGF0c25ldy8zLjAucnN0CmluZGV4IDlmMWVjOTcuLjc3ODI2NjMgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8zLjAucnN0CisrKyBiL0RvYy93aGF0c25ldy8zLjAucnN0CkBAIC04MTIsNyArODEyLDcgQEAKICogVGhlIDpmdW5jOmByb3VuZGAgZnVuY3Rpb24gcm91bmRpbmcgc3RyYXRlZ3kgYW5kIHJldHVybiB0eXBlIGhhdmUKICAgY2hhbmdlZC4gIEV4YWN0IGhhbGZ3YXkgY2FzZXMgYXJlIG5vdyByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IGV2ZW4KICAgcmVzdWx0IGluc3RlYWQgb2YgYXdheSBmcm9tIHplcm8uICAoRm9yIGV4YW1wbGUsIGBgcm91bmQoMi41KWBgIG5vdwotICByZXR1cm5zIGBgMmBgIHJhdGhlciB0aGFuIGBgM2BgLikgIDpmdW5jOmByb3VuZCh4Wywgbl0pYCBub3cKKyAgcmV0dXJucyBgYDJgYCByYXRoZXIgdGhhbiBgYDNgYC4pICBgYHJvdW5kKHhbLCBuXSlgYCBub3cKICAgZGVsZWdhdGVzIHRvIGBgeC5fX3JvdW5kX18oW25dKWBgIGluc3RlYWQgb2YgYWx3YXlzIHJldHVybmluZyBhCiAgIGZsb2F0LiAgSXQgZ2VuZXJhbGx5IHJldHVybnMgYW4gaW50ZWdlciB3aGVuIGNhbGxlZCB3aXRoIGEgc2luZ2xlCiAgIGFyZ3VtZW50IGFuZCBhIHZhbHVlIG9mIHRoZSBzYW1lIHR5cGUgYXMgYGB4YGAgd2hlbiBjYWxsZWQgd2l0aCB0d28KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjIucnN0IGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKaW5kZXggMDU1M2VjMy4uOTk4MjdmZiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMi5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKQEAgLTI3MCw3ICsyNzAsNyBAQAogICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMxLnR4dCcsICdkZXN0MS50eHQnKQogICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMyLnR4dCcsICdkZXN0Mi50eHQnKQogICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMzLnR4dCcsICdkZXN0My50eHQnKQotICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmM0LnR4dCcsICdkZXN0NC50eHQnKQorICAgICAgZS5zdWJtaXQoc2h1dGlsLmNvcHksICdzcmMzLnR4dCcsICdkZXN0NC50eHQnKQogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjM1NCw3ICsyMzU0LDcgQEAKICAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91OyA6aXNzdWU6YDMwMDFgLikKIAogKiBUaGUgZmFzdC1zZWFyY2ggYWxnb3JpdGhtIGluIHN0cmluZ2xpYiBpcyBub3cgdXNlZCBieSB0aGUgOm1ldGg6YHNwbGl0YCwKLSAgOm1ldGg6YHNwbGl0bGluZXNgIGFuZCA6bWV0aDpgcmVwbGFjZWAgbWV0aG9kcyBvbgorICA6bWV0aDpgcnNwbGl0YCwgOm1ldGg6YHNwbGl0bGluZXNgIGFuZCA6bWV0aDpgcmVwbGFjZWAgbWV0aG9kcyBvbgogICA6Y2xhc3M6YGJ5dGVzYCwgOmNsYXNzOmBieXRlYXJyYXlgIGFuZCA6Y2xhc3M6YHN0cmAgb2JqZWN0cy4gTGlrZXdpc2UsIHRoZQogICBhbGdvcml0aG0gaXMgYWxzbyB1c2VkIGJ5IDptZXRoOmByZmluZGAsIDptZXRoOmByaW5kZXhgLCA6bWV0aDpgcnNwbGl0YCBhbmQKICAgOm1ldGg6YHJwYXJ0aXRpb25gLgpAQCAtMjQ3MSwxNCArMjQ3MSwxNCBAQAogCiBJbiBhZGRpdGlvbiB0byB0aGUgZXhpc3RpbmcgU3VidmVyc2lvbiBjb2RlIHJlcG9zaXRvcnkgYXQgaHR0cDovL3N2bi5weXRob24ub3JnCiB0aGVyZSBpcyBub3cgYSBgTWVyY3VyaWFsIDxodHRwOi8vbWVyY3VyaWFsLnNlbGVuaWMuY29tLz5gXyByZXBvc2l0b3J5IGF0Ci1odHRwOi8vaGcucHl0aG9uLm9yZy9cLgoraHR0cDovL2hnLnB5dGhvbi5vcmcvIC4KIAogQWZ0ZXIgdGhlIDMuMiByZWxlYXNlLCB0aGVyZSBhcmUgcGxhbnMgdG8gc3dpdGNoIHRvIE1lcmN1cmlhbCBhcyB0aGUgcHJpbWFyeQogcmVwb3NpdG9yeS4gIFRoaXMgZGlzdHJpYnV0ZWQgdmVyc2lvbiBjb250cm9sIHN5c3RlbSBzaG91bGQgbWFrZSBpdCBlYXNpZXIgZm9yCiBtZW1iZXJzIG9mIHRoZSBjb21tdW5pdHkgdG8gY3JlYXRlIGFuZCBzaGFyZSBleHRlcm5hbCBjaGFuZ2VzZXRzLiAgU2VlCiA6cGVwOmAzODVgIGZvciBkZXRhaWxzLgogCi1UbyBsZWFybiB0aGUgbmV3IHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIHNlZSB0aGUgYHR1dG9yaWFsIGJ5IEpvZWwKK1RvIGxlYXJuIHRvIHVzZSB0aGUgbmV3IHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIHNlZSB0aGUgYHR1dG9yaWFsIGJ5IEpvZWwKIFNwb2xza3kgPGh0dHA6Ly9oZ2luaXQuY29tPmBfIG9yIHRoZSBgR3VpZGUgdG8gTWVyY3VyaWFsIFdvcmtmbG93cwogPGh0dHA6Ly9tZXJjdXJpYWwuc2VsZW5pYy5jb20vZ3VpZGUvPmBfLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdCBiL0RvYy93aGF0c25ldy8zLjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTI0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApAQCAtMCwwICsxLDI1MTEgQEAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgV2hhdCdzIE5ldyBJbiBQeXRob24gMy4zCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKKzpSZWxlYXNlOiB8cmVsZWFzZXwKKzpEYXRlOiB8dG9kYXl8CisKKy4uIFJ1bGVzIGZvciBtYWludGVuYW5jZToKKworICAgKiBBbnlvbmUgY2FuIGFkZCB0ZXh0IHRvIHRoaXMgZG9jdW1lbnQuICBEbyBub3Qgc3BlbmQgdmVyeSBtdWNoIHRpbWUKKyAgIG9uIHRoZSB3b3JkaW5nIG9mIHlvdXIgY2hhbmdlcywgYmVjYXVzZSB5b3VyIHRleHQgd2lsbCBwcm9iYWJseQorICAgZ2V0IHJld3JpdHRlbiB0byBzb21lIGRlZ3JlZS4KKworICAgKiBUaGUgbWFpbnRhaW5lciB3aWxsIGdvIHRocm91Z2ggTWlzYy9ORVdTIHBlcmlvZGljYWxseSBhbmQgYWRkCisgICBjaGFuZ2VzOyBpdCdzIHRoZXJlZm9yZSBtb3JlIGltcG9ydGFudCB0byBhZGQgeW91ciBjaGFuZ2VzIHRvCisgICBNaXNjL05FV1MgdGhhbiB0byB0aGlzIGZpbGUuCisKKyAgICogVGhpcyBpcyBub3QgYSBjb21wbGV0ZSBsaXN0IG9mIGV2ZXJ5IHNpbmdsZSBjaGFuZ2U7IGNvbXBsZXRlbmVzcworICAgaXMgdGhlIHB1cnBvc2Ugb2YgTWlzYy9ORVdTLiAgU29tZSBjaGFuZ2VzIEkgY29uc2lkZXIgdG9vIHNtYWxsCisgICBvciBlc290ZXJpYyB0byBpbmNsdWRlLiAgSWYgc3VjaCBhIGNoYW5nZSBpcyBhZGRlZCB0byB0aGUgdGV4dCwKKyAgIEknbGwganVzdCByZW1vdmUgaXQuICAoVGhpcyBpcyBhbm90aGVyIHJlYXNvbiB5b3Ugc2hvdWxkbid0IHNwZW5kCisgICB0b28gbXVjaCB0aW1lIG9uIHdyaXRpbmcgeW91ciBhZGRpdGlvbi4pCisKKyAgICogSWYgeW91IHdhbnQgdG8gZHJhdyB5b3VyIG5ldyB0ZXh0IHRvIHRoZSBhdHRlbnRpb24gb2YgdGhlCisgICBtYWludGFpbmVyLCBhZGQgJ1hYWCcgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFyYWdyYXBoIG9yCisgICBzZWN0aW9uLgorCisgICAqIEl0J3MgT0sgdG8ganVzdCBhZGQgYSBmcmFnbWVudGFyeSBub3RlIGFib3V0IGEgY2hhbmdlLiAgRm9yCisgICBleGFtcGxlOiAiWFhYIERlc2NyaWJlIHRoZSB0cmFuc21vZ3JpZnkoKSBmdW5jdGlvbiBhZGRlZCB0byB0aGUKKyAgIHNvY2tldCBtb2R1bGUuIiAgVGhlIG1haW50YWluZXIgd2lsbCByZXNlYXJjaCB0aGUgY2hhbmdlIGFuZAorICAgd3JpdGUgdGhlIG5lY2Vzc2FyeSB0ZXh0LgorCisgICAqIFlvdSBjYW4gY29tbWVudCBvdXQgeW91ciBhZGRpdGlvbnMgaWYgeW91IGxpa2UsIGJ1dCBpdCdzIG5vdAorICAgbmVjZXNzYXJ5IChlc3BlY2lhbGx5IHdoZW4gYSBmaW5hbCByZWxlYXNlIGlzIHNvbWUgbW9udGhzIGF3YXkpLgorCisgICAqIENyZWRpdCB0aGUgYXV0aG9yIG9mIGEgcGF0Y2ggb3IgYnVnZml4LiAgIEp1c3QgdGhlIG5hbWUgaXMKKyAgIHN1ZmZpY2llbnQ7IHRoZSBlLW1haWwgYWRkcmVzcyBpc24ndCBuZWNlc3NhcnkuCisKKyAgICogSXQncyBoZWxwZnVsIHRvIGFkZCB0aGUgYnVnL3BhdGNoIG51bWJlciBhcyBhIGNvbW1lbnQ6CisKKyAgIFhYWCBEZXNjcmliZSB0aGUgdHJhbnNtb2dyaWZ5KCkgZnVuY3Rpb24gYWRkZWQgdG8gdGhlIHNvY2tldAorICAgbW9kdWxlLgorICAgKENvbnRyaWJ1dGVkIGJ5IFAuWS4gRGV2ZWxvcGVyIGluIDppc3N1ZTpgMTIzNDVgLikKKworICAgVGhpcyBzYXZlcyB0aGUgbWFpbnRhaW5lciB0aGUgZWZmb3J0IG9mIGdvaW5nIHRocm91Z2ggdGhlIE1lcmN1cmlhbCBsb2cKKyAgIHdoZW4gcmVzZWFyY2hpbmcgYSBjaGFuZ2UuCisKK1RoaXMgYXJ0aWNsZSBleHBsYWlucyB0aGUgbmV3IGZlYXR1cmVzIGluIFB5dGhvbiAzLjMsIGNvbXBhcmVkIHRvIDMuMi4KK1B5dGhvbiAzLjMgd2FzIHJlbGVhc2VkIG9uIFNlcHRlbWJlciAyOSwgMjAxMi4gIEZvciBmdWxsIGRldGFpbHMsCitzZWUgdGhlIDpzb3VyY2U6YE1pc2MvTkVXU2AgZmlsZS4KKworLi4gc2VlYWxzbzo6CisKKyAgICA6cGVwOmAzOThgIC0gUHl0aG9uIDMuMyBSZWxlYXNlIFNjaGVkdWxlCisKKworU3VtbWFyeSAtLSBSZWxlYXNlIGhpZ2hsaWdodHMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIFRoaXMgc2VjdGlvbiBzaW5nbGVzIG91dCB0aGUgbW9zdCBpbXBvcnRhbnQgY2hhbmdlcyBpbiBQeXRob24gMy4zLgorICAgQnJldml0eSBpcyBrZXkuCisKK05ldyBzeW50YXggZmVhdHVyZXM6CisKKyogTmV3IGBgeWllbGQgZnJvbWBgIGV4cHJlc3Npb24gZm9yIDpyZWY6YGdlbmVyYXRvciBkZWxlZ2F0aW9uIDxwZXAtMzgwPmAuCisqIFRoZSBgYHUndW5pY29kZSdgYCBzeW50YXggaXMgYWNjZXB0ZWQgYWdhaW4gZm9yIDpjbGFzczpgc3RyYCBvYmplY3RzLgorCitOZXcgbGlicmFyeSBtb2R1bGVzOgorCisqIDptb2Q6YGZhdWx0aGFuZGxlcmAgKGhlbHBzIGRlYnVnZ2luZyBsb3ctbGV2ZWwgY3Jhc2hlcykKKyogOm1vZDpgaXBhZGRyZXNzYCAoaGlnaC1sZXZlbCBvYmplY3RzIHJlcHJlc2VudGluZyBJUCBhZGRyZXNzZXMgYW5kIG1hc2tzKQorKiA6bW9kOmBsem1hYCAoY29tcHJlc3MgZGF0YSB1c2luZyB0aGUgWFogLyBMWk1BIGFsZ29yaXRobSkKKyogOm1vZDpgdW5pdHRlc3QubW9ja2AgKHJlcGxhY2UgcGFydHMgb2YgeW91ciBzeXN0ZW0gdW5kZXIgdGVzdCB3aXRoIG1vY2sgb2JqZWN0cykKKyogOm1vZDpgdmVudmAgKFB5dGhvbiA6cmVmOmB2aXJ0dWFsIGVudmlyb25tZW50cyA8cGVwLTQwNT5gLCBhcyBpbiB0aGUKKyAgcG9wdWxhciBgYHZpcnR1YWxlbnZgYCBwYWNrYWdlKQorCitOZXcgYnVpbHQtaW4gZmVhdHVyZXM6CisKKyogUmV3b3JrZWQgOnJlZjpgSS9PIGV4Y2VwdGlvbiBoaWVyYXJjaHkgPHBlcC0zMTUxPmAuCisKK0ltcGxlbWVudGF0aW9uIGltcHJvdmVtZW50czoKKworKiBSZXdyaXR0ZW4gOnJlZjpgaW1wb3J0IG1hY2hpbmVyeSA8aW1wb3J0bGliPmAgYmFzZWQgb24gOm1vZDpgaW1wb3J0bGliYC4KKyogTW9yZSBjb21wYWN0IDpyZWY6YHVuaWNvZGUgc3RyaW5ncyA8cGVwLTM5Mz5gLgorKiBNb3JlIGNvbXBhY3QgOnJlZjpgYXR0cmlidXRlIGRpY3Rpb25hcmllcyA8cGVwLTQxMj5gLgorCitTaWduaWZpY2FudGx5IEltcHJvdmVkIExpYnJhcnkgTW9kdWxlczoKKworKiBDIEFjY2VsZXJhdG9yIGZvciB0aGUgOnJlZjpgZGVjaW1hbCA8bmV3LWRlY2ltYWw+YCBtb2R1bGUuCisqIEJldHRlciB1bmljb2RlIGhhbmRsaW5nIGluIHRoZSA6cmVmOmBlbWFpbCA8bmV3LWVtYWlsPmAgbW9kdWxlCisgICg6dGVybTpgcHJvdmlzaW9uYWwgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YCkuCisKK1NlY3VyaXR5IGltcHJvdmVtZW50czoKKworKiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgc3dpdGNoZWQgb24gYnkgZGVmYXVsdC4KKworUGxlYXNlIHJlYWQgb24gZm9yIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mIHVzZXItZmFjaW5nIGNoYW5nZXMuCisKKworLi4gX3BlcC00MDU6CisKK1BFUCA0MDU6IFZpcnR1YWwgRW52aXJvbm1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitWaXJ0dWFsIGVudmlyb25tZW50cyBoZWxwIGNyZWF0ZSBzZXBhcmF0ZSBQeXRob24gc2V0dXBzIHdoaWxlIHNoYXJpbmcgYQorc3lzdGVtLXdpZGUgYmFzZSBpbnN0YWxsLCBmb3IgZWFzZSBvZiBtYWludGVuYW5jZS4gIFZpcnR1YWwgZW52aXJvbm1lbnRzCitoYXZlIHRoZWlyIG93biBzZXQgb2YgcHJpdmF0ZSBzaXRlIHBhY2thZ2VzIChpLmUuIGxvY2FsbHktaW5zdGFsbGVkCitsaWJyYXJpZXMpLCBhbmQgYXJlIG9wdGlvbmFsbHkgc2VncmVnYXRlZCBmcm9tIHRoZSBzeXN0ZW0td2lkZSBzaXRlCitwYWNrYWdlcy4gIFRoZWlyIGNvbmNlcHQgYW5kIGltcGxlbWVudGF0aW9uIGFyZSBpbnNwaXJlZCBieSB0aGUgcG9wdWxhcgorYGB2aXJ0dWFsZW52YGAgdGhpcmQtcGFydHkgcGFja2FnZSwgYnV0IGJlbmVmaXQgZnJvbSB0aWdodGVyIGludGVncmF0aW9uCit3aXRoIHRoZSBpbnRlcnByZXRlciBjb3JlLgorCitUaGlzIFBFUCBhZGRzIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MsIGFuZCB0aGUKKzpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+YCBzY3JpcHQgZm9yIGNvbW1hbmQtbGluZSBhY2Nlc3MgYW5kCithZG1pbmlzdHJhdGlvbi4gIFRoZSBQeXRob24gaW50ZXJwcmV0ZXIgY2hlY2tzIGZvciBhIGBgcHl2ZW52LmNmZ2BgLAorZmlsZSB3aG9zZSBleGlzdGVuY2Ugc2lnbmFscyB0aGUgYmFzZSBvZiBhIHZpcnR1YWwgZW52aXJvbm1lbnQncyBkaXJlY3RvcnkKK3RyZWUuCisKKy4uIHNlZWFsc286OgorCisgICAgOnBlcDpgNDA1YCAtIFB5dGhvbiBWaXJ0dWFsIEVudmlyb25tZW50cworICAgICAgIFBFUCB3cml0dGVuIGJ5IENhcmwgTWV5ZXI7IGltcGxlbWVudGF0aW9uIGJ5IENhcmwgTWV5ZXIgYW5kIFZpbmF5IFNhamlwCisKKworUEVQIDQyMDogSW1wbGljaXQgTmFtZXNwYWNlIFBhY2thZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworTmF0aXZlIHN1cHBvcnQgZm9yIHBhY2thZ2UgZGlyZWN0b3JpZXMgdGhhdCBkb24ndCByZXF1aXJlIGBgX19pbml0X18ucHlgYAorbWFya2VyIGZpbGVzIGFuZCBjYW4gYXV0b21hdGljYWxseSBzcGFuIG11bHRpcGxlIHBhdGggc2VnbWVudHMgKGluc3BpcmVkIGJ5Cit2YXJpb3VzIHRoaXJkIHBhcnR5IGFwcHJvYWNoZXMgdG8gbmFtZXNwYWNlIHBhY2thZ2VzLCBhcyBkZXNjcmliZWQgaW4KKzpwZXA6YDQyMGApCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MjBgIC0gSW1wbGljaXQgTmFtZXNwYWNlIFBhY2thZ2VzCisgICAgICBQRVAgd3JpdHRlbiBieSBFcmljIFYuIFNtaXRoOyBpbXBsZW1lbnRhdGlvbiBieSBFcmljIFYuIFNtaXRoCisgICAgICBhbmQgQmFycnkgV2Fyc2F3CisKKworLi4gX3BlcC0zMTE4LXVwZGF0ZToKKworUEVQIDMxMTg6IE5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGFuZCBidWZmZXIgcHJvdG9jb2wgZG9jdW1lbnRhdGlvbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgOnBlcDpgMzExOGAgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC4KKworVGhlIG5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGNvbXByZWhlbnNpdmVseSBmaXhlcyBhbGwgb3duZXJzaGlwIGFuZAorbGlmZXRpbWUgaXNzdWVzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBmaWVsZHMgaW4gdGhlIFB5X2J1ZmZlciBzdHJ1Y3QKK3RoYXQgbGVkIHRvIG11bHRpcGxlIGNyYXNoIHJlcG9ydHMuIEFkZGl0aW9uYWxseSwgc2V2ZXJhbCBmdW5jdGlvbnMgdGhhdAorY3Jhc2hlZCBvciByZXR1cm5lZCBpbmNvcnJlY3QgcmVzdWx0cyBmb3Igbm9uLWNvbnRpZ3VvdXMgb3IgbXVsdGktZGltZW5zaW9uYWwKK2lucHV0IGhhdmUgYmVlbiBmaXhlZC4KKworVGhlIG1lbW9yeXZpZXcgb2JqZWN0IG5vdyBoYXMgYSBQRVAtMzExOCBjb21wbGlhbnQgZ2V0YnVmZmVycHJvYygpCit0aGF0IGNoZWNrcyB0aGUgY29uc3VtZXIncyByZXF1ZXN0IHR5cGUuIE1hbnkgbmV3IGZlYXR1cmVzIGhhdmUgYmVlbgorYWRkZWQsIG1vc3Qgb2YgdGhlbSB3b3JrIGluIGZ1bGwgZ2VuZXJhbGl0eSBmb3Igbm9uLWNvbnRpZ3VvdXMgYXJyYXlzCithbmQgYXJyYXlzIHdpdGggc3Vib2Zmc2V0cy4KKworVGhlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZCwgY2xlYXJseSBzcGVsbGluZyBvdXQgcmVzcG9uc2liaWxpdGllcworZm9yIGJvdGggZXhwb3J0ZXJzIGFuZCBjb25zdW1lcnMuIEJ1ZmZlciByZXF1ZXN0IGZsYWdzIGFyZSBncm91cGVkIGludG8KK2Jhc2ljIGFuZCBjb21wb3VuZCBmbGFncy4gVGhlIG1lbW9yeSBsYXlvdXQgb2Ygbm9uLWNvbnRpZ3VvdXMgYW5kCittdWx0aS1kaW1lbnNpb25hbCBOdW1QeS1zdHlsZSBhcnJheXMgaXMgZXhwbGFpbmVkLgorCitGZWF0dXJlcworLS0tLS0tLS0KKworKiBBbGwgbmF0aXZlIHNpbmdsZSBjaGFyYWN0ZXIgZm9ybWF0IHNwZWNpZmllcnMgaW4gc3RydWN0IG1vZHVsZSBzeW50YXgKKyAgKG9wdGlvbmFsbHkgcHJlZml4ZWQgd2l0aCAnQCcpIGFyZSBub3cgc3VwcG9ydGVkLgorCisqIFdpdGggc29tZSByZXN0cmljdGlvbnMsIHRoZSBjYXN0KCkgbWV0aG9kIGFsbG93cyBjaGFuZ2luZyBvZiBmb3JtYXQgYW5kCisgIHNoYXBlIG9mIEMtY29udGlndW91cyBhcnJheXMuCisKKyogTXVsdGktZGltZW5zaW9uYWwgbGlzdCByZXByZXNlbnRhdGlvbnMgYXJlIHN1cHBvcnRlZCBmb3IgYW55IGFycmF5IHR5cGUuCisKKyogTXVsdGktZGltZW5zaW9uYWwgY29tcGFyaXNvbnMgYXJlIHN1cHBvcnRlZCBmb3IgYW55IGFycmF5IHR5cGUuCisKKyogT25lLWRpbWVuc2lvbmFsIG1lbW9yeXZpZXdzIG9mIGhhc2hhYmxlIChyZWFkLW9ubHkpIHR5cGVzIHdpdGggZm9ybWF0cyBCLAorICBiIG9yIGMgYXJlIG5vdyBoYXNoYWJsZS4gKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM0MTFgKQorCisqIEFyYml0cmFyeSBzbGljaW5nIG9mIGFueSAxLUQgYXJyYXlzIHR5cGUgaXMgc3VwcG9ydGVkLiBGb3IgZXhhbXBsZSwgaXQKKyAgaXMgbm93IHBvc3NpYmxlIHRvIHJldmVyc2UgYSBtZW1vcnl2aWV3IGluIE8oMSkgYnkgdXNpbmcgYSBuZWdhdGl2ZSBzdGVwLgorCitBUEkgY2hhbmdlcworLS0tLS0tLS0tLS0KKworKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGltZW5zaW9ucyBpcyBvZmZpY2lhbGx5IGxpbWl0ZWQgdG8gNjQuCisKKyogVGhlIHJlcHJlc2VudGF0aW9uIG9mIGVtcHR5IHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzIGlzIG5vdworICBhbiBlbXB0eSB0dXBsZSBpbnN0ZWFkIG9mIE5vbmUuCisKKyogQWNjZXNzaW5nIGEgbWVtb3J5dmlldyBlbGVtZW50IHdpdGggZm9ybWF0ICdCJyAodW5zaWduZWQgYnl0ZXMpCisgIG5vdyByZXR1cm5zIGFuIGludGVnZXIgKGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgc3RydWN0IG1vZHVsZSBzeW50YXgpLgorICBGb3IgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IHRoZSB2aWV3IG11c3QgYmUgY2FzdCB0byAnYycgZmlyc3QuCisKKyogbWVtb3J5dmlldyBjb21wYXJpc29ucyBub3cgdXNlIHRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgb3BlcmFuZHMKKyAgYW5kIGNvbXBhcmUgYWxsIGFycmF5IGVsZW1lbnRzIGJ5IHZhbHVlLiBBbGwgZm9ybWF0IHN0cmluZ3MgaW4gc3RydWN0CisgIG1vZHVsZSBzeW50YXggYXJlIHN1cHBvcnRlZC4gVmlld3Mgd2l0aCB1bnJlY29nbmlzZWQgZm9ybWF0IHN0cmluZ3MKKyAgYXJlIHN0aWxsIHBlcm1pdHRlZCwgYnV0IHdpbGwgYWx3YXlzIGNvbXBhcmUgYXMgdW5lcXVhbCwgcmVnYXJkbGVzcworICBvZiB2aWV3IGNvbnRlbnRzLgorCisqIEZvciBmdXJ0aGVyIGNoYW5nZXMgc2VlIGBCdWlsZCBhbmQgQyBBUEkgQ2hhbmdlc2BfIGFuZCBgUG9ydGluZyBDIGNvZGVgXyAuCisKKyhDb250cmlidXRlZCBieSBTdGVmYW4gS3JhaCBpbiA6aXNzdWU6YDEwMTgxYCkKKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDMxMThgIC0gUmV2aXNpbmcgdGhlIEJ1ZmZlciBQcm90b2NvbAorCisKKy4uIF9wZXAtMzkzOgorCitQRVAgMzkzOiBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgVW5pY29kZSBzdHJpbmcgdHlwZSBpcyBjaGFuZ2VkIHRvIHN1cHBvcnQgbXVsdGlwbGUgaW50ZXJuYWwKK3JlcHJlc2VudGF0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgbGFyZ2VzdCBVbmljb2RlIG9yZGluYWwKKygxLCAyLCBvciA0IGJ5dGVzKSBpbiB0aGUgcmVwcmVzZW50ZWQgc3RyaW5nLiAgVGhpcyBhbGxvd3MgYSBzcGFjZS1lZmZpY2llbnQKK3JlcHJlc2VudGF0aW9uIGluIGNvbW1vbiBjYXNlcywgYnV0IGdpdmVzIGFjY2VzcyB0byBmdWxsIFVDUy00IG9uIGFsbAorc3lzdGVtcy4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggZXhpc3RpbmcgQVBJcywgc2V2ZXJhbCByZXByZXNlbnRhdGlvbnMgbWF5CitleGlzdCBpbiBwYXJhbGxlbDsgb3ZlciB0aW1lLCB0aGlzIGNvbXBhdGliaWxpdHkgc2hvdWxkIGJlIHBoYXNlZCBvdXQuCisKK09uIHRoZSBQeXRob24gc2lkZSwgdGhlcmUgc2hvdWxkIGJlIG5vIGRvd25zaWRlIHRvIHRoaXMgY2hhbmdlLgorCitPbiB0aGUgQyBBUEkgc2lkZSwgUEVQIDM5MyBpcyBmdWxseSBiYWNrd2FyZCBjb21wYXRpYmxlLiAgVGhlIGxlZ2FjeSBBUEkKK3Nob3VsZCByZW1haW4gYXZhaWxhYmxlIGF0IGxlYXN0IGZpdmUgeWVhcnMuICBBcHBsaWNhdGlvbnMgdXNpbmcgdGhlIGxlZ2FjeQorQVBJIHdpbGwgbm90IGZ1bGx5IGJlbmVmaXQgb2YgdGhlIG1lbW9yeSByZWR1Y3Rpb24sIG9yIC0gd29yc2UgLSBtYXkgdXNlCithIGJpdCBtb3JlIG1lbW9yeSwgYmVjYXVzZSBQeXRob24gbWF5IGhhdmUgdG8gbWFpbnRhaW4gdHdvIHZlcnNpb25zIG9mIGVhY2gKK3N0cmluZyAoaW4gdGhlIGxlZ2FjeSBmb3JtYXQgYW5kIGluIHRoZSBuZXcgZWZmaWNpZW50IHN0b3JhZ2UpLgorCitGdW5jdGlvbmFsaXR5CistLS0tLS0tLS0tLS0tCisKK0NoYW5nZXMgaW50cm9kdWNlZCBieSA6cGVwOmAzOTNgIGFyZSB0aGUgZm9sbG93aW5nOgorCisqIFB5dGhvbiBub3cgYWx3YXlzIHN1cHBvcnRzIHRoZSBmdWxsIHJhbmdlIG9mIFVuaWNvZGUgY29kZXBvaW50cywgaW5jbHVkaW5nCisgIG5vbi1CTVAgb25lcyAoaS5lLiBmcm9tIGBgVSswMDAwYGAgdG8gYGBVKzEwRkZGRmBgKS4gIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuCisgIG5hcnJvdyBhbmQgd2lkZSBidWlsZHMgbm8gbG9uZ2VyIGV4aXN0cyBhbmQgUHl0aG9uIG5vdyBiZWhhdmVzIGxpa2UgYSB3aWRlCisgIGJ1aWxkLCBldmVuIHVuZGVyIFdpbmRvd3MuCisKKyogV2l0aCB0aGUgZGVhdGggb2YgbmFycm93IGJ1aWxkcywgdGhlIHByb2JsZW1zIHNwZWNpZmljIHRvIG5hcnJvdyBidWlsZHMgaGF2ZQorICBhbHNvIGJlZW4gZml4ZWQsIGZvciBleGFtcGxlOgorCisgICogOmZ1bmM6YGxlbmAgbm93IGFsd2F5cyByZXR1cm5zIDEgZm9yIG5vbi1CTVAgY2hhcmFjdGVycywKKyAgICBzbyBgYGxlbignXFUwMDEwRkZGRicpID09IDFgYDsKKworICAqIHN1cnJvZ2F0ZSBwYWlycyBhcmUgbm90IHJlY29tYmluZWQgaW4gc3RyaW5nIGxpdGVyYWxzLAorICAgIHNvIGBgJ1x1REJGRlx1REZGRicgIT0gJ1xVMDAxMEZGRkYnYGA7CisKKyAgKiBpbmRleGluZyBvciBzbGljaW5nIG5vbi1CTVAgY2hhcmFjdGVycyByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZSwKKyAgICBzbyBgYCdcVTAwMTBGRkZGJ1swXWBgIG5vdyByZXR1cm5zIGBgJ1xVMDAxMEZGRkYnYGAgYW5kIG5vdCBgYCdcdURCRkYnYGA7CisKKyAgKiBhbGwgb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG5vdyBjb3JyZWN0bHkgaGFuZGxlCisgICAgbm9uLUJNUCBjb2RlcG9pbnRzLgorCisqIFRoZSB2YWx1ZSBvZiA6ZGF0YTpgc3lzLm1heHVuaWNvZGVgIGlzIG5vdyBhbHdheXMgYGAxMTE0MTExYGAgKGBgMHgxMEZGRkZgYAorICBpbiBoZXhhZGVjaW1hbCkuICBUaGUgOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAgZnVuY3Rpb24gc3RpbGwgcmV0dXJucworICBlaXRoZXIgYGAweEZGRkZgYCBvciBgYDB4MTBGRkZGYGAgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIGFuZCBpdCBzaG91bGQKKyAgbm90IGJlIHVzZWQgd2l0aCB0aGUgbmV3IFVuaWNvZGUgQVBJIChzZWUgOmlzc3VlOmAxMzA1NGApLgorCisqIFRoZSA6ZmlsZTpgLi9jb25maWd1cmVgIGZsYWcgYGAtLXdpdGgtd2lkZS11bmljb2RlYGAgaGFzIGJlZW4gcmVtb3ZlZC4KKworUGVyZm9ybWFuY2UgYW5kIHJlc291cmNlIHVzYWdlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHN0b3JhZ2Ugb2YgVW5pY29kZSBzdHJpbmdzIG5vdyBkZXBlbmRzIG9uIHRoZSBoaWdoZXN0IGNvZGVwb2ludCBpbiB0aGUgc3RyaW5nOgorCisqIHB1cmUgQVNDSUkgYW5kIExhdGluMSBzdHJpbmdzIChgYFUrMDAwMC1VKzAwRkZgYCkgdXNlIDEgYnl0ZSBwZXIgY29kZXBvaW50OworCisqIEJNUCBzdHJpbmdzIChgYFUrMDAwMC1VK0ZGRkZgYCkgdXNlIDIgYnl0ZXMgcGVyIGNvZGVwb2ludDsKKworKiBub24tQk1QIHN0cmluZ3MgKGBgVSsxMDAwMC1VKzEwRkZGRmBgKSB1c2UgNCBieXRlcyBwZXIgY29kZXBvaW50LgorCitUaGUgbmV0IGVmZmVjdCBpcyB0aGF0IGZvciBtb3N0IGFwcGxpY2F0aW9ucywgbWVtb3J5IHVzYWdlIG9mIHN0cmluZworc3RvcmFnZSBzaG91bGQgZGVjcmVhc2Ugc2lnbmlmaWNhbnRseSAtIGVzcGVjaWFsbHkgY29tcGFyZWQgdG8gZm9ybWVyCit3aWRlIHVuaWNvZGUgYnVpbGRzIC0gYXMsIGluIG1hbnkgY2FzZXMsIHN0cmluZ3Mgd2lsbCBiZSBwdXJlIEFTQ0lJCitldmVuIGluIGludGVybmF0aW9uYWwgY29udGV4dHMgKGJlY2F1c2UgbWFueSBzdHJpbmdzIHN0b3JlIG5vbi1odW1hbgorbGFuZ3VhZ2UgZGF0YSwgc3VjaCBhcyBYTUwgZnJhZ21lbnRzLCBIVFRQIGhlYWRlcnMsIEpTT04tZW5jb2RlZCBkYXRhLAorZXRjLikuICBXZSBhbHNvIGhvcGUgdGhhdCBpdCB3aWxsLCBmb3IgdGhlIHNhbWUgcmVhc29ucywgaW5jcmVhc2UgQ1BVCitjYWNoZSBlZmZpY2llbmN5IG9uIG5vbi10cml2aWFsIGFwcGxpY2F0aW9ucy4gVGhlIG1lbW9yeSB1c2FnZSBvZgorUHl0aG9uIDMuMyBpcyB0d28gdG8gdGhyZWUgdGltZXMgc21hbGxlciB0aGFuIFB5dGhvbiAzLjIsIGFuZCBhIGxpdHRsZQorYml0IGJldHRlciB0aGFuIFB5dGhvbiAyLjcsIG9uIGEgRGphbmdvIGJlbmNobWFyayAoc2VlIHRoZSBQRVAgZm9yCitkZXRhaWxzKS4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM5M2AgLSBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24KKyAgICAgIFBFUCB3cml0dGVuIGJ5IE1hcnRpbiB2b24gTMO2d2lzOyBpbXBsZW1lbnRhdGlvbiBieSBUb3JzdGVuIEJlY2tlcgorICAgICAgYW5kIE1hcnRpbiB2b24gTMO2d2lzLgorCisKKy4uIF9wZXAtMzk3OgorCitQRVAgMzk3OiBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgUHl0aG9uIDMuMyBXaW5kb3dzIGluc3RhbGxlciBub3cgaW5jbHVkZXMgYSBgYHB5YGAgbGF1bmNoZXIgYXBwbGljYXRpb24KK3RoYXQgY2FuIGJlIHVzZWQgdG8gbGF1bmNoIFB5dGhvbiBhcHBsaWNhdGlvbnMgaW4gYSB2ZXJzaW9uIGluZGVwZW5kZW50CitmYXNoaW9uLgorCitUaGlzIGxhdW5jaGVyIGlzIGludm9rZWQgaW1wbGljaXRseSB3aGVuIGRvdWJsZS1jbGlja2luZyBgYCoucHlgYCBmaWxlcy4KK0lmIG9ubHkgYSBzaW5nbGUgUHl0aG9uIHZlcnNpb24gaXMgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0sIHRoYXQgdmVyc2lvbgord2lsbCBiZSB1c2VkIHRvIHJ1biB0aGUgZmlsZS4gSWYgbXVsdGlwbGUgdmVyc2lvbnMgYXJlIGluc3RhbGxlZCwgdGhlIG1vc3QKK3JlY2VudCB2ZXJzaW9uIGlzIHVzZWQgYnkgZGVmYXVsdCwgYnV0IHRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5jbHVkaW5nCithIFVuaXgtc3R5bGUgInNoZWJhbmcgbGluZSIgaW4gdGhlIFB5dGhvbiBzY3JpcHQuCisKK1RoZSBsYXVuY2hlciBjYW4gYWxzbyBiZSB1c2VkIGV4cGxpY2l0bHkgZnJvbSB0aGUgY29tbWFuZCBsaW5lIGFzIHRoZSBgYHB5YGAKK2FwcGxpY2F0aW9uLiBSdW5uaW5nIGBgcHlgYCBmb2xsb3dzIHRoZSBzYW1lIHZlcnNpb24gc2VsZWN0aW9uIHJ1bGVzIGFzCitpbXBsaWNpdGx5IGxhdW5jaGluZyBzY3JpcHRzLCBidXQgYSBtb3JlIHNwZWNpZmljIHZlcnNpb24gY2FuIGJlIHNlbGVjdGVkCitieSBwYXNzaW5nIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyAoc3VjaCBhcyBgYC0zYGAgdG8gcmVxdWVzdCBQeXRob24gMyB3aGVuCitQeXRob24gMiBpcyBhbHNvIGluc3RhbGxlZCwgb3IgYGAtMi42YGAgdG8gc3BlY2lmY2xseSByZXF1ZXN0IGFuIGVhcmxpZXIKK1B5dGhvbiB2ZXJzaW9uIHdoZW4gYSBtb3JlIHJlY2VudCB2ZXJzaW9uIGlzIGluc3RhbGxlZCkuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBsYXVuY2hlciwgdGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbgorb3B0aW9uIHRvIGFkZCB0aGUgbmV3bHkgaW5zdGFsbGVkIFB5dGhvbiB0byB0aGUgc3lzdGVtIFBBVEggKGNvbnRyaWJ1dGVkCitieSBCcmlhbiBDdXJ0aW4gaW4gOmlzc3VlOmAzNTYxYCkuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzOTdgIC0gUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCisgICAgICBQRVAgd3JpdHRlbiBieSBNYXJrIEhhbW1vbmQgYW5kIE1hcnRpbiB2LiBMw7Z3aXM7IGltcGxlbWVudGF0aW9uIGJ5CisgICAgICBWaW5heSBTYWppcC4KKworICAgTGF1bmNoZXIgZG9jdW1lbnRhdGlvbjogOnJlZjpgbGF1bmNoZXJgCisKKyAgIEluc3RhbGxlciBQQVRIIG1vZGlmaWNhdGlvbjogOnJlZjpgd2luZG93cy1wYXRoLW1vZGAKKworCisuLiBfcGVwLTMxNTE6CisKK1BFUCAzMTUxOiBSZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUaGUgaGllcmFyY2h5IG9mIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IG9wZXJhdGluZyBzeXN0ZW0gZXJyb3JzIGlzIG5vdyBib3RoCitzaW1wbGlmaWVkIGFuZCBmaW5lci1ncmFpbmVkLgorCitZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhbnltb3JlIGFib3V0IGNob29zaW5nIHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24KK3R5cGUgYmV0d2VlbiA6ZXhjOmBPU0Vycm9yYCwgOmV4YzpgSU9FcnJvcmAsIDpleGM6YEVudmlyb25tZW50RXJyb3JgLAorOmV4YzpgV2luZG93c0Vycm9yYCwgOmV4YzpgbW1hcC5lcnJvcmAsIDpleGM6YHNvY2tldC5lcnJvcmAgb3IKKzpleGM6YHNlbGVjdC5lcnJvcmAuICBBbGwgdGhlc2UgZXhjZXB0aW9uIHR5cGVzIGFyZSBub3cgb25seSBvbmU6Cis6ZXhjOmBPU0Vycm9yYC4gIFRoZSBvdGhlciBuYW1lcyBhcmUga2VwdCBhcyBhbGlhc2VzIGZvciBjb21wYXRpYmlsaXR5CityZWFzb25zLgorCitBbHNvLCBpdCBpcyBub3cgZWFzaWVyIHRvIGNhdGNoIGEgc3BlY2lmaWMgZXJyb3IgY29uZGl0aW9uLiAgSW5zdGVhZCBvZgoraW5zcGVjdGluZyB0aGUgYGBlcnJub2BgIGF0dHJpYnV0ZSAob3IgYGBhcmdzWzBdYGApIGZvciBhIHBhcnRpY3VsYXIKK2NvbnN0YW50IGZyb20gdGhlIDptb2Q6YGVycm5vYCBtb2R1bGUsIHlvdSBjYW4gY2F0Y2ggdGhlIGFkZXF1YXRlCis6ZXhjOmBPU0Vycm9yYCBzdWJjbGFzcy4gIFRoZSBhdmFpbGFibGUgc3ViY2xhc3NlcyBhcmUgdGhlIGZvbGxvd2luZzoKKworKiA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgCisqIDpleGM6YENoaWxkUHJvY2Vzc0Vycm9yYAorKiA6ZXhjOmBDb25uZWN0aW9uRXJyb3JgCisqIDpleGM6YEZpbGVFeGlzdHNFcnJvcmAKKyogOmV4YzpgRmlsZU5vdEZvdW5kRXJyb3JgCisqIDpleGM6YEludGVycnVwdGVkRXJyb3JgCisqIDpleGM6YElzQURpcmVjdG9yeUVycm9yYAorKiA6ZXhjOmBOb3RBRGlyZWN0b3J5RXJyb3JgCisqIDpleGM6YFBlcm1pc3Npb25FcnJvcmAKKyogOmV4YzpgUHJvY2Vzc0xvb2t1cEVycm9yYAorKiA6ZXhjOmBUaW1lb3V0RXJyb3JgCisKK0FuZCB0aGUgOmV4YzpgQ29ubmVjdGlvbkVycm9yYCBpdHNlbGYgaGFzIGZpbmVyLWdyYWluZWQgc3ViY2xhc3NlczoKKworKiA6ZXhjOmBCcm9rZW5QaXBlRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25BYm9ydGVkRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25SZWZ1c2VkRXJyb3JgCisqIDpleGM6YENvbm5lY3Rpb25SZXNldEVycm9yYAorCitUaGFua3MgdG8gdGhlIG5ldyBleGNlcHRpb25zLCBjb21tb24gdXNhZ2VzIG9mIHRoZSA6bW9kOmBlcnJub2AgY2FuIG5vdyBiZQorYXZvaWRlZC4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGUgd3JpdHRlbiBmb3IgUHl0aG9uIDMuMjo6CisKKyAgICBmcm9tIGVycm5vIGltcG9ydCBFTk9FTlQsIEVBQ0NFUywgRVBFUk0KKworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKCJkb2N1bWVudC50eHQiKSBhcyBmOgorICAgICAgICAgICAgY29udGVudCA9IGYucmVhZCgpCisgICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgorICAgICAgICBpZiBlcnIuZXJybm8gPT0gRU5PRU5UOgorICAgICAgICAgICAgcHJpbnQoImRvY3VtZW50LnR4dCBmaWxlIGlzIG1pc3NpbmciKQorICAgICAgICBlbGlmIGVyci5lcnJubyBpbiAoRUFDQ0VTLCBFUEVSTSk6CisgICAgICAgICAgICBwcmludCgiWW91IGFyZSBub3QgYWxsb3dlZCB0byByZWFkIGRvY3VtZW50LnR4dCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZQorCitjYW4gbm93IGJlIHdyaXR0ZW4gd2l0aG91dCB0aGUgOm1vZDpgZXJybm9gIGltcG9ydCBhbmQgd2l0aG91dCBtYW51YWwKK2luc3BlY3Rpb24gb2YgZXhjZXB0aW9uIGF0dHJpYnV0ZXM6OgorCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oImRvY3VtZW50LnR4dCIpIGFzIGY6CisgICAgICAgICAgICBjb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgIHByaW50KCJkb2N1bWVudC50eHQgZmlsZSBpcyBtaXNzaW5nIikKKyAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICBwcmludCgiWW91IGFyZSBub3QgYWxsb3dlZCB0byByZWFkIGRvY3VtZW50LnR4dCIpCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmAzMTUxYCAtIFJld29ya2luZyB0aGUgT1MgYW5kIElPIEV4Y2VwdGlvbiBIaWVyYXJjaHkKKyAgICAgIFBFUCB3cml0dGVuIGFuZCBpbXBsZW1lbnRlZCBieSBBbnRvaW5lIFBpdHJvdQorCisKKy4uIF9wZXAtMzgwOgorCitQRVAgMzgwOiBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitQRVAgMzgwIGFkZHMgdGhlIGBgeWllbGQgZnJvbWBgIGV4cHJlc3Npb24sIGFsbG93aW5nIGEgZ2VuZXJhdG9yIHRvIGRlbGVnYXRlCitwYXJ0IG9mIGl0cyBvcGVyYXRpb25zIHRvIGFub3RoZXIgZ2VuZXJhdG9yLiBUaGlzIGFsbG93cyBhIHNlY3Rpb24gb2YgY29kZQorY29udGFpbmluZyAneWllbGQnIHRvIGJlIGZhY3RvcmVkIG91dCBhbmQgcGxhY2VkIGluIGFub3RoZXIgZ2VuZXJhdG9yLgorQWRkaXRpb25hbGx5LCB0aGUgc3ViZ2VuZXJhdG9yIGlzIGFsbG93ZWQgdG8gcmV0dXJuIHdpdGggYSB2YWx1ZSwgYW5kIHRoZQordmFsdWUgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIGRlbGVnYXRpbmcgZ2VuZXJhdG9yLgorCitXaGlsZSBkZXNpZ25lZCBwcmltYXJpbHkgZm9yIHVzZSBpbiBkZWxlZ2F0aW5nIHRvIGEgc3ViZ2VuZXJhdG9yLCB0aGUgYGB5aWVsZAorZnJvbWBgIGV4cHJlc3Npb24gYWN0dWFsbHkgYWxsb3dzIGRlbGVnYXRpb24gdG8gYXJiaXRyYXJ5IHN1Yml0ZXJhdG9ycy4KKworRm9yIHNpbXBsZSBpdGVyYXRvcnMsIGBgeWllbGQgZnJvbSBpdGVyYWJsZWBgIGlzIGVzc2VudGlhbGx5IGp1c3QgYSBzaG9ydGVuZWQKK2Zvcm0gb2YgYGBmb3IgaXRlbSBpbiBpdGVyYWJsZTogeWllbGQgaXRlbWBgOjoKKworICAgID4+PiBkZWYgZyh4KToKKyAgICAuLi4gICAgIHlpZWxkIGZyb20gcmFuZ2UoeCwgMCwgLTEpCisgICAgLi4uICAgICB5aWVsZCBmcm9tIHJhbmdlKHgpCisgICAgLi4uCisgICAgPj4+IGxpc3QoZyg1KSkKKyAgICBbNSwgNCwgMywgMiwgMSwgMCwgMSwgMiwgMywgNF0KKworSG93ZXZlciwgdW5saWtlIGFuIG9yZGluYXJ5IGxvb3AsIGBgeWllbGQgZnJvbWBgIGFsbG93cyBzdWJnZW5lcmF0b3JzIHRvCityZWNlaXZlIHNlbnQgYW5kIHRocm93biB2YWx1ZXMgZGlyZWN0bHkgZnJvbSB0aGUgY2FsbGluZyBzY29wZSwgYW5kCityZXR1cm4gYSBmaW5hbCB2YWx1ZSB0byB0aGUgb3V0ZXIgZ2VuZXJhdG9yOjoKKworICAgID4+PiBkZWYgYWNjdW11bGF0ZShzdGFydD0wKToKKyAgICAuLi4gICAgIHRhbGx5ID0gc3RhcnQKKyAgICAuLi4gICAgIHdoaWxlIDE6CisgICAgLi4uICAgICAgICAgbmV4dCA9IHlpZWxkCisgICAgLi4uICAgICAgICAgaWYgbmV4dCBpcyBOb25lOgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gdGFsbHkKKyAgICAuLi4gICAgICAgICB0YWxseSArPSBuZXh0CisgICAgLi4uCisgICAgPj4+IGRlZiBnYXRoZXJfdGFsbGllcyh0YWxsaWVzLCBzdGFydD0wKToKKyAgICAuLi4gICAgIHdoaWxlIDE6CisgICAgLi4uICAgICAgICAgdGFsbHkgPSB5aWVsZCBmcm9tIGFjY3VtdWxhdGUoKQorICAgIC4uLiAgICAgICAgIHRhbGxpZXMuYXBwZW5kKHRhbGx5KQorICAgIC4uLgorICAgID4+PiB0YWxsaWVzID0gW10KKyAgICA+Pj4gYWNjID0gZ2F0aGVyX3RhbGxpZXModGFsbGllcykKKyAgICA+Pj4gbmV4dChhY2MpICMgRW5zdXJlIHRoZSBhY2N1bXVsYXRvciBpcyByZWFkeSB0byBhY2NlcHQgdmFsdWVzCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAuLi4gICAgIGFjYy5zZW5kKGkpCisgICAgLi4uCisgICAgPj4+IGFjYy5zZW5kKE5vbmUpICMgRmluaXNoIHRoZSBmaXJzdCB0YWxseQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAuLi4gICAgIGFjYy5zZW5kKGkpCisgICAgLi4uCisgICAgPj4+IGFjYy5zZW5kKE5vbmUpICMgRmluaXNoIHRoZSBzZWNvbmQgdGFsbHkKKyAgICA+Pj4gdGFsbGllcworICAgIFs0NSwgMTBdCisKK1RoZSBtYWluIHByaW5jaXBsZSBkcml2aW5nIHRoaXMgY2hhbmdlIGlzIHRvIGFsbG93IGV2ZW4gZ2VuZXJhdG9ycyB0aGF0IGFyZQorZGVzaWduZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBgYHNlbmRgYCBhbmQgYGB0aHJvd2BgIG1ldGhvZHMgdG8gYmUgc3BsaXQgaW50bworbXVsdGlwbGUgc3ViZ2VuZXJhdG9ycyBhcyBlYXNpbHkgYXMgYSBzaW5nbGUgbGFyZ2UgZnVuY3Rpb24gY2FuIGJlIHNwbGl0IGludG8KK211bHRpcGxlIHN1YmZ1bmN0aW9ucy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM4MGAgLSBTeW50YXggZm9yIERlbGVnYXRpbmcgdG8gYSBTdWJnZW5lcmF0b3IKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEdyZWcgRXdpbmc7IGltcGxlbWVudGF0aW9uIGJ5IEdyZWcgRXdpbmcsIGludGVncmF0ZWQgaW50bworICAgICAgMy4zIGJ5IFJlbmF1ZCBCbGFuY2gsIFJ5YW4gS2VsbHkgYW5kIE5pY2sgQ29naGxhbjsgZG9jdW1lbnRhdGlvbiBieQorICAgICAgWmJpZ25pZXcgSsSZZHJ6ZWpld3NraS1Tem1layBhbmQgTmljayBDb2dobGFuCisKKworUEVQIDQwOTogU3VwcHJlc3NpbmcgZXhjZXB0aW9uIGNvbnRleHQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1BFUCA0MDkgaW50cm9kdWNlcyBuZXcgc3ludGF4IHRoYXQgYWxsb3dzIHRoZSBkaXNwbGF5IG9mIHRoZSBjaGFpbmVkCitleGNlcHRpb24gY29udGV4dCB0byBiZSBkaXNhYmxlZC4gVGhpcyBhbGxvd3MgY2xlYW5lciBlcnJvciBtZXNzYWdlcyBpbgorYXBwbGljYXRpb25zIHRoYXQgY29udmVydCBiZXR3ZWVuIGV4Y2VwdGlvbiB0eXBlczo6CisKKyAgICA+Pj4gY2xhc3MgRDoKKyAgICAuLi4gICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYSk6CisgICAgLi4uICAgICAgICAgc2VsZi5fZXh0cmFfYXR0cmlidXRlcyA9IGV4dHJhCisgICAgLi4uICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgYXR0cik6CisgICAgLi4uICAgICAgICAgdHJ5OgorICAgIC4uLiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFfYXR0cmlidXRlc1thdHRyXQorICAgIC4uLiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAuLi4gICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoYXR0cikgZnJvbSBOb25lCisgICAgLi4uCisgICAgPj4+IEQoe30pLngKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgOCwgaW4gX19nZXRhdHRyX18KKyAgICBBdHRyaWJ1dGVFcnJvcjogeAorCitXaXRob3V0IHRoZSBgYGZyb20gTm9uZWBgIHN1ZmZpeCB0byBzdXBwcmVzcyB0aGUgY2F1c2UsIHRoZSBvcmlnaW5hbAorZXhjZXB0aW9uIHdvdWxkIGJlIGRpc3BsYXllZCBieSBkZWZhdWx0OjoKKworICAgID4+PiBjbGFzcyBDOgorICAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4dHJhKToKKyAgICAuLi4gICAgICAgICBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzID0gZXh0cmEKKyAgICAuLi4gICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAuLi4gICAgICAgICB0cnk6CisgICAgLi4uICAgICAgICAgICAgIHJldHVybiBzZWxmLl9leHRyYV9hdHRyaWJ1dGVzW2F0dHJdCisgICAgLi4uICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgIC4uLiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQorICAgIC4uLgorICAgID4+PiBDKHt9KS54CisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNiwgaW4gX19nZXRhdHRyX18KKyAgICBLZXlFcnJvcjogJ3gnCisKKyAgICBEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6CisKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgOCwgaW4gX19nZXRhdHRyX18KKyAgICBBdHRyaWJ1dGVFcnJvcjogeAorCitObyBkZWJ1Z2dpbmcgY2FwYWJpbGl0eSBpcyBsb3N0LCBhcyB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIGNvbnRleHQgcmVtYWlucworYXZhaWxhYmxlIGlmIG5lZWRlZCAoZm9yIGV4YW1wbGUsIGlmIGFuIGludGVydmVuaW5nIGxpYnJhcnkgaGFzIGluY29ycmVjdGx5CitzdXBwcmVzc2VkIHZhbHVhYmxlIHVuZGVybHlpbmcgZGV0YWlscyk6OgorCisgICAgPj4+IHRyeToKKyAgICAuLi4gICAgIEQoe30pLngKKyAgICAuLi4gZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGV4YzoKKyAgICAuLi4gICAgIHByaW50KHJlcHIoZXhjLl9fY29udGV4dF9fKSkKKyAgICAuLi4KKyAgICBLZXlFcnJvcigneCcsKQorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNDA5YCAtIFN1cHByZXNzaW5nIGV4Y2VwdGlvbiBjb250ZXh0CisgICAgICBQRVAgd3JpdHRlbiBieSBFdGhhbiBGdXJtYW47IGltcGxlbWVudGVkIGJ5IEV0aGFuIEZ1cm1hbiBhbmQgTmljaworICAgICAgQ29naGxhbi4KKworCitQRVAgNDE0OiBFeHBsaWNpdCBVbmljb2RlIGxpdGVyYWxzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitUbyBlYXNlIHRoZSB0cmFuc2l0aW9uIGZyb20gUHl0aG9uIDIgZm9yIFVuaWNvZGUgYXdhcmUgUHl0aG9uIGFwcGxpY2F0aW9ucwordGhhdCBtYWtlIGhlYXZ5IHVzZSBvZiBVbmljb2RlIGxpdGVyYWxzLCBQeXRob24gMy4zIG9uY2UgYWdhaW4gc3VwcG9ydHMgdGhlCisiYGB1YGAiIHByZWZpeCBmb3Igc3RyaW5nIGxpdGVyYWxzLiBUaGlzIHByZWZpeCBoYXMgbm8gc2VtYW50aWMgc2lnbmlmaWNhbmNlCitpbiBQeXRob24gMywgaXQgaXMgcHJvdmlkZWQgc29sZWx5IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHB1cmVseSBtZWNoYW5pY2FsCitjaGFuZ2VzIGluIG1pZ3JhdGluZyB0byBQeXRob24gMywgbWFraW5nIGl0IGVhc2llciBmb3IgZGV2ZWxvcGVycyB0byBmb2N1cyBvbgordGhlIG1vcmUgc2lnbmlmaWNhbnQgc2VtYW50aWMgY2hhbmdlcyAoc3VjaCBhcyB0aGUgc3RyaWN0ZXIgZGVmYXVsdAorc2VwYXJhdGlvbiBvZiBiaW5hcnkgYW5kIHRleHQgZGF0YSkuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MTRgIC0gRXhwbGljaXQgVW5pY29kZSBsaXRlcmFscworICAgICAgUEVQIHdyaXR0ZW4gYnkgQXJtaW4gUm9uYWNoZXIuCisKKworUEVQIDMxNTU6IFF1YWxpZmllZCBuYW1lIGZvciBjbGFzc2VzIGFuZCBmdW5jdGlvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0Z1bmN0aW9ucyBhbmQgY2xhc3Mgb2JqZWN0cyBoYXZlIGEgbmV3IGBgX19xdWFsbmFtZV9fYGAgYXR0cmlidXRlIHJlcHJlc2VudGluZwordGhlICJwYXRoIiBmcm9tIHRoZSBtb2R1bGUgdG9wLWxldmVsIHRvIHRoZWlyIGRlZmluaXRpb24uICBGb3IgZ2xvYmFsIGZ1bmN0aW9ucworYW5kIGNsYXNzZXMsIHRoaXMgaXMgdGhlIHNhbWUgYXMgYGBfX25hbWVfX2BgLiAgRm9yIG90aGVyIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcywKK2l0IHByb3ZpZGVzIGJldHRlciBpbmZvcm1hdGlvbiBhYm91dCB3aGVyZSB0aGV5IHdlcmUgYWN0dWFsbHkgZGVmaW5lZCwgYW5kCitob3cgdGhleSBtaWdodCBiZSBhY2Nlc3NpYmxlIGZyb20gdGhlIGdsb2JhbCBzY29wZS4KKworRXhhbXBsZSB3aXRoIChub24tYm91bmQpIG1ldGhvZHM6OgorCisgICA+Pj4gY2xhc3MgQzoKKyAgIC4uLiAgICAgZGVmIG1ldGgoc2VsZik6CisgICAuLi4gICAgICAgICBwYXNzCisgICA+Pj4gQy5tZXRoLl9fbmFtZV9fCisgICAnbWV0aCcKKyAgID4+PiBDLm1ldGguX19xdWFsbmFtZV9fCisgICAnQy5tZXRoJworCitFeGFtcGxlIHdpdGggbmVzdGVkIGNsYXNzZXM6OgorCisgICA+Pj4gY2xhc3MgQzoKKyAgIC4uLiAgICAgY2xhc3MgRDoKKyAgIC4uLiAgICAgICAgIGRlZiBtZXRoKHNlbGYpOgorICAgLi4uICAgICAgICAgICAgIHBhc3MKKyAgIC4uLgorICAgPj4+IEMuRC5fX25hbWVfXworICAgJ0QnCisgICA+Pj4gQy5ELl9fcXVhbG5hbWVfXworICAgJ0MuRCcKKyAgID4+PiBDLkQubWV0aC5fX25hbWVfXworICAgJ21ldGgnCisgICA+Pj4gQy5ELm1ldGguX19xdWFsbmFtZV9fCisgICAnQy5ELm1ldGgnCisKK0V4YW1wbGUgd2l0aCBuZXN0ZWQgZnVuY3Rpb25zOjoKKworICAgPj4+IGRlZiBvdXRlcigpOgorICAgLi4uICAgICBkZWYgaW5uZXIoKToKKyAgIC4uLiAgICAgICAgIHBhc3MKKyAgIC4uLiAgICAgcmV0dXJuIGlubmVyCisgICAuLi4KKyAgID4+PiBvdXRlcigpLl9fbmFtZV9fCisgICAnaW5uZXInCisgICA+Pj4gb3V0ZXIoKS5fX3F1YWxuYW1lX18KKyAgICdvdXRlci48bG9jYWxzPi5pbm5lcicKKworVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aG9zZSBvYmplY3RzIGlzIGFsc28gY2hhbmdlZCB0byBpbmNsdWRlIHRoZQorbmV3LCBtb3JlIHByZWNpc2UgaW5mb3JtYXRpb246OgorCisgICA+Pj4gc3RyKEMuRCkKKyAgICI8Y2xhc3MgJ19fbWFpbl9fLkMuRCc+IgorICAgPj4+IHN0cihDLkQubWV0aCkKKyAgICc8ZnVuY3Rpb24gQy5ELm1ldGggYXQgMHg3ZjQ2YjlmZTMxZTA+JworCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgMzE1NWAgLSBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zCisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgQW50b2luZSBQaXRyb3UuCisKKworLi4gX3BlcC00MTI6CisKK1BFUCA0MTI6IEtleS1TaGFyaW5nIERpY3Rpb25hcnkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRGljdGlvbmFyaWVzIHVzZWQgZm9yIHRoZSBzdG9yYWdlIG9mIG9iamVjdHMnIGF0dHJpYnV0ZXMgYXJlIG5vdyBhYmxlIHRvCitzaGFyZSBwYXJ0IG9mIHRoZWlyIGludGVybmFsIHN0b3JhZ2UgYmV0d2VlbiBlYWNoIG90aGVyIChuYW1lbHksIHRoZSBwYXJ0Cit3aGljaCBzdG9yZXMgdGhlIGtleXMgYW5kIHRoZWlyIHJlc3BlY3RpdmUgaGFzaGVzKS4gIFRoaXMgcmVkdWNlcyB0aGUgbWVtb3J5Citjb25zdW1wdGlvbiBvZiBwcm9ncmFtcyBjcmVhdGluZyBtYW55IGluc3RhbmNlcyBvZiBub24tYnVpbHRpbiB0eXBlcy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDQxMmAgLSBLZXktU2hhcmluZyBEaWN0aW9uYXJ5CisgICAgICBQRVAgd3JpdHRlbiBhbmQgaW1wbGVtZW50ZWQgYnkgTWFyayBTaGFubm9uLgorCisKK1BFUCAzNjI6IEZ1bmN0aW9uIFNpZ25hdHVyZSBPYmplY3QKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgZnVuY3Rpb24gOmZ1bmM6YGluc3BlY3Quc2lnbmF0dXJlYCBtYWtlcyBpbnRyb3NwZWN0aW9uIG9mIHB5dGhvbgorY2FsbGFibGVzIGVhc3kgYW5kIHN0cmFpZ2h0Zm9yd2FyZC4gIEEgYnJvYWQgcmFuZ2Ugb2YgY2FsbGFibGVzIGlzIHN1cHBvcnRlZDoKK3B5dGhvbiBmdW5jdGlvbnMsIGRlY29yYXRlZCBvciBub3QsIGNsYXNzZXMsIGFuZCA6ZnVuYzpgZnVuY3Rvb2xzLnBhcnRpYWxgCitvYmplY3RzLiAgTmV3IGNsYXNzZXMgOmNsYXNzOmBpbnNwZWN0LlNpZ25hdHVyZWAsIDpjbGFzczpgaW5zcGVjdC5QYXJhbWV0ZXJgCithbmQgOmNsYXNzOmBpbnNwZWN0LkJvdW5kQXJndW1lbnRzYCBob2xkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYWxsIHNpZ25hdHVyZXMsCitzdWNoIGFzLCBhbm5vdGF0aW9ucywgZGVmYXVsdCB2YWx1ZXMsIHBhcmFtZXRlcnMga2luZHMsIGFuZCBib3VuZCBhcmd1bWVudHMsCit3aGljaCBjb25zaWRlcmFibHkgc2ltcGxpZmllcyB3cml0aW5nIGRlY29yYXRvcnMgYW5kIGFueSBjb2RlIHRoYXQgdmFsaWRhdGVzCitvciBhbWVuZHMgY2FsbGluZyBzaWduYXR1cmVzIG9yIGFyZ3VtZW50cy4KKworLi4gc2VlYWxzbzo6CisKKyAgIDpwZXA6YDM2MmA6IC0gIEZ1bmN0aW9uIFNpZ25hdHVyZSBPYmplY3QKKyAgICAgIFBFUCB3cml0dGVuIGJ5IEJyZXR0IENhbm5vbiwgWXVyeSBTZWxpdmFub3YsIExhcnJ5IEhhc3RpbmdzLCBKaXdvbiBTZW87CisgICAgICBpbXBsZW1lbnRlZCBieSBZdXJ5IFNlbGl2YW5vdi4KKworCitQRVAgNDIxOiBBZGRpbmcgc3lzLmltcGxlbWVudGF0aW9uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0EgbmV3IGF0dHJpYnV0ZSBvbiB0aGUgOm1vZDpgc3lzYCBtb2R1bGUgZXhwb3NlcyBkZXRhaWxzIHNwZWNpZmljIHRvIHRoZQoraW1wbGVtZW50YXRpb24gb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGludGVycHJldGVyLiAgVGhlIGluaXRpYWwgc2V0IG9mCithdHRyaWJ1dGVzIG9uIDphdHRyOmBzeXMuaW1wbGVtZW50YXRpb25gIGFyZSBgYG5hbWVgYCwgYGB2ZXJzaW9uYGAsCitgYGhleHZlcnNpb25gYCwgYW5kIGBgY2FjaGVfdGFnYGAuCisKK1RoZSBpbnRlbnRpb24gb2YgYGBzeXMuaW1wbGVtZW50YXRpb25gYCBpcyB0byBjb25zb2xpZGF0ZSBpbnRvIG9uZSBuYW1lc3BhY2UKK3RoZSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBkYXRhIHVzZWQgYnkgdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBUaGlzIGFsbG93cworZGlmZmVyZW50IFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgdG8gc2hhcmUgYSBzaW5nbGUgc3RhbmRhcmQgbGlicmFyeSBjb2RlIGJhc2UKK211Y2ggbW9yZSBlYXNpbHkuICBJbiBpdHMgaW5pdGlhbCBzdGF0ZSwgYGBzeXMuaW1wbGVtZW50YXRpb25gYCBob2xkcyBvbmx5IGEKK3NtYWxsIHBvcnRpb24gb2YgdGhlIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIGRhdGEuICBPdmVyIHRpbWUgdGhhdCByYXRpbyB3aWxsCitzaGlmdCBpbiBvcmRlciB0byBtYWtlIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG1vcmUgcG9ydGFibGUuCisKK09uZSBleGFtcGxlIG9mIGltcHJvdmVkIHN0YW5kYXJkIGxpYnJhcnkgcG9ydGFiaWxpdHkgaXMgYGBjYWNoZV90YWdgYC4gIEFzIG9mCitQeXRob24gMy4zLCBgYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgYCBpcyB1c2VkIGJ5IDptb2Q6YGltcG9ydGxpYmAgdG8KK3N1cHBvcnQgOnBlcDpgMzE0N2AgY29tcGxpYW5jZS4gIEFueSBQeXRob24gaW1wbGVtZW50YXRpb24gdGhhdCB1c2VzCitgYGltcG9ydGxpYmBgIGZvciBpdHMgYnVpbHQtaW4gaW1wb3J0IHN5c3RlbSBtYXkgdXNlIGBgY2FjaGVfdGFnYGAgdG8gY29udHJvbAordGhlIGNhY2hpbmcgYmVoYXZpb3IgZm9yIG1vZHVsZXMuCisKK1NpbXBsZU5hbWVzcGFjZQorLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYHN5cy5pbXBsZW1lbnRhdGlvbmBgIGFsc28gaW50cm9kdWNlcyBhIG5ldyB0eXBlIHRvCitQeXRob246IDpjbGFzczpgdHlwZXMuU2ltcGxlTmFtZXNwYWNlYC4gIEluIGNvbnRyYXN0IHRvIGEgbWFwcGluZy1iYXNlZAorbmFtZXNwYWNlLCBsaWtlIDpjbGFzczpgZGljdGAsIGBgU2ltcGxlTmFtZXNwYWNlYGAgaXMgYXR0cmlidXRlLWJhc2VkLCBsaWtlCis6Y2xhc3M6YG9iamVjdGAuICBIb3dldmVyLCB1bmxpa2UgYGBvYmplY3RgYCwgYGBTaW1wbGVOYW1lc3BhY2VgYCBpbnN0YW5jZXMKK2FyZSB3cml0YWJsZS4gIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIGFkZCwgcmVtb3ZlLCBhbmQgbW9kaWZ5IHRoZSBuYW1lc3BhY2UKK3Rocm91Z2ggbm9ybWFsIGF0dHJpYnV0ZSBhY2Nlc3MuCisKKy4uIHNlZWFsc286OgorCisgICA6cGVwOmA0MjFgIC0gQWRkaW5nIHN5cy5pbXBsZW1lbnRhdGlvbgorICAgICAgUEVQIHdyaXR0ZW4gYW5kIGltcGxlbWVudGVkIGJ5IEVyaWMgU25vdy4KKworCisuLiBfaW1wb3J0bGliOgorCitVc2luZyBpbXBvcnRsaWIgYXMgdGhlIEltcGxlbWVudGF0aW9uIG9mIEltcG9ydAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzppc3N1ZTpgMjM3N2AgLSBSZXBsYWNlIF9faW1wb3J0X18gdy8gaW1wb3J0bGliLl9faW1wb3J0X18KKzppc3N1ZTpgMTM5NTlgIC0gUmUtaW1wbGVtZW50IHBhcnRzIG9mIDptb2Q6YGltcGAgaW4gcHVyZSBQeXRob24KKzppc3N1ZTpgMTQ2MDVgIC0gTWFrZSBpbXBvcnQgbWFjaGluZXJ5IGV4cGxpY2l0Cis6aXNzdWU6YDE0NjQ2YCAtIFJlcXVpcmUgbG9hZGVycyBzZXQgX19sb2FkZXJfXyBhbmQgX19wYWNrYWdlX18KKworVGhlIDpmdW5jOmBfX2ltcG9ydF9fYCBmdW5jdGlvbiBpcyBub3cgcG93ZXJlZCBieSA6ZnVuYzpgaW1wb3J0bGliLl9faW1wb3J0X19gLgorVGhpcyB3b3JrIGxlYWRzIHRvIHRoZSBjb21wbGV0aW9uIG9mICJwaGFzZSAyIiBvZiA6cGVwOmAzMDJgLiBUaGVyZSBhcmUKK211bHRpcGxlIGJlbmVmaXRzIHRvIHRoaXMgY2hhbmdlLiBGaXJzdCwgaXQgaGFzIGFsbG93ZWQgZm9yIG1vcmUgb2YgdGhlCittYWNoaW5lcnkgcG93ZXJpbmcgaW1wb3J0IHRvIGJlIGV4cG9zZWQgaW5zdGVhZCBvZiBiZWluZyBpbXBsaWNpdCBhbmQgaGlkZGVuCit3aXRoaW4gdGhlIEMgY29kZS4gSXQgYWxzbyBwcm92aWRlcyBhIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIFB5dGhvbiBWTXMKK3N1cHBvcnRpbmcgUHl0aG9uIDMuMyB0byB1c2UsIGhlbHBpbmcgdG8gZW5kIGFueSBWTS1zcGVjaWZpYyBkZXZpYXRpb25zIGluCitpbXBvcnQgc2VtYW50aWNzLiBBbmQgZmluYWxseSBpdCBlYXNlcyB0aGUgbWFpbnRlbmFuY2Ugb2YgaW1wb3J0LCBhbGxvd2luZyBmb3IKK2Z1dHVyZSBncm93dGggdG8gb2NjdXIuCisKK0ZvciB0aGUgY29tbW9uIHVzZXIsIHRoZXJlIHNob3VsZCBiZSBubyB2aXNpYmxlIGNoYW5nZSBpbiBzZW1hbnRpY3MuICBGb3IKK3Rob3NlIHdob3NlIGNvZGUgY3VycmVudGx5IG1hbmlwdWxhdGVzIGltcG9ydCBvciBjYWxscyBpbXBvcnQKK3Byb2dyYW1tYXRpY2FsbHksIHRoZSBjb2RlIGNoYW5nZXMgdGhhdCBtaWdodCBwb3NzaWJseSBiZSByZXF1aXJlZCBhcmUgY292ZXJlZAoraW4gdGhlIGBQb3J0aW5nIFB5dGhvbiBjb2RlYF8gc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50LgorCitOZXcgQVBJcworLS0tLS0tLS0KK09uZSBvZiB0aGUgbGFyZ2UgYmVuZWZpdHMgb2YgdGhpcyB3b3JrIGlzIHRoZSBleHBvc3VyZSBvZiB3aGF0IGdvZXMgaW50bworbWFraW5nIHRoZSBpbXBvcnQgc3RhdGVtZW50IHdvcmsuIFRoYXQgbWVhbnMgdGhlIHZhcmlvdXMgaW1wb3J0ZXJzIHRoYXQgd2VyZQorb25jZSBpbXBsaWNpdCBhcmUgbm93IGZ1bGx5IGV4cG9zZWQgYXMgcGFydCBvZiB0aGUgOm1vZDpgaW1wb3J0bGliYCBwYWNrYWdlLgorCitUaGUgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGRlZmluZWQgaW4gOm1vZDpgaW1wb3J0bGliLmFiY2AgaGF2ZSBiZWVuIGV4cGFuZGVkCit0byBwcm9wZXJseSBkZWxpbmVhdGUgYmV0d2VlbiA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YAorYW5kIDp0ZXJtOmBwYXRoIGVudHJ5IGZpbmRlcnMgPHBhdGggZW50cnkgZmluZGVyPmAgYnkgaW50cm9kdWNpbmcKKzpjbGFzczpgaW1wb3J0bGliLmFiYy5NZXRhUGF0aEZpbmRlcmAgYW5kCis6Y2xhc3M6YGltcG9ydGxpYi5hYmMuUGF0aEVudHJ5RmluZGVyYCwgcmVzcGVjdGl2ZWx5LiBUaGUgb2xkIEFCQyBvZgorOmNsYXNzOmBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgaXMgbm93IG9ubHkgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CithbmQgZG9lcyBub3QgZW5mb3JjZSBhbnkgbWV0aG9kIHJlcXVpcmVtZW50cy4KKworSW4gdGVybXMgb2YgZmluZGVycywgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXJgIGV4cG9zZXMgdGhlCittZWNoYW5pc20gdXNlZCB0byBzZWFyY2ggZm9yIHNvdXJjZSBhbmQgYnl0ZWNvZGUgZmlsZXMgb2YgYSBtb2R1bGUuIFByZXZpb3VzbHkKK3RoaXMgY2xhc3Mgd2FzIGFuIGltcGxpY2l0IG1lbWJlciBvZiA6YXR0cjpgc3lzLnBhdGhfaG9va3NgLgorCitGb3IgbG9hZGVycywgdGhlIG5ldyBhYnN0cmFjdCBiYXNlIGNsYXNzIDpjbGFzczpgaW1wb3J0bGliLmFiYy5GaWxlTG9hZGVyYCBoZWxwcword3JpdGUgYSBsb2FkZXIgdGhhdCB1c2VzIHRoZSBmaWxlIHN5c3RlbSBhcyB0aGUgc3RvcmFnZSBtZWNoYW5pc20gZm9yIGEgbW9kdWxlJ3MKK2NvZGUuIFRoZSBsb2FkZXIgZm9yIHNvdXJjZSBmaWxlcworKDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyYCksIHNvdXJjZWxlc3MgYnl0ZWNvZGUgZmlsZXMKKyg6Y2xhc3M6YGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXJgKSwgYW5kIGV4dGVuc2lvbiBtb2R1bGVzCisoOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgKSBhcmUgbm93IGF2YWlsYWJsZSBmb3IKK2RpcmVjdCB1c2UuCisKKzpleGM6YEltcG9ydEVycm9yYCBub3cgaGFzIGBgbmFtZWBgIGFuZCBgYHBhdGhgYCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBzZXQgd2hlbgordGhlcmUgaXMgcmVsZXZhbnQgZGF0YSB0byBwcm92aWRlLiBUaGUgbWVzc2FnZSBmb3IgZmFpbGVkIGltcG9ydHMgd2lsbCBhbHNvCitwcm92aWRlIHRoZSBmdWxsIG5hbWUgb2YgdGhlIG1vZHVsZSBub3cgaW5zdGVhZCBvZiBqdXN0IHRoZSB0YWlsIGVuZCBvZiB0aGUKK21vZHVsZSdzIG5hbWUuCisKK1RoZSA6ZnVuYzpgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzYCBmdW5jdGlvbiB3aWxsIG5vdyBjYWxsIHRoZSBtZXRob2Qgd2l0aAordGhlIHNhbWUgbmFtZSBvbiBhbGwgZmluZGVycyBjYWNoZWQgaW4gOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCB0byBoZWxwCitjbGVhbiB1cCBhbnkgc3RvcmVkIHN0YXRlIGFzIG5lY2Vzc2FyeS4KKworVmlzaWJsZSBDaGFuZ2VzCistLS0tLS0tLS0tLS0tLS0KKworRm9yIHBvdGVudGlhbCByZXF1aXJlZCBjaGFuZ2VzIHRvIGNvZGUsIHNlZSB0aGUgYFBvcnRpbmcgUHl0aG9uIGNvZGVgXworc2VjdGlvbi4KKworQmV5b25kIHRoZSBleHBhbnNlIG9mIHdoYXQgOm1vZDpgaW1wb3J0bGliYCBub3cgZXhwb3NlcywgdGhlcmUgYXJlIG90aGVyCit2aXNpYmxlIGNoYW5nZXMgdG8gaW1wb3J0LiBUaGUgYmlnZ2VzdCBpcyB0aGF0IDphdHRyOmBzeXMubWV0YV9wYXRoYCBhbmQKKzphdHRyOmBzeXMucGF0aF9ob29rc2Agbm93IHN0b3JlIGFsbCBvZiB0aGUgbWV0YSBwYXRoIGZpbmRlcnMgYW5kIHBhdGggZW50cnkKK2hvb2tzIHVzZWQgYnkgaW1wb3J0LiAgUHJldmlvdXNseSB0aGUgZmluZGVycyB3ZXJlIGltcGxpY2l0IGFuZCBoaWRkZW4gd2l0aGluCit0aGUgQyBjb2RlIG9mIGltcG9ydCBpbnN0ZWFkIG9mIGJlaW5nIGRpcmVjdGx5IGV4cG9zZWQuIFRoaXMgbWVhbnMgdGhhdCBvbmUgY2FuCitub3cgZWFzaWx5IHJlbW92ZSBvciBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSB2YXJpb3VzIGZpbmRlcnMgdG8gZml0IG9uZSdzIG5lZWRzLgorCitBbm90aGVyIGNoYW5nZSBpcyB0aGF0IGFsbCBtb2R1bGVzIGhhdmUgYSBgYF9fbG9hZGVyX19gYCBhdHRyaWJ1dGUsIHN0b3JpbmcgdGhlCitsb2FkZXIgdXNlZCB0byBjcmVhdGUgdGhlIG1vZHVsZS4gOnBlcDpgMzAyYCBoYXMgYmVlbiB1cGRhdGVkIHRvIG1ha2UgdGhpcworYXR0cmlidXRlIG1hbmRhdG9yeSBmb3IgbG9hZGVycyB0byBpbXBsZW1lbnQsIHNvIGluIHRoZSBmdXR1cmUgb25jZSAzcmQtcGFydHkKK2xvYWRlcnMgaGF2ZSBiZWVuIHVwZGF0ZWQgcGVvcGxlIHdpbGwgYmUgYWJsZSB0byByZWx5IG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlCithdHRyaWJ1dGUuIFVudGlsIHN1Y2ggdGltZSwgdGhvdWdoLCBpbXBvcnQgaXMgc2V0dGluZyB0aGUgbW9kdWxlIHBvc3QtbG9hZC4KKworTG9hZGVycyBhcmUgYWxzbyBub3cgZXhwZWN0ZWQgdG8gc2V0IHRoZSBgYF9fcGFja2FnZV9fYGAgYXR0cmlidXRlIGZyb20KKzpwZXA6YDM2NmAuIE9uY2UgYWdhaW4sIGltcG9ydCBpdHNlbGYgaXMgYWxyZWFkeSBzZXR0aW5nIHRoaXMgb24gYWxsIGxvYWRlcnMKK2Zyb20gOm1vZDpgaW1wb3J0bGliYCBhbmQgaW1wb3J0IGl0c2VsZiBpcyBzZXR0aW5nIHRoZSBhdHRyaWJ1dGUgcG9zdC1sb2FkLgorCitgYE5vbmVgYCBpcyBub3cgaW5zZXJ0ZWQgaW50byA6YXR0cjpgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgIHdoZW4gbm8gZmluZGVyCitjYW4gYmUgZm91bmQgb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYC4gU2luY2UgOmNsYXNzOmBpbXAuTnVsbEltcG9ydGVyYCBpcyBub3QKK2RpcmVjdGx5IGV4cG9zZWQgb24gOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBpdCBjb3VsZCBubyBsb25nZXIgYmUgcmVsaWVkIHVwb24gdG8KK2Fsd2F5cyBiZSBhdmFpbGFibGUgdG8gdXNlIGFzIGEgdmFsdWUgcmVwcmVzZW50aW5nIG5vIGZpbmRlciBmb3VuZC4KKworQWxsIG90aGVyIGNoYW5nZXMgcmVsYXRlIHRvIHNlbWFudGljIGNoYW5nZXMgd2hpY2ggc2hvdWxkIGJlIHRha2VuIGludG8KK2NvbnNpZGVyYXRpb24gd2hlbiB1cGRhdGluZyBjb2RlIGZvciBQeXRob24gMy4zLCBhbmQgdGh1cyBzaG91bGQgYmUgcmVhZCBhYm91dAoraW4gdGhlIGBQb3J0aW5nIFB5dGhvbiBjb2RlYF8gc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50LgorCisoSW1wbGVtZW50YXRpb24gYnkgQnJldHQgQ2Fubm9uKQorCisKK090aGVyIExhbmd1YWdlIENoYW5nZXMKKz09PT09PT09PT09PT09PT09PT09PT0KKworU29tZSBzbWFsbGVyIGNoYW5nZXMgbWFkZSB0byB0aGUgY29yZSBQeXRob24gbGFuZ3VhZ2UgYXJlOgorCisqIEFkZGVkIHN1cHBvcnQgZm9yIFVuaWNvZGUgbmFtZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuCisgIEJvdGggOmZ1bmM6YHVuaWNvZGVkYXRhLmxvb2t1cCgpYCBhbmQgYGAnXE57Li4ufSdgYCBub3cgcmVzb2x2ZSBuYW1lIGFsaWFzZXMsCisgIGFuZCA6ZnVuYzpgdW5pY29kZWRhdGEubG9va3VwKClgIHJlc29sdmVzIG5hbWVkIHNlcXVlbmNlcyB0b28uCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDEyNzUzYCkKKworKiBVbmljb2RlIGRhdGFiYXNlIHVwZGF0ZWQgdG8gVUNEIHZlcnNpb24gNi4xLjAKKworKiBFcXVhbGl0eSBjb21wYXJpc29ucyBvbiA6ZnVuYzpgcmFuZ2VgIG9iamVjdHMgbm93IHJldHVybiBhIHJlc3VsdCByZWZsZWN0aW5nCisgIHRoZSBlcXVhbGl0eSBvZiB0aGUgdW5kZXJseWluZyBzZXF1ZW5jZXMgZ2VuZXJhdGVkIGJ5IHRob3NlIHJhbmdlIG9iamVjdHMuCisgICg6aXNzdWU6YDEzMjAxYCkKKworKiBUaGUgYGBjb3VudCgpYGAsIGBgZmluZCgpYGAsIGBgcmZpbmQoKWBgLCBgYGluZGV4KClgYCBhbmQgYGByaW5kZXgoKWBgCisgIG1ldGhvZHMgb2YgOmNsYXNzOmBieXRlc2AgYW5kIDpjbGFzczpgYnl0ZWFycmF5YCBvYmplY3RzIG5vdyBhY2NlcHQgYW4KKyAgaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDI1NSBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KKworICAoQ29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4gaW4gOmlzc3VlOmAxMjE3MGApCisKKyogVGhlIGBgcmp1c3QoKWBgLCBgYGxqdXN0KClgYCwgYW5kIGBgY2VudGVyKClgYCBtZXRob2RzIG9mIDpjbGFzczpgYnl0ZXNgCisgIGFuZCA6Y2xhc3M6YGJ5dGVhcnJheWAgbm93IGFjY2VwdCBhIDpjbGFzczpgYnl0ZWFycmF5YCBmb3IgdGhlIGBgZmlsbGBgCisgIGFyZ3VtZW50LiAgKENvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuIGluIDppc3N1ZTpgMTIzODBgLikKKworKiBOZXcgbWV0aG9kcyBoYXZlIGJlZW4gYWRkZWQgdG8gOmNsYXNzOmBsaXN0YCBhbmQgOmNsYXNzOmBieXRlYXJyYXlgOgorICBgYGNvcHkoKWBgIGFuZCBgYGNsZWFyKClgYCAoOmlzc3VlOmAxMDUxNmApLiAgQ29uc2VxdWVudGx5LAorICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlYCBub3cgYWxzbyBkZWZpbmVzIGEKKyAgOm1ldGg6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlLmNsZWFyYCBtZXRob2QgKDppc3N1ZTpgMTEzODhgKS4KKworKiBSYXcgYnl0ZXMgbGl0ZXJhbHMgY2FuIG5vdyBiZSB3cml0dGVuIGBgcmIiLi4uImBgIGFzIHdlbGwgYXMgYGBiciIuLi4iYGAuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM3NDhgLikKKworKiA6bWV0aDpgZGljdC5zZXRkZWZhdWx0YCBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksIG1ha2luZworICBpdCBhdG9taWMgd2hlbiB1c2VkIHdpdGggYnVpbHQtaW4gdHlwZXMuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kgaW4gOmlzc3VlOmAxMzUyMWAuKQorCisqIFRoZSBlcnJvciBtZXNzYWdlcyBwcm9kdWNlZCB3aGVuIGEgZnVuY3Rpb24gY2FsbCBkb2VzIG5vdCBtYXRjaCB0aGUgZnVuY3Rpb24KKyAgc2lnbmF0dXJlIGhhdmUgYmVlbiBzaWduaWZpY2FudGx5IGltcHJvdmVkLgorCisgIChDb250cmlidXRlZCBieSBCZW5qYW1pbiBQZXRlcnNvbi4pCisKKworQSBGaW5lci1HcmFpbmVkIEltcG9ydCBMb2NrCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUHJldmlvdXMgdmVyc2lvbnMgb2YgQ1B5dGhvbiBoYXZlIGFsd2F5cyByZWxpZWQgb24gYSBnbG9iYWwgaW1wb3J0IGxvY2suCitUaGlzIGxlZCB0byB1bmV4cGVjdGVkIGFubm95YW5jZXMsIHN1Y2ggYXMgZGVhZGxvY2tzIHdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlCit3b3VsZCB0cmlnZ2VyIGNvZGUgZXhlY3V0aW9uIGluIGEgZGlmZmVyZW50IHRocmVhZCBhcyBhIHNpZGUtZWZmZWN0LgorQ2x1bXN5IHdvcmthcm91bmRzIHdlcmUgc29tZXRpbWVzIGVtcGxveWVkLCBzdWNoIGFzIHRoZQorOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9ja2AgQyBBUEkgZnVuY3Rpb24uCisKK0luIFB5dGhvbiAzLjMsIGltcG9ydGluZyBhIG1vZHVsZSB0YWtlcyBhIHBlci1tb2R1bGUgbG9jay4gIFRoaXMgY29ycmVjdGx5CitzZXJpYWxpemVzIGltcG9ydGF0aW9uIG9mIGEgZ2l2ZW4gbW9kdWxlIGZyb20gbXVsdGlwbGUgdGhyZWFkcyAocHJldmVudGluZwordGhlIGV4cG9zdXJlIG9mIGluY29tcGxldGVseSBpbml0aWFsaXplZCBtb2R1bGVzKSwgd2hpbGUgZWxpbWluYXRpbmcgdGhlCithZm9yZW1lbnRpb25lZCBhbm5veWFuY2VzLgorCisoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmA5MjYwYC4pCisKKworQnVpbHRpbiBmdW5jdGlvbnMgYW5kIHR5cGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiA6ZnVuYzpgb3BlbmAgZ2V0cyBhIG5ldyAqb3BlbmVyKiBwYXJhbWV0ZXI6IHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvcgorICBmb3IgdGhlIGZpbGUgb2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyAqb3BlbmVyKiB3aXRoICgqZmlsZSosCisgICpmbGFncyopLiBJdCBjYW4gYmUgdXNlZCB0byB1c2UgY3VzdG9tIGZsYWdzIGxpa2UgOmRhdGE6YG9zLk9fQ0xPRVhFQ2AgZm9yCisgIGV4YW1wbGUuIFRoZSBgYCd4J2BgIG1vZGUgd2FzIGFkZGVkOiBvcGVuIGZvciBleGNsdXNpdmUgY3JlYXRpb24sIGZhaWxpbmcgaWYKKyAgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCisqIDpmdW5jOmBwcmludGA6IGFkZGVkIHRoZSAqZmx1c2gqIGtleXdvcmQgYXJndW1lbnQuIElmIHRoZSAqZmx1c2gqIGtleXdvcmQKKyAgYXJndW1lbnQgaXMgdHJ1ZSwgdGhlIHN0cmVhbSBpcyBmb3JjaWJseSBmbHVzaGVkLgorKiA6ZnVuYzpgaGFzaGA6IGhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIHNlZQorICA6bWV0aDpgb2JqZWN0Ll9faGFzaF9fYCBhbmQgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgLgorKiBUaGUgOmNsYXNzOmBzdHJgIHR5cGUgZ2V0cyBhIG5ldyA6bWV0aDpgfnN0ci5jYXNlZm9sZGAgbWV0aG9kOiByZXR1cm4gYQorICBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZywgY2FzZWZvbGRlZCBzdHJpbmdzIG1heSBiZSB1c2VkIGZvciBjYXNlbGVzcworICBtYXRjaGluZy4gRm9yIGV4YW1wbGUsIGBgJ8OfJy5jYXNlZm9sZCgpYGAgcmV0dXJucyBgYCdzcydgYC4KKyogVGhlIHNlcXVlbmNlIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gc3Vic3RhbnRpYWxseSByZXdyaXR0ZW4gdG8gYmV0dGVyCisgIGV4cGxhaW4gdGhlIGJpbmFyeS90ZXh0IHNlcXVlbmNlIGRpc3RpbmN0aW9uIGFuZCB0byBwcm92aWRlIHNwZWNpZmljCisgIGRvY3VtZW50YXRpb24gc2VjdGlvbnMgZm9yIHRoZSBpbmRpdmlkdWFsIGJ1aWx0aW4gc2VxdWVuY2UgdHlwZXMKKyAgKDppc3N1ZTpgNDk2NmApCisKKworTmV3IE1vZHVsZXMKKz09PT09PT09PT09CisKK2ZhdWx0aGFuZGxlcgorLS0tLS0tLS0tLS0tCisKK1RoaXMgbmV3IGRlYnVnIG1vZHVsZSA6bW9kOmBmYXVsdGhhbmRsZXJgIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBkdW1wIFB5dGhvbiB0cmFjZWJhY2tzIGV4cGxpY2l0bHksCitvbiBhIGZhdWx0IChhIGNyYXNoIGxpa2UgYSBzZWdtZW50YXRpb24gZmF1bHQpLCBhZnRlciBhIHRpbWVvdXQsIG9yIG9uIGEgdXNlcgorc2lnbmFsLiBDYWxsIDpmdW5jOmBmYXVsdGhhbmRsZXIuZW5hYmxlYCB0byBpbnN0YWxsIGZhdWx0IGhhbmRsZXJzIGZvciB0aGUKKzpjb25zdDpgU0lHU0VHVmAsIDpjb25zdDpgU0lHRlBFYCwgOmNvbnN0OmBTSUdBQlJUYCwgOmNvbnN0OmBTSUdCVVNgLCBhbmQKKzpjb25zdDpgU0lHSUxMYCBzaWduYWxzLiBZb3UgY2FuIGFsc28gZW5hYmxlIHRoZW0gYXQgc3RhcnR1cCBieSBzZXR0aW5nIHRoZQorOmVudnZhcjpgUFlUSE9ORkFVTFRIQU5ETEVSYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvciBieSB1c2luZyA6b3B0aW9uOmAtWGAKK2BgZmF1bHRoYW5kbGVyYGAgY29tbWFuZCBsaW5lIG9wdGlvbi4KKworRXhhbXBsZSBvZiBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvbiBMaW51eDogOjoKKworICAgICQgcHl0aG9uIC1xIC1YIGZhdWx0aGFuZGxlcgorICAgID4+PiBpbXBvcnQgY3R5cGVzCisgICAgPj4+IGN0eXBlcy5zdHJpbmdfYXQoMCkKKyAgICBGYXRhbCBQeXRob24gZXJyb3I6IFNlZ21lbnRhdGlvbiBmYXVsdAorCisgICAgQ3VycmVudCB0aHJlYWQgMHgwMDAwN2ZiODk5ZjM5NzAwOgorICAgICAgRmlsZSAiL2hvbWUvcHl0aG9uL2NweXRob24vTGliL2N0eXBlcy9fX2luaXRfXy5weSIsIGxpbmUgNDg2IGluIHN0cmluZ19hdAorICAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSBpbiA8bW9kdWxlPgorICAgIFNlZ21lbnRhdGlvbiBmYXVsdAorCisKK2lwYWRkcmVzcworLS0tLS0tLS0tCisKK1RoZSBuZXcgOm1vZDpgaXBhZGRyZXNzYCBtb2R1bGUgcHJvdmlkZXMgdG9vbHMgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcKK29iamVjdHMgcmVwcmVzZW50aW5nIElQdjQgYW5kIElQdjYgYWRkcmVzc2VzLCBuZXR3b3JrcyBhbmQgaW50ZXJmYWNlcyAoaS5lLgorYW4gSVAgYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBJUCBzdWJuZXQpLgorCisoQ29udHJpYnV0ZWQgYnkgR29vZ2xlIGFuZCBQZXRlciBNb29keSBpbiA6cGVwOmAzMTQ0YCkKKworbHptYQorLS0tLQorCitUaGUgbmV3bHktYWRkZWQgOm1vZDpgbHptYWAgbW9kdWxlIHByb3ZpZGVzIGRhdGEgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24KK3VzaW5nIHRoZSBMWk1BIGFsZ29yaXRobSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIHRoZSBgYC54emBgIGFuZCBgYC5sem1hYGAKK2ZpbGUgZm9ybWF0cy4KKworKENvbnRyaWJ1dGVkIGJ5IE5hZGVlbSBWYXdkYSBhbmQgUGVyIMOYeXZpbmQgS2FybHNlbiBpbiA6aXNzdWU6YDY3MTVgKQorCisKK0ltcHJvdmVkIE1vZHVsZXMKKz09PT09PT09PT09PT09PT0KKworYWJjCistLS0KKworSW1wcm92ZWQgc3VwcG9ydCBmb3IgYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGNvbnRhaW5pbmcgZGVzY3JpcHRvcnMgY29tcG9zZWQgd2l0aAorYWJzdHJhY3QgbWV0aG9kcy4gVGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoIHRvIGRlY2xhcmluZyBhYnN0cmFjdCBkZXNjcmlwdG9ycyBpcworbm93IHRvIHByb3ZpZGUgOmF0dHI6YF9faXNhYnN0cmFjdG1ldGhvZF9fYCBhcyBhIGR5bmFtaWNhbGx5IHVwZGF0ZWQKK3Byb3BlcnR5LiBUaGUgYnVpbHQtaW4gZGVzY3JpcHRvcnMgaGF2ZSBiZWVuIHVwZGF0ZWQgYWNjb3JkaW5nbHkuCisKKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHByb3BlcnR5YCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgOmNsYXNzOmBwcm9wZXJ0eWAKKyAgICB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBjbGFzc21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YHN0YXRpY21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorCisoQ29udHJpYnV0ZWQgYnkgRGFycmVuIERhbGUgaW4gOmlzc3VlOmAxMTYxMGApCisKKzptZXRoOmBhYmMuQUJDTWV0YS5yZWdpc3RlcmAgbm93IHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgc3ViY2xhc3MsIHdoaWNoIG1lYW5zCitpdCBjYW4gbm93IGJlIHVzZWQgYXMgYSBjbGFzcyBkZWNvcmF0b3IgKDppc3N1ZTpgMTA4NjhgKS4KKworCithcnJheQorLS0tLS0KKworVGhlIDptb2Q6YGFycmF5YCBtb2R1bGUgc3VwcG9ydHMgdGhlIDpjOnR5cGU6YGxvbmcgbG9uZ2AgdHlwZSB1c2luZyBgYHFgYCBhbmQKK2BgUWBgIHR5cGUgY29kZXMuCisKKyhDb250cmlidXRlZCBieSBPcmVuIFRpcm9zaCBhbmQgSGlyb2thenUgWWFtYW1vdG8gaW4gOmlzc3VlOmAxMTcyNzExYCkKKworCitiYXNlNjQKKy0tLS0tLQorCitBU0NJSS1vbmx5IFVuaWNvZGUgc3RyaW5ncyBhcmUgbm93IGFjY2VwdGVkIGJ5IHRoZSBkZWNvZGluZyBmdW5jdGlvbnMgb2YgdGhlCis6bW9kOmBiYXNlNjRgIG1vZGVybiBpbnRlcmZhY2UuIEZvciBleGFtcGxlLCBgYGJhc2U2NC5iNjRkZWNvZGUoJ1lXSmonKWBgCityZXR1cm5zIGBgYidhYmMnYGAuICAoQ29udHJpYnV0ZWQgYnkgQ2F0YWxpbiBJYWNvYiBpbiA6aXNzdWU6YDEzNjQxYC4pCisKKworYmluYXNjaWkKKy0tLS0tLS0tCisKK0luIGFkZGl0aW9uIHRvIHRoZSBiaW5hcnkgb2JqZWN0cyB0aGV5IG5vcm1hbGx5IGFjY2VwdCwgdGhlIGBgYTJiX2BgIGZ1bmN0aW9ucworbm93IGFsbCBhbHNvIGFjY2VwdCBBU0NJSS1vbmx5IHN0cmluZ3MgYXMgaW5wdXQuICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZQorUGl0cm91IGluIDppc3N1ZTpgMTM2MzdgLikKKworCitiejIKKy0tLQorCitUaGUgOm1vZDpgYnoyYCBtb2R1bGUgaGFzIGJlZW4gcmV3cml0dGVuIGZyb20gc2NyYXRjaC4gSW4gdGhlIHByb2Nlc3MsIHNldmVyYWwKK25ldyBmZWF0dXJlcyBoYXZlIGJlZW4gYWRkZWQ6CisKKyogTmV3IDpmdW5jOmBiejIub3BlbmAgZnVuY3Rpb246IG9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yCisgIHRleHQgbW9kZS4KKworKiA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBjYW4gbm93IHJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gYXJiaXRyYXJ5IGZpbGUtbGlrZQorICBvYmplY3RzLCBieSBtZWFucyBvZiBpdHMgY29uc3RydWN0b3IncyAqZmlsZW9iaiogYXJndW1lbnQuCisKKyAgKENvbnRyaWJ1dGVkIGJ5IE5hZGVlbSBWYXdkYSBpbiA6aXNzdWU6YDU4NjNgKQorCisqIDpjbGFzczpgYnoyLkJaMkZpbGVgIGFuZCA6ZnVuYzpgYnoyLmRlY29tcHJlc3NgIGNhbiBub3cgZGVjb21wcmVzcworICBtdWx0aS1zdHJlYW0gaW5wdXRzIChzdWNoIGFzIHRob3NlIHByb2R1Y2VkIGJ5IHRoZSA6cHJvZ3JhbTpgcGJ6aXAyYCB0b29sKS4KKyAgOmNsYXNzOmBiejIuQloyRmlsZWAgY2FuIG5vdyBhbHNvIGJlIHVzZWQgdG8gY3JlYXRlIHRoaXMgdHlwZSBvZiBmaWxlLCB1c2luZworICB0aGUgYGAnYSdgYCAoYXBwZW5kKSBtb2RlLgorCisgIChDb250cmlidXRlZCBieSBOaXIgQWlkZXMgaW4gOmlzc3VlOmAxNjI1YCkKKworKiA6Y2xhc3M6YGJ6Mi5CWjJGaWxlYCBub3cgaW1wbGVtZW50cyBhbGwgb2YgdGhlIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIEFQSSwKKyAgZXhjZXB0IGZvciB0aGUgOm1ldGg6YGRldGFjaGAgYW5kIDptZXRoOmB0cnVuY2F0ZWAgbWV0aG9kcy4KKworCitjb2RlY3MKKy0tLS0tLQorCitUaGUgOm1vZDpgfmVuY29kaW5ncy5tYmNzYCBjb2RlYyBoYXMgYmVlbiByZXdyaXR0ZW4gdG8gaGFuZGxlIGNvcnJlY3RseQorYGByZXBsYWNlYGAgYW5kIGBgaWdub3JlYGAgZXJyb3IgaGFuZGxlcnMgb24gYWxsIFdpbmRvd3MgdmVyc2lvbnMuICBUaGUKKzptb2Q6YH5lbmNvZGluZ3MubWJjc2AgY29kZWMgbm93IHN1cHBvcnRzIGFsbCBlcnJvciBoYW5kbGVycywgaW5zdGVhZCBvZiBvbmx5CitgYHJlcGxhY2VgYCB0byBlbmNvZGUgYW5kIGBgaWdub3JlYGAgdG8gZGVjb2RlLgorCitBIG5ldyBXaW5kb3dzLW9ubHkgY29kZWMgaGFzIGJlZW4gYWRkZWQ6IGBgY3A2NTAwMWBgICg6aXNzdWU6YDEzMjE2YCkuIEl0IGlzIHRoZQorV2luZG93cyBjb2RlIHBhZ2UgNjUwMDEgKFdpbmRvd3MgVVRGLTgsIGBgQ1BfVVRGOGBgKS4gIEZvciBleGFtcGxlLCBpdCBpcyB1c2VkCitieSBgYHN5cy5zdGRvdXRgYCBpZiB0aGUgY29uc29sZSBvdXRwdXQgY29kZSBwYWdlIGlzIHNldCB0byBjcDY1MDAxIChlLmcuLCB1c2luZworYGBjaGNwIDY1MDAxYGAgY29tbWFuZCkuCisKK011bHRpYnl0ZSBDSksgZGVjb2RlcnMgbm93IHJlc3luY2hyb25pemUgZmFzdGVyLiAgVGhleSBvbmx5IGlnbm9yZSB0aGUgZmlyc3QKK2J5dGUgb2YgYW4gaW52YWxpZCBieXRlIHNlcXVlbmNlLiBGb3IgZXhhbXBsZSwgYGBiJ1x4ZmZcbicuZGVjb2RlKCdnYjIzMTInLAorJ3JlcGxhY2UnKWBgIG5vdyByZXR1cm5zIGEgYGBcbmBgIGFmdGVyIHRoZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIuCisKKyg6aXNzdWU6YDEyMDE2YCkKKworSW5jcmVtZW50YWwgQ0pLIGNvZGVjIGVuY29kZXJzIGFyZSBubyBsb25nZXIgcmVzZXQgYXQgZWFjaCBjYWxsIHRvIHRoZWlyCitlbmNvZGUoKSBtZXRob2RzLiBGb3IgZXhhbXBsZTo6CisKKyAgICAkIC4vcHl0aG9uIC1xCisgICAgPj4+IGltcG9ydCBjb2RlY3MKKyAgICA+Pj4gZW5jb2RlciA9IGNvZGVjcy5nZXRpbmNyZW1lbnRhbGVuY29kZXIoJ2h6JykoJ3N0cmljdCcpCisgICAgPj4+IGInJy5qb2luKGVuY29kZXIuZW5jb2RlKHgpIGZvciB4IGluICdcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDIgQnllLicpCisgICAgYid+e05wSilsNkhLISN+fSBCeWUuJworCitUaGlzIGV4YW1wbGUgZ2l2ZXMgYGBiJ357TnB+fX57Sil+fX57bDZ+fX57SEt+fX57ISN+fSBCeWUuJ2BgIHdpdGggb2xkZXIgUHl0aG9uCit2ZXJzaW9ucy4KKworKDppc3N1ZTpgMTIxMDBgKQorCitUaGUgYGB1bmljb2RlX2ludGVybmFsYGAgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworCitjb2xsZWN0aW9ucworLS0tLS0tLS0tLS0KKworQWRkaXRpb24gb2YgYSBuZXcgOmNsYXNzOmB+Y29sbGVjdGlvbnMuQ2hhaW5NYXBgIGNsYXNzIHRvIGFsbG93IHRyZWF0aW5nIGEKK251bWJlciBvZiBtYXBwaW5ncyBhcyBhIHNpbmdsZSB1bml0LiAgKFdyaXR0ZW4gYnkgUmF5bW9uZCBIZXR0aW5nZXIgZm9yCis6aXNzdWU6YDExMDg5YCwgbWFkZSBwdWJsaWMgaW4gOmlzc3VlOmAxMTI5N2ApCisKK1RoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaGF2ZSBiZWVuIG1vdmVkIGluIGEgbmV3IDptb2Q6YGNvbGxlY3Rpb25zLmFiY2AKK21vZHVsZSwgdG8gYmV0dGVyIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgYWJzdHJhY3QgYW5kIHRoZSBjb25jcmV0ZQorY29sbGVjdGlvbnMgY2xhc3Nlcy4gIEFsaWFzZXMgZm9yIEFCQ3MgYXJlIHN0aWxsIHByZXNlbnQgaW4gdGhlCis6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIHRvIHByZXNlcnZlIGV4aXN0aW5nIGltcG9ydHMuICAoOmlzc3VlOmAxMTA4NWApCisKKy4uIFhYWCBhZGRpdGlvbiBvZiBfX3Nsb3RzX18gdG8gQUJDcyBub3QgcmVjb3JkZWQgaGVyZTogaW50ZXJuYWwgZGV0YWlsCisKK1RoZSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5Db3VudGVyYCBjbGFzcyBub3cgc3VwcG9ydHMgdGhlIHVuYXJ5IGBgK2BgIGFuZCBgYC1gYAorb3BlcmF0b3JzLCBhcyB3ZWxsIGFzIHRoZSBpbi1wbGFjZSBvcGVyYXRvcnMgYGArPWBgLCBgYC09YGAsIGBgfD1gYCwgYW5kCitgYCY9YGAuICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAxMzEyMWAuKQorCisKK2NvbnRleHRsaWIKKy0tLS0tLS0tLS0KKworOmNsYXNzOmB+Y29udGV4dGxpYi5FeGl0U3RhY2tgIG5vdyBwcm92aWRlcyBhIHNvbGlkIGZvdW5kYXRpb24gZm9yCitwcm9ncmFtbWF0aWMgbWFuaXB1bGF0aW9uIG9mIGNvbnRleHQgbWFuYWdlcnMgYW5kIHNpbWlsYXIgY2xlYW51cAorZnVuY3Rpb25hbGl0eS4gVW5saWtlIHRoZSBwcmV2aW91cyBgYGNvbnRleHRsaWIubmVzdGVkYGAgQVBJICh3aGljaCB3YXMKK2RlcHJlY2F0ZWQgYW5kIHJlbW92ZWQpLCB0aGUgbmV3IEFQSSBpcyBkZXNpZ25lZCB0byB3b3JrIGNvcnJlY3RseQorcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGNvbnRleHQgbWFuYWdlcnMgYWNxdWlyZSB0aGVpciByZXNvdXJjZXMgaW4KK3RoZWlyIGBgX19pbml0X19gYCBtZXRob2QgKGZvciBleGFtcGxlLCBmaWxlIG9iamVjdHMpIG9yIGluIHRoZWlyCitgYF9fZW50ZXJfX2BgIG1ldGhvZCAoZm9yIGV4YW1wbGUsIHN5bmNocm9uaXNhdGlvbiBvYmplY3RzIGZyb20gdGhlCis6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZSkuCisKKyg6aXNzdWU6YDEzNTg1YCkKKworCitjcnlwdAorLS0tLS0KKworQWRkaXRpb24gb2Ygc2FsdCBhbmQgbW9kdWxhciBjcnlwdCBmb3JtYXQgKGhhc2hpbmcgbWV0aG9kKSBhbmQgdGhlIDpmdW5jOmB+Y3J5cHQubWtzYWx0YAorZnVuY3Rpb24gdG8gdGhlIDptb2Q6YGNyeXB0YCBtb2R1bGUuCisKKyg6aXNzdWU6YDEwOTI0YCkKKworY3Vyc2VzCistLS0tLS0KKworICogSWYgdGhlIDptb2Q6YGN1cnNlc2AgbW9kdWxlIGlzIGxpbmtlZCB0byB0aGUgbmN1cnNlc3cgbGlicmFyeSwgdXNlIFVuaWNvZGUKKyAgIGZ1bmN0aW9ucyB3aGVuIFVuaWNvZGUgc3RyaW5ncyBvciBjaGFyYWN0ZXJzIGFyZSBwYXNzZWQgKGUuZy4KKyAgIDpjOmZ1bmM6YHdhZGR3c3RyYCksIGFuZCBieXRlcyBmdW5jdGlvbnMgb3RoZXJ3aXNlIChlLmcuIDpjOmZ1bmM6YHdhZGRzdHJgKS4KKyAqIFVzZSB0aGUgbG9jYWxlIGVuY29kaW5nIGluc3RlYWQgb2YgYGB1dGYtOGBgIHRvIGVuY29kZSBVbmljb2RlIHN0cmluZ3MuCisgKiA6Y2xhc3M6YGN1cnNlcy53aW5kb3dgIGhhcyBhIG5ldyA6YXR0cjpgY3Vyc2VzLndpbmRvdy5lbmNvZGluZ2AgYXR0cmlidXRlLgorICogVGhlIDpjbGFzczpgY3Vyc2VzLndpbmRvd2AgY2xhc3MgaGFzIGEgbmV3IDptZXRoOmB+Y3Vyc2VzLndpbmRvdy5nZXRfd2NoYAorICAgbWV0aG9kIHRvIGdldCBhIHdpZGUgY2hhcmFjdGVyCisgKiBUaGUgOm1vZDpgY3Vyc2VzYCBtb2R1bGUgaGFzIGEgbmV3IDptZXRoOmB+Y3Vyc2VzLnVuZ2V0X3djaGAgZnVuY3Rpb24gdG8KKyAgIHB1c2ggYSB3aWRlIGNoYXJhY3RlciBzbyB0aGUgbmV4dCA6bWV0aDpgfmN1cnNlcy53aW5kb3cuZ2V0X3djaGAgd2lsbCByZXR1cm4KKyAgIGl0CisKKyhDb250cmlidXRlZCBieSBJw7FpZ28gU2VybmEgaW4gOmlzc3VlOmA2NzU1YCkKKworZGF0ZXRpbWUKKy0tLS0tLS0tCisKKyAqIEVxdWFsaXR5IGNvbXBhcmlzb25zIGJldHdlZW4gbmFpdmUgYW5kIGF3YXJlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYAorICAgaW5zdGFuY2VzIG5vdyByZXR1cm4gOmNvbnN0OmBGYWxzZWAgaW5zdGVhZCBvZiByYWlzaW5nIDpleGM6YFR5cGVFcnJvcmAKKyAgICg6aXNzdWU6YDE1MDA2YCkuCisgKiBOZXcgOm1ldGg6YGRhdGV0aW1lLmRhdGV0aW1lLnRpbWVzdGFtcGAgbWV0aG9kOiBSZXR1cm4gUE9TSVggdGltZXN0YW1wCisgICBjb3JyZXNwb25kaW5nIHRvIHRoZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAgaW5zdGFuY2UuCisgKiBUaGUgOm1ldGg6YGRhdGV0aW1lLmRhdGV0aW1lLnN0cmZ0aW1lYCBtZXRob2Qgc3VwcG9ydHMgZm9ybWF0dGluZyB5ZWFycworICAgb2xkZXIgdGhhbiAxMDAwLgorICogVGhlIDptZXRoOmBkYXRldGltZS5kYXRldGltZS5hc3RpbWV6b25lYCBtZXRob2QgY2FuIG5vdyBiZQorICAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIHRvIGNvbnZlcnQgZGF0ZXRpbWUgaW5zdGFuY2UgdG8gdGhlIHN5c3RlbQorICAgdGltZXpvbmUuCisKKworLi4gX25ldy1kZWNpbWFsOgorCitkZWNpbWFsCistLS0tLS0tCisKKzppc3N1ZTpgNzY1MmAgLSBpbnRlZ3JhdGUgZmFzdCBuYXRpdmUgZGVjaW1hbCBhcml0aG1ldGljLgorICAgQy1tb2R1bGUgYW5kIGxpYm1wZGVjIHdyaXR0ZW4gYnkgU3RlZmFuIEtyYWguCisKK1RoZSBuZXcgQyB2ZXJzaW9uIG9mIHRoZSBkZWNpbWFsIG1vZHVsZSBpbnRlZ3JhdGVzIHRoZSBoaWdoIHNwZWVkIGxpYm1wZGVjCitsaWJyYXJ5IGZvciBhcmJpdHJhcnkgcHJlY2lzaW9uIGNvcnJlY3RseS1yb3VuZGVkIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQKK2FyaXRobWV0aWMuIGxpYm1wZGVjIGNvbmZvcm1zIHRvIElCTSdzIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb24uCisKK1BlcmZvcm1hbmNlIGdhaW5zIHJhbmdlIGZyb20gMTB4IGZvciBkYXRhYmFzZSBhcHBsaWNhdGlvbnMgdG8gMTAweCBmb3IKK251bWVyaWNhbGx5IGludGVuc2l2ZSBhcHBsaWNhdGlvbnMuIFRoZXNlIG51bWJlcnMgYXJlIGV4cGVjdGVkIGdhaW5zCitmb3Igc3RhbmRhcmQgcHJlY2lzaW9ucyB1c2VkIGluIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYy4gU2luY2UKK3RoZSBwcmVjaXNpb24gaXMgdXNlciBjb25maWd1cmFibGUsIHRoZSBleGFjdCBmaWd1cmVzIG1heSB2YXJ5LiBGb3IgZXhhbXBsZSwKK2luIGludGVnZXIgYmlnbnVtIGFyaXRobWV0aWMgdGhlIGRpZmZlcmVuY2VzIGNhbiBiZSBzaWduaWZpY2FudGx5IGhpZ2hlci4KKworVGhlIGZvbGxvd2luZyB0YWJsZSBpcyBtZWFudCBhcyBhbiBpbGx1c3RyYXRpb24uIEJlbmNobWFya3MgYXJlIGF2YWlsYWJsZQorYXQgaHR0cDovL3d3dy5ieXRlcmVlZi5vcmcvbXBkZWNpbWFsL3F1aWNrc3RhcnQuaHRtbC4KKworICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICB8ICAgICAgICAgfCAgZGVjaW1hbC5weSB8ICAgX2RlY2ltYWwgICB8ICAgc3BlZWR1cCAgIHwKKyAgICs9PT09PT09PT0rPT09PT09PT09PT09PSs9PT09PT09PT09PT09PSs9PT09PT09PT09PT09KworICAgfCAgIHBpICAgIHwgICAgNDIuMDJzICAgfCAgICAwLjM0NXMgICAgfCAgICAxMjB4ICAgICB8CisgICArLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsKKyAgIHwgdGVsY28gICB8ICAgMTcyLjE5cyAgIHwgICAgNS42OHMgICAgIHwgICAgIDMweCAgICAgfAorICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rCisgICB8IHBzeWNvcGcgfCAgICAgMy41N3MgICB8ICAgIDAuMjlzICAgICB8ICAgICAxMnggICAgIHwKKyAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKworCitGZWF0dXJlcworfn5+fn5+fn4KKworKiBUaGUgOmV4YzpgfmRlY2ltYWwuRmxvYXRPcGVyYXRpb25gIHNpZ25hbCBvcHRpb25hbGx5IGVuYWJsZXMgc3RyaWN0ZXIKKyAgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscy4KKworKiBJZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dCB0aHJlYWRzLCB0aGUgQyB2ZXJzaW9uIGF1dG9tYXRpY2FsbHkKKyAgZGlzYWJsZXMgdGhlIGV4cGVuc2l2ZSB0aHJlYWQgbG9jYWwgY29udGV4dCBtYWNoaW5lcnkuIEluIHRoaXMgY2FzZSwKKyAgdGhlIHZhcmlhYmxlIDpkYXRhOmB+ZGVjaW1hbC5IQVZFX1RIUkVBRFNgIGlzIHNldCB0byBGYWxzZS4KKworQVBJIGNoYW5nZXMKK35+fn5+fn5+fn5+CisKKyogVGhlIEMgbW9kdWxlIGhhcyB0aGUgZm9sbG93aW5nIGNvbnRleHQgbGltaXRzLCBkZXBlbmRpbmcgb24gdGhlIG1hY2hpbmUKKyAgYXJjaGl0ZWN0dXJlOgorCisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgIDMyLWJpdCAgICAgICAgfCAgICAgICAgICAgIDY0LWJpdCAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgICB8IDpjb25zdDpgTUFYX1BSRUNgIHwgOmNvbnN0OmA0MjUwMDAwMDBgICB8IDpjb25zdDpgOTk5OTk5OTk5OTk5OTk5OTk5YCAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBNQVhfRU1BWGAgfCA6Y29uc3Q6YDQyNTAwMDAwMGAgIHwgOmNvbnN0OmA5OTk5OTk5OTk5OTk5OTk5OTlgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YE1JTl9FTUlOYCB8IDpjb25zdDpgLTQyNTAwMDAwMGAgfCA6Y29uc3Q6YC05OTk5OTk5OTk5OTk5OTk5OTlgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisKKyogSW4gdGhlIGNvbnRleHQgdGVtcGxhdGVzICg6Y2xhc3M6YH5kZWNpbWFsLkRlZmF1bHRDb250ZXh0YCwKKyAgOmNsYXNzOmB+ZGVjaW1hbC5CYXNpY0NvbnRleHRgIGFuZCA6Y2xhc3M6YH5kZWNpbWFsLkV4dGVuZGVkQ29udGV4dGApCisgIHRoZSBtYWduaXR1ZGUgb2YgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuRW1heGAgYW5kCisgIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LkVtaW5gIGhhcyBjaGFuZ2VkIHRvIDpjb25zdDpgOTk5OTk5YC4KKworKiBUaGUgOmNsYXNzOmB+ZGVjaW1hbC5EZWNpbWFsYCBjb25zdHJ1Y3RvciBpbiBkZWNpbWFsLnB5IGRvZXMgbm90IG9ic2VydmUKKyAgdGhlIGNvbnRleHQgbGltaXRzIGFuZCBjb252ZXJ0cyB2YWx1ZXMgd2l0aCBhcmJpdHJhcnkgZXhwb25lbnRzIG9yIHByZWNpc2lvbgorICBleGFjdGx5LiBTaW5jZSB0aGUgQyB2ZXJzaW9uIGhhcyBpbnRlcm5hbCBsaW1pdHMsIHRoZSBmb2xsb3dpbmcgc2NoZW1lIGlzCisgIHVzZWQ6IElmIHBvc3NpYmxlLCB2YWx1ZXMgYXJlIGNvbnZlcnRlZCBleGFjdGx5LCBvdGhlcndpc2UKKyAgOmV4YzpgfmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbmAgaXMgcmFpc2VkIGFuZCB0aGUgcmVzdWx0IGlzIE5hTi4gSW4gdGhlCisgIGxhdHRlciBjYXNlIGl0IGlzIGFsd2F5cyBwb3NzaWJsZSB0byB1c2UgOm1ldGg6YH5kZWNpbWFsLkNvbnRleHQuY3JlYXRlX2RlY2ltYWxgCisgIGluIG9yZGVyIHRvIG9idGFpbiBhIHJvdW5kZWQgb3IgaW5leGFjdCB2YWx1ZS4KKworCisqIFRoZSBwb3dlciBmdW5jdGlvbiBpbiBkZWNpbWFsLnB5IGlzIGFsd2F5cyBjb3JyZWN0bHktcm91bmRlZC4gSW4gdGhlCisgIEMgdmVyc2lvbiwgaXQgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiB0aGUgY29ycmVjdGx5LXJvdW5kZWQKKyAgOm1ldGg6YH5kZWNpbWFsLkRlY2ltYWwuZXhwYCBhbmQgOm1ldGg6YH5kZWNpbWFsLkRlY2ltYWwubG5gIGZ1bmN0aW9ucywKKyAgYnV0IHRoZSBmaW5hbCByZXN1bHQgaXMgb25seSAiYWxtb3N0IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCIuCisKKworKiBJbiB0aGUgQyB2ZXJzaW9uLCB0aGUgY29udGV4dCBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIHNpZ25hbHMgaXMgYQorICA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgLiAgRm9yIHNwZWVkIHJlYXNvbnMsCisgIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LmZsYWdzYCBhbmQgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQudHJhcHNgIGFsd2F5cworICByZWZlciB0byB0aGUgc2FtZSA6Y2xhc3M6YH5jb2xsZWN0aW9ucy5hYmMuTXV0YWJsZU1hcHBpbmdgIHRoYXQgdGhlIGNvbnRleHQKKyAgd2FzIGluaXRpYWxpemVkIHdpdGguIElmIGEgbmV3IHNpZ25hbCBkaWN0aW9uYXJ5IGlzIGFzc2lnbmVkLAorICA6YXR0cjpgfmRlY2ltYWwuQ29udGV4dC5mbGFnc2AgYW5kIDphdHRyOmB+ZGVjaW1hbC5Db250ZXh0LnRyYXBzYAorICBhcmUgdXBkYXRlZCB3aXRoIHRoZSBuZXcgdmFsdWVzLCBidXQgdGhleSBkbyBub3QgcmVmZXJlbmNlIHRoZSBSSFMKKyAgZGljdGlvbmFyeS4KKworCisqIFBpY2tsaW5nIGEgOmNsYXNzOmB+ZGVjaW1hbC5Db250ZXh0YCBwcm9kdWNlcyBhIGRpZmZlcmVudCBvdXRwdXQgaW4gb3JkZXIKKyAgdG8gaGF2ZSBhIGNvbW1vbiBpbnRlcmNoYW5nZSBmb3JtYXQgZm9yIHRoZSBQeXRob24gYW5kIEMgdmVyc2lvbnMuCisKKworKiBUaGUgb3JkZXIgb2YgYXJndW1lbnRzIGluIHRoZSA6Y2xhc3M6YH5kZWNpbWFsLkNvbnRleHRgIGNvbnN0cnVjdG9yIGhhcyBiZWVuCisgIGNoYW5nZWQgdG8gbWF0Y2ggdGhlIG9yZGVyIGRpc3BsYXllZCBieSA6ZnVuYzpgcmVwcmAuCisKKworKiBUaGUgYGB3YXRjaGV4cGBgIHBhcmFtZXRlciBpbiB0aGUgOm1ldGg6YH5kZWNpbWFsLkRlY2ltYWwucXVhbnRpemVgIG1ldGhvZAorICBpcyBkZXByZWNhdGVkLgorCisKKy4uIF9uZXctZW1haWw6CisKK2VtYWlsCistLS0tLQorCitQb2xpY3kgRnJhbWV3b3JrCit+fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBlbWFpbCBwYWNrYWdlIG5vdyBoYXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBmcmFtZXdvcmsuICBBCis6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuUG9saWN5YCBpcyBhbiBvYmplY3Qgd2l0aCBzZXZlcmFsIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKK3RoYXQgY29udHJvbCBob3cgdGhlIGVtYWlsIHBhY2thZ2UgYmVoYXZlcy4gIFRoZSBwcmltYXJ5IHBvbGljeSBmb3IgUHl0aG9uIDMuMworaXMgdGhlIDpjbGFzczpgfmVtYWlsLnBvbGljeS5Db21wYXQzMmAgcG9saWN5LCB3aGljaCBwcm92aWRlcyBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBlbWFpbCBwYWNrYWdlIGluIFB5dGhvbiAzLjIuICBBIGBgcG9saWN5YGAgY2FuIGJlCitzcGVjaWZpZWQgd2hlbiBhbiBlbWFpbCBtZXNzYWdlIGlzIHBhcnNlZCBieSBhIDptb2Q6YH5lbWFpbC5wYXJzZXJgLCBvciB3aGVuIGEKKzpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGlzIGNyZWF0ZWQsIG9yIHdoZW4gYW4gZW1haWwgaXMKK3NlcmlhbGl6ZWQgdXNpbmcgYSA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIFVubGVzcyBvdmVycmlkZGVuLCBhIHBvbGljeSBwYXNzZWQKK3RvIGEgYGBwYXJzZXJgYCBpcyBpbmhlcml0ZWQgYnkgYWxsIHRoZSBgYE1lc3NhZ2VgYCBvYmplY3QgYW5kIHN1Yi1vYmplY3RzCitjcmVhdGVkIGJ5IHRoZSBgYHBhcnNlcmBgLiAgQnkgZGVmYXVsdCBhIGBgZ2VuZXJhdG9yYGAgd2lsbCB1c2UgdGhlIHBvbGljeSBvZgordGhlIGBgTWVzc2FnZWBgIG9iamVjdCBpdCBpcyBzZXJpYWxpemluZy4gIFRoZSBkZWZhdWx0IHBvbGljeSBpcworOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgLgorCitUaGUgbWluaW11bSBzZXQgb2YgY29udHJvbHMgaW1wbGVtZW50ZWQgYnkgYWxsIGBgcG9saWN5YGAgb2JqZWN0cyBhcmU6CisKKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBtYXhfbGluZV9sZW5ndGggICAgIFRoZSBtYXhpbXVtIGxlbmd0aCwgZXhjbHVkaW5nIHRoZSBsaW5lc2VwIGNoYXJhY3RlcihzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWwgbGluZXMgbWF5IGhhdmUgd2hlbiBhIGBgTWVzc2FnZWBgIGlzCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkLiAgRGVmYXVsdHMgdG8gNzguCisKKyAgICBsaW5lc2VwICAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBzZXBhcmF0ZSBpbmRpdmlkdWFsIGxpbmVzIHdoZW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgYGBNZXNzYWdlYGAgaXMgc2VyaWFsaXplZC4gIERlZmF1bHRzIHRvIGBgXG5gYC4KKworICAgIGN0ZV90eXBlICAgICAgICAgICAgYGA3Yml0YGAgb3IgYGA4Yml0YGAuICBgYDhiaXRgYCBhcHBsaWVzIG9ubHkgdG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgYGBCeXRlc2BgIGBgZ2VuZXJhdG9yYGAsIGFuZCBtZWFucyB0aGF0IG5vbi1BU0NJSSBtYXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlIHVzZWQgd2hlcmUgYWxsb3dlZCBieSB0aGUgcHJvdG9jb2wgKG9yIHdoZXJlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICBleGlzdHMgaW4gdGhlIG9yaWdpbmFsIGlucHV0KS4KKworICAgIHJhaXNlX29uX2RlZmVjdCAgICAgQ2F1c2VzIGEgYGBwYXJzZXJgYCB0byByYWlzZSBlcnJvciB3aGVuIGRlZmVjdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvdW50ZXJlZCBpbnN0ZWFkIG9mIGFkZGluZyB0aGVtIHRvIHRoZSBgYE1lc3NhZ2VgYAorICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0J3MgYGBkZWZlY3RzYGAgbGlzdC4KKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBuZXcgcG9saWN5IGluc3RhbmNlLCB3aXRoIG5ldyBzZXR0aW5ncywgaXMgY3JlYXRlZCB1c2luZyB0aGUKKzptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5jbG9uZWAgbWV0aG9kIG9mIHBvbGljeSBvYmplY3RzLiAgYGBjbG9uZWBgIHRha2VzCithbnkgb2YgdGhlIGFib3ZlIGNvbnRyb2xzIGFzIGtleXdvcmQgYXJndW1lbnRzLiAgQW55IGNvbnRyb2wgbm90IHNwZWNpZmllZCBpbgordGhlIGNhbGwgcmV0YWlucyBpdHMgZGVmYXVsdCB2YWx1ZS4gIFRodXMgeW91IGNhbiBjcmVhdGUgYSBwb2xpY3kgdGhhdCB1c2VzCitgYFxyXG5gYCBsaW5lc2VwIGNoYXJhY3RlcnMgbGlrZSB0aGlzOjoKKworICAgIG15cG9saWN5ID0gY29tcGF0MzIuY2xvbmUobGluZXNlcD0nXHJcbicpCisKK1BvbGljaWVzIGNhbiBiZSB1c2VkIHRvIG1ha2UgdGhlIGdlbmVyYXRpb24gb2YgbWVzc2FnZXMgaW4gdGhlIGZvcm1hdCBuZWVkZWQgYnkKK3lvdXIgYXBwbGljYXRpb24gc2ltcGxlci4gIEluc3RlYWQgb2YgaGF2aW5nIHRvIHJlbWVtYmVyIHRvIHNwZWNpZnkKK2BgbGluZXNlcD0nXHJcbidgYCBpbiBhbGwgdGhlIHBsYWNlcyB5b3UgY2FsbCBhIGBgZ2VuZXJhdG9yYGAsIHlvdSBjYW4gc3BlY2lmeQoraXQgb25jZSwgd2hlbiB5b3Ugc2V0IHRoZSBwb2xpY3kgdXNlZCBieSB0aGUgYGBwYXJzZXJgYCBvciB0aGUgYGBNZXNzYWdlYGAsCit3aGljaGV2ZXIgeW91ciBwcm9ncmFtIHVzZXMgdG8gY3JlYXRlIGBgTWVzc2FnZWBgIG9iamVjdHMuICBPbiB0aGUgb3RoZXIgaGFuZCwKK2lmIHlvdSBuZWVkIHRvIGdlbmVyYXRlIG1lc3NhZ2VzIGluIG11bHRpcGxlIGZvcm1zLCB5b3UgY2FuIHN0aWxsIHNwZWNpZnkgdGhlCitwYXJhbWV0ZXJzIGluIHRoZSBhcHByb3ByaWF0ZSBgYGdlbmVyYXRvcmBgIGNhbGwuICBPciB5b3UgY2FuIGhhdmUgY3VzdG9tCitwb2xpY3kgaW5zdGFuY2VzIGZvciB5b3VyIGRpZmZlcmVudCBjYXNlcywgYW5kIHBhc3MgdGhvc2UgaW4gd2hlbiB5b3UgY3JlYXRlCit0aGUgYGBnZW5lcmF0b3JgYC4KKworCitQcm92aXNpb25hbCBQb2xpY3kgd2l0aCBOZXcgSGVhZGVyIEFQSQorfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworV2hpbGUgdGhlIHBvbGljeSBmcmFtZXdvcmsgaXMgd29ydGh3aGlsZSBhbGwgYnkgaXRzZWxmLCB0aGUgbWFpbiBtb3RpdmF0aW9uIGZvcgoraW50cm9kdWNpbmcgaXQgaXMgdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIG5ldyBwb2xpY2llcyB0aGF0IGltcGxlbWVudCBuZXcKK2ZlYXR1cmVzIGZvciB0aGUgZW1haWwgcGFja2FnZSBpbiBhIHdheSB0aGF0IG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Citmb3IgdGhvc2Ugd2hvIGRvIG5vdCB1c2UgdGhlIG5ldyBwb2xpY2llcy4gIEJlY2F1c2UgdGhlIG5ldyBwb2xpY2llcyBpbnRyb2R1Y2UgYQorbmV3IEFQSSwgd2UgYXJlIHJlbGVhc2luZyB0aGVtIGluIFB5dGhvbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgcG9saWN5Cis8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiAgQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nCityZW1vdmFsIG9mIHRoZSBjb2RlKSBtYXkgb2NjdXIgaWYgZGVlbWVkIG5lY2Vzc2FyeSBieSB0aGUgY29yZSBkZXZlbG9wZXJzLgorCitUaGUgbmV3IHBvbGljaWVzIGFyZSBpbnN0YW5jZXMgb2YgOmNsYXNzOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5YCwKK2FuZCBhZGQgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIGNvbnRyb2xzOgorCisgICAgPT09PT09PT09PT09PT09ICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcmVmb2xkX3NvdXJjZSAgICAgICBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBoZWFkZXJzIHBhcnNlZCBieSBhCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kOmB+ZW1haWwucGFyc2VyYCBhcmUgcmVmb2xkZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICA6bW9kOmB+ZW1haWwuZ2VuZXJhdG9yYC4gIEl0IGNhbiBiZSBgYG5vbmVgYCwgYGBsb25nYGAsCisgICAgICAgICAgICAgICAgICAgICAgICBvciBgYGFsbGBgLiAgVGhlIGRlZmF1bHQgaXMgYGBsb25nYGAsIHdoaWNoIG1lYW5zIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSBoZWFkZXJzIHdpdGggYSBsaW5lIGxvbmdlciB0aGFuCisgICAgICAgICAgICAgICAgICAgICAgICBgYG1heF9saW5lX2xlbmd0aGBgIGdldCByZWZvbGRlZC4gIGBgbm9uZWBgIG1lYW5zIG5vCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIGdldCByZWZvbGRlZCwgYW5kIGBgYWxsYGAgbWVhbnMgdGhhdCBhbGwgbGluZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldCByZWZvbGRlZC4KKworICAgIGhlYWRlcl9mYWN0b3J5ICAgICAgQSBjYWxsYWJsZSB0aGF0IHRha2UgYSBgYG5hbWVgYCBhbmQgYGB2YWx1ZWBgIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXMgYSBjdXN0b20gaGVhZGVyIG9iamVjdC4KKyAgICA9PT09PT09PT09PT09PT0gICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGBgaGVhZGVyX2ZhY3RvcnlgYCBpcyB0aGUga2V5IHRvIHRoZSBuZXcgZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlIG5ldworcG9saWNpZXMuICBXaGVuIG9uZSBvZiB0aGUgbmV3IHBvbGljaWVzIGlzIHVzZWQsIGFueSBoZWFkZXIgcmV0cmlldmVkIGZyb20KK2EgYGBNZXNzYWdlYGAgb2JqZWN0IGlzIGFuIG9iamVjdCBwcm9kdWNlZCBieSB0aGUgYGBoZWFkZXJfZmFjdG9yeWBgLCBhbmQgYW55Cit0aW1lIHlvdSBzZXQgYSBoZWFkZXIgb24gYSBgYE1lc3NhZ2VgYCBpdCBiZWNvbWVzIGFuIG9iamVjdCBwcm9kdWNlZCBieQorYGBoZWFkZXJfZmFjdG9yeWBgLiAgQWxsIHN1Y2ggaGVhZGVyIG9iamVjdHMgaGF2ZSBhIGBgbmFtZWBgIGF0dHJpYnV0ZSBlcXVhbAordG8gdGhlIGhlYWRlciBuYW1lLiAgQWRkcmVzcyBhbmQgRGF0ZSBoZWFkZXJzIGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzCit0aGF0IGdpdmUgeW91IGFjY2VzcyB0byB0aGUgcGFyc2VkIGRhdGEgb2YgdGhlIGhlYWRlci4gIFRoaXMgbWVhbnMgeW91IGNhbiBub3cKK2RvIHRoaW5ncyBsaWtlIHRoaXM6OgorCisgICAgPj4+IG0gPSBNZXNzYWdlKHBvbGljeT1TTVRQKQorICAgID4+PiBtWydUbyddID0gJ8OJcmljIDxmb29AZXhhbXBsZS5jb20+JworICAgID4+PiBtWyd0byddCisgICAgJ8OJcmljIDxmb29AZXhhbXBsZS5jb20+JworICAgID4+PiBtWyd0byddLmFkZHJlc3NlcworICAgIChBZGRyZXNzKGRpc3BsYXlfbmFtZT0nw4lyaWMnLCB1c2VybmFtZT0nZm9vJywgZG9tYWluPSdleGFtcGxlLmNvbScpLCkKKyAgICA+Pj4gbVsndG8nXS5hZGRyZXNzZXNbMF0udXNlcm5hbWUKKyAgICAnZm9vJworICAgID4+PiBtWyd0byddLmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUKKyAgICAnw4lyaWMnCisgICAgPj4+IG1bJ0RhdGUnXSA9IGVtYWlsLnV0aWxzLmxvY2FsdGltZSgpCisgICAgPj4+IG1bJ0RhdGUnXS5kYXRldGltZQorICAgIGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDUsIDI1LCAyMSwgMzksIDI0LCA0NjU0ODQsIHR6aW5mbz1kYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoLTEsIDcyMDAwKSwgJ0VEVCcpKQorICAgID4+PiBtWydEYXRlJ10KKyAgICAnRnJpLCAyNSBNYXkgMjAxMiAyMTo0NDoyNyAtMDQwMCcKKyAgICA+Pj4gcHJpbnQobSkKKyAgICBUbzogPT91dGYtOD9xPz1DMz04OXJpYz89IDxmb29AZXhhbXBsZS5jb20+CisgICAgRGF0ZTogRnJpLCAyNSBNYXkgMjAxMiAyMTo0NDoyNyAtMDQwMAorCitZb3Ugd2lsbCBub3RlIHRoYXQgdGhlIHVuaWNvZGUgZGlzcGxheSBuYW1lIGlzIGF1dG9tYXRpY2FsbHkgZW5jb2RlZCBhcworYGB1dGYtOGBgIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCwgYnV0IHRoYXQgd2hlbiB0aGUgaGVhZGVyIGlzIGFjY2Vzc2VkCitkaXJlY3RseSwgeW91IGdldCB0aGUgdW5pY29kZSB2ZXJzaW9uLiAgVGhpcyBlbGltaW5hdGVzIGFueSBuZWVkIHRvIGRlYWwgd2l0aAordGhlIDptb2Q6YGVtYWlsLmhlYWRlcmAgOm1ldGg6YH5lbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlcmAgb3IKKzptZXRoOmB+ZW1haWwuaGVhZGVyLm1ha2VfaGVhZGVyYCBmdW5jdGlvbnMuCisKK1lvdSBjYW4gYWxzbyBjcmVhdGUgYWRkcmVzc2VzIGZyb20gcGFydHM6OgorCisgICAgPj4+IG1bJ2NjJ10gPSBbR3JvdXAoJ3BhbHMnLCBbQWRkcmVzcygnQm9iJywgJ2JvYicsICdleGFtcGxlLmNvbScpLAorICAgIC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MoJ1NhbGx5JywgJ3NhbGx5JywgJ2V4YW1wbGUuY29tJyldKSwKKyAgICAuLi4gICAgICAgICAgICBBZGRyZXNzKCdCb256bycsIGFkZHJfc3BlYz0nYm9uekBsYXVnaC5jb20nKV0KKyAgICA+Pj4gcHJpbnQobSkKKyAgICBUbzogPT91dGYtOD9xPz1DMz04OXJpYz89IDxmb29AZXhhbXBsZS5jb20+CisgICAgRGF0ZTogRnJpLCAyNSBNYXkgMjAxMiAyMTo0NDoyNyAtMDQwMAorICAgIGNjOiBwYWxzOiBCb2IgPGJvYkBleGFtcGxlLmNvbT4sIFNhbGx5IDxzYWxseUBleGFtcGxlLmNvbT47LCBCb256byA8Ym9uekBsYXVnaC5jb20+CisKK0RlY29kaW5nIHRvIHVuaWNvZGUgaXMgZG9uZSBhdXRvbWF0aWNhbGx5OjoKKworICAgID4+PiBtMiA9IG1lc3NhZ2VfZnJvbV9zdHJpbmcoc3RyKG0pKQorICAgID4+PiBtMlsndG8nXQorICAgICfDiXJpYyA8Zm9vQGV4YW1wbGUuY29tPicKKworV2hlbiB5b3UgcGFyc2UgYSBtZXNzYWdlLCB5b3UgY2FuIHVzZSB0aGUgYGBhZGRyZXNzZXNgYCBhbmQgYGBncm91cHNgYAorYXR0cmlidXRlcyBvZiB0aGUgaGVhZGVyIG9iamVjdHMgdG8gYWNjZXNzIHRoZSBncm91cHMgYW5kIGluZGl2aWR1YWwKK2FkZHJlc3Nlczo6CisKKyAgICA+Pj4gbTJbJ2NjJ10uYWRkcmVzc2VzCisgICAgKEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb2InLCB1c2VybmFtZT0nYm9iJywgZG9tYWluPSdleGFtcGxlLmNvbScpLCBBZGRyZXNzKGRpc3BsYXlfbmFtZT0nU2FsbHknLCB1c2VybmFtZT0nc2FsbHknLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb256bycsIHVzZXJuYW1lPSdib256JywgZG9tYWluPSdsYXVnaC5jb20nKSkKKyAgICA+Pj4gbTJbJ2NjJ10uZ3JvdXBzCisgICAgKEdyb3VwKGRpc3BsYXlfbmFtZT0ncGFscycsIGFkZHJlc3Nlcz0oQWRkcmVzcyhkaXNwbGF5X25hbWU9J0JvYicsIHVzZXJuYW1lPSdib2InLCBkb21haW49J2V4YW1wbGUuY29tJyksIEFkZHJlc3MoZGlzcGxheV9uYW1lPSdTYWxseScsIHVzZXJuYW1lPSdzYWxseScsIGRvbWFpbj0nZXhhbXBsZS5jb20nKSksIEdyb3VwKGRpc3BsYXlfbmFtZT1Ob25lLCBhZGRyZXNzZXM9KEFkZHJlc3MoZGlzcGxheV9uYW1lPSdCb256bycsIHVzZXJuYW1lPSdib256JywgZG9tYWluPSdsYXVnaC5jb20nKSwpKQorCitJbiBzdW1tYXJ5LCBpZiB5b3UgdXNlIG9uZSBvZiB0aGUgbmV3IHBvbGljaWVzLCBoZWFkZXIgbWFuaXB1bGF0aW9uIHdvcmtzIHRoZQord2F5IGl0IG91Z2h0IHRvOiAgeW91ciBhcHBsaWNhdGlvbiB3b3JrcyB3aXRoIHVuaWNvZGUgc3RyaW5ncywgYW5kIHRoZSBlbWFpbAorcGFja2FnZSB0cmFuc3BhcmVudGx5IGVuY29kZXMgYW5kIGRlY29kZXMgdGhlIHVuaWNvZGUgdG8gYW5kIGZyb20gdGhlIFJGQworc3RhbmRhcmQgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZ3MuCisKK090aGVyIEFQSSBDaGFuZ2VzCit+fn5+fn5+fn5+fn5+fn5+fgorCitOZXcgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzSGVhZGVyUGFyc2VyYCwgYWRkZWQgdG8gdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgCittb2R1bGUgdG8gY29tcGxlbWVudCA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuSGVhZGVyUGFyc2VyYCBhbmQgY29tcGxldGUgdGhlIEJ5dGVzCitBUEkuCisKK05ldyB1dGlsaXR5IGZ1bmN0aW9uczoKKworICAgKiA6ZnVuYzpgfmVtYWlsLnV0aWxzLmZvcm1hdF9kYXRldGltZWA6IGdpdmVuIGEgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgLAorICAgICBwcm9kdWNlIGEgc3RyaW5nIGZvcm1hdHRlZCBmb3IgdXNlIGluIGFuIGVtYWlsIGhlYWRlci4KKworICAgKiA6ZnVuYzpgfmVtYWlsLnV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZWA6IGdpdmVuIGEgZGF0ZSBzdHJpbmcgZnJvbQorICAgICBhbiBlbWFpbCBoZWFkZXIsIGNvbnZlcnQgaXQgaW50byBhbiBhd2FyZSA6Y2xhc3M6YH5kYXRldGltZS5kYXRldGltZWAsCisgICAgIG9yIGEgbmFpdmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGlmIHRoZSBvZmZzZXQgaXMgYGAtMDAwMGBgLgorCisgICAqIDpmdW5jOmB+ZW1haWwudXRpbHMubG9jYWx0aW1lYDogV2l0aCBubyBhcmd1bWVudCwgcmV0dXJucyB0aGUKKyAgICAgY3VycmVudCBsb2NhbCB0aW1lIGFzIGFuIGF3YXJlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCB1c2luZyB0aGUgbG9jYWwKKyAgICAgOmNsYXNzOmB+ZGF0ZXRpbWUudGltZXpvbmVgLiAgR2l2ZW4gYW4gYXdhcmUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgLAorICAgICBjb252ZXJ0cyBpdCBpbnRvIGFuIGF3YXJlIDpjbGFzczpgfmRhdGV0aW1lLmRhdGV0aW1lYCB1c2luZyB0aGUKKyAgICAgbG9jYWwgOmNsYXNzOmB+ZGF0ZXRpbWUudGltZXpvbmVgLgorCisKK2Z0cGxpYgorLS0tLS0tCisKKyogOmNsYXNzOmBmdHBsaWIuRlRQYCBub3cgYWNjZXB0cyBhIGBgc291cmNlX2FkZHJlc3NgYCBrZXl3b3JkIGFyZ3VtZW50IHRvCisgIHNwZWNpZnkgdGhlIGBgKGhvc3QsIHBvcnQpYGAgdG8gdXNlIGFzIHRoZSBzb3VyY2UgYWRkcmVzcyBpbiB0aGUgYmluZCBjYWxsCisgIHdoZW4gY3JlYXRpbmcgdGhlIG91dGdvaW5nIHNvY2tldC4gIChDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoAorICBpbiA6aXNzdWU6YDg1OTRgLikKKworKiBUaGUgOmNsYXNzOmB+ZnRwbGliLkZUUF9UTFNgIGNsYXNzIG5vdyBwcm92aWRlcyBhIG5ldworICA6ZnVuYzpgfmZ0cGxpYi5GVFBfVExTLmNjY2AgZnVuY3Rpb24gdG8gcmV2ZXJ0IGNvbnRyb2wgY2hhbm5lbCBiYWNrIHRvCisgIHBsYWludGV4dC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byB0YWtlIGFkdmFudGFnZSBvZiBmaXJld2FsbHMgdGhhdCBrbm93IGhvdworICB0byBoYW5kbGUgTkFUIHdpdGggbm9uLXNlY3VyZSBGVFAgd2l0aG91dCBvcGVuaW5nIGZpeGVkIHBvcnRzLiAgKENvbnRyaWJ1dGVkCisgIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTIxMzlgKQorCisqIEFkZGVkIDptZXRoOmBmdHBsaWIuRlRQLm1sc2RgIG1ldGhvZCB3aGljaCBwcm92aWRlcyBhIHBhcnNhYmxlIGRpcmVjdG9yeQorICBsaXN0aW5nIGZvcm1hdCBhbmQgZGVwcmVjYXRlcyA6bWV0aDpgZnRwbGliLkZUUC5ubHN0YCBhbmQKKyAgOm1ldGg6YGZ0cGxpYi5GVFAuZGlyYC4gIChDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDExMDcyYCkKKworCitmdW5jdG9vbHMKKy0tLS0tLS0tLQorCitUaGUgOmZ1bmM6YGZ1bmN0b29scy5scnVfY2FjaGVgIGRlY29yYXRvciBub3cgYWNjZXB0cyBhIGBgdHlwZWRgYCBrZXl3b3JkCithcmd1bWVudCAodGhhdCBkZWZhdWx0cyB0byBgYEZhbHNlYGAgdG8gZW5zdXJlIHRoYXQgaXQgY2FjaGVzIHZhbHVlcyBvZgorZGlmZmVyZW50IHR5cGVzIHRoYXQgY29tcGFyZSBlcXVhbCBpbiBzZXBhcmF0ZSBjYWNoZSBzbG90cy4gIChDb250cmlidXRlZAorYnkgUmF5bW9uZCBIZXR0aW5nZXIgaW4gOmlzc3VlOmAxMzIyN2AuKQorCisKK2djCistLQorCitJdCBpcyBub3cgcG9zc2libGUgdG8gcmVnaXN0ZXIgY2FsbGJhY2tzIGludm9rZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yCitiZWZvcmUgYW5kIGFmdGVyIGNvbGxlY3Rpb24gdXNpbmcgdGhlIG5ldyA6ZGF0YTpgfmdjLmNhbGxiYWNrc2AgbGlzdC4KKworCitobWFjCistLS0tCisKK0EgbmV3IDpmdW5jOmB+aG1hYy5jb21wYXJlX2RpZ2VzdGAgZnVuY3Rpb24gaGFzIGJlZW4gYWRkZWQgdG8gcHJldmVudCBzaWRlCitjaGFubmVsIGF0dGFja3Mgb24gZGlnZXN0cyB0aHJvdWdoIHRpbWluZyBhbmFseXNpcy4gIChDb250cmlidXRlZCBieSBOaWNrCitDb2dobGFuIGFuZCBDaHJpc3RpYW4gSGVpbWVzIGluIDppc3N1ZTpgMTUwNjFgKQorCisKK2h0dHAKKy0tLS0KKworOmNsYXNzOmBodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyYCBub3cgYnVmZmVycyB0aGUgaGVhZGVycyBhbmQgd3JpdGVzCit0aGVtIGFsbCBhdCBvbmNlIHdoZW4gOm1ldGg6YH5odHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmVuZF9oZWFkZXJzYCBpcworY2FsbGVkLiAgQSBuZXcgbWV0aG9kIDptZXRoOmB+aHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5mbHVzaF9oZWFkZXJzYAorY2FuIGJlIHVzZWQgdG8gZGlyZWN0bHkgbWFuYWdlIHdoZW4gdGhlIGFjY3VtbGF0ZWQgaGVhZGVycyBhcmUgc2VudC4KKyhDb250cmlidXRlZCBieSBBbmRyZXcgU2NoYWFmIGluIDppc3N1ZTpgMzcwOWAuKQorCis6Y2xhc3M6YGh0dHAuc2VydmVyYCBub3cgcHJvZHVjZXMgdmFsaWQgYGBIVE1MIDQuMDEgc3RyaWN0YGAgb3V0cHV0LgorKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDEzMjk1YC4pCisKKzpjbGFzczpgaHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlYCBub3cgaGFzIGEKKzptZXRoOmB+aHR0cC5jbGllbnQuSFRUUFJlc3BvbnNlLnJlYWRpbnRvYCBtZXRob2QsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSB1c2VkCithcyBhIDpjbGFzczpgaW8uUmF3SU9CYXNlYCBjbGFzcy4gIChDb250cmlidXRlZCBieSBKb2huIEt1aG4gaW4KKzppc3N1ZTpgMTM0NjRgLikKKworCitodG1sCistLS0tCisKKzpjbGFzczpgaHRtbC5wYXJzZXIuSFRNTFBhcnNlcmAgaXMgbm93IGFibGUgdG8gcGFyc2UgYnJva2VuIG1hcmt1cCB3aXRob3V0CityYWlzaW5nIGVycm9ycywgdGhlcmVmb3JlIHRoZSAqc3RyaWN0KiBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgYW5kIHRoZQorOmV4Yzpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZUVycm9yYCBleGNlcHRpb24gYXJlIG5vdyBkZXByZWNhdGVkLgorVGhlIGFiaWxpdHkgdG8gcGFyc2UgYnJva2VuIG1hcmt1cCBpcyB0aGUgcmVzdWx0IG9mIGEgbnVtYmVyIG9mIGJ1ZyBmaXhlcyB0aGF0CithcmUgYWxzbyBhdmFpbGFibGUgb24gdGhlIGxhdGVzdCBidWcgZml4IHJlbGVhc2VzIG9mIFB5dGhvbiAyLjcvMy4yLgorKENvbnRyaWJ1dGVkIGJ5IEV6aW8gTWVsb3R0aSBpbiA6aXNzdWU6YDE1MTE0YCwgYW5kIDppc3N1ZTpgMTQ1MzhgLAorOmlzc3VlOmAxMzk5M2AsIDppc3N1ZTpgMTM5NjBgLCA6aXNzdWU6YDEzMzU4YCwgOmlzc3VlOmAxNzQ1NzYxYCwKKzppc3N1ZTpgNzU1NjcwYCwgOmlzc3VlOmAxMzM1N2AsIDppc3N1ZTpgMTI2MjlgLCA6aXNzdWU6YDEyMDAzMTNgLAorOmlzc3VlOmA2NzA2NjRgLCA6aXNzdWU6YDEzMjczYCwgOmlzc3VlOmAxMjg4OGAsIDppc3N1ZTpgNzMxMWApCisKK0EgbmV3IDpkYXRhOmB+aHRtbC5lbnRpdGllcy5odG1sNWAgZGljdGlvbmFyeSB0aGF0IG1hcHMgSFRNTDUgbmFtZWQgY2hhcmFjdGVyCityZWZlcmVuY2VzIHRvIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUgY2hhcmFjdGVyKHMpIChlLmcuIGBgaHRtbDVbJ2d0OyddID09CisnPidgYCkgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIDptb2Q6YGh0bWwuZW50aXRpZXNgIG1vZHVsZS4gIFRoZSBkaWN0aW9uYXJ5IGlzCitub3cgYWxzbyB1c2VkIGJ5IDpjbGFzczpgfmh0bWwucGFyc2VyLkhUTUxQYXJzZXJgLiAgKENvbnRyaWJ1dGVkIGJ5IEV6aW8KK01lbG90dGkgaW4gOmlzc3VlOmAxMTExM2AgYW5kIDppc3N1ZTpgMTUxNTZgKQorCisKK2ltYXBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgfmltYXBsaWIuSU1BUDRfU1NMYCBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBhbiBTU0xDb250ZXh0CitwYXJhbWV0ZXIgdG8gY29udHJvbCBwYXJhbWV0ZXJzIG9mIHRoZSBzZWN1cmUgY2hhbm5lbC4KKworKENvbnRyaWJ1dGVkIGJ5IFNpamluIEpvc2VwaCBpbiA6aXNzdWU6YDg4MDhgKQorCisKK2luc3BlY3QKKy0tLS0tLS0KKworQSBuZXcgOmZ1bmM6YH5pbnNwZWN0LmdldGNsb3N1cmV2YXJzYCBmdW5jdGlvbiBoYXMgYmVlbiBhZGRlZC4gVGhpcyBmdW5jdGlvbgorcmVwb3J0cyB0aGUgY3VycmVudCBiaW5kaW5nIG9mIGFsbCBuYW1lcyByZWZlcmVuY2VkIGZyb20gdGhlIGZ1bmN0aW9uIGJvZHkgYW5kCit3aGVyZSB0aG9zZSBuYW1lcyB3ZXJlIHJlc29sdmVkLCBtYWtpbmcgaXQgZWFzaWVyIHRvIHZlcmlmeSBjb3JyZWN0IGludGVybmFsCitzdGF0ZSB3aGVuIHRlc3RpbmcgY29kZSB0aGF0IHJlbGllcyBvbiBzdGF0ZWZ1bCBjbG9zdXJlcy4KKworKENvbnRyaWJ1dGVkIGJ5IE1lYWRvciBJbmdlIGFuZCBOaWNrIENvZ2hsYW4gaW4gOmlzc3VlOmAxMzA2MmApCisKK0EgbmV3IDpmdW5jOmB+aW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHNgIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkLiBUaGlzCitmdW5jdGlvbiByZXBvcnRzIHRoZSBjdXJyZW50IGJpbmRpbmcgb2YgbG9jYWwgdmFyaWFibGVzIGluIHRoZSBnZW5lcmF0b3Incworc3RhY2sgZnJhbWUsIG1ha2luZyBpdCBlYXNpZXIgdG8gdmVyaWZ5IGNvcnJlY3QgaW50ZXJuYWwgc3RhdGUgd2hlbiB0ZXN0aW5nCitnZW5lcmF0b3JzLgorCisoQ29udHJpYnV0ZWQgYnkgTWVhZG9yIEluZ2UgaW4gOmlzc3VlOmAxNTE1M2ApCisKK2lvCistLQorCitUaGUgOmZ1bmM6YH5pby5vcGVuYCBmdW5jdGlvbiBoYXMgYSBuZXcgYGAneCdgYCBtb2RlIHRoYXQgY2FuIGJlIHVzZWQgdG8KK2V4Y2x1c2l2ZWx5IGNyZWF0ZSBhIG5ldyBmaWxlLCBhbmQgcmFpc2UgYSA6ZXhjOmBGaWxlRXhpc3RzRXJyb3JgIGlmIHRoZSBmaWxlCithbHJlYWR5IGV4aXN0cy4gSXQgaXMgYmFzZWQgb24gdGhlIEMxMSAneCcgbW9kZSB0byBmb3BlbigpLgorCisoQ29udHJpYnV0ZWQgYnkgRGF2aWQgVG93bnNoZW5kIGluIDppc3N1ZTpgMTI3NjBgKQorCitUaGUgY29uc3RydWN0b3Igb2YgdGhlIDpjbGFzczpgfmlvLlRleHRJT1dyYXBwZXJgIGNsYXNzIGhhcyBhIG5ldworKndyaXRlX3Rocm91Z2gqIG9wdGlvbmFsIGFyZ3VtZW50LiBJZiAqd3JpdGVfdGhyb3VnaCogaXMgYGBUcnVlYGAsIGNhbGxzIHRvCis6bWV0aDpgfmlvLlRleHRJT1dyYXBwZXIud3JpdGVgIGFyZSBndWFyYW50ZWVkIG5vdCB0byBiZSBidWZmZXJlZDogYW55IGRhdGEKK3dyaXR0ZW4gb24gdGhlIDpjbGFzczpgfmlvLlRleHRJT1dyYXBwZXJgIG9iamVjdCBpcyBpbW1lZGlhdGVseSBoYW5kbGVkIHRvIGl0cwordW5kZXJseWluZyBiaW5hcnkgYnVmZmVyLgorCisKK2l0ZXJ0b29scworLS0tLS0tLS0tCisKKzpmdW5jOmB+aXRlcnRvb2xzLmFjY3VtdWxhdGVgIG5vdyB0YWtlcyBhbiBvcHRpb25hbCBgYGZ1bmNgYCBhcmd1bWVudCBmb3IKK3Byb3ZpZGluZyBhIHVzZXItc3VwcGxpZWQgYmluYXJ5IGZ1bmN0aW9uLgorCisKK2xvZ2dpbmcKKy0tLS0tLS0KKworVGhlIDpmdW5jOmB+bG9nZ2luZy5iYXNpY0NvbmZpZ2AgZnVuY3Rpb24gbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsIGBgaGFuZGxlcnNgYAorYXJndW1lbnQgdGFraW5nIGFuIGl0ZXJhYmxlIG9mIGhhbmRsZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSByb290IGxvZ2dlci4KKworQSBjbGFzcyBsZXZlbCBhdHRyaWJ1dGUgOmF0dHI6YH5sb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIuYXBwZW5kX251bGAgaGFzCitiZWVuIGFkZGVkIHRvIDpjbGFzczpgfmxvZ2dpbmcuaGFuZGxlcnMuU3lzTG9nSGFuZGxlcmAgdG8gYWxsb3cgY29udHJvbCBvZiB0aGUKK2FwcGVuZGluZyBvZiB0aGUgYGBOVUxgYCAoYGBcMDAwYGApIGJ5dGUgdG8gc3lzbG9nIHJlY29yZHMsIHNpbmNlIGZvciBzb21lCitkZWFtb25zIGl0IGlzIHJlcXVpcmVkIHdoaWxlIGZvciBvdGhlcnMgaXQgaXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIGxvZy4KKworCisKK21hdGgKKy0tLS0KKworVGhlIDptb2Q6YG1hdGhgIG1vZHVsZSBoYXMgYSBuZXcgZnVuY3Rpb24sIDpmdW5jOmB+bWF0aC5sb2cyYCwgIHdoaWNoIHJldHVybnMKK3RoZSBiYXNlLTIgbG9nYXJpdGhtIG9mICp4Ki4KKworKFdyaXR0ZW4gYnkgTWFyayBEaWNraW5zb24gaW4gOmlzc3VlOmAxMTg4OGApLgorCisKK21tYXAKKy0tLS0KKworVGhlIDptZXRoOmB+bW1hcC5tbWFwLnJlYWRgIG1ldGhvZCBpcyBub3cgbW9yZSBjb21wYXRpYmxlIHdpdGggb3RoZXIgZmlsZS1saWtlCitvYmplY3RzOiBpZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBzcGVjaWZpZWQgYXMgYGBOb25lYGAsIGl0IHJldHVybnMgdGhlCitieXRlcyBmcm9tIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgbWFwcGluZy4gIChDb250cmlidXRlZAorYnkgUGV0cmkgTGVodGluZW4gaW4gOmlzc3VlOmAxMjAyMWAuKQorCisKK211bHRpcHJvY2Vzc2luZworLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBuZXcgOmZ1bmM6YG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLndhaXRgIGZ1bmN0aW9uIGFsbG93cyB0byBwb2xsCittdWx0aXBsZSBvYmplY3RzIChzdWNoIGFzIGNvbm5lY3Rpb25zLCBzb2NrZXRzIGFuZCBwaXBlcykgd2l0aCBhIHRpbWVvdXQuCisoQ29udHJpYnV0ZWQgYnkgUmljaGFyZCBPdWRrZXJrIGluIDppc3N1ZTpgMTIzMjhgLikKKworOmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbmAgb2JqZWN0cyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIG92ZXIKK211bHRpcHJvY2Vzc2luZyBjb25uZWN0aW9ucy4KKyhDb250cmlidXRlZCBieSBSaWNoYXJkIE91ZGtlcmsgaW4gOmlzc3VlOmA0ODkyYC4pCisKKzpjbGFzczpgbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3NgIG5vdyBhY2NlcHRzIGEgYGBkYWVtb25gYCBrZXl3b3JkIGFyZ3VtZW50Cit0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBpbmhlcml0aW5nIHRoZSBgYGRhZW1vbmBgIGZsYWcgZnJvbQordGhlIHBhcmVudCBwcm9jZXNzICg6aXNzdWU6YDYwNjRgKS4KKworTmV3IGF0dHJpYnV0ZSBhdHRyaWJ1dGUgOmRhdGE6YG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzLnNlbnRpbmVsYCBhbGxvd3MgYQorcHJvZ3JhbSB0byB3YWl0IG9uIG11bHRpcGxlIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYCBvYmplY3RzIGF0IG9uZQordGltZSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgT1MgcHJpbWl0aXZlcyAoZm9yIGV4YW1wbGUsIDptb2Q6YHNlbGVjdGAgb24KK3Bvc2l4IHN5c3RlbXMpLgorCitOZXcgbWV0aG9kcyA6bWV0aDpgbXVsdGlwcm9jZXNzaW5nLnBvb2wuUG9vbC5zdGFybWFwYCBhbmQKKzptZXRoOmB+bXVsdGlwcm9jZXNzaW5nLnBvb2wuUG9vbC5zdGFybWFwX2FzeW5jYCBwcm92aWRlCis6ZnVuYzpgaXRlcnRvb2xzLnN0YXJtYXBgIGVxdWl2YWxlbnRzIHRvIHRoZSBleGlzdGluZworOm1ldGg6YG11bHRpcHJvY2Vzc2luZy5wb29sLlBvb2wubWFwYCBhbmQKKzptZXRoOmB+bXVsdGlwcm9jZXNzaW5nLnBvb2wuUG9vbC5tYXBfYXN5bmNgIGZ1bmN0aW9ucy4gIChDb250cmlidXRlZCBieSBIeW5laworU2NobGF3YWNrIGluIDppc3N1ZTpgMTI3MDhgLikKKworCitubnRwbGliCistLS0tLS0tCisKK1RoZSA6Y2xhc3M6YG5udHBsaWIuTk5UUGAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgdG8KK3VuY29uZGl0aW9uYWxseSBjb25zdW1lIDpleGM6YHNvY2tldC5lcnJvcmAgZXhjZXB0aW9ucyBhbmQgdG8gY2xvc2UgdGhlIE5OVFAKK2Nvbm5lY3Rpb24gd2hlbiBkb25lOjoKKworICA+Pj4gZnJvbSBubnRwbGliIGltcG9ydCBOTlRQCisgID4+PiB3aXRoIE5OVFAoJ25ld3MuZ21hbmUub3JnJykgYXMgbjoKKyAgLi4uICAgICBuLmdyb3VwKCdnbWFuZS5jb21wLnB5dGhvbi5jb21taXR0ZXJzJykKKyAgLi4uCisgICgnMjExIDE3NTUgMSAxNzU1IGdtYW5lLmNvbXAucHl0aG9uLmNvbW1pdHRlcnMnLCAxNzU1LCAxLCAxNzU1LCAnZ21hbmUuY29tcC5weXRob24uY29tbWl0dGVycycpCisgID4+PgorCisoQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmA5Nzk1YCkKKworCitvcworLS0KKworKiBUaGUgOm1vZDpgb3NgIG1vZHVsZSBoYXMgYSBuZXcgOmZ1bmM6YH5vcy5waXBlMmAgZnVuY3Rpb24gdGhhdCBtYWtlcyBpdAorICBwb3NzaWJsZSB0byBjcmVhdGUgYSBwaXBlIHdpdGggOmRhdGE6YH5vcy5PX0NMT0VYRUNgIG9yCisgIDpkYXRhOmB+b3MuT19OT05CTE9DS2AgZmxhZ3Mgc2V0IGF0b21pY2FsbHkuIFRoaXMgaXMgZXNwZWNpYWxseSB1c2VmdWwgdG8KKyAgYXZvaWQgcmFjZSBjb25kaXRpb25zIGluIG11bHRpLXRocmVhZGVkIHByb2dyYW1zLgorCisqIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfm9zLnNlbmRmaWxlYCBmdW5jdGlvbiB3aGljaCBwcm92aWRlcworICBhbiBlZmZpY2VudCAiemVyby1jb3B5IiB3YXkgZm9yIGNvcHlpbmcgZGF0YSBmcm9tIG9uZSBmaWxlIChvciBzb2NrZXQpCisgIGRlc2NyaXB0b3IgdG8gYW5vdGhlci4gVGhlIHBocmFzZSAiemVyby1jb3B5IiByZWZlcnMgdG8gdGhlIGZhY3QgdGhhdCBhbGwgb2YKKyAgdGhlIGNvcHlpbmcgb2YgZGF0YSBiZXR3ZWVuIHRoZSB0d28gZGVzY3JpcHRvcnMgaXMgZG9uZSBlbnRpcmVseSBieSB0aGUKKyAga2VybmVsLCB3aXRoIG5vIGNvcHlpbmcgb2YgZGF0YSBpbnRvIHVzZXJzcGFjZSBidWZmZXJzLiA6ZnVuYzpgfm9zLnNlbmRmaWxlYAorICBjYW4gYmUgdXNlZCB0byBlZmZpY2llbnRseSBjb3B5IGRhdGEgZnJvbSBhIGZpbGUgb24gZGlzayB0byBhIG5ldHdvcmsgc29ja2V0LAorICBlLmcuIGZvciBkb3dubG9hZGluZyBhIGZpbGUuCisKKyAgKFBhdGNoIHN1Ym1pdHRlZCBieSBSb3NzIExhZ2Vyd2FsbCBhbmQgR2lhbXBhb2xvIFJvZG9sw6AgaW4gOmlzc3VlOmAxMDg4MmAuKQorCisqIFRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyBsaWtlIHN5bWxpbmsgYXR0YWNrcyBhbmQgaXNzdWVzIHdpdGggdGVtcG9yYXJ5CisgIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgaXQgaXMgbW9yZSByZWxpYWJsZSAoYW5kIGFsc28gZmFzdGVyKSB0byBtYW5pcHVsYXRlCisgIGZpbGUgZGVzY3JpcHRvcnMgaW5zdGVhZCBvZiBmaWxlIG5hbWVzLiBQeXRob24gMy4zIGVuaGFuY2VzIGV4aXN0aW5nIGZ1bmN0aW9ucworICBhbmQgaW50cm9kdWNlcyBuZXcgZnVuY3Rpb25zIHRvIHdvcmsgb24gZmlsZSBkZXNjcmlwdG9ycyAoOmlzc3VlOmA0NzYxYCwKKyAgOmlzc3VlOmAxMDc1NWAgYW5kIDppc3N1ZTpgMTQ2MjZgKS4KKworICAtIFRoZSA6bW9kOmBvc2AgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfm9zLmZ3YWxrYCBmdW5jdGlvbiBzaW1pbGFyIHRvCisgICAgOmZ1bmM6YH5vcy53YWxrYCBleGNlcHQgdGhhdCBpdCBhbHNvIHlpZWxkcyBmaWxlIGRlc2NyaXB0b3JzIHJlZmVycmluZyB0byB0aGUKKyAgICBkaXJlY3RvcmllcyB2aXNpdGVkLiBUaGlzIGlzIGVzcGVjaWFsbHkgdXNlZnVsIHRvIGF2b2lkIHN5bWxpbmsgcmFjZXMuCisKKyAgLSBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBnZXQgbmV3IG9wdGlvbmFsICpkaXJfZmQqICg6cmVmOmBwYXRocyByZWxhdGl2ZSB0bworICAgIGRpcmVjdG9yeSBkZXNjcmlwdG9ycyA8ZGlyX2ZkPmApIGFuZC9vciAqZm9sbG93X3N5bWxpbmtzKiAoOnJlZjpgbm90CisgICAgZm9sbG93aW5nIHN5bWxpbmtzIDxmb2xsb3dfc3ltbGlua3M+YCk6CisgICAgOmZ1bmM6YH5vcy5hY2Nlc3NgLCA6ZnVuYzpgfm9zLmNoZmxhZ3NgLCA6ZnVuYzpgfm9zLmNobW9kYCwgOmZ1bmM6YH5vcy5jaG93bmAsCisgICAgOmZ1bmM6YH5vcy5saW5rYCwgOmZ1bmM6YH5vcy5sc3RhdGAsIDpmdW5jOmB+b3MubWtkaXJgLCA6ZnVuYzpgfm9zLm1rZmlmb2AsCisgICAgOmZ1bmM6YH5vcy5ta25vZGAsIDpmdW5jOmB+b3Mub3BlbmAsIDpmdW5jOmB+b3MucmVhZGxpbmtgLCA6ZnVuYzpgfm9zLnJlbW92ZWAsCisgICAgOmZ1bmM6YH5vcy5yZW5hbWVgLCA6ZnVuYzpgfm9zLnJlcGxhY2VgLCA6ZnVuYzpgfm9zLnJtZGlyYCwgOmZ1bmM6YH5vcy5zdGF0YCwKKyAgICA6ZnVuYzpgfm9zLnN5bWxpbmtgLCA6ZnVuYzpgfm9zLnVubGlua2AsIDpmdW5jOmB+b3MudXRpbWVgLiAgUGxhdGZvcm0KKyAgICBzdXBwb3J0IGZvciB1c2luZyB0aGVzZSBwYXJhbWV0ZXJzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgc2V0cworICAgIDpkYXRhOmBvcy5zdXBwb3J0c19kaXJfZmRgIGFuZCA6ZGF0YTpgb3Muc3VwcG9ydHNfZm9sbG93c19zeW1saW5rc2AuCisKKyAgLSBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBub3cgc3VwcG9ydCBhIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlaXIgcGF0aCBhcmd1bWVudDoKKyAgICA6ZnVuYzpgfm9zLmNoZGlyYCwgOmZ1bmM6YH5vcy5jaG1vZGAsIDpmdW5jOmB+b3MuY2hvd25gLAorICAgIDpmdW5jOmB+b3MuZXhlY3ZlYCwgOmZ1bmM6YH5vcy5saXN0ZGlyYCwgOmZ1bmM6YH5vcy5wYXRoY29uZmAsIDpmdW5jOmB+b3MucGF0aC5leGlzdHNgLAorICAgIDpmdW5jOmB+b3Muc3RhdGAsIDpmdW5jOmB+b3Muc3RhdHZmc2AsIDpmdW5jOmB+b3MudXRpbWVgLiAgUGxhdGZvcm0gc3VwcG9ydAorICAgIGZvciB0aGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgOmRhdGE6YG9zLnN1cHBvcnRzX2ZkYCBzZXQuCisKKyogOmZ1bmM6YH5vcy5hY2Nlc3NgIGFjY2VwdHMgYW4gYGBlZmZlY3RpdmVfaWRzYGAga2V5d29yZCBhcmd1bWVudCB0byB0dXJuIG9uCisgIHVzaW5nIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCByYXRoZXIgdGhhbiB0aGUgcmVhbCB1aWQvZ2lkIGluIHRoZSBhY2Nlc3MgY2hlY2suCisgIFBsYXRmb3JtIHN1cHBvcnQgZm9yIHRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZQorICA6ZGF0YTpgfm9zLnN1cHBvcnRzX2VmZmVjdGl2ZV9pZHNgIHNldC4KKworKiBUaGUgOm1vZDpgb3NgIG1vZHVsZSBoYXMgdHdvIG5ldyBmdW5jdGlvbnM6IDpmdW5jOmB+b3MuZ2V0cHJpb3JpdHlgIGFuZAorICA6ZnVuYzpgfm9zLnNldHByaW9yaXR5YC4gVGhleSBjYW4gYmUgdXNlZCB0byBnZXQgb3Igc2V0IHByb2Nlc3MKKyAgbmljZW5lc3MvcHJpb3JpdHkgaW4gYSBmYXNoaW9uIHNpbWlsYXIgdG8gOmZ1bmM6YG9zLm5pY2VgIGJ1dCBleHRlbmRlZCB0byBhbGwKKyAgcHJvY2Vzc2VzIGluc3RlYWQgb2YganVzdCB0aGUgY3VycmVudCBvbmUuCisKKyAgKFBhdGNoIHN1Ym1pdHRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEwNzg0YC4pCisKKyogVGhlIG5ldyA6ZnVuYzpgb3MucmVwbGFjZWAgZnVuY3Rpb24gYWxsb3dzIGNyb3NzLXBsYXRmb3JtIHJlbmFtaW5nIG9mIGEKKyAgZmlsZSB3aXRoIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi4gIFdpdGggOmZ1bmM6YG9zLnJlbmFtZWAsIGFuIGV4aXN0aW5nCisgIGRlc3RpbmF0aW9uIGZpbGUgaXMgb3ZlcndyaXR0ZW4gdW5kZXIgUE9TSVgsIGJ1dCByYWlzZXMgYW4gZXJyb3IgdW5kZXIKKyAgV2luZG93cy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgODgyOGAuKQorCisqIFRoZSBzdGF0IGZhbWlseSBvZiBmdW5jdGlvbnMgKDpmdW5jOmB+b3Muc3RhdGAsIDpmdW5jOmB+b3MuZnN0YXRgLAorICBhbmQgOmZ1bmM6YH5vcy5sc3RhdGApIG5vdyBzdXBwb3J0IHJlYWRpbmcgYSBmaWxlJ3MgdGltZXN0YW1wcworICB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uLiAgU3ltbWV0cmljYWxseSwgOmZ1bmM6YH5vcy51dGltZWAKKyAgY2FuIG5vdyB3cml0ZSBmaWxlIHRpbWVzdGFtcHMgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbi4gIChDb250cmlidXRlZCBieQorICBMYXJyeSBIYXN0aW5ncyBpbiA6aXNzdWU6YDE0MTI3YC4pCisKKyogVGhlIG5ldyA6ZnVuYzpgb3MuZ2V0X3Rlcm1pbmFsX3NpemVgIGZ1bmN0aW9uIHF1ZXJpZXMgdGhlIHNpemUgb2YgdGhlCisgIHRlcm1pbmFsIGF0dGFjaGVkIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiBTZWUgYWxzbworICA6ZnVuYzpgc2h1dGlsLmdldF90ZXJtaW5hbF9zaXplYC4KKyAgKENvbnRyaWJ1dGVkIGJ5IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsgaW4gOmlzc3VlOmAxMzYwOWAuKQorCisuLiBYWFggc29ydCBvdXQgdGhpcyBtZXNzIGFmdGVyIGJldGExCisKKyogTmV3IGZ1bmN0aW9ucyB0byBzdXBwb3J0IExpbnV4IGV4dGVuZGVkIGF0dHJpYnV0ZXMgKDppc3N1ZTpgMTI3MjBgKToKKyAgOmZ1bmM6YH5vcy5nZXR4YXR0cmAsIDpmdW5jOmB+b3MubGlzdHhhdHRyYCwgOmZ1bmM6YH5vcy5yZW1vdmV4YXR0cmAsCisgIDpmdW5jOmB+b3Muc2V0eGF0dHJgLgorCisqIE5ldyBpbnRlcmZhY2UgdG8gdGhlIHNjaGVkdWxlci4gVGhlc2UgZnVuY3Rpb25zCisgIGNvbnRyb2wgaG93IGEgcHJvY2VzcyBpcyBhbGxvY2F0ZWQgQ1BVIHRpbWUgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uIE5ldworICBmdW5jdGlvbnM6CisgIDpmdW5jOmB+b3Muc2NoZWRfZ2V0X3ByaW9yaXR5X21heGAsIDpmdW5jOmB+b3Muc2NoZWRfZ2V0X3ByaW9yaXR5X21pbmAsCisgIDpmdW5jOmB+b3Muc2NoZWRfZ2V0YWZmaW5pdHlgLCA6ZnVuYzpgfm9zLnNjaGVkX2dldHBhcmFtYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9nZXRzY2hlZHVsZXJgLCA6ZnVuYzpgfm9zLnNjaGVkX3JyX2dldF9pbnRlcnZhbGAsCisgIDpmdW5jOmB+b3Muc2NoZWRfc2V0YWZmaW5pdHlgLCA6ZnVuYzpgfm9zLnNjaGVkX3NldHBhcmFtYCwKKyAgOmZ1bmM6YH5vcy5zY2hlZF9zZXRzY2hlZHVsZXJgLCA6ZnVuYzpgfm9zLnNjaGVkX3lpZWxkYCwKKworKiBOZXcgZnVuY3Rpb25zIHRvIGNvbnRyb2wgdGhlIGZpbGUgc3lzdGVtOgorCisgICogOmZ1bmM6YH5vcy5wb3NpeF9mYWR2aXNlYDogQW5ub3VuY2VzIGFuIGludGVudGlvbiB0byBhY2Nlc3MgZGF0YSBpbiBhCisgICAgc3BlY2lmaWMgcGF0dGVybiB0aHVzIGFsbG93aW5nIHRoZSBrZXJuZWwgdG8gbWFrZSBvcHRpbWl6YXRpb25zLgorICAqIDpmdW5jOmB+b3MucG9zaXhfZmFsbG9jYXRlYDogRW5zdXJlcyB0aGF0IGVub3VnaCBkaXNrIHNwYWNlIGlzIGFsbG9jYXRlZAorICAgIGZvciBhIGZpbGUuCisgICogOmZ1bmM6YH5vcy5zeW5jYDogRm9yY2Ugd3JpdGUgb2YgZXZlcnl0aGluZyB0byBkaXNrLgorCisqIEFkZGl0aW9uYWwgbmV3ICBwb3NpeCBmdW5jdGlvbnM6CisKKyAgKiA6ZnVuYzpgfm9zLmxvY2tmYDogQXBwbHksIHRlc3Qgb3IgcmVtb3ZlIGEgUE9TSVggbG9jayBvbiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4KKyAgKiA6ZnVuYzpgfm9zLnByZWFkYDogUmVhZCBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yIGF0IGFuIG9mZnNldCwgdGhlIGZpbGUKKyAgICBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuCisgICogOmZ1bmM6YH5vcy5wd3JpdGVgOiBXcml0ZSB0byBhIGZpbGUgZGVzY3JpcHRvciBmcm9tIGFuIG9mZnNldCwgbGVhdmluZworICAgIHRoZSBmaWxlIG9mZnNldCB1bmNoYW5nZWQuCisgICogOmZ1bmM6YH5vcy5yZWFkdmA6IFJlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciBpbnRvIGEgbnVtYmVyIG9mIHdyaXRhYmxlIGJ1ZmZlcnMuCisgICogOmZ1bmM6YH5vcy50cnVuY2F0ZWA6IFRydW5jYXRlIHRoZSBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gKnBhdGgqLCBzbyB0aGF0CisgICAgaXQgaXMgYXQgbW9zdCAqbGVuZ3RoKiBieXRlcyBpbiBzaXplLgorICAqIDpmdW5jOmB+b3Mud2FpdGlkYDogV2FpdCBmb3IgdGhlIGNvbXBsZXRpb24gb2Ygb25lIG9yIG1vcmUgY2hpbGQgcHJvY2Vzc2VzLgorICAqIDpmdW5jOmB+b3Mud3JpdGV2YDogV3JpdGUgdGhlIGNvbnRlbnRzIG9mICpidWZmZXJzKiB0byBhIGZpbGUgZGVzY3JpcHRvciwKKyAgICB3aGVyZSAqYnVmZmVycyogaXMgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIGJ1ZmZlcnMuCisgICogOmZ1bmM6YH5vcy5nZXRncm91cGxpc3RgICg6aXNzdWU6YDkzNDRgKTogUmV0dXJuIGxpc3Qgb2YgZ3JvdXAgaWRzIHRoYXQKKyAgICBzcGVjaWZpZWQgdXNlciBiZWxvbmdzIHRvLgorCisqIDpmdW5jOmB+b3MudGltZXNgIGFuZCA6ZnVuYzpgfm9zLnVuYW1lYDogUmV0dXJuIHR5cGUgY2hhbmdlZCBmcm9tIGEgdHVwbGUgdG8KKyAgYSB0dXBsZS1saWtlIG9iamVjdCB3aXRoIG5hbWVkIGF0dHJpYnV0ZXMuCisKKyogU29tZSBwbGF0Zm9ybXMgbm93IHN1cHBvcnQgYWRkaXRpb25hbCBjb25zdGFudHMgZm9yIHRoZSA6ZnVuYzpgfm9zLmxzZWVrYAorICBmdW5jdGlvbiwgc3VjaCBhcyBgYG9zLlNFRUtfSE9MRWBgIGFuZCBgYG9zLlNFRUtfREFUQWBgLgorCisqIE5ldyBjb25zdGFudHMgOmRhdGE6YH5vcy5SVExEX0xBWllgLCA6ZGF0YTpgfm9zLlJUTERfTk9XYCwKKyAgOmRhdGE6YH5vcy5SVExEX0dMT0JBTGAsIDpkYXRhOmB+b3MuUlRMRF9MT0NBTGAsIDpkYXRhOmB+b3MuUlRMRF9OT0RFTEVURWAsCisgIDpkYXRhOmB+b3MuUlRMRF9OT0xPQURgLCBhbmQgOmRhdGE6YH5vcy5SVExEX0RFRVBCSU5EYCBhcmUgYXZhaWxhYmxlIG9uCisgIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhlbS4gICBUaGVzZSBhcmUgZm9yIHVzZSB3aXRoIHRoZQorICA6ZnVuYzpgc3lzLnNldGRsb3BlbmZsYWdzYCBmdW5jdGlvbiwgYW5kIHN1cGVyc2VkZSB0aGUgc2ltaWxhciBjb25zdGFudHMKKyAgZGVmaW5lZCBpbiA6bW9kOmBjdHlwZXNgIGFuZCA6bW9kOmBETEZDTmAuICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIKKyAgaW4gOmlzc3VlOmAxMzIyNmAuKQorCisqIDpmdW5jOmBvcy5zeW1saW5rYCBub3cgYWNjZXB0cyAoYW5kIGlnbm9yZXMpIHRoZSBgYHRhcmdldF9pc19kaXJlY3RvcnlgYAorICBrZXl3b3JkIGFyZ3VtZW50IG9uIG5vbi1XaW5kb3dzIHBsYXRmb3JtcywgdG8gZWFzZSBjcm9zcy1wbGF0Zm9ybSBzdXBwb3J0LgorCisKK3BkYgorLS0tCisKK1RhYi1jb21wbGV0aW9uIGlzIG5vdyBhdmFpbGFibGUgbm90IG9ubHkgZm9yIGNvbW1hbmQgbmFtZXMsIGJ1dCBhbHNvIHRoZWlyCithcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgZm9yIHRoZSBgYGJyZWFrYGAgY29tbWFuZCwgZnVuY3Rpb24gYW5kIGZpbGUgbmFtZXMKK2FyZSBjb21wbGV0ZWQuCisKKyhDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwgaW4gOmlzc3VlOmAxNDIxMGApCisKKworcGlja2xlCistLS0tLS0KKworOmNsYXNzOmBwaWNrbGUuUGlja2xlcmAgb2JqZWN0cyBub3cgaGF2ZSBhbiBvcHRpb25hbAorOmF0dHI6YH5waWNrbGUuUGlja2xlci5kaXNwYXRjaF90YWJsZWAgYXR0cmlidXRlIGFsbG93aW5nIHRvIHNldCBwZXItcGlja2xlcgorcmVkdWN0aW9uIGZ1bmN0aW9ucy4KKworKENvbnRyaWJ1dGVkIGJ5IFJpY2hhcmQgT3Vka2VyayBpbiA6aXNzdWU6YDE0MTY2YC4pCisKKworcHlkb2MKKy0tLS0tCisKK1RoZSBUayBHVUkgYW5kIHRoZSA6ZnVuYzpgfnB5ZG9jLnNlcnZlYCBmdW5jdGlvbiBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZQorOm1vZDpgcHlkb2NgIG1vZHVsZTogYGBweWRvYyAtZ2BgIGFuZCA6ZnVuYzpgfnB5ZG9jLnNlcnZlYCBoYXZlIGJlZW4gZGVwcmVjYXRlZAoraW4gUHl0aG9uIDMuMi4KKworCityZQorLS0KKworOmNsYXNzOmBzdHJgIHJlZ3VsYXIgZXhwcmVzc2lvbnMgbm93IHN1cHBvcnQgYGBcdWBgIGFuZCBgYFxVYGAgZXNjYXBlcy4KKworKENvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgaW4gOmlzc3VlOmAzNjY1YC4pCisKKworc2NoZWQKKy0tLS0tCisKKyogOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIucnVuYCBub3cgYWNjZXB0cyBhICpibG9ja2luZyogcGFyYW1ldGVyIHdoaWNoIHdoZW4KKyAgc2V0IHRvIEZhbHNlIG1ha2VzIHRoZSBtZXRob2QgZXhlY3V0ZSB0aGUgc2NoZWR1bGVkIGV2ZW50cyBkdWUgdG8gZXhwaXJlCisgIHNvb25lc3QgKGlmIGFueSkgYW5kIHRoZW4gcmV0dXJuIGltbWVkaWF0ZWx5LgorICBUaGlzIGlzIHVzZWZ1bCBpbiBjYXNlIHlvdSB3YW50IHRvIHVzZSB0aGUgOmNsYXNzOmB+c2NoZWQuc2NoZWR1bGVyYCBpbgorICBub24tYmxvY2tpbmcgYXBwbGljYXRpb25zLiAgKENvbnRyaWJ1dGVkIGJ5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTM0NDlgKQorCisqIDpjbGFzczpgfnNjaGVkLnNjaGVkdWxlcmAgY2xhc3MgY2FuIG5vdyBiZSBzYWZlbHkgdXNlZCBpbiBtdWx0aS10aHJlYWRlZAorICBlbnZpcm9ubWVudHMuICAoQ29udHJpYnV0ZWQgYnkgSm9zaWFoIENhcmxzb24gYW5kIEdpYW1wYW9sbyBSb2RvbMOgIGluCisgIDppc3N1ZTpgODY4NGApCisKKyogKnRpbWVmdW5jKiBhbmQgKmRlbGF5ZnVuY3QqIHBhcmFtZXRlcnMgb2YgOmNsYXNzOmB+c2NoZWQuc2NoZWR1bGVyYCBjbGFzcworICBjb25zdHJ1Y3RvciBhcmUgbm93IG9wdGlvbmFsIGFuZCBkZWZhdWx0cyB0byA6ZnVuYzpgdGltZS50aW1lYCBhbmQKKyAgOmZ1bmM6YHRpbWUuc2xlZXBgIHJlc3BlY3RpdmVseS4gIChDb250cmlidXRlZCBieSBDaHJpcyBDbGFyayBpbgorICA6aXNzdWU6YDEzMjQ1YCkKKworKiA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmAgYW5kIDptZXRoOmB+c2NoZWQuc2NoZWR1bGVyLmVudGVyYWJzYAorICAqYXJndW1lbnQqIHBhcmFtZXRlciBpcyBub3cgb3B0aW9uYWwuICAoQ29udHJpYnV0ZWQgYnkgQ2hyaXMgQ2xhcmsgaW4KKyAgOmlzc3VlOmAxMzI0NWApCisKKyogOm1ldGg6YH5zY2hlZC5zY2hlZHVsZXIuZW50ZXJgIGFuZCA6bWV0aDpgfnNjaGVkLnNjaGVkdWxlci5lbnRlcmFic2AKKyAgbm93IGFjY2VwdCBhICprd2FyZ3MqIHBhcmFtZXRlci4gIChDb250cmlidXRlZCBieSBDaHJpcyBDbGFyayBpbgorICA6aXNzdWU6YDEzMjQ1YCkKKworCitzZWxlY3QKKy0tLS0tLQorCitTb2xhcmlzIGFuZCBkZXJpdmF0aXZlcyBwbGF0Zm9ybXMgaGF2ZSBhIG5ldyBjbGFzcyA6Y2xhc3M6YHNlbGVjdC5kZXZwb2xsYAorZm9yIGhpZ2ggcGVyZm9ybWFuY2UgYXN5bmNocm9ub3VzIHNvY2tldHMgdmlhIDpmaWxlOmAvZGV2L3BvbGxgLgorKENvbnRyaWJ1dGVkIGJ5IEplc8O6cyBDZWEgQXZpw7NuIGluIDppc3N1ZTpgNjM5N2AuKQorCisKK3NobGV4CistLS0tLQorCitUaGUgcHJldmlvdXNseSB1bmRvY3VtZW50ZWQgaGVscGVyIGZ1bmN0aW9uIGBgcXVvdGVgYCBmcm9tIHRoZQorOm1vZDpgcGlwZXNgIG1vZHVsZXMgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIDptb2Q6YHNobGV4YCBtb2R1bGUgYW5kCitkb2N1bWVudGVkLiAgOmZ1bmM6YH5zaGxleC5xdW90ZWAgcHJvcGVybHkgZXNjYXBlcyBhbGwgY2hhcmFjdGVycyBpbiBhIHN0cmluZwordGhhdCBtaWdodCBiZSBvdGhlcndpc2UgZ2l2ZW4gc3BlY2lhbCBtZWFuaW5nIGJ5IHRoZSBzaGVsbC4KKworCitzaHV0aWwKKy0tLS0tLQorCisqIE5ldyBmdW5jdGlvbnM6CisKKyAgKiA6ZnVuYzpgfnNodXRpbC5kaXNrX3VzYWdlYDogcHJvdmlkZXMgdG90YWwsIHVzZWQgYW5kIGZyZWUgZGlzayBzcGFjZQorICAgIHN0YXRpc3RpY3MuIChDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDEyNDQyYCkKKyAgKiA6ZnVuYzpgfnNodXRpbC5jaG93bmA6IGFsbG93cyBvbmUgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG9mIHRoZSBnaXZlbgorICAgIHBhdGggYWxzbyBzcGVjaWZ5aW5nIHRoZSB1c2VyL2dyb3VwIG5hbWVzIGFuZCBub3Qgb25seSB0aGVpciBudW1lcmljCisgICAgaWRzLiAoQ29udHJpYnV0ZWQgYnkgU2FuZHJvIFRvc2kgaW4gOmlzc3VlOmAxMjE5MWApCisgICogOmZ1bmM6YHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZWA6IHJldHVybnMgdGhlIHNpemUgb2YgdGhlIHRlcm1pbmFsIHdpbmRvdworICAgIHRvIHdoaWNoIHRoZSBpbnRlcnByZXRlciBpcyBhdHRhY2hlZC4gIChDb250cmlidXRlZCBieSBaYmlnbmlldworICAgIErEmWRyemVqZXdza2ktU3ptZWsgaW4gOmlzc3VlOmAxMzYwOWAuKQorCisqIDpmdW5jOmB+c2h1dGlsLmNvcHkyYCBhbmQgOmZ1bmM6YH5zaHV0aWwuY29weXN0YXRgIG5vdyBwcmVzZXJ2ZSBmaWxlCisgIHRpbWVzdGFtcHMgd2l0aCBuYW5vc2Vjb25kIHByZWNpc2lvbiBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IGl0LgorICBUaGV5IGFsc28gcHJlc2VydmUgZmlsZSAiZXh0ZW5kZWQgYXR0cmlidXRlcyIgb24gTGludXguICAoQ29udHJpYnV0ZWQKKyAgYnkgTGFycnkgSGFzdGluZ3MgaW4gOmlzc3VlOmAxNDEyN2AgYW5kICA6aXNzdWU6YDE1MjM4YC4pCisKKyogU2V2ZXJhbCBmdW5jdGlvbnMgbm93IHRha2UgYW4gb3B0aW9uYWwgYGBzeW1saW5rc2BgIGFyZ3VtZW50OiB3aGVuIHRoYXQKKyAgcGFyYW1ldGVyIGlzIHRydWUsIHN5bWxpbmtzIGFyZW4ndCBkZXJlZmVyZW5jZWQgYW5kIHRoZSBvcGVyYXRpb24gaW5zdGVhZAorICBhY3RzIG9uIHRoZSBzeW1saW5rIGl0c2VsZiAob3IgY3JlYXRlcyBvbmUsIGlmIHJlbGV2YW50KS4KKyAgKENvbnRyaWJ1dGVkIGJ5IEh5bmVrIFNjaGxhd2FjayBpbiA6aXNzdWU6YDEyNzE1YC4pCisKKyogV2hlbiBjb3B5aW5nIGZpbGVzIHRvIGEgZGlmZmVyZW50IGZpbGUgc3lzdGVtLCA6ZnVuYzpgfnNodXRpbC5tb3ZlYCBub3cKKyAgaGFuZGxlcyBzeW1saW5rcyB0aGUgd2F5IHRoZSBwb3NpeCBgYG12YGAgY29tbWFuZCBkb2VzLCByZWNyZWF0aW5nIHRoZQorICBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHlpbmcgdGhlIHRhcmdldCBmaWxlIGNvbnRlbnRzLiAgKENvbnRyaWJ1dGVkIGJ5CisgIEpvbmF0aGFuIE5pZWhvZiBpbiA6aXNzdWU6YDk5OTNgLikgIDpmdW5jOmB+c2h1dGlsLm1vdmVgIG5vdyBhbHNvIHJldHVybnMKKyAgdGhlIGBgZHN0YGAgYXJndW1lbnQgYXMgaXRzIHJlc3VsdC4KKworKiA6ZnVuYzpgfnNodXRpbC5ybXRyZWVgIGlzIG5vdyByZXNpc3RhbnQgdG8gc3ltbGluayBhdHRhY2tzIG9uIHBsYXRmb3JtcworICB3aGljaCBzdXBwb3J0IHRoZSBuZXcgYGBkaXJfZmRgYCBwYXJhbWV0ZXIgaW4gOmZ1bmM6YG9zLm9wZW5gIGFuZAorICA6ZnVuYzpgb3MudW5saW5rYC4gKENvbnRyaWJ1dGVkIGJ5IE1hcnRpbiB2b24gTMO2d2lzIGFuZCBIeW5layBTY2hsYXdhY2sKKyAgaW4gOmlzc3VlOmA0NDg5YC4pCisKKworc2lnbmFsCistLS0tLS0KKworKiBUaGUgOm1vZDpgc2lnbmFsYCBtb2R1bGUgaGFzIG5ldyBmdW5jdGlvbnM6CisKKyAgKiA6ZnVuYzpgfnNpZ25hbC5wdGhyZWFkX3NpZ21hc2tgOiBmZXRjaCBhbmQvb3IgY2hhbmdlIHRoZSBzaWduYWwgbWFzayBvZiB0aGUKKyAgICBjYWxsaW5nIHRocmVhZCAoQ29udHJpYnV0ZWQgYnkgSmVhbi1QYXVsIENhbGRlcm9uZSBpbiA6aXNzdWU6YDg0MDdgKSA7CisgICogOmZ1bmM6YH5zaWduYWwucHRocmVhZF9raWxsYDogc2VuZCBhIHNpZ25hbCB0byBhIHRocmVhZCA7CisgICogOmZ1bmM6YH5zaWduYWwuc2lncGVuZGluZ2A6IGV4YW1pbmUgcGVuZGluZyBmdW5jdGlvbnMgOworICAqIDpmdW5jOmB+c2lnbmFsLnNpZ3dhaXRgOiB3YWl0IGEgc2lnbmFsLgorICAqIDpmdW5jOmB+c2lnbmFsLnNpZ3dhaXRpbmZvYDogd2FpdCBmb3IgYSBzaWduYWwsIHJldHVybmluZyBkZXRhaWxlZAorICAgIGluZm9ybWF0aW9uIGFib3V0IGl0LgorICAqIDpmdW5jOmB+c2lnbmFsLnNpZ3RpbWVkd2FpdGA6IGxpa2UgOmZ1bmM6YH5zaWduYWwuc2lnd2FpdGluZm9gIGJ1dCB3aXRoIGEKKyAgICB0aW1lb3V0LgorCisqIFRoZSBzaWduYWwgaGFuZGxlciB3cml0ZXMgdGhlIHNpZ25hbCBudW1iZXIgYXMgYSBzaW5nbGUgYnl0ZSBpbnN0ZWFkIG9mCisgIGEgbnVsIGJ5dGUgaW50byB0aGUgd2FrZXVwIGZpbGUgZGVzY3JpcHRvci4gU28gaXQgaXMgcG9zc2libGUgdG8gd2FpdCBtb3JlCisgIHRoYW4gb25lIHNpZ25hbCBhbmQga25vdyB3aGljaCBzaWduYWxzIHdlcmUgcmFpc2VkLgorCisqIDpmdW5jOmBzaWduYWwuc2lnbmFsYCBhbmQgOmZ1bmM6YHNpZ25hbC5zaWdpbnRlcnJ1cHRgIHJhaXNlIGFuIE9TRXJyb3IsCisgIGluc3RlYWQgb2YgYSBSdW50aW1lRXJyb3I6IE9TRXJyb3IgaGFzIGFuIGVycm5vIGF0dHJpYnV0ZS4KKworCitzbXRwZAorLS0tLS0KKworVGhlIDptb2Q6YHNtdHBkYCBtb2R1bGUgbm93IHN1cHBvcnRzIDpyZmM6YDUzMjFgIChleHRlbmRlZCBTTVRQKSBhbmQgOnJmYzpgMTg3MGAKKyhzaXplIGV4dGVuc2lvbikuICBQZXIgdGhlIHN0YW5kYXJkLCB0aGVzZSBleHRlbnNpb25zIGFyZSBlbmFibGVkIGlmIGFuZCBvbmx5CitpZiB0aGUgY2xpZW50IGluaXRpYXRlcyB0aGUgc2Vzc2lvbiB3aXRoIGFuIGBgRUhMT2BgIGNvbW1hbmQuCisKKyhJbml0aWFsIGBgRUxIT2BgIHN1cHBvcnQgYnkgQWxiZXJ0byBUcmV2aW5vLiAgU2l6ZSBleHRlbnNpb24gYnkgSnVoYW5hCitKYXVoaWFpbmVuLiAgU3Vic3RhbnRpYWwgYWRkaXRpb25hbCB3b3JrIG9uIHRoZSBwYXRjaCBjb250cmlidXRlZCBieSBNaWNoZWxlCitPcnLDuSBhbmQgRGFuIEJvc3dlbGwuICA6aXNzdWU6YDg3MzlgKQorCisKK3NtdHBsaWIKKy0tLS0tLS0KKworVGhlIDpjbGFzczpgfnNtdHBsaWIuU01UUGAsIDpjbGFzczpgfnNtdHBsaWIuU01UUF9TU0xgLCBhbmQKKzpjbGFzczpgfnNtdHBsaWIuTE1UUGAgY2xhc3NlcyBub3cgYWNjZXB0IGEgYGBzb3VyY2VfYWRkcmVzc2BgIGtleXdvcmQgYXJndW1lbnQKK3RvIHNwZWNpZnkgdGhlIGBgKGhvc3QsIHBvcnQpYGAgdG8gdXNlIGFzIHRoZSBzb3VyY2UgYWRkcmVzcyBpbiB0aGUgYmluZCBjYWxsCit3aGVuIGNyZWF0aW5nIHRoZSBvdXRnb2luZyBzb2NrZXQuICAoQ29udHJpYnV0ZWQgYnkgUGF1bG8gU2NhcmRpbmUgaW4KKzppc3N1ZTpgMTEyODFgLikKKworOmNsYXNzOmB+c210cGxpYi5TTVRQYCBub3cgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCwgYWxsb3dpbmcgYW4KK2BgU01UUGBgIGluc3RhbmNlIHRvIGJlIHVzZWQgaW4gYSBgYHdpdGhgYCBzdGF0ZW1lbnQuICAoQ29udHJpYnV0ZWQKK2J5IEdpYW1wYW9sbyBSb2RvbMOgIGluIDppc3N1ZTpgMTEyODlgLikKKworVGhlIDpjbGFzczpgfnNtdHBsaWIuU01UUF9TU0xgIGNvbnN0cnVjdG9yIGFuZCB0aGUgOm1ldGg6YH5zbXRwbGliLlNNVFAuc3RhcnR0bHNgCittZXRob2Qgbm93IGFjY2VwdCBhbiBTU0xDb250ZXh0IHBhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZQorY2hhbm5lbC4gIChDb250cmlidXRlZCBieSBLYXN1biBIZXJhdGggaW4gOmlzc3VlOmA4ODA5YCkKKworCitzb2NrZXQKKy0tLS0tLQorCisqIFRoZSA6Y2xhc3M6YH5zb2NrZXQuc29ja2V0YCBjbGFzcyBub3cgZXhwb3NlcyBhZGRpdGlvbmFsIG1ldGhvZHMgdG8gcHJvY2VzcworICBhbmNpbGxhcnkgZGF0YSB3aGVuIHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybToKKworICAqIDpmdW5jOmB+c29ja2V0LnNvY2tldC5zZW5kbXNnYAorICAqIDpmdW5jOmB+c29ja2V0LnNvY2tldC5yZWN2bXNnYAorICAqIDpmdW5jOmB+c29ja2V0LnNvY2tldC5yZWN2bXNnX2ludG9gCisKKyAgKENvbnRyaWJ1dGVkIGJ5IERhdmlkIFdhdHNvbiBpbiA6aXNzdWU6YDY1NjBgLCBiYXNlZCBvbiBhbiBlYXJsaWVyIHBhdGNoIGJ5CisgIEhlaWtvIFd1bmRyYW0pCisKKyogVGhlIDpjbGFzczpgfnNvY2tldC5zb2NrZXRgIGNsYXNzIG5vdyBzdXBwb3J0cyB0aGUgUEZfQ0FOIHByb3RvY29sIGZhbWlseQorICAoaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Tb2NrZXRjYW4pLCBvbiBMaW51eAorICAoaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvMjUzNDI1KS4KKworICAoQ29udHJpYnV0ZWQgYnkgTWF0dGhpYXMgRnVjaHMsIHVwZGF0ZWQgYnkgVGlhZ28gR29uw6dhbHZlcyBpbiA6aXNzdWU6YDEwMTQxYCkKKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSBQRl9SRFMgcHJvdG9jb2wgZmFtaWx5CisgIChodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1JlbGlhYmxlX0RhdGFncmFtX1NvY2tldHMgYW5kCisgIGh0dHA6Ly9vc3Mub3JhY2xlLmNvbS9wcm9qZWN0cy9yZHMvKS4KKworKiBUaGUgOmNsYXNzOmB+c29ja2V0LnNvY2tldGAgY2xhc3Mgbm93IHN1cHBvcnRzIHRoZSBgYFBGX1NZU1RFTWBgIHByb3RvY29sCisgIGZhbWlseSBvbiBPUyBYLiAgKENvbnRyaWJ1dGVkIGJ5IE1pY2hhZWwgR29kZXJiYXVlciBpbiA6aXNzdWU6YDEzNzc3YC4pCisKKyogTmV3IGZ1bmN0aW9uIDpmdW5jOmB+c29ja2V0LnNldGhvc3RuYW1lYCBhbGxvd3MgdGhlIGhvc3RuYW1lIHRvIGJlIHNldAorICBvbiB1bml4IHN5c3RlbXMgaWYgdGhlIGNhbGxpbmcgcHJvY2VzcyBoYXMgc3VmZmljaWVudCBwcml2aWxlZ2VzLgorICAoQ29udHJpYnV0ZWQgYnkgUm9zcyBMYWdlcndhbGwgaW4gOmlzc3VlOmAxMDg2NmAuKQorCisKK3NvY2tldHNlcnZlcgorLS0tLS0tLS0tLS0tCisKKzpjbGFzczpgfnNvY2tldHNlcnZlci5CYXNlU2VydmVyYCBub3cgaGFzIGFuIG92ZXJyaWRhYmxlIG1ldGhvZAorOm1ldGg6YH5zb2NrZXRzZXJ2ZXIuQmFzZVNlcnZlci5zZXJ2aWNlX2FjdGlvbnNgIHRoYXQgaXMgY2FsbGVkIGJ5IHRoZQorOm1ldGg6YH5zb2NrZXRzZXJ2ZXIuQmFzZVNlcnZlci5zZXJ2ZV9mb3JldmVyYCBtZXRob2QgaW4gdGhlIHNlcnZpY2UgbG9vcC4KKzpjbGFzczpgfnNvY2tldHNlcnZlci5Gb3JraW5nTWl4SW5gIG5vdyB1c2VzIHRoaXMgdG8gY2xlYW4gdXAgem9tYmllCitjaGlsZCBwcm9jZXNlcy4gIChDb250cmlidXRlZCBieSBKdXN0aW4gV2Fya2VudGluIGluIDppc3N1ZTpgMTExMDlgLikKKworCitzcWxpdGUzCistLS0tLS0tCisKK05ldyA6Y2xhc3M6YHNxbGl0ZTMuQ29ubmVjdGlvbmAgbWV0aG9kCis6bWV0aDpgfnNxbGl0ZTMuQ29ubmVjdGlvbi5zZXRfdHJhY2VfY2FsbGJhY2tgIGNhbiBiZSB1c2VkIHRvIGNhcHR1cmUgYSB0cmFjZSBvZgorYWxsIHNxbCBjb21tYW5kcyBwcm9jZXNzZWQgYnkgc3FsaXRlLiAgKENvbnRyaWJ1dGVkIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZgoraW4gOmlzc3VlOmAxMTY4OGAuKQorCisKK3NzbAorLS0tCisKKyogVGhlIDptb2Q6YHNzbGAgbW9kdWxlIGhhcyB0d28gbmV3IHJhbmRvbSBnZW5lcmF0aW9uIGZ1bmN0aW9uczoKKworICAqIDpmdW5jOmB+c3NsLlJBTkRfYnl0ZXNgOiBnZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcKKyAgICBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgorICAqIDpmdW5jOmB+c3NsLlJBTkRfcHNldWRvX2J5dGVzYDogZ2VuZXJhdGUgcHNldWRvLXJhbmRvbSBieXRlcy4KKworICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAxMjA0OWApCisKKyogVGhlIDptb2Q6YHNzbGAgbW9kdWxlIG5vdyBleHBvc2VzIGEgZmluZXItZ3JhaW5lZCBleGNlcHRpb24gaGllcmFyY2h5CisgIGluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGluc3BlY3QgdGhlIHZhcmlvdXMga2luZHMgb2YgZXJyb3JzLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMTE4M2ApCisKKyogOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIG5vdyBhY2NlcHRzIGEgKnBhc3N3b3JkKiBhcmd1bWVudAorICB0byBiZSB1c2VkIGlmIHRoZSBwcml2YXRlIGtleSBpcyBlbmNyeXB0ZWQuCisgIChDb250cmlidXRlZCBieSBBZGFtIFNpbXBraW5zIGluIDppc3N1ZTpgMTI4MDNgKQorCisqIERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZSwgYm90aCByZWd1bGFyIGFuZCBFbGxpcHRpYyBDdXJ2ZS1iYXNlZCwgaXMKKyAgbm93IHN1cHBvcnRlZCB0aHJvdWdoIHRoZSA6bWV0aDpgfnNzbC5TU0xDb250ZXh0LmxvYWRfZGhfcGFyYW1zYCBhbmQKKyAgOm1ldGg6YH5zc2wuU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZWAgbWV0aG9kcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTM2MjZgIGFuZCA6aXNzdWU6YDEzNjI3YCkKKworKiBTU0wgc29ja2V0cyBoYXZlIGEgbmV3IDptZXRoOmB+c3NsLlNTTFNvY2tldC5nZXRfY2hhbm5lbF9iaW5kaW5nYCBtZXRob2QKKyAgYWxsb3dpbmcgdGhlIGltcGxlbWVudGF0aW9uIG9mIGNlcnRhaW4gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBzdWNoIGFzCisgIFNDUkFNLVNIQS0xLVBMVVMuICAoQ29udHJpYnV0ZWQgYnkgSmFjZWsgS29uaWVjem55IGluIDppc3N1ZTpgMTI1NTFgKQorCisqIFlvdSBjYW4gcXVlcnkgdGhlIFNTTCBjb21wcmVzc2lvbiBhbGdvcml0aG0gdXNlZCBieSBhbiBTU0wgc29ja2V0LCB0aGFua3MKKyAgdG8gaXRzIG5ldyA6bWV0aDpgfnNzbC5TU0xTb2NrZXQuY29tcHJlc3Npb25gIG1ldGhvZC4gIFRoZSBuZXcgYXR0cmlidXRlCisgIDphdHRyOmB+c3NsLk9QX05PX0NPTVBSRVNTSU9OYCBjYW4gYmUgdXNlZCB0byBkaXNhYmxlIGNvbXByZXNzaW9uLgorICAoQ29udHJpYnV0ZWQgYnkgQW50b2luZSBQaXRyb3UgaW4gOmlzc3VlOmAxMzYzNGApCisKKyogU3VwcG9ydCBoYXMgYmVlbiBhZGRlZCBmb3IgdGhlIE5leHQgUHJvY290b2wgTmVnb3RpYXRpb24gZXh0ZW5zaW9uIHVzaW5nCisgIHRoZSA6bWV0aDpgc3NsLlNTTENvbnRleHQuc2V0X25wbl9wcm90b2NvbHNgIG1ldGhvZC4KKyAgKENvbnRyaWJ1dGVkIGJ5IENvbGluIE1hcmMgaW4gOmlzc3VlOmAxNDIwNGApCisKKyogU1NMIGVycm9ycyBjYW4gbm93IGJlIGludHJvc3BlY3RlZCBtb3JlIGVhc2lseSB0aGFua3MgdG8KKyAgOmF0dHI6YH5zc2wuU1NMRXJyb3IubGlicmFyeWAgYW5kIDphdHRyOmB+c3NsLlNTTEVycm9yLnJlYXNvbmAgYXR0cmlidXRlcy4KKyAgKENvbnRyaWJ1dGVkIGJ5IEFudG9pbmUgUGl0cm91IGluIDppc3N1ZTpgMTQ4MzdgKQorCisqIFRoZSA6ZnVuYzpgfnNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlYCBmdW5jdGlvbiBub3cgc3VwcG9ydHMgSVB2Ni4KKyAgKENvbnRyaWJ1dGVkIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaSBpbiA6aXNzdWU6YDExODExYC4pCisKKyogTmV3IGF0dHJpYnV0ZSA6YXR0cjpgfnNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0VgIGFsbG93cyBzZXR0aW5nCisgIFNTTHYzIHNlcnZlciBzb2NrZXRzIHRvIHVzZSB0aGUgc2VydmVyJ3MgY2lwaGVyIG9yZGVyaW5nIHByZWZlcmVuY2UgcmF0aGVyCisgIHRoYW4gdGhlIGNsaWVudCdzICg6aXNzdWU6YDEzNjM1YCkuCisKKworc3RhdAorLS0tLQorCitUaGUgdW5kb2N1bWVudGVkIHRhcmZpbGUuZmlsZW1vZGUgZnVuY3Rpb24gaGFzIGJlZW4gbW92ZWQgdG8KKzpmdW5jOmBzdGF0LmZpbGVtb2RlYC4gSXQgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIGZpbGUncyBtb2RlIHRvIGEgc3RyaW5nIG9mCit0aGUgZm9ybSAnLXJ3eHJ3eHJ3eCcuCisKKyhDb250cmlidXRlZCBieSBHaWFtcGFvbG8gUm9kb2zDoCBpbiA6aXNzdWU6YDE0ODA3YCkKKworCitzdHJ1Y3QKKy0tLS0tLQorCitUaGUgOm1vZDpgc3RydWN0YCBtb2R1bGUgbm93IHN1cHBvcnRzIGBgc3NpemVfdGBgIGFuZCBgYHNpemVfdGBgIHZpYSB0aGUKK25ldyBjb2RlcyBgYG5gYCBhbmQgYGBOYGAsIHJlc3BlY3RpdmVseS4gIChDb250cmlidXRlZCBieSBBbnRvaW5lIFBpdHJvdQoraW4gOmlzc3VlOmAzMTYzYC4pCisKKworc3VicHJvY2VzcworLS0tLS0tLS0tLQorCitDb21tYW5kIHN0cmluZ3MgY2FuIG5vdyBiZSBieXRlcyBvYmplY3RzIG9uIHBvc2l4IHBsYXRmb3Jtcy4gIChDb250cmlidXRlZCBieQorVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmA4NTEzYC4pCisKK0EgbmV3IGNvbnN0YW50IDpkYXRhOmB+c3VicHJvY2Vzcy5ERVZOVUxMYCBhbGxvd3Mgc3VwcHJlc3Npbmcgb3V0cHV0IGluIGEKK3BsYXRmb3JtLWluZGVwZW5kZW50IGZhc2hpb24uICAoQ29udHJpYnV0ZWQgYnkgUm9zcyBMYWdlcndhbGwgaW4KKzppc3N1ZTpgNTg3MGAuKQorCisKK3N5cworLS0tCisKK1RoZSA6bW9kOmBzeXNgIG1vZHVsZSBoYXMgYSBuZXcgOmRhdGE6YH5zeXMudGhyZWFkX2luZm9gIDp0ZXJtOmBzdHJ1Y3QKK3NlcXVlbmNlYCBob2xkaW5nIGluZm9ybWF0aW9ucyBhYm91dCB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uCisoOmlzc3VlOmAxMTIyM2ApLgorCisKK3RhcmZpbGUKKy0tLS0tLS0KKworOm1vZDpgdGFyZmlsZWAgbm93IHN1cHBvcnRzIGBgbHptYWBgIGVuY29kaW5nIHZpYSB0aGUgOm1vZDpgbHptYWAgbW9kdWxlLgorKENvbnRyaWJ1dGVkIGJ5IExhcnMgR3VzdMOkYmVsIGluIDppc3N1ZTpgNTY4OWAuKQorCisKK3RlbXBmaWxlCistLS0tLS0tLQorCis6Y2xhc3M6YHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlYFwncworOm1ldGg6YH50ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZS50cnVjYXRlYCBtZXRob2Qgbm93IGFjY2VwdHMKK2EgYGBzaXplYGAgcGFyYW1ldGVyLiAgKENvbnRyaWJ1dGVkIGJ5IFJ5YW4gS2VsbHkgaW4gOmlzc3VlOmA5OTU3YC4pCisKKwordGV4dHdyYXAKKy0tLS0tLS0tCisKK1RoZSA6bW9kOmB0ZXh0d3JhcGAgbW9kdWxlIGhhcyBhIG5ldyA6ZnVuYzpgfnRleHR3cmFwLmluZGVudGAgdGhhdCBtYWtlcworaXQgc3RyYWlnaHRmb3J3YXJkIHRvIGFkZCBhIGNvbW1vbiBwcmVmaXggdG8gc2VsZWN0ZWQgbGluZXMgaW4gYSBibG9jaworb2YgdGV4dCAgKDppc3N1ZTpgMTM4NTdgKS4KKworCit0aHJlYWRpbmcKKy0tLS0tLS0tLQorCis6Y2xhc3M6YHRocmVhZGluZy5Db25kaXRpb25gLCA6Y2xhc3M6YHRocmVhZGluZy5TZW1hcGhvcmVgLAorOmNsYXNzOmB0aHJlYWRpbmcuQm91bmRlZFNlbWFwaG9yZWAsIDpjbGFzczpgdGhyZWFkaW5nLkV2ZW50YCwgYW5kCis6Y2xhc3M6YHRocmVhZGluZy5UaW1lcmAsIGFsbCBvZiB3aGljaCB1c2VkIHRvIGJlIGZhY3RvcnkgZnVuY3Rpb25zIHJldHVybmluZyBhCitjbGFzcyBpbnN0YW5jZSwgYXJlIG5vdyBjbGFzc2VzIGFuZCBtYXkgYmUgc3ViY2xhc3NlZC4gKENvbnRyaWJ1dGVkIGJ5IMOJcmljCitBcmF1am8gaW4gOmlzc3VlOmAxMDk2OGApLgorCitUaGUgOmNsYXNzOmB0aHJlYWRpbmcuVGhyZWFkYCBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBhIGBgZGFlbW9uYGAga2V5d29yZAorYXJndW1lbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgaW5oZXJpdGluZyB0aGUgYGBkZWFtb25gYCBmbGFnCit2YWx1ZSBmcm9tIHRoZSBwYXJlbnQgdGhyZWFkICg6aXNzdWU6YDYwNjRgKS4KKworVGhlIGZvcm1lcmx5IHByaXZhdGUgZnVuY3Rpb24gYGBfdGhyZWFkLmdldF9pZGVudGBgIGlzIG5vdyBhdmFpbGFibGUgYXMgdGhlCitwdWJsaWMgZnVuY3Rpb24gOmZ1bmM6YHRocmVhZGluZy5nZXRfaWRlbnRgLiAgVGhpcyBlbGltaW5hdGVzIHNldmVyYWwgY2FzZXMgb2YKK2RpcmVjdCBhY2Nlc3MgdG8gdGhlIGBgX3RocmVhZGBgIG1vZHVsZSBpbiB0aGUgc3RkbGliLiAgVGhpcmQgcGFydHkgY29kZSB0aGF0Cit1c2VkIGBgX3RocmVhZC5nZXRfaWRlbnRgYCBzaG91bGQgbGlrZXdpc2UgYmUgY2hhbmdlZCB0byB1c2UgdGhlIG5ldyBwdWJsaWMKK2ludGVyZmFjZS4KKworCit0aW1lCistLS0tCisKK1RoZSA6cGVwOmA0MThgIGFkZGVkIG5ldyBmdW5jdGlvbnMgdG8gdGhlIDptb2Q6YHRpbWVgIG1vZHVsZToKKworKiA6ZnVuYzpgfnRpbWUuZ2V0X2Nsb2NrX2luZm9gOiBHZXQgaW5mb3JtYXRpb24gb24gYSBjbG9jay4KKyogOmZ1bmM6YH50aW1lLm1vbm90b25pY2A6IE1vbm90b25pYyBjbG9jayAoY2Fubm90IGdvIGJhY2t3YXJkKSwgbm90IGFmZmVjdGVkCisgIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzLgorKiA6ZnVuYzpgfnRpbWUucGVyZl9jb3VudGVyYDogUGVyZm9ybWFuY2UgY291bnRlciB3aXRoIHRoZSBoaWdoZXN0IGF2YWlsYWJsZQorICByZXNvbHV0aW9uIHRvIG1lYXN1cmUgYSBzaG9ydCBkdXJhdGlvbi4KKyogOmZ1bmM6YH50aW1lLnByb2Nlc3NfdGltZWA6IFN1bSBvZiB0aGUgc3lzdGVtIGFuZCB1c2VyIENQVSB0aW1lIG9mIHRoZQorICBjdXJyZW50IHByb2Nlc3MuCisKK090aGVyIG5ldyBmdW5jdGlvbnM6CisKKyogOmZ1bmM6YH50aW1lLmNsb2NrX2dldHJlc2AsIDpmdW5jOmB+dGltZS5jbG9ja19nZXR0aW1lYCBhbmQKKyAgOmZ1bmM6YH50aW1lLmNsb2NrX3NldHRpbWVgIGZ1bmN0aW9ucyB3aXRoIGBgQ0xPQ0tfeHh4YGAgY29uc3RhbnRzLgorICAoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAxMDI3OGApCisKK1RvIGltcHJvdmUgY3Jvc3MgcGxhdGZvcm0gY29uc2lzdGVuY3ksIDpmdW5jOmB+dGltZS5zbGVlcGAgbm93IHJhaXNlcyBhCis6ZXhjOmBWYWx1ZUVycm9yYCB3aGVuIHBhc3NlZCBhIG5lZ2F0aXZlIHNsZWVwIHZhbHVlLiAgUHJldmlvdXNseSB0aGlzIHdhcyBhbgorZXJyb3Igb24gcG9zaXgsIGJ1dCBwcm9kdWNlZCBhbiBpbmZpbml0ZSBzbGVlcCBvbiBXaW5kb3dzLgorCisKK3R5cGVzCistLS0tLQorCitBZGQgYSBuZXcgOmNsYXNzOmB0eXBlcy5NYXBwaW5nUHJveHlUeXBlYCBjbGFzczogUmVhZC1vbmx5IHByb3h5IG9mIGEgbWFwcGluZy4KKyg6aXNzdWU6YDE0Mzg2YCkKKworCitUaGUgbmV3IGZ1bmN0aW9ucyBgdHlwZXMubmV3X2NsYXNzYCBhbmQgYHR5cGVzLnByZXBhcmVfY2xhc3NgIHByb3ZpZGUgc3VwcG9ydAorZm9yIFBFUCAzMTE1IGNvbXBsaWFudCBkeW5hbWljIHR5cGUgY3JlYXRpb24uICg6aXNzdWU6YDE0NTg4YCkKKworCit1bml0dGVzdAorLS0tLS0tLS0KKworOm1ldGg6YC5hc3NlcnRSYWlzZXNgLCA6bWV0aDpgLmFzc2VydFJhaXNlc1JlZ2V4YCwgOm1ldGg6YC5hc3NlcnRXYXJuc2AsIGFuZAorOm1ldGg6YC5hc3NlcnRXYXJuc1JlZ2V4YCBub3cgYWNjZXB0IGEga2V5d29yZCBhcmd1bWVudCAqbXNnKiB3aGVuIHVzZWQgYXMKK2NvbnRleHQgbWFuYWdlcnMuICAoQ29udHJpYnV0ZWQgYnkgRXppbyBNZWxvdHRpIGFuZCBXaW5zdG9uIEV3ZXJ0IGluCis6aXNzdWU6YDEwNzc1YCkKKworOm1ldGg6YHVuaXR0ZXN0LlRlc3RDYXNlLnJ1bmAgbm93IHJldHVybnMgdGhlIDpjbGFzczpgfnVuaXR0ZXN0LlRlc3RSZXN1bHRgCitvYmplY3QuCisKKwordXJsbGliCistLS0tLS0KKworVGhlIDpjbGFzczpgfnVybGxpYi5yZXF1ZXN0LlJlcXVlc3RgIGNsYXNzLCBub3cgYWNjZXB0cyBhICptZXRob2QqIGFyZ3VtZW50Cit1c2VkIGJ5IDptZXRoOmB+dXJsbGliLnJlcXVlc3QuUmVxdWVzdC5nZXRfbWV0aG9kYCB0byBkZXRlcm1pbmUgd2hhdCBIVFRQIG1ldGhvZAorc2hvdWxkIGJlIHVzZWQuICBGb3IgZXhhbXBsZSwgdGhpcyB3aWxsIHNlbmQgYSBgYCdIRUFEJ2BgIHJlcXVlc3Q6OgorCisgICA+Pj4gdXJsb3BlbihSZXF1ZXN0KCdodHRwOi8vd3d3LnB5dGhvbi5vcmcnLCBtZXRob2Q9J0hFQUQnKSkKKworKDppc3N1ZTpgMTY3MzAwN2ApCisKKword2ViYnJvd3NlcgorLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgd2ViYnJvd3NlcmAgbW9kdWxlIHN1cHBvcnRzIG1vcmUgImJyb3dzZXJzIjogR29vZ2xlIENocm9tZSAobmFtZWQKKzpwcm9ncmFtOmBjaHJvbWVgLCA6cHJvZ3JhbTpgY2hyb21pdW1gLCA6cHJvZ3JhbTpgY2hyb21lLWJyb3dzZXJgIG9yCis6cHJvZ3JhbTpgY2hyb21pdW0tYnJvd3NlcmAgZGVwZW5kaW5nIG9uIHRoZSB2ZXJzaW9uIGFuZCBvcGVyYXRpbmcgc3lzdGVtKSwKK2FuZCB0aGUgZ2VuZXJpYyBsYXVuY2hlcnMgOnByb2dyYW06YHhkZy1vcGVuYCwgZnJvbSB0aGUgRnJlZURlc2t0b3Aub3JnCitwcm9qZWN0LCBhbmQgOnByb2dyYW06YGd2ZnMtb3BlbmAsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IFVSSSBoYW5kbGVyIGZvciBHTk9NRQorMy4gIChUaGUgZm9ybWVyIGNvbnRyaWJ1dGVkIGJ5IEFybmF1ZCBDYWxtZXR0ZXMgaW4gOmlzc3VlOmAxMzYyMGAsIHRoZSBsYXR0ZXIKK2J5IE1hdHRoaWFzIEtsb3NlIGluIDppc3N1ZTpgMTQ0OTNgKQorCisKK3htbC5ldHJlZS5FbGVtZW50VHJlZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG1vZHVsZSBub3cgaW1wb3J0cyBpdHMgQyBhY2NlbGVyYXRvciBieQorZGVmYXVsdDsgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgbmVlZCB0byBleHBsaWNpdGx5IGltcG9ydAorOm1vZDpgeG1sLmV0cmVlLmNFbGVtZW50VHJlZWAgKHRoaXMgbW9kdWxlIHN0YXlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwKK2J1dCBpcyBub3cgZGVwcmVjYXRlZCkuICBJbiBhZGRpdGlvbiwgIHRoZSBgYGl0ZXJgYCBmYW1pbHkgb2YgbWV0aG9kcyBvZgorOmNsYXNzOmB+eG1sLmV0cmVlLkVsZW1lbnRUcmVlLkVsZW1lbnRgIGhhcyBiZWVuIG9wdGltaXplZCAocmV3cml0dGVuIGluIEMpLgorVGhlIG1vZHVsZSdzIGRvY3VtZW50YXRpb24gaGFzIGFsc28gYmVlbiBncmVhdGx5IGltcHJvdmVkIHdpdGggYWRkZWQgZXhhbXBsZXMKK2FuZCBhIG1vcmUgZGV0YWlsZWQgcmVmZXJlbmNlLgorCisKK3psaWIKKy0tLS0KKworTmV3IGF0dHJpYnV0ZSA6YXR0cjpgemxpYi5EZWNvbXByZXNzLmVvZmAgbWFrZXMgaXQgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2gKK2JldHdlZW4gYSBwcm9wZXJseS1mb3JtZWQgY29tcHJlc3NlZCBzdHJlYW0gYW5kIGFuIGluY29tcGxldGUgb3IgdHJ1bmNhdGVkIG9uZS4KKyhDb250cmlidXRlZCBieSBOYWRlZW0gVmF3ZGEgaW4gOmlzc3VlOmAxMjY0NmAuKQorCitOZXcgYXR0cmlidXRlIDphdHRyOmB6bGliLlpMSUJfUlVOVElNRV9WRVJTSU9OYCByZXBvcnRzIHRoZSB2ZXJzaW9uIHN0cmluZyBvZgordGhlIHVuZGVybHlpbmcgYGB6bGliYGAgbGlicmFyeSB0aGF0IGlzIGxvYWRlZCBhdCBydW50aW1lLiAgKENvbnRyaWJ1dGVkIGJ5CitUb3JzdGVuIExhbmRzY2hvZmYgaW4gOmlzc3VlOmAxMjMwNmAuKQorCisKK09wdGltaXphdGlvbnMKKz09PT09PT09PT09PT0KKworTWFqb3IgcGVyZm9ybWFuY2UgZW5oYW5jZW1lbnRzIGhhdmUgYmVlbiBhZGRlZDoKKworKiBUaGFua3MgdG8gOnBlcDpgMzkzYCwgc29tZSBvcGVyYXRpb25zIG9uIFVuaWNvZGUgc3RyaW5ncyBoYXZlIGJlZW4gb3B0aW1pemVkOgorCisgICogdGhlIG1lbW9yeSBmb290cHJpbnQgaXMgZGl2aWRlZCBieSAyIHRvIDQgZGVwZW5kaW5nIG9uIHRoZSB0ZXh0CisgICogZW5jb2RlIGFuIEFTQ0lJIHN0cmluZyB0byBVVEYtOCBkb2Vzbid0IG5lZWQgdG8gZW5jb2RlIGNoYXJhY3RlcnMgYW55bW9yZSwKKyAgICB0aGUgVVRGLTggcmVwcmVzZW50YXRpb24gaXMgc2hhcmVkIHdpdGggdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uCisgICogdGhlIFVURi04IGVuY29kZXIgaGFzIGJlZW4gb3B0aW1pemVkCisgICogcmVwZWF0aW5nIGEgc2luZ2xlIEFTQ0lJIGxldHRlciBhbmQgZ2V0dGluZyBhIHN1YnN0cmluZyBvZiBhIEFTQ0lJIHN0cmluZ3MKKyAgICBpcyA0IHRpbWVzIGZhc3RlcgorCisqIFVURi04IGlzIG5vdyAyeCB0byA0eCBmYXN0ZXIuICBVVEYtMTYgZW5jb2RpbmcgaXMgbm93IHVwIHRvIDEweCBmYXN0ZXIuCisKKyAgKGNvbnRyaWJ1dGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EsIDppc3N1ZTpgMTQ2MjRgLCA6aXNzdWU6YDE0NzM4YCBhbmQKKyAgOmlzc3VlOmAxNTAyNmAuKQorCisKK0J1aWxkIGFuZCBDIEFQSSBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitDaGFuZ2VzIHRvIFB5dGhvbidzIGJ1aWxkIHByb2Nlc3MgYW5kIHRvIHRoZSBDIEFQSSBpbmNsdWRlOgorCisqIE5ldyA6cGVwOmAzMTE4YCByZWxhdGVkIGZ1bmN0aW9uOgorCisgICogOmM6ZnVuYzpgUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnlgCisKKyogOnBlcDpgMzkzYCBhZGRlZCBuZXcgVW5pY29kZSB0eXBlcywgbWFjcm9zIGFuZCBmdW5jdGlvbnM6CisKKyAgKiBIaWdoLWxldmVsIEFQSToKKworICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0ZpbmRDaGFyYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9OZXdgCisgICAgKiA6YzpmdW5jOmBQeVVuaWNvZGVfU3Vic3RyaW5nYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX1JlYWRDaGFyYCwgOmM6ZnVuYzpgUHlVbmljb2RlX1dyaXRlQ2hhcmAKKworICAqIExvdy1sZXZlbCBBUEk6CisKKyAgICAqIDpjOnR5cGU6YFB5X1VDUzFgLCA6Yzp0eXBlOmBQeV9VQ1MyYCwgOmM6dHlwZTpgUHlfVUNTNGAgdHlwZXMKKyAgICAqIDpjOnR5cGU6YFB5QVNDSUlPYmplY3RgIGFuZCA6Yzp0eXBlOmBQeUNvbXBhY3RVbmljb2RlT2JqZWN0YCBzdHJ1Y3R1cmVzCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX1JFQURZYAorICAgICogOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YWAKKyAgICAqIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VDUzRgLCA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVQ1M0Q29weWAKKyAgICAqIDpjOm1hY3JvOmBQeVVuaWNvZGVfREFUQWAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfMUJZVEVfREFUQWAsCisgICAgICA6YzptYWNybzpgUHlVbmljb2RlXzJCWVRFX0RBVEFgLCA6YzptYWNybzpgUHlVbmljb2RlXzRCWVRFX0RBVEFgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX0tJTkRgIHdpdGggOmM6dHlwZTpgUHlVbmljb2RlX0tpbmRgIGVudW06CisgICAgICA6YzpkYXRhOmBQeVVuaWNvZGVfV0NIQVJfS0lORGAsIDpjOmRhdGE6YFB5VW5pY29kZV8xQllURV9LSU5EYCwKKyAgICAgIDpjOmRhdGE6YFB5VW5pY29kZV8yQllURV9LSU5EYCwgOmM6ZGF0YTpgUHlVbmljb2RlXzRCWVRFX0tJTkRgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX1JFQURgLCA6YzptYWNybzpgUHlVbmljb2RlX1JFQURfQ0hBUmAsIDpjOm1hY3JvOmBQeVVuaWNvZGVfV1JJVEVgCisgICAgKiA6YzptYWNybzpgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFYAorCisqIDpjOm1hY3JvOmBQeUFyZ19QYXJzZVR1cGxlYCBub3cgYWNjZXB0cyBhIDpjbGFzczpgYnl0ZWFycmF5YCBmb3IgdGhlIGBgY2BgCisgIGZvcm1hdCAoOmlzc3VlOmAxMjM4MGApLgorCisKKworRGVwcmVjYXRlZAorPT09PT09PT09PQorCitVbnN1cHBvcnRlZCBPcGVyYXRpbmcgU3lzdGVtcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT1MvMiBhbmQgVk1TIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkIGR1ZSB0byB0aGUgbGFjayBvZiBhIG1haW50YWluZXIuCisKK1dpbmRvd3MgMjAwMCBhbmQgV2luZG93cyBwbGF0Zm9ybXMgd2hpY2ggc2V0IGBgQ09NU1BFQ2BgIHRvIGBgY29tbWFuZC5jb21gYAorYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZHVlIHRvIG1haW50ZW5hbmNlIGJ1cmRlbi4KKworT1NGIHN1cHBvcnQsIHdoaWNoIHdhcyBkZXByZWNhdGVkIGluIDMuMiwgaGFzIGJlZW4gY29tcGxldGVseSByZW1vdmVkLgorCisKK0RlcHJlY2F0ZWQgUHl0aG9uIG1vZHVsZXMsIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogUGFzc2luZyBhIG5vbi1lbXB0eSBzdHJpbmcgdG8gYGBvYmplY3QuX19mb3JtYXRfXygpYGAgaXMgZGVwcmVjYXRlZCwgYW5kCisgIHdpbGwgcHJvZHVjZSBhIDpleGM6YFR5cGVFcnJvcmAgaW4gUHl0aG9uIDMuNCAoOmlzc3VlOmA5ODU2YCkuCisqIFRoZSBgYHVuaWNvZGVfaW50ZXJuYWxgYCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIGJlY2F1c2Ugb2YgdGhlCisgIDpwZXA6YDM5M2AsIHVzZSBVVEYtOCwgVVRGLTE2IChgYHV0Zi0xNi1sZWBgIG9yIGBgdXRmLTE2LWJlYGApLCBvciBVVEYtMzIKKyAgKGBgdXRmLTMyLWxlYGAgb3IgYGB1dGYtMzItYmVgYCkKKyogOm1ldGg6YGZ0cGxpYi5GVFAubmxzdGAgYW5kIDptZXRoOmBmdHBsaWIuRlRQLmRpcmA6IHVzZQorICA6bWV0aDpgZnRwbGliLkZUUC5tbHNkYAorKiA6ZnVuYzpgcGxhdGZvcm0ucG9wZW5gOiB1c2UgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIG1vZHVsZS4gQ2hlY2sgZXNwZWNpYWxseQorICB0aGUgOnJlZjpgc3VicHJvY2Vzcy1yZXBsYWNlbWVudHNgIHNlY3Rpb24gKDppc3N1ZTpgMTEzNzdgKS4KKyogOmlzc3VlOmAxMzM3NGA6IFRoZSBXaW5kb3dzIGJ5dGVzIEFQSSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIHRoZSA6bW9kOmBvc2AKKyAgbW9kdWxlLiBVc2UgVW5pY29kZSBmaWxlbmFtZXMsIGluc3RlYWQgb2YgYnl0ZXMgZmlsZW5hbWVzLCB0byBub3QgZGVwZW5kIG9uCisgIHRoZSBBTlNJIGNvZGUgcGFnZSBhbnltb3JlIGFuZCB0byBzdXBwb3J0IGFueSBmaWxlbmFtZS4KKyogOmlzc3VlOmAxMzk4OGA6IFRoZSA6bW9kOmB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYCBtb2R1bGUgaXMgZGVwcmVjYXRlZC4gIFRoZQorICBhY2NlbGVyYXRvciBpcyB1c2VkIGF1dG9tYXRpY2FsbHkgd2hlbmV2ZXIgYXZhaWxhYmxlLgorKiBUaGUgYmVoYXZpb3VyIG9mIDpmdW5jOmB0aW1lLmNsb2NrYCBkZXBlbmRzIG9uIHRoZSBwbGF0Zm9ybTogdXNlIHRoZSBuZXcKKyAgOmZ1bmM6YHRpbWUucGVyZl9jb3VudGVyYCBvciA6ZnVuYzpgdGltZS5wcm9jZXNzX3RpbWVgIGZ1bmN0aW9uIGluc3RlYWQsCisgIGRlcGVuZGluZyBvbiB5b3VyIHJlcXVpcmVtZW50cywgdG8gaGF2ZSBhIHdlbGwgZGVmaW5lZCBiZWhhdmlvdXIuCisqIFRoZSA6ZnVuYzpgb3Muc3RhdF9mbG9hdF90aW1lc2AgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4KKyogOm1vZDpgYWJjYCBtb2R1bGU6CisKKyAgKiA6Y2xhc3M6YGFiYy5hYnN0cmFjdHByb3BlcnR5YCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UgOmNsYXNzOmBwcm9wZXJ0eWAKKyAgICB3aXRoIDpmdW5jOmBhYmMuYWJzdHJhY3RtZXRob2RgIGluc3RlYWQuCisgICogOmNsYXNzOmBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZGAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgdXNlCisgICAgOmNsYXNzOmBjbGFzc21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorICAqIDpjbGFzczpgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kYCBoYXMgYmVlbiBkZXByZWNhdGVkLCB1c2UKKyAgICA6Y2xhc3M6YHN0YXRpY21ldGhvZGAgd2l0aCA6ZnVuYzpgYWJjLmFic3RyYWN0bWV0aG9kYCBpbnN0ZWFkLgorCisqIDptb2Q6YGltcG9ydGxpYmAgcGFja2FnZToKKworICAqIDptZXRoOmBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlci5wYXRoX210aW1lYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YKKyAgICA6bWV0aDpgaW1wb3J0bGliLmFiYy5Tb3VyY2VMb2FkZXIucGF0aF9zdGF0c2AgYXMgYnl0ZWNvZGUgZmlsZXMgbm93IHN0b3JlCisgICAgYm90aCB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgYW5kIHNpemUgb2YgdGhlIHNvdXJjZSBmaWxlIHRoZSBieXRlY29kZSBmaWxlIHdhcworICAgIGNvbXBpbGVkIGZyb20uCisKKworCisKKworRGVwcmVjYXRlZCBmdW5jdGlvbnMgYW5kIHR5cGVzIG9mIHRoZSBDIEFQSQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmM6dHlwZTpgUHlfVU5JQ09ERWAgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSA6cGVwOmAzOTNgIGFuZCB3aWxsIGJlCityZW1vdmVkIGluIFB5dGhvbiA0LiBBbGwgZnVuY3Rpb25zIHVzaW5nIHRoaXMgdHlwZSBhcmUgZGVwcmVjYXRlZDoKKworVW5pY29kZSBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgdXNpbmcgOmM6dHlwZTpgUHlfVU5JQ09ERWAgYW5kCis6Yzp0eXBlOmBQeV9VTklDT0RFKmAgdHlwZXM6CisKKyogOmM6bWFjcm86YFB5VW5pY29kZV9Gcm9tVW5pY29kZWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhYAorKiA6YzptYWNybzpgUHlVbmljb2RlX0FTX1VOSUNPREVgLCA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVbmljb2RlYCwKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemVgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmdgCisqIDpjOm1hY3JvOmBQeVVuaWNvZGVfQVNfREFUQWA6IHVzZSA6YzptYWNybzpgUHlVbmljb2RlX0RBVEFgIHdpdGgKKyAgOmM6bWFjcm86YFB5VW5pY29kZV9SRUFEYCBhbmQgOmM6bWFjcm86YFB5VW5pY29kZV9XUklURWAKKyogOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfU0laRWAsIDpjOmZ1bmM6YFB5VW5pY29kZV9HZXRTaXplYDogdXNlCisgIDpjOm1hY3JvOmBQeVVuaWNvZGVfR0VUX0xFTkdUSGAgb3IgOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAKKyogOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfREFUQV9TSVpFYDogdXNlCisgIGBgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAqIFB5VW5pY29kZV9LSU5EKHN0cilgYCAob25seSB3b3JrIG9uIHJlYWR5CisgIHN0cmluZ3MpCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5YDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc1VDUzRDb3B5YCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0dldE1heGAKKworCitGdW5jdGlvbnMgYW5kIG1hY3JvcyBtYW5pcHVsYXRpbmcgUHlfVU5JQ09ERSogc3RyaW5nczoKKworKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJsZW5gOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0dldExlbmd0aGAgb3IKKyAgOmM6bWFjcm86YFB5VW5pY29kZV9HRVRfTEVOR1RIYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjYXRgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RyY3B5YCwgOmM6bWFjcm86YFB5X1VOSUNPREVfc3RybmNweWAsCisgIDpjOm1hY3JvOmBQeV9VTklDT0RFX0NPUFlgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfU3Vic3RyaW5nYAorKiA6YzptYWNybzpgUHlfVU5JQ09ERV9zdHJjbXBgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0NvbXBhcmVgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX3N0cm5jbXBgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX1RhaWxtYXRjaGAKKyogOmM6bWFjcm86YFB5X1VOSUNPREVfc3RyY2hyYCwgOmM6bWFjcm86YFB5X1VOSUNPREVfc3RycmNocmA6IHVzZQorICA6YzpmdW5jOmBQeVVuaWNvZGVfRmluZENoYXJgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX0ZJTExgOiB1c2UgOmM6ZnVuYzpgUHlVbmljb2RlX0ZpbGxgCisqIDpjOm1hY3JvOmBQeV9VTklDT0RFX01BVENIYAorCitFbmNvZGVyczoKKworKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlYDogdXNlIDpjOmZ1bmM6YFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3RgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEY3YAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGOGA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4YCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlVVRGMzJgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVVVEYxNmAKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGU6YCB1c2UKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGU6YCB1c2UKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUxhdGluMWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmdgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9FbmNvZGVBU0NJSWA6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZ2AKKyogOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUNoYXJtYXBgCisqIDpjOmZ1bmM6YFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwYAorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlTUJDU2A6IHVzZSA6YzpmdW5jOmBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nYCBvcgorICA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlQ29kZVBhZ2VgICh3aXRoIGBgQ1BfQUNQYGAgY29kZV9wYWdlKQorKiA6YzpmdW5jOmBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbGAsCisgIDpjOmZ1bmM6YFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSWAKKworCitEZXByZWNhdGVkIGZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBhcnJheWAgbW9kdWxlJ3MgYGAndSdgYCBmb3JtYXQgY29kZSBpcyBub3cgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZQorcmVtb3ZlZCBpbiBQeXRob24gNCB0b2dldGhlciB3aXRoIHRoZSByZXN0IG9mIHRoZSAoOmM6dHlwZTpgUHlfVU5JQ09ERWApIEFQSS4KKworCitQb3J0aW5nIHRvIFB5dGhvbiAzLjMKKz09PT09PT09PT09PT09PT09PT09PQorCitUaGlzIHNlY3Rpb24gbGlzdHMgcHJldmlvdXNseSBkZXNjcmliZWQgY2hhbmdlcyBhbmQgb3RoZXIgYnVnZml4ZXMKK3RoYXQgbWF5IHJlcXVpcmUgY2hhbmdlcyB0byB5b3VyIGNvZGUuCisKKy4uIF9wb3J0aW5ncHl0aG9uY29kZToKKworUG9ydGluZyBQeXRob24gY29kZQorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIFNldCB0aGUgOmVudnZhcjpgUFlUSE9OSEFTSFNFRURgCisgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGBgMGBgIHRvIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLiBTZWUgYWxzbyB0aGUKKyAgOm1ldGg6YG9iamVjdC5fX2hhc2hfX2AgbWV0aG9kLgorCisqIDppc3N1ZTpgMTIzMjZgOiBPbiBMaW51eCwgc3lzLnBsYXRmb3JtIGRvZXNuJ3QgY29udGFpbiB0aGUgbWFqb3IgdmVyc2lvbgorICBhbnltb3JlLiBJdCBpcyBub3cgYWx3YXlzICdsaW51eCcsIGluc3RlYWQgb2YgJ2xpbnV4Micgb3IgJ2xpbnV4MycgZGVwZW5kaW5nCisgIG9uIHRoZSBMaW51eCB2ZXJzaW9uIHVzZWQgdG8gYnVpbGQgUHl0aG9uLiBSZXBsYWNlIHN5cy5wbGF0Zm9ybSA9PSAnbGludXgyJworICB3aXRoIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpLCBvciBkaXJlY3RseSBzeXMucGxhdGZvcm0gPT0gJ2xpbnV4JyBpZgorICB5b3UgZG9uJ3QgbmVlZCB0byBzdXBwb3J0IG9sZGVyIFB5dGhvbiB2ZXJzaW9ucy4KKworKiA6aXNzdWU6YDEzODQ3YCwgOmlzc3VlOmAxNDE4MGA6IDptb2Q6YHRpbWVgIGFuZCA6bW9kOmBkYXRldGltZWA6CisgIDpleGM6YE92ZXJmbG93RXJyb3JgIGlzIG5vdyByYWlzZWQgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBpZiBhCisgIHRpbWVzdGFtcCBpcyBvdXQgb2YgcmFuZ2UuIDpleGM6YE9TRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgQyBmdW5jdGlvbnMKKyAgOmM6ZnVuYzpgZ210aW1lYCBvciA6YzpmdW5jOmBsb2NhbHRpbWVgIGZhaWxlZC4KKworKiBUaGUgZGVmYXVsdCBmaW5kZXJzIHVzZWQgYnkgaW1wb3J0IG5vdyB1dGlsaXplIGEgY2FjaGUgb2Ygd2hhdCBpcyBjb250YWluZWQKKyAgd2l0aGluIGEgc3BlY2lmaWMgZGlyZWN0b3J5LiBJZiB5b3UgY3JlYXRlIGEgUHl0aG9uIHNvdXJjZSBmaWxlIG9yIHNvdXJjZWxlc3MKKyAgYnl0ZWNvZGUgZmlsZSwgbWFrZSBzdXJlIHRvIGNhbGwgOmZ1bmM6YGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlc2AgdG8gY2xlYXIKKyAgb3V0IHRoZSBjYWNoZSBmb3IgdGhlIGZpbmRlcnMgdG8gbm90aWNlIHRoZSBuZXcgZmlsZS4KKworKiA6ZXhjOmBJbXBvcnRFcnJvcmAgbm93IHVzZXMgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIHRoYXQgd2FzIGF0dGVtcGVkIHRvCisgIGJlIGltcG9ydGVkLiBEb2N0ZXN0cyB0aGF0IGNoZWNrIEltcG9ydEVycm9ycycgbWVzc2FnZSB3aWxsIG5lZWQgdG8gYmUKKyAgdXBkYXRlZCB0byB1c2UgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgbW9kdWxlIGluc3RlYWQgb2YganVzdCB0aGUgdGFpbCBvZiB0aGUKKyAgbmFtZS4KKworKiBUaGUgKmluZGV4KiBhcmd1bWVudCB0byA6ZnVuYzpgX19pbXBvcnRfX2Agbm93IGRlZmF1bHRzIHRvIDAgaW5zdGVhZCBvZiAtMQorICBhbmQgbm8gbG9uZ2VyIHN1cHBvcnQgbmVnYXRpdmUgdmFsdWVzLiBJdCB3YXMgYW4gb3ZlcnNpZ2h0IHdoZW4gOnBlcDpgMzI4YCB3YXMKKyAgaW1wbGVtZW50ZWQgdGhhdCB0aGUgZGVmYXVsdCB2YWx1ZSByZW1haW5lZCAtMS4gSWYgeW91IG5lZWQgdG8gY29udGludWUgdG8KKyAgcGVyZm9ybSBhIHJlbGF0aXZlIGltcG9ydCBmb2xsb3dlZCBieSBhbiBhYnNvbHV0ZSBpbXBvcnQsIHRoZW4gcGVyZm9ybSB0aGUKKyAgcmVsYXRpdmUgaW1wb3J0IHVzaW5nIGFuIGluZGV4IG9mIDEsIGZvbGxvd2VkIGJ5IGFub3RoZXIgaW1wb3J0IHVzaW5nIGFuCisgIGluZGV4IG9mIDAuIEl0IGlzIHByZWZlcnJlZCwgdGhvdWdoLCB0aGF0IHlvdSB1c2UKKyAgOmZ1bmM6YGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlYCByYXRoZXIgdGhhbiBjYWxsIDpmdW5jOmBfX2ltcG9ydF9fYCBkaXJlY3RseS4KKworKiA6ZnVuYzpgX19pbXBvcnRfX2Agbm8gbG9uZ2VyIGFsbG93cyBvbmUgdG8gdXNlIGFuIGluZGV4IHZhbHVlIG90aGVyIHRoYW4gMAorICBmb3IgdG9wLWxldmVsIG1vZHVsZXMuIEUuZy4gYGBfX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKWBgIGlzIG5vdyBhbiBlcnJvci4KKworKiBCZWNhdXNlIDphdHRyOmBzeXMubWV0YV9wYXRoYCBhbmQgOmF0dHI6YHN5cy5wYXRoX2hvb2tzYCBub3cgaGF2ZSBmaW5kZXJzIG9uCisgIHRoZW0gYnkgZGVmYXVsdCwgeW91IHdpbGwgbW9zdCBsaWtlbHkgd2FudCB0byB1c2UgOm1ldGg6YGxpc3QuaW5zZXJ0YCBpbnN0ZWFkCisgIG9mIDptZXRoOmBsaXN0LmFwcGVuZGAgdG8gYWRkIHRvIHRob3NlIGxpc3RzLgorCisqIEJlY2F1c2UgYGBOb25lYGAgaXMgbm93IGluc2VydGVkIGludG8gOmF0dHI6YHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYCwgaWYgeW91CisgIGFyZSBjbGVhcmluZyBvdXQgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeSBvZiBwYXRocyB0aGF0IGRvIG5vdCBoYXZlIGEKKyAgZmluZGVyLCB5b3Ugd2lsbCBuZWVkIHRvIHJlbW92ZSBrZXlzIHBhaXJlZCB3aXRoIHZhbHVlcyBvZiBgYE5vbmVgYCAqKmFuZCoqCisgIDpjbGFzczpgaW1wLk51bGxJbXBvcnRlcmAgdG8gYmUgYmFja3dhcmRzLWNvbXBhdGlibGUuIFRoaXMgd2lsbCBsZWFkIHRvIGV4dHJhCisgIG92ZXJoZWFkIG9uIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiB0aGF0IHJlLWluc2VydCBgYE5vbmVgYCBpbnRvCisgIDphdHRyOmBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAgd2hlcmUgaXQgcmVwZXNlbnRzIHRoZSB1c2Ugb2YgaW1wbGljaXQKKyAgZmluZGVycywgYnV0IHNlbWFudGljYWxseSBpdCBzaG91bGQgbm90IGNoYW5nZSBhbnl0aGluZy4KKworKiA6Y2xhc3M6YGltcG9ydGxpYi5hYmMuRmluZGVyYCBubyBsb25nZXIgc3BlY2lmaWVzIGEgYGZpbmRfbW9kdWxlKClgIGFic3RyYWN0CisgIG1ldGhvZCB0aGF0IG11c3QgYmUgaW1wbGVtZW50ZWQuIElmIHlvdSB3ZXJlIHJlbHlpbmcgb24gc3ViY2xhc3NlcyB0bworICBpbXBsZW1lbnQgdGhhdCBtZXRob2QsIG1ha2Ugc3VyZSB0byBjaGVjayBmb3IgdGhlIG1ldGhvZCdzIGV4aXN0ZW5jZSBmaXJzdC4KKyAgWW91IHdpbGwgcHJvYmFibHkgd2FudCB0byBjaGVjayBmb3IgYGZpbmRfbG9hZGVyKClgIGZpcnN0LCB0aG91Z2gsIGluIHRoZQorICBjYXNlIG9mIHdvcmtpbmcgd2l0aCA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJzIDxwYXRoIGVudHJ5IGZpbmRlcj5gLgorCisqIDptb2Q6YHBrZ3V0aWxgIGhhcyBiZWVuIGNvbnZlcnRlZCB0byB1c2UgOm1vZDpgaW1wb3J0bGliYCBpbnRlcm5hbGx5LiBUaGlzCisgIGVsaW1pbmF0ZXMgbWFueSBlZGdlIGNhc2VzIHdoZXJlIHRoZSBvbGQgYmVoYXZpb3VyIG9mIHRoZSBQRVAgMzAyIGltcG9ydAorICBlbXVsYXRpb24gZmFpbGVkIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHJlYWwgaW1wb3J0IHN5c3RlbS4gVGhlCisgIGltcG9ydCBlbXVsYXRpb24gaXRzZWxmIGlzIHN0aWxsIHByZXNlbnQsIGJ1dCBpcyBub3cgZGVwcmVjYXRlZC4gVGhlCisgIDpmdW5jOmBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzYCBhbmQgOmZ1bmM6YHBrZ3V0aWwud2Fsa19wYWNrYWdlc2AgZnVuY3Rpb25zCisgIHNwZWNpYWwgY2FzZSB0aGUgc3RhbmRhcmQgaW1wb3J0IGhvb2tzIHNvIHRoZXkgYXJlIHN0aWxsIHN1cHBvcnRlZCBldmVuCisgIHRob3VnaCB0aGV5IGRvIG5vdCBwcm92aWRlIHRoZSBub24tc3RhbmRhcmQgYGBpdGVyX21vZHVsZXMoKWBgIG1ldGhvZC4KKworKiBBIGxvbmdzdGFuZGluZyBSRkMtY29tcGxpYW5jZSBidWcgKDppc3N1ZTpgMTA3OWApIGluIHRoZSBwYXJzaW5nIGRvbmUgYnkKKyAgOmZ1bmM6YGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyYCBoYXMgYmVlbiBmaXhlZC4gIENvZGUgdGhhdCB1c2VzIHRoZQorICBzdGFuZGFyZCBpZGlvbSB0byBjb252ZXJ0IGVuY29kZWQgaGVhZGVycyBpbnRvIHVuaWNvZGUKKyAgKGBgc3RyKG1ha2VfaGVhZGVyKGRlY29kZV9oZWFkZXIoaCkpYGApIHdpbGwgc2VlIG5vIGNoYW5nZSwgYnV0IGNvZGUgdGhhdAorICBsb29rcyBhdCB0aGUgaW5kaXZpZHVhbCB0dXBsZXMgcmV0dXJuZWQgYnkgZGVjb2RlX2hlYWRlciB3aWxsIHNlZSB0aGF0CisgIHdoaXRlc3BhY2UgdGhhdCBwcmVjZWRlcyBvciBmb2xsb3dzIGBgQVNDSUlgYCBzZWN0aW9ucyBpcyBub3cgaW5jbHVkZWQgaW4gdGhlCisgIGBgQVNDSUlgYCBzZWN0aW9uLiAgQ29kZSB0aGF0IGJ1aWxkcyBoZWFkZXJzIHVzaW5nIGBgbWFrZV9oZWFkZXJgYCBzaG91bGQKKyAgYWxzbyBjb250aW51ZSB0byB3b3JrIHdpdGhvdXQgY2hhbmdlLCBzaW5jZSBgYG1ha2VfaGVhZGVyYGAgY29udGludWVzIHRvIGFkZAorICB3aGl0ZXNwYWNlIGJldHdlZW4gYGBBU0NJSWBgIGFuZCBub24tYGBBU0NJSWBgIHNlY3Rpb25zIGlmIGl0IGlzIG5vdCBhbHJlYWR5CisgIHByZXNlbnQgaW4gdGhlIGlucHV0IHN0cmluZ3MuCisKKyogOmZ1bmM6YGVtYWlsLnV0aWxzLmZvcm1hdGFkZHJgIG5vdyBkb2VzIHRoZSBjb3JyZWN0IGNvbnRlbnQgdHJhbnNmZXIKKyAgZW5jb2Rpbmcgd2hlbiBwYXNzZWQgbm9uLWBgQVNDSUlgYCBkaXNwbGF5IG5hbWVzLiAgQW55IGNvZGUgdGhhdCBkZXBlbmRlZCBvbgorICB0aGUgcHJldmlvdXMgYnVnZ3kgYmVoYXZpb3IgdGhhdCBwcmVzZXJ2ZWQgdGhlIG5vbi1gYEFTQ0lJYGAgdW5pY29kZSBpbiB0aGUKKyAgZm9ybWF0dGVkIG91dHB1dCBzdHJpbmcgd2lsbCBuZWVkIHRvIGJlIGNoYW5nZWQgKDppc3N1ZTpgMTY5MDYwOGApLgorCisqIDptZXRoOmBwb3BsaWIuUE9QMy5xdWl0YCBtYXkgbm93IHJhaXNlIHByb3RvY29sIGVycm9ycyBsaWtlIGFsbCBvdGhlcgorICBgYHBvcGxpYmBgIG1ldGhvZHMuICBDb2RlIHRoYXQgYXNzdW1lcyBgYHF1aXRgYCBkb2VzIG5vdCByYWlzZQorICA6ZXhjOmBwb3BsaWIuZXJyb3JfcHJvdG9gIGVycm9ycyBtYXkgbmVlZCB0byBiZSBjaGFuZ2VkIGlmIGVycm9ycyBvbiBgYHF1aXRgYAorICBhcmUgZW5jb3VudGVyZWQgYnkgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uICg6aXNzdWU6YDExMjkxYCkuCisKKyogVGhlIGBgc3RyaWN0YGAgYXJndW1lbnQgdG8gOmNsYXNzOmBlbWFpbC5wYXJzZXIuUGFyc2VyYCwgZGVwcmVjYXRlZCBzaW5jZQorICBQeXRob24gMi40LCBoYXMgZmluYWxseSBiZWVuIHJlbW92ZWQuCisKKyogVGhlIGRlcHJlY2F0ZWQgbWV0aG9kIGBgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0U2FtZUVsZW1lbnRzYGAgaGFzIGJlZW4KKyAgcmVtb3ZlZC4KKworKiBUaGUgZGVwcmVjYXRlZCB2YXJpYWJsZSBgYHRpbWUuYWNjZXB0MmR5ZWFyYGAgaGFzIGJlZW4gcmVtb3ZlZC4KKworKiBUaGUgZGVwcmVjYXRlZCBgYENvbnRleHQuX2NsYW1wYGAgYXR0cmlidXRlIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUKKyAgOm1vZDpgZGVjaW1hbGAgbW9kdWxlLiAgSXQgd2FzIHByZXZpb3VzbHkgcmVwbGFjZWQgYnkgdGhlIHB1YmxpYyBhdHRyaWJ1dGUKKyAgOmF0dHI6YH5kZWNpbWFsLkNvbnRleHQuY2xhbXBgLiAgKFNlZSA6aXNzdWU6YDg1NDBgLikKKworKiBUaGUgdW5kb2N1bWVudGVkIGludGVybmFsIGhlbHBlciBjbGFzcyBgYFNTTEZha2VGaWxlYGAgaGFzIGJlZW4gcmVtb3ZlZAorICBmcm9tIDptb2Q6YHNtdHBsaWJgLCBzaW5jZSBpdHMgZnVuY3Rpb25hbGl0eSBoYXMgbG9uZyBiZWVuIHByb3ZpZGVkIGRpcmVjdGx5CisgIGJ5IDptZXRoOmBzb2NrZXQuc29ja2V0Lm1ha2VmaWxlYC4KKworKiBQYXNzaW5nIGEgbmVnYXRpdmUgdmFsdWUgdG8gOmZ1bmM6YHRpbWUuc2xlZXBgIG9uIFdpbmRvd3Mgbm93IHJhaXNlcyBhbgorICBlcnJvciBpbnN0ZWFkIG9mIHNsZWVwaW5nIGZvcmV2ZXIuICBJdCBoYXMgYWx3YXlzIHJhaXNlZCBhbiBlcnJvciBvbiBwb3NpeC4KKworKiBUaGUgYGBhc3QuX192ZXJzaW9uX19gYCBjb25zdGFudCBoYXMgYmVlbiByZW1vdmVkLiAgSWYgeW91IG5lZWQgdG8KKyAgbWFrZSBkZWNpc2lvbnMgYWZmZWN0ZWQgYnkgdGhlIEFTVCB2ZXJzaW9uLCB1c2UgOmF0dHI6YHN5cy52ZXJzaW9uX2luZm9gCisgIHRvIG1ha2UgdGhlIGRlY2lzaW9uLgorCisqIENvZGUgdGhhdCB1c2VkIHRvIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgdGhlIDptb2Q6YHRocmVhZGluZ2AgbW9kdWxlIHVzZWQKKyAgZmFjdG9yeSBmdW5jdGlvbnMgYnkgc3ViY2xhc3NpbmcgdGhlIHByaXZhdGUgY2xhc3NlcyB3aWxsIG5lZWQgdG8gY2hhbmdlIHRvCisgIHN1YmNsYXNzIHRoZSBub3ctcHVibGljIGNsYXNzZXMuCisKKyogVGhlIHVuZG9jdW1lbnRlZCBkZWJ1Z2dpbmcgbWFjaGluZXJ5IGluIHRoZSB0aHJlYWRpbmcgbW9kdWxlIGhhcyBiZWVuCisgIHJlbW92ZWQsIHNpbXBsaWZ5aW5nIHRoZSBjb2RlLiAgVGhpcyBzaG91bGQgaGF2ZSBubyBlZmZlY3Qgb24gcHJvZHVjdGlvbgorICBjb2RlLCBidXQgaXMgbWVudGlvbmVkIGhlcmUgaW4gY2FzZSBhbnkgYXBwbGljYXRpb24gZGVidWcgZnJhbWV3b3JrcyB3ZXJlCisgIGludGVyYWN0aW5nIHdpdGggaXQgKDppc3N1ZTpgMTM1NTBgKS4KKworCitQb3J0aW5nIEMgY29kZQorLS0tLS0tLS0tLS0tLS0KKworKiBJbiB0aGUgY291cnNlIG9mIGNoYW5nZXMgdG8gdGhlIGJ1ZmZlciBBUEkgdGhlIHVuZG9jdW1lbnRlZAorICA6YzptZW1iZXI6YH5QeV9idWZmZXIuc21hbGx0YWJsZWAgbWVtYmVyIG9mIHRoZQorICA6Yzp0eXBlOmBQeV9idWZmZXJgIHN0cnVjdHVyZSBoYXMgYmVlbiByZW1vdmVkIGFuZCB0aGUKKyAgbGF5b3V0IG9mIHRoZSA6Yzp0eXBlOmBQeU1lbW9yeVZpZXdPYmplY3RgIGhhcyBjaGFuZ2VkLgorCisgIEFsbCBleHRlbnNpb25zIHJlbHlpbmcgb24gdGhlIHJlbGV2YW50IHBhcnRzIGluIGBgbWVtb3J5b2JqZWN0LmhgYAorICBvciBgYG9iamVjdC5oYGAgbXVzdCBiZSByZWJ1aWx0LgorCisqIER1ZSB0byA6cmVmOmBQRVAgMzkzIDxwZXAtMzkzPmAsIHRoZSA6Yzp0eXBlOmBQeV9VTklDT0RFYCB0eXBlIGFuZCBhbGwKKyAgZnVuY3Rpb25zIHVzaW5nIHRoaXMgdHlwZSBhcmUgZGVwcmVjYXRlZCAoYnV0IHdpbGwgc3RheSBhdmFpbGFibGUgZm9yCisgIGF0IGxlYXN0IGZpdmUgeWVhcnMpLiAgSWYgeW91IHdlcmUgdXNpbmcgbG93LWxldmVsIFVuaWNvZGUgQVBJcyB0bworICBjb25zdHJ1Y3QgYW5kIGFjY2VzcyB1bmljb2RlIG9iamVjdHMgYW5kIHlvdSB3YW50IHRvIGJlbmVmaXQgb2YgdGhlCisgIG1lbW9yeSBmb290cHJpbnQgcmVkdWN0aW9uIHByb3ZpZGVkIGJ5IFBFUCAzOTMsIHlvdSBoYXZlIHRvIGNvbnZlcnQKKyAgeW91ciBjb2RlIHRvIHRoZSBuZXcgOmRvYzpgVW5pY29kZSBBUEkgPC4uL2MtYXBpL3VuaWNvZGU+YC4KKworICBIb3dldmVyLCBpZiB5b3Ugb25seSBoYXZlIGJlZW4gdXNpbmcgaGlnaC1sZXZlbCBmdW5jdGlvbnMgc3VjaCBhcworICA6YzpmdW5jOmBQeVVuaWNvZGVfQ29uY2F0KClgLCA6YzpmdW5jOmBQeVVuaWNvZGVfSm9pbmAgb3IKKyAgOmM6ZnVuYzpgUHlVbmljb2RlX0Zyb21Gb3JtYXQoKWAsIHlvdXIgY29kZSB3aWxsIGF1dG9tYXRpY2FsbHkgdGFrZQorICBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyB1bmljb2RlIHJlcHJlc2VudGF0aW9ucy4KKworKiA6YzpmdW5jOmBQeUltcG9ydF9HZXRNYWdpY051bWJlcmAgbm93IHJldHVybnMgLTEgdXBvbiBmYWlsdXJlLgorCisqIEFzIGEgbmVnYXRpdmUgdmFsdWUgZm9yIHRoZSAqbGV2ZWwqIGFyZ3VtZW50IHRvIDpmdW5jOmBfX2ltcG9ydF9fYCBpcyBubworICBsb25nZXIgdmFsaWQsIHRoZSBzYW1lIG5vdyBob2xkcyBmb3IgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxgLgorICBUaGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgdmFsdWUgb2YgKmxldmVsKiB1c2VkIGJ5CisgIDpjOmZ1bmM6YFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4YCBpcyBub3cgMCBpbnN0ZWFkIG9mIC0xLgorCisKK0J1aWxkaW5nIEMgZXh0ZW5zaW9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyogVGhlIHJhbmdlIG9mIHBvc3NpYmxlIGZpbGUgbmFtZXMgZm9yIEMgZXh0ZW5zaW9ucyBoYXMgYmVlbiBuYXJyb3dlZC4KKyAgVmVyeSByYXJlbHkgdXNlZCBzcGVsbGluZ3MgaGF2ZSBiZWVuIHN1cHByZXNzZWQ6IHVuZGVyIFBPU0lYLCBmaWxlcworICBuYW1lZCBgYHh4eG1vZHVsZS5zb2BgLCBgYHh4eG1vZHVsZS5hYmkzLnNvYGAgYW5kCisgIGBgeHh4bW9kdWxlLmNweXRob24tKi5zb2BgIGFyZSBubyBsb25nZXIgcmVjb2duaXplZCBhcyBpbXBsZW1lbnRpbmcKKyAgdGhlIGBgeHh4YGAgbW9kdWxlLiAgSWYgeW91IGhhZCBiZWVuIGdlbmVyYXRpbmcgc3VjaCBmaWxlcywgeW91IGhhdmUKKyAgdG8gc3dpdGNoIHRvIHRoZSBvdGhlciBzcGVsbGluZ3MgKGkuZS4sIHJlbW92ZSB0aGUgYGBtb2R1bGVgYCBzdHJpbmcKKyAgZnJvbSB0aGUgZmlsZSBuYW1lcykuCisKKyAgKGltcGxlbWVudGVkIGluIDppc3N1ZTpgMTQwNDBgLikKKworCitDb21tYW5kIExpbmUgU3dpdGNoIENoYW5nZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIFRoZSAtUSBjb21tYW5kLWxpbmUgZmxhZyBhbmQgcmVsYXRlZCBhcnRpZmFjdHMgaGF2ZSBiZWVuIHJlbW92ZWQuICBDb2RlCisgIGNoZWNraW5nIHN5cy5mbGFncy5kaXZpc2lvbl93YXJuaW5nIHdpbGwgbmVlZCB1cGRhdGluZy4KKworICAoOmlzc3VlOmAxMDk5OGAsIGNvbnRyaWJ1dGVkIGJ5IMOJcmljIEFyYXVqby4pCisKKyogV2hlbiA6cHJvZ3JhbTpgcHl0aG9uYCBpcyBzdGFydGVkIHdpdGggOm9wdGlvbjpgLVNgLCBgYGltcG9ydCBzaXRlYGAKKyAgd2lsbCBubyBsb25nZXIgYWRkIHNpdGUtc3BlY2lmaWMgcGF0aHMgdG8gdGhlIG1vZHVsZSBzZWFyY2ggcGF0aHMuICBJbgorICBwcmV2aW91cyB2ZXJzaW9ucywgaXQgZGlkLgorCisgICg6aXNzdWU6YDExNTkxYCwgY29udHJpYnV0ZWQgYnkgQ2FybCBNZXllciB3aXRoIGVkaXRpb25zIGJ5IMOJcmljIEFyYXVqby4pCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvY2hhbmdlbG9nLnJzdCBiL0RvYy93aGF0c25ldy9jaGFuZ2Vsb2cucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZTJkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2Mvd2hhdHNuZXcvY2hhbmdlbG9nLnJzdApAQCAtMCwwICsxLDYgQEAKKysrKysrKysrKworQ2hhbmdlbG9nCisrKysrKysrKysKKworLi4gbWlzY25ld3M6OiAuLi8uLi9NaXNjL05FV1MKKwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdCBiL0RvYy93aGF0c25ldy9pbmRleC5yc3QKaW5kZXggODIyMGJkMi4uYmMxMjA2YiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3L2luZGV4LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvaW5kZXgucnN0CkBAIC0xMSw2ICsxMSw3IEBACiAuLiB0b2N0cmVlOjoKICAgIDptYXhkZXB0aDogMgogCisgICAzLjMucnN0CiAgICAzLjIucnN0CiAgICAzLjEucnN0CiAgICAzLjAucnN0CkBAIC0yMiwzICsyMywxMSBAQAogICAgMi4yLnJzdAogICAgMi4xLnJzdAogICAgMi4wLnJzdAorCitUaGUgIkNoYW5nZWxvZyIgaXMgYSBIVE1MIHZlcnNpb24gb2YgdGhlIGZpbGUgOnNvdXJjZTpgTWlzYy9ORVdTYCB3aGljaAorY29udGFpbnMgKmFsbCogbm9udHJpdmlhbCBjaGFuZ2VzIHRvIFB5dGhvbiBmb3IgdGhlIGN1cnJlbnQgdmVyc2lvbi4KKworLi4gdG9jdHJlZTo6CisgICA6bWF4ZGVwdGg6IDIKKworICAgY2hhbmdlbG9nLnJzdApkaWZmIC0tZ2l0IGEvR3JhbW1hci9HcmFtbWFyIGIvR3JhbW1hci9HcmFtbWFyCmluZGV4IGNlYTY4ZGUuLmQ3YWFmZmQgMTAwNjQ0Ci0tLSBhL0dyYW1tYXIvR3JhbW1hcgorKysgYi9HcmFtbWFyL0dyYW1tYXIKQEAgLTEzLDcgKzEzLDcgQEAKICMgU3RhcnQgc3ltYm9scyBmb3IgdGhlIGdyYW1tYXI6CiAjICAgICAgIHNpbmdsZV9pbnB1dCBpcyBhIHNpbmdsZSBpbnRlcmFjdGl2ZSBzdGF0ZW1lbnQ7CiAjICAgICAgIGZpbGVfaW5wdXQgaXMgYSBtb2R1bGUgb3Igc2VxdWVuY2Ugb2YgY29tbWFuZHMgcmVhZCBmcm9tIGFuIGlucHV0IGZpbGU7Ci0jICAgICAgIGV2YWxfaW5wdXQgaXMgdGhlIGlucHV0IGZvciB0aGUgZXZhbCgpIGFuZCBpbnB1dCgpIGZ1bmN0aW9ucy4KKyMgICAgICAgZXZhbF9pbnB1dCBpcyB0aGUgaW5wdXQgZm9yIHRoZSBldmFsKCkgZnVuY3Rpb25zLgogIyBOQjogY29tcG91bmRfc3RtdCBpbiBzaW5nbGVfaW5wdXQgaXMgZm9sbG93ZWQgYnkgZXh0cmEgTkVXTElORSEKIHNpbmdsZV9pbnB1dDogTkVXTElORSB8IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdCBORVdMSU5FCiBmaWxlX2lucHV0OiAoTkVXTElORSB8IHN0bXQpKiBFTkRNQVJLRVIKQEAgLTEyOSw0ICsxMjksNSBAQAogIyBub3QgdXNlZCBpbiBncmFtbWFyLCBidXQgbWF5IGFwcGVhciBpbiAibm9kZSIgcGFzc2VkIGZyb20gUGFyc2VyIHRvIENvbXBpbGVyCiBlbmNvZGluZ19kZWNsOiBOQU1FCiAKLXlpZWxkX2V4cHI6ICd5aWVsZCcgW3Rlc3RsaXN0XQoreWllbGRfZXhwcjogJ3lpZWxkJyBbeWllbGRfYXJnXQoreWllbGRfYXJnOiAnZnJvbScgdGVzdCB8IHRlc3RsaXN0CmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi1hc3QuaCBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCmluZGV4IDBhZDc4OGIuLjdhZDZjYjMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvUHl0aG9uLWFzdC5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLWFzdC5oCkBAIC0zNiw2ICszNiw4IEBACiAKIHR5cGVkZWYgc3RydWN0IF9hbGlhcyAqYWxpYXNfdHk7CiAKK3R5cGVkZWYgc3RydWN0IF93aXRoaXRlbSAqd2l0aGl0ZW1fdHk7CisKIAogZW51bSBfbW9kX2tpbmQge01vZHVsZV9raW5kPTEsIEludGVyYWN0aXZlX2tpbmQ9MiwgRXhwcmVzc2lvbl9raW5kPTMsCiAgICAgICAgICAgICAgICAgIFN1aXRlX2tpbmQ9NH07CkBAIC02NCwxMCArNjYsOSBAQAogZW51bSBfc3RtdF9raW5kIHtGdW5jdGlvbkRlZl9raW5kPTEsIENsYXNzRGVmX2tpbmQ9MiwgUmV0dXJuX2tpbmQ9MywKICAgICAgICAgICAgICAgICAgIERlbGV0ZV9raW5kPTQsIEFzc2lnbl9raW5kPTUsIEF1Z0Fzc2lnbl9raW5kPTYsIEZvcl9raW5kPTcsCiAgICAgICAgICAgICAgICAgICBXaGlsZV9raW5kPTgsIElmX2tpbmQ9OSwgV2l0aF9raW5kPTEwLCBSYWlzZV9raW5kPTExLAotICAgICAgICAgICAgICAgICAgVHJ5RXhjZXB0X2tpbmQ9MTIsIFRyeUZpbmFsbHlfa2luZD0xMywgQXNzZXJ0X2tpbmQ9MTQsCi0gICAgICAgICAgICAgICAgICBJbXBvcnRfa2luZD0xNSwgSW1wb3J0RnJvbV9raW5kPTE2LCBHbG9iYWxfa2luZD0xNywKLSAgICAgICAgICAgICAgICAgIE5vbmxvY2FsX2tpbmQ9MTgsIEV4cHJfa2luZD0xOSwgUGFzc19raW5kPTIwLCBCcmVha19raW5kPTIxLAotICAgICAgICAgICAgICAgICAgQ29udGludWVfa2luZD0yMn07CisgICAgICAgICAgICAgICAgICBUcnlfa2luZD0xMiwgQXNzZXJ0X2tpbmQ9MTMsIEltcG9ydF9raW5kPTE0LAorICAgICAgICAgICAgICAgICAgSW1wb3J0RnJvbV9raW5kPTE1LCBHbG9iYWxfa2luZD0xNiwgTm9ubG9jYWxfa2luZD0xNywKKyAgICAgICAgICAgICAgICAgIEV4cHJfa2luZD0xOCwgUGFzc19raW5kPTE5LCBCcmVha19raW5kPTIwLCBDb250aW51ZV9raW5kPTIxfTsKIHN0cnVjdCBfc3RtdCB7CiAgICAgICAgIGVudW0gX3N0bXRfa2luZCBraW5kOwogICAgICAgICB1bmlvbiB7CkBAIC0xMjgsOCArMTI5LDcgQEAKICAgICAgICAgICAgICAgICB9IElmOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgb3B0aW9uYWxfdmFyczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICppdGVtczsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgICAgIH0gV2l0aDsKICAgICAgICAgICAgICAgICAKQEAgLTE0MiwxMiArMTQyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpib2R5OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmhhbmRsZXJzOwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKm9yZWxzZTsKLSAgICAgICAgICAgICAgICB9IFRyeUV4Y2VwdDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmJvZHk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZmluYWxib2R5OwotICAgICAgICAgICAgICAgIH0gVHJ5RmluYWxseTsKKyAgICAgICAgICAgICAgICB9IFRyeTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB0ZXN0OwpAQCAtMTg0LDEwICsxODAsMTAgQEAKIGVudW0gX2V4cHJfa2luZCB7Qm9vbE9wX2tpbmQ9MSwgQmluT3Bfa2luZD0yLCBVbmFyeU9wX2tpbmQ9MywgTGFtYmRhX2tpbmQ9NCwKICAgICAgICAgICAgICAgICAgIElmRXhwX2tpbmQ9NSwgRGljdF9raW5kPTYsIFNldF9raW5kPTcsIExpc3RDb21wX2tpbmQ9OCwKICAgICAgICAgICAgICAgICAgIFNldENvbXBfa2luZD05LCBEaWN0Q29tcF9raW5kPTEwLCBHZW5lcmF0b3JFeHBfa2luZD0xMSwKLSAgICAgICAgICAgICAgICAgIFlpZWxkX2tpbmQ9MTIsIENvbXBhcmVfa2luZD0xMywgQ2FsbF9raW5kPTE0LCBOdW1fa2luZD0xNSwKLSAgICAgICAgICAgICAgICAgIFN0cl9raW5kPTE2LCBCeXRlc19raW5kPTE3LCBFbGxpcHNpc19raW5kPTE4LAotICAgICAgICAgICAgICAgICAgQXR0cmlidXRlX2tpbmQ9MTksIFN1YnNjcmlwdF9raW5kPTIwLCBTdGFycmVkX2tpbmQ9MjEsCi0gICAgICAgICAgICAgICAgICBOYW1lX2tpbmQ9MjIsIExpc3Rfa2luZD0yMywgVHVwbGVfa2luZD0yNH07CisgICAgICAgICAgICAgICAgICBZaWVsZF9raW5kPTEyLCBZaWVsZEZyb21fa2luZD0xMywgQ29tcGFyZV9raW5kPTE0LAorICAgICAgICAgICAgICAgICAgQ2FsbF9raW5kPTE1LCBOdW1fa2luZD0xNiwgU3RyX2tpbmQ9MTcsIEJ5dGVzX2tpbmQ9MTgsCisgICAgICAgICAgICAgICAgICBFbGxpcHNpc19raW5kPTE5LCBBdHRyaWJ1dGVfa2luZD0yMCwgU3Vic2NyaXB0X2tpbmQ9MjEsCisgICAgICAgICAgICAgICAgICBTdGFycmVkX2tpbmQ9MjIsIE5hbWVfa2luZD0yMywgTGlzdF9raW5kPTI0LCBUdXBsZV9raW5kPTI1fTsKIHN0cnVjdCBfZXhwciB7CiAgICAgICAgIGVudW0gX2V4cHJfa2luZCBraW5kOwogICAgICAgICB1bmlvbiB7CkBAIC0yNTMsNiArMjQ5LDEwIEBACiAgICAgICAgICAgICAgICAgfSBZaWVsZDsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgICAgICAgICB9IFlpZWxkRnJvbTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBsZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9pbnRfc2VxICpvcHM7CiAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqY29tcGFyYXRvcnM7CkBAIC0yNzUsNyArMjc1LDcgQEAKICAgICAgICAgICAgICAgICB9IFN0cjsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHM7CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyBzOwogICAgICAgICAgICAgICAgIH0gQnl0ZXM7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3RydWN0IHsKQEAgLTM4Myw2ICszODMsMTEgQEAKICAgICAgICAgaWRlbnRpZmllciBhc25hbWU7CiB9OwogCitzdHJ1Y3QgX3dpdGhpdGVtIHsKKyAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7CisgICAgICAgIGV4cHJfdHkgb3B0aW9uYWxfdmFyczsKK307CisKIAogI2RlZmluZSBNb2R1bGUoYTAsIGExKSBfUHlfTW9kdWxlKGEwLCBhMSkKIG1vZF90eSBfUHlfTW9kdWxlKGFzZGxfc2VxICogYm9keSwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNDIxLDE4ICs0MjYsMTYgQEAKICNkZWZpbmUgSWYoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0lmKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBzdG10X3R5IF9QeV9JZihleHByX3R5IHRlc3QsIGFzZGxfc2VxICogYm9keSwgYXNkbF9zZXEgKiBvcmVsc2UsIGludCBsaW5lbm8sCiAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBXaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9XaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCi1zdG10X3R5IF9QeV9XaXRoKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIGFzZGxfc2VxICogYm9keSwKLSAgICAgICAgICAgICAgICAgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgV2l0aChhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9XaXRoKGEwLCBhMSwgYTIsIGEzLCBhNCkKK3N0bXRfdHkgX1B5X1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBSYWlzZShhMCwgYTEsIGEyLCBhMywgYTQpIF9QeV9SYWlzZShhMCwgYTEsIGEyLCBhMywgYTQpCiBzdG10X3R5IF9QeV9SYWlzZShleHByX3R5IGV4YywgZXhwcl90eSBjYXVzZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsCiAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7Ci0jZGVmaW5lIFRyeUV4Y2VwdChhMCwgYTEsIGEyLCBhMywgYTQsIGE1KSBfUHlfVHJ5RXhjZXB0KGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCi1zdG10X3R5IF9QeV9UcnlFeGNlcHQoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGhhbmRsZXJzLCBhc2RsX3NlcSAqIG9yZWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwotI2RlZmluZSBUcnlGaW5hbGx5KGEwLCBhMSwgYTIsIGEzLCBhNCkgX1B5X1RyeUZpbmFsbHkoYTAsIGExLCBhMiwgYTMsIGE0KQotc3RtdF90eSBfUHlfVHJ5RmluYWxseShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQKLSAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBUcnkoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpIF9QeV9UcnkoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYpCitzdG10X3R5IF9QeV9UcnkoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGhhbmRsZXJzLCBhc2RsX3NlcSAqIG9yZWxzZSwKKyAgICAgICAgICAgICAgICBhc2RsX3NlcSAqIGZpbmFsYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAqYXJlbmEpOwogI2RlZmluZSBBc3NlcnQoYTAsIGExLCBhMiwgYTMsIGE0KSBfUHlfQXNzZXJ0KGEwLCBhMSwgYTIsIGEzLCBhNCkKIHN0bXRfdHkgX1B5X0Fzc2VydChleHByX3R5IHRlc3QsIGV4cHJfdHkgbXNnLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgICBQeUFyZW5hICphcmVuYSk7CkBAIC00OTAsNiArNDkzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIFlpZWxkKGEwLCBhMSwgYTIsIGEzKSBfUHlfWWllbGQoYTAsIGExLCBhMiwgYTMpCiBleHByX3R5IF9QeV9ZaWVsZChleHByX3R5IHZhbHVlLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworI2RlZmluZSBZaWVsZEZyb20oYTAsIGExLCBhMiwgYTMpIF9QeV9ZaWVsZEZyb20oYTAsIGExLCBhMiwgYTMpCitleHByX3R5IF9QeV9ZaWVsZEZyb20oZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEKKyAgICAgICAgICAgICAgICAgICAgICAqYXJlbmEpOwogI2RlZmluZSBDb21wYXJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpIF9QeV9Db21wYXJlKGEwLCBhMSwgYTIsIGEzLCBhNCwgYTUpCiBleHByX3R5IF9QeV9Db21wYXJlKGV4cHJfdHkgbGVmdCwgYXNkbF9pbnRfc2VxICogb3BzLCBhc2RsX3NlcSAqIGNvbXBhcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNTAyLDcgKzUwOCw3IEBACiAjZGVmaW5lIFN0cihhMCwgYTEsIGEyLCBhMykgX1B5X1N0cihhMCwgYTEsIGEyLCBhMykKIGV4cHJfdHkgX1B5X1N0cihzdHJpbmcgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgQnl0ZXMoYTAsIGExLCBhMiwgYTMpIF9QeV9CeXRlcyhhMCwgYTEsIGEyLCBhMykKLWV4cHJfdHkgX1B5X0J5dGVzKHN0cmluZyBzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOworZXhwcl90eSBfUHlfQnl0ZXMoYnl0ZXMgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKTsKICNkZWZpbmUgRWxsaXBzaXMoYTAsIGExLCBhMikgX1B5X0VsbGlwc2lzKGEwLCBhMSwgYTIpCiBleHByX3R5IF9QeV9FbGxpcHNpcyhpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpOwogI2RlZmluZSBBdHRyaWJ1dGUoYTAsIGExLCBhMiwgYTMsIGE0LCBhNSkgX1B5X0F0dHJpYnV0ZShhMCwgYTEsIGEyLCBhMywgYTQsIGE1KQpAQCAtNTQ3LDYgKzU1Myw5IEBACiBrZXl3b3JkX3R5IF9QeV9rZXl3b3JkKGlkZW50aWZpZXIgYXJnLCBleHByX3R5IHZhbHVlLCBQeUFyZW5hICphcmVuYSk7CiAjZGVmaW5lIGFsaWFzKGEwLCBhMSwgYTIpIF9QeV9hbGlhcyhhMCwgYTEsIGEyKQogYWxpYXNfdHkgX1B5X2FsaWFzKGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllciBhc25hbWUsIFB5QXJlbmEgKmFyZW5hKTsKKyNkZWZpbmUgd2l0aGl0ZW0oYTAsIGExLCBhMikgX1B5X3dpdGhpdGVtKGEwLCBhMSwgYTIpCit3aXRoaXRlbV90eSBfUHlfd2l0aGl0ZW0oZXhwcl90eSBjb250ZXh0X2V4cHIsIGV4cHJfdHkgb3B0aW9uYWxfdmFycywgUHlBcmVuYQorICAgICAgICAgICAgICAgICAgICAgICAgICphcmVuYSk7CiAKIFB5T2JqZWN0KiBQeUFTVF9tb2Qyb2JqKG1vZF90eSB0KTsKIG1vZF90eSBQeUFTVF9vYmoybW9kKFB5T2JqZWN0KiBhc3QsIFB5QXJlbmEqIGFyZW5hLCBpbnQgbW9kZSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi5oIGIvSW5jbHVkZS9QeXRob24uaAppbmRleCBkNmU0N2MyLi5hNzhhNzIxIDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlIDxhc3NlcnQuaD4KIAogI2luY2x1ZGUgInB5cG9ydC5oIgorI2luY2x1ZGUgInB5bWFjcm8uaCIKIAogI2luY2x1ZGUgInB5YXRvbWljLmgiCiAKQEAgLTEwMCw2ICsxMDEsNyBAQAogI2luY2x1ZGUgIndhcm5pbmdzLmgiCiAjaW5jbHVkZSAid2Vha3JlZm9iamVjdC5oIgogI2luY2x1ZGUgInN0cnVjdHNlcS5oIgorI2luY2x1ZGUgIm5hbWVzcGFjZW9iamVjdC5oIgogCiAjaW5jbHVkZSAiY29kZWNzLmgiCiAjaW5jbHVkZSAicHllcnJvcnMuaCIKQEAgLTEyNSw0MyArMTI3LDYgQEAKICNpbmNsdWRlICJweXN0cmNtcC5oIgogI2luY2x1ZGUgImR0b2EuaCIKICNpbmNsdWRlICJmaWxldXRpbHMuaCIKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiBfUHlfTWFuZ2xlIGlzIGRlZmluZWQgaW4gY29tcGlsZS5jICovCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X01hbmdsZShQeU9iamVjdCAqcCwgUHlPYmplY3QgKm5hbWUpOwotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0KLS8qIEFyZ3VtZW50IG11c3QgYmUgYSBjaGFyIG9yIGFuIGludCBpbiBbLTEyOCwgMTI3XSBvciBbMCwgMjU1XS4gKi8KLSNkZWZpbmUgUHlfQ0hBUk1BU0soYykgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKSgoYykgJiAweGZmKSkKLQogI2luY2x1ZGUgInB5ZnBlLmgiCiAKLS8qIFRoZXNlIGRlZmluaXRpb25zIG11c3QgbWF0Y2ggY29ycmVzcG9uZGluZyBkZWZpbml0aW9ucyBpbiBncmFtaW5pdC5oLgotICAgVGhlcmUncyBjb2RlIGluIGNvbXBpbGUuYyB0aGF0IGNoZWNrcyB0aGF0IHRoZXkgYXJlIHRoZSBzYW1lLiAqLwotI2RlZmluZSBQeV9zaW5nbGVfaW5wdXQgMjU2Ci0jZGVmaW5lIFB5X2ZpbGVfaW5wdXQgMjU3Ci0jZGVmaW5lIFB5X2V2YWxfaW5wdXQgMjU4Ci0KLSNpZmRlZiBIQVZFX1BUSAotLyogR05VIHB0aCB1c2VyLXNwYWNlIHRocmVhZCBzdXBwb3J0ICovCi0jaW5jbHVkZSA8cHRoLmg+Ci0jZW5kaWYKLQotLyogRGVmaW5lIG1hY3JvcyBmb3IgaW5saW5lIGRvY3VtZW50YXRpb24uICovCi0jZGVmaW5lIFB5RG9jX1ZBUihuYW1lKSBzdGF0aWMgY2hhciBuYW1lW10KLSNkZWZpbmUgUHlEb2NfU1RSVkFSKG5hbWUsc3RyKSBQeURvY19WQVIobmFtZSkgPSBQeURvY19TVFIoc3RyKQotI2lmZGVmIFdJVEhfRE9DX1NUUklOR1MKLSNkZWZpbmUgUHlEb2NfU1RSKHN0cikgc3RyCi0jZWxzZQotI2RlZmluZSBQeURvY19TVFIoc3RyKSAiIgotI2VuZGlmCi0KICNlbmRpZiAvKiAhUHlfUFlUSE9OX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvYWJzdHJhY3QuaCBiL0luY2x1ZGUvYWJzdHJhY3QuaAppbmRleCAwZmUwOTU2Li40NGI1YWY3IDEwMDY0NAotLS0gYS9JbmNsdWRlL2Fic3RyYWN0LmgKKysrIGIvSW5jbHVkZS9hYnN0cmFjdC5oCkBAIC03LDYgKzcsNyBAQAogI2lmZGVmIFBZX1NTSVpFX1RfQ0xFQU4KICNkZWZpbmUgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKICNkZWZpbmUgUHlPYmplY3RfQ2FsbE1ldGhvZCBfUHlPYmplY3RfQ2FsbE1ldGhvZF9TaXplVAorI2RlZmluZSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQKICNlbmRpZgogCiAvKiBBYnN0cmFjdCBPYmplY3QgSW50ZXJmYWNlIChtYW55IHRoYW5rcyB0byBKaW0gRnVsdG9uKSAqLwpAQCAtMzA3LDExICszMDgsMjIgQEAKICAgICAgUHl0aG9uIGV4cHJlc3Npb246IG8ubWV0aG9kKGFyZ3MpLgogICAgICAgICovCiAKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpmb3JtYXQsIC4uLik7CisKKyAgICAgICAvKgorICAgICAgICAgTGlrZSBQeU9iamVjdF9DYWxsTWV0aG9kLCBidXQgZXhwZWN0IGEgX1B5X0lkZW50aWZpZXIqIGFzIHRoZQorICAgICAgICAgbWV0aG9kIG5hbWUuCisgICAgICAgKi8KKwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQoUHlPYmplY3QgKmNhbGxhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOwogICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUKFB5T2JqZWN0ICpvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOworICAgICBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRfU2l6ZVQoUHlPYmplY3QgKm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X0lkZW50aWZpZXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZm9ybWF0LCAuLi4pOwogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwpAQCAtMzI3LDYgKzMzOSwxMCBAQAogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3MoUHlPYmplY3QgKm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1ldGhvZCwgLi4uKTsKKyAgICAgUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhQeU9iamVjdCAqbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICptZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLik7CisKIAogICAgICAgIC8qCiAgICAgIENhbGwgdGhlIG1ldGhvZCBuYW1lZCBtIG9mIG9iamVjdCBvIHdpdGggYSB2YXJpYWJsZSBudW1iZXIgb2YKQEAgLTUxOSwxMSArNTM1LDEyIEBACiAKIAogCisgICAgIC8qIEltcGxlbWVudGF0aW9uIGluIG1lbW9yeW9iamVjdC5jICovCiAgICAgIFB5QVBJX0ZVTkMoaW50KSBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXModm9pZCAqYnVmLCBQeV9idWZmZXIgKnZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGNoYXIgZm9ydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGNoYXIgb3JkZXIpOwogCiAgICAgIFB5QVBJX0ZVTkMoaW50KSBQeUJ1ZmZlcl9Gcm9tQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcsIHZvaWQgKmJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBjaGFyIGZvcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGNoYXIgb3JkZXIpOwogCiAKICAgICAvKiBDb3B5IGxlbiBieXRlcyBvZiBkYXRhIGZyb20gdGhlIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5CkBAIC01NDcsNyArNTY0LDcgQEAKICAgICAvKiBDb3B5IHRoZSBkYXRhIGZyb20gdGhlIHNyYyBidWZmZXIgdG8gdGhlIGJ1ZmZlciBvZiBkZXN0aW5hdGlvbgogICAgICAqLwogCi0gICAgIFB5QVBJX0ZVTkMoaW50KSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnQpOworICAgICBQeUFQSV9GVU5DKGludCkgUHlCdWZmZXJfSXNDb250aWd1b3VzKGNvbnN0IFB5X2J1ZmZlciAqdmlldywgY2hhciBmb3J0KTsKIAogCiAgICAgIFB5QVBJX0ZVTkModm9pZCkgUHlCdWZmZXJfRmlsbENvbnRpZ3VvdXNTdHJpZGVzKGludCBuZGltcywKQEAgLTc2MSwyMSArNzc4LDYgQEAKICAgICAgUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeU51bWJlcl9Bc1NzaXplX3QoUHlPYmplY3QgKm8sIFB5T2JqZWN0ICpleGMpOwogCiAgICAgICAgLyoKLSAgICAgUmV0dXJucyB0aGUgSW50ZWdyYWwgaW5zdGFuY2UgY29udmVydGVkIHRvIGFuIGludC4gVGhlCi0gICAgIGluc3RhbmNlIGlzIGV4cGVjdGVkIHRvIGJlIGludCBvciBsb25nIG9yIGhhdmUgYW4gX19pbnRfXwotICAgICBtZXRob2QuIFN0ZWFscyBpbnRlZ3JhbCdzIHJlZmVyZW5jZS4gZXJyb3JfZm9ybWF0IHdpbGwgYmUKLSAgICAgdXNlZCB0byBjcmVhdGUgdGhlIFR5cGVFcnJvciBpZiBpbnRlZ3JhbCBpc24ndCBhY3R1YWxseSBhbgotICAgICBJbnRlZ3JhbCBpbnN0YW5jZS4gZXJyb3JfZm9ybWF0IHNob3VsZCBiZSBhIGZvcm1hdCBzdHJpbmcKLSAgICAgdGhhdCBjYW4gYWNjZXB0IGEgY2hhciogbmFtaW5nIGludGVncmFsJ3MgdHlwZS4KLSAgICAgICAqLwotCi0jaWZuZGVmIFB5X0xJTUlURURfQVBJCi0gICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TnVtYmVyX0NvbnZlcnRJbnRlZ3JhbFRvSW50KAotICAgICAgICAgUHlPYmplY3QgKmludGVncmFsLAotICAgICAgICAgY29uc3QgY2hhciogZXJyb3JfZm9ybWF0KTsKLSNlbmRpZgotCi0gICAgICAgLyoKICAgICBSZXR1cm5zIHRoZSBvYmplY3QgY29udmVydGVkIHRvIFB5X3NzaXplX3QgYnkgZ29pbmcgdGhyb3VnaAogICAgIFB5TnVtYmVyX0luZGV4IGZpcnN0LiAgSWYgYW4gb3ZlcmZsb3cgZXJyb3Igb2NjdXJzIHdoaWxlCiAgICAgY29udmVydGluZyB0aGUgaW50LW9yLWxvbmcgdG8gUHlfc3NpemVfdCwgdGhlbiB0aGUgc2Vjb25kIGFyZ3VtZW50CkBAIC0xMDE0LDcgKzEwMTYsNyBAQAogCiAgICAgIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXF1ZW5jZV9GYXN0KFB5T2JqZWN0ICpvLCBjb25zdCBjaGFyKiBtKTsKICAgICAgICAvKgotICAgICBSZXR1cm5zIHRoZSBzZXF1ZW5jZSwgbywgYXMgYSB0dXBsZSwgdW5sZXNzIGl0J3MgYWxyZWFkeSBhCisgICAgIFJldHVybnMgdGhlIHNlcXVlbmNlLCBvLCBhcyBhIGxpc3QsIHVubGVzcyBpdCdzIGFscmVhZHkgYQogICAgICB0dXBsZSBvciBsaXN0LiAgVXNlIFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTSB0byBhY2Nlc3MgdGhlCiAgICAgIG1lbWJlcnMgb2YgdGhpcyBsaXN0LCBhbmQgUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFIHRvIGdldCBpdHMgbGVuZ3RoLgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2FzZGwuaCBiL0luY2x1ZGUvYXNkbC5oCmluZGV4IDliYjA2OTcuLjZiZjYxOGYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYXNkbC5oCisrKyBiL0luY2x1ZGUvYXNkbC5oCkBAIC0zLDYgKzMsNyBAQAogCiB0eXBlZGVmIFB5T2JqZWN0ICogaWRlbnRpZmllcjsKIHR5cGVkZWYgUHlPYmplY3QgKiBzdHJpbmc7Cit0eXBlZGVmIFB5T2JqZWN0ICogYnl0ZXM7CiB0eXBlZGVmIFB5T2JqZWN0ICogb2JqZWN0OwogCiAvKiBJdCB3b3VsZCBiZSBuaWNlIGlmIHRoZSBjb2RlIGdlbmVyYXRlZCBieSBhc2RsX2MucHkgd2FzIGNvbXBsZXRlbHkKQEAgLTE0LDE3ICsxNSwxNyBAQAogLyogWFhYIEEgc2VxdWVuY2Ugc2hvdWxkIGJlIHR5cGVkIHNvIHRoYXQgaXRzIHVzZSBjYW4gYmUgdHlwZWNoZWNrZWQuICovCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnQgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgdm9pZCAqZWxlbWVudHNbMV07CiB9IGFzZGxfc2VxOwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgaW50IHNpemU7CisgICAgUHlfc3NpemVfdCBzaXplOwogICAgIGludCBlbGVtZW50c1sxXTsKIH0gYXNkbF9pbnRfc2VxOwogCi1hc2RsX3NlcSAqYXNkbF9zZXFfbmV3KGludCBzaXplLCBQeUFyZW5hICphcmVuYSk7Ci1hc2RsX2ludF9zZXEgKmFzZGxfaW50X3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKTsKK2FzZGxfc2VxICphc2RsX3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSk7Cithc2RsX2ludF9zZXEgKmFzZGxfaW50X3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSk7CiAKICNkZWZpbmUgYXNkbF9zZXFfR0VUKFMsIEkpIChTKS0+ZWxlbWVudHNbKEkpXQogI2RlZmluZSBhc2RsX3NlcV9MRU4oUykgKChTKSA9PSBOVUxMID8gMCA6IChTKS0+c2l6ZSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYXN0LmggYi9JbmNsdWRlL2FzdC5oCmluZGV4IGEwMTUzMzYuLjA1NWU4ZGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvYXN0LmgKKysrIGIvSW5jbHVkZS9hc3QuaApAQCAtNCw2ICs0LDcgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1B5QVBJX0ZVTkMoaW50KSBQeUFTVF9WYWxpZGF0ZShtb2RfdHkpOwogUHlBUElfRlVOQyhtb2RfdHkpIFB5QVNUX0Zyb21Ob2RlKAogICAgIGNvbnN0IG5vZGUgKm4sCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKZGlmZiAtLWdpdCBhL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBiL0luY2x1ZGUvYnl0ZXNvYmplY3QuaAppbmRleCBlMWFmODlmLi5kN2M3ZmZkIDEwMDY0NAotLS0gYS9JbmNsdWRlL2J5dGVzb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9ieXRlc29iamVjdC5oCkBAIC02Miw4ICs2Miw2IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKFB5T2JqZWN0ICoqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlCeXRlc19SZXNpemUoUHlPYmplY3QgKiosIFB5X3NzaXplX3QpOwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCeXRlc19Gb3JtYXRMb25nKFB5T2JqZWN0KiwgaW50LCBpbnQsCi0JCQkJCQkgIGludCwgY2hhcioqLCBpbnQqKTsKICNlbmRpZgogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICosIFB5X3NzaXplX3QsCiAJCQkJCQkgICBjb25zdCBjaGFyICosIFB5X3NzaXplX3QsCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvZGUuaCBiL0luY2x1ZGUvY29kZS5oCmluZGV4IGU3NzNiNmEuLjdjN2U1YmYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY29kZS5oCisrKyBiL0luY2x1ZGUvY29kZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAgICAgUHlPYmplY3QgKmNvX2ZyZWV2YXJzOwkvKiB0dXBsZSBvZiBzdHJpbmdzIChmcmVlIHZhcmlhYmxlIG5hbWVzKSAqLwogICAgIFB5T2JqZWN0ICpjb19jZWxsdmFyczsgICAgICAvKiB0dXBsZSBvZiBzdHJpbmdzIChjZWxsIHZhcmlhYmxlIG5hbWVzKSAqLwogICAgIC8qIFRoZSByZXN0IGRvZXNuJ3QgY291bnQgZm9yIGhhc2ggb3IgY29tcGFyaXNvbnMgKi8KKyAgICB1bnNpZ25lZCBjaGFyICpjb19jZWxsMmFyZzsgLyogTWFwcyBjZWxsIHZhcnMgd2hpY2ggYXJlIGFyZ3VtZW50cy4gKi8KICAgICBQeU9iamVjdCAqY29fZmlsZW5hbWU7CS8qIHVuaWNvZGUgKHdoZXJlIGl0IHdhcyBsb2FkZWQgZnJvbSkgKi8KICAgICBQeU9iamVjdCAqY29fbmFtZTsJCS8qIHVuaWNvZGUgKG5hbWUsIGZvciByZWZlcmVuY2UpICovCiAgICAgaW50IGNvX2ZpcnN0bGluZW5vOwkJLyogZmlyc3Qgc291cmNlIGxpbmUgbnVtYmVyICovCkBAIC01Nyw2ICs1OCwxMSBAQAogCiAjZGVmaW5lIENPX0ZVVFVSRV9CQVJSWV9BU19CREZMICAweDQwMDAwCiAKKy8qIFRoaXMgdmFsdWUgaXMgZm91bmQgaW4gdGhlIGNvX2NlbGwyYXJnIGFycmF5IHdoZW4gdGhlIGFzc29jaWF0ZWQgY2VsbAorICAgdmFyaWFibGUgZG9lcyBub3QgY29ycmVzcG9uZCB0byBhbiBhcmd1bWVudC4gVGhlIG1heGltdW0gbnVtYmVyIG9mCisgICBhcmd1bWVudHMgaXMgMjU1IChpbmRleGVkIHVwIHRvIDI1NCksIHNvIDI1NSB3b3JrIGFzIGEgc3BlY2lhbCBmbGFnLiovCisjZGVmaW5lIENPX0NFTExfTk9UX0FOX0FSRyAyNTUKKwogLyogVGhpcyBzaG91bGQgYmUgZGVmaW5lZCBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnQgbW9kaWZpZXMgdGhlIHN5bnRheC4KICAgIEZvciBleGFtcGxlLCB3aGVuIGEga2V5d29yZCBpcyBhZGRlZC4KICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL2NvZGVjcy5oIGIvSW5jbHVkZS9jb2RlY3MuaAppbmRleCBkZmYwOWU3Li4wZDllOWI0IDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvZGVjcy5oCisrKyBiL0luY2x1ZGUvY29kZWNzLmgKQEAgLTE3NCw2ICsxNzQsOCBAQAogLyogcmVwbGFjZSB0aGUgdW5pY29kZSBlbmNvZGUgZXJyb3Igd2l0aCBiYWNrc2xhc2ggZXNjYXBlcyAoXHgsIFx1IGFuZCBcVSkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzKFB5T2JqZWN0ICpleGMpOwogCitQeUFQSV9EQVRBKGNvbnN0IGNoYXIgKikgUHlfaGV4ZGlnaXRzOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jb21waWxlLmggYi9JbmNsdWRlL2NvbXBpbGUuaAppbmRleCBiYzUzYjM5Li5hYzI2MzZkIDEwMDY0NAotLS0gYS9JbmNsdWRlL2NvbXBpbGUuaAorKysgYi9JbmNsdWRlL2NvbXBpbGUuaApAQCAtMSw3ICsxLDcgQEAKLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKICNpZm5kZWYgUHlfQ09NUElMRV9ICiAjZGVmaW5lIFB5X0NPTVBJTEVfSAogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAjaW5jbHVkZSAiY29kZS5oIgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTM4LDkgKzM4LDE5IEBACiAgICAgUHlBcmVuYSAqYXJlbmEpOwogUHlBUElfRlVOQyhQeUZ1dHVyZUZlYXR1cmVzICopIFB5RnV0dXJlX0Zyb21BU1Qoc3RydWN0IF9tb2QgKiwgY29uc3QgY2hhciAqKTsKIAorLyogX1B5X01hbmdsZSBpcyBkZWZpbmVkIGluIGNvbXBpbGUuYyAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeV9NYW5nbGUoUHlPYmplY3QgKnAsIFB5T2JqZWN0ICpuYW1lKTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKLSNlbmRpZiAvKiAhUHlfQ09NUElMRV9IICovCisKICNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKworLyogVGhlc2UgZGVmaW5pdGlvbnMgbXVzdCBtYXRjaCBjb3JyZXNwb25kaW5nIGRlZmluaXRpb25zIGluIGdyYW1pbml0LmguCisgICBUaGVyZSdzIGNvZGUgaW4gY29tcGlsZS5jIHRoYXQgY2hlY2tzIHRoYXQgdGhleSBhcmUgdGhlIHNhbWUuICovCisjZGVmaW5lIFB5X3NpbmdsZV9pbnB1dCAyNTYKKyNkZWZpbmUgUHlfZmlsZV9pbnB1dCAyNTcKKyNkZWZpbmUgUHlfZXZhbF9pbnB1dCAyNTgKKworI2VuZGlmIC8qICFQeV9DT01QSUxFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvY29tcGxleG9iamVjdC5oIGIvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmgKaW5kZXggYzM3OWIwOC4uMTkzNGYzYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmgKQEAgLTYzLDkgKzYzLDEyIEBACiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbik7CitQeUFQSV9GVU5DKGludCkgX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2RhdGV0aW1lLmggYi9JbmNsdWRlL2RhdGV0aW1lLmgKaW5kZXggZGI1N2ExOC4uNDFlM2JjZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kYXRldGltZS5oCisrKyBiL0luY2x1ZGUvZGF0ZXRpbWUuaApAQCAtMTM1LDYgKzEzNSwxMiBAQAogICAgICAoKChQeURhdGVUaW1lX1RpbWUqKW8pLT5kYXRhWzRdIDw8IDgpICB8ICAgICAgICAgICBcCiAgICAgICAoKFB5RGF0ZVRpbWVfVGltZSopbyktPmRhdGFbNV0pCiAKKy8qIEFwcGx5IGZvciB0aW1lIGRlbHRhIGluc3RhbmNlcyAqLworI2RlZmluZSBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTKG8pICAgICAgICAgKCgoUHlEYXRlVGltZV9EZWx0YSopbyktPmRheXMpCisjZGVmaW5lIFB5RGF0ZVRpbWVfREVMVEFfR0VUX1NFQ09ORFMobykgICAgICAoKChQeURhdGVUaW1lX0RlbHRhKilvKS0+c2Vjb25kcykKKyNkZWZpbmUgUHlEYXRlVGltZV9ERUxUQV9HRVRfTUlDUk9TRUNPTkRTKG8pICAgICAgICAgICAgXAorICAgICgoKFB5RGF0ZVRpbWVfRGVsdGEqKW8pLT5taWNyb3NlY29uZHMpCisKIAogLyogRGVmaW5lIHN0cnVjdHVyZSBmb3IgQyBBUEkuICovCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmggYi9JbmNsdWRlL2Rlc2Nyb2JqZWN0LmgKaW5kZXggNjQ2YjNjYy4uZTJiYTk3ZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kZXNjcm9iamVjdC5oCisrKyBiL0luY2x1ZGUvZGVzY3JvYmplY3QuaApAQCAtNDIsNiArNDIsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeVR5cGVPYmplY3QgKmRfdHlwZTsKICAgICBQeU9iamVjdCAqZF9uYW1lOworICAgIFB5T2JqZWN0ICpkX3F1YWxuYW1lOwogfSBQeURlc2NyT2JqZWN0OwogCiAjZGVmaW5lIFB5RGVzY3JfQ09NTU9OIFB5RGVzY3JPYmplY3QgZF9jb21tb24KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZGljdG9iamVjdC5oIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKaW5kZXggYjAyNjc4NS4uZDg5YWFjOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9kaWN0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9kaWN0b2JqZWN0LmgKQEAgLTEzLDc4ICsxMywyMCBAQAogICAgdHVuaW5nIGRpY3Rpb25hcmllcywgYW5kIHNldmVyYWwgaWRlYXMgZm9yIHBvc3NpYmxlIG9wdGltaXphdGlvbnMuCiAqLwogCi0vKgotVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIHNsb3RzIGluIHRoZSB0YWJsZToKLQotMS4gVW51c2VkLiAgbWVfa2V5ID09IG1lX3ZhbHVlID09IE5VTEwKLSAgIERvZXMgbm90IGhvbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyIG5vdyBhbmQgbmV2ZXIgZGlkLiAgVW51c2VkIGNhbgotICAgdHJhbnNpdGlvbiB0byBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoCi0gICBtZV9rZXkgaXMgTlVMTCwgYW5kIGlzIGVhY2ggc2xvdCdzIGluaXRpYWwgc3RhdGUuCi0KLTIuIEFjdGl2ZS4gIG1lX2tleSAhPSBOVUxMIGFuZCBtZV9rZXkgIT0gZHVtbXkgYW5kIG1lX3ZhbHVlICE9IE5VTEwKLSAgIEhvbGRzIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpci4gIEFjdGl2ZSBjYW4gdHJhbnNpdGlvbiB0byBEdW1teSB1cG9uCi0gICBrZXkgZGVsZXRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KLQotMy4gRHVtbXkuICBtZV9rZXkgPT0gZHVtbXkgYW5kIG1lX3ZhbHVlID09IE5VTEwKLSAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgotICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bwotICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgotICAgKGNhbm5vdCBoYXZlIG1lX2tleSBzZXQgdG8gTlVMTCksIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YKLSAgIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93IHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KLQotTm90ZTogLnBvcGl0ZW0oKSBhYnVzZXMgdGhlIG1lX2hhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIG1lX2hhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcyBubwotbWVhbmluZyBvdGhlcndpc2UuCi0qLwotCi0vKiBQeURpY3RfTUlOU0laRSBpcyB0aGUgbWluaW11bSBzaXplIG9mIGEgZGljdGlvbmFyeS4gIFRoaXMgbWFueSBzbG90cyBhcmUKLSAqIGFsbG9jYXRlZCBkaXJlY3RseSBpbiB0aGUgZGljdCBvYmplY3QgKGluIHRoZSBtYV9zbWFsbHRhYmxlIG1lbWJlcikuCi0gKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuICA4IGFsbG93cyBkaWN0cyB3aXRoIG5vIG1vcmUKLSAqIHRoYW4gNSBhY3RpdmUgZW50cmllcyB0byBsaXZlIGluIG1hX3NtYWxsdGFibGUgKGFuZCBzbyBhdm9pZCBhbgotICogYWRkaXRpb25hbCBtYWxsb2MpOyBpbnN0cnVtZW50YXRpb24gc3VnZ2VzdGVkIHRoaXMgc3VmZmljZXMgZm9yIHRoZQotICogbWFqb3JpdHkgb2YgZGljdHMgKGNvbnNpc3RpbmcgbW9zdGx5IG9mIHVzdWFsbHktc21hbGwgaW5zdGFuY2UgZGljdHMgYW5kCi0gKiB1c3VhbGx5LXNtYWxsIGRpY3RzIGNyZWF0ZWQgdG8gcGFzcyBrZXl3b3JkIGFyZ3VtZW50cykuCi0gKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLSNkZWZpbmUgUHlEaWN0X01JTlNJWkUgOAogCit0eXBlZGVmIHN0cnVjdCBfZGljdGtleXNvYmplY3QgUHlEaWN0S2V5c09iamVjdDsKKworLyogVGhlIG1hX3ZhbHVlcyBwb2ludGVyIGlzIE5VTEwgZm9yIGEgY29tYmluZWQgdGFibGUKKyAqIG9yIHBvaW50cyB0byBhbiBhcnJheSBvZiBQeU9iamVjdCogZm9yIGEgc3BsaXQgdGFibGUKKyAqLwogdHlwZWRlZiBzdHJ1Y3QgewotICAgIC8qIENhY2hlZCBoYXNoIGNvZGUgb2YgbWVfa2V5LiAqLwotICAgIFB5X2hhc2hfdCBtZV9oYXNoOwotICAgIFB5T2JqZWN0ICptZV9rZXk7Ci0gICAgUHlPYmplY3QgKm1lX3ZhbHVlOwotfSBQeURpY3RFbnRyeTsKLQotLyoKLVRvIGVuc3VyZSB0aGUgbG9va3VwIGFsZ29yaXRobSB0ZXJtaW5hdGVzLCB0aGVyZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBVbnVzZWQKLXNsb3QgKE5VTEwga2V5KSBpbiB0aGUgdGFibGUuCi1UaGUgdmFsdWUgbWFfZmlsbCBpcyB0aGUgbnVtYmVyIG9mIG5vbi1OVUxMIGtleXMgKHN1bSBvZiBBY3RpdmUgYW5kIER1bW15KTsKLW1hX3VzZWQgaXMgdGhlIG51bWJlciBvZiBub24tTlVMTCwgbm9uLWR1bW15IGtleXMgKD09IHRoZSBudW1iZXIgb2Ygbm9uLU5VTEwKLXZhbHVlcyA9PSB0aGUgbnVtYmVyIG9mIEFjdGl2ZSBpdGVtcykuCi1UbyBhdm9pZCBzbG93aW5nIGRvd24gbG9va3VwcyBvbiBhIG5lYXItZnVsbCB0YWJsZSwgd2UgcmVzaXplIHRoZSB0YWJsZSB3aGVuCi1pdCdzIHR3by10aGlyZHMgZnVsbC4KLSovCi10eXBlZGVmIHN0cnVjdCBfZGljdG9iamVjdCBQeURpY3RPYmplY3Q7Ci1zdHJ1Y3QgX2RpY3RvYmplY3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeV9zc2l6ZV90IG1hX2ZpbGw7ICAvKiAjIEFjdGl2ZSArICMgRHVtbXkgKi8KLSAgICBQeV9zc2l6ZV90IG1hX3VzZWQ7ICAvKiAjIEFjdGl2ZSAqLworICAgIFB5X3NzaXplX3QgbWFfdXNlZDsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICptYV9rZXlzOworICAgIFB5T2JqZWN0ICoqbWFfdmFsdWVzOworfSBQeURpY3RPYmplY3Q7CiAKLSAgICAvKiBUaGUgdGFibGUgY29udGFpbnMgbWFfbWFzayArIDEgc2xvdHMsIGFuZCB0aGF0J3MgYSBwb3dlciBvZiAyLgotICAgICAqIFdlIHN0b3JlIHRoZSBtYXNrIGluc3RlYWQgb2YgdGhlIHNpemUgYmVjYXVzZSB0aGUgbWFzayBpcyBtb3JlCi0gICAgICogZnJlcXVlbnRseSBuZWVkZWQuCi0gICAgICovCi0gICAgUHlfc3NpemVfdCBtYV9tYXNrOwotCi0gICAgLyogbWFfdGFibGUgcG9pbnRzIHRvIG1hX3NtYWxsdGFibGUgZm9yIHNtYWxsIHRhYmxlcywgZWxzZSB0bwotICAgICAqIGFkZGl0aW9uYWwgbWFsbG9jJ2VkIG1lbW9yeS4gIG1hX3RhYmxlIGlzIG5ldmVyIE5VTEwhICBUaGlzIHJ1bGUKLSAgICAgKiBzYXZlcyByZXBlYXRlZCBydW50aW1lIG51bGwtdGVzdHMgaW4gdGhlIHdvcmtob3JzZSBnZXRpdGVtIGFuZAotICAgICAqIHNldGl0ZW0gY2FsbHMuCi0gICAgICovCi0gICAgUHlEaWN0RW50cnkgKm1hX3RhYmxlOwotICAgIFB5RGljdEVudHJ5ICooKm1hX2xvb2t1cCkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpOwotICAgIFB5RGljdEVudHJ5IG1hX3NtYWxsdGFibGVbUHlEaWN0X01JTlNJWkVdOwotfTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlEaWN0X1R5cGU7CkBAIC0xMDksMTIgKzUxLDE2IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9OZXcodm9pZCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbUlkV2l0aEVycm9yKFB5T2JqZWN0ICpkcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKml0ZW0pOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5RGljdF9DbGVhcihQeU9iamVjdCAqbXApOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9OZXh0KAogICAgIFB5T2JqZWN0ICptcCwgUHlfc3NpemVfdCAqcG9zLCBQeU9iamVjdCAqKmtleSwgUHlPYmplY3QgKip2YWx1ZSk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeURpY3RLZXlzT2JqZWN0ICpfUHlEaWN0X05ld0tleXNGb3JDbGFzcyh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2VuZXJpY0dldERpY3QoUHlPYmplY3QgKiwgdm9pZCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBfUHlEaWN0X05leHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeU9iamVjdCAqKnZhbHVlLCBQeV9oYXNoX3QgKmhhc2gpOwogI2VuZGlmCkBAIC0xMjksNiArNzUsMTAgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5RGljdF9OZXdQcmVzaXplZChQeV9zc2l6ZV90IG1pbnVzZWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlEaWN0X01heWJlVW50cmFjayhQeU9iamVjdCAqbXApOwogUHlBUElfRlVOQyhpbnQpIF9QeURpY3RfSGFzT25seVN0cmluZ0tleXMoUHlPYmplY3QgKm1wKTsKK1B5X3NzaXplX3QgX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKKyNkZWZpbmUgX1B5RGljdF9IYXNTcGxpdFRhYmxlKGQpICgoZCktPm1hX3ZhbHVlcyAhPSBOVUxMKQorCitQeUFQSV9GVU5DKGludCkgUHlEaWN0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CiAjZW5kaWYKIAogLyogUHlEaWN0X1VwZGF0ZShtcCwgb3RoZXIpIGlzIGVxdWl2YWxlbnQgdG8gUHlEaWN0X01lcmdlKG1wLCBvdGhlciwgMSkuICovCkBAIC0xNTMsOSArMTAzLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG92ZXJyaWRlKTsKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeURpY3RfR2V0SXRlbVN0cmluZyhQeU9iamVjdCAqZHAsIGNvbnN0IGNoYXIgKmtleSk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbUlkKFB5T2JqZWN0ICpkcCwgc3RydWN0IF9QeV9JZGVudGlmaWVyICprZXkpOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5LCBQeU9iamVjdCAqaXRlbSk7CitQeUFQSV9GVU5DKGludCkgX1B5RGljdF9TZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSwgUHlPYmplY3QgKml0ZW0pOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtU3RyaW5nKFB5T2JqZWN0ICpkcCwgY29uc3QgY2hhciAqa2V5KTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQoraW50IF9QeU9iamVjdERpY3RfU2V0SXRlbShQeVR5cGVPYmplY3QgKnRwLCBQeU9iamVjdCAqKmRpY3RwdHIsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpOworUHlPYmplY3QgKl9QeURpY3RfTG9hZEdsb2JhbChQeURpY3RPYmplY3QgKiwgUHlEaWN0T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyh2b2lkKSBfUHlEaWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kdG9hLmggYi9JbmNsdWRlL2R0b2EuaAppbmRleCA4MTliZDBmLi45YmZiNjI1IDEwMDY0NAotLS0gYS9JbmNsdWRlL2R0b2EuaAorKysgYi9JbmNsdWRlL2R0b2EuaApAQCAtOCw2ICs4LDggQEAKIFB5QVBJX0ZVTkMoY2hhciAqKSBfUHlfZGdfZHRvYShkb3VibGUgZCwgaW50IG1vZGUsIGludCBuZGlnaXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpkZWNwdCwgaW50ICpzaWduLCBjaGFyICoqcnZlKTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X2RnX2ZyZWVkdG9hKGNoYXIgKnMpOworUHlBUElfRlVOQyhkb3VibGUpIF9QeV9kZ19zdGRuYW4oaW50IHNpZ24pOworUHlBUElfRlVOQyhkb3VibGUpIF9QeV9kZ19pbmZpbml0eShpbnQgc2lnbik7CiAKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2VycmNvZGUuaCBiL0luY2x1ZGUvZXJyY29kZS5oCmluZGV4IDZiYjNjYzEuLjU5NDY2ODYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZXJyY29kZS5oCisrKyBiL0luY2x1ZGUvZXJyY29kZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEVfRU9MUwkJMjQJLyogRU9MIGluIHNpbmdsZS1xdW90ZWQgc3RyaW5nICovCiAjZGVmaW5lIEVfTElORUNPTlQJMjUJLyogVW5leHBlY3RlZCBjaGFyYWN0ZXJzIGFmdGVyIGEgbGluZSBjb250aW51YXRpb24gKi8KICNkZWZpbmUgRV9JREVOVElGSUVSICAgIDI2ICAgICAgLyogSW52YWxpZCBjaGFyYWN0ZXJzIGluIGlkZW50aWZpZXIgKi8KKyNkZWZpbmUgRV9CQURTSU5HTEUJMjcJLyogSWxsLWZvcm1lZCBzaW5nbGUgc3RhdGVtZW50IGlucHV0ICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9maWxldXRpbHMuaCBiL0luY2x1ZGUvZmlsZXV0aWxzLmgKaW5kZXggMmZhZGU5Yi4uN2MxOGNmMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9maWxldXRpbHMuaAorKysgYi9JbmNsdWRlL2ZpbGV1dGlscy5oCkBAIC01LDYgKzUsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfZGV2aWNlX2VuY29kaW5nKGludCk7CisKIFB5QVBJX0ZVTkMod2NoYXJfdCAqKSBfUHlfY2hhcjJ3Y2hhcigKICAgICBjb25zdCBjaGFyICphcmcsCiAgICAgc2l6ZV90ICpzaXplKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZmxvYXRvYmplY3QuaCBiL0luY2x1ZGUvZmxvYXRvYmplY3QuaAppbmRleCA5MGYwYTQ1Li5lMjQwZmRiIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Zsb2F0b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9mbG9hdG9iamVjdC5oCkBAIC0yNywxMiArMjcsMTIgQEAKICNkZWZpbmUgUHlfUkVUVVJOX05BTiByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5X05BTikKICNlbmRpZgogCi0jZGVmaW5lIFB5X1JFVFVSTl9JTkYoc2lnbikgZG8JCQkJCVwKLQlpZiAoY29weXNpZ24oMS4sIHNpZ24pID09IDEuKSB7CQkJCVwKLQkJcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShQeV9IVUdFX1ZBTCk7CVwKLQl9IGVsc2UgewkJCQkJCVwKLQkJcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgtUHlfSFVHRV9WQUwpOwlcCi0JfSB3aGlsZSgwKQorI2RlZmluZSBQeV9SRVRVUk5fSU5GKHNpZ24pIGRvICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChjb3B5c2lnbigxLiwgc2lnbikgPT0gMS4pIHsgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKFB5X0hVR0VfVkFMKTsgICAgXAorICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKC1QeV9IVUdFX1ZBTCk7ICAgXAorICAgIH0gd2hpbGUoMCkKIAogUHlBUElfRlVOQyhkb3VibGUpIFB5RmxvYXRfR2V0TWF4KHZvaWQpOwogUHlBUElfRlVOQyhkb3VibGUpIFB5RmxvYXRfR2V0TWluKHZvaWQpOwpAQCAtMTEwLDExICsxMTAsMTYgQEAKIC8qIGZyZWUgbGlzdCBhcGkgKi8KIFB5QVBJX0ZVTkMoaW50KSBQeUZsb2F0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CiAKK1B5QVBJX0ZVTkModm9pZCkgX1B5RmxvYXRfRGVidWdNYWxsb2NTdGF0cyhGSUxFKiBvdXQpOworCiAvKiBGb3JtYXQgdGhlIG9iamVjdCBiYXNlZCBvbiB0aGUgZm9ybWF0X3NwZWMsIGFzIGRlZmluZWQgaW4gUEVQIDMxMDEKICAgIChBZHZhbmNlZCBTdHJpbmcgRm9ybWF0dGluZykuICovCi1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkKFB5T2JqZWN0ICpvYmosCi0JCQkJCSAgICAgICBQeV9VTklDT0RFICpmb3JtYXRfc3BlYywKLQkJCQkJICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgUHlPYmplY3QgKm9iaiwKKyAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCk7CiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZyYW1lb2JqZWN0LmggYi9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKaW5kZXggMWZiNjRiYi4uYWMyZjc5MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mcmFtZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZnJhbWVvYmplY3QuaApAQCAtOSw0NSArOSw0NSBAQAogI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBpbnQgYl90eXBlOwkJCS8qIHdoYXQga2luZCBvZiBibG9jayB0aGlzIGlzICovCi0gICAgaW50IGJfaGFuZGxlcjsJCS8qIHdoZXJlIHRvIGp1bXAgdG8gZmluZCBoYW5kbGVyICovCi0gICAgaW50IGJfbGV2ZWw7CQkvKiB2YWx1ZSBzdGFjayBsZXZlbCB0byBwb3AgdG8gKi8KKyAgICBpbnQgYl90eXBlOyAgICAgICAgICAgICAgICAgLyogd2hhdCBraW5kIG9mIGJsb2NrIHRoaXMgaXMgKi8KKyAgICBpbnQgYl9oYW5kbGVyOyAgICAgICAgICAgICAgLyogd2hlcmUgdG8ganVtcCB0byBmaW5kIGhhbmRsZXIgKi8KKyAgICBpbnQgYl9sZXZlbDsgICAgICAgICAgICAgICAgLyogdmFsdWUgc3RhY2sgbGV2ZWwgdG8gcG9wIHRvICovCiB9IFB5VHJ5QmxvY2s7CiAKIHR5cGVkZWYgc3RydWN0IF9mcmFtZSB7CiAgICAgUHlPYmplY3RfVkFSX0hFQUQKLSAgICBzdHJ1Y3QgX2ZyYW1lICpmX2JhY2s7CS8qIHByZXZpb3VzIGZyYW1lLCBvciBOVUxMICovCi0gICAgUHlDb2RlT2JqZWN0ICpmX2NvZGU7CS8qIGNvZGUgc2VnbWVudCAqLwotICAgIFB5T2JqZWN0ICpmX2J1aWx0aW5zOwkvKiBidWlsdGluIHN5bWJvbCB0YWJsZSAoUHlEaWN0T2JqZWN0KSAqLwotICAgIFB5T2JqZWN0ICpmX2dsb2JhbHM7CS8qIGdsb2JhbCBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KLSAgICBQeU9iamVjdCAqZl9sb2NhbHM7CQkvKiBsb2NhbCBzeW1ib2wgdGFibGUgKGFueSBtYXBwaW5nKSAqLwotICAgIFB5T2JqZWN0ICoqZl92YWx1ZXN0YWNrOwkvKiBwb2ludHMgYWZ0ZXIgdGhlIGxhc3QgbG9jYWwgKi8KKyAgICBzdHJ1Y3QgX2ZyYW1lICpmX2JhY2s7ICAgICAgLyogcHJldmlvdXMgZnJhbWUsIG9yIE5VTEwgKi8KKyAgICBQeUNvZGVPYmplY3QgKmZfY29kZTsgICAgICAgLyogY29kZSBzZWdtZW50ICovCisgICAgUHlPYmplY3QgKmZfYnVpbHRpbnM7ICAgICAgIC8qIGJ1aWx0aW4gc3ltYm9sIHRhYmxlIChQeURpY3RPYmplY3QpICovCisgICAgUHlPYmplY3QgKmZfZ2xvYmFsczsgICAgICAgIC8qIGdsb2JhbCBzeW1ib2wgdGFibGUgKFB5RGljdE9iamVjdCkgKi8KKyAgICBQeU9iamVjdCAqZl9sb2NhbHM7ICAgICAgICAgLyogbG9jYWwgc3ltYm9sIHRhYmxlIChhbnkgbWFwcGluZykgKi8KKyAgICBQeU9iamVjdCAqKmZfdmFsdWVzdGFjazsgICAgLyogcG9pbnRzIGFmdGVyIHRoZSBsYXN0IGxvY2FsICovCiAgICAgLyogTmV4dCBmcmVlIHNsb3QgaW4gZl92YWx1ZXN0YWNrLiAgRnJhbWUgY3JlYXRpb24gc2V0cyB0byBmX3ZhbHVlc3RhY2suCiAgICAgICAgRnJhbWUgZXZhbHVhdGlvbiB1c3VhbGx5IE5VTExzIGl0LCBidXQgYSBmcmFtZSB0aGF0IHlpZWxkcyBzZXRzIGl0CiAgICAgICAgdG8gdGhlIGN1cnJlbnQgc3RhY2sgdG9wLiAqLwogICAgIFB5T2JqZWN0ICoqZl9zdGFja3RvcDsKLSAgICBQeU9iamVjdCAqZl90cmFjZTsJCS8qIFRyYWNlIGZ1bmN0aW9uICovCisgICAgUHlPYmplY3QgKmZfdHJhY2U7ICAgICAgICAgIC8qIFRyYWNlIGZ1bmN0aW9uICovCiAKLQkvKiBJbiBhIGdlbmVyYXRvciwgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHN3YXAgYmV0d2VlbiB0aGUgZXhjZXB0aW9uCi0JICAgc3RhdGUgaW5zaWRlIHRoZSBnZW5lcmF0b3IgYW5kIHRoZSBleGNlcHRpb24gc3RhdGUgb2YgdGhlIGNhbGxpbmcKLQkgICBmcmFtZSAod2hpY2ggc2hvdWxkbid0IGJlIGltcGFjdGVkIHdoZW4gdGhlIGdlbmVyYXRvciAieWllbGRzIgotCSAgIGZyb20gYW4gZXhjZXB0IGhhbmRsZXIpLgotCSAgIFRoZXNlIHRocmVlIGZpZWxkcyBleGlzdCBleGFjdGx5IGZvciB0aGF0LCBhbmQgYXJlIHVudXNlZCBmb3IKLQkgICBub24tZ2VuZXJhdG9yIGZyYW1lcy4gU2VlIHRoZSBTQVZFX0VYQ19TVEFURSBhbmQgU1dBUF9FWENfU1RBVEUKLQkgICBtYWNyb3MgaW4gY2V2YWwuYyBmb3IgZGV0YWlscyBvZiB0aGVpciB1c2UuICovCisgICAgICAgIC8qIEluIGEgZ2VuZXJhdG9yLCB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc3dhcCBiZXR3ZWVuIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgc3RhdGUgaW5zaWRlIHRoZSBnZW5lcmF0b3IgYW5kIHRoZSBleGNlcHRpb24gc3RhdGUgb2YgdGhlIGNhbGxpbmcKKyAgICAgICAgICAgZnJhbWUgKHdoaWNoIHNob3VsZG4ndCBiZSBpbXBhY3RlZCB3aGVuIHRoZSBnZW5lcmF0b3IgInlpZWxkcyIKKyAgICAgICAgICAgZnJvbSBhbiBleGNlcHQgaGFuZGxlcikuCisgICAgICAgICAgIFRoZXNlIHRocmVlIGZpZWxkcyBleGlzdCBleGFjdGx5IGZvciB0aGF0LCBhbmQgYXJlIHVudXNlZCBmb3IKKyAgICAgICAgICAgbm9uLWdlbmVyYXRvciBmcmFtZXMuIFNlZSB0aGUgU0FWRV9FWENfU1RBVEUgYW5kIFNXQVBfRVhDX1NUQVRFCisgICAgICAgICAgIG1hY3JvcyBpbiBjZXZhbC5jIGZvciBkZXRhaWxzIG9mIHRoZWlyIHVzZS4gKi8KICAgICBQeU9iamVjdCAqZl9leGNfdHlwZSwgKmZfZXhjX3ZhbHVlLCAqZl9leGNfdHJhY2ViYWNrOwogCiAgICAgUHlUaHJlYWRTdGF0ZSAqZl90c3RhdGU7Ci0gICAgaW50IGZfbGFzdGk7CQkvKiBMYXN0IGluc3RydWN0aW9uIGlmIGNhbGxlZCAqLworICAgIGludCBmX2xhc3RpOyAgICAgICAgICAgICAgICAvKiBMYXN0IGluc3RydWN0aW9uIGlmIGNhbGxlZCAqLwogICAgIC8qIENhbGwgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgaW5zdGVhZCBvZiByZWFkaW5nIHRoaXMgZmllbGQKICAgICAgICBkaXJlY3RseS4gIEFzIG9mIDIuMyBmX2xpbmVubyBpcyBvbmx5IHZhbGlkIHdoZW4gdHJhY2luZyBpcwogICAgICAgIGFjdGl2ZSAoaS5lLiB3aGVuIGZfdHJhY2UgaXMgc2V0KS4gIEF0IG90aGVyIHRpbWVzIHdlIHVzZQogICAgICAgIFB5Q29kZV9BZGRyMkxpbmUgdG8gY2FsY3VsYXRlIHRoZSBsaW5lIGZyb20gdGhlIGN1cnJlbnQKICAgICAgICBieXRlY29kZSBpbmRleC4gKi8KLSAgICBpbnQgZl9saW5lbm87CQkvKiBDdXJyZW50IGxpbmUgbnVtYmVyICovCi0gICAgaW50IGZfaWJsb2NrOwkJLyogaW5kZXggaW4gZl9ibG9ja3N0YWNrICovCisgICAgaW50IGZfbGluZW5vOyAgICAgICAgICAgICAgIC8qIEN1cnJlbnQgbGluZSBudW1iZXIgKi8KKyAgICBpbnQgZl9pYmxvY2s7ICAgICAgICAgICAgICAgLyogaW5kZXggaW4gZl9ibG9ja3N0YWNrICovCiAgICAgUHlUcnlCbG9jayBmX2Jsb2Nrc3RhY2tbQ09fTUFYQkxPQ0tTXTsgLyogZm9yIHRyeSBhbmQgbG9vcCBibG9ja3MgKi8KLSAgICBQeU9iamVjdCAqZl9sb2NhbHNwbHVzWzFdOwkvKiBsb2NhbHMrc3RhY2ssIGR5bmFtaWNhbGx5IHNpemVkICovCisgICAgUHlPYmplY3QgKmZfbG9jYWxzcGx1c1sxXTsgIC8qIGxvY2FscytzdGFjaywgZHluYW1pY2FsbHkgc2l6ZWQgKi8KIH0gUHlGcmFtZU9iamVjdDsKIAogCkBAIC03OSw2ICs3OSw4IEBACiAKIFB5QVBJX0ZVTkMoaW50KSBQeUZyYW1lX0NsZWFyRnJlZUxpc3Qodm9pZCk7CiAKK1B5QVBJX0ZVTkModm9pZCkgX1B5RnJhbWVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworCiAvKiBSZXR1cm4gdGhlIGxpbmUgb2YgY29kZSB0aGUgZnJhbWUgaXMgY3VycmVudGx5IGV4ZWN1dGluZy4gKi8KIFB5QVBJX0ZVTkMoaW50KSBQeUZyYW1lX0dldExpbmVOdW1iZXIoUHlGcmFtZU9iamVjdCAqKTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9mdW5jb2JqZWN0LmggYi9JbmNsdWRlL2Z1bmNvYmplY3QuaAppbmRleCA1MjFkODdiLi5jYzE0MjZjIDEwMDY0NAotLS0gYS9JbmNsdWRlL2Z1bmNvYmplY3QuaAorKysgYi9JbmNsdWRlL2Z1bmNvYmplY3QuaApAQCAtMzEsNiArMzEsNyBAQAogICAgIFB5T2JqZWN0ICpmdW5jX3dlYWtyZWZsaXN0OwkvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyAqLwogICAgIFB5T2JqZWN0ICpmdW5jX21vZHVsZTsJLyogVGhlIF9fbW9kdWxlX18gYXR0cmlidXRlLCBjYW4gYmUgYW55dGhpbmcgKi8KICAgICBQeU9iamVjdCAqZnVuY19hbm5vdGF0aW9uczsJLyogQW5ub3RhdGlvbnMsIGEgZGljdCBvciBOVUxMICovCisgICAgUHlPYmplY3QgKmZ1bmNfcXVhbG5hbWU7ICAgIC8qIFRoZSBxdWFsaWZpZWQgbmFtZSAqLwogCiAgICAgLyogSW52YXJpYW50OgogICAgICAqICAgICBmdW5jX2Nsb3N1cmUgY29udGFpbnMgdGhlIGJpbmRpbmdzIGZvciBmdW5jX2NvZGUtPmNvX2ZyZWV2YXJzLCBzbwpAQCAtNDQsNiArNDUsNyBAQAogI2RlZmluZSBQeUZ1bmN0aW9uX0NoZWNrKG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5RnVuY3Rpb25fVHlwZSkKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX05ldyhQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlGdW5jdGlvbl9HZXRHbG9iYWxzKFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUZ1bmN0aW9uX0dldE1vZHVsZShQeU9iamVjdCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ2Vub2JqZWN0LmggYi9JbmNsdWRlL2dlbm9iamVjdC5oCmluZGV4IGQyOWZiMWUuLmVkNDUxYmEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ2Vub2JqZWN0LmgKKysrIGIvSW5jbHVkZS9nZW5vYmplY3QuaApAQCAtMTEsMjAgKzExLDIwIEBACiBzdHJ1Y3QgX2ZyYW1lOyAvKiBBdm9pZCBpbmNsdWRpbmcgZnJhbWVvYmplY3QuaCAqLwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0JUHlPYmplY3RfSEVBRAotCS8qIFRoZSBnaV8gcHJlZml4IGlzIGludGVuZGVkIHRvIHJlbWluZCBvZiBnZW5lcmF0b3ItaXRlcmF0b3IuICovCisgICAgUHlPYmplY3RfSEVBRAorICAgIC8qIFRoZSBnaV8gcHJlZml4IGlzIGludGVuZGVkIHRvIHJlbWluZCBvZiBnZW5lcmF0b3ItaXRlcmF0b3IuICovCiAKLQkvKiBOb3RlOiBnaV9mcmFtZSBjYW4gYmUgTlVMTCBpZiB0aGUgZ2VuZXJhdG9yIGlzICJmaW5pc2hlZCIgKi8KLQlzdHJ1Y3QgX2ZyYW1lICpnaV9mcmFtZTsKKyAgICAvKiBOb3RlOiBnaV9mcmFtZSBjYW4gYmUgTlVMTCBpZiB0aGUgZ2VuZXJhdG9yIGlzICJmaW5pc2hlZCIgKi8KKyAgICBzdHJ1Y3QgX2ZyYW1lICpnaV9mcmFtZTsKIAotCS8qIFRydWUgaWYgZ2VuZXJhdG9yIGlzIGJlaW5nIGV4ZWN1dGVkLiAqLwotCWludCBnaV9ydW5uaW5nOwotICAgIAotCS8qIFRoZSBjb2RlIG9iamVjdCBiYWNraW5nIHRoZSBnZW5lcmF0b3IgKi8KLQlQeU9iamVjdCAqZ2lfY29kZTsKKyAgICAvKiBUcnVlIGlmIGdlbmVyYXRvciBpcyBiZWluZyBleGVjdXRlZC4gKi8KKyAgICBjaGFyIGdpX3J1bm5pbmc7CiAKLQkvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlLiAqLwotCVB5T2JqZWN0ICpnaV93ZWFrcmVmbGlzdDsKKyAgICAvKiBUaGUgY29kZSBvYmplY3QgYmFja2luZyB0aGUgZ2VuZXJhdG9yICovCisgICAgUHlPYmplY3QgKmdpX2NvZGU7CisKKyAgICAvKiBMaXN0IG9mIHdlYWsgcmVmZXJlbmNlLiAqLworICAgIFB5T2JqZWN0ICpnaV93ZWFrcmVmbGlzdDsKIH0gUHlHZW5PYmplY3Q7CiAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUdlbl9UeXBlOwpAQCAtMzQsNiArMzQsOCBAQAogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5R2VuX05ldyhzdHJ1Y3QgX2ZyYW1lICopOwogUHlBUElfRlVOQyhpbnQpIFB5R2VuX05lZWRzRmluYWxpemluZyhQeUdlbk9iamVjdCAqKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoUHlPYmplY3QgKiopOworUHlPYmplY3QgKl9QeUdlbl9TZW5kKFB5R2VuT2JqZWN0ICosIFB5T2JqZWN0ICopOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvZ3JhbWluaXQuaCBiL0luY2x1ZGUvZ3JhbWluaXQuaAppbmRleCBlMGUyN2Y5Li4zZWM5NDlhIDEwMDY0NAotLS0gYS9JbmNsdWRlL2dyYW1pbml0LmgKKysrIGIvSW5jbHVkZS9ncmFtaW5pdC5oCkBAIC04MSwzICs4MSw0IEBACiAjZGVmaW5lIGNvbXBfaWYgMzM0CiAjZGVmaW5lIGVuY29kaW5nX2RlY2wgMzM1CiAjZGVmaW5lIHlpZWxkX2V4cHIgMzM2CisjZGVmaW5lIHlpZWxkX2FyZyAzMzcKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW1wb3J0LmggYi9JbmNsdWRlL2ltcG9ydC5oCmluZGV4IDQwMGU5N2MuLmZkYzI3MzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW1wb3J0LmgKKysrIGIvSW5jbHVkZS9pbXBvcnQuaApAQCAtNyw2ICs3LDkgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1B5QVBJX0ZVTkModm9pZCkgX1B5SW1wb3J0WmlwX0luaXQodm9pZCk7CisKK1B5TU9ESU5JVF9GVU5DIFB5SW5pdF9pbXAodm9pZCk7CiBQeUFQSV9GVU5DKGxvbmcpIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5SW1wb3J0X0dldE1hZ2ljVGFnKHZvaWQpOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZSgKQEAgLTI0LDcgKzI3LDE2IEBACiAgICAgY2hhciAqcGF0aG5hbWUsICAgICAgICAgICAgIC8qIGRlY29kZWQgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLwogICAgIGNoYXIgKmNwYXRobmFtZSAgICAgICAgICAgICAvKiBkZWNvZGVkIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZU9iamVjdCgKKyAgICBQeU9iamVjdCAqbmFtZSwKKyAgICBQeU9iamVjdCAqY28sCisgICAgUHlPYmplY3QgKnBhdGhuYW1lLAorICAgIFB5T2JqZWN0ICpjcGF0aG5hbWUKKyAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KHZvaWQpOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUKKyAgICApOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUltcG9ydF9BZGRNb2R1bGUoCiAgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKQEAgLTM1LDcgKzQ3LDE0IEBACiAgICAgY29uc3QgY2hhciAqbmFtZSAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwoCi0gICAgY2hhciAqbmFtZSwgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgY29uc3QgY2hhciAqbmFtZSwgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCisgICAgUHlPYmplY3QgKmdsb2JhbHMsCisgICAgUHlPYmplY3QgKmxvY2FscywKKyAgICBQeU9iamVjdCAqZnJvbWxpc3QsCisgICAgaW50IGxldmVsCisgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUsCiAgICAgUHlPYmplY3QgKmdsb2JhbHMsCiAgICAgUHlPYmplY3QgKmxvY2FscywKICAgICBQeU9iamVjdCAqZnJvbWxpc3QsCkBAIC00MywxMiArNjIsMTUgQEAKICAgICApOwogCiAjZGVmaW5lIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KG4sIGcsIGwsIGYpIFwKLSAgICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChuLCBnLCBsLCBmLCAtMSkKKyAgICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChuLCBnLCBsLCBmLCAwKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW1wb3J0X0dldEltcG9ydGVyKFB5T2JqZWN0ICpwYXRoKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfSW1wb3J0KFB5T2JqZWN0ICpuYW1lKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlJbXBvcnRfUmVsb2FkTW9kdWxlKFB5T2JqZWN0ICptKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbXBvcnRfQ2xlYW51cCh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoCisgICAgUHlPYmplY3QgKm5hbWUKKyAgICApOwogUHlBUElfRlVOQyhpbnQpIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZSgKICAgICBjaGFyICpuYW1lICAgICAgICAgICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwpAQCAtNjUsMTcgKzg3LDE3IEBACiBQeUFQSV9GVU5DKHZvaWQpIF9QeUltcG9ydF9SZUluaXRMb2NrKHZvaWQpOwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopX1B5SW1wb3J0X0ZpbmRCdWlsdGluKAotICAgIGNoYXIgKm5hbWUgICAgICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLworICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKGNoYXIgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludClfUHlJbXBvcnRfRml4dXBCdWlsdGluKAogICAgIFB5T2JqZWN0ICptb2QsCiAgICAgY2hhciAqbmFtZSAgICAgICAgICAgICAgICAgIC8qIFVURi04IGVuY29kZWQgc3RyaW5nICovCiAgICAgKTsKLVB5QVBJX0ZVTkMoaW50KV9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUoUHlPYmplY3QqLCBjaGFyICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0KiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIHN0cnVjdCBfaW5pdHRhYiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjaGFyICpuYW1lOyAgICAgICAgICAgICAgICAgLyogQVNDSUkgZW5jb2RlZCBzdHJpbmcgKi8KICAgICBQeU9iamVjdCogKCppbml0ZnVuYykodm9pZCk7CiB9OwogUHlBUElfREFUQShzdHJ1Y3QgX2luaXR0YWIgKikgUHlJbXBvcnRfSW5pdHRhYjsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW50cmNoZWNrLmggYi9JbmNsdWRlL2ludHJjaGVjay5oCmluZGV4IDNiNjdlZDAuLmY1M2ZlZTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW50cmNoZWNrLmgKKysrIGIvSW5jbHVkZS9pbnRyY2hlY2suaApAQCAtOCw2ICs4LDEyIEBACiBQeUFQSV9GVU5DKGludCkgUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPU19BZnRlckZvcmsodm9pZCk7CitQeUFQSV9GVU5DKGludCkgX1B5T1NfSXNNYWluVGhyZWFkKHZvaWQpOworCisjaWZkZWYgTVNfV0lORE9XUworLyogd2luZG93cy5oIGlzIG5vdCBpbmNsdWRlZCBieSBQeXRob24uaCBzbyB1c2Ugdm9pZCogaW5zdGVhZCBvZiBIQU5ETEUgKi8KK1B5QVBJX0ZVTkModm9pZCopIF9QeU9TX1NpZ2ludEV2ZW50KHZvaWQpOworI2VuZGlmCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9saXN0b2JqZWN0LmggYi9JbmNsdWRlL2xpc3RvYmplY3QuaAppbmRleCA5NDliMWEzLi5kYzYyYWVlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xpc3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2xpc3RvYmplY3QuaApAQCAtNjIsNiArNjIsOSBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxpc3RfQXNUdXBsZShQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TGlzdF9FeHRlbmQoUHlMaXN0T2JqZWN0ICosIFB5T2JqZWN0ICopOworCitQeUFQSV9GVU5DKGludCkgUHlMaXN0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUxpc3RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOwogI2VuZGlmCiAKIC8qIE1hY3JvLCB0cmFkaW5nIHNhZmV0eSBmb3Igc3BlZWQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbG9uZ2ludHJlcHIuaCBiL0luY2x1ZGUvbG9uZ2ludHJlcHIuaAppbmRleCBiOTRmN2IyLi4zYTQ1YmFkIDEwMDY0NAotLS0gYS9JbmNsdWRlL2xvbmdpbnRyZXByLmgKKysrIGIvSW5jbHVkZS9sb25naW50cmVwci5oCkBAIC02LDcgKzYsNyBAQAogI2VuZGlmCiAKIAotLyogVGhpcyBpcyBwdWJsaXNoZWQgZm9yIHRoZSBiZW5lZml0IG9mICJmcmllbmQiIG1hcnNoYWwuYyBvbmx5LiAqLworLyogVGhpcyBpcyBwdWJsaXNoZWQgZm9yIHRoZSBiZW5lZml0IG9mICJmcmllbmRzIiBtYXJzaGFsLmMgYW5kIF9kZWNpbWFsLmMuICovCiAKIC8qIFBhcmFtZXRlcnMgb2YgdGhlIGxvbmcgaW50ZWdlciByZXByZXNlbnRhdGlvbi4gIFRoZXJlIGFyZSB0d28gZGlmZmVyZW50CiAgICBzZXRzIG9mIHBhcmFtZXRlcnM6IG9uZSBzZXQgZm9yIDMwLWJpdCBkaWdpdHMsIHN0b3JlZCBpbiBhbiB1bnNpZ25lZCAzMi1iaXQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbG9uZ29iamVjdC5oIGIvSW5jbHVkZS9sb25nb2JqZWN0LmgKaW5kZXggYzA5NTY1YS4uZDc0MWYxYiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9sb25nb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9sb25nb2JqZWN0LmgKQEAgLTEyLDcgKzEyLDcgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUxvbmdfVHlwZTsKIAogI2RlZmluZSBQeUxvbmdfQ2hlY2sob3ApIFwKLQkJUHlUeXBlX0Zhc3RTdWJjbGFzcyhQeV9UWVBFKG9wKSwgUHlfVFBGTEFHU19MT05HX1NVQkNMQVNTKQorICAgICAgICBQeVR5cGVfRmFzdFN1YmNsYXNzKFB5X1RZUEUob3ApLCBQeV9UUEZMQUdTX0xPTkdfU1VCQ0xBU1MpCiAjZGVmaW5lIFB5TG9uZ19DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5TG9uZ19UeXBlKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tTG9uZyhsb25nKTsKQEAgLTgwLDYgKzgwLDcgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlMb25nX0Zyb21TdHJpbmcoY2hhciAqLCBjaGFyICoqLCBpbnQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUxvbmdfRnJvbVVuaWNvZGUoUHlfVU5JQ09ERSosIFB5X3NzaXplX3QsIGludCk7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpOwogI2VuZGlmCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKQEAgLTEyMSw4ICsxMjIsOCBAQAogICAgICBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSB0aGUgUHl0aG9uIGxvbmcuCiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zyb21CeXRlQXJyYXkoCi0JY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBuLAotCWludCBsaXR0bGVfZW5kaWFuLCBpbnQgaXNfc2lnbmVkKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCisgICAgaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOwogCiAvKiBfUHlMb25nX0FzQnl0ZUFycmF5OiBDb252ZXJ0IHRoZSBsZWFzdC1zaWduaWZpY2FudCA4Km4gYml0cyBvZiBsb25nCiAgICB2IHRvIGEgYmFzZS0yNTYgaW50ZWdlciwgc3RvcmVkIGluIGFycmF5IGJ5dGVzLiAgTm9ybWFsbHkgcmV0dXJuIDAsCkBAIC0xNDQsMTkgKzE0NSwyOCBAQAogICAgICBjYXNlLCBidXQgYnl0ZXMgaG9sZHMgdGhlIGxlYXN0LXNpZ25maWNhbnQgbiBieXRlcyBvZiB0aGUgdHJ1ZSB2YWx1ZS4KICovCiBQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Bc0J5dGVBcnJheShQeUxvbmdPYmplY3QqIHYsCi0JdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBuLAotCWludCBsaXR0bGVfZW5kaWFuLCBpbnQgaXNfc2lnbmVkKTsKKyAgICB1bnNpZ25lZCBjaGFyKiBieXRlcywgc2l6ZV90IG4sCisgICAgaW50IGxpdHRsZV9lbmRpYW4sIGludCBpc19zaWduZWQpOwogCiAKIC8qIF9QeUxvbmdfRm9ybWF0OiBDb252ZXJ0IHRoZSBsb25nIHRvIGEgc3RyaW5nIG9iamVjdCB3aXRoIGdpdmVuIGJhc2UsCiAgICBhcHBlbmRpbmcgYSBiYXNlIHByZWZpeCBvZiAwW2JveF0gaWYgYmFzZSBpcyAyLCA4IG9yIDE2LiAqLwotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zvcm1hdChQeU9iamVjdCAqYWEsIGludCBiYXNlKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gb3JtYXQoUHlPYmplY3QgKm9iaiwgaW50IGJhc2UpOworCitQeUFQSV9GVU5DKGludCkgX1B5TG9uZ19Gb3JtYXRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgaW50IGJhc2UsCisgICAgaW50IGFsdGVybmF0ZSk7CiAKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotCQkJCQkgICAgICBQeV9VTklDT0RFICpmb3JtYXRfc3BlYywKLQkJCQkJICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pOworUHlBUElfRlVOQyhpbnQpIF9QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXIoCisgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOwogI2VuZGlmIC8qIFB5X0xJTUlURURfQVBJICovCiAKIC8qIFRoZXNlIGFyZW4ndCByZWFsbHkgcGFydCBvZiB0aGUgbG9uZyBvYmplY3QsIGJ1dCB0aGV5J3JlIGhhbmR5LiBUaGUKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmggYi9JbmNsdWRlL21lbW9yeW9iamVjdC5oCmluZGV4IDYyZWNiZDYuLmMyZTExOTQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbWVtb3J5b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tZW1vcnlvYmplY3QuaApAQCAtNiw2OSArNiw2NSBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU1hbmFnZWRCdWZmZXJfVHlwZTsKKyNlbmRpZgogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5TWVtb3J5Vmlld19UeXBlOwogCiAjZGVmaW5lIFB5TWVtb3J5Vmlld19DaGVjayhvcCkgKFB5X1RZUEUob3ApID09ICZQeU1lbW9yeVZpZXdfVHlwZSkKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotLyogR2V0IGEgcG9pbnRlciB0byB0aGUgdW5kZXJseWluZyBQeV9idWZmZXIgb2YgYSBtZW1vcnl2aWV3IG9iamVjdC4gKi8KKy8qIEdldCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeXZpZXcncyBwcml2YXRlIGNvcHkgb2YgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyLiAqLwogI2RlZmluZSBQeU1lbW9yeVZpZXdfR0VUX0JVRkZFUihvcCkgKCYoKFB5TWVtb3J5Vmlld09iamVjdCAqKShvcCkpLT52aWV3KQotLyogR2V0IGEgcG9pbnRlciB0byB0aGUgUHlPYmplY3QgZnJvbSB3aGljaCBvcmlnaW5hdGVzIGEgbWVtb3J5dmlldyBvYmplY3QuICovCisvKiBHZXQgYSBwb2ludGVyIHRvIHRoZSBleHBvcnRpbmcgb2JqZWN0ICh0aGlzIG1heSBiZSBOVUxMISkuICovCiAjZGVmaW5lIFB5TWVtb3J5Vmlld19HRVRfQkFTRShvcCkgKCgoUHlNZW1vcnlWaWV3T2JqZWN0ICopKG9wKSktPnZpZXcub2JqKQogI2VuZGlmCiAKLQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqYmFzZSwgCi0JCQkJCQkgIGludCBidWZmZXJ0eXBlLCAKLQkJCQkJCSAgY2hhciBmb3J0KTsKLQotICAgIC8qIFJldHVybiBhIGNvbnRpZ3VvdXMgY2h1bmsgb2YgbWVtb3J5IHJlcHJlc2VudGluZyB0aGUgYnVmZmVyCi0gICAgICAgZnJvbSBhbiBvYmplY3QgaW4gYSBtZW1vcnkgdmlldyBvYmplY3QuICBJZiBhIGNvcHkgaXMgbWFkZSB0aGVuIHRoZQotICAgICAgIGJhc2Ugb2JqZWN0IGZvciB0aGUgbWVtb3J5IHZpZXcgd2lsbCBiZSBhICpuZXcqIGJ5dGVzIG9iamVjdC4gCi0gICAgICAgCi0gICAgICAgT3RoZXJ3aXNlLCB0aGUgYmFzZS1vYmplY3Qgd2lsbCBiZSB0aGUgb2JqZWN0IGl0c2VsZiBhbmQgbm8gCi0gICAgICAgZGF0YS1jb3B5aW5nIHdpbGwgYmUgZG9uZS4gCi0KLSAgICAgICBUaGUgYnVmZmVydHlwZSBhcmd1bWVudCBjYW4gYmUgUHlCVUZfUkVBRCwgUHlCVUZfV1JJVEUsCi0gICAgICAgUHlCVUZfU0hBRE9XIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSByZXR1cm5lZCBidWZmZXIKLSAgICAgICBzaG91bGQgYmUgUkVBRE9OTFksIFdSSVRBQkxFLCBvciBzZXQgdG8gdXBkYXRlIHRoZQotICAgICAgIG9yaWdpbmFsIGJ1ZmZlciBpZiBhIGNvcHkgbXVzdCBiZSBtYWRlLiAgSWYgYnVmZmVydHlwZSBpcwotICAgICAgIFB5QlVGX1dSSVRFIGFuZCB0aGUgYnVmZmVyIGlzIG5vdCBjb250aWd1b3VzIGFuIGVycm9yIHdpbGwKLSAgICAgICBiZSByYWlzZWQuICBJbiB0aGlzIGNpcmN1bXN0YW5jZSwgdGhlIHVzZXIgY2FuIHVzZQotICAgICAgIFB5QlVGX1NIQURPVyB0byBlbnN1cmUgdGhhdCBhIGEgd3JpdGFibGUgdGVtcG9yYXJ5Ci0gICAgICAgY29udGlndW91cyBidWZmZXIgaXMgcmV0dXJuZWQuICBUaGUgY29udGVudHMgb2YgdGhpcwotICAgICAgIGNvbnRpZ3VvdXMgYnVmZmVyIHdpbGwgYmUgY29waWVkIGJhY2sgaW50byB0aGUgb3JpZ2luYWwKLSAgICAgICBvYmplY3QgYWZ0ZXIgdGhlIG1lbW9yeXZpZXcgb2JqZWN0IGlzIGRlbGV0ZWQgYXMgbG9uZyBhcwotICAgICAgIHRoZSBvcmlnaW5hbCBvYmplY3QgaXMgd3JpdGFibGUgYW5kIGFsbG93cyBzZXR0aW5nIGFuCi0gICAgICAgZXhjbHVzaXZlIHdyaXRlIGxvY2suIElmIHRoaXMgaXMgbm90IGFsbG93ZWQgYnkgdGhlCi0gICAgICAgb3JpZ2luYWwgb2JqZWN0LCB0aGVuIGEgQnVmZmVyRXJyb3IgaXMgcmFpc2VkLgotICAgICAgIAotICAgICAgIElmIHRoZSBvYmplY3QgaXMgbXVsdGktZGltZW5zaW9uYWwgYW5kIGlmIGZvcnRyYW4gaXMgJ0YnLAotICAgICAgIHRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIHVuZGVybHlpbmcgYXJyYXkgd2lsbCB2YXJ5IHRoZQotICAgICAgIGZhc3Rlc3QgaW4gdGhlIGJ1ZmZlci4gIElmIGZvcnRyYW4gaXMgJ0MnLCB0aGVuIHRoZSBsYXN0Ci0gICAgICAgZGltZW5zaW9uIHdpbGwgdmFyeSB0aGUgZmFzdGVzdCAoQy1zdHlsZSBjb250aWd1b3VzKS4gIElmCi0gICAgICAgZm9ydHJhbiBpcyAnQScsIHRoZW4gaXQgZG9lcyBub3QgbWF0dGVyIGFuZCB5b3Ugd2lsbCBnZXQKLSAgICAgICB3aGF0ZXZlciB0aGUgb2JqZWN0IGRlY2lkZXMgaXMgbW9yZSBlZmZpY2llbnQuICAKLQotICAgICAgIEEgbmV3IHJlZmVyZW5jZSBpcyByZXR1cm5lZCB0aGF0IG11c3QgYmUgREVDUkVGJ2Qgd2hlbiBmaW5pc2hlZC4KLSAgICAqLwotCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KFB5T2JqZWN0ICpiYXNlKTsKLQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShjaGFyICptZW0sIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoUHlfYnVmZmVyICppbmZvKTsKLSAgICAvKiBjcmVhdGUgbmV3IGlmIGJ1ZnB0ciBpcyBOVUxMIAotICAgICAgICB3aWxsIGJlIGEgbmV3IGJ5dGVzb2JqZWN0IGluIGJhc2UgKi8KICNlbmRpZgorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1ZmZlcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgb3JkZXIpOwogCiAKLS8qIFRoZSBzdHJ1Y3QgaXMgZGVjbGFyZWQgaGVyZSBzbyB0aGF0IG1hY3JvcyBjYW4gd29yaywgYnV0IGl0IHNob3VsZG4ndAotICAgYmUgY29uc2lkZXJlZCBwdWJsaWMuIERvbid0IGFjY2VzcyB0aG9zZSBmaWVsZHMgZGlyZWN0bHksIHVzZSB0aGUgbWFjcm9zCisvKiBUaGUgc3RydWN0cyBhcmUgZGVjbGFyZWQgaGVyZSBzbyB0aGF0IG1hY3JvcyBjYW4gd29yaywgYnV0IHRoZXkgc2hvdWxkbid0CisgICBiZSBjb25zaWRlcmVkIHB1YmxpYy4gRG9uJ3QgYWNjZXNzIHRoZWlyIGZpZWxkcyBkaXJlY3RseSwgdXNlIHRoZSBtYWNyb3MKICAgIGFuZCBmdW5jdGlvbnMgaW5zdGVhZCEgKi8KICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEICAgIDB4MDAxICAvKiBhY2Nlc3MgdG8gZXhwb3J0ZXIgYmxvY2tlZCAqLworI2RlZmluZSBfUHlfTUFOQUdFRF9CVUZGRVJfRlJFRV9GT1JNQVQgMHgwMDIgIC8qIGZyZWUgZm9ybWF0ICovCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X2J1ZmZlciB2aWV3OworICAgIGludCBmbGFnczsgICAgICAgICAgLyogc3RhdGUgZmxhZ3MgKi8KKyAgICBQeV9zc2l6ZV90IGV4cG9ydHM7IC8qIG51bWJlciBvZiBkaXJlY3QgbWVtb3J5dmlldyBleHBvcnRzICovCisgICAgUHlfYnVmZmVyIG1hc3RlcjsgLyogc25hcHNob3QgYnVmZmVyIG9idGFpbmVkIGZyb20gdGhlIG9yaWdpbmFsIGV4cG9ydGVyICovCit9IF9QeU1hbmFnZWRCdWZmZXJPYmplY3Q7CisKKworLyogc3RhdGljIHN0b3JhZ2UgdXNlZCBmb3IgY2FzdGluZyBiZXR3ZWVuIGZvcm1hdHMgKi8KKyNkZWZpbmUgX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVCAzIC8qIG11c3QgYmUgPj0gMyAqLworCisvKiBtZW1vcnl2aWV3IHN0YXRlIGZsYWdzICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEICAgIDB4MDAxICAvKiBhY2Nlc3MgdG8gbWFzdGVyIGJ1ZmZlciBibG9ja2VkICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX0MgICAgICAgICAgIDB4MDAyICAvKiBDLWNvbnRpZ3VvdXMgbGF5b3V0ICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX0ZPUlRSQU4gICAgIDB4MDA0ICAvKiBGb3J0cmFuIGNvbnRpZ3VvdXMgbGF5b3V0ICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX1NDQUxBUiAgICAgIDB4MDA4ICAvKiBzY2FsYXI6IG5kaW0gPSAwICovCisjZGVmaW5lIF9QeV9NRU1PUllWSUVXX1BJTCAgICAgICAgIDB4MDEwICAvKiBQSUwtc3R5bGUgbGF5b3V0ICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9WQVJfSEVBRAorICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7IC8qIG1hbmFnZWQgYnVmZmVyICovCisgICAgUHlfaGFzaF90IGhhc2g7ICAgICAgICAgICAgICAgLyogaGFzaCB2YWx1ZSBmb3IgcmVhZC1vbmx5IHZpZXdzICovCisgICAgaW50IGZsYWdzOyAgICAgICAgICAgICAgICAgICAgLyogc3RhdGUgZmxhZ3MgKi8KKyAgICBQeV9zc2l6ZV90IGV4cG9ydHM7ICAgICAgICAgICAvKiBudW1iZXIgb2YgYnVmZmVyIHJlLWV4cG9ydHMgKi8KKyAgICBQeV9idWZmZXIgdmlldzsgICAgICAgICAgICAgICAvKiBwcml2YXRlIGNvcHkgb2YgdGhlIGV4cG9ydGVyJ3MgdmlldyAqLworICAgIGNoYXIgZm9ybWF0W19QeV9NRU1PUllWSUVXX01BWF9GT1JNQVRdOyAvKiB1c2VkIGZvciBjYXN0aW5nICovCisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OworICAgIFB5X3NzaXplX3Qgb2JfYXJyYXlbMV07ICAgICAgIC8qIHNoYXBlLCBzdHJpZGVzLCBzdWJvZmZzZXRzICovCiB9IFB5TWVtb3J5Vmlld09iamVjdDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oIGIvSW5jbHVkZS9tZXRob2RvYmplY3QuaAppbmRleCA3ZTY3YzBiLi4zY2MyZWE5IDEwMDY0NAotLS0gYS9JbmNsdWRlL21ldGhvZG9iamVjdC5oCisrKyBiL0luY2x1ZGUvbWV0aG9kb2JqZWN0LmgKQEAgLTE3LDcgKzE3LDcgQEAKIAogdHlwZWRlZiBQeU9iamVjdCAqKCpQeUNGdW5jdGlvbikoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Q0Z1bmN0aW9uV2l0aEtleXdvcmRzKShQeU9iamVjdCAqLCBQeU9iamVjdCAqLAotCQkJCQkgICAgIFB5T2JqZWN0ICopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7CiB0eXBlZGVmIFB5T2JqZWN0ICooKlB5Tm9BcmdzRnVuY3Rpb24pKFB5T2JqZWN0ICopOwogCiBQeUFQSV9GVU5DKFB5Q0Z1bmN0aW9uKSBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbihQeU9iamVjdCAqKTsKQEAgLTMwLDI0ICszMCwyNSBAQAogI2RlZmluZSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYykgXAogICAgICAgICAoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfbWV0aCkKICNkZWZpbmUgUHlDRnVuY3Rpb25fR0VUX1NFTEYoZnVuYykgXAotCSgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9zZWxmKQorICAgICAgICAoKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IG1fbWwgLT4gbWxfZmxhZ3MgJiBNRVRIX1NUQVRJQyA/IFwKKyAgICAgICAgIE5VTEwgOiAoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9zZWxmKQogI2RlZmluZSBQeUNGdW5jdGlvbl9HRVRfRkxBR1MoZnVuYykgXAotCSgoKFB5Q0Z1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gbV9tbCAtPiBtbF9mbGFncykKKyAgICAgICAgKCgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBtX21sIC0+IG1sX2ZsYWdzKQogI2VuZGlmCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5Q0Z1bmN0aW9uX0NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIHN0cnVjdCBQeU1ldGhvZERlZiB7Ci0gICAgY29uc3QgY2hhcgkqbWxfbmFtZTsJLyogVGhlIG5hbWUgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uL21ldGhvZCAqLwotICAgIFB5Q0Z1bmN0aW9uICBtbF9tZXRoOwkvKiBUaGUgQyBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgaXQgKi8KLSAgICBpbnQJCSBtbF9mbGFnczsJLyogQ29tYmluYXRpb24gb2YgTUVUSF94eHggZmxhZ3MsIHdoaWNoIG1vc3RseQotCQkJCSAgIGRlc2NyaWJlIHRoZSBhcmdzIGV4cGVjdGVkIGJ5IHRoZSBDIGZ1bmMgKi8KLSAgICBjb25zdCBjaGFyCSptbF9kb2M7CS8qIFRoZSBfX2RvY19fIGF0dHJpYnV0ZSwgb3IgTlVMTCAqLworICAgIGNvbnN0IGNoYXIgICptbF9uYW1lOyAgIC8qIFRoZSBuYW1lIG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbi9tZXRob2QgKi8KKyAgICBQeUNGdW5jdGlvbiBtbF9tZXRoOyAgICAvKiBUaGUgQyBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgaXQgKi8KKyAgICBpbnQgICAgICAgICBtbF9mbGFnczsgICAvKiBDb21iaW5hdGlvbiBvZiBNRVRIX3h4eCBmbGFncywgd2hpY2ggbW9zdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpYmUgdGhlIGFyZ3MgZXhwZWN0ZWQgYnkgdGhlIEMgZnVuYyAqLworICAgIGNvbnN0IGNoYXIgICptbF9kb2M7ICAgIC8qIFRoZSBfX2RvY19fIGF0dHJpYnV0ZSwgb3IgTlVMTCAqLwogfTsKIHR5cGVkZWYgc3RydWN0IFB5TWV0aG9kRGVmIFB5TWV0aG9kRGVmOwogCiAjZGVmaW5lIFB5Q0Z1bmN0aW9uX05ldyhNTCwgU0VMRikgUHlDRnVuY3Rpb25fTmV3RXgoKE1MKSwgKFNFTEYpLCBOVUxMKQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUNGdW5jdGlvbl9OZXdFeChQeU1ldGhvZERlZiAqLCBQeU9iamVjdCAqLCAKLQkJCQkJIFB5T2JqZWN0ICopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKTsKIAogLyogRmxhZyBwYXNzZWQgdG8gbmV3bWV0aG9kb2JqZWN0ICovCiAvKiAjZGVmaW5lIE1FVEhfT0xEQVJHUyAgMHgwMDAwICAgLS0gdW5zdXBwb3J0ZWQgbm93ICovCkBAIC04MSw2ICs4MiwxMSBAQAogCiBQeUFQSV9GVU5DKGludCkgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdCh2b2lkKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlDRnVuY3Rpb25fRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworUHlBUElfRlVOQyh2b2lkKSBfUHlNZXRob2RfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpOworI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL21vZHN1cHBvcnQuaCBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCmluZGV4IGJmNjQ3OGYuLmVjZjFkY2MgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kc3VwcG9ydC5oCisrKyBiL0luY2x1ZGUvbW9kc3VwcG9ydC5oCkBAIC0yMyw2ICsyMyw4IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoY29uc3QgY2hhciAqLCB2YV9saXN0KTsKICNlbmRpZgogCisvKiBEdWUgdG8gYSBnbGl0Y2ggaW4gMy4yLCB0aGUgX1NpemVUIHZlcnNpb25zIHdlcmVuJ3QgZXhwb3J0ZWQgZnJvbSB0aGUgRExMLiAqLworI2lmICFkZWZpbmVkKFBZX1NTSVpFX1RfQ0xFQU4pIHx8ICFkZWZpbmVkKFB5X0xJTUlURURfQVBJKSB8fCBQeV9MSU1JVEVEX0FQSSswID49IDB4MDMwMzAwMDAKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19QYXJzZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLik7CiBQeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2VUdXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIC4uLikgUHlfRk9STUFUX1BBUlNFVFVQTEUoUHlBcmdfUGFyc2VUdXBsZSwgMiwgMyk7CiBQeUFQSV9GVU5DKGludCkgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCkBAIC0zMSwxMyArMzMsMTQgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeUFyZ19VbnBhY2tUdXBsZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIFB5X3NzaXplX3QsIFB5X3NzaXplX3QsIC4uLik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5X0J1aWxkVmFsdWUoY29uc3QgY2hhciAqLCAuLi4pOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfQnVpbGRWYWx1ZV9TaXplVChjb25zdCBjaGFyICosIC4uLik7CisjZW5kaWYKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlBcmdfTm9LZXl3b3Jkcyhjb25zdCBjaGFyICpmdW5jbmFtZSwgUHlPYmplY3QgKmt3KTsKLSNlbmRpZgogCiBQeUFQSV9GVU5DKGludCkgUHlBcmdfVmFQYXJzZShQeU9iamVjdCAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwogUHlBUElfRlVOQyhpbnQpIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgdmFfbGlzdCk7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlfVmFCdWlsZFZhbHVlKGNvbnN0IGNoYXIgKiwgdmFfbGlzdCk7CiAKIFB5QVBJX0ZVTkMoaW50KSBQeU1vZHVsZV9BZGRPYmplY3QoUHlPYmplY3QgKiwgY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmggYi9JbmNsdWRlL21vZHVsZW9iamVjdC5oCmluZGV4IDdiMmJmMWMuLjgwMTNkZDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvbW9kdWxlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS9tb2R1bGVvYmplY3QuaApAQCAtMTIsMTAgKzEyLDE0IEBACiAjZGVmaW5lIFB5TW9kdWxlX0NoZWNrKG9wKSBQeU9iamVjdF9UeXBlQ2hlY2sob3AsICZQeU1vZHVsZV9UeXBlKQogI2RlZmluZSBQeU1vZHVsZV9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5TW9kdWxlX1R5cGUpCiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfTmV3T2JqZWN0KAorICAgIFB5T2JqZWN0ICpuYW1lCisgICAgKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfTmV3KAogICAgIGNvbnN0IGNoYXIgKm5hbWUgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX0dldERpY3QoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5TW9kdWxlX0dldE5hbWVPYmplY3QoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeU1vZHVsZV9HZXRGaWxlbmFtZShQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoUHlPYmplY3QgKik7CmRpZmYgLS1naXQgYS9JbmNsdWRlL25hbWVzcGFjZW9iamVjdC5oIGIvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDEyZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9uYW1lc3BhY2VvYmplY3QuaApAQCAtMCwwICsxLDE3IEBACisKKy8qIHNpbXBsZSBuYW1lc3BhY2Ugb2JqZWN0IGludGVyZmFjZSAqLworCisjaWZuZGVmIE5BTUVTUEFDRU9CSkVDVF9ICisjZGVmaW5lIE5BTUVTUEFDRU9CSkVDVF9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1B5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBfUHlOYW1lc3BhY2VfVHlwZTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlOYW1lc3BhY2VfTmV3KFB5T2JqZWN0ICprd2RzKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhTkFNRVNQQUNFT0JKRUNUX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvbm9kZS5oIGIvSW5jbHVkZS9ub2RlLmgKaW5kZXggOWY2NzYwYy4uOTljMTNmNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9ub2RlLmgKKysrIGIvSW5jbHVkZS9ub2RlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNkZWZpbmUgUkNISUxEKG4sIGkpCShDSElMRChuLCBOQ0gobikgKyBpKSkKICNkZWZpbmUgVFlQRShuKQkJKChuKS0+bl90eXBlKQogI2RlZmluZSBTVFIobikJCSgobiktPm5fc3RyKQorI2RlZmluZSBMSU5FTk8obikgICAgICAgKChuKS0+bl9saW5lbm8pCiAKIC8qIEFzc2VydCB0aGF0IHRoZSB0eXBlIG9mIGEgbm9kZSBpcyB3aGF0IHdlIGV4cGVjdCAqLwogI2RlZmluZSBSRVEobiwgdHlwZSkgYXNzZXJ0KFRZUEUobikgPT0gKHR5cGUpKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vYmplY3QuaCBiL0luY2x1ZGUvb2JqZWN0LmgKaW5kZXggNjEyMGFiODEzLi4zODdjYWRiIDEwMDY0NAotLS0gYS9JbmNsdWRlL29iamVjdC5oCisrKyBiL0luY2x1ZGUvb2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsMzUgQEAKICNkZWZpbmUgUHlfVFlQRShvYikgICAgICAgICAgICAgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQogI2RlZmluZSBQeV9TSVpFKG9iKSAgICAgICAgICAgICAoKChQeVZhck9iamVjdCopKG9iKSktPm9iX3NpemUpCiAKKy8qKioqKioqKioqKioqKioqKioqKiogU3RyaW5nIExpdGVyYWxzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBUaGlzIHN0cnVjdHVyZSBoZWxwcyBtYW5hZ2luZyBzdGF0aWMgc3RyaW5ncy4gVGhlIGJhc2ljIHVzYWdlIGdvZXMgbGlrZSB0aGlzOgorICAgSW5zdGVhZCBvZiBkb2luZworCisgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgImZvbyIsICJhcmdzIiwgLi4uKTsKKworICAgZG8KKworICAgICAgIF9QeV9JREVOVElGSUVSKGZvbyk7CisgICAgICAgLi4uCisgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobywgJlB5SWRfZm9vLCAiYXJncyIsIC4uLik7CisKKyAgIFB5SWRfZm9vIGlzIGEgc3RhdGljIHZhcmlhYmxlLCBlaXRoZXIgb24gYmxvY2sgbGV2ZWwgb3IgZmlsZSBsZXZlbC4gT24gZmlyc3QKKyAgIHVzYWdlLCB0aGUgc3RyaW5nICJmb28iIGlzIGludGVybmVkLCBhbmQgdGhlIHN0cnVjdHVyZXMgYXJlIGxpbmtlZC4gT24gaW50ZXJwcmV0ZXIKKyAgIHNodXRkb3duLCBhbGwgc3RyaW5ncyBhcmUgcmVsZWFzZWQgKHRocm91Z2ggX1B5VW5pY29kZV9DbGVhclN0YXRpY1N0cmluZ3MpLgorCisgICBBbHRlcm5hdGl2ZWx5LCBfUHlfc3RhdGljX3N0cmluZyBhbGxvd3MgdG8gY2hvb3NlIHRoZSB2YXJpYWJsZSBuYW1lLgorICAgX1B5VW5pY29kZV9Gcm9tSWQgcmV0dXJucyBhIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuZWQgc3RyaW5nLgorICAgX1B5T2JqZWN0X3tHZXQsU2V0LEhhc31BdHRySWQgYXJlIF9fZ2V0YXR0cl9fIHZlcnNpb25zIHVzaW5nIF9QeV9JZGVudGlmaWVyKi4KKyovCit0eXBlZGVmIHN0cnVjdCBfUHlfSWRlbnRpZmllciB7CisgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuZXh0OworICAgIGNvbnN0IGNoYXIqIHN0cmluZzsKKyAgICBQeU9iamVjdCAqb2JqZWN0OworfSBfUHlfSWRlbnRpZmllcjsKKworI2RlZmluZSBfUHlfc3RhdGljX3N0cmluZyh2YXJuYW1lLCB2YWx1ZSkgIHN0YXRpYyBfUHlfSWRlbnRpZmllciB2YXJuYW1lID0geyAwLCB2YWx1ZSwgMCB9CisjZGVmaW5lIF9QeV9JREVOVElGSUVSKHZhcm5hbWUpIF9QeV9zdGF0aWNfc3RyaW5nKFB5SWRfIyN2YXJuYW1lLCAjdmFybmFtZSkKKwogLyoKIFR5cGUgb2JqZWN0cyBjb250YWluIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHR5cGUgbmFtZSAodG8gaGVscCBzb21ld2hhdAogaW4gZGVidWdnaW5nKSwgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycyAoc2VlIFB5T2JqZWN0X05ldygpIGFuZApAQCAtMTU3LDE1ICsxODYsMTYgQEAKICAgICBQeV9zc2l6ZV90ICpzaGFwZTsKICAgICBQeV9zc2l6ZV90ICpzdHJpZGVzOwogICAgIFB5X3NzaXplX3QgKnN1Ym9mZnNldHM7Ci0gICAgUHlfc3NpemVfdCBzbWFsbHRhYmxlWzJdOyAgLyogc3RhdGljIHN0b3JlIGZvciBzaGFwZSBhbmQgc3RyaWRlcyBvZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbm8tZGltZW5zaW9uYWwgYnVmZmVycy4gKi8KICAgICB2b2lkICppbnRlcm5hbDsKIH0gUHlfYnVmZmVyOwogCiB0eXBlZGVmIGludCAoKmdldGJ1ZmZlcnByb2MpKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqLCBpbnQpOwogdHlwZWRlZiB2b2lkICgqcmVsZWFzZWJ1ZmZlcnByb2MpKFB5T2JqZWN0ICosIFB5X2J1ZmZlciAqKTsKIAotICAgIC8qIEZsYWdzIGZvciBnZXR0aW5nIGJ1ZmZlcnMgKi8KKy8qIE1heGltdW0gbnVtYmVyIG9mIGRpbWVuc2lvbnMgKi8KKyNkZWZpbmUgUHlCVUZfTUFYX05ESU0gNjQKKworLyogRmxhZ3MgZm9yIGdldHRpbmcgYnVmZmVycyAqLwogI2RlZmluZSBQeUJVRl9TSU1QTEUgMAogI2RlZmluZSBQeUJVRl9XUklUQUJMRSAweDAwMDEKIC8qICB3ZSB1c2VkIHRvIGluY2x1ZGUgYW4gRSwgYmFja3dhcmRzIGNvbXBhdGlibGUgYWxpYXMgICovCkBAIC00MDMsNiArNDMzLDkgQEAKIH0gUHlUeXBlX1NwZWM7CiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVR5cGVfRnJvbVNwZWMoUHlUeXBlX1NwZWMqKTsKKyNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzKFB5VHlwZV9TcGVjKiwgUHlPYmplY3QqKTsKKyNlbmRpZgogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBUaGUgKnJlYWwqIGxheW91dCBvZiBhIHR5cGUgb2JqZWN0IHdoZW4gYWxsb2NhdGVkIG9uIHRoZSBoZWFwICovCkBAIC00MTgsNyArNDUxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBnaXZlbiBvcGVyYXRvciAoZS5nLiBfX2dldGl0ZW1fXykuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSBhZGRfb3BlcmF0b3JzKCkgaW4gdHlwZW9iamVjdC5jIC4gKi8KICAgICBQeUJ1ZmZlclByb2NzIGFzX2J1ZmZlcjsKLSAgICBQeU9iamVjdCAqaHRfbmFtZSwgKmh0X3Nsb3RzOworICAgIFB5T2JqZWN0ICpodF9uYW1lLCAqaHRfc2xvdHMsICpodF9xdWFsbmFtZTsKKyAgICBzdHJ1Y3QgX2RpY3RrZXlzb2JqZWN0ICpodF9jYWNoZWRfa2V5czsKICAgICAvKiBoZXJlIGFyZSBvcHRpb25hbCB1c2VyIHNsb3RzLCBmb2xsb3dlZCBieSB0aGUgbWVtYmVycy4gKi8KIH0gUHlIZWFwVHlwZU9iamVjdDsKIApAQCAtNDQ4LDEzICs0ODIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVR5cGVfTG9va3VwKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKiwgY2hhciAqLCBQeU9iamVjdCAqKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKFB5T2JqZWN0ICosIF9QeV9JZGVudGlmaWVyICopOwogUHlBUElfRlVOQyhQeVR5cGVPYmplY3QgKikgX1B5VHlwZV9DYWxjdWxhdGVNZXRhY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5T2JqZWN0ICopOwogI2VuZGlmCiBQeUFQSV9GVU5DKHVuc2lnbmVkIGludCkgUHlUeXBlX0NsZWFyQ2FjaGUodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5VHlwZV9Nb2RpZmllZChQeVR5cGVPYmplY3QgKik7CiAKIC8qIEdlbmVyaWMgb3BlcmF0aW9ucyBvbiBvYmplY3RzICovCitzdHJ1Y3QgX1B5X0lkZW50aWZpZXI7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfUHJpbnQoUHlPYmplY3QgKiwgRklMRSAqLCBpbnQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlfQnJlYWtQb2ludCh2b2lkKTsKQEAgLTQ3Miw2ICs1MDcsMTAgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9TZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0hhc0F0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOworUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9TZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5T2JqZWN0X0dldERpY3RQdHIoUHlPYmplY3QgKik7CiAjZW5kaWYKQEAgLTQ4Miw2ICs1MjEsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeU9iamVjdF9HZW5lcmljR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9HZW5lcmljU2V0QXR0cihQeU9iamVjdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOworUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIHZvaWQgKik7CiBQeUFQSV9GVU5DKFB5X2hhc2hfdCkgUHlPYmplY3RfSGFzaChQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgUHlPYmplY3RfSXNUcnVlKFB5T2JqZWN0ICopOwpAQCAtNDk4LDYgKzUzOCwxMSBAQAogX1B5T2JqZWN0X0dlbmVyaWNTZXRBdHRyV2l0aERpY3QoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogCisvKiBIZWxwZXIgdG8gbG9vayB1cCBhIGJ1aWx0aW4gb2JqZWN0ICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopCitfUHlPYmplY3RfR2V0QnVpbHRpbihjb25zdCBjaGFyICpuYW1lKTsKKyNlbmRpZgogCiAvKiBQeU9iamVjdF9EaXIob2JqKSBhY3RzIGxpa2UgUHl0aG9uIGJ1aWx0aW5zLmRpcihvYmopLCByZXR1cm5pbmcgYQogICAgbGlzdCBvZiBzdHJpbmdzLiAgUHlPYmplY3RfRGlyKE5VTEwpIGlzIGxpa2UgYnVpbHRpbnMuZGlyKCksCkBAIC01MTUsNiArNTYwLDcgQEAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfaGFzaF90KSBfUHlfSGFzaERvdWJsZShkb3VibGUpOwogUHlBUElfRlVOQyhQeV9oYXNoX3QpIF9QeV9IYXNoUG9pbnRlcih2b2lkKik7CitQeUFQSV9GVU5DKFB5X2hhc2hfdCkgX1B5X0hhc2hCeXRlcyh1bnNpZ25lZCBjaGFyKiwgUHlfc3NpemVfdCk7CiAjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtODAzLDYgKzg0OSwxMCBAQAogUHlBUElfREFUQShQeU9iamVjdCkgX1B5X05vdEltcGxlbWVudGVkU3RydWN0OyAvKiBEb24ndCB1c2UgdGhpcyBkaXJlY3RseSAqLwogI2RlZmluZSBQeV9Ob3RJbXBsZW1lbnRlZCAoJl9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCkKIAorLyogTWFjcm8gZm9yIHJldHVybmluZyBQeV9Ob3RJbXBsZW1lbnRlZCBmcm9tIGEgZnVuY3Rpb24gKi8KKyNkZWZpbmUgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEIFwKKyAgICByZXR1cm4gUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKSwgUHlfTm90SW1wbGVtZW50ZWQKKwogLyogUmljaCBjb21wYXJpc29uIG9wY29kZXMgKi8KICNkZWZpbmUgUHlfTFQgMAogI2RlZmluZSBQeV9MRSAxCkBAIC05MTIsNyArOTYyLDcgQEAKICovCiAKIC8qIFRoaXMgaXMgdGhlIG9sZCBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlZm9yZSAzLjIuNC4KLSAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMuICovCisgICBLZXB0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eSBvZiBleHRlbnNpb25zIHVzaW5nIHRoZSBzdGFibGUgQUJJLiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF9kZXBvc2l0X29iamVjdChQeU9iamVjdCopOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF9kZXN0cm95X2NoYWluKHZvaWQpOwogUHlBUElfREFUQShpbnQpIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nOwpAQCAtOTM5LDYgKzk4OSwxNCBAQAogICAgICAgICAgICAgX1B5VHJhc2hfdGhyZWFkX2RlcG9zaXRfb2JqZWN0KChQeU9iamVjdCopb3ApOyBcCiAgICAgfSB3aGlsZSAoMCk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkKK19QeURlYnVnQWxsb2NhdG9yU3RhdHMoRklMRSAqb3V0LCBjb25zdCBjaGFyICpibG9ja19uYW1lLCBpbnQgbnVtX2Jsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemVvZl9ibG9jayk7CitQeUFQSV9GVU5DKHZvaWQpCitfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZiAvKiBpZm5kZWYgUHlfTElNSVRFRF9BUEkgKi8KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggOGZjM2ZjMS4uM2Q1ZjUwOSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTEwMSwxMyArMTAxLDE1IEBACiAKIC8qIE1hY3JvcyAqLwogI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCkgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KTsKKyNlbmRpZiAvKiAjaWZuZGVmIFB5X0xJTUlURURfQVBJICovCiAjaWZkZWYgUFlNQUxMT0NfREVCVUcgICAvKiBXSVRIX1BZTUFMTE9DICYmIFBZTUFMTE9DX0RFQlVHICovCiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnTWFsbG9jKHNpemVfdCBuYnl0ZXMpOwogUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z1JlYWxsb2Modm9pZCAqcCwgc2l6ZV90IG5ieXRlcyk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0ZyZWUodm9pZCAqcCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0R1bXBBZGRyZXNzKGNvbnN0IHZvaWQgKnApOwogUHlBUElfRlVOQyh2b2lkKSBfUHlPYmplY3RfRGVidWdDaGVja0FkZHJlc3MoY29uc3Qgdm9pZCAqcCk7Ci1QeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkICopIF9QeU9iamVjdF9EZWJ1Z01hbGxvY0FwaShjaGFyIGFwaSwgc2l6ZV90IG5ieXRlcyk7CiBQeUFQSV9GVU5DKHZvaWQgKikgX1B5T2JqZWN0X0RlYnVnUmVhbGxvY0FwaShjaGFyIGFwaSwgdm9pZCAqcCwgc2l6ZV90IG5ieXRlcyk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EZWJ1Z0ZyZWVBcGkoY2hhciBhcGksIHZvaWQgKnApOwpAQCAtMTc5LDEyICsxODEsOSBAQAogI2VuZGlmCiAKICNkZWZpbmUgX1B5T2JqZWN0X1ZBUl9TSVpFKHR5cGVvYmosIG5pdGVtcykgICAgIFwKLSAgICAoc2l6ZV90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoICggKHR5cGVvYmopLT50cF9iYXNpY3NpemUgKyAgICAgICAgICAgICAgIFwKLSAgICAgICAgKG5pdGVtcykqKHR5cGVvYmopLT50cF9pdGVtc2l6ZSArICAgICAgIFwKLSAgICAgICAgKFNJWkVPRl9WT0lEX1AgLSAxKSAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICkgJiB+KFNJWkVPRl9WT0lEX1AgLSAxKSAgICAgICAgICAgICAgICAgIFwKLSAgICApCisgICAgX1B5X1NJWkVfUk9VTkRfVVAoKHR5cGVvYmopLT50cF9iYXNpY3NpemUgKyBcCisgICAgICAgIChuaXRlbXMpKih0eXBlb2JqKS0+dHBfaXRlbXNpemUsICAgICAgICBcCisgICAgICAgIFNJWkVPRl9WT0lEX1ApCiAKICNkZWZpbmUgUHlPYmplY3RfTkVXKHR5cGUsIHR5cGVvYmopIFwKICggKHR5cGUgKikgUHlPYmplY3RfSW5pdCggXApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vcGNvZGUuaCBiL0luY2x1ZGUvb3Bjb2RlLmgKaW5kZXggNmIxMDk0NC4uYTkwMTg0ZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vcGNvZGUuaAorKysgYi9JbmNsdWRlL29wY29kZS5oCkBAIC03LDExNyArNywxMTcgQEAKIAogLyogSW5zdHJ1Y3Rpb24gb3Bjb2RlcyBmb3IgY29tcGlsZWQgY29kZSAqLwogCi0jZGVmaW5lIFNUT1BfQ09ERQkwCi0jZGVmaW5lIFBPUF9UT1AJCTEKLSNkZWZpbmUgUk9UX1RXTwkJMgotI2RlZmluZSBST1RfVEhSRUUJMwotI2RlZmluZSBEVVBfVE9QCQk0CisjZGVmaW5lIFBPUF9UT1AgICAgICAgICAxCisjZGVmaW5lIFJPVF9UV08gICAgICAgICAyCisjZGVmaW5lIFJPVF9USFJFRSAgICAgICAzCisjZGVmaW5lIERVUF9UT1AgICAgICAgICA0CiAjZGVmaW5lIERVUF9UT1BfVFdPICAgICA1Ci0jZGVmaW5lIE5PUAkJOQorI2RlZmluZSBOT1AgICAgICAgICAgICAgOQogCi0jZGVmaW5lIFVOQVJZX1BPU0lUSVZFCTEwCi0jZGVmaW5lIFVOQVJZX05FR0FUSVZFCTExCi0jZGVmaW5lIFVOQVJZX05PVAkxMgorI2RlZmluZSBVTkFSWV9QT1NJVElWRSAgMTAKKyNkZWZpbmUgVU5BUllfTkVHQVRJVkUgIDExCisjZGVmaW5lIFVOQVJZX05PVCAgICAgICAxMgogCi0jZGVmaW5lIFVOQVJZX0lOVkVSVAkxNQorI2RlZmluZSBVTkFSWV9JTlZFUlQgICAgMTUKIAotI2RlZmluZSBCSU5BUllfUE9XRVIJMTkKKyNkZWZpbmUgQklOQVJZX1BPV0VSICAgIDE5CiAKLSNkZWZpbmUgQklOQVJZX01VTFRJUExZCTIwCisjZGVmaW5lIEJJTkFSWV9NVUxUSVBMWSAyMAogCi0jZGVmaW5lIEJJTkFSWV9NT0RVTE8JMjIKLSNkZWZpbmUgQklOQVJZX0FERAkyMwotI2RlZmluZSBCSU5BUllfU1VCVFJBQ1QJMjQKLSNkZWZpbmUgQklOQVJZX1NVQlNDUgkyNQorI2RlZmluZSBCSU5BUllfTU9EVUxPICAgMjIKKyNkZWZpbmUgQklOQVJZX0FERCAgICAgIDIzCisjZGVmaW5lIEJJTkFSWV9TVUJUUkFDVCAyNAorI2RlZmluZSBCSU5BUllfU1VCU0NSICAgMjUKICNkZWZpbmUgQklOQVJZX0ZMT09SX0RJVklERSAyNgogI2RlZmluZSBCSU5BUllfVFJVRV9ESVZJREUgMjcKICNkZWZpbmUgSU5QTEFDRV9GTE9PUl9ESVZJREUgMjgKICNkZWZpbmUgSU5QTEFDRV9UUlVFX0RJVklERSAyOQogCi0jZGVmaW5lIFNUT1JFX01BUAk1NAotI2RlZmluZSBJTlBMQUNFX0FERAk1NQotI2RlZmluZSBJTlBMQUNFX1NVQlRSQUNUCTU2Ci0jZGVmaW5lIElOUExBQ0VfTVVMVElQTFkJNTcKKyNkZWZpbmUgU1RPUkVfTUFQICAgICAgIDU0CisjZGVmaW5lIElOUExBQ0VfQUREICAgICA1NQorI2RlZmluZSBJTlBMQUNFX1NVQlRSQUNUICAgICAgICA1NgorI2RlZmluZSBJTlBMQUNFX01VTFRJUExZICAgICAgICA1NwogCi0jZGVmaW5lIElOUExBQ0VfTU9EVUxPCTU5Ci0jZGVmaW5lIFNUT1JFX1NVQlNDUgk2MAotI2RlZmluZSBERUxFVEVfU1VCU0NSCTYxCisjZGVmaW5lIElOUExBQ0VfTU9EVUxPICA1OQorI2RlZmluZSBTVE9SRV9TVUJTQ1IgICAgNjAKKyNkZWZpbmUgREVMRVRFX1NVQlNDUiAgIDYxCiAKLSNkZWZpbmUgQklOQVJZX0xTSElGVAk2MgotI2RlZmluZSBCSU5BUllfUlNISUZUCTYzCi0jZGVmaW5lIEJJTkFSWV9BTkQJNjQKLSNkZWZpbmUgQklOQVJZX1hPUgk2NQotI2RlZmluZSBCSU5BUllfT1IJNjYKLSNkZWZpbmUgSU5QTEFDRV9QT1dFUgk2NwotI2RlZmluZSBHRVRfSVRFUgk2OAotI2RlZmluZSBTVE9SRV9MT0NBTFMJNjkKLSNkZWZpbmUgUFJJTlRfRVhQUgk3MAorI2RlZmluZSBCSU5BUllfTFNISUZUICAgNjIKKyNkZWZpbmUgQklOQVJZX1JTSElGVCAgIDYzCisjZGVmaW5lIEJJTkFSWV9BTkQgICAgICA2NAorI2RlZmluZSBCSU5BUllfWE9SICAgICAgNjUKKyNkZWZpbmUgQklOQVJZX09SICAgICAgIDY2CisjZGVmaW5lIElOUExBQ0VfUE9XRVIgICA2NworI2RlZmluZSBHRVRfSVRFUiAgICAgICAgNjgKKyNkZWZpbmUgU1RPUkVfTE9DQUxTICAgIDY5CisjZGVmaW5lIFBSSU5UX0VYUFIgICAgICA3MAogI2RlZmluZSBMT0FEX0JVSUxEX0NMQVNTIDcxCisjZGVmaW5lIFlJRUxEX0ZST00gICAgICA3MgogCi0jZGVmaW5lIElOUExBQ0VfTFNISUZUCTc1Ci0jZGVmaW5lIElOUExBQ0VfUlNISUZUCTc2Ci0jZGVmaW5lIElOUExBQ0VfQU5ECTc3Ci0jZGVmaW5lIElOUExBQ0VfWE9SCTc4Ci0jZGVmaW5lIElOUExBQ0VfT1IJNzkKLSNkZWZpbmUgQlJFQUtfTE9PUAk4MAorI2RlZmluZSBJTlBMQUNFX0xTSElGVCAgNzUKKyNkZWZpbmUgSU5QTEFDRV9SU0hJRlQgIDc2CisjZGVmaW5lIElOUExBQ0VfQU5EICAgICA3NworI2RlZmluZSBJTlBMQUNFX1hPUiAgICAgNzgKKyNkZWZpbmUgSU5QTEFDRV9PUiAgICAgIDc5CisjZGVmaW5lIEJSRUFLX0xPT1AgICAgICA4MAogI2RlZmluZSBXSVRIX0NMRUFOVVAgICAgODEKIAotI2RlZmluZSBSRVRVUk5fVkFMVUUJODMKLSNkZWZpbmUgSU1QT1JUX1NUQVIJODQKKyNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgIDgzCisjZGVmaW5lIElNUE9SVF9TVEFSICAgICA4NAogCi0jZGVmaW5lIFlJRUxEX1ZBTFVFCTg2Ci0jZGVmaW5lIFBPUF9CTE9DSwk4NwotI2RlZmluZSBFTkRfRklOQUxMWQk4OAotI2RlZmluZSBQT1BfRVhDRVBUCTg5CisjZGVmaW5lIFlJRUxEX1ZBTFVFICAgICA4NgorI2RlZmluZSBQT1BfQkxPQ0sgICAgICAgODcKKyNkZWZpbmUgRU5EX0ZJTkFMTFkgICAgIDg4CisjZGVmaW5lIFBPUF9FWENFUFQgICAgICA4OQogCi0jZGVmaW5lIEhBVkVfQVJHVU1FTlQJOTAJLyogT3Bjb2RlcyBmcm9tIGhlcmUgaGF2ZSBhbiBhcmd1bWVudDogKi8KKyNkZWZpbmUgSEFWRV9BUkdVTUVOVCAgIDkwICAgICAgLyogT3Bjb2RlcyBmcm9tIGhlcmUgaGF2ZSBhbiBhcmd1bWVudDogKi8KIAotI2RlZmluZSBTVE9SRV9OQU1FCTkwCS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBERUxFVEVfTkFNRQk5MQkvKiAiIiAqLwotI2RlZmluZSBVTlBBQ0tfU0VRVUVOQ0UJOTIJLyogTnVtYmVyIG9mIHNlcXVlbmNlIGl0ZW1zICovCi0jZGVmaW5lIEZPUl9JVEVSCTkzCisjZGVmaW5lIFNUT1JFX05BTUUgICAgICA5MCAgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBERUxFVEVfTkFNRSAgICAgOTEgICAgICAvKiAiIiAqLworI2RlZmluZSBVTlBBQ0tfU0VRVUVOQ0UgOTIgICAgICAvKiBOdW1iZXIgb2Ygc2VxdWVuY2UgaXRlbXMgKi8KKyNkZWZpbmUgRk9SX0lURVIgICAgICAgIDkzCiAjZGVmaW5lIFVOUEFDS19FWCAgICAgICA5NCAgICAgIC8qIE51bSBpdGVtcyBiZWZvcmUgdmFyaWFibGUgcGFydCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOdW0gaXRlbXMgYWZ0ZXIgdmFyaWFibGUgcGFydCA8PCA4KSAqLwogCi0jZGVmaW5lIFNUT1JFX0FUVFIJOTUJLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCi0jZGVmaW5lIERFTEVURV9BVFRSCTk2CS8qICIiICovCi0jZGVmaW5lIFNUT1JFX0dMT0JBTAk5NwkvKiAiIiAqLwotI2RlZmluZSBERUxFVEVfR0xPQkFMCTk4CS8qICIiICovCisjZGVmaW5lIFNUT1JFX0FUVFIgICAgICA5NSAgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBERUxFVEVfQVRUUiAgICAgOTYgICAgICAvKiAiIiAqLworI2RlZmluZSBTVE9SRV9HTE9CQUwgICAgOTcgICAgICAvKiAiIiAqLworI2RlZmluZSBERUxFVEVfR0xPQkFMICAgOTggICAgICAvKiAiIiAqLwogCi0jZGVmaW5lIExPQURfQ09OU1QJMTAwCS8qIEluZGV4IGluIGNvbnN0IGxpc3QgKi8KLSNkZWZpbmUgTE9BRF9OQU1FCTEwMQkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgQlVJTERfVFVQTEUJMTAyCS8qIE51bWJlciBvZiB0dXBsZSBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9MSVNUCTEwMwkvKiBOdW1iZXIgb2YgbGlzdCBpdGVtcyAqLwotI2RlZmluZSBCVUlMRF9TRVQJMTA0ICAgICAvKiBOdW1iZXIgb2Ygc2V0IGl0ZW1zICovCi0jZGVmaW5lIEJVSUxEX01BUAkxMDUJLyogQWx3YXlzIHplcm8gZm9yIG5vdyAqLwotI2RlZmluZSBMT0FEX0FUVFIJMTA2CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLwotI2RlZmluZSBDT01QQVJFX09QCTEwNwkvKiBDb21wYXJpc29uIG9wZXJhdG9yICovCi0jZGVmaW5lIElNUE9SVF9OQU1FCTEwOAkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KLSNkZWZpbmUgSU1QT1JUX0ZST00JMTA5CS8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBMT0FEX0NPTlNUICAgICAgMTAwICAgICAvKiBJbmRleCBpbiBjb25zdCBsaXN0ICovCisjZGVmaW5lIExPQURfTkFNRSAgICAgICAxMDEgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBCVUlMRF9UVVBMRSAgICAgMTAyICAgICAvKiBOdW1iZXIgb2YgdHVwbGUgaXRlbXMgKi8KKyNkZWZpbmUgQlVJTERfTElTVCAgICAgIDEwMyAgICAgLyogTnVtYmVyIG9mIGxpc3QgaXRlbXMgKi8KKyNkZWZpbmUgQlVJTERfU0VUICAgICAgIDEwNCAgICAgLyogTnVtYmVyIG9mIHNldCBpdGVtcyAqLworI2RlZmluZSBCVUlMRF9NQVAgICAgICAgMTA1ICAgICAvKiBBbHdheXMgemVybyBmb3Igbm93ICovCisjZGVmaW5lIExPQURfQVRUUiAgICAgICAxMDYgICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBDT01QQVJFX09QICAgICAgMTA3ICAgICAvKiBDb21wYXJpc29uIG9wZXJhdG9yICovCisjZGVmaW5lIElNUE9SVF9OQU1FICAgICAxMDggICAgIC8qIEluZGV4IGluIG5hbWUgbGlzdCAqLworI2RlZmluZSBJTVBPUlRfRlJPTSAgICAgMTA5ICAgICAvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KIAotI2RlZmluZSBKVU1QX0ZPUldBUkQJMTEwCS8qIE51bWJlciBvZiBieXRlcyB0byBza2lwICovCi0jZGVmaW5lIEpVTVBfSUZfRkFMU0VfT1JfUE9QIDExMQkvKiBUYXJnZXQgYnl0ZSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgY29kZSAqLwotI2RlZmluZSBKVU1QX0lGX1RSVUVfT1JfUE9QIDExMgkvKiAiIiAqLwotI2RlZmluZSBKVU1QX0FCU09MVVRFCTExMwkvKiAiIiAqLwotI2RlZmluZSBQT1BfSlVNUF9JRl9GQUxTRSAxMTQJLyogIiIgKi8KLSNkZWZpbmUgUE9QX0pVTVBfSUZfVFJVRSAxMTUJLyogIiIgKi8KKyNkZWZpbmUgSlVNUF9GT1JXQVJEICAgIDExMCAgICAgLyogTnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgKi8KKyNkZWZpbmUgSlVNUF9JRl9GQUxTRV9PUl9QT1AgMTExICAgICAgICAvKiBUYXJnZXQgYnl0ZSBvZmZzZXQgZnJvbSBiZWdpbm5pbmcgb2YgY29kZSAqLworI2RlZmluZSBKVU1QX0lGX1RSVUVfT1JfUE9QIDExMiAvKiAiIiAqLworI2RlZmluZSBKVU1QX0FCU09MVVRFICAgMTEzICAgICAvKiAiIiAqLworI2RlZmluZSBQT1BfSlVNUF9JRl9GQUxTRSAxMTQgICAvKiAiIiAqLworI2RlZmluZSBQT1BfSlVNUF9JRl9UUlVFIDExNSAgICAvKiAiIiAqLwogCi0jZGVmaW5lIExPQURfR0xPQkFMCTExNgkvKiBJbmRleCBpbiBuYW1lIGxpc3QgKi8KKyNkZWZpbmUgTE9BRF9HTE9CQUwgICAgIDExNiAgICAgLyogSW5kZXggaW4gbmFtZSBsaXN0ICovCiAKLSNkZWZpbmUgQ09OVElOVUVfTE9PUAkxMTkJLyogU3RhcnQgb2YgbG9vcCAoYWJzb2x1dGUpICovCi0jZGVmaW5lIFNFVFVQX0xPT1AJMTIwCS8qIFRhcmdldCBhZGRyZXNzIChyZWxhdGl2ZSkgKi8KLSNkZWZpbmUgU0VUVVBfRVhDRVBUCTEyMQkvKiAiIiAqLwotI2RlZmluZSBTRVRVUF9GSU5BTExZCTEyMgkvKiAiIiAqLworI2RlZmluZSBDT05USU5VRV9MT09QICAgMTE5ICAgICAvKiBTdGFydCBvZiBsb29wIChhYnNvbHV0ZSkgKi8KKyNkZWZpbmUgU0VUVVBfTE9PUCAgICAgIDEyMCAgICAgLyogVGFyZ2V0IGFkZHJlc3MgKHJlbGF0aXZlKSAqLworI2RlZmluZSBTRVRVUF9FWENFUFQgICAgMTIxICAgICAvKiAiIiAqLworI2RlZmluZSBTRVRVUF9GSU5BTExZICAgMTIyICAgICAvKiAiIiAqLwogCi0jZGVmaW5lIExPQURfRkFTVAkxMjQJLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCi0jZGVmaW5lIFNUT1JFX0ZBU1QJMTI1CS8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLwotI2RlZmluZSBERUxFVEVfRkFTVAkxMjYJLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCisjZGVmaW5lIExPQURfRkFTVCAgICAgICAxMjQgICAgIC8qIExvY2FsIHZhcmlhYmxlIG51bWJlciAqLworI2RlZmluZSBTVE9SRV9GQVNUICAgICAgMTI1ICAgICAvKiBMb2NhbCB2YXJpYWJsZSBudW1iZXIgKi8KKyNkZWZpbmUgREVMRVRFX0ZBU1QgICAgIDEyNiAgICAgLyogTG9jYWwgdmFyaWFibGUgbnVtYmVyICovCiAKLSNkZWZpbmUgUkFJU0VfVkFSQVJHUwkxMzAJLyogTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiBvciAzKSAqLworI2RlZmluZSBSQUlTRV9WQVJBUkdTICAgMTMwICAgICAvKiBOdW1iZXIgb2YgcmFpc2UgYXJndW1lbnRzICgxLCAyIG9yIDMpICovCiAvKiBDQUxMX0ZVTkNUSU9OX1hYWCBvcGNvZGVzIGRlZmluZWQgYmVsb3cgZGVwZW5kIG9uIHRoaXMgZGVmaW5pdGlvbiAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OCTEzMQkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBNQUtFX0ZVTkNUSU9OCTEzMgkvKiAjZGVmYXVsdHMgKyAja3dkZWZhdWx0czw8OCArICNhbm5vdGF0aW9uczw8MTYgKi8KLSNkZWZpbmUgQlVJTERfU0xJQ0UgCTEzMwkvKiBOdW1iZXIgb2YgaXRlbXMgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTiAgIDEzMSAgICAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgTUFLRV9GVU5DVElPTiAgIDEzMiAgICAgLyogI2RlZmF1bHRzICsgI2t3ZGVmYXVsdHM8PDggKyAjYW5ub3RhdGlvbnM8PDE2ICovCisjZGVmaW5lIEJVSUxEX1NMSUNFICAgICAxMzMgICAgIC8qIE51bWJlciBvZiBpdGVtcyAqLwogCiAjZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAxMzQgICAgIC8qIHNhbWUgYXMgTUFLRV9GVU5DVElPTiAqLwogI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgMTM1ICAgICAvKiBMb2FkIGZyZWUgdmFyaWFibGUgZnJvbSBjbG9zdXJlICovCkBAIC0xMjcsOSArMTI3LDkgQEAKIAogLyogVGhlIG5leHQgMyBvcGNvZGVzIG11c3QgYmUgY29udGlndW91cyBhbmQgc2F0aXNmeQogICAgKENBTExfRlVOQ1RJT05fVkFSIC0gQ0FMTF9GVU5DVElPTikgJiAzID09IDEgICovCi0jZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgICAgIDE0MAkvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLwotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX0tXICAgICAgICAgICAxNDEJLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVJfS1cgICAgICAgMTQyCS8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCisjZGVmaW5lIENBTExfRlVOQ1RJT05fVkFSICAgICAgICAgIDE0MCAgLyogI2FyZ3MgKyAoI2t3YXJnczw8OCkgKi8KKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9LVyAgICAgICAgICAgMTQxICAvKiAjYXJncyArICgja3dhcmdzPDw4KSAqLworI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAgICAxNDIgIC8qICNhcmdzICsgKCNrd2FyZ3M8PDgpICovCiAKICNkZWZpbmUgU0VUVVBfV0lUSCAxNDMKIApAQCAtMTQ5LDcgKzE0OSw3IEBACiAKIAogZW51bSBjbXBfb3Age1B5Q21wX0xUPVB5X0xULCBQeUNtcF9MRT1QeV9MRSwgUHlDbXBfRVE9UHlfRVEsIFB5Q21wX05FPVB5X05FLCBQeUNtcF9HVD1QeV9HVCwgUHlDbXBfR0U9UHlfR0UsCi0JICAgICBQeUNtcF9JTiwgUHlDbXBfTk9UX0lOLCBQeUNtcF9JUywgUHlDbXBfSVNfTk9ULCBQeUNtcF9FWENfTUFUQ0gsIFB5Q21wX0JBRH07CisgICAgICAgICAgICAgUHlDbXBfSU4sIFB5Q21wX05PVF9JTiwgUHlDbXBfSVMsIFB5Q21wX0lTX05PVCwgUHlDbXBfRVhDX01BVENILCBQeUNtcF9CQUR9OwogCiAjZGVmaW5lIEhBU19BUkcob3ApICgob3ApID49IEhBVkVfQVJHVU1FTlQpCiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGFyc2V0b2suaCBiL0luY2x1ZGUvcGFyc2V0b2suaAppbmRleCA0Yjc2OTRmLi45MTFkZmMxIDEwMDY0NAotLS0gYS9JbmNsdWRlL3BhcnNldG9rLmgKKysrIGIvSW5jbHVkZS9wYXJzZXRvay5oCkBAIC05LDcgKzksMTAgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGludCBlcnJvcjsKLSAgICBjb25zdCBjaGFyICpmaWxlbmFtZTsgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCisjaWZuZGVmIFBHRU4KKyAgICAvKiBUaGUgZmlsZW5hbWUgaXMgdXNlbGVzcyBmb3IgcGdlbiwgc2VlIGNvbW1lbnQgaW4gdG9rX3N0YXRlIHN0cnVjdHVyZSAqLworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKyNlbmRpZgogICAgIGludCBsaW5lbm87CiAgICAgaW50IG9mZnNldDsKICAgICBjaGFyICp0ZXh0OyAgICAgICAgICAgICAgICAgLyogVVRGLTgtZW5jb2RlZCBzdHJpbmcgKi8KQEAgLTY2LDggKzY5LDEwIEBACiAgICAgcGVycmRldGFpbCAqZXJyX3JldCwKICAgICBpbnQgKmZsYWdzKTsKIAotLyogTm90ZSB0aGF0IGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIHB5dGhvbnJ1bi5jIG5vdCBwYXJzZXRvay5jLiAqLworLyogTm90ZSB0aGF0IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGluIHB5dGhvbnJ1bi5jLAorICAgbm90IGluIHBhcnNldG9rLmMgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlQYXJzZXJfU2V0RXJyb3IocGVycmRldGFpbCAqKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlQYXJzZXJfQ2xlYXJFcnJvcihwZXJyZGV0YWlsICopOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggMDgzOTA3MS4uYjU5MTlhNCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTE3LDE5ICsxNywxNSBAQAogLyogVmVyc2lvbiBwYXJzZWQgb3V0IGludG8gbnVtZXJpYyB2YWx1ZXMgKi8KIC8qLS1zdGFydCBjb25zdGFudHMtLSovCiAjZGVmaW5lIFBZX01BSk9SX1ZFUlNJT04JMwotI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTIKLSNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkzCisjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JMworI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTAKICNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCiAjZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKIAogLyogVmVyc2lvbiBhcyBhIHN0cmluZyAqLwotI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjIuMysiCisjZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuMy4wKyIKIC8qLS1lbmQgY29uc3RhbnRzLS0qLwogCi0vKiBTdWJ2ZXJzaW9uIFJldmlzaW9uIG51bWJlciBvZiB0aGlzIGZpbGUgKG5vdCBvZiB0aGUgcmVwb3NpdG9yeSkuIEVtcHR5Ci0gICBzaW5jZSBNZXJjdXJpYWwgbWlncmF0aW9uLiAqLwotI2RlZmluZSBQWV9QQVRDSExFVkVMX1JFVklTSU9OICAiIgotCiAvKiBWZXJzaW9uIGFzIGEgc2luZ2xlIDQtYnl0ZSBoZXggbnVtYmVyLCBlLmcuIDB4MDEwNTAyQjIgPT0gMS41LjJiMi4KICAgIFVzZSB0aGlzIGZvciBudW1lcmljIGNvbXBhcmlzb25zLCBlLmcuICNpZiBQWV9WRVJTSU9OX0hFWCA+PSAuLi4gKi8KICNkZWZpbmUgUFlfVkVSU0lPTl9IRVggKChQWV9NQUpPUl9WRVJTSU9OIDw8IDI0KSB8IFwKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGE4OTFjNDIuLmYyYzA4ZjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtNzYsNiArNzYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogCVB5T2JqZWN0X0hFQUQKIAlXSU5ET1cgKndpbjsKKwljaGFyICplbmNvZGluZzsKIH0gUHlDdXJzZXNXaW5kb3dPYmplY3Q7CiAKICNkZWZpbmUgUHlDdXJzZXNXaW5kb3dfQ2hlY2sodikJIChQeV9UWVBFKHYpID09ICZQeUN1cnNlc1dpbmRvd19UeXBlKQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWRlYnVnLmggYi9JbmNsdWRlL3B5ZGVidWcuaAppbmRleCBlMjNjYmRjLi45N2MyZjhjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZGVidWcuaAorKysgYi9JbmNsdWRlL3B5ZGVidWcuaApAQCAtMTYsNyArMTYsNiBAQAogUHlBUElfREFUQShpbnQpIFB5X1VzZUNsYXNzRXhjZXB0aW9uc0ZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfRnJvemVuRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWc7Ci1QeUFQSV9EQVRBKGludCkgUHlfRGl2aXNpb25XYXJuaW5nRmxhZzsKIFB5QVBJX0RBVEEoaW50KSBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWc7CiBQeUFQSV9EQVRBKGludCkgUHlfTm9Vc2VyU2l0ZURpcmVjdG9yeTsKIFB5QVBJX0RBVEEoaW50KSBQeV9VbmJ1ZmZlcmVkU3RkaW9GbGFnOwpAQCAtMjcsOCArMjYsNiBAQAogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwogI2RlZmluZSBQeV9HRVRFTlYocykgKFB5X0lnbm9yZUVudmlyb25tZW50RmxhZyA/IE5VTEwgOiBnZXRlbnYocykpCiAKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCA0YmIzYzAxLi5hZjM3NDEwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xMCw3ICsxMCw4IEBACiAvKiBQeUV4Y2VwdGlvbl9IRUFEIGRlZmluZXMgdGhlIGluaXRpYWwgc2VnbWVudCBvZiBldmVyeSBleGNlcHRpb24gY2xhc3MuICovCiAjZGVmaW5lIFB5RXhjZXB0aW9uX0hFQUQgUHlPYmplY3RfSEVBRCBQeU9iamVjdCAqZGljdDtcCiAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3M7IFB5T2JqZWN0ICp0cmFjZWJhY2s7XAotICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0OyBQeU9iamVjdCAqY2F1c2U7CisgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQ7IFB5T2JqZWN0ICpjYXVzZTtcCisgICAgICAgICAgICAgY2hhciBzdXBwcmVzc19jb250ZXh0OwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlFeGNlcHRpb25fSEVBRApAQCAtMjgsNiArMjksMTMgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKKyAgICBQeU9iamVjdCAqbXNnOworICAgIFB5T2JqZWN0ICpuYW1lOworICAgIFB5T2JqZWN0ICpwYXRoOworfSBQeUltcG9ydEVycm9yT2JqZWN0OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlFeGNlcHRpb25fSEVBRAogICAgIFB5T2JqZWN0ICplbmNvZGluZzsKICAgICBQeU9iamVjdCAqb2JqZWN0OwogICAgIFB5X3NzaXplX3Qgc3RhcnQ7CkBAIC00NSwxOCArNTMsMjMgQEAKICAgICBQeU9iamVjdCAqbXllcnJubzsKICAgICBQeU9iamVjdCAqc3RyZXJyb3I7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwotfSBQeUVudmlyb25tZW50RXJyb3JPYmplY3Q7Ci0KICNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKndpbmVycm9yOworI2VuZGlmCisgICAgUHlfc3NpemVfdCB3cml0dGVuOyAgIC8qIG9ubHkgZm9yIEJsb2NraW5nSU9FcnJvciwgLTEgb3RoZXJ3aXNlICovCit9IFB5T1NFcnJvck9iamVjdDsKKwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5RXhjZXB0aW9uX0hFQUQKLSAgICBQeU9iamVjdCAqbXllcnJubzsKLSAgICBQeU9iamVjdCAqc3RyZXJyb3I7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIFB5T2JqZWN0ICp3aW5lcnJvcjsKLX0gUHlXaW5kb3dzRXJyb3JPYmplY3Q7CisgICAgUHlPYmplY3QgKnZhbHVlOworfSBQeVN0b3BJdGVyYXRpb25PYmplY3Q7CisKKy8qIENvbXBhdGliaWxpdHkgdHlwZWRlZnMgKi8KK3R5cGVkZWYgUHlPU0Vycm9yT2JqZWN0IFB5RW52aXJvbm1lbnRFcnJvck9iamVjdDsKKyNpZmRlZiBNU19XSU5ET1dTCit0eXBlZGVmIFB5T1NFcnJvck9iamVjdCBQeVdpbmRvd3NFcnJvck9iamVjdDsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qIEVycm9yIGhhbmRsaW5nIGRlZmluaXRpb25zICovCiAKQEAgLTcwLDcgKzgzLDE5IEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5RXJyX0NsZWFyKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUVycl9GZXRjaChQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfUmVzdG9yZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKLVB5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKiwgUHlPYmplY3QgKiosIFB5T2JqZWN0ICoqKTsKK1B5QVBJX0ZVTkModm9pZCkgUHlFcnJfU2V0RXhjSW5mbyhQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCBcCisgICAgKGRlZmluZWQoX19HTlVDX01BSk9SX18pICYmIFwKKyAgICAgKChfX0dOVUNfTUFKT1JfXyA+PSAzKSB8fCBcCisgICAgICAoX19HTlVDX01BSk9SX18gPT0gMikgJiYgKF9fR05VQ19NSU5PUl9fID49IDUpKSkKKyNkZWZpbmUgX1B5X05PX1JFVFVSTiBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQorI2Vsc2UKKyNkZWZpbmUgX1B5X05PX1JFVFVSTgorI2VuZGlmCisKK1B5QVBJX0ZVTkModm9pZCkgUHlfRmF0YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKSBfUHlfTk9fUkVUVVJOOwogCiAjaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKICNkZWZpbmUgX1B5RXJyX09DQ1VSUkVEKCkgUHlFcnJfT2NjdXJyZWQoKQpAQCAtMTIyLDEwICsxNDcsOSBAQAogCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Fzc2VydGlvbkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19BdHRyaWJ1dGVFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnVmZmVyRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0VPRkVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I7Ci1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Vudmlyb25tZW50RXJyb3I7Ci1QeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0lPRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX09TRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0ltcG9ydEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbmRleEVycm9yOwpAQCAtMTUwLDYgKzE3NCwyNyBAQAogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1ZhbHVlRXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yOworCitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0Jsb2NraW5nSU9FcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnJva2VuUGlwZUVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19DaGlsZFByb2Nlc3NFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQ29ubmVjdGlvbkVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uQWJvcnRlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uUmVmdXNlZEVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Db25uZWN0aW9uUmVzZXRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmlsZUV4aXN0c0Vycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19GaWxlTm90Rm91bmRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSXNBRGlyZWN0b3J5RXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX05vdEFEaXJlY3RvcnlFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUGVybWlzc2lvbkVycm9yOworUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19Qcm9jZXNzTG9va3VwRXJyb3I7CitQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1RpbWVvdXRFcnJvcjsKKworCisvKiBDb21wYXRpYmlsaXR5IGFsaWFzZXMgKi8KK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRW52aXJvbm1lbnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSU9FcnJvcjsKICNpZmRlZiBNU19XSU5ET1dTCiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1dpbmRvd3NFcnJvcjsKICNlbmRpZgpAQCAtMTU3LDggKzIwMiw2IEBACiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX1ZNU0Vycm9yOwogI2VuZGlmCiAKLVB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfQnVmZmVyRXJyb3I7Ci0KIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0OwogCiAvKiBQcmVkZWZpbmVkIHdhcm5pbmcgY2F0ZWdvcmllcyAqLwpAQCAtMTk4LDggKzI0MSw2IEBACiAgICAgKTsKIAogI2lmZGVmIE1TX1dJTkRPV1MKLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoCi0gICAgaW50LCBjb25zdCBjaGFyICopOwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgKICAgICBpbnQgaWVyciwKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSAgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCkBAIC0yMjQsNiArMjY1LDExIEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5T2JqZWN0ICosIGludCk7CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEV4Y1dpdGhBcmdzS3dhcmdzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKik7CitQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKik7CisKIC8qIEV4cG9ydCB0aGUgb2xkIGZ1bmN0aW9uIHNvIHRoYXQgdGhlIGV4aXN0aW5nIEFQSSByZW1haW5zIGF2YWlsYWJsZTogKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKTsKQEAgLTI5Myw2ICszMzksMTIgQEAKICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgIFB5T2JqZWN0ICpvYmplY3QsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIGdldCB0aGUgZW5jb2RpbmcgYXR0cmlidXRlICovCkBAIC0zNDgsNyArNDAwLDYgQEAKICAgICBjb25zdCBjaGFyICpyZWFzb24gICAgICAgICAgLyogVVRGLTggZW5jb2RlZCBzdHJpbmcgKi8KICAgICApOwogCi0KIC8qIFRoZXNlIEFQSXMgYXJlbid0IHJlYWxseSBwYXJ0IG9mIHRoZSBlcnJvciBpbXBsZW1lbnRhdGlvbiwgYnV0CiAgICBvZnRlbiBuZWVkZWQgdG8gZm9ybWF0IGVycm9yIG1lc3NhZ2VzOyB0aGUgbmF0aXZlIEMgbGliIEFQSXMgYXJlCiAgICBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMsIHdoaWNoIGlzIHdoeSB3ZSBwcm92aWRlIGVtdWxhdGlvbnMKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlleHBhdC5oIGIvSW5jbHVkZS9weWV4cGF0LmgKaW5kZXggNTM0MGVmNS4uMTY4YjViMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWV4cGF0LmgKKysrIGIvSW5jbHVkZS9weWV4cGF0LmgKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgWE1MX1BhcnNlciBwYXJzZXIsIFhNTF9Vbmtub3duRW5jb2RpbmdIYW5kbGVyIGhhbmRsZXIsCiAgICAgICAgIHZvaWQgKmVuY29kaW5nSGFuZGxlckRhdGEpOwogICAgIHZvaWQgKCpTZXRVc2VyRGF0YSkoWE1MX1BhcnNlciBwYXJzZXIsIHZvaWQgKnVzZXJEYXRhKTsKKyAgICB2b2lkICgqU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpKFhNTF9QYXJzZXIgcGFyc2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX1N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyIHN0YXJ0KTsKICAgICAvKiBhbHdheXMgYWRkIG5ldyBzdHVmZiB0byB0aGUgZW5kISAqLwogfTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1hY3JvLmggYi9JbmNsdWRlL3B5bWFjcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmU4ZWUzCi0tLSAvZGV2L251bGwKKysrIGIvSW5jbHVkZS9weW1hY3JvLmgKQEAgLTAsMCArMSw2OSBAQAorI2lmbmRlZiBQeV9QWU1BQ1JPX0gKKyNkZWZpbmUgUHlfUFlNQUNST19ICisKKyNkZWZpbmUgUHlfTUlOKHgsIHkpICgoKHgpID4gKHkpKSA/ICh5KSA6ICh4KSkKKyNkZWZpbmUgUHlfTUFYKHgsIHkpICgoKHgpID4gKHkpKSA/ICh4KSA6ICh5KSkKKworLyogQXJndW1lbnQgbXVzdCBiZSBhIGNoYXIgb3IgYW4gaW50IGluIFstMTI4LCAxMjddIG9yIFswLCAyNTVdLiAqLworI2RlZmluZSBQeV9DSEFSTUFTSyhjKSAoKHVuc2lnbmVkIGNoYXIpKChjKSAmIDB4ZmYpKQorCisKKy8qIEFzc2VydCBhIGJ1aWxkLXRpbWUgZGVwZW5kZW5jeSwgYXMgYW4gZXhwcmVzc2lvbi4KKworICAgWW91ciBjb21waWxlIHdpbGwgZmFpbCBpZiB0aGUgY29uZGl0aW9uIGlzbid0IHRydWUsIG9yIGNhbid0IGJlIGV2YWx1YXRlZAorICAgYnkgdGhlIGNvbXBpbGVyLiBUaGlzIGNhbiBiZSB1c2VkIGluIGFuIGV4cHJlc3Npb246IGl0cyB2YWx1ZSBpcyAwLgorCisgICBFeGFtcGxlOgorCisgICAjZGVmaW5lIGZvb190b19jaGFyKGZvbykgIFwKKyAgICAgICAoKGNoYXIgKikoZm9vKSAgICAgICAgXAorICAgICAgICArIFB5X0JVSUxEX0FTU0VSVF9FWFBSKG9mZnNldG9mKHN0cnVjdCBmb28sIHN0cmluZykgPT0gMCkpCisKKyAgIFdyaXR0ZW4gYnkgUnVzdHkgUnVzc2VsbCwgcHVibGljIGRvbWFpbiwgaHR0cDovL2Njb2RlYXJjaGl2ZS5uZXQvICovCisjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpIFwKKyAgICAoc2l6ZW9mKGNoYXIgWzEgLSAyKiEoY29uZCldKSAtIDEpCisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGEgdmlzaWJsZSBhcnJheQorCisgICBUaGlzIGRvZXMgbm90IHdvcmsgb24gcG9pbnRlcnMsIG9yIGFycmF5cyBkZWNsYXJlZCBhcyBbXSwgb3IgZnVuY3Rpb24KKyAgIHBhcmFtZXRlcnMuIFdpdGggY29ycmVjdCBjb21waWxlciBzdXBwb3J0LCBzdWNoIHVzYWdlIHdpbGwgY2F1c2UgYSBidWlsZAorICAgZXJyb3IgKHNlZSBQeV9CVUlMRF9BU1NFUlRfRVhQUikuCisKKyAgIFdyaXR0ZW4gYnkgUnVzdHkgUnVzc2VsbCwgcHVibGljIGRvbWFpbiwgaHR0cDovL2Njb2RlYXJjaGl2ZS5uZXQvICovCisjaWYgKGRlZmluZWQoX19HTlVDX18pICYmICFkZWZpbmVkKF9fU1RSSUNUX0FOU0lfXykpCisvKiBUd28gZ2NjIGV4dGVuc2lvbnMuCisgICAmYVswXSBkZWdyYWRlcyB0byBhIHBvaW50ZXI6IGEgZGlmZmVyZW50IHR5cGUgZnJvbSBhbiBhcnJheSAqLworI2RlZmluZSBQeV9BUlJBWV9MRU5HVEgoYXJyYXkpIFwKKyAgICAoc2l6ZW9mKGFycmF5KSAvIHNpemVvZigoYXJyYXkpWzBdKSBcCisgICAgICsgUHlfQlVJTERfQVNTRVJUX0VYUFIoIV9fYnVpbHRpbl90eXBlc19jb21wYXRpYmxlX3AodHlwZW9mKGFycmF5KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZigmKGFycmF5KVswXSkpKSkKKyNlbHNlCisjZGVmaW5lIFB5X0FSUkFZX0xFTkdUSChhcnJheSkgXAorICAgIChzaXplb2YoYXJyYXkpIC8gc2l6ZW9mKChhcnJheSlbMF0pKQorI2VuZGlmCisKKworLyogRGVmaW5lIG1hY3JvcyBmb3IgaW5saW5lIGRvY3VtZW50YXRpb24uICovCisjZGVmaW5lIFB5RG9jX1ZBUihuYW1lKSBzdGF0aWMgY2hhciBuYW1lW10KKyNkZWZpbmUgUHlEb2NfU1RSVkFSKG5hbWUsc3RyKSBQeURvY19WQVIobmFtZSkgPSBQeURvY19TVFIoc3RyKQorI2lmZGVmIFdJVEhfRE9DX1NUUklOR1MKKyNkZWZpbmUgUHlEb2NfU1RSKHN0cikgc3RyCisjZWxzZQorI2RlZmluZSBQeURvY19TVFIoc3RyKSAiIgorI2VuZGlmCisKKy8qIEJlbG93ICJhIiBpcyBhIHBvd2VyIG9mIDIuICovCisvKiBSb3VuZCBkb3duIHNpemUgIm4iIHRvIGJlIGEgbXVsdGlwbGUgb2YgImEiLiAqLworI2RlZmluZSBfUHlfU0laRV9ST1VORF9ET1dOKG4sIGEpICgoc2l6ZV90KShuKSAmIH4oc2l6ZV90KSgoYSkgLSAxKSkKKy8qIFJvdW5kIHVwIHNpemUgIm4iIHRvIGJlIGEgbXVsdGlwbGUgb2YgImEiLiAqLworI2RlZmluZSBfUHlfU0laRV9ST1VORF9VUChuLCBhKSAoKChzaXplX3QpKG4pICsgXAorICAgICAgICAoc2l6ZV90KSgoYSkgLSAxKSkgJiB+KHNpemVfdCkoKGEpIC0gMSkpCisvKiBSb3VuZCBwb2ludGVyICJwIiBkb3duIHRvIHRoZSBjbG9zZXN0ICJhIi1hbGlnbmVkIGFkZHJlc3MgPD0gInAiLiAqLworI2RlZmluZSBfUHlfQUxJR05fRE9XTihwLCBhKSAoKHZvaWQgKikoKFB5X3VpbnRwdHJfdCkocCkgJiB+KFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorLyogUm91bmQgcG9pbnRlciAicCIgdXAgdG8gdGhlIGNsb3Nlc3QgImEiLWFsaWduZWQgYWRkcmVzcyA+PSAicCIuICovCisjZGVmaW5lIF9QeV9BTElHTl9VUChwLCBhKSAoKHZvaWQgKikoKChQeV91aW50cHRyX3QpKHApICsgXAorICAgICAgICAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkgJiB+KFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorLyogQ2hlY2sgaWYgcG9pbnRlciAicCIgaXMgYWxpZ25lZCB0byAiYSItYnl0ZXMgYm91bmRhcnkuICovCisjZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKChQeV91aW50cHRyX3QpKHApICYgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpKQorCisjZW5kaWYgLyogUHlfUFlNQUNST19IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWF0aC5oIGIvSW5jbHVkZS9weW1hdGguaAppbmRleCBiNGVkYTY2Li42MmE2YzQyIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWF0aC5oCisrKyBiL0luY2x1ZGUvcHltYXRoLmgKQEAgLTM3LDEyICszNyw2IEBACiAjZW5kaWYgLyogX19TVERDX18gKi8KICNlbmRpZiAvKiBfTVNDX1ZFUiAqLwogCi0jaWZkZWYgX09TRl9TT1VSQ0UKLS8qIE9TRjEgNS4xIGRvZXNuJ3QgbWFrZSB0aGVzZSBhdmFpbGFibGUgd2l0aCBYT1BFTl9TT1VSQ0VfRVhURU5ERUQgZGVmaW5lZCAqLwotZXh0ZXJuIGludCBmaW5pdGUoZG91YmxlKTsKLWV4dGVybiBkb3VibGUgY29weXNpZ24oZG91YmxlLCBkb3VibGUpOwotI2VuZGlmCi0KIC8qIEhpZ2ggcHJlY2lzaW9uIGRlZmludGlvbiBvZiBwaSBhbmQgZSAoRXVsZXIpCiAgKiBUaGUgdmFsdWVzIGFyZSB0YWtlbiBmcm9tIGxpYmM2J3MgbWF0aC5oLgogICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5cG9ydC5oIGIvSW5jbHVkZS9weXBvcnQuaAppbmRleCA0ZWYwZGIyLi5lYmEzNGY5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5cG9ydC5oCisrKyBiL0luY2x1ZGUvcHlwb3J0LmgKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2RlZmluZSBfUHlIQVNIX01VTFRJUExJRVIgMTAwMDAwMyAgLyogMHhmNDI0MyAqLwogCiAvKiBQYXJhbWV0ZXJzIHVzZWQgZm9yIHRoZSBudW1lcmljIGhhc2ggaW1wbGVtZW50YXRpb24uICBTZWUgbm90ZXMgZm9yCi0gICBfUHlIYXNoX0RvdWJsZSBpbiBPYmplY3RzL29iamVjdC5jLiAgTnVtZXJpYyBoYXNoZXMgYXJlIGJhc2VkIG9uCisgICBfUHlfSGFzaERvdWJsZSBpbiBPYmplY3RzL29iamVjdC5jLiAgTnVtZXJpYyBoYXNoZXMgYXJlIGJhc2VkIG9uCiAgICByZWR1Y3Rpb24gbW9kdWxvIHRoZSBwcmltZSAyKipfUHlIQVNIX0JJVFMgLSAxLiAqLwogCiAjaWYgU0laRU9GX1ZPSURfUCA+PSA4CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RhdGUuaCBiL0luY2x1ZGUvcHlzdGF0ZS5oCmluZGV4IDA2MGVmYTcuLjIwMTdiMDIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdGF0ZS5oCisrKyBiL0luY2x1ZGUvcHlzdGF0ZS5oCkBAIC0yNSw3ICsyNSw3IEBACiAgICAgUHlPYmplY3QgKm1vZHVsZXNfYnlfaW5kZXg7CiAgICAgUHlPYmplY3QgKnN5c2RpY3Q7CiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zOwotICAgIFB5T2JqZWN0ICptb2R1bGVzX3JlbG9hZGluZzsKKyAgICBQeU9iamVjdCAqaW1wb3J0bGliOwogCiAgICAgUHlPYmplY3QgKmNvZGVjX3NlYXJjaF9wYXRoOwogICAgIFB5T2JqZWN0ICpjb2RlY19zZWFyY2hfY2FjaGU7CkBAIC0zMyw2ICszMyw3IEBACiAgICAgaW50IGNvZGVjc19pbml0aWFsaXplZDsKICAgICBpbnQgZnNjb2RlY19pbml0aWFsaXplZDsKIAorCiAjaWZkZWYgSEFWRV9ETE9QRU4KICAgICBpbnQgZGxvcGVuZmxhZ3M7CiAjZW5kaWYKQEAgLTc0LDkgKzc1LDkgQEAKICAgICBzdHJ1Y3QgX2ZyYW1lICpmcmFtZTsKICAgICBpbnQgcmVjdXJzaW9uX2RlcHRoOwogICAgIGNoYXIgb3ZlcmZsb3dlZDsgLyogVGhlIHN0YWNrIGhhcyBvdmVyZmxvd2VkLiBBbGxvdyA1MCBtb3JlIGNhbGxzCi0JCSAgICAgICAgdG8gaGFuZGxlIHRoZSBydW50aW1lIGVycm9yLiAqLwotICAgIGNoYXIgcmVjdXJzaW9uX2NyaXRpY2FsOyAvKiBUaGUgY3VycmVudCBjYWxscyBtdXN0IG5vdCBjYXVzZSAKLQkJCQlhIHN0YWNrIG92ZXJmbG93LiAqLworICAgICAgICAgICAgICAgICAgICAgICAgdG8gaGFuZGxlIHRoZSBydW50aW1lIGVycm9yLiAqLworICAgIGNoYXIgcmVjdXJzaW9uX2NyaXRpY2FsOyAvKiBUaGUgY3VycmVudCBjYWxscyBtdXN0IG5vdCBjYXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHN0YWNrIG92ZXJmbG93LiAqLwogICAgIC8qICd0cmFjaW5nJyBrZWVwcyB0cmFjayBvZiB0aGUgZXhlY3V0aW9uIGRlcHRoIHdoZW4gdHJhY2luZy9wcm9maWxpbmcuCiAgICAgICAgVGhpcyBpcyB0byBwcmV2ZW50IHRoZSBhY3R1YWwgdHJhY2UvcHJvZmlsZSBjb2RlIGZyb20gYmVpbmcgcmVjb3JkZWQgaW4KICAgICAgICB0aGUgdHJhY2UvcHJvZmlsZS4gKi8KQEAgLTEyNiw2ICsxMjcsMTEgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZShQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0Kiwgc3RydWN0IFB5TW9kdWxlRGVmKik7CisjaWYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpIHx8IFB5X0xJTUlURURfQVBJKzAgPj0gMHgwMzAzMDAwMAorLyogTmV3IGluIDMuMyAqLworUHlBUElfRlVOQyhpbnQpIFB5U3RhdGVfQWRkTW9kdWxlKFB5T2JqZWN0Kiwgc3RydWN0IFB5TW9kdWxlRGVmKik7CitQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9SZW1vdmVNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKik7CisjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVN0YXRlX0ZpbmRNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKik7CiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX05ldyhQeUludGVycHJldGVyU3RhdGUgKik7CkBAIC0xNjMsNiArMTY5LDggQEAKICAgICBlbnVtIHtQeUdJTFN0YXRlX0xPQ0tFRCwgUHlHSUxTdGF0ZV9VTkxPQ0tFRH0KICAgICAgICAgUHlHSUxTdGF0ZV9TVEFURTsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisKIC8qIEVuc3VyZSB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBpcyByZWFkeSB0byBjYWxsIHRoZSBQeXRob24KICAgIEMgQVBJLCByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHN0YXRlIG9mIFB5dGhvbiwgb3Igb2YgaXRzCiAgICB0aHJlYWQgbG9jay4gIFRoaXMgbWF5IGJlIGNhbGxlZCBhcyBtYW55IHRpbWVzIGFzIGRlc2lyZWQKQEAgLTIwNCw2ICsyMTIsOCBAQAogKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSh2b2lkKTsKIAorI2VuZGlmICAgLyogI2lmZGVmIFdJVEhfVEhSRUFEICovCisKIC8qIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBzeXMuX2N1cnJlbnRfZnJhbWVzKCkgIFJldHVybnMgYSBkaWN0IG1hcHBpbmcKICAgIHRocmVhZCBpZCB0byB0aGF0IHRocmVhZCdzIGN1cnJlbnQgZnJhbWUuCiAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRob25ydW4uaCBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKaW5kZXggZTI0NGNlNy4uNGQyNGIyZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRob25ydW4uaAorKysgYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCkBAIC0zMCw2ICszMCw5IEBACiAKIFB5QVBJX0ZVTkModm9pZCkgUHlfSW5pdGlhbGl6ZSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfSW5pdGlhbGl6ZUV4KGludCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9Jbml0aWFsaXplRXhfUHJpdmF0ZShpbnQsIGludCk7CisjZW5kaWYKIFB5QVBJX0ZVTkModm9pZCkgUHlfRmluYWxpemUodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgUHlfSXNJbml0aWFsaXplZCh2b2lkKTsKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeV9OZXdJbnRlcnByZXRlcih2b2lkKTsKQEAgLTgyLDkgKzg1LDEyIEBACiAgICAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MoRlAsIFMsIEIsIDApCiAjZW5kaWYKIFB5QVBJX0ZVTkMoc3RydWN0IF9ub2RlICopIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MoY29uc3QgY2hhciAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KTsKK1B5QVBJX0ZVTkMoc3RydWN0IF9ub2RlICopIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZShjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCwgaW50KTsKIFB5QVBJX0ZVTkMoc3RydWN0IF9ub2RlICopIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlSdW5fU3RyaW5nRmxhZ3MoY29uc3QgY2hhciAqLCBpbnQsIFB5T2JqZWN0ICosCkBAIC0xNzksOSArMTg1LDYgQEAKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb21waWxlcih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7CiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X3N2bnZlcnNpb24odm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfU3VidmVyc2lvblJldmlzaW9uKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X1N1YnZlcnNpb25TaG9ydEJyYW5jaCh2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGdpZGVudGlmaWVyKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9oZ3ZlcnNpb24odm9pZCk7CiAjZW5kaWYKQEAgLTE5MSw3ICsxOTQsNyBAQAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCdWlsdGluX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeVN5c19Jbml0KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRfSW5pdCh2b2lkKTsKLVB5QVBJX0ZVTkModm9pZCkgX1B5RXhjX0luaXQodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeUV4Y19Jbml0KFB5T2JqZWN0ICogYmx0aW5tb2QpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlJbXBvcnRIb29rc19Jbml0KHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIF9QeUZyYW1lX0luaXQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeUZsb2F0X0luaXQodm9pZCk7CkBAIC0yMTUsNiArMjE4LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlGbG9hdF9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlHQ19GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeVNsaWNlX0Zpbmkodm9pZCk7CiAKIFB5QVBJX0RBVEEoUHlUaHJlYWRTdGF0ZSAqKSBfUHlfRmluYWxpemluZzsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRocmVhZC5oIGIvSW5jbHVkZS9weXRocmVhZC5oCmluZGV4IDk4MDZjNjEuLjZlOWYzMDMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aHJlYWQuaAorKysgYi9JbmNsdWRlL3B5dGhyZWFkLmgKQEAgLTMyLDcgKzMyLDcgQEAKICAgIG9uIGEgbG9jayAoc2VlIFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZCgpIGJlbG93KS4KICAgIFBZX1RJTUVPVVRfTUFYIGlzIHRoZSBoaWdoZXN0IHVzYWJsZSB2YWx1ZSAoaW4gbWljcm9zZWNvbmRzKSBvZiB0aGF0CiAgICB0eXBlLCBhbmQgZGVwZW5kcyBvbiB0aGUgc3lzdGVtIHRocmVhZGluZyBBUEkuCi0gICAKKwogICAgTk9URTogdGhpcyBpc24ndCB0aGUgc2FtZSB2YWx1ZSBhcyBgX3RocmVhZC5USU1FT1VUX01BWGAuICBUaGUgX3RocmVhZAogICAgbW9kdWxlIGV4cG9zZXMgYSBoaWdoZXItbGV2ZWwgQVBJLCB3aXRoIHRpbWVvdXRzIGV4cHJlc3NlZCBpbiBzZWNvbmRzCiAgICBhbmQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhbGxvd2VkLgpAQCAtNzQsNiArNzQsOCBAQAogUHlBUElfRlVOQyhzaXplX3QpIFB5VGhyZWFkX2dldF9zdGFja3NpemUodm9pZCk7CiBQeUFQSV9GVU5DKGludCkgUHlUaHJlYWRfc2V0X3N0YWNrc2l6ZShzaXplX3QpOwogCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlUaHJlYWRfR2V0SW5mbyh2b2lkKTsKKwogLyogVGhyZWFkIExvY2FsIFN0b3JhZ2UgKFRMUykgQVBJICovCiBQeUFQSV9GVU5DKGludCkgUHlUaHJlYWRfY3JlYXRlX2tleSh2b2lkKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRfZGVsZXRlX2tleShpbnQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRpbWUuaCBiL0luY2x1ZGUvcHl0aW1lLmgKaW5kZXggZDcwN2JkYi4uNTI5MDJmNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRpbWUuaAorKysgYi9JbmNsdWRlL3B5dGltZS5oCkBAIC0zLDYgKzMsNyBAQAogI2RlZmluZSBQeV9QWVRJTUVfSAogCiAjaW5jbHVkZSAicHljb25maWcuaCIgLyogaW5jbHVkZSBmb3IgZGVmaW5lcyAqLworI2luY2x1ZGUgIm9iamVjdC5oIgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFN5bWJvbHMgYW5kIG1hY3JvcyB0byBzdXBwbHkgcGxhdGZvcm0taW5kZXBlbmRlbnQgaW50ZXJmYWNlcyB0byB0aW1lIHJlbGF0ZWQKQEAgLTIxLDExICsyMiwyNSBAQAogfSBfUHlUaW1lX3RpbWV2YWw7CiAjZW5kaWYKIAorLyogU3RydWN0dXJlIHVzZWQgYnkgdGltZS5nZXRfY2xvY2tfaW5mbygpICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY29uc3QgY2hhciAqaW1wbGVtZW50YXRpb247CisgICAgaW50IG1vbm90b25pYzsKKyAgICBpbnQgYWRqdXN0YWJsZTsKKyAgICBkb3VibGUgcmVzb2x1dGlvbjsKK30gX1B5X2Nsb2NrX2luZm9fdDsKKwogLyogU2ltaWxhciB0byBQT1NJWCBnZXR0aW1lb2ZkYXkgYnV0IGNhbm5vdCBmYWlsLiAgSWYgc3lzdGVtIGdldHRpbWVvZmRheQogICogZmFpbHMgb3IgaXMgbm90IGF2YWlsYWJsZSwgZmFsbCBiYWNrIHRvIGxvd2VyIHJlc29sdXRpb24gY2xvY2tzLgogICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRpbWVfZ2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHApOwogCisvKiBTaW1pbGFyIHRvIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCkgYnV0IHJldHJpZXZlIGFsc28gaW5mb3JtYXRpb24gb24gdGhlCisgKiBjbG9jayB1c2VkIHRvIGdldCB0aGUgY3VycmVudCB0aW1lLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlUaW1lX2dldHRpbWVvZmRheV9pbmZvKAorICAgIF9QeVRpbWVfdGltZXZhbCAqdHAsCisgICAgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbyk7CisKICNkZWZpbmUgX1B5VGltZV9BRERfU0VDT05EUyh0diwgaW50ZXJ2YWwpIFwKIGRvIHsgXAogICAgIHR2LnR2X3VzZWMgKz0gKGxvbmcpICgoKGxvbmcpIGludGVydmFsIC0gaW50ZXJ2YWwpICogMTAwMDAwMCk7IFwKQEAgLTM3LDYgKzUyLDM3IEBACiAgICAgKCh0dl9lbmQudHZfc2VjIC0gdHZfc3RhcnQudHZfc2VjKSArIFwKICAgICAgKHR2X2VuZC50dl91c2VjIC0gdHZfc3RhcnQudHZfdXNlYykgKiAwLjAwMDAwMSkKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIHRpbWVfdC4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX09iamVjdFRvVGltZV90KAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgdGltZV90ICpzZWMpOworCisvKiBDb252ZXJ0IGEgdGltZV90IHRvIGEgUHlMb25nLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlMb25nX0Zyb21UaW1lX3QoCisgICAgdGltZV90IHNlYyk7CisKKy8qIENvbnZlcnQgYSBQeUxvbmcgdG8gYSB0aW1lX3QuICovCitQeUFQSV9GVU5DKHRpbWVfdCkgX1B5TG9uZ19Bc1RpbWVfdCgKKyAgICBQeU9iamVjdCAqb2JqKTsKKworLyogQ29udmVydCBhIG51bWJlciBvZiBzZWNvbmRzLCBpbnQgb3IgZmxvYXQsIHRvIGEgdGltZXZhbCBzdHJ1Y3R1cmUuCisgICB1c2VjIGlzIGluIHRoZSByYW5nZSBbMDsgOTk5OTk5XSBhbmQgcm91bmRlZCB0b3dhcmRzIHplcm8uCisgICBGb3IgZXhhbXBsZSwgLTEuMiBpcyBjb252ZXJ0ZWQgdG8gKC0yLCA4MDAwMDApLiAqLworUHlBUElfRlVOQyhpbnQpIF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgdGltZV90ICpzZWMsCisgICAgbG9uZyAqdXNlYyk7CisKKy8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcywgaW50IG9yIGZsb2F0LCB0byBhIHRpbWVzcGVjIHN0cnVjdHVyZS4KKyAgIG5zZWMgaXMgaW4gdGhlIHJhbmdlIFswOyA5OTk5OTk5OTldIGFuZCByb3VuZGVkIHRvd2FyZHMgemVyby4KKyAgIEZvciBleGFtcGxlLCAtMS4yIGlzIGNvbnZlcnRlZCB0byAoLTIsIDgwMDAwMDAwMCkuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKAorICAgIFB5T2JqZWN0ICpvYmosCisgICAgdGltZV90ICpzZWMsCisgICAgbG9uZyAqbnNlYyk7CisjZW5kaWYKKwogLyogRHVtbXkgdG8gZm9yY2UgbGlua2luZy4gKi8KIFB5QVBJX0ZVTkModm9pZCkgX1B5VGltZV9Jbml0KHZvaWQpOwogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3NldG9iamVjdC5oIGIvSW5jbHVkZS9zZXRvYmplY3QuaAppbmRleCA2MjM0MTExLi5hMTQ4NzRiIDEwMDY0NAotLS0gYS9JbmNsdWRlL3NldG9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKQEAgLTk5LDYgKzk5LDkgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlTZXRfUG9wKFB5T2JqZWN0ICpzZXQpOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhpbnQpIF9QeVNldF9VcGRhdGUoUHlPYmplY3QgKnNldCwgUHlPYmplY3QgKml0ZXJhYmxlKTsKKworUHlBUElfRlVOQyhpbnQpIFB5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCk7CitQeUFQSV9GVU5DKHZvaWQpIF9QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CiAjZW5kaWYKIAogI2lmZGVmIF9fY3BsdXNwbHVzCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAppbmRleCAwYjg1YjJhLi45NDhmNjkwIDEwMDY0NAotLS0gYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCisrKyBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKQEAgLTksMTYgKzksNiBAQAogCiAjaW5jbHVkZSA8c3RkZGVmLmg+IC8qIEZvciBvZmZzZXRvZiAqLwogCi0vKiBUaGUgb2Zmc2V0b2YoKSBtYWNybyBjYWxjdWxhdGVzIHRoZSBvZmZzZXQgb2YgYSBzdHJ1Y3R1cmUgbWVtYmVyCi0gICBpbiBpdHMgc3RydWN0dXJlLiAgVW5mb3J0dW5hdGVseSB0aGlzIGNhbm5vdCBiZSB3cml0dGVuIGRvd24KLSAgIHBvcnRhYmx5LCBoZW5jZSBpdCBpcyBwcm92aWRlZCBieSBhIFN0YW5kYXJkIEMgaGVhZGVyIGZpbGUuCi0gICBGb3IgcHJlLVN0YW5kYXJkIEMgY29tcGlsZXJzLCBoZXJlIGlzIGEgdmVyc2lvbiB0aGF0IHVzdWFsbHkgd29ya3MKLSAgIChidXQgd2F0Y2ggb3V0ISk6ICovCi0KLSNpZm5kZWYgb2Zmc2V0b2YKLSNkZWZpbmUgb2Zmc2V0b2YodHlwZSwgbWVtYmVyKSAoIChpbnQpICYgKCh0eXBlKikwKSAtPiBtZW1iZXIgKQotI2VuZGlmCi0KIC8qIEFuIGFycmF5IG9mIFB5TWVtYmVyRGVmIHN0cnVjdHVyZXMgZGVmaW5lcyB0aGUgbmFtZSwgdHlwZSBhbmQgb2Zmc2V0CiAgICBvZiBzZWxlY3RlZCBtZW1iZXJzIG9mIGEgQyBzdHJ1Y3R1cmUuICBUaGVzZSBjYW4gYmUgcmVhZCBieQogICAgUHlNZW1iZXJfR2V0T25lKCkgYW5kIHNldCBieSBQeU1lbWJlcl9TZXRPbmUoKSAoZXhjZXB0IGlmIHRoZWlyIFJFQURPTkxZCkBAIC0yNiw0MiArMTYsNDEgQEAKICAgIHBvaW50ZXIgaXMgTlVMTC4gKi8KIAogdHlwZWRlZiBzdHJ1Y3QgUHlNZW1iZXJEZWYgewotCS8qIEN1cnJlbnQgdmVyc2lvbiwgdXNlIHRoaXMgKi8KLQljaGFyICpuYW1lOwotCWludCB0eXBlOwotCVB5X3NzaXplX3Qgb2Zmc2V0OwotCWludCBmbGFnczsKLQljaGFyICpkb2M7CisgICAgY2hhciAqbmFtZTsKKyAgICBpbnQgdHlwZTsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBpbnQgZmxhZ3M7CisgICAgY2hhciAqZG9jOwogfSBQeU1lbWJlckRlZjsKIAogLyogVHlwZXMgKi8KLSNkZWZpbmUgVF9TSE9SVAkJMAotI2RlZmluZSBUX0lOVAkJMQotI2RlZmluZSBUX0xPTkcJCTIKLSNkZWZpbmUgVF9GTE9BVAkJMwotI2RlZmluZSBUX0RPVUJMRQk0Ci0jZGVmaW5lIFRfU1RSSU5HCTUKLSNkZWZpbmUgVF9PQkpFQ1QJNgorI2RlZmluZSBUX1NIT1JUICAgICAwCisjZGVmaW5lIFRfSU5UICAgICAgIDEKKyNkZWZpbmUgVF9MT05HICAgICAgMgorI2RlZmluZSBUX0ZMT0FUICAgICAzCisjZGVmaW5lIFRfRE9VQkxFICAgIDQKKyNkZWZpbmUgVF9TVFJJTkcgICAgNQorI2RlZmluZSBUX09CSkVDVCAgICA2CiAvKiBYWFggdGhlIG9yZGVyaW5nIGhlcmUgaXMgd2VpcmQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5ICovCi0jZGVmaW5lIFRfQ0hBUgkJNwkvKiAxLWNoYXJhY3RlciBzdHJpbmcgKi8KLSNkZWZpbmUgVF9CWVRFCQk4CS8qIDgtYml0IHNpZ25lZCBpbnQgKi8KKyNkZWZpbmUgVF9DSEFSICAgICAgNyAgIC8qIDEtY2hhcmFjdGVyIHN0cmluZyAqLworI2RlZmluZSBUX0JZVEUgICAgICA4ICAgLyogOC1iaXQgc2lnbmVkIGludCAqLwogLyogdW5zaWduZWQgdmFyaWFudHM6ICovCi0jZGVmaW5lIFRfVUJZVEUJCTkKLSNkZWZpbmUgVF9VU0hPUlQJMTAKLSNkZWZpbmUgVF9VSU5UCQkxMQotI2RlZmluZSBUX1VMT05HCQkxMgorI2RlZmluZSBUX1VCWVRFICAgICA5CisjZGVmaW5lIFRfVVNIT1JUICAgIDEwCisjZGVmaW5lIFRfVUlOVCAgICAgIDExCisjZGVmaW5lIFRfVUxPTkcgICAgIDEyCiAKIC8qIEFkZGVkIGJ5IEphY2s6IHN0cmluZ3MgY29udGFpbmVkIGluIHRoZSBzdHJ1Y3R1cmUgKi8KLSNkZWZpbmUgVF9TVFJJTkdfSU5QTEFDRQkxMworI2RlZmluZSBUX1NUUklOR19JTlBMQUNFICAgIDEzCiAKIC8qIEFkZGVkIGJ5IExpbGxvOiBib29scyBjb250YWluZWQgaW4gdGhlIHN0cnVjdHVyZSAoYXNzdW1lZCBjaGFyKSAqLwotI2RlZmluZSBUX0JPT0wJCTE0CisjZGVmaW5lIFRfQk9PTCAgICAgIDE0CiAKLSNkZWZpbmUgVF9PQkpFQ1RfRVgJMTYJLyogTGlrZSBUX09CSkVDVCwgYnV0IHJhaXNlcyBBdHRyaWJ1dGVFcnJvcgotCQkJCSAgIHdoZW4gdGhlIHZhbHVlIGlzIE5VTEwsIGluc3RlYWQgb2YKLQkJCQkgICBjb252ZXJ0aW5nIHRvIE5vbmUuICovCisjZGVmaW5lIFRfT0JKRUNUX0VYIDE2ICAvKiBMaWtlIFRfT0JKRUNULCBidXQgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0aW5nIHRvIE5vbmUuICovCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSNkZWZpbmUgVF9MT05HTE9ORyAgICAgIDE3ICAKKyNkZWZpbmUgVF9MT05HTE9ORyAgICAgIDE3CiAjZGVmaW5lIFRfVUxPTkdMT05HICAgICAxOAogI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAKQEAgLTcwLDEwICs1OSwxMCBAQAogCiAKIC8qIEZsYWdzICovCi0jZGVmaW5lIFJFQURPTkxZCTEKLSNkZWZpbmUgUkVBRF9SRVNUUklDVEVECTIKKyNkZWZpbmUgUkVBRE9OTFkgICAgICAgICAgICAxCisjZGVmaW5lIFJFQURfUkVTVFJJQ1RFRCAgICAgMgogI2RlZmluZSBQWV9XUklURV9SRVNUUklDVEVEIDQKLSNkZWZpbmUgUkVTVFJJQ1RFRAkoUkVBRF9SRVNUUklDVEVEIHwgUFlfV1JJVEVfUkVTVFJJQ1RFRCkKKyNkZWZpbmUgUkVTVFJJQ1RFRCAgICAgICAgICAoUkVBRF9SRVNUUklDVEVEIHwgUFlfV1JJVEVfUkVTVFJJQ1RFRCkKIAogCiAvKiBDdXJyZW50IEFQSSwgdXNlIHRoaXMgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvc3ltdGFibGUuaCBiL0luY2x1ZGUvc3ltdGFibGUuaAppbmRleCBmZDdkZTA0Li44MmY2MjY5IDEwMDY0NAotLS0gYS9JbmNsdWRlL3N5bXRhYmxlLmgKKysrIGIvSW5jbHVkZS9zeW10YWJsZS5oCkBAIC0yMywxMCArMjMsMTMgQEAKICAgICBQeU9iamVjdCAqc3RfYmxvY2tzOyAgICAgICAgICAgIC8qIGRpY3Q6IG1hcCBBU1Qgbm9kZSBhZGRyZXNzZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgIHRvIHN5bWJvbCB0YWJsZSBlbnRyaWVzICovCiAgICAgUHlPYmplY3QgKnN0X3N0YWNrOyAgICAgICAgICAgICAvKiBsaXN0OiBzdGFjayBvZiBuYW1lc3BhY2UgaW5mbyAqLwotICAgIFB5T2JqZWN0ICpzdF9nbG9iYWw7ICAgICAgICAgICAgLyogYm9ycm93ZWQgcmVmIHRvIHN0X3RvcC0+c3Rfc3ltYm9scyAqLwotICAgIGludCBzdF9uYmxvY2tzOyAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGJsb2NrcyB1c2VkICovCisgICAgUHlPYmplY3QgKnN0X2dsb2JhbDsgICAgICAgICAgICAvKiBib3Jyb3dlZCByZWYgdG8gc3RfdG9wLT5zdGVfc3ltYm9scyAqLworICAgIGludCBzdF9uYmxvY2tzOyAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGJsb2NrcyB1c2VkLiBrZXB0IGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lzdGVuY3kgd2l0aCB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZXIgc3RydWN0dXJlICovCiAgICAgUHlPYmplY3QgKnN0X3ByaXZhdGU7ICAgICAgICAgICAvKiBuYW1lIG9mIGN1cnJlbnQgY2xhc3Mgb3IgTlVMTCAqLwotICAgIFB5RnV0dXJlRmVhdHVyZXMgKnN0X2Z1dHVyZTsgICAgLyogbW9kdWxlJ3MgZnV0dXJlIGZlYXR1cmVzICovCisgICAgUHlGdXR1cmVGZWF0dXJlcyAqc3RfZnV0dXJlOyAgICAvKiBtb2R1bGUncyBmdXR1cmUgZmVhdHVyZXMgdGhhdCBhZmZlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeW1ib2wgdGFibGUgKi8KIH07CiAKIHR5cGVkZWYgc3RydWN0IF9zeW10YWJsZV9lbnRyeSB7CkBAIC0zNCw3ICszNyw3IEBACiAgICAgUHlPYmplY3QgKnN0ZV9pZDsgICAgICAgIC8qIGludDoga2V5IGluIHN0ZV90YWJsZS0+c3RfYmxvY2tzICovCiAgICAgUHlPYmplY3QgKnN0ZV9zeW1ib2xzOyAgIC8qIGRpY3Q6IHZhcmlhYmxlIG5hbWVzIHRvIGZsYWdzICovCiAgICAgUHlPYmplY3QgKnN0ZV9uYW1lOyAgICAgIC8qIHN0cmluZzogbmFtZSBvZiBjdXJyZW50IGJsb2NrICovCi0gICAgUHlPYmplY3QgKnN0ZV92YXJuYW1lczsgIC8qIGxpc3Qgb2YgdmFyaWFibGUgbmFtZXMgKi8KKyAgICBQeU9iamVjdCAqc3RlX3Zhcm5hbWVzOyAgLyogbGlzdCBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzICovCiAgICAgUHlPYmplY3QgKnN0ZV9jaGlsZHJlbjsgIC8qIGxpc3Qgb2YgY2hpbGQgYmxvY2tzICovCiAgICAgX1B5X2Jsb2NrX3R5IHN0ZV90eXBlOyAgIC8qIG1vZHVsZSwgY2xhc3MsIG9yIGZ1bmN0aW9uICovCiAgICAgaW50IHN0ZV91bm9wdGltaXplZDsgICAgIC8qIGZhbHNlIGlmIG5hbWVzcGFjZSBpcyBvcHRpbWl6ZWQgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdGltZWZ1bmNzLmggYi9JbmNsdWRlL3RpbWVmdW5jcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzQzNTc1Li4wMDAwMDAwCi0tLSBhL0luY2x1ZGUvdGltZWZ1bmNzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0vKiAgdGltZWZ1bmNzLmgKLSAqLwotCi0vKiBVdGlsaXR5IGZ1bmN0aW9uIHJlbGF0ZWQgdG8gdGltZW1vZHVsZS5jLiAqLwotCi0jaWZuZGVmIFRJTUVGVU5DU19ICi0jZGVmaW5lIFRJTUVGVU5DU19ICi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLQotLyogQ2FzdCBkb3VibGUgeCB0byB0aW1lX3QsIGJ1dCByYWlzZSBWYWx1ZUVycm9yIGlmIHggaXMgdG9vIGxhcmdlCi0gKiB0byBmaXQgaW4gYSB0aW1lX3QuICBWYWx1ZUVycm9yIGlzIHNldCBvbiByZXR1cm4gaWZmIHRoZSByZXR1cm4KLSAqIHZhbHVlIGlzICh0aW1lX3QpLTEgYW5kIFB5RXJyX09jY3VycmVkKCkuCi0gKi8KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkModGltZV90KSBfUHlUaW1lX0RvdWJsZVRvVGltZXQoZG91YmxlIHgpOwotI2VuZGlmCi0KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAgLyogVElNRUZVTkNTX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdHJhY2ViYWNrLmggYi9JbmNsdWRlL3RyYWNlYmFjay5oCmluZGV4IDY5ZTNkMDUuLjc3MzQ3MDcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHJhY2ViYWNrLmgKKysrIGIvSW5jbHVkZS90cmFjZWJhY2suaApAQCAtNSw2ICs1LDggQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKyNpbmNsdWRlICJweXN0YXRlLmgiCisKIHN0cnVjdCBfZnJhbWU7CiAKIC8qIFRyYWNlYmFjayBpbnRlcmZhY2UgKi8KQEAgLTI4LDYgKzMwLDQyIEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlUcmFjZUJhY2tfVHlwZTsKICNkZWZpbmUgUHlUcmFjZUJhY2tfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gJlB5VHJhY2VCYWNrX1R5cGUpCiAKKy8qIFdyaXRlIHRoZSBQeXRob24gdHJhY2ViYWNrIGludG8gdGhlIGZpbGUgJ2ZkJy4gRm9yIGV4YW1wbGU6CisKKyAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgorICAgICAgICAgRmlsZSAieHh4IiwgbGluZSB4eHggaW4gPHh4eD4KKyAgICAgICAgIEZpbGUgInh4eCIsIGxpbmUgeHh4IGluIDx4eHg+CisgICAgICAgICAuLi4KKyAgICAgICAgIEZpbGUgInh4eCIsIGxpbmUgeHh4IGluIDx4eHg+CisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgd3JpdHRlbiBmb3IgZGVidWcgcHVycG9zZSBvbmx5LCB0byBkdW1wIHRoZSB0cmFjZWJhY2sgaW4KKyAgIHRoZSB3b3JzdCBjYXNlOiBhZnRlciBhIHNlZ21lbnRhdGlvbiBmYXVsdCwgYXQgZmF0YWwgZXJyb3IsIGV0Yy4gVGhhdCdzIHdoeSwKKyAgIGl0IGlzIHZlcnkgbGltaXRlZC4gU3RyaW5ncyBhcmUgdHJ1bmNhdGVkIHRvIDEwMCBjaGFyYWN0ZXJzIGFuZCBlbmNvZGVkIHRvCisgICBBU0NJSSB3aXRoIGJhY2tzbGFzaHJlcGxhY2UuIEl0IGRvZXNuJ3Qgd3JpdGUgdGhlIHNvdXJjZSBjb2RlLCBvbmx5IHRoZQorICAgZnVuY3Rpb24gbmFtZSwgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIG9mIGVhY2ggZnJhbWUuIFdyaXRlIG9ubHkgdGhlIGZpcnN0CisgICAxMDAgZnJhbWVzOiBpZiB0aGUgdHJhY2ViYWNrIGlzIHRydW5jYXRlZCwgd3JpdGUgdGhlIGxpbmUgIiAuLi4iLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitQeUFQSV9EQVRBKHZvaWQpIF9QeV9EdW1wVHJhY2ViYWNrKAorICAgIGludCBmZCwKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUpOworCisvKiBXcml0ZSB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzIGludG8gdGhlIGZpbGUgJ2ZkJy4gY3VycmVudF90aHJlYWQgY2FuIGJlCisgICBOVUxMLiBSZXR1cm4gTlVMTCBvbiBzdWNjZXNzLCBvciBhbiBlcnJvciBtZXNzYWdlIG9uIGVycm9yLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHdyaXR0ZW4gZm9yIGRlYnVnIHB1cnBvc2Ugb25seS4gSXQgY2FsbHMKKyAgIF9QeV9EdW1wVHJhY2ViYWNrKCkgZm9yIGVhY2ggdGhyZWFkLCBhbmQgc28gaGFzIHRoZSBzYW1lIGxpbWl0YXRpb25zLiBJdAorICAgb25seSB3cml0ZSB0aGUgdHJhY2ViYWNrIG9mIHRoZSBmaXJzdCAxMDAgdGhyZWFkczogd3JpdGUgIi4uLiIgaWYgdGhlcmUgYXJlCisgICBtb3JlIHRocmVhZHMuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK1B5QVBJX0RBVEEoY29uc3QgY2hhciopIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygKKyAgICBpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAorICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKTsKKworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90dXBsZW9iamVjdC5oIGIvSW5jbHVkZS90dXBsZW9iamVjdC5oCmluZGV4IGYxN2I3ODguLmMyNzNjZTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdHVwbGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3R1cGxlb2JqZWN0LmgKQEAgLTYzLDYgKzYzLDkgQEAKICNlbmRpZgogCiBQeUFQSV9GVU5DKGludCkgUHlUdXBsZV9DbGVhckZyZWVMaXN0KHZvaWQpOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyh2b2lkKSBfUHlUdXBsZV9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCk7CisjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3Vjbmhhc2guaCBiL0luY2x1ZGUvdWNuaGFzaC5oCmluZGV4IDcwZmRmMTMuLjhkZTliYTAgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvdWNuaGFzaC5oCisrKyBiL0luY2x1ZGUvdWNuaGFzaC5oCkBAIC0xOSwxMSArMTksMTMgQEAKICAgICAgICBzdWNjZXNzLCB6ZXJvIGlmIG5vdC4gIERvZXMgbm90IHNldCBQeXRob24gZXhjZXB0aW9ucy4gCiAgICAgICAgSWYgc2VsZiBpcyBOVUxMLCBkYXRhIGNvbWUgZnJvbSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoZSBkYXRhYmFzZS4KICAgICAgICBJZiBpdCBpcyBub3QgTlVMTCwgaXQgc2hvdWxkIGJlIGEgdW5pY29kZWRhdGEudWNkX1hfWV9aIG9iamVjdCAqLwotICAgIGludCAoKmdldG5hbWUpKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1Zmxlbik7CisgICAgaW50ICgqZ2V0bmFtZSkoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLAorICAgICAgICAgICAgICAgICAgIGludCB3aXRoX2FsaWFzX2FuZF9zZXEpOwogCiAgICAgLyogR2V0IGNoYXJhY3RlciBjb2RlIGZvciBhIGdpdmVuIG5hbWUuICBTYW1lIGVycm9yIGhhbmRsaW5nCiAgICAgICAgYXMgZm9yIGdldG5hbWUuICovCi0gICAgaW50ICgqZ2V0Y29kZSkoUHlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIGludCBuYW1lbGVuLCBQeV9VQ1M0KiBjb2RlKTsKKyAgICBpbnQgKCpnZXRjb2RlKShQeU9iamVjdCAqc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUsCisgICAgICAgICAgICAgICAgICAgaW50IHdpdGhfbmFtZWRfc2VxKTsKIAogfSBfUHlVbmljb2RlX05hbWVfQ0FQSTsKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAppbmRleCAzNzlhOTBjLi5hOGY1YjVkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaAorKysgYi9JbmNsdWRlL3VuaWNvZGVvYmplY3QuaApAQCAtNjQsMTYgKzY0LDE1IEBACiAvKiBQeXRob24gMy54IHJlcXVpcmVzIHVuaWNvZGUgKi8KICNkZWZpbmUgUHlfVVNJTkdfVU5JQ09ERQogCi0vKiBGSVhNRTogTXZMJ3MgbmV3IGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCBQeV9VTklDT0RFX1NJWkUgaXMKLSAgIHByb3Blcmx5IHNldCwgYnV0IHRoZSBkZWZhdWx0IHJ1bGVzIGJlbG93IGRvZXNuJ3Qgc2V0IGl0LiAgSSdsbAotICAgc29ydCB0aGlzIG91dCBzb21lIG90aGVyIGRheSAtLSBmcmVkcmlrQHB5dGhvbndhcmUuY29tICovCi0KLSNpZm5kZWYgUHlfVU5JQ09ERV9TSVpFCi0jZXJyb3IgTXVzdCBkZWZpbmUgUHlfVU5JQ09ERV9TSVpFCisjaWZuZGVmIFNJWkVPRl9XQ0hBUl9UCisjZXJyb3IgTXVzdCBkZWZpbmUgU0laRU9GX1dDSEFSX1QKICNlbmRpZgogCi0vKiBTZXR0aW5nIFB5X1VOSUNPREVfV0lERSBlbmFibGVzIFVDUy00IHN0b3JhZ2UuICBPdGhlcndpc2UsIFVuaWNvZGUKLSAgIHN0cmluZ3MgYXJlIHN0b3JlZCBhcyBVQ1MtMiAod2l0aCBsaW1pdGVkIHN1cHBvcnQgZm9yIFVURi0xNikgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIFNJWkVPRl9XQ0hBUl9UCisKKy8qIElmIHdjaGFyX3QgY2FuIGJlIHVzZWQgZm9yIFVDUy00IHN0b3JhZ2UsIHNldCBQeV9VTklDT0RFX1dJREUuCisgICBPdGhlcndpc2UsIFVuaWNvZGUgc3RyaW5ncyBhcmUgc3RvcmVkIGFzIFVDUy0yICh3aXRoIGxpbWl0ZWQgc3VwcG9ydAorICAgZm9yIFVURi0xNikgKi8KIAogI2lmIFB5X1VOSUNPREVfU0laRSA+PSA0CiAjZGVmaW5lIFB5X1VOSUNPREVfV0lERQpAQCAtODQsMTkgKzgzLDE0IEBACiAvKiAjZGVmaW5lIEhBVkVfV0NIQVJfSCAqLwogLyogI2RlZmluZSBIQVZFX1VTQUJMRV9XQ0hBUl9UICovCiAKLS8qIERlZmF1bHRzIGZvciB2YXJpb3VzIHBsYXRmb3JtcyAqLwotI2lmbmRlZiBQWV9VTklDT0RFX1RZUEUKKy8qIFB5X1VOSUNPREUgd2FzIHRoZSBuYXRpdmUgVW5pY29kZSBzdG9yYWdlIGZvcm1hdCAoY29kZSB1bml0KSB1c2VkIGJ5CisgICBQeXRob24gYW5kIHJlcHJlc2VudHMgYSBzaW5nbGUgVW5pY29kZSBlbGVtZW50IGluIHRoZSBVbmljb2RlIHR5cGUuCisgICBXaXRoIFBFUCAzOTMsIFB5X1VOSUNPREUgaXMgZGVwcmVjYXRlZCBhbmQgcmVwbGFjZWQgd2l0aCBhCisgICB0eXBlZGVmIHRvIHdjaGFyX3QuICovCiAKLS8qIFdpbmRvd3MgaGFzIGEgdXNhYmxlIHdjaGFyX3QgdHlwZSAodW5sZXNzIHdlJ3JlIHVzaW5nIFVDUy00KSAqLwotIyBpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiBQeV9VTklDT0RFX1NJWkUgPT0gMgotIyAgZGVmaW5lIEhBVkVfVVNBQkxFX1dDSEFSX1QKLSMgIGRlZmluZSBQWV9VTklDT0RFX1RZUEUgd2NoYXJfdAotIyBlbmRpZgotCi0jIGlmIGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKQotIyAgZGVmaW5lIFBZX1VOSUNPREVfVFlQRSBQeV9VQ1M0Ci0jIGVuZGlmCi0KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKyNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHdjaGFyX3QKK3R5cGVkZWYgd2NoYXJfdCBQeV9VTklDT0RFOwogI2VuZGlmCiAKIC8qIElmIHRoZSBjb21waWxlciBwcm92aWRlcyBhIHdjaGFyX3QgdHlwZSB3ZSB0cnkgdG8gc3VwcG9ydCBpdApAQCAtMTA5LDYgKzEwMywxMCBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisjICBkZWZpbmUgSEFWRV9NQkNTCisjZW5kaWYKKwogI2lmZGVmIEhBVkVfV0NIQVJfSAogLyogV29yayBhcm91bmQgYSBjb3NtZXRpYyBidWcgaW4gQlNESSA0Lnggd2NoYXIuaDsgdGhhbmtzIHRvIFRob21hcyBXb3V0ZXJzICovCiAjIGlmZGVmIF9IQVZFX0JTREkKQEAgLTExNywyMDEgKzExNSwyNCBAQAogIyAgaW5jbHVkZSA8d2NoYXIuaD4KICNlbmRpZgogCi0vKgotICogVXNlIHRoaXMgdHlwZWRlZiB3aGVuIHlvdSBuZWVkIHRvIHJlcHJlc2VudCBhIFVURi0xNiBzdXJyb2dhdGUgcGFpcgotICogYXMgc2luZ2xlIHVuc2lnbmVkIGludGVnZXIuCi0gKi8KLSNpZiBTSVpFT0ZfSU5UID49IDQKKy8qIFB5X1VDUzQgYW5kIFB5X1VDUzIgYXJlIHR5cGVkZWZzIGZvciB0aGUgcmVzcGVjdGl2ZQorICAgdW5pY29kZSByZXByZXNlbnRhdGlvbnMuICovCisjaWYgU0laRU9GX0lOVCA9PSA0CiB0eXBlZGVmIHVuc2lnbmVkIGludCBQeV9VQ1M0OwotI2VsaWYgU0laRU9GX0xPTkcgPj0gNAorI2VsaWYgU0laRU9GX0xPTkcgPT0gNAogdHlwZWRlZiB1bnNpZ25lZCBsb25nIFB5X1VDUzQ7Ci0jZW5kaWYKLQotLyogUHlfVU5JQ09ERSBpcyB0aGUgbmF0aXZlIFVuaWNvZGUgc3RvcmFnZSBmb3JtYXQgKGNvZGUgdW5pdCkgdXNlZCBieQotICAgUHl0aG9uIGFuZCByZXByZXNlbnRzIGEgc2luZ2xlIFVuaWNvZGUgZWxlbWVudCBpbiB0aGUgVW5pY29kZQotICAgdHlwZS4gKi8KLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotdHlwZWRlZiBQWV9VTklDT0RFX1RZUEUgUHlfVU5JQ09ERTsKLSNlbmRpZgotCi0vKiAtLS0gVUNTLTIvVUNTLTQgTmFtZSBNYW5nbGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyogVW5pY29kZSBBUEkgbmFtZXMgYXJlIG1hbmdsZWQgdG8gYXNzdXJlIHRoYXQgVUNTLTIgYW5kIFVDUy00IGJ1aWxkcwotICAgcHJvZHVjZSBkaWZmZXJlbnQgZXh0ZXJuYWwgbmFtZXMgYW5kIHRodXMgY2F1c2UgaW1wb3J0IGVycm9ycyBpbgotICAgY2FzZSBQeXRob24gaW50ZXJwcmV0ZXJzIGFuZCBleHRlbnNpb25zIHdpdGggbWl4ZWQgY29tcGlsZWQgaW4KLSAgIFVuaWNvZGUgd2lkdGggYXNzdW1wdGlvbnMgYXJlIGNvbWJpbmVkLiAqLwotCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0NoYXJtYXBTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QgUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlIFB5VW5pY29kZVVDUzJfQXNEZWNvZGVkVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc0xhdGluMVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1VURjMyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyBQeVVuaWNvZGVVQ1MyX0FzVVRGMTZTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjhTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1VURjhTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGUgUHlVbmljb2RlVUNTMl9Bc1VuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1dpZGVDaGFyIFB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhcgotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcgUHlVbmljb2RlVUNTMl9Bc1dpZGVDaGFyU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCBQeVVuaWNvZGVVQ1MyX0NsZWFyRnJlZWxpc3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Db21wYXJlIFB5VW5pY29kZVVDUzJfQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgUHlVbmljb2RlVUNTMl9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29uY2F0IFB5VW5pY29kZVVDUzJfQ29uY2F0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kIFB5VW5pY29kZVVDUzJfQXBwZW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsIFB5VW5pY29kZVVDUzJfQXBwZW5kQW5kRGVsCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29udGFpbnMgUHlVbmljb2RlVUNTMl9Db250YWlucwotIyBkZWZpbmUgUHlVbmljb2RlX0NvdW50IFB5VW5pY29kZVVDUzJfQ291bnQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGUgUHlVbmljb2RlVUNTMl9EZWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVBU0NJSSBQeVVuaWNvZGVVQ1MyX0RlY29kZUFTQ0lJCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcCBQeVVuaWNvZGVVQ1MyX0RlY29kZUNoYXJtYXAKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEgUHlVbmljb2RlVUNTMl9EZWNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQgUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHQKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplIFB5VW5pY29kZVVDUzJfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTMl9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzIgUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwgUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTYgUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwgUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNlN0YXRlZnVsCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGOCBQeVVuaWNvZGVVQ1MyX0RlY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwgUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzJfRGVjb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZSBQeVVuaWNvZGVVQ1MyX0VuY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUFTQ0lJIFB5VW5pY29kZVVDUzJfRW5jb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzJfRW5jb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZURlY2ltYWwgUHlVbmljb2RlVUNTMl9FbmNvZGVEZWNpbWFsCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xIFB5VW5pY29kZVVDUzJfRW5jb2RlTGF0aW4xCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYzMiBQeVVuaWNvZGVVQ1MyX0VuY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGMTYgUHlVbmljb2RlVUNTMl9FbmNvZGVVVEYxNgotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjggUHlVbmljb2RlVUNTMl9FbmNvZGVVVEY4Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1MyX0VuY29kZVVuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9GaW5kIFB5VW5pY29kZVVDUzJfRmluZAotIyBkZWZpbmUgUHlVbmljb2RlX0Zvcm1hdCBQeVVuaWNvZGVVQ1MyX0Zvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzJfRnJvbUVuY29kZWRPYmplY3QKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tRm9ybWF0IFB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXRWIFB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdFYKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tT2JqZWN0IFB5VW5pY29kZVVDUzJfRnJvbU9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PcmRpbmFsIFB5VW5pY29kZVVDUzJfRnJvbU9yZGluYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tU3RyaW5nIFB5VW5pY29kZVVDUzJfRnJvbVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIFB5VW5pY29kZVVDUzJfRnJvbVN0cmluZ0FuZFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tVW5pY29kZSBQeVVuaWNvZGVVQ1MyX0Zyb21Vbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyIFB5VW5pY29kZVVDUzJfRnJvbVdpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIgUHlVbmljb2RlVUNTMl9GU0NvbnZlcnRlcgotIyBkZWZpbmUgUHlVbmljb2RlX0ZTRGVjb2RlciBQeVVuaWNvZGVVQ1MyX0ZTRGVjb2RlcgotIyBkZWZpbmUgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyBQeVVuaWNvZGVVQ1MyX0dldERlZmF1bHRFbmNvZGluZwotIyBkZWZpbmUgUHlVbmljb2RlX0dldE1heCBQeVVuaWNvZGVVQ1MyX0dldE1heAotIyBkZWZpbmUgUHlVbmljb2RlX0dldFNpemUgUHlVbmljb2RlVUNTMl9HZXRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfSXNJZGVudGlmaWVyIFB5VW5pY29kZVVDUzJfSXNJZGVudGlmaWVyCi0jIGRlZmluZSBQeVVuaWNvZGVfSm9pbiBQeVVuaWNvZGVVQ1MyX0pvaW4KLSMgZGVmaW5lIFB5VW5pY29kZV9QYXJ0aXRpb24gUHlVbmljb2RlVUNTMl9QYXJ0aXRpb24KLSMgZGVmaW5lIFB5VW5pY29kZV9SUGFydGl0aW9uIFB5VW5pY29kZVVDUzJfUlBhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JTcGxpdCBQeVVuaWNvZGVVQ1MyX1JTcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1JlcGxhY2UgUHlVbmljb2RlVUNTMl9SZXBsYWNlCi0jIGRlZmluZSBQeVVuaWNvZGVfUmVzaXplIFB5VW5pY29kZVVDUzJfUmVzaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfUmljaENvbXBhcmUgUHlVbmljb2RlVUNTMl9SaWNoQ29tcGFyZQotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0IFB5VW5pY29kZVVDUzJfU3BsaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9TcGxpdGxpbmVzIFB5VW5pY29kZVVDUzJfU3BsaXRsaW5lcwotIyBkZWZpbmUgUHlVbmljb2RlX1RhaWxtYXRjaCBQeVVuaWNvZGVVQ1MyX1RhaWxtYXRjaAotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZSBQeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZQotIyBkZWZpbmUgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAgUHlVbmljb2RlVUNTMl9UcmFuc2xhdGVDaGFybWFwCi0jIGRlZmluZSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcgX1B5VW5pY29kZVVDUzJfQXNEZWZhdWx0RW5jb2RlZFN0cmluZwotIyBkZWZpbmUgX1B5VW5pY29kZV9GaW5pIF9QeVVuaWNvZGVVQ1MyX0ZpbmkKLSMgZGVmaW5lIF9QeVVuaWNvZGVfSW5pdCBfUHlVbmljb2RlVUNTMl9Jbml0Ci0jIGRlZmluZSBQeVVuaWNvZGVfc3RyZHVwIFB5VW5pY29kZVVDUzJfc3RyZHVwCi0KICNlbHNlCi0KLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNBU0NJSVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzQ2hhcm1hcFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdCBQeVVuaWNvZGVVQ1M0X0FzRGVjb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUgUHlVbmljb2RlVUNTNF9Bc0RlY29kZWRVbmljb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0IFB5VW5pY29kZVVDUzRfQXNFbmNvZGVkT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNFbmNvZGVkU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0FzRW5jb2RlZFVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc0xhdGluMVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzTGF0aW4xU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nIFB5VW5pY29kZVVDUzRfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzVVRGMzJTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nIFB5VW5pY29kZVVDUzRfQXNVVEYxNlN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVVRGOFN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzVVRGOFN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzVW5pY29kZSBQeVVuaWNvZGVVQ1M0X0FzVW5pY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzVW5pY29kZUVzY2FwZVN0cmluZwotIyBkZWZpbmUgUHlVbmljb2RlX0FzV2lkZUNoYXIgUHlVbmljb2RlVUNTNF9Bc1dpZGVDaGFyCi0jIGRlZmluZSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyBQeVVuaWNvZGVVQ1M0X0FzV2lkZUNoYXJTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9DbGVhckZyZWVMaXN0IFB5VW5pY29kZVVDUzRfQ2xlYXJGcmVlbGlzdAotIyBkZWZpbmUgUHlVbmljb2RlX0NvbXBhcmUgUHlVbmljb2RlVUNTNF9Db21wYXJlCi0jIGRlZmluZSBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyBQeVVuaWNvZGVVQ1M0X0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKLSMgZGVmaW5lIFB5VW5pY29kZV9Db25jYXQgUHlVbmljb2RlVUNTNF9Db25jYXQKLSMgZGVmaW5lIFB5VW5pY29kZV9BcHBlbmQgUHlVbmljb2RlVUNTNF9BcHBlbmQKLSMgZGVmaW5lIFB5VW5pY29kZV9BcHBlbmRBbmREZWwgUHlVbmljb2RlVUNTNF9BcHBlbmRBbmREZWwKLSMgZGVmaW5lIFB5VW5pY29kZV9Db250YWlucyBQeVVuaWNvZGVVQ1M0X0NvbnRhaW5zCi0jIGRlZmluZSBQeVVuaWNvZGVfQ291bnQgUHlVbmljb2RlVUNTNF9Db3VudAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZSBQeVVuaWNvZGVVQ1M0X0RlY29kZQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUFTQ0lJIFB5VW5pY29kZVVDUzRfRGVjb2RlQVNDSUkKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwIFB5VW5pY29kZVVDUzRfRGVjb2RlQ2hhcm1hcAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUxhdGluMSBQeVVuaWNvZGVVQ1M0X0RlY29kZUxhdGluMQotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCBQeVVuaWNvZGVVQ1M0X0RlY29kZUZTRGVmYXVsdAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUgUHlVbmljb2RlVUNTNF9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZSBQeVVuaWNvZGVVQ1M0X0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYzMiBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjMyCi0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjMyU3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEYxNiBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjE2Ci0jIGRlZmluZSBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjE2U3RhdGVmdWwKLSMgZGVmaW5lIFB5VW5pY29kZV9EZWNvZGVVVEY4IFB5VW5pY29kZVVDUzRfRGVjb2RlVVRGOAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bCBQeVVuaWNvZGVVQ1M0X0RlY29kZVVURjhTdGF0ZWZ1bAotIyBkZWZpbmUgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUgUHlVbmljb2RlVUNTNF9EZWNvZGVVbmljb2RlRXNjYXBlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlIFB5VW5pY29kZVVDUzRfRW5jb2RlCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlQVNDSUkgUHlVbmljb2RlVUNTNF9FbmNvZGVBU0NJSQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZUNoYXJtYXAgUHlVbmljb2RlVUNTNF9FbmNvZGVDaGFybWFwCi0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbCBQeVVuaWNvZGVVQ1M0X0VuY29kZURlY2ltYWwKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEgUHlVbmljb2RlVUNTNF9FbmNvZGVMYXRpbjEKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRW5jb2RlUmF3VW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0VuY29kZVVURjMyIFB5VW5pY29kZVVDUzRfRW5jb2RlVVRGMzIKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVVEYxNiBQeVVuaWNvZGVVQ1M0X0VuY29kZVVURjE2Ci0jIGRlZmluZSBQeVVuaWNvZGVfRW5jb2RlVVRGOCBQeVVuaWNvZGVVQ1M0X0VuY29kZVVURjgKLSMgZGVmaW5lIFB5VW5pY29kZV9FbmNvZGVVbmljb2RlRXNjYXBlIFB5VW5pY29kZVVDUzRfRW5jb2RlVW5pY29kZUVzY2FwZQotIyBkZWZpbmUgUHlVbmljb2RlX0ZpbmQgUHlVbmljb2RlVUNTNF9GaW5kCi0jIGRlZmluZSBQeVVuaWNvZGVfRm9ybWF0IFB5VW5pY29kZVVDUzRfRm9ybWF0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QgUHlVbmljb2RlVUNTNF9Gcm9tRW5jb2RlZE9iamVjdAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Gb3JtYXQgUHlVbmljb2RlVUNTNF9Gcm9tRm9ybWF0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYgUHlVbmljb2RlVUNTNF9Gcm9tRm9ybWF0VgotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21PYmplY3QgUHlVbmljb2RlVUNTNF9Gcm9tT2JqZWN0Ci0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbU9yZGluYWwgUHlVbmljb2RlVUNTNF9Gcm9tT3JkaW5hbAotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21TdHJpbmcgUHlVbmljb2RlVUNTNF9Gcm9tU3RyaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUgUHlVbmljb2RlVUNTNF9Gcm9tU3RyaW5nQW5kU2l6ZQotIyBkZWZpbmUgUHlVbmljb2RlX0Zyb21Vbmljb2RlIFB5VW5pY29kZVVDUzRfRnJvbVVuaWNvZGUKLSMgZGVmaW5lIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgUHlVbmljb2RlVUNTNF9Gcm9tV2lkZUNoYXIKLSMgZGVmaW5lIFB5VW5pY29kZV9GU0NvbnZlcnRlciBQeVVuaWNvZGVVQ1M0X0ZTQ29udmVydGVyCi0jIGRlZmluZSBQeVVuaWNvZGVfRlNEZWNvZGVyIFB5VW5pY29kZVVDUzRfRlNEZWNvZGVyCi0jIGRlZmluZSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nIFB5VW5pY29kZVVDUzRfR2V0RGVmYXVsdEVuY29kaW5nCi0jIGRlZmluZSBQeVVuaWNvZGVfR2V0TWF4IFB5VW5pY29kZVVDUzRfR2V0TWF4Ci0jIGRlZmluZSBQeVVuaWNvZGVfR2V0U2l6ZSBQeVVuaWNvZGVVQ1M0X0dldFNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIgUHlVbmljb2RlVUNTNF9Jc0lkZW50aWZpZXIKLSMgZGVmaW5lIFB5VW5pY29kZV9Kb2luIFB5VW5pY29kZVVDUzRfSm9pbgotIyBkZWZpbmUgUHlVbmljb2RlX1BhcnRpdGlvbiBQeVVuaWNvZGVVQ1M0X1BhcnRpdGlvbgotIyBkZWZpbmUgUHlVbmljb2RlX1JQYXJ0aXRpb24gUHlVbmljb2RlVUNTNF9SUGFydGl0aW9uCi0jIGRlZmluZSBQeVVuaWNvZGVfUlNwbGl0IFB5VW5pY29kZVVDUzRfUlNwbGl0Ci0jIGRlZmluZSBQeVVuaWNvZGVfUmVwbGFjZSBQeVVuaWNvZGVVQ1M0X1JlcGxhY2UKLSMgZGVmaW5lIFB5VW5pY29kZV9SZXNpemUgUHlVbmljb2RlVUNTNF9SZXNpemUKLSMgZGVmaW5lIFB5VW5pY29kZV9SaWNoQ29tcGFyZSBQeVVuaWNvZGVVQ1M0X1JpY2hDb21wYXJlCi0jIGRlZmluZSBQeVVuaWNvZGVfU3BsaXQgUHlVbmljb2RlVUNTNF9TcGxpdAotIyBkZWZpbmUgUHlVbmljb2RlX1NwbGl0bGluZXMgUHlVbmljb2RlVUNTNF9TcGxpdGxpbmVzCi0jIGRlZmluZSBQeVVuaWNvZGVfVGFpbG1hdGNoIFB5VW5pY29kZVVDUzRfVGFpbG1hdGNoCi0jIGRlZmluZSBQeVVuaWNvZGVfVHJhbnNsYXRlIFB5VW5pY29kZVVDUzRfVHJhbnNsYXRlCi0jIGRlZmluZSBQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCBQeVVuaWNvZGVVQ1M0X1RyYW5zbGF0ZUNoYXJtYXAKLSMgZGVmaW5lIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyBfUHlVbmljb2RlVUNTNF9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nCi0jIGRlZmluZSBfUHlVbmljb2RlX0ZpbmkgX1B5VW5pY29kZVVDUzRfRmluaQotIyBkZWZpbmUgX1B5VW5pY29kZV9Jbml0IF9QeVVuaWNvZGVVQ1M0X0luaXQKLSMgZGVmaW5lIFB5VW5pY29kZV9zdHJkdXAgUHlVbmljb2RlVUNTNF9zdHJkdXAKLQorI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1M0IgogI2VuZGlmCiAKKyNpZiBTSVpFT0ZfU0hPUlQgPT0gMgordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBQeV9VQ1MyOworI2Vsc2UKKyNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTMiIKKyNlbmRpZgorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgUHlfVUNTMTsKKwogLyogLS0tIEludGVybmFsIFVuaWNvZGUgT3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKIC8qIFNpbmNlIHNwbGl0dGluZyBvbiB3aGl0ZXNwYWNlIGlzIGFuIGltcG9ydGFudCB1c2UgY2FzZSwgYW5kCkBAIC0zNTAsNyArMTcxLDcgQEAKICAgICBQeV9VTklDT0RFX0lTRElHSVQoY2gpIHx8IFwKICAgICBQeV9VTklDT0RFX0lTTlVNRVJJQyhjaCkpCiAKLSNkZWZpbmUgUHlfVU5JQ09ERV9DT1BZKHRhcmdldCwgc291cmNlLCBsZW5ndGgpICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgUHlfVU5JQ09ERV9DT1BZKHRhcmdldCwgc291cmNlLCBsZW5ndGgpIFwKICAgICBQeV9NRU1DUFkoKHRhcmdldCksIChzb3VyY2UpLCAobGVuZ3RoKSpzaXplb2YoUHlfVU5JQ09ERSkpCiAKICNkZWZpbmUgUHlfVU5JQ09ERV9GSUxMKHRhcmdldCwgdmFsdWUsIGxlbmd0aCkgXApAQCAtMzU4LDEzICsxNzksMjcgQEAKICAgICBmb3IgKGlfID0gMDsgaV8gPCAobGVuZ3RoKTsgaV8rKykgdF9baV9dID0gdl87XAogICAgIH0gd2hpbGUgKDApCiAKKy8qIG1hY3JvcyB0byB3b3JrIHdpdGggc3Vycm9nYXRlcyAqLworI2RlZmluZSBQeV9VTklDT0RFX0lTX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERGRkYpCisjZGVmaW5lIFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhEQkZGKQorI2RlZmluZSBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQorLyogSm9pbiB0d28gc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHJldHVybiBhIHNpbmdsZSBQeV9VQ1M0IHZhbHVlLiAqLworI2RlZmluZSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhoaWdoLCBsb3cpICBcCisgICAgKCgoKChQeV9VQ1M0KShoaWdoKSAmIDB4MDNGRikgPDwgMTApIHwgICAgICBcCisgICAgICAoKFB5X1VDUzQpKGxvdykgJiAweDAzRkYpKSArIDB4MTAwMDApCisvKiBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KKyNkZWZpbmUgUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCAtICgweDEwMDAwID4+IDEwKSArICgoY2gpID4+IDEwKSkKKy8qIGxvdyBzdXJyb2dhdGUgPSBib3R0b20gMTAgYml0cyBhZGRlZCB0byBEQzAwICovCisjZGVmaW5lIFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCkgKDB4REMwMCArICgoY2gpICYgMHgzRkYpKQorCiAvKiBDaGVjayBpZiBzdWJzdHJpbmcgbWF0Y2hlcyBhdCBnaXZlbiBvZmZzZXQuICBUaGUgb2Zmc2V0IG11c3QgYmUKICAgIHZhbGlkLCBhbmQgdGhlIHN1YnN0cmluZyBtdXN0IG5vdCBiZSBlbXB0eS4gKi8KIAogI2RlZmluZSBQeV9VTklDT0RFX01BVENIKHN0cmluZywgb2Zmc2V0LCBzdWJzdHJpbmcpIFwKLSAgICAoKCooKHN0cmluZyktPnN0ciArIChvZmZzZXQpKSA9PSAqKChzdWJzdHJpbmcpLT5zdHIpKSAmJiBcCi0gICAgKCgqKChzdHJpbmcpLT5zdHIgKyAob2Zmc2V0KSArIChzdWJzdHJpbmcpLT5sZW5ndGgtMSkgPT0gKigoc3Vic3RyaW5nKS0+c3RyICsgKHN1YnN0cmluZyktPmxlbmd0aC0xKSkpICYmIFwKLSAgICAgIW1lbWNtcCgoc3RyaW5nKS0+c3RyICsgKG9mZnNldCksIChzdWJzdHJpbmcpLT5zdHIsIChzdWJzdHJpbmcpLT5sZW5ndGgqc2l6ZW9mKFB5X1VOSUNPREUpKSkKKyAgICAoKCooKHN0cmluZyktPndzdHIgKyAob2Zmc2V0KSkgPT0gKigoc3Vic3RyaW5nKS0+d3N0cikpICYmIFwKKyAgICAgKCgqKChzdHJpbmcpLT53c3RyICsgKG9mZnNldCkgKyAoc3Vic3RyaW5nKS0+d3N0cl9sZW5ndGgtMSkgPT0gKigoc3Vic3RyaW5nKS0+d3N0ciArIChzdWJzdHJpbmcpLT53c3RyX2xlbmd0aC0xKSkpICYmIFwKKyAgICAgIW1lbWNtcCgoc3RyaW5nKS0+d3N0ciArIChvZmZzZXQpLCAoc3Vic3RyaW5nKS0+d3N0ciwgKHN1YnN0cmluZyktPndzdHJfbGVuZ3RoKnNpemVvZihQeV9VTklDT0RFKSkpCisKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTM3NCw0MSArMjA5LDM3NCBAQAogLyogLS0tIFVuaWNvZGUgVHlwZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKworLyogQVNDSUktb25seSBzdHJpbmdzIGNyZWF0ZWQgdGhyb3VnaCBQeVVuaWNvZGVfTmV3IHVzZSB0aGUgUHlBU0NJSU9iamVjdAorICAgc3RydWN0dXJlLiBzdGF0ZS5hc2NpaSBhbmQgc3RhdGUuY29tcGFjdCBhcmUgc2V0LCBhbmQgdGhlIGRhdGEKKyAgIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgc3RydWN0dXJlLiB1dGY4X2xlbmd0aCBhbmQgd3N0cl9sZW5ndGggY2FuIGJlIGZvdW5kCisgICBpbiB0aGUgbGVuZ3RoIGZpZWxkOyB0aGUgdXRmOCBwb2ludGVyIGlzIGVxdWFsIHRvIHRoZSBkYXRhIHBvaW50ZXIuICovCiB0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogVGhlcmUgYXJlIDQgZm9ybXMgb2YgVW5pY29kZSBzdHJpbmdzOgorCisgICAgICAgLSBjb21wYWN0IGFzY2lpOgorCisgICAgICAgICAqIHN0cnVjdHVyZSA9IFB5QVNDSUlPYmplY3QKKyAgICAgICAgICogdGVzdDogUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApCisgICAgICAgICAqIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgKiBjb21wYWN0ID0gMQorICAgICAgICAgKiBhc2NpaSA9IDEKKyAgICAgICAgICogcmVhZHkgPSAxCisgICAgICAgICAqIChsZW5ndGggaXMgdGhlIGxlbmd0aCBvZiB0aGUgdXRmOCBhbmQgd3N0ciBzdHJpbmdzKQorICAgICAgICAgKiAoZGF0YSBzdGFydHMganVzdCBhZnRlciB0aGUgc3RydWN0dXJlKQorICAgICAgICAgKiAoc2luY2UgQVNDSUkgaXMgZGVjb2RlZCBmcm9tIFVURi04LCB0aGUgdXRmOCBzdHJpbmcgYXJlIHRoZSBkYXRhKQorCisgICAgICAgLSBjb21wYWN0OgorCisgICAgICAgICAqIHN0cnVjdHVyZSA9IFB5Q29tcGFjdFVuaWNvZGVPYmplY3QKKyAgICAgICAgICogdGVzdDogUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApICYmICFQeVVuaWNvZGVfSVNfQVNDSUkob3ApCisgICAgICAgICAqIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORCwgUHlVbmljb2RlXzJCWVRFX0tJTkQgb3IKKyAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDEKKyAgICAgICAgICogcmVhZHkgPSAxCisgICAgICAgICAqIGFzY2lpID0gMAorICAgICAgICAgKiB1dGY4IGlzIG5vdCBzaGFyZWQgd2l0aCBkYXRhCisgICAgICAgICAqIHV0ZjhfbGVuZ3RoID0gMCBpZiB1dGY4IGlzIE5VTEwKKyAgICAgICAgICogd3N0ciBpcyBzaGFyZWQgd2l0aCBkYXRhIGFuZCB3c3RyX2xlbmd0aD1sZW5ndGgKKyAgICAgICAgICAgaWYga2luZD1QeVVuaWNvZGVfMkJZVEVfS0lORCBhbmQgc2l6ZW9mKHdjaGFyX3QpPTIKKyAgICAgICAgICAgb3IgaWYga2luZD1QeVVuaWNvZGVfNEJZVEVfS0lORCBhbmQgc2l6ZW9mKHdjaGFyX3QpPTQKKyAgICAgICAgICogd3N0cl9sZW5ndGggPSAwIGlmIHdzdHIgaXMgTlVMTAorICAgICAgICAgKiAoZGF0YSBzdGFydHMganVzdCBhZnRlciB0aGUgc3RydWN0dXJlKQorCisgICAgICAgLSBsZWdhY3kgc3RyaW5nLCBub3QgcmVhZHk6CisKKyAgICAgICAgICogc3RydWN0dXJlID0gUHlVbmljb2RlT2JqZWN0CisgICAgICAgICAqIHRlc3Q6IGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQKKyAgICAgICAgICogbGVuZ3RoID0gMCAodXNlIHdzdHJfbGVuZ3RoKQorICAgICAgICAgKiBoYXNoID0gLTEKKyAgICAgICAgICoga2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAqIGNvbXBhY3QgPSAwCisgICAgICAgICAqIGFzY2lpID0gMAorICAgICAgICAgKiByZWFkeSA9IDAKKyAgICAgICAgICogaW50ZXJuZWQgPSBTU1RBVEVfTk9UX0lOVEVSTkVECisgICAgICAgICAqIHdzdHIgaXMgbm90IE5VTEwKKyAgICAgICAgICogZGF0YS5hbnkgaXMgTlVMTAorICAgICAgICAgKiB1dGY4IGlzIE5VTEwKKyAgICAgICAgICogdXRmOF9sZW5ndGggPSAwCisKKyAgICAgICAtIGxlZ2FjeSBzdHJpbmcsIHJlYWR5OgorCisgICAgICAgICAqIHN0cnVjdHVyZSA9IFB5VW5pY29kZU9iamVjdCBzdHJ1Y3R1cmUKKyAgICAgICAgICogdGVzdDogIVB5VW5pY29kZV9JU19DT01QQUNUKG9wKSAmJiBraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5ECisgICAgICAgICAqIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORCwgUHlVbmljb2RlXzJCWVRFX0tJTkQgb3IKKyAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQKKyAgICAgICAgICogY29tcGFjdCA9IDAKKyAgICAgICAgICogcmVhZHkgPSAxCisgICAgICAgICAqIGRhdGEuYW55IGlzIG5vdCBOVUxMCisgICAgICAgICAqIHV0ZjggaXMgc2hhcmVkIGFuZCB1dGY4X2xlbmd0aCA9IGxlbmd0aCB3aXRoIGRhdGEuYW55IGlmIGFzY2lpID0gMQorICAgICAgICAgKiB1dGY4X2xlbmd0aCA9IDAgaWYgdXRmOCBpcyBOVUxMCisgICAgICAgICAqIHdzdHIgaXMgc2hhcmVkIHdpdGggZGF0YS5hbnkgYW5kIHdzdHJfbGVuZ3RoID0gbGVuZ3RoCisgICAgICAgICAgIGlmIGtpbmQ9UHlVbmljb2RlXzJCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl90KT0yCisgICAgICAgICAgIG9yIGlmIGtpbmQ9UHlVbmljb2RlXzRCWVRFX0tJTkQgYW5kIHNpemVvZih3Y2hhcl80KT00CisgICAgICAgICAqIHdzdHJfbGVuZ3RoID0gMCBpZiB3c3RyIGlzIE5VTEwKKworICAgICAgIENvbXBhY3Qgc3RyaW5ncyB1c2Ugb25seSBvbmUgbWVtb3J5IGJsb2NrIChzdHJ1Y3R1cmUgKyBjaGFyYWN0ZXJzKSwKKyAgICAgICB3aGVyZWFzIGxlZ2FjeSBzdHJpbmdzIHVzZSBvbmUgYmxvY2sgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIG9uZSBibG9jaworICAgICAgIGZvciBjaGFyYWN0ZXJzLgorCisgICAgICAgTGVnYWN5IHN0cmluZ3MgYXJlIGNyZWF0ZWQgYnkgUHlVbmljb2RlX0Zyb21Vbmljb2RlKCkgYW5kCisgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpIGZ1bmN0aW9ucy4gVGhleSBiZWNvbWUgcmVhZHkKKyAgICAgICB3aGVuIFB5VW5pY29kZV9SRUFEWSgpIGlzIGNhbGxlZC4KKworICAgICAgIFNlZSBhbHNvIF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSgpLgorICAgICovCiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgICAgICAgICAvKiBMZW5ndGggb2YgcmF3IFVuaWNvZGUgZGF0YSBpbiBidWZmZXIgKi8KLSAgICBQeV9VTklDT0RFICpzdHI7ICAgICAgICAgICAgLyogUmF3IFVuaWNvZGUgYnVmZmVyICovCisgICAgUHlfc3NpemVfdCBsZW5ndGg7ICAgICAgICAgIC8qIE51bWJlciBvZiBjb2RlIHBvaW50cyBpbiB0aGUgc3RyaW5nICovCiAgICAgUHlfaGFzaF90IGhhc2g7ICAgICAgICAgICAgIC8qIEhhc2ggdmFsdWU7IC0xIGlmIG5vdCBzZXQgKi8KLSAgICBpbnQgc3RhdGU7ICAgICAgICAgICAgICAgICAgLyogIT0gMCBpZiBpbnRlcm5lZC4gSW4gdGhpcyBjYXNlIHRoZSB0d28KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVmZXJlbmNlcyBmcm9tIHRoZSBkaWN0aW9uYXJ5IHRvIHRoaXMgb2JqZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFyZSAqbm90KiBjb3VudGVkIGluIG9iX3JlZmNudC4gKi8KLSAgICBQeU9iamVjdCAqZGVmZW5jOyAgICAgICAgICAgLyogKERlZmF1bHQpIEVuY29kZWQgdmVyc2lvbiBhcyBQeXRob24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLCBvciBOVUxMOyB0aGlzIGlzIHVzZWQgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGluZyB0aGUgYnVmZmVyIHByb3RvY29sICovCisgICAgc3RydWN0IHsKKyAgICAgICAgLyoKKyAgICAgICAgICAgU1NUQVRFX05PVF9JTlRFUk5FRCAoMCkKKyAgICAgICAgICAgU1NUQVRFX0lOVEVSTkVEX01PUlRBTCAoMSkKKyAgICAgICAgICAgU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMICgyKQorCisgICAgICAgICAgIElmIGludGVybmVkICE9IFNTVEFURV9OT1RfSU5URVJORUQsIHRoZSB0d28gcmVmZXJlbmNlcyBmcm9tIHRoZQorICAgICAgICAgICBkaWN0aW9uYXJ5IHRvIHRoaXMgb2JqZWN0IGFyZSAqbm90KiBjb3VudGVkIGluIG9iX3JlZmNudC4KKyAgICAgICAgICovCisgICAgICAgIHVuc2lnbmVkIGludCBpbnRlcm5lZDoyOworICAgICAgICAvKiBDaGFyYWN0ZXIgc2l6ZToKKworICAgICAgICAgICAtIFB5VW5pY29kZV9XQ0hBUl9LSU5EICgwKToKKworICAgICAgICAgICAgICogY2hhcmFjdGVyIHR5cGUgPSB3Y2hhcl90ICgxNiBvciAzMiBiaXRzLCBkZXBlbmRpbmcgb24gdGhlCisgICAgICAgICAgICAgICBwbGF0Zm9ybSkKKworICAgICAgICAgICAtIFB5VW5pY29kZV8xQllURV9LSU5EICgxKToKKworICAgICAgICAgICAgICogY2hhcmFjdGVyIHR5cGUgPSBQeV9VQ1MxICg4IGJpdHMsIHVuc2lnbmVkKQorICAgICAgICAgICAgICogYWxsIGNoYXJhY3RlcnMgYXJlIGluIHRoZSByYW5nZSBVKzAwMDAtVSswMEZGIChsYXRpbjEpCisgICAgICAgICAgICAgKiBpZiBhc2NpaSBpcyBzZXQsIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMDA3RgorICAgICAgICAgICAgICAgKEFTQ0lJKSwgb3RoZXJ3aXNlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaXMgaW4gdGhlIHJhbmdlCisgICAgICAgICAgICAgICBVKzAwODAtVSswMEZGCisKKyAgICAgICAgICAgLSBQeVVuaWNvZGVfMkJZVEVfS0lORCAoMik6CisKKyAgICAgICAgICAgICAqIGNoYXJhY3RlciB0eXBlID0gUHlfVUNTMiAoMTYgYml0cywgdW5zaWduZWQpCisgICAgICAgICAgICAgKiBhbGwgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHJhbmdlIFUrMDAwMC1VK0ZGRkYgKEJNUCkKKyAgICAgICAgICAgICAqIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaXMgaW4gdGhlIHJhbmdlIFUrMDEwMC1VK0ZGRkYKKworICAgICAgICAgICAtIFB5VW5pY29kZV80QllURV9LSU5EICg0KToKKworICAgICAgICAgICAgICogY2hhcmFjdGVyIHR5cGUgPSBQeV9VQ1M0ICgzMiBiaXRzLCB1bnNpZ25lZCkKKyAgICAgICAgICAgICAqIGFsbCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgcmFuZ2UgVSswMDAwLVUrMTBGRkZGCisgICAgICAgICAgICAgKiBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGlzIGluIHRoZSByYW5nZSBVKzEwMDAwLVUrMTBGRkZGCisgICAgICAgICAqLworICAgICAgICB1bnNpZ25lZCBpbnQga2luZDozOworICAgICAgICAvKiBDb21wYWN0IGlzIHdpdGggcmVzcGVjdCB0byB0aGUgYWxsb2NhdGlvbiBzY2hlbWUuIENvbXBhY3QgdW5pY29kZQorICAgICAgICAgICBvYmplY3RzIG9ubHkgcmVxdWlyZSBvbmUgbWVtb3J5IGJsb2NrIHdoaWxlIG5vbi1jb21wYWN0IG9iamVjdHMgdXNlCisgICAgICAgICAgIG9uZSBibG9jayBmb3IgdGhlIFB5VW5pY29kZU9iamVjdCBzdHJ1Y3QgYW5kIGFub3RoZXIgZm9yIGl0cyBkYXRhCisgICAgICAgICAgIGJ1ZmZlci4gKi8KKyAgICAgICAgdW5zaWduZWQgaW50IGNvbXBhY3Q6MTsKKyAgICAgICAgLyogVGhlIHN0cmluZyBvbmx5IGNvbnRhaW5zIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFUrMDAwMC1VKzAwN0YgKEFTQ0lJKQorICAgICAgICAgICBhbmQgdGhlIGtpbmQgaXMgUHlVbmljb2RlXzFCWVRFX0tJTkQuIElmIGFzY2lpIGlzIHNldCBhbmQgY29tcGFjdCBpcworICAgICAgICAgICBzZXQsIHVzZSB0aGUgUHlBU0NJSU9iamVjdCBzdHJ1Y3R1cmUuICovCisgICAgICAgIHVuc2lnbmVkIGludCBhc2NpaToxOworICAgICAgICAvKiBUaGUgcmVhZHkgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB0aGUgb2JqZWN0IGxheW91dCBpcyBpbml0aWFsaXplZAorICAgICAgICAgICBjb21wbGV0ZWx5LiBUaGlzIG1lYW5zIHRoYXQgdGhpcyBpcyBlaXRoZXIgYSBjb21wYWN0IG9iamVjdCwgb3IKKyAgICAgICAgICAgdGhlIGRhdGEgcG9pbnRlciBpcyBmaWxsZWQgb3V0LiBUaGUgYml0IGlzIHJlZHVuZGFudCwgYW5kIGhlbHBzCisgICAgICAgICAgIHRvIG1pbmltaXplIHRoZSB0ZXN0IGluIFB5VW5pY29kZV9JU19SRUFEWSgpLiAqLworICAgICAgICB1bnNpZ25lZCBpbnQgcmVhZHk6MTsKKyAgICB9IHN0YXRlOworICAgIHdjaGFyX3QgKndzdHI7ICAgICAgICAgICAgICAvKiB3Y2hhcl90IHJlcHJlc2VudGF0aW9uIChudWxsLXRlcm1pbmF0ZWQpICovCit9IFB5QVNDSUlPYmplY3Q7CisKKy8qIE5vbi1BU0NJSSBzdHJpbmdzIGFsbG9jYXRlZCB0aHJvdWdoIFB5VW5pY29kZV9OZXcgdXNlIHRoZQorICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCBzdHJ1Y3R1cmUuIHN0YXRlLmNvbXBhY3QgaXMgc2V0LCBhbmQgdGhlIGRhdGEKKyAgIGltbWVkaWF0ZWx5IGZvbGxvdyB0aGUgc3RydWN0dXJlLiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5QVNDSUlPYmplY3QgX2Jhc2U7CisgICAgUHlfc3NpemVfdCB1dGY4X2xlbmd0aDsgICAgIC8qIE51bWJlciBvZiBieXRlcyBpbiB1dGY4LCBleGNsdWRpbmcgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRlcm1pbmF0aW5nIFwwLiAqLworICAgIGNoYXIgKnV0Zjg7ICAgICAgICAgICAgICAgICAvKiBVVEYtOCByZXByZXNlbnRhdGlvbiAobnVsbC10ZXJtaW5hdGVkKSAqLworICAgIFB5X3NzaXplX3Qgd3N0cl9sZW5ndGg7ICAgICAvKiBOdW1iZXIgb2YgY29kZSBwb2ludHMgaW4gd3N0ciwgcG9zc2libGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3Vycm9nYXRlcyBjb3VudCBhcyB0d28gY29kZSBwb2ludHMuICovCit9IFB5Q29tcGFjdFVuaWNvZGVPYmplY3Q7CisKKy8qIFN0cmluZ3MgYWxsb2NhdGVkIHRocm91Z2ggUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIGxlbikgdXNlIHRoZQorICAgUHlVbmljb2RlT2JqZWN0IHN0cnVjdHVyZS4gVGhlIGFjdHVhbCBzdHJpbmcgZGF0YSBpcyBpbml0aWFsbHkgaW4gdGhlIHdzdHIKKyAgIGJsb2NrLCBhbmQgY29waWVkIGludG8gdGhlIGRhdGEgYmxvY2sgdXNpbmcgX1B5VW5pY29kZV9SZWFkeS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeUNvbXBhY3RVbmljb2RlT2JqZWN0IF9iYXNlOworICAgIHVuaW9uIHsKKyAgICAgICAgdm9pZCAqYW55OworICAgICAgICBQeV9VQ1MxICpsYXRpbjE7CisgICAgICAgIFB5X1VDUzIgKnVjczI7CisgICAgICAgIFB5X1VDUzQgKnVjczQ7CisgICAgfSBkYXRhOyAgICAgICAgICAgICAgICAgICAgIC8qIENhbm9uaWNhbCwgc21hbGxlc3QtZm9ybSBVbmljb2RlIGJ1ZmZlciAqLwogfSBQeVVuaWNvZGVPYmplY3Q7CiAjZW5kaWYKIAogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VW5pY29kZV9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIFB5VW5pY29kZUl0ZXJfVHlwZTsKIAotI2RlZmluZSBTU1RBVEVfTk9UX0lOVEVSTkVEIDAKLSNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX01PUlRBTCAxCi0jZGVmaW5lIFNTVEFURV9JTlRFUk5FRF9JTU1PUlRBTCAyCi0KICNkZWZpbmUgUHlVbmljb2RlX0NoZWNrKG9wKSBcCiAgICAgICAgICAgICAgICAgIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfVU5JQ09ERV9TVUJDTEFTUykKICNkZWZpbmUgUHlVbmljb2RlX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlVbmljb2RlX1R5cGUpCiAKIC8qIEZhc3QgYWNjZXNzIG1hY3JvcyAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotI2RlZmluZSBQeVVuaWNvZGVfR0VUX1NJWkUob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5sZW5ndGgpKQorCisjZGVmaW5lIFB5VW5pY29kZV9XU1RSX0xFTkdUSChvcCkgXAorICAgIChQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvcCkgPyAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0KilvcCktPmxlbmd0aCA6ICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopb3ApLT53c3RyX2xlbmd0aCkKKworLyogUmV0dXJucyB0aGUgZGVwcmVjYXRlZCBQeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uJ3Mgc2l6ZSBpbiBjb2RlIHVuaXRzCisgICAodGhpcyBpbmNsdWRlcyBzdXJyb2dhdGUgcGFpcnMgYXMgMiB1bml0cykuCisgICBJZiB0aGUgUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpcyBub3QgYXZhaWxhYmxlLCBpdCB3aWxsIGJlIGNvbXB1dGVkCisgICBvbiByZXF1ZXN0LiAgVXNlIFB5VW5pY29kZV9HRVRfTEVOR1RIKCkgZm9yIHRoZSBsZW5ndGggaW4gY29kZSBwb2ludHMuICovCisKKyNkZWZpbmUgUHlVbmljb2RlX0dFVF9TSVpFKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksICAgICAgICAgICAgICAgICAgICBcCisgICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0cikgPyAgICAgICAgICAgICAgIFwKKyAgICAgIFB5VW5pY29kZV9XU1RSX0xFTkdUSChvcCkgOiAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKCh2b2lkKVB5VW5pY29kZV9Bc1VuaWNvZGUoKFB5T2JqZWN0ICopKG9wKSksICBcCisgICAgICAgYXNzZXJ0KCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT53c3RyKSwgICAgICAgIFwKKyAgICAgICBQeVVuaWNvZGVfV1NUUl9MRU5HVEgob3ApKSkKKwogI2RlZmluZSBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRShvcCkgXAotICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksKCgoUHlVbmljb2RlT2JqZWN0ICopKG9wKSktPmxlbmd0aCAqIHNpemVvZihQeV9VTklDT0RFKSkpCisgICAgKFB5VW5pY29kZV9HRVRfU0laRShvcCkgKiBQeV9VTklDT0RFX1NJWkUpCisKKy8qIEFsaWFzIGZvciBQeVVuaWNvZGVfQXNVbmljb2RlKCkuICBUaGlzIHdpbGwgY3JlYXRlIGEgd2NoYXJfdC9QeV9VTklDT0RFCisgICByZXByZXNlbnRhdGlvbiBvbiBkZW1hbmQuICBVc2luZyB0aGlzIG1hY3JvIGlzIHZlcnkgaW5lZmZpY2llbnQgbm93LAorICAgdHJ5IHRvIHBvcnQgeW91ciBjb2RlIHRvIHVzZSB0aGUgbmV3IFB5VW5pY29kZV8qQllURV9EQVRBKCkgbWFjcm9zIG9yCisgICB1c2UgUHlVbmljb2RlX1dSSVRFKCkgYW5kIFB5VW5pY29kZV9SRUFEKCkuICovCisKICNkZWZpbmUgUHlVbmljb2RlX0FTX1VOSUNPREUob3ApIFwKLSAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCgoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5zdHIpKQorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksIFwKKyAgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT53c3RyKSA/ICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+d3N0cikgOiBcCisgICAgICBQeVVuaWNvZGVfQXNVbmljb2RlKChQeU9iamVjdCAqKShvcCkpKQorCiAjZGVmaW5lIFB5VW5pY29kZV9BU19EQVRBKG9wKSBcCi0gICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sob3ApKSwoKGNvbnN0IGNoYXIgKikoKFB5VW5pY29kZU9iamVjdCAqKShvcCkpLT5zdHIpKQorICAgICgoY29uc3QgY2hhciAqKShQeVVuaWNvZGVfQVNfVU5JQ09ERShvcCkpKQorCisKKy8qIC0tLSBGbGV4aWJsZSBTdHJpbmcgUmVwcmVzZW50YXRpb24gSGVscGVyIE1hY3JvcyAoUEVQIDM5MykgLS0tLS0tLS0tLS0tLS0gKi8KKworLyogVmFsdWVzIGZvciBQeUFTQ0lJT2JqZWN0LnN0YXRlOiAqLworCisvKiBJbnRlcm5pbmcgc3RhdGUuICovCisjZGVmaW5lIFNTVEFURV9OT1RfSU5URVJORUQgMAorI2RlZmluZSBTU1RBVEVfSU5URVJORURfTU9SVEFMIDEKKyNkZWZpbmUgU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMIDIKKworLyogUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBjb250YWlucyBvbmx5IEFTQ0lJIGNoYXJhY3RlcnMsIG9yIDAgaWYgbm90LiBUaGUKKyAgIHN0cmluZyBtYXkgYmUgY29tcGFjdCAoUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkpIG9yIG5vdCwgYnV0IG11c3QgYmUKKyAgIHJlYWR5LiAqLworI2RlZmluZSBQeVVuaWNvZGVfSVNfQVNDSUkob3ApICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QqKW9wKS0+c3RhdGUuYXNjaWkpCisKKy8qIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgY29tcGFjdCBvciAwIGlmIG5vdC4KKyAgIE5vIHR5cGUgY2hlY2tzIG9yIFJlYWR5IGNhbGxzIGFyZSBwZXJmb3JtZWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9JU19DT01QQUNUKG9wKSBcCisgICAgKCgoUHlBU0NJSU9iamVjdCopKG9wKSktPnN0YXRlLmNvbXBhY3QpCisKKy8qIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSBjb21wYWN0IEFTQ0lJIHN0cmluZyAodXNlIFB5QVNDSUlPYmplY3QKKyAgIHN0cnVjdHVyZSksIG9yIDAgaWYgbm90LiAgTm8gdHlwZSBjaGVja3Mgb3IgUmVhZHkgY2FsbHMgYXJlIHBlcmZvcm1lZC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCopb3ApLT5zdGF0ZS5hc2NpaSAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVChvcCkpCisKK2VudW0gUHlVbmljb2RlX0tpbmQgeworLyogU3RyaW5nIGNvbnRhaW5zIG9ubHkgd3N0ciBieXRlIGNoYXJhY3RlcnMuICBUaGlzIGlzIG9ubHkgcG9zc2libGUKKyAgIHdoZW4gdGhlIHN0cmluZyB3YXMgY3JlYXRlZCB3aXRoIGEgbGVnYWN5IEFQSSBhbmQgX1B5VW5pY29kZV9SZWFkeSgpCisgICBoYXMgbm90IGJlZW4gY2FsbGVkIHlldC4gICovCisgICAgUHlVbmljb2RlX1dDSEFSX0tJTkQgPSAwLAorLyogUmV0dXJuIHZhbHVlcyBvZiB0aGUgUHlVbmljb2RlX0tJTkQoKSBtYWNybzogKi8KKyAgICBQeVVuaWNvZGVfMUJZVEVfS0lORCA9IDEsCisgICAgUHlVbmljb2RlXzJCWVRFX0tJTkQgPSAyLAorICAgIFB5VW5pY29kZV80QllURV9LSU5EID0gNAorfTsKKworLyogUmV0dXJuIHBvaW50ZXJzIHRvIHRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gY2FzdCB0byB1bnNpZ25lZCBjaGFyLAorICAgUHlfVUNTMiwgb3IgUHlfVUNTNCBmb3IgZGlyZWN0IGNoYXJhY3RlciBhY2Nlc3MuCisgICBObyBjaGVja3MgYXJlIHBlcmZvcm1lZCwgdXNlIFB5VW5pY29kZV9LSU5EKCkgYmVmb3JlIHRvIGVuc3VyZQorICAgdGhlc2Ugd2lsbCB3b3JrIGNvcnJlY3RseS4gKi8KKworI2RlZmluZSBQeVVuaWNvZGVfMUJZVEVfREFUQShvcCkgKChQeV9VQ1MxKilQeVVuaWNvZGVfREFUQShvcCkpCisjZGVmaW5lIFB5VW5pY29kZV8yQllURV9EQVRBKG9wKSAoKFB5X1VDUzIqKVB5VW5pY29kZV9EQVRBKG9wKSkKKyNkZWZpbmUgUHlVbmljb2RlXzRCWVRFX0RBVEEob3ApICgoUHlfVUNTNCopUHlVbmljb2RlX0RBVEEob3ApKQorCisvKiBSZXR1cm4gb25lIG9mIHRoZSBQeVVuaWNvZGVfKl9LSU5EIHZhbHVlcyBkZWZpbmVkIGFib3ZlLiAqLworI2RlZmluZSBQeVVuaWNvZGVfS0lORChvcCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmtpbmQpCisKKy8qIFJldHVybiBhIHZvaWQgcG9pbnRlciB0byB0aGUgcmF3IHVuaWNvZGUgYnVmZmVyLiAqLworI2RlZmluZSBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQShvcCkgICAgICAgICAgICAgICAgICAgICBcCisgICAgKFB5VW5pY29kZV9JU19BU0NJSShvcCkgPyAgICAgICAgICAgICAgICAgICBcCisgICAgICgodm9pZCopKChQeUFTQ0lJT2JqZWN0Kikob3ApICsgMSkpIDogICAgICAgICAgICAgIFwKKyAgICAgKCh2b2lkKikoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKShvcCkgKyAxKSkpCisKKyNkZWZpbmUgX1B5VW5pY29kZV9OT05DT01QQUNUX0RBVEEob3ApICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoKChQeVVuaWNvZGVPYmplY3QqKShvcCkpLT5kYXRhLmFueSksICAgICAgICBcCisgICAgICgoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+ZGF0YS5hbnkpKSkKKworI2RlZmluZSBQeVVuaWNvZGVfREFUQShvcCkgXAorICAgIChhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSksIFwKKyAgICAgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApID8gX1B5VW5pY29kZV9DT01QQUNUX0RBVEEob3ApIDogICBcCisgICAgIF9QeVVuaWNvZGVfTk9OQ09NUEFDVF9EQVRBKG9wKSkKKworLyogSW4gdGhlIGFjY2VzcyBtYWNyb3MgYmVsb3csICJraW5kIiBtYXkgYmUgZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNlLgorICAgQWxsIG90aGVyIG1hY3JvIHBhcmFtZXRlcnMgYXJlIGV2YWx1YXRlZCBleGFjdGx5IG9uY2UsIHNvIGl0IGlzIHNhZmUKKyAgIHRvIHB1dCBzaWRlIGVmZmVjdHMgaW50byB0aGVtIChzdWNoIGFzIGluY3JlYXNpbmcgdGhlIGluZGV4KS4gKi8KKworLyogV3JpdGUgaW50byB0aGUgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uLCB0aGlzIG1hY3JvIGRvZXMgbm90IGRvIGFueSBzYW5pdHkKKyAgIGNoZWNrcyBhbmQgaXMgaW50ZW5kZWQgZm9yIHVzYWdlIGluIGxvb3BzLiAgVGhlIGNhbGxlciBzaG91bGQgY2FjaGUgdGhlCisgICBraW5kIGFuZCBkYXRhIHBvaW50ZXJzIG9idGFpbmVkIGZyb20gb3RoZXIgbWFjcm8gY2FsbHMuCisgICBpbmRleCBpcyB0aGUgaW5kZXggaW4gdGhlIHN0cmluZyAoc3RhcnRzIGF0IDApIGFuZCB2YWx1ZSBpcyB0aGUgbmV3CisgICBjb2RlIHBvaW50IHZhbHVlIHdoaWNoIHNob3VsZCBiZSB3cml0dGVuIHRvIHRoYXQgbG9jYXRpb24uICovCisjZGVmaW5lIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpbmRleCwgdmFsdWUpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgc3dpdGNoICgoa2luZCkpIHsgXAorICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgICgoUHlfVUNTMSAqKShkYXRhKSlbKGluZGV4KV0gPSAoUHlfVUNTMSkodmFsdWUpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeyBcCisgICAgICAgICAgICAoKFB5X1VDUzIgKikoZGF0YSkpWyhpbmRleCldID0gKFB5X1VDUzIpKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgfSBcCisgICAgICAgIGRlZmF1bHQ6IHsgXAorICAgICAgICAgICAgYXNzZXJ0KChraW5kKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7IFwKKyAgICAgICAgICAgICgoUHlfVUNTNCAqKShkYXRhKSlbKGluZGV4KV0gPSAoUHlfVUNTNCkodmFsdWUpOyBcCisgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCisvKiBSZWFkIGEgY29kZSBwb2ludCBmcm9tIHRoZSBzdHJpbmcncyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24uICBObyBjaGVja3MKKyAgIG9yIHJlYWR5IGNhbGxzIGFyZSBwZXJmb3JtZWQuICovCisjZGVmaW5lIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KSBcCisgICAgKChQeV9VQ1M0KSBcCisgICAgKChraW5kKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCA/IFwKKyAgICAgICAgKChjb25zdCBQeV9VQ1MxICopKGRhdGEpKVsoaW5kZXgpXSA6IFwKKyAgICAgICAgKChraW5kKSA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCA/IFwKKyAgICAgICAgICAgICgoY29uc3QgUHlfVUNTMiAqKShkYXRhKSlbKGluZGV4KV0gOiBcCisgICAgICAgICAgICAoKGNvbnN0IFB5X1VDUzQgKikoZGF0YSkpWyhpbmRleCldIFwKKyAgICAgICAgKSBcCisgICAgKSkKKworLyogUHlVbmljb2RlX1JFQURfQ0hBUigpIGlzIGxlc3MgZWZmaWNpZW50IHRoYW4gUHlVbmljb2RlX1JFQUQoKSBiZWNhdXNlIGl0CisgICBjYWxscyBQeVVuaWNvZGVfS0lORCgpIGFuZCBtaWdodCBjYWxsIGl0IHR3aWNlLiAgRm9yIHNpbmdsZSByZWFkcywgdXNlCisgICBQeVVuaWNvZGVfUkVBRF9DSEFSLCBmb3IgbXVsdGlwbGUgY29uc2VjdXRpdmUgcmVhZHMgY2FsbGVycyBzaG91bGQKKyAgIGNhY2hlIGtpbmQgYW5kIHVzZSBQeVVuaWNvZGVfUkVBRCBpbnN0ZWFkLiAqLworI2RlZmluZSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGluZGV4KSBcCisgICAgKGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpLCAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpLCAgICAgICBcCisgICAgIChQeV9VQ1M0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIChQeVVuaWNvZGVfS0lORCgodW5pY29kZSkpID09IFB5VW5pY29kZV8xQllURV9LSU5EID8gXAorICAgICAgICAgICAgKChjb25zdCBQeV9VQ1MxICopKFB5VW5pY29kZV9EQVRBKCh1bmljb2RlKSkpKVsoaW5kZXgpXSA6IFwKKyAgICAgICAgICAgIChQeVVuaWNvZGVfS0lORCgodW5pY29kZSkpID09IFB5VW5pY29kZV8yQllURV9LSU5EID8gXAorICAgICAgICAgICAgICAgICgoY29uc3QgUHlfVUNTMiAqKShQeVVuaWNvZGVfREFUQSgodW5pY29kZSkpKSlbKGluZGV4KV0gOiBcCisgICAgICAgICAgICAgICAgKChjb25zdCBQeV9VQ1M0ICopKFB5VW5pY29kZV9EQVRBKCh1bmljb2RlKSkpKVsoaW5kZXgpXSBcCisgICAgICAgICAgICApIFwKKyAgICAgICAgKSkKKworLyogUmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSB1bmljb2RlIHN0cmluZy4gVGhlIGNhbGxlciBoYXMgdG8gbWFrZSBzdXJlIHRoYXQKKyAgIHRoZSBzdHJpbmcgaGFzIGl0J3MgY2Fub25pY2FsIHJlcHJlc2VudGF0aW9uIHNldCBiZWZvcmUgY2FsbGluZworICAgdGhpcyBtYWNyby4gIENhbGwgUHlVbmljb2RlXyhGQVNUXylSZWFkeSB0byBlbnN1cmUgdGhhdC4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX0dFVF9MRU5HVEgob3ApICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCAgICAgICAgICAgICAgIFwKKyAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPmxlbmd0aCkKKworCisvKiBGYXN0IGNoZWNrIHRvIGRldGVybWluZSB3aGV0aGVyIGFuIG9iamVjdCBpcyByZWFkeS4gRXF1aXZhbGVudCB0bworICAgUHlVbmljb2RlX0lTX0NPTVBBQ1Qob3ApIHx8ICgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpICovCisKKyNkZWZpbmUgUHlVbmljb2RlX0lTX1JFQURZKG9wKSAoKChQeUFTQ0lJT2JqZWN0KilvcCktPnN0YXRlLnJlYWR5KQorCisvKiBQeVVuaWNvZGVfUkVBRFkoKSBkb2VzIGxlc3Mgd29yayB0aGFuIF9QeVVuaWNvZGVfUmVhZHkoKSBpbiB0aGUgYmVzdAorICAgY2FzZS4gIElmIHRoZSBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24gaXMgbm90IHlldCBzZXQsIGl0IHdpbGwgc3RpbGwgY2FsbAorICAgX1B5VW5pY29kZV9SZWFkeSgpLgorICAgUmV0dXJucyAwIG9uIHN1Y2Nlc3MgYW5kIC0xIG9uIGVycm9ycy4gKi8KKyNkZWZpbmUgUHlVbmljb2RlX1JFQURZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvcCkpLCAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoUHlVbmljb2RlX0lTX1JFQURZKG9wKSA/ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAwIDogX1B5VW5pY29kZV9SZWFkeSgoUHlPYmplY3QgKikob3ApKSkpCisKKy8qIFJldHVybiBhIG1heGltdW0gY2hhcmFjdGVyIHZhbHVlIHdoaWNoIGlzIHN1aXRhYmxlIGZvciBjcmVhdGluZyBhbm90aGVyCisgICBzdHJpbmcgYmFzZWQgb24gb3AuICBUaGlzIGlzIGFsd2F5cyBhbiBhcHByb3hpbWF0aW9uIGJ1dCBtb3JlIGVmZmljaWVudAorICAgdGhhbiBpdGVyYXRpbmcgb3ZlciB0aGUgc3RyaW5nLiAqLworI2RlZmluZSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob3ApIFwKKyAgICAoYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShvcCkpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKFB5VW5pY29kZV9JU19BU0NJSShvcCkgPyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICgweDdmKSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIChQeVVuaWNvZGVfS0lORChvcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQgPyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoMHhmZlUpIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAoUHlVbmljb2RlX0tJTkQob3ApID09IFB5VW5pY29kZV8yQllURV9LSU5EID8gICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKDB4ZmZmZlUpIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKDB4MTBmZmZmVSkpKSkpCisKICNlbmRpZgogCiAvKiAtLS0gQ29uc3RhbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTQxOCwxMiArNTg2LDEwNyBAQAogICAgVW5pY29kZSBjaGFyYWN0ZXIgVStGRkZEIGlzIHRoZSBvZmZpY2lhbCBSRVBMQUNFTUVOVCBDSEFSQUNURVIgaW4KICAgIFVuaWNvZGUgMy4wLiAqLwogCi0jZGVmaW5lIFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSICgoUHlfVU5JQ09ERSkgMHhGRkZEKQorI2RlZmluZSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUiAoKFB5X1VDUzQpIDB4RkZGRCkKIAogLyogPT09IFB1YmxpYyBBUEkgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKIC8qIC0tLSBQbGFpbiBQeV9VTklDT0RFIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCisvKiBXaXRoIFBFUCAzOTMsIHRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIHdheSB0byBhbGxvY2F0ZSBhIG5ldyB1bmljb2RlIG9iamVjdC4KKyAgIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZSB0aGUgb2JqZWN0IGFuZCBpdHMgYnVmZmVyIGluIGEgc2luZ2xlIG1lbW9yeQorICAgYmxvY2suICBPYmplY3RzIGNyZWF0ZWQgdXNpbmcgdGhpcyBmdW5jdGlvbiBhcmUgbm90IHJlc2l6YWJsZS4gKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfTmV3KAorICAgIFB5X3NzaXplX3Qgc2l6ZSwgICAgICAgICAgICAvKiBOdW1iZXIgb2YgY29kZSBwb2ludHMgaW4gdGhlIG5ldyBzdHJpbmcgKi8KKyAgICBQeV9VQ1M0IG1heGNoYXIgICAgICAgICAgICAgLyogbWF4aW11bSBjb2RlIHBvaW50IHZhbHVlIGluIHRoZSBzdHJpbmcgKi8KKyAgICApOworI2VuZGlmCisKKy8qIEluaXRpYWxpemVzIHRoZSBjYW5vbmljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZyb20gYSB0aGUgZGVwcmVjYXRlZAorICAgd3N0ci9QeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29udmVydCBVbmljb2RlCisgICBvYmplY3RzIHdoaWNoIHdlcmUgY3JlYXRlZCB1c2luZyB0aGUgb2xkIEFQSSB0byB0aGUgbmV3IGZsZXhpYmxlIGZvcm1hdAorICAgaW50cm9kdWNlZCB3aXRoIFBFUCAzOTMuCisKKyAgIERvbid0IGNhbGwgdGhpcyBmdW5jdGlvbiBkaXJlY3RseSwgdXNlIHRoZSBwdWJsaWMgUHlVbmljb2RlX1JFQURZKCkgbWFjcm8KKyAgIGluc3RlYWQuICovCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9SZWFkeSgKKyAgICBQeU9iamVjdCAqdW5pY29kZSAgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICApOworI2VuZGlmCisKKy8qIEdldCBhIGNvcHkgb2YgYSBVbmljb2RlIHN0cmluZy4gKi8KKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0NvcHkoCisgICAgUHlPYmplY3QgKnVuaWNvZGUKKyAgICApOworI2VuZGlmCisKKy8qIENvcHkgY2hhcmFjdGVyIGZyb20gb25lIHVuaWNvZGUgb2JqZWN0IGludG8gYW5vdGhlciwgdGhpcyBmdW5jdGlvbiBwZXJmb3JtcworICAgY2hhcmFjdGVyIGNvbnZlcnNpb24gd2hlbiBuZWNlc3NhcnkgYW5kIGZhbGxzIGJhY2sgdG8gbWVtY3B5KCkgaWYgcG9zc2libGUuCisKKyAgIEZhaWwgaWYgdG8gaXMgdG9vIHNtYWxsIChzbWFsbGVyIHRoYW4gKmhvd19tYW55KiBvciBzbWFsbGVyIHRoYW4KKyAgIGxlbihmcm9tKS1mcm9tX3N0YXJ0KSwgb3IgaWYga2luZChmcm9tW2Zyb21fc3RhcnQ6ZnJvbV9zdGFydCtob3dfbWFueV0pID4KKyAgIGtpbmQodG8pLCBvciBpZiAqdG8qIGhhcyBtb3JlIHRoYW4gMSByZWZlcmVuY2UuCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gY2hhcmFjdGVyLCBvciByZXR1cm4gLTEgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgb24gZXJyb3IuCisKKyAgIFBzZXVkby1jb2RlOgorCisgICAgICAgaG93X21hbnkgPSBtaW4oaG93X21hbnksIGxlbihmcm9tKSAtIGZyb21fc3RhcnQpCisgICAgICAgdG9bdG9fc3RhcnQ6dG9fc3RhcnQraG93X21hbnldID0gZnJvbVtmcm9tX3N0YXJ0OmZyb21fc3RhcnQraG93X21hbnldCisgICAgICAgcmV0dXJuIGhvd19tYW55CisKKyAgIE5vdGU6IFRoZSBmdW5jdGlvbiBkb2Vzbid0IHdyaXRlIGEgdGVybWluYXRpbmcgbnVsbCBjaGFyYWN0ZXIuCisgICAqLworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMoCisgICAgUHlPYmplY3QgKnRvLAorICAgIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgUHlPYmplY3QgKmZyb20sCisgICAgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LAorICAgIFB5X3NzaXplX3QgaG93X21hbnkKKyAgICApOworCisvKiBVbnNhZmUgdmVyc2lvbiBvZiBQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMoKTogZG9uJ3QgY2hlY2sgYXJndW1lbnRzIGFuZCBzbworICAgbWF5IGNyYXNoIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgKGUuZy4gaWYgdGhlIG91dHB1dCBzdHJpbmcKKyAgIGlzIHRvbyBzaG9ydCkuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKAorICAgIFB5T2JqZWN0ICp0bywKKyAgICBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgIFB5T2JqZWN0ICpmcm9tLAorICAgIFB5X3NzaXplX3QgZnJvbV9zdGFydCwKKyAgICBQeV9zc2l6ZV90IGhvd19tYW55CisgICAgKTsKKyNlbmRpZgorCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisvKiBGaWxsIGEgc3RyaW5nIHdpdGggYSBjaGFyYWN0ZXI6IHdyaXRlIGZpbGxfY2hhciBpbnRvCisgICB1bmljb2RlW3N0YXJ0OnN0YXJ0K2xlbmd0aF0uCisKKyAgIEZhaWwgaWYgZmlsbF9jaGFyIGlzIGJpZ2dlciB0aGFuIHRoZSBzdHJpbmcgbWF4aW11bSBjaGFyYWN0ZXIsIG9yIGlmIHRoZQorICAgc3RyaW5nIGhhcyBtb3JlIHRoYW4gMSByZWZlcmVuY2UuCisKKyAgIFJldHVybiB0aGUgbnVtYmVyIG9mIHdyaXR0ZW4gY2hhcmFjdGVyLCBvciByZXR1cm4gLTEgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9GaWxsKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgUHlfVUNTNCBmaWxsX2NoYXIKKyAgICApOworCisvKiBVbnNhZmUgdmVyc2lvbiBvZiBQeVVuaWNvZGVfRmlsbCgpOiBkb24ndCBjaGVjayBhcmd1bWVudHMgYW5kIHNvIG1heSBjcmFzaAorICAgaWYgcGFyYW1ldGVycyBhcmUgaW52YWxpZCAoZS5nLiBpZiBsZW5ndGggaXMgbG9uZ2VyIHRoYW4gdGhlIHN0cmluZykuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfRmFzdEZpbGwoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICBQeV9VQ1M0IGZpbGxfY2hhcgorICAgICk7CisjZW5kaWYKKwogLyogQ3JlYXRlIGEgVW5pY29kZSBPYmplY3QgZnJvbSB0aGUgUHlfVU5JQ09ERSBidWZmZXIgdSBvZiB0aGUgZ2l2ZW4KICAgIHNpemUuCiAKQEAgLTQ0OCwxMyArNzExLDYwIEBACiAgICAgKTsKIAogLyogU2ltaWxhciB0byBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKSwgYnV0IHUgcG9pbnRzIHRvIG51bGwtdGVybWluYXRlZAotICAgVVRGLTggZW5jb2RlZCBieXRlcyAqLworICAgVVRGLTggZW5jb2RlZCBieXRlcy4gIFRoZSBzaXplIGlzIGRldGVybWluZWQgd2l0aCBzdHJsZW4oKS4gKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRnJvbVN0cmluZygKICAgICBjb25zdCBjaGFyICp1ICAgICAgICAgICAgICAvKiBVVEYtOCBlbmNvZGVkIHN0cmluZyAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKKy8qIENyZWF0ZSBhIG5ldyBzdHJpbmcgZnJvbSBhIGJ1ZmZlciBvZiBQeV9VQ1MxLCBQeV9VQ1MyIG9yIFB5X1VDUzQgY2hhcmFjdGVycy4KKyAgIFNjYW4gdGhlIHN0cmluZyB0byBmaW5kIHRoZSBtYXhpbXVtIGNoYXJhY3Rlci4gKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgIGludCBraW5kLAorICAgIGNvbnN0IHZvaWQgKmJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IHNpemUpOworCisvKiBDcmVhdGUgYSBuZXcgc3RyaW5nIGZyb20gYSBidWZmZXIgb2YgQVNDSUkgY2hhcmFjdGVycy4KKyAgIFdBUk5JTkc6IERvbid0IGNoZWNrIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgYW55IG5vbi1BU0NJSSBjaGFyYWN0ZXIuICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Gcm9tQVNDSUkoCisgICAgY29uc3QgY2hhciAqYnVmZmVyLAorICAgIFB5X3NzaXplX3Qgc2l6ZSk7CisjZW5kaWYKKworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9TdWJzdHJpbmcoCisgICAgUHlPYmplY3QgKnN0ciwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogQ29tcHV0ZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgb2YgdGhlIHN1YnN0cmluZyB1bmljb2RlW3N0YXJ0OmVuZF0uCisgICBSZXR1cm4gMTI3IGZvciBhbiBlbXB0eSBzdHJpbmcuICovCitQeUFQSV9GVU5DKFB5X1VDUzQpIF9QeVVuaWNvZGVfRmluZE1heENoYXIgKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgUHlfc3NpemVfdCBlbmQpOworI2VuZGlmCisKKy8qIENvcHkgdGhlIHN0cmluZyBpbnRvIGEgVUNTNCBidWZmZXIgaW5jbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpZiBjb3B5X251bGwKKyAgIGlzIHNldC4gUmV0dXJuIE5VTEwgYW5kIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gUmFpc2UgYSBWYWx1ZUVycm9yIGlmCisgICB0aGUgYnVmZmVyIGlzIHNtYWxsZXIgdGhhbiB0aGUgc3RyaW5nLiBSZXR1cm4gYnVmZmVyIG9uIHN1Y2Nlc3MuCisKKyAgIGJ1ZmxlbiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgaW4gKFB5X1VDUzQpIGNoYXJhY3RlcnMuICovCitQeUFQSV9GVU5DKFB5X1VDUzQqKSBQeVVuaWNvZGVfQXNVQ1M0KAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIFB5X1VDUzQqIGJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IGJ1ZmxlbiwKKyAgICBpbnQgY29weV9udWxsKTsKKworLyogQ29weSB0aGUgc3RyaW5nIGludG8gYSBVQ1M0IGJ1ZmZlci4gQSBuZXcgYnVmZmVyIGlzIGFsbG9jYXRlZCB1c2luZworICogUHlNZW1fTWFsbG9jOyBpZiB0aGlzIGZhaWxzLCBOVUxMIGlzIHJldHVybmVkIHdpdGggYSBtZW1vcnkgZXJyb3IKKyAgIGV4Y2VwdGlvbiBzZXQuICovCitQeUFQSV9GVU5DKFB5X1VDUzQqKSBQeVVuaWNvZGVfQXNVQ1M0Q29weShQeU9iamVjdCAqdW5pY29kZSk7CisKIC8qIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCi0gICBQeV9VTklDT0RFIGJ1ZmZlci4gKi8KKyAgIFB5X1VOSUNPREUgYnVmZmVyLgorICAgSWYgdGhlIHdjaGFyX3QvUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpcyBub3QgeWV0IGF2YWlsYWJsZSwgdGhpcworICAgZnVuY3Rpb24gd2lsbCBjYWxjdWxhdGUgaXQuICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfVU5JQ09ERSAqKSBQeVVuaWNvZGVfQXNVbmljb2RlKApAQCAtNDYyLDMwICs3NzIsNjkgQEAKICAgICApOwogI2VuZGlmCiAKKy8qIFJldHVybiBhIHJlYWQtb25seSBwb2ludGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCdzIGludGVybmFsCisgICBQeV9VTklDT0RFIGJ1ZmZlciBhbmQgc2F2ZSB0aGUgbGVuZ3RoIGF0IHNpemUuCisgICBJZiB0aGUgd2NoYXJfdC9QeV9VTklDT0RFIHJlcHJlc2VudGF0aW9uIGlzIG5vdCB5ZXQgYXZhaWxhYmxlLCB0aGlzCisgICBmdW5jdGlvbiB3aWxsIGNhbGN1bGF0ZSBpdC4gKi8KKworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeV9VTklDT0RFICopIFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgIFB5X3NzaXplX3QgKnNpemUgICAgICAgICAgICAvKiBsb2NhdGlvbiB3aGVyZSB0byBzYXZlIHRoZSBsZW5ndGggKi8KKyAgICApOworI2VuZGlmCisKIC8qIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBVbmljb2RlIG9iamVjdC4gKi8KIAorUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfR2V0TGVuZ3RoKAorICAgIFB5T2JqZWN0ICp1bmljb2RlCispOworCisvKiBHZXQgdGhlIG51bWJlciBvZiBQeV9VTklDT0RFIHVuaXRzIGluIHRoZQorICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiAqLworCiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIFB5VW5pY29kZV9HZXRTaXplKAogICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgICk7CiAKKy8qIFJlYWQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgc3RyaW5nLiAqLworCitQeUFQSV9GVU5DKFB5X1VDUzQpIFB5VW5pY29kZV9SZWFkQ2hhcigKKyAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICBQeV9zc2l6ZV90IGluZGV4CisgICAgKTsKKworLyogV3JpdGUgYSBjaGFyYWN0ZXIgdG8gdGhlIHN0cmluZy4gVGhlIHN0cmluZyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHRocm91Z2gKKyAgIFB5VW5pY29kZV9OZXcsIG11c3Qgbm90IGJlIHNoYXJlZCwgYW5kIG11c3Qgbm90IGhhdmUgYmVlbiBoYXNoZWQgeWV0LgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4gKi8KKworUHlBUElfRlVOQyhpbnQpIFB5VW5pY29kZV9Xcml0ZUNoYXIoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBpbmRleCwKKyAgICBQeV9VQ1M0IGNoYXJhY3RlcgorICAgICk7CisKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEdldCB0aGUgbWF4aW11bSBvcmRpbmFsIGZvciBhIFVuaWNvZGUgY2hhcmFjdGVyLiAqLwogUHlBUElfRlVOQyhQeV9VTklDT0RFKSBQeVVuaWNvZGVfR2V0TWF4KHZvaWQpOwogI2VuZGlmCiAKLS8qIFJlc2l6ZSBhbiBhbHJlYWR5IGFsbG9jYXRlZCBVbmljb2RlIG9iamVjdCB0byB0aGUgbmV3IHNpemUgbGVuZ3RoLgorLyogUmVzaXplIGFuIFVuaWNvZGUgb2JqZWN0LiBUaGUgbGVuZ3RoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycywgZXhjZXB0CisgICBpZiB0aGUga2luZCBvZiB0aGUgc3RyaW5nIGlzIFB5VW5pY29kZV9XQ0hBUl9LSU5EOiBpbiB0aGlzIGNhc2UsIHRoZSBsZW5ndGgKKyAgIGlzIHRoZSBudW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFyYWN0ZXJzLgogCiAgICAqdW5pY29kZSBpcyBtb2RpZmllZCB0byBwb2ludCB0byB0aGUgbmV3IChyZXNpemVkKSBvYmplY3QgYW5kIDAKICAgIHJldHVybmVkIG9uIHN1Y2Nlc3MuCiAKLSAgIFRoaXMgQVBJIG1heSBvbmx5IGJlIGNhbGxlZCBieSB0aGUgZnVuY3Rpb24gd2hpY2ggYWxzbyBjYWxsZWQgdGhlCi0gICBVbmljb2RlIGNvbnN0cnVjdG9yLiBUaGUgcmVmY291bnQgb24gdGhlIG9iamVjdCBtdXN0IGJlIDEuIE90aGVyd2lzZSwKLSAgIGFuIGVycm9yIGlzIHJldHVybmVkLgorICAgVHJ5IHRvIHJlc2l6ZSB0aGUgc3RyaW5nIGluIHBsYWNlICh3aGljaCBpcyB1c3VhbGx5IGZhc3RlciB0aGFuIGFsbG9jYXRpbmcKKyAgIGEgbmV3IHN0cmluZyBhbmQgY29weSBjaGFyYWN0ZXJzKSwgb3IgY3JlYXRlIGEgbmV3IHN0cmluZy4KIAogICAgRXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQgYXMgZm9sbG93czogYW4gZXhjZXB0aW9uIGlzIHNldCwgLTEKICAgIGlzIHJldHVybmVkIGFuZCAqdW5pY29kZSBsZWZ0IHVudG91Y2hlZC4KIAotKi8KKyAgIFdBUk5JTkc6IFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNoZWNrIHN0cmluZyBjb250ZW50LCB0aGUgcmVzdWx0IG1heSBub3QgYmUgYQorICAgICAgICAgICAgc3RyaW5nIGluIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbi4gKi8KIAogUHlBUElfRlVOQyhpbnQpIFB5VW5pY29kZV9SZXNpemUoCiAgICAgUHlPYmplY3QgKip1bmljb2RlLCAgICAgICAgIC8qIFBvaW50ZXIgdG8gdGhlIFVuaWNvZGUgb2JqZWN0ICovCkBAIC01NDIsMTEgKzg5MSw2NyBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqYnVmZmVyOworICAgIHZvaWQgKmRhdGE7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlfc3NpemVfdCBwb3M7CisgICAgLyogbWluaW11bSBsZW5ndGggb2YgdGhlIGJ1ZmZlciB3aGVuIG92ZXJhbGxvY2F0aW9uIGlzIGVuYWJsZWQsCisgICAgICAgc2VlIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgpICovCisgICAgUHlfc3NpemVfdCBtaW5fbGVuZ3RoOworICAgIHVuc2lnbmVkIGNoYXIgb3ZlcmFsbG9jYXRlOworICAgIC8qIElmIHJlYWRvbmx5IGlzIDEsIGJ1ZmZlciBpcyBhIHNoYXJlZCBzdHJpbmcgKGNhbm5vdCBiZSBtb2RpZmllZCkKKyAgICAgICBhbmQgc2l6ZSBpcyBzZXQgdG8gMC4gKi8KKyAgICB1bnNpZ25lZCBjaGFyIHJlYWRvbmx5OworfSBfUHlVbmljb2RlV3JpdGVyIDsKKworLyogSW5pdGlhbGl6ZSBhIFVuaWNvZGUgd3JpdGVyLgorCisgICBJZiBtaW5fbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLCBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoKQorICAgb3ZlcmFsbG9jYXRlcyB0aGUgYnVmZmVyIGFuZCBtaW5fbGVuZ3RoIGlzIHRoZSBtaW5pbXVtIGxlbmd0aCBpbiBjaGFyYWN0ZXJzCisgICBvZiB0aGUgYnVmZmVyLiAqLworUHlBUElfRlVOQyh2b2lkKQorX1B5VW5pY29kZVdyaXRlcl9Jbml0KF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBtaW5fbGVuZ3RoKTsKKworLyogUHJlcGFyZSB0aGUgYnVmZmVyIHRvIHdyaXRlICdsZW5ndGgnIGNoYXJhY3RlcnMKKyAgIHdpdGggdGhlIHNwZWNpZmllZCBtYXhpbXVtIGNoYXJhY3Rlci4KKworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCisjZGVmaW5lIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZShXUklURVIsIExFTkdUSCwgTUFYQ0hBUikgICAgICAgICAgICAgXAorICAgICgoKE1BWENIQVIpIDw9IChXUklURVIpLT5tYXhjaGFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICYmIChMRU5HVEgpIDw9IChXUklURVIpLT5zaXplIC0gKFdSSVRFUiktPnBvcykgICAgICAgICAgICAgICAgICBcCisgICAgID8gMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICA6ICgoKExFTkdUSCkgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgPyAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIDogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoKFdSSVRFUiksIChMRU5HVEgpLCAoTUFYQ0hBUikpKSkKKworLyogRG9uJ3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LCB1c2UgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgpIG1hY3JvCisgICBpbnN0ZWFkLiAqLworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCBtYXhjaGFyKTsKKworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlPYmplY3QgKnN0cik7CisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikKK19QeVVuaWNvZGVXcml0ZXJfRmluaXNoKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcik7CisKK1B5QVBJX0ZVTkModm9pZCkKK19QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYyhfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpOworI2VuZGlmCisKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIEZvcm1hdCB0aGUgb2JqZWN0IGJhc2VkIG9uIHRoZSBmb3JtYXRfc3BlYywgYXMgZGVmaW5lZCBpbiBQRVAgMzEwMQogICAgKEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nKS4gKi8KLVB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKTsKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICBQeU9iamVjdCAqb2JqLAorICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYywKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kKTsKICNlbmRpZgogCiBQeUFQSV9GVU5DKHZvaWQpIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKFB5T2JqZWN0ICoqKTsKQEAgLTU1OSw3ICs5NjQsOCBAQAogI2VuZGlmCiAKIC8qIFVzZSBvbmx5IGlmIHlvdSBrbm93IGl0J3MgYSBzdHJpbmcgKi8KLSNkZWZpbmUgUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKG9wKSAoKChQeVVuaWNvZGVPYmplY3QgKikob3ApKS0+c3RhdGUpCisjZGVmaW5lIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRChvcCkgXAorICAgICgoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+c3RhdGUuaW50ZXJuZWQpCiAKIC8qIC0tLSB3Y2hhcl90IHN1cHBvcnQgZm9yIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IGl0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC02MDYsMTQgKzEwMTIsMTcgQEAKICAgICBQeV9zc2l6ZV90ICpzaXplICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgb2YgdGhlIHJlc3VsdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkModm9pZCopIF9QeVVuaWNvZGVfQXNLaW5kKFB5T2JqZWN0ICpzLCB1bnNpZ25lZCBpbnQga2luZCk7CisjZW5kaWYKKwogI2VuZGlmCiAKIC8qIC0tLSBVbmljb2RlIG9yZGluYWxzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBDcmVhdGUgYSBVbmljb2RlIE9iamVjdCBmcm9tIHRoZSBnaXZlbiBVbmljb2RlIGNvZGUgcG9pbnQgb3JkaW5hbC4KIAotICAgVGhlIG9yZGluYWwgbXVzdCBiZSBpbiByYW5nZSgweDEwMDAwKSBvbiBuYXJyb3cgUHl0aG9uIGJ1aWxkcwotICAgKFVDUzIpLCBhbmQgcmFuZ2UoMHgxMTAwMDApIG9uIHdpZGUgYnVpbGRzIChVQ1M0KS4gQSBWYWx1ZUVycm9yIGlzCisgICBUaGUgb3JkaW5hbCBtdXN0IGJlIGluIHJhbmdlKDB4MTEwMDAwKS4gQSBWYWx1ZUVycm9yIGlzCiAgICByYWlzZWQgaW4gY2FzZSBpdCBpcyBub3QuCiAKICovCkBAIC02NTEsNTAgKzEwNjAsNDIgQEAKIAogLyogLS0tIE1hbmFnZSB0aGUgZGVmYXVsdCBlbmNvZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLS8qIFJldHVybiBhIFB5dGhvbiBzdHJpbmcgaG9sZGluZyB0aGUgZGVmYXVsdCBlbmNvZGVkIHZhbHVlIG9mIHRoZQotICAgVW5pY29kZSBvYmplY3QuCi0KLSAgIFNhbWUgYXMgUHlVbmljb2RlX0FzVVRGOFN0cmluZygpIGV4Y2VwdAotICAgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgY2FjaGVkIGluIHRoZSBVbmljb2RlIG9iamVjdCBmb3Igc3Vic2VxdWVudAotICAgdXNhZ2UgYnkgdGhpcyBmdW5jdGlvbi4gVGhlIGNhY2hlZCB2ZXJzaW9uIGlzIG5lZWRlZCB0byBpbXBsZW1lbnQKLSAgIHRoZSBjaGFyYWN0ZXIgYnVmZmVyIGludGVyZmFjZSBhbmQgd2lsbCBsaXZlIChhdCBsZWFzdCkgYXMgbG9uZyBhcwotICAgdGhlIFVuaWNvZGUgb2JqZWN0IGl0c2VsZi4KLQotICAgVGhlIHJlZmNvdW50IG9mIHRoZSBzdHJpbmcgaXMgKm5vdCogaW5jcmVtZW50ZWQuCi0KLSAgICoqKiBFeHBvcnRlZCBmb3IgaW50ZXJuYWwgdXNlIGJ5IHRoZSBpbnRlcnByZXRlciBvbmx5ICEhISAqKioKLQotKi8KLQotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcoCi0gICAgUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgY29uc3QgY2hhciAqZXJyb3JzKTsKLSNlbmRpZgotCiAvKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBlbmNvZGluZyAoVVRGLTgpIG9mIHRoZQogICAgVW5pY29kZSBvYmplY3QgdW5pY29kZSBhbmQgdGhlIHNpemUgb2YgdGhlIGVuY29kZWQgcmVwcmVzZW50YXRpb24KICAgIGluIGJ5dGVzIHN0b3JlZCBpbiAqc2l6ZS4KIAogICAgSW4gY2FzZSBvZiBhbiBlcnJvciwgbm8gKnNpemUgaXMgc2V0LgogCisgICBUaGlzIGZ1bmN0aW9uIGNhY2hlcyB0aGUgVVRGLTggZW5jb2RlZCBzdHJpbmcgaW4gdGhlIHVuaWNvZGVvYmplY3QKKyAgIGFuZCBzdWJzZXF1ZW50IGNhbGxzIHdpbGwgcmV0dXJuIHRoZSBzYW1lIHN0cmluZy4gIFRoZSBtZW1vcnkgaXMgcmVsZWFzZWQKKyAgIHdoZW4gdGhlIHVuaWNvZGVvYmplY3QgaXMgZGVhbGxvY2F0ZWQuCisKKyAgIF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplIGlzIGEgI2RlZmluZSBmb3IgUHlVbmljb2RlX0FzVVRGOEFuZFNpemUgdG8KKyAgIHN1cHBvcnQgdGhlIHByZXZpb3VzIGludGVybmFsIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgYmVoYXZpb3VyLgorCiAgICAqKiogVGhpcyBBUEkgaXMgZm9yIGludGVycHJldGVyIElOVEVSTkFMIFVTRSBPTkxZIGFuZCB3aWxsIGxpa2VseQogICAgKioqIGJlIHJlbW92ZWQgb3IgY2hhbmdlZCBpbiB0aGUgZnV0dXJlLgogCiAgICAqKiogSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBVbmljb2RlIG9iamVjdCBhcyBVVEYtOCBieXRlcyBzdHJpbmcsCiAgICAqKiogcGxlYXNlIHVzZSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgaW5zdGVhZC4KLQogKi8KIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQotUHlBUElfRlVOQyhjaGFyICopIF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKAorUHlBUElfRlVOQyhjaGFyICopIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLAogICAgIFB5X3NzaXplX3QgKnNpemUpOworI2RlZmluZSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZQogI2VuZGlmCiAKIC8qIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGVuY29kaW5nIChVVEYtOCkgb2YgdGhlCiAgICBVbmljb2RlIG9iamVjdCB1bmljb2RlLgogCisgICBMaWtlIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKCksIHRoaXMgYWxzbyBjYWNoZXMgdGhlIFVURi04IHJlcHJlc2VudGF0aW9uCisgICBpbiB0aGUgdW5pY29kZW9iamVjdC4KKworICAgX1B5VW5pY29kZV9Bc1N0cmluZyBpcyBhICNkZWZpbmUgZm9yIFB5VW5pY29kZV9Bc1VURjggdG8KKyAgIHN1cHBvcnQgdGhlIHByZXZpb3VzIGludGVybmFsIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUgYmVoYXZpb3VyLgorCiAgICBVc2Ugb2YgdGhpcyBBUEkgaXMgREVQUkVDQVRFRCBzaW5jZSBubyBzaXplIGluZm9ybWF0aW9uIGNhbiBiZQogICAgZXh0cmFjdGVkIGZyb20gdGhlIHJldHVybmVkIGRhdGEuCiAKQEAgLTcwNyw3ICsxMTA4LDggQEAKICovCiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoY2hhciAqKSBfUHlVbmljb2RlX0FzU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKTsKK1B5QVBJX0ZVTkMoY2hhciAqKSBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0ICp1bmljb2RlKTsKKyNkZWZpbmUgX1B5VW5pY29kZV9Bc1N0cmluZyBQeVVuaWNvZGVfQXNVVEY4CiAjZW5kaWYKIAogLyogUmV0dXJucyAidXRmLTgiLiAgKi8KQEAgLTgxMiw2ICsxMjE0LDEyIEBACiAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsICAgICAgIC8qIEVuY29kZSB3aGl0ZXNwYWNlIChzcCwgaHQsIG5sLCBjcikgaW4gYmFzZTY0ICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0VuY29kZVVURjcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgaW50IGJhc2U2NFNldE8sICAgICAgICAgICAgIC8qIEVuY29kZSBSRkMyMTUyIFNldCBPIGNoYXJhY3RlcnMgaW4gYmFzZTY0ICovCisgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsICAgICAgIC8qIEVuY29kZSB3aGl0ZXNwYWNlIChzcCwgaHQsIG5sLCBjcikgaW4gYmFzZTY0ICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgKTsKICNlbmRpZgogCiAvKiAtLS0gVVRGLTggQ29kZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTgzNCw2ICsxMjQyLDEwIEBACiAgICAgKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRW5jb2RlVVRGOCgKICAgICBjb25zdCBQeV9VTklDT0RFICpkYXRhLCAgICAgLyogVW5pY29kZSBjaGFyIGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBudW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KQEAgLTkxNSw2ICsxMzI3LDExIEBACiAgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoCisgICAgUHlPYmplY3QgKm9iamVjdCwgICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzLCAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgaW50IGJ5dGVvcmRlciAgICAgICAgICAgICAgIC8qIGJ5dGVvcmRlciB0byB1c2UgMD1CT00rbmF0aXZlOy0xPUxFLDE9QkUgKi8KKyAgICApOwogI2VuZGlmCiAKIC8qIC0tLSBVVEYtMTYgQ29kZWNzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtOTk1LDYgKzE0MTIsMTEgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICBpbnQgYnl0ZW9yZGVyICAgICAgICAgICAgICAgLyogYnl0ZW9yZGVyIHRvIHVzZSAwPUJPTStuYXRpdmU7LTE9TEUsMT1CRSAqLwogICAgICk7CitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9FbmNvZGVVVEYxNigKKyAgICBQeU9iamVjdCogdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBjb25zdCBjaGFyICplcnJvcnMsICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KKyAgICBpbnQgYnl0ZW9yZGVyICAgICAgICAgICAgICAgLyogYnl0ZW9yZGVyIHRvIHVzZSAwPUJPTStuYXRpdmU7LTE9TEUsMT1CRSAqLworICAgICk7CiAjZW5kaWYKIAogLyogLS0tIFVuaWNvZGUtRXNjYXBlIENvZGVjcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0xMDY0LDYgKzE0ODYsMTAgQEAKICAgICApOwogCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9Bc0xhdGluMVN0cmluZygKKyAgICBQeU9iamVjdCogdW5pY29kZSwKKyAgICBjb25zdCBjaGFyKiBlcnJvcnMpOworCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZUxhdGluMSgKICAgICBjb25zdCBQeV9VTklDT0RFICpkYXRhLCAgICAgLyogVW5pY29kZSBjaGFyIGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBOdW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KQEAgLTEwODgsNiArMTUxNCwxMCBAQAogICAgICk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoCisgICAgUHlPYmplY3QqIHVuaWNvZGUsCisgICAgY29uc3QgY2hhciogZXJyb3JzKTsKKwogUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVBU0NJSSgKICAgICBjb25zdCBQeV9VTklDT0RFICpkYXRhLCAgICAgLyogVW5pY29kZSBjaGFyIGJ1ZmZlciAqLwogICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBOdW1iZXIgb2YgUHlfVU5JQ09ERSBjaGFycyB0byBlbmNvZGUgKi8KQEAgLTExMzksNiArMTU2OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5pY29kZSBvcmRpbmFsIC0+IGNoYXIgb3JkaW5hbCkgKi8KICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCgKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgICAgICAgICAgLyogVW5pY29kZSBvYmplY3QgKi8KKyAgICBQeU9iamVjdCAqbWFwcGluZywgICAgICAgICAgLyogY2hhcmFjdGVyIG1hcHBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuaWNvZGUgb3JkaW5hbCAtPiBjaGFyIG9yZGluYWwpICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgKTsKICNlbmRpZgogCiAvKiBUcmFuc2xhdGUgYSBQeV9VTklDT0RFIGJ1ZmZlciBvZiB0aGUgZ2l2ZW4gbGVuZ3RoIGJ5IGFwcGx5aW5nIGEKQEAgLTExNjMsNyArMTU5OSw3IEBACiAgICAgKTsKICNlbmRpZgogCi0jaWZkZWYgTVNfV0lOMzIKKyNpZmRlZiBIQVZFX01CQ1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTExODAsNiArMTYxNiwxNCBAQAogICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkICAgICAgICAvKiBieXRlcyBjb25zdW1lZCAqLwogICAgICk7CiAKK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bCgKKyAgICBpbnQgY29kZV9wYWdlLCAgICAgICAgICAgICAgLyogY29kZSBwYWdlIG51bWJlciAqLworICAgIGNvbnN0IGNoYXIgKnN0cmluZywgICAgICAgICAvKiBlbmNvZGVkIHN0cmluZyAqLworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCAgICAgICAgICAvKiBzaXplIG9mIHN0cmluZyAqLworICAgIGNvbnN0IGNoYXIgKmVycm9ycywgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLworICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkICAgICAgICAvKiBieXRlcyBjb25zdW1lZCAqLworICAgICk7CisKIFB5QVBJX0ZVTkMoUHlPYmplY3QqKSBQeVVuaWNvZGVfQXNNQkNTU3RyaW5nKAogICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLwogICAgICk7CkBAIC0xMTg3LDEyICsxNjMxLDE4IEBACiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZU1CQ1MoCiAgICAgY29uc3QgUHlfVU5JQ09ERSAqZGF0YSwgICAgIC8qIFVuaWNvZGUgY2hhciBidWZmZXIgKi8KLSAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgLyogTnVtYmVyIG9mIFB5X1VOSUNPREUgY2hhcnMgdG8gZW5jb2RlICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIG51bWJlciBvZiBQeV9VTklDT0RFIGNoYXJzIHRvIGVuY29kZSAqLwogICAgIGNvbnN0IGNoYXIgKmVycm9ycyAgICAgICAgICAvKiBlcnJvciBoYW5kbGluZyAqLwogICAgICk7CiAjZW5kaWYKIAotI2VuZGlmIC8qIE1TX1dJTjMyICovCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKAorICAgIGludCBjb2RlX3BhZ2UsICAgICAgICAgICAgICAvKiBjb2RlIHBhZ2UgbnVtYmVyICovCisgICAgUHlPYmplY3QgKnVuaWNvZGUsICAgICAgICAgIC8qIFVuaWNvZGUgb2JqZWN0ICovCisgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCisgICAgKTsKKworI2VuZGlmIC8qIEhBVkVfTUJDUyAqLwogCiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTI0MCw2ICsxNjkwLDQ5IEBACiAgICAgKTsKICNlbmRpZgogCisvKiBTaW1pbGFyIHRvIFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSSgpLCBidXQgdGFrZXMgYSBQeU9iamVjdAorICAgYXMgYXJndW1lbnQgaW5zdGVhZCBvZiBhIHJhdyBidWZmZXIgYW5kIGxlbmd0aC4gIFRoaXMgZnVuY3Rpb24gYWRkaXRpb25hbGx5CisgICB0cmFuc2Zvcm1zIHNwYWNlcyB0byBBU0NJSSBiZWNhdXNlIHRoaXMgaXMgd2hhdCB0aGUgY2FsbGVycyBpbiBsb25nb2JqZWN0LAorICAgZmxvYXRvYmplY3QsIGFuZCBjb21wbGV4b2JqZWN0IGRpZCBhbnl3YXlzLiAqLworCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCitQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKAorICAgIFB5T2JqZWN0ICp1bmljb2RlICAgICAgICAgICAvKiBVbmljb2RlIG9iamVjdCAqLworICAgICk7CisjZW5kaWYKKworLyogLS0tIExvY2FsZSBlbmNvZGluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKworLyogRGVjb2RlIGEgc3RyaW5nIGZyb20gdGhlIGN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiBUaGUgZGVjb2RlciBpcyBzdHJpY3QgaWYKKyAgICpzdXJyb2dhdGVlc2NhcGUqIGlzIGVxdWFsIHRvIHplcm8sIG90aGVyd2lzZSBpdCB1c2VzIHRoZSAnc3Vycm9nYXRlZXNjYXBlJworICAgZXJyb3IgaGFuZGxlciAoUEVQIDM4MykgdG8gZXNjYXBlIHVuZGVjb2RhYmxlIGJ5dGVzLiBJZiBhIGJ5dGUgc2VxdWVuY2UgY2FuCisgICBiZSBkZWNvZGVkIGFzIGEgc3Vycm9nYXRlIGNoYXJhY3RlciBhbmQgKnN1cnJvZ2F0ZWVzY2FwZSogaXMgbm90IGVxdWFsIHRvCisgICB6ZXJvLCB0aGUgYnl0ZSBzZXF1ZW5jZSBpcyBlc2NhcGVkIHVzaW5nIHRoZSAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyCisgICBpbnN0ZWFkIG9mIGJlaW5nIGRlY29kZWQuICpzdHIqIG11c3QgZW5kIHdpdGggYSBudWxsIGNoYXJhY3RlciBidXQgY2Fubm90CisgICBjb250YWluIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVycy4gKi8KKworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKAorICAgIGNvbnN0IGNoYXIgKnN0ciwKKyAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICBjb25zdCBjaGFyICplcnJvcnMpOworCisvKiBTaW1pbGFyIHRvIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKCksIGJ1dCBjb21wdXRlIHRoZSBzdHJpbmcKKyAgIGxlbmd0aCB1c2luZyBzdHJsZW4oKS4gKi8KKworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoCisgICAgY29uc3QgY2hhciAqc3RyLAorICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CisKKy8qIEVuY29kZSBhIFVuaWNvZGUgb2JqZWN0IHRvIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4gVGhlIGVuY29kZXIgaXMKKyAgIHN0cmljdCBpcyAqc3Vycm9nYXRlZXNjYXBlKiBpcyBlcXVhbCB0byB6ZXJvLCBvdGhlcndpc2UgdGhlCisgICAic3Vycm9nYXRlZXNjYXBlIiBlcnJvciBoYW5kbGVyIGlzIHVzZWQuIFJldHVybiBhIGJ5dGVzIG9iamVjdC4gVGhlIHN0cmluZworICAgY2Fubm90IGNvbnRhaW4gZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLi4gKi8KKworUHlBUElfRlVOQyhQeU9iamVjdCopIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgY29uc3QgY2hhciAqZXJyb3JzCisgICAgKTsKKwogLyogLS0tIEZpbGUgc3lzdGVtIGVuY29kaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGVuY29kZSBzdHIgb2JqZWN0cyB0byBieXRlcyB1c2luZwpAQCAtMTI5Miw3ICsxNzg1LDcgQEAKIAogICAgVGhlc2UgYXJlIGNhcGFibGUgb2YgaGFuZGxpbmcgVW5pY29kZSBvYmplY3RzIGFuZCBzdHJpbmdzIG9uIGlucHV0CiAgICAod2UgcmVmZXIgdG8gdGhlbSBhcyBzdHJpbmdzIGluIHRoZSBkZXNjcmlwdGlvbnMpIGFuZCByZXR1cm4KLSAgIFVuaWNvZGUgb2JqZWN0cyBvciBpbnRlZ2VycyBhcyBhcHBvcnByaWF0ZS4gKi8KKyAgIFVuaWNvZGUgb2JqZWN0cyBvciBpbnRlZ2VycyBhcyBhcHByb3ByaWF0ZS4gKi8KIAogLyogQ29uY2F0IHR3byBzdHJpbmdzIGdpdmluZyBhIG5ldyBVbmljb2RlIHN0cmluZy4gKi8KIApAQCAtMTQyNyw2ICsxOTIwLDE1IEBACiAgICAgaW50IGRpcmVjdGlvbiAgICAgICAgICAgICAgIC8qIEZpbmQgZGlyZWN0aW9uOiArMSBmb3J3YXJkLCAtMSBiYWNrd2FyZCAqLwogICAgICk7CiAKKy8qIExpa2UgUHlVbmljb2RlX0ZpbmQsIGJ1dCBzZWFyY2ggZm9yIHNpbmdsZSBjaGFyYWN0ZXIgb25seS4gKi8KK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgUHlVbmljb2RlX0ZpbmRDaGFyKAorICAgIFB5T2JqZWN0ICpzdHIsCisgICAgUHlfVUNTNCBjaCwKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgIFB5X3NzaXplX3QgZW5kLAorICAgIGludCBkaXJlY3Rpb24KKyAgICApOworCiAvKiBDb3VudCB0aGUgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mIHN1YnN0ciBpbiBzdHJbc3RhcnQ6ZW5kXS4gKi8KIAogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeVVuaWNvZGVfQ291bnQoCkBAIC0xNDYzLDcgKzE5NjUsNyBAQAogLyogUmljaCBjb21wYXJlIHR3byBzdHJpbmdzIGFuZCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6CiAKICAgIC0gTlVMTCBpbiBjYXNlIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkCi0gICAtIFB5X1RydWUgb3IgUHlfRmFsc2UgZm9yIHN1Y2Nlc3NmdWx5IGNvbXBhcmlzb25zCisgICAtIFB5X1RydWUgb3IgUHlfRmFsc2UgZm9yIHN1Y2Nlc3NmdWxseSBjb21wYXJpc29ucwogICAgLSBQeV9Ob3RJbXBsZW1lbnRlZCBpbiBjYXNlIHRoZSB0eXBlIGNvbWJpbmF0aW9uIGlzIHVua25vd24KIAogICAgTm90ZSB0aGF0IFB5X0VRIGFuZCBQeV9ORSBjb21wYXJpc29ucyBjYW4gY2F1c2UgYSBVbmljb2RlV2FybmluZyBpbgpAQCAtMTUxNCwzNSArMjAxNiwyNiBAQAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogRXh0ZXJuYWxseSB2aXNpYmxlIGZvciBzdHIuc3RyaXAodW5pY29kZSkgKi8KIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9YU3RyaXAoCi0gICAgUHlVbmljb2RlT2JqZWN0ICpzZWxmLAorICAgIFB5T2JqZWN0ICpzZWxmLAogICAgIGludCBzdHJpcHR5cGUsCiAgICAgUHlPYmplY3QgKnNlcG9iagogICAgICk7CiAjZW5kaWYKIAotLyogVXNpbmcgdGhlIGN1cnJlbnQgbG9jYWxlLCBpbnNlcnQgdGhlIHRob3VzYW5kcyBncm91cGluZwotICAgaW50byB0aGUgc3RyaW5nIHBvaW50ZWQgdG8gYnkgYnVmZmVyLiAgRm9yIHRoZSBhcmd1bWVudCBkZXNjcmlwdGlvbnMsCi0gICBzZWUgT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oICovCi0KLSNpZm5kZWYgUHlfTElNSVRFRF9BUEkKLVB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZShQeV9VTklDT0RFICpidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWluX3dpZHRoKTsKLSNlbmRpZgotCiAvKiBVc2luZyBleHBsaWNpdCBwYXNzZWQtaW4gdmFsdWVzLCBpbnNlcnQgdGhlIHRob3VzYW5kcyBncm91cGluZwogICAgaW50byB0aGUgc3RyaW5nIHBvaW50ZWQgdG8gYnkgYnVmZmVyLiAgRm9yIHRoZSBhcmd1bWVudCBkZXNjcmlwdGlvbnMsCiAgICBzZWUgT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oICovCiAjaWZuZGVmIFB5X0xJTUlURURfQVBJCi1QeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoUHlfVU5JQ09ERSAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2J1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9kaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdGhvdXNhbmRzX3NlcCk7CitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgUHlfc3NpemVfdCBpbmRleCwKKyAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAorICAgIHZvaWQgKmRpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAorICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAorICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLAorICAgIFB5T2JqZWN0ICp0aG91c2FuZHNfc2VwLAorICAgIFB5X1VDUzQgKm1heGNoYXIpOwogI2VuZGlmCiAvKiA9PT0gQ2hhcmFjdGVycyBUeXBlIEFQSXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIApAQCAtMTU5OCw2ICsyMDkxLDM0IEBACiAgICAgUHlfVUNTNCBjaCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLwogICAgICk7CiAKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvTG93ZXJGdWxsKAorICAgIFB5X1VDUzQgY2gsICAgICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCAqcmVzCisgICAgKTsKKworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfVG9UaXRsZUZ1bGwoCisgICAgUHlfVUNTNCBjaCwgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICBQeV9VQ1M0ICpyZXMKKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Ub1VwcGVyRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvRm9sZGVkRnVsbCgKKyAgICBQeV9VQ1M0IGNoLCAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgKnJlcworICAgICk7CisKK1B5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZSgKKyAgICBQeV9VQ1M0IGNoICAgICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KKyAgICApOworCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9Jc0Nhc2VkKAorICAgIFB5X1VDUzQgY2ggICAgICAgICAvKiBVbmljb2RlIGNoYXJhY3RlciAqLworICAgICk7CisKIFB5QVBJX0ZVTkMoaW50KSBfUHlVbmljb2RlX1RvRGVjaW1hbERpZ2l0KAogICAgIFB5X1VDUzQgY2ggICAgICAgLyogVW5pY29kZSBjaGFyYWN0ZXIgKi8KICAgICApOwpAQCAtMTY3Niw2ICsyMTk3LDE3IEBACiAgICAgKTsKICNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLwogCisjaWYgZGVmaW5lZChQeV9ERUJVRykgJiYgIWRlZmluZWQoUHlfTElNSVRFRF9BUEkpCitQeUFQSV9GVU5DKGludCkgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KAorICAgIFB5T2JqZWN0ICpvcCwKKyAgICBpbnQgY2hlY2tfY29udGVudCk7CisjZW5kaWYKKworLyogUmV0dXJuIGFuIGludGVybmVkIFVuaWNvZGUgb2JqZWN0IGZvciBhbiBJZGVudGlmaWVyOyBtYXkgZmFpbCBpZiB0aGVyZSBpcyBubyBtZW1vcnkuKi8KK1B5QVBJX0ZVTkMoUHlPYmplY3QqKSBfUHlVbmljb2RlX0Zyb21JZChfUHlfSWRlbnRpZmllciopOworLyogQ2xlYXIgYWxsIHN0YXRpYyBzdHJpbmdzLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncyh2b2lkKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xJQ0VOU0UgYi9MSUNFTlNFCmluZGV4IDQzMzg4ZTcuLjg4ZWVkMWYgMTAwNjQ0Ci0tLSBhL0xJQ0VOU0UKKysrIGIvTElDRU5TRQpAQCAtNzQsNiArNzQsNyBAQAogICAgIDMuMi4xICAgICAgICAgICAzLjIgICAgICAgICAyMDExICAgICAgICBQU0YgICAgICAgICB5ZXMKICAgICAzLjIuMiAgICAgICAgICAgMy4yLjEgICAgICAgMjAxMSAgICAgICAgUFNGICAgICAgICAgeWVzCiAgICAgMy4yLjMgICAgICAgICAgIDMuMi4yICAgICAgIDIwMTIgICAgICAgIFBTRiAgICAgICAgIHllcworICAgIDMuMy4wICAgICAgICAgICAzLjIgICAgICAgICAyMDEyICAgICAgICBQU0YgICAgICAgICB5ZXMKIAogRm9vdG5vdGVzOgogCmRpZmYgLS1naXQgYS9MaWIvX2R1bW15X3RocmVhZC5weSBiL0xpYi9fZHVtbXlfdGhyZWFkLnB5CmluZGV4IGVkNTA1MjAuLjEzYjFmMjYgMTAwNjQ0Ci0tLSBhL0xpYi9fZHVtbXlfdGhyZWFkLnB5CisrKyBiL0xpYi9fZHVtbXlfdGhyZWFkLnB5CkBAIC0yNCwxMSArMjQsNyBAQAogIyBpbXBvcnRzIGFyZSBkb25lIHdoZW4gbmVlZGVkIG9uIGEgZnVuY3Rpb24tYnktZnVuY3Rpb24gYmFzaXMuICBTaW5jZSB0aHJlYWRzCiAjIGFyZSBkaXNhYmxlZCwgdGhlIGltcG9ydCBsb2NrIHNob3VsZCBub3QgYmUgYW4gaXNzdWUgYW55d2F5ICg/PykuCiAKLWNsYXNzIGVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgX3RocmVhZC5lcnJvci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKK2Vycm9yID0gUnVudGltZUVycm9yCiAKIGRlZiBzdGFydF9uZXdfdGhyZWFkKGZ1bmN0aW9uLCBhcmdzLCBrd2FyZ3M9e30pOgogICAgICIiIkR1bW15IGltcGxlbWVudGF0aW9uIG9mIF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpLgpkaWZmIC0tZ2l0IGEvTGliL19vc3hfc3VwcG9ydC5weSBiL0xpYi9fb3N4X3N1cHBvcnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNhYWQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9fb3N4X3N1cHBvcnQucHkKQEAgLTAsMCArMSw0ODggQEAKKyIiIlNoYXJlZCBPUyBYIHN1cHBvcnQgZnVuY3Rpb25zLiIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitfX2FsbF9fID0gWworICAgICdjb21waWxlcl9maXh1cCcsCisgICAgJ2N1c3RvbWl6ZV9jb25maWdfdmFycycsCisgICAgJ2N1c3RvbWl6ZV9jb21waWxlcicsCisgICAgJ2dldF9wbGF0Zm9ybV9vc3gnLAorXQorCisjIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgbWF5IGNvbnRhaW4gdW5pdmVyc2FsIGJ1aWxkIGZsYWdzLAorIyBsaWtlICItYXJjaCIgb3IgIi1pc2Rrcm9vdCIsIHRoYXQgbWF5IG5lZWQgY3VzdG9taXphdGlvbiBmb3IKKyMgdGhlIHVzZXIgZW52aXJvbm1lbnQKK19VTklWRVJTQUxfQ09ORklHX1ZBUlMgPSAoJ0NGTEFHUycsICdMREZMQUdTJywgJ0NQUEZMQUdTJywgJ0JBU0VDRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCTERTSEFSRUQnLCAnTERTSEFSRUQnLCAnQ0MnLCAnQ1hYJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUFlfQ0ZMQUdTJywgJ1BZX0xERkxBR1MnLCAnUFlfQ1BQRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQWV9DT1JFX0NGTEFHUycpCisKKyMgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgdGhhdCBtYXkgY29udGFpbiBjb21waWxlciBjYWxscworX0NPTVBJTEVSX0NPTkZJR19WQVJTID0gKCdCTERTSEFSRUQnLCAnTERTSEFSRUQnLCAnQ0MnLCAnQ1hYJykKKworIyBwcmVmaXggYWRkZWQgdG8gb3JpZ2luYWwgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBuYW1lcworX0lOSVRQUkUgPSAnX09TWF9TVVBQT1JUX0lOSVRJQUxfJworCisKK2RlZiBfZmluZF9leGVjdXRhYmxlKGV4ZWN1dGFibGUsIHBhdGg9Tm9uZSk6CisgICAgIiIiVHJpZXMgdG8gZmluZCAnZXhlY3V0YWJsZScgaW4gdGhlIGRpcmVjdG9yaWVzIGxpc3RlZCBpbiAncGF0aCcuCisKKyAgICBBIHN0cmluZyBsaXN0aW5nIGRpcmVjdG9yaWVzIHNlcGFyYXRlZCBieSAnb3MucGF0aHNlcCc7IGRlZmF1bHRzIHRvCisgICAgb3MuZW52aXJvblsnUEFUSCddLiAgUmV0dXJucyB0aGUgY29tcGxldGUgZmlsZW5hbWUgb3IgTm9uZSBpZiBub3QgZm91bmQuCisgICAgIiIiCisgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICBwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisKKyAgICBwYXRocyA9IHBhdGguc3BsaXQob3MucGF0aHNlcCkKKyAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGV4ZWN1dGFibGUpCisKKyAgICBpZiAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3Igb3MubmFtZSA9PSAnb3MyJykgYW5kIChleHQgIT0gJy5leGUnKToKKyAgICAgICAgZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUgKyAnLmV4ZScKKworICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShleGVjdXRhYmxlKToKKyAgICAgICAgZm9yIHAgaW4gcGF0aHM6CisgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHAsIGV4ZWN1dGFibGUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmKToKKyAgICAgICAgICAgICAgICAjIHRoZSBmaWxlIGV4aXN0cywgd2UgaGF2ZSBhIHNob3QgYXQgc3Bhd24gd29ya2luZworICAgICAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIHJldHVybiBOb25lCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGUKKworCitkZWYgX3JlYWRfb3V0cHV0KGNvbW1hbmRzdHJpbmcpOgorICAgICIiIk91dHB1dCBmcm9tIHN1Y2Nlc2Z1bCBjb21tYW5kIGV4ZWN1dGlvbiBvciBOb25lIiIiCisgICAgIyBTaW1pbGFyIHRvIG9zLnBvcGVuKGNvbW1hbmRzdHJpbmcsICJyIikucmVhZCgpLAorICAgICMgYnV0IHdpdGhvdXQgYWN0dWFsbHkgdXNpbmcgb3MucG9wZW4gYmVjYXVzZSB0aGF0CisgICAgIyBmdW5jdGlvbiBpcyBub3QgdXNhYmxlIGR1cmluZyBweXRob24gYm9vdHN0cmFwLgorICAgICMgdGVtcGZpbGUgaXMgYWxzbyBub3QgYXZhaWxhYmxlIHRoZW4uCisgICAgaW1wb3J0IGNvbnRleHRsaWIKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB0ZW1wZmlsZQorICAgICAgICBmcCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBmcCA9IG9wZW4oIi90bXAvX29zeF9zdXBwb3J0LiVzIiUoCisgICAgICAgICAgICBvcy5nZXRwaWQoKSwpLCAidytiIikKKworICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKGZwKSBhcyBmcDoKKyAgICAgICAgY21kID0gIiVzIDI+L2Rldi9udWxsID4nJXMnIiAlIChjb21tYW5kc3RyaW5nLCBmcC5uYW1lKQorICAgICAgICByZXR1cm4gZnAucmVhZCgpLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpIGlmIG5vdCBvcy5zeXN0ZW0oY21kKSBlbHNlIE5vbmUKKworCitkZWYgX2ZpbmRfYnVpbGRfdG9vbCh0b29sbmFtZSk6CisgICAgIiIiRmluZCBhIGJ1aWxkIHRvb2wgb24gY3VycmVudCBwYXRoIG9yIHVzaW5nIHhjcnVuIiIiCisgICAgcmV0dXJuIChfZmluZF9leGVjdXRhYmxlKHRvb2xuYW1lKQorICAgICAgICAgICAgICAgIG9yIF9yZWFkX291dHB1dCgiL3Vzci9iaW4veGNydW4gLWZpbmQgJXMiICUgKHRvb2xuYW1lLCkpCisgICAgICAgICAgICAgICAgb3IgJycKKyAgICAgICAgICAgICkKKworX1NZU1RFTV9WRVJTSU9OID0gTm9uZQorCitkZWYgX2dldF9zeXN0ZW1fdmVyc2lvbigpOgorICAgICIiIlJldHVybiB0aGUgT1MgWCBzeXN0ZW0gdmVyc2lvbiBhcyBhIHN0cmluZyIiIgorICAgICMgUmVhZGluZyB0aGlzIHBsaXN0IGlzIGEgZG9jdW1lbnRlZCB3YXkgdG8gZ2V0IHRoZSBzeXN0ZW0KKyAgICAjIHZlcnNpb24gKHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIEdlc3RhbHQgTWFuYWdlcikKKyAgICAjIFdlIGF2b2lkIHVzaW5nIHBsYXRmb3JtLm1hY192ZXIgdG8gYXZvaWQgcG9zc2libGUgYm9vdHN0cmFwIGlzc3VlcyBkdXJpbmcKKyAgICAjIHRoZSBidWlsZCBvZiBQeXRob24gaXRzZWxmIChkaXN0dXRpbHMgaXMgdXNlZCB0byBidWlsZCBzdGFuZGFyZCBsaWJyYXJ5CisgICAgIyBleHRlbnNpb25zKS4KKworICAgIGdsb2JhbCBfU1lTVEVNX1ZFUlNJT04KKworICAgIGlmIF9TWVNURU1fVkVSU0lPTiBpcyBOb25lOgorICAgICAgICBfU1lTVEVNX1ZFUlNJT04gPSAnJworICAgICAgICB0cnk6CisgICAgICAgICAgICBmID0gb3BlbignL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN0JykKKyAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICAjIFdlJ3JlIG9uIGEgcGxhaW4gZGFyd2luIGJveCwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAjIGJlaGF2aW91ci4KKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKHInPGtleT5Qcm9kdWN0VXNlclZpc2libGVWZXJzaW9uPC9rZXk+XHMqJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8c3RyaW5nPiguKj8pPC9zdHJpbmc+JywgZi5yZWFkKCkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgaWYgbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBfU1lTVEVNX1ZFUlNJT04gPSAnLicuam9pbihtLmdyb3VwKDEpLnNwbGl0KCcuJylbOjJdKQorICAgICAgICAgICAgIyBlbHNlOiBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyCisKKyAgICByZXR1cm4gX1NZU1RFTV9WRVJTSU9OCisKK2RlZiBfcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhfY29uZmlnX3ZhcnMpOgorICAgICIiIlJlbW92ZSBvcmlnaW5hbCB1bm1vZGlmaWVkIHZhbHVlcyBmb3IgdGVzdGluZyIiIgorICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGhpZ2hlci1sZXZlbCBjcm9zcy1wbGF0Zm9ybSB0ZXN0cyBvZiBnZXRfcGxhdGZvcm0uCisgICAgZm9yIGsgaW4gbGlzdChfY29uZmlnX3ZhcnMpOgorICAgICAgICBpZiBrLnN0YXJ0c3dpdGgoX0lOSVRQUkUpOgorICAgICAgICAgICAgZGVsIF9jb25maWdfdmFyc1trXQorCitkZWYgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgbmV3dmFsdWUpOgorICAgICIiIlNhdmUgbW9kaWZpZWQgYW5kIG9yaWdpbmFsIHVubW9kaWZpZWQgdmFsdWUgb2YgY29uZmlndXJhdGlvbiB2YXIiIiIKKworICAgIG9sZHZhbHVlID0gX2NvbmZpZ192YXJzLmdldChjdiwgJycpCisgICAgaWYgKG9sZHZhbHVlICE9IG5ld3ZhbHVlKSBhbmQgKF9JTklUUFJFICsgY3Ygbm90IGluIF9jb25maWdfdmFycyk6CisgICAgICAgIF9jb25maWdfdmFyc1tfSU5JVFBSRSArIGN2XSA9IG9sZHZhbHVlCisgICAgX2NvbmZpZ192YXJzW2N2XSA9IG5ld3ZhbHVlCisKK2RlZiBfc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcygpOgorICAgICIiIlJldHVybnMgVHJ1ZSBpZiB1bml2ZXJzYWwgYnVpbGRzIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBzeXN0ZW0iIiIKKyAgICAjIEFzIGFuIGFwcHJveGltYXRpb24sIHdlIGFzc3VtZSB0aGF0IGlmIHdlIGFyZSBydW5uaW5nIG9uIDEwLjQgb3IgYWJvdmUsCisgICAgIyB0aGVuIHdlIGFyZSBydW5uaW5nIHdpdGggYW4gWGNvZGUgZW52aXJvbm1lbnQgdGhhdCBzdXBwb3J0cyB1bml2ZXJzYWwKKyAgICAjIGJ1aWxkcywgaW4gcGFydGljdWxhciAtaXN5c3Jvb3QgYW5kIC1hcmNoIGFyZ3VtZW50cyB0byB0aGUgY29tcGlsZXIuIFRoaXMKKyAgICAjIGlzIGluIHN1cHBvcnQgb2YgYWxsb3dpbmcgMTAuNCB1bml2ZXJzYWwgYnVpbGRzIHRvIHJ1biBvbiAxMC4zLnggc3lzdGVtcy4KKworICAgIG9zeF92ZXJzaW9uID0gX2dldF9zeXN0ZW1fdmVyc2lvbigpCisgICAgaWYgb3N4X3ZlcnNpb246CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUoaW50KGkpIGZvciBpIGluIG9zeF92ZXJzaW9uLnNwbGl0KCcuJykpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgb3N4X3ZlcnNpb24gPSAnJworICAgIHJldHVybiBib29sKG9zeF92ZXJzaW9uID49ICgxMCwgNCkpIGlmIG9zeF92ZXJzaW9uIGVsc2UgRmFsc2UKKworCitkZWYgX2ZpbmRfYXBwcm9wcmlhdGVfY29tcGlsZXIoX2NvbmZpZ192YXJzKToKKyAgICAiIiJGaW5kIGFwcHJvcHJpYXRlIEMgY29tcGlsZXIgZm9yIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIiIiCisKKyAgICAjIElzc3VlICMxMzU5MDoKKyAgICAjICAgIFRoZSBPU1ggbG9jYXRpb24gZm9yIHRoZSBjb21waWxlciB2YXJpZXMgYmV0d2VlbiBPU1gKKyAgICAjICAgIChvciByYXRoZXIgWGNvZGUpIHJlbGVhc2VzLiAgV2l0aCBvbGRlciByZWxlYXNlcyAodXAtdG8gMTAuNSkKKyAgICAjICAgIHRoZSBjb21waWxlciBpcyBpbiAvdXNyL2Jpbiwgd2l0aCBuZXdlciByZWxlYXNlcyB0aGUgY29tcGlsZXIKKyAgICAjICAgIGNhbiBvbmx5IGJlIGZvdW5kIGluc2lkZSBYY29kZS5hcHAgaWYgdGhlICJDb21tYW5kIExpbmUgVG9vbHMiCisgICAgIyAgICBhcmUgbm90IGluc3RhbGxlZC4KKyAgICAjCisgICAgIyAgICBGdXRoZXJtb3JlLCB0aGUgY29tcGlsZXIgdGhhdCBjYW4gYmUgdXNlZCB2YXJpZXMgYmV0d2VlbgorICAgICMgICAgWGNvZGUgcmVsZWFzZXMuIFVwdG8gWGNvZGUgNCBpdCB3YXMgcG9zc2libGUgdG8gdXNlICdnY2MtNC4yJworICAgICMgICAgYXMgdGhlIGNvbXBpbGVyLCBhZnRlciB0aGF0ICdjbGFuZycgc2hvdWxkIGJlIHVzZWQgYmVjYXVzZQorICAgICMgICAgZ2NjLTQuMiBpcyBlaXRoZXIgbm90IHByZXNlbnQsIG9yIGEgY29weSBvZiAnbGx2bS1nY2MnIHRoYXQKKyAgICAjICAgIG1pc2NvbXBpbGVzIFB5dGhvbi4KKworICAgICMgc2tpcCBjaGVja3MgaWYgdGhlIGNvbXBpbGVyIHdhcyBvdmVycmlkZW4gd2l0aCBhIENDIGVudiB2YXJpYWJsZQorICAgIGlmICdDQycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIF9jb25maWdfdmFycworCisgICAgIyBUaGUgQ0MgY29uZmlnIHZhciBtaWdodCBjb250YWluIGFkZGl0aW9uYWwgYXJndW1lbnRzLgorICAgICMgSWdub3JlIHRoZW0gd2hpbGUgc2VhcmNoaW5nLgorICAgIGNjID0gb2xkY2MgPSBfY29uZmlnX3ZhcnNbJ0NDJ10uc3BsaXQoKVswXQorICAgIGlmIG5vdCBfZmluZF9leGVjdXRhYmxlKGNjKToKKyAgICAgICAgIyBDb21waWxlciBpcyBub3QgZm91bmQgb24gdGhlIHNoZWxsIHNlYXJjaCBQQVRILgorICAgICAgICAjIE5vdyBzZWFyY2ggZm9yIGNsYW5nLCBmaXJzdCBvbiBQQVRIIChpZiB0aGUgQ29tbWFuZCBMSW5lCisgICAgICAgICMgVG9vbHMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbiAvIG9yIGlmIHRoZSB1c2VyIGhhcyBwcm92aWRlZAorICAgICAgICAjIGFub3RoZXIgbG9jYXRpb24gdmlhIENDKS4gIElmIG5vdCBmb3VuZCwgdHJ5IHVzaW5nIHhjcnVuCisgICAgICAgICMgdG8gZmluZCBhbiB1bmluc3RhbGxlZCBjbGFuZyAod2l0aGluIGEgc2VsZWN0ZWQgWGNvZGUpLgorCisgICAgICAgICMgTk9URTogQ2Fubm90IHVzZSBzdWJwcm9jZXNzIGhlcmUgYmVjYXVzZSBvZiBib290c3RyYXAKKyAgICAgICAgIyBpc3N1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gaXRzZWxmIChhbmQgb3MucG9wZW4gaXMKKyAgICAgICAgIyBpbXBsZW1lbnRlZCBvbiB0b3Agb2Ygc3VicHJvY2VzcyBhbmQgaXMgdGhlcmVmb3JlIG5vdAorICAgICAgICAjIHVzYWJsZSBhcyB3ZWxsKQorCisgICAgICAgIGNjID0gX2ZpbmRfYnVpbGRfdG9vbCgnY2xhbmcnKQorCisgICAgZWxpZiBvcy5wYXRoLmJhc2VuYW1lKGNjKS5zdGFydHN3aXRoKCdnY2MnKToKKyAgICAgICAgIyBDb21waWxlciBpcyBHQ0MsIGNoZWNrIGlmIGl0IGlzIExMVk0tR0NDCisgICAgICAgIGRhdGEgPSBfcmVhZF9vdXRwdXQoIiclcycgLS12ZXJzaW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjYy5yZXBsYWNlKCInIiwgIidcIidcIiciKSwpKQorICAgICAgICBpZiAnbGx2bS1nY2MnIGluIGRhdGE6CisgICAgICAgICAgICAjIEZvdW5kIExMVk0tR0NDLCBmYWxsIGJhY2sgdG8gY2xhbmcKKyAgICAgICAgICAgIGNjID0gX2ZpbmRfYnVpbGRfdG9vbCgnY2xhbmcnKQorCisgICAgaWYgbm90IGNjOgorICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigKKyAgICAgICAgICAgICAgICJDYW5ub3QgbG9jYXRlIHdvcmtpbmcgY29tcGlsZXIiKQorCisgICAgaWYgY2MgIT0gb2xkY2M6CisgICAgICAgICMgRm91bmQgYSByZXBsYWNlbWVudCBjb21waWxlci4KKyAgICAgICAgIyBNb2RpZnkgY29uZmlnIHZhcnMgdXNpbmcgbmV3IGNvbXBpbGVyLCBpZiBub3QgYWxyZWFkeSBleHBsaWN0bHkKKyAgICAgICAgIyBvdmVycmlkZW4gYnkgYW4gZW52IHZhcmlhYmxlLCBwcmVzZXJ2aW5nIGFkZGl0aW9uYWwgYXJndW1lbnRzLgorICAgICAgICBmb3IgY3YgaW4gX0NPTVBJTEVSX0NPTkZJR19WQVJTOgorICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBjdl9zcGxpdCA9IF9jb25maWdfdmFyc1tjdl0uc3BsaXQoKQorICAgICAgICAgICAgICAgIGN2X3NwbGl0WzBdID0gY2MgaWYgY3YgIT0gJ0NYWCcgZWxzZSBjYyArICcrKycKKyAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCAnICcuam9pbihjdl9zcGxpdCkpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIF9yZW1vdmVfdW5pdmVyc2FsX2ZsYWdzKF9jb25maWdfdmFycyk6CisgICAgIiIiUmVtb3ZlIGFsbCB1bml2ZXJzYWwgYnVpbGQgYXJndW1lbnRzIGZyb20gY29uZmlnIHZhcnMiIiIKKworICAgIGZvciBjdiBpbiBfVU5JVkVSU0FMX0NPTkZJR19WQVJTOgorICAgICAgICAjIERvIG5vdCBhbHRlciBhIGNvbmZpZyB2YXIgZXhwbGljaXRseSBvdmVycmlkZW4gYnkgZW52IHZhcgorICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCisgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWFyY2hccytcdytccycsICcgJywgZmxhZ3MsIHJlLkFTQ0lJKQorICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdCBbXiBcdF0qJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBfcmVtb3ZlX3Vuc3VwcG9ydGVkX2FyY2hzKF9jb25maWdfdmFycyk6CisgICAgIiIiUmVtb3ZlIGFueSB1bnN1cHBvcnRlZCBhcmNocyBmcm9tIGNvbmZpZyB2YXJzIiIiCisgICAgIyBEaWZmZXJlbnQgWGNvZGUgcmVsZWFzZXMgc3VwcG9ydCBkaWZmZXJlbnQgc2V0cyBmb3IgJy1hcmNoJworICAgICMgZmxhZ3MuIEluIHBhcnRpY3VsYXIsIFhjb2RlIDQueCBubyBsb25nZXIgc3VwcG9ydHMgdGhlCisgICAgIyBQUEMgYXJjaGl0ZWN0dXJlcy4KKyAgICAjCisgICAgIyBUaGlzIGNvZGUgYXV0b21hdGljYWxseSByZW1vdmVzICctYXJjaCBwcGMnIGFuZCAnLWFyY2ggcHBjNjQnCisgICAgIyB3aGVuIHRoZXNlIGFyZSBub3Qgc3VwcG9ydGVkLiBUaGF0IG1ha2VzIGl0IHBvc3NpYmxlIHRvCisgICAgIyBidWlsZCBleHRlbnNpb25zIG9uIE9TWCAxMC43IGFuZCBsYXRlciB3aXRoIHRoZSBwcmVidWlsdAorICAgICMgMzItYml0IGluc3RhbGxlciBvbiB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlLgorCisgICAgIyBza2lwIGNoZWNrcyBpZiB0aGUgY29tcGlsZXIgd2FzIG92ZXJyaWRlbiB3aXRoIGEgQ0MgZW52IHZhcmlhYmxlCisgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKyAgICBpZiByZS5zZWFyY2goJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CisgICAgICAgICMgTk9URTogQ2Fubm90IHVzZSBzdWJwcm9jZXNzIGhlcmUgYmVjYXVzZSBvZiBib290c3RyYXAKKyAgICAgICAgIyBpc3N1ZXMgd2hlbiBidWlsZGluZyBQeXRob24gaXRzZWxmCisgICAgICAgIHN0YXR1cyA9IG9zLnN5c3RlbSgiJyVzJyAtYXJjaCBwcGMgLXggYyAvZGV2L251bGwgMj4vZGV2L251bGwiJSgKKyAgICAgICAgICAgIF9jb25maWdfdmFyc1snQ0MnXS5yZXBsYWNlKCInIiwgIidcIidcIiciKSwpKQorICAgICAgICAjIFRoZSBBcHBsZSBjb21waWxlciBkcml2ZXJzIHJldHVybiBzdGF0dXMgMjU1IGlmIG5vIFBQQworICAgICAgICBpZiAoc3RhdHVzID4+IDgpID09IDI1NToKKyAgICAgICAgICAgICMgQ29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IFBQQywgcmVtb3ZlIHRoZSByZWxhdGVkCisgICAgICAgICAgICAjICctYXJjaCcgZmxhZ3MgaWYgbm90IGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBieSBhbgorICAgICAgICAgICAgIyBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CisgICAgICAgICAgICAgICAgaWYgY3YgaW4gX2NvbmZpZ192YXJzIGFuZCBjdiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSBfY29uZmlnX3ZhcnNbY3ZdCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK3BwY1x3KlxzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIF9vdmVycmlkZV9hbGxfYXJjaHMoX2NvbmZpZ192YXJzKToKKyAgICAiIiJBbGxvdyBvdmVycmlkZSBvZiBhbGwgYXJjaHMgd2l0aCBBUkNIRkxBR1MgZW52IHZhciIiIgorICAgICMgTk9URTogVGhpcyBuYW1lIHdhcyBpbnRyb2R1Y2VkIGJ5IEFwcGxlIGluIE9TWCAxMC41IGFuZAorICAgICMgaXMgdXNlZCBieSBzZXZlcmFsIHNjcmlwdGluZyBsYW5ndWFnZXMgZGlzdHJpYnV0ZWQgd2l0aAorICAgICMgdGhhdCBPUyByZWxlYXNlLgorICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246CisgICAgICAgIGFyY2ggPSBvcy5lbnZpcm9uWydBUkNIRkxBR1MnXQorICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKKyAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgJy1hcmNoJyBpbiBfY29uZmlnX3ZhcnNbY3ZdOgorICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQorICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICBmbGFncyA9IGZsYWdzICsgJyAnICsgYXJjaAorICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBfY2hlY2tfZm9yX3VuYXZhaWxhYmxlX3NkayhfY29uZmlnX3ZhcnMpOgorICAgICIiIlJlbW92ZSByZWZlcmVuY2VzIHRvIGFueSBTREtzIG5vdCBhdmFpbGFibGUiIiIKKyAgICAjIElmIHdlJ3JlIG9uIE9TWCAxMC41IG9yIGxhdGVyIGFuZCB0aGUgdXNlciB0cmllcyB0bworICAgICMgY29tcGlsZSBhbiBleHRlbnNpb24gdXNpbmcgYW4gU0RLIHRoYXQgaXMgbm90IHByZXNlbnQKKyAgICAjIG9uIHRoZSBjdXJyZW50IG1hY2hpbmUgaXQgaXMgYmV0dGVyIHRvIG5vdCB1c2UgYW4gU0RLCisgICAgIyB0aGFuIHRvIGZhaWwuICBUaGlzIGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgd2l0aAorICAgICMgdGhlIHN0YW5kYWxvbmcgQ29tbWFuZCBMaW5lIFRvb2xzIGFsdGVybmF0aXZlIHRvIGEKKyAgICAjIGZ1bGwtYmxvd24gWGNvZGUgaW5zdGFsbCBzaW5jZSB0aGUgQ0xUIHBhY2thZ2VzIGRvIG5vdAorICAgICMgcHJvdmlkZSBTREtzLiAgSWYgdGhlIFNESyBpcyBub3QgcHJlc2VudCwgaXQgaXMgYXNzdW1lZAorICAgICMgdGhhdCB0aGUgaGVhZGVyIGZpbGVzIGFuZCBkZXYgbGlicyBoYXZlIGJlZW4gaW5zdGFsbGVkCisgICAgIyB0byAvdXNyIGFuZCAvU3lzdGVtL0xpYnJhcnkgYnkgZWl0aGVyIGEgc3RhbmRhbG9uZSBDTFQKKyAgICAjIHBhY2thZ2Ugb3IgdGhlIENMVCBjb21wb25lbnQgd2l0aGluIFhjb2RlLgorICAgIGNmbGFncyA9IF9jb25maWdfdmFycy5nZXQoJ0NGTEFHUycsICcnKQorICAgIG0gPSByZS5zZWFyY2gocictaXN5c3Jvb3RccysoXFMrKScsIGNmbGFncykKKyAgICBpZiBtIGlzIG5vdCBOb25lOgorICAgICAgICBzZGsgPSBtLmdyb3VwKDEpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZGspOgorICAgICAgICAgICAgZm9yIGN2IGluIF9VTklWRVJTQUxfQ09ORklHX1ZBUlM6CisgICAgICAgICAgICAgICAgIyBEbyBub3QgYWx0ZXIgYSBjb25maWcgdmFyIGV4cGxpY2l0bHkgb3ZlcnJpZGVuIGJ5IGVudiB2YXIKKyAgICAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIocictaXN5c3Jvb3RccytcUysoPzpcc3wkKScsICcgJywgZmxhZ3MpCisgICAgICAgICAgICAgICAgICAgIF9zYXZlX21vZGlmaWVkX3ZhbHVlKF9jb25maWdfdmFycywgY3YsIGZsYWdzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBjb21waWxlcl9maXh1cChjb21waWxlcl9zbywgY2NfYXJncyk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHN0cmlwICctaXN5c3Jvb3QgUEFUSCcgYW5kICctYXJjaCBBUkNIJyBmcm9tIHRoZQorICAgIGNvbXBpbGUgZmxhZ3MgaWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBvbmUgdGhlbSBpbiBleHRyYV9jb21waWxlX2ZsYWdzLgorCisgICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSAnLWFyY2ggQVJDSCcgYWRkcyBhbm90aGVyIGFyY2hpdGVjdHVyZSB0byB0aGUKKyAgICBidWlsZCwgd2l0aG91dCBhIHdheSB0byByZW1vdmUgYW4gYXJjaGl0ZWN0dXJlLiBGdXJ0aGVybW9yZSBHQ0Mgd2lsbAorICAgIGJhcmYgaWYgbXVsdGlwbGUgJy1pc3lzcm9vdCcgYXJndW1lbnRzIGFyZSBwcmVzZW50LgorICAgICIiIgorICAgIHN0cmlwQXJjaCA9IHN0cmlwU3lzcm9vdCA9IEZhbHNlCisKKyAgICBjb21waWxlcl9zbyA9IGxpc3QoY29tcGlsZXJfc28pCisKKyAgICBpZiBub3QgX3N1cHBvcnRzX3VuaXZlcnNhbF9idWlsZHMoKToKKyAgICAgICAgIyBPU1ggYmVmb3JlIDEwLjQuMCwgdGhlc2UgZG9uJ3Qgc3VwcG9ydCAtYXJjaCBhbmQgLWlzeXNyb290IGF0CisgICAgICAgICMgYWxsLgorICAgICAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgc3RyaXBBcmNoID0gJy1hcmNoJyBpbiBjY19hcmdzCisgICAgICAgIHN0cmlwU3lzcm9vdCA9ICctaXN5c3Jvb3QnIGluIGNjX2FyZ3MKKworICAgIGlmIHN0cmlwQXJjaCBvciAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGluZGV4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1hcmNoJykKKyAgICAgICAgICAgICAgICAjIFN0cmlwIHRoaXMgYXJndW1lbnQgYW5kIHRoZSBuZXh0IG9uZToKKyAgICAgICAgICAgICAgICBkZWwgY29tcGlsZXJfc29baW5kZXg6aW5kZXgrMl0KKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uIGFuZCBub3Qgc3RyaXBBcmNoOgorICAgICAgICAjIFVzZXIgc3BlY2lmaWVkIGRpZmZlcmVudCAtYXJjaCBmbGFncyBpbiB0aGUgZW52aXJvbiwKKyAgICAgICAgIyBzZWUgYWxzbyBkaXN0dXRpbHMuc3lzY29uZmlnCisgICAgICAgIGNvbXBpbGVyX3NvID0gY29tcGlsZXJfc28gKyBvcy5lbnZpcm9uWydBUkNIRkxBR1MnXS5zcGxpdCgpCisKKyAgICBpZiBzdHJpcFN5c3Jvb3Q6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW5kZXggPSBjb21waWxlcl9zby5pbmRleCgnLWlzeXNyb290JykKKyAgICAgICAgICAgICAgICAjIFN0cmlwIHRoaXMgYXJndW1lbnQgYW5kIHRoZSBuZXh0IG9uZToKKyAgICAgICAgICAgICAgICBkZWwgY29tcGlsZXJfc29baW5kZXg6aW5kZXgrMl0KKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAjIENoZWNrIGlmIHRoZSBTREsgdGhhdCBpcyB1c2VkIGR1cmluZyBjb21waWxhdGlvbiBhY3R1YWxseSBleGlzdHMsCisgICAgIyB0aGUgdW5pdmVyc2FsIGJ1aWxkIHJlcXVpcmVzIHRoZSB1c2FnZSBvZiBhIHVuaXZlcnNhbCBTREsgYW5kIG5vdCBhbGwKKyAgICAjIHVzZXJzIGhhdmUgdGhhdCBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KKyAgICBzeXNyb290ID0gTm9uZQorICAgIGlmICctaXN5c3Jvb3QnIGluIGNjX2FyZ3M6CisgICAgICAgIGlkeCA9IGNjX2FyZ3MuaW5kZXgoJy1pc3lzcm9vdCcpCisgICAgICAgIHN5c3Jvb3QgPSBjY19hcmdzW2lkeCsxXQorICAgIGVsaWYgJy1pc3lzcm9vdCcgaW4gY29tcGlsZXJfc286CisgICAgICAgIGlkeCA9IGNvbXBpbGVyX3NvLmluZGV4KCctaXN5c3Jvb3QnKQorICAgICAgICBzeXNyb290ID0gY29tcGlsZXJfc29baWR4KzFdCisKKyAgICBpZiBzeXNyb290IGFuZCBub3Qgb3MucGF0aC5pc2RpcihzeXNyb290KToKKyAgICAgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IGxvZworICAgICAgICBsb2cud2FybigiQ29tcGlsaW5nIHdpdGggYW4gU0RLIHRoYXQgZG9lc24ndCBzZWVtIHRvIGV4aXN0OiAlcyIsCisgICAgICAgICAgICAgICAgc3lzcm9vdCkKKyAgICAgICAgbG9nLndhcm4oIlBsZWFzZSBjaGVjayB5b3VyIFhjb2RlIGluc3RhbGxhdGlvbiIpCisKKyAgICByZXR1cm4gY29tcGlsZXJfc28KKworCitkZWYgY3VzdG9taXplX2NvbmZpZ192YXJzKF9jb25maWdfdmFycyk6CisgICAgIiIiQ3VzdG9taXplIFB5dGhvbiBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy4KKworICAgIENhbGxlZCBpbnRlcm5hbGx5IGZyb20gc3lzY29uZmlnIHdpdGggYSBtdXRhYmxlIG1hcHBpbmcKKyAgICBjb250YWluaW5nIG5hbWUvdmFsdWUgcGFpcnMgcGFyc2VkIGZyb20gdGhlIGNvbmZpZ3VyZWQKKyAgICBtYWtlZmlsZSB1c2VkIHRvIGJ1aWxkIHRoaXMgaW50ZXJwcmV0ZXIuICBSZXR1cm5zCisgICAgdGhlIG1hcHBpbmcgdXBkYXRlZCBhcyBuZWVkZWQgdG8gcmVmbGVjdCB0aGUgZW52aXJvbm1lbnQKKyAgICBpbiB3aGljaCB0aGUgaW50ZXJwcmV0ZXIgaXMgcnVubmluZzsgaW4gdGhlIGNhc2Ugb2YKKyAgICBhIFB5dGhvbiBmcm9tIGEgYmluYXJ5IGluc3RhbGxlciwgdGhlIGluc3RhbGxlZAorICAgIGVudmlyb25tZW50IG1heSBiZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBidWlsZAorICAgIGVudmlyb25tZW50LCBpLmUuIGRpZmZlcmVudCBPUyBsZXZlbHMsIGRpZmZlcmVudAorICAgIGJ1aWx0IHRvb2xzLCBkaWZmZXJlbnQgYXZhaWxhYmxlIENQVSBhcmNoaXRlY3R1cmVzLgorCisgICAgVGhpcyBjdXN0b21pemF0aW9uIGlzIHBlcmZvcm1lZCB3aGVuZXZlcgorICAgIGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCkgaXMgZmlyc3QKKyAgICBjYWxsZWQuICBJdCBtYXkgYmUgdXNlZCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgbm8KKyAgICBjb21waWxlcnMgYXJlIHByZXNlbnQsIGkuZS4gd2hlbiBpbnN0YWxsaW5nIHB1cmUKKyAgICBQeXRob24gZGlzdHMuICBDdXN0b21pemF0aW9uIG9mIGNvbXBpbGVyIHBhdGhzCisgICAgYW5kIGRldGVjdGlvbiBvZiB1bmF2YWlsYWJsZSBhcmNocyBpcyBkZWZlcnJlZAorICAgIHVudGlsIHRoZSBmaXJzdCBleHRlbnRpb24gbW9kdWxlIGJ1aWxkIGlzCisgICAgcmVxdWVzdGVkIChpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcikuCisKKyAgICBDdXJyZW50bHkgY2FsbGVkIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZworICAgICIiIgorCisgICAgaWYgbm90IF9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCk6CisgICAgICAgICMgT24gTWFjIE9TIFggYmVmb3JlIDEwLjQsIGNoZWNrIGlmIC1hcmNoIGFuZCAtaXN5c3Jvb3QKKyAgICAgICAgIyBhcmUgaW4gQ0ZMQUdTIG9yIExERkxBR1MgYW5kIHJlbW92ZSB0aGVtIGlmIHRoZXkgYXJlLgorICAgICAgICAjIFRoaXMgaXMgbmVlZGVkIHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyBvbiBhIDEwLjMgc3lzdGVtCisgICAgICAgICMgdXNpbmcgYSB1bml2ZXJzYWwgYnVpbGQgb2YgcHl0aG9uLgorICAgICAgICBfcmVtb3ZlX3VuaXZlcnNhbF9mbGFncyhfY29uZmlnX3ZhcnMpCisKKyAgICAjIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgYWxsIGFyY2hzIHdpdGggQVJDSEZMQUdTIGVudiB2YXIKKyAgICBfb3ZlcnJpZGVfYWxsX2FyY2hzKF9jb25maWdfdmFycykKKworICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gc2RrcyB0aGF0IGFyZSBub3QgZm91bmQKKyAgICBfY2hlY2tfZm9yX3VuYXZhaWxhYmxlX3NkayhfY29uZmlnX3ZhcnMpCisKKyAgICByZXR1cm4gX2NvbmZpZ192YXJzCisKKworZGVmIGN1c3RvbWl6ZV9jb21waWxlcihfY29uZmlnX3ZhcnMpOgorICAgICIiIkN1c3RvbWl6ZSBjb21waWxlciBwYXRoIGFuZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcy4KKworICAgIFRoaXMgY3VzdG9taXphdGlvbiBpcyBwZXJmb3JtZWQgd2hlbiB0aGUgZmlyc3QKKyAgICBleHRlbnNpb24gbW9kdWxlIGJ1aWxkIGlzIHJlcXVlc3RlZAorICAgIGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyKS4KKyAgICAiIiIKKworICAgICMgRmluZCBhIGNvbXBpbGVyIHRvIHVzZSBmb3IgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMKKyAgICBfZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcihfY29uZmlnX3ZhcnMpCisKKyAgICAjIFJlbW92ZSBwcGMgYXJjaCBmbGFncyBpZiBub3Qgc3VwcG9ydGVkIGhlcmUKKyAgICBfcmVtb3ZlX3Vuc3VwcG9ydGVkX2FyY2hzKF9jb25maWdfdmFycykKKworICAgICMgQWxsb3cgdXNlciB0byBvdmVycmlkZSBhbGwgYXJjaHMgd2l0aCBBUkNIRkxBR1MgZW52IHZhcgorICAgIF9vdmVycmlkZV9hbGxfYXJjaHMoX2NvbmZpZ192YXJzKQorCisgICAgcmV0dXJuIF9jb25maWdfdmFycworCisKK2RlZiBnZXRfcGxhdGZvcm1fb3N4KF9jb25maWdfdmFycywgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lKToKKyAgICAiIiJGaWx0ZXIgdmFsdWVzIGZvciBnZXRfcGxhdGZvcm0oKSIiIgorICAgICMgY2FsbGVkIGZyb20gZ2V0X3BsYXRmb3JtKCkgaW4gc3lzY29uZmlnIGFuZCBkaXN0dXRpbHMudXRpbAorICAgICMKKyAgICAjIEZvciBvdXIgcHVycG9zZXMsIHdlJ2xsIGFzc3VtZSB0aGF0IHRoZSBzeXN0ZW0gdmVyc2lvbiBmcm9tCisgICAgIyBkaXN0dXRpbHMnIHBlcnNwZWN0aXZlIGlzIHdoYXQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGlzIHNldAorICAgICMgdG8uIFRoaXMgbWFrZXMgdGhlIGNvbXBhdGliaWxpdHkgc3RvcnkgYSBiaXQgbW9yZSBzYW5lIGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGlzIGdvaW5nIHRvIGNvbXBpbGUgYW5kIGxpbmsgYXMgaWYgaXQgd2VyZQorICAgICMgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULgorCisgICAgbWFjdmVyID0gX2NvbmZpZ192YXJzLmdldCgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJywgJycpCisgICAgbWFjcmVsZWFzZSA9IF9nZXRfc3lzdGVtX3ZlcnNpb24oKSBvciBtYWN2ZXIKKyAgICBtYWN2ZXIgPSBtYWN2ZXIgb3IgbWFjcmVsZWFzZQorCisgICAgaWYgbWFjdmVyOgorICAgICAgICByZWxlYXNlID0gbWFjdmVyCisgICAgICAgIG9zbmFtZSA9ICJtYWNvc3giCisKKyAgICAgICAgIyBVc2UgdGhlIG9yaWdpbmFsIENGTEFHUyB2YWx1ZSwgaWYgYXZhaWxhYmxlLCBzbyB0aGF0IHdlCisgICAgICAgICMgcmV0dXJuIHRoZSBzYW1lIG1hY2hpbmUgdHlwZSBmb3IgdGhlIHBsYXRmb3JtIHN0cmluZy4KKyAgICAgICAgIyBPdGhlcndpc2UsIGRpc3R1dGlscyBtYXkgY29uc2lkZXIgdGhpcyBhIGNyb3NzLWNvbXBpbGluZworICAgICAgICAjIGNhc2UgYW5kIGRpc2FsbG93IGluc3RhbGxzLgorICAgICAgICBjZmxhZ3MgPSBfY29uZmlnX3ZhcnMuZ2V0KF9JTklUUFJFKydDRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzLmdldCgnQ0ZMQUdTJywgJycpKQorICAgICAgICBpZiAoKG1hY3JlbGVhc2UgKyAnLicpID49ICcxMC40LicgYW5kCisgICAgICAgICAgICAnLWFyY2gnIGluIGNmbGFncy5zdHJpcCgpKToKKyAgICAgICAgICAgICMgVGhlIHVuaXZlcnNhbCBidWlsZCB3aWxsIGJ1aWxkIGZhdCBiaW5hcmllcywgYnV0IG5vdCBvbgorICAgICAgICAgICAgIyBzeXN0ZW1zIGJlZm9yZSAxMC40CisKKyAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JworCisgICAgICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFxTKyknLCBjZmxhZ3MpCisgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKKworICAgICAgICAgICAgaWYgbGVuKGFyY2hzKSA9PSAxOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBhcmNoc1swXQorICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJyk6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCisgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICd4ODZfNjQnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ludGVsJworICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3g4Nl82NCcpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0MycKKyAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdwcGM2NCcsICd4ODZfNjQnKToKKyAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDY0JworICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3BwYzY0JywgJ3g4Nl82NCcpOgorICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAndW5pdmVyc2FsJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IG1hY2hpbmUgdmFsdWUgZm9yIGFyY2hzPSVyIiAlIChhcmNocywpKQorCisgICAgICAgIGVsaWYgbWFjaGluZSA9PSAnaTM4Nic6CisgICAgICAgICAgICAjIE9uIE9TWCB0aGUgbWFjaGluZSB0eXBlIHJldHVybmVkIGJ5IHVuYW1lIGlzIGFsd2F5cyB0aGUKKyAgICAgICAgICAgICMgMzItYml0IHZhcmlhbnQsIGV2ZW4gaWYgdGhlIGV4ZWN1dGFibGUgYXJjaGl0ZWN0dXJlIGlzCisgICAgICAgICAgICAjIHRoZSA2NC1iaXQgdmFyaWFudAorICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd4ODZfNjQnCisKKyAgICAgICAgZWxpZiBtYWNoaW5lIGluICgnUG93ZXJQQycsICdQb3dlcl9NYWNpbnRvc2gnKToKKyAgICAgICAgICAgICMgUGljayBhIHNhbmUgbmFtZSBmb3IgdGhlIFBQQyBhcmNoaXRlY3R1cmUuCisgICAgICAgICAgICAjIFNlZSAnaTM4NicgY2FzZQorICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGM2NCcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGMnCisKKyAgICByZXR1cm4gKG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKZGlmZiAtLWdpdCBhL0xpYi9fcHlpby5weSBiL0xpYi9fcHlpby5weQppbmRleCAyZDM3NmQ4Li5mYTc3ZWMxIDEwMDY0NAotLS0gYS9MaWIvX3B5aW8ucHkKKysrIGIvTGliL19weWlvLnB5CkBAIC01LDcgKzUsNiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgYWJjCiBpbXBvcnQgY29kZWNzCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlcnJubwogIyBJbXBvcnQgX3RocmVhZCBpbnN0ZWFkIG9mIHRocmVhZGluZyB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0CiB0cnk6CkBAIC0xNSw3ICsxNCwxMSBAQAogCiBpbXBvcnQgaW8KIGZyb20gaW8gaW1wb3J0IChfX2FsbF9fLCBTRUVLX1NFVCwgU0VFS19DVVIsIFNFRUtfRU5EKQotZnJvbSBlcnJubyBpbXBvcnQgRUlOVFIKKwordmFsaWRfc2Vla19mbGFncyA9IHswLCAxLCAyfSAgIyBIYXJkd2lyZWQgdmFsdWVzCitpZiBoYXNhdHRyKG9zLCAnU0VFS19IT0xFJykgOgorICAgIHZhbGlkX3NlZWtfZmxhZ3MuYWRkKG9zLlNFRUtfSE9MRSkKKyAgICB2YWxpZF9zZWVrX2ZsYWdzLmFkZChvcy5TRUVLX0RBVEEpCiAKICMgb3BlbigpIHVzZXMgc3RfYmxrc2l6ZSB3aGVuZXZlciB3ZSBjYW4KIERFRkFVTFRfQlVGRkVSX1NJWkUgPSA4ICogMTAyNCAgIyBieXRlcwpAQCAtMjQsMjAgKzI3LDEyIEBACiAjIGRlZmluZWQgaW4gaW8ucHkuIFdlIGRvbid0IHVzZSByZWFsIGluaGVyaXRhbmNlIHRob3VnaCwgYmVjYXVzZSB3ZSBkb24ndAogIyB3YW50IHRvIGluaGVyaXQgdGhlIEMgaW1wbGVtZW50YXRpb25zLgogCi0KLWNsYXNzIEJsb2NraW5nSU9FcnJvcihJT0Vycm9yKToKLQotICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBJL08gd291bGQgYmxvY2sgb24gYSBub24tYmxvY2tpbmcgSS9PIHN0cmVhbS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlcnJubywgc3RyZXJyb3IsIGNoYXJhY3RlcnNfd3JpdHRlbj0wKToKLSAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhlcnJubywgc3RyZXJyb3IpCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNoYXJhY3RlcnNfd3JpdHRlbiwgaW50KToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2hhcmFjdGVyc193cml0dGVuIG11c3QgYmUgYSBpbnRlZ2VyIikKLSAgICAgICAgc2VsZi5jaGFyYWN0ZXJzX3dyaXR0ZW4gPSBjaGFyYWN0ZXJzX3dyaXR0ZW4KKyMgUmViaW5kIGZvciBjb21wYXRpYmlsaXR5CitCbG9ja2luZ0lPRXJyb3IgPSBCbG9ja2luZ0lPRXJyb3IKIAogCiBkZWYgb3BlbihmaWxlLCBtb2RlPSJyIiwgYnVmZmVyaW5nPS0xLCBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwKLSAgICAgICAgIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlKToKKyAgICAgICAgIG5ld2xpbmU9Tm9uZSwgY2xvc2VmZD1UcnVlLCBvcGVuZXI9Tm9uZSk6CiAKICAgICByIiIiT3BlbiBmaWxlIGFuZCByZXR1cm4gYSBzdHJlYW0uICBSYWlzZSBJT0Vycm9yIHVwb24gZmFpbHVyZS4KIApAQCAtNDcsMjEgKzQyLDIyIEBACiAgICAgd3JhcHBlZC4gKElmIGEgZmlsZSBkZXNjcmlwdG9yIGlzIGdpdmVuLCBpdCBpcyBjbG9zZWQgd2hlbiB0aGUKICAgICByZXR1cm5lZCBJL08gb2JqZWN0IGlzIGNsb3NlZCwgdW5sZXNzIGNsb3NlZmQgaXMgc2V0IHRvIEZhbHNlLikKIAotICAgIG1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlCi0gICAgaXMgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0Ci0gICAgbW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZgotICAgIGl0IGFscmVhZHkgZXhpc3RzKSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcywKLSAgICBtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGUKLSAgICBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlCi0gICAgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXcKLSAgICBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZQotICAgIG1vZGVzIGFyZToKKyAgICBtb2RlIGlzIGFuIG9wdGlvbmFsIHN0cmluZyB0aGF0IHNwZWNpZmllcyB0aGUgbW9kZSBpbiB3aGljaCB0aGUgZmlsZSBpcworICAgIG9wZW5lZC4gSXQgZGVmYXVsdHMgdG8gJ3InIHdoaWNoIG1lYW5zIG9wZW4gZm9yIHJlYWRpbmcgaW4gdGV4dCBtb2RlLiBPdGhlcgorICAgIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZiBpdCBhbHJlYWR5CisgICAgZXhpc3RzKSwgJ3gnIGZvciBleGNsdXNpdmUgY3JlYXRpb24gb2YgYSBuZXcgZmlsZSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nCisgICAgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlCisgICAgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzCisgICAgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQKKyAgICB3cml0aW5nIHJhdyBieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlCisgICAgYXZhaWxhYmxlIG1vZGVzIGFyZToKIAogICAgID09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICBDaGFyYWN0ZXIgTWVhbmluZwogICAgIC0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdCkKICAgICAndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdAorICAgICd4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZwogICAgICdhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHMKICAgICAnYicgICAgICAgYmluYXJ5IG1vZGUKICAgICAndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KQpAQCAtNzIsNyArNjgsOCBAQAogCiAgICAgVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbQogICAgIGFjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZQotICAgICdyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi4KKyAgICAncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmQKKyAgICByYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuCiAKICAgICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGZpbGVzIG9wZW5lZCBpbiBiaW5hcnkgYW5kIHRleHQgbW9kZXMsCiAgICAgZXZlbiB3aGVuIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gZG9lc24ndC4gRmlsZXMgb3BlbmVkIGluCkBAIC0xMzIsNiArMTI5LDEyIEBACiAgICAgYmUga2VwdCBvcGVuIHdoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcwogICAgIGdpdmVuIGFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLgogCisgICAgQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5IHBhc3NpbmcgYSBjYWxsYWJsZSBhcyAqb3BlbmVyKi4gVGhlCisgICAgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlIG9iamVjdCBpcyB0aGVuIG9idGFpbmVkIGJ5IGNhbGxpbmcKKyAgICAqb3BlbmVyKiB3aXRoICgqZmlsZSosICpmbGFncyopLiAqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUKKyAgICBkZXNjcmlwdG9yIChwYXNzaW5nIG9zLm9wZW4gYXMgKm9wZW5lciogcmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8KKyAgICBwYXNzaW5nIE5vbmUpLgorCiAgICAgb3BlbigpIHJldHVybnMgYSBmaWxlIG9iamVjdCB3aG9zZSB0eXBlIGRlcGVuZHMgb24gdGhlIG1vZGUsIGFuZAogICAgIHRocm91Z2ggd2hpY2ggdGhlIHN0YW5kYXJkIGZpbGUgb3BlcmF0aW9ucyBzdWNoIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcKICAgICBhcmUgcGVyZm9ybWVkLiBXaGVuIG9wZW4oKSBpcyB1c2VkIHRvIG9wZW4gYSBmaWxlIGluIGEgdGV4dCBtb2RlICgndycsCkBAIC0xNTcsOCArMTYwLDkgQEAKICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGVycm9ycywgc3RyKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGVycm9yczogJXIiICUgZXJyb3JzKQogICAgIG1vZGVzID0gc2V0KG1vZGUpCi0gICAgaWYgbW9kZXMgLSBzZXQoImFyd2IrdFUiKSBvciBsZW4obW9kZSkgPiBsZW4obW9kZXMpOgorICAgIGlmIG1vZGVzIC0gc2V0KCJheHJ3Yit0VSIpIG9yIGxlbihtb2RlKSA+IGxlbihtb2Rlcyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZTogJXIiICUgbW9kZSkKKyAgICBjcmVhdGluZyA9ICJ4IiBpbiBtb2RlcwogICAgIHJlYWRpbmcgPSAiciIgaW4gbW9kZXMKICAgICB3cml0aW5nID0gInciIGluIG1vZGVzCiAgICAgYXBwZW5kaW5nID0gImEiIGluIG1vZGVzCkBAIC0xNjYsMTQgKzE3MCwxNCBAQAogICAgIHRleHQgPSAidCIgaW4gbW9kZXMKICAgICBiaW5hcnkgPSAiYiIgaW4gbW9kZXMKICAgICBpZiAiVSIgaW4gbW9kZXM6Ci0gICAgICAgIGlmIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgorICAgICAgICBpZiBjcmVhdGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZzoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbid0IHVzZSBVIGFuZCB3cml0aW5nIG1vZGUgYXQgb25jZSIpCiAgICAgICAgIHJlYWRpbmcgPSBUcnVlCiAgICAgaWYgdGV4dCBhbmQgYmluYXJ5OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW4ndCBoYXZlIHRleHQgYW5kIGJpbmFyeSBtb2RlIGF0IG9uY2UiKQotICAgIGlmIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMToKKyAgICBpZiBjcmVhdGluZyArIHJlYWRpbmcgKyB3cml0aW5nICsgYXBwZW5kaW5nID4gMToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSByZWFkL3dyaXRlL2FwcGVuZCBtb2RlIGF0IG9uY2UiKQotICAgIGlmIG5vdCAocmVhZGluZyBvciB3cml0aW5nIG9yIGFwcGVuZGluZyk6CisgICAgaWYgbm90IChjcmVhdGluZyBvciByZWFkaW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKQogICAgIGlmIGJpbmFyeSBhbmQgZW5jb2RpbmcgaXMgbm90IE5vbmU6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJpbmFyeSBtb2RlIGRvZXNuJ3QgdGFrZSBhbiBlbmNvZGluZyBhcmd1bWVudCIpCkBAIC0xODIsMTEgKzE4NiwxMiBAQAogICAgIGlmIGJpbmFyeSBhbmQgbmV3bGluZSBpcyBub3QgTm9uZToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmluYXJ5IG1vZGUgZG9lc24ndCB0YWtlIGEgbmV3bGluZSBhcmd1bWVudCIpCiAgICAgcmF3ID0gRmlsZUlPKGZpbGUsCisgICAgICAgICAgICAgICAgIChjcmVhdGluZyBhbmQgIngiIG9yICIiKSArCiAgICAgICAgICAgICAgICAgIChyZWFkaW5nIGFuZCAiciIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKHdyaXRpbmcgYW5kICJ3IiBvciAiIikgKwogICAgICAgICAgICAgICAgICAoYXBwZW5kaW5nIGFuZCAiYSIgb3IgIiIpICsKICAgICAgICAgICAgICAgICAgKHVwZGF0aW5nIGFuZCAiKyIgb3IgIiIpLAotICAgICAgICAgICAgICAgICBjbG9zZWZkKQorICAgICAgICAgICAgICAgICBjbG9zZWZkLCBvcGVuZXI9b3BlbmVyKQogICAgIGxpbmVfYnVmZmVyaW5nID0gRmFsc2UKICAgICBpZiBidWZmZXJpbmcgPT0gMSBvciBidWZmZXJpbmcgPCAwIGFuZCByYXcuaXNhdHR5KCk6CiAgICAgICAgIGJ1ZmZlcmluZyA9IC0xCkBAIC0yMDgsNyArMjEzLDcgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgaGF2ZSB1bmJ1ZmZlcmVkIHRleHQgSS9PIikKICAgICBpZiB1cGRhdGluZzoKICAgICAgICAgYnVmZmVyID0gQnVmZmVyZWRSYW5kb20ocmF3LCBidWZmZXJpbmcpCi0gICAgZWxpZiB3cml0aW5nIG9yIGFwcGVuZGluZzoKKyAgICBlbGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgogICAgICAgICBidWZmZXIgPSBCdWZmZXJlZFdyaXRlcihyYXcsIGJ1ZmZlcmluZykKICAgICBlbGlmIHJlYWRpbmc6CiAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlcmVkUmVhZGVyKHJhdywgYnVmZmVyaW5nKQpAQCAtMzA1LDYgKzMxMCw3IEBACiAgICAgICAgICogMCAtLSBzdGFydCBvZiBzdHJlYW0gKHRoZSBkZWZhdWx0KTsgb2Zmc2V0IHNob3VsZCBiZSB6ZXJvIG9yIHBvc2l0aXZlCiAgICAgICAgICogMSAtLSBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbjsgb2Zmc2V0IG1heSBiZSBuZWdhdGl2ZQogICAgICAgICAqIDIgLS0gZW5kIG9mIHN0cmVhbTsgb2Zmc2V0IGlzIHVzdWFsbHkgbmVnYXRpdmUKKyAgICAgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyAvIGZpbGUgc3lzdGVtcyBjb3VsZCBwcm92aWRlIGFkZGl0aW9uYWwgdmFsdWVzLgogCiAgICAgICAgIFJldHVybiBhbiBpbnQgaW5kaWNhdGluZyB0aGUgbmV3IGFic29sdXRlIHBvc2l0aW9uLgogICAgICAgICAiIiIKQEAgLTg2NSw3ICs4NzEsNyBAQAogICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgogICAgICAgICAgICAgc2VsZi5fcG9zID0gbWF4KDAsIGxlbihzZWxmLl9idWZmZXIpICsgcG9zKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgdmFsdWUiKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidW5zdXBwb3J0ZWQgd2hlbmNlIHZhbHVlIikKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcwogCiAgICAgZGVmIHRlbGwoc2VsZik6CkBAIC05NTQsMTUgKzk2MCwxOSBAQAogICAgICAgICAjIFNwZWNpYWwgY2FzZSBmb3Igd2hlbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQgaXMgdW5zcGVjaWZpZWQuCiAgICAgICAgIGlmIG4gaXMgTm9uZSBvciBuID09IC0xOgogICAgICAgICAgICAgc2VsZi5fcmVzZXRfcmVhZF9idWYoKQorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnJhdywgJ3JlYWRhbGwnKToKKyAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYucmF3LnJlYWRhbGwoKQorICAgICAgICAgICAgICAgIGlmIGNodW5rIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZbcG9zOl0gb3IgTm9uZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZbcG9zOl0gKyBjaHVuawogICAgICAgICAgICAgY2h1bmtzID0gW2J1Zltwb3M6XV0gICMgU3RyaXAgdGhlIGNvbnN1bWVkIGJ5dGVzLgogICAgICAgICAgICAgY3VycmVudF9zaXplID0gMAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICAjIFJlYWQgdW50aWwgRU9GIG9yIHVudGlsIHJlYWQoKSB3b3VsZCBibG9jay4KICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yYXcucmVhZCgpCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgaWYgY2h1bmsgaW4gZW1wdHlfdmFsdWVzOgogICAgICAgICAgICAgICAgICAgICBub2RhdGFfdmFsID0gY2h1bmsKQEAgLTk4NCw5ICs5OTQsNyBAQAogICAgICAgICB3aGlsZSBhdmFpbCA8IG46CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgY2h1bmsgPSBzZWxmLnJhdy5yZWFkKHdhbnRlZCkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBjaHVuayBpbiBlbXB0eV92YWx1ZXM6CiAgICAgICAgICAgICAgICAgbm9kYXRhX3ZhbCA9IGNodW5rCkBAIC0xMDE5LDkgKzEwMjcsNyBAQAogICAgICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBzZWxmLnJhdy5yZWFkKHRvX3JlYWQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBFSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIGN1cnJlbnQ6CkBAIC0xMDQ2LDcgKzEwNTIsNyBAQAogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpIC0gbGVuKHNlbGYuX3JlYWRfYnVmKSArIHNlbGYuX3JlYWRfcG9zCiAKICAgICBkZWYgc2VlayhzZWxmLCBwb3MsIHdoZW5jZT0wKToKLSAgICAgICAgaWYgbm90ICgwIDw9IHdoZW5jZSA8PSAyKToKKyAgICAgICAgaWYgd2hlbmNlIG5vdCBpbiB2YWxpZF9zZWVrX2ZsYWdzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UgdmFsdWUiKQogICAgICAgICB3aXRoIHNlbGYuX3JlYWRfbG9jazoKICAgICAgICAgICAgIGlmIHdoZW5jZSA9PSAxOgpAQCAtMTA2NCwxOSArMTA3MCwxMyBAQAogICAgIERFRkFVTFRfQlVGRkVSX1NJWkUuCiAgICAgIiIiCiAKLSAgICBfd2FybmluZ19zdGFja19vZmZzZXQgPSAyCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LAotICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCBtYXhfYnVmZmVyX3NpemU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSk6CiAgICAgICAgIGlmIG5vdCByYXcud3JpdGFibGUoKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJyJyYXciIGFyZ3VtZW50IG11c3QgYmUgd3JpdGFibGUuJykKIAogICAgICAgICBfQnVmZmVyZWRJT01peGluLl9faW5pdF9fKHNlbGYsIHJhdykKICAgICAgICAgaWYgYnVmZmVyX3NpemUgPD0gMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgYnVmZmVyIHNpemUiKQotICAgICAgICBpZiBtYXhfYnVmZmVyX3NpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FybmluZ19zdGFja19vZmZzZXQpCiAgICAgICAgIHNlbGYuYnVmZmVyX3NpemUgPSBidWZmZXJfc2l6ZQogICAgICAgICBzZWxmLl93cml0ZV9idWYgPSBieXRlYXJyYXkoKQogICAgICAgICBzZWxmLl93cml0ZV9sb2NrID0gTG9jaygpCkBAIC0xMTI2LDEzICsxMTI2LDExIEBACiAgICAgICAgIHdoaWxlIHNlbGYuX3dyaXRlX2J1ZjoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBuID0gc2VsZi5yYXcud3JpdGUoc2VsZi5fd3JpdGVfYnVmKQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3I6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzZWxmLnJhdyBzaG91bGQgaW1wbGVtZW50IFJhd0lPQmFzZTogaXQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkIG5vdCByYWlzZSBCbG9ja2luZ0lPRXJyb3IiKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBuIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgQmxvY2tpbmdJT0Vycm9yKAogICAgICAgICAgICAgICAgICAgICBlcnJuby5FQUdBSU4sCkBAIC0xMTQ1LDggKzExNDMsOCBAQAogICAgICAgICByZXR1cm4gX0J1ZmZlcmVkSU9NaXhpbi50ZWxsKHNlbGYpICsgbGVuKHNlbGYuX3dyaXRlX2J1ZikKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UiKQorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfbG9jazoKICAgICAgICAgICAgIHNlbGYuX2ZsdXNoX3VubG9ja2VkKCkKICAgICAgICAgICAgIHJldHVybiBfQnVmZmVyZWRJT01peGluLnNlZWsoc2VsZiwgcG9zLCB3aGVuY2UpCkBAIC0xMTY4LDE1ICsxMTY2LDExIEBACiAgICAgIyBYWFggVGhlIHVzZWZ1bG5lc3Mgb2YgdGhpcyAoY29tcGFyZWQgdG8gaGF2aW5nIHR3byBzZXBhcmF0ZSBJTwogICAgICMgb2JqZWN0cykgaXMgcXVlc3Rpb25hYmxlLgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRlciwgd3JpdGVyLAotICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCBtYXhfYnVmZmVyX3NpemU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRlciwgd3JpdGVyLCBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuCiAKICAgICAgICAgVGhlIGFyZ3VtZW50cyBhcmUgdHdvIFJhd0lPIGluc3RhbmNlcy4KICAgICAgICAgIiIiCi0gICAgICAgIGlmIG1heF9idWZmZXJfc2l6ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQotCiAgICAgICAgIGlmIG5vdCByZWFkZXIucmVhZGFibGUoKToKICAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJyJyZWFkZXIiIGFyZ3VtZW50IG11c3QgYmUgcmVhZGFibGUuJykKIApAQCAtMTIzMywxNyArMTIyNywxNCBAQAogICAgIGRlZmF1bHRzIHRvIERFRkFVTFRfQlVGRkVSX1NJWkUuCiAgICAgIiIiCiAKLSAgICBfd2FybmluZ19zdGFja19vZmZzZXQgPSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3LAotICAgICAgICAgICAgICAgICBidWZmZXJfc2l6ZT1ERUZBVUxUX0JVRkZFUl9TSVpFLCBtYXhfYnVmZmVyX3NpemU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemU9REVGQVVMVF9CVUZGRVJfU0laRSk6CiAgICAgICAgIHJhdy5fY2hlY2tTZWVrYWJsZSgpCiAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyLl9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemUpCi0gICAgICAgIEJ1ZmZlcmVkV3JpdGVyLl9faW5pdF9fKHNlbGYsIHJhdywgYnVmZmVyX3NpemUsIG1heF9idWZmZXJfc2l6ZSkKKyAgICAgICAgQnVmZmVyZWRXcml0ZXIuX19pbml0X18oc2VsZiwgcmF3LCBidWZmZXJfc2l6ZSkKIAogICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPTApOgotICAgICAgICBpZiBub3QgKDAgPD0gd2hlbmNlIDw9IDIpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCB3aGVuY2UiKQorICAgICAgICBpZiB3aGVuY2Ugbm90IGluIHZhbGlkX3NlZWtfZmxhZ3M6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSB2YWx1ZSIpCiAgICAgICAgIHNlbGYuZmx1c2goKQogICAgICAgICBpZiBzZWxmLl9yZWFkX2J1ZjoKICAgICAgICAgICAgICMgVW5kbyByZWFkIGFoZWFkLgpAQCAtMTQ1NSw3ICsxNDQ2LDcgQEAKICAgICByIiIiQ2hhcmFjdGVyIGFuZCBsaW5lIGJhc2VkIGxheWVyIG92ZXIgYSBCdWZmZXJlZElPQmFzZSBvYmplY3QsIGJ1ZmZlci4KIAogICAgIGVuY29kaW5nIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHRoZSBzdHJlYW0gd2lsbCBiZQotICAgIGRlY29kZWQgb3IgZW5jb2RlZCB3aXRoLiBJdCBkZWZhdWx0cyB0byBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcuCisgICAgZGVjb2RlZCBvciBlbmNvZGVkIHdpdGguIEl0IGRlZmF1bHRzIHRvIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkuCiAKICAgICBlcnJvcnMgZGV0ZXJtaW5lcyB0aGUgc3RyaWN0bmVzcyBvZiBlbmNvZGluZyBhbmQgZGVjb2RpbmcgKHNlZSB0aGUKICAgICBjb2RlY3MucmVnaXN0ZXIpIGFuZCBkZWZhdWx0cyB0byAic3RyaWN0Ii4KQEAgLTE0NzYsNiArMTQ2Nyw5IEBACiAKICAgICBfQ0hVTktfU0laRSA9IDIwNDgKIAorICAgICMgVGhlIHdyaXRlX3Rocm91Z2ggYXJndW1lbnQgaGFzIG5vIGVmZmVjdCBoZXJlIHNpbmNlIHRoaXMKKyAgICAjIGltcGxlbWVudGF0aW9uIGFsd2F5cyB3cml0ZXMgdGhyb3VnaC4gIFRoZSBhcmd1bWVudCBpcyBwcmVzZW50IG9ubHkKKyAgICAjIHNvIHRoYXQgdGhlIHNpZ25hdHVyZSBjYW4gbWF0Y2ggdGhlIHNpZ25hdHVyZSBvZiB0aGUgQyB2ZXJzaW9uLgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBidWZmZXIsIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUsCiAgICAgICAgICAgICAgICAgIGxpbmVfYnVmZmVyaW5nPUZhbHNlLCB3cml0ZV90aHJvdWdoPUZhbHNlKToKICAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UobmV3bGluZSwgc3RyKToKQEAgLTE0OTQsNyArMTQ4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICMgSW1wb3J0aW5nIGxvY2FsZSBtYXkgZmFpbCBpZiBQeXRob24gaXMgYmVpbmcgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAiYXNjaWkiCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKIAogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbmNvZGluZywgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgZW5jb2Rpbmc6ICVyIiAlIGVuY29kaW5nKQpAQCAtMTUyMSw2ICsxNTE1LDcgQEAKICAgICAgICAgc2VsZi5fc25hcHNob3QgPSBOb25lICAjIGluZm8gZm9yIHJlY29uc3RydWN0aW5nIGRlY29kZXIgc3RhdGUKICAgICAgICAgc2VsZi5fc2Vla2FibGUgPSBzZWxmLl90ZWxsaW5nID0gc2VsZi5idWZmZXIuc2Vla2FibGUoKQogICAgICAgICBzZWxmLl9oYXNfcmVhZDEgPSBoYXNhdHRyKHNlbGYuYnVmZmVyLCAncmVhZDEnKQorICAgICAgICBzZWxmLl9iMmNyYXRpbyA9IDAuMAogCiAgICAgICAgIGlmIHNlbGYuX3NlZWthYmxlIGFuZCBzZWxmLndyaXRhYmxlKCk6CiAgICAgICAgICAgICBwb3NpdGlvbiA9IHNlbGYuYnVmZmVyLnRlbGwoKQpAQCAtMTY5Myw3ICsxNjg4LDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpbnB1dF9jaHVuayA9IHNlbGYuYnVmZmVyLnJlYWQoc2VsZi5fQ0hVTktfU0laRSkKICAgICAgICAgZW9mID0gbm90IGlucHV0X2NodW5rCi0gICAgICAgIHNlbGYuX3NldF9kZWNvZGVkX2NoYXJzKHNlbGYuX2RlY29kZXIuZGVjb2RlKGlucHV0X2NodW5rLCBlb2YpKQorICAgICAgICBkZWNvZGVkX2NoYXJzID0gc2VsZi5fZGVjb2Rlci5kZWNvZGUoaW5wdXRfY2h1bmssIGVvZikKKyAgICAgICAgc2VsZi5fc2V0X2RlY29kZWRfY2hhcnMoZGVjb2RlZF9jaGFycykKKyAgICAgICAgaWYgZGVjb2RlZF9jaGFyczoKKyAgICAgICAgICAgIHNlbGYuX2IyY3JhdGlvID0gbGVuKGlucHV0X2NodW5rKSAvIGxlbihzZWxmLl9kZWNvZGVkX2NoYXJzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fYjJjcmF0aW8gPSAwLjAKIAogICAgICAgICBpZiBzZWxmLl90ZWxsaW5nOgogICAgICAgICAgICAgIyBBdCB0aGUgc25hcHNob3QgcG9pbnQsIGxlbihkZWNfYnVmZmVyKSBieXRlcyBiZWZvcmUgdGhlIHJlYWQsCkBAIC0xNzQ3LDIwICsxNzQ3LDU2IEBACiAgICAgICAgICMgZm9yd2FyZCB1bnRpbCBpdCBnaXZlcyB1cyBlbm91Z2ggZGVjb2RlZCBjaGFyYWN0ZXJzLgogICAgICAgICBzYXZlZF9zdGF0ZSA9IGRlY29kZXIuZ2V0c3RhdGUoKQogICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEZhc3Qgc2VhcmNoIGZvciBhbiBhY2NlcHRhYmxlIHN0YXJ0IHBvaW50LCBjbG9zZSB0byBvdXIKKyAgICAgICAgICAgICMgY3VycmVudCBwb3MuCisgICAgICAgICAgICAjIFJhdGlvbmFsZTogY2FsbGluZyBkZWNvZGVyLmRlY29kZSgpIGhhcyBhIGxhcmdlIG92ZXJoZWFkCisgICAgICAgICAgICAjIHJlZ2FyZGxlc3Mgb2YgY2h1bmsgc2l6ZTsgd2Ugd2FudCB0aGUgbnVtYmVyIG9mIHN1Y2ggY2FsbHMgdG8KKyAgICAgICAgICAgICMgYmUgTygxKSBpbiBtb3N0IHNpdHVhdGlvbnMgKGNvbW1vbiBkZWNvZGVycywgbm9uLWNyYXp5IGlucHV0KS4KKyAgICAgICAgICAgICMgQWN0dWFsbHksIGl0IHdpbGwgYmUgZXhhY3RseSAxIGZvciBmaXhlZC1zaXplIGNvZGVjcyAoYWxsCisgICAgICAgICAgICAjIDgtYml0IGNvZGVjcywgYWxzbyBVVEYtMTYgYW5kIFVURi0zMikuCisgICAgICAgICAgICBza2lwX2J5dGVzID0gaW50KHNlbGYuX2IyY3JhdGlvICogY2hhcnNfdG9fc2tpcCkKKyAgICAgICAgICAgIHNraXBfYmFjayA9IDEKKyAgICAgICAgICAgIGFzc2VydCBza2lwX2J5dGVzIDw9IGxlbihuZXh0X2lucHV0KQorICAgICAgICAgICAgd2hpbGUgc2tpcF9ieXRlcyA+IDA6CisgICAgICAgICAgICAgICAgZGVjb2Rlci5zZXRzdGF0ZSgoYicnLCBkZWNfZmxhZ3MpKQorICAgICAgICAgICAgICAgICMgRGVjb2RlIHVwIHRvIHRlbXB0YXRpdmUgc3RhcnQgcG9pbnQKKyAgICAgICAgICAgICAgICBuID0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfaW5wdXRbOnNraXBfYnl0ZXNdKSkKKyAgICAgICAgICAgICAgICBpZiBuIDw9IGNoYXJzX3RvX3NraXA6CisgICAgICAgICAgICAgICAgICAgIGIsIGQgPSBkZWNvZGVyLmdldHN0YXRlKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGI6CisgICAgICAgICAgICAgICAgICAgICAgICAjIEJlZm9yZSBwb3MgYW5kIG5vIGJ5dGVzIGJ1ZmZlcmVkIGluIGRlY29kZXIgPT4gT0sKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY19mbGFncyA9IGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzX3RvX3NraXAgLT0gbgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGJhY2sgYnkgYnVmZmVyZWQgYW1vdW50IGFuZCByZXNldCBoZXVyaXN0aWMKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBsZW4oYikKKyAgICAgICAgICAgICAgICAgICAgc2tpcF9iYWNrID0gMQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgV2UncmUgdG9vIGZhciBhaGVhZCwgc2tpcCBiYWNrIGEgYml0CisgICAgICAgICAgICAgICAgICAgIHNraXBfYnl0ZXMgLT0gc2tpcF9iYWNrCisgICAgICAgICAgICAgICAgICAgIHNraXBfYmFjayA9IHNraXBfYmFjayAqIDIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2tpcF9ieXRlcyA9IDAKKyAgICAgICAgICAgICAgICBkZWNvZGVyLnNldHN0YXRlKChiJycsIGRlY19mbGFncykpCisKICAgICAgICAgICAgICMgTm90ZSBvdXIgaW5pdGlhbCBzdGFydCBwb2ludC4KLSAgICAgICAgICAgIGRlY29kZXIuc2V0c3RhdGUoKGInJywgZGVjX2ZsYWdzKSkKLSAgICAgICAgICAgIHN0YXJ0X3BvcyA9IHBvc2l0aW9uCi0gICAgICAgICAgICBzdGFydF9mbGFncywgYnl0ZXNfZmVkLCBjaGFyc19kZWNvZGVkID0gZGVjX2ZsYWdzLCAwLCAwCi0gICAgICAgICAgICBuZWVkX2VvZiA9IDAKKyAgICAgICAgICAgIHN0YXJ0X3BvcyA9IHBvc2l0aW9uICsgc2tpcF9ieXRlcworICAgICAgICAgICAgc3RhcnRfZmxhZ3MgPSBkZWNfZmxhZ3MKKyAgICAgICAgICAgIGlmIGNoYXJzX3RvX3NraXAgPT0gMDoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmVuJ3QgbW92ZWQgZnJvbSB0aGUgc3RhcnQgcG9pbnQuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BhY2tfY29va2llKHN0YXJ0X3Bvcywgc3RhcnRfZmxhZ3MpCiAKICAgICAgICAgICAgICMgRmVlZCB0aGUgZGVjb2RlciBvbmUgYnl0ZSBhdCBhIHRpbWUuICBBcyB3ZSBnbywgbm90ZSB0aGUKICAgICAgICAgICAgICMgbmVhcmVzdCAic2FmZSBzdGFydCBwb2ludCIgYmVmb3JlIHRoZSBjdXJyZW50IGxvY2F0aW9uCiAgICAgICAgICAgICAjIChhIHBvaW50IHdoZXJlIHRoZSBkZWNvZGVyIGhhcyBub3RoaW5nIGJ1ZmZlcmVkLCBzbyBzZWVrKCkKICAgICAgICAgICAgICMgY2FuIHNhZmVseSBzdGFydCBmcm9tIHRoZXJlIGFuZCBhZHZhbmNlIHRvIHRoaXMgbG9jYXRpb24pLgotICAgICAgICAgICAgbmV4dF9ieXRlID0gYnl0ZWFycmF5KDEpCi0gICAgICAgICAgICBmb3IgbmV4dF9ieXRlWzBdIGluIG5leHRfaW5wdXQ6CisgICAgICAgICAgICBieXRlc19mZWQgPSAwCisgICAgICAgICAgICBuZWVkX2VvZiA9IDAKKyAgICAgICAgICAgICMgQ2hhcnMgZGVjb2RlZCBzaW5jZSBgc3RhcnRfcG9zYAorICAgICAgICAgICAgY2hhcnNfZGVjb2RlZCA9IDAKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNraXBfYnl0ZXMsIGxlbihuZXh0X2lucHV0KSk6CiAgICAgICAgICAgICAgICAgYnl0ZXNfZmVkICs9IDEKLSAgICAgICAgICAgICAgICBjaGFyc19kZWNvZGVkICs9IGxlbihkZWNvZGVyLmRlY29kZShuZXh0X2J5dGUpKQorICAgICAgICAgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbGVuKGRlY29kZXIuZGVjb2RlKG5leHRfaW5wdXRbaTppKzFdKSkKICAgICAgICAgICAgICAgICBkZWNfYnVmZmVyLCBkZWNfZmxhZ3MgPSBkZWNvZGVyLmdldHN0YXRlKCkKICAgICAgICAgICAgICAgICBpZiBub3QgZGVjX2J1ZmZlciBhbmQgY2hhcnNfZGVjb2RlZCA8PSBjaGFyc190b19za2lwOgogICAgICAgICAgICAgICAgICAgICAjIERlY29kZXIgYnVmZmVyIGlzIGVtcHR5LCBzbyB0aGlzIGlzIGEgc2FmZSBzdGFydCBwb2ludC4KQEAgLTE4MTksOCArMTg1NSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2Rlci5yZXNldCgpCiAgICAgICAgICAgICByZXR1cm4gcG9zaXRpb24KICAgICAgICAgaWYgd2hlbmNlICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHdoZW5jZSAoJXIsIHNob3VsZCBiZSAwLCAxIG9yIDIpIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aGVuY2UsKSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuc3VwcG9ydGVkIHdoZW5jZSAoJXIpIiAlICh3aGVuY2UsKSkKICAgICAgICAgaWYgY29va2llIDwgMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5lZ2F0aXZlIHNlZWsgcG9zaXRpb24gJXIiICUgKGNvb2tpZSwpKQogICAgICAgICBzZWxmLmZsdXNoKCkKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGZhMDYzNzYuLmIwY2QzZDYgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtNDg2LDE5ICs0ODYsMTkgQEAKIAogICAgIHJldHVybiAoeWVhciwgbW9udGgsIGRheSwKICAgICAgICAgICAgIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLAotICAgICAgICAgICAgd2Vla2RheSwganVsaWFuLCB0eiwgZ210b2ZmLCB0em5hbWUpLCBmcmFjdGlvbgorICAgICAgICAgICAgd2Vla2RheSwganVsaWFuLCB0eiwgdHpuYW1lLCBnbXRvZmYpLCBmcmFjdGlvbgogCiBkZWYgX3N0cnB0aW1lX3RpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSB0aW1lIHN0cnVjdCBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKICAgICBmb3JtYXQgc3RyaW5nLiIiIgogICAgIHR0ID0gX3N0cnB0aW1lKGRhdGFfc3RyaW5nLCBmb3JtYXQpWzBdCi0gICAgcmV0dXJuIHRpbWUuc3RydWN0X3RpbWUodHRbOjldKQorICAgIHJldHVybiB0aW1lLnN0cnVjdF90aW1lKHR0Wzp0aW1lLl9TVFJVQ1RfVE1fSVRFTVNdKQogCiBkZWYgX3N0cnB0aW1lX2RhdGV0aW1lKGNscywgZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSBjbGFzcyBjbHMgaW5zdGFuY2UgYmFzZWQgb24gdGhlIGlucHV0IHN0cmluZyBhbmQgdGhlCiAgICAgZm9ybWF0IHN0cmluZy4iIiIKICAgICB0dCwgZnJhY3Rpb24gPSBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdCkKLSAgICBnbXRvZmYsIHR6bmFtZSA9IHR0Wy0yOl0KKyAgICB0em5hbWUsIGdtdG9mZiA9IHR0Wy0yOl0KICAgICBhcmdzID0gdHRbOjZdICsgKGZyYWN0aW9uLCkKICAgICBpZiBnbXRvZmYgaXMgbm90IE5vbmU6CiAgICAgICAgIHR6ZGVsdGEgPSBkYXRldGltZV90aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpCmRpZmYgLS1naXQgYS9MaWIvYWJjLnB5IGIvTGliL2FiYy5weQppbmRleCBhNmMyZGM0Li4wOTc3OGU4IDEwMDY0NAotLS0gYS9MaWIvYWJjLnB5CisrKyBiL0xpYi9hYmMucHkKQEAgLTI2LDcgKzI2LDggQEAKIAogCiBjbGFzcyBhYnN0cmFjdGNsYXNzbWV0aG9kKGNsYXNzbWV0aG9kKToKLSAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IGNsYXNzbWV0aG9kcy4KKyAgICAiIiIKKyAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IGNsYXNzbWV0aG9kcy4KIAogICAgIFNpbWlsYXIgdG8gYWJzdHJhY3RtZXRob2QuCiAKQEAgLTM2LDYgKzM3LDkgQEAKICAgICAgICAgICAgIEBhYnN0cmFjdGNsYXNzbWV0aG9kCiAgICAgICAgICAgICBkZWYgbXlfYWJzdHJhY3RfY2xhc3NtZXRob2QoY2xzLCAuLi4pOgogICAgICAgICAgICAgICAgIC4uLgorCisgICAgJ2Fic3RyYWN0Y2xhc3NtZXRob2QnIGlzIGRlcHJlY2F0ZWQuIFVzZSAnY2xhc3NtZXRob2QnIHdpdGgKKyAgICAnYWJzdHJhY3RtZXRob2QnIGluc3RlYWQuCiAgICAgIiIiCiAKICAgICBfX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKQEAgLTQ2LDcgKzUwLDggQEAKIAogCiBjbGFzcyBhYnN0cmFjdHN0YXRpY21ldGhvZChzdGF0aWNtZXRob2QpOgotICAgICIiIkEgZGVjb3JhdG9yIGluZGljYXRpbmcgYWJzdHJhY3Qgc3RhdGljbWV0aG9kcy4KKyAgICAiIiIKKyAgICBBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHN0YXRpY21ldGhvZHMuCiAKICAgICBTaW1pbGFyIHRvIGFic3RyYWN0bWV0aG9kLgogCkBAIC01Niw2ICs2MSw5IEBACiAgICAgICAgICAgICBAYWJzdHJhY3RzdGF0aWNtZXRob2QKICAgICAgICAgICAgIGRlZiBteV9hYnN0cmFjdF9zdGF0aWNtZXRob2QoLi4uKToKICAgICAgICAgICAgICAgICAuLi4KKworICAgICdhYnN0cmFjdHN0YXRpY21ldGhvZCcgaXMgZGVwcmVjYXRlZC4gVXNlICdzdGF0aWNtZXRob2QnIHdpdGgKKyAgICAnYWJzdHJhY3RtZXRob2QnIGluc3RlYWQuCiAgICAgIiIiCiAKICAgICBfX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKQEAgLTY2LDcgKzc0LDggQEAKIAogCiBjbGFzcyBhYnN0cmFjdHByb3BlcnR5KHByb3BlcnR5KToKLSAgICAiIiJBIGRlY29yYXRvciBpbmRpY2F0aW5nIGFic3RyYWN0IHByb3BlcnRpZXMuCisgICAgIiIiCisgICAgQSBkZWNvcmF0b3IgaW5kaWNhdGluZyBhYnN0cmFjdCBwcm9wZXJ0aWVzLgogCiAgICAgUmVxdWlyZXMgdGhhdCB0aGUgbWV0YWNsYXNzIGlzIEFCQ01ldGEgb3IgZGVyaXZlZCBmcm9tIGl0LiAgQQogICAgIGNsYXNzIHRoYXQgaGFzIGEgbWV0YWNsYXNzIGRlcml2ZWQgZnJvbSBBQkNNZXRhIGNhbm5vdCBiZQpAQCAtODgsNyArOTcsMTEgQEAKICAgICAgICAgICAgIGRlZiBnZXR4KHNlbGYpOiAuLi4KICAgICAgICAgICAgIGRlZiBzZXR4KHNlbGYsIHZhbHVlKTogLi4uCiAgICAgICAgICAgICB4ID0gYWJzdHJhY3Rwcm9wZXJ0eShnZXR4LCBzZXR4KQorCisgICAgJ2Fic3RyYWN0cHJvcGVydHknIGlzIGRlcHJlY2F0ZWQuIFVzZSAncHJvcGVydHknIHdpdGggJ2Fic3RyYWN0bWV0aG9kJworICAgIGluc3RlYWQuCiAgICAgIiIiCisKICAgICBfX2lzYWJzdHJhY3RtZXRob2RfXyA9IFRydWUKIAogCkBAIC0xMzMsMTEgKzE0NiwxNCBAQAogICAgICAgICByZXR1cm4gY2xzCiAKICAgICBkZWYgcmVnaXN0ZXIoY2xzLCBzdWJjbGFzcyk6Ci0gICAgICAgICIiIlJlZ2lzdGVyIGEgdmlydHVhbCBzdWJjbGFzcyBvZiBhbiBBQkMuIiIiCisgICAgICAgICIiIlJlZ2lzdGVyIGEgdmlydHVhbCBzdWJjbGFzcyBvZiBhbiBBQkMuCisKKyAgICAgICAgUmV0dXJucyB0aGUgc3ViY2xhc3MsIHRvIGFsbG93IHVzYWdlIGFzIGEgY2xhc3MgZGVjb3JhdG9yLgorICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3ViY2xhc3MsIHR5cGUpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJDYW4gb25seSByZWdpc3RlciBjbGFzc2VzIikKICAgICAgICAgaWYgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xzKToKLSAgICAgICAgICAgIHJldHVybiAgIyBBbHJlYWR5IGEgc3ViY2xhc3MKKyAgICAgICAgICAgIHJldHVybiBzdWJjbGFzcyAgIyBBbHJlYWR5IGEgc3ViY2xhc3MKICAgICAgICAgIyBTdWJ0bGU6IHRlc3QgZm9yIGN5Y2xlcyAqYWZ0ZXIqIHRlc3RpbmcgZm9yICJhbHJlYWR5IGEgc3ViY2xhc3MiOwogICAgICAgICAjIHRoaXMgbWVhbnMgd2UgYWxsb3cgWC5yZWdpc3RlcihYKSBhbmQgaW50ZXJwcmV0IGl0IGFzIGEgbm8tb3AuCiAgICAgICAgIGlmIGlzc3ViY2xhc3MoY2xzLCBzdWJjbGFzcyk6CkBAIC0xNDUsNiArMTYxLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiUmVmdXNpbmcgdG8gY3JlYXRlIGFuIGluaGVyaXRhbmNlIGN5Y2xlIikKICAgICAgICAgY2xzLl9hYmNfcmVnaXN0cnkuYWRkKHN1YmNsYXNzKQogICAgICAgICBBQkNNZXRhLl9hYmNfaW52YWxpZGF0aW9uX2NvdW50ZXIgKz0gMSAgIyBJbnZhbGlkYXRlIG5lZ2F0aXZlIGNhY2hlCisgICAgICAgIHJldHVybiBzdWJjbGFzcwogCiAgICAgZGVmIF9kdW1wX3JlZ2lzdHJ5KGNscywgZmlsZT1Ob25lKToKICAgICAgICAgIiIiRGVidWcgaGVscGVyIHRvIHByaW50IHRoZSBBQkMgcmVnaXN0cnkuIiIiCmRpZmYgLS1naXQgYS9MaWIvYWlmYy5weSBiL0xpYi9haWZjLnB5CmluZGV4IDc3NWYzOWMuLmVjNGY4MjIgMTAwNjQ0Ci0tLSBhL0xpYi9haWZjLnB5CisrKyBiL0xpYi9haWZjLnB5CkBAIC0xMzYsNiArMTM2LDcgQEAKIAogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgd2FybmluZ3MKIAogX19hbGxfXyA9IFsiRXJyb3IiLCAib3BlbiIsICJvcGVuZnAiXQogCkBAIC00NDAsNyArNDQxLDcgQEAKICAgICAgICAgICAgIGtsdWRnZSA9IDAKICAgICAgICAgICAgIGlmIGNodW5rLmNodW5rc2l6ZSA9PSAxODoKICAgICAgICAgICAgICAgICBrbHVkZ2UgPSAxCi0gICAgICAgICAgICAgICAgcHJpbnQoJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemUnKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ1dhcm5pbmc6IGJhZCBDT01NIGNodW5rIHNpemUnKQogICAgICAgICAgICAgICAgIGNodW5rLmNodW5rc2l6ZSA9IDIzCiAgICAgICAgICAgICAjREVCVUcgZW5kCiAgICAgICAgICAgICBzZWxmLl9jb21wdHlwZSA9IGNodW5rLnJlYWQoNCkKQEAgLTQ4NCwxMSArNDg1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICMgYSBwb3NpdGlvbiAwIGFuZCBuYW1lICcnCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21hcmtlcnMuYXBwZW5kKChpZCwgcG9zLCBuYW1lKSkKICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgotICAgICAgICAgICAgcHJpbnQoJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seScsIGVuZD0nICcpCi0gICAgICAgICAgICBwcmludChsZW4oc2VsZi5fbWFya2VycyksIGVuZD0nICcpCi0gICAgICAgICAgICBpZiBsZW4oc2VsZi5fbWFya2VycykgPT0gMTogcHJpbnQoJ21hcmtlcicsIGVuZD0nICcpCi0gICAgICAgICAgICBlbHNlOiBwcmludCgnbWFya2VycycsIGVuZD0nICcpCi0gICAgICAgICAgICBwcmludCgnaW5zdGVhZCBvZicsIG5tYXJrZXJzKQorICAgICAgICAgICAgdyA9ICgnV2FybmluZzogTUFSSyBjaHVuayBjb250YWlucyBvbmx5ICVzIG1hcmtlciVzIGluc3RlYWQgb2YgJXMnICUKKyAgICAgICAgICAgICAgICAgKGxlbihzZWxmLl9tYXJrZXJzKSwgJycgaWYgbGVuKHNlbGYuX21hcmtlcnMpID09IDEgZWxzZSAncycsCisgICAgICAgICAgICAgICAgICBubWFya2VycykpCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKHcpCiAKIGNsYXNzIEFpZmNfd3JpdGU6CiAgICAgIyBWYXJpYWJsZXMgdXNlZCBpbiB0aGlzIGNsYXNzOgpkaWZmIC0tZ2l0IGEvTGliL2FyZ3BhcnNlLnB5IGIvTGliL2FyZ3BhcnNlLnB5CmluZGV4IGViODk0Y2EuLmYyNWIxYjYgMTAwNjQ0Ci0tLSBhL0xpYi9hcmdwYXJzZS5weQorKysgYi9MaWIvYXJncGFyc2UucHkKQEAgLTcxLDYgKzcxLDcgQEAKICAgICAnQXJndW1lbnREZWZhdWx0c0hlbHBGb3JtYXR0ZXInLAogICAgICdSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXInLAogICAgICdSYXdUZXh0SGVscEZvcm1hdHRlcicsCisgICAgJ01ldGF2YXJUeXBlSGVscEZvcm1hdHRlcicsCiAgICAgJ05hbWVzcGFjZScsCiAgICAgJ0FjdGlvbicsCiAgICAgJ09ORV9PUl9NT1JFJywKQEAgLTQxOSw3ICs0MjAsOCBAQAogCiAgICAgICAgICAgICAjIHByb2R1Y2UgYWxsIGFyZyBzdHJpbmdzCiAgICAgICAgICAgICBlbGlmIG5vdCBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6Ci0gICAgICAgICAgICAgICAgcGFydCA9IHNlbGYuX2Zvcm1hdF9hcmdzKGFjdGlvbiwgYWN0aW9uLmRlc3QpCisgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoYWN0aW9uKQorICAgICAgICAgICAgICAgIHBhcnQgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGRlZmF1bHQpCiAKICAgICAgICAgICAgICAgICAjIGlmIGl0J3MgaW4gYSBncm91cCwgc3RyaXAgdGhlIG91dGVyIFtdCiAgICAgICAgICAgICAgICAgaWYgYWN0aW9uIGluIGdyb3VwX2FjdGlvbnM6CkBAIC00NDEsNyArNDQzLDcgQEAKICAgICAgICAgICAgICAgICAjIGlmIHRoZSBPcHRpb25hbCB0YWtlcyBhIHZhbHVlLCBmb3JtYXQgaXM6CiAgICAgICAgICAgICAgICAgIyAgICAtcyBBUkdTIG9yIC0tbG9uZyBBUkdTCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IGFjdGlvbi5kZXN0LnVwcGVyKCkKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCA9IHNlbGYuX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKGFjdGlvbikKICAgICAgICAgICAgICAgICAgICAgYXJnc19zdHJpbmcgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgICAgIHBhcnQgPSAnJXMgJXMnICUgKG9wdGlvbl9zdHJpbmcsIGFyZ3Nfc3RyaW5nKQogCkBAIC01MjcsNyArNTI5LDggQEAKIAogICAgIGRlZiBfZm9ybWF0X2FjdGlvbl9pbnZvY2F0aW9uKHNlbGYsIGFjdGlvbik6CiAgICAgICAgIGlmIG5vdCBhY3Rpb24ub3B0aW9uX3N0cmluZ3M6Ci0gICAgICAgICAgICBtZXRhdmFyLCA9IHNlbGYuX21ldGF2YXJfZm9ybWF0dGVyKGFjdGlvbiwgYWN0aW9uLmRlc3QpKDEpCisgICAgICAgICAgICBkZWZhdWx0ID0gc2VsZi5fZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3JfcG9zaXRpb25hbChhY3Rpb24pCisgICAgICAgICAgICBtZXRhdmFyLCA9IHNlbGYuX21ldGF2YXJfZm9ybWF0dGVyKGFjdGlvbiwgZGVmYXVsdCkoMSkKICAgICAgICAgICAgIHJldHVybiBtZXRhdmFyCiAKICAgICAgICAgZWxzZToKQEAgLTU0MSw3ICs1NDQsNyBAQAogICAgICAgICAgICAgIyBpZiB0aGUgT3B0aW9uYWwgdGFrZXMgYSB2YWx1ZSwgZm9ybWF0IGlzOgogICAgICAgICAgICAgIyAgICAtcyBBUkdTLCAtLWxvbmcgQVJHUwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZWZhdWx0ID0gYWN0aW9uLmRlc3QudXBwZXIoKQorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9nZXRfZGVmYXVsdF9tZXRhdmFyX2Zvcl9vcHRpb25hbChhY3Rpb24pCiAgICAgICAgICAgICAgICAgYXJnc19zdHJpbmcgPSBzZWxmLl9mb3JtYXRfYXJncyhhY3Rpb24sIGRlZmF1bHQpCiAgICAgICAgICAgICAgICAgZm9yIG9wdGlvbl9zdHJpbmcgaW4gYWN0aW9uLm9wdGlvbl9zdHJpbmdzOgogICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyVzICVzJyAlIChvcHRpb25fc3RyaW5nLCBhcmdzX3N0cmluZykpCkBAIC02MTksNiArNjIyLDEyIEBACiAgICAgZGVmIF9nZXRfaGVscF9zdHJpbmcoc2VsZiwgYWN0aW9uKToKICAgICAgICAgcmV0dXJuIGFjdGlvbi5oZWxwCiAKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX29wdGlvbmFsKHNlbGYsIGFjdGlvbik6CisgICAgICAgIHJldHVybiBhY3Rpb24uZGVzdC51cHBlcigpCisKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi5kZXN0CisKIAogY2xhc3MgUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyKEhlbHBGb3JtYXR0ZXIpOgogICAgICIiIkhlbHAgbWVzc2FnZSBmb3JtYXR0ZXIgd2hpY2ggcmV0YWlucyBhbnkgZm9ybWF0dGluZyBpbiBkZXNjcmlwdGlvbnMuCkBAIC02MjgsNyArNjM3LDcgQEAKICAgICAiIiIKIAogICAgIGRlZiBfZmlsbF90ZXh0KHNlbGYsIHRleHQsIHdpZHRoLCBpbmRlbnQpOgotICAgICAgICByZXR1cm4gJycuam9pbihbaW5kZW50ICsgbGluZSBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoVHJ1ZSldKQorICAgICAgICByZXR1cm4gJycuam9pbihpbmRlbnQgKyBsaW5lIGZvciBsaW5lIGluIHRleHQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogCiBjbGFzcyBSYXdUZXh0SGVscEZvcm1hdHRlcihSYXdEZXNjcmlwdGlvbkhlbHBGb3JtYXR0ZXIpOgpAQCAtNjU5LDYgKzY2OCwyMiBAQAogICAgICAgICByZXR1cm4gaGVscAogCiAKK2NsYXNzIE1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcihIZWxwRm9ybWF0dGVyKToKKyAgICAiIiJIZWxwIG1lc3NhZ2UgZm9ybWF0dGVyIHdoaWNoIHVzZXMgdGhlIGFyZ3VtZW50ICd0eXBlJyBhcyB0aGUgZGVmYXVsdAorICAgIG1ldGF2YXIgdmFsdWUgKGluc3RlYWQgb2YgdGhlIGFyZ3VtZW50ICdkZXN0JykKKworICAgIE9ubHkgdGhlIG5hbWUgb2YgdGhpcyBjbGFzcyBpcyBjb25zaWRlcmVkIGEgcHVibGljIEFQSS4gQWxsIHRoZSBtZXRob2RzCisgICAgcHJvdmlkZWQgYnkgdGhlIGNsYXNzIGFyZSBjb25zaWRlcmVkIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KKyAgICAiIiIKKworICAgIGRlZiBfZ2V0X2RlZmF1bHRfbWV0YXZhcl9mb3Jfb3B0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlLl9fbmFtZV9fCisKKyAgICBkZWYgX2dldF9kZWZhdWx0X21ldGF2YXJfZm9yX3Bvc2l0aW9uYWwoc2VsZiwgYWN0aW9uKToKKyAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlLl9fbmFtZV9fCisKKworCiAjID09PT09PT09PT09PT09PT09PT09PQogIyBPcHRpb25zIGFuZCBBcmd1bWVudHMKICMgPT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTU0LDcgKzE1NzksNiBAQAogICAgICAgICAgICAgICAgICB1c2FnZT1Ob25lLAogICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1Ob25lLAogICAgICAgICAgICAgICAgICBlcGlsb2c9Tm9uZSwKLSAgICAgICAgICAgICAgICAgdmVyc2lvbj1Ob25lLAogICAgICAgICAgICAgICAgICBwYXJlbnRzPVtdLAogICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9SGVscEZvcm1hdHRlciwKICAgICAgICAgICAgICAgICAgcHJlZml4X2NoYXJzPSctJywKQEAgLTE1NjMsMTQgKzE1ODcsNiBAQAogICAgICAgICAgICAgICAgICBjb25mbGljdF9oYW5kbGVyPSdlcnJvcicsCiAgICAgICAgICAgICAgICAgIGFkZF9oZWxwPVRydWUpOgogCi0gICAgICAgIGlmIHZlcnNpb24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAgICAgIiIiVGhlICJ2ZXJzaW9uIiBhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBkZXByZWNhdGVkLiAiIiIKLSAgICAgICAgICAgICAgICAiIiJQbGVhc2UgdXNlICIiIgotICAgICAgICAgICAgICAgICIiIiJhZGRfYXJndW1lbnQoLi4uLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSJOIiwgLi4uKSIgIiIiCi0gICAgICAgICAgICAgICAgIiIiaW5zdGVhZCIiIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotCiAgICAgICAgIHN1cGVyaW5pdCA9IHN1cGVyKEFyZ3VtZW50UGFyc2VyLCBzZWxmKS5fX2luaXRfXwogICAgICAgICBzdXBlcmluaXQoZGVzY3JpcHRpb249ZGVzY3JpcHRpb24sCiAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2hhcnM9cHJlZml4X2NoYXJzLApAQCAtMTU4NCw3ICsxNjAwLDYgQEAKICAgICAgICAgc2VsZi5wcm9nID0gcHJvZwogICAgICAgICBzZWxmLnVzYWdlID0gdXNhZ2UKICAgICAgICAgc2VsZi5lcGlsb2cgPSBlcGlsb2cKLSAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgogICAgICAgICBzZWxmLmZvcm1hdHRlcl9jbGFzcyA9IGZvcm1hdHRlcl9jbGFzcwogICAgICAgICBzZWxmLmZyb21maWxlX3ByZWZpeF9jaGFycyA9IGZyb21maWxlX3ByZWZpeF9jaGFycwogICAgICAgICBzZWxmLmFkZF9oZWxwID0gYWRkX2hlbHAKQEAgLTE1OTksNyArMTYxNCw3IEBACiAgICAgICAgICAgICByZXR1cm4gc3RyaW5nCiAgICAgICAgIHNlbGYucmVnaXN0ZXIoJ3R5cGUnLCBOb25lLCBpZGVudGl0eSkKIAotICAgICAgICAjIGFkZCBoZWxwIGFuZCB2ZXJzaW9uIGFyZ3VtZW50cyBpZiBuZWNlc3NhcnkKKyAgICAgICAgIyBhZGQgaGVscCBhcmd1bWVudCBpZiBuZWNlc3NhcnkKICAgICAgICAgIyAodXNpbmcgZXhwbGljaXQgZGVmYXVsdCB0byBvdmVycmlkZSBnbG9iYWwgYXJndW1lbnRfZGVmYXVsdCkKICAgICAgICAgZGVmYXVsdF9wcmVmaXggPSAnLScgaWYgJy0nIGluIHByZWZpeF9jaGFycyBlbHNlIHByZWZpeF9jaGFyc1swXQogICAgICAgICBpZiBzZWxmLmFkZF9oZWxwOgpAQCAtMTYwNywxMiArMTYyMiw2IEBACiAgICAgICAgICAgICAgICAgZGVmYXVsdF9wcmVmaXgrJ2gnLCBkZWZhdWx0X3ByZWZpeCoyKydoZWxwJywKICAgICAgICAgICAgICAgICBhY3Rpb249J2hlbHAnLCBkZWZhdWx0PVNVUFBSRVNTLAogICAgICAgICAgICAgICAgIGhlbHA9Xygnc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdCcpKQotICAgICAgICBpZiBzZWxmLnZlcnNpb246Ci0gICAgICAgICAgICBzZWxmLmFkZF9hcmd1bWVudCgKLSAgICAgICAgICAgICAgICBkZWZhdWx0X3ByZWZpeCsndicsIGRlZmF1bHRfcHJlZml4KjIrJ3ZlcnNpb24nLAotICAgICAgICAgICAgICAgIGFjdGlvbj0ndmVyc2lvbicsIGRlZmF1bHQ9U1VQUFJFU1MsCi0gICAgICAgICAgICAgICAgdmVyc2lvbj1zZWxmLnZlcnNpb24sCi0gICAgICAgICAgICAgICAgaGVscD1fKCJzaG93IHByb2dyYW0ncyB2ZXJzaW9uIG51bWJlciBhbmQgZXhpdCIpKQogCiAgICAgICAgICMgYWRkIHBhcmVudCBhcmd1bWVudHMgYW5kIGRlZmF1bHRzCiAgICAgICAgIGZvciBwYXJlbnQgaW4gcGFyZW50czoKQEAgLTE2MzIsNyArMTY0MSw2IEBACiAgICAgICAgICAgICAncHJvZycsCiAgICAgICAgICAgICAndXNhZ2UnLAogICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICd2ZXJzaW9uJywKICAgICAgICAgICAgICdmb3JtYXR0ZXJfY2xhc3MnLAogICAgICAgICAgICAgJ2NvbmZsaWN0X2hhbmRsZXInLAogICAgICAgICAgICAgJ2FkZF9oZWxwJywKQEAgLTE5NDAsMjkgKzE5NDgsMjkgQEAKICAgICAgICAgIyBpZiB3ZSBkaWRuJ3QgY29uc3VtZSBhbGwgdGhlIGFyZ3VtZW50IHN0cmluZ3MsIHRoZXJlIHdlcmUgZXh0cmFzCiAgICAgICAgIGV4dHJhcy5leHRlbmQoYXJnX3N0cmluZ3Nbc3RvcF9pbmRleDpdKQogCi0gICAgICAgICMgaWYgd2UgZGlkbid0IHVzZSBhbGwgdGhlIFBvc2l0aW9uYWwgb2JqZWN0cywgdGhlcmUgd2VyZSB0b28gZmV3Ci0gICAgICAgICMgYXJnIHN0cmluZ3Mgc3VwcGxpZWQuCi0gICAgICAgIGlmIHBvc2l0aW9uYWxzOgotICAgICAgICAgICAgc2VsZi5lcnJvcihfKCd0b28gZmV3IGFyZ3VtZW50cycpKQotCi0gICAgICAgICMgbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBhY3Rpb25zIHdlcmUgcHJlc2VudCwgYW5kIGNvbnZlcnQgZGVmYXVsdHMuCisgICAgICAgICMgbWFrZSBzdXJlIGFsbCByZXF1aXJlZCBhY3Rpb25zIHdlcmUgcHJlc2VudCBhbmQgYWxzbyBjb252ZXJ0CisgICAgICAgICMgYWN0aW9uIGRlZmF1bHRzIHdoaWNoIHdlcmUgbm90IGdpdmVuIGFzIGFyZ3VtZW50cworICAgICAgICByZXF1aXJlZF9hY3Rpb25zID0gW10KICAgICAgICAgZm9yIGFjdGlvbiBpbiBzZWxmLl9hY3Rpb25zOgogICAgICAgICAgICAgaWYgYWN0aW9uIG5vdCBpbiBzZWVuX2FjdGlvbnM6CiAgICAgICAgICAgICAgICAgaWYgYWN0aW9uLnJlcXVpcmVkOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gX2dldF9hY3Rpb25fbmFtZShhY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygnYXJndW1lbnQgJXMgaXMgcmVxdWlyZWQnKSAlIG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkX2FjdGlvbnMuYXBwZW5kKF9nZXRfYWN0aW9uX25hbWUoYWN0aW9uKSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgYWN0aW9uIGRlZmF1bHQgbm93IGluc3RlYWQgb2YgZG9pbmcgaXQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICMgcGFyc2luZyBhcmd1bWVudHMgdG8gYXZvaWQgY2FsbGluZyBjb252ZXJ0IGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgICAgICAjIHR3aWNlICh3aGljaCBtYXkgZmFpbCkgaWYgdGhlIGFyZ3VtZW50IHdhcyBnaXZlbiwgYnV0CiAgICAgICAgICAgICAgICAgICAgICMgb25seSBpZiBpdCB3YXMgZGVmaW5lZCBhbHJlYWR5IGluIHRoZSBuYW1lc3BhY2UKICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5kZWZhdWx0IGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYWN0aW9uLmRlZmF1bHQsIHN0cikgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZGVmYXVsdCBpcyBnZXRhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UoYWN0aW9uLmRlZmF1bHQsIHN0cikgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRlZmF1bHQgaXMgZ2V0YXR0cihuYW1lc3BhY2UsIGFjdGlvbi5kZXN0KSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKG5hbWVzcGFjZSwgYWN0aW9uLmRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF92YWx1ZShhY3Rpb24sIGFjdGlvbi5kZWZhdWx0KSkKIAorICAgICAgICBpZiByZXF1aXJlZF9hY3Rpb25zOgorICAgICAgICAgICAgc2VsZi5lcnJvcihfKCd0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQ6ICVzJykgJQorICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4ocmVxdWlyZWRfYWN0aW9ucykpCisKICAgICAgICAgIyBtYWtlIHN1cmUgYWxsIHJlcXVpcmVkIGdyb3VwcyBoYWQgb25lIG9wdGlvbiBwcmVzZW50CiAgICAgICAgIGZvciBncm91cCBpbiBzZWxmLl9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXBzOgogICAgICAgICAgICAgaWYgZ3JvdXAucmVxdWlyZWQ6CkBAIC0yMzE0LDE2ICsyMzIyLDYgQEAKICAgICAgICAgIyBkZXRlcm1pbmUgaGVscCBmcm9tIGZvcm1hdCBhYm92ZQogICAgICAgICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdF9oZWxwKCkKIAotICAgIGRlZiBmb3JtYXRfdmVyc2lvbihzZWxmKToKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAnVGhlIGZvcm1hdF92ZXJzaW9uIG1ldGhvZCBpcyBkZXByZWNhdGVkIC0tIHRoZSAidmVyc2lvbiIgJwotICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIEFyZ3VtZW50UGFyc2VyIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuJywKLSAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgZm9ybWF0dGVyID0gc2VsZi5fZ2V0X2Zvcm1hdHRlcigpCi0gICAgICAgIGZvcm1hdHRlci5hZGRfdGV4dChzZWxmLnZlcnNpb24pCi0gICAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0X2hlbHAoKQotCiAgICAgZGVmIF9nZXRfZm9ybWF0dGVyKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5mb3JtYXR0ZXJfY2xhc3MocHJvZz1zZWxmLnByb2cpCiAKQEAgLTIzNDAsMTQgKzIzMzgsNiBAQAogICAgICAgICAgICAgZmlsZSA9IF9zeXMuc3Rkb3V0CiAgICAgICAgIHNlbGYuX3ByaW50X21lc3NhZ2Uoc2VsZi5mb3JtYXRfaGVscCgpLCBmaWxlKQogCi0gICAgZGVmIHByaW50X3ZlcnNpb24oc2VsZiwgZmlsZT1Ob25lKToKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICAnVGhlIHByaW50X3ZlcnNpb24gbWV0aG9kIGlzIGRlcHJlY2F0ZWQgLS0gdGhlICJ2ZXJzaW9uIiAnCi0gICAgICAgICAgICAnYXJndW1lbnQgdG8gQXJndW1lbnRQYXJzZXIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4nLAotICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICBzZWxmLl9wcmludF9tZXNzYWdlKHNlbGYuZm9ybWF0X3ZlcnNpb24oKSwgZmlsZSkKLQogICAgIGRlZiBfcHJpbnRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBmaWxlPU5vbmUpOgogICAgICAgICBpZiBtZXNzYWdlOgogICAgICAgICAgICAgaWYgZmlsZSBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL2FzdC5weSBiL0xpYi9hc3QucHkKaW5kZXggZmI1YWRhYy4uMTNmNTlmOSAxMDA2NDQKLS0tIGEvTGliL2FzdC5weQorKysgYi9MaWIvYXN0LnB5CkBAIC0yNSw3ICsyNSw2IEBACiAgICAgOmxpY2Vuc2U6IFB5dGhvbiBMaWNlbnNlLgogIiIiCiBmcm9tIF9hc3QgaW1wb3J0ICoKLWZyb20gX2FzdCBpbXBvcnQgX192ZXJzaW9uX18KIAogCiBkZWYgcGFyc2Uoc291cmNlLCBmaWxlbmFtZT0nPHVua25vd24+JywgbW9kZT0nZXhlYycpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaGF0LnB5IGIvTGliL2FzeW5jaGF0LnB5CmluZGV4IDY1NTg1MTIuLjRlMjZiYjUgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2hhdC5weQorKysgYi9MaWIvYXN5bmNoYXQucHkKQEAgLTQ5LDE4ICs0OSw2IEBACiBpbXBvcnQgYXN5bmNvcmUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiAKLWRlZiBidWZmZXIob2JqLCBzdGFydD1Ob25lLCBzdG9wPU5vbmUpOgotICAgICMgaWYgbWVtb3J5dmlldyBvYmplY3RzIGdhaW4gc2xpY2luZyBzZW1hbnRpY3MsCi0gICAgIyB0aGlzIGZ1bmN0aW9uIHdpbGwgY2hhbmdlIGZvciB0aGUgYmV0dGVyCi0gICAgIyBtZW1vcnl2aWV3IHVzZWQgZm9yIHRoZSBUeXBlRXJyb3IKLSAgICBtZW1vcnl2aWV3KG9iaikKLSAgICBpZiBzdGFydCA9PSBOb25lOgotICAgICAgICBzdGFydCA9IDAKLSAgICBpZiBzdG9wID09IE5vbmU6Ci0gICAgICAgIHN0b3AgPSBsZW4ob2JqKQotICAgIHggPSBvYmpbc3RhcnQ6c3RvcF0KLSAgICAjIyBwcmludCgiYnVmZmVyIHR5cGUgaXM6ICVzIiUodHlwZSh4KSwpKQotICAgIHJldHVybiB4CiAKIGNsYXNzIGFzeW5jX2NoYXQgKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgICIiIlRoaXMgaXMgYW4gYWJzdHJhY3QgY2xhc3MuICBZb3UgbXVzdCBkZXJpdmUgZnJvbSB0aGlzIGNsYXNzLCBhbmQgYWRkCkBAIC03NSw3ICs2Myw3IEBACiAgICAgIyBzaWduIG9mIGFuIGFwcGxpY2F0aW9uIGJ1ZyB0aGF0IHdlIGRvbid0IHdhbnQgdG8gcGFzcyBzaWxlbnRseQogCiAgICAgdXNlX2VuY29kaW5nICAgICAgICAgICAgPSAwCi0gICAgZW5jb2RpbmcgICAgICAgICAgICAgICAgPSAnbGF0aW4xJworICAgIGVuY29kaW5nICAgICAgICAgICAgICAgID0gJ2xhdGluLTEnCiAKICAgICBkZWYgX19pbml0X18gKHNlbGYsIHNvY2s9Tm9uZSwgbWFwPU5vbmUpOgogICAgICAgICAjIGZvciBzdHJpbmcgdGVybWluYXRvciBtYXRjaGluZwpAQCAtMjQwLDcgKzIyOCw3IEBACiAgICAgICAgICAgICAjIGhhbmRsZSBjbGFzc2ljIHByb2R1Y2VyIGJlaGF2aW9yCiAgICAgICAgICAgICBvYnMgPSBzZWxmLmFjX291dF9idWZmZXJfc2l6ZQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRhdGEgPSBidWZmZXIoZmlyc3QsIDAsIG9icykKKyAgICAgICAgICAgICAgICBkYXRhID0gZmlyc3RbOm9ic10KICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgZGF0YSA9IGZpcnN0Lm1vcmUoKQogICAgICAgICAgICAgICAgIGlmIGRhdGE6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggYjA2MDc3Zi4uMmNhYzg4YiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtNTQsNyArNTQsNyBAQAogCiBpbXBvcnQgb3MKIGZyb20gZXJybm8gaW1wb3J0IEVBTFJFQURZLCBFSU5QUk9HUkVTUywgRVdPVUxEQkxPQ0ssIEVDT05OUkVTRVQsIEVJTlZBTCwgXAotICAgICBFTk9UQ09OTiwgRVNIVVRET1dOLCBFSU5UUiwgRUlTQ09OTiwgRUJBREYsIEVDT05OQUJPUlRFRCwgRVBJUEUsIEVBR0FJTiwgXAorICAgICBFTk9UQ09OTiwgRVNIVVRET1dOLCBFSVNDT05OLCBFQkFERiwgRUNPTk5BQk9SVEVELCBFUElQRSwgRUFHQUlOLCBcCiAgICAgIGVycm9yY29kZQogCiBfRElTQ09OTkVDVEVEID0gZnJvemVuc2V0KChFQ09OTlJFU0VULCBFTk9UQ09OTiwgRVNIVVRET1dOLCBFQ09OTkFCT1JURUQsIEVQSVBFLApAQCAtMTQzLDExICsxNDMsOCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHIsIHcsIGUgPSBzZWxlY3Quc2VsZWN0KHIsIHcsIGUsIHRpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBzZWxlY3QuZXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmFyZ3NbMF0gIT0gRUlOVFI6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZm9yIGZkIGluIHI6CiAgICAgICAgICAgICBvYmogPSBtYXAuZ2V0KGZkKQpAQCAtMTg0LDE1ICsxODEsMTAgQEAKICAgICAgICAgICAgIGlmIG9iai53cml0YWJsZSgpIGFuZCBub3Qgb2JqLmFjY2VwdGluZzoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBzZWxlY3QuUE9MTE9VVAogICAgICAgICAgICAgaWYgZmxhZ3M6Ci0gICAgICAgICAgICAgICAgIyBPbmx5IGNoZWNrIGZvciBleGNlcHRpb25zIGlmIG9iamVjdCB3YXMgZWl0aGVyIHJlYWRhYmxlCi0gICAgICAgICAgICAgICAgIyBvciB3cml0YWJsZS4KLSAgICAgICAgICAgICAgICBmbGFncyB8PSBzZWxlY3QuUE9MTEVSUiB8IHNlbGVjdC5QT0xMSFVQIHwgc2VsZWN0LlBPTExOVkFMCiAgICAgICAgICAgICAgICAgcG9sbHN0ZXIucmVnaXN0ZXIoZmQsIGZsYWdzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gcG9sbHN0ZXIucG9sbCh0aW1lb3V0KQotICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKLSAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IEVJTlRSOgotICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgogICAgICAgICAgICAgciA9IFtdCiAgICAgICAgIGZvciBmZCwgZmxhZ3MgaW4gcjoKICAgICAgICAgICAgIG9iaiA9IG1hcC5nZXQoZmQpCkBAIC0yOTIsNyArMjg0LDcgQEAKICAgICAgICAgICAgIGRlbCBtYXBbZmRdCiAgICAgICAgIHNlbGYuX2ZpbGVubyA9IE5vbmUKIAotICAgIGRlZiBjcmVhdGVfc29ja2V0KHNlbGYsIGZhbWlseSwgdHlwZSk6CisgICAgZGVmIGNyZWF0ZV9zb2NrZXQoc2VsZiwgZmFtaWx5PXNvY2tldC5BRl9JTkVULCB0eXBlPXNvY2tldC5TT0NLX1NUUkVBTSk6CiAgICAgICAgIHNlbGYuZmFtaWx5X2FuZF90eXBlID0gZmFtaWx5LCB0eXBlCiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgdHlwZSkKICAgICAgICAgc29jay5zZXRibG9ja2luZygwKQpkaWZmIC0tZ2l0IGEvTGliL2Jhc2U2NC5weSBiL0xpYi9iYXNlNjQucHkKaW5kZXggODk1ZDgxMy4uNDA0MmYwMCAxMDA3NTUKLS0tIGEvTGliL2Jhc2U2NC5weQorKysgYi9MaWIvYmFzZTY0LnB5CkBAIC0yOSwxNCArMjksMTYgQEAKIAogYnl0ZXNfdHlwZXMgPSAoYnl0ZXMsIGJ5dGVhcnJheSkgICMgVHlwZXMgYWNjZXB0YWJsZSBhcyBiaW5hcnkgZGF0YQogCi0KLWRlZiBfdHJhbnNsYXRlKHMsIGFsdGNoYXJzKToKLSAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBieXRlc190eXBlcyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBzLl9fY2xhc3NfXy5fX25hbWVfXykKLSAgICB0cmFuc2xhdGlvbiA9IGJ5dGVhcnJheShyYW5nZSgyNTYpKQotICAgIGZvciBrLCB2IGluIGFsdGNoYXJzLml0ZW1zKCk6Ci0gICAgICAgIHRyYW5zbGF0aW9uW29yZChrKV0gPSB2WzBdCi0gICAgcmV0dXJuIHMudHJhbnNsYXRlKHRyYW5zbGF0aW9uKQorZGVmIF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpOgorICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzdHJpbmcgYXJndW1lbnQgc2hvdWxkIGNvbnRhaW4gb25seSBBU0NJSSBjaGFyYWN0ZXJzJykKKyAgICBlbGlmIGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgorICAgICAgICByZXR1cm4gcworICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYXJndW1lbnQgc2hvdWxkIGJlIGJ5dGVzIG9yIEFTQ0lJIHN0cmluZywgbm90ICVzIiAlIHMuX19jbGFzc19fLl9fbmFtZV9fKQogCiAKIApAQCAtNjEsNyArNjMsNyBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgbm90ICVzIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWx0Y2hhcnMuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQotICAgICAgICByZXR1cm4gX3RyYW5zbGF0ZShlbmNvZGVkLCB7JysnOiBhbHRjaGFyc1swOjFdLCAnLyc6IGFsdGNoYXJzWzE6Ml19KQorICAgICAgICByZXR1cm4gZW5jb2RlZC50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBhbHRjaGFycykpCiAgICAgcmV0dXJuIGVuY29kZWQKIAogCkBAIC03OSwxNCArODEsMTEgQEAKICAgICBkaXNjYXJkZWQgcHJpb3IgdG8gdGhlIHBhZGRpbmcgY2hlY2suICBJZiB2YWxpZGF0ZSBpcyBUcnVlLAogICAgIG5vbi1iYXNlNjQtYWxwaGFiZXQgY2hhcmFjdGVycyBpbiB0aGUgaW5wdXQgcmVzdWx0IGluIGEgYmluYXNjaWkuRXJyb3IuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICAgaWYgYWx0Y2hhcnMgaXMgbm90IE5vbmU6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFsdGNoYXJzLCBieXRlc190eXBlcyk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhbHRjaGFycy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIGFsdGNoYXJzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEoYWx0Y2hhcnMpCiAgICAgICAgIGFzc2VydCBsZW4oYWx0Y2hhcnMpID09IDIsIHJlcHIoYWx0Y2hhcnMpCi0gICAgICAgIHMgPSBfdHJhbnNsYXRlKHMsIHtjaHIoYWx0Y2hhcnNbMF0pOiBiJysnLCBjaHIoYWx0Y2hhcnNbMV0pOiBiJy8nfSkKKyAgICAgICAgcyA9IHMudHJhbnNsYXRlKGJ5dGVzLm1ha2V0cmFucyhhbHRjaGFycywgYicrLycpKQogICAgIGlmIHZhbGlkYXRlIGFuZCBub3QgcmUubWF0Y2goYideW0EtWmEtejAtOSsvXSo9ezAsMn0kJywgcyk6CiAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdOb24tYmFzZTY0IGRpZ2l0IGZvdW5kJykKICAgICByZXR1cm4gYmluYXNjaWkuYTJiX2Jhc2U2NChzKQpAQCAtMTA5LDYgKzEwOCwxMCBAQAogICAgICIiIgogICAgIHJldHVybiBiNjRkZWNvZGUocykKIAorCitfdXJsc2FmZV9lbmNvZGVfdHJhbnNsYXRpb24gPSBieXRlcy5tYWtldHJhbnMoYicrLycsIGInLV8nKQorX3VybHNhZmVfZGVjb2RlX3RyYW5zbGF0aW9uID0gYnl0ZXMubWFrZXRyYW5zKGInLV8nLCBiJysvJykKKwogZGVmIHVybHNhZmVfYjY0ZW5jb2RlKHMpOgogICAgICIiIkVuY29kZSBhIGJ5dGUgc3RyaW5nIHVzaW5nIGEgdXJsLXNhZmUgQmFzZTY0IGFscGhhYmV0LgogCkBAIC0xMTYsNyArMTE5LDcgQEAKICAgICByZXR1cm5lZC4gIFRoZSBhbHBoYWJldCB1c2VzICctJyBpbnN0ZWFkIG9mICcrJyBhbmQgJ18nIGluc3RlYWQgb2YKICAgICAnLycuCiAgICAgIiIiCi0gICAgcmV0dXJuIGI2NGVuY29kZShzLCBiJy1fJykKKyAgICByZXR1cm4gYjY0ZW5jb2RlKHMpLnRyYW5zbGF0ZShfdXJsc2FmZV9lbmNvZGVfdHJhbnNsYXRpb24pCiAKIGRlZiB1cmxzYWZlX2I2NGRlY29kZShzKToKICAgICAiIiJEZWNvZGUgYSBieXRlIHN0cmluZyBlbmNvZGVkIHdpdGggdGhlIHN0YW5kYXJkIEJhc2U2NCBhbHBoYWJldC4KQEAgLTEyOCw3ICsxMzEsOSBAQAogCiAgICAgVGhlIGFscGhhYmV0IHVzZXMgJy0nIGluc3RlYWQgb2YgJysnIGFuZCAnXycgaW5zdGVhZCBvZiAnLycuCiAgICAgIiIiCi0gICAgcmV0dXJuIGI2NGRlY29kZShzLCBiJy1fJykKKyAgICBzID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEocykKKyAgICBzID0gcy50cmFuc2xhdGUoX3VybHNhZmVfZGVjb2RlX3RyYW5zbGF0aW9uKQorICAgIHJldHVybiBiNjRkZWNvZGUocykKIAogCiAKQEAgLTIxMSw4ICsyMTYsNyBAQAogICAgIHRoZSBpbnB1dCBpcyBpbmNvcnJlY3RseSBwYWRkZWQgb3IgaWYgdGhlcmUgYXJlIG5vbi1hbHBoYWJldAogICAgIGNoYXJhY3RlcnMgcHJlc2VudCBpbiB0aGUgaW5wdXQuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICAgcXVhbnRhLCBsZWZ0b3ZlciA9IGRpdm1vZChsZW4ocyksIDgpCiAgICAgaWYgbGVmdG92ZXI6CiAgICAgICAgIHJhaXNlIGJpbmFzY2lpLkVycm9yKCdJbmNvcnJlY3QgcGFkZGluZycpCkBAIC0yMjAsMTAgKzIyNCw5IEBACiAgICAgIyBGYWxzZSwgb3IgdGhlIGNoYXJhY3RlciB0byBtYXAgdGhlIGRpZ2l0IDEgKG9uZSkgdG8uICBJdCBzaG91bGQgYmUKICAgICAjIGVpdGhlciBMIChlbCkgb3IgSSAoZXllKS4KICAgICBpZiBtYXAwMSBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobWFwMDEsIGJ5dGVzX3R5cGVzKToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJSBtYXAwMS5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIG1hcDAxID0gX2J5dGVzX2Zyb21fZGVjb2RlX2RhdGEobWFwMDEpCiAgICAgICAgIGFzc2VydCBsZW4obWFwMDEpID09IDEsIHJlcHIobWFwMDEpCi0gICAgICAgIHMgPSBfdHJhbnNsYXRlKHMsIHtiJzAnOiBiJ08nLCBiJzEnOiBtYXAwMX0pCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZShieXRlcy5tYWtldHJhbnMoYicwMScsIGInTycgKyBtYXAwMSkpCiAgICAgaWYgY2FzZWZvbGQ6CiAgICAgICAgIHMgPSBzLnVwcGVyKCkKICAgICAjIFN0cmlwIG9mZiBwYWQgY2hhcmFjdGVycyBmcm9tIHRoZSByaWdodC4gIFdlIG5lZWQgdG8gY291bnQgdGhlIHBhZApAQCAtMjkyLDggKzI5NSw3IEBACiAgICAgcyB3ZXJlIGluY29ycmVjdGx5IHBhZGRlZCBvciBpZiB0aGVyZSBhcmUgbm9uLWFscGhhYmV0IGNoYXJhY3RlcnMKICAgICBwcmVzZW50IGluIHRoZSBzdHJpbmcuCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocywgYnl0ZXNfdHlwZXMpOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzLCBub3QgJXMiICUgcy5fX2NsYXNzX18uX19uYW1lX18pCisgICAgcyA9IF9ieXRlc19mcm9tX2RlY29kZV9kYXRhKHMpCiAgICAgaWYgY2FzZWZvbGQ6CiAgICAgICAgIHMgPSBzLnVwcGVyKCkKICAgICBpZiByZS5zZWFyY2goYidbXjAtOUEtRl0nLCBzKToKZGlmZiAtLWdpdCBhL0xpYi9iaW5oZXgucHkgYi9MaWIvYmluaGV4LnB5CmluZGV4IDk5OWE2NzUuLjdiZjkyNzggMTAwNjQ0Ci0tLSBhL0xpYi9iaW5oZXgucHkKKysrIGIvTGliL2JpbmhleC5weQpAQCAtMjMsNyArMjMsNiBAQAogIwogaW1wb3J0IGlvCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCBiaW5hc2NpaQogCmRpZmYgLS1naXQgYS9MaWIvYnoyLnB5IGIvTGliL2J6Mi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzA3NTA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2J6Mi5weQpAQCAtMCwwICsxLDUwNCBAQAorIiIiSW50ZXJmYWNlIHRvIHRoZSBsaWJiemlwMiBjb21wcmVzc2lvbiBsaWJyYXJ5LgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGZpbGUgaW50ZXJmYWNlLCBjbGFzc2VzIGZvciBpbmNyZW1lbnRhbAorKGRlKWNvbXByZXNzaW9uLCBhbmQgZnVuY3Rpb25zIGZvciBvbmUtc2hvdCAoZGUpY29tcHJlc3Npb24uCisiIiIKKworX19hbGxfXyA9IFsiQloyRmlsZSIsICJCWjJDb21wcmVzc29yIiwgIkJaMkRlY29tcHJlc3NvciIsCisgICAgICAgICAgICJvcGVuIiwgImNvbXByZXNzIiwgImRlY29tcHJlc3MiXQorCitfX2F1dGhvcl9fID0gIk5hZGVlbSBWYXdkYSA8bmFkZWVtLnZhd2RhQGdtYWlsLmNvbT4iCisKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGlvCitpbXBvcnQgd2FybmluZ3MKKwordHJ5OgorICAgIGZyb20gdGhyZWFkaW5nIGltcG9ydCBSTG9jaworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gZHVtbXlfdGhyZWFkaW5nIGltcG9ydCBSTG9jaworCitmcm9tIF9iejIgaW1wb3J0IEJaMkNvbXByZXNzb3IsIEJaMkRlY29tcHJlc3NvcgorCisKK19NT0RFX0NMT1NFRCAgID0gMAorX01PREVfUkVBRCAgICAgPSAxCitfTU9ERV9SRUFEX0VPRiA9IDIKK19NT0RFX1dSSVRFICAgID0gMworCitfQlVGRkVSX1NJWkUgPSA4MTkyCisKKworY2xhc3MgQloyRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CisKKyAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBiemlwMiAoZGUpY29tcHJlc3Npb24uCisKKyAgICBBIEJaMkZpbGUgY2FuIGFjdCBhcyBhIHdyYXBwZXIgZm9yIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0LCBvciByZWZlcgorICAgIGRpcmVjdGx5IHRvIGEgbmFtZWQgZmlsZSBvbiBkaXNrLgorCisgICAgTm90ZSB0aGF0IEJaMkZpbGUgcHJvdmlkZXMgYSAqYmluYXJ5KiBmaWxlIGludGVyZmFjZSAtIGRhdGEgcmVhZCBpcworICAgIHJldHVybmVkIGFzIGJ5dGVzLCBhbmQgZGF0YSB0byBiZSB3cml0dGVuIHNob3VsZCBiZSBnaXZlbiBhcyBieXRlcy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0iciIsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpOgorICAgICAgICAiIiJPcGVuIGEgYnppcDItY29tcHJlc3NlZCBmaWxlLgorCisgICAgICAgIElmIGZpbGVuYW1lIGlzIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgaXMgZ2l2ZXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8KKyAgICAgICAgYmUgb3BlbmVkLiBPdGhlcndpc2UsIGl0IHNob3VsZCBiZSBhIGZpbGUgb2JqZWN0LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8KKyAgICAgICAgcmVhZCBvciB3cml0ZSB0aGUgY29tcHJlc3NlZCBkYXRhLgorCisgICAgICAgIG1vZGUgY2FuIGJlICdyJyBmb3IgcmVhZGluZyAoZGVmYXVsdCksICd3JyBmb3IgKG92ZXIpd3JpdGluZywgb3IgJ2EnIGZvcgorICAgICAgICBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgJ3JiJywgJ3diJywgYW5kICdhYicuCisKKyAgICAgICAgYnVmZmVyaW5nIGlzIGlnbm9yZWQuIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4KKworICAgICAgICBJZiBtb2RlIGlzICd3JyBvciAnYScsIGNvbXByZXNzbGV2ZWwgY2FuIGJlIGEgbnVtYmVyIGJldHdlZW4gMQorICAgICAgICBhbmQgOSBzcGVjaWZ5aW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjogMSBwcm9kdWNlcyB0aGUgbGVhc3QKKyAgICAgICAgY29tcHJlc3Npb24sIGFuZCA5IChkZWZhdWx0KSBwcm9kdWNlcyB0aGUgbW9zdCBjb21wcmVzc2lvbi4KKworICAgICAgICBJZiBtb2RlIGlzICdyJywgdGhlIGlucHV0IGZpbGUgbWF5IGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mCisgICAgICAgIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcy4KKyAgICAgICAgIiIiCisgICAgICAgICMgVGhpcyBsb2NrIG11c3QgYmUgcmVjdXJzaXZlLCBzbyB0aGF0IEJ1ZmZlcmVkSU9CYXNlJ3MKKyAgICAgICAgIyByZWFkbGluZSgpLCByZWFkbGluZXMoKSBhbmQgd3JpdGVsaW5lcygpIGRvbid0IGRlYWRsb2NrLgorICAgICAgICBzZWxmLl9sb2NrID0gUkxvY2soKQorICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICBpZiBidWZmZXJpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJVc2Ugb2YgJ2J1ZmZlcmluZycgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKKworICAgICAgICBpZiBub3QgKDEgPD0gY29tcHJlc3NsZXZlbCA8PSA5KToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKQorCisgICAgICAgIGlmIG1vZGUgaW4gKCIiLCAiciIsICJyYiIpOgorICAgICAgICAgICAgbW9kZSA9ICJyYiIKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1JFQUQKKyAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBiIiIKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgIGVsaWYgbW9kZSBpbiAoInciLCAid2IiKToKKyAgICAgICAgICAgIG1vZGUgPSAid2IiCisgICAgICAgICAgICBtb2RlX2NvZGUgPSBfTU9ERV9XUklURQorICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICAgICAgZWxpZiBtb2RlIGluICgiYSIsICJhYiIpOgorICAgICAgICAgICAgbW9kZSA9ICJhYiIKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCisgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCisgICAgICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKKyAgICAgICAgICAgIHNlbGYuX2ZwID0gZmlsZW5hbWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkZsdXNoIGFuZCBjbG9zZSB0aGUgZmlsZS4KKworICAgICAgICBNYXkgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHdpdGhvdXQgZXJyb3IuIE9uY2UgdGhlIGZpbGUgaXMKKyAgICAgICAgY2xvc2VkLCBhbnkgb3RoZXIgb3BlcmF0aW9uIG9uIGl0IHdpbGwgcmFpc2UgYSBWYWx1ZUVycm9yLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9DTE9TRUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBOb25lCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9tb2RlID09IF9NT0RFX1dSSVRFOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzb3IgPSBOb25lCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VmcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoaXMgZmlsZSBpcyBjbG9zZWQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRAorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSB1bmRlcmx5aW5nIGZpbGUuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fZnAuZmlsZW5vKCkKKworICAgIGRlZiBzZWVrYWJsZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhlIGZpbGUgc3VwcG9ydHMgc2Vla2luZy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVhZGFibGUoKSBhbmQgc2VsZi5fZnAuc2Vla2FibGUoKQorCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciByZWFkaW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSB3YXMgb3BlbmVkIGZvciB3cml0aW5nLiIiIgorICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfV1JJVEUKKworICAgICMgTW9kZS1jaGVja2luZyBoZWxwZXIgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jaGVja19ub3RfY2xvc2VkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQorCisgICAgZGVmIF9jaGVja19jYW5fcmVhZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fbW9kZSBub3QgaW4gKF9NT0RFX1JFQUQsIF9NT0RFX1JFQURfRU9GKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgIT0gX01PREVfV1JJVEU6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJGaWxlIG5vdCBvcGVuIGZvciB3cml0aW5nIikKKworICAgIGRlZiBfY2hlY2tfY2FuX3NlZWsoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgbm90IGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub3RfY2xvc2VkKCkKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJTZWVraW5nIGlzIG9ubHkgc3VwcG9ydGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBmaWxlcyBvcGVuIGZvciByZWFkaW5nIikKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZwLnNlZWthYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiVGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IHN1cHBvcnQgc2Vla2luZyIpCisKKyAgICAjIEZpbGwgdGhlIHJlYWRhaGVhZCBidWZmZXIgaWYgaXQgaXMgZW1wdHkuIFJldHVybnMgRmFsc2Ugb24gRU9GLgorICAgIGRlZiBfZmlsbF9idWZmZXIoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRF9FT0Y6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBzZWxmLl9idWZmZXJfb2Zmc2V0ID09IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgcmF3YmxvY2sgPSAoc2VsZi5fZGVjb21wcmVzc29yLnVudXNlZF9kYXRhIG9yCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5yZWFkKF9CVUZGRVJfU0laRSkpCisKKyAgICAgICAgICAgIGlmIG5vdCByYXdibG9jazoKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9kZWNvbXByZXNzb3IuZW9mOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9tb2RlID0gX01PREVfUkVBRF9FT0YKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2l6ZSA9IHNlbGYuX3BvcworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorCisgICAgICAgICAgICAjIENvbnRpbnVlIHRvIG5leHQgc3RyZWFtLgorICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWNvbXByZXNzb3IgPSBCWjJEZWNvbXByZXNzb3IoKQorCisgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhyYXdibG9jaykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICAjIFRoZSBsb29wIGFzc3VtZXMgdGhhdCBfYnVmZmVyX29mZnNldCBpcyAwLiBFbnN1cmUgdGhhdCB0aGlzIGlzIHRydWUuCisgICAgICAgIHNlbGYuX2J1ZmZlciA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKyAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKworICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IGIiIgorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICAjIFJlYWQgYSBibG9jayBvZiB1cCB0byBuIGJ5dGVzLgorICAgICMgSWYgcmV0dXJuX2RhdGEgaXMgZmFsc2UsIGNvbnN1bWUgdGhlIGRhdGEgd2l0aG91dCByZXR1cm5pbmcgaXQuCisgICAgZGVmIF9yZWFkX2Jsb2NrKHNlbGYsIG4sIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICAjIElmIHdlIGhhdmUgZW5vdWdoIGRhdGEgYnVmZmVyZWQsIHJldHVybiBpbW1lZGlhdGVseS4KKyAgICAgICAgZW5kID0gc2VsZi5fYnVmZmVyX29mZnNldCArIG4KKyAgICAgICAgaWYgZW5kIDw9IGxlbihzZWxmLl9idWZmZXIpOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IGVuZAorICAgICAgICAgICAgc2VsZi5fcG9zICs9IGxlbihkYXRhKQorICAgICAgICAgICAgcmV0dXJuIGRhdGEgaWYgcmV0dXJuX2RhdGEgZWxzZSBOb25lCisKKyAgICAgICAgIyBUaGUgbG9vcCBhc3N1bWVzIHRoYXQgX2J1ZmZlcl9vZmZzZXQgaXMgMC4gRW5zdXJlIHRoYXQgdGhpcyBpcyB0cnVlLgorICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICBkZWYgcGVlayhzZWxmLCBuPTApOgorICAgICAgICAiIiJSZXR1cm4gYnVmZmVyZWQgZGF0YSB3aXRob3V0IGFkdmFuY2luZyB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBBbHdheXMgcmV0dXJucyBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBkYXRhLCB1bmxlc3MgYXQgRU9GLgorICAgICAgICBUaGUgZXhhY3QgbnVtYmVyIG9mIGJ5dGVzIHJldHVybmVkIGlzIHVuc3BlY2lmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0Ol0KKworICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgSWYgc2l6ZSBpcyBuZWdhdGl2ZSBvciBvbWl0dGVkLCByZWFkIHVudGlsIEVPRiBpcyByZWFjaGVkLgorICAgICAgICBSZXR1cm5zIGInJyBpZiB0aGUgZmlsZSBpcyBhbHJlYWR5IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgIGlmIHNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgICAgICBlbGlmIHNpemUgPCAwOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2FsbCgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Jsb2NrKHNpemUpCisKKyAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMsIHdoaWxlIHRyeWluZyB0byBhdm9pZAorICAgICAgICBtYWtpbmcgbXVsdGlwbGUgcmVhZHMgZnJvbSB0aGUgdW5kZXJseWluZyBzdHJlYW0uCisKKyAgICAgICAgUmV0dXJucyBiJycgaWYgdGhlIGZpbGUgaXMgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgIyBVc3VhbGx5LCByZWFkMSgpIGNhbGxzIF9mcC5yZWFkKCkgYXQgbW9zdCBvbmNlLiBIb3dldmVyLCBzb21ldGltZXMKKyAgICAgICAgIyB0aGlzIGRvZXMgbm90IGdpdmUgZW5vdWdoIGRhdGEgZm9yIHRoZSBkZWNvbXByZXNzb3IgdG8gbWFrZSBwcm9ncmVzcy4KKyAgICAgICAgIyBJbiB0aGlzIGNhc2Ugd2UgbWFrZSBtdWx0aXBsZSByZWFkcywgdG8gYXZvaWQgcmV0dXJuaW5nIGIiIi4KKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICAgICAgaWYgKHNpemUgPT0gMCBvcgorICAgICAgICAgICAgICAgICMgT25seSBjYWxsIF9maWxsX2J1ZmZlcigpIGlmIHRoZSBidWZmZXIgaXMgYWN0dWFsbHkgZW1wdHkuCisgICAgICAgICAgICAgICAgIyBUaGlzIGdpdmVzIGEgc2lnbmlmaWNhbnQgc3BlZWR1cCBpZiAqc2l6ZSogaXMgc21hbGwuCisgICAgICAgICAgICAgICAgKHNlbGYuX2J1ZmZlcl9vZmZzZXQgPT0gbGVuKHNlbGYuX2J1ZmZlcikgYW5kIG5vdCBzZWxmLl9maWxsX2J1ZmZlcigpKSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGIiIgorICAgICAgICAgICAgaWYgc2l6ZSA+IDA6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKyBzaXplXQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXJbc2VsZi5fYnVmZmVyX29mZnNldDpdCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgICAgICAgICAgc2VsZi5fYnVmZmVyX29mZnNldCA9IDAKKyAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4oZGF0YSkKKyAgICAgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYi4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVhZCAoMCBmb3IgRU9GKS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkaW50byhzZWxmLCBiKQorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIGEgbGluZSBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBUaGUgdGVybWluYXRpbmcgbmV3bGluZSAoaWYgcHJlc2VudCkgaXMgcmV0YWluZWQuIElmIHNpemUgaXMKKyAgICAgICAgbm9uLW5lZ2F0aXZlLCBubyBtb3JlIHRoYW4gc2l6ZSBieXRlcyB3aWxsIGJlIHJlYWQgKGluIHdoaWNoCisgICAgICAgIGNhc2UgdGhlIGxpbmUgbWF5IGJlIGluY29tcGxldGUpLiBSZXR1cm5zIGInJyBpZiBhbHJlYWR5IGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzaXplLCAiX19pbmRleF9fIik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJJbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkIikKKyAgICAgICAgICAgIHNpemUgPSBzaXplLl9faW5kZXhfXygpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgICAgICMgU2hvcnRjdXQgZm9yIHRoZSBjb21tb24gY2FzZSAtIHRoZSB3aG9sZSBsaW5lIGlzIGluIHRoZSBidWZmZXIuCisgICAgICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgICAgICBlbmQgPSBzZWxmLl9idWZmZXIuZmluZChiIlxuIiwgc2VsZi5fYnVmZmVyX29mZnNldCkgKyAxCisgICAgICAgICAgICAgICAgaWYgZW5kID4gMDoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuX2J1ZmZlcltzZWxmLl9idWZmZXJfb2Zmc2V0IDogZW5kXQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXJfb2Zmc2V0ID0gZW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcyArPSBsZW4obGluZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS5yZWFkbGluZShzZWxmLCBzaXplKQorCisgICAgZGVmIHJlYWRsaW5lcyhzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmVhZCBhIGxpc3Qgb2YgbGluZXMgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIGZyb20gdGhlIGZpbGUuCisKKyAgICAgICAgc2l6ZSBjYW4gYmUgc3BlY2lmaWVkIHRvIGNvbnRyb2wgdGhlIG51bWJlciBvZiBsaW5lcyByZWFkOiBubworICAgICAgICBmdXJ0aGVyIGxpbmVzIHdpbGwgYmUgcmVhZCBvbmNlIHRoZSB0b3RhbCBzaXplIG9mIHRoZSBsaW5lcyByZWFkCisgICAgICAgIHNvIGZhciBlcXVhbHMgb3IgZXhjZWVkcyBzaXplLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNpemUsICJfX2luZGV4X18iKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkludGVnZXIgYXJndW1lbnQgZXhwZWN0ZWQiKQorICAgICAgICAgICAgc2l6ZSA9IHNpemUuX19pbmRleF9fKCkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIGlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRsaW5lcyhzZWxmLCBzaXplKQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAgICAiIiJXcml0ZSBhIGJ5dGUgc3RyaW5nIHRvIHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMKKyAgICAgICAgYWx3YXlzIGxlbihkYXRhKS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsIHRoZSBmaWxlIG9uIGRpc2sKKyAgICAgICAgbWF5IG5vdCByZWZsZWN0IHRoZSBkYXRhIHdyaXR0ZW4gdW50aWwgY2xvc2UoKSBpcyBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICBzZWxmLl9jaGVja19jYW5fd3JpdGUoKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IHNlbGYuX2NvbXByZXNzb3IuY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICByZXR1cm4gbGVuKGRhdGEpCisKKyAgICBkZWYgd3JpdGVsaW5lcyhzZWxmLCBzZXEpOgorICAgICAgICAiIiJXcml0ZSBhIHNlcXVlbmNlIG9mIGJ5dGUgc3RyaW5ncyB0byB0aGUgZmlsZS4KKworICAgICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdW5jb21wcmVzc2VkIGJ5dGVzIHdyaXR0ZW4uCisgICAgICAgIHNlcSBjYW4gYmUgYW55IGl0ZXJhYmxlIHlpZWxkaW5nIGJ5dGUgc3RyaW5ncy4KKworICAgICAgICBMaW5lIHNlcGFyYXRvcnMgYXJlIG5vdCBhZGRlZCBiZXR3ZWVuIHRoZSB3cml0dGVuIGJ5dGUgc3RyaW5ncy4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHJldHVybiBpby5CdWZmZXJlZElPQmFzZS53cml0ZWxpbmVzKHNlbGYsIHNlcSkKKworICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgorICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gYiIiCisgICAgICAgIHNlbGYuX2J1ZmZlcl9vZmZzZXQgPSAwCisKKyAgICBkZWYgc2VlayhzZWxmLCBvZmZzZXQsIHdoZW5jZT0wKToKKyAgICAgICAgIiIiQ2hhbmdlIHRoZSBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIFRoZSBuZXcgcG9zaXRpb24gaXMgc3BlY2lmaWVkIGJ5IG9mZnNldCwgcmVsYXRpdmUgdG8gdGhlCisgICAgICAgIHBvc2l0aW9uIGluZGljYXRlZCBieSB3aGVuY2UuIFZhbHVlcyBmb3Igd2hlbmNlIGFyZToKKworICAgICAgICAgICAgMDogc3RhcnQgb2Ygc3RyZWFtIChkZWZhdWx0KTsgb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCisgICAgICAgICAgICAxOiBjdXJyZW50IHN0cmVhbSBwb3NpdGlvbgorICAgICAgICAgICAgMjogZW5kIG9mIHN0cmVhbTsgb2Zmc2V0IG11c3Qgbm90IGJlIHBvc2l0aXZlCisKKyAgICAgICAgUmV0dXJucyB0aGUgbmV3IGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgTm90ZSB0aGF0IHNlZWtpbmcgaXMgZW11bGF0ZWQsIHNvIGRlcGVuZGluZyBvbiB0aGUgcGFyYW1ldGVycywKKyAgICAgICAgdGhpcyBvcGVyYXRpb24gbWF5IGJlIGV4dHJlbWVseSBzbG93LgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3NlZWsoKQorCisgICAgICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgorICAgICAgICAgICAgaWYgd2hlbmNlID09IDA6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBzZWxmLl9wb3MgKyBvZmZzZXQKKyAgICAgICAgICAgIGVsaWYgd2hlbmNlID09IDI6CisgICAgICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fc2l6ZSA8IDA6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfYWxsKHJldHVybl9kYXRhPUZhbHNlKQorICAgICAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCB2YWx1ZSBmb3Igd2hlbmNlOiB7fSIuZm9ybWF0KHdoZW5jZSkpCisKKyAgICAgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KKyAgICAgICAgICAgIGlmIG9mZnNldCA8IHNlbGYuX3BvczoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZXdpbmQoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvZmZzZXQgLT0gc2VsZi5fcG9zCisKKyAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCBkYXRhIHVudGlsIHdlIHJlYWNoIHRoZSBkZXNpcmVkIHBvc2l0aW9uLgorICAgICAgICAgICAgc2VsZi5fcmVhZF9ibG9jayhvZmZzZXQsIHJldHVybl9kYXRhPUZhbHNlKQorCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcworCisKK2RlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsIGNvbXByZXNzbGV2ZWw9OSwKKyAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgorICAgICIiIk9wZW4gYSBiemlwMi1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KKworICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciBvciBieXRlcyBvYmplY3QpLCBvcgorICAgIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKworICAgIFRoZSBtb2RlIGFyZ3VtZW50IGNhbiBiZSAiciIsICJyYiIsICJ3IiwgIndiIiwgImEiIG9yICJhYiIgZm9yIGJpbmFyeSBtb2RlLAorICAgIG9yICJydCIsICJ3dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLiBUaGUgZGVmYXVsdCBtb2RlIGlzICJyYiIsIGFuZCB0aGUKKyAgICBkZWZhdWx0IGNvbXByZXNzbGV2ZWwgaXMgOS4KKworICAgIEZvciBiaW5hcnkgbW9kZSwgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIHRoZSBCWjJGaWxlIGNvbnN0cnVjdG9yOgorICAgIEJaMkZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpLiBJbiB0aGlzIGNhc2UsIHRoZSBlbmNvZGluZywgZXJyb3JzCisgICAgYW5kIG5ld2xpbmUgYXJndW1lbnRzIG11c3Qgbm90IGJlIHByb3ZpZGVkLgorCisgICAgRm9yIHRleHQgbW9kZSwgYSBCWjJGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZworICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgICAiIiIKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgaWYgImIiIGluIG1vZGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCisgICAgZWxzZToKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKworICAgIGJ6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKKyAgICBiaW5hcnlfZmlsZSA9IEJaMkZpbGUoZmlsZW5hbWUsIGJ6X21vZGUsIGNvbXByZXNzbGV2ZWw9Y29tcHJlc3NsZXZlbCkKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKKworCitkZWYgY29tcHJlc3MoZGF0YSwgY29tcHJlc3NsZXZlbD05KToKKyAgICAiIiJDb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBjb21wcmVzc2xldmVsLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuCisKKyAgICBGb3IgaW5jcmVtZW50YWwgY29tcHJlc3Npb24sIHVzZSBhIEJaMkNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgY29tcCA9IEJaMkNvbXByZXNzb3IoY29tcHJlc3NsZXZlbCkKKyAgICByZXR1cm4gY29tcC5jb21wcmVzcyhkYXRhKSArIGNvbXAuZmx1c2goKQorCisKK2RlZiBkZWNvbXByZXNzKGRhdGEpOgorICAgICIiIkRlY29tcHJlc3MgYSBibG9jayBvZiBkYXRhLgorCisgICAgRm9yIGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24sIHVzZSBhIEJaMkRlY29tcHJlc3NvciBvYmplY3QgaW5zdGVhZC4KKyAgICAiIiIKKyAgICBpZiBsZW4oZGF0YSkgPT0gMDoKKyAgICAgICAgcmV0dXJuIGIiIgorCisgICAgcmVzdWx0cyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgZGVjb21wID0gQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoZGVjb21wLmRlY29tcHJlc3MoZGF0YSkpCisgICAgICAgIGlmIG5vdCBkZWNvbXAuZW9mOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29tcHJlc3NlZCBkYXRhIGVuZGVkIGJlZm9yZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICBpZiBub3QgZGVjb21wLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKHJlc3VsdHMpCisgICAgICAgICMgVGhlcmUgaXMgdW51c2VkIGRhdGEgbGVmdCBvdmVyLiBQcm9jZWVkIHRvIG5leHQgc3RyZWFtLgorICAgICAgICBkYXRhID0gZGVjb21wLnVudXNlZF9kYXRhCmRpZmYgLS1naXQgYS9MaWIvY2dpLnB5IGIvTGliL2NnaS5weQppbmRleCA5MGEzMzQ1Li5lOTY0ZjBjIDEwMDc1NQotLS0gYS9MaWIvY2dpLnB5CisrKyBiL0xpYi9jZ2kucHkKQEAgLTc2LDcgKzc2LDcgQEAKICAgICBzZW5kIGFuIGVycm9yIG1lc3NhZ2UpLgogCiAgICAgIiIiCi0gICAgZ2xvYmFsIGxvZ2ZwLCBsb2cKKyAgICBnbG9iYWwgbG9nLCBsb2dmaWxlLCBsb2dmcAogICAgIGlmIGxvZ2ZpbGUgYW5kIG5vdCBsb2dmcDoKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9nZnAgPSBvcGVuKGxvZ2ZpbGUsICJhIikKQEAgLTk2LDYgKzk2LDE1IEBACiAgICAgIiIiRHVtbXkgZnVuY3Rpb24sIGFzc2lnbmVkIHRvIGxvZyB3aGVuIGxvZ2dpbmcgaXMgZGlzYWJsZWQuIiIiCiAgICAgcGFzcwogCitkZWYgY2xvc2Vsb2coKToKKyAgICAiIiJDbG9zZSB0aGUgbG9nIGZpbGUuIiIiCisgICAgZ2xvYmFsIGxvZywgbG9nZmlsZSwgbG9nZnAKKyAgICBsb2dmaWxlID0gJycKKyAgICBpZiBsb2dmcDoKKyAgICAgICAgbG9nZnAuY2xvc2UoKQorICAgICAgICBsb2dmcCA9IE5vbmUKKyAgICBsb2cgPSBpbml0bG9nCisKIGxvZyA9IGluaXRsb2cgICAgICAgICAgICMgVGhlIGN1cnJlbnQgbG9nZ2luZyBmdW5jdGlvbgogCiAKQEAgLTEwMDMsNyArMTAxMiw3IEBACiBkZWYgZXNjYXBlKHMsIHF1b3RlPU5vbmUpOgogICAgICIiIkRlcHJlY2F0ZWQgQVBJLiIiIgogICAgIHdhcm4oImNnaS5lc2NhcGUgaXMgZGVwcmVjYXRlZCwgdXNlIGh0bWwuZXNjYXBlIGluc3RlYWQiLAotICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQorICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcyA9IHMucmVwbGFjZSgiJiIsICImYW1wOyIpICMgTXVzdCBiZSBkb25lIGZpcnN0IQogICAgIHMgPSBzLnJlcGxhY2UoIjwiLCAiJmx0OyIpCiAgICAgcyA9IHMucmVwbGFjZSgiPiIsICImZ3Q7IikKZGlmZiAtLWdpdCBhL0xpYi9jZ2l0Yi5weSBiL0xpYi9jZ2l0Yi5weQppbmRleCA3YjUyYzhlLi5lM2NlMmNiIDEwMDY0NAotLS0gYS9MaWIvY2dpdGIucHkKKysrIGIvTGliL2NnaXRiLnB5CkBAIC0zMSw3ICszMSw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHRva2VuaXplCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgdHlwZXMKIAogZGVmIHJlc2V0KCk6CiAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHRoYXQgcmVzZXRzIHRoZSBDR0kgYW5kIGJyb3dzZXIgdG8gYSBrbm93biBzdGF0ZS4iIiIKZGlmZiAtLWdpdCBhL0xpYi9jb2RlLnB5IGIvTGliL2NvZGUucHkKaW5kZXggNjA1YWVkZS4uOTAyMGFhYiAxMDA2NDQKLS0tIGEvTGliL2NvZGUucHkKKysrIGIvTGliL2NvZGUucHkKQEAgLTEwNSw5ICsxMDUsMTAgQEAKICAgICAgICAgVGhlIG91dHB1dCBpcyB3cml0dGVuIGJ5IHNlbGYud3JpdGUoKSwgYmVsb3cuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHR5cGUsIHZhbHVlLCBzeXMubGFzdF90cmFjZWJhY2sgPSBzeXMuZXhjX2luZm8oKQorICAgICAgICB0eXBlLCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICBzeXMubGFzdF90eXBlID0gdHlwZQogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVlCisgICAgICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCiAgICAgICAgIGlmIGZpbGVuYW1lIGFuZCB0eXBlIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBXb3JrIGhhcmQgdG8gc3R1ZmYgdGhlIGNvcnJlY3QgZmlsZW5hbWUgaW4gdGhlIGV4Y2VwdGlvbgogICAgICAgICAgICAgdHJ5OgpAQCAtMTE5LDggKzEyMCwxMyBAQAogICAgICAgICAgICAgICAgICMgU3R1ZmYgaW4gdGhlIHJpZ2h0IGZpbGVuYW1lCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBTeW50YXhFcnJvcihtc2csIChmaWxlbmFtZSwgbGluZW5vLCBvZmZzZXQsIGxpbmUpKQogICAgICAgICAgICAgICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsdWUKLSAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cGUsIHZhbHVlKQotICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBpZiBzeXMuZXhjZXB0aG9vayBpcyBzeXMuX19leGNlcHRob29rX186CisgICAgICAgICAgICBsaW5lcyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLndyaXRlKCcnLmpvaW4obGluZXMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBJZiBzb21lb25lIGhhcyBzZXQgc3lzLmV4Y2VwdGhvb2ssIHdlIGxldCB0aGF0IHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgIyBvdmVyIHNlbGYud3JpdGUKKyAgICAgICAgICAgIHN5cy5leGNlcHRob29rKHR5cGUsIHZhbHVlLCB0YikKIAogICAgIGRlZiBzaG93dHJhY2ViYWNrKHNlbGYpOgogICAgICAgICAiIiJEaXNwbGF5IHRoZSBleGNlcHRpb24gdGhhdCBqdXN0IG9jY3VycmVkLgpAQCAtMTQzLDcgKzE0OSwxMiBAQAogICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkodHlwZSwgdmFsdWUpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgdGJsaXN0ID0gdGIgPSBOb25lCi0gICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJycuam9pbihsaW5lcykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHNvbWVvbmUgaGFzIHNldCBzeXMuZXhjZXB0aG9vaywgd2UgbGV0IHRoYXQgdGFrZSBwcmVjZWRlbmNlCisgICAgICAgICAgICAjIG92ZXIgc2VsZi53cml0ZQorICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2sodHlwZSwgdmFsdWUsIHRiKQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgogICAgICAgICAiIiJXcml0ZSBhIHN0cmluZy4KZGlmZiAtLWdpdCBhL0xpYi9jb2RlY3MucHkgYi9MaWIvY29kZWNzLnB5CmluZGV4IGIxNTBkNjQuLjQ4ZDRjOWMgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlY3MucHkKKysrIGIvTGliL2NvZGVjcy5weQpAQCAtNDYxLDcgKzQ2MSw3IEBACiAKICAgICAgICAgIyByZWFkIHVudGlsIHdlIGdldCB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGNoYXJhY3RlcnMgKGlmIGF2YWlsYWJsZSkKICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICMgY2FuIHRoZSByZXF1ZXN0IGNhbiBiZSBzYXRpc2ZpZWQgZnJvbSB0aGUgY2hhcmFjdGVyIGJ1ZmZlcj8KKyAgICAgICAgICAgICMgY2FuIHRoZSByZXF1ZXN0IGJlIHNhdGlzZmllZCBmcm9tIHRoZSBjaGFyYWN0ZXIgYnVmZmVyPwogICAgICAgICAgICAgaWYgY2hhcnMgPCAwOgogICAgICAgICAgICAgICAgIGlmIHNpemUgPCAwOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNoYXJidWZmZXI6CkBAIC00ODQsNyArNDg0LDcgQEAKICAgICAgICAgICAgICAgICBpZiBmaXJzdGxpbmU6CiAgICAgICAgICAgICAgICAgICAgIG5ld2NoYXJzLCBkZWNvZGVkYnl0ZXMgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlY29kZShkYXRhWzpleGMuc3RhcnRdLCBzZWxmLmVycm9ycykKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBuZXdjaGFycy5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICAgICAgICAgIGxpbmVzID0gbmV3Y2hhcnMuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgICAgICAgICBpZiBsZW4obGluZXMpPD0xOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNTI2LDcgKzUyNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gc2VsZi5saW5lYnVmZmVyWzBdCiAgICAgICAgICAgICAgICAgc2VsZi5saW5lYnVmZmVyID0gTm9uZQogICAgICAgICAgICAgaWYgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3BsaXRsaW5lcyhrZWVwZW5kcz1GYWxzZSlbMF0KICAgICAgICAgICAgIHJldHVybiBsaW5lCiAKICAgICAgICAgcmVhZHNpemUgPSBzaXplIG9yIDcyCkBAIC01NDMsNyArNTQzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSBzZWxmLnJlYWQoc2l6ZT0xLCBjaGFycz0xKQogCiAgICAgICAgICAgICBsaW5lICs9IGRhdGEKLSAgICAgICAgICAgIGxpbmVzID0gbGluZS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBsaW5lcyA9IGxpbmUuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDE6CiAgICAgICAgICAgICAgICAgICAgICMgTW9yZSB0aGFuIG9uZSBsaW5lIHJlc3VsdDsgdGhlIGZpcnN0IGxpbmUgaXMgYSBmdWxsIGxpbmUKQEAgLTU1OSwxMCArNTU5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjIG9ubHkgb25lIHJlbWFpbmluZyBsaW5lLCBwdXQgaXQgYmFjayBpbnRvIGNoYXJidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2hhcmJ1ZmZlciA9IGxpbmVzWzBdICsgc2VsZi5jaGFyYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBrZWVwZW5kczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0bGluZXMoRmFsc2UpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGxpbmUwd2l0aGVuZCA9IGxpbmVzWzBdCi0gICAgICAgICAgICAgICAgbGluZTB3aXRob3V0ZW5kID0gbGluZXNbMF0uc3BsaXRsaW5lcyhGYWxzZSlbMF0KKyAgICAgICAgICAgICAgICBsaW5lMHdpdGhvdXRlbmQgPSBsaW5lc1swXS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgIGlmIGxpbmUwd2l0aGVuZCAhPSBsaW5lMHdpdGhvdXRlbmQ6ICMgV2UgcmVhbGx5IGhhdmUgYSBsaW5lIGVuZAogICAgICAgICAgICAgICAgICAgICAjIFB1dCB0aGUgcmVzdCBiYWNrIHRvZ2V0aGVyIGFuZCBrZWVwIGl0IHVudGlsIHRoZSBuZXh0IGNhbGwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jaGFyYnVmZmVyID0gc2VsZi5fZW1wdHlfY2hhcmJ1ZmZlci5qb2luKGxpbmVzWzE6XSkgKyBcCkBAIC01NzUsNyArNTc1LDcgQEAKICAgICAgICAgICAgICMgd2UgZGlkbid0IGdldCBhbnl0aGluZyBvciB0aGlzIHdhcyBvdXIgb25seSB0cnkKICAgICAgICAgICAgIGlmIG5vdCBkYXRhIG9yIHNpemUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgbGluZSBhbmQgbm90IGtlZXBlbmRzOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKEZhbHNlKVswXQorICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdGxpbmVzKGtlZXBlbmRzPUZhbHNlKVswXQogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBpZiByZWFkc2l6ZSA8IDgwMDA6CiAgICAgICAgICAgICAgICAgcmVhZHNpemUgKj0gMgpAQCAtODAzLDcgKzgwMyw3IEBACiAKICAgICAgICAgZGF0YSA9IHNlbGYucmVhZGVyLnJlYWQoKQogICAgICAgICBkYXRhLCBieXRlc2VuY29kZWQgPSBzZWxmLmVuY29kZShkYXRhLCBzZWxmLmVycm9ycykKLSAgICAgICAgcmV0dXJuIGRhdGEuc3BsaXRsaW5lcygxKQorICAgICAgICByZXR1cm4gZGF0YS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAKICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAKQEAgLTEwNDIsMTAgKzEwNDIsNyBAQAogICAgICAgICBtYXBwZWQgdG8gdGhlbXNlbHZlcy4KIAogICAgICIiIgotICAgIHJlcyA9IHt9Ci0gICAgZm9yIGkgaW4gcm5nOgotICAgICAgICByZXNbaV09aQotICAgIHJldHVybiByZXMKKyAgICByZXR1cm4ge2k6aSBmb3IgaSBpbiBybmd9CiAKIGRlZiBtYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApOgogCmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMucHkgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gTGliL2NvbGxlY3Rpb25zLnB5CnJlbmFtZSB0byBMaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKaW5kZXggZWIyMDI0My4uZTVmOTU5OSAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpAQCAtMSwxMyArMSwxNCBAQAogX19hbGxfXyA9IFsnZGVxdWUnLCAnZGVmYXVsdGRpY3QnLCAnbmFtZWR0dXBsZScsICdVc2VyRGljdCcsICdVc2VyTGlzdCcsCi0gICAgICAgICAgICAnVXNlclN0cmluZycsICdDb3VudGVyJywgJ09yZGVyZWREaWN0J10KLSMgRm9yIGJvb3RzdHJhcHBpbmcgcmVhc29ucywgdGhlIGNvbGxlY3Rpb24gQUJDcyBhcmUgZGVmaW5lZCBpbiBfYWJjb2xsLnB5LgotIyBUaGV5IHNob3VsZCBob3dldmVyIGJlIGNvbnNpZGVyZWQgYW4gaW50ZWdyYWwgcGFydCBvZiBjb2xsZWN0aW9ucy5weS4KLWZyb20gX2FiY29sbCBpbXBvcnQgKgotaW1wb3J0IF9hYmNvbGwKLV9fYWxsX18gKz0gX2FiY29sbC5fX2FsbF9fCisgICAgICAgICAgICAnVXNlclN0cmluZycsICdDb3VudGVyJywgJ09yZGVyZWREaWN0JywgJ0NoYWluTWFwJ10KKworIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGNvbnRpbnVlIHRvIG1ha2UgdGhlIGNvbGxlY3Rpb25zIEFCQ3MKKyMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIGNvbGxlY3Rpb25zIG1vZHVsZS4KK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCAqCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCitfX2FsbF9fICs9IGNvbGxlY3Rpb25zLmFiYy5fX2FsbF9fCiAKIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBkZXF1ZSwgZGVmYXVsdGRpY3QKLWZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIgYXMgX2l0ZW1nZXR0ZXIKK2Zyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIgYXMgX2l0ZW1nZXR0ZXIsIGVxIGFzIF9lcQogZnJvbSBrZXl3b3JkIGltcG9ydCBpc2tleXdvcmQgYXMgX2lza2V5d29yZAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgaGVhcHEgYXMgX2hlYXBxCkBAIC0yMjgsNyArMjI5LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIE9yZGVyZWREaWN0KToKICAgICAgICAgICAgIHJldHVybiBsZW4oc2VsZik9PWxlbihvdGhlcikgYW5kIFwKLSAgICAgICAgICAgICAgICAgICBhbGwocD09cSBmb3IgcCwgcSBpbiB6aXAoc2VsZi5pdGVtcygpLCBvdGhlci5pdGVtcygpKSkKKyAgICAgICAgICAgICAgICAgICBhbGwobWFwKF9lcSwgc2VsZi5pdGVtcygpLCBvdGhlci5pdGVtcygpKSkKICAgICAgICAgcmV0dXJuIGRpY3QuX19lcV9fKHNlbGYsIG90aGVyKQogCiAKQEAgLTMxNCwxMCArMzE1LDEwIEBACiAKICAgICAiIiIKIAotICAgICMgUGFyc2UgYW5kIHZhbGlkYXRlIHRoZSBmaWVsZCBuYW1lcy4gIFZhbGlkYXRpb24gc2VydmVzIHR3byBwdXJwb3NlcywKLSAgICAjIGdlbmVyYXRpbmcgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZXMgYW5kIHByZXZlbnRpbmcgdGVtcGxhdGUgaW5qZWN0aW9uIGF0dGFja3MuCisgICAgIyBWYWxpZGF0ZSB0aGUgZmllbGQgbmFtZXMuICBBdCB0aGUgdXNlcidzIG9wdGlvbiwgZWl0aGVyIGdlbmVyYXRlIGFuIGVycm9yCisgICAgIyBtZXNzYWdlIG9yIGF1dG9tYXRpY2FsbHkgcmVwbGFjZSB0aGUgZmllbGQgbmFtZSB3aXRoIGEgdmFsaWQgbmFtZS4KICAgICBpZiBpc2luc3RhbmNlKGZpZWxkX25hbWVzLCBzdHIpOgotICAgICAgICBmaWVsZF9uYW1lcyA9IGZpZWxkX25hbWVzLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkgIyBuYW1lcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBhbmQvb3IgY29tbWFzCisgICAgICAgIGZpZWxkX25hbWVzID0gZmllbGRfbmFtZXMucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQogICAgIGZpZWxkX25hbWVzID0gbGlzdChtYXAoc3RyLCBmaWVsZF9uYW1lcykpCiAgICAgaWYgcmVuYW1lOgogICAgICAgICBzZWVuID0gc2V0KCkKQEAgLTMzMiwxNSArMzMzLDE5IEBACiAgICAgICAgICAgICBzZWVuLmFkZChuYW1lKQogICAgIGZvciBuYW1lIGluIFt0eXBlbmFtZV0gKyBmaWVsZF9uYW1lczoKICAgICAgICAgaWYgbm90IGFsbChjLmlzYWxudW0oKSBvciBjPT0nXycgZm9yIGMgaW4gbmFtZSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW4gb25seSBjb250YWluIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzIGFuZCB1bmRlcnNjb3JlczogJXInICUgbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbiBvbmx5IGNvbnRhaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIHVuZGVyc2NvcmVzOiAlcicgJSBuYW1lKQogICAgICAgICBpZiBfaXNrZXl3b3JkKG5hbWUpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IGJlIGEga2V5d29yZDogJXInICUgbmFtZSkKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIGNhbm5vdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2tleXdvcmQ6ICVyJyAlIG5hbWUpCiAgICAgICAgIGlmIG5hbWVbMF0uaXNkaWdpdCgpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignVHlwZSBuYW1lcyBhbmQgZmllbGQgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggYSBudW1iZXI6ICVyJyAlIG5hbWUpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhIG51bWJlcjogJXInICUgbmFtZSkKICAgICBzZWVuID0gc2V0KCkKICAgICBmb3IgbmFtZSBpbiBmaWVsZF9uYW1lczoKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfJykgYW5kIG5vdCByZW5hbWU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGaWVsZCBuYW1lcyBjYW5ub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOiAlcicgJSBuYW1lKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRmllbGQgbmFtZXMgY2Fubm90IHN0YXJ0IHdpdGggYW4gdW5kZXJzY29yZTogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXInICUgbmFtZSkKICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRW5jb3VudGVyZWQgZHVwbGljYXRlIGZpZWxkIG5hbWU6ICVyJyAlIG5hbWUpCiAgICAgICAgIHNlZW4uYWRkKG5hbWUpCkBAIC0zNTEsMjEgKzM1NiwyMyBAQAogICAgICAgICBmaWVsZF9uYW1lcyA9IHR1cGxlKGZpZWxkX25hbWVzKSwKICAgICAgICAgbnVtX2ZpZWxkcyA9IGxlbihmaWVsZF9uYW1lcyksCiAgICAgICAgIGFyZ19saXN0ID0gcmVwcih0dXBsZShmaWVsZF9uYW1lcykpLnJlcGxhY2UoIiciLCAiIilbMTotMV0sCi0gICAgICAgIHJlcHJfZm10ID0gJywgJy5qb2luKF9yZXByX3RlbXBsYXRlLmZvcm1hdChuYW1lPW5hbWUpIGZvciBuYW1lIGluIGZpZWxkX25hbWVzKSwKKyAgICAgICAgcmVwcl9mbXQgPSAnLCAnLmpvaW4oX3JlcHJfdGVtcGxhdGUuZm9ybWF0KG5hbWU9bmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmllbGRfbmFtZXMpLAogICAgICAgICBmaWVsZF9kZWZzID0gJ1xuJy5qb2luKF9maWVsZF90ZW1wbGF0ZS5mb3JtYXQoaW5kZXg9aW5kZXgsIG5hbWU9bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKGZpZWxkX25hbWVzKSkKICAgICApCiAKLSAgICAjIEV4ZWN1dGUgdGhlIHRlbXBsYXRlIHN0cmluZyBpbiBhIHRlbXBvcmFyeSBuYW1lc3BhY2UgYW5kCi0gICAgIyBzdXBwb3J0IHRyYWNpbmcgdXRpbGl0aWVzIGJ5IHNldHRpbmcgYSB2YWx1ZSBmb3IgZnJhbWUuZl9nbG9iYWxzWydfX25hbWVfXyddCisgICAgIyBFeGVjdXRlIHRoZSB0ZW1wbGF0ZSBzdHJpbmcgaW4gYSB0ZW1wb3JhcnkgbmFtZXNwYWNlIGFuZCBzdXBwb3J0CisgICAgIyB0cmFjaW5nIHV0aWxpdGllcyBieSBzZXR0aW5nIGEgdmFsdWUgZm9yIGZyYW1lLmZfZ2xvYmFsc1snX19uYW1lX18nXQogICAgIG5hbWVzcGFjZSA9IGRpY3QoX19uYW1lX189J25hbWVkdHVwbGVfJXMnICUgdHlwZW5hbWUpCiAgICAgdHJ5OgogICAgICAgICBleGVjKGNsYXNzX2RlZmluaXRpb24sIG5hbWVzcGFjZSkKICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IoZS5tc2cgKyAnOlxuXG4nICsgY2xhc3NfZGVmaW5pdGlvbikKICAgICByZXN1bHQgPSBuYW1lc3BhY2VbdHlwZW5hbWVdCisgICAgcmVzdWx0Ll9zb3VyY2UgPSBjbGFzc19kZWZpbml0aW9uCiAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgcHJpbnQoY2xhc3NfZGVmaW5pdGlvbikKKyAgICAgICAgcHJpbnQocmVzdWx0Ll9zb3VyY2UpCiAKICAgICAjIEZvciBwaWNrbGluZyB0byB3b3JrLCB0aGUgX19tb2R1bGVfXyB2YXJpYWJsZSBuZWVkcyB0byBiZSBzZXQgdG8gdGhlIGZyYW1lCiAgICAgIyB3aGVyZSB0aGUgbmFtZWQgdHVwbGUgaXMgY3JlYXRlZC4gIEJ5cGFzcyB0aGlzIHN0ZXAgaW4gZW52aXJvbWVudHMgd2hlcmUKQEAgLTY3NCwxMiArNjgxLDg2IEBACiAgICAgICAgICAgICAgICAgcmVzdWx0W2VsZW1dID0gbmV3Y291bnQKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCisgICAgZGVmIF9fcG9zX18oc2VsZik6CisgICAgICAgICdBZGRzIGFuIGVtcHR5IGNvdW50ZXIsIGVmZmVjdGl2ZWx5IHN0cmlwcGluZyBuZWdhdGl2ZSBhbmQgemVybyBjb3VudHMnCisgICAgICAgIHJldHVybiBzZWxmICsgQ291bnRlcigpCisKKyAgICBkZWYgX19uZWdfXyhzZWxmKToKKyAgICAgICAgJycnU3VidHJhY3RzIGZyb20gYW4gZW1wdHkgY291bnRlci4gIFN0cmlwcyBwb3NpdGl2ZSBhbmQgemVybyBjb3VudHMsCisgICAgICAgIGFuZCBmbGlwcyB0aGUgc2lnbiBvbiBuZWdhdGl2ZSBjb3VudHMuCisKKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBDb3VudGVyKCkgLSBzZWxmCisKKyAgICBkZWYgX2tlZXBfcG9zaXRpdmUoc2VsZik6CisgICAgICAgICcnJ0ludGVybmFsIG1ldGhvZCB0byBzdHJpcCBlbGVtZW50cyB3aXRoIGEgbmVnYXRpdmUgb3IgemVybyBjb3VudCcnJworICAgICAgICBub25wb3NpdGl2ZSA9IFtlbGVtIGZvciBlbGVtLCBjb3VudCBpbiBzZWxmLml0ZW1zKCkgaWYgbm90IGNvdW50ID4gMF0KKyAgICAgICAgZm9yIGVsZW0gaW4gbm9ucG9zaXRpdmU6CisgICAgICAgICAgICBkZWwgc2VsZltlbGVtXQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9faWFkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSBhZGQgZnJvbSBhbm90aGVyIGNvdW50ZXIsIGtlZXBpbmcgb25seSBwb3NpdGl2ZSBjb3VudHMuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgKz0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiA0LCAnYyc6IDIsICdhJzogMX0pCisKKyAgICAgICAgJycnCisgICAgICAgIGZvciBlbGVtLCBjb3VudCBpbiBvdGhlci5pdGVtcygpOgorICAgICAgICAgICAgc2VsZltlbGVtXSArPSBjb3VudAorICAgICAgICByZXR1cm4gc2VsZi5fa2VlcF9wb3NpdGl2ZSgpCisKKyAgICBkZWYgX19pc3ViX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAnJydJbnBsYWNlIHN1YnRyYWN0IGNvdW50ZXIsIGJ1dCBrZWVwIG9ubHkgcmVzdWx0cyB3aXRoIHBvc2l0aXZlIGNvdW50cy4KKworICAgICAgICA+Pj4gYyA9IENvdW50ZXIoJ2FiYmJjJykKKyAgICAgICAgPj4+IGMgLT0gQ291bnRlcignYmNjZCcpCisgICAgICAgID4+PiBjCisgICAgICAgIENvdW50ZXIoeydiJzogMiwgJ2EnOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIG90aGVyLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmW2VsZW1dIC09IGNvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKworICAgIGRlZiBfX2lvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSB1bmlvbiBpcyB0aGUgbWF4aW11bSBvZiB2YWx1ZSBmcm9tIGVpdGhlciBjb3VudGVyLgorCisgICAgICAgID4+PiBjID0gQ291bnRlcignYWJiYicpCisgICAgICAgID4+PiBjIHw9IENvdW50ZXIoJ2JjYycpCisgICAgICAgID4+PiBjCisgICAgICAgIENvdW50ZXIoeydiJzogMywgJ2MnOiAyLCAnYSc6IDF9KQorCisgICAgICAgICcnJworICAgICAgICBmb3IgZWxlbSwgb3RoZXJfY291bnQgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgIGNvdW50ID0gc2VsZltlbGVtXQorICAgICAgICAgICAgaWYgb3RoZXJfY291bnQgPiBjb3VudDoKKyAgICAgICAgICAgICAgICBzZWxmW2VsZW1dID0gb3RoZXJfY291bnQKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tlZXBfcG9zaXRpdmUoKQorCisgICAgZGVmIF9faWFuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgJycnSW5wbGFjZSBpbnRlcnNlY3Rpb24gaXMgdGhlIG1pbmltdW0gb2YgY29ycmVzcG9uZGluZyBjb3VudHMuCisKKyAgICAgICAgPj4+IGMgPSBDb3VudGVyKCdhYmJiJykKKyAgICAgICAgPj4+IGMgJj0gQ291bnRlcignYmNjJykKKyAgICAgICAgPj4+IGMKKyAgICAgICAgQ291bnRlcih7J2InOiAxfSkKKworICAgICAgICAnJycKKyAgICAgICAgZm9yIGVsZW0sIGNvdW50IGluIHNlbGYuaXRlbXMoKToKKyAgICAgICAgICAgIG90aGVyX2NvdW50ID0gb3RoZXJbZWxlbV0KKyAgICAgICAgICAgIGlmIG90aGVyX2NvdW50IDwgY291bnQ6CisgICAgICAgICAgICAgICAgc2VsZltlbGVtXSA9IG90aGVyX2NvdW50CisgICAgICAgIHJldHVybiBzZWxmLl9rZWVwX3Bvc2l0aXZlKCkKKwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyAgQ2hhaW5NYXAgKGhlbHBlciBmb3IgY29uZmlncGFyc2VyKQorIyMjICBDaGFpbk1hcCAoaGVscGVyIGZvciBjb25maWdwYXJzZXIgYW5kIHN0cmluZy5UZW1wbGF0ZSkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1jbGFzcyBfQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgorY2xhc3MgQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgogICAgICcnJyBBIENoYWluTWFwIGdyb3VwcyBtdWx0aXBsZSBkaWN0cyAob3Igb3RoZXIgbWFwcGluZ3MpIHRvZ2V0aGVyCiAgICAgdG8gY3JlYXRlIGEgc2luZ2xlLCB1cGRhdGVhYmxlIHZpZXcuCiAKQEAgLTg5MCw2ICs5NzEsOCBAQAogICAgIGRlZiBpbnNlcnQoc2VsZiwgaSwgaXRlbSk6IHNlbGYuZGF0YS5pbnNlcnQoaSwgaXRlbSkKICAgICBkZWYgcG9wKHNlbGYsIGk9LTEpOiByZXR1cm4gc2VsZi5kYXRhLnBvcChpKQogICAgIGRlZiByZW1vdmUoc2VsZiwgaXRlbSk6IHNlbGYuZGF0YS5yZW1vdmUoaXRlbSkKKyAgICBkZWYgY2xlYXIoc2VsZik6IHNlbGYuZGF0YS5jbGVhcigpCisgICAgZGVmIGNvcHkoc2VsZik6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmKQogICAgIGRlZiBjb3VudChzZWxmLCBpdGVtKTogcmV0dXJuIHNlbGYuZGF0YS5jb3VudChpdGVtKQogICAgIGRlZiBpbmRleChzZWxmLCBpdGVtLCAqYXJncyk6IHJldHVybiBzZWxmLmRhdGEuaW5kZXgoaXRlbSwgKmFyZ3MpCiAgICAgZGVmIHJldmVyc2Uoc2VsZik6IHNlbGYuZGF0YS5yZXZlcnNlKCkKQEAgLTEwMzQsNyArMTExNyw3IEBACiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEuc3BsaXQoc2VwLCBtYXhzcGxpdCkKICAgICBkZWYgcnNwbGl0KHNlbGYsIHNlcD1Ob25lLCBtYXhzcGxpdD0tMSk6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEucnNwbGl0KHNlcCwgbWF4c3BsaXQpCi0gICAgZGVmIHNwbGl0bGluZXMoc2VsZiwga2VlcGVuZHM9MCk6IHJldHVybiBzZWxmLmRhdGEuc3BsaXRsaW5lcyhrZWVwZW5kcykKKyAgICBkZWYgc3BsaXRsaW5lcyhzZWxmLCBrZWVwZW5kcz1GYWxzZSk6IHJldHVybiBzZWxmLmRhdGEuc3BsaXRsaW5lcyhrZWVwZW5kcykKICAgICBkZWYgc3RhcnRzd2l0aChzZWxmLCBwcmVmaXgsIHN0YXJ0PTAsIGVuZD1fc3lzLm1heHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnN0YXJ0c3dpdGgocHJlZml4LCBzdGFydCwgZW5kKQogICAgIGRlZiBzdHJpcChzZWxmLCBjaGFycz1Ob25lKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS5zdHJpcChjaGFycykpCkBAIC0xMDQ0LDQ0ICsxMTI3LDMgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS50cmFuc2xhdGUoKmFyZ3MpKQogICAgIGRlZiB1cHBlcihzZWxmKTogcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuZGF0YS51cHBlcigpKQogICAgIGRlZiB6ZmlsbChzZWxmLCB3aWR0aCk6IHJldHVybiBzZWxmLl9fY2xhc3NfXyhzZWxmLmRhdGEuemZpbGwod2lkdGgpKQotCi0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyBTaW1wbGUgdGVzdHMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgIyB2ZXJpZnkgdGhhdCBpbnN0YW5jZXMgY2FuIGJlIHBpY2tsZWQKLSAgICBmcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCi0gICAgUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4LCB5JywgVHJ1ZSkKLSAgICBwID0gUG9pbnQoeD0xMCwgeT0yMCkKLSAgICBhc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKLQotICAgICMgdGVzdCBhbmQgZGVtb25zdHJhdGUgYWJpbGl0eSB0byBvdmVycmlkZSBtZXRob2RzCi0gICAgY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICAgICBfX3Nsb3RzX18gPSAoKQotICAgICAgICBAcHJvcGVydHkKLSAgICAgICAgZGVmIGh5cG90KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKLSAgICAgICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgICAgICByZXR1cm4gJ1BvaW50OiB4PSU2LjNmICB5PSU2LjNmICBoeXBvdD0lNi4zZicgJSAoc2VsZi54LCBzZWxmLnksIHNlbGYuaHlwb3QpCi0KLSAgICBmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgotICAgICAgICBwcmludCAocCkKLQotICAgIGNsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKLSAgICAgICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKLSAgICAgICAgX19zbG90c19fID0gKCkKLSAgICAgICAgX21ha2UgPSBjbGFzc21ldGhvZCh0dXBsZS5fX25ld19fKQotICAgICAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fbWFrZShfbWFwKGt3ZHMuZ2V0LCAoJ3gnLCAneScpLCBzZWxmKSkKLQotICAgIHByaW50KFBvaW50KDExLCAyMikuX3JlcGxhY2UoeD0xMDApKQotCi0gICAgUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQotICAgIHByaW50KFBvaW50M0QuX19kb2NfXykKLQotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgVGVzdFJlc3VsdHMgPSBuYW1lZHR1cGxlKCdUZXN0UmVzdWx0cycsICdmYWlsZWQgYXR0ZW1wdGVkJykKLSAgICBwcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKCkpKQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2M2UzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvY29sbGVjdGlvbnMvX19tYWluX18ucHkKQEAgLTAsMCArMSwzOCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBTaW1wbGUgdGVzdHMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgdmVyaWZ5IHRoYXQgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIHBpY2tsZSBpbXBvcnQgbG9hZHMsIGR1bXBzCitQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3gsIHknLCBUcnVlKQorcCA9IFBvaW50KHg9MTAsIHk9MjApCithc3NlcnQgcCA9PSBsb2FkcyhkdW1wcyhwKSkKKworIyB0ZXN0IGFuZCBkZW1vbnN0cmF0ZSBhYmlsaXR5IHRvIG92ZXJyaWRlIG1ldGhvZHMKK2NsYXNzIFBvaW50KG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpKToKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoeXBvdChzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLnggKiogMiArIHNlbGYueSAqKiAyKSAqKiAwLjUKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdQb2ludDogeD0lNi4zZiAgeT0lNi4zZiAgaHlwb3Q9JTYuM2YnICUgKHNlbGYueCwgc2VsZi55LCBzZWxmLmh5cG90KQorCitmb3IgcCBpbiBQb2ludCgzLCA0KSwgUG9pbnQoMTQsIDUvNy4pOgorICAgIHByaW50IChwKQorCitjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisgICAgJ1BvaW50IGNsYXNzIHdpdGggb3B0aW1pemVkIF9tYWtlKCkgYW5kIF9yZXBsYWNlKCkgd2l0aG91dCBlcnJvci1jaGVja2luZycKKyAgICBfX3Nsb3RzX18gPSAoKQorICAgIF9tYWtlID0gY2xhc3NtZXRob2QodHVwbGUuX19uZXdfXykKKyAgICBkZWYgX3JlcGxhY2Uoc2VsZiwgX21hcD1tYXAsICoqa3dkcyk6CisgICAgICAgIHJldHVybiBzZWxmLl9tYWtlKF9tYXAoa3dkcy5nZXQsICgneCcsICd5JyksIHNlbGYpKQorCitwcmludChQb2ludCgxMSwgMjIpLl9yZXBsYWNlKHg9MTAwKSkKKworUG9pbnQzRCA9IG5hbWVkdHVwbGUoJ1BvaW50M0QnLCBQb2ludC5fZmllbGRzICsgKCd6JywpKQorcHJpbnQoUG9pbnQzRC5fX2RvY19fKQorCitpbXBvcnQgZG9jdGVzdCwgY29sbGVjdGlvbnMKK1Rlc3RSZXN1bHRzID0gbmFtZWR0dXBsZSgnVGVzdFJlc3VsdHMnLCAnZmFpbGVkIGF0dGVtcHRlZCcpCitwcmludChUZXN0UmVzdWx0cygqZG9jdGVzdC50ZXN0bW9kKGNvbGxlY3Rpb25zKSkpCmRpZmYgLS1naXQgYS9MaWIvX2FiY29sbC5weSBiL0xpYi9jb2xsZWN0aW9ucy9hYmMucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL19hYmNvbGwucHkKcmVuYW1lIHRvIExpYi9jb2xsZWN0aW9ucy9hYmMucHkKaW5kZXggMjQxN2QxOC4uZDE3Y2ZkYyAxMDA2NDQKLS0tIGEvTGliL19hYmNvbGwucHkKKysrIGIvTGliL2NvbGxlY3Rpb25zL2FiYy5weQpAQCAtMyw5ICszLDcgQEAKIAogIiIiQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBmb3IgY29sbGVjdGlvbnMsIGFjY29yZGluZyB0byBQRVAgMzExOS4KIAotRE9OJ1QgVVNFIFRISVMgTU9EVUxFIERJUkVDVExZISAgVGhlIGNsYXNzZXMgaGVyZSBzaG91bGQgYmUgaW1wb3J0ZWQKLXZpYSBjb2xsZWN0aW9uczsgdGhleSBhcmUgZGVmaW5lZCBoZXJlIG9ubHkgdG8gYWxsZXZpYXRlIGNlcnRhaW4KLWJvb3RzdHJhcHBpbmcgaXNzdWVzLiAgVW5pdCB0ZXN0cyBhcmUgaW4gdGVzdF9jb2xsZWN0aW9ucy4KK1VuaXQgdGVzdHMgYXJlIGluIHRlc3RfY29sbGVjdGlvbnMuCiAiIiIKIAogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCkBAIC0yMCw5ICsxOCwxMyBAQAogICAgICAgICAgICAiQnl0ZVN0cmluZyIsCiAgICAgICAgICAgIF0KIAotCi0jIyMgY29sbGVjdGlvbiByZWxhdGVkIHR5cGVzIHdoaWNoIGFyZSBub3QgZXhwb3NlZCB0aHJvdWdoIGJ1aWx0aW4gIyMjCi0jIyBpdGVyYXRvcnMgIyMKKyMgUHJpdmF0ZSBsaXN0IG9mIHR5cGVzIHRoYXQgd2Ugd2FudCB0byByZWdpc3RlciB3aXRoIHRoZSB2YXJpb3VzIEFCQ3MKKyMgc28gdGhhdCB0aGV5IHdpbGwgcGFzcyB0ZXN0cyBsaWtlOgorIyAgICAgICBpdCA9IGl0ZXIoc29tZWJ5dGVhcnJheSkKKyMgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXQsIEl0ZXJhYmxlKQorIyBOb3RlOiAgaW4gb3RoZXIgaW1wbGVtZW50YXRpb25zLCB0aGVzZSB0eXBlcyBtYW55IG5vdCBiZSBkaXN0aW5jdAorIyBhbmQgdGhleSBtYWtlIGhhdmUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIHR5cGVzIHRoYXQKKyMgYXJlIG5vdCBpbmNsdWRlZCBvbiB0aGlzIGxpc3QuCiBieXRlc19pdGVyYXRvciA9IHR5cGUoaXRlcihiJycpKQogYnl0ZWFycmF5X2l0ZXJhdG9yID0gdHlwZShpdGVyKGJ5dGVhcnJheSgpKSkKICNjYWxsYWJsZV9pdGVyYXRvciA9ID8/PwpAQCAtNDEsMTMgKzQzLDE1IEBACiBkaWN0X3ZhbHVlcyA9IHR5cGUoe30udmFsdWVzKCkpCiBkaWN0X2l0ZW1zID0gdHlwZSh7fS5pdGVtcygpKQogIyMgbWlzYyAjIwotZGljdF9wcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKK21hcHBpbmdwcm94eSA9IHR5cGUodHlwZS5fX2RpY3RfXykKIAogCiAjIyMgT05FLVRSSUNLIFBPTklFUyAjIyMKIAogY2xhc3MgSGFzaGFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIDAKQEAgLTY1LDYgKzY5LDggQEAKIAogY2xhc3MgSXRlcmFibGUobWV0YWNsYXNzPUFCQ01ldGEpOgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgd2hpbGUgRmFsc2U6CkBAIC04MCw2ICs4Niw4IEBACiAKIGNsYXNzIEl0ZXJhdG9yKEl0ZXJhYmxlKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19uZXh0X18oc2VsZik6CiAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KQEAgLTExMSw2ICsxMTksOCBAQAogCiBjbGFzcyBTaXplZChtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIHJldHVybiAwCkBAIC0xMjUsNiArMTM1LDggQEAKIAogY2xhc3MgQ29udGFpbmVyKG1ldGFjbGFzcz1BQkNNZXRhKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHgpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTEzOSw2ICsxNTEsOCBAQAogCiBjbGFzcyBDYWxsYWJsZShtZXRhY2xhc3M9QUJDTWV0YSk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE2Niw2ICsxODAsOCBAQAogICAgIHRoZW4gdGhlIG90aGVyIG9wZXJhdGlvbnMgd2lsbCBhdXRvbWF0aWNhbGx5IGZvbGxvdyBzdWl0LgogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIGRlZiBfX2xlX18oc2VsZiwgb3RoZXIpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgU2V0KToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZApAQCAtMjc3LDYgKzI5Myw4IEBACiAKIGNsYXNzIE11dGFibGVTZXQoU2V0KToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgYWRkKHNlbGYsIHZhbHVlKToKICAgICAgICAgIiIiQWRkIGFuIGVsZW1lbnQuIiIiCkBAIC0zNTAsNiArMzY4LDggQEAKIAogY2xhc3MgTWFwcGluZyhTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CiAgICAgICAgIHJhaXNlIEtleUVycm9yCkBAIC0zODUsNiArNDA1LDggQEAKICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgcmV0dXJuIG5vdCAoc2VsZiA9PSBvdGhlcikKIAorTWFwcGluZy5yZWdpc3RlcihtYXBwaW5ncHJveHkpCisKIAogY2xhc3MgTWFwcGluZ1ZpZXcoU2l6ZWQpOgogCkBAIC00NTMsNiArNDc1LDggQEAKIAogY2xhc3MgTXV0YWJsZU1hcHBpbmcoTWFwcGluZyk6CiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICByYWlzZSBLZXlFcnJvcgpAQCAtNTMyLDYgKzU1Niw4IEBACiAgICAgX19nZXRpdGVtX18sIGFuZCBfX2xlbl9fLgogICAgICIiIgogCisgICAgX19zbG90c19fID0gKCkKKwogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CiAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKQEAgLTU3NywxMiArNjAzLDE2IEBACiAgICAgWFhYIFNob3VsZCBhZGQgYWxsIHRoZWlyIG1ldGhvZHMuCiAgICAgIiIiCiAKKyAgICBfX3Nsb3RzX18gPSAoKQorCiBCeXRlU3RyaW5nLnJlZ2lzdGVyKGJ5dGVzKQogQnl0ZVN0cmluZy5yZWdpc3RlcihieXRlYXJyYXkpCiAKIAogY2xhc3MgTXV0YWJsZVNlcXVlbmNlKFNlcXVlbmNlKToKIAorICAgIF9fc2xvdHNfXyA9ICgpCisKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaW5kZXgsIHZhbHVlKToKICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgpAQCAtNTk4LDYgKzYyOCwxMyBAQAogICAgIGRlZiBhcHBlbmQoc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLmluc2VydChsZW4oc2VsZiksIHZhbHVlKQogCisgICAgZGVmIGNsZWFyKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHNlbGYucG9wKCkKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKICAgICBkZWYgcmV2ZXJzZShzZWxmKToKICAgICAgICAgbiA9IGxlbihzZWxmKQogICAgICAgICBmb3IgaSBpbiByYW5nZShuLy8yKToKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL19iYXNlLnB5CmluZGV4IDlmMTFmNjkuLjFlMDk4YmUgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvX2Jhc2UucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9fYmFzZS5weQpAQCAtNCw3ICs0LDYgQEAKIF9fYXV0aG9yX18gPSAnQnJpYW4gUXVpbmxhbiAoYnJpYW5Ac3dlZXRhcHAuY29tKScKIAogaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKQEAgLTQ3MSw4ICs0NzAsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIExPR0dFUi5jcml0aWNhbCgnRnV0dXJlICVzIGluIHVuZXhwZWN0ZWQgc3RhdGU6ICVzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZi5mdXR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZ1dHVyZS5fc3RhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0ZSkKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Z1dHVyZSBpbiB1bmV4cGVjdGVkIHN0YXRlJykKIAogICAgIGRlZiBzZXRfcmVzdWx0KHNlbGYsIHJlc3VsdCk6CkBAIC01MzgsMTUgKzUzNywxOSBAQAogCiAgICAgICAgIGZzID0gW3NlbGYuc3VibWl0KGZuLCAqYXJncykgZm9yIGFyZ3MgaW4gemlwKCppdGVyYWJsZXMpXQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6Ci0gICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCBmdXR1cmUucmVzdWx0KGVuZF90aW1lIC0gdGltZS50aW1lKCkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb3IgZnV0dXJlIGluIGZzOgotICAgICAgICAgICAgICAgIGZ1dHVyZS5jYW5jZWwoKQorICAgICAgICAjIFlpZWxkIG11c3QgYmUgaGlkZGVuIGluIGNsb3N1cmUgc28gdGhhdCB0aGUgZnV0dXJlcyBhcmUgc3VibWl0dGVkCisgICAgICAgICMgYmVmb3JlIHRoZSBmaXJzdCBpdGVyYXRvciB2YWx1ZSBpcyByZXF1aXJlZC4KKyAgICAgICAgZGVmIHJlc3VsdF9pdGVyYXRvcigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBmdXR1cmUgaW4gZnM6CisgICAgICAgICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIGZ1dHVyZS5yZXN1bHQoKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgZnV0dXJlLnJlc3VsdChlbmRfdGltZSAtIHRpbWUudGltZSgpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmb3IgZnV0dXJlIGluIGZzOgorICAgICAgICAgICAgICAgICAgICBmdXR1cmUuY2FuY2VsKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdF9pdGVyYXRvcigpCiAKICAgICBkZWYgc2h1dGRvd24oc2VsZiwgd2FpdD1UcnVlKToKICAgICAgICAgIiIiQ2xlYW4tdXAgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIEV4ZWN1dG9yLgpkaWZmIC0tZ2l0IGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy9wcm9jZXNzLnB5CmluZGV4IGQzYmJlMmMuLjA0MjM4YTcgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvcHJvY2Vzcy5weQorKysgYi9MaWIvY29uY3VycmVudC9mdXR1cmVzL3Byb2Nlc3MucHkKQEAgLTQ2LDkgKzQ2LDEyIEBACiBfX2F1dGhvcl9fID0gJ0JyaWFuIFF1aW5sYW4gKGJyaWFuQHN3ZWV0YXBwLmNvbSknCiAKIGltcG9ydCBhdGV4aXQKK2ltcG9ydCBvcwogZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMgaW1wb3J0IF9iYXNlCiBpbXBvcnQgcXVldWUKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgU2ltcGxlUXVldWUsIEZ1bGwKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IHdhaXQKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB3ZWFrcmVmCiAKQEAgLTEyMSw3ICsxMjQsNyBAQAogICAgICAgICBjYWxsX2l0ZW0gPSBjYWxsX3F1ZXVlLmdldChibG9jaz1UcnVlKQogICAgICAgICBpZiBjYWxsX2l0ZW0gaXMgTm9uZToKICAgICAgICAgICAgICMgV2FrZSB1cCBxdWV1ZSBtYW5hZ2VtZW50IHRocmVhZAotICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChOb25lKQorICAgICAgICAgICAgcmVzdWx0X3F1ZXVlLnB1dChvcy5nZXRwaWQoKSkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByID0gY2FsbF9pdGVtLmZuKCpjYWxsX2l0ZW0uYXJncywgKipjYWxsX2l0ZW0ua3dhcmdzKQpAQCAtMTkzLDQ2ICsxOTYsOTIgQEAKICAgICAgICAgcmVzdWx0X3F1ZXVlOiBBIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSBvZiBfUmVzdWx0SXRlbXMgZ2VuZXJhdGVkIGJ5IHRoZQogICAgICAgICAgICAgcHJvY2VzcyB3b3JrZXJzLgogICAgICIiIgotICAgIG5iX3NodXRkb3duX3Byb2Nlc3NlcyA9IDAKLSAgICBkZWYgc2h1dGRvd25fb25lX3Byb2Nlc3MoKToKLSAgICAgICAgIiIiVGVsbCBhIHdvcmtlciB0byB0ZXJtaW5hdGUsIHdoaWNoIHdpbGwgaW4gdHVybiB3YWtlIHVzIGFnYWluIiIiCi0gICAgICAgIG5vbmxvY2FsIG5iX3NodXRkb3duX3Byb2Nlc3NlcwotICAgICAgICBjYWxsX3F1ZXVlLnB1dChOb25lKQotICAgICAgICBuYl9zaHV0ZG93bl9wcm9jZXNzZXMgKz0gMQorICAgIGV4ZWN1dG9yID0gTm9uZQorCisgICAgZGVmIHNodXR0aW5nX2Rvd24oKToKKyAgICAgICAgcmV0dXJuIF9zaHV0ZG93biBvciBleGVjdXRvciBpcyBOb25lIG9yIGV4ZWN1dG9yLl9zaHV0ZG93bl90aHJlYWQKKworICAgIGRlZiBzaHV0ZG93bl93b3JrZXIoKToKKyAgICAgICAgIyBUaGlzIGlzIGFuIHVwcGVyIGJvdW5kCisgICAgICAgIG5iX2NoaWxkcmVuX2FsaXZlID0gc3VtKHAuaXNfYWxpdmUoKSBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCkpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIG5iX2NoaWxkcmVuX2FsaXZlKToKKyAgICAgICAgICAgIGNhbGxfcXVldWUucHV0X25vd2FpdChOb25lKQorICAgICAgICAjIFJlbGVhc2UgdGhlIHF1ZXVlJ3MgcmVzb3VyY2VzIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgIGNhbGxfcXVldWUuY2xvc2UoKQorICAgICAgICAjIElmIC5qb2luKCkgaXMgbm90IGNhbGxlZCBvbiB0aGUgY3JlYXRlZCBwcm9jZXNzZXMgdGhlbgorICAgICAgICAjIHNvbWUgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG1ldGhvZHMgbWF5IGRlYWRsb2NrIG9uIE1hYyBPUyBYLgorICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CisgICAgICAgICAgICBwLmpvaW4oKQorCisgICAgcmVhZGVyID0gcmVzdWx0X3F1ZXVlLl9yZWFkZXIKKwogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIF9hZGRfY2FsbF9pdGVtX3RvX3F1ZXVlKHBlbmRpbmdfd29ya19pdGVtcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya19pZHNfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxfcXVldWUpCiAKLSAgICAgICAgcmVzdWx0X2l0ZW0gPSByZXN1bHRfcXVldWUuZ2V0KGJsb2NrPVRydWUpCi0gICAgICAgIGlmIHJlc3VsdF9pdGVtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgd29ya19pdGVtID0gcGVuZGluZ193b3JrX2l0ZW1zW3Jlc3VsdF9pdGVtLndvcmtfaWRdCi0gICAgICAgICAgICBkZWwgcGVuZGluZ193b3JrX2l0ZW1zW3Jlc3VsdF9pdGVtLndvcmtfaWRdCi0KLSAgICAgICAgICAgIGlmIHJlc3VsdF9pdGVtLmV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9leGNlcHRpb24ocmVzdWx0X2l0ZW0uZXhjZXB0aW9uKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB3b3JrX2l0ZW0uZnV0dXJlLnNldF9yZXN1bHQocmVzdWx0X2l0ZW0ucmVzdWx0KQorICAgICAgICBzZW50aW5lbHMgPSBbcC5zZW50aW5lbCBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCldCisgICAgICAgIGFzc2VydCBzZW50aW5lbHMKKyAgICAgICAgcmVhZHkgPSB3YWl0KFtyZWFkZXJdICsgc2VudGluZWxzKQorICAgICAgICBpZiByZWFkZXIgaW4gcmVhZHk6CisgICAgICAgICAgICByZXN1bHRfaXRlbSA9IHJlYWRlci5yZWN2KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTWFyayB0aGUgcHJvY2VzcyBwb29sIGJyb2tlbiBzbyB0aGF0IHN1Ym1pdHMgZmFpbCByaWdodCBub3cuCisgICAgICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCisgICAgICAgICAgICBpZiBleGVjdXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBleGVjdXRvci5fYnJva2VuID0gVHJ1ZQorICAgICAgICAgICAgICAgIGV4ZWN1dG9yLl9zaHV0ZG93bl90aHJlYWQgPSBUcnVlCisgICAgICAgICAgICAgICAgZXhlY3V0b3IgPSBOb25lCisgICAgICAgICAgICAjIEFsbCBmdXR1cmVzIGluIGZsaWdodCBtdXN0IGJlIG1hcmtlZCBmYWlsZWQKKyAgICAgICAgICAgIGZvciB3b3JrX2lkLCB3b3JrX2l0ZW0gaW4gcGVuZGluZ193b3JrX2l0ZW1zLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICBCcm9rZW5Qcm9jZXNzUG9vbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJBIHByb2Nlc3MgaW4gdGhlIHByb2Nlc3MgcG9vbCB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgInRlcm1pbmF0ZWQgYWJydXB0bHkgd2hpbGUgdGhlIGZ1dHVyZSB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgInJ1bm5pbmcgb3IgcGVuZGluZy4iCisgICAgICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICBwZW5kaW5nX3dvcmtfaXRlbXMuY2xlYXIoKQorICAgICAgICAgICAgIyBUZXJtaW5hdGUgcmVtYWluaW5nIHdvcmtlcnMgZm9yY2libHk6IHRoZSBxdWV1ZXMgb3IgdGhlaXIKKyAgICAgICAgICAgICMgbG9ja3MgbWF5IGJlIGluIGEgZGlydHkgc3RhdGUgYW5kIGJsb2NrIGZvcmV2ZXIuCisgICAgICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXMudmFsdWVzKCk6CisgICAgICAgICAgICAgICAgcC50ZXJtaW5hdGUoKQorICAgICAgICAgICAgc2h1dGRvd25fd29ya2VyKCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdF9pdGVtLCBpbnQpOgorICAgICAgICAgICAgIyBDbGVhbiBzaHV0ZG93biBvZiBhIHdvcmtlciB1c2luZyBpdHMgUElECisgICAgICAgICAgICAjIChhdm9pZHMgbWFya2luZyB0aGUgZXhlY3V0b3IgYnJva2VuKQorICAgICAgICAgICAgYXNzZXJ0IHNodXR0aW5nX2Rvd24oKQorICAgICAgICAgICAgcCA9IHByb2Nlc3Nlcy5wb3AocmVzdWx0X2l0ZW0pCisgICAgICAgICAgICBwLmpvaW4oKQorICAgICAgICAgICAgaWYgbm90IHByb2Nlc3NlczoKKyAgICAgICAgICAgICAgICBzaHV0ZG93bl93b3JrZXIoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbGlmIHJlc3VsdF9pdGVtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd29ya19pdGVtID0gcGVuZGluZ193b3JrX2l0ZW1zLnBvcChyZXN1bHRfaXRlbS53b3JrX2lkLCBOb25lKQorICAgICAgICAgICAgIyB3b3JrX2l0ZW0gY2FuIGJlIE5vbmUgaWYgYW5vdGhlciBwcm9jZXNzIHRlcm1pbmF0ZWQgKHNlZSBhYm92ZSkKKyAgICAgICAgICAgIGlmIHdvcmtfaXRlbSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRfaXRlbS5leGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIHdvcmtfaXRlbS5mdXR1cmUuc2V0X2V4Y2VwdGlvbihyZXN1bHRfaXRlbS5leGNlcHRpb24pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd29ya19pdGVtLmZ1dHVyZS5zZXRfcmVzdWx0KHJlc3VsdF9pdGVtLnJlc3VsdCkKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIHdlIHNob3VsZCBzdGFydCBzaHV0dGluZyBkb3duLgogICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX3JlZmVyZW5jZSgpCiAgICAgICAgICMgTm8gbW9yZSB3b3JrIGl0ZW1zIGNhbiBiZSBhZGRlZCBpZjoKICAgICAgICAgIyAgIC0gVGhlIGludGVycHJldGVyIGlzIHNodXR0aW5nIGRvd24gT1IKICAgICAgICAgIyAgIC0gVGhlIGV4ZWN1dG9yIHRoYXQgb3ducyB0aGlzIHdvcmtlciBoYXMgYmVlbiBjb2xsZWN0ZWQgT1IKICAgICAgICAgIyAgIC0gVGhlIGV4ZWN1dG9yIHRoYXQgb3ducyB0aGlzIHdvcmtlciBoYXMgYmVlbiBzaHV0ZG93bi4KLSAgICAgICAgaWYgX3NodXRkb3duIG9yIGV4ZWN1dG9yIGlzIE5vbmUgb3IgZXhlY3V0b3IuX3NodXRkb3duX3RocmVhZDoKLSAgICAgICAgICAgICMgU2luY2Ugbm8gbmV3IHdvcmsgaXRlbXMgY2FuIGJlIGFkZGVkLCBpdCBpcyBzYWZlIHRvIHNodXRkb3duCi0gICAgICAgICAgICAjIHRoaXMgdGhyZWFkIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdvcmsgaXRlbXMuCi0gICAgICAgICAgICBpZiBub3QgcGVuZGluZ193b3JrX2l0ZW1zOgotICAgICAgICAgICAgICAgIHdoaWxlIG5iX3NodXRkb3duX3Byb2Nlc3NlcyA8IGxlbihwcm9jZXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBzaHV0ZG93bl9vbmVfcHJvY2VzcygpCi0gICAgICAgICAgICAgICAgIyBJZiAuam9pbigpIGlzIG5vdCBjYWxsZWQgb24gdGhlIGNyZWF0ZWQgcHJvY2Vzc2VzIHRoZW4KLSAgICAgICAgICAgICAgICAjIHNvbWUgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIG1ldGhvZHMgbWF5IGRlYWRsb2NrIG9uIE1hYyBPUwotICAgICAgICAgICAgICAgICMgWC4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXM6Ci0gICAgICAgICAgICAgICAgICAgIHAuam9pbigpCi0gICAgICAgICAgICAgICAgY2FsbF9xdWV1ZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGRlbCBleGVjdXRvcgorICAgICAgICBpZiBzaHV0dGluZ19kb3duKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBTaW5jZSBubyBuZXcgd29yayBpdGVtcyBjYW4gYmUgYWRkZWQsIGl0IGlzIHNhZmUgdG8gc2h1dGRvd24KKyAgICAgICAgICAgICAgICAjIHRoaXMgdGhyZWFkIGlmIHRoZXJlIGFyZSBubyBwZW5kaW5nIHdvcmsgaXRlbXMuCisgICAgICAgICAgICAgICAgaWYgbm90IHBlbmRpbmdfd29ya19pdGVtczoKKyAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25fd29ya2VyKCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBleGNlcHQgRnVsbDoKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgbm90IGEgcHJvYmxlbTogd2Ugd2lsbCBldmVudHVhbGx5IGJlIHdva2VuIHVwIChpbgorICAgICAgICAgICAgICAgICMgcmVzdWx0X3F1ZXVlLmdldCgpKSBhbmQgYmUgYWJsZSB0byBzZW5kIGEgc2VudGluZWwgYWdhaW4uCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBleGVjdXRvciA9IE5vbmUKIAogX3N5c3RlbV9saW1pdHNfY2hlY2tlZCA9IEZhbHNlCiBfc3lzdGVtX2xpbWl0ZWQgPSBOb25lCkBAIC0yNDMsNyArMjkyLDYgQEAKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoX3N5c3RlbV9saW1pdGVkKQogICAgIF9zeXN0ZW1fbGltaXRzX2NoZWNrZWQgPSBUcnVlCiAgICAgdHJ5OgotICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgbnNlbXNfbWF4ID0gb3Muc3lzY29uZigiU0NfU0VNX05TRU1TX01BWCIpCiAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CiAgICAgICAgICMgc3lzY29uZiBub3QgYXZhaWxhYmxlIG9yIHNldHRpbmcgbm90IGF2YWlsYWJsZQpAQCAtMjU5LDYgKzMwNywxNCBAQAogICAgIF9zeXN0ZW1fbGltaXRlZCA9ICJzeXN0ZW0gcHJvdmlkZXMgdG9vIGZldyBzZW1hcGhvcmVzICglZCBhdmFpbGFibGUsIDI1NiBuZWNlc3NhcnkpIiAlIG5zZW1zX21heAogICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoX3N5c3RlbV9saW1pdGVkKQogCisKK2NsYXNzIEJyb2tlblByb2Nlc3NQb29sKFJ1bnRpbWVFcnJvcik6CisgICAgIiIiCisgICAgUmFpc2VkIHdoZW4gYSBwcm9jZXNzIGluIGEgUHJvY2Vzc1Bvb2xFeGVjdXRvciB0ZXJtaW5hdGVkIGFicnVwdGx5CisgICAgd2hpbGUgYSBmdXR1cmUgd2FzIGluIHRoZSBydW5uaW5nIHN0YXRlLgorICAgICIiIgorCisKIGNsYXNzIFByb2Nlc3NQb29sRXhlY3V0b3IoX2Jhc2UuRXhlY3V0b3IpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhfd29ya2Vycz1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZXMgYSBuZXcgUHJvY2Vzc1Bvb2xFeGVjdXRvciBpbnN0YW5jZS4KQEAgLTI4MCwxNCArMzM2LDIwIEBACiAgICAgICAgICMgYmVjYXVzZSBmdXR1cmVzIGluIHRoZSBjYWxsIHF1ZXVlIGNhbm5vdCBiZSBjYW5jZWxsZWQuCiAgICAgICAgIHNlbGYuX2NhbGxfcXVldWUgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoc2VsZi5fbWF4X3dvcmtlcnMgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYVFJBX1FVRVVFRF9DQUxMUykKLSAgICAgICAgc2VsZi5fcmVzdWx0X3F1ZXVlID0gbXVsdGlwcm9jZXNzaW5nLlF1ZXVlKCkKKyAgICAgICAgIyBLaWxsZWQgd29ya2VyIHByb2Nlc3NlcyBjYW4gcHJvZHVjZSBzcHVyaW91cyAiYnJva2VuIHBpcGUiCisgICAgICAgICMgdHJhY2ViYWNrcyBpbiB0aGUgcXVldWUncyBvd24gd29ya2VyIHRocmVhZC4gQnV0IHdlIGRldGVjdCBraWxsZWQKKyAgICAgICAgIyBwcm9jZXNzZXMgYW55d2F5LCBzbyBzaWxlbmNlIHRoZSB0cmFjZWJhY2tzLgorICAgICAgICBzZWxmLl9jYWxsX3F1ZXVlLl9pZ25vcmVfZXBpcGUgPSBUcnVlCisgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSA9IFNpbXBsZVF1ZXVlKCkKICAgICAgICAgc2VsZi5fd29ya19pZHMgPSBxdWV1ZS5RdWV1ZSgpCiAgICAgICAgIHNlbGYuX3F1ZXVlX21hbmFnZW1lbnRfdGhyZWFkID0gTm9uZQotICAgICAgICBzZWxmLl9wcm9jZXNzZXMgPSBzZXQoKQorICAgICAgICAjIE1hcCBvZiBwaWRzIHRvIHByb2Nlc3NlcworICAgICAgICBzZWxmLl9wcm9jZXNzZXMgPSB7fQogCiAgICAgICAgICMgU2h1dGRvd24gaXMgYSB0d28tc3RlcCBwcm9jZXNzLgogICAgICAgICBzZWxmLl9zaHV0ZG93bl90aHJlYWQgPSBGYWxzZQogICAgICAgICBzZWxmLl9zaHV0ZG93bl9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLl9icm9rZW4gPSBGYWxzZQogICAgICAgICBzZWxmLl9xdWV1ZV9jb3VudCA9IDAKICAgICAgICAgc2VsZi5fcGVuZGluZ193b3JrX2l0ZW1zID0ge30KIApAQCAtMjk3LDYgKzM1OSw4IEBACiAgICAgICAgIGRlZiB3ZWFrcmVmX2NiKF8sIHE9c2VsZi5fcmVzdWx0X3F1ZXVlKToKICAgICAgICAgICAgIHEucHV0KE5vbmUpCiAgICAgICAgIGlmIHNlbGYuX3F1ZXVlX21hbmFnZW1lbnRfdGhyZWFkIGlzIE5vbmU6CisgICAgICAgICAgICAjIFN0YXJ0IHRoZSBwcm9jZXNzZXMgc28gdGhhdCB0aGVpciBzZW50aW5lbHMgYXJlIGtub3duLgorICAgICAgICAgICAgc2VsZi5fYWRqdXN0X3Byb2Nlc3NfY291bnQoKQogICAgICAgICAgICAgc2VsZi5fcXVldWVfbWFuYWdlbWVudF90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKAogICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9X3F1ZXVlX21hbmFnZW1lbnRfd29ya2VyLAogICAgICAgICAgICAgICAgICAgICBhcmdzPSh3ZWFrcmVmLnJlZihzZWxmLCB3ZWFrcmVmX2NiKSwKQEAgLTMxNiwxMCArMzgwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHNlbGYuX2NhbGxfcXVldWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZSkpCiAgICAgICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nlcy5hZGQocCkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3Nlc1twLnBpZF0gPSBwCiAKICAgICBkZWYgc3VibWl0KHNlbGYsIGZuLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICB3aXRoIHNlbGYuX3NodXRkb3duX2xvY2s6CisgICAgICAgICAgICBpZiBzZWxmLl9icm9rZW46CisgICAgICAgICAgICAgICAgcmFpc2UgQnJva2VuUHJvY2Vzc1Bvb2woJ0EgY2hpbGQgcHJvY2VzcyB0ZXJtaW5hdGVkICcKKyAgICAgICAgICAgICAgICAgICAgJ2FicnVwdGx5LCB0aGUgcHJvY2VzcyBwb29sIGlzIG5vdCB1c2FibGUgYW55bW9yZScpCiAgICAgICAgICAgICBpZiBzZWxmLl9zaHV0ZG93bl90aHJlYWQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdjYW5ub3Qgc2NoZWR1bGUgbmV3IGZ1dHVyZXMgYWZ0ZXIgc2h1dGRvd24nKQogCkBAIC0zMzMsNyArNDAwLDYgQEAKICAgICAgICAgICAgIHNlbGYuX3Jlc3VsdF9xdWV1ZS5wdXQoTm9uZSkKIAogICAgICAgICAgICAgc2VsZi5fc3RhcnRfcXVldWVfbWFuYWdlbWVudF90aHJlYWQoKQotICAgICAgICAgICAgc2VsZi5fYWRqdXN0X3Byb2Nlc3NfY291bnQoKQogICAgICAgICAgICAgcmV0dXJuIGYKICAgICBzdWJtaXQuX19kb2NfXyA9IF9iYXNlLkV4ZWN1dG9yLnN1Ym1pdC5fX2RvY19fCiAKZGlmZiAtLWdpdCBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5IGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKaW5kZXggZmJhYzA4OC4uOTViYjY4MiAxMDA2NDQKLS0tIGEvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKKysrIGIvTGliL2NvbmN1cnJlbnQvZnV0dXJlcy90aHJlYWQucHkKQEAgLTc0LDcgKzc0LDcgQEAKICAgICAgICAgICAgICAgICB3b3JrX3F1ZXVlLnB1dChOb25lKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgZGVsIGV4ZWN1dG9yCi0gICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKKyAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbjoKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKZGlmZiAtLWdpdCBhL0xpYi9jb25maWdwYXJzZXIucHkgYi9MaWIvY29uZmlncGFyc2VyLnB5CmluZGV4IGQxNDhiODguLjlkNWY3NzkgMTAwNjQ0Ci0tLSBhL0xpYi9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL2NvbmZpZ3BhcnNlci5weQpAQCAtMTE5LDcgKzExOSw4IEBACiAgICAgICAgIGJldHdlZW4ga2V5cyBhbmQgdmFsdWVzIGFyZSBzdXJyb3VuZGVkIGJ5IHNwYWNlcy4KICIiIgogCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZywgT3JkZXJlZERpY3QgYXMgX2RlZmF1bHRfZGljdCwgX0NoYWluTWFwCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0IGFzIF9kZWZhdWx0X2RpY3QsIENoYWluTWFwIGFzIF9DaGFpbk1hcAogaW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IGlvCiBpbXBvcnQgaXRlcnRvb2xzCkBAIC05OTIsMTggKzk5MywyNiBAQAogICAgICAgICBpbmRlbnRfbGV2ZWwgPSAwCiAgICAgICAgIGUgPSBOb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb25lLCBvciBhbiBleGNlcHRpb24KICAgICAgICAgZm9yIGxpbmVubywgbGluZSBpbiBlbnVtZXJhdGUoZnAsIHN0YXJ0PTEpOgotICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IE5vbmUKKyAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBzeXMubWF4c2l6ZQogICAgICAgICAgICAgIyBzdHJpcCBpbmxpbmUgY29tbWVudHMKLSAgICAgICAgICAgIGZvciBwcmVmaXggaW4gc2VsZi5faW5saW5lX2NvbW1lbnRfcHJlZml4ZXM6Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBsaW5lLmZpbmQocHJlZml4KQotICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IDAgb3IgKGluZGV4ID4gMCBhbmQgbGluZVtpbmRleC0xXS5pc3NwYWNlKCkpOgotICAgICAgICAgICAgICAgICAgICBjb21tZW50X3N0YXJ0ID0gaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlubGluZV9wcmVmaXhlcyA9IHtwOiAtMSBmb3IgcCBpbiBzZWxmLl9pbmxpbmVfY29tbWVudF9wcmVmaXhlc30KKyAgICAgICAgICAgIHdoaWxlIGNvbW1lbnRfc3RhcnQgPT0gc3lzLm1heHNpemUgYW5kIGlubGluZV9wcmVmaXhlczoKKyAgICAgICAgICAgICAgICBuZXh0X3ByZWZpeGVzID0ge30KKyAgICAgICAgICAgICAgICBmb3IgcHJlZml4LCBpbmRleCBpbiBpbmxpbmVfcHJlZml4ZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBsaW5lLmZpbmQocHJlZml4LCBpbmRleCsxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbmRleCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIG5leHRfcHJlZml4ZXNbcHJlZml4XSA9IGluZGV4CisgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ID09IDAgb3IgKGluZGV4ID4gMCBhbmQgbGluZVtpbmRleC0xXS5pc3NwYWNlKCkpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF9zdGFydCA9IG1pbihjb21tZW50X3N0YXJ0LCBpbmRleCkKKyAgICAgICAgICAgICAgICBpbmxpbmVfcHJlZml4ZXMgPSBuZXh0X3ByZWZpeGVzCiAgICAgICAgICAgICAjIHN0cmlwIGZ1bGwgbGluZSBjb21tZW50cwogICAgICAgICAgICAgZm9yIHByZWZpeCBpbiBzZWxmLl9jb21tZW50X3ByZWZpeGVzOgogICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RyaXAoKS5zdGFydHN3aXRoKHByZWZpeCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSAwCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBjb21tZW50X3N0YXJ0ID09IHN5cy5tYXhzaXplOgorICAgICAgICAgICAgICAgIGNvbW1lbnRfc3RhcnQgPSBOb25lCiAgICAgICAgICAgICB2YWx1ZSA9IGxpbmVbOmNvbW1lbnRfc3RhcnRdLnN0cmlwKCkKICAgICAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9lbXB0eV9saW5lc19pbl92YWx1ZXM6CmRpZmYgLS1naXQgYS9MaWIvY29udGV4dGxpYi5weSBiL0xpYi9jb250ZXh0bGliLnB5CmluZGV4IDVlYmJiYzYuLmJkZTJmZWIgMTAwNjQ0Ci0tLSBhL0xpYi9jb250ZXh0bGliLnB5CisrKyBiL0xpYi9jb250ZXh0bGliLnB5CkBAIC0xLDEwICsxLDEwIEBACiAiIiJVdGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50IGNvbnRleHRzLiAgU2VlIFBFUCAzNDMuIiIiCiAKIGltcG9ydCBzeXMKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKLWZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KIAotX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJDb250ZXh0RGVjb3JhdG9yIl0KK19fYWxsX18gPSBbImNvbnRleHRtYW5hZ2VyIiwgImNsb3NpbmciLCAiQ29udGV4dERlY29yYXRvciIsICJFeGl0U3RhY2siXQogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTEzLDEyICsxMywxMiBAQAogICAgIGRlZiBfcmVjcmVhdGVfY20oc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHJlY3JlYXRlZCBpbnN0YW5jZSBvZiBzZWxmLgogCi0gICAgICAgIEFsbG93cyBvdGhlcndpc2Ugb25lLXNob3QgY29udGV4dCBtYW5hZ2VycyBsaWtlCisgICAgICAgIEFsbG93cyBhbiBvdGhlcndpc2Ugb25lLXNob3QgY29udGV4dCBtYW5hZ2VyIGxpa2UKICAgICAgICAgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyIHRvIHN1cHBvcnQgdXNlIGFzCi0gICAgICAgIGRlY29yYXRvcnMgdmlhIGltcGxpY2l0IHJlY3JlYXRpb24uCisgICAgICAgIGEgZGVjb3JhdG9yIHZpYSBpbXBsaWNpdCByZWNyZWF0aW9uLgogCi0gICAgICAgIE5vdGU6IHRoaXMgaXMgYSBwcml2YXRlIGludGVyZmFjZSBqdXN0IGZvciBfR0NNIGluIDMuMiBidXQgd2lsbCBiZQotICAgICAgICByZW5hbWVkIGFuZCBkb2N1bWVudGVkIGZvciB0aGlyZCBwYXJ0eSB1c2UgaW4gMy4zCisgICAgICAgIFRoaXMgaXMgYSBwcml2YXRlIGludGVyZmFjZSBqdXN0IGZvciBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXIuCisgICAgICAgIFNlZSBpc3N1ZSAjMTE2NDcgZm9yIGRldGFpbHMuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gc2VsZgogCkBAIC0xMzksMyArMTM5LDExNyBAQAogICAgICAgICByZXR1cm4gc2VsZi50aGluZwogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgogICAgICAgICBzZWxmLnRoaW5nLmNsb3NlKCkKKworCisjIEluc3BpcmVkIGJ5IGRpc2N1c3Npb25zIG9uIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzU4NQorY2xhc3MgRXhpdFN0YWNrKG9iamVjdCk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIGZvciBkeW5hbWljIG1hbmFnZW1lbnQgb2YgYSBzdGFjayBvZiBleGl0IGNhbGxiYWNrcworCisgICAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZpbGVzID0gW3N0YWNrLmVudGVyX2NvbnRleHQob3BlbihmbmFtZSkpIGZvciBmbmFtZSBpbiBmaWxlbmFtZXNdCisgICAgICAgICAgICAjIEFsbCBvcGVuZWQgZmlsZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNsb3NlZCBhdCB0aGUgZW5kIG9mCisgICAgICAgICAgICAjIHRoZSB3aXRoIHN0YXRlbWVudCwgZXZlbiBpZiBhdHRlbXB0cyB0byBvcGVuIGZpbGVzIGxhdGVyCisgICAgICAgICAgICAjIGluIHRoZSBsaXN0IHRocm93IGFuIGV4Y2VwdGlvbgorCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcyA9IGRlcXVlKCkKKworICAgIGRlZiBwb3BfYWxsKHNlbGYpOgorICAgICAgICAiIiJQcmVzZXJ2ZSB0aGUgY29udGV4dCBzdGFjayBieSB0cmFuc2ZlcnJpbmcgaXQgdG8gYSBuZXcgaW5zdGFuY2UiIiIKKyAgICAgICAgbmV3X3N0YWNrID0gdHlwZShzZWxmKSgpCisgICAgICAgIG5ld19zdGFjay5fZXhpdF9jYWxsYmFja3MgPSBzZWxmLl9leGl0X2NhbGxiYWNrcworICAgICAgICBzZWxmLl9leGl0X2NhbGxiYWNrcyA9IGRlcXVlKCkKKyAgICAgICAgcmV0dXJuIG5ld19zdGFjaworCisgICAgZGVmIF9wdXNoX2NtX2V4aXQoc2VsZiwgY20sIGNtX2V4aXQpOgorICAgICAgICAiIiJIZWxwZXIgdG8gY29ycmVjdGx5IHJlZ2lzdGVyIGNhbGxiYWNrcyB0byBfX2V4aXRfXyBtZXRob2RzIiIiCisgICAgICAgIGRlZiBfZXhpdF93cmFwcGVyKCpleGNfZGV0YWlscyk6CisgICAgICAgICAgICByZXR1cm4gY21fZXhpdChjbSwgKmV4Y19kZXRhaWxzKQorICAgICAgICBfZXhpdF93cmFwcGVyLl9fc2VsZl9fID0gY20KKyAgICAgICAgc2VsZi5wdXNoKF9leGl0X3dyYXBwZXIpCisKKyAgICBkZWYgcHVzaChzZWxmLCBleGl0KToKKyAgICAgICAgIiIiUmVnaXN0ZXJzIGEgY2FsbGJhY2sgd2l0aCB0aGUgc3RhbmRhcmQgX19leGl0X18gbWV0aG9kIHNpZ25hdHVyZQorCisgICAgICAgIENhbiBzdXBwcmVzcyBleGNlcHRpb25zIHRoZSBzYW1lIHdheSBfX2V4aXRfXyBtZXRob2RzIGNhbi4KKworICAgICAgICBBbHNvIGFjY2VwdHMgYW55IG9iamVjdCB3aXRoIGFuIF9fZXhpdF9fIG1ldGhvZCAocmVnaXN0ZXJpbmcgYSBjYWxsCisgICAgICAgIHRvIHRoZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgb2JqZWN0IGl0c2VsZikKKyAgICAgICAgIiIiCisgICAgICAgICMgV2UgdXNlIGFuIHVuYm91bmQgbWV0aG9kIHJhdGhlciB0aGFuIGEgYm91bmQgbWV0aG9kIHRvIGZvbGxvdworICAgICAgICAjIHRoZSBzdGFuZGFyZCBsb29rdXAgYmVoYXZpb3VyIGZvciBzcGVjaWFsIG1ldGhvZHMKKyAgICAgICAgX2NiX3R5cGUgPSB0eXBlKGV4aXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4aXRfbWV0aG9kID0gX2NiX3R5cGUuX19leGl0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBOb3QgYSBjb250ZXh0IG1hbmFnZXIsIHNvIGFzc3VtZSBpdHMgYSBjYWxsYWJsZQorICAgICAgICAgICAgc2VsZi5fZXhpdF9jYWxsYmFja3MuYXBwZW5kKGV4aXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wdXNoX2NtX2V4aXQoZXhpdCwgZXhpdF9tZXRob2QpCisgICAgICAgIHJldHVybiBleGl0ICMgQWxsb3cgdXNlIGFzIGEgZGVjb3JhdG9yCisKKyAgICBkZWYgY2FsbGJhY2soc2VsZiwgY2FsbGJhY2ssICphcmdzLCAqKmt3ZHMpOgorICAgICAgICAiIiJSZWdpc3RlcnMgYW4gYXJiaXRyYXJ5IGNhbGxiYWNrIGFuZCBhcmd1bWVudHMuCisKKyAgICAgICAgQ2Fubm90IHN1cHByZXNzIGV4Y2VwdGlvbnMuCisgICAgICAgICIiIgorICAgICAgICBkZWYgX2V4aXRfd3JhcHBlcihleGNfdHlwZSwgZXhjLCB0Yik6CisgICAgICAgICAgICBjYWxsYmFjaygqYXJncywgKiprd2RzKQorICAgICAgICAjIFdlIGNoYW5nZWQgdGhlIHNpZ25hdHVyZSwgc28gdXNpbmcgQHdyYXBzIGlzIG5vdCBhcHByb3ByaWF0ZSwgYnV0CisgICAgICAgICMgc2V0dGluZyBfX3dyYXBwZWRfXyBtYXkgc3RpbGwgaGVscCB3aXRoIGludHJvc3BlY3Rpb24KKyAgICAgICAgX2V4aXRfd3JhcHBlci5fX3dyYXBwZWRfXyA9IGNhbGxiYWNrCisgICAgICAgIHNlbGYucHVzaChfZXhpdF93cmFwcGVyKQorICAgICAgICByZXR1cm4gY2FsbGJhY2sgIyBBbGxvdyB1c2UgYXMgYSBkZWNvcmF0b3IKKworICAgIGRlZiBlbnRlcl9jb250ZXh0KHNlbGYsIGNtKToKKyAgICAgICAgIiIiRW50ZXJzIHRoZSBzdXBwbGllZCBjb250ZXh0IG1hbmFnZXIKKworICAgICAgICBJZiBzdWNjZXNzZnVsLCBhbHNvIHB1c2hlcyBpdHMgX19leGl0X18gbWV0aG9kIGFzIGEgY2FsbGJhY2sgYW5kCisgICAgICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgX19lbnRlcl9fIG1ldGhvZC4KKyAgICAgICAgIiIiCisgICAgICAgICMgV2UgbG9vayB1cCB0aGUgc3BlY2lhbCBtZXRob2RzIG9uIHRoZSB0eXBlIHRvIG1hdGNoIHRoZSB3aXRoIHN0YXRlbWVudAorICAgICAgICBfY21fdHlwZSA9IHR5cGUoY20pCisgICAgICAgIF9leGl0ID0gX2NtX3R5cGUuX19leGl0X18KKyAgICAgICAgcmVzdWx0ID0gX2NtX3R5cGUuX19lbnRlcl9fKGNtKQorICAgICAgICBzZWxmLl9wdXNoX2NtX2V4aXQoY20sIF9leGl0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkltbWVkaWF0ZWx5IHVud2luZCB0aGUgY29udGV4dCBzdGFjayIiIgorICAgICAgICBzZWxmLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICMgV2UgbWFuaXB1bGF0ZSB0aGUgZXhjZXB0aW9uIHN0YXRlIHNvIGl0IGJlaGF2ZXMgYXMgdGhvdWdoCisgICAgICAgICMgd2Ugd2VyZSBhY3R1YWxseSBuZXN0aW5nIG11bHRpcGxlIHdpdGggc3RhdGVtZW50cworICAgICAgICBmcmFtZV9leGMgPSBzeXMuZXhjX2luZm8oKVsxXQorICAgICAgICBkZWYgX2ZpeF9leGNlcHRpb25fY29udGV4dChuZXdfZXhjLCBvbGRfZXhjKToKKyAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgZXhjX2NvbnRleHQgPSBuZXdfZXhjLl9fY29udGV4dF9fCisgICAgICAgICAgICAgICAgaWYgZXhjX2NvbnRleHQgaW4gKE5vbmUsIGZyYW1lX2V4Yyk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgbmV3X2V4YyA9IGV4Y19jb250ZXh0CisgICAgICAgICAgICBuZXdfZXhjLl9fY29udGV4dF9fID0gb2xkX2V4YworCisgICAgICAgICMgQ2FsbGJhY2tzIGFyZSBpbnZva2VkIGluIExJRk8gb3JkZXIgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZgorICAgICAgICAjIG5lc3RlZCBjb250ZXh0IG1hbmFnZXJzCisgICAgICAgIHN1cHByZXNzZWRfZXhjID0gRmFsc2UKKyAgICAgICAgd2hpbGUgc2VsZi5fZXhpdF9jYWxsYmFja3M6CisgICAgICAgICAgICBjYiA9IHNlbGYuX2V4aXRfY2FsbGJhY2tzLnBvcCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgY2IoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NlZF9leGMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzID0gKE5vbmUsIE5vbmUsIE5vbmUpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgbmV3X2V4Y19kZXRhaWxzID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIHNpbXVsYXRlIHRoZSBzdGFjayBvZiBleGNlcHRpb25zIGJ5IHNldHRpbmcgdGhlIGNvbnRleHQKKyAgICAgICAgICAgICAgICBfZml4X2V4Y2VwdGlvbl9jb250ZXh0KG5ld19leGNfZGV0YWlsc1sxXSwgZXhjX2RldGFpbHNbMV0pCisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX2V4aXRfY2FsbGJhY2tzOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIGV4Y19kZXRhaWxzID0gbmV3X2V4Y19kZXRhaWxzCisgICAgICAgIHJldHVybiBzdXBwcmVzc2VkX2V4YwpkaWZmIC0tZ2l0IGEvTGliL2NvcHkucHkgYi9MaWIvY29weS5weQppbmRleCAwODlkMTAxLi5kOTYyMDFlIDEwMDY0NAotLS0gYS9MaWIvY29weS5weQorKysgYi9MaWIvY29weS5weQpAQCAtMTczLDggKzE3MywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW4oZGVlcCljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCiAgICAgICAgICAgICAgICAgeSA9IF9yZWNvbnN0cnVjdCh4LCBydiwgMSwgbWVtbykKIAotICAgIG1lbW9bZF0gPSB5Ci0gICAgX2tlZXBfYWxpdmUoeCwgbWVtbykgIyBNYWtlIHN1cmUgeCBsaXZlcyBhdCBsZWFzdCBhcyBsb25nIGFzIGQKKyAgICAjIElmIGlzIGl0cyBvd24gY29weSwgZG9uJ3QgbWVtb2l6ZS4KKyAgICBpZiB5IGlzIG5vdCB4OgorICAgICAgICBtZW1vW2RdID0geQorICAgICAgICBfa2VlcF9hbGl2ZSh4LCBtZW1vKSAjIE1ha2Ugc3VyZSB4IGxpdmVzIGF0IGxlYXN0IGFzIGxvbmcgYXMgZAogICAgIHJldHVybiB5CiAKIF9kZWVwY29weV9kaXNwYXRjaCA9IGQgPSB7fQpAQCAtMjE0LDkgKzIxNiwxMCBAQAogICAgIHkgPSBbXQogICAgIGZvciBhIGluIHg6CiAgICAgICAgIHkuYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQotICAgIGQgPSBpZCh4KQorICAgICMgV2UncmUgbm90IGdvaW5nIHRvIHB1dCB0aGUgdHVwbGUgaW4gdGhlIG1lbW8sIGJ1dCBpdCdzIHN0aWxsIGltcG9ydGFudCB3ZQorICAgICMgY2hlY2sgZm9yIGl0LCBpbiBjYXNlIHRoZSB0dXBsZSBjb250YWlucyByZWN1cnNpdmUgbXV0YWJsZSBzdHJ1Y3R1cmVzLgogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG1lbW9bZF0KKyAgICAgICAgcmV0dXJuIG1lbW9baWQoeCldCiAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICBwYXNzCiAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHgpKToKQEAgLTIyNSw3ICsyMjgsNiBAQAogICAgICAgICAgICAgYnJlYWsKICAgICBlbHNlOgogICAgICAgICB5ID0geAotICAgIG1lbW9bZF0gPSB5CiAgICAgcmV0dXJuIHkKIGRbdHVwbGVdID0gX2RlZXBjb3B5X3R1cGxlCiAKQEAgLTMyMSw2OCArMzIzLDMgQEAKICMgSGVscGVyIGZvciBpbnN0YW5jZSBjcmVhdGlvbiB3aXRob3V0IGNhbGxpbmcgX19pbml0X18KIGNsYXNzIF9FbXB0eUNsYXNzOgogICAgIHBhc3MKLQotZGVmIF90ZXN0KCk6Ci0gICAgbCA9IFtOb25lLCAxLCAyLCAzLjE0LCAneHl6enknLCAoMSwgMiksIFszLjE0LCAnYWJjJ10sCi0gICAgICAgICB7J2FiYyc6ICdBQkMnfSwgKCksIFtdLCB7fV0KLSAgICBsMSA9IGNvcHkobCkKLSAgICBwcmludChsMT09bCkKLSAgICBsMSA9IG1hcChjb3B5LCBsKQotICAgIHByaW50KGwxPT1sKQotICAgIGwxID0gZGVlcGNvcHkobCkKLSAgICBwcmludChsMT09bCkKLSAgICBjbGFzcyBDOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYXJnPU5vbmUpOgotICAgICAgICAgICAgc2VsZi5hID0gMQotICAgICAgICAgICAgc2VsZi5hcmcgPSBhcmcKLSAgICAgICAgICAgIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHN5cwotICAgICAgICAgICAgICAgIGZpbGUgPSBzeXMuYXJndlswXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWxlID0gX19maWxlX18KLSAgICAgICAgICAgIHNlbGYuZnAgPSBvcGVuKGZpbGUpCi0gICAgICAgICAgICBzZWxmLmZwLmNsb3NlKCkKLSAgICAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiB7J2EnOiBzZWxmLmEsICdhcmcnOiBzZWxmLmFyZ30KLSAgICAgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzdGF0ZS5pdGVtcygpOgotICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKLSAgICAgICAgZGVmIF9fZGVlcGNvcHlfXyhzZWxmLCBtZW1vPU5vbmUpOgotICAgICAgICAgICAgbmV3ID0gc2VsZi5fX2NsYXNzX18oZGVlcGNvcHkoc2VsZi5hcmcsIG1lbW8pKQotICAgICAgICAgICAgbmV3LmEgPSBzZWxmLmEKLSAgICAgICAgICAgIHJldHVybiBuZXcKLSAgICBjID0gQygnYXJndW1lbnQgc2tldGNoJykKLSAgICBsLmFwcGVuZChjKQotICAgIGwyID0gY29weShsKQotICAgIHByaW50KGwgPT0gbDIpCi0gICAgcHJpbnQobCkKLSAgICBwcmludChsMikKLSAgICBsMiA9IGRlZXBjb3B5KGwpCi0gICAgcHJpbnQobCA9PSBsMikKLSAgICBwcmludChsKQotICAgIHByaW50KGwyKQotICAgIGwuYXBwZW5kKHtsWzFdOiBsLCAneHl6JzogbFsyXX0pCi0gICAgbDMgPSBjb3B5KGwpCi0gICAgaW1wb3J0IHJlcHJsaWIKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMSkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDIpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwzKSkKLSAgICBsMyA9IGRlZXBjb3B5KGwpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbCkpCi0gICAgcHJpbnQobWFwKHJlcHJsaWIucmVwciwgbDEpKQotICAgIHByaW50KG1hcChyZXBybGliLnJlcHIsIGwyKSkKLSAgICBwcmludChtYXAocmVwcmxpYi5yZXByLCBsMykpCi0gICAgY2xhc3Mgb2RpY3QoZGljdCk6Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkID0ge30pOgotICAgICAgICAgICAgc2VsZi5hID0gOTkKLSAgICAgICAgICAgIGRpY3QuX19pbml0X18oc2VsZiwgZCkKLSAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGssIGkpOgotICAgICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrLCBpKQotICAgICAgICAgICAgc2VsZi5hCi0gICAgbyA9IG9kaWN0KHsiQSIgOiAiQiJ9KQotICAgIHggPSBkZWVwY29weShvKQotICAgIHByaW50KG8sIHgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX3Rlc3QoKQpkaWZmIC0tZ2l0IGEvTGliL2NyeXB0LnB5IGIvTGliL2NyeXB0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MGM4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvY3J5cHQucHkKQEAgLTAsMCArMSw2MiBAQAorIiIiV3JhcHBlciB0byB0aGUgUE9TSVggY3J5cHQgbGlicmFyeSBjYWxsIGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9uYWxpdHkuIiIiCisKK2ltcG9ydCBfY3J5cHQKK2ltcG9ydCBzdHJpbmcgYXMgX3N0cmluZworZnJvbSByYW5kb20gaW1wb3J0IFN5c3RlbVJhbmRvbSBhcyBfU3lzdGVtUmFuZG9tCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlIGFzIF9uYW1lZHR1cGxlCisKKworX3NhbHRjaGFycyA9IF9zdHJpbmcuYXNjaWlfbGV0dGVycyArIF9zdHJpbmcuZGlnaXRzICsgJy4vJworX3NyID0gX1N5c3RlbVJhbmRvbSgpCisKKworY2xhc3MgX01ldGhvZChfbmFtZWR0dXBsZSgnX01ldGhvZCcsICduYW1lIGlkZW50IHNhbHRfY2hhcnMgdG90YWxfc2l6ZScpKToKKworICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBhIHNhbHQgbWV0aG9kIHBlciB0aGUgTW9kdWxhciBDcnlwdCBGb3JtYXQgb3IgdGhlCisgICAgbGVnYWN5IDItY2hhcmFjdGVyIGNyeXB0IG1ldGhvZC4iIiIKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICc8Y3J5cHQuTUVUSE9EX3t9PicuZm9ybWF0KHNlbGYubmFtZSkKKworCitkZWYgbWtzYWx0KG1ldGhvZD1Ob25lKToKKyAgICAiIiJHZW5lcmF0ZSBhIHNhbHQgZm9yIHRoZSBzcGVjaWZpZWQgbWV0aG9kLgorCisgICAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHN0cm9uZ2VzdCBhdmFpbGFibGUgbWV0aG9kIHdpbGwgYmUgdXNlZC4KKworICAgICIiIgorICAgIGlmIG1ldGhvZCBpcyBOb25lOgorICAgICAgICBtZXRob2QgPSBtZXRob2RzWzBdCisgICAgcyA9ICcke30kJy5mb3JtYXQobWV0aG9kLmlkZW50KSBpZiBtZXRob2QuaWRlbnQgZWxzZSAnJworICAgIHMgKz0gJycuam9pbihfc3Iuc2FtcGxlKF9zYWx0Y2hhcnMsIG1ldGhvZC5zYWx0X2NoYXJzKSkKKyAgICByZXR1cm4gcworCisKK2RlZiBjcnlwdCh3b3JkLCBzYWx0PU5vbmUpOgorICAgICIiIlJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIG9uZS13YXkgaGFzaCBvZiBhIHBhc3N3b3JkLCB3aXRoIGEgc2FsdAorICAgIHByZXBlbmRlZC4KKworICAgIElmIGBgc2FsdGBgIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIHRoZSBzdHJvbmdlc3QKKyAgICBhdmFpbGFibGUgbWV0aG9kIHdpbGwgYmUgc2VsZWN0ZWQgYW5kIGEgc2FsdCBnZW5lcmF0ZWQuICBPdGhlcndpc2UsCisgICAgYGBzYWx0YGAgbWF5IGJlIG9uZSBvZiB0aGUgYGBjcnlwdC5NRVRIT0RfKmBgIHZhbHVlcywgb3IgYSBzdHJpbmcgYXMKKyAgICByZXR1cm5lZCBieSBgYGNyeXB0Lm1rc2FsdCgpYGAuCisKKyAgICAiIiIKKyAgICBpZiBzYWx0IGlzIE5vbmUgb3IgaXNpbnN0YW5jZShzYWx0LCBfTWV0aG9kKToKKyAgICAgICAgc2FsdCA9IG1rc2FsdChzYWx0KQorICAgIHJldHVybiBfY3J5cHQuY3J5cHQod29yZCwgc2FsdCkKKworCisjICBhdmFpbGFibGUgc2FsdGluZy9jcnlwdG8gbWV0aG9kcworTUVUSE9EX0NSWVBUID0gX01ldGhvZCgnQ1JZUFQnLCBOb25lLCAyLCAxMykKK01FVEhPRF9NRDUgPSBfTWV0aG9kKCdNRDUnLCAnMScsIDgsIDM0KQorTUVUSE9EX1NIQTI1NiA9IF9NZXRob2QoJ1NIQTI1NicsICc1JywgMTYsIDYzKQorTUVUSE9EX1NIQTUxMiA9IF9NZXRob2QoJ1NIQTUxMicsICc2JywgMTYsIDEwNikKKworbWV0aG9kcyA9IFtdCitmb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSk6CisgICAgX3Jlc3VsdCA9IGNyeXB0KCcnLCBfbWV0aG9kKQorICAgIGlmIF9yZXN1bHQgYW5kIGxlbihfcmVzdWx0KSA9PSBfbWV0aG9kLnRvdGFsX3NpemU6CisgICAgICAgIG1ldGhvZHMuYXBwZW5kKF9tZXRob2QpCittZXRob2RzLmFwcGVuZChNRVRIT0RfQ1JZUFQpCitkZWwgX3Jlc3VsdCwgX21ldGhvZApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggMTExMjA5YS4uYzkyZTEzMCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0yNiw3ICsyNiw3IEBACiAgICAgIyBsaWJyYXJpZXMuICBPUyBYIDEwLjMgaXMgRGFyd2luIDcsIHNvIHdlIGNoZWNrIGZvcgogICAgICMgdGhhdC4KIAotICAgIGlmIGludChfb3MudW5hbWUoKVsyXS5zcGxpdCgnLicpWzBdKSA8IDg6CisgICAgaWYgaW50KF9vcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPCA4OgogICAgICAgICBERUZBVUxUX01PREUgPSBSVExEX0dMT0JBTAogCiBmcm9tIF9jdHlwZXMgaW1wb3J0IEZVTkNGTEFHX0NERUNMIGFzIF9GVU5DRkxBR19DREVDTCwgXApAQCAtNDU2LDcgKzQ1Niw3IEBACiAgICAgICAgICAgICBjb2RlID0gR2V0TGFzdEVycm9yKCkKICAgICAgICAgaWYgZGVzY3IgaXMgTm9uZToKICAgICAgICAgICAgIGRlc2NyID0gRm9ybWF0RXJyb3IoY29kZSkuc3RyaXAoKQotICAgICAgICByZXR1cm4gV2luZG93c0Vycm9yKGNvZGUsIGRlc2NyKQorICAgICAgICByZXR1cm4gV2luZG93c0Vycm9yKE5vbmUsIGRlc2NyLCBOb25lLCBjb2RlKQogCiBpZiBzaXplb2YoY191aW50KSA9PSBzaXplb2YoY192b2lkX3ApOgogICAgIGNfc2l6ZV90ID0gY191aW50CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKaW5kZXggYzcyMDdlYS4uNTYwMGI0MyAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKGxhbWJkYSB4PU5hc3R5KCk6IE5vbmUpCi0gICAgICAgIAorCiAKIHRyeToKICAgICBXSU5GVU5DVFlQRQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbWVtZnVuY3Rpb25zLnB5CmluZGV4IGFhMjExM2IuLmFlYzRhYWEgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X21lbWZ1bmN0aW9ucy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9tZW1mdW5jdGlvbnMucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIApAQCAtNDksNiArNTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhc3QoYSwgUE9JTlRFUihjX2J5dGUpKVs6Nzo3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzk3XSkKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9zdHJpbmdfYXQoc2VsZik6CiAgICAgICAgIHMgPSBzdHJpbmdfYXQoYiJmb28gYmFyIikKICAgICAgICAgIyBYWFggVGhlIGZvbGxvd2luZyBtYXkgYmUgd3JvbmcsIGRlcGVuZGluZyBvbiBob3cgUHl0aG9uCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQppbmRleCBlODNmZDlhLi45NzYyZmI5IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKQEAgLTczLDEzICs3MywxMCBAQAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAjIyAgICAgICAgICAgIHByaW50ICIoTm8gY193Y2hhcl9wKSIKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzID0gIjEyMyIKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY193Y2hhcl9wLmZyb21fcGFyYW0ocykuX29iaiBpcyBzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgNDIpCiAKLSAgICAgICAgICAgICMgbmV3IGluIDAuOS4xOiBjb252ZXJ0IChkZWNvZGUpIGFzY2lpIHRvIHVuaWNvZGUKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY193Y2hhcl9wLmZyb21fcGFyYW0oIjEyMyIpLl9vYmosICIxMjMiKQorICAgICAgICBjX3djaGFyX3AuZnJvbV9wYXJhbSgiMTIzIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNfd2NoYXJfcC5mcm9tX3BhcmFtLCA0MikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjX3djaGFyX3AuZnJvbV9wYXJhbSwgYiIxMjNcMzc3IikKIAogICAgICAgICBwYSA9IGNfd2NoYXJfcC5mcm9tX3BhcmFtKGNfd2NoYXJfcCgiMTIzIikpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQppbmRleCBmYTY0NjFmLi5hZDEzYjAxIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKQEAgLTI1LDE0ICsyNSwxNyBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtYWxpemUodi5mb3JtYXQpLCBub3JtYWxpemUoZm10KSkKLSAgICAgICAgICAgICAgICBpZiBzaGFwZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBzaGFwZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIHNoYXBlWzBdKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpICogc2l6ZW9mKGl0ZW10cCksIHNpemVvZihvYikpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Lml0ZW1zaXplLCBzaXplb2YoaXRlbXRwKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuc2hhcGUsIHNoYXBlKQotICAgICAgICAgICAgICAgICMgY3R5cGVzIG9iamVjdCBhbHdheXMgaGF2ZSBhIG5vbi1zdHJpZGVkIG1lbW9yeSBibG9jawotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCBOb25lKQorICAgICAgICAgICAgICAgICMgWFhYIElzc3VlICMxMjg1MTogUHlDRGF0YV9OZXdHZXRCdWZmZXIoKSBtdXN0IHByb3ZpZGUgc3RyaWRlcworICAgICAgICAgICAgICAgICMgICAgIGlmIHJlcXVlc3RlZC4gbWVtb3J5dmlldyBjdXJyZW50bHkgcmVjb25zdHJ1Y3RzIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjICAgICBzdHJpZGUgaW5mb3JtYXRpb24sIHNvIHRoaXMgYXNzZXJ0IHdpbGwgZmFpbC4KKyAgICAgICAgICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodi5zdHJpZGVzLCAoKSkKKwogICAgICAgICAgICAgICAgICMgdGhleSBhcmUgYWx3YXlzIHJlYWQvd3JpdGUKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYucmVhZG9ubHkpCiAKQEAgLTUyLDE0ICs1NSwxNSBAQAogICAgICAgICAgICAgdiA9IG1lbW9yeXZpZXcob2IpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LmZvcm1hdCwgZm10KQotICAgICAgICAgICAgICAgIGlmIHNoYXBlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2KSwgc2hhcGVbMF0pCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odikgKiBzaXplb2YoaXRlbXRwKSwgc2l6ZW9mKG9iKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYuaXRlbXNpemUsIHNpemVvZihpdGVtdHApKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5zaGFwZSwgc2hhcGUpCi0gICAgICAgICAgICAgICAgIyBjdHlwZXMgb2JqZWN0IGFsd2F5cyBoYXZlIGEgbm9uLXN0cmlkZWQgbWVtb3J5IGJsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LnN0cmlkZXMsIE5vbmUpCisgICAgICAgICAgICAgICAgIyBYWFggSXNzdWUgIzEyODUxCisgICAgICAgICAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHYuc3RyaWRlcywgKCkpCisKICAgICAgICAgICAgICAgICAjIHRoZXkgYXJlIGFsd2F5cyByZWFkL3dyaXRlCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2LnJlYWRvbmx5KQogCkBAIC0xMTAsMzQgKzExNCwzNCBAQAogCiAgICAgIyMgc2ltcGxlIHR5cGVzCiAKLSAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfY2hhciksCi0gICAgKGNfYnl0ZSwgICAgICAgICAgICAgICAgICAgICI8YiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2J5dGUpLAotICAgIChjX3VieXRlLCAgICAgICAgICAgICAgICAgICAiPEIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191Ynl0ZSksCi0gICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Nob3J0KSwKLSAgICAoY191c2hvcnQsICAgICAgICAgICAgICAgICAgIjxIIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdXNob3J0KSwKKyAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2NoYXIpLAorICAgIChjX2J5dGUsICAgICAgICAgICAgICAgICAgICAiPGIiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYnl0ZSksCisgICAgKGNfdWJ5dGUsICAgICAgICAgICAgICAgICAgICI8QiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191Ynl0ZSksCisgICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY19zaG9ydCksCisgICAgKGNfdXNob3J0LCAgICAgICAgICAgICAgICAgICI8SCIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgY191c2hvcnQpLAogCiAgICAgIyBjX2ludCBhbmQgY191aW50IG1heSBiZSBhbGlhc2VzIHRvIGNfbG9uZwotICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfaW50KSwKLSAgICAjKGNfdWludCwgICAgICAgICAgICAgICAgICAgICI8SSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VpbnQpLAorICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2ludCksCisgICAgIyhjX3VpbnQsICAgICAgICAgICAgICAgICAgICAiPEkiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWludCksCiAKLSAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfbG9uZyksCi0gICAgKGNfdWxvbmcsICAgICAgICAgICAgICAgICAgICI8TCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Vsb25nKSwKKyAgICAoY19sb25nLCAgICAgICAgICAgICAgICAgICAgIjxsIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2xvbmcpLAorICAgIChjX3Vsb25nLCAgICAgICAgICAgICAgICAgICAiPEwiLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfdWxvbmcpLAogCiAgICAgIyBjX2xvbmdsb25nIGFuZCBjX3Vsb25nbG9uZyBhcmUgYWxpYXNlcyBvbiA2NC1iaXQgcGxhdGZvcm1zCiAgICAgIyhjX2xvbmdsb25nLCAgICAgICAgICAgICAgICAiPHEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nbG9uZyksCiAgICAgIyhjX3Vsb25nbG9uZywgICAgICAgICAgICAgICAiPFEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191bG9uZ2xvbmcpLAogCi0gICAgKGNfZmxvYXQsICAgICAgICAgICAgICAgICAgICI8ZiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2Zsb2F0KSwKLSAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfZG91YmxlKSwKKyAgICAoY19mbG9hdCwgICAgICAgICAgICAgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2Zsb2F0KSwKKyAgICAoY19kb3VibGUsICAgICAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBjX2RvdWJsZSksCiAgICAgIyBjX2xvbmdkb3VibGUgbWF5IGJlIGFuIGFsaWFzIHRvIGNfZG91YmxlCiAKLSAgICAoY19ib29sLCAgICAgICAgICAgICAgICAgICAgIjw/IiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfYm9vbCksCi0gICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBweV9vYmplY3QpLAorICAgIChjX2Jvb2wsICAgICAgICAgICAgICAgICAgICAiPD8iLCAgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIGNfYm9vbCksCisgICAgKHB5X29iamVjdCwgICAgICAgICAgICAgICAgICI8TyIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgcHlfb2JqZWN0KSwKIAogICAgICMjIHBvaW50ZXJzCiAKLSAgICAoUE9JTlRFUihjX2J5dGUpLCAgICAgICAgICAgIiY8YiIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCi0gICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKFBPSU5URVIoY19sb25nKSkpLAorICAgIChQT0lOVEVSKGNfYnl0ZSksICAgICAgICAgICAiJjxiIiwgICAgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19ieXRlKSksCisgICAgKFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSwgICImJjxsIiwgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpKSwKIAogICAgICMjIGFycmF5cyBhbmQgcG9pbnRlcnMKIApAQCAtMTQ1LDMyICsxNDksMzIgQEAKICAgICAoY19mbG9hdCAqIDQgKiAzICogMiwgICAgICAgIigyLDMsNCk8ZiIsICAgICAgICAgICAgKDIsMyw0KSwgICAgICAgIGNfZmxvYXQpLAogICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiwgICAgICAiKDIpJjxoIiwgICAgICAgICAgICAgICAoMiwpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCiAgICAgKFBPSU5URVIoY19zaG9ydCkgKiAyICogMywgICIoMywyKSY8aCIsICAgICAgICAgICAgICgzLDIsKSwgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKLSAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8aCIsICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAorICAgIChQT0lOVEVSKGNfc2hvcnQgKiAyKSwgICAgICAiJigyKTxoIiwgICAgICAgICAgICAgICAoKSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAogCiAgICAgIyMgc3RydWN0dXJlcyBhbmQgdW5pb25zCiAKLSAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50KSwKKyAgICAoUG9pbnQsICAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBQb2ludCksCiAgICAgIyBwYWNrZWQgc3RydWN0dXJlcyBkbyBub3QgaW1wbGVtZW50IHRoZSBwZXAKLSAgICAoUGFja2VkUG9pbnQsICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBhY2tlZFBvaW50KSwKLSAgICAoUG9pbnQyLCAgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIFBvaW50MiksCi0gICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBFbXB0eVN0cnVjdCksCisgICAgKFBhY2tlZFBvaW50LCAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUGFja2VkUG9pbnQpLAorICAgIChQb2ludDIsICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICAoKSwgICAgICAgICAgIFBvaW50MiksCisgICAgKEVtcHR5U3RydWN0LCAgICAgICAgICAgICAgICJUe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgRW1wdHlTdHJ1Y3QpLAogICAgICMgdGhlIHBlcCBkb2VzJ3Qgc3VwcG9ydCB1bmlvbnMKLSAgICAoYVVuaW9uLCAgICAgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGFVbmlvbiksCisgICAgKGFVbmlvbiwgICAgICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgYVVuaW9uKSwKIAogICAgICMjIHBvaW50ZXIgdG8gaW5jb21wbGV0ZSBzdHJ1Y3R1cmUKLSAgICAoSW5jb21wbGV0ZSwgICAgICAgICAgICAgICAgIkIiLCAgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIEluY29tcGxldGUpLAotICAgIChQT0lOVEVSKEluY29tcGxldGUpLCAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCisgICAgKEluY29tcGxldGUsICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgSW5jb21wbGV0ZSksCisgICAgKFBPSU5URVIoSW5jb21wbGV0ZSksICAgICAgICImQiIsICAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgUE9JTlRFUihJbmNvbXBsZXRlKSksCiAKICAgICAjICdDb21wbGV0ZScgaXMgYSBzdHJ1Y3R1cmUgdGhhdCBzdGFydHMgaW5jb21wbGV0ZSwgYnV0IGlzIGNvbXBsZXRlZCBhZnRlciB0aGUKICAgICAjIHBvaW50ZXIgdHlwZSB0byBpdCBoYXMgYmVlbiBjcmVhdGVkLgotICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgQ29tcGxldGUpLAorICAgIChDb21wbGV0ZSwgICAgICAgICAgICAgICAgICAiVHs8bDphOn0iLCAgICAgICAgICAgICAoKSwgICAgICAgICAgIENvbXBsZXRlKSwKICAgICAjIFVuZm9ydHVuYXRlbHkgdGhlIHBvaW50ZXIgZm9ybWF0IHN0cmluZyBpcyBub3QgZml4ZWQuLi4KLSAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoQ29tcGxldGUpKSwKKyAgICAoUE9JTlRFUihDb21wbGV0ZSksICAgICAgICAgIiZCIiwgICAgICAgICAgICAgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKENvbXBsZXRlKSksCiAKICAgICAjIyBvdGhlcgogCiAgICAgIyBmdW5jdGlvbiBzaWduYXR1cmVzIGFyZSBub3QgaW1wbGVtZW50ZWQKLSAgICAoQ0ZVTkNUWVBFKE5vbmUpLCAgICAgICAgICAgIlh7fSIsICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIENGVU5DVFlQRShOb25lKSksCisgICAgKENGVU5DVFlQRShOb25lKSwgICAgICAgICAgICJYe30iLCAgICAgICAgICAgICAgICAgICgpLCAgICAgICAgICAgQ0ZVTkNUWVBFKE5vbmUpKSwKIAogICAgIF0KIApAQCAtMTg2LDEwICsxOTAsMTAgQEAKICMgYW5kIGxpdHRsZSBlbmRpYW4gbWFjaGluZXMuCiAjCiBlbmRpYW5fdHlwZXMgPSBbCi0gICAgKEJFUG9pbnQsICAgICAgICAgICAgICAgICAgICJUez5sOng6Pmw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBCRVBvaW50KSwKLSAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIExFUG9pbnQpLAotICAgIChQT0lOVEVSKEJFUG9pbnQpLCAgICAgICAgICAiJlR7Pmw6eDo+bDp5On0iLCAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihCRVBvaW50KSksCi0gICAgKFBPSU5URVIoTEVQb2ludCksICAgICAgICAgICImVHs8bDp4OjxsOnk6fSIsICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKKyAgICAoQkVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7Pmw6eDo+bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBCRVBvaW50KSwKKyAgICAoTEVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7PGw6eDo8bDp5On0iLCAgICAgICAgKCksICAgICAgICAgICBMRVBvaW50KSwKKyAgICAoUE9JTlRFUihCRVBvaW50KSwgICAgICAgICAgIiZUez5sOng6Pmw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKEJFUG9pbnQpKSwKKyAgICAoUE9JTlRFUihMRVBvaW50KSwgICAgICAgICAgIiZUezxsOng6PGw6eTp9IiwgICAgICAgKCksICAgICAgICAgICBQT0lOVEVSKExFUG9pbnQpKSwKICAgICBdCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcHl0aG9uX2FwaS5weQppbmRleCAxZjRjNjAzLi45ZGUzOTgwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9weXRob25fYXBpLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3B5dGhvbl9hcGkucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogaW1wb3J0IHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yNSw2ICsyNiw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGIiYWJjZGVmZ2hpIiwgMyksIGIiYWJjIikKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9QeVN0cmluZ19Gcm9tU3RyaW5nKHNlbGYpOgogICAgICAgICBweXRob25hcGkuUHlCeXRlc19Gcm9tU3RyaW5nLnJlc3R5cGUgPSBweV9vYmplY3QKICAgICAgICAgcHl0aG9uYXBpLlB5Qnl0ZXNfRnJvbVN0cmluZy5hcmd0eXBlcyA9IChjX2NoYXJfcCwpCkBAIC01Niw2ICs1OCw3IEBACiAgICAgICAgICAgICBkZWwgcmVzCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyg0MiksIHJlZjQyKQogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X1B5T2JqX0Zyb21QdHIoc2VsZik6CiAgICAgICAgIHMgPSAiYWJjIGRlZiBnaGkgamtsIgogICAgICAgICByZWYgPSBncmMocykKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JlZmNvdW50cy5weQppbmRleCAzNWE4MWFhLi41NjEzZTdhIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZWZjb3VudHMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcmVmY291bnRzLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCBjdHlwZXMKIGltcG9ydCBnYwogCkBAIC0xMCw2ICsxMSw3IEBACiAKIGNsYXNzIFJlZmNvdW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgQHN1cHBvcnQucmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0XzEoc2VsZik6CiAgICAgICAgIGZyb20gc3lzIGltcG9ydCBnZXRyZWZjb3VudCBhcyBncmMKIApAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyYyhjYWxsYmFjayksIDIpCiAKIAorICAgIEBzdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9yZWZjb3VudChzZWxmKToKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IGdldHJlZmNvdW50IGFzIGdyYwogICAgICAgICBkZWYgZnVuYygqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJpbmdwdHIucHkKaW5kZXggM2QyNWZhNS4uOTVjZDE2MSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RyaW5ncHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cmluZ3B0ci5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCiBpbXBvcnQgX2N0eXBlc190ZXN0CkBAIC03LDYgKzgsNyBAQAogCiBjbGFzcyBTdHJpbmdQdHJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBAc3VwcG9ydC5yZWZjb3VudF90ZXN0CiAgICAgZGVmIHRlc3RfX1BPSU5URVJfY19jaGFyKHNlbGYpOgogICAgICAgICBjbGFzcyBYKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoInN0ciIsIFBPSU5URVIoY19jaGFyKSldCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF93aW4zMi5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5CmluZGV4IDI1MzRhNzQuLjEyODkxNGUgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3dpbjMyLnB5CkBAIC02Nyw2ICs2NywyOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC50ZXh0LCAidGV4dCIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmRldGFpbHMsICgiZGV0YWlscyIsKSkKIAorICAgIGNsYXNzIFRlc3RXaW5FcnJvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIGRlZiB0ZXN0X3dpbmVycm9yKHNlbGYpOgorICAgICAgICAgICAgIyBzZWUgSXNzdWUgMTYxNjkKKyAgICAgICAgICAgIGltcG9ydCBlcnJubworICAgICAgICAgICAgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIgPSA4NworICAgICAgICAgICAgbXNnID0gRm9ybWF0RXJyb3IoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpLnN0cmlwKCkKKyAgICAgICAgICAgIGFyZ3MgPSAoZXJybm8uRUlOVkFMLCBtc2csIE5vbmUsIEVSUk9SX0lOVkFMSURfUEFSQU1FVEVSKQorCisgICAgICAgICAgICBlID0gV2luRXJyb3IoRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJncywgYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgZXJybm8uRUlOVkFMKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLndpbmVycm9yLCBFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKworICAgICAgICAgICAgd2luZGxsLmtlcm5lbDMyLlNldExhc3RFcnJvcihFUlJPUl9JTlZBTElEX1BBUkFNRVRFUikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBXaW5FcnJvcigpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgZSA9IGV4YworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsIGFyZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIGVycm5vLkVJTlZBTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgRVJST1JfSU5WQUxJRF9QQVJBTUVURVIpCisKIGNsYXNzIFN0cnVjdHVyZXModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3Rfc3RydWN0X2J5X3ZhbHVlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy91dGlsLnB5IGIvTGliL2N0eXBlcy91dGlsLnB5CmluZGV4IDFiYjdkMWQuLjU1NTViMmUgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdXRpbC5weQorKysgYi9MaWIvY3R5cGVzL3V0aWwucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgc3lzLCBvcwogaW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBzdWJwcm9jZXNzCiAKICMgZmluZF9saWJyYXJ5KG5hbWUpIHJldHVybnMgdGhlIHBhdGhuYW1lIG9mIGEgbGlicmFyeSwgb3IgTm9uZS4KIGlmIG9zLm5hbWUgPT0gIm50IjoKQEAgLTM5LDggKzQwLDggQEAKICAgICAgICAgICAgIGNsaWJuYW1lID0gJ21zdmNyJWQnICUgKHZlcnNpb24gKiAxMCkKIAogICAgICAgICAjIElmIHB5dGhvbiB3YXMgYnVpbHQgd2l0aCBpbiBkZWJ1ZyBtb2RlCi0gICAgICAgIGltcG9ydCBpbXAKLSAgICAgICAgaWYgaW1wLmdldF9zdWZmaXhlcygpWzBdWzBdID09ICdfZC5weWQnOgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQorICAgICAgICBpZiAnX2QucHlkJyBpbiBpbXBvcnRsaWIubWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIGNsaWJuYW1lICs9ICdkJwogICAgICAgICByZXR1cm4gY2xpYm5hbWUrJy5kbGwnCiAKQEAgLTEzNiwxNiArMTM3LDEyIEBACiAgICAgICAgICAgICBydiA9IGYuY2xvc2UoKQogICAgICAgICAgICAgaWYgcnYgPT0gMTA6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignb2JqZHVtcCBjb21tYW5kIG5vdCBmb3VuZCcpCi0gICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhvcy5wb3BlbihjbWQpKSBhcyBmOgotICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgcmVzID0gcmUuc2VhcmNoKHInXHNTT05BTUVccysoW15cc10rKScsIGRhdGEpCisgICAgICAgICAgICByZXMgPSByZS5zZWFyY2gocidcc1NPTkFNRVxzKyhbXlxzXSspJywgZHVtcCkKICAgICAgICAgICAgIGlmIG5vdCByZXM6CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIHJldHVybiByZXMuZ3JvdXAoMSkKIAotICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZnJlZWJzZCIpCi0gICAgICAgIG9yIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJvcGVuYnNkIikKLSAgICAgICAgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImRyYWdvbmZseSIpKToKKyAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoImZyZWVic2QiLCAib3BlbmJzZCIsICJkcmFnb25mbHkiKSk6CiAKICAgICAgICAgZGVmIF9udW1fdmVyc2lvbihsaWJuYW1lKToKICAgICAgICAgICAgICMgImxpYnh5ei5zby5NQUpPUi5NSU5PUiIgPT4gWyBNQUpPUiwgTUlOT1IgXQpAQCAtMTc0LDkgKzE3MSw5IEBACiAgICAgICAgIGRlZiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKToKICAgICAgICAgICAgIGltcG9ydCBzdHJ1Y3QKICAgICAgICAgICAgIGlmIHN0cnVjdC5jYWxjc2l6ZSgnbCcpID09IDQ6Ci0gICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKClbNF0gKyAnLTMyJworICAgICAgICAgICAgICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUgKyAnLTMyJwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XSArICctNjQnCisgICAgICAgICAgICAgICAgbWFjaGluZSA9IG9zLnVuYW1lKCkubWFjaGluZSArICctNjQnCiAgICAgICAgICAgICBtYWNoX21hcCA9IHsKICAgICAgICAgICAgICAgICAneDg2XzY0LTY0JzogJ2xpYmM2LHg4Ni02NCcsCiAgICAgICAgICAgICAgICAgJ3BwYzY0LTY0JzogJ2xpYmM2LDY0Yml0JywKQEAgLTE4NywxMyArMTg0LDE5IEBACiAgICAgICAgICAgICBhYmlfdHlwZSA9IG1hY2hfbWFwLmdldChtYWNoaW5lLCAnbGliYzYnKQogCiAgICAgICAgICAgICAjIFhYWCBhc3N1bWluZyBHTElCQydzIGxkY29uZmlnICh3aXRoIG9wdGlvbiAtcCkKLSAgICAgICAgICAgIGV4cHIgPSByJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpCi0gICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIuY2xvc2luZyhvcy5wb3BlbignTENfQUxMPUMgTEFORz1DIC9zYmluL2xkY29uZmlnIC1wIDI+L2Rldi9udWxsJykpIGFzIGY6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICByZXMgPSByZS5zZWFyY2goZXhwciwgZGF0YSkKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJldHVybiByZXMuZ3JvdXAoMSkKKyAgICAgICAgICAgIHJlZ2V4ID0gb3MuZnNlbmNvZGUoCisgICAgICAgICAgICAgICAgJ1xzKyhsaWIlc1wuW15cc10rKVxzK1woJXMnICUgKHJlLmVzY2FwZShuYW1lKSwgYWJpX3R5cGUpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihbJy9zYmluL2xkY29uZmlnJywgJy1wJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PXsnTENfQUxMJzogJ0MnLCAnTEFORyc6ICdDJ30pIGFzIHA6CisgICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlLnNlYXJjaChyZWdleCwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICAgICAgICAgICAgICBpZiByZXM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3MuZnNkZWNvZGUocmVzLmdyb3VwKDEpKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSkgb3IgX2dldF9zb25hbWUoX2ZpbmRMaWJfZ2NjKG5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL2N1cnNlcy9fX2luaXRfXy5weSBiL0xpYi9jdXJzZXMvX19pbml0X18ucHkKaW5kZXggYTNlOWRlZi4uN2JmYTY2NyAxMDA2NDQKLS0tIGEvTGliL2N1cnNlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3Vyc2VzL19faW5pdF9fLnB5CkBAIC0xMSw3ICsxMSw2IEBACiAiIiIKIAogZnJvbSBfY3Vyc2VzIGltcG9ydCAqCi1mcm9tIGN1cnNlcy53cmFwcGVyIGltcG9ydCB3cmFwcGVyCiBpbXBvcnQgb3MgYXMgX29zCiBpbXBvcnQgc3lzIGFzIF9zeXMKIApAQCAtNTUsMyArNTQsNDggQEAKICAgICBoYXNfa2V5CiBleGNlcHQgTmFtZUVycm9yOgogICAgIGZyb20gLmhhc19rZXkgaW1wb3J0IGhhc19rZXkKKworIyBXcmFwcGVyIGZvciB0aGUgZW50aXJlIGN1cnNlcy1iYXNlZCBhcHBsaWNhdGlvbi4gIFJ1bnMgYSBmdW5jdGlvbiB3aGljaAorIyBzaG91bGQgYmUgdGhlIHJlc3Qgb2YgeW91ciBjdXJzZXMtYmFzZWQgYXBwbGljYXRpb24uICBJZiB0aGUgYXBwbGljYXRpb24KKyMgcmFpc2VzIGFuIGV4Y2VwdGlvbiwgd3JhcHBlcigpIHdpbGwgcmVzdG9yZSB0aGUgdGVybWluYWwgdG8gYSBzYW5lIHN0YXRlIHNvCisjIHlvdSBjYW4gcmVhZCB0aGUgcmVzdWx0aW5nIHRyYWNlYmFjay4KKworZGVmIHdyYXBwZXIoZnVuYywgKmFyZ3MsICoqa3dkcyk6CisgICAgIiIiV3JhcHBlciBmdW5jdGlvbiB0aGF0IGluaXRpYWxpemVzIGN1cnNlcyBhbmQgY2FsbHMgYW5vdGhlciBmdW5jdGlvbiwKKyAgICByZXN0b3Jpbmcgbm9ybWFsIGtleWJvYXJkL3NjcmVlbiBiZWhhdmlvciBvbiBlcnJvci4KKyAgICBUaGUgY2FsbGFibGUgb2JqZWN0ICdmdW5jJyBpcyB0aGVuIHBhc3NlZCB0aGUgbWFpbiB3aW5kb3cgJ3N0ZHNjcicKKyAgICBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIGZvbGxvd2VkIGJ5IGFueSBvdGhlciBhcmd1bWVudHMgcGFzc2VkIHRvCisgICAgd3JhcHBlcigpLgorICAgICIiIgorCisgICAgdHJ5OgorICAgICAgICAjIEluaXRpYWxpemUgY3Vyc2VzCisgICAgICAgIHN0ZHNjciA9IGluaXRzY3IoKQorCisgICAgICAgICMgVHVybiBvZmYgZWNob2luZyBvZiBrZXlzLCBhbmQgZW50ZXIgY2JyZWFrIG1vZGUsCisgICAgICAgICMgd2hlcmUgbm8gYnVmZmVyaW5nIGlzIHBlcmZvcm1lZCBvbiBrZXlib2FyZCBpbnB1dAorICAgICAgICBub2VjaG8oKQorICAgICAgICBjYnJlYWsoKQorCisgICAgICAgICMgSW4ga2V5cGFkIG1vZGUsIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIHNwZWNpYWwga2V5cworICAgICAgICAjIChsaWtlIHRoZSBjdXJzb3Iga2V5cykgd2lsbCBiZSBpbnRlcnByZXRlZCBhbmQKKyAgICAgICAgIyBhIHNwZWNpYWwgdmFsdWUgbGlrZSBjdXJzZXMuS0VZX0xFRlQgd2lsbCBiZSByZXR1cm5lZAorICAgICAgICBzdGRzY3Iua2V5cGFkKDEpCisKKyAgICAgICAgIyBTdGFydCBjb2xvciwgdG9vLiAgSGFybWxlc3MgaWYgdGhlIHRlcm1pbmFsIGRvZXNuJ3QgaGF2ZQorICAgICAgICAjIGNvbG9yOyB1c2VyIGNhbiB0ZXN0IHdpdGggaGFzX2NvbG9yKCkgbGF0ZXIgb24uICBUaGUgdHJ5L2NhdGNoCisgICAgICAgICMgd29ya3MgYXJvdW5kIGEgbWlub3IgYml0IG9mIG92ZXItY29uc2NpZW50aW91c25lc3MgaW4gdGhlIGN1cnNlcworICAgICAgICAjIG1vZHVsZSAtLSB0aGUgZXJyb3IgcmV0dXJuIGZyb20gQyBzdGFydF9jb2xvcigpIGlzIGlnbm9yYWJsZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3RhcnRfY29sb3IoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmV0dXJuIGZ1bmMoc3Rkc2NyLCAqYXJncywgKiprd2RzKQorICAgIGZpbmFsbHk6CisgICAgICAgICMgU2V0IGV2ZXJ5dGhpbmcgYmFjayB0byBub3JtYWwKKyAgICAgICAgaWYgJ3N0ZHNjcicgaW4gbG9jYWxzKCk6CisgICAgICAgICAgICBzdGRzY3Iua2V5cGFkKDApCisgICAgICAgICAgICBlY2hvKCkKKyAgICAgICAgICAgIG5vY2JyZWFrKCkKKyAgICAgICAgICAgIGVuZHdpbigpCmRpZmYgLS1naXQgYS9MaWIvY3Vyc2VzL3dyYXBwZXIucHkgYi9MaWIvY3Vyc2VzL3dyYXBwZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxODNjZTcuLjAwMDAwMDAKLS0tIGEvTGliL2N1cnNlcy93cmFwcGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIiIiY3Vyc2VzLndyYXBwZXIKLQotQ29udGFpbnMgb25lIGZ1bmN0aW9uLCB3cmFwcGVyKCksIHdoaWNoIHJ1bnMgYW5vdGhlciBmdW5jdGlvbiB3aGljaAotc2hvdWxkIGJlIHRoZSByZXN0IG9mIHlvdXIgY3Vyc2VzLWJhc2VkIGFwcGxpY2F0aW9uLiAgSWYgdGhlCi1hcHBsaWNhdGlvbiByYWlzZXMgYW4gZXhjZXB0aW9uLCB3cmFwcGVyKCkgd2lsbCByZXN0b3JlIHRoZSB0ZXJtaW5hbAotdG8gYSBzYW5lIHN0YXRlIHNvIHlvdSBjYW4gcmVhZCB0aGUgcmVzdWx0aW5nIHRyYWNlYmFjay4KLQotIiIiCi0KLWltcG9ydCBjdXJzZXMKLQotZGVmIHdyYXBwZXIoZnVuYywgKmFyZ3MsICoqa3dkcyk6Ci0gICAgIiIiV3JhcHBlciBmdW5jdGlvbiB0aGF0IGluaXRpYWxpemVzIGN1cnNlcyBhbmQgY2FsbHMgYW5vdGhlciBmdW5jdGlvbiwKLSAgICByZXN0b3Jpbmcgbm9ybWFsIGtleWJvYXJkL3NjcmVlbiBiZWhhdmlvciBvbiBlcnJvci4KLSAgICBUaGUgY2FsbGFibGUgb2JqZWN0ICdmdW5jJyBpcyB0aGVuIHBhc3NlZCB0aGUgbWFpbiB3aW5kb3cgJ3N0ZHNjcicKLSAgICBhcyBpdHMgZmlyc3QgYXJndW1lbnQsIGZvbGxvd2VkIGJ5IGFueSBvdGhlciBhcmd1bWVudHMgcGFzc2VkIHRvCi0gICAgd3JhcHBlcigpLgotICAgICIiIgotCi0gICAgdHJ5OgotICAgICAgICAjIEluaXRpYWxpemUgY3Vyc2VzCi0gICAgICAgIHN0ZHNjciA9IGN1cnNlcy5pbml0c2NyKCkKLQotICAgICAgICAjIFR1cm4gb2ZmIGVjaG9pbmcgb2Yga2V5cywgYW5kIGVudGVyIGNicmVhayBtb2RlLAotICAgICAgICAjIHdoZXJlIG5vIGJ1ZmZlcmluZyBpcyBwZXJmb3JtZWQgb24ga2V5Ym9hcmQgaW5wdXQKLSAgICAgICAgY3Vyc2VzLm5vZWNobygpCi0gICAgICAgIGN1cnNlcy5jYnJlYWsoKQotCi0gICAgICAgICMgSW4ga2V5cGFkIG1vZGUsIGVzY2FwZSBzZXF1ZW5jZXMgZm9yIHNwZWNpYWwga2V5cwotICAgICAgICAjIChsaWtlIHRoZSBjdXJzb3Iga2V5cykgd2lsbCBiZSBpbnRlcnByZXRlZCBhbmQKLSAgICAgICAgIyBhIHNwZWNpYWwgdmFsdWUgbGlrZSBjdXJzZXMuS0VZX0xFRlQgd2lsbCBiZSByZXR1cm5lZAotICAgICAgICBzdGRzY3Iua2V5cGFkKDEpCi0KLSAgICAgICAgIyBTdGFydCBjb2xvciwgdG9vLiAgSGFybWxlc3MgaWYgdGhlIHRlcm1pbmFsIGRvZXNuJ3QgaGF2ZQotICAgICAgICAjIGNvbG9yOyB1c2VyIGNhbiB0ZXN0IHdpdGggaGFzX2NvbG9yKCkgbGF0ZXIgb24uICBUaGUgdHJ5L2NhdGNoCi0gICAgICAgICMgd29ya3MgYXJvdW5kIGEgbWlub3IgYml0IG9mIG92ZXItY29uc2NpZW50aW91c25lc3MgaW4gdGhlIGN1cnNlcwotICAgICAgICAjIG1vZHVsZSAtLSB0aGUgZXJyb3IgcmV0dXJuIGZyb20gQyBzdGFydF9jb2xvcigpIGlzIGlnbm9yYWJsZS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY3Vyc2VzLnN0YXJ0X2NvbG9yKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIHJldHVybiBmdW5jKHN0ZHNjciwgKmFyZ3MsICoqa3dkcykKLSAgICBmaW5hbGx5OgotICAgICAgICAjIFNldCBldmVyeXRoaW5nIGJhY2sgdG8gbm9ybWFsCi0gICAgICAgIGlmICdzdGRzY3InIGluIGxvY2FscygpOgotICAgICAgICAgICAgc3Rkc2NyLmtleXBhZCgwKQotICAgICAgICAgICAgY3Vyc2VzLmVjaG8oKQotICAgICAgICAgICAgY3Vyc2VzLm5vY2JyZWFrKCkKLSAgICAgICAgICAgIGN1cnNlcy5lbmR3aW4oKQpkaWZmIC0tZ2l0IGEvTGliL2RhdGV0aW1lLnB5IGIvTGliL2RhdGV0aW1lLnB5CmluZGV4IGJmMjNlNTAuLmY1MDZlOWEgMTAwNjQ0Ci0tLSBhL0xpYi9kYXRldGltZS5weQorKysgYi9MaWIvZGF0ZXRpbWUucHkKQEAgLTE3MiwxMCArMTcyLDYgQEAKIAogIyBDb3JyZWN0bHkgc3Vic3RpdHV0ZSBmb3IgJXogYW5kICVaIGVzY2FwZXMgaW4gc3RyZnRpbWUgZm9ybWF0cy4KIGRlZiBfd3JhcF9zdHJmdGltZShvYmplY3QsIGZvcm1hdCwgdGltZXR1cGxlKToKLSAgICB5ZWFyID0gdGltZXR1cGxlWzBdCi0gICAgaWYgeWVhciA8IDEwMDA6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInllYXI9JWQgaXMgYmVmb3JlIDEwMDA7IHRoZSBkYXRldGltZSBzdHJmdGltZSgpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kcyByZXF1aXJlIHllYXIgPj0gMTAwMCIgJSB5ZWFyKQogICAgICMgRG9uJ3QgY2FsbCB1dGNvZmZzZXQoKSBvciB0em5hbWUoKSB1bmxlc3MgYWN0dWFsbHkgbmVlZGVkLgogICAgIGZyZXBsYWNlID0gTm9uZSAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlZgogICAgIHpyZXBsYWNlID0gTm9uZSAjIHRoZSBzdHJpbmcgdG8gdXNlIGZvciAlegpAQCAtMTA2OSwxMyArMTA2NSwxMyBAQAogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgPT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgPT0gMAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgdGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyKSAhPSAwCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY21wKG90aGVyLCBhbGxvd19taXhlZD1UcnVlKSAhPSAwCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCkBAIC0xMTAzLDcgKzEwOTksNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX2NtcGVycm9yKHNlbGYsIG90aGVyKQogCi0gICAgZGVmIF9jbXAoc2VsZiwgb3RoZXIpOgorICAgIGRlZiBfY21wKHNlbGYsIG90aGVyLCBhbGxvd19taXhlZD1GYWxzZSk6CiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG90aGVyLCB0aW1lKQogICAgICAgICBteXR6ID0gc2VsZi5fdHppbmZvCiAgICAgICAgIG90dHogPSBvdGhlci5fdHppbmZvCkBAIC0xMTIyLDcgKzExMTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyLl9ob3VyLCBvdGhlci5fbWludXRlLCBvdGhlci5fc2Vjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIuX21pY3Jvc2Vjb25kKSkKICAgICAgICAgaWYgbXlvZmYgaXMgTm9uZSBvciBvdG9mZiBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgdGltZXMiKQorICAgICAgICAgICAgaWYgYWxsb3dfbWl4ZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDIgIyBhcmJpdHJhcnkgbm9uLXplcm8gdmFsdWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJjYW5ub3QgY29tcGFyZSBuYWl2ZSBhbmQgYXdhcmUgdGltZXMiKQogICAgICAgICBteWhobW0gPSBzZWxmLl9ob3VyICogNjAgKyBzZWxmLl9taW51dGUgLSBteW9mZi8vdGltZWRlbHRhKG1pbnV0ZXM9MSkKICAgICAgICAgb3RoaG1tID0gb3RoZXIuX2hvdXIgKiA2MCArIG90aGVyLl9taW51dGUgLSBvdG9mZi8vdGltZWRlbHRhKG1pbnV0ZXM9MSkKICAgICAgICAgcmV0dXJuIF9jbXAoKG15aGhtbSwgc2VsZi5fc2Vjb25kLCBzZWxmLl9taWNyb3NlY29uZCksCkBAIC0xMzY0LDcgKzEzNjMsNyBAQAogICAgICAgICBjb252ZXJ0ZXIgPSBfdGltZS5sb2NhbHRpbWUgaWYgdHogaXMgTm9uZSBlbHNlIF90aW1lLmdtdGltZQogCiAgICAgICAgIHQsIGZyYWMgPSBkaXZtb2QodCwgMS4wKQotICAgICAgICB1cyA9IHJvdW5kKGZyYWMgKiAxZTYpCisgICAgICAgIHVzID0gaW50KGZyYWMgKiAxZTYpCiAKICAgICAgICAgIyBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQogICAgICAgICAjIGZ1bGwgc2Vjb25kLCB1cyBjYW4gYmUgcm91bmRlZCB1cCB0byAxMDAwMDAwLiAgSW4gdGhpcyBjYXNlLApAQCAtMTM4NCw3ICsxMzgzLDcgQEAKICAgICBkZWYgdXRjZnJvbXRpbWVzdGFtcChjbHMsIHQpOgogICAgICAgICAiQ29uc3RydWN0IGEgVVRDIGRhdGV0aW1lIGZyb20gYSBQT1NJWCB0aW1lc3RhbXAgKGxpa2UgdGltZS50aW1lKCkpLiIKICAgICAgICAgdCwgZnJhYyA9IGRpdm1vZCh0LCAxLjApCi0gICAgICAgIHVzID0gcm91bmQoZnJhYyAqIDFlNikKKyAgICAgICAgdXMgPSBpbnQoZnJhYyAqIDFlNikKIAogICAgICAgICAjIElmIHRpbWVzdGFtcCBpcyBsZXNzIHRoYW4gb25lIG1pY3Jvc2Vjb25kIHNtYWxsZXIgdGhhbiBhCiAgICAgICAgICMgZnVsbCBzZWNvbmQsIHVzIGNhbiBiZSByb3VuZGVkIHVwIHRvIDEwMDAwMDAuICBJbiB0aGlzIGNhc2UsCkBAIC0xNDM4LDYgKzE0MzcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QpCiAKKyAgICBkZWYgdGltZXN0YW1wKHNlbGYpOgorICAgICAgICAiUmV0dXJuIFBPU0lYIHRpbWVzdGFtcCBhcyBmbG9hdCIKKyAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gX3RpbWUubWt0aW1lKChzZWxmLnllYXIsIHNlbGYubW9udGgsIHNlbGYuZGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgLTEsIC0xKSkgKyBzZWxmLm1pY3Jvc2Vjb25kIC8gMWU2CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYgLSBfRVBPQ0gpLnRvdGFsX3NlY29uZHMoKQorCiAgICAgZGVmIHV0Y3RpbWV0dXBsZShzZWxmKToKICAgICAgICAgIlJldHVybiBVVEMgdGltZSB0dXBsZSBjb21wYXRpYmxlIHdpdGggdGltZS5nbXRpbWUoKS4iCiAgICAgICAgIG9mZnNldCA9IHNlbGYudXRjb2Zmc2V0KCkKQEAgLTE0ODUsOCArMTQ5MywzMiBAQAogICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kLCB0emluZm8pCiAKLSAgICBkZWYgYXN0aW1lem9uZShzZWxmLCB0eik6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgorICAgIGRlZiBhc3RpbWV6b25lKHNlbGYsIHR6PU5vbmUpOgorICAgICAgICBpZiB0eiBpcyBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi50emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQorICAgICAgICAgICAgdHMgPSAoc2VsZiAtIF9FUE9DSCkgLy8gdGltZWRlbHRhKHNlY29uZHM9MSkKKyAgICAgICAgICAgIGxvY2FsdG0gPSBfdGltZS5sb2NhbHRpbWUodHMpCisgICAgICAgICAgICBsb2NhbCA9IGRhdGV0aW1lKCpsb2NhbHRtWzo2XSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIEV4dHJhY3QgVFogZGF0YSBpZiBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICBnbXRvZmYgPSBsb2NhbHRtLnRtX2dtdG9mZgorICAgICAgICAgICAgICAgIHpvbmUgPSBsb2NhbHRtLnRtX3pvbmUKKyAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAjIENvbXB1dGUgVVRDIG9mZnNldCBhbmQgY29tcGFyZSB3aXRoIHRoZSB2YWx1ZSBpbXBsaWVkCisgICAgICAgICAgICAgICAgIyBieSB0bV9pc2RzdC4gIElmIHRoZSB2YWx1ZXMgbWF0Y2gsIHVzZSB0aGUgem9uZSBuYW1lCisgICAgICAgICAgICAgICAgIyBpbXBsaWVkIGJ5IHRtX2lzZHN0LgorICAgICAgICAgICAgICAgIGRlbHRhID0gbG9jYWwgLSBkYXRldGltZSgqX3RpbWUuZ210aW1lKHRzKVs6Nl0pCisgICAgICAgICAgICAgICAgZHN0ID0gX3RpbWUuZGF5bGlnaHQgYW5kIGxvY2FsdG0udG1faXNkc3QgPiAwCisgICAgICAgICAgICAgICAgZ210b2ZmID0gLShfdGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIF90aW1lLnRpbWV6b25lKQorICAgICAgICAgICAgICAgIGlmIGRlbHRhID09IHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZik6CisgICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEsIF90aW1lLnR6bmFtZVtkc3RdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHR6ID0gdGltZXpvbmUodGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKSwgem9uZSkKKworICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHR6LCB0emluZm8pOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eiBhcmd1bWVudCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHR6aW5mbyIpCiAKICAgICAgICAgbXl0eiA9IHNlbGYudHppbmZvCkBAIC0xNjEwLDcgKzE2NDIsNyBAQAogCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIGRhdGV0aW1lKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIpID09IDAKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbXAob3RoZXIsIGFsbG93X21peGVkPVRydWUpID09IDAKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgZGF0ZSk6CiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgZWxzZToKQEAgLTE2MTgsNyArMTY1MCw3IEBACiAKICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlcikgIT0gMAorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NtcChvdGhlciwgYWxsb3dfbWl4ZWQ9VHJ1ZSkgIT0gMAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBkYXRlKToKICAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogICAgICAgICBlbHNlOgpAQCAtMTY1Niw3ICsxNjg4LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIF9jbXBlcnJvcihzZWxmLCBvdGhlcikKIAotICAgIGRlZiBfY21wKHNlbGYsIG90aGVyKToKKyAgICBkZWYgX2NtcChzZWxmLCBvdGhlciwgYWxsb3dfbWl4ZWQ9RmFsc2UpOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpCiAgICAgICAgIG15dHogPSBzZWxmLl90emluZm8KICAgICAgICAgb3R0eiA9IG90aGVyLl90emluZm8KQEAgLTE2NjUsMTAgKzE2OTcsOCBAQAogICAgICAgICBpZiBteXR6IGlzIG90dHo6CiAgICAgICAgICAgICBiYXNlX2NvbXBhcmUgPSBUcnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBteXR6IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG15b2ZmID0gc2VsZi51dGNvZmZzZXQoKQotICAgICAgICAgICAgaWYgb3R0eiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBvdG9mZiA9IG90aGVyLnV0Y29mZnNldCgpCisgICAgICAgICAgICBteW9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIG90b2ZmID0gb3RoZXIudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIGJhc2VfY29tcGFyZSA9IG15b2ZmID09IG90b2ZmCiAKICAgICAgICAgaWYgYmFzZV9jb21wYXJlOgpAQCAtMTY3OSw3ICsxNzA5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5faG91ciwgb3RoZXIuX21pbnV0ZSwgb3RoZXIuX3NlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLl9taWNyb3NlY29uZCkpCiAgICAgICAgIGlmIG15b2ZmIGlzIE5vbmUgb3Igb3RvZmYgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiY2Fubm90IGNvbXBhcmUgbmFpdmUgYW5kIGF3YXJlIGRhdGV0aW1lcyIpCisgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gMiAjIGFyYml0cmFyeSBub24temVybyB2YWx1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm5vdCBjb21wYXJlIG5haXZlIGFuZCBhd2FyZSBkYXRldGltZXMiKQogICAgICAgICAjIFhYWCBXaGF0IGZvbGxvd3MgY291bGQgYmUgZG9uZSBtb3JlIGVmZmljaWVudGx5Li4uCiAgICAgICAgIGRpZmYgPSBzZWxmIC0gb3RoZXIgICAgICMgdGhpcyB3aWxsIHRha2Ugb2Zmc2V0cyBpbnRvIGFjY291bnQKICAgICAgICAgaWYgZGlmZi5kYXlzIDwgMDoKQEAgLTE4OTUsNyArMTkyOCw3IEBACiB0aW1lem9uZS51dGMgPSB0aW1lem9uZS5fY3JlYXRlKHRpbWVkZWx0YSgwKSkKIHRpbWV6b25lLm1pbiA9IHRpbWV6b25lLl9jcmVhdGUodGltZXpvbmUuX21pbm9mZnNldCkKIHRpbWV6b25lLm1heCA9IHRpbWV6b25lLl9jcmVhdGUodGltZXpvbmUuX21heG9mZnNldCkKLQorX0VQT0NIID0gZGF0ZXRpbWUoMTk3MCwgMSwgMSwgdHppbmZvPXRpbWV6b25lLnV0YykKICIiIgogU29tZSB0aW1lIHpvbmUgYWxnZWJyYS4gIEZvciBhIGRhdGV0aW1lIHgsIGxldAogICAgIHgubiA9IHggc3RyaXBwZWQgb2YgaXRzIHRpbWV6b25lIC0tIGl0cyBuYWl2ZSB0aW1lLgpkaWZmIC0tZ2l0IGEvTGliL2RlY2ltYWwucHkgYi9MaWIvZGVjaW1hbC5weQppbmRleCA0OWRlNTM1Li5iNzRhYjAxIDEwMDY0NAotLS0gYS9MaWIvZGVjaW1hbC5weQorKysgYi9MaWIvZGVjaW1hbC5weQpAQCAtNDYsOCArNDYsOCBAQAogRGVjaW1hbCgnLTAuMDEyMycpCiA+Pj4gRGVjaW1hbCgxMjM0NTYpCiBEZWNpbWFsKCcxMjM0NTYnKQotPj4+IERlY2ltYWwoJzEyMy40NWUxMjM0NTY3ODkwMTIzNDU2Nzg5MCcpCi1EZWNpbWFsKCcxLjIzNDVFKzEyMzQ1Njc4OTAxMjM0NTY3ODkyJykKKz4+PiBEZWNpbWFsKCcxMjMuNDVlMTIzNDU2NzgnKQorRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY4MCcpCiA+Pj4gRGVjaW1hbCgnMS4zMycpICsgRGVjaW1hbCgnMS4yNycpCiBEZWNpbWFsKCcyLjYwJykKID4+PiBEZWNpbWFsKCcxMi4zNCcpICsgRGVjaW1hbCgnMy44NycpIC0gRGVjaW1hbCgnMTguNDEnKQpAQCAtMTIyLDEzICsxMjIsMjAgQEAKICAgICAjIEV4Y2VwdGlvbnMKICAgICAnRGVjaW1hbEV4Y2VwdGlvbicsICdDbGFtcGVkJywgJ0ludmFsaWRPcGVyYXRpb24nLCAnRGl2aXNpb25CeVplcm8nLAogICAgICdJbmV4YWN0JywgJ1JvdW5kZWQnLCAnU3Vibm9ybWFsJywgJ092ZXJmbG93JywgJ1VuZGVyZmxvdycsCisgICAgJ0Zsb2F0T3BlcmF0aW9uJywKIAogICAgICMgQ29uc3RhbnRzIGZvciB1c2UgaW4gc2V0dGluZyB1cCBjb250ZXh0cwogICAgICdST1VORF9ET1dOJywgJ1JPVU5EX0hBTEZfVVAnLCAnUk9VTkRfSEFMRl9FVkVOJywgJ1JPVU5EX0NFSUxJTkcnLAogICAgICdST1VORF9GTE9PUicsICdST1VORF9VUCcsICdST1VORF9IQUxGX0RPV04nLCAnUk9VTkRfMDVVUCcsCiAKICAgICAjIEZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW5nIGNvbnRleHRzCi0gICAgJ3NldGNvbnRleHQnLCAnZ2V0Y29udGV4dCcsICdsb2NhbGNvbnRleHQnCisgICAgJ3NldGNvbnRleHQnLCAnZ2V0Y29udGV4dCcsICdsb2NhbGNvbnRleHQnLAorCisgICAgIyBMaW1pdHMgZm9yIHRoZSBDIHZlcnNpb24gZm9yIGNvbXBhdGliaWxpdHkKKyAgICAnTUFYX1BSRUMnLCAgJ01BWF9FTUFYJywgJ01JTl9FTUlOJywgJ01JTl9FVElOWScsCisKKyAgICAjIEMgdmVyc2lvbjogY29tcGlsZSB0aW1lIGNob2ljZSB0aGF0IGVuYWJsZXMgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgICAgJ0hBVkVfVEhSRUFEUycKIF0KIAogX192ZXJzaW9uX18gPSAnMS43MCcgICAgIyBIaWdoZXN0IHZlcnNpb24gb2YgdGhlIHNwZWMgdGhpcyBjb21wbGllcyB3aXRoCkBAIC0xMzcsNiArMTQ0LDcgQEAKIGltcG9ydCBjb3B5IGFzIF9jb3B5CiBpbXBvcnQgbWF0aCBhcyBfbWF0aAogaW1wb3J0IG51bWJlcnMgYXMgX251bWJlcnMKK2ltcG9ydCBzeXMKIAogdHJ5OgogICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUgYXMgX25hbWVkdHVwbGUKQEAgLTE1NCw2ICsxNjIsMTkgQEAKIFJPVU5EX0hBTEZfRE9XTiA9ICdST1VORF9IQUxGX0RPV04nCiBST1VORF8wNVVQID0gJ1JPVU5EXzA1VVAnCiAKKyMgQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBDIHZlcnNpb24KK0hBVkVfVEhSRUFEUyA9IFRydWUKK2lmIHN5cy5tYXhzaXplID09IDIqKjYzLTE6CisgICAgTUFYX1BSRUMgPSA5OTk5OTk5OTk5OTk5OTk5OTkKKyAgICBNQVhfRU1BWCA9IDk5OTk5OTk5OTk5OTk5OTk5OQorICAgIE1JTl9FTUlOID0gLTk5OTk5OTk5OTk5OTk5OTk5OQorZWxzZToKKyAgICBNQVhfUFJFQyA9IDQyNTAwMDAwMAorICAgIE1BWF9FTUFYID0gNDI1MDAwMDAwCisgICAgTUlOX0VNSU4gPSAtNDI1MDAwMDAwCisKK01JTl9FVElOWSA9IE1JTl9FTUlOIC0gKE1BWF9QUkVDLTEpCisKICMgRXJyb3JzCiAKIGNsYXNzIERlY2ltYWxFeGNlcHRpb24oQXJpdGhtZXRpY0Vycm9yKToKQEAgLTM3MCw5ICszOTEsMjQgQEAKICAgICBJbiBhbGwgY2FzZXMsIEluZXhhY3QsIFJvdW5kZWQsIGFuZCBTdWJub3JtYWwgd2lsbCBhbHNvIGJlIHJhaXNlZC4KICAgICAiIiIKIAorY2xhc3MgRmxvYXRPcGVyYXRpb24oRGVjaW1hbEV4Y2VwdGlvbiwgVHlwZUVycm9yKToKKyAgICAiIiJFbmFibGUgc3RyaWN0ZXIgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscy4KKworICAgIElmIHRoZSBzaWduYWwgaXMgbm90IHRyYXBwZWQgKGRlZmF1bHQpLCBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBpcworICAgIHBlcm1pdHRlZCBpbiB0aGUgRGVjaW1hbCgpIGNvbnN0cnVjdG9yLCBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKCkgYW5kCisgICAgYWxsIGNvbXBhcmlzb24gb3BlcmF0b3JzLiBCb3RoIGNvbnZlcnNpb24gYW5kIGNvbXBhcmlzb25zIGFyZSBleGFjdC4KKyAgICBBbnkgb2NjdXJyZW5jZSBvZiBhIG1peGVkIG9wZXJhdGlvbiBpcyBzaWxlbnRseSByZWNvcmRlZCBieSBzZXR0aW5nCisgICAgRmxvYXRPcGVyYXRpb24gaW4gdGhlIGNvbnRleHQgZmxhZ3MuICBFeHBsaWNpdCBjb252ZXJzaW9ucyB3aXRoCisgICAgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgb3IgY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KCkgZG8gbm90CisgICAgc2V0IHRoZSBmbGFnLgorCisgICAgT3RoZXJ3aXNlICh0aGUgc2lnbmFsIGlzIHRyYXBwZWQpLCBvbmx5IGVxdWFsaXR5IGNvbXBhcmlzb25zIGFuZCBleHBsaWNpdAorICAgIGNvbnZlcnNpb25zIGFyZSBzaWxlbnQuIEFsbCBvdGhlciBtaXhlZCBvcGVyYXRpb25zIHJhaXNlIEZsb2F0T3BlcmF0aW9uLgorICAgICIiIgorCiAjIExpc3Qgb2YgcHVibGljIHRyYXBzIGFuZCBmbGFncwogX3NpZ25hbHMgPSBbQ2xhbXBlZCwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsIE92ZXJmbG93LCBSb3VuZGVkLAotICAgICAgICAgICBVbmRlcmZsb3csIEludmFsaWRPcGVyYXRpb24sIFN1Ym5vcm1hbF0KKyAgICAgICAgICAgIFVuZGVyZmxvdywgSW52YWxpZE9wZXJhdGlvbiwgU3Vibm9ybWFsLCBGbG9hdE9wZXJhdGlvbl0KIAogIyBNYXAgY29uZGl0aW9ucyAocGVyIHRoZSBzcGVjKSB0byBzaWduYWxzCiBfY29uZGl0aW9uX21hcCA9IHtDb252ZXJzaW9uU3ludGF4OkludmFsaWRPcGVyYXRpb24sCkBAIC0zODAsNiArNDE2LDEwIEBACiAgICAgICAgICAgICAgICAgICBEaXZpc2lvblVuZGVmaW5lZDpJbnZhbGlkT3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgSW52YWxpZENvbnRleHQ6SW52YWxpZE9wZXJhdGlvbn0KIAorIyBWYWxpZCByb3VuZGluZyBtb2RlcworX3JvdW5kaW5nX21vZGVzID0gKFJPVU5EX0RPV04sIFJPVU5EX0hBTEZfVVAsIFJPVU5EX0hBTEZfRVZFTiwgUk9VTkRfQ0VJTElORywKKyAgICAgICAgICAgICAgICAgICBST1VORF9GTE9PUiwgUk9VTkRfVVAsIFJPVU5EX0hBTEZfRE9XTiwgUk9VTkRfMDVVUCkKKwogIyMjIyMgQ29udGV4dCBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBUaGUgZ2V0Y29udGV4dCgpIGFuZCBzZXRjb250ZXh0KCkgZnVuY3Rpb24gbWFuYWdlIGFjY2VzcyB0byBhIHRocmVhZC1sb2NhbApAQCAtMzkyLDEyICs0MzIsMTEgQEAKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgIyBQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkczsgY3JlYXRlIGEgbW9jayBvYmplY3QgaW5zdGVhZAotICAgIGltcG9ydCBzeXMKICAgICBjbGFzcyBNb2NrVGhyZWFkaW5nKG9iamVjdCk6CiAgICAgICAgIGRlZiBsb2NhbChzZWxmLCBzeXM9c3lzKToKICAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tfX25hbWVfX10KICAgICB0aHJlYWRpbmcgPSBNb2NrVGhyZWFkaW5nKCkKLSAgICBkZWwgc3lzLCBNb2NrVGhyZWFkaW5nCisgICAgZGVsIE1vY2tUaHJlYWRpbmcKIAogdHJ5OgogICAgIHRocmVhZGluZy5sb2NhbApAQCAtNjUwLDYgKzY4OSwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBmbG9hdCk6CisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoRmxvYXRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgInN0cmljdCBzZW1hbnRpY3MgZm9yIG1peGluZyBmbG9hdHMgYW5kIERlY2ltYWxzIGFyZSAiCisgICAgICAgICAgICAgICAgImVuYWJsZWQiKQogICAgICAgICAgICAgdmFsdWUgPSBEZWNpbWFsLmZyb21fZmxvYXQodmFsdWUpCiAgICAgICAgICAgICBzZWxmLl9leHAgID0gdmFsdWUuX2V4cAogICAgICAgICAgICAgc2VsZi5fc2lnbiA9IHZhbHVlLl9zaWduCkBAIC02ODQsNyArNzI4LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZiwgaW50KTogICAgICAgICAgICAgICAgIyBoYW5kbGUgaW50ZWdlciBpbnB1dHMKICAgICAgICAgICAgIHJldHVybiBjbHMoZikKLSAgICAgICAgaWYgX21hdGguaXNpbmYoZikgb3IgX21hdGguaXNuYW4oZik6ICAjIHJhaXNlcyBUeXBlRXJyb3IgaWYgbm90IGEgZmxvYXQKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZiwgZmxvYXQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJhcmd1bWVudCBtdXN0IGJlIGludCBvciBmbG9hdC4iKQorICAgICAgICBpZiBfbWF0aC5pc2luZihmKSBvciBfbWF0aC5pc25hbihmKToKICAgICAgICAgICAgIHJldHVybiBjbHMocmVwcihmKSkKICAgICAgICAgaWYgX21hdGguY29weXNpZ24oMS4wLCBmKSA9PSAxLjA6CiAgICAgICAgICAgICBzaWduID0gMApAQCAtMTg3Nyw2ICsxOTIzLDcgQEAKICAgICAgICAgIiIiCiAKICAgICAgICAgb3RoZXIgPSBfY29udmVydF9vdGhlcihvdGhlciwgcmFpc2VpdD1UcnVlKQorICAgICAgICB0aGlyZCA9IF9jb252ZXJ0X290aGVyKHRoaXJkLCByYWlzZWl0PVRydWUpCiAKICAgICAgICAgIyBjb21wdXRlIHByb2R1Y3Q7IHJhaXNlIEludmFsaWRPcGVyYXRpb24gaWYgZWl0aGVyIG9wZXJhbmQgaXMKICAgICAgICAgIyBhIHNpZ25hbGluZyBOYU4gb3IgaWYgdGhlIHByb2R1Y3QgaXMgemVybyB0aW1lcyBpbmZpbml0eS4KQEAgLTE5MDYsMTcgKzE5NTMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihpbnQoc2VsZi5faW50KSAqIGludChvdGhlci5faW50KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9leHAgKyBvdGhlci5fZXhwKQogCi0gICAgICAgIHRoaXJkID0gX2NvbnZlcnRfb3RoZXIodGhpcmQsIHJhaXNlaXQ9VHJ1ZSkKICAgICAgICAgcmV0dXJuIHByb2R1Y3QuX19hZGRfXyh0aGlyZCwgY29udGV4dCkKIAogICAgIGRlZiBfcG93ZXJfbW9kdWxvKHNlbGYsIG90aGVyLCBtb2R1bG8sIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICIiIlRocmVlIGFyZ3VtZW50IHZlcnNpb24gb2YgX19wb3dfXyIiIgogCi0gICAgICAgICMgaWYgY2FuJ3QgY29udmVydCBvdGhlciBhbmQgbW9kdWxvIHRvIERlY2ltYWwsIHJhaXNlCi0gICAgICAgICMgVHlwZUVycm9yOyB0aGVyZSdzIG5vIHBvaW50IHJldHVybmluZyBOb3RJbXBsZW1lbnRlZCAobm8KLSAgICAgICAgIyBlcXVpdmFsZW50IG9mIF9fcnBvd19fIGZvciB0aHJlZSBhcmd1bWVudCBwb3cpCi0gICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIsIHJhaXNlaXQ9VHJ1ZSkKLSAgICAgICAgbW9kdWxvID0gX2NvbnZlcnRfb3RoZXIobW9kdWxvLCByYWlzZWl0PVRydWUpCisgICAgICAgIG90aGVyID0gX2NvbnZlcnRfb3RoZXIob3RoZXIpCisgICAgICAgIGlmIG90aGVyIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG90aGVyCisgICAgICAgIG1vZHVsbyA9IF9jb252ZXJ0X290aGVyKG1vZHVsbykKKyAgICAgICAgaWYgbW9kdWxvIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIG1vZHVsbwogCiAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKQEAgLTIwMDcsOSArMjA1NCw5IEBACiAgICAgICAgIG5vbnplcm8uICBGb3IgZWZmaWNpZW5jeSwgb3RoZXIuX2V4cCBzaG91bGQgbm90IGJlIHRvbyBsYXJnZSwKICAgICAgICAgc28gdGhhdCAxMCoqYWJzKG90aGVyLl9leHApIGlzIGEgZmVhc2libGUgY2FsY3VsYXRpb24uIiIiCiAKLSAgICAgICAgIyBJbiB0aGUgY29tbWVudHMgYmVsb3csIHdlIHdyaXRlIHggZm9yIHRoZSB2YWx1ZSBvZiBzZWxmIGFuZAotICAgICAgICAjIHkgZm9yIHRoZSB2YWx1ZSBvZiBvdGhlci4gIFdyaXRlIHggPSB4YyoxMCoqeGUgYW5kIHkgPQotICAgICAgICAjIHljKjEwKip5ZS4KKyAgICAgICAgIyBJbiB0aGUgY29tbWVudHMgYmVsb3csIHdlIHdyaXRlIHggZm9yIHRoZSB2YWx1ZSBvZiBzZWxmIGFuZCB5IGZvciB0aGUKKyAgICAgICAgIyB2YWx1ZSBvZiBvdGhlci4gIFdyaXRlIHggPSB4YyoxMCoqeGUgYW5kIGFicyh5KSA9IHljKjEwKip5ZSwgd2l0aCB4YworICAgICAgICAjIGFuZCB5YyBwb3NpdGl2ZSBpbnRlZ2VycyBub3QgZGl2aXNpYmxlIGJ5IDEwLgogCiAgICAgICAgICMgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIG1ldGhvZCBpcyB0byBpZGVudGlmeSB0aGUgKmZhaWx1cmUqCiAgICAgICAgICMgb2YgeCoqeSB0byBiZSBleGFjdGx5IHJlcHJlc2VudGFibGUgd2l0aCBhcyBsaXR0bGUgZWZmb3J0IGFzCkBAIC0yMDE3LDEzICsyMDY0LDEyIEBACiAgICAgICAgICMgZWxpbWluYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiB4Kip5IGJlaW5nIGV4YWN0LiAgT25seSBpZiBhbGwKICAgICAgICAgIyB0aGVzZSB0ZXN0cyBhcmUgcGFzc2VkIGRvIHdlIGdvIG9uIHRvIGFjdHVhbGx5IGNvbXB1dGUgeCoqeS4KIAotICAgICAgICAjIEhlcmUncyB0aGUgbWFpbiBpZGVhLiAgRmlyc3Qgbm9ybWFsaXplIGJvdGggeCBhbmQgeS4gIFdlCi0gICAgICAgICMgZXhwcmVzcyB5IGFzIGEgcmF0aW9uYWwgbS9uLCB3aXRoIG0gYW5kIG4gcmVsYXRpdmVseSBwcmltZQotICAgICAgICAjIGFuZCBuPjAuICBUaGVuIGZvciB4Kip5IHRvIGJlIGV4YWN0bHkgcmVwcmVzZW50YWJsZSAoYXQKLSAgICAgICAgIyAqYW55KiBwcmVjaXNpb24pLCB4YyBtdXN0IGJlIHRoZSBudGggcG93ZXIgb2YgYSBwb3NpdGl2ZQotICAgICAgICAjIGludGVnZXIgYW5kIHhlIG11c3QgYmUgZGl2aXNpYmxlIGJ5IG4uICBJZiBtIGlzIG5lZ2F0aXZlCi0gICAgICAgICMgdGhlbiBhZGRpdGlvbmFsbHkgeGMgbXVzdCBiZSBhIHBvd2VyIG9mIGVpdGhlciAyIG9yIDUsIGhlbmNlCi0gICAgICAgICMgYSBwb3dlciBvZiAyKipuIG9yIDUqKm4uCisgICAgICAgICMgSGVyZSdzIHRoZSBtYWluIGlkZWEuICBFeHByZXNzIHkgYXMgYSByYXRpb25hbCBudW1iZXIgbS9uLCB3aXRoIG0gYW5kCisgICAgICAgICMgbiByZWxhdGl2ZWx5IHByaW1lIGFuZCBuPjAuICBUaGVuIGZvciB4Kip5IHRvIGJlIGV4YWN0bHkKKyAgICAgICAgIyByZXByZXNlbnRhYmxlIChhdCAqYW55KiBwcmVjaXNpb24pLCB4YyBtdXN0IGJlIHRoZSBudGggcG93ZXIgb2YgYQorICAgICAgICAjIHBvc2l0aXZlIGludGVnZXIgYW5kIHhlIG11c3QgYmUgZGl2aXNpYmxlIGJ5IG4uICBJZiB5IGlzIG5lZ2F0aXZlCisgICAgICAgICMgdGhlbiBhZGRpdGlvbmFsbHkgeGMgbXVzdCBiZSBhIHBvd2VyIG9mIGVpdGhlciAyIG9yIDUsIGhlbmNlIGEgcG93ZXIKKyAgICAgICAgIyBvZiAyKipuIG9yIDUqKm4uCiAgICAgICAgICMKICAgICAgICAgIyBUaGVyZSdzIGEgbGltaXQgdG8gaG93IHNtYWxsIHx5fCBjYW4gYmU6IGlmIHk9bS9uIGFzIGFib3ZlCiAgICAgICAgICMgdGhlbjoKQEAgLTIwOTUsMjEgKzIxNDEsNDMgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICAjIG5vdyB4YyBpcyBhIHBvd2VyIG9mIDI7IGUgaXMgaXRzIGV4cG9uZW50CiAgICAgICAgICAgICAgICAgZSA9IF9uYml0cyh4YyktMQotICAgICAgICAgICAgICAgICMgZmluZCBlKnkgYW5kIHhlKnk7IGJvdGggbXVzdCBiZSBpbnRlZ2VycwotICAgICAgICAgICAgICAgIGlmIHllID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIHlfYXNfaW50ID0geWMqMTAqKnllCi0gICAgICAgICAgICAgICAgICAgIGUgPSBlKnlfYXNfaW50Ci0gICAgICAgICAgICAgICAgICAgIHhlID0geGUqeV9hc19pbnQKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0ZW5fcG93ID0gMTAqKi15ZQotICAgICAgICAgICAgICAgICAgICBlLCByZW1haW5kZXIgPSBkaXZtb2QoZSp5YywgdGVuX3BvdykKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgeGUsIHJlbWFpbmRlciA9IGRpdm1vZCh4ZSp5YywgdGVuX3BvdykKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICAgICAgICAgIGlmIGUqNjUgPj0gcCo5MzogIyA5My82NSA+IGxvZygxMCkvbG9nKDUpCisgICAgICAgICAgICAgICAgIyBXZSBub3cgaGF2ZToKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgIHggPSAyKiplICogMTAqKnhlLCBlID4gMCwgYW5kIHkgPCAwLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFRoZSBleGFjdCByZXN1bHQgaXM6CisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB4Kip5ID0gNSoqKC1lKnkpICogMTAqKihlKnkgKyB4ZSp5KQorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHByb3ZpZGVkIHRoYXQgYm90aCBlKnkgYW5kIHhlKnkgYXJlIGludGVnZXJzLiAgTm90ZSB0aGF0IGlmCisgICAgICAgICAgICAgICAgIyA1KiooLWUqeSkgPj0gMTAqKnAsIHRoZW4gdGhlIHJlc3VsdCBjYW4ndCBiZSBleHByZXNzZWQKKyAgICAgICAgICAgICAgICAjIGV4YWN0bHkgd2l0aCBwIGRpZ2l0cyBvZiBwcmVjaXNpb24uCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgVXNpbmcgdGhlIGFib3ZlLCB3ZSBjYW4gZ3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUuCisgICAgICAgICAgICAgICAgIyA5My82NSBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nKDEwKS9sb2coNSksIHNvIGlmCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICB5ZSA+PSBsZW4oc3RyKDkzKnAvLzY1KSkKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyB0aGVuCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgICAtZSp5ID49IC15ID49IDEwKip5ZSA+IDkzKnAvNjUgPiBwKmxvZygxMCkvbG9nKDUpLAorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIHNvIDUqKigtZSp5KSA+PSAxMCoqcCwgYW5kIHRoZSBjb2VmZmljaWVudCBvZiB0aGUgcmVzdWx0CisgICAgICAgICAgICAgICAgIyBjYW4ndCBiZSBleHByZXNzZWQgaW4gcCBkaWdpdHMuCisKKyAgICAgICAgICAgICAgICAjIGVtYXggPj0gbGFyZ2VzdCBlIHN1Y2ggdGhhdCA1KiplIDwgMTAqKnAuCisgICAgICAgICAgICAgICAgZW1heCA9IHAqOTMvLzY1CisgICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICAjIEZpbmQgLWUqeSBhbmQgLXhlKnk7IGJvdGggbXVzdCBiZSBpbnRlZ2VycworICAgICAgICAgICAgICAgIGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICB4ZSA9IF9kZWNpbWFsX2xzaGlmdF9leGFjdCh4ZSAqIHljLCB5ZSkKKyAgICAgICAgICAgICAgICBpZiBlIGlzIE5vbmUgb3IgeGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgICAgIGlmIGUgPiBlbWF4OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgICAgIHhjID0gNSoqZQogCkBAIC0yMTIzLDE5ICsyMTkxLDIwIEBACiAgICAgICAgICAgICAgICAgd2hpbGUgeGMgJSA1ID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHhjIC8vPSA1CiAgICAgICAgICAgICAgICAgICAgIGUgLT0gMQotICAgICAgICAgICAgICAgIGlmIHllID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIHlfYXNfaW50ZWdlciA9IHljKjEwKip5ZQotICAgICAgICAgICAgICAgICAgICBlID0gZSp5X2FzX2ludGVnZXIKLSAgICAgICAgICAgICAgICAgICAgeGUgPSB4ZSp5X2FzX2ludGVnZXIKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0ZW5fcG93ID0gMTAqKi15ZQotICAgICAgICAgICAgICAgICAgICBlLCByZW1haW5kZXIgPSBkaXZtb2QoZSp5YywgdGVuX3BvdykKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgeGUsIHJlbWFpbmRlciA9IGRpdm1vZCh4ZSp5YywgdGVuX3BvdykKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgICAgICBpZiBlKjMgPj0gcCoxMDogIyAxMC8zID4gbG9nKDEwKS9sb2coMikKKworICAgICAgICAgICAgICAgICMgR3VhcmQgYWdhaW5zdCBsYXJnZSB2YWx1ZXMgb2YgeWUsIHVzaW5nIHRoZSBzYW1lIGxvZ2ljIGFzIGluCisgICAgICAgICAgICAgICAgIyB0aGUgJ3hjIGlzIGEgcG93ZXIgb2YgMicgYnJhbmNoLiAgMTAvMyBpcyBhbiB1cHBlciBib3VuZCBmb3IKKyAgICAgICAgICAgICAgICAjIGxvZygxMCkvbG9nKDIpLgorICAgICAgICAgICAgICAgIGVtYXggPSBwKjEwLy8zCisgICAgICAgICAgICAgICAgaWYgeWUgPj0gbGVuKHN0cihlbWF4KSk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBlID0gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgeGUgPSBfZGVjaW1hbF9sc2hpZnRfZXhhY3QoeGUgKiB5YywgeWUpCisgICAgICAgICAgICAgICAgaWYgZSBpcyBOb25lIG9yIHhlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgICAgICAgICBpZiBlID4gZW1heDoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICB4YyA9IDIqKmUKICAgICAgICAgICAgIGVsc2U6CkBAIC0zODE2LDExICszODg1LDkgQEAKICAgICBjbGFtcCAtICBJZiAxLCBjaGFuZ2UgZXhwb25lbnRzIGlmIHRvbyBoaWdoIChEZWZhdWx0IDApCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJlYz1Ob25lLCByb3VuZGluZz1Ob25lLAotICAgICAgICAgICAgICAgICB0cmFwcz1Ob25lLCBmbGFncz1Ob25lLAotICAgICAgICAgICAgICAgICBFbWluPU5vbmUsIEVtYXg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2lnbm9yZWRfZmxhZ3M9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIGNhcGl0YWxzPU5vbmUsIGNsYW1wPU5vbmUsIGZsYWdzPU5vbmUsIHRyYXBzPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgIF9pZ25vcmVkX2ZsYWdzPU5vbmUpOgogICAgICAgICAjIFNldCBkZWZhdWx0czsgZm9yIGV2ZXJ5dGhpbmcgZXhjZXB0IGZsYWdzIGFuZCBfaWdub3JlZF9mbGFncywKICAgICAgICAgIyBpbmhlcml0IGZyb20gRGVmYXVsdENvbnRleHQuCiAgICAgICAgIHRyeToKQEAgLTM4NDMsMTcgKzM5MTAsNzggQEAKICAgICAgICAgaWYgdHJhcHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkYy50cmFwcy5jb3B5KCkKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh0cmFwcywgZGljdCk6Ci0gICAgICAgICAgICBzZWxmLnRyYXBzID0gZGljdCgocywgaW50KHMgaW4gdHJhcHMpKSBmb3IgcyBpbiBfc2lnbmFscykKKyAgICAgICAgICAgIHNlbGYudHJhcHMgPSBkaWN0KChzLCBpbnQocyBpbiB0cmFwcykpIGZvciBzIGluIF9zaWduYWxzICsgdHJhcHMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnRyYXBzID0gdHJhcHMKIAogICAgICAgICBpZiBmbGFncyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QuZnJvbWtleXMoX3NpZ25hbHMsIDApCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2UoZmxhZ3MsIGRpY3QpOgotICAgICAgICAgICAgc2VsZi5mbGFncyA9IGRpY3QoKHMsIGludChzIGluIGZsYWdzKSkgZm9yIHMgaW4gX3NpZ25hbHMpCisgICAgICAgICAgICBzZWxmLmZsYWdzID0gZGljdCgocywgaW50KHMgaW4gZmxhZ3MpKSBmb3IgcyBpbiBfc2lnbmFscyArIGZsYWdzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mbGFncyA9IGZsYWdzCiAKKyAgICBkZWYgX3NldF9pbnRlZ2VyX2NoZWNrKHNlbGYsIG5hbWUsIHZhbHVlLCB2bWluLCB2bWF4KToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzIG11c3QgYmUgYW4gaW50ZWdlciIgJSBuYW1lKQorICAgICAgICBpZiB2bWluID09ICctaW5mJzoKKyAgICAgICAgICAgIGlmIHZhbHVlID4gdm1heDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslcywgJWRdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIGVsaWYgdm1heCA9PSAnaW5mJzoKKyAgICAgICAgICAgIGlmIHZhbHVlIDwgdm1pbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcyBtdXN0IGJlIGluIFslZCwgJXNdLiBnb3Q6ICVzIiAlIChuYW1lLCB2bWluLCB2bWF4LCB2YWx1ZSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiB2YWx1ZSA8IHZtaW4gb3IgdmFsdWUgPiB2bWF4OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIG11c3QgYmUgaW4gWyVkLCAlZF0uIGdvdCAlcyIgJSAobmFtZSwgdm1pbiwgdm1heCwgdmFsdWUpKQorICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorCisgICAgZGVmIF9zZXRfc2lnbmFsX2RpY3Qoc2VsZiwgbmFtZSwgZCk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGQsIGRpY3QpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBtdXN0IGJlIGEgc2lnbmFsIGRpY3QiICUgZCkKKyAgICAgICAgZm9yIGtleSBpbiBkOgorICAgICAgICAgICAgaWYgbm90IGtleSBpbiBfc2lnbmFsczoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKKyAgICAgICAgZm9yIGtleSBpbiBfc2lnbmFsczoKKyAgICAgICAgICAgIGlmIG5vdCBrZXkgaW4gZDoKKyAgICAgICAgICAgICAgICByYWlzZSBLZXlFcnJvcigiJXMgaXMgbm90IGEgdmFsaWQgc2lnbmFsIGRpY3QiICUgZCkKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCBkKQorCisgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaWYgbmFtZSA9PSAncHJlYyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDEsICdpbmYnKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ0VtaW4nOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NldF9pbnRlZ2VyX2NoZWNrKG5hbWUsIHZhbHVlLCAnLWluZicsIDApCisgICAgICAgIGVsaWYgbmFtZSA9PSAnRW1heCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsICdpbmYnKQorICAgICAgICBlbGlmIG5hbWUgPT0gJ2NhcGl0YWxzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfaW50ZWdlcl9jaGVjayhuYW1lLCB2YWx1ZSwgMCwgMSkKKyAgICAgICAgZWxpZiBuYW1lID09ICdjbGFtcCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc2V0X2ludGVnZXJfY2hlY2sobmFtZSwgdmFsdWUsIDAsIDEpCisgICAgICAgIGVsaWYgbmFtZSA9PSAncm91bmRpbmcnOgorICAgICAgICAgICAgaWYgbm90IHZhbHVlIGluIF9yb3VuZGluZ19tb2RlczoKKyAgICAgICAgICAgICAgICAjIHJhaXNlIFR5cGVFcnJvciBldmVuIGZvciBzdHJpbmdzIHRvIGhhdmUgY29uc2lzdGVuY3kKKyAgICAgICAgICAgICAgICAjIGFtb25nIHZhcmlvdXMgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXM6IGludmFsaWQgcm91bmRpbmcgbW9kZSIgJSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnZmxhZ3MnIG9yIG5hbWUgPT0gJ3RyYXBzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZXRfc2lnbmFsX2RpY3QobmFtZSwgdmFsdWUpCisgICAgICAgIGVsaWYgbmFtZSA9PSAnX2lnbm9yZWRfZmxhZ3MnOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAorICAgICAgICAgICAgICAgICInZGVjaW1hbC5Db250ZXh0JyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisKKyAgICBkZWYgX19kZWxhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBjYW5ub3QgYmUgZGVsZXRlZCIgJSBuYW1lKQorCisgICAgIyBTdXBwb3J0IGZvciBwaWNrbGluZywgY29weSwgYW5kIGRlZXBjb3B5CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIGZsYWdzID0gW3NpZyBmb3Igc2lnLCB2IGluIHNlbGYuZmxhZ3MuaXRlbXMoKSBpZiB2XQorICAgICAgICB0cmFwcyA9IFtzaWcgZm9yIHNpZywgdiBpbiBzZWxmLnRyYXBzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywKKyAgICAgICAgICAgICAgICAoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgc2VsZi5jYXBpdGFscywgc2VsZi5jbGFtcCwgZmxhZ3MsIHRyYXBzKSkKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgIiIiU2hvdyB0aGUgY3VycmVudCBjb250ZXh0LiIiIgogICAgICAgICBzID0gW10KQEAgLTM4NzIsNDMgKzQwMDAsMjcgQEAKICAgICAgICAgZm9yIGZsYWcgaW4gc2VsZi5mbGFnczoKICAgICAgICAgICAgIHNlbGYuZmxhZ3NbZmxhZ10gPSAwCiAKKyAgICBkZWYgY2xlYXJfdHJhcHMoc2VsZik6CisgICAgICAgICIiIlJlc2V0IGFsbCB0cmFwcyB0byB6ZXJvIiIiCisgICAgICAgIGZvciBmbGFnIGluIHNlbGYudHJhcHM6CisgICAgICAgICAgICBzZWxmLnRyYXBzW2ZsYWddID0gMAorCiAgICAgZGVmIF9zaGFsbG93X2NvcHkoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgYSBzaGFsbG93IGNvcHkgZnJvbSBzZWxmLiIiIgotICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLnRyYXBzLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFncywgc2VsZi5FbWluLCBzZWxmLkVtYXgsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBzZWxmLl9pZ25vcmVkX2ZsYWdzKQorICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsIHNlbGYuZmxhZ3MsIHNlbGYudHJhcHMsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQogICAgICAgICByZXR1cm4gbmMKIAogICAgIGRlZiBjb3B5KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIGEgZGVlcCBjb3B5IGZyb20gc2VsZi4iIiIKLSAgICAgICAgbmMgPSBDb250ZXh0KHNlbGYucHJlYywgc2VsZi5yb3VuZGluZywgc2VsZi50cmFwcy5jb3B5KCksCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLmNvcHkoKSwgc2VsZi5FbWluLCBzZWxmLkVtYXgsCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzLCBzZWxmLmNsYW1wLCBzZWxmLl9pZ25vcmVkX2ZsYWdzKQorICAgICAgICBuYyA9IENvbnRleHQoc2VsZi5wcmVjLCBzZWxmLnJvdW5kaW5nLCBzZWxmLkVtaW4sIHNlbGYuRW1heCwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FwaXRhbHMsIHNlbGYuY2xhbXAsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLmNvcHkoKSwgc2VsZi50cmFwcy5jb3B5KCksCisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pZ25vcmVkX2ZsYWdzKQogICAgICAgICByZXR1cm4gbmMKICAgICBfX2NvcHlfXyA9IGNvcHkKIAotICAgICMgX2NsYW1wIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIHRoaXJkLXBhcnR5Ci0gICAgIyBjb2RlLiAgTWF5IGJlIHJlbW92ZWQgaW4gUHl0aG9uID49IDMuMy4KLSAgICBkZWYgX2dldF9jbGFtcChzZWxmKToKLSAgICAgICAgIl9jbGFtcCBtaXJyb3JzIHRoZSBjbGFtcCBhdHRyaWJ1dGUuICBJdHMgdXNlIGlzIGRlcHJlY2F0ZWQuIgotICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgd2FybmluZ3Mud2FybignVXNlIG9mIHRoZSBfY2xhbXAgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQuICcKLSAgICAgICAgICAgICAgICAgICAgICAnUGxlYXNlIHVzZSBjbGFtcCBpbnN0ZWFkLicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICByZXR1cm4gc2VsZi5jbGFtcAotCi0gICAgZGVmIF9zZXRfY2xhbXAoc2VsZiwgY2xhbXApOgotICAgICAgICAiX2NsYW1wIG1pcnJvcnMgdGhlIGNsYW1wIGF0dHJpYnV0ZS4gIEl0cyB1c2UgaXMgZGVwcmVjYXRlZC4iCi0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdVc2Ugb2YgdGhlIF9jbGFtcCBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gJwotICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgdXNlIGNsYW1wIGluc3RlYWQuJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHNlbGYuY2xhbXAgPSBjbGFtcAotCi0gICAgIyBkb24ndCBib3RoZXIgd2l0aCBfZGVsX2NsYW1wOyAgbm8gc2FuZSAzcmQgcGFydHkgY29kZSBzaG91bGQKLSAgICAjIGJlIGRlbGV0aW5nIHRoZSBfY2xhbXAgYXR0cmlidXRlCi0gICAgX2NsYW1wID0gcHJvcGVydHkoX2dldF9jbGFtcCwgX3NldF9jbGFtcCkKLQogICAgIGRlZiBfcmFpc2VfZXJyb3Ioc2VsZiwgY29uZGl0aW9uLCBleHBsYW5hdGlvbiA9IE5vbmUsICphcmdzKToKICAgICAgICAgIiIiSGFuZGxlcyBhbiBlcnJvcgogCkBAIC00MDY4LDYgKzQxODAsOCBAQAogICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCiAgICAgICAgIERlY2ltYWwoJzIuNTAnKQogICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYSwgRGVjaW1hbCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImNhbm9uaWNhbCByZXF1aXJlcyBhIERlY2ltYWwgYXMgYW4gYXJndW1lbnQuIikKICAgICAgICAgcmV0dXJuIGEuY2Fub25pY2FsKGNvbnRleHQ9c2VsZikKIAogICAgIGRlZiBjb21wYXJlKHNlbGYsIGEsIGIpOgpAQCAtNDM3OCw2ICs0NDkyLDggQEAKICAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19jYW5vbmljYWwoRGVjaW1hbCgnMi41MCcpKQogICAgICAgICBUcnVlCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhLCBEZWNpbWFsKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaXNfY2Fub25pY2FsIHJlcXVpcmVzIGEgRGVjaW1hbCBhcyBhbiBhcmd1bWVudC4iKQogICAgICAgICByZXR1cm4gYS5pc19jYW5vbmljYWwoKQogCiAgICAgZGVmIGlzX2Zpbml0ZShzZWxmLCBhKToKQEAgLTQ5NzAsNyArNTA4Niw3IEBACiAgICAgICAgICAgK05vcm1hbAogICAgICAgICAgICtJbmZpbml0eQogCi0gICAgICAgID4+PiBjID0gQ29udGV4dChFeHRlbmRlZENvbnRleHQpCisgICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQogICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQogICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CiAgICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdJbmZpbml0eScpKQpAQCAtNTUzNSw2ICs1NjUxLDI3IEBACiAKIF9uYml0cyA9IGludC5iaXRfbGVuZ3RoCiAKK2RlZiBfZGVjaW1hbF9sc2hpZnRfZXhhY3QobiwgZSk6CisgICAgIiIiIEdpdmVuIGludGVnZXJzIG4gYW5kIGUsIHJldHVybiBuICogMTAqKmUgaWYgaXQncyBhbiBpbnRlZ2VyLCBlbHNlIE5vbmUuCisKKyAgICBUaGUgY29tcHV0YXRpb24gaXMgZGVzaWduZWQgdG8gYXZvaWQgY29tcHV0aW5nIGxhcmdlIHBvd2VycyBvZiAxMAorICAgIHVubmVjZXNzYXJpbHkuCisKKyAgICA+Pj4gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KDMsIDQpCisgICAgMzAwMDAKKyAgICA+Pj4gX2RlY2ltYWxfbHNoaWZ0X2V4YWN0KDMwMCwgLTk5OTk5OTk5OSkgICMgcmV0dXJucyBOb25lCisKKyAgICAiIiIKKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiAwCisgICAgZWxpZiBlID49IDA6CisgICAgICAgIHJldHVybiBuICogMTAqKmUKKyAgICBlbHNlOgorICAgICAgICAjIHZhbF9uID0gbGFyZ2VzdCBwb3dlciBvZiAxMCBkaXZpZGluZyBuLgorICAgICAgICBzdHJfbiA9IHN0cihhYnMobikpCisgICAgICAgIHZhbF9uID0gbGVuKHN0cl9uKSAtIGxlbihzdHJfbi5yc3RyaXAoJzAnKSkKKyAgICAgICAgcmV0dXJuIE5vbmUgaWYgdmFsX24gPCAtZSBlbHNlIG4gLy8gMTAqKi1lCisKIGRlZiBfc3FydF9uZWFyZXN0KG4sIGEpOgogICAgICIiIkNsb3Nlc3QgaW50ZWdlciB0byB0aGUgc3F1YXJlIHJvb3Qgb2YgdGhlIHBvc2l0aXZlIGludGVnZXIgbi4gIGEgaXMKICAgICBhbiBpbml0aWFsIGFwcHJveGltYXRpb24gdG8gdGhlIHNxdWFyZSByb290LiAgQW55IHBvc2l0aXZlIGludGVnZXIKQEAgLTU5MDEsNiArNjAzOCwxMiBAQAogICAgIGlmIGVxdWFsaXR5X29wIGFuZCBpc2luc3RhbmNlKG90aGVyLCBfbnVtYmVycy5Db21wbGV4KSBhbmQgb3RoZXIuaW1hZyA9PSAwOgogICAgICAgICBvdGhlciA9IG90aGVyLnJlYWwKICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6CisgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgaWYgZXF1YWxpdHlfb3A6CisgICAgICAgICAgICBjb250ZXh0LmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKEZsb2F0T3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICJzdHJpY3Qgc2VtYW50aWNzIGZvciBtaXhpbmcgZmxvYXRzIGFuZCBEZWNpbWFscyBhcmUgZW5hYmxlZCIpCiAgICAgICAgIHJldHVybiBzZWxmLCBEZWNpbWFsLmZyb21fZmxvYXQob3RoZXIpCiAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkLCBOb3RJbXBsZW1lbnRlZAogCkBAIC01OTE0LDggKzYwNTcsOCBAQAogICAgICAgICBwcmVjPTI4LCByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sCiAgICAgICAgIHRyYXBzPVtEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3csIEludmFsaWRPcGVyYXRpb25dLAogICAgICAgICBmbGFncz1bXSwKLSAgICAgICAgRW1heD05OTk5OTk5OTksCi0gICAgICAgIEVtaW49LTk5OTk5OTk5OSwKKyAgICAgICAgRW1heD05OTk5OTksCisgICAgICAgIEVtaW49LTk5OTk5OSwKICAgICAgICAgY2FwaXRhbHM9MSwKICAgICAgICAgY2xhbXA9MAogKQpAQCAtNjA2NSw3ICs2MjA4LDcgQEAKICAgICAjIGlmIGZvcm1hdCB0eXBlIGlzICdnJyBvciAnRycgdGhlbiBhIHByZWNpc2lvbiBvZiAwIG1ha2VzIGxpdHRsZQogICAgICMgc2Vuc2U7IGNvbnZlcnQgaXQgdG8gMS4gIFNhbWUgaWYgZm9ybWF0IHR5cGUgaXMgdW5zcGVjaWZpZWQuCiAgICAgaWYgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID09IDA6Ci0gICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaXMgTm9uZSBvciBmb3JtYXRfZGljdFsndHlwZSddIGluICdnRyc6CisgICAgICAgIGlmIGZvcm1hdF9kaWN0Wyd0eXBlJ10gaXMgTm9uZSBvciBmb3JtYXRfZGljdFsndHlwZSddIGluICdnR24nOgogICAgICAgICAgICAgZm9ybWF0X2RpY3RbJ3ByZWNpc2lvbiddID0gMQogCiAgICAgIyBkZXRlcm1pbmUgdGhvdXNhbmRzIHNlcGFyYXRvciwgZ3JvdXBpbmcsIGFuZCBkZWNpbWFsIHNlcGFyYXRvciwgYW5kCkBAIC02MjM5LDE2ICs2MzgyLDI2IEBACiAKICMgQ29uc3RhbnRzIHJlbGF0ZWQgdG8gdGhlIGhhc2ggaW1wbGVtZW50YXRpb247ICBoYXNoKHgpIGlzIGJhc2VkCiAjIG9uIHRoZSByZWR1Y3Rpb24gb2YgeCBtb2R1bG8gX1B5SEFTSF9NT0RVTFVTCi1pbXBvcnQgc3lzCiBfUHlIQVNIX01PRFVMVVMgPSBzeXMuaGFzaF9pbmZvLm1vZHVsdXMKICMgaGFzaCB2YWx1ZXMgdG8gdXNlIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdGllcywgYW5kIG5hbnMKIF9QeUhBU0hfSU5GID0gc3lzLmhhc2hfaW5mby5pbmYKIF9QeUhBU0hfTkFOID0gc3lzLmhhc2hfaW5mby5uYW4KLWRlbCBzeXMKIAogIyBfUHlIQVNIXzEwSU5WIGlzIHRoZSBpbnZlcnNlIG9mIDEwIG1vZHVsbyB0aGUgcHJpbWUgX1B5SEFTSF9NT0RVTFVTCiBfUHlIQVNIXzEwSU5WID0gcG93KDEwLCBfUHlIQVNIX01PRFVMVVMgLSAyLCBfUHlIQVNIX01PRFVMVVMpCitkZWwgc3lzCiAKK3RyeToKKyAgICBpbXBvcnQgX2RlY2ltYWwKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIHMxID0gc2V0KGRpcigpKQorICAgIHMyID0gc2V0KGRpcihfZGVjaW1hbCkpCisgICAgZm9yIG5hbWUgaW4gczEgLSBzMjoKKyAgICAgICAgZGVsIGdsb2JhbHMoKVtuYW1lXQorICAgIGRlbCBzMSwgczIsIG5hbWUKKyAgICBmcm9tIF9kZWNpbWFsIGltcG9ydCAqCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IGRvY3Rlc3QsIGRlY2ltYWwKZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggZTZjYzZlZS4uYWUzNzdkNyAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTIwNCw3ICsyMDQsNyBAQAogICAgICAgICAjICAgICAgcmV0dXJuaW5nIHRydWUgaWZmIHRoZSBlbGVtZW50IGlzICJqdW5rIiAtLSB0aGlzIGhhcwogICAgICAgICAjICAgICAgc3VidGxlIGJ1dCBoZWxwZnVsIGVmZmVjdHMgb24gdGhlIGFsZ29yaXRobSwgd2hpY2ggSSdsbAogICAgICAgICAjICAgICAgZ2V0IGFyb3VuZCB0byB3cml0aW5nIHVwIHNvbWVkYXkgPDAuOSB3aW5rPi4KLSAgICAgICAgIyAgICAgIERPTidUIFVTRSEgIE9ubHkgX19jaGFpbl9iIHVzZXMgdGhpcy4gIFVzZSBpc2JqdW5rLgorICAgICAgICAjICAgICAgRE9OJ1QgVVNFISAgT25seSBfX2NoYWluX2IgdXNlcyB0aGlzLiAgVXNlICJpbiBzZWxmLmJqdW5rIi4KICAgICAgICAgIyBianVuawogICAgICAgICAjICAgICAgdGhlIGl0ZW1zIGluIGIgZm9yIHdoaWNoIGlzanVuayBpcyBUcnVlLgogICAgICAgICAjIGJwb3B1bGFyCkBAIC0yODcsNyArMjg3LDYgQEAKICAgICAjIHdoZW4gc2VsZi5pc2p1bmsgaXMgZGVmaW5lZCwganVuayBlbGVtZW50cyBkb24ndCBzaG93IHVwIGluIHRoaXMKICAgICAjIG1hcCBhdCBhbGwsIHdoaWNoIHN0b3BzIHRoZSBjZW50cmFsIGZpbmRfbG9uZ2VzdF9tYXRjaCBtZXRob2QKICAgICAjIGZyb20gc3RhcnRpbmcgYW55IG1hdGNoaW5nIGJsb2NrIGF0IGEganVuayBlbGVtZW50IC4uLgotICAgICMgYWxzbyBjcmVhdGVzIHRoZSBmYXN0IGlzYmp1bmsgZnVuY3Rpb24gLi4uCiAgICAgIyBiMmogYWxzbyBkb2VzIG5vdCBjb250YWluIGVudHJpZXMgZm9yICJwb3B1bGFyIiBlbGVtZW50cywgbWVhbmluZwogICAgICMgZWxlbWVudHMgdGhhdCBhY2NvdW50IGZvciBtb3JlIHRoYW4gMSArIDElIG9mIHRoZSB0b3RhbCBlbGVtZW50cywgYW5kCiAgICAgIyB3aGVuIHRoZSBzZXF1ZW5jZSBpcyByZWFzb25hYmx5IGxhcmdlICg+PSAyMDAgZWxlbWVudHMpOyB0aGlzIGNhbgpAQCAtODAwLDcgKzc5OSw3IEBACiAgICAgLi4uICAgMi4gRXhwbGljaXQgaXMgYmV0dGVyIHRoYW4gaW1wbGljaXQuCiAgICAgLi4uICAgMy4gU2ltcGxlIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICAgLi4uICAgNC4gQ29tcGxleCBpcyBiZXR0ZXIgdGhhbiBjb21wbGljYXRlZC4KLSAgICAuLi4gJycnLnNwbGl0bGluZXMoMSkKKyAgICAuLi4gJycnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICA+Pj4gbGVuKHRleHQxKQogICAgIDQKICAgICA+Pj4gdGV4dDFbMF1bLTFdCkBAIC04MDksNyArODA4LDcgQEAKICAgICAuLi4gICAzLiAgIFNpbXBsZSBpcyBiZXR0ZXIgdGhhbiBjb21wbGV4LgogICAgIC4uLiAgIDQuIENvbXBsaWNhdGVkIGlzIGJldHRlciB0aGFuIGNvbXBsZXguCiAgICAgLi4uICAgNS4gRmxhdCBpcyBiZXR0ZXIgdGhhbiBuZXN0ZWQuCi0gICAgLi4uICcnJy5zcGxpdGxpbmVzKDEpCisgICAgLi4uICcnJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAKICAgICBOZXh0IHdlIGluc3RhbnRpYXRlIGEgRGlmZmVyIG9iamVjdDoKIApAQCAtODk2LDggKzg5NSw4IEBACiAKICAgICAgICAgRXhhbXBsZToKIAotICAgICAgICA+Pj4gcHJpbnQoJycuam9pbihEaWZmZXIoKS5jb21wYXJlKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcygxKSwKLSAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcygxKSkpLAorICAgICAgICA+Pj4gcHJpbnQoJycuam9pbihEaWZmZXIoKS5jb21wYXJlKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcyhUcnVlKSwKKyAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcyhUcnVlKSkpLAogICAgICAgICAuLi4gICAgICAgZW5kPSIiKQogICAgICAgICAtIG9uZQogICAgICAgICA/ICBeCkBAIC0xMjY5LDggKzEyNjgsOCBAQAogCiAgICAgRXhhbXBsZToKIAotICAgID4+PiBwcmludCgnJy5qb2luKGNvbnRleHRfZGlmZignb25lXG50d29cbnRocmVlXG5mb3VyXG4nLnNwbGl0bGluZXMoMSksCi0gICAgLi4uICAgICAgICd6ZXJvXG5vbmVcbnRyZWVcbmZvdXJcbicuc3BsaXRsaW5lcygxKSwgJ09yaWdpbmFsJywgJ0N1cnJlbnQnKSksCisgICAgPj4+IHByaW50KCcnLmpvaW4oY29udGV4dF9kaWZmKCdvbmVcbnR3b1xudGhyZWVcbmZvdXJcbicuc3BsaXRsaW5lcyhUcnVlKSwKKyAgICAuLi4gICAgICAgJ3plcm9cbm9uZVxudHJlZVxuZm91clxuJy5zcGxpdGxpbmVzKFRydWUpLCAnT3JpZ2luYWwnLCAnQ3VycmVudCcpKSwKICAgICAuLi4gICAgICAgZW5kPSIiKQogICAgICoqKiBPcmlnaW5hbAogICAgIC0tLSBDdXJyZW50CkBAIC0xMzM5LDggKzEzMzgsOCBAQAogCiAgICAgRXhhbXBsZToKIAotICAgID4+PiBkaWZmID0gbmRpZmYoJ29uZVxudHdvXG50aHJlZVxuJy5zcGxpdGxpbmVzKDEpLAotICAgIC4uLiAgICAgICAgICAgICAgJ29yZVxudHJlZVxuZW11XG4nLnNwbGl0bGluZXMoMSkpCisgICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSksCisgICAgLi4uICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKICAgICA+Pj4gcHJpbnQoJycuam9pbihkaWZmKSwgZW5kPSIiKQogICAgIC0gb25lCiAgICAgPyAgXgpAQCAtMjAzNCw4ICsyMDMzLDggQEAKIAogICAgIEV4YW1wbGVzOgogCi0gICAgPj4+IGRpZmYgPSBuZGlmZignb25lXG50d29cbnRocmVlXG4nLnNwbGl0bGluZXMoMSksCi0gICAgLi4uICAgICAgICAgICAgICAnb3JlXG50cmVlXG5lbXVcbicuc3BsaXRsaW5lcygxKSkKKyAgICA+Pj4gZGlmZiA9IG5kaWZmKCdvbmVcbnR3b1xudGhyZWVcbicuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSwKKyAgICAuLi4gICAgICAgICAgICAgICdvcmVcbnRyZWVcbmVtdVxuJy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgID4+PiBkaWZmID0gbGlzdChkaWZmKQogICAgID4+PiBwcmludCgnJy5qb2luKHJlc3RvcmUoZGlmZiwgMSkpLCBlbmQ9IiIpCiAgICAgb25lCmRpZmYgLS1naXQgYS9MaWIvZGlzLnB5IGIvTGliL2Rpcy5weQppbmRleCBmNjRiYWU2Li41NDNmZGM3IDEwMDY0NAotLS0gYS9MaWIvZGlzLnB5CisrKyBiL0xpYi9kaXMucHkKQEAgLTE5MCw2ICsxOTAsOSBAQAogICAgICAgICAgICAgICAgIGlmIGZyZWUgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZnJlZSA9IGNvLmNvX2NlbGx2YXJzICsgY28uY29fZnJlZXZhcnMKICAgICAgICAgICAgICAgICBwcmludCgnKCcgKyBmcmVlW29wYXJnXSArICcpJywgZW5kPScgJykKKyAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFyZ3M6CisgICAgICAgICAgICAgICAgcHJpbnQoJyglZCBwb3NpdGlvbmFsLCAlZCBrZXl3b3JkIHBhaXIpJworICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGVbaS0yXSwgY29kZVtpLTFdKSwgZW5kPScgJykKICAgICAgICAgcHJpbnQoKQogCiBkZWYgX2Rpc2Fzc2VtYmxlX2J5dGVzKGNvZGUsIGxhc3RpPS0xLCB2YXJuYW1lcz1Ob25lLCBuYW1lcz1Ob25lLApAQCAtMjI5LDYgKzIzMiw5IEBACiAgICAgICAgICAgICAgICAgICAgIHByaW50KCcoJWQpJyAlIG9wYXJnLCBlbmQ9JyAnKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNjb21wYXJlOgogICAgICAgICAgICAgICAgIHByaW50KCcoJyArIGNtcF9vcFtvcGFyZ10gKyAnKScsIGVuZD0nICcpCisgICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgorICAgICAgICAgICAgICAgIHByaW50KCcoJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyKScKKyAgICAgICAgICAgICAgICAgICAgICAlIChjb2RlW2ktMl0sIGNvZGVbaS0xXSksIGVuZD0nICcpCiAgICAgICAgIHByaW50KCkKIAogZGVmIF9kaXNhc3NlbWJsZV9zdHIoc291cmNlKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkgYi9MaWIvZGlzdHV0aWxzL19faW5pdF9fLnB5CmluZGV4IGI1MmE5ZmUuLjM0NWFjNGYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvX19pbml0X18ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9fX2luaXRfXy5weQpAQCAtMTMsNSArMTMsNSBAQAogIyBVcGRhdGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIFB5dGhvbiByZWxlYXNlIHByb2Nlc3MuCiAjCiAjLS1zdGFydCBjb25zdGFudHMtLQotX192ZXJzaW9uX18gPSAiMy4yLjMiCitfX3ZlcnNpb25fXyA9ICIzLjMuMCIKICMtLWVuZCBjb25zdGFudHMtLQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQppbmRleCBlM2VkM2FkLi45NTlhOGJmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3Rfd2luaW5zdC5weQpAQCAtMjY1LDExICsyNjUsMTEgQEAKICAgICAgICAgY2ZnZGF0YSA9IGNmZ2RhdGEgKyBiIlwwIgogICAgICAgICBpZiBzZWxmLnByZV9pbnN0YWxsX3NjcmlwdDoKICAgICAgICAgICAgICMgV2UgbmVlZCB0byBub3JtYWxpemUgbmV3bGluZXMsIHNvIHdlIG9wZW4gaW4gdGV4dCBtb2RlIGFuZAotICAgICAgICAgICAgIyBjb252ZXJ0IGJhY2sgdG8gYnl0ZXMuICJsYXRpbjEiIHNpbXBseSBhdm9pZHMgYW55IHBvc3NpYmxlCisgICAgICAgICAgICAjIGNvbnZlcnQgYmFjayB0byBieXRlcy4gImxhdGluLTEiIHNpbXBseSBhdm9pZHMgYW55IHBvc3NpYmxlCiAgICAgICAgICAgICAjIGZhaWx1cmVzLgogICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYucHJlX2luc3RhbGxfc2NyaXB0LCAiciIsCi0gICAgICAgICAgICAgICAgZW5jb2Rpbmc9ImxhdGluMSIpIGFzIHNjcmlwdDoKLSAgICAgICAgICAgICAgICBzY3JpcHRfZGF0YSA9IHNjcmlwdC5yZWFkKCkuZW5jb2RlKCJsYXRpbjEiKQorICAgICAgICAgICAgICAgIGVuY29kaW5nPSJsYXRpbi0xIikgYXMgc2NyaXB0OgorICAgICAgICAgICAgICAgIHNjcmlwdF9kYXRhID0gc2NyaXB0LnJlYWQoKS5lbmNvZGUoImxhdGluLTEiKQogICAgICAgICAgICAgY2ZnZGF0YSA9IGNmZ2RhdGEgKyBzY3JpcHRfZGF0YSArIGIiXG5cMCIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZW1wdHkgcHJlLWluc3RhbGwgc2NyaXB0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQppbmRleCAzNGI2MWJkLi5iMWQ5NTFlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKQEAgLTgsNiArOCw3IEBACiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0ICoKIGZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgY3VzdG9taXplX2NvbXBpbGVyLCBnZXRfcHl0aG9uX3ZlcnNpb24KK2Zyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lCiBmcm9tIGRpc3R1dGlscy5kZXBfdXRpbCBpbXBvcnQgbmV3ZXJfZ3JvdXAKIGZyb20gZGlzdHV0aWxzLmV4dGVuc2lvbiBpbXBvcnQgRXh0ZW5zaW9uCiBmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KQEAgLTE1OSw2ICsxNjAsMTEgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLmluY2x1ZGVfZGlycywgc3RyKToKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzID0gc2VsZi5pbmNsdWRlX2RpcnMuc3BsaXQob3MucGF0aHNlcCkKIAorICAgICAgICAjIElmIGluIGEgdmlydHVhbGVudiwgYWRkIGl0cyBpbmNsdWRlIGRpcmVjdG9yeQorICAgICAgICAjIElzc3VlIDE2MTE2CisgICAgICAgIGlmIHN5cy5leGVjX3ByZWZpeCAhPSBzeXMuYmFzZV9leGVjX3ByZWZpeDoKKyAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZChvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAnaW5jbHVkZScpKQorCiAgICAgICAgICMgUHV0IHRoZSBQeXRob24gInN5c3RlbSIgaW5jbHVkZSBkaXIgYXQgdGhlIGVuZCwgc28gdGhhdAogICAgICAgICAjIGFueSBsb2NhbCBpbmNsdWRlIGRpcnMgdGFrZSBwcmVjZWRlbmNlLgogICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQocHlfaW5jbHVkZSkKQEAgLTE4OSw2ICsxOTUsOCBAQAogICAgICAgICAgICAgIyBtdXN0IGJlIHRoZSAqbmF0aXZlKiBwbGF0Zm9ybS4gIEJ1dCB3ZSBkb24ndCByZWFsbHkgc3VwcG9ydAogICAgICAgICAgICAgIyBjcm9zcy1jb21waWxpbmcgdmlhIGEgYmluYXJ5IGluc3RhbGwgYW55d2F5LCBzbyB3ZSBsZXQgaXQgZ28uCiAgICAgICAgICAgICBzZWxmLmxpYnJhcnlfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ2xpYnMnKSkKKyAgICAgICAgICAgIGlmIHN5cy5iYXNlX2V4ZWNfcHJlZml4ICE9IHN5cy5wcmVmaXg6ICAjIElzc3VlIDE2MTE2CisgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgJ2xpYnMnKSkKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWc6CiAgICAgICAgICAgICAgICAgc2VsZi5idWlsZF90ZW1wID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgIkRlYnVnIikKICAgICAgICAgICAgIGVsc2U6CkBAIC0xOTYsOCArMjA0LDExIEBACiAKICAgICAgICAgICAgICMgQXBwZW5kIHRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIGluY2x1ZGUgYW5kIGxpYnJhcnkgZGlyZWN0b3JpZXMsCiAgICAgICAgICAgICAjIHRoaXMgYWxsb3dzIGRpc3R1dGlscyBvbiB3aW5kb3dzIHRvIHdvcmsgaW4gdGhlIHNvdXJjZSB0cmVlCi0gICAgICAgICAgICBzZWxmLmluY2x1ZGVfZGlycy5hcHBlbmQob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgJ1BDJykpCi0gICAgICAgICAgICBpZiBNU1ZDX1ZFUlNJT04gPT0gOToKKyAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9kaXJzLmFwcGVuZChvcy5wYXRoLmRpcm5hbWUoZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkpKQorICAgICAgICAgICAgX3N5c19ob21lID0gZ2V0YXR0cihzeXMsICdfaG9tZScsIE5vbmUpCisgICAgICAgICAgICBpZiBfc3lzX2hvbWU6CisgICAgICAgICAgICAgICAgc2VsZi5saWJyYXJ5X2RpcnMuYXBwZW5kKF9zeXNfaG9tZSkKKyAgICAgICAgICAgIGlmIE1TVkNfVkVSU0lPTiA+PSA5OgogICAgICAgICAgICAgICAgICMgVXNlIHRoZSAubGliIGZpbGVzIGZvciB0aGUgY29ycmVjdCBhcmNoaXRlY3R1cmUKICAgICAgICAgICAgICAgICBpZiBzZWxmLnBsYXRfbmFtZSA9PSAnd2luMzInOgogICAgICAgICAgICAgICAgICAgICBzdWZmaXggPSAnJwpAQCAtMjM5LDggKzI1MCw3IEBACiAgICAgICAgICMgZm9yIGV4dGVuc2lvbnMgdW5kZXIgTGludXggb3IgU29sYXJpcyB3aXRoIGEgc2hhcmVkIFB5dGhvbiBsaWJyYXJ5LAogICAgICAgICAjIFB5dGhvbidzIGxpYnJhcnkgZGlyZWN0b3J5IG11c3QgYmUgYXBwZW5kZWQgdG8gbGlicmFyeV9kaXJzCiAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUHlfRU5BQkxFX1NIQVJFRCcpCi0gICAgICAgIGlmICgoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jykgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2dudScpCi0gICAgICAgICAgICAgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3N1bm9zJykpCisgICAgICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgoJ2xpbnV4JywgJ2dudScsICdzdW5vcycpKQogICAgICAgICAgICAgYW5kIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUHlfRU5BQkxFX1NIQVJFRCcpKToKICAgICAgICAgICAgIGlmIHN5cy5leGVjdXRhYmxlLnN0YXJ0c3dpdGgob3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImJpbiIpKToKICAgICAgICAgICAgICAgICAjIGJ1aWxkaW5nIHRoaXJkIHBhcnR5IGV4dGVuc2lvbnMKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKaW5kZXggZWM0MzQ3Ny4uNGI1YjIyZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKQEAgLTEyNiwxMCArMTI2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIHNoZWJhbmcgKHshcn0pIGlzIG5vdCBkZWNvZGFibGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIHRoZSBzY3JpcHQgZW5jb2RpbmcgKHt9KSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHNoZWJhbmcsIGVuY29kaW5nKSkKLSAgICAgICAgICAgICAgICAgICAgb3V0ZiA9IG9wZW4ob3V0ZmlsZSwgIndiIikKLSAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZShzaGViYW5nKQotICAgICAgICAgICAgICAgICAgICBvdXRmLndyaXRlbGluZXMoZi5yZWFkbGluZXMoKSkKLSAgICAgICAgICAgICAgICAgICAgb3V0Zi5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihvdXRmaWxlLCAid2IiKSBhcyBvdXRmOgorICAgICAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZShzaGViYW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0Zi53cml0ZWxpbmVzKGYucmVhZGxpbmVzKCkpCiAgICAgICAgICAgICAgICAgaWYgZjoKICAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC1hbWQ2NC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xMC4wLWFtZDY0LmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmEwZGNlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC1hbWQ2NC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC5leGUgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvd2luaW5zdC0xMC4wLmV4ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmMzYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3dpbmluc3QtMTAuMC5leGUKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQppbmRleCA4MTllMWE5Li4wYmRkNTM5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL2N5Z3dpbmNjb21waWxlci5weQpAQCAtNzgsNiArNzgsOSBAQAogICAgICAgICBlbGlmIG1zY192ZXIgPT0gJzE1MDAnOgogICAgICAgICAgICAgIyBWUzIwMDggLyBNU1ZDIDkuMAogICAgICAgICAgICAgcmV0dXJuIFsnbXN2Y3I5MCddCisgICAgICAgIGVsaWYgbXNjX3ZlciA9PSAnMTYwMCc6CisgICAgICAgICAgICAjIFZTMjAxMCAvIE1TVkMgMTAuMAorICAgICAgICAgICAgcmV0dXJuIFsnbXN2Y3IxMDAnXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBNUyBDb21waWxlciB2ZXJzaW9uICVzICIgJSBtc2NfdmVyKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CmluZGV4IDE2OTAyY2EuLjMxNzY0MGMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CkBAIC0xOCw2ICsxOCw4IEBACiAjIFRoZXNlIGFyZSBuZWVkZWQgaW4gYSBjb3VwbGUgb2Ygc3BvdHMsIHNvIGp1c3QgY29tcHV0ZSB0aGVtIG9uY2UuCiBQUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCiBFWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQorQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKK0JBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQogCiAjIFBhdGggdG8gdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0LiBPbiBXaW5kb3dzIHRoZSBiaW5hcnkgbWF5CiAjIGxpdmUgaW4gcHJvamVjdC9QQ0J1aWxkOS4gIElmIHdlJ3JlIGRlYWxpbmcgd2l0aCBhbiB4NjQgV2luZG93cyBidWlsZCwKQEAgLTM5LDExICs0MSwyMSBAQAogIyBkaWZmZXJlbnQgKGhhcmQtd2lyZWQpIGRpcmVjdG9yaWVzLgogIyBTZXR1cC5sb2NhbCBpcyBhdmFpbGFibGUgZm9yIE1ha2VmaWxlIGJ1aWxkcyBpbmNsdWRpbmcgVlBBVEggYnVpbGRzLAogIyBTZXR1cC5kaXN0IGlzIGF2YWlsYWJsZSBvbiBXaW5kb3dzCi1kZWYgX3B5dGhvbl9idWlsZCgpOgorZGVmIF9pc19weXRob25fc291cmNlX2RpcihkKToKICAgICBmb3IgZm4gaW4gKCJTZXR1cC5kaXN0IiwgIlNldHVwLmxvY2FsIik6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsICJNb2R1bGVzIiwgZm4pKToKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGQsICJNb2R1bGVzIiwgZm4pKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCitfc3lzX2hvbWUgPSBnZXRhdHRyKHN5cywgJ19ob21lJywgTm9uZSkKK2lmIF9zeXNfaG9tZSBhbmQgb3MubmFtZSA9PSAnbnQnIGFuZCBcCisgICAgX3N5c19ob21lLmxvd2VyKCkuZW5kc3dpdGgoKCdwY2J1aWxkJywgJ3BjYnVpbGRcXGFtZDY0JykpOgorICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCisgICAgaWYgX3N5c19ob21lLmVuZHN3aXRoKCdwY2J1aWxkJyk6ICAgIyBtdXN0IGJlIGFtZDY0CisgICAgICAgIF9zeXNfaG9tZSA9IG9zLnBhdGguZGlybmFtZShfc3lzX2hvbWUpCitkZWYgX3B5dGhvbl9idWlsZCgpOgorICAgIGlmIF9zeXNfaG9tZToKKyAgICAgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihfc3lzX2hvbWUpCisgICAgcmV0dXJuIF9pc19weXRob25fc291cmNlX2Rpcihwcm9qZWN0X2Jhc2UpCiBweXRob25fYnVpbGQgPSBfcHl0aG9uX2J1aWxkKCkKIAogIyBDYWxjdWxhdGUgdGhlIGJ1aWxkIHF1YWxpZmllciBmbGFncyBpZiB0aGV5IGFyZSBkZWZpbmVkLiAgQWRkaW5nIHRoZSBmbGFncwpAQCAtNzQsMTEgKzg2LDExIEBACiAgICAgb3RoZXJ3aXNlLCB0aGlzIGlzIHRoZSBwYXRoIHRvIHBsYXRmb3JtLXNwZWNpZmljIGhlYWRlciBmaWxlcwogICAgIChuYW1lbHkgcHljb25maWcuaCkuCiAKLSAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLnByZWZpeCBvcgotICAgIHN5cy5leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgorICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMuYmFzZV9wcmVmaXggb3IKKyAgICBzeXMuYmFzZV9leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgogICAgICIiIgogICAgIGlmIHByZWZpeCBpcyBOb25lOgotICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKKyAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgQkFTRV9FWEVDX1BSRUZJWCBvciBCQVNFX1BSRUZJWAogICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgogICAgICAgICAgICAgIyBBc3N1bWUgdGhlIGV4ZWN1dGFibGUgaXMgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIFRoZQpAQCAtODYsMTIgKzk4LDE0IEBACiAgICAgICAgICAgICAjIHRoZSBidWlsZCBkaXJlY3RvcnkgbWF5IG5vdCBiZSB0aGUgc291cmNlIGRpcmVjdG9yeSwgd2UKICAgICAgICAgICAgICMgbXVzdCB1c2UgInNyY2RpciIgZnJvbSB0aGUgbWFrZWZpbGUgdG8gZmluZCB0aGUgIkluY2x1ZGUiCiAgICAgICAgICAgICAjIGRpcmVjdG9yeS4KLSAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHN5cy5leGVjdXRhYmxlKSkKKyAgICAgICAgICAgIGJhc2UgPSBfc3lzX2hvbWUgb3Igb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSkpCiAgICAgICAgICAgICBpZiBwbGF0X3NwZWNpZmljOgogICAgICAgICAgICAgICAgIHJldHVybiBiYXNlCisgICAgICAgICAgICBpZiBfc3lzX2hvbWU6CisgICAgICAgICAgICAgICAgaW5jZGlyID0gb3MucGF0aC5qb2luKF9zeXNfaG9tZSwgZ2V0X2NvbmZpZ192YXIoJ0FTVF9IX0RJUicpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpbmNkaXIgPSBvcy5wYXRoLmpvaW4oZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpLCAnSW5jbHVkZScpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgoaW5jZGlyKQorICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybXBhdGgoaW5jZGlyKQogICAgICAgICBweXRob25fZGlyID0gJ3B5dGhvbicgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSArIGJ1aWxkX2ZsYWdzCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ocHJlZml4LCAiaW5jbHVkZSIsIHB5dGhvbl9kaXIpCiAgICAgZWxpZiBvcy5uYW1lID09ICJudCI6CkBAIC0xMTUsMTEgKzEyOSwxNCBAQAogICAgIGNvbnRhaW5pbmcgc3RhbmRhcmQgUHl0aG9uIGxpYnJhcnkgbW9kdWxlczsgb3RoZXJ3aXNlLCByZXR1cm4gdGhlCiAgICAgZGlyZWN0b3J5IGZvciBzaXRlLXNwZWNpZmljIG1vZHVsZXMuCiAKLSAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLnByZWZpeCBvcgotICAgIHN5cy5leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgorICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMuYmFzZV9wcmVmaXggb3IKKyAgICBzeXMuYmFzZV9leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgogICAgICIiIgogICAgIGlmIHByZWZpeCBpcyBOb25lOgotICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKKyAgICAgICAgaWYgc3RhbmRhcmRfbGliOgorICAgICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgQkFTRV9FWEVDX1BSRUZJWCBvciBCQVNFX1BSRUZJWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCiAKICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgIGxpYnB5dGhvbiA9IG9zLnBhdGguam9pbihwcmVmaXgsCkBAIC0xNDYsNyArMTYzLDcgQEAKICAgICAgICAgICAgICJJIGRvbid0IGtub3cgd2hlcmUgUHl0aG9uIGluc3RhbGxzIGl0cyBsaWJyYXJ5ICIKICAgICAgICAgICAgICJvbiBwbGF0Zm9ybSAnJXMnIiAlIG9zLm5hbWUpCiAKLV9VU0VfQ0xBTkcgPSBOb25lCisKIAogZGVmIGN1c3RvbWl6ZV9jb21waWxlcihjb21waWxlcik6CiAgICAgIiIiRG8gYW55IHBsYXRmb3JtLXNwZWNpZmljIGN1c3RvbWl6YXRpb24gb2YgYSBDQ29tcGlsZXIgaW5zdGFuY2UuCkBAIC0xNTUsNDIgKzE3MiwyOCBAQAogICAgIHZhcmllcyBhY3Jvc3MgVW5pY2VzIGFuZCBpcyBzdG9yZWQgaW4gUHl0aG9uJ3MgTWFrZWZpbGUuCiAgICAgIiIiCiAgICAgaWYgY29tcGlsZXIuY29tcGlsZXJfdHlwZSA9PSAidW5peCI6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgICMgUGVyZm9ybSBmaXJzdC10aW1lIGN1c3RvbWl6YXRpb24gb2YgY29tcGlsZXItcmVsYXRlZAorICAgICAgICAgICAgIyBjb25maWcgdmFycyBvbiBPUyBYIG5vdyB0aGF0IHdlIGtub3cgd2UgbmVlZCBhIGNvbXBpbGVyLgorICAgICAgICAgICAgIyBUaGlzIGlzIHByaW1hcmlseSB0byBzdXBwb3J0IFB5dGhvbnMgZnJvbSBiaW5hcnkKKyAgICAgICAgICAgICMgaW5zdGFsbGVycy4gIFRoZSBraW5kIGFuZCBwYXRocyB0byBidWlsZCB0b29scyBvbgorICAgICAgICAgICAgIyB0aGUgdXNlciBzeXN0ZW0gbWF5IHZhcnkgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICMgdGhhdCBQeXRob24gaXRzZWxmIHdhcyBidWlsdCBvbi4gIEFsc28gdGhlIHVzZXIgT1MKKyAgICAgICAgICAgICMgdmVyc2lvbiBhbmQgYnVpbGQgdG9vbHMgbWF5IG5vdCBzdXBwb3J0IHRoZSBzYW1lIHNldAorICAgICAgICAgICAgIyBvZiBDUFUgYXJjaGl0ZWN0dXJlcyBmb3IgdW5pdmVyc2FsIGJ1aWxkcy4KKyAgICAgICAgICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKKyAgICAgICAgICAgIGlmIG5vdCBfY29uZmlnX3ZhcnMuZ2V0KCdDVVNUT01JWkVEX09TWF9DT01QSUxFUicsICcnKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0CisgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0LmN1c3RvbWl6ZV9jb21waWxlcihfY29uZmlnX3ZhcnMpCisgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzWydDVVNUT01JWkVEX09TWF9DT01QSUxFUiddID0gJ1RydWUnCisKICAgICAgICAgKGNjLCBjeHgsIG9wdCwgY2ZsYWdzLCBjY3NoYXJlZCwgbGRzaGFyZWQsIHNvX2V4dCwgYXIsIGFyX2ZsYWdzKSA9IFwKICAgICAgICAgICAgIGdldF9jb25maWdfdmFycygnQ0MnLCAnQ1hYJywgJ09QVCcsICdDRkxBR1MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDQ1NIQVJFRCcsICdMRFNIQVJFRCcsICdTTycsICdBUicsICdBUkZMQUdTJykKIAogICAgICAgICBuZXdjYyA9IE5vbmUKICAgICAgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgbmV3Y2MgPSBvcy5lbnZpcm9uWydDQyddCi0gICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBjYyA9PSAnZ2NjLTQuMic6Ci0gICAgICAgICAgICAjIElzc3VlICMxMzU5MDoKLSAgICAgICAgICAgICMgICAgICAgU2luY2UgQXBwbGUgcmVtb3ZlZCBnY2MtNC4yIGluIFhjb2RlIDQuMiwgd2UgY2FuIG5vCi0gICAgICAgICAgICAjICAgICAgIGxvbmdlciBhc3N1bWUgaXQgaXMgYXZhaWxhYmxlIGZvciBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcy4KLSAgICAgICAgICAgICMgICAgICAgSWYgUHl0aG9uIHdhcyBidWlsdCB3aXRoIGdjYy00LjIsIGNoZWNrIGZpcnN0IHRvIHNlZSBpZgotICAgICAgICAgICAgIyAgICAgICBpdCBpcyBhdmFpbGFibGUgb24gdGhpcyBzeXN0ZW07IGlmIG5vdCwgdHJ5IHRvIHVzZSBjbGFuZwotICAgICAgICAgICAgIyAgICAgICBpbnN0ZWFkIHVubGVzcyB0aGUgY2FsbGVyIGV4cGxpY2l0bHkgc2V0IENDLgotICAgICAgICAgICAgZ2xvYmFsIF9VU0VfQ0xBTkcKLSAgICAgICAgICAgIGlmIF9VU0VfQ0xBTkcgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgbG9nCi0gICAgICAgICAgICAgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQotICAgICAgICAgICAgICAgIHAgPSBQb3BlbigiISB0eXBlIGdjYy00LjIgJiYgdHlwZSBjbGFuZyAmJiBleGl0IDIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCi0gICAgICAgICAgICAgICAgcC53YWl0KCkKLSAgICAgICAgICAgICAgICBpZiBwLnJldHVybmNvZGUgPT0gMjoKLSAgICAgICAgICAgICAgICAgICAgX1VTRV9DTEFORyA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgbG9nLndhcm4oImdjYy00LjIgbm90IGZvdW5kLCB1c2luZyBjbGFuZyBpbnN0ZWFkIikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBfVVNFX0NMQU5HID0gRmFsc2UKLSAgICAgICAgICAgIGlmIF9VU0VfQ0xBTkc6Ci0gICAgICAgICAgICAgICAgbmV3Y2MgPSAnY2xhbmcnCi0gICAgICAgIGlmIG5ld2NjOgotICAgICAgICAgICAgIyBPbiBPUyBYLCBpZiBDQyBpcyBvdmVycmlkZGVuLCB1c2UgdGhhdCBhcyB0aGUgZGVmYXVsdAotICAgICAgICAgICAgIyAgICAgICBjb21tYW5kIGZvciBMRFNIQVJFRCBhcyB3ZWxsCi0gICAgICAgICAgICBpZiAoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCi0gICAgICAgICAgICAgICAgICAgIGFuZCAnTERTSEFSRUQnIG5vdCBpbiBvcy5lbnZpcm9uCi0gICAgICAgICAgICAgICAgICAgIGFuZCBsZHNoYXJlZC5zdGFydHN3aXRoKGNjKSk6Ci0gICAgICAgICAgICAgICAgbGRzaGFyZWQgPSBuZXdjYyArIGxkc2hhcmVkW2xlbihjYyk6XQotICAgICAgICAgICAgY2MgPSBuZXdjYworICAgICAgICAgICAgY2MgPSBvcy5lbnZpcm9uWydDQyddCiAgICAgICAgIGlmICdDWFgnIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBjeHggPSBvcy5lbnZpcm9uWydDWFgnXQogICAgICAgICBpZiAnTERTSEFSRUQnIGluIG9zLmVudmlyb246CkBAIC0yMzIsOSArMjM1LDkgQEAKICAgICAiIiJSZXR1cm4gZnVsbCBwYXRobmFtZSBvZiBpbnN0YWxsZWQgcHljb25maWcuaCBmaWxlLiIiIgogICAgIGlmIHB5dGhvbl9idWlsZDoKICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgotICAgICAgICAgICAgaW5jX2RpciA9IG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsICJQQyIpCisgICAgICAgICAgICBpbmNfZGlyID0gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBwcm9qZWN0X2Jhc2UsICJQQyIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbmNfZGlyID0gcHJvamVjdF9iYXNlCisgICAgICAgICAgICBpbmNfZGlyID0gX3N5c19ob21lIG9yIHByb2plY3RfYmFzZQogICAgIGVsc2U6CiAgICAgICAgIGluY19kaXIgPSBnZXRfcHl0aG9uX2luYyhwbGF0X3NwZWNpZmljPTEpCiAgICAgaWYgZ2V0X3B5dGhvbl92ZXJzaW9uKCkgPCAnMi4yJzoKQEAgLTI0OCw3ICsyNTEsOCBAQAogZGVmIGdldF9tYWtlZmlsZV9maWxlbmFtZSgpOgogICAgICIiIlJldHVybiBmdWxsIHBhdGhuYW1lIG9mIGluc3RhbGxlZCBNYWtlZmlsZSBmcm9tIHRoZSBQeXRob24gYnVpbGQuIiIiCiAgICAgaWYgcHl0aG9uX2J1aWxkOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksICJNYWtlZmlsZSIpCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIG9zLnBhdGguZGlybmFtZShzeXMuZXhlY3V0YWJsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFrZWZpbGUiKQogICAgIGxpYl9kaXIgPSBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0xKQogICAgIGNvbmZpZ19maWxlID0gJ2NvbmZpZy17fXt9Jy5mb3JtYXQoZ2V0X3B5dGhvbl92ZXJzaW9uKCksIGJ1aWxkX2ZsYWdzKQogICAgIHJldHVybiBvcy5wYXRoLmpvaW4obGliX2RpciwgY29uZmlnX2ZpbGUsICdNYWtlZmlsZScpCkBAIC01MTAsNyArNTE0LDcgQEAKICAgICB2YXJpYWJsZXMgcmVsZXZhbnQgZm9yIHRoZSBjdXJyZW50IHBsYXRmb3JtLiAgR2VuZXJhbGx5IHRoaXMgaW5jbHVkZXMKICAgICBldmVyeXRoaW5nIG5lZWRlZCB0byBidWlsZCBleHRlbnNpb25zIGFuZCBpbnN0YWxsIGJvdGggcHVyZSBtb2R1bGVzIGFuZAogICAgIGV4dGVuc2lvbnMuICBPbiBVbml4LCB0aGlzIG1lYW5zIGV2ZXJ5IHZhcmlhYmxlIGRlZmluZWQgaW4gUHl0aG9uJ3MKLSAgICBpbnN0YWxsZWQgTWFrZWZpbGU7IG9uIFdpbmRvd3MgYW5kIE1hYyBPUyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KKyAgICBpbnN0YWxsZWQgTWFrZWZpbGU7IG9uIFdpbmRvd3MgaXQncyBhIG11Y2ggc21hbGxlciBzZXQuCiAKICAgICBXaXRoIGFyZ3VtZW50cywgcmV0dXJuIGEgbGlzdCBvZiB2YWx1ZXMgdGhhdCByZXN1bHQgZnJvbSBsb29raW5nIHVwCiAgICAgZWFjaCBhcmd1bWVudCBpbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBkaWN0aW9uYXJ5LgpAQCAtNTI5LDYgKzUzMywyMyBAQAogICAgICAgICBfY29uZmlnX3ZhcnNbJ3ByZWZpeCddID0gUFJFRklYCiAgICAgICAgIF9jb25maWdfdmFyc1snZXhlY19wcmVmaXgnXSA9IEVYRUNfUFJFRklYCiAKKyAgICAgICAgIyBBbHdheXMgY29udmVydCBzcmNkaXIgdG8gYW4gYWJzb2x1dGUgcGF0aAorICAgICAgICBzcmNkaXIgPSBfY29uZmlnX3ZhcnMuZ2V0KCdzcmNkaXInLCBwcm9qZWN0X2Jhc2UpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIGlmIHB5dGhvbl9idWlsZDoKKyAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKKyAgICAgICAgICAgICAgICAjIHRoZW4gaXQgc2hvdWxkIGJlIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAjIGNvbnRhaW5pbmcgTWFrZWZpbGUuCisgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgc3JjZGlyKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIHNyY2RpciBpcyBub3QgbWVhbmluZ2Z1bCBzaW5jZSB0aGUgaW5zdGFsbGF0aW9uIGlzCisgICAgICAgICAgICAgICAgIyBzcHJlYWQgYWJvdXQgdGhlIGZpbGVzeXN0ZW0uICBXZSBjaG9vc2UgdGhlCisgICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgTWFrZWZpbGUgc2luY2Ugd2Uga25vdyBpdAorICAgICAgICAgICAgICAgICMgZXhpc3RzLgorICAgICAgICAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgX2NvbmZpZ192YXJzWydzcmNkaXInXSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKHNyY2RpcikpCisKICAgICAgICAgIyBDb252ZXJ0IHNyY2RpciBpbnRvIGFuIGFic29sdXRlIHBhdGggaWYgaXQgYXBwZWFycyBuZWNlc3NhcnkuCiAgICAgICAgICMgTm9ybWFsbHkgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIGJ1aWxkIGRpcmVjdG9yeS4gIEhvd2V2ZXIsIGR1cmluZwogICAgICAgICAjIHRlc3RpbmcsIGZvciBleGFtcGxlLCB3ZSBtaWdodCBiZSBydW5uaW5nIGEgbm9uLWluc3RhbGxlZCBweXRob24KQEAgLTU0Myw0MyArNTY0LDExIEBACiAgICAgICAgICAgICAgICAgc3JjZGlyID0gb3MucGF0aC5qb2luKGJhc2UsIF9jb25maWdfdmFyc1snc3JjZGlyJ10pCiAgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzWydzcmNkaXInXSA9IG9zLnBhdGgubm9ybXBhdGgoc3JjZGlyKQogCisgICAgICAgICMgT1MgWCBwbGF0Zm9ybXMgcmVxdWlyZSBzcGVjaWFsIGN1c3RvbWl6YXRpb24gdG8gaGFuZGxlCisgICAgICAgICMgbXVsdGktYXJjaGl0ZWN0dXJlLCBtdWx0aS1vcy12ZXJzaW9uIGluc3RhbGxlcnMKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBvcy51bmFtZSgpWzJdICMgS2VybmVsIHZlcnNpb24gKDguNC4zKQotICAgICAgICAgICAgbWFqb3JfdmVyc2lvbiA9IGludChrZXJuZWxfdmVyc2lvbi5zcGxpdCgnLicpWzBdKQotCi0gICAgICAgICAgICBpZiBtYWpvcl92ZXJzaW9uIDwgODoKLSAgICAgICAgICAgICAgICAjIE9uIE1hYyBPUyBYIGJlZm9yZSAxMC40LCBjaGVjayBpZiAtYXJjaCBhbmQgLWlzeXNyb290Ci0gICAgICAgICAgICAgICAgIyBhcmUgaW4gQ0ZMQUdTIG9yIExERkxBR1MgYW5kIHJlbW92ZSB0aGVtIGlmIHRoZXkgYXJlLgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIG9uIGEgMTAuMyBzeXN0ZW0KLSAgICAgICAgICAgICAgICAjIHVzaW5nIGEgdW5pdmVyc2FsIGJ1aWxkIG9mIHB5dGhvbi4KLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6Ci0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2tleV0KLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1pc3lzcm9vdCBbXiBcdF0qJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgX2NvbmZpZ192YXJzW2tleV0gPSBmbGFncwotCi0gICAgICAgICAgICBlbHNlOgotCi0gICAgICAgICAgICAgICAgIyBBbGxvdyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgYXJjaGl0ZWN0dXJlIGZsYWdzIHVzaW5nCi0gICAgICAgICAgICAgICAgIyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICAjIE5PVEU6IFRoaXMgbmFtZSB3YXMgaW50cm9kdWNlZCBieSBBcHBsZSBpbiBPU1ggMTAuNSBhbmQKLSAgICAgICAgICAgICAgICAjIGlzIHVzZWQgYnkgc2V2ZXJhbCBzY3JpcHRpbmcgbGFuZ3VhZ2VzIGRpc3RyaWJ1dGVkIHdpdGgKLSAgICAgICAgICAgICAgICAjIHRoYXQgT1MgcmVsZWFzZS4KLQotICAgICAgICAgICAgICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgICAgIGFyY2ggPSBvcy5lbnZpcm9uWydBUkNIRkxBR1MnXQotICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCi0gICAgICAgICAgICAgICAgICAgICAgICBfY29uZmlnX3ZhcnNba2V5XSA9IGZsYWdzCisgICAgICAgICAgICBpbXBvcnQgX29zeF9zdXBwb3J0CisgICAgICAgICAgICBfb3N4X3N1cHBvcnQuY3VzdG9taXplX2NvbmZpZ192YXJzKF9jb25maWdfdmFycykKIAogICAgIGlmIGFyZ3M6CiAgICAgICAgIHZhbHMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9hcmNoaXZlX3V0aWwucHkKaW5kZXggOGVkZmFiNC4uMWFmZGQ0NiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2FyY2hpdmVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYXJjaGl2ZV91dGlsLnB5CkBAIC0xLDYgKzEsOCBAQAorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuYXJjaGl2ZV91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGltcG9ydCB0YXJmaWxlCiBmcm9tIG9zLnBhdGggaW1wb3J0IHNwbGl0ZHJpdmUKIGltcG9ydCB3YXJuaW5ncwpAQCAtMjUsNiArMjcsMTggQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBaTElCX1NVUFBPUlQgPSBGYWxzZQogCitkZWYgY2FuX2ZzX2VuY29kZShmaWxlbmFtZSk6CisgICAgIiIiCisgICAgUmV0dXJuIFRydWUgaWYgdGhlIGZpbGVuYW1lIGNhbiBiZSBzYXZlZCBpbiB0aGUgZmlsZSBzeXN0ZW0uCisgICAgIiIiCisgICAgaWYgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lczoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKwogCiBjbGFzcyBBcmNoaXZlVXRpbFRlc3RDYXNlKHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuTG9nZ2luZ1NpbGVuY2VyLApAQCAtMzIsNiArNDYsMjggQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfbWFrZV90YXJiYWxsKHNlbGYpOgorICAgICAgICBzZWxmLl9tYWtlX3RhcmJhbGwoJ2FyY2hpdmUnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoWkxJQl9TVVBQT1JULCAnTmVlZCB6bGliIHN1cHBvcnQgdG8gcnVuJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fZnNfZW5jb2RlKCfDpXJjaGl2JyksCisgICAgICAgICdGaWxlIHN5c3RlbSBjYW5ub3QgaGFuZGxlIHRoaXMgZmlsZW5hbWUnKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9sYXRpbjEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBNaXJyb3IgdGVzdF9tYWtlX3RhcmJhbGwsIGV4Y2VwdCBmaWxlbmFtZSBjb250YWlucyBsYXRpbiBjaGFyYWN0ZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fbWFrZV90YXJiYWxsKCfDpXJjaGl2JykgIyBub3RlIHRoaXMgaXNuJ3QgYSByZWFsIHdvcmQKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpMSUJfU1VQUE9SVCwgJ05lZWQgemxpYiBzdXBwb3J0IHRvIHJ1bicpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoY2FuX2ZzX2VuY29kZSgn44Gu44Ki44O844Kr44Kk44OWJyksCisgICAgICAgICdGaWxlIHN5c3RlbSBjYW5ub3QgaGFuZGxlIHRoaXMgZmlsZW5hbWUnKQorICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbF9leHRlbmRlZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE1pcnJvciB0ZXN0X21ha2VfdGFyYmFsbCwgZXhjZXB0IGZpbGVuYW1lIGNvbnRhaW5zIGV4dGVuZGVkCisgICAgICAgIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgbGF0aW4gY2hhcnNldC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX21ha2VfdGFyYmFsbCgn44Gu44Ki44O844Kr44Kk44OWJykgIyBqYXBhbmVzZSBmb3IgYXJjaGl2ZQorCisgICAgZGVmIF9tYWtlX3RhcmJhbGwoc2VsZiwgdGFyZ2V0X25hbWUpOgogICAgICAgICAjIGNyZWF0aW5nIHNvbWV0aGluZyB0byB0YXIKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsICdmaWxlMSddLCAneHh4JykKQEAgLTQzLDcgKzc5LDcgQEAKICAgICAgICAgdW5pdHRlc3Quc2tpcFVubGVzcyhzcGxpdGRyaXZlKHRtcGRpcilbMF0gPT0gc3BsaXRkcml2ZSh0bXBkaXIyKVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU291cmNlIGFuZCB0YXJnZXQgc2hvdWxkIGJlIG9uIHNhbWUgZHJpdmUiKQogCi0gICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCB0YXJnZXRfbmFtZSkKIAogICAgICAgICAjIHdvcmtpbmcgd2l0aCByZWxhdGl2ZSBwYXRocyB0byBhdm9pZCB0YXIgd2FybmluZ3MKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCkBAIC01OCw3ICs5NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKIAogICAgICAgICAjIHRyeWluZyBhbiB1bmNvbXByZXNzZWQgb25lCi0gICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCisgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCB0YXJnZXRfbmFtZSkKICAgICAgICAgb2xkX2RpciA9IG9zLmdldGN3ZCgpCiAgICAgICAgIG9zLmNoZGlyKHRtcGRpcikKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKaW5kZXggYWI3YTFiZi4uYjA5MGI3OSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CkBAIC0yOCw2ICsyOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLmVuY29kZSgiVVRGLTgiKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5cy5leGVjdXRhYmxlIGlzIG5vdCBlbmNvZGFibGUgdG8gVVRGLTgiKQorCiAgICAgICAgIHN1cGVyKEJ1aWxkUnBtVGVzdENhc2UsIHNlbGYpLnNldFVwKCkKICAgICAgICAgc2VsZi5vbGRfbG9jYXRpb24gPSBvcy5nZXRjd2QoKQogICAgICAgICBzZWxmLm9sZF9zeXNfYXJndiA9IHN5cy5hcmd2LCBzeXMuYXJndls6XQpAQCAtNDIsNyArNDcsNyBAQAogCiAgICAgICAgICMgWFhYIEkgYW0gdW5hYmxlIHlldCB0byBtYWtlIHRoaXMgdGVzdCB3b3JrIHdpdGhvdXQKICAgICAgICAgIyBzcHVyaW91cyBzZHRvdXQvc3RkZXJyIG91dHB1dCB1bmRlciBNYWMgT1MgWAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2xpbnV4Mic6CisgICAgICAgIGlmIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgICMgdGhpcyB0ZXN0IHdpbGwgcnVuIG9ubHkgaWYgdGhlIHJwbSBjb21tYW5kcyBhcmUgZm91bmQKQEAgLTg2LDcgKzkxLDcgQEAKIAogICAgICAgICAjIFhYWCBJIGFtIHVuYWJsZSB5ZXQgdG8gbWFrZSB0aGlzIHRlc3Qgd29yayB3aXRob3V0CiAgICAgICAgICMgc3B1cmlvdXMgc2R0b3V0L3N0ZGVyciBvdXRwdXQgdW5kZXIgTWFjIE9TIFgKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICdsaW51eDInOgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4Jyk6CiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNTMzMTY0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBmYmUyNmJmLi44MjZlYTQyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zeXNjb25maWcucHkKQEAgLTUzLDYgKzUzLDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKGN2YXJzLCBkaWN0KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN2YXJzKQogCisgICAgZGVmIHRlc3Rfc3JjZGlyKHNlbGYpOgorICAgICAgICAjIFNlZSBJc3N1ZXMgIzE1MzIyLCAjMTUzNjQuCisgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKworICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2FicyhzcmNkaXIpLCBzcmNkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHNyY2RpciksIHNyY2RpcikKKworICAgICAgICBpZiBzeXNjb25maWcucHl0aG9uX2J1aWxkOgorICAgICAgICAgICAgIyBUaGUgcHl0aG9uIGV4ZWN1dGFibGUgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBzbyBzcmNkaXIKKyAgICAgICAgICAgICMgc2hvdWxkIGJlIGEgZnVsbCBzb3VyY2UgY2hlY2tvdXQuCisgICAgICAgICAgICBQeXRob25faCA9IG9zLnBhdGguam9pbihzcmNkaXIsICdJbmNsdWRlJywgJ1B5dGhvbi5oJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhQeXRob25faCksIFB5dGhvbl9oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5c2NvbmZpZy5faXNfcHl0aG9uX3NvdXJjZV9kaXIoc3JjZGlyKSkKKyAgICAgICAgZWxpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZGlybmFtZShzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjZGlyKQorCisgICAgZGVmIHRlc3Rfc3JjZGlyX2luZGVwZW5kZW50X29mX2N3ZChzZWxmKToKKyAgICAgICAgIyBzcmNkaXIgc2hvdWxkIGJlIGluZGVwZW5kZW50IG9mIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5CisgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KKyAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcignLi4nKQorICAgICAgICAgICAgc3JjZGlyMiA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNkaXIsIHNyY2RpcjIpCisKICAgICBkZWYgdGVzdF9jdXN0b21pemVfY29tcGlsZXIoc2VsZik6CiAKICAgICAgICAgIyBub3QgdGVzdGluZyBpZiBkZWZhdWx0IGNvbXBpbGVyIGlzIG5vdCB1bml4CkBAIC0xMDIsNyArMTMxLDI3IEBACiAgICAgICAgIGltcG9ydCBzeXNjb25maWcgYXMgZ2xvYmFsX3N5c2NvbmZpZwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NGTEFHUycpLCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NGTEFHUycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xERkxBR1MnKSwgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMREZMQUdTJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERTSEFSRUQnKSxzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0xEU0hBUkVEJykpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ1VTVE9NSVpFRF9PU1hfQ09NUElMRVInKSwnY29tcGlsZXIgZmxhZ3MgY3VzdG9taXplZCcpCisgICAgZGVmIHRlc3Rfc3lzY29uZmlnX2NvbXBpbGVyX3ZhcnMoc2VsZik6CisgICAgICAgICMgT24gT1MgWCwgYmluYXJ5IGluc3RhbGxlcnMgc3VwcG9ydCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkaW5nIG9uCisgICAgICAgICMgdmFyaW91cyBsZXZlbHMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2l0aCBkaWZmZXJpbmcgWGNvZGUKKyAgICAgICAgIyBjb25maWd1cmF0aW9ucy4gIFRoaXMgcmVxdWlyZXMgY3VzdG9taXphdGlvbiBvZiBzb21lIG9mIHRoZQorICAgICAgICAjIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyB0byBzdWl0IHRoZSBlbnZpcm9ubWVudCBvbgorICAgICAgICAjIHRoZSBpbnN0YWxsZWQgbWFjaGluZS4gIFNvbWUgb2YgdGhlc2UgY3VzdG9taXphdGlvbnMgbWF5IHJlcXVpcmUKKyAgICAgICAgIyBydW5uaW5nIGV4dGVybmFsIHByb2dyYW1zIGFuZCwgc28sIGFyZSBkZWZlcnJlZCB1bnRpbCBuZWVkZWQgYnkKKyAgICAgICAgIyB0aGUgZmlyc3QgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZC4gIFdpdGggUHl0aG9uIDMuMywgb25seQorICAgICAgICAjIHRoZSBEaXN0dXRpbHMgdmVyc2lvbiBvZiBzeXNjb25maWcgaXMgdXNlZCBmb3IgZXh0ZW5zaW9uIG1vZHVsZQorICAgICAgICAjIGJ1aWxkcywgd2hpY2ggaGFwcGVucyBlYXJsaWVyIGluIHRoZSBEaXN0dXRpbHMgdGVzdHMuICBUaGlzIG1heQorICAgICAgICAjIGNhdXNlIHRoZSBmb2xsb3dpbmcgdGVzdHMgdG8gZmFpbCBzaW5jZSBubyB0ZXN0cyBoYXZlIGNhdXNlZAorICAgICAgICAjIHRoZSBnbG9iYWwgdmVyc2lvbiBvZiBzeXNjb25maWcgdG8gY2FsbCB0aGUgY3VzdG9taXphdGlvbiB5ZXQuCisgICAgICAgICMgVGhlIHNvbHV0aW9uIGZvciBub3cgaXMgdG8gc2ltcGx5IHNraXAgdGhpcyB0ZXN0IGluIHRoaXMgY2FzZS4KKyAgICAgICAgIyBUaGUgbG9uZ2VyLXRlcm0gc29sdXRpb24gaXMgdG8gb25seSBoYXZlIG9uZSB2ZXJzaW9uIG9mIHN5c2NvbmZpZy4KKworICAgICAgICBpbXBvcnQgc3lzY29uZmlnIGFzIGdsb2JhbF9zeXNjb25maWcKKyAgICAgICAgaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDVVNUT01JWkVEX09TWF9DT01QSUxFUicpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYmFsX3N5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTERTSEFSRUQnKSwgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMRFNIQVJFRCcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9zeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJyksIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ0MnKSkKIAogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91dGlsLnB5CmluZGV4IDFhMDZkNGMuLmVhYzliNTEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91dGlsLnB5CkBAIC0xMyw2ICsxMyw3IEBACiBmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFycwogZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBfb3N4X3N1cHBvcnQKIAogY2xhc3MgVXRpbFRlc3RDYXNlKHN1cHBvcnQuRW52aXJvbkd1YXJkLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTkyLDYgKzkzLDcgQEAKICAgICAgICAgICAgICAgICAgICAoJ0RhcndpbiBLZXJuZWwgVmVyc2lvbiA4LjExLjE6ICcKICAgICAgICAgICAgICAgICAgICAgJ1dlZCBPY3QgMTAgMTg6MjM6MjggUERUIDIwMDc7ICcKICAgICAgICAgICAgICAgICAgICAgJ3Jvb3Q6eG51LTc5Mi4yNS4yMH4xL1JFTEVBU0VfSTM4NicpLCAnaTM4NicpKQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJwogCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWZuby1zdHJpY3QtYWxpYXNpbmcgLUROREVCVUcgLWcgJwpAQCAtMTA1LDYgKzEwNyw3IEBACiAgICAgICAgICAgICBzeXMubWF4c2l6ZSA9IGN1cnNpemUKIAogICAgICAgICAjIG1hY2Jvb2sgd2l0aCBmYXQgYmluYXJpZXMgKGZhdCwgdW5pdmVyc2FsIG9yIGZhdDY0KQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC40JwogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwpAQCAtMTEzLDEwICsxMTYsMTIgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0JykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIG9zLmVudmlyb25bJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCddID0gJzEwLjEnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X3BsYXRmb3JtKCksICdtYWNvc3gtMTAuNC1mYXQnKQogCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTEyNCwxOCArMTI5LDIxIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWludGVsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0MycpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LXVuaXZlcnNhbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGM2NCAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0xNDQsNiArMTUyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdDY0JykKIAogICAgICAgICBmb3IgYXJjaCBpbiAoJ3BwYycsICdpMzg2JywgJ3g4Nl82NCcsICdwcGM2NCcpOgorICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKClbJ0NGTEFHUyddID0gKCctYXJjaCAlcyAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrICAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQppbmRleCBjNzBhM2NjLi4wOTRhMmYwIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3VuaXhjY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CkBAIC0yMyw2ICsyMyw5IEBACiAgICAgIERpc3R1dGlsc0V4ZWNFcnJvciwgQ29tcGlsZUVycm9yLCBMaWJFcnJvciwgTGlua0Vycm9yCiBmcm9tIGRpc3R1dGlscyBpbXBvcnQgbG9nCiAKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICBpbXBvcnQgX29zeF9zdXBwb3J0CisKICMgWFhYIFRoaW5ncyBub3QgY3VycmVudGx5IGhhbmRsZWQ6CiAjICAgKiBvcHRpbWl6YXRpb24vZGVidWcvd2FybmluZyBmbGFnczsgd2UganVzdCB1c2Ugd2hhdGV2ZXIncyBpbiBQeXRob24ncwogIyAgICAgTWFrZWZpbGUgYW5kIGxpdmUgd2l0aCBpdC4gIElzIHRoaXMgYWRlcXVhdGU/ICBJZiBub3QsIHdlIG1pZ2h0CkBAIC0zOCw2OCArNDEsNiBAQAogIyAgICAgc2hvdWxkIGp1c3QgaGFwcGlseSBzdHVmZiB0aGVtIGludG8gdGhlIHByZXByb2Nlc3Nvci9jb21waWxlci9saW5rZXIKICMgICAgIG9wdGlvbnMgYW5kIGNhcnJ5IG9uLgogCi1kZWYgX2Rhcndpbl9jb21waWxlcl9maXh1cChjb21waWxlcl9zbywgY2NfYXJncyk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB3aWxsIHN0cmlwICctaXN5c3Jvb3QgUEFUSCcgYW5kICctYXJjaCBBUkNIJyBmcm9tIHRoZQotICAgIGNvbXBpbGUgZmxhZ3MgaWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCBvbmUgdGhlbSBpbiBleHRyYV9jb21waWxlX2ZsYWdzLgotCi0gICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSAnLWFyY2ggQVJDSCcgYWRkcyBhbm90aGVyIGFyY2hpdGVjdHVyZSB0byB0aGUKLSAgICBidWlsZCwgd2l0aG91dCBhIHdheSB0byByZW1vdmUgYW4gYXJjaGl0ZWN0dXJlLiBGdXJ0aGVybW9yZSBHQ0Mgd2lsbAotICAgIGJhcmYgaWYgbXVsdGlwbGUgJy1pc3lzcm9vdCcgYXJndW1lbnRzIGFyZSBwcmVzZW50LgotICAgICIiIgotICAgIHN0cmlwQXJjaCA9IHN0cmlwU3lzcm9vdCA9IEZhbHNlCi0KLSAgICBjb21waWxlcl9zbyA9IGxpc3QoY29tcGlsZXJfc28pCi0gICAga2VybmVsX3ZlcnNpb24gPSBvcy51bmFtZSgpWzJdICMgOC40LjMKLSAgICBtYWpvcl92ZXJzaW9uID0gaW50KGtlcm5lbF92ZXJzaW9uLnNwbGl0KCcuJylbMF0pCi0KLSAgICBpZiBtYWpvcl92ZXJzaW9uIDwgODoKLSAgICAgICAgIyBPU1ggYmVmb3JlIDEwLjQuMCwgdGhlc2UgZG9uJ3Qgc3VwcG9ydCAtYXJjaCBhbmQgLWlzeXNyb290IGF0Ci0gICAgICAgICMgYWxsLgotICAgICAgICBzdHJpcEFyY2ggPSBzdHJpcFN5c3Jvb3QgPSBUcnVlCi0gICAgZWxzZToKLSAgICAgICAgc3RyaXBBcmNoID0gJy1hcmNoJyBpbiBjY19hcmdzCi0gICAgICAgIHN0cmlwU3lzcm9vdCA9ICctaXN5c3Jvb3QnIGluIGNjX2FyZ3MKLQotICAgIGlmIHN0cmlwQXJjaCBvciAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGluZGV4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1hcmNoJykKLSAgICAgICAgICAgICAgICAjIFN0cmlwIHRoaXMgYXJndW1lbnQgYW5kIHRoZSBuZXh0IG9uZToKLSAgICAgICAgICAgICAgICBkZWwgY29tcGlsZXJfc29baW5kZXg6aW5kZXgrMl0KLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICBpZiAnQVJDSEZMQUdTJyBpbiBvcy5lbnZpcm9uIGFuZCBub3Qgc3RyaXBBcmNoOgotICAgICAgICAjIFVzZXIgc3BlY2lmaWVkIGRpZmZlcmVudCAtYXJjaCBmbGFncyBpbiB0aGUgZW52aXJvbiwKLSAgICAgICAgIyBzZWUgYWxzbyBkaXN0dXRpbHMuc3lzY29uZmlnCi0gICAgICAgIGNvbXBpbGVyX3NvID0gY29tcGlsZXJfc28gKyBvcy5lbnZpcm9uWydBUkNIRkxBR1MnXS5zcGxpdCgpCi0KLSAgICBpZiBzdHJpcFN5c3Jvb3Q6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGluZGV4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1pc3lzcm9vdCcpCi0gICAgICAgICAgICAjIFN0cmlwIHRoaXMgYXJndW1lbnQgYW5kIHRoZSBuZXh0IG9uZToKLSAgICAgICAgICAgIGRlbCBjb21waWxlcl9zb1tpbmRleDppbmRleCsyXQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgICMgQ2hlY2sgaWYgdGhlIFNESyB0aGF0IGlzIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIGFjdHVhbGx5IGV4aXN0cywKLSAgICAjIHRoZSB1bml2ZXJzYWwgYnVpbGQgcmVxdWlyZXMgdGhlIHVzYWdlIG9mIGEgdW5pdmVyc2FsIFNESyBhbmQgbm90IGFsbAotICAgICMgdXNlcnMgaGF2ZSB0aGF0IGluc3RhbGxlZCBieSBkZWZhdWx0LgotICAgIHN5c3Jvb3QgPSBOb25lCi0gICAgaWYgJy1pc3lzcm9vdCcgaW4gY2NfYXJnczoKLSAgICAgICAgaWR4ID0gY2NfYXJncy5pbmRleCgnLWlzeXNyb290JykKLSAgICAgICAgc3lzcm9vdCA9IGNjX2FyZ3NbaWR4KzFdCi0gICAgZWxpZiAnLWlzeXNyb290JyBpbiBjb21waWxlcl9zbzoKLSAgICAgICAgaWR4ID0gY29tcGlsZXJfc28uaW5kZXgoJy1pc3lzcm9vdCcpCi0gICAgICAgIHN5c3Jvb3QgPSBjb21waWxlcl9zb1tpZHgrMV0KLQotICAgIGlmIHN5c3Jvb3QgYW5kIG5vdCBvcy5wYXRoLmlzZGlyKHN5c3Jvb3QpOgotICAgICAgICBsb2cud2FybigiQ29tcGlsaW5nIHdpdGggYW4gU0RLIHRoYXQgZG9lc24ndCBzZWVtIHRvIGV4aXN0OiAlcyIsCi0gICAgICAgICAgICAgICAgc3lzcm9vdCkKLSAgICAgICAgbG9nLndhcm4oIlBsZWFzZSBjaGVjayB5b3VyIFhjb2RlIGluc3RhbGxhdGlvbiIpCi0KLSAgICByZXR1cm4gY29tcGlsZXJfc28KIAogY2xhc3MgVW5peENDb21waWxlcihDQ29tcGlsZXIpOgogCkBAIC0xNjgsNyArMTA5LDggQEAKICAgICBkZWYgX2NvbXBpbGUoc2VsZiwgb2JqLCBzcmMsIGV4dCwgY2NfYXJncywgZXh0cmFfcG9zdGFyZ3MsIHBwX29wdHMpOgogICAgICAgICBjb21waWxlcl9zbyA9IHNlbGYuY29tcGlsZXJfc28KICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgY29tcGlsZXJfc28gPSBfZGFyd2luX2NvbXBpbGVyX2ZpeHVwKGNvbXBpbGVyX3NvLCBjY19hcmdzICsgZXh0cmFfcG9zdGFyZ3MpCisgICAgICAgICAgICBjb21waWxlcl9zbyA9IF9vc3hfc3VwcG9ydC5jb21waWxlcl9maXh1cChjb21waWxlcl9zbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY19hcmdzICsgZXh0cmFfcG9zdGFyZ3MpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc3Bhd24oY29tcGlsZXJfc28gKyBjY19hcmdzICsgW3NyYywgJy1vJywgb2JqXSArCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX3Bvc3RhcmdzKQpAQCAtMjQ3LDcgKzE4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGxpbmtlcltpXSA9IHNlbGYuY29tcGlsZXJfY3h4W2ldCiAKICAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmtlciA9IF9kYXJ3aW5fY29tcGlsZXJfZml4dXAobGlua2VyLCBsZF9hcmdzKQorICAgICAgICAgICAgICAgICAgICBsaW5rZXIgPSBfb3N4X3N1cHBvcnQuY29tcGlsZXJfZml4dXAobGlua2VyLCBsZF9hcmdzKQogCiAgICAgICAgICAgICAgICAgc2VsZi5zcGF3bihsaW5rZXIgKyBsZF9hcmdzKQogICAgICAgICAgICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvciBhcyBtc2c6CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKaW5kZXggYmNlODQwMi4uNjdkODE2NiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy91dGlsLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdXRpbC5weQpAQCAtNTMsNiArNTMsMTAgQEAKICAgICAgICAgICAgIHJldHVybiAnd2luLWlhNjQnCiAgICAgICAgIHJldHVybiBzeXMucGxhdGZvcm0KIAorICAgICMgU2V0IGZvciBjcm9zcyBidWlsZHMgZXhwbGljaXRseQorICAgIGlmICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQorCiAgICAgaWYgb3MubmFtZSAhPSAicG9zaXgiIG9yIG5vdCBoYXNhdHRyKG9zLCAndW5hbWUnKToKICAgICAgICAgIyBYWFggd2hhdCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlPyBOVCBpcyBJbnRlbCBvciBBbHBoYSwKICAgICAgICAgIyBNYWMgT1MgaXMgTTY4ayBvciBQUEMsIGV0Yy4KQEAgLTk0LDk0ICs5OCwxMCBAQAogICAgICAgICBpZiBtOgogICAgICAgICAgICAgcmVsZWFzZSA9IG0uZ3JvdXAoKQogICAgIGVsaWYgb3NuYW1lWzo2XSA9PSAiZGFyd2luIjoKLSAgICAgICAgIwotICAgICAgICAjIEZvciBvdXIgcHVycG9zZXMsIHdlJ2xsIGFzc3VtZSB0aGF0IHRoZSBzeXN0ZW0gdmVyc2lvbiBmcm9tCi0gICAgICAgICMgZGlzdHV0aWxzJyBwZXJzcGVjdGl2ZSBpcyB3aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQKLSAgICAgICAgIyB0by4gVGhpcyBtYWtlcyB0aGUgY29tcGF0aWJpbGl0eSBzdG9yeSBhIGJpdCBtb3JlIHNhbmUgYmVjYXVzZSB0aGUKLSAgICAgICAgIyBtYWNoaW5lIGlzIGdvaW5nIHRvIGNvbXBpbGUgYW5kIGxpbmsgYXMgaWYgaXQgd2VyZQotICAgICAgICAjIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC4KLSAgICAgICAgZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcnMKLSAgICAgICAgY2ZndmFycyA9IGdldF9jb25maWdfdmFycygpCi0KLSAgICAgICAgbWFjdmVyID0gY2ZndmFycy5nZXQoJ01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCcpCi0KLSAgICAgICAgaWYgMToKLSAgICAgICAgICAgICMgQWx3YXlzIGNhbGN1bGF0ZSB0aGUgcmVsZWFzZSBvZiB0aGUgcnVubmluZyBtYWNoaW5lLAotICAgICAgICAgICAgIyBuZWVkZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBidWlsZCBmYXQgYmluYXJpZXMgb3Igbm90LgotCi0gICAgICAgICAgICBtYWNyZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICAjIEdldCB0aGUgc3lzdGVtIHZlcnNpb24uIFJlYWRpbmcgdGhpcyBwbGlzdCBpcyBhIGRvY3VtZW50ZWQKLSAgICAgICAgICAgICMgd2F5IHRvIGdldCB0aGUgc3lzdGVtIHZlcnNpb24gKHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKLSAgICAgICAgICAgICMgdGhlIEdlc3RhbHQgTWFuYWdlcikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmID0gb3BlbignL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN0JykKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICAgICAgICAgICMgV2UncmUgb24gYSBwbGFpbiBkYXJ3aW4gYm94LCBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAjIGJlaGF2aW91ci4KLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByJzxrZXk+UHJvZHVjdFVzZXJWaXNpYmxlVmVyc2lvbjwva2V5PlxzKicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPHN0cmluZz4oLio/KTwvc3RyaW5nPicsIGYucmVhZCgpKQotICAgICAgICAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgbWFjcmVsZWFzZSA9ICcuJy5qb2luKG0uZ3JvdXAoMSkuc3BsaXQoJy4nKVs6Ml0pCi0gICAgICAgICAgICAgICAgICAgICMgZWxzZTogZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW91cgotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotCi0gICAgICAgIGlmIG5vdCBtYWN2ZXI6Ci0gICAgICAgICAgICBtYWN2ZXIgPSBtYWNyZWxlYXNlCi0KLSAgICAgICAgaWYgbWFjdmVyOgotICAgICAgICAgICAgZnJvbSBkaXN0dXRpbHMuc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcnMKLSAgICAgICAgICAgIHJlbGVhc2UgPSBtYWN2ZXIKLSAgICAgICAgICAgIG9zbmFtZSA9ICJtYWNvc3giCi0KLSAgICAgICAgICAgIGlmIChtYWNyZWxlYXNlICsgJy4nKSA+PSAnMTAuNC4nIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICctYXJjaCcgaW4gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KCdDRkxBR1MnLCAnJykuc3RyaXAoKToKLSAgICAgICAgICAgICAgICAjIFRoZSB1bml2ZXJzYWwgYnVpbGQgd2lsbCBidWlsZCBmYXQgYmluYXJpZXMsIGJ1dCBub3Qgb24KLSAgICAgICAgICAgICAgICAjIHN5c3RlbXMgYmVmb3JlIDEwLjQKLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUcnkgdG8gZGV0ZWN0IDQtd2F5IHVuaXZlcnNhbCBidWlsZHMsIHRob3NlIGhhdmUgbWFjaGluZS10eXBlCi0gICAgICAgICAgICAgICAgIyAndW5pdmVyc2FsJyBpbnN0ZWFkIG9mICdmYXQnLgotCi0gICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCi0gICAgICAgICAgICAgICAgY2ZsYWdzID0gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KCdDRkxBR1MnKQotCi0gICAgICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQotICAgICAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQotCi0gICAgICAgICAgICAgICAgaWYgbGVuKGFyY2hzKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gYXJjaHNbMF0KLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnaW50ZWwnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDMnCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ3BwYzY0JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdDY0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd1bml2ZXJzYWwnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgbWFjaGluZSB2YWx1ZSBmb3IgYXJjaHM9JXIiJShhcmNocywpKQotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgPT0gJ2kzODYnOgotICAgICAgICAgICAgICAgICMgT24gT1NYIHRoZSBtYWNoaW5lIHR5cGUgcmV0dXJuZWQgYnkgdW5hbWUgaXMgYWx3YXlzIHRoZQotICAgICAgICAgICAgICAgICMgMzItYml0IHZhcmlhbnQsIGV2ZW4gaWYgdGhlIGV4ZWN1dGFibGUgYXJjaGl0ZWN0dXJlIGlzCi0gICAgICAgICAgICAgICAgIyB0aGUgNjQtYml0IHZhcmlhbnQKLSAgICAgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICd4ODZfNjQnCi0KLSAgICAgICAgICAgIGVsaWYgbWFjaGluZSBpbiAoJ1Bvd2VyUEMnLCAnUG93ZXJfTWFjaW50b3NoJyk6Ci0gICAgICAgICAgICAgICAgIyBQaWNrIGEgc2FuZSBuYW1lIGZvciB0aGUgUFBDIGFyY2hpdGVjdHVyZS4KLSAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYycKLQotICAgICAgICAgICAgICAgICMgU2VlICdpMzg2JyBjYXNlCi0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAncHBjNjQnCisgICAgICAgIGltcG9ydCBfb3N4X3N1cHBvcnQsIGRpc3R1dGlscy5zeXNjb25maWcKKyAgICAgICAgb3NuYW1lLCByZWxlYXNlLCBtYWNoaW5lID0gX29zeF9zdXBwb3J0LmdldF9wbGF0Zm9ybV9vc3goCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCiAKICAgICByZXR1cm4gIiVzLSVzLSVzIiAlIChvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUpCiAKZGlmZiAtLWdpdCBhL0xpYi9kb2N0ZXN0LnB5IGIvTGliL2RvY3Rlc3QucHkKaW5kZXggZTE4OWM4Zi4uM2FmMDVmYiAxMDA2NDQKLS0tIGEvTGliL2RvY3Rlc3QucHkKKysrIGIvTGliL2RvY3Rlc3QucHkKQEAgLTQ1OCw3ICs0NTgsNiBAQAogICAgICAgICByZXR1cm4gaGFzaCgoc2VsZi5zb3VyY2UsIHNlbGYud2FudCwgc2VsZi5saW5lbm8sIHNlbGYuaW5kZW50LAogICAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNfbXNnKSkKIAotCiBjbGFzcyBEb2NUZXN0OgogICAgICIiIgogICAgIEEgY29sbGVjdGlvbiBvZiBkb2N0ZXN0IGV4YW1wbGVzIHRoYXQgc2hvdWxkIGJlIHJ1biBpbiBhIHNpbmdsZQpAQCAtMTM2Nyw3ICsxMzY2LDcgQEAKICAgICAgICAgbSA9IHNlbGYuX19MSU5FQ0FDSEVfRklMRU5BTUVfUkUubWF0Y2goZmlsZW5hbWUpCiAgICAgICAgIGlmIG0gYW5kIG0uZ3JvdXAoJ25hbWUnKSA9PSBzZWxmLnRlc3QubmFtZToKICAgICAgICAgICAgIGV4YW1wbGUgPSBzZWxmLnRlc3QuZXhhbXBsZXNbaW50KG0uZ3JvdXAoJ2V4YW1wbGVudW0nKSldCi0gICAgICAgICAgICByZXR1cm4gZXhhbXBsZS5zb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgcmV0dXJuIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLnNhdmVfbGluZWNhY2hlX2dldGxpbmVzKGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscykKIApAQCAtMTQxMyw2ICsxNDEyLDcgQEAKICAgICAgICAgIyBOb3RlIHRoYXQgdGhlIGludGVyYWN0aXZlIG91dHB1dCB3aWxsIGdvIHRvICpvdXIqCiAgICAgICAgICMgc2F2ZV9zdGRvdXQsIGV2ZW4gaWYgdGhhdCdzIG5vdCB0aGUgcmVhbCBzeXMuc3Rkb3V0OyB0aGlzCiAgICAgICAgICMgYWxsb3dzIHVzIHRvIHdyaXRlIHRlc3QgY2FzZXMgZm9yIHRoZSBzZXRfdHJhY2UgYmVoYXZpb3IuCisgICAgICAgIHNhdmVfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKQogICAgICAgICBzYXZlX3NldF90cmFjZSA9IHBkYi5zZXRfdHJhY2UKICAgICAgICAgc2VsZi5kZWJ1Z2dlciA9IF9PdXRwdXRSZWRpcmVjdGluZ1BkYihzYXZlX3N0ZG91dCkKICAgICAgICAgc2VsZi5kZWJ1Z2dlci5yZXNldCgpCkBAIC0xNDMyLDYgKzE0MzIsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0CiAgICAgICAgICAgICBwZGIuc2V0X3RyYWNlID0gc2F2ZV9zZXRfdHJhY2UKKyAgICAgICAgICAgIHN5cy5zZXR0cmFjZShzYXZlX3RyYWNlKQogICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzID0gc2VsZi5zYXZlX2xpbmVjYWNoZV9nZXRsaW5lcwogICAgICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gc2F2ZV9kaXNwbGF5aG9vawogICAgICAgICAgICAgaWYgY2xlYXJfZ2xvYnM6CkBAIC0xNjI4LDggKzE2MjksOCBAQAogICAgICAgICAjIENoZWNrIGlmIHdlIHNob3VsZCB1c2UgZGlmZi4KICAgICAgICAgaWYgc2VsZi5fZG9fYV9mYW5jeV9kaWZmKHdhbnQsIGdvdCwgb3B0aW9uZmxhZ3MpOgogICAgICAgICAgICAgIyBTcGxpdCB3YW50ICYgZ290IGludG8gbGluZXMuCi0gICAgICAgICAgICB3YW50X2xpbmVzID0gd2FudC5zcGxpdGxpbmVzKFRydWUpICAjIFRydWUgPT0ga2VlcCBsaW5lIGVuZHMKLSAgICAgICAgICAgIGdvdF9saW5lcyA9IGdvdC5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICB3YW50X2xpbmVzID0gd2FudC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCisgICAgICAgICAgICBnb3RfbGluZXMgPSBnb3Quc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgIyBVc2UgZGlmZmxpYiB0byBmaW5kIHRoZWlyIGRpZmZlcmVuY2VzLgogICAgICAgICAgICAgaWYgb3B0aW9uZmxhZ3MgJiBSRVBPUlRfVURJRkY6CiAgICAgICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKHdhbnRfbGluZXMsIGdvdF9saW5lcywgbj0yKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5IGIvTGliL2VtYWlsL19lbmNvZGVkX3dvcmRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5ZjZlMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvX2VuY29kZWRfd29yZHMucHkKQEAgLTAsMCArMSwyMjEgQEAKKyIiIiBSb3V0aW5lcyBmb3IgbWFuaXB1bGF0aW5nIFJGQzIwNDcgZW5jb2RlZCB3b3Jkcy4KKworVGhpcyBpcyBjdXJyZW50bHkgYSBwYWNrYWdlLXByaXZhdGUgQVBJLCBidXQgd2lsbCBiZSBjb25zaWRlcmVkIGZvciBwcm9tb3Rpb24KK3RvIGEgcHVibGljIEFQSSBpZiB0aGVyZSBpcyBkZW1hbmQuCisKKyIiIgorCisjIEFuIGVjb2RlZCB3b3JkIGxvb2tzIGxpa2UgdGhpczoKKyMKKyMgICAgICAgID0/Y2hhcnNldFsqbGFuZ10/Y3RlP2VuY29kZWRfc3RyaW5nPz0KKyMKKyMgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY2hhcnNldCBzZWUgdGhlIGNoYXJzZXQgbW9kdWxlLiAgSGVyZSBpdCBpcyBvbmUKKyMgb2YgdGhlIHByZWZlcnJlZCBNSU1FIGNoYXJzZXQgbmFtZXMgKGhvcGVmdWxseTsgeW91IG5ldmVyIGtub3cgd2hlbiBwYXJzaW5nKS4KKyMgY3RlIChDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nKSBpcyBlaXRoZXIgJ3EnIG9yICdiJyAoaWdub3JpbmcgY2FzZSkuICBJbgorIyB0aGVvcnkgb3RoZXIgbGV0dGVycyBjb3VsZCBiZSB1c2VkIGZvciBvdGhlciBlbmNvZGluZ3MsIGJ1dCBpbiBwcmFjdGljZSB0aGlzCisjIChhbG1vc3Q/KSBuZXZlciBoYXBwZW5zLiAgVGhlcmUgY291bGQgYmUgYSBwdWJsaWMgQVBJIGZvciBhZGRpbmcgZW50cmllcworIyB0byB0byB0aGUgQ1RFIHRhYmxlcywgYnV0IFlBR05JIGZvciBub3cuICAncScgaXMgUXVvdGVkIFByaW50YWJsZSwgJ2InIGlzCisjIEJhc2U2NC4gIFRoZSBtZWFuaW5nIG9mIGVuY29kZWRfc3RyaW5nIHNob3VsZCBiZSBvYnZpb3VzLiAgJ2xhbmcnIGlzIG9wdGlvbmFsCisjIGFzIGluZGljYXRlZCBieSB0aGUgYnJhY2tldHMgKHRoZXkgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzeW50YXgpIGJ1dCBpcyBhbG1vc3QKKyMgbmV2ZXIgZW5jb3VudGVyZWQgaW4gcHJhY3RpY2UuCisjCisjIFRoZSBnZW5lcmFsIGludGVyZmFjZSBmb3IgYSBDVEUgZGVjb2RlciBpcyB0aGF0IGl0IHRha2VzIHRoZSBlbmNvZGVkX3N0cmluZworIyBhcyBpdHMgYXJndW1lbnQsIGFuZCByZXR1cm5zIGEgdHVwbGUgKGN0ZV9kZWNvZGVkX3N0cmluZywgZGVmZWN0cykuICBUaGUKKyMgY3RlX2RlY29kZWRfc3RyaW5nIGlzIHRoZSBvcmlnaW5hbCBiaW5hcnkgdGhhdCB3YXMgZW5jb2RlZCB1c2luZyB0aGUKKyMgc3BlY2lmaWVkIGN0ZS4gICdkZWZlY3RzJyBpcyBhIGxpc3Qgb2YgTWVzc2FnZURlZmVjdCBpbnN0YW5jZXMgaW5kaWNhdGluZyBhbnkKKyMgcHJvYmxlbXMgZW5jb3VudGVyZWQgZHVyaW5nIGNvbnZlcnNpb24uICAnY2hhcnNldCcgYW5kICdsYW5nJyBhcmUgdGhlCisjIGNvcnJlc3BvbmRpbmcgc3RyaW5ncyBleHRyYWN0ZWQgZnJvbSB0aGUgRVcsIGNhc2UgcHJlc2VydmVkLgorIworIyBUaGUgZ2VuZXJhbCBpbnRlcmZhY2UgZm9yIGEgQ1RFIGVuY29kZXIgaXMgdGhhdCBpdCB0YWtlcyBhIGJpbmFyeSBzZXF1ZW5jZQorIyBhcyBpbnB1dCBhbmQgcmV0dXJucyB0aGUgY3RlX2VuY29kZWRfc3RyaW5nLCB3aGljaCBpcyBhbiBhc2NpaS1vbmx5IHN0cmluZy4KKyMKKyMgRWFjaCBkZWNvZGVyIG11c3QgYWxzbyBzdXBwbHkgYSBsZW5ndGggZnVuY3Rpb24gdGhhdCB0YWtlcyB0aGUgYmluYXJ5CisjIHNlcXVlbmNlIGFzIGl0cyBhcmd1bWVudCBhbmQgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZSByZXN1bHRpbmcgZW5jb2RlZAorIyBzdHJpbmcuCisjCisjIFRoZSBtYWluIEFQSSBmdW5jdGlvbnMgZm9yIHRoZSBtb2R1bGUgYXJlIGRlY29kZSwgd2hpY2ggY2FsbHMgdGhlIGRlY29kZXIKKyMgcmVmZXJlbmNlZCBieSB0aGUgY3RlIHNwZWNpZmllciwgYW5kIGVuY29kZSwgd2hpY2ggYWRkcyB0aGUgYXBwcm9wcmlhdGUKKyMgUkZDIDIwNDcgImNocm9tZSIgdG8gdGhlIGVuY29kZWQgc3RyaW5nLCBhbmQgY2FuIG9wdGlvbmFsbHkgYXV0b21hdGljYWxseQorIyBzZWxlY3QgdGhlIHNob3J0ZXN0IHBvc3NpYmxlIGVuY29kaW5nLiAgU2VlIHRoZWlyIGRvY3N0cmluZ3MgYmVsb3cgZm9yCisjIGRldGFpbHMuCisKK2ltcG9ydCByZQoraW1wb3J0IGJhc2U2NAoraW1wb3J0IGJpbmFzY2lpCitpbXBvcnQgZnVuY3Rvb2xzCitmcm9tIHN0cmluZyBpbXBvcnQgYXNjaWlfbGV0dGVycywgZGlnaXRzCitmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKKworX19hbGxfXyA9IFsnZGVjb2RlX3EnLAorICAgICAgICAgICAnZW5jb2RlX3EnLAorICAgICAgICAgICAnZGVjb2RlX2InLAorICAgICAgICAgICAnZW5jb2RlX2InLAorICAgICAgICAgICAnbGVuX3EnLAorICAgICAgICAgICAnbGVuX2InLAorICAgICAgICAgICAnZGVjb2RlJywKKyAgICAgICAgICAgJ2VuY29kZScsCisgICAgICAgICAgIF0KKworIworIyBRdW90ZWQgUHJpbnRhYmxlCisjCisKKyMgcmVnZXggYmFzZWQgZGVjb2Rlci4KK19xX2J5dGVfc3ViYmVyID0gZnVuY3Rvb2xzLnBhcnRpYWwocmUuY29tcGlsZShicic9KFthLWZBLUYwLTldezJ9KScpLnN1YiwKKyAgICAgICAgbGFtYmRhIG06IGJ5dGVzKFtpbnQobS5ncm91cCgxKSwgMTYpXSkpCisKK2RlZiBkZWNvZGVfcShlbmNvZGVkKToKKyAgICBlbmNvZGVkID0gZW5jb2RlZC5yZXBsYWNlKGInXycsIGInICcpCisgICAgcmV0dXJuIF9xX2J5dGVfc3ViYmVyKGVuY29kZWQpLCBbXQorCisKKyMgZGljdCBtYXBwaW5nIGJ5dGVzIHRvIHRoZWlyIGVuY29kZWQgZm9ybQorY2xhc3MgX1FCeXRlTWFwKGRpY3QpOgorCisgICAgc2FmZSA9IGInLSEqKy8nICsgYXNjaWlfbGV0dGVycy5lbmNvZGUoJ2FzY2lpJykgKyBkaWdpdHMuZW5jb2RlKCdhc2NpaScpCisKKyAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KToKKyAgICAgICAgaWYga2V5IGluIHNlbGYuc2FmZToKKyAgICAgICAgICAgIHNlbGZba2V5XSA9IGNocihrZXkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmW2tleV0gPSAiPXs6MDJYfSIuZm9ybWF0KGtleSkKKyAgICAgICAgcmV0dXJuIHNlbGZba2V5XQorCitfcV9ieXRlX21hcCA9IF9RQnl0ZU1hcCgpCisKKyMgSW4gaGVhZGVycyBzcGFjZXMgYXJlIG1hcHBlZCB0byAnXycuCitfcV9ieXRlX21hcFtvcmQoJyAnKV0gPSAnXycKKworZGVmIGVuY29kZV9xKGJzdHJpbmcpOgorICAgIHJldHVybiAnJy5qb2luKF9xX2J5dGVfbWFwW3hdIGZvciB4IGluIGJzdHJpbmcpCisKK2RlZiBsZW5fcShic3RyaW5nKToKKyAgICByZXR1cm4gc3VtKGxlbihfcV9ieXRlX21hcFt4XSkgZm9yIHggaW4gYnN0cmluZykKKworCisjCisjIEJhc2U2NAorIworCitkZWYgZGVjb2RlX2IoZW5jb2RlZCk6CisgICAgZGVmZWN0cyA9IFtdCisgICAgcGFkX2VyciA9IGxlbihlbmNvZGVkKSAlIDQKKyAgICBpZiBwYWRfZXJyOgorICAgICAgICBkZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QoKSkKKyAgICAgICAgcGFkZGVkX2VuY29kZWQgPSBlbmNvZGVkICsgYic9PT0nWzo0LXBhZF9lcnJdCisgICAgZWxzZToKKyAgICAgICAgcGFkZGVkX2VuY29kZWQgPSBlbmNvZGVkCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gYmFzZTY0LmI2NGRlY29kZShwYWRkZWRfZW5jb2RlZCwgdmFsaWRhdGU9VHJ1ZSksIGRlZmVjdHMKKyAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6CisgICAgICAgICMgU2luY2Ugd2UgaGFkIGNvcnJlY3QgcGFkZGluZywgdGhpcyBtdXN0IGFuIGludmFsaWQgY2hhciBlcnJvci4KKyAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QoKV0KKyAgICAgICAgIyBUaGUgbm9uLWFscGhhYmV0IGNoYXJhY3RlcnMgYXJlIGlnbm9yZWQgYXMgZmFyIGFzIHBhZGRpbmcKKyAgICAgICAgIyBnb2VzLCBidXQgd2UgZG9uJ3Qga25vdyBob3cgbWFueSB0aGVyZSBhcmUuICBTbyB3ZSdsbCBqdXN0CisgICAgICAgICMgdHJ5IHZhcmlvdXMgcGFkZGluZyBsZW5ndGhzIHVudGlsIHNvbWV0aGluZyB3b3Jrcy4KKyAgICAgICAgZm9yIGkgaW4gMCwgMSwgMiwgMzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0LmI2NGRlY29kZShlbmNvZGVkK2InPScqaSwgdmFsaWRhdGU9RmFsc2UpLCBkZWZlY3RzCisgICAgICAgICAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgaT09MDoKKyAgICAgICAgICAgICAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0KCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4KKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bmV4cGVjdGVkIGJpbmFzY2lpLkVycm9yIikKKworZGVmIGVuY29kZV9iKGJzdHJpbmcpOgorICAgIHJldHVybiBiYXNlNjQuYjY0ZW5jb2RlKGJzdHJpbmcpLmRlY29kZSgnYXNjaWknKQorCitkZWYgbGVuX2IoYnN0cmluZyk6CisgICAgZ3JvdXBzX29mXzMsIGxlZnRvdmVyID0gZGl2bW9kKGxlbihic3RyaW5nKSwgMykKKyAgICAjIDQgYnl0ZXMgb3V0IGZvciBlYWNoIDMgYnl0ZXMgKG9yIG5vbnplcm8gZnJhY3Rpb24gdGhlcmVvZikgaW4uCisgICAgcmV0dXJuIGdyb3Vwc19vZl8zICogNCArICg0IGlmIGxlZnRvdmVyIGVsc2UgMCkKKworCitfY3RlX2RlY29kZXJzID0geworICAgICdxJzogZGVjb2RlX3EsCisgICAgJ2InOiBkZWNvZGVfYiwKKyAgICB9CisKK2RlZiBkZWNvZGUoZXcpOgorICAgICIiIkRlY29kZSBlbmNvZGVkIHdvcmQgYW5kIHJldHVybiAoc3RyaW5nLCBjaGFyc2V0LCBsYW5nLCBkZWZlY3RzKSB0dXBsZS4KKworICAgIEFuIFJGQyAyMDQ3LzIyNDMgZW5jb2RlZCB3b3JkIGhhcyB0aGUgZm9ybToKKworICAgICAgICA9P2NoYXJzZXQqbGFuZz9jdGU/ZW5jb2RlZF9zdHJpbmc/PQorCisgICAgd2hlcmUgJypsYW5nJyBtYXkgYmUgb21pdHRlZCBidXQgdGhlIG90aGVyIHBhcnRzIG1heSBub3QgYmUuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgZXhhY3RseSBzdWNoIGEgc3RyaW5nICh0aGF0IGlzLCBpdCBkb2VzIG5vdCBjaGVjayB0aGUKKyAgICBzeW50YXggYW5kIG1heSByYWlzZSBlcnJvcnMgaWYgdGhlIHN0cmluZyBpcyBub3Qgd2VsbCBmb3JtZWQpLCBhbmQgcmV0dXJucworICAgIHRoZSBlbmNvZGVkX3N0cmluZyBkZWNvZGVkIGZpcnN0IGZyb20gaXRzIENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgYW5kCisgICAgdGhlbiBmcm9tIHRoZSByZXN1bHRpbmcgYnl0ZXMgaW50byB1bmljb2RlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2hhcnNldC4gIElmCisgICAgdGhlIGN0ZS1kZWNvZGVkIHN0cmluZyBkb2VzIG5vdCBzdWNjZXNzZnVsbHkgZGVjb2RlIHVzaW5nIHRoZSBzcGVjaWZpZWQKKyAgICBjaGFyYWN0ZXIgc2V0LCBhIGRlZmVjdCBpcyBhZGRlZCB0byB0aGUgZGVmZWN0cyBsaXN0IGFuZCB0aGUgdW5rbm93biBvY3RldHMKKyAgICBhcmUgcmVwbGFjZWQgYnkgdGhlIHVuaWNvZGUgJ3Vua25vd24nIGNoYXJhY3RlciBcdUZERkYuCisKKyAgICBUaGUgc3BlY2lmaWVkIGNoYXJzZXQgYW5kIGxhbmd1YWdlIGFyZSByZXR1cm5lZC4gIFRoZSBkZWZhdWx0IGZvciBsYW5ndWFnZSwKKyAgICB3aGljaCBpcyByYXJlbHkgaWYgZXZlciBlbmNvdW50ZXJlZCwgaXMgdGhlIGVtcHR5IHN0cmluZy4KKworICAgICIiIgorICAgIF8sIGNoYXJzZXQsIGN0ZSwgY3RlX3N0cmluZywgXyA9IGV3LnNwbGl0KCc/JykKKyAgICBjaGFyc2V0LCBfLCBsYW5nID0gY2hhcnNldC5wYXJ0aXRpb24oJyonKQorICAgIGN0ZSA9IGN0ZS5sb3dlcigpCisgICAgIyBSZWNvdmVyIHRoZSBvcmlnaW5hbCBieXRlcyBhbmQgZG8gQ1RFIGRlY29kaW5nLgorICAgIGJzdHJpbmcgPSBjdGVfc3RyaW5nLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICBic3RyaW5nLCBkZWZlY3RzID0gX2N0ZV9kZWNvZGVyc1tjdGVdKGJzdHJpbmcpCisgICAgIyBUdXJuIHRoZSBDVEUgZGVjb2RlZCBieXRlcyBpbnRvIHVuaWNvZGUuCisgICAgdHJ5OgorICAgICAgICBzdHJpbmcgPSBic3RyaW5nLmRlY29kZShjaGFyc2V0KQorICAgIGV4Y2VwdCBVbmljb2RlRXJyb3I6CisgICAgICAgIGRlZmVjdHMuYXBwZW5kKGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KCJFbmNvZGVkIHdvcmQgIgorICAgICAgICAgICAgImNvbnRhaW5zIGJ5dGVzIG5vdCBkZWNvZGFibGUgdXNpbmcge30gY2hhcnNldCIuZm9ybWF0KGNoYXJzZXQpKSkKKyAgICAgICAgc3RyaW5nID0gYnN0cmluZy5kZWNvZGUoY2hhcnNldCwgJ3N1cnJvZ2F0ZWVzY2FwZScpCisgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICBzdHJpbmcgPSBic3RyaW5nLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgaWYgY2hhcnNldC5sb3dlcigpICE9ICd1bmtub3duLThiaXQnOgorICAgICAgICAgICAgZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkNoYXJzZXRFcnJvcigiVW5rbm93biBjaGFyc2V0IHt9ICIKKyAgICAgICAgICAgICAgICAiaW4gZW5jb2RlZCB3b3JkOyBkZWNvZGVkIGFzIHVua25vd24gYnl0ZXMiLmZvcm1hdChjaGFyc2V0KSkpCisgICAgcmV0dXJuIHN0cmluZywgY2hhcnNldCwgbGFuZywgZGVmZWN0cworCisKK19jdGVfZW5jb2RlcnMgPSB7CisgICAgJ3EnOiBlbmNvZGVfcSwKKyAgICAnYic6IGVuY29kZV9iLAorICAgIH0KKworX2N0ZV9lbmNvZGVfbGVuZ3RoID0geworICAgICdxJzogbGVuX3EsCisgICAgJ2InOiBsZW5fYiwKKyAgICB9CisKK2RlZiBlbmNvZGUoc3RyaW5nLCBjaGFyc2V0PSd1dGYtOCcsIGVuY29kaW5nPU5vbmUsIGxhbmc9JycpOgorICAgICIiIkVuY29kZSBzdHJpbmcgdXNpbmcgdGhlIENURSBlbmNvZGluZyB0aGF0IHByb2R1Y2VzIHRoZSBzaG9ydGVyIHJlc3VsdC4KKworICAgIFByb2R1Y2VzIGFuIFJGQyAyMDQ3LzIyNDMgZW5jb2RlZCB3b3JkIG9mIHRoZSBmb3JtOgorCisgICAgICAgID0/Y2hhcnNldCpsYW5nP2N0ZT9lbmNvZGVkX3N0cmluZz89CisKKyAgICB3aGVyZSAnKmxhbmcnIGlzIG9taXR0ZWQgdW5sZXNzIHRoZSAnbGFuZycgcGFyYW1ldGVyIGlzIGdpdmVuIGEgdmFsdWUuCisgICAgT3B0aW9uYWwgYXJndW1lbnQgY2hhcnNldCAoZGVmYXVsdHMgdG8gdXRmLTgpIHNwZWNpZmllcyB0aGUgY2hhcnNldCB0byB1c2UKKyAgICB0byBlbmNvZGUgdGhlIHN0cmluZyB0byBiaW5hcnkgYmVmb3JlIENURSBlbmNvZGluZyBpdC4gIE9wdGlvbmFsIGFyZ3VtZW50CisgICAgJ2VuY29kaW5nJyBpcyB0aGUgY3RlIHNwZWNpZmllciBmb3IgdGhlIGVuY29kaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgKCdxJworICAgIG9yICdiJyk7IGlmIGl0IGlzIE5vbmUgKHRoZSBkZWZhdWx0KSB0aGUgZW5jb2Rpbmcgd2hpY2ggcHJvZHVjZXMgdGhlCisgICAgc2hvcnRlc3QgZW5jb2RlZCBzZXF1ZW5jZSBpcyB1c2VkLCBleGNlcHQgdGhhdCAncScgaXMgcHJlZmVycmVkIGlmIGl0IGlzIHVwCisgICAgdG8gZml2ZSBjaGFyYWN0ZXJzIGxvbmdlci4gIE9wdGlvbmFsIGFyZ3VtZW50ICdsYW5nJyAoZGVmYXVsdCAnJykgZ2l2ZXMgdGhlCisgICAgUkZDIDIyNDMgbGFuZ3VhZ2Ugc3RyaW5nIHRvIHNwZWNpZnkgaW4gdGhlIGVuY29kZWQgd29yZC4KKworICAgICIiIgorICAgIGlmIGNoYXJzZXQgPT0gJ3Vua25vd24tOGJpdCc6CisgICAgICAgIGJzdHJpbmcgPSBzdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIGVsc2U6CisgICAgICAgIGJzdHJpbmcgPSBzdHJpbmcuZW5jb2RlKGNoYXJzZXQpCisgICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKKyAgICAgICAgcWxlbiA9IF9jdGVfZW5jb2RlX2xlbmd0aFsncSddKGJzdHJpbmcpCisgICAgICAgIGJsZW4gPSBfY3RlX2VuY29kZV9sZW5ndGhbJ2InXShic3RyaW5nKQorICAgICAgICAjIEJpYXMgdG93YXJkIHEuICA1IGlzIGFyYml0cmFyeS4KKyAgICAgICAgZW5jb2RpbmcgPSAncScgaWYgcWxlbiAtIGJsZW4gPCA1IGVsc2UgJ2InCisgICAgZW5jb2RlZCA9IF9jdGVfZW5jb2RlcnNbZW5jb2RpbmddKGJzdHJpbmcpCisgICAgaWYgbGFuZzoKKyAgICAgICAgbGFuZyA9ICcqJyArIGxhbmcKKyAgICByZXR1cm4gIj0/e317fT97fT97fT89Ii5mb3JtYXQoY2hhcnNldCwgbGFuZywgZW5jb2RpbmcsIGVuY29kZWQpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkyNGVkMQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtMCwwICsxLDI5NTMgQEAKKyIiIkhlYWRlciB2YWx1ZSBwYXJzZXIgaW1wbGVtZW50aW5nIHZhcmlvdXMgZW1haWwtcmVsYXRlZCBSRkMgcGFyc2luZyBydWxlcy4KKworVGhlIHBhcnNpbmcgbWV0aG9kcyBkZWZpbmVkIGluIHRoaXMgbW9kdWxlIGltcGxlbWVudCB2YXJpb3VzIGVtYWlsIHJlbGF0ZWQKK3BhcnNpbmcgcnVsZXMuICBQcmluY2lwYWwgYW1vbmcgdGhlbSBpcyBSRkMgNTMyMiwgd2hpY2ggaXMgdGhlIGZvbGxvd29uCit0byBSRkMgMjgyMiBhbmQgcHJpbWFyaWx5IGEgY2xhcmlmaWNhdGlvbiBvZiB0aGUgZm9ybWVyLiAgSXQgYWxzbyBpbXBsZW1lbnRzCitSRkMgMjA0NyBlbmNvZGVkIHdvcmQgZGVjb2RpbmcuCisKK1JGQyA1MzIyIGdvZXMgdG8gY29uc2lkZXJhYmxlIHRyb3VibGUgdG8gbWFpbnRhaW4gYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoCitSRkMgODIyIGluIHRoZSBwYXJzZSBwaGFzZSwgd2hpbGUgY2xlYW5pbmcgdXAgdGhlIHN0cnVjdHVyZSBvbiB0aGUgZ2VuZXJhdGlvbgorcGhhc2UuICBUaGlzIHBhcnNlciBzdXBwb3J0cyBjb3JyZWN0IFJGQyA1MzIyIGdlbmVyYXRpb24gYnkgdGFnZ2luZyB3aGl0ZSBzcGFjZQorYXMgZm9sZGluZyB3aGl0ZSBzcGFjZSBvbmx5IHdoZW4gZm9sZGluZyBpcyBhbGxvd2VkIGluIHRoZSBub24tb2Jzb2xldGUgcnVsZQorc2V0cy4gIEFjdHVhbGx5LCB0aGUgcGFyc2VyIGlzIGV2ZW4gbW9yZSBnZW5lcm91cyB3aGVuIGFjY2VwdGluZyBpbnB1dCB0aGFuIFJGQworNTMyMiBtYW5kYXRlcywgZm9sbG93aW5nIHRoZSBzcGlyaXQgb2YgUG9zdGVsJ3MgTGF3LCB3aGljaCBSRkMgNTMyMiBlbmNvdXJhZ2VzLgorV2hlcmUgcG9zc2libGUgZGV2aWF0aW9ucyBmcm9tIHRoZSBzdGFuZGFyZCBhcmUgYW5ub3RhdGVkIG9uIHRoZSAnZGVmZWN0cycKK2F0dHJpYnV0ZSBvZiB0b2tlbnMgdGhhdCBkZXZpYXRlLgorCitUaGUgZ2VuZXJhbCBzdHJ1Y3R1cmUgb2YgdGhlIHBhcnNlciBmb2xsb3dzIFJGQyA1MzIyLCBhbmQgdXNlcyBpdHMgdGVybWlub2xvZ3kKK3doZXJlIHRoZXJlIGlzIGEgZGlyZWN0IGNvcnJlc3BvbmRlbmNlLiAgV2hlcmUgdGhlIGltcGxlbWVudGF0aW9uIHJlcXVpcmVzIGEKK3NvbWV3aGF0IGRpZmZlcmVudCBzdHJ1Y3R1cmUgdGhhbiB0aGF0IHVzZWQgYnkgdGhlIGZvcm1hbCBncmFtbWFyLCBuZXcgdGVybXMKK3RoYXQgbWltaWMgdGhlIGNsb3Nlc3QgZXhpc3RpbmcgdGVybXMgYXJlIHVzZWQuICBUaHVzLCBpdCByZWFsbHkgaGVscHMgdG8gaGF2ZQorYSBjb3B5IG9mIFJGQyA1MzIyIGhhbmR5IHdoZW4gc3R1ZHlpbmcgdGhpcyBjb2RlLgorCitJbnB1dCB0byB0aGUgcGFyc2VyIGlzIGEgc3RyaW5nIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1bmZvbGRlZCBhY2NvcmRpbmcgdG8KK1JGQyA1MzIyIHJ1bGVzLiAgQWNjb3JkaW5nIHRvIHRoZSBSRkMgdGhpcyB1bmZvbGRpbmcgaXMgdGhlIHZlcnkgZmlyc3Qgc3RlcCwgYW5kCit0aGlzIHBhcnNlciBsZWF2ZXMgdGhlIHVuZm9sZGluZyBzdGVwIHRvIGEgaGlnaGVyIGxldmVsIG1lc3NhZ2UgcGFyc2VyLCB3aGljaAord2lsbCBoYXZlIGFscmVhZHkgZGV0ZWN0ZWQgdGhlIGxpbmUgYnJlYWtzIHRoYXQgbmVlZCB1bmZvbGRpbmcgd2hpbGUKK2RldGVybWluaW5nIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBlYWNoIGhlYWRlci4KKworVGhlIG91dHB1dCBvZiB0aGUgcGFyc2VyIGlzIGEgVG9rZW5MaXN0IG9iamVjdCwgd2hpY2ggaXMgYSBsaXN0IHN1YmNsYXNzLiAgQQorVG9rZW5MaXN0IGlzIGEgcmVjdXJzaXZlIGRhdGEgc3RydWN0dXJlLiAgVGhlIHRlcm1pbmFsIG5vZGVzIG9mIHRoZSBzdHJ1Y3R1cmUKK2FyZSBUZXJtaW5hbCBvYmplY3RzLCB3aGljaCBhcmUgc3ViY2xhc3NlcyBvZiBzdHIuICBUaGVzZSBkbyBub3QgY29ycmVzcG9uZAorZGlyZWN0bHkgdG8gdGVybWluYWwgb2JqZWN0cyBpbiB0aGUgZm9ybWFsIGdyYW1tYXIsIGJ1dCBhcmUgaW5zdGVhZCBtb3JlCitwcmFjdGljYWwgaGlnaGVyIGxldmVsIGNvbWJpbmF0aW9ucyBvZiB0cnVlIHRlcm1pbmFscy4KKworQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBoYXZlIGEgJ3ZhbHVlJyBhdHRyaWJ1dGUsIHdoaWNoIHByb2R1Y2VzIHRoZQorc2VtYW50aWNhbGx5IG1lYW5pbmdmdWwgdmFsdWUgb2YgdGhhdCBwYXJ0IG9mIHRoZSBwYXJzZSBzdWJ0cmVlLiAgVGhlIHZhbHVlIG9mCithbGwgd2hpdGVzcGFjZSB0b2tlbnMgKG5vIG1hdHRlciBob3cgbWFueSBzdWItdG9rZW5zIHRoZXkgbWF5IGNvbnRhaW4pIGlzIGEKK3NpbmdsZSBzcGFjZSwgYXMgcGVyIHRoZSBSRkMgcnVsZXMuICBUaGlzIGluY2x1ZGVzICdDRldTJywgd2hpY2ggaXMgaGVyZWluCitpbmNsdWRlZCBpbiB0aGUgZ2VuZXJhbCBjbGFzcyBvZiB3aGl0ZXNwYWNlIHRva2Vucy4gIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8KK3RoZSBydWxlIHRoYXQgd2hpdGVzcGFjZSB0b2tlbnMgYXJlIGNvbGxhcHNlZCBpbnRvIHNpbmdsZSBzcGFjZXMgaW4gdmFsdWVzOiBpbgordGhlIHZhbHVlIG9mIGEgJ2JhcmUtcXVvdGVkLXN0cmluZycgKGEgcXVvdGVkLXN0cmluZyB3aXRoIG5vIGxlYWRpbmcgb3IKK3RyYWlsaW5nIHdoaXRlc3BhY2UpLCBhbnkgd2hpdGVzcGFjZSB0aGF0IGFwcGVhcmVkIGJldHdlZW4gdGhlIHF1b3RhdGlvbiBtYXJrcworaXMgcHJlc2VydmVkIGluIHRoZSByZXR1cm5lZCB2YWx1ZS4gIE5vdGUgdGhhdCBpbiBhbGwgVGVybWluYWwgc3RyaW5ncyBxdW90ZWQKK3BhaXJzIGFyZSB0dXJuZWQgaW50byB0aGVpciB1bnF1b3RlZCB2YWx1ZXMuCisKK0FsbCBUb2tlbkxpc3QgYW5kIFRlcm1pbmFsIG9iamVjdHMgYWxzbyBoYXZlIGEgc3RyaW5nIHZhbHVlLCB3aGljaCBhdHRlbXB0cyB0bworYmUgYSAiY2Fub25pY2FsIiByZXByZXNlbnRhdGlvbiBvZiB0aGUgUkZDLWNvbXBsaWFudCBmb3JtIG9mIHRoZSBzdWJzdHJpbmcgdGhhdAorcHJvZHVjZWQgdGhlIHBhcnNlZCBzdWJ0cmVlLCBpbmNsdWRpbmcgbWluaW1hbCB1c2Ugb2YgcXVvdGVkIHBhaXIgcXVvdGluZy4KK1doaXRlc3BhY2UgcnVucyBhcmUgbm90IGNvbGxhcHNlZC4KKworQ29tbWVudCB0b2tlbnMgYWxzbyBoYXZlIGEgJ2NvbnRlbnQnIGF0dHJpYnV0ZSBwcm92aWRpbmcgdGhlIHN0cmluZyBmb3VuZAorYmV0d2VlbiB0aGUgcGFyZW5zIChpbmNsdWRpbmcgYW55IG5lc3RlZCBjb21tZW50cykgd2l0aCB3aGl0ZXNwYWNlIHByZXNlcnZlZC4KKworQWxsIFRva2VuTGlzdCBhbmQgVGVybWluYWwgb2JqZWN0cyBoYXZlIGEgJ2RlZmVjdHMnIGF0dHJpYnV0ZSB3aGljaCBpcyBhCitwb3NzaWJseSBlbXB0eSBsaXN0IGFsbCBvZiB0aGUgZGVmZWN0cyBmb3VuZCB3aGlsZSBjcmVhdGluZyB0aGUgdG9rZW4uICBEZWZlY3RzCittYXkgYXBwZWFyIG9uIGFueSB0b2tlbiBpbiB0aGUgdHJlZSwgYW5kIGEgY29tcG9zaXRlIGxpc3Qgb2YgYWxsIGRlZmVjdHMgaW4gdGhlCitzdWJ0cmVlIGlzIGF2YWlsYWJsZSB0aHJvdWdoIHRoZSAnYWxsX2RlZmVjdHMnIGF0dHJpYnV0ZSBvZiBhbnkgbm9kZS4gIChGb3IKK1Rlcm1pbmFsIG5vdGVzIHguZGVmZWN0cyA9PSB4LmFsbF9kZWZlY3RzLikKKworRWFjaCBvYmplY3QgaW4gYSBwYXJzZSB0cmVlIGlzIGNhbGxlZCBhICd0b2tlbicsIGFuZCBlYWNoIGhhcyBhICd0b2tlbl90eXBlJworYXR0cmlidXRlIHRoYXQgZ2l2ZXMgdGhlIG5hbWUgZnJvbSB0aGUgUkZDIDUzMjIgZ3JhbW1hciB0aGF0IGl0IHJlcHJlc2VudHMuCitOb3QgYWxsIFJGQyA1MzIyIG5vZGVzIGFyZSBwcm9kdWNlZCwgYW5kIHRoZXJlIGlzIG9uZSBub24tUkZDIDUzMjIgbm9kZSB0aGF0CittYXkgYmUgcHJvZHVjZWQ6ICdwdGV4dCcuICBBICdwdGV4dCcgaXMgYSBzdHJpbmcgb2YgcHJpbnRhYmxlIGFzY2lpIGNoYXJhY3RlcnMuCitJdCBpcyByZXR1cm5lZCBpbiBwbGFjZSBvZiBsaXN0cyBvZiAoY3RleHQvcXVvdGVkLXBhaXIpIGFuZAorKHF0ZXh0L3F1b3RlZC1wYWlyKS4KKworWFhYOiBwcm92aWRlIGNvbXBsZXRlIGxpc3Qgb2YgdG9rZW4gdHlwZXMuCisiIiIKKworaW1wb3J0IHJlCitpbXBvcnQgdXJsbGliICAgIyBGb3IgdXJsbGliLnBhcnNlLnVucXVvdGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIE9yZGVyZWREaWN0Citmcm9tIGVtYWlsIGltcG9ydCBfZW5jb2RlZF93b3JkcyBhcyBfZXcKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKKworIworIyBVc2VmdWwgY29uc3RhbnRzIGFuZCBmdW5jdGlvbnMKKyMKKworV1NQID0gc2V0KCcgXHQnKQorQ0ZXU19MRUFERVIgPSBXU1AgfCBzZXQoJygnKQorU1BFQ0lBTFMgPSBzZXQocicoKTw+QCw6Oy5cIltdJykKK0FUT01fRU5EUyA9IFNQRUNJQUxTIHwgV1NQCitET1RfQVRPTV9FTkRTID0gQVRPTV9FTkRTIC0gc2V0KCcuJykKKyMgJy4nLCAnIicsIGFuZCAnKCcgZG8gbm90IGVuZCBwaHJhc2VzIGluIG9yZGVyIHRvIHN1cHBvcnQgb2JzLXBocmFzZQorUEhSQVNFX0VORFMgPSBTUEVDSUFMUyAtIHNldCgnLiIoJykKK1RTUEVDSUFMUyA9IChTUEVDSUFMUyB8IHNldCgnLz89JykpIC0gc2V0KCcuJykKK1RPS0VOX0VORFMgPSBUU1BFQ0lBTFMgfCBXU1AKK0FTUEVDSUFMUyA9IFRTUEVDSUFMUyB8IHNldCgiKiclIikKK0FUVFJJQlVURV9FTkRTID0gQVNQRUNJQUxTIHwgV1NQCitFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUyA9IEFUVFJJQlVURV9FTkRTIC0gc2V0KCclJykKKworZGVmIHF1b3RlX3N0cmluZyh2YWx1ZSk6CisgICAgcmV0dXJuICciJytzdHIodmFsdWUpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKS5yZXBsYWNlKCciJywgcidcIicpKyciJworCisjCisjIEFjY3VtdWxhdG9yIGZvciBoZWFkZXIgZm9sZGluZworIworCitjbGFzcyBfRm9sZGVkOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heGxlbiwgcG9saWN5KToKKyAgICAgICAgc2VsZi5tYXhsZW4gPSBtYXhsZW4KKyAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgc2VsZi5sYXN0bGVuID0gMAorICAgICAgICBzZWxmLnN0aWNreXNwYWNlID0gTm9uZQorICAgICAgICBzZWxmLmZpcnN0bGluZSA9IFRydWUKKyAgICAgICAgc2VsZi5kb25lID0gW10KKyAgICAgICAgc2VsZi5jdXJyZW50ID0gW10KKworICAgIGRlZiBuZXdsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmRvbmUuZXh0ZW5kKHNlbGYuY3VycmVudCkKKyAgICAgICAgc2VsZi5kb25lLmFwcGVuZChzZWxmLnBvbGljeS5saW5lc2VwKQorICAgICAgICBzZWxmLmN1cnJlbnQuY2xlYXIoKQorICAgICAgICBzZWxmLmxhc3RsZW4gPSAwCisKKyAgICBkZWYgZmluYWxpemUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY3VycmVudDoKKyAgICAgICAgICAgIHNlbGYubmV3bGluZSgpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc2VsZi5kb25lKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBzdG9rZW4pOgorICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKworICAgIGRlZiBhcHBlbmRfaWZfZml0cyhzZWxmLCB0b2tlbiwgc3Rva2VuPU5vbmUpOgorICAgICAgICBpZiBzdG9rZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHN0b2tlbiA9IHN0cih0b2tlbikKKyAgICAgICAgbCA9IGxlbihzdG9rZW4pCisgICAgICAgIGlmIHNlbGYuc3RpY2t5c3BhY2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gPSBsZW4oc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgIGlmIHNlbGYubGFzdGxlbiArIHN0aWNreXNwYWNlX2xlbiArIGwgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzZWxmLnN0aWNreXNwYWNlKQorICAgICAgICAgICAgICAgIHNlbGYubGFzdGxlbiArPSBzdGlja3lzcGFjZV9sZW4KKyAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgICAgICBzZWxmLmxhc3RsZW4gKz0gbAorICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiB0b2tlbi5oYXNfZndzOgorICAgICAgICAgICAgICAgIHdzID0gdG9rZW4ucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgICAgICBpZiB3cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSArPSBzdHIod3MpCisgICAgICAgICAgICAgICAgICAgIHN0aWNreXNwYWNlX2xlbiArPSBsZW4od3MpCisgICAgICAgICAgICAgICAgdG9rZW4uX2ZvbGQoc2VsZikKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgaWYgc3RpY2t5c3BhY2VfbGVuIGFuZCBsICsgMSA8PSBzZWxmLm1heGxlbjoKKyAgICAgICAgICAgICAgICBtYXJnaW4gPSBzZWxmLm1heGxlbiAtIGwKKyAgICAgICAgICAgICAgICBpZiAwIDwgbWFyZ2luIDwgc3RpY2t5c3BhY2VfbGVuOgorICAgICAgICAgICAgICAgICAgICB0cmltID0gc3RpY2t5c3BhY2VfbGVuIC0gbWFyZ2luCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZVs6dHJpbV0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBzZWxmLnN0aWNreXNwYWNlW3RyaW06XQorICAgICAgICAgICAgICAgICAgICBzdGlja3lzcGFjZV9sZW4gPSB0cmltCisgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHNlbGYuc3RpY2t5c3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICAgICAgc2VsZi5sYXN0bGVuID0gbCArIHN0aWNreXNwYWNlX2xlbgorICAgICAgICAgICAgICAgIHNlbGYuc3RpY2t5c3BhY2UgPSBOb25lCisgICAgICAgICAgICAgICAgc2VsZi5maXJzdGxpbmUgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5maXJzdGxpbmU6CisgICAgICAgICAgICAgICAgc2VsZi5uZXdsaW5lKCkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc2VsZi5zdGlja3lzcGFjZSkKKyAgICAgICAgICAgIHNlbGYuY3VycmVudC5hcHBlbmQoc3Rva2VuKQorICAgICAgICAgICAgc2VsZi5zdGlja3lzcGFjZSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZmlyc3RsaW5lID0gRmFsc2UKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYubGFzdGxlbiArIGwgPD0gc2VsZi5tYXhsZW46CisgICAgICAgICAgICBzZWxmLmN1cnJlbnQuYXBwZW5kKHN0b2tlbikKKyAgICAgICAgICAgIHNlbGYubGFzdGxlbiArPSBsCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBsIDwgc2VsZi5tYXhsZW46CisgICAgICAgICAgICBzZWxmLm5ld2xpbmUoKQorICAgICAgICAgICAgc2VsZi5jdXJyZW50LmFwcGVuZChzdG9rZW4pCisgICAgICAgICAgICBzZWxmLmxhc3RsZW4gPSBsCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworIworIyBUb2tlbkxpc3QgYW5kIGl0cyBzdWJjbGFzc2VzCisjCisKK2NsYXNzIFRva2VuTGlzdChsaXN0KToKKworICAgIHRva2VuX3R5cGUgPSBOb25lCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJ3t9KHt9KScuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBlcigpLl9fcmVwcl9fKCkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHgudmFsdWUgZm9yIHggaW4gc2VsZiBpZiB4LnZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9kZWZlY3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VtKCh4LmFsbF9kZWZlY3RzIGZvciB4IGluIHNlbGYpLCBzZWxmLmRlZmVjdHMpCisKKyAgICAjCisgICAgIyBGb2xkaW5nIEFQSQorICAgICMKKyAgICAjIHBhcnRzKCk6CisgICAgIworICAgICMgcmV0dXJuIGEgbGlzdCBvZiBvYmplY3RzIHRoYXQgY29uc3RpdHV0ZSB0aGUgImhpZ2hlciBsZXZlbCBzeW50YWN0aWMKKyAgICAjIG9iamVjdHMiIHNwZWNpZmllZCBieSB0aGUgUkZDIGFzIHRoZSBiZXN0IHBsYWNlcyB0byBmb2xkIGEgaGVhZGVyIGxpbmUuCisgICAgIyBUaGUgcmV0dXJuZWQgb2JqZWN0cyBtdXN0IGluY2x1ZGUgbGVhZGluZyBmb2xkaW5nIHdoaXRlIHNwYWNlLCBldmVuIGlmCisgICAgIyB0aGlzIG1lYW5zIG11dGF0aW5nIHRoZSB1bmRlcmx5aW5nIHBhcnNlIHRyZWUgb2YgdGhlIG9iamVjdC4gIEVhY2ggb2JqZWN0CisgICAgIyBpcyBvbmx5IHJlc3BvbnNpYmxlIGZvciByZXR1cm5pbmcgKml0cyogcGFydHMsIGFuZCBzaG91bGQgbm90IGRyaWxsIGRvd24KKyAgICAjIHRvIGFueSBsb3dlciBsZXZlbCBleGNlcHQgYXMgcmVxdWlyZWQgdG8gbWVldCB0aGUgbGVhZGluZyBmb2xkaW5nIHdoaXRlCisgICAgIyBzcGFjZSBjb25zdHJhaW50LgorICAgICMKKyAgICAjIF9mb2xkKGZvbGRlZCk6CisgICAgIworICAgICMgICBmb2xkZWQ6IHRoZSByZXN1bHQgYWNjdW11bGF0b3IuICBUaGlzIGlzIGFuIGluc3RhbmNlIG9mIF9Gb2xkZWQuCisgICAgIyAgICAgICAoWFhYOiBJIGhhdmVuJ3QgZmluaXNoZWQgZmFjdG9yaW5nIHRoaXMgb3V0IHlldCwgdGhlIGZvbGRpbmcgY29kZQorICAgICMgICAgICAgcHJldHR5IG11Y2ggdXNlcyB0aGlzIGFzIGEgc3RhdGUgb2JqZWN0LikgV2hlbiB0aGUgZm9sZGVkLmN1cnJlbnQKKyAgICAjICAgICAgIGNvbnRhaW5zIGFzIG11Y2ggdGV4dCBhcyB3aWxsIGZpdCwgdGhlIF9mb2xkIG1ldGhvZCBzaG91bGQgY2FsbAorICAgICMgICAgICAgZm9sZGVkLm5ld2xpbmUuCisgICAgIyAgZm9sZGVkLmxhc3RsZW46IHRoZSBjdXJyZW50IGxlbmd0aCBvZiB0aGUgdGVzdCBzdG9yZWQgaW4gZm9sZGVkLmN1cnJlbnQuCisgICAgIyAgZm9sZGVkLm1heGxlbjogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBtYXkgYXBwZWFyIG9uIGEKKyAgICAjICAgICAgIGZvbGRlZCBsaW5lLiAgRGlmZmVycyBmcm9tIHRoZSBwb2xpY3kgc2V0dGluZyBpbiB0aGF0ICJubyBsaW1pdCIgaXMKKyAgICAjICAgICAgIHJlcHJlc2VudGVkIGJ5ICtpbmYsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSB1c2VkIGluIHRoZSB0cml2aWFsbHkKKyAgICAjICAgICAgIGxvZ2ljYWwgZmFzaGlvbiBpbiBjb21wYXJpc29ucy4KKyAgICAjCisgICAgIyBDdXJyZW50bHkgbm8gc3ViY2xhc3NlcyBpbXBsZW1lbnQgcGFydHMsIGFuZCBJIHRoaW5rIHRoaXMgd2lsbCByZW1haW4KKyAgICAjIHRydWUuICBBIHN1YmNsYXNzIG9ubHkgbmVlZHMgdG8gaW1wbGVtZW50IF9mb2xkIHdoZW4gdGhlIGdlbmVyaWMgdmVyc2lvbgorICAgICMgaXNuJ3Qgc3VmZmljaWVudC4gIF9mb2xkIHdpbGwgbmVlZCB0byBiZSBpbXBsZW1lbnRlZCBwcmltYXJpbHkgd2hlbiBpdCBpcworICAgICMgcG9zc2libGUgZm9yIGVuY29kZWQgd29yZHMgdG8gYXBwZWFyIGluIHRoZSBzcGVjaWFsaXplZCB0b2tlbi1saXN0LCBzaW5jZQorICAgICMgdGhlcmUgaXMgbm8gZ2VuZXJpYyBhbGdvcml0aG0gdGhhdCBjYW4ga25vdyB3aGVyZSBleGFjdGx5IHRoZSBlbmNvZGVkCisgICAgIyB3b3JkcyBhcmUgYWxsb3dlZC4gIEEgX2ZvbGQgaW1wbGVtZW50YXRpb24gaXMgcmVzcG9uc2libGUgZm9yIGZpbGxpbmcKKyAgICAjIGxpbmVzIGluIHRoZSBzYW1lIGdlbmVyYWwgd2F5IHRoYXQgdGhlIHRvcCBsZXZlbCBfZm9sZCBkb2VzLiBJdCBtYXksIGFuZAorICAgICMgc2hvdWxkLCBjYWxsIHRoZSBfZm9sZCBtZXRob2Qgb2Ygc3ViLW9iamVjdHMgaW4gYSBzaW1pbGFyIGZhc2hpb24gdG8gdGhhdAorICAgICMgb2YgdGhlIHRvcCBsZXZlbCBfZm9sZC4KKyAgICAjCisgICAgIyBYWFg6IEknbSBob3BpbmcgaXQgd2lsbCBiZSBwb3NzaWJsZSB0byBmYWN0b3IgdGhlIGV4aXN0aW5nIGNvZGUgZnVydGhlcgorICAgICMgdG8gcmVkdWNlIHJlZHVuZGFuY3kgYW5kIG1ha2UgdGhlIGxvZ2ljIGNsZWFyZXIuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFydHMoc2VsZik6CisgICAgICAgIGtsYXNzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgdGhpcyA9IFtdCisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgdG9rZW4uc3RhcnRzd2l0aF9md3MoKToKKyAgICAgICAgICAgICAgICBpZiB0aGlzOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCB0aGlzWzBdIGlmIGxlbih0aGlzKT09MSBlbHNlIGtsYXNzKHRoaXMpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKQorICAgICAgICAgICAgZW5kX3dzID0gdG9rZW4ucG9wX3RyYWlsaW5nX3dzKCkKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgaWYgZW5kX3dzOgorICAgICAgICAgICAgICAgIHlpZWxkIGtsYXNzKHRoaXMpCisgICAgICAgICAgICAgICAgdGhpcyA9IFtlbmRfd3NdCisgICAgICAgIGlmIHRoaXM6CisgICAgICAgICAgICB5aWVsZCB0aGlzWzBdIGlmIGxlbih0aGlzKT09MSBlbHNlIGtsYXNzKHRoaXMpCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLnN0YXJ0c3dpdGhfZndzKCkKKworICAgIGRlZiBwb3BfbGVhZGluZ19md3Moc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnZndzJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnBvcCgwKQorICAgICAgICByZXR1cm4gc2VsZlswXS5wb3BfbGVhZGluZ19md3MoKQorCisgICAgZGVmIHBvcF90cmFpbGluZ193cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZlstMV0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wb3AoLTEpCisgICAgICAgIHJldHVybiBzZWxmWy0xXS5wb3BfdHJhaWxpbmdfd3MoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGhhc19md3Moc2VsZik6CisgICAgICAgIGZvciBwYXJ0IGluIHNlbGY6CisgICAgICAgICAgICBpZiBwYXJ0Lmhhc19md3M6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uaGFzX2xlYWRpbmdfY29tbWVudCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29tbWVudHMoc2VsZik6CisgICAgICAgIGNvbW1lbnRzID0gW10KKyAgICAgICAgZm9yIHRva2VuIGluIHNlbGY6CisgICAgICAgICAgICBjb21tZW50cy5leHRlbmQodG9rZW4uY29tbWVudHMpCisgICAgICAgIHJldHVybiBjb21tZW50cworCisgICAgZGVmIGZvbGQoc2VsZiwgKiwgcG9saWN5KToKKyAgICAgICAgIyBtYXhfbGluZV9sZW5ndGggMC9Ob25lIG1lYW5zIG5vIGxpbWl0LCBpZTogaW5maW5pdGVseSBsb25nLgorICAgICAgICBtYXhsZW4gPSBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoIG9yIGZsb2F0KCIraW5mIikKKyAgICAgICAgZm9sZGVkID0gX0ZvbGRlZChtYXhsZW4sIHBvbGljeSkKKyAgICAgICAgc2VsZi5fZm9sZChmb2xkZWQpCisgICAgICAgIGZvbGRlZC5maW5hbGl6ZSgpCisgICAgICAgIHJldHVybiBzdHIoZm9sZGVkKQorCisgICAgZGVmIGFzX2VuY29kZWRfd29yZChzZWxmLCBjaGFyc2V0KToKKyAgICAgICAgIyBUaGlzIHdvcmtzIG9ubHkgZm9yIHRoaW5ncyByZXR1cm5lZCBieSAncGFydHMnLCB3aGljaCBpbmNsdWRlCisgICAgICAgICMgdGhlIGxlYWRpbmcgZndzLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQuCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIHdzID0gc2VsZi5wb3BfbGVhZGluZ19md3MoKQorICAgICAgICBpZiB3czoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQod3MpCisgICAgICAgIHRyYWlsZXIgPSBzZWxmLnBvcCgtMSkgaWYgc2VsZlstMV0udG9rZW5fdHlwZT09J2Z3cycgZWxzZSAnJworICAgICAgICByZXMuYXBwZW5kKF9ldy5lbmNvZGUoc3RyKHNlbGYpLCBjaGFyc2V0KSkKKyAgICAgICAgcmVzLmFwcGVuZCh0cmFpbGVyKQorICAgICAgICByZXR1cm4gJycuam9pbihyZXMpCisKKyAgICBkZWYgY3RlX2VuY29kZShzZWxmLCBjaGFyc2V0LCBwb2xpY3kpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBmb3IgcGFydCBpbiBzZWxmOgorICAgICAgICAgICAgcmVzLmFwcGVuZChwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgcG9saWN5KSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgIGZvciBwYXJ0IGluIHNlbGYucGFydHM6CisgICAgICAgICAgICB0c3RyID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFhYWDogdGhpcyBzaG91bGQgYmUgYSBwb2xpY3kgc2V0dGluZworICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JworICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmN0ZV9lbmNvZGUoY2hhcnNldCwgZm9sZGVkLnBvbGljeSkKKyAgICAgICAgICAgICAgICB0bGVuID0gbGVuKHRzdHIpCisgICAgICAgICAgICBpZiBmb2xkZWQuYXBwZW5kX2lmX2ZpdHMocGFydCwgdHN0cik6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBpZiBhbnkgYW5kIG1ha2UgaXQgc3RpY2t5LCB0bworICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICB3cyA9IHBhcnQucG9wX2xlYWRpbmdfZndzKCkKKyAgICAgICAgICAgIGlmIHdzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgUGVlbCBvZmYgdGhlIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbWFrZSBpdCBzdGlja3ksIHRvCisgICAgICAgICAgICAgICAgIyBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICAgICAgZm9sZGVkLnN0aWNreXNwYWNlID0gc3RyKHBhcnQucG9wKDApKQorICAgICAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHBhcnQuaGFzX2Z3czoKKyAgICAgICAgICAgICAgICBwYXJ0Ll9mb2xkKGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBUaGVyZSBhcmUgbm8gZm9sZCBwb2ludHMgaW4gdGhpcyBvbmU7IGl0IGlzIHRvbyBsb25nIGZvciBhIHNpbmdsZQorICAgICAgICAgICAgIyBsaW5lIGFuZCBjYW4ndCBiZSBzcGxpdC4uLndlIGp1c3QgaGF2ZSB0byBwdXQgaXQgb24gaXRzIG93biBsaW5lLgorICAgICAgICAgICAgZm9sZGVkLmFwcGVuZCh0c3RyKQorICAgICAgICAgICAgZm9sZGVkLm5ld2xpbmUoKQorCisgICAgZGVmIHBwcmludChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICBwcmludCgnXG4nLmpvaW4oc2VsZi5fcHAoaW5kZW50PScnKSkpCisKKyAgICBkZWYgcHBzdHIoc2VsZiwgaW5kZW50PScnKToKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLl9wcChpbmRlbnQ9JycpKQorCisgICAgZGVmIF9wcChzZWxmLCBpbmRlbnQ9JycpOgorICAgICAgICB5aWVsZCAne317fS97fSgnLmZvcm1hdCgKKyAgICAgICAgICAgIGluZGVudCwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgc2VsZi50b2tlbl90eXBlKQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHRva2VuLCAnX3BwJyk6CisgICAgICAgICAgICAgICAgeWllbGQgKGluZGVudCArICcgICAgISEgaW52YWxpZCBlbGVtZW50IGluIHRva2VuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlzdDogeyFyfScuZm9ybWF0KHRva2VuKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gdG9rZW4uX3BwKGluZGVudCsnICAgICcpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgIGlmIHNlbGYuZGVmZWN0czoKKyAgICAgICAgICAgIGV4dHJhID0gJyBEZWZlY3RzOiB7fScuZm9ybWF0KHNlbGYuZGVmZWN0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4dHJhID0gJycKKyAgICAgICAgeWllbGQgJ3t9KXt9Jy5mb3JtYXQoaW5kZW50LCBleHRyYSkKKworCitjbGFzcyBXaGl0ZVNwYWNlVG9rZW5MaXN0KFRva2VuTGlzdCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnICcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFt4LmNvbnRlbnQgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdjb21tZW50J10KKworCitjbGFzcyBVbnN0cnVjdHVyZWRUb2tlbkxpc3QoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndW5zdHJ1Y3R1cmVkJworCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgIGlmIGFueSh4LnRva2VuX3R5cGU9PSdlbmNvZGVkLXdvcmQnIGZvciB4IGluIHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGRfZW5jb2RlZChmb2xkZWQpCisgICAgICAgICMgSGVyZSB3ZSBjYW4gaGF2ZSBlaXRoZXIgYSBwdXJlIEFTQ0lJIHN0cmluZyB0aGF0IG1heSBvciBtYXkgbm90CisgICAgICAgICMgaGF2ZSBzdXJyb2dhdGVlc2NhcGUgZW5jb2RlZCBieXRlcywgb3IgYSB1bmljb2RlIHN0cmluZy4KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKKyAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKKyAgICAgICAgICAgIGlzX2V3ID0gRmFsc2UKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzdHIocGFydCkuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIGFueShpc2luc3RhbmNlKHgsIGVycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0KQorICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBwYXJ0LmFsbF9kZWZlY3RzKToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1bmtub3duLThiaXQnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICd1dGYtOCcKKyAgICAgICAgICAgICAgICBpZiBsYXN0X2V3IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIFdlJ3ZlIGFscmVhZHkgZG9uZSBhbiBFVywgY29tYmluZSB0aGlzIG9uZSB3aXRoIGl0CisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlcmUncyByb29tLgorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGdldF91bnN0cnVjdHVyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAnJy5qb2luKGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XStbdHN0cl0pKS5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICAgICAgb2xkbGFzdGxlbiA9IHN1bShsZW4oeCkgZm9yIHggaW4gZm9sZGVkLmN1cnJlbnRbOmxhc3RfZXddKQorICAgICAgICAgICAgICAgICAgICBzY2h1bmsgPSBzdHIoY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGxjaHVuayA9IGxlbihzY2h1bmspCisgICAgICAgICAgICAgICAgICAgIGlmIG9sZGxhc3RsZW4gKyBsY2h1bmsgPD0gZm9sZGVkLm1heGxlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBmb2xkZWQuY3VycmVudFtsYXN0X2V3Ol0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5hcHBlbmQoc2NodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVkLmxhc3RsZW4gPSBvbGRsYXN0bGVuICsgbGNodW5rCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRzdHIgPSBwYXJ0LmFzX2VuY29kZWRfd29yZChjaGFyc2V0KQorICAgICAgICAgICAgICAgIGlzX2V3ID0gVHJ1ZQorICAgICAgICAgICAgaWYgZm9sZGVkLmFwcGVuZF9pZl9maXRzKHBhcnQsIHRzdHIpOgorICAgICAgICAgICAgICAgIGlmIGlzX2V3OgorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKGZvbGRlZC5jdXJyZW50KSAtIDEKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNfZXcgb3IgbGFzdF9ldzoKKyAgICAgICAgICAgICAgICAjIEl0J3MgdG9vIGJpZyB0byBmaXQgb24gdGhlIGxpbmUsIGJ1dCBzaW5jZSB3ZSd2ZQorICAgICAgICAgICAgICAgICMgZ290IGVuY29kZWQgd29yZHMgd2UgY2FuIHVzZSBlbmNvZGVkIHdvcmQgZm9sZGluZy4KKyAgICAgICAgICAgICAgICBwYXJ0Ll9mb2xkX2FzX2V3KGZvbGRlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBQZWVsIG9mZiB0aGUgbGVhZGluZyB3aGl0ZXNwYWNlIGlmIGFueSBhbmQgbWFrZSBpdCBzdGlja3ksIHRvCisgICAgICAgICAgICAjIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgICAgICAgIHdzID0gcGFydC5wb3BfbGVhZGluZ19md3MoKQorICAgICAgICAgICAgaWYgd3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZm9sZGVkLnN0aWNreXNwYWNlID0gc3RyKHdzKQorICAgICAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIHBhcnQuaGFzX2Z3czoKKyAgICAgICAgICAgICAgICBwYXJ0LmZvbGQoZm9sZGVkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIEl0IGNhbid0IGJlIHNwbGl0Li4ud2UganVzdCBoYXZlIHRvIHB1dCBpdCBvbiBpdHMgb3duIGxpbmUuCisgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHRzdHIpCisgICAgICAgICAgICBmb2xkZWQubmV3bGluZSgpCisgICAgICAgICAgICBsYXN0X2V3ID0gTm9uZQorCisgICAgZGVmIGN0ZV9lbmNvZGUoc2VsZiwgY2hhcnNldCwgcG9saWN5KToKKyAgICAgICAgcmVzID0gW10KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHNwYXJ0ID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3BhcnQuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBwb2xpY3kpKQorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKHJlcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0bCA9IGdldF91bnN0cnVjdHVyZWQoJycuam9pbihyZXNbbGFzdF9ldzpdICsgW3NwYXJ0XSkpCisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQodGwuYXNfZW5jb2RlZF93b3JkKCkpCisgICAgICAgIHJldHVybiAnJy5qb2luKHJlcykKKworCitjbGFzcyBQaHJhc2UoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAncGhyYXNlJworCisgICAgZGVmIF9mb2xkKHNlbGYsIGZvbGRlZCk6CisgICAgICAgICMgQXMgd2l0aCBVbnN0cnVjdHVyZWQsIHdlIGNhbiBoYXZlIHB1cmUgQVNDSUkgd2l0aCBvciB3aXRob3V0CisgICAgICAgICMgc3Vycm9nYXRlZXNjYXBlIGVuY29kZWQgYnl0ZXMsIG9yIHdlIGNvdWxkIGhhdmUgdW5pY29kZS4gIEJ1dCB0aGlzCisgICAgICAgICMgY2FzZSBpcyBtb3JlIGNvbXBsaWNhdGVkLCBzaW5jZSB3ZSBoYXZlIHRvIGRlYWwgd2l0aCB0aGUgdmFyaW91cworICAgICAgICAjIHN1Yi10b2tlbiB0eXBlcyBhbmQgaG93IHRoZXkgY2FuIGJlIGNvbXBvc2VkIGluIHRoZSBmYWNlIG9mCisgICAgICAgICMgdW5pY29kZS10aGF0LW5lZWRzLUNURS1lbmNvZGluZywgYW5kIHRoZSBmYWN0IHRoYXQgaWYgYSB0b2tlbiBhCisgICAgICAgICMgY29tbWVudCB0aGF0IGJlY29tZXMgYSBiYXJyaWVyIGFjcm9zcyB3aGljaCB3ZSBjYW4ndCBjb21wb3NlIGVuY29kZWQKKyAgICAgICAgIyB3b3Jkcy4KKyAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZi5wYXJ0czoKKyAgICAgICAgICAgIHRzdHIgPSBzdHIocGFydCkKKyAgICAgICAgICAgIHRsZW4gPSBsZW4odHN0cikKKyAgICAgICAgICAgIGhhc19ldyA9IEZhbHNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RyKHBhcnQpLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHBhcnQuYWxsX2RlZmVjdHMpOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3V0Zi04JworICAgICAgICAgICAgICAgIGlmIGxhc3RfZXcgaXMgbm90IE5vbmUgYW5kIG5vdCBwYXJ0Lmhhc19sZWFkaW5nX2NvbW1lbnQoKToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSd2ZSBhbHJlYWR5IGRvbmUgYW4gRVcsIGxldCdzIHNlZSBpZiB3ZSBjYW4gY29tYmluZQorICAgICAgICAgICAgICAgICAgICAjIHRoaXMgb25lIHdpdGggaXQuICBUaGUgbGFzdF9ldyBsb2dpYyBlbnN1cmVzIHRoYXQgYWxsIHdlCisgICAgICAgICAgICAgICAgICAgICMgaGF2ZSBhdCB0aGlzIHBvaW50IGlzIGF0b21zLCBubyBjb21tZW50cyBvciBxdW90ZWQKKyAgICAgICAgICAgICAgICAgICAgIyBzdHJpbmdzLiAgU28gd2UgY2FuIHRyZWF0IHRoZSB0ZXh0IGJldHdlZW4gdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgICAgIyBlbmNvZGVkIHdvcmQgYW5kIHRoZSBjb250ZW50IG9mIHRoaXMgdG9rZW4gYXMKKyAgICAgICAgICAgICAgICAgICAgIyB1bnN0cnVjdHVyZWQgdGV4dCwgYW5kIHRoaW5ncyB3aWxsIHdvcmsgY29ycmVjdGx5LiAgQnV0CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byBzdHJpcCBvZmYgYW55IHRyYWlsaW5nIGNvbW1lbnQgb24gdGhpcyB0b2tlbgorICAgICAgICAgICAgICAgICAgICAjIGZpcnN0LCBhbmQgaWYgaXQgaXMgYSBxdW90ZWQgc3RyaW5nIHdlIGhhdmUgdG8gcHVsbCBvdXQKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgY29udGVudCAod2UncmUgZW5jb2RpbmcgaXQsIHNvIGl0IG5vIGxvbmdlciBuZWVkcyB0bworICAgICAgICAgICAgICAgICAgICAjIGJlIHF1b3RlZCkuCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRbLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnIGFuZCBwYXJ0LmNvbW1lbnRzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gcGFydC5wb3AoLTEpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXIgPSAnJworICAgICAgICAgICAgICAgICAgICBmb3IgaSwgdG9rZW4gaW4gZW51bWVyYXRlKHBhcnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0W2ldID0gVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KHRva2VuWzpdKQorICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGdldF91bnN0cnVjdHVyZWQoCisgICAgICAgICAgICAgICAgICAgICAgICAnJy5qb2luKGZvbGRlZC5jdXJyZW50W2xhc3RfZXc6XStbdHN0cl0pKS5hc19lbmNvZGVkX3dvcmQoY2hhcnNldCkKKyAgICAgICAgICAgICAgICAgICAgc2NodW5rID0gc3RyKGNodW5rKQorICAgICAgICAgICAgICAgICAgICBsY2h1bmsgPSBsZW4oc2NodW5rKQorICAgICAgICAgICAgICAgICAgICBpZiBsYXN0X2V3ICsgbGNodW5rIDw9IGZvbGRlZC5tYXhsZW46CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZm9sZGVkLmN1cnJlbnRbbGFzdF9ldzpdCisgICAgICAgICAgICAgICAgICAgICAgICBmb2xkZWQuYXBwZW5kKHNjaHVuaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gc3VtKGxlbih4KSBmb3IgeCBpbiBmb2xkZWQuY3VycmVudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgdHN0ciA9IHBhcnQuYXNfZW5jb2RlZF93b3JkKGNoYXJzZXQpCisgICAgICAgICAgICAgICAgdGxlbiA9IGxlbih0c3RyKQorICAgICAgICAgICAgICAgIGhhc19ldyA9IFRydWUKKyAgICAgICAgICAgIGlmIGZvbGRlZC5hcHBlbmRfaWZfZml0cyhwYXJ0LCB0c3RyKToKKyAgICAgICAgICAgICAgICBpZiBoYXNfZXcgYW5kIG5vdCBwYXJ0LmNvbW1lbnRzOgorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gbGVuKGZvbGRlZC5jdXJyZW50KSAtIDEKKyAgICAgICAgICAgICAgICBlbGlmIHBhcnQuY29tbWVudHMgb3IgcGFydC50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgIyBJZiBhIGNvbW1lbnQgaXMgaW52b2x2ZWQgd2UgY2FuJ3QgY29tYmluZSBFV3MuICBBbmQgaWYgYQorICAgICAgICAgICAgICAgICAgICAjIHF1b3RlZCBzdHJpbmcgaXMgaW52b2x2ZWQsIGl0J3Mgbm90IHdvcnRoIHRoZSBlZmZvcnQgdG8KKyAgICAgICAgICAgICAgICAgICAgIyB0cnkgdG8gY29tYmluZSB0aGVtLgorICAgICAgICAgICAgICAgICAgICBsYXN0X2V3ID0gTm9uZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBwYXJ0Ll9mb2xkKGZvbGRlZCkKKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGxhc3RfZXcgPSBOb25lCisgICAgICAgIGlzX2V3ID0gRmFsc2UKKyAgICAgICAgZm9yIHBhcnQgaW4gc2VsZjoKKyAgICAgICAgICAgIHNwYXJ0ID0gc3RyKHBhcnQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3BhcnQuZW5jb2RlKCd1cy1hc2NpaScpCisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzcGFydCkKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgaXNfZXcgPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgbGFzdF9ldyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfZXcgPSBsZW4ocmVzKQorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHBhcnQuY3RlX2VuY29kZShjaGFyc2V0LCBwb2xpY3kpKQorICAgICAgICAgICAgICAgIGVsaWYgbm90IHBhcnQuaGFzX2xlYWRpbmdfY29tbWVudCgpOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJ0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyBhbmQgcGFydC5jb21tZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IHBhcnQucG9wKC0xKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIGksIHRva2VuIGluIGVudW1lcmF0ZShwYXJ0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydFtpXSA9IFVuc3RydWN0dXJlZFRva2VuTGlzdCh0b2tlbls6XSkKKyAgICAgICAgICAgICAgICAgICAgdGwgPSBnZXRfdW5zdHJ1Y3R1cmVkKCcnLmpvaW4ocmVzW2xhc3RfZXc6XSArIFtzcGFydF0pKQorICAgICAgICAgICAgICAgICAgICByZXNbbGFzdF9ldzpdID0gW3RsLmFzX2VuY29kZWRfd29yZChjaGFyc2V0KV0KKyAgICAgICAgICAgIGlmIHBhcnQuY29tbWVudHMgb3IgKG5vdCBpc19ldyBhbmQgcGFydC50b2tlbl90eXBlID09ICdxdW90ZWQtc3RyaW5nJyk6CisgICAgICAgICAgICAgICAgbGFzdF9ldyA9IE5vbmUKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCitjbGFzcyBXb3JkKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3dvcmQnCisKKworY2xhc3MgQ0ZXU0xpc3QoV2hpdGVTcGFjZVRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2Nmd3MnCisKKyAgICBkZWYgaGFzX2xlYWRpbmdfY29tbWVudChzZWxmKToKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5jb21tZW50cykKKworCitjbGFzcyBBdG9tKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2F0b20nCisKKworY2xhc3MgVG9rZW4oVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAndG9rZW4nCisKKworY2xhc3MgRW5jb2RlZFdvcmQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnZW5jb2RlZC13b3JkJworICAgIGN0ZSA9IE5vbmUKKyAgICBjaGFyc2V0ID0gTm9uZQorICAgIGxhbmcgPSBOb25lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZW5jb2RlZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5jdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5jdGUKKyAgICAgICAgX2V3LmVuY29kZShzdHIoc2VsZiksIHNlbGYuY2hhcnNldCkKKworCisKK2NsYXNzIFF1b3RlZFN0cmluZyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdxdW90ZWQtc3RyaW5nJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRlbnQoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgudmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBxdW90ZWRfdmFsdWUoc2VsZik6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChzdHIoeCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoeC52YWx1ZSkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHN0cmlwcGVkX3ZhbHVlKHNlbGYpOgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLnZhbHVlCisKKworY2xhc3MgQmFyZVF1b3RlZFN0cmluZyhRdW90ZWRTdHJpbmcpOgorCisgICAgdG9rZW5fdHlwZSA9ICdiYXJlLXF1b3RlZC1zdHJpbmcnCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHF1b3RlX3N0cmluZygnJy5qb2luKHN0cih4KSBmb3IgeCBpbiBzZWxmKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYpCisKKworY2xhc3MgQ29tbWVudChXaGl0ZVNwYWNlVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnY29tbWVudCcKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdW0oWworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiKCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxmLnF1b3RlKHgpIGZvciB4IGluIHNlbGZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiKSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sIFtdKSkKKworICAgIGRlZiBxdW90ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIHZhbHVlLnRva2VuX3R5cGUgPT0gJ2NvbW1lbnQnOgorICAgICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkucmVwbGFjZSgnXFwnLCAnXFxcXCcpLnJlcGxhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCAnXCgnKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJywgJ1wpJykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gJycuam9pbihzdHIoeCkgZm9yIHggaW4gc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb21tZW50cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFtzZWxmLmNvbnRlbnRdCisKK2NsYXNzIEFkZHJlc3NMaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2FkZHJlc3MtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyZXNzZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1bSgoeC5tYWlsYm94ZXMKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGU9PSdhZGRyZXNzJyksIFtdKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzdW0oKHguYWxsX21haWxib3hlcworICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J2FkZHJlc3MnKSwgW10pCisKKworY2xhc3MgQWRkcmVzcyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhZGRyZXNzJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdncm91cCc6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS5kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbWFpbGJveCc6CisgICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCisgICAgICAgIGVsaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdpbnZhbGlkLW1haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzBdLm1haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbWFpbGJveCc6CisgICAgICAgICAgICByZXR1cm4gW3NlbGZbMF1dCisgICAgICAgIGVsaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdpbnZhbGlkLW1haWxib3gnOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmWzBdXQorICAgICAgICByZXR1cm4gc2VsZlswXS5hbGxfbWFpbGJveGVzCisKK2NsYXNzIE1haWxib3hMaXN0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ21haWxib3gtbGlzdCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmIGlmIHgudG9rZW5fdHlwZT09J21haWxib3gnXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBbeCBmb3IgeCBpbiBzZWxmCisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgaW4gKCdtYWlsYm94JywgJ2ludmFsaWQtbWFpbGJveCcpXQorCisKK2NsYXNzIEdyb3VwTGlzdChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdncm91cC1saXN0JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1haWxib3hlcyhzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYgb3Igc2VsZlswXS50b2tlbl90eXBlICE9ICdtYWlsYm94LWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzBdLm1haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmIG9yIHNlbGZbMF0udG9rZW5fdHlwZSAhPSAnbWFpbGJveC1saXN0JzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1cm4gc2VsZlswXS5hbGxfbWFpbGJveGVzCisKKworY2xhc3MgR3JvdXAoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAiZ3JvdXAiCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmWzJdLnRva2VuX3R5cGUgIT0gJ2dyb3VwLWxpc3QnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIHJldHVybiBzZWxmWzJdLm1haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9tYWlsYm94ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMl0udG9rZW5fdHlwZSAhPSAnZ3JvdXAtbGlzdCc6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgcmV0dXJuIHNlbGZbMl0uYWxsX21haWxib3hlcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKworY2xhc3MgTmFtZUFkZHIoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbmFtZS1hZGRyJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYpID09IDE6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZlswXS5kaXNwbGF5X25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0ubG9jYWxfcGFydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbLTFdLmRvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJvdXRlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlstMV0ucm91dGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWy0xXS5hZGRyX3NwZWMKKworCitjbGFzcyBBbmdsZUFkZHIoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYW5nbGUtYWRkcicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdhZGRyLXNwZWMnOgorICAgICAgICAgICAgICAgIHJldHVybiB4LmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ2FkZHItc3BlYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcm91dGUoc2VsZik6CisgICAgICAgIGZvciB4IGluIHNlbGY6CisgICAgICAgICAgICBpZiB4LnRva2VuX3R5cGUgPT0gJ29icy1yb3V0ZSc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHguZG9tYWlucworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgZm9yIHggaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAnYWRkci1zcGVjJzoKKyAgICAgICAgICAgICAgICByZXR1cm4geC5hZGRyX3NwZWMKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiAnPD4nCisKKworY2xhc3MgT2JzUm91dGUoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnb2JzLXJvdXRlJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbnMoc2VsZik6CisgICAgICAgIHJldHVybiBbeC5kb21haW4gZm9yIHggaW4gc2VsZiBpZiB4LnRva2VuX3R5cGUgPT0gJ2RvbWFpbiddCisKKworY2xhc3MgTWFpbGJveChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtYWlsYm94JworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICduYW1lLWFkZHInOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0uZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbG9jYWxfcGFydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0ubG9jYWxfcGFydAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbMF0uZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcm91dGUoc2VsZik6CisgICAgICAgIGlmIHNlbGZbMF0udG9rZW5fdHlwZSA9PSAnbmFtZS1hZGRyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnJvdXRlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZlswXS5hZGRyX3NwZWMKKworCitjbGFzcyBJbnZhbGlkTWFpbGJveChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdpbnZhbGlkLW1haWxib3gnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgbG9jYWxfcGFydCA9IGRvbWFpbiA9IHJvdXRlID0gYWRkcl9zcGVjID0gZGlzcGxheV9uYW1lCisKKworY2xhc3MgRG9tYWluKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvbWFpbicKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJy5qb2luKHN1cGVyKCkudmFsdWUuc3BsaXQoKSkKKworCitjbGFzcyBEb3RBdG9tKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvdC1hdG9tJworCisKK2NsYXNzIERvdEF0b21UZXh0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvdC1hdG9tLXRleHQnCisKKworY2xhc3MgQWRkclNwZWMoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnYWRkci1zcGVjJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmWzBdLmxvY2FsX3BhcnQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkb21haW4oc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA8IDM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gc2VsZlstMV0uZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIGlmIGxlbihzZWxmKSA8IDM6CisgICAgICAgICAgICByZXR1cm4gc2VsZlswXS52YWx1ZQorICAgICAgICByZXR1cm4gc2VsZlswXS52YWx1ZS5yc3RyaXAoKStzZWxmWzFdLnZhbHVlK3NlbGZbMl0udmFsdWUubHN0cmlwKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhZGRyX3NwZWMoc2VsZik6CisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi5sb2NhbF9wYXJ0KQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1ET1RfQVRPTV9FTkRTKToKKyAgICAgICAgICAgIGxwID0gcXVvdGVfc3RyaW5nKHNlbGYubG9jYWxfcGFydCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxwID0gc2VsZi5sb2NhbF9wYXJ0CisgICAgICAgIGlmIHNlbGYuZG9tYWluIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGxwICsgJ0AnICsgc2VsZi5kb21haW4KKyAgICAgICAgcmV0dXJuIGxwCisKKworY2xhc3MgT2JzTG9jYWxQYXJ0KFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ29icy1sb2NhbC1wYXJ0JworCisKK2NsYXNzIERpc3BsYXlOYW1lKFBocmFzZSk6CisKKyAgICB0b2tlbl90eXBlID0gJ2Rpc3BsYXktbmFtZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CisgICAgICAgIHJlcyA9IFRva2VuTGlzdChzZWxmKQorICAgICAgICBpZiByZXNbMF0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICByZXMucG9wKDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiByZXNbMF1bMF0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICAgICAgcmVzWzBdID0gVG9rZW5MaXN0KHJlc1swXVsxOl0pCisgICAgICAgIGlmIHJlc1stMV0udG9rZW5fdHlwZSA9PSAnY2Z3cyc6CisgICAgICAgICAgICByZXMucG9wKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIHJlc1stMV1bLTFdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgICAgIHJlc1stMV0gPSBUb2tlbkxpc3QocmVzWy0xXVs6LTFdKQorICAgICAgICByZXR1cm4gcmVzLnZhbHVlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHF1b3RlID0gRmFsc2UKKyAgICAgICAgaWYgc2VsZi5kZWZlY3RzOgorICAgICAgICAgICAgcXVvdGUgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgICAgIGlmIHgudG9rZW5fdHlwZSA9PSAncXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgIHF1b3RlID0gVHJ1ZQorICAgICAgICBpZiBxdW90ZToKKyAgICAgICAgICAgIHByZSA9IHBvc3QgPSAnJworICAgICAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlPT0nY2Z3cycgb3Igc2VsZlswXVswXS50b2tlbl90eXBlPT0nY2Z3cyc6CisgICAgICAgICAgICAgICAgcHJlID0gJyAnCisgICAgICAgICAgICBpZiBzZWxmWy0xXS50b2tlbl90eXBlPT0nY2Z3cycgb3Igc2VsZlstMV1bLTFdLnRva2VuX3R5cGU9PSdjZndzJzoKKyAgICAgICAgICAgICAgICBwb3N0ID0gJyAnCisgICAgICAgICAgICByZXR1cm4gcHJlK3F1b3RlX3N0cmluZyhzZWxmLmRpc3BsYXlfbmFtZSkrcG9zdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkudmFsdWUKKworCitjbGFzcyBMb2NhbFBhcnQoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnbG9jYWwtcGFydCcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICJxdW90ZWQtc3RyaW5nIjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmWzBdLnF1b3RlZF92YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGZbMF0udmFsdWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsb2NhbF9wYXJ0KHNlbGYpOgorICAgICAgICAjIFN0cmlwIHdoaXRlc3BhY2UgZnJvbSBmcm9udCwgYmFjaywgYW5kIGFyb3VuZCBkb3RzLgorICAgICAgICByZXMgPSBbRE9UXQorICAgICAgICBsYXN0ID0gRE9UCisgICAgICAgIGxhc3RfaXNfdGwgPSBGYWxzZQorICAgICAgICBmb3IgdG9rIGluIHNlbGZbMF0gKyBbRE9UXToKKyAgICAgICAgICAgIGlmIHRvay50b2tlbl90eXBlID09ICdjZndzJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKGxhc3RfaXNfdGwgYW5kIHRvay50b2tlbl90eXBlID09ICdkb3QnIGFuZAorICAgICAgICAgICAgICAgICAgICBsYXN0Wy0xXS50b2tlbl90eXBlID09ICdjZndzJyk6CisgICAgICAgICAgICAgICAgcmVzWy0xXSA9IFRva2VuTGlzdChsYXN0WzotMV0pCisgICAgICAgICAgICBpc190bCA9IGlzaW5zdGFuY2UodG9rLCBUb2tlbkxpc3QpCisgICAgICAgICAgICBpZiAoaXNfdGwgYW5kIGxhc3QudG9rZW5fdHlwZSA9PSAnZG90JyBhbmQKKyAgICAgICAgICAgICAgICAgICAgdG9rWzBdLnRva2VuX3R5cGUgPT0gJ2Nmd3MnKToKKyAgICAgICAgICAgICAgICByZXMuYXBwZW5kKFRva2VuTGlzdCh0b2tbMTpdKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCh0b2spCisgICAgICAgICAgICBsYXN0ID0gcmVzWy0xXQorICAgICAgICAgICAgbGFzdF9pc190bCA9IGlzX3RsCisgICAgICAgIHJlcyA9IFRva2VuTGlzdChyZXNbMTotMV0pCisgICAgICAgIHJldHVybiByZXMudmFsdWUKKworCitjbGFzcyBEb21haW5MaXRlcmFsKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2RvbWFpbi1saXRlcmFsJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oc3VwZXIoKS52YWx1ZS5zcGxpdCgpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlwKHNlbGYpOgorICAgICAgICBmb3IgeCBpbiBzZWxmOgorICAgICAgICAgICAgaWYgeC50b2tlbl90eXBlID09ICdwdGV4dCc6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgudmFsdWUKKworCitjbGFzcyBNSU1FVmVyc2lvbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtaW1lLXZlcnNpb24nCisgICAgbWFqb3IgPSBOb25lCisgICAgbWlub3IgPSBOb25lCisKKworY2xhc3MgUGFyYW1ldGVyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ3BhcmFtZXRlcicKKyAgICBzZWN0aW9uZWQgPSBGYWxzZQorICAgIGV4dGVuZGVkID0gRmFsc2UKKyAgICBjaGFyc2V0ID0gJ3VzLWFzY2lpJworCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlY3Rpb25fbnVtYmVyKHNlbGYpOgorICAgICAgICAjIEJlY2F1c2UgdGhlIGZpcnN0IHRva2VuLCB0aGUgYXR0cmlidXRlIChuYW1lKSBlYXRzIENGV1MsIHRoZSBzZWNvbmQKKyAgICAgICAgIyB0b2tlbiBpcyBhbHdheXMgdGhlIHNlY3Rpb24gaWYgdGhlcmUgaXMgb25lLgorICAgICAgICByZXR1cm4gc2VsZlsxXS5udW1iZXIgaWYgc2VsZi5zZWN0aW9uZWQgZWxzZSAwCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1fdmFsdWUoc2VsZik6CisgICAgICAgICMgVGhpcyBpcyBwYXJ0IG9mIHRoZSAiaGFuZGxlIHF1b3RlZCBleHRlbmRlZCBwYXJhbWV0ZXJzIiBoYWNrLgorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ3ZhbHVlJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ3F1b3RlZC1zdHJpbmcnOgorICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbjoKKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnYmFyZS1xdW90ZWQtc3RyaW5nJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0b2tlbi50b2tlbl90eXBlID09ICd2YWx1ZSc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbi5zdHJpcHBlZF92YWx1ZQorICAgICAgICByZXR1cm4gJycKKworCitjbGFzcyBJbnZhbGlkUGFyYW1ldGVyKFBhcmFtZXRlcik6CisKKyAgICB0b2tlbl90eXBlID0gJ2ludmFsaWQtcGFyYW1ldGVyJworCisKK2NsYXNzIEF0dHJpYnV0ZShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdhdHRyaWJ1dGUnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3RyaXBwZWRfdmFsdWUoc2VsZik6CisgICAgICAgIGZvciB0b2tlbiBpbiBzZWxmOgorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZS5lbmRzd2l0aCgnYXR0cnRleHQnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4udmFsdWUKKworY2xhc3MgU2VjdGlvbihUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdzZWN0aW9uJworICAgIG51bWJlciA9IE5vbmUKKworCitjbGFzcyBWYWx1ZShUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICd2YWx1ZScKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzdHJpcHBlZF92YWx1ZShzZWxmKToKKyAgICAgICAgdG9rZW4gPSBzZWxmWzBdCisgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUgPT0gJ2Nmd3MnOgorICAgICAgICAgICAgdG9rZW4gPSBzZWxmWzFdCisgICAgICAgIGlmIHRva2VuLnRva2VuX3R5cGUuZW5kc3dpdGgoCisgICAgICAgICAgICAgICAgKCdxdW90ZWQtc3RyaW5nJywgJ2F0dHJpYnV0ZScsICdleHRlbmRlZC1hdHRyaWJ1dGUnKSk6CisgICAgICAgICAgICByZXR1cm4gdG9rZW4uc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKworCitjbGFzcyBNaW1lUGFyYW1ldGVycyhUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdtaW1lLXBhcmFtZXRlcnMnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRoZSBSRkMgc3BlY2lmaWNhbGx5IHN0YXRlcyB0aGF0IHRoZSBvcmRlcmluZyBvZiBwYXJhbWV0ZXJzIGlzIG5vdAorICAgICAgICAjIGd1YXJhbnRlZWQgYW5kIG1heSBiZSByZW9yZGVyZWQgYnkgdGhlIHRyYW5zcG9ydCBsYXllci4gIFNvIHdlIGhhdmUKKyAgICAgICAgIyB0byBhc3N1bWUgdGhlIFJGQyAyMjMxIHBpZWNlcyBjYW4gY29tZSBpbiBhbnkgb3JkZXIuICBIb3dldmVyLCB3ZQorICAgICAgICAjIG91dHB1dCB0aGVtIGluIHRoZSBvcmRlciB0aGF0IHdlIGZpcnN0IHNlZSBhIGdpdmVuIG5hbWUsIHdoaWNoIGdpdmVzCisgICAgICAgICMgdXMgYSBzdGFibGUgX19zdHJfXy4KKyAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKQorICAgICAgICBmb3IgdG9rZW4gaW4gc2VsZjoKKyAgICAgICAgICAgIGlmIG5vdCB0b2tlbi50b2tlbl90eXBlLmVuZHN3aXRoKCdwYXJhbWV0ZXInKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgdG9rZW5bMF0udG9rZW5fdHlwZSAhPSAnYXR0cmlidXRlJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbmFtZSA9IHRva2VuWzBdLnZhbHVlLnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHBhcmFtczoKKyAgICAgICAgICAgICAgICBwYXJhbXNbbmFtZV0gPSBbXQorICAgICAgICAgICAgcGFyYW1zW25hbWVdLmFwcGVuZCgodG9rZW4uc2VjdGlvbl9udW1iZXIsIHRva2VuKSkKKyAgICAgICAgZm9yIG5hbWUsIHBhcnRzIGluIHBhcmFtcy5pdGVtcygpOgorICAgICAgICAgICAgcGFydHMgPSBzb3J0ZWQocGFydHMpCisgICAgICAgICAgICAjIFhYWDogdGhlcmUgbWlnaHQgYmUgbW9yZSByZWNvdmVyeSB3ZSBjb3VsZCBkbyBoZXJlIGlmLCBmb3IKKyAgICAgICAgICAgICMgZXhhbXBsZSwgdGhpcyBpcyByZWFsbHkgYSBjYXNlIG9mIGEgZHVwbGljYXRlIGF0dHJpYnV0ZSBuYW1lLgorICAgICAgICAgICAgdmFsdWVfcGFydHMgPSBbXQorICAgICAgICAgICAgY2hhcnNldCA9IHBhcnRzWzBdWzFdLmNoYXJzZXQKKyAgICAgICAgICAgIGZvciBpLCAoc2VjdGlvbl9udW1iZXIsIHBhcmFtKSBpbiBlbnVtZXJhdGUocGFydHMpOgorICAgICAgICAgICAgICAgIGlmIHNlY3Rpb25fbnVtYmVyICE9IGk6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImluY29uc2lzdGVudCBtdWx0aXBhcnQgcGFyYW1ldGVyIG51bWJlcmluZyIpKQorICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyYW0ucGFyYW1fdmFsdWUKKyAgICAgICAgICAgICAgICBpZiBwYXJhbS5leHRlbmRlZDoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1cmxsaWIucGFyc2UudW5xdW90ZV90b19ieXRlcyh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc291cmNlIGhhZCBzdXJyb2dhdGUgZXNjYXBlZCBieXRlcy4gIFdoYXQgd2UgZG8gbm93CisgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIGEgYml0IG9mIGFuIG9wZW4gcXVlc3Rpb24uICBJJ20gbm90IHN1cmUgdGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgYmVzdCBjaG9pY2UsIGJ1dCBpdCBpcyB3aGF0IHRoZSBvbGQgYWxnb3JpdGhtIGRpZAorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1cmxsaWIucGFyc2UudW5xdW90ZSh2YWx1ZSwgZW5jb2Rpbmc9J2xhdGluLTEnKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZGVjb2RlKGNoYXJzZXQsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYOiB0aGVyZSBzaG91bGQgcmVhbGx5IGJlIGEgY3VzdG9tIGRlZmVjdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHVua25vd24gY2hhcmFjdGVyIHNldCB0byBtYWtlIGl0IGVhc3kgdG8gZmluZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugb3RoZXJ3aXNlIHVua25vd24gY2hhcnNldCBpcyBhIHNpbGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmFpbHVyZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmRlY29kZSgndXMtYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3QoKSkKKyAgICAgICAgICAgICAgICB2YWx1ZV9wYXJ0cy5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9ICcnLmpvaW4odmFsdWVfcGFydHMpCisgICAgICAgICAgICB5aWVsZCBuYW1lLCB2YWx1ZQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHBhcmFtcyA9IFtdCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLnBhcmFtczoKKyAgICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoJ3t9PXt9Jy5mb3JtYXQobmFtZSwgcXVvdGVfc3RyaW5nKHZhbHVlKSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQobmFtZSkKKyAgICAgICAgcGFyYW1zID0gJzsgJy5qb2luKHBhcmFtcykKKyAgICAgICAgcmV0dXJuICcgJyArIHBhcmFtcyBpZiBwYXJhbXMgZWxzZSAnJworCisKK2NsYXNzIFBhcmFtZXRlcml6ZWRIZWFkZXJWYWx1ZShUb2tlbkxpc3QpOgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtcyhzZWxmKToKKyAgICAgICAgZm9yIHRva2VuIGluIHJldmVyc2VkKHNlbGYpOgorICAgICAgICAgICAgaWYgdG9rZW4udG9rZW5fdHlwZSA9PSAnbWltZS1wYXJhbWV0ZXJzJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW4ucGFyYW1zCisgICAgICAgIHJldHVybiB7fQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRzKHNlbGYpOgorICAgICAgICBpZiBzZWxmIGFuZCBzZWxmWy0xXS50b2tlbl90eXBlID09ICdtaW1lLXBhcmFtZXRlcnMnOgorICAgICAgICAgICAgIyBXZSBkb24ndCB3YW50IHRvIHN0YXJ0IGEgbmV3IGxpbmUgaWYgYWxsIG9mIHRoZSBwYXJhbXMgZG9uJ3QgZml0CisgICAgICAgICAgICAjIGFmdGVyIHRoZSB2YWx1ZSwgc28gdW53cmFwIHRoZSBwYXJhbWV0ZXIgbGlzdC4KKyAgICAgICAgICAgIHJldHVybiBUb2tlbkxpc3Qoc2VsZls6LTFdICsgc2VsZlstMV0pCisgICAgICAgIHJldHVybiBUb2tlbkxpc3Qoc2VsZikucGFydHMKKworCitjbGFzcyBDb250ZW50VHlwZShQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjb250ZW50LXR5cGUnCisgICAgbWFpbnR5cGUgPSAndGV4dCcKKyAgICBzdWJ0eXBlID0gJ3BsYWluJworCisKK2NsYXNzIENvbnRlbnREaXNwb3NpdGlvbihQYXJhbWV0ZXJpemVkSGVhZGVyVmFsdWUpOgorCisgICAgdG9rZW5fdHlwZSA9ICdjb250ZW50LWRpc3Bvc2l0aW9uJworICAgIGNvbnRlbnRfZGlzcG9zaXRpb24gPSBOb25lCisKKworY2xhc3MgQ29udGVudFRyYW5zZmVyRW5jb2RpbmcoVG9rZW5MaXN0KToKKworICAgIHRva2VuX3R5cGUgPSAnY29udGVudC10cmFuc2Zlci1lbmNvZGluZycKKyAgICBjdGUgPSAnN2JpdCcKKworCitjbGFzcyBIZWFkZXJMYWJlbChUb2tlbkxpc3QpOgorCisgICAgdG9rZW5fdHlwZSA9ICdoZWFkZXItbGFiZWwnCisKKworY2xhc3MgSGVhZGVyKFRva2VuTGlzdCk6CisKKyAgICB0b2tlbl90eXBlID0gJ2hlYWRlcicKKworICAgIGRlZiBfZm9sZChzZWxmLCBmb2xkZWQpOgorICAgICAgICBmb2xkZWQuYXBwZW5kKHN0cihzZWxmLnBvcCgwKSkpCisgICAgICAgIGZvbGRlZC5sYXN0bGVuID0gbGVuKGZvbGRlZC5jdXJyZW50WzBdKQorICAgICAgICAjIFRoZSBmaXJzdCBsaW5lIG9mIHRoZSBoZWFkZXIgaXMgZGlmZmVyZW50IGZyb20gYWxsIG90aGVyczogd2UgZG9uJ3QKKyAgICAgICAgIyB3YW50IHRvIHN0YXJ0IGEgbmV3IG9iamVjdCBvbiBhIG5ldyBsaW5lIGlmIGl0IGhhcyBhbnkgZm9sZCBwb2ludHMgaW4KKyAgICAgICAgIyBpdCB0aGF0IHdvdWxkIGFsbG93IHBhcnQgb2YgaXQgdG8gYmUgb24gdGhlIGZpcnN0IGhlYWRlciBsaW5lLgorICAgICAgICAjIEZ1cnRoZXIsIGlmIHRoZSBmaXJzdCBmb2xkIHBvaW50IHdvdWxkIGZpdCBvbiB0aGUgbmV3IGxpbmUsIHdlIHdhbnQKKyAgICAgICAgIyB0byBkbyB0aGF0LCBidXQgaWYgaXQgZG9lc24ndCB3ZSB3YW50IHRvIHB1dCBpdCBvbiB0aGUgZmlyc3QgbGluZS4KKyAgICAgICAgIyBGb2xkZWQgc3VwcG9ydHMgdGhpcyB2aWEgdGhlIHN0aWNreXNwYWNlIGF0dHJpYnV0ZS4gIElmIHRoaXMKKyAgICAgICAgIyBhdHRyaWJ1dGUgaXMgbm90IE5vbmUsIGl0IGRvZXMgdGhlIHNwZWNpYWwgaGFuZGxpbmcuCisgICAgICAgIGZvbGRlZC5zdGlja3lzcGFjZSA9IHN0cihzZWxmLnBvcCgwKSkgaWYgc2VsZlswXS50b2tlbl90eXBlID09ICdjZndzJyBlbHNlICcnCisgICAgICAgIHJlc3QgPSBzZWxmLnBvcCgwKQorICAgICAgICBpZiBzZWxmOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTWFsZm9ybWVkIEhlYWRlciB0b2tlbiBsaXN0IikKKyAgICAgICAgcmVzdC5fZm9sZChmb2xkZWQpCisKKworIworIyBUZXJtaW5hbCBjbGFzc2VzIGFuZCBpbnN0YW5jZXMKKyMKKworY2xhc3MgVGVybWluYWwoc3RyKToKKworICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUsIHRva2VuX3R5cGUpOgorICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgdmFsdWUpCisgICAgICAgIHNlbGYudG9rZW5fdHlwZSA9IHRva2VuX3R5cGUKKyAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJ7fSh7fSkiLmZvcm1hdChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3VwZXIoKS5fX3JlcHJfXygpKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFsbF9kZWZlY3RzKHNlbGYpOgorICAgICAgICByZXR1cm4gbGlzdChzZWxmLmRlZmVjdHMpCisKKyAgICBkZWYgX3BwKHNlbGYsIGluZGVudD0nJyk6CisgICAgICAgIHJldHVybiBbInt9e30ve30oe30pe30iLmZvcm1hdCgKKyAgICAgICAgICAgIGluZGVudCwKKyAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgc2VsZi50b2tlbl90eXBlLAorICAgICAgICAgICAgc3VwZXIoKS5fX3JlcHJfXygpLAorICAgICAgICAgICAgJycgaWYgbm90IHNlbGYuZGVmZWN0cyBlbHNlICcge30nLmZvcm1hdChzZWxmLmRlZmVjdHMpLAorICAgICAgICAgICAgKV0KKworICAgIGRlZiBjdGVfZW5jb2RlKHNlbGYsIGNoYXJzZXQsIHBvbGljeSk6CisgICAgICAgIHZhbHVlID0gc3RyKHNlbGYpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHZhbHVlLmVuY29kZSgndXMtYXNjaWknKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gX2V3LmVuY29kZSh2YWx1ZSwgY2hhcnNldCkKKworICAgIGRlZiBwb3BfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgICMgVGhpcyB0ZXJtaW5hdGVzIHRoZSByZWN1cnNpb24uCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgcG9wX2xlYWRpbmdfZndzKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVybWluYXRlcyB0aGUgcmVjdXJzaW9uLgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbW1lbnRzKHNlbGYpOgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBoYXNfbGVhZGluZ19jb21tZW50KHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2dldG5ld2FyZ3NfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuKHN0cihzZWxmKSwgc2VsZi50b2tlbl90eXBlKQorCisKK2NsYXNzIFdoaXRlU3BhY2VUZXJtaW5hbChUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiAnICcKKworICAgIGRlZiBzdGFydHN3aXRoX2Z3cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGhhc19md3MgPSBUcnVlCisKKworY2xhc3MgVmFsdWVUZXJtaW5hbChUZXJtaW5hbCk6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgc3RhcnRzd2l0aF9md3Moc2VsZik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgaGFzX2Z3cyA9IEZhbHNlCisKKyAgICBkZWYgYXNfZW5jb2RlZF93b3JkKHNlbGYsIGNoYXJzZXQpOgorICAgICAgICByZXR1cm4gX2V3LmVuY29kZShzdHIoc2VsZiksIGNoYXJzZXQpCisKKworY2xhc3MgRVdXaGl0ZVNwYWNlVGVybWluYWwoV2hpdGVTcGFjZVRlcm1pbmFsKToKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2YWx1ZShzZWxmKToKKyAgICAgICAgcmV0dXJuICcnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZW5jb2RlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGZbOl0KKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJycKKworICAgIGhhc19md3MgPSBUcnVlCisKKworIyBYWFggdGhlc2UgbmVlZCB0byBiZWNvbWUgY2xhc3NlcyBhbmQgdXNlZCBhcyBpbnN0YW5jZXMgc28KKyMgdGhhdCBhIHByb2dyYW0gY2FuJ3QgY2hhbmdlIHRoZW0gaW4gYSBwYXJzZSB0cmVlIGFuZCBzY3JldworIyB1cCBvdGhlciBwYXJzZSB0cmVlcy4gIE1heWJlIHNob3VsZCBoYXZlICB0ZXN0cyBmb3IgdGhhdCwgdG9vLgorRE9UID0gVmFsdWVUZXJtaW5hbCgnLicsICdkb3QnKQorTGlzdFNlcGFyYXRvciA9IFZhbHVlVGVybWluYWwoJywnLCAnbGlzdC1zZXBhcmF0b3InKQorUm91dGVDb21wb25lbnRNYXJrZXIgPSBWYWx1ZVRlcm1pbmFsKCdAJywgJ3JvdXRlLWNvbXBvbmVudC1tYXJrZXInKQorCisjCisjIFBhcnNlcgorIworCisiIiJQYXJzZSBzdHJpbmdzIGFjY29yZGluZyB0byBSRkM4MjIvMjA0Ny8yODIyLzUzMjIgcnVsZXMuCisKK1RoaXMgaXMgYSBzdGF0ZWxlc3MgcGFyc2VyLiAgRWFjaCBnZXRfWFhYIGZ1bmN0aW9uIGFjY2VwdHMgYSBzdHJpbmcgYW5kCityZXR1cm5zIGVpdGhlciBhIFRlcm1pbmFsIG9yIGEgVG9rZW5MaXN0IHJlcHJlc2VudGluZyB0aGUgUkZDIG9iamVjdCBuYW1lZAorYnkgdGhlIG1ldGhvZCBhbmQgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVtYWluaW5nIHVucGFyc2VkIGNoYXJhY3RlcnMKK2Zyb20gdGhlIGlucHV0LiAgVGh1cyBhIHBhcnNlciBtZXRob2QgY29uc3VtZXMgdGhlIG5leHQgc3ludGFjdGljIGNvbnN0cnVjdAorb2YgYSBnaXZlbiB0eXBlIGFuZCByZXR1cm5zIGEgdG9rZW4gcmVwcmVzZW50aW5nIHRoZSBjb25zdHJ1Y3QgcGx1cyB0aGUKK3VucGFyc2VkIHJlbWFpbmRlciBvZiB0aGUgaW5wdXQgc3RyaW5nLgorCitGb3IgZXhhbXBsZSwgaWYgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSBzdHJ1Y3R1cmVkIGhlYWRlciBpcyBhICdwaHJhc2UnLAordGhlbjoKKworICAgIHBocmFzZSwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorCityZXR1cm5zIHRoZSBjb21wbGV0ZSBwaHJhc2UgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyB2YWx1ZSwgcGx1cyBhbnkKK2NoYXJhY3RlcnMgbGVmdCBpbiB0aGUgc3RyaW5nIGFmdGVyIHRoZSBwaHJhc2UgaXMgcmVtb3ZlZC4KKworIiIiCisKK193c3Bfc3BsaXR0ZXIgPSByZS5jb21waWxlKHInKFt7fV0rKScuZm9ybWF0KCcnLmpvaW4oV1NQKSkpLnNwbGl0Citfbm9uX2F0b21fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihBVE9NX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKK19ub25fcHJpbnRhYmxlX2ZpbmRlciA9IHJlLmNvbXBpbGUociJbXHgwMC1ceDIwXHg3Rl0iKS5maW5kYWxsCitfbm9uX3Rva2VuX2VuZF9tYXRjaGVyID0gcmUuY29tcGlsZShyIltee31dKyIuZm9ybWF0KAorICAgICcnLmpvaW4oVE9LRU5fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorX25vbl9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihBVFRSSUJVVEVfRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCisgICAgJycuam9pbihFWFRFTkRFRF9BVFRSSUJVVEVfRU5EUykucmVwbGFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisKK2RlZiBfdmFsaWRhdGVfeHRleHQoeHRleHQpOgorICAgICIiIklmIGlucHV0IHRva2VuIGNvbnRhaW5zIEFTQ0lJIG5vbi1wcmludGFibGVzLCByZWdpc3RlciBhIGRlZmVjdC4iIiIKKworICAgIG5vbl9wcmludGFibGVzID0gX25vbl9wcmludGFibGVfZmluZGVyKHh0ZXh0KQorICAgIGlmIG5vbl9wcmludGFibGVzOgorICAgICAgICB4dGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0KG5vbl9wcmludGFibGVzKSkKKyAgICBpZiB1dGlscy5faGFzX3N1cnJvZ2F0ZXMoeHRleHQpOgorICAgICAgICB4dGV4dC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdCgKKyAgICAgICAgICAgICJOb24tQVNDSUkgY2hhcmFjdGVycyBmb3VuZCBpbiBoZWFkZXIgdG9rZW4iKSkKKworZGVmIF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsIGVuZGNoYXJzKToKKyAgICAiIiJTY2FuIHByaW50YWJsZXMvcXVvdGVkLXBhaXJzIHVudGlsIGVuZGNoYXJzIGFuZCByZXR1cm4gdW5xdW90ZWQgcHRleHQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIHR1cm5zIGEgcnVuIG9mIHFjb250ZW50LCBjY29udGVudC13aXRob3V0LWNvbW1lbnRzLCBvcgorICAgIGR0ZXh0LXdpdGgtcXVvdGVkLXByaW50YWJsZXMgaW50byBhIHNpbmdsZSBzdHJpbmcgYnkgdW5xdW90aW5nIGFueQorICAgIHF1b3RlZCBwcmludGFibGVzLiAgSXQgcmV0dXJucyB0aGUgc3RyaW5nLCB0aGUgcmVtYWluaW5nIHZhbHVlLCBhbmQKKyAgICBhIGZsYWcgdGhhdCBpcyBUcnVlIGlmZiB0aGVyZSB3ZXJlIGFueSBxdW90ZWQgcHJpbnRhYmxlcyBkZWNvZGVkLgorCisgICAgIiIiCisgICAgZnJhZ21lbnQsICpyZW1haW5kZXIgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgIHZjaGFycyA9IFtdCisgICAgZXNjYXBlID0gRmFsc2UKKyAgICBoYWRfcXAgPSBGYWxzZQorICAgIGZvciBwb3MgaW4gcmFuZ2UobGVuKGZyYWdtZW50KSk6CisgICAgICAgIGlmIGZyYWdtZW50W3Bvc10gPT0gJ1xcJzoKKyAgICAgICAgICAgIGlmIGVzY2FwZToKKyAgICAgICAgICAgICAgICBlc2NhcGUgPSBGYWxzZQorICAgICAgICAgICAgICAgIGhhZF9xcCA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZXNjYXBlID0gVHJ1ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGVzY2FwZToKKyAgICAgICAgICAgIGVzY2FwZSA9IEZhbHNlCisgICAgICAgIGVsaWYgZnJhZ21lbnRbcG9zXSBpbiBlbmRjaGFyczoKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHZjaGFycy5hcHBlbmQoZnJhZ21lbnRbcG9zXSkKKyAgICBlbHNlOgorICAgICAgICBwb3MgPSBwb3MgKyAxCisgICAgcmV0dXJuICcnLmpvaW4odmNoYXJzKSwgJycuam9pbihbZnJhZ21lbnRbcG9zOl1dICsgcmVtYWluZGVyKSwgaGFkX3FwCisKK2RlZiBfZGVjb2RlX2V3X3J1bih2YWx1ZSk6CisgICAgIiIiIERlY29kZSBhIHJ1biBvZiBSRkMyMDQ3IGVuY29kZWQgd29yZHMuCisKKyAgICAgICAgX2RlY29kZV9ld19ydW4odmFsdWUpIC0+ICh0ZXh0LCB2YWx1ZSwgZGVmZWN0cykKKworICAgIFNjYW5zIHRoZSBzdXBwbGllZCB2YWx1ZSBmb3IgYSBydW4gb2YgdG9rZW5zIHRoYXQgbG9vayBsaWtlIHRoZXkgYXJlIFJGQworICAgIDIwNDcgZW5jb2RlZCB3b3JkcywgZGVjb2RlcyB0aG9zZSB3b3JkcyBpbnRvIHRleHQgYWNjb3JkaW5nIHRvIFJGQyAyMDQ3CisgICAgcnVsZXMgKHdoaXRlc3BhY2UgYmV0d2VlbiBlbmNvZGVkIHdvcmRzIGlzIGRpc2NhcmRlZCksIGFuZCByZXR1cm5zIHRoZSB0ZXh0CisgICAgYW5kIHRoZSByZW1haW5pbmcgdmFsdWUgKGluY2x1ZGluZyBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlIG9uIHRoZSByZW1haW5pbmcKKyAgICB2YWx1ZSksIGFzIHdlbGwgYXMgYSBsaXN0IG9mIGFueSBkZWZlY3RzIGVuY291bnRlcmVkIHdoaWxlIGRlY29kaW5nLiAgVGhlCisgICAgaW5wdXQgdmFsdWUgbWF5IG5vdCBoYXZlIGFueSBsZWFkaW5nIHdoaXRlc3BhY2UuCisKKyAgICAiIiIKKyAgICByZXMgPSBbXQorICAgIGRlZmVjdHMgPSBbXQorICAgIGxhc3Rfd3MgPSAnJworICAgIHdoaWxlIHZhbHVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2ssIHdzLCB2YWx1ZSA9IF93c3Bfc3BsaXR0ZXIodmFsdWUsIDEpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgdG9rLCB3cywgdmFsdWUgPSB2YWx1ZSwgJycsICcnCisgICAgICAgIGlmIG5vdCAodG9rLnN0YXJ0c3dpdGgoJz0/JykgYW5kIHRvay5lbmRzd2l0aCgnPz0nKSk6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihyZXMpLCBsYXN0X3dzICsgdG9rICsgd3MgKyB2YWx1ZSwgZGVmZWN0cworICAgICAgICB0ZXh0LCBjaGFyc2V0LCBsYW5nLCBuZXdfZGVmZWN0cyA9IF9ldy5kZWNvZGUodG9rKQorICAgICAgICByZXMuYXBwZW5kKHRleHQpCisgICAgICAgIGRlZmVjdHMuZXh0ZW5kKG5ld19kZWZlY3RzKQorICAgICAgICBsYXN0X3dzID0gd3MKKyAgICByZXR1cm4gJycuam9pbihyZXMpLCBsYXN0X3dzLCBkZWZlY3RzCisKK2RlZiBnZXRfZndzKHZhbHVlKToKKyAgICAiIiJGV1MgPSAxKldTUAorCisgICAgVGhpcyBpc24ndCB0aGUgUkZDIGRlZmluaXRpb24uICBXZSdyZSB1c2luZyBmd3MgdG8gcmVwcmVzZW50IHRva2VucyB3aGVyZQorICAgIGZvbGRpbmcgY2FuIGJlIGRvbmUsIGJ1dCB3aGVuIHdlIGFyZSBwYXJzaW5nIHRoZSAqdW4qZm9sZGluZyBoYXMgYWxyZWFkeQorICAgIGJlZW4gZG9uZSBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhdGNoIG91dCBmb3IgQ1JMRi4KKworICAgICIiIgorICAgIG5ld3ZhbHVlID0gdmFsdWUubHN0cmlwKCkKKyAgICBmd3MgPSBXaGl0ZVNwYWNlVGVybWluYWwodmFsdWVbOmxlbih2YWx1ZSktbGVuKG5ld3ZhbHVlKV0sICdmd3MnKQorICAgIHJldHVybiBmd3MsIG5ld3ZhbHVlCisKK2RlZiBnZXRfZW5jb2RlZF93b3JkKHZhbHVlKToKKyAgICAiIiIgZW5jb2RlZC13b3JkID0gIj0/IiBjaGFyc2V0ICI/IiBlbmNvZGluZyAiPyIgZW5jb2RlZC10ZXh0ICI/PSIKKworICAgICIiIgorICAgIGV3ID0gRW5jb2RlZFdvcmQoKQorICAgIGlmIG5vdCB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBlbmNvZGVkIHdvcmQgYnV0IGZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIHRvaywgKnJlbWFpbmRlciA9IHZhbHVlWzI6XS5zcGxpdCgnPz0nLCAxKQorICAgIGlmIHRvayA9PSB2YWx1ZVsyOl06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGVuY29kZWQgd29yZCBidXQgZm91bmQge30iLmZvcm1hdCh2YWx1ZSkpCisgICAgcmVtc3RyID0gJycuam9pbihyZW1haW5kZXIpCisgICAgaWYgcmVtc3RyWzoyXS5pc2RpZ2l0KCk6CisgICAgICAgIHJlc3QsICpyZW1haW5kZXIgPSByZW1zdHIuc3BsaXQoJz89JywgMSkKKyAgICAgICAgdG9rID0gdG9rICsgJz89JyArIHJlc3QKKyAgICBpZiBsZW4odG9rLnNwbGl0KCkpID4gMToKKyAgICAgICAgZXcuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAid2hpdGVzcGFjZSBpbnNpZGUgZW5jb2RlZCB3b3JkIikpCisgICAgZXcuY3RlID0gdmFsdWUKKyAgICB2YWx1ZSA9ICcnLmpvaW4ocmVtYWluZGVyKQorICAgIHRyeToKKyAgICAgICAgdGV4dCwgY2hhcnNldCwgbGFuZywgZGVmZWN0cyA9IF9ldy5kZWNvZGUoJz0/JyArIHRvayArICc/PScpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImVuY29kZWQgd29yZCBmb3JtYXQgaW52YWxpZDogJ3t9JyIuZm9ybWF0KGV3LmN0ZSkpCisgICAgZXcuY2hhcnNldCA9IGNoYXJzZXQKKyAgICBldy5sYW5nID0gbGFuZworICAgIGV3LmRlZmVjdHMuZXh0ZW5kKGRlZmVjdHMpCisgICAgd2hpbGUgdGV4dDoKKyAgICAgICAgaWYgdGV4dFswXSBpbiBXU1A6CisgICAgICAgICAgICB0b2tlbiwgdGV4dCA9IGdldF9md3ModGV4dCkKKyAgICAgICAgICAgIGV3LmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGNoYXJzLCAqcmVtYWluZGVyID0gX3dzcF9zcGxpdHRlcih0ZXh0LCAxKQorICAgICAgICB2dGV4dCA9IFZhbHVlVGVybWluYWwoY2hhcnMsICd2dGV4dCcpCisgICAgICAgIF92YWxpZGF0ZV94dGV4dCh2dGV4dCkKKyAgICAgICAgZXcuYXBwZW5kKHZ0ZXh0KQorICAgICAgICB0ZXh0ID0gJycuam9pbihyZW1haW5kZXIpCisgICAgcmV0dXJuIGV3LCB2YWx1ZQorCitkZWYgZ2V0X3Vuc3RydWN0dXJlZCh2YWx1ZSk6CisgICAgIiIidW5zdHJ1Y3R1cmVkID0gKCooW0ZXU10gdmNoYXIpICpXU1ApIC8gb2JzLXVuc3RydWN0CisgICAgICAgb2JzLXVuc3RydWN0ID0gKigoKkxGICpDUiAqKG9icy11dGV4dCkgKkxGICpDUikpIC8gRldTKQorICAgICAgIG9icy11dGV4dCA9ICVkMCAvIG9icy1OTy1XUy1DVEwgLyBMRiAvIENSCisKKyAgICAgICBvYnMtTk8tV1MtQ1RMIGlzIGNvbnRyb2wgY2hhcmFjdGVycyBleGNlcHQgV1NQL0NSL0xGLgorCisgICAgU28sIGJhc2ljYWxseSwgd2UgaGF2ZSBwcmludGFibGUgcnVucywgcGx1cyBjb250cm9sIGNoYXJhY3RlcnMgb3IgbnVsbHMgaW4KKyAgICB0aGUgb2Jzb2xldGUgc3ludGF4LCBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZS4gIFNpbmNlIFJGQyAyMDQ3IHVzZXMgdGhlCisgICAgb2Jzb2xldGUgc3ludGF4IGluIGl0cyBzcGVjaWZpY2F0aW9uLCBidXQgcmVxdWlyZXMgd2hpdGVzcGFjZSBvbiBlaXRoZXIKKyAgICBzaWRlIG9mIHRoZSBlbmNvZGVkIHdvcmRzLCBJIGNhbiBzZWUgbm8gcmVhc29uIHRvIG5lZWQgdG8gc2VwYXJhdGUgdGhlCisgICAgbm9uLXByaW50YWJsZS1ub24td2hpdGVzcGFjZSBmcm9tIHRoZSBwcmludGFibGUgcnVucyBpZiB0aGV5IG9jY3VyLCBzbyB3ZQorICAgIHBhcnNlIHRoaXMgaW50byB4dGV4dCB0b2tlbnMgc2VwYXJhdGVkIGJ5IFdTUCB0b2tlbnMuCisKKyAgICBCZWNhdXNlIGFuICd1bnN0cnVjdHVyZWQnIHZhbHVlIG11c3QgYnkgZGVmaW5pdGlvbiBjb25zdGl0dXRlIHRoZSBlbnRpcmUKKyAgICB2YWx1ZSwgdGhpcyAnZ2V0JyByb3V0aW5lIGRvZXMgbm90IHJldHVybiBhIHJlbWFpbmluZyB2YWx1ZSwgb25seSB0aGUKKyAgICBwYXJzZWQgVG9rZW5MaXN0LgorCisgICAgIiIiCisgICAgIyBYWFg6IGJ1dCB3aGF0IGFib3V0IGJhcmUgQ1IgYW5kIExGPyAgVGhleSBtaWdodCBzaWduYWwgdGhlIHN0YXJ0IG9yCisgICAgIyBlbmQgb2YgYW4gZW5jb2RlZCB3b3JkLiAgWUFHTkkgZm9yIG5vdywgc2luY2Ugb3V0IGN1cnJlbnQgcGFyc2VycworICAgICMgd2lsbCBuZXZlciBzZW5kIHVzIHN0cmluZ3Mgd2l0aCBiYXJkIENSIG9yIExGLgorCisgICAgdW5zdHJ1Y3R1cmVkID0gVW5zdHJ1Y3R1cmVkVG9rZW5MaXN0KCkKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodG9rZW4pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiB2YWx1ZS5zdGFydHN3aXRoKCc9PycpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9lbmNvZGVkX3dvcmQodmFsdWUpCisgICAgICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoYXZlX3dzID0gVHJ1ZQorICAgICAgICAgICAgICAgIGlmIGxlbih1bnN0cnVjdHVyZWQpID4gMDoKKyAgICAgICAgICAgICAgICAgICAgaWYgdW5zdHJ1Y3R1cmVkWy0xXS50b2tlbl90eXBlICE9ICdmd3MnOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtaXNzaW5nIHdoaXRlc3BhY2UgYmVmb3JlIGVuY29kZWQgd29yZCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV93cyA9IEZhbHNlCisgICAgICAgICAgICAgICAgaWYgaGF2ZV93cyBhbmQgbGVuKHVuc3RydWN0dXJlZCkgPiAxOgorICAgICAgICAgICAgICAgICAgICBpZiB1bnN0cnVjdHVyZWRbLTJdLnRva2VuX3R5cGUgPT0gJ2VuY29kZWQtd29yZCc6CisgICAgICAgICAgICAgICAgICAgICAgICB1bnN0cnVjdHVyZWRbLTFdID0gRVdXaGl0ZVNwYWNlVGVybWluYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkWy0xXSwgJ2Z3cycpCisgICAgICAgICAgICAgICAgdW5zdHJ1Y3R1cmVkLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0b2ssICpyZW1haW5kZXIgPSBfd3NwX3NwbGl0dGVyKHZhbHVlLCAxKQorICAgICAgICB2dGV4dCA9IFZhbHVlVGVybWluYWwodG9rLCAndnRleHQnKQorICAgICAgICBfdmFsaWRhdGVfeHRleHQodnRleHQpCisgICAgICAgIHVuc3RydWN0dXJlZC5hcHBlbmQodnRleHQpCisgICAgICAgIHZhbHVlID0gJycuam9pbihyZW1haW5kZXIpCisgICAgcmV0dXJuIHVuc3RydWN0dXJlZAorCitkZWYgZ2V0X3FwX2N0ZXh0KHZhbHVlKToKKyAgICAiIiJjdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgKCApPgorCisgICAgVGhpcyBpcyBub3QgdGhlIFJGQyBjdGV4dCwgc2luY2Ugd2UgYXJlIGhhbmRsaW5nIG5lc3RlZCBjb21tZW50cyBpbiBjb21tZW50CisgICAgYW5kIHVucXVvdGluZyBxdW90ZWQtcGFpcnMgaGVyZS4gIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgJygpJworICAgIGNoYXJhY3RlcnMsIGJ1dCBpZiB3ZSBmaW5kIGFueSBBU0NJSSBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUKKyAgICBBU0NJSSBhbiBOb25QcmludGFibGVEZWZlY3QgaXMgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgU2luY2UKKyAgICBxdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpciB1bnF1b3RlZCB2YWx1ZXMsIHdoYXQgaXMgcmV0dXJuZWQgaXMKKyAgICBhICdwdGV4dCcgdG9rZW4uICBJbiB0aGlzIGNhc2UgaXQgaXMgYSBXaGl0ZVNwYWNlVGVybWluYWwsIHNvIGl0J3MgdmFsdWUKKyAgICBpcyAnICcuCisKKyAgICAiIiIKKyAgICBwdGV4dCwgdmFsdWUsIF8gPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnKCknKQorICAgIHB0ZXh0ID0gV2hpdGVTcGFjZVRlcm1pbmFsKHB0ZXh0LCAncHRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dChwdGV4dCkKKyAgICByZXR1cm4gcHRleHQsIHZhbHVlCisKK2RlZiBnZXRfcWNvbnRlbnQodmFsdWUpOgorICAgICIiInFjb250ZW50ID0gcXRleHQgLyBxdW90ZWQtcGFpcgorCisgICAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSBEUVVPVEUgY2hhcmFjdGVyLCBidXQgaWYgd2UgZmluZCBhbnkgQVNDSUkKKyAgICBvdGhlciB0aGFuIHRoZSBSRkMgZGVmaW5lZCBwcmludGFibGUgQVNDSUkgYW4gTm9uUHJpbnRhYmxlRGVmZWN0IGlzCisgICAgYWRkZWQgdG8gdGhlIHRva2VuJ3MgZGVmZWN0cyBsaXN0LiAgQW55IHF1b3RlZCBwYWlycyBhcmUgY29udmVydGVkIHRvIHRoZWlyCisgICAgdW5xdW90ZWQgdmFsdWVzLCBzbyB3aGF0IGlzIHJldHVybmVkIGlzIGEgJ3B0ZXh0JyB0b2tlbi4gIEluIHRoaXMgY2FzZSBpdAorICAgIGlzIGEgVmFsdWVUZXJtaW5hbC4KKworICAgICIiIgorICAgIHB0ZXh0LCB2YWx1ZSwgXyA9IF9nZXRfcHRleHRfdG9fZW5kY2hhcnModmFsdWUsICciJykKKyAgICBwdGV4dCA9IFZhbHVlVGVybWluYWwocHRleHQsICdwdGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KHB0ZXh0KQorICAgIHJldHVybiBwdGV4dCwgdmFsdWUKKworZGVmIGdldF9hdGV4dCh2YWx1ZSk6CisgICAgIiIiYXRleHQgPSA8bWF0Y2hlcyBfYXRleHRfbWF0Y2hlcj4KKworICAgIFdlIGFsbG93IGFueSBub24tQVRPTV9FTkRTIGluIGF0ZXh0LCBidXQgYWRkIGFuIEludmFsaWRBVGV4dERlZmVjdCB0bworICAgIHRoZSB0b2tlbidzIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi1hdGV4dCBjaGFyYWN0ZXJzLgorICAgICIiIgorICAgIG0gPSBfbm9uX2F0b21fZW5kX21hdGNoZXIodmFsdWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGF0ZXh0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGF0ZXh0ID0gbS5ncm91cCgpCisgICAgdmFsdWUgPSB2YWx1ZVtsZW4oYXRleHQpOl0KKyAgICBhdGV4dCA9IFZhbHVlVGVybWluYWwoYXRleHQsICdhdGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KGF0ZXh0KQorICAgIHJldHVybiBhdGV4dCwgdmFsdWUKKworZGVmIGdldF9iYXJlX3F1b3RlZF9zdHJpbmcodmFsdWUpOgorICAgICIiImJhcmUtcXVvdGVkLXN0cmluZyA9IERRVU9URSAqKFtGV1NdIHFjb250ZW50KSBbRldTXSBEUVVPVEUKKworICAgIEEgcXVvdGVkLXN0cmluZyB3aXRob3V0IHRoZSBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlIHNwYWNlLiAgSXRzCisgICAgdmFsdWUgaXMgdGhlIHRleHQgYmV0d2VlbiB0aGUgcXVvdGUgbWFya3MsIHdpdGggd2hpdGVzcGFjZQorICAgIHByZXNlcnZlZCBhbmQgcXVvdGVkIHBhaXJzIGRlY29kZWQuCisgICAgIiIiCisgICAgaWYgdmFsdWVbMF0gIT0gJyInOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCAnXCInIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGJhcmVfcXVvdGVkX3N0cmluZyA9IEJhcmVRdW90ZWRTdHJpbmcoKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICciJzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xY29udGVudCh2YWx1ZSkKKyAgICAgICAgYmFyZV9xdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGJhcmVfcXVvdGVkX3N0cmluZy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluc2lkZSBxdW90ZWQgc3RyaW5nIikpCisgICAgICAgIHJldHVybiBiYXJlX3F1b3RlZF9zdHJpbmcsIHZhbHVlCisgICAgcmV0dXJuIGJhcmVfcXVvdGVkX3N0cmluZywgdmFsdWVbMTpdCisKK2RlZiBnZXRfY29tbWVudCh2YWx1ZSk6CisgICAgIiIiY29tbWVudCA9ICIoIiAqKFtGV1NdIGNjb250ZW50KSBbRldTXSAiKSIKKyAgICAgICBjY29udGVudCA9IGN0ZXh0IC8gcXVvdGVkLXBhaXIgLyBjb21tZW50CisKKyAgICBXZSBoYW5kbGUgbmVzdGVkIGNvbW1lbnRzIGhlcmUsIGFuZCBxdW90ZWQtcGFpciBpbiBvdXIgcXAtY3RleHQgcm91dGluZS4KKyAgICAiIiIKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJygnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCAnKCcgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgY29tbWVudCA9IENvbW1lbnQoKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICIpIjoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnKCc6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY29tbWVudCh2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xcF9jdGV4dCh2YWx1ZSkKKyAgICAgICAgY29tbWVudC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBjb21tZW50LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW5zaWRlIGNvbW1lbnQiKSkKKyAgICAgICAgcmV0dXJuIGNvbW1lbnQsIHZhbHVlCisgICAgcmV0dXJuIGNvbW1lbnQsIHZhbHVlWzE6XQorCitkZWYgZ2V0X2Nmd3ModmFsdWUpOgorICAgICIiIkNGV1MgPSAoMSooW0ZXU10gY29tbWVudCkgW0ZXU10pIC8gRldTCisKKyAgICAiIiIKKyAgICBjZndzID0gQ0ZXU0xpc3QoKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Z3cyh2YWx1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jb21tZW50KHZhbHVlKQorICAgICAgICBjZndzLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gY2Z3cywgdmFsdWUKKworZGVmIGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKToKKyAgICAiIiJxdW90ZWQtc3RyaW5nID0gW0NGV1NdIDxiYXJlLXF1b3RlZC1zdHJpbmc+IFtDRldTXQorCisgICAgJ2JhcmUtcXVvdGVkLXN0cmluZycgaXMgYW4gaW50ZXJtZWRpYXRlIGNsYXNzIGRlZmluZWQgYnkgdGhpcworICAgIHBhcnNlciBhbmQgbm90IGJ5IHRoZSBSRkMgZ3JhbW1hci4gIEl0IGlzIHRoZSBxdW90ZWQgc3RyaW5nCisgICAgd2l0aG91dCBhbnkgYXR0YWNoZWQgQ0ZXUy4KKyAgICAiIiIKKyAgICBxdW90ZWRfc3RyaW5nID0gUXVvdGVkU3RyaW5nKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBxdW90ZWRfc3RyaW5nLmFwcGVuZCh0b2tlbikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYmFyZV9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgIHF1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIHF1b3RlZF9zdHJpbmcuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBxdW90ZWRfc3RyaW5nLCB2YWx1ZQorCitkZWYgZ2V0X2F0b20odmFsdWUpOgorICAgICIiImF0b20gPSBbQ0ZXU10gMSphdGV4dCBbQ0ZXU10KKworICAgICIiIgorICAgIGF0b20gPSBBdG9tKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdG9tLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQVRPTV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBhdG9tIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdGV4dCh2YWx1ZSkKKyAgICBhdG9tLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdG9tLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYXRvbSwgdmFsdWUKKworZGVmIGdldF9kb3RfYXRvbV90ZXh0KHZhbHVlKToKKyAgICAiIiIgZG90LXRleHQgPSAxKmF0ZXh0ICooIi4iIDEqYXRleHQpCisKKyAgICAiIiIKKyAgICBkb3RfYXRvbV90ZXh0ID0gRG90QXRvbVRleHQoKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSBpbiBBVE9NX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJleHBlY3RlZCBhdG9tIGF0IGEgc3RhcnQgb2YgIgorICAgICAgICAgICAgImRvdC1hdG9tLXRleHQgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBBVE9NX0VORFM6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdGV4dCh2YWx1ZSkKKyAgICAgICAgZG90X2F0b21fdGV4dC5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLic6CisgICAgICAgICAgICBkb3RfYXRvbV90ZXh0LmFwcGVuZChET1QpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIGRvdF9hdG9tX3RleHRbLTFdIGlzIERPVDoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkIGF0b20gYXQgZW5kIG9mIGRvdC1hdG9tLXRleHQgIgorICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQoJy4nK3ZhbHVlKSkKKyAgICByZXR1cm4gZG90X2F0b21fdGV4dCwgdmFsdWUKKworZGVmIGdldF9kb3RfYXRvbSh2YWx1ZSk6CisgICAgIiIiIGRvdC1hdG9tID0gW0NGV1NdIGRvdC1hdG9tLXRleHQgW0NGV1NdCisKKyAgICAiIiIKKyAgICBkb3RfYXRvbSA9IERvdEF0b20oKQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgZG90X2F0b20uYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kb3RfYXRvbV90ZXh0KHZhbHVlKQorICAgIGRvdF9hdG9tLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb3RfYXRvbS5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGRvdF9hdG9tLCB2YWx1ZQorCitkZWYgZ2V0X3dvcmQodmFsdWUpOgorICAgICIiIndvcmQgPSBhdG9tIC8gcXVvdGVkLXN0cmluZworCisgICAgRWl0aGVyIGF0b20gb3IgcXVvdGVkLXN0cmluZyBtYXkgc3RhcnQgd2l0aCBDRldTLiAgV2UgaGF2ZSB0byBwZWVsIG9mZiB0aGlzCisgICAgQ0ZXUyBmaXJzdCB0byBkZXRlcm1pbmUgd2hpY2ggdHlwZSBvZiB3b3JkIHRvIHBhcnNlLiAgQWZ0ZXJ3YXJkIHdlIHNwbGljZQorICAgIHRoZSBsZWFkaW5nIENGV1MsIGlmIGFueSwgaW50byB0aGUgcGFyc2VkIHN1Yi10b2tlbi4KKworICAgIElmIG5laXRoZXIgYW4gYXRvbSBvciBhIHF1b3RlZC1zdHJpbmcgaXMgZm91bmQgYmVmb3JlIHRoZSBuZXh0IHNwZWNpYWwsIGEKKyAgICBIZWFkZXJQYXJzZUVycm9yIGlzIHJhaXNlZC4KKworICAgIFRoZSB0b2tlbiByZXR1cm5lZCBpcyBlaXRoZXIgYW4gQXRvbSBvciBhIFF1b3RlZFN0cmluZywgYXMgYXBwcm9wcmlhdGUuCisgICAgVGhpcyBtZWFucyB0aGUgJ3dvcmQnIGxldmVsIG9mIHRoZSBmb3JtYWwgZ3JhbW1hciBpcyBub3QgcmVwcmVzZW50ZWQgaW4gdGhlCisgICAgcGFyc2UgdHJlZTsgdGhpcyBpcyBiZWNhdXNlIGhhdmluZyB0aGF0IGV4dHJhIGxheWVyIHdoZW4gbWFuaXB1bGF0aW5nIHRoZQorICAgIHBhcnNlIHRyZWUgaXMgbW9yZSBjb25mdXNpbmcgdGhhbiBpdCBpcyBoZWxwZnVsLgorCisgICAgIiIiCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIGxlYWRlciwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICBlbHNlOgorICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgaWYgdmFsdWVbMF09PSciJzoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpCisgICAgZWxpZiB2YWx1ZVswXSBpbiBTUEVDSUFMUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkICdhdG9tJyBvciAncXVvdGVkLXN0cmluZycgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0b20odmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIHJldHVybiB0b2tlbiwgdmFsdWUKKworZGVmIGdldF9waHJhc2UodmFsdWUpOgorICAgICIiIiBwaHJhc2UgPSAxKndvcmQgLyBvYnMtcGhyYXNlCisgICAgICAgIG9icy1waHJhc2UgPSB3b3JkICood29yZCAvICIuIiAvIENGV1MpCisKKyAgICBUaGlzIG1lYW5zIGEgcGhyYXNlIGNhbiBiZSBhIHNlcXVlbmNlIG9mIHdvcmRzLCBwZXJpb2RzLCBhbmQgQ0ZXUyBpbiBhbnkKKyAgICBvcmRlciBhcyBsb25nIGFzIGl0IHN0YXJ0cyB3aXRoIGF0IGxlYXN0IG9uZSB3b3JkLiAgSWYgYW55dGhpbmcgb3RoZXIgdGhhbgorICAgIHdvcmRzIGlzIGRldGVjdGVkLCBhbiBPYnNvbGV0ZUhlYWRlckRlZmVjdCBpcyBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3QKKyAgICBsaXN0LiAgV2UgYWxzbyBhY2NlcHQgYSBwaHJhc2UgdGhhdCBzdGFydHMgd2l0aCBDRldTIGZvbGxvd2VkIGJ5IGEgZG90OworICAgIHRoaXMgaXMgcmVnaXN0ZXJlZCBhcyBhbiBJbnZhbGlkSGVhZGVyRGVmZWN0LCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5CisgICAgZXZlbiB0aGUgb2Jzb2xldGUgZ3JhbW1hci4KKworICAgICIiIgorICAgIHBocmFzZSA9IFBocmFzZSgpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgcGhyYXNlLmFwcGVuZCh0b2tlbikKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHBocmFzZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJwaHJhc2UgZG9lcyBub3Qgc3RhcnQgd2l0aCB3b3JkIikpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgaWYgdmFsdWVbMF09PScuJzoKKyAgICAgICAgICAgIHBocmFzZS5hcHBlbmQoRE9UKQorICAgICAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAicGVyaW9kIGluICdwaHJhc2UnIikpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF93b3JkKHZhbHVlKQorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgcGhyYXNlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb21tZW50IGZvdW5kIHdpdGhvdXQgYXRvbSIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBwaHJhc2UuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBwaHJhc2UsIHZhbHVlCisKK2RlZiBnZXRfbG9jYWxfcGFydCh2YWx1ZSk6CisgICAgIiIiIGxvY2FsLXBhcnQgPSBkb3QtYXRvbSAvIHF1b3RlZC1zdHJpbmcgLyBvYnMtbG9jYWwtcGFydAorCisgICAgIiIiCisgICAgbG9jYWxfcGFydCA9IExvY2FsUGFydCgpCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCBsb2NhbC1wYXJ0IGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3dvcmQodmFsdWUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdICE9ICdcXCcgYW5kIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICB0b2tlbiA9IFRva2VuTGlzdCgpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIGxvY2FsX3BhcnQuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCAodmFsdWVbMF09PSdcXCcgb3IgdmFsdWVbMF0gbm90IGluIFBIUkFTRV9FTkRTKToKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQsIHZhbHVlID0gZ2V0X29ic19sb2NhbF9wYXJ0KHN0cihsb2NhbF9wYXJ0KSArIHZhbHVlKQorICAgICAgICBpZiBvYnNfbG9jYWxfcGFydC50b2tlbl90eXBlID09ICdpbnZhbGlkLW9icy1sb2NhbC1wYXJ0JzoKKyAgICAgICAgICAgIGxvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgaXMgbm90IGRvdC1hdG9tLCBxdW90ZWQtc3RyaW5nLCBvciBvYnMtbG9jYWwtcGFydCIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImxvY2FsLXBhcnQgaXMgbm90IGEgZG90LWF0b20gKGNvbnRhaW5zIENGV1MpIikpCisgICAgICAgIGxvY2FsX3BhcnRbMF0gPSBvYnNfbG9jYWxfcGFydAorICAgIHRyeToKKyAgICAgICAgbG9jYWxfcGFydC52YWx1ZS5lbmNvZGUoJ2FzY2lpJykKKyAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICBsb2NhbF9wYXJ0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5Ob25BU0NJSUxvY2FsUGFydERlZmVjdCgKKyAgICAgICAgICAgICAgICAibG9jYWwtcGFydCBjb250YWlucyBub24tQVNDSUkgY2hhcmFjdGVycykiKSkKKyAgICByZXR1cm4gbG9jYWxfcGFydCwgdmFsdWUKKworZGVmIGdldF9vYnNfbG9jYWxfcGFydCh2YWx1ZSk6CisgICAgIiIiIG9icy1sb2NhbC1wYXJ0ID0gd29yZCAqKCIuIiB3b3JkKQorICAgICIiIgorICAgIG9ic19sb2NhbF9wYXJ0ID0gT2JzTG9jYWxQYXJ0KCkKKyAgICBsYXN0X25vbl93c193YXNfZG90ID0gRmFsc2UKKyAgICB3aGlsZSB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nXFwnIG9yIHZhbHVlWzBdIG5vdCBpbiBQSFJBU0VfRU5EUyk6CisgICAgICAgIGlmIHZhbHVlWzBdID09ICcuJzoKKyAgICAgICAgICAgIGlmIGxhc3Rfbm9uX3dzX3dhc19kb3Q6CisgICAgICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHJlcGVhdGVkICcuJyIpKQorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuYXBwZW5kKERPVCkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBUcnVlCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZWxpZiB2YWx1ZVswXT09J1xcJzoKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0LmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3BsYWNlZC1zcGVjaWFsJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgIidcXCcgY2hhcmFjdGVyIG91dHNpZGUgb2YgcXVvdGVkLXN0cmluZy9jY29udGVudCIpKQorICAgICAgICAgICAgbGFzdF9ub25fd3Nfd2FzX2RvdCA9IEZhbHNlCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBvYnNfbG9jYWxfcGFydCBhbmQgb2JzX2xvY2FsX3BhcnRbLTFdLnRva2VuX3R5cGUgIT0gJ2RvdCc6CisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAibWlzc2luZyAnLicgYmV0d2VlbiB3b3JkcyIpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfd29yZCh2YWx1ZSkKKyAgICAgICAgICAgIGxhc3Rfbm9uX3dzX3dhc19kb3QgPSBGYWxzZQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBpZiB2YWx1ZVswXSBub3QgaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBvYnNfbG9jYWxfcGFydC5hcHBlbmQodG9rZW4pCisgICAgaWYgKG9ic19sb2NhbF9wYXJ0WzBdLnRva2VuX3R5cGUgPT0gJ2RvdCcgb3IKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0WzBdLnRva2VuX3R5cGU9PSdjZndzJyBhbmQKKyAgICAgICAgICAgIG9ic19sb2NhbF9wYXJ0WzFdLnRva2VuX3R5cGU9PSdkb3QnKToKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiSW52YWxpZCBsZWFkaW5nICcuJyBpbiBsb2NhbCBwYXJ0IikpCisgICAgaWYgKG9ic19sb2NhbF9wYXJ0Wy0xXS50b2tlbl90eXBlID09ICdkb3QnIG9yCisgICAgICAgICAgICBvYnNfbG9jYWxfcGFydFstMV0udG9rZW5fdHlwZT09J2Nmd3MnIGFuZAorICAgICAgICAgICAgb2JzX2xvY2FsX3BhcnRbLTJdLnRva2VuX3R5cGU9PSdkb3QnKToKKyAgICAgICAgb2JzX2xvY2FsX3BhcnQuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiSW52YWxpZCB0cmFpbGluZyAnLicgaW4gbG9jYWwgcGFydCIpKQorICAgIGlmIG9ic19sb2NhbF9wYXJ0LmRlZmVjdHM6CisgICAgICAgIG9ic19sb2NhbF9wYXJ0LnRva2VuX3R5cGUgPSAnaW52YWxpZC1vYnMtbG9jYWwtcGFydCcKKyAgICByZXR1cm4gb2JzX2xvY2FsX3BhcnQsIHZhbHVlCisKK2RlZiBnZXRfZHRleHQodmFsdWUpOgorICAgICIiIiBkdGV4dCA9IDxwcmludGFibGUgYXNjaWkgZXhjZXB0IFwgWyBdPiAvIG9icy1kdGV4dAorICAgICAgICBvYnMtZHRleHQgPSBvYnMtTk8tV1MtQ1RMIC8gcXVvdGVkLXBhaXIKKworICAgIFdlIGFsbG93IGFueXRoaW5nIGV4Y2VwdCB0aGUgZXhjbHVkZWQgY2hhcmFjdGVycywgYnV0IGJ1dCBpZiB3ZSBmaW5kIGFueQorICAgIEFTQ0lJIG90aGVyIHRoYW4gdGhlIFJGQyBkZWZpbmVkIHByaW50YWJsZSBBU0NJSSBhbiBOb25QcmludGFibGVEZWZlY3QgaXMKKyAgICBhZGRlZCB0byB0aGUgdG9rZW4ncyBkZWZlY3RzIGxpc3QuICBRdW90ZWQgcGFpcnMgYXJlIGNvbnZlcnRlZCB0byB0aGVpcgorICAgIHVucXVvdGVkIHZhbHVlcywgc28gd2hhdCBpcyByZXR1cm5lZCBpcyBhIHB0ZXh0IHRva2VuLCBpbiB0aGlzIGNhc2UgYQorICAgIFZhbHVlVGVybWluYWwuICBJZiB0aGVyZSB3ZXJlIHF1b3RlZC1wcmludGFibGVzLCBhbiBPYnNvbGV0ZUhlYWRlckRlZmVjdCBpcworICAgIGFkZGVkIHRvIHRoZSByZXR1cm5lZCB0b2tlbidzIGRlZmVjdCBsaXN0LgorCisgICAgIiIiCisgICAgcHRleHQsIHZhbHVlLCBoYWRfcXAgPSBfZ2V0X3B0ZXh0X3RvX2VuZGNoYXJzKHZhbHVlLCAnW10nKQorICAgIHB0ZXh0ID0gVmFsdWVUZXJtaW5hbChwdGV4dCwgJ3B0ZXh0JykKKyAgICBpZiBoYWRfcXA6CisgICAgICAgIHB0ZXh0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJxdW90ZWQgcHJpbnRhYmxlIGZvdW5kIGluIGRvbWFpbi1saXRlcmFsIikpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KHB0ZXh0KQorICAgIHJldHVybiBwdGV4dCwgdmFsdWUKKworZGVmIF9jaGVja19mb3JfZWFybHlfZGxfZW5kKHZhbHVlLCBkb21haW5fbGl0ZXJhbCk6CisgICAgaWYgdmFsdWU6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgImVuZCBvZiBpbnB1dCBpbnNpZGUgZG9tYWluLWxpdGVyYWwiKSkKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnXScsICdkb21haW4tbGl0ZXJhbC1lbmQnKSkKKyAgICByZXR1cm4gVHJ1ZQorCitkZWYgZ2V0X2RvbWFpbl9saXRlcmFsKHZhbHVlKToKKyAgICAiIiIgZG9tYWluLWxpdGVyYWwgPSBbQ0ZXU10gIlsiICooW0ZXU10gZHRleHQpIFtGV1NdICJdIiBbQ0ZXU10KKworICAgICIiIgorICAgIGRvbWFpbl9saXRlcmFsID0gRG9tYWluTGl0ZXJhbCgpCisgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiZXhwZWN0ZWQgZG9tYWluLWxpdGVyYWwiKQorICAgIGlmIHZhbHVlWzBdICE9ICdbJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkICdbJyBhdCBzdGFydCBvZiBkb21haW4tbGl0ZXJhbCAiCisgICAgICAgICAgICAgICAgImJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICAgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCdbJywgJ2RvbWFpbi1saXRlcmFsLXN0YXJ0JykpCisgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2R0ZXh0KHZhbHVlKQorICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICBpZiBfY2hlY2tfZm9yX2Vhcmx5X2RsX2VuZCh2YWx1ZSwgZG9tYWluX2xpdGVyYWwpOgorICAgICAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCisgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZndzKHZhbHVlKQorICAgICAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQodG9rZW4pCisgICAgaWYgX2NoZWNrX2Zvcl9lYXJseV9kbF9lbmQodmFsdWUsIGRvbWFpbl9saXRlcmFsKToKKyAgICAgICAgcmV0dXJuIGRvbWFpbl9saXRlcmFsLCB2YWx1ZQorICAgIGlmIHZhbHVlWzBdICE9ICddJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkICddJyBhdCBlbmQgb2YgZG9tYWluLWxpdGVyYWwgIgorICAgICAgICAgICAgICAgICJidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBkb21haW5fbGl0ZXJhbC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnXScsICdkb21haW4tbGl0ZXJhbC1lbmQnKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGRvbWFpbl9saXRlcmFsLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZG9tYWluX2xpdGVyYWwsIHZhbHVlCisKK2RlZiBnZXRfZG9tYWluKHZhbHVlKToKKyAgICAiIiIgZG9tYWluID0gZG90LWF0b20gLyBkb21haW4tbGl0ZXJhbCAvIG9icy1kb21haW4KKyAgICAgICAgb2JzLWRvbWFpbiA9IGF0b20gKigiLiIgYXRvbSkpCisKKyAgICAiIiIKKyAgICBkb21haW4gPSBEb21haW4oKQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgZG9tYWluIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIGlmIHZhbHVlWzBdID09ICdbJzoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbl9saXRlcmFsKHZhbHVlKQorICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgICAgICBkb21haW4uYXBwZW5kKHRva2VuKQorICAgICAgICByZXR1cm4gZG9tYWluLCB2YWx1ZQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvdF9hdG9tKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0b20odmFsdWUpCisgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICB0b2tlbls6MF0gPSBbbGVhZGVyXQorICAgIGRvbWFpbi5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcuJzoKKyAgICAgICAgZG9tYWluLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJkb21haW4gaXMgbm90IGEgZG90LWF0b20gKGNvbnRhaW5zIENGV1MpIikpCisgICAgICAgIGlmIGRvbWFpblswXS50b2tlbl90eXBlID09ICdkb3QtYXRvbSc6CisgICAgICAgICAgICBkb21haW5bOl0gPSBkb21haW5bMF0KKyAgICAgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdID09ICcuJzoKKyAgICAgICAgICAgIGRvbWFpbi5hcHBlbmQoRE9UKQorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0b20odmFsdWVbMTpdKQorICAgICAgICAgICAgZG9tYWluLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gZG9tYWluLCB2YWx1ZQorCitkZWYgZ2V0X2FkZHJfc3BlYyh2YWx1ZSk6CisgICAgIiIiIGFkZHItc3BlYyA9IGxvY2FsLXBhcnQgIkAiIGRvbWFpbgorCisgICAgIiIiCisgICAgYWRkcl9zcGVjID0gQWRkclNwZWMoKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9sb2NhbF9wYXJ0KHZhbHVlKQorICAgIGFkZHJfc3BlYy5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICdAJzoKKyAgICAgICAgYWRkcl9zcGVjLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImFkZC1zcGVjIGxvY2FsIHBhcnQgd2l0aCBubyBkb21haW4iKSkKKyAgICAgICAgcmV0dXJuIGFkZHJfc3BlYywgdmFsdWUKKyAgICBhZGRyX3NwZWMuYXBwZW5kKFZhbHVlVGVybWluYWwoJ0AnLCAnYWRkcmVzcy1hdC1zeW1ib2wnKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluKHZhbHVlWzE6XSkKKyAgICBhZGRyX3NwZWMuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhZGRyX3NwZWMsIHZhbHVlCisKK2RlZiBnZXRfb2JzX3JvdXRlKHZhbHVlKToKKyAgICAiIiIgb2JzLXJvdXRlID0gb2JzLWRvbWFpbi1saXN0ICI6IgorICAgICAgICBvYnMtZG9tYWluLWxpc3QgPSAqKENGV1MgLyAiLCIpICJAIiBkb21haW4gKigiLCIgW0NGV1NdIFsiQCIgZG9tYWluXSkKKworICAgICAgICBSZXR1cm5zIGFuIG9icy1yb3V0ZSB0b2tlbiB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdWItdG9rZW5zICh0aGF0IGlzLAorICAgICAgICB0aGVyZSBpcyBubyBvYnMtZG9tYWluLWxpc3QgaW4gdGhlIHBhcnNlIHRyZWUpLgorICAgICIiIgorICAgIG9ic19yb3V0ZSA9IE9ic1JvdXRlKCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgKHZhbHVlWzBdPT0nLCcgb3IgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVIpOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgb2JzX3JvdXRlLmFwcGVuZCh0b2tlbikKKyAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKExpc3RTZXBhcmF0b3IpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnQCc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIG9icy1yb3V0ZSBkb21haW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgb2JzX3JvdXRlLmFwcGVuZChSb3V0ZUNvbXBvbmVudE1hcmtlcikKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZG9tYWluKHZhbHVlWzE6XSkKKyAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXT09JywnOgorICAgICAgICBvYnNfcm91dGUuYXBwZW5kKExpc3RTZXBhcmF0b3IpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnQCc6CisgICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKFJvdXRlQ29tcG9uZW50TWFya2VyKQorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2RvbWFpbih2YWx1ZVsxOl0pCisgICAgICAgICAgICBvYnNfcm91dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImVuZCBvZiBoZWFkZXIgd2hpbGUgcGFyc2luZyBvYnMtcm91dGUiKQorICAgIGlmIHZhbHVlWzBdICE9ICc6JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoICJleHBlY3RlZCAnOicgbWFya2luZyBlbmQgb2YgIgorICAgICAgICAgICAgIm9icy1yb3V0ZSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBvYnNfcm91dGUuYXBwZW5kKFZhbHVlVGVybWluYWwoJzonLCAnZW5kLW9mLW9icy1yb3V0ZS1tYXJrZXInKSkKKyAgICByZXR1cm4gb2JzX3JvdXRlLCB2YWx1ZVsxOl0KKworZGVmIGdldF9hbmdsZV9hZGRyKHZhbHVlKToKKyAgICAiIiIgYW5nbGUtYWRkciA9IFtDRldTXSAiPCIgYWRkci1zcGVjICI+IiBbQ0ZXU10gLyBvYnMtYW5nbGUtYWRkcgorICAgICAgICBvYnMtYW5nbGUtYWRkciA9IFtDRldTXSAiPCIgb2JzLXJvdXRlIGFkZHItc3BlYyAiPiIgW0NGV1NdCisKKyAgICAiIiIKKyAgICBhbmdsZV9hZGRyID0gQW5nbGVBZGRyKCkKKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSAhPSAnPCc6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGFuZ2xlLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgYW5nbGVfYWRkci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnPCcsICdhbmdsZS1hZGRyLXN0YXJ0JykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAjIEFsdGhvdWdoIGl0IGlzIG5vdCBsZWdhbCBwZXIgUkZDNTMyMiwgU01UUCB1c2VzICc8PicgaW4gY2VydGFpbgorICAgICMgY2lyY3Vtc3RhbmNlcy4KKyAgICBpZiB2YWx1ZVswXSA9PSAnPic6CisgICAgICAgIGFuZ2xlX2FkZHIuYXBwZW5kKFZhbHVlVGVybWluYWwoJz4nLCAnYW5nbGUtYWRkci1lbmQnKSkKKyAgICAgICAgYW5nbGVfYWRkci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJudWxsIGFkZHItc3BlYyBpbiBhbmdsZS1hZGRyIikpCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIHJldHVybiBhbmdsZV9hZGRyLCB2YWx1ZQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJfc3BlYyh2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9vYnNfcm91dGUodmFsdWUpCisgICAgICAgICAgICBhbmdsZV9hZGRyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAib2Jzb2xldGUgcm91dGUgc3BlY2lmaWNhdGlvbiBpbiBhbmdsZS1hZGRyIikpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBhZGRyLXNwZWMgb3Igb2JzLXJvdXRlIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2FkZHJfc3BlYyh2YWx1ZSkKKyAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gPT0gJz4nOgorICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGVsc2U6CisgICAgICAgIGFuZ2xlX2FkZHIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAibWlzc2luZyB0cmFpbGluZyAnPicgb24gYW5nbGUtYWRkciIpKQorICAgIGFuZ2xlX2FkZHIuYXBwZW5kKFZhbHVlVGVybWluYWwoJz4nLCAnYW5nbGUtYWRkci1lbmQnKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhbmdsZV9hZGRyLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYW5nbGVfYWRkciwgdmFsdWUKKworZGVmIGdldF9kaXNwbGF5X25hbWUodmFsdWUpOgorICAgICIiIiBkaXNwbGF5LW5hbWUgPSBwaHJhc2UKKworICAgIEJlY2F1c2UgdGhpcyBpcyBzaW1wbHkgYSBuYW1lLXJ1bGUsIHdlIGRvbid0IHJldHVybiBhIGRpc3BsYXktbmFtZQorICAgIHRva2VuIGNvbnRhaW5pbmcgYSBwaHJhc2UsIGJ1dCByYXRoZXIgYSBkaXNwbGF5LW5hbWUgdG9rZW4gd2l0aAorICAgIHRoZSBjb250ZW50IG9mIHRoZSBwaHJhc2UuCisKKyAgICAiIiIKKyAgICBkaXNwbGF5X25hbWUgPSBEaXNwbGF5TmFtZSgpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3BocmFzZSh2YWx1ZSkKKyAgICBkaXNwbGF5X25hbWUuZXh0ZW5kKHRva2VuWzpdKQorICAgIGRpc3BsYXlfbmFtZS5kZWZlY3RzID0gdG9rZW4uZGVmZWN0c1s6XQorICAgIHJldHVybiBkaXNwbGF5X25hbWUsIHZhbHVlCisKKworZGVmIGdldF9uYW1lX2FkZHIodmFsdWUpOgorICAgICIiIiBuYW1lLWFkZHIgPSBbZGlzcGxheS1uYW1lXSBhbmdsZS1hZGRyCisKKyAgICAiIiIKKyAgICBuYW1lX2FkZHIgPSBOYW1lQWRkcigpCisgICAgIyBCb3RoIHRoZSBvcHRpb25hbCBkaXNwbGF5IG5hbWUgYW5kIHRoZSBhbmdsZS1hZGRyIGNhbiBzdGFydCB3aXRoIGNmd3MuCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgICAgICJleHBlY3RlZCBuYW1lLWFkZHIgYnV0IGZvdW5kICd7fSciLmZvcm1hdChsZWFkZXIpKQorICAgIGlmIHZhbHVlWzBdICE9ICc8JzoKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbmFtZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZGlzcGxheV9uYW1lKHZhbHVlKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbmFtZS1hZGRyIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodG9rZW4pKQorICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0b2tlblswXVs6MF0gPSBbbGVhZGVyXQorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICBuYW1lX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hbmdsZV9hZGRyKHZhbHVlKQorICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICBuYW1lX2FkZHIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBuYW1lX2FkZHIsIHZhbHVlCisKK2RlZiBnZXRfbWFpbGJveCh2YWx1ZSk6CisgICAgIiIiIG1haWxib3ggPSBuYW1lLWFkZHIgLyBhZGRyLXNwZWMKKworICAgICIiIgorICAgICMgVGhlIG9ubHkgd2F5IHRvIGZpZ3VyZSBvdXQgaWYgd2UgYXJlIGRlYWxpbmcgd2l0aCBhIG5hbWUtYWRkciBvciBhbgorICAgICMgYWRkci1zcGVjIGlzIHRvIHRyeSBwYXJzaW5nIGVhY2ggb25lLgorICAgIG1haWxib3ggPSBNYWlsYm94KCkKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9uYW1lX2FkZHIodmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcl9zcGVjKHZhbHVlKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgbWFpbGJveCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBpZiBhbnkoaXNpbnN0YW5jZSh4LCBlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gdG9rZW4uYWxsX2RlZmVjdHMpOgorICAgICAgICBtYWlsYm94LnRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworICAgIG1haWxib3guYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBtYWlsYm94LCB2YWx1ZQorCitkZWYgZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgZW5kY2hhcnMpOgorICAgICIiIiBSZWFkIGV2ZXJ5dGhpbmcgdXAgdG8gb25lIG9mIHRoZSBjaGFycyBpbiBlbmRjaGFycy4KKworICAgIFRoaXMgaXMgb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIuICBUaGUgSW52YWxpZE1haWxib3ggVG9rZW5MaXN0IHRoYXQgaXMKKyAgICByZXR1cm5lZCBhY3RzIGxpa2UgYSBNYWlsYm94LCBidXQgdGhlIGRhdGEgYXR0cmlidXRlcyBhcmUgTm9uZS4KKworICAgICIiIgorICAgIGludmFsaWRfbWFpbGJveCA9IEludmFsaWRNYWlsYm94KCkKKyAgICB3aGlsZSB2YWx1ZSBhbmQgdmFsdWVbMF0gbm90IGluIGVuZGNoYXJzOgorICAgICAgICBpZiB2YWx1ZVswXSBpbiBQSFJBU0VfRU5EUzoKKyAgICAgICAgICAgIGludmFsaWRfbWFpbGJveC5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzcGxhY2VkLXNwZWNpYWwnKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorICAgICAgICAgICAgaW52YWxpZF9tYWlsYm94LmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gaW52YWxpZF9tYWlsYm94LCB2YWx1ZQorCitkZWYgZ2V0X21haWxib3hfbGlzdCh2YWx1ZSk6CisgICAgIiIiIG1haWxib3gtbGlzdCA9IChtYWlsYm94ICooIiwiIG1haWxib3gpKSAvIG9icy1tYm94LWxpc3QKKyAgICAgICAgb2JzLW1ib3gtbGlzdCA9ICooW0NGV1NdICIsIikgbWFpbGJveCAqKCIsIiBbbWFpbGJveCAvIENGV1NdKQorCisgICAgRm9yIHRoaXMgcm91dGluZSB3ZSBnbyBvdXRzaWRlIHRoZSBmb3JtYWwgZ3JhbW1hciBpbiBvcmRlciB0byBpbXByb3ZlIGVycm9yCisgICAgaGFuZGxpbmcuICBXZSByZWNvZ25pemUgdGhlIGVuZCBvZiB0aGUgbWFpbGJveCBsaXN0IG9ubHkgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICB2YWx1ZSBvciBhdCBhICc7JyAodGhlIGdyb3VwIHRlcm1pbmF0b3IpLiAgVGhpcyBpcyBzbyB0aGF0IHdlIGNhbiB0dXJuCisgICAgaW52YWxpZCBtYWlsYm94ZXMgaW50byBJbnZhbGlkTWFpbGJveCB0b2tlbnMgYW5kIGNvbnRpbnVlIHBhcnNpbmcgYW55CisgICAgcmVtYWluaW5nIHZhbGlkIG1haWxib3hlcy4gIFdlIGFsc28gYWxsb3cgYWxsIG1haWxib3ggZW50cmllcyB0byBiZSBudWxsLAorICAgIGFuZCB0aGlzIGNvbmRpdGlvbiBpcyBoYW5kbGVkIGFwcHJvcHJpYXRlbHkgYXQgYSBoaWdoZXIgbGV2ZWwuCisKKyAgICAiIiIKKyAgICBtYWlsYm94X2xpc3QgPSBNYWlsYm94TGlzdCgpCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X21haWxib3godmFsdWUpCisgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdIGluICcsOyc6CisgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImVtcHR5IGVsZW1lbnQgaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbWFpbGJveCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgICAgIGVsaWYgdmFsdWVbMF0gPT0gJywnOgorICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICJlbXB0eSBlbGVtZW50IGluIG1haWxib3gtbGlzdCIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9tYWlsYm94KHZhbHVlLCAnLDsnKQorICAgICAgICAgICAgICAgIGlmIGxlYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbWFpbGJveCBpbiBtYWlsYm94LWxpc3QiKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiAnLDsnOgorICAgICAgICAgICAgIyBDcmFwIGFmdGVyIG1haWxib3g7IHRyZWF0IGl0IGFzIGFuIGludmFsaWQgbWFpbGJveC4KKyAgICAgICAgICAgICMgVGhlIG1haWxib3ggaW5mbyB3aWxsIHN0aWxsIGJlIGF2YWlsYWJsZS4KKyAgICAgICAgICAgIG1haWxib3ggPSBtYWlsYm94X2xpc3RbLTFdCisgICAgICAgICAgICBtYWlsYm94LnRva2VuX3R5cGUgPSAnaW52YWxpZC1tYWlsYm94JworICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfbWFpbGJveCh2YWx1ZSwgJyw7JykKKyAgICAgICAgICAgIG1haWxib3guZXh0ZW5kKHRva2VuKQorICAgICAgICAgICAgbWFpbGJveF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJpbnZhbGlkIG1haWxib3ggaW4gbWFpbGJveC1saXN0IikpCisgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICBtYWlsYm94X2xpc3QuYXBwZW5kKExpc3RTZXBhcmF0b3IpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHJldHVybiBtYWlsYm94X2xpc3QsIHZhbHVlCisKKworZGVmIGdldF9ncm91cF9saXN0KHZhbHVlKToKKyAgICAiIiIgZ3JvdXAtbGlzdCA9IG1haWxib3gtbGlzdCAvIENGV1MgLyBvYnMtZ3JvdXAtbGlzdAorICAgICAgICBvYnMtZ3JvdXAtbGlzdCA9IDEqKFtDRldTXSAiLCIpIFtDRldTXQorCisgICAgIiIiCisgICAgZ3JvdXBfbGlzdCA9IEdyb3VwTGlzdCgpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBncm91cF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgYmVmb3JlIGdyb3VwLWxpc3QiKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBlbWFpbCBwYXJzaW5nLCBzaW5jZSBDRldTLW9ubHkgaXMgYQorICAgICAgICAgICAgIyBsZWdhbCBhbHRlcm5hdGl2ZSB0byBncm91cC1saXN0IGluIGEgZ3JvdXAsIHdoaWNoIGlzIHRoZSBvbmx5CisgICAgICAgICAgICAjIHBsYWNlIGdyb3VwLWxpc3QgYXBwZWFycy4KKyAgICAgICAgICAgIGdyb3VwX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgImVuZCBvZiBoZWFkZXIgaW4gZ3JvdXAtbGlzdCIpKQorICAgICAgICAgICAgZ3JvdXBfbGlzdC5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisgICAgICAgIGlmIHZhbHVlWzBdID09ICc7JzoKKyAgICAgICAgICAgIGdyb3VwX2xpc3QuYXBwZW5kKGxlYWRlcikKKyAgICAgICAgICAgIHJldHVybiBncm91cF9saXN0LCB2YWx1ZQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9tYWlsYm94X2xpc3QodmFsdWUpCisgICAgaWYgbGVuKHRva2VuLmFsbF9tYWlsYm94ZXMpPT0wOgorICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBncm91cF9saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgIGdyb3VwX2xpc3QuZXh0ZW5kKHRva2VuKQorICAgICAgICBncm91cF9saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJncm91cC1saXN0IHdpdGggZW1wdHkgZW50cmllcyIpKQorICAgICAgICByZXR1cm4gZ3JvdXBfbGlzdCwgdmFsdWUKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgZ3JvdXBfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGdyb3VwX2xpc3QsIHZhbHVlCisKK2RlZiBnZXRfZ3JvdXAodmFsdWUpOgorICAgICIiIiBncm91cCA9IGRpc3BsYXktbmFtZSAiOiIgW2dyb3VwLWxpc3RdICI7IiBbQ0ZXU10KKworICAgICIiIgorICAgIGdyb3VwID0gR3JvdXAoKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9kaXNwbGF5X25hbWUodmFsdWUpCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICc6JzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoImV4cGVjdGVkICc6JyBhdCBlbmQgb2YgZ3JvdXAgIgorICAgICAgICAgICAgImRpc3BsYXkgbmFtZSBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICBncm91cC5hcHBlbmQodG9rZW4pCisgICAgZ3JvdXAuYXBwZW5kKFZhbHVlVGVybWluYWwoJzonLCAnZ3JvdXAtZGlzcGxheS1uYW1lLXRlcm1pbmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgIGdyb3VwLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc7JywgJ2dyb3VwLXRlcm1pbmF0b3InKSkKKyAgICAgICAgcmV0dXJuIGdyb3VwLCB2YWx1ZVsxOl0KKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZ3JvdXBfbGlzdCh2YWx1ZSkKKyAgICBncm91cC5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBncm91cC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJlbmQgb2YgaGVhZGVyIGluIGdyb3VwIikpCisgICAgaWYgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCAnOycgYXQgZW5kIG9mIGdyb3VwIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICBncm91cC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdncm91cC10ZXJtaW5hdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBncm91cC5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGdyb3VwLCB2YWx1ZQorCitkZWYgZ2V0X2FkZHJlc3ModmFsdWUpOgorICAgICIiIiBhZGRyZXNzID0gbWFpbGJveCAvIGdyb3VwCisKKyAgICBOb3RlIHRoYXQgY291bnRlci1pbnR1aXRpdmVseSwgYW4gYWRkcmVzcyBjYW4gYmUgZWl0aGVyIGEgc2luZ2xlIGFkZHJlc3Mgb3IKKyAgICBhIGxpc3Qgb2YgYWRkcmVzc2VzIChhIGdyb3VwKS4gIFRoaXMgaXMgd2h5IHRoZSByZXR1cm5lZCBBZGRyZXNzIG9iamVjdCBoYXMKKyAgICBhICdtYWlsYm94ZXMnIGF0dHJpYnV0ZSB3aGljaCB0cmVhdHMgYSBzaW5nbGUgYWRkcmVzcyBhcyBhIGxpc3Qgb2YgbGVuZ3RoCisgICAgb25lLiAgV2hlbiB5b3UgbmVlZCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdG8gdHdvIGNhc2VzLCBleHRyYWN0IHRoZSBzaW5nbGUKKyAgICBlbGVtZW50LCB3aGljaCBpcyBlaXRoZXIgYSBtYWlsYm94IG9yIGEgZ3JvdXAgdG9rZW4uCisKKyAgICAiIiIKKyAgICAjIFRoZSBmb3JtYWwgZ3JhbW1hciBpc24ndCB2ZXJ5IGhlbHBmdWwgd2hlbiBwYXJzaW5nIGFuIGFkZHJlc3MuICBtYWlsYm94CisgICAgIyBhbmQgZ3JvdXAsIGVzcGVjaWFsbHkgd2hlbiBhbGxvd2luZyBmb3Igb2Jzb2xldGUgZm9ybXMsIHN0YXJ0IG9mZiB2ZXJ5CisgICAgIyBzaW1pbGFybHkuICBJdCBpcyBvbmx5IHdoZW4geW91IHJlYWNoIG9uZSBvZiBALCA8LCBvciA6IHRoYXQgeW91IGtub3cKKyAgICAjIHdoYXQgeW91J3ZlIGdvdC4gIFNvLCB3ZSB0cnkgZWFjaCBvbmUgaW4gdHVybiwgc3RhcnRpbmcgd2l0aCB0aGUgbW9yZQorICAgICMgbGlrZWx5IG9mIHRoZSB0d28uICBXZSBjb3VsZCBwZXJoYXBzIG1ha2UgdGhpcyBtb3JlIGVmZmljaWVudCBieSBsb29raW5nCisgICAgIyBmb3IgYSBwaHJhc2UgYW5kIHRoZW4gYnJhbmNoaW5nIGJhc2VkIG9uIHRoZSBuZXh0IGNoYXJhY3RlciwgYnV0IHRoYXQKKyAgICAjIHdvdWxkIGJlIGEgcHJlbWF0dXJlIG9wdGltaXphdGlvbi4KKyAgICBhZGRyZXNzID0gQWRkcmVzcygpCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZ3JvdXAodmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfbWFpbGJveCh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFkZHJlc3MgYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgYWRkcmVzcy5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGFkZHJlc3MsIHZhbHVlCisKK2RlZiBnZXRfYWRkcmVzc19saXN0KHZhbHVlKToKKyAgICAiIiIgYWRkcmVzc19saXN0ID0gKGFkZHJlc3MgKigiLCIgYWRkcmVzcykpIC8gb2JzLWFkZHItbGlzdAorICAgICAgICBvYnMtYWRkci1saXN0ID0gKihbQ0ZXU10gIiwiKSBhZGRyZXNzICooIiwiIFthZGRyZXNzIC8gQ0ZXU10pCisKKyAgICBXZSBkZXBhcnQgZnJvbSB0aGUgZm9ybWFsIGdyYW1tYXIgaGVyZSBieSBjb250aW51aW5nIHRvIHBhcnNlIHVudGlsIHRoZSBlbmQKKyAgICBvZiB0aGUgaW5wdXQsIGFzc3VtaW5nIHRoZSBpbnB1dCB0byBiZSBlbnRpcmVseSBjb21wb3NlZCBvZiBhbgorICAgIGFkZHJlc3MtbGlzdC4gIFRoaXMgaXMgYWx3YXlzIHRydWUgaW4gZW1haWwgcGFyc2luZywgYW5kIGFsbG93cyB1cworICAgIHRvIHNraXAgaW52YWxpZCBhZGRyZXNzZXMgdG8gcGFyc2UgYWRkaXRpb25hbCB2YWxpZCBvbmVzLgorCisgICAgIiIiCisgICAgYWRkcmVzc19saXN0ID0gQWRkcmVzc0xpc3QoKQorICAgIHdoaWxlIHZhbHVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfYWRkcmVzcyh2YWx1ZSkKKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hcHBlbmQodG9rZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsZWFkZXIgPSBOb25lCisgICAgICAgICAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgICAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdID09ICcsJzoKKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZChsZWFkZXIpCisgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiYWRkcmVzcy1saXN0IGVudHJ5IHdpdGggbm8gY29udGVudCIpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsJykKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVhZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZChBZGRyZXNzKFt0b2tlbl0pKQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBhZGRyZXNzIGluIGFkZHJlc3MtbGlzdCIpKQorICAgICAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnLCc6CisgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImVtcHR5IGVsZW1lbnQgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsJykKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZChBZGRyZXNzKFt0b2tlbl0pKQorICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgYWRkcmVzcyBpbiBhZGRyZXNzLWxpc3QiKSkKKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcsJzoKKyAgICAgICAgICAgICMgQ3JhcCBhZnRlciBhZGRyZXNzOyB0cmVhdCBpdCBhcyBhbiBpbnZhbGlkIG1haWxib3guCisgICAgICAgICAgICAjIFRoZSBtYWlsYm94IGluZm8gd2lsbCBzdGlsbCBiZSBhdmFpbGFibGUuCisgICAgICAgICAgICBtYWlsYm94ID0gYWRkcmVzc19saXN0Wy0xXVswXQorICAgICAgICAgICAgbWFpbGJveC50b2tlbl90eXBlID0gJ2ludmFsaWQtbWFpbGJveCcKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9pbnZhbGlkX21haWxib3godmFsdWUsICcsJykKKyAgICAgICAgICAgIG1haWxib3guZXh0ZW5kKHRva2VuKQorICAgICAgICAgICAgYWRkcmVzc19saXN0LmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGFkZHJlc3MgaW4gYWRkcmVzcy1saXN0IikpCisgICAgICAgIGlmIHZhbHVlOiAgIyBNdXN0IGJlIGEgLCBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcsJywgJ2xpc3Qtc2VwYXJhdG9yJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHJldHVybiBhZGRyZXNzX2xpc3QsIHZhbHVlCisKKyMKKyMgWFhYOiBBcyBJIGJlZ2luIHRvIGFkZCBhZGRpdGlvbmFsIGhlYWRlciBwYXJzZXJzLCBJJ20gcmVhbGl6aW5nIHdlIHByb2JhYmx5CisjIGhhdmUgdHdvIGxldmVsIG9mIHBhcnNlciByb3V0aW5lczogdGhlIGdldF9YWFggbWV0aG9kcyB0aGF0IGdldCBhIHRva2VuIGluCisjIHRoZSBncmFtbWFyLCBhbmQgcGFyc2VfWFhYIG1ldGhvZHMgdGhhdCBwYXJzZSBhbiBlbnRpcmUgZmllbGQgdmFsdWUuICBTbworIyBnZXRfYWRkcmVzc19saXN0IGFib3ZlIHNob3VsZCByZWFsbHkgYmUgYSBwYXJzZV8gbWV0aG9kLCBhcyBwcm9iYWJseSBzaG91bGQKKyMgYmUgZ2V0X3Vuc3RydWN0dXJlZC4KKyMKKworZGVmIHBhcnNlX21pbWVfdmVyc2lvbih2YWx1ZSk6CisgICAgIiIiIG1pbWUtdmVyc2lvbiA9IFtDRldTXSAxKmRpZ2l0IFtDRldTXSAiLiIgW0NGV1NdIDEqZGlnaXQgW0NGV1NdCisKKyAgICAiIiIKKyAgICAjIFRoZSBbQ0ZXU10gaXMgaW1wbGljaXQgaW4gdGhlIFJGQyAyMDQ1IEJORi4KKyAgICAjIFhYWDogVGhpcyByb3V0aW5lIGlzIGEgYml0IHZlcmJvc2UsIHNob3VsZCBmYWN0b3Igb3V0IGEgZ2V0X2ludCBtZXRob2QuCisgICAgbWltZV92ZXJzaW9uID0gTUlNRVZlcnNpb24oKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKKyAgICAgICAgICAgICJNaXNzaW5nIE1JTUUgdmVyc2lvbiBudW1iZXIgKGVnOiAxLjApIikpCisgICAgICAgIHJldHVybiBtaW1lX3ZlcnNpb24KKyAgICBpZiB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWUoCisgICAgICAgICAgICAgICAgIkV4cGVjdGVkIE1JTUUgdmVyc2lvbiBudW1iZXIgYnV0IGZvdW5kIG9ubHkgQ0ZXUyIpKQorICAgIGRpZ2l0cyA9ICcnCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICcuJyBhbmQgdmFsdWVbMF0gbm90IGluIENGV1NfTEVBREVSOgorICAgICAgICBkaWdpdHMgKz0gdmFsdWVbMF0KKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiBub3QgZGlnaXRzLmlzZGlnaXQoKToKKyAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIE1JTUUgbWFqb3IgdmVyc2lvbiBudW1iZXIgYnV0IGZvdW5kIHshcn0iLmZvcm1hdChkaWdpdHMpKSkKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ3h0ZXh0JykpCisgICAgZWxzZToKKyAgICAgICAgbWltZV92ZXJzaW9uLm1ham9yID0gaW50KGRpZ2l0cykKKyAgICAgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKGRpZ2l0cywgJ2RpZ2l0cycpKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQodG9rZW4pCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICcuJzoKKyAgICAgICAgaWYgbWltZV92ZXJzaW9uLm1ham9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJJbmNvbXBsZXRlIE1JTUUgdmVyc2lvbjsgZm91bmQgb25seSBtYWpvciBudW1iZXIiKSkKKyAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWUsICd4dGV4dCcpKQorICAgICAgICByZXR1cm4gbWltZV92ZXJzaW9uCisgICAgbWltZV92ZXJzaW9uLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcuJywgJ3ZlcnNpb24tc2VwYXJhdG9yJykpCisgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgaWYgbWltZV92ZXJzaW9uLm1ham9yIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbWltZV92ZXJzaW9uLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJJbmNvbXBsZXRlIE1JTUUgdmVyc2lvbjsgZm91bmQgb25seSBtYWpvciBudW1iZXIiKSkKKyAgICAgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorICAgIGRpZ2l0cyA9ICcnCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdIG5vdCBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgbm90IGRpZ2l0cy5pc2RpZ2l0KCk6CisgICAgICAgIG1pbWVfdmVyc2lvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBNSU1FIG1pbm9yIHZlcnNpb24gbnVtYmVyIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQoZGlnaXRzKSkpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICd4dGV4dCcpKQorICAgIGVsc2U6CisgICAgICAgIG1pbWVfdmVyc2lvbi5taW5vciA9IGludChkaWdpdHMpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICdkaWdpdHMnKSkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBtaW1lX3ZlcnNpb24uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlOgorICAgICAgICBtaW1lX3ZlcnNpb24uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhjZXNzIG5vbi1DRldTIHRleHQgYWZ0ZXIgTUlNRSB2ZXJzaW9uIikpCisgICAgICAgIG1pbWVfdmVyc2lvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbCh2YWx1ZSwgJ3h0ZXh0JykpCisgICAgcmV0dXJuIG1pbWVfdmVyc2lvbgorCitkZWYgZ2V0X2ludmFsaWRfcGFyYW1ldGVyKHZhbHVlKToKKyAgICAiIiIgUmVhZCBldmVyeXRoaW5nIHVwIHRvIHRoZSBuZXh0ICc7Jy4KKworICAgIFRoaXMgaXMgb3V0c2lkZSB0aGUgZm9ybWFsIGdyYW1tYXIuICBUaGUgSW52YWxpZFBhcmFtZXRlciBUb2tlbkxpc3QgdGhhdCBpcworICAgIHJldHVybmVkIGFjdHMgbGlrZSBhIFBhcmFtZXRlciwgYnV0IHRoZSBkYXRhIGF0dHJpYnV0ZXMgYXJlIE5vbmUuCisKKyAgICAiIiIKKyAgICBpbnZhbGlkX3BhcmFtZXRlciA9IEludmFsaWRQYXJhbWV0ZXIoKQorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgaW52YWxpZF9wYXJhbWV0ZXIuYXBwZW5kKFZhbHVlVGVybWluYWwodmFsdWVbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzcGxhY2VkLXNwZWNpYWwnKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorICAgICAgICAgICAgaW52YWxpZF9wYXJhbWV0ZXIuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBpbnZhbGlkX3BhcmFtZXRlciwgdmFsdWUKKworZGVmIGdldF90dGV4dCh2YWx1ZSk6CisgICAgIiIidHRleHQgPSA8bWF0Y2hlcyBfdHRleHRfbWF0Y2hlcj4KKworICAgIFdlIGFsbG93IGFueSBub24tVE9LRU5fRU5EUyBpbiB0dGV4dCwgYnV0IGFkZCBkZWZlY3RzIHRvIHRoZSB0b2tlbidzCisgICAgZGVmZWN0cyBsaXN0IGlmIHdlIGZpbmQgbm9uLXR0ZXh0IGNoYXJhY3RlcnMuICBXZSBhbHNvIHJlZ2lzdGVyIGRlZmVjdHMgZm9yCisgICAgKmFueSogbm9uLXByaW50YWJsZXMgZXZlbiB0aG91Z2ggdGhlIFJGQyBkb2Vzbid0IGV4Y2x1ZGUgYWxsIG9mIHRoZW0sCisgICAgYmVjYXVzZSB3ZSBmb2xsb3cgdGhlIHNwaXJpdCBvZiBSRkMgNTMyMi4KKworICAgICIiIgorICAgIG0gPSBfbm9uX3Rva2VuX2VuZF9tYXRjaGVyKHZhbHVlKQorICAgIGlmIG5vdCBtOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0dGV4dCBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0dGV4dCA9IG0uZ3JvdXAoKQorICAgIHZhbHVlID0gdmFsdWVbbGVuKHR0ZXh0KTpdCisgICAgdHRleHQgPSBWYWx1ZVRlcm1pbmFsKHR0ZXh0LCAndHRleHQnKQorICAgIF92YWxpZGF0ZV94dGV4dCh0dGV4dCkKKyAgICByZXR1cm4gdHRleHQsIHZhbHVlCisKK2RlZiBnZXRfdG9rZW4odmFsdWUpOgorICAgICIiInRva2VuID0gW0NGV1NdIDEqdHRleHQgW0NGV1NdCisKKyAgICBUaGUgUkZDIGVxdWl2YWxlbnQgb2YgdHRleHQgaXMgYW55IFVTLUFTQ0lJIGNoYXJzIGV4Y2VwdCBzcGFjZSwgY3Rscywgb3IKKyAgICB0c3BlY2lhbHMuICBXZSBhbHNvIGV4Y2x1ZGUgdGFicyBldmVuIHRob3VnaCB0aGUgUkZDIGRvZXNuJ3QuCisKKyAgICBUaGUgUkZDIGltcGxpZXMgdGhlIENGV1MgYnV0IGlzIG5vdCBleHBsaWNpdCBhYm91dCBpdCBpbiB0aGUgQk5GLgorCisgICAgIiIiCisgICAgbXRva2VuID0gVG9rZW4oKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG10b2tlbi5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIFRPS0VOX0VORFM6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIHRva2VuIGJ1dCBmb3VuZCAne30nIi5mb3JtYXQodmFsdWUpKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF90dGV4dCh2YWx1ZSkKKyAgICBtdG9rZW4uYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIG10b2tlbi5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIG10b2tlbiwgdmFsdWUKKworZGVmIGdldF9hdHRydGV4dCh2YWx1ZSk6CisgICAgIiIiYXR0cnRleHQgPSAxKihhbnkgbm9uLUFUVFJJQlVURV9FTkRTIGNoYXJhY3RlcikKKworICAgIFdlIGFsbG93IGFueSBub24tQVRUUklCVVRFX0VORFMgaW4gYXR0cnRleHQsIGJ1dCBhZGQgZGVmZWN0cyB0byB0aGUKKyAgICB0b2tlbidzIGRlZmVjdHMgbGlzdCBpZiB3ZSBmaW5kIG5vbi1hdHRydGV4dCBjaGFyYWN0ZXJzLiAgV2UgYWxzbyByZWdpc3RlcgorICAgIGRlZmVjdHMgZm9yICphbnkqIG5vbi1wcmludGFibGVzIGV2ZW4gdGhvdWdoIHRoZSBSRkMgZG9lc24ndCBleGNsdWRlIGFsbCBvZgorICAgIHRoZW0sIGJlY2F1c2Ugd2UgZm9sbG93IHRoZSBzcGlyaXQgb2YgUkZDIDUzMjIuCisKKyAgICAiIiIKKyAgICBtID0gX25vbl9hdHRyaWJ1dGVfZW5kX21hdGNoZXIodmFsdWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGF0dHJ0ZXh0IGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKQorICAgIGF0dHJ0ZXh0ID0gbS5ncm91cCgpCisgICAgdmFsdWUgPSB2YWx1ZVtsZW4oYXR0cnRleHQpOl0KKyAgICBhdHRydGV4dCA9IFZhbHVlVGVybWluYWwoYXR0cnRleHQsICdhdHRydGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KGF0dHJ0ZXh0KQorICAgIHJldHVybiBhdHRydGV4dCwgdmFsdWUKKworZGVmIGdldF9hdHRyaWJ1dGUodmFsdWUpOgorICAgICIiIiBbQ0ZXU10gMSphdHRydGV4dCBbQ0ZXU10KKworICAgIFRoaXMgdmVyc2lvbiBvZiB0aGUgQk5GIG1ha2VzIHRoZSBDRldTIGV4cGxpY2l0LCBhbmQgYXMgdXN1YWwgd2UgdXNlIGEKKyAgICB2YWx1ZSB0ZXJtaW5hbCBmb3IgdGhlIGFjdHVhbCBydW4gb2YgY2hhcmFjdGVycy4gIFRoZSBSRkMgZXF1aXZhbGVudCBvZgorICAgIGF0dHJ0ZXh0IGlzIHRoZSB0b2tlbiBjaGFyYWN0ZXJzLCB3aXRoIHRoZSBzdWJ0cmFjdGlvbiBvZiAnKicsICInIiwgYW5kICclJy4KKyAgICBXZSBpbmNsdWRlIHRhYiBpbiB0aGUgZXhjbHVkZWQgc2V0IGp1c3QgYXMgd2UgZG8gZm9yIHRva2VuLgorCisgICAgIiIiCisgICAgYXR0cmlidXRlID0gQXR0cmlidXRlKCkKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBBVFRSSUJVVEVfRU5EUzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoCisgICAgICAgICAgICAiZXhwZWN0ZWQgdG9rZW4gYnV0IGZvdW5kICd7fSciLmZvcm1hdCh2YWx1ZSkpCisgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2F0dHJ0ZXh0KHZhbHVlKQorICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfY2Z3cyh2YWx1ZSkKKyAgICAgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICByZXR1cm4gYXR0cmlidXRlLCB2YWx1ZQorCitkZWYgZ2V0X2V4dGVuZGVkX2F0dHJ0ZXh0KHZhbHVlKToKKyAgICAiIiJhdHRydGV4dCA9IDEqKGFueSBub24tQVRUUklCVVRFX0VORFMgY2hhcmFjdGVyIHBsdXMgJyUnKQorCisgICAgVGhpcyBpcyBhIHNwZWNpYWwgcGFyc2luZyByb3V0aW5lIHNvIHRoYXQgd2UgZ2V0IGEgdmFsdWUgdGhhdAorICAgIGluY2x1ZGVzICUgZXNjYXBlcyBhcyBhIHNpbmdsZSBzdHJpbmcgKHdoaWNoIHdlIGRlY29kZSBhcyBhIHNpbmdsZQorICAgIHN0cmluZyBsYXRlcikuCisKKyAgICAiIiIKKyAgICBtID0gX25vbl9leHRlbmRlZF9hdHRyaWJ1dGVfZW5kX21hdGNoZXIodmFsdWUpCisgICAgaWYgbm90IG06CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKAorICAgICAgICAgICAgImV4cGVjdGVkIGV4dGVuZGVkIGF0dHJ0ZXh0IGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKQorICAgIGF0dHJ0ZXh0ID0gbS5ncm91cCgpCisgICAgdmFsdWUgPSB2YWx1ZVtsZW4oYXR0cnRleHQpOl0KKyAgICBhdHRydGV4dCA9IFZhbHVlVGVybWluYWwoYXR0cnRleHQsICdleHRlbmRlZC1hdHRydGV4dCcpCisgICAgX3ZhbGlkYXRlX3h0ZXh0KGF0dHJ0ZXh0KQorICAgIHJldHVybiBhdHRydGV4dCwgdmFsdWUKKworZGVmIGdldF9leHRlbmRlZF9hdHRyaWJ1dGUodmFsdWUpOgorICAgICIiIiBbQ0ZXU10gMSpleHRlbmRlZF9hdHRydGV4dCBbQ0ZXU10KKworICAgIFRoaXMgaXMgbGlrZSB0aGUgbm9uLWV4dGVuZGVkIHZlcnNpb24gZXhjZXB0IHdlIGFsbG93ICUgY2hhcmFjdGVycywgc28gdGhhdAorICAgIHdlIGNhbiBwaWNrIHVwIGFuIGVuY29kZWQgdmFsdWUgYXMgYSBzaW5nbGUgc3RyaW5nLgorCisgICAgIiIiCisgICAgIyBYWFg6IHNob3VsZCB3ZSBoYXZlIGFuIEV4dGVuZGVkQXR0cmlidXRlIFRva2VuTGlzdD8KKyAgICBhdHRyaWJ1dGUgPSBBdHRyaWJ1dGUoKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSBpbiBDRldTX0xFQURFUjoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgICAgIGF0dHJpYnV0ZS5hcHBlbmQodG9rZW4pCisgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdIGluIEVYVEVOREVEX0FUVFJJQlVURV9FTkRTOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigKKyAgICAgICAgICAgICJleHBlY3RlZCB0b2tlbiBidXQgZm91bmQgJ3t9JyIuZm9ybWF0KHZhbHVlKSkKKyAgICB0b2tlbiwgdmFsdWUgPSBnZXRfZXh0ZW5kZWRfYXR0cnRleHQodmFsdWUpCisgICAgYXR0cmlidXRlLmFwcGVuZCh0b2tlbikKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBhdHRyaWJ1dGUuYXBwZW5kKHRva2VuKQorICAgIHJldHVybiBhdHRyaWJ1dGUsIHZhbHVlCisKK2RlZiBnZXRfc2VjdGlvbih2YWx1ZSk6CisgICAgIiIiICcqJyBkaWdpdHMKKworICAgIFRoZSBmb3JtYWwgQk5GIGlzIG1vcmUgY29tcGxpY2F0ZWQgYmVjYXVzZSBsZWFkaW5nIDBzIGFyZSBub3QgYWxsb3dlZC4gIFdlCisgICAgY2hlY2sgZm9yIHRoYXQgYW5kIGFkZCBhIGRlZmVjdC4gIFdlIGFsc28gYXNzdW1lIG5vIENGV1MgaXMgYWxsb3dlZCBiZXR3ZWVuCisgICAgdGhlICcqJyBhbmQgdGhlIGRpZ2l0cywgdGhvdWdoIHRoZSBSRkMgaXMgbm90IGNyeXN0YWwgY2xlYXIgb24gdGhhdC4KKyAgICBUaGUgY2FsbGVyIHNob3VsZCBhbHJlYWR5IGhhdmUgZGVhbHQgd2l0aCBsZWFkaW5nIENGV1MuCisKKyAgICAiIiIKKyAgICBzZWN0aW9uID0gU2VjdGlvbigpCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICcqJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IoIkV4cGVjdGVkIHNlY3Rpb24gYnV0IGZvdW5kIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpKQorICAgIHNlY3Rpb24uYXBwZW5kKFZhbHVlVGVybWluYWwoJyonLCAnc2VjdGlvbi1tYXJrZXInKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGlmIG5vdCB2YWx1ZSBvciBub3QgdmFsdWVbMF0uaXNkaWdpdCgpOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgc2VjdGlvbiBudW1iZXIgYnV0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdW5kIHt9Ii5mb3JtYXQodmFsdWUpKQorICAgIGRpZ2l0cyA9ICcnCisgICAgd2hpbGUgdmFsdWUgYW5kIHZhbHVlWzBdLmlzZGlnaXQoKToKKyAgICAgICAgZGlnaXRzICs9IHZhbHVlWzBdCisgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgaWYgZGlnaXRzWzBdID09ICcwJyBhbmQgZGlnaXRzICE9ICcwJzoKKyAgICAgICAgc2VjdGlvbi5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckVycm9yKCJzZWN0aW9uIG51bWJlciIKKyAgICAgICAgICAgICJoYXMgYW4gaW52YWxpZCBsZWFkaW5nIDAiKSkKKyAgICBzZWN0aW9uLm51bWJlciA9IGludChkaWdpdHMpCisgICAgc2VjdGlvbi5hcHBlbmQoVmFsdWVUZXJtaW5hbChkaWdpdHMsICdkaWdpdHMnKSkKKyAgICByZXR1cm4gc2VjdGlvbiwgdmFsdWUKKworCitkZWYgZ2V0X3ZhbHVlKHZhbHVlKToKKyAgICAiIiIgcXVvdGVkLXN0cmluZyAvIGF0dHJpYnV0ZQorCisgICAgIiIiCisgICAgdiA9IFZhbHVlKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCB2YWx1ZSBidXQgZm91bmQgZW5kIG9mIHN0cmluZyIpCisgICAgbGVhZGVyID0gTm9uZQorICAgIGlmIHZhbHVlWzBdIGluIENGV1NfTEVBREVSOgorICAgICAgICBsZWFkZXIsIHZhbHVlID0gZ2V0X2Nmd3ModmFsdWUpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgdmFsdWUgYnV0IGZvdW5kICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkge30iLmZvcm1hdChsZWFkZXIpKQorICAgIGlmIHZhbHVlWzBdID09ICciJzoKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3F1b3RlZF9zdHJpbmcodmFsdWUpCisgICAgZWxzZToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2V4dGVuZGVkX2F0dHJpYnV0ZSh2YWx1ZSkKKyAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHRva2VuWzowXSA9IFtsZWFkZXJdCisgICAgdi5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIHYsIHZhbHVlCisKK2RlZiBnZXRfcGFyYW1ldGVyKHZhbHVlKToKKyAgICAiIiIgYXR0cmlidXRlIFtzZWN0aW9uXSBbIioiXSBbQ0ZXU10gIj0iIHZhbHVlCisKKyAgICBUaGUgQ0ZXUyBpcyBpbXBsaWVkIGJ5IHRoZSBSRkMgYnV0IG5vdCBtYWRlIGV4cGxpY2l0IGluIHRoZSBCTkYuICBUaGlzCisgICAgc2ltcGxpZmllZCBmb3JtIG9mIHRoZSBCTkYgZnJvbSB0aGUgUkZDIGlzIG1hZGUgdG8gY29uZm9ybSB3aXRoIHRoZSBSRkMgQk5GCisgICAgdGhyb3VnaCBzb21lIGV4dHJhIGNoZWNrcy4gIFdlIGRvIGl0IHRoaXMgd2F5IGJlY2F1c2UgaXQgbWFrZXMgYm90aCBlcnJvcgorICAgIHJlY292ZXJ5IGFuZCB3b3JraW5nIHdpdGggdGhlIHJlc3VsdGluZyBwYXJzZSB0cmVlIGVhc2llci4KKyAgICAiIiIKKyAgICAjIEl0IGlzIHBvc3NpYmxlIENGV1Mgd291bGQgYWxzbyBiZSBpbXBsaWNpdGx5IGFsbG93ZWQgYmV0d2VlbiB0aGUgc2VjdGlvbgorICAgICMgYW5kIHRoZSAnZXh0ZW5kZWQtYXR0cmlidXRlJyBtYXJrZXIgKHRoZSAnKicpICwgYnV0IHdlJ3ZlIG5ldmVyIHNlZW4gdGhhdAorICAgICMgaW4gdGhlIHdpbGQgYW5kIHdlIHdpbGwgdGhlcmVmb3JlIGlnbm9yZSB0aGUgcG9zc2liaWxpdHkuCisgICAgcGFyYW0gPSBQYXJhbWV0ZXIoKQorICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRyaWJ1dGUodmFsdWUpCisgICAgcGFyYW0uYXBwZW5kKHRva2VuKQorICAgIGlmIG5vdCB2YWx1ZSBvciB2YWx1ZVswXSA9PSAnOyc6CisgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KCJQYXJhbWV0ZXIgY29udGFpbnMgIgorICAgICAgICAgICAgIm5hbWUgKHt9KSBidXQgbm8gdmFsdWUiLmZvcm1hdCh0b2tlbikpKQorICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCisgICAgaWYgdmFsdWVbMF0gPT0gJyonOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfc2VjdGlvbih2YWx1ZSkKKyAgICAgICAgICAgIHBhcmFtLnNlY3Rpb25lZCA9IFRydWUKKyAgICAgICAgICAgIHBhcmFtLmFwcGVuZCh0b2tlbikKKyAgICAgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiSW5jb21wbGV0ZSBwYXJhbWV0ZXIiKQorICAgICAgICBpZiB2YWx1ZVswXSA9PSAnKic6CisgICAgICAgICAgICBwYXJhbS5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnKicsICdleHRlbmRlZC1wYXJhbWV0ZXItbWFya2VyJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgICAgICAgICAgcGFyYW0uZXh0ZW5kZWQgPSBUcnVlCisgICAgaWYgdmFsdWVbMF0gIT0gJz0nOgorICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiUGFyYW1ldGVyIG5vdCBmb2xsb3dlZCBieSAnPSciKQorICAgIHBhcmFtLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCc9JywgJ3BhcmFtZXRlci1zZXBhcmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIGxlYWRlciA9IE5vbmUKKyAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICBwYXJhbS5hcHBlbmQodG9rZW4pCisgICAgcmVtYWluZGVyID0gTm9uZQorICAgIGFwcGVuZHRvID0gcGFyYW0KKyAgICBpZiBwYXJhbS5leHRlbmRlZCBhbmQgdmFsdWUgYW5kIHZhbHVlWzBdID09ICciJzoKKyAgICAgICAgIyBOb3cgZm9yIHNvbWUgc2VyaW91cyBoYWNrZXJ5IHRvIGhhbmRsZSB0aGUgY29tbW9uIGludmFsaWQgY2FzZSBvZgorICAgICAgICAjIGRvdWJsZSBxdW90ZXMgYXJvdW5kIGFuIGV4dGVuZGVkIHZhbHVlLiAgV2UgYWxzbyBhY2NlcHQgKHdpdGggZGVmZWN0KQorICAgICAgICAjIGEgdmFsdWUgbWFya2VkIGFzIGVuY29kZWQgdGhhdCBpc24ndCByZWFsbHkuCisgICAgICAgIHFzdHJpbmcsIHJlbWFpbmRlciA9IGdldF9xdW90ZWRfc3RyaW5nKHZhbHVlKQorICAgICAgICBpbm5lcl92YWx1ZSA9IHFzdHJpbmcuc3RyaXBwZWRfdmFsdWUKKyAgICAgICAgc2VtaV92YWxpZCA9IEZhbHNlCisgICAgICAgIGlmIHBhcmFtLnNlY3Rpb25fbnVtYmVyID09IDA6CisgICAgICAgICAgICBpZiBpbm5lcl92YWx1ZSBhbmQgaW5uZXJfdmFsdWVbMF0gPT0gIiciOgorICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCByZXN0ID0gZ2V0X2F0dHJ0ZXh0KGlubmVyX3ZhbHVlKQorICAgICAgICAgICAgICAgIGlmIHJlc3QgYW5kIHJlc3RbMF0gPT0gIiciOgorICAgICAgICAgICAgICAgICAgICBzZW1pX3ZhbGlkID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRva2VuLCByZXN0ID0gZ2V0X2V4dGVuZGVkX2F0dHJ0ZXh0KGlubmVyX3ZhbHVlKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3Q6CisgICAgICAgICAgICAgICAgICAgIHNlbWlfdmFsaWQgPSBUcnVlCisgICAgICAgIGlmIHNlbWlfdmFsaWQ6CisgICAgICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAiUXVvdGVkIHN0cmluZyB2YWx1ZSBmb3IgZXh0ZW5kZWQgcGFyYW1ldGVyIGlzIGludmFsaWQiKSkKKyAgICAgICAgICAgIHBhcmFtLmFwcGVuZChxc3RyaW5nKQorICAgICAgICAgICAgZm9yIHQgaW4gcXN0cmluZzoKKyAgICAgICAgICAgICAgICBpZiB0LnRva2VuX3R5cGUgPT0gJ2JhcmUtcXVvdGVkLXN0cmluZyc6CisgICAgICAgICAgICAgICAgICAgIHRbOl0gPSBbXQorICAgICAgICAgICAgICAgICAgICBhcHBlbmR0byA9IHQKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHZhbHVlID0gaW5uZXJfdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlbWFpbmRlciA9IE5vbmUKKyAgICAgICAgICAgIHBhcmFtLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgICAgICJQYXJhbWV0ZXIgbWFya2VkIGFzIGV4dGVuZGVkIGJ1dCBhcHBlYXJzIHRvIGhhdmUgYSAiCisgICAgICAgICAgICAgICAgInF1b3RlZCBzdHJpbmcgdmFsdWUgdGhhdCBpcyBub24tZW5jb2RlZCIpKQorICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVswXSA9PSAiJyI6CisgICAgICAgIHRva2VuID0gTm9uZQorICAgIGVsc2U6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF92YWx1ZSh2YWx1ZSkKKyAgICBpZiBub3QgcGFyYW0uZXh0ZW5kZWQgb3IgcGFyYW0uc2VjdGlvbl9udW1iZXIgPiAwOgorICAgICAgICBpZiBub3QgdmFsdWUgb3IgdmFsdWVbMF0gIT0gIiciOgorICAgICAgICAgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgaWYgcmVtYWluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGFzc2VydCBub3QgdmFsdWUsIHZhbHVlCisgICAgICAgICAgICAgICAgdmFsdWUgPSByZW1haW5kZXIKKyAgICAgICAgICAgIHJldHVybiBwYXJhbSwgdmFsdWUKKyAgICAgICAgcGFyYW0uZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiQXBwYXJlbnQgaW5pdGlhbC1leHRlbmRlZC12YWx1ZSBidXQgYXR0cmlidXRlICIKKyAgICAgICAgICAgICJ3YXMgbm90IG1hcmtlZCBhcyBleHRlbmRlZCBvciB3YXMgbm90IGluaXRpYWwgc2VjdGlvbiIpKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgIyBBc3N1bWUgdGhlIGNoYXJzZXQvbGFuZyBpcyBtaXNzaW5nIGFuZCB0aGUgdG9rZW4gaXMgdGhlIHZhbHVlLgorICAgICAgICBwYXJhbS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJNaXNzaW5nIHJlcXVpcmVkIGNoYXJzZXQvbGFuZyBkZWxpbWl0ZXJzIikpCisgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICAgICAgaWYgcmVtYWluZGVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gcGFyYW0sIHZhbHVlCisgICAgZWxzZToKKyAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgdCBpbiB0b2tlbjoKKyAgICAgICAgICAgICAgICBpZiB0LnRva2VuX3R5cGUgPT0gJ2V4dGVuZGVkLWF0dHJ0ZXh0JzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHQudG9rZW5fdHlwZSA9PSAnYXR0cnRleHQnCisgICAgICAgICAgICBhcHBlbmR0by5hcHBlbmQodCkKKyAgICAgICAgICAgIHBhcmFtLmNoYXJzZXQgPSB0LnZhbHVlCisgICAgICAgIGlmIHZhbHVlWzBdICE9ICInIjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKCJFeHBlY3RlZCBSRkMyMjMxIGNoYXIvbGFuZyBlbmNvZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsaW1pdGVyLCBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgYXBwZW5kdG8uYXBwZW5kKFZhbHVlVGVybWluYWwoIiciLCAnUkZDMjIzMSBkZWxpbWl0ZXInKSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICAgICAgaWYgdmFsdWUgYW5kIHZhbHVlWzBdICE9ICInIjoKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9hdHRydGV4dCh2YWx1ZSkKKyAgICAgICAgICAgIGFwcGVuZHRvLmFwcGVuZCh0b2tlbikKKyAgICAgICAgICAgIHBhcmFtLmxhbmcgPSB0b2tlbi52YWx1ZQorICAgICAgICAgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICInIjoKKyAgICAgICAgICAgICAgICByYWlzZSBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcigiRXhwZWN0ZWQgUkZDMjIzMSBjaGFyL2xhbmcgZW5jb2RpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxpbWl0ZXIsIGJ1dCBmb3VuZCB7fSIuZm9ybWF0KHZhbHVlKSkKKyAgICAgICAgYXBwZW5kdG8uYXBwZW5kKFZhbHVlVGVybWluYWwoIiciLCAnUkZDMjIzMSBkZWxpbWl0ZXInKSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZVsxOl0KKyAgICBpZiByZW1haW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICMgVHJlYXQgdGhlIHJlc3Qgb2YgdmFsdWUgYXMgYmFyZSBxdW90ZWQgc3RyaW5nIGNvbnRlbnQuCisgICAgICAgIHYgPSBWYWx1ZSgpCisgICAgICAgIHdoaWxlIHZhbHVlOgorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gV1NQOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9md3ModmFsdWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9xY29udGVudCh2YWx1ZSkKKyAgICAgICAgICAgIHYuYXBwZW5kKHRva2VuKQorICAgICAgICB0b2tlbiA9IHYKKyAgICBlbHNlOgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdmFsdWUodmFsdWUpCisgICAgYXBwZW5kdG8uYXBwZW5kKHRva2VuKQorICAgIGlmIHJlbWFpbmRlciBpcyBub3QgTm9uZToKKyAgICAgICAgYXNzZXJ0IG5vdCB2YWx1ZSwgdmFsdWUKKyAgICAgICAgdmFsdWUgPSByZW1haW5kZXIKKyAgICByZXR1cm4gcGFyYW0sIHZhbHVlCisKK2RlZiBwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWUpOgorICAgICIiIiBwYXJhbWV0ZXIgKiggIjsiIHBhcmFtZXRlciApCisKKyAgICBUaGF0IEJORiBpcyBtZWFudCB0byBpbmRpY2F0ZSB0aGlzIHJvdXRpbmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyCisgICAgZmluZGluZyBhbmQgaGFuZGxpbmcgdGhlIGxlYWRpbmcgJzsnLiAgVGhlcmUgaXMgbm8gY29ycmVzcG9uZGluZyBydWxlIGluCisgICAgdGhlIGZvcm1hbCBSRkMgZ3JhbW1hciwgYnV0IGl0IGlzIG1vcmUgY29udmVuaWVudCBmb3IgdXMgZm9yIHRoZSBzZXQgb2YKKyAgICBwYXJhbWV0ZXJzIHRvIGJlIHRyZWF0ZWQgYXMgaXRzIG93biBUb2tlbkxpc3QuCisKKyAgICBUaGlzIGlzICdwYXJzZScgcm91dGluZSBiZWNhdXNlIGl0IGNvbnN1bWVzIHRoZSByZW1pbmFpbmcgdmFsdWUsIGJ1dCBpdAorICAgIHdvdWxkIG5ldmVyIGJlIGNhbGxlZCB0byBwYXJzZSBhIGZ1bGwgaGVhZGVyLiAgSW5zdGVhZCBpdCBpcyBjYWxsZWQgdG8KKyAgICBwYXJzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBub24tcGFyYW1ldGVyIHZhbHVlIG9mIGEgc3BlY2lmaWMgTUlNRSBoZWFkZXIuCisKKyAgICAiIiIKKyAgICBtaW1lX3BhcmFtZXRlcnMgPSBNaW1lUGFyYW1ldGVycygpCisgICAgd2hpbGUgdmFsdWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF9wYXJhbWV0ZXIodmFsdWUpCisgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKHRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbGVhZGVyID0gTm9uZQorICAgICAgICAgICAgaWYgdmFsdWVbMF0gaW4gQ0ZXU19MRUFERVI6CisgICAgICAgICAgICAgICAgbGVhZGVyLCB2YWx1ZSA9IGdldF9jZndzKHZhbHVlKQorICAgICAgICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgICAgIHJldHVybiBtaW1lX3BhcmFtZXRlcnMKKyAgICAgICAgICAgIGlmIHZhbHVlWzBdID09ICc7JzoKKyAgICAgICAgICAgICAgICBpZiBsZWFkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQobGVhZGVyKQorICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlciBlbnRyeSB3aXRoIG5vIGNvbnRlbnQiKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X2ludmFsaWRfcGFyYW1ldGVyKHZhbHVlKQorICAgICAgICAgICAgICAgIGlmIGxlYWRlcjoKKyAgICAgICAgICAgICAgICAgICAgdG9rZW5bOjBdID0gW2xlYWRlcl0KKyAgICAgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuYXBwZW5kKHRva2VuKQorICAgICAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICAgICAgICAgImludmFsaWQgcGFyYW1ldGVyIHshcn0iLmZvcm1hdCh0b2tlbikpKQorICAgICAgICBpZiB2YWx1ZSBhbmQgdmFsdWVbMF0gIT0gJzsnOgorICAgICAgICAgICAgIyBKdW5rIGFmdGVyIHRoZSBvdGhlcndpc2UgdmFsaWQgcGFyYW1ldGVyLiAgTWFyayBpdCBhcworICAgICAgICAgICAgIyBpbnZhbGlkLCBidXQgaXQgd2lsbCBoYXZlIGEgdmFsdWUuCisgICAgICAgICAgICBwYXJhbSA9IG1pbWVfcGFyYW1ldGVyc1stMV0KKyAgICAgICAgICAgIHBhcmFtLnRva2VuX3R5cGUgPSAnaW52YWxpZC1wYXJhbWV0ZXInCisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfaW52YWxpZF9wYXJhbWV0ZXIodmFsdWUpCisgICAgICAgICAgICBwYXJhbS5leHRlbmQodG9rZW4pCisgICAgICAgICAgICBtaW1lX3BhcmFtZXRlcnMuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAgICAgInBhcmFtZXRlciB3aXRoIGludmFsaWQgdHJhaWxpbmcgdGV4dCB7IXJ9Ii5mb3JtYXQodG9rZW4pKSkKKyAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICAjIE11c3QgYmUgYSAnOycgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIG1pbWVfcGFyYW1ldGVycy5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHJldHVybiBtaW1lX3BhcmFtZXRlcnMKKworZGVmIF9maW5kX21pbWVfcGFyYW1ldGVycyh0b2tlbmxpc3QsIHZhbHVlKToKKyAgICAiIiJEbyBvdXIgYmVzdCB0byBmaW5kIHRoZSBwYXJhbWV0ZXJzIGluIGFuIGludmFsaWQgTUlNRSBoZWFkZXIKKworICAgICIiIgorICAgIHdoaWxlIHZhbHVlIGFuZCB2YWx1ZVswXSAhPSAnOyc6CisgICAgICAgIGlmIHZhbHVlWzBdIGluIFBIUkFTRV9FTkRTOgorICAgICAgICAgICAgdG9rZW5saXN0LmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLCAnbWlzcGxhY2VkLXNwZWNpYWwnKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorICAgICAgICAgICAgdG9rZW5saXN0LmFwcGVuZCh0b2tlbikKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJldHVybgorICAgIHRva2VubGlzdC5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgdG9rZW5saXN0LmFwcGVuZChwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWVbMTpdKSkKKworZGVmIHBhcnNlX2NvbnRlbnRfdHlwZV9oZWFkZXIodmFsdWUpOgorICAgICIiIiBtYWludHlwZSAiLyIgc3VidHlwZSAqKCAiOyIgcGFyYW1ldGVyICkKKworICAgIFRoZSBtYWludHlwZSBhbmQgc3Vic3R5cGUgYXJlIHRva2Vucy4gIFRoZW9yZXRpY2FsbHkgdGhleSBjb3VsZAorICAgIGJlIGNoZWNrZWQgYWdhaW5zdCB0aGUgb2ZmaWNpYWwgSUFOQSBsaXN0ICsgeC10b2tlbiwgYnV0IHdlCisgICAgZG9uJ3QgZG8gdGhhdC4KKyAgICAiIiIKKyAgICBjdHlwZSA9IENvbnRlbnRUeXBlKCkKKyAgICByZWNvdmVyID0gRmFsc2UKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKKyAgICAgICAgICAgICJNaXNzaW5nIGNvbnRlbnQgdHlwZSBzcGVjaWZpY2F0aW9uIikpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCBtYWludHlwZSBidXQgZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgIF9maW5kX21pbWVfcGFyYW1ldGVycyhjdHlwZSwgdmFsdWUpCisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGN0eXBlLmFwcGVuZCh0b2tlbikKKyAgICAjIFhYWDogSWYgd2UgcmVhbGx5IHdhbnQgdG8gZm9sbG93IHRoZSBmb3JtYWwgZ3JhbW1lciB3ZSBzaG91bGQgbWFrZQorICAgICMgbWFudHlwZSBhbmQgc3VidHlwZSBzcGVjaWFsaXplZCBUb2tlbkxpc3RzIGhlcmUuICBQcm9iYWJseSBub3Qgd29ydGggaXQuCisgICAgaWYgbm90IHZhbHVlIG9yIHZhbHVlWzBdICE9ICcvJzoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiSW52YWxpZCBjb250ZW50IHR5cGUiKSkKKyAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoY3R5cGUsIHZhbHVlKQorICAgICAgICByZXR1cm4gY3R5cGUKKyAgICBjdHlwZS5tYWludHlwZSA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQorICAgIGN0eXBlLmFwcGVuZChWYWx1ZVRlcm1pbmFsKCcvJywgJ2NvbnRlbnQtdHlwZS1zZXBhcmF0b3InKSkKKyAgICB2YWx1ZSA9IHZhbHVlWzE6XQorICAgIHRyeToKKyAgICAgICAgdG9rZW4sIHZhbHVlID0gZ2V0X3Rva2VuKHZhbHVlKQorICAgIGV4Y2VwdCBlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcjoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiRXhwZWN0ZWQgY29udGVudCBzdWJ0eXBlIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUuYXBwZW5kKHRva2VuKQorICAgIGN0eXBlLnN1YnR5cGUgPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJldHVybiBjdHlwZQorICAgIGlmIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgY3R5cGUuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiT25seSBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBhZnRlciBjb250ZW50IHR5cGUsIGJ1dCAiCisgICAgICAgICAgICAiZm91bmQgeyFyfSIuZm9ybWF0KHZhbHVlKSkpCisgICAgICAgICMgVGhlIFJGQyByZXF1aXJlcyB0aGF0IGEgc3ludGFjdGljYWxseSBpbnZhbGlkIGNvbnRlbnQtdHlwZSBiZSB0cmVhdGVkCisgICAgICAgICMgYXMgdGV4dC9wbGFpbi4gIFBlcmhhcHMgd2Ugc2hvdWxkIHBvc3RlbCB0aGlzLCBidXQgd2Ugc2hvdWxkIHByb2JhYmx5CisgICAgICAgICMgb25seSBkbyB0aGF0IGlmIHdlIHdlcmUgY2hlY2tpbmcgdGhlIHN1YnR5cGUgdmFsdWUgYWdhaW5zdCBJQU5BLgorICAgICAgICBkZWwgY3R5cGUubWFpbnR5cGUsIGN0eXBlLnN1YnR5cGUKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGN0eXBlLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGN0eXBlCisgICAgY3R5cGUuYXBwZW5kKFZhbHVlVGVybWluYWwoJzsnLCAncGFyYW1ldGVyLXNlcGFyYXRvcicpKQorICAgIGN0eXBlLmFwcGVuZChwYXJzZV9taW1lX3BhcmFtZXRlcnModmFsdWVbMTpdKSkKKyAgICByZXR1cm4gY3R5cGUKKworZGVmIHBhcnNlX2NvbnRlbnRfZGlzcG9zaXRpb25faGVhZGVyKHZhbHVlKToKKyAgICAiIiIgZGlzcG9zaXRpb24tdHlwZSAqKCAiOyIgcGFyYW1ldGVyICkKKworICAgICIiIgorICAgIGRpc3BfaGVhZGVyID0gQ29udGVudERpc3Bvc2l0aW9uKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIGRpc3BfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKKyAgICAgICAgICAgICJNaXNzaW5nIGNvbnRlbnQgZGlzcG9zaXRpb24iKSkKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgdHJ5OgorICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfdG9rZW4odmFsdWUpCisgICAgZXhjZXB0IGVycm9ycy5IZWFkZXJQYXJzZUVycm9yOgorICAgICAgICBjdHlwZS5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHBlY3RlZCBjb250ZW50IGRpc3Bvc2l0aW9uIGJ1dCBmb3VuZCB7IXJ9Ii5mb3JtYXQodmFsdWUpKSkKKyAgICAgICAgX2ZpbmRfbWltZV9wYXJhbWV0ZXJzKGRpc3BfaGVhZGVyLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIGRpc3BfaGVhZGVyCisgICAgZGlzcF9oZWFkZXIuYXBwZW5kKHRva2VuKQorICAgIGRpc3BfaGVhZGVyLmNvbnRlbnRfZGlzcG9zaXRpb24gPSB0b2tlbi52YWx1ZS5zdHJpcCgpLmxvd2VyKCkKKyAgICBpZiBub3QgdmFsdWU6CisgICAgICAgIHJldHVybiBkaXNwX2hlYWRlcgorICAgIGlmIHZhbHVlWzBdICE9ICc7JzoKKyAgICAgICAgZGlzcF9oZWFkZXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3QoCisgICAgICAgICAgICAiT25seSBwYXJhbWV0ZXJzIGFyZSB2YWxpZCBhZnRlciBjb250ZW50IGRpc3Bvc2l0aW9uLCBidXQgIgorICAgICAgICAgICAgImZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgICAgICBfZmluZF9taW1lX3BhcmFtZXRlcnMoZGlzcF9oZWFkZXIsIHZhbHVlKQorICAgICAgICByZXR1cm4gZGlzcF9oZWFkZXIKKyAgICBkaXNwX2hlYWRlci5hcHBlbmQoVmFsdWVUZXJtaW5hbCgnOycsICdwYXJhbWV0ZXItc2VwYXJhdG9yJykpCisgICAgZGlzcF9oZWFkZXIuYXBwZW5kKHBhcnNlX21pbWVfcGFyYW1ldGVycyh2YWx1ZVsxOl0pKQorICAgIHJldHVybiBkaXNwX2hlYWRlcgorCitkZWYgcGFyc2VfY29udGVudF90cmFuc2Zlcl9lbmNvZGluZ19oZWFkZXIodmFsdWUpOgorICAgICIiIiBtZWNoYW5pc20KKworICAgICIiIgorICAgICMgV2Ugc2hvdWxkIHByb2JhYmx5IHZhbGlkYXRlIHRoZSB2YWx1ZXMsIHNpbmNlIHRoZSBsaXN0IGlzIGZpeGVkLgorICAgIGN0ZV9oZWFkZXIgPSBDb250ZW50VHJhbnNmZXJFbmNvZGluZygpCisgICAgaWYgbm90IHZhbHVlOgorICAgICAgICBjdGVfaGVhZGVyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgKKyAgICAgICAgICAgICJNaXNzaW5nIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmciKSkKKyAgICAgICAgcmV0dXJuIGN0ZV9oZWFkZXIKKyAgICB0cnk6CisgICAgICAgIHRva2VuLCB2YWx1ZSA9IGdldF90b2tlbih2YWx1ZSkKKyAgICBleGNlcHQgZXJyb3JzLkhlYWRlclBhcnNlRXJyb3I6CisgICAgICAgIGN0eXBlLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0KAorICAgICAgICAgICAgIkV4cGVjdGVkIGNvbnRlbnQgdHJuYXNmZXIgZW5jb2RpbmcgYnV0IGZvdW5kIHshcn0iLmZvcm1hdCh2YWx1ZSkpKQorICAgIGVsc2U6CisgICAgICAgIGN0ZV9oZWFkZXIuYXBwZW5kKHRva2VuKQorICAgICAgICBjdGVfaGVhZGVyLmN0ZSA9IHRva2VuLnZhbHVlLnN0cmlwKCkubG93ZXIoKQorICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgcmV0dXJuIGN0ZV9oZWFkZXIKKyAgICB3aGlsZSB2YWx1ZToKKyAgICAgICAgY3RlX2hlYWRlci5kZWZlY3RzLmFwcGVuZChlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCgKKyAgICAgICAgICAgICJFeHRyYSB0ZXh0IGFmdGVyIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmciKSkKKyAgICAgICAgaWYgdmFsdWVbMF0gaW4gUEhSQVNFX0VORFM6CisgICAgICAgICAgICBjdGVfaGVhZGVyLmFwcGVuZChWYWx1ZVRlcm1pbmFsKHZhbHVlWzBdLCAnbWlzcGxhY2VkLXNwZWNpYWwnKSkKKyAgICAgICAgICAgIHZhbHVlID0gdmFsdWVbMTpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b2tlbiwgdmFsdWUgPSBnZXRfcGhyYXNlKHZhbHVlKQorICAgICAgICAgICAgY3RlX2hlYWRlci5hcHBlbmQodG9rZW4pCisgICAgcmV0dXJuIGN0ZV9oZWFkZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fcGFyc2VhZGRyLnB5IGIvTGliL2VtYWlsL19wYXJzZWFkZHIucHkKaW5kZXggNzk1NzNjNi4uY2RmYTM3MiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19wYXJzZWFkZHIucHkKKysrIGIvTGliL2VtYWlsL19wYXJzZWFkZHIucHkKQEAgLTQ3LDYgKzQ3LDI1IEBACiAKICAgICBBY2NvdW50cyBmb3IgbWlsaXRhcnkgdGltZXpvbmVzLgogICAgICIiIgorICAgIHJlcyA9IF9wYXJzZWRhdGVfdHooZGF0YSkKKyAgICBpZiBub3QgcmVzOgorICAgICAgICByZXR1cm4KKyAgICBpZiByZXNbOV0gaXMgTm9uZToKKyAgICAgICAgcmVzWzldID0gMAorICAgIHJldHVybiB0dXBsZShyZXMpCisKK2RlZiBfcGFyc2VkYXRlX3R6KGRhdGEpOgorICAgICIiIkNvbnZlcnQgZGF0ZSB0byBleHRlbmRlZCB0aW1lIHR1cGxlLgorCisgICAgVGhlIGxhc3QgKGFkZGl0aW9uYWwpIGVsZW1lbnQgaXMgdGhlIHRpbWUgem9uZSBvZmZzZXQgaW4gc2Vjb25kcywgZXhjZXB0IGlmCisgICAgdGhlIHRpbWV6b25lIHdhcyBzcGVjaWZpZWQgYXMgLTAwMDAuICBJbiB0aGF0IGNhc2UgdGhlIGxhc3QgZWxlbWVudCBpcworICAgIE5vbmUuICBUaGlzIGluZGljYXRlcyBhIFVUQyB0aW1lc3RhbXAgdGhhdCBleHBsaWNpdGx5IGRlY2xhaW1zIGtub3dsZWRnZSBvZgorICAgIHRoZSBzb3VyY2UgdGltZXpvbmUsIGFzIG9wcG9zZWQgdG8gYSArMDAwMCB0aW1lc3RhbXAgdGhhdCBpbmRpY2F0ZXMgdGhlCisgICAgc291cmNlIHRpbWV6b25lIHJlYWxseSB3YXMgVVRDLgorCisgICAgIiIiCisgICAgaWYgbm90IGRhdGE6CisgICAgICAgIHJldHVybgogICAgIGRhdGEgPSBkYXRhLnNwbGl0KCkKICAgICAjIFRoZSBGV1MgYWZ0ZXIgdGhlIGNvbW1hIGFmdGVyIHRoZSBkYXktb2Ytd2VlayBpcyBvcHRpb25hbCwgc28gc2VhcmNoIGFuZAogICAgICMgYWRqdXN0IGZvciB0aGlzLgpAQCAtOTksNiArMTE4LDE0IEBACiAgICAgICAgIHRzcyA9ICcwJwogICAgIGVsaWYgbGVuKHRtKSA9PSAzOgogICAgICAgICBbdGhoLCB0bW0sIHRzc10gPSB0bQorICAgIGVsaWYgbGVuKHRtKSA9PSAxIGFuZCAnLicgaW4gdG1bMF06CisgICAgICAgICMgU29tZSBub24tY29tcGxpYW50IE1VQXMgdXNlICcuJyB0byBzZXBhcmF0ZSB0aW1lIGVsZW1lbnRzLgorICAgICAgICB0bSA9IHRtWzBdLnNwbGl0KCcuJykKKyAgICAgICAgaWYgbGVuKHRtKSA9PSAyOgorICAgICAgICAgICAgW3RoaCwgdG1tXSA9IHRtCisgICAgICAgICAgICB0c3MgPSAwCisgICAgICAgIGVsaWYgbGVuKHRtKSA9PSAzOgorICAgICAgICAgICAgW3RoaCwgdG1tLCB0c3NdID0gdG0KICAgICBlbHNlOgogICAgICAgICByZXR1cm4gTm9uZQogICAgIHRyeToKQEAgLTEzMCw2ICsxNTcsOCBAQAogICAgICAgICAgICAgdHpvZmZzZXQgPSBpbnQodHopCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgcGFzcworICAgICAgICBpZiB0em9mZnNldD09MCBhbmQgdHouc3RhcnRzd2l0aCgnLScpOgorICAgICAgICAgICAgdHpvZmZzZXQgPSBOb25lCiAgICAgIyBDb252ZXJ0IGEgdGltZXpvbmUgb2Zmc2V0IGludG8gc2Vjb25kcyA7IC0wNTAwIC0+IC0xODAwMAogICAgIGlmIHR6b2Zmc2V0OgogICAgICAgICBpZiB0em9mZnNldCA8IDA6CkBAIC0xMzksNyArMTY4LDcgQEAKICAgICAgICAgICAgIHR6c2lnbiA9IDEKICAgICAgICAgdHpvZmZzZXQgPSB0enNpZ24gKiAoICh0em9mZnNldC8vMTAwKSozNjAwICsgKHR6b2Zmc2V0ICUgMTAwKSo2MCkKICAgICAjIERheWxpZ2h0IFNhdmluZyBUaW1lIGZsYWcgaXMgc2V0IHRvIC0xLCBzaW5jZSBEU1QgaXMgdW5rbm93bi4KLSAgICByZXR1cm4geXksIG1tLCBkZCwgdGhoLCB0bW0sIHRzcywgMCwgMSwgLTEsIHR6b2Zmc2V0CisgICAgcmV0dXJuIFt5eSwgbW0sIGRkLCB0aGgsIHRtbSwgdHNzLCAwLCAxLCAtMSwgdHpvZmZzZXRdCiAKIAogZGVmIHBhcnNlZGF0ZShkYXRhKToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weSBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTA2MTE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CkBAIC0wLDAgKzEsMzU4IEBACisiIiJQb2xpY3kgZnJhbWV3b3JrIGZvciB0aGUgZW1haWwgcGFja2FnZS4KKworQWxsb3dzIGZpbmUgZ3JhaW5lZCBmZWF0dXJlIGNvbnRyb2wgb2YgaG93IHRoZSBwYWNrYWdlIHBhcnNlcyBhbmQgZW1pdHMgZGF0YS4KKyIiIgorCitpbXBvcnQgYWJjCitmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXIKK2Zyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworCitfX2FsbF9fID0gWworICAgICdQb2xpY3knLAorICAgICdDb21wYXQzMicsCisgICAgJ2NvbXBhdDMyJywKKyAgICBdCisKKworY2xhc3MgX1BvbGljeUJhc2U6CisKKyAgICAiIiJQb2xpY3kgT2JqZWN0IGJhc2ljIGZyYW1ld29yay4KKworICAgIFRoaXMgY2xhc3MgaXMgdXNlbGVzcyB1bmxlc3Mgc3ViY2xhc3NlZC4gIEEgc3ViY2xhc3Mgc2hvdWxkIGRlZmluZQorICAgIGNsYXNzIGF0dHJpYnV0ZXMgd2l0aCBkZWZhdWx0cyBmb3IgYW55IHZhbHVlcyB0aGF0IGFyZSB0byBiZQorICAgIG1hbmFnZWQgYnkgdGhlIFBvbGljeSBvYmplY3QuICBUaGUgY29uc3RydWN0b3Igd2lsbCB0aGVuIGFsbG93CisgICAgbm9uLWRlZmF1bHQgdmFsdWVzIHRvIGJlIHNldCBmb3IgdGhlc2UgYXR0cmlidXRlcyBhdCBpbnN0YW5jZQorICAgIGNyZWF0aW9uIHRpbWUuICBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBjYWxsYWJsZSwgdGFraW5nIHRoZXNlIHNhbWUKKyAgICBhdHRyaWJ1dGVzIGtleXdvcmQgYXJndW1lbnRzLCBhbmQgcmV0dXJuaW5nIGEgbmV3IGluc3RhbmNlCisgICAgaWRlbnRpY2FsIHRvIHRoZSBjYWxsZWQgaW5zdGFuY2UgZXhjZXB0IGZvciB0aG9zZSB2YWx1ZXMgY2hhbmdlZAorICAgIGJ5IHRoZSBrZXl3b3JkIGFyZ3VtZW50cy4gIEluc3RhbmNlcyBtYXkgYmUgYWRkZWQsIHlpZWxkaW5nIG5ldworICAgIGluc3RhbmNlcyB3aXRoIGFueSBub24tZGVmYXVsdCB2YWx1ZXMgZnJvbSB0aGUgcmlnaHQgaGFuZAorICAgIG9wZXJhbmQgb3ZlcnJpZGluZyB0aG9zZSBpbiB0aGUgbGVmdCBoYW5kIG9wZXJhbmQuICBUaGF0IGlzLAorCisgICAgICAgIEEgKyBCID09IEEoPG5vbi1kZWZhdWx0IHZhbHVlcyBvZiBCPikKKworICAgIFRoZSByZXByIG9mIGFuIGluc3RhbmNlIGNhbiBiZSB1c2VkIHRvIHJlY29uc3RydWN0IHRoZSBvYmplY3QKKyAgICBpZiBhbmQgb25seSBpZiB0aGUgcmVwciBvZiB0aGUgdmFsdWVzIGNhbiBiZSB1c2VkIHRvIHJlY29uc3RydWN0CisgICAgdGhvc2UgdmFsdWVzLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CisgICAgICAgICIiIkNyZWF0ZSBuZXcgUG9saWN5LCBwb3NzaWJseSBvdmVycmlkaW5nIHNvbWUgZGVmYXVsdHMuCisKKyAgICAgICAgU2VlIGNsYXNzIGRvY3N0cmluZyBmb3IgYSBsaXN0IG9mIG92ZXJyaWRhYmxlIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBrdy5pdGVtcygpOgorICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzdXBlcihfUG9saWN5QmFzZSxzZWxmKS5fX3NldGF0dHJfXyhuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAieyFyfSBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGFyZ3MgPSBbICJ7fT17IXJ9Ii5mb3JtYXQobmFtZSwgdmFsdWUpCisgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9fZGljdF9fLml0ZW1zKCkgXQorICAgICAgICByZXR1cm4gInt9KHt9KSIuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnLCAnLmpvaW4oYXJncykpCisKKyAgICBkZWYgY2xvbmUoc2VsZiwgKiprdyk6CisgICAgICAgICIiIlJldHVybiBhIG5ldyBpbnN0YW5jZSB3aXRoIHNwZWNpZmllZCBhdHRyaWJ1dGVzIGNoYW5nZWQuCisKKyAgICAgICAgVGhlIG5ldyBpbnN0YW5jZSBoYXMgdGhlIHNhbWUgYXR0cmlidXRlIHZhbHVlcyBhcyB0aGUgY3VycmVudCBvYmplY3QsCisgICAgICAgIGV4Y2VwdCBmb3IgdGhlIGNoYW5nZXMgcGFzc2VkIGluIGFzIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgICIiIgorICAgICAgICBuZXdwb2xpY3kgPSBzZWxmLl9fY2xhc3NfXy5fX25ld19fKHNlbGYuX19jbGFzc19fKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gc2VsZi5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKG5ld3BvbGljeSwgYXR0ciwgdmFsdWUpCisgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBrdy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgYXR0cik6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAieyFyfSBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHt9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykpCisgICAgICAgICAgICBvYmplY3QuX19zZXRhdHRyX18obmV3cG9saWN5LCBhdHRyLCB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG5ld3BvbGljeQorCisgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCBuYW1lKToKKyAgICAgICAgICAgIG1zZyA9ICJ7IXJ9IG9iamVjdCBhdHRyaWJ1dGUgeyFyfSBpcyByZWFkLW9ubHkiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtc2cgPSAieyFyfSBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSB7IXJ9IgorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihtc2cuZm9ybWF0KHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKKworICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiTm9uLWRlZmF1bHQgdmFsdWVzIGZyb20gcmlnaHQgb3BlcmFuZCBvdmVycmlkZSB0aG9zZSBmcm9tIGxlZnQuCisKKyAgICAgICAgVGhlIG9iamVjdCByZXR1cm5lZCBpcyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgc3ViY2xhc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLmNsb25lKCoqb3RoZXIuX19kaWN0X18pCisKKworZGVmIF9hcHBlbmRfZG9jKGRvYywgYWRkZWRfZG9jKToKKyAgICBkb2MgPSBkb2MucnNwbGl0KCdcbicsIDEpWzBdCisgICAgYWRkZWRfZG9jID0gYWRkZWRfZG9jLnNwbGl0KCdcbicsIDEpWzFdCisgICAgcmV0dXJuIGRvYyArICdcbicgKyBhZGRlZF9kb2MKKworZGVmIF9leHRlbmRfZG9jc3RyaW5ncyhjbHMpOgorICAgIGlmIGNscy5fX2RvY19fIGFuZCBjbHMuX19kb2NfXy5zdGFydHN3aXRoKCcrJyk6CisgICAgICAgIGNscy5fX2RvY19fID0gX2FwcGVuZF9kb2MoY2xzLl9fYmFzZXNfX1swXS5fX2RvY19fLCBjbHMuX19kb2NfXykKKyAgICBmb3IgbmFtZSwgYXR0ciBpbiBjbHMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgaWYgYXR0ci5fX2RvY19fIGFuZCBhdHRyLl9fZG9jX18uc3RhcnRzd2l0aCgnKycpOgorICAgICAgICAgICAgZm9yIGMgaW4gKGMgZm9yIGJhc2UgaW4gY2xzLl9fYmFzZXNfXyBmb3IgYyBpbiBiYXNlLm1ybygpKToKKyAgICAgICAgICAgICAgICBkb2MgPSBnZXRhdHRyKGdldGF0dHIoYywgbmFtZSksICdfX2RvY19fJykKKyAgICAgICAgICAgICAgICBpZiBkb2M6CisgICAgICAgICAgICAgICAgICAgIGF0dHIuX19kb2NfXyA9IF9hcHBlbmRfZG9jKGRvYywgYXR0ci5fX2RvY19fKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgIHJldHVybiBjbHMKKworCitjbGFzcyBQb2xpY3koX1BvbGljeUJhc2UsIG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisKKyAgICByIiIiQ29udHJvbHMgZm9yIGhvdyBtZXNzYWdlcyBhcmUgaW50ZXJwcmV0ZWQgYW5kIGZvcm1hdHRlZC4KKworICAgIE1vc3Qgb2YgdGhlIGNsYXNzZXMgYW5kIG1hbnkgb2YgdGhlIG1ldGhvZHMgaW4gdGhlIGVtYWlsIHBhY2thZ2UgYWNjZXB0CisgICAgUG9saWN5IG9iamVjdHMgYXMgcGFyYW1ldGVycy4gIEEgUG9saWN5IG9iamVjdCBjb250YWlucyBhIHNldCBvZiB2YWx1ZXMgYW5kCisgICAgZnVuY3Rpb25zIHRoYXQgY29udHJvbCBob3cgaW5wdXQgaXMgaW50ZXJwcmV0ZWQgYW5kIGhvdyBvdXRwdXQgaXMgcmVuZGVyZWQuCisgICAgRm9yIGV4YW1wbGUsIHRoZSBwYXJhbWV0ZXIgJ3JhaXNlX29uX2RlZmVjdCcgY29udHJvbHMgd2hldGhlciBvciBub3QgYW4gUkZDCisgICAgdmlvbGF0aW9uIHJlc3VsdHMgaW4gYW4gZXJyb3IgYmVpbmcgcmFpc2VkIG9yIG5vdCwgd2hpbGUgJ21heF9saW5lX2xlbmd0aCcKKyAgICBjb250cm9scyB0aGUgbWF4aW11bSBsZW5ndGggb2Ygb3V0cHV0IGxpbmVzIHdoZW4gYSBNZXNzYWdlIGlzIHNlcmlhbGl6ZWQuCisKKyAgICBBbnkgdmFsaWQgYXR0cmlidXRlIG1heSBiZSBvdmVycmlkZGVuIHdoZW4gYSBQb2xpY3kgaXMgY3JlYXRlZCBieSBwYXNzaW5nCisgICAgaXQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSBjb25zdHJ1Y3Rvci4gIFBvbGljeSBvYmplY3RzIGFyZSBpbW11dGFibGUsCisgICAgYnV0IGEgbmV3IFBvbGljeSBvYmplY3QgY2FuIGJlIGNyZWF0ZWQgd2l0aCBvbmx5IGNlcnRhaW4gdmFsdWVzIGNoYW5nZWQgYnkKKyAgICBjYWxsaW5nIHRoZSBQb2xpY3kgaW5zdGFuY2Ugd2l0aCBrZXl3b3JkIGFyZ3VtZW50cy4gIFBvbGljeSBvYmplY3RzIGNhbgorICAgIGFsc28gYmUgYWRkZWQsIHByb2R1Y2luZyBhIG5ldyBQb2xpY3kgb2JqZWN0IGluIHdoaWNoIHRoZSBub24tZGVmYXVsdAorICAgIGF0dHJpYnV0ZXMgc2V0IGluIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgb3ZlcndyaXRlIHRob3NlIHNwZWNpZmllZCBpbiB0aGUKKyAgICBsZWZ0IG9wZXJhbmQuCisKKyAgICBTZXR0YWJsZSBhdHRyaWJ1dGVzOgorCisgICAgcmFpc2Vfb25fZGVmZWN0ICAgICAtLSBJZiB0cnVlLCB0aGVuIGRlZmVjdHMgc2hvdWxkIGJlIHJhaXNlZCBhcyBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiBGYWxzZS4KKworICAgIGxpbmVzZXAgICAgICAgICAgICAgLS0gc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIHVzZSBhcyBzZXBhcmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICBiZXR3ZWVuIG91dHB1dCBsaW5lcy4gIERlZmF1bHQgJ1xuJy4KKworICAgIGN0ZV90eXBlICAgICAgICAgICAgLS0gVHlwZSBvZiBhbGxvd2VkIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RpbmdzCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDdiaXQgIC0tIEFTQ0lJIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDhiaXQgIC0tIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQgaXMgYWxsb3dlZAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0OiA4Yml0LiAgQWxzbyBjb250cm9scyB0aGUgZGlzcG9zaXRpb24gb2YKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChSRkMgaW52YWxpZCkgYmluYXJ5IGRhdGEgaW4gaGVhZGVyczsgc2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYmluYXJ5X2ZvbGQgbWV0aG9kLgorCisgICAgbWF4X2xpbmVfbGVuZ3RoICAgICAtLSBtYXhpbXVtIGxlbmd0aCBvZiBsaW5lcywgZXhjbHVkaW5nICdsaW5lc2VwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmluZyBzZXJpYWxpemF0aW9uLiAgTm9uZSBvciAwIG1lYW5zIG5vIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwaW5nIGlzIGRvbmUuICBEZWZhdWx0IGlzIDc4LgorCisgICAgIiIiCisKKyAgICByYWlzZV9vbl9kZWZlY3QgPSBGYWxzZQorICAgIGxpbmVzZXAgPSAnXG4nCisgICAgY3RlX3R5cGUgPSAnOGJpdCcKKyAgICBtYXhfbGluZV9sZW5ndGggPSA3OAorCisgICAgZGVmIGhhbmRsZV9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgorICAgICAgICAiIiJCYXNlZCBvbiBwb2xpY3ksIGVpdGhlciByYWlzZSBkZWZlY3Qgb3IgY2FsbCByZWdpc3Rlcl9kZWZlY3QuCisKKyAgICAgICAgICAgIGhhbmRsZV9kZWZlY3Qob2JqLCBkZWZlY3QpCisKKyAgICAgICAgZGVmZWN0IHNob3VsZCBiZSBhIERlZmVjdCBzdWJjbGFzcywgYnV0IGluIGFueSBjYXNlIG11c3QgYmUgYW4KKyAgICAgICAgRXhjZXB0aW9uIHN1YmNsYXNzLiAgb2JqIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIGRlZmVjdCBzaG91bGQgYmUKKyAgICAgICAgcmVnaXN0ZXJlZCBpZiBpdCBpcyBub3QgcmFpc2VkLiAgSWYgdGhlIHJhaXNlX29uX2RlZmVjdCBpcyBUcnVlLCB0aGUKKyAgICAgICAgZGVmZWN0IGlzIHJhaXNlZCBhcyBhbiBlcnJvciwgb3RoZXJ3aXNlIHRoZSBvYmplY3QgYW5kIHRoZSBkZWZlY3QgYXJlCisgICAgICAgIHBhc3NlZCB0byByZWdpc3Rlcl9kZWZlY3QuCisKKyAgICAgICAgVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGJ5IHBhcnNlcnMgdGhhdCBkaXNjb3ZlciBkZWZlY3RzLgorICAgICAgICBUaGUgZW1haWwgcGFja2FnZSBwYXJzZXJzIGFsd2F5cyBjYWxsIGl0IHdpdGggRGVmZWN0IGluc3RhbmNlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9kZWZlY3Q6CisgICAgICAgICAgICByYWlzZSBkZWZlY3QKKyAgICAgICAgc2VsZi5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QpCisKKyAgICBkZWYgcmVnaXN0ZXJfZGVmZWN0KHNlbGYsIG9iaiwgZGVmZWN0KToKKyAgICAgICAgIiIiUmVjb3JkICdkZWZlY3QnIG9uICdvYmonLgorCisgICAgICAgIENhbGxlZCBieSBoYW5kbGVfZGVmZWN0IGlmIHJhaXNlX29uX2RlZmVjdCBpcyBGYWxzZS4gIFRoaXMgbWV0aG9kIGlzCisgICAgICAgIHBhcnQgb2YgdGhlIFBvbGljeSBBUEkgc28gdGhhdCBQb2xpY3kgc3ViY2xhc3NlcyBjYW4gaW1wbGVtZW50IGN1c3RvbQorICAgICAgICBkZWZlY3QgaGFuZGxpbmcuICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUgYXBwZW5kIG1ldGhvZCBvZgorICAgICAgICB0aGUgZGVmZWN0cyBhdHRyaWJ1dGUgb2Ygb2JqLiAgVGhlIG9iamVjdHMgdXNlZCBieSB0aGUgZW1haWwgcGFja2FnZSBieQorICAgICAgICBkZWZhdWx0IHRoYXQgZ2V0IHBhc3NlZCB0byB0aGlzIG1ldGhvZCB3aWxsIGFsd2F5cyBoYXZlIGEgZGVmZWN0cworICAgICAgICBhdHRyaWJ1dGUgd2l0aCBhbiBhcHBlbmQgbWV0aG9kLgorCisgICAgICAgICIiIgorICAgICAgICBvYmouZGVmZWN0cy5hcHBlbmQoZGVmZWN0KQorCisgICAgZGVmIGhlYWRlcl9tYXhfY291bnQoc2VsZiwgbmFtZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbWF4aW11bSBhbGxvd2VkIG51bWJlciBvZiBoZWFkZXJzIG5hbWVkICduYW1lJy4KKworICAgICAgICBDYWxsZWQgd2hlbiBhIGhlYWRlciBpcyBhZGRlZCB0byBhIE1lc3NhZ2Ugb2JqZWN0LiAgSWYgdGhlIHJldHVybmVkCisgICAgICAgIHZhbHVlIGlzIG5vdCAwIG9yIE5vbmUsIGFuZCB0aGVyZSBhcmUgYWxyZWFkeSBhIG51bWJlciBvZiBoZWFkZXJzIHdpdGgKKyAgICAgICAgdGhlIG5hbWUgJ25hbWUnIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCwgYSBWYWx1ZUVycm9yIGlzIHJhaXNlZC4KKworICAgICAgICBCZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIE1lc3NhZ2UncyBfX3NldGl0ZW1fXyBpcyB0byBhcHBlbmQgdGhlCisgICAgICAgIHZhbHVlIHRvIHRoZSBsaXN0IG9mIGhlYWRlcnMsIGl0IGlzIGVhc3kgdG8gY3JlYXRlIGR1cGxpY2F0ZSBoZWFkZXJzCisgICAgICAgIHdpdGhvdXQgcmVhbGl6aW5nIGl0LiAgVGhpcyBtZXRob2QgYWxsb3dzIGNlcnRhaW4gaGVhZGVycyB0byBiZSBsaW1pdGVkCisgICAgICAgIGluIHRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIG9mIHRoYXQgaGVhZGVyIHRoYXQgbWF5IGJlIGFkZGVkIHRvIGEKKyAgICAgICAgTWVzc2FnZSBwcm9ncmFtbWF0aWNhbGx5LiAgKFRoZSBsaW1pdCBpcyBub3Qgb2JzZXJ2ZWQgYnkgdGhlIHBhcnNlciwKKyAgICAgICAgd2hpY2ggd2lsbCBmYWl0aGZ1bGx5IHByb2R1Y2UgYXMgbWFueSBoZWFkZXJzIGFzIGV4aXN0IGluIHRoZSBtZXNzYWdlCisgICAgICAgIGJlaW5nIHBhcnNlZC4pCisKKyAgICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBOb25lIGZvciBhbGwgaGVhZGVyIG5hbWVzLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaGVhZGVyX3NvdXJjZV9wYXJzZShzZWxmLCBzb3VyY2VsaW5lcyk6CisgICAgICAgICIiIkdpdmVuIGEgbGlzdCBvZiBsaW5lc2VwIHRlcm1pbmF0ZWQgc3RyaW5ncyBjb25zdGl0dXRpbmcgdGhlIGxpbmVzIG9mCisgICAgICAgIGEgc2luZ2xlIGhlYWRlciwgcmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIHR1cGxlIHRoYXQgc2hvdWxkIGJlIHN0b3JlZAorICAgICAgICBpbiB0aGUgbW9kZWwuICBUaGUgaW5wdXQgbGluZXMgc2hvdWxkIHJldGFpbiB0aGVpciB0ZXJtaW5hdGluZyBsaW5lc2VwCisgICAgICAgIGNoYXJhY3RlcnMuICBUaGUgbGluZXMgcGFzc2VkIGluIGJ5IHRoZSBlbWFpbCBwYWNrYWdlIG1heSBjb250YWluCisgICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYmluYXJ5IGRhdGEuCisgICAgICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbgorICAgICAgICBwcm9ncmFtLCByZXR1cm4gdGhlIChuYW1lLCB2YWx1ZSkgdGhhdCBzaG91bGQgYmUgc3RvcmVkIGluIHRoZSBtb2RlbC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgaGVhZGVyX2ZldGNoX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiR2l2ZW4gdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgdmFsdWUgZnJvbSB0aGUgbW9kZWwsIHJldHVybiB0aGUgdmFsdWUKKyAgICAgICAgdG8gYmUgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uIHByb2dyYW0gdGhhdCBpcyByZXF1ZXN0aW5nIHRoYXQKKyAgICAgICAgaGVhZGVyLiAgVGhlIHZhbHVlIHBhc3NlZCBpbiBieSB0aGUgZW1haWwgcGFja2FnZSBtYXkgY29udGFpbgorICAgICAgICBzdXJyb2dhdGVlc2NhcGVkIGJpbmFyeSBkYXRhIGlmIHRoZSBsaW5lcyB3ZXJlIHBhcnNlZCBieSBhIEJ5dGVzUGFyc2VyLgorICAgICAgICBUaGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIG5vdCBjb250YWluIGFueSBzdXJyb2dhdGVlc2NhcGVkIGRhdGEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gYSBzdHJpbmcKKyAgICAgICAgY29udGFpbmluZyBsaW5lc2VwIGNoYXJhY3RlcnMgdGhhdCBpbXBsZW1lbnQgdGhlIGZvbGRpbmcgb2YgdGhlIGhlYWRlcgorICAgICAgICBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSBjb250cm9scy4gIFRoZSB2YWx1ZSBwYXNzZWQgaW4gYnkgdGhlIGVtYWlsCisgICAgICAgIHBhY2thZ2UgbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YSBpZiB0aGUgbGluZXMgd2VyZQorICAgICAgICBwYXJzZWQgYnkgYSBCeXRlc1BhcnNlci4gIFRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgbm90IGNvbnRhaW4gYW55CisgICAgICAgIHN1cnJvZ2F0ZWVzY2FwZWQgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIkdpdmVuIHRoZSBoZWFkZXIgbmFtZSBhbmQgdGhlIHZhbHVlIGZyb20gdGhlIG1vZGVsLCByZXR1cm4gYmluYXJ5CisgICAgICAgIGRhdGEgY29udGFpbmluZyBsaW5lc2VwIGNoYXJhY3RlcnMgdGhhdCBpbXBsZW1lbnQgdGhlIGZvbGRpbmcgb2YgdGhlCisgICAgICAgIGhlYWRlciBhY2NvcmRpbmcgdG8gdGhlIHBvbGljeSBjb250cm9scy4gIFRoZSB2YWx1ZSBwYXNzZWQgaW4gYnkgdGhlCisgICAgICAgIGVtYWlsIHBhY2thZ2UgbWF5IGNvbnRhaW4gc3Vycm9nYXRlZXNjYXBlZCBiaW5hcnkgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKK0BfZXh0ZW5kX2RvY3N0cmluZ3MKK2NsYXNzIENvbXBhdDMyKFBvbGljeSk6CisKKyAgICAiIiIrCisgICAgVGhpcyBwYXJ0aWN1bGFyIHBvbGljeSBpcyB0aGUgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBQb2xpY3kuICBJdAorICAgIHJlcGxpY2F0ZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBlbWFpbCBwYWNrYWdlIHZlcnNpb24gNS4xLgorICAgICIiIgorCisgICAgZGVmIF9zYW5pdGl6ZV9oZWFkZXIoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAjIElmIHRoZSBoZWFkZXIgdmFsdWUgY29udGFpbnMgc3Vycm9nYXRlcywgcmV0dXJuIGEgSGVhZGVyIHVzaW5nCisgICAgICAgICMgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0IHRvIGVuY29kZSB0aGUgYnl0ZXMgYXMgZW5jb2RlZCB3b3Jkcy4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBhbHJlYWR5IGEgaGVhZGVyIG9iamVjdAorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisgICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6CisgICAgICAgICAgICByZXR1cm4gaGVhZGVyLkhlYWRlcih2YWx1ZSwgY2hhcnNldD1fY2hhcnNldC5VTktOT1dOOEJJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPW5hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGRlZiBoZWFkZXJfc291cmNlX3BhcnNlKHNlbGYsIHNvdXJjZWxpbmVzKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyBwYXJzZWQgYXMgZXZlcnl0aGluZyB1cCB0byB0aGUgJzonIGFuZCByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICBUaGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBieSBzdHJpcHBpbmcgbGVhZGluZyB3aGl0ZXNwYWNlIG9mZiB0aGUKKyAgICAgICAgcmVtYWluZGVyIG9mIHRoZSBmaXJzdCBsaW5lLCBqb2luaW5nIGFsbCBzdWJzZXF1ZW50IGxpbmVzIHRvZ2V0aGVyLCBhbmQKKyAgICAgICAgc3RyaXBwaW5nIGFueSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gb3IgbGluZWZlZWQgY2hhcmFjdGVycy4KKworICAgICAgICAiIiIKKyAgICAgICAgbmFtZSwgdmFsdWUgPSBzb3VyY2VsaW5lc1swXS5zcGxpdCgnOicsIDEpCisgICAgICAgIHZhbHVlID0gdmFsdWUubHN0cmlwKCcgXHQnKSArICcnLmpvaW4oc291cmNlbGluZXNbMTpdKQorICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlLnJzdHJpcCgnXHJcbicpKQorCisgICAgZGVmIGhlYWRlcl9zdG9yZV9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIG5hbWUgYW5kIHZhbHVlIGFyZSByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChuYW1lLCB2YWx1ZSkKKworICAgIGRlZiBoZWFkZXJfZmV0Y2hfcGFyc2Uoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBiaW5hcnkgZGF0YSwgaXQgaXMgY29udmVydGVkIGludG8gYSBIZWFkZXIgb2JqZWN0CisgICAgICAgIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4gIE90aGVyd2lzZSBpdCBpcyByZXR1cm5lZCB1bm1vZGlmaWVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Nhbml0aXplX2hlYWRlcihuYW1lLCB2YWx1ZSkKKworICAgIGRlZiBmb2xkKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBIZWFkZXJzIGFyZSBmb2xkZWQgdXNpbmcgdGhlIEhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgd2hpY2ggcHJlc2VydmVzCisgICAgICAgIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGluIHRoZSB2YWx1ZSwgYW5kIHdyYXBzIGVhY2ggcmVzdWx0aW5nIGxpbmUgdG8gdGhlCisgICAgICAgIG1heF9saW5lX2xlbmd0aC4gIE5vbi1BU0NJSSBiaW5hcnkgZGF0YSBhcmUgQ1RFIGVuY29kZWQgdXNpbmcgdGhlCisgICAgICAgIHVua25vd24tOGJpdCBjaGFyc2V0LgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgc2FuaXRpemU9VHJ1ZSkKKworICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSGVhZGVycyBhcmUgZm9sZGVkIHVzaW5nIHRoZSBIZWFkZXIgZm9sZGluZyBhbGdvcml0aG0sIHdoaWNoIHByZXNlcnZlcworICAgICAgICBleGlzdGluZyBsaW5lIGJyZWFrcyBpbiB0aGUgdmFsdWUsIGFuZCB3cmFwcyBlYWNoIHJlc3VsdGluZyBsaW5lIHRvIHRoZQorICAgICAgICBtYXhfbGluZV9sZW5ndGguICBJZiBjdGVfdHlwZSBpcyA3Yml0LCBub24tYXNjaWkgYmluYXJ5IGRhdGEgaXMgQ1RFCisgICAgICAgIGVuY29kZWQgdXNpbmcgdGhlIHVua25vd24tOGJpdCBjaGFyc2V0LiAgT3RoZXJ3aXNlIHRoZSBvcmlnaW5hbCBzb3VyY2UKKyAgICAgICAgaGVhZGVyIGlzIHVzZWQsIHdpdGggaXRzIGV4aXN0aW5nIGxpbmUgYnJlYWtzIGFuZC9vciBiaW5hcnkgZGF0YS4KKworICAgICAgICAiIiIKKyAgICAgICAgZm9sZGVkID0gc2VsZi5fZm9sZChuYW1lLCB2YWx1ZSwgc2FuaXRpemU9c2VsZi5jdGVfdHlwZT09JzdiaXQnKQorICAgICAgICByZXR1cm4gZm9sZGVkLmVuY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKworICAgIGRlZiBfZm9sZChzZWxmLCBuYW1lLCB2YWx1ZSwgc2FuaXRpemUpOgorICAgICAgICBwYXJ0cyA9IFtdCisgICAgICAgIHBhcnRzLmFwcGVuZCgnJXM6ICcgJSBuYW1lKQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgICAgICBpZiBzYW5pdGl6ZToKKyAgICAgICAgICAgICAgICAgICAgaCA9IGhlYWRlci5IZWFkZXIodmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXQ9X2NoYXJzZXQuVU5LTk9XTjhCSVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPW5hbWUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBoYXZlIHJhdyA4Yml0IGRhdGEgaW4gYSBieXRlIHN0cmluZywgd2UgaGF2ZSBubyBpZGVhCisgICAgICAgICAgICAgICAgICAgICMgd2hhdCB0aGUgZW5jb2RpbmcgaXMuICBUaGVyZSBpcyBubyBzYWZlIHdheSB0byBzcGxpdCB0aGlzCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgSWYgaXQncyBhc2NpaS1zdWJzZXQsIHRoZW4gd2UgY291bGQgZG8gYSBub3JtYWwKKyAgICAgICAgICAgICAgICAgICAgIyBhc2NpaSBzcGxpdCwgYnV0IGlmIGl0J3MgbXVsdGlieXRlIHRoZW4gd2UgY291bGQgYnJlYWsgdGhlCisgICAgICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgVGhlcmUncyBubyB3YXkgdG8ga25vdyBzbyB0aGUgbGVhc3QgaGFybSBzZWVtcyB0bworICAgICAgICAgICAgICAgICAgICAjIGJlIHRvIG5vdCBzcGxpdCB0aGUgc3RyaW5nIGFuZCByaXNrIGl0IGJlaW5nIHRvbyBsb25nLgorICAgICAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGggPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGggPSBoZWFkZXIuSGVhZGVyKHZhbHVlLCBoZWFkZXJfbmFtZT1uYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBc3N1bWUgaXQgaXMgYSBIZWFkZXItbGlrZSBvYmplY3QuCisgICAgICAgICAgICBoID0gdmFsdWUKKyAgICAgICAgaWYgaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZChoLmVuY29kZShsaW5lc2VwPXNlbGYubGluZXNlcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhsaW5lbGVuPXNlbGYubWF4X2xpbmVfbGVuZ3RoKSkKKyAgICAgICAgcGFydHMuYXBwZW5kKHNlbGYubGluZXNlcCkKKyAgICAgICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCisKKworY29tcGF0MzIgPSBDb21wYXQzMigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvYXJjaGl0ZWN0dXJlLnJzdCBiL0xpYi9lbWFpbC9hcmNoaXRlY3R1cmUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwZDI0ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW1haWwvYXJjaGl0ZWN0dXJlLnJzdApAQCAtMCwwICsxLDIxNiBAQAorOm1vZDpgZW1haWxgIFBhY2thZ2UgQXJjaGl0ZWN0dXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworT3ZlcnZpZXcKKy0tLS0tLS0tCisKK1RoZSBlbWFpbCBwYWNrYWdlIGNvbnNpc3RzIG9mIHRocmVlIG1ham9yIGNvbXBvbmVudHM6CisKKyAgICBNb2RlbAorICAgICAgICBBbiBvYmplY3Qgc3RydWN0dXJlIHRoYXQgcmVwcmVzZW50cyBhbiBlbWFpbCBtZXNzYWdlLCBhbmQgcHJvdmlkZXMgYW4KKyAgICAgICAgQVBJIGZvciBjcmVhdGluZywgcXVlcnlpbmcsIGFuZCBtb2RpZnlpbmcgYSBtZXNzYWdlLgorCisgICAgUGFyc2VyCisgICAgICAgIFRha2VzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyBvciBieXRlcyBhbmQgcHJvZHVjZXMgYSBtb2RlbCBvZiB0aGUKKyAgICAgICAgZW1haWwgbWVzc2FnZSByZXByZXNlbnRlZCBieSB0aG9zZSBjaGFyYWN0ZXJzIG9yIGJ5dGVzLgorCisgICAgR2VuZXJhdG9yCisgICAgICAgIFRha2VzIGEgbW9kZWwgYW5kIHR1cm5zIGl0IGludG8gYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIG9yIGJ5dGVzLiAgVGhlCisgICAgICAgIHNlcXVlbmNlIGNhbiBlaXRoZXIgYmUgaW50ZW5kZWQgZm9yIGh1bWFuIGNvbnN1bXB0aW9uIChhIHByaW50YWJsZQorICAgICAgICB1bmljb2RlIHN0cmluZykgb3IgYnl0ZXMgc3VpdGFibGUgZm9yIHRyYW5zbWlzc2lvbiBvdmVyIHRoZSB3aXJlLiAgSW4KKyAgICAgICAgdGhlIGxhdHRlciBjYXNlIGFsbCBkYXRhIGlzIHByb3Blcmx5IGVuY29kZWQgdXNpbmcgdGhlIGNvbnRlbnQgdHJhbnNmZXIKKyAgICAgICAgZW5jb2RpbmdzIHNwZWNpZmllZCBieSB0aGUgcmVsZXZhbnQgUkZDcy4KKworQ29uY2VwdHVhbGx5IHRoZSBwYWNrYWdlIGlzIG9yZ2FuaXplZCBhcm91bmQgdGhlIG1vZGVsLiAgVGhlIG1vZGVsIHByb3ZpZGVzIGJvdGgKKyJleHRlcm5hbCIgQVBJcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IGFwcGxpY2F0aW9uIHByb2dyYW1zIHVzaW5nIHRoZSBsaWJyYXJ5LAorYW5kICJpbnRlcm5hbCIgQVBJcyBpbnRlbmRlZCBmb3IgdXNlIGJ5IHRoZSBQYXJzZXIgYW5kIEdlbmVyYXRvciBjb21wb25lbnRzLgorVGhpcyBkaXZpc2lvbiBpcyBpbnRlbnRpb25hbGx5IGEgYml0IGZ1enk7IHRoZSBBUEkgZGVzY3JpYmVkIGJ5IHRoaXMgZG9jdW1lbnRhdGlvbgoraXMgYWxsIGEgcHVibGljLCBzdGFibGUgQVBJLiAgVGhpcyBhbGxvd3MgZm9yIGFuIGFwcGxpY2F0aW9uIHdpdGggc3BlY2lhbCBuZWVkcwordG8gaW1wbGVtZW50IGl0cyBvd24gcGFyc2VyIGFuZC9vciBnZW5lcmF0b3IuCisKK0luIGFkZGl0aW9uIHRvIHRoZSB0aHJlZSBtYWpvciBmdW5jdGlvbmFsIGNvbXBvbmVudHMsIHRoZXJlIGlzIGEgdGhpcmQga2V5Citjb21wb25lbnQgdG8gdGhlIGFyY2hpdGVjdHVyZToKKworICAgIFBvbGljeQorICAgICAgICBBbiBvYmplY3QgdGhhdCBzcGVjaWZpZXMgdmFyaW91cyBiZWhhdmlvcmFsIHNldHRpbmdzIGFuZCBjYXJyaWVzCisgICAgICAgIGltcGxlbWVudGF0aW9ucyBvZiB2YXJpb3VzIGJlaGF2aW9yLWNvbnRyb2xsaW5nIG1ldGhvZHMuCisKK1RoZSBQb2xpY3kgZnJhbWV3b3JrIHByb3ZpZGVzIGEgc2ltcGxlIGFuZCBjb252ZW5pZW50IHdheSB0byBjb250cm9sIHRoZQorYmVoYXZpb3Igb2YgdGhlIGxpYnJhcnksIG1ha2luZyBpdCBwb3NzaWJsZSBmb3IgdGhlIGxpYnJhcnkgdG8gYmUgdXNlZCBpbiBhCit2ZXJ5IGZsZXhpYmxlIGZhc2hpb24gd2hpbGUgbGV2ZXJhZ2luZyB0aGUgY29tbW9uIGNvZGUgcmVxdWlyZWQgdG8gcGFyc2UsCityZXByZXNlbnQsIGFuZCBnZW5lcmF0ZSBtZXNzYWdlLWxpa2Ugb2JqZWN0cy4gIEZvciBleGFtcGxlLCBpbiBhZGRpdGlvbiB0byB0aGUKK2RlZmF1bHQgOnJmYzpgNTMyMmAgZW1haWwgbWVzc2FnZSBwb2xpY3ksIHdlIGFsc28gaGF2ZSBhIHBvbGljeSB0aGF0IG1hbmFnZXMKK0hUVFAgaGVhZGVycyBpbiBhIGZhc2hpb24gY29tcGxpYW50IHdpdGggOnJmYzpgMjYxNmAuICBJbmRpdmlkdWFsIHBvbGljeQorY29udHJvbHMsIHN1Y2ggYXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGggcHJvZHVjZWQgYnkgdGhlIGdlbmVyYXRvciwgY2FuIGFsc28KK2JlIGNvbnRyb2xsZWQgaW5kaXZpZHVhbGx5IHRvIG1lZXQgc3BlY2lhbGl6ZWQgYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzLgorCisKK1RoZSBNb2RlbAorLS0tLS0tLS0tCisKK1RoZSBtZXNzYWdlIG1vZGVsIGlzIGltcGxlbWVudGVkIGJ5IHRoZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLgorVGhlIG1vZGVsIGRpdmlkZXMgYSBtZXNzYWdlIGludG8gdGhlIHR3byBmdW5kYW1lbnRhbCBwYXJ0cyBkaXNjdXNzZWQgYnkgdGhlCitSRkM6IHRoZSBoZWFkZXIgc2VjdGlvbiBhbmQgdGhlIGJvZHkuICBUaGUgYE1lc3NhZ2VgIG9iamVjdCBhY3RzIGFzIGEKK3BzZXVkby1kaWN0aW9uYXJ5IG9mIG5hbWVkIGhlYWRlcnMuICBJdHMgZGljdGlvbmFyeSBpbnRlcmZhY2UgcHJvdmlkZXMKK2NvbnZlbmllbnQgYWNjZXNzIHRvIGluZGl2aWR1YWwgaGVhZGVycyBieSBuYW1lLiAgSG93ZXZlciwgYWxsIGhlYWRlcnMgYXJlIGtlcHQKK2ludGVybmFsbHkgaW4gYW4gb3JkZXJlZCBsaXN0LCBzbyB0aGF0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JkZXIgb2YgdGhlCitoZWFkZXJzIGluIHRoZSBvcmlnaW5hbCBtZXNzYWdlIGlzIHByZXNlcnZlZC4KKworVGhlIGBNZXNzYWdlYCBvYmplY3QgYWxzbyBoYXMgYSBgcGF5bG9hZGAgdGhhdCBob2xkcyB0aGUgYm9keS4gIEEgYHBheWxvYWRgIGNhbgorYmUgb25lIG9mIHR3byB0aGluZ3M6IGRhdGEsIG9yIGEgbGlzdCBvZiBgTWVzc2FnZWAgb2JqZWN0cy4gIFRoZSBsYXR0ZXIgaXMgdXNlZAordG8gcmVwcmVzZW50IGEgbXVsdGlwYXJ0IE1JTUUgbWVzc2FnZS4gIExpc3RzIGNhbiBiZSBuZXN0ZWQgYXJiaXRyYXJpbHkgZGVlcGx5CitpbiBvcmRlciB0byByZXByZXNlbnQgdGhlIG1lc3NhZ2UsIHdpdGggYWxsIHRlcm1pbmFsIGxlYXZlcyBoYXZpbmcgbm9uLWxpc3QKK2RhdGEgcGF5bG9hZHMuCisKKworTWVzc2FnZSBMaWZlY3ljbGUKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBnZW5lcmFsIGxpZmVjeWxlIG9mIGEgbWVzc2FnZSBpczoKKworICAgIENyZWF0aW9uCisgICAgICAgIEEgYE1lc3NhZ2VgIG9iamVjdCBjYW4gYmUgY3JlYXRlZCBieSBhIFBhcnNlciwgb3IgaXQgY2FuIGJlCisgICAgICAgIGluc3RhbnRpYXRlZCBhcyBhbiBlbXB0eSBtZXNzYWdlIGJ5IGFuIGFwcGxpY2F0aW9uLgorCisgICAgTWFuaXB1bGF0aW9uCisgICAgICAgIFRoZSBhcHBsaWNhdGlvbiBtYXkgZXhhbWluZSBvbmUgb3IgbW9yZSBoZWFkZXJzLCBhbmQvb3IgdGhlCisgICAgICAgIHBheWxvYWQsIGFuZCBpdCBtYXkgbW9kaWZ5IG9uZSBvciBtb3JlIGhlYWRlcnMgYW5kL29yCisgICAgICAgIHRoZSBwYXlsb2FkLiAgVGhpcyBtYXkgYmUgZG9uZSBvbiB0aGUgdG9wIGxldmVsIGBNZXNzYWdlYAorICAgICAgICBvYmplY3QsIG9yIG9uIGFueSBzdWItb2JqZWN0LgorCisgICAgRmluYWxpemF0aW9uCisgICAgICAgIFRoZSBNb2RlbCBpcyBjb252ZXJ0ZWQgaW50byBhIHVuaWNvZGUgb3IgYmluYXJ5IHN0cmVhbSwKKyAgICAgICAgb3IgdGhlIG1vZGVsIGlzIGRpc2NhcmRlZC4KKworCisKK0hlYWRlciBQb2xpY3kgQ29udHJvbCBEdXJpbmcgTGlmZWN5Y2xlCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitPbmUgb2YgdGhlIG1ham9yIGNvbnRyb2xzIGV4ZXJ0ZWQgYnkgdGhlIFBvbGljeSBpcyB0aGUgbWFuYWdlbWVudCBvZiBoZWFkZXJzCitkdXJpbmcgdGhlIGBNZXNzYWdlYCBsaWZlY3ljbGUuICBNb3N0IGFwcGxpY2F0aW9ucyBkb24ndCBuZWVkIHRvIGJlIGF3YXJlIG9mCit0aGlzLgorCitBIGhlYWRlciBlbnRlcnMgdGhlIG1vZGVsIGluIG9uZSBvZiB0d28gd2F5czogdmlhIGEgUGFyc2VyLCBvciBieSBiZWluZyBzZXQgdG8KK2Egc3BlY2lmaWMgdmFsdWUgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSBhZnRlciB0aGUgTW9kZWwgYWxyZWFkeSBleGlzdHMuCitTaW1pbGFybHksIGEgaGVhZGVyIGV4aXRzIHRoZSBtb2RlbCBpbiBvbmUgb2YgdHdvIHdheXM6IGJ5IGJlaW5nIHNlcmlhbGl6ZWQgYnkKK2EgR2VuZXJhdG9yLCBvciBieSBiZWluZyByZXRyaWV2ZWQgZnJvbSBhIE1vZGVsIGJ5IGFuIGFwcGxpY2F0aW9uIHByb2dyYW0uICBUaGUKK1BvbGljeSBvYmplY3QgcHJvdmlkZXMgaG9va3MgZm9yIGFsbCBmb3VyIG9mIHRoZXNlIHBhdGh3YXlzLgorCitUaGUgbW9kZWwgc3RvcmFnZSBmb3IgaGVhZGVycyBpcyBhIGxpc3Qgb2YgKG5hbWUsIHZhbHVlKSB0dXBsZXMuCisKK1RoZSBQYXJzZXIgaWRlbnRpZmllcyBoZWFkZXJzIGR1cmluZyBwYXJzaW5nLCBhbmQgcGFzc2VzIHRoZW0gdG8gdGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuaGVhZGVyX3NvdXJjZV9wYXJzZWAgbWV0aG9kIG9mIHRoZSBQb2xpY3kuICBUaGUKK3Jlc3VsdCBvZiB0aGF0IG1ldGhvZCBpcyB0aGUgKG5hbWUsIHZhbHVlKSB0dXBsZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgorCitXaGVuIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gc3VwcGxpZXMgYSBoZWFkZXIgdmFsdWUgKGZvciBleGFtcGxlLCB0aHJvdWdoIHRoZQorYE1lc3NhZ2VgIG9iamVjdCBgX19zZXRpdGVtX19gIGludGVyZmFjZSksIHRoZSBuYW1lIGFuZCB0aGUgdmFsdWUgYXJlIHBhc3NlZCB0bwordGhlIDptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2VgIG1ldGhvZCBvZiB0aGUgUG9saWN5LCB3aGljaAorcmV0dXJucyB0aGUgKG5hbWUsIHZhbHVlKSB0dXBsZSB0byBiZSBzdG9yZWQgaW4gdGhlIG1vZGVsLgorCitXaGVuIGFuIGFwcGxpY2F0aW9uIHByb2dyYW0gcmV0cmlldmVzIGEgaGVhZGVyICh0aHJvdWdoIGFueSBvZiB0aGUgZGljdCBvciBsaXN0CitpbnRlcmZhY2VzIG9mIGBNZXNzYWdlYCksIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcGFzc2VkIHRvIHRoZQorOm1ldGg6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZWAgbWV0aG9kIG9mIHRoZSBQb2xpY3kgdG8KK29idGFpbiB0aGUgdmFsdWUgcmV0dXJuZWQgdG8gdGhlIGFwcGxpY2F0aW9uLgorCitXaGVuIGEgR2VuZXJhdG9yIHJlcXVlc3RzIGEgaGVhZGVyIGR1cmluZyBzZXJpYWxpemF0aW9uLCB0aGUgbmFtZSBhbmQgdmFsdWUgYXJlCitwYXNzZWQgdG8gdGhlIDptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5mb2xkYCBtZXRob2Qgb2YgdGhlIFBvbGljeSwgd2hpY2gKK3JldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyBsaW5lIGJyZWFrcyBpbiB0aGUgYXBwcm9wcmlhdGUgcGxhY2VzLiAgVGhlCis6bWV0aDpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgIFBvbGljeSBjb250cm9sIGRldGVybWluZXMgd2hldGhlciBvcgorbm90IENvbnRlbnQgVHJhbnNmZXIgRW5jb2RpbmcgaXMgcGVyZm9ybWVkIG9uIHRoZSBkYXRhIGluIHRoZSBoZWFkZXIuICBUaGVyZSBpcworYWxzbyBhIDptZXRoOmB+ZW1haWwucG9saWN5LlBvbGljeS5iaW5hcnlfZm9sZGAgbWV0aG9kIGZvciB1c2UgYnkgZ2VuZXJhdG9ycwordGhhdCBwcm9kdWNlIGJpbmFyeSBvdXRwdXQsIHdoaWNoIHJldHVybnMgdGhlIGZvbGRlZCBoZWFkZXIgYXMgYmluYXJ5IGRhdGEsCitwb3NzaWJseSBmb2xkZWQgYXQgZGlmZmVyZW50IHBsYWNlcyB0aGFuIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZyB3b3VsZCBiZS4KKworCitIYW5kbGluZyBCaW5hcnkgRGF0YQorLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gYW4gaWRlYWwgd29ybGQgYWxsIG1lc3NhZ2UgZGF0YSB3b3VsZCBjb25mb3JtIHRvIHRoZSBSRkNzLCBtZWFuaW5nIHRoYXQgdGhlCitwYXJzZXIgY291bGQgZGVjb2RlIHRoZSBtZXNzYWdlIGludG8gdGhlIGlkZWFsaXplZCB1bmljb2RlIG1lc3NhZ2UgdGhhdCB0aGUKK3NlbmRlciBvcmlnaW5hbGx5IHdyb3RlLiAgSW4gdGhlIHJlYWwgd29ybGQsIHRoZSBlbWFpbCBwYWNrYWdlIG11c3QgYWxzbyBiZQorYWJsZSB0byBkZWFsIHdpdGggYmFkbHkgZm9ybWF0dGVkIG1lc3NhZ2VzLCBpbmNsdWRpbmcgbWVzc2FnZXMgY29udGFpbmluZworbm9uLUFTQ0lJIGNoYXJhY3RlcnMgdGhhdCBlaXRoZXIgaGF2ZSBubyBpbmRpY2F0ZWQgY2hhcmFjdGVyIHNldCBvciBhcmUgbm90Cit2YWxpZCBjaGFyYWN0ZXJzIGluIHRoZSBpbmRpY2F0ZWQgY2hhcmFjdGVyIHNldC4KKworU2luY2UgZW1haWwgbWVzc2FnZXMgYXJlICpwcmltYXJpbHkqIHRleHQgZGF0YSwgYW5kIG9wZXJhdGlvbnMgb24gbWVzc2FnZSBkYXRhCithcmUgcHJpbWFyaWx5IHRleHQgb3BlcmF0aW9ucyAoZXhjZXB0IGZvciBiaW5hcnkgcGF5bG9hZHMgb2YgY291cnNlKSwgdGhlIG1vZGVsCitzdG9yZXMgYWxsIHRleHQgZGF0YSBhcyB1bmljb2RlIHN0cmluZ3MuICBVbi1kZWNvZGFibGUgYmluYXJ5IGluc2lkZSB0ZXh0CitkYXRhIGlzIGhhbmRsZWQgYnkgdXNpbmcgdGhlIGBzdXJyb2dhdGVlc2NhcGVgIGVycm9yIGhhbmRsZXIgb2YgdGhlIEFTQ0lJCitjb2RlYy4gIEFzIHdpdGggdGhlIGJpbmFyeSBmaWxlbmFtZXMgdGhlIGVycm9yIGhhbmRsZXIgd2FzIGludHJvZHVjZWQgdG8KK2hhbmRsZSwgdGhpcyBhbGxvd3MgdGhlIGVtYWlsIHBhY2thZ2UgdG8gImNhcnJ5IiB0aGUgYmluYXJ5IGRhdGEgcmVjZWl2ZWQKK2R1cmluZyBwYXJzaW5nIGFsb25nIHVudGlsIHRoZSBvdXRwdXQgc3RhZ2UsIGF0IHdoaWNoIHRpbWUgaXQgaXMgcmVnZW5lcmF0ZWQKK2luIGl0cyBvcmlnaW5hbCBmb3JtLgorCitUaGlzIGNhcnJpZWQgYmluYXJ5IGRhdGEgaXMgYWxtb3N0IGVudGlyZWx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gIFRoZSBvbmUKK3BsYWNlIHdoZXJlIGl0IGlzIHZpc2libGUgaW4gdGhlIEFQSSBpcyBpbiB0aGUgImludGVybmFsIiBBUEkuICBBIFBhcnNlciBtdXN0CitkbyB0aGUgYHN1cnJvZ2F0ZWVzY2FwZWAgZW5jb2Rpbmcgb2YgYmluYXJ5IGlucHV0IGRhdGEsIGFuZCBwYXNzIHRoYXQgZGF0YSB0bwordGhlIGFwcHJvcHJpYXRlIFBvbGljeSBtZXRob2QuICBUaGUgImludGVybmFsIiBpbnRlcmZhY2UgdXNlZCBieSB0aGUgR2VuZXJhdG9yCit0byBhY2Nlc3MgaGVhZGVyIHZhbHVlcyBwcmVzZXJ2ZXMgdGhlIGBzdXJyb2dhdGVlc2NhcGVkYCBieXRlcy4gIEFsbCBvdGhlcgoraW50ZXJmYWNlcyBjb252ZXJ0IHRoZSBiaW5hcnkgZGF0YSBlaXRoZXIgYmFjayBpbnRvIGJ5dGVzIG9yIGludG8gYSBzYWZlIGZvcm0KKyhsb3NpbmcgaW5mb3JtYXRpb24gaW4gc29tZSBjYXNlcykuCisKKworQmFja3dhcmQgQ29tcGF0aWJpbGl0eQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgOmNsYXNzOmB+ZW1haWwucG9saWN5LlBvbGljeS5Db21wYXQzMmAgUG9saWN5IHByb3ZpZGVzIGJhY2t3YXJkCitjb21wYXRpYmlsaXR5IHdpdGggdmVyc2lvbiA1LjEgb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBJdCBkb2VzIHRoaXMgdmlhIHRoZQorZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmb3VyKzEgUG9saWN5IG1ldGhvZHMgZGVzY3JpYmVkIGFib3ZlOgorCitoZWFkZXJfc291cmNlX3BhcnNlCisgICAgU3BsaXRzIHRoZSBmaXJzdCBsaW5lIG9uIHRoZSBjb2xvbiB0byBvYnRhaW4gdGhlIG5hbWUsIGRpc2NhcmRzIGFueSBzcGFjZXMKKyAgICBhZnRlciB0aGUgY29sb24sIGFuZCBqb2lucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lIHdpdGggYWxsIG9mIHRoZQorICAgIHJlbWFpbmluZyBsaW5lcywgcHJlc2VydmluZyB0aGUgbGluZXNlcCBjaGFyYWN0ZXJzIHRvIG9idGFpbiB0aGUgdmFsdWUuCisgICAgVHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIGFuZC9vciBsaW5lZmVlZCBjaGFyYWN0ZXJzIGFyZSBzdHJpcHBlZCBmcm9tIHRoZQorICAgIHJlc3VsdGluZyB2YWx1ZSBzdHJpbmcuCisKK2hlYWRlcl9zdG9yZV9wYXJzZQorICAgIFJldHVybnMgdGhlIG5hbWUgYW5kIHZhbHVlIGV4YWN0bHkgYXMgcmVjZWl2ZWQgZnJvbSB0aGUgYXBwbGljYXRpb24uCisKK2hlYWRlcl9mZXRjaF9wYXJzZQorICAgIElmIHRoZSB2YWx1ZSBjb250YWlucyBhbnkgYHN1cnJvZ2F0ZWVzY2FwZWRgIGJpbmFyeSBkYXRhLCByZXR1cm4gdGhlIHZhbHVlCisgICAgYXMgYSA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBvYmplY3QsIHVzaW5nIHRoZSBjaGFyYWN0ZXIgc2V0CisgICAgYHVua25vd24tOGJpdGAuICBPdGhlcndpc2UganVzdCByZXR1cm5zIHRoZSB2YWx1ZS4KKworZm9sZAorICAgIFVzZXMgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAncyBmb2xkaW5nIHRvIGZvbGQgaGVhZGVycyBpbiB0aGUKKyAgICBzYW1lIHdheSB0aGUgZW1haWw1LjEgZ2VuZXJhdG9yIGRpZC4KKworYmluYXJ5X2ZvbGQKKyAgICBTYW1lIGFzIGZvbGQsIGJ1dCBlbmNvZGVzIHRvICdhc2NpaScuCisKKworTmV3IEFsZ29yaXRobQorLS0tLS0tLS0tLS0tLQorCitoZWFkZXJfc291cmNlX3BhcnNlCisgICAgU2FtZSBhcyBsZWdhY3kgYmVoYXZpb3IuCisKK2hlYWRlcl9zdG9yZV9wYXJzZQorICAgIFNhbWUgYXMgbGVnYWN5IGJlaGF2aW9yLgorCitoZWFkZXJfZmV0Y2hfcGFyc2UKKyAgICBJZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBhIGhlYWRlciBvYmplY3QsIHJldHVybnMgaXQuICBPdGhlcndpc2UsIHBhcnNlcyB0aGUKKyAgICB2YWx1ZSB1c2luZyB0aGUgbmV3IHBhcnNlciwgYW5kIHJldHVybnMgdGhlIHJlc3VsdGluZyBvYmplY3QgYXMgdGhlIHZhbHVlLgorICAgIGBzdXJyb2dhdGVlc2NhcGVkYCBieXRlcyBnZXQgdHVybmVkIGludG8gdW5pY29kZSB1bmtub3duIGNoYXJhY3RlciBjb2RlCisgICAgcG9pbnRzLgorCitmb2xkCisgICAgVXNlcyB0aGUgbmV3IGhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgcmVzcGVjdGluZyB0aGUgcG9saWN5IHNldHRpbmdzLgorICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgYXJlIGVuY29kZWQgdXNpbmcgdGhlIGBgdW5rbm93bi04Yml0YGAgY2hhcnNldCBmb3IKKyAgICBgYGN0ZV90eXBlPTdiaXRgYCBvciBgYDhiaXRgYC4gIFJldHVybnMgYSBzdHJpbmcuCisKKyAgICBBdCBzb21lIHBvaW50IHRoZXJlIHdpbGwgYWxzbyBiZSBhIGBgY3RlX3R5cGU9dW5pY29kZWBgLCBhbmQgZm9yIHRoYXQKKyAgICBwb2xpY3kgZm9sZCB3aWxsIHNlcmlhbGl6ZSB0aGUgaWRlYWxpemVkIHVuaWNvZGUgbWVzc2FnZSB3aXRoIFJGQy1saWtlCisgICAgZm9sZGluZywgY29udmVydGluZyBhbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBpbnRvIHRoZSB1bmljb2RlCisgICAgdW5rbm93biBjaGFyYWN0ZXIgZ2x5cGguCisKK2JpbmFyeV9mb2xkCisgICAgVXNlcyB0aGUgbmV3IGhlYWRlciBmb2xkaW5nIGFsZ29yaXRobSwgcmVzcGVjdGluZyB0aGUgcG9saWN5IHNldHRpbmdzLgorICAgIHN1cnJvZ2F0ZWVzY2FwZWQgYnl0ZXMgYXJlIGVuY29kZWQgdXNpbmcgdGhlIGB1bmtub3duLThiaXRgIGNoYXJzZXQgZm9yCisgICAgYGBjdGVfdHlwZT03Yml0YGAsIGFuZCBnZXQgdHVybmVkIGJhY2sgaW50byBieXRlcyBmb3IgYGBjdGVfdHlwZT04Yml0YGAuCisgICAgUmV0dXJucyBieXRlcy4KKworICAgIEF0IHNvbWUgcG9pbnQgdGhlcmUgd2lsbCBhbHNvIGJlIGEgYGBjdGVfdHlwZT11bmljb2RlYGAsIGFuZCBmb3IgdGhhdAorICAgIHBvbGljeSBiaW5hcnlfZm9sZCB3aWxsIHNlcmlhbGl6ZSB0aGUgbWVzc2FnZSBhY2NvcmRpbmcgdG8gOnJmYzpgYDUzMzVgYC4KZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9lcnJvcnMucHkgYi9MaWIvZW1haWwvZXJyb3JzLnB5CmluZGV4IGQ1MmE2MjQuLjc5MTIzOWYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9lcnJvcnMucHkKKysrIGIvTGliL2VtYWlsL2Vycm9ycy5weQpAQCAtNSw3ICs1LDYgQEAKICIiImVtYWlsIHBhY2thZ2UgZXhjZXB0aW9uIGNsYXNzZXMuIiIiCiAKIAotDAogY2xhc3MgTWVzc2FnZUVycm9yKEV4Y2VwdGlvbik6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgZXJyb3JzIGluIHRoZSBlbWFpbCBwYWNrYWdlLiIiIgogCkBAIC0zMCwxMiArMjksMTMgQEAKICAgICAiIiJBbiBpbGxlZ2FsIGNoYXJzZXQgd2FzIGdpdmVuLiIiIgogCiAKLQwKICMgVGhlc2UgYXJlIHBhcnNpbmcgZGVmZWN0cyB3aGljaCB0aGUgcGFyc2VyIHdhcyBhYmxlIHRvIHdvcmsgYXJvdW5kLgotY2xhc3MgTWVzc2FnZURlZmVjdDoKK2NsYXNzIE1lc3NhZ2VEZWZlY3QoVmFsdWVFcnJvcik6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgYSBtZXNzYWdlIGRlZmVjdC4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lPU5vbmUpOgorICAgICAgICBpZiBsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhsaW5lKQogICAgICAgICBzZWxmLmxpbmUgPSBsaW5lCiAKIGNsYXNzIE5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdChNZXNzYWdlRGVmZWN0KToKQEAgLTQ0LDE0ICs0NCw2NCBAQAogY2xhc3MgU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgogICAgICIiIlRoZSBjbGFpbWVkIHN0YXJ0IGJvdW5kYXJ5IHdhcyBuZXZlciBmb3VuZC4iIiIKIAorY2xhc3MgQ2xvc2VCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkEgc3RhcnQgYm91bmRhcnkgd2FzIGZvdW5kLCBidXQgbm90IHRoZSBjb3JyZXNwb25kaW5nIGNsb3NlIGJvdW5kYXJ5LiIiIgorCiBjbGFzcyBGaXJzdEhlYWRlckxpbmVJc0NvbnRpbnVhdGlvbkRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJBIG1lc3NhZ2UgaGFkIGEgY29udGludWF0aW9uIGxpbmUgYXMgaXRzIGZpcnN0IGhlYWRlciBsaW5lLiIiIgogCiBjbGFzcyBNaXNwbGFjZWRFbnZlbG9wZUhlYWRlckRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJBICdVbml4LWZyb20nIGhlYWRlciB3YXMgZm91bmQgaW4gdGhlIG1pZGRsZSBvZiBhIGhlYWRlciBibG9jay4iIiIKIAotY2xhc3MgTWFsZm9ybWVkSGVhZGVyRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgotICAgICIiIkZvdW5kIGEgaGVhZGVyIHRoYXQgd2FzIG1pc3NpbmcgYSBjb2xvbiwgb3Igd2FzIG90aGVyd2lzZSBtYWxmb3JtZWQuIiIiCitjbGFzcyBNaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJGb3VuZCBsaW5lIHdpdGggbm8gbGVhZGluZyB3aGl0ZXNwYWNlIGFuZCBubyBjb2xvbiBiZWZvcmUgYmxhbmsgbGluZS4iIiIKKyMgWFhYOiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCBqdXN0IGluIGNhc2UgKGl0IHdhcyBuZXZlciBlbWl0dGVkKS4KK01hbGZvcm1lZEhlYWRlckRlZmVjdCA9IE1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0CiAKIGNsYXNzIE11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdChNZXNzYWdlRGVmZWN0KToKICAgICAiIiJBIG1lc3NhZ2UgY2xhaW1lZCB0byBiZSBhIG11bHRpcGFydCBidXQgbm8gc3VicGFydHMgd2VyZSBmb3VuZC4iIiIKKworY2xhc3MgSW52YWxpZE11bHRpcGFydENvbnRlbnRUcmFuc2ZlckVuY29kaW5nRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkFuIGludmFsaWQgY29udGVudCB0cmFuc2ZlciBlbmNvZGluZyB3YXMgc2V0IG9uIHRoZSBtdWx0aXBhcnQgaXRzZWxmLiIiIgorCitjbGFzcyBVbmRlY29kYWJsZUJ5dGVzRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkhlYWRlciBjb250YWluZWQgYnl0ZXMgdGhhdCBjb3VsZCBub3QgYmUgZGVjb2RlZCIiIgorCitjbGFzcyBJbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJiYXNlNjQgZW5jb2RlZCBzZXF1ZW5jZSBoYWQgYW4gaW5jb3JyZWN0IGxlbmd0aCIiIgorCitjbGFzcyBJbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdChNZXNzYWdlRGVmZWN0KToKKyAgICAiIiJiYXNlNjQgZW5jb2RlZCBzZXF1ZW5jZSBoYWQgY2hhcmFjdGVycyBub3QgaW4gYmFzZTY0IGFscGhhYmV0IiIiCisKKyMgVGhlc2UgZXJyb3JzIGFyZSBzcGVjaWZpYyB0byBoZWFkZXIgcGFyc2luZy4KKworY2xhc3MgSGVhZGVyRGVmZWN0KE1lc3NhZ2VEZWZlY3QpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIGEgaGVhZGVyIGRlZmVjdC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsICoqa3cpCisKK2NsYXNzIEludmFsaWRIZWFkZXJEZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJIZWFkZXIgaXMgbm90IHZhbGlkLCBtZXNzYWdlIGdpdmVzIGRldGFpbHMuIiIiCisKK2NsYXNzIEhlYWRlck1pc3NpbmdSZXF1aXJlZFZhbHVlKEhlYWRlckRlZmVjdCk6CisgICAgIiIiQSBoZWFkZXIgdGhhdCBtdXN0IGhhdmUgYSB2YWx1ZSBoYWQgbm9uZSIiIgorCitjbGFzcyBOb25QcmludGFibGVEZWZlY3QoSGVhZGVyRGVmZWN0KToKKyAgICAiIiJBU0NJSSBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGFzY2lpLXByaW50YWJsZSByYW5nZSBmb3VuZCIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vbl9wcmludGFibGVzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhub25fcHJpbnRhYmxlcykKKyAgICAgICAgc2VsZi5ub25fcHJpbnRhYmxlcyA9IG5vbl9wcmludGFibGVzCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgidGhlIGZvbGxvd2luZyBBU0NJSSBub24tcHJpbnRhYmxlcyBmb3VuZCBpbiBoZWFkZXI6ICIKKyAgICAgICAgICAgICJ7fSIuZm9ybWF0KHNlbGYubm9uX3ByaW50YWJsZXMpKQorCitjbGFzcyBPYnNvbGV0ZUhlYWRlckRlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiIkhlYWRlciB1c2VzIHN5bnRheCBkZWNsYXJlZCBvYnNvbGV0ZSBieSBSRkMgNTMyMiIiIgorCitjbGFzcyBOb25BU0NJSUxvY2FsUGFydERlZmVjdChIZWFkZXJEZWZlY3QpOgorICAgICIiImxvY2FsX3BhcnQgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMiIiIKKyAgICAjIFRoaXMgZGVmZWN0IG9ubHkgb2NjdXJzIGR1cmluZyB1bmljb2RlIHBhcnNpbmcsIG5vdCB3aGVuCisgICAgIyBwYXJzaW5nIG1lc3NhZ2VzIGRlY29kZWQgZnJvbSBiaW5hcnkuCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvZmVlZHBhcnNlci5weSBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CmluZGV4IGFhOGEyZmYuLjU2ZjUwZGYgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5CkBAIC0yNSw2ICsyNSw3IEBACiAKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIAogTkxDUkUgPSByZS5jb21waWxlKCdcclxufFxyfFxuJykKIE5MQ1JFX2JvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKScpCkBAIC0xMjAsOSArMTIxLDYgQEAKICAgICAgICAgIyBSZXZlcnNlIGFuZCBpbnNlcnQgYXQgdGhlIGZyb250IG9mIHRoZSBsaW5lcy4KICAgICAgICAgc2VsZi5fbGluZXNbOjBdID0gbGluZXNbOjotMV0KIAotICAgIGRlZiBpc19jbG9zZWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jbG9zZWQKLQogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKIApAQCAtMTM3LDkgKzEzNSwyMiBAQAogY2xhc3MgRmVlZFBhcnNlcjoKICAgICAiIiJBIGZlZWQtc3R5bGUgcGFyc2VyIG9mIGVtYWlsLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIF9mYWN0b3J5PW1lc3NhZ2UuTWVzc2FnZSk6Ci0gICAgICAgICIiIl9mYWN0b3J5IGlzIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cyB0byBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmoiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX2ZhY3Rvcnk9bWVzc2FnZS5NZXNzYWdlLCAqLCBwb2xpY3k9Y29tcGF0MzIpOgorICAgICAgICAiIiJfZmFjdG9yeSBpcyBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMgdG8gY3JlYXRlIGEgbmV3IG1lc3NhZ2Ugb2JqCisKKyAgICAgICAgVGhlIHBvbGljeSBrZXl3b3JkIHNwZWNpZmllcyBhIHBvbGljeSBvYmplY3QgdGhhdCBjb250cm9scyBhIG51bWJlciBvZgorICAgICAgICBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBfZmFjdG9yeQorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfZmFjdG9yeShwb2xpY3k9c2VsZi5wb2xpY3kpCisgICAgICAgICAgICBzZWxmLl9mYWN0b3J5X2t3ZHMgPSBsYW1iZGE6IHsncG9saWN5Jzogc2VsZi5wb2xpY3l9CisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIEFzc3VtZSB0aGlzIGlzIGFuIG9sZC1zdHlsZSBmYWN0b3J5CisgICAgICAgICAgICBzZWxmLl9mYWN0b3J5X2t3ZHMgPSBsYW1iZGE6IHt9CiAgICAgICAgIHNlbGYuX2lucHV0ID0gQnVmZmVyZWRTdWJGaWxlKCkKICAgICAgICAgc2VsZi5fbXNnc3RhY2sgPSBbXQogICAgICAgICBzZWxmLl9wYXJzZSA9IHNlbGYuX3BhcnNlZ2VuKCkuX19uZXh0X18KQEAgLTE3MSwxMSArMTgyLDEyIEBACiAgICAgICAgICMgTG9vayBmb3IgZmluYWwgc2V0IG9mIGRlZmVjdHMKICAgICAgICAgaWYgcm9vdC5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIFwKICAgICAgICAgICAgICAgIGFuZCBub3Qgcm9vdC5pc19tdWx0aXBhcnQoKToKLSAgICAgICAgICAgIHJvb3QuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCgpKQorICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCgpCisgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHJvb3QsIGRlZmVjdCkKICAgICAgICAgcmV0dXJuIHJvb3QKIAogICAgIGRlZiBfbmV3X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoKQorICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCoqc2VsZi5fZmFjdG9yeV9rd2RzKCkpCiAgICAgICAgIGlmIHNlbGYuX2N1ciBhbmQgc2VsZi5fY3VyLmdldF9jb250ZW50X3R5cGUoKSA9PSAnbXVsdGlwYXJ0L2RpZ2VzdCc6CiAgICAgICAgICAgICBtc2cuc2V0X2RlZmF1bHRfdHlwZSgnbWVzc2FnZS9yZmM4MjInKQogICAgICAgICBpZiBzZWxmLl9tc2dzdGFjazoKQEAgLTIwNyw2ICsyMTksOCBAQAogICAgICAgICAgICAgICAgICMgKGkuZS4gbmV3bGluZSksIGp1c3QgdGhyb3cgaXQgYXdheS4gT3RoZXJ3aXNlIHRoZSBsaW5lIGlzCiAgICAgICAgICAgICAgICAgIyBwYXJ0IG9mIHRoZSBib2R5IHNvIHB1c2ggaXQgYmFjay4KICAgICAgICAgICAgICAgICBpZiBub3QgTkxDUkUubWF0Y2gobGluZSk6CisgICAgICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0LnVucmVhZGxpbmUobGluZSkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaGVhZGVycy5hcHBlbmQobGluZSkKQEAgLTI4NCw3ICsyOTgsOCBAQAogICAgICAgICAgICAgICAgICMgZGVmaW5lZCBhIGJvdW5kYXJ5LiAgVGhhdCdzIGEgcHJvYmxlbSB3aGljaCB3ZSdsbCBoYW5kbGUgYnkKICAgICAgICAgICAgICAgICAjIHJlYWRpbmcgZXZlcnl0aGluZyB1bnRpbCB0aGUgRU9GIGFuZCBtYXJraW5nIHRoZSBtZXNzYWdlIGFzCiAgICAgICAgICAgICAgICAgIyBkZWZlY3RpdmUuCi0gICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QoKSkKKyAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KCkKKyAgICAgICAgICAgICAgICBzZWxmLnBvbGljeS5oYW5kbGVfZGVmZWN0KHNlbGYuX2N1ciwgZGVmZWN0KQogICAgICAgICAgICAgICAgIGxpbmVzID0gW10KICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKICAgICAgICAgICAgICAgICAgICAgaWYgbGluZSBpcyBOZWVkTW9yZURhdGE6CkBAIC0yOTMsNiArMzA4LDExIEBACiAgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcGF5bG9hZChFTVBUWVNUUklORy5qb2luKGxpbmVzKSkKICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICMgTWFrZSBzdXJlIGEgdmFsaWQgY29udGVudCB0eXBlIHdhcyBzcGVjaWZpZWQgcGVyIFJGQyAyMDQ1OjYuNC4KKyAgICAgICAgICAgIGlmIChzZWxmLl9jdXIuZ2V0KCdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJywgJzhiaXQnKS5sb3dlcigpCisgICAgICAgICAgICAgICAgICAgIG5vdCBpbiAoJzdiaXQnLCAnOGJpdCcsICdiaW5hcnknKSk6CisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLkludmFsaWRNdWx0aXBhcnRDb250ZW50VHJhbnNmZXJFbmNvZGluZ0RlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICMgQ3JlYXRlIGEgbGluZSBtYXRjaCBwcmVkaWNhdGUgd2hpY2ggbWF0Y2hlcyB0aGUgaW50ZXItcGFydAogICAgICAgICAgICAgIyBib3VuZGFyeSBhcyB3ZWxsIGFzIHRoZSBlbmQtb2YtbXVsdGlwYXJ0IGJvdW5kYXJ5LiAgRG9uJ3QgcHVzaAogICAgICAgICAgICAgIyB0aGlzIG9udG8gdGhlIGlucHV0IHN0cmVhbSB1bnRpbCB3ZSd2ZSBzY2FubmVkIHBhc3QgdGhlCkBAIC0zMDQsNiArMzI0LDcgQEAKICAgICAgICAgICAgIGNhcHR1cmluZ19wcmVhbWJsZSA9IFRydWUKICAgICAgICAgICAgIHByZWFtYmxlID0gW10KICAgICAgICAgICAgIGxpbmVzZXAgPSBGYWxzZQorICAgICAgICAgICAgY2xvc2VfYm91bmRhcnlfc2VlbiA9IEZhbHNlCiAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9pbnB1dC5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgaWYgbGluZSBpcyBOZWVkTW9yZURhdGE6CkBAIC0zMTgsNiArMzM5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyB0aGUgY2xvc2luZyBib3VuZGFyeSwgdGhlbiB3ZSBuZWVkIHRvIGluaXRpYWxpemUgdGhlCiAgICAgICAgICAgICAgICAgICAgICMgZXBpbG9ndWUgd2l0aCB0aGUgZW1wdHkgc3RyaW5nIChzZWUgYmVsb3cpLgogICAgICAgICAgICAgICAgICAgICBpZiBtby5ncm91cCgnZW5kJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9ib3VuZGFyeV9zZWVuID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNlcCA9IG1vLmdyb3VwKCdsaW5lc2VwJykKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgICMgV2Ugc2F3IGFuIGludGVyLXBhcnQgYm91bmRhcnkuICBXZXJlIHdlIGluIHRoZSBwcmVhbWJsZT8KQEAgLTM4Niw5ICs0MDgsOSBAQAogICAgICAgICAgICAgIyBXZSd2ZSBzZWVuIGVpdGhlciB0aGUgRU9GIG9yIHRoZSBlbmQgYm91bmRhcnkuICBJZiB3ZSdyZSBzdGlsbAogICAgICAgICAgICAgIyBjYXB0dXJpbmcgdGhlIHByZWFtYmxlLCB3ZSBuZXZlciBzYXcgdGhlIHN0YXJ0IGJvdW5kYXJ5LiAgTm90ZQogICAgICAgICAgICAgIyB0aGF0IGFzIGEgZGVmZWN0IGFuZCBzdG9yZSB0aGUgY2FwdHVyZWQgdGV4dCBhcyB0aGUgcGF5bG9hZC4KLSAgICAgICAgICAgICMgRXZlcnl0aGluZyBmcm9tIGhlcmUgdG8gdGhlIEVPRiBpcyBlcGlsb2d1ZS4KICAgICAgICAgICAgIGlmIGNhcHR1cmluZ19wcmVhbWJsZToKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXIuZGVmZWN0cy5hcHBlbmQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCgpKQorICAgICAgICAgICAgICAgIGRlZmVjdCA9IGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QoKQorICAgICAgICAgICAgICAgIHNlbGYucG9saWN5LmhhbmRsZV9kZWZlY3Qoc2VsZi5fY3VyLCBkZWZlY3QpCiAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9wYXlsb2FkKEVNUFRZU1RSSU5HLmpvaW4ocHJlYW1ibGUpKQogICAgICAgICAgICAgICAgIGVwaWxvZ3VlID0gW10KICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9pbnB1dDoKQEAgLTM5Nyw4ICs0MTksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLmVwaWxvZ3VlID0gRU1QVFlTVFJJTkcuam9pbihlcGlsb2d1ZSkKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICMgSWYgdGhlIGVuZCBib3VuZGFyeSBlbmRlZCBpbiBhIG5ld2xpbmUsIHdlJ2xsIG5lZWQgdG8gbWFrZSBzdXJlCi0gICAgICAgICAgICAjIHRoZSBlcGlsb2d1ZSBpc24ndCBOb25lCisgICAgICAgICAgICAjIElmIHdlJ3JlIG5vdCBwcm9jZXNzaW5nIHRoZSBwcmVhbWJsZSwgdGhlbiB3ZSBtaWdodCBoYXZlIHNlZW4KKyAgICAgICAgICAgICMgRU9GIHdpdGhvdXQgc2VlaW5nIHRoYXQgZW5kIGJvdW5kYXJ5Li4udGhhdCBpcyBhbHNvIGEgZGVmZWN0LgorICAgICAgICAgICAgaWYgbm90IGNsb3NlX2JvdW5kYXJ5X3NlZW46CisgICAgICAgICAgICAgICAgZGVmZWN0ID0gZXJyb3JzLkNsb3NlQm91bmRhcnlOb3RGb3VuZERlZmVjdCgpCisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICMgRXZlcnl0aGluZyBmcm9tIGhlcmUgdG8gdGhlIEVPRiBpcyBlcGlsb2d1ZS4gIElmIHRoZSBlbmQgYm91bmRhcnkKKyAgICAgICAgICAgICMgZW5kZWQgaW4gYSBuZXdsaW5lLCB3ZSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZXBpbG9ndWUgaXNuJ3QKKyAgICAgICAgICAgICMgTm9uZQogICAgICAgICAgICAgaWYgbGluZXNlcDoKICAgICAgICAgICAgICAgICBlcGlsb2d1ZSA9IFsnJ10KICAgICAgICAgICAgIGVsc2U6CkBAIC00NDAsMTQgKzQ2OSwxMiBAQAogICAgICAgICAgICAgICAgICAgICAjIGlzIGlsbGVnYWwsIHNvIGxldCdzIG5vdGUgdGhlIGRlZmVjdCwgc3RvcmUgdGhlIGlsbGVnYWwKICAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBhbmQgaWdub3JlIGl0IGZvciBwdXJwb3NlcyBvZiBoZWFkZXJzLgogICAgICAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QobGluZSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLl9jdXIsIGRlZmVjdCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBsYXN0dmFsdWUuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGxhc3RoZWFkZXI6Ci0gICAgICAgICAgICAgICAgIyBYWFggcmVjb25zaWRlciB0aGUgam9pbmluZyBvZiBmb2xkZWQgbGluZXMKLSAgICAgICAgICAgICAgICBsaGRyID0gRU1QVFlTVFJJTkcuam9pbihsYXN0dmFsdWUpWzotMV0ucnN0cmlwKCdcclxuJykKLSAgICAgICAgICAgICAgICBzZWxmLl9jdXJbbGFzdGhlYWRlcl0gPSBsaGRyCisgICAgICAgICAgICAgICAgc2VsZi5fY3VyLnNldF9yYXcoKnNlbGYucG9saWN5LmhlYWRlcl9zb3VyY2VfcGFyc2UobGFzdHZhbHVlKSkKICAgICAgICAgICAgICAgICBsYXN0aGVhZGVyLCBsYXN0dmFsdWUgPSAnJywgW10KICAgICAgICAgICAgICMgQ2hlY2sgZm9yIGVudmVsb3BlIGhlYWRlciwgaS5lLiB1bml4LWZyb20KICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnRnJvbSAnKToKQEAgLTQ3MSwxOSArNDk4LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2N1ci5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAjIFNwbGl0IHRoZSBsaW5lIG9uIHRoZSBjb2xvbiBzZXBhcmF0aW5nIGZpZWxkIG5hbWUgZnJvbSB2YWx1ZS4KKyAgICAgICAgICAgICMgVGhlcmUgd2lsbCBhbHdheXMgYmUgYSBjb2xvbiwgYmVjYXVzZSBpZiB0aGVyZSB3YXNuJ3QgdGhlIHBhcnQgb2YKKyAgICAgICAgICAgICMgdGhlIHBhcnNlciB0aGF0IGNhbGxzIHVzIHdvdWxkIGhhdmUgc3RhcnRlZCBwYXJzaW5nIHRoZSBib2R5LgogICAgICAgICAgICAgaSA9IGxpbmUuZmluZCgnOicpCi0gICAgICAgICAgICBpZiBpIDwgMDoKLSAgICAgICAgICAgICAgICBkZWZlY3QgPSBlcnJvcnMuTWFsZm9ybWVkSGVhZGVyRGVmZWN0KGxpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5fY3VyLmRlZmVjdHMuYXBwZW5kKGRlZmVjdCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgYXNzZXJ0IGk+MCwgIl9wYXJzZV9oZWFkZXJzIGZlZCBsaW5lIHdpdGggbm8gOiBhbmQgbm8gbGVhZGluZyBXUyIKICAgICAgICAgICAgIGxhc3RoZWFkZXIgPSBsaW5lWzppXQotICAgICAgICAgICAgbGFzdHZhbHVlID0gW2xpbmVbaSsxOl0ubHN0cmlwKCldCisgICAgICAgICAgICBsYXN0dmFsdWUgPSBbbGluZV0KICAgICAgICAgIyBEb25lIHdpdGggYWxsIHRoZSBsaW5lcywgc28gaGFuZGxlIHRoZSBsYXN0IGhlYWRlci4KICAgICAgICAgaWYgbGFzdGhlYWRlcjoKLSAgICAgICAgICAgICMgWFhYIHJlY29uc2lkZXIgdGhlIGpvaW5pbmcgb2YgZm9sZGVkIGxpbmVzCi0gICAgICAgICAgICBzZWxmLl9jdXJbbGFzdGhlYWRlcl0gPSBFTVBUWVNUUklORy5qb2luKGxhc3R2YWx1ZSkucnN0cmlwKCdcclxuJykKKyAgICAgICAgICAgIHNlbGYuX2N1ci5zZXRfcmF3KCpzZWxmLnBvbGljeS5oZWFkZXJfc291cmNlX3BhcnNlKGxhc3R2YWx1ZSkpCiAKLQwKKwogY2xhc3MgQnl0ZXNGZWVkUGFyc2VyKEZlZWRQYXJzZXIpOgogICAgICIiIkxpa2UgRmVlZFBhcnNlciwgYnV0IGZlZWQgYWNjZXB0cyBieXRlcy4iIiIKIApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2dlbmVyYXRvci5weSBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKaW5kZXggYzZiZmI3MC4uODk5YWRiYyAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2dlbmVyYXRvci5weQorKysgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CkBAIC0xMyw4ICsxMywxMCBAQAogaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogZnJvbSBlbWFpbC5oZWFkZXIgaW1wb3J0IEhlYWRlcgotZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBfaGFzX3N1cnJvZ2F0ZXMKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworaW1wb3J0IGVtYWlsLmNoYXJzZXQgYXMgX2NoYXJzZXQKIAogVU5ERVJTQ09SRSA9ICdfJwogTkwgPSAnXG4nICAjIFhYWDogbm8gbG9uZ2VyIHVzZWQgYnkgdGhlIGNvZGUgYmVsb3cuCkBAIC0zMyw3ICszNSw4IEBACiAgICAgIyBQdWJsaWMgaW50ZXJmYWNlCiAgICAgIwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgdGhlIGdlbmVyYXRvciBmb3IgbWVzc2FnZSBmbGF0dGVuaW5nLgogCiAgICAgICAgIG91dGZwIGlzIHRoZSBvdXRwdXQgZmlsZS1saWtlIG9iamVjdCBmb3Igd3JpdGluZyB0aGUgbWVzc2FnZSB0by4gIEl0CkBAIC00OSwxNiArNTIsMjIgQEAKICAgICAgICAgZGVmaW5lZCBpbiB0aGUgSGVhZGVyIGNsYXNzLiAgU2V0IG1heGhlYWRlcmxlbiB0byB6ZXJvIHRvIGRpc2FibGUKICAgICAgICAgaGVhZGVyIHdyYXBwaW5nLiAgVGhlIGRlZmF1bHQgaXMgNzgsIGFzIHJlY29tbWVuZGVkIChidXQgbm90IHJlcXVpcmVkKQogICAgICAgICBieSBSRkMgMjgyMi4KKworICAgICAgICBUaGUgcG9saWN5IGtleXdvcmQgc3BlY2lmaWVzIGEgcG9saWN5IG9iamVjdCB0aGF0IGNvbnRyb2xzIGEgbnVtYmVyIG9mCisgICAgICAgIGFzcGVjdHMgb2YgdGhlIGdlbmVyYXRvcidzIG9wZXJhdGlvbi4gIFRoZSBkZWZhdWx0IHBvbGljeSBtYWludGFpbnMKKyAgICAgICAgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKwogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fZnAgPSBvdXRmcAogICAgICAgICBzZWxmLl9tYW5nbGVfZnJvbV8gPSBtYW5nbGVfZnJvbV8KLSAgICAgICAgc2VsZi5fbWF4aGVhZGVybGVuID0gbWF4aGVhZGVybGVuCisgICAgICAgIHNlbGYubWF4aGVhZGVybGVuID0gbWF4aGVhZGVybGVuCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgICMgSnVzdCBkZWxlZ2F0ZSB0byB0aGUgZmlsZSBvYmplY3QKICAgICAgICAgc2VsZi5fZnAud3JpdGUocykKIAotICAgIGRlZiBmbGF0dGVuKHNlbGYsIG1zZywgdW5peGZyb209RmFsc2UsIGxpbmVzZXA9J1xuJyk6CisgICAgZGVmIGZsYXR0ZW4oc2VsZiwgbXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKToKICAgICAgICAgciIiIlByaW50IHRoZSBtZXNzYWdlIG9iamVjdCB0cmVlIHJvb3RlZCBhdCBtc2cgdG8gdGhlIG91dHB1dCBmaWxlCiAgICAgICAgIHNwZWNpZmllZCB3aGVuIHRoZSBHZW5lcmF0b3IgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuCiAKQEAgLTcwLDI5ICs3OSw0NyBAQAogICAgICAgICBOb3RlIHRoYXQgZm9yIHN1Ym9iamVjdHMsIG5vIEZyb21fIGxpbmUgaXMgcHJpbnRlZC4KIAogICAgICAgICBsaW5lc2VwIHNwZWNpZmllcyB0aGUgY2hhcmFjdGVycyB1c2VkIHRvIGluZGljYXRlIGEgbmV3IGxpbmUgaW4KLSAgICAgICAgdGhlIG91dHB1dC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBtb3N0IHVzZWZ1bCBmb3IgdHlwaWNhbAotICAgICAgICBQeXRob24gYXBwbGljYXRpb25zLCBidXQgaXQgY2FuIGJlIHNldCB0byBcclxuIHRvIHByb2R1Y2UgUkZDLWNvbXBsaWFudAotICAgICAgICBsaW5lIHNlcGFyYXRvcnMgd2hlbiBuZWVkZWQuCisgICAgICAgIHRoZSBvdXRwdXQuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBwb2xpY3kuCiAKICAgICAgICAgIiIiCiAgICAgICAgICMgV2UgdXNlIHRoZSBfWFhYIGNvbnN0YW50cyBmb3Igb3BlcmF0aW5nIG9uIGRhdGEgdGhhdCBjb21lcyBkaXJlY3RseQogICAgICAgICAjIGZyb20gdGhlIG1zZywgYW5kIF9lbmNvZGVkX1hYWCBjb25zdGFudHMgZm9yIG9wZXJhdGluZyBvbiBkYXRhIHRoYXQKICAgICAgICAgIyBoYXMgYWxyZWFkeSBiZWVuIGNvbnZlcnRlZCAodG8gYnl0ZXMgaW4gdGhlIEJ5dGVzR2VuZXJhdG9yKSBhbmQKICAgICAgICAgIyBpbnNlcnRlZCBpbnRvIGEgdGVtcG9yYXJ5IGJ1ZmZlci4KLSAgICAgICAgc2VsZi5fTkwgPSBsaW5lc2VwCi0gICAgICAgIHNlbGYuX2VuY29kZWRfTkwgPSBzZWxmLl9lbmNvZGUobGluZXNlcCkKKyAgICAgICAgcG9saWN5ID0gbXNnLnBvbGljeSBpZiBzZWxmLnBvbGljeSBpcyBOb25lIGVsc2Ugc2VsZi5wb2xpY3kKKyAgICAgICAgaWYgbGluZXNlcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IHBvbGljeS5jbG9uZShsaW5lc2VwPWxpbmVzZXApCisgICAgICAgIGlmIHNlbGYubWF4aGVhZGVybGVuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcG9saWN5ID0gcG9saWN5LmNsb25lKG1heF9saW5lX2xlbmd0aD1zZWxmLm1heGhlYWRlcmxlbikKKyAgICAgICAgc2VsZi5fTkwgPSBwb2xpY3kubGluZXNlcAorICAgICAgICBzZWxmLl9lbmNvZGVkX05MID0gc2VsZi5fZW5jb2RlKHNlbGYuX05MKQogICAgICAgICBzZWxmLl9FTVBUWSA9ICcnCiAgICAgICAgIHNlbGYuX2VuY29kZWRfRU1UUFkgPSBzZWxmLl9lbmNvZGUoJycpCi0gICAgICAgIGlmIHVuaXhmcm9tOgotICAgICAgICAgICAgdWZyb20gPSBtc2cuZ2V0X3VuaXhmcm9tKCkKLSAgICAgICAgICAgIGlmIG5vdCB1ZnJvbToKLSAgICAgICAgICAgICAgICB1ZnJvbSA9ICdGcm9tIG5vYm9keSAnICsgdGltZS5jdGltZSh0aW1lLnRpbWUoKSkKLSAgICAgICAgICAgIHNlbGYud3JpdGUodWZyb20gKyBzZWxmLl9OTCkKLSAgICAgICAgc2VsZi5fd3JpdGUobXNnKQorICAgICAgICAjIEJlY2F1c2Ugd2UgdXNlIGNsb25lIChiZWxvdykgd2hlbiB3ZSByZWN1cnNpdmVseSBwcm9jZXNzIG1lc3NhZ2UKKyAgICAgICAgIyBzdWJwYXJ0cywgYW5kIGJlY2F1c2UgY2xvbmUgdXNlcyB0aGUgY29tcHV0ZWQgcG9saWN5IChub3QgTm9uZSksCisgICAgICAgICMgc3VibWVzc2FnZXMgd2lsbCBhdXRvbWF0aWNhbGx5IGdldCBzZXQgdG8gdGhlIGNvbXB1dGVkIHBvbGljeSB3aGVuCisgICAgICAgICMgdGhleSBhcmUgcHJvY2Vzc2VkIGJ5IHRoaXMgY29kZS4KKyAgICAgICAgb2xkX2dlbl9wb2xpY3kgPSBzZWxmLnBvbGljeQorICAgICAgICBvbGRfbXNnX3BvbGljeSA9IG1zZy5wb2xpY3kKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgICAgIG1zZy5wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgICAgIGlmIHVuaXhmcm9tOgorICAgICAgICAgICAgICAgIHVmcm9tID0gbXNnLmdldF91bml4ZnJvbSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHVmcm9tOgorICAgICAgICAgICAgICAgICAgICB1ZnJvbSA9ICdGcm9tIG5vYm9keSAnICsgdGltZS5jdGltZSh0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHVmcm9tICsgc2VsZi5fTkwpCisgICAgICAgICAgICBzZWxmLl93cml0ZShtc2cpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnBvbGljeSA9IG9sZF9nZW5fcG9saWN5CisgICAgICAgICAgICBtc2cucG9saWN5ID0gb2xkX21zZ19wb2xpY3kKIAogICAgIGRlZiBjbG9uZShzZWxmLCBmcCk6CiAgICAgICAgICIiIkNsb25lIHRoaXMgZ2VuZXJhdG9yIHdpdGggdGhlIGV4YWN0IHNhbWUgb3B0aW9ucy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGZwLCBzZWxmLl9tYW5nbGVfZnJvbV8sIHNlbGYuX21heGhlYWRlcmxlbikKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGZwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWFuZ2xlX2Zyb21fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgIyBVc2UgcG9saWN5IHNldHRpbmcsIHdoaWNoIHdlJ3ZlIGFkanVzdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5wb2xpY3kpCiAKICAgICAjCiAgICAgIyBQcm90ZWN0ZWQgaW50ZXJmYWNlIC0gdW5kb2N1bWVudGVkIDsvCkBAIC0xNjcsMTYgKzE5NCw4IEBACiAgICAgIwogCiAgICAgZGVmIF93cml0ZV9oZWFkZXJzKHNlbGYsIG1zZyk6Ci0gICAgICAgIGZvciBoLCB2IGluIG1zZy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi53cml0ZSgnJXM6ICcgJSBoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBIZWFkZXIpOgotICAgICAgICAgICAgICAgIHNlbGYud3JpdGUodi5lbmNvZGUoCi0gICAgICAgICAgICAgICAgICAgIG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuLCBsaW5lc2VwPXNlbGYuX05MKStzZWxmLl9OTCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBIZWFkZXIncyBnb3QgbG90cyBvZiBzbWFydHMsIHNvIHVzZSBpdC4KLSAgICAgICAgICAgICAgICBoZWFkZXIgPSBIZWFkZXIodiwgbWF4bGluZWxlbj1zZWxmLl9tYXhoZWFkZXJsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9uYW1lPWgpCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZShoZWFkZXIuZW5jb2RlKGxpbmVzZXA9c2VsZi5fTkwpK3NlbGYuX05MKQorICAgICAgICBmb3IgaCwgdiBpbiBtc2cucmF3X2l0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLndyaXRlKHNlbGYucG9saWN5LmZvbGQoaCwgdikpCiAgICAgICAgICMgQSBibGFuayBsaW5lIGFsd2F5cyBzZXBhcmF0ZXMgaGVhZGVycyBmcm9tIGJvZHkKICAgICAgICAgc2VsZi53cml0ZShzZWxmLl9OTCkKIApAQCAtMjY1LDEyICsyODQsMTIgQEAKICAgICAgICAgIyBUaGUgY29udGVudHMgb2Ygc2lnbmVkIHBhcnRzIGhhcyB0byBzdGF5IHVubW9kaWZpZWQgaW4gb3JkZXIgdG8ga2VlcAogICAgICAgICAjIHRoZSBzaWduYXR1cmUgaW50YWN0IHBlciBSRkMxODQ3IDIuMSwgc28gd2UgZGlzYWJsZSBoZWFkZXIgd3JhcHBpbmcuCiAgICAgICAgICMgUkRNOiBUaGlzIGlzbid0IGVub3VnaCB0byBjb21wbGV0ZWx5IHByZXNlcnZlIHRoZSBwYXJ0LCBidXQgaXQgaGVscHMuCi0gICAgICAgIG9sZF9tYXhoZWFkZXJsZW4gPSBzZWxmLl9tYXhoZWFkZXJsZW4KKyAgICAgICAgcCA9IHNlbGYucG9saWN5CisgICAgICAgIHNlbGYucG9saWN5ID0gcC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbWF4aGVhZGVybGVuID0gMAogICAgICAgICAgICAgc2VsZi5faGFuZGxlX211bHRpcGFydChtc2cpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9tYXhoZWFkZXJsZW4gPSBvbGRfbWF4aGVhZGVybGVuCisgICAgICAgICAgICBzZWxmLnBvbGljeSA9IHAKIAogICAgIGRlZiBfaGFuZGxlX21lc3NhZ2VfZGVsaXZlcnlfc3RhdHVzKHNlbGYsIG1zZyk6CiAgICAgICAgICMgV2UgY2FuJ3QganVzdCB3cml0ZSB0aGUgaGVhZGVycyBkaXJlY3RseSB0byBzZWxmJ3MgZmlsZSBvYmplY3QKQEAgLTMwNSwxMCArMzI0LDEyIEBACiAgICAgICAgICMgbWVzc2FnZS9yZmM4MjIuICBTdWNoIG1lc3NhZ2VzIGFyZSBnZW5lcmF0ZWQgYnksIGZvciBleGFtcGxlLAogICAgICAgICAjIEdyb3Vwd2lzZSB3aGVuIGZvcndhcmRpbmcgdW5hZG9ybmVkIG1lc3NhZ2VzLiAgKElzc3VlIDc5NzAuKSAgU28KICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugd2UganVzdCBlbWl0IHRoZSBzdHJpbmcgYm9keS4KLSAgICAgICAgcGF5bG9hZCA9IG1zZy5nZXRfcGF5bG9hZCgpCisgICAgICAgIHBheWxvYWQgPSBtc2cuX3BheWxvYWQKICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBsaXN0KToKICAgICAgICAgICAgIGcuZmxhdHRlbihtc2cuZ2V0X3BheWxvYWQoMCksIHVuaXhmcm9tPUZhbHNlLCBsaW5lc2VwPXNlbGYuX05MKQogICAgICAgICAgICAgcGF5bG9hZCA9IHMuZ2V0dmFsdWUoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX2VuY29kZShwYXlsb2FkKQogICAgICAgICBzZWxmLl9mcC53cml0ZShwYXlsb2FkKQogCiAgICAgIyBUaGlzIHVzZWQgdG8gYmUgYSBtb2R1bGUgbGV2ZWwgZnVuY3Rpb247IHdlIHVzZSBhIGNsYXNzbWV0aG9kIGZvciB0aGlzCkBAIC0zNDQsNyArMzY1LDEwIEBACiAKICAgICBGdW5jdGlvbmFsbHkgaWRlbnRpY2FsIHRvIHRoZSBiYXNlIEdlbmVyYXRvciBleGNlcHQgdGhhdCB0aGUgb3V0cHV0IGlzCiAgICAgYnl0ZXMgYW5kIG5vdCBzdHJpbmcuICBXaGVuIHN1cnJvZ2F0ZXMgd2VyZSB1c2VkIGluIHRoZSBpbnB1dCB0byBlbmNvZGUKLSAgICBieXRlcywgdGhlc2UgYXJlIGRlY29kZWQgYmFjayB0byBieXRlcyBmb3Igb3V0cHV0LgorICAgIGJ5dGVzLCB0aGVzZSBhcmUgZGVjb2RlZCBiYWNrIHRvIGJ5dGVzIGZvciBvdXRwdXQuICBJZiB0aGUgcG9saWN5IGhhcworICAgIGN0ZV90eXBlIHNldCB0byA3Yml0LCB0aGVuIHRoZSBtZXNzYWdlIGlzIHRyYW5zZm9ybWVkIHN1Y2ggdGhhdCB0aGUKKyAgICBub24tQVNDSUkgYnl0ZXMgYXJlIHByb3Blcmx5IGNvbnRlbnQgdHJhbnNmZXIgZW5jb2RlZCwgdXNpbmcgdGhlIGNoYXJzZXQKKyAgICB1bmtub3duLThiaXQuCiAKICAgICBUaGUgb3V0ZnAgb2JqZWN0IG11c3QgYWNjZXB0IGJ5dGVzIGluIGl0cyB3cml0ZSBtZXRob2QuCiAgICAgIiIiCkBAIC0zNjUsMjMgKzM4OSw4IEBACiAgICAgZGVmIF93cml0ZV9oZWFkZXJzKHNlbGYsIG1zZyk6CiAgICAgICAgICMgVGhpcyBpcyBhbG1vc3QgdGhlIHNhbWUgYXMgdGhlIHN0cmluZyB2ZXJzaW9uLCBleGNlcHQgZm9yIGhhbmRsaW5nCiAgICAgICAgICMgc3RyaW5ncyB3aXRoIDhiaXQgYnl0ZXMuCi0gICAgICAgIGZvciBoLCB2IGluIG1zZy5faGVhZGVyczoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzOiAnICUgaCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgSGVhZGVyKToKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKHYuZW5jb2RlKG1heGxpbmVsZW49c2VsZi5fbWF4aGVhZGVybGVuKStzZWxmLl9OTCkKLSAgICAgICAgICAgIGVsaWYgX2hhc19zdXJyb2dhdGVzKHYpOgotICAgICAgICAgICAgICAgICMgSWYgd2UgaGF2ZSByYXcgOGJpdCBkYXRhIGluIGEgYnl0ZSBzdHJpbmcsIHdlIGhhdmUgbm8gaWRlYQotICAgICAgICAgICAgICAgICMgd2hhdCB0aGUgZW5jb2RpbmcgaXMuICBUaGVyZSBpcyBubyBzYWZlIHdheSB0byBzcGxpdCB0aGlzCi0gICAgICAgICAgICAgICAgIyBzdHJpbmcuICBJZiBpdCdzIGFzY2lpLXN1YnNldCwgdGhlbiB3ZSBjb3VsZCBkbyBhIG5vcm1hbAotICAgICAgICAgICAgICAgICMgYXNjaWkgc3BsaXQsIGJ1dCBpZiBpdCdzIG11bHRpYnl0ZSB0aGVuIHdlIGNvdWxkIGJyZWFrIHRoZQotICAgICAgICAgICAgICAgICMgc3RyaW5nLiAgVGhlcmUncyBubyB3YXkgdG8ga25vdyBzbyB0aGUgbGVhc3QgaGFybSBzZWVtcyB0bwotICAgICAgICAgICAgICAgICMgYmUgdG8gbm90IHNwbGl0IHRoZSBzdHJpbmcgYW5kIHJpc2sgaXQgYmVpbmcgdG9vIGxvbmcuCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZSh2K05MKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEhlYWRlcidzIGdvdCBsb3RzIG9mIHNtYXJ0cyBhbmQgdGhpcyBzdHJpbmcgaXMgc2FmZS4uLgotICAgICAgICAgICAgICAgIGhlYWRlciA9IEhlYWRlcih2LCBtYXhsaW5lbGVuPXNlbGYuX21heGhlYWRlcmxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25hbWU9aCkKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGhlYWRlci5lbmNvZGUobGluZXNlcD1zZWxmLl9OTCkrc2VsZi5fTkwpCisgICAgICAgIGZvciBoLCB2IGluIG1zZy5yYXdfaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuX2ZwLndyaXRlKHNlbGYucG9saWN5LmZvbGRfYmluYXJ5KGgsIHYpKQogICAgICAgICAjIEEgYmxhbmsgbGluZSBhbHdheXMgc2VwYXJhdGVzIGhlYWRlcnMgZnJvbSBib2R5CiAgICAgICAgIHNlbGYud3JpdGUoc2VsZi5fTkwpCiAKQEAgLTM5MCw3ICszOTksNyBAQAogICAgICAgICAjIGp1c3Qgd3JpdGUgaXQgYmFjayBvdXQuCiAgICAgICAgIGlmIG1zZy5fcGF5bG9hZCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIF9oYXNfc3Vycm9nYXRlcyhtc2cuX3BheWxvYWQpOgorICAgICAgICBpZiBfaGFzX3N1cnJvZ2F0ZXMobXNnLl9wYXlsb2FkKSBhbmQgbm90IHNlbGYucG9saWN5LmN0ZV90eXBlPT0nN2JpdCc6CiAgICAgICAgICAgICBpZiBzZWxmLl9tYW5nbGVfZnJvbV86CiAgICAgICAgICAgICAgICAgbXNnLl9wYXlsb2FkID0gZmNyZS5zdWIoIj5Gcm9tICIsIG1zZy5fcGF5bG9hZCkKICAgICAgICAgICAgIHNlbGYud3JpdGUobXNnLl9wYXlsb2FkKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2hlYWRlci5weSBiL0xpYi9lbWFpbC9oZWFkZXIucHkKaW5kZXggMzI1MGQzNi4uYTg5MjE5ZCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2hlYWRlci5weQorKysgYi9MaWIvZW1haWwvaGVhZGVyLnB5CkBAIC00MCw3ICs0MCw2IEBACiAgIFw/ICAgICAgICAgICAgICAgICAgICAjIGxpdGVyYWwgPwogICAoP1A8ZW5jb2RlZD4uKj8pICAgICAgIyBub24tZ3JlZWR5IHVwIHRvIHRoZSBuZXh0ID89IGlzIHRoZSBlbmNvZGVkIHN0cmluZwogICBcPz0gICAgICAgICAgICAgICAgICAgIyBsaXRlcmFsID89Ci0gICg/PVsgXHRdfCQpICAgICAgICAgICAjIHdoaXRlc3BhY2Ugb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nCiAgICcnJywgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UgfCByZS5NVUxUSUxJTkUpCiAKICMgRmllbGQgbmFtZSByZWdleHAsIGluY2x1ZGluZyB0cmFpbGluZyBjb2xvbiwgYnV0IG5vdCBzZXBhcmF0aW5nIHdoaXRlc3BhY2UsCkBAIC04Niw4ICs4NSwxMiBAQAogICAgIHdvcmRzID0gW10KICAgICBmb3IgbGluZSBpbiBoZWFkZXIuc3BsaXRsaW5lcygpOgogICAgICAgICBwYXJ0cyA9IGVjcmUuc3BsaXQobGluZSkKKyAgICAgICAgZmlyc3QgPSBUcnVlCiAgICAgICAgIHdoaWxlIHBhcnRzOgotICAgICAgICAgICAgdW5lbmNvZGVkID0gcGFydHMucG9wKDApLnN0cmlwKCkKKyAgICAgICAgICAgIHVuZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQorICAgICAgICAgICAgaWYgZmlyc3Q6CisgICAgICAgICAgICAgICAgdW5lbmNvZGVkID0gdW5lbmNvZGVkLmxzdHJpcCgpCisgICAgICAgICAgICAgICAgZmlyc3QgPSBGYWxzZQogICAgICAgICAgICAgaWYgdW5lbmNvZGVkOgogICAgICAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgodW5lbmNvZGVkLCBOb25lLCBOb25lKSkKICAgICAgICAgICAgIGlmIHBhcnRzOgpAQCAtOTUsNiArOTgsMTYgQEAKICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHBhcnRzLnBvcCgwKS5sb3dlcigpCiAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IHBhcnRzLnBvcCgwKQogICAgICAgICAgICAgICAgIHdvcmRzLmFwcGVuZCgoZW5jb2RlZCwgZW5jb2RpbmcsIGNoYXJzZXQpKQorICAgICMgTm93IGxvb3Agb3ZlciB3b3JkcyBhbmQgcmVtb3ZlIHdvcmRzIHRoYXQgY29uc2lzdCBvZiB3aGl0ZXNwYWNlCisgICAgIyBiZXR3ZWVuIHR3byBlbmNvZGVkIHN0cmluZ3MuCisgICAgaW1wb3J0IHN5cworICAgIGRyb3BsaXN0ID0gW10KKyAgICBmb3IgbiwgdyBpbiBlbnVtZXJhdGUod29yZHMpOgorICAgICAgICBpZiBuPjEgYW5kIHdbMV0gYW5kIHdvcmRzW24tMl1bMV0gYW5kIHdvcmRzW24tMV1bMF0uaXNzcGFjZSgpOgorICAgICAgICAgICAgZHJvcGxpc3QuYXBwZW5kKG4tMSkKKyAgICBmb3IgZCBpbiByZXZlcnNlZChkcm9wbGlzdCk6CisgICAgICAgIGRlbCB3b3Jkc1tkXQorCiAgICAgIyBUaGUgbmV4dCBzdGVwIGlzIHRvIGRlY29kZSBlYWNoIGVuY29kZWQgd29yZCBieSBhcHBseWluZyB0aGUgcmV2ZXJzZQogICAgICMgYmFzZTY0IG9yIHF1b3ByaSB0cmFuc2Zvcm1hdGlvbi4gIGRlY29kZWRfd29yZHMgaXMgbm93IGEgbGlzdCBvZiB0aGUKICAgICAjIGZvcm0gKGRlY29kZWRfd29yZCwgY2hhcnNldCkuCkBAIC0yMTcsMjIgKzIzMCwyNyBAQAogICAgICAgICBzZWxmLl9ub3JtYWxpemUoKQogICAgICAgICB1Y2h1bmtzID0gW10KICAgICAgICAgbGFzdGNzID0gTm9uZQorICAgICAgICBsYXN0c3BhY2UgPSBOb25lCiAgICAgICAgIGZvciBzdHJpbmcsIGNoYXJzZXQgaW4gc2VsZi5fY2h1bmtzOgogICAgICAgICAgICAgIyBXZSBtdXN0IHByZXNlcnZlIHNwYWNlcyBiZXR3ZWVuIGVuY29kZWQgYW5kIG5vbi1lbmNvZGVkIHdvcmQKICAgICAgICAgICAgICMgYm91bmRhcmllcywgd2hpY2ggbWVhbnMgZm9yIHVzIHdlIG5lZWQgdG8gYWRkIGEgc3BhY2Ugd2hlbiB3ZSBnbwogICAgICAgICAgICAgIyBmcm9tIGEgY2hhcnNldCB0byBOb25lL3VzLWFzY2lpLCBvciBmcm9tIE5vbmUvdXMtYXNjaWkgdG8gYQogICAgICAgICAgICAgIyBjaGFyc2V0LiAgT25seSBkbyB0aGlzIGZvciB0aGUgc2Vjb25kIGFuZCBzdWJzZXF1ZW50IGNodW5rcy4KKyAgICAgICAgICAgICMgRG9uJ3QgYWRkIGEgc3BhY2UgaWYgdGhlIE5vbmUvdXMtYXNjaWkgc3RyaW5nIGFscmVhZHkgaGFzCisgICAgICAgICAgICAjIGEgc3BhY2UgKHRyYWlsaW5nIG9yIGxlYWRpbmcgZGVwZW5kaW5nIG9uIHRyYW5zaXRpb24pCiAgICAgICAgICAgICBuZXh0Y3MgPSBjaGFyc2V0CiAgICAgICAgICAgICBpZiBuZXh0Y3MgPT0gX2NoYXJzZXQuVU5LTk9XTjhCSVQ6CiAgICAgICAgICAgICAgICAgb3JpZ2luYWxfYnl0ZXMgPSBzdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgICAgIHN0cmluZyA9IG9yaWdpbmFsX2J5dGVzLmRlY29kZSgnYXNjaWknLCAncmVwbGFjZScpCiAgICAgICAgICAgICBpZiB1Y2h1bmtzOgorICAgICAgICAgICAgICAgIGhhc3NwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbMF0pCiAgICAgICAgICAgICAgICAgaWYgbGFzdGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5leHRjcyBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjcyBpbiAoTm9uZSwgJ3VzLWFzY2lpJykgYW5kIG5vdCBoYXNzcGFjZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKFNQQUNFKQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNzID0gTm9uZQotICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNzIG5vdCBpbiAoTm9uZSwgJ3VzLWFzY2lpJyk6CisgICAgICAgICAgICAgICAgZWxpZiBuZXh0Y3Mgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKICAgICAgICAgICAgICAgICAgICAgdWNodW5rcy5hcHBlbmQoU1BBQ0UpCisgICAgICAgICAgICBsYXN0c3BhY2UgPSBzdHJpbmcgYW5kIHNlbGYuX25vbmN0ZXh0KHN0cmluZ1stMV0pCiAgICAgICAgICAgICBsYXN0Y3MgPSBuZXh0Y3MKICAgICAgICAgICAgIHVjaHVua3MuYXBwZW5kKHN0cmluZykKICAgICAgICAgcmV0dXJuIEVNUFRZU1RSSU5HLmpvaW4odWNodW5rcykKQEAgLTI5MSw2ICszMDksMTEgQEAKICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gVVRGOAogICAgICAgICBzZWxmLl9jaHVua3MuYXBwZW5kKChzLCBjaGFyc2V0KSkKIAorICAgIGRlZiBfbm9uY3RleHQoc2VsZiwgcyk6CisgICAgICAgICIiIlRydWUgaWYgc3RyaW5nIHMgaXMgbm90IGEgY3RleHQgY2hhcmFjdGVyIG9mIFJGQzgyMi4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzLmlzc3BhY2UoKSBvciBzIGluICgnKCcsICcpJywgJ1xcJykKKwogICAgIGRlZiBlbmNvZGUoc2VsZiwgc3BsaXRjaGFycz0nOywgXHQnLCBtYXhsaW5lbGVuPU5vbmUsIGxpbmVzZXA9J1xuJyk6CiAgICAgICAgIHIiIiJFbmNvZGUgYSBtZXNzYWdlIGhlYWRlciBpbnRvIGFuIFJGQy1jb21wbGlhbnQgZm9ybWF0LgogCkBAIC0zMzQsNyArMzU3LDIwIEBACiAgICAgICAgICAgICBtYXhsaW5lbGVuID0gMTAwMDAwMAogICAgICAgICBmb3JtYXR0ZXIgPSBfVmFsdWVGb3JtYXR0ZXIoc2VsZi5faGVhZGVybGVuLCBtYXhsaW5lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udGludWF0aW9uX3dzLCBzcGxpdGNoYXJzKQorICAgICAgICBsYXN0Y3MgPSBOb25lCisgICAgICAgIGhhc3NwYWNlID0gbGFzdHNwYWNlID0gTm9uZQogICAgICAgICBmb3Igc3RyaW5nLCBjaGFyc2V0IGluIHNlbGYuX2NodW5rczoKKyAgICAgICAgICAgIGlmIGhhc3NwYWNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGhhc3NwYWNlID0gc3RyaW5nIGFuZCBzZWxmLl9ub25jdGV4dChzdHJpbmdbMF0pCisgICAgICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgICAgIGlmIGxhc3RjcyBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgaGFzc3BhY2Ugb3IgY2hhcnNldCBub3QgaW4gKE5vbmUsICd1cy1hc2NpaScpOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKKyAgICAgICAgICAgICAgICBlbGlmIGNoYXJzZXQgbm90IGluIChOb25lLCAndXMtYXNjaWknKSBhbmQgbm90IGxhc3RzcGFjZToKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmFkZF90cmFuc2l0aW9uKCkKKyAgICAgICAgICAgIGxhc3RzcGFjZSA9IHN0cmluZyBhbmQgc2VsZi5fbm9uY3RleHQoc3RyaW5nWy0xXSkKKyAgICAgICAgICAgIGxhc3RjcyA9IGNoYXJzZXQKKyAgICAgICAgICAgIGhhc3NwYWNlID0gRmFsc2UKICAgICAgICAgICAgIGxpbmVzID0gc3RyaW5nLnNwbGl0bGluZXMoKQogICAgICAgICAgICAgaWYgbGluZXM6CiAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmZlZWQoJycsIGxpbmVzWzBdLCBjaGFyc2V0KQpAQCAtMzUxLDYgKzM4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlci5mZWVkKGZ3cywgc2xpbmUsIGNoYXJzZXQpCiAgICAgICAgICAgICBpZiBsZW4obGluZXMpID4gMToKICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIubmV3bGluZSgpCisgICAgICAgIGlmIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCiAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVyLl9zdHIobGluZXNlcCkKICAgICAgICAgaWYgX2VtYmVkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZhZTk1MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMCwwICsxLDU4MyBAQAorIiIiUmVwcmVzZW50aW5nIGFuZCBtYW5pcHVsYXRpbmcgZW1haWwgaGVhZGVycyB2aWEgY3VzdG9tIG9iamVjdHMuCisKK1RoaXMgbW9kdWxlIHByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIZWFkZXJSZWdpc3RyeSBBUEkuCitUaGUgaW1wbGVtZW50YXRpb24gaXMgZGVzaWduZWQgdG8gZmxleGlibHkgZm9sbG93IFJGQzUzMjIgcnVsZXMuCisKK0V2ZW50dWFsbHkgSGVhZGVyUmVnaXN0cnkgd2lsbCBiZSBhIHB1YmxpYyBBUEksIGJ1dCBpdCBpc24ndCB5ZXQsCithbmQgd2lsbCBwcm9iYWJseSBjaGFuZ2Ugc29tZSBiZWZvcmUgdGhhdCBoYXBwZW5zLgorCisiIiIKKworZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgX2hlYWRlcl92YWx1ZV9wYXJzZXIgYXMgcGFyc2VyCisKK2NsYXNzIEFkZHJlc3M6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlzcGxheV9uYW1lPScnLCB1c2VybmFtZT0nJywgZG9tYWluPScnLCBhZGRyX3NwZWM9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZXRpbmcgYSBmdWxsIGVtYWlsIGFkZHJlc3MuCisKKyAgICAgICAgQW4gYWRkcmVzcyBjYW4gaGF2ZSBhICdkaXNwbGF5X25hbWUnLCBhICd1c2VybmFtZScsIGFuZCBhICdkb21haW4nLiAgSW4KKyAgICAgICAgYWRkaXRpb24gdG8gc3BlY2lmeWluZyB0aGUgdXNlcm5hbWUgYW5kIGRvbWFpbiBzZXBhcmF0ZWx5LCB0aGV5IG1heSBiZQorICAgICAgICBzcGVjaWZpZWQgdG9nZXRoZXIgYnkgdXNpbmcgdGhlIGFkZHJfc3BlYyBrZXl3b3JkICppbnN0ZWFkIG9mKiB0aGUKKyAgICAgICAgdXNlcm5hbWUgYW5kIGRvbWFpbiBrZXl3b3Jkcy4gIElmIGFuIGFkZHJfc3BlYyBzdHJpbmcgaXMgc3BlY2lmaWVkIGl0CisgICAgICAgIG11c3QgYmUgcHJvcGVybHkgcXVvdGVkIGFjY29yZGluZyB0byBSRkMgNTMyMiBydWxlczsgYW4gZXJyb3Igd2lsbCBiZQorICAgICAgICByYWlzZWQgaWYgaXQgaXMgbm90LgorCisgICAgICAgIEFuIEFkZHJlc3Mgb2JqZWN0IGhhcyBkaXNwbGF5X25hbWUsIHVzZXJuYW1lLCBkb21haW4sIGFuZCBhZGRyX3NwZWMKKyAgICAgICAgYXR0cmlidXRlcywgYWxsIG9mIHdoaWNoIGFyZSByZWFkLW9ubHkuICBUaGUgYWRkcl9zcGVjIGFuZCB0aGUgc3RyaW5nCisgICAgICAgIHZhbHVlIG9mIHRoZSBvYmplY3QgYXJlIGJvdGggcXVvdGVkIGFjY29yZGluZyB0byBSRkM1MzIyIHJ1bGVzLCBidXQKKyAgICAgICAgd2l0aG91dCBhbnkgQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZy4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBUaGlzIGNsYXVzZSB3aXRoIGl0cyBwb3RlbnRpYWwgJ3JhaXNlJyBtYXkgb25seSBoYXBwZW4gd2hlbiBhbgorICAgICAgICAjIGFwcGxpY2F0aW9uIHByb2dyYW0gY3JlYXRlcyBhbiBBZGRyZXNzIG9iamVjdCB1c2luZyBhbiBhZGRyX3NwZWMKKyAgICAgICAgIyBrZXl3b3JkLiAgVGhlIGVtYWlsIGxpYnJhcnkgY29kZSBpdHNlbGYgbXVzdCBhbHdheXMgc3VwcGx5IHVzZXJuYW1lCisgICAgICAgICMgYW5kIGRvbWFpbi4KKyAgICAgICAgaWYgYWRkcl9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgdXNlcm5hbWUgb3IgZG9tYWluOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiYWRkcnNwZWMgc3BlY2lmaWVkIHdoZW4gdXNlcm5hbWUgYW5kL29yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbWFpbiBhbHNvIHNwZWNpZmllZCIpCisgICAgICAgICAgICBhX3MsIHJlc3QgPSBwYXJzZXIuZ2V0X2FkZHJfc3BlYyhhZGRyX3NwZWMpCisgICAgICAgICAgICBpZiByZXN0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYWRkcl9zcGVjOyBvbmx5ICd7fScgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIGJlIHBhcnNlZCBmcm9tICd7fSciLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfcywgYWRkcl9zcGVjKSkKKyAgICAgICAgICAgIGlmIGFfcy5hbGxfZGVmZWN0czoKKyAgICAgICAgICAgICAgICByYWlzZSBhX3MuYWxsX2RlZmVjdHNbMF0KKyAgICAgICAgICAgIHVzZXJuYW1lID0gYV9zLmxvY2FsX3BhcnQKKyAgICAgICAgICAgIGRvbWFpbiA9IGFfcy5kb21haW4KKyAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCisgICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKKyAgICAgICAgc2VsZi5fZG9tYWluID0gZG9tYWluCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGlzcGxheV9uYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdXNlcm5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl91c2VybmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRvbWFpbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RvbWFpbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgIiIiVGhlIGFkZHJfc3BlYyAodXNlcm5hbWVAZG9tYWluKSBwb3J0aW9uIG9mIHRoZSBhZGRyZXNzLCBxdW90ZWQKKyAgICAgICAgYWNjb3JkaW5nIHRvIFJGQyA1MzIyIHJ1bGVzLCBidXQgd2l0aCBubyBDb250ZW50IFRyYW5zZmVyIEVuY29kaW5nLgorICAgICAgICAiIiIKKyAgICAgICAgbmFtZXNldCA9IHNldChzZWxmLnVzZXJuYW1lKQorICAgICAgICBpZiBsZW4obmFtZXNldCkgPiBsZW4obmFtZXNldC1wYXJzZXIuRE9UX0FUT01fRU5EUyk6CisgICAgICAgICAgICBscCA9IHBhcnNlci5xdW90ZV9zdHJpbmcoc2VsZi51c2VybmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxwID0gc2VsZi51c2VybmFtZQorICAgICAgICBpZiBzZWxmLmRvbWFpbjoKKyAgICAgICAgICAgIHJldHVybiBscCArICdAJyArIHNlbGYuZG9tYWluCisgICAgICAgIGlmIG5vdCBscDoKKyAgICAgICAgICAgIHJldHVybiAnPD4nCisgICAgICAgIHJldHVybiBscAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkFkZHJlc3MoZGlzcGxheV9uYW1lPXshcn0sIHVzZXJuYW1lPXshcn0sIGRvbWFpbj17IXJ9KSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaXNwbGF5X25hbWUsIHNlbGYudXNlcm5hbWUsIHNlbGYuZG9tYWluKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIG5hbWVzZXQgPSBzZXQoc2VsZi5kaXNwbGF5X25hbWUpCisgICAgICAgIGlmIGxlbihuYW1lc2V0KSA+IGxlbihuYW1lc2V0LXBhcnNlci5TUEVDSUFMUyk6CisgICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhzZWxmLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQorICAgICAgICBpZiBkaXNwOgorICAgICAgICAgICAgYWRkcl9zcGVjID0gJycgaWYgc2VsZi5hZGRyX3NwZWM9PSc8PicgZWxzZSBzZWxmLmFkZHJfc3BlYworICAgICAgICAgICAgcmV0dXJuICJ7fSA8e30+Ii5mb3JtYXQoZGlzcCwgYWRkcl9zcGVjKQorICAgICAgICByZXR1cm4gc2VsZi5hZGRyX3NwZWMKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiB0eXBlKG90aGVyKSAhPSB0eXBlKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAoc2VsZi5kaXNwbGF5X25hbWUgPT0gb3RoZXIuZGlzcGxheV9uYW1lIGFuZAorICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUgPT0gb3RoZXIudXNlcm5hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5kb21haW4gPT0gb3RoZXIuZG9tYWluKQorCisKK2NsYXNzIEdyb3VwOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpc3BsYXlfbmFtZT1Ob25lLCBhZGRyZXNzZXM9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGFuIGFkZHJlc3MgZ3JvdXAuCisKKyAgICAgICAgQW4gYWRkcmVzcyBncm91cCBjb25zaXN0cyBvZiBhIGRpc3BsYXlfbmFtZSBmb2xsb3dlZCBieSBjb2xvbiBhbmQgYW4KKyAgICAgICAgbGlzdCBvZiBhZGRyZXNzZXMgKHNlZSBBZGRyZXNzKSB0ZXJtaW5hdGVkIGJ5IGEgc2VtaS1jb2xvbi4gIFRoZSBHcm91cAorICAgICAgICBpcyBjcmVhdGVkIGJ5IHNwZWNpZnlpbmcgYSBkaXNwbGF5X25hbWUgYW5kIGEgcG9zc2libHkgZW1wdHkgbGlzdCBvZgorICAgICAgICBBZGRyZXNzIG9iamVjdHMuICBBIEdyb3VwIGNhbiBhbHNvIGJlIHVzZWQgdG8gcmVwcmVzZW50IGEgc2luZ2xlCisgICAgICAgIGFkZHJlc3MgdGhhdCBpcyBub3QgaW4gYSBncm91cCwgd2hpY2ggaXMgY29udmVuaWVudCB3aGVuIG1hbmlwdWxhdGluZworICAgICAgICBsaXN0cyB0aGF0IGFyZSBhIGNvbWJpbmF0aW9uIG9mIEdyb3VwcyBhbmQgaW5kaXZpZHVhbCBBZGRyZXNzZXMuICBJbgorICAgICAgICB0aGlzIGNhc2UgdGhlIGRpc3BsYXlfbmFtZSBzaG91bGQgYmUgc2V0IHRvIE5vbmUuICBJbiBwYXJ0aWN1bGFyLCB0aGUKKyAgICAgICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgR3JvdXAgd2hvc2UgZGlzcGxheV9uYW1lIGlzIE5vbmUgaXMgdGhlIHNhbWUKKyAgICAgICAgYXMgdGhlIEFkZHJlc3Mgb2JqZWN0LCBpZiB0aGVyZSBpcyBvbmUgYW5kIG9ubHkgb25lIEFkZHJlc3Mgb2JqZWN0IGluCisgICAgICAgIHRoZSBhZGRyZXNzZXMgbGlzdC4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZGlzcGxheV9uYW1lID0gZGlzcGxheV9uYW1lCisgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IHR1cGxlKGFkZHJlc3NlcykgaWYgYWRkcmVzc2VzIGVsc2UgdHVwbGUoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Rpc3BsYXlfbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NlcworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkdyb3VwKGRpc3BsYXlfbmFtZT17IXJ9LCBhZGRyZXNzZXM9eyFyfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICBzZWxmLmRpc3BsYXlfbmFtZSwgc2VsZi5hZGRyZXNzZXMpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5kaXNwbGF5X25hbWUgaXMgTm9uZSBhbmQgbGVuKHNlbGYuYWRkcmVzc2VzKT09MToKKyAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi5hZGRyZXNzZXNbMF0pCisgICAgICAgIGRpc3AgPSBzZWxmLmRpc3BsYXlfbmFtZQorICAgICAgICBpZiBkaXNwIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbmFtZXNldCA9IHNldChkaXNwKQorICAgICAgICAgICAgaWYgbGVuKG5hbWVzZXQpID4gbGVuKG5hbWVzZXQtcGFyc2VyLlNQRUNJQUxTKToKKyAgICAgICAgICAgICAgICBkaXNwID0gcGFyc2VyLnF1b3RlX3N0cmluZyhkaXNwKQorICAgICAgICBhZHJzdHIgPSAiLCAiLmpvaW4oc3RyKHgpIGZvciB4IGluIHNlbGYuYWRkcmVzc2VzKQorICAgICAgICBhZHJzdHIgPSAnICcgKyBhZHJzdHIgaWYgYWRyc3RyIGVsc2UgYWRyc3RyCisgICAgICAgIHJldHVybiAie306e307Ii5mb3JtYXQoZGlzcCwgYWRyc3RyKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHR5cGUob3RoZXIpICE9IHR5cGUoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIChzZWxmLmRpc3BsYXlfbmFtZSA9PSBvdGhlci5kaXNwbGF5X25hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzZXMgPT0gb3RoZXIuYWRkcmVzc2VzKQorCisKKyMgSGVhZGVyIENsYXNzZXMgIworCitjbGFzcyBCYXNlSGVhZGVyKHN0cik6CisKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBtZXNzYWdlIGhlYWRlcnMuCisKKyAgICBJbXBsZW1lbnRzIGdlbmVyaWMgYmVoYXZpb3IgYW5kIHByb3ZpZGVzIHRvb2xzIGZvciBzdWJjbGFzc2VzLgorCisgICAgQSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhIGNsYXNzbWV0aG9kIG5hbWVkICdwYXJzZScgdGhhdCB0YWtlcyBhbiB1bmZvbGRlZAorICAgIHZhbHVlIHN0cmluZyBhbmQgYSBkaWN0aW9uYXJ5IGFzIGl0cyBhcmd1bWVudHMuICBUaGUgZGljdGlvbmFyeSB3aWxsCisgICAgY29udGFpbiBvbmUga2V5LCAnZGVmZWN0cycsIGluaXRpYWxpemVkIHRvIGFuIGVtcHR5IGxpc3QuICBBZnRlciB0aGUgY2FsbAorICAgIHRoZSBkaWN0aW9uYXJ5IG11c3QgY29udGFpbiB0d28gYWRkaXRpb25hbCBrZXlzOiBwYXJzZV90cmVlLCBzZXQgdG8gdGhlCisgICAgcGFyc2UgdHJlZSBvYnRhaW5lZCBmcm9tIHBhcnNpbmcgdGhlIGhlYWRlciwgYW5kICdkZWNvZGVkJywgc2V0IHRvIHRoZQorICAgIHN0cmluZyB2YWx1ZSBvZiB0aGUgaWRlYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGZyb20gdGhlIHZhbHVlLgorICAgIChUaGF0IGlzLCBlbmNvZGVkIHdvcmRzIGFyZSBkZWNvZGVkLCBhbmQgdmFsdWVzIHRoYXQgaGF2ZSBjYW5vbmljYWwKKyAgICByZXByZXNlbnRhdGlvbnMgYXJlIHNvIHJlcHJlc2VudGVkLikKKworICAgIFRoZSBkZWZlY3RzIGtleSBpcyBpbnRlbmRlZCB0byBjb2xsZWN0IHBhcnNpbmcgZGVmZWN0cywgd2hpY2ggdGhlIG1lc3NhZ2UKKyAgICBwYXJzZXIgd2lsbCBzdWJzZXF1ZW50bHkgZGlzcG9zZSBvZiBhcyBhcHByb3ByaWF0ZS4gIFRoZSBwYXJzZXIgc2hvdWxkIG5vdCwKKyAgICBpbnNvZmFyIGFzIHByYWN0aWNhbCwgcmFpc2UgYW55IGVycm9ycy4gIERlZmVjdHMgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZQorICAgIGxpc3QgaW5zdGVhZC4gIFRoZSBzdGFuZGFyZCBoZWFkZXIgcGFyc2VycyByZWdpc3RlciBkZWZlY3RzIGZvciBSRkMKKyAgICBjb21wbGlhbmNlIGlzc3VlcywgZm9yIG9ic29sZXRlIFJGQyBzeW50YXgsIGFuZCBmb3IgdW5yZWNvdmVyYWJsZSBwYXJzaW5nCisgICAgZXJyb3JzLgorCisgICAgVGhlIHBhcnNlIG1ldGhvZCBtYXkgYWRkIGFkZGl0aW9uYWwga2V5cyB0byB0aGUgZGljdGlvbmFyeS4gIEluIHRoaXMgY2FzZQorICAgIHRoZSBzdWJjbGFzcyBtdXN0IGRlZmluZSBhbiAnaW5pdCcgbWV0aG9kLCB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aGUKKyAgICBkaWN0aW9uYXJ5IGFzIGl0cyBrZXl3b3JkIGFyZ3VtZW50cy4gIFRoZSBtZXRob2Qgc2hvdWxkIHVzZSAodXN1YWxseSBieQorICAgIHNldHRpbmcgdGhlbSBhcyB0aGUgdmFsdWUgb2Ygc2ltaWxhcmx5IG5hbWVkIGF0dHJpYnV0ZXMpIGFuZCByZW1vdmUgYWxsIHRoZQorICAgIGV4dHJhIGtleXMgYWRkZWQgYnkgaXRzIHBhcnNlIG1ldGhvZCwgYW5kIHRoZW4gdXNlIHN1cGVyIHRvIGNhbGwgaXRzIHBhcmVudAorICAgIGNsYXNzIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYW5kIGtleXdvcmRzLgorCisgICAgVGhlIHN1YmNsYXNzIHNob3VsZCBhbHNvIG1ha2Ugc3VyZSB0aGF0IGEgJ21heF9jb3VudCcgYXR0cmlidXRlIGlzIGRlZmluZWQKKyAgICB0aGF0IGlzIGVpdGhlciBOb25lIG9yIDEuIFhYWDogbmVlZCB0byBiZXR0ZXIgZGVmaW5lIHRoaXMgQVBJLgorCisgICAgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIHZhbHVlKToKKyAgICAgICAga3dkcyA9IHsnZGVmZWN0cyc6IFtdfQorICAgICAgICBjbHMucGFyc2UodmFsdWUsIGt3ZHMpCisgICAgICAgIGlmIHV0aWxzLl9oYXNfc3Vycm9nYXRlcyhrd2RzWydkZWNvZGVkJ10pOgorICAgICAgICAgICAga3dkc1snZGVjb2RlZCddID0gdXRpbHMuX3Nhbml0aXplKGt3ZHNbJ2RlY29kZWQnXSkKKyAgICAgICAgc2VsZiA9IHN0ci5fX25ld19fKGNscywga3dkc1snZGVjb2RlZCddKQorICAgICAgICBkZWwga3dkc1snZGVjb2RlZCddCisgICAgICAgIHNlbGYuaW5pdChuYW1lLCAqKmt3ZHMpCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgaW5pdChzZWxmLCBuYW1lLCAqLCBwYXJzZV90cmVlLCBkZWZlY3RzKToKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fcGFyc2VfdHJlZSA9IHBhcnNlX3RyZWUKKyAgICAgICAgc2VsZi5fZGVmZWN0cyA9IGRlZmVjdHMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGRlZmVjdHMoc2VsZik6CisgICAgICAgIHJldHVybiB0dXBsZShzZWxmLl9kZWZlY3RzKQorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBfcmVjb25zdHJ1Y3RfaGVhZGVyLAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fYmFzZXNfXywKKyAgICAgICAgICAgICAgICBzdHIoc2VsZiksCisgICAgICAgICAgICApLAorICAgICAgICAgICAgc2VsZi5fX2RpY3RfXykKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVjb25zdHJ1Y3QoY2xzLCB2YWx1ZSk6CisgICAgICAgIHJldHVybiBzdHIuX19uZXdfXyhjbHMsIHZhbHVlKQorCisgICAgZGVmIGZvbGQoc2VsZiwgKiwgcG9saWN5KToKKyAgICAgICAgIiIiRm9sZCBoZWFkZXIgYWNjb3JkaW5nIHRvIHBvbGljeS4KKworICAgICAgICBUaGUgcGFyc2VkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBoZWFkZXIgaXMgZm9sZGVkIGFjY29yZGluZyB0bworICAgICAgICBSRkM1MzIyIHJ1bGVzLCBhcyBtb2RpZmllZCBieSB0aGUgcG9saWN5LiAgSWYgdGhlIHBhcnNlIHRyZWUKKyAgICAgICAgY29udGFpbnMgc3Vycm9nYXRlZXNjYXBlZCBieXRlcywgdGhlIGJ5dGVzIGFyZSBDVEUgZW5jb2RlZCB1c2luZworICAgICAgICB0aGUgY2hhcnNldCAndW5rbm93bi04Yml0Ii4KKworICAgICAgICBBbnkgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlIHBhcnNlIHRyZWUgYXJlIENURSBlbmNvZGVkIHVzaW5nCisgICAgICAgIGNoYXJzZXQgdXRmLTguIFhYWDogbWFrZSB0aGlzIGEgcG9saWN5IHNldHRpbmcuCisKKyAgICAgICAgVGhlIHJldHVybmVkIHZhbHVlIGlzIGFuIEFTQ0lJLW9ubHkgc3RyaW5nIHBvc3NpYmx5IGNvbnRhaW5pbmcgbGluZXNlcAorICAgICAgICBjaGFyYWN0ZXJzLCBhbmQgZW5kaW5nIHdpdGggYSBsaW5lc2VwIGNoYXJhY3Rlci4gIFRoZSBzdHJpbmcgaW5jbHVkZXMKKyAgICAgICAgdGhlIGhlYWRlciBuYW1lIGFuZCB0aGUgJzogJyBzZXBhcmF0b3IuCisKKyAgICAgICAgIiIiCisgICAgICAgICMgQXQgc29tZSBwb2ludCB3ZSBuZWVkIHRvIG9ubHkgcHV0IGZ3cyBoZXJlIGlmIGl0IHdhcyBpbiB0aGUgc291cmNlLgorICAgICAgICBoZWFkZXIgPSBwYXJzZXIuSGVhZGVyKFsKKyAgICAgICAgICAgIHBhcnNlci5IZWFkZXJMYWJlbChbCisgICAgICAgICAgICAgICAgcGFyc2VyLlZhbHVlVGVybWluYWwoc2VsZi5uYW1lLCAnaGVhZGVyLW5hbWUnKSwKKyAgICAgICAgICAgICAgICBwYXJzZXIuVmFsdWVUZXJtaW5hbCgnOicsICdoZWFkZXItc2VwJyldKSwKKyAgICAgICAgICAgIHBhcnNlci5DRldTTGlzdChbcGFyc2VyLldoaXRlU3BhY2VUZXJtaW5hbCgnICcsICdmd3MnKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZV90cmVlXSkKKyAgICAgICAgcmV0dXJuIGhlYWRlci5mb2xkKHBvbGljeT1wb2xpY3kpCisKKworZGVmIF9yZWNvbnN0cnVjdF9oZWFkZXIoY2xzX25hbWUsIGJhc2VzLCB2YWx1ZSk6CisgICAgcmV0dXJuIHR5cGUoY2xzX25hbWUsIGJhc2VzLCB7fSkuX3JlY29uc3RydWN0KHZhbHVlKQorCisKK2NsYXNzIFVuc3RydWN0dXJlZEhlYWRlcjoKKworICAgIG1heF9jb3VudCA9IE5vbmUKKyAgICB2YWx1ZV9wYXJzZXIgPSBzdGF0aWNtZXRob2QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9IHN0cihrd2RzWydwYXJzZV90cmVlJ10pCisKKworY2xhc3MgVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKFVuc3RydWN0dXJlZEhlYWRlcik6CisKKyAgICBtYXhfY291bnQgPSAxCisKKworY2xhc3MgRGF0ZUhlYWRlcjoKKworICAgICIiIkhlYWRlciB3aG9zZSB2YWx1ZSBjb25zaXN0cyBvZiBhIHNpbmdsZSB0aW1lc3RhbXAuCisKKyAgICBQcm92aWRlcyBhbiBhZGRpdGlvbmFsIGF0dHJpYnV0ZSwgZGF0ZXRpbWUsIHdoaWNoIGlzIGVpdGhlciBhbiBhd2FyZQorICAgIGRhdGV0aW1lIHVzaW5nIGEgdGltZXpvbmUsIG9yIGEgbmFpdmUgZGF0ZXRpbWUgaWYgdGhlIHRpbWV6b25lCisgICAgaW4gdGhlIGlucHV0IHN0cmluZyBpcyAtMDAwMC4gIEFsc28gYWNjZXB0cyBhIGRhdGV0aW1lIGFzIGlucHV0LgorICAgIFRoZSAndmFsdWUnIGF0dHJpYnV0ZSBpcyB0aGUgbm9ybWFsaXplZCBmb3JtIG9mIHRoZSB0aW1lc3RhbXAsCisgICAgd2hpY2ggbWVhbnMgaXQgaXMgdGhlIG91dHB1dCBvZiBmb3JtYXRfZGF0ZXRpbWUgb24gdGhlIGRhdGV0aW1lLgorICAgICIiIgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorCisgICAgIyBUaGlzIGlzIHVzZWQgb25seSBmb3IgZm9sZGluZywgbm90IGZvciBjcmVhdGluZyAnZGVjb2RlZCcuCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICBrd2RzWydkZWZlY3RzJ10uYXBwZW5kKGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSgpKQorICAgICAgICAgICAga3dkc1snZGF0ZXRpbWUnXSA9IE5vbmUKKyAgICAgICAgICAgIGt3ZHNbJ2RlY29kZWQnXSA9ICcnCisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZXIuVG9rZW5MaXN0KCkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgdmFsdWUgPSB1dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUodmFsdWUpCisgICAgICAgIGt3ZHNbJ2RhdGV0aW1lJ10gPSB2YWx1ZQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoa3dkc1snZGF0ZXRpbWUnXSkKKyAgICAgICAga3dkc1sncGFyc2VfdHJlZSddID0gY2xzLnZhbHVlX3BhcnNlcihrd2RzWydkZWNvZGVkJ10pCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHNlbGYuX2RhdGV0aW1lID0ga3cucG9wKCdkYXRldGltZScpCisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkYXRldGltZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGV0aW1lCisKKworY2xhc3MgVW5pcXVlRGF0ZUhlYWRlcihEYXRlSGVhZGVyKToKKworICAgIG1heF9jb3VudCA9IDEKKworCitjbGFzcyBBZGRyZXNzSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gTm9uZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiB2YWx1ZV9wYXJzZXIodmFsdWUpOgorICAgICAgICBhZGRyZXNzX2xpc3QsIHZhbHVlID0gcGFyc2VyLmdldF9hZGRyZXNzX2xpc3QodmFsdWUpCisgICAgICAgIGFzc2VydCBub3QgdmFsdWUsICd0aGlzIHNob3VsZCBub3QgaGFwcGVuJworICAgICAgICByZXR1cm4gYWRkcmVzc19saXN0CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHN0cik6CisgICAgICAgICAgICAjIFdlIGFyZSB0cmFuc2xhdGluZyBoZXJlIGZyb20gdGhlIFJGQyBsYW5ndWFnZSAoYWRkcmVzcy9tYWlsYm94KQorICAgICAgICAgICAgIyB0byBvdXIgQVBJIGxhbmd1YWdlIChncm91cC9hZGRyZXNzKS4KKyAgICAgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IGFkZHJlc3NfbGlzdCA9IGNscy52YWx1ZV9wYXJzZXIodmFsdWUpCisgICAgICAgICAgICBncm91cHMgPSBbXQorICAgICAgICAgICAgZm9yIGFkZHIgaW4gYWRkcmVzc19saXN0LmFkZHJlc3NlczoKKyAgICAgICAgICAgICAgICBncm91cHMuYXBwZW5kKEdyb3VwKGFkZHIuZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FkZHJlc3MobWIuZGlzcGxheV9uYW1lIG9yICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWIubG9jYWxfcGFydCBvciAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1iLmRvbWFpbiBvciAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbWIgaW4gYWRkci5hbGxfbWFpbGJveGVzXSkpCisgICAgICAgICAgICBkZWZlY3RzID0gbGlzdChhZGRyZXNzX2xpc3QuYWxsX2RlZmVjdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFzc3VtZSBpdCBpcyBBZGRyZXNzL0dyb3VwIHN0dWZmCisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih2YWx1ZSwgJ19faXRlcl9fJyk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBbdmFsdWVdCisgICAgICAgICAgICBncm91cHMgPSBbR3JvdXAoTm9uZSwgW2l0ZW1dKSBpZiBub3QgaGFzYXR0cihpdGVtLCAnYWRkcmVzc2VzJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gdmFsdWVdCisgICAgICAgICAgICBkZWZlY3RzID0gW10KKyAgICAgICAga3dkc1snZ3JvdXBzJ10gPSBncm91cHMKKyAgICAgICAga3dkc1snZGVmZWN0cyddID0gZGVmZWN0cworICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSAnLCAnLmpvaW4oW3N0cihpdGVtKSBmb3IgaXRlbSBpbiBncm91cHNdKQorICAgICAgICBpZiAncGFyc2VfdHJlZScgbm90IGluIGt3ZHM6CisgICAgICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBjbHMudmFsdWVfcGFyc2VyKGt3ZHNbJ2RlY29kZWQnXSkKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fZ3JvdXBzID0gdHVwbGUoa3cucG9wKCdncm91cHMnKSkKKyAgICAgICAgc2VsZi5fYWRkcmVzc2VzID0gTm9uZQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ3JvdXBzKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZ3JvdXBzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzc2VzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9hZGRyZXNzZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2FkZHJlc3NlcyA9IHR1cGxlKFthZGRyZXNzIGZvciBncm91cCBpbiBzZWxmLl9ncm91cHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhZGRyZXNzIGluIGdyb3VwLmFkZHJlc3Nlc10pCisgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzZXMKKworCitjbGFzcyBVbmlxdWVBZGRyZXNzSGVhZGVyKEFkZHJlc3NIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIFNpbmdsZUFkZHJlc3NIZWFkZXIoQWRkcmVzc0hlYWRlcik6CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYWRkcmVzcyhzZWxmKToKKyAgICAgICAgaWYgbGVuKHNlbGYuYWRkcmVzc2VzKSE9MToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKCJ2YWx1ZSBvZiBzaW5nbGUgYWRkcmVzcyBoZWFkZXIge30gaXMgbm90ICIKKyAgICAgICAgICAgICAgICAiYSBzaW5nbGUgYWRkcmVzcyIpLmZvcm1hdChzZWxmLm5hbWUpKQorICAgICAgICByZXR1cm4gc2VsZi5hZGRyZXNzZXNbMF0KKworCitjbGFzcyBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyKFNpbmdsZUFkZHJlc3NIZWFkZXIpOgorCisgICAgbWF4X2NvdW50ID0gMQorCisKK2NsYXNzIE1JTUVWZXJzaW9uSGVhZGVyOgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgdmFsdWVfcGFyc2VyID0gc3RhdGljbWV0aG9kKHBhcnNlci5wYXJzZV9taW1lX3ZlcnNpb24pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorICAgICAgICBrd2RzWydtYWpvciddID0gTm9uZSBpZiBwYXJzZV90cmVlLm1pbm9yIGlzIE5vbmUgZWxzZSBwYXJzZV90cmVlLm1ham9yCisgICAgICAgIGt3ZHNbJ21pbm9yJ10gPSBwYXJzZV90cmVlLm1pbm9yCisgICAgICAgIGlmIHBhcnNlX3RyZWUubWlub3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBrd2RzWyd2ZXJzaW9uJ10gPSAne30ue30nLmZvcm1hdChrd2RzWydtYWpvciddLCBrd2RzWydtaW5vciddKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAga3dkc1sndmVyc2lvbiddID0gTm9uZQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzZWxmLl92ZXJzaW9uID0ga3cucG9wKCd2ZXJzaW9uJykKKyAgICAgICAgc2VsZi5fbWFqb3IgPSBrdy5wb3AoJ21ham9yJykKKyAgICAgICAgc2VsZi5fbWlub3IgPSBrdy5wb3AoJ21pbm9yJykKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1ham9yKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWFqb3IKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtaW5vcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21pbm9yCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24KKworCitjbGFzcyBQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcjoKKworICAgICMgTWl4aW4gdGhhdCBoYW5kbGVzIHRoZSBwYXJhbXMgZGljdC4gIE11c3QgYmUgc3ViY2xhc3NlZCBhbmQKKyAgICAjIGEgcHJvcGVydHkgdmFsdWVfcGFyc2VyIGZvciB0aGUgc3BlY2lmaWMgaGVhZGVyIHByb3ZpZGVkLgorCisgICAgbWF4X2NvdW50ID0gMQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHBhcnNlKGNscywgdmFsdWUsIGt3ZHMpOgorICAgICAgICBrd2RzWydwYXJzZV90cmVlJ10gPSBwYXJzZV90cmVlID0gY2xzLnZhbHVlX3BhcnNlcih2YWx1ZSkKKyAgICAgICAga3dkc1snZGVjb2RlZCddID0gc3RyKHBhcnNlX3RyZWUpCisgICAgICAgIGt3ZHNbJ2RlZmVjdHMnXS5leHRlbmQocGFyc2VfdHJlZS5hbGxfZGVmZWN0cykKKyAgICAgICAgaWYgcGFyc2VfdHJlZS5wYXJhbXMgaXMgTm9uZToKKyAgICAgICAgICAgIGt3ZHNbJ3BhcmFtcyddID0ge30KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVGhlIE1JTUUgUkZDcyBzcGVjaWZ5IHRoYXQgcGFyYW1ldGVyIG9yZGVyaW5nIGlzIGFyYml0cmFyeS4KKyAgICAgICAgICAgIGt3ZHNbJ3BhcmFtcyddID0ge3V0aWxzLl9zYW5pdGl6ZShuYW1lKS5sb3dlcigpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbHMuX3Nhbml0aXplKHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBwYXJzZV90cmVlLnBhcmFtc30KKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc2VsZi5fcGFyYW1zID0ga3cucG9wKCdwYXJhbXMnKQorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFyYW1zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcGFyYW1zLmNvcHkoKQorCisKK2NsYXNzIENvbnRlbnRUeXBlSGVhZGVyKFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyKToKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90eXBlX2hlYWRlcikKKworICAgIGRlZiBpbml0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgc3VwZXIoKS5pbml0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLl9tYWludHlwZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLm1haW50eXBlKQorICAgICAgICBzZWxmLl9zdWJ0eXBlID0gdXRpbHMuX3Nhbml0aXplKHNlbGYuX3BhcnNlX3RyZWUuc3VidHlwZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYWludHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21haW50eXBlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc3VidHlwZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3N1YnR5cGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjb250ZW50X3R5cGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm1haW50eXBlICsgJy8nICsgc2VsZi5zdWJ0eXBlCisKKworY2xhc3MgQ29udGVudERpc3Bvc2l0aW9uSGVhZGVyKFBhcmFtZXRlcml6ZWRNSU1FSGVhZGVyKToKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF9kaXNwb3NpdGlvbl9oZWFkZXIpCisKKyAgICBkZWYgaW5pdChzZWxmLCAqYXJncywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuaW5pdCgqYXJncywgKiprdykKKyAgICAgICAgY2QgPSBzZWxmLl9wYXJzZV90cmVlLmNvbnRlbnRfZGlzcG9zaXRpb24KKyAgICAgICAgc2VsZi5fY29udGVudF9kaXNwb3NpdGlvbiA9IGNkIGlmIGNkIGlzIE5vbmUgZWxzZSB1dGlscy5fc2FuaXRpemUoY2QpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udGVudF9kaXNwb3NpdGlvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NvbnRlbnRfZGlzcG9zaXRpb24KKworCitjbGFzcyBDb250ZW50VHJhbnNmZXJFbmNvZGluZ0hlYWRlcjoKKworICAgIG1heF9jb3VudCA9IDEKKworICAgIHZhbHVlX3BhcnNlciA9IHN0YXRpY21ldGhvZChwYXJzZXIucGFyc2VfY29udGVudF90cmFuc2Zlcl9lbmNvZGluZ19oZWFkZXIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2UoY2xzLCB2YWx1ZSwga3dkcyk6CisgICAgICAgIGt3ZHNbJ3BhcnNlX3RyZWUnXSA9IHBhcnNlX3RyZWUgPSBjbHMudmFsdWVfcGFyc2VyKHZhbHVlKQorICAgICAgICBrd2RzWydkZWNvZGVkJ10gPSBzdHIocGFyc2VfdHJlZSkKKyAgICAgICAga3dkc1snZGVmZWN0cyddLmV4dGVuZChwYXJzZV90cmVlLmFsbF9kZWZlY3RzKQorCisgICAgZGVmIGluaXQoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLmluaXQoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuX2N0ZSA9IHV0aWxzLl9zYW5pdGl6ZShzZWxmLl9wYXJzZV90cmVlLmN0ZSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jdGUKKworCisjIFRoZSBoZWFkZXIgZmFjdG9yeSAjCisKK19kZWZhdWx0X2hlYWRlcl9tYXAgPSB7CisgICAgJ3N1YmplY3QnOiAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIsCisgICAgJ2RhdGUnOiAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVEYXRlSGVhZGVyLAorICAgICdyZXNlbnQtZGF0ZSc6ICAgICAgICAgICAgICAgICAgRGF0ZUhlYWRlciwKKyAgICAnb3JpZy1kYXRlJzogICAgICAgICAgICAgICAgICAgIFVuaXF1ZURhdGVIZWFkZXIsCisgICAgJ3NlbmRlcic6ICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVTaW5nbGVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtc2VuZGVyJzogICAgICAgICAgICAgICAgU2luZ2xlQWRkcmVzc0hlYWRlciwKKyAgICAndG8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC10byc6ICAgICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAncmVzZW50LWNjJzogICAgICAgICAgICAgICAgICAgIEFkZHJlc3NIZWFkZXIsCisgICAgJ2JjYyc6ICAgICAgICAgICAgICAgICAgICAgICAgICBVbmlxdWVBZGRyZXNzSGVhZGVyLAorICAgICdyZXNlbnQtYmNjJzogICAgICAgICAgICAgICAgICAgQWRkcmVzc0hlYWRlciwKKyAgICAnZnJvbSc6ICAgICAgICAgICAgICAgICAgICAgICAgIFVuaXF1ZUFkZHJlc3NIZWFkZXIsCisgICAgJ3Jlc2VudC1mcm9tJzogICAgICAgICAgICAgICAgICBBZGRyZXNzSGVhZGVyLAorICAgICdyZXBseS10byc6ICAgICAgICAgICAgICAgICAgICAgVW5pcXVlQWRkcmVzc0hlYWRlciwKKyAgICAnbWltZS12ZXJzaW9uJzogICAgICAgICAgICAgICAgIE1JTUVWZXJzaW9uSGVhZGVyLAorICAgICdjb250ZW50LXR5cGUnOiAgICAgICAgICAgICAgICAgQ29udGVudFR5cGVIZWFkZXIsCisgICAgJ2NvbnRlbnQtZGlzcG9zaXRpb24nOiAgICAgICAgICBDb250ZW50RGlzcG9zaXRpb25IZWFkZXIsCisgICAgJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnOiAgICBDb250ZW50VHJhbnNmZXJFbmNvZGluZ0hlYWRlciwKKyAgICB9CisKK2NsYXNzIEhlYWRlclJlZ2lzdHJ5OgorCisgICAgIiIiQSBoZWFkZXJfZmFjdG9yeSBhbmQgaGVhZGVyIHJlZ2lzdHJ5LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhc2VfY2xhc3M9QmFzZUhlYWRlciwgZGVmYXVsdF9jbGFzcz1VbnN0cnVjdHVyZWRIZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHVzZV9kZWZhdWx0X21hcD1UcnVlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgaGVhZGVyX2ZhY3RvcnkgdGhhdCB3b3JrcyB3aXRoIHRoZSBQb2xpY3kgQVBJLgorCisgICAgICAgIGJhc2VfY2xhc3MgaXMgdGhlIGNsYXNzIHRoYXQgd2lsbCBiZSB0aGUgbGFzdCBjbGFzcyBpbiB0aGUgY3JlYXRlZAorICAgICAgICBoZWFkZXIgY2xhc3MncyBfX2Jhc2VzX18gbGlzdC4gIGRlZmF1bHRfY2xhc3MgaXMgdGhlIGNsYXNzIHRoYXQgd2lsbCBiZQorICAgICAgICB1c2VkIGlmICJuYW1lIiAoc2VlIF9fY2FsbF9fKSBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIHJlZ2lzdHJ5LgorICAgICAgICB1c2VfZGVmYXVsdF9tYXAgY29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGRlZmF1bHQgbWFwcGluZyBvZiBuYW1lcyB0bworICAgICAgICBzcGVjaWFsaXplZCBjbGFzc2VzIGlzIGNvcGllZCBpbiB0byB0aGUgcmVnaXN0cnkgd2hlbiB0aGUgZmFjdG9yeSBpcworICAgICAgICBjcmVhdGVkLiAgVGhlIGRlZmF1bHQgaXMgVHJ1ZS4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZWdpc3RyeSA9IHt9CisgICAgICAgIHNlbGYuYmFzZV9jbGFzcyA9IGJhc2VfY2xhc3MKKyAgICAgICAgc2VsZi5kZWZhdWx0X2NsYXNzID0gZGVmYXVsdF9jbGFzcworICAgICAgICBpZiB1c2VfZGVmYXVsdF9tYXA6CisgICAgICAgICAgICBzZWxmLnJlZ2lzdHJ5LnVwZGF0ZShfZGVmYXVsdF9oZWFkZXJfbWFwKQorCisgICAgZGVmIG1hcF90b190eXBlKHNlbGYsIG5hbWUsIGNscyk6CisgICAgICAgICIiIlJlZ2lzdGVyIGNscyBhcyB0aGUgc3BlY2lhbGl6ZWQgY2xhc3MgZm9yIGhhbmRsaW5nICJuYW1lIiBoZWFkZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJlZ2lzdHJ5W25hbWUubG93ZXIoKV0gPSBjbHMKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgY2xzID0gc2VsZi5yZWdpc3RyeS5nZXQobmFtZS5sb3dlcigpLCBzZWxmLmRlZmF1bHRfY2xhc3MpCisgICAgICAgIHJldHVybiB0eXBlKCdfJytjbHMuX19uYW1lX18sIChjbHMsIHNlbGYuYmFzZV9jbGFzcyksIHt9KQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgaGVhZGVyIGluc3RhbmNlIGZvciBoZWFkZXIgJ25hbWUnIGZyb20gJ3ZhbHVlJy4KKworICAgICAgICBDcmVhdGVzIGEgaGVhZGVyIGluc3RhbmNlIGJ5IGNyZWF0aW5nIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZm9yIHBhcnNpbmcKKyAgICAgICAgYW5kIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWVkIGhlYWRlciBieSBjb21iaW5pbmcgdGhlIGZhY3RvcnkKKyAgICAgICAgYmFzZV9jbGFzcyB3aXRoIGEgc3BlY2lhbGl6ZWQgY2xhc3MgZnJvbSB0aGUgcmVnaXN0cnkgb3IgdGhlCisgICAgICAgIGRlZmF1bHRfY2xhc3MsIGFuZCBwYXNzaW5nIHRoZSBuYW1lIGFuZCB2YWx1ZSB0byB0aGUgY29uc3RydWN0ZWQKKyAgICAgICAgY2xhc3MncyBjb25zdHJ1Y3Rvci4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGZbbmFtZV0obmFtZSwgdmFsdWUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWVzc2FnZS5weSBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CmluZGV4IGYxZmZjZGIuLjNmZWFiNTIgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9tZXNzYWdlLnB5CkBAIC0xMCwxNCArMTAsMTQgQEAKIGltcG9ydCB1dQogaW1wb3J0IGJhc2U2NAogaW1wb3J0IGJpbmFzY2lpCi1pbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiAKICMgSW50cmFwYWNrYWdlIGltcG9ydHMKIGZyb20gZW1haWwgaW1wb3J0IHV0aWxzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKLWZyb20gZW1haWwgaW1wb3J0IGhlYWRlcgorZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIGZyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKK2Zyb20gZW1haWwuX2VuY29kZWRfd29yZHMgaW1wb3J0IGRlY29kZV9iCiBDaGFyc2V0ID0gX2NoYXJzZXQuQ2hhcnNldAogCiBTRU1JU1BBQ0UgPSAnOyAnCkBAIC0yNiwyNCArMjYsNiBAQAogIyBleGlzdGVuY2Ugb2Ygd2hpY2ggZm9yY2UgcXVvdGluZyBvZiB0aGUgcGFyYW1ldGVyIHZhbHVlLgogdHNwZWNpYWxzID0gcmUuY29tcGlsZShyJ1sgXChcKTw+QCw7OlxcIi9cW1xdXD89XScpCiAKLSMgSG93IHRvIGZpZ3VyZSBvdXQgaWYgd2UgYXJlIHByb2Nlc3Npbmcgc3RyaW5ncyB0aGF0IGNvbWUgZnJvbSBhIGJ5dGUKLSMgc291cmNlIHdpdGggdW5kZWNvZGFibGUgY2hhcmFjdGVycy4KLV9oYXNfc3Vycm9nYXRlcyA9IHJlLmNvbXBpbGUoCi0gICAgJyhbXlx1ZDgwMC1cdWRiZmZdfFxBKVtcdWRjMDAtXHVkZmZmXShbXlx1ZGMwMC1cdWRmZmZdfFxaKScpLnNlYXJjaAotCi0KLSMgSGVscGVyIGZ1bmN0aW9ucwotZGVmIF9zYW5pdGl6ZV9oZWFkZXIobmFtZSwgdmFsdWUpOgotICAgICMgSWYgdGhlIGhlYWRlciB2YWx1ZSBjb250YWlucyBzdXJyb2dhdGVzLCByZXR1cm4gYSBIZWFkZXIgdXNpbmcKLSAgICAjIHRoZSB1bmtub3duLThiaXQgY2hhcnNldCB0byBlbmNvZGUgdGhlIGJ5dGVzIGFzIGVuY29kZWQgd29yZHMuCi0gICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0cik6Ci0gICAgICAgICMgQXNzdW1lIGl0IGlzIGFscmVhZHkgYSBoZWFkZXIgb2JqZWN0Ci0gICAgICAgIHJldHVybiB2YWx1ZQotICAgIGlmIF9oYXNfc3Vycm9nYXRlcyh2YWx1ZSk6Ci0gICAgICAgIHJldHVybiBoZWFkZXIuSGVhZGVyKHZhbHVlLCBjaGFyc2V0PV9jaGFyc2V0LlVOS05PV044QklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbmFtZT1uYW1lKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiB2YWx1ZQogCiBkZWYgX3NwbGl0cGFyYW0ocGFyYW0pOgogICAgICMgU3BsaXQgaGVhZGVyIHBhcmFtZXRlcnMuICBCQVc6IHRoaXMgbWF5IGJlIHRvbyBzaW1wbGUuICBJdCBpc24ndApAQCAtMTM2LDcgKzExOCw4IEBACiAgICAgeW91IG11c3QgdXNlIHRoZSBleHBsaWNpdCBBUEkgdG8gc2V0IG9yIGdldCBhbGwgdGhlIGhlYWRlcnMuICBOb3QgYWxsIG9mCiAgICAgdGhlIG1hcHBpbmcgbWV0aG9kcyBhcmUgaW1wbGVtZW50ZWQuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb2xpY3k9Y29tcGF0MzIpOgorICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogICAgICAgICBzZWxmLl9oZWFkZXJzID0gW10KICAgICAgICAgc2VsZi5fdW5peGZyb20gPSBOb25lCiAgICAgICAgIHNlbGYuX3BheWxvYWQgPSBOb25lCkBAIC0yNDYsNyArMjI5LDcgQEAKICAgICAgICAgY3RlID0gc3RyKHNlbGYuZ2V0KCdjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJywgJycpKS5sb3dlcigpCiAgICAgICAgICMgcGF5bG9hZCBtYXkgYmUgYnl0ZXMgaGVyZS4KICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXlsb2FkLCBzdHIpOgotICAgICAgICAgICAgaWYgX2hhc19zdXJyb2dhdGVzKHBheWxvYWQpOgorICAgICAgICAgICAgaWYgdXRpbHMuX2hhc19zdXJyb2dhdGVzKHBheWxvYWQpOgogICAgICAgICAgICAgICAgIGJwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRlY29kZToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMjY3LDExICsyNTAsMTIgQEAKICAgICAgICAgaWYgY3RlID09ICdxdW90ZWQtcHJpbnRhYmxlJzoKICAgICAgICAgICAgIHJldHVybiB1dGlscy5fcWRlY29kZShicGF5bG9hZCkKICAgICAgICAgZWxpZiBjdGUgPT0gJ2Jhc2U2NCc6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRkZWNvZGUoYnBheWxvYWQpCi0gICAgICAgICAgICBleGNlcHQgYmluYXNjaWkuRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBJbmNvcnJlY3QgcGFkZGluZwotICAgICAgICAgICAgICAgIHJldHVybiBicGF5bG9hZAorICAgICAgICAgICAgIyBYWFg6IHRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrOyBkZWNvZGVfYiBzaG91bGQgcHJvYmFibHkgYmUgZmFjdG9yZWQKKyAgICAgICAgICAgICMgb3V0IHNvbWV3aGVyZSwgYnV0IEkgaGF2ZW4ndCBmaWd1cmVkIG91dCB3aGVyZSB5ZXQuCisgICAgICAgICAgICB2YWx1ZSwgZGVmZWN0cyA9IGRlY29kZV9iKGInJy5qb2luKGJwYXlsb2FkLnNwbGl0bGluZXMoKSkpCisgICAgICAgICAgICBmb3IgZGVmZWN0IGluIGRlZmVjdHM6CisgICAgICAgICAgICAgICAgc2VsZi5wb2xpY3kuaGFuZGxlX2RlZmVjdChzZWxmLCBkZWZlY3QpCisgICAgICAgICAgICByZXR1cm4gdmFsdWUKICAgICAgICAgZWxpZiBjdGUgaW4gKCd4LXV1ZW5jb2RlJywgJ3V1ZW5jb2RlJywgJ3V1ZScsICd4LXV1ZScpOgogICAgICAgICAgICAgaW5fZmlsZSA9IEJ5dGVzSU8oYnBheWxvYWQpCiAgICAgICAgICAgICBvdXRfZmlsZSA9IEJ5dGVzSU8oKQpAQCAtMzYyLDcgKzM0NiwxNyBAQAogICAgICAgICBOb3RlOiB0aGlzIGRvZXMgbm90IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZSBmaWVsZAogICAgICAgICBuYW1lLiAgVXNlIF9fZGVsaXRlbV9fKCkgZmlyc3QgdG8gZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXJzLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKG5hbWUsIHZhbCkpCisgICAgICAgIG1heF9jb3VudCA9IHNlbGYucG9saWN5LmhlYWRlcl9tYXhfY291bnQobmFtZSkKKyAgICAgICAgaWYgbWF4X2NvdW50OgorICAgICAgICAgICAgbG5hbWUgPSBuYW1lLmxvd2VyKCkKKyAgICAgICAgICAgIGZvdW5kID0gMAorICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKKyAgICAgICAgICAgICAgICBpZiBrLmxvd2VyKCkgPT0gbG5hbWU6CisgICAgICAgICAgICAgICAgICAgIGZvdW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgZm91bmQgPj0gbWF4X2NvdW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVGhlcmUgbWF5IGJlIGF0IG1vc3Qge30ge30gaGVhZGVycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBhIG1lc3NhZ2UiLmZvcm1hdChtYXhfY291bnQsIG5hbWUpKQorICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZChzZWxmLnBvbGljeS5oZWFkZXJfc3RvcmVfcGFyc2UobmFtZSwgdmFsKSkKIAogICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIGFsbCBvY2N1cnJlbmNlcyBvZiBhIGhlYWRlciwgaWYgcHJlc2VudC4KQEAgLTQwMSw3ICszOTUsOCBAQAogICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgICBsaXN0LgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFtfc2FuaXRpemVfaGVhZGVyKGssIHYpIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCisgICAgICAgIHJldHVybiBbc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpCisgICAgICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KIAogICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICAgIiIiR2V0IGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciBmaWVsZHMgYW5kIHZhbHVlcy4KQEAgLTQxMSw3ICs0MDYsOCBAQAogICAgICAgICBBbnkgZmllbGRzIGRlbGV0ZWQgYW5kIHJlLWluc2VydGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGhlYWRlcgogICAgICAgICBsaXN0LgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFsoaywgX3Nhbml0aXplX2hlYWRlcihrLCB2KSkgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyc10KKyAgICAgICAgcmV0dXJuIFsoaywgc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQorICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuX2hlYWRlcnNdCiAKICAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGZhaWxvYmo9Tm9uZSk6CiAgICAgICAgICIiIkdldCBhIGhlYWRlciB2YWx1ZS4KQEAgLTQyMiwxMCArNDE4LDI5IEBACiAgICAgICAgIG5hbWUgPSBuYW1lLmxvd2VyKCkKICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5faGVhZGVyczoKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBfc2FuaXRpemVfaGVhZGVyKGssIHYpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9saWN5LmhlYWRlcl9mZXRjaF9wYXJzZShrLCB2KQogICAgICAgICByZXR1cm4gZmFpbG9iagogCiAgICAgIworICAgICMgIkludGVybmFsIiBtZXRob2RzIChwdWJsaWMgQVBJLCBidXQgb25seSBpbnRlbmRlZCBmb3IgdXNlIGJ5IGEgcGFyc2VyCisgICAgIyBvciBnZW5lcmF0b3IsIG5vdCBub3JtYWwgYXBwbGljYXRpb24gY29kZS4KKyAgICAjCisKKyAgICBkZWYgc2V0X3JhdyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIlN0b3JlIG5hbWUgYW5kIHZhbHVlIGluIHRoZSBtb2RlbCB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworICAgICAgICBUaGlzIGlzIGFuICJpbnRlcm5hbCIgQVBJLCBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYSBwYXJzZXIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9oZWFkZXJzLmFwcGVuZCgobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIHJhd19pdGVtcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSAobmFtZSwgdmFsdWUpIGhlYWRlciBwYWlycyB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKworICAgICAgICBUaGlzIGlzIGFuICJpbnRlcm5hbCIgQVBJLCBpbnRlbmRlZCBvbmx5IGZvciB1c2UgYnkgYSBnZW5lcmF0b3IuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9oZWFkZXJzLmNvcHkoKSkKKworICAgICMKICAgICAjIEFkZGl0aW9uYWwgdXNlZnVsIHN0dWZmCiAgICAgIwogCkBAIC00NDIsNyArNDU3LDcgQEAKICAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQogICAgICAgICBmb3IgaywgdiBpbiBzZWxmLl9oZWFkZXJzOgogICAgICAgICAgICAgaWYgay5sb3dlcigpID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChfc2FuaXRpemVfaGVhZGVyKGssIHYpKQorICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX2ZldGNoX3BhcnNlKGssIHYpKQogICAgICAgICBpZiBub3QgdmFsdWVzOgogICAgICAgICAgICAgcmV0dXJuIGZhaWxvYmoKICAgICAgICAgcmV0dXJuIHZhbHVlcwpAQCAtNDc1LDcgKzQ5MCw3IEBACiAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKF9mb3JtYXRwYXJhbShrLnJlcGxhY2UoJ18nLCAnLScpLCB2KSkKICAgICAgICAgaWYgX3ZhbHVlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcGFydHMuaW5zZXJ0KDAsIF92YWx1ZSkKLSAgICAgICAgc2VsZi5faGVhZGVycy5hcHBlbmQoKF9uYW1lLCBTRU1JU1BBQ0Uuam9pbihwYXJ0cykpKQorICAgICAgICBzZWxmW19uYW1lXSA9IFNFTUlTUEFDRS5qb2luKHBhcnRzKQogCiAgICAgZGVmIHJlcGxhY2VfaGVhZGVyKHNlbGYsIF9uYW1lLCBfdmFsdWUpOgogICAgICAgICAiIiJSZXBsYWNlIGEgaGVhZGVyLgpAQCAtNDg3LDcgKzUwMiw3IEBACiAgICAgICAgIF9uYW1lID0gX25hbWUubG93ZXIoKQogICAgICAgICBmb3IgaSwgKGssIHYpIGluIHppcChyYW5nZShsZW4oc2VsZi5faGVhZGVycykpLCBzZWxmLl9oZWFkZXJzKToKICAgICAgICAgICAgIGlmIGsubG93ZXIoKSA9PSBfbmFtZToKLSAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzW2ldID0gKGssIF92YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzW2ldID0gc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGssIF92YWx1ZSkKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoX25hbWUpCkBAIC04MDMsNyArODE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChrKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKCclcz0lcycgJSAoaywgdikpCi0gICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIFNFTUlTUEFDRS5qb2luKHBhcnRzKSkpCisgICAgICAgICAgICAgICAgdmFsID0gU0VNSVNQQUNFLmpvaW4ocGFydHMpCisgICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoc2VsZi5wb2xpY3kuaGVhZGVyX3N0b3JlX3BhcnNlKGgsIHZhbCkpCiAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbmV3aGVhZGVycy5hcHBlbmQoKGgsIHYpKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvdGV4dC5weSBiL0xpYi9lbWFpbC9taW1lL3RleHQucHkKaW5kZXggNTc0N2RiNS4uODBmZjk1MCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvdGV4dC5weQorKysgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CkBAIC0xNCw3ICsxNCw3IEBACiBjbGFzcyBNSU1FVGV4dChNSU1FTm9uTXVsdGlwYXJ0KToKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50cy4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9J3VzLWFzY2lpJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfdGV4dCBpcyB0aGUgc3RyaW5nIGZvciB0aGlzIG1lc3NhZ2Ugb2JqZWN0LgpAQCAtMjUsNiArMjUsMTggQEAKICAgICAgICAgaGVhZGVyLiAgVGhpcyBkZWZhdWx0cyB0byAidXMtYXNjaWkiLiAgTm90ZSB0aGF0IGFzIGEgc2lkZS1lZmZlY3QsIHRoZQogICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIGhlYWRlciB3aWxsIGFsc28gYmUgc2V0LgogICAgICAgICAiIiIKKworICAgICAgICAjIElmIG5vIF9jaGFyc2V0IHdhcyBzcGVjaWZpZWQsIGNoZWNrIHRvIHNlZSBzZWUgaWYgdGhlcmUgYXJlIG5vbi1hc2NpaQorICAgICAgICAjIGNoYXJhY3RlcnMgcHJlc2VudC4gSWYgbm90LCB1c2UgJ3VzLWFzY2lpJywgb3RoZXJ3aXNlIHVzZSB1dGYtOC4KKyAgICAgICAgIyBYWFg6IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSAjNzMwNCBpcyBmaXhlZC4KKyAgICAgICAgaWYgX2NoYXJzZXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfdGV4dC5lbmNvZGUoJ3VzLWFzY2lpJykKKyAgICAgICAgICAgICAgICBfY2hhcnNldCA9ICd1cy1hc2NpaScKKyAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgX2NoYXJzZXQgPSAndXRmLTgnCisKICAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqeydjaGFyc2V0JzogX2NoYXJzZXR9KQorCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX3RleHQsIF9jaGFyc2V0KQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BhcnNlci5weSBiL0xpYi9lbWFpbC9wYXJzZXIucHkKaW5kZXggMWM5MzFlYS4uMWFhYjAxMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3BhcnNlci5weQorKysgYi9MaWIvZW1haWwvcGFyc2VyLnB5CkBAIC00LDE4ICs0LDE5IEBACiAKICIiIkEgcGFyc2VyIG9mIFJGQyAyODIyIGFuZCBNSU1FIGVtYWlsIG1lc3NhZ2VzLiIiIgogCi1fX2FsbF9fID0gWydQYXJzZXInLCAnSGVhZGVyUGFyc2VyJywgJ0J5dGVzUGFyc2VyJ10KK19fYWxsX18gPSBbJ1BhcnNlcicsICdIZWFkZXJQYXJzZXInLCAnQnl0ZXNQYXJzZXInLCAnQnl0ZXNIZWFkZXJQYXJzZXInXQogCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBUZXh0SU9XcmFwcGVyCiAKIGZyb20gZW1haWwuZmVlZHBhcnNlciBpbXBvcnQgRmVlZFBhcnNlcgogZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCitmcm9tIGVtYWlsLl9wb2xpY3liYXNlIGltcG9ydCBjb21wYXQzMgogCiAKIAwKIGNsYXNzIFBhcnNlcjoKLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX2NsYXNzPU1lc3NhZ2UsICosIHBvbGljeT1jb21wYXQzMik6CiAgICAgICAgICIiIlBhcnNlciBvZiBSRkMgMjgyMiBhbmQgTUlNRSBlbWFpbCBtZXNzYWdlcy4KIAogICAgICAgICBDcmVhdGVzIGFuIGluLW1lbW9yeSBvYmplY3QgdHJlZSByZXByZXNlbnRpbmcgdGhlIGVtYWlsIG1lc3NhZ2UsIHdoaWNoCkBAIC0zMCwyOCArMzEsMTQgQEAKICAgICAgICAgX2NsYXNzIGlzIHRoZSBjbGFzcyB0byBpbnN0YW50aWF0ZSBmb3IgbmV3IG1lc3NhZ2Ugb2JqZWN0cyB3aGVuIHRoZXkKICAgICAgICAgbXVzdCBiZSBjcmVhdGVkLiAgVGhpcyBjbGFzcyBtdXN0IGhhdmUgYSBjb25zdHJ1Y3RvciB0aGF0IGNhbiB0YWtlCiAgICAgICAgIHplcm8gYXJndW1lbnRzLiAgRGVmYXVsdCBpcyBNZXNzYWdlLk1lc3NhZ2UuCisKKyAgICAgICAgVGhlIHBvbGljeSBrZXl3b3JkIHNwZWNpZmllcyBhIHBvbGljeSBvYmplY3QgdGhhdCBjb250cm9scyBhIG51bWJlciBvZgorICAgICAgICBhc3BlY3RzIG9mIHRoZSBwYXJzZXIncyBvcGVyYXRpb24uICBUaGUgZGVmYXVsdCBwb2xpY3kgbWFpbnRhaW5zCisgICAgICAgIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGxlbihhcmdzKSA+PSAxOgotICAgICAgICAgICAgaWYgJ19jbGFzcycgaW4ga3dzOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiTXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZyAnX2NsYXNzJyIpCi0gICAgICAgICAgICBrd3NbJ19jbGFzcyddID0gYXJnc1swXQotICAgICAgICBpZiBsZW4oYXJncykgPT0gMjoKLSAgICAgICAgICAgIGlmICdzdHJpY3QnIGluIGt3czoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmcgJ3N0cmljdCciKQotICAgICAgICAgICAga3dzWydzdHJpY3QnXSA9IGFyZ3NbMV0KLSAgICAgICAgaWYgbGVuKGFyZ3MpID4gMjoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVG9vIG1hbnkgYXJndW1lbnRzJykKLSAgICAgICAgaWYgJ19jbGFzcycgaW4ga3dzOgotICAgICAgICAgICAgc2VsZi5fY2xhc3MgPSBrd3NbJ19jbGFzcyddCi0gICAgICAgICAgICBkZWwga3dzWydfY2xhc3MnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fY2xhc3MgPSBNZXNzYWdlCi0gICAgICAgIGlmICdzdHJpY3QnIGluIGt3czoKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIidzdHJpY3QnIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQgKGFuZCBpZ25vcmVkKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlbCBrd3NbJ3N0cmljdCddCi0gICAgICAgIGlmIGt3czoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignVW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50cycpCisgICAgICAgIHNlbGYuX2NsYXNzID0gX2NsYXNzCisgICAgICAgIHNlbGYucG9saWN5ID0gcG9saWN5CiAKICAgICBkZWYgcGFyc2Uoc2VsZiwgZnAsIGhlYWRlcnNvbmx5PUZhbHNlKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbWVzc2FnZSBzdHJ1Y3R1cmUgZnJvbSB0aGUgZGF0YSBpbiBhIGZpbGUuCkBAIC02MSw3ICs0OCw3IEBACiAgICAgICAgIHBhcnNpbmcgYWZ0ZXIgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBGYWxzZSwKICAgICAgICAgbWVhbmluZyBpdCBwYXJzZXMgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIGZlZWRwYXJzZXIgPSBGZWVkUGFyc2VyKHNlbGYuX2NsYXNzKQorICAgICAgICBmZWVkcGFyc2VyID0gRmVlZFBhcnNlcihzZWxmLl9jbGFzcywgcG9saWN5PXNlbGYucG9saWN5KQogICAgICAgICBpZiBoZWFkZXJzb25seToKICAgICAgICAgICAgIGZlZWRwYXJzZXIuX3NldF9oZWFkZXJzb25seSgpCiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC0xMzQsMyArMTIxLDExIEBACiAgICAgICAgICIiIgogICAgICAgICB0ZXh0ID0gdGV4dC5kZWNvZGUoJ0FTQ0lJJywgZXJyb3JzPSdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICByZXR1cm4gc2VsZi5wYXJzZXIucGFyc2VzdHIodGV4dCwgaGVhZGVyc29ubHkpCisKKworY2xhc3MgQnl0ZXNIZWFkZXJQYXJzZXIoQnl0ZXNQYXJzZXIpOgorICAgIGRlZiBwYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9VHJ1ZSk6CisgICAgICAgIHJldHVybiBCeXRlc1BhcnNlci5wYXJzZShzZWxmLCBmcCwgaGVhZGVyc29ubHk9VHJ1ZSkKKworICAgIGRlZiBwYXJzZWJ5dGVzKHNlbGYsIHRleHQsIGhlYWRlcnNvbmx5PVRydWUpOgorICAgICAgICByZXR1cm4gQnl0ZXNQYXJzZXIucGFyc2VieXRlcyhzZWxmLCB0ZXh0LCBoZWFkZXJzb25seT1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3BvbGljeS5weSBiL0xpYi9lbWFpbC9wb2xpY3kucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJjYWQwZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbWFpbC9wb2xpY3kucHkKQEAgLTAsMCArMSwxODggQEAKKyIiIlRoaXMgd2lsbCBiZSB0aGUgaG9tZSBmb3IgdGhlIHBvbGljeSB0aGF0IGhvb2tzIGluIHRoZSBuZXcKK2NvZGUgdGhhdCBhZGRzIGFsbCB0aGUgZW1haWw2IGZlYXR1cmVzLgorIiIiCisKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IFBvbGljeSwgQ29tcGF0MzIsIGNvbXBhdDMyLCBfZXh0ZW5kX2RvY3N0cmluZ3MKK2Zyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcworZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgSGVhZGVyUmVnaXN0cnkgYXMgSGVhZGVyUmVnaXN0cnkKKworX19hbGxfXyA9IFsKKyAgICAnQ29tcGF0MzInLAorICAgICdjb21wYXQzMicsCisgICAgJ1BvbGljeScsCisgICAgJ0VtYWlsUG9saWN5JywKKyAgICAnZGVmYXVsdCcsCisgICAgJ3N0cmljdCcsCisgICAgJ1NNVFAnLAorICAgICdIVFRQJywKKyAgICBdCisKK0BfZXh0ZW5kX2RvY3N0cmluZ3MKK2NsYXNzIEVtYWlsUG9saWN5KFBvbGljeSk6CisKKyAgICAiIiIrCisgICAgUFJPVklTSU9OQUwKKworICAgIFRoZSBBUEkgZXh0ZW5zaW9ucyBlbmFibGVkIGJ5IHRoaXMgdGhpcyBwb2xpY3kgYXJlIGN1cnJlbnRseSBwcm92aXNpb25hbC4KKyAgICBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKworICAgIFRoaXMgcG9saWN5IGFkZHMgbmV3IGhlYWRlciBwYXJzaW5nIGFuZCBmb2xkaW5nIGFsZ29yaXRobXMuICBJbnN0ZWFkIG9mCisgICAgc2ltcGxlIHN0cmluZ3MsIGhlYWRlcnMgYXJlIGN1c3RvbSBvYmplY3RzIHdpdGggY3VzdG9tIGF0dHJpYnV0ZXMKKyAgICBkZXBlbmRpbmcgb24gdGhlIHR5cGUgb2YgdGhlIGZpZWxkLiAgVGhlIGZvbGRpbmcgYWxnb3JpdGhtIGZ1bGx5CisgICAgaW1wbGVtZW50cyBSRkNzIDIwNDcgYW5kIDUzMjIuCisKKyAgICBJbiBhZGRpdGlvbiB0byB0aGUgc2V0dGFibGUgYXR0cmlidXRlcyBsaXN0ZWQgYWJvdmUgdGhhdCBhcHBseSB0bworICAgIGFsbCBQb2xpY2llcywgdGhpcyBwb2xpY3kgYWRkcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgYXR0cmlidXRlczoKKworICAgIHJlZm9sZF9zb3VyY2UgICAgICAgLS0gaWYgdGhlIHZhbHVlIGZvciBhIGhlYWRlciBpbiB0aGUgTWVzc2FnZSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbWUgZnJvbSB0aGUgcGFyc2luZyBvZiBzb21lIHNvdXJjZSwgdGhpcyBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCBhIGdlbmVyYXRvciBzaG91bGQgcmVmb2xkCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHZhbHVlIHdoZW4gdHJhbnNmb3JtaW5nIHRoZSBtZXNzYWdlIGJhY2sgaW50bworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtIGZvcm0uICBUaGUgcG9zc2libGUgdmFsdWVzIGFyZToKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uZSAgLS0gYWxsIHNvdXJjZSB2YWx1ZXMgdXNlIG9yaWdpbmFsIGZvbGRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgIC0tIHNvdXJjZSB2YWx1ZXMgdGhhdCBoYXZlIGFueSBsaW5lIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdlciB0aGFuIG1heF9saW5lX2xlbmd0aCB3aWxsIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZvbGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsICAtLSBhbGwgdmFsdWVzIGFyZSByZWZvbGRlZC4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgaXMgJ2xvbmcnLgorCisgICAgaGVhZGVyX2ZhY3RvcnkgICAgICAtLSBhIGNhbGxhYmxlIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cywgJ25hbWUnIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJywgd2hlcmUgJ25hbWUnIGlzIGEgaGVhZGVyIGZpZWxkIG5hbWUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnIGlzIGFuIHVuZm9sZGVkIGhlYWRlciBmaWVsZCB2YWx1ZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgc3RyaW5nLWxpa2Ugb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXIuICBBIGRlZmF1bHQgaGVhZGVyX2ZhY3RvcnkgaXMgcHJvdmlkZWQgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZXJzdGFuZHMgc29tZSBvZiB0aGUgUkZDNTMyMiBoZWFkZXIgZmllbGQgdHlwZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ3VycmVudGx5IGFkZHJlc3MgZmllbGRzIGFuZCBkYXRlIGZpZWxkcyBoYXZlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWFsIHRyZWF0bWVudCwgd2hpbGUgYWxsIG90aGVyIGZpZWxkcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWF0ZWQgYXMgdW5zdHJ1Y3R1cmVkLiAgVGhpcyBsaXN0IHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCBiZWZvcmUgdGhlIGV4dGVuc2lvbiBpcyBtYXJrZWQgc3RhYmxlLikKKyAgICAiIiIKKworICAgIHJlZm9sZF9zb3VyY2UgPSAnbG9uZycKKyAgICBoZWFkZXJfZmFjdG9yeSA9IEhlYWRlclJlZ2lzdHJ5KCkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCBlYWNoIG5ldyBpbnN0YW5jZSBnZXRzIGEgdW5pcXVlIGhlYWRlciBmYWN0b3J5CisgICAgICAgICMgKGFzIG9wcG9zZWQgdG8gY2xvbmVzLCB3aGljaCBzaGFyZSB0aGUgZmFjdG9yeSkuCisgICAgICAgIGlmICdoZWFkZXJfZmFjdG9yeScgbm90IGluIGt3OgorICAgICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsICdoZWFkZXJfZmFjdG9yeScsIEhlYWRlclJlZ2lzdHJ5KCkpCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprdykKKworICAgIGRlZiBoZWFkZXJfbWF4X2NvdW50KHNlbGYsIG5hbWUpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhpcyBjbGFzcyByZXR1cm5zIHRoZSBtYXhfY291bnQgYXR0cmlidXRlIGZyb20KKyAgICAgICAgdGhlIHNwZWNpYWxpemVkIGhlYWRlciBjbGFzcyB0aGF0IHdvdWxkIGJlIHVzZWQgdG8gY29uc3RydWN0IGEgaGVhZGVyCisgICAgICAgIG9mIHR5cGUgJ25hbWUnLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnlbbmFtZV0ubWF4X2NvdW50CisKKyAgICAjIFRoZSBsb2dpYyBvZiB0aGUgbmV4dCB0aHJlZSBtZXRob2RzIGlzIGNob3NlbiBzdWNoIHRoYXQgaXQgaXMgcG9zc2libGUgdG8KKyAgICAjIHN3aXRjaCBhIE1lc3NhZ2Ugb2JqZWN0IGJldHdlZW4gYSBDb21wYXQzMiBwb2xpY3kgYW5kIGEgcG9saWN5IGRlcml2ZWQKKyAgICAjIGZyb20gdGhpcyBjbGFzcyBhbmQgaGF2ZSB0aGUgcmVzdWx0cyBzdGF5IGNvbnNpc3RlbnQuICBUaGlzIGFsbG93cyBhCisgICAgIyBNZXNzYWdlIG9iamVjdCBjb25zdHJ1Y3RlZCB3aXRoIHRoaXMgcG9saWN5IHRvIGJlIHBhc3NlZCB0byBhIGxpYnJhcnkKKyAgICAjIHRoYXQgb25seSBoYW5kbGVzIENvbXBhdDMyIG9iamVjdHMsIG9yIHRvIHJlY2VpdmUgc3VjaCBhbiBvYmplY3QgYW5kCisgICAgIyBjb252ZXJ0IGl0IHRvIHVzZSB0aGUgbmV3ZXIgc3R5bGUgYnkganVzdCBjaGFuZ2luZyBpdHMgcG9saWN5LiAgSXQgaXMKKyAgICAjIGFsc28gY2hvc2VuIGJlY2F1c2UgaXQgcG9zdHBvbmVzIHRoZSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBmdWxsIHJmYzUzMjIKKyAgICAjIHBhcnNlIHVudGlsIGFzIGxhdGUgYXMgcG9zc2libGUgd2hlbiBwYXJzaW5nIGZyb20gc291cmNlLCBzaW5jZSBpbiBtYW55CisgICAgIyBhcHBsaWNhdGlvbnMgb25seSBhIGZldyBoZWFkZXJzIHdpbGwgYWN0dWFsbHkgYmUgaW5zcGVjdGVkLgorCisgICAgZGVmIGhlYWRlcl9zb3VyY2VfcGFyc2Uoc2VsZiwgc291cmNlbGluZXMpOgorICAgICAgICAiIiIrCisgICAgICAgIFRoZSBuYW1lIGlzIHBhcnNlZCBhcyBldmVyeXRoaW5nIHVwIHRvIHRoZSAnOicgYW5kIHJldHVybmVkIHVubW9kaWZpZWQuCisgICAgICAgIFRoZSB2YWx1ZSBpcyBkZXRlcm1pbmVkIGJ5IHN0cmlwcGluZyBsZWFkaW5nIHdoaXRlc3BhY2Ugb2ZmIHRoZQorICAgICAgICByZW1haW5kZXIgb2YgdGhlIGZpcnN0IGxpbmUsIGpvaW5pbmcgYWxsIHN1YnNlcXVlbnQgbGluZXMgdG9nZXRoZXIsIGFuZAorICAgICAgICBzdHJpcHBpbmcgYW55IHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiBvciBsaW5lZmVlZCBjaGFyYWN0ZXJzLiAgKFRoaXMKKyAgICAgICAgaXMgdGhlIHNhbWUgYXMgQ29tcGF0MzIpLgorCisgICAgICAgICIiIgorICAgICAgICBuYW1lLCB2YWx1ZSA9IHNvdXJjZWxpbmVzWzBdLnNwbGl0KCc6JywgMSkKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5sc3RyaXAoJyBcdCcpICsgJycuam9pbihzb3VyY2VsaW5lc1sxOl0pCisgICAgICAgIHJldHVybiAobmFtZSwgdmFsdWUucnN0cmlwKCdcclxuJykpCisKKyAgICBkZWYgaGVhZGVyX3N0b3JlX3BhcnNlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgIiIiKworICAgICAgICBUaGUgbmFtZSBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBJZiB0aGUgaW5wdXQgdmFsdWUgaGFzIGEgJ25hbWUnCisgICAgICAgIGF0dHJpYnV0ZSBhbmQgaXQgbWF0Y2hlcyB0aGUgbmFtZSBpZ25vcmluZyBjYXNlLCB0aGUgdmFsdWUgaXMgcmV0dXJuZWQKKyAgICAgICAgdW5jaGFuZ2VkLiAgT3RoZXJ3aXNlIHRoZSBuYW1lIGFuZCB2YWx1ZSBhcmUgcGFzc2VkIHRvIGhlYWRlcl9mYWN0b3J5CisgICAgICAgIG1ldGhvZCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQgYXMgdGhlCisgICAgICAgIHZhbHVlLiAgSW4gdGhpcyBjYXNlIGEgVmFsdWVFcnJvciBpcyByYWlzZWQgaWYgdGhlIGlucHV0IHZhbHVlIGNvbnRhaW5zCisgICAgICAgIENSIG9yIExGIGNoYXJhY3RlcnMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJykgYW5kIHZhbHVlLm5hbWUubG93ZXIoKSA9PSBuYW1lLmxvd2VyKCk6CisgICAgICAgICAgICByZXR1cm4gKG5hbWUsIHZhbHVlKQorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpIGFuZCBsZW4odmFsdWUuc3BsaXRsaW5lcygpKT4xOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSGVhZGVyIHZhbHVlcyBtYXkgbm90IGNvbnRhaW4gbGluZWZlZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3IgY2FycmlhZ2UgcmV0dXJuIGNoYXJhY3RlcnMiKQorICAgICAgICByZXR1cm4gKG5hbWUsIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgdmFsdWUpKQorCisgICAgZGVmIGhlYWRlcl9mZXRjaF9wYXJzZShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgSWYgdGhlIHZhbHVlIGhhcyBhICduYW1lJyBhdHRyaWJ1dGUsIGl0IGlzIHJldHVybmVkIHRvIHVubW9kaWZpZWQuCisgICAgICAgIE90aGVyd2lzZSB0aGUgbmFtZSBhbmQgdGhlIHZhbHVlIHdpdGggYW55IGxpbmVzZXAgY2hhcmFjdGVycyByZW1vdmVkCisgICAgICAgIGFyZSBwYXNzZWQgdG8gdGhlIGhlYWRlcl9mYWN0b3J5IG1ldGhvZCwgYW5kIHRoZSByZXN1bHRpbmcgY3VzdG9tCisgICAgICAgIGhlYWRlciBvYmplY3QgaXMgcmV0dXJuZWQuICBBbnkgc3Vycm9nYXRlZXNjYXBlZCBieXRlcyBnZXQgdHVybmVkCisgICAgICAgIGludG8gdGhlIHVuaWNvZGUgdW5rbm93bi1jaGFyYWN0ZXIgZ2x5cGguCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGhhc2F0dHIodmFsdWUsICduYW1lJyk6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKyAgICAgICAgcmV0dXJuIHNlbGYuaGVhZGVyX2ZhY3RvcnkobmFtZSwgJycuam9pbih2YWx1ZS5zcGxpdGxpbmVzKCkpKQorCisgICAgZGVmIGZvbGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAiIiIrCisgICAgICAgIEhlYWRlciBmb2xkaW5nIGlzIGNvbnRyb2xsZWQgYnkgdGhlIHJlZm9sZF9zb3VyY2UgcG9saWN5IHNldHRpbmcuICBBCisgICAgICAgIHZhbHVlIGlzIGNvbnNpZGVyZWQgdG8gYmUgYSAnc291cmNlIHZhbHVlJyBpZiBhbmQgb25seSBpZiBpdCBkb2VzIG5vdAorICAgICAgICBoYXZlIGEgJ25hbWUnIGF0dHJpYnV0ZSAoaGF2aW5nIGEgJ25hbWUnIGF0dHJpYnV0ZSBtZWFucyBpdCBpcyBhIGhlYWRlcgorICAgICAgICBvYmplY3Qgb2Ygc29tZSBzb3J0KS4gIElmIGEgc291cmNlIHZhbHVlIG5lZWRzIHRvIGJlIHJlZm9sZGVkIGFjY29yZGluZworICAgICAgICB0byB0aGUgcG9saWN5LCBpdCBpcyBjb252ZXJ0ZWQgaW50byBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGJ5IHBhc3NpbmcKKyAgICAgICAgdGhlIG5hbWUgYW5kIHRoZSB2YWx1ZSB3aXRoIGFueSBsaW5lc2VwIGNoYXJhY3RlcnMgcmVtb3ZlZCB0byB0aGUKKyAgICAgICAgaGVhZGVyX2ZhY3RvcnkgbWV0aG9kLiAgRm9sZGluZyBvZiBhIGN1c3RvbSBoZWFkZXIgb2JqZWN0IGlzIGRvbmUgYnkKKyAgICAgICAgY2FsbGluZyBpdHMgZm9sZCBtZXRob2Qgd2l0aCB0aGUgY3VycmVudCBwb2xpY3kuCisKKyAgICAgICAgU291cmNlIHZhbHVlcyBhcmUgc3BsaXQgaW50byBsaW5lcyB1c2luZyBzcGxpdGxpbmVzLiAgSWYgdGhlIHZhbHVlIGlzCisgICAgICAgIG5vdCB0byBiZSByZWZvbGRlZCwgdGhlIGxpbmVzIGFyZSByZWpvaW5lZCB1c2luZyB0aGUgbGluZXNlcCBmcm9tIHRoZQorICAgICAgICBwb2xpY3kgYW5kIHJldHVybmVkLiAgVGhlIGV4Y2VwdGlvbiBpcyBsaW5lcyBjb250YWluaW5nIG5vbi1hc2NpaQorICAgICAgICBiaW5hcnkgZGF0YS4gIEluIHRoYXQgY2FzZSB0aGUgdmFsdWUgaXMgcmVmb2xkZWQgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgcmVmb2xkX3NvdXJjZSBzZXR0aW5nLCB3aGljaCBjYXVzZXMgdGhlIGJpbmFyeSBkYXRhIHRvIGJlIENURSBlbmNvZGVkCisgICAgICAgIHVzaW5nIHRoZSB1bmtub3duLThiaXQgY2hhcnNldC4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZvbGQobmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9VHJ1ZSkKKworICAgIGRlZiBmb2xkX2JpbmFyeShzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgICIiIisKKyAgICAgICAgVGhlIHNhbWUgYXMgZm9sZCBpZiBjdGVfdHlwZSBpcyA3Yml0LCBleGNlcHQgdGhhdCB0aGUgcmV0dXJuZWQgdmFsdWUgaXMKKyAgICAgICAgYnl0ZXMuCisKKyAgICAgICAgSWYgY3RlX3R5cGUgaXMgOGJpdCwgbm9uLUFTQ0lJIGJpbmFyeSBkYXRhIGlzIGNvbnZlcnRlZCBiYWNrIGludG8KKyAgICAgICAgYnl0ZXMuICBIZWFkZXJzIHdpdGggYmluYXJ5IGRhdGEgYXJlIG5vdCByZWZvbGRlZCwgcmVnYXJkbGVzcyBvZiB0aGUKKyAgICAgICAgcmVmb2xkX2hlYWRlciBzZXR0aW5nLCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8ga25vdyB3aGV0aGVyIHRoZSBiaW5hcnkKKyAgICAgICAgZGF0YSBjb25zaXN0cyBvZiBzaW5nbGUgYnl0ZSBjaGFyYWN0ZXJzIG9yIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLgorCisgICAgICAgICIiIgorICAgICAgICBmb2xkZWQgPSBzZWxmLl9mb2xkKG5hbWUsIHZhbHVlLCByZWZvbGRfYmluYXJ5PXNlbGYuY3RlX3R5cGU9PSc3Yml0JykKKyAgICAgICAgcmV0dXJuIGZvbGRlZC5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgX2ZvbGQoc2VsZiwgbmFtZSwgdmFsdWUsIHJlZm9sZF9iaW5hcnk9RmFsc2UpOgorICAgICAgICBpZiBoYXNhdHRyKHZhbHVlLCAnbmFtZScpOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZvbGQocG9saWN5PXNlbGYpCisgICAgICAgIG1heGxlbiA9IHNlbGYubWF4X2xpbmVfbGVuZ3RoIGlmIHNlbGYubWF4X2xpbmVfbGVuZ3RoIGVsc2UgZmxvYXQoJ2luZicpCisgICAgICAgIGxpbmVzID0gdmFsdWUuc3BsaXRsaW5lcygpCisgICAgICAgIHJlZm9sZCA9IChzZWxmLnJlZm9sZF9zb3VyY2UgPT0gJ2FsbCcgb3IKKyAgICAgICAgICAgICAgICAgIHNlbGYucmVmb2xkX3NvdXJjZSA9PSAnbG9uZycgYW5kCisgICAgICAgICAgICAgICAgICAgIChsZW4obGluZXNbMF0pK2xlbihuYW1lKSsyID4gbWF4bGVuIG9yCisgICAgICAgICAgICAgICAgICAgICBhbnkobGVuKHgpID4gbWF4bGVuIGZvciB4IGluIGxpbmVzWzE6XSkpKQorICAgICAgICBpZiByZWZvbGQgb3IgcmVmb2xkX2JpbmFyeSBhbmQgX2hhc19zdXJyb2dhdGVzKHZhbHVlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsICcnLmpvaW4obGluZXMpKS5mb2xkKHBvbGljeT1zZWxmKQorICAgICAgICByZXR1cm4gbmFtZSArICc6ICcgKyBzZWxmLmxpbmVzZXAuam9pbihsaW5lcykgKyBzZWxmLmxpbmVzZXAKKworCitkZWZhdWx0ID0gRW1haWxQb2xpY3koKQorIyBNYWtlIHRoZSBkZWZhdWx0IHBvbGljeSB1c2UgdGhlIGNsYXNzIGRlZmF1bHQgaGVhZGVyX2ZhY3RvcnkKK2RlbCBkZWZhdWx0LmhlYWRlcl9mYWN0b3J5CitzdHJpY3QgPSBkZWZhdWx0LmNsb25lKHJhaXNlX29uX2RlZmVjdD1UcnVlKQorU01UUCA9IGRlZmF1bHQuY2xvbmUobGluZXNlcD0nXHJcbicpCitIVFRQID0gZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdcclxuJywgbWF4X2xpbmVfbGVuZ3RoPU5vbmUpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdXRpbHMucHkgYi9MaWIvZW1haWwvdXRpbHMucHkKaW5kZXggYWM0ZGEzNy4uNmI2ZDdmNCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3V0aWxzLnB5CisrKyBiL0xpYi9lbWFpbC91dGlscy5weQpAQCAtMTEsMTIgKzExLDE0IEBACiAgICAgJ2VuY29kZV9yZmMyMjMxJywKICAgICAnZm9ybWF0YWRkcicsCiAgICAgJ2Zvcm1hdGRhdGUnLAorICAgICdmb3JtYXRfZGF0ZXRpbWUnLAogICAgICdnZXRhZGRyZXNzZXMnLAogICAgICdtYWtlX21zZ2lkJywKICAgICAnbWt0aW1lX3R6JywKICAgICAncGFyc2VhZGRyJywKICAgICAncGFyc2VkYXRlJywKICAgICAncGFyc2VkYXRlX3R6JywKKyAgICAncGFyc2VkYXRlX3RvX2RhdGV0aW1lJywKICAgICAndW5xdW90ZScsCiAgICAgXQogCkBAIC0yNiw2ICsyOCw3IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc29ja2V0CitpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB1cmxsaWIucGFyc2UKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KQEAgLTM0LDE0ICszNywxMyBAQAogZnJvbSBlbWFpbC5fcGFyc2VhZGRyIGltcG9ydCBBZGRyZXNzTGlzdCBhcyBfQWRkcmVzc0xpc3QKIGZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgbWt0aW1lX3R6CiAKLSMgV2UgbmVlZCB3b3JtYXJvdW5kcyBmb3IgYnVncyBpbiB0aGVzZSBtZXRob2RzIGluIG9sZGVyIFB5dGhvbnMgKHNlZSBiZWxvdykKLWZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgcGFyc2VkYXRlIGFzIF9wYXJzZWRhdGUKLWZyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgcGFyc2VkYXRlX3R6IGFzIF9wYXJzZWRhdGVfdHoKK2Zyb20gZW1haWwuX3BhcnNlYWRkciBpbXBvcnQgcGFyc2VkYXRlLCBwYXJzZWRhdGVfdHosIF9wYXJzZWRhdGVfdHoKIAogZnJvbSBxdW9wcmkgaW1wb3J0IGRlY29kZXN0cmluZyBhcyBfcWRlY29kZQogCiAjIEludHJhcGFja2FnZSBpbXBvcnRzCiBmcm9tIGVtYWlsLmVuY29kZXJzIGltcG9ydCBfYmVuY29kZSwgX3FlbmNvZGUKK2Zyb20gZW1haWwuY2hhcnNldCBpbXBvcnQgQ2hhcnNldAogCiBDT01NQVNQQUNFID0gJywgJwogRU1QVFlTVFJJTkcgPSAnJwpAQCAtNTAsMjcgKzUyLDUzIEBACiBUSUNLID0gIiciCiAKIHNwZWNpYWxzcmUgPSByZS5jb21waWxlKHInW11bXFwoKTw+QCw6OyIuXScpCi1lc2NhcGVzcmUgPSByZS5jb21waWxlKHInW11bXFwoKSJdJykKK2VzY2FwZXNyZSA9IHJlLmNvbXBpbGUocidbXFwiXScpCiAKKyMgSG93IHRvIGZpZ3VyZSBvdXQgaWYgd2UgYXJlIHByb2Nlc3Npbmcgc3RyaW5ncyB0aGF0IGNvbWUgZnJvbSBhIGJ5dGUKKyMgc291cmNlIHdpdGggdW5kZWNvZGFibGUgY2hhcmFjdGVycy4KK19oYXNfc3Vycm9nYXRlcyA9IHJlLmNvbXBpbGUoCisgICAgJyhbXlx1ZDgwMC1cdWRiZmZdfFxBKVtcdWRjMDAtXHVkZmZmXShbXlx1ZGMwMC1cdWRmZmZdfFxaKScpLnNlYXJjaAorCisjIEhvdyB0byBkZWFsIHdpdGggYSBzdHJpbmcgY29udGFpbmluZyBieXRlcyBiZWZvcmUgaGFuZGluZyBpdCB0byB0aGUKKyMgYXBwbGljYXRpb24gdGhyb3VnaCB0aGUgJ25vcm1hbCcgaW50ZXJmYWNlLgorZGVmIF9zYW5pdGl6ZShzdHJpbmcpOgorICAgICMgVHVybiBhbnkgZXNjYXBlZCBieXRlcyBpbnRvIHVuaWNvZGUgJ3Vua25vd24nIGNoYXIuCisgICAgb3JpZ2luYWxfYnl0ZXMgPSBzdHJpbmcuZW5jb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgIHJldHVybiBvcmlnaW5hbF9ieXRlcy5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQogCiAKICMgSGVscGVycwogCi1kZWYgZm9ybWF0YWRkcihwYWlyKToKK2RlZiBmb3JtYXRhZGRyKHBhaXIsIGNoYXJzZXQ9J3V0Zi04Jyk6CiAgICAgIiIiVGhlIGludmVyc2Ugb2YgcGFyc2VhZGRyKCksIHRoaXMgdGFrZXMgYSAyLXR1cGxlIG9mIHRoZSBmb3JtCiAgICAgKHJlYWxuYW1lLCBlbWFpbF9hZGRyZXNzKSBhbmQgcmV0dXJucyB0aGUgc3RyaW5nIHZhbHVlIHN1aXRhYmxlCiAgICAgZm9yIGFuIFJGQyAyODIyIEZyb20sIFRvIG9yIENjIGhlYWRlci4KIAogICAgIElmIHRoZSBmaXJzdCBlbGVtZW50IG9mIHBhaXIgaXMgZmFsc2UsIHRoZW4gdGhlIHNlY29uZCBlbGVtZW50IGlzCiAgICAgcmV0dXJuZWQgdW5tb2RpZmllZC4KKworICAgIE9wdGlvbmFsIGNoYXJzZXQgaWYgZ2l2ZW4gaXMgdGhlIGNoYXJhY3RlciBzZXQgdGhhdCBpcyB1c2VkIHRvIGVuY29kZQorICAgIHJlYWxuYW1lIGluIGNhc2UgcmVhbG5hbWUgaXMgbm90IEFTQ0lJIHNhZmUuICBDYW4gYmUgYW4gaW5zdGFuY2Ugb2Ygc3RyIG9yCisgICAgYSBDaGFyc2V0LWxpa2Ugb2JqZWN0IHdoaWNoIGhhcyBhIGhlYWRlcl9lbmNvZGUgbWV0aG9kLiAgRGVmYXVsdCBpcworICAgICd1dGYtOCcuCiAgICAgIiIiCiAgICAgbmFtZSwgYWRkcmVzcyA9IHBhaXIKKyAgICAjIFRoZSBhZGRyZXNzIE1VU1QgKHBlciBSRkMpIGJlIGFzY2lpLCBzbyB0aHJvdyBhIFVuaWNvZGVFcnJvciBpZiBpdCBpc24ndC4KKyAgICBhZGRyZXNzLmVuY29kZSgnYXNjaWknKQogICAgIGlmIG5hbWU6Ci0gICAgICAgIHF1b3RlcyA9ICcnCi0gICAgICAgIGlmIHNwZWNpYWxzcmUuc2VhcmNoKG5hbWUpOgotICAgICAgICAgICAgcXVvdGVzID0gJyInCi0gICAgICAgIG5hbWUgPSBlc2NhcGVzcmUuc3ViKHInXFxcZzwwPicsIG5hbWUpCi0gICAgICAgIHJldHVybiAnJXMlcyVzIDwlcz4nICUgKHF1b3RlcywgbmFtZSwgcXVvdGVzLCBhZGRyZXNzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lLmVuY29kZSgnYXNjaWknKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjaGFyc2V0LCBzdHIpOgorICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBDaGFyc2V0KGNoYXJzZXQpCisgICAgICAgICAgICBlbmNvZGVkX25hbWUgPSBjaGFyc2V0LmhlYWRlcl9lbmNvZGUobmFtZSkKKyAgICAgICAgICAgIHJldHVybiAiJXMgPCVzPiIgJSAoZW5jb2RlZF9uYW1lLCBhZGRyZXNzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcXVvdGVzID0gJycKKyAgICAgICAgICAgIGlmIHNwZWNpYWxzcmUuc2VhcmNoKG5hbWUpOgorICAgICAgICAgICAgICAgIHF1b3RlcyA9ICciJworICAgICAgICAgICAgbmFtZSA9IGVzY2FwZXNyZS5zdWIocidcXFxnPDA+JywgbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAnJXMlcyVzIDwlcz4nICUgKHF1b3RlcywgbmFtZSwgcXVvdGVzLCBhZGRyZXNzKQogICAgIHJldHVybiBhZGRyZXNzCiAKIApAQCAtOTQsNiArMTIyLDE0IEBACiAgICcnJywgcmUuVkVSQk9TRSB8IHJlLklHTk9SRUNBU0UpCiAKIAorZGVmIF9mb3JtYXRfdGltZXR1cGxlX2FuZF96b25lKHRpbWV0dXBsZSwgem9uZSk6CisgICAgcmV0dXJuICclcywgJTAyZCAlcyAlMDRkICUwMmQ6JTAyZDolMDJkICVzJyAlICgKKyAgICAgICAgWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXVt0aW1ldHVwbGVbNl1dLAorICAgICAgICB0aW1ldHVwbGVbMl0sCisgICAgICAgIFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLAorICAgICAgICAgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11bdGltZXR1cGxlWzFdIC0gMV0sCisgICAgICAgIHRpbWV0dXBsZVswXSwgdGltZXR1cGxlWzNdLCB0aW1ldHVwbGVbNF0sIHRpbWV0dXBsZVs1XSwKKyAgICAgICAgem9uZSkKIAogZGVmIGZvcm1hdGRhdGUodGltZXZhbD1Ob25lLCBsb2NhbHRpbWU9RmFsc2UsIHVzZWdtdD1GYWxzZSk6CiAgICAgIiIiUmV0dXJucyBhIGRhdGUgc3RyaW5nIGFzIHNwZWNpZmllZCBieSBSRkMgMjgyMiwgZS5nLjoKQEAgLTEzOCwxNCArMTc0LDI1IEBACiAgICAgICAgICAgICB6b25lID0gJ0dNVCcKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHpvbmUgPSAnLTAwMDAnCi0gICAgcmV0dXJuICclcywgJTAyZCAlcyAlMDRkICUwMmQ6JTAyZDolMDJkICVzJyAlICgKLSAgICAgICAgWydNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCcsICdTdW4nXVtub3dbNl1dLAotICAgICAgICBub3dbMl0sCi0gICAgICAgIFsnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLAotICAgICAgICAgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ11bbm93WzFdIC0gMV0sCi0gICAgICAgIG5vd1swXSwgbm93WzNdLCBub3dbNF0sIG5vd1s1XSwKLSAgICAgICAgem9uZSkKKyAgICByZXR1cm4gX2Zvcm1hdF90aW1ldHVwbGVfYW5kX3pvbmUobm93LCB6b25lKQogCitkZWYgZm9ybWF0X2RhdGV0aW1lKGR0LCB1c2VnbXQ9RmFsc2UpOgorICAgICIiIlR1cm4gYSBkYXRldGltZSBpbnRvIGEgZGF0ZSBzdHJpbmcgYXMgc3BlY2lmaWVkIGluIFJGQyAyODIyLgorCisgICAgSWYgdXNlZ210IGlzIFRydWUsIGR0IG11c3QgYmUgYW4gYXdhcmUgZGF0ZXRpbWUgd2l0aCBhbiBvZmZzZXQgb2YgemVyby4gIEluCisgICAgdGhpcyBjYXNlICdHTVQnIHdpbGwgYmUgcmVuZGVyZWQgaW5zdGVhZCBvZiB0aGUgbm9ybWFsICswMDAwIHJlcXVpcmVkIGJ5CisgICAgUkZDMjgyMi4gIFRoaXMgaXMgdG8gc3VwcG9ydCBIVFRQIGhlYWRlcnMgaW52b2x2aW5nIGRhdGUgc3RhbXBzLgorICAgICIiIgorICAgIG5vdyA9IGR0LnRpbWV0dXBsZSgpCisgICAgaWYgdXNlZ210OgorICAgICAgICBpZiBkdC50emluZm8gaXMgTm9uZSBvciBkdC50emluZm8gIT0gZGF0ZXRpbWUudGltZXpvbmUudXRjOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidXNlZ210IG9wdGlvbiByZXF1aXJlcyBhIFVUQyBkYXRldGltZSIpCisgICAgICAgIHpvbmUgPSAnR01UJworICAgIGVsaWYgZHQudHppbmZvIGlzIE5vbmU6CisgICAgICAgIHpvbmUgPSAnLTAwMDAnCisgICAgZWxzZToKKyAgICAgICAgem9uZSA9IGR0LnN0cmZ0aW1lKCIleiIpCisgICAgcmV0dXJuIF9mb3JtYXRfdGltZXR1cGxlX2FuZF96b25lKG5vdywgem9uZSkKIAogCiBkZWYgbWFrZV9tc2dpZChpZHN0cmluZz1Ob25lLCBkb21haW49Tm9uZSk6CkBAIC0xNzIsMjAgKzIxOSwxMiBAQAogICAgIHJldHVybiBtc2dpZAogCiAKLQotIyBUaGVzZSBmdW5jdGlvbnMgYXJlIGluIHRoZSBzdGFuZGFsb25lIG1pbWVsaWIgdmVyc2lvbiBvbmx5IGJlY2F1c2UgdGhleSd2ZQotIyBzdWJzZXF1ZW50bHkgYmVlbiBmaXhlZCBpbiB0aGUgbGF0ZXN0IFB5dGhvbiB2ZXJzaW9ucy4gIFdlIHVzZSB0aGlzIHRvIHdvcm0KLSMgYXJvdW5kIGJyb2tlbiBvbGRlciBQeXRob25zLgotZGVmIHBhcnNlZGF0ZShkYXRhKToKLSAgICBpZiBub3QgZGF0YToKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gX3BhcnNlZGF0ZShkYXRhKQotCi0KLWRlZiBwYXJzZWRhdGVfdHooZGF0YSk6Ci0gICAgaWYgbm90IGRhdGE6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuIF9wYXJzZWRhdGVfdHooZGF0YSkKK2RlZiBwYXJzZWRhdGVfdG9fZGF0ZXRpbWUoZGF0YSk6CisgICAgKmR0dXBsZSwgdHogPSBfcGFyc2VkYXRlX3R6KGRhdGEpCisgICAgaWYgdHogaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCpkdHVwbGVbOjZdKQorICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZSgqZHR1cGxlWzo2XSwKKyAgICAgICAgICAgIHR6aW5mbz1kYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz10eikpKQogCiAKIGRlZiBwYXJzZWFkZHIoYWRkcik6CkBAIC0zMDQsMyArMzQzLDQ5IEBACiAgICAgZXhjZXB0IExvb2t1cEVycm9yOgogICAgICAgICAjIGNoYXJzZXQgaXMgbm90IGEga25vd24gY29kZWMuCiAgICAgICAgIHJldHVybiB1bnF1b3RlKHRleHQpCisKKworIworIyBkYXRldGltZSBkb2Vzbid0IHByb3ZpZGUgYSBsb2NhbHRpbWUgZnVuY3Rpb24geWV0LCBzbyBwcm92aWRlIG9uZS4gIENvZGUKKyMgYWRhcHRlZCBmcm9tIHRoZSBwYXRjaCBpbiBpc3N1ZSA5NTI3LiAgVGhpcyBtYXkgbm90IGJlIHBlcmZlY3QsIGJ1dCBpdCBpcworIyBiZXR0ZXIgdGhhbiBub3QgaGF2aW5nIGl0LgorIworCitkZWYgbG9jYWx0aW1lKGR0PU5vbmUsIGlzZHN0PS0xKToKKyAgICAiIiJSZXR1cm4gbG9jYWwgdGltZSBhcyBhbiBhd2FyZSBkYXRldGltZSBvYmplY3QuCisKKyAgICBJZiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMsIHJldHVybiBjdXJyZW50IHRpbWUuICBPdGhlcndpc2UgKmR0KgorICAgIGFyZ3VtZW50IHNob3VsZCBiZSBhIGRhdGV0aW1lIGluc3RhbmNlLCBhbmQgaXQgaXMgY29udmVydGVkIHRvIHRoZQorICAgIGxvY2FsIHRpbWUgem9uZSBhY2NvcmRpbmcgdG8gdGhlIHN5c3RlbSB0aW1lIHpvbmUgZGF0YWJhc2UuICBJZiAqZHQqIGlzCisgICAgbmFpdmUgKHRoYXQgaXMsIGR0LnR6aW5mbyBpcyBOb25lKSwgaXQgaXMgYXNzdW1lZCB0byBiZSBpbiBsb2NhbCB0aW1lLgorICAgIEluIHRoaXMgY2FzZSwgYSBwb3NpdGl2ZSBvciB6ZXJvIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyBsb2NhbHRpbWUgdG8KKyAgICBwcmVzdW1lIGluaXRpYWxseSB0aGF0IHN1bW1lciB0aW1lIChmb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5nIFRpbWUpCisgICAgaXMgb3IgaXMgbm90IChyZXNwZWN0aXZlbHkpIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLiAgQQorICAgIG5lZ2F0aXZlIHZhbHVlIGZvciAqaXNkc3QqIGNhdXNlcyB0aGUgbG9jYWx0aW1lKCkgZnVuY3Rpb24gdG8gYXR0ZW1wdAorICAgIHRvIGRpdmluZSB3aGV0aGVyIHN1bW1lciB0aW1lIGlzIGluIGVmZmVjdCBmb3IgdGhlIHNwZWNpZmllZCB0aW1lLgorCisgICAgIiIiCisgICAgaWYgZHQgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lLm5vdyhkYXRldGltZS50aW1lem9uZS51dGMpLmFzdGltZXpvbmUoKQorICAgIGlmIGR0LnR6aW5mbyBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGR0LmFzdGltZXpvbmUoKQorICAgICMgV2UgaGF2ZSBhIG5haXZlIGRhdGV0aW1lLiAgQ29udmVydCB0byBhIChsb2NhbHRpbWUpIHRpbWV0dXBsZSBhbmQgcGFzcyB0bworICAgICMgc3lzdGVtIG1rdGltZSB0b2dldGhlciB3aXRoIHRoZSBpc2RzdCBoaW50LiAgU3lzdGVtIG1rdGltZSB3aWxsIHJldHVybgorICAgICMgc2Vjb25kcyBzaW5jZSBlcG9jaC4KKyAgICB0bSA9IGR0LnRpbWV0dXBsZSgpWzotMV0gKyAoaXNkc3QsKQorICAgIHNlY29uZHMgPSB0aW1lLm1rdGltZSh0bSkKKyAgICBsb2NhbHRtID0gdGltZS5sb2NhbHRpbWUoc2Vjb25kcykKKyAgICB0cnk6CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9bG9jYWx0bS50bV9nbXRvZmYpCisgICAgICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUoZGVsdGEsIGxvY2FsdG0udG1fem9uZSkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICMgQ29tcHV0ZSBVVEMgb2Zmc2V0IGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIGltcGxpZWQgYnkgdG1faXNkc3QuCisgICAgICAgICMgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUgaW1wbGllZCBieSB0bV9pc2RzdC4KKyAgICAgICAgZGVsdGEgPSBkdCAtIGRhdGV0aW1lLmRhdGV0aW1lKCp0aW1lLmdtdGltZShzZWNvbmRzKVs6Nl0pCisgICAgICAgIGRzdCA9IHRpbWUuZGF5bGlnaHQgYW5kIGxvY2FsdG0udG1faXNkc3QgPiAwCisgICAgICAgIGdtdG9mZiA9IC0odGltZS5hbHR6b25lIGlmIGRzdCBlbHNlIHRpbWUudGltZXpvbmUpCisgICAgICAgIGlmIGRlbHRhID09IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZik6CisgICAgICAgICAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKGRlbHRhLCB0aW1lLnR6bmFtZVtkc3RdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHogPSBkYXRldGltZS50aW1lem9uZShkZWx0YSkKKyAgICByZXR1cm4gZHQucmVwbGFjZSh0emluZm89dHopCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5IGIvTGliL2VuY29kaW5ncy9jcDAzNy5weQppbmRleCA0ZWRkNzA4Li5iZmUyYzFlIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL2NwMDM3LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvY3AwMzcucHkKQEAgLTMwMSw2ICszMDEsNyBAQAogICAgICdceGQ5JyAgICAgIyAgMHhGRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKICAgICAnXHhkYScgICAgICMgIDB4RkUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiAgICAgJ1x4OWYnICAgICAjICAweEZGIC0+IENPTlRST0wKKyAgICAnXHVmZmZlJyAgICMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbgogKQogCiAjIyMgRW5jb2RpbmcgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkgYi9MaWIvZW5jb2RpbmdzL2NwNTAwLnB5CmluZGV4IDVmNjE1MzUuLmE5NzViZTcgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvY3A1MDAucHkKKysrIGIvTGliL2VuY29kaW5ncy9jcDUwMC5weQpAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgJ1x4ZDknICAgICAjICAweEZEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQogICAgICdceGRhJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKICAgICAnXHg5ZicgICAgICMgIDB4RkYgLT4gQ09OVFJPTAorICAgICdcdWZmZmUnICAgIyMgV2lkZW4gdG8gVUNTMiBmb3Igb3B0aW1pemF0aW9uCiApCiAKICMjIyBFbmNvZGluZyB0YWJsZQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5IGIvTGliL2VuY29kaW5ncy9jcDY1MDAxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4N2ViODcKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW5jb2RpbmdzL2NwNjUwMDEucHkKQEAgLTAsMCArMSw0MCBAQAorIiIiCitDb2RlIHBhZ2UgNjUwMDE6IFdpbmRvd3MgVVRGLTggKENQX1VURjgpLgorIiIiCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBmdW5jdG9vbHMKKworaWYgbm90IGhhc2F0dHIoY29kZWNzLCAnY29kZV9wYWdlX2VuY29kZScpOgorICAgIHJhaXNlIExvb2t1cEVycm9yKCJjcDY1MDAxIGVuY29kaW5nIGlzIG9ubHkgYXZhaWxhYmxlIG9uIFdpbmRvd3MiKQorCisjIyMgQ29kZWMgQVBJcworCitlbmNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgNjUwMDEpCitkZWNvZGUgPSBmdW5jdG9vbHMucGFydGlhbChjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgNjUwMDEpCisKK2NsYXNzIEluY3JlbWVudGFsRW5jb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxFbmNvZGVyKToKKyAgICBkZWYgZW5jb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6CisgICAgICAgIHJldHVybiBlbmNvZGUoaW5wdXQsIHNlbGYuZXJyb3JzKVswXQorCitjbGFzcyBJbmNyZW1lbnRhbERlY29kZXIoY29kZWNzLkJ1ZmZlcmVkSW5jcmVtZW50YWxEZWNvZGVyKToKKyAgICBfYnVmZmVyX2RlY29kZSA9IGRlY29kZQorCitjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CisgICAgZW5jb2RlID0gZW5jb2RlCisKK2NsYXNzIFN0cmVhbVJlYWRlcihjb2RlY3MuU3RyZWFtUmVhZGVyKToKKyAgICBkZWNvZGUgPSBkZWNvZGUKKworIyMjIGVuY29kaW5ncyBtb2R1bGUgQVBJCisKK2RlZiBnZXRyZWdlbnRyeSgpOgorICAgIHJldHVybiBjb2RlY3MuQ29kZWNJbmZvKAorICAgICAgICBuYW1lPSdjcDY1MDAxJywKKyAgICAgICAgZW5jb2RlPWVuY29kZSwKKyAgICAgICAgZGVjb2RlPWRlY29kZSwKKyAgICAgICAgaW5jcmVtZW50YWxlbmNvZGVyPUluY3JlbWVudGFsRW5jb2RlciwKKyAgICAgICAgaW5jcmVtZW50YWxkZWNvZGVyPUluY3JlbWVudGFsRGVjb2RlciwKKyAgICAgICAgc3RyZWFtcmVhZGVyPVN0cmVhbVJlYWRlciwKKyAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKKyAgICApCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2hwX3JvbWFuOC5weSBiL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5CmluZGV4IGRiYWFhNzIuLjIzMzQyMDggMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvaHBfcm9tYW44LnB5CkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMDcgKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW1yZWFkZXI9U3RyZWFtUmVhZGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMGExOiAweDAwYzAsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhMjogMHgwMGMyLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhMzogMHgwMGM4LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRQotICAgICAgICAweDAwYTQ6IDB4MDBjYSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYTU6IDB4MDBjYiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBhNjogMHgwMGNlLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhNzogMHgwMGNmLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGE4OiAweDAwYjQsICMgICAgICAgQUNVVEUgQUNDRU5UCi0gICAgICAgIDB4MDBhOTogMHgwMmNiLCAjICAgICAgIE1PRElGSUVSIExFVFRFUiBHUkFWRSBBQ0NFTlQgKE1hbmRhcmluIENoaW5lc2UgZm91cnRoIHRvbmUpCi0gICAgICAgIDB4MDBhYTogMHgwMmM2LCAjICAgICAgIE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAotICAgICAgICAweDAwYWI6IDB4MDBhOCwgIyAgICAgICBESUFFUkVTSVMKLSAgICAgICAgMHgwMGFjOiAweDAyZGMsICMgICAgICAgU01BTEwgVElMREUKLSAgICAgICAgMHgwMGFkOiAweDAwZDksICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBhZTogMHgwMGRiLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBhZjogMHgyMGE0LCAjICAgICAgIExJUkEgU0lHTgotICAgICAgICAweDAwYjA6IDB4MDBhZiwgIyAgICAgICBNQUNST04KLSAgICAgICAgMHgwMGIxOiAweDAwZGQsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBiMjogMHgwMGZkLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGIzOiAweDAwYjAsICMgICAgICAgREVHUkVFIFNJR04KLSAgICAgICAgMHgwMGI0OiAweDAwYzcsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI1OiAweDAwZTcsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiNjogMHgwMGQxLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQotICAgICAgICAweDAwYjc6IDB4MDBmMSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBiODogMHgwMGExLCAjICAgICAgIElOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUksKLSAgICAgICAgMHgwMGI5OiAweDAwYmYsICMgICAgICAgSU5WRVJURUQgUVVFU1RJT04gTUFSSwotICAgICAgICAweDAwYmE6IDB4MDBhNCwgIyAgICAgICBDVVJSRU5DWSBTSUdOCi0gICAgICAgIDB4MDBiYjogMHgwMGEzLCAjICAgICAgIFBPVU5EIFNJR04KLSAgICAgICAgMHgwMGJjOiAweDAwYTUsICMgICAgICAgWUVOIFNJR04KLSAgICAgICAgMHgwMGJkOiAweDAwYTcsICMgICAgICAgU0VDVElPTiBTSUdOCi0gICAgICAgIDB4MDBiZTogMHgwMTkyLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSwotICAgICAgICAweDAwYmY6IDB4MDBhMiwgIyAgICAgICBDRU5UIFNJR04KLSAgICAgICAgMHgwMGMwOiAweDAwZTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjMTogMHgwMGVhLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAotICAgICAgICAweDAwYzI6IDB4MDBmNCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGMzOiAweDAwZmIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBjNDogMHgwMGUxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM1OiAweDAwZTksICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwYzY6IDB4MDBmMywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjNzogMHgwMGZhLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM4OiAweDAwZTAsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRQotICAgICAgICAweDAwYzk6IDB4MDBlOCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBjYTogMHgwMGYyLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGNiOiAweDAwZjksICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQotICAgICAgICAweDAwY2M6IDB4MDBlNCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwY2Q6IDB4MDBlYiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwY2U6IDB4MDBmNiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwY2Y6IDB4MDBmYywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZDA6IDB4MDBjNSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQotICAgICAgICAweDAwZDE6IDB4MDBlZSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGQyOiAweDAwZDgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZDM6IDB4MDBjNiwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQotICAgICAgICAweDAwZDQ6IDB4MDBlNSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGQ1OiAweDAwZWQsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZDY6IDB4MDBmOCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQotICAgICAgICAweDAwZDc6IDB4MDBlNiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQUUKLSAgICAgICAgMHgwMGQ4OiAweDAwYzQsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZDk6IDB4MDBlYywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCi0gICAgICAgIDB4MDBkYTogMHgwMGQ2LCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGRiOiAweDAwZGMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZGM6IDB4MDBjOSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGRkOiAweDAwZWYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMGRlOiAweDAwZGYsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMgKEdlcm1hbikKLSAgICAgICAgMHgwMGRmOiAweDAwZDQsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMGUwOiAweDAwYzEsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlMTogMHgwMGMzLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERQotICAgICAgICAweDAwZTI6IDB4MDBlMywgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBlMzogMHgwMGQwLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQotICAgICAgICAweDAwZTQ6IDB4MDBmMCwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgRVRIIChJY2VsYW5kaWMpCi0gICAgICAgIDB4MDBlNTogMHgwMGNkLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTY6IDB4MDBjYywgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKLSAgICAgICAgMHgwMGU3OiAweDAwZDMsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlODogMHgwMGQyLCAjICAgICAgIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRQotICAgICAgICAweDAwZTk6IDB4MDBkNSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKLSAgICAgICAgMHgwMGVhOiAweDAwZjUsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwZWI6IDB4MDE2MCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVjOiAweDAxNjEsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZWQ6IDB4MDBkYSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGVlOiAweDAxNzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZWY6IDB4MDBmZiwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwZjA6IDB4MDBkZSwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQotICAgICAgICAweDAwZjE6IDB4MDBmZSwgIyAgICAgICBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKLSAgICAgICAgMHgwMGYyOiAweDAwYjcsICMgICAgICAgTUlERExFIERPVAotICAgICAgICAweDAwZjM6IDB4MDBiNSwgIyAgICAgICBNSUNSTyBTSUdOCi0gICAgICAgIDB4MDBmNDogMHgwMGI2LCAjICAgICAgIFBJTENST1cgU0lHTgotICAgICAgICAweDAwZjU6IDB4MDBiZSwgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlMKLSAgICAgICAgMHgwMGY2OiAweDIwMTQsICMgICAgICAgRU0gREFTSAotICAgICAgICAweDAwZjc6IDB4MDBiYywgIyAgICAgICBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKLSAgICAgICAgMHgwMGY4OiAweDAwYmQsICMgICAgICAgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCi0gICAgICAgIDB4MDBmOTogMHgwMGFhLCAjICAgICAgIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCi0gICAgICAgIDB4MDBmYTogMHgwMGJhLCAjICAgICAgIE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgotICAgICAgICAweDAwZmI6IDB4MDBhYiwgIyAgICAgICBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZmM6IDB4MjVhMCwgIyAgICAgICBCTEFDSyBTUVVBUkUKLSAgICAgICAgMHgwMGZkOiAweDAwYmIsICMgICAgICAgUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBmZTogMHgwMGIxLCAjICAgICAgIFBMVVMtTUlOVVMgU0lHTgotICAgICAgICAweDAwZmY6IE5vbmUsCi19KQorIyMjIERlY29kaW5nIFRhYmxlCiAKLSMjIyBFbmNvZGluZyBNYXAKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHg4MCcgICAgICMgIDB4ODAgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgorICAgICdceDgyJyAgICAgIyAgMHg4MiAtPiA8Y29udHJvbD4KKyAgICAnXHg4MycgICAgICMgIDB4ODMgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODQnICAgICAjICAweDg0IC0+IDxjb250cm9sPgorICAgICdceDg1JyAgICAgIyAgMHg4NSAtPiA8Y29udHJvbD4KKyAgICAnXHg4NicgICAgICMgIDB4ODYgLT4gPGNvbnRyb2w+CisgICAgJ1x4ODcnICAgICAjICAweDg3IC0+IDxjb250cm9sPgorICAgICdceDg4JyAgICAgIyAgMHg4OCAtPiA8Y29udHJvbD4KKyAgICAnXHg4OScgICAgICMgIDB4ODkgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGEnICAgICAjICAweDhBIC0+IDxjb250cm9sPgorICAgICdceDhiJyAgICAgIyAgMHg4QiAtPiA8Y29udHJvbD4KKyAgICAnXHg4YycgICAgICMgIDB4OEMgLT4gPGNvbnRyb2w+CisgICAgJ1x4OGQnICAgICAjICAweDhEIC0+IDxjb250cm9sPgorICAgICdceDhlJyAgICAgIyAgMHg4RSAtPiA8Y29udHJvbD4KKyAgICAnXHg4ZicgICAgICMgIDB4OEYgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTAnICAgICAjICAweDkwIC0+IDxjb250cm9sPgorICAgICdceDkxJyAgICAgIyAgMHg5MSAtPiA8Y29udHJvbD4KKyAgICAnXHg5MicgICAgICMgIDB4OTIgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTMnICAgICAjICAweDkzIC0+IDxjb250cm9sPgorICAgICdceDk0JyAgICAgIyAgMHg5NCAtPiA8Y29udHJvbD4KKyAgICAnXHg5NScgICAgICMgIDB4OTUgLT4gPGNvbnRyb2w+CisgICAgJ1x4OTYnICAgICAjICAweDk2IC0+IDxjb250cm9sPgorICAgICdceDk3JyAgICAgIyAgMHg5NyAtPiA8Y29udHJvbD4KKyAgICAnXHg5OCcgICAgICMgIDB4OTggLT4gPGNvbnRyb2w+CisgICAgJ1x4OTknICAgICAjICAweDk5IC0+IDxjb250cm9sPgorICAgICdceDlhJyAgICAgIyAgMHg5QSAtPiA8Y29udHJvbD4KKyAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWMnICAgICAjICAweDlDIC0+IDxjb250cm9sPgorICAgICdceDlkJyAgICAgIyAgMHg5RCAtPiA8Y29udHJvbD4KKyAgICAnXHg5ZScgICAgICMgIDB4OUUgLT4gPGNvbnRyb2w+CisgICAgJ1x4OWYnICAgICAjICAweDlGIC0+IDxjb250cm9sPgorICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdceGMwJyAgICAgIyAgMHhBMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkUKKyAgICAnXHhjMicgICAgICMgIDB4QTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjOCcgICAgICMgIDB4QTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCisgICAgJ1x4Y2EnICAgICAjICAweEE0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2InICAgICAjICAweEE1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjZScgICAgICMgIDB4QTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhjZicgICAgICMgIDB4QTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworICAgICdceGI0JyAgICAgIyAgMHhBOCAtPiBBQ1VURSBBQ0NFTlQKKyAgICAnXHUwMmNiJyAgICMgIDB4QTkgLT4gTU9ESUZJRVIgTEVUVEVSIEdSQVZFIEFDQ0VOVCAoTUFOREFSSU4gQ0hJTkVTRSBGT1VSVEggVE9ORSkKKyAgICAnXHUwMmM2JyAgICMgIDB4QUEgLT4gTU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UCisgICAgJ1x4YTgnICAgICAjICAweEFCIC0+IERJQUVSRVNJUworICAgICdcdTAyZGMnICAgIyAgMHhBQyAtPiBTTUFMTCBUSUxERQorICAgICdceGQ5JyAgICAgIyAgMHhBRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkUKKyAgICAnXHhkYicgICAgICMgIDB4QUUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHUyMGE0JyAgICMgIDB4QUYgLT4gTElSQSBTSUdOCisgICAgJ1x4YWYnICAgICAjICAweEIwIC0+IE1BQ1JPTgorICAgICdceGRkJyAgICAgIyAgMHhCMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhmZCcgICAgICMgIDB4QjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGIwJyAgICAgIyAgMHhCMyAtPiBERUdSRUUgU0lHTgorICAgICdceGM3JyAgICAgIyAgMHhCNCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGU3JyAgICAgIyAgMHhCNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKyAgICAnXHhkMScgICAgICMgIDB4QjYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFCisgICAgJ1x4ZjEnICAgICAjICAweEI3IC0+IExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhhMScgICAgICMgIDB4QjggLT4gSU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSworICAgICdceGJmJyAgICAgIyAgMHhCOSAtPiBJTlZFUlRFRCBRVUVTVElPTiBNQVJLCisgICAgJ1x4YTQnICAgICAjICAweEJBIC0+IENVUlJFTkNZIFNJR04KKyAgICAnXHhhMycgICAgICMgIDB4QkIgLT4gUE9VTkQgU0lHTgorICAgICdceGE1JyAgICAgIyAgMHhCQyAtPiBZRU4gU0lHTgorICAgICdceGE3JyAgICAgIyAgMHhCRCAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHUwMTkyJyAgICMgIDB4QkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCisgICAgJ1x4YTInICAgICAjICAweEJGIC0+IENFTlQgU0lHTgorICAgICdceGUyJyAgICAgIyAgMHhDMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlYScgICAgICMgIDB4QzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjQnICAgICAjICAweEMyIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGZiJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVgKKyAgICAnXHhlMScgICAgICMgIDB4QzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGU5JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZjMnICAgICAjICAweEM2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhmYScgICAgICMgIDB4QzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGUwJyAgICAgIyAgMHhDOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4ZTgnICAgICAjICAweEM5IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhmMicgICAgICMgIDB4Q0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQorICAgICdceGY5JyAgICAgIyAgMHhDQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZTQnICAgICAjICAweENDIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWInICAgICAjICAweENEIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjYnICAgICAjICAweENFIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZmMnICAgICAjICAweENGIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzUnICAgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZWUnICAgICAjICAweEQxIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGQ4JyAgICAgIyAgMHhEMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4YzYnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEFFCisgICAgJ1x4ZTUnICAgICAjICAweEQ0IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorICAgICdceGVkJyAgICAgIyAgMHhENSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4ZjgnICAgICAjICAweEQ2IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFCisgICAgJ1x4ZTYnICAgICAjICAweEQ3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQorICAgICdceGM0JyAgICAgIyAgMHhEOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZWMnICAgICAjICAweEQ5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkUKKyAgICAnXHhkNicgICAgICMgIDB4REEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGRjJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4YzknICAgICAjICAweERDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdceGVmJyAgICAgIyAgMHhERCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworICAgICdceGRmJyAgICAgIyAgMHhERSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR0VSTUFOKQorICAgICdceGQ0JyAgICAgIyAgMHhERiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGMxJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHhjMycgICAgICMgIDB4RTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFCisgICAgJ1x4ZTMnICAgICAjICAweEUyIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhkMCcgICAgICMgIDB4RTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIIChJQ0VMQU5ESUMpCisgICAgJ1x4ZjAnICAgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKElDRUxBTkRJQykKKyAgICAnXHhjZCcgICAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCisgICAgJ1x4Y2MnICAgICAjICAweEU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQorICAgICdceGQzJyAgICAgIyAgMHhFNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhkMicgICAgICMgIDB4RTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZDUnICAgICAjICAweEU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdceGY1JyAgICAgIyAgMHhFQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x1MDE2MCcgICAjICAweEVCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTAxNjEnICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OCisgICAgJ1x4ZGEnICAgICAjICAweEVEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdcdTAxNzgnICAgIyAgMHhFRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZmYnICAgICAjICAweEVGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGUnICAgICAjICAweEYwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOIChJQ0VMQU5ESUMpCisgICAgJ1x4ZmUnICAgICAjICAweEYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBUSE9STiAoSUNFTEFORElDKQorICAgICdceGI3JyAgICAgIyAgMHhGMiAtPiBNSURETEUgRE9UCisgICAgJ1x4YjUnICAgICAjICAweEYzIC0+IE1JQ1JPIFNJR04KKyAgICAnXHhiNicgICAgICMgIDB4RjQgLT4gUElMQ1JPVyBTSUdOCisgICAgJ1x4YmUnICAgICAjICAweEY1IC0+IFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUworICAgICdcdTIwMTQnICAgIyAgMHhGNiAtPiBFTSBEQVNICisgICAgJ1x4YmMnICAgICAjICAweEY3IC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgorICAgICdceGJkJyAgICAgIyAgMHhGOCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKKyAgICAnXHhhYScgICAgICMgIDB4RjkgLT4gRkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhiYScgICAgICMgIDB4RkEgLT4gTUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SCisgICAgJ1x4YWInICAgICAjICAweEZCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjVhMCcgICAjICAweEZDIC0+IEJMQUNLIFNRVUFSRQorICAgICdceGJiJyAgICAgIyAgMHhGRCAtPiBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiMScgICAgICMgIDB4RkUgLT4gUExVUy1NSU5VUyBTSUdOCisgICAgJ1x1ZmZmZScKKykKIAotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2lkbmEucHkgYi9MaWIvZW5jb2RpbmdzL2lkbmEucHkKaW5kZXggNTgzYmRmMS4uZWE0MDU4NSAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9pZG5hLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvaWRuYS5weQpAQCAtMTUzLDYgKzE1MywyMCBAQAogICAgICAgICBpZiBub3QgaW5wdXQ6CiAgICAgICAgICAgICByZXR1cm4gYicnLCAwCiAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gaW5wdXQuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFTQ0lJIG5hbWU6IGZhc3QgcGF0aAorICAgICAgICAgICAgbGFiZWxzID0gcmVzdWx0LnNwbGl0KGInLicpCisgICAgICAgICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzWzotMV06CisgICAgICAgICAgICAgICAgaWYgbm90ICgwIDwgbGVuKGxhYmVsKSA8IDY0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJsYWJlbCBlbXB0eSBvciB0b28gbG9uZyIpCisgICAgICAgICAgICBpZiBsZW4obGFiZWxzWy0xXSkgPj0gNjQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVycm9yKCJsYWJlbCB0b28gbG9uZyIpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LCBsZW4oaW5wdXQpCisKICAgICAgICAgcmVzdWx0ID0gYnl0ZWFycmF5KCkKICAgICAgICAgbGFiZWxzID0gZG90cy5zcGxpdChpbnB1dCkKICAgICAgICAgaWYgbGFiZWxzIGFuZCBub3QgbGFiZWxzWy0xXToKQEAgLTE3OSw2ICsxOTMsMTQgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5wdXQsIGJ5dGVzKToKICAgICAgICAgICAgICMgWFhYIG9idmlvdXNseSB3cm9uZywgc2VlICMzMjMyCiAgICAgICAgICAgICBpbnB1dCA9IGJ5dGVzKGlucHV0KQorCisgICAgICAgIGlmIGFjZV9wcmVmaXggbm90IGluIGlucHV0OgorICAgICAgICAgICAgIyBGYXN0IHBhdGgKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQuZGVjb2RlKCdhc2NpaScpLCBsZW4oaW5wdXQpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKwogICAgICAgICBsYWJlbHMgPSBpbnB1dC5zcGxpdChiIi4iKQogCiAgICAgICAgIGlmIGxhYmVscyBhbmQgbGVuKGxhYmVsc1stMV0pID09IDA6CmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL2lzbzg4NTlfMS5weSBiL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5CmluZGV4IDhjZmMwMWYuLmQ5Y2M1MTYgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvaXNvODg1OV8xLnB5CkBAIC0zMDEsNiArMzAxLDcgQEAKICAgICAnXHhmZCcgICAgICMgIDB4RkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQogICAgICdceGZlJyAgICAgIyAgMHhGRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk4gKEljZWxhbmRpYykKICAgICAnXHhmZicgICAgICMgIDB4RkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKyAgICAnXHVmZmZlJyAgICMjIFdpZGVuIHRvIFVDUzIgZm9yIG9wdGltaXphdGlvbgogKQogCiAjIyMgRW5jb2RpbmcgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weSBiL0xpYi9lbmNvZGluZ3MvbWFjX2xhdGluMi5weQppbmRleCBlMzIyYmUyLi5kYTlkNGIxIDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL21hY19sYXRpbjIucHkKKysrIGIvTGliL2VuY29kaW5ncy9tYWNfbGF0aW4yLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiIFB5dGhvbiBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyBnZW5lcmF0ZWQgZnJvbSAnTEFUSU4yLlRYVCcgd2l0aCBnZW5jb2RlYy5weS4KKyIiIiBQeXRob24gQ2hhcmFjdGVyIE1hcHBpbmcgQ29kZWMgbWFjX2xhdGluMiBnZW5lcmF0ZWQgZnJvbSAnTUFQUElOR1MvVkVORE9SUy9NSUNTRlQvTUFDL0xBVElOMi5UWFQnIHdpdGggZ2VuY29kZWMucHkuCiAKIFdyaXR0ZW4gYnkgTWFyYy1BbmRyZSBMZW1idXJnIChtYWxAbGVtYnVyZy5jb20pLgogCkBAIC0xNCwxOCArMTQsMTggQEAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAKICAgICBkZWYgZW5jb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LGVycm9ycyxlbmNvZGluZ190YWJsZSkKIAogICAgIGRlZiBkZWNvZGUoc2VsZixpbnB1dCxlcnJvcnM9J3N0cmljdCcpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ19tYXApCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsZXJyb3JzLGRlY29kaW5nX3RhYmxlKQogCiBjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CiAgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgotICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZW5jb2RlKGlucHV0LHNlbGYuZXJyb3JzLGVuY29kaW5nX21hcClbMF0KKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ190YWJsZSlbMF0KIAogY2xhc3MgSW5jcmVtZW50YWxEZWNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbERlY29kZXIpOgogICAgIGRlZiBkZWNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxzZWxmLmVycm9ycyxkZWNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIFN0cmVhbVdyaXRlcihDb2RlYyxjb2RlY3MuU3RyZWFtV3JpdGVyKToKICAgICBwYXNzCkBAIC00NiwxMzggKzQ2LDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCi1kZWNvZGluZ19tYXAudXBkYXRlKHsKLSAgICAgICAgMHgwMDgwOiAweDAwYzQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODE6IDB4MDEwMCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MjogMHgwMTAxLCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA4MzogMHgwMGM5LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURQotICAgICAgICAweDAwODQ6IDB4MDEwNCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDA4NTogMHgwMGQ2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDg2OiAweDAwZGMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwODc6IDB4MDBlMSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ODogMHgwMTA1LCAjIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDA4OTogMHgwMTBjLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTgotICAgICAgICAweDAwOGE6IDB4MDBlNCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUwotICAgICAgICAweDAwOGI6IDB4MDEwZCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA4YzogMHgwMTA2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURQotICAgICAgICAweDAwOGQ6IDB4MDEwNywgIyBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA4ZTogMHgwMGU5LCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDhmOiAweDAxNzksICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5MDogMHgwMTdhLCAjIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkxOiAweDAxMGUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5MjogMHgwMGVkLCAjIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMDkzOiAweDAxMGYsICMgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgotICAgICAgICAweDAwOTQ6IDB4MDExMiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA5NTogMHgwMTEzLCAjIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDA5NjogMHgwMTE2LCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMDk3OiAweDAwZjMsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQotICAgICAgICAweDAwOTg6IDB4MDExNywgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQotICAgICAgICAweDAwOTk6IDB4MDBmNCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVgKLSAgICAgICAgMHgwMDlhOiAweDAwZjYsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKLSAgICAgICAgMHgwMDliOiAweDAwZjUsICMgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERQotICAgICAgICAweDAwOWM6IDB4MDBmYSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDA5ZDogMHgwMTFhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTgotICAgICAgICAweDAwOWU6IDB4MDExYiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OCi0gICAgICAgIDB4MDA5ZjogMHgwMGZjLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCi0gICAgICAgIDB4MDBhMDogMHgyMDIwLCAjIERBR0dFUgotICAgICAgICAweDAwYTE6IDB4MDBiMCwgIyBERUdSRUUgU0lHTgotICAgICAgICAweDAwYTI6IDB4MDExOCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBhNDogMHgwMGE3LCAjIFNFQ1RJT04gU0lHTgotICAgICAgICAweDAwYTU6IDB4MjAyMiwgIyBCVUxMRVQKLSAgICAgICAgMHgwMGE2OiAweDAwYjYsICMgUElMQ1JPVyBTSUdOCi0gICAgICAgIDB4MDBhNzogMHgwMGRmLCAjIExBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTCi0gICAgICAgIDB4MDBhODogMHgwMGFlLCAjIFJFR0lTVEVSRUQgU0lHTgotICAgICAgICAweDAwYWE6IDB4MjEyMiwgIyBUUkFERSBNQVJLIFNJR04KLSAgICAgICAgMHgwMGFiOiAweDAxMTksICMgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUsKLSAgICAgICAgMHgwMGFjOiAweDAwYTgsICMgRElBRVJFU0lTCi0gICAgICAgIDB4MDBhZDogMHgyMjYwLCAjIE5PVCBFUVVBTCBUTwotICAgICAgICAweDAwYWU6IDB4MDEyMywgIyBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGFmOiAweDAxMmUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYjA6IDB4MDEyZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSwotICAgICAgICAweDAwYjE6IDB4MDEyYSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBiMjogMHgyMjY0LCAjIExFU1MtVEhBTiBPUiBFUVVBTCBUTwotICAgICAgICAweDAwYjM6IDB4MjI2NSwgIyBHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE8KLSAgICAgICAgMHgwMGI0OiAweDAxMmIsICMgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGI1OiAweDAxMzYsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGI2OiAweDIyMDIsICMgUEFSVElBTCBESUZGRVJFTlRJQUwKLSAgICAgICAgMHgwMGI3OiAweDIyMTEsICMgTi1BUlkgU1VNTUFUSU9OCi0gICAgICAgIDB4MDBiODogMHgwMTQyLCAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFCi0gICAgICAgIDB4MDBiOTogMHgwMTNiLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBCi0gICAgICAgIDB4MDBiYTogMHgwMTNjLCAjIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYmI6IDB4MDEzZCwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGJjOiAweDAxM2UsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTgotICAgICAgICAweDAwYmQ6IDB4MDEzOSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGJlOiAweDAxM2EsICMgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURQotICAgICAgICAweDAwYmY6IDB4MDE0NSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwYzA6IDB4MDE0NiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGMxOiAweDAxNDMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBjMjogMHgwMGFjLCAjIE5PVCBTSUdOCi0gICAgICAgIDB4MDBjMzogMHgyMjFhLCAjIFNRVUFSRSBST09UCi0gICAgICAgIDB4MDBjNDogMHgwMTQ0LCAjIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGM1OiAweDAxNDcsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBjNjogMHgyMjA2LCAjIElOQ1JFTUVOVAotICAgICAgICAweDAwYzc6IDB4MDBhYiwgIyBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwYzg6IDB4MDBiYiwgIyBSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGM5OiAweDIwMjYsICMgSE9SSVpPTlRBTCBFTExJUFNJUwotICAgICAgICAweDAwY2E6IDB4MDBhMCwgIyBOTy1CUkVBSyBTUEFDRQotICAgICAgICAweDAwY2I6IDB4MDE0OCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBjYzogMHgwMTUwLCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKLSAgICAgICAgMHgwMGNkOiAweDAwZDUsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFCi0gICAgICAgIDB4MDBjZTogMHgwMTUxLCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCi0gICAgICAgIDB4MDBjZjogMHgwMTRjLCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGQwOiAweDIwMTMsICMgRU4gREFTSAotICAgICAgICAweDAwZDE6IDB4MjAxNCwgIyBFTSBEQVNICi0gICAgICAgIDB4MDBkMjogMHgyMDFjLCAjIExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDBkMzogMHgyMDFkLCAjIFJJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDQ6IDB4MjAxOCwgIyBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZDU6IDB4MjAxOSwgIyBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGQ2OiAweDAwZjcsICMgRElWSVNJT04gU0lHTgotICAgICAgICAweDAwZDc6IDB4MjVjYSwgIyBMT1pFTkdFCi0gICAgICAgIDB4MDBkODogMHgwMTRkLCAjIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBkOTogMHgwMTU0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQotICAgICAgICAweDAwZGE6IDB4MDE1NSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBkYjogMHgwMTU4LCAjIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTgotICAgICAgICAweDAwZGM6IDB4MjAzOSwgIyBTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZGQ6IDB4MjAzYSwgIyBTSU5HTEUgUklHSFQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGRlOiAweDAxNTksICMgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTgotICAgICAgICAweDAwZGY6IDB4MDE1NiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZTA6IDB4MDE1NywgIyBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGUxOiAweDAxNjAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlMjogMHgyMDFhLCAjIFNJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwZTM6IDB4MjAxZSwgIyBET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMGU0OiAweDAxNjEsICMgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgotICAgICAgICAweDAwZTU6IDB4MDE1YSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU2OiAweDAxNWIsICMgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURQotICAgICAgICAweDAwZTc6IDB4MDBjMSwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKLSAgICAgICAgMHgwMGU4OiAweDAxNjQsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlOTogMHgwMTY1LCAjIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST04KLSAgICAgICAgMHgwMGVhOiAweDAwY2QsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlYjogMHgwMTdkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTgotICAgICAgICAweDAwZWM6IDB4MDE3ZSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCi0gICAgICAgIDB4MDBlZDogMHgwMTZhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGVlOiAweDAwZDMsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBlZjogMHgwMGQ0LCAjIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCi0gICAgICAgIDB4MDBmMDogMHgwMTZiLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCi0gICAgICAgIDB4MDBmMTogMHgwMTZlLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCi0gICAgICAgIDB4MDBmMjogMHgwMGRhLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQotICAgICAgICAweDAwZjM6IDB4MDE2ZiwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKLSAgICAgICAgMHgwMGY0OiAweDAxNzAsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwZjU6IDB4MDE3MSwgIyBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURQotICAgICAgICAweDAwZjY6IDB4MDE3MiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBmNzogMHgwMTczLCAjIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLCi0gICAgICAgIDB4MDBmODogMHgwMGRkLCAjIExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQotICAgICAgICAweDAwZjk6IDB4MDBmZCwgIyBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFCi0gICAgICAgIDB4MDBmYTogMHgwMTM3LCAjIExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQQotICAgICAgICAweDAwZmI6IDB4MDE3YiwgIyBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCi0gICAgICAgIDB4MDBmYzogMHgwMTQxLCAjIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGZkOiAweDAxN2MsICMgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkUKLSAgICAgICAgMHgwMGZlOiAweDAxMjIsICMgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEEKLSAgICAgICAgMHgwMGZmOiAweDAyYzcsICMgQ0FST04KLX0pCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyMjIEVuY29kaW5nIE1hcAorZGVjb2RpbmdfdGFibGUgPSAoCisgICAgJ1x4MDAnICAgICAjICAweDAwIC0+IE5VTEwKKyAgICAnXHgwMScgICAgICMgIDB4MDEgLT4gU1RBUlQgT0YgSEVBRElORworICAgICdceDAyJyAgICAgIyAgMHgwMiAtPiBTVEFSVCBPRiBURVhUCisgICAgJ1x4MDMnICAgICAjICAweDAzIC0+IEVORCBPRiBURVhUCisgICAgJ1x4MDQnICAgICAjICAweDA0IC0+IEVORCBPRiBUUkFOU01JU1NJT04KKyAgICAnXHgwNScgICAgICMgIDB4MDUgLT4gRU5RVUlSWQorICAgICdceDA2JyAgICAgIyAgMHgwNiAtPiBBQ0tOT1dMRURHRQorICAgICdceDA3JyAgICAgIyAgMHgwNyAtPiBCRUxMCisgICAgJ1x4MDgnICAgICAjICAweDA4IC0+IEJBQ0tTUEFDRQorICAgICdcdCcgICAgICAgIyAgMHgwOSAtPiBIT1JJWk9OVEFMIFRBQlVMQVRJT04KKyAgICAnXG4nICAgICAgICMgIDB4MEEgLT4gTElORSBGRUVECisgICAgJ1x4MGInICAgICAjICAweDBCIC0+IFZFUlRJQ0FMIFRBQlVMQVRJT04KKyAgICAnXHgwYycgICAgICMgIDB4MEMgLT4gRk9STSBGRUVECisgICAgJ1xyJyAgICAgICAjICAweDBEIC0+IENBUlJJQUdFIFJFVFVSTgorICAgICdceDBlJyAgICAgIyAgMHgwRSAtPiBTSElGVCBPVVQKKyAgICAnXHgwZicgICAgICMgIDB4MEYgLT4gU0hJRlQgSU4KKyAgICAnXHgxMCcgICAgICMgIDB4MTAgLT4gREFUQSBMSU5LIEVTQ0FQRQorICAgICdceDExJyAgICAgIyAgMHgxMSAtPiBERVZJQ0UgQ09OVFJPTCBPTkUKKyAgICAnXHgxMicgICAgICMgIDB4MTIgLT4gREVWSUNFIENPTlRST0wgVFdPCisgICAgJ1x4MTMnICAgICAjICAweDEzIC0+IERFVklDRSBDT05UUk9MIFRIUkVFCisgICAgJ1x4MTQnICAgICAjICAweDE0IC0+IERFVklDRSBDT05UUk9MIEZPVVIKKyAgICAnXHgxNScgICAgICMgIDB4MTUgLT4gTkVHQVRJVkUgQUNLTk9XTEVER0UKKyAgICAnXHgxNicgICAgICMgIDB4MTYgLT4gU1lOQ0hST05PVVMgSURMRQorICAgICdceDE3JyAgICAgIyAgMHgxNyAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLCisgICAgJ1x4MTgnICAgICAjICAweDE4IC0+IENBTkNFTAorICAgICdceDE5JyAgICAgIyAgMHgxOSAtPiBFTkQgT0YgTUVESVVNCisgICAgJ1x4MWEnICAgICAjICAweDFBIC0+IFNVQlNUSVRVVEUKKyAgICAnXHgxYicgICAgICMgIDB4MUIgLT4gRVNDQVBFCisgICAgJ1x4MWMnICAgICAjICAweDFDIC0+IEZJTEUgU0VQQVJBVE9SCisgICAgJ1x4MWQnICAgICAjICAweDFEIC0+IEdST1VQIFNFUEFSQVRPUgorICAgICdceDFlJyAgICAgIyAgMHgxRSAtPiBSRUNPUkQgU0VQQVJBVE9SCisgICAgJ1x4MWYnICAgICAjICAweDFGIC0+IFVOSVQgU0VQQVJBVE9SCisgICAgJyAnICAgICAgICAjICAweDIwIC0+IFNQQUNFCisgICAgJyEnICAgICAgICAjICAweDIxIC0+IEVYQ0xBTUFUSU9OIE1BUksKKyAgICAnIicgICAgICAgICMgIDB4MjIgLT4gUVVPVEFUSU9OIE1BUksKKyAgICAnIycgICAgICAgICMgIDB4MjMgLT4gTlVNQkVSIFNJR04KKyAgICAnJCcgICAgICAgICMgIDB4MjQgLT4gRE9MTEFSIFNJR04KKyAgICAnJScgICAgICAgICMgIDB4MjUgLT4gUEVSQ0VOVCBTSUdOCisgICAgJyYnICAgICAgICAjICAweDI2IC0+IEFNUEVSU0FORAorICAgICInIiAgICAgICAgIyAgMHgyNyAtPiBBUE9TVFJPUEhFCisgICAgJygnICAgICAgICAjICAweDI4IC0+IExFRlQgUEFSRU5USEVTSVMKKyAgICAnKScgICAgICAgICMgIDB4MjkgLT4gUklHSFQgUEFSRU5USEVTSVMKKyAgICAnKicgICAgICAgICMgIDB4MkEgLT4gQVNURVJJU0sKKyAgICAnKycgICAgICAgICMgIDB4MkIgLT4gUExVUyBTSUdOCisgICAgJywnICAgICAgICAjICAweDJDIC0+IENPTU1BCisgICAgJy0nICAgICAgICAjICAweDJEIC0+IEhZUEhFTi1NSU5VUworICAgICcuJyAgICAgICAgIyAgMHgyRSAtPiBGVUxMIFNUT1AKKyAgICAnLycgICAgICAgICMgIDB4MkYgLT4gU09MSURVUworICAgICcwJyAgICAgICAgIyAgMHgzMCAtPiBESUdJVCBaRVJPCisgICAgJzEnICAgICAgICAjICAweDMxIC0+IERJR0lUIE9ORQorICAgICcyJyAgICAgICAgIyAgMHgzMiAtPiBESUdJVCBUV08KKyAgICAnMycgICAgICAgICMgIDB4MzMgLT4gRElHSVQgVEhSRUUKKyAgICAnNCcgICAgICAgICMgIDB4MzQgLT4gRElHSVQgRk9VUgorICAgICc1JyAgICAgICAgIyAgMHgzNSAtPiBESUdJVCBGSVZFCisgICAgJzYnICAgICAgICAjICAweDM2IC0+IERJR0lUIFNJWAorICAgICc3JyAgICAgICAgIyAgMHgzNyAtPiBESUdJVCBTRVZFTgorICAgICc4JyAgICAgICAgIyAgMHgzOCAtPiBESUdJVCBFSUdIVAorICAgICc5JyAgICAgICAgIyAgMHgzOSAtPiBESUdJVCBOSU5FCisgICAgJzonICAgICAgICAjICAweDNBIC0+IENPTE9OCisgICAgJzsnICAgICAgICAjICAweDNCIC0+IFNFTUlDT0xPTgorICAgICc8JyAgICAgICAgIyAgMHgzQyAtPiBMRVNTLVRIQU4gU0lHTgorICAgICc9JyAgICAgICAgIyAgMHgzRCAtPiBFUVVBTFMgU0lHTgorICAgICc+JyAgICAgICAgIyAgMHgzRSAtPiBHUkVBVEVSLVRIQU4gU0lHTgorICAgICc/JyAgICAgICAgIyAgMHgzRiAtPiBRVUVTVElPTiBNQVJLCisgICAgJ0AnICAgICAgICAjICAweDQwIC0+IENPTU1FUkNJQUwgQVQKKyAgICAnQScgICAgICAgICMgIDB4NDEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorICAgICdCJyAgICAgICAgIyAgMHg0MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisgICAgJ0MnICAgICAgICAjICAweDQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEMKKyAgICAnRCcgICAgICAgICMgIDB4NDQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorICAgICdFJyAgICAgICAgIyAgMHg0NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisgICAgJ0YnICAgICAgICAjICAweDQ2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEYKKyAgICAnRycgICAgICAgICMgIDB4NDcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworICAgICdIJyAgICAgICAgIyAgMHg0OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisgICAgJ0knICAgICAgICAjICAweDQ5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkKKyAgICAnSicgICAgICAgICMgIDB4NEEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorICAgICdLJyAgICAgICAgIyAgMHg0QiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisgICAgJ0wnICAgICAgICAjICAweDRDIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEwKKyAgICAnTScgICAgICAgICMgIDB4NEQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorICAgICdOJyAgICAgICAgIyAgMHg0RSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisgICAgJ08nICAgICAgICAjICAweDRGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8KKyAgICAnUCcgICAgICAgICMgIDB4NTAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorICAgICdRJyAgICAgICAgIyAgMHg1MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisgICAgJ1InICAgICAgICAjICAweDUyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFIKKyAgICAnUycgICAgICAgICMgIDB4NTMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworICAgICdUJyAgICAgICAgIyAgMHg1NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisgICAgJ1UnICAgICAgICAjICAweDU1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUKKyAgICAnVicgICAgICAgICMgIDB4NTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorICAgICdXJyAgICAgICAgIyAgMHg1NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisgICAgJ1gnICAgICAgICAjICAweDU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFgKKyAgICAnWScgICAgICAgICMgIDB4NTkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorICAgICdaJyAgICAgICAgIyAgMHg1QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisgICAgJ1snICAgICAgICAjICAweDVCIC0+IExFRlQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXFwnICAgICAgICMgIDB4NUMgLT4gUkVWRVJTRSBTT0xJRFVTCisgICAgJ10nICAgICAgICAjICAweDVEIC0+IFJJR0hUIFNRVUFSRSBCUkFDS0VUCisgICAgJ14nICAgICAgICAjICAweDVFIC0+IENJUkNVTUZMRVggQUNDRU5UCisgICAgJ18nICAgICAgICAjICAweDVGIC0+IExPVyBMSU5FCisgICAgJ2AnICAgICAgICAjICAweDYwIC0+IEdSQVZFIEFDQ0VOVAorICAgICdhJyAgICAgICAgIyAgMHg2MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQQorICAgICdiJyAgICAgICAgIyAgMHg2MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQgorICAgICdjJyAgICAgICAgIyAgMHg2MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQworICAgICdkJyAgICAgICAgIyAgMHg2NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRAorICAgICdlJyAgICAgICAgIyAgMHg2NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRQorICAgICdmJyAgICAgICAgIyAgMHg2NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRgorICAgICdnJyAgICAgICAgIyAgMHg2NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRworICAgICdoJyAgICAgICAgIyAgMHg2OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSAorICAgICdpJyAgICAgICAgIyAgMHg2OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSQorICAgICdqJyAgICAgICAgIyAgMHg2QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSgorICAgICdrJyAgICAgICAgIyAgMHg2QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSworICAgICdsJyAgICAgICAgIyAgMHg2QyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTAorICAgICdtJyAgICAgICAgIyAgMHg2RCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTQorICAgICduJyAgICAgICAgIyAgMHg2RSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTgorICAgICdvJyAgICAgICAgIyAgMHg2RiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTworICAgICdwJyAgICAgICAgIyAgMHg3MCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUAorICAgICdxJyAgICAgICAgIyAgMHg3MSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUQorICAgICdyJyAgICAgICAgIyAgMHg3MiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUgorICAgICdzJyAgICAgICAgIyAgMHg3MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgUworICAgICd0JyAgICAgICAgIyAgMHg3NCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVAorICAgICd1JyAgICAgICAgIyAgMHg3NSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVQorICAgICd2JyAgICAgICAgIyAgMHg3NiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVgorICAgICd3JyAgICAgICAgIyAgMHg3NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVworICAgICd4JyAgICAgICAgIyAgMHg3OCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWAorICAgICd5JyAgICAgICAgIyAgMHg3OSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWQorICAgICd6JyAgICAgICAgIyAgMHg3QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgWgorICAgICd7JyAgICAgICAgIyAgMHg3QiAtPiBMRUZUIENVUkxZIEJSQUNLRVQKKyAgICAnfCcgICAgICAgICMgIDB4N0MgLT4gVkVSVElDQUwgTElORQorICAgICd9JyAgICAgICAgIyAgMHg3RCAtPiBSSUdIVCBDVVJMWSBCUkFDS0VUCisgICAgJ34nICAgICAgICAjICAweDdFIC0+IFRJTERFCisgICAgJ1x4N2YnICAgICAjICAweDdGIC0+IERFTEVURQorICAgICdceGM0JyAgICAgIyAgMHg4MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x1MDEwMCcgICAjICAweDgxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KKyAgICAnXHUwMTAxJyAgICMgIDB4ODIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST04KKyAgICAnXHhjOScgICAgICMgIDB4ODMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x1MDEwNCcgICAjICAweDg0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKKyAgICAnXHhkNicgICAgICMgIDB4ODUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGRjJyAgICAgIyAgMHg4NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZTEnICAgICAjICAweDg3IC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHUwMTA1JyAgICMgIDB4ODggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUsKKyAgICAnXHUwMTBjJyAgICMgIDB4ODkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OCisgICAgJ1x4ZTQnICAgICAjICAweDhBIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCisgICAgJ1x1MDEwZCcgICAjICAweDhCIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KKyAgICAnXHUwMTA2JyAgICMgIDB4OEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFCisgICAgJ1x1MDEwNycgICAjICAweDhEIC0+IExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKKyAgICAnXHhlOScgICAgICMgIDB4OEUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQorICAgICdcdTAxNzknICAgIyAgMHg4RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEUKKyAgICAnXHUwMTdhJyAgICMgIDB4OTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURQorICAgICdcdTAxMGUnICAgIyAgMHg5MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST04KKyAgICAnXHhlZCcgICAgICMgIDB4OTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdcdTAxMGYnICAgIyAgMHg5MyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OCisgICAgJ1x1MDExMicgICAjICAweDk0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KKyAgICAnXHUwMTEzJyAgICMgIDB4OTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KKyAgICAnXHUwMTE2JyAgICMgIDB4OTYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQorICAgICdceGYzJyAgICAgIyAgMHg5NyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFCisgICAgJ1x1MDExNycgICAjICAweDk4IC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x4ZjQnICAgICAjICAweDk5IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGY2JyAgICAgIyAgMHg5QSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGY1JyAgICAgIyAgMHg5QiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCisgICAgJ1x4ZmEnICAgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHUwMTFhJyAgICMgIDB4OUQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OCisgICAgJ1x1MDExYicgICAjICAweDlFIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KKyAgICAnXHhmYycgICAgICMgIDB4OUYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHUyMDIwJyAgICMgIDB4QTAgLT4gREFHR0VSCisgICAgJ1x4YjAnICAgICAjICAweEExIC0+IERFR1JFRSBTSUdOCisgICAgJ1x1MDExOCcgICAjICAweEEyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKyAgICAnXHhhMycgICAgICMgIDB4QTMgLT4gUE9VTkQgU0lHTgorICAgICdceGE3JyAgICAgIyAgMHhBNCAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHUyMDIyJyAgICMgIDB4QTUgLT4gQlVMTEVUCisgICAgJ1x4YjYnICAgICAjICAweEE2IC0+IFBJTENST1cgU0lHTgorICAgICdceGRmJyAgICAgIyAgMHhBNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworICAgICdceGFlJyAgICAgIyAgMHhBOCAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHhhOScgICAgICMgIDB4QTkgLT4gQ09QWVJJR0hUIFNJR04KKyAgICAnXHUyMTIyJyAgICMgIDB4QUEgLT4gVFJBREUgTUFSSyBTSUdOCisgICAgJ1x1MDExOScgICAjICAweEFCIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCisgICAgJ1x4YTgnICAgICAjICAweEFDIC0+IERJQUVSRVNJUworICAgICdcdTIyNjAnICAgIyAgMHhBRCAtPiBOT1QgRVFVQUwgVE8KKyAgICAnXHUwMTIzJyAgICMgIDB4QUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBCisgICAgJ1x1MDEyZScgICAjICAweEFGIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKyAgICAnXHUwMTJmJyAgICMgIDB4QjAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKyAgICAnXHUwMTJhJyAgICMgIDB4QjEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTIyNjQnICAgIyAgMHhCMiAtPiBMRVNTLVRIQU4gT1IgRVFVQUwgVE8KKyAgICAnXHUyMjY1JyAgICMgIDB4QjMgLT4gR1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPCisgICAgJ1x1MDEyYicgICAjICAweEI0IC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OCisgICAgJ1x1MDEzNicgICAjICAweEI1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCisgICAgJ1x1MjIwMicgICAjICAweEI2IC0+IFBBUlRJQUwgRElGRkVSRU5USUFMCisgICAgJ1x1MjIxMScgICAjICAweEI3IC0+IE4tQVJZIFNVTU1BVElPTgorICAgICdcdTAxNDInICAgIyAgMHhCOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRQorICAgICdcdTAxM2InICAgIyAgMHhCOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorICAgICdcdTAxM2MnICAgIyAgMHhCQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEEKKyAgICAnXHUwMTNkJyAgICMgIDB4QkIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OCisgICAgJ1x1MDEzZScgICAjICAweEJDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST04KKyAgICAnXHUwMTM5JyAgICMgIDB4QkQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEFDVVRFCisgICAgJ1x1MDEzYScgICAjICAweEJFIC0+IExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEUKKyAgICAnXHUwMTQ1JyAgICMgIDB4QkYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTQ2JyAgICMgIDB4QzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBCisgICAgJ1x1MDE0MycgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURQorICAgICdceGFjJyAgICAgIyAgMHhDMiAtPiBOT1QgU0lHTgorICAgICdcdTIyMWEnICAgIyAgMHhDMyAtPiBTUVVBUkUgUk9PVAorICAgICdcdTAxNDQnICAgIyAgMHhDNCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFCisgICAgJ1x1MDE0NycgICAjICAweEM1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDQVJPTgorICAgICdcdTIyMDYnICAgIyAgMHhDNiAtPiBJTkNSRU1FTlQKKyAgICAnXHhhYicgICAgICMgIDB4QzcgLT4gTEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHhiYicgICAgICMgIDB4QzggLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyNicgICAjICAweEM5IC0+IEhPUklaT05UQUwgRUxMSVBTSVMKKyAgICAnXHhhMCcgICAgICMgIDB4Q0EgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHUwMTQ4JyAgICMgIDB4Q0IgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTgorICAgICdcdTAxNTAnICAgIyAgMHhDQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFCisgICAgJ1x4ZDUnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERQorICAgICdcdTAxNTEnICAgIyAgMHhDRSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQorICAgICdcdTAxNGMnICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OCisgICAgJ1x1MjAxMycgICAjICAweEQwIC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4RDEgLT4gRU0gREFTSAorICAgICdcdTIwMWMnICAgIyAgMHhEMiAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHhEMyAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE4JyAgICMgIDB4RDQgLT4gTEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDE5JyAgICMgIDB4RDUgLT4gUklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4ZjcnICAgICAjICAweEQ2IC0+IERJVklTSU9OIFNJR04KKyAgICAnXHUyNWNhJyAgICMgIDB4RDcgLT4gTE9aRU5HRQorICAgICdcdTAxNGQnICAgIyAgMHhEOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgorICAgICdcdTAxNTQnICAgIyAgMHhEOSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEUKKyAgICAnXHUwMTU1JyAgICMgIDB4REEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQorICAgICdcdTAxNTgnICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0FST04KKyAgICAnXHUyMDM5JyAgICMgIDB4REMgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDNhJyAgICMgIDB4REQgLT4gU0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDE1OScgICAjICAweERFIC0+IExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0FST04KKyAgICAnXHUwMTU2JyAgICMgIDB4REYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKyAgICAnXHUwMTU3JyAgICMgIDB4RTAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDRURJTExBCisgICAgJ1x1MDE2MCcgICAjICAweEUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorICAgICdcdTIwMWEnICAgIyAgMHhFMiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFlJyAgICMgIDB4RTMgLT4gRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MDE2MScgICAjICAweEU0IC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHUwMTVhJyAgICMgIDB4RTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFCisgICAgJ1x1MDE1YicgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUKKyAgICAnXHhjMScgICAgICMgIDB4RTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFCisgICAgJ1x1MDE2NCcgICAjICAweEU4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTgorICAgICdcdTAxNjUnICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OCisgICAgJ1x4Y2QnICAgICAjICAweEVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdcdTAxN2QnICAgIyAgMHhFQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST04KKyAgICAnXHUwMTdlJyAgICMgIDB4RUMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTgorICAgICdcdTAxNmEnICAgIyAgMHhFRCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OCisgICAgJ1x4ZDMnICAgICAjICAweEVFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQ0JyAgICAgIyAgMHhFRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdcdTAxNmInICAgIyAgMHhGMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdcdTAxNmUnICAgIyAgMHhGMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRQorICAgICdceGRhJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHUwMTZmJyAgICMgIDB4RjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x1MDE3MCcgICAjICAweEY0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHUwMTcxJyAgICMgIDB4RjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKyAgICAnXHUwMTcyJyAgICMgIDB4RjYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSworICAgICdcdTAxNzMnICAgIyAgMHhGNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSworICAgICdceGRkJyAgICAgIyAgMHhGOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhmZCcgICAgICMgIDB4RjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdcdTAxMzcnICAgIyAgMHhGQSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKKyAgICAnXHUwMTdiJyAgICMgIDB4RkIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQorICAgICdcdTAxNDEnICAgIyAgMHhGQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFCisgICAgJ1x1MDE3YycgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCisgICAgJ1x1MDEyMicgICAjICAweEZFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCisgICAgJ1x1MDJjNycgICAjICAweEZGIC0+IENBUk9OCispCiAKLWVuY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9wYWxtb3MucHkgYi9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weQppbmRleCA0Yjc3ZTJiLi5jNTA2ZDY1IDEwMDY0NAotLS0gYS9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weQorKysgYi9MaWIvZW5jb2RpbmdzL3BhbG1vcy5weQpAQCAtMTAsMTggKzEwLDE4IEBACiAKIGNsYXNzIENvZGVjKGNvZGVjcy5Db2RlYyk6CiAgICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgcGFzcwpAQCAtNDIsNDIgKzQyLDI2NyBAQAogICAgICAgICBzdHJlYW13cml0ZXI9U3RyZWFtV3JpdGVyLAogICAgICkKIAotIyMjIERlY29kaW5nIE1hcAogCi1kZWNvZGluZ19tYXAgPSBjb2RlY3MubWFrZV9pZGVudGl0eV9kaWN0KHJhbmdlKDI1NikpCisjIyMgRGVjb2RpbmcgVGFibGUKIAotIyBUaGUgUGFsbU9TIGNoYXJhY3RlciBzZXQgaXMgbW9zdGx5IGlzby04ODU5LTEgd2l0aCBzb21lIGRpZmZlcmVuY2VzLgotZGVjb2RpbmdfbWFwLnVwZGF0ZSh7Ci0gICAgICAgIDB4MDA4MDogMHgyMGFjLCAjICAgICAgIEVVUk8gU0lHTgotICAgICAgICAweDAwODI6IDB4MjAxYSwgIyAgICAgICBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDgzOiAweDAxOTIsICMgICAgICAgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCi0gICAgICAgIDB4MDA4NDogMHgyMDFlLCAjICAgICAgIERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwODU6IDB4MjAyNiwgIyAgICAgICBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDA4NjogMHgyMDIwLCAjICAgICAgIERBR0dFUgotICAgICAgICAweDAwODc6IDB4MjAyMSwgIyAgICAgICBET1VCTEUgREFHR0VSCi0gICAgICAgIDB4MDA4ODogMHgwMmM2LCAjICAgICAgIE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAotICAgICAgICAweDAwODk6IDB4MjAzMCwgIyAgICAgICBQRVIgTUlMTEUgU0lHTgotICAgICAgICAweDAwOGE6IDB4MDE2MCwgIyAgICAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDhiOiAweDIwMzksICMgICAgICAgU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDhjOiAweDAxNTIsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQotICAgICAgICAweDAwOGQ6IDB4MjY2NiwgIyAgICAgICBCTEFDSyBESUFNT05EIFNVSVQKLSAgICAgICAgMHgwMDhlOiAweDI2NjMsICMgICAgICAgQkxBQ0sgQ0xVQiBTVUlUCi0gICAgICAgIDB4MDA4ZjogMHgyNjY1LCAjICAgICAgIEJMQUNLIEhFQVJUIFNVSVQKLSAgICAgICAgMHgwMDkwOiAweDI2NjAsICMgICAgICAgQkxBQ0sgU1BBREUgU1VJVAotICAgICAgICAweDAwOTE6IDB4MjAxOCwgIyAgICAgICBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSwotICAgICAgICAweDAwOTI6IDB4MjAxOSwgIyAgICAgICBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkzOiAweDIwMWMsICMgICAgICAgTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk0OiAweDIwMWQsICMgICAgICAgUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5NTogMHgyMDIyLCAjICAgICAgIEJVTExFVAotICAgICAgICAweDAwOTY6IDB4MjAxMywgIyAgICAgICBFTiBEQVNICi0gICAgICAgIDB4MDA5NzogMHgyMDE0LCAjICAgICAgIEVNIERBU0gKLSAgICAgICAgMHgwMDk4OiAweDAyZGMsICMgICAgICAgU01BTEwgVElMREUKLSAgICAgICAgMHgwMDk5OiAweDIxMjIsICMgICAgICAgVFJBREUgTUFSSyBTSUdOCi0gICAgICAgIDB4MDA5YTogMHgwMTYxLCAjICAgICAgIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KLSAgICAgICAgMHgwMDljOiAweDAxNTMsICMgICAgICAgTEFUSU4gU01BTEwgTElHQVRVUkUgT0UKLSAgICAgICAgMHgwMDlmOiAweDAxNzgsICMgICAgICAgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUwotfSkKK2RlY29kaW5nX3RhYmxlID0gKAorICAgICdceDAwJyAgICAgIyAgMHgwMCAtPiBOVUxMCisgICAgJ1x4MDEnICAgICAjICAweDAxIC0+IFNUQVJUIE9GIEhFQURJTkcKKyAgICAnXHgwMicgICAgICMgIDB4MDIgLT4gU1RBUlQgT0YgVEVYVAorICAgICdceDAzJyAgICAgIyAgMHgwMyAtPiBFTkQgT0YgVEVYVAorICAgICdceDA0JyAgICAgIyAgMHgwNCAtPiBFTkQgT0YgVFJBTlNNSVNTSU9OCisgICAgJ1x4MDUnICAgICAjICAweDA1IC0+IEVOUVVJUlkKKyAgICAnXHgwNicgICAgICMgIDB4MDYgLT4gQUNLTk9XTEVER0UKKyAgICAnXHgwNycgICAgICMgIDB4MDcgLT4gQkVMTAorICAgICdceDA4JyAgICAgIyAgMHgwOCAtPiBCQUNLU1BBQ0UKKyAgICAnXHQnICAgICAgICMgIDB4MDkgLT4gSE9SSVpPTlRBTCBUQUJVTEFUSU9OCisgICAgJ1xuJyAgICAgICAjICAweDBBIC0+IExJTkUgRkVFRAorICAgICdceDBiJyAgICAgIyAgMHgwQiAtPiBWRVJUSUNBTCBUQUJVTEFUSU9OCisgICAgJ1x4MGMnICAgICAjICAweDBDIC0+IEZPUk0gRkVFRAorICAgICdccicgICAgICAgIyAgMHgwRCAtPiBDQVJSSUFHRSBSRVRVUk4KKyAgICAnXHgwZScgICAgICMgIDB4MEUgLT4gU0hJRlQgT1VUCisgICAgJ1x4MGYnICAgICAjICAweDBGIC0+IFNISUZUIElOCisgICAgJ1x4MTAnICAgICAjICAweDEwIC0+IERBVEEgTElOSyBFU0NBUEUKKyAgICAnXHgxMScgICAgICMgIDB4MTEgLT4gREVWSUNFIENPTlRST0wgT05FCisgICAgJ1x4MTInICAgICAjICAweDEyIC0+IERFVklDRSBDT05UUk9MIFRXTworICAgICdceDEzJyAgICAgIyAgMHgxMyAtPiBERVZJQ0UgQ09OVFJPTCBUSFJFRQorICAgICdceDE0JyAgICAgIyAgMHgxNCAtPiBERVZJQ0UgQ09OVFJPTCBGT1VSCisgICAgJ1x4MTUnICAgICAjICAweDE1IC0+IE5FR0FUSVZFIEFDS05PV0xFREdFCisgICAgJ1x4MTYnICAgICAjICAweDE2IC0+IFNZTkNIUk9OT1VTIElETEUKKyAgICAnXHgxNycgICAgICMgIDB4MTcgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSworICAgICdceDE4JyAgICAgIyAgMHgxOCAtPiBDQU5DRUwKKyAgICAnXHgxOScgICAgICMgIDB4MTkgLT4gRU5EIE9GIE1FRElVTQorICAgICdceDFhJyAgICAgIyAgMHgxQSAtPiBTVUJTVElUVVRFCisgICAgJ1x4MWInICAgICAjICAweDFCIC0+IEVTQ0FQRQorICAgICdceDFjJyAgICAgIyAgMHgxQyAtPiBGSUxFIFNFUEFSQVRPUgorICAgICdceDFkJyAgICAgIyAgMHgxRCAtPiBHUk9VUCBTRVBBUkFUT1IKKyAgICAnXHgxZScgICAgICMgIDB4MUUgLT4gUkVDT1JEIFNFUEFSQVRPUgorICAgICdceDFmJyAgICAgIyAgMHgxRiAtPiBVTklUIFNFUEFSQVRPUgorICAgICcgJyAgICAgICAgIyAgMHgyMCAtPiBTUEFDRQorICAgICchJyAgICAgICAgIyAgMHgyMSAtPiBFWENMQU1BVElPTiBNQVJLCisgICAgJyInICAgICAgICAjICAweDIyIC0+IFFVT1RBVElPTiBNQVJLCisgICAgJyMnICAgICAgICAjICAweDIzIC0+IE5VTUJFUiBTSUdOCisgICAgJyQnICAgICAgICAjICAweDI0IC0+IERPTExBUiBTSUdOCisgICAgJyUnICAgICAgICAjICAweDI1IC0+IFBFUkNFTlQgU0lHTgorICAgICcmJyAgICAgICAgIyAgMHgyNiAtPiBBTVBFUlNBTkQKKyAgICAiJyIgICAgICAgICMgIDB4MjcgLT4gQVBPU1RST1BIRQorICAgICcoJyAgICAgICAgIyAgMHgyOCAtPiBMRUZUIFBBUkVOVEhFU0lTCisgICAgJyknICAgICAgICAjICAweDI5IC0+IFJJR0hUIFBBUkVOVEhFU0lTCisgICAgJyonICAgICAgICAjICAweDJBIC0+IEFTVEVSSVNLCisgICAgJysnICAgICAgICAjICAweDJCIC0+IFBMVVMgU0lHTgorICAgICcsJyAgICAgICAgIyAgMHgyQyAtPiBDT01NQQorICAgICctJyAgICAgICAgIyAgMHgyRCAtPiBIWVBIRU4tTUlOVVMKKyAgICAnLicgICAgICAgICMgIDB4MkUgLT4gRlVMTCBTVE9QCisgICAgJy8nICAgICAgICAjICAweDJGIC0+IFNPTElEVVMKKyAgICAnMCcgICAgICAgICMgIDB4MzAgLT4gRElHSVQgWkVSTworICAgICcxJyAgICAgICAgIyAgMHgzMSAtPiBESUdJVCBPTkUKKyAgICAnMicgICAgICAgICMgIDB4MzIgLT4gRElHSVQgVFdPCisgICAgJzMnICAgICAgICAjICAweDMzIC0+IERJR0lUIFRIUkVFCisgICAgJzQnICAgICAgICAjICAweDM0IC0+IERJR0lUIEZPVVIKKyAgICAnNScgICAgICAgICMgIDB4MzUgLT4gRElHSVQgRklWRQorICAgICc2JyAgICAgICAgIyAgMHgzNiAtPiBESUdJVCBTSVgKKyAgICAnNycgICAgICAgICMgIDB4MzcgLT4gRElHSVQgU0VWRU4KKyAgICAnOCcgICAgICAgICMgIDB4MzggLT4gRElHSVQgRUlHSFQKKyAgICAnOScgICAgICAgICMgIDB4MzkgLT4gRElHSVQgTklORQorICAgICc6JyAgICAgICAgIyAgMHgzQSAtPiBDT0xPTgorICAgICc7JyAgICAgICAgIyAgMHgzQiAtPiBTRU1JQ09MT04KKyAgICAnPCcgICAgICAgICMgIDB4M0MgLT4gTEVTUy1USEFOIFNJR04KKyAgICAnPScgICAgICAgICMgIDB4M0QgLT4gRVFVQUxTIFNJR04KKyAgICAnPicgICAgICAgICMgIDB4M0UgLT4gR1JFQVRFUi1USEFOIFNJR04KKyAgICAnPycgICAgICAgICMgIDB4M0YgLT4gUVVFU1RJT04gTUFSSworICAgICdAJyAgICAgICAgIyAgMHg0MCAtPiBDT01NRVJDSUFMIEFUCisgICAgJ0EnICAgICAgICAjICAweDQxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEKKyAgICAnQicgICAgICAgICMgIDB4NDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQgorICAgICdDJyAgICAgICAgIyAgMHg0MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisgICAgJ0QnICAgICAgICAjICAweDQ0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEQKKyAgICAnRScgICAgICAgICMgIDB4NDUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQorICAgICdGJyAgICAgICAgIyAgMHg0NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisgICAgJ0cnICAgICAgICAjICAweDQ3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEcKKyAgICAnSCcgICAgICAgICMgIDB4NDggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSAorICAgICdJJyAgICAgICAgIyAgMHg0OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisgICAgJ0onICAgICAgICAjICAweDRBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEoKKyAgICAnSycgICAgICAgICMgIDB4NEIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSworICAgICdMJyAgICAgICAgIyAgMHg0QyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisgICAgJ00nICAgICAgICAjICAweDREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE0KKyAgICAnTicgICAgICAgICMgIDB4NEUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTgorICAgICdPJyAgICAgICAgIyAgMHg0RiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisgICAgJ1AnICAgICAgICAjICAweDUwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFAKKyAgICAnUScgICAgICAgICMgIDB4NTEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQorICAgICdSJyAgICAgICAgIyAgMHg1MiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisgICAgJ1MnICAgICAgICAjICAweDUzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFMKKyAgICAnVCcgICAgICAgICMgIDB4NTQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVAorICAgICdVJyAgICAgICAgIyAgMHg1NSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisgICAgJ1YnICAgICAgICAjICAweDU2IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFYKKyAgICAnVycgICAgICAgICMgIDB4NTcgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVworICAgICdYJyAgICAgICAgIyAgMHg1OCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisgICAgJ1knICAgICAgICAjICAweDU5IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkKKyAgICAnWicgICAgICAgICMgIDB4NUEgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWgorICAgICdbJyAgICAgICAgIyAgMHg1QiAtPiBMRUZUIFNRVUFSRSBCUkFDS0VUCisgICAgJ1xcJyAgICAgICAjICAweDVDIC0+IFJFVkVSU0UgU09MSURVUworICAgICddJyAgICAgICAgIyAgMHg1RCAtPiBSSUdIVCBTUVVBUkUgQlJBQ0tFVAorICAgICdeJyAgICAgICAgIyAgMHg1RSAtPiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdfJyAgICAgICAgIyAgMHg1RiAtPiBMT1cgTElORQorICAgICdgJyAgICAgICAgIyAgMHg2MCAtPiBHUkFWRSBBQ0NFTlQKKyAgICAnYScgICAgICAgICMgIDB4NjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEKKyAgICAnYicgICAgICAgICMgIDB4NjIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEIKKyAgICAnYycgICAgICAgICMgIDB4NjMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEMKKyAgICAnZCcgICAgICAgICMgIDB4NjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEQKKyAgICAnZScgICAgICAgICMgIDB4NjUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUKKyAgICAnZicgICAgICAgICMgIDB4NjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYKKyAgICAnZycgICAgICAgICMgIDB4NjcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEcKKyAgICAnaCcgICAgICAgICMgIDB4NjggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEgKKyAgICAnaScgICAgICAgICMgIDB4NjkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkKKyAgICAnaicgICAgICAgICMgIDB4NkEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEoKKyAgICAnaycgICAgICAgICMgIDB4NkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEsKKyAgICAnbCcgICAgICAgICMgIDB4NkMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEwKKyAgICAnbScgICAgICAgICMgIDB4NkQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE0KKyAgICAnbicgICAgICAgICMgIDB4NkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4KKyAgICAnbycgICAgICAgICMgIDB4NkYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8KKyAgICAncCcgICAgICAgICMgIDB4NzAgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFAKKyAgICAncScgICAgICAgICMgIDB4NzEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFEKKyAgICAncicgICAgICAgICMgIDB4NzIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFIKKyAgICAncycgICAgICAgICMgIDB4NzMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFMKKyAgICAndCcgICAgICAgICMgIDB4NzQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFQKKyAgICAndScgICAgICAgICMgIDB4NzUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUKKyAgICAndicgICAgICAgICMgIDB4NzYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFYKKyAgICAndycgICAgICAgICMgIDB4NzcgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFcKKyAgICAneCcgICAgICAgICMgIDB4NzggLT4gTEFUSU4gU01BTEwgTEVUVEVSIFgKKyAgICAneScgICAgICAgICMgIDB4NzkgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFkKKyAgICAneicgICAgICAgICMgIDB4N0EgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFoKKyAgICAneycgICAgICAgICMgIDB4N0IgLT4gTEVGVCBDVVJMWSBCUkFDS0VUCisgICAgJ3wnICAgICAgICAjICAweDdDIC0+IFZFUlRJQ0FMIExJTkUKKyAgICAnfScgICAgICAgICMgIDB4N0QgLT4gUklHSFQgQ1VSTFkgQlJBQ0tFVAorICAgICd+JyAgICAgICAgIyAgMHg3RSAtPiBUSUxERQorICAgICdceDdmJyAgICAgIyAgMHg3RiAtPiBERUxFVEUKKyAgICAnXHUyMGFjJyAgICMgIDB4ODAgLT4gRVVSTyBTSUdOCisgICAgJ1x4ODEnICAgICAjICAweDgxIC0+IDxjb250cm9sPgorICAgICdcdTIwMWEnICAgIyAgMHg4MiAtPiBTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTkyJyAgICMgIDB4ODMgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LCisgICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCisgICAgJ1x1MjAyMCcgICAjICAweDg2IC0+IERBR0dFUgorICAgICdcdTIwMjEnICAgIyAgMHg4NyAtPiBET1VCTEUgREFHR0VSCisgICAgJ1x1MDJjNicgICAjICAweDg4IC0+IE1PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVAorICAgICdcdTIwMzAnICAgIyAgMHg4OSAtPiBQRVIgTUlMTEUgU0lHTgorICAgICdcdTAxNjAnICAgIyAgMHg4QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHUyMDM5JyAgICMgIDB4OEIgLT4gU0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUwMTUyJyAgICMgIDB4OEMgLT4gTEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRQorICAgICdcdTI2NjYnICAgIyAgMHg4RCAtPiBCTEFDSyBESUFNT05EIFNVSVQKKyAgICAnXHUyNjYzJyAgICMgIDB4OEUgLT4gQkxBQ0sgQ0xVQiBTVUlUCisgICAgJ1x1MjY2NScgICAjICAweDhGIC0+IEJMQUNLIEhFQVJUIFNVSVQKKyAgICAnXHUyNjYwJyAgICMgIDB4OTAgLT4gQkxBQ0sgU1BBREUgU1VJVAorICAgICdcdTIwMTgnICAgIyAgMHg5MSAtPiBMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMTknICAgIyAgMHg5MiAtPiBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFjJyAgICMgIDB4OTMgLT4gTEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDFkJyAgICMgIDB4OTQgLT4gUklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAyMicgICAjICAweDk1IC0+IEJVTExFVAorICAgICdcdTIwMTMnICAgIyAgMHg5NiAtPiBFTiBEQVNICisgICAgJ1x1MjAxNCcgICAjICAweDk3IC0+IEVNIERBU0gKKyAgICAnXHUwMmRjJyAgICMgIDB4OTggLT4gU01BTEwgVElMREUKKyAgICAnXHUyMTIyJyAgICMgIDB4OTkgLT4gVFJBREUgTUFSSyBTSUdOCisgICAgJ1x1MDE2MScgICAjICAweDlBIC0+IExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04KKyAgICAnXHg5YicgICAgICMgIDB4OUIgLT4gPGNvbnRyb2w+CisgICAgJ1x1MDE1MycgICAjICAweDlDIC0+IExBVElOIFNNQUxMIExJR0FUVVJFIE9FCisgICAgJ1x4OWQnICAgICAjICAweDlEIC0+IDxjb250cm9sPgorICAgICdceDllJyAgICAgIyAgMHg5RSAtPiA8Y29udHJvbD4KKyAgICAnXHUwMTc4JyAgICMgIDB4OUYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworICAgICdceGEwJyAgICAgIyAgMHhBMCAtPiBOTy1CUkVBSyBTUEFDRQorICAgICdceGExJyAgICAgIyAgMHhBMSAtPiBJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLCisgICAgJ1x4YTInICAgICAjICAweEEyIC0+IENFTlQgU0lHTgorICAgICdceGEzJyAgICAgIyAgMHhBMyAtPiBQT1VORCBTSUdOCisgICAgJ1x4YTQnICAgICAjICAweEE0IC0+IENVUlJFTkNZIFNJR04KKyAgICAnXHhhNScgICAgICMgIDB4QTUgLT4gWUVOIFNJR04KKyAgICAnXHhhNicgICAgICMgIDB4QTYgLT4gQlJPS0VOIEJBUgorICAgICdceGE3JyAgICAgIyAgMHhBNyAtPiBTRUNUSU9OIFNJR04KKyAgICAnXHhhOCcgICAgICMgIDB4QTggLT4gRElBRVJFU0lTCisgICAgJ1x4YTknICAgICAjICAweEE5IC0+IENPUFlSSUdIVCBTSUdOCisgICAgJ1x4YWEnICAgICAjICAweEFBIC0+IEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SCisgICAgJ1x4YWInICAgICAjICAweEFCIC0+IExFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YWMnICAgICAjICAweEFDIC0+IE5PVCBTSUdOCisgICAgJ1x4YWQnICAgICAjICAweEFEIC0+IFNPRlQgSFlQSEVOCisgICAgJ1x4YWUnICAgICAjICAweEFFIC0+IFJFR0lTVEVSRUQgU0lHTgorICAgICdceGFmJyAgICAgIyAgMHhBRiAtPiBNQUNST04KKyAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KKyAgICAnXHhiMScgICAgICMgIDB4QjEgLT4gUExVUy1NSU5VUyBTSUdOCisgICAgJ1x4YjInICAgICAjICAweEIyIC0+IFNVUEVSU0NSSVBUIFRXTworICAgICdceGIzJyAgICAgIyAgMHhCMyAtPiBTVVBFUlNDUklQVCBUSFJFRQorICAgICdceGI0JyAgICAgIyAgMHhCNCAtPiBBQ1VURSBBQ0NFTlQKKyAgICAnXHhiNScgICAgICMgIDB4QjUgLT4gTUlDUk8gU0lHTgorICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAorICAgICdceGI4JyAgICAgIyAgMHhCOCAtPiBDRURJTExBCisgICAgJ1x4YjknICAgICAjICAweEI5IC0+IFNVUEVSU0NSSVBUIE9ORQorICAgICdceGJhJyAgICAgIyAgMHhCQSAtPiBNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1IKKyAgICAnXHhiYicgICAgICMgIDB4QkIgLT4gUklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x4YmMnICAgICAjICAweEJDIC0+IFZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUgorICAgICdceGJkJyAgICAgIyAgMHhCRCAtPiBWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEYKKyAgICAnXHhiZScgICAgICMgIDB4QkUgLT4gVlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTCisgICAgJ1x4YmYnICAgICAjICAweEJGIC0+IElOVkVSVEVEIFFVRVNUSU9OIE1BUksKKyAgICAnXHhjMCcgICAgICMgIDB4QzAgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4YzEnICAgICAjICAweEMxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURQorICAgICdceGMyJyAgICAgIyAgMHhDMiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGMzJyAgICAgIyAgMHhDMyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhjNCcgICAgICMgIDB4QzQgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUworICAgICdceGM1JyAgICAgIyAgMHhDNSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRQorICAgICdceGM2JyAgICAgIyAgMHhDNiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRQorICAgICdceGM3JyAgICAgIyAgMHhDNyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorICAgICdceGM4JyAgICAgIyAgMHhDOCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKyAgICAnXHhjOScgICAgICMgIDB4QzkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4Y2EnICAgICAjICAweENBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4Y2InICAgICAjICAweENCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhjYycgICAgICMgIDB4Q0MgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4Y2QnICAgICAjICAweENEIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorICAgICdceGNlJyAgICAgIyAgMHhDRSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGNmJyAgICAgIyAgMHhDRiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZDAnICAgICAjICAweEQwIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEVUSCAoSWNlbGFuZGljKQorICAgICdceGQxJyAgICAgIyAgMHhEMSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREUKKyAgICAnXHhkMicgICAgICMgIDB4RDIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZDMnICAgICAjICAweEQzIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURQorICAgICdceGQ0JyAgICAgIyAgMHhENCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGQ1JyAgICAgIyAgMHhENSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhkNicgICAgICMgIDB4RDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworICAgICdceGQ3JyAgICAgIyAgMHhENyAtPiBNVUxUSVBMSUNBVElPTiBTSUdOCisgICAgJ1x4ZDgnICAgICAjICAweEQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UKKyAgICAnXHhkOScgICAgICMgIDB4RDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZGEnICAgICAjICAweERBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURQorICAgICdceGRiJyAgICAgIyAgMHhEQiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGRjJyAgICAgIyAgMHhEQyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZGQnICAgICAjICAweEREIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURQorICAgICdceGRlJyAgICAgIyAgMHhERSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STiAoSWNlbGFuZGljKQorICAgICdceGRmJyAgICAgIyAgMHhERiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUyAoR2VybWFuKQorICAgICdceGUwJyAgICAgIyAgMHhFMCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCisgICAgJ1x4ZTEnICAgICAjICAweEUxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEUKKyAgICAnXHhlMicgICAgICMgIDB4RTIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZTMnICAgICAjICAweEUzIC0+IExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKyAgICAnXHhlNCcgICAgICMgIDB4RTQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKyAgICAnXHhlNScgICAgICMgIDB4RTUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCisgICAgJ1x4ZTYnICAgICAjICAweEU2IC0+IExBVElOIFNNQUxMIExFVFRFUiBBRQorICAgICdceGU3JyAgICAgIyAgMHhFNyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEKKyAgICAnXHhlOCcgICAgICMgIDB4RTggLT4gTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorICAgICdceGU5JyAgICAgIyAgMHhFOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFCisgICAgJ1x4ZWEnICAgICAjICAweEVBIC0+IExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWAorICAgICdceGViJyAgICAgIyAgMHhFQiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworICAgICdceGVjJyAgICAgIyAgMHhFQyAtPiBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFCisgICAgJ1x4ZWQnICAgICAjICAweEVEIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEUKKyAgICAnXHhlZScgICAgICMgIDB4RUUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZWYnICAgICAjICAweEVGIC0+IExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZjAnICAgICAjICAweEYwIC0+IExBVElOIFNNQUxMIExFVFRFUiBFVEggKEljZWxhbmRpYykKKyAgICAnXHhmMScgICAgICMgIDB4RjEgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorICAgICdceGYyJyAgICAgIyAgMHhGMiAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFCisgICAgJ1x4ZjMnICAgICAjICAweEYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEUKKyAgICAnXHhmNCcgICAgICMgIDB4RjQgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZjUnICAgICAjICAweEY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUKKyAgICAnXHhmNicgICAgICMgIDB4RjYgLT4gTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKyAgICAnXHhmNycgICAgICMgIDB4RjcgLT4gRElWSVNJT04gU0lHTgorICAgICdceGY4JyAgICAgIyAgMHhGOCAtPiBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRQorICAgICdceGY5JyAgICAgIyAgMHhGOSAtPiBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFCisgICAgJ1x4ZmEnICAgICAjICAweEZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEUKKyAgICAnXHhmYicgICAgICMgIDB4RkIgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCisgICAgJ1x4ZmMnICAgICAjICAweEZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTCisgICAgJ1x4ZmQnICAgICAjICAweEZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEUKKyAgICAnXHhmZScgICAgICMgIDB4RkUgLT4gTEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOIChJY2VsYW5kaWMpCisgICAgJ1x4ZmYnICAgICAjICAweEZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTCispCiAKLSMjIyBFbmNvZGluZyBNYXAKLQotZW5jb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfZW5jb2RpbmdfbWFwKGRlY29kaW5nX21hcCkKKyMjIyBFbmNvZGluZyB0YWJsZQorZW5jb2RpbmdfdGFibGU9Y29kZWNzLmNoYXJtYXBfYnVpbGQoZGVjb2RpbmdfdGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkgYi9MaWIvZW5jb2RpbmdzL3B0Y3AxNTQucHkKaW5kZXggYWVmODk3NS4uNjU2Yjc5ZCAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9wdGNwMTU0LnB5CisrKyBiL0xpYi9lbmNvZGluZ3MvcHRjcDE1NC5weQpAQCAtMTQsMTggKzE0LDE4IEBACiBjbGFzcyBDb2RlYyhjb2RlY3MuQ29kZWMpOgogCiAgICAgZGVmIGVuY29kZShzZWxmLGlucHV0LGVycm9ycz0nc3RyaWN0Jyk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsZXJyb3JzLGVuY29kaW5nX21hcCkKKyAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxlcnJvcnMsZW5jb2RpbmdfdGFibGUpCiAKICAgICBkZWYgZGVjb2RlKHNlbGYsaW5wdXQsZXJyb3JzPSdzdHJpY3QnKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2RlY29kZShpbnB1dCxlcnJvcnMsZGVjb2RpbmdfbWFwKQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LGVycm9ycyxkZWNvZGluZ190YWJsZSkKIAogY2xhc3MgSW5jcmVtZW50YWxFbmNvZGVyKGNvZGVjcy5JbmNyZW1lbnRhbEVuY29kZXIpOgogICAgIGRlZiBlbmNvZGUoc2VsZiwgaW5wdXQsIGZpbmFsPUZhbHNlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5jaGFybWFwX2VuY29kZShpbnB1dCxzZWxmLmVycm9ycyxlbmNvZGluZ19tYXApWzBdCisgICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9lbmNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZW5jb2RpbmdfdGFibGUpWzBdCiAKIGNsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuSW5jcmVtZW50YWxEZWNvZGVyKToKICAgICBkZWYgZGVjb2RlKHNlbGYsIGlucHV0LCBmaW5hbD1GYWxzZSk6Ci0gICAgICAgIHJldHVybiBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoaW5wdXQsc2VsZi5lcnJvcnMsZGVjb2RpbmdfbWFwKVswXQorICAgICAgICByZXR1cm4gY29kZWNzLmNoYXJtYXBfZGVjb2RlKGlucHV0LHNlbGYuZXJyb3JzLGRlY29kaW5nX3RhYmxlKVswXQogCiBjbGFzcyBTdHJlYW1Xcml0ZXIoQ29kZWMsY29kZWNzLlN0cmVhbVdyaXRlcik6CiAgICAgcGFzcwpAQCAtNDYsMTMwICs0NiwyNjcgQEAKICAgICAgICAgc3RyZWFtd3JpdGVyPVN0cmVhbVdyaXRlciwKICAgICApCiAKLSMjIyBEZWNvZGluZyBNYXAKIAotZGVjb2RpbmdfbWFwID0gY29kZWNzLm1ha2VfaWRlbnRpdHlfZGljdChyYW5nZSgyNTYpKQotZGVjb2RpbmdfbWFwLnVwZGF0ZSh7Ci0gICAgICAgIDB4MDA4MDogMHgwNDk2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDgxOiAweDA0OTIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwODI6IDB4MDRlZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwODM6IDB4MDQ5MywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwODQ6IDB4MjAxZSwgIyAgICAgICAgRE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA4NTogMHgyMDI2LCAjICAgICAgICBIT1JJWk9OVEFMIEVMTElQU0lTCi0gICAgICAgIDB4MDA4NjogMHgwNGI2LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDg3OiAweDA0YWUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUKLSAgICAgICAgMHgwMDg4OiAweDA0YjIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4OTogMHgwNGFmLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVQotICAgICAgICAweDAwOGE6IDB4MDRhMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQQotICAgICAgICAweDAwOGI6IDB4MDRlMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgotICAgICAgICAweDAwOGM6IDB4MDRhMiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDhkOiAweDA0OWEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA4ZTogMHgwNGJhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBCi0gICAgICAgIDB4MDA4ZjogMHgwNGI4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKLSAgICAgICAgMHgwMDkwOiAweDA0OTcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMDkxOiAweDIwMTgsICMgICAgICAgIExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5MjogMHgyMDE5LCAjICAgICAgICBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDkzOiAweDIwMWMsICMgICAgICAgIExFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLCi0gICAgICAgIDB4MDA5NDogMHgyMDFkLCAjICAgICAgICBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKLSAgICAgICAgMHgwMDk1OiAweDIwMjIsICMgICAgICAgIEJVTExFVAotICAgICAgICAweDAwOTY6IDB4MjAxMywgIyAgICAgICAgRU4gREFTSAotICAgICAgICAweDAwOTc6IDB4MjAxNCwgIyAgICAgICAgRU0gREFTSAotICAgICAgICAweDAwOTg6IDB4MDRiMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5OTogMHgwNGI3LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5YTogMHgwNGExLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQQotICAgICAgICAweDAwOWI6IDB4MDRlMywgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMDljOiAweDA0YTMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgotICAgICAgICAweDAwOWQ6IDB4MDQ5YiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDA5ZTogMHgwNGJiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hIQQotICAgICAgICAweDAwOWY6IDB4MDRiOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwYTE6IDB4MDQwZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQotICAgICAgICAweDAwYTI6IDB4MDQ1ZSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFUgKEJ5ZWxvcnVzc2lhbikKLSAgICAgICAgMHgwMGEzOiAweDA0MDgsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEpFCi0gICAgICAgIDB4MDBhNDogMHgwNGU4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTwotICAgICAgICAweDAwYTU6IDB4MDQ5OCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGE2OiAweDA0YjAsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKLSAgICAgICAgMHgwMGE4OiAweDA0MDEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIElPCi0gICAgICAgIDB4MDBhYTogMHgwNGQ4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQotICAgICAgICAweDAwYWQ6IDB4MDRlZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KLSAgICAgICAgMHgwMGFmOiAweDA0OWMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFCi0gICAgICAgIDB4MDBiMTogMHgwNGIxLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRQotICAgICAgICAweDAwYjI6IDB4MDQwNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCi0gICAgICAgIDB4MDBiMzogMHgwNDU2LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCi0gICAgICAgIDB4MDBiNDogMHgwNDk5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGI1OiAweDA0ZTksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTwotICAgICAgICAweDAwYjg6IDB4MDQ1MSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCi0gICAgICAgIDB4MDBiOTogMHgyMTE2LCAjICAgICAgICBOVU1FUk8gU0lHTgotICAgICAgICAweDAwYmE6IDB4MDRkOSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBCi0gICAgICAgIDB4MDBiYzogMHgwNDU4LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSkUKLSAgICAgICAgMHgwMGJkOiAweDA0YWEsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCi0gICAgICAgIDB4MDBiZTogMHgwNGFiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKLSAgICAgICAgMHgwMGJmOiAweDA0OWQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQotICAgICAgICAweDAwYzA6IDB4MDQxMCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQQotICAgICAgICAweDAwYzE6IDB4MDQxMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkUKLSAgICAgICAgMHgwMGMyOiAweDA0MTIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCi0gICAgICAgIDB4MDBjMzogMHgwNDEzLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUKLSAgICAgICAgMHgwMGM0OiAweDA0MTQsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIERFCi0gICAgICAgIDB4MDBjNTogMHgwNDE1LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQotICAgICAgICAweDAwYzY6IDB4MDQxNiwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFCi0gICAgICAgIDB4MDBjNzogMHgwNDE3LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRQotICAgICAgICAweDAwYzg6IDB4MDQxOCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQotICAgICAgICAweDAwYzk6IDB4MDQxOSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDAwY2E6IDB4MDQxYSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EKLSAgICAgICAgMHgwMGNiOiAweDA0MWIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCi0gICAgICAgIDB4MDBjYzogMHgwNDFjLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTQotICAgICAgICAweDAwY2Q6IDB4MDQxZCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4KLSAgICAgICAgMHgwMGNlOiAweDA0MWUsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KLSAgICAgICAgMHgwMGNmOiAweDA0MWYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFBFCi0gICAgICAgIDB4MDBkMDogMHgwNDIwLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUgotICAgICAgICAweDAwZDE6IDB4MDQyMSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKLSAgICAgICAgMHgwMGQyOiAweDA0MjIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDBkMzogMHgwNDIzLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVCi0gICAgICAgIDB4MDBkNDogMHgwNDI0LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgotICAgICAgICAweDAwZDU6IDB4MDQyNSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEKLSAgICAgICAgMHgwMGQ2OiAweDA0MjYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFRTRQotICAgICAgICAweDAwZDc6IDB4MDQyNywgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCi0gICAgICAgIDB4MDBkODogMHgwNDI4LCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEEKLSAgICAgICAgMHgwMGQ5OiAweDA0MjksICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQ0hBCi0gICAgICAgIDB4MDBkYTogMHgwNDJhLCAjICAgICAgICBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KLSAgICAgICAgMHgwMGRiOiAweDA0MmIsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUKLSAgICAgICAgMHgwMGRjOiAweDA0MmMsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTgotICAgICAgICAweDAwZGQ6IDB4MDQyZCwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQotICAgICAgICAweDAwZGU6IDB4MDQyZSwgIyAgICAgICAgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVUKLSAgICAgICAgMHgwMGRmOiAweDA0MmYsICMgICAgICAgIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlBCi0gICAgICAgIDB4MDBlMDogMHgwNDMwLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQotICAgICAgICAweDAwZTE6IDB4MDQzMSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFCi0gICAgICAgIDB4MDBlMjogMHgwNDMyLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVkUKLSAgICAgICAgMHgwMGUzOiAweDA0MzMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKLSAgICAgICAgMHgwMGU0OiAweDA0MzQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBERQotICAgICAgICAweDAwZTU6IDB4MDQzNSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFCi0gICAgICAgIDB4MDBlNjogMHgwNDM2LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCi0gICAgICAgIDB4MDBlNzogMHgwNDM3LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUKLSAgICAgICAgMHgwMGU4OiAweDA0MzgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBJCi0gICAgICAgIDB4MDBlOTogMHgwNDM5LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQotICAgICAgICAweDAwZWE6IDB4MDQzYSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBCi0gICAgICAgIDB4MDBlYjogMHgwNDNiLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRUwKLSAgICAgICAgMHgwMGVjOiAweDA0M2MsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFTQotICAgICAgICAweDAwZWQ6IDB4MDQzZCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOCi0gICAgICAgIDB4MDBlZTogMHgwNDNlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgTwotICAgICAgICAweDAwZWY6IDB4MDQzZiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCi0gICAgICAgIDB4MDBmMDogMHgwNDQwLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVIKLSAgICAgICAgMHgwMGYxOiAweDA0NDEsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFUwotICAgICAgICAweDAwZjI6IDB4MDQ0MiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCi0gICAgICAgIDB4MDBmMzogMHgwNDQzLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgVQotICAgICAgICAweDAwZjQ6IDB4MDQ0NCwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGCi0gICAgICAgIDB4MDBmNTogMHgwNDQ1LCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKLSAgICAgICAgMHgwMGY2OiAweDA0NDYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBUU0UKLSAgICAgICAgMHgwMGY3OiAweDA0NDcsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUKLSAgICAgICAgMHgwMGY4OiAweDA0NDgsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKLSAgICAgICAgMHgwMGY5OiAweDA0NDksICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQQotICAgICAgICAweDAwZmE6IDB4MDQ0YSwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBUkQgU0lHTgotICAgICAgICAweDAwZmI6IDB4MDQ0YiwgIyAgICAgICAgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKLSAgICAgICAgMHgwMGZjOiAweDA0NGMsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR04KLSAgICAgICAgMHgwMGZkOiAweDA0NGQsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBFCi0gICAgICAgIDB4MDBmZTogMHgwNDRlLCAjICAgICAgICBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKLSAgICAgICAgMHgwMGZmOiAweDA0NGYsICMgICAgICAgIENZUklMTElDIFNNQUxMIExFVFRFUiBZQQotfSkKKyMjIyBEZWNvZGluZyBUYWJsZQogCi0jIyMgRW5jb2RpbmcgTWFwCitkZWNvZGluZ190YWJsZSA9ICgKKyAgICAnXHgwMCcgICAgICMgIDB4MDAgLT4gTlVMTAorICAgICdceDAxJyAgICAgIyAgMHgwMSAtPiBTVEFSVCBPRiBIRUFESU5HCisgICAgJ1x4MDInICAgICAjICAweDAyIC0+IFNUQVJUIE9GIFRFWFQKKyAgICAnXHgwMycgICAgICMgIDB4MDMgLT4gRU5EIE9GIFRFWFQKKyAgICAnXHgwNCcgICAgICMgIDB4MDQgLT4gRU5EIE9GIFRSQU5TTUlTU0lPTgorICAgICdceDA1JyAgICAgIyAgMHgwNSAtPiBFTlFVSVJZCisgICAgJ1x4MDYnICAgICAjICAweDA2IC0+IEFDS05PV0xFREdFCisgICAgJ1x4MDcnICAgICAjICAweDA3IC0+IEJFTEwKKyAgICAnXHgwOCcgICAgICMgIDB4MDggLT4gQkFDS1NQQUNFCisgICAgJ1x0JyAgICAgICAjICAweDA5IC0+IEhPUklaT05UQUwgVEFCVUxBVElPTgorICAgICdcbicgICAgICAgIyAgMHgwQSAtPiBMSU5FIEZFRUQKKyAgICAnXHgwYicgICAgICMgIDB4MEIgLT4gVkVSVElDQUwgVEFCVUxBVElPTgorICAgICdceDBjJyAgICAgIyAgMHgwQyAtPiBGT1JNIEZFRUQKKyAgICAnXHInICAgICAgICMgIDB4MEQgLT4gQ0FSUklBR0UgUkVUVVJOCisgICAgJ1x4MGUnICAgICAjICAweDBFIC0+IFNISUZUIE9VVAorICAgICdceDBmJyAgICAgIyAgMHgwRiAtPiBTSElGVCBJTgorICAgICdceDEwJyAgICAgIyAgMHgxMCAtPiBEQVRBIExJTksgRVNDQVBFCisgICAgJ1x4MTEnICAgICAjICAweDExIC0+IERFVklDRSBDT05UUk9MIE9ORQorICAgICdceDEyJyAgICAgIyAgMHgxMiAtPiBERVZJQ0UgQ09OVFJPTCBUV08KKyAgICAnXHgxMycgICAgICMgIDB4MTMgLT4gREVWSUNFIENPTlRST0wgVEhSRUUKKyAgICAnXHgxNCcgICAgICMgIDB4MTQgLT4gREVWSUNFIENPTlRST0wgRk9VUgorICAgICdceDE1JyAgICAgIyAgMHgxNSAtPiBORUdBVElWRSBBQ0tOT1dMRURHRQorICAgICdceDE2JyAgICAgIyAgMHgxNiAtPiBTWU5DSFJPTk9VUyBJRExFCisgICAgJ1x4MTcnICAgICAjICAweDE3IC0+IEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0sKKyAgICAnXHgxOCcgICAgICMgIDB4MTggLT4gQ0FOQ0VMCisgICAgJ1x4MTknICAgICAjICAweDE5IC0+IEVORCBPRiBNRURJVU0KKyAgICAnXHgxYScgICAgICMgIDB4MUEgLT4gU1VCU1RJVFVURQorICAgICdceDFiJyAgICAgIyAgMHgxQiAtPiBFU0NBUEUKKyAgICAnXHgxYycgICAgICMgIDB4MUMgLT4gRklMRSBTRVBBUkFUT1IKKyAgICAnXHgxZCcgICAgICMgIDB4MUQgLT4gR1JPVVAgU0VQQVJBVE9SCisgICAgJ1x4MWUnICAgICAjICAweDFFIC0+IFJFQ09SRCBTRVBBUkFUT1IKKyAgICAnXHgxZicgICAgICMgIDB4MUYgLT4gVU5JVCBTRVBBUkFUT1IKKyAgICAnICcgICAgICAgICMgIDB4MjAgLT4gU1BBQ0UKKyAgICAnIScgICAgICAgICMgIDB4MjEgLT4gRVhDTEFNQVRJT04gTUFSSworICAgICciJyAgICAgICAgIyAgMHgyMiAtPiBRVU9UQVRJT04gTUFSSworICAgICcjJyAgICAgICAgIyAgMHgyMyAtPiBOVU1CRVIgU0lHTgorICAgICckJyAgICAgICAgIyAgMHgyNCAtPiBET0xMQVIgU0lHTgorICAgICclJyAgICAgICAgIyAgMHgyNSAtPiBQRVJDRU5UIFNJR04KKyAgICAnJicgICAgICAgICMgIDB4MjYgLT4gQU1QRVJTQU5ECisgICAgIiciICAgICAgICAjICAweDI3IC0+IEFQT1NUUk9QSEUKKyAgICAnKCcgICAgICAgICMgIDB4MjggLT4gTEVGVCBQQVJFTlRIRVNJUworICAgICcpJyAgICAgICAgIyAgMHgyOSAtPiBSSUdIVCBQQVJFTlRIRVNJUworICAgICcqJyAgICAgICAgIyAgMHgyQSAtPiBBU1RFUklTSworICAgICcrJyAgICAgICAgIyAgMHgyQiAtPiBQTFVTIFNJR04KKyAgICAnLCcgICAgICAgICMgIDB4MkMgLT4gQ09NTUEKKyAgICAnLScgICAgICAgICMgIDB4MkQgLT4gSFlQSEVOLU1JTlVTCisgICAgJy4nICAgICAgICAjICAweDJFIC0+IEZVTEwgU1RPUAorICAgICcvJyAgICAgICAgIyAgMHgyRiAtPiBTT0xJRFVTCisgICAgJzAnICAgICAgICAjICAweDMwIC0+IERJR0lUIFpFUk8KKyAgICAnMScgICAgICAgICMgIDB4MzEgLT4gRElHSVQgT05FCisgICAgJzInICAgICAgICAjICAweDMyIC0+IERJR0lUIFRXTworICAgICczJyAgICAgICAgIyAgMHgzMyAtPiBESUdJVCBUSFJFRQorICAgICc0JyAgICAgICAgIyAgMHgzNCAtPiBESUdJVCBGT1VSCisgICAgJzUnICAgICAgICAjICAweDM1IC0+IERJR0lUIEZJVkUKKyAgICAnNicgICAgICAgICMgIDB4MzYgLT4gRElHSVQgU0lYCisgICAgJzcnICAgICAgICAjICAweDM3IC0+IERJR0lUIFNFVkVOCisgICAgJzgnICAgICAgICAjICAweDM4IC0+IERJR0lUIEVJR0hUCisgICAgJzknICAgICAgICAjICAweDM5IC0+IERJR0lUIE5JTkUKKyAgICAnOicgICAgICAgICMgIDB4M0EgLT4gQ09MT04KKyAgICAnOycgICAgICAgICMgIDB4M0IgLT4gU0VNSUNPTE9OCisgICAgJzwnICAgICAgICAjICAweDNDIC0+IExFU1MtVEhBTiBTSUdOCisgICAgJz0nICAgICAgICAjICAweDNEIC0+IEVRVUFMUyBTSUdOCisgICAgJz4nICAgICAgICAjICAweDNFIC0+IEdSRUFURVItVEhBTiBTSUdOCisgICAgJz8nICAgICAgICAjICAweDNGIC0+IFFVRVNUSU9OIE1BUksKKyAgICAnQCcgICAgICAgICMgIDB4NDAgLT4gQ09NTUVSQ0lBTCBBVAorICAgICdBJyAgICAgICAgIyAgMHg0MSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgICAgJ0InICAgICAgICAjICAweDQyIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEIKKyAgICAnQycgICAgICAgICMgIDB4NDMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgQworICAgICdEJyAgICAgICAgIyAgMHg0NCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisgICAgJ0UnICAgICAgICAjICAweDQ1IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEUKKyAgICAnRicgICAgICAgICMgIDB4NDYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgRgorICAgICdHJyAgICAgICAgIyAgMHg0NyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisgICAgJ0gnICAgICAgICAjICAweDQ4IC0+IExBVElOIENBUElUQUwgTEVUVEVSIEgKKyAgICAnSScgICAgICAgICMgIDB4NDkgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQorICAgICdKJyAgICAgICAgIyAgMHg0QSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisgICAgJ0snICAgICAgICAjICAweDRCIC0+IExBVElOIENBUElUQUwgTEVUVEVSIEsKKyAgICAnTCcgICAgICAgICMgIDB4NEMgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTAorICAgICdNJyAgICAgICAgIyAgMHg0RCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisgICAgJ04nICAgICAgICAjICAweDRFIC0+IExBVElOIENBUElUQUwgTEVUVEVSIE4KKyAgICAnTycgICAgICAgICMgIDB4NEYgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgTworICAgICdQJyAgICAgICAgIyAgMHg1MCAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisgICAgJ1EnICAgICAgICAjICAweDUxIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFEKKyAgICAnUicgICAgICAgICMgIDB4NTIgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgUgorICAgICdTJyAgICAgICAgIyAgMHg1MyAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisgICAgJ1QnICAgICAgICAjICAweDU0IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFQKKyAgICAnVScgICAgICAgICMgIDB4NTUgLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQorICAgICdWJyAgICAgICAgIyAgMHg1NiAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisgICAgJ1cnICAgICAgICAjICAweDU3IC0+IExBVElOIENBUElUQUwgTEVUVEVSIFcKKyAgICAnWCcgICAgICAgICMgIDB4NTggLT4gTEFUSU4gQ0FQSVRBTCBMRVRURVIgWAorICAgICdZJyAgICAgICAgIyAgMHg1OSAtPiBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisgICAgJ1onICAgICAgICAjICAweDVBIC0+IExBVElOIENBUElUQUwgTEVUVEVSIFoKKyAgICAnWycgICAgICAgICMgIDB4NUIgLT4gTEVGVCBTUVVBUkUgQlJBQ0tFVAorICAgICdcXCcgICAgICAgIyAgMHg1QyAtPiBSRVZFUlNFIFNPTElEVVMKKyAgICAnXScgICAgICAgICMgIDB4NUQgLT4gUklHSFQgU1FVQVJFIEJSQUNLRVQKKyAgICAnXicgICAgICAgICMgIDB4NUUgLT4gQ0lSQ1VNRkxFWCBBQ0NFTlQKKyAgICAnXycgICAgICAgICMgIDB4NUYgLT4gTE9XIExJTkUKKyAgICAnYCcgICAgICAgICMgIDB4NjAgLT4gR1JBVkUgQUNDRU5UCisgICAgJ2EnICAgICAgICAjICAweDYxIC0+IExBVElOIFNNQUxMIExFVFRFUiBBCisgICAgJ2InICAgICAgICAjICAweDYyIC0+IExBVElOIFNNQUxMIExFVFRFUiBCCisgICAgJ2MnICAgICAgICAjICAweDYzIC0+IExBVElOIFNNQUxMIExFVFRFUiBDCisgICAgJ2QnICAgICAgICAjICAweDY0IC0+IExBVElOIFNNQUxMIExFVFRFUiBECisgICAgJ2UnICAgICAgICAjICAweDY1IC0+IExBVElOIFNNQUxMIExFVFRFUiBFCisgICAgJ2YnICAgICAgICAjICAweDY2IC0+IExBVElOIFNNQUxMIExFVFRFUiBGCisgICAgJ2cnICAgICAgICAjICAweDY3IC0+IExBVElOIFNNQUxMIExFVFRFUiBHCisgICAgJ2gnICAgICAgICAjICAweDY4IC0+IExBVElOIFNNQUxMIExFVFRFUiBICisgICAgJ2knICAgICAgICAjICAweDY5IC0+IExBVElOIFNNQUxMIExFVFRFUiBJCisgICAgJ2onICAgICAgICAjICAweDZBIC0+IExBVElOIFNNQUxMIExFVFRFUiBKCisgICAgJ2snICAgICAgICAjICAweDZCIC0+IExBVElOIFNNQUxMIExFVFRFUiBLCisgICAgJ2wnICAgICAgICAjICAweDZDIC0+IExBVElOIFNNQUxMIExFVFRFUiBMCisgICAgJ20nICAgICAgICAjICAweDZEIC0+IExBVElOIFNNQUxMIExFVFRFUiBNCisgICAgJ24nICAgICAgICAjICAweDZFIC0+IExBVElOIFNNQUxMIExFVFRFUiBOCisgICAgJ28nICAgICAgICAjICAweDZGIC0+IExBVElOIFNNQUxMIExFVFRFUiBPCisgICAgJ3AnICAgICAgICAjICAweDcwIC0+IExBVElOIFNNQUxMIExFVFRFUiBQCisgICAgJ3EnICAgICAgICAjICAweDcxIC0+IExBVElOIFNNQUxMIExFVFRFUiBRCisgICAgJ3InICAgICAgICAjICAweDcyIC0+IExBVElOIFNNQUxMIExFVFRFUiBSCisgICAgJ3MnICAgICAgICAjICAweDczIC0+IExBVElOIFNNQUxMIExFVFRFUiBTCisgICAgJ3QnICAgICAgICAjICAweDc0IC0+IExBVElOIFNNQUxMIExFVFRFUiBUCisgICAgJ3UnICAgICAgICAjICAweDc1IC0+IExBVElOIFNNQUxMIExFVFRFUiBVCisgICAgJ3YnICAgICAgICAjICAweDc2IC0+IExBVElOIFNNQUxMIExFVFRFUiBWCisgICAgJ3cnICAgICAgICAjICAweDc3IC0+IExBVElOIFNNQUxMIExFVFRFUiBXCisgICAgJ3gnICAgICAgICAjICAweDc4IC0+IExBVElOIFNNQUxMIExFVFRFUiBYCisgICAgJ3knICAgICAgICAjICAweDc5IC0+IExBVElOIFNNQUxMIExFVFRFUiBZCisgICAgJ3onICAgICAgICAjICAweDdBIC0+IExBVElOIFNNQUxMIExFVFRFUiBaCisgICAgJ3snICAgICAgICAjICAweDdCIC0+IExFRlQgQ1VSTFkgQlJBQ0tFVAorICAgICd8JyAgICAgICAgIyAgMHg3QyAtPiBWRVJUSUNBTCBMSU5FCisgICAgJ30nICAgICAgICAjICAweDdEIC0+IFJJR0hUIENVUkxZIEJSQUNLRVQKKyAgICAnficgICAgICAgICMgIDB4N0UgLT4gVElMREUKKyAgICAnXHg3ZicgICAgICMgIDB4N0YgLT4gREVMRVRFIChERUwpCisgICAgJ1x1MDQ5NicgICAjICAweDgwIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OTInICAgIyAgMHg4MSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNGVlJyAgICMgIDB4ODIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdcdTA0OTMnICAgIyAgMHg4MyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFCisgICAgJ1x1MjAxZScgICAjICAweDg0IC0+IERPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMjYnICAgIyAgMHg4NSAtPiBIT1JJWk9OVEFMIEVMTElQU0lTCisgICAgJ1x1MDRiNicgICAjICAweDg2IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YWUnICAgIyAgMHg4NyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x1MDRiMicgICAjICAweDg4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRhZicgICAjICAweDg5IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVCisgICAgJ1x1MDRhMCcgICAjICAweDhBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBU0hLSVIgS0EKKyAgICAnXHUwNGUyJyAgICMgIDB4OEIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTA0YTInICAgIyAgMHg4QyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0OWEnICAgIyAgMHg4RCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YmEnICAgIyAgMHg4RSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBCisgICAgJ1x1MDRiOCcgICAjICAweDhGIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdcdTA0OTcnICAgIyAgMHg5MCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MjAxOCcgICAjICAweDkxIC0+IExFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLCisgICAgJ1x1MjAxOScgICAjICAweDkyIC0+IFJJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWMnICAgIyAgMHg5MyAtPiBMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTIwMWQnICAgIyAgMHg5NCAtPiBSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUksKKyAgICAnXHUyMDIyJyAgICMgIDB4OTUgLT4gQlVMTEVUCisgICAgJ1x1MjAxMycgICAjICAweDk2IC0+IEVOIERBU0gKKyAgICAnXHUyMDE0JyAgICMgIDB4OTcgLT4gRU0gREFTSAorICAgICdcdTA0YjMnICAgIyAgMHg5OCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGI3JyAgICMgIDB4OTkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YTEnICAgIyAgMHg5QSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQQorICAgICdcdTA0ZTMnICAgIyAgMHg5QiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorICAgICdcdTA0YTMnICAgIyAgMHg5QyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNDliJyAgICMgIDB4OUQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRiYicgICAjICAweDlFIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBCisgICAgJ1x1MDRiOScgICAjICAweDlGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyAgICAnXHhhMCcgICAgICMgIDB4QTAgLT4gTk8tQlJFQUsgU1BBQ0UKKyAgICAnXHUwNDBlJyAgICMgIDB4QTEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQorICAgICdcdTA0NWUnICAgIyAgMHhBMiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVSAoQnllbG9ydXNzaWFuKQorICAgICdcdTA0MDgnICAgIyAgMHhBMyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRQorICAgICdcdTA0ZTgnICAgIyAgMHhBNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTworICAgICdcdTA0OTgnICAgIyAgMHhBNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUgorICAgICdcdTA0YjAnICAgIyAgMHhBNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFCisgICAgJ1x4YTcnICAgICAjICAweEE3IC0+IFNFQ1RJT04gU0lHTgorICAgICdcdTA0MDEnICAgIyAgMHhBOCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworICAgICdceGE5JyAgICAgIyAgMHhBOSAtPiBDT1BZUklHSFQgU0lHTgorICAgICdcdTA0ZDgnICAgIyAgMHhBQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQQorICAgICdceGFiJyAgICAgIyAgMHhBQiAtPiBMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdceGFjJyAgICAgIyAgMHhBQyAtPiBOT1QgU0lHTgorICAgICdcdTA0ZWYnICAgIyAgMHhBRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTgorICAgICdceGFlJyAgICAgIyAgMHhBRSAtPiBSRUdJU1RFUkVEIFNJR04KKyAgICAnXHUwNDljJyAgICMgIDB4QUYgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0UKKyAgICAnXHhiMCcgICAgICMgIDB4QjAgLT4gREVHUkVFIFNJR04KKyAgICAnXHUwNGIxJyAgICMgIDB4QjEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0UKKyAgICAnXHUwNDA2JyAgICMgIDB4QjIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJCisgICAgJ1x1MDQ1NicgICAjICAweEIzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEkKKyAgICAnXHUwNDk5JyAgICMgIDB4QjQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDRlOScgICAjICAweEI1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTworICAgICdceGI2JyAgICAgIyAgMHhCNiAtPiBQSUxDUk9XIFNJR04KKyAgICAnXHhiNycgICAgICMgIDB4QjcgLT4gTUlERExFIERPVAorICAgICdcdTA0NTEnICAgIyAgMHhCOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSU8KKyAgICAnXHUyMTE2JyAgICMgIDB4QjkgLT4gTlVNRVJPIFNJR04KKyAgICAnXHUwNGQ5JyAgICMgIDB4QkEgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBCisgICAgJ1x4YmInICAgICAjICAweEJCIC0+IFJJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSworICAgICdcdTA0NTgnICAgIyAgMHhCQyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSkUKKyAgICAnXHUwNGFhJyAgICMgIDB4QkQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVIKKyAgICAnXHUwNGFiJyAgICMgIDB4QkUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSCisgICAgJ1x1MDQ5ZCcgICAjICAweEJGIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRQorICAgICdcdTA0MTAnICAgIyAgMHhDMCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBCisgICAgJ1x1MDQxMScgICAjICAweEMxIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEJFCisgICAgJ1x1MDQxMicgICAjICAweEMyIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFZFCisgICAgJ1x1MDQxMycgICAjICAweEMzIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRQorICAgICdcdTA0MTQnICAgIyAgMHhDNCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERQorICAgICdcdTA0MTUnICAgIyAgMHhDNSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRQorICAgICdcdTA0MTYnICAgIyAgMHhDNiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUKKyAgICAnXHUwNDE3JyAgICMgIDB4QzcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUKKyAgICAnXHUwNDE4JyAgICMgIDB4QzggLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSQorICAgICdcdTA0MTknICAgIyAgMHhDOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJCisgICAgJ1x1MDQxYScgICAjICAweENBIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEtBCisgICAgJ1x1MDQxYicgICAjICAweENCIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVMCisgICAgJ1x1MDQxYycgICAjICAweENDIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVNCisgICAgJ1x1MDQxZCcgICAjICAweENEIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIEVOCisgICAgJ1x1MDQxZScgICAjICAweENFIC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIE8KKyAgICAnXHUwNDFmJyAgICMgIDB4Q0YgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUKKyAgICAnXHUwNDIwJyAgICMgIDB4RDAgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVIKKyAgICAnXHUwNDIxJyAgICMgIDB4RDEgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMKKyAgICAnXHUwNDIyJyAgICMgIDB4RDIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUKKyAgICAnXHUwNDIzJyAgICMgIDB4RDMgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVQorICAgICdcdTA0MjQnICAgIyAgMHhENCAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFRgorICAgICdcdTA0MjUnICAgIyAgMHhENSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQQorICAgICdcdTA0MjYnICAgIyAgMHhENiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0UKKyAgICAnXHUwNDI3JyAgICMgIDB4RDcgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQyOCcgICAjICAweEQ4IC0+IENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQQorICAgICdcdTA0MjknICAgIyAgMHhEOSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQQorICAgICdcdTA0MmEnICAgIyAgMHhEQSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDJiJyAgICMgIDB4REIgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVQorICAgICdcdTA0MmMnICAgIyAgMHhEQyAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTT0ZUIFNJR04KKyAgICAnXHUwNDJkJyAgICMgIDB4REQgLT4gQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRQorICAgICdcdTA0MmUnICAgIyAgMHhERSAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZVQorICAgICdcdTA0MmYnICAgIyAgMHhERiAtPiBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQQorICAgICdcdTA0MzAnICAgIyAgMHhFMCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQQorICAgICdcdTA0MzEnICAgIyAgMHhFMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQkUKKyAgICAnXHUwNDMyJyAgICMgIDB4RTIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFCisgICAgJ1x1MDQzMycgICAjICAweEUzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBHSEUKKyAgICAnXHUwNDM0JyAgICMgIDB4RTQgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIERFCisgICAgJ1x1MDQzNScgICAjICAweEU1IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBJRQorICAgICdcdTA0MzYnICAgIyAgMHhFNiAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFCisgICAgJ1x1MDQzNycgICAjICAweEU3IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBaRQorICAgICdcdTA0MzgnICAgIyAgMHhFOCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSQorICAgICdcdTA0MzknICAgIyAgMHhFOSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSQorICAgICdcdTA0M2EnICAgIyAgMHhFQSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EKKyAgICAnXHUwNDNiJyAgICMgIDB4RUIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMCisgICAgJ1x1MDQzYycgICAjICAweEVDIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFTQorICAgICdcdTA0M2QnICAgIyAgMHhFRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4KKyAgICAnXHUwNDNlJyAgICMgIDB4RUUgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIE8KKyAgICAnXHUwNDNmJyAgICMgIDB4RUYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFCisgICAgJ1x1MDQ0MCcgICAjICAweEYwIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFUgorICAgICdcdTA0NDEnICAgIyAgMHhGMSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMKKyAgICAnXHUwNDQyJyAgICMgIDB4RjIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFCisgICAgJ1x1MDQ0MycgICAjICAweEYzIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBVCisgICAgJ1x1MDQ0NCcgICAjICAweEY0IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBFRgorICAgICdcdTA0NDUnICAgIyAgMHhGNSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEKKyAgICAnXHUwNDQ2JyAgICMgIDB4RjYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTRQorICAgICdcdTA0NDcnICAgIyAgMHhGNyAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFCisgICAgJ1x1MDQ0OCcgICAjICAweEY4IC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBTSEEKKyAgICAnXHUwNDQ5JyAgICMgIDB4RjkgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQ0hBCisgICAgJ1x1MDQ0YScgICAjICAweEZBIC0+IENZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR04KKyAgICAnXHUwNDRiJyAgICMgIDB4RkIgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUKKyAgICAnXHUwNDRjJyAgICMgIDB4RkMgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTgorICAgICdcdTA0NGQnICAgIyAgMHhGRCAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgRQorICAgICdcdTA0NGUnICAgIyAgMHhGRSAtPiBDWVJJTExJQyBTTUFMTCBMRVRURVIgWVUKKyAgICAnXHUwNDRmJyAgICMgIDB4RkYgLT4gQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBCispCiAKLWVuY29kaW5nX21hcCA9IGNvZGVjcy5tYWtlX2VuY29kaW5nX21hcChkZWNvZGluZ19tYXApCisjIyMgRW5jb2RpbmcgdGFibGUKK2VuY29kaW5nX3RhYmxlPWNvZGVjcy5jaGFybWFwX2J1aWxkKGRlY29kaW5nX3RhYmxlKQpkaWZmIC0tZ2l0IGEvTGliL2ZpbGVpbnB1dC5weSBiL0xpYi9maWxlaW5wdXQucHkKaW5kZXggNTU0YmViMi4uZGJiYmIyMSAxMDA2NDQKLS0tIGEvTGliL2ZpbGVpbnB1dC5weQorKysgYi9MaWIvZmlsZWlucHV0LnB5CkBAIC0zOTgsOSArMzk4LDggQEAKIAogCiBkZWYgaG9va19lbmNvZGVkKGVuY29kaW5nKToKLSAgICBpbXBvcnQgY29kZWNzCiAgICAgZGVmIG9wZW5ob29rKGZpbGVuYW1lLCBtb2RlKToKLSAgICAgICAgcmV0dXJuIGNvZGVjcy5vcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZykKKyAgICAgICAgcmV0dXJuIG9wZW4oZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPWVuY29kaW5nKQogICAgIHJldHVybiBvcGVuaG9vawogCiAKZGlmZiAtLWdpdCBhL0xpYi9mbm1hdGNoLnB5IGIvTGliL2ZubWF0Y2gucHkKaW5kZXggNzI2ZmJlNS4uZjQ0Njc2OSAxMDA2NDQKLS0tIGEvTGliL2ZubWF0Y2gucHkKKysrIGIvTGliL2ZubWF0Y2gucHkKQEAgLTM1LDkgKzM1LDkgQEAKICAgICBwYXQgPSBvcy5wYXRoLm5vcm1jYXNlKHBhdCkKICAgICByZXR1cm4gZm5tYXRjaGNhc2UobmFtZSwgcGF0KQogCi1AZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPTI1MCkKLWRlZiBfY29tcGlsZV9wYXR0ZXJuKHBhdCwgaXNfYnl0ZXM9RmFsc2UpOgotICAgIGlmIGlzX2J5dGVzOgorQGZ1bmN0b29scy5scnVfY2FjaGUobWF4c2l6ZT0yNTAsIHR5cGVkPVRydWUpCitkZWYgX2NvbXBpbGVfcGF0dGVybihwYXQpOgorICAgIGlmIGlzaW5zdGFuY2UocGF0LCBieXRlcyk6CiAgICAgICAgIHBhdF9zdHIgPSBzdHIocGF0LCAnSVNPLTg4NTktMScpCiAgICAgICAgIHJlc19zdHIgPSB0cmFuc2xhdGUocGF0X3N0cikKICAgICAgICAgcmVzID0gYnl0ZXMocmVzX3N0ciwgJ0lTTy04ODU5LTEnKQpAQCAtNDksNyArNDksNyBAQAogICAgICIiIlJldHVybiB0aGUgc3Vic2V0IG9mIHRoZSBsaXN0IE5BTUVTIHRoYXQgbWF0Y2ggUEFULiIiIgogICAgIHJlc3VsdCA9IFtdCiAgICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCi0gICAgbWF0Y2ggPSBfY29tcGlsZV9wYXR0ZXJuKHBhdCwgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKSkKKyAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0KQogICAgIGlmIG9zLnBhdGggaXMgcG9zaXhwYXRoOgogICAgICAgICAjIG5vcm1jYXNlIG9uIHBvc2l4IGlzIE5PUC4gT3B0aW1pemUgaXQgYXdheSBmcm9tIHRoZSBsb29wLgogICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKQEAgLTY3LDcgKzY3LDcgQEAKICAgICBUaGlzIGlzIGEgdmVyc2lvbiBvZiBmbm1hdGNoKCkgd2hpY2ggZG9lc24ndCBjYXNlLW5vcm1hbGl6ZQogICAgIGl0cyBhcmd1bWVudHMuCiAgICAgIiIiCi0gICAgbWF0Y2ggPSBfY29tcGlsZV9wYXR0ZXJuKHBhdCwgaXNpbnN0YW5jZShwYXQsIGJ5dGVzKSkKKyAgICBtYXRjaCA9IF9jb21waWxlX3BhdHRlcm4ocGF0KQogICAgIHJldHVybiBtYXRjaChuYW1lKSBpcyBub3QgTm9uZQogCiAKZGlmZiAtLWdpdCBhL0xpYi9mdHBsaWIucHkgYi9MaWIvZnRwbGliLnB5CmluZGV4IDhlNTMwMjMuLjE4ODg3YTYgMTAwNjQ0Ci0tLSBhL0xpYi9mdHBsaWIucHkKKysrIGIvTGliL2Z0cGxpYi5weQpAQCAtMTAwLDE0ICsxMDAsMTUgQEAKICAgICBmaWxlID0gTm9uZQogICAgIHdlbGNvbWUgPSBOb25lCiAgICAgcGFzc2l2ZXNlcnZlciA9IDEKLSAgICBlbmNvZGluZyA9ICJsYXRpbjEiCisgICAgZW5jb2RpbmcgPSAibGF0aW4tMSIKIAogICAgICMgSW5pdGlhbGl6YXRpb24gbWV0aG9kIChjYWxsZWQgYnkgY2xhc3MgaW5zdGFudGlhdGlvbikuCiAgICAgIyBJbml0aWFsaXplIGhvc3QgdG8gbG9jYWxob3N0LCBwb3J0IHRvIHN0YW5kYXJkIGZ0cCBwb3J0CiAgICAgIyBPcHRpb25hbCBhcmd1bWVudHMgYXJlIGhvc3QgKGZvciBjb25uZWN0KCkpLAogICAgICMgYW5kIHVzZXIsIHBhc3N3ZCwgYWNjdCAoZm9yIGxvZ2luKCkpCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHVzZXI9JycsIHBhc3N3ZD0nJywgYWNjdD0nJywKLSAgICAgICAgICAgICAgICAgdGltZW91dD1fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCk6CisgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgorICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAogICAgICAgICBpZiBob3N0OgogICAgICAgICAgICAgc2VsZi5jb25uZWN0KGhvc3QpCkBAIC0xMjgsMTAgKzEyOSwxMiBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKLSAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PScnLCBwb3J0PTAsIHRpbWVvdXQ9LTk5OSk6CisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgaG9zdD0nJywgcG9ydD0wLCB0aW1lb3V0PS05OTksIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAnJydDb25uZWN0IHRvIGhvc3QuICBBcmd1bWVudHMgYXJlOgogICAgICAgICAgLSBob3N0OiBob3N0bmFtZSB0byBjb25uZWN0IHRvIChzdHJpbmcsIGRlZmF1bHQgcHJldmlvdXMgaG9zdCkKICAgICAgICAgIC0gcG9ydDogcG9ydCB0byBjb25uZWN0IHRvIChpbnRlZ2VyLCBkZWZhdWx0IHByZXZpb3VzIHBvcnQpCisgICAgICAgICAtIHNvdXJjZV9hZGRyZXNzOiBhIDItdHVwbGUgKGhvc3QsIHBvcnQpIGZvciB0aGUgc29ja2V0IHRvIGJpbmQKKyAgICAgICAgICAgdG8gYXMgaXRzIHNvdXJjZSBhZGRyZXNzIGJlZm9yZSBjb25uZWN0aW5nLgogICAgICAgICAnJycKICAgICAgICAgaWYgaG9zdCAhPSAnJzoKICAgICAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKQEAgLTEzOSw3ICsxNDIsMTAgQEAKICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKICAgICAgICAgaWYgdGltZW91dCAhPSAtOTk5OgogICAgICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgc2VsZi50aW1lb3V0KQorICAgICAgICBpZiBzb3VyY2VfYWRkcmVzcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MgPSBzb3VyY2VfYWRkcmVzcworICAgICAgICBzZWxmLnNvY2sgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgc2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgc2VsZi5hZiA9IHNlbGYuc29jay5mYW1pbHkKICAgICAgICAgc2VsZi5maWxlID0gc2VsZi5zb2NrLm1ha2VmaWxlKCdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKICAgICAgICAgc2VsZi53ZWxjb21lID0gc2VsZi5nZXRyZXNwKCkKQEAgLTE2OSwxMCArMTc1LDggQEAKIAogICAgICMgSW50ZXJuYWw6ICJzYW5pdGl6ZSIgYSBzdHJpbmcgZm9yIHByaW50aW5nCiAgICAgZGVmIHNhbml0aXplKHNlbGYsIHMpOgotICAgICAgICBpZiBzWzo1XSA9PSAncGFzcyAnIG9yIHNbOjVdID09ICdQQVNTICc6Ci0gICAgICAgICAgICBpID0gbGVuKHMpCi0gICAgICAgICAgICB3aGlsZSBpID4gNSBhbmQgc1tpLTFdIGluIHsnXHInLCAnXG4nfToKLSAgICAgICAgICAgICAgICBpID0gaS0xCisgICAgICAgIGlmIHNbOjVdIGluIHsncGFzcyAnLCAnUEFTUyAnfToKKyAgICAgICAgICAgIGkgPSBsZW4ocy5yc3RyaXAoJ1xyXG4nKSkKICAgICAgICAgICAgIHMgPSBzWzo1XSArICcqJyooaS01KSArIHNbaTpdCiAgICAgICAgIHJldHVybiByZXByKHMpCiAKQEAgLTMzNSw3ICszMzksOCBAQAogICAgICAgICBzaXplID0gTm9uZQogICAgICAgICBpZiBzZWxmLnBhc3NpdmVzZXJ2ZXI6CiAgICAgICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5tYWtlcGFzdigpCi0gICAgICAgICAgICBjb25uID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgc2VsZi50aW1lb3V0KQorICAgICAgICAgICAgY29ubiA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHNlbGYudGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c2VsZi5zb3VyY2VfYWRkcmVzcykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiByZXN0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRjbWQoIlJFU1QgJXMiICUgcmVzdCkKQEAgLTM1NCw4ICszNTksNyBAQAogICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzb2NrID0gc2VsZi5tYWtlcG9ydCgpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYubWFrZXBvcnQoKSBhcyBzb2NrOgogICAgICAgICAgICAgICAgIGlmIHJlc3QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZGNtZCgiUkVTVCAlcyIgJSByZXN0KQogICAgICAgICAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoY21kKQpAQCAtMzY3LDggKzM3MSw2IEBACiAgICAgICAgICAgICAgICAgY29ubiwgc29ja2FkZHIgPSBzb2NrLmFjY2VwdCgpCiAgICAgICAgICAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIG5vdCBfR0xPQkFMX0RFRkFVTFRfVElNRU9VVDoKICAgICAgICAgICAgICAgICAgICAgY29ubi5zZXR0aW1lb3V0KHNlbGYudGltZW91dCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgIGlmIHJlc3BbOjNdID09ICcxNTAnOgogICAgICAgICAgICAgIyB0aGlzIGlzIGNvbmRpdGlvbmFsIGluIGNhc2Ugd2UgcmVjZWl2ZWQgYSAxMjUKICAgICAgICAgICAgIHNpemUgPSBwYXJzZTE1MChyZXNwKQpAQCAtNDI2LDcgKzQyOCw3IEBACiAgICAgICAgICIiIlJldHJpZXZlIGRhdGEgaW4gbGluZSBtb2RlLiAgQSBuZXcgcG9ydCBpcyBjcmVhdGVkIGZvciB5b3UuCiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICBjbWQ6IEEgUkVUUiwgTElTVCwgTkxTVCwgb3IgTUxTRCBjb21tYW5kLgorICAgICAgICAgIGNtZDogQSBSRVRSLCBMSVNULCBvciBOTFNUIGNvbW1hbmQuCiAgICAgICAgICAgY2FsbGJhY2s6IEFuIG9wdGlvbmFsIHNpbmdsZSBwYXJhbWV0ZXIgY2FsbGFibGUgdGhhdCBpcyBjYWxsZWQKICAgICAgICAgICAgICAgICAgICAgZm9yIGVhY2ggbGluZSB3aXRoIHRoZSB0cmFpbGluZyBDUkxGIHN0cmlwcGVkLgogICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdDogcHJpbnRfbGluZSgpXQpAQCAtNTI3LDYgKzUyOSwzNCBAQAogICAgICAgICAgICAgICAgIGNtZCA9IGNtZCArICgnICcgKyBhcmcpCiAgICAgICAgIHNlbGYucmV0cmxpbmVzKGNtZCwgZnVuYykKIAorICAgIGRlZiBtbHNkKHNlbGYsIHBhdGg9IiIsIGZhY3RzPVtdKToKKyAgICAgICAgJycnTGlzdCBhIGRpcmVjdG9yeSBpbiBhIHN0YW5kYXJkaXplZCBmb3JtYXQgYnkgdXNpbmcgTUxTRAorICAgICAgICBjb21tYW5kIChSRkMtMzY1OSkuIElmIHBhdGggaXMgb21pdHRlZCB0aGUgY3VycmVudCBkaXJlY3RvcnkKKyAgICAgICAgaXMgYXNzdW1lZC4gImZhY3RzIiBpcyBhIGxpc3Qgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgdGhlIHR5cGUKKyAgICAgICAgb2YgaW5mb3JtYXRpb24gZGVzaXJlZCAoZS5nLiBbInR5cGUiLCAic2l6ZSIsICJwZXJtIl0pLgorCisgICAgICAgIFJldHVybiBhIGdlbmVyYXRvciBvYmplY3QgeWllbGRpbmcgYSB0dXBsZSBvZiB0d28gZWxlbWVudHMKKyAgICAgICAgZm9yIGV2ZXJ5IGZpbGUgZm91bmQgaW4gcGF0aC4KKyAgICAgICAgRmlyc3QgZWxlbWVudCBpcyB0aGUgZmlsZSBuYW1lLCB0aGUgc2Vjb25kIG9uZSBpcyBhIGRpY3Rpb25hcnkKKyAgICAgICAgaW5jbHVkaW5nIGEgdmFyaWFibGUgbnVtYmVyIG9mICJmYWN0cyIgZGVwZW5kaW5nIG9uIHRoZSBzZXJ2ZXIKKyAgICAgICAgYW5kIHdoZXRoZXIgImZhY3RzIiBhcmd1bWVudCBoYXMgYmVlbiBwcm92aWRlZC4KKyAgICAgICAgJycnCisgICAgICAgIGlmIGZhY3RzOgorICAgICAgICAgICAgc2VsZi5zZW5kY21kKCJPUFRTIE1MU1QgIiArICI7Ii5qb2luKGZhY3RzKSArICI7IikKKyAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgIGNtZCA9ICJNTFNEICVzIiAlIHBhdGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNtZCA9ICJNTFNEIgorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIHNlbGYucmV0cmxpbmVzKGNtZCwgbGluZXMuYXBwZW5kKQorICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgIGZhY3RzX2ZvdW5kLCBfLCBuYW1lID0gbGluZS5yc3RyaXAoQ1JMRikucGFydGl0aW9uKCcgJykKKyAgICAgICAgICAgIGVudHJ5ID0ge30KKyAgICAgICAgICAgIGZvciBmYWN0IGluIGZhY3RzX2ZvdW5kWzotMV0uc3BsaXQoIjsiKToKKyAgICAgICAgICAgICAgICBrZXksIF8sIHZhbHVlID0gZmFjdC5wYXJ0aXRpb24oIj0iKQorICAgICAgICAgICAgICAgIGVudHJ5W2tleS5sb3dlcigpXSA9IHZhbHVlCisgICAgICAgICAgICB5aWVsZCAobmFtZSwgZW50cnkpCisKICAgICBkZWYgcmVuYW1lKHNlbGYsIGZyb21uYW1lLCB0b25hbWUpOgogICAgICAgICAnJydSZW5hbWUgYSBmaWxlLicnJwogICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdSTkZSICcgKyBmcm9tbmFtZSkKQEAgLTU2MSwxMCArNTkxLDcgQEAKICAgICAgICAgcmVzcCA9IHNlbGYuc2VuZGNtZCgnU0laRSAnICsgZmlsZW5hbWUpCiAgICAgICAgIGlmIHJlc3BbOjNdID09ICcyMTMnOgogICAgICAgICAgICAgcyA9IHJlc3BbMzpdLnN0cmlwKCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgICAgICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocykKKyAgICAgICAgICAgIHJldHVybiBpbnQocykKIAogICAgIGRlZiBta2Qoc2VsZiwgZGlybmFtZSk6CiAgICAgICAgICcnJ01ha2UgYSBkaXJlY3RvcnksIHJldHVybiBpdHMgZnVsbCBwYXRobmFtZS4nJycKQEAgLTU5NiwxMSArNjIzLDExIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgICcnJ0Nsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuJycnCi0gICAgICAgIGlmIHNlbGYuZmlsZToKKyAgICAgICAgaWYgc2VsZi5maWxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5zb2NrIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKLQorICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2sgPSBOb25lCiAKIHRyeToKICAgICBpbXBvcnQgc3NsCkBAIC02NDQsNyArNjcxLDcgQEAKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBrZXlmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1Ob25lLCBjb250ZXh0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PV9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKKyAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9X0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsIHNvdXJjZV9hZGRyZXNzPU5vbmUpOgogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCkBAIC02NTUsNyArNjgyLDcgQEAKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAogICAgICAgICAgICAgc2VsZi5fcHJvdF9wID0gRmFsc2UKLSAgICAgICAgICAgIEZUUC5fX2luaXRfXyhzZWxmLCBob3N0LCB1c2VyLCBwYXNzd2QsIGFjY3QsIHRpbWVvdXQpCisgICAgICAgICAgICBGVFAuX19pbml0X18oc2VsZiwgaG9zdCwgdXNlciwgcGFzc3dkLCBhY2N0LCB0aW1lb3V0LCBzb3VyY2VfYWRkcmVzcykKIAogICAgICAgICBkZWYgbG9naW4oc2VsZiwgdXNlcj0nJywgcGFzc3dkPScnLCBhY2N0PScnLCBzZWN1cmU9VHJ1ZSk6CiAgICAgICAgICAgICBpZiBzZWN1cmUgYW5kIG5vdCBpc2luc3RhbmNlKHNlbGYuc29jaywgc3NsLlNTTFNvY2tldCk6CkBAIC02NzksNiArNzA2LDE0IEBACiAgICAgICAgICAgICBzZWxmLmZpbGUgPSBzZWxmLnNvY2subWFrZWZpbGUobW9kZT0ncicsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCiAgICAgICAgICAgICByZXR1cm4gcmVzcAogCisgICAgICAgIGRlZiBjY2Moc2VsZik6CisgICAgICAgICAgICAnJydTd2l0Y2ggYmFjayB0byBhIGNsZWFyLXRleHQgY29udHJvbCBjb25uZWN0aW9uLicnJworICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VsZi5zb2NrLCBzc2wuU1NMU29ja2V0KToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgdXNpbmcgVExTIikKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnZvaWRjbWQoJ0NDQycpCisgICAgICAgICAgICBzZWxmLnNvY2sgPSBzZWxmLnNvY2sudW53cmFwKCkKKyAgICAgICAgICAgIHJldHVybiByZXNwCisKICAgICAgICAgZGVmIHByb3RfcChzZWxmKToKICAgICAgICAgICAgICcnJ1NldCB1cCBzZWN1cmUgZGF0YSBjb25uZWN0aW9uLicnJwogICAgICAgICAgICAgIyBQUk9UIGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGRhdGEgY2hhbm5lbCBpcyB0byBiZSBwcm90ZWN0ZWQuCkBAIC03MTUsOCArNzUwLDcgQEAKIAogICAgICAgICBkZWYgcmV0cmJpbmFyeShzZWxmLCBjbWQsIGNhbGxiYWNrLCBibG9ja3NpemU9ODE5MiwgcmVzdD1Ob25lKToKICAgICAgICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBJJykKLSAgICAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpIGFzIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGNvbm4ucmVjdihibG9ja3NpemUpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgpAQCAtNzI1LDggKzc1OSw2IEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgICAgIGRlZiByZXRybGluZXMoc2VsZiwgY21kLCBjYWxsYmFjayA9IE5vbmUpOgpAQCAtNzM0LDcgKzc2Niw3IEBACiAgICAgICAgICAgICByZXNwID0gc2VsZi5zZW5kY21kKCdUWVBFIEEnKQogICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kKQogICAgICAgICAgICAgZnAgPSBjb25uLm1ha2VmaWxlKCdyJywgZW5jb2Rpbmc9c2VsZi5lbmNvZGluZykKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggZnAsIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAyOiBwcmludCgnKnJldHIqJywgcmVwcihsaW5lKSkKQEAgLTc0OCwxNSArNzgwLDExIEBACiAgICAgICAgICAgICAgICAgIyBzaHV0ZG93biBzc2wgbGF5ZXIKICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbm4sIHNzbC5TU0xTb2NrZXQpOgogICAgICAgICAgICAgICAgICAgICBjb25uLnVud3JhcCgpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgc3RvcmJpbmFyeShzZWxmLCBjbWQsIGZwLCBibG9ja3NpemU9ODE5MiwgY2FsbGJhY2s9Tm9uZSwgcmVzdD1Ob25lKToKICAgICAgICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBJJykKLSAgICAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCwgcmVzdCkKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpIGFzIGNvbm46CiAgICAgICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICAgICAgYnVmID0gZnAucmVhZChibG9ja3NpemUpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6IGJyZWFrCkBAIC03NjUsMTQgKzc5MywxMSBAQAogICAgICAgICAgICAgICAgICMgc2h1dGRvd24gc3NsIGxheWVyCiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb25uLCBzc2wuU1NMU29ja2V0KToKICAgICAgICAgICAgICAgICAgICAgY29ubi51bndyYXAoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgICAgICBkZWYgc3RvcmxpbmVzKHNlbGYsIGNtZCwgZnAsIGNhbGxiYWNrPU5vbmUpOgogICAgICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEEnKQotICAgICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kKQotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzZWxmLnRyYW5zZmVyY21kKGNtZCkgYXMgY29ubjoKICAgICAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkbGluZSgpCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6IGJyZWFrCkBAIC03ODQsOCArODA5LDYgQEAKICAgICAgICAgICAgICAgICAjIHNodXRkb3duIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29ubiwgc3NsLlNTTFNvY2tldCk6CiAgICAgICAgICAgICAgICAgICAgIGNvbm4udW53cmFwKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi52b2lkcmVzcCgpCiAKICAgICAgICAgZGVmIGFib3J0KHNlbGYpOgpAQCAtODE4LDExICs4NDEsNyBAQAogICAgIG0gPSBfMTUwX3JlLm1hdGNoKHJlc3ApCiAgICAgaWYgbm90IG06CiAgICAgICAgIHJldHVybiBOb25lCi0gICAgcyA9IG0uZ3JvdXAoMSkKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBpbnQocykKLSAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICByZXR1cm4gaW50KHMpCisgICAgcmV0dXJuIGludChtLmdyb3VwKDEpKQogCiAKIF8yMjdfcmUgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvZnVuY3Rvb2xzLnB5IGIvTGliL2Z1bmN0b29scy5weQppbmRleCA4NWVhMjU3Li4yMjZhNDZlIDEwMDY0NAotLS0gYS9MaWIvZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi9mdW5jdG9vbHMucHkKQEAgLTEyLDE2ICsxMiwyMiBAQAogICAgICAgICAgICAndG90YWxfb3JkZXJpbmcnLCAnY21wX3RvX2tleScsICdscnVfY2FjaGUnLCAncmVkdWNlJywgJ3BhcnRpYWwnXQogCiBmcm9tIF9mdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwsIHJlZHVjZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIG5hbWVkdHVwbGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIHRyeToKICAgICBmcm9tIF90aHJlYWQgaW1wb3J0IGFsbG9jYXRlX2xvY2sgYXMgTG9jawogZXhjZXB0OgogICAgIGZyb20gX2R1bW15X3RocmVhZCBpbXBvcnQgYWxsb2NhdGVfbG9jayBhcyBMb2NrCiAKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGRlY29yYXRvcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwogIyB1cGRhdGVfd3JhcHBlcigpIGFuZCB3cmFwcygpIGFyZSB0b29scyB0byBoZWxwIHdyaXRlCiAjIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY2FuIGhhbmRsZSBuYWl2ZSBpbnRyb3NwZWN0aW9uCiAKLVdSQVBQRVJfQVNTSUdOTUVOVFMgPSAoJ19fbW9kdWxlX18nLCAnX19uYW1lX18nLCAnX19kb2NfXycsICdfX2Fubm90YXRpb25zX18nKQorV1JBUFBFUl9BU1NJR05NRU5UUyA9ICgnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXycsCisgICAgICAgICAgICAgICAgICAgICAgICdfX2Fubm90YXRpb25zX18nKQogV1JBUFBFUl9VUERBVEVTID0gKCdfX2RpY3RfXycsKQogZGVmIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsCiAgICAgICAgICAgICAgICAgICAgd3JhcHBlZCwKQEAgLTY1LDYgKzcxLDExIEBACiAgICAgcmV0dXJuIHBhcnRpYWwodXBkYXRlX3dyYXBwZXIsIHdyYXBwZWQ9d3JhcHBlZCwKICAgICAgICAgICAgICAgICAgICBhc3NpZ25lZD1hc3NpZ25lZCwgdXBkYXRlZD11cGRhdGVkKQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgdG90YWxfb3JkZXJpbmcgY2xhc3MgZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCiBkZWYgdG90YWxfb3JkZXJpbmcoY2xzKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgdGhhdCBmaWxscyBpbiBtaXNzaW5nIG9yZGVyaW5nIG1ldGhvZHMiIiIKICAgICBjb252ZXJ0ID0gewpAQCAtOTMsNiArMTA0LDExIEBACiAgICAgICAgICAgICBzZXRhdHRyKGNscywgb3BuYW1lLCBvcGZ1bmMpCiAgICAgcmV0dXJuIGNscwogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgY21wX3RvX2tleSgpIGZ1bmN0aW9uIGNvbnZlcnRlcgorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwogZGVmIGNtcF90b19rZXkobXljbXApOgogICAgICIiIkNvbnZlcnQgYSBjbXA9IGZ1bmN0aW9uIGludG8gYSBrZXk9IGZ1bmN0aW9uIiIiCiAgICAgY2xhc3MgSyhvYmplY3QpOgpAQCAtMTE0LDk1ICsxMzAsMTc0IEBACiAgICAgICAgIF9faGFzaF9fID0gTm9uZQogICAgIHJldHVybiBLCiAKLV9DYWNoZUluZm8gPSBuYW1lZHR1cGxlKCJDYWNoZUluZm8iLCAiaGl0cyBtaXNzZXMgbWF4c2l6ZSBjdXJyc2l6ZSIpCit0cnk6CisgICAgZnJvbSBfZnVuY3Rvb2xzIGltcG9ydCBjbXBfdG9fa2V5CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwogCi1kZWYgbHJ1X2NhY2hlKG1heHNpemU9MTAwKToKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyBMUlUgQ2FjaGUgZnVuY3Rpb24gZGVjb3JhdG9yCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitfQ2FjaGVJbmZvID0gbmFtZWR0dXBsZSgiQ2FjaGVJbmZvIiwgWyJoaXRzIiwgIm1pc3NlcyIsICJtYXhzaXplIiwgImN1cnJzaXplIl0pCisKK2NsYXNzIF9IYXNoZWRTZXEobGlzdCk6CisgICAgX19zbG90c19fID0gJ2hhc2h2YWx1ZScKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0dXAsIGhhc2g9aGFzaCk6CisgICAgICAgIHNlbGZbOl0gPSB0dXAKKyAgICAgICAgc2VsZi5oYXNodmFsdWUgPSBoYXNoKHR1cCkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuaGFzaHZhbHVlCisKK2RlZiBfbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQsCisgICAgICAgICAgICAga3dkX21hcmsgPSAob2JqZWN0KCksKSwKKyAgICAgICAgICAgICBmYXN0dHlwZXMgPSB7aW50LCBzdHIsIGZyb3plbnNldCwgdHlwZShOb25lKX0sCisgICAgICAgICAgICAgc29ydGVkPXNvcnRlZCwgdHVwbGU9dHVwbGUsIHR5cGU9dHlwZSwgbGVuPWxlbik6CisgICAgJ01ha2UgYSBjYWNoZSBrZXkgZnJvbSBvcHRpb25hbGx5IHR5cGVkIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzJworICAgIGtleSA9IGFyZ3MKKyAgICBpZiBrd2RzOgorICAgICAgICBzb3J0ZWRfaXRlbXMgPSBzb3J0ZWQoa3dkcy5pdGVtcygpKQorICAgICAgICBrZXkgKz0ga3dkX21hcmsKKyAgICAgICAgZm9yIGl0ZW0gaW4gc29ydGVkX2l0ZW1zOgorICAgICAgICAgICAga2V5ICs9IGl0ZW0KKyAgICBpZiB0eXBlZDoKKyAgICAgICAga2V5ICs9IHR1cGxlKHR5cGUodikgZm9yIHYgaW4gYXJncykKKyAgICAgICAgaWYga3dkczoKKyAgICAgICAgICAgIGtleSArPSB0dXBsZSh0eXBlKHYpIGZvciBrLCB2IGluIHNvcnRlZF9pdGVtcykKKyAgICBlbGlmIGxlbihrZXkpID09IDEgYW5kIHR5cGUoa2V5WzBdKSBpbiBmYXN0dHlwZXM6CisgICAgICAgIHJldHVybiBrZXlbMF0KKyAgICByZXR1cm4gX0hhc2hlZFNlcShrZXkpCisKK2RlZiBscnVfY2FjaGUobWF4c2l6ZT0xMjgsIHR5cGVkPUZhbHNlKToKICAgICAiIiJMZWFzdC1yZWNlbnRseS11c2VkIGNhY2hlIGRlY29yYXRvci4KIAogICAgIElmICptYXhzaXplKiBpcyBzZXQgdG8gTm9uZSwgdGhlIExSVSBmZWF0dXJlcyBhcmUgZGlzYWJsZWQgYW5kIHRoZSBjYWNoZQogICAgIGNhbiBncm93IHdpdGhvdXQgYm91bmQuCiAKKyAgICBJZiAqdHlwZWQqIGlzIFRydWUsIGFyZ3VtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMgd2lsbCBiZSBjYWNoZWQgc2VwYXJhdGVseS4KKyAgICBGb3IgZXhhbXBsZSwgZigzLjApIGFuZCBmKDMpIHdpbGwgYmUgdHJlYXRlZCBhcyBkaXN0aW5jdCBjYWxscyB3aXRoCisgICAgZGlzdGluY3QgcmVzdWx0cy4KKwogICAgIEFyZ3VtZW50cyB0byB0aGUgY2FjaGVkIGZ1bmN0aW9uIG11c3QgYmUgaGFzaGFibGUuCiAKLSAgICBWaWV3IHRoZSBjYWNoZSBzdGF0aXN0aWNzIG5hbWVkIHR1cGxlIChoaXRzLCBtaXNzZXMsIG1heHNpemUsIGN1cnJzaXplKSB3aXRoCi0gICAgZi5jYWNoZV9pbmZvKCkuICBDbGVhciB0aGUgY2FjaGUgYW5kIHN0YXRpc3RpY3Mgd2l0aCBmLmNhY2hlX2NsZWFyKCkuCisgICAgVmlldyB0aGUgY2FjaGUgc3RhdGlzdGljcyBuYW1lZCB0dXBsZSAoaGl0cywgbWlzc2VzLCBtYXhzaXplLCBjdXJyc2l6ZSkKKyAgICB3aXRoIGYuY2FjaGVfaW5mbygpLiAgQ2xlYXIgdGhlIGNhY2hlIGFuZCBzdGF0aXN0aWNzIHdpdGggZi5jYWNoZV9jbGVhcigpLgogICAgIEFjY2VzcyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiB3aXRoIGYuX193cmFwcGVkX18uCiAKICAgICBTZWU6ICBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0NhY2hlX2FsZ29yaXRobXMjTGVhc3RfUmVjZW50bHlfVXNlZAogCiAgICAgIiIiCisKICAgICAjIFVzZXJzIHNob3VsZCBvbmx5IGFjY2VzcyB0aGUgbHJ1X2NhY2hlIHRocm91Z2ggaXRzIHB1YmxpYyBBUEk6CiAgICAgIyAgICAgICBjYWNoZV9pbmZvLCBjYWNoZV9jbGVhciwgYW5kIGYuX193cmFwcGVkX18KICAgICAjIFRoZSBpbnRlcm5hbHMgb2YgdGhlIGxydV9jYWNoZSBhcmUgZW5jYXBzdWxhdGVkIGZvciB0aHJlYWQgc2FmZXR5IGFuZAogICAgICMgdG8gYWxsb3cgdGhlIGltcGxlbWVudGF0aW9uIHRvIGNoYW5nZSAoaW5jbHVkaW5nIGEgcG9zc2libGUgQyB2ZXJzaW9uKS4KIAotICAgIGRlZiBkZWNvcmF0aW5nX2Z1bmN0aW9uKHVzZXJfZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgdHVwbGU9dHVwbGUsIHNvcnRlZD1zb3J0ZWQsIGxlbj1sZW4sIEtleUVycm9yPUtleUVycm9yKToKKyAgICAjIENvbnN0YW50cyBzaGFyZWQgYnkgYWxsIGxydSBjYWNoZSBpbnN0YW5jZXM6CisgICAgc2VudGluZWwgPSBvYmplY3QoKSAgICAgICAgICAjIHVuaXF1ZSBvYmplY3QgdXNlZCB0byBzaWduYWwgY2FjaGUgbWlzc2VzCisgICAgbWFrZV9rZXkgPSBfbWFrZV9rZXkgICAgICAgICAjIGJ1aWxkIGEga2V5IGZyb20gdGhlIGZ1bmN0aW9uIGFyZ3VtZW50cworICAgIFBSRVYsIE5FWFQsIEtFWSwgUkVTVUxUID0gMCwgMSwgMiwgMyAgICMgbmFtZXMgZm9yIHRoZSBsaW5rIGZpZWxkcwogCi0gICAgICAgIGhpdHMgPSBtaXNzZXMgPSAwCi0gICAgICAgIGt3ZF9tYXJrID0gKG9iamVjdCgpLCkgICAgICAgICAgIyBzZXBhcmF0ZXMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCi0gICAgICAgIGxvY2sgPSBMb2NrKCkgICAgICAgICAgICAgICAgICAgIyBuZWVkZWQgYmVjYXVzZSBPcmRlcmVkRGljdCBpc24ndCB0aHJlYWRzYWZlCisgICAgZGVmIGRlY29yYXRpbmdfZnVuY3Rpb24odXNlcl9mdW5jdGlvbik6CiAKLSAgICAgICAgaWYgbWF4c2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgY2FjaGUgPSBkaWN0KCkgICAgICAgICAgICAgICMgc2ltcGxlIGNhY2hlIHdpdGhvdXQgb3JkZXJpbmcgb3Igc2l6ZSBsaW1pdAorICAgICAgICBjYWNoZSA9IHt9CisgICAgICAgIGhpdHMgPSBtaXNzZXMgPSBjdXJyc2l6ZSA9IDAKKyAgICAgICAgZnVsbCA9IEZhbHNlCisgICAgICAgIGNhY2hlX2dldCA9IGNhY2hlLmdldCAgICAjIGJvdW5kIG1ldGhvZCB0byBsb29rdXAgYSBrZXkgb3IgcmV0dXJuIE5vbmUKKyAgICAgICAgbG9jayA9IExvY2soKSAgICAgICAgICAgICMgYmVjYXVzZSBsaW5rZWRsaXN0IHVwZGF0ZXMgYXJlbid0IHRocmVhZHNhZmUKKyAgICAgICAgcm9vdCA9IFtdICAgICAgICAgICAgICAgICMgcm9vdCBvZiB0aGUgY2lyY3VsYXIgZG91Ymx5IGxpbmtlZCBsaXN0CisgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0gICAgICMgaW5pdGlhbGl6ZSBieSBwb2ludGluZyB0byBzZWxmCiAKLSAgICAgICAgICAgIEB3cmFwcyh1c2VyX2Z1bmN0aW9uKQorICAgICAgICBpZiBtYXhzaXplID09IDA6CisKICAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcwotICAgICAgICAgICAgICAgIGtleSA9IGFyZ3MKLSAgICAgICAgICAgICAgICBpZiBrd2RzOgotICAgICAgICAgICAgICAgICAgICBrZXkgKz0ga3dkX21hcmsgKyB0dXBsZShzb3J0ZWQoa3dkcy5pdGVtcygpKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhY2hlW2tleV0KKyAgICAgICAgICAgICAgICAjIG5vIGNhY2hpbmcsIGp1c3QgYSBzdGF0aXN0aWNzIHVwZGF0ZSBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbAorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG1pc3NlcworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVzZXJfZnVuY3Rpb24oKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICAgICAgICBtaXNzZXMgKz0gMQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgICAgICBlbGlmIG1heHNpemUgaXMgTm9uZToKKworICAgICAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgIyBzaW1wbGUgY2FjaGluZyB3aXRob3V0IG9yZGVyaW5nIG9yIHNpemUgbGltaXQKKyAgICAgICAgICAgICAgICBub25sb2NhbCBoaXRzLCBtaXNzZXMsIGN1cnJzaXplCisgICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY2FjaGVfZ2V0KGtleSwgc2VudGluZWwpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0IGlzIG5vdCBzZW50aW5lbDoKICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICAgICAgY2FjaGVba2V5XSA9IHJlc3VsdAogICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCisgICAgICAgICAgICAgICAgY3VycnNpemUgKz0gMQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNhY2hlID0gT3JkZXJlZERpY3QoKSAgICAgICAgICAgIyBvcmRlcmVkIGxlYXN0IHJlY2VudCB0byBtb3N0IHJlY2VudAotICAgICAgICAgICAgY2FjaGVfcG9waXRlbSA9IGNhY2hlLnBvcGl0ZW0KLSAgICAgICAgICAgIGNhY2hlX3JlbmV3ID0gY2FjaGUubW92ZV90b19lbmQKIAotICAgICAgICAgICAgQHdyYXBzKHVzZXJfZnVuY3Rpb24pCisgICAgICAgIGVsc2U6CisKICAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcwotICAgICAgICAgICAgICAgIGtleSA9IGFyZ3MKLSAgICAgICAgICAgICAgICBpZiBrd2RzOgotICAgICAgICAgICAgICAgICAgICBrZXkgKz0ga3dkX21hcmsgKyB0dXBsZShzb3J0ZWQoa3dkcy5pdGVtcygpKSkKKyAgICAgICAgICAgICAgICAjIHNpemUgbGltaXRlZCBjYWNoaW5nIHRoYXQgdHJhY2tzIGFjY2Vzc2VzIGJ5IHJlY2VuY3kKKyAgICAgICAgICAgICAgICBub25sb2NhbCByb290LCBoaXRzLCBtaXNzZXMsIGN1cnJzaXplLCBmdWxsCisgICAgICAgICAgICAgICAga2V5ID0gbWFrZV9rZXkoYXJncywga3dkcywgdHlwZWQpCiAgICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZVtrZXldCi0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9yZW5ldyhrZXkpICAgICMgcmVjb3JkIHJlY2VudCB1c2Ugb2YgdGhpcyBrZXkKKyAgICAgICAgICAgICAgICAgICAgbGluayA9IGNhY2hlX2dldChrZXkpCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmsgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIG1vdmUgdGhlIGxpbmsgdG8gdGhlIGZyb250IG9mIHRoZSBjaXJjdWxhciBxdWV1ZQorICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2LCBsaW5rX25leHQsIGtleSwgcmVzdWx0ID0gbGluaworICAgICAgICAgICAgICAgICAgICAgICAgbGlua19wcmV2W05FWFRdID0gbGlua19uZXh0CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rX25leHRbUFJFVl0gPSBsaW5rX3ByZXYKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgPSByb290W1BSRVZdCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0W05FWFRdID0gcm9vdFtQUkVWXSA9IGxpbmsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtbUFJFVl0gPSBsYXN0CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5rW05FWFRdID0gcm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgaGl0cyArPSAxCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICByZXN1bHQgPSB1c2VyX2Z1bmN0aW9uKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICAgICAgd2l0aCBsb2NrOgotICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gcmVzdWx0ICAgICAjIHJlY29yZCByZWNlbnQgdXNlIG9mIHRoaXMga2V5CisgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBjYWNoZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZ2V0dGluZyBoZXJlIG1lYW5zIHRoYXQgdGhpcyBzYW1lIGtleSB3YXMgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGNhY2hlIHdoaWxlIHRoZSBsb2NrIHdhcyByZWxlYXNlZC4gIHNpbmNlIHRoZSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICAjIHVwZGF0ZSBpcyBhbHJlYWR5IGRvbmUsIHdlIG5lZWQgb25seSByZXR1cm4gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbXB1dGVkIHJlc3VsdCBhbmQgdXBkYXRlIHRoZSBjb3VudCBvZiBtaXNzZXMuCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZnVsbDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdXNlIHJvb3QgdG8gc3RvcmUgdGhlIG5ldyBrZXkgYW5kIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFtLRVldID0ga2V5CisgICAgICAgICAgICAgICAgICAgICAgICByb290W1JFU1VMVF0gPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlW2tleV0gPSByb290CisgICAgICAgICAgICAgICAgICAgICAgICAjIGVtcHR5IHRoZSBvbGRlc3QgbGluayBhbmQgbWFrZSBpdCB0aGUgbmV3IHJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb3QgPSByb290W05FWFRdCisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgY2FjaGVbcm9vdFtLRVldXQorICAgICAgICAgICAgICAgICAgICAgICAgcm9vdFtLRVldID0gcm9vdFtSRVNVTFRdID0gTm9uZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBwdXQgcmVzdWx0IGluIGEgbmV3IGxpbmsgYXQgdGhlIGZyb250IG9mIHRoZSBxdWV1ZQorICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCA9IHJvb3RbUFJFVl0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsgPSBbbGFzdCwgcm9vdCwga2V5LCByZXN1bHRdCisgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZVtrZXldID0gbGFzdFtORVhUXSA9IHJvb3RbUFJFVl0gPSBsaW5rCisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyc2l6ZSArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsID0gKGN1cnJzaXplID09IG1heHNpemUpCiAgICAgICAgICAgICAgICAgICAgIG1pc3NlcyArPSAxCi0gICAgICAgICAgICAgICAgICAgIGlmIGxlbihjYWNoZSkgPiBtYXhzaXplOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfcG9waXRlbSgwKSAgICAjIHB1cmdlIGxlYXN0IHJlY2VudGx5IHVzZWQgY2FjaGUgZW50cnkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICAgICAgZGVmIGNhY2hlX2luZm8oKToKICAgICAgICAgICAgICIiIlJlcG9ydCBjYWNoZSBzdGF0aXN0aWNzIiIiCiAgICAgICAgICAgICB3aXRoIGxvY2s6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIF9DYWNoZUluZm8oaGl0cywgbWlzc2VzLCBtYXhzaXplLCBsZW4oY2FjaGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBfQ2FjaGVJbmZvKGhpdHMsIG1pc3NlcywgbWF4c2l6ZSwgY3VycnNpemUpCiAKICAgICAgICAgZGVmIGNhY2hlX2NsZWFyKCk6CiAgICAgICAgICAgICAiIiJDbGVhciB0aGUgY2FjaGUgYW5kIGNhY2hlIHN0YXRpc3RpY3MiIiIKLSAgICAgICAgICAgIG5vbmxvY2FsIGhpdHMsIG1pc3NlcworICAgICAgICAgICAgbm9ubG9jYWwgaGl0cywgbWlzc2VzLCBjdXJyc2l6ZSwgZnVsbAogICAgICAgICAgICAgd2l0aCBsb2NrOgogICAgICAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLSAgICAgICAgICAgICAgICBoaXRzID0gbWlzc2VzID0gMAorICAgICAgICAgICAgICAgIHJvb3RbOl0gPSBbcm9vdCwgcm9vdCwgTm9uZSwgTm9uZV0KKyAgICAgICAgICAgICAgICBoaXRzID0gbWlzc2VzID0gY3VycnNpemUgPSAwCisgICAgICAgICAgICAgICAgZnVsbCA9IEZhbHNlCiAKICAgICAgICAgd3JhcHBlci5jYWNoZV9pbmZvID0gY2FjaGVfaW5mbwogICAgICAgICB3cmFwcGVyLmNhY2hlX2NsZWFyID0gY2FjaGVfY2xlYXIKLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIHVzZXJfZnVuY3Rpb24pCiAKICAgICByZXR1cm4gZGVjb3JhdGluZ19mdW5jdGlvbgpkaWZmIC0tZ2l0IGEvTGliL2dldG9wdC5weSBiL0xpYi9nZXRvcHQucHkKaW5kZXggOTgwODYxZC4uM2Q2ZWNiZCAxMDA2NDQKLS0tIGEvTGliL2dldG9wdC5weQorKysgYi9MaWIvZ2V0b3B0LnB5CkBAIC0xOSw3ICsxOSw3IEBACiAjIEdlcnJpdCBIb2xsIDxnZXJyaXRAbmwubGludXgub3JnPiBtb3ZlZCB0aGUgc3RyaW5nLWJhc2VkIGV4Y2VwdGlvbnMKICMgdG8gY2xhc3MtYmFzZWQgZXhjZXB0aW9ucy4KICMKLSMgUGV0ZXIgw4PChXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgorIyBQZXRlciDDhXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4gYWRkZWQgZ251X2dldG9wdCgpLgogIwogIyBUT0RPIGZvciBnbnVfZ2V0b3B0KCk6CiAjCkBAIC0zNCw2ICszNCwxMSBAQAogX19hbGxfXyA9IFsiR2V0b3B0RXJyb3IiLCJlcnJvciIsImdldG9wdCIsImdudV9nZXRvcHQiXQogCiBpbXBvcnQgb3MKK3RyeToKKyAgICBmcm9tIGdldHRleHQgaW1wb3J0IGdldHRleHQgYXMgXworZXhjZXB0IEltcG9ydEVycm9yOgorICAgICMgQm9vdHN0cmFwcGluZyBQeXRob246IGdldHRleHQncyBkZXBlbmRlbmNpZXMgbm90IGJ1aWx0IHlldAorICAgIGRlZiBfKHMpOiByZXR1cm4gcwogCiBjbGFzcyBHZXRvcHRFcnJvcihFeGNlcHRpb24pOgogICAgIG9wdCA9ICcnCkBAIC0xNTMsMTAgKzE1OCwxMCBAQAogICAgIGlmIGhhc19hcmc6CiAgICAgICAgIGlmIG9wdGFyZyBpcyBOb25lOgogICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JyAlIG9wdCwgb3B0KQorICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKF8oJ29wdGlvbiAtLSVzIHJlcXVpcmVzIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICAgICAgICAgIG9wdGFyZywgYXJncyA9IGFyZ3NbMF0sIGFyZ3NbMTpdCiAgICAgZWxpZiBvcHRhcmcgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBtdXN0IG5vdCBoYXZlIGFuIGFyZ3VtZW50JyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBtdXN0IG5vdCBoYXZlIGFuIGFyZ3VtZW50JykgJSBvcHQsIG9wdCkKICAgICBvcHRzLmFwcGVuZCgoJy0tJyArIG9wdCwgb3B0YXJnIG9yICcnKSkKICAgICByZXR1cm4gb3B0cywgYXJncwogCkBAIC0xNjYsNyArMTcxLDcgQEAKIGRlZiBsb25nX2hhc19hcmdzKG9wdCwgbG9uZ29wdHMpOgogICAgIHBvc3NpYmlsaXRpZXMgPSBbbyBmb3IgbyBpbiBsb25nb3B0cyBpZiBvLnN0YXJ0c3dpdGgob3B0KV0KICAgICBpZiBub3QgcG9zc2liaWxpdGllczoKLSAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoJ29wdGlvbiAtLSVzIG5vdCByZWNvZ25pemVkJyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBub3QgcmVjb2duaXplZCcpICUgb3B0LCBvcHQpCiAgICAgIyBJcyB0aGVyZSBhbiBleGFjdCBtYXRjaD8KICAgICBpZiBvcHQgaW4gcG9zc2liaWxpdGllczoKICAgICAgICAgcmV0dXJuIEZhbHNlLCBvcHQKQEAgLTE3Niw3ICsxODEsNyBAQAogICAgIGlmIGxlbihwb3NzaWJpbGl0aWVzKSA+IDE6CiAgICAgICAgICMgWFhYIHNpbmNlIHBvc3NpYmlsaXRpZXMgY29udGFpbnMgYWxsIHZhbGlkIGNvbnRpbnVhdGlvbnMsIG1pZ2h0IGJlCiAgICAgICAgICMgbmljZSB0byB3b3JrIHRoZW0gaW50byB0aGUgZXJyb3IgbXNnCi0gICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLS0lcyBub3QgYSB1bmlxdWUgcHJlZml4JyAlIG9wdCwgb3B0KQorICAgICAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLS0lcyBub3QgYSB1bmlxdWUgcHJlZml4JykgJSBvcHQsIG9wdCkKICAgICBhc3NlcnQgbGVuKHBvc3NpYmlsaXRpZXMpID09IDEKICAgICB1bmlxdWVfbWF0Y2ggPSBwb3NzaWJpbGl0aWVzWzBdCiAgICAgaGFzX2FyZyA9IHVuaXF1ZV9tYXRjaC5lbmRzd2l0aCgnPScpCkBAIC0xOTAsNyArMTk1LDcgQEAKICAgICAgICAgaWYgc2hvcnRfaGFzX2FyZyhvcHQsIHNob3J0b3B0cyk6CiAgICAgICAgICAgICBpZiBvcHRzdHJpbmcgPT0gJyc6CiAgICAgICAgICAgICAgICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEdldG9wdEVycm9yKCdvcHRpb24gLSVzIHJlcXVpcmVzIGFyZ3VtZW50JyAlIG9wdCwKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgR2V0b3B0RXJyb3IoXygnb3B0aW9uIC0lcyByZXF1aXJlcyBhcmd1bWVudCcpICUgb3B0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHQpCiAgICAgICAgICAgICAgICAgb3B0c3RyaW5nLCBhcmdzID0gYXJnc1swXSwgYXJnc1sxOl0KICAgICAgICAgICAgIG9wdGFyZywgb3B0c3RyaW5nID0gb3B0c3RyaW5nLCAnJwpAQCAtMjAzLDcgKzIwOCw3IEBACiAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNob3J0b3B0cykpOgogICAgICAgICBpZiBvcHQgPT0gc2hvcnRvcHRzW2ldICE9ICc6JzoKICAgICAgICAgICAgIHJldHVybiBzaG9ydG9wdHMuc3RhcnRzd2l0aCgnOicsIGkrMSkKLSAgICByYWlzZSBHZXRvcHRFcnJvcignb3B0aW9uIC0lcyBub3QgcmVjb2duaXplZCcgJSBvcHQsIG9wdCkKKyAgICByYWlzZSBHZXRvcHRFcnJvcihfKCdvcHRpb24gLSVzIG5vdCByZWNvZ25pemVkJykgJSBvcHQsIG9wdCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgc3lzCmRpZmYgLS1naXQgYS9MaWIvZ2V0cGFzcy5weSBiL0xpYi9nZXRwYXNzLnB5CmluZGV4IGRjMDJiZDEuLjAwNDQ3NDIgMTAwNjQ0Ci0tLSBhL0xpYi9nZXRwYXNzLnB5CisrKyBiL0xpYi9nZXRwYXNzLnB5CkBAIC03Miw3ICs3Miw3IEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0Y3NldGF0dHJfZmxhZ3MsIG9sZCkKICAgICAgICAgICAgICAgICBzdHJlYW0uZmx1c2goKSAgIyBpc3N1ZTcyMDgKLSAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3IgYXMgZToKKyAgICAgICAgZXhjZXB0IHRlcm1pb3MuZXJyb3I6CiAgICAgICAgICAgICBpZiBwYXNzd2QgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgIyBfcmF3X2lucHV0IHN1Y2NlZWRlZC4gIFRoZSBmaW5hbCB0Y3NldGF0dHIgZmFpbGVkLiAgUmVyYWlzZQogICAgICAgICAgICAgICAgICMgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSB0ZXJtaW5hbCBpbiBhbiB1bmtub3duIHN0YXRlLgpAQCAtMTQ1LDggKzE0NSw2IEBACiAKICAgICAiIiIKIAotICAgIGltcG9ydCBvcwotCiAgICAgZm9yIG5hbWUgaW4gKCdMT0dOQU1FJywgJ1VTRVInLCAnTE5BTUUnLCAnVVNFUk5BTUUnKToKICAgICAgICAgdXNlciA9IG9zLmVudmlyb24uZ2V0KG5hbWUpCiAgICAgICAgIGlmIHVzZXI6CmRpZmYgLS1naXQgYS9MaWIvZ2V0dGV4dC5weSBiL0xpYi9nZXR0ZXh0LnB5CmluZGV4IDI1NmUzMzEuLmU0M2YwNDQgMTAwNjQ0Ci0tLSBhL0xpYi9nZXR0ZXh0LnB5CisrKyBiL0xpYi9nZXR0ZXh0LnB5CkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgICAgICdkZ2V0dGV4dCcsICdkbmdldHRleHQnLCAnZ2V0dGV4dCcsICduZ2V0dGV4dCcsCiAgICAgICAgICAgIF0KIAotX2RlZmF1bHRfbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICdzaGFyZScsICdsb2NhbGUnKQorX2RlZmF1bHRfbG9jYWxlZGlyID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ3NoYXJlJywgJ2xvY2FsZScpCiAKIAogZGVmIGMycHkocGx1cmFsKToKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggZTFiNDNhNS4uZDhhYmZmZCAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTE2LDE3ICsxNiw0OSBAQAogCiBSRUFELCBXUklURSA9IDEsIDIKIAotZGVmIFUzMihpKToKLSAgICAiIiJSZXR1cm4gaSBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLCBhc3N1bWluZyBpdCBmaXRzIGluIDMyIGJpdHMuCi0gICAgSWYgaXQncyA+PSAyR0Igd2hlbiB2aWV3ZWQgYXMgYSAzMi1iaXQgdW5zaWduZWQgaW50LCByZXR1cm4gYSBsb25nLgotICAgICIiIgotICAgIGlmIGkgPCAwOgotICAgICAgICBpICs9IDEgPDwgMzIKLSAgICByZXR1cm4gaQorZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgY29tcHJlc3NsZXZlbD05LAorICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CisgICAgIiIiT3BlbiBhIGd6aXAtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLWRlZiBMT1dVMzIoaSk6Ci0gICAgIiIiUmV0dXJuIHRoZSBsb3ctb3JkZXIgMzIgYml0cywgYXMgYSBub24tbmVnYXRpdmUgaW50IiIiCi0gICAgcmV0dXJuIGkgJiAweEZGRkZGRkZGCisgICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzIG9iamVjdCksIG9yCisgICAgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiwgInciLCAid2IiLCAiYSIgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsCisgICAgb3IgInJ0IiwgInd0IiBvciAiYXQiIGZvciB0ZXh0IG1vZGUuIFRoZSBkZWZhdWx0IG1vZGUgaXMgInJiIiwgYW5kIHRoZQorICAgIGRlZmF1bHQgY29tcHJlc3NsZXZlbCBpcyA5LgorCisgICAgRm9yIGJpbmFyeSBtb2RlLCB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gdGhlIEd6aXBGaWxlIGNvbnN0cnVjdG9yOgorICAgIEd6aXBGaWxlKGZpbGVuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsKS4gSW4gdGhpcyBjYXNlLCB0aGUgZW5jb2RpbmcsIGVycm9ycworICAgIGFuZCBuZXdsaW5lIGFyZ3VtZW50cyBtdXN0IG5vdCBiZSBwcm92aWRlZC4KKworICAgIEZvciB0ZXh0IG1vZGUsIGEgR3ppcEZpbGUgb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCB3cmFwcGVkIGluIGFuCisgICAgaW8uVGV4dElPV3JhcHBlciBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZW5jb2RpbmcsIGVycm9yIGhhbmRsaW5nCisgICAgYmVoYXZpb3IsIGFuZCBsaW5lIGVuZGluZyhzKS4KKworICAgICIiIgorICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICBpZiAiYiIgaW4gbW9kZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKKyAgICBlbHNlOgorICAgICAgICBpZiBlbmNvZGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlbmNvZGluZycgbm90IHN1cHBvcnRlZCBpbiBiaW5hcnkgbW9kZSIpCisgICAgICAgIGlmIGVycm9ycyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICdlcnJvcnMnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBuZXdsaW5lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQXJndW1lbnQgJ25ld2xpbmUnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorCisgICAgZ3pfbW9kZSA9IG1vZGUucmVwbGFjZSgidCIsICIiKQorICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIGJpbmFyeV9maWxlID0gR3ppcEZpbGUoZmlsZW5hbWUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwpCisgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKE5vbmUsIGd6X21vZGUsIGNvbXByZXNzbGV2ZWwsIGZpbGVuYW1lKQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciBvciBieXRlcyBvYmplY3QsIG9yIGEgZmlsZSIpCisKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgcmV0dXJuIGlvLlRleHRJT1dyYXBwZXIoYmluYXJ5X2ZpbGUsIGVuY29kaW5nLCBlcnJvcnMsIG5ld2xpbmUpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGJpbmFyeV9maWxlCiAKIGRlZiB3cml0ZTMydShvdXRwdXQsIHZhbHVlKToKICAgICAjIFRoZSBMIGZvcm1hdCB3cml0ZXMgdGhlIGJpdCBwYXR0ZXJuIGNvcnJlY3RseSB3aGV0aGVyIHNpZ25lZApAQCAtMzYsMTUgKzY4LDYgQEAKIGRlZiByZWFkMzIoaW5wdXQpOgogICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCI8SSIsIGlucHV0LnJlYWQoNCkpWzBdCiAKLWRlZiBvcGVuKGZpbGVuYW1lLCBtb2RlPSJyYiIsIGNvbXByZXNzbGV2ZWw9OSk6Ci0gICAgIiIiU2hvcnRoYW5kIGZvciBHemlwRmlsZShmaWxlbmFtZSwgbW9kZSwgY29tcHJlc3NsZXZlbCkuCi0KLSAgICBUaGUgZmlsZW5hbWUgYXJndW1lbnQgaXMgcmVxdWlyZWQ7IG1vZGUgZGVmYXVsdHMgdG8gJ3JiJwotICAgIGFuZCBjb21wcmVzc2xldmVsIGRlZmF1bHRzIHRvIDkuCi0KLSAgICAiIiIKLSAgICByZXR1cm4gR3ppcEZpbGUoZmlsZW5hbWUsIG1vZGUsIGNvbXByZXNzbGV2ZWwpCi0KIGNsYXNzIF9QYWRkZWRGaWxlOgogICAgICIiIk1pbmltYWwgcmVhZC1vbmx5IGZpbGUgb2JqZWN0IHRoYXQgcHJlcGVuZHMgYSBzdHJpbmcgdG8gdGhlIGNvbnRlbnRzCiAgICAgb2YgYW4gYWN0dWFsIGZpbGUuIFNob3VsZG4ndCBiZSB1c2VkIG91dHNpZGUgb2YgZ3ppcC5weSwgYXMgaXQgbGFja3MKQEAgLTEwNiw3ICsxMjksNyBAQAogICAgIHRoZSBleGNlcHRpb24gb2YgdGhlIHJlYWRpbnRvKCkgYW5kIHRydW5jYXRlKCkgbWV0aG9kcy4KIAogICAgIFRoaXMgY2xhc3Mgb25seSBzdXBwb3J0cyBvcGVuaW5nIGZpbGVzIGluIGJpbmFyeSBtb2RlLiBJZiB5b3UgbmVlZCB0byBvcGVuIGEKLSAgICBjb21wcmVzc2VkIGZpbGUgaW4gdGV4dCBtb2RlLCB3cmFwIHlvdXIgR3ppcEZpbGUgd2l0aCBhbiBpby5UZXh0SU9XcmFwcGVyLgorICAgIGNvbXByZXNzZWQgZmlsZSBpbiB0ZXh0IG1vZGUsIHVzZSB0aGUgZ3ppcC5vcGVuKCkgZnVuY3Rpb24uCiAKICAgICAiIiIKIApAQCAtMTUzLDcgKzE3Niw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIG1vZGUgYW5kICgndCcgaW4gbW9kZSBvciAnVScgaW4gbW9kZSk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJNb2RlICIgKyBtb2RlICsgIiBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogICAgICAgICBpZiBtb2RlIGFuZCAnYicgbm90IGluIG1vZGU6CiAgICAgICAgICAgICBtb2RlICs9ICdiJwogICAgICAgICBpZiBmaWxlb2JqIGlzIE5vbmU6CkBAIC0xNjMsMTAgKzE4Niw5IEBACiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICcnCiAgICAgICAgIGlmIG1vZGUgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIGhhc2F0dHIoZmlsZW9iaiwgJ21vZGUnKTogbW9kZSA9IGZpbGVvYmoubW9kZQotICAgICAgICAgICAgZWxzZTogbW9kZSA9ICdyYicKKyAgICAgICAgICAgIG1vZGUgPSBnZXRhdHRyKGZpbGVvYmosICdtb2RlJywgJ3JiJykKIAotICAgICAgICBpZiBtb2RlWzA6MV0gPT0gJ3InOgorICAgICAgICBpZiBtb2RlLnN0YXJ0c3dpdGgoJ3InKToKICAgICAgICAgICAgIHNlbGYubW9kZSA9IFJFQUQKICAgICAgICAgICAgICMgU2V0IGZsYWcgaW5kaWNhdGluZyBzdGFydCBvZiBhIG5ldyBtZW1iZXIKICAgICAgICAgICAgIHNlbGYuX25ld19tZW1iZXIgPSBUcnVlCkBAIC0xODEsNyArMjAzLDcgQEAKICAgICAgICAgICAgIHNlbGYubWluX3JlYWRzaXplID0gMTAwCiAgICAgICAgICAgICBmaWxlb2JqID0gX1BhZGRlZEZpbGUoZmlsZW9iaikKIAotICAgICAgICBlbGlmIG1vZGVbMDoxXSA9PSAndycgb3IgbW9kZVswOjFdID09ICdhJzoKKyAgICAgICAgZWxpZiBtb2RlLnN0YXJ0c3dpdGgoKCd3JywgJ2EnKSk6CiAgICAgICAgICAgICBzZWxmLm1vZGUgPSBXUklURQogICAgICAgICAgICAgc2VsZi5faW5pdF93cml0ZShmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKGNvbXByZXNzbGV2ZWwsCkBAIC0xOTAsNyArMjEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWIuREVGX01FTV9MRVZFTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJNb2RlICIgKyBtb2RlICsgIiBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogeyFyfSIuZm9ybWF0KG1vZGUpKQogCiAgICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKICAgICAgICAgc2VsZi5vZmZzZXQgPSAwCkBAIC0zNTMsNiArMzc1LDMxIEBACiAgICAgICAgIHNlbGYub2Zmc2V0ICs9IHNpemUKICAgICAgICAgcmV0dXJuIGNodW5rCiAKKyAgICBkZWYgcmVhZDEoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIGlmIHNlbGYubW9kZSAhPSBSRUFEOgorICAgICAgICAgICAgaW1wb3J0IGVycm5vCisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKGVycm5vLkVCQURGLCAicmVhZDEoKSBvbiB3cml0ZS1vbmx5IEd6aXBGaWxlIG9iamVjdCIpCisKKyAgICAgICAgaWYgc2VsZi5leHRyYXNpemUgPD0gMCBhbmQgc2VsZi5maWxlb2JqIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBGb3IgY2VydGFpbiBpbnB1dCBkYXRhLCBhIHNpbmdsZSBjYWxsIHRvIF9yZWFkKCkgbWF5IG5vdCByZXR1cm4KKyAgICAgICAgICAgICMgYW55IGRhdGEuIEluIHRoaXMgY2FzZSwgcmV0cnkgdW50aWwgd2UgZ2V0IHNvbWUgZGF0YSBvciByZWFjaCBFT0YuCisgICAgICAgICAgICB3aGlsZSBzZWxmLmV4dHJhc2l6ZSA8PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWQoKQorICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIHNpemUgPCAwIG9yIHNpemUgPiBzZWxmLmV4dHJhc2l6ZToKKyAgICAgICAgICAgIHNpemUgPSBzZWxmLmV4dHJhc2l6ZQorCisgICAgICAgIG9mZnNldCA9IHNlbGYub2Zmc2V0IC0gc2VsZi5leHRyYXN0YXJ0CisgICAgICAgIGNodW5rID0gc2VsZi5leHRyYWJ1ZltvZmZzZXQ6IG9mZnNldCArIHNpemVdCisgICAgICAgIHNlbGYuZXh0cmFzaXplIC09IHNpemUKKyAgICAgICAgc2VsZi5vZmZzZXQgKz0gc2l6ZQorICAgICAgICByZXR1cm4gY2h1bmsKKwogICAgIGRlZiBwZWVrKHNlbGYsIG4pOgogICAgICAgICBpZiBzZWxmLm1vZGUgIT0gUkVBRDoKICAgICAgICAgICAgIGltcG9ydCBlcnJubwpAQCAtMzY2LDggKzQxMywxMCBAQAogICAgICAgICAgICAgaWYgc2VsZi5maWxlb2JqIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGInJwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgMTAyNCBpcyB0aGUgc2FtZSBidWZmZXJpbmcgaGV1cmlzdGljIHVzZWQgaW4gcmVhZCgpCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpCisgICAgICAgICAgICAgICAgIyBFbnN1cmUgdGhhdCB3ZSBkb24ndCByZXR1cm4gYiIiIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZCBFT0YuCisgICAgICAgICAgICAgICAgd2hpbGUgc2VsZi5leHRyYXNpemUgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIyAxMDI0IGlzIHRoZSBzYW1lIGJ1ZmZlcmluZyBoZXVyaXN0aWMgdXNlZCBpbiByZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhZChtYXgobiwgMTAyNCkpCiAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBvZmZzZXQgPSBzZWxmLm9mZnNldCAtIHNlbGYuZXh0cmFzdGFydApkaWZmIC0tZ2l0IGEvTGliL2htYWMucHkgYi9MaWIvaG1hYy5weQppbmRleCA5NTZmYzY1Li40Mjk3YTcxIDEwMDY0NAotLS0gYS9MaWIvaG1hYy5weQorKysgYi9MaWIvaG1hYy5weQpAQCAtNCw2ICs0LDcgQEAKICIiIgogCiBpbXBvcnQgd2FybmluZ3MgYXMgX3dhcm5pbmdzCitmcm9tIG9wZXJhdG9yIGltcG9ydCBfY29tcGFyZV9kaWdlc3QgYXMgY29tcGFyZV9kaWdlc3QKIAogdHJhbnNfNUMgPSBieXRlcygoeCBeIDB4NUMpIGZvciB4IGluIHJhbmdlKDI1NikpCiB0cmFuc18zNiA9IGJ5dGVzKCh4IF4gMHgzNikgZm9yIHggaW4gcmFuZ2UoMjU2KSkKQEAgLTEzLDYgKzE0LDcgQEAKIGRpZ2VzdF9zaXplID0gTm9uZQogCiAKKwogY2xhc3MgSE1BQzoKICAgICAiIiJSRkMgMjEwNCBITUFDIGNsYXNzLiAgQWxzbyBjb21wbGllcyB3aXRoIFJGQyA0MjMxLgogCkBAIC0zMyw3ICszNSw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgYnl0ZXMpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3RlZCBieXRlcywgYnV0IGdvdCAlciIgJSB0eXBlKGtleSkuX19uYW1lX18pCisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleTogZXhwZWN0ZWQgYnl0ZXMsIGJ1dCBnb3QgJXIiICUgdHlwZShrZXkpLl9fbmFtZV9fKQogCiAgICAgICAgIGlmIGRpZ2VzdG1vZCBpcyBOb25lOgogICAgICAgICAgICAgaW1wb3J0IGhhc2hsaWIKZGlmZiAtLWdpdCBhL0xpYi9odG1sL2VudGl0aWVzLnB5IGIvTGliL2h0bWwvZW50aXRpZXMucHkKaW5kZXggZTJiN2JmMS4uZTg5MWFkNiAxMDA2NDQKLS0tIGEvTGliL2h0bWwvZW50aXRpZXMucHkKKysrIGIvTGliL2h0bWwvZW50aXRpZXMucHkKQEAgLTI1Niw2ICsyNTYsMjI0MiBAQAogICAgICd6d25qJzogICAgIDB4MjAwYywgIyB6ZXJvIHdpZHRoIG5vbi1qb2luZXIsIFUrMjAwQyBORVcgUkZDIDIwNzAKIH0KIAorCisjIG1hcHMgdGhlIEhUTUw1IG5hbWVkIGNoYXJhY3RlciByZWZlcmVuY2VzIHRvIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUgY2hhcmFjdGVyKHMpCitodG1sNSA9IHsKKyAgICAnQWFjdXRlJzogJ1x4YzEnLAorICAgICdhYWN1dGUnOiAnXHhlMScsCisgICAgJ0FhY3V0ZTsnOiAnXHhjMScsCisgICAgJ2FhY3V0ZTsnOiAnXHhlMScsCisgICAgJ0FicmV2ZTsnOiAnXHUwMTAyJywKKyAgICAnYWJyZXZlOyc6ICdcdTAxMDMnLAorICAgICdhYzsnOiAnXHUyMjNlJywKKyAgICAnYWNkOyc6ICdcdTIyM2YnLAorICAgICdhY0U7JzogJ1x1MjIzZVx1MDMzMycsCisgICAgJ0FjaXJjJzogJ1x4YzInLAorICAgICdhY2lyYyc6ICdceGUyJywKKyAgICAnQWNpcmM7JzogJ1x4YzInLAorICAgICdhY2lyYzsnOiAnXHhlMicsCisgICAgJ2FjdXRlJzogJ1x4YjQnLAorICAgICdhY3V0ZTsnOiAnXHhiNCcsCisgICAgJ0FjeTsnOiAnXHUwNDEwJywKKyAgICAnYWN5Oyc6ICdcdTA0MzAnLAorICAgICdBRWxpZyc6ICdceGM2JywKKyAgICAnYWVsaWcnOiAnXHhlNicsCisgICAgJ0FFbGlnOyc6ICdceGM2JywKKyAgICAnYWVsaWc7JzogJ1x4ZTYnLAorICAgICdhZjsnOiAnXHUyMDYxJywKKyAgICAnQWZyOyc6ICdcVTAwMDFkNTA0JywKKyAgICAnYWZyOyc6ICdcVTAwMDFkNTFlJywKKyAgICAnQWdyYXZlJzogJ1x4YzAnLAorICAgICdhZ3JhdmUnOiAnXHhlMCcsCisgICAgJ0FncmF2ZTsnOiAnXHhjMCcsCisgICAgJ2FncmF2ZTsnOiAnXHhlMCcsCisgICAgJ2FsZWZzeW07JzogJ1x1MjEzNScsCisgICAgJ2FsZXBoOyc6ICdcdTIxMzUnLAorICAgICdBbHBoYTsnOiAnXHUwMzkxJywKKyAgICAnYWxwaGE7JzogJ1x1MDNiMScsCisgICAgJ0FtYWNyOyc6ICdcdTAxMDAnLAorICAgICdhbWFjcjsnOiAnXHUwMTAxJywKKyAgICAnYW1hbGc7JzogJ1x1MmEzZicsCisgICAgJ0FNUCc6ICcmJywKKyAgICAnYW1wJzogJyYnLAorICAgICdBTVA7JzogJyYnLAorICAgICdhbXA7JzogJyYnLAorICAgICdBbmQ7JzogJ1x1MmE1MycsCisgICAgJ2FuZDsnOiAnXHUyMjI3JywKKyAgICAnYW5kYW5kOyc6ICdcdTJhNTUnLAorICAgICdhbmRkOyc6ICdcdTJhNWMnLAorICAgICdhbmRzbG9wZTsnOiAnXHUyYTU4JywKKyAgICAnYW5kdjsnOiAnXHUyYTVhJywKKyAgICAnYW5nOyc6ICdcdTIyMjAnLAorICAgICdhbmdlOyc6ICdcdTI5YTQnLAorICAgICdhbmdsZTsnOiAnXHUyMjIwJywKKyAgICAnYW5nbXNkOyc6ICdcdTIyMjEnLAorICAgICdhbmdtc2RhYTsnOiAnXHUyOWE4JywKKyAgICAnYW5nbXNkYWI7JzogJ1x1MjlhOScsCisgICAgJ2FuZ21zZGFjOyc6ICdcdTI5YWEnLAorICAgICdhbmdtc2RhZDsnOiAnXHUyOWFiJywKKyAgICAnYW5nbXNkYWU7JzogJ1x1MjlhYycsCisgICAgJ2FuZ21zZGFmOyc6ICdcdTI5YWQnLAorICAgICdhbmdtc2RhZzsnOiAnXHUyOWFlJywKKyAgICAnYW5nbXNkYWg7JzogJ1x1MjlhZicsCisgICAgJ2FuZ3J0Oyc6ICdcdTIyMWYnLAorICAgICdhbmdydHZiOyc6ICdcdTIyYmUnLAorICAgICdhbmdydHZiZDsnOiAnXHUyOTlkJywKKyAgICAnYW5nc3BoOyc6ICdcdTIyMjInLAorICAgICdhbmdzdDsnOiAnXHhjNScsCisgICAgJ2FuZ3phcnI7JzogJ1x1MjM3YycsCisgICAgJ0FvZ29uOyc6ICdcdTAxMDQnLAorICAgICdhb2dvbjsnOiAnXHUwMTA1JywKKyAgICAnQW9wZjsnOiAnXFUwMDAxZDUzOCcsCisgICAgJ2FvcGY7JzogJ1xVMDAwMWQ1NTInLAorICAgICdhcDsnOiAnXHUyMjQ4JywKKyAgICAnYXBhY2lyOyc6ICdcdTJhNmYnLAorICAgICdhcEU7JzogJ1x1MmE3MCcsCisgICAgJ2FwZTsnOiAnXHUyMjRhJywKKyAgICAnYXBpZDsnOiAnXHUyMjRiJywKKyAgICAnYXBvczsnOiAiJyIsCisgICAgJ0FwcGx5RnVuY3Rpb247JzogJ1x1MjA2MScsCisgICAgJ2FwcHJveDsnOiAnXHUyMjQ4JywKKyAgICAnYXBwcm94ZXE7JzogJ1x1MjI0YScsCisgICAgJ0FyaW5nJzogJ1x4YzUnLAorICAgICdhcmluZyc6ICdceGU1JywKKyAgICAnQXJpbmc7JzogJ1x4YzUnLAorICAgICdhcmluZzsnOiAnXHhlNScsCisgICAgJ0FzY3I7JzogJ1xVMDAwMWQ0OWMnLAorICAgICdhc2NyOyc6ICdcVTAwMDFkNGI2JywKKyAgICAnQXNzaWduOyc6ICdcdTIyNTQnLAorICAgICdhc3Q7JzogJyonLAorICAgICdhc3ltcDsnOiAnXHUyMjQ4JywKKyAgICAnYXN5bXBlcTsnOiAnXHUyMjRkJywKKyAgICAnQXRpbGRlJzogJ1x4YzMnLAorICAgICdhdGlsZGUnOiAnXHhlMycsCisgICAgJ0F0aWxkZTsnOiAnXHhjMycsCisgICAgJ2F0aWxkZTsnOiAnXHhlMycsCisgICAgJ0F1bWwnOiAnXHhjNCcsCisgICAgJ2F1bWwnOiAnXHhlNCcsCisgICAgJ0F1bWw7JzogJ1x4YzQnLAorICAgICdhdW1sOyc6ICdceGU0JywKKyAgICAnYXdjb25pbnQ7JzogJ1x1MjIzMycsCisgICAgJ2F3aW50Oyc6ICdcdTJhMTEnLAorICAgICdiYWNrY29uZzsnOiAnXHUyMjRjJywKKyAgICAnYmFja2Vwc2lsb247JzogJ1x1MDNmNicsCisgICAgJ2JhY2twcmltZTsnOiAnXHUyMDM1JywKKyAgICAnYmFja3NpbTsnOiAnXHUyMjNkJywKKyAgICAnYmFja3NpbWVxOyc6ICdcdTIyY2QnLAorICAgICdCYWNrc2xhc2g7JzogJ1x1MjIxNicsCisgICAgJ0JhcnY7JzogJ1x1MmFlNycsCisgICAgJ2JhcnZlZTsnOiAnXHUyMmJkJywKKyAgICAnQmFyd2VkOyc6ICdcdTIzMDYnLAorICAgICdiYXJ3ZWQ7JzogJ1x1MjMwNScsCisgICAgJ2JhcndlZGdlOyc6ICdcdTIzMDUnLAorICAgICdiYnJrOyc6ICdcdTIzYjUnLAorICAgICdiYnJrdGJyazsnOiAnXHUyM2I2JywKKyAgICAnYmNvbmc7JzogJ1x1MjI0YycsCisgICAgJ0JjeTsnOiAnXHUwNDExJywKKyAgICAnYmN5Oyc6ICdcdTA0MzEnLAorICAgICdiZHF1bzsnOiAnXHUyMDFlJywKKyAgICAnYmVjYXVzOyc6ICdcdTIyMzUnLAorICAgICdCZWNhdXNlOyc6ICdcdTIyMzUnLAorICAgICdiZWNhdXNlOyc6ICdcdTIyMzUnLAorICAgICdiZW1wdHl2Oyc6ICdcdTI5YjAnLAorICAgICdiZXBzaTsnOiAnXHUwM2Y2JywKKyAgICAnYmVybm91Oyc6ICdcdTIxMmMnLAorICAgICdCZXJub3VsbGlzOyc6ICdcdTIxMmMnLAorICAgICdCZXRhOyc6ICdcdTAzOTInLAorICAgICdiZXRhOyc6ICdcdTAzYjInLAorICAgICdiZXRoOyc6ICdcdTIxMzYnLAorICAgICdiZXR3ZWVuOyc6ICdcdTIyNmMnLAorICAgICdCZnI7JzogJ1xVMDAwMWQ1MDUnLAorICAgICdiZnI7JzogJ1xVMDAwMWQ1MWYnLAorICAgICdiaWdjYXA7JzogJ1x1MjJjMicsCisgICAgJ2JpZ2NpcmM7JzogJ1x1MjVlZicsCisgICAgJ2JpZ2N1cDsnOiAnXHUyMmMzJywKKyAgICAnYmlnb2RvdDsnOiAnXHUyYTAwJywKKyAgICAnYmlnb3BsdXM7JzogJ1x1MmEwMScsCisgICAgJ2JpZ290aW1lczsnOiAnXHUyYTAyJywKKyAgICAnYmlnc3FjdXA7JzogJ1x1MmEwNicsCisgICAgJ2JpZ3N0YXI7JzogJ1x1MjYwNScsCisgICAgJ2JpZ3RyaWFuZ2xlZG93bjsnOiAnXHUyNWJkJywKKyAgICAnYmlndHJpYW5nbGV1cDsnOiAnXHUyNWIzJywKKyAgICAnYmlndXBsdXM7JzogJ1x1MmEwNCcsCisgICAgJ2JpZ3ZlZTsnOiAnXHUyMmMxJywKKyAgICAnYmlnd2VkZ2U7JzogJ1x1MjJjMCcsCisgICAgJ2JrYXJvdzsnOiAnXHUyOTBkJywKKyAgICAnYmxhY2tsb3plbmdlOyc6ICdcdTI5ZWInLAorICAgICdibGFja3NxdWFyZTsnOiAnXHUyNWFhJywKKyAgICAnYmxhY2t0cmlhbmdsZTsnOiAnXHUyNWI0JywKKyAgICAnYmxhY2t0cmlhbmdsZWRvd247JzogJ1x1MjViZScsCisgICAgJ2JsYWNrdHJpYW5nbGVsZWZ0Oyc6ICdcdTI1YzInLAorICAgICdibGFja3RyaWFuZ2xlcmlnaHQ7JzogJ1x1MjViOCcsCisgICAgJ2JsYW5rOyc6ICdcdTI0MjMnLAorICAgICdibGsxMjsnOiAnXHUyNTkyJywKKyAgICAnYmxrMTQ7JzogJ1x1MjU5MScsCisgICAgJ2JsazM0Oyc6ICdcdTI1OTMnLAorICAgICdibG9jazsnOiAnXHUyNTg4JywKKyAgICAnYm5lOyc6ICc9XHUyMGU1JywKKyAgICAnYm5lcXVpdjsnOiAnXHUyMjYxXHUyMGU1JywKKyAgICAnYk5vdDsnOiAnXHUyYWVkJywKKyAgICAnYm5vdDsnOiAnXHUyMzEwJywKKyAgICAnQm9wZjsnOiAnXFUwMDAxZDUzOScsCisgICAgJ2JvcGY7JzogJ1xVMDAwMWQ1NTMnLAorICAgICdib3Q7JzogJ1x1MjJhNScsCisgICAgJ2JvdHRvbTsnOiAnXHUyMmE1JywKKyAgICAnYm93dGllOyc6ICdcdTIyYzgnLAorICAgICdib3hib3g7JzogJ1x1MjljOScsCisgICAgJ2JveERMOyc6ICdcdTI1NTcnLAorICAgICdib3hEbDsnOiAnXHUyNTU2JywKKyAgICAnYm94ZEw7JzogJ1x1MjU1NScsCisgICAgJ2JveGRsOyc6ICdcdTI1MTAnLAorICAgICdib3hEUjsnOiAnXHUyNTU0JywKKyAgICAnYm94RHI7JzogJ1x1MjU1MycsCisgICAgJ2JveGRSOyc6ICdcdTI1NTInLAorICAgICdib3hkcjsnOiAnXHUyNTBjJywKKyAgICAnYm94SDsnOiAnXHUyNTUwJywKKyAgICAnYm94aDsnOiAnXHUyNTAwJywKKyAgICAnYm94SEQ7JzogJ1x1MjU2NicsCisgICAgJ2JveEhkOyc6ICdcdTI1NjQnLAorICAgICdib3hoRDsnOiAnXHUyNTY1JywKKyAgICAnYm94aGQ7JzogJ1x1MjUyYycsCisgICAgJ2JveEhVOyc6ICdcdTI1NjknLAorICAgICdib3hIdTsnOiAnXHUyNTY3JywKKyAgICAnYm94aFU7JzogJ1x1MjU2OCcsCisgICAgJ2JveGh1Oyc6ICdcdTI1MzQnLAorICAgICdib3htaW51czsnOiAnXHUyMjlmJywKKyAgICAnYm94cGx1czsnOiAnXHUyMjllJywKKyAgICAnYm94dGltZXM7JzogJ1x1MjJhMCcsCisgICAgJ2JveFVMOyc6ICdcdTI1NWQnLAorICAgICdib3hVbDsnOiAnXHUyNTVjJywKKyAgICAnYm94dUw7JzogJ1x1MjU1YicsCisgICAgJ2JveHVsOyc6ICdcdTI1MTgnLAorICAgICdib3hVUjsnOiAnXHUyNTVhJywKKyAgICAnYm94VXI7JzogJ1x1MjU1OScsCisgICAgJ2JveHVSOyc6ICdcdTI1NTgnLAorICAgICdib3h1cjsnOiAnXHUyNTE0JywKKyAgICAnYm94VjsnOiAnXHUyNTUxJywKKyAgICAnYm94djsnOiAnXHUyNTAyJywKKyAgICAnYm94Vkg7JzogJ1x1MjU2YycsCisgICAgJ2JveFZoOyc6ICdcdTI1NmInLAorICAgICdib3h2SDsnOiAnXHUyNTZhJywKKyAgICAnYm94dmg7JzogJ1x1MjUzYycsCisgICAgJ2JveFZMOyc6ICdcdTI1NjMnLAorICAgICdib3hWbDsnOiAnXHUyNTYyJywKKyAgICAnYm94dkw7JzogJ1x1MjU2MScsCisgICAgJ2JveHZsOyc6ICdcdTI1MjQnLAorICAgICdib3hWUjsnOiAnXHUyNTYwJywKKyAgICAnYm94VnI7JzogJ1x1MjU1ZicsCisgICAgJ2JveHZSOyc6ICdcdTI1NWUnLAorICAgICdib3h2cjsnOiAnXHUyNTFjJywKKyAgICAnYnByaW1lOyc6ICdcdTIwMzUnLAorICAgICdCcmV2ZTsnOiAnXHUwMmQ4JywKKyAgICAnYnJldmU7JzogJ1x1MDJkOCcsCisgICAgJ2JydmJhcic6ICdceGE2JywKKyAgICAnYnJ2YmFyOyc6ICdceGE2JywKKyAgICAnQnNjcjsnOiAnXHUyMTJjJywKKyAgICAnYnNjcjsnOiAnXFUwMDAxZDRiNycsCisgICAgJ2JzZW1pOyc6ICdcdTIwNGYnLAorICAgICdic2ltOyc6ICdcdTIyM2QnLAorICAgICdic2ltZTsnOiAnXHUyMmNkJywKKyAgICAnYnNvbDsnOiAnXFwnLAorICAgICdic29sYjsnOiAnXHUyOWM1JywKKyAgICAnYnNvbGhzdWI7JzogJ1x1MjdjOCcsCisgICAgJ2J1bGw7JzogJ1x1MjAyMicsCisgICAgJ2J1bGxldDsnOiAnXHUyMDIyJywKKyAgICAnYnVtcDsnOiAnXHUyMjRlJywKKyAgICAnYnVtcEU7JzogJ1x1MmFhZScsCisgICAgJ2J1bXBlOyc6ICdcdTIyNGYnLAorICAgICdCdW1wZXE7JzogJ1x1MjI0ZScsCisgICAgJ2J1bXBlcTsnOiAnXHUyMjRmJywKKyAgICAnQ2FjdXRlOyc6ICdcdTAxMDYnLAorICAgICdjYWN1dGU7JzogJ1x1MDEwNycsCisgICAgJ0NhcDsnOiAnXHUyMmQyJywKKyAgICAnY2FwOyc6ICdcdTIyMjknLAorICAgICdjYXBhbmQ7JzogJ1x1MmE0NCcsCisgICAgJ2NhcGJyY3VwOyc6ICdcdTJhNDknLAorICAgICdjYXBjYXA7JzogJ1x1MmE0YicsCisgICAgJ2NhcGN1cDsnOiAnXHUyYTQ3JywKKyAgICAnY2FwZG90Oyc6ICdcdTJhNDAnLAorICAgICdDYXBpdGFsRGlmZmVyZW50aWFsRDsnOiAnXHUyMTQ1JywKKyAgICAnY2FwczsnOiAnXHUyMjI5XHVmZTAwJywKKyAgICAnY2FyZXQ7JzogJ1x1MjA0MScsCisgICAgJ2Nhcm9uOyc6ICdcdTAyYzcnLAorICAgICdDYXlsZXlzOyc6ICdcdTIxMmQnLAorICAgICdjY2FwczsnOiAnXHUyYTRkJywKKyAgICAnQ2Nhcm9uOyc6ICdcdTAxMGMnLAorICAgICdjY2Fyb247JzogJ1x1MDEwZCcsCisgICAgJ0NjZWRpbCc6ICdceGM3JywKKyAgICAnY2NlZGlsJzogJ1x4ZTcnLAorICAgICdDY2VkaWw7JzogJ1x4YzcnLAorICAgICdjY2VkaWw7JzogJ1x4ZTcnLAorICAgICdDY2lyYzsnOiAnXHUwMTA4JywKKyAgICAnY2NpcmM7JzogJ1x1MDEwOScsCisgICAgJ0Njb25pbnQ7JzogJ1x1MjIzMCcsCisgICAgJ2NjdXBzOyc6ICdcdTJhNGMnLAorICAgICdjY3Vwc3NtOyc6ICdcdTJhNTAnLAorICAgICdDZG90Oyc6ICdcdTAxMGEnLAorICAgICdjZG90Oyc6ICdcdTAxMGInLAorICAgICdjZWRpbCc6ICdceGI4JywKKyAgICAnY2VkaWw7JzogJ1x4YjgnLAorICAgICdDZWRpbGxhOyc6ICdceGI4JywKKyAgICAnY2VtcHR5djsnOiAnXHUyOWIyJywKKyAgICAnY2VudCc6ICdceGEyJywKKyAgICAnY2VudDsnOiAnXHhhMicsCisgICAgJ0NlbnRlckRvdDsnOiAnXHhiNycsCisgICAgJ2NlbnRlcmRvdDsnOiAnXHhiNycsCisgICAgJ0NmcjsnOiAnXHUyMTJkJywKKyAgICAnY2ZyOyc6ICdcVTAwMDFkNTIwJywKKyAgICAnQ0hjeTsnOiAnXHUwNDI3JywKKyAgICAnY2hjeTsnOiAnXHUwNDQ3JywKKyAgICAnY2hlY2s7JzogJ1x1MjcxMycsCisgICAgJ2NoZWNrbWFyazsnOiAnXHUyNzEzJywKKyAgICAnQ2hpOyc6ICdcdTAzYTcnLAorICAgICdjaGk7JzogJ1x1MDNjNycsCisgICAgJ2NpcjsnOiAnXHUyNWNiJywKKyAgICAnY2lyYzsnOiAnXHUwMmM2JywKKyAgICAnY2lyY2VxOyc6ICdcdTIyNTcnLAorICAgICdjaXJjbGVhcnJvd2xlZnQ7JzogJ1x1MjFiYScsCisgICAgJ2NpcmNsZWFycm93cmlnaHQ7JzogJ1x1MjFiYicsCisgICAgJ2NpcmNsZWRhc3Q7JzogJ1x1MjI5YicsCisgICAgJ2NpcmNsZWRjaXJjOyc6ICdcdTIyOWEnLAorICAgICdjaXJjbGVkZGFzaDsnOiAnXHUyMjlkJywKKyAgICAnQ2lyY2xlRG90Oyc6ICdcdTIyOTknLAorICAgICdjaXJjbGVkUjsnOiAnXHhhZScsCisgICAgJ2NpcmNsZWRTOyc6ICdcdTI0YzgnLAorICAgICdDaXJjbGVNaW51czsnOiAnXHUyMjk2JywKKyAgICAnQ2lyY2xlUGx1czsnOiAnXHUyMjk1JywKKyAgICAnQ2lyY2xlVGltZXM7JzogJ1x1MjI5NycsCisgICAgJ2NpckU7JzogJ1x1MjljMycsCisgICAgJ2NpcmU7JzogJ1x1MjI1NycsCisgICAgJ2NpcmZuaW50Oyc6ICdcdTJhMTAnLAorICAgICdjaXJtaWQ7JzogJ1x1MmFlZicsCisgICAgJ2NpcnNjaXI7JzogJ1x1MjljMicsCisgICAgJ0Nsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjMyJywKKyAgICAnQ2xvc2VDdXJseURvdWJsZVF1b3RlOyc6ICdcdTIwMWQnLAorICAgICdDbG9zZUN1cmx5UXVvdGU7JzogJ1x1MjAxOScsCisgICAgJ2NsdWJzOyc6ICdcdTI2NjMnLAorICAgICdjbHVic3VpdDsnOiAnXHUyNjYzJywKKyAgICAnQ29sb247JzogJ1x1MjIzNycsCisgICAgJ2NvbG9uOyc6ICc6JywKKyAgICAnQ29sb25lOyc6ICdcdTJhNzQnLAorICAgICdjb2xvbmU7JzogJ1x1MjI1NCcsCisgICAgJ2NvbG9uZXE7JzogJ1x1MjI1NCcsCisgICAgJ2NvbW1hOyc6ICcsJywKKyAgICAnY29tbWF0Oyc6ICdAJywKKyAgICAnY29tcDsnOiAnXHUyMjAxJywKKyAgICAnY29tcGZuOyc6ICdcdTIyMTgnLAorICAgICdjb21wbGVtZW50Oyc6ICdcdTIyMDEnLAorICAgICdjb21wbGV4ZXM7JzogJ1x1MjEwMicsCisgICAgJ2Nvbmc7JzogJ1x1MjI0NScsCisgICAgJ2Nvbmdkb3Q7JzogJ1x1MmE2ZCcsCisgICAgJ0NvbmdydWVudDsnOiAnXHUyMjYxJywKKyAgICAnQ29uaW50Oyc6ICdcdTIyMmYnLAorICAgICdjb25pbnQ7JzogJ1x1MjIyZScsCisgICAgJ0NvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjJlJywKKyAgICAnQ29wZjsnOiAnXHUyMTAyJywKKyAgICAnY29wZjsnOiAnXFUwMDAxZDU1NCcsCisgICAgJ2NvcHJvZDsnOiAnXHUyMjEwJywKKyAgICAnQ29wcm9kdWN0Oyc6ICdcdTIyMTAnLAorICAgICdDT1BZJzogJ1x4YTknLAorICAgICdjb3B5JzogJ1x4YTknLAorICAgICdDT1BZOyc6ICdceGE5JywKKyAgICAnY29weTsnOiAnXHhhOScsCisgICAgJ2NvcHlzcjsnOiAnXHUyMTE3JywKKyAgICAnQ291bnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjMzJywKKyAgICAnY3JhcnI7JzogJ1x1MjFiNScsCisgICAgJ0Nyb3NzOyc6ICdcdTJhMmYnLAorICAgICdjcm9zczsnOiAnXHUyNzE3JywKKyAgICAnQ3NjcjsnOiAnXFUwMDAxZDQ5ZScsCisgICAgJ2NzY3I7JzogJ1xVMDAwMWQ0YjgnLAorICAgICdjc3ViOyc6ICdcdTJhY2YnLAorICAgICdjc3ViZTsnOiAnXHUyYWQxJywKKyAgICAnY3N1cDsnOiAnXHUyYWQwJywKKyAgICAnY3N1cGU7JzogJ1x1MmFkMicsCisgICAgJ2N0ZG90Oyc6ICdcdTIyZWYnLAorICAgICdjdWRhcnJsOyc6ICdcdTI5MzgnLAorICAgICdjdWRhcnJyOyc6ICdcdTI5MzUnLAorICAgICdjdWVwcjsnOiAnXHUyMmRlJywKKyAgICAnY3Vlc2M7JzogJ1x1MjJkZicsCisgICAgJ2N1bGFycjsnOiAnXHUyMWI2JywKKyAgICAnY3VsYXJycDsnOiAnXHUyOTNkJywKKyAgICAnQ3VwOyc6ICdcdTIyZDMnLAorICAgICdjdXA7JzogJ1x1MjIyYScsCisgICAgJ2N1cGJyY2FwOyc6ICdcdTJhNDgnLAorICAgICdDdXBDYXA7JzogJ1x1MjI0ZCcsCisgICAgJ2N1cGNhcDsnOiAnXHUyYTQ2JywKKyAgICAnY3VwY3VwOyc6ICdcdTJhNGEnLAorICAgICdjdXBkb3Q7JzogJ1x1MjI4ZCcsCisgICAgJ2N1cG9yOyc6ICdcdTJhNDUnLAorICAgICdjdXBzOyc6ICdcdTIyMmFcdWZlMDAnLAorICAgICdjdXJhcnI7JzogJ1x1MjFiNycsCisgICAgJ2N1cmFycm07JzogJ1x1MjkzYycsCisgICAgJ2N1cmx5ZXFwcmVjOyc6ICdcdTIyZGUnLAorICAgICdjdXJseWVxc3VjYzsnOiAnXHUyMmRmJywKKyAgICAnY3VybHl2ZWU7JzogJ1x1MjJjZScsCisgICAgJ2N1cmx5d2VkZ2U7JzogJ1x1MjJjZicsCisgICAgJ2N1cnJlbic6ICdceGE0JywKKyAgICAnY3VycmVuOyc6ICdceGE0JywKKyAgICAnY3VydmVhcnJvd2xlZnQ7JzogJ1x1MjFiNicsCisgICAgJ2N1cnZlYXJyb3dyaWdodDsnOiAnXHUyMWI3JywKKyAgICAnY3V2ZWU7JzogJ1x1MjJjZScsCisgICAgJ2N1d2VkOyc6ICdcdTIyY2YnLAorICAgICdjd2NvbmludDsnOiAnXHUyMjMyJywKKyAgICAnY3dpbnQ7JzogJ1x1MjIzMScsCisgICAgJ2N5bGN0eTsnOiAnXHUyMzJkJywKKyAgICAnRGFnZ2VyOyc6ICdcdTIwMjEnLAorICAgICdkYWdnZXI7JzogJ1x1MjAyMCcsCisgICAgJ2RhbGV0aDsnOiAnXHUyMTM4JywKKyAgICAnRGFycjsnOiAnXHUyMWExJywKKyAgICAnZEFycjsnOiAnXHUyMWQzJywKKyAgICAnZGFycjsnOiAnXHUyMTkzJywKKyAgICAnZGFzaDsnOiAnXHUyMDEwJywKKyAgICAnRGFzaHY7JzogJ1x1MmFlNCcsCisgICAgJ2Rhc2h2Oyc6ICdcdTIyYTMnLAorICAgICdkYmthcm93Oyc6ICdcdTI5MGYnLAorICAgICdkYmxhYzsnOiAnXHUwMmRkJywKKyAgICAnRGNhcm9uOyc6ICdcdTAxMGUnLAorICAgICdkY2Fyb247JzogJ1x1MDEwZicsCisgICAgJ0RjeTsnOiAnXHUwNDE0JywKKyAgICAnZGN5Oyc6ICdcdTA0MzQnLAorICAgICdERDsnOiAnXHUyMTQ1JywKKyAgICAnZGQ7JzogJ1x1MjE0NicsCisgICAgJ2RkYWdnZXI7JzogJ1x1MjAyMScsCisgICAgJ2RkYXJyOyc6ICdcdTIxY2EnLAorICAgICdERG90cmFoZDsnOiAnXHUyOTExJywKKyAgICAnZGRvdHNlcTsnOiAnXHUyYTc3JywKKyAgICAnZGVnJzogJ1x4YjAnLAorICAgICdkZWc7JzogJ1x4YjAnLAorICAgICdEZWw7JzogJ1x1MjIwNycsCisgICAgJ0RlbHRhOyc6ICdcdTAzOTQnLAorICAgICdkZWx0YTsnOiAnXHUwM2I0JywKKyAgICAnZGVtcHR5djsnOiAnXHUyOWIxJywKKyAgICAnZGZpc2h0Oyc6ICdcdTI5N2YnLAorICAgICdEZnI7JzogJ1xVMDAwMWQ1MDcnLAorICAgICdkZnI7JzogJ1xVMDAwMWQ1MjEnLAorICAgICdkSGFyOyc6ICdcdTI5NjUnLAorICAgICdkaGFybDsnOiAnXHUyMWMzJywKKyAgICAnZGhhcnI7JzogJ1x1MjFjMicsCisgICAgJ0RpYWNyaXRpY2FsQWN1dGU7JzogJ1x4YjQnLAorICAgICdEaWFjcml0aWNhbERvdDsnOiAnXHUwMmQ5JywKKyAgICAnRGlhY3JpdGljYWxEb3VibGVBY3V0ZTsnOiAnXHUwMmRkJywKKyAgICAnRGlhY3JpdGljYWxHcmF2ZTsnOiAnYCcsCisgICAgJ0RpYWNyaXRpY2FsVGlsZGU7JzogJ1x1MDJkYycsCisgICAgJ2RpYW07JzogJ1x1MjJjNCcsCisgICAgJ0RpYW1vbmQ7JzogJ1x1MjJjNCcsCisgICAgJ2RpYW1vbmQ7JzogJ1x1MjJjNCcsCisgICAgJ2RpYW1vbmRzdWl0Oyc6ICdcdTI2NjYnLAorICAgICdkaWFtczsnOiAnXHUyNjY2JywKKyAgICAnZGllOyc6ICdceGE4JywKKyAgICAnRGlmZmVyZW50aWFsRDsnOiAnXHUyMTQ2JywKKyAgICAnZGlnYW1tYTsnOiAnXHUwM2RkJywKKyAgICAnZGlzaW47JzogJ1x1MjJmMicsCisgICAgJ2RpdjsnOiAnXHhmNycsCisgICAgJ2RpdmlkZSc6ICdceGY3JywKKyAgICAnZGl2aWRlOyc6ICdceGY3JywKKyAgICAnZGl2aWRlb250aW1lczsnOiAnXHUyMmM3JywKKyAgICAnZGl2b254Oyc6ICdcdTIyYzcnLAorICAgICdESmN5Oyc6ICdcdTA0MDInLAorICAgICdkamN5Oyc6ICdcdTA0NTInLAorICAgICdkbGNvcm47JzogJ1x1MjMxZScsCisgICAgJ2RsY3JvcDsnOiAnXHUyMzBkJywKKyAgICAnZG9sbGFyOyc6ICckJywKKyAgICAnRG9wZjsnOiAnXFUwMDAxZDUzYicsCisgICAgJ2RvcGY7JzogJ1xVMDAwMWQ1NTUnLAorICAgICdEb3Q7JzogJ1x4YTgnLAorICAgICdkb3Q7JzogJ1x1MDJkOScsCisgICAgJ0RvdERvdDsnOiAnXHUyMGRjJywKKyAgICAnZG90ZXE7JzogJ1x1MjI1MCcsCisgICAgJ2RvdGVxZG90Oyc6ICdcdTIyNTEnLAorICAgICdEb3RFcXVhbDsnOiAnXHUyMjUwJywKKyAgICAnZG90bWludXM7JzogJ1x1MjIzOCcsCisgICAgJ2RvdHBsdXM7JzogJ1x1MjIxNCcsCisgICAgJ2RvdHNxdWFyZTsnOiAnXHUyMmExJywKKyAgICAnZG91YmxlYmFyd2VkZ2U7JzogJ1x1MjMwNicsCisgICAgJ0RvdWJsZUNvbnRvdXJJbnRlZ3JhbDsnOiAnXHUyMjJmJywKKyAgICAnRG91YmxlRG90Oyc6ICdceGE4JywKKyAgICAnRG91YmxlRG93bkFycm93Oyc6ICdcdTIxZDMnLAorICAgICdEb3VibGVMZWZ0QXJyb3c7JzogJ1x1MjFkMCcsCisgICAgJ0RvdWJsZUxlZnRSaWdodEFycm93Oyc6ICdcdTIxZDQnLAorICAgICdEb3VibGVMZWZ0VGVlOyc6ICdcdTJhZTQnLAorICAgICdEb3VibGVMb25nTGVmdEFycm93Oyc6ICdcdTI3ZjgnLAorICAgICdEb3VibGVMb25nTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjdmYScsCisgICAgJ0RvdWJsZUxvbmdSaWdodEFycm93Oyc6ICdcdTI3ZjknLAorICAgICdEb3VibGVSaWdodEFycm93Oyc6ICdcdTIxZDInLAorICAgICdEb3VibGVSaWdodFRlZTsnOiAnXHUyMmE4JywKKyAgICAnRG91YmxlVXBBcnJvdzsnOiAnXHUyMWQxJywKKyAgICAnRG91YmxlVXBEb3duQXJyb3c7JzogJ1x1MjFkNScsCisgICAgJ0RvdWJsZVZlcnRpY2FsQmFyOyc6ICdcdTIyMjUnLAorICAgICdEb3duQXJyb3c7JzogJ1x1MjE5MycsCisgICAgJ0Rvd25hcnJvdzsnOiAnXHUyMWQzJywKKyAgICAnZG93bmFycm93Oyc6ICdcdTIxOTMnLAorICAgICdEb3duQXJyb3dCYXI7JzogJ1x1MjkxMycsCisgICAgJ0Rvd25BcnJvd1VwQXJyb3c7JzogJ1x1MjFmNScsCisgICAgJ0Rvd25CcmV2ZTsnOiAnXHUwMzExJywKKyAgICAnZG93bmRvd25hcnJvd3M7JzogJ1x1MjFjYScsCisgICAgJ2Rvd25oYXJwb29ubGVmdDsnOiAnXHUyMWMzJywKKyAgICAnZG93bmhhcnBvb25yaWdodDsnOiAnXHUyMWMyJywKKyAgICAnRG93bkxlZnRSaWdodFZlY3RvcjsnOiAnXHUyOTUwJywKKyAgICAnRG93bkxlZnRUZWVWZWN0b3I7JzogJ1x1Mjk1ZScsCisgICAgJ0Rvd25MZWZ0VmVjdG9yOyc6ICdcdTIxYmQnLAorICAgICdEb3duTGVmdFZlY3RvckJhcjsnOiAnXHUyOTU2JywKKyAgICAnRG93blJpZ2h0VGVlVmVjdG9yOyc6ICdcdTI5NWYnLAorICAgICdEb3duUmlnaHRWZWN0b3I7JzogJ1x1MjFjMScsCisgICAgJ0Rvd25SaWdodFZlY3RvckJhcjsnOiAnXHUyOTU3JywKKyAgICAnRG93blRlZTsnOiAnXHUyMmE0JywKKyAgICAnRG93blRlZUFycm93Oyc6ICdcdTIxYTcnLAorICAgICdkcmJrYXJvdzsnOiAnXHUyOTEwJywKKyAgICAnZHJjb3JuOyc6ICdcdTIzMWYnLAorICAgICdkcmNyb3A7JzogJ1x1MjMwYycsCisgICAgJ0RzY3I7JzogJ1xVMDAwMWQ0OWYnLAorICAgICdkc2NyOyc6ICdcVTAwMDFkNGI5JywKKyAgICAnRFNjeTsnOiAnXHUwNDA1JywKKyAgICAnZHNjeTsnOiAnXHUwNDU1JywKKyAgICAnZHNvbDsnOiAnXHUyOWY2JywKKyAgICAnRHN0cm9rOyc6ICdcdTAxMTAnLAorICAgICdkc3Ryb2s7JzogJ1x1MDExMScsCisgICAgJ2R0ZG90Oyc6ICdcdTIyZjEnLAorICAgICdkdHJpOyc6ICdcdTI1YmYnLAorICAgICdkdHJpZjsnOiAnXHUyNWJlJywKKyAgICAnZHVhcnI7JzogJ1x1MjFmNScsCisgICAgJ2R1aGFyOyc6ICdcdTI5NmYnLAorICAgICdkd2FuZ2xlOyc6ICdcdTI5YTYnLAorICAgICdEWmN5Oyc6ICdcdTA0MGYnLAorICAgICdkemN5Oyc6ICdcdTA0NWYnLAorICAgICdkemlncmFycjsnOiAnXHUyN2ZmJywKKyAgICAnRWFjdXRlJzogJ1x4YzknLAorICAgICdlYWN1dGUnOiAnXHhlOScsCisgICAgJ0VhY3V0ZTsnOiAnXHhjOScsCisgICAgJ2VhY3V0ZTsnOiAnXHhlOScsCisgICAgJ2Vhc3RlcjsnOiAnXHUyYTZlJywKKyAgICAnRWNhcm9uOyc6ICdcdTAxMWEnLAorICAgICdlY2Fyb247JzogJ1x1MDExYicsCisgICAgJ2VjaXI7JzogJ1x1MjI1NicsCisgICAgJ0VjaXJjJzogJ1x4Y2EnLAorICAgICdlY2lyYyc6ICdceGVhJywKKyAgICAnRWNpcmM7JzogJ1x4Y2EnLAorICAgICdlY2lyYzsnOiAnXHhlYScsCisgICAgJ2Vjb2xvbjsnOiAnXHUyMjU1JywKKyAgICAnRWN5Oyc6ICdcdTA0MmQnLAorICAgICdlY3k7JzogJ1x1MDQ0ZCcsCisgICAgJ2VERG90Oyc6ICdcdTJhNzcnLAorICAgICdFZG90Oyc6ICdcdTAxMTYnLAorICAgICdlRG90Oyc6ICdcdTIyNTEnLAorICAgICdlZG90Oyc6ICdcdTAxMTcnLAorICAgICdlZTsnOiAnXHUyMTQ3JywKKyAgICAnZWZEb3Q7JzogJ1x1MjI1MicsCisgICAgJ0VmcjsnOiAnXFUwMDAxZDUwOCcsCisgICAgJ2VmcjsnOiAnXFUwMDAxZDUyMicsCisgICAgJ2VnOyc6ICdcdTJhOWEnLAorICAgICdFZ3JhdmUnOiAnXHhjOCcsCisgICAgJ2VncmF2ZSc6ICdceGU4JywKKyAgICAnRWdyYXZlOyc6ICdceGM4JywKKyAgICAnZWdyYXZlOyc6ICdceGU4JywKKyAgICAnZWdzOyc6ICdcdTJhOTYnLAorICAgICdlZ3Nkb3Q7JzogJ1x1MmE5OCcsCisgICAgJ2VsOyc6ICdcdTJhOTknLAorICAgICdFbGVtZW50Oyc6ICdcdTIyMDgnLAorICAgICdlbGludGVyczsnOiAnXHUyM2U3JywKKyAgICAnZWxsOyc6ICdcdTIxMTMnLAorICAgICdlbHM7JzogJ1x1MmE5NScsCisgICAgJ2Vsc2RvdDsnOiAnXHUyYTk3JywKKyAgICAnRW1hY3I7JzogJ1x1MDExMicsCisgICAgJ2VtYWNyOyc6ICdcdTAxMTMnLAorICAgICdlbXB0eTsnOiAnXHUyMjA1JywKKyAgICAnZW1wdHlzZXQ7JzogJ1x1MjIwNScsCisgICAgJ0VtcHR5U21hbGxTcXVhcmU7JzogJ1x1MjVmYicsCisgICAgJ2VtcHR5djsnOiAnXHUyMjA1JywKKyAgICAnRW1wdHlWZXJ5U21hbGxTcXVhcmU7JzogJ1x1MjVhYicsCisgICAgJ2Vtc3AxMzsnOiAnXHUyMDA0JywKKyAgICAnZW1zcDE0Oyc6ICdcdTIwMDUnLAorICAgICdlbXNwOyc6ICdcdTIwMDMnLAorICAgICdFTkc7JzogJ1x1MDE0YScsCisgICAgJ2VuZzsnOiAnXHUwMTRiJywKKyAgICAnZW5zcDsnOiAnXHUyMDAyJywKKyAgICAnRW9nb247JzogJ1x1MDExOCcsCisgICAgJ2VvZ29uOyc6ICdcdTAxMTknLAorICAgICdFb3BmOyc6ICdcVTAwMDFkNTNjJywKKyAgICAnZW9wZjsnOiAnXFUwMDAxZDU1NicsCisgICAgJ2VwYXI7JzogJ1x1MjJkNScsCisgICAgJ2VwYXJzbDsnOiAnXHUyOWUzJywKKyAgICAnZXBsdXM7JzogJ1x1MmE3MScsCisgICAgJ2Vwc2k7JzogJ1x1MDNiNScsCisgICAgJ0Vwc2lsb247JzogJ1x1MDM5NScsCisgICAgJ2Vwc2lsb247JzogJ1x1MDNiNScsCisgICAgJ2Vwc2l2Oyc6ICdcdTAzZjUnLAorICAgICdlcWNpcmM7JzogJ1x1MjI1NicsCisgICAgJ2VxY29sb247JzogJ1x1MjI1NScsCisgICAgJ2Vxc2ltOyc6ICdcdTIyNDInLAorICAgICdlcXNsYW50Z3RyOyc6ICdcdTJhOTYnLAorICAgICdlcXNsYW50bGVzczsnOiAnXHUyYTk1JywKKyAgICAnRXF1YWw7JzogJ1x1MmE3NScsCisgICAgJ2VxdWFsczsnOiAnPScsCisgICAgJ0VxdWFsVGlsZGU7JzogJ1x1MjI0MicsCisgICAgJ2VxdWVzdDsnOiAnXHUyMjVmJywKKyAgICAnRXF1aWxpYnJpdW07JzogJ1x1MjFjYycsCisgICAgJ2VxdWl2Oyc6ICdcdTIyNjEnLAorICAgICdlcXVpdkREOyc6ICdcdTJhNzgnLAorICAgICdlcXZwYXJzbDsnOiAnXHUyOWU1JywKKyAgICAnZXJhcnI7JzogJ1x1Mjk3MScsCisgICAgJ2VyRG90Oyc6ICdcdTIyNTMnLAorICAgICdFc2NyOyc6ICdcdTIxMzAnLAorICAgICdlc2NyOyc6ICdcdTIxMmYnLAorICAgICdlc2RvdDsnOiAnXHUyMjUwJywKKyAgICAnRXNpbTsnOiAnXHUyYTczJywKKyAgICAnZXNpbTsnOiAnXHUyMjQyJywKKyAgICAnRXRhOyc6ICdcdTAzOTcnLAorICAgICdldGE7JzogJ1x1MDNiNycsCisgICAgJ0VUSCc6ICdceGQwJywKKyAgICAnZXRoJzogJ1x4ZjAnLAorICAgICdFVEg7JzogJ1x4ZDAnLAorICAgICdldGg7JzogJ1x4ZjAnLAorICAgICdFdW1sJzogJ1x4Y2InLAorICAgICdldW1sJzogJ1x4ZWInLAorICAgICdFdW1sOyc6ICdceGNiJywKKyAgICAnZXVtbDsnOiAnXHhlYicsCisgICAgJ2V1cm87JzogJ1x1MjBhYycsCisgICAgJ2V4Y2w7JzogJyEnLAorICAgICdleGlzdDsnOiAnXHUyMjAzJywKKyAgICAnRXhpc3RzOyc6ICdcdTIyMDMnLAorICAgICdleHBlY3RhdGlvbjsnOiAnXHUyMTMwJywKKyAgICAnRXhwb25lbnRpYWxFOyc6ICdcdTIxNDcnLAorICAgICdleHBvbmVudGlhbGU7JzogJ1x1MjE0NycsCisgICAgJ2ZhbGxpbmdkb3RzZXE7JzogJ1x1MjI1MicsCisgICAgJ0ZjeTsnOiAnXHUwNDI0JywKKyAgICAnZmN5Oyc6ICdcdTA0NDQnLAorICAgICdmZW1hbGU7JzogJ1x1MjY0MCcsCisgICAgJ2ZmaWxpZzsnOiAnXHVmYjAzJywKKyAgICAnZmZsaWc7JzogJ1x1ZmIwMCcsCisgICAgJ2ZmbGxpZzsnOiAnXHVmYjA0JywKKyAgICAnRmZyOyc6ICdcVTAwMDFkNTA5JywKKyAgICAnZmZyOyc6ICdcVTAwMDFkNTIzJywKKyAgICAnZmlsaWc7JzogJ1x1ZmIwMScsCisgICAgJ0ZpbGxlZFNtYWxsU3F1YXJlOyc6ICdcdTI1ZmMnLAorICAgICdGaWxsZWRWZXJ5U21hbGxTcXVhcmU7JzogJ1x1MjVhYScsCisgICAgJ2ZqbGlnOyc6ICdmaicsCisgICAgJ2ZsYXQ7JzogJ1x1MjY2ZCcsCisgICAgJ2ZsbGlnOyc6ICdcdWZiMDInLAorICAgICdmbHRuczsnOiAnXHUyNWIxJywKKyAgICAnZm5vZjsnOiAnXHUwMTkyJywKKyAgICAnRm9wZjsnOiAnXFUwMDAxZDUzZCcsCisgICAgJ2ZvcGY7JzogJ1xVMDAwMWQ1NTcnLAorICAgICdGb3JBbGw7JzogJ1x1MjIwMCcsCisgICAgJ2ZvcmFsbDsnOiAnXHUyMjAwJywKKyAgICAnZm9yazsnOiAnXHUyMmQ0JywKKyAgICAnZm9ya3Y7JzogJ1x1MmFkOScsCisgICAgJ0ZvdXJpZXJ0cmY7JzogJ1x1MjEzMScsCisgICAgJ2ZwYXJ0aW50Oyc6ICdcdTJhMGQnLAorICAgICdmcmFjMTInOiAnXHhiZCcsCisgICAgJ2ZyYWMxMjsnOiAnXHhiZCcsCisgICAgJ2ZyYWMxMzsnOiAnXHUyMTUzJywKKyAgICAnZnJhYzE0JzogJ1x4YmMnLAorICAgICdmcmFjMTQ7JzogJ1x4YmMnLAorICAgICdmcmFjMTU7JzogJ1x1MjE1NScsCisgICAgJ2ZyYWMxNjsnOiAnXHUyMTU5JywKKyAgICAnZnJhYzE4Oyc6ICdcdTIxNWInLAorICAgICdmcmFjMjM7JzogJ1x1MjE1NCcsCisgICAgJ2ZyYWMyNTsnOiAnXHUyMTU2JywKKyAgICAnZnJhYzM0JzogJ1x4YmUnLAorICAgICdmcmFjMzQ7JzogJ1x4YmUnLAorICAgICdmcmFjMzU7JzogJ1x1MjE1NycsCisgICAgJ2ZyYWMzODsnOiAnXHUyMTVjJywKKyAgICAnZnJhYzQ1Oyc6ICdcdTIxNTgnLAorICAgICdmcmFjNTY7JzogJ1x1MjE1YScsCisgICAgJ2ZyYWM1ODsnOiAnXHUyMTVkJywKKyAgICAnZnJhYzc4Oyc6ICdcdTIxNWUnLAorICAgICdmcmFzbDsnOiAnXHUyMDQ0JywKKyAgICAnZnJvd247JzogJ1x1MjMyMicsCisgICAgJ0ZzY3I7JzogJ1x1MjEzMScsCisgICAgJ2ZzY3I7JzogJ1xVMDAwMWQ0YmInLAorICAgICdnYWN1dGU7JzogJ1x1MDFmNScsCisgICAgJ0dhbW1hOyc6ICdcdTAzOTMnLAorICAgICdnYW1tYTsnOiAnXHUwM2IzJywKKyAgICAnR2FtbWFkOyc6ICdcdTAzZGMnLAorICAgICdnYW1tYWQ7JzogJ1x1MDNkZCcsCisgICAgJ2dhcDsnOiAnXHUyYTg2JywKKyAgICAnR2JyZXZlOyc6ICdcdTAxMWUnLAorICAgICdnYnJldmU7JzogJ1x1MDExZicsCisgICAgJ0djZWRpbDsnOiAnXHUwMTIyJywKKyAgICAnR2NpcmM7JzogJ1x1MDExYycsCisgICAgJ2djaXJjOyc6ICdcdTAxMWQnLAorICAgICdHY3k7JzogJ1x1MDQxMycsCisgICAgJ2djeTsnOiAnXHUwNDMzJywKKyAgICAnR2RvdDsnOiAnXHUwMTIwJywKKyAgICAnZ2RvdDsnOiAnXHUwMTIxJywKKyAgICAnZ0U7JzogJ1x1MjI2NycsCisgICAgJ2dlOyc6ICdcdTIyNjUnLAorICAgICdnRWw7JzogJ1x1MmE4YycsCisgICAgJ2dlbDsnOiAnXHUyMmRiJywKKyAgICAnZ2VxOyc6ICdcdTIyNjUnLAorICAgICdnZXFxOyc6ICdcdTIyNjcnLAorICAgICdnZXFzbGFudDsnOiAnXHUyYTdlJywKKyAgICAnZ2VzOyc6ICdcdTJhN2UnLAorICAgICdnZXNjYzsnOiAnXHUyYWE5JywKKyAgICAnZ2VzZG90Oyc6ICdcdTJhODAnLAorICAgICdnZXNkb3RvOyc6ICdcdTJhODInLAorICAgICdnZXNkb3RvbDsnOiAnXHUyYTg0JywKKyAgICAnZ2VzbDsnOiAnXHUyMmRiXHVmZTAwJywKKyAgICAnZ2VzbGVzOyc6ICdcdTJhOTQnLAorICAgICdHZnI7JzogJ1xVMDAwMWQ1MGEnLAorICAgICdnZnI7JzogJ1xVMDAwMWQ1MjQnLAorICAgICdHZzsnOiAnXHUyMmQ5JywKKyAgICAnZ2c7JzogJ1x1MjI2YicsCisgICAgJ2dnZzsnOiAnXHUyMmQ5JywKKyAgICAnZ2ltZWw7JzogJ1x1MjEzNycsCisgICAgJ0dKY3k7JzogJ1x1MDQwMycsCisgICAgJ2dqY3k7JzogJ1x1MDQ1MycsCisgICAgJ2dsOyc6ICdcdTIyNzcnLAorICAgICdnbGE7JzogJ1x1MmFhNScsCisgICAgJ2dsRTsnOiAnXHUyYTkyJywKKyAgICAnZ2xqOyc6ICdcdTJhYTQnLAorICAgICdnbmFwOyc6ICdcdTJhOGEnLAorICAgICdnbmFwcHJveDsnOiAnXHUyYThhJywKKyAgICAnZ25FOyc6ICdcdTIyNjknLAorICAgICdnbmU7JzogJ1x1MmE4OCcsCisgICAgJ2duZXE7JzogJ1x1MmE4OCcsCisgICAgJ2duZXFxOyc6ICdcdTIyNjknLAorICAgICdnbnNpbTsnOiAnXHUyMmU3JywKKyAgICAnR29wZjsnOiAnXFUwMDAxZDUzZScsCisgICAgJ2dvcGY7JzogJ1xVMDAwMWQ1NTgnLAorICAgICdncmF2ZTsnOiAnYCcsCisgICAgJ0dyZWF0ZXJFcXVhbDsnOiAnXHUyMjY1JywKKyAgICAnR3JlYXRlckVxdWFsTGVzczsnOiAnXHUyMmRiJywKKyAgICAnR3JlYXRlckZ1bGxFcXVhbDsnOiAnXHUyMjY3JywKKyAgICAnR3JlYXRlckdyZWF0ZXI7JzogJ1x1MmFhMicsCisgICAgJ0dyZWF0ZXJMZXNzOyc6ICdcdTIyNzcnLAorICAgICdHcmVhdGVyU2xhbnRFcXVhbDsnOiAnXHUyYTdlJywKKyAgICAnR3JlYXRlclRpbGRlOyc6ICdcdTIyNzMnLAorICAgICdHc2NyOyc6ICdcVTAwMDFkNGEyJywKKyAgICAnZ3NjcjsnOiAnXHUyMTBhJywKKyAgICAnZ3NpbTsnOiAnXHUyMjczJywKKyAgICAnZ3NpbWU7JzogJ1x1MmE4ZScsCisgICAgJ2dzaW1sOyc6ICdcdTJhOTAnLAorICAgICdHVCc6ICc+JywKKyAgICAnZ3QnOiAnPicsCisgICAgJ0dUOyc6ICc+JywKKyAgICAnR3Q7JzogJ1x1MjI2YicsCisgICAgJ2d0Oyc6ICc+JywKKyAgICAnZ3RjYzsnOiAnXHUyYWE3JywKKyAgICAnZ3RjaXI7JzogJ1x1MmE3YScsCisgICAgJ2d0ZG90Oyc6ICdcdTIyZDcnLAorICAgICdndGxQYXI7JzogJ1x1Mjk5NScsCisgICAgJ2d0cXVlc3Q7JzogJ1x1MmE3YycsCisgICAgJ2d0cmFwcHJveDsnOiAnXHUyYTg2JywKKyAgICAnZ3RyYXJyOyc6ICdcdTI5NzgnLAorICAgICdndHJkb3Q7JzogJ1x1MjJkNycsCisgICAgJ2d0cmVxbGVzczsnOiAnXHUyMmRiJywKKyAgICAnZ3RyZXFxbGVzczsnOiAnXHUyYThjJywKKyAgICAnZ3RybGVzczsnOiAnXHUyMjc3JywKKyAgICAnZ3Ryc2ltOyc6ICdcdTIyNzMnLAorICAgICdndmVydG5lcXE7JzogJ1x1MjI2OVx1ZmUwMCcsCisgICAgJ2d2bkU7JzogJ1x1MjI2OVx1ZmUwMCcsCisgICAgJ0hhY2VrOyc6ICdcdTAyYzcnLAorICAgICdoYWlyc3A7JzogJ1x1MjAwYScsCisgICAgJ2hhbGY7JzogJ1x4YmQnLAorICAgICdoYW1pbHQ7JzogJ1x1MjEwYicsCisgICAgJ0hBUkRjeTsnOiAnXHUwNDJhJywKKyAgICAnaGFyZGN5Oyc6ICdcdTA0NGEnLAorICAgICdoQXJyOyc6ICdcdTIxZDQnLAorICAgICdoYXJyOyc6ICdcdTIxOTQnLAorICAgICdoYXJyY2lyOyc6ICdcdTI5NDgnLAorICAgICdoYXJydzsnOiAnXHUyMWFkJywKKyAgICAnSGF0Oyc6ICdeJywKKyAgICAnaGJhcjsnOiAnXHUyMTBmJywKKyAgICAnSGNpcmM7JzogJ1x1MDEyNCcsCisgICAgJ2hjaXJjOyc6ICdcdTAxMjUnLAorICAgICdoZWFydHM7JzogJ1x1MjY2NScsCisgICAgJ2hlYXJ0c3VpdDsnOiAnXHUyNjY1JywKKyAgICAnaGVsbGlwOyc6ICdcdTIwMjYnLAorICAgICdoZXJjb247JzogJ1x1MjJiOScsCisgICAgJ0hmcjsnOiAnXHUyMTBjJywKKyAgICAnaGZyOyc6ICdcVTAwMDFkNTI1JywKKyAgICAnSGlsYmVydFNwYWNlOyc6ICdcdTIxMGInLAorICAgICdoa3NlYXJvdzsnOiAnXHUyOTI1JywKKyAgICAnaGtzd2Fyb3c7JzogJ1x1MjkyNicsCisgICAgJ2hvYXJyOyc6ICdcdTIxZmYnLAorICAgICdob210aHQ7JzogJ1x1MjIzYicsCisgICAgJ2hvb2tsZWZ0YXJyb3c7JzogJ1x1MjFhOScsCisgICAgJ2hvb2tyaWdodGFycm93Oyc6ICdcdTIxYWEnLAorICAgICdIb3BmOyc6ICdcdTIxMGQnLAorICAgICdob3BmOyc6ICdcVTAwMDFkNTU5JywKKyAgICAnaG9yYmFyOyc6ICdcdTIwMTUnLAorICAgICdIb3Jpem9udGFsTGluZTsnOiAnXHUyNTAwJywKKyAgICAnSHNjcjsnOiAnXHUyMTBiJywKKyAgICAnaHNjcjsnOiAnXFUwMDAxZDRiZCcsCisgICAgJ2hzbGFzaDsnOiAnXHUyMTBmJywKKyAgICAnSHN0cm9rOyc6ICdcdTAxMjYnLAorICAgICdoc3Ryb2s7JzogJ1x1MDEyNycsCisgICAgJ0h1bXBEb3duSHVtcDsnOiAnXHUyMjRlJywKKyAgICAnSHVtcEVxdWFsOyc6ICdcdTIyNGYnLAorICAgICdoeWJ1bGw7JzogJ1x1MjA0MycsCisgICAgJ2h5cGhlbjsnOiAnXHUyMDEwJywKKyAgICAnSWFjdXRlJzogJ1x4Y2QnLAorICAgICdpYWN1dGUnOiAnXHhlZCcsCisgICAgJ0lhY3V0ZTsnOiAnXHhjZCcsCisgICAgJ2lhY3V0ZTsnOiAnXHhlZCcsCisgICAgJ2ljOyc6ICdcdTIwNjMnLAorICAgICdJY2lyYyc6ICdceGNlJywKKyAgICAnaWNpcmMnOiAnXHhlZScsCisgICAgJ0ljaXJjOyc6ICdceGNlJywKKyAgICAnaWNpcmM7JzogJ1x4ZWUnLAorICAgICdJY3k7JzogJ1x1MDQxOCcsCisgICAgJ2ljeTsnOiAnXHUwNDM4JywKKyAgICAnSWRvdDsnOiAnXHUwMTMwJywKKyAgICAnSUVjeTsnOiAnXHUwNDE1JywKKyAgICAnaWVjeTsnOiAnXHUwNDM1JywKKyAgICAnaWV4Y2wnOiAnXHhhMScsCisgICAgJ2lleGNsOyc6ICdceGExJywKKyAgICAnaWZmOyc6ICdcdTIxZDQnLAorICAgICdJZnI7JzogJ1x1MjExMScsCisgICAgJ2lmcjsnOiAnXFUwMDAxZDUyNicsCisgICAgJ0lncmF2ZSc6ICdceGNjJywKKyAgICAnaWdyYXZlJzogJ1x4ZWMnLAorICAgICdJZ3JhdmU7JzogJ1x4Y2MnLAorICAgICdpZ3JhdmU7JzogJ1x4ZWMnLAorICAgICdpaTsnOiAnXHUyMTQ4JywKKyAgICAnaWlpaW50Oyc6ICdcdTJhMGMnLAorICAgICdpaWludDsnOiAnXHUyMjJkJywKKyAgICAnaWluZmluOyc6ICdcdTI5ZGMnLAorICAgICdpaW90YTsnOiAnXHUyMTI5JywKKyAgICAnSUpsaWc7JzogJ1x1MDEzMicsCisgICAgJ2lqbGlnOyc6ICdcdTAxMzMnLAorICAgICdJbTsnOiAnXHUyMTExJywKKyAgICAnSW1hY3I7JzogJ1x1MDEyYScsCisgICAgJ2ltYWNyOyc6ICdcdTAxMmInLAorICAgICdpbWFnZTsnOiAnXHUyMTExJywKKyAgICAnSW1hZ2luYXJ5STsnOiAnXHUyMTQ4JywKKyAgICAnaW1hZ2xpbmU7JzogJ1x1MjExMCcsCisgICAgJ2ltYWdwYXJ0Oyc6ICdcdTIxMTEnLAorICAgICdpbWF0aDsnOiAnXHUwMTMxJywKKyAgICAnaW1vZjsnOiAnXHUyMmI3JywKKyAgICAnaW1wZWQ7JzogJ1x1MDFiNScsCisgICAgJ0ltcGxpZXM7JzogJ1x1MjFkMicsCisgICAgJ2luOyc6ICdcdTIyMDgnLAorICAgICdpbmNhcmU7JzogJ1x1MjEwNScsCisgICAgJ2luZmluOyc6ICdcdTIyMWUnLAorICAgICdpbmZpbnRpZTsnOiAnXHUyOWRkJywKKyAgICAnaW5vZG90Oyc6ICdcdTAxMzEnLAorICAgICdJbnQ7JzogJ1x1MjIyYycsCisgICAgJ2ludDsnOiAnXHUyMjJiJywKKyAgICAnaW50Y2FsOyc6ICdcdTIyYmEnLAorICAgICdpbnRlZ2VyczsnOiAnXHUyMTI0JywKKyAgICAnSW50ZWdyYWw7JzogJ1x1MjIyYicsCisgICAgJ2ludGVyY2FsOyc6ICdcdTIyYmEnLAorICAgICdJbnRlcnNlY3Rpb247JzogJ1x1MjJjMicsCisgICAgJ2ludGxhcmhrOyc6ICdcdTJhMTcnLAorICAgICdpbnRwcm9kOyc6ICdcdTJhM2MnLAorICAgICdJbnZpc2libGVDb21tYTsnOiAnXHUyMDYzJywKKyAgICAnSW52aXNpYmxlVGltZXM7JzogJ1x1MjA2MicsCisgICAgJ0lPY3k7JzogJ1x1MDQwMScsCisgICAgJ2lvY3k7JzogJ1x1MDQ1MScsCisgICAgJ0lvZ29uOyc6ICdcdTAxMmUnLAorICAgICdpb2dvbjsnOiAnXHUwMTJmJywKKyAgICAnSW9wZjsnOiAnXFUwMDAxZDU0MCcsCisgICAgJ2lvcGY7JzogJ1xVMDAwMWQ1NWEnLAorICAgICdJb3RhOyc6ICdcdTAzOTknLAorICAgICdpb3RhOyc6ICdcdTAzYjknLAorICAgICdpcHJvZDsnOiAnXHUyYTNjJywKKyAgICAnaXF1ZXN0JzogJ1x4YmYnLAorICAgICdpcXVlc3Q7JzogJ1x4YmYnLAorICAgICdJc2NyOyc6ICdcdTIxMTAnLAorICAgICdpc2NyOyc6ICdcVTAwMDFkNGJlJywKKyAgICAnaXNpbjsnOiAnXHUyMjA4JywKKyAgICAnaXNpbmRvdDsnOiAnXHUyMmY1JywKKyAgICAnaXNpbkU7JzogJ1x1MjJmOScsCisgICAgJ2lzaW5zOyc6ICdcdTIyZjQnLAorICAgICdpc2luc3Y7JzogJ1x1MjJmMycsCisgICAgJ2lzaW52Oyc6ICdcdTIyMDgnLAorICAgICdpdDsnOiAnXHUyMDYyJywKKyAgICAnSXRpbGRlOyc6ICdcdTAxMjgnLAorICAgICdpdGlsZGU7JzogJ1x1MDEyOScsCisgICAgJ0l1a2N5Oyc6ICdcdTA0MDYnLAorICAgICdpdWtjeTsnOiAnXHUwNDU2JywKKyAgICAnSXVtbCc6ICdceGNmJywKKyAgICAnaXVtbCc6ICdceGVmJywKKyAgICAnSXVtbDsnOiAnXHhjZicsCisgICAgJ2l1bWw7JzogJ1x4ZWYnLAorICAgICdKY2lyYzsnOiAnXHUwMTM0JywKKyAgICAnamNpcmM7JzogJ1x1MDEzNScsCisgICAgJ0pjeTsnOiAnXHUwNDE5JywKKyAgICAnamN5Oyc6ICdcdTA0MzknLAorICAgICdKZnI7JzogJ1xVMDAwMWQ1MGQnLAorICAgICdqZnI7JzogJ1xVMDAwMWQ1MjcnLAorICAgICdqbWF0aDsnOiAnXHUwMjM3JywKKyAgICAnSm9wZjsnOiAnXFUwMDAxZDU0MScsCisgICAgJ2pvcGY7JzogJ1xVMDAwMWQ1NWInLAorICAgICdKc2NyOyc6ICdcVTAwMDFkNGE1JywKKyAgICAnanNjcjsnOiAnXFUwMDAxZDRiZicsCisgICAgJ0pzZXJjeTsnOiAnXHUwNDA4JywKKyAgICAnanNlcmN5Oyc6ICdcdTA0NTgnLAorICAgICdKdWtjeTsnOiAnXHUwNDA0JywKKyAgICAnanVrY3k7JzogJ1x1MDQ1NCcsCisgICAgJ0thcHBhOyc6ICdcdTAzOWEnLAorICAgICdrYXBwYTsnOiAnXHUwM2JhJywKKyAgICAna2FwcGF2Oyc6ICdcdTAzZjAnLAorICAgICdLY2VkaWw7JzogJ1x1MDEzNicsCisgICAgJ2tjZWRpbDsnOiAnXHUwMTM3JywKKyAgICAnS2N5Oyc6ICdcdTA0MWEnLAorICAgICdrY3k7JzogJ1x1MDQzYScsCisgICAgJ0tmcjsnOiAnXFUwMDAxZDUwZScsCisgICAgJ2tmcjsnOiAnXFUwMDAxZDUyOCcsCisgICAgJ2tncmVlbjsnOiAnXHUwMTM4JywKKyAgICAnS0hjeTsnOiAnXHUwNDI1JywKKyAgICAna2hjeTsnOiAnXHUwNDQ1JywKKyAgICAnS0pjeTsnOiAnXHUwNDBjJywKKyAgICAna2pjeTsnOiAnXHUwNDVjJywKKyAgICAnS29wZjsnOiAnXFUwMDAxZDU0MicsCisgICAgJ2tvcGY7JzogJ1xVMDAwMWQ1NWMnLAorICAgICdLc2NyOyc6ICdcVTAwMDFkNGE2JywKKyAgICAna3NjcjsnOiAnXFUwMDAxZDRjMCcsCisgICAgJ2xBYXJyOyc6ICdcdTIxZGEnLAorICAgICdMYWN1dGU7JzogJ1x1MDEzOScsCisgICAgJ2xhY3V0ZTsnOiAnXHUwMTNhJywKKyAgICAnbGFlbXB0eXY7JzogJ1x1MjliNCcsCisgICAgJ2xhZ3JhbjsnOiAnXHUyMTEyJywKKyAgICAnTGFtYmRhOyc6ICdcdTAzOWInLAorICAgICdsYW1iZGE7JzogJ1x1MDNiYicsCisgICAgJ0xhbmc7JzogJ1x1MjdlYScsCisgICAgJ2xhbmc7JzogJ1x1MjdlOCcsCisgICAgJ2xhbmdkOyc6ICdcdTI5OTEnLAorICAgICdsYW5nbGU7JzogJ1x1MjdlOCcsCisgICAgJ2xhcDsnOiAnXHUyYTg1JywKKyAgICAnTGFwbGFjZXRyZjsnOiAnXHUyMTEyJywKKyAgICAnbGFxdW8nOiAnXHhhYicsCisgICAgJ2xhcXVvOyc6ICdceGFiJywKKyAgICAnTGFycjsnOiAnXHUyMTllJywKKyAgICAnbEFycjsnOiAnXHUyMWQwJywKKyAgICAnbGFycjsnOiAnXHUyMTkwJywKKyAgICAnbGFycmI7JzogJ1x1MjFlNCcsCisgICAgJ2xhcnJiZnM7JzogJ1x1MjkxZicsCisgICAgJ2xhcnJmczsnOiAnXHUyOTFkJywKKyAgICAnbGFycmhrOyc6ICdcdTIxYTknLAorICAgICdsYXJybHA7JzogJ1x1MjFhYicsCisgICAgJ2xhcnJwbDsnOiAnXHUyOTM5JywKKyAgICAnbGFycnNpbTsnOiAnXHUyOTczJywKKyAgICAnbGFycnRsOyc6ICdcdTIxYTInLAorICAgICdsYXQ7JzogJ1x1MmFhYicsCisgICAgJ2xBdGFpbDsnOiAnXHUyOTFiJywKKyAgICAnbGF0YWlsOyc6ICdcdTI5MTknLAorICAgICdsYXRlOyc6ICdcdTJhYWQnLAorICAgICdsYXRlczsnOiAnXHUyYWFkXHVmZTAwJywKKyAgICAnbEJhcnI7JzogJ1x1MjkwZScsCisgICAgJ2xiYXJyOyc6ICdcdTI5MGMnLAorICAgICdsYmJyazsnOiAnXHUyNzcyJywKKyAgICAnbGJyYWNlOyc6ICd7JywKKyAgICAnbGJyYWNrOyc6ICdbJywKKyAgICAnbGJya2U7JzogJ1x1Mjk4YicsCisgICAgJ2xicmtzbGQ7JzogJ1x1Mjk4ZicsCisgICAgJ2xicmtzbHU7JzogJ1x1Mjk4ZCcsCisgICAgJ0xjYXJvbjsnOiAnXHUwMTNkJywKKyAgICAnbGNhcm9uOyc6ICdcdTAxM2UnLAorICAgICdMY2VkaWw7JzogJ1x1MDEzYicsCisgICAgJ2xjZWRpbDsnOiAnXHUwMTNjJywKKyAgICAnbGNlaWw7JzogJ1x1MjMwOCcsCisgICAgJ2xjdWI7JzogJ3snLAorICAgICdMY3k7JzogJ1x1MDQxYicsCisgICAgJ2xjeTsnOiAnXHUwNDNiJywKKyAgICAnbGRjYTsnOiAnXHUyOTM2JywKKyAgICAnbGRxdW87JzogJ1x1MjAxYycsCisgICAgJ2xkcXVvcjsnOiAnXHUyMDFlJywKKyAgICAnbGRyZGhhcjsnOiAnXHUyOTY3JywKKyAgICAnbGRydXNoYXI7JzogJ1x1Mjk0YicsCisgICAgJ2xkc2g7JzogJ1x1MjFiMicsCisgICAgJ2xFOyc6ICdcdTIyNjYnLAorICAgICdsZTsnOiAnXHUyMjY0JywKKyAgICAnTGVmdEFuZ2xlQnJhY2tldDsnOiAnXHUyN2U4JywKKyAgICAnTGVmdEFycm93Oyc6ICdcdTIxOTAnLAorICAgICdMZWZ0YXJyb3c7JzogJ1x1MjFkMCcsCisgICAgJ2xlZnRhcnJvdzsnOiAnXHUyMTkwJywKKyAgICAnTGVmdEFycm93QmFyOyc6ICdcdTIxZTQnLAorICAgICdMZWZ0QXJyb3dSaWdodEFycm93Oyc6ICdcdTIxYzYnLAorICAgICdsZWZ0YXJyb3d0YWlsOyc6ICdcdTIxYTInLAorICAgICdMZWZ0Q2VpbGluZzsnOiAnXHUyMzA4JywKKyAgICAnTGVmdERvdWJsZUJyYWNrZXQ7JzogJ1x1MjdlNicsCisgICAgJ0xlZnREb3duVGVlVmVjdG9yOyc6ICdcdTI5NjEnLAorICAgICdMZWZ0RG93blZlY3RvcjsnOiAnXHUyMWMzJywKKyAgICAnTGVmdERvd25WZWN0b3JCYXI7JzogJ1x1Mjk1OScsCisgICAgJ0xlZnRGbG9vcjsnOiAnXHUyMzBhJywKKyAgICAnbGVmdGhhcnBvb25kb3duOyc6ICdcdTIxYmQnLAorICAgICdsZWZ0aGFycG9vbnVwOyc6ICdcdTIxYmMnLAorICAgICdsZWZ0bGVmdGFycm93czsnOiAnXHUyMWM3JywKKyAgICAnTGVmdFJpZ2h0QXJyb3c7JzogJ1x1MjE5NCcsCisgICAgJ0xlZnRyaWdodGFycm93Oyc6ICdcdTIxZDQnLAorICAgICdsZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMTk0JywKKyAgICAnbGVmdHJpZ2h0YXJyb3dzOyc6ICdcdTIxYzYnLAorICAgICdsZWZ0cmlnaHRoYXJwb29uczsnOiAnXHUyMWNiJywKKyAgICAnbGVmdHJpZ2h0c3F1aWdhcnJvdzsnOiAnXHUyMWFkJywKKyAgICAnTGVmdFJpZ2h0VmVjdG9yOyc6ICdcdTI5NGUnLAorICAgICdMZWZ0VGVlOyc6ICdcdTIyYTMnLAorICAgICdMZWZ0VGVlQXJyb3c7JzogJ1x1MjFhNCcsCisgICAgJ0xlZnRUZWVWZWN0b3I7JzogJ1x1Mjk1YScsCisgICAgJ2xlZnR0aHJlZXRpbWVzOyc6ICdcdTIyY2InLAorICAgICdMZWZ0VHJpYW5nbGU7JzogJ1x1MjJiMicsCisgICAgJ0xlZnRUcmlhbmdsZUJhcjsnOiAnXHUyOWNmJywKKyAgICAnTGVmdFRyaWFuZ2xlRXF1YWw7JzogJ1x1MjJiNCcsCisgICAgJ0xlZnRVcERvd25WZWN0b3I7JzogJ1x1Mjk1MScsCisgICAgJ0xlZnRVcFRlZVZlY3RvcjsnOiAnXHUyOTYwJywKKyAgICAnTGVmdFVwVmVjdG9yOyc6ICdcdTIxYmYnLAorICAgICdMZWZ0VXBWZWN0b3JCYXI7JzogJ1x1Mjk1OCcsCisgICAgJ0xlZnRWZWN0b3I7JzogJ1x1MjFiYycsCisgICAgJ0xlZnRWZWN0b3JCYXI7JzogJ1x1Mjk1MicsCisgICAgJ2xFZzsnOiAnXHUyYThiJywKKyAgICAnbGVnOyc6ICdcdTIyZGEnLAorICAgICdsZXE7JzogJ1x1MjI2NCcsCisgICAgJ2xlcXE7JzogJ1x1MjI2NicsCisgICAgJ2xlcXNsYW50Oyc6ICdcdTJhN2QnLAorICAgICdsZXM7JzogJ1x1MmE3ZCcsCisgICAgJ2xlc2NjOyc6ICdcdTJhYTgnLAorICAgICdsZXNkb3Q7JzogJ1x1MmE3ZicsCisgICAgJ2xlc2RvdG87JzogJ1x1MmE4MScsCisgICAgJ2xlc2RvdG9yOyc6ICdcdTJhODMnLAorICAgICdsZXNnOyc6ICdcdTIyZGFcdWZlMDAnLAorICAgICdsZXNnZXM7JzogJ1x1MmE5MycsCisgICAgJ2xlc3NhcHByb3g7JzogJ1x1MmE4NScsCisgICAgJ2xlc3Nkb3Q7JzogJ1x1MjJkNicsCisgICAgJ2xlc3NlcWd0cjsnOiAnXHUyMmRhJywKKyAgICAnbGVzc2VxcWd0cjsnOiAnXHUyYThiJywKKyAgICAnTGVzc0VxdWFsR3JlYXRlcjsnOiAnXHUyMmRhJywKKyAgICAnTGVzc0Z1bGxFcXVhbDsnOiAnXHUyMjY2JywKKyAgICAnTGVzc0dyZWF0ZXI7JzogJ1x1MjI3NicsCisgICAgJ2xlc3NndHI7JzogJ1x1MjI3NicsCisgICAgJ0xlc3NMZXNzOyc6ICdcdTJhYTEnLAorICAgICdsZXNzc2ltOyc6ICdcdTIyNzInLAorICAgICdMZXNzU2xhbnRFcXVhbDsnOiAnXHUyYTdkJywKKyAgICAnTGVzc1RpbGRlOyc6ICdcdTIyNzInLAorICAgICdsZmlzaHQ7JzogJ1x1Mjk3YycsCisgICAgJ2xmbG9vcjsnOiAnXHUyMzBhJywKKyAgICAnTGZyOyc6ICdcVTAwMDFkNTBmJywKKyAgICAnbGZyOyc6ICdcVTAwMDFkNTI5JywKKyAgICAnbGc7JzogJ1x1MjI3NicsCisgICAgJ2xnRTsnOiAnXHUyYTkxJywKKyAgICAnbEhhcjsnOiAnXHUyOTYyJywKKyAgICAnbGhhcmQ7JzogJ1x1MjFiZCcsCisgICAgJ2xoYXJ1Oyc6ICdcdTIxYmMnLAorICAgICdsaGFydWw7JzogJ1x1Mjk2YScsCisgICAgJ2xoYmxrOyc6ICdcdTI1ODQnLAorICAgICdMSmN5Oyc6ICdcdTA0MDknLAorICAgICdsamN5Oyc6ICdcdTA0NTknLAorICAgICdMbDsnOiAnXHUyMmQ4JywKKyAgICAnbGw7JzogJ1x1MjI2YScsCisgICAgJ2xsYXJyOyc6ICdcdTIxYzcnLAorICAgICdsbGNvcm5lcjsnOiAnXHUyMzFlJywKKyAgICAnTGxlZnRhcnJvdzsnOiAnXHUyMWRhJywKKyAgICAnbGxoYXJkOyc6ICdcdTI5NmInLAorICAgICdsbHRyaTsnOiAnXHUyNWZhJywKKyAgICAnTG1pZG90Oyc6ICdcdTAxM2YnLAorICAgICdsbWlkb3Q7JzogJ1x1MDE0MCcsCisgICAgJ2xtb3VzdDsnOiAnXHUyM2IwJywKKyAgICAnbG1vdXN0YWNoZTsnOiAnXHUyM2IwJywKKyAgICAnbG5hcDsnOiAnXHUyYTg5JywKKyAgICAnbG5hcHByb3g7JzogJ1x1MmE4OScsCisgICAgJ2xuRTsnOiAnXHUyMjY4JywKKyAgICAnbG5lOyc6ICdcdTJhODcnLAorICAgICdsbmVxOyc6ICdcdTJhODcnLAorICAgICdsbmVxcTsnOiAnXHUyMjY4JywKKyAgICAnbG5zaW07JzogJ1x1MjJlNicsCisgICAgJ2xvYW5nOyc6ICdcdTI3ZWMnLAorICAgICdsb2FycjsnOiAnXHUyMWZkJywKKyAgICAnbG9icms7JzogJ1x1MjdlNicsCisgICAgJ0xvbmdMZWZ0QXJyb3c7JzogJ1x1MjdmNScsCisgICAgJ0xvbmdsZWZ0YXJyb3c7JzogJ1x1MjdmOCcsCisgICAgJ2xvbmdsZWZ0YXJyb3c7JzogJ1x1MjdmNScsCisgICAgJ0xvbmdMZWZ0UmlnaHRBcnJvdzsnOiAnXHUyN2Y3JywKKyAgICAnTG9uZ2xlZnRyaWdodGFycm93Oyc6ICdcdTI3ZmEnLAorICAgICdsb25nbGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjdmNycsCisgICAgJ2xvbmdtYXBzdG87JzogJ1x1MjdmYycsCisgICAgJ0xvbmdSaWdodEFycm93Oyc6ICdcdTI3ZjYnLAorICAgICdMb25ncmlnaHRhcnJvdzsnOiAnXHUyN2Y5JywKKyAgICAnbG9uZ3JpZ2h0YXJyb3c7JzogJ1x1MjdmNicsCisgICAgJ2xvb3BhcnJvd2xlZnQ7JzogJ1x1MjFhYicsCisgICAgJ2xvb3BhcnJvd3JpZ2h0Oyc6ICdcdTIxYWMnLAorICAgICdsb3BhcjsnOiAnXHUyOTg1JywKKyAgICAnTG9wZjsnOiAnXFUwMDAxZDU0MycsCisgICAgJ2xvcGY7JzogJ1xVMDAwMWQ1NWQnLAorICAgICdsb3BsdXM7JzogJ1x1MmEyZCcsCisgICAgJ2xvdGltZXM7JzogJ1x1MmEzNCcsCisgICAgJ2xvd2FzdDsnOiAnXHUyMjE3JywKKyAgICAnbG93YmFyOyc6ICdfJywKKyAgICAnTG93ZXJMZWZ0QXJyb3c7JzogJ1x1MjE5OScsCisgICAgJ0xvd2VyUmlnaHRBcnJvdzsnOiAnXHUyMTk4JywKKyAgICAnbG96Oyc6ICdcdTI1Y2EnLAorICAgICdsb3plbmdlOyc6ICdcdTI1Y2EnLAorICAgICdsb3pmOyc6ICdcdTI5ZWInLAorICAgICdscGFyOyc6ICcoJywKKyAgICAnbHBhcmx0Oyc6ICdcdTI5OTMnLAorICAgICdscmFycjsnOiAnXHUyMWM2JywKKyAgICAnbHJjb3JuZXI7JzogJ1x1MjMxZicsCisgICAgJ2xyaGFyOyc6ICdcdTIxY2InLAorICAgICdscmhhcmQ7JzogJ1x1Mjk2ZCcsCisgICAgJ2xybTsnOiAnXHUyMDBlJywKKyAgICAnbHJ0cmk7JzogJ1x1MjJiZicsCisgICAgJ2xzYXF1bzsnOiAnXHUyMDM5JywKKyAgICAnTHNjcjsnOiAnXHUyMTEyJywKKyAgICAnbHNjcjsnOiAnXFUwMDAxZDRjMScsCisgICAgJ0xzaDsnOiAnXHUyMWIwJywKKyAgICAnbHNoOyc6ICdcdTIxYjAnLAorICAgICdsc2ltOyc6ICdcdTIyNzInLAorICAgICdsc2ltZTsnOiAnXHUyYThkJywKKyAgICAnbHNpbWc7JzogJ1x1MmE4ZicsCisgICAgJ2xzcWI7JzogJ1snLAorICAgICdsc3F1bzsnOiAnXHUyMDE4JywKKyAgICAnbHNxdW9yOyc6ICdcdTIwMWEnLAorICAgICdMc3Ryb2s7JzogJ1x1MDE0MScsCisgICAgJ2xzdHJvazsnOiAnXHUwMTQyJywKKyAgICAnTFQnOiAnPCcsCisgICAgJ2x0JzogJzwnLAorICAgICdMVDsnOiAnPCcsCisgICAgJ0x0Oyc6ICdcdTIyNmEnLAorICAgICdsdDsnOiAnPCcsCisgICAgJ2x0Y2M7JzogJ1x1MmFhNicsCisgICAgJ2x0Y2lyOyc6ICdcdTJhNzknLAorICAgICdsdGRvdDsnOiAnXHUyMmQ2JywKKyAgICAnbHRocmVlOyc6ICdcdTIyY2InLAorICAgICdsdGltZXM7JzogJ1x1MjJjOScsCisgICAgJ2x0bGFycjsnOiAnXHUyOTc2JywKKyAgICAnbHRxdWVzdDsnOiAnXHUyYTdiJywKKyAgICAnbHRyaTsnOiAnXHUyNWMzJywKKyAgICAnbHRyaWU7JzogJ1x1MjJiNCcsCisgICAgJ2x0cmlmOyc6ICdcdTI1YzInLAorICAgICdsdHJQYXI7JzogJ1x1Mjk5NicsCisgICAgJ2x1cmRzaGFyOyc6ICdcdTI5NGEnLAorICAgICdsdXJ1aGFyOyc6ICdcdTI5NjYnLAorICAgICdsdmVydG5lcXE7JzogJ1x1MjI2OFx1ZmUwMCcsCisgICAgJ2x2bkU7JzogJ1x1MjI2OFx1ZmUwMCcsCisgICAgJ21hY3InOiAnXHhhZicsCisgICAgJ21hY3I7JzogJ1x4YWYnLAorICAgICdtYWxlOyc6ICdcdTI2NDInLAorICAgICdtYWx0Oyc6ICdcdTI3MjAnLAorICAgICdtYWx0ZXNlOyc6ICdcdTI3MjAnLAorICAgICdNYXA7JzogJ1x1MjkwNScsCisgICAgJ21hcDsnOiAnXHUyMWE2JywKKyAgICAnbWFwc3RvOyc6ICdcdTIxYTYnLAorICAgICdtYXBzdG9kb3duOyc6ICdcdTIxYTcnLAorICAgICdtYXBzdG9sZWZ0Oyc6ICdcdTIxYTQnLAorICAgICdtYXBzdG91cDsnOiAnXHUyMWE1JywKKyAgICAnbWFya2VyOyc6ICdcdTI1YWUnLAorICAgICdtY29tbWE7JzogJ1x1MmEyOScsCisgICAgJ01jeTsnOiAnXHUwNDFjJywKKyAgICAnbWN5Oyc6ICdcdTA0M2MnLAorICAgICdtZGFzaDsnOiAnXHUyMDE0JywKKyAgICAnbUREb3Q7JzogJ1x1MjIzYScsCisgICAgJ21lYXN1cmVkYW5nbGU7JzogJ1x1MjIyMScsCisgICAgJ01lZGl1bVNwYWNlOyc6ICdcdTIwNWYnLAorICAgICdNZWxsaW50cmY7JzogJ1x1MjEzMycsCisgICAgJ01mcjsnOiAnXFUwMDAxZDUxMCcsCisgICAgJ21mcjsnOiAnXFUwMDAxZDUyYScsCisgICAgJ21obzsnOiAnXHUyMTI3JywKKyAgICAnbWljcm8nOiAnXHhiNScsCisgICAgJ21pY3JvOyc6ICdceGI1JywKKyAgICAnbWlkOyc6ICdcdTIyMjMnLAorICAgICdtaWRhc3Q7JzogJyonLAorICAgICdtaWRjaXI7JzogJ1x1MmFmMCcsCisgICAgJ21pZGRvdCc6ICdceGI3JywKKyAgICAnbWlkZG90Oyc6ICdceGI3JywKKyAgICAnbWludXM7JzogJ1x1MjIxMicsCisgICAgJ21pbnVzYjsnOiAnXHUyMjlmJywKKyAgICAnbWludXNkOyc6ICdcdTIyMzgnLAorICAgICdtaW51c2R1Oyc6ICdcdTJhMmEnLAorICAgICdNaW51c1BsdXM7JzogJ1x1MjIxMycsCisgICAgJ21sY3A7JzogJ1x1MmFkYicsCisgICAgJ21sZHI7JzogJ1x1MjAyNicsCisgICAgJ21ucGx1czsnOiAnXHUyMjEzJywKKyAgICAnbW9kZWxzOyc6ICdcdTIyYTcnLAorICAgICdNb3BmOyc6ICdcVTAwMDFkNTQ0JywKKyAgICAnbW9wZjsnOiAnXFUwMDAxZDU1ZScsCisgICAgJ21wOyc6ICdcdTIyMTMnLAorICAgICdNc2NyOyc6ICdcdTIxMzMnLAorICAgICdtc2NyOyc6ICdcVTAwMDFkNGMyJywKKyAgICAnbXN0cG9zOyc6ICdcdTIyM2UnLAorICAgICdNdTsnOiAnXHUwMzljJywKKyAgICAnbXU7JzogJ1x1MDNiYycsCisgICAgJ211bHRpbWFwOyc6ICdcdTIyYjgnLAorICAgICdtdW1hcDsnOiAnXHUyMmI4JywKKyAgICAnbmFibGE7JzogJ1x1MjIwNycsCisgICAgJ05hY3V0ZTsnOiAnXHUwMTQzJywKKyAgICAnbmFjdXRlOyc6ICdcdTAxNDQnLAorICAgICduYW5nOyc6ICdcdTIyMjBcdTIwZDInLAorICAgICduYXA7JzogJ1x1MjI0OScsCisgICAgJ25hcEU7JzogJ1x1MmE3MFx1MDMzOCcsCisgICAgJ25hcGlkOyc6ICdcdTIyNGJcdTAzMzgnLAorICAgICduYXBvczsnOiAnXHUwMTQ5JywKKyAgICAnbmFwcHJveDsnOiAnXHUyMjQ5JywKKyAgICAnbmF0dXI7JzogJ1x1MjY2ZScsCisgICAgJ25hdHVyYWw7JzogJ1x1MjY2ZScsCisgICAgJ25hdHVyYWxzOyc6ICdcdTIxMTUnLAorICAgICduYnNwJzogJ1x4YTAnLAorICAgICduYnNwOyc6ICdceGEwJywKKyAgICAnbmJ1bXA7JzogJ1x1MjI0ZVx1MDMzOCcsCisgICAgJ25idW1wZTsnOiAnXHUyMjRmXHUwMzM4JywKKyAgICAnbmNhcDsnOiAnXHUyYTQzJywKKyAgICAnTmNhcm9uOyc6ICdcdTAxNDcnLAorICAgICduY2Fyb247JzogJ1x1MDE0OCcsCisgICAgJ05jZWRpbDsnOiAnXHUwMTQ1JywKKyAgICAnbmNlZGlsOyc6ICdcdTAxNDYnLAorICAgICduY29uZzsnOiAnXHUyMjQ3JywKKyAgICAnbmNvbmdkb3Q7JzogJ1x1MmE2ZFx1MDMzOCcsCisgICAgJ25jdXA7JzogJ1x1MmE0MicsCisgICAgJ05jeTsnOiAnXHUwNDFkJywKKyAgICAnbmN5Oyc6ICdcdTA0M2QnLAorICAgICduZGFzaDsnOiAnXHUyMDEzJywKKyAgICAnbmU7JzogJ1x1MjI2MCcsCisgICAgJ25lYXJoazsnOiAnXHUyOTI0JywKKyAgICAnbmVBcnI7JzogJ1x1MjFkNycsCisgICAgJ25lYXJyOyc6ICdcdTIxOTcnLAorICAgICduZWFycm93Oyc6ICdcdTIxOTcnLAorICAgICduZWRvdDsnOiAnXHUyMjUwXHUwMzM4JywKKyAgICAnTmVnYXRpdmVNZWRpdW1TcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnTmVnYXRpdmVUaGlja1NwYWNlOyc6ICdcdTIwMGInLAorICAgICdOZWdhdGl2ZVRoaW5TcGFjZTsnOiAnXHUyMDBiJywKKyAgICAnTmVnYXRpdmVWZXJ5VGhpblNwYWNlOyc6ICdcdTIwMGInLAorICAgICduZXF1aXY7JzogJ1x1MjI2MicsCisgICAgJ25lc2VhcjsnOiAnXHUyOTI4JywKKyAgICAnbmVzaW07JzogJ1x1MjI0Mlx1MDMzOCcsCisgICAgJ05lc3RlZEdyZWF0ZXJHcmVhdGVyOyc6ICdcdTIyNmInLAorICAgICdOZXN0ZWRMZXNzTGVzczsnOiAnXHUyMjZhJywKKyAgICAnTmV3TGluZTsnOiAnXG4nLAorICAgICduZXhpc3Q7JzogJ1x1MjIwNCcsCisgICAgJ25leGlzdHM7JzogJ1x1MjIwNCcsCisgICAgJ05mcjsnOiAnXFUwMDAxZDUxMScsCisgICAgJ25mcjsnOiAnXFUwMDAxZDUyYicsCisgICAgJ25nRTsnOiAnXHUyMjY3XHUwMzM4JywKKyAgICAnbmdlOyc6ICdcdTIyNzEnLAorICAgICduZ2VxOyc6ICdcdTIyNzEnLAorICAgICduZ2VxcTsnOiAnXHUyMjY3XHUwMzM4JywKKyAgICAnbmdlcXNsYW50Oyc6ICdcdTJhN2VcdTAzMzgnLAorICAgICduZ2VzOyc6ICdcdTJhN2VcdTAzMzgnLAorICAgICduR2c7JzogJ1x1MjJkOVx1MDMzOCcsCisgICAgJ25nc2ltOyc6ICdcdTIyNzUnLAorICAgICduR3Q7JzogJ1x1MjI2Ylx1MjBkMicsCisgICAgJ25ndDsnOiAnXHUyMjZmJywKKyAgICAnbmd0cjsnOiAnXHUyMjZmJywKKyAgICAnbkd0djsnOiAnXHUyMjZiXHUwMzM4JywKKyAgICAnbmhBcnI7JzogJ1x1MjFjZScsCisgICAgJ25oYXJyOyc6ICdcdTIxYWUnLAorICAgICduaHBhcjsnOiAnXHUyYWYyJywKKyAgICAnbmk7JzogJ1x1MjIwYicsCisgICAgJ25pczsnOiAnXHUyMmZjJywKKyAgICAnbmlzZDsnOiAnXHUyMmZhJywKKyAgICAnbml2Oyc6ICdcdTIyMGInLAorICAgICdOSmN5Oyc6ICdcdTA0MGEnLAorICAgICduamN5Oyc6ICdcdTA0NWEnLAorICAgICdubEFycjsnOiAnXHUyMWNkJywKKyAgICAnbmxhcnI7JzogJ1x1MjE5YScsCisgICAgJ25sZHI7JzogJ1x1MjAyNScsCisgICAgJ25sRTsnOiAnXHUyMjY2XHUwMzM4JywKKyAgICAnbmxlOyc6ICdcdTIyNzAnLAorICAgICduTGVmdGFycm93Oyc6ICdcdTIxY2QnLAorICAgICdubGVmdGFycm93Oyc6ICdcdTIxOWEnLAorICAgICduTGVmdHJpZ2h0YXJyb3c7JzogJ1x1MjFjZScsCisgICAgJ25sZWZ0cmlnaHRhcnJvdzsnOiAnXHUyMWFlJywKKyAgICAnbmxlcTsnOiAnXHUyMjcwJywKKyAgICAnbmxlcXE7JzogJ1x1MjI2Nlx1MDMzOCcsCisgICAgJ25sZXFzbGFudDsnOiAnXHUyYTdkXHUwMzM4JywKKyAgICAnbmxlczsnOiAnXHUyYTdkXHUwMzM4JywKKyAgICAnbmxlc3M7JzogJ1x1MjI2ZScsCisgICAgJ25MbDsnOiAnXHUyMmQ4XHUwMzM4JywKKyAgICAnbmxzaW07JzogJ1x1MjI3NCcsCisgICAgJ25MdDsnOiAnXHUyMjZhXHUyMGQyJywKKyAgICAnbmx0Oyc6ICdcdTIyNmUnLAorICAgICdubHRyaTsnOiAnXHUyMmVhJywKKyAgICAnbmx0cmllOyc6ICdcdTIyZWMnLAorICAgICduTHR2Oyc6ICdcdTIyNmFcdTAzMzgnLAorICAgICdubWlkOyc6ICdcdTIyMjQnLAorICAgICdOb0JyZWFrOyc6ICdcdTIwNjAnLAorICAgICdOb25CcmVha2luZ1NwYWNlOyc6ICdceGEwJywKKyAgICAnTm9wZjsnOiAnXHUyMTE1JywKKyAgICAnbm9wZjsnOiAnXFUwMDAxZDU1ZicsCisgICAgJ25vdCc6ICdceGFjJywKKyAgICAnTm90Oyc6ICdcdTJhZWMnLAorICAgICdub3Q7JzogJ1x4YWMnLAorICAgICdOb3RDb25ncnVlbnQ7JzogJ1x1MjI2MicsCisgICAgJ05vdEN1cENhcDsnOiAnXHUyMjZkJywKKyAgICAnTm90RG91YmxlVmVydGljYWxCYXI7JzogJ1x1MjIyNicsCisgICAgJ05vdEVsZW1lbnQ7JzogJ1x1MjIwOScsCisgICAgJ05vdEVxdWFsOyc6ICdcdTIyNjAnLAorICAgICdOb3RFcXVhbFRpbGRlOyc6ICdcdTIyNDJcdTAzMzgnLAorICAgICdOb3RFeGlzdHM7JzogJ1x1MjIwNCcsCisgICAgJ05vdEdyZWF0ZXI7JzogJ1x1MjI2ZicsCisgICAgJ05vdEdyZWF0ZXJFcXVhbDsnOiAnXHUyMjcxJywKKyAgICAnTm90R3JlYXRlckZ1bGxFcXVhbDsnOiAnXHUyMjY3XHUwMzM4JywKKyAgICAnTm90R3JlYXRlckdyZWF0ZXI7JzogJ1x1MjI2Ylx1MDMzOCcsCisgICAgJ05vdEdyZWF0ZXJMZXNzOyc6ICdcdTIyNzknLAorICAgICdOb3RHcmVhdGVyU2xhbnRFcXVhbDsnOiAnXHUyYTdlXHUwMzM4JywKKyAgICAnTm90R3JlYXRlclRpbGRlOyc6ICdcdTIyNzUnLAorICAgICdOb3RIdW1wRG93bkh1bXA7JzogJ1x1MjI0ZVx1MDMzOCcsCisgICAgJ05vdEh1bXBFcXVhbDsnOiAnXHUyMjRmXHUwMzM4JywKKyAgICAnbm90aW47JzogJ1x1MjIwOScsCisgICAgJ25vdGluZG90Oyc6ICdcdTIyZjVcdTAzMzgnLAorICAgICdub3RpbkU7JzogJ1x1MjJmOVx1MDMzOCcsCisgICAgJ25vdGludmE7JzogJ1x1MjIwOScsCisgICAgJ25vdGludmI7JzogJ1x1MjJmNycsCisgICAgJ25vdGludmM7JzogJ1x1MjJmNicsCisgICAgJ05vdExlZnRUcmlhbmdsZTsnOiAnXHUyMmVhJywKKyAgICAnTm90TGVmdFRyaWFuZ2xlQmFyOyc6ICdcdTI5Y2ZcdTAzMzgnLAorICAgICdOb3RMZWZ0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmVjJywKKyAgICAnTm90TGVzczsnOiAnXHUyMjZlJywKKyAgICAnTm90TGVzc0VxdWFsOyc6ICdcdTIyNzAnLAorICAgICdOb3RMZXNzR3JlYXRlcjsnOiAnXHUyMjc4JywKKyAgICAnTm90TGVzc0xlc3M7JzogJ1x1MjI2YVx1MDMzOCcsCisgICAgJ05vdExlc3NTbGFudEVxdWFsOyc6ICdcdTJhN2RcdTAzMzgnLAorICAgICdOb3RMZXNzVGlsZGU7JzogJ1x1MjI3NCcsCisgICAgJ05vdE5lc3RlZEdyZWF0ZXJHcmVhdGVyOyc6ICdcdTJhYTJcdTAzMzgnLAorICAgICdOb3ROZXN0ZWRMZXNzTGVzczsnOiAnXHUyYWExXHUwMzM4JywKKyAgICAnbm90bmk7JzogJ1x1MjIwYycsCisgICAgJ25vdG5pdmE7JzogJ1x1MjIwYycsCisgICAgJ25vdG5pdmI7JzogJ1x1MjJmZScsCisgICAgJ25vdG5pdmM7JzogJ1x1MjJmZCcsCisgICAgJ05vdFByZWNlZGVzOyc6ICdcdTIyODAnLAorICAgICdOb3RQcmVjZWRlc0VxdWFsOyc6ICdcdTJhYWZcdTAzMzgnLAorICAgICdOb3RQcmVjZWRlc1NsYW50RXF1YWw7JzogJ1x1MjJlMCcsCisgICAgJ05vdFJldmVyc2VFbGVtZW50Oyc6ICdcdTIyMGMnLAorICAgICdOb3RSaWdodFRyaWFuZ2xlOyc6ICdcdTIyZWInLAorICAgICdOb3RSaWdodFRyaWFuZ2xlQmFyOyc6ICdcdTI5ZDBcdTAzMzgnLAorICAgICdOb3RSaWdodFRyaWFuZ2xlRXF1YWw7JzogJ1x1MjJlZCcsCisgICAgJ05vdFNxdWFyZVN1YnNldDsnOiAnXHUyMjhmXHUwMzM4JywKKyAgICAnTm90U3F1YXJlU3Vic2V0RXF1YWw7JzogJ1x1MjJlMicsCisgICAgJ05vdFNxdWFyZVN1cGVyc2V0Oyc6ICdcdTIyOTBcdTAzMzgnLAorICAgICdOb3RTcXVhcmVTdXBlcnNldEVxdWFsOyc6ICdcdTIyZTMnLAorICAgICdOb3RTdWJzZXQ7JzogJ1x1MjI4Mlx1MjBkMicsCisgICAgJ05vdFN1YnNldEVxdWFsOyc6ICdcdTIyODgnLAorICAgICdOb3RTdWNjZWVkczsnOiAnXHUyMjgxJywKKyAgICAnTm90U3VjY2VlZHNFcXVhbDsnOiAnXHUyYWIwXHUwMzM4JywKKyAgICAnTm90U3VjY2VlZHNTbGFudEVxdWFsOyc6ICdcdTIyZTEnLAorICAgICdOb3RTdWNjZWVkc1RpbGRlOyc6ICdcdTIyN2ZcdTAzMzgnLAorICAgICdOb3RTdXBlcnNldDsnOiAnXHUyMjgzXHUyMGQyJywKKyAgICAnTm90U3VwZXJzZXRFcXVhbDsnOiAnXHUyMjg5JywKKyAgICAnTm90VGlsZGU7JzogJ1x1MjI0MScsCisgICAgJ05vdFRpbGRlRXF1YWw7JzogJ1x1MjI0NCcsCisgICAgJ05vdFRpbGRlRnVsbEVxdWFsOyc6ICdcdTIyNDcnLAorICAgICdOb3RUaWxkZVRpbGRlOyc6ICdcdTIyNDknLAorICAgICdOb3RWZXJ0aWNhbEJhcjsnOiAnXHUyMjI0JywKKyAgICAnbnBhcjsnOiAnXHUyMjI2JywKKyAgICAnbnBhcmFsbGVsOyc6ICdcdTIyMjYnLAorICAgICducGFyc2w7JzogJ1x1MmFmZFx1MjBlNScsCisgICAgJ25wYXJ0Oyc6ICdcdTIyMDJcdTAzMzgnLAorICAgICducG9saW50Oyc6ICdcdTJhMTQnLAorICAgICducHI7JzogJ1x1MjI4MCcsCisgICAgJ25wcmN1ZTsnOiAnXHUyMmUwJywKKyAgICAnbnByZTsnOiAnXHUyYWFmXHUwMzM4JywKKyAgICAnbnByZWM7JzogJ1x1MjI4MCcsCisgICAgJ25wcmVjZXE7JzogJ1x1MmFhZlx1MDMzOCcsCisgICAgJ25yQXJyOyc6ICdcdTIxY2YnLAorICAgICducmFycjsnOiAnXHUyMTliJywKKyAgICAnbnJhcnJjOyc6ICdcdTI5MzNcdTAzMzgnLAorICAgICducmFycnc7JzogJ1x1MjE5ZFx1MDMzOCcsCisgICAgJ25SaWdodGFycm93Oyc6ICdcdTIxY2YnLAorICAgICducmlnaHRhcnJvdzsnOiAnXHUyMTliJywKKyAgICAnbnJ0cmk7JzogJ1x1MjJlYicsCisgICAgJ25ydHJpZTsnOiAnXHUyMmVkJywKKyAgICAnbnNjOyc6ICdcdTIyODEnLAorICAgICduc2NjdWU7JzogJ1x1MjJlMScsCisgICAgJ25zY2U7JzogJ1x1MmFiMFx1MDMzOCcsCisgICAgJ05zY3I7JzogJ1xVMDAwMWQ0YTknLAorICAgICduc2NyOyc6ICdcVTAwMDFkNGMzJywKKyAgICAnbnNob3J0bWlkOyc6ICdcdTIyMjQnLAorICAgICduc2hvcnRwYXJhbGxlbDsnOiAnXHUyMjI2JywKKyAgICAnbnNpbTsnOiAnXHUyMjQxJywKKyAgICAnbnNpbWU7JzogJ1x1MjI0NCcsCisgICAgJ25zaW1lcTsnOiAnXHUyMjQ0JywKKyAgICAnbnNtaWQ7JzogJ1x1MjIyNCcsCisgICAgJ25zcGFyOyc6ICdcdTIyMjYnLAorICAgICduc3FzdWJlOyc6ICdcdTIyZTInLAorICAgICduc3FzdXBlOyc6ICdcdTIyZTMnLAorICAgICduc3ViOyc6ICdcdTIyODQnLAorICAgICduc3ViRTsnOiAnXHUyYWM1XHUwMzM4JywKKyAgICAnbnN1YmU7JzogJ1x1MjI4OCcsCisgICAgJ25zdWJzZXQ7JzogJ1x1MjI4Mlx1MjBkMicsCisgICAgJ25zdWJzZXRlcTsnOiAnXHUyMjg4JywKKyAgICAnbnN1YnNldGVxcTsnOiAnXHUyYWM1XHUwMzM4JywKKyAgICAnbnN1Y2M7JzogJ1x1MjI4MScsCisgICAgJ25zdWNjZXE7JzogJ1x1MmFiMFx1MDMzOCcsCisgICAgJ25zdXA7JzogJ1x1MjI4NScsCisgICAgJ25zdXBFOyc6ICdcdTJhYzZcdTAzMzgnLAorICAgICduc3VwZTsnOiAnXHUyMjg5JywKKyAgICAnbnN1cHNldDsnOiAnXHUyMjgzXHUyMGQyJywKKyAgICAnbnN1cHNldGVxOyc6ICdcdTIyODknLAorICAgICduc3Vwc2V0ZXFxOyc6ICdcdTJhYzZcdTAzMzgnLAorICAgICdudGdsOyc6ICdcdTIyNzknLAorICAgICdOdGlsZGUnOiAnXHhkMScsCisgICAgJ250aWxkZSc6ICdceGYxJywKKyAgICAnTnRpbGRlOyc6ICdceGQxJywKKyAgICAnbnRpbGRlOyc6ICdceGYxJywKKyAgICAnbnRsZzsnOiAnXHUyMjc4JywKKyAgICAnbnRyaWFuZ2xlbGVmdDsnOiAnXHUyMmVhJywKKyAgICAnbnRyaWFuZ2xlbGVmdGVxOyc6ICdcdTIyZWMnLAorICAgICdudHJpYW5nbGVyaWdodDsnOiAnXHUyMmViJywKKyAgICAnbnRyaWFuZ2xlcmlnaHRlcTsnOiAnXHUyMmVkJywKKyAgICAnTnU7JzogJ1x1MDM5ZCcsCisgICAgJ251Oyc6ICdcdTAzYmQnLAorICAgICdudW07JzogJyMnLAorICAgICdudW1lcm87JzogJ1x1MjExNicsCisgICAgJ251bXNwOyc6ICdcdTIwMDcnLAorICAgICdudmFwOyc6ICdcdTIyNGRcdTIwZDInLAorICAgICduVkRhc2g7JzogJ1x1MjJhZicsCisgICAgJ25WZGFzaDsnOiAnXHUyMmFlJywKKyAgICAnbnZEYXNoOyc6ICdcdTIyYWQnLAorICAgICdudmRhc2g7JzogJ1x1MjJhYycsCisgICAgJ252Z2U7JzogJ1x1MjI2NVx1MjBkMicsCisgICAgJ252Z3Q7JzogJz5cdTIwZDInLAorICAgICdudkhhcnI7JzogJ1x1MjkwNCcsCisgICAgJ252aW5maW47JzogJ1x1MjlkZScsCisgICAgJ252bEFycjsnOiAnXHUyOTAyJywKKyAgICAnbnZsZTsnOiAnXHUyMjY0XHUyMGQyJywKKyAgICAnbnZsdDsnOiAnPFx1MjBkMicsCisgICAgJ252bHRyaWU7JzogJ1x1MjJiNFx1MjBkMicsCisgICAgJ252ckFycjsnOiAnXHUyOTAzJywKKyAgICAnbnZydHJpZTsnOiAnXHUyMmI1XHUyMGQyJywKKyAgICAnbnZzaW07JzogJ1x1MjIzY1x1MjBkMicsCisgICAgJ253YXJoazsnOiAnXHUyOTIzJywKKyAgICAnbndBcnI7JzogJ1x1MjFkNicsCisgICAgJ253YXJyOyc6ICdcdTIxOTYnLAorICAgICdud2Fycm93Oyc6ICdcdTIxOTYnLAorICAgICdud25lYXI7JzogJ1x1MjkyNycsCisgICAgJ09hY3V0ZSc6ICdceGQzJywKKyAgICAnb2FjdXRlJzogJ1x4ZjMnLAorICAgICdPYWN1dGU7JzogJ1x4ZDMnLAorICAgICdvYWN1dGU7JzogJ1x4ZjMnLAorICAgICdvYXN0Oyc6ICdcdTIyOWInLAorICAgICdvY2lyOyc6ICdcdTIyOWEnLAorICAgICdPY2lyYyc6ICdceGQ0JywKKyAgICAnb2NpcmMnOiAnXHhmNCcsCisgICAgJ09jaXJjOyc6ICdceGQ0JywKKyAgICAnb2NpcmM7JzogJ1x4ZjQnLAorICAgICdPY3k7JzogJ1x1MDQxZScsCisgICAgJ29jeTsnOiAnXHUwNDNlJywKKyAgICAnb2Rhc2g7JzogJ1x1MjI5ZCcsCisgICAgJ09kYmxhYzsnOiAnXHUwMTUwJywKKyAgICAnb2RibGFjOyc6ICdcdTAxNTEnLAorICAgICdvZGl2Oyc6ICdcdTJhMzgnLAorICAgICdvZG90Oyc6ICdcdTIyOTknLAorICAgICdvZHNvbGQ7JzogJ1x1MjliYycsCisgICAgJ09FbGlnOyc6ICdcdTAxNTInLAorICAgICdvZWxpZzsnOiAnXHUwMTUzJywKKyAgICAnb2ZjaXI7JzogJ1x1MjliZicsCisgICAgJ09mcjsnOiAnXFUwMDAxZDUxMicsCisgICAgJ29mcjsnOiAnXFUwMDAxZDUyYycsCisgICAgJ29nb247JzogJ1x1MDJkYicsCisgICAgJ09ncmF2ZSc6ICdceGQyJywKKyAgICAnb2dyYXZlJzogJ1x4ZjInLAorICAgICdPZ3JhdmU7JzogJ1x4ZDInLAorICAgICdvZ3JhdmU7JzogJ1x4ZjInLAorICAgICdvZ3Q7JzogJ1x1MjljMScsCisgICAgJ29oYmFyOyc6ICdcdTI5YjUnLAorICAgICdvaG07JzogJ1x1MDNhOScsCisgICAgJ29pbnQ7JzogJ1x1MjIyZScsCisgICAgJ29sYXJyOyc6ICdcdTIxYmEnLAorICAgICdvbGNpcjsnOiAnXHUyOWJlJywKKyAgICAnb2xjcm9zczsnOiAnXHUyOWJiJywKKyAgICAnb2xpbmU7JzogJ1x1MjAzZScsCisgICAgJ29sdDsnOiAnXHUyOWMwJywKKyAgICAnT21hY3I7JzogJ1x1MDE0YycsCisgICAgJ29tYWNyOyc6ICdcdTAxNGQnLAorICAgICdPbWVnYTsnOiAnXHUwM2E5JywKKyAgICAnb21lZ2E7JzogJ1x1MDNjOScsCisgICAgJ09taWNyb247JzogJ1x1MDM5ZicsCisgICAgJ29taWNyb247JzogJ1x1MDNiZicsCisgICAgJ29taWQ7JzogJ1x1MjliNicsCisgICAgJ29taW51czsnOiAnXHUyMjk2JywKKyAgICAnT29wZjsnOiAnXFUwMDAxZDU0NicsCisgICAgJ29vcGY7JzogJ1xVMDAwMWQ1NjAnLAorICAgICdvcGFyOyc6ICdcdTI5YjcnLAorICAgICdPcGVuQ3VybHlEb3VibGVRdW90ZTsnOiAnXHUyMDFjJywKKyAgICAnT3BlbkN1cmx5UXVvdGU7JzogJ1x1MjAxOCcsCisgICAgJ29wZXJwOyc6ICdcdTI5YjknLAorICAgICdvcGx1czsnOiAnXHUyMjk1JywKKyAgICAnT3I7JzogJ1x1MmE1NCcsCisgICAgJ29yOyc6ICdcdTIyMjgnLAorICAgICdvcmFycjsnOiAnXHUyMWJiJywKKyAgICAnb3JkOyc6ICdcdTJhNWQnLAorICAgICdvcmRlcjsnOiAnXHUyMTM0JywKKyAgICAnb3JkZXJvZjsnOiAnXHUyMTM0JywKKyAgICAnb3JkZic6ICdceGFhJywKKyAgICAnb3JkZjsnOiAnXHhhYScsCisgICAgJ29yZG0nOiAnXHhiYScsCisgICAgJ29yZG07JzogJ1x4YmEnLAorICAgICdvcmlnb2Y7JzogJ1x1MjJiNicsCisgICAgJ29yb3I7JzogJ1x1MmE1NicsCisgICAgJ29yc2xvcGU7JzogJ1x1MmE1NycsCisgICAgJ29ydjsnOiAnXHUyYTViJywKKyAgICAnb1M7JzogJ1x1MjRjOCcsCisgICAgJ09zY3I7JzogJ1xVMDAwMWQ0YWEnLAorICAgICdvc2NyOyc6ICdcdTIxMzQnLAorICAgICdPc2xhc2gnOiAnXHhkOCcsCisgICAgJ29zbGFzaCc6ICdceGY4JywKKyAgICAnT3NsYXNoOyc6ICdceGQ4JywKKyAgICAnb3NsYXNoOyc6ICdceGY4JywKKyAgICAnb3NvbDsnOiAnXHUyMjk4JywKKyAgICAnT3RpbGRlJzogJ1x4ZDUnLAorICAgICdvdGlsZGUnOiAnXHhmNScsCisgICAgJ090aWxkZTsnOiAnXHhkNScsCisgICAgJ290aWxkZTsnOiAnXHhmNScsCisgICAgJ090aW1lczsnOiAnXHUyYTM3JywKKyAgICAnb3RpbWVzOyc6ICdcdTIyOTcnLAorICAgICdvdGltZXNhczsnOiAnXHUyYTM2JywKKyAgICAnT3VtbCc6ICdceGQ2JywKKyAgICAnb3VtbCc6ICdceGY2JywKKyAgICAnT3VtbDsnOiAnXHhkNicsCisgICAgJ291bWw7JzogJ1x4ZjYnLAorICAgICdvdmJhcjsnOiAnXHUyMzNkJywKKyAgICAnT3ZlckJhcjsnOiAnXHUyMDNlJywKKyAgICAnT3ZlckJyYWNlOyc6ICdcdTIzZGUnLAorICAgICdPdmVyQnJhY2tldDsnOiAnXHUyM2I0JywKKyAgICAnT3ZlclBhcmVudGhlc2lzOyc6ICdcdTIzZGMnLAorICAgICdwYXI7JzogJ1x1MjIyNScsCisgICAgJ3BhcmEnOiAnXHhiNicsCisgICAgJ3BhcmE7JzogJ1x4YjYnLAorICAgICdwYXJhbGxlbDsnOiAnXHUyMjI1JywKKyAgICAncGFyc2ltOyc6ICdcdTJhZjMnLAorICAgICdwYXJzbDsnOiAnXHUyYWZkJywKKyAgICAncGFydDsnOiAnXHUyMjAyJywKKyAgICAnUGFydGlhbEQ7JzogJ1x1MjIwMicsCisgICAgJ1BjeTsnOiAnXHUwNDFmJywKKyAgICAncGN5Oyc6ICdcdTA0M2YnLAorICAgICdwZXJjbnQ7JzogJyUnLAorICAgICdwZXJpb2Q7JzogJy4nLAorICAgICdwZXJtaWw7JzogJ1x1MjAzMCcsCisgICAgJ3BlcnA7JzogJ1x1MjJhNScsCisgICAgJ3BlcnRlbms7JzogJ1x1MjAzMScsCisgICAgJ1BmcjsnOiAnXFUwMDAxZDUxMycsCisgICAgJ3BmcjsnOiAnXFUwMDAxZDUyZCcsCisgICAgJ1BoaTsnOiAnXHUwM2E2JywKKyAgICAncGhpOyc6ICdcdTAzYzYnLAorICAgICdwaGl2Oyc6ICdcdTAzZDUnLAorICAgICdwaG1tYXQ7JzogJ1x1MjEzMycsCisgICAgJ3Bob25lOyc6ICdcdTI2MGUnLAorICAgICdQaTsnOiAnXHUwM2EwJywKKyAgICAncGk7JzogJ1x1MDNjMCcsCisgICAgJ3BpdGNoZm9yazsnOiAnXHUyMmQ0JywKKyAgICAncGl2Oyc6ICdcdTAzZDYnLAorICAgICdwbGFuY2s7JzogJ1x1MjEwZicsCisgICAgJ3BsYW5ja2g7JzogJ1x1MjEwZScsCisgICAgJ3BsYW5rdjsnOiAnXHUyMTBmJywKKyAgICAncGx1czsnOiAnKycsCisgICAgJ3BsdXNhY2lyOyc6ICdcdTJhMjMnLAorICAgICdwbHVzYjsnOiAnXHUyMjllJywKKyAgICAncGx1c2NpcjsnOiAnXHUyYTIyJywKKyAgICAncGx1c2RvOyc6ICdcdTIyMTQnLAorICAgICdwbHVzZHU7JzogJ1x1MmEyNScsCisgICAgJ3BsdXNlOyc6ICdcdTJhNzInLAorICAgICdQbHVzTWludXM7JzogJ1x4YjEnLAorICAgICdwbHVzbW4nOiAnXHhiMScsCisgICAgJ3BsdXNtbjsnOiAnXHhiMScsCisgICAgJ3BsdXNzaW07JzogJ1x1MmEyNicsCisgICAgJ3BsdXN0d287JzogJ1x1MmEyNycsCisgICAgJ3BtOyc6ICdceGIxJywKKyAgICAnUG9pbmNhcmVwbGFuZTsnOiAnXHUyMTBjJywKKyAgICAncG9pbnRpbnQ7JzogJ1x1MmExNScsCisgICAgJ1BvcGY7JzogJ1x1MjExOScsCisgICAgJ3BvcGY7JzogJ1xVMDAwMWQ1NjEnLAorICAgICdwb3VuZCc6ICdceGEzJywKKyAgICAncG91bmQ7JzogJ1x4YTMnLAorICAgICdQcjsnOiAnXHUyYWJiJywKKyAgICAncHI7JzogJ1x1MjI3YScsCisgICAgJ3ByYXA7JzogJ1x1MmFiNycsCisgICAgJ3ByY3VlOyc6ICdcdTIyN2MnLAorICAgICdwckU7JzogJ1x1MmFiMycsCisgICAgJ3ByZTsnOiAnXHUyYWFmJywKKyAgICAncHJlYzsnOiAnXHUyMjdhJywKKyAgICAncHJlY2FwcHJveDsnOiAnXHUyYWI3JywKKyAgICAncHJlY2N1cmx5ZXE7JzogJ1x1MjI3YycsCisgICAgJ1ByZWNlZGVzOyc6ICdcdTIyN2EnLAorICAgICdQcmVjZWRlc0VxdWFsOyc6ICdcdTJhYWYnLAorICAgICdQcmVjZWRlc1NsYW50RXF1YWw7JzogJ1x1MjI3YycsCisgICAgJ1ByZWNlZGVzVGlsZGU7JzogJ1x1MjI3ZScsCisgICAgJ3ByZWNlcTsnOiAnXHUyYWFmJywKKyAgICAncHJlY25hcHByb3g7JzogJ1x1MmFiOScsCisgICAgJ3ByZWNuZXFxOyc6ICdcdTJhYjUnLAorICAgICdwcmVjbnNpbTsnOiAnXHUyMmU4JywKKyAgICAncHJlY3NpbTsnOiAnXHUyMjdlJywKKyAgICAnUHJpbWU7JzogJ1x1MjAzMycsCisgICAgJ3ByaW1lOyc6ICdcdTIwMzInLAorICAgICdwcmltZXM7JzogJ1x1MjExOScsCisgICAgJ3BybmFwOyc6ICdcdTJhYjknLAorICAgICdwcm5FOyc6ICdcdTJhYjUnLAorICAgICdwcm5zaW07JzogJ1x1MjJlOCcsCisgICAgJ3Byb2Q7JzogJ1x1MjIwZicsCisgICAgJ1Byb2R1Y3Q7JzogJ1x1MjIwZicsCisgICAgJ3Byb2ZhbGFyOyc6ICdcdTIzMmUnLAorICAgICdwcm9mbGluZTsnOiAnXHUyMzEyJywKKyAgICAncHJvZnN1cmY7JzogJ1x1MjMxMycsCisgICAgJ3Byb3A7JzogJ1x1MjIxZCcsCisgICAgJ1Byb3BvcnRpb247JzogJ1x1MjIzNycsCisgICAgJ1Byb3BvcnRpb25hbDsnOiAnXHUyMjFkJywKKyAgICAncHJvcHRvOyc6ICdcdTIyMWQnLAorICAgICdwcnNpbTsnOiAnXHUyMjdlJywKKyAgICAncHJ1cmVsOyc6ICdcdTIyYjAnLAorICAgICdQc2NyOyc6ICdcVTAwMDFkNGFiJywKKyAgICAncHNjcjsnOiAnXFUwMDAxZDRjNScsCisgICAgJ1BzaTsnOiAnXHUwM2E4JywKKyAgICAncHNpOyc6ICdcdTAzYzgnLAorICAgICdwdW5jc3A7JzogJ1x1MjAwOCcsCisgICAgJ1FmcjsnOiAnXFUwMDAxZDUxNCcsCisgICAgJ3FmcjsnOiAnXFUwMDAxZDUyZScsCisgICAgJ3FpbnQ7JzogJ1x1MmEwYycsCisgICAgJ1FvcGY7JzogJ1x1MjExYScsCisgICAgJ3FvcGY7JzogJ1xVMDAwMWQ1NjInLAorICAgICdxcHJpbWU7JzogJ1x1MjA1NycsCisgICAgJ1FzY3I7JzogJ1xVMDAwMWQ0YWMnLAorICAgICdxc2NyOyc6ICdcVTAwMDFkNGM2JywKKyAgICAncXVhdGVybmlvbnM7JzogJ1x1MjEwZCcsCisgICAgJ3F1YXRpbnQ7JzogJ1x1MmExNicsCisgICAgJ3F1ZXN0Oyc6ICc/JywKKyAgICAncXVlc3RlcTsnOiAnXHUyMjVmJywKKyAgICAnUVVPVCc6ICciJywKKyAgICAncXVvdCc6ICciJywKKyAgICAnUVVPVDsnOiAnIicsCisgICAgJ3F1b3Q7JzogJyInLAorICAgICdyQWFycjsnOiAnXHUyMWRiJywKKyAgICAncmFjZTsnOiAnXHUyMjNkXHUwMzMxJywKKyAgICAnUmFjdXRlOyc6ICdcdTAxNTQnLAorICAgICdyYWN1dGU7JzogJ1x1MDE1NScsCisgICAgJ3JhZGljOyc6ICdcdTIyMWEnLAorICAgICdyYWVtcHR5djsnOiAnXHUyOWIzJywKKyAgICAnUmFuZzsnOiAnXHUyN2ViJywKKyAgICAncmFuZzsnOiAnXHUyN2U5JywKKyAgICAncmFuZ2Q7JzogJ1x1Mjk5MicsCisgICAgJ3JhbmdlOyc6ICdcdTI5YTUnLAorICAgICdyYW5nbGU7JzogJ1x1MjdlOScsCisgICAgJ3JhcXVvJzogJ1x4YmInLAorICAgICdyYXF1bzsnOiAnXHhiYicsCisgICAgJ1JhcnI7JzogJ1x1MjFhMCcsCisgICAgJ3JBcnI7JzogJ1x1MjFkMicsCisgICAgJ3JhcnI7JzogJ1x1MjE5MicsCisgICAgJ3JhcnJhcDsnOiAnXHUyOTc1JywKKyAgICAncmFycmI7JzogJ1x1MjFlNScsCisgICAgJ3JhcnJiZnM7JzogJ1x1MjkyMCcsCisgICAgJ3JhcnJjOyc6ICdcdTI5MzMnLAorICAgICdyYXJyZnM7JzogJ1x1MjkxZScsCisgICAgJ3JhcnJoazsnOiAnXHUyMWFhJywKKyAgICAncmFycmxwOyc6ICdcdTIxYWMnLAorICAgICdyYXJycGw7JzogJ1x1Mjk0NScsCisgICAgJ3JhcnJzaW07JzogJ1x1Mjk3NCcsCisgICAgJ1JhcnJ0bDsnOiAnXHUyOTE2JywKKyAgICAncmFycnRsOyc6ICdcdTIxYTMnLAorICAgICdyYXJydzsnOiAnXHUyMTlkJywKKyAgICAnckF0YWlsOyc6ICdcdTI5MWMnLAorICAgICdyYXRhaWw7JzogJ1x1MjkxYScsCisgICAgJ3JhdGlvOyc6ICdcdTIyMzYnLAorICAgICdyYXRpb25hbHM7JzogJ1x1MjExYScsCisgICAgJ1JCYXJyOyc6ICdcdTI5MTAnLAorICAgICdyQmFycjsnOiAnXHUyOTBmJywKKyAgICAncmJhcnI7JzogJ1x1MjkwZCcsCisgICAgJ3JiYnJrOyc6ICdcdTI3NzMnLAorICAgICdyYnJhY2U7JzogJ30nLAorICAgICdyYnJhY2s7JzogJ10nLAorICAgICdyYnJrZTsnOiAnXHUyOThjJywKKyAgICAncmJya3NsZDsnOiAnXHUyOThlJywKKyAgICAncmJya3NsdTsnOiAnXHUyOTkwJywKKyAgICAnUmNhcm9uOyc6ICdcdTAxNTgnLAorICAgICdyY2Fyb247JzogJ1x1MDE1OScsCisgICAgJ1JjZWRpbDsnOiAnXHUwMTU2JywKKyAgICAncmNlZGlsOyc6ICdcdTAxNTcnLAorICAgICdyY2VpbDsnOiAnXHUyMzA5JywKKyAgICAncmN1YjsnOiAnfScsCisgICAgJ1JjeTsnOiAnXHUwNDIwJywKKyAgICAncmN5Oyc6ICdcdTA0NDAnLAorICAgICdyZGNhOyc6ICdcdTI5MzcnLAorICAgICdyZGxkaGFyOyc6ICdcdTI5NjknLAorICAgICdyZHF1bzsnOiAnXHUyMDFkJywKKyAgICAncmRxdW9yOyc6ICdcdTIwMWQnLAorICAgICdyZHNoOyc6ICdcdTIxYjMnLAorICAgICdSZTsnOiAnXHUyMTFjJywKKyAgICAncmVhbDsnOiAnXHUyMTFjJywKKyAgICAncmVhbGluZTsnOiAnXHUyMTFiJywKKyAgICAncmVhbHBhcnQ7JzogJ1x1MjExYycsCisgICAgJ3JlYWxzOyc6ICdcdTIxMWQnLAorICAgICdyZWN0Oyc6ICdcdTI1YWQnLAorICAgICdSRUcnOiAnXHhhZScsCisgICAgJ3JlZyc6ICdceGFlJywKKyAgICAnUkVHOyc6ICdceGFlJywKKyAgICAncmVnOyc6ICdceGFlJywKKyAgICAnUmV2ZXJzZUVsZW1lbnQ7JzogJ1x1MjIwYicsCisgICAgJ1JldmVyc2VFcXVpbGlicml1bTsnOiAnXHUyMWNiJywKKyAgICAnUmV2ZXJzZVVwRXF1aWxpYnJpdW07JzogJ1x1Mjk2ZicsCisgICAgJ3JmaXNodDsnOiAnXHUyOTdkJywKKyAgICAncmZsb29yOyc6ICdcdTIzMGInLAorICAgICdSZnI7JzogJ1x1MjExYycsCisgICAgJ3JmcjsnOiAnXFUwMDAxZDUyZicsCisgICAgJ3JIYXI7JzogJ1x1Mjk2NCcsCisgICAgJ3JoYXJkOyc6ICdcdTIxYzEnLAorICAgICdyaGFydTsnOiAnXHUyMWMwJywKKyAgICAncmhhcnVsOyc6ICdcdTI5NmMnLAorICAgICdSaG87JzogJ1x1MDNhMScsCisgICAgJ3JobzsnOiAnXHUwM2MxJywKKyAgICAncmhvdjsnOiAnXHUwM2YxJywKKyAgICAnUmlnaHRBbmdsZUJyYWNrZXQ7JzogJ1x1MjdlOScsCisgICAgJ1JpZ2h0QXJyb3c7JzogJ1x1MjE5MicsCisgICAgJ1JpZ2h0YXJyb3c7JzogJ1x1MjFkMicsCisgICAgJ3JpZ2h0YXJyb3c7JzogJ1x1MjE5MicsCisgICAgJ1JpZ2h0QXJyb3dCYXI7JzogJ1x1MjFlNScsCisgICAgJ1JpZ2h0QXJyb3dMZWZ0QXJyb3c7JzogJ1x1MjFjNCcsCisgICAgJ3JpZ2h0YXJyb3d0YWlsOyc6ICdcdTIxYTMnLAorICAgICdSaWdodENlaWxpbmc7JzogJ1x1MjMwOScsCisgICAgJ1JpZ2h0RG91YmxlQnJhY2tldDsnOiAnXHUyN2U3JywKKyAgICAnUmlnaHREb3duVGVlVmVjdG9yOyc6ICdcdTI5NWQnLAorICAgICdSaWdodERvd25WZWN0b3I7JzogJ1x1MjFjMicsCisgICAgJ1JpZ2h0RG93blZlY3RvckJhcjsnOiAnXHUyOTU1JywKKyAgICAnUmlnaHRGbG9vcjsnOiAnXHUyMzBiJywKKyAgICAncmlnaHRoYXJwb29uZG93bjsnOiAnXHUyMWMxJywKKyAgICAncmlnaHRoYXJwb29udXA7JzogJ1x1MjFjMCcsCisgICAgJ3JpZ2h0bGVmdGFycm93czsnOiAnXHUyMWM0JywKKyAgICAncmlnaHRsZWZ0aGFycG9vbnM7JzogJ1x1MjFjYycsCisgICAgJ3JpZ2h0cmlnaHRhcnJvd3M7JzogJ1x1MjFjOScsCisgICAgJ3JpZ2h0c3F1aWdhcnJvdzsnOiAnXHUyMTlkJywKKyAgICAnUmlnaHRUZWU7JzogJ1x1MjJhMicsCisgICAgJ1JpZ2h0VGVlQXJyb3c7JzogJ1x1MjFhNicsCisgICAgJ1JpZ2h0VGVlVmVjdG9yOyc6ICdcdTI5NWInLAorICAgICdyaWdodHRocmVldGltZXM7JzogJ1x1MjJjYycsCisgICAgJ1JpZ2h0VHJpYW5nbGU7JzogJ1x1MjJiMycsCisgICAgJ1JpZ2h0VHJpYW5nbGVCYXI7JzogJ1x1MjlkMCcsCisgICAgJ1JpZ2h0VHJpYW5nbGVFcXVhbDsnOiAnXHUyMmI1JywKKyAgICAnUmlnaHRVcERvd25WZWN0b3I7JzogJ1x1Mjk0ZicsCisgICAgJ1JpZ2h0VXBUZWVWZWN0b3I7JzogJ1x1Mjk1YycsCisgICAgJ1JpZ2h0VXBWZWN0b3I7JzogJ1x1MjFiZScsCisgICAgJ1JpZ2h0VXBWZWN0b3JCYXI7JzogJ1x1Mjk1NCcsCisgICAgJ1JpZ2h0VmVjdG9yOyc6ICdcdTIxYzAnLAorICAgICdSaWdodFZlY3RvckJhcjsnOiAnXHUyOTUzJywKKyAgICAncmluZzsnOiAnXHUwMmRhJywKKyAgICAncmlzaW5nZG90c2VxOyc6ICdcdTIyNTMnLAorICAgICdybGFycjsnOiAnXHUyMWM0JywKKyAgICAncmxoYXI7JzogJ1x1MjFjYycsCisgICAgJ3JsbTsnOiAnXHUyMDBmJywKKyAgICAncm1vdXN0Oyc6ICdcdTIzYjEnLAorICAgICdybW91c3RhY2hlOyc6ICdcdTIzYjEnLAorICAgICdybm1pZDsnOiAnXHUyYWVlJywKKyAgICAncm9hbmc7JzogJ1x1MjdlZCcsCisgICAgJ3JvYXJyOyc6ICdcdTIxZmUnLAorICAgICdyb2JyazsnOiAnXHUyN2U3JywKKyAgICAncm9wYXI7JzogJ1x1Mjk4NicsCisgICAgJ1JvcGY7JzogJ1x1MjExZCcsCisgICAgJ3JvcGY7JzogJ1xVMDAwMWQ1NjMnLAorICAgICdyb3BsdXM7JzogJ1x1MmEyZScsCisgICAgJ3JvdGltZXM7JzogJ1x1MmEzNScsCisgICAgJ1JvdW5kSW1wbGllczsnOiAnXHUyOTcwJywKKyAgICAncnBhcjsnOiAnKScsCisgICAgJ3JwYXJndDsnOiAnXHUyOTk0JywKKyAgICAncnBwb2xpbnQ7JzogJ1x1MmExMicsCisgICAgJ3JyYXJyOyc6ICdcdTIxYzknLAorICAgICdScmlnaHRhcnJvdzsnOiAnXHUyMWRiJywKKyAgICAncnNhcXVvOyc6ICdcdTIwM2EnLAorICAgICdSc2NyOyc6ICdcdTIxMWInLAorICAgICdyc2NyOyc6ICdcVTAwMDFkNGM3JywKKyAgICAnUnNoOyc6ICdcdTIxYjEnLAorICAgICdyc2g7JzogJ1x1MjFiMScsCisgICAgJ3JzcWI7JzogJ10nLAorICAgICdyc3F1bzsnOiAnXHUyMDE5JywKKyAgICAncnNxdW9yOyc6ICdcdTIwMTknLAorICAgICdydGhyZWU7JzogJ1x1MjJjYycsCisgICAgJ3J0aW1lczsnOiAnXHUyMmNhJywKKyAgICAncnRyaTsnOiAnXHUyNWI5JywKKyAgICAncnRyaWU7JzogJ1x1MjJiNScsCisgICAgJ3J0cmlmOyc6ICdcdTI1YjgnLAorICAgICdydHJpbHRyaTsnOiAnXHUyOWNlJywKKyAgICAnUnVsZURlbGF5ZWQ7JzogJ1x1MjlmNCcsCisgICAgJ3J1bHVoYXI7JzogJ1x1Mjk2OCcsCisgICAgJ3J4Oyc6ICdcdTIxMWUnLAorICAgICdTYWN1dGU7JzogJ1x1MDE1YScsCisgICAgJ3NhY3V0ZTsnOiAnXHUwMTViJywKKyAgICAnc2JxdW87JzogJ1x1MjAxYScsCisgICAgJ1NjOyc6ICdcdTJhYmMnLAorICAgICdzYzsnOiAnXHUyMjdiJywKKyAgICAnc2NhcDsnOiAnXHUyYWI4JywKKyAgICAnU2Nhcm9uOyc6ICdcdTAxNjAnLAorICAgICdzY2Fyb247JzogJ1x1MDE2MScsCisgICAgJ3NjY3VlOyc6ICdcdTIyN2QnLAorICAgICdzY0U7JzogJ1x1MmFiNCcsCisgICAgJ3NjZTsnOiAnXHUyYWIwJywKKyAgICAnU2NlZGlsOyc6ICdcdTAxNWUnLAorICAgICdzY2VkaWw7JzogJ1x1MDE1ZicsCisgICAgJ1NjaXJjOyc6ICdcdTAxNWMnLAorICAgICdzY2lyYzsnOiAnXHUwMTVkJywKKyAgICAnc2NuYXA7JzogJ1x1MmFiYScsCisgICAgJ3NjbkU7JzogJ1x1MmFiNicsCisgICAgJ3NjbnNpbTsnOiAnXHUyMmU5JywKKyAgICAnc2Nwb2xpbnQ7JzogJ1x1MmExMycsCisgICAgJ3Njc2ltOyc6ICdcdTIyN2YnLAorICAgICdTY3k7JzogJ1x1MDQyMScsCisgICAgJ3NjeTsnOiAnXHUwNDQxJywKKyAgICAnc2RvdDsnOiAnXHUyMmM1JywKKyAgICAnc2RvdGI7JzogJ1x1MjJhMScsCisgICAgJ3Nkb3RlOyc6ICdcdTJhNjYnLAorICAgICdzZWFyaGs7JzogJ1x1MjkyNScsCisgICAgJ3NlQXJyOyc6ICdcdTIxZDgnLAorICAgICdzZWFycjsnOiAnXHUyMTk4JywKKyAgICAnc2VhcnJvdzsnOiAnXHUyMTk4JywKKyAgICAnc2VjdCc6ICdceGE3JywKKyAgICAnc2VjdDsnOiAnXHhhNycsCisgICAgJ3NlbWk7JzogJzsnLAorICAgICdzZXN3YXI7JzogJ1x1MjkyOScsCisgICAgJ3NldG1pbnVzOyc6ICdcdTIyMTYnLAorICAgICdzZXRtbjsnOiAnXHUyMjE2JywKKyAgICAnc2V4dDsnOiAnXHUyNzM2JywKKyAgICAnU2ZyOyc6ICdcVTAwMDFkNTE2JywKKyAgICAnc2ZyOyc6ICdcVTAwMDFkNTMwJywKKyAgICAnc2Zyb3duOyc6ICdcdTIzMjInLAorICAgICdzaGFycDsnOiAnXHUyNjZmJywKKyAgICAnU0hDSGN5Oyc6ICdcdTA0MjknLAorICAgICdzaGNoY3k7JzogJ1x1MDQ0OScsCisgICAgJ1NIY3k7JzogJ1x1MDQyOCcsCisgICAgJ3NoY3k7JzogJ1x1MDQ0OCcsCisgICAgJ1Nob3J0RG93bkFycm93Oyc6ICdcdTIxOTMnLAorICAgICdTaG9ydExlZnRBcnJvdzsnOiAnXHUyMTkwJywKKyAgICAnc2hvcnRtaWQ7JzogJ1x1MjIyMycsCisgICAgJ3Nob3J0cGFyYWxsZWw7JzogJ1x1MjIyNScsCisgICAgJ1Nob3J0UmlnaHRBcnJvdzsnOiAnXHUyMTkyJywKKyAgICAnU2hvcnRVcEFycm93Oyc6ICdcdTIxOTEnLAorICAgICdzaHknOiAnXHhhZCcsCisgICAgJ3NoeTsnOiAnXHhhZCcsCisgICAgJ1NpZ21hOyc6ICdcdTAzYTMnLAorICAgICdzaWdtYTsnOiAnXHUwM2MzJywKKyAgICAnc2lnbWFmOyc6ICdcdTAzYzInLAorICAgICdzaWdtYXY7JzogJ1x1MDNjMicsCisgICAgJ3NpbTsnOiAnXHUyMjNjJywKKyAgICAnc2ltZG90Oyc6ICdcdTJhNmEnLAorICAgICdzaW1lOyc6ICdcdTIyNDMnLAorICAgICdzaW1lcTsnOiAnXHUyMjQzJywKKyAgICAnc2ltZzsnOiAnXHUyYTllJywKKyAgICAnc2ltZ0U7JzogJ1x1MmFhMCcsCisgICAgJ3NpbWw7JzogJ1x1MmE5ZCcsCisgICAgJ3NpbWxFOyc6ICdcdTJhOWYnLAorICAgICdzaW1uZTsnOiAnXHUyMjQ2JywKKyAgICAnc2ltcGx1czsnOiAnXHUyYTI0JywKKyAgICAnc2ltcmFycjsnOiAnXHUyOTcyJywKKyAgICAnc2xhcnI7JzogJ1x1MjE5MCcsCisgICAgJ1NtYWxsQ2lyY2xlOyc6ICdcdTIyMTgnLAorICAgICdzbWFsbHNldG1pbnVzOyc6ICdcdTIyMTYnLAorICAgICdzbWFzaHA7JzogJ1x1MmEzMycsCisgICAgJ3NtZXBhcnNsOyc6ICdcdTI5ZTQnLAorICAgICdzbWlkOyc6ICdcdTIyMjMnLAorICAgICdzbWlsZTsnOiAnXHUyMzIzJywKKyAgICAnc210Oyc6ICdcdTJhYWEnLAorICAgICdzbXRlOyc6ICdcdTJhYWMnLAorICAgICdzbXRlczsnOiAnXHUyYWFjXHVmZTAwJywKKyAgICAnU09GVGN5Oyc6ICdcdTA0MmMnLAorICAgICdzb2Z0Y3k7JzogJ1x1MDQ0YycsCisgICAgJ3NvbDsnOiAnLycsCisgICAgJ3NvbGI7JzogJ1x1MjljNCcsCisgICAgJ3NvbGJhcjsnOiAnXHUyMzNmJywKKyAgICAnU29wZjsnOiAnXFUwMDAxZDU0YScsCisgICAgJ3NvcGY7JzogJ1xVMDAwMWQ1NjQnLAorICAgICdzcGFkZXM7JzogJ1x1MjY2MCcsCisgICAgJ3NwYWRlc3VpdDsnOiAnXHUyNjYwJywKKyAgICAnc3BhcjsnOiAnXHUyMjI1JywKKyAgICAnc3FjYXA7JzogJ1x1MjI5MycsCisgICAgJ3NxY2FwczsnOiAnXHUyMjkzXHVmZTAwJywKKyAgICAnc3FjdXA7JzogJ1x1MjI5NCcsCisgICAgJ3NxY3VwczsnOiAnXHUyMjk0XHVmZTAwJywKKyAgICAnU3FydDsnOiAnXHUyMjFhJywKKyAgICAnc3FzdWI7JzogJ1x1MjI4ZicsCisgICAgJ3Nxc3ViZTsnOiAnXHUyMjkxJywKKyAgICAnc3FzdWJzZXQ7JzogJ1x1MjI4ZicsCisgICAgJ3Nxc3Vic2V0ZXE7JzogJ1x1MjI5MScsCisgICAgJ3Nxc3VwOyc6ICdcdTIyOTAnLAorICAgICdzcXN1cGU7JzogJ1x1MjI5MicsCisgICAgJ3Nxc3Vwc2V0Oyc6ICdcdTIyOTAnLAorICAgICdzcXN1cHNldGVxOyc6ICdcdTIyOTInLAorICAgICdzcXU7JzogJ1x1MjVhMScsCisgICAgJ1NxdWFyZTsnOiAnXHUyNWExJywKKyAgICAnc3F1YXJlOyc6ICdcdTI1YTEnLAorICAgICdTcXVhcmVJbnRlcnNlY3Rpb247JzogJ1x1MjI5MycsCisgICAgJ1NxdWFyZVN1YnNldDsnOiAnXHUyMjhmJywKKyAgICAnU3F1YXJlU3Vic2V0RXF1YWw7JzogJ1x1MjI5MScsCisgICAgJ1NxdWFyZVN1cGVyc2V0Oyc6ICdcdTIyOTAnLAorICAgICdTcXVhcmVTdXBlcnNldEVxdWFsOyc6ICdcdTIyOTInLAorICAgICdTcXVhcmVVbmlvbjsnOiAnXHUyMjk0JywKKyAgICAnc3F1YXJmOyc6ICdcdTI1YWEnLAorICAgICdzcXVmOyc6ICdcdTI1YWEnLAorICAgICdzcmFycjsnOiAnXHUyMTkyJywKKyAgICAnU3NjcjsnOiAnXFUwMDAxZDRhZScsCisgICAgJ3NzY3I7JzogJ1xVMDAwMWQ0YzgnLAorICAgICdzc2V0bW47JzogJ1x1MjIxNicsCisgICAgJ3NzbWlsZTsnOiAnXHUyMzIzJywKKyAgICAnc3N0YXJmOyc6ICdcdTIyYzYnLAorICAgICdTdGFyOyc6ICdcdTIyYzYnLAorICAgICdzdGFyOyc6ICdcdTI2MDYnLAorICAgICdzdGFyZjsnOiAnXHUyNjA1JywKKyAgICAnc3RyYWlnaHRlcHNpbG9uOyc6ICdcdTAzZjUnLAorICAgICdzdHJhaWdodHBoaTsnOiAnXHUwM2Q1JywKKyAgICAnc3RybnM7JzogJ1x4YWYnLAorICAgICdTdWI7JzogJ1x1MjJkMCcsCisgICAgJ3N1YjsnOiAnXHUyMjgyJywKKyAgICAnc3ViZG90Oyc6ICdcdTJhYmQnLAorICAgICdzdWJFOyc6ICdcdTJhYzUnLAorICAgICdzdWJlOyc6ICdcdTIyODYnLAorICAgICdzdWJlZG90Oyc6ICdcdTJhYzMnLAorICAgICdzdWJtdWx0Oyc6ICdcdTJhYzEnLAorICAgICdzdWJuRTsnOiAnXHUyYWNiJywKKyAgICAnc3VibmU7JzogJ1x1MjI4YScsCisgICAgJ3N1YnBsdXM7JzogJ1x1MmFiZicsCisgICAgJ3N1YnJhcnI7JzogJ1x1Mjk3OScsCisgICAgJ1N1YnNldDsnOiAnXHUyMmQwJywKKyAgICAnc3Vic2V0Oyc6ICdcdTIyODInLAorICAgICdzdWJzZXRlcTsnOiAnXHUyMjg2JywKKyAgICAnc3Vic2V0ZXFxOyc6ICdcdTJhYzUnLAorICAgICdTdWJzZXRFcXVhbDsnOiAnXHUyMjg2JywKKyAgICAnc3Vic2V0bmVxOyc6ICdcdTIyOGEnLAorICAgICdzdWJzZXRuZXFxOyc6ICdcdTJhY2InLAorICAgICdzdWJzaW07JzogJ1x1MmFjNycsCisgICAgJ3N1YnN1YjsnOiAnXHUyYWQ1JywKKyAgICAnc3Vic3VwOyc6ICdcdTJhZDMnLAorICAgICdzdWNjOyc6ICdcdTIyN2InLAorICAgICdzdWNjYXBwcm94Oyc6ICdcdTJhYjgnLAorICAgICdzdWNjY3VybHllcTsnOiAnXHUyMjdkJywKKyAgICAnU3VjY2VlZHM7JzogJ1x1MjI3YicsCisgICAgJ1N1Y2NlZWRzRXF1YWw7JzogJ1x1MmFiMCcsCisgICAgJ1N1Y2NlZWRzU2xhbnRFcXVhbDsnOiAnXHUyMjdkJywKKyAgICAnU3VjY2VlZHNUaWxkZTsnOiAnXHUyMjdmJywKKyAgICAnc3VjY2VxOyc6ICdcdTJhYjAnLAorICAgICdzdWNjbmFwcHJveDsnOiAnXHUyYWJhJywKKyAgICAnc3VjY25lcXE7JzogJ1x1MmFiNicsCisgICAgJ3N1Y2Nuc2ltOyc6ICdcdTIyZTknLAorICAgICdzdWNjc2ltOyc6ICdcdTIyN2YnLAorICAgICdTdWNoVGhhdDsnOiAnXHUyMjBiJywKKyAgICAnU3VtOyc6ICdcdTIyMTEnLAorICAgICdzdW07JzogJ1x1MjIxMScsCisgICAgJ3N1bmc7JzogJ1x1MjY2YScsCisgICAgJ3N1cDEnOiAnXHhiOScsCisgICAgJ3N1cDE7JzogJ1x4YjknLAorICAgICdzdXAyJzogJ1x4YjInLAorICAgICdzdXAyOyc6ICdceGIyJywKKyAgICAnc3VwMyc6ICdceGIzJywKKyAgICAnc3VwMzsnOiAnXHhiMycsCisgICAgJ1N1cDsnOiAnXHUyMmQxJywKKyAgICAnc3VwOyc6ICdcdTIyODMnLAorICAgICdzdXBkb3Q7JzogJ1x1MmFiZScsCisgICAgJ3N1cGRzdWI7JzogJ1x1MmFkOCcsCisgICAgJ3N1cEU7JzogJ1x1MmFjNicsCisgICAgJ3N1cGU7JzogJ1x1MjI4NycsCisgICAgJ3N1cGVkb3Q7JzogJ1x1MmFjNCcsCisgICAgJ1N1cGVyc2V0Oyc6ICdcdTIyODMnLAorICAgICdTdXBlcnNldEVxdWFsOyc6ICdcdTIyODcnLAorICAgICdzdXBoc29sOyc6ICdcdTI3YzknLAorICAgICdzdXBoc3ViOyc6ICdcdTJhZDcnLAorICAgICdzdXBsYXJyOyc6ICdcdTI5N2InLAorICAgICdzdXBtdWx0Oyc6ICdcdTJhYzInLAorICAgICdzdXBuRTsnOiAnXHUyYWNjJywKKyAgICAnc3VwbmU7JzogJ1x1MjI4YicsCisgICAgJ3N1cHBsdXM7JzogJ1x1MmFjMCcsCisgICAgJ1N1cHNldDsnOiAnXHUyMmQxJywKKyAgICAnc3Vwc2V0Oyc6ICdcdTIyODMnLAorICAgICdzdXBzZXRlcTsnOiAnXHUyMjg3JywKKyAgICAnc3Vwc2V0ZXFxOyc6ICdcdTJhYzYnLAorICAgICdzdXBzZXRuZXE7JzogJ1x1MjI4YicsCisgICAgJ3N1cHNldG5lcXE7JzogJ1x1MmFjYycsCisgICAgJ3N1cHNpbTsnOiAnXHUyYWM4JywKKyAgICAnc3Vwc3ViOyc6ICdcdTJhZDQnLAorICAgICdzdXBzdXA7JzogJ1x1MmFkNicsCisgICAgJ3N3YXJoazsnOiAnXHUyOTI2JywKKyAgICAnc3dBcnI7JzogJ1x1MjFkOScsCisgICAgJ3N3YXJyOyc6ICdcdTIxOTknLAorICAgICdzd2Fycm93Oyc6ICdcdTIxOTknLAorICAgICdzd253YXI7JzogJ1x1MjkyYScsCisgICAgJ3N6bGlnJzogJ1x4ZGYnLAorICAgICdzemxpZzsnOiAnXHhkZicsCisgICAgJ1RhYjsnOiAnXHQnLAorICAgICd0YXJnZXQ7JzogJ1x1MjMxNicsCisgICAgJ1RhdTsnOiAnXHUwM2E0JywKKyAgICAndGF1Oyc6ICdcdTAzYzQnLAorICAgICd0YnJrOyc6ICdcdTIzYjQnLAorICAgICdUY2Fyb247JzogJ1x1MDE2NCcsCisgICAgJ3RjYXJvbjsnOiAnXHUwMTY1JywKKyAgICAnVGNlZGlsOyc6ICdcdTAxNjInLAorICAgICd0Y2VkaWw7JzogJ1x1MDE2MycsCisgICAgJ1RjeTsnOiAnXHUwNDIyJywKKyAgICAndGN5Oyc6ICdcdTA0NDInLAorICAgICd0ZG90Oyc6ICdcdTIwZGInLAorICAgICd0ZWxyZWM7JzogJ1x1MjMxNScsCisgICAgJ1RmcjsnOiAnXFUwMDAxZDUxNycsCisgICAgJ3RmcjsnOiAnXFUwMDAxZDUzMScsCisgICAgJ3RoZXJlNDsnOiAnXHUyMjM0JywKKyAgICAnVGhlcmVmb3JlOyc6ICdcdTIyMzQnLAorICAgICd0aGVyZWZvcmU7JzogJ1x1MjIzNCcsCisgICAgJ1RoZXRhOyc6ICdcdTAzOTgnLAorICAgICd0aGV0YTsnOiAnXHUwM2I4JywKKyAgICAndGhldGFzeW07JzogJ1x1MDNkMScsCisgICAgJ3RoZXRhdjsnOiAnXHUwM2QxJywKKyAgICAndGhpY2thcHByb3g7JzogJ1x1MjI0OCcsCisgICAgJ3RoaWNrc2ltOyc6ICdcdTIyM2MnLAorICAgICdUaGlja1NwYWNlOyc6ICdcdTIwNWZcdTIwMGEnLAorICAgICd0aGluc3A7JzogJ1x1MjAwOScsCisgICAgJ1RoaW5TcGFjZTsnOiAnXHUyMDA5JywKKyAgICAndGhrYXA7JzogJ1x1MjI0OCcsCisgICAgJ3Roa3NpbTsnOiAnXHUyMjNjJywKKyAgICAnVEhPUk4nOiAnXHhkZScsCisgICAgJ3Rob3JuJzogJ1x4ZmUnLAorICAgICdUSE9STjsnOiAnXHhkZScsCisgICAgJ3Rob3JuOyc6ICdceGZlJywKKyAgICAnVGlsZGU7JzogJ1x1MjIzYycsCisgICAgJ3RpbGRlOyc6ICdcdTAyZGMnLAorICAgICdUaWxkZUVxdWFsOyc6ICdcdTIyNDMnLAorICAgICdUaWxkZUZ1bGxFcXVhbDsnOiAnXHUyMjQ1JywKKyAgICAnVGlsZGVUaWxkZTsnOiAnXHUyMjQ4JywKKyAgICAndGltZXMnOiAnXHhkNycsCisgICAgJ3RpbWVzOyc6ICdceGQ3JywKKyAgICAndGltZXNiOyc6ICdcdTIyYTAnLAorICAgICd0aW1lc2JhcjsnOiAnXHUyYTMxJywKKyAgICAndGltZXNkOyc6ICdcdTJhMzAnLAorICAgICd0aW50Oyc6ICdcdTIyMmQnLAorICAgICd0b2VhOyc6ICdcdTI5MjgnLAorICAgICd0b3A7JzogJ1x1MjJhNCcsCisgICAgJ3RvcGJvdDsnOiAnXHUyMzM2JywKKyAgICAndG9wY2lyOyc6ICdcdTJhZjEnLAorICAgICdUb3BmOyc6ICdcVTAwMDFkNTRiJywKKyAgICAndG9wZjsnOiAnXFUwMDAxZDU2NScsCisgICAgJ3RvcGZvcms7JzogJ1x1MmFkYScsCisgICAgJ3Rvc2E7JzogJ1x1MjkyOScsCisgICAgJ3RwcmltZTsnOiAnXHUyMDM0JywKKyAgICAnVFJBREU7JzogJ1x1MjEyMicsCisgICAgJ3RyYWRlOyc6ICdcdTIxMjInLAorICAgICd0cmlhbmdsZTsnOiAnXHUyNWI1JywKKyAgICAndHJpYW5nbGVkb3duOyc6ICdcdTI1YmYnLAorICAgICd0cmlhbmdsZWxlZnQ7JzogJ1x1MjVjMycsCisgICAgJ3RyaWFuZ2xlbGVmdGVxOyc6ICdcdTIyYjQnLAorICAgICd0cmlhbmdsZXE7JzogJ1x1MjI1YycsCisgICAgJ3RyaWFuZ2xlcmlnaHQ7JzogJ1x1MjViOScsCisgICAgJ3RyaWFuZ2xlcmlnaHRlcTsnOiAnXHUyMmI1JywKKyAgICAndHJpZG90Oyc6ICdcdTI1ZWMnLAorICAgICd0cmllOyc6ICdcdTIyNWMnLAorICAgICd0cmltaW51czsnOiAnXHUyYTNhJywKKyAgICAnVHJpcGxlRG90Oyc6ICdcdTIwZGInLAorICAgICd0cmlwbHVzOyc6ICdcdTJhMzknLAorICAgICd0cmlzYjsnOiAnXHUyOWNkJywKKyAgICAndHJpdGltZTsnOiAnXHUyYTNiJywKKyAgICAndHJwZXppdW07JzogJ1x1MjNlMicsCisgICAgJ1RzY3I7JzogJ1xVMDAwMWQ0YWYnLAorICAgICd0c2NyOyc6ICdcVTAwMDFkNGM5JywKKyAgICAnVFNjeTsnOiAnXHUwNDI2JywKKyAgICAndHNjeTsnOiAnXHUwNDQ2JywKKyAgICAnVFNIY3k7JzogJ1x1MDQwYicsCisgICAgJ3RzaGN5Oyc6ICdcdTA0NWInLAorICAgICdUc3Ryb2s7JzogJ1x1MDE2NicsCisgICAgJ3RzdHJvazsnOiAnXHUwMTY3JywKKyAgICAndHdpeHQ7JzogJ1x1MjI2YycsCisgICAgJ3R3b2hlYWRsZWZ0YXJyb3c7JzogJ1x1MjE5ZScsCisgICAgJ3R3b2hlYWRyaWdodGFycm93Oyc6ICdcdTIxYTAnLAorICAgICdVYWN1dGUnOiAnXHhkYScsCisgICAgJ3VhY3V0ZSc6ICdceGZhJywKKyAgICAnVWFjdXRlOyc6ICdceGRhJywKKyAgICAndWFjdXRlOyc6ICdceGZhJywKKyAgICAnVWFycjsnOiAnXHUyMTlmJywKKyAgICAndUFycjsnOiAnXHUyMWQxJywKKyAgICAndWFycjsnOiAnXHUyMTkxJywKKyAgICAnVWFycm9jaXI7JzogJ1x1Mjk0OScsCisgICAgJ1VicmN5Oyc6ICdcdTA0MGUnLAorICAgICd1YnJjeTsnOiAnXHUwNDVlJywKKyAgICAnVWJyZXZlOyc6ICdcdTAxNmMnLAorICAgICd1YnJldmU7JzogJ1x1MDE2ZCcsCisgICAgJ1VjaXJjJzogJ1x4ZGInLAorICAgICd1Y2lyYyc6ICdceGZiJywKKyAgICAnVWNpcmM7JzogJ1x4ZGInLAorICAgICd1Y2lyYzsnOiAnXHhmYicsCisgICAgJ1VjeTsnOiAnXHUwNDIzJywKKyAgICAndWN5Oyc6ICdcdTA0NDMnLAorICAgICd1ZGFycjsnOiAnXHUyMWM1JywKKyAgICAnVWRibGFjOyc6ICdcdTAxNzAnLAorICAgICd1ZGJsYWM7JzogJ1x1MDE3MScsCisgICAgJ3VkaGFyOyc6ICdcdTI5NmUnLAorICAgICd1ZmlzaHQ7JzogJ1x1Mjk3ZScsCisgICAgJ1VmcjsnOiAnXFUwMDAxZDUxOCcsCisgICAgJ3VmcjsnOiAnXFUwMDAxZDUzMicsCisgICAgJ1VncmF2ZSc6ICdceGQ5JywKKyAgICAndWdyYXZlJzogJ1x4ZjknLAorICAgICdVZ3JhdmU7JzogJ1x4ZDknLAorICAgICd1Z3JhdmU7JzogJ1x4ZjknLAorICAgICd1SGFyOyc6ICdcdTI5NjMnLAorICAgICd1aGFybDsnOiAnXHUyMWJmJywKKyAgICAndWhhcnI7JzogJ1x1MjFiZScsCisgICAgJ3VoYmxrOyc6ICdcdTI1ODAnLAorICAgICd1bGNvcm47JzogJ1x1MjMxYycsCisgICAgJ3VsY29ybmVyOyc6ICdcdTIzMWMnLAorICAgICd1bGNyb3A7JzogJ1x1MjMwZicsCisgICAgJ3VsdHJpOyc6ICdcdTI1ZjgnLAorICAgICdVbWFjcjsnOiAnXHUwMTZhJywKKyAgICAndW1hY3I7JzogJ1x1MDE2YicsCisgICAgJ3VtbCc6ICdceGE4JywKKyAgICAndW1sOyc6ICdceGE4JywKKyAgICAnVW5kZXJCYXI7JzogJ18nLAorICAgICdVbmRlckJyYWNlOyc6ICdcdTIzZGYnLAorICAgICdVbmRlckJyYWNrZXQ7JzogJ1x1MjNiNScsCisgICAgJ1VuZGVyUGFyZW50aGVzaXM7JzogJ1x1MjNkZCcsCisgICAgJ1VuaW9uOyc6ICdcdTIyYzMnLAorICAgICdVbmlvblBsdXM7JzogJ1x1MjI4ZScsCisgICAgJ1VvZ29uOyc6ICdcdTAxNzInLAorICAgICd1b2dvbjsnOiAnXHUwMTczJywKKyAgICAnVW9wZjsnOiAnXFUwMDAxZDU0YycsCisgICAgJ3VvcGY7JzogJ1xVMDAwMWQ1NjYnLAorICAgICdVcEFycm93Oyc6ICdcdTIxOTEnLAorICAgICdVcGFycm93Oyc6ICdcdTIxZDEnLAorICAgICd1cGFycm93Oyc6ICdcdTIxOTEnLAorICAgICdVcEFycm93QmFyOyc6ICdcdTI5MTInLAorICAgICdVcEFycm93RG93bkFycm93Oyc6ICdcdTIxYzUnLAorICAgICdVcERvd25BcnJvdzsnOiAnXHUyMTk1JywKKyAgICAnVXBkb3duYXJyb3c7JzogJ1x1MjFkNScsCisgICAgJ3VwZG93bmFycm93Oyc6ICdcdTIxOTUnLAorICAgICdVcEVxdWlsaWJyaXVtOyc6ICdcdTI5NmUnLAorICAgICd1cGhhcnBvb25sZWZ0Oyc6ICdcdTIxYmYnLAorICAgICd1cGhhcnBvb25yaWdodDsnOiAnXHUyMWJlJywKKyAgICAndXBsdXM7JzogJ1x1MjI4ZScsCisgICAgJ1VwcGVyTGVmdEFycm93Oyc6ICdcdTIxOTYnLAorICAgICdVcHBlclJpZ2h0QXJyb3c7JzogJ1x1MjE5NycsCisgICAgJ1Vwc2k7JzogJ1x1MDNkMicsCisgICAgJ3Vwc2k7JzogJ1x1MDNjNScsCisgICAgJ3Vwc2loOyc6ICdcdTAzZDInLAorICAgICdVcHNpbG9uOyc6ICdcdTAzYTUnLAorICAgICd1cHNpbG9uOyc6ICdcdTAzYzUnLAorICAgICdVcFRlZTsnOiAnXHUyMmE1JywKKyAgICAnVXBUZWVBcnJvdzsnOiAnXHUyMWE1JywKKyAgICAndXB1cGFycm93czsnOiAnXHUyMWM4JywKKyAgICAndXJjb3JuOyc6ICdcdTIzMWQnLAorICAgICd1cmNvcm5lcjsnOiAnXHUyMzFkJywKKyAgICAndXJjcm9wOyc6ICdcdTIzMGUnLAorICAgICdVcmluZzsnOiAnXHUwMTZlJywKKyAgICAndXJpbmc7JzogJ1x1MDE2ZicsCisgICAgJ3VydHJpOyc6ICdcdTI1ZjknLAorICAgICdVc2NyOyc6ICdcVTAwMDFkNGIwJywKKyAgICAndXNjcjsnOiAnXFUwMDAxZDRjYScsCisgICAgJ3V0ZG90Oyc6ICdcdTIyZjAnLAorICAgICdVdGlsZGU7JzogJ1x1MDE2OCcsCisgICAgJ3V0aWxkZTsnOiAnXHUwMTY5JywKKyAgICAndXRyaTsnOiAnXHUyNWI1JywKKyAgICAndXRyaWY7JzogJ1x1MjViNCcsCisgICAgJ3V1YXJyOyc6ICdcdTIxYzgnLAorICAgICdVdW1sJzogJ1x4ZGMnLAorICAgICd1dW1sJzogJ1x4ZmMnLAorICAgICdVdW1sOyc6ICdceGRjJywKKyAgICAndXVtbDsnOiAnXHhmYycsCisgICAgJ3V3YW5nbGU7JzogJ1x1MjlhNycsCisgICAgJ3ZhbmdydDsnOiAnXHUyOTljJywKKyAgICAndmFyZXBzaWxvbjsnOiAnXHUwM2Y1JywKKyAgICAndmFya2FwcGE7JzogJ1x1MDNmMCcsCisgICAgJ3Zhcm5vdGhpbmc7JzogJ1x1MjIwNScsCisgICAgJ3ZhcnBoaTsnOiAnXHUwM2Q1JywKKyAgICAndmFycGk7JzogJ1x1MDNkNicsCisgICAgJ3ZhcnByb3B0bzsnOiAnXHUyMjFkJywKKyAgICAndkFycjsnOiAnXHUyMWQ1JywKKyAgICAndmFycjsnOiAnXHUyMTk1JywKKyAgICAndmFycmhvOyc6ICdcdTAzZjEnLAorICAgICd2YXJzaWdtYTsnOiAnXHUwM2MyJywKKyAgICAndmFyc3Vic2V0bmVxOyc6ICdcdTIyOGFcdWZlMDAnLAorICAgICd2YXJzdWJzZXRuZXFxOyc6ICdcdTJhY2JcdWZlMDAnLAorICAgICd2YXJzdXBzZXRuZXE7JzogJ1x1MjI4Ylx1ZmUwMCcsCisgICAgJ3ZhcnN1cHNldG5lcXE7JzogJ1x1MmFjY1x1ZmUwMCcsCisgICAgJ3ZhcnRoZXRhOyc6ICdcdTAzZDEnLAorICAgICd2YXJ0cmlhbmdsZWxlZnQ7JzogJ1x1MjJiMicsCisgICAgJ3ZhcnRyaWFuZ2xlcmlnaHQ7JzogJ1x1MjJiMycsCisgICAgJ1ZiYXI7JzogJ1x1MmFlYicsCisgICAgJ3ZCYXI7JzogJ1x1MmFlOCcsCisgICAgJ3ZCYXJ2Oyc6ICdcdTJhZTknLAorICAgICdWY3k7JzogJ1x1MDQxMicsCisgICAgJ3ZjeTsnOiAnXHUwNDMyJywKKyAgICAnVkRhc2g7JzogJ1x1MjJhYicsCisgICAgJ1ZkYXNoOyc6ICdcdTIyYTknLAorICAgICd2RGFzaDsnOiAnXHUyMmE4JywKKyAgICAndmRhc2g7JzogJ1x1MjJhMicsCisgICAgJ1ZkYXNobDsnOiAnXHUyYWU2JywKKyAgICAnVmVlOyc6ICdcdTIyYzEnLAorICAgICd2ZWU7JzogJ1x1MjIyOCcsCisgICAgJ3ZlZWJhcjsnOiAnXHUyMmJiJywKKyAgICAndmVlZXE7JzogJ1x1MjI1YScsCisgICAgJ3ZlbGxpcDsnOiAnXHUyMmVlJywKKyAgICAnVmVyYmFyOyc6ICdcdTIwMTYnLAorICAgICd2ZXJiYXI7JzogJ3wnLAorICAgICdWZXJ0Oyc6ICdcdTIwMTYnLAorICAgICd2ZXJ0Oyc6ICd8JywKKyAgICAnVmVydGljYWxCYXI7JzogJ1x1MjIyMycsCisgICAgJ1ZlcnRpY2FsTGluZTsnOiAnfCcsCisgICAgJ1ZlcnRpY2FsU2VwYXJhdG9yOyc6ICdcdTI3NTgnLAorICAgICdWZXJ0aWNhbFRpbGRlOyc6ICdcdTIyNDAnLAorICAgICdWZXJ5VGhpblNwYWNlOyc6ICdcdTIwMGEnLAorICAgICdWZnI7JzogJ1xVMDAwMWQ1MTknLAorICAgICd2ZnI7JzogJ1xVMDAwMWQ1MzMnLAorICAgICd2bHRyaTsnOiAnXHUyMmIyJywKKyAgICAndm5zdWI7JzogJ1x1MjI4Mlx1MjBkMicsCisgICAgJ3Zuc3VwOyc6ICdcdTIyODNcdTIwZDInLAorICAgICdWb3BmOyc6ICdcVTAwMDFkNTRkJywKKyAgICAndm9wZjsnOiAnXFUwMDAxZDU2NycsCisgICAgJ3Zwcm9wOyc6ICdcdTIyMWQnLAorICAgICd2cnRyaTsnOiAnXHUyMmIzJywKKyAgICAnVnNjcjsnOiAnXFUwMDAxZDRiMScsCisgICAgJ3ZzY3I7JzogJ1xVMDAwMWQ0Y2InLAorICAgICd2c3VibkU7JzogJ1x1MmFjYlx1ZmUwMCcsCisgICAgJ3ZzdWJuZTsnOiAnXHUyMjhhXHVmZTAwJywKKyAgICAndnN1cG5FOyc6ICdcdTJhY2NcdWZlMDAnLAorICAgICd2c3VwbmU7JzogJ1x1MjI4Ylx1ZmUwMCcsCisgICAgJ1Z2ZGFzaDsnOiAnXHUyMmFhJywKKyAgICAndnppZ3phZzsnOiAnXHUyOTlhJywKKyAgICAnV2NpcmM7JzogJ1x1MDE3NCcsCisgICAgJ3djaXJjOyc6ICdcdTAxNzUnLAorICAgICd3ZWRiYXI7JzogJ1x1MmE1ZicsCisgICAgJ1dlZGdlOyc6ICdcdTIyYzAnLAorICAgICd3ZWRnZTsnOiAnXHUyMjI3JywKKyAgICAnd2VkZ2VxOyc6ICdcdTIyNTknLAorICAgICd3ZWllcnA7JzogJ1x1MjExOCcsCisgICAgJ1dmcjsnOiAnXFUwMDAxZDUxYScsCisgICAgJ3dmcjsnOiAnXFUwMDAxZDUzNCcsCisgICAgJ1dvcGY7JzogJ1xVMDAwMWQ1NGUnLAorICAgICd3b3BmOyc6ICdcVTAwMDFkNTY4JywKKyAgICAnd3A7JzogJ1x1MjExOCcsCisgICAgJ3dyOyc6ICdcdTIyNDAnLAorICAgICd3cmVhdGg7JzogJ1x1MjI0MCcsCisgICAgJ1dzY3I7JzogJ1xVMDAwMWQ0YjInLAorICAgICd3c2NyOyc6ICdcVTAwMDFkNGNjJywKKyAgICAneGNhcDsnOiAnXHUyMmMyJywKKyAgICAneGNpcmM7JzogJ1x1MjVlZicsCisgICAgJ3hjdXA7JzogJ1x1MjJjMycsCisgICAgJ3hkdHJpOyc6ICdcdTI1YmQnLAorICAgICdYZnI7JzogJ1xVMDAwMWQ1MWInLAorICAgICd4ZnI7JzogJ1xVMDAwMWQ1MzUnLAorICAgICd4aEFycjsnOiAnXHUyN2ZhJywKKyAgICAneGhhcnI7JzogJ1x1MjdmNycsCisgICAgJ1hpOyc6ICdcdTAzOWUnLAorICAgICd4aTsnOiAnXHUwM2JlJywKKyAgICAneGxBcnI7JzogJ1x1MjdmOCcsCisgICAgJ3hsYXJyOyc6ICdcdTI3ZjUnLAorICAgICd4bWFwOyc6ICdcdTI3ZmMnLAorICAgICd4bmlzOyc6ICdcdTIyZmInLAorICAgICd4b2RvdDsnOiAnXHUyYTAwJywKKyAgICAnWG9wZjsnOiAnXFUwMDAxZDU0ZicsCisgICAgJ3hvcGY7JzogJ1xVMDAwMWQ1NjknLAorICAgICd4b3BsdXM7JzogJ1x1MmEwMScsCisgICAgJ3hvdGltZTsnOiAnXHUyYTAyJywKKyAgICAneHJBcnI7JzogJ1x1MjdmOScsCisgICAgJ3hyYXJyOyc6ICdcdTI3ZjYnLAorICAgICdYc2NyOyc6ICdcVTAwMDFkNGIzJywKKyAgICAneHNjcjsnOiAnXFUwMDAxZDRjZCcsCisgICAgJ3hzcWN1cDsnOiAnXHUyYTA2JywKKyAgICAneHVwbHVzOyc6ICdcdTJhMDQnLAorICAgICd4dXRyaTsnOiAnXHUyNWIzJywKKyAgICAneHZlZTsnOiAnXHUyMmMxJywKKyAgICAneHdlZGdlOyc6ICdcdTIyYzAnLAorICAgICdZYWN1dGUnOiAnXHhkZCcsCisgICAgJ3lhY3V0ZSc6ICdceGZkJywKKyAgICAnWWFjdXRlOyc6ICdceGRkJywKKyAgICAneWFjdXRlOyc6ICdceGZkJywKKyAgICAnWUFjeTsnOiAnXHUwNDJmJywKKyAgICAneWFjeTsnOiAnXHUwNDRmJywKKyAgICAnWWNpcmM7JzogJ1x1MDE3NicsCisgICAgJ3ljaXJjOyc6ICdcdTAxNzcnLAorICAgICdZY3k7JzogJ1x1MDQyYicsCisgICAgJ3ljeTsnOiAnXHUwNDRiJywKKyAgICAneWVuJzogJ1x4YTUnLAorICAgICd5ZW47JzogJ1x4YTUnLAorICAgICdZZnI7JzogJ1xVMDAwMWQ1MWMnLAorICAgICd5ZnI7JzogJ1xVMDAwMWQ1MzYnLAorICAgICdZSWN5Oyc6ICdcdTA0MDcnLAorICAgICd5aWN5Oyc6ICdcdTA0NTcnLAorICAgICdZb3BmOyc6ICdcVTAwMDFkNTUwJywKKyAgICAneW9wZjsnOiAnXFUwMDAxZDU2YScsCisgICAgJ1lzY3I7JzogJ1xVMDAwMWQ0YjQnLAorICAgICd5c2NyOyc6ICdcVTAwMDFkNGNlJywKKyAgICAnWVVjeTsnOiAnXHUwNDJlJywKKyAgICAneXVjeTsnOiAnXHUwNDRlJywKKyAgICAneXVtbCc6ICdceGZmJywKKyAgICAnWXVtbDsnOiAnXHUwMTc4JywKKyAgICAneXVtbDsnOiAnXHhmZicsCisgICAgJ1phY3V0ZTsnOiAnXHUwMTc5JywKKyAgICAnemFjdXRlOyc6ICdcdTAxN2EnLAorICAgICdaY2Fyb247JzogJ1x1MDE3ZCcsCisgICAgJ3pjYXJvbjsnOiAnXHUwMTdlJywKKyAgICAnWmN5Oyc6ICdcdTA0MTcnLAorICAgICd6Y3k7JzogJ1x1MDQzNycsCisgICAgJ1pkb3Q7JzogJ1x1MDE3YicsCisgICAgJ3pkb3Q7JzogJ1x1MDE3YycsCisgICAgJ3plZXRyZjsnOiAnXHUyMTI4JywKKyAgICAnWmVyb1dpZHRoU3BhY2U7JzogJ1x1MjAwYicsCisgICAgJ1pldGE7JzogJ1x1MDM5NicsCisgICAgJ3pldGE7JzogJ1x1MDNiNicsCisgICAgJ1pmcjsnOiAnXHUyMTI4JywKKyAgICAnemZyOyc6ICdcVTAwMDFkNTM3JywKKyAgICAnWkhjeTsnOiAnXHUwNDE2JywKKyAgICAnemhjeTsnOiAnXHUwNDM2JywKKyAgICAnemlncmFycjsnOiAnXHUyMWRkJywKKyAgICAnWm9wZjsnOiAnXHUyMTI0JywKKyAgICAnem9wZjsnOiAnXFUwMDAxZDU2YicsCisgICAgJ1pzY3I7JzogJ1xVMDAwMWQ0YjUnLAorICAgICd6c2NyOyc6ICdcVTAwMDFkNGNmJywKKyAgICAnendqOyc6ICdcdTIwMGQnLAorICAgICd6d25qOyc6ICdcdTIwMGMnLAorfQorCiAjIG1hcHMgdGhlIFVuaWNvZGUgY29kZXBvaW50IHRvIHRoZSBIVE1MIGVudGl0eSBuYW1lCiBjb2RlcG9pbnQybmFtZSA9IHt9CiAKZGlmZiAtLWdpdCBhL0xpYi9odG1sL3BhcnNlci5weSBiL0xpYi9odG1sL3BhcnNlci5weQppbmRleCBkZTUwNGFiLi5mOGFjODI4IDEwMDY0NAotLS0gYS9MaWIvaHRtbC9wYXJzZXIucHkKKysrIGIvTGliL2h0bWwvcGFyc2VyLnB5CkBAIC0xMCw2ICsxMCw3IEBACiAKIGltcG9ydCBfbWFya3VwYmFzZQogaW1wb3J0IHJlCitpbXBvcnQgd2FybmluZ3MKIAogIyBSZWd1bGFyIGV4cHJlc3Npb25zIHVzZWQgZm9yIHBhcnNpbmcKIApAQCAtMTEzLDE0ICsxMTQsMTYgQEAKIAogICAgIENEQVRBX0NPTlRFTlRfRUxFTUVOVFMgPSAoInNjcmlwdCIsICJzdHlsZSIpCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaWN0PVRydWUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJpY3Q9RmFsc2UpOgogICAgICAgICAiIiJJbml0aWFsaXplIGFuZCByZXNldCB0aGlzIGluc3RhbmNlLgogCi0gICAgICAgIElmIHN0cmljdCBpcyBzZXQgdG8gVHJ1ZSAodGhlIGRlZmF1bHQpLCBlcnJvcnMgYXJlIHJhaXNlZCB3aGVuIGludmFsaWQKLSAgICAgICAgSFRNTCBpcyBlbmNvdW50ZXJlZC4gIElmIHNldCB0byBGYWxzZSwgYW4gYXR0ZW1wdCBpcyBpbnN0ZWFkIG1hZGUgdG8KLSAgICAgICAgY29udGludWUgcGFyc2luZywgbWFraW5nICJiZXN0IGd1ZXNzZXMiIGFib3V0IHRoZSBpbnRlbmRlZCBtZWFuaW5nLCBpbgotICAgICAgICBhIGZhc2hpb24gc2ltaWxhciB0byB3aGF0IGJyb3dzZXJzIHR5cGljYWxseSBkby4KKyAgICAgICAgSWYgc3RyaWN0IGlzIHNldCB0byBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZSBwYXJzZXIgd2lsbCBwYXJzZSBpbnZhbGlkCisgICAgICAgIG1hcmt1cCwgb3RoZXJ3aXNlIGl0IHdpbGwgcmFpc2UgYW4gZXJyb3IuICBOb3RlIHRoYXQgdGhlIHN0cmljdCBtb2RlCisgICAgICAgIGlzIGRlcHJlY2F0ZWQuCiAgICAgICAgICIiIgorICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgc3RyaWN0IG1vZGUgaXMgZGVwcmVjYXRlZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5zdHJpY3QgPSBzdHJpY3QKICAgICAgICAgc2VsZi5yZXNldCgpCiAKQEAgLTI3MSw4ICsyNzQsOCBAQAogICAgICMgU2VlIGFsc28gcGFyc2VfZGVjbGFyYXRpb24gaW4gX21hcmt1cGJhc2UKICAgICBkZWYgcGFyc2VfaHRtbF9kZWNsYXJhdGlvbihzZWxmLCBpKToKICAgICAgICAgcmF3ZGF0YSA9IHNlbGYucmF3ZGF0YQotICAgICAgICBpZiByYXdkYXRhW2k6aSsyXSAhPSAnPCEnOgotICAgICAgICAgICAgc2VsZi5lcnJvcigndW5leHBlY3RlZCBjYWxsIHRvIHBhcnNlX2h0bWxfZGVjbGFyYXRpb24oKScpCisgICAgICAgIGFzc2VydCByYXdkYXRhW2k6aSsyXSA9PSAnPCEnLCAoJ3VuZXhwZWN0ZWQgY2FsbCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcnNlX2h0bWxfZGVjbGFyYXRpb24oKScpCiAgICAgICAgIGlmIHJhd2RhdGFbaTppKzRdID09ICc8IS0tJzoKICAgICAgICAgICAgICMgdGhpcyBjYXNlIGlzIGFjdHVhbGx5IGFscmVhZHkgaGFuZGxlZCBpbiBnb2FoZWFkKCkKICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcnNlX2NvbW1lbnQoaSkKQEAgLTI5Miw4ICsyOTUsOCBAQAogICAgICMgc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3Rva2VuaXphdGlvbi5odG1sI2JvZ3VzLWNvbW1lbnQtc3RhdGUKICAgICBkZWYgcGFyc2VfYm9ndXNfY29tbWVudChzZWxmLCBpLCByZXBvcnQ9MSk6CiAgICAgICAgIHJhd2RhdGEgPSBzZWxmLnJhd2RhdGEKLSAgICAgICAgaWYgcmF3ZGF0YVtpOmkrMl0gbm90IGluICgnPCEnLCAnPC8nKToKLSAgICAgICAgICAgIHNlbGYuZXJyb3IoJ3VuZXhwZWN0ZWQgY2FsbCB0byBwYXJzZV9jb21tZW50KCknKQorICAgICAgICBhc3NlcnQgcmF3ZGF0YVtpOmkrMl0gaW4gKCc8IScsICc8LycpLCAoJ3VuZXhwZWN0ZWQgY2FsbCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFyc2VfY29tbWVudCgpJykKICAgICAgICAgcG9zID0gcmF3ZGF0YS5maW5kKCc+JywgaSsyKQogICAgICAgICBpZiBwb3MgPT0gLTE6CiAgICAgICAgICAgICByZXR1cm4gLTEKQEAgLTQ5Nyw3ICs1MDAsNiBAQAogICAgICAgICAgICAgc2VsZi5lcnJvcigidW5rbm93biBkZWNsYXJhdGlvbjogJXIiICUgKGRhdGEsKSkKIAogICAgICMgSW50ZXJuYWwgLS0gaGVscGVyIHRvIHJlbW92ZSBzcGVjaWFsIGNoYXJhY3RlciBxdW90aW5nCi0gICAgZW50aXR5ZGVmcyA9IE5vbmUKICAgICBkZWYgdW5lc2NhcGUoc2VsZiwgcyk6CiAgICAgICAgIGlmICcmJyBub3QgaW4gczoKICAgICAgICAgICAgIHJldHVybiBzCkBAIC01MDcsMjQgKzUwOSwyMyBAQAogICAgICAgICAgICAgICAgIGlmIHNbMF0gPT0gIiMiOgogICAgICAgICAgICAgICAgICAgICBzID0gc1sxOl0KICAgICAgICAgICAgICAgICAgICAgaWYgc1swXSBpbiBbJ3gnLCdYJ106Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gaW50KHNbMTpdLCAxNikKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBpbnQoc1sxOl0ucnN0cmlwKCc7JyksIDE2KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChzKQorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChzLnJzdHJpcCgnOycpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2hyKGMpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gJyYjJysgcyArJzsnCisgICAgICAgICAgICAgICAgcmV0dXJuICcmIycgKyBzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgQ2Fubm90IHVzZSBuYW1lMmNvZGVwb2ludCBkaXJlY3RseSwgYmVjYXVzZSBIVE1MUGFyc2VyCi0gICAgICAgICAgICAgICAgIyBzdXBwb3J0cyBhcG9zLCB3aGljaCBpcyBub3QgcGFydCBvZiBIVE1MIDQKLSAgICAgICAgICAgICAgICBpbXBvcnQgaHRtbC5lbnRpdGllcwotICAgICAgICAgICAgICAgIGlmIEhUTUxQYXJzZXIuZW50aXR5ZGVmcyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBlbnRpdHlkZWZzID0gSFRNTFBhcnNlci5lbnRpdHlkZWZzID0geydhcG9zJzoiJyJ9Ci0gICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGh0bWwuZW50aXRpZXMubmFtZTJjb2RlcG9pbnQuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eWRlZnNba10gPSBjaHIodikKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmVudGl0eWRlZnNbc10KLSAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnJicrcysnOycKKyAgICAgICAgICAgICAgICBmcm9tIGh0bWwuZW50aXRpZXMgaW1wb3J0IGh0bWw1CisgICAgICAgICAgICAgICAgaWYgcyBpbiBodG1sNToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGh0bWw1W3NdCisgICAgICAgICAgICAgICAgZWxpZiBzLmVuZHN3aXRoKCc7Jyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJicgKyBzCisgICAgICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMiwgbGVuKHMpKToKKyAgICAgICAgICAgICAgICAgICAgaWYgc1s6eF0gaW4gaHRtbDU6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaHRtbDVbc1s6eF1dICsgc1t4Ol0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyYnICsgcwogCi0gICAgICAgIHJldHVybiByZS5zdWIociImKCM/W3hYXT8oPzpbMC05YS1mQS1GXSt8XHd7MSw4fSkpOyIsCisgICAgICAgIHJldHVybiByZS5zdWIociImKCM/W3hYXT8oPzpbMC05YS1mQS1GXSs7fFx3ezEsMzJ9Oz8pKSIsCiAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZUVudGl0aWVzLCBzLCBmbGFncz1yZS5BU0NJSSkKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2NsaWVudC5weSBiL0xpYi9odHRwL2NsaWVudC5weQppbmRleCA5N2E3MTU1Li45YjAxNzA0IDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jbGllbnQucHkKKysrIGIvTGliL2h0dHAvY2xpZW50LnB5CkBAIC0xNDEsNiArMTQxLDkgQEAKIExPQ0tFRCA9IDQyMwogRkFJTEVEX0RFUEVOREVOQ1kgPSA0MjQKIFVQR1JBREVfUkVRVUlSRUQgPSA0MjYKK1BSRUNPTkRJVElPTl9SRVFVSVJFRCA9IDQyOAorVE9PX01BTllfUkVRVUVTVFMgPSA0MjkKK1JFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UgPSA0MzEKIAogIyBzZXJ2ZXIgZXJyb3IKIElOVEVSTkFMX1NFUlZFUl9FUlJPUiA9IDUwMApAQCAtMTUxLDYgKzE1NCw3IEBACiBIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRCA9IDUwNQogSU5TVUZGSUNJRU5UX1NUT1JBR0UgPSA1MDcKIE5PVF9FWFRFTkRFRCA9IDUxMAorTkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRCA9IDUxMQogCiAjIE1hcHBpbmcgc3RhdHVzIGNvZGVzIHRvIG9mZmljaWFsIFczQyBuYW1lcwogcmVzcG9uc2VzID0gewpAQCAtMTkyLDYgKzE5Niw5IEBACiAgICAgNDE1OiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCiAgICAgNDE2OiAnUmVxdWVzdGVkIFJhbmdlIE5vdCBTYXRpc2ZpYWJsZScsCiAgICAgNDE3OiAnRXhwZWN0YXRpb24gRmFpbGVkJywKKyAgICA0Mjg6ICdQcmVjb25kaXRpb24gUmVxdWlyZWQnLAorICAgIDQyOTogJ1RvbyBNYW55IFJlcXVlc3RzJywKKyAgICA0MzE6ICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKIAogICAgIDUwMDogJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCiAgICAgNTAxOiAnTm90IEltcGxlbWVudGVkJywKQEAgLTE5OSw2ICsyMDYsNyBAQAogICAgIDUwMzogJ1NlcnZpY2UgVW5hdmFpbGFibGUnLAogICAgIDUwNDogJ0dhdGV3YXkgVGltZW91dCcsCiAgICAgNTA1OiAnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLAorICAgIDUxMTogJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogfQogCiAjIG1heGltYWwgYW1vdW50IG9mIGRhdGEgdG8gcmVhZCBhdCBvbmUgdGltZSBpbiBfc2FmZV9yZWFkCkBAIC00ODUsMTEgKzQ5MywxNyBAQAogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICByZXR1cm4gYiIiCiAKLSAgICAgICAgaWYgc2VsZi5jaHVua2VkOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfY2h1bmtlZChhbXQpCisgICAgICAgIGlmIGFtdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgQW1vdW50IGlzIGdpdmVuLCBzbyBjYWxsIGJhc2UgY2xhc3MgdmVyc2lvbgorICAgICAgICAgICAgIyAod2hpY2ggaXMgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2Ygc2VsZi5yZWFkaW50bykKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihIVFRQUmVzcG9uc2UsIHNlbGYpLnJlYWQoYW10KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBBbW91bnQgaXMgbm90IGdpdmVuICh1bmJvdW5kZWQgcmVhZCkgc28gd2UgbXVzdCBjaGVjayBzZWxmLmxlbmd0aAorICAgICAgICAgICAgIyBhbmQgc2VsZi5jaHVua2VkCiAKLSAgICAgICAgaWYgYW10IGlzIE5vbmU6Ci0gICAgICAgICAgICAjIHVuYm91bmRlZCByZWFkCisgICAgICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRhbGxfY2h1bmtlZCgpCisKICAgICAgICAgICAgIGlmIHNlbGYubGVuZ3RoIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcyA9IHNlbGYuZnAucmVhZCgpCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDk4LDYxICs1MTIsNDkgQEAKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKSAgICAgICAgIyB3ZSByZWFkIGV2ZXJ5dGhpbmcKICAgICAgICAgICAgIHJldHVybiBzCiAKKyAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgaWYgc2VsZi5fbWV0aG9kID09ICJIRUFEIjoKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgcmV0dXJuIDAKKworICAgICAgICBpZiBzZWxmLmNodW5rZWQ6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGludG9fY2h1bmtlZChiKQorCiAgICAgICAgIGlmIHNlbGYubGVuZ3RoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgYW10ID4gc2VsZi5sZW5ndGg6CisgICAgICAgICAgICBpZiBsZW4oYikgPiBzZWxmLmxlbmd0aDoKICAgICAgICAgICAgICAgICAjIGNsaXAgdGhlIHJlYWQgdG8gdGhlICJlbmQgb2YgcmVzcG9uc2UiCi0gICAgICAgICAgICAgICAgYW10ID0gc2VsZi5sZW5ndGgKKyAgICAgICAgICAgICAgICBiID0gbWVtb3J5dmlldyhiKVswOnNlbGYubGVuZ3RoXQogCiAgICAgICAgICMgd2UgZG8gbm90IHVzZSBfc2FmZV9yZWFkKCkgaGVyZSBiZWNhdXNlIHRoaXMgbWF5IGJlIGEgLndpbGxfY2xvc2UKICAgICAgICAgIyBjb25uZWN0aW9uLCBhbmQgdGhlIHVzZXIgaXMgcmVhZGluZyBtb3JlIGJ5dGVzIHRoYW4gd2lsbCBiZSBwcm92aWRlZAogICAgICAgICAjIChmb3IgZXhhbXBsZSwgcmVhZGluZyBpbiAxayBjaHVua3MpCi0gICAgICAgIHMgPSBzZWxmLmZwLnJlYWQoYW10KQorICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byhiKQogICAgICAgICBpZiBzZWxmLmxlbmd0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYubGVuZ3RoIC09IGxlbihzKQorICAgICAgICAgICAgc2VsZi5sZW5ndGggLT0gbgogICAgICAgICAgICAgaWYgbm90IHNlbGYubGVuZ3RoOgogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQotICAgICAgICByZXR1cm4gcworICAgICAgICByZXR1cm4gbgogCi0gICAgZGVmIF9yZWFkX2NodW5rZWQoc2VsZiwgYW10KToKLSAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgotICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0Ci0gICAgICAgIHZhbHVlID0gW10KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2VsZi5mcC5yZWFkbGluZShfTUFYTElORSArIDEpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGxpbmUpID4gX01BWExJTkU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIExpbmVUb29Mb25nKCJjaHVuayBzaXplIikKLSAgICAgICAgICAgICAgICBpID0gbGluZS5maW5kKGIiOyIpCi0gICAgICAgICAgICAgICAgaWYgaSA+PSAwOgotICAgICAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6aV0gIyBzdHJpcCBjaHVuay1leHRlbnNpb25zCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gaW50KGxpbmUsIDE2KQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICAjIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFzIHByb3RvY29sIHN5bmNocm9uaXNhdGlvbiBpcwotICAgICAgICAgICAgICAgICAgICAjIHByb2JhYmx5IGxvc3QKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkKLSAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBhbXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQotICAgICAgICAgICAgZWxpZiBhbXQgPCBjaHVua19sZWZ0OgotICAgICAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoYW10KSkKLSAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0IC0gYW10Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQotICAgICAgICAgICAgZWxpZiBhbXQgPT0gY2h1bmtfbGVmdDoKLSAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGFtdCkpCi0gICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBOb25lCi0gICAgICAgICAgICAgICAgcmV0dXJuIGInJy5qb2luKHZhbHVlKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB2YWx1ZS5hcHBlbmQoc2VsZi5fc2FmZV9yZWFkKGNodW5rX2xlZnQpKQotICAgICAgICAgICAgICAgIGFtdCAtPSBjaHVua19sZWZ0CisgICAgZGVmIF9yZWFkX25leHRfY2h1bmtfc2l6ZShzZWxmKToKKyAgICAgICAgIyBSZWFkIHRoZSBuZXh0IGNodW5rIHNpemUgZnJvbSB0aGUgZmlsZQorICAgICAgICBsaW5lID0gc2VsZi5mcC5yZWFkbGluZShfTUFYTElORSArIDEpCisgICAgICAgIGlmIGxlbihsaW5lKSA+IF9NQVhMSU5FOgorICAgICAgICAgICAgcmFpc2UgTGluZVRvb0xvbmcoImNodW5rIHNpemUiKQorICAgICAgICBpID0gbGluZS5maW5kKGIiOyIpCisgICAgICAgIGlmIGkgPj0gMDoKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lWzppXSAjIHN0cmlwIGNodW5rLWV4dGVuc2lvbnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludChsaW5lLCAxNikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNsb3NlIHRoZSBjb25uZWN0aW9uIGFzIHByb3RvY29sIHN5bmNocm9uaXNhdGlvbiBpcworICAgICAgICAgICAgIyBwcm9iYWJseSBsb3N0CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgICAgICMgd2UgcmVhZCB0aGUgd2hvbGUgY2h1bmssIGdldCBhbm90aGVyCi0gICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICAgICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKLSAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCi0KKyAgICBkZWYgX3JlYWRfYW5kX2Rpc2NhcmRfdHJhaWxlcihzZWxmKToKICAgICAgICAgIyByZWFkIGFuZCBkaXNjYXJkIHRyYWlsZXIgdXAgdG8gdGhlIENSTEYgdGVybWluYXRvcgogICAgICAgICAjIyMgbm90ZTogd2Ugc2hvdWxkbid0IGhhdmUgYW55IHRyYWlsZXJzIQogICAgICAgICB3aGlsZSBUcnVlOgpAQCAtNTY2LDExICs1NjgsNzIgQEAKICAgICAgICAgICAgIGlmIGxpbmUgaW4gKGInXHJcbicsIGInXG4nLCBiJycpOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICBkZWYgX3JlYWRhbGxfY2h1bmtlZChzZWxmKToKKyAgICAgICAgYXNzZXJ0IHNlbGYuY2h1bmtlZCAhPSBfVU5LTk9XTgorICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5jaHVua19sZWZ0CisgICAgICAgIHZhbHVlID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlZnQgPSBzZWxmLl9yZWFkX25leHRfY2h1bmtfc2l6ZSgpCisgICAgICAgICAgICAgICAgICAgIGlmIGNodW5rX2xlZnQgPT0gMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEluY29tcGxldGVSZWFkKGInJy5qb2luKHZhbHVlKSkKKyAgICAgICAgICAgIHZhbHVlLmFwcGVuZChzZWxmLl9zYWZlX3JlYWQoY2h1bmtfbGVmdCkpCisKKyAgICAgICAgICAgICMgd2UgcmVhZCB0aGUgd2hvbGUgY2h1bmssIGdldCBhbm90aGVyCisgICAgICAgICAgICBzZWxmLl9zYWZlX3JlYWQoMikgICAgICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKKyAgICAgICAgICAgIGNodW5rX2xlZnQgPSBOb25lCisKKyAgICAgICAgc2VsZi5fcmVhZF9hbmRfZGlzY2FyZF90cmFpbGVyKCkKKwogICAgICAgICAjIHdlIHJlYWQgZXZlcnl0aGluZzsgY2xvc2UgdGhlICJmaWxlIgogICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgICAgICByZXR1cm4gYicnLmpvaW4odmFsdWUpCiAKKyAgICBkZWYgX3JlYWRpbnRvX2NodW5rZWQoc2VsZiwgYik6CisgICAgICAgIGFzc2VydCBzZWxmLmNodW5rZWQgIT0gX1VOS05PV04KKyAgICAgICAgY2h1bmtfbGVmdCA9IHNlbGYuY2h1bmtfbGVmdAorCisgICAgICAgIHRvdGFsX2J5dGVzID0gMAorICAgICAgICBtdmIgPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBpZiBjaHVua19sZWZ0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBjaHVua19sZWZ0ID0gc2VsZi5fcmVhZF9uZXh0X2NodW5rX3NpemUoKQorICAgICAgICAgICAgICAgICAgICBpZiBjaHVua19sZWZ0ID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbmNvbXBsZXRlUmVhZChieXRlcyhiWzA6dG90YWxfYnl0ZXNdKSkKKworICAgICAgICAgICAgaWYgbGVuKG12YikgPCBjaHVua19sZWZ0OgorICAgICAgICAgICAgICAgIG4gPSBzZWxmLl9zYWZlX3JlYWRpbnRvKG12YikKKyAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBjaHVua19sZWZ0IC0gbgorICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcyArIG4KKyAgICAgICAgICAgIGVsaWYgbGVuKG12YikgPT0gY2h1bmtfbGVmdDoKKyAgICAgICAgICAgICAgICBuID0gc2VsZi5fc2FmZV9yZWFkaW50byhtdmIpCisgICAgICAgICAgICAgICAgc2VsZi5fc2FmZV9yZWFkKDIpICAjIHRvc3MgdGhlIENSTEYgYXQgdGhlIGVuZCBvZiB0aGUgY2h1bmsKKyAgICAgICAgICAgICAgICBzZWxmLmNodW5rX2xlZnQgPSBOb25lCisgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsX2J5dGVzICsgbgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0ZW1wX212YiA9IG12YlswOmNodW5rX2xlZnRdCisgICAgICAgICAgICAgICAgbiA9IHNlbGYuX3NhZmVfcmVhZGludG8odGVtcF9tdmIpCisgICAgICAgICAgICAgICAgbXZiID0gbXZiW246XQorICAgICAgICAgICAgICAgIHRvdGFsX2J5dGVzICs9IG4KKworICAgICAgICAgICAgIyB3ZSByZWFkIHRoZSB3aG9sZSBjaHVuaywgZ2V0IGFub3RoZXIKKyAgICAgICAgICAgIHNlbGYuX3NhZmVfcmVhZCgyKSAgICAgICMgdG9zcyB0aGUgQ1JMRiBhdCB0aGUgZW5kIG9mIHRoZSBjaHVuaworICAgICAgICAgICAgY2h1bmtfbGVmdCA9IE5vbmUKKworICAgICAgICBzZWxmLl9yZWFkX2FuZF9kaXNjYXJkX3RyYWlsZXIoKQorCisgICAgICAgICMgd2UgcmVhZCBldmVyeXRoaW5nOyBjbG9zZSB0aGUgImZpbGUiCisgICAgICAgIHNlbGYuY2xvc2UoKQorCisgICAgICAgIHJldHVybiB0b3RhbF9ieXRlcworCiAgICAgZGVmIF9zYWZlX3JlYWQoc2VsZiwgYW10KToKICAgICAgICAgIiIiUmVhZCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVlc3RlZCwgY29tcGVuc2F0aW5nIGZvciBwYXJ0aWFsIHJlYWRzLgogCkBAIC01OTQsNiArNjU3LDIyIEBACiAgICAgICAgICAgICBhbXQgLT0gbGVuKGNodW5rKQogICAgICAgICByZXR1cm4gYiIiLmpvaW4ocykKIAorICAgIGRlZiBfc2FmZV9yZWFkaW50byhzZWxmLCBiKToKKyAgICAgICAgIiIiU2FtZSBhcyBfc2FmZV9yZWFkLCBidXQgZm9yIHJlYWRpbmcgaW50byBhIGJ1ZmZlci4iIiIKKyAgICAgICAgdG90YWxfYnl0ZXMgPSAwCisgICAgICAgIG12YiA9IG1lbW9yeXZpZXcoYikKKyAgICAgICAgd2hpbGUgdG90YWxfYnl0ZXMgPCBsZW4oYik6CisgICAgICAgICAgICBpZiBNQVhBTU9VTlQgPCBsZW4obXZiKToKKyAgICAgICAgICAgICAgICB0ZW1wX212YiA9IG12YlswOk1BWEFNT1VOVF0KKyAgICAgICAgICAgICAgICBuID0gc2VsZi5mcC5yZWFkaW50byh0ZW1wX212YikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbiA9IHNlbGYuZnAucmVhZGludG8obXZiKQorICAgICAgICAgICAgaWYgbm90IG46CisgICAgICAgICAgICAgICAgcmFpc2UgSW5jb21wbGV0ZVJlYWQoYnl0ZXMobXZiWzA6dG90YWxfYnl0ZXNdKSwgbGVuKGIpKQorICAgICAgICAgICAgbXZiID0gbXZiW246XQorICAgICAgICAgICAgdG90YWxfYnl0ZXMgKz0gbgorICAgICAgICByZXR1cm4gdG90YWxfYnl0ZXMKKwogICAgIGRlZiBmaWxlbm8oc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmZwLmZpbGVubygpCiAKQEAgLTcwMCw3ICs3NzksNyBAQAogICAgICAgICBzZWxmLnNlbmQoY29ubmVjdF9ieXRlcykKICAgICAgICAgZm9yIGhlYWRlciwgdmFsdWUgaW4gc2VsZi5fdHVubmVsX2hlYWRlcnMuaXRlbXMoKToKICAgICAgICAgICAgIGhlYWRlcl9zdHIgPSAiJXM6ICVzXHJcbiIgJSAoaGVhZGVyLCB2YWx1ZSkKLSAgICAgICAgICAgIGhlYWRlcl9ieXRlcyA9IGhlYWRlcl9zdHIuZW5jb2RlKCJsYXRpbjEiKQorICAgICAgICAgICAgaGVhZGVyX2J5dGVzID0gaGVhZGVyX3N0ci5lbmNvZGUoImxhdGluLTEiKQogICAgICAgICAgICAgc2VsZi5zZW5kKGhlYWRlcl9ieXRlcykKICAgICAgICAgc2VsZi5zZW5kKGInXHJcbicpCiAKQEAgLTk0Myw3ICsxMDIyLDcgQEAKICAgICAgICAgdmFsdWVzID0gbGlzdCh2YWx1ZXMpCiAgICAgICAgIGZvciBpLCBvbmVfdmFsdWUgaW4gZW51bWVyYXRlKHZhbHVlcyk6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKG9uZV92YWx1ZSwgJ2VuY29kZScpOgotICAgICAgICAgICAgICAgIHZhbHVlc1tpXSA9IG9uZV92YWx1ZS5lbmNvZGUoJ2xhdGluMScpCisgICAgICAgICAgICAgICAgdmFsdWVzW2ldID0gb25lX3ZhbHVlLmVuY29kZSgnbGF0aW4tMScpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob25lX3ZhbHVlLCBpbnQpOgogICAgICAgICAgICAgICAgIHZhbHVlc1tpXSA9IHN0cihvbmVfdmFsdWUpLmVuY29kZSgnYXNjaWknKQogICAgICAgICB2YWx1ZSA9IGInXHJcblx0Jy5qb2luKHZhbHVlcykKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZWphci5weSBiL0xpYi9odHRwL2Nvb2tpZWphci5weQppbmRleCBiNmNmYzM1Li45MDFlNzYyIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVqYXIucHkKKysrIGIvTGliL2h0dHAvY29va2llamFyLnB5CkBAIC02MjUsNyArNjI1LDcgQEAKICAgICByZXR1cm4gcGF0aAogCiBkZWYgcmVxdWVzdF9wb3J0KHJlcXVlc3QpOgotICAgIGhvc3QgPSByZXF1ZXN0LmdldF9ob3N0KCkKKyAgICBob3N0ID0gcmVxdWVzdC5ob3N0CiAgICAgaSA9IGhvc3QuZmluZCgnOicpCiAgICAgaWYgaSA+PSAwOgogICAgICAgICBwb3J0ID0gaG9zdFtpKzE6XQpAQCAtOTQ5LDcgKzk0OSw3IEBACiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYgc2V0X29rX3ZlcmlmaWFiaWxpdHkoc2VsZiwgY29va2llLCByZXF1ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC5pc191bnZlcmlmaWFibGUoKSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CisgICAgICAgIGlmIHJlcXVlc3QudW52ZXJpZmlhYmxlIGFuZCBpc190aGlyZF9wYXJ0eShyZXF1ZXN0KToKICAgICAgICAgICAgIGlmIGNvb2tpZS52ZXJzaW9uID4gMCBhbmQgc2VsZi5zdHJpY3RfcmZjMjk2NV91bnZlcmlmaWFibGU6CiAgICAgICAgICAgICAgICAgX2RlYnVnKCIgICB0aGlyZC1wYXJ0eSBSRkMgMjk2NSBjb29raWUgZHVyaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVudmVyaWZpYWJsZSB0cmFuc2FjdGlvbiIpCkBAIC0xMDg4LDcgKzEwODgsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgZGVmIHJldHVybl9va192ZXJpZmlhYmlsaXR5KHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6Ci0gICAgICAgIGlmIHJlcXVlc3QuaXNfdW52ZXJpZmlhYmxlKCkgYW5kIGlzX3RoaXJkX3BhcnR5KHJlcXVlc3QpOgorICAgICAgICBpZiByZXF1ZXN0LnVudmVyaWZpYWJsZSBhbmQgaXNfdGhpcmRfcGFydHkocmVxdWVzdCk6CiAgICAgICAgICAgICBpZiBjb29raWUudmVyc2lvbiA+IDAgYW5kIHNlbGYuc3RyaWN0X3JmYzI5NjVfdW52ZXJpZmlhYmxlOgogICAgICAgICAgICAgICAgIF9kZWJ1ZygiICAgdGhpcmQtcGFydHkgUkZDIDI5NjUgY29va2llIGR1cmluZyB1bnZlcmlmaWFibGUgIgogICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNhY3Rpb24iKQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiByZXR1cm5fb2tfc2VjdXJlKHNlbGYsIGNvb2tpZSwgcmVxdWVzdCk6Ci0gICAgICAgIGlmIGNvb2tpZS5zZWN1cmUgYW5kIHJlcXVlc3QuZ2V0X3R5cGUoKSAhPSAiaHR0cHMiOgorICAgICAgICBpZiBjb29raWUuc2VjdXJlIGFuZCByZXF1ZXN0LnR5cGUgIT0gImh0dHBzIjoKICAgICAgICAgICAgIF9kZWJ1ZygiICAgc2VjdXJlIGNvb2tpZSB3aXRoIG5vbi1zZWN1cmUgcmVxdWVzdCIpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZXMucHkgYi9MaWIvaHR0cC9jb29raWVzLnB5CmluZGV4IGRkYmNiZjguLmQyOTE2NzggMTAwNjQ0Ci0tLSBhL0xpYi9odHRwL2Nvb2tpZXMucHkKKysrIGIvTGliL2h0dHAvY29va2llcy5weQpAQCAtMTU5LDcgKzE1OSw3IEBACiAjICAgICAgIF9MZWdhbENoYXJzICAgICAgIGlzIHRoZSBsaXN0IG9mIGNoYXJzIHdoaWNoIGRvbid0IHJlcXVpcmUgIidzCiAjICAgICAgIF9UcmFuc2xhdG9yICAgICAgIGhhc2gtdGFibGUgZm9yIGZhc3QgcXVvdGluZwogIwotX0xlZ2FsQ2hhcnMgICAgICAgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+IgorX0xlZ2FsQ2hhcnMgICAgICAgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiISMkJSYnKistLl5fYHx+OiIKIF9UcmFuc2xhdG9yICAgICAgID0gewogICAgICdcMDAwJyA6ICdcXDAwMCcsICAnXDAwMScgOiAnXFwwMDEnLCAgJ1wwMDInIDogJ1xcMDAyJywKICAgICAnXDAwMycgOiAnXFwwMDMnLCAgJ1wwMDQnIDogJ1xcMDA0JywgICdcMDA1JyA6ICdcXDAwNScsCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9zZXJ2ZXIucHkgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKaW5kZXggNTU2OTAzNy4uYzRhYzcwMyAxMDA2NDQKLS0tIGEvTGliL2h0dHAvc2VydmVyLnB5CisrKyBiL0xpYi9odHRwL3NlcnZlci5weQpAQCAtMTAwLDExICsxMDAsMTQgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgdXJsbGliLnBhcnNlCiBpbXBvcnQgY29weQoraW1wb3J0IGFyZ3BhcnNlCisKIAogIyBEZWZhdWx0IGVycm9yIG1lc3NhZ2UgdGVtcGxhdGUKIERFRkFVTFRfRVJST1JfTUVTU0FHRSA9ICIiIlwKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWw+CiAgICAgPGhlYWQ+CiAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9dXRmLTgiPgogICAgICAgICA8dGl0bGU+RXJyb3IgcmVzcG9uc2U8L3RpdGxlPgpAQCAtMzUyLDYgKzM1NSw3IEBACiAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZV9vbmx5KDEwMCkKKyAgICAgICAgc2VsZi5mbHVzaF9oZWFkZXJzKCkKICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgIGRlZiBoYW5kbGVfb25lX3JlcXVlc3Qoc2VsZik6CkBAIC00MjksNyArNDMzLDggQEAKICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoY29udGVudC5lbmNvZGUoJ1VURi04JywgJ3JlcGxhY2UnKSkKIAogICAgIGRlZiBzZW5kX3Jlc3BvbnNlKHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgICIiIlNlbmQgdGhlIHJlc3BvbnNlIGhlYWRlciBhbmQgbG9nIHRoZSByZXNwb25zZSBjb2RlLgorICAgICAgICAiIiJBZGQgdGhlIHJlc3BvbnNlIGhlYWRlciB0byB0aGUgaGVhZGVycyBidWZmZXIgYW5kIGxvZyB0aGUKKyAgICAgICAgcmVzcG9uc2UgY29kZS4KIAogICAgICAgICBBbHNvIHNlbmQgdHdvIHN0YW5kYXJkIGhlYWRlcnMgd2l0aCB0aGUgc2VydmVyIHNvZnR3YXJlCiAgICAgICAgIHZlcnNpb24gYW5kIHRoZSBjdXJyZW50IGRhdGUuCkBAIC00NDgsMTYgKzQ1MywxOSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gIT0gJ0hUVFAvMC45JzoKLSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoKCIlcyAlZCAlc1xyXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLnByb3RvY29sX3ZlcnNpb24sIGNvZGUsIG1lc3NhZ2UpKS5lbmNvZGUoJ2xhdGluMScsICdzdHJpY3QnKSkKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfaGVhZGVyc19idWZmZXInKToKKyAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCisgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoKCIlcyAlZCAlc1xyXG4iICUKKyAgICAgICAgICAgICAgICAgICAgKHNlbGYucHJvdG9jb2xfdmVyc2lvbiwgY29kZSwgbWVzc2FnZSkpLmVuY29kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICdsYXRpbi0xJywgJ3N0cmljdCcpKQogCiAgICAgZGVmIHNlbmRfaGVhZGVyKHNlbGYsIGtleXdvcmQsIHZhbHVlKToKLSAgICAgICAgIiIiU2VuZCBhIE1JTUUgaGVhZGVyLiIiIgorICAgICAgICAiIiJTZW5kIGEgTUlNRSBoZWFkZXIgdG8gdGhlIGhlYWRlcnMgYnVmZmVyLiIiIgogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgogICAgICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyID0gW10KICAgICAgICAgICAgIHNlbGYuX2hlYWRlcnNfYnVmZmVyLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAoIiVzOiAlc1xyXG4iICUgKGtleXdvcmQsIHZhbHVlKSkuZW5jb2RlKCdsYXRpbjEnLCAnc3RyaWN0JykpCisgICAgICAgICAgICAgICAgKCIlczogJXNcclxuIiAlIChrZXl3b3JkLCB2YWx1ZSkpLmVuY29kZSgnbGF0aW4tMScsICdzdHJpY3QnKSkKIAogICAgICAgICBpZiBrZXl3b3JkLmxvd2VyKCkgPT0gJ2Nvbm5lY3Rpb24nOgogICAgICAgICAgICAgaWYgdmFsdWUubG93ZXIoKSA9PSAnY2xvc2UnOgpAQCAtNDY5LDYgKzQ3NywxMCBAQAogICAgICAgICAiIiJTZW5kIHRoZSBibGFuayBsaW5lIGVuZGluZyB0aGUgTUlNRSBoZWFkZXJzLiIiIgogICAgICAgICBpZiBzZWxmLnJlcXVlc3RfdmVyc2lvbiAhPSAnSFRUUC8wLjknOgogICAgICAgICAgICAgc2VsZi5faGVhZGVyc19idWZmZXIuYXBwZW5kKGIiXHJcbiIpCisgICAgICAgICAgICBzZWxmLmZsdXNoX2hlYWRlcnMoKQorCisgICAgZGVmIGZsdXNoX2hlYWRlcnMoc2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19oZWFkZXJzX2J1ZmZlcicpOgogICAgICAgICAgICAgc2VsZi53ZmlsZS53cml0ZShiIiIuam9pbihzZWxmLl9oZWFkZXJzX2J1ZmZlcikpCiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCiAKQEAgLTUxNCw3ICs1MjYsNyBAQAogICAgICAgICAiIiIKIAogICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCIlcyAtIC0gWyVzXSAlc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuY2xpZW50X2FkZHJlc3NbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYWRkcmVzc19zdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dfZGF0ZV90aW1lX3N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQlYXJncykpCiAKQEAgLTU0OCwxNSArNTYwLDkgQEAKICAgICAgICAgICAgICAgICAgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10KIAogICAgIGRlZiBhZGRyZXNzX3N0cmluZyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBjbGllbnQgYWRkcmVzcyBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuCisgICAgICAgICIiIlJldHVybiB0aGUgY2xpZW50IGFkZHJlc3MuIiIiCiAKLSAgICAgICAgVGhpcyB2ZXJzaW9uIGxvb2tzIHVwIHRoZSBmdWxsIGhvc3RuYW1lIHVzaW5nIGdldGhvc3RieWFkZHIoKSwKLSAgICAgICAgYW5kIHRyaWVzIHRvIGZpbmQgYSBuYW1lIHRoYXQgY29udGFpbnMgYXQgbGVhc3Qgb25lIGRvdC4KLQotICAgICAgICAiIiIKLQotICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5jbGllbnRfYWRkcmVzc1s6Ml0KLSAgICAgICAgcmV0dXJuIHNvY2tldC5nZXRmcWRuKGhvc3QpCisgICAgICAgIHJldHVybiBzZWxmLmNsaWVudF9hZGRyZXNzWzBdCiAKICAgICAjIEVzc2VudGlhbGx5IHN0YXRpYyBjbGFzcyB2YXJpYWJsZXMKIApAQCAtNTY5LDcgKzU3NSw3IEBACiAKICAgICAjIFRhYmxlIG1hcHBpbmcgcmVzcG9uc2UgY29kZXMgdG8gbWVzc2FnZXM7IGVudHJpZXMgaGF2ZSB0aGUKICAgICAjIGZvcm0ge2NvZGU6IChzaG9ydG1lc3NhZ2UsIGxvbmdtZXNzYWdlKX0uCi0gICAgIyBTZWUgUkZDIDI2MTYuCisgICAgIyBTZWUgUkZDIDI2MTYgYW5kIDY1ODUuCiAgICAgcmVzcG9uc2VzID0gewogICAgICAgICAxMDA6ICgnQ29udGludWUnLCAnUmVxdWVzdCByZWNlaXZlZCwgcGxlYXNlIGNvbnRpbnVlJyksCiAgICAgICAgIDEwMTogKCdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKQEAgLTYyNCw2ICs2MzAsMTIgQEAKICAgICAgICAgICAgICAgJ0Nhbm5vdCBzYXRpc2Z5IHJlcXVlc3QgcmFuZ2UuJyksCiAgICAgICAgIDQxNzogKCdFeHBlY3RhdGlvbiBGYWlsZWQnLAogICAgICAgICAgICAgICAnRXhwZWN0IGNvbmRpdGlvbiBjb3VsZCBub3QgYmUgc2F0aXNmaWVkLicpLAorICAgICAgICA0Mjg6ICgnUHJlY29uZGl0aW9uIFJlcXVpcmVkJywKKyAgICAgICAgICAgICAgJ1RoZSBvcmlnaW4gc2VydmVyIHJlcXVpcmVzIHRoZSByZXF1ZXN0IHRvIGJlIGNvbmRpdGlvbmFsLicpLAorICAgICAgICA0Mjk6ICgnVG9vIE1hbnkgUmVxdWVzdHMnLCAnVGhlIHVzZXIgaGFzIHNlbnQgdG9vIG1hbnkgcmVxdWVzdHMgJworICAgICAgICAgICAgICAnaW4gYSBnaXZlbiBhbW91bnQgb2YgdGltZSAoInJhdGUgbGltaXRpbmciKS4nKSwKKyAgICAgICAgNDMxOiAoJ1JlcXVlc3QgSGVhZGVyIEZpZWxkcyBUb28gTGFyZ2UnLCAnVGhlIHNlcnZlciBpcyB1bndpbGxpbmcgdG8gJworICAgICAgICAgICAgICAncHJvY2VzcyB0aGUgcmVxdWVzdCBiZWNhdXNlIGl0cyBoZWFkZXIgZmllbGRzIGFyZSB0b28gbGFyZ2UuJyksCiAKICAgICAgICAgNTAwOiAoJ0ludGVybmFsIFNlcnZlciBFcnJvcicsICdTZXJ2ZXIgZ290IGl0c2VsZiBpbiB0cm91YmxlJyksCiAgICAgICAgIDUwMTogKCdOb3QgSW1wbGVtZW50ZWQnLApAQCAtNjM0LDYgKzY0Niw4IEBACiAgICAgICAgIDUwNDogKCdHYXRld2F5IFRpbWVvdXQnLAogICAgICAgICAgICAgICAnVGhlIGdhdGV3YXkgc2VydmVyIGRpZCBub3QgcmVjZWl2ZSBhIHRpbWVseSByZXNwb25zZScpLAogICAgICAgICA1MDU6ICgnSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWQnLCAnQ2Fubm90IGZ1bGZpbGwgcmVxdWVzdC4nKSwKKyAgICAgICAgNTExOiAoJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAorICAgICAgICAgICAgICAnVGhlIGNsaWVudCBuZWVkcyB0byBhdXRoZW50aWNhdGUgdG8gZ2FpbiBuZXR3b3JrIGFjY2Vzcy4nKSwKICAgICAgICAgfQogCiAKQEAgLTcyMiwxMCArNzM2LDE2IEBACiAgICAgICAgIGxpc3Quc29ydChrZXk9bGFtYmRhIGE6IGEubG93ZXIoKSkKICAgICAgICAgciA9IFtdCiAgICAgICAgIGRpc3BsYXlwYXRoID0gaHRtbC5lc2NhcGUodXJsbGliLnBhcnNlLnVucXVvdGUoc2VsZi5wYXRoKSkKLSAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4nKQotICAgICAgICByLmFwcGVuZCgiPGh0bWw+XG48dGl0bGU+RGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzPC90aXRsZT5cbiIgJSBkaXNwbGF5cGF0aCkKLSAgICAgICAgci5hcHBlbmQoIjxib2R5PlxuPGgyPkRpcmVjdG9yeSBsaXN0aW5nIGZvciAlczwvaDI+XG4iICUgZGlzcGxheXBhdGgpCi0gICAgICAgIHIuYXBwZW5kKCI8aHI+XG48dWw+XG4iKQorICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKyAgICAgICAgdGl0bGUgPSAnRGlyZWN0b3J5IGxpc3RpbmcgZm9yICVzJyAlIGRpc3BsYXlwYXRoCisgICAgICAgIHIuYXBwZW5kKCc8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICcKKyAgICAgICAgICAgICAgICAgJyJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj4nKQorICAgICAgICByLmFwcGVuZCgnPGh0bWw+XG48aGVhZD4nKQorICAgICAgICByLmFwcGVuZCgnPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiAnCisgICAgICAgICAgICAgICAgICdjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JXMiPicgJSBlbmMpCisgICAgICAgIHIuYXBwZW5kKCc8dGl0bGU+JXM8L3RpdGxlPlxuPC9oZWFkPicgJSB0aXRsZSkKKyAgICAgICAgci5hcHBlbmQoJzxib2R5PlxuPGgxPiVzPC9oMT4nICUgdGl0bGUpCisgICAgICAgIHIuYXBwZW5kKCc8aHI+XG48dWw+JykKICAgICAgICAgZm9yIG5hbWUgaW4gbGlzdDoKICAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCiAgICAgICAgICAgICBkaXNwbGF5bmFtZSA9IGxpbmtuYW1lID0gbmFtZQpAQCAtNzM2LDExICs3NTYsMTAgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGZ1bGxuYW1lKToKICAgICAgICAgICAgICAgICBkaXNwbGF5bmFtZSA9IG5hbWUgKyAiQCIKICAgICAgICAgICAgICAgICAjIE5vdGU6IGEgbGluayB0byBhIGRpcmVjdG9yeSBkaXNwbGF5cyB3aXRoIEAgYW5kIGxpbmtzIHdpdGggLwotICAgICAgICAgICAgci5hcHBlbmQoJzxsaT48YSBocmVmPSIlcyI+JXM8L2E+XG4nCisgICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT48L2xpPicKICAgICAgICAgICAgICAgICAgICAgJSAodXJsbGliLnBhcnNlLnF1b3RlKGxpbmtuYW1lKSwgaHRtbC5lc2NhcGUoZGlzcGxheW5hbWUpKSkKLSAgICAgICAgci5hcHBlbmQoIjwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4iKQotICAgICAgICBlbmMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICAgICAgZW5jb2RlZCA9ICcnLmpvaW4ocikuZW5jb2RlKGVuYykKKyAgICAgICAgci5hcHBlbmQoJzwvdWw+XG48aHI+XG48L2JvZHk+XG48L2h0bWw+XG4nKQorICAgICAgICBlbmNvZGVkID0gJ1xuJy5qb2luKHIpLmVuY29kZShlbmMpCiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKICAgICAgICAgZi53cml0ZShlbmNvZGVkKQogICAgICAgICBmLnNlZWsoMCkKQEAgLTg4OCwxMSArOTA3LDcgQEAKIAogZGVmIGV4ZWN1dGFibGUocGF0aCk6CiAgICAgIiIiVGVzdCBmb3IgZXhlY3V0YWJsZSBmaWxlLiIiIgotICAgIHRyeToKLSAgICAgICAgc3QgPSBvcy5zdGF0KHBhdGgpCi0gICAgZXhjZXB0IG9zLmVycm9yOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gc3Quc3RfbW9kZSAmIDBvMTExICE9IDAKKyAgICByZXR1cm4gb3MuYWNjZXNzKHBhdGgsIG9zLlhfT0spCiAKIAogY2xhc3MgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyKFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC0xMDA4LDcgKzEwMjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdG5hbWUpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaXNweSA9IHNlbGYuaXNfcHl0aG9uKHNjcmlwdG5hbWUpCi0gICAgICAgIGlmIG5vdCBpc3B5OgorICAgICAgICBpZiBzZWxmLmhhdmVfZm9yayBvciBub3QgaXNweToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2NyaXB0ZmlsZSk6CiAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKDQwMywgIkNHSSBzY3JpcHQgaXMgbm90IGV4ZWN1dGFibGUgKCVyKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRuYW1lKQpAQCAtMTAyOSw5ICsxMDQ0LDYgQEAKICAgICAgICAgZW52WydTQ1JJUFRfTkFNRSddID0gc2NyaXB0bmFtZQogICAgICAgICBpZiBxdWVyeToKICAgICAgICAgICAgIGVudlsnUVVFUllfU1RSSU5HJ10gPSBxdWVyeQotICAgICAgICBob3N0ID0gc2VsZi5hZGRyZXNzX3N0cmluZygpCi0gICAgICAgIGlmIGhvc3QgIT0gc2VsZi5jbGllbnRfYWRkcmVzc1swXToKLSAgICAgICAgICAgIGVudlsnUkVNT1RFX0hPU1QnXSA9IGhvc3QKICAgICAgICAgZW52WydSRU1PVEVfQUREUiddID0gc2VsZi5jbGllbnRfYWRkcmVzc1swXQogICAgICAgICBhdXRob3JpemF0aW9uID0gc2VsZi5oZWFkZXJzLmdldCgiYXV0aG9yaXphdGlvbiIpCiAgICAgICAgIGlmIGF1dGhvcml6YXRpb246CkBAIC0xMDgzLDYgKzEwOTUsNyBAQAogICAgICAgICAgICAgZW52LnNldGRlZmF1bHQoaywgIiIpCiAKICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKDIwMCwgIlNjcmlwdCBvdXRwdXQgZm9sbG93cyIpCisgICAgICAgIHNlbGYuZmx1c2hfaGVhZGVycygpCiAKICAgICAgICAgZGVjb2RlZF9xdWVyeSA9IHF1ZXJ5LnJlcGxhY2UoJysnLCAnICcpCiAKQEAgLTExNjIsMTggKzExNzUsMTMgQEAKIAogCiBkZWYgdGVzdChIYW5kbGVyQ2xhc3MgPSBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLAotICAgICAgICAgU2VydmVyQ2xhc3MgPSBIVFRQU2VydmVyLCBwcm90b2NvbD0iSFRUUC8xLjAiKToKKyAgICAgICAgIFNlcnZlckNsYXNzID0gSFRUUFNlcnZlciwgcHJvdG9jb2w9IkhUVFAvMS4wIiwgcG9ydD04MDAwKToKICAgICAiIiJUZXN0IHRoZSBIVFRQIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4KIAogICAgIFRoaXMgcnVucyBhbiBIVFRQIHNlcnZlciBvbiBwb3J0IDgwMDAgKG9yIHRoZSBmaXJzdCBjb21tYW5kIGxpbmUKICAgICBhcmd1bWVudCkuCiAKICAgICAiIiIKLQotICAgIGlmIHN5cy5hcmd2WzE6XToKLSAgICAgICAgcG9ydCA9IGludChzeXMuYXJndlsxXSkKLSAgICBlbHNlOgotICAgICAgICBwb3J0ID0gODAwMAogICAgIHNlcnZlcl9hZGRyZXNzID0gKCcnLCBwb3J0KQogCiAgICAgSGFuZGxlckNsYXNzLnByb3RvY29sX3ZlcnNpb24gPSBwcm90b2NvbApAQCAtMTE4OSw0ICsxMTk3LDE1IEBACiAgICAgICAgIHN5cy5leGl0KDApCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdChIYW5kbGVyQ2xhc3M9U2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyKQorICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNnaScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1biBhcyBDR0kgU2VydmVyJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdwb3J0JywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PTgwMDAsIHR5cGU9aW50LAorICAgICAgICAgICAgICAgICAgICAgICAgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3BlY2lmeSBhbHRlcm5hdGUgcG9ydCBbZGVmYXVsdDogODAwMF0nKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisgICAgaWYgYXJncy5jZ2k6CisgICAgICAgIHRlc3QoSGFuZGxlckNsYXNzPUNHSUhUVFBSZXF1ZXN0SGFuZGxlciwgcG9ydD1hcmdzLnBvcnQpCisgICAgZWxzZToKKyAgICAgICAgdGVzdChIYW5kbGVyQ2xhc3M9U2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyLCBwb3J0PWFyZ3MucG9ydCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weSBiL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZS5weQppbmRleCBlNGMxYWZmLi45MjlkMzU4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkKKysrIGIvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CkBAIC05LDkgKzksNiBAQAogCiBmcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKIAotIyBUaGlzIHN0cmluZyBpbmNsdWRlcyBhbGwgY2hhcnMgdGhhdCBtYXkgYmUgaW4gYSBmaWxlIG5hbWUgKHdpdGhvdXQgYSBwYXRoCi0jIHNlcGFyYXRvcikKLUZJTEVOQU1FX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgb3MuY3VyZGlyICsgIi5ffiMkOi0iCiAjIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyCiBJRF9DSEFSUyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICJfIgogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CmluZGV4IGUxODgxOTIuLmU0Y2NiNDIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CkBAIC0yMSwxMCArMjEsMTEgQEAKICAgICAjIDFzdCAnZmlsZScgY29sb3JpemVkIG5vcm1hbCwgMm5kIGFzIGJ1aWx0aW4sIDNyZCBhcyBzdHJpbmcKICAgICBidWlsdGluID0gciIoW14uJ1wiXFwjXVxifF4pIiArIGFueSgiQlVJTFRJTiIsIGJ1aWx0aW5saXN0KSArIHIiXGIiCiAgICAgY29tbWVudCA9IGFueSgiQ09NTUVOVCIsIFtyIiNbXlxuXSoiXSkKLSAgICBzcXN0cmluZyA9IHIiKFxiW3JSYkJdKT8nW14nXFxcbl0qKFxcLlteJ1xcXG5dKikqJz8iCi0gICAgZHFzdHJpbmcgPSByJyhcYltyUmJCXSk/IlteIlxcXG5dKihcXC5bXiJcXFxuXSopKiI/JwotICAgIHNxM3N0cmluZyA9IHIiKFxiW3JSYkJdKT8nJydbXidcXF0qKChcXC58Jyg/IScnKSlbXidcXF0qKSooJycnKT8iCi0gICAgZHEzc3RyaW5nID0gcicoXGJbclJiQl0pPyIiIlteIlxcXSooKFxcLnwiKD8hIiIpKVteIlxcXSopKigiIiIpPycKKyAgICBzdHJpbmdwcmVmaXggPSByIihcYnJ8dXx1cnxSfFV8VVJ8VXJ8dVJ8YnxCfGJyfEJyfGJSfEJSfHJifHJCfFJifFJCKT8iCisgICAgc3FzdHJpbmcgPSBzdHJpbmdwcmVmaXggKyByIidbXidcXFxuXSooXFwuW14nXFxcbl0qKSonPyIKKyAgICBkcXN0cmluZyA9IHN0cmluZ3ByZWZpeCArIHInIlteIlxcXG5dKihcXC5bXiJcXFxuXSopKiI/JworICAgIHNxM3N0cmluZyA9IHN0cmluZ3ByZWZpeCArIHIiJycnW14nXFxdKigoXFwufCcoPyEnJykpW14nXFxdKikqKCcnJyk/IgorICAgIGRxM3N0cmluZyA9IHN0cmluZ3ByZWZpeCArIHInIiIiW14iXFxdKigoXFwufCIoPyEiIikpW14iXFxdKikqKCIiIik/JwogICAgIHN0cmluZyA9IGFueSgiU1RSSU5HIiwgW3NxM3N0cmluZywgZHEzc3RyaW5nLCBzcXN0cmluZywgZHFzdHJpbmddKQogICAgIHJldHVybiBrdyArICJ8IiArIGJ1aWx0aW4gKyAifCIgKyBjb21tZW50ICsgInwiICsgc3RyaW5nICtcCiAgICAgICAgICAgICJ8IiArIGFueSgiU1lOQyIsIFtyIlxuIl0pCkBAIC0xNDksOSArMTUwLDkgQEAKICAgICAgICAgICAgIHNlbGYuc3RvcF9jb2xvcml6aW5nID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuY29sb3JpemluZyA9IFRydWUKICAgICAgICAgICAgIGlmIERFQlVHOiBwcmludCgiY29sb3JpemluZy4uLiIpCi0gICAgICAgICAgICB0MCA9IHRpbWUuY2xvY2soKQorICAgICAgICAgICAgdDAgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgICAgICBzZWxmLnJlY29sb3JpemVfbWFpbigpCi0gICAgICAgICAgICB0MSA9IHRpbWUuY2xvY2soKQorICAgICAgICAgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgICAgICAgICBpZiBERUJVRzogcHJpbnQoIiUuM2Ygc2Vjb25kcyIgJSAodDEtdDApKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5jb2xvcml6aW5nID0gRmFsc2UKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weSBiL0xpYi9pZGxlbGliL0VkaXRvcldpbmRvdy5weQppbmRleCBiZWMyMTkxLi42YmRjZWNjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CkBAIC0xLDggKzEsOSBAQAotaW1wb3J0IHN5cworaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgcmUKIGltcG9ydCBzdHJpbmcKLWltcG9ydCBpbXAKK2ltcG9ydCBzeXMKIGZyb20gdGtpbnRlciBpbXBvcnQgKgogaW1wb3J0IHRraW50ZXIuc2ltcGxlZGlhbG9nIGFzIHRrU2ltcGxlRGlhbG9nCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveApAQCAtMjcsOCArMjgsNyBAQAogICAgICJGb3JtYXQgc3lzLnZlcnNpb25faW5mbyB0byBwcm9kdWNlIHRoZSBTcGhpbnggdmVyc2lvbiBzdHJpbmcgdXNlZCB0byBpbnN0YWxsIHRoZSBjaG0gZG9jcyIKICAgICBtYWpvciwgbWlub3IsIG1pY3JvLCBsZXZlbCwgc2VyaWFsID0gc3lzLnZlcnNpb25faW5mbwogICAgIHJlbGVhc2UgPSAnJXMlcycgJSAobWFqb3IsIG1pbm9yKQotICAgIGlmIG1pY3JvOgotICAgICAgICByZWxlYXNlICs9ICclcycgJSAobWljcm8sKQorICAgIHJlbGVhc2UgKz0gJyVzJyAlIChtaWNybywpCiAgICAgaWYgbGV2ZWwgPT0gJ2NhbmRpZGF0ZSc6CiAgICAgICAgIHJlbGVhc2UgKz0gJ3JjJXMnICUgKHNlcmlhbCwpCiAgICAgZWxpZiBsZXZlbCAhPSAnZmluYWwnOgpAQCAtMTIwLDcgKzEyMCw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgZmlsZW5hbWU9Tm9uZSwga2V5PU5vbmUsIHJvb3Q9Tm9uZSk6CiAgICAgICAgIGlmIEVkaXRvcldpbmRvdy5oZWxwX3VybCBpcyBOb25lOgotICAgICAgICAgICAgZG9jaG9tZSA9ICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ0RvYycsICdpbmRleC5odG1sJykKKyAgICAgICAgICAgIGRvY2hvbWUgPSAgb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgJ0RvYycsICdpbmRleC5odG1sJykKICAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5jb3VudCgnbGludXgnKToKICAgICAgICAgICAgICAgICAjIGxvb2sgZm9yIGh0bWwgZG9jcyBpbiBhIGNvdXBsZSBvZiBzdGFuZGFyZCBwbGFjZXMKICAgICAgICAgICAgICAgICBweXZlciA9ICdweXRob24tZG9jcy0nICsgJyVzLiVzLiVzJyAlIHN5cy52ZXJzaW9uX2luZm9bOjNdCkBAIC0xMzEsMTMgKzEzMSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5qb2luKGJhc2VwYXRoLCBweXZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRG9jJywgJ2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgZWxpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgotICAgICAgICAgICAgICAgIGNobWZpbGUgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgJ0RvYycsCisgICAgICAgICAgICAgICAgY2htZmlsZSA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9wcmVmaXgsICdEb2MnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiVzLmNobScgJSBfc3BoaW54X3ZlcnNpb24oKSkKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjaG1maWxlKToKICAgICAgICAgICAgICAgICAgICAgZG9jaG9tZSA9IGNobWZpbGUKICAgICAgICAgICAgIGVsaWYgbWFjb3N4U3VwcG9ydC5ydW5uaW5nQXNPU1hBcHAoKToKICAgICAgICAgICAgICAgICAjIGRvY3VtZW50YXRpb24gaXMgc3RvcmVkIGluc2lkZSB0aGUgcHl0aG9uIGZyYW1ld29yawotICAgICAgICAgICAgICAgIGRvY2hvbWUgPSBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICBkb2Nob21lID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICdSZXNvdXJjZXMvRW5nbGlzaC5scHJvai9Eb2N1bWVudGF0aW9uL2luZGV4Lmh0bWwnKQogICAgICAgICAgICAgZG9jaG9tZSA9IG9zLnBhdGgubm9ybXBhdGgoZG9jaG9tZSkKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGRvY2hvbWUpOgpAQCAtMTAwNSw3ICsxMDA1LDEwIEBACiAKICAgICBkZWYgbG9hZF9leHRlbnNpb24oc2VsZiwgbmFtZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10pCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4nICsgbmFtZSwgcGFja2FnZT1fX3BhY2thZ2VfXykKKyAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwcmludCgiXG5GYWlsZWQgdG8gaW1wb3J0IGV4dGVuc2lvbjogIiwgbmFtZSkKICAgICAgICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkKaW5kZXggOTUyOGM5YS4uZWM1MGViMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL0lPQmluZGluZy5weQpAQCAtNDg1LDYgKzQ4NSw4IEBACiAgICAgICAgICgiQWxsIGZpbGVzIiwgIioiKSwKICAgICAgICAgXQogCisgICAgZGVmYXVsdGV4dGVuc2lvbiA9ICcucHknIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBlbHNlICcnCisKICAgICBkZWYgYXNrb3BlbmZpbGUoc2VsZik6CiAgICAgICAgIGRpciwgYmFzZSA9IHNlbGYuZGVmYXVsdGZpbGVuYW1lKCJvcGVuIikKICAgICAgICAgaWYgbm90IHNlbGYub3BlbmRpYWxvZzoKQEAgLTUwOCw4ICs1MTAsMTAgQEAKICAgICBkZWYgYXNrc2F2ZWZpbGUoc2VsZik6CiAgICAgICAgIGRpciwgYmFzZSA9IHNlbGYuZGVmYXVsdGZpbGVuYW1lKCJzYXZlIikKICAgICAgICAgaWYgbm90IHNlbGYuc2F2ZWRpYWxvZzoKLSAgICAgICAgICAgIHNlbGYuc2F2ZWRpYWxvZyA9IHRrRmlsZURpYWxvZy5TYXZlQXMobWFzdGVyPXNlbGYudGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGVzPXNlbGYuZmlsZXR5cGVzKQorICAgICAgICAgICAgc2VsZi5zYXZlZGlhbG9nID0gdGtGaWxlRGlhbG9nLlNhdmVBcygKKyAgICAgICAgICAgICAgICAgICAgbWFzdGVyPXNlbGYudGV4dCwKKyAgICAgICAgICAgICAgICAgICAgZmlsZXR5cGVzPXNlbGYuZmlsZXR5cGVzLAorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ZXh0ZW5zaW9uPXNlbGYuZGVmYXVsdGV4dGVuc2lvbikKICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLnNhdmVkaWFsb2cuc2hvdyhpbml0aWFsZGlyPWRpciwgaW5pdGlhbGZpbGU9YmFzZSkKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL05FV1MudHh0IGIvTGliL2lkbGVsaWIvTkVXUy50eHQKaW5kZXggZjIzNGI2NC4uZjZlODkxN2QgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL05FV1MudHh0CisrKyBiL0xpYi9pZGxlbGliL05FV1MudHh0CkBAIC0xLDEwICsxLDIzIEBACi1XaGF0J3MgTmV3IGluIElETEUgMy4yLjQ/CitXaGF0J3MgTmV3IGluIElETEUgMy4zLjE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0gSXNzdWUgIzE2MjI2OiBGaXggSURMRSBQYXRoIEJyb3dzZXIgY3Jhc2guCisgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKKworLSBJc3N1ZSAjMTU4NTM6IFByZXZlbnQgSURMRSBjcmFzaCBvbiBPUyBYIHdoZW4gb3BlbmluZyBQcmVmZXJlbmNlcyBtZW51CisgIHdpdGggY2VydGFpbiB2ZXJzaW9ucyBvZiBUayA4LjUuICBJbml0aWFsIHBhdGNoIGJ5IEtldmluIFdhbHplci4KKworCitXaGF0J3MgTmV3IGluIElETEUgMy4zLjA/CiA9PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC0gSXNzdWUgIzcxNjM6IFByb3BhZ2F0ZSByZXR1cm4gdmFsdWUgb2Ygc3lzLnN0ZG91dC53cml0ZS4KIAogLSBJc3N1ZSAjMTUzMTg6IFByZXZlbnQgd3JpdGluZyB0byBzeXMuc3RkaW4uCiAKKy0gSXNzdWUgIzQ4MzI6IE1vZGlmeSBJRExFIHRvIHNhdmUgZmlsZXMgd2l0aCAucHkgZXh0ZW5zaW9uIGJ5CisgIGRlZmF1bHQgb24gV2luZG93cyBhbmQgT1MgWCAoVGsgOC41KSBhcyBpdCBhbHJlYWR5IGRvZXMgd2l0aCBYMTEgVGsuCisKIC0gSXNzdWUgIzEzNTMyLCAjMTUzMTk6IENoZWNrIHRoYXQgYXJndW1lbnRzIHRvIHN5cy5zdGRvdXQud3JpdGUgYXJlIHN0cmluZ3MuCiAKIC0gSXNzdWUgIyAxMjUxMDogQXR0ZW1wdCB0byBnZXQgY2VydGFpbiB0b29sIHRpcHMgbm8gbG9uZ2VyIGNyYXNoZXMgSURMRS4KQEAgLTE4LDE1ICszMSwxMCBAQAogLSBJc3N1ZSAjMTQ5Mzc6IFBlcmZvcm0gYXV0by1jb21wbGV0aW9uIG9mIGZpbGVuYW1lcyBpbiBzdHJpbmdzIGV2ZW4gZm9yCiAgIG5vbi1BU0NJSSBmaWxlbmFtZXMuIExpa2V3aXNlIGZvciBpZGVudGlmaWVycy4KIAotLSBJc3N1ZSAjMTQwMTg6IFVwZGF0ZSBjaGVja3MgZm9yIHVuc3RhYmxlIHN5c3RlbSBUY2wvVGsgdmVyc2lvbnMgb24gT1MgWAotICB0byBpbmNsdWRlIHZlcnNpb25zIHNoaXBwZWQgd2l0aCBPUyBYIDEwLjcgYW5kIDEwLjggaW4gYWRkaXRpb24gdG8gMTAuNi4KKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCiAKLS0gSXNzdWUgIzE1ODUzOiBQcmV2ZW50IElETEUgY3Jhc2ggb24gT1MgWCB3aGVuIG9wZW5pbmcgUHJlZmVyZW5jZXMgbWVudQotICB3aXRoIGNlcnRhaW4gdmVyc2lvbnMgb2YgVGsgOC41LiAgSW5pdGlhbCBwYXRjaCBieSBLZXZpbiBXYWx6ZXIuCi0KLQotV2hhdCdzIE5ldyBpbiBJRExFIDMuMi4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PQorLSBJRExFIGNhbiBiZSBsYXVuY2hlZCBhcyBgcHl0aG9uIC1tIGlkbGVsaWJgCiAKIC0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93CiAgIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKQEAgLTM2LDYgKzQ0LDkgQEAKIC0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKICAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkuCiAKKy0gSXNzdWUgIzE0MDE4OiBVcGRhdGUgY2hlY2tzIGZvciB1bnN0YWJsZSBzeXN0ZW0gVGNsL1RrIHZlcnNpb25zIG9uIE9TIFgKKyAgdG8gaW5jbHVkZSB2ZXJzaW9ucyBzaGlwcGVkIHdpdGggT1MgWCAxMC43IGFuZCAxMC44IGluIGFkZGl0aW9uIHRvIDEwLjYuCisKIAogV2hhdCdzIE5ldyBpbiBJRExFIDMuMi4xPwogPT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQppbmRleCBkODhhNDhlLi41NWJmMWFhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9QYXRoQnJvd3Nlci5weQpAQCAtMSw2ICsxLDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIAogZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtCiBmcm9tIGlkbGVsaWIuQ2xhc3NCcm93c2VyIGltcG9ydCBDbGFzc0Jyb3dzZXIsIE1vZHVsZUJyb3dzZXJUcmVlSXRlbQpAQCAtNzAsOSArNzEsMTEgQEAKIAogICAgIGRlZiBsaXN0bW9kdWxlcyhzZWxmLCBhbGxuYW1lcyk6CiAgICAgICAgIG1vZHVsZXMgPSB7fQotICAgICAgICBzdWZmaXhlcyA9IGltcC5nZXRfc3VmZml4ZXMoKQorICAgICAgICBzdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCisgICAgICAgIHN1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzpdCisgICAgICAgIHN1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0KICAgICAgICAgc29ydGVkID0gW10KLSAgICAgICAgZm9yIHN1ZmYsIG1vZGUsIGZsYWcgaW4gc3VmZml4ZXM6CisgICAgICAgIGZvciBzdWZmIGluIHN1ZmZpeGVzOgogICAgICAgICAgICAgaSA9IC1sZW4oc3VmZikKICAgICAgICAgICAgIGZvciBuYW1lIGluIGFsbG5hbWVzWzpdOgogICAgICAgICAgICAgICAgIG5vcm1lZF9uYW1lID0gb3MucGF0aC5ub3JtY2FzZShuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weSBiL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKaW5kZXggODhjMDM5MC4uNTBkNjE4MiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUHlTaGVsbC5weQorKysgYi9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CkBAIC00NzcsNiArNDc3LDEwIEBACiAKICAgICBkZWYga2lsbF9zdWJwcm9jZXNzKHNlbGYpOgogICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnJwY2NsdC5saXN0ZW5pbmdfc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjogICMgbm8gc29ja2V0CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYucnBjY2x0LmNsb3NlKCkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOiAgIyBubyBzb2NrZXQKICAgICAgICAgICAgIHBhc3MKQEAgLTEwMDUsNiArMTAwOSw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBub3N1YiA9ICI9PT09IE5vIFN1YnByb2Nlc3MgPT09PSIKKyAgICAgICAgICAgIHN5cy5kaXNwbGF5aG9vayA9IHJwYy5kaXNwbGF5aG9vaworCiAgICAgICAgIHNlbGYud3JpdGUoIlB5dGhvbiAlcyBvbiAlc1xuJXNcbiVzIiAlCiAgICAgICAgICAgICAgICAgICAgKHN5cy52ZXJzaW9uLCBzeXMucGxhdGZvcm0sIHNlbGYuQ09QWVJJR0hULCBub3N1YikpCiAgICAgICAgIHNlbGYuc2hvd3Byb21wdCgpCkBAIC0xMjI3LDYgKzEyMzMsMTYgQEAKICAgICAgICAgc2VsZi5zZXRfbGluZV9hbmRfY29sdW1uKCkKIAogICAgIGRlZiB3cml0ZShzZWxmLCBzLCB0YWdzPSgpKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBzdHIpIGFuZCBsZW4ocykgYW5kIG1heChzKSA+ICdcdWZmZmYnOgorICAgICAgICAgICAgIyBUayBkb2Vzbid0IHN1cHBvcnQgb3V0cHV0dGluZyBub24tQk1QIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICMgTGV0J3MgYXNzdW1lIHdoYXQgcHJpbnRlZCBzdHJpbmcgaXMgbm90IHZlcnkgbG9uZywKKyAgICAgICAgICAgICMgZmluZCBmaXJzdCBub24tQk1QIGNoYXJhY3RlciBhbmQgY29uc3RydWN0IGluZm9ybWF0aXZlCisgICAgICAgICAgICAjIFVuaWNvZGVFbmNvZGVFcnJvciBleGNlcHRpb24uCisgICAgICAgICAgICBmb3Igc3RhcnQsIGNoYXIgaW4gZW51bWVyYXRlKHMpOgorICAgICAgICAgICAgICAgIGlmIGNoYXIgPiAnXHVmZmZmJzoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHJhaXNlIFVuaWNvZGVFbmNvZGVFcnJvcigiVUNTLTIiLCBjaGFyLCBzdGFydCwgc3RhcnQrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm9uLUJNUCBjaGFyYWN0ZXIgbm90IHN1cHBvcnRlZCBpbiBUaycpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYudGV4dC5tYXJrX2dyYXZpdHkoImlvbWFyayIsICJyaWdodCIpCiAgICAgICAgICAgICBjb3VudCA9IE91dHB1dFdpbmRvdy53cml0ZShzZWxmLCBzLCB0YWdzLCAiaW9tYXJrIikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CmluZGV4IDE4Y2U5NjUuLjUyOGFkZjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NjcmlwdEJpbmRpbmcucHkKKysrIGIvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQpAQCAtMTUwLDE2ICsxNTAsMTYgQEAKICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKICAgICAgICAgIyBYWFggVG9vIG9mdGVuIHRoaXMgZGlzY2FyZHMgYXJndW1lbnRzIHRoZSB1c2VyIGp1c3Qgc2V0Li4uCiAgICAgICAgIGludGVycC5ydW5jb21tYW5kKCIiImlmIDE6Ci0gICAgICAgICAgICBfZmlsZW5hbWUgPSAlcgorICAgICAgICAgICAgX19maWxlX18gPSB7ZmlsZW5hbWUhcn0KICAgICAgICAgICAgIGltcG9ydCBzeXMgYXMgX3N5cwogICAgICAgICAgICAgZnJvbSBvcy5wYXRoIGltcG9ydCBiYXNlbmFtZSBhcyBfYmFzZW5hbWUKICAgICAgICAgICAgIGlmIChub3QgX3N5cy5hcmd2IG9yCi0gICAgICAgICAgICAgICAgX2Jhc2VuYW1lKF9zeXMuYXJndlswXSkgIT0gX2Jhc2VuYW1lKF9maWxlbmFtZSkpOgotICAgICAgICAgICAgICAgIF9zeXMuYXJndiA9IFtfZmlsZW5hbWVdCisgICAgICAgICAgICAgICAgX2Jhc2VuYW1lKF9zeXMuYXJndlswXSkgIT0gX2Jhc2VuYW1lKF9fZmlsZV9fKSk6CisgICAgICAgICAgICAgICAgX3N5cy5hcmd2ID0gW19fZmlsZV9fXQogICAgICAgICAgICAgaW1wb3J0IG9zIGFzIF9vcwotICAgICAgICAgICAgX29zLmNoZGlyKCVyKQotICAgICAgICAgICAgZGVsIF9maWxlbmFtZSwgX3N5cywgX2Jhc2VuYW1lLCBfb3MKLSAgICAgICAgICAgIFxuIiIiICUgKGZpbGVuYW1lLCBkaXJuYW1lKSkKKyAgICAgICAgICAgIF9vcy5jaGRpcih7ZGlybmFtZSFyfSkKKyAgICAgICAgICAgIGRlbCBfc3lzLCBfYmFzZW5hbWUsIF9vcworICAgICAgICAgICAgXG4iIiIuZm9ybWF0KGZpbGVuYW1lPWZpbGVuYW1lLCBkaXJuYW1lPWRpcm5hbWUpKQogICAgICAgICBpbnRlcnAucHJlcGVuZF9zeXNwYXRoKGZpbGVuYW1lKQogICAgICAgICAjIFhYWCBLQksgMDNKdWwwNCBXaGVuIHJ1biB3L28gc3VicHJvY2VzcywgcnVudGltZSB3YXJuaW5ncyBzdGlsbAogICAgICAgICAjICAgICAgICAgZ28gdG8gX19zdGRlcnJfXy4gIFdpdGggc3VicHJvY2VzcywgdGhleSBnbyB0byB0aGUgc2hlbGwuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9fX21haW5fXy5weSBiL0xpYi9pZGxlbGliL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2NjZmMmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQpAQCAtMCwwICsxLDkgQEAKKyIiIgorSURMRSBtYWluIGVudHJ5IHBvaW50CisKK1J1biBJRExFIGFzIHB5dGhvbiAtbSBpZGxlbGliCisiIiIKKworCitpbXBvcnQgaWRsZWxpYi5QeVNoZWxsCitpZGxlbGliLlB5U2hlbGwubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQppbmRleCBkYTkyNzI2Li40MDQ5MDA0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ0hhbmRsZXIucHkKQEAgLTE0NSw3ICsxNDUsOCBAQAogICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuYW1lKQogICAgICAgICAgICAgICAgIGNmZ0ZpbGUgPSBvcGVuKGZuYW1lLCAndycpCi0gICAgICAgICAgICBzZWxmLndyaXRlKGNmZ0ZpbGUpCisgICAgICAgICAgICB3aXRoIGNmZ0ZpbGU6CisgICAgICAgICAgICAgICAgc2VsZi53cml0ZShjZmdGaWxlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5SZW1vdmVGaWxlKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZXZlci5weSBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKaW5kZXggMTc0NTVkYi4uOGQ4MzE3ZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZXZlci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxldmVyLnB5CkBAIC0xICsxIEBACi1JRExFX1ZFUlNJT04gPSAiMy4yLjMiCitJRExFX1ZFUlNJT04gPSAiMy4zLjAiCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5IGIvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQppbmRleCA5NjkwNDQyLi42NzA2OWZhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CisrKyBiL0xpYi9pZGxlbGliL21hY29zeFN1cHBvcnQucHkKQEAgLTEyLDEyICsxMiwyMiBAQAogZGVmIHJ1bm5pbmdBc09TWEFwcCgpOgogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiBQeXRob24gaXMgcnVubmluZyBmcm9tIHdpdGhpbiBhbiBhcHAgb24gT1NYLgotICAgIElmIHNvLCBhc3N1bWUgdGhhdCBQeXRob24gd2FzIGJ1aWx0IHdpdGggQXF1YSBUY2wvVGsgcmF0aGVyIHRoYW4KLSAgICBYMTEgVGNsL1RrLgorICAgIElmIHNvLCB0aGUgdmFyaW91cyBPUyBYIGN1c3RvbWl6YXRpb25zIHdpbGwgYmUgdHJpZ2dlcmVkIGxhdGVyIChtZW51CisgICAgZml4dXAsIGV0IGFsKS4gIChPcmlnaW5hbGx5LCB0aGlzIHRlc3Qgd2FzIHN1cHBvc2VkIHRvIGNvbmRpdGlvbgorICAgIGJlaGF2aW9yIG9uIHdoZXRoZXIgSURMRSB3YXMgcnVubmluZyB1bmRlciBBcXVhIFRrIHJhdGhlciB0aGFuCisgICAgdW5kZXIgWDExIFRrIGJ1dCB0aGF0IGRvZXMgbm90IHdvcmsgc2luY2UgYSBmcmFtZXdvcmsgYnVpbGQKKyAgICBjb3VsZCBiZSBsaW5rZWQgd2l0aCBYMTEuICBGb3Igc2V2ZXJhbCByZWxlYXNlcywgdGhpcyB0ZXN0IGFjdHVhbGx5CisgICAgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiB3aGV0aGVyIElETEUgaXMgcnVubmluZyBmcm9tIGEgZnJhbWV3b3JrIG9yCisgICAgbm90LiAgQXMgYSBmdXR1cmUgZW5oYW5jZW1lbnQsIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkIHdoZXRoZXIgdGhlcmUKKyAgICBzaG91bGQgYmUgYSBkaWZmZXJlbmNlIGJhc2VkIG9uIGZyYW1ld29yayBhbmQgYW55IG5lZWRlZCBYMTEgYWRhcHRpb25zCisgICAgc2hvdWxkIGJlIG1hZGUgZGVwZW5kZW50IG9uIGEgbmV3IGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgdGVzdHMgZm9yIFgxMS4pCiAgICAgIiIiCiAgICAgZ2xvYmFsIF9hcHBidW5kbGUKICAgICBpZiBfYXBwYnVuZGxlIGlzIE5vbmU6Ci0gICAgICAgIF9hcHBidW5kbGUgPSAoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnLmFwcCcgaW4gc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIF9hcHBidW5kbGUgPSBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicKKyAgICAgICAgaWYgX2FwcGJ1bmRsZToKKyAgICAgICAgICAgIGltcG9ydCBzeXNjb25maWcKKyAgICAgICAgICAgIF9hcHBidW5kbGUgPSBib29sKHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJykpCiAgICAgcmV0dXJuIF9hcHBidW5kbGUKIAogX2NhcmJvbmFxdWF0ayA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3JwYy5weSBiL0xpYi9pZGxlbGliL3JwYy5weQppbmRleCBkZWY0Mzk0Li43N2NiM2FjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ycGMucHkKKysrIGIvTGliL2lkbGVsaWIvcnBjLnB5CkBAIC00MCw2ICs0MCw3IEBACiBpbXBvcnQgY29weXJlZwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgbWFyc2hhbAoraW1wb3J0IGJ1aWx0aW5zCiAKIAogZGVmIHVucGlja2xlX2NvZGUobXMpOgpAQCAtMTk2LDggKzE5NywxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiAoIkVSUk9SIiwgIlVuc3VwcG9ydGVkIG1lc3NhZ2UgdHlwZTogJXMiICUgaG93KQogICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CiAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgcmV0dXJuICgiQ0FMTEVYQyIsIGV4KQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBtc2cgPSAiKioqIEludGVybmFsIEVycm9yOiBycGMucHk6U29ja2V0SU8ubG9jYWxjYWxsKClcblxuIlwKICAgICAgICAgICAgICAgICAgICIgT2JqZWN0OiAlcyBcbiBNZXRob2Q6ICVzIFxuIEFyZ3M6ICVzXG4iCkBAIC0yNTcsNiArMjYyLDkgQEAKICAgICAgICAgaWYgaG93ID09ICJFUlJPUiI6CiAgICAgICAgICAgICBzZWxmLmRlYnVnKCJkZWNvZGVyZXNwb25zZTogSW50ZXJuYWwgRVJST1I6Iiwgd2hhdCkKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcih3aGF0KQorICAgICAgICBpZiBob3cgPT0gIkNBTExFWEMiOgorICAgICAgICAgICAgc2VsZi5kZWJ1ZygiZGVjb2RlcmVzcG9uc2U6IENhbGwgRXhjZXB0aW9uOiIsIHdoYXQpCisgICAgICAgICAgICByYWlzZSB3aGF0CiAgICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKGhvdywgd2hhdCkKIAogICAgIGRlZiBkZWNvZGVfaW50ZXJydXB0aG9vayhzZWxmKToKQEAgLTU5NiwzICs2MDQsMjEgQEAKIAogIyBYWFggS0JLIDA5U2VwMDMgIFdlIG5lZWQgYSBwcm9wZXIgdW5pdCB0ZXN0IGZvciB0aGlzIG1vZHVsZS4gIFByZXZpb3VzbHkKICMgICAgICAgICAgICAgICAgICBleGlzdGluZyB0ZXN0IGNvZGUgd2FzIHJlbW92ZWQgYXQgUmV2IDEuMjcgKHIzNDA5OCkuCisKK2RlZiBkaXNwbGF5aG9vayh2YWx1ZSk6CisgICAgIiIiT3ZlcnJpZGUgc3RhbmRhcmQgZGlzcGxheSBob29rIHRvIHVzZSBub24tbG9jYWxlIGVuY29kaW5nIiIiCisgICAgaWYgdmFsdWUgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuCisgICAgIyBTZXQgJ18nIHRvIE5vbmUgdG8gYXZvaWQgcmVjdXJzaW9uCisgICAgYnVpbHRpbnMuXyA9IE5vbmUKKyAgICB0ZXh0ID0gcmVwcih2YWx1ZSkKKyAgICB0cnk6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUodGV4dCkKKyAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAjIGxldCdzIHVzZSBhc2NpaSB3aGlsZSB1dGY4LWJtcCBjb2RlYyBkb2Vzbid0IHByZXNlbnQKKyAgICAgICAgZW5jb2RpbmcgPSAnYXNjaWknCisgICAgICAgIGJ5dGVzID0gdGV4dC5lbmNvZGUoZW5jb2RpbmcsICdiYWNrc2xhc2hyZXBsYWNlJykKKyAgICAgICAgdGV4dCA9IGJ5dGVzLmRlY29kZShlbmNvZGluZywgJ3N0cmljdCcpCisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUodGV4dCkKKyAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCisgICAgYnVpbHRpbnMuXyA9IHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ydW4ucHkgYi9MaWIvaWRsZWxpYi9ydW4ucHkKaW5kZXggNTM2NTY4MC4uOTg3MmFmNCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvcnVuLnB5CisrKyBiL0xpYi9pZGxlbGliL3J1bi5weQpAQCAtNyw2ICs3LDcgQEAKIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHF1ZXVlCitpbXBvcnQgdGtpbnRlcgogCiBmcm9tIGlkbGVsaWIgaW1wb3J0IENhbGxUaXBzCiBmcm9tIGlkbGVsaWIgaW1wb3J0IEF1dG9Db21wbGV0ZQpAQCAtMzksNiArNDAsMTcgQEAKICAgICAgICAgcmV0dXJuIHMKICAgICB3YXJuaW5ncy5mb3JtYXR3YXJuaW5nID0gaWRsZV9mb3JtYXR3YXJuaW5nX3N1YnByb2MKIAorCit0Y2wgPSB0a2ludGVyLlRjbCgpCisKKworZGVmIGhhbmRsZV90a19ldmVudHModGNsPXRjbCk6CisgICAgIiIiUHJvY2VzcyBhbnkgdGsgZXZlbnRzIHRoYXQgYXJlIHJlYWR5IHRvIGJlIGRpc3BhdGNoZWQgaWYgdGtpbnRlcgorICAgIGhhcyBiZWVuIGltcG9ydGVkLCBhIHRjbCBpbnRlcnByZXRlciBoYXMgYmVlbiBjcmVhdGVkIGFuZCB0ayBoYXMgYmVlbgorICAgIGxvYWRlZC4iIiIKKyAgICB0Y2wuZXZhbCgidXBkYXRlIikKKworCiAjIFRocmVhZCBzaGFyZWQgZ2xvYmFsczogRXN0YWJsaXNoIGEgcXVldWUgYmV0d2VlbiBhIHN1YnRocmVhZCAod2hpY2ggaGFuZGxlcwogIyB0aGUgc29ja2V0KSBhbmQgdGhlIG1haW4gdGhyZWFkICh3aGljaCBydW5zIHVzZXIgY29kZSksIHBsdXMgZ2xvYmFsCiAjIGNvbXBsZXRpb24sIGV4aXQgYW5kIGludGVycnVwdGFibGUgKHRoZSBtYWluIHRocmVhZCkgZmxhZ3M6CkBAIC05NCw2ICsxMDYsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlcSwgcmVxdWVzdCA9IHJwYy5yZXF1ZXN0X3F1ZXVlLmdldChibG9jaz1UcnVlLCB0aW1lb3V0PTAuMDUpCiAgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CisgICAgICAgICAgICAgICAgaGFuZGxlX3RrX2V2ZW50cygpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIG1ldGhvZCwgYXJncywga3dhcmdzID0gcmVxdWVzdAogICAgICAgICAgICAgcmV0ID0gbWV0aG9kKCphcmdzLCAqKmt3YXJncykKQEAgLTI5NSw2ICszMDgsNyBAQAogICAgICAgICBzeXMuc3RkaW4gPSBfUlBDSW5wdXRGaWxlKHNlbGYuY29uc29sZSkKICAgICAgICAgc3lzLnN0ZG91dCA9IF9SUENPdXRwdXRGaWxlKHNlbGYuZ2V0X3JlbW90ZV9wcm94eSgic3Rkb3V0IikpCiAgICAgICAgIHN5cy5zdGRlcnIgPSBfUlBDT3V0cHV0RmlsZShzZWxmLmdldF9yZW1vdGVfcHJveHkoInN0ZGVyciIpKQorICAgICAgICBzeXMuZGlzcGxheWhvb2sgPSBycGMuZGlzcGxheWhvb2sKICAgICAgICAgIyBwYWdlIGhlbHAoKSB0ZXh0IHRvIHNoZWxsLgogICAgICAgICBpbXBvcnQgcHlkb2MgIyBpbXBvcnQgbXVzdCBiZSBkb25lIGhlcmUgdG8gY2FwdHVyZSBpL28gYmluZGluZwogICAgICAgICBweWRvYy5wYWdlciA9IHB5ZG9jLnBsYWlucGFnZXIKZGlmZiAtLWdpdCBhL0xpYi9pbWFwbGliLnB5IGIvTGliL2ltYXBsaWIucHkKaW5kZXggYzAzMzRkOC4uZTE2ZmI5NSAxMDA2NDQKLS0tIGEvTGliL2ltYXBsaWIucHkKKysrIGIvTGliL2ltYXBsaWIucHkKQEAgLTIzLDcgKzIzLDcgQEAKIF9fdmVyc2lvbl9fID0gIjIuNTgiCiAKIGltcG9ydCBiaW5hc2NpaSwgZXJybm8sIHJhbmRvbSwgcmUsIHNvY2tldCwgc3VicHJvY2Vzcywgc3lzLCB0aW1lLCBjYWxlbmRhcgotCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgogICAgIGltcG9ydCBzc2wKICAgICBIQVZFX1NTTCA9IFRydWUKQEAgLTI0OSwxNSArMjQ5LDcgQEAKIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgogICAgICAgICAiIiJSZWFkICdzaXplJyBieXRlcyBmcm9tIHJlbW90ZS4iIiIKLSAgICAgICAgY2h1bmtzID0gW10KLSAgICAgICAgcmVhZCA9IDAKLSAgICAgICAgd2hpbGUgcmVhZCA8IHNpemU6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5maWxlLnJlYWQobWluKHNpemUtcmVhZCwgNDA5NikpCi0gICAgICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcmVhZCArPSBsZW4oZGF0YSkKLSAgICAgICAgICAgIGNodW5rcy5hcHBlbmQoZGF0YSkKLSAgICAgICAgcmV0dXJuIGInJy5qb2luKGNodW5rcykKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZS5yZWFkKHNpemUpCiAKIAogICAgIGRlZiByZWFkbGluZShzZWxmKToKQEAgLTExNzcsMjUgKzExNjksNDAgQEAKIAogICAgICAgICAiIiJJTUFQNCBjbGllbnQgY2xhc3Mgb3ZlciBTU0wgY29ubmVjdGlvbgogCi0gICAgICAgIEluc3RhbnRpYXRlIHdpdGg6IElNQVA0X1NTTChbaG9zdFssIHBvcnRbLCBrZXlmaWxlWywgY2VydGZpbGVdXV1dKQorICAgICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNF9TU0woW2hvc3RbLCBwb3J0Wywga2V5ZmlsZVssIGNlcnRmaWxlWywgc3NsX2NvbnRleHRdXV1dXSkKIAogICAgICAgICAgICAgICAgIGhvc3QgLSBob3N0J3MgbmFtZSAoZGVmYXVsdDogbG9jYWxob3N0KTsKLSAgICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIgKGRlZmF1bHQ6IHN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KS4KKyAgICAgICAgICAgICAgICBwb3J0IC0gcG9ydCBudW1iZXIgKGRlZmF1bHQ6IHN0YW5kYXJkIElNQVA0IFNTTCBwb3J0KTsKICAgICAgICAgICAgICAgICBrZXlmaWxlIC0gUEVNIGZvcm1hdHRlZCBmaWxlIHRoYXQgY29udGFpbnMgeW91ciBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSk7CiAgICAgICAgICAgICAgICAgY2VydGZpbGUgLSBQRU0gZm9ybWF0dGVkIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgKGRlZmF1bHQ6IE5vbmUpOworICAgICAgICAgICAgICAgIHNzbF9jb250ZXh0IC0gYSBTU0xDb250ZXh0IG9iamVjdCB0aGF0IGNvbnRhaW5zIHlvdXIgY2VydGlmaWNhdGUgY2hhaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcml2YXRlIGtleSAoZGVmYXVsdDogTm9uZSkKKyAgICAgICAgICAgICAgICBOb3RlOiBpZiBzc2xfY29udGV4dCBpcyBwcm92aWRlZCwgdGhlbiBwYXJhbWV0ZXJzIGtleWZpbGUgb3IKKyAgICAgICAgICAgICAgICBjZXJ0ZmlsZSBzaG91bGQgbm90IGJlIHNldCBvdGhlcndpc2UgVmFsdWVFcnJvciBpcyB0aHJvd24uCiAKICAgICAgICAgZm9yIG1vcmUgZG9jdW1lbnRhdGlvbiBzZWUgdGhlIGRvY3N0cmluZyBvZiB0aGUgcGFyZW50IGNsYXNzIElNQVA0LgogICAgICAgICAiIiIKIAogCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0ID0gJycsIHBvcnQgPSBJTUFQNF9TU0xfUE9SVCwga2V5ZmlsZSA9IE5vbmUsIGNlcnRmaWxlID0gTm9uZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUlNQVA0X1NTTF9QT1JULCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIHNzbF9jb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgaWYgc3NsX2NvbnRleHQgaXMgbm90IE5vbmUgYW5kIGtleWZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGtleWZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIHNzbF9jb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzc2xfY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKwogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCisgICAgICAgICAgICBzZWxmLnNzbF9jb250ZXh0ID0gc3NsX2NvbnRleHQKICAgICAgICAgICAgIElNQVA0Ll9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpCiAKICAgICAgICAgZGVmIF9jcmVhdGVfc29ja2V0KHNlbGYpOgogICAgICAgICAgICAgc29jayA9IElNQVA0Ll9jcmVhdGVfc29ja2V0KHNlbGYpCi0gICAgICAgICAgICByZXR1cm4gc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKKyAgICAgICAgICAgIGlmIHNlbGYuc3NsX2NvbnRleHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3NsX2NvbnRleHQud3JhcF9zb2NrZXQoc29jaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNzbC53cmFwX3NvY2tldChzb2NrLCBzZWxmLmtleWZpbGUsIHNlbGYuY2VydGZpbGUpCiAKICAgICAgICAgZGVmIG9wZW4oc2VsZiwgaG9zdD0nJywgcG9ydD1JTUFQNF9TU0xfUE9SVCk6CiAgICAgICAgICAgICAiIiJTZXR1cCBjb25uZWN0aW9uIHRvIHJlbW90ZSBzZXJ2ZXIgb24gImhvc3Q6cG9ydCIuCkBAIC0xMzA2LDEwICsxMzEzLDggQEAKICAgICAgICAgICAgIHJldHVybiAnJwogICAgICAgICByZXR1cm4gYmluYXNjaWkuYTJiX2Jhc2U2NChpbnApCiAKLQotCi1Nb24ybnVtID0ge2InSmFuJzogMSwgYidGZWInOiAyLCBiJ01hcic6IDMsIGInQXByJzogNCwgYidNYXknOiA1LCBiJ0p1bic6IDYsCi0gICAgICAgICAgIGInSnVsJzogNywgYidBdWcnOiA4LCBiJ1NlcCc6IDksIGInT2N0JzogMTAsIGInTm92JzogMTEsIGInRGVjJzogMTJ9CitNb250aHMgPSAnIEphbiBGZWIgTWFyIEFwciBNYXkgSnVuIEp1bCBBdWcgU2VwIE9jdCBOb3YgRGVjJy5zcGxpdCgnICcpCitNb24ybnVtID0ge3MuZW5jb2RlKCk6bisxIGZvciBuLCBzIGluIGVudW1lcmF0ZShNb250aHNbMTpdKX0KIAogZGVmIEludGVybmFsZGF0ZTJ0dXBsZShyZXNwKToKICAgICAiIiJQYXJzZSBhbiBJTUFQNCBJTlRFUk5BTERBVEUgc3RyaW5nLgpAQCAtMTM3NywyOCArMTM4MiwzNyBAQAogICAgIFJldHVybiBzdHJpbmcgaW4gZm9ybTogJyJERC1NbW0tWVlZWSBISDpNTTpTUyArSEhNTSInLiAgVGhlCiAgICAgZGF0ZV90aW1lIGFyZ3VtZW50IGNhbiBiZSBhIG51bWJlciAoaW50IG9yIGZsb2F0KSByZXByZXNlbnRpbmcKICAgICBzZWNvbmRzIHNpbmNlIGVwb2NoIChhcyByZXR1cm5lZCBieSB0aW1lLnRpbWUoKSksIGEgOS10dXBsZQotICAgIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lIChhcyByZXR1cm5lZCBieSB0aW1lLmxvY2FsdGltZSgpKSwgb3IgYQorICAgIHJlcHJlc2VudGluZyBsb2NhbCB0aW1lLCBhbiBpbnN0YW5jZSBvZiB0aW1lLnN0cnVjdF90aW1lIChhcworICAgIHJldHVybmVkIGJ5IHRpbWUubG9jYWx0aW1lKCkpLCBhbiBhd2FyZSBkYXRldGltZSBpbnN0YW5jZSBvciBhCiAgICAgZG91YmxlLXF1b3RlZCBzdHJpbmcuICBJbiB0aGUgbGFzdCBjYXNlLCBpdCBpcyBhc3N1bWVkIHRvIGFscmVhZHkKICAgICBiZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuCiAgICAgIiIiCi0KICAgICBpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgKGludCwgZmxvYXQpKToKLSAgICAgICAgdHQgPSB0aW1lLmxvY2FsdGltZShkYXRlX3RpbWUpCi0gICAgZWxpZiBpc2luc3RhbmNlKGRhdGVfdGltZSwgKHR1cGxlLCB0aW1lLnN0cnVjdF90aW1lKSk6Ci0gICAgICAgIHR0ID0gZGF0ZV90aW1lCisgICAgICAgIGR0ID0gZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChkYXRlX3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZS51dGMpLmFzdGltZXpvbmUoKQorICAgIGVsaWYgaXNpbnN0YW5jZShkYXRlX3RpbWUsIHR1cGxlKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ210b2ZmID0gZGF0ZV90aW1lLnRtX2dtdG9mZgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBpZiB0aW1lLmRheWxpZ2h0OgorICAgICAgICAgICAgICAgIGRzdCA9IGRhdGVfdGltZVs4XQorICAgICAgICAgICAgICAgIGlmIGRzdCA9PSAtMToKKyAgICAgICAgICAgICAgICAgICAgZHN0ID0gdGltZS5sb2NhbHRpbWUodGltZS5ta3RpbWUoZGF0ZV90aW1lKSlbOF0KKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtKHRpbWUudGltZXpvbmUsIHRpbWUuYWx0em9uZSlbZHN0XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBnbXRvZmYgPSAtdGltZS50aW1lem9uZQorICAgICAgICBkZWx0YSA9IHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZikKKyAgICAgICAgZHQgPSBkYXRldGltZSgqZGF0ZV90aW1lWzo2XSwgdHppbmZvPXRpbWV6b25lKGRlbHRhKSkKKyAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCBkYXRldGltZSk6CisgICAgICAgIGlmIGRhdGVfdGltZS50emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGVfdGltZSBtdXN0IGJlIGF3YXJlIikKKyAgICAgICAgZHQgPSBkYXRlX3RpbWUKICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCBzdHIpIGFuZCAoZGF0ZV90aW1lWzBdLGRhdGVfdGltZVstMV0pID09ICgnIicsJyInKToKICAgICAgICAgcmV0dXJuIGRhdGVfdGltZSAgICAgICAgIyBBc3N1bWUgaW4gY29ycmVjdCBmb3JtYXQKICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkYXRlX3RpbWUgbm90IG9mIGEga25vd24gdHlwZSIpCi0KLSAgICBkdCA9IHRpbWUuc3RyZnRpbWUoIiVkLSViLSVZICVIOiVNOiVTIiwgdHQpCi0gICAgaWYgZHRbMF0gPT0gJzAnOgotICAgICAgICBkdCA9ICcgJyArIGR0WzE6XQotICAgIGlmIHRpbWUuZGF5bGlnaHQgYW5kIHR0Wy0xXToKLSAgICAgICAgem9uZSA9IC10aW1lLmFsdHpvbmUKLSAgICBlbHNlOgotICAgICAgICB6b25lID0gLXRpbWUudGltZXpvbmUKLSAgICByZXR1cm4gJyInICsgZHQgKyAiICUrMDNkJTAyZCIgJSBkaXZtb2Qoem9uZS8vNjAsIDYwKSArICciJworICAgIGZtdCA9ICciJWQte30tJVkgJUg6JU06JVMgJXoiJy5mb3JtYXQoTW9udGhzW2R0Lm1vbnRoXSkKKyAgICByZXR1cm4gZHQuc3RyZnRpbWUoZm10KQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL2ltcC5weSBiL0xpYi9pbXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE5Yzg0ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pbXAucHkKQEAgLTAsMCArMSwyNTcgQEAKKyIiIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBjb21wb25lbnRzIG5lZWRlZCB0byBidWlsZCB5b3VyIG93biBfX2ltcG9ydF9fCitmdW5jdGlvbi4gIFVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgYXJlIG9ic29sZXRlLgorCitJbiBtb3N0IGNhc2VzIGl0IGlzIHByZWZlcnJlZCB5b3UgY29uc2lkZXIgdXNpbmcgdGhlIGltcG9ydGxpYiBtb2R1bGUncworZnVuY3Rpb25hbGl0eSBvdmVyIHRoaXMgbW9kdWxlLgorCisiIiIKKyMgKFByb2JhYmx5KSBuZWVkIHRvIHN0YXkgaW4gX2ltcAorZnJvbSBfaW1wIGltcG9ydCAobG9ja19oZWxkLCBhY3F1aXJlX2xvY2ssIHJlbGVhc2VfbG9jaywKKyAgICAgICAgICAgICAgICAgIGxvYWRfZHluYW1pYywgZ2V0X2Zyb3plbl9vYmplY3QsIGlzX2Zyb3plbl9wYWNrYWdlLAorICAgICAgICAgICAgICAgICAgaW5pdF9idWlsdGluLCBpbml0X2Zyb3plbiwgaXNfYnVpbHRpbiwgaXNfZnJvemVuLAorICAgICAgICAgICAgICAgICAgX2ZpeF9jb19maWxlbmFtZSkKKworIyBEaXJlY3RseSBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBuZXdfbW9kdWxlCitmcm9tIGltcG9ydGxpYi5fYm9vdHN0cmFwIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZSwgc291cmNlX2Zyb21fY2FjaGUKKworCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdG9rZW5pemUKK2ltcG9ydCB3YXJuaW5ncworCisKKyMgREVQUkVDQVRFRAorU0VBUkNIX0VSUk9SID0gMAorUFlfU09VUkNFID0gMQorUFlfQ09NUElMRUQgPSAyCitDX0VYVEVOU0lPTiA9IDMKK1BZX1JFU09VUkNFID0gNAorUEtHX0RJUkVDVE9SWSA9IDUKK0NfQlVJTFRJTiA9IDYKK1BZX0ZST1pFTiA9IDcKK1BZX0NPREVSRVNPVVJDRSA9IDgKK0lNUF9IT09LID0gOQorCisKK2RlZiBnZXRfbWFnaWMoKToKKyAgICAiIiJSZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIiIgorICAgIHJldHVybiBfYm9vdHN0cmFwLl9NQUdJQ19CWVRFUworCisKK2RlZiBnZXRfdGFnKCk6CisgICAgIiIiUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iIiIKKyAgICByZXR1cm4gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworCisKK2RlZiBnZXRfc3VmZml4ZXMoKToKKyAgICB3YXJuaW5ncy53YXJuKCdpbXAuZ2V0X3N1ZmZpeGVzKCkgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSBjb25zdGFudHMgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgb24gaW1wb3J0bGliLm1hY2hpbmVyeSBpbnN0ZWFkJywKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICBleHRlbnNpb25zID0gWyhzLCAncmInLCBDX0VYVEVOU0lPTikgZm9yIHMgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFU10KKyAgICBzb3VyY2UgPSBbKHMsICdVJywgUFlfU09VUkNFKSBmb3IgcyBpbiBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTXQorICAgIGJ5dGVjb2RlID0gWyhzLCAncmInLCBQWV9DT01QSUxFRCkgZm9yIHMgaW4gbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTXQorCisgICAgcmV0dXJuIGV4dGVuc2lvbnMgKyBzb3VyY2UgKyBieXRlY29kZQorCisKK2NsYXNzIE51bGxJbXBvcnRlcjoKKworICAgICIiIk51bGwgaW1wb3J0IG9iamVjdC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAgICAgaWYgcGF0aCA9PSAnJzoKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdlbXB0eSBwYXRobmFtZScsIHBhdGg9JycpCisgICAgICAgIGVsaWYgb3MucGF0aC5pc2RpcihwYXRoKToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdleGlzdGluZyBkaXJlY3RvcnknLCBwYXRoPXBhdGgpCisKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJBbHdheXMgcmV0dXJucyBOb25lLiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIF9IYWNrZWRHZXREYXRhOgorCisgICAgIiIiQ29tcGF0aWJpaWx0eSBzdXBwb3J0IGZvciAnZmlsZScgYXJndW1lbnRzIG9mIHZhcmlvdXMgbG9hZF8qKCkKKyAgICBmdW5jdGlvbnMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIHBhdGgsIGZpbGU9Tm9uZSk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIHNlbGYuZmlsZSA9IGZpbGUKKworICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiR3Jvc3MgaGFjayB0byBjb250b3J0IGxvYWRlciB0byBkZWFsIHcvIGxvYWRfKigpJ3MgYmFkIEFQSS4iIiIKKyAgICAgICAgaWYgc2VsZi5maWxlIGFuZCBwYXRoID09IHNlbGYucGF0aDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5maWxlOgorICAgICAgICAgICAgICAgICMgVGVjaG5pY2FsbHkgc2hvdWxkIGJlIHJldHVybmluZyBieXRlcywgYnV0CisgICAgICAgICAgICAgICAgIyBTb3VyY2VMb2FkZXIuZ2V0X2NvZGUoKSBqdXN0IHBhc3NlZCB3aGF0IGlzIHJldHVybmVkIHRvCisgICAgICAgICAgICAgICAgIyBjb21waWxlKCkgd2hpY2ggY2FuIGhhbmRsZSBzdHIuIEFuZCBjb252ZXJ0aW5nIHRvIGJ5dGVzIHdvdWxkCisgICAgICAgICAgICAgICAgIyByZXF1aXJlIGZpZ3VyaW5nIG91dCB0aGUgZW5jb2RpbmcgdG8gZGVjb2RlIHRvIGFuZAorICAgICAgICAgICAgICAgICMgdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKCkgb25seSBhY2NlcHRzIGJ5dGVzLgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGUucmVhZCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfZGF0YShwYXRoKQorCisKK2NsYXNzIF9Mb2FkU291cmNlQ29tcGF0aWJpbGl0eShfSGFja2VkR2V0RGF0YSwgX2Jvb3RzdHJhcC5Tb3VyY2VGaWxlTG9hZGVyKToKKworICAgICIiIkNvbXBhdGliaWxpdHkgc3VwcG9ydCBmb3IgaW1wbGVtZW50aW5nIGxvYWRfc291cmNlKCkuIiIiCisKKworZGVmIGxvYWRfc291cmNlKG5hbWUsIHBhdGhuYW1lLCBmaWxlPU5vbmUpOgorICAgIG1zZyA9ICgnaW1wLmxvYWRfc291cmNlKCkgaXMgZGVwcmVjYXRlZDsgdXNlICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkubG9hZF9tb2R1bGUoKScKKyAgICAgICAgICAgJyBpbnN0ZWFkJykKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIHJldHVybiBfTG9hZFNvdXJjZUNvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpLmxvYWRfbW9kdWxlKG5hbWUpCisKKworY2xhc3MgX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkoX0hhY2tlZEdldERhdGEsCisgICAgICAgIF9ib290c3RyYXAuU291cmNlbGVzc0ZpbGVMb2FkZXIpOgorCisgICAgIiIiQ29tcGF0aWJpbGl0eSBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgbG9hZF9jb21waWxlZCgpLiIiIgorCisKK2RlZiBsb2FkX2NvbXBpbGVkKG5hbWUsIHBhdGhuYW1lLCBmaWxlPU5vbmUpOgorICAgIG1zZyA9ICgnaW1wLmxvYWRfY29tcGlsZWQoKSBpcyBkZXByZWNhdGVkOyB1c2UgJworICAgICAgICAgICAnaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcihuYW1lLCBwYXRobmFtZSkuJworICAgICAgICAgICAnbG9hZF9tb2R1bGUoKSBpbnN0ZWFkICcpCisgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gX0xvYWRDb21waWxlZENvbXBhdGliaWxpdHkobmFtZSwgcGF0aG5hbWUsIGZpbGUpLmxvYWRfbW9kdWxlKG5hbWUpCisKKworZGVmIGxvYWRfcGFja2FnZShuYW1lLCBwYXRoKToKKyAgICBtc2cgPSAoJ2ltcC5sb2FkX3BhY2thZ2UoKSBpcyBkZXByZWNhdGVkOyB1c2UgZWl0aGVyICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcigpIG9yICcKKyAgICAgICAgICAgJ2ltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIoKSBpbnN0ZWFkJykKKyAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgIGV4dGVuc2lvbnMgPSAobWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1s6XSArCisgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTWzpdKQorICAgICAgICBmb3IgZXh0ZW5zaW9uIGluIGV4dGVuc2lvbnM6CisgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHBhdGgsICdfX2luaXRfXycrZXh0ZW5zaW9uKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3shcn0gaXMgbm90IGEgcGFja2FnZScuZm9ybWF0KHBhdGgpKQorICAgIHJldHVybiBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobmFtZSwgcGF0aCkubG9hZF9tb2R1bGUobmFtZSkKKworCitkZWYgbG9hZF9tb2R1bGUobmFtZSwgZmlsZSwgZmlsZW5hbWUsIGRldGFpbHMpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBMb2FkIGEgbW9kdWxlLCBnaXZlbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieSBmaW5kX21vZHVsZSgpLgorCisgICAgVGhlIG1vZHVsZSBuYW1lIG11c3QgaW5jbHVkZSB0aGUgZnVsbCBwYWNrYWdlIG5hbWUsIGlmIGFueS4KKworICAgICIiIgorICAgIHN1ZmZpeCwgbW9kZSwgdHlwZV8gPSBkZXRhaWxzCisgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgIGlmIG1vZGUgYW5kIChub3QgbW9kZS5zdGFydHN3aXRoKCgncicsICdVJykpIG9yICcrJyBpbiBtb2RlKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2ludmFsaWQgZmlsZSBvcGVuIG1vZGUgeyFyfScuZm9ybWF0KG1vZGUpKQorICAgICAgICBlbGlmIGZpbGUgaXMgTm9uZSBhbmQgdHlwZV8gaW4ge1BZX1NPVVJDRSwgUFlfQ09NUElMRUQsIENfRVhURU5TSU9OfToKKyAgICAgICAgICAgIG1zZyA9ICdmaWxlIG9iamVjdCByZXF1aXJlZCBmb3IgaW1wb3J0ICh0eXBlIGNvZGUge30pJy5mb3JtYXQodHlwZV8pCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBQWV9TT1VSQ0U6CisgICAgICAgICAgICByZXR1cm4gbG9hZF9zb3VyY2UobmFtZSwgZmlsZW5hbWUsIGZpbGUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gUFlfQ09NUElMRUQ6CisgICAgICAgICAgICByZXR1cm4gbG9hZF9jb21waWxlZChuYW1lLCBmaWxlbmFtZSwgZmlsZSkKKyAgICAgICAgZWxpZiB0eXBlXyA9PSBDX0VYVEVOU0lPTjoKKyAgICAgICAgICAgIHJldHVybiBsb2FkX2R5bmFtaWMobmFtZSwgZmlsZW5hbWUsIGZpbGUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gUEtHX0RJUkVDVE9SWToKKyAgICAgICAgICAgIHJldHVybiBsb2FkX3BhY2thZ2UobmFtZSwgZmlsZW5hbWUpCisgICAgICAgIGVsaWYgdHlwZV8gPT0gQ19CVUlMVElOOgorICAgICAgICAgICAgcmV0dXJuIGluaXRfYnVpbHRpbihuYW1lKQorICAgICAgICBlbGlmIHR5cGVfID09IFBZX0ZST1pFTjoKKyAgICAgICAgICAgIHJldHVybiBpbml0X2Zyb3plbihuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0gICJEb24ndCBrbm93IGhvdyB0byBpbXBvcnQge30gKHR5cGUgY29kZSB7fSkiLmZvcm1hdChuYW1lLCB0eXBlXykKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZywgbmFtZT1uYW1lKQorCisKK2RlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOgorICAgICIiIioqREVQUkVDQVRFRCoqCisKKyAgICBTZWFyY2ggZm9yIGEgbW9kdWxlLgorCisgICAgSWYgcGF0aCBpcyBvbWl0dGVkIG9yIE5vbmUsIHNlYXJjaCBmb3IgYSBidWlsdC1pbiwgZnJvemVuIG9yIHNwZWNpYWwKKyAgICBtb2R1bGUgYW5kIGNvbnRpbnVlIHNlYXJjaCBpbiBzeXMucGF0aC4gVGhlIG1vZHVsZSBuYW1lIGNhbm5vdAorICAgIGNvbnRhaW4gJy4nOyB0byBzZWFyY2ggZm9yIGEgc3VibW9kdWxlIG9mIGEgcGFja2FnZSwgcGFzcyB0aGUKKyAgICBzdWJtb2R1bGUgbmFtZSBhbmQgdGhlIHBhY2thZ2UncyBfX3BhdGhfXy4KKworICAgICIiIgorICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0cik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ25hbWUnIG11c3QgYmUgYSBzdHIsIG5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQorICAgIGVsaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgKHR5cGUoTm9uZSksIGxpc3QpKToKKyAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eQorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIidsaXN0JyBtdXN0IGJlIE5vbmUgb3IgYSBsaXN0LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisKKyAgICBpZiBwYXRoIGlzIE5vbmU6CisgICAgICAgIGlmIGlzX2J1aWx0aW4obmFtZSk6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgKCcnLCAnJywgQ19CVUlMVElOKQorICAgICAgICBlbGlmIGlzX2Zyb3plbihuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCAoJycsICcnLCBQWV9GUk9aRU4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKKworICAgIGZvciBlbnRyeSBpbiBwYXRoOgorICAgICAgICBwYWNrYWdlX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihlbnRyeSwgbmFtZSkKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBbJy5weScsIG1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1swXV06CisgICAgICAgICAgICBwYWNrYWdlX2ZpbGVfbmFtZSA9ICdfX2luaXRfXycgKyBzdWZmaXgKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihwYWNrYWdlX2RpcmVjdG9yeSwgcGFja2FnZV9maWxlX25hbWUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmaWxlX3BhdGgpOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBwYWNrYWdlX2RpcmVjdG9yeSwgKCcnLCAnJywgUEtHX0RJUkVDVE9SWSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbW9kZSwgdHlwZV8gaW4gZ2V0X3N1ZmZpeGVzKCk6CisgICAgICAgICAgICAgICAgZmlsZV9uYW1lID0gbmFtZSArIHN1ZmZpeAorICAgICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihlbnRyeSwgZmlsZV9uYW1lKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBicmVhayAgIyBCcmVhayBvdXQgb2Ygb3V0ZXIgbG9vcCB3aGVuIGJyZWFraW5nIG91dCBvZiBpbm5lciBsb29wLgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9ib290c3RyYXAuX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisKKyAgICBlbmNvZGluZyA9IE5vbmUKKyAgICBpZiBtb2RlID09ICdVJzoKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKKyAgICAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKGZpbGUucmVhZGxpbmUpWzBdCisgICAgZmlsZSA9IG9wZW4oZmlsZV9wYXRoLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZykKKyAgICByZXR1cm4gZmlsZSwgZmlsZV9wYXRoLCAoc3VmZml4LCBtb2RlLCB0eXBlXykKKworCitfUkVMT0FESU5HID0ge30KKworZGVmIHJlbG9hZChtb2R1bGUpOgorICAgICIiIlJlbG9hZCB0aGUgbW9kdWxlIGFuZCByZXR1cm4gaXQuCisKKyAgICBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBpbXBvcnRlZCBiZWZvcmUuCisKKyAgICAiIiIKKyAgICBpZiBub3QgbW9kdWxlIG9yIHR5cGUobW9kdWxlKSAhPSB0eXBlKHN5cyk6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigicmVsb2FkKCkgYXJndW1lbnQgbXVzdCBiZSBtb2R1bGUiKQorICAgIG5hbWUgPSBtb2R1bGUuX19uYW1lX18KKyAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgbXNnID0gIm1vZHVsZSB7fSBub3QgaW4gc3lzLm1vZHVsZXMiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQobmFtZSksIG5hbWU9bmFtZSkKKyAgICBpZiBuYW1lIGluIF9SRUxPQURJTkc6CisgICAgICAgIHJldHVybiBfUkVMT0FESU5HW25hbWVdCisgICAgX1JFTE9BRElOR1tuYW1lXSA9IG1vZHVsZQorICAgIHRyeToKKyAgICAgICAgcGFyZW50X25hbWUgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBpZiBwYXJlbnRfbmFtZSBhbmQgcGFyZW50X25hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gInBhcmVudCB7IXJ9IG5vdCBpbiBzeXMubW9kdWxlcyIKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQocGFyZW50bmFtZSksIG5hbWU9cGFyZW50X25hbWUpCisgICAgICAgIHJldHVybiBtb2R1bGUuX19sb2FkZXJfXy5sb2FkX21vZHVsZShuYW1lKQorICAgIGZpbmFsbHk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBfUkVMT0FESU5HW25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL19faW5pdF9fLnB5CmluZGV4IDJiYWFmOTMuLjZmNDBkYWMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX19pbml0X18ucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fX2luaXRfXy5weQpAQCAtMSwxMTAgKzEsNzQgQEAKLSIiIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgaW1wb3J0LgotCi1SZWZlcmVuY2VzIG9uIGltcG9ydDoKLQotICAgICogTGFuZ3VhZ2UgcmVmZXJlbmNlCi0gICAgICAgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9yZWYvaW1wb3J0Lmh0bWwKLSAgICAqIF9faW1wb3J0X18gZnVuY3Rpb24KLSAgICAgICAgICBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYi9idWlsdC1pbi1mdW5jcy5odG1sCi0gICAgKiBQYWNrYWdlcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kb2MvZXNzYXlzL3BhY2thZ2VzLmh0bWwKLSAgICAqIFBFUCAyMzU6IEltcG9ydCBvbiBDYXNlLUluc2Vuc2l0aXZlIFBsYXRmb3JtcwotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDIzNQotICAgICogUEVQIDI3NTogSW1wb3J0IE1vZHVsZXMgZnJvbSBaaXAgQXJjaGl2ZXMKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyNzMKLSAgICAqIFBFUCAzMDI6IE5ldyBJbXBvcnQgSG9va3MKLSAgICAgICAgICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzMDIvCi0gICAgKiBQRVAgMzI4OiBJbXBvcnRzOiBNdWx0aS1saW5lIGFuZCBBYnNvbHV0ZS9SZWxhdGl2ZQotICAgICAgICAgIGh0dHA6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDMyOAotCi0iIiIKLV9fYWxsX18gPSBbJ19faW1wb3J0X18nLCAnaW1wb3J0X21vZHVsZSddCi0KLWZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHRva2VuaXplCisiIiJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKK19fYWxsX18gPSBbJ19faW1wb3J0X18nLCAnaW1wb3J0X21vZHVsZScsICdpbnZhbGlkYXRlX2NhY2hlcyddCiAKICMgQm9vdHN0cmFwIGhlbHAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9jYXNlX29rKGRpcmVjdG9yeSwgY2hlY2spOgotICAgICIiIkNoZWNrIGlmIHRoZSBkaXJlY3RvcnkgY29udGFpbnMgc29tZXRoaW5nIG1hdGNoaW5nICdjaGVjaycuCisjIFVudGlsIGJvb3RzdHJhcHBpbmcgaXMgY29tcGxldGUsIERPIE5PVCBpbXBvcnQgYW55IG1vZHVsZXMgdGhhdCBhdHRlbXB0CisjIHRvIGltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkuIFNpbmNlIHRoaXMKKyMgcGFydGlhbGx5IGluaXRpYWxpc2VkIHBhY2thZ2Ugd291bGQgYmUgcHJlc2VudCBpbiBzeXMubW9kdWxlcywgdGhvc2UKKyMgbW9kdWxlcyB3b3VsZCBnZXQgYW4gdW5pbml0aWFsaXNlZCBjb3B5IG9mIHRoZSBzb3VyY2UgdmVyc2lvbiwgaW5zdGVhZAorIyBvZiBhIGZ1bGx5IGluaXRpYWxpc2VkIHZlcnNpb24gKGVpdGhlciB0aGUgZnJvemVuIG9uZSBvciB0aGUgb25lCisjIGluaXRpYWxpc2VkIGJlbG93IGlmIHRoZSBmcm96ZW4gb25lIGlzIG5vdCBhdmFpbGFibGUpLgoraW1wb3J0IF9pbXAgICMgSnVzdCB0aGUgYnVpbHRpbiBjb21wb25lbnQsIE5PVCB0aGUgZnVsbCBQeXRob24gbW9kdWxlCitpbXBvcnQgc3lzCiAKLSAgICBObyBjaGVjayBpcyBkb25lIGlmIHRoZSBmaWxlL2RpcmVjdG9yeSBleGlzdHMgb3Igbm90LgotCi0gICAgIiIiCi0gICAgaWYgJ1BZVEhPTkNBU0VPSycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICBlbGlmIGNoZWNrIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5IGlmIGRpcmVjdG9yeSBlbHNlIG9zLmdldGN3ZCgpKToKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgX3dfbG9uZyh4KToKLSAgICAiIiJDb252ZXJ0IGEgMzItYml0IGludGVnZXIgdG8gbGl0dGxlLWVuZGlhbi4KLQotICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb25zIGFyZSBleHBvc2VkLgotCi0gICAgIiIiCi0gICAgeCA9IGludCh4KQotICAgIGludF9ieXRlcyA9IFtdCi0gICAgaW50X2J5dGVzLmFwcGVuZCh4ICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDgpICYgMHhGRikKLSAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDE2KSAmIDB4RkYpCi0gICAgaW50X2J5dGVzLmFwcGVuZCgoeCA+PiAyNCkgJiAweEZGKQotICAgIHJldHVybiBieXRlYXJyYXkoaW50X2J5dGVzKQotCi0KLWRlZiBfcl9sb25nKGludF9ieXRlcyk6Ci0gICAgIiIiQ29udmVydCA0IGJ5dGVzIGluIGxpdHRsZS1lbmRpYW4gdG8gYW4gaW50ZWdlci4KLQotICAgIFhYWCBUZW1wb3JhcnkgdW50aWwgbWFyc2hhbCdzIGxvbmcgZnVuY3Rpb24gYXJlIGV4cG9zZWQuCi0KLSAgICAiIiIKLSAgICB4ID0gaW50X2J5dGVzWzBdCi0gICAgeCB8PSBpbnRfYnl0ZXNbMV0gPDwgOAotICAgIHggfD0gaW50X2J5dGVzWzJdIDw8IDE2Ci0gICAgeCB8PSBpbnRfYnl0ZXNbM10gPDwgMjQKLSAgICByZXR1cm4geAotCi0KLSMgUmVxdWlyZWQgYnVpbHQtaW4gbW9kdWxlcy4KIHRyeToKLSAgICBpbXBvcnQgcG9zaXggYXMgX29zCisgICAgaW1wb3J0IF9mcm96ZW5faW1wb3J0bGliIGFzIF9ib290c3RyYXAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBudCBhcyBfb3MKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBvczIgYXMgX29zCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCdwb3NpeCwgbnQsIG9yIG9zMiBtb2R1bGUgcmVxdWlyZWQgZm9yIGltcG9ydGxpYicpCi1fYm9vdHN0cmFwLl9vcyA9IF9vcwotaW1wb3J0IGltcCwgc3lzLCBtYXJzaGFsLCBlcnJubywgX2lvCi1fYm9vdHN0cmFwLmltcCA9IGltcAotX2Jvb3RzdHJhcC5zeXMgPSBzeXMKLV9ib290c3RyYXAubWFyc2hhbCA9IG1hcnNoYWwKLV9ib290c3RyYXAuZXJybm8gPSBlcnJubwotX2Jvb3RzdHJhcC5faW8gPSBfaW8KLWltcG9ydCBfd2FybmluZ3MKLV9ib290c3RyYXAuX3dhcm5pbmdzID0gX3dhcm5pbmdzCisgICAgZnJvbSAuIGltcG9ydCBfYm9vdHN0cmFwCisgICAgX2Jvb3RzdHJhcC5fc2V0dXAoc3lzLCBfaW1wKQorZWxzZToKKyAgICAjIGltcG9ydGxpYi5fYm9vdHN0cmFwIGlzIHRoZSBidWlsdC1pbiBpbXBvcnQsIGVuc3VyZSB3ZSBkb24ndCBjcmVhdGUKKyAgICAjIGEgc2Vjb25kIGNvcHkgb2YgdGhlIG1vZHVsZS4KKyAgICBfYm9vdHN0cmFwLl9fbmFtZV9fID0gJ2ltcG9ydGxpYi5fYm9vdHN0cmFwJworICAgIF9ib290c3RyYXAuX19wYWNrYWdlX18gPSAnaW1wb3J0bGliJworICAgIF9ib290c3RyYXAuX19maWxlX18gPSBfX2ZpbGVfXy5yZXBsYWNlKCdfX2luaXRfXy5weScsICdfYm9vdHN0cmFwLnB5JykKKyAgICBzeXMubW9kdWxlc1snaW1wb3J0bGliLl9ib290c3RyYXAnXSA9IF9ib290c3RyYXAKIAorIyBUbyBzaW1wbGlmeSBpbXBvcnRzIGluIHRlc3QgY29kZQorX3dfbG9uZyA9IF9ib290c3RyYXAuX3dfbG9uZworX3JfbG9uZyA9IF9ib290c3RyYXAuX3JfbG9uZwogCi1mcm9tIG9zIGltcG9ydCBzZXAKLSMgRm9yIG9zLnBhdGguam9pbiByZXBsYWNlbWVudDsgcHVsbCBmcm9tIEluY2x1ZGUvb3NkZWZzLmg6U0VQIC4KLV9ib290c3RyYXAucGF0aF9zZXAgPSBzZXAKLQotX2Jvb3RzdHJhcC5fY2FzZV9vayA9IF9jYXNlX29rCi1tYXJzaGFsLl93X2xvbmcgPSBfd19sb25nCi1tYXJzaGFsLl9yX2xvbmcgPSBfcl9sb25nCi0KKyMgRnVsbHkgYm9vdHN0cmFwcGVkIGF0IHRoaXMgcG9pbnQsIGltcG9ydCB3aGF0ZXZlciB5b3UgbGlrZSwgY2lyY3VsYXIKKyMgZGVwZW5kZW5jaWVzIGFuZCBzdGFydHVwIG92ZXJoZWFkIG1pbmltaXNhdGlvbiBwZXJtaXR0aW5nIDopCiAKICMgUHVibGljIEFQSSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgX19pbXBvcnRfXwogCiAKK2RlZiBpbnZhbGlkYXRlX2NhY2hlcygpOgorICAgICIiIkNhbGwgdGhlIGludmFsaWRhdGVfY2FjaGVzKCkgbWV0aG9kIG9uIGFsbCBtZXRhIHBhdGggZmluZGVycyBzdG9yZWQgaW4KKyAgICBzeXMubWV0YV9wYXRoICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisKK2RlZiBmaW5kX2xvYWRlcihuYW1lLCBwYXRoPU5vbmUpOgorICAgICIiIkZpbmQgdGhlIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUuCisKKyAgICBGaXJzdCwgc3lzLm1vZHVsZXMgaXMgY2hlY2tlZCB0byBzZWUgaWYgdGhlIG1vZHVsZSB3YXMgYWxyZWFkeSBpbXBvcnRlZC4gSWYKKyAgICBzbywgdGhlbiBzeXMubW9kdWxlc1tuYW1lXS5fX2xvYWRlcl9fIGlzIHJldHVybmVkLiBJZiB0aGF0IGhhcHBlbnMgdG8gYmUKKyAgICBzZXQgdG8gTm9uZSwgdGhlbiBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlIG1vZHVsZSBpcyBub3QgaW4KKyAgICBzeXMubW9kdWxlcywgdGhlbiBzeXMubWV0YV9wYXRoIGlzIHNlYXJjaGVkIGZvciBhIHN1aXRhYmxlIGxvYWRlciB3aXRoIHRoZQorICAgIHZhbHVlIG9mICdwYXRoJyBnaXZlbiB0byB0aGUgZmluZGVycy4gTm9uZSBpcyByZXR1cm5lZCBpZiBubyBsb2FkZXIgY291bGQKKyAgICBiZSBmb3VuZC4KKworICAgIERvdHRlZCBuYW1lcyBkbyBub3QgaGF2ZSB0aGVpciBwYXJlbnQgcGFja2FnZXMgaW1wbGljaXRseSBpbXBvcnRlZC4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgbG9hZGVyID0gc3lzLm1vZHVsZXNbbmFtZV0uX19sb2FkZXJfXworICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3t9Ll9fbG9hZGVyX18gaXMgTm9uZScuZm9ybWF0KG5hbWUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGxvYWRlcgorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHJldHVybiBfYm9vdHN0cmFwLl9maW5kX21vZHVsZShuYW1lLCBwYXRoKQorCisKIGRlZiBpbXBvcnRfbW9kdWxlKG5hbWUsIHBhY2thZ2U9Tm9uZSk6CiAgICAgIiIiSW1wb3J0IGEgbW9kdWxlLgogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKaW5kZXggOTBlYjFhNy4uMjZkOTI1MCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CisrKyBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQpAQCAtNiwzMyArNiw5MyBAQAogd29yay4gT25lIHNob3VsZCB1c2UgaW1wb3J0bGliIGFzIHRoZSBwdWJsaWMtZmFjaW5nIHZlcnNpb24gb2YgdGhpcyBtb2R1bGUuCiAKICIiIgotCi0jIEluamVjdGVkIG1vZHVsZXMgYXJlICdfd2FybmluZ3MnLCAnaW1wJywgJ3N5cycsICdtYXJzaGFsJywgJ2Vycm5vJywgJ19pbycsCi0jIGFuZCAnX29zJyAoYS5rLmEuICdwb3NpeCcsICdudCcgb3IgJ29zMicpLgotIyBJbmplY3RlZCBhdHRyaWJ1dGUgaXMgcGF0aF9zZXAuCiAjCisjIElNUE9SVEFOVDogV2hlbmV2ZXIgbWFraW5nIGNoYW5nZXMgdG8gdGhpcyBtb2R1bGUsIGJlIHN1cmUgdG8gcnVuCisjIGEgdG9wLWxldmVsIG1ha2UgaW4gb3JkZXIgdG8gZ2V0IHRoZSBmcm96ZW4gdmVyc2lvbiBvZiB0aGUgbW9kdWxlCisjIHVwZGF0ZS4gTm90IGRvaW5nIHNvLCB3aWxsIHJlc3VsdCBpbiB0aGUgTWFrZWZpbGUgdG8gZmFpbCBmb3IKKyMgYWxsIG90aGVycyB3aG8gZG9uJ3QgaGF2ZSBhIC4vcHl0aG9uIGFyb3VuZCB0byBmcmVlemUgdGhlIG1vZHVsZQorIyBpbiB0aGUgZWFybHkgc3RhZ2VzIG9mIGNvbXBpbGF0aW9uLgorIworCisjIFNlZSBpbXBvcnRsaWIuX3NldHVwKCkgZm9yIHdoYXQgaXMgaW5qZWN0ZWQgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKwogIyBXaGVuIGVkaXRpbmcgdGhpcyBjb2RlIGJlIGF3YXJlIHRoYXQgY29kZSBleGVjdXRlZCBhdCBpbXBvcnQgdGltZSBDQU5OT1QKICMgcmVmZXJlbmNlIGFueSBpbmplY3RlZCBvYmplY3RzISBUaGlzIGluY2x1ZGVzIG5vdCBvbmx5IGdsb2JhbCBjb2RlIGJ1dCBhbHNvCiAjIGFueXRoaW5nIHNwZWNpZmllZCBhdCB0aGUgY2xhc3MgbGV2ZWwuCiAKKyMgWFhYIE1ha2Ugc3VyZSBhbGwgcHVibGljIG5hbWVzIGhhdmUgbm8gc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZSBhbmQgYWxsCisjICAgICBvdGhlcnMgZG8uCisKIAogIyBCb290c3RyYXAtcmVsYXRlZCBjb2RlICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0jIFhYWCBDb3VsZCBhbHNvIGV4cG9zZSBNb2R1bGVzL2dldHBhdGguYzpqb2lucGF0aCgpCi1kZWYgX3BhdGhfam9pbigqYXJncyk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbi4iIiIKLSAgICByZXR1cm4gcGF0aF9zZXAuam9pbih4WzotbGVuKHBhdGhfc2VwKV0gaWYgeC5lbmRzd2l0aChwYXRoX3NlcCkgZWxzZSB4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gYXJncyBpZiB4KQorX0NBU0VfSU5TRU5TSVRJVkVfUExBVEZPUk1TID0gJ3dpbicsICdjeWd3aW4nLCAnZGFyd2luJwogCiAKLWRlZiBfcGF0aF9leGlzdHMocGF0aCk6Ci0gICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguZXhpc3RzLiIiIgotICAgIHRyeToKLSAgICAgICAgX29zLnN0YXQocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCitkZWYgX21ha2VfcmVsYXhfY2FzZSgpOgorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKF9DQVNFX0lOU0VOU0lUSVZFX1BMQVRGT1JNUyk6CisgICAgICAgIGRlZiBfcmVsYXhfY2FzZSgpOgorICAgICAgICAgICAgIiIiVHJ1ZSBpZiBmaWxlbmFtZXMgbXVzdCBiZSBjaGVja2VkIGNhc2UtaW5zZW5zaXRpdmVseS4iIiIKKyAgICAgICAgICAgIHJldHVybiBiJ1BZVEhPTkNBU0VPSycgaW4gX29zLmVudmlyb24KICAgICBlbHNlOgotICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgX3JlbGF4X2Nhc2UoKToKKyAgICAgICAgICAgICIiIlRydWUgaWYgZmlsZW5hbWVzIG11c3QgYmUgY2hlY2tlZCBjYXNlLWluc2Vuc2l0aXZlbHkuIiIiCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX3JlbGF4X2Nhc2UKKworCisjIFRPRE86IEV4cG9zZSBmcm9tIG1hcnNoYWwKK2RlZiBfd19sb25nKHgpOgorICAgICIiIkNvbnZlcnQgYSAzMi1iaXQgaW50ZWdlciB0byBsaXR0bGUtZW5kaWFuLgorCisgICAgWFhYIFRlbXBvcmFyeSB1bnRpbCBtYXJzaGFsJ3MgbG9uZyBmdW5jdGlvbnMgYXJlIGV4cG9zZWQuCisKKyAgICAiIiIKKyAgICB4ID0gaW50KHgpCisgICAgaW50X2J5dGVzID0gW10KKyAgICBpbnRfYnl0ZXMuYXBwZW5kKHggJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gOCkgJiAweEZGKQorICAgIGludF9ieXRlcy5hcHBlbmQoKHggPj4gMTYpICYgMHhGRikKKyAgICBpbnRfYnl0ZXMuYXBwZW5kKCh4ID4+IDI0KSAmIDB4RkYpCisgICAgcmV0dXJuIGJ5dGVhcnJheShpbnRfYnl0ZXMpCisKKworIyBUT0RPOiBFeHBvc2UgZnJvbSBtYXJzaGFsCitkZWYgX3JfbG9uZyhpbnRfYnl0ZXMpOgorICAgICIiIkNvbnZlcnQgNCBieXRlcyBpbiBsaXR0bGUtZW5kaWFuIHRvIGFuIGludGVnZXIuCisKKyAgICBYWFggVGVtcG9yYXJ5IHVudGlsIG1hcnNoYWwncyBsb25nIGZ1bmN0aW9uIGFyZSBleHBvc2VkLgorCisgICAgIiIiCisgICAgeCA9IGludF9ieXRlc1swXQorICAgIHggfD0gaW50X2J5dGVzWzFdIDw8IDgKKyAgICB4IHw9IGludF9ieXRlc1syXSA8PCAxNgorICAgIHggfD0gaW50X2J5dGVzWzNdIDw8IDI0CisgICAgcmV0dXJuIHgKKworCitkZWYgX3BhdGhfam9pbigqcGF0aF9wYXJ0cyk6CisgICAgIiIiUmVwbGFjZW1lbnQgZm9yIG9zLnBhdGguam9pbigpLiIiIgorICAgIG5ld19wYXJ0cyA9IFtdCisgICAgZm9yIHBhcnQgaW4gcGF0aF9wYXJ0czoKKyAgICAgICAgaWYgbm90IHBhcnQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBuZXdfcGFydHMuYXBwZW5kKHBhcnQpCisgICAgICAgIGlmIHBhcnRbLTFdIG5vdCBpbiBwYXRoX3NlcGFyYXRvcnM6CisgICAgICAgICAgICBuZXdfcGFydHMuYXBwZW5kKHBhdGhfc2VwKQorICAgIHJldHVybiAnJy5qb2luKG5ld19wYXJ0c1s6LTFdKSAgIyBEcm9wIHN1cGVyZmx1b3VzIHBhdGggc2VwYXJhdG9yLgorCisKK2RlZiBfcGF0aF9zcGxpdChwYXRoKToKKyAgICAiIiJSZXBsYWNlbWVudCBmb3Igb3MucGF0aC5zcGxpdCgpLiIiIgorICAgIGZvciB4IGluIHJldmVyc2VkKHBhdGgpOgorICAgICAgICBpZiB4IGluIHBhdGhfc2VwYXJhdG9yczoKKyAgICAgICAgICAgIHNlcCA9IHgKKyAgICAgICAgICAgIGJyZWFrCisgICAgZWxzZToKKyAgICAgICAgc2VwID0gcGF0aF9zZXAKKyAgICBmcm9udCwgXywgdGFpbCA9IHBhdGgucnBhcnRpdGlvbihzZXApCisgICAgcmV0dXJuIGZyb250LCB0YWlsCiAKIAogZGVmIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCBtb2RlKToKQEAgLTU4LDYxICsxMTgsNDAxIEBACiAgICAgcmV0dXJuIF9wYXRoX2lzX21vZGVfdHlwZShwYXRoLCAwbzA0MDAwMCkKIAogCi1kZWYgX3BhdGhfd2l0aG91dF9leHQocGF0aCwgZXh0X3R5cGUpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLnNwbGl0ZXh0KClbMF0uIiIiCi0gICAgZm9yIHN1ZmZpeCBpbiBfc3VmZml4X2xpc3QoZXh0X3R5cGUpOgotICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKHN1ZmZpeCk6Ci0gICAgICAgICAgICByZXR1cm4gcGF0aFs6LWxlbihzdWZmaXgpXQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInBhdGggaXMgbm90IG9mIHRoZSBzcGVjaWZpZWQgdHlwZSIpCi0KLQotZGVmIF9wYXRoX2Fic29sdXRlKHBhdGgpOgotICAgICIiIlJlcGxhY2VtZW50IGZvciBvcy5wYXRoLmFic3BhdGguIiIiCi0gICAgaWYgbm90IHBhdGg6Ci0gICAgICAgIHBhdGggPSBfb3MuZ2V0Y3dkKCkKK2RlZiBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIG1vZGU9MG82NjYpOgorICAgICIiIkJlc3QtZWZmb3J0IGZ1bmN0aW9uIHRvIHdyaXRlIGRhdGEgdG8gYSBwYXRoIGF0b21pY2FsbHkuCisgICAgQmUgcHJlcGFyZWQgdG8gaGFuZGxlIGEgRmlsZUV4aXN0c0Vycm9yIGlmIGNvbmN1cnJlbnQgd3JpdGluZyBvZiB0aGUKKyAgICB0ZW1wb3JhcnkgZmlsZSBpcyBhdHRlbXB0ZWQuIiIiCisgICAgIyBpZCgpIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBwc2V1ZG8tcmFuZG9tIGZpbGVuYW1lLgorICAgIHBhdGhfdG1wID0gJ3t9Lnt9Jy5mb3JtYXQocGF0aCwgaWQocGF0aCkpCisgICAgZmQgPSBfb3Mub3BlbihwYXRoX3RtcCwKKyAgICAgICAgICAgICAgICAgIF9vcy5PX0VYQ0wgfCBfb3MuT19DUkVBVCB8IF9vcy5PX1dST05MWSwgbW9kZSAmIDBvNjY2KQogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9vcy5fZ2V0ZnVsbHBhdGhuYW1lKHBhdGgpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoJy8nKToKLSAgICAgICAgICAgIHJldHVybiBwYXRoCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3BhdGhfam9pbihfb3MuZ2V0Y3dkKCksIHBhdGgpCisgICAgICAgICMgV2UgZmlyc3Qgd3JpdGUgZGF0YSB0byBhIHRlbXBvcmFyeSBmaWxlLCBhbmQgdGhlbiB1c2Ugb3MucmVwbGFjZSgpIHRvCisgICAgICAgICMgcGVyZm9ybSBhbiBhdG9taWMgcmVuYW1lLgorICAgICAgICB3aXRoIF9pby5GaWxlSU8oZmQsICd3YicpIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGRhdGEpCisgICAgICAgIF9vcy5yZXBsYWNlKHBhdGhfdG1wLCBwYXRoKQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfb3MudW5saW5rKHBhdGhfdG1wKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmFpc2UKIAogCiBkZWYgX3dyYXAobmV3LCBvbGQpOgotICAgICIiIlNpbXBsZSBzdWJzdGl0dXRlIGZvciBmdW5jdG9vbHMud3JhcHMuIiIiCi0gICAgZm9yIHJlcGxhY2UgaW4gWydfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fZG9jX18nXToKLSAgICAgICAgc2V0YXR0cihuZXcsIHJlcGxhY2UsIGdldGF0dHIob2xkLCByZXBsYWNlKSkKKyAgICAiIiJTaW1wbGUgc3Vic3RpdHV0ZSBmb3IgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiIiIgorICAgIGZvciByZXBsYWNlIGluIFsnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3F1YWxuYW1lX18nLCAnX19kb2NfXyddOgorICAgICAgICBpZiBoYXNhdHRyKG9sZCwgcmVwbGFjZSk6CisgICAgICAgICAgICBzZXRhdHRyKG5ldywgcmVwbGFjZSwgZ2V0YXR0cihvbGQsIHJlcGxhY2UpKQogICAgIG5ldy5fX2RpY3RfXy51cGRhdGUob2xkLl9fZGljdF9fKQogCiAKLWNvZGVfdHlwZSA9IHR5cGUoX3dyYXAuX19jb2RlX18pCitfY29kZV90eXBlID0gdHlwZShfd3JhcC5fX2NvZGVfXykKIAotIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgbmV3X21vZHVsZShuYW1lKToKKyAgICAiIiJDcmVhdGUgYSBuZXcgbW9kdWxlLgorCisgICAgVGhlIG1vZHVsZSBpcyBub3QgZW50ZXJlZCBpbnRvIHN5cy5tb2R1bGVzLgorCisgICAgIiIiCisgICAgcmV0dXJuIHR5cGUoX2lvKShuYW1lKQorCisKKyMgTW9kdWxlLWxldmVsIGxvY2tpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBBIGRpY3QgbWFwcGluZyBtb2R1bGUgbmFtZXMgdG8gd2Vha3JlZnMgb2YgX01vZHVsZUxvY2sgaW5zdGFuY2VzCitfbW9kdWxlX2xvY2tzID0ge30KKyMgQSBkaWN0IG1hcHBpbmcgdGhyZWFkIGlkcyB0byBfTW9kdWxlTG9jayBpbnN0YW5jZXMKK19ibG9ja2luZ19vbiA9IHt9CisKKworY2xhc3MgX0RlYWRsb2NrRXJyb3IoUnVudGltZUVycm9yKToKKyAgICBwYXNzCisKKworY2xhc3MgX01vZHVsZUxvY2s6CisgICAgIiIiQSByZWN1cnNpdmUgbG9jayBpbXBsZW1lbnRhdGlvbiB3aGljaCBpcyBhYmxlIHRvIGRldGVjdCBkZWFkbG9ja3MKKyAgICAoZS5nLiB0aHJlYWQgMSB0cnlpbmcgdG8gdGFrZSBsb2NrcyBBIHRoZW4gQiwgYW5kIHRocmVhZCAyIHRyeWluZyB0bworICAgIHRha2UgbG9ja3MgQiB0aGVuIEEpLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLmxvY2sgPSBfdGhyZWFkLmFsbG9jYXRlX2xvY2soKQorICAgICAgICBzZWxmLndha2V1cCA9IF90aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5vd25lciA9IE5vbmUKKyAgICAgICAgc2VsZi5jb3VudCA9IDAKKyAgICAgICAgc2VsZi53YWl0ZXJzID0gMAorCisgICAgZGVmIGhhc19kZWFkbG9jayhzZWxmKToKKyAgICAgICAgIyBEZWFkbG9jayBhdm9pZGFuY2UgZm9yIGNvbmN1cnJlbnQgY2lyY3VsYXIgaW1wb3J0cy4KKyAgICAgICAgbWUgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRpZCA9IHNlbGYub3duZXIKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGxvY2sgPSBfYmxvY2tpbmdfb24uZ2V0KHRpZCkKKyAgICAgICAgICAgIGlmIGxvY2sgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHRpZCA9IGxvY2sub3duZXIKKyAgICAgICAgICAgIGlmIHRpZCA9PSBtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGFjcXVpcmUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBBY3F1aXJlIHRoZSBtb2R1bGUgbG9jay4gIElmIGEgcG90ZW50aWFsIGRlYWRsb2NrIGlzIGRldGVjdGVkLAorICAgICAgICBhIF9EZWFkbG9ja0Vycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgbG9jayBpcyBhbHdheXMgYWNxdWlyZWQgYW5kIFRydWUgaXMgcmV0dXJuZWQuCisgICAgICAgICIiIgorICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIF9ibG9ja2luZ19vblt0aWRdID0gc2VsZgorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5sb2NrOgorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvdW50ID09IDAgb3Igc2VsZi5vd25lciA9PSB0aWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm93bmVyID0gdGlkCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuaGFzX2RlYWRsb2NrKCk6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBfRGVhZGxvY2tFcnJvcigiZGVhZGxvY2sgZGV0ZWN0ZWQgYnkgJXIiICUgc2VsZikKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi53YWtldXAuYWNxdWlyZShGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgKz0gMQorICAgICAgICAgICAgICAgICMgV2FpdCBmb3IgYSByZWxlYXNlKCkgY2FsbAorICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLmFjcXVpcmUoKQorICAgICAgICAgICAgICAgIHNlbGYud2FrZXVwLnJlbGVhc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIF9ibG9ja2luZ19vblt0aWRdCisKKyAgICBkZWYgcmVsZWFzZShzZWxmKToKKyAgICAgICAgdGlkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICB3aXRoIHNlbGYubG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYub3duZXIgIT0gdGlkOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCisgICAgICAgICAgICBhc3NlcnQgc2VsZi5jb3VudCA+IDAKKyAgICAgICAgICAgIHNlbGYuY291bnQgLT0gMQorICAgICAgICAgICAgaWYgc2VsZi5jb3VudCA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgc2VsZi53YWl0ZXJzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLndhaXRlcnMgLT0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLndha2V1cC5yZWxlYXNlKCkKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICJfTW9kdWxlTG9jayglcikgYXQgJWQiICUgKHNlbGYubmFtZSwgaWQoc2VsZikpCisKKworY2xhc3MgX0R1bW15TW9kdWxlTG9jazoKKyAgICAiIiJBIHNpbXBsZSBfTW9kdWxlTG9jayBlcXVpdmFsZW50IGZvciBQeXRob24gYnVpbGRzIHdpdGhvdXQKKyAgICBtdWx0aS10aHJlYWRpbmcgc3VwcG9ydC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLmNvdW50ID0gMAorCisgICAgZGVmIGFjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHJlbGVhc2Uoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY291bnQgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCisgICAgICAgIHNlbGYuY291bnQgLT0gMQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIl9EdW1teU1vZHVsZUxvY2soJXIpIGF0ICVkIiAlIChzZWxmLm5hbWUsIGlkKHNlbGYpKQorCisKKyMgVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBmb3IgY29uc3VtcHRpb24gYnkgUHl0aG9uL2ltcG9ydC5jLgorCitkZWYgX2dldF9tb2R1bGVfbG9jayhuYW1lKToKKyAgICAiIiJHZXQgb3IgY3JlYXRlIHRoZSBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KKworICAgIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aXRoIHRoZSBpbXBvcnQgbG9jayB0YWtlbi4iIiIKKyAgICBsb2NrID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgbG9jayA9IF9tb2R1bGVfbG9ja3NbbmFtZV0oKQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGlmIGxvY2sgaXMgTm9uZToKKyAgICAgICAgaWYgX3RocmVhZCBpcyBOb25lOgorICAgICAgICAgICAgbG9jayA9IF9EdW1teU1vZHVsZUxvY2sobmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2sgPSBfTW9kdWxlTG9jayhuYW1lKQorICAgICAgICBkZWYgY2IoXyk6CisgICAgICAgICAgICBkZWwgX21vZHVsZV9sb2Nrc1tuYW1lXQorICAgICAgICBfbW9kdWxlX2xvY2tzW25hbWVdID0gX3dlYWtyZWYucmVmKGxvY2ssIGNiKQorICAgIHJldHVybiBsb2NrCisKK2RlZiBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpOgorICAgICIiIlJlbGVhc2UgdGhlIGdsb2JhbCBpbXBvcnQgbG9jaywgYW5kIGFjcXVpcmVzIHRoZW4gcmVsZWFzZSB0aGUKKyAgICBtb2R1bGUgbG9jayBmb3IgYSBnaXZlbiBtb2R1bGUgbmFtZS4KKyAgICBUaGlzIGlzIHVzZWQgdG8gZW5zdXJlIGEgbW9kdWxlIGlzIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQsIGluIHRoZQorICAgIGV2ZW50IGl0IGlzIGJlaW5nIGltcG9ydGVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCisgICAgU2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdpdGggdGhlIGltcG9ydCBsb2NrIHRha2VuLiIiIgorICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIHRyeToKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICBleGNlcHQgX0RlYWRsb2NrRXJyb3I6CisgICAgICAgICMgQ29uY3VycmVudCBjaXJjdWxhciBpbXBvcnQsIHdlJ2xsIGFjY2VwdCBhIHBhcnRpYWxseSBpbml0aWFsaXplZAorICAgICAgICAjIG1vZHVsZSBvYmplY3QuCisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCisjIEZyYW1lIHN0cmlwcGluZyBtYWdpYyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChmLCAqYXJncywgKiprd2RzKToKKyAgICAiIiJyZW1vdmVfaW1wb3J0bGliX2ZyYW1lcyBpbiBpbXBvcnQuYyB3aWxsIGFsd2F5cyByZW1vdmUgc2VxdWVuY2VzCisgICAgb2YgaW1wb3J0bGliIGZyYW1lcyB0aGF0IGVuZCB3aXRoIGEgY2FsbCB0byB0aGlzIGZ1bmN0aW9uCisKKyAgICBVc2UgaXQgaW5zdGVhZCBvZiBhIG5vcm1hbCBjYWxsIGluIHBsYWNlcyB3aGVyZSBpbmNsdWRpbmcgdGhlIGltcG9ydGxpYgorICAgIGZyYW1lcyBpbnRyb2R1Y2VzIHVud2FudGVkIG5vaXNlIGludG8gdGhlIHRyYWNlYmFjayAoZS5nLiB3aGVuIGV4ZWN1dGluZworICAgIG1vZHVsZSBjb2RlKQorICAgICIiIgorICAgIHJldHVybiBmKCphcmdzLCAqKmt3ZHMpCisKKworIyBGaW5kZXIvbG9hZGVyIHV0aWxpdHkgY29kZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCitJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgorCitUaGUgdmFsdWUgb2YgQ1IgYW5kIExGIGlzIGluY29ycG9yYXRlZCBzbyBpZiB5b3UgZXZlciByZWFkIG9yIHdyaXRlCithIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKK0FwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCisKK1RoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKKy1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KK29kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgorCitUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgorVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQorMTAuCisKK1N0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKK251bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKK3RvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCit0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKK2NhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKK2l0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCit0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKK3dpdGggUHl0aG9uIDMuMmEwLgorCitLbm93biB2YWx1ZXM6CisgUHl0aG9uIDEuNTogICAyMDEyMQorIFB5dGhvbiAxLjUuMTogMjAxMjEKKyAgICBQeXRob24gMS41LjI6IDIwMTIxCisgICAgUHl0aG9uIDEuNjogICA1MDQyOAorICAgIFB5dGhvbiAyLjA6ICAgNTA4MjMKKyAgICBQeXRob24gMi4wLjE6IDUwODIzCisgICAgUHl0aG9uIDIuMTogICA2MDIwMgorICAgIFB5dGhvbiAyLjEuMTogNjAyMDIKKyAgICBQeXRob24gMi4xLjI6IDYwMjAyCisgICAgUHl0aG9uIDIuMjogICA2MDcxNworICAgIFB5dGhvbiAyLjNhMDogNjIwMTEKKyAgICBQeXRob24gMi4zYTA6IDYyMDIxCisgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKKyAgICBQeXRob24gMi40YTA6IDYyMDQxCisgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQorICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKKyAgICBQeXRob24gMi41YTA6IDYyMDcxCisgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKKyAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQorICAgIFB5dGhvbiAyLjVhMDogNjIwOTIgKGNoYW5nZWQgV0lUSF9DTEVBTlVQIG9wY29kZSkKKyAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKKyAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKKyAgICBQeXRob24gMi41YzE6IDYyMTIxIChmaXggd3JvbmcgbG5vdGFiIHdpdGggZm9yIGxvb3BzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQorICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKKyAgICBQeXRob24gMi42YTA6IDYyMTUxIChwZWVwaG9sZSBvcHRpbWl6YXRpb25zIGFuZCBTVE9SRV9NQVAgb3Bjb2RlKQorICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCisgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAorICAgICAgICAgICAgICAgICAgIDMwMTAgKHJlbW92ZWQgVU5BUllfQ09OVkVSVCkKKyAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCisgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgICAgMzA0MCAoYWRkZWQgc2lnbmF0dXJlIGFubm90YXRpb25zKQorICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKKyAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQorICAgICAgICAgICAgICAgICAgIDMwNjEgKHN0cmluZyBsaXRlcmFscyBiZWNvbWUgdW5pY29kZSkKKyAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQorICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCisgICAgICAgICAgICAgICAgICAgMzA5MSAoa2lsbCBzdHI4IGludGVybmluZykKKyAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCisgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQorICAgIFB5dGhvbiAzLjBhNDogMzExMSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikuCisgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCisgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6CisgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREKQorICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6CisgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCisgICAgUHl0aG9uIDMuMmEwOiAzMTYwIChhZGQgU0VUVVBfV0lUSCkKKyAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgorICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQorICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCisgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQorICAgIFB5dGhvbiAzLjNhMCAgMzE5MCBfX2NsYXNzX18gc3VwZXIgY2xvc3VyZSBjaGFuZ2VkCisgICAgUHl0aG9uIDMuM2EwICAzMjAwIChfX3F1YWxuYW1lX18gYWRkZWQpCisgICAgICAgICAgICAgICAgICAgICAzMjEwIChhZGRlZCBzaXplIG1vZHVsbyAyKiozMiB0byB0aGUgcHljIGhlYWRlcikKKyAgICBQeXRob24gMy4zYTEgIDMyMjAgKGNoYW5nZWQgUEVQIDM4MCBpbXBsZW1lbnRhdGlvbikKKyAgICBQeXRob24gMy4zYTQgIDMyMzAgKHJldmVydCBjaGFuZ2VzIHRvIGltcGxpY2l0IF9fY2xhc3NfXyBjbG9zdXJlKQorCitNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCitsb25nZXIgYmUgdW5kZXJzdG9vZCBieSBvbGRlciBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGV2YWwgbG9vcCAodXN1YWxseQorZHVlIHRvIHRoZSBhZGRpdGlvbiBvZiBuZXcgb3Bjb2RlcykuCisKKyIiIgorX1JBV19NQUdJQ19OVU1CRVIgPSAzMjMwIHwgb3JkKCdccicpIDw8IDE2IHwgb3JkKCdcbicpIDw8IDI0CitfTUFHSUNfQllURVMgPSBieXRlcyhfUkFXX01BR0lDX05VTUJFUiA+PiBuICYgMHhmZiBmb3IgbiBpbiByYW5nZSgwLCAyNSwgOCkpCisKK19QWUNBQ0hFID0gJ19fcHljYWNoZV9fJworCitTT1VSQ0VfU1VGRklYRVMgPSBbJy5weSddICAjIF9zZXR1cCgpIGFkZHMgLnB5dyBhcyBuZWVkZWQuCisKK0RFQlVHX0JZVEVDT0RFX1NVRkZJWEVTID0gWycucHljJ10KK09QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUyA9IFsnLnB5byddCisKK2RlZiBjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBkZWJ1Z19vdmVycmlkZT1Ob25lKToKKyAgICAiIiJHaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMvLnB5byBmaWxlLgorCisgICAgVGhlIC5weSBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8gdGhlCisgICAgLnB5Yy8ucHlvIGZpbGUgY2FsY3VsYXRlZCBhcyBpZiB0aGUgLnB5IGZpbGUgd2VyZSBpbXBvcnRlZC4gIFRoZSBleHRlbnNpb24KKyAgICB3aWxsIGJlIC5weWMgdW5sZXNzIHN5cy5mbGFncy5vcHRpbWl6ZSBpcyBub24temVybywgdGhlbiBpdCB3aWxsIGJlIC5weW8uCisKKyAgICBJZiBkZWJ1Z19vdmVycmlkZSBpcyBub3QgTm9uZSwgdGhlbiBpdCBtdXN0IGJlIGEgYm9vbGVhbiBhbmQgaXMgdXNlZCBpbgorICAgIHBsYWNlIG9mIHN5cy5mbGFncy5vcHRpbWl6ZS4KKworICAgIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSB0aGVuIE5vdEltcGxlbWVudGVkRXJyb3IgaXMgcmFpc2VkLgorCisgICAgIiIiCisgICAgZGVidWcgPSBub3Qgc3lzLmZsYWdzLm9wdGltaXplIGlmIGRlYnVnX292ZXJyaWRlIGlzIE5vbmUgZWxzZSBkZWJ1Z19vdmVycmlkZQorICAgIGlmIGRlYnVnOgorICAgICAgICBzdWZmaXhlcyA9IERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTCisgICAgZWxzZToKKyAgICAgICAgc3VmZml4ZXMgPSBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKyAgICBoZWFkLCB0YWlsID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBiYXNlX2ZpbGVuYW1lLCBzZXAsIF8gPSB0YWlsLnBhcnRpdGlvbignLicpCisgICAgdGFnID0gc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZworICAgIGlmIHRhZyBpcyBOb25lOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCdzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUnKQorICAgIGZpbGVuYW1lID0gJycuam9pbihbYmFzZV9maWxlbmFtZSwgc2VwLCB0YWcsIHN1ZmZpeGVzWzBdXSkKKyAgICByZXR1cm4gX3BhdGhfam9pbihoZWFkLCBfUFlDQUNIRSwgZmlsZW5hbWUpCisKKworZGVmIHNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpOgorICAgICIiIkdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLgorCisgICAgVGhlIC5weWMvLnB5byBmaWxlIGRvZXMgbm90IG5lZWQgdG8gZXhpc3Q7IHRoaXMgc2ltcGx5IHJldHVybnMgdGhlIHBhdGggdG8KKyAgICB0aGUgLnB5IGZpbGUgY2FsY3VsYXRlZCB0byBjb3JyZXNwb25kIHRvIHRoZSAucHljLy5weW8gZmlsZS4gIElmIHBhdGggZG9lcworICAgIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4gSWYKKyAgICBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmUgdGhlbiBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4KKworICAgICIiIgorICAgIGlmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBOb25lJykKKyAgICBoZWFkLCBweWNhY2hlX2ZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKKyAgICBoZWFkLCBweWNhY2hlID0gX3BhdGhfc3BsaXQoaGVhZCkKKyAgICBpZiBweWNhY2hlICE9IF9QWUNBQ0hFOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7fSBub3QgYm90dG9tLWxldmVsIGRpcmVjdG9yeSBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3shcn0nLmZvcm1hdChfUFlDQUNIRSwgcGF0aCkpCisgICAgaWYgcHljYWNoZV9maWxlbmFtZS5jb3VudCgnLicpICE9IDI6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2V4cGVjdGVkIG9ubHkgMiBkb3RzIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAneyFyfScuZm9ybWF0KHB5Y2FjaGVfZmlsZW5hbWUpKQorICAgIGJhc2VfZmlsZW5hbWUgPSBweWNhY2hlX2ZpbGVuYW1lLnBhcnRpdGlvbignLicpWzBdCisgICAgcmV0dXJuIF9wYXRoX2pvaW4oaGVhZCwgYmFzZV9maWxlbmFtZSArIFNPVVJDRV9TVUZGSVhFU1swXSkKKworCitkZWYgX2dldF9zb3VyY2VmaWxlKGJ5dGVjb2RlX3BhdGgpOgorICAgICIiIkNvbnZlcnQgYSBieXRlY29kZSBmaWxlIHBhdGggdG8gYSBzb3VyY2UgcGF0aCAoaWYgcG9zc2libGUpLgorCisgICAgVGhpcyBmdW5jdGlvbiBleGlzdHMgcHVyZWx5IGZvciBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBmb3IKKyAgICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhGaWxlbmFtZXMoKSBpbiB0aGUgQyBBUEkuCisKKyAgICAiIiIKKyAgICBpZiBsZW4oYnl0ZWNvZGVfcGF0aCkgPT0gMDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICByZXN0LCBfLCBleHRlbnNpb24gPSBieXRlY29kZV9wYXRoLnJwYXJpdGlvbignLicpCisgICAgaWYgbm90IHJlc3Qgb3IgZXh0ZW5zaW9uLmxvd2VyKClbLTM6LTFdICE9ICcucHknOgorICAgICAgICByZXR1cm4gYnl0ZWNvZGVfcGF0aAorCisgICAgdHJ5OgorICAgICAgICBzb3VyY2VfcGF0aCA9IHNvdXJjZV9mcm9tX2NhY2hlKGJ5dGVjb2RlX3BhdGgpCisgICAgZXhjZXB0IChOb3RJbXBsZW1lbnRlZEVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgc291cmNlX3BhdGggPSBieXRjb2RlX3BhdGhbLTE6XQorCisgICAgcmV0dXJuIHNvdXJjZV9wYXRoIGlmIF9wYXRoX2lzZmlsZShzb3VyY2Vfc3RhdHMpIGVsc2UgYnl0ZWNvZGVfcGF0aAorCisKK2RlZiBfdmVyYm9zZV9tZXNzYWdlKG1lc3NhZ2UsICphcmdzKToKKyAgICAiIiJQcmludCB0aGUgbWVzc2FnZSB0byBzdGRlcnIgaWYgLXYvUFlUSE9OVkVSQk9TRSBpcyB0dXJuZWQgb24uIiIiCisgICAgaWYgc3lzLmZsYWdzLnZlcmJvc2U6CisgICAgICAgIGlmIG5vdCBtZXNzYWdlLnN0YXJ0c3dpdGgoKCcjJywgJ2ltcG9ydCAnKSk6CisgICAgICAgICAgICBtZXNzYWdlID0gJyMgJyArIG1lc3NhZ2UKKyAgICAgICAgcHJpbnQobWVzc2FnZS5mb3JtYXQoKmFyZ3MpLCBmaWxlPXN5cy5zdGRlcnIpCisKIAogZGVmIHNldF9wYWNrYWdlKGZ4bik6CiAgICAgIiIiU2V0IF9fcGFja2FnZV9fIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIiIiCi0gICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgc2V0X3BhY2thZ2Vfd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBtb2R1bGUgPSBmeG4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpIG9yIG1vZHVsZS5fX3BhY2thZ2VfXyBpcyBOb25lOgorICAgICAgICBpZiBnZXRhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJywgTm9uZSkgaXMgTm9uZToKICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKICAgICAgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19wYWNrYWdlX18ucnBhcnRpdGlvbignLicpWzBdCiAgICAgICAgIHJldHVybiBtb2R1bGUKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChzZXRfcGFja2FnZV93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIHNldF9wYWNrYWdlX3dyYXBwZXIKIAogCiBkZWYgc2V0X2xvYWRlcihmeG4pOgogICAgICIiIlNldCBfX2xvYWRlcl9fIG9uIHRoZSByZXR1cm5lZCBtb2R1bGUuIiIiCi0gICAgZGVmIHdyYXBwZXIoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICBkZWYgc2V0X2xvYWRlcl93cmFwcGVyKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIG1vZHVsZSA9IGZ4bihzZWxmLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nKToKICAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gc2VsZgogICAgICAgICByZXR1cm4gbW9kdWxlCi0gICAgX3dyYXAod3JhcHBlciwgZnhuKQotICAgIHJldHVybiB3cmFwcGVyCisgICAgX3dyYXAoc2V0X2xvYWRlcl93cmFwcGVyLCBmeG4pCisgICAgcmV0dXJuIHNldF9sb2FkZXJfd3JhcHBlcgogCiAKIGRlZiBtb2R1bGVfZm9yX2xvYWRlcihmeG4pOgpAQCAtMTIwLDMxICs1MjAsNTQgQEAKIAogICAgIFRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gaXMgcGFzc2VkIHRoZSBtb2R1bGUgdG8gdXNlIGluc3RlYWQgb2YgdGhlIG1vZHVsZQogICAgIG5hbWUuIFRoZSBtb2R1bGUgcGFzc2VkIGluIHRvIHRoZSBmdW5jdGlvbiBpcyBlaXRoZXIgZnJvbSBzeXMubW9kdWxlcyBpZgotICAgIGl0IGFscmVhZHkgZXhpc3RzIG9yIGlzIGEgbmV3IG1vZHVsZSB3aGljaCBoYXMgX19uYW1lX18gc2V0IGFuZCBpcyBpbnNlcnRlZAotICAgIGludG8gc3lzLm1vZHVsZXMuIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBkZWNvcmF0b3IgY3JlYXRlZCB0aGUKLSAgICBtb2R1bGUgaXQgaXMgc3Vic2VxdWVudGx5IHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcy4KKyAgICBpdCBhbHJlYWR5IGV4aXN0cyBvciBpcyBhIG5ldyBtb2R1bGUuIElmIHRoZSBtb2R1bGUgaXMgbmV3LCB0aGVuIF9fbmFtZV9fCisgICAgaXMgc2V0IHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgbWV0aG9kLCBfX2xvYWRlcl9fIGlzIHNldCB0byBzZWxmLCBhbmQKKyAgICBfX3BhY2thZ2VfXyBpcyBzZXQgYWNjb3JkaW5nbHkgKGlmIHNlbGYuaXNfcGFja2FnZSgpIGlzIGRlZmluZWQpIHdpbGwgYmUgc2V0CisgICAgYmVmb3JlIGl0IGlzIHBhc3NlZCB0byB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uIChpZiBzZWxmLmlzX3BhY2thZ2UoKSBkb2VzCisgICAgbm90IHdvcmsgZm9yIHRoZSBtb2R1bGUgaXQgd2lsbCBiZSBzZXQgcG9zdC1sb2FkKS4KKworICAgIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBkZWNvcmF0b3IgY3JlYXRlZCB0aGUgbW9kdWxlIGl0IGlzCisgICAgc3Vic2VxdWVudGx5IHJlbW92ZWQgZnJvbSBzeXMubW9kdWxlcy4KIAogICAgIFRoZSBkZWNvcmF0b3IgYXNzdW1lcyB0aGF0IHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gdGFrZXMgdGhlIG1vZHVsZSBuYW1lIGFzCiAgICAgdGhlIHNlY29uZCBhcmd1bWVudC4KIAogICAgICIiIgotICAgIGRlZiBkZWNvcmF0ZWQoc2VsZiwgZnVsbG5hbWUsICphcmdzLCAqKmt3YXJncyk6CisgICAgZGVmIG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIoc2VsZiwgZnVsbG5hbWUsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzLmdldChmdWxsbmFtZSkKLSAgICAgICAgaXNfcmVsb2FkID0gYm9vbChtb2R1bGUpCisgICAgICAgIGlzX3JlbG9hZCA9IG1vZHVsZSBpcyBub3QgTm9uZQogICAgICAgICBpZiBub3QgaXNfcmVsb2FkOgogICAgICAgICAgICAgIyBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgb3BlbigpIGlzIGNhbGxlZCBhcyB0aGUgJ2lvJyBtb2R1bGUKICAgICAgICAgICAgICMgaW1wbGljaXRseSBpbXBvcnRzICdsb2NhbGUnIGFuZCB3b3VsZCBvdGhlcndpc2UgdHJpZ2dlciBhbgogICAgICAgICAgICAgIyBpbmZpbml0ZSBsb29wLgotICAgICAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICBtb2R1bGUgPSBuZXdfbW9kdWxlKGZ1bGxuYW1lKQorICAgICAgICAgICAgIyBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgcHV0dGluZyB0aGUgbW9kdWxlIGluIHN5cy5tb2R1bGVzCisgICAgICAgICAgICAjIChvdGhlcndpc2UgYW4gb3B0aW1pemF0aW9uIHNob3J0Y3V0IGluIGltcG9ydC5jIGJlY29tZXMgd3JvbmcpCisgICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzZWxmCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXNfcGFja2FnZSA9IHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIGlzX3BhY2thZ2U6CisgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IGZ1bGxuYW1lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtb2R1bGUuX19pbml0aWFsaXppbmdfXyA9IFRydWUKICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBJZiBfX3BhY2thZ2VfXyB3YXMgbm90IHNldCBhYm92ZSwgX19pbXBvcnRfXygpIHdpbGwgZG8gaXQgbGF0ZXIuCiAgICAgICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG1vZHVsZSwgKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIHJhaXNlCi0gICAgX3dyYXAoZGVjb3JhdGVkLCBmeG4pCi0gICAgcmV0dXJuIGRlY29yYXRlZAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbW9kdWxlLl9faW5pdGlhbGl6aW5nX18gPSBGYWxzZQorICAgIF93cmFwKG1vZHVsZV9mb3JfbG9hZGVyX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gbW9kdWxlX2Zvcl9sb2FkZXJfd3JhcHBlcgogCiAKIGRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgpAQCAtMTU1LDM4ICs1NzgsNTEgQEAKICAgICBjb21wYXJlZCBhZ2FpbnN0LiBJZiB0aGUgY29tcGFyaXNvbiBmYWlscyB0aGVuIEltcG9ydEVycm9yIGlzIHJhaXNlZC4KIAogICAgICIiIgotICAgIGRlZiBpbm5lcihzZWxmLCBuYW1lLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBpZiBzZWxmLl9uYW1lICE9IG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigibG9hZGVyIGNhbm5vdCBoYW5kbGUgJXMiICUgbmFtZSkKKyAgICBkZWYgX2NoZWNrX25hbWVfd3JhcHBlcihzZWxmLCBuYW1lPU5vbmUsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLm5hbWUKKyAgICAgICAgZWxpZiBzZWxmLm5hbWUgIT0gbmFtZToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJsb2FkZXIgY2Fubm90IGhhbmRsZSAlcyIgJSBuYW1lLCBuYW1lPW5hbWUpCiAgICAgICAgIHJldHVybiBtZXRob2Qoc2VsZiwgbmFtZSwgKmFyZ3MsICoqa3dhcmdzKQotICAgIF93cmFwKGlubmVyLCBtZXRob2QpCi0gICAgcmV0dXJuIGlubmVyCisgICAgX3dyYXAoX2NoZWNrX25hbWVfd3JhcHBlciwgbWV0aG9kKQorICAgIHJldHVybiBfY2hlY2tfbmFtZV93cmFwcGVyCiAKIAogZGVmIF9yZXF1aXJlc19idWlsdGluKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGJ1aWx0LWluLiIiIgotICAgIGRlZiB3cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICBkZWYgX3JlcXVpcmVzX2J1aWx0aW5fd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgIGlmIGZ1bGxuYW1lIG5vdCBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiezB9IGlzIG5vdCBhIGJ1aWx0LWluIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7fSBpcyBub3QgYSBidWlsdC1pbiBtb2R1bGUiLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKQogICAgICAgICByZXR1cm4gZnhuKHNlbGYsIGZ1bGxuYW1lKQotICAgIF93cmFwKHdyYXBwZXIsIGZ4bikKLSAgICByZXR1cm4gd3JhcHBlcgorICAgIF93cmFwKF9yZXF1aXJlc19idWlsdGluX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gX3JlcXVpcmVzX2J1aWx0aW5fd3JhcHBlcgogCiAKIGRlZiBfcmVxdWlyZXNfZnJvemVuKGZ4bik6CiAgICAgIiIiRGVjb3JhdG9yIHRvIHZlcmlmeSB0aGUgbmFtZWQgbW9kdWxlIGlzIGZyb3plbi4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGlmIG5vdCBpbXAuaXNfZnJvemVuKGZ1bGxuYW1lKToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7MH0gaXMgbm90IGEgZnJvemVuIG1vZHVsZSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICBkZWYgX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgaWYgbm90IF9pbXAuaXNfZnJvemVuKGZ1bGxuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJ7fSBpcyBub3QgYSBmcm96ZW4gbW9kdWxlIi5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgcmV0dXJuIGZ4bihzZWxmLCBmdWxsbmFtZSkKLSAgICBfd3JhcCh3cmFwcGVyLCBmeG4pCi0gICAgcmV0dXJuIHdyYXBwZXIKKyAgICBfd3JhcChfcmVxdWlyZXNfZnJvemVuX3dyYXBwZXIsIGZ4bikKKyAgICByZXR1cm4gX3JlcXVpcmVzX2Zyb3plbl93cmFwcGVyCiAKIAotZGVmIF9zdWZmaXhfbGlzdChzdWZmaXhfdHlwZSk6Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIGJhc2VkIG9uIHRoZSBpbXAgZmlsZSB0eXBlLiIiIgotICAgIHJldHVybiBbc3VmZml4WzBdIGZvciBzdWZmaXggaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICBpZiBzdWZmaXhbMl0gPT0gc3VmZml4X3R5cGVdCitkZWYgX2ZpbmRfbW9kdWxlX3NoaW0oc2VsZiwgZnVsbG5hbWUpOgorICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZSBieSBkZWxlZ2F0aW5nIHRvCisgICAgc2VsZi5maW5kX2xvYWRlcigpLiIiIgorICAgICMgQ2FsbCBmaW5kX2xvYWRlcigpLiBJZiBpdCByZXR1cm5zIGEgc3RyaW5nIChpbmRpY2F0aW5nIHRoaXMKKyAgICAjIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UgcG9ydGlvbiksIGdlbmVyYXRlIGEgd2FybmluZyBhbmQKKyAgICAjIHJldHVybiBOb25lLgorICAgIGxvYWRlciwgcG9ydGlvbnMgPSBzZWxmLmZpbmRfbG9hZGVyKGZ1bGxuYW1lKQorICAgIGlmIGxvYWRlciBpcyBOb25lIGFuZCBsZW4ocG9ydGlvbnMpOgorICAgICAgICBtc2cgPSAiTm90IGltcG9ydGluZyBkaXJlY3Rvcnkge306IG1pc3NpbmcgX19pbml0X18iCisgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQocG9ydGlvbnNbMF0pLCBJbXBvcnRXYXJuaW5nKQorICAgIHJldHVybiBsb2FkZXIKKworCiAKIAogIyBMb2FkZXJzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMjAxLDYgKzYzNywxMCBAQAogICAgICIiIgogCiAgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKGJ1aWx0LWluKT4iLmZvcm1hdChtb2R1bGUuX19uYW1lX18pCisKKyAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZmluZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKICAgICAgICAgIiIiRmluZCB0aGUgYnVpbHQtaW4gbW9kdWxlLgogCkBAIC0yMDksNyArNjQ5LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gY2xzIGlmIGltcC5pc19idWlsdGluKGZ1bGxuYW1lKSBlbHNlIE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyBpZiBfaW1wLmlzX2J1aWx0aW4oZnVsbG5hbWUpIGVsc2UgTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQHNldF9wYWNrYWdlCkBAIC0yMTksNyArNjU5LDcgQEAKICAgICAgICAgIiIiTG9hZCBhIGJ1aWx0LWluIG1vZHVsZS4iIiIKICAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGltcC5pbml0X2J1aWx0aW4oZnVsbG5hbWUpCisgICAgICAgICAgICByZXR1cm4gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmluaXRfYnVpbHRpbiwgZnVsbG5hbWUpCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KQEAgLTI0MCw3ICs2ODAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfYnVpbHRpbgogICAgIGRlZiBpc19wYWNrYWdlKGNscywgZnVsbG5hbWUpOgotICAgICAgICAiIiJSZXR1cm4gTm9uZSBhcyBidWlsdC1pbiBtb2R1bGUgYXJlIG5ldmVyIHBhY2thZ2VzLiIiIgorICAgICAgICAiIiJSZXR1cm4gRmFsc2UgYXMgYnVpbHQtaW4gbW9kdWxlcyBhcmUgbmV2ZXIgcGFja2FnZXMuIiIiCiAgICAgICAgIHJldHVybiBGYWxzZQogCiAKQEAgLTI1NCw5ICs2OTQsMTMgQEAKICAgICAiIiIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG0pOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAoZnJvemVuKT4iLmZvcm1hdChtLl9fbmFtZV9fKQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CiAgICAgICAgICIiIkZpbmQgYSBmcm96ZW4gbW9kdWxlLiIiIgotICAgICAgICByZXR1cm4gY2xzIGlmIGltcC5pc19mcm96ZW4oZnVsbG5hbWUpIGVsc2UgTm9uZQorICAgICAgICByZXR1cm4gY2xzIGlmIF9pbXAuaXNfZnJvemVuKGZ1bGxuYW1lKSBlbHNlIE5vbmUKIAogICAgIEBjbGFzc21ldGhvZAogICAgIEBzZXRfcGFja2FnZQpAQCAtMjY2LDcgKzcxMCwxMCBAQAogICAgICAgICAiIiJMb2FkIGEgZnJvemVuIG1vZHVsZS4iIiIKICAgICAgICAgaXNfcmVsb2FkID0gZnVsbG5hbWUgaW4gc3lzLm1vZHVsZXMKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGltcC5pbml0X2Zyb3plbihmdWxsbmFtZSkKKyAgICAgICAgICAgIG0gPSBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKF9pbXAuaW5pdF9mcm96ZW4sIGZ1bGxuYW1lKQorICAgICAgICAgICAgIyBMZXQgb3VyIG93biBtb2R1bGVfcmVwcigpIG1ldGhvZCBwcm9kdWNlIGEgc3VpdGFibGUgcmVwci4KKyAgICAgICAgICAgIGRlbCBtLl9fZmlsZV9fCisgICAgICAgICAgICByZXR1cm4gbQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBpZiBub3QgaXNfcmVsb2FkIGFuZCBmdWxsbmFtZSBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbZnVsbG5hbWVdCkBAIC0yNzYsNyArNzIzLDcgQEAKICAgICBAX3JlcXVpcmVzX2Zyb3plbgogICAgIGRlZiBnZXRfY29kZShjbHMsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjb2RlIG9iamVjdCBmb3IgdGhlIGZyb3plbiBtb2R1bGUuIiIiCi0gICAgICAgIHJldHVybiBpbXAuZ2V0X2Zyb3plbl9vYmplY3QoZnVsbG5hbWUpCisgICAgICAgIHJldHVybiBfaW1wLmdldF9mcm96ZW5fb2JqZWN0KGZ1bGxuYW1lKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgQF9yZXF1aXJlc19mcm96ZW4KQEAgLTI4Nyw0MCArNzM0LDExNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIEBfcmVxdWlyZXNfZnJvemVuCiAgICAgZGVmIGlzX3BhY2thZ2UoY2xzLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBpZiB0aGUgZnJvemVuIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCi0gICAgICAgIHJldHVybiBpbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCisgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmcm96ZW4gbW9kdWxlIGlzIGEgcGFja2FnZS4iIiIKKyAgICAgICAgcmV0dXJuIF9pbXAuaXNfZnJvemVuX3BhY2thZ2UoZnVsbG5hbWUpCisKKworY2xhc3MgV2luZG93c1JlZ2lzdHJ5RmluZGVyOgorCisgICAgIiIiTWV0YSBwYXRoIGZpbmRlciBmb3IgbW9kdWxlcyBkZWNsYXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4KKyAgICAiIiIKKworICAgIFJFR0lTVFJZX0tFWSA9ICgKKyAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0iCisgICAgICAgICJcXE1vZHVsZXNcXHtmdWxsbmFtZX0iKQorICAgIFJFR0lTVFJZX0tFWV9ERUJVRyA9ICgKKyAgICAgICAgIlNvZnR3YXJlXFxQeXRob25cXFB5dGhvbkNvcmVcXHtzeXNfdmVyc2lvbn0iCisgICAgICAgICJcXE1vZHVsZXNcXHtmdWxsbmFtZX1cXERlYnVnIikKKyAgICBERUJVR19CVUlMRCA9IEZhbHNlICAjIENoYW5nZWQgaW4gX3NldHVwKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfb3Blbl9yZWdpc3RyeShjbHMsIGtleSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NVUlJFTlRfVVNFUiwga2V5KQorICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIF93aW5yZWcuT3BlbktleShfd2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwga2V5KQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zZWFyY2hfcmVnaXN0cnkoY2xzLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIGNscy5ERUJVR19CVUlMRDoKKyAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVlfREVCVUcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVkKKyAgICAgICAga2V5ID0gcmVnaXN0cnlfa2V5LmZvcm1hdChmdWxsbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggY2xzLl9vcGVuX3JlZ2lzdHJ5KGtleSkgYXMgaGtleToKKyAgICAgICAgICAgICAgICBmaWxlcGF0aCA9IF93aW5yZWcuUXVlcnlWYWx1ZShoa2V5LCAiIikKKyAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlcGF0aAorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKGNscywgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICIiIkZpbmQgbW9kdWxlIG5hbWVkIGluIHRoZSByZWdpc3RyeS4iIiIKKyAgICAgICAgZmlsZXBhdGggPSBjbHMuX3NlYXJjaF9yZWdpc3RyeShmdWxsbmFtZSkKKyAgICAgICAgaWYgZmlsZXBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcy5zdGF0KGZpbGVwYXRoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzLCBfIGluIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICAgICAgICAgaWYgZmlsZXBhdGguZW5kc3dpdGgodHVwbGUoc3VmZml4ZXMpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmaWxlcGF0aCkKIAogCiBjbGFzcyBfTG9hZGVyQmFzaWNzOgogCiAgICAgIiIiQmFzZSBjbGFzcyBvZiBjb21tb24gY29kZSBuZWVkZWQgYnkgYm90aCBTb3VyY2VMb2FkZXIgYW5kCi0gICAgX1NvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgorICAgIFNvdXJjZWxlc3NGaWxlTG9hZGVyLiIiIgogCiAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJDb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBJbnNwZWN0TG9hZGVyLmlzX3BhY2thZ2UgYnkgY2hlY2tpbmcgaWYKICAgICAgICAgdGhlIHBhdGggcmV0dXJuZWQgYnkgZ2V0X2ZpbGVuYW1lIGhhcyBhIGZpbGVuYW1lIG9mICdfX2luaXRfXy5weScuIiIiCi0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpLnJwYXJ0aXRpb24ocGF0aF9zZXApWzJdCi0gICAgICAgIHJldHVybiBmaWxlbmFtZS5yc3BsaXQoJy4nLCAxKVswXSA9PSAnX19pbml0X18nCisgICAgICAgIGZpbGVuYW1lID0gX3BhdGhfc3BsaXQoc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpKVsxXQorICAgICAgICBmaWxlbmFtZV9iYXNlID0gZmlsZW5hbWUucnNwbGl0KCcuJywgMSlbMF0KKyAgICAgICAgdGFpbF9uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbignLicpWzJdCisgICAgICAgIHJldHVybiBmaWxlbmFtZV9iYXNlID09ICdfX2luaXRfXycgYW5kIHRhaWxfbmFtZSAhPSAnX19pbml0X18nCiAKLSAgICBkZWYgX2J5dGVzX2Zyb21fYnl0ZWNvZGUoc2VsZiwgZnVsbG5hbWUsIGRhdGEsIHNvdXJjZV9tdGltZSk6CisgICAgZGVmIF9ieXRlc19mcm9tX2J5dGVjb2RlKHNlbGYsIGZ1bGxuYW1lLCBkYXRhLCBieXRlY29kZV9wYXRoLCBzb3VyY2Vfc3RhdHMpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG1hcnNoYWxsZWQgYnl0ZXMgZnJvbSBieXRlY29kZSwgdmVyaWZ5aW5nIHRoZSBtYWdpYwotICAgICAgICBudW1iZXIgYW5kIHRpbWVzdGFtcCBhbG9uZyB0aGUgd2F5LgorICAgICAgICBudW1iZXIsIHRpbWVzdGFtcCBhbmQgc291cmNlIHNpemUgYWxvbmcgdGhlIHdheS4KIAotICAgICAgICBJZiBzb3VyY2VfbXRpbWUgaXMgTm9uZSB0aGVuIHNraXAgdGhlIHRpbWVzdGFtcCBjaGVjay4KKyAgICAgICAgSWYgc291cmNlX3N0YXRzIGlzIE5vbmUgdGhlbiBza2lwIHRoZSB0aW1lc3RhbXAgY2hlY2suCiAKICAgICAgICAgIiIiCiAgICAgICAgIG1hZ2ljID0gZGF0YVs6NF0KICAgICAgICAgcmF3X3RpbWVzdGFtcCA9IGRhdGFbNDo4XQotICAgICAgICBpZiBsZW4obWFnaWMpICE9IDQgb3IgbWFnaWMgIT0gaW1wLmdldF9tYWdpYygpOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJhZCBtYWdpYyBudW1iZXIgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQorICAgICAgICBpZiBtYWdpYyAhPSBfTUFHSUNfQllURVM6CisgICAgICAgICAgICBtc2cgPSAnYmFkIG1hZ2ljIG51bWJlciBpbiB7IXJ9OiB7IXJ9Jy5mb3JtYXQoZnVsbG5hbWUsIG1hZ2ljKQorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLCBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIGVsaWYgbGVuKHJhd190aW1lc3RhbXApICE9IDQ6Ci0gICAgICAgICAgICByYWlzZSBFT0ZFcnJvcigiYmFkIHRpbWVzdGFtcCBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKLSAgICAgICAgZWxpZiBzb3VyY2VfbXRpbWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBtYXJzaGFsLl9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgotICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJieXRlY29kZSBpcyBzdGFsZSBmb3Ige30iLmZvcm1hdChmdWxsbmFtZSkpCisgICAgICAgICAgICBtZXNzYWdlID0gJ2JhZCB0aW1lc3RhbXAgaW4ge30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCisgICAgICAgIGVsaWYgbGVuKHJhd19zaXplKSAhPSA0OgorICAgICAgICAgICAgbWVzc2FnZSA9ICdiYWQgc2l6ZSBpbiB7fScuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IobWVzc2FnZSkKKyAgICAgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSA9IGludChzb3VyY2Vfc3RhdHNbJ210aW1lJ10pCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBfcl9sb25nKHJhd190aW1lc3RhbXApICE9IHNvdXJjZV9tdGltZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdieXRlY29kZSBpcyBzdGFsZSBmb3Ige30nLmZvcm1hdChmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPWZ1bGxuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPWJ5dGVjb2RlX3BhdGgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc291cmNlX3NpemUgPSBzb3VyY2Vfc3RhdHNbJ3NpemUnXSAmIDB4RkZGRkZGRkYKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3NpemUpICE9IHNvdXJjZV9zaXplOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJieXRlY29kZSBpcyBzdGFsZSBmb3Ige30iLmZvcm1hdChmdWxsbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICMgQ2FuJ3QgcmV0dXJuIHRoZSBjb2RlIG9iamVjdCBhcyBlcnJvcnMgZnJvbSBtYXJzaGFsIGxvYWRpbmcgbmVlZCB0bwogICAgICAgICAjIHByb3BhZ2F0ZSBldmVuIHdoZW4gc291cmNlIGlzIGF2YWlsYWJsZS4KLSAgICAgICAgcmV0dXJuIGRhdGFbODpdCisgICAgICAgIHJldHVybiBkYXRhWzEyOl0KIAogICAgIEBtb2R1bGVfZm9yX2xvYWRlcgogICAgIGRlZiBfbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlLCAqLCBzb3VyY2VsZXNzPUZhbHNlKToKQEAgLTMzMCwxNiArODU0LDE5IEBACiAgICAgICAgIGNvZGVfb2JqZWN0ID0gc2VsZi5nZXRfY29kZShuYW1lKQogICAgICAgICBtb2R1bGUuX19maWxlX18gPSBzZWxmLmdldF9maWxlbmFtZShuYW1lKQogICAgICAgICBpZiBub3Qgc291cmNlbGVzczoKLSAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IGNhY2hlX2Zyb21fc291cmNlKG1vZHVsZS5fX2ZpbGVfXykKKyAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgICAgIG1vZHVsZS5fX2NhY2hlZF9fID0gbW9kdWxlLl9fZmlsZV9fCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtb2R1bGUuX19jYWNoZWRfXyA9IG1vZHVsZS5fX2ZpbGVfXwogICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBuYW1lCiAgICAgICAgIGlmIHNlbGYuaXNfcGFja2FnZShuYW1lKToKLSAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFttb2R1bGUuX19maWxlX18ucnNwbGl0KHBhdGhfc2VwLCAxKVswXV0KKyAgICAgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IFtfcGF0aF9zcGxpdChtb2R1bGUuX19maWxlX18pWzBdXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQogICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IHNlbGYKLSAgICAgICAgZXhlYyhjb2RlX29iamVjdCwgbW9kdWxlLl9fZGljdF9fKQorICAgICAgICBfY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGV4ZWMsIGNvZGVfb2JqZWN0LCBtb2R1bGUuX19kaWN0X18pCiAgICAgICAgIHJldHVybiBtb2R1bGUKIAogCkBAIC0zNDgsMTIgKzg3NSwzMSBAQAogICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgogICAgICAgICAiIiJPcHRpb25hbCBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBtb2RpZmljYXRpb24gdGltZSAoYW4gaW50KSBmb3IgdGhlCiAgICAgICAgIHNwZWNpZmllZCBwYXRoLCB3aGVyZSBwYXRoIGlzIGEgc3RyLgotCi0gICAgICAgIEltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBhbGxvd3MgdGhlIGxvYWRlciB0byByZWFkIGJ5dGVjb2RlIGZpbGVzLgotCiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiT3B0aW9uYWwgbWV0aG9kIHJldHVybmluZyBhIG1ldGFkYXRhIGRpY3QgZm9yIHRoZSBzcGVjaWZpZWQgcGF0aAorICAgICAgICB0byBieSB0aGUgcGF0aCAoc3RyKS4KKyAgICAgICAgUG9zc2libGUga2V5czoKKyAgICAgICAgLSAnbXRpbWUnIChtYW5kYXRvcnkpIGlzIHRoZSBudW1lcmljIHRpbWVzdGFtcCBvZiBsYXN0IHNvdXJjZQorICAgICAgICAgIGNvZGUgbW9kaWZpY2F0aW9uOworICAgICAgICAtICdzaXplJyAob3B0aW9uYWwpIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzb3VyY2UgY29kZS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhpcyBtZXRob2QgYWxsb3dzIHRoZSBsb2FkZXIgdG8gcmVhZCBieXRlY29kZSBmaWxlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB7J210aW1lJzogc2VsZi5wYXRoX210aW1lKHBhdGgpfQorCisgICAgZGVmIF9jYWNoZV9ieXRlY29kZShzZWxmLCBzb3VyY2VfcGF0aCwgY2FjaGVfcGF0aCwgZGF0YSk6CisgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCisKKyAgICAgICAgSW1wbGVtZW50aW5nIHRoaXMgbWV0aG9kIGFsbG93cyBmb3IgdGhlIHdyaXRpbmcgb2YgYnl0ZWNvZGUgZmlsZXMuCisKKyAgICAgICAgVGhlIHNvdXJjZSBwYXRoIGlzIG5lZWRlZCBpbiBvcmRlciB0byBjb3JyZWN0bHkgdHJhbnNmZXIgcGVybWlzc2lvbnMKKyAgICAgICAgIiIiCisgICAgICAgICMgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3ZSBkZWxlZ2F0ZSB0byBzZXRfZGF0YSgpCisgICAgICAgIHJldHVybiBzZWxmLnNldF9kYXRhKGNhY2hlX3BhdGgsIGRhdGEpCisKICAgICBkZWYgc2V0X2RhdGEoc2VsZiwgcGF0aCwgZGF0YSk6CiAgICAgICAgICIiIk9wdGlvbmFsIG1ldGhvZCB3aGljaCB3cml0ZXMgZGF0YSAoYnl0ZXMpIHRvIGEgZmlsZSBwYXRoIChhIHN0cikuCiAKQEAgLTM2OSwyOCArOTE1LDQyIEBACiAgICAgICAgIHBhdGggPSBzZWxmLmdldF9maWxlbmFtZShmdWxsbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJzb3VyY2Ugbm90IGF2YWlsYWJsZSB0aHJvdWdoIGdldF9kYXRhKCkiKQotICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lKQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigic291cmNlIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBnZXRfZGF0YSgpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUpIGZyb20gZXhjCisgICAgICAgIHJlYWRzb3VyY2UgPSBfaW8uQnl0ZXNJTyhzb3VyY2VfYnl0ZXMpLnJlYWRsaW5lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGVuY29kaW5nID0gdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKHJlYWRzb3VyY2UpCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiRmFpbGVkIHRvIGRldGVjdCBlbmNvZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lKSBmcm9tIGV4YwogICAgICAgICBuZXdsaW5lX2RlY29kZXIgPSBfaW8uSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlcihOb25lLCBUcnVlKQotICAgICAgICByZXR1cm4gbmV3bGluZV9kZWNvZGVyLmRlY29kZShzb3VyY2VfYnl0ZXMuZGVjb2RlKGVuY29kaW5nWzBdKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIG5ld2xpbmVfZGVjb2Rlci5kZWNvZGUoc291cmNlX2J5dGVzLmRlY29kZShlbmNvZGluZ1swXSkpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIkZhaWxlZCB0byBkZWNvZGUgc291cmNlIGZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkgZnJvbSBleGMKIAogICAgIGRlZiBnZXRfY29kZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIkNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIEluc3BlY3RMb2FkZXIuZ2V0X2NvZGUuCiAKLSAgICAgICAgUmVhZGluZyBvZiBieXRlY29kZSByZXF1aXJlcyBwYXRoX210aW1lIHRvIGJlIGltcGxlbWVudGVkLiBUbyB3cml0ZQorICAgICAgICBSZWFkaW5nIG9mIGJ5dGVjb2RlIHJlcXVpcmVzIHBhdGhfc3RhdHMgdG8gYmUgaW1wbGVtZW50ZWQuIFRvIHdyaXRlCiAgICAgICAgIGJ5dGVjb2RlLCBzZXRfZGF0YSBtdXN0IGFsc28gYmUgaW1wbGVtZW50ZWQuCiAKICAgICAgICAgIiIiCiAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5nZXRfZmlsZW5hbWUoZnVsbG5hbWUpCi0gICAgICAgIGJ5dGVjb2RlX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2Uoc291cmNlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9tdGltZSA9IE5vbmUKLSAgICAgICAgaWYgYnl0ZWNvZGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGNhY2hlX2Zyb21fc291cmNlKHNvdXJjZV9wYXRoKQorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBOb25lCisgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc291cmNlX210aW1lID0gc2VsZi5wYXRoX210aW1lKHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgIHN0ID0gc2VsZi5wYXRoX3N0YXRzKHNvdXJjZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzb3VyY2VfbXRpbWUgPSBpbnQoc3RbJ210aW1lJ10pCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgpAQCAtMzk4LDI5ICs5NTgsMzcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdCkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgRU9GRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30gbWF0Y2hlcyB7fScsIGJ5dGVjb2RlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgpCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IG1hcnNoYWwubG9hZHMoYnl0ZXNfZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZm91bmQsIGNvZGVfdHlwZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW1wLl9maXhfY29fZmlsZW5hbWUoZm91bmQsIHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb3VuZAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSAiTm9uLWNvZGUgb2JqZWN0IGluIHt9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoYnl0ZWNvZGVfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnLmZvcm1hdChieXRlY29kZV9wYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPWZ1bGxuYW1lLCBwYXRoPWJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIHNvdXJjZV9ieXRlcyA9IHNlbGYuZ2V0X2RhdGEoc291cmNlX3BhdGgpCi0gICAgICAgIGNvZGVfb2JqZWN0ID0gY29tcGlsZShzb3VyY2VfYnl0ZXMsIHNvdXJjZV9wYXRoLCAnZXhlYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfaW5oZXJpdD1UcnVlKQorICAgICAgICBjb2RlX29iamVjdCA9IF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoY29tcGlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2J5dGVzLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkb250X2luaGVyaXQ9VHJ1ZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY29kZSBvYmplY3QgZnJvbSB7fScsIHNvdXJjZV9wYXRoKQogICAgICAgICBpZiAobm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGFuZCBieXRlY29kZV9wYXRoIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgICAgIHNvdXJjZV9tdGltZSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAjIElmIGUuZy4gSnl0aG9uIGV2ZXIgaW1wbGVtZW50cyBpbXAuY2FjaGVfZnJvbV9zb3VyY2UgdG8gaGF2ZQotICAgICAgICAgICAgIyB0aGVpciBvd24gY2FjaGVkIGZpbGUgZm9ybWF0LCB0aGlzIGJsb2NrIG9mIGNvZGUgd2lsbCBtb3N0IGxpa2VseQotICAgICAgICAgICAgIyB0aHJvdyBhbiBleGNlcHRpb24uCi0gICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuX3dfbG9uZyhzb3VyY2VfbXRpbWUpKQorICAgICAgICAgICAgc291cmNlX210aW1lIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgIGRhdGEgPSBieXRlYXJyYXkoX01BR0lDX0JZVEVTKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhzb3VyY2VfbXRpbWUpKQorICAgICAgICAgICAgZGF0YS5leHRlbmQoX3dfbG9uZyhsZW4oc291cmNlX2J5dGVzKSkpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNldF9kYXRhKGJ5dGVjb2RlX3BhdGgsIGRhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVfYnl0ZWNvZGUoc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpCisgICAgICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnd3JvdGUgeyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJldHVybiBjb2RlX29iamVjdApAQCAtNDM2LDcgKzEwMDQsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5fbG9hZF9tb2R1bGUoZnVsbG5hbWUpCiAKIAotY2xhc3MgX0ZpbGVMb2FkZXI6CitjbGFzcyBGaWxlTG9hZGVyOgogCiAgICAgIiIiQmFzZSBmaWxlIGxvYWRlciBjbGFzcyB3aGljaCBpbXBsZW1lbnRzIHRoZSBsb2FkZXIgcHJvdG9jb2wgbWV0aG9kcyB0aGF0CiAgICAgcmVxdWlyZSBmaWxlIHN5c3RlbSB1c2FnZS4iIiIKQEAgLTQ0NCwxMyArMTAxMiwyMCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CiAgICAgICAgICIiIkNhY2hlIHRoZSBtb2R1bGUgbmFtZSBhbmQgdGhlIHBhdGggdG8gdGhlIGZpbGUgZm91bmQgYnkgdGhlCiAgICAgICAgIGZpbmRlci4iIiIKLSAgICAgICAgc2VsZi5fbmFtZSA9IGZ1bGxuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYubmFtZSA9IGZ1bGxuYW1lCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKworICAgIEBfY2hlY2tfbmFtZQorICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIkxvYWQgYSBtb2R1bGUgZnJvbSBhIGZpbGUuIiIiCisgICAgICAgICMgSXNzdWUgIzE0ODU3OiBBdm9pZCB0aGUgemVyby1hcmd1bWVudCBmb3JtIHNvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAgICAjIG9mIHRoYXQgZm9ybSBjYW4gYmUgdXBkYXRlZCB3aXRob3V0IGJyZWFraW5nIHRoZSBmcm96ZW4gbW9kdWxlCisgICAgICAgIHJldHVybiBzdXBlcihGaWxlTG9hZGVyLCBzZWxmKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKIAogICAgIEBfY2hlY2tfbmFtZQogICAgIGRlZiBnZXRfZmlsZW5hbWUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIHNvdXJjZSBmaWxlIGFzIGZvdW5kIGJ5IHRoZSBmaW5kZXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9wYXRoCisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKIAogICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBkYXRhIGZyb20gcGF0aCBhcyByYXcgYnl0ZXMuIiIiCkBAIC00NTgsNTIgKzEwMzMsNTYgQEAKICAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQogCiAKLWNsYXNzIF9Tb3VyY2VGaWxlTG9hZGVyKF9GaWxlTG9hZGVyLCBTb3VyY2VMb2FkZXIpOgorY2xhc3MgU291cmNlRmlsZUxvYWRlcihGaWxlTG9hZGVyLCBTb3VyY2VMb2FkZXIpOgogCiAgICAgIiIiQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgU291cmNlTG9hZGVyIHVzaW5nIHRoZSBmaWxlIHN5c3RlbS4iIiIKIAotICAgIGRlZiBwYXRoX210aW1lKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiB0aW1lIGZvciB0aGUgcGF0aC4iIiIKLSAgICAgICAgcmV0dXJuIGludChfb3Muc3RhdChwYXRoKS5zdF9tdGltZSkKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHBhdGguIiIiCisgICAgICAgIHN0ID0gX29zLnN0YXQocGF0aCkKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzdC5zdF9tdGltZSwgJ3NpemUnOiBzdC5zdF9zaXplfQogCi0gICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgorICAgIGRlZiBfY2FjaGVfYnl0ZWNvZGUoc2VsZiwgc291cmNlX3BhdGgsIGJ5dGVjb2RlX3BhdGgsIGRhdGEpOgorICAgICAgICAjIEFkYXB0IGJldHdlZW4gdGhlIHR3byBBUElzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZGUgPSBfb3Muc3RhdChzb3VyY2VfcGF0aCkuc3RfbW9kZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG1vZGUgPSAwbzY2NgorICAgICAgICAjIFdlIGFsd2F5cyBlbnN1cmUgd3JpdGUgYWNjZXNzIHNvIHdlIGNhbiB1cGRhdGUgY2FjaGVkIGZpbGVzCisgICAgICAgICMgbGF0ZXIgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZXMgYXJlIHJlYWQtb25seSBvbiBXaW5kb3dzICgjNjA3NCkKKyAgICAgICAgbW9kZSB8PSAwbzIwMAorICAgICAgICByZXR1cm4gc2VsZi5zZXRfZGF0YShieXRlY29kZV9wYXRoLCBkYXRhLCBfbW9kZT1tb2RlKQorCisgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEsICosIF9tb2RlPTBvNjY2KToKICAgICAgICAgIiIiV3JpdGUgYnl0ZXMgZGF0YSB0byBhIGZpbGUuIiIiCi0gICAgICAgIHBhcmVudCwgXywgZmlsZW5hbWUgPSBwYXRoLnJwYXJ0aXRpb24ocGF0aF9zZXApCisgICAgICAgIHBhcmVudCwgZmlsZW5hbWUgPSBfcGF0aF9zcGxpdChwYXRoKQogICAgICAgICBwYXRoX3BhcnRzID0gW10KICAgICAgICAgIyBGaWd1cmUgb3V0IHdoYXQgZGlyZWN0b3JpZXMgYXJlIG1pc3NpbmcuCiAgICAgICAgIHdoaWxlIHBhcmVudCBhbmQgbm90IF9wYXRoX2lzZGlyKHBhcmVudCk6Ci0gICAgICAgICAgICBwYXJlbnQsIF8sIHBhcnQgPSBwYXJlbnQucnBhcnRpdGlvbihwYXRoX3NlcCkKKyAgICAgICAgICAgIHBhcmVudCwgcGFydCA9IF9wYXRoX3NwbGl0KHBhcmVudCkKICAgICAgICAgICAgIHBhdGhfcGFydHMuYXBwZW5kKHBhcnQpCiAgICAgICAgICMgQ3JlYXRlIG5lZWRlZCBkaXJlY3Rvcmllcy4KICAgICAgICAgZm9yIHBhcnQgaW4gcmV2ZXJzZWQocGF0aF9wYXJ0cyk6CiAgICAgICAgICAgICBwYXJlbnQgPSBfcGF0aF9qb2luKHBhcmVudCwgcGFydCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBfb3MubWtkaXIocGFyZW50KQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICAjIFByb2JhYmx5IGFub3RoZXIgUHl0aG9uIHByb2Nlc3MgYWxyZWFkeSBjcmVhdGVkIHRoZSBkaXIuCi0gICAgICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZXhjOgotICAgICAgICAgICAgICAgICMgSWYgY2FuJ3QgZ2V0IHByb3BlciBhY2Nlc3MsIHRoZW4ganVzdCBmb3JnZXQgYWJvdXQgd3JpdGluZwotICAgICAgICAgICAgICAgICMgdGhlIGRhdGEuCi0gICAgICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVBQ0NFUzoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBfaW8uRmlsZUlPKHBhdGgsICd3YicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS53cml0ZShkYXRhKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBleGM6Ci0gICAgICAgICAgICAjIERvbid0IHdvcnJ5IGlmIHlvdSBjYW4ndCB3cml0ZSBieXRlY29kZS4KLSAgICAgICAgICAgIGlmIGV4Yy5lcnJubyA9PSBlcnJuby5FQUNDRVM6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIENvdWxkIGJlIGEgcGVybWlzc2lvbiBlcnJvciwgcmVhZC1vbmx5IGZpbGVzeXN0ZW06IGp1c3QgZm9yZ2V0CisgICAgICAgICAgICAgICAgIyBhYm91dCB3cml0aW5nIHRoZSBkYXRhLgorICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhcmVudCwgZXhjKQogICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQorICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKIAogCi1jbGFzcyBfU291cmNlbGVzc0ZpbGVMb2FkZXIoX0ZpbGVMb2FkZXIsIF9Mb2FkZXJCYXNpY3MpOgorY2xhc3MgU291cmNlbGVzc0ZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CiAKICAgICAiIiJMb2FkZXIgd2hpY2ggaGFuZGxlcyBzb3VyY2VsZXNzIGZpbGUgaW1wb3J0cy4iIiIKIApAQCAtNTEzLDE5ICsxMDkyLDI1IEBACiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcGF0aCA9IHNlbGYuZ2V0X2ZpbGVuYW1lKGZ1bGxuYW1lKQogICAgICAgICBkYXRhID0gc2VsZi5nZXRfZGF0YShwYXRoKQotICAgICAgICBieXRlc19kYXRhID0gc2VsZi5fYnl0ZXNfZnJvbV9ieXRlY29kZShmdWxsbmFtZSwgZGF0YSwgTm9uZSkKKyAgICAgICAgYnl0ZXNfZGF0YSA9IHNlbGYuX2J5dGVzX2Zyb21fYnl0ZWNvZGUoZnVsbG5hbWUsIGRhdGEsIHBhdGgsIE5vbmUpCiAgICAgICAgIGZvdW5kID0gbWFyc2hhbC5sb2FkcyhieXRlc19kYXRhKQotICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBjb2RlX3R5cGUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZvdW5kLCBfY29kZV90eXBlKToKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIHBhdGgpCiAgICAgICAgICAgICByZXR1cm4gZm91bmQKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSkKKyAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJOb24tY29kZSBvYmplY3QgaW4ge30iLmZvcm1hdChwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9cGF0aCkKIAogICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgdGhlcmUgaXMgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0V4dGVuc2lvbkZpbGVMb2FkZXI6CisjIEZpbGxlZCBpbiBieSBfc2V0dXAoKS4KK0VYVEVOU0lPTl9TVUZGSVhFUyA9IFtdCisKKworY2xhc3MgRXh0ZW5zaW9uRmlsZUxvYWRlcjoKIAogICAgICIiIkxvYWRlciBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuCiAKQEAgLTUzNCwxNCArMTExOSw4IEBACiAgICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCk6Ci0gICAgICAgICIiIkluaXRpYWxpemUgdGhlIGxvYWRlci4KLQotICAgICAgICBJZiBpc19wa2cgaXMgVHJ1ZSB0aGVuIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgZXh0ZW5zaW9uIG1vZHVsZXMKLSAgICAgICAgY2Fubm90IGJlIHRoZSBfX2luaXRfXyBtb2R1bGUgZm9yIGFuIGV4dGVuc2lvbiBtb2R1bGUuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuX3BhdGggPSBwYXRoCisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAogCiAgICAgQF9jaGVja19uYW1lCiAgICAgQHNldF9wYWNrYWdlCkBAIC01NTAsMjk3ICsxMTI5LDUyNSBAQAogICAgICAgICAiIiJMb2FkIGFuIGV4dGVuc2lvbiBtb2R1bGUuIiIiCiAgICAgICAgIGlzX3JlbG9hZCA9IGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBpbXAubG9hZF9keW5hbWljKGZ1bGxuYW1lLCBzZWxmLl9wYXRoKQorICAgICAgICAgICAgbW9kdWxlID0gX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmxvYWRfZHluYW1pYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2V4dGVuc2lvbiBtb2R1bGUgbG9hZGVkIGZyb20geyFyfScsIHNlbGYucGF0aCkKKyAgICAgICAgICAgIGlmIHNlbGYuaXNfcGFja2FnZShmdWxsbmFtZSkgYW5kIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gW19wYXRoX3NwbGl0KHNlbGYucGF0aClbMF1dCisgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBpc19yZWxvYWQgYW5kIGZ1bGxuYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIHJhaXNlCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBGYWxzZSBhcyBhbiBleHRlbnNpb24gbW9kdWxlIGNhbiBuZXZlciBiZSBhIHBhY2thZ2UuIiIiCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgZXh0ZW5zaW9uIG1vZHVsZSBpcyBhIHBhY2thZ2UuIiIiCisgICAgICAgIGZpbGVfbmFtZSA9IF9wYXRoX3NwbGl0KHNlbGYucGF0aClbMV0KKyAgICAgICAgcmV0dXJuIGFueShmaWxlX25hbWUgPT0gJ19faW5pdF9fJyArIHN1ZmZpeAorICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXggaW4gRVhURU5TSU9OX1NVRkZJWEVTKQogCi0gICAgQF9jaGVja19uYW1lCiAgICAgZGVmIGdldF9jb2RlKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgIiIiUmV0dXJuIE5vbmUgYXMgYW4gZXh0ZW5zaW9uIG1vZHVsZSBjYW5ub3QgY3JlYXRlIGEgY29kZSBvYmplY3QuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBAX2NoZWNrX25hbWUKICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBmdWxsbmFtZSk6CiAgICAgICAgICIiIlJldHVybiBOb25lIGFzIGV4dGVuc2lvbiBtb2R1bGVzIGhhdmUgbm8gc291cmNlIGNvZGUuIiIiCiAgICAgICAgIHJldHVybiBOb25lCiAKIAorY2xhc3MgX05hbWVzcGFjZVBhdGg6CisgICAgIiIiUmVwcmVzZW50cyBhIG5hbWVzcGFjZSBwYWNrYWdlJ3MgcGF0aC4gIEl0IHVzZXMgdGhlIG1vZHVsZSBuYW1lCisgICAgdG8gZmluZCBpdHMgcGFyZW50IG1vZHVsZSwgYW5kIGZyb20gdGhlcmUgaXQgbG9va3MgdXAgdGhlIHBhcmVudCdzCisgICAgX19wYXRoX18uICBXaGVuIHRoaXMgY2hhbmdlcywgdGhlIG1vZHVsZSdzIG93biBwYXRoIGlzIHJlY29tcHV0ZWQsCisgICAgdXNpbmcgcGF0aF9maW5kZXIuICBGb3IgdG9wLWxldmUgbW9kdWxlcywgdGhlIHBhcmVudCBtb2R1bGUncyBwYXRoCisgICAgaXMgc3lzLnBhdGguIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGF0aCwgcGF0aF9maW5kZXIpOgorICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQorICAgICAgICBzZWxmLl9wYXRoID0gcGF0aAorICAgICAgICBzZWxmLl9sYXN0X3BhcmVudF9wYXRoID0gdHVwbGUoc2VsZi5fZ2V0X3BhcmVudF9wYXRoKCkpCisgICAgICAgIHNlbGYuX3BhdGhfZmluZGVyID0gcGF0aF9maW5kZXIKKworICAgIGRlZiBfZmluZF9wYXJlbnRfcGF0aF9uYW1lcyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJucyBhIHR1cGxlIG9mIChwYXJlbnQtbW9kdWxlLW5hbWUsIHBhcmVudC1wYXRoLWF0dHItbmFtZSkiIiIKKyAgICAgICAgcGFyZW50LCBkb3QsIG1lID0gc2VsZi5fbmFtZS5ycGFydGl0aW9uKCcuJykKKyAgICAgICAgaWYgZG90ID09ICcnOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgdG9wLWxldmVsIG1vZHVsZS4gc3lzLnBhdGggY29udGFpbnMgdGhlIHBhcmVudCBwYXRoLgorICAgICAgICAgICAgcmV0dXJuICdzeXMnLCAncGF0aCcKKyAgICAgICAgIyBOb3QgYSB0b3AtbGV2ZWwgbW9kdWxlLiBwYXJlbnQtbW9kdWxlLl9fcGF0aF9fIGNvbnRhaW5zIHRoZQorICAgICAgICAjICBwYXJlbnQgcGF0aC4KKyAgICAgICAgcmV0dXJuIHBhcmVudCwgJ19fcGF0aF9fJworCisgICAgZGVmIF9nZXRfcGFyZW50X3BhdGgoc2VsZik6CisgICAgICAgIHBhcmVudF9tb2R1bGVfbmFtZSwgcGF0aF9hdHRyX25hbWUgPSBzZWxmLl9maW5kX3BhcmVudF9wYXRoX25hbWVzKCkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc3lzLm1vZHVsZXNbcGFyZW50X21vZHVsZV9uYW1lXSwgcGF0aF9hdHRyX25hbWUpCisKKyAgICBkZWYgX3JlY2FsY3VsYXRlKHNlbGYpOgorICAgICAgICAjIElmIHRoZSBwYXJlbnQncyBwYXRoIGhhcyBjaGFuZ2VkLCByZWNhbGN1bGF0ZSBfcGF0aAorICAgICAgICBwYXJlbnRfcGF0aCA9IHR1cGxlKHNlbGYuX2dldF9wYXJlbnRfcGF0aCgpKSAjIE1ha2UgYSBjb3B5CisgICAgICAgIGlmIHBhcmVudF9wYXRoICE9IHNlbGYuX2xhc3RfcGFyZW50X3BhdGg6CisgICAgICAgICAgICBsb2FkZXIsIG5ld19wYXRoID0gc2VsZi5fcGF0aF9maW5kZXIoc2VsZi5fbmFtZSwgcGFyZW50X3BhdGgpCisgICAgICAgICAgICAjIE5vdGUgdGhhdCBubyBjaGFuZ2VzIGFyZSBtYWRlIGlmIGEgbG9hZGVyIGlzIHJldHVybmVkLCBidXQgd2UKKyAgICAgICAgICAgICMgIGRvIHJlbWVtYmVyIHRoZSBuZXcgcGFyZW50IHBhdGgKKyAgICAgICAgICAgIGlmIGxvYWRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3BhdGggPSBuZXdfcGF0aAorICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJlbnRfcGF0aCA9IHBhcmVudF9wYXRoICAgICAjIFNhdmUgdGhlIGNvcHkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BhdGgKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYuX3JlY2FsY3VsYXRlKCkpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAiX05hbWVzcGFjZVBhdGgoeyFyfSkiLmZvcm1hdChzZWxmLl9wYXRoKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKToKKyAgICAgICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi5fcmVjYWxjdWxhdGUoKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBpdGVtKToKKyAgICAgICAgc2VsZi5fcGF0aC5hcHBlbmQoaXRlbSkKKworCitjbGFzcyBOYW1lc3BhY2VMb2FkZXI6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKToKKyAgICAgICAgc2VsZi5fcGF0aCA9IF9OYW1lc3BhY2VQYXRoKG5hbWUsIHBhdGgsIHBhdGhfZmluZGVyKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIG1vZHVsZV9yZXByKGNscywgbW9kdWxlKToKKyAgICAgICAgcmV0dXJuICI8bW9kdWxlICd7fScgKG5hbWVzcGFjZSk+Ii5mb3JtYXQobW9kdWxlLl9fbmFtZV9fKQorCisgICAgQG1vZHVsZV9mb3JfbG9hZGVyCisgICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CisgICAgICAgICIiIkxvYWQgYSBuYW1lc3BhY2UgbW9kdWxlLiIiIgorICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCduYW1lc3BhY2UgbW9kdWxlIGxvYWRlZCB3aXRoIHBhdGggeyFyfScsIHNlbGYuX3BhdGgpCisgICAgICAgIG1vZHVsZS5fX3BhdGhfXyA9IHNlbGYuX3BhdGgKKyAgICAgICAgcmV0dXJuIG1vZHVsZQorCisKICMgRmluZGVycyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgUGF0aEZpbmRlcjoKIAotICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy4ocGF0aHxwYXRoX2hvb2tzfHBhdGhfaW1wb3J0ZXJfY2FjaGUpLiIiIgorICAgICIiIk1ldGEgcGF0aCBmaW5kZXIgZm9yIHN5cy5wYXRoIGFuZCBwYWNrYWdlIF9fcGF0aF9fIGF0dHJpYnV0ZXMuIiIiCiAKICAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgX3BhdGhfaG9va3MoY2xzLCBwYXRoLCBob29rcz1Ob25lKToKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoY2xzKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgaW52YWxpZGF0ZV9jYWNoZXMoKSBtZXRob2Qgb24gYWxsIHBhdGggZW50cnkgZmluZGVycworICAgICAgICBzdG9yZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVzICh3aGVyZSBpbXBsZW1lbnRlZCkuIiIiCisgICAgICAgIGZvciBmaW5kZXIgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUudmFsdWVzKCk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbmRlciwgJ2ludmFsaWRhdGVfY2FjaGVzJyk6CisgICAgICAgICAgICAgICAgZmluZGVyLmludmFsaWRhdGVfY2FjaGVzKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgogICAgICAgICAiIiJTZWFyY2ggc2VxdWVuY2Ugb2YgaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuCiAKICAgICAgICAgSWYgJ2hvb2tzJyBpcyBmYWxzZSB0aGVuIHVzZSBzeXMucGF0aF9ob29rcy4KIAogICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGhvb2tzOgotICAgICAgICAgICAgaG9va3MgPSBzeXMucGF0aF9ob29rcwotICAgICAgICBmb3IgaG9vayBpbiBob29rczoKKyAgICAgICAgaWYgbm90IHN5cy5wYXRoX2hvb2tzOgorICAgICAgICAgICAgX3dhcm5pbmdzLndhcm4oJ3N5cy5wYXRoX2hvb2tzIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKyAgICAgICAgZm9yIGhvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhvb2socGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHBhdGggaG9vayBmb3VuZCBmb3IgezB9Ii5mb3JtYXQocGF0aCkpCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCwgZGVmYXVsdD1Ob25lKToKLSAgICAgICAgIiIiR2V0IHRoZSBmaW5kZXIgZm9yIHRoZSBwYXRoIGZyb20gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisgICAgZGVmIF9wYXRoX2ltcG9ydGVyX2NhY2hlKGNscywgcGF0aCk6CisgICAgICAgICIiIkdldCB0aGUgZmluZGVyIGZvciB0aGUgcGF0aCBlbnRyeSBmcm9tIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLgogCi0gICAgICAgIElmIHRoZSBwYXRoIGlzIG5vdCBpbiB0aGUgY2FjaGUsIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGZpbmRlciBhbmQgY2FjaGUKLSAgICAgICAgaXQuIElmIE5vbmUgaXMgY2FjaGVkLCBnZXQgdGhlIGRlZmF1bHQgZmluZGVyIGFuZCBjYWNoZSB0aGF0Ci0gICAgICAgIChpZiBhcHBsaWNhYmxlKS4KLQotICAgICAgICBCZWNhdXNlIG9mIE51bGxJbXBvcnRlciwgc29tZSBmaW5kZXIgc2hvdWxkIGJlIHJldHVybmVkLiBUaGUgb25seQotICAgICAgICBleHBsaWNpdCBmYWlsIGNhc2UgaXMgaWYgTm9uZSBpcyBjYWNoZWQgYnV0IHRoZSBwYXRoIGNhbm5vdCBiZSB1c2VkIGZvcgotICAgICAgICB0aGUgZGVmYXVsdCBob29rLCBmb3Igd2hpY2ggSW1wb3J0RXJyb3IgaXMgcmFpc2VkLgorICAgICAgICBJZiB0aGUgcGF0aCBlbnRyeSBpcyBub3QgaW4gdGhlIGNhY2hlLCBmaW5kIHRoZSBhcHByb3ByaWF0ZSBmaW5kZXIKKyAgICAgICAgYW5kIGNhY2hlIGl0LiBJZiBubyBmaW5kZXIgaXMgYXZhaWxhYmxlLCBzdG9yZSBOb25lLgogCiAgICAgICAgICIiIgorICAgICAgICBpZiBwYXRoID09ICcnOgorICAgICAgICAgICAgcGF0aCA9ICcuJwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmaW5kZXIgPSBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaG9va3MocGF0aCkKICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdID0gZmluZGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBmaW5kZXIgaXMgTm9uZSBhbmQgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAjIFJhaXNlcyBJbXBvcnRFcnJvciBvbiBmYWlsdXJlLgotICAgICAgICAgICAgICAgIGZpbmRlciA9IGRlZmF1bHQocGF0aCkKLSAgICAgICAgICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSA9IGZpbmRlcgogICAgICAgICByZXR1cm4gZmluZGVyCiAKICAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2dldF9sb2FkZXIoY2xzLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICIiIkZpbmQgdGhlIGxvYWRlciBvciBuYW1lc3BhY2VfcGF0aCBmb3IgdGhpcyBtb2R1bGUvcGFja2FnZSBuYW1lLiIiIgorICAgICAgICAjIElmIHRoaXMgZW5kcyB1cCBiZWluZyBhIG5hbWVzcGFjZSBwYWNrYWdlLCBuYW1lc3BhY2VfcGF0aCBpcworICAgICAgICAjICB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdpbGwgYmVjb21lIGl0cyBfX3BhdGhfXworICAgICAgICBuYW1lc3BhY2VfcGF0aCA9IFtdCisgICAgICAgIGZvciBlbnRyeSBpbiBwYXRoOgorICAgICAgICAgICAgZmluZGVyID0gY2xzLl9wYXRoX2ltcG9ydGVyX2NhY2hlKGVudHJ5KQorICAgICAgICAgICAgaWYgZmluZGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoZmluZGVyLCAnZmluZF9sb2FkZXInKToKKyAgICAgICAgICAgICAgICAgICAgbG9hZGVyLCBwb3J0aW9ucyA9IGZpbmRlci5maW5kX2xvYWRlcihmdWxsbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKyAgICAgICAgICAgICAgICBpZiBsb2FkZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgV2UgZm91bmQgYSBsb2FkZXI6IHJldHVybiBpdCBpbW1lZGlhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvYWRlciwgbmFtZXNwYWNlX3BhdGgKKyAgICAgICAgICAgICAgICAjIFRoaXMgaXMgcG9zc2libHkgcGFydCBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgICMgIFJlbWVtYmVyIHRoZXNlIHBhdGggZW50cmllcyAoaWYgYW55KSBmb3Igd2hlbiB3ZQorICAgICAgICAgICAgICAgICMgIGNyZWF0ZSBhIG5hbWVzcGFjZSBwYWNrYWdlLCBhbmQgY29udGludWUgaXRlcmF0aW5nCisgICAgICAgICAgICAgICAgIyAgb24gcGF0aC4KKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VfcGF0aC5leHRlbmQocG9ydGlvbnMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZSwgbmFtZXNwYWNlX3BhdGgKKworICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBtb2R1bGUgb24gc3lzLnBhdGggb3IgJ3BhdGgnIGJhc2VkIG9uIHN5cy5wYXRoX2hvb2tzIGFuZAogICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS4iIiIKLSAgICAgICAgaWYgbm90IHBhdGg6CisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgICAgIHBhdGggPSBzeXMucGF0aAotICAgICAgICBmb3IgZW50cnkgaW4gcGF0aDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmaW5kZXIgPSBjbHMuX3BhdGhfaW1wb3J0ZXJfY2FjaGUoZW50cnkpCi0gICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGZpbmRlcjoKLSAgICAgICAgICAgICAgICBsb2FkZXIgPSBmaW5kZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbG9hZGVyOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyCisgICAgICAgIGxvYWRlciwgbmFtZXNwYWNlX3BhdGggPSBjbHMuX2dldF9sb2FkZXIoZnVsbG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBsb2FkZXIKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBpZiBuYW1lc3BhY2VfcGF0aDoKKyAgICAgICAgICAgICAgICAjIFdlIGZvdW5kIGF0IGxlYXN0IG9uZSBuYW1lc3BhY2UgcGF0aC4gIFJldHVybiBhCisgICAgICAgICAgICAgICAgIyAgbG9hZGVyIHdoaWNoIGNhbiBjcmVhdGUgdGhlIG5hbWVzcGFjZSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIHJldHVybiBOYW1lc3BhY2VMb2FkZXIoZnVsbG5hbWUsIG5hbWVzcGFjZV9wYXRoLCBjbHMuX2dldF9sb2FkZXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKIAotY2xhc3MgX0ZpbGVGaW5kZXI6CitjbGFzcyBGaWxlRmluZGVyOgogCiAgICAgIiIiRmlsZS1iYXNlZCBmaW5kZXIuCiAKLSAgICBDb25zdHJ1Y3RvciB0YWtlcyBhIGxpc3Qgb2Ygb2JqZWN0cyBkZXRhaWxpbmcgd2hhdCBmaWxlIGV4dGVuc2lvbnMgdGhlaXIKLSAgICBsb2FkZXIgc3VwcG9ydHMgYWxvbmcgd2l0aCB3aGV0aGVyIGl0IGNhbiBiZSB1c2VkIGZvciBhIHBhY2thZ2UuCisgICAgSW50ZXJhY3Rpb25zIHdpdGggdGhlIGZpbGUgc3lzdGVtIGFyZSBjYWNoZWQgZm9yIHBlcmZvcm1hbmNlLCBiZWluZworICAgIHJlZnJlc2hlZCB3aGVuIHRoZSBkaXJlY3RvcnkgdGhlIGZpbmRlciBpcyBoYW5kbGluZyBoYXMgYmVlbiBtb2RpZmllZC4KIAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsICpkZXRhaWxzKToKLSAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIGZpbmRlciBkZXRhaWxzLiIiIgotICAgICAgICBwYWNrYWdlcyA9IFtdCi0gICAgICAgIG1vZHVsZXMgPSBbXQotICAgICAgICBmb3IgZGV0YWlsIGluIGRldGFpbHM6Ci0gICAgICAgICAgICBtb2R1bGVzLmV4dGVuZCgoc3VmZml4LCBkZXRhaWwubG9hZGVyKSBmb3Igc3VmZml4IGluIGRldGFpbC5zdWZmaXhlcykKLSAgICAgICAgICAgIGlmIGRldGFpbC5zdXBwb3J0c19wYWNrYWdlczoKLSAgICAgICAgICAgICAgICBwYWNrYWdlcy5leHRlbmQoKHN1ZmZpeCwgZGV0YWlsLmxvYWRlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBkZXRhaWwuc3VmZml4ZXMpCi0gICAgICAgIHNlbGYucGFja2FnZXMgPSBwYWNrYWdlcwotICAgICAgICBzZWxmLm1vZHVsZXMgPSBtb2R1bGVzCi0gICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgIiIiSW5pdGlhbGl6ZSB3aXRoIHRoZSBwYXRoIHRvIHNlYXJjaCBvbiBhbmQgYSB2YXJpYWJsZSBudW1iZXIgb2YKKyAgICAgICAgMy10dXBsZXMgY29udGFpbmluZyB0aGUgbG9hZGVyLCBmaWxlIHN1ZmZpeGVzIHRoZSBsb2FkZXIgcmVjb2duaXplcywKKyAgICAgICAgYW5kIGEgYm9vbGVhbiBvZiB3aGV0aGVyIHRoZSBsb2FkZXIgaGFuZGxlcyBwYWNrYWdlcy4iIiIKKyAgICAgICAgbG9hZGVycyA9IFtdCisgICAgICAgIGZvciBsb2FkZXIsIHN1ZmZpeGVzIGluIGRldGFpbHM6CisgICAgICAgICAgICBsb2FkZXJzLmV4dGVuZCgoc3VmZml4LCBsb2FkZXIpIGZvciBzdWZmaXggaW4gc3VmZml4ZXMpCisgICAgICAgIHNlbGYuX2xvYWRlcnMgPSBsb2FkZXJzCisgICAgICAgICMgQmFzZSAoZGlyZWN0b3J5KSBwYXRoCisgICAgICAgIHNlbGYucGF0aCA9IHBhdGggb3IgJy4nCisgICAgICAgIHNlbGYuX3BhdGhfbXRpbWUgPSAtMQorICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gc2V0KCkKKyAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KCkKIAotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgICIiIlRyeSB0byBmaW5kIGEgbG9hZGVyIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4iIiIKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkludmFsaWRhdGUgdGhlIGRpcmVjdG9yeSBtdGltZS4iIiIKKyAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IC0xCisKKyAgICBmaW5kX21vZHVsZSA9IF9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIGxvYWRlciBmb3IgdGhlIHNwZWNpZmllZCBtb2R1bGUsIG9yIHRoZSBuYW1lc3BhY2UKKyAgICAgICAgcGFja2FnZSBwb3J0aW9ucy4gUmV0dXJucyAobG9hZGVyLCBsaXN0LW9mLXBvcnRpb25zKS4iIiIKKyAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KLSAgICAgICAgYmFzZV9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKQotICAgICAgICBpZiBfcGF0aF9pc2RpcihiYXNlX3BhdGgpIGFuZCBfY2FzZV9vayhzZWxmLnBhdGgsIHRhaWxfbW9kdWxlKToKLSAgICAgICAgICAgIGZvciBzdWZmaXgsIGxvYWRlciBpbiBzZWxmLnBhY2thZ2VzOgotICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4Ci0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihiYXNlX3BhdGgsIGluaXRfZmlsZW5hbWUpCi0gICAgICAgICAgICAgICAgaWYgKF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgX2Nhc2Vfb2soYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIoZnVsbG5hbWUsIGZ1bGxfcGF0aCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gIk5vdCBpbXBvcnRpbmcgZGlyZWN0b3J5IHt9OiBtaXNzaW5nIF9faW5pdF9fIgotICAgICAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKG1zZy5mb3JtYXQoYmFzZV9wYXRoKSwgSW1wb3J0V2FybmluZykKLSAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYubW9kdWxlczoKLSAgICAgICAgICAgIG1vZF9maWxlbmFtZSA9IHRhaWxfbW9kdWxlICsgc3VmZml4Ci0gICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKQotICAgICAgICAgICAgaWYgX3BhdGhfaXNmaWxlKGZ1bGxfcGF0aCkgYW5kIF9jYXNlX29rKHNlbGYucGF0aCwgbW9kX2ZpbGVuYW1lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpCi0gICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gX29zLnN0YXQoc2VsZi5wYXRoKS5zdF9tdGltZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIG10aW1lID0gLTEKKyAgICAgICAgaWYgbXRpbWUgIT0gc2VsZi5fcGF0aF9tdGltZToKKyAgICAgICAgICAgIHNlbGYuX2ZpbGxfY2FjaGUoKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9tdGltZSA9IG10aW1lCisgICAgICAgICMgdGFpbF9tb2R1bGUga2VlcHMgdGhlIG9yaWdpbmFsIGNhc2luZywgZm9yIF9fZmlsZV9fIGFuZCBmcmllbmRzCisgICAgICAgIGlmIF9yZWxheF9jYXNlKCk6CisgICAgICAgICAgICBjYWNoZSA9IHNlbGYuX3JlbGF4ZWRfcGF0aF9jYWNoZQorICAgICAgICAgICAgY2FjaGVfbW9kdWxlID0gdGFpbF9tb2R1bGUubG93ZXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgICAgICBjYWNoZV9tb2R1bGUgPSB0YWlsX21vZHVsZQorICAgICAgICAjIENoZWNrIGlmIHRoZSBtb2R1bGUgaXMgdGhlIG5hbWUgb2YgYSBkaXJlY3RvcnkgKGFuZCB0aHVzIGEgcGFja2FnZSkuCisgICAgICAgIGlmIGNhY2hlX21vZHVsZSBpbiBjYWNoZToKKyAgICAgICAgICAgIGJhc2VfcGF0aCA9IF9wYXRoX2pvaW4oc2VsZi5wYXRoLCB0YWlsX21vZHVsZSkKKyAgICAgICAgICAgIGlmIF9wYXRoX2lzZGlyKGJhc2VfcGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIGluaXRfZmlsZW5hbWUgPSAnX19pbml0X18nICsgc3VmZml4CisgICAgICAgICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IF9wYXRoX2pvaW4oYmFzZV9wYXRoLCBpbml0X2ZpbGVuYW1lKQorICAgICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAobG9hZGVyKGZ1bGxuYW1lLCBmdWxsX3BhdGgpLCBbYmFzZV9wYXRoXSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIEEgbmFtZXNwYWNlIHBhY2thZ2UsIHJldHVybiB0aGUgcGF0aCBpZiB3ZSBkb24ndCBhbHNvCisgICAgICAgICAgICAgICAgICAgICMgIGZpbmQgYSBtb2R1bGUgaW4gdGhlIG5leHQgc2VjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaXNfbmFtZXNwYWNlID0gVHJ1ZQorICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KKyAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyIGluIHNlbGYuX2xvYWRlcnM6CisgICAgICAgICAgICBpZiBjYWNoZV9tb2R1bGUgKyBzdWZmaXggaW4gY2FjaGU6CisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gX3BhdGhfam9pbihzZWxmLnBhdGgsIHRhaWxfbW9kdWxlICsgc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIF9wYXRoX2lzZmlsZShmdWxsX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGxvYWRlcihmdWxsbmFtZSwgZnVsbF9wYXRoKSwgW10pCisgICAgICAgIGlmIGlzX25hbWVzcGFjZToKKyAgICAgICAgICAgIHJldHVybiAoTm9uZSwgW2Jhc2VfcGF0aF0pCisgICAgICAgIHJldHVybiAoTm9uZSwgW10pCiAKLWNsYXNzIF9Tb3VyY2VGaW5kZXJEZXRhaWxzOgorICAgIGRlZiBfZmlsbF9jYWNoZShzZWxmKToKKyAgICAgICAgIiIiRmlsbCB0aGUgY2FjaGUgb2YgcG90ZW50aWFsIG1vZHVsZXMgYW5kIHBhY2thZ2VzIGZvciB0aGlzIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250ZW50cyA9IF9vcy5saXN0ZGlyKHBhdGgpCisgICAgICAgIGV4Y2VwdCBGaWxlTm90Rm91bmRFcnJvcjoKKyAgICAgICAgICAgICMgRGlyZWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQgc2luY2UgbGFzdCBpbXBvcnQKKyAgICAgICAgICAgIGNvbnRlbnRzID0gW10KKyAgICAgICAgIyBXZSBzdG9yZSB0d28gY2FjaGVkIHZlcnNpb25zLCB0byBoYW5kbGUgcnVudGltZSBjaGFuZ2VzIG9mIHRoZQorICAgICAgICAjIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBzZXQoY29udGVudHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdpbmRvd3MgdXNlcnMgY2FuIGltcG9ydCBtb2R1bGVzIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlCisgICAgICAgICAgICAjIHN1ZmZpeGVzIChmb3IgbGVnYWN5IHJlYXNvbnMpLiBNYWtlIHRoZSBzdWZmaXggbG93ZXJjYXNlIGhlcmUKKyAgICAgICAgICAgICMgc28gaXQncyBkb25lIG9uY2UgaW5zdGVhZCBvZiBmb3IgZXZlcnkgaW1wb3J0LiBUaGlzIGlzIHNhZmUgYXMKKyAgICAgICAgICAgICMgdGhlIHNwZWNpZmllZCBzdWZmaXhlcyB0byBjaGVjayBhZ2FpbnN0IGFyZSBhbHdheXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICMgY2FzZS1zZW5zaXRpdmUgbWFubmVyLgorICAgICAgICAgICAgbG93ZXJfc3VmZml4X2NvbnRlbnRzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGNvbnRlbnRzOgorICAgICAgICAgICAgICAgIG5hbWUsIGRvdCwgc3VmZml4ID0gaXRlbS5wYXJ0aXRpb24oJy4nKQorICAgICAgICAgICAgICAgIGlmIGRvdDoKKyAgICAgICAgICAgICAgICAgICAgbmV3X25hbWUgPSAne30ue30nLmZvcm1hdChuYW1lLCBzdWZmaXgubG93ZXIoKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBuZXdfbmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBsb3dlcl9zdWZmaXhfY29udGVudHMuYWRkKG5ld19uYW1lKQorICAgICAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IGxvd2VyX3N1ZmZpeF9jb250ZW50cworICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aChfQ0FTRV9JTlNFTlNJVElWRV9QTEFURk9STVMpOgorICAgICAgICAgICAgc2VsZi5fcmVsYXhlZF9wYXRoX2NhY2hlID0gc2V0KGZuLmxvd2VyKCkgZm9yIGZuIGluIGNvbnRlbnRzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZUZpbGVMb2FkZXIKLSAgICBzdXBwb3J0c19wYWNrYWdlcyA9IFRydWUKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGF0aF9ob29rKGNscywgKmxvYWRlcl9kZXRhaWxzKToKKyAgICAgICAgIiIiQSBjbGFzcyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNsb3N1cmUgdG8gdXNlIG9uIHN5cy5wYXRoX2hvb2sKKyAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gYW4gaW5zdGFuY2UgdXNpbmcgdGhlIHNwZWNpZmllZCBsb2FkZXJzIGFuZCB0aGUgcGF0aAorICAgICAgICBjYWxsZWQgb24gdGhlIGNsb3N1cmUuCiAKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuc3VmZml4ZXMgPSBfc3VmZml4X2xpc3QoaW1wLlBZX1NPVVJDRSkKKyAgICAgICAgSWYgdGhlIHBhdGggY2FsbGVkIG9uIHRoZSBjbG9zdXJlIGlzIG5vdCBhIGRpcmVjdG9yeSwgSW1wb3J0RXJyb3IgaXMKKyAgICAgICAgcmFpc2VkLgogCi1jbGFzcyBfU291cmNlbGVzc0ZpbmRlckRldGFpbHM6CisgICAgICAgICIiIgorICAgICAgICBkZWYgcGF0aF9ob29rX2Zvcl9GaWxlRmluZGVyKHBhdGgpOgorICAgICAgICAgICAgIiIiUGF0aCBob29rIGZvciBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIuIiIiCisgICAgICAgICAgICBpZiBub3QgX3BhdGhfaXNkaXIocGF0aCk6CisgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm9ubHkgZGlyZWN0b3JpZXMgYXJlIHN1cHBvcnRlZCIsIHBhdGg9cGF0aCkKKyAgICAgICAgICAgIHJldHVybiBjbHMocGF0aCwgKmxvYWRlcl9kZXRhaWxzKQogCi0gICAgbG9hZGVyID0gX1NvdXJjZWxlc3NGaWxlTG9hZGVyCi0gICAgc3VwcG9ydHNfcGFja2FnZXMgPSBUcnVlCisgICAgICAgIHJldHVybiBwYXRoX2hvb2tfZm9yX0ZpbGVGaW5kZXIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuUFlfQ09NUElMRUQpCi0KLQotY2xhc3MgX0V4dGVuc2lvbkZpbmRlckRldGFpbHM6Ci0KLSAgICBsb2FkZXIgPSBfRXh0ZW5zaW9uRmlsZUxvYWRlcgotICAgIHN1cHBvcnRzX3BhY2thZ2VzID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdWZmaXhlcyA9IF9zdWZmaXhfbGlzdChpbXAuQ19FWFRFTlNJT04pCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIkZpbGVGaW5kZXIoJXIpIiAlIChzZWxmLnBhdGgsKQogCiAKICMgSW1wb3J0IGl0c2VsZiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotZGVmIF9maWxlX3BhdGhfaG9vayhwYXRoKToKLSAgICAiIiJJZiB0aGUgcGF0aCBpcyBhIGRpcmVjdG9yeSwgcmV0dXJuIGEgZmlsZS1iYXNlZCBmaW5kZXIuIiIiCi0gICAgaWYgX3BhdGhfaXNkaXIocGF0aCk6Ci0gICAgICAgIHJldHVybiBfRmlsZUZpbmRlcihwYXRoLCBfRXh0ZW5zaW9uRmluZGVyRGV0YWlscygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NvdXJjZUZpbmRlckRldGFpbHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9Tb3VyY2VsZXNzRmluZGVyRGV0YWlscygpKQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJvbmx5IGRpcmVjdG9yaWVzIGFyZSBzdXBwb3J0ZWQiKQotCi0KLV9ERUZBVUxUX1BBVEhfSE9PSyA9IF9maWxlX3BhdGhfaG9vawotCi1jbGFzcyBfRGVmYXVsdFBhdGhGaW5kZXIoUGF0aEZpbmRlcik6Ci0KLSAgICAiIiJTdWJjbGFzcyBvZiBQYXRoRmluZGVyIHRoYXQgaW1wbGVtZW50cyBpbXBsaWNpdCBzZW1hbnRpY3MgZm9yCi0gICAgX19pbXBvcnRfXy4iIiIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9ob29rcyhjbHMsIHBhdGgpOgotICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgYXMgd2VsbCBhcyBpbXBsaWNpdCBwYXRoIGhvb2tzLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBsaWNpdF9ob29rcyA9IFtfREVGQVVMVF9QQVRIX0hPT0ssIGltcC5OdWxsSW1wb3J0ZXJdCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fcGF0aF9ob29rcyhwYXRoLCBpbXBsaWNpdF9ob29rcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfcGF0aF9pbXBvcnRlcl9jYWNoZShjbHMsIHBhdGgpOgotICAgICAgICAiIiJVc2UgdGhlIGRlZmF1bHQgcGF0aCBob29rIHdoZW4gTm9uZSBpcyBzdG9yZWQgaW4KLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCi0gICAgICAgIHJldHVybiBzdXBlcigpLl9wYXRoX2ltcG9ydGVyX2NhY2hlKHBhdGgsIF9ERUZBVUxUX1BBVEhfSE9PSykKLQotCiBjbGFzcyBfSW1wb3J0TG9ja0NvbnRleHQ6CiAKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIHRoZSBpbXBvcnQgbG9jay4iIiIKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CiAgICAgICAgICIiIkFjcXVpcmUgdGhlIGltcG9ydCBsb2NrLiIiIgotICAgICAgICBpbXAuYWNxdWlyZV9sb2NrKCkKKyAgICAgICAgX2ltcC5hY3F1aXJlX2xvY2soKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190cmFjZWJhY2spOgogICAgICAgICAiIiJSZWxlYXNlIHRoZSBpbXBvcnQgbG9jayByZWdhcmRsZXNzIG9mIGFueSByYWlzZWQgZXhjZXB0aW9ucy4iIiIKLSAgICAgICAgaW1wLnJlbGVhc2VfbG9jaygpCisgICAgICAgIF9pbXAucmVsZWFzZV9sb2NrKCkKIAogCi1fSU1QTElDSVRfTUVUQV9QQVRIID0gW0J1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIF9EZWZhdWx0UGF0aEZpbmRlcl0KK2RlZiBfcmVzb2x2ZV9uYW1lKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGJpdHMgPSBwYWNrYWdlLnJzcGxpdCgnLicsIGxldmVsIC0gMSkKKyAgICBpZiBsZW4oYml0cykgPCBsZXZlbDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgdG9wLWxldmVsIHBhY2thZ2UnKQorICAgIGJhc2UgPSBiaXRzWzBdCisgICAgcmV0dXJuICd7fS57fScuZm9ybWF0KGJhc2UsIG5hbWUpIGlmIG5hbWUgZWxzZSBiYXNlCiAKLV9FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7fScKKworZGVmIF9maW5kX21vZHVsZShuYW1lLCBwYXRoKToKKyAgICAiIiJGaW5kIGEgbW9kdWxlJ3MgbG9hZGVyLiIiIgorICAgIGlmIG5vdCBzeXMubWV0YV9wYXRoOgorICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLm1ldGFfcGF0aCBpcyBlbXB0eScsIEltcG9ydFdhcm5pbmcpCisgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICB3aXRoIF9JbXBvcnRMb2NrQ29udGV4dCgpOgorICAgICAgICAgICAgbG9hZGVyID0gZmluZGVyLmZpbmRfbW9kdWxlKG5hbWUsIHBhdGgpCisgICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KKyAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgICAgIHJldHVybiBsb2FkZXIKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfc2FuaXR5X2NoZWNrKG5hbWUsIHBhY2thZ2UsIGxldmVsKToKKyAgICAiIiJWZXJpZnkgYXJndW1lbnRzIGFyZSAic2FuZSIuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtb2R1bGUgbmFtZSBtdXN0IGJlIHN0ciwgbm90IHt9Ii5mb3JtYXQodHlwZShuYW1lKSkpCisgICAgaWYgbGV2ZWwgPCAwOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsZXZlbCBtdXN0IGJlID49IDAnKQorICAgIGlmIHBhY2thZ2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIl9fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmciKQorICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICAgICAgbXNnID0gKCJQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgIgorICAgICAgICAgICAgICAgICAgICJpbXBvcnQiKQorICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IobXNnLmZvcm1hdChwYWNrYWdlKSkKKyAgICBpZiBub3QgbmFtZSBhbmQgbGV2ZWwgPT0gMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRW1wdHkgbW9kdWxlIG5hbWUiKQorCisKK19FUlJfTVNHID0gJ05vIG1vZHVsZSBuYW1lZCB7IXJ9JworCitkZWYgX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0Xyk6CisgICAgcGF0aCA9IE5vbmUKKyAgICBwYXJlbnQgPSBuYW1lLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIGlmIHBhcmVudDoKKyAgICAgICAgaWYgcGFyZW50IG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgcGFyZW50KQorICAgICAgICAjIENyYXp5IHNpZGUtZWZmZWN0cyEKKyAgICAgICAgaWYgbmFtZSBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lXQorICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5OyBiZSBuaWNlciB0byBza2lwIHRoZSBkaWN0IGxvb2t1cC4KKyAgICAgICAgcGFyZW50X21vZHVsZSA9IHN5cy5tb2R1bGVzW3BhcmVudF0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuX19wYXRoX18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkKKyAgICBsb2FkZXIgPSBfZmluZF9tb2R1bGUobmFtZSwgcGF0aCkKKyAgICBpZiBsb2FkZXIgaXMgTm9uZToKKyAgICAgICAgZXhjID0gSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgICMgVE9ETyhicmV0dCk6IHN3aXRjaCB0byBhIHByb3BlciBNb2R1bGVOb3RGb3VuZCBleGNlcHRpb24gaW4gUHl0aG9uCisgICAgICAgICMgMy40LgorICAgICAgICBleGMuX25vdF9mb3VuZCA9IFRydWUKKyAgICAgICAgcmFpc2UgZXhjCisgICAgZWxpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgIyBUaGUgcGFyZW50IGltcG9ydCBtYXkgaGF2ZSBhbHJlYWR5IGltcG9ydGVkIHRoaXMgbW9kdWxlLgorICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnaW1wb3J0IHshcn0gIyB7IXJ9JywgbmFtZSwgbG9hZGVyKQorICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHk7IGJlIG5pY2VyIHRvIHNraXAgdGhlIGRpY3QgbG9va3VwLgorICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgaWYgcGFyZW50OgorICAgICAgICAjIFNldCB0aGUgbW9kdWxlIGFzIGFuIGF0dHJpYnV0ZSBvbiBpdHMgcGFyZW50LgorICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQorICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCisgICAgIyBTZXQgX19wYWNrYWdlX18gaWYgdGhlIGxvYWRlciBkaWQgbm90LgorICAgIGlmIGdldGF0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nLCBOb25lKSBpcyBOb25lOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBtb2R1bGUuX19uYW1lX18KKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6CisgICAgICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gbW9kdWxlLl9fcGFja2FnZV9fLnJwYXJ0aXRpb24oJy4nKVswXQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgIyBTZXQgbG9hZGVyIGlmIG5lZWQgYmUuCisgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19sb2FkZXJfXycpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IGxvYWRlcgorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1vZHVsZQorCisKK2RlZiBfZmluZF9hbmRfbG9hZChuYW1lLCBpbXBvcnRfKToKKyAgICAiIiJGaW5kIGFuZCBsb2FkIHRoZSBtb2R1bGUsIGFuZCByZWxlYXNlIHRoZSBpbXBvcnQgbG9jay4iIiIKKyAgICB0cnk6CisgICAgICAgIGxvY2sgPSBfZ2V0X21vZHVsZV9sb2NrKG5hbWUpCisgICAgZmluYWxseToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgIGxvY2suYWNxdWlyZSgpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWRfdW5sb2NrZWQobmFtZSwgaW1wb3J0XykKKyAgICBmaW5hbGx5OgorICAgICAgICBsb2NrLnJlbGVhc2UoKQorCiAKIGRlZiBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlPU5vbmUsIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgYmFzZWQgb24gaXRzIG5hbWUsIHRoZSBwYWNrYWdlIHRoZSBjYWxsIGlzCiAgICAgYmVpbmcgbWFkZSBmcm9tLCBhbmQgdGhlIGxldmVsIGFkanVzdG1lbnQuCiAKICAgICBUaGlzIGZ1bmN0aW9uIHJlcHJlc2VudHMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkZW5vbWluYXRvciBvZiBmdW5jdGlvbmFsaXR5Ci0gICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHR0aW5nIF9fcGFja2FnZV9fIGlmCisgICAgYmV0d2VlbiBpbXBvcnRfbW9kdWxlIGFuZCBfX2ltcG9ydF9fLiBUaGlzIGluY2x1ZGVzIHNldHRpbmcgX19wYWNrYWdlX18gaWYKICAgICB0aGUgbG9hZGVyIGRpZCBub3QuCiAKICAgICAiIiIKLSAgICBpZiBwYWNrYWdlOgotICAgICAgICBpZiBub3QgaGFzYXR0cihwYWNrYWdlLCAncmluZGV4Jyk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJfX3BhY2thZ2VfXyBub3Qgc2V0IHRvIGEgc3RyaW5nIikKLSAgICAgICAgZWxpZiBwYWNrYWdlIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgIG1zZyA9ICgiUGFyZW50IG1vZHVsZSB7MCFyfSBub3QgbG9hZGVkLCBjYW5ub3QgcGVyZm9ybSByZWxhdGl2ZSAiCi0gICAgICAgICAgICAgICAgICAgImltcG9ydCIpCi0gICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcihtc2cuZm9ybWF0KHBhY2thZ2UpKQotICAgIGlmIG5vdCBuYW1lIGFuZCBsZXZlbCA9PSAwOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBtb2R1bGUgbmFtZSIpCisgICAgX3Nhbml0eV9jaGVjayhuYW1lLCBwYWNrYWdlLCBsZXZlbCkKICAgICBpZiBsZXZlbCA+IDA6Ci0gICAgICAgIGRvdCA9IGxlbihwYWNrYWdlKQotICAgICAgICBmb3IgeCBpbiByYW5nZShsZXZlbCwgMSwgLTEpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGRvdCA9IHBhY2thZ2UucmluZGV4KCcuJywgMCwgZG90KQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBiZXlvbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvcC1sZXZlbCBwYWNrYWdlIikKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2VbOmRvdF0sIG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gcGFja2FnZVs6ZG90XQotICAgIHdpdGggX0ltcG9ydExvY2tDb250ZXh0KCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgICAgICBpZiBtb2R1bGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgaW4gc3lzLm1vZHVsZXMiLmZvcm1hdChuYW1lKSkKLSAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlKQotICAgICAgICAgICAgcmV0dXJuIG1vZHVsZQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIHBhcmVudCA9IG5hbWUucnBhcnRpdGlvbignLicpWzBdCi0gICAgICAgIHBhdGggPSBOb25lCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgIGlmIHBhcmVudCBub3QgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgX2djZF9pbXBvcnQocGFyZW50KQotICAgICAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgICAgICBwYXJlbnRfbW9kdWxlID0gc3lzLm1vZHVsZXNbcGFyZW50XQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbXNnID0gKF9FUlJfTVNHICsgJzsge30gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobXNnKQotICAgICAgICBtZXRhX3BhdGggPSBzeXMubWV0YV9wYXRoICsgX0lNUExJQ0lUX01FVEFfUEFUSAotICAgICAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKLSAgICAgICAgICAgIGxvYWRlciA9IGZpbmRlci5maW5kX21vZHVsZShuYW1lLCBwYXRoKQotICAgICAgICAgICAgaWYgbG9hZGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICMgVGhlIHBhcmVudCBpbXBvcnQgbWF5IGhhdmUgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIG1vZHVsZS4KLSAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKF9FUlJfTVNHLmZvcm1hdChuYW1lKSkKLSAgICAgICAgIyBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eTsgYmUgbmljZXIgdG8gc2tpcCB0aGUgZGljdCBsb29rdXAuCi0gICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgICAgIGlmIHBhcmVudDoKLSAgICAgICAgICAgICMgU2V0IHRoZSBtb2R1bGUgYXMgYW4gYXR0cmlidXRlIG9uIGl0cyBwYXJlbnQuCi0gICAgICAgICAgICBzZXRhdHRyKHBhcmVudF9tb2R1bGUsIG5hbWUucnBhcnRpdGlvbignLicpWzJdLCBtb2R1bGUpCi0gICAgICAgICMgU2V0IF9fcGFja2FnZV9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KLSAgICAgICAgaWYgbm90IGhhc2F0dHIobW9kdWxlLCAnX19wYWNrYWdlX18nKSBvciBtb2R1bGUuX19wYWNrYWdlX18gaXMgTm9uZToKLSAgICAgICAgICAgICMgV2F0Y2ggb3V0IGZvciB3aGF0IGNvbWVzIG91dCBvZiBzeXMubW9kdWxlcyB0byBub3QgYmUgYSBtb2R1bGUsCi0gICAgICAgICAgICAjIGUuZy4gYW4gaW50LgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX25hbWVfXwotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG1vZHVsZSwgJ19fcGF0aF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IG1vZHVsZS5fX3BhY2thZ2VfXy5ycGFydGl0aW9uKCcuJylbMF0KLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiBtb2R1bGUKKyAgICAgICAgbmFtZSA9IF9yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSwgbGV2ZWwpCisgICAgX2ltcC5hY3F1aXJlX2xvY2soKQorICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICByZXR1cm4gX2ZpbmRfYW5kX2xvYWQobmFtZSwgX2djZF9pbXBvcnQpCisgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBpZiBtb2R1bGUgaXMgTm9uZToKKyAgICAgICAgX2ltcC5yZWxlYXNlX2xvY2soKQorICAgICAgICBtZXNzYWdlID0gKCJpbXBvcnQgb2Yge30gaGFsdGVkOyAiCisgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIi5mb3JtYXQobmFtZSkpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UsIG5hbWU9bmFtZSkKKyAgICBfbG9ja191bmxvY2tfbW9kdWxlKG5hbWUpCisgICAgcmV0dXJuIG1vZHVsZQorCitkZWYgX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBpbXBvcnRfKToKKyAgICAiIiJGaWd1cmUgb3V0IHdoYXQgX19pbXBvcnRfXyBzaG91bGQgcmV0dXJuLgorCisgICAgVGhlIGltcG9ydF8gcGFyYW1ldGVyIGlzIGEgY2FsbGFibGUgd2hpY2ggdGFrZXMgdGhlIG5hbWUgb2YgbW9kdWxlIHRvCisgICAgaW1wb3J0LiBJdCBpcyByZXF1aXJlZCB0byBkZWNvdXBsZSB0aGUgZnVuY3Rpb24gZnJvbSBhc3N1bWluZyBpbXBvcnRsaWIncworICAgIGltcG9ydCBpbXBsZW1lbnRhdGlvbiBpcyBkZXNpcmVkLgorCisgICAgIiIiCisgICAgIyBUaGUgaGVsbCB0aGF0IGlzIGZyb21saXN0IC4uLgorICAgICMgSWYgYSBwYWNrYWdlIHdhcyBpbXBvcnRlZCwgdHJ5IHRvIGltcG9ydCBzdHVmZiBmcm9tIGZyb21saXN0LgorICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgaWYgJyonIGluIGZyb21saXN0OgorICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQorICAgICAgICAgICAgZnJvbWxpc3QucmVtb3ZlKCcqJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19hbGxfXycpOgorICAgICAgICAgICAgICAgIGZyb21saXN0LmV4dGVuZChtb2R1bGUuX19hbGxfXykKKyAgICAgICAgZm9yIHggaW4gZnJvbWxpc3Q6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsIHgpOgorICAgICAgICAgICAgICAgIGZyb21fbmFtZSA9ICd7fS57fScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXywgeCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgZnJvbV9uYW1lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmRzLWNvbXBhdGliaWxpdHkgZGljdGF0ZXMgd2UgaWdub3JlIGZhaWxlZAorICAgICAgICAgICAgICAgICAgICAjIGltcG9ydHMgdHJpZ2dlcmVkIGJ5IGZyb21saXN0IGZvciBtb2R1bGVzIHRoYXQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgIyBleGlzdC4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPKGJyZXR0KTogSW4gUHl0aG9uIDMuNCwgaGF2ZSBpbXBvcnQgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgIyAgIE1vZHVsZU5vdEZvdW5kIGFuZCBjYXRjaCB0aGF0LgorICAgICAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKGV4YywgJ19ub3RfZm91bmQnLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICByZXR1cm4gbW9kdWxlCiAKIAotZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz17fSwgbG9jYWxzPXt9LCBmcm9tbGlzdD1bXSwgbGV2ZWw9MCk6CitkZWYgX2NhbGNfX19wYWNrYWdlX18oZ2xvYmFscyk6CisgICAgIiIiQ2FsY3VsYXRlIHdoYXQgX19wYWNrYWdlX18gc2hvdWxkIGJlLgorCisgICAgX19wYWNrYWdlX18gaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZCBvciBjb3VsZCBiZSBzZXQgdG8gTm9uZQorICAgIHRvIHJlcHJlc2VudCB0aGF0IGl0cyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bi4KKworICAgICIiIgorICAgIHBhY2thZ2UgPSBnbG9iYWxzLmdldCgnX19wYWNrYWdlX18nKQorICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKKyAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KKyAgICAgICAgaWYgJ19fcGF0aF9fJyBub3QgaW4gZ2xvYmFsczoKKyAgICAgICAgICAgIHBhY2thZ2UgPSBwYWNrYWdlLnJwYXJ0aXRpb24oJy4nKVswXQorICAgIHJldHVybiBwYWNrYWdlCisKKworZGVmIF9nZXRfc3VwcG9ydGVkX2ZpbGVfbG9hZGVycygpOgorICAgICIiIlJldHVybnMgYSBsaXN0IG9mIGZpbGUtYmFzZWQgbW9kdWxlIGxvYWRlcnMuCisKKyAgICBFYWNoIGl0ZW0gaXMgYSB0dXBsZSAobG9hZGVyLCBzdWZmaXhlcywgYWxsb3dfcGFja2FnZXMpLgorICAgICIiIgorICAgIGV4dGVuc2lvbnMgPSBFeHRlbnNpb25GaWxlTG9hZGVyLCBfaW1wLmV4dGVuc2lvbl9zdWZmaXhlcygpCisgICAgc291cmNlID0gU291cmNlRmlsZUxvYWRlciwgU09VUkNFX1NVRkZJWEVTCisgICAgYnl0ZWNvZGUgPSBTb3VyY2VsZXNzRmlsZUxvYWRlciwgQllURUNPREVfU1VGRklYRVMKKyAgICByZXR1cm4gW2V4dGVuc2lvbnMsIHNvdXJjZSwgYnl0ZWNvZGVdCisKKworZGVmIF9faW1wb3J0X18obmFtZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSwgZnJvbWxpc3Q9KCksIGxldmVsPTApOgogICAgICIiIkltcG9ydCBhIG1vZHVsZS4KIAogICAgIFRoZSAnZ2xvYmFscycgYXJndW1lbnQgaXMgdXNlZCB0byBpbmZlciB3aGVyZSB0aGUgaW1wb3J0IGlzIG9jY3VyaW5nIGZyb20KQEAgLTg1MSw0MCArMTY1OCwxMTIgQEAKICAgICBpbXBvcnQgKGUuZy4gYGBmcm9tIC4ucGtnIGltcG9ydCBtb2RgYCB3b3VsZCBoYXZlIGEgJ2xldmVsJyBvZiAyKS4KIAogICAgICIiIgotICAgIGlmIG5vdCBoYXNhdHRyKG5hbWUsICdycGFydGl0aW9uJyk6Ci0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigibW9kdWxlIG5hbWUgbXVzdCBiZSBzdHIsIG5vdCB7fSIuZm9ybWF0KHR5cGUobmFtZSkpKQogICAgIGlmIGxldmVsID09IDA6CiAgICAgICAgIG1vZHVsZSA9IF9nY2RfaW1wb3J0KG5hbWUpCiAgICAgZWxzZToKLSAgICAgICAgIyBfX3BhY2thZ2VfXyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkIG9yIGNvdWxkIGJlIHNldCB0byBOb25lCi0gICAgICAgICMgdG8gcmVwcmVzZW50IHRoYXQgaXQncyBwcm9wZXIgdmFsdWUgaXMgdW5rbm93bgotICAgICAgICBwYWNrYWdlID0gZ2xvYmFscy5nZXQoJ19fcGFja2FnZV9fJykKLSAgICAgICAgaWYgcGFja2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcGFja2FnZSA9IGdsb2JhbHNbJ19fbmFtZV9fJ10KLSAgICAgICAgICAgIGlmICdfX3BhdGhfXycgbm90IGluIGdsb2JhbHM6Ci0gICAgICAgICAgICAgICAgcGFja2FnZSA9IHBhY2thZ2UucnBhcnRpdGlvbignLicpWzBdCisgICAgICAgIGdsb2JhbHNfID0gZ2xvYmFscyBpZiBnbG9iYWxzIGlzIG5vdCBOb25lIGVsc2Uge30KKyAgICAgICAgcGFja2FnZSA9IF9jYWxjX19fcGFja2FnZV9fKGdsb2JhbHNfKQogICAgICAgICBtb2R1bGUgPSBfZ2NkX2ltcG9ydChuYW1lLCBwYWNrYWdlLCBsZXZlbCkKLSAgICAjIFRoZSBoZWxsIHRoYXQgaXMgZnJvbWxpc3QgLi4uCiAgICAgaWYgbm90IGZyb21saXN0OgogICAgICAgICAjIFJldHVybiB1cCB0byB0aGUgZmlyc3QgZG90IGluICduYW1lJy4gVGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdAogICAgICAgICAjIHRoYXQgJ25hbWUnIG1heSBiZSByZWxhdGl2ZS4KICAgICAgICAgaWYgbGV2ZWwgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBzeXMubW9kdWxlc1tuYW1lLnBhcnRpdGlvbignLicpWzBdXQorICAgICAgICAgICAgcmV0dXJuIF9nY2RfaW1wb3J0KG5hbWUucGFydGl0aW9uKCcuJylbMF0pCiAgICAgICAgIGVsaWYgbm90IG5hbWU6CiAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCiAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZpZ3VyZSBvdXQgd2hlcmUgdG8gc2xpY2UgdGhlIG1vZHVsZSdzIG5hbWUgdXAgdG8gdGhlIGZpcnN0IGRvdAorICAgICAgICAgICAgIyBpbiAnbmFtZScuCiAgICAgICAgICAgICBjdXRfb2ZmID0gbGVuKG5hbWUpIC0gbGVuKG5hbWUucGFydGl0aW9uKCcuJylbMF0pCi0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fWzotY3V0X29mZl1dCisgICAgICAgICAgICAjIFNsaWNlIGVuZCBuZWVkcyB0byBiZSBwb3NpdGl2ZSB0byBhbGxldmlhdGUgbmVlZCB0byBzcGVjaWFsLWNhc2UKKyAgICAgICAgICAgICMgd2hlbiBgYCcuJyBub3QgaW4gbmFtZWBgLgorICAgICAgICAgICAgcmV0dXJuIHN5cy5tb2R1bGVzW21vZHVsZS5fX25hbWVfX1s6bGVuKG1vZHVsZS5fX25hbWVfXyktY3V0X29mZl1dCiAgICAgZWxzZToKLSAgICAgICAgIyBJZiBhIHBhY2thZ2Ugd2FzIGltcG9ydGVkLCB0cnkgdG8gaW1wb3J0IHN0dWZmIGZyb20gZnJvbWxpc3QuCi0gICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKLSAgICAgICAgICAgIGlmICcqJyBpbiBmcm9tbGlzdCBhbmQgaGFzYXR0cihtb2R1bGUsICdfX2FsbF9fJyk6Ci0gICAgICAgICAgICAgICAgZnJvbWxpc3QgPSBsaXN0KGZyb21saXN0KQotICAgICAgICAgICAgICAgIGZyb21saXN0LnJlbW92ZSgnKicpCi0gICAgICAgICAgICAgICAgZnJvbWxpc3QuZXh0ZW5kKG1vZHVsZS5fX2FsbF9fKQotICAgICAgICAgICAgZm9yIHggaW4gKHkgZm9yIHkgaW4gZnJvbWxpc3QgaWYgbm90IGhhc2F0dHIobW9kdWxlLHkpKToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIF9nY2RfaW1wb3J0KCd7MH0uezF9Jy5mb3JtYXQobW9kdWxlLl9fbmFtZV9fLCB4KSkKLSAgICAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgcmV0dXJuIG1vZHVsZQorICAgICAgICByZXR1cm4gX2hhbmRsZV9mcm9tbGlzdChtb2R1bGUsIGZyb21saXN0LCBfZ2NkX2ltcG9ydCkKKworCisKK2RlZiBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpOgorICAgICIiIlNldHVwIGltcG9ydGxpYiBieSBpbXBvcnRpbmcgbmVlZGVkIGJ1aWx0LWluIG1vZHVsZXMgYW5kIGluamVjdGluZyB0aGVtCisgICAgaW50byB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4KKworICAgIEFzIHN5cyBpcyBuZWVkZWQgZm9yIHN5cy5tb2R1bGVzIGFjY2VzcyBhbmQgX2ltcCBpcyBuZWVkZWQgdG8gbG9hZCBidWlsdC1pbgorICAgIG1vZHVsZXMsIHRob3NlIHR3byBtb2R1bGVzIG11c3QgYmUgZXhwbGljaXRseSBwYXNzZWQgaW4uCisKKyAgICAiIiIKKyAgICBnbG9iYWwgX2ltcCwgc3lzLCBCWVRFQ09ERV9TVUZGSVhFUworICAgIF9pbXAgPSBfaW1wX21vZHVsZQorICAgIHN5cyA9IHN5c19tb2R1bGUKKworICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZToKKyAgICAgICAgQllURUNPREVfU1VGRklYRVMgPSBPUFRJTUlaRURfQllURUNPREVfU1VGRklYRVMKKyAgICBlbHNlOgorICAgICAgICBCWVRFQ09ERV9TVUZGSVhFUyA9IERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTCisKKyAgICBmb3IgbW9kdWxlIGluIChfaW1wLCBzeXMpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihtb2R1bGUsICdfX2xvYWRlcl9fJyk6CisgICAgICAgICAgICBtb2R1bGUuX19sb2FkZXJfXyA9IEJ1aWx0aW5JbXBvcnRlcgorCisgICAgc2VsZl9tb2R1bGUgPSBzeXMubW9kdWxlc1tfX25hbWVfX10KKyAgICBmb3IgYnVpbHRpbl9uYW1lIGluICgnX2lvJywgJ193YXJuaW5ncycsICdidWlsdGlucycsICdtYXJzaGFsJyk6CisgICAgICAgIGlmIGJ1aWx0aW5fbmFtZSBub3QgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShidWlsdGluX25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBidWlsdGluX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fbmFtZV0KKyAgICAgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgYnVpbHRpbl9uYW1lLCBidWlsdGluX21vZHVsZSkKKworICAgIG9zX2RldGFpbHMgPSAoJ3Bvc2l4JywgWycvJ10pLCAoJ250JywgWydcXCcsICcvJ10pLCAoJ29zMicsIFsnXFwnLCAnLyddKQorICAgIGZvciBidWlsdGluX29zLCBwYXRoX3NlcGFyYXRvcnMgaW4gb3NfZGV0YWlsczoKKyAgICAgICAgIyBBc3N1bXB0aW9uIG1hZGUgaW4gX3BhdGhfam9pbigpCisgICAgICAgIGFzc2VydCBhbGwobGVuKHNlcCkgPT0gMSBmb3Igc2VwIGluIHBhdGhfc2VwYXJhdG9ycykKKyAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMF0KKyAgICAgICAgaWYgYnVpbHRpbl9vcyBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgIG9zX21vZHVsZSA9IHN5cy5tb2R1bGVzW2J1aWx0aW5fb3NdCisgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zX21vZHVsZSA9IEJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShidWlsdGluX29zKQorICAgICAgICAgICAgICAgICMgVE9ETzogcmlwIG91dCBvczIgY29kZSBhZnRlciAzLjMgaXMgcmVsZWFzZWQgYXMgcGVyIFBFUCAxMQorICAgICAgICAgICAgICAgIGlmIGJ1aWx0aW5fb3MgPT0gJ29zMicgYW5kICdFTVggR0NDJyBpbiBzeXMudmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgcGF0aF9zZXAgPSBwYXRoX3NlcGFyYXRvcnNbMV0KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2ltcG9ydGxpYiByZXF1aXJlcyBwb3NpeCBvciBudCcpCisKKyAgICB0cnk6CisgICAgICAgIHRocmVhZF9tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ190aHJlYWQnKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgIyBQeXRob24gd2FzIGJ1aWx0IHdpdGhvdXQgdGhyZWFkcworICAgICAgICB0aHJlYWRfbW9kdWxlID0gTm9uZQorICAgIHdlYWtyZWZfbW9kdWxlID0gQnVpbHRpbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfd2Vha3JlZicpCisKKyAgICBpZiBidWlsdGluX29zID09ICdudCc6CisgICAgICAgIHdpbnJlZ19tb2R1bGUgPSBCdWlsdGluSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ3dpbnJlZycpCisgICAgICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2lucmVnJywgd2lucmVnX21vZHVsZSkKKworICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfb3MnLCBvc19tb2R1bGUpCisgICAgc2V0YXR0cihzZWxmX21vZHVsZSwgJ190aHJlYWQnLCB0aHJlYWRfbW9kdWxlKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfd2Vha3JlZicsIHdlYWtyZWZfbW9kdWxlKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcCcsIHBhdGhfc2VwKQorICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdwYXRoX3NlcGFyYXRvcnMnLCBzZXQocGF0aF9zZXBhcmF0b3JzKSkKKyAgICAjIENvbnN0YW50cworICAgIHNldGF0dHIoc2VsZl9tb2R1bGUsICdfcmVsYXhfY2FzZScsIF9tYWtlX3JlbGF4X2Nhc2UoKSkKKyAgICBFWFRFTlNJT05fU1VGRklYRVMuZXh0ZW5kKF9pbXAuZXh0ZW5zaW9uX3N1ZmZpeGVzKCkpCisgICAgaWYgYnVpbHRpbl9vcyA9PSAnbnQnOgorICAgICAgICBTT1VSQ0VfU1VGRklYRVMuYXBwZW5kKCcucHl3JykKKyAgICAgICAgaWYgJ19kLnB5ZCcgaW4gRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgV2luZG93c1JlZ2lzdHJ5RmluZGVyLkRFQlVHX0JVSUxEID0gVHJ1ZQorCisKK2RlZiBfaW5zdGFsbChzeXNfbW9kdWxlLCBfaW1wX21vZHVsZSk6CisgICAgIiIiSW5zdGFsbCBpbXBvcnRsaWIgYXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKKyAgICBfc2V0dXAoc3lzX21vZHVsZSwgX2ltcF9tb2R1bGUpCisgICAgc3VwcG9ydGVkX2xvYWRlcnMgPSBfZ2V0X3N1cHBvcnRlZF9maWxlX2xvYWRlcnMoKQorICAgIHN5cy5wYXRoX2hvb2tzLmV4dGVuZChbRmlsZUZpbmRlci5wYXRoX2hvb2soKnN1cHBvcnRlZF9sb2FkZXJzKV0pCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoQnVpbHRpbkltcG9ydGVyKQorICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKEZyb3plbkltcG9ydGVyKQorICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCisgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvYWJjLnB5IGIvTGliL2ltcG9ydGxpYi9hYmMucHkKaW5kZXggZmEzNDNmOC4uMzg3NTY3YSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9hYmMucHkKKysrIGIvTGliL2ltcG9ydGxpYi9hYmMucHkKQEAgLTEsMTggKzEsOTQgQEAKICIiIkFic3RyYWN0IGJhc2UgY2xhc3NlcyByZWxhdGVkIHRvIGltcG9ydC4iIiIKIGZyb20gLiBpbXBvcnQgX2Jvb3RzdHJhcAogZnJvbSAuIGltcG9ydCBtYWNoaW5lcnkKLWZyb20gLiBpbXBvcnQgdXRpbAordHJ5OgorICAgIGltcG9ydCBfZnJvemVuX2ltcG9ydGxpYgorZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICBpZiBleGMubmFtZSAhPSAnX2Zyb3plbl9pbXBvcnRsaWInOgorICAgICAgICByYWlzZQorICAgIF9mcm96ZW5faW1wb3J0bGliID0gTm9uZQogaW1wb3J0IGFiYwogaW1wb3J0IGltcAotaW1wb3J0IGlvCiBpbXBvcnQgbWFyc2hhbAotaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIGltcG9ydCB0b2tlbml6ZQotaW1wb3J0IHR5cGVzCiBpbXBvcnQgd2FybmluZ3MKIAogCitkZWYgX3JlZ2lzdGVyKGFic3RyYWN0X2NscywgKmNsYXNzZXMpOgorICAgIGZvciBjbHMgaW4gY2xhc3NlczoKKyAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGNscykKKyAgICAgICAgaWYgX2Zyb3plbl9pbXBvcnRsaWIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmcm96ZW5fY2xzID0gZ2V0YXR0cihfZnJvemVuX2ltcG9ydGxpYiwgY2xzLl9fbmFtZV9fKQorICAgICAgICAgICAgYWJzdHJhY3RfY2xzLnJlZ2lzdGVyKGZyb3plbl9jbHMpCisKKworY2xhc3MgRmluZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisKKyAgICAiIiJMZWdhY3kgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGZpbmRlcnMuCisKKyAgICBJdCBtYXkgYmUgc3ViY2xhc3NlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGxlZ2FjeSB0aGlyZCBwYXJ0eQorICAgIHJlaW1wbGVtZW50YXRpb25zIG9mIHRoZSBpbXBvcnQgc3lzdGVtLiAgT3RoZXJ3aXNlLCBmaW5kZXIKKyAgICBpbXBsZW1lbnRhdGlvbnMgc2hvdWxkIGRlcml2ZSBmcm9tIHRoZSBtb3JlIHNwZWNpZmljIE1ldGFQYXRoRmluZGVyCisgICAgb3IgUGF0aEVudHJ5RmluZGVyIEFCQ3MuCisgICAgIiIiCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoPU5vbmUpOgorICAgICAgICAiIiJBbiBhYnN0cmFjdCBtZXRob2QgdGhhdCBzaG91bGQgZmluZCBhIG1vZHVsZS4KKyAgICAgICAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyIGFuZCB0aGUgb3B0aW9uYWwgcGF0aCBpcyBhIHN0ciBvciBOb25lLgorICAgICAgICBSZXR1cm5zIGEgTG9hZGVyIG9iamVjdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworCitjbGFzcyBNZXRhUGF0aEZpbmRlcihGaW5kZXIpOgorCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGZpbmRlcnMgb24gc3lzLm1ldGFfcGF0aC4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGgpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHNob3VsZCBmaW5kIGEgbW9kdWxlLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCisgICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIGludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAiIiJBbiBvcHRpb25hbCBtZXRob2QgZm9yIGNsZWFyaW5nIHRoZSBmaW5kZXIncyBjYWNoZSwgaWYgYW55LgorICAgICAgICBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKK19yZWdpc3RlcihNZXRhUGF0aEZpbmRlciwgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlciwgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyLCBtYWNoaW5lcnkuV2luZG93c1JlZ2lzdHJ5RmluZGVyKQorCisKK2NsYXNzIFBhdGhFbnRyeUZpbmRlcihGaW5kZXIpOgorCisgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgcGF0aCBlbnRyeSBmaW5kZXJzIHVzZWQgYnkgUGF0aEZpbmRlci4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICAiIiJBYnN0cmFjdCBtZXRob2Qgd2hpY2gsIHdoZW4gaW1wbGVtZW50ZWQsIHJldHVybnMgYSBtb2R1bGUgbG9hZGVyLgorICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIuICBSZXR1cm5zIGEgMi10dXBsZSBvZiAoTG9hZGVyLCBwb3J0aW9uKSB3aGVyZQorICAgICAgICBwb3J0aW9uIGlzIGEgc2VxdWVuY2Ugb2YgZmlsZSBzeXN0ZW0gbG9jYXRpb25zIGNvbnRyaWJ1dGluZyB0byBwYXJ0IG9mCisgICAgICAgIGEgbmFtZXNwYWNlIHBhY2thZ2UuICBUaGUgc2VxdWVuY2UgbWF5IGJlIGVtcHR5IGFuZCB0aGUgbG9hZGVyIG1heSBiZQorICAgICAgICBOb25lLgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZmluZF9tb2R1bGUgPSBfYm9vdHN0cmFwLl9maW5kX21vZHVsZV9zaGltCisKKyAgICBkZWYgaW52YWxpZGF0ZV9jYWNoZXMoc2VsZik6CisgICAgICAgICIiIkFuIG9wdGlvbmFsIG1ldGhvZCBmb3IgY2xlYXJpbmcgdGhlIGZpbmRlcidzIGNhY2hlLCBpZiBhbnkuCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgUGF0aEZpbmRlci5pbnZhbGlkYXRlX2NhY2hlcygpLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKK19yZWdpc3RlcihQYXRoRW50cnlGaW5kZXIsIG1hY2hpbmVyeS5GaWxlRmluZGVyKQorCisKIGNsYXNzIExvYWRlcihtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogCiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgaW1wb3J0IGxvYWRlcnMuIiIiCkBAIC0yMywyMyArOTksMTIgQEAKICAgICAgICAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLQotY2xhc3MgRmluZGVyKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6Ci0KLSAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBpbXBvcnQgZmluZGVycy4iIiIKLQogICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZmluZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIkFic3RyYWN0IG1ldGhvZCB3aGljaCB3aGVuIGltcGxlbWVudGVkIHNob3VsZCBmaW5kIGEgbW9kdWxlLgotICAgICAgICBUaGUgZnVsbG5hbWUgaXMgYSBzdHIgYW5kIHRoZSBvcHRpb25hbCBwYXRoIGlzIGEgc3RyIG9yIE5vbmUuCi0gICAgICAgIFJldHVybnMgYSBMb2FkZXIgb2JqZWN0LgotICAgICAgICAiIiIKKyAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgIiIiQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHdoZW4gaW1wbGVtZW50ZWQgY2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUKKyAgICAgICAgZ2l2ZW4gbW9kdWxlJ3MgcmVwci4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi1GaW5kZXIucmVnaXN0ZXIobWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlcikKLUZpbmRlci5yZWdpc3RlcihtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIpCi1GaW5kZXIucmVnaXN0ZXIobWFjaGluZXJ5LlBhdGhGaW5kZXIpCi0KIAogY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyKToKIApAQCAtODQsOCArMTQ5LDggQEAKICAgICAgICAgbW9kdWxlLiAgVGhlIGZ1bGxuYW1lIGlzIGEgc3RyLiAgUmV0dXJucyBhIHN0ci4iIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi1JbnNwZWN0TG9hZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIpCi1JbnNwZWN0TG9hZGVyLnJlZ2lzdGVyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikKK19yZWdpc3RlcihJbnNwZWN0TG9hZGVyLCBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5zcGVjdExvYWRlcik6CkBAIC0xMDQsNiArMTY5LDE1IEBACiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogCitjbGFzcyBGaWxlTG9hZGVyKF9ib290c3RyYXAuRmlsZUxvYWRlciwgUmVzb3VyY2VMb2FkZXIsIEV4ZWN1dGlvbkxvYWRlcik6CisKKyAgICAiIiJBYnN0cmFjdCBiYXNlIGNsYXNzIHBhcnRpYWxseSBpbXBsZW1lbnRpbmcgdGhlIFJlc291cmNlTG9hZGVyIGFuZAorICAgIEV4ZWN1dGlvbkxvYWRlciBBQkNzLiIiIgorCitfcmVnaXN0ZXIoRmlsZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCisKKwogY2xhc3MgU291cmNlTG9hZGVyKF9ib290c3RyYXAuU291cmNlTG9hZGVyLCBSZXNvdXJjZUxvYWRlciwgRXhlY3V0aW9uTG9hZGVyKToKIAogICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGxvYWRpbmcgc291cmNlIGNvZGUgKGFuZCBvcHRpb25hbGx5IGFueQpAQCAtMTIzLDcgKzE5NywyMCBAQAogCiAgICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgKGludCkgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwYXRoIChzdHIpLiIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgICAgIGlmIHNlbGYucGF0aF9zdGF0cy5fX2Z1bmNfXyBpcyBTb3VyY2VMb2FkZXIucGF0aF9zdGF0czoKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICAgICAgcmV0dXJuIGludChzZWxmLnBhdGhfc3RhdHMocGF0aClbJ210aW1lJ10pCisKKyAgICBkZWYgcGF0aF9zdGF0cyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbWV0YWRhdGEgZGljdCBmb3IgdGhlIHNvdXJjZSBwb2ludGVkIHRvIGJ5IHRoZSBwYXRoIChzdHIpLgorICAgICAgICBQb3NzaWJsZSBrZXlzOgorICAgICAgICAtICdtdGltZScgKG1hbmRhdG9yeSkgaXMgdGhlIG51bWVyaWMgdGltZXN0YW1wIG9mIGxhc3Qgc291cmNlCisgICAgICAgICAgY29kZSBtb2RpZmljYXRpb247CisgICAgICAgIC0gJ3NpemUnIChvcHRpb25hbCkgaXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHNvdXJjZSBjb2RlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5wYXRoX210aW1lLl9fZnVuY19fIGlzIFNvdXJjZUxvYWRlci5wYXRoX210aW1lOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICByZXR1cm4geydtdGltZSc6IHNlbGYucGF0aF9tdGltZShwYXRoKX0KIAogICAgIGRlZiBzZXRfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKICAgICAgICAgIiIiV3JpdGUgdGhlIGJ5dGVzIHRvIHRoZSBwYXRoIChpZiBwb3NzaWJsZSkuCkBAIC0xMzcsNiArMjI0LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAorX3JlZ2lzdGVyKFNvdXJjZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKIGNsYXNzIFB5TG9hZGVyKFNvdXJjZUxvYWRlcik6CiAKQEAgLTE5NSwxMCArMjgzLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBTb3VyY2VMb2FkZXIgaW5zdGVhZC4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZWUgdGhlIGltcG9ydGxpYiBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBiZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXBhdGlibGUgd2l0aCBQeXRob24gMy4xIG9ud2FyZHMuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHBhdGggPSBzZWxmLnNvdXJjZV9wYXRoKGZ1bGxuYW1lKQogICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobmFtZT1mdWxsbmFtZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBwYXRoCiAKQEAgLTIyNiw3ICszMTQsNyBAQAogICAgICAgICBpZiBwYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHNvdXJjZSBvciBieXRlY29kZSBwYXRoIGF2YWlsYWJsZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezAhcn0iLmZvcm1hdChmdWxsbmFtZSksIG5hbWU9ZnVsbG5hbWUpCiAKICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAiIiJHZXQgYSBjb2RlIG9iamVjdCBmcm9tIHNvdXJjZSBvciBieXRlY29kZS4iIiIKQEAgLTIzNCw3ICszMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZW1vdmFsIGluIFB5dGhvbiAzLjQ7IHVzZSBTb3VyY2VMb2FkZXIgaW5zdGVhZC4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBQeXRob24gMy4xIGNvbXBhdGliaWxpdHkgaXMgcmVxdWlyZWQsIHNlZSB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXRlc3QgZG9jdW1lbnRhdGlvbiBmb3IgUHlMb2FkZXIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNvdXJjZV90aW1lc3RhbXAgPSBzZWxmLnNvdXJjZV9tdGltZShmdWxsbmFtZSkKICAgICAgICAgIyBUcnkgdG8gdXNlIGJ5dGVjb2RlIGlmIGl0IGlzIGF2YWlsYWJsZS4KICAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IHNlbGYuYnl0ZWNvZGVfcGF0aChmdWxsbmFtZSkKQEAgLTI0MywyMCArMzMxLDMwIEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWFnaWMgPSBkYXRhWzo0XQogICAgICAgICAgICAgICAgIGlmIGxlbihtYWdpYykgPCA0OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYmFkIG1hZ2ljIG51bWJlciBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIG1hZ2ljIG51bWJlciBpbiB7fSIuZm9ybWF0KGZ1bGxuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9ZnVsbG5hbWUsIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgICAgICByYXdfdGltZXN0YW1wID0gZGF0YVs0OjhdCiAgICAgICAgICAgICAgICAgaWYgbGVuKHJhd190aW1lc3RhbXApIDwgNDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoImJhZCB0aW1lc3RhbXAgaW4ge30iLmZvcm1hdChmdWxsbmFtZSkpCi0gICAgICAgICAgICAgICAgcHljX3RpbWVzdGFtcCA9IG1hcnNoYWwuX3JfbG9uZyhyYXdfdGltZXN0YW1wKQotICAgICAgICAgICAgICAgIGJ5dGVjb2RlID0gZGF0YVs4Ol0KKyAgICAgICAgICAgICAgICBweWNfdGltZXN0YW1wID0gX2Jvb3RzdHJhcC5fcl9sb25nKHJhd190aW1lc3RhbXApCisgICAgICAgICAgICAgICAgcmF3X3NvdXJjZV9zaXplID0gZGF0YVs4OjEyXQorICAgICAgICAgICAgICAgIGlmIGxlbihyYXdfc291cmNlX3NpemUpICE9IDQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yKCJiYWQgZmlsZSBzaXplIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICMgU291cmNlIHNpemUgaXMgdW51c2VkIGFzIHRoZSBBQkMgZG9lcyBub3QgcHJvdmlkZSBhIHdheSB0bworICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBzaXplIG9mIHRoZSBzb3VyY2UgYWhlYWQgb2YgcmVhZGluZyBpdC4KKyAgICAgICAgICAgICAgICBieXRlY29kZSA9IGRhdGFbMTI6XQogICAgICAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIG1hZ2ljIG51bWJlciBpcyB2YWxpZC4KICAgICAgICAgICAgICAgICBpZiBpbXAuZ2V0X21hZ2ljKCkgIT0gbWFnaWM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKCJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgbWFnaWMgbnVtYmVyIGluIHt9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSwgcGF0aD1ieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGJ5dGVjb2RlIGlzIG5vdCBzdGFsZSAob25seSBtYXR0ZXJzIHdoZW4KICAgICAgICAgICAgICAgICAjIHRoZXJlIGlzIHNvdXJjZSB0byBmYWxsIGJhY2sgb24uCiAgICAgICAgICAgICAgICAgaWYgc291cmNlX3RpbWVzdGFtcDoKICAgICAgICAgICAgICAgICAgICAgaWYgcHljX3RpbWVzdGFtcCA8IHNvdXJjZV90aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiYnl0ZWNvZGUgaXMgc3RhbGUiKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoImJ5dGVjb2RlIGlzIHN0YWxlIiwgbmFtZT1mdWxsbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9Ynl0ZWNvZGVfcGF0aCkKICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAjIElmIHNvdXJjZSBpcyBhdmFpbGFibGUgZ2l2ZSBpdCBhIHNob3QuCiAgICAgICAgICAgICAgICAgaWYgc291cmNlX3RpbWVzdGFtcCBpcyBub3QgTm9uZToKQEAgLTI2OCwxOCArMzY2LDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcnNoYWwubG9hZHMoYnl0ZWNvZGUpCiAgICAgICAgIGVsaWYgc291cmNlX3RpbWVzdGFtcCBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIm5vIHNvdXJjZSBvciBieXRlY29kZSBhdmFpbGFibGUgdG8gY3JlYXRlIGNvZGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IGZvciB7MCFyfSIuZm9ybWF0KGZ1bGxuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3QgZm9yIHswIXJ9Ii5mb3JtYXQoZnVsbG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1mdWxsbmFtZSkKICAgICAgICAgIyBVc2UgdGhlIHNvdXJjZS4KICAgICAgICAgc291cmNlX3BhdGggPSBzZWxmLnNvdXJjZV9wYXRoKGZ1bGxuYW1lKQogICAgICAgICBpZiBzb3VyY2VfcGF0aCBpcyBOb25lOgogICAgICAgICAgICAgbWVzc2FnZSA9ICJhIHNvdXJjZSBwYXRoIG11c3QgZXhpc3QgdG8gbG9hZCB7MH0iLmZvcm1hdChmdWxsbmFtZSkKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1lc3NhZ2UpCisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPWZ1bGxuYW1lKQogICAgICAgICBzb3VyY2UgPSBzZWxmLmdldF9kYXRhKHNvdXJjZV9wYXRoKQogICAgICAgICBjb2RlX29iamVjdCA9IGNvbXBpbGUoc291cmNlLCBzb3VyY2VfcGF0aCwgJ2V4ZWMnLCBkb250X2luaGVyaXQ9VHJ1ZSkKICAgICAgICAgIyBHZW5lcmF0ZSBieXRlY29kZSBhbmQgd3JpdGUgaXQgb3V0LgogICAgICAgICBpZiBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6CiAgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuX3dfbG9uZyhzb3VyY2VfdGltZXN0YW1wKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF9ib290c3RyYXAuX3dfbG9uZyhzb3VyY2VfdGltZXN0YW1wKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKF9ib290c3RyYXAuX3dfbG9uZyhsZW4oc291cmNlKSAmIDB4RkZGRkZGRkYpKQogICAgICAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5kdW1wcyhjb2RlX29iamVjdCkpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2J5dGVjb2RlKGZ1bGxuYW1lLCBkYXRhKQogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvbWFjaGluZXJ5LnB5IGIvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkKaW5kZXggNTE5Nzc0NC4uZmY4MjZlNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkKKysrIGIvTGliL2ltcG9ydGxpYi9tYWNoaW5lcnkucHkKQEAgLTEsNSArMSwyMCBAQAogIiIiVGhlIG1hY2hpbmVyeSBvZiBpbXBvcnRsaWI6IGZpbmRlcnMsIGxvYWRlcnMsIGhvb2tzLCBldGMuIiIiCiAKK2ltcG9ydCBfaW1wCisKK2Zyb20gLl9ib290c3RyYXAgaW1wb3J0IChTT1VSQ0VfU1VGRklYRVMsIERFQlVHX0JZVEVDT0RFX1NVRkZJWEVTLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgRVhURU5TSU9OX1NVRkZJWEVTKQogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgQnVpbHRpbkltcG9ydGVyCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGcm96ZW5JbXBvcnRlcgorZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgV2luZG93c1JlZ2lzdHJ5RmluZGVyCiBmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBQYXRoRmluZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBGaWxlRmluZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VGaWxlTG9hZGVyCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBTb3VyY2VsZXNzRmlsZUxvYWRlcgorZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgRXh0ZW5zaW9uRmlsZUxvYWRlcgorCisKK2RlZiBhbGxfc3VmZml4ZXMoKToKKyAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhbGwgcmVjb2duaXplZCBtb2R1bGUgc3VmZml4ZXMgZm9yIHRoaXMgcHJvY2VzcyIiIgorICAgIHJldHVybiBTT1VSQ0VfU1VGRklYRVMgKyBCWVRFQ09ERV9TVUZGSVhFUyArIEVYVEVOU0lPTl9TVUZGSVhFUwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvX19tYWluX18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlY2M1M2QuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L19fbWFpbl9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotIiIiUnVuIGltcG9ydGxpYidzIHRlc3Qgc3VpdGUuCi0KLVNwZWNpZnlpbmcgdGhlIGBgLS1idWlsdGluYGAgZmxhZyB3aWxsIHJ1biB0ZXN0cywgd2hlcmUgYXBwbGljYWJsZSwgd2l0aAotYnVpbHRpbnMuX19pbXBvcnRfXyBpbnN0ZWFkIG9mIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdXRpbAotaW1wb3J0IG9zLnBhdGgKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBpZiAnX19weWNhY2hlX18nIGluIF9fZmlsZV9fOgotICAgICAgICBwYXJ0cyA9IF9fZmlsZV9fLnNwbGl0KG9zLnBhdGguc2VwKQotICAgICAgICBzdGFydF9kaXIgPSBzZXAuam9pbihwYXJ0c1s6LTJdKQotICAgIGVsc2U6Ci0gICAgICAgIHN0YXJ0X2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICB0b3BfZGlyID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShzdGFydF9kaXIpKQotICAgIHRlc3RfbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgaWYgJy0tYnVpbHRpbicgaW4gc3lzLmFyZ3Y6Ci0gICAgICAgIHV0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKLSAgICBydW5fdW5pdHRlc3QodGVzdF9sb2FkZXIuZGlzY292ZXIoc3RhcnRfZGlyLCB0b3BfbGV2ZWxfZGlyPXRvcF9kaXIpKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvYmVuY2htYXJrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWRlNmM2Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9iZW5jaG1hcmsucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotIiIiQmVuY2htYXJrIHNvbWUgYmFzaWMgaW1wb3J0IHVzZS1jYXNlcy4KLQotVGhlIGFzc3VtcHRpb24gaXMgbWFkZSB0aGF0IHRoaXMgYmVuY2htYXJrIGlzIHJ1biBpbiBhIGZyZXNoIGludGVycHJldGVyIGFuZAotdGh1cyBoYXMgbm8gZXh0ZXJuYWwgY2hhbmdlcyBtYWRlIHRvIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMgaW4gc3lzLgotCi0iIiIKLWZyb20gLiBpbXBvcnQgdXRpbAotZnJvbSAuc291cmNlIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1pbXBvcnQgZGVjaW1hbAotaW1wb3J0IGltcAotaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IG9zCi1pbXBvcnQgcHlfY29tcGlsZQotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWVpdAotCi0KLWRlZiBiZW5jaChuYW1lLCBjbGVhbnVwPWxhbWJkYTogTm9uZSwgKiwgc2Vjb25kcz0xLCByZXBlYXQ9Myk6Ci0gICAgIiIiQmVuY2ggdGhlIGdpdmVuIHN0YXRlbWVudCBhcyBtYW55IHRpbWVzIGFzIG5lY2Vzc2FyeSB1bnRpbCB0b3RhbAotICAgIGV4ZWN1dGlvbnMgdGFrZSBvbmUgc2Vjb25kLiIiIgotICAgIHN0bXQgPSAiX19pbXBvcnRfXyh7IXJ9KSIuZm9ybWF0KG5hbWUpCi0gICAgdGltZXIgPSB0aW1laXQuVGltZXIoc3RtdCkKLSAgICBmb3IgeCBpbiByYW5nZShyZXBlYXQpOgotICAgICAgICB0b3RhbF90aW1lID0gMAotICAgICAgICBjb3VudCA9IDAKLSAgICAgICAgd2hpbGUgdG90YWxfdGltZSA8IHNlY29uZHM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdG90YWxfdGltZSArPSB0aW1lci50aW1laXQoMSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xlYW51cCgpCi0gICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE9uZSBleGVjdXRpb24gdG9vIGZhcgotICAgICAgICAgICAgaWYgdG90YWxfdGltZSA+IHNlY29uZHM6Ci0gICAgICAgICAgICAgICAgY291bnQgLT0gMQotICAgICAgICB5aWVsZCBjb3VudCAvLyBzZWNvbmRzCi0KLWRlZiBmcm9tX2NhY2hlKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIic3lzLm1vZHVsZXMiIiIKLSAgICBuYW1lID0gJzxiZW5jaG1hcmsgaW1wb3J0PicKLSAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQotICAgIG1vZHVsZS5fX2ZpbGVfXyA9ICc8dGVzdD4nCi0gICAgbW9kdWxlLl9fcGFja2FnZV9fID0gJycKLSAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIGJ1aWx0aW5fbW9kKHNlY29uZHMsIHJlcGVhdCk6Ci0gICAgIiIiQnVpbHQtaW4gbW9kdWxlIiIiCi0gICAgbmFtZSA9ICdlcnJubycKLSAgICBpZiBuYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KLSAgICAjIFJlbHlpbmcgb24gYnVpbHQtaW4gaW1wb3J0ZXIgYmVpbmcgaW1wbGljaXQuCi0gICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBsYW1iZGE6IHN5cy5tb2R1bGVzLnBvcChuYW1lKSwgcmVwZWF0PXJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBzb3VyY2Vfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJTb3VyY2Ugdy9vIGJ5dGVjb2RlOiBzaW1wbGUiIiIKLSAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKLSAgICAgICAgIyBDbGVhcnMgb3V0IHN5cy5tb2R1bGVzIGFuZCBwdXRzIGFuIGVudHJ5IGF0IHRoZSBmcm9udCBvZiBzeXMucGF0aC4KLSAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgotICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKLQotCi1kZWYgZGVjaW1hbF93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IGRlY2ltYWwiIiIKLSAgICBuYW1lID0gJ2RlY2ltYWwnCi0gICAgZGVjaW1hbF9ieXRlY29kZSA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShkZWNpbWFsLl9fZmlsZV9fKQotICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlY2ltYWxfYnl0ZWNvZGUpOgotICAgICAgICBvcy51bmxpbmsoZGVjaW1hbF9ieXRlY29kZSkKLSAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIHlpZWxkIHJlc3VsdAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKLQotCi1kZWYgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJTb3VyY2Ugd3JpdGluZyBieXRlY29kZTogc2ltcGxlIiIiCi0gICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKLSAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgIGRlZiBjbGVhbnVwKCk6Ci0gICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKLSAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgY2xlYW51cCwgcmVwZWF0PXJlcGVhdCwgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQotICAgICAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIGRlY2ltYWxfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBkZWNpbWFsIiIiCi0gICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBkZWYgY2xlYW51cCgpOgotICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKLSAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShkZWNpbWFsLl9fZmlsZV9fKSkKLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGNsZWFudXAsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgIHlpZWxkIHJlc3VsdAotCi0KLWRlZiBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKLSAgICAiIiJCeXRlY29kZSB3LyBzb3VyY2U6IHNpbXBsZSIiIgotICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKLSAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6Ci0gICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtYXBwaW5nW25hbWVdKQotICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQotICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHM9c2Vjb25kcyk6Ci0gICAgICAgICAgICB5aWVsZCByZXN1bHQKLQotCi1kZWYgZGVjaW1hbF91c2luZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgotICAgICIiIkJ5dGVjb2RlIHcvIHNvdXJjZTogZGVjaW1hbCIiIgotICAgIG5hbWUgPSAnZGVjaW1hbCcKLSAgICBweV9jb21waWxlLmNvbXBpbGUoZGVjaW1hbC5fX2ZpbGVfXykKLSAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgeWllbGQgcmVzdWx0Ci0KLQotZGVmIG1haW4oaW1wb3J0Xyk6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRfCi0gICAgYmVuY2htYXJrcyA9IChmcm9tX2NhY2hlLCBidWlsdGluX21vZCwKLSAgICAgICAgICAgICAgICAgIHNvdXJjZV91c2luZ19ieXRlY29kZSwgc291cmNlX3dvX2J5dGVjb2RlLAotICAgICAgICAgICAgICAgICAgc291cmNlX3dyaXRpbmdfYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBkZWNpbWFsX3VzaW5nX2J5dGVjb2RlLCBkZWNpbWFsX3dyaXRpbmdfYnl0ZWNvZGUsCi0gICAgICAgICAgICAgICAgICBkZWNpbWFsX3dvX2J5dGVjb2RlLCkKLSAgICBzZWNvbmRzID0gMQotICAgIHNlY29uZHNfcGx1cmFsID0gJ3MnIGlmIHNlY29uZHMgPiAxIGVsc2UgJycKLSAgICByZXBlYXQgPSAzCi0gICAgaGVhZGVyID0gIk1lYXN1cmluZyBpbXBvcnRzL3NlY29uZCBvdmVyIHt9IHNlY29uZHt9LCBiZXN0IG91dCBvZiB7fVxuIgotICAgIHByaW50KGhlYWRlci5mb3JtYXQoc2Vjb25kcywgc2Vjb25kc19wbHVyYWwsIHJlcGVhdCkpCi0gICAgZm9yIGJlbmNobWFyayBpbiBiZW5jaG1hcmtzOgotICAgICAgICBwcmludChiZW5jaG1hcmsuX19kb2NfXywgIlsiLCBlbmQ9JyAnKQotICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2htYXJrKHNlY29uZHM9c2Vjb25kcywgcmVwZWF0PXJlcGVhdCk6Ci0gICAgICAgICAgICByZXN1bHRzLmFwcGVuZChyZXN1bHQpCi0gICAgICAgICAgICBwcmludChyZXN1bHQsIGVuZD0nICcpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgYXNzZXJ0IG5vdCBzeXMuZG9udF93cml0ZV9ieXRlY29kZQotICAgICAgICBwcmludCgiXSIsICJiZXN0IGlzIiwgZm9ybWF0KG1heChyZXN1bHRzKSwgJyxkJykpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgb3B0cGFyc2UKLQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1iJywgJy0tYnVpbHRpbicsIGRlc3Q9J2J1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0idXNlIHRoZSBidWlsdC1pbiBfX2ltcG9ydF9fIikKLSAgICBvcHRpb25zLCBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGlmIGFyZ3M6Ci0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidW5yZWNvZ25pemVkIGFyZ3M6IHt9Ii5mb3JtYXQoYXJncykpCi0gICAgaW1wb3J0XyA9IF9faW1wb3J0X18KLSAgICBpZiBub3Qgb3B0aW9ucy5idWlsdGluOgotICAgICAgICBpbXBvcnRfID0gaW1wb3J0bGliLl9faW1wb3J0X18KLQotICAgIG1haW4oaW1wb3J0XykKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWM1ODQwLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZXh0ZW5zaW9uJywgZGlyZWN0b3J5KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE3ODNkYi4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfbG9hZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBleHRfdXRpbAotZnJvbSAuLiBpbXBvcnQgYWJjCi1mcm9tIC4uIGltcG9ydCB1dGlsCi0KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIExvYWRlclRlc3RzKGFiYy5Mb2FkZXJUZXN0cyk6Ci0KLSAgICAiIiJUZXN0IGxvYWRfbW9kdWxlKCkgZm9yIGV4dGVuc2lvbiBtb2R1bGVzLiIiIgotCi0gICAgZGVmIGxvYWRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lKToKLSAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fRXh0ZW5zaW9uRmlsZUxvYWRlcihleHRfdXRpbC5OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCi0gICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCi0KLSAgICBkZWYgdGVzdF9tb2R1bGUoc2VsZik6Ci0gICAgICAgIHdpdGggdXRpbC51bmNhY2hlKGV4dF91dGlsLk5BTUUpOgotICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIFsoJ19fbmFtZV9fJywgZXh0X3V0aWwuTkFNRSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19maWxlX18nLCBleHRfdXRpbC5GSUxFUEFUSCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19wYWNrYWdlX18nLCAnJyldOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihtb2R1bGUsIGF0dHIpLCB2YWx1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHRfdXRpbC5OQU1FIGluIHN5cy5tb2R1bGVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9kdWxlLl9fbG9hZGVyX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaWxlTG9hZGVyKSkKLQotICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9ucyBhcmUgbm90IGZvdW5kIGluIHBhY2thZ2VzLgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKLSAgICAgICAgIyBFeHRlbnNpb25zIGFyZSBub3QgZm91bmQgaW4gcGFja2FnZXMuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6Ci0gICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQotICAgICAgICAgICAgbW9kdWxlMiA9IHNlbGYubG9hZF9tb2R1bGUoZXh0X3V0aWwuTkFNRSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGUxIGlzIG1vZHVsZTIpCi0KLSAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgotICAgICAgICAjIE5vIGVhc3kgd2F5IHRvIHRyaWdnZXIgYSBmYWlsdXJlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBpbXBvcnQuCi0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgotICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnYXNkZmprbDsnKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KExvYWRlclRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTQ1ZWViLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1kZWYgdGVzdF9zdWl0ZSgpOgotICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZnJvemVuJywgZGlyZWN0b3J5KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdCh0ZXN0X3N1aXRlKCkpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy9fX2luaXRfXy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZGY3NjYxLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Ci1pbXBvcnQgb3MucGF0aAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotZGVmIHRlc3Rfc3VpdGUoKToKLSAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmltcG9ydF8nLCBkaXJlY3RvcnkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KHRlc3Rfc3VpdGUoKSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNzVkNDIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1mcm9tIC4gaW1wb3J0IHV0aWwKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEFQSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCBBUEktc3BlY2lmaWMgZGV0YWlscyBmb3IgX19pbXBvcnRfXyAoZS5nLiByYWlzaW5nIHRoZSByaWdodAotICAgIGV4Y2VwdGlvbiB3aGVuIHBhc3NpbmcgaW4gYW4gaW50IGZvciB0aGUgbW9kdWxlIG5hbWUpLiIiIgotCi0gICAgZGVmIHRlc3RfbmFtZV9yZXF1aXJlc19ycGFyaXRpb24oc2VsZik6Ci0gICAgICAgICMgUmFpc2UgVHlwZUVycm9yIGlmIGEgbm9uLXN0cmluZyBpcyBwYXNzZWQgaW4gZm9yIHRoZSBtb2R1bGUgbmFtZS4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgdXRpbC5pbXBvcnRfKDQyKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KEFQSVRlc3QpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWRjMzIuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWZyb20gLi4gaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgaW1wb3J0bGliCi0KLQotY2xhc3MgUGFyZW50TW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiSW1wb3J0aW5nIGEgc3VibW9kdWxlIHNob3VsZCBpbXBvcnQgdGhlIHBhcmVudCBtb2R1bGVzLiIiIgotCi0gICAgZGVmIHRlc3RfaW1wb3J0X3BhcmVudChzZWxmKToKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3BrZycgaW4gc3lzLm1vZHVsZXMpCi0KLSAgICBkZWYgdGVzdF9iYWRfcGFyZW50KHNlbGYpOgotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cubW9kdWxlJykgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQotCi0gICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRyeSB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG5vbi1wYWNrYWdlIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgJ19fcGF0aF9fJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6Ci0gICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMubm9fc3VibW9kdWxlc19oZXJlJykKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAotICAgIHJ1bl91bml0dGVzdChQYXJlbnRNb2R1bGVUZXN0cykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X3BhdGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYWEyMzEuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9wYXRoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Ci1mcm9tIC4uIGltcG9ydCB1dGlsCi1mcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKLWltcG9ydCB1bml0dGVzdAotCi0KLWNsYXNzIEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgICIiIlRlc3RzIGZvciBQYXRoRmluZGVyLiIiIgotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IE5vbmUgcmV0dXJuZWQgdXBvbiBub3QgZmluZGluZyBhIHN1aXRhYmxlIGZpbmRlci4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpIGlzIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9zeXNfcGF0aChzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGggaXMgdXNlZCB3aGVuICdwYXRoJyBpcyBOb25lLgotICAgICAgICAjIEltcGxpY2l0bHkgdGVzdHMgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyB1c2VkLgotICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKLSAgICAgICAgcGF0aCA9ICc8dGVzdCBwYXRoPicKLSAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCi0gICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9pbXBvcnRlcl9jYWNoZT17cGF0aDogaW1wb3J0ZXJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W3BhdGhdKToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCAncGF0aCcgaXMgdXNlZCB3aGVuIHNldC4KLSAgICAgICAgIyBJbXBsaWNpdGx5IHRlc3RzIHRoYXQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaXMgdXNlZC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e3BhdGg6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgaW1wb3J0ZXIpCi0KLSAgICBkZWYgdGVzdF9wYXRoX2hvb2tzKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aF9ob29rcyBpcyB1c2VkLgotICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSBpcyBzZXQuCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgaG9vayA9IGltcG9ydF91dGlsLm1vY2tfcGF0aF9ob29rKHBhdGgsIGltcG9ydGVyPWltcG9ydGVyKQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaG9va3M9W2hvb2tdKToKLSAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwgW3BhdGhdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxvYWRlciBpcyBpbXBvcnRlcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRoIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW3BhdGhdIGlzIGltcG9ydGVyKQotCi0gICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9oYXNfTm9uZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgaWYgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaGFzIE5vbmUgdGhhdCBOb25lIGlzIHJldHVybmVkLgotICAgICAgICBjbGVhcl9jYWNoZSA9IHtwYXRoOiBOb25lIGZvciBwYXRoIGluIHN5cy5wYXRofQotICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9Y2xlYXJfY2FjaGUpOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhc3luY2hhdCcsICdzeXMnLCAnPHRlc3QgbW9kdWxlPicpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShuYW1lKSBpcyBOb25lKQotCi0gICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9oYXNfTm9uZV9jb250aW51ZXMoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGhhdmluZyBOb25lIGluIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGNhdXNlcyB0aGUgc2VhcmNoIHRvCi0gICAgICAgICMgY29udGludWUuCi0gICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCi0gICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JwotICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKLSAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoPVsnMScsICcyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9pbXBvcnRlcl9jYWNoZT17JzEnOiBOb25lLCAnMic6IGltcG9ydGVyfSk6Ci0gICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotCi0KLQotY2xhc3MgRGVmYXVsdFBhdGhGaW5kZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IGltcG9ydGxpYi5fYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci4iIiIKLQotICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2hvb2tzKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB0aGUgaW1wbGljaXQgcGF0aCBob29rcyBhcmUgdXNlZC4KLSAgICAgICAgYmFkX3BhdGggPSAnPHBhdGg+JwotICAgICAgICBtb2R1bGUgPSAnPG1vZHVsZT4nCi0gICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoYmFkX3BhdGgpCi0gICAgICAgIGV4aXN0aW5nX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgICAgIG5vdGhpbmcgPSBfYm9vdHN0cmFwLl9EZWZhdWx0UGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W2V4aXN0aW5nX3BhdGhdKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3RoaW5nIGlzIE5vbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4aXN0aW5nX3BhdGggaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gaXNpbnN0YW5jZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtleGlzdGluZ19wYXRoXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcC5OdWxsSW1wb3J0ZXIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHQpCi0gICAgICAgICAgICAgICAgbm90aGluZyA9IF9ib290c3RyYXAuX0RlZmF1bHRQYXRoRmluZGVyLmZpbmRfbW9kdWxlKG1vZHVsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg9W2JhZF9wYXRoXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90aGluZyBpcyBOb25lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiYWRfcGF0aCBpbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtiYWRfcGF0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wLk51bGxJbXBvcnRlcikpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5ybWRpcihleGlzdGluZ19wYXRoKQotCi0KLSAgICBkZWYgdGVzdF9wYXRoX2ltcG9ydGVyX2NhY2hlX2hhc19Ob25lKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCB0aGUgZGVmYXVsdCBob29rIGlzIHVzZWQgd2hlbiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZQotICAgICAgICAjIGNvbnRhaW5zIE5vbmUgZm9yIGEgcGF0aC4KLSAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCi0gICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQotICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwotICAgICAgICAjIFhYWCBOb3QgYmxhY2tib3guCi0gICAgICAgIG9yaWdpbmFsX2hvb2sgPSBfYm9vdHN0cmFwLl9ERUZBVUxUX1BBVEhfSE9PSwotICAgICAgICBtb2NrX2hvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhwYXRoLCBpbXBvcnRlcj1pbXBvcnRlcikKLSAgICAgICAgX2Jvb3RzdHJhcC5fREVGQVVMVF9QQVRIX0hPT0sgPSBtb2NrX2hvb2sKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBOb25lfSk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fRGVmYXVsdFBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIGltcG9ydGVyKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgX2Jvb3RzdHJhcC5fREVGQVVMVF9QQVRIX0hPT0sgPSBvcmlnaW5hbF9ob29rCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKLSAgICBydW5fdW5pdHRlc3QoRmluZGVyVGVzdHMsIERlZmF1bHRQYXRoRmluZGVyVGVzdHMpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi9pbXBvcnRsaWIvdGVzdC9yZWdydGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEwM2FlNy4uMDAwMDAwMAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvcmVncnRlc3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0iIiJSdW4gUHl0aG9uJ3Mgc3RhbmRhcmQgdGVzdCBzdWl0ZSB1c2luZyBpbXBvcnRsaWIuX19pbXBvcnRfXy4KLQotVGVzdHMga25vd24gdG8gZmFpbCBiZWNhdXNlIG9mIGFzc3VtcHRpb25zIHRoYXQgaW1wb3J0bGliIChwcm9wZXJseSkKLWludmFsaWRhdGVzIGFyZSBhdXRvbWF0aWNhbGx5IHNraXBwZWQgaWYgdGhlIGVudGlyZSB0ZXN0IHN1aXRlIGlzIHJ1bi4KLU90aGVyd2lzZSBhbGwgY29tbWFuZC1saW5lIG9wdGlvbnMgdmFsaWQgZm9yIHRlc3QucmVncnRlc3QgYXJlIGFsc28gdmFsaWQgZm9yCi10aGlzIHNjcmlwdC4KLQotWFhYIEZBSUxJTkcKLSAgKiB0ZXN0X2ltcG9ydAotICAgIC0gdGVzdF9pbmNvcnJlY3RfY29kZV9uYW1lCi0gICAgICAgIGZpbGUgbmFtZSBkaWZmZXJpbmcgYmV0d2VlbiBfX2ZpbGVfXyBhbmQgY29fZmlsZW5hbWUgKHI2ODM2MCBvbiB0cnVuaykKLSAgICAtIHRlc3RfaW1wb3J0X2J5X2ZpbGVuYW1lCi0gICAgICAgIGV4Y2VwdGlvbiBmb3IgdHJ5aW5nIHRvIGltcG9ydCBieSBmaWxlIG5hbWUgZG9lcyBub3QgbWF0Y2gKLQotIiIiCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1mcm9tIHRlc3QgaW1wb3J0IHJlZ3J0ZXN0Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRsaWIuX19pbXBvcnRfXwotCi0gICAgZXhjbHVkZSA9IFsnLS1leGNsdWRlJywKLSAgICAgICAgICAgICAgICAndGVzdF9mcm96ZW4nLCAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICd0ZXN0X3BrZycsICAjIERvZXMgbm90IGV4cGVjdCBfX2xvYWRlcl9fIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICd0ZXN0X3B5ZG9jJywgIyBEb2VzIG5vdCBleHBlY3QgX19sb2FkZXJfXyBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgXQotCi0gICAgIyBTd2l0Y2hpbmcgb24gLS1leGNsdWRlIGltcGxpZXMgcnVubmluZyBhbGwgdGVzdCBidXQgdGhlIG9uZXMgbGlzdGVkLCBzbwotICAgICMgb25seSB1c2UgaXQgd2hlbiBvbmUgaXMgbm90IHJ1bm5pbmcgYW4gZXhwbGljaXQgdGVzdAotICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKLSAgICAgICAgIyBObyBwcm9ncmFtbWF0aWMgd2F5IHRvIHNwZWNpZnkgdGVzdHMgdG8gZXhjbHVkZQotICAgICAgICBzeXMuYXJndi5leHRlbmQoZXhjbHVkZSkKLQotICAgIHJlZ3J0ZXN0Lm1haW4ocXVpZXQ9VHJ1ZSwgdmVyYm9zZTI9VHJ1ZSkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzRmN2I2Li4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAotZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBQYXRoSG9va1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdCB0aGUgcGF0aCBob29rIGZvciBzb3VyY2UuIiIiCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihfYm9vdHN0cmFwLl9maWxlX3BhdGhfaG9vayhtYXBwaW5nWycucm9vdCddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaW5kX21vZHVsZScpKQotCi0gICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgotICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihfYm9vdHN0cmFwLl9maWxlX3BhdGhfaG9vaygnJyksICdmaW5kX21vZHVsZScpKQotCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KFBhdGhIb29rVGVzdCkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNTE2MjYuLjAwMDAwMDAKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYXBpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotZnJvbSAuIGltcG9ydCB1dGlsCi1pbXBvcnQgaW1wCi1pbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBJbXBvcnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlLiIiIgotCi0gICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKLSAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKLQotICAgIGRlZiB0ZXN0X2Fic29sdXRlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgotICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZS4KLSAgICAgICAgcGtnX25hbWUgPSAncGtnJwotICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQotICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQotCi0gICAgZGVmIHRlc3Rfc2hhbGxvd19yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKLSAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB0aHJvdWdoIGEgcmVsYXRpdmUgaW1wb3J0LgotICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCi0gICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIG1vZHVsZV9uYW1lID0gJ21vZCcKLSAgICAgICAgYWJzb2x1dGVfbmFtZSA9ICd7MH0uezF9Jy5mb3JtYXQocGtnX25hbWUsIG1vZHVsZV9uYW1lKQotICAgICAgICByZWxhdGl2ZV9uYW1lID0gJy57MH0nLmZvcm1hdChtb2R1bGVfbmFtZSkKLSAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6Ci0gICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhJykKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLi5jJywgJ2EuYicpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdhLmMnKQotCi0gICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhfcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUgd2l0aAotICAgICAgICAjIHRoZSAncGFja2FnZScgYXJndW1lbnQgZ2l2ZW4uCi0gICAgICAgIHBrZ19uYW1lID0gJ3BrZycKLSAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKLSAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCi0gICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKLSAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCi0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCi0KLSAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfd29fcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBSZWxhdGl2ZSBpbXBvcnRzIGNhbm5vdCBoYXBwZW4gd2l0aG91dCB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGJlaW5nCi0gICAgICAgICMgc2V0LgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6Ci0gICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLnN1cHBvcnQnKQotCi0KLSAgICBkZWYgdGVzdF9sb2FkZWRfb25jZShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTM1OTE6IE1vZHVsZXMgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIG9uY2Ugd2hlbgotICAgICAgICAjIGluaXRpYWxpemluZyB0aGUgcGFyZW50IHBhY2thZ2UgYXR0ZW1wdHMgdG8gaW1wb3J0IHRoZQotICAgICAgICAjIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQuCi0gICAgICAgIGJfbG9hZF9jb3VudCA9IDAKLSAgICAgICAgZGVmIGxvYWRfYSgpOgotICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCi0gICAgICAgIGRlZiBsb2FkX2IoKToKLSAgICAgICAgICAgIG5vbmxvY2FsIGJfbG9hZF9jb3VudAotICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKLSAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KLSAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgotICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKLSAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCi0KLWRlZiB0ZXN0X21haW4oKToKLSAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Ci0gICAgcnVuX3VuaXR0ZXN0KEltcG9ydE1vZHVsZVRlc3RzKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkgYi9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDI0NDdmLi4wMDAwMDAwCi0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC90ZXN0X3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKLWZyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKLWltcG9ydCBpbXAKLWltcG9ydCBzeXMKLWltcG9ydCB0eXBlcwotaW1wb3J0IHVuaXR0ZXN0Ci0KLQotY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLiIiIgotCi0gICAgZGVmIHJldHVybl9tb2R1bGUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIobGFtYmRhIHNlbGYsIG1vZHVsZTogbW9kdWxlKQotICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG5hbWUpCi0KLSAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIG5hbWUpOgotICAgICAgICBkZWYgdG9fd3JhcChzZWxmLCBtb2R1bGUpOgotICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKLSAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcih0b193cmFwKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmeG4oc2VsZiwgbmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3RfbmV3X21vZHVsZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcwotICAgICAgICAjIGNyZWF0ZWQuCi0gICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJwotICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKLSAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2R1bGVfbmFtZSBpbiBzeXMubW9kdWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG1vZHVsZV9uYW1lKQotCi0gICAgZGVmIHRlc3RfcmVsb2FkKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZXVzZWQgaWYgYWxyZWFkeSBpbiBzeXMubW9kdWxlcy4KLSAgICAgICAgbmFtZSA9ICdhLmIuYycKLSAgICAgICAgbW9kdWxlID0gaW1wLm5ld19tb2R1bGUoJ2EuYi5jJykKLSAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKLSAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCi0gICAgICAgICAgICByZXR1cm5lZF9tb2R1bGUgPSBzZWxmLnJldHVybl9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dXJuZWRfbW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKLQotICAgIGRlZiB0ZXN0X25ld19tb2R1bGVfZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBUZXN0IHRoYXQgYSBtb2R1bGUgaXMgcmVtb3ZlZCBmcm9tIHN5cy5tb2R1bGVzIGlmIGFkZGVkIGJ1dCBhbgotICAgICAgICAjIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0gICAgICAgIG5hbWUgPSAnYS5iLmMnCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBzZWxmLnJhaXNlX2V4Y2VwdGlvbihuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgbm90IGluIHN5cy5tb2R1bGVzKQotCi0gICAgZGVmIHRlc3RfcmVsb2FkX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCi0gICAgICAgIG5hbWUgPSAnYS5iLmMnCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCi0gICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6Ci0gICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQotICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKLQotCi1jbGFzcyBTZXRQYWNrYWdlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgotCi0KLSAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwuc2V0X3BhY2thZ2UuIiIiCi0KLSAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSwgZXhwZWN0KToKLSAgICAgICAgIiIiVmVyaWZ5IHRoZSBtb2R1bGUgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgX19wYWNrYWdlX18gYWZ0ZXIKLSAgICAgICAgcGFzc2luZyB0aHJvdWdoIHNldF9wYWNrYWdlLiIiIgotICAgICAgICBmeG4gPSBsYW1iZGE6IG1vZHVsZQotICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCi0gICAgICAgIHdyYXBwZWQoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgbW9kdWxlLl9fcGFja2FnZV9fKQotCi0gICAgZGVmIHRlc3RfdG9wX2xldmVsKHNlbGYpOgotICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBhIHRvcC1sZXZlbCBtb2R1bGUuCi0gICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgc2V0IHRvIE5vbmUuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2R1bGUnKQotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCi0gICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCi0KLSAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgotICAgICAgICAjIFRlc3Qgc2V0dGluZyBfX3BhY2thZ2VfXyBmb3IgYSBwYWNrYWdlLgotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnJykKLSAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gWyc8cGF0aD4nXQotICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCi0gICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCi0KLSAgICBkZWYgdGVzdF9zdWJtb2R1bGUoc2VsZik6Ci0gICAgICAgICMgVGVzdCBfX3BhY2thZ2VfXyBmb3IgYSBtb2R1bGUgaW4gYSBwYWNrYWdlLgotICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnLm1vZCcpCi0gICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKLQotICAgIGRlZiB0ZXN0X3NldHRpbmdfaWZfbWlzc2luZyhzZWxmKToKLSAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IGlmIGl0IGlzIG1pc3NpbmcuCi0gICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQotICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJyk6Ci0gICAgICAgICAgICBkZWxhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykKLSAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKLQotICAgIGRlZiB0ZXN0X2xlYXZpbmdfYWxvbmUoc2VsZik6Ci0gICAgICAgICMgSWYgX19wYWNrYWdlX18gaXMgc2V0IGFuZCBub3QgTm9uZSB0aGVuIGxlYXZlIGl0IGFsb25lLgotICAgICAgICBmb3IgdmFsdWUgaW4gKFRydWUsIEZhbHNlKToKLSAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQotICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gdmFsdWUKLSAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgdmFsdWUpCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZUZvckxvYWRlclRlc3RzLCBTZXRQYWNrYWdlVGVzdHMpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IDdiNDRmYTEuLjEzMTY0MzcgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKQEAgLTMsMyArMywxOSBAQAogZnJvbSAuX2Jvb3RzdHJhcCBpbXBvcnQgbW9kdWxlX2Zvcl9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNldF9sb2FkZXIKIGZyb20gLl9ib290c3RyYXAgaW1wb3J0IHNldF9wYWNrYWdlCitmcm9tIC5fYm9vdHN0cmFwIGltcG9ydCBfcmVzb2x2ZV9uYW1lCisKKworZGVmIHJlc29sdmVfbmFtZShuYW1lLCBwYWNrYWdlKToKKyAgICAiIiJSZXNvbHZlIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUgdG8gYW4gYWJzb2x1dGUgb25lLiIiIgorICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJy4nKToKKyAgICAgICAgcmV0dXJuIG5hbWUKKyAgICBlbGlmIG5vdCBwYWNrYWdlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd7IXJ9IGlzIG5vdCBhIHJlbGF0aXZlIG5hbWUgJworICAgICAgICAgICAgICAgICAgICAgICAgICcobm8gbGVhZGluZyBkb3QpJy5mb3JtYXQobmFtZSkpCisgICAgbGV2ZWwgPSAwCisgICAgZm9yIGNoYXJhY3RlciBpbiBuYW1lOgorICAgICAgICBpZiBjaGFyYWN0ZXIgIT0gJy4nOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgbGV2ZWwgKz0gMQorICAgIHJldHVybiBfcmVzb2x2ZV9uYW1lKG5hbWVbbGV2ZWw6XSwgcGFja2FnZSwgbGV2ZWwpCmRpZmYgLS1naXQgYS9MaWIvaW5zcGVjdC5weSBiL0xpYi9pbnNwZWN0LnB5CmluZGV4IDIwMzE3NTUuLjg4ZjBlZTIgMTAwNjQ0Ci0tLSBhL0xpYi9pbnNwZWN0LnB5CisrKyBiL0xpYi9pbnNwZWN0LnB5CkBAIC0yMiwyNCArMjIsMjkgQEAKICAgICBnZXRvdXRlcmZyYW1lcygpLCBnZXRpbm5lcmZyYW1lcygpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzCiAgICAgY3VycmVudGZyYW1lKCkgLSBnZXQgdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUKICAgICBzdGFjaygpLCB0cmFjZSgpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzIG9uIHRoZSBzdGFjayBvciBpbiBhIHRyYWNlYmFjaworCisgICAgc2lnbmF0dXJlKCkgLSBnZXQgYSBTaWduYXR1cmUgb2JqZWN0IGZvciB0aGUgY2FsbGFibGUKICIiIgogCiAjIFRoaXMgbW9kdWxlIGlzIGluIHRoZSBwdWJsaWMgZG9tYWluLiAgTm8gd2FycmFudGllcy4KIAotX19hdXRob3JfXyA9ICdLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPicKLV9fZGF0ZV9fID0gJzEgSmFuIDIwMDEnCitfX2F1dGhvcl9fID0gKCdLYS1QaW5nIFllZSA8cGluZ0BsZncub3JnPicsCisgICAgICAgICAgICAgICdZdXJ5IFNlbGl2YW5vdiA8eXNlbGl2YW5vdkBzcHJ5bWl4LmNvbT4nKQogCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCB0eXBlcwotaW1wb3J0IGl0ZXJ0b29scwotaW1wb3J0IHN0cmluZwotaW1wb3J0IHJlCiBpbXBvcnQgaW1wCi1pbXBvcnQgdG9rZW5pemUKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgbGluZWNhY2hlCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHRva2VuaXplCitpbXBvcnQgdHlwZXMKK2ltcG9ydCB3YXJuaW5ncworaW1wb3J0IGZ1bmN0b29scworaW1wb3J0IGJ1aWx0aW5zCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBhdHRyZ2V0dGVyCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlLCBPcmRlcmVkRGljdAogCiAjIENyZWF0ZSBjb25zdGFudHMgZm9yIHRoZSBjb21waWxlciBmbGFncyBpbiBJbmNsdWRlL2NvZGUuaAogIyBXZSB0cnkgdG8gZ2V0IHRoZW0gZnJvbSBkaXMgdG8gYXZvaWQgZHVwbGljYXRpb24sIGJ1dCBmYWxsCkBAIC00MzMsNiArNDM4LDggQEAKIAogZGVmIGdldG1vZHVsZWluZm8ocGF0aCk6CiAgICAgIiIiR2V0IHRoZSBtb2R1bGUgbmFtZSwgc3VmZml4LCBtb2RlLCBhbmQgbW9kdWxlIHR5cGUgZm9yIGEgZ2l2ZW4gZmlsZS4iIiIKKyAgICB3YXJuaW5ncy53YXJuKCdpbnNwZWN0LmdldG1vZHVsZWluZm8oKSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgMikKICAgICBmaWxlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUocGF0aCkKICAgICBzdWZmaXhlcyA9IFsoLWxlbihzdWZmaXgpLCBzdWZmaXgsIG1vZGUsIG10eXBlKQogICAgICAgICAgICAgICAgICAgICBmb3Igc3VmZml4LCBtb2RlLCBtdHlwZSBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCldCkBAIC00NDMsMjAgKzQ1MCwyOSBAQAogCiBkZWYgZ2V0bW9kdWxlbmFtZShwYXRoKToKICAgICAiIiJSZXR1cm4gdGhlIG1vZHVsZSBuYW1lIGZvciBhIGdpdmVuIGZpbGUsIG9yIE5vbmUuIiIiCi0gICAgaW5mbyA9IGdldG1vZHVsZWluZm8ocGF0aCkKLSAgICBpZiBpbmZvOiByZXR1cm4gaW5mb1swXQorICAgIGZuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQorICAgICMgQ2hlY2sgZm9yIHBhdGhzIHRoYXQgbG9vayBsaWtlIGFuIGFjdHVhbCBtb2R1bGUgZmlsZQorICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCBpbiBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpXQorICAgIHN1ZmZpeGVzLnNvcnQoKSAjIHRyeSBsb25nZXN0IHN1ZmZpeGVzIGZpcnN0LCBpbiBjYXNlIHRoZXkgb3ZlcmxhcAorICAgIGZvciBuZWdsZW4sIHN1ZmZpeCBpbiBzdWZmaXhlczoKKyAgICAgICAgaWYgZm5hbWUuZW5kc3dpdGgoc3VmZml4KToKKyAgICAgICAgICAgIHJldHVybiBmbmFtZVs6bmVnbGVuXQorICAgIHJldHVybiBOb25lCiAKIGRlZiBnZXRzb3VyY2VmaWxlKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRoZSBmaWxlbmFtZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGxvY2F0ZSBhbiBvYmplY3QncyBzb3VyY2UuCiAgICAgUmV0dXJuIE5vbmUgaWYgbm8gd2F5IGNhbiBiZSBpZGVudGlmaWVkIHRvIGdldCB0aGUgc291cmNlLgogICAgICIiIgogICAgIGZpbGVuYW1lID0gZ2V0ZmlsZShvYmplY3QpCi0gICAgaWYgZmlsZW5hbWVbLTQ6XS5sb3dlcigpIGluICgnLnB5YycsICcucHlvJyk6Ci0gICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbOi00XSArICcucHknCi0gICAgZm9yIHN1ZmZpeCwgbW9kZSwga2luZCBpbiBpbXAuZ2V0X3N1ZmZpeGVzKCk6Ci0gICAgICAgIGlmICdiJyBpbiBtb2RlIGFuZCBmaWxlbmFtZVstbGVuKHN1ZmZpeCk6XS5sb3dlcigpID09IHN1ZmZpeDoKLSAgICAgICAgICAgICMgTG9va3MgbGlrZSBhIGJpbmFyeSBmaWxlLiAgV2Ugd2FudCB0byBvbmx5IHJldHVybiBhIHRleHQgZmlsZS4KLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgYWxsX2J5dGVjb2RlX3N1ZmZpeGVzID0gaW1wb3J0bGliLm1hY2hpbmVyeS5ERUJVR19CWVRFQ09ERV9TVUZGSVhFU1s6XQorICAgIGFsbF9ieXRlY29kZV9zdWZmaXhlcyArPSBpbXBvcnRsaWIubWFjaGluZXJ5Lk9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFU1s6XQorICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aChzKSBmb3IgcyBpbiBhbGxfYnl0ZWNvZGVfc3VmZml4ZXMpOgorICAgICAgICBmaWxlbmFtZSA9IChvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKVswXSArCisgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTWzBdKQorICAgIGVsaWYgYW55KGZpbGVuYW1lLmVuZHN3aXRoKHMpIGZvciBzIGluCisgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTKToKKyAgICAgICAgcmV0dXJuIE5vbmUKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgIHJldHVybiBmaWxlbmFtZQogICAgICMgb25seSByZXR1cm4gYSBub24tZXhpc3RlbnQgZmlsZW5hbWUgaWYgdGhlIG1vZHVsZSBoYXMgYSBQRVAgMzAyIGxvYWRlcgpAQCAtOTMxLDYgKzk0Nyw0MyBAQAogICAgICAgICBzcGVjcy5hcHBlbmQoZm9ybWF0dmFya3codmFya3cpICsgZm9ybWF0dmFsdWUobG9jYWxzW3Zhcmt3XSkpCiAgICAgcmV0dXJuICcoJyArICcsICcuam9pbihzcGVjcykgKyAnKScKIAorZGVmIF9taXNzaW5nX2FyZ3VtZW50cyhmX25hbWUsIGFyZ25hbWVzLCBwb3MsIHZhbHVlcyk6CisgICAgbmFtZXMgPSBbcmVwcihuYW1lKSBmb3IgbmFtZSBpbiBhcmduYW1lcyBpZiBuYW1lIG5vdCBpbiB2YWx1ZXNdCisgICAgbWlzc2luZyA9IGxlbihuYW1lcykKKyAgICBpZiBtaXNzaW5nID09IDE6CisgICAgICAgIHMgPSBuYW1lc1swXQorICAgIGVsaWYgbWlzc2luZyA9PSAyOgorICAgICAgICBzID0gInt9IGFuZCB7fSIuZm9ybWF0KCpuYW1lcykKKyAgICBlbHNlOgorICAgICAgICB0YWlsID0gIiwge30gYW5kIHt9Ii5mb3JtYXQobmFtZXNbLTI6XSkKKyAgICAgICAgZGVsIG5hbWVzWy0yOl0KKyAgICAgICAgcyA9ICIsICIuam9pbihuYW1lcykgKyB0YWlsCisgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIG1pc3NpbmcgJWkgcmVxdWlyZWQgJXMgYXJndW1lbnQlczogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwgbWlzc2luZywKKyAgICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCIgaWYgcG9zIGVsc2UgImtleXdvcmQtb25seSIsCisgICAgICAgICAgICAgICAgICAgICAgIiIgaWYgbWlzc2luZyA9PSAxIGVsc2UgInMiLCBzKSkKKworZGVmIF90b29fbWFueShmX25hbWUsIGFyZ3MsIGt3b25seSwgdmFyYXJncywgZGVmY291bnQsIGdpdmVuLCB2YWx1ZXMpOgorICAgIGF0bGVhc3QgPSBsZW4oYXJncykgLSBkZWZjb3VudAorICAgIGt3b25seV9naXZlbiA9IGxlbihbYXJnIGZvciBhcmcgaW4ga3dvbmx5IGlmIGFyZyBpbiB2YWx1ZXNdKQorICAgIGlmIHZhcmFyZ3M6CisgICAgICAgIHBsdXJhbCA9IGF0bGVhc3QgIT0gMQorICAgICAgICBzaWcgPSAiYXQgbGVhc3QgJWQiICUgKGF0bGVhc3QsKQorICAgIGVsaWYgZGVmY291bnQ6CisgICAgICAgIHBsdXJhbCA9IFRydWUKKyAgICAgICAgc2lnID0gImZyb20gJWQgdG8gJWQiICUgKGF0bGVhc3QsIGxlbihhcmdzKSkKKyAgICBlbHNlOgorICAgICAgICBwbHVyYWwgPSBsZW4oYXJncykgIT0gMQorICAgICAgICBzaWcgPSBzdHIobGVuKGFyZ3MpKQorICAgIGt3b25seV9zaWcgPSAiIgorICAgIGlmIGt3b25seV9naXZlbjoKKyAgICAgICAgbXNnID0gIiBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgKGFuZCAlZCBrZXl3b3JkLW9ubHkgYXJndW1lbnQlcykiCisgICAgICAgIGt3b25seV9zaWcgPSAobXNnICUgKCJzIiBpZiBnaXZlbiAhPSAxIGVsc2UgIiIsIGt3b25seV9naXZlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiIGlmIGt3b25seV9naXZlbiAhPSAxIGVsc2UgIiIpKQorICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSB0YWtlcyAlcyBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJXMgJXMgZ2l2ZW4iICUKKyAgICAgICAgICAgIChmX25hbWUsIHNpZywgInMiIGlmIHBsdXJhbCBlbHNlICIiLCBnaXZlbiwga3dvbmx5X3NpZywKKyAgICAgICAgICAgICAid2FzIiBpZiBnaXZlbiA9PSAxIGFuZCBub3Qga3dvbmx5X2dpdmVuIGVsc2UgIndlcmUiKSkKKwogZGVmIGdldGNhbGxhcmdzKGZ1bmMsICpwb3NpdGlvbmFsLCAqKm5hbWVkKToKICAgICAiIiJHZXQgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzIHRvIHZhbHVlcy4KIApAQCAtOTQyLDY2ICs5OTUsMTA4IEBACiAgICAgZl9uYW1lID0gZnVuYy5fX25hbWVfXwogICAgIGFyZzJ2YWx1ZSA9IHt9CiAKKwogICAgIGlmIGlzbWV0aG9kKGZ1bmMpIGFuZCBmdW5jLl9fc2VsZl9fIGlzIG5vdCBOb25lOgogICAgICAgICAjIGltcGxpY2l0ICdzZWxmJyAob3IgJ2NscycgZm9yIGNsYXNzbWV0aG9kcykgYXJndW1lbnQKICAgICAgICAgcG9zaXRpb25hbCA9IChmdW5jLl9fc2VsZl9fLCkgKyBwb3NpdGlvbmFsCiAgICAgbnVtX3BvcyA9IGxlbihwb3NpdGlvbmFsKQotICAgIG51bV90b3RhbCA9IG51bV9wb3MgKyBsZW4obmFtZWQpCiAgICAgbnVtX2FyZ3MgPSBsZW4oYXJncykKICAgICBudW1fZGVmYXVsdHMgPSBsZW4oZGVmYXVsdHMpIGlmIGRlZmF1bHRzIGVsc2UgMAotICAgIGZvciBhcmcsIHZhbHVlIGluIHppcChhcmdzLCBwb3NpdGlvbmFsKToKLSAgICAgICAgYXJnMnZhbHVlW2FyZ10gPSB2YWx1ZQotICAgIGlmIHZhcmFyZ3M6Ci0gICAgICAgIGlmIG51bV9wb3MgPiBudW1fYXJnczoKLSAgICAgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9IHBvc2l0aW9uYWxbLShudW1fcG9zLW51bV9hcmdzKTpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhcmcydmFsdWVbdmFyYXJnc10gPSAoKQotICAgIGVsaWYgMCA8IG51bV9hcmdzIDwgbnVtX3BvczoKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcygpIHRha2VzICVzICVkIHBvc2l0aW9uYWwgJXMgKCVkIGdpdmVuKScgJSAoCi0gICAgICAgICAgICBmX25hbWUsICdhdCBtb3N0JyBpZiBkZWZhdWx0cyBlbHNlICdleGFjdGx5JywgbnVtX2FyZ3MsCi0gICAgICAgICAgICAnYXJndW1lbnRzJyBpZiBudW1fYXJncyA+IDEgZWxzZSAnYXJndW1lbnQnLCBudW1fdG90YWwpKQotICAgIGVsaWYgbnVtX2FyZ3MgPT0gMCBhbmQgbnVtX3RvdGFsOgotICAgICAgICBpZiB2YXJrdyBvciBrd29ubHlhcmdzOgotICAgICAgICAgICAgaWYgbnVtX3BvczoKLSAgICAgICAgICAgICAgICAjIFhYWDogV2Ugc2hvdWxkIHVzZSBudW1fcG9zLCBidXQgUHl0aG9uIGFsc28gdXNlcyBudW1fdG90YWw6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcygpIHRha2VzIGV4YWN0bHkgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoJWQgZ2l2ZW4pJyAlIChmX25hbWUsIG51bV90b3RhbCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbiknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZl9uYW1lLCBudW1fdG90YWwpKQogCi0gICAgZm9yIGFyZyBpbiBpdGVydG9vbHMuY2hhaW4oYXJncywga3dvbmx5YXJncyk6Ci0gICAgICAgIGlmIGFyZyBpbiBuYW1lZDoKLSAgICAgICAgICAgIGlmIGFyZyBpbiBhcmcydmFsdWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJyVzJyIgJSAoZl9uYW1lLCBhcmcpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhcmcydmFsdWVbYXJnXSA9IG5hbWVkLnBvcChhcmcpCi0gICAgZm9yIGt3b25seWFyZyBpbiBrd29ubHlhcmdzOgotICAgICAgICBpZiBrd29ubHlhcmcgbm90IGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBhcmcydmFsdWVba3dvbmx5YXJnXSA9IGt3b25seWRlZmF1bHRzW2t3b25seWFyZ10KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIiVzKCkgbmVlZHMga2V5d29yZC1vbmx5IGFyZ3VtZW50ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIGt3b25seWFyZykpCi0gICAgaWYgZGVmYXVsdHM6ICAgICMgZmlsbCBpbiBhbnkgbWlzc2luZyB2YWx1ZXMgd2l0aCB0aGUgZGVmYXVsdHMKLSAgICAgICAgZm9yIGFyZywgdmFsdWUgaW4gemlwKGFyZ3NbLW51bV9kZWZhdWx0czpdLCBkZWZhdWx0cyk6Ci0gICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKLSAgICAgICAgICAgICAgICBhcmcydmFsdWVbYXJnXSA9IHZhbHVlCisgICAgbiA9IG1pbihudW1fcG9zLCBudW1fYXJncykKKyAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgYXJnMnZhbHVlW2FyZ3NbaV1dID0gcG9zaXRpb25hbFtpXQorICAgIGlmIHZhcmFyZ3M6CisgICAgICAgIGFyZzJ2YWx1ZVt2YXJhcmdzXSA9IHR1cGxlKHBvc2l0aW9uYWxbbjpdKQorICAgIHBvc3NpYmxlX2t3YXJncyA9IHNldChhcmdzICsga3dvbmx5YXJncykKICAgICBpZiB2YXJrdzoKLSAgICAgICAgYXJnMnZhbHVlW3Zhcmt3XSA9IG5hbWVkCi0gICAgZWxpZiBuYW1lZDoKLSAgICAgICAgdW5leHBlY3RlZCA9IG5leHQoaXRlcihuYW1lZCkpCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMoKSBnb3QgYW4gdW5leHBlY3RlZCBrZXl3b3JkIGFyZ3VtZW50ICclcyciICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChmX25hbWUsIHVuZXhwZWN0ZWQpKQotICAgIHVuYXNzaWduZWQgPSBudW1fYXJncyAtIGxlbihbYXJnIGZvciBhcmcgaW4gYXJncyBpZiBhcmcgaW4gYXJnMnZhbHVlXSkKLSAgICBpZiB1bmFzc2lnbmVkOgotICAgICAgICBudW1fcmVxdWlyZWQgPSBudW1fYXJncyAtIG51bV9kZWZhdWx0cwotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzKCkgdGFrZXMgJXMgJWQgJXMgKCVkIGdpdmVuKScgJSAoCi0gICAgICAgICAgICBmX25hbWUsICdhdCBsZWFzdCcgaWYgZGVmYXVsdHMgZWxzZSAnZXhhY3RseScsIG51bV9yZXF1aXJlZCwKLSAgICAgICAgICAgICdhcmd1bWVudHMnIGlmIG51bV9yZXF1aXJlZCA+IDEgZWxzZSAnYXJndW1lbnQnLCBudW1fdG90YWwpKQorICAgICAgICBhcmcydmFsdWVbdmFya3ddID0ge30KKyAgICBmb3Iga3csIHZhbHVlIGluIG5hbWVkLml0ZW1zKCk6CisgICAgICAgIGlmIGt3IG5vdCBpbiBwb3NzaWJsZV9rd2FyZ3M6CisgICAgICAgICAgICBpZiBub3QgdmFya3c6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3cpKQorICAgICAgICAgICAgYXJnMnZhbHVlW3Zhcmt3XVtrd10gPSB2YWx1ZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYga3cgaW4gYXJnMnZhbHVlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcygpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICVyIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZfbmFtZSwga3cpKQorICAgICAgICBhcmcydmFsdWVba3ddID0gdmFsdWUKKyAgICBpZiBudW1fcG9zID4gbnVtX2FyZ3MgYW5kIG5vdCB2YXJhcmdzOgorICAgICAgICBfdG9vX21hbnkoZl9uYW1lLCBhcmdzLCBrd29ubHlhcmdzLCB2YXJhcmdzLCBudW1fZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgbnVtX3BvcywgYXJnMnZhbHVlKQorICAgIGlmIG51bV9wb3MgPCBudW1fYXJnczoKKyAgICAgICAgcmVxID0gYXJnc1s6bnVtX2FyZ3MgLSBudW1fZGVmYXVsdHNdCisgICAgICAgIGZvciBhcmcgaW4gcmVxOgorICAgICAgICAgICAgaWYgYXJnIG5vdCBpbiBhcmcydmFsdWU6CisgICAgICAgICAgICAgICAgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwgcmVxLCBUcnVlLCBhcmcydmFsdWUpCisgICAgICAgIGZvciBpLCBhcmcgaW4gZW51bWVyYXRlKGFyZ3NbbnVtX2FyZ3MgLSBudW1fZGVmYXVsdHM6XSk6CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgICAgICBhcmcydmFsdWVbYXJnXSA9IGRlZmF1bHRzW2ldCisgICAgbWlzc2luZyA9IDAKKyAgICBmb3Iga3dhcmcgaW4ga3dvbmx5YXJnczoKKyAgICAgICAgaWYga3dhcmcgbm90IGluIGFyZzJ2YWx1ZToKKyAgICAgICAgICAgIGlmIGt3YXJnIGluIGt3b25seWRlZmF1bHRzOgorICAgICAgICAgICAgICAgIGFyZzJ2YWx1ZVtrd2FyZ10gPSBrd29ubHlkZWZhdWx0c1trd2FyZ10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWlzc2luZyArPSAxCisgICAgaWYgbWlzc2luZzoKKyAgICAgICAgX21pc3NpbmdfYXJndW1lbnRzKGZfbmFtZSwga3dvbmx5YXJncywgRmFsc2UsIGFyZzJ2YWx1ZSkKICAgICByZXR1cm4gYXJnMnZhbHVlCiAKK0Nsb3N1cmVWYXJzID0gbmFtZWR0dXBsZSgnQ2xvc3VyZVZhcnMnLCAnbm9ubG9jYWxzIGdsb2JhbHMgYnVpbHRpbnMgdW5ib3VuZCcpCisKK2RlZiBnZXRjbG9zdXJldmFycyhmdW5jKToKKyAgICAiIiIKKyAgICBHZXQgdGhlIG1hcHBpbmcgb2YgZnJlZSB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCisKKyAgICBSZXR1cm5zIGEgbmFtZWQgdHVwbGUgb2YgZGljdHMgbWFwcGluZyB0aGUgY3VycmVudCBub25sb2NhbCwgZ2xvYmFsCisgICAgYW5kIGJ1aWx0aW4gcmVmZXJlbmNlcyBhcyBzZWVuIGJ5IHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbi4gQSBmaW5hbAorICAgIHNldCBvZiB1bmJvdW5kIG5hbWVzIHRoYXQgY291bGQgbm90IGJlIHJlc29sdmVkIGlzIGFsc28gcHJvdmlkZWQuCisgICAgIiIiCisKKyAgICBpZiBpc21ldGhvZChmdW5jKToKKyAgICAgICAgZnVuYyA9IGZ1bmMuX19mdW5jX18KKworICAgIGlmIG5vdCBpc2Z1bmN0aW9uKGZ1bmMpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIid7IXJ9JyBpcyBub3QgYSBQeXRob24gZnVuY3Rpb24iLmZvcm1hdChmdW5jKSkKKworICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgIyBOb25sb2NhbCByZWZlcmVuY2VzIGFyZSBuYW1lZCBpbiBjb19mcmVldmFycyBhbmQgcmVzb2x2ZWQKKyAgICAjIGJ5IGxvb2tpbmcgdGhlbSB1cCBpbiBfX2Nsb3N1cmVfXyBieSBwb3NpdGlvbmFsIGluZGV4CisgICAgaWYgZnVuYy5fX2Nsb3N1cmVfXyBpcyBOb25lOgorICAgICAgICBub25sb2NhbF92YXJzID0ge30KKyAgICBlbHNlOgorICAgICAgICBub25sb2NhbF92YXJzID0geworICAgICAgICAgICAgdmFyIDogY2VsbC5jZWxsX2NvbnRlbnRzCisgICAgICAgICAgICBmb3IgdmFyLCBjZWxsIGluIHppcChjb2RlLmNvX2ZyZWV2YXJzLCBmdW5jLl9fY2xvc3VyZV9fKQorICAgICAgIH0KKworICAgICMgR2xvYmFsIGFuZCBidWlsdGluIHJlZmVyZW5jZXMgYXJlIG5hbWVkIGluIGNvX25hbWVzIGFuZCByZXNvbHZlZAorICAgICMgYnkgbG9va2luZyB0aGVtIHVwIGluIF9fZ2xvYmFsc19fIG9yIF9fYnVpbHRpbnNfXworICAgIGdsb2JhbF9ucyA9IGZ1bmMuX19nbG9iYWxzX18KKyAgICBidWlsdGluX25zID0gZ2xvYmFsX25zLmdldCgiX19idWlsdGluc19fIiwgYnVpbHRpbnMuX19kaWN0X18pCisgICAgaWYgaXNtb2R1bGUoYnVpbHRpbl9ucyk6CisgICAgICAgIGJ1aWx0aW5fbnMgPSBidWlsdGluX25zLl9fZGljdF9fCisgICAgZ2xvYmFsX3ZhcnMgPSB7fQorICAgIGJ1aWx0aW5fdmFycyA9IHt9CisgICAgdW5ib3VuZF9uYW1lcyA9IHNldCgpCisgICAgZm9yIG5hbWUgaW4gY29kZS5jb19uYW1lczoKKyAgICAgICAgaWYgbmFtZSBpbiAoIk5vbmUiLCAiVHJ1ZSIsICJGYWxzZSIpOgorICAgICAgICAgICAgIyBCZWNhdXNlIHRoZXNlIHVzZWQgdG8gYmUgYnVpbHRpbnMgaW5zdGVhZCBvZiBrZXl3b3JkcywgdGhleQorICAgICAgICAgICAgIyBtYXkgc3RpbGwgc2hvdyB1cCBhcyBuYW1lIHJlZmVyZW5jZXMuIFdlIGlnbm9yZSB0aGVtLgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2xvYmFsX3ZhcnNbbmFtZV0gPSBnbG9iYWxfbnNbbmFtZV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFyc1tuYW1lXSA9IGJ1aWx0aW5fbnNbbmFtZV0KKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICB1bmJvdW5kX25hbWVzLmFkZChuYW1lKQorCisgICAgcmV0dXJuIENsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluX3ZhcnMsIHVuYm91bmRfbmFtZXMpCisKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gc3RhY2sgZnJhbWUgZXh0cmFjdGlvbgogCiBUcmFjZWJhY2sgPSBuYW1lZHR1cGxlKCdUcmFjZWJhY2snLCAnZmlsZW5hbWUgbGluZW5vIGZ1bmN0aW9uIGNvZGVfY29udGV4dCBpbmRleCcpCkBAIC0xMTcxLDYgKzEyNjYsOCBAQAogICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKGF0dHIpCiAKIAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ2VuZXJhdG9yIGludHJvc3BlY3Rpb24KKwogR0VOX0NSRUFURUQgPSAnR0VOX0NSRUFURUQnCiBHRU5fUlVOTklORyA9ICdHRU5fUlVOTklORycKIEdFTl9TVVNQRU5ERUQgPSAnR0VOX1NVU1BFTkRFRCcKQEAgLTExOTIsMyArMTI4OSw3ODUgQEAKICAgICBpZiBnZW5lcmF0b3IuZ2lfZnJhbWUuZl9sYXN0aSA9PSAtMToKICAgICAgICAgcmV0dXJuIEdFTl9DUkVBVEVECiAgICAgcmV0dXJuIEdFTl9TVVNQRU5ERUQKKworCitkZWYgZ2V0Z2VuZXJhdG9ybG9jYWxzKGdlbmVyYXRvcik6CisgICAgIiIiCisgICAgR2V0IHRoZSBtYXBwaW5nIG9mIGdlbmVyYXRvciBsb2NhbCB2YXJpYWJsZXMgdG8gdGhlaXIgY3VycmVudCB2YWx1ZXMuCisKKyAgICBBIGRpY3QgaXMgcmV0dXJuZWQsIHdpdGggdGhlIGtleXMgdGhlIGxvY2FsIHZhcmlhYmxlIG5hbWVzIGFuZCB2YWx1ZXMgdGhlCisgICAgYm91bmQgdmFsdWVzLiIiIgorCisgICAgaWYgbm90IGlzZ2VuZXJhdG9yKGdlbmVyYXRvcik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJ3shcn0nIGlzIG5vdCBhIFB5dGhvbiBnZW5lcmF0b3IiLmZvcm1hdChnZW5lcmF0b3IpKQorCisgICAgZnJhbWUgPSBnZXRhdHRyKGdlbmVyYXRvciwgImdpX2ZyYW1lIiwgTm9uZSkKKyAgICBpZiBmcmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5naV9mcmFtZS5mX2xvY2FscworICAgIGVsc2U6CisgICAgICAgIHJldHVybiB7fQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMgRnVuY3Rpb24gU2lnbmF0dXJlIE9iamVjdCAoUEVQIDM2MikKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitfV3JhcHBlckRlc2NyaXB0b3IgPSB0eXBlKHR5cGUuX19jYWxsX18pCitfTWV0aG9kV3JhcHBlciA9IHR5cGUoYWxsLl9fY2FsbF9fKQorCitfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMgPSAoX1dyYXBwZXJEZXNjcmlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9NZXRob2RXcmFwcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzLkJ1aWx0aW5GdW5jdGlvblR5cGUpCisKKworZGVmIF9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChjbHMsIG1ldGhvZF9uYW1lKToKKyAgICB0cnk6CisgICAgICAgIG1ldGggPSBnZXRhdHRyKGNscywgbWV0aG9kX25hbWUpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICByZXR1cm4KKyAgICBlbHNlOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShtZXRoLCBfTm9uVXNlckRlZmluZWRDYWxsYWJsZXMpOgorICAgICAgICAgICAgIyBPbmNlICdfX3NpZ25hdHVyZV9fJyB3aWxsIGJlIGFkZGVkIHRvICdDJy1sZXZlbAorICAgICAgICAgICAgIyBjYWxsYWJsZXMsIHRoaXMgY2hlY2sgd29uJ3QgYmUgbmVjZXNzYXJ5CisgICAgICAgICAgICByZXR1cm4gbWV0aAorCisKK2RlZiBzaWduYXR1cmUob2JqKToKKyAgICAnJydHZXQgYSBzaWduYXR1cmUgb2JqZWN0IGZvciB0aGUgcGFzc2VkIGNhbGxhYmxlLicnJworCisgICAgaWYgbm90IGNhbGxhYmxlKG9iaik6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QnLmZvcm1hdChvYmopKQorCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1ldGhvZFR5cGUpOgorICAgICAgICAjIEluIHRoaXMgY2FzZSB3ZSBza2lwIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgIyBmdW5jdGlvbiAodXN1YWxseSBgc2VsZmAgb3IgYGNsc2ApLgorICAgICAgICBzaWcgPSBzaWduYXR1cmUob2JqLl9fZnVuY19fKQorICAgICAgICByZXR1cm4gc2lnLnJlcGxhY2UocGFyYW1ldGVycz10dXBsZShzaWcucGFyYW1ldGVycy52YWx1ZXMoKSlbMTpdKQorCisgICAgdHJ5OgorICAgICAgICBzaWcgPSBvYmouX19zaWduYXR1cmVfXworICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGlmIHNpZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzaWcKKworICAgIHRyeToKKyAgICAgICAgIyBXYXMgdGhpcyBmdW5jdGlvbiB3cmFwcGVkIGJ5IGEgZGVjb3JhdG9yPworICAgICAgICB3cmFwcGVkID0gb2JqLl9fd3JhcHBlZF9fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHNpZ25hdHVyZSh3cmFwcGVkKQorCisgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkZ1bmN0aW9uVHlwZSk6CisgICAgICAgIHJldHVybiBTaWduYXR1cmUuZnJvbV9mdW5jdGlvbihvYmopCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgZnVuY3Rvb2xzLnBhcnRpYWwpOgorICAgICAgICBzaWcgPSBzaWduYXR1cmUob2JqLmZ1bmMpCisKKyAgICAgICAgbmV3X3BhcmFtcyA9IE9yZGVyZWREaWN0KHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCkpCisKKyAgICAgICAgcGFydGlhbF9hcmdzID0gb2JqLmFyZ3Mgb3IgKCkKKyAgICAgICAgcGFydGlhbF9rZXl3b3JkcyA9IG9iai5rZXl3b3JkcyBvciB7fQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiYSA9IHNpZy5iaW5kX3BhcnRpYWwoKnBhcnRpYWxfYXJncywgKipwYXJ0aWFsX2tleXdvcmRzKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGV4OgorICAgICAgICAgICAgbXNnID0gJ3BhcnRpYWwgb2JqZWN0IHshcn0gaGFzIGluY29ycmVjdCBhcmd1bWVudHMnLmZvcm1hdChvYmopCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykgZnJvbSBleAorCisgICAgICAgIGZvciBhcmdfbmFtZSwgYXJnX3ZhbHVlIGluIGJhLmFyZ3VtZW50cy5pdGVtcygpOgorICAgICAgICAgICAgcGFyYW0gPSBuZXdfcGFyYW1zW2FyZ19uYW1lXQorICAgICAgICAgICAgaWYgYXJnX25hbWUgaW4gcGFydGlhbF9rZXl3b3JkczoKKyAgICAgICAgICAgICAgICAjIFdlIHNldCBhIG5ldyBkZWZhdWx0IHZhbHVlLCBiZWNhdXNlIHRoZSBmb2xsb3dpbmcgY29kZQorICAgICAgICAgICAgICAgICMgaXMgY29ycmVjdDoKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyAgID4+PiBkZWYgZm9vKGEpOiBwcmludChhKQorICAgICAgICAgICAgICAgICMgICA+Pj4gcHJpbnQocGFydGlhbChwYXJ0aWFsKGZvbywgYT0xMCksIGE9MjApKCkpCisgICAgICAgICAgICAgICAgIyAgIDIwCisgICAgICAgICAgICAgICAgIyAgID4+PiBwcmludChwYXJ0aWFsKHBhcnRpYWwoZm9vLCBhPTEwKSwgYT0yMCkoYT0zMCkpCisgICAgICAgICAgICAgICAgIyAgIDMwCisgICAgICAgICAgICAgICAgIworICAgICAgICAgICAgICAgICMgU28sIHdpdGggJ3BhcnRpYWwnIG9iamVjdHMsIHBhc3NpbmcgYSBrZXl3b3JkIGFyZ3VtZW50IGlzCisgICAgICAgICAgICAgICAgIyBsaWtlIHNldHRpbmcgYSBuZXcgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAgICAjIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFdlIGFsc28gbWFyayB0aGlzIHBhcmFtZXRlciB3aXRoICdfcGFydGlhbF9rd2FyZycKKyAgICAgICAgICAgICAgICAjIGZsYWcuICBMYXRlciwgaW4gJ19iaW5kJywgdGhlICdkZWZhdWx0JyB2YWx1ZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgIyBwYXJhbWV0ZXIgd2lsbCBiZSBhZGRlZCB0byAna3dhcmdzJywgdG8gc2ltdWxhdGUKKyAgICAgICAgICAgICAgICAjIHRoZSAnZnVuY3Rvb2xzLnBhcnRpYWwnIHJlYWwgY2FsbC4KKyAgICAgICAgICAgICAgICBuZXdfcGFyYW1zW2FyZ19uYW1lXSA9IHBhcmFtLnJlcGxhY2UoZGVmYXVsdD1hcmdfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnPVRydWUpCisKKyAgICAgICAgICAgIGVsaWYgKHBhcmFtLmtpbmQgbm90IGluIChfVkFSX0tFWVdPUkQsIF9WQVJfUE9TSVRJT05BTCkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IHBhcmFtLl9wYXJ0aWFsX2t3YXJnKToKKyAgICAgICAgICAgICAgICBuZXdfcGFyYW1zLnBvcChhcmdfbmFtZSkKKworICAgICAgICByZXR1cm4gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zLnZhbHVlcygpKQorCisgICAgc2lnID0gTm9uZQorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgIyBvYmogaXMgYSBjbGFzcyBvciBhIG1ldGFjbGFzcworCisgICAgICAgICMgRmlyc3QsIGxldCdzIHNlZSBpZiBpdCBoYXMgYW4gb3ZlcmxvYWRlZCBfX2NhbGxfXyBkZWZpbmVkCisgICAgICAgICMgaW4gaXRzIG1ldGFjbGFzcworICAgICAgICBjYWxsID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKHR5cGUob2JqKSwgJ19fY2FsbF9fJykKKyAgICAgICAgaWYgY2FsbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShjYWxsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBOb3cgd2UgY2hlY2sgaWYgdGhlICdvYmonIGNsYXNzIGhhcyBhICdfX25ld19fJyBtZXRob2QKKyAgICAgICAgICAgIG5ldyA9IF9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX25ld19fJykKKyAgICAgICAgICAgIGlmIG5ldyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzaWcgPSBzaWduYXR1cmUobmV3KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIEZpbmFsbHksIHdlIHNob3VsZCBoYXZlIGF0IGxlYXN0IF9faW5pdF9fIGltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgaW5pdCA9IF9nZXRfdXNlcl9kZWZpbmVkX21ldGhvZChvYmosICdfX2luaXRfXycpCisgICAgICAgICAgICAgICAgaWYgaW5pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2lnID0gc2lnbmF0dXJlKGluaXQpCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShvYmosIF9Ob25Vc2VyRGVmaW5lZENhbGxhYmxlcyk6CisgICAgICAgICMgQW4gb2JqZWN0IHdpdGggX19jYWxsX18KKyAgICAgICAgIyBXZSBhbHNvIGNoZWNrIHRoYXQgdGhlICdvYmonIGlzIG5vdCBhbiBpbnN0YW5jZSBvZgorICAgICAgICAjIF9XcmFwcGVyRGVzY3JpcHRvciBvciBfTWV0aG9kV3JhcHBlciB0byBhdm9pZAorICAgICAgICAjIGluZmluaXRlIHJlY3Vyc2lvbiAoYW5kIGV2ZW4gcG90ZW50aWFsIHNlZ2ZhdWx0KQorICAgICAgICBjYWxsID0gX2dldF91c2VyX2RlZmluZWRfbWV0aG9kKHR5cGUob2JqKSwgJ19fY2FsbF9fJykKKyAgICAgICAgaWYgY2FsbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNpZyA9IHNpZ25hdHVyZShjYWxsKQorCisgICAgaWYgc2lnIGlzIG5vdCBOb25lOgorICAgICAgICAjIEZvciBjbGFzc2VzIGFuZCBvYmplY3RzIHdlIHNraXAgdGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGVpcgorICAgICAgICAjIF9fY2FsbF9fLCBfX25ld19fLCBvciBfX2luaXRfXyBtZXRob2RzCisgICAgICAgIHJldHVybiBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPXR1cGxlKHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKVsxOl0pCisKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSk6CisgICAgICAgICMgUmFpc2UgYSBuaWNlciBlcnJvciBtZXNzYWdlIGZvciBidWlsdGlucworICAgICAgICBtc2cgPSAnbm8gc2lnbmF0dXJlIGZvdW5kIGZvciBidWlsdGluIGZ1bmN0aW9uIHshcn0nLmZvcm1hdChvYmopCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorCisgICAgcmFpc2UgVmFsdWVFcnJvcignY2FsbGFibGUgeyFyfSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScuZm9ybWF0KG9iaikpCisKKworY2xhc3MgX3ZvaWQ6CisgICAgJycnQSBwcml2YXRlIG1hcmtlciAtIHVzZWQgaW4gUGFyYW1ldGVyICYgU2lnbmF0dXJlJycnCisKKworY2xhc3MgX2VtcHR5OgorICAgIHBhc3MKKworCitjbGFzcyBfUGFyYW1ldGVyS2luZChpbnQpOgorICAgIGRlZiBfX25ld19fKHNlbGYsICphcmdzLCBuYW1lKToKKyAgICAgICAgb2JqID0gaW50Ll9fbmV3X18oc2VsZiwgKmFyZ3MpCisgICAgICAgIG9iai5fbmFtZSA9IG5hbWUKKyAgICAgICAgcmV0dXJuIG9iagorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPF9QYXJhbWV0ZXJLaW5kOiB7IXJ9PicuZm9ybWF0KHNlbGYuX25hbWUpCisKKworX1BPU0lUSU9OQUxfT05MWSAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgwLCBuYW1lPSdQT1NJVElPTkFMX09OTFknKQorX1BPU0lUSU9OQUxfT1JfS0VZV09SRCAgPSBfUGFyYW1ldGVyS2luZCgxLCBuYW1lPSdQT1NJVElPTkFMX09SX0tFWVdPUkQnKQorX1ZBUl9QT1NJVElPTkFMICAgICAgICAgPSBfUGFyYW1ldGVyS2luZCgyLCBuYW1lPSdWQVJfUE9TSVRJT05BTCcpCitfS0VZV09SRF9PTkxZICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDMsIG5hbWU9J0tFWVdPUkRfT05MWScpCitfVkFSX0tFWVdPUkQgICAgICAgICAgICA9IF9QYXJhbWV0ZXJLaW5kKDQsIG5hbWU9J1ZBUl9LRVlXT1JEJykKKworCitjbGFzcyBQYXJhbWV0ZXI6CisgICAgJycnUmVwcmVzZW50cyBhIHBhcmFtZXRlciBpbiBhIGZ1bmN0aW9uIHNpZ25hdHVyZS4KKworICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgorCisgICAgKiBuYW1lIDogc3RyCisgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgYXMgYSBzdHJpbmcuCisgICAgKiBkZWZhdWx0IDogb2JqZWN0CisgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGlmIHNwZWNpZmllZC4gIElmIHRoZQorICAgICAgICBwYXJhbWV0ZXIgaGFzIG5vIGRlZmF1bHQgdmFsdWUsIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQuCisgICAgKiBhbm5vdGF0aW9uCisgICAgICAgIFRoZSBhbm5vdGF0aW9uIGZvciB0aGUgcGFyYW1ldGVyIGlmIHNwZWNpZmllZC4gIElmIHRoZQorICAgICAgICBwYXJhbWV0ZXIgaGFzIG5vIGFubm90YXRpb24sIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBzZXQuCisgICAgKiBraW5kIDogc3RyCisgICAgICAgIERlc2NyaWJlcyBob3cgYXJndW1lbnQgdmFsdWVzIGFyZSBib3VuZCB0byB0aGUgcGFyYW1ldGVyLgorICAgICAgICBQb3NzaWJsZSB2YWx1ZXM6IGBQYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZYCwKKyAgICAgICAgYFBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkRgLCBgUGFyYW1ldGVyLlZBUl9QT1NJVElPTkFMYCwKKyAgICAgICAgYFBhcmFtZXRlci5LRVlXT1JEX09OTFlgLCBgUGFyYW1ldGVyLlZBUl9LRVlXT1JEYC4KKyAgICAnJycKKworICAgIF9fc2xvdHNfXyA9ICgnX25hbWUnLCAnX2tpbmQnLCAnX2RlZmF1bHQnLCAnX2Fubm90YXRpb24nLCAnX3BhcnRpYWxfa3dhcmcnKQorCisgICAgUE9TSVRJT05BTF9PTkxZICAgICAgICAgPSBfUE9TSVRJT05BTF9PTkxZCisgICAgUE9TSVRJT05BTF9PUl9LRVlXT1JEICAgPSBfUE9TSVRJT05BTF9PUl9LRVlXT1JECisgICAgVkFSX1BPU0lUSU9OQUwgICAgICAgICAgPSBfVkFSX1BPU0lUSU9OQUwKKyAgICBLRVlXT1JEX09OTFkgICAgICAgICAgICA9IF9LRVlXT1JEX09OTFkKKyAgICBWQVJfS0VZV09SRCAgICAgICAgICAgICA9IF9WQVJfS0VZV09SRAorCisgICAgZW1wdHkgPSBfZW1wdHkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBraW5kLCAqLCBkZWZhdWx0PV9lbXB0eSwgYW5ub3RhdGlvbj1fZW1wdHksCisgICAgICAgICAgICAgICAgIF9wYXJ0aWFsX2t3YXJnPUZhbHNlKToKKworICAgICAgICBpZiBraW5kIG5vdCBpbiAoX1BPU0lUSU9OQUxfT05MWSwgX1BPU0lUSU9OQUxfT1JfS0VZV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgIF9WQVJfUE9TSVRJT05BTCwgX0tFWVdPUkRfT05MWSwgX1ZBUl9LRVlXT1JEKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgdmFsdWUgZm9yICdQYXJhbWV0ZXIua2luZCcgYXR0cmlidXRlIikKKyAgICAgICAgc2VsZi5fa2luZCA9IGtpbmQKKworICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBpZiBraW5kIGluIChfVkFSX1BPU0lUSU9OQUwsIF9WQVJfS0VZV09SRCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ3t9IHBhcmFtZXRlcnMgY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnLmZvcm1hdChraW5kKQorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICBzZWxmLl9kZWZhdWx0ID0gZGVmYXVsdAorICAgICAgICBzZWxmLl9hbm5vdGF0aW9uID0gYW5ub3RhdGlvbgorCisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIGlmIGtpbmQgIT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJOb25lIGlzIG5vdCBhIHZhbGlkIG5hbWUgZm9yIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVyIikKKyAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lID0gc3RyKG5hbWUpCisgICAgICAgICAgICBpZiBraW5kICE9IF9QT1NJVElPTkFMX09OTFkgYW5kIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICAgICAgICAgIG1zZyA9ICd7IXJ9IGlzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJy5mb3JtYXQobmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisKKyAgICAgICAgc2VsZi5fcGFydGlhbF9rd2FyZyA9IF9wYXJ0aWFsX2t3YXJnCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZWZhdWx0KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZGVmYXVsdAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGFubm90YXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hbm5vdGF0aW9uCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYga2luZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2tpbmQKKworICAgIGRlZiByZXBsYWNlKHNlbGYsICosIG5hbWU9X3ZvaWQsIGtpbmQ9X3ZvaWQsIGFubm90YXRpb249X3ZvaWQsCisgICAgICAgICAgICAgICAgZGVmYXVsdD1fdm9pZCwgX3BhcnRpYWxfa3dhcmc9X3ZvaWQpOgorICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBQYXJhbWV0ZXIuJycnCisKKyAgICAgICAgaWYgbmFtZSBpcyBfdm9pZDoKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9uYW1lCisKKyAgICAgICAgaWYga2luZCBpcyBfdm9pZDoKKyAgICAgICAgICAgIGtpbmQgPSBzZWxmLl9raW5kCisKKyAgICAgICAgaWYgYW5ub3RhdGlvbiBpcyBfdm9pZDoKKyAgICAgICAgICAgIGFubm90YXRpb24gPSBzZWxmLl9hbm5vdGF0aW9uCisKKyAgICAgICAgaWYgZGVmYXVsdCBpcyBfdm9pZDoKKyAgICAgICAgICAgIGRlZmF1bHQgPSBzZWxmLl9kZWZhdWx0CisKKyAgICAgICAgaWYgX3BhcnRpYWxfa3dhcmcgaXMgX3ZvaWQ6CisgICAgICAgICAgICBfcGFydGlhbF9rd2FyZyA9IHNlbGYuX3BhcnRpYWxfa3dhcmcKKworICAgICAgICByZXR1cm4gdHlwZShzZWxmKShuYW1lLCBraW5kLCBkZWZhdWx0PWRlZmF1bHQsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhcnRpYWxfa3dhcmc9X3BhcnRpYWxfa3dhcmcpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAga2luZCA9IHNlbGYua2luZAorCisgICAgICAgIGZvcm1hdHRlZCA9IHNlbGYuX25hbWUKKyAgICAgICAgaWYga2luZCA9PSBfUE9TSVRJT05BTF9PTkxZOgorICAgICAgICAgICAgaWYgZm9ybWF0dGVkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZm9ybWF0dGVkID0gJycKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICc8e30+Jy5mb3JtYXQoZm9ybWF0dGVkKQorCisgICAgICAgICMgQWRkIGFubm90YXRpb24gYW5kIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgaWYgc2VsZi5fYW5ub3RhdGlvbiBpcyBub3QgX2VtcHR5OgorICAgICAgICAgICAgZm9ybWF0dGVkID0gJ3t9Ont9Jy5mb3JtYXQoZm9ybWF0dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0YW5ub3RhdGlvbihzZWxmLl9hbm5vdGF0aW9uKSkKKworICAgICAgICBpZiBzZWxmLl9kZWZhdWx0IGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAne309e30nLmZvcm1hdChmb3JtYXR0ZWQsIHJlcHIoc2VsZi5fZGVmYXVsdCkpCisKKyAgICAgICAgaWYga2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICBmb3JtYXR0ZWQgPSAnKicgKyBmb3JtYXR0ZWQKKyAgICAgICAgZWxpZiBraW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgIGZvcm1hdHRlZCA9ICcqKicgKyBmb3JtYXR0ZWQKKworICAgICAgICByZXR1cm4gZm9ybWF0dGVkCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnPHt9IGF0IHs6I3h9IHshcn0+Jy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQoc2VsZiksIHNlbGYubmFtZSkKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKGlzc3ViY2xhc3Mob3RoZXIuX19jbGFzc19fLCBQYXJhbWV0ZXIpIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX25hbWUgPT0gb3RoZXIuX25hbWUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5fa2luZCA9PSBvdGhlci5fa2luZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLl9kZWZhdWx0ID09IG90aGVyLl9kZWZhdWx0IGFuZAorICAgICAgICAgICAgICAgIHNlbGYuX2Fubm90YXRpb24gPT0gb3RoZXIuX2Fubm90YXRpb24pCisKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9fZXFfXyhvdGhlcikKKworCitjbGFzcyBCb3VuZEFyZ3VtZW50czoKKyAgICAnJydSZXN1bHQgb2YgYFNpZ25hdHVyZS5iaW5kYCBjYWxsLiAgSG9sZHMgdGhlIG1hcHBpbmcgb2YgYXJndW1lbnRzCisgICAgdG8gdGhlIGZ1bmN0aW9uJ3MgcGFyYW1ldGVycy4KKworICAgIEhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzOgorCisgICAgKiBhcmd1bWVudHMgOiBPcmRlcmVkRGljdAorICAgICAgICBBbiBvcmRlcmVkIG11dGFibGUgbWFwcGluZyBvZiBwYXJhbWV0ZXJzJyBuYW1lcyB0byBhcmd1bWVudHMnIHZhbHVlcy4KKyAgICAgICAgRG9lcyBub3QgY29udGFpbiBhcmd1bWVudHMnIGRlZmF1bHQgdmFsdWVzLgorICAgICogc2lnbmF0dXJlIDogU2lnbmF0dXJlCisgICAgICAgIFRoZSBTaWduYXR1cmUgb2JqZWN0IHRoYXQgY3JlYXRlZCB0aGlzIGluc3RhbmNlLgorICAgICogYXJncyA6IHR1cGxlCisgICAgICAgIFR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIHZhbHVlcy4KKyAgICAqIGt3YXJncyA6IGRpY3QKKyAgICAgICAgRGljdCBvZiBrZXl3b3JkIGFyZ3VtZW50cyB2YWx1ZXMuCisgICAgJycnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2lnbmF0dXJlLCBhcmd1bWVudHMpOgorICAgICAgICBzZWxmLmFyZ3VtZW50cyA9IGFyZ3VtZW50cworICAgICAgICBzZWxmLl9zaWduYXR1cmUgPSBzaWduYXR1cmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzaWduYXR1cmUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9zaWduYXR1cmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBhcmdzKHNlbGYpOgorICAgICAgICBhcmdzID0gW10KKyAgICAgICAgZm9yIHBhcmFtX25hbWUsIHBhcmFtIGluIHNlbGYuX3NpZ25hdHVyZS5wYXJhbWV0ZXJzLml0ZW1zKCk6CisgICAgICAgICAgICBpZiAocGFyYW0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLl9wYXJ0aWFsX2t3YXJnKToKKyAgICAgICAgICAgICAgICAjIEtleXdvcmQgYXJndW1lbnRzIG1hcHBlZCBieSAnZnVuY3Rvb2xzLnBhcnRpYWwnCisgICAgICAgICAgICAgICAgIyAoUGFyYW1ldGVyLl9wYXJ0aWFsX2t3YXJnIGlzIFRydWUpIGFyZSBtYXBwZWQKKyAgICAgICAgICAgICAgICAjIGluICdCb3VuZEFyZ3VtZW50cy5rd2FyZ3MnLCBhbG9uZyB3aXRoIFZBUl9LRVlXT1JEICYKKyAgICAgICAgICAgICAgICAjIEtFWVdPUkRfT05MWQorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLmFyZ3VtZW50c1twYXJhbV9uYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICMgV2UncmUgZG9uZSBoZXJlLiBPdGhlciBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAjIHdpbGwgYmUgbWFwcGVkIGluICdCb3VuZEFyZ3VtZW50cy5rd2FyZ3MnCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgICAgICMgKmFyZ3MKKyAgICAgICAgICAgICAgICAgICAgYXJncy5leHRlbmQoYXJnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgcGxhaW4gYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgYXJncy5hcHBlbmQoYXJnKQorCisgICAgICAgIHJldHVybiB0dXBsZShhcmdzKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGt3YXJncyhzZWxmKToKKyAgICAgICAga3dhcmdzID0ge30KKyAgICAgICAga3dhcmdzX3N0YXJ0ZWQgPSBGYWxzZQorICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW0gaW4gc2VsZi5fc2lnbmF0dXJlLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIG5vdCBrd2FyZ3Nfc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uX3BhcnRpYWxfa3dhcmcpOgorICAgICAgICAgICAgICAgICAgICBrd2FyZ3Nfc3RhcnRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbV9uYW1lIG5vdCBpbiBzZWxmLmFyZ3VtZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc19zdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgaWYgbm90IGt3YXJnc19zdGFydGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmcgPSBzZWxmLmFyZ3VtZW50c1twYXJhbV9uYW1lXQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfVkFSX0tFWVdPUkQ6CisgICAgICAgICAgICAgICAgICAgICMgKiprd2FyZ3MKKyAgICAgICAgICAgICAgICAgICAga3dhcmdzLnVwZGF0ZShhcmcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBwbGFpbiBrZXl3b3JkIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgIGt3YXJnc1twYXJhbV9uYW1lXSA9IGFyZworCisgICAgICAgIHJldHVybiBrd2FyZ3MKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gKGlzc3ViY2xhc3Mob3RoZXIuX19jbGFzc19fLCBCb3VuZEFyZ3VtZW50cykgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5zaWduYXR1cmUgPT0gb3RoZXIuc2lnbmF0dXJlIGFuZAorICAgICAgICAgICAgICAgIHNlbGYuYXJndW1lbnRzID09IG90aGVyLmFyZ3VtZW50cykKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKK2NsYXNzIFNpZ25hdHVyZToKKyAgICAnJydBIFNpZ25hdHVyZSBvYmplY3QgcmVwcmVzZW50cyB0aGUgb3ZlcmFsbCBzaWduYXR1cmUgb2YgYSBmdW5jdGlvbi4KKyAgICBJdCBzdG9yZXMgYSBQYXJhbWV0ZXIgb2JqZWN0IGZvciBlYWNoIHBhcmFtZXRlciBhY2NlcHRlZCBieSB0aGUKKyAgICBmdW5jdGlvbiwgYXMgd2VsbCBhcyBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgZnVuY3Rpb24gaXRzZWxmLgorCisgICAgQSBTaWduYXR1cmUgb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIHB1YmxpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzOgorCisgICAgKiBwYXJhbWV0ZXJzIDogT3JkZXJlZERpY3QKKyAgICAgICAgQW4gb3JkZXJlZCBtYXBwaW5nIG9mIHBhcmFtZXRlcnMnIG5hbWVzIHRvIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIFBhcmFtZXRlciBvYmplY3RzIChrZXl3b3JkLW9ubHkgYXJndW1lbnRzIGFyZSBpbiB0aGUgc2FtZSBvcmRlcgorICAgICAgICBhcyBsaXN0ZWQgaW4gYGNvZGUuY29fdmFybmFtZXNgKS4KKyAgICAqIHJldHVybl9hbm5vdGF0aW9uIDogb2JqZWN0CisgICAgICAgIFRoZSBhbm5vdGF0aW9uIGZvciB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIGlmIHNwZWNpZmllZC4KKyAgICAgICAgSWYgdGhlIGZ1bmN0aW9uIGhhcyBubyBhbm5vdGF0aW9uIGZvciBpdHMgcmV0dXJuIHR5cGUsIHRoaXMKKyAgICAgICAgYXR0cmlidXRlIGlzIG5vdCBzZXQuCisgICAgKiBiaW5kKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKKyAgICAgICAgQ3JlYXRlcyBhIG1hcHBpbmcgZnJvbSBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyB0bworICAgICAgICBwYXJhbWV0ZXJzLgorICAgICogYmluZF9wYXJ0aWFsKCphcmdzLCAqKmt3YXJncykgLT4gQm91bmRBcmd1bWVudHMKKyAgICAgICAgQ3JlYXRlcyBhIHBhcnRpYWwgbWFwcGluZyBmcm9tIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzCisgICAgICAgIHRvIHBhcmFtZXRlcnMgKHNpbXVsYXRpbmcgJ2Z1bmN0b29scy5wYXJ0aWFsJyBiZWhhdmlvci4pCisgICAgJycnCisKKyAgICBfX3Nsb3RzX18gPSAoJ19yZXR1cm5fYW5ub3RhdGlvbicsICdfcGFyYW1ldGVycycpCisKKyAgICBfcGFyYW1ldGVyX2NscyA9IFBhcmFtZXRlcgorICAgIF9ib3VuZF9hcmd1bWVudHNfY2xzID0gQm91bmRBcmd1bWVudHMKKworICAgIGVtcHR5ID0gX2VtcHR5CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyYW1ldGVycz1Ob25lLCAqLCByZXR1cm5fYW5ub3RhdGlvbj1fZW1wdHksCisgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPVRydWUpOgorICAgICAgICAnJydDb25zdHJ1Y3RzIFNpZ25hdHVyZSBmcm9tIHRoZSBnaXZlbiBsaXN0IG9mIFBhcmFtZXRlcgorICAgICAgICBvYmplY3RzIGFuZCAncmV0dXJuX2Fubm90YXRpb24nLiAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuCisgICAgICAgICcnJworCisgICAgICAgIGlmIHBhcmFtZXRlcnMgaXMgTm9uZToKKyAgICAgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fOgorICAgICAgICAgICAgICAgIHBhcmFtcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgICAgICAgICB0b3Bfa2luZCA9IF9QT1NJVElPTkFMX09OTFkKKworICAgICAgICAgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShwYXJhbWV0ZXJzKToKKyAgICAgICAgICAgICAgICAgICAga2luZCA9IHBhcmFtLmtpbmQKKyAgICAgICAgICAgICAgICAgICAgaWYga2luZCA8IHRvcF9raW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3dyb25nIHBhcmFtZXRlciBvcmRlcjoge30gYmVmb3JlIHt9JworICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmZvcm1hdCh0b3Bfa2luZCwgcGFyYW0ua2luZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgdG9wX2tpbmQgPSBraW5kCisKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHBhcmFtLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHN0cihpZHgpCisgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbSA9IHBhcmFtLnJlcGxhY2UobmFtZT1uYW1lKQorCisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gcGFyYW1zOgorICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ2R1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZTogeyFyfScuZm9ybWF0KG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZykKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1zW25hbWVdID0gcGFyYW0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcGFyYW1zID0gT3JkZXJlZERpY3QoKChwYXJhbS5uYW1lLCBwYXJhbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwYXJhbSBpbiBwYXJhbWV0ZXJzKSkKKworICAgICAgICBzZWxmLl9wYXJhbWV0ZXJzID0gdHlwZXMuTWFwcGluZ1Byb3h5VHlwZShwYXJhbXMpCisgICAgICAgIHNlbGYuX3JldHVybl9hbm5vdGF0aW9uID0gcmV0dXJuX2Fubm90YXRpb24KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tX2Z1bmN0aW9uKGNscywgZnVuYyk6CisgICAgICAgICcnJ0NvbnN0cnVjdHMgU2lnbmF0dXJlIGZvciB0aGUgZ2l2ZW4gcHl0aG9uIGZ1bmN0aW9uJycnCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZnVuYywgdHlwZXMuRnVuY3Rpb25UeXBlKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigneyFyfSBpcyBub3QgYSBQeXRob24gZnVuY3Rpb24nLmZvcm1hdChmdW5jKSkKKworICAgICAgICBQYXJhbWV0ZXIgPSBjbHMuX3BhcmFtZXRlcl9jbHMKKworICAgICAgICAjIFBhcmFtZXRlciBpbmZvcm1hdGlvbi4KKyAgICAgICAgZnVuY19jb2RlID0gZnVuYy5fX2NvZGVfXworICAgICAgICBwb3NfY291bnQgPSBmdW5jX2NvZGUuY29fYXJnY291bnQKKyAgICAgICAgYXJnX25hbWVzID0gZnVuY19jb2RlLmNvX3Zhcm5hbWVzCisgICAgICAgIHBvc2l0aW9uYWwgPSB0dXBsZShhcmdfbmFtZXNbOnBvc19jb3VudF0pCisgICAgICAgIGtleXdvcmRfb25seV9jb3VudCA9IGZ1bmNfY29kZS5jb19rd29ubHlhcmdjb3VudAorICAgICAgICBrZXl3b3JkX29ubHkgPSBhcmdfbmFtZXNbcG9zX2NvdW50Oihwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQpXQorICAgICAgICBhbm5vdGF0aW9ucyA9IGZ1bmMuX19hbm5vdGF0aW9uc19fCisgICAgICAgIGRlZmF1bHRzID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICAgICAga3dkZWZhdWx0cyA9IGZ1bmMuX19rd2RlZmF1bHRzX18KKworICAgICAgICBpZiBkZWZhdWx0czoKKyAgICAgICAgICAgIHBvc19kZWZhdWx0X2NvdW50ID0gbGVuKGRlZmF1bHRzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcG9zX2RlZmF1bHRfY291bnQgPSAwCisKKyAgICAgICAgcGFyYW1ldGVycyA9IFtdCisKKyAgICAgICAgIyBOb24ta2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgdy9vIGRlZmF1bHRzLgorICAgICAgICBub25fZGVmYXVsdF9jb3VudCA9IHBvc19jb3VudCAtIHBvc19kZWZhdWx0X2NvdW50CisgICAgICAgIGZvciBuYW1lIGluIHBvc2l0aW9uYWxbOm5vbl9kZWZhdWx0X2NvdW50XToKKyAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9QT1NJVElPTkFMX09SX0tFWVdPUkQpKQorCisgICAgICAgICMgLi4uIHcvIGRlZmF1bHRzLgorICAgICAgICBmb3Igb2Zmc2V0LCBuYW1lIGluIGVudW1lcmF0ZShwb3NpdGlvbmFsW25vbl9kZWZhdWx0X2NvdW50Ol0pOgorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1BPU0lUSU9OQUxfT1JfS0VZV09SRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWRlZmF1bHRzW29mZnNldF0pKQorCisgICAgICAgICMgKmFyZ3MKKyAgICAgICAgaWYgZnVuY19jb2RlLmNvX2ZsYWdzICYgMHgwNDoKKyAgICAgICAgICAgIG5hbWUgPSBhcmdfbmFtZXNbcG9zX2NvdW50ICsga2V5d29yZF9vbmx5X2NvdW50XQorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9QT1NJVElPTkFMKSkKKworICAgICAgICAjIEtleXdvcmQtb25seSBwYXJhbWV0ZXJzLgorICAgICAgICBmb3IgbmFtZSBpbiBrZXl3b3JkX29ubHk6CisgICAgICAgICAgICBkZWZhdWx0ID0gX2VtcHR5CisgICAgICAgICAgICBpZiBrd2RlZmF1bHRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGRlZmF1bHQgPSBrd2RlZmF1bHRzLmdldChuYW1lLCBfZW1wdHkpCisKKyAgICAgICAgICAgIGFubm90YXRpb24gPSBhbm5vdGF0aW9ucy5nZXQobmFtZSwgX2VtcHR5KQorICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoUGFyYW1ldGVyKG5hbWUsIGFubm90YXRpb249YW5ub3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPV9LRVlXT1JEX09OTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KSkKKyAgICAgICAgIyAqKmt3YXJncworICAgICAgICBpZiBmdW5jX2NvZGUuY29fZmxhZ3MgJiAweDA4OgorICAgICAgICAgICAgaW5kZXggPSBwb3NfY291bnQgKyBrZXl3b3JkX29ubHlfY291bnQKKyAgICAgICAgICAgIGlmIGZ1bmNfY29kZS5jb19mbGFncyAmIDB4MDQ6CisgICAgICAgICAgICAgICAgaW5kZXggKz0gMQorCisgICAgICAgICAgICBuYW1lID0gYXJnX25hbWVzW2luZGV4XQorICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb25zLmdldChuYW1lLCBfZW1wdHkpCisgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChQYXJhbWV0ZXIobmFtZSwgYW5ub3RhdGlvbj1hbm5vdGF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9X1ZBUl9LRVlXT1JEKSkKKworICAgICAgICByZXR1cm4gY2xzKHBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgcmV0dXJuX2Fubm90YXRpb249YW5ub3RhdGlvbnMuZ2V0KCdyZXR1cm4nLCBfZW1wdHkpLAorICAgICAgICAgICAgICAgICAgIF9fdmFsaWRhdGVfcGFyYW1ldGVyc19fPUZhbHNlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmV0dXJuX2Fubm90YXRpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9yZXR1cm5fYW5ub3RhdGlvbgorCisgICAgZGVmIHJlcGxhY2Uoc2VsZiwgKiwgcGFyYW1ldGVycz1fdm9pZCwgcmV0dXJuX2Fubm90YXRpb249X3ZvaWQpOgorICAgICAgICAnJydDcmVhdGVzIGEgY3VzdG9taXplZCBjb3B5IG9mIHRoZSBTaWduYXR1cmUuCisgICAgICAgIFBhc3MgJ3BhcmFtZXRlcnMnIGFuZC9vciAncmV0dXJuX2Fubm90YXRpb24nIGFyZ3VtZW50cworICAgICAgICB0byBvdmVycmlkZSB0aGVtIGluIHRoZSBuZXcgY29weS4KKyAgICAgICAgJycnCisKKyAgICAgICAgaWYgcGFyYW1ldGVycyBpcyBfdm9pZDoKKyAgICAgICAgICAgIHBhcmFtZXRlcnMgPSBzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkKKworICAgICAgICBpZiByZXR1cm5fYW5ub3RhdGlvbiBpcyBfdm9pZDoKKyAgICAgICAgICAgIHJldHVybl9hbm5vdGF0aW9uID0gc2VsZi5fcmV0dXJuX2Fubm90YXRpb24KKworICAgICAgICByZXR1cm4gdHlwZShzZWxmKShwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fYW5ub3RhdGlvbj1yZXR1cm5fYW5ub3RhdGlvbikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiAobm90IGlzc3ViY2xhc3ModHlwZShvdGhlciksIFNpZ25hdHVyZSkgb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5fYW5ub3RhdGlvbiAhPSBvdGhlci5yZXR1cm5fYW5ub3RhdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICBsZW4oc2VsZi5wYXJhbWV0ZXJzKSAhPSBsZW4ob3RoZXIucGFyYW1ldGVycykpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgb3RoZXJfcG9zaXRpb25zID0ge3BhcmFtOiBpZHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShvdGhlci5wYXJhbWV0ZXJzLmtleXMoKSl9CisKKyAgICAgICAgZm9yIGlkeCwgKHBhcmFtX25hbWUsIHBhcmFtKSBpbiBlbnVtZXJhdGUoc2VsZi5wYXJhbWV0ZXJzLml0ZW1zKCkpOgorICAgICAgICAgICAgaWYgcGFyYW0ua2luZCA9PSBfS0VZV09SRF9PTkxZOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfcGFyYW0gPSBvdGhlci5wYXJhbWV0ZXJzW3BhcmFtX25hbWVdCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbSAhPSBvdGhlcl9wYXJhbToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG90aGVyX2lkeCA9IG90aGVyX3Bvc2l0aW9uc1twYXJhbV9uYW1lXQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCAhPSBvdGhlcl9pZHggb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtICE9IG90aGVyLnBhcmFtZXRlcnNbcGFyYW1fbmFtZV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisgICAgZGVmIF9iaW5kKHNlbGYsIGFyZ3MsIGt3YXJncywgKiwgcGFydGlhbD1GYWxzZSk6CisgICAgICAgICcnJ1ByaXZhdGUgbWV0aG9kLiAgRG9uJ3QgdXNlIGRpcmVjdGx5LicnJworCisgICAgICAgIGFyZ3VtZW50cyA9IE9yZGVyZWREaWN0KCkKKworICAgICAgICBwYXJhbWV0ZXJzID0gaXRlcihzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkpCisgICAgICAgIHBhcmFtZXRlcnNfZXggPSAoKQorICAgICAgICBhcmdfdmFscyA9IGl0ZXIoYXJncykKKworICAgICAgICBpZiBwYXJ0aWFsOgorICAgICAgICAgICAgIyBTdXBwb3J0IGZvciBiaW5kaW5nIGFyZ3VtZW50cyB0byAnZnVuY3Rvb2xzLnBhcnRpYWwnIG9iamVjdHMuCisgICAgICAgICAgICAjIFNlZSAnZnVuY3Rvb2xzLnBhcnRpYWwnIGNhc2UgaW4gJ3NpZ25hdHVyZSgpJyBpbXBsZW1lbnRhdGlvbgorICAgICAgICAgICAgIyBmb3IgZGV0YWlscy4KKyAgICAgICAgICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbSBpbiBzZWxmLnBhcmFtZXRlcnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0uX3BhcnRpYWxfa3dhcmcgYW5kIHBhcmFtX25hbWUgbm90IGluIGt3YXJncyk6CisgICAgICAgICAgICAgICAgICAgICMgU2ltdWxhdGluZyAnZnVuY3Rvb2xzLnBhcnRpYWwnIGJlaGF2aW9yCisgICAgICAgICAgICAgICAgICAgIGt3YXJnc1twYXJhbV9uYW1lXSA9IHBhcmFtLmRlZmF1bHQKKworICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgIyBMZXQncyBpdGVyYXRlIHRocm91Z2ggdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRzIGFuZCBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAjIHBhcmFtZXRlcnMKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhcmdfdmFsID0gbmV4dChhcmdfdmFscykKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICMgTm8gbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cworICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGFyYW0gPSBuZXh0KHBhcmFtZXRlcnMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgICMgTm8gbW9yZSBwYXJhbWV0ZXJzLiBUaGF0J3MgaXQuIEp1c3QgbmVlZCB0byBjaGVjayB0aGF0CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSBubyBga3dhcmdzYCBhZnRlciB0aGlzIHdoaWxlIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhhdCdzIE9LLCBqdXN0IGVtcHR5ICphcmdzLiAgTGV0J3Mgc3RhcnQgcGFyc2luZworICAgICAgICAgICAgICAgICAgICAgICAgIyBrd2FyZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGVsaWYgcGFyYW0ubmFtZSBpbiBrd2FyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9QT1NJVElPTkFMX09OTFk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3thcmchcn0gcGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSwgJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1dCB3YXMgcGFzc2VkIGFzIGEga2V5d29yZCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbGlmIChwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRCBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0uZGVmYXVsdCBpcyBub3QgX2VtcHR5KToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhhdCdzIGZpbmUgdG9vIC0gd2UgaGF2ZSBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyLiAgU28sIGxldHMgc3RhcnQgcGFyc2luZyBga3dhcmdzYCwgc3RhcnRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aCB0aGUgY3VycmVudCBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnNfZXggPSAocGFyYW0sKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHBhcnRpYWw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyc19leCA9IChwYXJhbSwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gJ3thcmchcn0gcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cpIGZyb20gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IHRvIHByb2Nlc3MKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gbmV4dChwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykgZnJvbSBOb25lCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW0ua2luZCBpbiAoX1ZBUl9LRVlXT1JELCBfS0VZV09SRF9PTkxZKToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgTG9va3MgbGlrZSB3ZSBoYXZlIG5vIHBhcmFtZXRlciBmb3IgdGhpcyBwb3NpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJykKKworICAgICAgICAgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfUE9TSVRJT05BTDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBhbiAnKmFyZ3MnLWxpa2UgYXJndW1lbnQsIGxldCdzIGZpbGwgaXQgd2l0aAorICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgcG9zaXRpb25hbCBhcmd1bWVudHMgd2UgaGF2ZSBsZWZ0IGFuZCBtb3ZlIG9uIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBuZXh0IHBoYXNlCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbYXJnX3ZhbF0KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcy5leHRlbmQoYXJnX3ZhbHMpCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW0ubmFtZV0gPSB0dXBsZSh2YWx1ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtLm5hbWUgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAne2FyZyFyfScuZm9ybWF0KGFyZz1wYXJhbS5uYW1lKSkKKworICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW0ubmFtZV0gPSBhcmdfdmFsCisKKyAgICAgICAgIyBOb3csIHdlIGl0ZXJhdGUgdGhyb3VnaCB0aGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgdG8gcHJvY2VzcworICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzCisgICAgICAgIGt3YXJnc19wYXJhbSA9IE5vbmUKKyAgICAgICAgZm9yIHBhcmFtIGluIGl0ZXJ0b29scy5jaGFpbihwYXJhbWV0ZXJzX2V4LCBwYXJhbWV0ZXJzKToKKyAgICAgICAgICAgIGlmIHBhcmFtLmtpbmQgPT0gX1BPU0lUSU9OQUxfT05MWToKKyAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBpbiBjYXNlIG9mIGEgcHJvcGVybHkgYnVpbHQKKyAgICAgICAgICAgICAgICAjIFNpZ25hdHVyZSBvYmplY3QgKGJ1dCBsZXQncyBoYXZlIHRoaXMgY2hlY2sgaGVyZQorICAgICAgICAgICAgICAgICMgdG8gZW5zdXJlIGNvcnJlY3QgYmVoYXZpb3VyIGp1c3QgaW4gY2FzZSkKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3thcmchcn0gcGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnV0IHdhcyBwYXNzZWQgYXMgYSBrZXl3b3JkJy4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtLm5hbWUpKQorCisgICAgICAgICAgICBpZiBwYXJhbS5raW5kID09IF9WQVJfS0VZV09SRDoKKyAgICAgICAgICAgICAgICAjIE1lbW9yaXplIHRoYXQgd2UgaGF2ZSBhICcqKmt3YXJncyctbGlrZSBwYXJhbWV0ZXIKKyAgICAgICAgICAgICAgICBrd2FyZ3NfcGFyYW0gPSBwYXJhbQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHBhcmFtX25hbWUgPSBwYXJhbS5uYW1lCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYXJnX3ZhbCA9IGt3YXJncy5wb3AocGFyYW1fbmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgbm8gdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyLiAgSXQncyBmaW5lIHRob3VnaCwKKyAgICAgICAgICAgICAgICAjIGlmIGl0IGhhcyBhIGRlZmF1bHQgdmFsdWUsIG9yIGl0IGlzIGFuICcqYXJncyctbGlrZQorICAgICAgICAgICAgICAgICMgcGFyYW1ldGVyLCBsZWZ0IGFsb25lIGJ5IHRoZSBwcm9jZXNzaW5nIG9mIHBvc2l0aW9uYWwKKyAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cy4KKyAgICAgICAgICAgICAgICBpZiAobm90IHBhcnRpYWwgYW5kIHBhcmFtLmtpbmQgIT0gX1ZBUl9QT1NJVElPTkFMIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLmRlZmF1bHQgaXMgX2VtcHR5KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd7YXJnIXJ9IHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUnLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQoYXJnPXBhcmFtX25hbWUpKSBmcm9tIE5vbmUKKworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmd1bWVudHNbcGFyYW1fbmFtZV0gPSBhcmdfdmFsCisKKyAgICAgICAgaWYga3dhcmdzOgorICAgICAgICAgICAgaWYga3dhcmdzX3BhcmFtIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgUHJvY2VzcyBvdXIgJyoqa3dhcmdzJy1saWtlIHBhcmFtZXRlcgorICAgICAgICAgICAgICAgIGFyZ3VtZW50c1trd2FyZ3NfcGFyYW0ubmFtZV0gPSBrd2FyZ3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JvdW5kX2FyZ3VtZW50c19jbHMoc2VsZiwgYXJndW1lbnRzKQorCisgICAgZGVmIGJpbmQoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgJycnR2V0IGEgQm91bmRBcmd1bWVudHMgb2JqZWN0LCB0aGF0IG1hcHMgdGhlIHBhc3NlZCBgYXJnc2AKKyAgICAgICAgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4gIFJhaXNlcyBgVHlwZUVycm9yYAorICAgICAgICBpZiB0aGUgcGFzc2VkIGFyZ3VtZW50cyBjYW4gbm90IGJlIGJvdW5kLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JpbmQoYXJncywga3dhcmdzKQorCisgICAgZGVmIGJpbmRfcGFydGlhbChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAnJydHZXQgYSBCb3VuZEFyZ3VtZW50cyBvYmplY3QsIHRoYXQgcGFydGlhbGx5IG1hcHMgdGhlCisgICAgICAgIHBhc3NlZCBgYXJnc2AgYW5kIGBrd2FyZ3NgIHRvIHRoZSBmdW5jdGlvbidzIHNpZ25hdHVyZS4KKyAgICAgICAgUmFpc2VzIGBUeXBlRXJyb3JgIGlmIHRoZSBwYXNzZWQgYXJndW1lbnRzIGNhbiBub3QgYmUgYm91bmQuCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5fYmluZChhcmdzLCBrd2FyZ3MsIHBhcnRpYWw9VHJ1ZSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICByZW5kZXJfa3dfb25seV9zZXBhcmF0b3IgPSBUcnVlCisgICAgICAgIGZvciBpZHgsIHBhcmFtIGluIGVudW1lcmF0ZShzZWxmLnBhcmFtZXRlcnMudmFsdWVzKCkpOgorICAgICAgICAgICAgZm9ybWF0dGVkID0gc3RyKHBhcmFtKQorCisgICAgICAgICAgICBraW5kID0gcGFyYW0ua2luZAorICAgICAgICAgICAgaWYga2luZCA9PSBfVkFSX1BPU0lUSU9OQUw6CisgICAgICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhbiAnKmFyZ3MnLWxpa2UgcGFyYW1ldGVyLCBzbyB3ZSB3b24ndCBuZWVkCisgICAgICAgICAgICAgICAgIyBhICcqJyB0byBzZXBhcmF0ZSBrZXl3b3JkLW9ubHkgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgcmVuZGVyX2t3X29ubHlfc2VwYXJhdG9yID0gRmFsc2UKKyAgICAgICAgICAgIGVsaWYga2luZCA9PSBfS0VZV09SRF9PTkxZIGFuZCByZW5kZXJfa3dfb25seV9zZXBhcmF0b3I6CisgICAgICAgICAgICAgICAgIyBXZSBoYXZlIGEga2V5d29yZC1vbmx5IHBhcmFtZXRlciB0byByZW5kZXIgYW5kIHdlIGhhdmVuJ3QKKyAgICAgICAgICAgICAgICAjIHJlbmRlcmVkIGFuICcqYXJncyctbGlrZSBwYXJhbWV0ZXIgYmVmb3JlLCBzbyBhZGQgYSAnKicKKyAgICAgICAgICAgICAgICAjIHNlcGFyYXRvciB0byB0aGUgcGFyYW1ldGVycyBsaXN0ICgiZm9vKGFyZzEsICosIGFyZzIpIiBjYXNlKQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyonKQorICAgICAgICAgICAgICAgICMgVGhpcyBjb25kaXRpb24gc2hvdWxkIGJlIG9ubHkgdHJpZ2dlcmVkIG9uY2UsIHNvCisgICAgICAgICAgICAgICAgIyByZXNldCB0aGUgZmxhZworICAgICAgICAgICAgICAgIHJlbmRlcl9rd19vbmx5X3NlcGFyYXRvciA9IEZhbHNlCisKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZm9ybWF0dGVkKQorCisgICAgICAgIHJlbmRlcmVkID0gJyh7fSknLmZvcm1hdCgnLCAnLmpvaW4ocmVzdWx0KSkKKworICAgICAgICBpZiBzZWxmLnJldHVybl9hbm5vdGF0aW9uIGlzIG5vdCBfZW1wdHk6CisgICAgICAgICAgICBhbm5vID0gZm9ybWF0YW5ub3RhdGlvbihzZWxmLnJldHVybl9hbm5vdGF0aW9uKQorICAgICAgICAgICAgcmVuZGVyZWQgKz0gJyAtPiB7fScuZm9ybWF0KGFubm8pCisKKyAgICAgICAgcmV0dXJuIHJlbmRlcmVkCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggYTU5YTc1YS4uY2ZiNzBhYyAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtNTgsNiArNTgsOSBAQAogCiBPcGVuV3JhcHBlciA9IF9pby5vcGVuICMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBfcHlpbwogCisjIFByZXRlbmQgdGhpcyBleGNlcHRpb24gd2FzIGNyZWF0ZWQgaGVyZS4KK1Vuc3VwcG9ydGVkT3BlcmF0aW9uLl9fbW9kdWxlX18gPSAiaW8iCisKICMgZm9yIHNlZWsoKQogU0VFS19TRVQgPSAwCiBTRUVLX0NVUiA9IDEKZGlmZiAtLWdpdCBhL0xpYi9pcGFkZHJlc3MucHkgYi9MaWIvaXBhZGRyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMmU0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaXBhZGRyZXNzLnB5CkBAIC0wLDAgKzEsMjA5NCBAQAorIyBDb3B5cmlnaHQgMjAwNyBHb29nbGUgSW5jLgorIyAgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgorCisiIiJBIGZhc3QsIGxpZ2h0d2VpZ2h0IElQdjQvSVB2NiBtYW5pcHVsYXRpb24gbGlicmFyeSBpbiBQeXRob24uCisKK1RoaXMgbGlicmFyeSBpcyB1c2VkIHRvIGNyZWF0ZS9wb2tlL21hbmlwdWxhdGUgSVB2NCBhbmQgSVB2NiBhZGRyZXNzZXMKK2FuZCBuZXR3b3Jrcy4KKworIiIiCisKK19fdmVyc2lvbl9fID0gJzEuMCcKKworCitpbXBvcnQgZnVuY3Rvb2xzCisKK0lQVjRMRU5HVEggPSAzMgorSVBWNkxFTkdUSCA9IDEyOAorCitjbGFzcyBBZGRyZXNzVmFsdWVFcnJvcihWYWx1ZUVycm9yKToKKyAgICAiIiJBIFZhbHVlIEVycm9yIHJlbGF0ZWQgdG8gdGhlIGFkZHJlc3MuIiIiCisKKworY2xhc3MgTmV0bWFza1ZhbHVlRXJyb3IoVmFsdWVFcnJvcik6CisgICAgIiIiQSBWYWx1ZSBFcnJvciByZWxhdGVkIHRvIHRoZSBuZXRtYXNrLiIiIgorCisKK2RlZiBpcF9hZGRyZXNzKGFkZHJlc3MpOgorICAgICIiIlRha2UgYW4gSVAgc3RyaW5nL2ludCBhbmQgcmV0dXJuIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuICBFaXRoZXIgSVB2NCBvcgorICAgICAgICAgIElQdjYgYWRkcmVzc2VzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKKyAgICAgICAgICBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIElQdjRBZGRyZXNzIG9yIElQdjZBZGRyZXNzIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlICphZGRyZXNzKiBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MKKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKGFkZHJlc3MpCisgICAgZXhjZXB0IChBZGRyZXNzVmFsdWVFcnJvciwgTmV0bWFza1ZhbHVlRXJyb3IpOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhhZGRyZXNzKQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiBpcF9uZXR3b3JrKGFkZHJlc3MsIHN0cmljdD1UcnVlKToKKyAgICAiIiJUYWtlIGFuIElQIHN0cmluZy9pbnQgYW5kIHJldHVybiBhbiBvYmplY3Qgb2YgdGhlIGNvcnJlY3QgdHlwZS4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIsIHRoZSBJUCBuZXR3b3JrLiAgRWl0aGVyIElQdjQgb3IKKyAgICAgICAgICBJUHY2IG5ldHdvcmtzIG1heSBiZSBzdXBwbGllZDsgaW50ZWdlcnMgbGVzcyB0aGFuIDIqKjMyIHdpbGwKKyAgICAgICAgICBiZSBjb25zaWRlcmVkIHRvIGJlIElQdjQgYnkgZGVmYXVsdC4KKworICAgIFJldHVybnM6CisgICAgICAgIEFuIElQdjROZXR3b3JrIG9yIElQdjZOZXR3b3JrIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIHN0cmluZyBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MuIE9yIGlmIHRoZSBuZXR3b3JrIGhhcyBob3N0IGJpdHMgc2V0LgorCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2NE5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gSVB2Nk5ldHdvcmsoYWRkcmVzcywgc3RyaWN0KQorICAgIGV4Y2VwdCAoQWRkcmVzc1ZhbHVlRXJyb3IsIE5ldG1hc2tWYWx1ZUVycm9yKToKKyAgICAgICAgcGFzcworCisgICAgcmFpc2UgVmFsdWVFcnJvcignJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiBuZXR3b3JrJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiBpcF9pbnRlcmZhY2UoYWRkcmVzcyk6CisgICAgIiIiVGFrZSBhbiBJUCBzdHJpbmcvaW50IGFuZCByZXR1cm4gYW4gb2JqZWN0IG9mIHRoZSBjb3JyZWN0IHR5cGUuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyLCB0aGUgSVAgYWRkcmVzcy4gIEVpdGhlciBJUHY0IG9yCisgICAgICAgICAgSVB2NiBhZGRyZXNzZXMgbWF5IGJlIHN1cHBsaWVkOyBpbnRlZ2VycyBsZXNzIHRoYW4gMioqMzIgd2lsbAorICAgICAgICAgIGJlIGNvbnNpZGVyZWQgdG8gYmUgSVB2NCBieSBkZWZhdWx0LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gSVB2NEludGVyZmFjZSBvciBJUHY2SW50ZXJmYWNlIG9iamVjdC4KKworICAgIFJhaXNlczoKKyAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIHN0cmluZyBwYXNzZWQgaXNuJ3QgZWl0aGVyIGEgdjQgb3IgYSB2NgorICAgICAgICAgIGFkZHJlc3MuCisKKyAgICBOb3RlczoKKyAgICAgICAgVGhlIElQdj9JbnRlcmZhY2UgY2xhc3NlcyBkZXNjcmliZSBhbiBBZGRyZXNzIG9uIGEgcGFydGljdWxhcgorICAgICAgICBOZXR3b3JrLCBzbyB0aGV5J3JlIGJhc2ljYWxseSBhIGNvbWJpbmF0aW9uIG9mIGJvdGggdGhlIEFkZHJlc3MKKyAgICAgICAgYW5kIE5ldHdvcmsgY2xhc3Nlcy4KKworICAgICIiIgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjRJbnRlcmZhY2UoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIElQdjZJbnRlcmZhY2UoYWRkcmVzcykKKyAgICBleGNlcHQgKEFkZHJlc3NWYWx1ZUVycm9yLCBOZXRtYXNrVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIHJhaXNlIFZhbHVlRXJyb3IoJyVyIGRvZXMgbm90IGFwcGVhciB0byBiZSBhbiBJUHY0IG9yIElQdjYgaW50ZXJmYWNlJyAlCisgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKQorCisKK2RlZiB2NF9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgorICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDQgcGFja2VkIGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzczogQW4gaW50ZWdlciByZXByZXNlbnRhdGlvbiBvZiBhbiBJUHY0IElQIGFkZHJlc3MuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBUaGUgaW50ZWdlciBhZGRyZXNzIHBhY2tlZCBhcyA0IGJ5dGVzIGluIG5ldHdvcmsgKGJpZy1lbmRpYW4pIG9yZGVyLgorCisgICAgUmFpc2VzOgorICAgICAgICBWYWx1ZUVycm9yOiBJZiB0aGUgaW50ZWdlciBpcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgdG8gYmUgYW4KKyAgICAgICAgICBJUHY0IElQIGFkZHJlc3MuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDQsICdiaWcnKQorICAgIGV4Y2VwdDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWRkcmVzcyBuZWdhdGl2ZSBvciB0b28gbGFyZ2UgZm9yIElQdjQiKQorCisKK2RlZiB2Nl9pbnRfdG9fcGFja2VkKGFkZHJlc3MpOgorICAgICIiIlJlcHJlc2VudCBhbiBhZGRyZXNzIGFzIDE2IHBhY2tlZCBieXRlcyBpbiBuZXR3b3JrIChiaWctZW5kaWFuKSBvcmRlci4KKworICAgIEFyZ3M6CisgICAgICAgIGFkZHJlc3M6IEFuIGludGVnZXIgcmVwcmVzZW50YXRpb24gb2YgYW4gSVB2NiBJUCBhZGRyZXNzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgVGhlIGludGVnZXIgYWRkcmVzcyBwYWNrZWQgYXMgMTYgYnl0ZXMgaW4gbmV0d29yayAoYmlnLWVuZGlhbikgb3JkZXIuCisKKyAgICAiIiIKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBhZGRyZXNzLnRvX2J5dGVzKDE2LCAnYmlnJykKKyAgICBleGNlcHQ6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFkZHJlc3MgbmVnYXRpdmUgb3IgdG9vIGxhcmdlIGZvciBJUHY2IikKKworCitkZWYgX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcyk6CisgICAgIiIiSGVscGVyIHRvIHNwbGl0IHRoZSBuZXRtYXNrIGFuZCByYWlzZSBBZGRyZXNzVmFsdWVFcnJvciBpZiBuZWVkZWQiIiIKKyAgICBhZGRyID0gc3RyKGFkZHJlc3MpLnNwbGl0KCcvJykKKyAgICBpZiBsZW4oYWRkcikgPiAyOgorICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiT25seSBvbmUgJy8nIHBlcm1pdHRlZCBpbiAlciIgJSBhZGRyZXNzKQorICAgIHJldHVybiBhZGRyCisKKworZGVmIF9maW5kX2FkZHJlc3NfcmFuZ2UoYWRkcmVzc2VzKToKKyAgICAiIiJGaW5kIGEgc2VxdWVuY2Ugb2YgSVB2I0FkZHJlc3MuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IGEgbGlzdCBvZiBJUHYjQWRkcmVzcyBvYmplY3RzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQSB0dXBsZSBjb250YWluaW5nIHRoZSBmaXJzdCBhbmQgbGFzdCBJUCBhZGRyZXNzZXMgaW4gdGhlIHNlcXVlbmNlLgorCisgICAgIiIiCisgICAgZmlyc3QgPSBsYXN0ID0gYWRkcmVzc2VzWzBdCisgICAgZm9yIGlwIGluIGFkZHJlc3Nlc1sxOl06CisgICAgICAgIGlmIGlwLl9pcCA9PSBsYXN0Ll9pcCArIDE6CisgICAgICAgICAgICBsYXN0ID0gaXAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIChmaXJzdCwgbGFzdCkKKworCitkZWYgX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMobnVtYmVyLCBiaXRzKToKKyAgICAiIiJDb3VudCB0aGUgbnVtYmVyIG9mIHplcm8gYml0cyBvbiB0aGUgcmlnaHQgaGFuZCBzaWRlLgorCisgICAgQXJnczoKKyAgICAgICAgbnVtYmVyOiBhbiBpbnRlZ2VyLgorICAgICAgICBiaXRzOiBtYXhpbXVtIG51bWJlciBvZiBiaXRzIHRvIGNvdW50LgorCisgICAgUmV0dXJuczoKKyAgICAgICAgVGhlIG51bWJlciBvZiB6ZXJvIGJpdHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgbnVtYmVyLgorCisgICAgIiIiCisgICAgaWYgbnVtYmVyID09IDA6CisgICAgICAgIHJldHVybiBiaXRzCisgICAgZm9yIGkgaW4gcmFuZ2UoYml0cyk6CisgICAgICAgIGlmIChudW1iZXIgPj4gaSkgJiAxOgorICAgICAgICAgICAgcmV0dXJuIGkKKyAgICAjIEFsbCBiaXRzIG9mIGludGVyZXN0IHdlcmUgemVybywgZXZlbiBpZiB0aGVyZSBhcmUgbW9yZSBpbiB0aGUgbnVtYmVyCisgICAgcmV0dXJuIGJpdHMKKworCitkZWYgc3VtbWFyaXplX2FkZHJlc3NfcmFuZ2UoZmlyc3QsIGxhc3QpOgorICAgICIiIlN1bW1hcml6ZSBhIG5ldHdvcmsgcmFuZ2UgZ2l2ZW4gdGhlIGZpcnN0IGFuZCBsYXN0IElQIGFkZHJlc3Nlcy4KKworICAgIEV4YW1wbGU6CisgICAgICAgID4+PiBsaXN0KHN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlKElQdjRBZGRyZXNzKCcxOTIuMC4yLjAnKSwKKyAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMTMwJykpKQorICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNkb2N0ZXN0OiArTk9STUFMSVpFX1dISVRFU1BBQ0UKKyAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzMxJyksCisgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMzAvMzInKV0KKworICAgIEFyZ3M6CisgICAgICAgIGZpcnN0OiB0aGUgZmlyc3QgSVB2NEFkZHJlc3Mgb3IgSVB2NkFkZHJlc3MgaW4gdGhlIHJhbmdlLgorICAgICAgICBsYXN0OiB0aGUgbGFzdCBJUHY0QWRkcmVzcyBvciBJUHY2QWRkcmVzcyBpbiB0aGUgcmFuZ2UuCisKKyAgICBSZXR1cm5zOgorICAgICAgICBBbiBpdGVyYXRvciBvZiB0aGUgc3VtbWFyaXplZCBJUHYoNHw2KSBuZXR3b3JrIG9iamVjdHMuCisKKyAgICBSYWlzZToKKyAgICAgICAgVHlwZUVycm9yOgorICAgICAgICAgICAgSWYgdGhlIGZpcnN0IGFuZCBsYXN0IG9iamVjdHMgYXJlIG5vdCBJUCBhZGRyZXNzZXMuCisgICAgICAgICAgICBJZiB0aGUgZmlyc3QgYW5kIGxhc3Qgb2JqZWN0cyBhcmUgbm90IHRoZSBzYW1lIHZlcnNpb24uCisgICAgICAgIFZhbHVlRXJyb3I6CisgICAgICAgICAgICBJZiB0aGUgbGFzdCBvYmplY3QgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGUgZmlyc3QuCisgICAgICAgICAgICBJZiB0aGUgdmVyc2lvbiBvZiB0aGUgZmlyc3QgYWRkcmVzcyBpcyBub3QgNCBvciA2LgorCisgICAgIiIiCisgICAgaWYgKG5vdCAoaXNpbnN0YW5jZShmaXJzdCwgX0Jhc2VBZGRyZXNzKSBhbmQKKyAgICAgICAgICAgICBpc2luc3RhbmNlKGxhc3QsIF9CYXNlQWRkcmVzcykpKToKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdmaXJzdCBhbmQgbGFzdCBtdXN0IGJlIElQIGFkZHJlc3Nlcywgbm90IG5ldHdvcmtzJykKKyAgICBpZiBmaXJzdC52ZXJzaW9uICE9IGxhc3QudmVyc2lvbjoKKyAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCkpCisgICAgaWYgZmlyc3QgPiBsYXN0OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdsYXN0IElQIGFkZHJlc3MgbXVzdCBiZSBncmVhdGVyIHRoYW4gZmlyc3QnKQorCisgICAgaWYgZmlyc3QudmVyc2lvbiA9PSA0OgorICAgICAgICBpcCA9IElQdjROZXR3b3JrCisgICAgZWxpZiBmaXJzdC52ZXJzaW9uID09IDY6CisgICAgICAgIGlwID0gSVB2Nk5ldHdvcmsKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd1bmtub3duIElQIHZlcnNpb24nKQorCisgICAgaXBfYml0cyA9IGZpcnN0Ll9tYXhfcHJlZml4bGVuCisgICAgZmlyc3RfaW50ID0gZmlyc3QuX2lwCisgICAgbGFzdF9pbnQgPSBsYXN0Ll9pcAorICAgIHdoaWxlIGZpcnN0X2ludCA8PSBsYXN0X2ludDoKKyAgICAgICAgbmJpdHMgPSBtaW4oX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoZmlyc3RfaW50LCBpcF9iaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgKGxhc3RfaW50IC0gZmlyc3RfaW50ICsgMSkuYml0X2xlbmd0aCgpIC0gMSkKKyAgICAgICAgbmV0ID0gaXAoJyVzLyVkJyAlIChmaXJzdCwgaXBfYml0cyAtIG5iaXRzKSkKKyAgICAgICAgeWllbGQgbmV0CisgICAgICAgIGZpcnN0X2ludCArPSAxIDw8IG5iaXRzCisgICAgICAgIGlmIGZpcnN0X2ludCAtIDEgPT0gaXAuX0FMTF9PTkVTOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmlyc3QgPSBmaXJzdC5fX2NsYXNzX18oZmlyc3RfaW50KQorCisKK2RlZiBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShhZGRyZXNzZXMpOgorICAgICIiIkxvb3BzIHRocm91Z2ggdGhlIGFkZHJlc3NlcywgY29sbGFwc2luZyBjb25jdXJyZW50IG5ldGJsb2Nrcy4KKworICAgIEV4YW1wbGU6CisKKyAgICAgICAgaXAxID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNicpCisgICAgICAgIGlwMiA9IElQdjROZXR3b3JrKCcxOTIuMC4yLjY0LzI2JykKKyAgICAgICAgaXAzID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI2JykKKyAgICAgICAgaXA0ID0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTkyLzI2JykKKworICAgICAgICBfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShbaXAxLCBpcDIsIGlwMywgaXA0XSkgLT4KKyAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisgICAgICAgIFRoaXMgc2hvdWxkbid0IGJlIGNhbGxlZCBkaXJlY3RseTsgaXQgaXMgY2FsbGVkIHZpYQorICAgICAgICAgIGNvbGxhcHNlX2FkZHJlc3NlcyhbXSkuCisKKyAgICBBcmdzOgorICAgICAgICBhZGRyZXNzZXM6IEEgbGlzdCBvZiBJUHY0TmV0d29yaydzIG9yIElQdjZOZXR3b3JrJ3MKKworICAgIFJldHVybnM6CisgICAgICAgIEEgbGlzdCBvZiBJUHY0TmV0d29yaydzIG9yIElQdjZOZXR3b3JrJ3MgZGVwZW5kaW5nIG9uIHdoYXQgd2Ugd2VyZQorICAgICAgICBwYXNzZWQuCisKKyAgICAiIiIKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICBsYXN0X2FkZHIgPSBOb25lCisgICAgICAgIHJldF9hcnJheSA9IFtdCisgICAgICAgIG9wdGltaXplZCA9IEZhbHNlCisKKyAgICAgICAgZm9yIGN1cl9hZGRyIGluIGFkZHJlc3NlczoKKyAgICAgICAgICAgIGlmIG5vdCByZXRfYXJyYXk6CisgICAgICAgICAgICAgICAgbGFzdF9hZGRyID0gY3VyX2FkZHIKKyAgICAgICAgICAgICAgICByZXRfYXJyYXkuYXBwZW5kKGN1cl9hZGRyKQorICAgICAgICAgICAgZWxpZiAoY3VyX2FkZHIubmV0d29ya19hZGRyZXNzID49IGxhc3RfYWRkci5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgY3VyX2FkZHIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gbGFzdF9hZGRyLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGN1cl9hZGRyID09IGxpc3QobGFzdF9hZGRyLnN1cGVybmV0KCkuc3VibmV0cygpKVsxXToKKyAgICAgICAgICAgICAgICByZXRfYXJyYXlbLTFdID0gbGFzdF9hZGRyID0gbGFzdF9hZGRyLnN1cGVybmV0KCkKKyAgICAgICAgICAgICAgICBvcHRpbWl6ZWQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxhc3RfYWRkciA9IGN1cl9hZGRyCisgICAgICAgICAgICAgICAgcmV0X2FycmF5LmFwcGVuZChjdXJfYWRkcikKKworICAgICAgICBhZGRyZXNzZXMgPSByZXRfYXJyYXkKKyAgICAgICAgaWYgbm90IG9wdGltaXplZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzZXMKKworCitkZWYgY29sbGFwc2VfYWRkcmVzc2VzKGFkZHJlc3Nlcyk6CisgICAgIiIiQ29sbGFwc2UgYSBsaXN0IG9mIElQIG9iamVjdHMuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBjb2xsYXBzZV9hZGRyZXNzZXMoW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY0TmV0d29yaygnMTkyLjAuMi4xMjgvMjUnKV0pIC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICBbSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpXQorCisgICAgQXJnczoKKyAgICAgICAgYWRkcmVzc2VzOiBBbiBpdGVyYXRvciBvZiBJUHY0TmV0d29yayBvciBJUHY2TmV0d29yayBvYmplY3RzLgorCisgICAgUmV0dXJuczoKKyAgICAgICAgQW4gaXRlcmF0b3Igb2YgdGhlIGNvbGxhcHNlZCBJUHYoNHw2KU5ldHdvcmsgb2JqZWN0cy4KKworICAgIFJhaXNlczoKKyAgICAgICAgVHlwZUVycm9yOiBJZiBwYXNzZWQgYSBsaXN0IG9mIG1peGVkIHZlcnNpb24gb2JqZWN0cy4KKworICAgICIiIgorICAgIGkgPSAwCisgICAgYWRkcnMgPSBbXQorICAgIGlwcyA9IFtdCisgICAgbmV0cyA9IFtdCisKKyAgICAjIHNwbGl0IElQIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MKKyAgICBmb3IgaXAgaW4gYWRkcmVzc2VzOgorICAgICAgICBpZiBpc2luc3RhbmNlKGlwLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgaWYgaXBzIGFuZCBpcHNbLTFdLl92ZXJzaW9uICE9IGlwLl92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcCwgaXBzWy0xXSkpCisgICAgICAgICAgICBpcHMuYXBwZW5kKGlwKQorICAgICAgICBlbGlmIGlwLl9wcmVmaXhsZW4gPT0gaXAuX21heF9wcmVmaXhsZW46CisgICAgICAgICAgICBpZiBpcHMgYW5kIGlwc1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBpcHNbLTFdKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpcHMuYXBwZW5kKGlwLmlwKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIGlwcy5hcHBlbmQoaXAubmV0d29ya19hZGRyZXNzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbmV0cyBhbmQgbmV0c1stMV0uX3ZlcnNpb24gIT0gaXAuX3ZlcnNpb246CisgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCIlcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB2ZXJzaW9uIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLCBuZXRzWy0xXSkpCisgICAgICAgICAgICBuZXRzLmFwcGVuZChpcCkKKworICAgICMgc29ydCBhbmQgZGVkdXAKKyAgICBpcHMgPSBzb3J0ZWQoc2V0KGlwcykpCisgICAgbmV0cyA9IHNvcnRlZChzZXQobmV0cykpCisKKyAgICB3aGlsZSBpIDwgbGVuKGlwcyk6CisgICAgICAgIChmaXJzdCwgbGFzdCkgPSBfZmluZF9hZGRyZXNzX3JhbmdlKGlwc1tpOl0pCisgICAgICAgIGkgPSBpcHMuaW5kZXgobGFzdCkgKyAxCisgICAgICAgIGFkZHJzLmV4dGVuZChzdW1tYXJpemVfYWRkcmVzc19yYW5nZShmaXJzdCwgbGFzdCkpCisKKyAgICByZXR1cm4gaXRlcihfY29sbGFwc2VfYWRkcmVzc2VzX3JlY3Vyc2l2ZShzb3J0ZWQoCisgICAgICAgIGFkZHJzICsgbmV0cywga2V5PV9CYXNlTmV0d29yay5fZ2V0X25ldHdvcmtzX2tleSkpKQorCisKK2RlZiBnZXRfbWl4ZWRfdHlwZV9rZXkob2JqKToKKyAgICAiIiJSZXR1cm4gYSBrZXkgc3VpdGFibGUgZm9yIHNvcnRpbmcgYmV0d2VlbiBuZXR3b3JrcyBhbmQgYWRkcmVzc2VzLgorCisgICAgQWRkcmVzcyBhbmQgTmV0d29yayBvYmplY3RzIGFyZSBub3Qgc29ydGFibGUgYnkgZGVmYXVsdDsgdGhleSdyZQorICAgIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IHNvIHRoZSBleHByZXNzaW9uCisKKyAgICAgICAgSVB2NEFkZHJlc3MoJzE5Mi4wLjIuMCcpIDw9IElQdjROZXR3b3JrKCcxOTIuMC4yLjAvMjQnKQorCisgICAgZG9lc24ndCBtYWtlIGFueSBzZW5zZS4gIFRoZXJlIGFyZSBzb21lIHRpbWVzIGhvd2V2ZXIsIHdoZXJlIHlvdSBtYXkgd2lzaAorICAgIHRvIGhhdmUgaXBhZGRyZXNzIHNvcnQgdGhlc2UgZm9yIHlvdSBhbnl3YXkuIElmIHlvdSBuZWVkIHRvIGRvIHRoaXMsIHlvdQorICAgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiBhcyB0aGUga2V5PSBhcmd1bWVudCB0byBzb3J0ZWQoKS4KKworICAgIEFyZ3M6CisgICAgICBvYmo6IGVpdGhlciBhIE5ldHdvcmsgb3IgQWRkcmVzcyBvYmplY3QuCisgICAgUmV0dXJuczoKKyAgICAgIGFwcHJvcHJpYXRlIGtleS4KKworICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZU5ldHdvcmspOgorICAgICAgICByZXR1cm4gb2JqLl9nZXRfbmV0d29ya3Nfa2V5KCkKKyAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICByZXR1cm4gb2JqLl9nZXRfYWRkcmVzc19rZXkoKQorICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisKK2NsYXNzIF9Ub3RhbE9yZGVyaW5nTWl4aW46CisgICAgIyBIZWxwZXIgdGhhdCBkZXJpdmVzIHRoZSBvdGhlciBjb21wYXJpc29uIG9wZXJhdGlvbnMgZnJvbQorICAgICMgX19sdF9fIGFuZCBfX2VxX18KKyAgICAjIFdlIGF2b2lkIGZ1bmN0b29scy50b3RhbF9vcmRlcmluZyBiZWNhdXNlIGl0IGRvZXNuJ3QgaGFuZGxlCisgICAgIyBOb3RJbXBsZW1lbnRlZCBjb3JyZWN0bHkgeWV0IChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTAwNDIpCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKyAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgZXF1YWwgPSBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgaWYgZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIG5vdCBlcXVhbAorICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisgICAgZGVmIF9fbGVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZCBvciBub3QgbGVzczoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9fZXFfXyhvdGhlcikKKyAgICAgICAgcmV0dXJuIGxlc3MKKyAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgbGVzcyA9IHNlbGYuX19sdF9fKG90aGVyKQorICAgICAgICBpZiBsZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIGVxdWFsID0gc2VsZi5fX2VxX18ob3RoZXIpCisgICAgICAgIGlmIGVxdWFsIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBub3QgKGxlc3Mgb3IgZXF1YWwpCisgICAgZGVmIF9fZ2VfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGxlc3MgPSBzZWxmLl9fbHRfXyhvdGhlcikKKyAgICAgICAgaWYgbGVzcyBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gbm90IGxlc3MKKworY2xhc3MgX0lQQWRkcmVzc0Jhc2UoX1RvdGFsT3JkZXJpbmdNaXhpbik6CisKKyAgICAiIiJUaGUgbW90aGVyIGNsYXNzLiIiIgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4cGxvZGVkKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGxvbmdoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbXByZXNzZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgc2hvcnRoYW5kIHZlcnNpb24gb2YgdGhlIElQIGFkZHJlc3MgYXMgYSBzdHJpbmcuIiIiCisgICAgICAgIHJldHVybiBzdHIoc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAnJTIwMHMgaGFzIG5vIHZlcnNpb24gc3BlY2lmaWVkJyAlICh0eXBlKHNlbGYpLCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisKKyAgICBkZWYgX2NoZWNrX2ludF9hZGRyZXNzKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBhZGRyZXNzIDwgMDoKKyAgICAgICAgICAgIG1zZyA9ICIlZCAoPCAwKSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdiVkIGFkZHJlc3MiCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoYWRkcmVzcywgc2VsZi5fdmVyc2lvbikpCisgICAgICAgIGlmIGFkZHJlc3MgPiBzZWxmLl9BTExfT05FUzoKKyAgICAgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqJWQpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2JWQgYWRkcmVzcyIKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIChhZGRyZXNzLCBzZWxmLl9tYXhfcHJlZml4bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24pKQorCisgICAgZGVmIF9jaGVja19wYWNrZWRfYWRkcmVzcyhzZWxmLCBhZGRyZXNzLCBleHBlY3RlZF9sZW4pOgorICAgICAgICBhZGRyZXNzX2xlbiA9IGxlbihhZGRyZXNzKQorICAgICAgICBpZiBhZGRyZXNzX2xlbiAhPSBleHBlY3RlZF9sZW46CisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAlZCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHYlZCBhZGRyZXNzIgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKGFkZHJlc3MsIGFkZHJlc3NfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiwgc2VsZi5fdmVyc2lvbikpCisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3ByZWZpeChzZWxmLCBwcmVmaXhsZW49Tm9uZSk6CisgICAgICAgICIiIlR1cm4gdGhlIHByZWZpeCBsZW5ndGggbmV0bWFzayBpbnRvIGEgaW50IGZvciBjb21wYXJpc29uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEFuIGludGVnZXIsIHRoZSBwcmVmaXggbGVuZ3RoLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpbnRlZ2VyLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBwcmVmaXhsZW4gaXMgTm9uZToKKyAgICAgICAgICAgIHByZWZpeGxlbiA9IHNlbGYuX3ByZWZpeGxlbgorICAgICAgICByZXR1cm4gc2VsZi5fQUxMX09ORVMgXiAoc2VsZi5fQUxMX09ORVMgPj4gcHJlZml4bGVuKQorCisgICAgZGVmIF9wcmVmaXhfZnJvbV9pcF9pbnQoc2VsZiwgaXBfaW50LCBtYXNrPTMyKToKKyAgICAgICAgIiIiUmV0dXJuIHByZWZpeCBsZW5ndGggZnJvbSB0aGUgZGVjaW1hbCBuZXRtYXNrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9pbnQ6IEFuIGludGVnZXIsIHRoZSBJUCBhZGRyZXNzLgorICAgICAgICAgICAgbWFzazogVGhlIG5ldG1hc2suICBEZWZhdWx0cyB0byAzMi4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaW50ZWdlciwgdGhlIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYXNrIC0gX2NvdW50X3JpZ2h0aGFuZF96ZXJvX2JpdHMoaXBfaW50LCBtYXNrKQorCisgICAgZGVmIF9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoc2VsZiwgcHJlZml4bGVuPU5vbmUpOgorICAgICAgICAiIiJUdXJuIGEgcHJlZml4IGxlbmd0aCBpbnRvIGEgZG90dGVkIGRlY2ltYWwgc3RyaW5nLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEFuIGludGVnZXIsIHRoZSBuZXRtYXNrIHByZWZpeCBsZW5ndGguCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgZG90dGVkIGRlY2ltYWwgbmV0bWFzayBzdHJpbmcuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBwcmVmaXhsZW46CisgICAgICAgICAgICBwcmVmaXhsZW4gPSBzZWxmLl9wcmVmaXhsZW4KKyAgICAgICAgcmV0dXJuIHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgocHJlZml4bGVuKSkKKworCitjbGFzcyBfQmFzZUFkZHJlc3MoX0lQQWRkcmVzc0Jhc2UpOgorCisgICAgIiIiQSBnZW5lcmljIElQIG9iamVjdC4KKworICAgIFRoaXMgSVAgY2xhc3MgY29udGFpbnMgdGhlIHZlcnNpb24gaW5kZXBlbmRlbnQgbWV0aG9kcyB3aGljaCBhcmUKKyAgICB1c2VkIGJ5IHNpbmdsZSBJUCBhZGRyZXNzZXMuCisKKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKQorICAgICAgICAgICAgYW5kICcvJyBpbiBzdHIoYWRkcmVzcykpOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiAlIGFkZHJlc3MpCisKKyAgICBkZWYgX19pbnRfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9pcCA9PSBvdGhlci5faXAKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24pCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZUFkZHJlc3MpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBzZWxmLl9pcCAhPSBvdGhlci5faXA6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faXAgPCBvdGhlci5faXAKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAjIFNob3J0aGFuZCBmb3IgSW50ZWdlciBhZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24uIFRoaXMgaXMgbm90CisgICAgIyBtZWFudCB0byBldmVyIHN1cHBvcnQgYWRkaXRpb24vc3VidHJhY3Rpb24gb2YgYWRkcmVzc2VzLgorICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGludCk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKGludChzZWxmKSArIG90aGVyKQorCisgICAgZGVmIF9fc3ViX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgaW50KToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW50KHNlbGYpIC0gb3RoZXIpCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMoJXIpJyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKHNlbGYpKQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSkKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goaGV4KGludChzZWxmLl9pcCkpKQorCisgICAgZGVmIF9nZXRfYWRkcmVzc19rZXkoc2VsZik6CisgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZikKKworCitjbGFzcyBfQmFzZU5ldHdvcmsoX0lQQWRkcmVzc0Jhc2UpOgorCisgICAgIiIiQSBnZW5lcmljIElQIG5ldHdvcmsgb2JqZWN0LgorCisgICAgVGhpcyBJUCBjbGFzcyBjb250YWlucyB0aGUgdmVyc2lvbiBpbmRlcGVuZGVudCBtZXRob2RzIHdoaWNoIGFyZQorICAgIHVzZWQgYnkgbmV0d29ya3MuCisKKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX2NhY2hlID0ge30KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcyglciknICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzdHIoc2VsZikpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYucHJlZml4bGVuKQorCisgICAgZGVmIGhvc3RzKHNlbGYpOgorICAgICAgICAiIiJHZW5lcmF0ZSBJdGVyYXRvciBvdmVyIHVzYWJsZSBob3N0cyBpbiBhIG5ldHdvcmsuCisKKyAgICAgICAgVGhpcyBpcyBsaWtlIF9faXRlcl9fIGV4Y2VwdCBpdCBkb2Vzbid0IHJldHVybiB0aGUgbmV0d29yaworICAgICAgICBvciBicm9hZGNhc3QgYWRkcmVzc2VzLgorCisgICAgICAgICIiIgorICAgICAgICBuZXR3b3JrID0gaW50KHNlbGYubmV0d29ya19hZGRyZXNzKQorICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UobmV0d29yayArIDEsIGJyb2FkY2FzdCk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLl9hZGRyZXNzX2NsYXNzKHgpCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIG5ldHdvcmsgPSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpCisgICAgICAgIGJyb2FkY2FzdCA9IGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKQorICAgICAgICBmb3IgeCBpbiByYW5nZShuZXR3b3JrLCBicm9hZGNhc3QgKyAxKToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuX2FkZHJlc3NfY2xhc3MoeCkKKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuKToKKyAgICAgICAgbmV0d29yayA9IGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgYnJvYWRjYXN0ID0gaW50KHNlbGYuYnJvYWRjYXN0X2FkZHJlc3MpCisgICAgICAgIGlmIG4gPj0gMDoKKyAgICAgICAgICAgIGlmIG5ldHdvcmsgKyBuID4gYnJvYWRjYXN0OgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKG5ldHdvcmsgKyBuKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbiArPSAxCisgICAgICAgICAgICBpZiBicm9hZGNhc3QgKyBuIDwgbmV0d29yazoKKyAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWRkcmVzc19jbGFzcyhicm9hZGNhc3QgKyBuKQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHZlcnNpb24nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBfQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCclcyBhbmQgJXMgYXJlIG5vdCBvZiB0aGUgc2FtZSB0eXBlJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgb3RoZXIpKQorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyAhPSBvdGhlci5uZXR3b3JrX2FkZHJlc3M6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgPCBvdGhlci5uZXR3b3JrX2FkZHJlc3MKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrICE9IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXRtYXNrIDwgb3RoZXIubmV0bWFzaworICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gKHNlbGYuX3ZlcnNpb24gPT0gb3RoZXIuX3ZlcnNpb24gYW5kCisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID09IG90aGVyLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYubmV0bWFzaykgPT0gaW50KG90aGVyLm5ldG1hc2spKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSBeIGludChzZWxmLm5ldG1hc2spKQorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICMgYWx3YXlzIGZhbHNlIGlmIG9uZSBpcyB2NCBhbmQgdGhlIG90aGVyIGlzIHY2LgorICAgICAgICBpZiBzZWxmLl92ZXJzaW9uICE9IG90aGVyLl92ZXJzaW9uOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICMgZGVhbGluZyB3aXRoIGFub3RoZXIgbmV0d29yay4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAjIGRlYWxpbmcgd2l0aCBhbm90aGVyIGFkZHJlc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuIChpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpIDw9IGludChvdGhlci5faXApIDw9CisgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmJyb2FkY2FzdF9hZGRyZXNzKSkKKworICAgIGRlZiBvdmVybGFwcyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIlRlbGwgaWYgc2VsZiBpcyBwYXJ0bHkgY29udGFpbmVkIGluIG90aGVyLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrX2FkZHJlc3MgaW4gb3RoZXIgb3IgKAorICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcyBpbiBvdGhlciBvciAoCisgICAgICAgICAgICAgICAgb3RoZXIubmV0d29ya19hZGRyZXNzIGluIHNlbGYgb3IgKAorICAgICAgICAgICAgICAgICAgICBvdGhlci5icm9hZGNhc3RfYWRkcmVzcyBpbiBzZWxmKSkpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYnJvYWRjYXN0X2FkZHJlc3Moc2VsZik6CisgICAgICAgIHggPSBzZWxmLl9jYWNoZS5nZXQoJ2Jyb2FkY2FzdF9hZGRyZXNzJykKKyAgICAgICAgaWYgeCBpcyBOb25lOgorICAgICAgICAgICAgeCA9IHNlbGYuX2FkZHJlc3NfY2xhc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5ob3N0bWFzaykpCisgICAgICAgICAgICBzZWxmLl9jYWNoZVsnYnJvYWRjYXN0X2FkZHJlc3MnXSA9IHgKKyAgICAgICAgcmV0dXJuIHgKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBob3N0bWFzayhzZWxmKToKKyAgICAgICAgeCA9IHNlbGYuX2NhY2hlLmdldCgnaG9zdG1hc2snKQorICAgICAgICBpZiB4IGlzIE5vbmU6CisgICAgICAgICAgICB4ID0gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoc2VsZi5uZXRtYXNrKSBeIHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgc2VsZi5fY2FjaGVbJ2hvc3RtYXNrJ10gPSB4CisgICAgICAgIHJldHVybiB4CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9wcmVmaXhsZW4oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLm5ldHdvcmtfYWRkcmVzcywgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYubmV0d29ya19hZGRyZXNzLCBzZWxmLmhvc3RtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG51bV9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgICIiIk51bWJlciBvZiBob3N0cyBpbiB0aGUgY3VycmVudCBzdWJuZXQuIiIiCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykgLSBpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICsgMQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9hZGRyZXNzX2NsYXNzKHNlbGYpOgorICAgICAgICAjIFJldHVybmluZyBiYXJlIGFkZHJlc3Mgb2JqZWN0cyAocmF0aGVyIHRoYW4gaW50ZXJmYWNlcykgYWxsb3dzIGZvcgorICAgICAgICAjIG1vcmUgY29uc2lzdGVudCBiZWhhdmlvdXIgYWNyb3NzIHRoZSBuZXR3b3JrIGFkZHJlc3MsIGJyb2FkY2FzdAorICAgICAgICAjIGFkZHJlc3MgYW5kIGluZGl2aWR1YWwgaG9zdCBhZGRyZXNzZXMuCisgICAgICAgIG1zZyA9ICclMjAwcyBoYXMgbm8gYXNzb2NpYXRlZCBhZGRyZXNzIGNsYXNzJyAlICh0eXBlKHNlbGYpLCkKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihtc2cpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fcHJlZml4bGVuCisKKyAgICBkZWYgYWRkcmVzc19leGNsdWRlKHNlbGYsIG90aGVyKToKKyAgICAgICAgIiIiUmVtb3ZlIGFuIGFkZHJlc3MgZnJvbSBhIGxhcmdlciBibG9jay4KKworICAgICAgICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgYWRkcjEgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjAvMjgnKQorICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcxOTIuMC4yLjEvMzInKQorICAgICAgICAgICAgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSA9CisgICAgICAgICAgICAgICAgW0lQdjROZXR3b3JrKCcxOTIuMC4yLjAvMzInKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMi8zMScpLAorICAgICAgICAgICAgICAgIElQdjROZXR3b3JrKCcxOTIuMC4yLjQvMzAnKSwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuOC8yOScpXQorCisgICAgICAgIG9yIElQdjY6CisKKyAgICAgICAgICAgIGFkZHIxID0gaXBfbmV0d29yaygnMjAwMTpkYjg6OjEvMzInKQorICAgICAgICAgICAgYWRkcjIgPSBpcF9uZXR3b3JrKCcyMDAxOmRiODo6MS8xMjgnKQorICAgICAgICAgICAgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIyKSA9CisgICAgICAgICAgICAgICAgW2lwX25ldHdvcmsoJzIwMDE6ZGI4OjoxLzEyOCcpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjoyLzEyNycpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo0LzEyNicpLAorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4Ojo4LzEyNScpLAorICAgICAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgICAgIGlwX25ldHdvcmsoJzIwMDE6ZGI4OjgwMDA6Oi8zMycpXQorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvdGhlcjogQW4gSVB2NE5ldHdvcmsgb3IgSVB2Nk5ldHdvcmsgb2JqZWN0IG9mIHRoZSBzYW1lIHR5cGUuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEFuIGl0ZXJhdG9yIG9mIHRoZSB0aGUgSVB2KDR8NilOZXR3b3JrIG9iamVjdHMgd2hpY2ggaXMgc2VsZgorICAgICAgICAgICAgbWludXMgb3RoZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVHlwZUVycm9yOiBJZiBzZWxmIGFuZCBvdGhlciBhcmUgb2YgZGlmZmZlcmluZyBhZGRyZXNzCisgICAgICAgICAgICAgIHZlcnNpb25zLCBvciBpZiBvdGhlciBpcyBub3QgYSBuZXR3b3JrIG9iamVjdC4KKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIG90aGVyIGlzIG5vdCBjb21wbGV0ZWx5IGNvbnRhaW5lZCBieSBzZWxmLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fdmVyc2lvbiA9PSBvdGhlci5fdmVyc2lvbjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgYW5kICVzIGFyZSBub3Qgb2YgdGhlIHNhbWUgdmVyc2lvbiIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIG90aGVyKSkKKworICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgX0Jhc2VOZXR3b3JrKToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMgaXMgbm90IGEgbmV0d29yayBvYmplY3QiICUgb3RoZXIpCisKKyAgICAgICAgaWYgbm90IChvdGhlci5uZXR3b3JrX2FkZHJlc3MgPj0gc2VsZi5uZXR3b3JrX2FkZHJlc3MgYW5kCisgICAgICAgICAgICAgICAgb3RoZXIuYnJvYWRjYXN0X2FkZHJlc3MgPD0gc2VsZi5icm9hZGNhc3RfYWRkcmVzcyk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBub3QgY29udGFpbmVkIGluICVzJyAlIChvdGhlciwgc2VsZikpCisgICAgICAgIGlmIG90aGVyID09IHNlbGY6CisgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UncmUgY29tcGFyaW5nIHRoZSBuZXR3b3JrIG9mIG90aGVyLgorICAgICAgICBvdGhlciA9IG90aGVyLl9fY2xhc3NfXygnJXMvJXMnICUgKG90aGVyLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5wcmVmaXhsZW4pKQorCisgICAgICAgIHMxLCBzMiA9IHNlbGYuc3VibmV0cygpCisgICAgICAgIHdoaWxlIHMxICE9IG90aGVyIGFuZCBzMiAhPSBvdGhlcjoKKyAgICAgICAgICAgIGlmIChvdGhlci5uZXR3b3JrX2FkZHJlc3MgPj0gczEubmV0d29ya19hZGRyZXNzIGFuZAorICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHMxLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICB5aWVsZCBzMgorICAgICAgICAgICAgICAgIHMxLCBzMiA9IHMxLnN1Ym5ldHMoKQorICAgICAgICAgICAgZWxpZiAob3RoZXIubmV0d29ya19hZGRyZXNzID49IHMyLm5ldHdvcmtfYWRkcmVzcyBhbmQKKyAgICAgICAgICAgICAgICAgIG90aGVyLmJyb2FkY2FzdF9hZGRyZXNzIDw9IHMyLmJyb2FkY2FzdF9hZGRyZXNzKToKKyAgICAgICAgICAgICAgICB5aWVsZCBzMQorICAgICAgICAgICAgICAgIHMxLCBzMiA9IHMyLnN1Ym5ldHMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIElmIHdlIGdvdCBoZXJlLCB0aGVyZSdzIGEgYnVnIHNvbWV3aGVyZS4KKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignRXJyb3IgcGVyZm9ybWluZyBleGNsdXNpb246ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnczE6ICVzIHMyOiAlcyBvdGhlcjogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoczEsIHMyLCBvdGhlcikpCisgICAgICAgIGlmIHMxID09IG90aGVyOgorICAgICAgICAgICAgeWllbGQgczIKKyAgICAgICAgZWxpZiBzMiA9PSBvdGhlcjoKKyAgICAgICAgICAgIHlpZWxkIHMxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIElmIHdlIGdvdCBoZXJlLCB0aGVyZSdzIGEgYnVnIHNvbWV3aGVyZS4KKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFcnJvciBwZXJmb3JtaW5nIGV4Y2x1c2lvbjogJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3MxOiAlcyBzMjogJXMgb3RoZXI6ICVzJyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoczEsIHMyLCBvdGhlcikpCisKKyAgICBkZWYgY29tcGFyZV9uZXR3b3JrcyhzZWxmLCBvdGhlcik6CisgICAgICAgICIiIkNvbXBhcmUgdHdvIElQIG9iamVjdHMuCisKKyAgICAgICAgVGhpcyBpcyBvbmx5IGNvbmNlcm5lZCBhYm91dCB0aGUgY29tcGFyaXNvbiBvZiB0aGUgaW50ZWdlcgorICAgICAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmV0d29yayBhZGRyZXNzZXMuICBUaGlzIG1lYW5zIHRoYXQgdGhlCisgICAgICAgIGhvc3QgYml0cyBhcmVuJ3QgY29uc2lkZXJlZCBhdCBhbGwgaW4gdGhpcyBtZXRob2QuICBJZiB5b3Ugd2FudAorICAgICAgICB0byBjb21wYXJlIGhvc3QgYml0cywgeW91IGNhbiBlYXNpbHkgZW5vdWdoIGRvIGEKKyAgICAgICAgJ0hvc3RBLl9pcCA8IEhvc3RCLl9pcCcKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgb3RoZXI6IEFuIElQIG9iamVjdC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSWYgdGhlIElQIHZlcnNpb25zIG9mIHNlbGYgYW5kIG90aGVyIGFyZSB0aGUgc2FtZSwgcmV0dXJuczoKKworICAgICAgICAgICAgLTEgaWYgc2VsZiA8IG90aGVyOgorICAgICAgICAgICAgICBlZzogSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNScpIDwgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JykKKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpIDwKKyAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MjAwMC8xMjQnKQorICAgICAgICAgICAgMCBpZiBzZWxmID09IG90aGVyCisgICAgICAgICAgICAgIGVnOiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI0JykgPT0gSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNCcpCisgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MTAwMC8xMjQnKSA9PQorICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCisgICAgICAgICAgICAxIGlmIHNlbGYgPiBvdGhlcgorICAgICAgICAgICAgICBlZzogSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMTI4LzI1JykgPiBJUHY0TmV0d29yaygnMTkyLjAuMi4wLzI1JykKKyAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6MjAwMC8xMjQnKSA+CisgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjoxMDAwLzEyNCcpCisKKyAgICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICAgIFR5cGVFcnJvciBpZiB0aGUgSVAgdmVyc2lvbnMgYXJlIGRpZmZlcmVudC4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBkb2VzIHRoaXMgbmVlZCB0byByYWlzZSBhIFZhbHVlRXJyb3I/CisgICAgICAgIGlmIHNlbGYuX3ZlcnNpb24gIT0gb3RoZXIuX3ZlcnNpb246CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJyVzIGFuZCAlcyBhcmUgbm90IG9mIHRoZSBzYW1lIHR5cGUnICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBvdGhlcikpCisgICAgICAgICMgc2VsZi5fdmVyc2lvbiA9PSBvdGhlci5fdmVyc2lvbiBiZWxvdyBoZXJlOgorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyA8IG90aGVyLm5ldHdvcmtfYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBzZWxmLm5ldHdvcmtfYWRkcmVzcyA+IG90aGVyLm5ldHdvcmtfYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICMgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPT0gb3RoZXIubmV0d29ya19hZGRyZXNzIGJlbG93IGhlcmU6CisgICAgICAgIGlmIHNlbGYubmV0bWFzayA8IG90aGVyLm5ldG1hc2s6CisgICAgICAgICAgICByZXR1cm4gLTEKKyAgICAgICAgaWYgc2VsZi5uZXRtYXNrID4gb3RoZXIubmV0bWFzazoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHJldHVybiAwCisKKyAgICBkZWYgX2dldF9uZXR3b3Jrc19rZXkoc2VsZik6CisgICAgICAgICIiIk5ldHdvcmstb25seSBrZXkgZnVuY3Rpb24uCisKKyAgICAgICAgUmV0dXJucyBhbiBvYmplY3QgdGhhdCBpZGVudGlmaWVzIHRoaXMgYWRkcmVzcycgbmV0d29yayBhbmQKKyAgICAgICAgbmV0bWFzay4gVGhpcyBmdW5jdGlvbiBpcyBhIHN1aXRhYmxlICJrZXkiIGFyZ3VtZW50IGZvciBzb3J0ZWQoKQorICAgICAgICBhbmQgbGlzdC5zb3J0KCkuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5fdmVyc2lvbiwgc2VsZi5uZXR3b3JrX2FkZHJlc3MsIHNlbGYubmV0bWFzaykKKworICAgIGRlZiBzdWJuZXRzKHNlbGYsIHByZWZpeGxlbl9kaWZmPTEsIG5ld19wcmVmaXg9Tm9uZSk6CisgICAgICAgICIiIlRoZSBzdWJuZXRzIHdoaWNoIGpvaW4gdG8gbWFrZSB0aGUgY3VycmVudCBzdWJuZXQuCisKKyAgICAgICAgSW4gdGhlIGNhc2UgdGhhdCBzZWxmIGNvbnRhaW5zIG9ubHkgb25lIElQCisgICAgICAgIChzZWxmLl9wcmVmaXhsZW4gPT0gMzIgZm9yIElQdjQgb3Igc2VsZi5fcHJlZml4bGVuID09IDEyOAorICAgICAgICBmb3IgSVB2NiksIHlpZWxkIGFuIGl0ZXJhdG9yIHdpdGgganVzdCBvdXJzZWxmLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZjogQW4gaW50ZWdlciwgdGhlIGFtb3VudCB0aGUgcHJlZml4IGxlbmd0aAorICAgICAgICAgICAgICBzaG91bGQgYmUgaW5jcmVhc2VkIGJ5LiBUaGlzIHNob3VsZCBub3QgYmUgc2V0IGlmCisgICAgICAgICAgICAgIG5ld19wcmVmaXggaXMgYWxzbyBzZXQuCisgICAgICAgICAgICBuZXdfcHJlZml4OiBUaGUgZGVzaXJlZCBuZXcgcHJlZml4IGxlbmd0aC4gVGhpcyBtdXN0IGJlIGEKKyAgICAgICAgICAgICAgbGFyZ2VyIG51bWJlciAoc21hbGxlciBwcmVmaXgpIHRoYW4gdGhlIGV4aXN0aW5nIHByZWZpeC4KKyAgICAgICAgICAgICAgVGhpcyBzaG91bGQgbm90IGJlIHNldCBpZiBwcmVmaXhsZW5fZGlmZiBpcyBhbHNvIHNldC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQW4gaXRlcmF0b3Igb2YgSVB2KDR8Nikgb2JqZWN0cy4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBUaGUgcHJlZml4bGVuX2RpZmYgaXMgdG9vIHNtYWxsIG9yIHRvbyBsYXJnZS4KKyAgICAgICAgICAgICAgICBPUgorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmYgYW5kIG5ld19wcmVmaXggYXJlIGJvdGggc2V0IG9yIG5ld19wcmVmaXgKKyAgICAgICAgICAgICAgaXMgYSBzbWFsbGVyIG51bWJlciB0aGFuIHRoZSBjdXJyZW50IHByZWZpeCAoc21hbGxlcgorICAgICAgICAgICAgICBudW1iZXIgbWVhbnMgYSBsYXJnZXIgbmV0d29yaykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IHNlbGYuX21heF9wcmVmaXhsZW46CisgICAgICAgICAgICB5aWVsZCBzZWxmCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBpZiBuZXdfcHJlZml4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgbmV3X3ByZWZpeCA8IHNlbGYuX3ByZWZpeGxlbjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCduZXcgcHJlZml4IG11c3QgYmUgbG9uZ2VyJykKKyAgICAgICAgICAgIGlmIHByZWZpeGxlbl9kaWZmICE9IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IG5ld19wcmVmaXggLSBzZWxmLl9wcmVmaXhsZW4KKworICAgICAgICBpZiBwcmVmaXhsZW5fZGlmZiA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwcmVmaXggbGVuZ3RoIGRpZmYgbXVzdCBiZSA+IDAnKQorICAgICAgICBuZXdfcHJlZml4bGVuID0gc2VsZi5fcHJlZml4bGVuICsgcHJlZml4bGVuX2RpZmYKKworICAgICAgICBpZiBub3Qgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhzdHIobmV3X3ByZWZpeGxlbikpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAncHJlZml4IGxlbmd0aCBkaWZmICVkIGlzIGludmFsaWQgZm9yIG5ldGJsb2NrICVzJyAlICgKKyAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWZpeGxlbiwgc2VsZikpCisKKyAgICAgICAgZmlyc3QgPSBzZWxmLl9fY2xhc3NfXygnJXMvJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gKyBwcmVmaXhsZW5fZGlmZikpCisKKyAgICAgICAgeWllbGQgZmlyc3QKKyAgICAgICAgY3VycmVudCA9IGZpcnN0CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBicm9hZGNhc3QgPSBjdXJyZW50LmJyb2FkY2FzdF9hZGRyZXNzCisgICAgICAgICAgICBpZiBicm9hZGNhc3QgPT0gc2VsZi5icm9hZGNhc3RfYWRkcmVzczoKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIG5ld19hZGRyID0gc2VsZi5fYWRkcmVzc19jbGFzcyhpbnQoYnJvYWRjYXN0KSArIDEpCisgICAgICAgICAgICBjdXJyZW50ID0gc2VsZi5fX2NsYXNzX18oJyVzLyVzJyAlIChuZXdfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXhsZW4pKQorCisgICAgICAgICAgICB5aWVsZCBjdXJyZW50CisKKyAgICBkZWYgc3VwZXJuZXQoc2VsZiwgcHJlZml4bGVuX2RpZmY9MSwgbmV3X3ByZWZpeD1Ob25lKToKKyAgICAgICAgIiIiVGhlIHN1cGVybmV0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgbmV0d29yay4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcHJlZml4bGVuX2RpZmY6IEFuIGludGVnZXIsIHRoZSBhbW91bnQgdGhlIHByZWZpeCBsZW5ndGggb2YKKyAgICAgICAgICAgICAgdGhlIG5ldHdvcmsgc2hvdWxkIGJlIGRlY3JlYXNlZCBieS4gIEZvciBleGFtcGxlLCBnaXZlbiBhCisgICAgICAgICAgICAgIC8yNCBuZXR3b3JrIGFuZCBhIHByZWZpeGxlbl9kaWZmIG9mIDMsIGEgc3VwZXJuZXQgd2l0aCBhCisgICAgICAgICAgICAgIC8yMSBuZXRtYXNrIGlzIHJldHVybmVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBJUHY0IG5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIFZhbHVlRXJyb3I6IElmIHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYgPCAwLiBJLmUuLCB5b3UgaGF2ZQorICAgICAgICAgICAgICBhIG5lZ2F0aXZlIHByZWZpeCBsZW5ndGguCisgICAgICAgICAgICAgICAgT1IKKyAgICAgICAgICAgIElmIHByZWZpeGxlbl9kaWZmIGFuZCBuZXdfcHJlZml4IGFyZSBib3RoIHNldCBvciBuZXdfcHJlZml4IGlzIGEKKyAgICAgICAgICAgICAgbGFyZ2VyIG51bWJlciB0aGFuIHRoZSBjdXJyZW50IHByZWZpeCAobGFyZ2VyIG51bWJlciBtZWFucyBhCisgICAgICAgICAgICAgIHNtYWxsZXIgbmV0d29yaykKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fcHJlZml4bGVuID09IDA6CisgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGlmIG5ld19wcmVmaXggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuZXdfcHJlZml4ID4gc2VsZi5fcHJlZml4bGVuOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ25ldyBwcmVmaXggbXVzdCBiZSBzaG9ydGVyJykKKyAgICAgICAgICAgIGlmIHByZWZpeGxlbl9kaWZmICE9IDE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY2Fubm90IHNldCBwcmVmaXhsZW5fZGlmZiBhbmQgbmV3X3ByZWZpeCcpCisgICAgICAgICAgICBwcmVmaXhsZW5fZGlmZiA9IHNlbGYuX3ByZWZpeGxlbiAtIG5ld19wcmVmaXgKKworICAgICAgICBpZiBzZWxmLnByZWZpeGxlbiAtIHByZWZpeGxlbl9kaWZmIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgJ2N1cnJlbnQgcHJlZml4bGVuIGlzICVkLCBjYW5ub3QgaGF2ZSBhIHByZWZpeGxlbl9kaWZmIG9mICVkJyAlCisgICAgICAgICAgICAgICAgKHNlbGYucHJlZml4bGVuLCBwcmVmaXhsZW5fZGlmZikpCisgICAgICAgICMgVE9ETyAocG1vb2R5KTogb3B0aW1pemUgdGhpcy4KKyAgICAgICAgdCA9IHNlbGYuX19jbGFzc19fKCclcy8lZCcgJSAoc2VsZi5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJlZml4bGVuIC0gcHJlZml4bGVuX2RpZmYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdD1GYWxzZSkKKyAgICAgICAgcmV0dXJuIHQuX19jbGFzc19fKCclcy8lZCcgJSAodC5uZXR3b3JrX2FkZHJlc3MsIHQucHJlZml4bGVuKSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIG11bHRpY2FzdCBhZGRyZXNzLgorICAgICAgICAgICAgU2VlIFJGQyAyMzczIDIuNyBmb3IgZGV0YWlscy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19tdWx0aWNhc3QgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19tdWx0aWNhc3QpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgb3RoZXJ3aXNlIElFVEYgcmVzZXJ2ZWQuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB3aXRoaW4gb25lIG9mIHRoZQorICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NiBOZXR3b3JrIHJhbmdlcy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19yZXNlcnZlZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3Jlc2VydmVkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQyOTEuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiAoc2VsZi5uZXR3b3JrX2FkZHJlc3MuaXNfbGlua19sb2NhbCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX2xpbmtfbG9jYWwpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfcHJpdmF0ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgYWxsb2NhdGVkIGZvciBwcml2YXRlIG5ldHdvcmtzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MTkzLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3ByaXZhdGUgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19wcml2YXRlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc191bnNwZWNpZmllZCBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMy4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIChzZWxmLm5ldHdvcmtfYWRkcmVzcy5pc19sb29wYmFjayBhbmQKKyAgICAgICAgICAgICAgICBzZWxmLmJyb2FkY2FzdF9hZGRyZXNzLmlzX2xvb3BiYWNrKQorCisKK2NsYXNzIF9CYXNlVjQ6CisKKyAgICAiIiJCYXNlIElQdjQgb2JqZWN0LgorCisgICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIGJ5IElQdjQgb2JqZWN0cyBpbiBib3RoIHNpbmdsZSBJUAorICAgIGFkZHJlc3NlcyBhbmQgbmV0d29ya3MuCisKKyAgICAiIiIKKworICAgICMgRXF1aXZhbGVudCB0byAyNTUuMjU1LjI1NS4yNTUgb3IgMzIgYml0cyBvZiAxJ3MuCisgICAgX0FMTF9PTkVTID0gKDIqKklQVjRMRU5HVEgpIC0gMQorICAgIF9ERUNJTUFMX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OScpCisKKyAgICAjIHRoZSB2YWxpZCBvY3RldHMgZm9yIGhvc3QgYW5kIG5ldG1hc2tzLiBvbmx5IHVzZWZ1bCBmb3IgSVB2NC4KKyAgICBfdmFsaWRfbWFza19vY3RldHMgPSBmcm96ZW5zZXQoKDI1NSwgMjU0LCAyNTIsIDI0OCwgMjQwLCAyMjQsIDE5MiwgMTI4LCAwKSkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDQKKyAgICAgICAgc2VsZi5fbWF4X3ByZWZpeGxlbiA9IElQVjRMRU5HVEgKKworICAgIGRlZiBfZXhwbG9kZV9zaG9ydGhhbmRfaXBfc3RyaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc3RyKHNlbGYpCisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgICAgICAiIiJUdXJuIHRoZSBnaXZlbiBJUCBzdHJpbmcgaW50byBhbiBpbnRlZ2VyIGZvciBjb21wYXJpc29uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBpcF9zdHI6IEEgc3RyaW5nLCB0aGUgSVAgaXBfc3RyLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgSVAgaXBfc3RyIGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgQWRkcmVzc1ZhbHVlRXJyb3I6IGlmIGlwX3N0ciBpc24ndCBhIHZhbGlkIElQdjQgQWRkcmVzcy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGlwX3N0cjoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eScpCisKKyAgICAgICAgb2N0ZXRzID0gaXBfc3RyLnNwbGl0KCcuJykKKyAgICAgICAgaWYgbGVuKG9jdGV0cykgIT0gNDoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCJFeHBlY3RlZCA0IG9jdGV0cyBpbiAlciIgJSBpcF9zdHIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGludC5mcm9tX2J5dGVzKG1hcChzZWxmLl9wYXJzZV9vY3RldCwgb2N0ZXRzKSwgJ2JpZycpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKKworICAgIGRlZiBfcGFyc2Vfb2N0ZXQoc2VsZiwgb2N0ZXRfc3RyKToKKyAgICAgICAgIiIiQ29udmVydCBhIGRlY2ltYWwgb2N0ZXQgaW50byBhbiBpbnRlZ2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBvY3RldF9zdHI6IEEgc3RyaW5nLCB0aGUgbnVtYmVyIHRvIHBhcnNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgb2N0ZXQgYXMgYW4gaW50ZWdlci4KKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBWYWx1ZUVycm9yOiBpZiB0aGUgb2N0ZXQgaXNuJ3Qgc3RyaWN0bHkgYSBkZWNpbWFsIGZyb20gWzAuLjI1NV0uCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBvY3RldF9zdHI6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIikKKyAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgorICAgICAgICBpZiBub3Qgc2VsZi5fREVDSU1BTF9ESUdJVFMuaXNzdXBlcnNldChvY3RldF9zdHIpOgorICAgICAgICAgICAgbXNnID0gIk9ubHkgZGVjaW1hbCBkaWdpdHMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCisgICAgICAgICMgV2UgZG8gdGhlIGxlbmd0aCBjaGVjayBzZWNvbmQsIHNpbmNlIHRoZSBpbnZhbGlkIGNoYXJhY3RlciBlcnJvcgorICAgICAgICAjIGlzIGxpa2VseSB0byBiZSBtb3JlIGluZm9ybWF0aXZlIGZvciB0aGUgdXNlcgorICAgICAgICBpZiBsZW4ob2N0ZXRfc3RyKSA+IDM6CisgICAgICAgICAgICBtc2cgPSAiQXQgbW9zdCAzIGNoYXJhY3RlcnMgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSBvY3RldF9zdHIpCisgICAgICAgICMgQ29udmVydCB0byBpbnRlZ2VyICh3ZSBrbm93IGRpZ2l0cyBhcmUgbGVnYWwpCisgICAgICAgIG9jdGV0X2ludCA9IGludChvY3RldF9zdHIsIDEwKQorICAgICAgICAjIEFueSBvY3RldHMgdGhhdCBsb29rIGxpa2UgdGhleSAqbWlnaHQqIGJlIHdyaXR0ZW4gaW4gb2N0YWwsCisgICAgICAgICMgYW5kIHdoaWNoIGRvbid0IGxvb2sgZXhhY3RseSB0aGUgc2FtZSBpbiBib3RoIG9jdGFsIGFuZAorICAgICAgICAjIGRlY2ltYWwgYXJlIHJlamVjdGVkIGFzIGFtYmlndW91cworICAgICAgICBpZiBvY3RldF9pbnQgPiA3IGFuZCBvY3RldF9zdHJbMF0gPT0gJzAnOgorICAgICAgICAgICAgbXNnID0gIkFtYmlndW91cyAob2N0YWwvZGVjaW1hbCkgdmFsdWUgaW4gJXIgbm90IHBlcm1pdHRlZCIKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnICUgb2N0ZXRfc3RyKQorICAgICAgICBpZiBvY3RldF9pbnQgPiAyNTU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJPY3RldCAlZCAoPiAyNTUpIG5vdCBwZXJtaXR0ZWQiICUgb2N0ZXRfaW50KQorICAgICAgICByZXR1cm4gb2N0ZXRfaW50CisKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLCBpcF9pbnQpOgorICAgICAgICAiIiJUdXJucyBhIDMyLWJpdCBpbnRlZ2VyIGludG8gZG90dGVkIGRlY2ltYWwgbm90YXRpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX2ludDogQW4gaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBJUCBhZGRyZXNzIGFzIGEgc3RyaW5nIGluIGRvdHRlZCBkZWNpbWFsIG5vdGF0aW9uLgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gJy4nLmpvaW4obWFwKHN0ciwgaXBfaW50LnRvX2J5dGVzKDQsICdiaWcnKSkpCisKKyAgICBkZWYgX2lzX3ZhbGlkX25ldG1hc2soc2VsZiwgbmV0bWFzayk6CisgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBuZXRtYXNrIGlzIHZhbGlkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBuZXRtYXNrOiBBIHN0cmluZywgZWl0aGVyIGEgcHJlZml4IG9yIGRvdHRlZCBkZWNpbWFsCisgICAgICAgICAgICAgIG5ldG1hc2suCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgcHJlZml4IHJlcHJlc2VudHMgYSB2YWxpZCBJUHY0CisgICAgICAgICAgICBuZXRtYXNrLgorCisgICAgICAgICIiIgorICAgICAgICBtYXNrID0gbmV0bWFzay5zcGxpdCgnLicpCisgICAgICAgIGlmIGxlbihtYXNrKSA9PSA0OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciB4IGluIG1hc2s6CisgICAgICAgICAgICAgICAgICAgIGlmIGludCh4KSBub3QgaW4gc2VsZi5fdmFsaWRfbWFza19vY3RldHM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICMgRm91bmQgc29tZXRoaW5nIHRoYXQgaXNuJ3QgYW4gaW50ZWdlciBvciBpc24ndCB2YWxpZAorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZm9yIGlkeCwgeSBpbiBlbnVtZXJhdGUobWFzayk6CisgICAgICAgICAgICAgICAgaWYgaWR4ID4gMCBhbmQgeSA+IG1hc2tbaWR4IC0gMV06CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV0bWFzayA9IGludChuZXRtYXNrKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gMCA8PSBuZXRtYXNrIDw9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIGRlZiBfaXNfaG9zdG1hc2soc2VsZiwgaXBfc3RyKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgSVAgc3RyaW5nIGlzIGEgaG9zdG1hc2sgKHJhdGhlciB0aGFuIGEgbmV0bWFzaykuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBwb3RlbnRpYWwgaG9zdG1hc2suCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgSVAgc3RyaW5nIGlzIGEgaG9zdG1hc2suCisKKyAgICAgICAgIiIiCisgICAgICAgIGJpdHMgPSBpcF9zdHIuc3BsaXQoJy4nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXJ0cyA9IFt4IGZvciB4IGluIG1hcChpbnQsIGJpdHMpIGlmIHggaW4gc2VsZi5fdmFsaWRfbWFza19vY3RldHNdCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gbGVuKGJpdHMpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHBhcnRzWzBdIDwgcGFydHNbLTFdOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbWF4X3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB2ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbgorCisKK2NsYXNzIElQdjRBZGRyZXNzKF9CYXNlVjQsIF9CYXNlQWRkcmVzcyk6CisKKyAgICAiIiJSZXByZXNlbnQgYW5kIG1hbmlwdWxhdGUgc2luZ2xlIElQdjQgQWRkcmVzc2VzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorCisgICAgICAgICIiIgorICAgICAgICBBcmdzOgorICAgICAgICAgICAgYWRkcmVzczogQSBzdHJpbmcgb3IgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIElQCisKKyAgICAgICAgICAgICAgQWRkaXRpb25hbGx5LCBhbiBpbnRlZ2VyIGNhbiBiZSBwYXNzZWQsIHNvCisgICAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKSA9PSBJUHY0QWRkcmVzcygzMjIxMjI1OTg1KS4KKyAgICAgICAgICAgICAgb3IsIG1vcmUgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIElQdjRBZGRyZXNzKGludChJUHY0QWRkcmVzcygnMTkyLjAuMi4xJykpKSA9PQorICAgICAgICAgICAgICAgIElQdjRBZGRyZXNzKCcxOTIuMC4yLjEnKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBpcGFkZHJlc3MgaXNuJ3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MuCisKKyAgICAgICAgIiIiCisgICAgICAgIF9CYXNlQWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICBfQmFzZVY0Ll9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19pbnRfYWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5faXAgPSBhZGRyZXNzCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIENvbnN0cnVjdGluZyBmcm9tIGEgcGFja2VkIGFkZHJlc3MKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBieXRlcyk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19wYWNrZWRfYWRkcmVzcyhhZGRyZXNzLCA0KQorICAgICAgICAgICAgc2VsZi5faXAgPSBpbnQuZnJvbV9ieXRlcyhhZGRyZXNzLCAnYmlnJykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQXNzdW1lIGlucHV0IGFyZ3VtZW50IHRvIGJlIHN0cmluZyBvciBhbnkgb2JqZWN0IHJlcHJlc2VudGF0aW9uCisgICAgICAgICMgd2hpY2ggY29udmVydHMgaW50byBhIGZvcm1hdHRlZCBJUCBzdHJpbmcuCisgICAgICAgIGFkZHJfc3RyID0gc3RyKGFkZHJlc3MpCisgICAgICAgIHNlbGYuX2lwID0gc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJfc3RyKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhY2tlZChzZWxmKToKKyAgICAgICAgIiIiVGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGFkZHJlc3MuIiIiCisgICAgICAgIHJldHVybiB2NF9pbnRfdG9fcGFja2VkKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Jlc2VydmVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIG90aGVyd2lzZSBJRVRGIHJlc2VydmVkLgorCisgICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyB3aXRoaW4gdGhlCisgICAgICAgICAgICAgcmVzZXJ2ZWQgSVB2NCBOZXR3b3JrIHJhbmdlLgorCisgICAgICAgICIiIgorICAgICAgICByZXNlcnZlZF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzI0MC4wLjAuMC80JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gcmVzZXJ2ZWRfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3ByaXZhdGUoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhpcyBhZGRyZXNzIGlzIGFsbG9jYXRlZCBmb3IgcHJpdmF0ZSBuZXR3b3Jrcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgMTkxOC4KKworICAgICAgICAiIiIKKyAgICAgICAgcHJpdmF0ZV8xMCA9IElQdjROZXR3b3JrKCcxMC4wLjAuMC84JykKKyAgICAgICAgcHJpdmF0ZV8xNzIgPSBJUHY0TmV0d29yaygnMTcyLjE2LjAuMC8xMicpCisgICAgICAgIHByaXZhdGVfMTkyID0gSVB2NE5ldHdvcmsoJzE5Mi4xNjguMC4wLzE2JykKKyAgICAgICAgcmV0dXJuIChzZWxmIGluIHByaXZhdGVfMTAgb3IKKyAgICAgICAgICAgICAgICBzZWxmIGluIHByaXZhdGVfMTcyIG9yCisgICAgICAgICAgICAgICAgc2VsZiBpbiBwcml2YXRlXzE5MikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19tdWx0aWNhc3Qoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIG11bHRpY2FzdCB1c2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBtdWx0aWNhc3QuCisgICAgICAgICAgICBTZWUgUkZDIDMxNzEgZm9yIGRldGFpbHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzIyNC4wLjAuMC80JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc191bnNwZWNpZmllZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyB1bnNwZWNpZmllZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoaXMgaXMgdGhlIHVuc3BlY2lmaWVkIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDU3MzUgMy4KKworICAgICAgICAiIiIKKyAgICAgICAgdW5zcGVjaWZpZWRfYWRkcmVzcyA9IElQdjRBZGRyZXNzKCcwLjAuMC4wJykKKyAgICAgICAgcmV0dXJuIHNlbGYgPT0gdW5zcGVjaWZpZWRfYWRkcmVzcworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xvb3BiYWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIGEgbG9vcGJhY2sgcGVyIFJGQyAzMzMwLgorCisgICAgICAgICIiIgorICAgICAgICBsb29wYmFja19uZXR3b3JrID0gSVB2NE5ldHdvcmsoJzEyNy4wLjAuMC84JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbG9vcGJhY2tfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX2xpbmtfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIGxpbmstbG9jYWwuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBsaW5rLWxvY2FsIHBlciBSRkMgMzkyNy4KKworICAgICAgICAiIiIKKyAgICAgICAgbGlua2xvY2FsX25ldHdvcmsgPSBJUHY0TmV0d29yaygnMTY5LjI1NC4wLjAvMTYnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworCisKK2NsYXNzIElQdjRJbnRlcmZhY2UoSVB2NEFkZHJlc3MpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIChieXRlcywgaW50KSk6CisgICAgICAgICAgICBJUHY0QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5uZXR3b3JrID0gSVB2NE5ldHdvcmsoc2VsZi5faXApCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBhZGRyID0gX3NwbGl0X29wdGlvbmFsX25ldG1hc2soYWRkcmVzcykKKyAgICAgICAgSVB2NEFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkclswXSkKKworICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY0TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYubmV0d29yay5fcHJlZml4bGVuCisKKyAgICAgICAgc2VsZi5uZXRtYXNrID0gc2VsZi5uZXR3b3JrLm5ldG1hc2sKKyAgICAgICAgc2VsZi5ob3N0bWFzayA9IHNlbGYubmV0d29yay5ob3N0bWFzaworCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJWQnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV0d29yay5wcmVmaXhsZW4pCisKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19lcXVhbCA9IElQdjRBZGRyZXNzLl9fZXFfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgbm90IGFkZHJlc3NfZXF1YWwgb3IgYWRkcmVzc19lcXVhbCBpcyBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzX2VxdWFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPT0gb3RoZXIubmV0d29yaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIEFuIGludGVyZmFjZSB3aXRoIGFuIGFzc29jaWF0ZWQgbmV0d29yayBpcyBOT1QgdGhlCisgICAgICAgICAgICAjIHNhbWUgYXMgYW4gdW5hc3NvY2lhdGVkIGFkZHJlc3MuIFRoYXQncyB3aHkgdGhlIGhhc2gKKyAgICAgICAgICAgICMgdGFrZXMgdGhlIGV4dHJhIGluZm8gaW50byBhY2NvdW50LgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgYWRkcmVzc19sZXNzID0gSVB2NEFkZHJlc3MuX19sdF9fKHNlbGYsIG90aGVyKQorICAgICAgICBpZiBhZGRyZXNzX2xlc3MgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubmV0d29yayA8IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBXZSAqZG8qIGFsbG93IGFkZHJlc3NlcyBhbmQgaW50ZXJmYWNlcyB0byBiZSBzb3J0ZWQuIFRoZQorICAgICAgICAgICAgIyB1bmFzc29jaWF0ZWQgYWRkcmVzcyBpcyBjb25zaWRlcmVkIGxlc3MgdGhhbiBhbGwgaW50ZXJmYWNlcy4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5faXAgXiBzZWxmLl9wcmVmaXhsZW4gXiBpbnQoc2VsZi5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpcChzZWxmKToKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKHNlbGYuX2lwKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4pCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9uZXRtYXNrKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVzJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2l0aF9ob3N0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ob3N0bWFzaykKKworCitjbGFzcyBJUHY0TmV0d29yayhfQmFzZVY0LCBfQmFzZU5ldHdvcmspOgorCisgICAgIiIiVGhpcyBjbGFzcyByZXByZXNlbnRzIGFuZCBtYW5pcHVsYXRlcyAzMi1iaXQgSVB2NCBuZXR3b3JrICsgYWRkcmVzc2VzLi4KKworICAgIEF0dHJpYnV0ZXM6IFtleGFtcGxlcyBmb3IgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMC8yNycpXQorICAgICAgICAubmV0d29ya19hZGRyZXNzOiBJUHY0QWRkcmVzcygnMTkyLjAuMi4wJykKKyAgICAgICAgLmhvc3RtYXNrOiBJUHY0QWRkcmVzcygnMC4wLjAuMzEnKQorICAgICAgICAuYnJvYWRjYXN0X2FkZHJlc3M6IElQdjRBZGRyZXNzKCcxOTIuMC4yLjMyJykKKyAgICAgICAgLm5ldG1hc2s6IElQdjRBZGRyZXNzKCcyNTUuMjU1LjI1NS4yMjQnKQorICAgICAgICAucHJlZml4bGVuOiAyNworCisgICAgIiIiCisgICAgIyBDbGFzcyB0byB1c2Ugd2hlbiBjcmVhdGluZyBhZGRyZXNzIG9iamVjdHMKKyAgICBfYWRkcmVzc19jbGFzcyA9IElQdjRBZGRyZXNzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgc3RyaWN0PVRydWUpOgorCisgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjQgbmV0d29yayBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUCBbJiBuZXR3b3JrXS4KKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMC8yNCcKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMC8yNTUuMjU1LjI1NS4wJworICAgICAgICAgICAgICAnMTkyLjAuMC4yLzAuMC4wLjI1NScKKyAgICAgICAgICAgICAgYXJlIGFsbCBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgaW4gSVB2NC4gU2ltaWxhcmx5LAorICAgICAgICAgICAgICAnMTkyLjAuMi4xJworICAgICAgICAgICAgICAnMTkyLjAuMi4xLzI1NS4yNTUuMjU1LjI1NScKKyAgICAgICAgICAgICAgJzE5Mi4wLjIuMS8zMicKKyAgICAgICAgICAgICAgYXJlIGFsc28gZnVuY3Rpb25hbHkgZXF1aXZhbGVudC4gVGhhdCBpcyB0byBzYXksIGZhaWxpbmcgdG8KKyAgICAgICAgICAgICAgcHJvdmlkZSBhIHN1Ym5ldG1hc2sgd2lsbCBjcmVhdGUgYW4gb2JqZWN0IHdpdGggYSBtYXNrIG9mIC8zMi4KKworICAgICAgICAgICAgICBJZiB0aGUgbWFzayAocG9ydGlvbiBhZnRlciB0aGUgLyBpbiB0aGUgYXJndW1lbnQpIGlzIGdpdmVuIGluCisgICAgICAgICAgICAgIGRvdHRlZCBxdWFkIGZvcm0sIGl0IGlzIHRyZWF0ZWQgYXMgYSBuZXRtYXNrIGlmIGl0IHN0YXJ0cyB3aXRoIGEKKyAgICAgICAgICAgICAgbm9uLXplcm8gZmllbGQgKGUuZy4gLzI1NS4wLjAuMCA9PSAvOCkgYW5kIGFzIGEgaG9zdG1hc2sgaWYgaXQKKyAgICAgICAgICAgICAgc3RhcnRzIHdpdGggYSB6ZXJvIGZpZWxkIChlLmcuIDAuMjU1LjI1NS4yNTUgPT0gLzgpLCB3aXRoIHRoZQorICAgICAgICAgICAgICBzaW5nbGUgZXhjZXB0aW9uIG9mIGFuIGFsbC16ZXJvIG1hc2sgd2hpY2ggaXMgdHJlYXRlZCBhcyBhCisgICAgICAgICAgICAgIG5ldG1hc2sgPT0gLzAuIElmIG5vIG1hc2sgaXMgZ2l2ZW4sIGEgZGVmYXVsdCBvZiAvMzIgaXMgdXNlZC4KKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2NE5ldHdvcmsoJzE5Mi4wLjIuMScpID09IElQdjROZXR3b3JrKDMyMjEyMjU5ODUpCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY0SW50ZXJmYWNlKGludChJUHY0SW50ZXJmYWNlKCcxOTIuMC4yLjEnKSkpID09CisgICAgICAgICAgICAgICAgSVB2NEludGVyZmFjZSgnMTkyLjAuMi4xJykKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogSWYgaXBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NCBhZGRyZXNzLgorICAgICAgICAgICAgTmV0bWFza1ZhbHVlRXJyb3I6IElmIHRoZSBuZXRtYXNrIGlzbid0IHZhbGlkIGZvcgorICAgICAgICAgICAgICBhbiBJUHY0IGFkZHJlc3MuCisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzdHJpY3QgaXMgVHJ1ZSBhbmQgYSBuZXR3b3JrIGFkZHJlc3MgaXMgbm90CisgICAgICAgICAgICAgIHN1cHBsaWVkLgorCisgICAgICAgICIiIgorCisgICAgICAgIF9CYXNlVjQuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VOZXR3b3JrLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICAjZml4bWU6IGFkZHJlc3MvbmV0d29yayB0ZXN0IGhlcmUKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY0QWRkcmVzcyhhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fbWF4X3ByZWZpeGxlbgorICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3Moc2VsZi5fQUxMX09ORVMpCisgICAgICAgICAgICAjZml4bWU6IGFkZHJlc3MvbmV0d29yayB0ZXN0IGhlcmUuCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEFzc3VtZSBpbnB1dCBhcmd1bWVudCB0byBiZSBzdHJpbmcgb3IgYW55IG9iamVjdCByZXByZXNlbnRhdGlvbgorICAgICAgICAjIHdoaWNoIGNvbnZlcnRzIGludG8gYSBmb3JtYXR0ZWQgSVAgcHJlZml4IHN0cmluZy4KKyAgICAgICAgYWRkciA9IF9zcGxpdF9vcHRpb25hbF9uZXRtYXNrKGFkZHJlc3MpCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NEFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQorCisgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgorICAgICAgICAgICAgbWFzayA9IGFkZHJbMV0uc3BsaXQoJy4nKQorCisgICAgICAgICAgICBpZiBsZW4obWFzaykgPT0gNDoKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgZG90dGVkIGRlY2ltYWwgbmV0bWFzay4KKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9pc192YWxpZF9uZXRtYXNrKGFkZHJbMV0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkclsxXSkpCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLl9pc19ob3N0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrID0gSVB2NEFkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkclsxXSkgXiBzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBOZXRtYXNrVmFsdWVFcnJvcignJXIgaXMgbm90IGEgdmFsaWQgbmV0bWFzaycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBhZGRyWzFdKQorCisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuID0gc2VsZi5fcHJlZml4X2Zyb21faXBfaW50KGludChzZWxmLm5ldG1hc2spKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBuZXRtYXNrIGluIHByZWZpeCBsZW5ndGggZm9ybS4KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IoJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRkclsxXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkclsxXSkKKyAgICAgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY0QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoCisgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKSkKKworICAgICAgICBpZiBzdHJpY3Q6CisgICAgICAgICAgICBpZiAoSVB2NEFkZHJlc3MoaW50KHNlbGYubmV0d29ya19hZGRyZXNzKSAmIGludChzZWxmLm5ldG1hc2spKSAhPQorICAgICAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCclcyBoYXMgaG9zdCBiaXRzIHNldCcgJSBzZWxmKQorICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjRBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLm5ldG1hc2spKQorCisgICAgICAgIGlmIHNlbGYuX3ByZWZpeGxlbiA9PSAoc2VsZi5fbWF4X3ByZWZpeGxlbiAtIDEpOgorICAgICAgICAgICAgc2VsZi5ob3N0cyA9IHNlbGYuX19pdGVyX18KKworCitjbGFzcyBfQmFzZVY2OgorCisgICAgIiIiQmFzZSBJUHY2IG9iamVjdC4KKworICAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCBieSBJUHY2IG9iamVjdHMgaW4gYm90aCBzaW5nbGUgSVAKKyAgICBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzLgorCisgICAgIiIiCisKKyAgICBfQUxMX09ORVMgPSAoMioqSVBWNkxFTkdUSCkgLSAxCisgICAgX0hFWFRFVF9DT1VOVCA9IDgKKyAgICBfSEVYX0RJR0lUUyA9IGZyb3plbnNldCgnMDEyMzQ1Njc4OUFCQ0RFRmFiY2RlZicpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIHNlbGYuX3ZlcnNpb24gPSA2CisgICAgICAgIHNlbGYuX21heF9wcmVmaXhsZW4gPSBJUFY2TEVOR1RICisKKyAgICBkZWYgX2lwX2ludF9mcm9tX3N0cmluZyhzZWxmLCBpcF9zdHIpOgorICAgICAgICAiIiJUdXJuIGFuIElQdjYgaXBfc3RyIGludG8gYW4gaW50ZWdlci4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgaXBfc3RyOiBBIHN0cmluZywgdGhlIElQdjYgaXBfc3RyLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBbiBpbnQsIHRoZSBJUHY2IGFkZHJlc3MKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBBZGRyZXNzVmFsdWVFcnJvcjogaWYgaXBfc3RyIGlzbid0IGEgdmFsaWQgSVB2NiBBZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXBfc3RyOgorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IoJ0FkZHJlc3MgY2Fubm90IGJlIGVtcHR5JykKKworICAgICAgICBwYXJ0cyA9IGlwX3N0ci5zcGxpdCgnOicpCisKKyAgICAgICAgIyBBbiBJUHY2IGFkZHJlc3MgbmVlZHMgYXQgbGVhc3QgMiBjb2xvbnMgKDMgcGFydHMpLgorICAgICAgICBfbWluX3BhcnRzID0gMworICAgICAgICBpZiBsZW4ocGFydHMpIDwgX21pbl9wYXJ0czoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBsZWFzdCAlZCBwYXJ0cyBleHBlY3RlZCBpbiAlciIgJSAoX21pbl9wYXJ0cywgaXBfc3RyKQorICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQorCisgICAgICAgICMgSWYgdGhlIGFkZHJlc3MgaGFzIGFuIElQdjQtc3R5bGUgc3VmZml4LCBjb252ZXJ0IGl0IHRvIGhleGFkZWNpbWFsLgorICAgICAgICBpZiAnLicgaW4gcGFydHNbLTFdOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlwdjRfaW50ID0gSVB2NEFkZHJlc3MocGFydHMucG9wKCkpLl9pcAorICAgICAgICAgICAgZXhjZXB0IEFkZHJlc3NWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcigiJXMgaW4gJXIiICUgKGV4YywgaXBfc3RyKSkgZnJvbSBOb25lCisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoJyV4JyAlICgoaXB2NF9pbnQgPj4gMTYpICYgMHhGRkZGKSkKKyAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgnJXgnICUgKGlwdjRfaW50ICYgMHhGRkZGKSkKKworICAgICAgICAjIEFuIElQdjYgYWRkcmVzcyBjYW4ndCBoYXZlIG1vcmUgdGhhbiA4IGNvbG9ucyAoOSBwYXJ0cykuCisgICAgICAgICMgVGhlIGV4dHJhIGNvbG9uIGNvbWVzIGZyb20gdXNpbmcgdGhlICI6OiIgbm90YXRpb24gZm9yIGEgc2luZ2xlCisgICAgICAgICMgbGVhZGluZyBvciB0cmFpbGluZyB6ZXJvIHBhcnQuCisgICAgICAgIF9tYXhfcGFydHMgPSBzZWxmLl9IRVhURVRfQ09VTlQgKyAxCisgICAgICAgIGlmIGxlbihwYXJ0cykgPiBfbWF4X3BhcnRzOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgJWQgY29sb25zIHBlcm1pdHRlZCBpbiAlciIgJSAoX21heF9wYXJ0cy0xLCBpcF9zdHIpCisgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cpCisKKyAgICAgICAgIyBEaXNyZWdhcmRpbmcgdGhlIGVuZHBvaW50cywgZmluZCAnOjonIHdpdGggbm90aGluZyBpbiBiZXR3ZWVuLgorICAgICAgICAjIFRoaXMgaW5kaWNhdGVzIHRoYXQgYSBydW4gb2YgemVyb2VzIGhhcyBiZWVuIHNraXBwZWQuCisgICAgICAgIHNraXBfaW5kZXggPSBOb25lCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihwYXJ0cykgLSAxKToKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1tpXToKKyAgICAgICAgICAgICAgICBpZiBza2lwX2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAjIENhbid0IGhhdmUgbW9yZSB0aGFuIG9uZSAnOjonCisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IG9uZSAnOjonIHBlcm1pdHRlZCBpbiAlciIgJSBpcF9zdHIKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnKQorICAgICAgICAgICAgICAgIHNraXBfaW5kZXggPSBpCisKKyAgICAgICAgIyBwYXJ0c19oaSBpcyB0aGUgbnVtYmVyIG9mIHBhcnRzIHRvIGNvcHkgZnJvbSBhYm92ZS9iZWZvcmUgdGhlICc6OicKKyAgICAgICAgIyBwYXJ0c19sbyBpcyB0aGUgbnVtYmVyIG9mIHBhcnRzIHRvIGNvcHkgZnJvbSBiZWxvdy9hZnRlciB0aGUgJzo6JworICAgICAgICBpZiBza2lwX2luZGV4IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIyBJZiB3ZSBmb3VuZCBhICc6OicsIHRoZW4gY2hlY2sgaWYgaXQgYWxzbyBjb3ZlcnMgdGhlIGVuZHBvaW50cy4KKyAgICAgICAgICAgIHBhcnRzX2hpID0gc2tpcF9pbmRleAorICAgICAgICAgICAgcGFydHNfbG8gPSBsZW4ocGFydHMpIC0gc2tpcF9pbmRleCAtIDEKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1swXToKKyAgICAgICAgICAgICAgICBwYXJ0c19oaSAtPSAxCisgICAgICAgICAgICAgICAgaWYgcGFydHNfaGk6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgXjogcmVxdWlyZXMgXjo6CisgICAgICAgICAgICBpZiBub3QgcGFydHNbLTFdOgorICAgICAgICAgICAgICAgIHBhcnRzX2xvIC09IDEKKyAgICAgICAgICAgICAgICBpZiBwYXJ0c19sbzoKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKG1zZyAlIGlwX3N0cikgICMgOiQgcmVxdWlyZXMgOjokCisgICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gc2VsZi5fSEVYVEVUX0NPVU5UIC0gKHBhcnRzX2hpICsgcGFydHNfbG8pCisgICAgICAgICAgICBpZiBwYXJ0c19za2lwcGVkIDwgMToKKyAgICAgICAgICAgICAgICBtc2cgPSAiRXhwZWN0ZWQgYXQgbW9zdCAlZCBvdGhlciBwYXJ0cyB3aXRoICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgKHNlbGYuX0hFWFRFVF9DT1VOVC0xLCBpcF9zdHIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBPdGhlcndpc2UsIGFsbG9jYXRlIHRoZSBlbnRpcmUgYWRkcmVzcyB0byBwYXJ0c19oaS4gIFRoZQorICAgICAgICAgICAgIyBlbmRwb2ludHMgY291bGQgc3RpbGwgYmUgZW1wdHksIGJ1dCBfcGFyc2VfaGV4dGV0KCkgd2lsbCBjaGVjaworICAgICAgICAgICAgIyBmb3IgdGhhdC4KKyAgICAgICAgICAgIGlmIGxlbihwYXJ0cykgIT0gc2VsZi5fSEVYVEVUX0NPVU5UOgorICAgICAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5ICVkIHBhcnRzIGV4cGVjdGVkIHdpdGhvdXQgJzo6JyBpbiAlciIKKyAgICAgICAgICAgICAgICByYWlzZSBBZGRyZXNzVmFsdWVFcnJvcihtc2cgJSAoc2VsZi5fSEVYVEVUX0NPVU5ULCBpcF9zdHIpKQorICAgICAgICAgICAgaWYgbm90IHBhcnRzWzBdOgorICAgICAgICAgICAgICAgIG1zZyA9ICJMZWFkaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyBeOiByZXF1aXJlcyBeOjoKKyAgICAgICAgICAgIGlmIG5vdCBwYXJ0c1stMV06CisgICAgICAgICAgICAgICAgbXNnID0gIlRyYWlsaW5nICc6JyBvbmx5IHBlcm1pdHRlZCBhcyBwYXJ0IG9mICc6OicgaW4gJXIiCisgICAgICAgICAgICAgICAgcmFpc2UgQWRkcmVzc1ZhbHVlRXJyb3IobXNnICUgaXBfc3RyKSAgIyA6JCByZXF1aXJlcyA6OiQKKyAgICAgICAgICAgIHBhcnRzX2hpID0gbGVuKHBhcnRzKQorICAgICAgICAgICAgcGFydHNfbG8gPSAwCisgICAgICAgICAgICBwYXJ0c19za2lwcGVkID0gMAorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgTm93LCBwYXJzZSB0aGUgaGV4dGV0cyBpbnRvIGEgMTI4LWJpdCBpbnRlZ2VyLgorICAgICAgICAgICAgaXBfaW50ID0gMAorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFydHNfaGkpOgorICAgICAgICAgICAgICAgIGlwX2ludCA8PD0gMTYKKyAgICAgICAgICAgICAgICBpcF9pbnQgfD0gc2VsZi5fcGFyc2VfaGV4dGV0KHBhcnRzW2ldKQorICAgICAgICAgICAgaXBfaW50IDw8PSAxNiAqIHBhcnRzX3NraXBwZWQKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1wYXJ0c19sbywgMCk6CisgICAgICAgICAgICAgICAgaXBfaW50IDw8PSAxNgorICAgICAgICAgICAgICAgIGlwX2ludCB8PSBzZWxmLl9wYXJzZV9oZXh0ZXQocGFydHNbaV0pCisgICAgICAgICAgICByZXR1cm4gaXBfaW50CisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHJhaXNlIEFkZHJlc3NWYWx1ZUVycm9yKCIlcyBpbiAlciIgJSAoZXhjLCBpcF9zdHIpKSBmcm9tIE5vbmUKKworICAgIGRlZiBfcGFyc2VfaGV4dGV0KHNlbGYsIGhleHRldF9zdHIpOgorICAgICAgICAiIiJDb252ZXJ0IGFuIElQdjYgaGV4dGV0IHN0cmluZyBpbnRvIGFuIGludGVnZXIuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGhleHRldF9zdHI6IEEgc3RyaW5nLCB0aGUgbnVtYmVyIHRvIHBhcnNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgaGV4dGV0IGFzIGFuIGludGVnZXIuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogaWYgdGhlIGlucHV0IGlzbid0IHN0cmljdGx5IGEgaGV4IG51bWJlciBmcm9tCisgICAgICAgICAgICAgIFswLi5GRkZGXS4KKworICAgICAgICAiIiIKKyAgICAgICAgIyBXaGl0ZWxpc3QgdGhlIGNoYXJhY3RlcnMsIHNpbmNlIGludCgpIGFsbG93cyBhIGxvdCBvZiBiaXphcnJlIHN0dWZmLgorICAgICAgICBpZiBub3Qgc2VsZi5fSEVYX0RJR0lUUy5pc3N1cGVyc2V0KGhleHRldF9zdHIpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiT25seSBoZXggZGlnaXRzIHBlcm1pdHRlZCBpbiAlciIgJSBoZXh0ZXRfc3RyKQorICAgICAgICAjIFdlIGRvIHRoZSBsZW5ndGggY2hlY2sgc2Vjb25kLCBzaW5jZSB0aGUgaW52YWxpZCBjaGFyYWN0ZXIgZXJyb3IKKyAgICAgICAgIyBpcyBsaWtlbHkgdG8gYmUgbW9yZSBpbmZvcm1hdGl2ZSBmb3IgdGhlIHVzZXIKKyAgICAgICAgaWYgbGVuKGhleHRldF9zdHIpID4gNDoKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDQgY2hhcmFjdGVycyBwZXJtaXR0ZWQgaW4gJXIiCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKG1zZyAlIGhleHRldF9zdHIpCisgICAgICAgICMgTGVuZ3RoIGNoZWNrIG1lYW5zIHdlIGNhbiBza2lwIGNoZWNraW5nIHRoZSBpbnRlZ2VyIHZhbHVlCisgICAgICAgIHJldHVybiBpbnQoaGV4dGV0X3N0ciwgMTYpCisKKyAgICBkZWYgX2NvbXByZXNzX2hleHRldHMoc2VsZiwgaGV4dGV0cyk6CisgICAgICAgICIiIkNvbXByZXNzZXMgYSBsaXN0IG9mIGhleHRldHMuCisKKyAgICAgICAgQ29tcHJlc3NlcyBhIGxpc3Qgb2Ygc3RyaW5ncywgcmVwbGFjaW5nIHRoZSBsb25nZXN0IGNvbnRpbnVvdXMKKyAgICAgICAgc2VxdWVuY2Ugb2YgIjAiIGluIHRoZSBsaXN0IHdpdGggIiIgYW5kIGFkZGluZyBlbXB0eSBzdHJpbmdzIGF0CisgICAgICAgIHRoZSBiZWdpbm5pbmcgb3IgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIHN1Y2ggdGhhdCBzdWJzZXF1ZW50bHkKKyAgICAgICAgY2FsbGluZyAiOiIuam9pbihoZXh0ZXRzKSB3aWxsIHByb2R1Y2UgdGhlIGNvbXByZXNzZWQgdmVyc2lvbiBvZgorICAgICAgICB0aGUgSVB2NiBhZGRyZXNzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBoZXh0ZXRzOiBBIGxpc3Qgb2Ygc3RyaW5ncywgdGhlIGhleHRldHMgdG8gY29tcHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgbGlzdCBvZiBzdHJpbmdzLgorCisgICAgICAgICIiIgorICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKKyAgICAgICAgYmVzdF9kb3VibGVjb2xvbl9sZW4gPSAwCisgICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKKyAgICAgICAgZG91YmxlY29sb25fbGVuID0gMAorICAgICAgICBmb3IgaW5kZXgsIGhleHRldCBpbiBlbnVtZXJhdGUoaGV4dGV0cyk6CisgICAgICAgICAgICBpZiBoZXh0ZXQgPT0gJzAnOgorICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX2xlbiArPSAxCisgICAgICAgICAgICAgICAgaWYgZG91YmxlY29sb25fc3RhcnQgPT0gLTE6CisgICAgICAgICAgICAgICAgICAgICMgU3RhcnQgb2YgYSBzZXF1ZW5jZSBvZiB6ZXJvcy4KKyAgICAgICAgICAgICAgICAgICAgZG91YmxlY29sb25fc3RhcnQgPSBpbmRleAorICAgICAgICAgICAgICAgIGlmIGRvdWJsZWNvbG9uX2xlbiA+IGJlc3RfZG91YmxlY29sb25fbGVuOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgdGhlIGxvbmdlc3Qgc2VxdWVuY2Ugb2YgemVyb3Mgc28gZmFyLgorICAgICAgICAgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2xlbiA9IGRvdWJsZWNvbG9uX2xlbgorICAgICAgICAgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ID0gZG91YmxlY29sb25fc3RhcnQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZG91YmxlY29sb25fbGVuID0gMAorICAgICAgICAgICAgICAgIGRvdWJsZWNvbG9uX3N0YXJ0ID0gLTEKKworICAgICAgICBpZiBiZXN0X2RvdWJsZWNvbG9uX2xlbiA+IDE6CisgICAgICAgICAgICBiZXN0X2RvdWJsZWNvbG9uX2VuZCA9IChiZXN0X2RvdWJsZWNvbG9uX3N0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RfZG91YmxlY29sb25fbGVuKQorICAgICAgICAgICAgIyBGb3IgemVyb3MgYXQgdGhlIGVuZCBvZiB0aGUgYWRkcmVzcy4KKyAgICAgICAgICAgIGlmIGJlc3RfZG91YmxlY29sb25fZW5kID09IGxlbihoZXh0ZXRzKToKKyAgICAgICAgICAgICAgICBoZXh0ZXRzICs9IFsnJ10KKyAgICAgICAgICAgIGhleHRldHNbYmVzdF9kb3VibGVjb2xvbl9zdGFydDpiZXN0X2RvdWJsZWNvbG9uX2VuZF0gPSBbJyddCisgICAgICAgICAgICAjIEZvciB6ZXJvcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhZGRyZXNzLgorICAgICAgICAgICAgaWYgYmVzdF9kb3VibGVjb2xvbl9zdGFydCA9PSAwOgorICAgICAgICAgICAgICAgIGhleHRldHMgPSBbJyddICsgaGV4dGV0cworCisgICAgICAgIHJldHVybiBoZXh0ZXRzCisKKyAgICBkZWYgX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLCBpcF9pbnQ9Tm9uZSk6CisgICAgICAgICIiIlR1cm5zIGEgMTI4LWJpdCBpbnRlZ2VyIGludG8gaGV4YWRlY2ltYWwgbm90YXRpb24uCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX2ludDogQW4gaW50ZWdlciwgdGhlIElQIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFkZHJlc3MuCisKKyAgICAgICAgUmFpc2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvcjogVGhlIGFkZHJlc3MgaXMgYmlnZ2VyIHRoYW4gMTI4IGJpdHMgb2YgYWxsIG9uZXMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIGlwX2ludCBpcyBOb25lOgorICAgICAgICAgICAgaXBfaW50ID0gaW50KHNlbGYuX2lwKQorCisgICAgICAgIGlmIGlwX2ludCA+IHNlbGYuX0FMTF9PTkVTOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSVB2NiBhZGRyZXNzIGlzIHRvbyBsYXJnZScpCisKKyAgICAgICAgaGV4X3N0ciA9ICclMDMyeCcgJSBpcF9pbnQKKyAgICAgICAgaGV4dGV0cyA9IFsnJXgnICUgaW50KGhleF9zdHJbeDp4KzRdLCAxNikgZm9yIHggaW4gcmFuZ2UoMCwgMzIsIDQpXQorCisgICAgICAgIGhleHRldHMgPSBzZWxmLl9jb21wcmVzc19oZXh0ZXRzKGhleHRldHMpCisgICAgICAgIHJldHVybiAnOicuam9pbihoZXh0ZXRzKQorCisgICAgZGVmIF9leHBsb2RlX3Nob3J0aGFuZF9pcF9zdHJpbmcoc2VsZik6CisgICAgICAgICIiIkV4cGFuZCBhIHNob3J0ZW5lZCBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGlwX3N0cjogQSBzdHJpbmcsIHRoZSBJUHY2IGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgc3RyaW5nLCB0aGUgZXhwYW5kZWQgSVB2NiBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYsIElQdjZOZXR3b3JrKToKKyAgICAgICAgICAgIGlwX3N0ciA9IHN0cihzZWxmLm5ldHdvcmtfYWRkcmVzcykKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYsIElQdjZJbnRlcmZhY2UpOgorICAgICAgICAgICAgaXBfc3RyID0gc3RyKHNlbGYuaXApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpcF9zdHIgPSBzdHIoc2VsZikKKworICAgICAgICBpcF9pbnQgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoaXBfc3RyKQorICAgICAgICBoZXhfc3RyID0gJyUwMzJ4JyAlIGlwX2ludAorICAgICAgICBwYXJ0cyA9IFtoZXhfc3RyW3g6eCs0XSBmb3IgeCBpbiByYW5nZSgwLCAzMiwgNCldCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZiwgKF9CYXNlTmV0d29yaywgSVB2NkludGVyZmFjZSkpOgorICAgICAgICAgICAgcmV0dXJuICclcy8lZCcgJSAoJzonLmpvaW4ocGFydHMpLCBzZWxmLl9wcmVmaXhsZW4pCisgICAgICAgIHJldHVybiAnOicuam9pbihwYXJ0cykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtYXhfcHJlZml4bGVuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbWF4X3ByZWZpeGxlbgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uCisKKworY2xhc3MgSVB2NkFkZHJlc3MoX0Jhc2VWNiwgX0Jhc2VBZGRyZXNzKToKKworICAgICIiIlJlcHJlc2VudCBhbmQgbWFuaXB1bGF0ZSBzaW5nbGUgSVB2NiBBZGRyZXNzZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgICIiIkluc3RhbnRpYXRlIGEgbmV3IElQdjYgYWRkcmVzcyBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGFkZHJlc3M6IEEgc3RyaW5nIG9yIGludGVnZXIgcmVwcmVzZW50aW5nIHRoZSBJUAorCisgICAgICAgICAgICAgIEFkZGl0aW9uYWxseSwgYW4gaW50ZWdlciBjYW4gYmUgcGFzc2VkLCBzbworICAgICAgICAgICAgICBJUHY2QWRkcmVzcygnMjAwMTpkYjg6OicpID09CisgICAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoNDI1NDA3NjY0MTEyODI1OTI4NTY5MDM5ODQ5NTE2NTM4MjY1NjApCisgICAgICAgICAgICAgIG9yLCBtb3JlIGdlbmVyYWxseQorICAgICAgICAgICAgICBJUHY2QWRkcmVzcyhpbnQoSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKSkpID09CisgICAgICAgICAgICAgICAgSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjonKQorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBfQmFzZUFkZHJlc3MuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VWNi5fX2luaXRfXyhzZWxmLCBhZGRyZXNzKQorCisgICAgICAgICMgRWZmaWNpZW50IGNvbnN0cnVjdG9yIGZyb20gaW50ZWdlci4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShhZGRyZXNzLCBpbnQpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW50X2FkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX2lwID0gYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBDb25zdHJ1Y3RpbmcgZnJvbSBhIHBhY2tlZCBhZGRyZXNzCisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgYnl0ZXMpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfcGFja2VkX2FkZHJlc3MoYWRkcmVzcywgMTYpCisgICAgICAgICAgICBzZWxmLl9pcCA9IGludC5mcm9tX2J5dGVzKGFkZHJlc3MsICdiaWcnKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHN0cmluZy4KKyAgICAgICAgYWRkcl9zdHIgPSBzdHIoYWRkcmVzcykKKyAgICAgICAgc2VsZi5faXAgPSBzZWxmLl9pcF9pbnRfZnJvbV9zdHJpbmcoYWRkcl9zdHIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFja2VkKHNlbGYpOgorICAgICAgICAiIiJUaGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgYWRkcmVzcy4iIiIKKyAgICAgICAgcmV0dXJuIHY2X2ludF90b19wYWNrZWQoc2VsZi5faXApCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfbXVsdGljYXN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBtdWx0aWNhc3QgdXNlLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgYSBtdWx0aWNhc3QgYWRkcmVzcy4KKyAgICAgICAgICAgIFNlZSBSRkMgMjM3MyAyLjcgZm9yIGRldGFpbHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIG11bHRpY2FzdF9uZXR3b3JrID0gSVB2Nk5ldHdvcmsoJ2ZmMDA6Oi84JykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gbXVsdGljYXN0X25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19yZXNlcnZlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBvdGhlcndpc2UgSUVURiByZXNlcnZlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHdpdGhpbiBvbmUgb2YgdGhlCisgICAgICAgICAgICByZXNlcnZlZCBJUHY2IE5ldHdvcmsgcmFuZ2VzLgorCisgICAgICAgICIiIgorICAgICAgICByZXNlcnZlZF9uZXR3b3JrcyA9IFtJUHY2TmV0d29yaygnOjovOCcpLCBJUHY2TmV0d29yaygnMTAwOjovOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnMjAwOjovNycpLCBJUHY2TmV0d29yaygnNDAwOjovNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwOjovNScpLCBJUHY2TmV0d29yaygnMTAwMDo6LzQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzQwMDA6Oi8zJyksIElQdjZOZXR3b3JrKCc2MDAwOjovMycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnODAwMDo6LzMnKSwgSVB2Nk5ldHdvcmsoJ0EwMDA6Oi8zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCdDMDAwOjovMycpLCBJUHY2TmV0d29yaygnRTAwMDo6LzQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJ0YwMDA6Oi81JyksIElQdjZOZXR3b3JrKCdGODAwOjovNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUHY2TmV0d29yaygnRkUwMDo6LzknKV0KKworICAgICAgICByZXR1cm4gYW55KHNlbGYgaW4geCBmb3IgeCBpbiByZXNlcnZlZF9uZXR3b3JrcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19saW5rX2xvY2FsKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIGZvciBsaW5rLWxvY2FsLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyA0MjkxLgorCisgICAgICAgICIiIgorICAgICAgICBsaW5rbG9jYWxfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmZTgwOjovMTAnKQorICAgICAgICByZXR1cm4gc2VsZiBpbiBsaW5rbG9jYWxfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3NpdGVfbG9jYWwoc2VsZik6CisgICAgICAgICIiIlRlc3QgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgZm9yIHNpdGUtbG9jYWwuCisKKyAgICAgICAgTm90ZSB0aGF0IHRoZSBzaXRlLWxvY2FsIGFkZHJlc3Mgc3BhY2UgaGFzIGJlZW4gZGVwcmVjYXRlZCBieSBSRkMgMzg3OS4KKyAgICAgICAgVXNlIGlzX3ByaXZhdGUgdG8gdGVzdCBpZiB0aGlzIGFkZHJlc3MgaXMgaW4gdGhlIHNwYWNlIG9mIHVuaXF1ZSBsb2NhbAorICAgICAgICBhZGRyZXNzZXMgYXMgZGVmaW5lZCBieSBSRkMgNDE5My4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBhZGRyZXNzIGlzIHJlc2VydmVkIHBlciBSRkMgMzUxMyAyLjUuNi4KKworICAgICAgICAiIiIKKyAgICAgICAgc2l0ZWxvY2FsX25ldHdvcmsgPSBJUHY2TmV0d29yaygnZmVjMDo6LzEwJykKKyAgICAgICAgcmV0dXJuIHNlbGYgaW4gc2l0ZWxvY2FsX25ldHdvcmsKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19wcml2YXRlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBhbGxvY2F0ZWQgZm9yIHByaXZhdGUgbmV0d29ya3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBwZXIgUkZDIDQxOTMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHByaXZhdGVfbmV0d29yayA9IElQdjZOZXR3b3JrKCdmYzAwOjovNycpCisgICAgICAgIHJldHVybiBzZWxmIGluIHByaXZhdGVfbmV0d29yaworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGlzX3Vuc3BlY2lmaWVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGlmIHRoZSBhZGRyZXNzIGlzIHVuc3BlY2lmaWVkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhpcyBpcyB0aGUgdW5zcGVjaWZpZWQgYWRkcmVzcyBhcyBkZWZpbmVkIGluCisgICAgICAgICAgICBSRkMgMjM3MyAyLjUuMi4KKworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDAKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGUgYWRkcmVzcyBpcyBhIGxvb3BiYWNrIGFkZHJlc3MgYXMgZGVmaW5lZCBpbgorICAgICAgICAgICAgUkZDIDIzNzMgMi41LjMuCisKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAxCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXB2NF9tYXBwZWQoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgSVB2NCBtYXBwZWQgYWRkcmVzcy4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgSWYgdGhlIElQdjYgYWRkcmVzcyBpcyBhIHY0IG1hcHBlZCBhZGRyZXNzLCByZXR1cm4gdGhlCisgICAgICAgICAgICBJUHY0IG1hcHBlZCBhZGRyZXNzLiBSZXR1cm4gTm9uZSBvdGhlcndpc2UuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIChzZWxmLl9pcCA+PiAzMikgIT0gMHhGRkZGOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIElQdjRBZGRyZXNzKHNlbGYuX2lwICYgMHhGRkZGRkZGRikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0ZXJlZG8oc2VsZik6CisgICAgICAgICIiIlR1cGxlIG9mIGVtYmVkZGVkIHRlcmVkbyBJUHMuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFR1cGxlIG9mIHRoZSAoc2VydmVyLCBjbGllbnQpIElQcyBvciBOb25lIGlmIHRoZSBhZGRyZXNzCisgICAgICAgICAgICBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHRlcmVkbyBhZGRyZXNzIChkb2Vzbid0IHN0YXJ0IHdpdGgKKyAgICAgICAgICAgIDIwMDE6Oi8zMikKKworICAgICAgICAiIiIKKyAgICAgICAgaWYgKHNlbGYuX2lwID4+IDk2KSAhPSAweDIwMDEwMDAwOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIChJUHY0QWRkcmVzcygoc2VsZi5faXAgPj4gNjQpICYgMHhGRkZGRkZGRiksCisgICAgICAgICAgICAgICAgSVB2NEFkZHJlc3MofnNlbGYuX2lwICYgMHhGRkZGRkZGRikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgc2l4dG9mb3VyKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIElQdjQgNnRvNCBlbWJlZGRlZCBhZGRyZXNzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBUaGUgSVB2NCA2dG80LWVtYmVkZGVkIGFkZHJlc3MgaWYgcHJlc2VudCBvciBOb25lIGlmIHRoZQorICAgICAgICAgICAgYWRkcmVzcyBkb2Vzbid0IGFwcGVhciB0byBjb250YWluIGEgNnRvNCBlbWJlZGRlZCBhZGRyZXNzLgorCisgICAgICAgICIiIgorICAgICAgICBpZiAoc2VsZi5faXAgPj4gMTEyKSAhPSAweDIwMDI6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gSVB2NEFkZHJlc3MoKHNlbGYuX2lwID4+IDgwKSAmIDB4RkZGRkZGRkYpCisKKworY2xhc3MgSVB2NkludGVyZmFjZShJUHY2QWRkcmVzcyk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoYWRkcmVzcywgKGJ5dGVzLCBpbnQpKToKKyAgICAgICAgICAgIElQdjZBZGRyZXNzLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhzZWxmLl9pcCkKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorICAgICAgICBJUHY2QWRkcmVzcy5fX2luaXRfXyhzZWxmLCBhZGRyWzBdKQorICAgICAgICBzZWxmLm5ldHdvcmsgPSBJUHY2TmV0d29yayhhZGRyZXNzLCBzdHJpY3Q9RmFsc2UpCisgICAgICAgIHNlbGYubmV0bWFzayA9IHNlbGYubmV0d29yay5uZXRtYXNrCisgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYubmV0d29yay5fcHJlZml4bGVuCisgICAgICAgIHNlbGYuaG9zdG1hc2sgPSBzZWxmLm5ldHdvcmsuaG9zdG1hc2sKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJyVzLyVkJyAlIChzZWxmLl9zdHJpbmdfZnJvbV9pcF9pbnQoc2VsZi5faXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmsucHJlZml4bGVuKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfZXF1YWwgPSBJUHY2QWRkcmVzcy5fX2VxX18oc2VsZiwgb3RoZXIpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzX2VxdWFsIG9yIGFkZHJlc3NfZXF1YWwgaXMgTm90SW1wbGVtZW50ZWQ6CisgICAgICAgICAgICByZXR1cm4gYWRkcmVzc19lcXVhbAorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5uZXR3b3JrID09IG90aGVyLm5ldHdvcmsKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgIyBBbiBpbnRlcmZhY2Ugd2l0aCBhbiBhc3NvY2lhdGVkIG5ldHdvcmsgaXMgTk9UIHRoZQorICAgICAgICAgICAgIyBzYW1lIGFzIGFuIHVuYXNzb2NpYXRlZCBhZGRyZXNzLiBUaGF0J3Mgd2h5IHRoZSBoYXNoCisgICAgICAgICAgICAjIHRha2VzIHRoZSBleHRyYSBpbmZvIGludG8gYWNjb3VudC4KKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIGFkZHJlc3NfbGVzcyA9IElQdjZBZGRyZXNzLl9fbHRfXyhzZWxmLCBvdGhlcikKKyAgICAgICAgaWYgYWRkcmVzc19sZXNzIGlzIE5vdEltcGxlbWVudGVkOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5ldHdvcmsgPCBvdGhlci5uZXR3b3JrCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgV2UgKmRvKiBhbGxvdyBhZGRyZXNzZXMgYW5kIGludGVyZmFjZXMgdG8gYmUgc29ydGVkLiBUaGUKKyAgICAgICAgICAgICMgdW5hc3NvY2lhdGVkIGFkZHJlc3MgaXMgY29uc2lkZXJlZCBsZXNzIHRoYW4gYWxsIGludGVyZmFjZXMuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwIF4gc2VsZi5fcHJlZml4bGVuIF4gaW50KHNlbGYubmV0d29yay5uZXR3b3JrX2FkZHJlc3MpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXAoc2VsZik6CisgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhzZWxmLl9pcCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3aXRoX3ByZWZpeGxlbihzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHJlZml4bGVuKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfbmV0bWFzayhzZWxmKToKKyAgICAgICAgcmV0dXJuICclcy8lcycgJSAoc2VsZi5fc3RyaW5nX2Zyb21faXBfaW50KHNlbGYuX2lwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXRtYXNrKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHdpdGhfaG9zdG1hc2soc2VsZik6CisgICAgICAgIHJldHVybiAnJXMvJXMnICUgKHNlbGYuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLl9pcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG9zdG1hc2spCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfdW5zcGVjaWZpZWQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9pcCA9PSAwIGFuZCBzZWxmLm5ldHdvcmsuaXNfdW5zcGVjaWZpZWQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBpc19sb29wYmFjayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2lwID09IDEgYW5kIHNlbGYubmV0d29yay5pc19sb29wYmFjaworCisKK2NsYXNzIElQdjZOZXR3b3JrKF9CYXNlVjYsIF9CYXNlTmV0d29yayk6CisKKyAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYW5kIG1hbmlwdWxhdGVzIDEyOC1iaXQgSVB2NiBuZXR3b3Jrcy4KKworICAgIEF0dHJpYnV0ZXM6IFtleGFtcGxlcyBmb3IgSVB2NignMjAwMTpkYjg6OjEwMDAvMTI0JyldCisgICAgICAgIC5uZXR3b3JrX2FkZHJlc3M6IElQdjZBZGRyZXNzKCcyMDAxOmRiODo6MTAwMCcpCisgICAgICAgIC5ob3N0bWFzazogSVB2NkFkZHJlc3MoJzo6ZicpCisgICAgICAgIC5icm9hZGNhc3RfYWRkcmVzczogSVB2NkFkZHJlc3MoJzIwMDE6ZGI4OjoxMDBmJykKKyAgICAgICAgLm5ldG1hc2s6IElQdjZBZGRyZXNzKCdmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZjAnKQorICAgICAgICAucHJlZml4bGVuOiAxMjQKKworICAgICIiIgorCisgICAgIyBDbGFzcyB0byB1c2Ugd2hlbiBjcmVhdGluZyBhZGRyZXNzIG9iamVjdHMKKyAgICBfYWRkcmVzc19jbGFzcyA9IElQdjZBZGRyZXNzCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgc3RyaWN0PVRydWUpOgorICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBJUHY2IE5ldHdvcmsgb2JqZWN0LgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBhZGRyZXNzOiBBIHN0cmluZyBvciBpbnRlZ2VyIHJlcHJlc2VudGluZyB0aGUgSVB2NiBuZXR3b3JrIG9yIHRoZQorICAgICAgICAgICAgICBJUCBhbmQgcHJlZml4L25ldG1hc2suCisgICAgICAgICAgICAgICcyMDAxOmRiODo6LzEyOCcKKyAgICAgICAgICAgICAgJzIwMDE6ZGI4OjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwLzEyOCcKKyAgICAgICAgICAgICAgJzIwMDE6ZGI4OjonCisgICAgICAgICAgICAgIGFyZSBhbGwgZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGluIElQdjYuICBUaGF0IGlzIHRvIHNheSwKKyAgICAgICAgICAgICAgZmFpbGluZyB0byBwcm92aWRlIGEgc3VibmV0bWFzayB3aWxsIGNyZWF0ZSBhbiBvYmplY3Qgd2l0aAorICAgICAgICAgICAgICBhIG1hc2sgb2YgLzEyOC4KKworICAgICAgICAgICAgICBBZGRpdGlvbmFsbHksIGFuIGludGVnZXIgY2FuIGJlIHBhc3NlZCwgc28KKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoJzIwMDE6ZGI4OjonKSA9PQorICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKDQyNTQwNzY2NDExMjgyNTkyODU2OTAzOTg0OTUxNjUzODI2NTYwKQorICAgICAgICAgICAgICBvciwgbW9yZSBnZW5lcmFsbHkKKyAgICAgICAgICAgICAgSVB2Nk5ldHdvcmsoaW50KElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykpKSA9PQorICAgICAgICAgICAgICAgIElQdjZOZXR3b3JrKCcyMDAxOmRiODo6JykKKworICAgICAgICAgICAgc3RyaWN0OiBBIGJvb2xlYW4uIElmIHRydWUsIGVuc3VyZSB0aGF0IHdlIGhhdmUgYmVlbiBwYXNzZWQKKyAgICAgICAgICAgICAgQSB0cnVlIG5ldHdvcmsgYWRkcmVzcywgZWcsIDIwMDE6ZGI4OjoxMDAwLzEyNCBhbmQgbm90IGFuCisgICAgICAgICAgICAgIElQIGFkZHJlc3Mgb24gYSBuZXR3b3JrLCBlZywgMjAwMTpkYjg6OjEvMTI0LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIEFkZHJlc3NWYWx1ZUVycm9yOiBJZiBhZGRyZXNzIGlzbid0IGEgdmFsaWQgSVB2NiBhZGRyZXNzLgorICAgICAgICAgICAgTmV0bWFza1ZhbHVlRXJyb3I6IElmIHRoZSBuZXRtYXNrIGlzbid0IHZhbGlkIGZvcgorICAgICAgICAgICAgICBhbiBJUHY2IGFkZHJlc3MuCisgICAgICAgICAgICBWYWx1ZUVycm9yOiBJZiBzdHJpY3Qgd2FzIFRydWUgYW5kIGEgbmV0d29yayBhZGRyZXNzIHdhcyBub3QKKyAgICAgICAgICAgICAgc3VwcGxpZWQuCisKKyAgICAgICAgIiIiCisgICAgICAgIF9CYXNlVjYuX19pbml0X18oc2VsZiwgYWRkcmVzcykKKyAgICAgICAgX0Jhc2VOZXR3b3JrLl9faW5pdF9fKHNlbGYsIGFkZHJlc3MpCisKKyAgICAgICAgIyBFZmZpY2llbnQgY29uc3RydWN0b3IgZnJvbSBpbnRlZ2VyLgorICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGludCk6CisgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyA9IElQdjZBZGRyZXNzKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBzZWxmLl9tYXhfcHJlZml4bGVuCisgICAgICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9BTExfT05FUykKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgQ29uc3RydWN0aW5nIGZyb20gYSBwYWNrZWQgYWRkcmVzcworICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGJ5dGVzKToKKyAgICAgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3MoYWRkcmVzcykKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKyAgICAgICAgICAgIHNlbGYubmV0bWFzayA9IElQdjZBZGRyZXNzKHNlbGYuX0FMTF9PTkVTKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1bWUgaW5wdXQgYXJndW1lbnQgdG8gYmUgc3RyaW5nIG9yIGFueSBvYmplY3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyB3aGljaCBjb252ZXJ0cyBpbnRvIGEgZm9ybWF0dGVkIElQIHByZWZpeCBzdHJpbmcuCisgICAgICAgIGFkZHIgPSBfc3BsaXRfb3B0aW9uYWxfbmV0bWFzayhhZGRyZXNzKQorCisgICAgICAgIHNlbGYubmV0d29ya19hZGRyZXNzID0gSVB2NkFkZHJlc3Moc2VsZi5faXBfaW50X2Zyb21fc3RyaW5nKGFkZHJbMF0pKQorCisgICAgICAgIGlmIGxlbihhZGRyKSA9PSAyOgorICAgICAgICAgICAgaWYgc2VsZi5faXNfdmFsaWRfbmV0bWFzayhhZGRyWzFdKToKKyAgICAgICAgICAgICAgICBzZWxmLl9wcmVmaXhsZW4gPSBpbnQoYWRkclsxXSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgTmV0bWFza1ZhbHVlRXJyb3IoJyVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2snCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYWRkclsxXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3ByZWZpeGxlbiA9IHNlbGYuX21heF9wcmVmaXhsZW4KKworICAgICAgICBzZWxmLm5ldG1hc2sgPSBJUHY2QWRkcmVzcyhzZWxmLl9pcF9pbnRfZnJvbV9wcmVmaXgoc2VsZi5fcHJlZml4bGVuKSkKKyAgICAgICAgaWYgc3RyaWN0OgorICAgICAgICAgICAgaWYgKElQdjZBZGRyZXNzKGludChzZWxmLm5ldHdvcmtfYWRkcmVzcykgJiBpbnQoc2VsZi5uZXRtYXNrKSkgIT0KKyAgICAgICAgICAgICAgICBzZWxmLm5ldHdvcmtfYWRkcmVzcyk6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJXMgaGFzIGhvc3QgYml0cyBzZXQnICUgc2VsZikKKyAgICAgICAgc2VsZi5uZXR3b3JrX2FkZHJlc3MgPSBJUHY2QWRkcmVzcyhpbnQoc2VsZi5uZXR3b3JrX2FkZHJlc3MpICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2VsZi5uZXRtYXNrKSkKKworICAgICAgICBpZiBzZWxmLl9wcmVmaXhsZW4gPT0gKHNlbGYuX21heF9wcmVmaXhsZW4gLSAxKToKKyAgICAgICAgICAgIHNlbGYuaG9zdHMgPSBzZWxmLl9faXRlcl9fCisKKyAgICBkZWYgX2lzX3ZhbGlkX25ldG1hc2soc2VsZiwgcHJlZml4bGVuKToKKyAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIG5ldG1hc2svcHJlZml4bGVuIGlzIHZhbGlkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwcmVmaXhsZW46IEEgc3RyaW5nLCB0aGUgbmV0bWFzayBpbiBwcmVmaXggbGVuZ3RoIGZvcm1hdC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgQSBib29sZWFuLCBUcnVlIGlmIHRoZSBwcmVmaXggcmVwcmVzZW50cyBhIHZhbGlkIElQdjYKKyAgICAgICAgICAgIG5ldG1hc2suCisKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHByZWZpeGxlbiA9IGludChwcmVmaXhsZW4pCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiAwIDw9IHByZWZpeGxlbiA8PSBzZWxmLl9tYXhfcHJlZml4bGVuCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgaXNfc2l0ZV9sb2NhbChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBpZiB0aGUgYWRkcmVzcyBpcyByZXNlcnZlZCBmb3Igc2l0ZS1sb2NhbC4KKworICAgICAgICBOb3RlIHRoYXQgdGhlIHNpdGUtbG9jYWwgYWRkcmVzcyBzcGFjZSBoYXMgYmVlbiBkZXByZWNhdGVkIGJ5IFJGQyAzODc5LgorICAgICAgICBVc2UgaXNfcHJpdmF0ZSB0byB0ZXN0IGlmIHRoaXMgYWRkcmVzcyBpcyBpbiB0aGUgc3BhY2Ugb2YgdW5pcXVlIGxvY2FsCisgICAgICAgIGFkZHJlc3NlcyBhcyBkZWZpbmVkIGJ5IFJGQyA0MTkzLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBBIGJvb2xlYW4sIFRydWUgaWYgdGhlIGFkZHJlc3MgaXMgcmVzZXJ2ZWQgcGVyIFJGQyAzNTEzIDIuNS42LgorCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gKHNlbGYubmV0d29ya19hZGRyZXNzLmlzX3NpdGVfbG9jYWwgYW5kCisgICAgICAgICAgICAgICAgc2VsZi5icm9hZGNhc3RfYWRkcmVzcy5pc19zaXRlX2xvY2FsKQpkaWZmIC0tZ2l0IGEvTGliL2pzb24vZGVjb2Rlci5weSBiL0xpYi9qc29uL2RlY29kZXIucHkKaW5kZXggZGMxMTU1Yi4uMDdmZDY5NiAxMDA2NDQKLS0tIGEvTGliL2pzb24vZGVjb2Rlci5weQorKysgYi9MaWIvanNvbi9kZWNvZGVyLnB5CkBAIC0xMjEsOCArMTIxLDcgQEAKICAgICAgICAgICAgICAgICBtc2cgPSAiSW52YWxpZCBcXHVYWFhYIGVzY2FwZSIKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGVycm1zZyhtc2csIHMsIGVuZCkpCiAgICAgICAgICAgICB1bmkgPSBpbnQoZXNjLCAxNikKLSAgICAgICAgICAgICMgQ2hlY2sgZm9yIHN1cnJvZ2F0ZSBwYWlyIG9uIFVDUy00IHN5c3RlbXMKLSAgICAgICAgICAgIGlmIDB4ZDgwMCA8PSB1bmkgPD0gMHhkYmZmIGFuZCBzeXMubWF4dW5pY29kZSA+IDY1NTM1OgorICAgICAgICAgICAgaWYgMHhkODAwIDw9IHVuaSA8PSAweGRiZmY6CiAgICAgICAgICAgICAgICAgbXNnID0gIkludmFsaWQgXFx1WFhYWFxcdVhYWFggc3Vycm9nYXRlIHBhaXIiCiAgICAgICAgICAgICAgICAgaWYgbm90IHNbZW5kICsgNTplbmQgKyA3XSA9PSAnXFx1JzoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihlcnJtc2cobXNnLCBzLCBlbmQpKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvX19tYWluX18ucHkgYi9MaWIvbGliMnRvMy9fX21haW5fXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDY4OGJhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2xpYjJ0bzMvX19tYWluX18ucHkKQEAgLTAsMCArMSw0IEBACitpbXBvcnQgc3lzCitmcm9tIC5tYWluIGltcG9ydCBtYWluCisKK3N5cy5leGl0KG1haW4oImxpYjJ0bzMuZml4ZXMiKSkKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkgYi9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CmluZGV4IGFmYzA0NjcuLmIxNzYwNTYgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQpAQCAtMjcsNyArMjcsNiBAQAogICAgIHBhdHRlcm5fdHJlZSA9IE5vbmUgIyBUcmVlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYXR0ZXJuCiAgICAgb3B0aW9ucyA9IE5vbmUgICMgT3B0aW9ucyBvYmplY3QgcGFzc2VkIHRvIGluaXRpYWxpemVyCiAgICAgZmlsZW5hbWUgPSBOb25lICMgVGhlIGZpbGVuYW1lIChzZXQgYnkgc2V0X2ZpbGVuYW1lKQotICAgIGxvZ2dlciA9IE5vbmUgICAjIEEgbG9nZ2VyIChzZXQgYnkgc2V0X2ZpbGVuYW1lKQogICAgIG51bWJlcnMgPSBpdGVydG9vbHMuY291bnQoMSkgIyBGb3IgbmV3X25hbWUoKQogICAgIHVzZWRfbmFtZXMgPSBzZXQoKSAjIEEgc2V0IG9mIGFsbCB1c2VkIE5BTUVzCiAgICAgb3JkZXIgPSAicG9zdCIgIyBEb2VzIHRoZSBmaXhlciBwcmVmZXIgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbApAQCAtNzAsMTIgKzY5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfdHJlZT1UcnVlKQogCiAgICAgZGVmIHNldF9maWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6Ci0gICAgICAgICIiIlNldCB0aGUgZmlsZW5hbWUsIGFuZCBhIGxvZ2dlciBkZXJpdmVkIGZyb20gaXQuCisgICAgICAgICIiIlNldCB0aGUgZmlsZW5hbWUuCiAKICAgICAgICAgVGhlIG1haW4gcmVmYWN0b3JpbmcgdG9vbCBzaG91bGQgY2FsbCB0aGlzLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoZmlsZW5hbWUpCiAKICAgICBkZWYgbWF0Y2goc2VsZiwgbm9kZSk6CiAgICAgICAgICIiIlJldHVybnMgbWF0Y2ggZm9yIGEgZ2l2ZW4gcGFyc2UgdHJlZSBub2RlLgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvcHl0cmVlLnB5IGIvTGliL2xpYjJ0bzMvcHl0cmVlLnB5CmluZGV4IGZhNDk0MmYzLi4xN2NiZjBhIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9weXRyZWUucHkKKysrIGIvTGliL2xpYjJ0bzMvcHl0cmVlLnB5CkBAIC0xMDksMjYgKzEwOSw2IEBACiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgc2V0X3ByZWZpeChzZWxmLCBwcmVmaXgpOgotICAgICAgICAiIiIKLSAgICAgICAgU2V0IHRoZSBwcmVmaXggZm9yIHRoZSBub2RlIChzZWUgTGVhZiBjbGFzcykuCi0KLSAgICAgICAgREVQUkVDQVRFRDsgdXNlIHRoZSBwcmVmaXggcHJvcGVydHkgZGlyZWN0bHkuCi0gICAgICAgICIiIgotICAgICAgICB3YXJuaW5ncy53YXJuKCJzZXRfcHJlZml4KCkgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSBwcmVmaXggcHJvcGVydHkiLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICAgICBzZWxmLnByZWZpeCA9IHByZWZpeAotCi0gICAgZGVmIGdldF9wcmVmaXgoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gdGhlIHByZWZpeCBmb3IgdGhlIG5vZGUgKHNlZSBMZWFmIGNsYXNzKS4KLQotICAgICAgICBERVBSRUNBVEVEOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSBkaXJlY3RseS4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oImdldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyB1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHJldHVybiBzZWxmLnByZWZpeAotCiAgICAgZGVmIHJlcGxhY2Uoc2VsZiwgbmV3KToKICAgICAgICAgIiIiUmVwbGFjZSB0aGlzIG5vZGUgd2l0aCBhIG5ldyBvbmUgaW4gdGhlIHBhcmVudC4iIiIKICAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50IGlzIG5vdCBOb25lLCBzdHIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKaW5kZXggMzhmYjhlZC4uMjAxZTE5MyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKQEAgLTU2Niw3ICs1NjYsNyBAQAogICAgICAgICBibG9ja19saW5lbm8gPSBOb25lCiAgICAgICAgIGluZGVudCA9IE5vbmUKICAgICAgICAgbGluZW5vID0gMAotICAgICAgICBmb3IgbGluZSBpbiBpbnB1dC5zcGxpdGxpbmVzKFRydWUpOgorICAgICAgICBmb3IgbGluZSBpbiBpbnB1dC5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpOgogICAgICAgICAgICAgbGluZW5vICs9IDEKICAgICAgICAgICAgIGlmIGxpbmUubHN0cmlwKCkuc3RhcnRzd2l0aChzZWxmLlBTMSk6CiAgICAgICAgICAgICAgICAgaWYgYmxvY2sgaXMgbm90IE5vbmU6CkBAIC02MTAsNyArNjEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8sIGVyci5fX2NsYXNzX18uX19uYW1lX18sIGVycikKICAgICAgICAgICAgIHJldHVybiBibG9jawogICAgICAgICBpZiBzZWxmLnJlZmFjdG9yX3RyZWUodHJlZSwgZmlsZW5hbWUpOgotICAgICAgICAgICAgbmV3ID0gc3RyKHRyZWUpLnNwbGl0bGluZXMoVHJ1ZSkKKyAgICAgICAgICAgIG5ldyA9IHN0cih0cmVlKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgICAgICAgICAjIFVuZG8gdGhlIGFkanVzdG1lbnQgb2YgdGhlIGxpbmUgbnVtYmVycyBpbiB3cmFwX3Rva3MoKSBiZWxvdy4KICAgICAgICAgICAgIGNsaXBwZWQsIG5ldyA9IG5ld1s6bGluZW5vLTFdLCBuZXdbbGluZW5vLTE6XQogICAgICAgICAgICAgYXNzZXJ0IGNsaXBwZWQgPT0gWyJcbiJdICogKGxpbmVuby0xKSwgY2xpcHBlZApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQppbmRleCBhYzdkOTAwLi5hMmFiMWYzIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQpAQCAtMzEsMjMgKzMxLDYgQEAKIAogICAgICIiIlVuaXQgdGVzdHMgZm9yIG5vZGVzIChCYXNlLCBMZWFmLCBOb2RlKS4iIiIKIAotICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDIsNik6Ci0gICAgICAgICMgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MgaXMgbmV3IGluIDIuNi4KLSAgICAgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9wcmVmaXhfbWV0aG9kcyhzZWxmKToKLSAgICAgICAgICAgIGwgPSBweXRyZWUuTGVhZigxMDAsICJmb28iKQotICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwuZ2V0X3ByZWZpeCgpLCAiIikKLSAgICAgICAgICAgICAgICBsLnNldF9wcmVmaXgoImhpIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobC5wcmVmaXgsICJoaSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMikKLSAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHc6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhcm5pbmcuY2F0ZWdvcnkgaXMgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIod1swXS5tZXNzYWdlKSwgImdldF9wcmVmaXgoKSBpcyBkZXByZWNhdGVkOyAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2UgdGhlIHByZWZpeCBwcm9wZXJ0eSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih3WzFdLm1lc3NhZ2UpLCAic2V0X3ByZWZpeCgpIGlzIGRlcHJlY2F0ZWQ7ICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzZSB0aGUgcHJlZml4IHByb3BlcnR5IikKLQogICAgIGRlZiB0ZXN0X2luc3RhbnRpYXRlX2Jhc2Uoc2VsZik6CiAgICAgICAgIGlmIF9fZGVidWdfXzoKICAgICAgICAgICAgICMgVGVzdCB0aGF0IGluc3RhbnRpYXRpbmcgQmFzZSgpIHJhaXNlcyBhbiBBc3NlcnRpb25FcnJvcgpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQppbmRleCA0MTkxYjIyLi5lNzkwMThmIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQorKysgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQpAQCAtMzYsMTUgKzM2LDkgQEAKICAgICAgICAgICAgJ2dldExvZ1JlY29yZEZhY3RvcnknLCAnc2V0TG9nUmVjb3JkRmFjdG9yeScsICdsYXN0UmVzb3J0J10KIAogdHJ5OgotICAgIGltcG9ydCBjb2RlY3MKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBjb2RlY3MgPSBOb25lCi0KLXRyeToKLSAgICBpbXBvcnQgX3RocmVhZCBhcyB0aHJlYWQKICAgICBpbXBvcnQgdGhyZWFkaW5nCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgdGhyZWFkID0gTm9uZQorZXhjZXB0IEltcG9ydEVycm9yOiAjcHJhZ21hOiBubyBjb3ZlcgorICAgIHRocmVhZGluZyA9IE5vbmUKIAogX19hdXRob3JfXyAgPSAiVmluYXkgU2FqaXAgPHZpbmF5X3NhamlwQHJlZC1kb3ZlLmNvbT4iCiBfX3N0YXR1c19fICA9ICJwcm9kdWN0aW9uIgpAQCAtNjUsMTYgKzU5LDE2IEBACiAgICAgX3NyY2ZpbGUgPSBfX2ZpbGVfXwogX3NyY2ZpbGUgPSBvcy5wYXRoLm5vcm1jYXNlKF9zcmNmaWxlKQogCi0jIG5leHQgYml0IGZpbGNoZWQgZnJvbSAxLjUuMidzIGluc3BlY3QucHkKLWRlZiBjdXJyZW50ZnJhbWUoKToKLSAgICAiIiJSZXR1cm4gdGhlIGZyYW1lIG9iamVjdCBmb3IgdGhlIGNhbGxlcidzIHN0YWNrIGZyYW1lLiIiIgotICAgIHRyeToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uCi0gICAgZXhjZXB0OgotICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKClbMl0udGJfZnJhbWUuZl9iYWNrCiAKLWlmIGhhc2F0dHIoc3lzLCAnX2dldGZyYW1lJyk6IGN1cnJlbnRmcmFtZSA9IGxhbWJkYTogc3lzLl9nZXRmcmFtZSgzKQotIyBkb25lIGZpbGNoaW5nCitpZiBoYXNhdHRyKHN5cywgJ19nZXRmcmFtZScpOgorICAgIGN1cnJlbnRmcmFtZSA9IGxhbWJkYTogc3lzLl9nZXRmcmFtZSgzKQorZWxzZTogI3ByYWdtYTogbm8gY292ZXIKKyAgICBkZWYgY3VycmVudGZyYW1lKCk6CisgICAgICAgICIiIlJldHVybiB0aGUgZnJhbWUgb2JqZWN0IGZvciB0aGUgY2FsbGVyJ3Mgc3RhY2sgZnJhbWUuIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbgorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICByZXR1cm4gc3lzLmV4Y19pbmZvKClbMl0udGJfZnJhbWUuZl9iYWNrCiAKICMgX3NyY2ZpbGUgaXMgb25seSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggc3lzLl9nZXRmcmFtZSgpLgogIyBUbyBwcm92aWRlIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24sIHNldCBfc3JjZmlsZQpAQCAtOTIsMjIgKzg2LDIyIEBACiAjcmFpc2VFeGNlcHRpb25zIGlzIHVzZWQgdG8gc2VlIGlmIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHNob3VsZCBiZQogI3Byb3BhZ2F0ZWQKICMKLXJhaXNlRXhjZXB0aW9ucyA9IDEKK3JhaXNlRXhjZXB0aW9ucyA9IFRydWUKIAogIwogIyBJZiB5b3UgZG9uJ3Qgd2FudCB0aHJlYWRpbmcgaW5mb3JtYXRpb24gaW4gdGhlIGxvZywgc2V0IHRoaXMgdG8gemVybwogIwotbG9nVGhyZWFkcyA9IDEKK2xvZ1RocmVhZHMgPSBUcnVlCiAKICMKICMgSWYgeW91IGRvbid0IHdhbnQgbXVsdGlwcm9jZXNzaW5nIGluZm9ybWF0aW9uIGluIHRoZSBsb2csIHNldCB0aGlzIHRvIHplcm8KICMKLWxvZ011bHRpcHJvY2Vzc2luZyA9IDEKK2xvZ011bHRpcHJvY2Vzc2luZyA9IFRydWUKIAogIwogIyBJZiB5b3UgZG9uJ3Qgd2FudCBwcm9jZXNzIGluZm9ybWF0aW9uIGluIHRoZSBsb2csIHNldCB0aGlzIHRvIHplcm8KICMKLWxvZ1Byb2Nlc3NlcyA9IDEKK2xvZ1Byb2Nlc3NlcyA9IFRydWUKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyAgIExldmVsIHJlbGF0ZWQgc3R1ZmYKQEAgLTE5Nyw5ICsxOTEsOSBAQAogI3RoZSBsb2NrIHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGFjcXVpcmVkIC0gc28gd2UgbmVlZCBhbiBSTG9jay4KICNUaGUgc2FtZSBhcmd1bWVudCBhcHBsaWVzIHRvIExvZ2dlcnMgYW5kIE1hbmFnZXIubG9nZ2VyRGljdC4KICMKLWlmIHRocmVhZDoKK2lmIHRocmVhZGluZzoKICAgICBfbG9jayA9IHRocmVhZGluZy5STG9jaygpCi1lbHNlOgorZWxzZTogI3ByYWdtYTogbm8gY292ZXIKICAgICBfbG9jayA9IE5vbmUKIAogCkBAIC0yNTIsNyArMjQ2LDcgQEAKICAgICAgICAgIyBkdXJpbmcgZm9ybWF0dGluZywgd2UgdGVzdCB0byBzZWUgaWYgdGhlIGFyZyBpcyBwcmVzZW50IHVzaW5nCiAgICAgICAgICMgJ2lmIHNlbGYuYXJnczonLiBJZiB0aGUgZXZlbnQgYmVpbmcgbG9nZ2VkIGlzIGUuZy4gJ1ZhbHVlIGlzICVkJwogICAgICAgICAjIGFuZCBpZiB0aGUgcGFzc2VkIGFyZyBmYWlscyAnaWYgc2VsZi5hcmdzOicgdGhlbiBubyBmb3JtYXR0aW5nCi0gICAgICAgICMgaXMgZG9uZS4gRm9yIGV4YW1wbGUsIGxvZ2dlci53YXJuKCdWYWx1ZSBpcyAlZCcsIDApIHdvdWxkIGxvZworICAgICAgICAjIGlzIGRvbmUuIEZvciBleGFtcGxlLCBsb2dnZXIud2FybmluZygnVmFsdWUgaXMgJWQnLCAwKSB3b3VsZCBsb2cKICAgICAgICAgIyAnVmFsdWUgaXMgJWQnIGluc3RlYWQgb2YgJ1ZhbHVlIGlzIDAnLgogICAgICAgICAjIEZvciB0aGUgdXNlIGNhc2Ugb2YgcGFzc2luZyBhIGRpY3Rpb25hcnksIHRoaXMgc2hvdWxkIG5vdCBiZSBhCiAgICAgICAgICMgcHJvYmxlbS4KQEAgLTI3NiwxMyArMjcwLDEzIEBACiAgICAgICAgIHNlbGYuY3JlYXRlZCA9IGN0CiAgICAgICAgIHNlbGYubXNlY3MgPSAoY3QgLSBpbnQoY3QpKSAqIDEwMDAKICAgICAgICAgc2VsZi5yZWxhdGl2ZUNyZWF0ZWQgPSAoc2VsZi5jcmVhdGVkIC0gX3N0YXJ0VGltZSkgKiAxMDAwCi0gICAgICAgIGlmIGxvZ1RocmVhZHMgYW5kIHRocmVhZDoKLSAgICAgICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIGlmIGxvZ1RocmVhZHMgYW5kIHRocmVhZGluZzoKKyAgICAgICAgICAgIHNlbGYudGhyZWFkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgICAgICBzZWxmLnRocmVhZE5hbWUgPSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsc2U6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgc2VsZi50aHJlYWQgPSBOb25lCiAgICAgICAgICAgICBzZWxmLnRocmVhZE5hbWUgPSBOb25lCi0gICAgICAgIGlmIG5vdCBsb2dNdWx0aXByb2Nlc3Npbmc6CisgICAgICAgIGlmIG5vdCBsb2dNdWx0aXByb2Nlc3Npbmc6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgc2VsZi5wcm9jZXNzTmFtZSA9IE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucHJvY2Vzc05hbWUgPSAnTWFpblByb2Nlc3MnCkBAIC0yOTQsNyArMjg4LDcgQEAKICAgICAgICAgICAgICAgICAjIGZvciBhbiBleGFtcGxlCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NOYW1lID0gbXAuY3VycmVudF9wcm9jZXNzKCkubmFtZQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBpZiBsb2dQcm9jZXNzZXMgYW5kIGhhc2F0dHIob3MsICdnZXRwaWQnKToKICAgICAgICAgICAgIHNlbGYucHJvY2VzcyA9IG9zLmdldHBpZCgpCkBAIC00NjYsNiArNDYwLDkgQEAKICAgICAgICAgc2VsZi5fZm10ID0gc2VsZi5fc3R5bGUuX2ZtdAogICAgICAgICBzZWxmLmRhdGVmbXQgPSBkYXRlZm10CiAKKyAgICBkZWZhdWx0X3RpbWVfZm9ybWF0ID0gJyVZLSVtLSVkICVIOiVNOiVTJworICAgIGRlZmF1bHRfbXNlY19mb3JtYXQgPSAnJXMsJTAzZCcKKwogICAgIGRlZiBmb3JtYXRUaW1lKHNlbGYsIHJlY29yZCwgZGF0ZWZtdD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybiB0aGUgY3JlYXRpb24gdGltZSBvZiB0aGUgc3BlY2lmaWVkIExvZ1JlY29yZCBhcyBmb3JtYXR0ZWQgdGV4dC4KQEAgLTQ4OCw4ICs0ODUsOCBAQAogICAgICAgICBpZiBkYXRlZm10OgogICAgICAgICAgICAgcyA9IHRpbWUuc3RyZnRpbWUoZGF0ZWZtdCwgY3QpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ID0gdGltZS5zdHJmdGltZSgiJVktJW0tJWQgJUg6JU06JVMiLCBjdCkKLSAgICAgICAgICAgIHMgPSAiJXMsJTAzZCIgJSAodCwgcmVjb3JkLm1zZWNzKSAjIHRoZSB1c2Ugb2YgJSBoZXJlIGlzIGludGVybmFsCisgICAgICAgICAgICB0ID0gdGltZS5zdHJmdGltZShzZWxmLmRlZmF1bHRfdGltZV9mb3JtYXQsIGN0KQorICAgICAgICAgICAgcyA9IHNlbGYuZGVmYXVsdF9tc2VjX2Zvcm1hdCAlICh0LCByZWNvcmQubXNlY3MpCiAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgZm9ybWF0RXhjZXB0aW9uKHNlbGYsIGVpKToKQEAgLTY0MiwxMSArNjM5LDExIEBACiAgICAgICAgIHllcy4gSWYgZGVlbWVkIGFwcHJvcHJpYXRlLCB0aGUgcmVjb3JkIG1heSBiZSBtb2RpZmllZCBpbi1wbGFjZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYubmxlbiA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lID09IHJlY29yZC5uYW1lOgotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGVsaWYgcmVjb3JkLm5hbWUuZmluZChzZWxmLm5hbWUsIDAsIHNlbGYubmxlbikgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIChyZWNvcmQubmFtZVtzZWxmLm5sZW5dID09ICIuIikKIAogY2xhc3MgRmlsdGVyZXIob2JqZWN0KToKQEAgLTY4NiwxNCArNjgzLDE0IEBACiAKICAgICAgICAgICAgQWxsb3cgZmlsdGVycyB0byBiZSBqdXN0IGNhbGxhYmxlcy4KICAgICAgICAgIiIiCi0gICAgICAgIHJ2ID0gMQorICAgICAgICBydiA9IFRydWUKICAgICAgICAgZm9yIGYgaW4gc2VsZi5maWx0ZXJzOgogICAgICAgICAgICAgaWYgaGFzYXR0cihmLCAnZmlsdGVyJyk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5maWx0ZXIocmVjb3JkKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXN1bHQgPSBmKHJlY29yZCkgIyBhc3N1bWUgY2FsbGFibGUgLSB3aWxsIHJhaXNlIGlmIG5vdAogICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICBydiA9IDAKKyAgICAgICAgICAgICAgICBydiA9IEZhbHNlCiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgcmV0dXJuIHJ2CiAKQEAgLTc3MSw5ICs3NjgsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgQWNxdWlyZSBhIHRocmVhZCBsb2NrIGZvciBzZXJpYWxpemluZyBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgSS9PLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgdGhyZWFkOgorICAgICAgICBpZiB0aHJlYWRpbmc6CiAgICAgICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQotICAgICAgICBlbHNlOgorICAgICAgICBlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgc2VsZi5sb2NrID0gTm9uZQogCiAgICAgZGVmIGFjcXVpcmUoc2VsZik6CkBAIC03OTIsNyArNzg5LDcgQEAKIAogICAgIGRlZiBzZXRMZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgICIiIgotICAgICAgICBTZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgb2YgdGhpcyBoYW5kbGVyLgorICAgICAgICBTZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgb2YgdGhpcyBoYW5kbGVyLiAgbGV2ZWwgbXVzdCBiZSBhbiBpbnQgb3IgYSBzdHIuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCiAKQEAgLTg4OCw3ICs4ODUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgc3lzLnN0ZGVycikKICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdMb2dnZWQgZnJvbSBmaWxlICVzLCBsaW5lICVzXG4nICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmZpbGVuYW1lLCByZWNvcmQubGluZW5vKSkKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgcGFzcyAgICAjIHNlZSBpc3N1ZSA1OTcxCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGRlbCBlaQpAQCAtOTQxLDcgKzkzOCw3IEBACiAgICAgICAgICAgICBzdHJlYW0ud3JpdGUobXNnKQogICAgICAgICAgICAgc3RyZWFtLndyaXRlKHNlbGYudGVybWluYXRvcikKICAgICAgICAgICAgIHNlbGYuZmx1c2goKQotICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKKyAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICByYWlzZQogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmhhbmRsZUVycm9yKHJlY29yZCkKQEAgLTk1MCwxNCArOTQ3LDEyIEBACiAgICAgIiIiCiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBmb3JtYXR0ZWQgbG9nZ2luZyByZWNvcmRzIHRvIGRpc2sgZmlsZXMuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9MCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlPSdhJywgZW5jb2Rpbmc9Tm9uZSwgZGVsYXk9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgogICAgICAgICAiIiIKICAgICAgICAgI2tlZXAgdGhlIGFic29sdXRlIHBhdGgsIG90aGVyd2lzZSBkZXJpdmVkIGNsYXNzZXMgd2hpY2ggdXNlIHRoaXMKICAgICAgICAgI21heSBjb21lIGEgY3JvcHBlciB3aGVuIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBjaGFuZ2VzCi0gICAgICAgIGlmIGNvZGVjcyBpcyBOb25lOgotICAgICAgICAgICAgZW5jb2RpbmcgPSBOb25lCiAgICAgICAgIHNlbGYuYmFzZUZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQogICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZwpAQCAtOTg5LDExICs5ODQsNyBAQAogICAgICAgICBPcGVuIHRoZSBjdXJyZW50IGJhc2UgZmlsZSB3aXRoIHRoZSAob3JpZ2luYWwpIG1vZGUgYW5kIGVuY29kaW5nLgogICAgICAgICBSZXR1cm4gdGhlIHJlc3VsdGluZyBzdHJlYW0uCiAgICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmVuY29kaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdHJlYW0gPSBvcGVuKHNlbGYuYmFzZUZpbGVuYW1lLCBzZWxmLm1vZGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdHJlYW0gPSBjb2RlY3Mub3BlbihzZWxmLmJhc2VGaWxlbmFtZSwgc2VsZi5tb2RlLCBzZWxmLmVuY29kaW5nKQotICAgICAgICByZXR1cm4gc3RyZWFtCisgICAgICAgIHJldHVybiBvcGVuKHNlbGYuYmFzZUZpbGVuYW1lLCBzZWxmLm1vZGUsIGVuY29kaW5nPXNlbGYuZW5jb2RpbmcpCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTEyMDUsMTMgKzExOTYsMTMgQEAKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLmxldmVsID0gX2NoZWNrTGV2ZWwobGV2ZWwpCiAgICAgICAgIHNlbGYucGFyZW50ID0gTm9uZQotICAgICAgICBzZWxmLnByb3BhZ2F0ZSA9IDEKKyAgICAgICAgc2VsZi5wcm9wYWdhdGUgPSBUcnVlCiAgICAgICAgIHNlbGYuaGFuZGxlcnMgPSBbXQotICAgICAgICBzZWxmLmRpc2FibGVkID0gMAorICAgICAgICBzZWxmLmRpc2FibGVkID0gRmFsc2UKIAogICAgIGRlZiBzZXRMZXZlbChzZWxmLCBsZXZlbCk6CiAgICAgICAgICIiIgotICAgICAgICBTZXQgdGhlIGxvZ2dpbmcgbGV2ZWwgb2YgdGhpcyBsb2dnZXIuCisgICAgICAgIFNldCB0aGUgbG9nZ2luZyBsZXZlbCBvZiB0aGlzIGxvZ2dlci4gIGxldmVsIG11c3QgYmUgYW4gaW50IG9yIGEgc3RyLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5sZXZlbCA9IF9jaGVja0xldmVsKGxldmVsKQogCkBAIC0xMjUxLDcgKzEyNDIsMTAgQEAKICAgICAgICAgaWYgc2VsZi5pc0VuYWJsZWRGb3IoV0FSTklORyk6CiAgICAgICAgICAgICBzZWxmLl9sb2coV0FSTklORywgbXNnLCBhcmdzLCAqKmt3YXJncykKIAotICAgIHdhcm4gPSB3YXJuaW5nCisgICAgZGVmIHdhcm4oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ3dhcm4nIG1ldGhvZCBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAidXNlICd3YXJuaW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICBzZWxmLndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiIKQEAgLTEzNjAsOSArMTM1NCw5IEBACiAgICAgICAgICAgICAjSXJvblB5dGhvbiBjYW4gdXNlIGxvZ2dpbmcuCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZm4sIGxubywgZnVuYywgc2luZm8gPSBzZWxmLmZpbmRDYWxsZXIoc3RhY2tfaW5mbykKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6ICMgcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgIGZuLCBsbm8sIGZ1bmMgPSAiKHVua25vd24gZmlsZSkiLCAwLCAiKHVua25vd24gZnVuY3Rpb24pIgotICAgICAgICBlbHNlOgorICAgICAgICBlbHNlOiAjIHByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIGZuLCBsbm8sIGZ1bmMgPSAiKHVua25vd24gZmlsZSkiLCAwLCAiKHVua25vd24gZnVuY3Rpb24pIgogICAgICAgICBpZiBleGNfaW5mbzoKICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGV4Y19pbmZvLCB0dXBsZSk6CkBAIC0xNDc0LDcgKzE0NjgsNyBAQAogICAgICAgICBJcyB0aGlzIGxvZ2dlciBlbmFibGVkIGZvciBsZXZlbCAnbGV2ZWwnPwogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5tYW5hZ2VyLmRpc2FibGUgPj0gbGV2ZWw6Ci0gICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBsZXZlbCA+PSBzZWxmLmdldEVmZmVjdGl2ZUxldmVsKCkKIAogICAgIGRlZiBnZXRDaGlsZChzZWxmLCBzdWZmaXgpOgpAQCAtMTU2NCw3ICsxNTU4LDEwIEBACiAgICAgICAgICIiIgogICAgICAgICBzZWxmLmxvZyhXQVJOSU5HLCBtc2csICphcmdzLCAqKmt3YXJncykKIAotICAgIHdhcm4gPSB3YXJuaW5nCisgICAgZGVmIHdhcm4oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ3dhcm4nIG1ldGhvZCBpcyBkZXByZWNhdGVkLCAiCisgICAgICAgICAgICAidXNlICd3YXJuaW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICBzZWxmLndhcm5pbmcobXNnLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiIKQEAgLTE1NzYsNyArMTU3Myw3IEBACiAgICAgICAgICIiIgogICAgICAgICBEZWxlZ2F0ZSBhbiBleGNlcHRpb24gY2FsbCB0byB0aGUgdW5kZXJseWluZyBsb2dnZXIuCiAgICAgICAgICIiIgotICAgICAgICBrd2FyZ3NbImV4Y19pbmZvIl0gPSAxCisgICAgICAgIGt3YXJnc1siZXhjX2luZm8iXSA9IFRydWUKICAgICAgICAgc2VsZi5sb2coRVJST1IsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCiAgICAgZGVmIGNyaXRpY2FsKHNlbGYsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTE2NTksNiArMTY1NiwxMCBAQAogICAgIHN0cmVhbSAgICBVc2UgdGhlIHNwZWNpZmllZCBzdHJlYW0gdG8gaW5pdGlhbGl6ZSB0aGUgU3RyZWFtSGFuZGxlci4gTm90ZQogICAgICAgICAgICAgICB0aGF0IHRoaXMgYXJndW1lbnQgaXMgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGgKICAgICAgICAgICAgICAgYXJlIHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuCisgICAgaGFuZGxlcnMgIElmIHNwZWNpZmllZCwgdGhpcyBzaG91bGQgYmUgYW4gaXRlcmFibGUgb2YgYWxyZWFkeSBjcmVhdGVkCisgICAgICAgICAgICAgIGhhbmRsZXJzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIHRoZSByb290IGhhbmRsZXIuIEFueSBoYW5kbGVyCisgICAgICAgICAgICAgIGluIHRoZSBsaXN0IHdoaWNoIGRvZXMgbm90IGhhdmUgYSBmb3JtYXR0ZXIgYXNzaWduZWQgd2lsbCBiZQorICAgICAgICAgICAgICBhc3NpZ25lZCB0aGUgZm9ybWF0dGVyIGNyZWF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4KIAogICAgIE5vdGUgdGhhdCB5b3UgY291bGQgc3BlY2lmeSBhIHN0cmVhbSBjcmVhdGVkIHVzaW5nIG9wZW4oZmlsZW5hbWUsIG1vZGUpCiAgICAgcmF0aGVyIHRoYW4gcGFzc2luZyB0aGUgZmlsZW5hbWUgYW5kIG1vZGUgaW4uIEhvd2V2ZXIsIGl0IHNob3VsZCBiZQpAQCAtMTY2NiwyNyArMTY2Nyw0NyBAQAogICAgIHVzaW5nIHN5cy5zdGRvdXQgb3Igc3lzLnN0ZGVyciksIHdoZXJlYXMgRmlsZUhhbmRsZXIgY2xvc2VzIGl0cyBzdHJlYW0KICAgICB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZC4KIAotICAgIC4uIHZlcnNpb25jaGFuZ2VkOiAzLjIKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgogICAgICAgIEFkZGVkIHRoZSBgYHN0eWxlYGAgcGFyYW1ldGVyLgorCisgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgICBBZGRlZCB0aGUgYGBoYW5kbGVyc2BgIHBhcmFtZXRlci4gQSBgYFZhbHVlRXJyb3JgYCBpcyBub3cgdGhyb3duIGZvcgorICAgICAgIGluY29tcGF0aWJsZSBhcmd1bWVudHMgKGUuZy4gYGBoYW5kbGVyc2BgIHNwZWNpZmllZCB0b2dldGhlciB3aXRoCisgICAgICAgYGBmaWxlbmFtZWBgL2BgZmlsZW1vZGVgYCwgb3IgYGBmaWxlbmFtZWBgL2BgZmlsZW1vZGVgYCBzcGVjaWZpZWQKKyAgICAgICB0b2dldGhlciB3aXRoIGBgc3RyZWFtYGAsIG9yIGBgaGFuZGxlcnNgYCBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aAorICAgICAgIGBgc3RyZWFtYGAuCiAgICAgIiIiCiAgICAgIyBBZGQgdGhyZWFkIHNhZmV0eSBpbiBjYXNlIHNvbWVvbmUgbWlzdGFrZW5seSBjYWxscwogICAgICMgYmFzaWNDb25maWcoKSBmcm9tIG11bHRpcGxlIHRocmVhZHMKICAgICBfYWNxdWlyZUxvY2soKQogICAgIHRyeToKICAgICAgICAgaWYgbGVuKHJvb3QuaGFuZGxlcnMpID09IDA6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IGt3YXJncy5nZXQoImZpbGVuYW1lIikKLSAgICAgICAgICAgIGlmIGZpbGVuYW1lOgotICAgICAgICAgICAgICAgIG1vZGUgPSBrd2FyZ3MuZ2V0KCJmaWxlbW9kZSIsICdhJykKLSAgICAgICAgICAgICAgICBoZGxyID0gRmlsZUhhbmRsZXIoZmlsZW5hbWUsIG1vZGUpCisgICAgICAgICAgICBoYW5kbGVycyA9IGt3YXJncy5nZXQoImhhbmRsZXJzIikKKyAgICAgICAgICAgIGlmIGhhbmRsZXJzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgInN0cmVhbSIgaW4ga3dhcmdzIGFuZCAiZmlsZW5hbWUiIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3N0cmVhbScgYW5kICdmaWxlbmFtZScgc2hvdWxkIG5vdCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllZCB0b2dldGhlciIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0cmVhbSA9IGt3YXJncy5nZXQoInN0cmVhbSIpCi0gICAgICAgICAgICAgICAgaGRsciA9IFN0cmVhbUhhbmRsZXIoc3RyZWFtKQorICAgICAgICAgICAgICAgIGlmICJzdHJlYW0iIGluIGt3YXJncyBvciAiZmlsZW5hbWUiIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3N0cmVhbScgb3IgJ2ZpbGVuYW1lJyBzaG91bGQgbm90IGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggJ2hhbmRsZXJzJyIpCisgICAgICAgICAgICBpZiBoYW5kbGVycyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGZpbGVuYW1lID0ga3dhcmdzLmdldCgiZmlsZW5hbWUiKQorICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgICAgICAgICBtb2RlID0ga3dhcmdzLmdldCgiZmlsZW1vZGUiLCAnYScpCisgICAgICAgICAgICAgICAgICAgIGggPSBGaWxlSGFuZGxlcihmaWxlbmFtZSwgbW9kZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzdHJlYW0gPSBrd2FyZ3MuZ2V0KCJzdHJlYW0iKQorICAgICAgICAgICAgICAgICAgICBoID0gU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgICAgICAgICAgICAgaGFuZGxlcnMgPSBbaF0KICAgICAgICAgICAgIGZzID0ga3dhcmdzLmdldCgiZm9ybWF0IiwgQkFTSUNfRk9STUFUKQogICAgICAgICAgICAgZGZzID0ga3dhcmdzLmdldCgiZGF0ZWZtdCIsIE5vbmUpCiAgICAgICAgICAgICBzdHlsZSA9IGt3YXJncy5nZXQoInN0eWxlIiwgJyUnKQogICAgICAgICAgICAgZm10ID0gRm9ybWF0dGVyKGZzLCBkZnMsIHN0eWxlKQotICAgICAgICAgICAgaGRsci5zZXRGb3JtYXR0ZXIoZm10KQotICAgICAgICAgICAgcm9vdC5hZGRIYW5kbGVyKGhkbHIpCisgICAgICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgICAgICBpZiBoLmZvcm1hdHRlciBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmbXQpCisgICAgICAgICAgICAgICAgcm9vdC5hZGRIYW5kbGVyKGgpCiAgICAgICAgICAgICBsZXZlbCA9IGt3YXJncy5nZXQoImxldmVsIikKICAgICAgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJvb3Quc2V0TGV2ZWwobGV2ZWwpCkBAIC0xNzUwLDcgKzE3NzEsMTAgQEAKICAgICAgICAgYmFzaWNDb25maWcoKQogICAgIHJvb3Qud2FybmluZyhtc2csICphcmdzLCAqKmt3YXJncykKIAotd2FybiA9IHdhcm5pbmcKK2RlZiB3YXJuKG1zZywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICB3YXJuaW5ncy53YXJuKCJUaGUgJ3dhcm4nIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgInVzZSAnd2FybmluZycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICB3YXJuaW5nKG1zZywgKmFyZ3MsICoqa3dhcmdzKQogCiBkZWYgaW5mbyhtc2csICphcmdzLCAqKmt3YXJncyk6CiAgICAgIiIiCkBAIC0xODM1LDEwICsxODU5LDEwIEBACiAgICAgcGFja2FnZS4KICAgICAiIiIKICAgICBkZWYgaGFuZGxlKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgIiIiU3R1Yi4iIiIKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgIiIiU3R1Yi4iIiIKIAogICAgIGRlZiBjcmVhdGVMb2NrKHNlbGYpOgogICAgICAgICBzZWxmLmxvY2sgPSBOb25lCmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9jb25maWcucHkgYi9MaWIvbG9nZ2luZy9jb25maWcucHkKaW5kZXggMzczZGEyYi4uNWVmNWM5MSAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvY29uZmlnLnB5CisrKyBiL0xpYi9sb2dnaW5nL2NvbmZpZy5weQpAQCAtMjQsMTMgKzI0LDEzIEBACiBUbyB1c2UsIHNpbXBseSAnaW1wb3J0IGxvZ2dpbmcnIGFuZCBsb2cgYXdheSEKICIiIgogCi1pbXBvcnQgc3lzLCBsb2dnaW5nLCBsb2dnaW5nLmhhbmRsZXJzLCBzb2NrZXQsIHN0cnVjdCwgb3MsIHRyYWNlYmFjaywgcmUKLWltcG9ydCB0eXBlcywgaW8KK2ltcG9ydCBzeXMsIGxvZ2dpbmcsIGxvZ2dpbmcuaGFuZGxlcnMsIHNvY2tldCwgc3RydWN0LCB0cmFjZWJhY2ssIHJlCitpbXBvcnQgaW8KIAogdHJ5OgogICAgIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKK2V4Y2VwdCBJbXBvcnRFcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICB0aHJlYWQgPSBOb25lCiAKIGZyb20gc29ja2V0c2VydmVyIGltcG9ydCBUaHJlYWRpbmdUQ1BTZXJ2ZXIsIFN0cmVhbVJlcXVlc3RIYW5kbGVyCkBAIC05OCw5ICs5OCw2IEBACiBkZWYgX3N0cmlwX3NwYWNlcyhhbGlzdCk6CiAgICAgcmV0dXJuIG1hcChsYW1iZGEgeDogeC5zdHJpcCgpLCBhbGlzdCkKIAotZGVmIF9lbmNvZGVkKHMpOgotICAgIHJldHVybiBzIGlmIGlzaW5zdGFuY2Uocywgc3RyKSBlbHNlIHMuZW5jb2RlKCd1dGYtOCcpCi0KIGRlZiBfY3JlYXRlX2Zvcm1hdHRlcnMoY3ApOgogICAgICIiIkNyZWF0ZSBhbmQgcmV0dXJuIGZvcm1hdHRlcnMiIiIKICAgICBmbGlzdCA9IGNwWyJmb3JtYXR0ZXJzIl1bImtleXMiXQpAQCAtMjE1LDcgKzIxMiw3IEBACiAgICAgI2F2b2lkIGRpc2FibGluZyBjaGlsZCBsb2dnZXJzIG9mIGV4cGxpY2l0bHkKICAgICAjbmFtZWQgbG9nZ2Vycy4gV2l0aCBhIHNvcnRlZCBsaXN0IGl0IGlzIGVhc2llcgogICAgICN0byBmaW5kIHRoZSBjaGlsZCBsb2dnZXJzLgotICAgIGV4aXN0aW5nLnNvcnQoa2V5PV9lbmNvZGVkKQorICAgIGV4aXN0aW5nLnNvcnQoKQogICAgICNXZSdsbCBrZWVwIHRoZSBsaXN0IG9mIGV4aXN0aW5nIGxvZ2dlcnMKICAgICAjd2hpY2ggYXJlIGNoaWxkcmVuIG9mIG5hbWVkIGxvZ2dlcnMgaGVyZS4uLgogICAgIGNoaWxkX2xvZ2dlcnMgPSBbXQpAQCAtNTg4LDcgKzU4NSw3IEBACiAgICAgICAgICAgICAgICAgI2F2b2lkIGRpc2FibGluZyBjaGlsZCBsb2dnZXJzIG9mIGV4cGxpY2l0bHkKICAgICAgICAgICAgICAgICAjbmFtZWQgbG9nZ2Vycy4gV2l0aCBhIHNvcnRlZCBsaXN0IGl0IGlzIGVhc2llcgogICAgICAgICAgICAgICAgICN0byBmaW5kIHRoZSBjaGlsZCBsb2dnZXJzLgotICAgICAgICAgICAgICAgIGV4aXN0aW5nLnNvcnQoa2V5PV9lbmNvZGVkKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nLnNvcnQoKQogICAgICAgICAgICAgICAgICNXZSdsbCBrZWVwIHRoZSBsaXN0IG9mIGV4aXN0aW5nIGxvZ2dlcnMKICAgICAgICAgICAgICAgICAjd2hpY2ggYXJlIGNoaWxkcmVuIG9mIG5hbWVkIGxvZ2dlcnMgaGVyZS4uLgogICAgICAgICAgICAgICAgIGNoaWxkX2xvZ2dlcnMgPSBbXQpAQCAtNzg2LDcgKzc4Myw3IEBACiAgICAgYW5kIHdoaWNoIHlvdSBjYW4gam9pbigpIHdoZW4gYXBwcm9wcmlhdGUuIFRvIHN0b3AgdGhlIHNlcnZlciwgY2FsbAogICAgIHN0b3BMaXN0ZW5pbmcoKS4KICAgICAiIiIKLSAgICBpZiBub3QgdGhyZWFkOgorICAgIGlmIG5vdCB0aHJlYWQ6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImxpc3RlbigpIG5lZWRzIHRocmVhZGluZyB0byB3b3JrIikKIAogICAgIGNsYXNzIENvbmZpZ1N0cmVhbUhhbmRsZXIoU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgpAQCAtODA0LDcgKzgwMSw2IEBACiAgICAgICAgICAgICBzdHJ1Y3QucGFjaygiPkwiLCBuKSwgZm9sbG93ZWQgYnkgdGhlIGNvbmZpZyBmaWxlLgogICAgICAgICAgICAgVXNlcyBmaWxlQ29uZmlnKCkgdG8gZG8gdGhlIGdydW50IHdvcmsuCiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGltcG9ydCB0ZW1wZmlsZQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLmNvbm5lY3Rpb24KICAgICAgICAgICAgICAgICBjaHVuayA9IGNvbm4ucmVjdig0KQpAQCAtODI1LDcgKzgyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlID0gaW8uU3RyaW5nSU8oY2h1bmspCiAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUNvbmZpZyhmaWxlKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQppbmRleCA4MzQ5ZDNhLi5mMjg2Y2Q2IDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQorKysgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQpAQCAtMjQsMTggKzI0LDE0IEBACiAiIiIKIAogaW1wb3J0IGVycm5vLCBsb2dnaW5nLCBzb2NrZXQsIG9zLCBwaWNrbGUsIHN0cnVjdCwgdGltZSwgcmUKK2Zyb20gY29kZWNzIGltcG9ydCBCT01fVVRGOAogZnJvbSBzdGF0IGltcG9ydCBTVF9ERVYsIFNUX0lOTywgU1RfTVRJTUUKIGltcG9ydCBxdWV1ZQogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKK2V4Y2VwdCBJbXBvcnRFcnJvcjogI3ByYWdtYTogbm8gY292ZXIKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKLXRyeToKLSAgICBpbXBvcnQgY29kZWNzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgY29kZWNzID0gTm9uZQotCiAjCiAjIFNvbWUgY29uc3RhbnRzLi4uCiAjCkBAIC01NSwxNSArNTEsMTUgQEAKICAgICBOb3QgbWVhbnQgdG8gYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiAgSW5zdGVhZCwgdXNlIFJvdGF0aW5nRmlsZUhhbmRsZXIKICAgICBvciBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIuCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIFVzZSB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lIGZvciBzdHJlYW1lZCBsb2dnaW5nCiAgICAgICAgICIiIgotICAgICAgICBpZiBjb2RlY3MgaXMgTm9uZToKLSAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZQogICAgICAgICBsb2dnaW5nLkZpbGVIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZywgZGVsYXkpCiAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nCisgICAgICAgIHNlbGYubmFtZXIgPSBOb25lCisgICAgICAgIHNlbGYucm90YXRvciA9IE5vbmUKIAogICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtNzYsMTcgKzcyLDU1IEBACiAgICAgICAgICAgICBpZiBzZWxmLnNob3VsZFJvbGxvdmVyKHJlY29yZCk6CiAgICAgICAgICAgICAgICAgc2VsZi5kb1JvbGxvdmVyKCkKICAgICAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQogCisgICAgZGVmIHJvdGF0aW9uX2ZpbGVuYW1lKHNlbGYsIGRlZmF1bHRfbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBNb2RpZnkgdGhlIGZpbGVuYW1lIG9mIGEgbG9nIGZpbGUgd2hlbiByb3RhdGluZy4KKworICAgICAgICBUaGlzIGlzIHByb3ZpZGVkIHNvIHRoYXQgYSBjdXN0b20gZmlsZW5hbWUgY2FuIGJlIHByb3ZpZGVkLgorCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzIHRoZSAnbmFtZXInIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgICAgaGFuZGxlciwgaWYgaXQncyBjYWxsYWJsZSwgcGFzc2luZyB0aGUgZGVmYXVsdCBuYW1lIHRvCisgICAgICAgIGl0LiBJZiB0aGUgYXR0cmlidXRlIGlzbid0IGNhbGxhYmxlICh0aGUgZGVmYXVsdCBpcyBOb25lKSwgdGhlIG5hbWUKKyAgICAgICAgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLgorCisgICAgICAgIDpwYXJhbSBkZWZhdWx0X25hbWU6IFRoZSBkZWZhdWx0IG5hbWUgZm9yIHRoZSBsb2cgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBjYWxsYWJsZShzZWxmLm5hbWVyKToKKyAgICAgICAgICAgIHJlc3VsdCA9IGRlZmF1bHRfbmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5uYW1lcihkZWZhdWx0X25hbWUpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByb3RhdGUoc2VsZiwgc291cmNlLCBkZXN0KToKKyAgICAgICAgIiIiCisgICAgICAgIFdoZW4gcm90YXRpbmcsIHJvdGF0ZSB0aGUgY3VycmVudCBsb2cuCisKKyAgICAgICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY2FsbHMgdGhlICdyb3RhdG9yJyBhdHRyaWJ1dGUgb2YgdGhlCisgICAgICAgIGhhbmRsZXIsIGlmIGl0J3MgY2FsbGFibGUsIHBhc3NpbmcgdGhlIHNvdXJjZSBhbmQgZGVzdCBhcmd1bWVudHMgdG8KKyAgICAgICAgaXQuIElmIHRoZSBhdHRyaWJ1dGUgaXNuJ3QgY2FsbGFibGUgKHRoZSBkZWZhdWx0IGlzIE5vbmUpLCB0aGUgc291cmNlCisgICAgICAgIGlzIHNpbXBseSByZW5hbWVkIHRvIHRoZSBkZXN0aW5hdGlvbi4KKworICAgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5IHRoZSBiYXNlCisgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBlLmcuICd0ZXN0LmxvZycKKyAgICAgICAgOnBhcmFtIGRlc3Q6ICAgVGhlIGRlc3RpbmF0aW9uIGZpbGVuYW1lLiBUaGlzIGlzIG5vcm1hbGx5CisgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgdGhlIHNvdXJjZSBpcyByb3RhdGVkIHRvLCBlLmcuICd0ZXN0LmxvZy4xJy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBjYWxsYWJsZShzZWxmLnJvdGF0b3IpOgorICAgICAgICAgICAgb3MucmVuYW1lKHNvdXJjZSwgZGVzdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucm90YXRvcihzb3VyY2UsIGRlc3QpCisKIGNsYXNzIFJvdGF0aW5nRmlsZUhhbmRsZXIoQmFzZVJvdGF0aW5nSGFuZGxlcik6CiAgICAgIiIiCiAgICAgSGFuZGxlciBmb3IgbG9nZ2luZyB0byBhIHNldCBvZiBmaWxlcywgd2hpY2ggc3dpdGNoZXMgZnJvbSBvbmUgZmlsZQogICAgIHRvIHRoZSBuZXh0IHdoZW4gdGhlIGN1cnJlbnQgZmlsZSByZWFjaGVzIGEgY2VydGFpbiBzaXplLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIG1heEJ5dGVzPTAsIGJhY2t1cENvdW50PTAsIGVuY29kaW5nPU5vbmUsIGRlbGF5PTApOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgbW9kZT0nYScsIG1heEJ5dGVzPTAsIGJhY2t1cENvdW50PTAsIGVuY29kaW5nPU5vbmUsIGRlbGF5PUZhbHNlKToKICAgICAgICAgIiIiCiAgICAgICAgIE9wZW4gdGhlIHNwZWNpZmllZCBmaWxlIGFuZCB1c2UgaXQgYXMgdGhlIHN0cmVhbSBmb3IgbG9nZ2luZy4KIApAQCAtMTI3LDE2ICsxNjEsMTcgQEAKICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gTm9uZQogICAgICAgICBpZiBzZWxmLmJhY2t1cENvdW50ID4gMDoKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHNlbGYuYmFja3VwQ291bnQgLSAxLCAwLCAtMSk6Ci0gICAgICAgICAgICAgICAgc2ZuID0gIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwgaSkKLSAgICAgICAgICAgICAgICBkZm4gPSAiJXMuJWQiICUgKHNlbGYuYmFzZUZpbGVuYW1lLCBpICsgMSkKKyAgICAgICAgICAgICAgICBzZm4gPSBzZWxmLnJvdGF0aW9uX2ZpbGVuYW1lKCIlcy4lZCIgJSAoc2VsZi5iYXNlRmlsZW5hbWUsIGkpKQorICAgICAgICAgICAgICAgIGRmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoIiVzLiVkIiAlIChzZWxmLmJhc2VGaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSArIDEpKQogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNmbik6CiAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRmbik6CiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQogICAgICAgICAgICAgICAgICAgICBvcy5yZW5hbWUoc2ZuLCBkZm4pCi0gICAgICAgICAgICBkZm4gPSBzZWxmLmJhc2VGaWxlbmFtZSArICIuMSIKKyAgICAgICAgICAgIGRmbiA9IHNlbGYucm90YXRpb25fZmlsZW5hbWUoc2VsZi5iYXNlRmlsZW5hbWUgKyAiLjEiKQogICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGZuKToKICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZGZuKQotICAgICAgICAgICAgb3MucmVuYW1lKHNlbGYuYmFzZUZpbGVuYW1lLCBkZm4pCisgICAgICAgICAgICBzZWxmLnJvdGF0ZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQogICAgICAgICBzZWxmLnN0cmVhbSA9IHNlbGYuX29wZW4oKQogCiAgICAgZGVmIHNob3VsZFJvbGxvdmVyKHNlbGYsIHJlY29yZCk6CkBAIC0xODMsMTkgKzIxOCwxOSBAQAogICAgICAgICBpZiBzZWxmLndoZW4gPT0gJ1MnOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDEgIyBvbmUgc2Vjb25kCiAgICAgICAgICAgICBzZWxmLnN1ZmZpeCA9ICIlWS0lbS0lZF8lSC0lTS0lUyIKLSAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfS1cZHsyfSQiCisgICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0tXGR7Mn0tXGR7Mn0oXC5cdyspPyQiCiAgICAgICAgIGVsaWYgc2VsZi53aGVuID09ICdNJzoKICAgICAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSA2MCAjIG9uZSBtaW51dGUKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkXyVILSVNIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfV9cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxpZiBzZWxmLndoZW4gPT0gJ0gnOgogICAgICAgICAgICAgc2VsZi5pbnRlcnZhbCA9IDYwICogNjAgIyBvbmUgaG91cgogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWRfJUgiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn1fXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9X1xkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbiA9PSAnRCcgb3Igc2VsZi53aGVuID09ICdNSUROSUdIVCc6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgKiA2MCAqIDI0ICMgb25lIGRheQogICAgICAgICAgICAgc2VsZi5zdWZmaXggPSAiJVktJW0tJWQiCi0gICAgICAgICAgICBzZWxmLmV4dE1hdGNoID0gciJeXGR7NH0tXGR7Mn0tXGR7Mn0kIgorICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9KFwuXHcrKT8kIgogICAgICAgICBlbGlmIHNlbGYud2hlbi5zdGFydHN3aXRoKCdXJyk6CiAgICAgICAgICAgICBzZWxmLmludGVydmFsID0gNjAgKiA2MCAqIDI0ICogNyAjIG9uZSB3ZWVrCiAgICAgICAgICAgICBpZiBsZW4oc2VsZi53aGVuKSAhPSAyOgpAQCAtMjA0LDcgKzIzOSw3IEBACiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBkYXkgc3BlY2lmaWVkIGZvciB3ZWVrbHkgcm9sbG92ZXI6ICVzIiAlIHNlbGYud2hlbikKICAgICAgICAgICAgIHNlbGYuZGF5T2ZXZWVrID0gaW50KHNlbGYud2hlblsxXSkKICAgICAgICAgICAgIHNlbGYuc3VmZml4ID0gIiVZLSVtLSVkIgotICAgICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHIiXlxkezR9LVxkezJ9LVxkezJ9JCIKKyAgICAgICAgICAgIHNlbGYuZXh0TWF0Y2ggPSByIl5cZHs0fS1cZHsyfS1cZHsyfShcLlx3Kyk/JCIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgcm9sbG92ZXIgaW50ZXJ2YWwgc3BlY2lmaWVkOiAlcyIgJSBzZWxmLndoZW4pCiAKQEAgLTMzNywxMCArMzcyLDExIEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgYWRkZW5kID0gLTM2MDAKICAgICAgICAgICAgICAgICB0aW1lVHVwbGUgPSB0aW1lLmxvY2FsdGltZSh0ICsgYWRkZW5kKQotICAgICAgICBkZm4gPSBzZWxmLmJhc2VGaWxlbmFtZSArICIuIiArIHRpbWUuc3RyZnRpbWUoc2VsZi5zdWZmaXgsIHRpbWVUdXBsZSkKKyAgICAgICAgZGZuID0gc2VsZi5yb3RhdGlvbl9maWxlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSArICIuIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZShzZWxmLnN1ZmZpeCwgdGltZVR1cGxlKSkKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGZuKToKICAgICAgICAgICAgIG9zLnJlbW92ZShkZm4pCi0gICAgICAgIG9zLnJlbmFtZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQorICAgICAgICBzZWxmLnJvdGF0ZShzZWxmLmJhc2VGaWxlbmFtZSwgZGZuKQogICAgICAgICBpZiBzZWxmLmJhY2t1cENvdW50ID4gMDoKICAgICAgICAgICAgIGZvciBzIGluIHNlbGYuZ2V0RmlsZXNUb0RlbGV0ZSgpOgogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShzKQpAQCAtMzc5LDcgKzQxNSw3IEBACiAgICAgVGhpcyBoYW5kbGVyIGlzIGJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBhbmQgcGF0Y2ggYnkgQ2hhZCBKLgogICAgIFNjaHJvZWRlci4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9J2EnLCBlbmNvZGluZz1Ob25lLCBkZWxheT1GYWxzZSk6CiAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGUsIGVuY29kaW5nLCBkZWxheSkKICAgICAgICAgc2VsZi5kZXYsIHNlbGYuaW5vID0gLTEsIC0xCiAgICAgICAgIHNlbGYuX3N0YXRzdHJlYW0oKQpAQCAtNDM4LDE1ICs0NzQsMTUgQEAKICAgICAgICAgIiIiCiAgICAgICAgIEluaXRpYWxpemVzIHRoZSBoYW5kbGVyIHdpdGggYSBzcGVjaWZpYyBob3N0IGFkZHJlc3MgYW5kIHBvcnQuCiAKLSAgICAgICAgVGhlIGF0dHJpYnV0ZSAnY2xvc2VPbkVycm9yJyBpcyBzZXQgdG8gMSAtIHdoaWNoIG1lYW5zIHRoYXQgaWYKLSAgICAgICAgYSBzb2NrZXQgZXJyb3Igb2NjdXJzLCB0aGUgc29ja2V0IGlzIHNpbGVudGx5IGNsb3NlZCBhbmQgdGhlbgotICAgICAgICByZW9wZW5lZCBvbiB0aGUgbmV4dCBsb2dnaW5nIGNhbGwuCisgICAgICAgIFdoZW4gdGhlIGF0dHJpYnV0ZSAqY2xvc2VPbkVycm9yKiBpcyBzZXQgdG8gVHJ1ZSAtIGlmIGEgc29ja2V0IGVycm9yCisgICAgICAgIG9jY3VycywgdGhlIHNvY2tldCBpcyBzaWxlbnRseSBjbG9zZWQgYW5kIHRoZW4gcmVvcGVuZWQgb24gdGhlIG5leHQKKyAgICAgICAgbG9nZ2luZyBjYWxsLgogICAgICAgICAiIiIKICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLnNvY2sgPSBOb25lCi0gICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gMAorICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IEZhbHNlCiAgICAgICAgIHNlbGYucmV0cnlUaW1lID0gTm9uZQogICAgICAgICAjCiAgICAgICAgICMgRXhwb25lbnRpYWwgYmFja29mZiBwYXJhbWV0ZXJzLgpAQCAtNDYzLDggKzQ5OSwxMiBAQAogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBpZiBoYXNhdHRyKHMsICdzZXR0aW1lb3V0Jyk6CiAgICAgICAgICAgICBzLnNldHRpbWVvdXQodGltZW91dCkKLSAgICAgICAgcy5jb25uZWN0KChzZWxmLmhvc3QsIHNlbGYucG9ydCkpCi0gICAgICAgIHJldHVybiBzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuY29ubmVjdCgoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorICAgICAgICAgICAgcmV0dXJuIHMKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAgICAgcmFpc2UKIAogICAgIGRlZiBjcmVhdGVTb2NrZXQoc2VsZik6CiAgICAgICAgICIiIgpAQCAtNDc3LDcgKzUxNyw3IEBACiAgICAgICAgICMgaXMgdGhlIGZpcnN0IHRpbWUgYmFjayBhZnRlciBhIGRpc2Nvbm5lY3QsIG9yCiAgICAgICAgICMgd2UndmUgd2FpdGVkIGxvbmcgZW5vdWdoLgogICAgICAgICBpZiBzZWxmLnJldHJ5VGltZSBpcyBOb25lOgotICAgICAgICAgICAgYXR0ZW1wdCA9IDEKKyAgICAgICAgICAgIGF0dGVtcHQgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhdHRlbXB0ID0gKG5vdyA+PSBzZWxmLnJldHJ5VGltZSkKICAgICAgICAgaWYgYXR0ZW1wdDoKQEAgLTUxMCwxNCArNTUwLDE0IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnNvY2ssICJzZW5kYWxsIik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKHMpCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlbHNlOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgICAgICAgICBzZW50c29mYXIgPSAwCiAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBsZW4ocykKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgbGVmdCA+IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZW50ID0gc2VsZi5zb2NrLnNlbmQoc1tzZW50c29mYXI6XSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRzb2ZhciA9IHNlbnRzb2ZhciArIHNlbnQKICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0IC0gc2VudAotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6ICNwcmFnbWE6IG5vIGNvdmVyCiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKICAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBOb25lICAjIHNvIHdlIGNhbiBjYWxsIGNyZWF0ZVNvY2tldCBuZXh0IHRpbWUKIApAQCAtNTY3LDcgKzYwNyw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHMgPSBzZWxmLm1ha2VQaWNrbGUocmVjb3JkKQogICAgICAgICAgICAgc2VsZi5zZW5kKHMpCi0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtNjAxLDcgKzY0MSw3IEBACiAgICAgICAgIEluaXRpYWxpemVzIHRoZSBoYW5kbGVyIHdpdGggYSBzcGVjaWZpYyBob3N0IGFkZHJlc3MgYW5kIHBvcnQuCiAgICAgICAgICIiIgogICAgICAgICBTb2NrZXRIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQpCi0gICAgICAgIHNlbGYuY2xvc2VPbkVycm9yID0gMAorICAgICAgICBzZWxmLmNsb3NlT25FcnJvciA9IEZhbHNlCiAKICAgICBkZWYgbWFrZVNvY2tldChzZWxmKToKICAgICAgICAgIiIiCkBAIC03NDIsMTAgKzc4MiwxMCBAQAogICAgICAgICBzZWxmLnNvY2t0eXBlID0gc29ja3R5cGUKIAogICAgICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIHN0cik6Ci0gICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSAxCisgICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9jb25uZWN0X3VuaXhzb2NrZXQoYWRkcmVzcykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IDAKKyAgICAgICAgICAgIHNlbGYudW5peHNvY2tldCA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2t0eXBlKQogICAgICAgICAgICAgaWYgc29ja3R5cGUgPT0gc29ja2V0LlNPQ0tfU1RSRUFNOgogICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoYWRkcmVzcykKQEAgLTc3OCw4ICs4MTgsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5hY3F1aXJlKCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgc2VsZi51bml4c29ja2V0OgotICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5jbG9zZShzZWxmKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZWxlYXNlKCkKQEAgLTc5NCw2ICs4MzMsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIHNlbGYucHJpb3JpdHlfbWFwLmdldChsZXZlbE5hbWUsICJ3YXJuaW5nIikKIAorICAgIGlkZW50ID0gJycgICAgICAgICAgIyBwcmVwZW5kZWQgdG8gYWxsIG1lc3NhZ2VzCiAgICAgYXBwZW5kX251bCA9IFRydWUgICAjIHNvbWUgb2xkIHN5c2xvZyBkYWVtb25zIGV4cGVjdCBhIE5VTCB0ZXJtaW5hdG9yCiAKICAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgpAQCAtODA0LDYgKzg0NCw4IEBACiAgICAgICAgIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCBpdCBpcyBOT1Qgc2VudCB0byB0aGUgc2VydmVyLgogICAgICAgICAiIiIKICAgICAgICAgbXNnID0gc2VsZi5mb3JtYXQocmVjb3JkKQorICAgICAgICBpZiBzZWxmLmlkZW50OgorICAgICAgICAgICAgbXNnID0gc2VsZi5pZGVudCArIG1zZwogICAgICAgICBpZiBzZWxmLmFwcGVuZF9udWw6CiAgICAgICAgICAgICBtc2cgKz0gJ1wwMDAnCiAgICAgICAgICIiIgpAQCAtODI3LDcgKzg2OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZHRvKG1zZywgc2VsZi5hZGRyZXNzKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5zZW5kYWxsKG1zZykKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC04MzcsNyArODc5LDcgQEAKICAgICBBIGhhbmRsZXIgY2xhc3Mgd2hpY2ggc2VuZHMgYW4gU01UUCBlbWFpbCBmb3IgZWFjaCBsb2dnaW5nIGV2ZW50LgogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWlsaG9zdCwgZnJvbWFkZHIsIHRvYWRkcnMsIHN1YmplY3QsCi0gICAgICAgICAgICAgICAgIGNyZWRlbnRpYWxzPU5vbmUsIHNlY3VyZT1Ob25lKToKKyAgICAgICAgICAgICAgICAgY3JlZGVudGlhbHM9Tm9uZSwgc2VjdXJlPU5vbmUsIHRpbWVvdXQ9NS4wKToKICAgICAgICAgIiIiCiAgICAgICAgIEluaXRpYWxpemUgdGhlIGhhbmRsZXIuCiAKQEAgLTg1MSw2ICs4OTMsOCBAQAogICAgICAgICB3aWxsIGJlIGVpdGhlciBhbiBlbXB0eSB0dXBsZSwgb3IgYSBzaW5nbGUtdmFsdWUgdHVwbGUgd2l0aCB0aGUgbmFtZQogICAgICAgICBvZiBhIGtleWZpbGUsIG9yIGEgMi12YWx1ZSB0dXBsZSB3aXRoIHRoZSBuYW1lcyBvZiB0aGUga2V5ZmlsZSBhbmQKICAgICAgICAgY2VydGlmaWNhdGUgZmlsZS4gKFRoaXMgdHVwbGUgaXMgcGFzc2VkIHRvIHRoZSBgc3RhcnR0bHNgIG1ldGhvZCkuCisgICAgICAgIEEgdGltZW91dCBpbiBzZWNvbmRzIGNhbiBiZSBzcGVjaWZpZWQgZm9yIHRoZSBTTVRQIGNvbm5lY3Rpb24gKHRoZQorICAgICAgICBkZWZhdWx0IGlzIG9uZSBzZWNvbmQpLgogICAgICAgICAiIiIKICAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIGlmIGlzaW5zdGFuY2UobWFpbGhvc3QsIHR1cGxlKToKQEAgLTg2Nyw3ICs5MTEsNyBAQAogICAgICAgICBzZWxmLnRvYWRkcnMgPSB0b2FkZHJzCiAgICAgICAgIHNlbGYuc3ViamVjdCA9IHN1YmplY3QKICAgICAgICAgc2VsZi5zZWN1cmUgPSBzZWN1cmUKLSAgICAgICAgc2VsZi5fdGltZW91dCA9IDUuMAorICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAKICAgICBkZWYgZ2V0U3ViamVjdChzZWxmLCByZWNvcmQpOgogICAgICAgICAiIiIKQEAgLTg5MCw3ICs5MzQsNyBAQAogICAgICAgICAgICAgcG9ydCA9IHNlbGYubWFpbHBvcnQKICAgICAgICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgICAgIHBvcnQgPSBzbXRwbGliLlNNVFBfUE9SVAotICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChzZWxmLm1haWxob3N0LCBwb3J0LCB0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCisgICAgICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKHNlbGYubWFpbGhvc3QsIHBvcnQsIHRpbWVvdXQ9c2VsZi50aW1lb3V0KQogICAgICAgICAgICAgbXNnID0gc2VsZi5mb3JtYXQocmVjb3JkKQogICAgICAgICAgICAgbXNnID0gIkZyb206ICVzXHJcblRvOiAlc1xyXG5TdWJqZWN0OiAlc1xyXG5EYXRlOiAlc1xyXG5cclxuJXMiICUgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnJvbWFkZHIsCkBAIC05MDUsNyArOTQ5LDcgQEAKICAgICAgICAgICAgICAgICBzbXRwLmxvZ2luKHNlbGYudXNlcm5hbWUsIHNlbGYucGFzc3dvcmQpCiAgICAgICAgICAgICBzbXRwLnNlbmRtYWlsKHNlbGYuZnJvbWFkZHIsIHNlbGYudG9hZGRycywgbXNnKQogICAgICAgICAgICAgc210cC5xdWl0KCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC05OTIsNyArMTAzNiw3IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IHNlbGYuZ2V0RXZlbnRUeXBlKHJlY29yZCkKICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLmZvcm1hdChyZWNvcmQpCiAgICAgICAgICAgICAgICAgc2VsZi5fd2VsdS5SZXBvcnRFdmVudChzZWxmLmFwcG5hbWUsIGlkLCBjYXQsIHR5cGUsIFttc2ddKQotICAgICAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTA3NSw5ICsxMTE5LDExIEBACiAgICAgICAgICAgICAgICAgcyA9ICgndSVzOiVzJyAlIHNlbGYuY3JlZGVudGlhbHMpLmVuY29kZSgndXRmLTgnKQogICAgICAgICAgICAgICAgIHMgPSAnQmFzaWMgJyArIGJhc2U2NC5iNjRlbmNvZGUocykuc3RyaXAoKQogICAgICAgICAgICAgICAgIGgucHV0aGVhZGVyKCdBdXRob3JpemF0aW9uJywgcykKLSAgICAgICAgICAgIGguZW5kaGVhZGVycyhkYXRhIGlmIHNlbGYubWV0aG9kID09ICJQT1NUIiBlbHNlIE5vbmUpCisgICAgICAgICAgICBoLmVuZGhlYWRlcnMoKQorICAgICAgICAgICAgaWYgc2VsZi5tZXRob2QgPT0gIlBPU1QiOgorICAgICAgICAgICAgICAgIGguc2VuZChkYXRhLmVuY29kZSgndXRmLTgnKSkKICAgICAgICAgICAgIGguZ2V0cmVzcG9uc2UoKSAgICAjY2FuJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGUgcmVzdWx0Ci0gICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOgorICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KTogI3ByYWdtYTogbm8gY292ZXIKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuaGFuZGxlRXJyb3IocmVjb3JkKQpAQCAtMTI1OSw3ICsxMzA1LDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuZW5xdWV1ZShzZWxmLnByZXBhcmUocmVjb3JkKSkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgU3lzdGVtRXhpdCk6CisgICAgICAgIGV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQsIFN5c3RlbUV4aXQpOiAjcHJhZ21hOiBubyBjb3ZlcgogICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCkBAIC0xMzU2LDYgKzE0MDIsMTYgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgcXVldWUuRW1wdHk6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKKyAgICAgICAgZGVmIGVucXVldWVfc2VudGluZWwoc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFRoaXMgaXMgdXNlZCB0byBlbnF1ZXVlIHRoZSBzZW50aW5lbCByZWNvcmQuCisKKyAgICAgICAgICAgIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIHVzZXMgcHV0X25vd2FpdC4gWW91IG1heSB3YW50IHRvIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgICAgIG1ldGhvZCBpZiB5b3Ugd2FudCB0byB1c2UgdGltZW91dHMgb3Igd29yayB3aXRoIGN1c3RvbSBxdWV1ZQorICAgICAgICAgICAgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnF1ZXVlLnB1dF9ub3dhaXQoc2VsZi5fc2VudGluZWwpCisKICAgICAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFN0b3AgdGhlIGxpc3RlbmVyLgpAQCAtMTM2NSw2ICsxNDIxLDYgQEAKICAgICAgICAgICAgIG1heSBiZSBzb21lIHJlY29yZHMgc3RpbGwgbGVmdCBvbiB0aGUgcXVldWUsIHdoaWNoIHdvbid0IGJlIHByb2Nlc3NlZC4KICAgICAgICAgICAgICIiIgogICAgICAgICAgICAgc2VsZi5fc3RvcC5zZXQoKQotICAgICAgICAgICAgc2VsZi5xdWV1ZS5wdXRfbm93YWl0KHNlbGYuX3NlbnRpbmVsKQorICAgICAgICAgICAgc2VsZi5lbnF1ZXVlX3NlbnRpbmVsKCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKCkKICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9sem1hLnB5IGIvTGliL2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWExYjA2NQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9sem1hLnB5CkBAIC0wLDAgKzEsNDU0IEBACisiIiJJbnRlcmZhY2UgdG8gdGhlIGxpYmx6bWEgY29tcHJlc3Npb24gbGlicmFyeS4KKworVGhpcyBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBjb21wcmVzc2VkIGZpbGVzLAorY2xhc3NlcyBmb3IgaW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uLCBhbmQgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvcgorb25lLXNob3QgKGRlKWNvbXByZXNzaW9uLgorCitUaGVzZSBjbGFzc2VzIGFuZCBmdW5jdGlvbnMgc3VwcG9ydCBib3RoIHRoZSBYWiBhbmQgbGVnYWN5IExaTUEKK2NvbnRhaW5lciBmb3JtYXRzLCBhcyB3ZWxsIGFzIHJhdyBjb21wcmVzc2VkIGRhdGEgc3RyZWFtcy4KKyIiIgorCitfX2FsbF9fID0gWworICAgICJDSEVDS19OT05FIiwgIkNIRUNLX0NSQzMyIiwgIkNIRUNLX0NSQzY0IiwgIkNIRUNLX1NIQTI1NiIsCisgICAgIkNIRUNLX0lEX01BWCIsICJDSEVDS19VTktOT1dOIiwKKyAgICAiRklMVEVSX0xaTUExIiwgIkZJTFRFUl9MWk1BMiIsICJGSUxURVJfREVMVEEiLCAiRklMVEVSX1g4NiIsICJGSUxURVJfSUE2NCIsCisgICAgIkZJTFRFUl9BUk0iLCAiRklMVEVSX0FSTVRIVU1CIiwgIkZJTFRFUl9QT1dFUlBDIiwgIkZJTFRFUl9TUEFSQyIsCisgICAgIkZPUk1BVF9BVVRPIiwgIkZPUk1BVF9YWiIsICJGT1JNQVRfQUxPTkUiLCAiRk9STUFUX1JBVyIsCisgICAgIk1GX0hDMyIsICJNRl9IQzQiLCAiTUZfQlQyIiwgIk1GX0JUMyIsICJNRl9CVDQiLAorICAgICJNT0RFX0ZBU1QiLCAiTU9ERV9OT1JNQUwiLCAiUFJFU0VUX0RFRkFVTFQiLCAiUFJFU0VUX0VYVFJFTUUiLAorCisgICAgIkxaTUFDb21wcmVzc29yIiwgIkxaTUFEZWNvbXByZXNzb3IiLCAiTFpNQUZpbGUiLCAiTFpNQUVycm9yIiwKKyAgICAib3BlbiIsICJjb21wcmVzcyIsICJkZWNvbXByZXNzIiwgImlzX2NoZWNrX3N1cHBvcnRlZCIsCitdCisKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGlvCitmcm9tIF9sem1hIGltcG9ydCAqCitmcm9tIF9sem1hIGltcG9ydCBfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzCisKKworX01PREVfQ0xPU0VEICAgPSAwCitfTU9ERV9SRUFEICAgICA9IDEKK19NT0RFX1JFQURfRU9GID0gMgorX01PREVfV1JJVEUgICAgPSAzCisKK19CVUZGRVJfU0laRSA9IDgxOTIKKworCitjbGFzcyBMWk1BRmlsZShpby5CdWZmZXJlZElPQmFzZSk6CisKKyAgICAiIiJBIGZpbGUgb2JqZWN0IHByb3ZpZGluZyB0cmFuc3BhcmVudCBMWk1BIChkZSljb21wcmVzc2lvbi4KKworICAgIEFuIExaTUFGaWxlIGNhbiBhY3QgYXMgYSB3cmFwcGVyIGZvciBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgb3IKKyAgICByZWZlciBkaXJlY3RseSB0byBhIG5hbWVkIGZpbGUgb24gZGlzay4KKworICAgIE5vdGUgdGhhdCBMWk1BRmlsZSBwcm92aWRlcyBhICpiaW5hcnkqIGZpbGUgaW50ZXJmYWNlIC0gZGF0YSByZWFkCisgICAgaXMgcmV0dXJuZWQgYXMgYnl0ZXMsIGFuZCBkYXRhIHRvIGJlIHdyaXR0ZW4gbXVzdCBiZSBnaXZlbiBhcyBieXRlcy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZT1Ob25lLCBtb2RlPSJyIiwgKiwKKyAgICAgICAgICAgICAgICAgZm9ybWF0PU5vbmUsIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKToKKyAgICAgICAgIiIiT3BlbiBhbiBMWk1BLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgbW9kZS4KKworICAgICAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yCisgICAgICAgIGJ5dGVzIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMgb3BlbmVkLCBvciBpdCBjYW4KKyAgICAgICAgYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgICAgIG1vZGUgY2FuIGJlICJyIiBmb3IgcmVhZGluZyAoZGVmYXVsdCksICJ3IiBmb3IgKG92ZXIpd3JpdGluZywgb3IKKyAgICAgICAgImEiIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbiBlcXVpdmFsZW50bHkgYmUgZ2l2ZW4gYXMgInJiIiwgIndiIiwKKyAgICAgICAgYW5kICJhYiIgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIGZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgdG8gdXNlIGZvciB0aGUgZmlsZS4KKyAgICAgICAgSWYgbW9kZSBpcyAiciIsIHRoaXMgZGVmYXVsdHMgdG8gRk9STUFUX0FVVE8uIE90aGVyd2lzZSwgdGhlCisgICAgICAgIGRlZmF1bHQgaXMgRk9STUFUX1haLgorCisgICAgICAgIGNoZWNrIHNwZWNpZmllcyB0aGUgaW50ZWdyaXR5IGNoZWNrIHRvIHVzZS4gVGhpcyBhcmd1bWVudCBjYW4KKyAgICAgICAgb25seSBiZSB1c2VkIHdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcuIEZvciBGT1JNQVRfWFosCisgICAgICAgIHRoZSBkZWZhdWx0IGlzIENIRUNLX0NSQzY0LiBGT1JNQVRfQUxPTkUgYW5kIEZPUk1BVF9SQVcgZG8gbm90CisgICAgICAgIHN1cHBvcnQgaW50ZWdyaXR5IGNoZWNrcyAtIGZvciB0aGVzZSBmb3JtYXRzLCBjaGVjayBtdXN0IGJlCisgICAgICAgIG9taXR0ZWQsIG9yIGJlIENIRUNLX05PTkUuCisKKyAgICAgICAgV2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZywgdGhlICpwcmVzZXQqIGFyZ3VtZW50IGlzIG5vdAorICAgICAgICBtZWFuaW5nZnVsLCBhbmQgc2hvdWxkIGJlIG9taXR0ZWQuIFRoZSAqZmlsdGVycyogYXJndW1lbnQgc2hvdWxkCisgICAgICAgIGFsc28gYmUgb21pdHRlZCwgZXhjZXB0IHdoZW4gZm9ybWF0IGlzIEZPUk1BVF9SQVcgKGluIHdoaWNoIGNhc2UKKyAgICAgICAgaXQgaXMgcmVxdWlyZWQpLgorCisgICAgICAgIFdoZW4gb3BlbmluZyBhIGZpbGUgZm9yIHdyaXRpbmcsIHRoZSBzZXR0aW5ncyB1c2VkIGJ5IHRoZQorICAgICAgICBjb21wcmVzc29yIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGEgcHJlc2V0IGNvbXByZXNzaW9uCisgICAgICAgIGxldmVsICh3aXRoIHRoZSAqcHJlc2V0KiBhcmd1bWVudCksIG9yIGluIGRldGFpbCBhcyBhIGN1c3RvbQorICAgICAgICBmaWx0ZXIgY2hhaW4gKHdpdGggdGhlICpmaWx0ZXJzKiBhcmd1bWVudCkuIEZvciBGT1JNQVRfWFogYW5kCisgICAgICAgIEZPUk1BVF9BTE9ORSwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBQUkVTRVRfREVGQVVMVCBwcmVzZXQKKyAgICAgICAgbGV2ZWwuIEZvciBGT1JNQVRfUkFXLCB0aGUgY2FsbGVyIG11c3QgYWx3YXlzIHNwZWNpZnkgYSBmaWx0ZXIKKyAgICAgICAgY2hhaW47IHRoZSByYXcgY29tcHJlc3NvciBkb2VzIG5vdCBzdXBwb3J0IHByZXNldCBjb21wcmVzc2lvbgorICAgICAgICBsZXZlbHMuCisKKyAgICAgICAgcHJlc2V0IChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIDAtOSwKKyAgICAgICAgb3B0aW9uYWxseSBPUi1lZCB3aXRoIHRoZSBjb25zdGFudCBQUkVTRVRfRVhUUkVNRS4KKworICAgICAgICBmaWx0ZXJzIChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgZGljdHMuIEVhY2ggZGljdAorICAgICAgICBzaG91bGQgaGF2ZSBhbiBlbnRyeSBmb3IgImlkIiBpbmRpY2F0aW5nIElEIG9mIHRoZSBmaWx0ZXIsIHBsdXMKKyAgICAgICAgYWRkaXRpb25hbCBlbnRyaWVzIGZvciBvcHRpb25zIHRvIHRoZSBmaWx0ZXIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9mcCA9IE5vbmUKKyAgICAgICAgc2VsZi5fY2xvc2VmcCA9IEZhbHNlCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKyAgICAgICAgc2VsZi5fcG9zID0gMAorICAgICAgICBzZWxmLl9zaXplID0gLTEKKworICAgICAgICBpZiBtb2RlIGluICgiciIsICJyYiIpOgorICAgICAgICAgICAgaWYgY2hlY2sgIT0gLTE6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHNwZWNpZnkgYW4gaW50ZWdyaXR5IGNoZWNrICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVuIG9wZW5pbmcgYSBmaWxlIGZvciByZWFkaW5nIikKKyAgICAgICAgICAgIGlmIHByZXNldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc3BlY2lmeSBhIHByZXNldCBjb21wcmVzc2lvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwgd2hlbiBvcGVuaW5nIGEgZmlsZSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfQVVUTworICAgICAgICAgICAgbW9kZV9jb2RlID0gX01PREVfUkVBRAorICAgICAgICAgICAgIyBTYXZlIHRoZSBhcmdzIHRvIHBhc3MgdG8gdGhlIExaTUFEZWNvbXByZXNzb3IgaW5pdGlhbGl6ZXIuCisgICAgICAgICAgICAjIElmIHRoZSBmaWxlIGNvbnRhaW5zIG11bHRpcGxlIGNvbXByZXNzZWQgc3RyZWFtcywgZWFjaAorICAgICAgICAgICAgIyBzdHJlYW0gd2lsbCBuZWVkIGEgc2VwYXJhdGUgZGVjb21wcmVzc29yIG9iamVjdC4KKyAgICAgICAgICAgIHNlbGYuX2luaXRfYXJncyA9IHsiZm9ybWF0Ijpmb3JtYXQsICJmaWx0ZXJzIjpmaWx0ZXJzfQorICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgZWxpZiBtb2RlIGluICgidyIsICJ3YiIsICJhIiwgImFiIik6CisgICAgICAgICAgICBpZiBmb3JtYXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBGT1JNQVRfWFoKKyAgICAgICAgICAgIG1vZGVfY29kZSA9IF9NT0RFX1dSSVRFCisgICAgICAgICAgICBzZWxmLl9jb21wcmVzc29yID0gTFpNQUNvbXByZXNzb3IoZm9ybWF0PWZvcm1hdCwgY2hlY2s9Y2hlY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2V0PXByZXNldCwgZmlsdGVycz1maWx0ZXJzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSW52YWxpZCBtb2RlOiB7IXJ9Ii5mb3JtYXQobW9kZSkpCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKKyAgICAgICAgICAgICAgICBtb2RlICs9ICJiIgorICAgICAgICAgICAgc2VsZi5fZnAgPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VmcCA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX21vZGUgPSBtb2RlX2NvZGUKKyAgICAgICAgZWxpZiBoYXNhdHRyKGZpbGVuYW1lLCAicmVhZCIpIG9yIGhhc2F0dHIoZmlsZW5hbWUsICJ3cml0ZSIpOgorICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQorICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgIiIiRmx1c2ggYW5kIGNsb3NlIHRoZSBmaWxlLgorCisgICAgICAgIE1heSBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2Ugd2l0aG91dCBlcnJvci4gT25jZSB0aGUgZmlsZSBpcworICAgICAgICBjbG9zZWQsIGFueSBvdGhlciBvcGVyYXRpb24gb24gaXQgd2lsbCByYWlzZSBhIFZhbHVlRXJyb3IuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX0NMT1NFRDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2RlIGluIChfTU9ERV9SRUFELCBfTU9ERV9SRUFEX0VPRik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURToKKyAgICAgICAgICAgICAgICBzZWxmLl9mcC53cml0ZShzZWxmLl9jb21wcmVzc29yLmZsdXNoKCkpCisgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NvciA9IE5vbmUKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9jbG9zZWZwOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mcC5jbG9zZSgpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNlbGYuX2ZwID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBGYWxzZQorICAgICAgICAgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9DTE9TRUQKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbG9zZWQoc2VsZik6CisgICAgICAgICIiIlRydWUgaWYgdGhpcyBmaWxlIGlzIGNsb3NlZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21vZGUgPT0gX01PREVfQ0xPU0VECisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGZpbGUgZGVzY3JpcHRvciBmb3IgdGhlIHVuZGVybHlpbmcgZmlsZS4iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCisgICAgICAgIHJldHVybiBzZWxmLl9mcC5maWxlbm8oKQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBzdXBwb3J0cyBzZWVraW5nLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZWFkYWJsZSgpIGFuZCBzZWxmLl9mcC5zZWVrYWJsZSgpCisKKyAgICBkZWYgcmVhZGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHJlYWRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSBpbiAoX01PREVfUkVBRCwgX01PREVfUkVBRF9FT0YpCisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcuIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbW9kZSA9PSBfTU9ERV9XUklURQorCisgICAgIyBNb2RlLWNoZWNraW5nIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICBkZWYgX2NoZWNrX25vdF9jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9yZWFkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIkZpbGUgbm90IG9wZW4gZm9yIHJlYWRpbmciKQorCisgICAgZGVmIF9jaGVja19jYW5fd3JpdGUoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLndyaXRhYmxlKCk6CisgICAgICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbigiRmlsZSBub3Qgb3BlbiBmb3Igd3JpdGluZyIpCisKKyAgICBkZWYgX2NoZWNrX2Nhbl9zZWVrKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5yZWFkYWJsZSgpOgorICAgICAgICAgICAgcmFpc2UgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24oIlNlZWtpbmcgaXMgb25seSBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGZpbGVzIG9wZW4gZm9yIHJlYWRpbmciKQorICAgICAgICBpZiBub3Qgc2VsZi5fZnAuc2Vla2FibGUoKToKKyAgICAgICAgICAgIHJhaXNlIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uKCJUaGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9lcyBub3Qgc3VwcG9ydCBzZWVraW5nIikKKworICAgICMgRmlsbCB0aGUgcmVhZGFoZWFkIGJ1ZmZlciBpZiBpdCBpcyBlbXB0eS4gUmV0dXJucyBGYWxzZSBvbiBFT0YuCisgICAgZGVmIF9maWxsX2J1ZmZlcihzZWxmKToKKyAgICAgICAgIyBEZXBlbmRpbmcgb24gdGhlIGlucHV0IGRhdGEsIG91ciBjYWxsIHRvIHRoZSBkZWNvbXByZXNzb3IgbWF5IG5vdAorICAgICAgICAjIHJldHVybiBhbnkgZGF0YS4gSW4gdGhpcyBjYXNlLCB0cnkgYWdhaW4gYWZ0ZXIgcmVhZGluZyBhbm90aGVyIGJsb2NrLgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgaWYgc2VsZi5fYnVmZmVyOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2RlY29tcHJlc3Nvci51bnVzZWRfZGF0YQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYXdibG9jayA9IHNlbGYuX2ZwLnJlYWQoX0JVRkZFUl9TSVpFKQorCisgICAgICAgICAgICBpZiBub3QgcmF3YmxvY2s6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fZGVjb21wcmVzc29yLmVvZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9kZSA9IF9NT0RFX1JFQURfRU9GCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3NpemUgPSBzZWxmLl9wb3MKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IoIkNvbXByZXNzZWQgZmlsZSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gbWFya2VyIHdhcyByZWFjaGVkIikKKworICAgICAgICAgICAgIyBDb250aW51ZSB0byBuZXh0IHN0cmVhbS4KKyAgICAgICAgICAgIGlmIHNlbGYuX2RlY29tcHJlc3Nvci5lb2Y6CisgICAgICAgICAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKworICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MocmF3YmxvY2spCisKKyAgICAjIFJlYWQgZGF0YSB1bnRpbCBFT0YuCisgICAgIyBJZiByZXR1cm5fZGF0YSBpcyBmYWxzZSwgY29uc3VtZSB0aGUgZGF0YSB3aXRob3V0IHJldHVybmluZyBpdC4KKyAgICBkZWYgX3JlYWRfYWxsKHNlbGYsIHJldHVybl9kYXRhPVRydWUpOgorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICB3aGlsZSBzZWxmLl9maWxsX2J1ZmZlcigpOgorICAgICAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChzZWxmLl9idWZmZXIpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKHNlbGYuX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuX2J1ZmZlciA9IE5vbmUKKyAgICAgICAgaWYgcmV0dXJuX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oYmxvY2tzKQorCisgICAgIyBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gbiBieXRlcy4KKyAgICAjIElmIHJldHVybl9kYXRhIGlzIGZhbHNlLCBjb25zdW1lIHRoZSBkYXRhIHdpdGhvdXQgcmV0dXJuaW5nIGl0LgorICAgIGRlZiBfcmVhZF9ibG9jayhzZWxmLCBuLCByZXR1cm5fZGF0YT1UcnVlKToKKyAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHNlbGYuX2ZpbGxfYnVmZmVyKCk6CisgICAgICAgICAgICBpZiBuIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcls6bl0KKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbbjpdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9idWZmZXIKKyAgICAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBOb25lCisgICAgICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKGRhdGEpCisgICAgICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICBpZiByZXR1cm5fZGF0YToKKyAgICAgICAgICAgIHJldHVybiBiIiIuam9pbihibG9ja3MpCisKKyAgICBkZWYgcGVlayhzZWxmLCBzaXplPS0xKToKKyAgICAgICAgIiIiUmV0dXJuIGJ1ZmZlcmVkIGRhdGEgd2l0aG91dCBhZHZhbmNpbmcgdGhlIGZpbGUgcG9zaXRpb24uCisKKyAgICAgICAgQWx3YXlzIHJldHVybnMgYXQgbGVhc3Qgb25lIGJ5dGUgb2YgZGF0YSwgdW5sZXNzIGF0IEVPRi4KKyAgICAgICAgVGhlIGV4YWN0IG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBpcyB1bnNwZWNpZmllZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgc2VsZi5fbW9kZSA9PSBfTU9ERV9SRUFEX0VPRiBvciBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKToKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX2J1ZmZlcgorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgICIiIlJlYWQgdXAgdG8gc2l6ZSB1bmNvbXByZXNzZWQgYnl0ZXMgZnJvbSB0aGUgZmlsZS4KKworICAgICAgICBJZiBzaXplIGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuCisgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGFscmVhZHkgYXQgRU9GLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2FuX3JlYWQoKQorICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yIHNpemUgPT0gMDoKKyAgICAgICAgICAgIHJldHVybiBiIiIKKyAgICAgICAgZWxpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2FsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9ibG9jayhzaXplKQorCisgICAgZGVmIHJlYWQxKHNlbGYsIHNpemU9LTEpOgorICAgICAgICAiIiJSZWFkIHVwIHRvIHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCB3aGlsZSB0cnlpbmcgdG8gYXZvaWQKKyAgICAgICAgbWFraW5nIG11bHRpcGxlIHJlYWRzIGZyb20gdGhlIHVuZGVybHlpbmcgc3RyZWFtLgorCisgICAgICAgIFJldHVybnMgYiIiIGlmIHRoZSBmaWxlIGlzIGF0IEVPRi4KKyAgICAgICAgIiIiCisgICAgICAgICMgVXN1YWxseSwgcmVhZDEoKSBjYWxscyBfZnAucmVhZCgpIGF0IG1vc3Qgb25jZS4gSG93ZXZlciwgc29tZXRpbWVzCisgICAgICAgICMgdGhpcyBkb2VzIG5vdCBnaXZlIGVub3VnaCBkYXRhIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIG1ha2UgcHJvZ3Jlc3MuCisgICAgICAgICMgSW4gdGhpcyBjYXNlIHdlIG1ha2UgbXVsdGlwbGUgcmVhZHMsIHRvIGF2b2lkIHJldHVybmluZyBiIiIuCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9yZWFkKCkKKyAgICAgICAgaWYgKHNpemUgPT0gMCBvciBzZWxmLl9tb2RlID09IF9NT0RFX1JFQURfRU9GIG9yCisgICAgICAgICAgICBub3Qgc2VsZi5fZmlsbF9idWZmZXIoKSk6CisgICAgICAgICAgICByZXR1cm4gYiIiCisgICAgICAgIGlmIDAgPCBzaXplIDwgbGVuKHNlbGYuX2J1ZmZlcik6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fYnVmZmVyWzpzaXplXQorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gc2VsZi5fYnVmZmVyW3NpemU6XQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2J1ZmZlcgorICAgICAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIldyaXRlIGEgYnl0ZXMgb2JqZWN0IHRvIHRoZSBmaWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggaXMKKyAgICAgICAgYWx3YXlzIGxlbihkYXRhKS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsIHRoZSBmaWxlIG9uIGRpc2sKKyAgICAgICAgbWF5IG5vdCByZWZsZWN0IHRoZSBkYXRhIHdyaXR0ZW4gdW50aWwgY2xvc2UoKSBpcyBjYWxsZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jYW5fd3JpdGUoKQorICAgICAgICBjb21wcmVzc2VkID0gc2VsZi5fY29tcHJlc3Nvci5jb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLl9mcC53cml0ZShjb21wcmVzc2VkKQorICAgICAgICBzZWxmLl9wb3MgKz0gbGVuKGRhdGEpCisgICAgICAgIHJldHVybiBsZW4oZGF0YSkKKworICAgICMgUmV3aW5kIHRoZSBmaWxlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc3RyZWFtLgorICAgIGRlZiBfcmV3aW5kKHNlbGYpOgorICAgICAgICBzZWxmLl9mcC5zZWVrKDAsIDApCisgICAgICAgIHNlbGYuX21vZGUgPSBfTU9ERV9SRUFECisgICAgICAgIHNlbGYuX3BvcyA9IDAKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gTFpNQURlY29tcHJlc3NvcigqKnNlbGYuX2luaXRfYXJncykKKyAgICAgICAgc2VsZi5fYnVmZmVyID0gTm9uZQorCisgICAgZGVmIHNlZWsoc2VsZiwgb2Zmc2V0LCB3aGVuY2U9MCk6CisgICAgICAgICIiIkNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbi4KKworICAgICAgICBUaGUgbmV3IHBvc2l0aW9uIGlzIHNwZWNpZmllZCBieSBvZmZzZXQsIHJlbGF0aXZlIHRvIHRoZQorICAgICAgICBwb3NpdGlvbiBpbmRpY2F0ZWQgYnkgd2hlbmNlLiBQb3NzaWJsZSB2YWx1ZXMgZm9yIHdoZW5jZSBhcmU6CisKKyAgICAgICAgICAgIDA6IHN0YXJ0IG9mIHN0cmVhbSAoZGVmYXVsdCk6IG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorICAgICAgICAgICAgMTogY3VycmVudCBzdHJlYW0gcG9zaXRpb24KKyAgICAgICAgICAgIDI6IGVuZCBvZiBzdHJlYW07IG9mZnNldCBtdXN0IG5vdCBiZSBwb3NpdGl2ZQorCisgICAgICAgIFJldHVybnMgdGhlIG5ldyBmaWxlIHBvc2l0aW9uLgorCisgICAgICAgIE5vdGUgdGhhdCBzZWVraW5nIGlzIGVtdWxhdGVkLCBzcCBkZXBlbmRpbmcgb24gdGhlIHBhcmFtZXRlcnMsCisgICAgICAgIHRoaXMgb3BlcmF0aW9uIG1heSBiZSBleHRyZW1lbHkgc2xvdy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nhbl9zZWVrKCkKKworICAgICAgICAjIFJlY2FsY3VsYXRlIG9mZnNldCBhcyBhbiBhYnNvbHV0ZSBmaWxlIHBvc2l0aW9uLgorICAgICAgICBpZiB3aGVuY2UgPT0gMDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gMToKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3BvcyArIG9mZnNldAorICAgICAgICBlbGlmIHdoZW5jZSA9PSAyOgorICAgICAgICAgICAgIyBTZWVraW5nIHJlbGF0aXZlIHRvIEVPRiAtIHdlIG5lZWQgdG8ga25vdyB0aGUgZmlsZSdzIHNpemUuCisgICAgICAgICAgICBpZiBzZWxmLl9zaXplIDwgMDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX2FsbChyZXR1cm5fZGF0YT1GYWxzZSkKKyAgICAgICAgICAgIG9mZnNldCA9IHNlbGYuX3NpemUgKyBvZmZzZXQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgdmFsdWUgZm9yIHdoZW5jZToge30iLmZvcm1hdCh3aGVuY2UpKQorCisgICAgICAgICMgTWFrZSBpdCBzbyB0aGF0IG9mZnNldCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgZm9yd2FyZC4KKyAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5fcG9zOgorICAgICAgICAgICAgc2VsZi5fcmV3aW5kKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9mZnNldCAtPSBzZWxmLl9wb3MKKworICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgZGF0YSB1bnRpbCB3ZSByZWFjaCB0aGUgZGVzaXJlZCBwb3NpdGlvbi4KKyAgICAgICAgaWYgc2VsZi5fbW9kZSAhPSBfTU9ERV9SRUFEX0VPRjoKKyAgICAgICAgICAgIHNlbGYuX3JlYWRfYmxvY2sob2Zmc2V0LCByZXR1cm5fZGF0YT1GYWxzZSkKKworICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKyAgICBkZWYgdGVsbChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGZpbGUgcG9zaXRpb24uIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX25vdF9jbG9zZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5fcG9zCisKKworZGVmIG9wZW4oZmlsZW5hbWUsIG1vZGU9InJiIiwgKiwKKyAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSwKKyAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBuZXdsaW5lPU5vbmUpOgorICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG9yIHRleHQgbW9kZS4KKworICAgIGZpbGVuYW1lIGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0KSwKKyAgICBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0CisgICAgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorCisgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiAoZGVmYXVsdCksICJ3IiwgIndiIiwgImEiLCBvciAiYWIiIGZvcgorICAgIGJpbmFyeSBtb2RlLCBvciAicnQiLCAid3QiIG9yICJhdCIgZm9yIHRleHQgbW9kZS4KKworICAgIFRoZSBmb3JtYXQsIGNoZWNrLCBwcmVzZXQgYW5kIGZpbHRlcnMgYXJndW1lbnRzIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uCisgICAgc2V0dGluZ3MsIGFzIGZvciBMWk1BQ29tcHJlc3NvciwgTFpNQURlY29tcHJlc3NvciBhbmQgTFpNQUZpbGUuCisKKyAgICBGb3IgYmluYXJ5IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byB0aGUgTFpNQUZpbGUgY29uc3RydWN0b3I6CisgICAgTFpNQUZpbGUoZmlsZW5hbWUsIG1vZGUsIC4uLikuIEluIHRoaXMgY2FzZSwgdGhlIGVuY29kaW5nLCBlcnJvcnMgYW5kCisgICAgbmV3bGluZSBhcmd1bWVudHMgbXVzdCBub3QgYmUgcHJvdmlkZWQuCisKKyAgICBGb3IgdGV4dCBtb2RlLCBhIExaTUFGaWxlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgd3JhcHBlZCBpbiBhbgorICAgIGlvLlRleHRJT1dyYXBwZXIgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLCBlcnJvciBoYW5kbGluZworICAgIGJlaGF2aW9yLCBhbmQgbGluZSBlbmRpbmcocykuCisKKyAgICAiIiIKKyAgICBpZiAidCIgaW4gbW9kZToKKyAgICAgICAgaWYgImIiIGluIG1vZGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6ICVyIiAlIChtb2RlLCkpCisgICAgZWxzZToKKyAgICAgICAgaWYgZW5jb2RpbmcgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZW5jb2RpbmcnIG5vdCBzdXBwb3J0ZWQgaW4gYmluYXJ5IG1vZGUiKQorICAgICAgICBpZiBlcnJvcnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBcmd1bWVudCAnZXJyb3JzJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKyAgICAgICAgaWYgbmV3bGluZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKKworICAgIGx6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKKyAgICBiaW5hcnlfZmlsZSA9IExaTUFGaWxlKGZpbGVuYW1lLCBsel9tb2RlLCBmb3JtYXQ9Zm9ybWF0LCBjaGVjaz1jaGVjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNldD1wcmVzZXQsIGZpbHRlcnM9ZmlsdGVycykKKworICAgIGlmICJ0IiBpbiBtb2RlOgorICAgICAgICByZXR1cm4gaW8uVGV4dElPV3JhcHBlcihiaW5hcnlfZmlsZSwgZW5jb2RpbmcsIGVycm9ycywgbmV3bGluZSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmluYXJ5X2ZpbGUKKworCitkZWYgY29tcHJlc3MoZGF0YSwgZm9ybWF0PUZPUk1BVF9YWiwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpOgorICAgICIiIkNvbXByZXNzIGEgYmxvY2sgb2YgZGF0YS4KKworICAgIFJlZmVyIHRvIExaTUFDb21wcmVzc29yJ3MgZG9jc3RyaW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgIG9wdGlvbmFsIGFyZ3VtZW50cyAqZm9ybWF0KiwgKmNoZWNrKiwgKnByZXNldCogYW5kICpmaWx0ZXJzKi4KKworICAgIEZvciBpbmNyZW1lbnRhbCBjb21wcmVzc2lvbiwgdXNlIGFuIExaTUFDb21wcmVzc29yIG9iamVjdCBpbnN0ZWFkLgorICAgICIiIgorICAgIGNvbXAgPSBMWk1BQ29tcHJlc3Nvcihmb3JtYXQsIGNoZWNrLCBwcmVzZXQsIGZpbHRlcnMpCisgICAgcmV0dXJuIGNvbXAuY29tcHJlc3MoZGF0YSkgKyBjb21wLmZsdXNoKCkKKworCitkZWYgZGVjb21wcmVzcyhkYXRhLCBmb3JtYXQ9Rk9STUFUX0FVVE8sIG1lbWxpbWl0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CisgICAgIiIiRGVjb21wcmVzcyBhIGJsb2NrIG9mIGRhdGEuCisKKyAgICBSZWZlciB0byBMWk1BRGVjb21wcmVzc29yJ3MgZG9jc3RyaW5nIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZQorICAgIG9wdGlvbmFsIGFyZ3VtZW50cyAqZm9ybWF0KiwgKmNoZWNrKiBhbmQgKmZpbHRlcnMqLgorCisgICAgRm9yIGluY3JlbWVudGFsIGRlY29tcHJlc3Npb24sIHVzZSBhIExaTUFEZWNvbXByZXNzb3Igb2JqZWN0IGluc3RlYWQuCisgICAgIiIiCisgICAgcmVzdWx0cyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgZGVjb21wID0gTFpNQURlY29tcHJlc3Nvcihmb3JtYXQsIG1lbWxpbWl0LCBmaWx0ZXJzKQorICAgICAgICByZXN1bHRzLmFwcGVuZChkZWNvbXAuZGVjb21wcmVzcyhkYXRhKSkKKyAgICAgICAgaWYgbm90IGRlY29tcC5lb2Y6CisgICAgICAgICAgICByYWlzZSBMWk1BRXJyb3IoIkNvbXByZXNzZWQgZGF0YSBlbmRlZCBiZWZvcmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kLW9mLXN0cmVhbSBtYXJrZXIgd2FzIHJlYWNoZWQiKQorICAgICAgICBpZiBub3QgZGVjb21wLnVudXNlZF9kYXRhOgorICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKHJlc3VsdHMpCisgICAgICAgICMgVGhlcmUgaXMgdW51c2VkIGRhdGEgbGVmdCBvdmVyLiBQcm9jZWVkIHRvIG5leHQgc3RyZWFtLgorICAgICAgICBkYXRhID0gZGVjb21wLnVudXNlZF9kYXRhCmRpZmYgLS1naXQgYS9MaWIvbWFpbGJveC5weSBiL0xpYi9tYWlsYm94LnB5CmluZGV4IGM3M2ZiOTUuLmQzYmYzZmQgMTAwNjQ0Ci0tLSBhL0xpYi9tYWlsYm94LnB5CisrKyBiL0xpYi9tYWlsYm94LnB5CkBAIC0xMTU3LDggKzExNTcsNyBAQAogICAgIGRlZiBnZXRfc2VxdWVuY2VzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBuYW1lLXRvLWtleS1saXN0IGRpY3Rpb25hcnkgdG8gZGVmaW5lIGVhY2ggc2VxdWVuY2UuIiIiCiAgICAgICAgIHJlc3VsdHMgPSB7fQotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3InKQotICAgICAgICB0cnk6CisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3InLCBlbmNvZGluZz0nQVNDSUknKSBhcyBmOgogICAgICAgICAgICAgYWxsX2tleXMgPSBzZXQoc2VsZi5rZXlzKCkpCiAgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTExNzcsMTMgKzExNzYsMTEgQEAKICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRm9ybWF0RXJyb3IoJ0ludmFsaWQgc2VxdWVuY2Ugc3BlY2lmaWNhdGlvbjogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5yc3RyaXAoKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICByZXR1cm4gcmVzdWx0cwogCiAgICAgZGVmIHNldF9zZXF1ZW5jZXMoc2VsZiwgc2VxdWVuY2VzKToKICAgICAgICAgIiIiU2V0IHNlcXVlbmNlcyB1c2luZyB0aGUgZ2l2ZW4gbmFtZS10by1rZXktbGlzdCBkaWN0aW9uYXJ5LiIiIgotICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJy5taF9zZXF1ZW5jZXMnKSwgJ3IrJykKKyAgICAgICAgZiA9IG9wZW4ob3MucGF0aC5qb2luKHNlbGYuX3BhdGgsICcubWhfc2VxdWVuY2VzJyksICdyKycsIGVuY29kaW5nPSdBU0NJSScpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLmNsb3NlKG9zLm9wZW4oZi5uYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fVFJVTkMpKQogICAgICAgICAgICAgZm9yIG5hbWUsIGtleXMgaW4gc2VxdWVuY2VzLml0ZW1zKCk6CkBAIC0xNTIzLDkgKzE1MjAsMTAgQEAKIAogICAgIGRlZiBfYmVjb21lX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6CiAgICAgICAgICIiIkFzc3VtZSB0aGUgbm9uLWZvcm1hdC1zcGVjaWZpYyBzdGF0ZSBvZiBtZXNzYWdlLiIiIgotICAgICAgICBmb3IgbmFtZSBpbiAoJ19oZWFkZXJzJywgJ191bml4ZnJvbScsICdfcGF5bG9hZCcsICdfY2hhcnNldCcsCi0gICAgICAgICAgICAgICAgICAgICAncHJlYW1ibGUnLCAnZXBpbG9ndWUnLCAnZGVmZWN0cycsICdfZGVmYXVsdF90eXBlJyk6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gbWVzc2FnZS5fX2RpY3RfX1tuYW1lXQorICAgICAgICB0eXBlX3NwZWNpZmljID0gZ2V0YXR0cihtZXNzYWdlLCAnX3R5cGVfc3BlY2lmaWNfYXR0cmlidXRlcycsIFtdKQorICAgICAgICBmb3IgbmFtZSBpbiBtZXNzYWdlLl9fZGljdF9fOgorICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4gdHlwZV9zcGVjaWZpYzoKKyAgICAgICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gbWVzc2FnZS5fX2RpY3RfX1tuYW1lXQogCiAgICAgZGVmIF9leHBsYWluX3RvKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICAiIiJDb3B5IGZvcm1hdC1zcGVjaWZpYyBzdGF0ZSB0byBtZXNzYWdlIGluc29mYXIgYXMgcG9zc2libGUuIiIiCkBAIC0xNTM4LDYgKzE1MzYsOCBAQAogY2xhc3MgTWFpbGRpck1lc3NhZ2UoTWVzc2FnZSk6CiAgICAgIiIiTWVzc2FnZSB3aXRoIE1haWxkaXItc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19zdWJkaXInLCAnX2luZm8nLCAnX2RhdGUnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBNYWlsZGlyTWVzc2FnZSBpbnN0YW5jZS4iIiIKICAgICAgICAgc2VsZi5fc3ViZGlyID0gJ25ldycKQEAgLTE2NDUsNiArMTY0NSw4IEBACiBjbGFzcyBfbWJveE1NREZNZXNzYWdlKE1lc3NhZ2UpOgogICAgICIiIk1lc3NhZ2Ugd2l0aCBtYm94LSBvciBNTURGLXNwZWNpZmljIHByb3BlcnRpZXMuIiIiCiAKKyAgICBfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzID0gWydfZnJvbSddCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZT1Ob25lKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBtYm94TU1ERk1lc3NhZ2UgaW5zdGFuY2UuIiIiCiAgICAgICAgIHNlbGYuc2V0X2Zyb20oJ01BSUxFUi1EQUVNT04nLCBUcnVlKQpAQCAtMTc2MCw2ICsxNzYyLDggQEAKIGNsYXNzIE1ITWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggTUgtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19zZXF1ZW5jZXMnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gTUhNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9zZXF1ZW5jZXMgPSBbXQpAQCAtMTgzMCw2ICsxODM0LDggQEAKIGNsYXNzIEJhYnlsTWVzc2FnZShNZXNzYWdlKToKICAgICAiIiJNZXNzYWdlIHdpdGggQmFieWwtc3BlY2lmaWMgcHJvcGVydGllcy4iIiIKIAorICAgIF90eXBlX3NwZWNpZmljX2F0dHJpYnV0ZXMgPSBbJ19sYWJlbHMnLCAnX3Zpc2libGUnXQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYW4gQmFieWxNZXNzYWdlIGluc3RhbmNlLiIiIgogICAgICAgICBzZWxmLl9sYWJlbHMgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL21haWxjYXAucHkgYi9MaWIvbWFpbGNhcC5weQppbmRleCA0YWUxM2Q3Li45OWY0OTU4IDEwMDY0NAotLS0gYS9MaWIvbWFpbGNhcC5weQorKysgYi9MaWIvbWFpbGNhcC5weQpAQCAtMzMsMTAgKzMzLDEwIEBACiAKIGRlZiBsaXN0bWFpbGNhcGZpbGVzKCk6CiAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgbWFpbGNhcCBmaWxlcyBmb3VuZCBvbiB0aGUgc3lzdGVtLiIiIgotICAgICMgWFhYIEFjdHVhbGx5LCB0aGlzIGlzIFVuaXgtc3BlY2lmaWMKKyAgICAjIFRoaXMgaXMgbW9zdGx5IGEgVW5peCB0aGluZywgYnV0IHdlIHVzZSB0aGUgT1MgcGF0aCBzZXBhcmF0b3IgYW55d2F5CiAgICAgaWYgJ01BSUxDQVBTJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICBzdHIgPSBvcy5lbnZpcm9uWydNQUlMQ0FQUyddCi0gICAgICAgIG1haWxjYXBzID0gc3RyLnNwbGl0KCc6JykKKyAgICAgICAgcGF0aHN0ciA9IG9zLmVudmlyb25bJ01BSUxDQVBTJ10KKyAgICAgICAgbWFpbGNhcHMgPSBwYXRoc3RyLnNwbGl0KG9zLnBhdGhzZXApCiAgICAgZWxzZToKICAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBob21lID0gb3MuZW52aXJvblsnSE9NRSddCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCA4Y2UwMmY5Li4zZjBiZDBlIDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTI0OSw3ICsyNDksNiBAQAogICAgICAgICAgICAgICAgICAgICB5aWVsZCBjdHlwZQogICAgICAgICAgICAgICAgIGkgKz0gMQogCi0gICAgICAgIGRlZmF1bHRfZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICAgd2l0aCBfd2lucmVnLk9wZW5LZXkoX3dpbnJlZy5IS0VZX0NMQVNTRVNfUk9PVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidNSU1FXERhdGFiYXNlXENvbnRlbnQgVHlwZScpIGFzIG1pbWVkYjoKICAgICAgICAgICAgIGZvciBjdHlwZSBpbiBlbnVtX3R5cGVzKG1pbWVkYik6CkBAIC00MzQsNiArNDMzLDggQEAKICAgICAgICAgJy5rc2gnICAgIDogJ3RleHQvcGxhaW4nLAogICAgICAgICAnLmxhdGV4JyAgOiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgICcubTF2JyAgICA6ICd2aWRlby9tcGVnJywKKyAgICAgICAgJy5tM3UnICAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKKyAgICAgICAgJy5tM3U4JyAgIDogJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsJywKICAgICAgICAgJy5tYW4nICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWFuJywKICAgICAgICAgJy5tZScgICAgIDogJ2FwcGxpY2F0aW9uL3gtdHJvZmYtbWUnLAogICAgICAgICAnLm1odCcgICAgOiAnbWVzc2FnZS9yZmM4MjInLApkaWZmIC0tZ2l0IGEvTGliL21vZHVsZWZpbmRlci5weSBiL0xpYi9tb2R1bGVmaW5kZXIucHkKaW5kZXggZjAzM2JhOS4uNjgzZTMwNSAxMDA2NDQKLS0tIGEvTGliL21vZHVsZWZpbmRlci5weQorKysgYi9MaWIvbW9kdWxlZmluZGVyLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiRmluZCBtb2R1bGVzIHVzZWQgYnkgYSBzY3JpcHQsIHVzaW5nIGludHJvc3BlY3Rpb24uIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9ycwogaW1wb3J0IGRpcwogaW1wb3J0IGltcAogaW1wb3J0IG1hcnNoYWwKQEAgLTksOCArOCw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCBzdHJ1Y3QKIAotUkVBRF9NT0RFID0gInJVIgotCiAjIFhYWCBDbGVhbiB1cCBvbmNlIHN0cjgncyBjc3RvciBtYXRjaGVzIGJ5dGVzLgogTE9BRF9DT05TVCA9IGJ5dGVzKFtkaXMub3BuYW1lLmluZGV4KCdMT0FEX0NPTlNUJyldKQogSU1QT1JUX05BTUUgPSBieXRlcyhbZGlzLm9wbmFtZS5pbmRleCgnSU1QT1JUX05BTUUnKV0pCkBAIC0yOSw5ICsyNiw3IEBACiAKICMgQSBQdWJsaWMgaW50ZXJmYWNlCiBkZWYgQWRkUGFja2FnZVBhdGgocGFja2FnZW5hbWUsIHBhdGgpOgotICAgIHBhdGhzID0gcGFja2FnZVBhdGhNYXAuZ2V0KHBhY2thZ2VuYW1lLCBbXSkKLSAgICBwYXRocy5hcHBlbmQocGF0aCkKLSAgICBwYWNrYWdlUGF0aE1hcFtwYWNrYWdlbmFtZV0gPSBwYXRocworICAgIHBhY2thZ2VQYXRoTWFwLnNldGRlZmF1bHQocGFja2FnZW5hbWUsIFtdKS5hcHBlbmQocGF0aCkKIAogcmVwbGFjZVBhY2thZ2VNYXAgPSB7fQogCkBAIC0xMDYsMTQgKzEwMSwxNCBAQAogCiAgICAgZGVmIHJ1bl9zY3JpcHQoc2VsZiwgcGF0aG5hbWUpOgogICAgICAgICBzZWxmLm1zZygyLCAicnVuX3NjcmlwdCIsIHBhdGhuYW1lKQotICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUsIFJFQURfTU9ERSkgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbihwYXRobmFtZSkgYXMgZnA6CiAgICAgICAgICAgICBzdHVmZiA9ICgiIiwgInIiLCBpbXAuUFlfU09VUkNFKQogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnX19tYWluX18nLCBmcCwgcGF0aG5hbWUsIHN0dWZmKQogCiAgICAgZGVmIGxvYWRfZmlsZShzZWxmLCBwYXRobmFtZSk6CiAgICAgICAgIGRpciwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCiAgICAgICAgIG5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQobmFtZSkKLSAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lLCBSRUFEX01PREUpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW4ocGF0aG5hbWUpIGFzIGZwOgogICAgICAgICAgICAgc3R1ZmYgPSAoZXh0LCAiciIsIGltcC5QWV9TT1VSQ0UpCiAgICAgICAgICAgICBzZWxmLmxvYWRfbW9kdWxlKG5hbWUsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAKQEAgLTIyNyw4ICsyMjIsOSBAQAogICAgICAgICAjIEJ1dCB3ZSBtdXN0IGFsc28gY29sbGVjdCBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMgLSBhbHRob3VnaAogICAgICAgICAjIHdlIGNhbm5vdCBzZXBhcmF0ZSBub3JtYWwgZGxscyBmcm9tIFB5dGhvbiBleHRlbnNpb25zLgogICAgICAgICBzdWZmaXhlcyA9IFtdCi0gICAgICAgIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpOgotICAgICAgICAgICAgc3VmZml4ZXMuYXBwZW5kKHRyaXBsZVswXSkKKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVNbOl0KKyAgICAgICAgc3VmZml4ZXMgKz0gaW1wb3J0bGliLm1hY2hpbmVyeS5CWVRFQ09ERV9TVUZGSVhFU1s6XQogICAgICAgICBmb3IgZGlyIGluIG0uX19wYXRoX186CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKGRpcikKQEAgLTI3MCw3ICsyNjYsOCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtID0gc2VsZi5sb2FkX21vZHVsZShmcW5hbWUsIGZwLCBwYXRobmFtZSwgc3R1ZmYpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBmcDogZnAuY2xvc2UoKQorICAgICAgICAgICAgaWYgZnA6CisgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgICBpZiBwYXJlbnQ6CiAgICAgICAgICAgICBzZXRhdHRyKHBhcmVudCwgcGFydG5hbWUsIG0pCiAgICAgICAgIHNlbGYubXNnb3V0KDMsICJpbXBvcnRfbW9kdWxlIC0+IiwgbSkKQEAgLTY2Miw0ICs2NTksNCBAQAogICAgIHRyeToKICAgICAgICAgbWYgPSB0ZXN0KCkKICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHByaW50KCJcbltpbnRlcnJ1cHRdIikKKyAgICAgICAgcHJpbnQoIlxuW2ludGVycnVwdGVkXSIpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9fX2luaXRfXy5weQppbmRleCBlNmUxNmM4Li4xZjNlNjdjIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL19faW5pdF9fLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvX19pbml0X18ucHkKQEAgLTEzLDMyICsxMyw3IEBACiAjCiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX192ZXJzaW9uX18gPSAnMC43MGExJwpAQCAtNDgsOCArMjMsOCBAQAogICAgICdNYW5hZ2VyJywgJ1BpcGUnLCAnY3B1X2NvdW50JywgJ2xvZ190b19zdGRlcnInLCAnZ2V0X2xvZ2dlcicsCiAgICAgJ2FsbG93X2Nvbm5lY3Rpb25fcGlja2xpbmcnLCAnQnVmZmVyVG9vU2hvcnQnLCAnVGltZW91dEVycm9yJywKICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdDb25kaXRpb24nLAotICAgICdFdmVudCcsICdRdWV1ZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnLCAnVmFsdWUnLCAnQXJyYXknLAotICAgICdSYXdWYWx1ZScsICdSYXdBcnJheScsICdTVUJERUJVRycsICdTVUJXQVJOSU5HJywKKyAgICAnRXZlbnQnLCAnQmFycmllcicsICdRdWV1ZScsICdTaW1wbGVRdWV1ZScsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnLAorICAgICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsICdSYXdBcnJheScsICdTVUJERUJVRycsICdTVUJXQVJOSU5HJywKICAgICBdCiAKIF9fYXV0aG9yX18gPSAnUi4gT3Vka2VyayAoci5tLm91ZGtlcmtAZ21haWwuY29tKScKQEAgLTE2MSw3ICsxMzYsOSBAQAogICAgICcnJwogICAgIEluc3RhbGwgc3VwcG9ydCBmb3Igc2VuZGluZyBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBiZXR3ZWVuIHByb2Nlc3NlcwogICAgICcnJwotICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCByZWR1Y3Rpb24KKyAgICAjIFRoaXMgaXMgdW5kb2N1bWVudGVkLiAgSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgbXVsdGlwcm9jZXNzaW5nCisgICAgIyBpdHMgb25seSBlZmZlY3Qgd2FzIHRvIG1ha2Ugc29ja2V0IG9iamVjdHMgaW5oZXJpdGFibGUgb24gV2luZG93cy4KKyAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24KIAogIwogIyBEZWZpbml0aW9ucyBkZXBlbmRpbmcgb24gbmF0aXZlIHNlbWFwaG9yZXMKQEAgLTIwOSw2ICsxODYsMTMgQEAKICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgRXZlbnQKICAgICByZXR1cm4gRXZlbnQoKQogCitkZWYgQmFycmllcihwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKKyAgICAnJycKKyAgICBSZXR1cm5zIGEgYmFycmllciBvYmplY3QKKyAgICAnJycKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZSBpbXBvcnQgQmFycmllcgorICAgIHJldHVybiBCYXJyaWVyKHBhcnRpZXMsIGFjdGlvbiwgdGltZW91dCkKKwogZGVmIFF1ZXVlKG1heHNpemU9MCk6CiAgICAgJycnCiAgICAgUmV0dXJucyBhIHF1ZXVlIG9iamVjdApAQCAtMjIzLDYgKzIwNywxMyBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnF1ZXVlcyBpbXBvcnQgSm9pbmFibGVRdWV1ZQogICAgIHJldHVybiBKb2luYWJsZVF1ZXVlKG1heHNpemUpCiAKK2RlZiBTaW1wbGVRdWV1ZSgpOgorICAgICcnJworICAgIFJldHVybnMgYSBxdWV1ZSBvYmplY3QKKyAgICAnJycKKyAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5xdWV1ZXMgaW1wb3J0IFNpbXBsZVF1ZXVlCisgICAgcmV0dXJuIFNpbXBsZVF1ZXVlKCkKKwogZGVmIFBvb2wocHJvY2Vzc2VzPU5vbmUsIGluaXRpYWxpemVyPU5vbmUsIGluaXRhcmdzPSgpLCBtYXh0YXNrc3BlcmNoaWxkPU5vbmUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBwcm9jZXNzIHBvb2wgb2JqZWN0CkBAIC0yNDQsMTkgKzIzNSwxOSBAQAogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgUmF3QXJyYXkKICAgICByZXR1cm4gUmF3QXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplcikKIAotZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCAqKmt3ZHMpOgorZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybnMgYSBzeW5jaHJvbml6ZWQgc2hhcmVkIG9iamVjdAogICAgICcnJwogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgVmFsdWUKLSAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsICoqa3dkcykKKyAgICByZXR1cm4gVmFsdWUodHlwZWNvZGVfb3JfdHlwZSwgKmFyZ3MsIGxvY2s9bG9jaykKIAotZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICoqa3dkcyk6CitkZWYgQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiwgbG9jaz1UcnVlKToKICAgICAnJycKICAgICBSZXR1cm5zIGEgc3luY2hyb25pemVkIHNoYXJlZCBhcnJheQogICAgICcnJwogICAgIGZyb20gbXVsdGlwcm9jZXNzaW5nLnNoYXJlZGN0eXBlcyBpbXBvcnQgQXJyYXkKLSAgICByZXR1cm4gQXJyYXkodHlwZWNvZGVfb3JfdHlwZSwgc2l6ZV9vcl9pbml0aWFsaXplciwgKiprd2RzKQorICAgIHJldHVybiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCBsb2NrPWxvY2spCiAKICMKICMKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQppbmRleCA0ZmE2ZjcwLi5mYmJkNWQ5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CkBAIC00LDQ5ICs0LDM0IEBACiAjIG11bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotX19hbGxfXyA9IFsgJ0NsaWVudCcsICdMaXN0ZW5lcicsICdQaXBlJyBdCitfX2FsbF9fID0gWyAnQ2xpZW50JywgJ0xpc3RlbmVyJywgJ1BpcGUnLCAnd2FpdCcgXQogCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAogaW1wb3J0IGVycm5vCiBpbXBvcnQgdGltZQogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgaXRlcnRvb2xzCiAKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBBdXRoZW50aWNhdGlvbkVycm9yCitmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBBdXRoZW50aWNhdGlvbkVycm9yLCBCdWZmZXJUb29TaG9ydAogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZ2V0X3RlbXBfZGlyLCBGaW5hbGl6ZSwgc3ViX2RlYnVnLCBkZWJ1ZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgZHVwbGljYXRlLCBjbG9zZQotCitmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBGb3JraW5nUGlja2xlcgordHJ5OgorICAgIGltcG9ydCBfd2luYXBpCisgICAgZnJvbSBfd2luYXBpIGltcG9ydCBXQUlUX09CSkVDVF8wLCBXQUlUX1RJTUVPVVQsIElORklOSVRFCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIHJhaXNlCisgICAgX3dpbmFwaSA9IE5vbmUKIAogIwogIwpAQCAtMTIyLDYgKzEwNywzMDkgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYWRkcmVzcyB0eXBlIG9mICVyIHVucmVjb2duaXplZCcgJSBhZGRyZXNzKQogCiAjCisjIENvbm5lY3Rpb24gY2xhc3NlcworIworCitjbGFzcyBfQ29ubmVjdGlvbkJhc2U6CisgICAgX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYW5kbGUsIHJlYWRhYmxlPVRydWUsIHdyaXRhYmxlPVRydWUpOgorICAgICAgICBoYW5kbGUgPSBoYW5kbGUuX19pbmRleF9fKCkKKyAgICAgICAgaWYgaGFuZGxlIDwgMDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgaGFuZGxlIikKKyAgICAgICAgaWYgbm90IHJlYWRhYmxlIGFuZCBub3Qgd3JpdGFibGU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgICAgICJhdCBsZWFzdCBvbmUgb2YgYHJlYWRhYmxlYCBhbmQgYHdyaXRhYmxlYCBtdXN0IGJlIFRydWUiKQorICAgICAgICBzZWxmLl9oYW5kbGUgPSBoYW5kbGUKKyAgICAgICAgc2VsZi5fcmVhZGFibGUgPSByZWFkYWJsZQorICAgICAgICBzZWxmLl93cml0YWJsZSA9IHdyaXRhYmxlCisKKyAgICAjIFhYWCBzaG91bGQgd2UgdXNlIHV0aWwuRmluYWxpemUgaW5zdGVhZCBvZiBhIF9fZGVsX18/CisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFuZGxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorCisgICAgZGVmIF9jaGVja19jbG9zZWQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2hhbmRsZSBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiaGFuZGxlIGlzIGNsb3NlZCIpCisKKyAgICBkZWYgX2NoZWNrX3JlYWRhYmxlKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZGFibGU6CisgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJjb25uZWN0aW9uIGlzIHdyaXRlLW9ubHkiKQorCisgICAgZGVmIF9jaGVja193cml0YWJsZShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigiY29ubmVjdGlvbiBpcyByZWFkLW9ubHkiKQorCisgICAgZGVmIF9iYWRfbWVzc2FnZV9sZW5ndGgoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3dyaXRhYmxlOgorICAgICAgICAgICAgc2VsZi5fcmVhZGFibGUgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgIHJhaXNlIElPRXJyb3IoImJhZCBtZXNzYWdlIGxlbmd0aCIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY2xvc2VkKHNlbGYpOgorICAgICAgICAiIiJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCIiIgorICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlIGlzIE5vbmUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyByZWFkYWJsZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGUKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgIiIiVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBpcyB3cml0YWJsZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fd3JpdGFibGUKKworICAgIGRlZiBmaWxlbm8oc2VsZik6CisgICAgICAgICIiIkZpbGUgZGVzY3JpcHRvciBvciBoYW5kbGUgb2YgdGhlIGNvbm5lY3Rpb24iIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZQorCisgICAgZGVmIGNsb3NlKHNlbGYpOgorICAgICAgICAiIiJDbG9zZSB0aGUgY29ubmVjdGlvbiIiIgorICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5fY2xvc2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBOb25lCisKKyAgICBkZWYgc2VuZF9ieXRlcyhzZWxmLCBidWYsIG9mZnNldD0wLCBzaXplPU5vbmUpOgorICAgICAgICAiIiJTZW5kIHRoZSBieXRlcyBkYXRhIGZyb20gYSBieXRlcy1saWtlIG9iamVjdCIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ1ZikKKyAgICAgICAgIyBIQUNLIGZvciBieXRlLWluZGV4aW5nIG9mIG5vbi1ieXRld2lzZSBidWZmZXJzIChlLmcuIGFycmF5LmFycmF5KQorICAgICAgICBpZiBtLml0ZW1zaXplID4gMToKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGJ5dGVzKG0pKQorICAgICAgICBuID0gbGVuKG0pCisgICAgICAgIGlmIG9mZnNldCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJvZmZzZXQgaXMgbmVnYXRpdmUiKQorICAgICAgICBpZiBuIDwgb2Zmc2V0OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSBuIC0gb2Zmc2V0CisgICAgICAgIGVsaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzaXplIGlzIG5lZ2F0aXZlIikKKyAgICAgICAgZWxpZiBvZmZzZXQgKyBzaXplID4gbjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJ1ZmZlciBsZW5ndGggPCBvZmZzZXQgKyBzaXplIikKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhtW29mZnNldDpvZmZzZXQgKyBzaXplXSkKKworICAgIGRlZiBzZW5kKHNlbGYsIG9iaik6CisgICAgICAgICIiIlNlbmQgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfd3JpdGFibGUoKQorICAgICAgICBidWYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgRm9ya2luZ1BpY2tsZXIoYnVmLCBwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCkuZHVtcChvYmopCisgICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoYnVmLmdldGJ1ZmZlcigpKQorCisgICAgZGVmIHJlY3ZfYnl0ZXMoc2VsZiwgbWF4bGVuZ3RoPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmVjZWl2ZSBieXRlcyBkYXRhIGFzIGEgYnl0ZXMgb2JqZWN0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICBpZiBtYXhsZW5ndGggaXMgbm90IE5vbmUgYW5kIG1heGxlbmd0aCA8IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJuZWdhdGl2ZSBtYXhsZW5ndGgiKQorICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKG1heGxlbmd0aCkKKyAgICAgICAgaWYgYnVmIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9iYWRfbWVzc2FnZV9sZW5ndGgoKQorICAgICAgICByZXR1cm4gYnVmLmdldHZhbHVlKCkKKworICAgIGRlZiByZWN2X2J5dGVzX2ludG8oc2VsZiwgYnVmLCBvZmZzZXQ9MCk6CisgICAgICAgICIiIgorICAgICAgICBSZWNlaXZlIGJ5dGVzIGRhdGEgaW50byBhIHdyaXRlYWJsZSBidWZmZXItbGlrZSBvYmplY3QuCisgICAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQorICAgICAgICBzZWxmLl9jaGVja19yZWFkYWJsZSgpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyhidWYpIGFzIG06CisgICAgICAgICAgICAjIEdldCBieXRlc2l6ZSBvZiBhcmJpdHJhcnkgYnVmZmVyCisgICAgICAgICAgICBpdGVtc2l6ZSA9IG0uaXRlbXNpemUKKyAgICAgICAgICAgIGJ5dGVzaXplID0gaXRlbXNpemUgKiBsZW4obSkKKyAgICAgICAgICAgIGlmIG9mZnNldCA8IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmVnYXRpdmUgb2Zmc2V0IikKKyAgICAgICAgICAgIGVsaWYgb2Zmc2V0ID4gYnl0ZXNpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib2Zmc2V0IHRvbyBsYXJnZSIpCisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgICAgIHNpemUgPSByZXN1bHQudGVsbCgpCisgICAgICAgICAgICBpZiBieXRlc2l6ZSA8IG9mZnNldCArIHNpemU6CisgICAgICAgICAgICAgICAgcmFpc2UgQnVmZmVyVG9vU2hvcnQocmVzdWx0LmdldHZhbHVlKCkpCisgICAgICAgICAgICAjIE1lc3NhZ2UgY2FuIGZpdCBpbiBkZXN0CisgICAgICAgICAgICByZXN1bHQuc2VlaygwKQorICAgICAgICAgICAgcmVzdWx0LnJlYWRpbnRvKG1bb2Zmc2V0IC8vIGl0ZW1zaXplIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXQgKyBzaXplKSAvLyBpdGVtc2l6ZV0pCisgICAgICAgICAgICByZXR1cm4gc2l6ZQorCisgICAgZGVmIHJlY3Yoc2VsZik6CisgICAgICAgICIiIlJlY2VpdmUgYSAocGlja2xhYmxlKSBvYmplY3QiIiIKKyAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKKyAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQorICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKCkKKyAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCisKKyAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CisgICAgICAgICIiIldoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIiIiCisgICAgICAgIHNlbGYuX2NoZWNrX2Nsb3NlZCgpCisgICAgICAgIHNlbGYuX2NoZWNrX3JlYWRhYmxlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3BvbGwodGltZW91dCkKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKKworaWYgX3dpbmFwaToKKworICAgIGNsYXNzIFBpcGVDb25uZWN0aW9uKF9Db25uZWN0aW9uQmFzZSk6CisgICAgICAgICIiIgorICAgICAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGEgV2luZG93cyBuYW1lZCBwaXBlLgorICAgICAgICBPdmVybGFwcGVkIEkvTyBpcyB1c2VkLCBzbyB0aGUgaGFuZGxlcyBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkCisgICAgICAgIHdpdGggRklMRV9GTEFHX09WRVJMQVBQRUQuCisgICAgICAgICIiIgorICAgICAgICBfZ290X2VtcHR5X21lc3NhZ2UgPSBGYWxzZQorCisgICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX0Nsb3NlSGFuZGxlPV93aW5hcGkuQ2xvc2VIYW5kbGUpOgorICAgICAgICAgICAgX0Nsb3NlSGFuZGxlKHNlbGYuX2hhbmRsZSkKKworICAgICAgICBkZWYgX3NlbmRfYnl0ZXMoc2VsZiwgYnVmKToKKyAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLldyaXRlRmlsZShzZWxmLl9oYW5kbGUsIGJ1Ziwgb3ZlcmxhcHBlZD1UcnVlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CisgICAgICAgICAgICAgICAgICAgIHdhaXRyZXMgPSBfd2luYXBpLldhaXRGb3JNdWx0aXBsZU9iamVjdHMoCisgICAgICAgICAgICAgICAgICAgICAgICBbb3YuZXZlbnRdLCBGYWxzZSwgSU5GSU5JVEUpCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBvdi5jYW5jZWwoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG53cml0dGVuLCBlcnIgPSBvdi5HZXRPdmVybGFwcGVkUmVzdWx0KFRydWUpCisgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIGFzc2VydCBud3JpdHRlbiA9PSBsZW4oYnVmKQorCisgICAgICAgIGRlZiBfcmVjdl9ieXRlcyhzZWxmLCBtYXhzaXplPU5vbmUpOgorICAgICAgICAgICAgaWYgc2VsZi5fZ290X2VtcHR5X21lc3NhZ2U6CisgICAgICAgICAgICAgICAgc2VsZi5fZ290X2VtcHR5X21lc3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYnNpemUgPSAxMjggaWYgbWF4c2l6ZSBpcyBOb25lIGVsc2UgbWluKG1heHNpemUsIDEyOCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG92LCBlcnIgPSBfd2luYXBpLlJlYWRGaWxlKHNlbGYuX2hhbmRsZSwgYnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyciA9PSBfd2luYXBpLkVSUk9SX0lPX1BFTkRJTkc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdHJlcyA9IF93aW5hcGkuV2FpdEZvck11bHRpcGxlT2JqZWN0cygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB3YWl0cmVzID09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICBucmVhZCwgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZXJyID09IF93aW5hcGkuRVJST1JfTU9SRV9EQVRBOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9nZXRfbW9yZV9kYXRhKG92LCBtYXhzaXplKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgPT0gX3dpbmFwaS5FUlJPUl9CUk9LRU5fUElQRToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVPRkVycm9yCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJzaG91bGRuJ3QgZ2V0IGhlcmU7IGV4cGVjdGVkIEtleWJvYXJkSW50ZXJydXB0IikKKworICAgICAgICBkZWYgX3BvbGwoc2VsZiwgdGltZW91dCk6CisgICAgICAgICAgICBpZiAoc2VsZi5fZ290X2VtcHR5X21lc3NhZ2Ugb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuUGVla05hbWVkUGlwZShzZWxmLl9oYW5kbGUpWzBdICE9IDApOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gYm9vbCh3YWl0KFtzZWxmXSwgdGltZW91dCkpCisKKyAgICAgICAgZGVmIF9nZXRfbW9yZV9kYXRhKHNlbGYsIG92LCBtYXhzaXplKToKKyAgICAgICAgICAgIGJ1ZiA9IG92LmdldGJ1ZmZlcigpCisgICAgICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgICAgICBmLndyaXRlKGJ1ZikKKyAgICAgICAgICAgIGxlZnQgPSBfd2luYXBpLlBlZWtOYW1lZFBpcGUoc2VsZi5faGFuZGxlKVsxXQorICAgICAgICAgICAgYXNzZXJ0IGxlZnQgPiAwCisgICAgICAgICAgICBpZiBtYXhzaXplIGlzIG5vdCBOb25lIGFuZCBsZW4oYnVmKSArIGxlZnQgPiBtYXhzaXplOgorICAgICAgICAgICAgICAgIHNlbGYuX2JhZF9tZXNzYWdlX2xlbmd0aCgpCisgICAgICAgICAgICBvdiwgZXJyID0gX3dpbmFwaS5SZWFkRmlsZShzZWxmLl9oYW5kbGUsIGxlZnQsIG92ZXJsYXBwZWQ9VHJ1ZSkKKyAgICAgICAgICAgIHJieXRlcywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGVyciA9PSAwCisgICAgICAgICAgICBhc3NlcnQgcmJ5dGVzID09IGxlZnQKKyAgICAgICAgICAgIGYud3JpdGUob3YuZ2V0YnVmZmVyKCkpCisgICAgICAgICAgICByZXR1cm4gZgorCisKK2NsYXNzIENvbm5lY3Rpb24oX0Nvbm5lY3Rpb25CYXNlKToKKyAgICAiIiIKKyAgICBDb25uZWN0aW9uIGNsYXNzIGJhc2VkIG9uIGFuIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0b3IgKFVuaXggb25seSksIG9yCisgICAgYSBzb2NrZXQgaGFuZGxlIChXaW5kb3dzKS4KKyAgICAiIiIKKworICAgIGlmIF93aW5hcGk6CisgICAgICAgIGRlZiBfY2xvc2Uoc2VsZiwgX2Nsb3NlPV9tdWx0aXByb2Nlc3NpbmcuY2xvc2Vzb2NrZXQpOgorICAgICAgICAgICAgX2Nsb3NlKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgX3dyaXRlID0gX211bHRpcHJvY2Vzc2luZy5zZW5kCisgICAgICAgIF9yZWFkID0gX211bHRpcHJvY2Vzc2luZy5yZWN2CisgICAgZWxzZToKKyAgICAgICAgZGVmIF9jbG9zZShzZWxmLCBfY2xvc2U9b3MuY2xvc2UpOgorICAgICAgICAgICAgX2Nsb3NlKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgX3dyaXRlID0gb3Mud3JpdGUKKyAgICAgICAgX3JlYWQgPSBvcy5yZWFkCisKKyAgICBkZWYgX3NlbmQoc2VsZiwgYnVmLCB3cml0ZT1fd3JpdGUpOgorICAgICAgICByZW1haW5pbmcgPSBsZW4oYnVmKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgbiA9IHdyaXRlKHNlbGYuX2hhbmRsZSwgYnVmKQorICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KKyAgICAgICAgICAgIGlmIHJlbWFpbmluZyA9PSAwOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBidWYgPSBidWZbbjpdCisKKyAgICBkZWYgX3JlY3Yoc2VsZiwgc2l6ZSwgcmVhZD1fcmVhZCk6CisgICAgICAgIGJ1ZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGUKKyAgICAgICAgcmVtYWluaW5nID0gc2l6ZQorICAgICAgICB3aGlsZSByZW1haW5pbmcgPiAwOgorICAgICAgICAgICAgY2h1bmsgPSByZWFkKGhhbmRsZSwgcmVtYWluaW5nKQorICAgICAgICAgICAgbiA9IGxlbihjaHVuaykKKyAgICAgICAgICAgIGlmIG4gPT0gMDoKKyAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPT0gc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRU9GRXJyb3IKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCJnb3QgZW5kIG9mIGZpbGUgZHVyaW5nIG1lc3NhZ2UiKQorICAgICAgICAgICAgYnVmLndyaXRlKGNodW5rKQorICAgICAgICAgICAgcmVtYWluaW5nIC09IG4KKyAgICAgICAgcmV0dXJuIGJ1ZgorCisgICAgZGVmIF9zZW5kX2J5dGVzKHNlbGYsIGJ1Zik6CisgICAgICAgICMgRm9yIHdpcmUgY29tcGF0aWJpbGl0eSB3aXRoIDMuMiBhbmQgbG93ZXIKKyAgICAgICAgbiA9IGxlbihidWYpCisgICAgICAgIHNlbGYuX3NlbmQoc3RydWN0LnBhY2soIiFpIiwgbikpCisgICAgICAgICMgVGhlIGNvbmRpdGlvbiBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgImJyb2tlbiBwaXBlIiBlcnJvcnMKKyAgICAgICAgIyB3aGVuIHNlbmRpbmcgYSAwLWxlbmd0aCBidWZmZXIgaWYgdGhlIG90aGVyIGVuZCBjbG9zZWQgdGhlIHBpcGUuCisgICAgICAgIGlmIG4gPiAwOgorICAgICAgICAgICAgc2VsZi5fc2VuZChidWYpCisKKyAgICBkZWYgX3JlY3ZfYnl0ZXMoc2VsZiwgbWF4c2l6ZT1Ob25lKToKKyAgICAgICAgYnVmID0gc2VsZi5fcmVjdig0KQorICAgICAgICBzaXplLCA9IHN0cnVjdC51bnBhY2soIiFpIiwgYnVmLmdldHZhbHVlKCkpCisgICAgICAgIGlmIG1heHNpemUgaXMgbm90IE5vbmUgYW5kIHNpemUgPiBtYXhzaXplOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlY3Yoc2l6ZSkKKworICAgIGRlZiBfcG9sbChzZWxmLCB0aW1lb3V0KToKKyAgICAgICAgciA9IHdhaXQoW3NlbGYuX2hhbmRsZV0sIHRpbWVvdXQpCisgICAgICAgIHJldHVybiBib29sKHIpCisKKworIwogIyBQdWJsaWMgZnVuY3Rpb25zCiAjCiAKQEAgLTE1NCw2ICs0NDIsOCBAQAogCiAgICAgICAgIFJldHVybnMgYSBgQ29ubmVjdGlvbmAgb2JqZWN0LgogICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoJ2xpc3RlbmVyIGlzIGNsb3NlZCcpCiAgICAgICAgIGMgPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQogICAgICAgICBpZiBzZWxmLl9hdXRoa2V5OgogICAgICAgICAgICAgZGVsaXZlcl9jaGFsbGVuZ2UoYywgc2VsZi5fYXV0aGtleSkKQEAgLTE2NCwxMSArNDU0LDE5IEBACiAgICAgICAgICcnJwogICAgICAgICBDbG9zZSB0aGUgYm91bmQgc29ja2V0IG9yIG5hbWVkIHBpcGUgb2YgYHNlbGZgLgogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3RlbmVyLmNsb3NlKCkKKyAgICAgICAgaWYgc2VsZi5fbGlzdGVuZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lci5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fbGlzdGVuZXIuX2FkZHJlc3MpCiAgICAgbGFzdF9hY2NlcHRlZCA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiBzZWxmLl9saXN0ZW5lci5fbGFzdF9hY2NlcHRlZCkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzLCBmYW1pbHk9Tm9uZSwgYXV0aGtleT1Ob25lKToKICAgICAnJycKQEAgLTIwMSw1NiArNDk5LDUyIEBACiAgICAgICAgICAgICBzMSwgczIgPSBzb2NrZXQuc29ja2V0cGFpcigpCiAgICAgICAgICAgICBzMS5zZXRibG9ja2luZyhUcnVlKQogICAgICAgICAgICAgczIuc2V0YmxvY2tpbmcoVHJ1ZSkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKG9zLmR1cChzMS5maWxlbm8oKSkpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihvcy5kdXAoczIuZmlsZW5vKCkpKQotICAgICAgICAgICAgczEuY2xvc2UoKQotICAgICAgICAgICAgczIuY2xvc2UoKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKHMxLmRldGFjaCgpKQorICAgICAgICAgICAgYzIgPSBDb25uZWN0aW9uKHMyLmRldGFjaCgpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmQxLCBmZDIgPSBvcy5waXBlKCkKLSAgICAgICAgICAgIGMxID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCi0gICAgICAgICAgICBjMiA9IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbihmZDIsIHJlYWRhYmxlPUZhbHNlKQorICAgICAgICAgICAgYzEgPSBDb25uZWN0aW9uKGZkMSwgd3JpdGFibGU9RmFsc2UpCisgICAgICAgICAgICBjMiA9IENvbm5lY3Rpb24oZmQyLCByZWFkYWJsZT1GYWxzZSkKIAogICAgICAgICByZXR1cm4gYzEsIGMyCiAKIGVsc2U6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCi0KICAgICBkZWYgUGlwZShkdXBsZXg9VHJ1ZSk6CiAgICAgICAgICcnJwogICAgICAgICBSZXR1cm5zIHBhaXIgb2YgY29ubmVjdGlvbiBvYmplY3RzIGF0IGVpdGhlciBlbmQgb2YgYSBwaXBlCiAgICAgICAgICcnJwogICAgICAgICBhZGRyZXNzID0gYXJiaXRyYXJ5X2FkZHJlc3MoJ0FGX1BJUEUnKQogICAgICAgICBpZiBkdXBsZXg6Ci0gICAgICAgICAgICBvcGVubW9kZSA9IHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWAotICAgICAgICAgICAgYWNjZXNzID0gd2luMzIuR0VORVJJQ19SRUFEIHwgd2luMzIuR0VORVJJQ19XUklURQorICAgICAgICAgICAgb3Blbm1vZGUgPSBfd2luYXBpLlBJUEVfQUNDRVNTX0RVUExFWAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1JFQUQgfCBfd2luYXBpLkdFTkVSSUNfV1JJVEUKICAgICAgICAgICAgIG9ic2l6ZSwgaWJzaXplID0gQlVGU0laRSwgQlVGU0laRQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3Blbm1vZGUgPSB3aW4zMi5QSVBFX0FDQ0VTU19JTkJPVU5ECi0gICAgICAgICAgICBhY2Nlc3MgPSB3aW4zMi5HRU5FUklDX1dSSVRFCisgICAgICAgICAgICBvcGVubW9kZSA9IF93aW5hcGkuUElQRV9BQ0NFU1NfSU5CT1VORAorICAgICAgICAgICAgYWNjZXNzID0gX3dpbmFwaS5HRU5FUklDX1dSSVRFCiAgICAgICAgICAgICBvYnNpemUsIGlic2l6ZSA9IDAsIEJVRlNJWkUKIAotICAgICAgICBoMSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgIGFkZHJlc3MsIG9wZW5tb2RlLAotICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgMSwgb2JzaXplLCBpYnNpemUsIHdpbjMyLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCB3aW4zMi5OVUxMCisgICAgICAgIGgxID0gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICBhZGRyZXNzLCBvcGVubW9kZSB8IF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQgfAorICAgICAgICAgICAgX3dpbmFwaS5GSUxFX0ZMQUdfRklSU1RfUElQRV9JTlNUQU5DRSwKKyAgICAgICAgICAgIF93aW5hcGkuUElQRV9UWVBFX01FU1NBR0UgfCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8CisgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgIDEsIG9ic2l6ZSwgaWJzaXplLCBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICkKLSAgICAgICAgaDIgPSB3aW4zMi5DcmVhdGVGaWxlKAotICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCB3aW4zMi5OVUxMLCB3aW4zMi5PUEVOX0VYSVNUSU5HLCAwLCB3aW4zMi5OVUxMCisgICAgICAgIGgyID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgYWRkcmVzcywgYWNjZXNzLCAwLCBfd2luYXBpLk5VTEwsIF93aW5hcGkuT1BFTl9FWElTVElORywKKyAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgKQotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgyLCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKKyAgICAgICAgX3dpbmFwaS5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKKyAgICAgICAgICAgIGgyLCBfd2luYXBpLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQogICAgICAgICAgICAgKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpbjMyLkNvbm5lY3ROYW1lZFBpcGUoaDEsIHdpbjMyLk5VTEwpCi0gICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSB3aW4zMi5FUlJPUl9QSVBFX0NPTk5FQ1RFRDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBvdmVybGFwcGVkID0gX3dpbmFwaS5Db25uZWN0TmFtZWRQaXBlKGgxLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgIF8sIGVyciA9IG92ZXJsYXBwZWQuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICBhc3NlcnQgZXJyID09IDAKIAotICAgICAgICBjMSA9IF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKLSAgICAgICAgYzIgPSBfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uKGgyLCByZWFkYWJsZT1kdXBsZXgpCisgICAgICAgIGMxID0gUGlwZUNvbm5lY3Rpb24oaDEsIHdyaXRhYmxlPWR1cGxleCkKKyAgICAgICAgYzIgPSBQaXBlQ29ubmVjdGlvbihoMiwgcmVhZGFibGU9ZHVwbGV4KQogCiAgICAgICAgIHJldHVybiBjMSwgYzIKIApAQCAtMjY1LDEyICs1NTksMTUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcywgZmFtaWx5LCBiYWNrbG9nPTEpOgogICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KGdldGF0dHIoc29ja2V0LCBmYW1pbHkpKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX1JFVVNFQUREUiwgMSkKKyAgICAgICAgICAgICMgU09fUkVVU0VBRERSIGhhcyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgKGlzc3VlICMyNTUwKS4KKyAgICAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNldGJsb2NraW5nKFRydWUpCiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuYmluZChhZGRyZXNzKQogICAgICAgICAgICAgc2VsZi5fc29ja2V0Lmxpc3RlbihiYWNrbG9nKQogICAgICAgICAgICAgc2VsZi5fYWRkcmVzcyA9IHNlbGYuX3NvY2tldC5nZXRzb2NrbmFtZSgpCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgIHNlbGYuX2ZhbWlseSA9IGZhbWlseQpAQCAtMjg2LDEwICs1ODMsNyBAQAogICAgIGRlZiBhY2NlcHQoc2VsZik6CiAgICAgICAgIHMsIHNlbGYuX2xhc3RfYWNjZXB0ZWQgPSBzZWxmLl9zb2NrZXQuYWNjZXB0KCkKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKGZkKQotICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcmV0dXJuIENvbm5lY3Rpb24ocy5kZXRhY2goKSkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKQEAgLTMwNCwyNCArNTk4LDggQEAKICAgICBmYW1pbHkgPSBhZGRyZXNzX3R5cGUoYWRkcmVzcykKICAgICB3aXRoIHNvY2tldC5zb2NrZXQoIGdldGF0dHIoc29ja2V0LCBmYW1pbHkpICkgYXMgczoKICAgICAgICAgcy5zZXRibG9ja2luZyhUcnVlKQotICAgICAgICB0ID0gX2luaXRfdGltZW91dCgpCi0KLSAgICAgICAgd2hpbGUgMToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUNPTk5SRUZVU0VEIG9yIF9jaGVja190aW1lb3V0KHQpOgotICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnZmFpbGVkIHRvIGNvbm5lY3QgdG8gYWRkcmVzcyAlcycsIGFkZHJlc3MpCi0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICBmZCA9IGR1cGxpY2F0ZShzLmZpbGVubygpKQotICAgIGNvbm4gPSBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oZmQpCi0gICAgcmV0dXJuIGNvbm4KKyAgICAgICAgcy5jb25uZWN0KGFkZHJlc3MpCisgICAgICAgIHJldHVybiBDb25uZWN0aW9uKHMuZGV0YWNoKCkpCiAKICMKICMgRGVmaW5pdGlvbnMgZm9yIGNvbm5lY3Rpb25zIGJhc2VkIG9uIG5hbWVkIHBpcGVzCkBAIC0zMzUsNDggKzYxMyw1NSBAQAogICAgICAgICAnJycKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHJlc3MsIGJhY2tsb2c9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gYWRkcmVzcwotICAgICAgICAgICAgaGFuZGxlID0gd2luMzIuQ3JlYXRlTmFtZWRQaXBlKAotICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLlBJUEVfQUNDRVNTX0RVUExFWCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1RZUEVfTUVTU0FHRSB8IHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSB8Ci0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9XQUlULAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKLSAgICAgICAgICAgICAgICB3aW4zMi5OTVBXQUlUX1dBSVRfRk9SRVZFUiwgd2luMzIuTlVMTAotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9xdWV1ZSA9IFtoYW5kbGVdCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUgPSBbc2VsZi5fbmV3X2hhbmRsZShmaXJzdD1UcnVlKV0KKwogICAgICAgICAgICAgc2VsZi5fbGFzdF9hY2NlcHRlZCA9IE5vbmUKLQogICAgICAgICAgICAgc3ViX2RlYnVnKCdsaXN0ZW5lciBjcmVhdGVkIHdpdGggYWRkcmVzcz0lcicsIHNlbGYuX2FkZHJlc3MpCi0KICAgICAgICAgICAgIHNlbGYuY2xvc2UgPSBGaW5hbGl6ZSgKICAgICAgICAgICAgICAgICBzZWxmLCBQaXBlTGlzdGVuZXIuX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5faGFuZGxlX3F1ZXVlLCBzZWxmLl9hZGRyZXNzKSwgZXhpdHByaW9yaXR5PTAKICAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgZGVmIGFjY2VwdChzZWxmKToKLSAgICAgICAgICAgIG5ld2hhbmRsZSA9IHdpbjMyLkNyZWF0ZU5hbWVkUGlwZSgKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzLCB3aW4zMi5QSVBFX0FDQ0VTU19EVVBMRVgsCi0gICAgICAgICAgICAgICAgd2luMzIuUElQRV9UWVBFX01FU1NBR0UgfCB3aW4zMi5QSVBFX1JFQURNT0RFX01FU1NBR0UgfAotICAgICAgICAgICAgICAgIHdpbjMyLlBJUEVfV0FJVCwKLSAgICAgICAgICAgICAgICB3aW4zMi5QSVBFX1VOTElNSVRFRF9JTlNUQU5DRVMsIEJVRlNJWkUsIEJVRlNJWkUsCi0gICAgICAgICAgICAgICAgd2luMzIuTk1QV0FJVF9XQUlUX0ZPUkVWRVIsIHdpbjMyLk5VTEwKKyAgICAgICAgZGVmIF9uZXdfaGFuZGxlKHNlbGYsIGZpcnN0PUZhbHNlKToKKyAgICAgICAgICAgIGZsYWdzID0gX3dpbmFwaS5QSVBFX0FDQ0VTU19EVVBMRVggfCBfd2luYXBpLkZJTEVfRkxBR19PVkVSTEFQUEVECisgICAgICAgICAgICBpZiBmaXJzdDoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBfd2luYXBpLkZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFCisgICAgICAgICAgICByZXR1cm4gX3dpbmFwaS5DcmVhdGVOYW1lZFBpcGUoCisgICAgICAgICAgICAgICAgc2VsZi5fYWRkcmVzcywgZmxhZ3MsCisgICAgICAgICAgICAgICAgX3dpbmFwaS5QSVBFX1RZUEVfTUVTU0FHRSB8IF93aW5hcGkuUElQRV9SRUFETU9ERV9NRVNTQUdFIHwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfV0FJVCwKKyAgICAgICAgICAgICAgICBfd2luYXBpLlBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUywgQlVGU0laRSwgQlVGU0laRSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLk5NUFdBSVRfV0FJVF9GT1JFVkVSLCBfd2luYXBpLk5VTEwKICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVfcXVldWUuYXBwZW5kKG5ld2hhbmRsZSkKKworICAgICAgICBkZWYgYWNjZXB0KHNlbGYpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3F1ZXVlLmFwcGVuZChzZWxmLl9uZXdfaGFuZGxlKCkpCiAgICAgICAgICAgICBoYW5kbGUgPSBzZWxmLl9oYW5kbGVfcXVldWUucG9wKDApCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2luMzIuQ29ubmVjdE5hbWVkUGlwZShoYW5kbGUsIHdpbjMyLk5VTEwpCi0gICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgb3YgPSBfd2luYXBpLkNvbm5lY3ROYW1lZFBpcGUoaGFuZGxlLCBvdmVybGFwcGVkPVRydWUpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gX3dpbmFwaS5FUlJPUl9OT19EQVRBOgorICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICMgRVJST1JfTk9fREFUQSBjYW4gb2NjdXIgaWYgYSBjbGllbnQgaGFzIGFscmVhZHkgY29ubmVjdGVkLAogICAgICAgICAgICAgICAgICMgd3JpdHRlbiBkYXRhIGFuZCB0aGVuIGRpc2Nvbm5lY3RlZCAtLSBzZWUgSXNzdWUgMTQ3MjUuCi0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfUElQRV9DT05ORUNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfTk9fREFUQSk6CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKAorICAgICAgICAgICAgICAgICAgICAgICAgW292LmV2ZW50XSwgRmFsc2UsIElORklOSVRFKQorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShoYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbihoYW5kbGUpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyID0gb3YuR2V0T3ZlcmxhcHBlZFJlc3VsdChUcnVlKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZXJyID09IDAKKyAgICAgICAgICAgIHJldHVybiBQaXBlQ29ubmVjdGlvbihoYW5kbGUpCiAKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgX2ZpbmFsaXplX3BpcGVfbGlzdGVuZXIocXVldWUsIGFkZHJlc3MpOgogICAgICAgICAgICAgc3ViX2RlYnVnKCdjbG9zaW5nIGxpc3RlbmVyIHdpdGggYWRkcmVzcz0lcicsIGFkZHJlc3MpCiAgICAgICAgICAgICBmb3IgaGFuZGxlIGluIHF1ZXVlOgotICAgICAgICAgICAgICAgIGNsb3NlKGhhbmRsZSkKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGhhbmRsZSkKIAogICAgIGRlZiBQaXBlQ2xpZW50KGFkZHJlc3MpOgogICAgICAgICAnJycKQEAgLTM4NSwyNCArNjcwLDI1IEBACiAgICAgICAgIHQgPSBfaW5pdF90aW1lb3V0KCkKICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aW4zMi5XYWl0TmFtZWRQaXBlKGFkZHJlc3MsIDEwMDApCi0gICAgICAgICAgICAgICAgaCA9IHdpbjMyLkNyZWF0ZUZpbGUoCi0gICAgICAgICAgICAgICAgICAgIGFkZHJlc3MsIHdpbjMyLkdFTkVSSUNfUkVBRCB8IHdpbjMyLkdFTkVSSUNfV1JJVEUsCi0gICAgICAgICAgICAgICAgICAgIDAsIHdpbjMyLk5VTEwsIHdpbjMyLk9QRU5fRVhJU1RJTkcsIDAsIHdpbjMyLk5VTEwKKyAgICAgICAgICAgICAgICBfd2luYXBpLldhaXROYW1lZFBpcGUoYWRkcmVzcywgMTAwMCkKKyAgICAgICAgICAgICAgICBoID0gX3dpbmFwaS5DcmVhdGVGaWxlKAorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLCBfd2luYXBpLkdFTkVSSUNfUkVBRCB8IF93aW5hcGkuR0VORVJJQ19XUklURSwKKyAgICAgICAgICAgICAgICAgICAgMCwgX3dpbmFwaS5OVUxMLCBfd2luYXBpLk9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuRklMRV9GTEFHX09WRVJMQVBQRUQsIF93aW5hcGkuTlVMTAogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICBleGNlcHQgV2luZG93c0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdIG5vdCBpbiAod2luMzIuRVJST1JfU0VNX1RJTUVPVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luMzIuRVJST1JfUElQRV9CVVNZKSBvciBfY2hlY2tfdGltZW91dCh0KToKKyAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yIG5vdCBpbiAoX3dpbmFwaS5FUlJPUl9TRU1fVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5FUlJPUl9QSVBFX0JVU1kpIG9yIF9jaGVja190aW1lb3V0KHQpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UKIAotICAgICAgICB3aW4zMi5TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSgKLSAgICAgICAgICAgIGgsIHdpbjMyLlBJUEVfUkVBRE1PREVfTUVTU0FHRSwgTm9uZSwgTm9uZQorICAgICAgICBfd2luYXBpLlNldE5hbWVkUGlwZUhhbmRsZVN0YXRlKAorICAgICAgICAgICAgaCwgX3dpbmFwaS5QSVBFX1JFQURNT0RFX01FU1NBR0UsIE5vbmUsIE5vbmUKICAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb24oaCkKKyAgICAgICAgcmV0dXJuIFBpcGVDb25uZWN0aW9uKGgpCiAKICMKICMgQXV0aGVudGljYXRpb24gc3R1ZmYKQEAgLTQ1OSwxMCArNzQ1LDEwIEBACiAgICAgICAgIHJldHVybiBzZWxmLl9sb2FkcyhzKQogCiBkZWYgX3htbF9kdW1wcyhvYmopOgotICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0ZjgnKQorICAgIHJldHVybiB4bWxycGNsaWIuZHVtcHMoKG9iaiwpLCBOb25lLCBOb25lLCBOb25lLCAxKS5lbmNvZGUoJ3V0Zi04JykKIAogZGVmIF94bWxfbG9hZHMocyk6Ci0gICAgKG9iaiwpLCBtZXRob2QgPSB4bWxycGNsaWIubG9hZHMocy5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAob2JqLCksIG1ldGhvZCA9IHhtbHJwY2xpYi5sb2FkcyhzLmRlY29kZSgndXRmLTgnKSkKICAgICByZXR1cm4gb2JqCiAKIGNsYXNzIFhtbExpc3RlbmVyKExpc3RlbmVyKToKQEAgLTQ3NiwzICs3NjIsMTQwIEBACiAgICAgZ2xvYmFsIHhtbHJwY2xpYgogICAgIGltcG9ydCB4bWxycGMuY2xpZW50IGFzIHhtbHJwY2xpYgogICAgIHJldHVybiBDb25uZWN0aW9uV3JhcHBlcihDbGllbnQoKmFyZ3MsICoqa3dkcyksIF94bWxfZHVtcHMsIF94bWxfbG9hZHMpCisKKyMKKyMgV2FpdAorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKworICAgIGRlZiBfZXhoYXVzdGl2ZV93YWl0KGhhbmRsZXMsIHRpbWVvdXQpOgorICAgICAgICAjIFJldHVybiBBTEwgaGFuZGxlcyB3aGljaCBhcmUgY3VycmVudGx5IHNpZ25hbGxlZC4gIChPbmx5CisgICAgICAgICMgcmV0dXJuaW5nIHRoZSBmaXJzdCBzaWduYWxsZWQgbWlnaHQgY3JlYXRlIHN0YXJ2YXRpb24gaXNzdWVzLikKKyAgICAgICAgTCA9IGxpc3QoaGFuZGxlcykKKyAgICAgICAgcmVhZHkgPSBbXQorICAgICAgICB3aGlsZSBMOgorICAgICAgICAgICAgcmVzID0gX3dpbmFwaS5XYWl0Rm9yTXVsdGlwbGVPYmplY3RzKEwsIEZhbHNlLCB0aW1lb3V0KQorICAgICAgICAgICAgaWYgcmVzID09IFdBSVRfVElNRU9VVDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxpZiBXQUlUX09CSkVDVF8wIDw9IHJlcyA8IFdBSVRfT0JKRUNUXzAgKyBsZW4oTCk6CisgICAgICAgICAgICAgICAgcmVzIC09IFdBSVRfT0JKRUNUXzAKKyAgICAgICAgICAgIGVsaWYgV0FJVF9BQkFORE9ORURfMCA8PSByZXMgPCBXQUlUX0FCQU5ET05FRF8wICsgbGVuKEwpOgorICAgICAgICAgICAgICAgIHJlcyAtPSBXQUlUX0FCQU5ET05FRF8wCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignU2hvdWxkIG5vdCBnZXQgaGVyZScpCisgICAgICAgICAgICByZWFkeS5hcHBlbmQoTFtyZXNdKQorICAgICAgICAgICAgTCA9IExbcmVzKzE6XQorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgcmV0dXJuIHJlYWR5CisKKyAgICBfcmVhZHlfZXJyb3JzID0ge193aW5hcGkuRVJST1JfQlJPS0VOX1BJUEUsIF93aW5hcGkuRVJST1JfTkVUTkFNRV9ERUxFVEVEfQorCisgICAgZGVmIHdhaXQob2JqZWN0X2xpc3QsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBXYWl0IHRpbGwgYW4gb2JqZWN0IGluIG9iamVjdF9saXN0IGlzIHJlYWR5L3JlYWRhYmxlLgorCisgICAgICAgIFJldHVybnMgbGlzdCBvZiB0aG9zZSBvYmplY3RzIGluIG9iamVjdF9saXN0IHdoaWNoIGFyZSByZWFkeS9yZWFkYWJsZS4KKyAgICAgICAgJycnCisgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBJTkZJTklURQorICAgICAgICBlbGlmIHRpbWVvdXQgPCAwOgorICAgICAgICAgICAgdGltZW91dCA9IDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRpbWVvdXQgPSBpbnQodGltZW91dCAqIDEwMDAgKyAwLjUpCisKKyAgICAgICAgb2JqZWN0X2xpc3QgPSBsaXN0KG9iamVjdF9saXN0KQorICAgICAgICB3YWl0aGFuZGxlX3RvX29iaiA9IHt9CisgICAgICAgIG92X2xpc3QgPSBbXQorICAgICAgICByZWFkeV9vYmplY3RzID0gc2V0KCkKKyAgICAgICAgcmVhZHlfaGFuZGxlcyA9IHNldCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIG8gaW4gb2JqZWN0X2xpc3Q6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmaWxlbm8gPSBnZXRhdHRyKG8sICdmaWxlbm8nKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbby5fX2luZGV4X18oKV0gPSBvCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBzdGFydCBhbiBvdmVybGFwcGVkIHJlYWQgb2YgbGVuZ3RoIHplcm8KKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb3YsIGVyciA9IF93aW5hcGkuUmVhZEZpbGUoZmlsZW5vKCksIDAsIFRydWUpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIgbm90IGluIF9yZWFkeV9lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IF93aW5hcGkuRVJST1JfSU9fUEVORElORzoKKyAgICAgICAgICAgICAgICAgICAgICAgIG92X2xpc3QuYXBwZW5kKG92KQorICAgICAgICAgICAgICAgICAgICAgICAgd2FpdGhhbmRsZV90b19vYmpbb3YuZXZlbnRdID0gbworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBJZiBvLmZpbGVubygpIGlzIGFuIG92ZXJsYXBwZWQgcGlwZSBoYW5kbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVyciA9PSAwIHRoZW4gdGhlcmUgaXMgYSB6ZXJvIGxlbmd0aCBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBwaXBlLCBidXQgaXQgSEFTIE5PVCBiZWVuIGNvbnN1bWVkLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSAwCisKKyAgICAgICAgICAgIHJlYWR5X2hhbmRsZXMgPSBfZXhoYXVzdGl2ZV93YWl0KHdhaXRoYW5kbGVfdG9fb2JqLmtleXMoKSwgdGltZW91dCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgcmVxdWVzdCB0aGF0IG92ZXJsYXBwZWQgcmVhZHMgc3RvcAorICAgICAgICAgICAgZm9yIG92IGluIG92X2xpc3Q6CisgICAgICAgICAgICAgICAgb3YuY2FuY2VsKCkKKworICAgICAgICAgICAgIyB3YWl0IGZvciBhbGwgb3ZlcmxhcHBlZCByZWFkcyB0byBzdG9wCisgICAgICAgICAgICBmb3Igb3YgaW4gb3ZfbGlzdDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIF8sIGVyciA9IG92LkdldE92ZXJsYXBwZWRSZXN1bHQoVHJ1ZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICAgICBlcnIgPSBlLndpbmVycm9yCisgICAgICAgICAgICAgICAgICAgIGlmIGVyciBub3QgaW4gX3JlYWR5X2Vycm9yczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgaWYgZXJyICE9IF93aW5hcGkuRVJST1JfT1BFUkFUSU9OX0FCT1JURUQ6CisgICAgICAgICAgICAgICAgICAgIG8gPSB3YWl0aGFuZGxlX3RvX29ialtvdi5ldmVudF0KKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfb2JqZWN0cy5hZGQobykKKyAgICAgICAgICAgICAgICAgICAgaWYgZXJyID09IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIG8uZmlsZW5vKCkgaXMgYW4gb3ZlcmxhcHBlZCBwaXBlIGhhbmRsZSB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAjIGEgemVybyBsZW5ndGggbWVzc2FnZSBIQVMgYmVlbiBjb25zdW1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIobywgJ19nb3RfZW1wdHlfbWVzc2FnZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uX2dvdF9lbXB0eV9tZXNzYWdlID0gVHJ1ZQorCisgICAgICAgIHJlYWR5X29iamVjdHMudXBkYXRlKHdhaXRoYW5kbGVfdG9fb2JqW2hdIGZvciBoIGluIHJlYWR5X2hhbmRsZXMpCisgICAgICAgIHJldHVybiBbbyBmb3IgbyBpbiBvYmplY3RfbGlzdCBpZiBvIGluIHJlYWR5X29iamVjdHNdCisKK2Vsc2U6CisKKyAgICBkZWYgd2FpdChvYmplY3RfbGlzdCwgdGltZW91dD1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIFdhaXQgdGlsbCBhbiBvYmplY3QgaW4gb2JqZWN0X2xpc3QgaXMgcmVhZHkvcmVhZGFibGUuCisKKyAgICAgICAgUmV0dXJucyBsaXN0IG9mIHRob3NlIG9iamVjdHMgaW4gb2JqZWN0X2xpc3Qgd2hpY2ggYXJlIHJlYWR5L3JlYWRhYmxlLgorICAgICAgICAnJycKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHRpbWVvdXQgPD0gMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZWN0LnNlbGVjdChvYmplY3RfbGlzdCwgW10sIFtdLCAwKVswXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3Quc2VsZWN0KG9iamVjdF9saXN0LCBbXSwgW10sIHRpbWVvdXQpWzBdCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCisKKyMKKyMgTWFrZSBjb25uZWN0aW9uIGFuZCBzb2NrZXQgb2JqZWN0cyBzaGFyYWJsZSBpZiBwb3NzaWJsZQorIworCitpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjdGlvbi5yZWR1Y2Vfc29ja2V0KQorICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjdGlvbi5yZWR1Y2VfY29ubmVjdGlvbikKKyAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihQaXBlQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9waXBlX2Nvbm5lY3Rpb24pCitlbHNlOgorICAgIHRyeToKKyAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICBGb3JraW5nUGlja2xlci5yZWdpc3Rlcihzb2NrZXQuc29ja2V0LCByZWR1Y3Rpb24ucmVkdWNlX3NvY2tldCkKKyAgICAgICAgRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoQ29ubmVjdGlvbiwgcmVkdWN0aW9uLnJlZHVjZV9jb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvX19pbml0X18ucHkKaW5kZXggMTAxYzNjYi4uZTMxZmM2MSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9fX2luaXRfXy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L19faW5pdF9fLnB5CkBAIC0zNSw3ICszNSw3IEBACiBfX2FsbF9fID0gWwogICAgICdQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nLCAnZnJlZXplX3N1cHBvcnQnLAogICAgICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywgJ0NvbmRpdGlvbicsCi0gICAgJ0V2ZW50JywgJ1F1ZXVlJywgJ01hbmFnZXInLCAnUGlwZScsICdQb29sJywgJ0pvaW5hYmxlUXVldWUnCisgICAgJ0V2ZW50JywgJ0JhcnJpZXInLCAnUXVldWUnLCAnTWFuYWdlcicsICdQaXBlJywgJ1Bvb2wnLCAnSm9pbmFibGVRdWV1ZScKICAgICBdCiAKICMKQEAgLTQ2LDEyICs0NiwxMCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBhcnJheQotaW1wb3J0IGl0ZXJ0b29scwogCi1mcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgVGltZW91dEVycm9yLCBjcHVfY291bnQKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmR1bW15LmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gdGhyZWFkaW5nIGltcG9ydCBMb2NrLCBSTG9jaywgU2VtYXBob3JlLCBCb3VuZGVkU2VtYXBob3JlCi1mcm9tIHRocmVhZGluZyBpbXBvcnQgRXZlbnQKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBFdmVudCwgQ29uZGl0aW9uLCBCYXJyaWVyCiBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQogCiAjCkBAIC04NSwxNyArODMsNiBAQAogIwogIwogCi1jbGFzcyBDb25kaXRpb24odGhyZWFkaW5nLl9Db25kaXRpb24pOgotICAgICMgWFhYCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICAgICAgbm90aWZ5X2FsbCA9IHRocmVhZGluZy5fQ29uZGl0aW9uLm5vdGlmeV9hbGwuX19mdW5jX18KLSAgICBlbHNlOgotICAgICAgICBub3RpZnlfYWxsID0gdGhyZWFkaW5nLl9Db25kaXRpb24ubm90aWZ5X2FsbAotCi0jCi0jCi0jCi0KIFByb2Nlc3MgPSBEdW1teVByb2Nlc3MKIGN1cnJlbnRfcHJvY2VzcyA9IHRocmVhZGluZy5jdXJyZW50X3RocmVhZAogY3VycmVudF9wcm9jZXNzKCkuX2NoaWxkcmVuID0gd2Vha3JlZi5XZWFrS2V5RGljdGlvbmFyeSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2R1bW15L2Nvbm5lY3Rpb24ucHkKaW5kZXggYWYxMDU3OS4uODc0ZWM4ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9kdW1teS9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZHVtbXkvY29ubmVjdGlvbi5weQpAQCAtNTMsNiArNTMsMTIgQEAKIAogICAgIGFkZHJlc3MgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogc2VsZi5fYmFja2xvZ19xdWV1ZSkKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCisKIAogZGVmIENsaWVudChhZGRyZXNzKToKICAgICBfaW4sIF9vdXQgPSBRdWV1ZSgpLCBRdWV1ZSgpCkBAIC04NSwzICs5MSw5IEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHBhc3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKToKKyAgICAgICAgc2VsZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKaW5kZXggYmM4YWM0NC4uYWY2NTgwZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQpAQCAtNCwzMiArNCw3IEBACiAjIG11bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogaW1wb3J0IG9zCkBAIC0zOCw3ICsxMyw3IEBACiAKIGZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB1dGlsLCBwcm9jZXNzCiAKLV9fYWxsX18gPSBbJ1BvcGVuJywgJ2Fzc2VydF9zcGF3bmluZycsICdleGl0JywgJ2R1cGxpY2F0ZScsICdjbG9zZScsICdGb3JraW5nUGlja2xlciddCitfX2FsbF9fID0gWydQb3BlbicsICdhc3NlcnRfc3Bhd25pbmcnLCAnZHVwbGljYXRlJywgJ2Nsb3NlJywgJ0ZvcmtpbmdQaWNrbGVyJ10KIAogIwogIyBDaGVjayB0aGF0IHRoZSBjdXJyZW50IHRocmVhZCBpcyBzcGF3bmluZyBhIGNoaWxkIHByb2Nlc3MKQEAgLTU1LDE4ICszMCwxOCBAQAogIyBUcnkgbWFraW5nIHNvbWUgY2FsbGFibGUgdHlwZXMgcGlja2xhYmxlCiAjCiAKLWZyb20gcGlja2xlIGltcG9ydCBfUGlja2xlciBhcyBQaWNrbGVyCitmcm9tIHBpY2tsZSBpbXBvcnQgUGlja2xlcgorZnJvbSBjb3B5cmVnIGltcG9ydCBkaXNwYXRjaF90YWJsZQorCiBjbGFzcyBGb3JraW5nUGlja2xlcihQaWNrbGVyKToKLSAgICBkaXNwYXRjaCA9IFBpY2tsZXIuZGlzcGF0Y2guY29weSgpCisgICAgX2V4dHJhX3JlZHVjZXJzID0ge30KKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBQaWNrbGVyLl9faW5pdF9fKHNlbGYsICphcmdzKQorICAgICAgICBzZWxmLmRpc3BhdGNoX3RhYmxlID0gZGlzcGF0Y2hfdGFibGUuY29weSgpCisgICAgICAgIHNlbGYuZGlzcGF0Y2hfdGFibGUudXBkYXRlKHNlbGYuX2V4dHJhX3JlZHVjZXJzKQogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiByZWdpc3RlcihjbHMsIHR5cGUsIHJlZHVjZSk6Ci0gICAgICAgIGRlZiBkaXNwYXRjaGVyKHNlbGYsIG9iaik6Ci0gICAgICAgICAgICBydiA9IHJlZHVjZShvYmopCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJ2LCBzdHIpOgotICAgICAgICAgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwob2JqLCBydikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5zYXZlX3JlZHVjZShvYmo9b2JqLCAqcnYpCi0gICAgICAgIGNscy5kaXNwYXRjaFt0eXBlXSA9IGRpc3BhdGNoZXIKKyAgICAgICAgY2xzLl9leHRyYV9yZWR1Y2Vyc1t0eXBlXSA9IHJlZHVjZQogCiBkZWYgX3JlZHVjZV9tZXRob2QobSk6CiAgICAgaWYgbS5fX3NlbGZfXyBpcyBOb25lOgpAQCAtMTAwLDkgKzc1LDYgQEAKICMKIAogaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6Ci0gICAgaW1wb3J0IHRpbWUKLQotICAgIGV4aXQgPSBvcy5fZXhpdAogICAgIGR1cGxpY2F0ZSA9IG9zLmR1cAogICAgIGNsb3NlID0gb3MuY2xvc2UKIApAQCAtMTE4LDE0ICs5MCwyMyBAQAogICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBOb25lCiAKKyAgICAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSByCisKICAgICAgICAgICAgIHNlbGYucGlkID0gb3MuZm9yaygpCiAgICAgICAgICAgICBpZiBzZWxmLnBpZCA9PSAwOgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHIpCiAgICAgICAgICAgICAgICAgaWYgJ3JhbmRvbScgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByYW5kb20KICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnNlZWQoKQogICAgICAgICAgICAgICAgIGNvZGUgPSBwcm9jZXNzX29iai5fYm9vdHN0cmFwKCkKICAgICAgICAgICAgICAgICBvcy5fZXhpdChjb2RlKQogCisgICAgICAgICAgICAjIGB3YCB3aWxsIGJlIGNsb3NlZCB3aGVuIHRoZSBjaGlsZCBleGl0cywgYXQgd2hpY2ggcG9pbnQgYHJgCisgICAgICAgICAgICAjIHdpbGwgYmVjb21lIHJlYWR5IGZvciByZWFkaW5nICh1c2luZyBlLmcuIHNlbGVjdCgpKS4KKyAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIG9zLmNsb3NlLCAociwpKQorCiAgICAgICAgIGRlZiBwb2xsKHNlbGYsIGZsYWc9b3MuV05PSEFORyk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDMsMjYgKzEyNCwyMCBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbCgwKQotICAgICAgICAgICAgZGVhZGxpbmUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgICAgIGRlbGF5ID0gMC4wMDA1Ci0gICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgIHJlcyA9IHNlbGYucG9sbCgpCi0gICAgICAgICAgICAgICAgaWYgcmVzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBkZWxheSA9IG1pbihkZWxheSAqIDIsIHJlbWFpbmluZywgMC4wNSkKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKGRlbGF5KQotICAgICAgICAgICAgcmV0dXJuIHJlcworICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgd2FpdChbc2VsZi5zZW50aW5lbF0sIHRpbWVvdXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IGJsb2NrIGlmIHdhaXQoKSByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucG9sbChvcy5XTk9IQU5HIGlmIHRpbWVvdXQgPT0gMC4wIGVsc2UgMCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogICAgICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHNlbGYucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLndhaXQodGltZW91dD0wLjEpIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogCkBAIC0xNzcsMTIgKzE1Miw5IEBACiBlbHNlOgogICAgIGltcG9ydCBfdGhyZWFkCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcwotICAgIGltcG9ydCB0aW1lCisgICAgaW1wb3J0IF93aW5hcGkKIAotICAgIGZyb20gcGlja2xlIGltcG9ydCBkdW1wLCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCi0gICAgZnJvbSBfbXVsdGlwcm9jZXNzaW5nIGltcG9ydCB3aW4zMiwgQ29ubmVjdGlvbiwgUGlwZUNvbm5lY3Rpb24KLSAgICBmcm9tIC51dGlsIGltcG9ydCBGaW5hbGl6ZQorICAgIGZyb20gcGlja2xlIGltcG9ydCBsb2FkLCBISUdIRVNUX1BST1RPQ09MCiAKICAgICBkZWYgZHVtcChvYmosIGZpbGUsIHByb3RvY29sPU5vbmUpOgogICAgICAgICBGb3JraW5nUGlja2xlcihmaWxlLCBwcm90b2NvbCkuZHVtcChvYmopCkBAIC0xOTUsOCArMTY3LDcgQEAKICAgICBXSU5FWEUgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIGdldGF0dHIoc3lzLCAnZnJvemVuJywgRmFsc2UpKQogICAgIFdJTlNFUlZJQ0UgPSBzeXMuZXhlY3V0YWJsZS5sb3dlcigpLmVuZHN3aXRoKCJweXRob25zZXJ2aWNlLmV4ZSIpCiAKLSAgICBleGl0ID0gd2luMzIuRXhpdFByb2Nlc3MKLSAgICBjbG9zZSA9IHdpbjMyLkNsb3NlSGFuZGxlCisgICAgY2xvc2UgPSBfd2luYXBpLkNsb3NlSGFuZGxlCiAKICAgICAjCiAgICAgIyBfcHl0aG9uX2V4ZSBpcyB0aGUgYXNzdW1lZCBwYXRoIHRvIHRoZSBweXRob24gZXhlY3V0YWJsZS4KQEAgLTIxOCwxMSArMTg5LDExIEBACiAKICAgICBkZWYgZHVwbGljYXRlKGhhbmRsZSwgdGFyZ2V0X3Byb2Nlc3M9Tm9uZSwgaW5oZXJpdGFibGU9RmFsc2UpOgogICAgICAgICBpZiB0YXJnZXRfcHJvY2VzcyBpcyBOb25lOgotICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpCi0gICAgICAgIHJldHVybiBfc3VicHJvY2Vzcy5EdXBsaWNhdGVIYW5kbGUoCi0gICAgICAgICAgICBfc3VicHJvY2Vzcy5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAotICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF9zdWJwcm9jZXNzLkRVUExJQ0FURV9TQU1FX0FDQ0VTUwotICAgICAgICAgICAgKS5EZXRhY2goKQorICAgICAgICAgICAgdGFyZ2V0X3Byb2Nlc3MgPSBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCkKKyAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgX3dpbmFwaS5HZXRDdXJyZW50UHJvY2VzcygpLCBoYW5kbGUsIHRhcmdldF9wcm9jZXNzLAorICAgICAgICAgICAgMCwgaW5oZXJpdGFibGUsIF93aW5hcGkuRFVQTElDQVRFX1NBTUVfQUNDRVNTCisgICAgICAgICAgICApCiAKICAgICAjCiAgICAgIyBXZSBkZWZpbmUgYSBQb3BlbiBjbGFzcyBzaW1pbGFyIHRvIHRoZSBvbmUgZnJvbSBzdWJwcm9jZXNzLCBidXQKQEAgLTIzNiw2ICsyMDcsOSBAQAogICAgICAgICBfdGxzID0gX3RocmVhZC5fbG9jYWwoKQogCiAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwcm9jZXNzX29iaik6CisgICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGdldF9jb21tYW5kX2xpbmUoKSkKKyAgICAgICAgICAgIHByZXBfZGF0YSA9IGdldF9wcmVwYXJhdGlvbl9kYXRhKHByb2Nlc3Nfb2JqLl9uYW1lKQorCiAgICAgICAgICAgICAjIGNyZWF0ZSBwaXBlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggY2hpbGQKICAgICAgICAgICAgIHJmZCwgd2ZkID0gb3MucGlwZSgpCiAKQEAgLTI0MywzMCArMjE3LDMwIEBACiAgICAgICAgICAgICByaGFuZGxlID0gZHVwbGljYXRlKG1zdmNydC5nZXRfb3NmaGFuZGxlKHJmZCksIGluaGVyaXRhYmxlPVRydWUpCiAgICAgICAgICAgICBvcy5jbG9zZShyZmQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgcHJvY2VzcwotICAgICAgICAgICAgY21kID0gZ2V0X2NvbW1hbmRfbGluZSgpICsgW3JoYW5kbGVdCi0gICAgICAgICAgICBjbWQgPSAnICcuam9pbignIiVzIicgJSB4IGZvciB4IGluIGNtZCkKLSAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKAotICAgICAgICAgICAgICAgIF9weXRob25fZXhlLCBjbWQsIE5vbmUsIE5vbmUsIDEsIDAsIE5vbmUsIE5vbmUsIE5vbmUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICBodC5DbG9zZSgpCi0gICAgICAgICAgICBjbG9zZShyaGFuZGxlKQorICAgICAgICAgICAgd2l0aCBvcGVuKHdmZCwgJ3diJywgY2xvc2VmZD1UcnVlKSBhcyB0b19jaGlsZDoKKyAgICAgICAgICAgICAgICAjIHN0YXJ0IHByb2Nlc3MKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfd2luYXBpLkNyZWF0ZVByb2Nlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICBfcHl0aG9uX2V4ZSwgY21kICsgKCcgJXMnICUgcmhhbmRsZSksCisgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCBOb25lLCAxLCAwLCBOb25lLCBOb25lLCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoaHQpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UocmhhbmRsZSkKIAotICAgICAgICAgICAgIyBzZXQgYXR0cmlidXRlcyBvZiBzZWxmCi0gICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAotICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gTm9uZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgICAgICAjIHNldCBhdHRyaWJ1dGVzIG9mIHNlbGYKKyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IHBpZAorICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGUgPSBocAorICAgICAgICAgICAgICAgIHNlbGYuc2VudGluZWwgPSBpbnQoaHApCiAKLSAgICAgICAgICAgICMgc2VuZCBpbmZvcm1hdGlvbiB0byBjaGlsZAotICAgICAgICAgICAgcHJlcF9kYXRhID0gZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCi0gICAgICAgICAgICB0b19jaGlsZCA9IG9zLmZkb3Blbih3ZmQsICd3YicpCi0gICAgICAgICAgICBQb3Blbi5fdGxzLnByb2Nlc3NfaGFuZGxlID0gaW50KGhwKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgICAgICBkdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKLSAgICAgICAgICAgICAgICB0b19jaGlsZC5jbG9zZSgpCisgICAgICAgICAgICAgICAgIyBzZW5kIGluZm9ybWF0aW9uIHRvIGNoaWxkCisgICAgICAgICAgICAgICAgUG9wZW4uX3Rscy5wcm9jZXNzX2hhbmRsZSA9IGludChocCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGR1bXAocHJlcF9kYXRhLCB0b19jaGlsZCwgSElHSEVTVF9QUk9UT0NPTCkKKyAgICAgICAgICAgICAgICAgICAgZHVtcChwcm9jZXNzX29iaiwgdG9fY2hpbGQsIEhJR0hFU1RfUFJPVE9DT0wpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgZGVsIFBvcGVuLl90bHMucHJvY2Vzc19oYW5kbGUKIAogICAgICAgICBAc3RhdGljbWV0aG9kCiAgICAgICAgIGRlZiB0aHJlYWRfaXNfc3Bhd25pbmcoKToKQEAgLTI3OSwxMyArMjUzLDEzIEBACiAgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIG1zZWNzID0gX3N1YnByb2Nlc3MuSU5GSU5JVEUKKyAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBfd2luYXBpLklORklOSVRFCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbXNlY3MgPSBtYXgoMCwgaW50KHRpbWVvdXQgKiAxMDAwICsgMC41KSkKIAotICAgICAgICAgICAgICAgIHJlcyA9IF9zdWJwcm9jZXNzLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQotICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wOgotICAgICAgICAgICAgICAgICAgICBjb2RlID0gX3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgICAgICAgICByZXMgPSBfd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QoaW50KHNlbGYuX2hhbmRsZSksIG1zZWNzKQorICAgICAgICAgICAgICAgIGlmIHJlcyA9PSBfd2luYXBpLldBSVRfT0JKRUNUXzA6CisgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBfd2luYXBpLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCiAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUgPT0gVEVSTUlOQVRFOgogICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IC1zaWduYWwuU0lHVEVSTQogICAgICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBjb2RlCkBAIC0yOTgsOSArMjcyLDkgQEAKICAgICAgICAgZGVmIHRlcm1pbmF0ZShzZWxmKToKICAgICAgICAgICAgIGlmIHNlbGYucmV0dXJuY29kZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhpbnQoc2VsZi5faGFuZGxlKSwgVEVSTUlOQVRFKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTAuMSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5UZXJtaW5hdGVQcm9jZXNzKGludChzZWxmLl9oYW5kbGUpLCBURVJNSU5BVEUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYud2FpdCh0aW1lb3V0PTEuMCkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAKICAgICAjCkBAIC0zNTAsNyArMzI0LDggQEAKICAgICAgICAgICAgIHJldHVybiBbc3lzLmV4ZWN1dGFibGUsICctLW11bHRpcHJvY2Vzc2luZy1mb3JrJ10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByb2cgPSAnZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBpbXBvcnQgbWFpbjsgbWFpbigpJwotICAgICAgICAgICAgcmV0dXJuIFtfcHl0aG9uX2V4ZSwgJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQorICAgICAgICAgICAgb3B0cyA9IHV0aWwuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpCisgICAgICAgICAgICByZXR1cm4gW19weXRob25fZXhlXSArIG9wdHMgKyBbJy1jJywgcHJvZywgJy0tbXVsdGlwcm9jZXNzaW5nLWZvcmsnXQogCiAKICAgICBkZWYgbWFpbigpOgpAQCAtMzcyLDcgKzM0Nyw3IEBACiAgICAgICAgIGZyb21fcGFyZW50LmNsb3NlKCkKIAogICAgICAgICBleGl0Y29kZSA9IHNlbGYuX2Jvb3RzdHJhcCgpCi0gICAgICAgIGV4aXQoZXhpdGNvZGUpCisgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQogCiAKICAgICBkZWYgZ2V0X3ByZXBhcmF0aW9uX2RhdGEobmFtZSk6CkBAIC00MDUsMjIgKzM4MCw2IEBACiAKICAgICAgICAgcmV0dXJuIGQKIAotICAgICMKLSAgICAjIE1ha2UgKFBpcGUpQ29ubmVjdGlvbiBwaWNrbGFibGUKLSAgICAjCi0KLSAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgICAgIGlmIG5vdCBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKLSAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCAlcyBvYmplY3RzIGNhbiBvbmx5IGJlIHNoYXJlZCBiZXR3ZWVuIHByb2Nlc3Nlc1xuJwotICAgICAgICAgICAgICAgICd1c2luZyBpbmhlcml0YW5jZScgJSB0eXBlKGNvbm4pLl9fbmFtZV9fCi0gICAgICAgICAgICAgICAgKQotICAgICAgICByZXR1cm4gdHlwZShjb25uKSwgKFBvcGVuLmR1cGxpY2F0ZV9mb3JfY2hpbGQoY29ubi5maWxlbm8oKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKLQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKENvbm5lY3Rpb24sIHJlZHVjZV9jb25uZWN0aW9uKQotICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKFBpcGVDb25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQogIwogIyBQcmVwYXJlIGN1cnJlbnQgcHJvY2VzcwogIwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CmluZGV4IDBhMjVlZjAuLjRlOTNjMTIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKQEAgLTQsMzcgKzQsMTEgQEAKICMgbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBpbXBvcnQgYmlzZWN0CiBpbXBvcnQgbW1hcAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCB0aHJlYWRpbmcKQEAgLTUyLDcgKzI2LDcgQEAKIAogaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgaW1wb3J0IF93aW5hcGkKIAogICAgIGNsYXNzIEFyZW5hKG9iamVjdCk6CiAKQEAgLTYyLDcgKzM2LDcgQEAKICAgICAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgICAgIHNlbGYubmFtZSA9ICdweW0tJWQtJWQnICUgKG9zLmdldHBpZCgpLCBuZXh0KEFyZW5hLl9jb3VudGVyKSkKICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gbW1hcC5tbWFwKC0xLCBzZWxmLnNpemUsIHRhZ25hbWU9c2VsZi5uYW1lKQotICAgICAgICAgICAgYXNzZXJ0IHdpbjMyLkdldExhc3RFcnJvcigpID09IDAsICd0YWduYW1lIGFscmVhZHkgaW4gdXNlJworICAgICAgICAgICAgYXNzZXJ0IF93aW5hcGkuR2V0TGFzdEVycm9yKCkgPT0gMCwgJ3RhZ25hbWUgYWxyZWFkeSBpbiB1c2UnCiAgICAgICAgICAgICBzZWxmLl9zdGF0ZSA9IChzZWxmLnNpemUsIHNlbGYubmFtZSkKIAogICAgICAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgpAQCAtNzIsNyArNDYsNyBAQAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKICAgICAgICAgICAgIHNlbGYuc2l6ZSwgc2VsZi5uYW1lID0gc2VsZi5fc3RhdGUgPSBzdGF0ZQogICAgICAgICAgICAgc2VsZi5idWZmZXIgPSBtbWFwLm1tYXAoLTEsIHNlbGYuc2l6ZSwgdGFnbmFtZT1zZWxmLm5hbWUpCi0gICAgICAgICAgICBhc3NlcnQgd2luMzIuR2V0TGFzdEVycm9yKCkgPT0gd2luMzIuRVJST1JfQUxSRUFEWV9FWElTVFMKKyAgICAgICAgICAgIGFzc2VydCBfd2luYXBpLkdldExhc3RFcnJvcigpID09IF93aW5hcGkuRVJST1JfQUxSRUFEWV9FWElTVFMKIAogZWxzZToKIApAQCAtMjMxLDcgKzIwNSw3IEBACiAgICAgICAgICAgICBzZWxmLl9sb2NrLnJlbGVhc2UoKQogCiAjCi0jIENsYXNzIHJlcHJlc2VudGluZyBhIGNodW5rIG9mIGFuIG1tYXAgLS0gY2FuIGJlIGluaGVyaXRlZAorIyBDbGFzcyByZXByZXNlbnRpbmcgYSBjaHVuayBvZiBhbiBtbWFwIC0tIGNhbiBiZSBpbmhlcml0ZWQgYnkgY2hpbGQgcHJvY2VzcwogIwogCiBjbGFzcyBCdWZmZXJXcmFwcGVyKG9iamVjdCk6CkBAIC0yNDQsMTEgKzIxOCw2IEBACiAgICAgICAgIHNlbGYuX3N0YXRlID0gKGJsb2NrLCBzaXplKQogICAgICAgICBGaW5hbGl6ZShzZWxmLCBCdWZmZXJXcmFwcGVyLl9oZWFwLmZyZWUsIGFyZ3M9KGJsb2NrLCkpCiAKLSAgICBkZWYgZ2V0X2FkZHJlc3Moc2VsZik6CisgICAgZGVmIGNyZWF0ZV9tZW1vcnl2aWV3KHNlbGYpOgogICAgICAgICAoYXJlbmEsIHN0YXJ0LCBzdG9wKSwgc2l6ZSA9IHNlbGYuX3N0YXRlCi0gICAgICAgIGFkZHJlc3MsIGxlbmd0aCA9IF9tdWx0aXByb2Nlc3NpbmcuYWRkcmVzc19vZl9idWZmZXIoYXJlbmEuYnVmZmVyKQotICAgICAgICBhc3NlcnQgc2l6ZSA8PSBsZW5ndGgKLSAgICAgICAgcmV0dXJuIGFkZHJlc3MgKyBzdGFydAotCi0gICAgZGVmIGdldF9zaXplKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGVbMV0KKyAgICAgICAgcmV0dXJuIG1lbW9yeXZpZXcoYXJlbmEuYnVmZmVyKVtzdGFydDpzdGFydCtzaXplXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKaW5kZXggNTU4OGVhZC4uMWFiMTQ3ZSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CkBAIC01LDMyICs1LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsgJ0Jhc2VNYW5hZ2VyJywgJ1N5bmNNYW5hZ2VyJywgJ0Jhc2VQcm94eScsICdUb2tlbicgXQpAQCAtMzksMTkgKzE0LDE2IEBACiAjIEltcG9ydHMKICMKIAotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgd2Vha3JlZgogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IGFycmF5CiBpbXBvcnQgcXVldWUKIAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGMKLWZyb20gcGlja2xlIGltcG9ydCBQaWNrbGluZ0Vycm9yCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUHJvY2VzcywgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4sIFBvb2wsIHV0aWwsIGNvbm5lY3Rpb24KIGZyb20gbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MgaW1wb3J0IEF1dGhlbnRpY2F0aW9uU3RyaW5nCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBleGl0LCBQb3BlbiwgYXNzZXJ0X3NwYXduaW5nLCBGb3JraW5nUGlja2xlcgotZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgRmluYWxpemUsIGluZm8KK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IFBvcGVuLCBGb3JraW5nUGlja2xlcgorZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKICMKICMgUmVnaXN0ZXIgc29tZSB0aGluZ3MgZm9yIHBpY2tsaW5nCkBAIC0xNjgsMjggKzE0MCwzOCBAQAogICAgICAgICBzZWxmLmlkX3RvX29iaiA9IHsnMCc6IChOb25lLCAoKSl9CiAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnQgPSB7fQogICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLlJMb2NrKCkKLSAgICAgICAgc2VsZi5zdG9wID0gMAogCiAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIHNlcnZlciBmb3JldmVyCiAgICAgICAgICcnJworICAgICAgICBzZWxmLnN0b3BfZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBjdXJyZW50X3Byb2Nlc3MoKS5fbWFuYWdlcl9zZXJ2ZXIgPSBzZWxmCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjY2VwdGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5hY2NlcHRlcikKKyAgICAgICAgICAgIGFjY2VwdGVyLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIGFjY2VwdGVyLnN0YXJ0KCkKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKLSAgICAgICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHQuc3RhcnQoKQorICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLnN0b3BfZXZlbnQuaXNfc2V0KCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC53YWl0KDEpCiAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBTeXN0ZW1FeGl0KToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnN0b3AgPSA5OTkKLSAgICAgICAgICAgIHNlbGYubGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKKyAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdyZXNldHRpbmcgc3Rkb3V0LCBzdGRlcnInKQorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuX19zdGRvdXRfXworICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXworICAgICAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGRlZiBhY2NlcHRlcihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjID0gc2VsZi5saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgZXhjZXB0IChPU0Vycm9yLCBJT0Vycm9yKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuaGFuZGxlX3JlcXVlc3QsIGFyZ3M9KGMsKSkKKyAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgdC5zdGFydCgpCiAKICAgICBkZWYgaGFuZGxlX3JlcXVlc3Qoc2VsZiwgYyk6CiAgICAgICAgICcnJwpAQCAtMjM2LDcgKzIxOCw3IEBACiAgICAgICAgIHNlbmQgPSBjb25uLnNlbmQKICAgICAgICAgaWRfdG9fb2JqID0gc2VsZi5pZF90b19vYmoKIAotICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wOgorICAgICAgICB3aGlsZSBub3Qgc2VsZi5zdG9wX2V2ZW50LmlzX3NldCgpOgogCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbWV0aG9kbmFtZSA9IG9iaiA9IE5vbmUKQEAgLTM0NiwzMiArMzI4LDEzIEBACiAgICAgICAgIFNodXRkb3duIHRoaXMgcHJvY2VzcwogICAgICAgICAnJycKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHV0aWwuZGVidWcoJ21hbmFnZXIgcmVjZWl2ZWQgc2h1dGRvd24gbWVzc2FnZScpCi0gICAgICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQotCi0gICAgICAgICAgICAgICAgaWYgc3lzLnN0ZG91dCAhPSBzeXMuX19zdGRvdXRfXzoKLSAgICAgICAgICAgICAgICAgICAgdXRpbC5kZWJ1ZygncmVzZXR0aW5nIHN0ZG91dCwgc3RkZXJyJykKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHN5cy5fX3N0ZG91dF9fCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXwotCi0gICAgICAgICAgICAgICAgdXRpbC5fcnVuX2ZpbmFsaXplcnMoMCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAudGVybWluYXRlKCkKLQotICAgICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgotICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCd0ZXJtaW5hdGluZyBhIGNoaWxkIHByb2Nlc3Mgb2YgbWFuYWdlcicpCi0gICAgICAgICAgICAgICAgICAgIHAuam9pbigpCi0KLSAgICAgICAgICAgICAgICB1dGlsLl9ydW5fZmluYWxpemVycygpCi0gICAgICAgICAgICAgICAgdXRpbC5pbmZvKCdtYW5hZ2VyIGV4aXRpbmcgd2l0aCBleGl0Y29kZSAwJykKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCisgICAgICAgICAgICB1dGlsLmRlYnVnKCdtYW5hZ2VyIHJlY2VpdmVkIHNodXRkb3duIG1lc3NhZ2UnKQorICAgICAgICAgICAgYy5zZW5kKCgnI1JFVFVSTicsIE5vbmUpKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGV4aXQoMCkKKyAgICAgICAgICAgIHNlbGYuc3RvcF9ldmVudC5zZXQoKQogCiAgICAgZGVmIGNyZWF0ZShzZWxmLCBjLCB0eXBlaWQsICphcmdzLCAqKmt3ZHMpOgogICAgICAgICAnJycKQEAgLTQ4MywxMCArNDQ2LDYgQEAKICAgICAgICAgc2VsZi5fc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIKICAgICAgICAgc2VsZi5fTGlzdGVuZXIsIHNlbGYuX0NsaWVudCA9IGxpc3RlbmVyX2NsaWVudFtzZXJpYWxpemVyXQogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiB0eXBlKHNlbGYpLmZyb21fYWRkcmVzcywgXAotICAgICAgICAgICAgICAgKHNlbGYuX2FkZHJlc3MsIHNlbGYuX2F1dGhrZXksIHNlbGYuX3NlcmlhbGl6ZXIpCi0KICAgICBkZWYgZ2V0X3NlcnZlcihzZWxmKToKICAgICAgICAgJycnCiAgICAgICAgIFJldHVybiBzZXJ2ZXIgb2JqZWN0IHdpdGggc2VydmVfZm9yZXZlcigpIG1ldGhvZCBhbmQgYWRkcmVzcyBhdHRyaWJ1dGUKQEAgLTU3Niw3ICs1MzUsMTAgQEAKICAgICAgICAgJycnCiAgICAgICAgIEpvaW4gdGhlIG1hbmFnZXIgcHJvY2VzcyAoaWYgaXQgaGFzIGJlZW4gc3Bhd25lZCkKICAgICAgICAgJycnCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Muam9pbih0aW1lb3V0KQorICAgICAgICBpZiBzZWxmLl9wcm9jZXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzcy5qb2luKHRpbWVvdXQpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2Vzcy5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3MgPSBOb25lCiAKICAgICBkZWYgX2RlYnVnX2luZm8oc2VsZik6CiAgICAgICAgICcnJwpAQCAtNTk5LDYgKzU2MSw5IEBACiAgICAgICAgICAgICBjb25uLmNsb3NlKCkKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLklOSVRJQUw6CisgICAgICAgICAgICBzZWxmLnN0YXJ0KCkKKyAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlLnZhbHVlID09IFN0YXRlLlNUQVJURUQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKQEAgLTYyMCw3ICs1ODUsNyBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTAuMikKKyAgICAgICAgICAgIHByb2Nlc3Muam9pbih0aW1lb3V0PTEuMCkKICAgICAgICAgICAgIGlmIHByb2Nlc3MuaXNfYWxpdmUoKToKICAgICAgICAgICAgICAgICB1dGlsLmluZm8oJ21hbmFnZXIgc3RpbGwgYWxpdmUnKQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIocHJvY2VzcywgJ3Rlcm1pbmF0ZScpOgpAQCAtOTgyLDggKzk0Nyw5IEBACiAKIGNsYXNzIEFjcXVpcmVyUHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2FjcXVpcmUnLCAncmVsZWFzZScpCi0gICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdhY3F1aXJlJywgKGJsb2NraW5nLCkpCisgICAgZGVmIGFjcXVpcmUoc2VsZiwgYmxvY2tpbmc9VHJ1ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgYXJncyA9IChibG9ja2luZywpIGlmIHRpbWVvdXQgaXMgTm9uZSBlbHNlIChibG9ja2luZywgdGltZW91dCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2FjcXVpcmUnLCBhcmdzKQogICAgIGRlZiByZWxlYXNlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgncmVsZWFzZScpCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKQEAgLTEwMDAsNiArOTY2LDI0IEBACiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdub3RpZnknKQogICAgIGRlZiBub3RpZnlfYWxsKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fY2FsbG1ldGhvZCgnbm90aWZ5X2FsbCcpCisgICAgZGVmIHdhaXRfZm9yKHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgaWYgcmVzdWx0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBlbmR0aW1lID0gTm9uZQorICAgICAgICAgICAgd2FpdHRpbWUgPSBOb25lCisgICAgICAgIHdoaWxlIG5vdCByZXN1bHQ6CisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKKyAgICAgICAgICAgICAgICBpZiB3YWl0dGltZSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgc2VsZi53YWl0KHdhaXR0aW1lKQorICAgICAgICAgICAgcmVzdWx0ID0gcHJlZGljYXRlKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAKIGNsYXNzIEV2ZW50UHJveHkoQmFzZVByb3h5KToKICAgICBfZXhwb3NlZF8gPSAoJ2lzX3NldCcsICdzZXQnLCAnY2xlYXInLCAnd2FpdCcpCkBAIC0xMDEyLDYgKzk5NiwyNiBAQAogICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCd3YWl0JywgKHRpbWVvdXQsKSkKIAorCitjbGFzcyBCYXJyaWVyUHJveHkoQmFzZVByb3h5KToKKyAgICBfZXhwb3NlZF8gPSAoJ19fZ2V0YXR0cmlidXRlX18nLCAnd2FpdCcsICdhYm9ydCcsICdyZXNldCcpCisgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ3dhaXQnLCAodGltZW91dCwpKQorICAgIGRlZiBhYm9ydChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ2Fib3J0JykKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdyZXNldCcpCisgICAgQHByb3BlcnR5CisgICAgZGVmIHBhcnRpZXMoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCdwYXJ0aWVzJywpKQorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuX3dhaXRpbmcoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9jYWxsbWV0aG9kKCdfX2dldGF0dHJpYnV0ZV9fJywgKCduX3dhaXRpbmcnLCkpCisgICAgQHByb3BlcnR5CisgICAgZGVmIGJyb2tlbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJ19fZ2V0YXR0cmlidXRlX18nLCAoJ2Jyb2tlbicsKSkKKworCiBjbGFzcyBOYW1lc3BhY2VQcm94eShCYXNlUHJveHkpOgogICAgIF9leHBvc2VkXyA9ICgnX19nZXRhdHRyaWJ1dGVfXycsICdfX3NldGF0dHJfXycsICdfX2RlbGF0dHJfXycpCiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGtleSk6CkBAIC0xMDQxLDEyICsxMDQ1LDExIEBACiAKIAogQmFzZUxpc3RQcm94eSA9IE1ha2VQcm94eVR5cGUoJ0Jhc2VMaXN0UHJveHknLCAoCi0gICAgJ19fYWRkX18nLCAnX19jb250YWluc19fJywgJ19fZGVsaXRlbV9fJywgJ19fZGVsc2xpY2VfXycsCi0gICAgJ19fZ2V0aXRlbV9fJywgJ19fZ2V0c2xpY2VfXycsICdfX2xlbl9fJywgJ19fbXVsX18nLAotICAgICdfX3JldmVyc2VkX18nLCAnX19ybXVsX18nLCAnX19zZXRpdGVtX18nLCAnX19zZXRzbGljZV9fJywKKyAgICAnX19hZGRfXycsICdfX2NvbnRhaW5zX18nLCAnX19kZWxpdGVtX18nLCAnX19nZXRpdGVtX18nLCAnX19sZW5fXycsCisgICAgJ19fbXVsX18nLCAnX19yZXZlcnNlZF9fJywgJ19fcm11bF9fJywgJ19fc2V0aXRlbV9fJywKICAgICAnYXBwZW5kJywgJ2NvdW50JywgJ2V4dGVuZCcsICdpbmRleCcsICdpbnNlcnQnLCAncG9wJywgJ3JlbW92ZScsCiAgICAgJ3JldmVyc2UnLCAnc29ydCcsICdfX2ltdWxfXycKLSAgICApKSAgICAgICAgICAgICAgICAgICMgWFhYIF9fZ2V0c2xpY2VfXyBhbmQgX19zZXRzbGljZV9fIHVubmVlZGVkIGluIFB5My4wCisgICAgKSkKIGNsYXNzIExpc3RQcm94eShCYXNlTGlzdFByb3h5KToKICAgICBkZWYgX19pYWRkX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBzZWxmLl9jYWxsbWV0aG9kKCdleHRlbmQnLCAodmFsdWUsKSkKQEAgLTEwNjQsMTcgKzEwNjcsMTggQEAKIAogCiBBcnJheVByb3h5ID0gTWFrZVByb3h5VHlwZSgnQXJyYXlQcm94eScsICgKLSAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycsICdfX2dldHNsaWNlX18nLCAnX19zZXRzbGljZV9fJwotICAgICkpICAgICAgICAgICAgICAgICAgIyBYWFggX19nZXRzbGljZV9fIGFuZCBfX3NldHNsaWNlX18gdW5uZWVkZWQgaW4gUHkzLjAKKyAgICAnX19sZW5fXycsICdfX2dldGl0ZW1fXycsICdfX3NldGl0ZW1fXycKKyAgICApKQogCiAKIFBvb2xQcm94eSA9IE1ha2VQcm94eVR5cGUoJ1Bvb2xQcm94eScsICgKICAgICAnYXBwbHknLCAnYXBwbHlfYXN5bmMnLCAnY2xvc2UnLCAnaW1hcCcsICdpbWFwX3Vub3JkZXJlZCcsICdqb2luJywKLSAgICAnbWFwJywgJ21hcF9hc3luYycsICd0ZXJtaW5hdGUnCisgICAgJ21hcCcsICdtYXBfYXN5bmMnLCAnc3Rhcm1hcCcsICdzdGFybWFwX2FzeW5jJywgJ3Rlcm1pbmF0ZScKICAgICApKQogUG9vbFByb3h5Ll9tZXRob2RfdG9fdHlwZWlkXyA9IHsKICAgICAnYXBwbHlfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAogICAgICdtYXBfYXN5bmMnOiAnQXN5bmNSZXN1bHQnLAorICAgICdzdGFybWFwX2FzeW5jJzogJ0FzeW5jUmVzdWx0JywKICAgICAnaW1hcCc6ICdJdGVyYXRvcicsCiAgICAgJ2ltYXBfdW5vcmRlcmVkJzogJ0l0ZXJhdG9yJwogICAgIH0KQEAgLTExMDMsNiArMTEwNyw3IEBACiBTeW5jTWFuYWdlci5yZWdpc3RlcignQm91bmRlZFNlbWFwaG9yZScsIHRocmVhZGluZy5Cb3VuZGVkU2VtYXBob3JlLAogICAgICAgICAgICAgICAgICAgICAgQWNxdWlyZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdDb25kaXRpb24nLCB0aHJlYWRpbmcuQ29uZGl0aW9uLCBDb25kaXRpb25Qcm94eSkKK1N5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdCYXJyaWVyJywgdGhyZWFkaW5nLkJhcnJpZXIsIEJhcnJpZXJQcm94eSkKIFN5bmNNYW5hZ2VyLnJlZ2lzdGVyKCdQb29sJywgUG9vbCwgUG9vbFByb3h5KQogU3luY01hbmFnZXIucmVnaXN0ZXIoJ2xpc3QnLCBsaXN0LCBMaXN0UHJveHkpCiBTeW5jTWFuYWdlci5yZWdpc3RlcignZGljdCcsIGRpY3QsIERpY3RQcm94eSkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQppbmRleCA3NTAyZmY4Li5lYzU3OTM5IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQb29sJ10KQEAgLTY0LDYgKzM5LDkgQEAKIGRlZiBtYXBzdGFyKGFyZ3MpOgogICAgIHJldHVybiBsaXN0KG1hcCgqYXJncykpCiAKK2RlZiBzdGFybWFwc3RhcihhcmdzKToKKyAgICByZXR1cm4gbGlzdChpdGVydG9vbHMuc3Rhcm1hcChhcmdzWzBdLCBhcmdzWzFdKSkKKwogIwogIyBDb2RlIHJ1biBieSB3b3JrZXIgcHJvY2Vzc2VzCiAjCkBAIC0yNDcsMTQgKzIyNSwzMCBAQAogICAgICAgICBBcHBseSBgZnVuY2AgdG8gZWFjaCBlbGVtZW50IGluIGBpdGVyYWJsZWAsIGNvbGxlY3RpbmcgdGhlIHJlc3VsdHMKICAgICAgICAgaW4gYSBsaXN0IHRoYXQgaXMgcmV0dXJuZWQuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCi0gICAgICAgIHJldHVybiBzZWxmLm1hcF9hc3luYyhmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplKS5nZXQoKQorICAgICAgICByZXR1cm4gc2VsZi5fbWFwX2FzeW5jKGZ1bmMsIGl0ZXJhYmxlLCBtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcChzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUpOgorICAgICAgICAnJycKKyAgICAgICAgTGlrZSBgbWFwKClgIG1ldGhvZCBidXQgdGhlIGVsZW1lbnRzIG9mIHRoZSBgaXRlcmFibGVgIGFyZSBleHBlY3RlZCB0bworICAgICAgICBiZSBpdGVyYWJsZXMgYXMgd2VsbCBhbmQgd2lsbCBiZSB1bnBhY2tlZCBhcyBhcmd1bWVudHMuIEhlbmNlCisgICAgICAgIGBmdW5jYCBhbmQgKGEsIGIpIGJlY29tZXMgZnVuYyhhLCBiKS4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUpLmdldCgpCisKKyAgICBkZWYgc3Rhcm1hcF9hc3luYyhzZWxmLCBmdW5jLCBpdGVyYWJsZSwgY2h1bmtzaXplPU5vbmUsIGNhbGxiYWNrPU5vbmUsCisgICAgICAgICAgICBlcnJvcl9jYWxsYmFjaz1Ob25lKToKKyAgICAgICAgJycnCisgICAgICAgIEFzeW5jaHJvbm91cyB2ZXJzaW9uIG9mIGBzdGFybWFwKClgIG1ldGhvZC4KKyAgICAgICAgJycnCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIHN0YXJtYXBzdGFyLCBjaHVua3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssIGVycm9yX2NhbGxiYWNrKQogCiAgICAgZGVmIGltYXAoc2VsZiwgZnVuYywgaXRlcmFibGUsIGNodW5rc2l6ZT0xKToKICAgICAgICAgJycnCiAgICAgICAgIEVxdWl2YWxlbnQgb2YgYG1hcCgpYCAtLSBjYW4gYmUgTVVDSCBzbG93ZXIgdGhhbiBgUG9vbC5tYXAoKWAuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgIHJlc3VsdCA9IElNYXBJdGVyYXRvcihzZWxmLl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQpAQCAtMjcyLDcgKzI2Niw4IEBACiAgICAgICAgICcnJwogICAgICAgICBMaWtlIGBpbWFwKClgIG1ldGhvZCBidXQgb3JkZXJpbmcgb2YgcmVzdWx0cyBpcyBhcmJpdHJhcnkuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIGlmIHNlbGYuX3N0YXRlICE9IFJVTjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlBvb2wgbm90IHJ1bm5pbmciKQogICAgICAgICBpZiBjaHVua3NpemUgPT0gMToKICAgICAgICAgICAgIHJlc3VsdCA9IElNYXBVbm9yZGVyZWRJdGVyYXRvcihzZWxmLl9jYWNoZSkKICAgICAgICAgICAgIHNlbGYuX3Rhc2txdWV1ZS5wdXQoKCgocmVzdWx0Ll9qb2IsIGksIGZ1bmMsICh4LCksIHt9KQpAQCAtMjkxLDcgKzI4Niw4IEBACiAgICAgICAgICcnJwogICAgICAgICBBc3luY2hyb25vdXMgdmVyc2lvbiBvZiBgYXBwbHkoKWAgbWV0aG9kLgogICAgICAgICAnJycKLSAgICAgICAgYXNzZXJ0IHNlbGYuX3N0YXRlID09IFJVTgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSBSVU46CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJQb29sIG5vdCBydW5uaW5nIikKICAgICAgICAgcmVzdWx0ID0gQXBwbHlSZXN1bHQoc2VsZi5fY2FjaGUsIGNhbGxiYWNrLCBlcnJvcl9jYWxsYmFjaykKICAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoWyhyZXN1bHQuX2pvYiwgTm9uZSwgZnVuYywgYXJncywga3dkcyldLCBOb25lKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdApAQCAtMzAxLDcgKzI5NywxNSBAQAogICAgICAgICAnJycKICAgICAgICAgQXN5bmNocm9ub3VzIHZlcnNpb24gb2YgYG1hcCgpYCBtZXRob2QuCiAgICAgICAgICcnJwotICAgICAgICBhc3NlcnQgc2VsZi5fc3RhdGUgPT0gUlVOCisgICAgICAgIHJldHVybiBzZWxmLl9tYXBfYXN5bmMoZnVuYywgaXRlcmFibGUsIG1hcHN0YXIsIGNodW5rc2l6ZSkKKworICAgIGRlZiBfbWFwX2FzeW5jKHNlbGYsIGZ1bmMsIGl0ZXJhYmxlLCBtYXBwZXIsIGNodW5rc2l6ZT1Ob25lLCBjYWxsYmFjaz1Ob25lLAorICAgICAgICAgICAgZXJyb3JfY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICcnJworICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gaW1wbGVtZW50IG1hcCwgc3Rhcm1hcCBhbmQgdGhlaXIgYXN5bmMgY291bnRlcnBhcnRzLgorICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gUlVOOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUG9vbCBub3QgcnVubmluZyIpCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGl0ZXJhYmxlLCAnX19sZW5fXycpOgogICAgICAgICAgICAgaXRlcmFibGUgPSBsaXN0KGl0ZXJhYmxlKQogCkBAIC0zMTUsNyArMzE5LDcgQEAKICAgICAgICAgdGFza19iYXRjaGVzID0gUG9vbC5fZ2V0X3Rhc2tzKGZ1bmMsIGl0ZXJhYmxlLCBjaHVua3NpemUpCiAgICAgICAgIHJlc3VsdCA9IE1hcFJlc3VsdChzZWxmLl9jYWNoZSwgY2h1bmtzaXplLCBsZW4oaXRlcmFibGUpLCBjYWxsYmFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NhbGxiYWNrPWVycm9yX2NhbGxiYWNrKQotICAgICAgICBzZWxmLl90YXNrcXVldWUucHV0KCgoKHJlc3VsdC5fam9iLCBpLCBtYXBzdGFyLCAoeCwpLCB7fSkKKyAgICAgICAgc2VsZi5fdGFza3F1ZXVlLnB1dCgoKChyZXN1bHQuX2pvYiwgaSwgbWFwcGVyLCAoeCwpLCB7fSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBpLCB4IGluIGVudW1lcmF0ZSh0YXNrX2JhdGNoZXMpKSwgTm9uZSkpCiAgICAgICAgIHJldHVybiByZXN1bHQKIApAQCAtNTE5LDYgKzUyMywxMiBAQAogICAgICAgICAgICAgICAgICAgICBkZWJ1ZygnY2xlYW5pbmcgdXAgd29ya2VyICVkJyAlIHAucGlkKQogICAgICAgICAgICAgICAgICAgICBwLmpvaW4oKQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbCwgZXhjX3RiKToKKyAgICAgICAgc2VsZi50ZXJtaW5hdGUoKQorCiAjCiAjIENsYXNzIHdob3NlIGluc3RhbmNlcyBhcmUgcmV0dXJuZWQgYnkgYFBvb2wuYXBwbHlfYXN5bmMoKWAKICMKQEAgLTUyNiwzMiArNTM2LDI2IEBACiBjbGFzcyBBcHBseVJlc3VsdChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhY2hlLCBjYWxsYmFjaywgZXJyb3JfY2FsbGJhY2spOgotICAgICAgICBzZWxmLl9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbih0aHJlYWRpbmcuTG9jaygpKQorICAgICAgICBzZWxmLl9ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuX2pvYiA9IG5leHQoam9iX2NvdW50ZXIpCiAgICAgICAgIHNlbGYuX2NhY2hlID0gY2FjaGUKLSAgICAgICAgc2VsZi5fcmVhZHkgPSBGYWxzZQogICAgICAgICBzZWxmLl9jYWxsYmFjayA9IGNhbGxiYWNrCiAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrID0gZXJyb3JfY2FsbGJhY2sKICAgICAgICAgY2FjaGVbc2VsZi5fam9iXSA9IHNlbGYKIAogICAgIGRlZiByZWFkeShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWR5CisgICAgICAgIHJldHVybiBzZWxmLl9ldmVudC5pc19zZXQoKQogCiAgICAgZGVmIHN1Y2Nlc3NmdWwoc2VsZik6Ci0gICAgICAgIGFzc2VydCBzZWxmLl9yZWFkeQorICAgICAgICBhc3NlcnQgc2VsZi5yZWFkeSgpCiAgICAgICAgIHJldHVybiBzZWxmLl9zdWNjZXNzCiAKICAgICBkZWYgd2FpdChzZWxmLCB0aW1lb3V0PU5vbmUpOgotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC53YWl0KHRpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICBzZWxmLl9ldmVudC53YWl0KHRpbWVvdXQpCiAKICAgICBkZWYgZ2V0KHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYud2FpdCh0aW1lb3V0KQotICAgICAgICBpZiBub3Qgc2VsZi5fcmVhZHk6CisgICAgICAgIGlmIG5vdCBzZWxmLnJlYWR5KCk6CiAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXJyb3IKICAgICAgICAgaWYgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQpAQCAtNTY0LDEyICs1NjgsNyBAQAogICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2soc2VsZi5fdmFsdWUpCiAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrIGFuZCBub3Qgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQotICAgICAgICBzZWxmLl9jb25kLmFjcXVpcmUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2NvbmQubm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAKICMKQEAgLTU4Niw3ICs1ODUsNyBAQAogICAgICAgICBzZWxmLl9jaHVua3NpemUgPSBjaHVua3NpemUKICAgICAgICAgaWYgY2h1bmtzaXplIDw9IDA6CiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IDAKLSAgICAgICAgICAgIHNlbGYuX3JlYWR5ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgICAgIGRlbCBjYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IGxlbmd0aC8vY2h1bmtzaXplICsgYm9vbChsZW5ndGggJSBjaHVua3NpemUpCkBAIC02MDAsMjQgKzU5OSwxNCBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQotICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkeSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbmQucmVsZWFzZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgogICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgICAgIHNlbGYuX2NvbmQuYWNxdWlyZSgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZHkgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKIAogIwogIyBDbGFzcyB3aG9zZSBpbnN0YW5jZXMgYXJlIHJldHVybmVkIGJ5IGBQb29sLmltYXAoKWAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQppbmRleCAzMjYyYjUwLi44OTM1MDdiIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKICMKICMgQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyawotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIGF1dGhvciBub3IgdGhlIG5hbWVzIG9mIGFueSBjb250cmlidXRvcnMgbWF5IGJlCi0jICAgIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0jICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKLSMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKLSMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCi0jIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCi0jIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKLSMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgotIyBTVUNIIERBTUFHRS4KKyMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCiBfX2FsbF9fID0gWydQcm9jZXNzJywgJ2N1cnJlbnRfcHJvY2VzcycsICdhY3RpdmVfY2hpbGRyZW4nXQpAQCAtOTIsMTIgKzY3LDE2IEBACiAgICAgJycnCiAgICAgX1BvcGVuID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsIGFyZ3M9KCksIGt3YXJncz17fSwKKyAgICAgICAgICAgICAgICAgKiwgZGFlbW9uPU5vbmUpOgogICAgICAgICBhc3NlcnQgZ3JvdXAgaXMgTm9uZSwgJ2dyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93JwogICAgICAgICBjb3VudCA9IG5leHQoX2N1cnJlbnRfcHJvY2Vzcy5fY291bnRlcikKICAgICAgICAgc2VsZi5faWRlbnRpdHkgPSBfY3VycmVudF9wcm9jZXNzLl9pZGVudGl0eSArIChjb3VudCwpCiAgICAgICAgIHNlbGYuX2F1dGhrZXkgPSBfY3VycmVudF9wcm9jZXNzLl9hdXRoa2V5Ci0gICAgICAgIHNlbGYuX2RhZW1vbmljID0gX2N1cnJlbnRfcHJvY2Vzcy5fZGFlbW9uaWMKKyAgICAgICAgaWYgZGFlbW9uIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fZGFlbW9uaWMgPSBkYWVtb24KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gX2N1cnJlbnRfcHJvY2Vzcy5fZGFlbW9uaWMKICAgICAgICAgc2VsZi5fdGVtcGRpciA9IF9jdXJyZW50X3Byb2Nlc3MuX3RlbXBkaXIKICAgICAgICAgc2VsZi5fcGFyZW50X3BpZCA9IG9zLmdldHBpZCgpCiAgICAgICAgIHNlbGYuX3BvcGVuID0gTm9uZQpAQCAtMTMwLDYgKzEwOSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBmcm9tIC5mb3JraW5nIGltcG9ydCBQb3BlbgogICAgICAgICBzZWxmLl9wb3BlbiA9IFBvcGVuKHNlbGYpCisgICAgICAgIHNlbGYuX3NlbnRpbmVsID0gc2VsZi5fcG9wZW4uc2VudGluZWwKICAgICAgICAgX2N1cnJlbnRfcHJvY2Vzcy5fY2hpbGRyZW4uYWRkKHNlbGYpCiAKICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgpAQCAtMjE2LDYgKzE5NiwxNyBAQAogCiAgICAgcGlkID0gaWRlbnQKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZW50aW5lbChzZWxmKToKKyAgICAgICAgJycnCisgICAgICAgIFJldHVybiBhIGZpbGUgZGVzY3JpcHRvciAoVW5peCkgb3IgaGFuZGxlIChXaW5kb3dzKSBzdWl0YWJsZSBmb3IKKyAgICAgICAgd2FpdGluZyBmb3IgcHJvY2VzcyB0ZXJtaW5hdGlvbi4KKyAgICAgICAgJycnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9zZW50aW5lbAorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9jZXNzIG5vdCBzdGFydGVkIikKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZiBpcyBfY3VycmVudF9wcm9jZXNzOgogICAgICAgICAgICAgc3RhdHVzID0gJ3N0YXJ0ZWQnCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IDUxZDk5MTIuLjM3MjcxZmIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKIF9fYWxsX18gPSBbJ1F1ZXVlJywgJ1NpbXBsZVF1ZXVlJywgJ0pvaW5hYmxlUXVldWUnXQpAQCAtMzksMTIgKzE0LDEyIEBACiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXRleGl0CiBpbXBvcnQgd2Vha3JlZgoraW1wb3J0IGVycm5vCiAKIGZyb20gcXVldWUgaW1wb3J0IEVtcHR5LCBGdWxsCiBpbXBvcnQgX211bHRpcHJvY2Vzc2luZwotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBpcGUKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IFBpcGUKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnN5bmNocm9uaXplIGltcG9ydCBMb2NrLCBCb3VuZGVkU2VtYXBob3JlLCBTZW1hcGhvcmUsIENvbmRpdGlvbgogZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgZGVidWcsIGluZm8sIEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBhc3NlcnRfc3Bhd25pbmcKQEAgLTY3LDYgKzQyLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3dsb2NrID0gTG9jaygpCiAgICAgICAgIHNlbGYuX3NlbSA9IEJvdW5kZWRTZW1hcGhvcmUobWF4c2l6ZSkKKyAgICAgICAgIyBGb3IgdXNlIGJ5IGNvbmN1cnJlbnQuZnV0dXJlcworICAgICAgICBzZWxmLl9pZ25vcmVfZXBpcGUgPSBGYWxzZQogCiAgICAgICAgIHNlbGYuX2FmdGVyX2ZvcmsoKQogCkBAIC03NSwxMSArNTIsMTEgQEAKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQotICAgICAgICByZXR1cm4gKHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAorICAgICAgICByZXR1cm4gKHNlbGYuX2lnbm9yZV9lcGlwZSwgc2VsZi5fbWF4c2l6ZSwgc2VsZi5fcmVhZGVyLCBzZWxmLl93cml0ZXIsCiAgICAgICAgICAgICAgICAgc2VsZi5fcmxvY2ssIHNlbGYuX3dsb2NrLCBzZWxmLl9zZW0sIHNlbGYuX29waWQpCiAKICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKLSAgICAgICAgKHNlbGYuX21heHNpemUsIHNlbGYuX3JlYWRlciwgc2VsZi5fd3JpdGVyLAorICAgICAgICAoc2VsZi5faWdub3JlX2VwaXBlLCBzZWxmLl9tYXhzaXplLCBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciwKICAgICAgICAgIHNlbGYuX3Jsb2NrLCBzZWxmLl93bG9jaywgc2VsZi5fc2VtLCBzZWxmLl9vcGlkKSA9IHN0YXRlCiAgICAgICAgIHNlbGYuX2FmdGVyX2ZvcmsoKQogCkBAIC0xODIsNyArMTU5LDcgQEAKICAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCgKICAgICAgICAgICAgIHRhcmdldD1RdWV1ZS5fZmVlZCwKICAgICAgICAgICAgIGFyZ3M9KHNlbGYuX2J1ZmZlciwgc2VsZi5fbm90ZW1wdHksIHNlbGYuX3NlbmQsCi0gICAgICAgICAgICAgICAgICBzZWxmLl93bG9jaywgc2VsZi5fd3JpdGVyLmNsb3NlKSwKKyAgICAgICAgICAgICAgICAgIHNlbGYuX3dsb2NrLCBzZWxmLl93cml0ZXIuY2xvc2UsIHNlbGYuX2lnbm9yZV9lcGlwZSksCiAgICAgICAgICAgICBuYW1lPSdRdWV1ZUZlZWRlclRocmVhZCcKICAgICAgICAgICAgICkKICAgICAgICAgc2VsZi5fdGhyZWFkLmRhZW1vbiA9IFRydWUKQEAgLTIzMyw3ICsyMTAsNyBAQAogICAgICAgICAgICAgbm90ZW1wdHkucmVsZWFzZSgpCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9mZWVkKGJ1ZmZlciwgbm90ZW1wdHksIHNlbmQsIHdyaXRlbG9jaywgY2xvc2UpOgorICAgIGRlZiBfZmVlZChidWZmZXIsIG5vdGVtcHR5LCBzZW5kLCB3cml0ZWxvY2ssIGNsb3NlLCBpZ25vcmVfZXBpcGUpOgogICAgICAgICBkZWJ1Zygnc3RhcnRpbmcgdGhyZWFkIHRvIGZlZWQgZGF0YSB0byBwaXBlJykKICAgICAgICAgZnJvbSAudXRpbCBpbXBvcnQgaXNfZXhpdGluZwogCkBAIC0yNzUsNiArMjUyLDggQEAKICAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBpZiBpZ25vcmVfZXBpcGUgYW5kIGdldGF0dHIoZSwgJ2Vycm5vJywgMCkgPT0gZXJybm8uRVBJUEU6CisgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIFNpbmNlIHRoaXMgcnVucyBpbiBhIGRhZW1vbiB0aHJlYWQgdGhlIHJlc291cmNlcyBpdCB1c2VzCiAgICAgICAgICAgICAjIG1heSBiZSBiZWNvbWUgdW51c2FibGUgd2hpbGUgdGhlIHByb2Nlc3MgaXMgY2xlYW5pbmcgdXAuCiAgICAgICAgICAgICAjIFdlIGlnbm9yZSBlcnJvcnMgd2hpY2ggaGFwcGVuIGFmdGVyIHRoZSBwcm9jZXNzIGhhcwpAQCAtMzU2LDYgKzMzNSw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9yZWFkZXIsIHNlbGYuX3dyaXRlciA9IFBpcGUoZHVwbGV4PUZhbHNlKQogICAgICAgICBzZWxmLl9ybG9jayA9IExvY2soKQorICAgICAgICBzZWxmLl9wb2xsID0gc2VsZi5fcmVhZGVyLnBvbGwKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICBzZWxmLl93bG9jayA9IE5vbmUKICAgICAgICAgZWxzZToKQEAgLTM2Myw3ICszNDMsNyBAQAogICAgICAgICBzZWxmLl9tYWtlX21ldGhvZHMoKQogCiAgICAgZGVmIGVtcHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuX3JlYWRlci5wb2xsKCkKKyAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9wb2xsKCkKIAogICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6CiAgICAgICAgIGFzc2VydF9zcGF3bmluZyhzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQppbmRleCA2ZTVlNWJjLi42NTZmYThmIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQpAQCAtNSw1MyArNSwyOSBAQAogIyBtdWx0aXByb2Nlc3NpbmcvcmVkdWN0aW9uLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotX19hbGxfXyA9IFtdCitfX2FsbF9fID0gWydyZWR1Y2Vfc29ja2V0JywgJ3JlZHVjZV9jb25uZWN0aW9uJywgJ3NlbmRfaGFuZGxlJywgJ3JlY3ZfaGFuZGxlJ10KIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgc3RydWN0CitpbXBvcnQgc2lnbmFsCiAKLWltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgY3VycmVudF9wcm9jZXNzCi1mcm9tIG11bHRpcHJvY2Vzc2luZy5mb3JraW5nIGltcG9ydCBQb3BlbiwgZHVwbGljYXRlLCBjbG9zZSwgRm9ya2luZ1BpY2tsZXIKIGZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IHJlZ2lzdGVyX2FmdGVyX2ZvcmssIGRlYnVnLCBzdWJfZGVidWcKLWZyb20gbXVsdGlwcm9jZXNzaW5nLmNvbm5lY3Rpb24gaW1wb3J0IENsaWVudCwgTGlzdGVuZXIKK2Zyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IGlzX2V4aXRpbmcsIHN1Yl93YXJuaW5nCiAKIAogIwogIwogIwogCi1pZiBub3Qoc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IgaGFzYXR0cihfbXVsdGlwcm9jZXNzaW5nLCAncmVjdmZkJykpOgoraWYgbm90KHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInIG9yIChoYXNhdHRyKHNvY2tldCwgJ0NNU0dfTEVOJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoc29ja2V0LCAnU0NNX1JJR0hUUycpKSk6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3BpY2tsaW5nIG9mIGNvbm5lY3Rpb25zIG5vdCBzdXBwb3J0ZWQnKQogCiAjCkBAIC01OSwxNTcgKzM1LDI0NiBAQAogIwogCiBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICBpbXBvcnQgX3N1YnByb2Nlc3MKLSAgICBmcm9tIF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IHdpbjMyCisgICAgIyBXaW5kb3dzCisgICAgX19hbGxfXyArPSBbJ3JlZHVjZV9waXBlX2Nvbm5lY3Rpb24nXQorICAgIGltcG9ydCBfd2luYXBpCiAKICAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgotICAgICAgICBwcm9jZXNzX2hhbmRsZSA9IHdpbjMyLk9wZW5Qcm9jZXNzKAotICAgICAgICAgICAgd2luMzIuUFJPQ0VTU19BTExfQUNDRVNTLCBGYWxzZSwgZGVzdGluYXRpb25fcGlkCi0gICAgICAgICAgICApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5ld19oYW5kbGUgPSBkdXBsaWNhdGUoaGFuZGxlLCBwcm9jZXNzX2hhbmRsZSkKLSAgICAgICAgICAgIGNvbm4uc2VuZChuZXdfaGFuZGxlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2xvc2UocHJvY2Vzc19oYW5kbGUpCisgICAgICAgIGRoID0gRHVwSGFuZGxlKGhhbmRsZSwgX3dpbmFwaS5EVVBMSUNBVEVfU0FNRV9BQ0NFU1MsIGRlc3RpbmF0aW9uX3BpZCkKKyAgICAgICAgY29ubi5zZW5kKGRoKQogCiAgICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgotICAgICAgICByZXR1cm4gY29ubi5yZWN2KCkKKyAgICAgICAgcmV0dXJuIGNvbm4ucmVjdigpLmRldGFjaCgpCiAKLWVsc2U6Ci0gICAgZGVmIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZSwgZGVzdGluYXRpb25fcGlkKToKLSAgICAgICAgX211bHRpcHJvY2Vzc2luZy5zZW5kZmQoY29ubi5maWxlbm8oKSwgaGFuZGxlKQorICAgIGNsYXNzIER1cEhhbmRsZShvYmplY3QpOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlLCBhY2Nlc3MsIHBpZD1Ob25lKToKKyAgICAgICAgICAgICMgZHVwbGljYXRlIGhhbmRsZSBmb3IgcHJvY2VzcyB3aXRoIGdpdmVuIHBpZAorICAgICAgICAgICAgaWYgcGlkIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgICAgIHByb2MgPSBfd2luYXBpLk9wZW5Qcm9jZXNzKF93aW5hcGkuUFJPQ0VTU19EVVBfSEFORExFLCBGYWxzZSwgcGlkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkdldEN1cnJlbnRQcm9jZXNzKCksCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgcHJvYywgYWNjZXNzLCBGYWxzZSwgMCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShwcm9jKQorICAgICAgICAgICAgc2VsZi5fYWNjZXNzID0gYWNjZXNzCisgICAgICAgICAgICBzZWxmLl9waWQgPSBwaWQKIAotICAgIGRlZiByZWN2X2hhbmRsZShjb25uKToKLSAgICAgICAgcmV0dXJuIF9tdWx0aXByb2Nlc3NpbmcucmVjdmZkKGNvbm4uZmlsZW5vKCkpCisgICAgICAgIGRlZiBkZXRhY2goc2VsZik6CisgICAgICAgICAgICAjIHJldHJpZXZlIGhhbmRsZSBmcm9tIHByb2Nlc3Mgd2hpY2ggY3VycmVudGx5IG93bnMgaXQKKyAgICAgICAgICAgIGlmIHNlbGYuX3BpZCA9PSBvcy5nZXRwaWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlCisgICAgICAgICAgICBwcm9jID0gX3dpbmFwaS5PcGVuUHJvY2Vzcyhfd2luYXBpLlBST0NFU1NfRFVQX0hBTkRMRSwgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9waWQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgICAgICBwcm9jLCBzZWxmLl9oYW5kbGUsIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWNjZXNzLCBGYWxzZSwgX3dpbmFwaS5EVVBMSUNBVEVfQ0xPU0VfU09VUkNFKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKHByb2MpCiAKLSMKLSMgU3VwcG9ydCBmb3IgYSBwZXItcHJvY2VzcyBzZXJ2ZXIgdGhyZWFkIHdoaWNoIGNhY2hlcyBwaWNrbGVkIGhhbmRsZXMKLSMKKyAgICBjbGFzcyBEdXBTb2NrZXQob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2spOgorICAgICAgICAgICAgbmV3X3NvY2sgPSBzb2NrLmR1cCgpCisgICAgICAgICAgICBkZWYgc2VuZChjb25uLCBwaWQpOgorICAgICAgICAgICAgICAgIHNoYXJlID0gbmV3X3NvY2suc2hhcmUocGlkKQorICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhzaGFyZSkKKyAgICAgICAgICAgIHNlbGYuX2lkID0gcmVzb3VyY2Vfc2hhcmVyLnJlZ2lzdGVyKHNlbmQsIG5ld19zb2NrLmNsb3NlKQogCi1fY2FjaGUgPSBzZXQoKQorICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgY29ubiA9IHJlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaGFyZSA9IGNvbm4ucmVjdl9ieXRlcygpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5mcm9tc2hhcmUoc2hhcmUpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQogCi1kZWYgX3Jlc2V0KG9iaik6Ci0gICAgZ2xvYmFsIF9sb2NrLCBfbGlzdGVuZXIsIF9jYWNoZQotICAgIGZvciBoIGluIF9jYWNoZToKLSAgICAgICAgY2xvc2UoaCkKLSAgICBfY2FjaGUuY2xlYXIoKQotICAgIF9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQotICAgIF9saXN0ZW5lciA9IE5vbmUKKyAgICBkZWYgcmVkdWNlX3NvY2tldChzKToKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfc29ja2V0LCAoRHVwU29ja2V0KHMpLCkKIAotX3Jlc2V0KE5vbmUpCi1yZWdpc3Rlcl9hZnRlcl9mb3JrKF9yZXNldCwgX3Jlc2V0KQorICAgIGRlZiByZWJ1aWxkX3NvY2tldChkcyk6CisgICAgICAgIHJldHVybiBkcy5kZXRhY2goKQogCi1kZWYgX2dldF9saXN0ZW5lcigpOgotICAgIGdsb2JhbCBfbGlzdGVuZXIKKyAgICBkZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6CisgICAgICAgIGhhbmRsZSA9IGNvbm4uZmlsZW5vKCkKKyAgICAgICAgd2l0aCBzb2NrZXQuZnJvbWZkKGhhbmRsZSwgc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIGRzID0gRHVwU29ja2V0KHMpCisgICAgICAgICAgICByZXR1cm4gcmVidWlsZF9jb25uZWN0aW9uLCAoZHMsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAKLSAgICBpZiBfbGlzdGVuZXIgaXMgTm9uZToKLSAgICAgICAgX2xvY2suYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIF9saXN0ZW5lciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGRlYnVnKCdzdGFydGluZyBsaXN0ZW5lciBhbmQgdGhyZWFkIGZvciBzZW5kaW5nIGhhbmRsZXMnKQotICAgICAgICAgICAgICAgIF9saXN0ZW5lciA9IExpc3RlbmVyKGF1dGhrZXk9Y3VycmVudF9wcm9jZXNzKCkuYXV0aGtleSkKLSAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X3NlcnZlKQotICAgICAgICAgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgX2xvY2sucmVsZWFzZSgpCi0KLSAgICByZXR1cm4gX2xpc3RlbmVyCi0KLWRlZiBfc2VydmUoKToKLSAgICBmcm9tIC51dGlsIGltcG9ydCBpc19leGl0aW5nLCBzdWJfd2FybmluZwotCi0gICAgd2hpbGUgMToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29ubiA9IF9saXN0ZW5lci5hY2NlcHQoKQotICAgICAgICAgICAgaGFuZGxlX3dhbnRlZCwgZGVzdGluYXRpb25fcGlkID0gY29ubi5yZWN2KCkKLSAgICAgICAgICAgIF9jYWNoZS5yZW1vdmUoaGFuZGxlX3dhbnRlZCkKLSAgICAgICAgICAgIHNlbmRfaGFuZGxlKGNvbm4sIGhhbmRsZV93YW50ZWQsIGRlc3RpbmF0aW9uX3BpZCkKLSAgICAgICAgICAgIGNsb3NlKGhhbmRsZV93YW50ZWQpCi0gICAgICAgICAgICBjb25uLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgaWYgbm90IGlzX2V4aXRpbmcoKToKLSAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCi0gICAgICAgICAgICAgICAgc3ViX3dhcm5pbmcoCi0gICAgICAgICAgICAgICAgICAgICd0aHJlYWQgZm9yIHNoYXJpbmcgaGFuZGxlcyByYWlzZWQgZXhjZXB0aW9uIDpcbicgKwotICAgICAgICAgICAgICAgICAgICAnLScqNzkgKyAnXG4nICsgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSArICctJyo3OQotICAgICAgICAgICAgICAgICAgICApCi0KLSMKLSMgRnVuY3Rpb25zIHRvIGJlIHVzZWQgZm9yIHBpY2tsaW5nL3VucGlja2xpbmcgb2JqZWN0cyB3aXRoIGhhbmRsZXMKLSMKLQotZGVmIHJlZHVjZV9oYW5kbGUoaGFuZGxlKToKLSAgICBpZiBQb3Blbi50aHJlYWRfaXNfc3Bhd25pbmcoKToKLSAgICAgICAgcmV0dXJuIChOb25lLCBQb3Blbi5kdXBsaWNhdGVfZm9yX2NoaWxkKGhhbmRsZSksIFRydWUpCi0gICAgZHVwX2hhbmRsZSA9IGR1cGxpY2F0ZShoYW5kbGUpCi0gICAgX2NhY2hlLmFkZChkdXBfaGFuZGxlKQotICAgIHN1Yl9kZWJ1ZygncmVkdWNpbmcgaGFuZGxlICVkJywgaGFuZGxlKQotICAgIHJldHVybiAoX2dldF9saXN0ZW5lcigpLmFkZHJlc3MsIGR1cF9oYW5kbGUsIEZhbHNlKQotCi1kZWYgcmVidWlsZF9oYW5kbGUocGlja2xlZF9kYXRhKToKLSAgICBhZGRyZXNzLCBoYW5kbGUsIGluaGVyaXRlZCA9IHBpY2tsZWRfZGF0YQotICAgIGlmIGluaGVyaXRlZDoKLSAgICAgICAgcmV0dXJuIGhhbmRsZQotICAgIHN1Yl9kZWJ1ZygncmVidWlsZGluZyBoYW5kbGUgJWQnLCBoYW5kbGUpCi0gICAgY29ubiA9IENsaWVudChhZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCi0gICAgY29ubi5zZW5kKChoYW5kbGUsIG9zLmdldHBpZCgpKSkKLSAgICBuZXdfaGFuZGxlID0gcmVjdl9oYW5kbGUoY29ubikKLSAgICBjb25uLmNsb3NlKCkKLSAgICByZXR1cm4gbmV3X2hhbmRsZQotCi0jCi0jIFJlZ2lzdGVyIGBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1kZWYgcmVkdWNlX2Nvbm5lY3Rpb24oY29ubik6Ci0gICAgcmggPSByZWR1Y2VfaGFuZGxlKGNvbm4uZmlsZW5vKCkpCi0gICAgcmV0dXJuIHJlYnVpbGRfY29ubmVjdGlvbiwgKHJoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQotCi1kZWYgcmVidWlsZF9jb25uZWN0aW9uKHJlZHVjZWRfaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpOgotICAgIGhhbmRsZSA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgIHJldHVybiBfbXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24oCi0gICAgICAgIGhhbmRsZSwgcmVhZGFibGU9cmVhZGFibGUsIHdyaXRhYmxlPXdyaXRhYmxlCi0gICAgICAgICkKLQotRm9ya2luZ1BpY2tsZXIucmVnaXN0ZXIoX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uLCByZWR1Y2VfY29ubmVjdGlvbikKLQotIwotIyBSZWdpc3RlciBgc29ja2V0LnNvY2tldGAgd2l0aCBgRm9ya2luZ1BpY2tsZXJgCi0jCi0KLWRlZiBmcm9tZmQoZmQsIGZhbWlseSwgdHlwZV8sIHByb3RvPTApOgotICAgIHMgPSBzb2NrZXQuZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVfLCBwcm90bykKLSAgICBpZiBzLl9fY2xhc3NfXyBpcyBub3Qgc29ja2V0LnNvY2tldDoKLSAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoX3NvY2s9cykKLSAgICByZXR1cm4gcwotCi1kZWYgcmVkdWNlX3NvY2tldChzKToKLSAgICByZWR1Y2VkX2hhbmRsZSA9IHJlZHVjZV9oYW5kbGUocy5maWxlbm8oKSkKLSAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChyZWR1Y2VkX2hhbmRsZSwgcy5mYW1pbHksIHMudHlwZSwgcy5wcm90bykKLQotZGVmIHJlYnVpbGRfc29ja2V0KHJlZHVjZWRfaGFuZGxlLCBmYW1pbHksIHR5cGVfLCBwcm90byk6Ci0gICAgZmQgPSByZWJ1aWxkX2hhbmRsZShyZWR1Y2VkX2hhbmRsZSkKLSAgICBfc29jayA9IGZyb21mZChmZCwgZmFtaWx5LCB0eXBlXywgcHJvdG8pCi0gICAgY2xvc2UoZmQpCi0gICAgcmV0dXJuIF9zb2NrCi0KLUZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHNvY2tldC5zb2NrZXQsIHJlZHVjZV9zb2NrZXQpCi0KLSMKLSMgUmVnaXN0ZXIgYF9tdWx0aXByb2Nlc3NpbmcuUGlwZUNvbm5lY3Rpb25gIHdpdGggYEZvcmtpbmdQaWNrbGVyYAotIwotCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICBkZWYgcmVidWlsZF9jb25uZWN0aW9uKGRzLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBDb25uZWN0aW9uCisgICAgICAgIHNvY2sgPSBkcy5kZXRhY2goKQorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihzb2NrLmRldGFjaCgpLCByZWFkYWJsZSwgd3JpdGFibGUpCiAKICAgICBkZWYgcmVkdWNlX3BpcGVfY29ubmVjdGlvbihjb25uKToKLSAgICAgICAgcmggPSByZWR1Y2VfaGFuZGxlKGNvbm4uZmlsZW5vKCkpCi0gICAgICAgIHJldHVybiByZWJ1aWxkX3BpcGVfY29ubmVjdGlvbiwgKHJoLCBjb25uLnJlYWRhYmxlLCBjb25uLndyaXRhYmxlKQorICAgICAgICBhY2Nlc3MgPSAoKF93aW5hcGkuRklMRV9HRU5FUklDX1JFQUQgaWYgY29ubi5yZWFkYWJsZSBlbHNlIDApIHwKKyAgICAgICAgICAgICAgICAgIChfd2luYXBpLkZJTEVfR0VORVJJQ19XUklURSBpZiBjb25uLndyaXRhYmxlIGVsc2UgMCkpCisgICAgICAgIGRoID0gRHVwSGFuZGxlKGNvbm4uZmlsZW5vKCksIGFjY2VzcykKKyAgICAgICAgcmV0dXJuIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uLCAoZGgsIGNvbm4ucmVhZGFibGUsIGNvbm4ud3JpdGFibGUpCiAKLSAgICBkZWYgcmVidWlsZF9waXBlX2Nvbm5lY3Rpb24ocmVkdWNlZF9oYW5kbGUsIHJlYWRhYmxlLCB3cml0YWJsZSk6Ci0gICAgICAgIGhhbmRsZSA9IHJlYnVpbGRfaGFuZGxlKHJlZHVjZWRfaGFuZGxlKQotICAgICAgICByZXR1cm4gX211bHRpcHJvY2Vzc2luZy5QaXBlQ29ubmVjdGlvbigKLSAgICAgICAgICAgIGhhbmRsZSwgcmVhZGFibGU9cmVhZGFibGUsIHdyaXRhYmxlPXdyaXRhYmxlCi0gICAgICAgICAgICApCisgICAgZGVmIHJlYnVpbGRfcGlwZV9jb25uZWN0aW9uKGRoLCByZWFkYWJsZSwgd3JpdGFibGUpOgorICAgICAgICBmcm9tIC5jb25uZWN0aW9uIGltcG9ydCBQaXBlQ29ubmVjdGlvbgorICAgICAgICBoYW5kbGUgPSBkaC5kZXRhY2goKQorICAgICAgICByZXR1cm4gUGlwZUNvbm5lY3Rpb24oaGFuZGxlLCByZWFkYWJsZSwgd3JpdGFibGUpCiAKLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3RlcihfbXVsdGlwcm9jZXNzaW5nLlBpcGVDb25uZWN0aW9uLCByZWR1Y2VfcGlwZV9jb25uZWN0aW9uKQorZWxzZToKKyAgICAjIFVuaXgKKworICAgICMgT24gTWFjT1NYIHdlIHNob3VsZCBhY2tub3dsZWRnZSByZWNlaXB0IG9mIGZkcyAtLSBzZWUgSXNzdWUxNDY2OQorICAgIEFDS05PV0xFREdFID0gc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nCisKKyAgICBkZWYgc2VuZF9oYW5kbGUoY29ubiwgaGFuZGxlLCBkZXN0aW5hdGlvbl9waWQpOgorICAgICAgICB3aXRoIHNvY2tldC5mcm9tZmQoY29ubi5maWxlbm8oKSwgc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkgYXMgczoKKyAgICAgICAgICAgIHMuc2VuZG1zZyhbYid4J10sIFsoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaygiQGkiLCBoYW5kbGUpKV0pCisgICAgICAgIGlmIEFDS05PV0xFREdFIGFuZCBjb25uLnJlY3ZfYnl0ZXMoKSAhPSBiJ0FDSyc6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ2RpZCBub3QgcmVjZWl2ZSBhY2tub3dsZWRnZW1lbnQgb2YgZmQnKQorCisgICAgZGVmIHJlY3ZfaGFuZGxlKGNvbm4pOgorICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKCJAaSIpCisgICAgICAgIHdpdGggc29ja2V0LmZyb21mZChjb25uLmZpbGVubygpLCBzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgorICAgICAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHMucmVjdm1zZygxLCBzb2NrZXQuQ01TR19MRU4oc2l6ZSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgQUNLTk9XTEVER0U6CisgICAgICAgICAgICAgICAgICAgIGNvbm4uc2VuZF9ieXRlcyhiJ0FDSycpCisgICAgICAgICAgICAgICAgY21zZ19sZXZlbCwgY21zZ190eXBlLCBjbXNnX2RhdGEgPSBhbmNkYXRhWzBdCisgICAgICAgICAgICAgICAgaWYgKGNtc2dfbGV2ZWwgPT0gc29ja2V0LlNPTF9TT0NLRVQgYW5kCisgICAgICAgICAgICAgICAgICAgIGNtc2dfdHlwZSA9PSBzb2NrZXQuU0NNX1JJR0hUUyk6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3QudW5wYWNrKCJAaSIsIGNtc2dfZGF0YVs6c2l6ZV0pWzBdCisgICAgICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEluZGV4RXJyb3IsIHN0cnVjdC5lcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdJbnZhbGlkIGRhdGEgcmVjZWl2ZWQnKQorCisgICAgY2xhc3MgRHVwRmQob2JqZWN0KToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkKToKKyAgICAgICAgICAgIG5ld19mZCA9IG9zLmR1cChmZCkKKyAgICAgICAgICAgIGRlZiBzZW5kKGNvbm4sIHBpZCk6CisgICAgICAgICAgICAgICAgc2VuZF9oYW5kbGUoY29ubiwgbmV3X2ZkLCBwaWQpCisgICAgICAgICAgICBkZWYgY2xvc2UoKToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShuZXdfZmQpCisgICAgICAgICAgICBzZWxmLl9pZCA9IHJlc291cmNlX3NoYXJlci5yZWdpc3RlcihzZW5kLCBjbG9zZSkKKworICAgICAgICBkZWYgZGV0YWNoKHNlbGYpOgorICAgICAgICAgICAgY29ubiA9IHJlc291cmNlX3NoYXJlci5nZXRfY29ubmVjdGlvbihzZWxmLl9pZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVjdl9oYW5kbGUoY29ubikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgY29ubi5jbG9zZSgpCisKKyAgICBkZWYgcmVkdWNlX3NvY2tldChzKToKKyAgICAgICAgZGYgPSBEdXBGZChzLmZpbGVubygpKQorICAgICAgICByZXR1cm4gcmVidWlsZF9zb2NrZXQsIChkZiwgcy5mYW1pbHksIHMudHlwZSwgcy5wcm90bykKKworICAgIGRlZiByZWJ1aWxkX3NvY2tldChkZiwgZmFtaWx5LCB0eXBlLCBwcm90byk6CisgICAgICAgIGZkID0gZGYuZGV0YWNoKCkKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tZmQoZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pCisgICAgICAgIG9zLmNsb3NlKGZkKQorICAgICAgICByZXR1cm4gcworCisgICAgZGVmIHJlZHVjZV9jb25uZWN0aW9uKGNvbm4pOgorICAgICAgICBkZiA9IER1cEZkKGNvbm4uZmlsZW5vKCkpCisgICAgICAgIHJldHVybiByZWJ1aWxkX2Nvbm5lY3Rpb24sIChkZiwgY29ubi5yZWFkYWJsZSwgY29ubi53cml0YWJsZSkKKworICAgIGRlZiByZWJ1aWxkX2Nvbm5lY3Rpb24oZGYsIHJlYWRhYmxlLCB3cml0YWJsZSk6CisgICAgICAgIGZyb20gLmNvbm5lY3Rpb24gaW1wb3J0IENvbm5lY3Rpb24KKyAgICAgICAgZmQgPSBkZi5kZXRhY2goKQorICAgICAgICByZXR1cm4gQ29ubmVjdGlvbihmZCwgcmVhZGFibGUsIHdyaXRhYmxlKQorCisjCisjIFNlcnZlciB3aGljaCBzaGFyZXMgcmVnaXN0ZXJlZCByZXNvdXJjZXMgd2l0aCBjbGllbnRzCisjCisKK2NsYXNzIFJlc291cmNlU2hhcmVyKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9rZXkgPSAwCisgICAgICAgIHNlbGYuX2NhY2hlID0ge30KKyAgICAgICAgc2VsZi5fb2xkX2xvY2tzID0gW10KKyAgICAgICAgc2VsZi5fbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBOb25lCisgICAgICAgIHNlbGYuX2FkZHJlc3MgPSBOb25lCisgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgcmVnaXN0ZXJfYWZ0ZXJfZm9yayhzZWxmLCBSZXNvdXJjZVNoYXJlci5fYWZ0ZXJmb3JrKQorCisgICAgZGVmIHJlZ2lzdGVyKHNlbGYsIHNlbmQsIGNsb3NlKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgaWYgc2VsZi5fYWRkcmVzcyBpcyBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKKyAgICAgICAgICAgIHNlbGYuX2tleSArPSAxCisgICAgICAgICAgICBzZWxmLl9jYWNoZVtzZWxmLl9rZXldID0gKHNlbmQsIGNsb3NlKQorICAgICAgICAgICAgcmV0dXJuIChzZWxmLl9hZGRyZXNzLCBzZWxmLl9rZXkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF9jb25uZWN0aW9uKGlkZW50KToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50CisgICAgICAgIGFkZHJlc3MsIGtleSA9IGlkZW50CisgICAgICAgIGMgPSBDbGllbnQoYWRkcmVzcywgYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICBjLnNlbmQoKGtleSwgb3MuZ2V0cGlkKCkpKQorICAgICAgICByZXR1cm4gYworCisgICAgZGVmIHN0b3Aoc2VsZiwgdGltZW91dD1Ob25lKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgQ2xpZW50CisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGlmIHNlbGYuX2FkZHJlc3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYyA9IENsaWVudChzZWxmLl9hZGRyZXNzLCBhdXRoa2V5PWN1cnJlbnRfcHJvY2VzcygpLmF1dGhrZXkpCisgICAgICAgICAgICAgICAgYy5zZW5kKE5vbmUpCisgICAgICAgICAgICAgICAgYy5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4odGltZW91dCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICAgICAgc3ViX3dhcm4oJ1Jlc291cmNlU2hhcmVyIHRocmVhZCBkaWQgbm90IHN0b3Agd2hlbiBhc2tlZCcpCisgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgICAgICBzZWxmLl9hZGRyZXNzID0gTm9uZQorICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTm9uZQorICAgICAgICAgICAgICAgIGZvciBrZXksIChzZW5kLCBjbG9zZSkgaW4gc2VsZi5fY2FjaGUuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhY2hlLmNsZWFyKCkKKworICAgIGRlZiBfYWZ0ZXJmb3JrKHNlbGYpOgorICAgICAgICBmb3Iga2V5LCAoc2VuZCwgY2xvc2UpIGluIHNlbGYuX2NhY2hlLml0ZW1zKCk6CisgICAgICAgICAgICBjbG9zZSgpCisgICAgICAgIHNlbGYuX2NhY2hlLmNsZWFyKCkKKyAgICAgICAgIyBJZiBzZWxmLl9sb2NrIHdhcyBsb2NrZWQgYXQgdGhlIHRpbWUgb2YgdGhlIGZvcmssIGl0IG1heSBiZSBicm9rZW4KKyAgICAgICAgIyAtLSBzZWUgaXNzdWUgNjcyMS4gIFJlcGxhY2UgaXQgd2l0aG91dCBsZXR0aW5nIGl0IGJlIGdjJ2VkLgorICAgICAgICBzZWxmLl9vbGRfbG9ja3MuYXBwZW5kKHNlbGYuX2xvY2spCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIGlmIHNlbGYuX2xpc3RlbmVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuY2xvc2UoKQorICAgICAgICBzZWxmLl9saXN0ZW5lciA9IE5vbmUKKyAgICAgICAgc2VsZi5fYWRkcmVzcyA9IE5vbmUKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorCisgICAgZGVmIF9zdGFydChzZWxmKToKKyAgICAgICAgZnJvbSAuY29ubmVjdGlvbiBpbXBvcnQgTGlzdGVuZXIKKyAgICAgICAgYXNzZXJ0IHNlbGYuX2xpc3RlbmVyIGlzIE5vbmUKKyAgICAgICAgZGVidWcoJ3N0YXJ0aW5nIGxpc3RlbmVyIGFuZCB0aHJlYWQgZm9yIHNlbmRpbmcgaGFuZGxlcycpCisgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gTGlzdGVuZXIoYXV0aGtleT1jdXJyZW50X3Byb2Nlc3MoKS5hdXRoa2V5KQorICAgICAgICBzZWxmLl9hZGRyZXNzID0gc2VsZi5fbGlzdGVuZXIuYWRkcmVzcworICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fc2VydmUpCisgICAgICAgIHQuZGFlbW9uID0gVHJ1ZQorICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gdAorCisgICAgZGVmIF9zZXJ2ZShzZWxmKToKKyAgICAgICAgaWYgaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX3NpZ21hc2snKToKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgcmFuZ2UoMSwgc2lnbmFsLk5TSUcpKQorICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGNvbm4gPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQorICAgICAgICAgICAgICAgIG1zZyA9IGNvbm4ucmVjdigpCisgICAgICAgICAgICAgICAgaWYgbXNnIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAga2V5LCBkZXN0aW5hdGlvbl9waWQgPSBtc2cKKyAgICAgICAgICAgICAgICBzZW5kLCBjbG9zZSA9IHNlbGYuX2NhY2hlLnBvcChrZXkpCisgICAgICAgICAgICAgICAgc2VuZChjb25uLCBkZXN0aW5hdGlvbl9waWQpCisgICAgICAgICAgICAgICAgY2xvc2UoKQorICAgICAgICAgICAgICAgIGNvbm4uY2xvc2UoKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc19leGl0aW5nKCk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKKyAgICAgICAgICAgICAgICAgICAgc3ViX3dhcm5pbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAndGhyZWFkIGZvciBzaGFyaW5nIGhhbmRsZXMgcmFpc2VkIGV4Y2VwdGlvbiA6XG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICctJyo3OSArICdcbicgKyB0cmFjZWJhY2suZm9ybWF0X2V4YygpICsgJy0nKjc5CisgICAgICAgICAgICAgICAgICAgICAgICApCisKK3Jlc291cmNlX3NoYXJlciA9IFJlc291cmNlU2hhcmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKaW5kZXggMWU2OTRkYS4uYTM1OGVkNCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9zaGFyZWRjdHlwZXMucHkKQEAgLTQsMzUgKzQsOSBAQAogIyBtdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAotaW1wb3J0IHN5cwogaW1wb3J0IGN0eXBlcwogaW1wb3J0IHdlYWtyZWYKIApAQCAtODksNyArNjMsNyBAQAogICAgICAgICByZXN1bHQuX19pbml0X18oKnNpemVfb3JfaW5pdGlhbGl6ZXIpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPU5vbmUpOgorZGVmIFZhbHVlKHR5cGVjb2RlX29yX3R5cGUsICphcmdzLCBsb2NrPVRydWUpOgogICAgICcnJwogICAgIFJldHVybiBhIHN5bmNocm9uaXphdGlvbiB3cmFwcGVyIGZvciBhIFZhbHVlCiAgICAgJycnCkBAIC0xMDIsMTMgKzc2LDEwIEBACiAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCInJXInIGhhcyBubyBtZXRob2QgJ2FjcXVpcmUnIiAlIGxvY2spCiAgICAgcmV0dXJuIHN5bmNocm9uaXplZChvYmosIGxvY2spCiAKLWRlZiBBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyLCAqKmt3ZHMpOgorZGVmIEFycmF5KHR5cGVjb2RlX29yX3R5cGUsIHNpemVfb3JfaW5pdGlhbGl6ZXIsICosIGxvY2s9VHJ1ZSk6CiAgICAgJycnCiAgICAgUmV0dXJuIGEgc3luY2hyb25pemF0aW9uIHdyYXBwZXIgZm9yIGEgUmF3QXJyYXkKICAgICAnJycKLSAgICBsb2NrID0ga3dkcy5wb3AoJ2xvY2snLCBOb25lKQotICAgIGlmIGt3ZHM6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3VucmVjb2duaXplZCBrZXl3b3JkIGFyZ3VtZW50KHMpOiAlcycgJSBsaXN0KGt3ZHMua2V5cygpKSkKICAgICBvYmogPSBSYXdBcnJheSh0eXBlY29kZV9vcl90eXBlLCBzaXplX29yX2luaXRpYWxpemVyKQogICAgIGlmIGxvY2sgaXMgRmFsc2U6CiAgICAgICAgIHJldHVybiBvYmoKQEAgLTE1OCw3ICsxMjksOCBAQAogICAgIGlmIGxlbmd0aCBpcyBub3QgTm9uZToKICAgICAgICAgdHlwZV8gPSB0eXBlXyAqIGxlbmd0aAogICAgIEZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKHR5cGVfLCByZWR1Y2VfY3R5cGUpCi0gICAgb2JqID0gdHlwZV8uZnJvbV9hZGRyZXNzKHdyYXBwZXIuZ2V0X2FkZHJlc3MoKSkKKyAgICBidWYgPSB3cmFwcGVyLmNyZWF0ZV9tZW1vcnl2aWV3KCkKKyAgICBvYmogPSB0eXBlXy5mcm9tX2J1ZmZlcihidWYpCiAgICAgb2JqLl93cmFwcGVyID0gd3JhcHBlcgogICAgIHJldHVybiBvYmoKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3luY2hyb25pemUucHkKaW5kZXggNzBhZTgyNS4uMjJlYWJlNSAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9zeW5jaHJvbml6ZS5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CkBAIC00LDMyICs0LDcgQEAKICMgbXVsdGlwcm9jZXNzaW5nL3N5bmNocm9uaXplLnB5CiAjCiAjIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBhdXRob3Igbm9yIHRoZSBuYW1lcyBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZQotIyAgICB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotIyAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCi0jIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCi0jIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQotIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAotIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCi0jIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKLSMgU1VDSCBEQU1BR0UuCisjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICMKIAogX19hbGxfXyA9IFsKQEAgLTM3LDE1ICsxMiwxMyBAQAogICAgIF0KIAogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZSwgc2xlZXAgYXMgX3NsZWVwCi0KIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiBmcm9tIG11bHRpcHJvY2Vzc2luZy5wcm9jZXNzIGltcG9ydCBjdXJyZW50X3Byb2Nlc3MKLWZyb20gbXVsdGlwcm9jZXNzaW5nLnV0aWwgaW1wb3J0IEZpbmFsaXplLCByZWdpc3Rlcl9hZnRlcl9mb3JrLCBkZWJ1ZworZnJvbSBtdWx0aXByb2Nlc3NpbmcudXRpbCBpbXBvcnQgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgZGVidWcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgaW1wb3J0IGFzc2VydF9zcGF3bmluZywgUG9wZW4KK2Zyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiAjIFRyeSB0byBpbXBvcnQgdGhlIG1wLnN5bmNocm9uaXplIG1vZHVsZSBjbGVhbmx5LCBpZiBpdCBmYWlscwogIyByYWlzZSBJbXBvcnRFcnJvciBmb3IgcGxhdGZvcm1zIGxhY2tpbmcgYSB3b3JraW5nIHNlbV9vcGVuIGltcGxlbWVudGF0aW9uLgpAQCAtMjQzLDcgKzIxNiw3IEBACiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgIyB3YWl0IGZvciBub3RpZmljYXRpb24gb3IgdGltZW91dAotICAgICAgICAgICAgcmV0ID0gc2VsZi5fd2FpdF9zZW1hcGhvcmUuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoVHJ1ZSwgdGltZW91dCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICMgaW5kaWNhdGUgdGhhdCB0aGlzIHRocmVhZCBoYXMgd29rZW4KICAgICAgICAgICAgIHNlbGYuX3dva2VuX2NvdW50LnJlbGVhc2UoKQpAQCAtMjUxLDcgKzIyNCw2IEBACiAgICAgICAgICAgICAjIHJlYWNxdWlyZSBsb2NrCiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fbG9jay5hY3F1aXJlKCkKLSAgICAgICAgICAgIHJldHVybiByZXQKIAogICAgIGRlZiBub3RpZnkoc2VsZik6CiAgICAgICAgIGFzc2VydCBzZWxmLl9sb2NrLl9zZW1sb2NrLl9pc19taW5lKCksICdsb2NrIGlzIG5vdCBvd25lZCcKQEAgLTI5Myw2ICsyNjUsMjQgQEAKICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3dhaXRfc2VtYXBob3JlLmFjcXVpcmUoRmFsc2UpOgogICAgICAgICAgICAgICAgIHBhc3MKIAorICAgIGRlZiB3YWl0X2ZvcihzZWxmLCBwcmVkaWNhdGUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKKyAgICAgICAgICAgIHdhaXR0aW1lID0gTm9uZQorICAgICAgICB3aGlsZSBub3QgcmVzdWx0OgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB3YWl0dGltZSA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgaWYgd2FpdHRpbWUgPD0gMDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlbGYud2FpdCh3YWl0dGltZSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHByZWRpY2F0ZSgpCisgICAgICAgIHJldHVybiByZXN1bHQKKwogIwogIyBFdmVudAogIwpAQCAtMzQzLDMgKzMzMyw0MyBAQAogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQorCisjCisjIEJhcnJpZXIKKyMKKworY2xhc3MgQmFycmllcih0aHJlYWRpbmcuQmFycmllcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFydGllcywgYWN0aW9uPU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgIGltcG9ydCBzdHJ1Y3QKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuaGVhcCBpbXBvcnQgQnVmZmVyV3JhcHBlcgorICAgICAgICB3cmFwcGVyID0gQnVmZmVyV3JhcHBlcihzdHJ1Y3QuY2FsY3NpemUoJ2knKSAqIDIpCisgICAgICAgIGNvbmQgPSBDb25kaXRpb24oKQorICAgICAgICBzZWxmLl9fc2V0c3RhdGVfXygocGFydGllcywgYWN0aW9uLCB0aW1lb3V0LCBjb25kLCB3cmFwcGVyKSkKKyAgICAgICAgc2VsZi5fc3RhdGUgPSAwCisgICAgICAgIHNlbGYuX2NvdW50ID0gMAorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCisgICAgICAgICBzZWxmLl9jb25kLCBzZWxmLl93cmFwcGVyKSA9IHN0YXRlCisgICAgICAgIHNlbGYuX2FycmF5ID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9wYXJ0aWVzLCBzZWxmLl9hY3Rpb24sIHNlbGYuX3RpbWVvdXQsCisgICAgICAgICAgICAgICAgc2VsZi5fY29uZCwgc2VsZi5fd3JhcHBlcikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfc3RhdGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9hcnJheVswXQorCisgICAgQF9zdGF0ZS5zZXR0ZXIKKyAgICBkZWYgX3N0YXRlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi5fYXJyYXlbMF0gPSB2YWx1ZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9jb3VudChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FycmF5WzFdCisKKyAgICBAX2NvdW50LnNldHRlcgorICAgIGRlZiBfY291bnQoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl9hcnJheVsxXSA9IHZhbHVlCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKaW5kZXggMjBiYmEzNy4uNzQ5NTgxMyAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQpAQCAtNCwzOSArNCwxOCBAQAogIyBtdWx0aXByb2Nlc3NpbmcvdXRpbC5weQogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgYXV0aG9yIG5vciB0aGUgbmFtZXMgb2YgYW55IGNvbnRyaWJ1dG9ycyBtYXkgYmUKLSMgICAgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSMgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQotIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwotIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLSMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKLSMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQotIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCi0jIFNVQ0ggREFNQUdFLgorIyBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAjCiAKK2ltcG9ydCBzeXMKK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBvcwogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IHdlYWtyZWYKIGltcG9ydCBhdGV4aXQKIGltcG9ydCB0aHJlYWRpbmcgICAgICAgICMgd2Ugd2FudCB0aHJlYWRpbmcgdG8gaW5zdGFsbCBpdCdzCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGNsZWFudXAgZnVuY3Rpb24gYmVmb3JlIG11bHRpcHJvY2Vzc2luZyBkb2VzCitmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IF9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MKIAogZnJvbSBtdWx0aXByb2Nlc3NpbmcucHJvY2VzcyBpbXBvcnQgY3VycmVudF9wcm9jZXNzLCBhY3RpdmVfY2hpbGRyZW4KIApAQCAtODQsNyArNjMsNyBAQAogICAgIFJldHVybnMgbG9nZ2VyIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nCiAgICAgJycnCiAgICAgZ2xvYmFsIF9sb2dnZXIKLSAgICBpbXBvcnQgbG9nZ2luZywgYXRleGl0CisgICAgaW1wb3J0IGxvZ2dpbmcKIAogICAgIGxvZ2dpbmcuX2FjcXVpcmVMb2NrKCkKICAgICB0cnk6CkBAIC0xODMsMTAgKzE2MiwxNSBAQAogICAgICAgICBzZWxmLl9hcmdzID0gYXJncwogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBrd2FyZ3Mgb3Ige30KICAgICAgICAgc2VsZi5fa2V5ID0gKGV4aXRwcmlvcml0eSwgbmV4dChfZmluYWxpemVyX2NvdW50ZXIpKQorICAgICAgICBzZWxmLl9waWQgPSBvcy5nZXRwaWQoKQogCiAgICAgICAgIF9maW5hbGl6ZXJfcmVnaXN0cnlbc2VsZi5fa2V5XSA9IHNlbGYKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCB3cj1Ob25lKToKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgd3I9Tm9uZSwKKyAgICAgICAgICAgICAgICAgIyBOZWVkIHRvIGJpbmQgdGhlc2UgbG9jYWxseSBiZWNhdXNlIHRoZSBnbG9iYWxzIGNhbiBoYXZlCisgICAgICAgICAgICAgICAgICMgYmVlbiBjbGVhcmVkIGF0IHNodXRkb3duCisgICAgICAgICAgICAgICAgIF9maW5hbGl6ZXJfcmVnaXN0cnk9X2ZpbmFsaXplcl9yZWdpc3RyeSwKKyAgICAgICAgICAgICAgICAgc3ViX2RlYnVnPXN1Yl9kZWJ1ZywgZ2V0cGlkPW9zLmdldHBpZCk6CiAgICAgICAgICcnJwogICAgICAgICBSdW4gdGhlIGNhbGxiYWNrIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZCBvciBjYW5jZWxsZWQKICAgICAgICAgJycnCkBAIC0xOTUsOSArMTc5LDEzIEBACiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIG5vIGxvbmdlciByZWdpc3RlcmVkJykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1Yl9kZWJ1ZygnZmluYWxpemVyIGNhbGxpbmcgJXMgd2l0aCBhcmdzICVzIGFuZCBrd2FyZ3MgJXMnLAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FsbGJhY2ssIHNlbGYuX2FyZ3MsIHNlbGYuX2t3YXJncykKLSAgICAgICAgICAgIHJlcyA9IHNlbGYuX2NhbGxiYWNrKCpzZWxmLl9hcmdzLCAqKnNlbGYuX2t3YXJncykKKyAgICAgICAgICAgIGlmIHNlbGYuX3BpZCAhPSBnZXRwaWQoKToKKyAgICAgICAgICAgICAgICBzdWJfZGVidWcoJ2ZpbmFsaXplciBpZ25vcmVkIGJlY2F1c2UgZGlmZmVyZW50IHByb2Nlc3MnKQorICAgICAgICAgICAgICAgIHJlcyA9IE5vbmUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3ViX2RlYnVnKCdmaW5hbGl6ZXIgY2FsbGluZyAlcyB3aXRoIGFyZ3MgJXMgYW5kIGt3YXJncyAlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrLCBzZWxmLl9hcmdzLCBzZWxmLl9rd2FyZ3MpCisgICAgICAgICAgICAgICAgcmVzID0gc2VsZi5fY2FsbGJhY2soKnNlbGYuX2FyZ3MsICoqc2VsZi5fa3dhcmdzKQogICAgICAgICAgICAgc2VsZi5fd2Vha3JlZiA9IHNlbGYuX2NhbGxiYWNrID0gc2VsZi5fYXJncyA9IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9rd2FyZ3MgPSBzZWxmLl9rZXkgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4gcmVzCkBAIC0yOTksMTYgKzI4NywyMSBAQAogICAgICAgICBpbmZvKCdwcm9jZXNzIHNodXR0aW5nIGRvd24nKQogICAgICAgICBkZWJ1ZygncnVubmluZyBhbGwgImF0ZXhpdCIgZmluYWxpemVycyB3aXRoIHByaW9yaXR5ID49IDAnKQogICAgICAgICBfcnVuX2ZpbmFsaXplcnMoMCkKKwogICAgICAgICBpZiBjdXJyZW50X3Byb2Nlc3MoKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICMgV2UgY2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJvY2VzcyBpcyBOb25lIGhlcmUgYmVjYXVzZSBpZgotICAgICAgICAgICAgIyBpdCdzIE5vbmUsIGFueSBjYWxsIHRvIGBgYWN0aXZlX2NoaWxkcmVuKClgYCB3aWxsIHRocm93IGFuCi0gICAgICAgICAgICAjIEF0dHJpYnV0ZUVycm9yIChhY3RpdmVfY2hpbGRyZW4gd2luZHMgdXAgdHJ5aW5nIHRvIGdldAotICAgICAgICAgICAgIyBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIFRoaXMgaGFwcGVucyBpbiBhCi0gICAgICAgICAgICAjIHZhcmlldHkgb2Ygc2h1dGRvd24gY2lyY3Vtc3RhbmNlcyB0aGF0IGFyZSBub3Qgd2VsbC11bmRlcnN0b29kCi0gICAgICAgICAgICAjIGJlY2F1c2UgbW9kdWxlLXNjb3BlIHZhcmlhYmxlcyBhcmUgbm90IGFwcGFyZW50bHkgc3VwcG9zZWQgdG8KLSAgICAgICAgICAgICMgYmUgZGVzdHJveWVkIHVudGlsIGFmdGVyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLiAgSG93ZXZlciwKLSAgICAgICAgICAgICMgdGhleSBhcmUgaW5kZWVkIGRlc3Ryb3llZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuICBTZWUKLSAgICAgICAgICAgICMgaXNzdWVzICM5Nzc1IGFuZCAjMTU4ODEuICBBbHNvIHJlbGF0ZWQ6ICM0MTA2LCAjOTIwNSwgYW5kICM5MjA3LgorICAgICAgICAgICAgIyBpdCdzIE5vbmUsIGFueSBjYWxsIHRvIGBgYWN0aXZlX2NoaWxkcmVuKClgYCB3aWxsIHRocm93CisgICAgICAgICAgICAjIGFuIEF0dHJpYnV0ZUVycm9yIChhY3RpdmVfY2hpbGRyZW4gd2luZHMgdXAgdHJ5aW5nIHRvCisgICAgICAgICAgICAjIGdldCBhdHRyaWJ1dGVzIGZyb20gdXRpbC5fY3VycmVudF9wcm9jZXNzKS4gIE9uZQorICAgICAgICAgICAgIyBzaXR1YXRpb24gd2hlcmUgdGhpcyBjYW4gaGFwcGVuIGlzIGlmIHNvbWVvbmUgaGFzCisgICAgICAgICAgICAjIG1hbmlwdWxhdGVkIHN5cy5tb2R1bGVzLCBjYXVzaW5nIHRoaXMgbW9kdWxlIHRvIGJlCisgICAgICAgICAgICAjIGdhcmJhZ2UgY29sbGVjdGVkLiAgVGhlIGRlc3RydWN0b3IgZm9yIHRoZSBtb2R1bGUgdHlwZQorICAgICAgICAgICAgIyB0aGVuIHJlcGxhY2VzIGFsbCB2YWx1ZXMgaW4gdGhlIG1vZHVsZSBkaWN0IHdpdGggTm9uZS4KKyAgICAgICAgICAgICMgRm9yIGluc3RhbmNlLCBhZnRlciBzZXR1cHRvb2xzIHJ1bnMgYSB0ZXN0IGl0IHJlcGxhY2VzCisgICAgICAgICAgICAjIHN5cy5tb2R1bGVzIHdpdGggYSBjb3B5IGNyZWF0ZWQgZWFybGllci4gIFNlZSBpc3N1ZXMKKyAgICAgICAgICAgICMgIzk3NzUgYW5kICMxNTg4MS4gIEFsc28gcmVsYXRlZDogIzQxMDYsICM5MjA1LCBhbmQKKyAgICAgICAgICAgICMgIzkyMDcuCisKICAgICAgICAgICAgIGZvciBwIGluIGFjdGl2ZV9jaGlsZHJlbigpOgogICAgICAgICAgICAgICAgIGlmIHAuX2RhZW1vbmljOgogICAgICAgICAgICAgICAgICAgICBpbmZvKCdjYWxsaW5nIHRlcm1pbmF0ZSgpIGZvciBkYWVtb24gJXMnLCBwLm5hbWUpCmRpZmYgLS1naXQgYS9MaWIvbm50cGxpYi5weSBiL0xpYi9ubnRwbGliLnB5CmluZGV4IDMyYmZmZDguLjJkZTZlYmQgMTAwNjQ0Ci0tLSBhL0xpYi9ubnRwbGliLnB5CisrKyBiL0xpYi9ubnRwbGliLnB5CkBAIC0xNjYsNyArMTY2LDcgQEAKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCh2LmRlY29kZShlbmMgb3IgJ2FzY2lpJykpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQodikKLSAgICByZXR1cm4gJyAnLmpvaW4ocGFydHMpCisgICAgcmV0dXJuICcnLmpvaW4ocGFydHMpCiAKIGRlZiBfcGFyc2Vfb3ZlcnZpZXdfZm10KGxpbmVzKToKICAgICAiIiJQYXJzZSBhIGxpc3Qgb2Ygc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcmVzcG9uc2UgdG8gTElTVCBPVkVSVklFVy5GTVQKQEAgLTM1MSw2ICszNTEsMjAgQEAKICAgICAgICAgIyBMb2cgaW4gYW5kIGVuY3J5cHRpb24gc2V0dXAgb3JkZXIgaXMgbGVmdCB0byBzdWJjbGFzc2VzLgogICAgICAgICBzZWxmLmF1dGhlbnRpY2F0ZWQgPSBGYWxzZQogCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIGlzX2Nvbm5lY3RlZCA9IGxhbWJkYTogaGFzYXR0cihzZWxmLCAiZmlsZSIpCisgICAgICAgIGlmIGlzX2Nvbm5lY3RlZCgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYucXVpdCgpCisgICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgaWYgaXNfY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlKCkKKwogICAgIGRlZiBnZXR3ZWxjb21lKHNlbGYpOgogICAgICAgICAiIiJHZXQgdGhlIHdlbGNvbWUgbWVzc2FnZSBmcm9tIHRoZSBzZXJ2ZXIKICAgICAgICAgKHRoaXMgaXMgcmVhZCBhbmQgc3F1aXJyZWxlZCBhd2F5IGJ5IF9faW5pdF9fKCkpLgpAQCAtODE5LDcgKzgzMyw3IEBACiAgICAgICAgIC0gbGlzdDogbGlzdCBvZiAobmFtZSx0aXRsZSkgc3RyaW5ncyIiIgogICAgICAgICB3YXJuaW5ncy53YXJuKCJUaGUgWEdUSVRMRSBleHRlbnNpb24gaXMgbm90IGFjdGl2ZWx5IHVzZWQsICIKICAgICAgICAgICAgICAgICAgICAgICAidXNlIGRlc2NyaXB0aW9ucygpIGluc3RlYWQiLAotICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBsaW5lX3BhdCA9IHJlLmNvbXBpbGUoJ14oW14gXHRdKylbIFx0XSsoLiopJCcpCiAgICAgICAgIHJlc3AsIHJhd19saW5lcyA9IHNlbGYuX2xvbmdjbWRzdHJpbmcoJ1hHVElUTEUgJyArIGdyb3VwLCBmaWxlKQogICAgICAgICBsaW5lcyA9IFtdCkBAIC04MzcsNyArODUxLDcgQEAKICAgICAgICAgcGF0aDogZGlyZWN0b3J5IHBhdGggdG8gYXJ0aWNsZQogICAgICAgICAiIiIKICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIFhQQVRIIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlbHkgdXNlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKICAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdYUEFUSCB7MH0nLmZvcm1hdChpZCkpCiAgICAgICAgIGlmIG5vdCByZXNwLnN0YXJ0c3dpdGgoJzIyMycpOgpkaWZmIC0tZ2l0IGEvTGliL251bWJlcnMucHkgYi9MaWIvbnVtYmVycy5weQppbmRleCBlY2ZhZDdjLi5iMjA2NDU3IDEwMDY0NAotLS0gYS9MaWIvbnVtYmVycy5weQorKysgYi9MaWIvbnVtYmVycy5weQpAQCAtNSw3ICs1LDcgQEAKIAogVE9ETzogRmlsbCBvdXQgbW9yZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIHRoZSBvcGVyYXRvcnMuIiIiCiAKLWZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZCwgYWJzdHJhY3Rwcm9wZXJ0eQorZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEsIGFic3RyYWN0bWV0aG9kCiAKIF9fYWxsX18gPSBbIk51bWJlciIsICJDb21wbGV4IiwgIlJlYWwiLCAiUmF0aW9uYWwiLCAiSW50ZWdyYWwiXQogCkBAIC01MCw3ICs1MCw4IEBACiAgICAgICAgICIiIlRydWUgaWYgc2VsZiAhPSAwLiBDYWxsZWQgZm9yIGJvb2woc2VsZikuIiIiCiAgICAgICAgIHJldHVybiBzZWxmICE9IDAKIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVmIHJlYWwoc2VsZik6CiAgICAgICAgICIiIlJldHJpZXZlIHRoZSByZWFsIGNvbXBvbmVudCBvZiB0aGlzIG51bWJlci4KIApAQCAtNTgsNyArNTksOCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgaW1hZyhzZWxmKToKICAgICAgICAgIiIiUmV0cmlldmUgdGhlIGltYWdpbmFyeSBjb21wb25lbnQgb2YgdGhpcyBudW1iZXIuCiAKQEAgLTI3MiwxMSArMjc0LDEzIEBACiAKICAgICBfX3Nsb3RzX18gPSAoKQogCi0gICAgQGFic3RyYWN0cHJvcGVydHkKKyAgICBAcHJvcGVydHkKKyAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgbnVtZXJhdG9yKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBAYWJzdHJhY3Rwcm9wZXJ0eQorICAgIEBwcm9wZXJ0eQorICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBkZW5vbWluYXRvcihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCmRpZmYgLS1naXQgYS9MaWIvb3Bjb2RlLnB5IGIvTGliL29wY29kZS5weQppbmRleCA4ZTE1ZDEzLi5hNjM5ZmUzIDEwMDY0NAotLS0gYS9MaWIvb3Bjb2RlLnB5CisrKyBiL0xpYi9vcGNvZGUucHkKQEAgLTYsNyArNiw3IEBACiAKIF9fYWxsX18gPSBbImNtcF9vcCIsICJoYXNjb25zdCIsICJoYXNuYW1lIiwgImhhc2pyZWwiLCAiaGFzamFicyIsCiAgICAgICAgICAgICJoYXNsb2NhbCIsICJoYXNjb21wYXJlIiwgImhhc2ZyZWUiLCAib3BuYW1lIiwgIm9wbWFwIiwKLSAgICAgICAgICAgIkhBVkVfQVJHVU1FTlQiLCAiRVhURU5ERURfQVJHIl0KKyAgICAgICAgICAgIkhBVkVfQVJHVU1FTlQiLCAiRVhURU5ERURfQVJHIiwgImhhc25hcmdzIl0KIAogY21wX29wID0gKCc8JywgJzw9JywgJz09JywgJyE9JywgJz4nLCAnPj0nLCAnaW4nLCAnbm90IGluJywgJ2lzJywKICAgICAgICAgJ2lzIG5vdCcsICdleGNlcHRpb24gbWF0Y2gnLCAnQkFEJykKQEAgLTE4LDYgKzE4LDcgQEAKIGhhc2xvY2FsID0gW10KIGhhc2NvbXBhcmUgPSBbXQogaGFzZnJlZSA9IFtdCitoYXNuYXJncyA9IFtdCiAKIG9wbWFwID0ge30KIG9wbmFtZSA9IFsnJ10gKiAyNTYKQEAgLTQzLDcgKzQ0LDYgQEAKICMgSW5zdHJ1Y3Rpb24gb3Bjb2RlcyBmb3IgY29tcGlsZWQgY29kZQogIyBCbGFuayBsaW5lcyBjb3JyZXNwb25kIHRvIGF2YWlsYWJsZSBvcGNvZGVzCiAKLWRlZl9vcCgnU1RPUF9DT0RFJywgMCkKIGRlZl9vcCgnUE9QX1RPUCcsIDEpCiBkZWZfb3AoJ1JPVF9UV08nLCAyKQogZGVmX29wKCdST1RfVEhSRUUnLCAzKQpAQCAtODgsNiArODgsNyBAQAogCiBkZWZfb3AoJ1BSSU5UX0VYUFInLCA3MCkKIGRlZl9vcCgnTE9BRF9CVUlMRF9DTEFTUycsIDcxKQorZGVmX29wKCdZSUVMRF9GUk9NJywgNzIpCiAKIGRlZl9vcCgnSU5QTEFDRV9MU0hJRlQnLCA3NSkKIGRlZl9vcCgnSU5QTEFDRV9SU0hJRlQnLCA3NikKQEAgLTE1Miw2ICsxNTMsNyBAQAogCiBkZWZfb3AoJ1JBSVNFX1ZBUkFSR1MnLCAxMzApICAgICMgTnVtYmVyIG9mIHJhaXNlIGFyZ3VtZW50cyAoMSwgMiwgb3IgMykKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTicsIDEzMSkgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTMxKQogZGVmX29wKCdNQUtFX0ZVTkNUSU9OJywgMTMyKSAgICAjIE51bWJlciBvZiBhcmdzIHdpdGggZGVmYXVsdCB2YWx1ZXMKIGRlZl9vcCgnQlVJTERfU0xJQ0UnLCAxMzMpICAgICAgIyBOdW1iZXIgb2YgaXRlbXMKIGRlZl9vcCgnTUFLRV9DTE9TVVJFJywgMTM0KQpAQCAtMTY1LDggKzE2NywxMSBAQAogaGFzZnJlZS5hcHBlbmQoMTM4KQogCiBkZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSJywgMTQwKSAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCitoYXNuYXJncy5hcHBlbmQoMTQwKQogZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQoraGFzbmFyZ3MuYXBwZW5kKDE0MSkKIGRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVJfS1cnLCAxNDIpICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKK2hhc25hcmdzLmFwcGVuZCgxNDIpCiAKIGpyZWxfb3AoJ1NFVFVQX1dJVEgnLCAxNDMpCiAKZGlmZiAtLWdpdCBhL0xpYi9vcHRwYXJzZS5weSBiL0xpYi9vcHRwYXJzZS5weQppbmRleCBkOTdhMWY3Li4zNzc2NGQzIDEwMDY0NAotLS0gYS9MaWIvb3B0cGFyc2UucHkKKysrIGIvTGliL29wdHBhcnNlLnB5CkBAIC04NiwxMCArODYsMTYgQEAKICMgICBJZDogZXJyb3JzLnB5IDUwOSAyMDA2LTA0LTIwIDAwOjU4OjI0WiBnd2FyZAogCiB0cnk6Ci0gICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0CisgICAgZnJvbSBnZXR0ZXh0IGltcG9ydCBnZXR0ZXh0LCBuZ2V0dGV4dAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGRlZiBnZXR0ZXh0KG1lc3NhZ2UpOgogICAgICAgICByZXR1cm4gbWVzc2FnZQorCisgICAgZGVmIG5nZXR0ZXh0KHNpbmd1bGFyLCBwbHVyYWwsIG4pOgorICAgICAgICBpZiBuID09IDE6CisgICAgICAgICAgICByZXR1cm4gc2luZ3VsYXIKKyAgICAgICAgcmV0dXJuIHBsdXJhbAorCiBfID0gZ2V0dGV4dAogCiAKQEAgLTQxMSwxMSArNDE3LDggQEAKIGRlZiBfcGFyc2VfaW50KHZhbCk6CiAgICAgcmV0dXJuIF9wYXJzZV9udW0odmFsLCBpbnQpCiAKLWRlZiBfcGFyc2VfbG9uZyh2YWwpOgotICAgIHJldHVybiBfcGFyc2VfbnVtKHZhbCwgaW50KQotCiBfYnVpbHRpbl9jdnQgPSB7ICJpbnQiIDogKF9wYXJzZV9pbnQsIF8oImludGVnZXIiKSksCi0gICAgICAgICAgICAgICAgICJsb25nIiA6IChfcGFyc2VfbG9uZywgXygibG9uZyBpbnRlZ2VyIikpLAorICAgICAgICAgICAgICAgICAibG9uZyIgOiAoX3BhcnNlX2ludCwgXygiaW50ZWdlciIpKSwKICAgICAgICAgICAgICAgICAgImZsb2F0IiA6IChmbG9hdCwgXygiZmxvYXRpbmctcG9pbnQiKSksCiAgICAgICAgICAgICAgICAgICJjb21wbGV4IiA6IChjb21wbGV4LCBfKCJjb21wbGV4IikpIH0KIApAQCAtMTQ4MywxMSArMTQ4NiwxMCBAQAogICAgICAgICBpZiBvcHRpb24udGFrZXNfdmFsdWUoKToKICAgICAgICAgICAgIG5hcmdzID0gb3B0aW9uLm5hcmdzCiAgICAgICAgICAgICBpZiBsZW4ocmFyZ3MpIDwgbmFyZ3M6Ci0gICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihfKCIlcyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKSAlIG9wdCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyAlZCBhcmd1bWVudHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKG9wdCwgbmFyZ3MpKQorICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IobmdldHRleHQoCisgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIiUob3B0aW9uKXMgb3B0aW9uIHJlcXVpcmVzICUobnVtYmVyKWQgYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgbmFyZ3MpICUgeyJvcHRpb24iOiBvcHQsICJudW1iZXIiOiBuYXJnc30pCiAgICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSByYXJncy5wb3AoMCkKICAgICAgICAgICAgIGVsc2U6CkBAIC0xNTIyLDExICsxNTI0LDEwIEBACiAKICAgICAgICAgICAgICAgICBuYXJncyA9IG9wdGlvbi5uYXJncwogICAgICAgICAgICAgICAgIGlmIGxlbihyYXJncykgPCBuYXJnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFyZ3MgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXJyb3IoXygiJXMgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IikgJSBvcHQpCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVycm9yKF8oIiVzIG9wdGlvbiByZXF1aXJlcyAlZCBhcmd1bWVudHMiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcHQsIG5hcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5lcnJvcihuZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlKG9wdGlvbilzIG9wdGlvbiByZXF1aXJlcyAlKG51bWJlcilkIGFyZ3VtZW50cyIsCisgICAgICAgICAgICAgICAgICAgICAgICBuYXJncykgJSB7Im9wdGlvbiI6IG9wdCwgIm51bWJlciI6IG5hcmdzfSkKICAgICAgICAgICAgICAgICBlbGlmIG5hcmdzID09IDE6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmFyZ3MucG9wKDApCiAgICAgICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9vcy5weSBiL0xpYi9vcy5weQppbmRleCBkMTEwMWEyLi44NGVlYWViIDEwMDY0NAotLS0gYS9MaWIvb3MucHkKKysrIGIvTGliL29zLnB5CkBAIC0yNCwxMyArMjQsMTggQEAKICMnCiAKIGltcG9ydCBzeXMsIGVycm5vCitpbXBvcnQgc3RhdCBhcyBzdAogCiBfbmFtZXMgPSBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMKIAogIyBOb3RlOiAgbW9yZSBuYW1lcyBhcmUgYWRkZWQgdG8gX19hbGxfXyBsYXRlci4KIF9fYWxsX18gPSBbImFsdHNlcCIsICJjdXJkaXIiLCAicGFyZGlyIiwgInNlcCIsICJwYXRoc2VwIiwgImxpbmVzZXAiLAotICAgICAgICAgICAiZGVmcGF0aCIsICJuYW1lIiwgInBhdGgiLCAiZGV2bnVsbCIsCi0gICAgICAgICAgICJTRUVLX1NFVCIsICJTRUVLX0NVUiIsICJTRUVLX0VORCJdCisgICAgICAgICAgICJkZWZwYXRoIiwgIm5hbWUiLCAicGF0aCIsICJkZXZudWxsIiwgIlNFRUtfU0VUIiwgIlNFRUtfQ1VSIiwKKyAgICAgICAgICAgIlNFRUtfRU5EIiwgImZzZW5jb2RlIiwgImZzZGVjb2RlIiwgImdldF9leGVjX3BhdGgiLCAiZmRvcGVuIiwKKyAgICAgICAgICAgInBvcGVuIiwgImV4dHNlcCJdCisKK2RlZiBfZXhpc3RzKG5hbWUpOgorICAgIHJldHVybiBuYW1lIGluIGdsb2JhbHMoKQogCiBkZWYgX2dldF9leHBvcnRzX2xpc3QobW9kdWxlKToKICAgICB0cnk6CkBAIC0zOCwxOSArNDMsMjMgQEAKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgIHJldHVybiBbbiBmb3IgbiBpbiBkaXIobW9kdWxlKSBpZiBuWzBdICE9ICdfJ10KIAorIyBBbnkgbmV3IGRlcGVuZGVuY2llcyBvZiB0aGUgb3MgbW9kdWxlIGFuZC9vciBjaGFuZ2VzIGluIHBhdGggc2VwYXJhdG9yCisjIHJlcXVpcmVzIHVwZGF0aW5nIGltcG9ydGxpYiBhcyB3ZWxsLgogaWYgJ3Bvc2l4JyBpbiBfbmFtZXM6CiAgICAgbmFtZSA9ICdwb3NpeCcKICAgICBsaW5lc2VwID0gJ1xuJwogICAgIGZyb20gcG9zaXggaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gcG9zaXggaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaW1wb3J0IHBvc2l4cGF0aCBhcyBwYXRoCiAKLSAgICBpbXBvcnQgcG9zaXgKLSAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChwb3NpeCkpCi0gICAgZGVsIHBvc2l4CisgICAgdHJ5OgorICAgICAgICBmcm9tIHBvc2l4IGltcG9ydCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKIAogZWxpZiAnbnQnIGluIF9uYW1lczoKICAgICBuYW1lID0gJ250JwpAQCAtNTgsNiArNjcsNyBAQAogICAgIGZyb20gbnQgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gbnQgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgaW1wb3J0IG50cGF0aCBhcyBwYXRoCkBAIC02NiwxMiArNzYsMTggQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChudCkpCiAgICAgZGVsIG50CiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gbnQgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbGlmICdvczInIGluIF9uYW1lczoKICAgICBuYW1lID0gJ29zMicKICAgICBsaW5lc2VwID0gJ1xyXG4nCiAgICAgZnJvbSBvczIgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gb3MyIGltcG9ydCBfZXhpdAorICAgICAgICBfX2FsbF9fLmFwcGVuZCgnX2V4aXQnKQogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcwogICAgIGlmIHN5cy52ZXJzaW9uLmZpbmQoJ0VNWCBHQ0MnKSA9PSAtMToKQEAgLTg0LDEyICsxMDAsMTggQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChvczIpKQogICAgIGRlbCBvczIKIAorICAgIHRyeToKKyAgICAgICAgZnJvbSBvczIgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbGlmICdjZScgaW4gX25hbWVzOgogICAgIG5hbWUgPSAnY2UnCiAgICAgbGluZXNlcCA9ICdcclxuJwogICAgIGZyb20gY2UgaW1wb3J0ICoKICAgICB0cnk6CiAgICAgICAgIGZyb20gY2UgaW1wb3J0IF9leGl0CisgICAgICAgIF9fYWxsX18uYXBwZW5kKCdfZXhpdCcpCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAgICAgIyBXZSBjYW4gdXNlIHRoZSBzdGFuZGFyZCBXaW5kb3dzIHBhdGguCkBAIC05OSw2ICsxMjEsMTEgQEAKICAgICBfX2FsbF9fLmV4dGVuZChfZ2V0X2V4cG9ydHNfbGlzdChjZSkpCiAgICAgZGVsIGNlCiAKKyAgICB0cnk6CisgICAgICAgIGZyb20gY2UgaW1wb3J0IF9oYXZlX2Z1bmN0aW9ucworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCiBlbHNlOgogICAgIHJhaXNlIEltcG9ydEVycm9yKCdubyBvcyBzcGVjaWZpYyBtb2R1bGUgZm91bmQnKQogCkBAIC0xMDgsOCArMTM1LDk3IEBACiAKIGRlbCBfbmFtZXMKIAorCitpZiBfZXhpc3RzKCJfaGF2ZV9mdW5jdGlvbnMiKToKKyAgICBfZ2xvYmFscyA9IGdsb2JhbHMoKQorICAgIGRlZiBfYWRkKHN0ciwgZm4pOgorICAgICAgICBpZiAoZm4gaW4gX2dsb2JhbHMpIGFuZCAoc3RyIGluIF9oYXZlX2Z1bmN0aW9ucyk6CisgICAgICAgICAgICBfc2V0LmFkZChfZ2xvYmFsc1tmbl0pCisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZBQ0NFU1NBVCIsICAiYWNjZXNzIikKKyAgICBfYWRkKCJIQVZFX0ZDSE1PREFUIiwgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FU0FUIiwgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQorICAgIF9hZGQoIkhBVkVfTUtESVJBVCIsICAgICJta2RpciIpCisgICAgX2FkZCgiSEFWRV9NS0ZJRk9BVCIsICAgIm1rZmlmbyIpCisgICAgX2FkZCgiSEFWRV9NS05PREFUIiwgICAgIm1rbm9kIikKKyAgICBfYWRkKCJIQVZFX09QRU5BVCIsICAgICAib3BlbiIpCisgICAgX2FkZCgiSEFWRV9SRUFETElOS0FUIiwgInJlYWRsaW5rIikKKyAgICBfYWRkKCJIQVZFX1JFTkFNRUFUIiwgICAicmVuYW1lIikKKyAgICBfYWRkKCJIQVZFX1NZTUxJTktBVCIsICAic3ltbGluayIpCisgICAgX2FkZCgiSEFWRV9VTkxJTktBVCIsICAgInVubGluayIpCisgICAgX2FkZCgiSEFWRV9VTkxJTktBVCIsICAgInJtZGlyIikKKyAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQorICAgIHN1cHBvcnRzX2Rpcl9mZCA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgIHN1cHBvcnRzX2VmZmVjdGl2ZV9pZHMgPSBfc2V0CisKKyAgICBfc2V0ID0gc2V0KCkKKyAgICBfYWRkKCJIQVZFX0ZDSERJUiIsICAgICAiY2hkaXIiKQorICAgIF9hZGQoIkhBVkVfRkNITU9EIiwgICAgICJjaG1vZCIpCisgICAgX2FkZCgiSEFWRV9GQ0hPV04iLCAgICAgImNob3duIikKKyAgICBfYWRkKCJIQVZFX0ZET1BFTkRJUiIsICAibGlzdGRpciIpCisgICAgX2FkZCgiSEFWRV9GRVhFQ1ZFIiwgICAgImV4ZWN2ZSIpCisgICAgX3NldC5hZGQoc3RhdCkgIyBmc3RhdCBhbHdheXMgd29ya3MKKyAgICBfYWRkKCJIQVZFX0ZUUlVOQ0FURSIsICAidHJ1bmNhdGUiKQorICAgIF9hZGQoIkhBVkVfRlVUSU1FTlMiLCAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9GVVRJTUVTIiwgICAgInV0aW1lIikKKyAgICBfYWRkKCJIQVZFX0ZQQVRIQ09ORiIsICAicGF0aGNvbmYiKQorICAgIGlmIF9leGlzdHMoInN0YXR2ZnMiKSBhbmQgX2V4aXN0cygiZnN0YXR2ZnMiKTogIyBtYWMgb3MgeDEwLjMKKyAgICAgICAgX2FkZCgiSEFWRV9GU1RBVFZGUyIsICJzdGF0dmZzIikKKyAgICBzdXBwb3J0c19mZCA9IF9zZXQKKworICAgIF9zZXQgPSBzZXQoKQorICAgIF9hZGQoIkhBVkVfRkFDQ0VTU0FUIiwgICJhY2Nlc3MiKQorICAgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgc3VwcG9ydCBsY2htb2QoKS4gIE9mdGVuIHRoZSBmdW5jdGlvbiBleGlzdHMKKyAgICAjIGFueXdheSwgYXMgYSBzdHViIHRoYXQgYWx3YXlzIHJldHVybnMgRU5PU1VQIG9yIHBlcmhhcHMgRU9QTk9UU1VQUC4KKyAgICAjIChObywgSSBkb24ndCBrbm93IHdoeSB0aGF0J3MgYSBnb29kIGRlc2lnbi4pICAuL2NvbmZpZ3VyZSB3aWxsIGRldGVjdAorICAgICMgdGhpcyBhbmQgcmVqZWN0IGl0LS1zbyBIQVZFX0xDSE1PRCBzdGlsbCB3b24ndCBiZSBkZWZpbmVkIG9uIHN1Y2gKKyAgICAjIHBsYXRmb3Jtcy4gIFRoaXMgaXMgVmVyeSBIZWxwZnVsLgorICAgICMKKyAgICAjIEhvd2V2ZXIsIHNvbWV0aW1lcyBwbGF0Zm9ybXMgd2l0aG91dCBhIHdvcmtpbmcgbGNobW9kKCkgKmRvKiBoYXZlCisgICAgIyBmY2htb2RhdCgpLiAgKEV4YW1wbGVzOiBMaW51eCBrZXJuZWwgMy4yIHdpdGggZ2xpYmMgMi4xNSwKKyAgICAjIE9wZW5JbmRpYW5hIDMueC4pICBBbmQgZmNobW9kYXQoKSBoYXMgYSBmbGFnIHRoYXQgdGhlb3JldGljYWxseSBtYWtlcworICAgICMgaXQgYmVoYXZlIGxpa2UgbGNobW9kKCkuICBTbyBpbiB0aGVvcnkgaXQgd291bGQgYmUgYSBzdWl0YWJsZQorICAgICMgcmVwbGFjZW1lbnQgZm9yIGxjaG1vZCgpLiAgQnV0IHdoZW4gbGNobW9kKCkgZG9lc24ndCB3b3JrLCBmY2htb2RhdCgpJ3MKKyAgICAjIGZsYWcgZG9lc24ndCB3b3JrICplaXRoZXIqLiAgU2FkbHkgLi9jb25maWd1cmUgaXNuJ3Qgc29waGlzdGljYXRlZAorICAgICMgZW5vdWdoIHRvIGRldGVjdCB0aGlzIGNvbmRpdGlvbi0taXQgb25seSBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90CisgICAgIyBmY2htb2RhdCgpIG1pbmltYWxseSB3b3Jrcy4KKyAgICAjCisgICAgIyBUaGVyZWZvcmUgd2Ugc2ltcGx5IGlnbm9yZSBmY2htb2RhdCgpIHdoZW4gZGVjaWRpbmcgd2hldGhlciBvciBub3QKKyAgICAjIG9zLmNobW9kIHN1cHBvcnRzIGZvbGxvd19zeW1saW5rcy4gIEp1c3QgY2hlY2tpbmcgbGNobW9kKCkgaXMKKyAgICAjIHN1ZmZpY2llbnQuICBBZnRlciBhbGwtLWlmIHlvdSBoYXZlIGEgd29ya2luZyBmY2htb2RhdCgpLCB5b3VyCisgICAgIyBsY2htb2QoKSBhbG1vc3QgY2VydGFpbmx5IHdvcmtzIHRvby4KKyAgICAjCisgICAgIyBfYWRkKCJIQVZFX0ZDSE1PREFUIiwgICAiY2htb2QiKQorICAgIF9hZGQoIkhBVkVfRkNIT1dOQVQiLCAgICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9GU1RBVEFUIiwgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfTENIRkxBR1MiLCAgICJjaGZsYWdzIikKKyAgICBfYWRkKCJIQVZFX0xDSE1PRCIsICAgICAiY2htb2QiKQorICAgIGlmIF9leGlzdHMoImxjaG93biIpOiAjIG1hYyBvcyB4MTAuMworICAgICAgICBfYWRkKCJIQVZFX0xDSE9XTiIsICJjaG93biIpCisgICAgX2FkZCgiSEFWRV9MSU5LQVQiLCAgICAgImxpbmsiKQorICAgIF9hZGQoIkhBVkVfTFVUSU1FUyIsICAgICJ1dGltZSIpCisgICAgX2FkZCgiSEFWRV9MU1RBVCIsICAgICAgInN0YXQiKQorICAgIF9hZGQoIkhBVkVfRlNUQVRBVCIsICAgICJzdGF0IikKKyAgICBfYWRkKCJIQVZFX1VUSU1FTlNBVCIsICAidXRpbWUiKQorICAgIF9hZGQoIk1TX1dJTkRPV1MiLCAgICAgICJzdGF0IikKKyAgICBzdXBwb3J0c19mb2xsb3dfc3ltbGlua3MgPSBfc2V0CisKKyAgICBkZWwgX3NldAorICAgIGRlbCBfaGF2ZV9mdW5jdGlvbnMKKyAgICBkZWwgX2dsb2JhbHMKKyAgICBkZWwgX2FkZAorCisKICMgUHl0aG9uIHVzZXMgZml4ZWQgdmFsdWVzIGZvciB0aGUgU0VFS18gY29uc3RhbnRzOyB0aGV5IGFyZSBtYXBwZWQKICMgdG8gbmF0aXZlIGNvbnN0YW50cyBpZiBuZWNlc3NhcnkgaW4gcG9zaXhtb2R1bGUuYworIyBPdGhlciBwb3NzaWJsZSBTRUVLIHZhbHVlcyBhcmUgZGlyZWN0bHkgaW1wb3J0ZWQgZnJvbSBwb3NpeG1vZHVsZS5jCiBTRUVLX1NFVCA9IDAKIFNFRUtfQ1VSID0gMQogU0VFS19FTkQgPSAyCkBAIC0xMjAsOCArMjM2LDYgQEAKICAgICB1bWFzayhtYXNrKQogICAgIHJldHVybiBtb2RlICYgfm1hc2sKIAotIycKLQogIyBTdXBlciBkaXJlY3RvcnkgdXRpbGl0aWVzLgogIyAoSW5zcGlyZWQgYnkgRXJpYyBSYXltb25kOyB0aGUgZG9jIHN0cmluZ3MgYXJlIG1vc3RseSBoaXMpCiAKQEAgLTE1MSw3ICsyNjUsNiBAQAogICAgIHRyeToKICAgICAgICAgbWtkaXIobmFtZSwgbW9kZSkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICBpbXBvcnQgc3RhdCBhcyBzdAogICAgICAgICBkaXJfZXhpc3RzID0gcGF0aC5pc2RpcihuYW1lKQogICAgICAgICBleHBlY3RlZF9tb2RlID0gX2dldF9tYXNrZWRfbW9kZShtb2RlKQogICAgICAgICBpZiBkaXJfZXhpc3RzOgpAQCAtMTYzLDYgKzI3Niw5IEBACiAgICAgICAgICAgICBhY3R1YWxfbW9kZSA9IC0xCiAgICAgICAgIGlmIG5vdCAoZS5lcnJubyA9PSBlcnJuby5FRVhJU1QgYW5kIGV4aXN0X29rIGFuZCBkaXJfZXhpc3RzIGFuZAogICAgICAgICAgICAgICAgIGFjdHVhbF9tb2RlID09IGV4cGVjdGVkX21vZGUpOgorICAgICAgICAgICAgaWYgZGlyX2V4aXN0cyBhbmQgYWN0dWFsX21vZGUgIT0gZXhwZWN0ZWRfbW9kZToKKyAgICAgICAgICAgICAgICBlLnN0cmVycm9yICs9ICcgKG1vZGUgJW8gIT0gZXhwZWN0ZWQgbW9kZSAlbyknICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsX21vZGUsIGV4cGVjdGVkX21vZGUpCiAgICAgICAgICAgICByYWlzZQogCiBkZWYgcmVtb3ZlZGlycyhuYW1lKToKQEAgLTMwMCwxMyArNDE2LDEwNyBAQAogICAgIGZvciBuYW1lIGluIGRpcnM6CiAgICAgICAgIG5ld19wYXRoID0gam9pbih0b3AsIG5hbWUpCiAgICAgICAgIGlmIGZvbGxvd2xpbmtzIG9yIG5vdCBpc2xpbmsobmV3X3BhdGgpOgotICAgICAgICAgICAgZm9yIHggaW4gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpOgotICAgICAgICAgICAgICAgIHlpZWxkIHgKKyAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgaWYgbm90IHRvcGRvd246CiAgICAgICAgIHlpZWxkIHRvcCwgZGlycywgbm9uZGlycwogCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKK2lmIHtvcGVuLCBzdGF0fSA8PSBzdXBwb3J0c19kaXJfZmQgYW5kIHtsaXN0ZGlyLCBzdGF0fSA8PSBzdXBwb3J0c19mZDoKKworICAgIGRlZiBmd2Fsayh0b3A9Ii4iLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSk6CisgICAgICAgICIiIkRpcmVjdG9yeSB0cmVlIGdlbmVyYXRvci4KKworICAgICAgICBUaGlzIGJlaGF2ZXMgZXhhY3RseSBsaWtlIHdhbGsoKSwgZXhjZXB0IHRoYXQgaXQgeWllbGRzIGEgNC10dXBsZQorCisgICAgICAgICAgICBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzLCBkaXJmZAorCisgICAgICAgIGBkaXJwYXRoYCwgYGRpcm5hbWVzYCBhbmQgYGZpbGVuYW1lc2AgYXJlIGlkZW50aWNhbCB0byB3YWxrKCkgb3V0cHV0LAorICAgICAgICBhbmQgYGRpcmZkYCBpcyBhIGZpbGUgZGVzY3JpcHRvciByZWZlcnJpbmcgdG8gdGhlIGRpcmVjdG9yeSBgZGlycGF0aGAuCisKKyAgICAgICAgVGhlIGFkdmFudGFnZSBvZiBmd2FsaygpIG92ZXIgd2FsaygpIGlzIHRoYXQgaXQncyBzYWZlIGFnYWluc3Qgc3ltbGluaworICAgICAgICByYWNlcyAod2hlbiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UpLgorCisgICAgICAgIElmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksCisgICAgICAgICAgYW5kIHRvcCBzaG91bGQgYmUgcmVsYXRpdmU7IHRvcCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuCisgICAgICAgICAgKGRpcl9mZCBpcyBhbHdheXMgc3VwcG9ydGVkIGZvciBmd2Fsay4pCisKKyAgICAgICAgQ2F1dGlvbjoKKyAgICAgICAgU2luY2UgZndhbGsoKSB5aWVsZHMgZmlsZSBkZXNjcmlwdG9ycywgdGhvc2UgYXJlIG9ubHkgdmFsaWQgdW50aWwgdGhlCisgICAgICAgIG5leHQgaXRlcmF0aW9uIHN0ZXAsIHNvIHlvdSBzaG91bGQgZHVwKCkgdGhlbSBpZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0KKyAgICAgICAgZm9yIGEgbG9uZ2VyIHBlcmlvZC4KKworICAgICAgICBFeGFtcGxlOgorCisgICAgICAgIGltcG9ydCBvcworICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygncHl0aG9uL0xpYi9lbWFpbCcpOgorICAgICAgICAgICAgcHJpbnQocm9vdCwgImNvbnN1bWVzIiwgZW5kPSIiKQorICAgICAgICAgICAgcHJpbnQoc3VtKFtvcy5zdGF0KG5hbWUsIGRpcl9mZD1yb290ZmQpLnN0X3NpemUgZm9yIG5hbWUgaW4gZmlsZXNdKSwKKyAgICAgICAgICAgICAgICAgIGVuZD0iIikKKyAgICAgICAgICAgIHByaW50KCJieXRlcyBpbiIsIGxlbihmaWxlcyksICJub24tZGlyZWN0b3J5IGZpbGVzIikKKyAgICAgICAgICAgIGlmICdDVlMnIGluIGRpcnM6CisgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ0NWUycpICAjIGRvbid0IHZpc2l0IENWUyBkaXJlY3RvcmllcworICAgICAgICAiIiIKKyAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKKyAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgorICAgICAgICBvcmlnX3N0ID0gc3RhdCh0b3AsIGZvbGxvd19zeW1saW5rcz1GYWxzZSwgZGlyX2ZkPWRpcl9mZCkKKyAgICAgICAgdG9wZmQgPSBvcGVuKHRvcCwgT19SRE9OTFksIGRpcl9mZD1kaXJfZmQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIChmb2xsb3dfc3ltbGlua3Mgb3IgKHN0LlNfSVNESVIob3JpZ19zdC5zdF9tb2RlKSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguc2FtZXN0YXQob3JpZ19zdCwgc3RhdCh0b3BmZCkpKSk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBfZndhbGsodG9wZmQsIHRvcCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY2xvc2UodG9wZmQpCisKKyAgICBkZWYgX2Z3YWxrKHRvcGZkLCB0b3BwYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAjIE5vdGU6IFRoaXMgdXNlcyBPKGRlcHRoIG9mIHRoZSBkaXJlY3RvcnkgdHJlZSkgZmlsZSBkZXNjcmlwdG9yczogaWYKKyAgICAgICAgIyBuZWNlc3NhcnksIGl0IGNhbiBiZSBhZGFwdGVkIHRvIG9ubHkgcmVxdWlyZSBPKDEpIEZEcywgc2VlIGlzc3VlCisgICAgICAgICMgIzEzNzM0LgorCisgICAgICAgIG5hbWVzID0gbGlzdGRpcih0b3BmZCkKKyAgICAgICAgZGlycywgbm9uZGlycyA9IFtdLCBbXQorICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIEhlcmUsIHdlIGRvbid0IHVzZSBBVF9TWU1MSU5LX05PRk9MTE9XIHRvIGJlIGNvbnNpc3RlbnQgd2l0aAorICAgICAgICAgICAgICAgICMgd2FsaygpIHdoaWNoIHJlcG9ydHMgc3ltbGlua3MgdG8gZGlyZWN0b3JpZXMgYXMgZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgIyBXZSBkbyBob3dldmVyIGNoZWNrIGZvciBzeW1saW5rcyBiZWZvcmUgcmVjdXJzaW5nIGludG8KKyAgICAgICAgICAgICAgICAjIGEgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIGlmIHN0LlNfSVNESVIoc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQpLnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIEFkZCBkYW5nbGluZyBzeW1saW5rcywgaWdub3JlIGRpc2FwcGVhcmVkIGZpbGVzCisgICAgICAgICAgICAgICAgICAgIGlmIHN0LlNfSVNMTksoc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbm9uZGlycy5hcHBlbmQobmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgdG9wZG93bjoKKyAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCisKKyAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcmlnX3N0ID0gc3RhdChuYW1lLCBkaXJfZmQ9dG9wZmQsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICAgICAgZGlyZmQgPSBvcGVuKG5hbWUsIE9fUkRPTkxZLCBkaXJfZmQ9dG9wZmQpCisgICAgICAgICAgICBleGNlcHQgZXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoZXJyKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGZvbGxvd19zeW1saW5rcyBvciBwYXRoLnNhbWVzdGF0KG9yaWdfc3QsIHN0YXQoZGlyZmQpKToKKyAgICAgICAgICAgICAgICAgICAgZGlycGF0aCA9IHBhdGguam9pbih0b3BwYXRoLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIF9md2FsayhkaXJmZCwgZGlycGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbG9zZShkaXJmZCkKKworICAgICAgICBpZiBub3QgdG9wZG93bjoKKyAgICAgICAgICAgIHlpZWxkIHRvcHBhdGgsIGRpcnMsIG5vbmRpcnMsIHRvcGZkCisKKyAgICBfX2FsbF9fLmFwcGVuZCgiZndhbGsiKQorCiAjIE1ha2Ugc3VyZSBvcy5lbnZpcm9uIGV4aXN0cywgYXQgbGVhc3QKIHRyeToKICAgICBlbnZpcm9uCkBAIC00NDMsNyArNjUzLDcgQEAKIAogCiAjIENoYW5nZSBlbnZpcm9uIHRvIGF1dG9tYXRpY2FsbHkgY2FsbCBwdXRlbnYoKSwgdW5zZXRlbnYgaWYgdGhleSBleGlzdC4KLWZyb20gX2FiY29sbCBpbXBvcnQgTXV0YWJsZU1hcHBpbmcgICMgQ2FuJ3QgdXNlIGNvbGxlY3Rpb25zIChib290c3RyYXApCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKIAogY2xhc3MgX0Vudmlyb24oTXV0YWJsZU1hcHBpbmcpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhLCBlbmNvZGVrZXksIGRlY29kZWtleSwgZW5jb2RldmFsdWUsIGRlY29kZXZhbHVlLCBwdXRlbnYsIHVuc2V0ZW52KToKQEAgLTYwNywxNSArODE3LDE0IEBACiBmc2VuY29kZSwgZnNkZWNvZGUgPSBfZnNjb2RlYygpCiBkZWwgX2ZzY29kZWMKIAotZGVmIF9leGlzdHMobmFtZSk6Ci0gICAgcmV0dXJuIG5hbWUgaW4gZ2xvYmFscygpCi0KICMgU3VwcGx5IHNwYXduKigpIChwcm9iYWJseSBvbmx5IGZvciBVbml4KQogaWYgX2V4aXN0cygiZm9yayIpIGFuZCBub3QgX2V4aXN0cygic3Bhd252IikgYW5kIF9leGlzdHMoImV4ZWN2Iik6CiAKICAgICBQX1dBSVQgPSAwCiAgICAgUF9OT1dBSVQgPSBQX05PV0FJVE8gPSAxCiAKKyAgICBfX2FsbF9fLmV4dGVuZChbIlBfV0FJVCIsICJQX05PV0FJVCIsICJQX05PV0FJVE8iXSkKKwogICAgICMgWFhYIFNob3VsZCB3ZSBzdXBwb3J0IFBfREVUQUNIPyAgSSBzdXBwb3NlIGl0IGNvdWxkIGZvcmsoKSoqMgogICAgICMgYW5kIGNsb3NlIHRoZSBzdGQgSS9PIHN0cmVhbXMuICBBbHNvLCBQX09WRVJMQVkgaXMgdGhlIHNhbWUKICAgICAjIGFzIGV4ZWN2KigpPwpAQCAtNzc2LDcgKzk4NSw3IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBjbWQgdHlwZSAoJXMsIGV4cGVjdGVkIHN0cmluZykiICUgdHlwZShjbWQpKQogICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbW9kZSAlciIgJSBtb2RlKQotICAgIGlmIGJ1ZmZlcmluZyA9PSAwIG9yIGJ1ZmZlcmluZyA9PSBOb25lOgorICAgIGlmIGJ1ZmZlcmluZyA9PSAwIG9yIGJ1ZmZlcmluZyBpcyBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwb3BlbigpIGRvZXMgbm90IHN1cHBvcnQgdW5idWZmZXJlZCBzdHJlYW1zIikKICAgICBpbXBvcnQgc3VicHJvY2VzcywgaW8KICAgICBpZiBtb2RlID09ICJyIjoKZGlmZiAtLWdpdCBhL0xpYi9wZGIucHkgYi9MaWIvcGRiLnB5CmluZGV4IDY3NzZhM2YuLjMwNDMzOTEgMTAwNzU1Ci0tLSBhL0xpYi9wZGIucHkKKysrIGIvTGliL3BkYi5weQpAQCAtNzMsNiArNzMsNyBAQAogaW1wb3J0IGJkYgogaW1wb3J0IGRpcwogaW1wb3J0IGNvZGUKK2ltcG9ydCBnbG9iCiBpbXBvcnQgcHByaW50CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgaW5zcGVjdApAQCAtMTU1LDYgKzE1Niw4IEBACiAgICAgICAgICMgVHJ5IHRvIGxvYWQgcmVhZGxpbmUgaWYgaXQgZXhpc3RzCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCByZWFkbGluZQorICAgICAgICAgICAgIyByZW1vdmUgc29tZSBjb21tb24gZmlsZSBuYW1lIGRlbGltaXRlcnMKKyAgICAgICAgICAgIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCcgXHRcbmBAIyQlXiYqKCk9K1t7XX1cXHw7OlwnIiw8Pj8nKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYWxsb3dfa2JkaW50ID0gRmFsc2UKQEAgLTQ0NSw2ICs0NDgsNjEgQEAKICAgICBkZWYgZXJyb3Ioc2VsZiwgbXNnKToKICAgICAgICAgcHJpbnQoJyoqKicsIG1zZywgZmlsZT1zZWxmLnN0ZG91dCkKIAorICAgICMgR2VuZXJpYyBjb21wbGV0aW9uIGZ1bmN0aW9ucy4gIEluZGl2aWR1YWwgY29tcGxldGVfZm9vIG1ldGhvZHMgY2FuIGJlCisgICAgIyBhc3NpZ25lZCBiZWxvdyB0byBvbmUgb2YgdGhlc2UgZnVuY3Rpb25zLgorCisgICAgZGVmIF9jb21wbGV0ZV9sb2NhdGlvbihzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgICMgQ29tcGxldGUgYSBmaWxlL21vZHVsZS9mdW5jdGlvbiBsb2NhdGlvbiBmb3IgYnJlYWsvdGJyZWFrL2NsZWFyLgorICAgICAgICBpZiBsaW5lLnN0cmlwKCkuZW5kc3dpdGgoKCc6JywgJywnKSk6CisgICAgICAgICAgICAjIEhlcmUgY29tZXMgYSBsaW5lIG51bWJlciBvciBhIGNvbmRpdGlvbiB3aGljaCB3ZSBjYW4ndCBjb21wbGV0ZS4KKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAjIEZpcnN0LCB0cnkgdG8gZmluZCBtYXRjaGluZyBmdW5jdGlvbnMgKGkuZS4gZXhwcmVzc2lvbnMpLgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9jb21wbGV0ZV9leHByZXNzaW9uKHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgcmV0ID0gW10KKyAgICAgICAgIyBUaGVuLCB0cnkgdG8gY29tcGxldGUgZmlsZSBuYW1lcyBhcyB3ZWxsLgorICAgICAgICBnbG9icyA9IGdsb2IuZ2xvYih0ZXh0ICsgJyonKQorICAgICAgICBmb3IgZm4gaW4gZ2xvYnM6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZuKToKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuICsgJy8nKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZmlsZShmbikgYW5kIGZuLmxvd2VyKCkuZW5kc3dpdGgoKCcucHknLCAnLnB5dycpKToKKyAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuICsgJzonKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgX2NvbXBsZXRlX2JwbnVtYmVyKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhIGJyZWFrcG9pbnQgbnVtYmVyLiAgKFRoaXMgd291bGQgYmUgbW9yZSBoZWxwZnVsIGlmIHdlIGNvdWxkCisgICAgICAgICMgZGlzcGxheSBhZGRpdGlvbmFsIGluZm8gYWxvbmcgd2l0aCB0aGUgY29tcGxldGlvbnMsIHN1Y2ggYXMgZmlsZS9saW5lCisgICAgICAgICMgb2YgdGhlIGJyZWFrcG9pbnQuKQorICAgICAgICByZXR1cm4gW3N0cihpKSBmb3IgaSwgYnAgaW4gZW51bWVyYXRlKGJkYi5CcmVha3BvaW50LmJwYnludW1iZXIpCisgICAgICAgICAgICAgICAgaWYgYnAgaXMgbm90IE5vbmUgYW5kIHN0cihpKS5zdGFydHN3aXRoKHRleHQpXQorCisgICAgZGVmIF9jb21wbGV0ZV9leHByZXNzaW9uKHNlbGYsIHRleHQsIGxpbmUsIGJlZ2lkeCwgZW5kaWR4KToKKyAgICAgICAgIyBDb21wbGV0ZSBhbiBhcmJpdHJhcnkgZXhwcmVzc2lvbi4KKyAgICAgICAgaWYgbm90IHNlbGYuY3VyZnJhbWU6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgIyBDb2xsZWN0IGdsb2JhbHMgYW5kIGxvY2Fscy4gIEl0IGlzIHVzdWFsbHkgbm90IHJlYWxseSBzZW5zaWJsZSB0byBhbHNvCisgICAgICAgICMgY29tcGxldGUgYnVpbHRpbnMsIGFuZCB0aGV5IGNsdXR0ZXIgdGhlIG5hbWVzcGFjZSBxdWl0ZSBoZWF2aWx5LCBzbyB3ZQorICAgICAgICAjIGxlYXZlIHRoZW0gb3V0LgorICAgICAgICBucyA9IHNlbGYuY3VyZnJhbWUuZl9nbG9iYWxzLmNvcHkoKQorICAgICAgICBucy51cGRhdGUoc2VsZi5jdXJmcmFtZV9sb2NhbHMpCisgICAgICAgIGlmICcuJyBpbiB0ZXh0OgorICAgICAgICAgICAgIyBXYWxrIGFuIGF0dHJpYnV0ZSBjaGFpbiB1cCB0byB0aGUgbGFzdCBwYXJ0LCBzaW1pbGFyIHRvIHdoYXQKKyAgICAgICAgICAgICMgcmxjb21wbGV0ZXIgZG9lcy4gIFRoaXMgd2lsbCBiYWlsIGlmIGFueSBvZiB0aGUgcGFydHMgYXJlIG5vdAorICAgICAgICAgICAgIyBzaW1wbGUgYXR0cmlidXRlIGFjY2Vzcywgd2hpY2ggaXMgd2hhdCB3ZSB3YW50LgorICAgICAgICAgICAgZG90dGVkID0gdGV4dC5zcGxpdCgnLicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb2JqID0gbnNbZG90dGVkWzBdXQorICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIGRvdHRlZFsxOi0xXToKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosIHBhcnQpCisgICAgICAgICAgICBleGNlcHQgKEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgICAgICBwcmVmaXggPSAnLicuam9pbihkb3R0ZWRbOi0xXSkgKyAnLicKKyAgICAgICAgICAgIHJldHVybiBbcHJlZml4ICsgbiBmb3IgbiBpbiBkaXIob2JqKSBpZiBuLnN0YXJ0c3dpdGgoZG90dGVkWy0xXSldCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIENvbXBsZXRlIGEgc2ltcGxlIG5hbWUuCisgICAgICAgICAgICByZXR1cm4gW24gZm9yIG4gaW4gbnMua2V5cygpIGlmIG4uc3RhcnRzd2l0aCh0ZXh0KV0KKwogICAgICMgQ29tbWFuZCBkZWZpbml0aW9ucywgY2FsbGVkIGJ5IGNtZGxvb3AoKQogICAgICMgVGhlIGFyZ3VtZW50IGlzIHRoZSByZW1haW5pbmcgc3RyaW5nIG9uIHRoZSBjb21tYW5kIGxpbmUKICAgICAjIFJldHVybiB0cnVlIHRvIGV4aXQgZnJvbSB0aGUgY29tbWFuZCBsb29wCkBAIC01MjYsNiArNTg0LDggQEAKICAgICAgICAgICAgIHNlbGYuY29tbWFuZHNfZGVmaW5pbmcgPSBGYWxzZQogICAgICAgICAgICAgc2VsZi5wcm9tcHQgPSBwcm9tcHRfYmFjawogCisgICAgY29tcGxldGVfY29tbWFuZHMgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19icmVhayhzZWxmLCBhcmcsIHRlbXBvcmFyeSA9IDApOgogICAgICAgICAiIiJiKHJlYWspIFsgKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl0gXQogICAgICAgICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MuCkBAIC02MjgsNiArNjg4LDkgQEAKIAogICAgIGRvX2IgPSBkb19icmVhawogCisgICAgY29tcGxldGVfYnJlYWsgPSBfY29tcGxldGVfbG9jYXRpb24KKyAgICBjb21wbGV0ZV9iID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgZG9fdGJyZWFrKHNlbGYsIGFyZyk6CiAgICAgICAgICIiInRicmVhayBbIChbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dIF0KICAgICAgICAgU2FtZSBhcmd1bWVudHMgYXMgYnJlYWssIGJ1dCBzZXRzIGEgdGVtcG9yYXJ5IGJyZWFrcG9pbnQ6IGl0CkBAIC02MzUsNiArNjk4LDggQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZG9fYnJlYWsoYXJnLCAxKQogCisgICAgY29tcGxldGVfdGJyZWFrID0gX2NvbXBsZXRlX2xvY2F0aW9uCisKICAgICBkZWYgbGluZWluZm8oc2VsZiwgaWRlbnRpZmllcik6CiAgICAgICAgIGZhaWxlZCA9IChOb25lLCBOb25lLCBOb25lKQogICAgICAgICAjIElucHV0IGlzIGlkZW50aWZpZXIsIG1heSBiZSBpbiBzaW5nbGUgcXVvdGVzCkBAIC03MDQsNiArNzY5LDggQEAKICAgICAgICAgICAgICAgICBicC5lbmFibGUoKQogICAgICAgICAgICAgICAgIHNlbGYubWVzc2FnZSgnRW5hYmxlZCAlcycgJSBicCkKIAorICAgIGNvbXBsZXRlX2VuYWJsZSA9IF9jb21wbGV0ZV9icG51bWJlcgorCiAgICAgZGVmIGRvX2Rpc2FibGUoc2VsZiwgYXJnKToKICAgICAgICAgIiIiZGlzYWJsZSBicG51bWJlciBbYnBudW1iZXIgLi4uXQogICAgICAgICBEaXNhYmxlcyB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZgpAQCAtNzIyLDYgKzc4OSw4IEBACiAgICAgICAgICAgICAgICAgYnAuZGlzYWJsZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdEaXNhYmxlZCAlcycgJSBicCkKIAorICAgIGNvbXBsZXRlX2Rpc2FibGUgPSBfY29tcGxldGVfYnBudW1iZXIKKwogICAgIGRlZiBkb19jb25kaXRpb24oc2VsZiwgYXJnKToKICAgICAgICAgIiIiY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dCiAgICAgICAgIFNldCBhIG5ldyBjb25kaXRpb24gZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoCkBAIC03NDUsNiArODE0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdOZXcgY29uZGl0aW9uIHNldCBmb3IgYnJlYWtwb2ludCAlZC4nICUgYnAubnVtYmVyKQogCisgICAgY29tcGxldGVfY29uZGl0aW9uID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9faWdub3JlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiImlnbm9yZSBicG51bWJlciBbY291bnRdCiAgICAgICAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZgpAQCAtNzc2LDYgKzg0Nyw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi5tZXNzYWdlKCdXaWxsIHN0b3AgbmV4dCB0aW1lIGJyZWFrcG9pbnQgJWQgaXMgcmVhY2hlZC4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgYnAubnVtYmVyKQogCisgICAgY29tcGxldGVfaWdub3JlID0gX2NvbXBsZXRlX2JwbnVtYmVyCisKICAgICBkZWYgZG9fY2xlYXIoc2VsZiwgYXJnKToKICAgICAgICAgIiIiY2woZWFyKSBmaWxlbmFtZTpsaW5lbm9cbmNsKGVhcikgW2JwbnVtYmVyIFticG51bWJlci4uLl1dCiAgICAgICAgIFdpdGggYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBicmVha3BvaW50IG51bWJlcnMsIGNsZWFyCkBAIC04MjQsNiArODk3LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ0RlbGV0ZWQgJXMnICUgYnApCiAgICAgZG9fY2wgPSBkb19jbGVhciAjICdjJyBpcyBhbHJlYWR5IGFuIGFiYnJldmlhdGlvbiBmb3IgJ2NvbnRpbnVlJwogCisgICAgY29tcGxldGVfY2xlYXIgPSBfY29tcGxldGVfbG9jYXRpb24KKyAgICBjb21wbGV0ZV9jbCA9IF9jb21wbGV0ZV9sb2NhdGlvbgorCiAgICAgZGVmIGRvX3doZXJlKHNlbGYsIGFyZyk6CiAgICAgICAgICIiIncoaGVyZSkKICAgICAgICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4KQEAgLTEwMDcsNiArMTA4Myw4IEBACiAgICAgICAgIHN5cy5zZXR0cmFjZShzZWxmLnRyYWNlX2Rpc3BhdGNoKQogICAgICAgICBzZWxmLmxhc3RjbWQgPSBwLmxhc3RjbWQKIAorICAgIGNvbXBsZXRlX2RlYnVnID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb19xdWl0KHNlbGYsIGFyZyk6CiAgICAgICAgICIiInEodWl0KVxuZXhpdAogICAgICAgICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiBUaGUgcHJvZ3JhbSBiZWluZyBleGVjdXRlZCBpcyBhYm9ydGVkLgpAQCAtMTA5Myw2ICsxMTcxLDEwIEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHBhc3MKIAorICAgIGNvbXBsZXRlX3ByaW50ID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKyAgICBjb21wbGV0ZV9wID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKyAgICBjb21wbGV0ZV9wcCA9IF9jb21wbGV0ZV9leHByZXNzaW9uCisKICAgICBkZWYgZG9fbGlzdChzZWxmLCBhcmcpOgogICAgICAgICAiIiJsKGlzdCkgW2ZpcnN0IFssbGFzdF0gfCAuXQogCkBAIC0xMTczLDYgKzEyNTUsOCBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuX3ByaW50X2xpbmVzKGxpbmVzLCBsaW5lbm8pCiAKKyAgICBjb21wbGV0ZV9zb3VyY2UgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIF9wcmludF9saW5lcyhzZWxmLCBsaW5lcywgc3RhcnQsIGJyZWFrcz0oKSwgZnJhbWU9Tm9uZSk6CiAgICAgICAgICIiIlByaW50IGEgcmFuZ2Ugb2YgbGluZXMuIiIiCiAgICAgICAgIGlmIGZyYW1lOgpAQCAtMTIyNyw2ICsxMzExLDggQEAKICAgICAgICAgIyBOb25lIG9mIHRoZSBhYm92ZS4uLgogICAgICAgICBzZWxmLm1lc3NhZ2UodHlwZSh2YWx1ZSkpCiAKKyAgICBjb21wbGV0ZV93aGF0aXMgPSBfY29tcGxldGVfZXhwcmVzc2lvbgorCiAgICAgZGVmIGRvX2Rpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAgIiIiZGlzcGxheSBbZXhwcmVzc2lvbl0KIApAQCAtMTI0NCw2ICsxMzMwLDggQEAKICAgICAgICAgICAgIHNlbGYuZGlzcGxheWluZy5zZXRkZWZhdWx0KHNlbGYuY3VyZnJhbWUsIHt9KVthcmddID0gdmFsCiAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UoJ2Rpc3BsYXkgJXM6ICVyJyAlIChhcmcsIHZhbCkpCiAKKyAgICBjb21wbGV0ZV9kaXNwbGF5ID0gX2NvbXBsZXRlX2V4cHJlc3Npb24KKwogICAgIGRlZiBkb191bmRpc3BsYXkoc2VsZiwgYXJnKToKICAgICAgICAgIiIidW5kaXNwbGF5IFtleHByZXNzaW9uXQogCkBAIC0xMjU5LDYgKzEzNDcsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZGlzcGxheWluZy5wb3Aoc2VsZi5jdXJmcmFtZSwgTm9uZSkKIAorICAgIGRlZiBjb21wbGV0ZV91bmRpc3BsYXkoc2VsZiwgdGV4dCwgbGluZSwgYmVnaWR4LCBlbmRpZHgpOgorICAgICAgICByZXR1cm4gW2UgZm9yIGUgaW4gc2VsZi5kaXNwbGF5aW5nLmdldChzZWxmLmN1cmZyYW1lLCB7fSkKKyAgICAgICAgICAgICAgICBpZiBlLnN0YXJ0c3dpdGgodGV4dCldCisKICAgICBkZWYgZG9faW50ZXJhY3Qoc2VsZiwgYXJnKToKICAgICAgICAgIiIiaW50ZXJhY3QKIApAQCAtMTMxMyw2ICsxNDA1LDkgQEAKICAgICAgICAgaWYgYXJnc1swXSBpbiBzZWxmLmFsaWFzZXM6CiAgICAgICAgICAgICBkZWwgc2VsZi5hbGlhc2VzW2FyZ3NbMF1dCiAKKyAgICBkZWYgY29tcGxldGVfdW5hbGlhcyhzZWxmLCB0ZXh0LCBsaW5lLCBiZWdpZHgsIGVuZGlkeCk6CisgICAgICAgIHJldHVybiBbYSBmb3IgYSBpbiBzZWxmLmFsaWFzZXMgaWYgYS5zdGFydHN3aXRoKHRleHQpXQorCiAgICAgIyBMaXN0IG9mIGFsbCB0aGUgY29tbWFuZHMgbWFraW5nIHRoZSBwcm9ncmFtIHJlc3VtZSBleGVjdXRpb24uCiAgICAgY29tbWFuZHNfcmVzdW1pbmcgPSBbJ2RvX2NvbnRpbnVlJywgJ2RvX3N0ZXAnLCAnZG9fbmV4dCcsICdkb19yZXR1cm4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICdkb19xdWl0JywgJ2RvX2p1bXAnXQpkaWZmIC0tZ2l0IGEvTGliL3BpY2tsZS5weSBiL0xpYi9waWNrbGUucHkKaW5kZXggZDEwYWM3NzYuLjllNjUzNjggMTAwNjQ0Ci0tLSBhL0xpYi9waWNrbGUucHkKKysrIGIvTGliL3BpY2tsZS5weQpAQCAtMjMsOCArMjMsNiBAQAogCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIgICAgICAgIyBDb2RlIHZlcnNpb24KLQogZnJvbSB0eXBlcyBpbXBvcnQgRnVuY3Rpb25UeXBlLCBCdWlsdGluRnVuY3Rpb25UeXBlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCiBmcm9tIGNvcHlyZWcgaW1wb3J0IF9leHRlbnNpb25fcmVnaXN0cnksIF9pbnZlcnRlZF9yZWdpc3RyeSwgX2V4dGVuc2lvbl9jYWNoZQpAQCAtMjk5LDggKzI5Nyw4IEBACiAgICAgICAgICAgICBmKHNlbGYsIG9iaikgIyBDYWxsIHVuYm91bmQgbWV0aG9kIHdpdGggZXhwbGljaXQgc2VsZgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBDaGVjayBjb3B5cmVnLmRpc3BhdGNoX3RhYmxlCi0gICAgICAgIHJlZHVjZSA9IGRpc3BhdGNoX3RhYmxlLmdldCh0KQorICAgICAgICAjIENoZWNrIHByaXZhdGUgZGlzcGF0Y2ggdGFibGUgaWYgYW55LCBvciBlbHNlIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUKKyAgICAgICAgcmVkdWNlID0gZ2V0YXR0cihzZWxmLCAnZGlzcGF0Y2hfdGFibGUnLCBkaXNwYXRjaF90YWJsZSkuZ2V0KHQpCiAgICAgICAgIGlmIHJlZHVjZToKICAgICAgICAgICAgIHJ2ID0gcmVkdWNlKG9iaikKICAgICAgICAgZWxzZToKQEAgLTM3Nyw3ICszNzUsNyBAQAogICAgICAgICAgICAgIyBhbGxvd2luZyBwcm90b2NvbCAwIGFuZCAxIHRvIHdvcmsgbm9ybWFsbHkuICBGb3IgdGhpcyB0bwogICAgICAgICAgICAgIyB3b3JrLCB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgX19yZWR1Y2VfXyBzaG91bGQgYmUKICAgICAgICAgICAgICMgY2FsbGVkIF9fbmV3b2JqX18sIGFuZCBpdHMgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEKLSAgICAgICAgICAgICMgbmV3LXN0eWxlIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCisgICAgICAgICAgICAjIGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGZvciBfX25ld29ial9fCiAgICAgICAgICAgICAjIHNob3VsZCBiZSBhcyBmb2xsb3dzLCBhbHRob3VnaCBwaWNrbGUgaGFzIG5vIHdheSB0bwogICAgICAgICAgICAgIyB2ZXJpZnkgdGhpczoKICAgICAgICAgICAgICMKQEAgLTQ0MCw2ICs0MzgsMTQgQEAKICAgICAgICAgc2VsZi53cml0ZShOT05FKQogICAgIGRpc3BhdGNoW3R5cGUoTm9uZSldID0gc2F2ZV9ub25lCiAKKyAgICBkZWYgc2F2ZV9lbGxpcHNpcyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLnNhdmVfZ2xvYmFsKEVsbGlwc2lzLCAnRWxsaXBzaXMnKQorICAgIGRpc3BhdGNoW3R5cGUoRWxsaXBzaXMpXSA9IHNhdmVfZWxsaXBzaXMKKworICAgIGRlZiBzYXZlX25vdGltcGxlbWVudGVkKHNlbGYsIG9iaik6CisgICAgICAgIHNlbGYuc2F2ZV9nbG9iYWwoTm90SW1wbGVtZW50ZWQsICdOb3RJbXBsZW1lbnRlZCcpCisgICAgZGlzcGF0Y2hbdHlwZShOb3RJbXBsZW1lbnRlZCldID0gc2F2ZV9ub3RpbXBsZW1lbnRlZAorCiAgICAgZGVmIHNhdmVfYm9vbChzZWxmLCBvYmopOgogICAgICAgICBpZiBzZWxmLnByb3RvID49IDI6CiAgICAgICAgICAgICBzZWxmLndyaXRlKG9iaiBhbmQgTkVXVFJVRSBvciBORVdGQUxTRSkKQEAgLTEzMzIsNyArMTMzOCw3IEBACiAgICAgcmV0dXJuIGRvY3Rlc3QudGVzdG1vZCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgaW1wb3J0IHN5cywgYXJncGFyc2UKKyAgICBpbXBvcnQgYXJncGFyc2UKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgY29udGVudHMgb2YgdGhlIHBpY2tsZSBmaWxlcycpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGV0b29scy5weSBiL0xpYi9waWNrbGV0b29scy5weQppbmRleCBlYzZjYzUzLi42NmY0ZWRkIDEwMDY0NAotLS0gYS9MaWIvcGlja2xldG9vbHMucHkKKysrIGIvTGliL3BpY2tsZXRvb2xzLnB5CkBAIC01MTAsMTAgKzUxMCw3IEBACiAgICAgZWxpZiBzID09IGIiMDEiOgogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gaW50KHMpCi0gICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6Ci0gICAgICAgIHJldHVybiBpbnQocykKKyAgICByZXR1cm4gaW50KHMpCiAKIGRlZiByZWFkX2RlY2ltYWxubF9sb25nKGYpOgogICAgIHIiIiIKQEAgLTE2NDIsNiArMTYzOSw4IEBACiAgICAgICBpcyBwdXNoZWQgb24gdGhlIHN0YWNrLgogCiAgICAgICBOT1RFOiAgY2hlY2tzIGZvciBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyB3ZW50IGF3YXkgaW4gUHl0aG9uIDIuMy4KKyAgICAgIE5PVEU6ICB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBjbGFzc2VzIGRvZXMKKyAgICAgICAgICAgICBub3QgbWFrZSBzZW5zZSBpbiBQeXRob24gMy4KICAgICAgICIiIiksCiAKICAgICBJKG5hbWU9J09CSicsCmRpZmYgLS1naXQgYS9MaWIvcGlwZXMucHkgYi9MaWIvcGlwZXMucHkKaW5kZXggNDI5NzA1My4uZjFhMTZmNiAxMDA2NDQKLS0tIGEvTGliL3BpcGVzLnB5CisrKyBiL0xpYi9waXBlcy5weQpAQCAtNjAsNyArNjAsOSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHN0cmluZworIyB3ZSBpbXBvcnQgdGhlIHF1b3RlIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHRoZSBtb2R1bGUgZm9yIGJhY2t3YXJkIGNvbXBhdAorIyAocXVvdGUgdXNlZCB0byBiZSBhbiB1bmRvY3VtZW50ZWQgYnV0IHVzZWQgZnVuY3Rpb24gaW4gcGlwZXMpCitmcm9tIHNobGV4IGltcG9ydCBxdW90ZQogCiBfX2FsbF9fID0gWyJUZW1wbGF0ZSJdCiAKQEAgLTI0MywyMiArMjQ1LDMgQEAKICAgICAgICAgY21kbGlzdCA9IHRyYXBjbWQgKyAnXG4nICsgY21kbGlzdCArICdcbicgKyBybWNtZAogICAgICMKICAgICByZXR1cm4gY21kbGlzdAotCi0KLSMgUmVsaWFibHkgcXVvdGUgYSBzdHJpbmcgYXMgYSBzaW5nbGUgYXJndW1lbnQgZm9yIC9iaW4vc2gKLQotIyBTYWZlIHVucXVvdGVkCi1fc2FmZWNoYXJzID0gZnJvemVuc2V0KHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJykKLQotZGVmIHF1b3RlKGZpbGUpOgotICAgICIiIlJldHVybiBhIHNoZWxsLWVzY2FwZWQgdmVyc2lvbiBvZiB0aGUgZmlsZSBzdHJpbmcuIiIiCi0gICAgZm9yIGMgaW4gZmlsZToKLSAgICAgICAgaWYgYyBub3QgaW4gX3NhZmVjaGFyczoKLSAgICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgaWYgbm90IGZpbGU6Ci0gICAgICAgICAgICByZXR1cm4gIicnIgotICAgICAgICByZXR1cm4gZmlsZQotICAgICMgdXNlIHNpbmdsZSBxdW90ZXMsIGFuZCBwdXQgc2luZ2xlIHF1b3RlcyBpbnRvIGRvdWJsZSBxdW90ZXMKLSAgICAjIHRoZSBzdHJpbmcgJCdiIGlzIHRoZW4gcXVvdGVkIGFzICckJyInIidiJwotICAgIHJldHVybiAiJyIgKyBmaWxlLnJlcGxhY2UoIiciLCAiJ1wiJ1wiJyIpICsgIiciCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IDUxZGEwYjEuLjhiZGViMzIgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC0yLDggKzIsMTAgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wCiBpbXBvcnQgb3MucGF0aAorZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogZnJvbSB0eXBlcyBpbXBvcnQgTW9kdWxlVHlwZQogCiBfX2FsbF9fID0gWwpAQCAtMjEsNyArMjMsNyBAQAogICAgIGlmIG1hZ2ljICE9IGltcC5nZXRfbWFnaWMoKToKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIHN0cmVhbS5yZWFkKDQpICMgU2tpcCB0aW1lc3RhbXAKKyAgICBzdHJlYW0ucmVhZCg4KSAjIFNraXAgdGltZXN0YW1wIGFuZCBzaXplCiAgICAgcmV0dXJuIG1hcnNoYWwubG9hZChzdHJlYW0pCiAKIApAQCAtMTU1LDYgKzE1Nyw0OSBAQAogCiBpdGVyX2ltcG9ydGVyX21vZHVsZXMgPSBzaW1wbGVnZW5lcmljKGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcykKIAorIyBJbXBsZW1lbnQgYSBmaWxlIHdhbGtlciBmb3IgdGhlIG5vcm1hbCBpbXBvcnRsaWIgcGF0aCBob29rCitkZWYgX2l0ZXJfZmlsZV9maW5kZXJfbW9kdWxlcyhpbXBvcnRlciwgcHJlZml4PScnKToKKyAgICBpZiBpbXBvcnRlci5wYXRoIGlzIE5vbmUgb3Igbm90IG9zLnBhdGguaXNkaXIoaW1wb3J0ZXIucGF0aCk6CisgICAgICAgIHJldHVybgorCisgICAgeWllbGRlZCA9IHt9CisgICAgaW1wb3J0IGluc3BlY3QKKyAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lcyA9IG9zLmxpc3RkaXIoaW1wb3J0ZXIucGF0aCkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCisgICAgICAgIGZpbGVuYW1lcyA9IFtdCisgICAgZmlsZW5hbWVzLnNvcnQoKSAgIyBoYW5kbGUgcGFja2FnZXMgYmVmb3JlIHNhbWUtbmFtZWQgbW9kdWxlcworCisgICAgZm9yIGZuIGluIGZpbGVuYW1lczoKKyAgICAgICAgbW9kbmFtZSA9IGluc3BlY3QuZ2V0bW9kdWxlbmFtZShmbikKKyAgICAgICAgaWYgbW9kbmFtZT09J19faW5pdF9fJyBvciBtb2RuYW1lIGluIHlpZWxkZWQ6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oaW1wb3J0ZXIucGF0aCwgZm4pCisgICAgICAgIGlzcGtnID0gRmFsc2UKKworICAgICAgICBpZiBub3QgbW9kbmFtZSBhbmQgb3MucGF0aC5pc2RpcihwYXRoKSBhbmQgJy4nIG5vdCBpbiBmbjoKKyAgICAgICAgICAgIG1vZG5hbWUgPSBmbgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRpcmNvbnRlbnRzID0gb3MubGlzdGRpcihwYXRoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBpZ25vcmUgdW5yZWFkYWJsZSBkaXJlY3RvcmllcyBsaWtlIGltcG9ydCBkb2VzCisgICAgICAgICAgICAgICAgZGlyY29udGVudHMgPSBbXQorICAgICAgICAgICAgZm9yIGZuIGluIGRpcmNvbnRlbnRzOgorICAgICAgICAgICAgICAgIHN1Ym5hbWUgPSBpbnNwZWN0LmdldG1vZHVsZW5hbWUoZm4pCisgICAgICAgICAgICAgICAgaWYgc3VibmFtZT09J19faW5pdF9fJzoKKyAgICAgICAgICAgICAgICAgICAgaXNwa2cgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlICAgICMgbm90IGEgcGFja2FnZQorCisgICAgICAgIGlmIG1vZG5hbWUgYW5kICcuJyBub3QgaW4gbW9kbmFtZToKKyAgICAgICAgICAgIHlpZWxkZWRbbW9kbmFtZV0gPSAxCisgICAgICAgICAgICB5aWVsZCBwcmVmaXggKyBtb2RuYW1lLCBpc3BrZworCitpdGVyX2ltcG9ydGVyX21vZHVsZXMucmVnaXN0ZXIoCisgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyLCBfaXRlcl9maWxlX2ZpbmRlcl9tb2R1bGVzKQogCiBjbGFzcyBJbXBJbXBvcnRlcjoKICAgICAiIiJQRVAgMzAyIEltcG9ydGVyIHRoYXQgd3JhcHMgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBhbGdvcml0aG0KQEAgLTE2OCw2ICsyMTMsOCBAQAogICAgICIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9Tm9uZSk6CisgICAgICAgIHdhcm4oIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aD1Ob25lKToKQEAgLTIzMiw2ICsyNzksOCBAQAogICAgIGNvZGUgPSBzb3VyY2UgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZnVsbG5hbWUsIGZpbGUsIGZpbGVuYW1lLCBldGMpOgorICAgICAgICB3YXJuKCJUaGlzIGVtdWxhdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgJ2ltcG9ydGxpYicgaW5zdGVhZCIsCisgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQogICAgICAgICBzZWxmLmZ1bGxuYW1lID0gZnVsbG5hbWUKQEAgLTI1Niw3ICszMDUsNyBAQAogICAgICAgICBpZiBzZWxmLmZpbGUgYW5kIHNlbGYuZmlsZS5jbG9zZWQ6CiAgICAgICAgICAgICBtb2RfdHlwZSA9IHNlbGYuZXRjWzJdCiAgICAgICAgICAgICBpZiBtb2RfdHlwZT09aW1wLlBZX1NPVVJDRToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyVScpCisgICAgICAgICAgICAgICAgc2VsZi5maWxlID0gb3BlbihzZWxmLmZpbGVuYW1lLCAncicpCiAgICAgICAgICAgICBlbGlmIG1vZF90eXBlIGluIChpbXAuUFlfQ09NUElMRUQsIGltcC5DX0VYVEVOU0lPTik6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlID0gb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKQogCkBAIC0zMDEsNyArMzUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5maWxlLmNsb3NlKCkKICAgICAgICAgICAgIGVsaWYgbW9kX3R5cGU9PWltcC5QWV9DT01QSUxFRDoKICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZWxmLmZpbGVuYW1lWzotMV0pOgotICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihzZWxmLmZpbGVuYW1lWzotMV0sICdyVScpCisgICAgICAgICAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYuZmlsZW5hbWVbOi0xXSwgJ3InKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNvdXJjZSA9IGYucmVhZCgpCiAgICAgICAgICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgZWxpZiBtb2RfdHlwZT09aW1wLlBLR19ESVJFQ1RPUlk6CkBAIC0zMTUsOSArMzY0LDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lPU5vbmUpOgogICAgICAgICBmdWxsbmFtZSA9IHNlbGYuX2ZpeF9uYW1lKGZ1bGxuYW1lKQogICAgICAgICBtb2RfdHlwZSA9IHNlbGYuZXRjWzJdCi0gICAgICAgIGlmIHNlbGYuZXRjWzJdPT1pbXAuUEtHX0RJUkVDVE9SWToKKyAgICAgICAgaWYgbW9kX3R5cGU9PWltcC5QS0dfRElSRUNUT1JZOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9kZWxlZ2F0ZSgpLmdldF9maWxlbmFtZSgpCi0gICAgICAgIGVsaWYgc2VsZi5ldGNbMl0gaW4gKGltcC5QWV9TT1VSQ0UsIGltcC5QWV9DT01QSUxFRCwgaW1wLkNfRVhURU5TSU9OKToKKyAgICAgICAgZWxpZiBtb2RfdHlwZSBpbiAoaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuQ19FWFRFTlNJT04pOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW5hbWUKICAgICAgICAgcmV0dXJuIE5vbmUKIApAQCAtMzY2LDEwICs0MTUsNiBAQAogICAgIFRoZSByZXR1cm5lZCBpbXBvcnRlciBpcyBjYWNoZWQgaW4gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKICAgICBpZiBpdCB3YXMgbmV3bHkgY3JlYXRlZCBieSBhIHBhdGggaG9vay4KIAotICAgIElmIHRoZXJlIGlzIG5vIGltcG9ydGVyLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBiYXNpYyBpbXBvcnQKLSAgICBtYWNoaW5lcnkgaXMgcmV0dXJuZWQuIFRoaXMgd3JhcHBlciBpcyBuZXZlciBpbnNlcnRlZCBpbnRvCi0gICAgdGhlIGltcG9ydGVyIGNhY2hlIChOb25lIGlzIGluc2VydGVkIGluc3RlYWQpLgotCiAgICAgVGhlIGNhY2hlIChvciBwYXJ0IG9mIGl0KSBjYW4gYmUgY2xlYXJlZCBtYW51YWxseSBpZiBhCiAgICAgcmVzY2FuIG9mIHN5cy5wYXRoX2hvb2tzIGlzIG5lY2Vzc2FyeS4KICAgICAiIiIKQEAgLTM3OSwxOCArNDI0LDEyIEBACiAgICAgICAgIGZvciBwYXRoX2hvb2sgaW4gc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBwYXRoX2hvb2socGF0aF9pdGVtKQorICAgICAgICAgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLnNldGRlZmF1bHQocGF0aF9pdGVtLCBpbXBvcnRlcikKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGltcG9ydGVyID0gTm9uZQotICAgICAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5zZXRkZWZhdWx0KHBhdGhfaXRlbSwgaW1wb3J0ZXIpCi0KLSAgICBpZiBpbXBvcnRlciBpcyBOb25lOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnRlciA9IEltcEltcG9ydGVyKHBhdGhfaXRlbSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgaW1wb3J0ZXIgPSBOb25lCiAgICAgcmV0dXJuIGltcG9ydGVyCiAKIApAQCAtMzk4LDU1ICs0MzcsMzcgQEAKICAgICAiIiJZaWVsZCBQRVAgMzAyIGltcG9ydGVycyBmb3IgdGhlIGdpdmVuIG1vZHVsZSBuYW1lCiAKICAgICBJZiBmdWxsbmFtZSBjb250YWlucyBhICcuJywgdGhlIGltcG9ydGVycyB3aWxsIGJlIGZvciB0aGUgcGFja2FnZQotICAgIGNvbnRhaW5pbmcgZnVsbG5hbWUsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciBzeXMubWV0YV9wYXRoLAotICAgIHN5cy5wYXRoLCBhbmQgUHl0aG9uJ3MgImNsYXNzaWMiIGltcG9ydCBtYWNoaW5lcnksIGluIHRoYXQgb3JkZXIuICBJZgotICAgIHRoZSBuYW1lZCBtb2R1bGUgaXMgaW4gYSBwYWNrYWdlLCB0aGF0IHBhY2thZ2UgaXMgaW1wb3J0ZWQgYXMgYSBzaWRlCisgICAgY29udGFpbmluZyBmdWxsbmFtZSwgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBhbGwgcmVnaXN0ZXJlZCB0b3AgbGV2ZWwKKyAgICBpbXBvcnRlcnMgKGkuZS4gdGhvc2Ugb24gYm90aCBzeXMubWV0YV9wYXRoIGFuZCBzeXMucGF0aF9ob29rcykuCisKKyAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQogICAgIGVmZmVjdCBvZiBpbnZva2luZyB0aGlzIGZ1bmN0aW9uLgogCi0gICAgTm9uIFBFUCAzMDIgbWVjaGFuaXNtcyAoZS5nLiB0aGUgV2luZG93cyByZWdpc3RyeSkgdXNlZCBieSB0aGUKLSAgICBzdGFuZGFyZCBpbXBvcnQgbWFjaGluZXJ5IHRvIGZpbmQgZmlsZXMgaW4gYWx0ZXJuYXRpdmUgbG9jYXRpb25zCi0gICAgYXJlIHBhcnRpYWxseSBzdXBwb3J0ZWQsIGJ1dCBhcmUgc2VhcmNoZWQgQUZURVIgc3lzLnBhdGguIE5vcm1hbGx5LAotICAgIHRoZXNlIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgQkVGT1JFIHN5cy5wYXRoLCBwcmV2ZW50aW5nIHN5cy5wYXRoCi0gICAgZW50cmllcyBmcm9tIHNoYWRvd2luZyB0aGVtLgotCi0gICAgRm9yIHRoaXMgdG8gY2F1c2UgYSB2aXNpYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLCB0aGVyZSBtdXN0Ci0gICAgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lIHRoYXQgaXMgYWNjZXNzaWJsZSB2aWEgYm90aCBzeXMucGF0aAotICAgIGFuZCBvbmUgb2YgdGhlIG5vbiBQRVAgMzAyIGZpbGUgc3lzdGVtIG1lY2hhbmlzbXMuIEluIHRoaXMgY2FzZSwKLSAgICB0aGUgZW11bGF0aW9uIHdpbGwgZmluZCB0aGUgZm9ybWVyIHZlcnNpb24sIHdoaWxlIHRoZSBidWlsdGluCi0gICAgaW1wb3J0IG1lY2hhbmlzbSB3aWxsIGZpbmQgdGhlIGxhdHRlci4KLQotICAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6Ci0gICAgICAgIGltcC5DX0VYVEVOU0lPTiwgaW1wLlBZX1NPVVJDRSwgaW1wLlBZX0NPTVBJTEVELCBpbXAuUEtHX0RJUkVDVE9SWQorICAgIElmIG5vIG1vZHVsZSBuYW1lIGlzIHNwZWNpZmllZCwgYWxsIHRvcCBsZXZlbCBpbXBvcnRlcnMgYXJlIHByb2R1Y2VkLgogICAgICIiIgogICAgIGlmIGZ1bGxuYW1lLnN0YXJ0c3dpdGgoJy4nKToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoIlJlbGF0aXZlIG1vZHVsZSBuYW1lcyBub3Qgc3VwcG9ydGVkIikKKyAgICAgICAgbXNnID0gIlJlbGF0aXZlIG1vZHVsZSBuYW1lIHshcn0gbm90IHN1cHBvcnRlZCIuZm9ybWF0KGZ1bGxuYW1lKQorICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2cpCiAgICAgaWYgJy4nIGluIGZ1bGxuYW1lOgogICAgICAgICAjIEdldCB0aGUgY29udGFpbmluZyBwYWNrYWdlJ3MgX19wYXRoX18KLSAgICAgICAgcGtnID0gJy4nLmpvaW4oZnVsbG5hbWUuc3BsaXQoJy4nKVs6LTFdKQotICAgICAgICBpZiBwa2cgbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgX19pbXBvcnRfXyhwa2cpCi0gICAgICAgIHBhdGggPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BrZ10sICdfX3BhdGhfXycsIE5vbmUpIG9yIFtdCisgICAgICAgIHBrZ19uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpWzBdCisgICAgICAgIHBrZyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZykKKyAgICAgICAgcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbcGtnXSwgJ19fcGF0aF9fJywgTm9uZSkKKyAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCiAgICAgZWxzZToKICAgICAgICAgZm9yIGltcG9ydGVyIGluIHN5cy5tZXRhX3BhdGg6CiAgICAgICAgICAgICB5aWVsZCBpbXBvcnRlcgogICAgICAgICBwYXRoID0gc3lzLnBhdGgKICAgICBmb3IgaXRlbSBpbiBwYXRoOgogICAgICAgICB5aWVsZCBnZXRfaW1wb3J0ZXIoaXRlbSkKLSAgICBpZiAnLicgbm90IGluIGZ1bGxuYW1lOgotICAgICAgICB5aWVsZCBJbXBJbXBvcnRlcigpCiAKIGRlZiBnZXRfbG9hZGVyKG1vZHVsZV9vcl9uYW1lKToKICAgICAiIiJHZXQgYSBQRVAgMzAyICJsb2FkZXIiIG9iamVjdCBmb3IgbW9kdWxlX29yX25hbWUKIAotICAgIElmIHRoZSBtb2R1bGUgb3IgcGFja2FnZSBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgbm9ybWFsIGltcG9ydAotICAgIG1lY2hhbmlzbSwgYSB3cmFwcGVyIGFyb3VuZCB0aGUgcmVsZXZhbnQgcGFydCBvZiB0aGF0IG1hY2hpbmVyeQotICAgIGlzIHJldHVybmVkLiAgUmV0dXJucyBOb25lIGlmIHRoZSBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIG9yIGltcG9ydGVkLgorICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4KICAgICBJZiB0aGUgbmFtZWQgbW9kdWxlIGlzIG5vdCBhbHJlYWR5IGltcG9ydGVkLCBpdHMgY29udGFpbmluZyBwYWNrYWdlCiAgICAgKGlmIGFueSkgaXMgaW1wb3J0ZWQsIGluIG9yZGVyIHRvIGVzdGFibGlzaCB0aGUgcGFja2FnZSBfX3BhdGhfXy4KLQotICAgIFRoaXMgZnVuY3Rpb24gdXNlcyBpdGVyX2ltcG9ydGVycygpLCBhbmQgaXMgdGh1cyBzdWJqZWN0IHRvIHRoZSBzYW1lCi0gICAgbGltaXRhdGlvbnMgcmVnYXJkaW5nIHBsYXRmb3JtLXNwZWNpZmljIHNwZWNpYWwgaW1wb3J0IGxvY2F0aW9ucyBzdWNoCi0gICAgYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCiAgICAgIiIiCiAgICAgaWYgbW9kdWxlX29yX25hbWUgaW4gc3lzLm1vZHVsZXM6CiAgICAgICAgIG1vZHVsZV9vcl9uYW1lID0gc3lzLm1vZHVsZXNbbW9kdWxlX29yX25hbWVdCkBAIC00NjAsMjAgKzQ4MSwzMyBAQAogICAgICAgICBmdWxsbmFtZSA9IG1vZHVsZV9vcl9uYW1lCiAgICAgcmV0dXJuIGZpbmRfbG9hZGVyKGZ1bGxuYW1lKQogCisKIGRlZiBmaW5kX2xvYWRlcihmdWxsbmFtZSk6CiAgICAgIiIiRmluZCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBmdWxsbmFtZQogCi0gICAgSWYgZnVsbG5hbWUgY29udGFpbnMgZG90cywgcGF0aCBtdXN0IGJlIHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXy4KLSAgICBSZXR1cm5zIE5vbmUgaWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUgZm91bmQgb3IgaW1wb3J0ZWQuIFRoaXMgZnVuY3Rpb24gdXNlcwotICAgIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUgbGltaXRhdGlvbnMgcmVnYXJkaW5nCi0gICAgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCisgICAgVGhpcyBpcyBzIGNvbnZlbmllbmNlIHdyYXBwZXIgYXJvdW5kIDpmdW5jOmBpbXBvcnRsaWIuZmluZF9sb2FkZXJgIHRoYXQKKyAgICBzZXRzIHRoZSAqcGF0aCogYXJndW1lbnQgY29ycmVjdGx5IHdoZW4gc2VhcmNoaW5nIGZvciBzdWJtb2R1bGVzLCBhbmQKKyAgICBhbHNvIGVuc3VyZXMgcGFyZW50IHBhY2thZ2VzIChpZiBhbnkpIGFyZSBpbXBvcnRlZCBiZWZvcmUgc2VhcmNoaW5nIGZvcgorICAgIHN1Ym1vZHVsZXMuCiAgICAgIiIiCi0gICAgZm9yIGltcG9ydGVyIGluIGl0ZXJfaW1wb3J0ZXJzKGZ1bGxuYW1lKToKLSAgICAgICAgbG9hZGVyID0gaW1wb3J0ZXIuZmluZF9tb2R1bGUoZnVsbG5hbWUpCi0gICAgICAgIGlmIGxvYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBsb2FkZXIKLQotICAgIHJldHVybiBOb25lCisgICAgaWYgZnVsbG5hbWUuc3RhcnRzd2l0aCgnLicpOgorICAgICAgICBtc2cgPSAiUmVsYXRpdmUgbW9kdWxlIG5hbWUgeyFyfSBub3Qgc3VwcG9ydGVkIi5mb3JtYXQoZnVsbG5hbWUpCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZykKKyAgICBwYXRoID0gTm9uZQorICAgIHBrZ19uYW1lID0gZnVsbG5hbWUucnBhcnRpdGlvbigiLiIpWzBdCisgICAgaWYgcGtnX25hbWU6CisgICAgICAgIHBrZyA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKHBrZ19uYW1lKQorICAgICAgICBwYXRoID0gZ2V0YXR0cihwa2csICJfX3BhdGhfXyIsIE5vbmUpCisgICAgICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxuYW1lLCBwYXRoKQorICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IsIFZhbHVlRXJyb3IpIGFzIGV4OgorICAgICAgICAjIFRoaXMgaGFjayBmaXhlcyBhbiBpbXBlZGFuY2UgbWlzbWF0Y2ggYmV0d2VlbiBwa2d1dGlsIGFuZAorICAgICAgICAjIGltcG9ydGxpYiwgd2hlcmUgdGhlIGxhdHRlciB0aHJvd3Mgb3RoZXIgZXJyb3JzIGZvciBjYXNlcyB3aGVyZQorICAgICAgICAjIHBrZ3V0aWwgcHJldmlvdXNseSB0aHJldyBJbXBvcnRFcnJvcgorICAgICAgICBtc2cgPSAiRXJyb3Igd2hpbGUgZmluZGluZyBsb2FkZXIgZm9yIHshcn0gKHt9OiB7fSkiCisgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKG1zZy5mb3JtYXQoZnVsbG5hbWUsIHR5cGUoZXgpLCBleCkpIGZyb20gZXgKIAogCiBkZWYgZXh0ZW5kX3BhdGgocGF0aCwgbmFtZSk6CkBAIC01MTQsMjEgKzU0OCw0MSBAQAogICAgICAgICAjIGZyb3plbiBwYWNrYWdlLiAgUmV0dXJuIHRoZSBwYXRoIHVuY2hhbmdlZCBpbiB0aGF0IGNhc2UuCiAgICAgICAgIHJldHVybiBwYXRoCiAKLSAgICBwbmFtZSA9IG9zLnBhdGguam9pbigqbmFtZS5zcGxpdCgnLicpKSAjIFJlY29uc3RpdHV0ZSBhcyByZWxhdGl2ZSBwYXRoCiAgICAgc25hbWVfcGtnID0gbmFtZSArICIucGtnIgotICAgIGluaXRfcHkgPSAiX19pbml0X18ucHkiCiAKICAgICBwYXRoID0gcGF0aFs6XSAjIFN0YXJ0IHdpdGggYSBjb3B5IG9mIHRoZSBleGlzdGluZyBwYXRoCiAKLSAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkaXIsIHN0cikgb3Igbm90IG9zLnBhdGguaXNkaXIoZGlyKToKKyAgICBwYXJlbnRfcGFja2FnZSwgXywgZmluYWxfbmFtZSA9IG5hbWUucnBhcnRpdGlvbignLicpCisgICAgaWYgcGFyZW50X3BhY2thZ2U6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlYXJjaF9wYXRoID0gc3lzLm1vZHVsZXNbcGFyZW50X3BhY2thZ2VdLl9fcGF0aF9fCisgICAgICAgIGV4Y2VwdCAoS2V5RXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgICMgV2UgY2FuJ3QgZG8gYW55dGhpbmc6IGZpbmRfbG9hZGVyKCkgcmV0dXJucyBOb25lIHdoZW4KKyAgICAgICAgICAgICMgcGFzc2VkIGEgZG90dGVkIG5hbWUuCisgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgIGVsc2U6CisgICAgICAgIHNlYXJjaF9wYXRoID0gc3lzLnBhdGgKKworICAgIGZvciBkaXIgaW4gc2VhcmNoX3BhdGg6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGRpciwgc3RyKToKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIHN1YmRpciA9IG9zLnBhdGguam9pbihkaXIsIHBuYW1lKQotICAgICAgICAjIFhYWCBUaGlzIG1heSBzdGlsbCBhZGQgZHVwbGljYXRlIGVudHJpZXMgdG8gcGF0aCBvbgotICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMKLSAgICAgICAgaW5pdGZpbGUgPSBvcy5wYXRoLmpvaW4oc3ViZGlyLCBpbml0X3B5KQotICAgICAgICBpZiBzdWJkaXIgbm90IGluIHBhdGggYW5kIG9zLnBhdGguaXNmaWxlKGluaXRmaWxlKToKLSAgICAgICAgICAgIHBhdGguYXBwZW5kKHN1YmRpcikKKworICAgICAgICBmaW5kZXIgPSBnZXRfaW1wb3J0ZXIoZGlyKQorICAgICAgICBpZiBmaW5kZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElzIHRoaXMgZmluZGVyIFBFUCA0MjAgY29tcGxpYW50PworICAgICAgICAgICAgaWYgaGFzYXR0cihmaW5kZXIsICdmaW5kX2xvYWRlcicpOgorICAgICAgICAgICAgICAgIGxvYWRlciwgcG9ydGlvbnMgPSBmaW5kZXIuZmluZF9sb2FkZXIoZmluYWxfbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBObywgbm8gbmVlZCB0byBjYWxsIGl0CisgICAgICAgICAgICAgICAgbG9hZGVyID0gTm9uZQorICAgICAgICAgICAgICAgIHBvcnRpb25zID0gW10KKworICAgICAgICAgICAgZm9yIHBvcnRpb24gaW4gcG9ydGlvbnM6CisgICAgICAgICAgICAgICAgIyBYWFggVGhpcyBtYXkgc3RpbGwgYWRkIGR1cGxpY2F0ZSBlbnRyaWVzIHRvIHBhdGggb24KKyAgICAgICAgICAgICAgICAjIGNhc2UtaW5zZW5zaXRpdmUgZmlsZXN5c3RlbXMKKyAgICAgICAgICAgICAgICBpZiBwb3J0aW9uIG5vdCBpbiBwYXRoOgorICAgICAgICAgICAgICAgICAgICBwYXRoLmFwcGVuZChwb3J0aW9uKQorCiAgICAgICAgICMgWFhYIElzIHRoaXMgdGhlIHJpZ2h0IHRoaW5nIGZvciBzdWJwYWNrYWdlcyBsaWtlIHpvcGUuYXBwPwogICAgICAgICAjIEl0IGxvb2tzIGZvciBhIGZpbGUgbmFtZWQgInpvcGUuYXBwLnBrZyIKICAgICAgICAgcGtnZmlsZSA9IG9zLnBhdGguam9pbihkaXIsIHNuYW1lX3BrZykKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9DRFJPTS5weSBiL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvQ0RST00ucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvRExGQ04ucHkgYi9MaWIvcGxhdC1saW51eC9ETEZDTi5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL0RMRkNOLnB5CnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9ETEZDTi5weQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtbGludXgyL0lOLnB5IGIvTGliL3BsYXQtbGludXgvSU4ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9wbGF0LWxpbnV4Mi9JTi5weQpyZW5hbWUgdG8gTGliL3BsYXQtbGludXgvSU4ucHkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4Mi9UWVBFUy5weSBiL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvcGxhdC1saW51eDIvVFlQRVMucHkKcmVuYW1lIHRvIExpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eDIvcmVnZW4gYi9MaWIvcGxhdC1saW51eC9yZWdlbgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3BsYXQtbGludXgyL3JlZ2VuCnJlbmFtZSB0byBMaWIvcGxhdC1saW51eC9yZWdlbgpkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDY4NmEwNDUuLjJiOGEyNGEgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTExMSw2ICsxMTEsNyBAQAogCiBfX3ZlcnNpb25fXyA9ICcxLjAuNycKIAoraW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgc3lzLCBvcywgcmUsIHN1YnByb2Nlc3MKIAogIyMjIEdsb2JhbHMgJiBDb25zdGFudHMKQEAgLTEzMCwxNSArMTMxLDE1IEBACiAKICMjIyBQbGF0Zm9ybSBzcGVjaWZpYyBBUElzCiAKLV9saWJjX3NlYXJjaCA9IHJlLmNvbXBpbGUocicoX19saWJjX2luaXQpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhHTElCQ18oWzAtOS5dKykpJwotICAgICAgICAgICAgICAgICAgICAgICAgICAnfCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCitfbGliY19zZWFyY2ggPSByZS5jb21waWxlKGInKF9fbGliY19pbml0KScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYid8JworICAgICAgICAgICAgICAgICAgICAgICAgICBiJyhHTElCQ18oWzAtOS5dKykpJworICAgICAgICAgICAgICAgICAgICAgICAgICBiJ3wnCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyJyhsaWJjKF9cdyspP1wuc28oPzpcLihcZFswLTkuXSopKT8pJywgcmUuQVNDSUkpCiAKIGRlZiBsaWJjX3ZlcihleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLGxpYj0nJyx2ZXJzaW9uPScnLAogCi0gICAgICAgICAgICAgY2h1bmtzaXplPTIwNDgpOgorICAgICAgICAgICAgIGNodW5rc2l6ZT0xNjM4NCk6CiAKICAgICAiIiIgVHJpZXMgdG8gZGV0ZXJtaW5lIHRoZSBsaWJjIHZlcnNpb24gdGhhdCB0aGUgZmlsZSBleGVjdXRhYmxlCiAgICAgICAgICh3aGljaCBkZWZhdWx0cyB0byB0aGUgUHl0aG9uIGludGVycHJldGVyKSBpcyBsaW5rZWQgYWdhaW5zdC4KQEAgLTE1OSwxNyArMTYwLDIyIEBACiAgICAgICAgICMgYWJsZSB0byBvcGVuIHN5bWxpbmtzIGZvciByZWFkaW5nCiAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLnJlYWxwYXRoKGV4ZWN1dGFibGUpCiAgICAgZiA9IG9wZW4oZXhlY3V0YWJsZSwncmInKQotICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpLmRlY29kZSgnbGF0aW4tMScpCisgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkKICAgICBwb3MgPSAwCiAgICAgd2hpbGUgMToKLSAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgaWYgYidsaWJjJyBpbiBiaW5hcnkgb3IgYidHTElCQycgaW4gYmluYXJ5OgorICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG0gPSBOb25lCiAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAgICAgYmluYXJ5ID0gZi5yZWFkKGNodW5rc2l6ZSkuZGVjb2RlKCdsYXRpbi0xJykKKyAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCiAgICAgICAgICAgICBpZiBub3QgYmluYXJ5OgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBwb3MgPSAwCiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCxnbGliYyxnbGliY3ZlcnNpb24sc28sdGhyZWFkcyxzb3ZlcnNpb24gPSBtLmdyb3VwcygpCisgICAgICAgIGxpYmNpbml0LGdsaWJjLGdsaWJjdmVyc2lvbixzbyx0aHJlYWRzLHNvdmVyc2lvbiA9IFsKKyAgICAgICAgICAgIHMuZGVjb2RlKCdsYXRpbjEnKSBpZiBzIGlzIG5vdCBOb25lIGVsc2UgcworICAgICAgICAgICAgZm9yIHMgaW4gbS5ncm91cHMoKV0KICAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6CiAgICAgICAgICAgICBsaWIgPSAnbGliYycKICAgICAgICAgZWxpZiBnbGliYzoKQEAgLTI1NSw3ICsyNjEsNyBAQAogX3N1cHBvcnRlZF9kaXN0cyA9ICgKICAgICAnU3VTRScsICdkZWJpYW4nLCAnZmVkb3JhJywgJ3JlZGhhdCcsICdjZW50b3MnLAogICAgICdtYW5kcmFrZScsICdtYW5kcml2YScsICdyb2NrcycsICdzbGFja3dhcmUnLCAneWVsbG93ZG9nJywgJ2dlbnRvbycsCi0gICAgJ1VuaXRlZExpbnV4JywgJ3R1cmJvbGludXgnKQorICAgICdVbml0ZWRMaW51eCcsICd0dXJib2xpbnV4JywgJ2FyY2gnLCAnbWFnZWlhJykKIAogZGVmIF9wYXJzZV9yZWxlYXNlX2ZpbGUoZmlyc3RsaW5lKToKIApAQCAtMzU3LDkyICszNjMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9kaXN0cz1zdXBwb3J0ZWRfZGlzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX2Rpc3RyaWJ1dGlvbl9uYW1lPTApCiAKLWNsYXNzIF9wb3BlbjoKLQotICAgICIiIiBGYWlybHkgcG9ydGFibGUgKGFsdGVybmF0aXZlKSBwb3BlbiBpbXBsZW1lbnRhdGlvbi4KLQotICAgICAgICBUaGlzIGlzIG1vc3RseSBuZWVkZWQgaW4gY2FzZSBvcy5wb3BlbigpIGlzIG5vdCBhdmFpbGFibGUsIG9yCi0gICAgICAgIGRvZXNuJ3Qgd29yayBhcyBhZHZlcnRpc2VkLCBlLmcuIGluIFdpbjlYIEdVSSBwcm9ncmFtcyBsaWtlCi0gICAgICAgIFB5dGhvbldpbiBvciBJRExFLgotCi0gICAgICAgIFdyaXRpbmcgdG8gdGhlIHBpcGUgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuCi0KLSAgICAiIiIKLSAgICB0bXBmaWxlID0gJycKLSAgICBwaXBlID0gTm9uZQotICAgIGJ1ZnNpemUgPSBOb25lCi0gICAgbW9kZSA9ICdyJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsY21kLG1vZGU9J3InLGJ1ZnNpemU9Tm9uZSk6Ci0KLSAgICAgICAgaWYgbW9kZSAhPSAncic6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdwb3BlbigpLWVtdWxhdGlvbiBvbmx5IHN1cHBvcnRzIHJlYWQgbW9kZScpCi0gICAgICAgIGltcG9ydCB0ZW1wZmlsZQotICAgICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlID0gdGVtcGZpbGUubWt0ZW1wKCkKLSAgICAgICAgb3Muc3lzdGVtKGNtZCArICcgPiAlcycgJSB0bXBmaWxlKQotICAgICAgICBzZWxmLnBpcGUgPSBvcGVuKHRtcGZpbGUsJ3JiJykKLSAgICAgICAgc2VsZi5idWZzaXplID0gYnVmc2l6ZQotICAgICAgICBzZWxmLm1vZGUgPSBtb2RlCi0KLSAgICBkZWYgcmVhZChzZWxmKToKLQotICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWQoKQotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLQotICAgICAgICBpZiBzZWxmLmJ1ZnNpemUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5waXBlLnJlYWRsaW5lcygpCi0KLSAgICBkZWYgY2xvc2Uoc2VsZiwKLQotICAgICAgICAgICAgICByZW1vdmU9b3MudW5saW5rLGVycm9yPW9zLmVycm9yKToKLQotICAgICAgICBpZiBzZWxmLnBpcGU6Ci0gICAgICAgICAgICByYyA9IHNlbGYucGlwZS5jbG9zZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYyA9IDI1NQotICAgICAgICBpZiBzZWxmLnRtcGZpbGU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcmVtb3ZlKHNlbGYudG1wZmlsZSkKLSAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHJldHVybiByYwotCi0gICAgIyBBbGlhcwotICAgIF9fZGVsX18gPSBjbG9zZQotCiBkZWYgcG9wZW4oY21kLCBtb2RlPSdyJywgYnVmc2l6ZT0tMSk6CiAKICAgICAiIiIgUG9ydGFibGUgcG9wZW4oKSBpbnRlcmZhY2UuCiAgICAgIiIiCi0gICAgIyBGaW5kIGEgd29ya2luZyBwb3BlbiBpbXBsZW1lbnRhdGlvbiBwcmVmZXJyaW5nIHdpbjMycGlwZS5wb3BlbgotICAgICMgb3ZlciBvcy5wb3BlbiBvdmVyIF9wb3BlbgotICAgIHBvcGVuID0gTm9uZQotICAgIGlmIG9zLmVudmlyb24uZ2V0KCdPUycsJycpID09ICdXaW5kb3dzX05UJzoKLSAgICAgICAgIyBPbiBOVCB3aW4zMnBpcGUgc2hvdWxkIHdvcms7IG9uIFdpbjl4IGl0IGhhbmdzIGR1ZSB0byBidWdzCi0gICAgICAgICMgaW4gdGhlIE1TIEMgbGliIChzZWUgTVMgS25vd2xlZGdlQmFzZSBhcnRpY2xlIFExNTA5NTYpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCB3aW4zMnBpcGUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcG9wZW4gPSB3aW4zMnBpcGUucG9wZW4KLSAgICBpZiBwb3BlbiBpcyBOb25lOgotICAgICAgICBpZiBoYXNhdHRyKG9zLCdwb3BlbicpOgotICAgICAgICAgICAgcG9wZW4gPSBvcy5wb3BlbgotICAgICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IHdvcmtzLi4uIGl0IGRvZXNuJ3QgaW4gR1VJIHByb2dyYW1zCi0gICAgICAgICAgICAjIG9uIFdpbmRvd3MgcGxhdGZvcm1zCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzogIyBYWFggT3RoZXJzIHRvbyA/Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBwb3BlbignJykKLSAgICAgICAgICAgICAgICBleGNlcHQgb3MuZXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuID0gX3BvcGVuCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwb3BlbiA9IF9wb3BlbgotICAgIGlmIGJ1ZnNpemUgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBwb3BlbihjbWQsbW9kZSxidWZzaXplKQorICAgIGltcG9ydCB3YXJuaW5ncworICAgIHdhcm5pbmdzLndhcm4oJ3VzZSBvcy5wb3BlbiBpbnN0ZWFkJywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCisgICAgcmV0dXJuIG9zLnBvcGVuKGNtZCwgbW9kZSwgYnVmc2l6ZSkKIAogZGVmIF9ub3JtX3ZlcnNpb24odmVyc2lvbiwgYnVpbGQ9JycpOgogCkBAIC03NzksNyArNzA2LDcgQEAKICAgICBwbCA9IHBsaXN0bGliLnJlYWRQbGlzdChmbikKICAgICByZWxlYXNlID0gcGxbJ1Byb2R1Y3RWZXJzaW9uJ10KICAgICB2ZXJzaW9uaW5mbz0oJycsICcnLCAnJykKLSAgICBtYWNoaW5lID0gb3MudW5hbWUoKVs0XQorICAgIG1hY2hpbmUgPSBvcy51bmFtZSgpLm1hY2hpbmUKICAgICBpZiBtYWNoaW5lIGluICgncHBjJywgJ1Bvd2VyIE1hY2ludG9zaCcpOgogICAgICAgICAjIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGdlc3RhbHQgYmFzZWQgY29kZQogICAgICAgICBtYWNoaW5lID0gJ1Bvd2VyUEMnCkBAIC0xMDA0LDkgKzkzMSwxMCBAQAogICAgIHRyeToKICAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oWydmaWxlJywgdGFyZ2V0XSwKICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisKICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLG9zLmVycm9yKToKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCJsYXRpbi0xIikKKyAgICBvdXRwdXQgPSBwcm9jLmNvbW11bmljYXRlKClbMF0uZGVjb2RlKCdsYXRpbi0xJykKICAgICByYyA9IHByb2Mud2FpdCgpCiAgICAgaWYgbm90IG91dHB1dCBvciByYzoKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKQEAgLTExMDcsNiArMTAzNSw5IEBACiAKICMjIyBQb3J0YWJsZSB1bmFtZSgpIGludGVyZmFjZQogCit1bmFtZV9yZXN1bHQgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJ1bmFtZV9yZXN1bHQiLAorICAgICAgICAgICAgICAgICAgICAic3lzdGVtIG5vZGUgcmVsZWFzZSB2ZXJzaW9uIG1hY2hpbmUgcHJvY2Vzc29yIikKKwogX3VuYW1lX2NhY2hlID0gTm9uZQogCiBkZWYgdW5hbWUoKToKQEAgLTEyNDEsNyArMTE3Miw3IEBACiAgICAgICAgIHN5c3RlbSA9ICdXaW5kb3dzJwogICAgICAgICByZWxlYXNlID0gJ1Zpc3RhJwogCi0gICAgX3VuYW1lX2NhY2hlID0gc3lzdGVtLG5vZGUscmVsZWFzZSx2ZXJzaW9uLG1hY2hpbmUscHJvY2Vzc29yCisgICAgX3VuYW1lX2NhY2hlID0gdW5hbWVfcmVzdWx0KHN5c3RlbSxub2RlLHJlbGVhc2UsdmVyc2lvbixtYWNoaW5lLHByb2Nlc3NvcikKICAgICByZXR1cm4gX3VuYW1lX2NhY2hlCiAKICMjIyBEaXJlY3QgaW50ZXJmYWNlcyB0byBzb21lIG9mIHRoZSB1bmFtZSgpIHJldHVybiB2YWx1ZXMKQEAgLTEyNTMsNyArMTE4NCw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVswXQorICAgIHJldHVybiB1bmFtZSgpLnN5c3RlbQogCiBkZWYgbm9kZSgpOgogCkBAIC0xMjYzLDcgKzExOTQsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbMV0KKyAgICByZXR1cm4gdW5hbWUoKS5ub2RlCiAKIGRlZiByZWxlYXNlKCk6CiAKQEAgLTEyNzIsNyArMTIwMyw3IEBACiAgICAgICAgIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCBpZiB0aGUgdmFsdWUgY2Fubm90IGJlIGRldGVybWluZWQuCiAKICAgICAiIiIKLSAgICByZXR1cm4gdW5hbWUoKVsyXQorICAgIHJldHVybiB1bmFtZSgpLnJlbGVhc2UKIAogZGVmIHZlcnNpb24oKToKIApAQCAtMTI4MSw3ICsxMjEyLDcgQEAKICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZC4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzNdCisgICAgcmV0dXJuIHVuYW1lKCkudmVyc2lvbgogCiBkZWYgbWFjaGluZSgpOgogCkBAIC0xMjkwLDcgKzEyMjEsNyBAQAogICAgICAgICBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLgogCiAgICAgIiIiCi0gICAgcmV0dXJuIHVuYW1lKClbNF0KKyAgICByZXR1cm4gdW5hbWUoKS5tYWNoaW5lCiAKIGRlZiBwcm9jZXNzb3IoKToKIApAQCAtMTMwMiw3ICsxMjMzLDcgQEAKICAgICAgICAgZS5nLiAgTmV0QlNEIGRvZXMgdGhpcy4KIAogICAgICIiIgotICAgIHJldHVybiB1bmFtZSgpWzVdCisgICAgcmV0dXJuIHVuYW1lKCkucHJvY2Vzc29yCiAKICMjIyBWYXJpb3VzIEFQSXMgZm9yIGV4dHJhY3RpbmcgaW5mb3JtYXRpb24gZnJvbSBzeXMudmVyc2lvbgogCmRpZmYgLS1naXQgYS9MaWIvcGxpc3RsaWIucHkgYi9MaWIvcGxpc3RsaWIucHkKaW5kZXggMmU3ZTUxMi4uNDFmZDhmMiAxMDA2NDQKLS0tIGEvTGliL3BsaXN0bGliLnB5CisrKyBiL0xpYi9wbGlzdGxpYi5weQpAQCAtMjM3LDIwICsyMzcsMjYgQEAKICAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJkYXRhIikKIAogICAgIGRlZiB3cml0ZURpY3Qoc2VsZiwgZCk6Ci0gICAgICAgIHNlbGYuYmVnaW5FbGVtZW50KCJkaWN0IikKLSAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVtczoKLSAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGtleSwgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKLSAgICAgICAgICAgIHNlbGYuc2ltcGxlRWxlbWVudCgia2V5Iiwga2V5KQotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBpZiBkOgorICAgICAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImRpY3QiKQorICAgICAgICAgICAgaXRlbXMgPSBzb3J0ZWQoZC5pdGVtcygpKQorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlbXM6CisgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCBzdHIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImtleXMgbXVzdCBiZSBzdHJpbmdzIikKKyAgICAgICAgICAgICAgICBzZWxmLnNpbXBsZUVsZW1lbnQoImtleSIsIGtleSkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlVmFsdWUodmFsdWUpCisgICAgICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImRpY3QiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJkaWN0IikKIAogICAgIGRlZiB3cml0ZUFycmF5KHNlbGYsIGFycmF5KToKLSAgICAgICAgc2VsZi5iZWdpbkVsZW1lbnQoImFycmF5IikKLSAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgotICAgICAgICAgICAgc2VsZi53cml0ZVZhbHVlKHZhbHVlKQotICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImFycmF5IikKKyAgICAgICAgaWYgYXJyYXk6CisgICAgICAgICAgICBzZWxmLmJlZ2luRWxlbWVudCgiYXJyYXkiKQorICAgICAgICAgICAgZm9yIHZhbHVlIGluIGFycmF5OgorICAgICAgICAgICAgICAgIHNlbGYud3JpdGVWYWx1ZSh2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuZW5kRWxlbWVudCgiYXJyYXkiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zaW1wbGVFbGVtZW50KCJhcnJheSIpCiAKIAogY2xhc3MgX0ludGVybmFsRGljdChkaWN0KToKQEAgLTI2NiwxMyArMjcyLDEzIEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiB2YWx1ZQogCiAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIGF0dHIsIHZhbHVlKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJBdHRyaWJ1dGUgYWNjZXNzIGZyb20gcGxpc3QgZGljdHMgaXMgZGVwcmVjYXRlZCwgdXNlIGRba2V5XSAiCi0gICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJub3RhdGlvbiBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmW2F0dHJdID0gdmFsdWUKIAogICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBhdHRyKToKQEAgLTI4MiwxNCArMjg4LDE0IEBACiAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihhdHRyKQogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIkF0dHJpYnV0ZSBhY2Nlc3MgZnJvbSBwbGlzdCBkaWN0cyBpcyBkZXByZWNhdGVkLCB1c2UgZFtrZXldICIKLSAgICAgICAgICAgICAibm90YXRpb24gaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAgIm5vdGF0aW9uIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAKIGNsYXNzIERpY3QoX0ludGVybmFsRGljdCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiAgICAgICAgIHdhcm4oIlRoZSBwbGlzdGxpYi5EaWN0IGNsYXNzIGlzIGRlcHJlY2F0ZWQsIHVzZSBidWlsdGluIGRpY3QgaW5zdGVhZCIsCi0gICAgICAgICAgICAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKIApAQCAtMzAyLDcgKzMwOCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgZnJvbSB3YXJuaW5ncyBpbXBvcnQgd2FybgogICAgICAgICB3YXJuKCJUaGUgUGxpc3QgY2xhc3MgaXMgZGVwcmVjYXRlZCwgdXNlIHRoZSByZWFkUGxpc3QoKSBhbmQgIgotICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgICJ3cml0ZVBsaXN0KCkgZnVuY3Rpb25zIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKiprd2FyZ3MpCiAKICAgICBkZWYgZnJvbUZpbGUoY2xzLCBwYXRoT3JGaWxlKToKZGlmZiAtLWdpdCBhL0xpYi9wb3BsaWIucHkgYi9MaWIvcG9wbGliLnB5CmluZGV4IDg0ZWE4OGQuLmQ0MmQ5ZGQgMTAwNjQ0Ci0tLSBhL0xpYi9wb3BsaWIucHkKKysrIGIvTGliL3BvcGxpYi5weQpAQCAtMjUwLDE1ICsyNTAsMTggQEAKIAogICAgIGRlZiBxdWl0KHNlbGYpOgogICAgICAgICAiIiJTaWdub2ZmOiBjb21taXQgY2hhbmdlcyBvbiBzZXJ2ZXIsIHVubG9jayBtYWlsYm94LCBjbG9zZSBjb25uZWN0aW9uLiIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwID0gc2VsZi5fc2hvcnRjbWQoJ1FVSVQnKQotICAgICAgICBleGNlcHQgZXJyb3JfcHJvdG8gYXMgdmFsOgotICAgICAgICAgICAgcmVzcCA9IHZhbAotICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQotICAgICAgICBzZWxmLnNvY2suY2xvc2UoKQotICAgICAgICBkZWwgc2VsZi5maWxlLCBzZWxmLnNvY2sKKyAgICAgICAgcmVzcCA9IHNlbGYuX3Nob3J0Y21kKCdRVUlUJykKKyAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiByZXNwCiAKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICIiIkNsb3NlIHRoZSBjb25uZWN0aW9uIHdpdGhvdXQgYXNzdW1pbmcgYW55dGhpbmcgYWJvdXQgaXQuIiIiCisgICAgICAgIGlmIHNlbGYuZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuZmlsZS5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc29jayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYuZmlsZSA9IHNlbGYuc29jayA9IE5vbmUKKwogICAgICNfX2RlbF9fID0gcXVpdAogCiAKZGlmZiAtLWdpdCBhL0xpYi9wb3NpeHBhdGgucHkgYi9MaWIvcG9zaXhwYXRoLnB5CmluZGV4IDJlMzYyNWIuLmNiOTM3OTYgMTAwNjQ0Ci0tLSBhL0xpYi9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Bvc2l4cGF0aC5weQpAQCAtODgsNyArODgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcyBpbiAoYSwgKSArIHApCiAgICAgICAgIGlmIHZhbGlkX3R5cGVzOgogICAgICAgICAgICAgIyBNdXN0IGhhdmUgYSBtaXh0dXJlIG9mIHRleHQgYW5kIGJpbmFyeSBkYXRhCi0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IG1peCBzdHJpbmdzIGFuZCBieXRlcyBpbiBwYXRoIGNvbXBvbmVudHMuIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgbWl4IHN0cmluZ3MgYW5kIGJ5dGVzIGluIHBhdGggIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21wb25lbnRzLiIpIGZyb20gTm9uZQogICAgICAgICByYWlzZQogICAgIHJldHVybiBwYXRoCiAKZGlmZiAtLWdpdCBhL0xpYi9wcm9maWxlLnB5IGIvTGliL3Byb2ZpbGUucHkKaW5kZXggMjk3ZTMyZC4uNzQzZTc3ZCAxMDA3NTUKLS0tIGEvTGliL3Byb2ZpbGUucHkKKysrIGIvTGliL3Byb2ZpbGUucHkKQEAgLTgzLDI2ICs4Myw2IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHByb2YucHJpbnRfc3RhdHMoc29ydCkKIAotaWYgaGFzYXR0cihvcywgInRpbWVzIik6Ci0gICAgZGVmIF9nZXRfdGltZV90aW1lcyh0aW1lcj1vcy50aW1lcyk6Ci0gICAgICAgIHQgPSB0aW1lcigpCi0gICAgICAgIHJldHVybiB0WzBdICsgdFsxXQotCi0jIFVzaW5nIGdldHJ1c2FnZSgzKSBpcyBiZXR0ZXIgdGhhbiBjbG9jaygzKSBpZiBhdmFpbGFibGU6Ci0jIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBGcmVlQlNEKSwgZ2V0cnVzYWdlIGhhcyBhIGhpZ2hlciByZXNvbHV0aW9uCi0jIEZ1cnRoZXJtb3JlLCBvbiBhIFBPU0lYIHN5c3RlbSwgcmV0dXJucyBtaWNyb3NlY29uZHMsIHdoaWNoCi0jIHdyYXAgYXJvdW5kIGFmdGVyIDM2bWluLgotX2hhc19yZXMgPSAwCi10cnk6Ci0gICAgaW1wb3J0IHJlc291cmNlCi0gICAgcmVzZ2V0cnVzYWdlID0gbGFtYmRhOiByZXNvdXJjZS5nZXRydXNhZ2UocmVzb3VyY2UuUlVTQUdFX1NFTEYpCi0gICAgZGVmIF9nZXRfdGltZV9yZXNvdXJjZSh0aW1lcj1yZXNnZXRydXNhZ2UpOgotICAgICAgICB0ID0gdGltZXIoKQotICAgICAgICByZXR1cm4gdFswXSArIHRbMV0KLSAgICBfaGFzX3JlcyA9IDEKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KIGNsYXNzIFByb2ZpbGU6CiAgICAgIiIiUHJvZmlsZXIgY2xhc3MuCiAKQEAgLTE1NSwyMCArMTM1LDggQEAKICAgICAgICAgc2VsZi5iaWFzID0gYmlhcyAgICAgIyBNYXRlcmlhbGl6ZSBpbiBsb2NhbCBkaWN0IGZvciBsb29rdXAgc3BlZWQuCiAKICAgICAgICAgaWYgbm90IHRpbWVyOgotICAgICAgICAgICAgaWYgX2hhc19yZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHJlc2dldHJ1c2FnZQotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3Jlc291cmNlCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIodGltZSwgJ2Nsb2NrJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi50aW1lciA9IHNlbGYuZ2V0X3RpbWUgPSB0aW1lLmNsb2NrCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCi0gICAgICAgICAgICBlbGlmIGhhc2F0dHIob3MsICd0aW1lcycpOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBvcy50aW1lcwotICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hlciA9IHNlbGYudHJhY2VfZGlzcGF0Y2gKLSAgICAgICAgICAgICAgICBzZWxmLmdldF90aW1lID0gX2dldF90aW1lX3RpbWVzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYudGltZXIgPSBzZWxmLmdldF90aW1lID0gdGltZS50aW1lCi0gICAgICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVyID0gc2VsZi50cmFjZV9kaXNwYXRjaF9pCisgICAgICAgICAgICBzZWxmLnRpbWVyID0gc2VsZi5nZXRfdGltZSA9IHRpbWUucHJvY2Vzc190aW1lCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZXIgPSBzZWxmLnRyYWNlX2Rpc3BhdGNoX2kKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYudGltZXIgPSB0aW1lcgogICAgICAgICAgICAgdCA9IHNlbGYudGltZXIoKSAjIHRlc3Qgb3V0IHRpbWVyIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9MaWIvcHN0YXRzLnB5IGIvTGliL3BzdGF0cy5weQppbmRleCBiZmJhYTQxLi42YTc3NjA1IDEwMDY0NAotLS0gYS9MaWIvcHN0YXRzLnB5CisrKyBiL0xpYi9wc3RhdHMucHkKQEAgLTY3OCwxMyArNjc4LDE0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0b3AKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpbXBvcnQgc3lzCiAgICAgaWYgbGVuKHN5cy5hcmd2KSA+IDE6CiAgICAgICAgIGluaXRwcm9maWxlID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICBpbml0cHJvZmlsZSA9IE5vbmUKICAgICB0cnk6CiAgICAgICAgIGJyb3dzZXIgPSBQcm9maWxlQnJvd3Nlcihpbml0cHJvZmlsZSkKKyAgICAgICAgZm9yIHByb2ZpbGUgaW4gc3lzLmFyZ3ZbMjpdOgorICAgICAgICAgICAgYnJvd3Nlci5kb19hZGQocHJvZmlsZSkKICAgICAgICAgcHJpbnQoIldlbGNvbWUgdG8gdGhlIHByb2ZpbGUgc3RhdGlzdGljcyBicm93c2VyLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCiAgICAgICAgIGJyb3dzZXIuY21kbG9vcCgpCiAgICAgICAgIHByaW50KCJHb29kYnllLiIsIGZpbGU9YnJvd3Nlci5zdHJlYW0pCmRpZmYgLS1naXQgYS9MaWIvcHlfY29tcGlsZS5weSBiL0xpYi9weV9jb21waWxlLnB5CmluZGV4IDVhZGI3MGEuLjYyZDY5YWQgMTAwNjQ0Ci0tLSBhL0xpYi9weV9jb21waWxlLnB5CisrKyBiL0xpYi9weV9jb21waWxlLnB5CkBAIC0xMTAsOSArMTEwLDExIEBACiAgICAgIiIiCiAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKGZpbGUpIGFzIGY6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWVzdGFtcCA9IGludChvcy5mc3RhdChmLmZpbGVubygpKS5zdF9tdGltZSkKKyAgICAgICAgICAgIHN0ID0gb3MuZnN0YXQoZi5maWxlbm8oKSkKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KG9zLnN0YXQoZmlsZSkuc3RfbXRpbWUpCisgICAgICAgICAgICBzdCA9IG9zLnN0YXQoZmlsZSkKKyAgICAgICAgdGltZXN0YW1wID0gaW50KHN0LnN0X210aW1lKQorICAgICAgICBzaXplID0gc3Quc3Rfc2l6ZSAmIDB4RkZGRkZGRkYKICAgICAgICAgY29kZXN0cmluZyA9IGYucmVhZCgpCiAgICAgdHJ5OgogICAgICAgICBjb2Rlb2JqZWN0ID0gYnVpbHRpbnMuY29tcGlsZShjb2Rlc3RyaW5nLCBkZmlsZSBvciBmaWxlLCAnZXhlYycsCkBAIC0xMzksNiArMTQxLDcgQEAKICAgICB3aXRoIG9wZW4oY2ZpbGUsICd3YicpIGFzIGZjOgogICAgICAgICBmYy53cml0ZShiJ1wwXDBcMFwwJykKICAgICAgICAgd3JfbG9uZyhmYywgdGltZXN0YW1wKQorICAgICAgICB3cl9sb25nKGZjLCBzaXplKQogICAgICAgICBtYXJzaGFsLmR1bXAoY29kZW9iamVjdCwgZmMpCiAgICAgICAgIGZjLmZsdXNoKCkKICAgICAgICAgZmMuc2VlaygwLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3B5Y2xici5weSBiL0xpYi9weWNsYnIucHkKaW5kZXggNjVlOWZiZS4uOWVjMDVlZSAxMDA2NDQKLS0tIGEvTGliL3B5Y2xici5weQorKysgYi9MaWIvcHljbGJyLnB5CkBAIC0zOSw4ICszOSwxMCBAQAogICAgICAgICBsaW5lbm8gLS0gdGhlIGxpbmUgaW4gdGhlIGZpbGUgb24gd2hpY2ggdGhlIGNsYXNzIHN0YXRlbWVudCBvY2N1cnJlZAogIiIiCiAKK2ltcG9ydCBpbworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgdG9rZW5pemUKIGZyb20gdG9rZW4gaW1wb3J0IE5BTUUsIERFREVOVCwgT1AKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKQEAgLTEzNSwxOSArMTM3LDI0IEBACiAgICAgIyBTZWFyY2ggdGhlIHBhdGggZm9yIHRoZSBtb2R1bGUKICAgICBmID0gTm9uZQogICAgIGlmIGlucGFja2FnZSBpcyBub3QgTm9uZToKLSAgICAgICAgZiwgZm5hbWUsIChfcywgX20sIHR5KSA9IGltcC5maW5kX21vZHVsZShtb2R1bGUsIHBhdGgpCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aAogICAgIGVsc2U6Ci0gICAgICAgIGYsIGZuYW1lLCAoX3MsIF9tLCB0eSkgPSBpbXAuZmluZF9tb2R1bGUobW9kdWxlLCBwYXRoICsgc3lzLnBhdGgpCi0gICAgaWYgdHkgPT0gaW1wLlBLR19ESVJFQ1RPUlk6Ci0gICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbZm5hbWVdCi0gICAgICAgIHBhdGggPSBbZm5hbWVdICsgcGF0aAotICAgICAgICBmLCBmbmFtZSwgKF9zLCBfbSwgdHkpID0gaW1wLmZpbmRfbW9kdWxlKCdfX2luaXRfXycsIFtmbmFtZV0pCisgICAgICAgIHNlYXJjaF9wYXRoID0gcGF0aCArIHN5cy5wYXRoCisgICAgbG9hZGVyID0gaW1wb3J0bGliLmZpbmRfbG9hZGVyKGZ1bGxtb2R1bGUsIHNlYXJjaF9wYXRoKQorICAgIGZuYW1lID0gbG9hZGVyLmdldF9maWxlbmFtZShmdWxsbW9kdWxlKQogICAgIF9tb2R1bGVzW2Z1bGxtb2R1bGVdID0gZGljdAotICAgIGlmIHR5ICE9IGltcC5QWV9TT1VSQ0U6CisgICAgaWYgbG9hZGVyLmlzX3BhY2thZ2UoZnVsbG1vZHVsZSk6CisgICAgICAgIGRpY3RbJ19fcGF0aF9fJ10gPSBbb3MucGF0aC5kaXJuYW1lKGZuYW1lKV0KKyAgICB0cnk6CisgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKGZ1bGxtb2R1bGUpCisgICAgICAgIGlmIHNvdXJjZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBJbXBvcnRFcnJvcik6CiAgICAgICAgICMgbm90IFB5dGhvbiBzb3VyY2UsIGNhbid0IGRvIGFueXRoaW5nIHdpdGggdGhpcyBtb2R1bGUKLSAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBkaWN0CiAKKyAgICBmID0gaW8uU3RyaW5nSU8oc291cmNlKQorCiAgICAgc3RhY2sgPSBbXSAjIHN0YWNrIG9mIChjbGFzcywgaW5kZW50KSBwYWlycwogCiAgICAgZyA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhmLnJlYWRsaW5lKQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5CmluZGV4IDM3NjE2ZmIuLmZhNTMxZTkgMTAwNzU1Ci0tLSBhL0xpYi9weWRvYy5weQorKysgYi9MaWIvcHlkb2MucHkKQEAgLTEsNyArMSw3IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAiIiJHZW5lcmF0ZSBQeXRob24gZG9jdW1lbnRhdGlvbiBpbiBIVE1MIG9yIHRleHQgZm9yIGludGVyYWN0aXZlIHVzZS4KIAotSW4gdGhlIFB5dGhvbiBpbnRlcnByZXRlciwgZG8gImZyb20gcHlkb2MgaW1wb3J0IGhlbHAiIHRvIHByb3ZpZGUgb25saW5lCitJbiB0aGUgUHl0aG9uIGludGVycHJldGVyLCBkbyAiZnJvbSBweWRvYyBpbXBvcnQgaGVscCIgdG8gcHJvdmlkZQogaGVscC4gIENhbGxpbmcgaGVscCh0aGluZykgb24gYSBQeXRob24gb2JqZWN0IGRvY3VtZW50cyB0aGUgb2JqZWN0LgogCiBPciwgYXQgdGhlIHNoZWxsIGNvbW1hbmQgbGluZSBvdXRzaWRlIG9mIFB5dGhvbjoKQEAgLTIyLDExICsyMiw2IEBACiBvcGVuIGEgV2ViIGJyb3dzZXIgdG8gaW50ZXJhY3RpdmVseSBicm93c2UgZG9jdW1lbnRhdGlvbi4gIFRoZSAtcCBvcHRpb24KIGNhbiBiZSB1c2VkIHdpdGggdGhlIC1iIG9wdGlvbiB0byBleHBsaWNpdGx5IHNwZWNpZnkgdGhlIHNlcnZlciBwb3J0LgogCi1Gb3IgcGxhdGZvcm1zIHdpdGhvdXQgYSBjb21tYW5kIGxpbmUsICJweWRvYyAtZyIgc3RhcnRzIHRoZSBIVFRQIHNlcnZlcgotYW5kIGFsc28gcG9wcyB1cCBhIGxpdHRsZSB3aW5kb3cgZm9yIGNvbnRyb2xsaW5nIGl0LiAgVGhpcyBvcHRpb24gaXMKLWRlcHJlY2F0ZWQsIHNpbmNlIHRoZSBzZXJ2ZXIgY2FuIG5vdyBiZSBjb250cm9sbGVkIGRpcmVjdGx5IGZyb20gSFRUUAotY2xpZW50cy4KLQogUnVuICJweWRvYyAtdyA8bmFtZT4iIHRvIHdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZQogdG8gYSBmaWxlIG5hbWVkICI8bmFtZT4uaHRtbCIuCiAKQEAgLTQyLDcgKzM3LDYgQEAKIF9fYXV0aG9yX18gPSAiS2EtUGluZyBZZWUgPHBpbmdAbGZ3Lm9yZz4iCiBfX2RhdGVfXyA9ICIyNiBGZWJydWFyeSAyMDAxIgogCi1fX3ZlcnNpb25fXyA9ICIkUmV2aXNpb24kIgogX19jcmVkaXRzX18gPSAiIiJHdWlkbyB2YW4gUm9zc3VtLCBmb3IgYW4gZXhjZWxsZW50IHByb2dyYW1taW5nIGxhbmd1YWdlLgogVG9tbXkgQnVybmV0dGUsIHRoZSBvcmlnaW5hbCBjcmVhdG9yIG9mIG1hbnB5LgogUGF1bCBQcmVzY29kLCBmb3IgYWxsIGhpcyB3b3JrIG9uIG9ubGluZWhlbHAuCkBAIC01OSw2ICs1Myw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgaW8KIGltcG9ydCBvcwpAQCAtMTY4LDEyICsxNjMsMTIgQEAKIAogZGVmIHZpc2libGVuYW1lKG5hbWUsIGFsbD1Ob25lLCBvYmo9Tm9uZSk6CiAgICAgIiIiRGVjaWRlIHdoZXRoZXIgdG8gc2hvdyBkb2N1bWVudGF0aW9uIG9uIGEgdmFyaWFibGUuIiIiCi0gICAgIyBDZXJ0YWluIHNwZWNpYWwgbmFtZXMgYXJlIHJlZHVuZGFudC4KLSAgICBfaGlkZGVuX25hbWVzID0gKCdfX2J1aWx0aW5zX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX3BhdGhfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX19tb2R1bGVfXycsICdfX25hbWVfXycsICdfX3Nsb3RzX18nLCAnX19wYWNrYWdlX18nLAotICAgICAgICAgICAgICAgICAgICAgJ19fY2FjaGVkX18nLCAnX19hdXRob3JfXycsICdfX2NyZWRpdHNfXycsICdfX2RhdGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAnX192ZXJzaW9uX18nKQotICAgIGlmIG5hbWUgaW4gX2hpZGRlbl9uYW1lczogcmV0dXJuIDAKKyAgICAjIENlcnRhaW4gc3BlY2lhbCBuYW1lcyBhcmUgcmVkdW5kYW50IG9yIGludGVybmFsLgorICAgIGlmIG5hbWUgaW4geydfX2F1dGhvcl9fJywgJ19fYnVpbHRpbnNfXycsICdfX2NhY2hlZF9fJywgJ19fY3JlZGl0c19fJywKKyAgICAgICAgICAgICAgICAnX19kYXRlX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2luaXRpYWxpemluZ19fJywKKyAgICAgICAgICAgICAgICAnX19sb2FkZXJfXycsICdfX21vZHVsZV9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAnX19wYXRoX18nLCAnX19xdWFsbmFtZV9fJywgJ19fc2xvdHNfXycsICdfX3ZlcnNpb25fXyd9OgorICAgICAgICByZXR1cm4gMAogICAgICMgUHJpdmF0ZSBuYW1lcyBhcmUgaGlkZGVuLCBidXQgc3BlY2lhbCBuYW1lcyBhcmUgZGlzcGxheWVkLgogICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnX18nKSBhbmQgbmFtZS5lbmRzd2l0aCgnX18nKTogcmV0dXJuIDEKICAgICAjIE5hbWVkdHVwbGVzIGhhdmUgcHVibGljIGZpZWxkcyBhbmQgbWV0aG9kcyB3aXRoIGEgc2luZ2xlIGxlYWRpbmcgdW5kZXJzY29yZQpAQCAtMjI2LDIwICsyMjEsMzQgQEAKICAgICBtdGltZSA9IG9zLnN0YXQoZmlsZW5hbWUpLnN0X210aW1lCiAgICAgbGFzdHVwZGF0ZSwgcmVzdWx0ID0gY2FjaGUuZ2V0KGZpbGVuYW1lLCAoTm9uZSwgTm9uZSkpCiAgICAgaWYgbGFzdHVwZGF0ZSBpcyBOb25lIG9yIGxhc3R1cGRhdGUgPCBtdGltZToKLSAgICAgICAgaW5mbyA9IGluc3BlY3QuZ2V0bW9kdWxlaW5mbyhmaWxlbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZmlsZSA9IHRva2VuaXplLm9wZW4oZmlsZW5hbWUpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgIyBtb2R1bGUgY2FuJ3QgYmUgb3BlbmVkLCBzbyBza2lwIGl0CiAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBpbmZvIGFuZCAnYicgaW4gaW5mb1syXTogIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCi0gICAgICAgICAgICB0cnk6IG1vZHVsZSA9IGltcC5sb2FkX21vZHVsZSgnX190ZW1wX18nLCBmaWxlLCBmaWxlbmFtZSwgaW5mb1sxOl0pCi0gICAgICAgICAgICBleGNlcHQ6IHJldHVybiBOb25lCisgICAgICAgIGJpbmFyeV9zdWZmaXhlcyA9IGltcG9ydGxpYi5tYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVNbOl0KKyAgICAgICAgYmluYXJ5X3N1ZmZpeGVzICs9IGltcG9ydGxpYi5tYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTWzpdCisgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbiBiaW5hcnlfc3VmZml4ZXMpOgorICAgICAgICAgICAgIyBiaW5hcnkgbW9kdWxlcyBoYXZlIHRvIGJlIGltcG9ydGVkCisgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGFueShmaWxlbmFtZS5lbmRzd2l0aCh4KSBmb3IgeCBpbgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKToKKyAgICAgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9hZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5FeHRlbnNpb25GaWxlTG9hZGVyKCdfX3RlbXBfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX190ZW1wX18nKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICByZXN1bHQgPSAobW9kdWxlLl9fZG9jX18gb3IgJycpLnNwbGl0bGluZXMoKVswXQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydfX3RlbXBfXyddCi0gICAgICAgIGVsc2U6ICMgdGV4dCBtb2R1bGVzIGNhbiBiZSBkaXJlY3RseSBleGFtaW5lZAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyB0ZXh0IG1vZHVsZXMgY2FuIGJlIGRpcmVjdGx5IGV4YW1pbmVkCiAgICAgICAgICAgICByZXN1bHQgPSBzb3VyY2Vfc3lub3BzaXMoZmlsZSkKICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCiAgICAgICAgIGNhY2hlW2ZpbGVuYW1lXSA9IChtdGltZSwgcmVzdWx0KQogICAgIHJldHVybiByZXN1bHQKIApAQCAtMzA1LDkgKzMxNCw4IEBACiAgICAgICAgIGVsaWYgZXhjIGlzIFN5bnRheEVycm9yOgogICAgICAgICAgICAgIyBBIFN5bnRheEVycm9yIG9jY3VycmVkIGJlZm9yZSB3ZSBjb3VsZCBleGVjdXRlIHRoZSBtb2R1bGUuCiAgICAgICAgICAgICByYWlzZSBFcnJvckR1cmluZ0ltcG9ydCh2YWx1ZS5maWxlbmFtZSwgaW5mbykKLSAgICAgICAgZWxpZiBleGMgaXMgSW1wb3J0RXJyb3IgYW5kIGV4dHJhY3RfdGIodGIpWy0xXVsyXT09J3NhZmVpbXBvcnQnOgotICAgICAgICAgICAgIyBUaGUgaW1wb3J0IGVycm9yIG9jY3VycmVkIGRpcmVjdGx5IGluIHRoaXMgZnVuY3Rpb24sCi0gICAgICAgICAgICAjIHdoaWNoIG1lYW5zIHRoZXJlIGlzIG5vIHN1Y2ggbW9kdWxlIGluIHRoZSBwYXRoLgorICAgICAgICBlbGlmIGV4YyBpcyBJbXBvcnRFcnJvciBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgorICAgICAgICAgICAgIyBObyBzdWNoIG1vZHVsZSBpbiB0aGUgcGF0aC4KICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFNvbWUgb3RoZXIgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBpbXBvcnRpbmcgcHJvY2Vzcy4KQEAgLTM2MSw3ICszNjksNyBAQAogCiAgICAgICAgIGRvY2xvYyA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05ET0NTIiwgc2VsZi5QWVRIT05ET0NTKQogCi0gICAgICAgIGJhc2VkaXIgPSBvcy5wYXRoLmpvaW4oc3lzLmV4ZWNfcHJlZml4LCAibGliIiwKKyAgICAgICAgYmFzZWRpciA9IG9zLnBhdGguam9pbihzeXMuYmFzZV9leGVjX3ByZWZpeCwgImxpYiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkLiVkIiAlICBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgaWYgKGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlKG9zKSkgYW5kCiAgICAgICAgICAgICAob2JqZWN0Ll9fbmFtZV9fIGluICgnZXJybm8nLCAnZXhjZXB0aW9ucycsICdnYycsICdpbXAnLApAQCAtOTYzLDYgKzk3MSw5IEBACiAgICAgICAgIG1vZHBrZ3MgPSBbXQogICAgICAgICBpZiBzaGFkb3dlZCBpcyBOb25lOiBzaGFkb3dlZCA9IHt9CiAgICAgICAgIGZvciBpbXBvcnRlciwgbmFtZSwgaXNwa2cgaW4gcGtndXRpbC5pdGVyX21vZHVsZXMoW2Rpcl0pOgorICAgICAgICAgICAgaWYgYW55KCgweEQ4MDAgPD0gb3JkKGNoKSA8PSAweERGRkYpIGZvciBjaCBpbiBuYW1lKToKKyAgICAgICAgICAgICAgICAjIGlnbm9yZSBhIG1vZHVsZSBpZiBpdHMgbmFtZSBjb250YWlucyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgbW9kcGtncy5hcHBlbmQoKG5hbWUsICcnLCBpc3BrZywgbmFtZSBpbiBzaGFkb3dlZCkpCiAgICAgICAgICAgICBzaGFkb3dlZFtuYW1lXSA9IDEKIApAQCAtMTgyNyw3ICsxODM4LDcgQEAKIAogICAgIGRlZiBpbnRybyhzZWxmKToKICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCi1XZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIG9ubGluZSBoZWxwIHV0aWxpdHkuCitXZWxjb21lIHRvIFB5dGhvbiAlcyEgIFRoaXMgaXMgdGhlIGludGVyYWN0aXZlIGhlbHAgdXRpbGl0eS4KIAogSWYgdGhpcyBpcyB5b3VyIGZpcnN0IHRpbWUgdXNpbmcgUHl0aG9uLCB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0CiB0aGUgdHV0b3JpYWwgb24gdGhlIEludGVybmV0IGF0IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJXMvdHV0b3JpYWwvLgpAQCAtMjAxOCwxNCArMjAyOSw2IEBACiAgICAgICAgICAgICBpZiBzZWxmLnF1aXQ6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICAgICAgIyBYWFggU2tpcHBpbmcgdGhpcyBmaWxlIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcKLSAgICAgICAgICAgICMgdGhhdCBjYXVzZXMgcHl0aG9uIHRvIGNyYXNoIHdpdGggYSBzZWdmYXVsdC4KLSAgICAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTkzMTkKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgVE9ETyBSZW1vdmUgdGhpcyBvbmNlIHRoZSBidWcgaXMgZml4ZWQuCi0gICAgICAgICAgICBpZiBtb2RuYW1lIGluIHsndGVzdC5iYWRzeW50YXhfcGVwMzEyMCcsICdiYWRzeW50YXhfcGVwMzEyMCd9OgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KICAgICAgICAgICAgIGlmIGtleSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNhbGxiYWNrKE5vbmUsIG1vZG5hbWUsICcnKQogICAgICAgICAgICAgZWxzZToKQEAgLTIwMzcsNyArMjA0MCw3IEBACiAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihsb2FkZXIsICdnZXRfc291cmNlJyk6CiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGxvYWRlci5nZXRfc291cmNlKG1vZG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBvbmVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IobW9kbmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMDc0LDI3MiArMjA3Nyw2IEBACiAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnKSAjIGlnbm9yZSBwcm9ibGVtcyBkdXJpbmcgaW1wb3J0CiAgICAgICAgIE1vZHVsZVNjYW5uZXIoKS5ydW4oY2FsbGJhY2ssIGtleSwgb25lcnJvcj1vbmVycm9yKQogCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXZWIgYnJvd3NlciBpbnRlcmZhY2UKLQotZGVmIHNlcnZlKHBvcnQsIGNhbGxiYWNrPU5vbmUsIGNvbXBsZXRlcj1Ob25lKToKLSAgICBpbXBvcnQgaHR0cC5zZXJ2ZXIsIGVtYWlsLm1lc3NhZ2UsIHNlbGVjdAotCi0gICAgbXNnID0gJ3RoZSBweWRvYy5zZXJ2ZSgpIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQnCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgRG9jSGFuZGxlcihodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKLSAgICAgICAgZGVmIHNlbmRfZG9jdW1lbnQoc2VsZiwgdGl0bGUsIGNvbnRlbnRzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsICd0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgnKQotICAgICAgICAgICAgICAgIHNlbGYuZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoaHRtbC5wYWdlKHRpdGxlLCBjb250ZW50cykuZW5jb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6IHBhc3MKLQotICAgICAgICBkZWYgZG9fR0VUKHNlbGYpOgotICAgICAgICAgICAgcGF0aCA9IHNlbGYucGF0aAotICAgICAgICAgICAgaWYgcGF0aFstNTpdID09ICcuaHRtbCc6IHBhdGggPSBwYXRoWzotNV0KLSAgICAgICAgICAgIGlmIHBhdGhbOjFdID09ICcvJzogcGF0aCA9IHBhdGhbMTpdCi0gICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoICE9ICcuJzoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIG9iaiA9IGxvY2F0ZShwYXRoLCBmb3JjZWxvYWQ9MSkKLSAgICAgICAgICAgICAgICBleGNlcHQgRXJyb3JEdXJpbmdJbXBvcnQgYXMgdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLCBodG1sLmVzY2FwZShzdHIodmFsdWUpKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgICAgaWYgb2JqOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZG9jdW1lbnQoZGVzY3JpYmUob2JqKSwgaHRtbC5kb2N1bWVudChvYmosIHBhdGgpKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudChwYXRoLAotJ25vIFB5dGhvbiBkb2N1bWVudGF0aW9uIGZvdW5kIGZvciAlcycgJSByZXByKHBhdGgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoZWFkaW5nID0gaHRtbC5oZWFkaW5nKAotJzxiaWc+PGJpZz48c3Ryb25nPlB5dGhvbjogSW5kZXggb2YgTW9kdWxlczwvc3Ryb25nPjwvYmlnPjwvYmlnPicsCi0nI2ZmZmZmZicsICcjNzc5OWVlJykKLSAgICAgICAgICAgICAgICBkZWYgYmx0aW5saW5rKG5hbWUpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxhIGhyZWY9IiVzLmh0bWwiPiVzPC9hPicgJSAobmFtZSwgbmFtZSkKLSAgICAgICAgICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyBpZiB4ICE9ICdfX21haW5fXyddCi0gICAgICAgICAgICAgICAgY29udGVudHMgPSBodG1sLm11bHRpY29sdW1uKG5hbWVzLCBibHRpbmxpbmspCi0gICAgICAgICAgICAgICAgaW5kaWNlcyA9IFsnPHA+JyArIGh0bWwuYmlnc2VjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ0J1aWx0LWluIE1vZHVsZXMnLCAnI2ZmZmZmZicsICcjZWU3N2FhJywgY29udGVudHMpXQotCi0gICAgICAgICAgICAgICAgc2VlbiA9IHt9Ci0gICAgICAgICAgICAgICAgZm9yIGRpciBpbiBzeXMucGF0aDoKLSAgICAgICAgICAgICAgICAgICAgaW5kaWNlcy5hcHBlbmQoaHRtbC5pbmRleChkaXIsIHNlZW4pKQotICAgICAgICAgICAgICAgIGNvbnRlbnRzID0gaGVhZGluZyArICcgJy5qb2luKGluZGljZXMpICsgJycnPHAgYWxpZ249cmlnaHQ+Ci08Zm9udCBjb2xvcj0iIzkwOTA5MCIgZmFjZT0iaGVsdmV0aWNhLCBhcmlhbCI+PHN0cm9uZz4KLXB5ZG9jPC9zdHJvbmc+IGJ5IEthLVBpbmcgWWVlICZsdDtwaW5nQGxmdy5vcmcmZ3Q7PC9mb250PicnJwotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9kb2N1bWVudCgnSW5kZXggb2YgTW9kdWxlcycsIGNvbnRlbnRzKQotCi0gICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCAqYXJncyk6IHBhc3MKLQotICAgIGNsYXNzIERvY1NlcnZlcihodHRwLnNlcnZlci5IVFRQU2VydmVyKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIGNhbGxiYWNrKToKLSAgICAgICAgICAgIGhvc3QgPSAnbG9jYWxob3N0JwotICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gKGhvc3QsIHBvcnQpCi0gICAgICAgICAgICBzZWxmLnVybCA9ICdodHRwOi8vJXM6JWQvJyAlIChob3N0LCBwb3J0KQotICAgICAgICAgICAgc2VsZi5jYWxsYmFjayA9IGNhbGxiYWNrCi0gICAgICAgICAgICBzZWxmLmJhc2UuX19pbml0X18oc2VsZiwgc2VsZi5hZGRyZXNzLCBzZWxmLmhhbmRsZXIpCi0KLSAgICAgICAgZGVmIHNlcnZlX3VudGlsX3F1aXQoc2VsZik6Ci0gICAgICAgICAgICBpbXBvcnQgc2VsZWN0Ci0gICAgICAgICAgICBzZWxmLnF1aXQgPSBGYWxzZQotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYucXVpdDoKLSAgICAgICAgICAgICAgICByZCwgd3IsIGV4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zb2NrZXQuZmlsZW5vKCldLCBbXSwgW10sIDEpCi0gICAgICAgICAgICAgICAgaWYgcmQ6IHNlbGYuaGFuZGxlX3JlcXVlc3QoKQotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQotCi0gICAgICAgIGRlZiBzZXJ2ZXJfYWN0aXZhdGUoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLmJhc2Uuc2VydmVyX2FjdGl2YXRlKHNlbGYpCi0gICAgICAgICAgICBpZiBzZWxmLmNhbGxiYWNrOiBzZWxmLmNhbGxiYWNrKHNlbGYpCi0KLSAgICBEb2NTZXJ2ZXIuYmFzZSA9IGh0dHAuc2VydmVyLkhUVFBTZXJ2ZXIKLSAgICBEb2NTZXJ2ZXIuaGFuZGxlciA9IERvY0hhbmRsZXIKLSAgICBEb2NIYW5kbGVyLk1lc3NhZ2VDbGFzcyA9IGVtYWlsLm1lc3NhZ2UuTWVzc2FnZQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgRG9jU2VydmVyKHBvcnQsIGNhbGxiYWNrKS5zZXJ2ZV91bnRpbF9xdWl0KCkKLSAgICAgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgc2VsZWN0LmVycm9yKToKLSAgICAgICAgICAgIHBhc3MKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBjb21wbGV0ZXI6IGNvbXBsZXRlcigpCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gZ3JhcGhpY2FsIGludGVyZmFjZQotCi1kZWYgZ3VpKCk6Ci0gICAgIiIiR3JhcGhpY2FsIGludGVyZmFjZSAoc3RhcnRzIFdlYiBzZXJ2ZXIgYW5kIHBvcHMgdXAgYSBjb250cm9sIHdpbmRvdykuIiIiCi0KLSAgICBtc2cgPSAoJ3RoZSBweWRvYy5ndWkoKSBmdW5jdGlvbiBhbmQgInB5ZG9jIC1nIiBvcHRpb24gYXJlIGRlcHJlY2F0ZWRcbicsCi0gICAgICAgICAgICd1c2UgInB5ZG9jLmJyb3dzZSgpIGZ1bmN0aW9uIGFuZCAicHlkb2MgLWIiIG9wdGlvbiBpbnN0ZWFkLicpCi0gICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotCi0gICAgY2xhc3MgR1VJOgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgd2luZG93LCBwb3J0PTc0NjQpOgotICAgICAgICAgICAgc2VsZi53aW5kb3cgPSB3aW5kb3cKLSAgICAgICAgICAgIHNlbGYuc2VydmVyID0gTm9uZQotICAgICAgICAgICAgc2VsZi5zY2FubmVyID0gTm9uZQotCi0gICAgICAgICAgICBpbXBvcnQgdGtpbnRlcgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnRpdGxlX2xibCA9IHRraW50ZXIuTGFiZWwoc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J1N0YXJ0aW5nIHNlcnZlci4uLlxuICcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuID0gdGtpbnRlci5CdXR0b24oc2VsZi5zZXJ2ZXJfZnJtLAotICAgICAgICAgICAgICAgIHRleHQ9J29wZW4gYnJvd3NlcicsIGNvbW1hbmQ9c2VsZi5vcGVuLCBzdGF0ZT0nZGlzYWJsZWQnKQotICAgICAgICAgICAgc2VsZi5xdWl0X2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VydmVyX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdxdWl0IHNlcnZpbmcnLCBjb21tYW5kPXNlbGYucXVpdCwgc3RhdGU9J2Rpc2FibGVkJykKLQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtID0gdGtpbnRlci5GcmFtZSh3aW5kb3cpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwgPSB0a2ludGVyLkxhYmVsKHNlbGYuc2VhcmNoX2ZybSwgdGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQgPSB0a2ludGVyLkVudHJ5KHNlbGYuc2VhcmNoX2ZybSkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5iaW5kKCc8UmV0dXJuPicsIHNlbGYuc2VhcmNoKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYuc2VhcmNoX2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdzdG9wJywgcGFkeT0wLCBjb21tYW5kPXNlbGYuc3RvcCwgc3RhdGU9J2Rpc2FibGVkJykKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICAgICAgICAgICMgVHJ5aW5nIHRvIGhpZGUgYW5kIHNob3cgdGhpcyBidXR0b24gY3Jhc2hlcyB1bmRlciBXaW5kb3dzLgotICAgICAgICAgICAgICAgIHNlbGYuc3RvcF9idG4ucGFjayhzaWRlPSdyaWdodCcpCi0KLSAgICAgICAgICAgIHNlbGYud2luZG93LnRpdGxlKCdweWRvYycpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5wcm90b2NvbCgnV01fREVMRVRFX1dJTkRPVycsIHNlbGYucXVpdCkKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLm9wZW5fYnRuLnBhY2soc2lkZT0nbGVmdCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYucXVpdF9idG4ucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3gnLCBleHBhbmQ9MSkKLSAgICAgICAgICAgIHNlbGYuc2VydmVyX2ZybS5wYWNrKHNpZGU9J3RvcCcsIGZpbGw9J3gnKQotCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5zZWFyY2hfZnJtLnBhY2soc2lkZT0ndG9wJywgZmlsbD0neCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9jdXNfc2V0KCkKLQotICAgICAgICAgICAgZm9udCA9ICgnaGVsdmV0aWNhJywgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgYW5kIDggb3IgMTApCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QgPSB0a2ludGVyLkxpc3Rib3god2luZG93LCBmb250PWZvbnQsIGhlaWdodD02KQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmJpbmQoJzxCdXR0b24tMT4nLCBzZWxmLnNlbGVjdCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2xzdC5iaW5kKCc8RG91YmxlLUJ1dHRvbi0xPicsIHNlbGYuZ290bykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3NjciA9IHRraW50ZXIuU2Nyb2xsYmFyKHdpbmRvdywKLSAgICAgICAgICAgICAgICBvcmllbnQ9J3ZlcnRpY2FsJywgY29tbWFuZD1zZWxmLnJlc3VsdF9sc3QueXZpZXcpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QuY29uZmlnKHlzY3JvbGxjb21tYW5kPXNlbGYucmVzdWx0X3Njci5zZXQpCi0KLSAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybSA9IHRraW50ZXIuRnJhbWUod2luZG93KQotICAgICAgICAgICAgc2VsZi5nb3RvX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdnbyB0byBzZWxlY3RlZCcsIGNvbW1hbmQ9c2VsZi5nb3RvKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0biA9IHRraW50ZXIuQnV0dG9uKHNlbGYucmVzdWx0X2ZybSwKLSAgICAgICAgICAgICAgICB0ZXh0PSdoaWRlIHJlc3VsdHMnLCBjb21tYW5kPXNlbGYuaGlkZSkKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4ucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgc2VsZi5oaWRlX2J0bi5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotCi0gICAgICAgICAgICBzZWxmLndpbmRvdy51cGRhdGUoKQotICAgICAgICAgICAgc2VsZi5taW53aWR0aCA9IHNlbGYud2luZG93LndpbmZvX3dpZHRoKCkKLSAgICAgICAgICAgIHNlbGYubWluaGVpZ2h0ID0gc2VsZi53aW5kb3cud2luZm9faGVpZ2h0KCkKLSAgICAgICAgICAgIHNlbGYuYmlnbWluaGVpZ2h0ID0gKHNlbGYuc2VydmVyX2ZybS53aW5mb19yZXFoZWlnaHQoKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlYXJjaF9mcm0ud2luZm9fcmVxaGVpZ2h0KCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LndpbmZvX3JlcWhlaWdodCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZybS53aW5mb19yZXFoZWlnaHQoKSkKLSAgICAgICAgICAgIHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0ID0gc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQKLSAgICAgICAgICAgIHNlbGYuZXhwYW5kZWQgPSAwCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5taW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy50ay53aWxsZGlzcGF0Y2goKQotCi0gICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCi0gICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKAotICAgICAgICAgICAgICAgIHRhcmdldD1zZXJ2ZSwgYXJncz0ocG9ydCwgc2VsZi5yZWFkeSwgc2VsZi5xdWl0KSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiByZWFkeShzZWxmLCBzZXJ2ZXIpOgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIKLSAgICAgICAgICAgIHNlbGYudGl0bGVfbGJsLmNvbmZpZygKLSAgICAgICAgICAgICAgICB0ZXh0PSdQeXRob24gZG9jdW1lbnRhdGlvbiBzZXJ2ZXIgYXRcbicgKyBzZXJ2ZXIudXJsKQotICAgICAgICAgICAgc2VsZi5vcGVuX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnF1aXRfYnRuLmNvbmZpZyhzdGF0ZT0nbm9ybWFsJykKLQotICAgICAgICBkZWYgb3BlbihzZWxmLCBldmVudD1Ob25lLCB1cmw9Tm9uZSk6Ci0gICAgICAgICAgICB1cmwgPSB1cmwgb3Igc2VsZi5zZXJ2ZXIudXJsCi0gICAgICAgICAgICBpbXBvcnQgd2ViYnJvd3NlcgotICAgICAgICAgICAgd2ViYnJvd3Nlci5vcGVuKHVybCkKLQotICAgICAgICBkZWYgcXVpdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIGlmIHNlbGYuc2VydmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnF1aXQgPSAxCi0gICAgICAgICAgICBzZWxmLndpbmRvdy5xdWl0KCkKLQotICAgICAgICBkZWYgc2VhcmNoKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAga2V5ID0gc2VsZi5zZWFyY2hfZW50LmdldCgpCi0gICAgICAgICAgICBzZWxmLnN0b3BfYnRuLnBhY2soc2lkZT0ncmlnaHQnKQotICAgICAgICAgICAgc2VsZi5zdG9wX2J0bi5jb25maWcoc3RhdGU9J25vcm1hbCcpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwuY29uZmlnKHRleHQ9J1NlYXJjaGluZyBmb3IgIiVzIi4uLicgJSBrZXkpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9lbnQuZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5wYWNrKHNpZGU9J2xlZnQnKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmRlbGV0ZSgwLCAnZW5kJykKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZCgpCi0KLSAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICAgICAgICAgIGlmIHNlbGYuc2Nhbm5lcjoKLSAgICAgICAgICAgICAgICBzZWxmLnNjYW5uZXIucXVpdCA9IDEKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE1vZHVsZVNjYW5uZXIoKQotICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5zY2FubmVyLnJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi51cGRhdGUsIGtleSwgc2VsZi5kb25lKSkuc3RhcnQoKQotCi0gICAgICAgIGRlZiB1cGRhdGUoc2VsZiwgcGF0aCwgbW9kbmFtZSwgZGVzYyk6Ci0gICAgICAgICAgICBpZiBtb2RuYW1lWy05Ol0gPT0gJy5fX2luaXRfXyc6Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IG1vZG5hbWVbOi05XSArICcgKHBhY2thZ2UpJwotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0Lmluc2VydCgnZW5kJywKLSAgICAgICAgICAgICAgICBtb2RuYW1lICsgJyAtICcgKyAoZGVzYyBvciAnKG5vIGRlc2NyaXB0aW9uKScpKQotCi0gICAgICAgIGRlZiBzdG9wKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgaWYgc2VsZi5zY2FubmVyOgotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lci5xdWl0ID0gMQotICAgICAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLQotICAgICAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgICAgIHNlbGYuc2Nhbm5lciA9IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2xibC5jb25maWcodGV4dD0nU2VhcmNoIGZvcicpCi0gICAgICAgICAgICBzZWxmLnNlYXJjaF9sYmwucGFjayhzaWRlPSdsZWZ0JykKLSAgICAgICAgICAgIHNlbGYuc2VhcmNoX2VudC5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neCcsIGV4cGFuZD0xKQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6IHNlbGYuc3RvcF9idG4uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYuc3RvcF9idG4uY29uZmlnKHN0YXRlPSdkaXNhYmxlZCcpCi0KLSAgICAgICAgZGVmIHNlbGVjdChzZWxmLCBldmVudD1Ob25lKToKLSAgICAgICAgICAgIHNlbGYuZ290b19idG4uY29uZmlnKHN0YXRlPSdub3JtYWwnKQotCi0gICAgICAgIGRlZiBnb3RvKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZWN0aW9uID0gc2VsZi5yZXN1bHRfbHN0LmN1cnNlbGVjdGlvbigpCi0gICAgICAgICAgICBpZiBzZWxlY3Rpb246Ci0gICAgICAgICAgICAgICAgbW9kbmFtZSA9IHNlbGYucmVzdWx0X2xzdC5nZXQoc2VsZWN0aW9uWzBdKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICAgICAgc2VsZi5vcGVuKHVybD1zZWxmLnNlcnZlci51cmwgKyBtb2RuYW1lICsgJy5odG1sJykKLQotICAgICAgICBkZWYgY29sbGFwc2Uoc2VsZik6Ci0gICAgICAgICAgICBpZiBub3Qgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0uZm9yZ2V0KCkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5mb3JnZXQoKQotICAgICAgICAgICAgc2VsZi5yZXN1bHRfbHN0LmZvcmdldCgpCi0gICAgICAgICAgICBzZWxmLmJpZ3dpZHRoID0gc2VsZi53aW5kb3cud2luZm9fd2lkdGgoKQotICAgICAgICAgICAgc2VsZi5iaWdoZWlnaHQgPSBzZWxmLndpbmRvdy53aW5mb19oZWlnaHQoKQotICAgICAgICAgICAgc2VsZi53aW5kb3cud21fZ2VvbWV0cnkoJyVkeCVkJyAlIChzZWxmLm1pbndpZHRoLCBzZWxmLm1pbmhlaWdodCkpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9taW5zaXplKHNlbGYubWlud2lkdGgsIHNlbGYubWluaGVpZ2h0KQotICAgICAgICAgICAgc2VsZi5leHBhbmRlZCA9IDAKLQotICAgICAgICBkZWYgZXhwYW5kKHNlbGYpOgotICAgICAgICAgICAgaWYgc2VsZi5leHBhbmRlZDogcmV0dXJuCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9mcm0ucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JykKLSAgICAgICAgICAgIHNlbGYucmVzdWx0X3Njci5wYWNrKHNpZGU9J3JpZ2h0JywgZmlsbD0neScpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdF9sc3QucGFjayhzaWRlPSd0b3AnLCBmaWxsPSdib3RoJywgZXhwYW5kPTEpCi0gICAgICAgICAgICBzZWxmLndpbmRvdy53bV9nZW9tZXRyeSgnJWR4JWQnICUgKHNlbGYuYmlnd2lkdGgsIHNlbGYuYmlnaGVpZ2h0KSkKLSAgICAgICAgICAgIHNlbGYud2luZG93LndtX21pbnNpemUoc2VsZi5taW53aWR0aCwgc2VsZi5iaWdtaW5oZWlnaHQpCi0gICAgICAgICAgICBzZWxmLmV4cGFuZGVkID0gMQotCi0gICAgICAgIGRlZiBoaWRlKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAgICAgc2VsZi5zdG9wKCkKLSAgICAgICAgICAgIHNlbGYuY29sbGFwc2UoKQotCi0gICAgaW1wb3J0IHRraW50ZXIKLSAgICB0cnk6Ci0gICAgICAgIHJvb3QgPSB0a2ludGVyLlRrKCkKLSAgICAgICAgIyBUayB3aWxsIGNyYXNoIGlmIHB5dGhvbncuZXhlIGhhcyBhbiBYUCAubWFuaWZlc3QKLSAgICAgICAgIyBmaWxlIGFuZCB0aGUgcm9vdCBoYXMgaXMgbm90IGRlc3Ryb3llZCBleHBsaWNpdGx5LgotICAgICAgICAjIElmIHRoZSBwcm9ibGVtIGlzIGV2ZXIgZml4ZWQgaW4gVGssIHRoZSBleHBsaWNpdAotICAgICAgICAjIGRlc3Ryb3kgY2FuIGdvLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBndWkgPSBHVUkocm9vdCkKLSAgICAgICAgICAgIHJvb3QubWFpbmxvb3AoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgcm9vdC5kZXN0cm95KCkKLSAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgIHBhc3MKLQotCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlbmhhbmNlZCBXZWIgYnJvd3NlciBpbnRlcmZhY2UKIAogZGVmIF9zdGFydF9zZXJ2ZXIodXJsaGFuZGxlciwgcG9ydCk6CkBAIC0yNzk2LDE1ICsyNTMzLDEyIEBACiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCAnLicpCiAKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2JnazpwOncnKQorICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdiazpwOncnKQogICAgICAgICB3cml0aW5nID0gRmFsc2UKICAgICAgICAgc3RhcnRfc2VydmVyID0gRmFsc2UKICAgICAgICAgb3Blbl9icm93c2VyID0gRmFsc2UKICAgICAgICAgcG9ydCA9IE5vbmUKICAgICAgICAgZm9yIG9wdCwgdmFsIGluIG9wdHM6Ci0gICAgICAgICAgICBpZiBvcHQgPT0gJy1nJzoKLSAgICAgICAgICAgICAgICBndWkoKQotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgaWYgb3B0ID09ICctYic6CiAgICAgICAgICAgICAgICAgc3RhcnRfc2VydmVyID0gVHJ1ZQogICAgICAgICAgICAgICAgIG9wZW5fYnJvd3NlciA9IFRydWUKQEAgLTI4MTcsOCArMjU1MSw4IEBACiAgICAgICAgICAgICBpZiBvcHQgPT0gJy13JzoKICAgICAgICAgICAgICAgICB3cml0aW5nID0gVHJ1ZQogCi0gICAgICAgIGlmIHN0YXJ0X3NlcnZlciA9PSBUcnVlOgotICAgICAgICAgICAgaWYgcG9ydCA9PSBOb25lOgorICAgICAgICBpZiBzdGFydF9zZXJ2ZXI6CisgICAgICAgICAgICBpZiBwb3J0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcG9ydCA9IDAKICAgICAgICAgICAgIGJyb3dzZShwb3J0LCBvcGVuX2Jyb3dzZXI9b3Blbl9icm93c2VyKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0yODY1LDkgKzI1OTksNiBAQAogICAgIHRvIGludGVyYWN0aXZlbHkgYnJvd3NlIGRvY3VtZW50YXRpb24uICBUaGUgLXAgb3B0aW9uIGNhbiBiZSB1c2VkIHdpdGgKICAgICB0aGUgLWIgb3B0aW9uIHRvIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgc2VydmVyIHBvcnQuCiAKLXtjbWR9IC1nCi0gICAgRGVwcmVjYXRlZC4KLQoge2NtZH0gLXcgPG5hbWU+IC4uLgogICAgIFdyaXRlIG91dCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGZvciBhIG1vZHVsZSB0byBhIGZpbGUgaW4gdGhlIGN1cnJlbnQKICAgICBkaXJlY3RvcnkuICBJZiA8bmFtZT4gY29udGFpbnMgYSAne3NlcH0nLCBpdCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWU7IGlmCmRpZmYgLS1naXQgYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKaW5kZXggMDhhOWU3Yy4uNjJhNTRhOSAxMDA2NDQKLS0tIGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CisrKyBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQpAQCAtMSwxNiArMSwxNyBAQAotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBUaHUgRmViIDIzIDE4OjM3OjU0IDIwMTIKKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjIEF1dG9nZW5lcmF0ZWQgYnkgU3BoaW54IG9uIFNhdCBBdWcgMjUgMTI6MTI6NDUgMjAxMgogdG9waWNzID0geydhc3NlcnQnOiAnXG5UaGUgYGBhc3NlcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nIGFzc2VydGlvbnNcbmludG8gYSBwcm9ncmFtOlxuXG4gICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG5cblRoZSBzaW1wbGUgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbmBgLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgYGBhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yYGAsIGlzIGVxdWl2YWxlbnRcbnRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG5cblRoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCBgYF9fZGVidWdfX2BgIGFuZCBgYEFzc2VydGlvbkVycm9yYGBcbnJlZmVyIHRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlIGBgX19kZWJ1Z19fYGAgaXMgYGBUcnVlYGAgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCBgYEZhbHNlYGAgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkXG4oY29tbWFuZCBsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlXG5mb3IgYW4gYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZVxudGltZS4gIE5vdGUgdGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlXG5leHByZXNzaW9uIHRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhc1xucGFydCBvZiB0aGUgc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvIGBgX19kZWJ1Z19fYGAgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSBidWlsdC1pblxudmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAogICdhc3NpZ25tZW50JzogJ1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIHRhcmdldF9saXN0ICJdIlxuICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuICAgICAgICAgICAgICB8IHNsaWNpbmdcbiAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAocmVtZW1iZXIgdGhhdFxudGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgbGF0dGVyXG55aWVsZGluZyBhIHR1cGxlKSBhbmQgYXNzaWducyB0aGUgc2luZ2xlIHJlc3VsdGluZyBvYmplY3QgdG8gZWFjaCBvZlxudGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuXG5Bc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSB0YXJnZXRcbihsaXN0KS4gV2hlbiBhIHRhcmdldCBpcyBwYXJ0IG9mIGEgbXV0YWJsZSBvYmplY3QgKGFuIGF0dHJpYnV0ZVxucmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG51bHRpbWF0ZWx5IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQgYW5kIGRlY2lkZSBhYm91dCBpdHMgdmFsaWRpdHksIGFuZFxubWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgcnVsZXNcbm9ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gd2l0aCB0aGVcbmRlZmluaXRpb24gb2YgdGhlIG9iamVjdCB0eXBlcyAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkqKS5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCwgb3B0aW9uYWxseSBlbmNsb3NlZCBpblxucGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzIGZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGUgb2JqZWN0XG4gIG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlXG4gIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvXG4gIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhbiBhc3RlcmlzayxcbiAgICBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYSBzZXF1ZW5jZSB3aXRoIGF0XG4gICAgbGVhc3QgYXMgbWFueSBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIG1pbnVzXG4gICAgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBzZXF1ZW5jZSBhcmUgYXNzaWduZWQsIGZyb20gbGVmdCB0b1xuICAgIHJpZ2h0LCB0byB0aGUgdGFyZ2V0cyBiZWZvcmUgdGhlIHN0YXJyZWQgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zXG4gICAgb2YgdGhlIHNlcXVlbmNlIGFyZSBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZFxuICAgIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBpcyB0aGVuXG4gICAgYXNzaWduZWQgdG8gdGhlIHN0YXJyZWQgdGFyZ2V0ICh0aGUgbGlzdCBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGEgc2VxdWVuY2Ugd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cblxuQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSBzaW5nbGUgdGFyZ2V0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhbiBpZGVudGlmaWVyIChuYW1lKTpcblxuICAqIElmIHRoZSBuYW1lIGRvZXMgbm90IG9jY3VyIGluIGEgYGBnbG9iYWxgYCBvciBgYG5vbmxvY2FsYGBcbiAgICBzdGF0ZW1lbnQgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlXG4gICAgb2JqZWN0IGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuICAgIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSBgYG5vbmxvY2FsYGAsIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW4gc3F1YXJlXG4gIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2ZcbiAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBgYFR5cGVFcnJvcmBgIGlzXG4gIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG9cbiAgdGhlIGdpdmVuIGF0dHJpYnV0ZTsgaWYgaXQgY2Fubm90IHBlcmZvcm0gdGhlIGFzc2lnbm1lbnQsIGl0IHJhaXNlc1xuICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSBgYEF0dHJpYnV0ZUVycm9yYGApLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgYGBhLnhgYCBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgYGBhLnhgYCBpc1xuICBhbHdheXMgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LlxuICBUaHVzLCB0aGUgdHdvIG9jY3VycmVuY2VzIG9mIGBgYS54YGAgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZVxuICBzYW1lIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSxcbiAgdGhlIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCBgYHByb3BlcnR5KClgYC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluIHRoZVxuICByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGVpdGhlciBhIG11dGFibGUgc2VxdWVuY2VcbiAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhIGRpY3Rpb25hcnkpLlxuICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuXG4gIElmIHRoZSBwcmltYXJ5IGlzIGEgbXV0YWJsZSBzZXF1ZW5jZSBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSwgdGhlXG4gIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzXG4gIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlXG4gIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsIGFuZCB0aGUgc2VxdWVuY2UgaXMgYXNrZWRcbiAgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gd2l0aCB0aGF0IGluZGV4LiAgSWYgdGhlXG4gIGluZGV4IGlzIG91dCBvZiByYW5nZSwgYGBJbmRleEVycm9yYGAgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgYGBfX3NldGl0ZW1fXygpYGAgbWV0aG9kIGlzIGNhbGxlZFxuICB3aXRoIGFwcHJvcHJpYXRlIGFyZ3VtZW50cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGUgcmVmZXJlbmNlXG4gIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGFcbiAgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlIG9iamVjdCBvZiB0aGUgc2FtZVxuICB0eXBlLiAgTmV4dCwgdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkLFxuICBpbnNvZmFyIHRoZXkgYXJlIHByZXNlbnQ7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLiAgVGhlIGJvdW5kcyBzaG91bGQgZXZhbHVhdGUgdG8gaW50ZWdlcnMuIElmIGVpdGhlciBib3VuZCBpc1xuICBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSByZXN1bHRpbmdcbiAgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGgsXG4gIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gcmVwbGFjZSB0aGVcbiAgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLiAgVGhlIGxlbmd0aCBvZiB0aGVcbiAgc2xpY2UgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRoZSBsZW5ndGggb2YgdGhlIGFzc2lnbmVkIHNlcXVlbmNlLFxuICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlIG9iamVjdFxuICBhbGxvd3MgaXQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZVxuc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgYW5kXG5pbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgY2F1c2luZ1xubGVzcyBkZXRhaWxlZCBlcnJvciBtZXNzYWdlcy5cblxuV0FSTklORzogQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHNcbmJldHdlZW4gdGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSBcJ3NhZmVcJyAoZm9yXG5leGFtcGxlIGBgYSwgYiA9IGIsIGFgYCBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgaW5zdGFuY2UsIHRoZVxuZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzIGBgWzAsIDJdYGA6XG5cbiAgIHggPSBbMCwgMV1cbiAgIGkgPSAwXG4gICBpLCB4W2ldID0gMSwgMlxuICAgcHJpbnQoeClcblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYCp0YXJnZXRgYCBmZWF0dXJlLlxuXG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKICAnYXRvbS1pZGVudGlmaWVycyc6ICdcbklkZW50aWZpZXJzIChOYW1lcylcbioqKioqKioqKioqKioqKioqKipcblxuQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgc2VjdGlvblxuKklkZW50aWZpZXJzIGFuZCBrZXl3b3JkcyogZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiAqTmFtaW5nXG5hbmQgYmluZGluZyogZm9yIGRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhIGBgTmFtZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4qKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCB0ZXh0dWFsbHkgb2NjdXJzIGluXG5hIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSBjaGFyYWN0ZXJzIGFuZFxuZG9lcyBub3QgZW5kIGluIHR3byBvciBtb3JlIHVuZGVyc2NvcmVzLCBpdCBpcyBjb25zaWRlcmVkIGEgKnByaXZhdGVcbm5hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgbG9uZ2VyIGZvcm1cbmJlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiBpbnNlcnRzIHRoZVxuY2xhc3MgbmFtZSBpbiBmcm9udCBvZiB0aGUgbmFtZSwgd2l0aCBsZWFkaW5nIHVuZGVyc2NvcmVzIHJlbW92ZWQsIGFuZFxuYSBzaW5nbGUgdW5kZXJzY29yZSBpbnNlcnRlZCBpbiBmcm9udCBvZiB0aGUgY2xhc3MgbmFtZS4gIEZvciBleGFtcGxlLFxudGhlIGlkZW50aWZpZXIgYGBfX3NwYW1gYCBvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCBgYEhhbWBgIHdpbGwgYmVcbnRyYW5zZm9ybWVkIHRvIGBgX0hhbV9fc3BhbWBgLiAgVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZlxudGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2ggdGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZVxudHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZyAobG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLFxuaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heSBoYXBwZW4uICBJZiB0aGUgY2xhc3MgbmFtZVxuY29uc2lzdHMgb25seSBvZiB1bmRlcnNjb3Jlcywgbm8gdHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCiAgJ2F0b20tbGl0ZXJhbHMnOiAiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgbnVtZXJpY1xubGl0ZXJhbHM6XG5cbiAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBieXRlc2xpdGVyYWxcbiAgICAgICAgICAgICAgIHwgaW50ZWdlciB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5ieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCB0aGUgZ2l2ZW5cbnZhbHVlLiAgVGhlIHZhbHVlIG1heSBiZSBhcHByb3hpbWF0ZWQgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmcgcG9pbnRcbmFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gKkxpdGVyYWxzKiBmb3IgZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG5DdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlIG1lYW5pbmcgb2ZcbmF0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgYGB4Lm5hbWVgYClcbmZvciBjbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yIGBgc2VsZmBgKS4gIGBgbmFtZWBgIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZS5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlXG4gICBhbiBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgYGBfX2dldGF0dHJfXygpYGAgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiBgYF9fZ2V0YXR0cl9fKClgYCBhbmQgYGBfX3NldGF0dHJfXygpYGAuKSBUaGlzIGlzIGRvbmUgYm90aFxuICAgZm9yIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgYGBfX2dldGF0dHJfXygpYGBcbiAgIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGVcbiAgIHRoYXQgYXQgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnlcbiAgIG5vdCBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gYWN0dWFsbHkgZ2V0IHRvdGFsXG4gICBjb250cm9sIG92ZXIgYXR0cmlidXRlIGFjY2Vzcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lc1xuICAgYGBfX2dldGF0dHJfXygpYGAsIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzc1xuICAgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBlaXRoZXIgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYC4gVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKVxuICAgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uIEluIG9yZGVyXG4gICB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvblxuICAgc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG9cbiAgIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yIGV4YW1wbGUsXG4gICBgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpYGAuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzXG4gICAgIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4IG9yXG4gICAgIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmIGBgX19zZXRhdHRyX18oKWBgIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKWBgLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSBgYF9fc2V0YXR0cl9fKClgYCBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiBgYGRlbCBvYmoubmFtZWBgIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiBgYGRpcigpYGAgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuICBBIGxpc3QgbXVzdCBiZVxuICAgcmV0dXJuZWQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgYGBfX2RpY3RfX2BgLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgYGBOb25lYGAgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICBgYEF0dHJpYnV0ZUVycm9yYGAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICBgYF9fZ2V0X18oKWBgLCBgYF9fc2V0X18oKWBgLCBhbmRcbmBgX19kZWxldGVfXygpYGAuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsXG5pdCBpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsIGBgYS54YGAgaGFzIGFcbmxvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoIGBgYS5fX2RpY3RfX1tcJ3hcJ11gYCwgdGhlblxuYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXWBgLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbmBgdHlwZShhKWBgIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cblxuSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mIHRoZVxuZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgYW5kXG5pbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiB0aGVcbnByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSBkZWZpbmVkIGFuZFxuaG93IHRoZXkgd2VyZSBjYWxsZWQuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgYGBhLnhgYC5cbkhvdyB0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiBgYGFgYDpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgYGB4Ll9fZ2V0X18oYSlgYC5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsIGBgYS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6IGBgdHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKWBgLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsIGBgQS54YGAgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgY2FsbDpcbiAgIGBgQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKWBgLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiBgYGFgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYHN1cGVyYGAsIHRoZW4gdGhlIGJpbmRpbmcgYGBzdXBlcihCLFxuICAgb2JqKS5tKClgYCBzZWFyY2hlcyBgYG9iai5fX2NsYXNzX18uX19tcm9fX2BgIGZvciB0aGUgYmFzZSBjbGFzc1xuICAgYGBBYGAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIGBgQmBgIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3JcbiAgIHdpdGggdGhlIGNhbGw6IGBgQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pYGAuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAgYW5kIGBgX19kZWxldGVfXygpYGAuXG5JZiBpdCBkb2VzIG5vdCBkZWZpbmUgYGBfX2dldF9fKClgYCwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsXG5yZXR1cm4gdGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGVcbm9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyBgYF9fc2V0X18oKWBgXG5hbmQvb3IgYGBfX2RlbGV0ZV9fKClgYCwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXNcbm5laXRoZXIsIGl0IGlzIGEgbm9uLWRhdGEgZGVzY3JpcHRvci4gIE5vcm1hbGx5LCBkYXRhIGRlc2NyaXB0b3JzXG5kZWZpbmUgYm90aCBgYF9fZ2V0X18oKWBgIGFuZCBgYF9fc2V0X18oKWBgLCB3aGlsZSBub24tZGF0YVxuZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZSBgYF9fZ2V0X18oKWBgIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aFxuYGBfX3NldF9fKClgYCBhbmQgYGBfX2dldF9fKClgYCBkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvblxuaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluIGNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmVcbm92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nIGBgc3RhdGljbWV0aG9kKClgYCBhbmQgYGBjbGFzc21ldGhvZCgpYGApXG5hcmUgaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhblxucmVkZWZpbmUgYW5kIG92ZXJyaWRlIG1ldGhvZHMuICBUaGlzIGFsbG93cyBpbmRpdmlkdWFsIGluc3RhbmNlcyB0b1xuYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgY2xhc3MuXG5cblRoZSBgYHByb3BlcnR5KClgYCBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZFxuICAgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvclxuICAgZWFjaCBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzIGBgQXR0cmlidXRlRXJyb3JgYC4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgYGBcJ19fZGljdF9fXCdgYCB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXMgZGVmaW5pbmdcbiAgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbnN0YW5jZXMuIElmIHdlYWtcbiAgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZCBgYFwnX193ZWFrcmVmX19cJ2BgIHRvIHRoZVxuICBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlIGluc3RhbmNlXG4gIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGUgKGV4Y2VwdCBieVxuICByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLiBUaGlzXG4gIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgYGBpbnRgYCwgYGBzdHJgYCBhbmRcbiAgYGB0dXBsZWBgLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3MgbWF5XG4gIGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG4nLAogICdhdHRyaWJ1dGUtcmVmZXJlbmNlcyc6ICdcbkF0dHJpYnV0ZSByZWZlcmVuY2VzXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhIHBlcmlvZCBhbmQgYSBuYW1lOlxuXG4gICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSB0eXBlIHRoYXQgc3VwcG9ydHNcbmF0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzIG9iamVjdCBpcyB0aGVuXG5hc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyB0aGUgaWRlbnRpZmllciAod2hpY2ggY2FuXG5iZSBjdXN0b21pemVkIGJ5IG92ZXJyaWRpbmcgdGhlIGBgX19nZXRhdHRyX18oKWBgIG1ldGhvZCkuICBJZiB0aGlzXG5hdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiBgYEF0dHJpYnV0ZUVycm9yYGAgaXNcbnJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgcHJvZHVjZWQgaXNcbmRldGVybWluZWQgYnkgdGhlIG9iamVjdC4gIE11bHRpcGxlIGV2YWx1YXRpb25zIG9mIHRoZSBzYW1lIGF0dHJpYnV0ZVxucmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgb2JqZWN0cy5cbicsCiAgJ2F1Z2Fzc2lnbic6ICdcbkF1Z21lbnRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIGNvbWJpbmF0aW9uLCBpbiBhIHNpbmdsZSBzdGF0ZW1lbnQsIG9mIGFcbmJpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuXG4gICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICBhdWd0YXJnZXQgICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIHwgYXR0cmlidXRlcmVmIHwgc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSBgYHggKz0gMWBgIGNhbiBiZSByZXdyaXR0ZW4gYXNcbmBgeCA9IHggKyAxYGAgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluXG50aGUgYXVnbWVudGVkIHZlcnNpb24sIGBgeGBgIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW5cbnBvc3NpYmxlLCB0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0XG5yYXRoZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsXG50aGUgb2xkIG9iamVjdCBpcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnMqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgYGBkaXZtb2QoKWBgXG5mdW5jdGlvbiBhcmUgbm90IGRlZmluZWQgZm9yIGNvbXBsZXggbnVtYmVycy4gIEluc3RlYWQsIGNvbnZlcnQgdG8gYVxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHVzaW5nIHRoZSBgYGFicygpYGAgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSBgYCtgYCAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSBgYC1gYCAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHNcbmFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uXG50eXBlLlxuJywKKyAnYmluYXJ5JzogJ1xuQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbmxldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluIG5vbi1cbm51bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG5sZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG5vcGVyYXRvcnM6XG5cbiAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIi8vIiB1X2V4cHIgfCBtX2V4cHIgIi8iIHVfZXhwclxuICAgICAgICAgICAgICB8IG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlIGBgKmBgIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0c1xuYXJndW1lbnRzLiAgVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudFxubXVzdCBiZSBhbiBpbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyXG5jYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZFxudG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhXG5uZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSBgYC9gYCAoZGl2aXNpb24pIGFuZCBgYC8vYGAgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gSW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgYSBmbG9hdCwgd2hpbGVcbmZsb29yIGRpdmlzaW9uIG9mIGludGVnZXJzIHJlc3VsdHMgaW4gYW4gaW50ZWdlcjsgdGhlIHJlc3VsdCBpcyB0aGF0XG5vZiBtYXRoZW1hdGljYWwgZGl2aXNpb24gd2l0aCB0aGUgXCdmbG9vclwnIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG5yZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgYGBaZXJvRGl2aXNpb25FcnJvcmBgIGV4Y2VwdGlvbi5cblxuVGhlIGBgJWBgIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYCBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgYGAzLjE0JTAuN2BgIGVxdWFscyBgYDAuMzRgYCAoc2luY2UgYGAzLjE0YGAgZXF1YWxzXG5gYDQqMC43ICsgMC4zNGBgLikgIFRoZSBtb2R1bG8gb3BlcmF0b3IgYWx3YXlzIHlpZWxkcyBhIHJlc3VsdCB3aXRoXG50aGUgc2FtZSBzaWduIGFzIGl0cyBzZWNvbmQgb3BlcmFuZCAob3IgemVybyk7IHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZlxudGhlIHJlc3VsdCBpcyBzdHJpY3RseSBzbWFsbGVyIHRoYW4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBzZWNvbmRcbm9wZXJhbmQgWzFdLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgZm9sbG93aW5nXG5pZGVudGl0eTogYGB4ID09ICh4Ly95KSp5ICsgKHgleSlgYC4gIEZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gYXJlXG5hbHNvIGNvbm5lY3RlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYGRpdm1vZCgpYGA6IGBgZGl2bW9kKHgsIHkpXG49PSAoeC8veSwgeCV5KWBgLiBbMl0uXG5cbkluIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlIGBgJWBgXG5vcGVyYXRvciBpcyBhbHNvIG92ZXJsb2FkZWQgYnkgc3RyaW5nIG9iamVjdHMgdG8gcGVyZm9ybSBvbGQtc3R5bGVcbnN0cmluZyBmb3JtYXR0aW5nIChhbHNvIGtub3duIGFzIGludGVycG9sYXRpb24pLiAgVGhlIHN5bnRheCBmb3JcbnN0cmluZyBmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLFxuc2VjdGlvbiAqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKi5cblxuVGhlIGZsb29yIGRpdmlzaW9uIG9wZXJhdG9yLCB0aGUgbW9kdWxvIG9wZXJhdG9yLCBhbmQgdGhlIGBgZGl2bW9kKClgYFxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgYGBhYnMoKWBgIGZ1bmN0aW9uIGlmIGFwcHJvcHJpYXRlLlxuXG5UaGUgYGArYGAgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzIG9yIGJvdGggc2VxdWVuY2VzIG9mIHRoZSBzYW1lXG50eXBlLiAgSW4gdGhlIGZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGVcbmFuZCB0aGVuIGFkZGVkIHRvZ2V0aGVyLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB0aGUgc2VxdWVuY2VzIGFyZVxuY29uY2F0ZW5hdGVkLlxuXG5UaGUgYGAtYGAgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzXG5hcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vblxudHlwZS5cbicsCiAgJ2JpdHdpc2UnOiAnXG5CaW5hcnkgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkVhY2ggb2YgdGhlIHRocmVlIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXMgYSBkaWZmZXJlbnQgcHJpb3JpdHkgbGV2ZWw6XG5cbiAgIGFuZF9leHByIDo6PSBzaGlmdF9leHByIHwgYW5kX2V4cHIgIiYiIHNoaWZ0X2V4cHJcbiAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcblxuVGhlIGBgJmBgIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgaW50ZWdlcnMuXG5cblRoZSBgYF5gYCBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuXG5UaGUgYGB8YGAgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJywKICAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gYGBjb21waWxlKClgYCBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGZ1bmN0aW9uIG9iamVjdHNcbnRocm91Z2ggdGhlaXIgYGBfX2NvZGVfX2BgIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlIGBgY29kZWBgIG1vZHVsZS5cblxuQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgaXQgKGluc3RlYWQgb2YgYVxuc291cmNlIHN0cmluZykgdG8gdGhlIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYCAgYnVpbHQtaW4gZnVuY3Rpb25zLlxuXG5TZWUgKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiAnXG5UaGUgRWxsaXBzaXMgT2JqZWN0XG4qKioqKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIGNvbW1vbmx5IHVzZWQgYnkgc2xpY2luZyAoc2VlICpTbGljaW5ncyopLiAgSXQgc3VwcG9ydHNcbm5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCwgbmFtZWRcbmBgRWxsaXBzaXNgYCAoYSBidWlsdC1pbiBuYW1lKS5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYEVsbGlwc2lzYGAgb3IgYGAuLi5gYC5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogIlxuVGhlIE51bGwgT2JqZWN0XG4qKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkIGBgTm9uZWBgIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzIGBgTm9uZWBgLlxuIiwKKyAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogJ1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAqU2xpY2luZ3MqKS4gIEl0IHN1cHBvcnRzXG5ubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBlbGxpcHNpcyBvYmplY3QsIG5hbWVkXG5gYEVsbGlwc2lzYGAgKGEgYnVpbHQtaW4gbmFtZSkuICBgYHR5cGUoRWxsaXBzaXMpKClgYCBwcm9kdWNlcyB0aGVcbmBgRWxsaXBzaXNgYCBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgYGBFbGxpcHNpc2BgIG9yIGBgLi4uYGAuXG4nLAorICdibHRpbi1udWxsLW9iamVjdCc6ICJcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuIGFcbnZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgbnVsbFxub2JqZWN0LCBuYW1lZCBgYE5vbmVgYCAoYSBidWlsdC1pbiBuYW1lKS4gIGBgdHlwZShOb25lKSgpYGAgcHJvZHVjZXNcbnRoZSBzYW1lIHNpbmdsZXRvbi5cblxuSXQgaXMgd3JpdHRlbiBhcyBgYE5vbmVgYC5cbiIsCiAgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICJcblR5cGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cblR5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gb2JqZWN0J3MgdHlwZSBpc1xuYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgdHlwZSgpYGAuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgYGB0eXBlc2BgIGRlZmluZXMgbmFtZXMgZm9yXG5hbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG5cblR5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8Y2xhc3MgJ2ludCc+YGAuXG4iLAogICdib29sZWFucyc6ICdcbkJvb2xlYW4gb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqXG5cbiAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbiAgIG5vdF90ZXN0IDo6PSBjb21wYXJpc29uIHwgIm5vdCIgbm90X3Rlc3RcblxuSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zIGFyZVxudXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlIGludGVycHJldGVkXG5hcyBmYWxzZTogYGBGYWxzZWBgLCBgYE5vbmVgYCwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG5zdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbmRpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgdHJ1ZS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBjdXN0b21pemUgdGhlaXIgdHJ1dGggdmFsdWUgYnlcbnByb3ZpZGluZyBhIGBgX19ib29sX18oKWBgIG1ldGhvZC5cblxuVGhlIG9wZXJhdG9yIGBgbm90YGAgeWllbGRzIGBgVHJ1ZWBgIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSxcbmBgRmFsc2VgYCBvdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uIGBgeCBhbmQgeWBgIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuVGhlIGV4cHJlc3Npb24gYGB4IG9yIHlgYCBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgaXRzXG52YWx1ZSBpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlXG5pcyByZXR1cm5lZC5cblxuKE5vdGUgdGhhdCBuZWl0aGVyIGBgYW5kYGAgbm9yIGBgb3JgYCByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgdGhleVxucmV0dXJuIHRvIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuICBUaGlzIGlzIHNvbWV0aW1lcyB1c2VmdWwsIGUuZy4sIGlmIGBgc2BgIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG5gYHMgb3IgXCdmb29cJ2BgIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgYGBub3RgYCBoYXMgdG9cbmludmVudCBhIHZhbHVlIGFueXdheSwgaXQgZG9lcyBub3QgYm90aGVyIHRvIHJldHVybiBhIHZhbHVlIG9mIHRoZVxuc2FtZSB0eXBlIGFzIGl0cyBhcmd1bWVudCwgc28gZS5nLiwgYGBub3QgXCdmb29cJ2BgIHlpZWxkcyBgYEZhbHNlYGAsXG5ub3QgYGBcJ1wnYGAuKVxuJywKICAnYnJlYWsnOiAnXG5UaGUgYGBicmVha2BgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuXG5gYGJyZWFrYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBgYGZvcmBgIG9yXG5gYHdoaWxlYGAgbG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uXG53aXRoaW4gdGhhdCBsb29wLlxuXG5JdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWxcbmBgZWxzZWBgIGNsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuXG5JZiBhIGBgZm9yYGAgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5IGBgYnJlYWtgYCwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbmtlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuXG5XaGVuIGBgYnJlYWtgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxubGVhdmluZyB0aGUgbG9vcC5cbicsCkBAIC0xOCwxMyArMTksMTMgQEAKICAnY2FsbHMnOiAnXG5DYWxsc1xuKioqKipcblxuQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhIGZ1bmN0aW9uKSB3aXRoIGEgcG9zc2libHlcbmVtcHR5IHNlcmllcyBvZiBhcmd1bWVudHM6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8IGNvbXByZWhlbnNpb25dICIpIlxuICAgYXJndW1lbnRfbGlzdCAgICAgICAgOjo9IHBvc2l0aW9uYWxfYXJndW1lbnRzIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIga2V5d29yZF9hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiIGtleXdvcmRfYXJndW1lbnRzXSBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwgIioiIGV4cHJlc3Npb24gWyIsIiBrZXl3b3JkX2FyZ3VtZW50c10gWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqKiIgZXhwcmVzc2lvblxuICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IGV4cHJlc3Npb24gKCIsIiBleHByZXNzaW9uKSpcbiAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cblxuQSB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZFxuYXJndW1lbnRzIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHNlbWFudGljcy5cblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG5mdW5jdGlvbnMsIGJ1aWx0LWluIGZ1bmN0aW9ucywgbWV0aG9kcyBvZiBidWlsdC1pbiBvYmplY3RzLCBjbGFzc1xub2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuYGBfX2NhbGxfXygpYGAgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG5ldmFsdWF0ZWQgYmVmb3JlIHRoZSBjYWxsIGlzIGF0dGVtcHRlZC4gIFBsZWFzZSByZWZlciB0byBzZWN0aW9uXG4qRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciB0aGUgc3ludGF4IG9mIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdHMuXG5cbklmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbnBvc2l0aW9uYWwgYXJndW1lbnRzLCBhcyBmb2xsb3dzLiAgRmlyc3QsIGEgbGlzdCBvZiB1bmZpbGxlZCBzbG90cyBpc1xuY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuYXJndW1lbnRzLCB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIGZpcnN0IE4gc2xvdHMuICBOZXh0LCBmb3IgZWFjaFxua2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBmb3JtYWxcbnBhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgaXNcbmFscmVhZHkgZmlsbGVkLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzIGBgTm9uZWBgLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggdGhlXG5jb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIChEZWZhdWx0XG52YWx1ZXMgYXJlIGNhbGN1bGF0ZWQsIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQ7IHRodXMsIGFcbm11dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlIHdpbGxcbmJlIHNoYXJlZCBieSBhbGwgY2FsbHMgdGhhdCBkb25cJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3Q7IHRoaXMgc2hvdWxkIHVzdWFsbHkgYmUgYXZvaWRlZC4pICBJZiB0aGVyZSBhcmUgYW55XG51bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGFcbmBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGxpc3Qgb2YgZmlsbGVkXG5zbG90cyBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgZXZlblxuaWYgdGhleSBhcmUgXCduYW1lZFwnIGZvciB0aGUgcHVycG9zZSBvZiBkb2N1bWVudGF0aW9uLCBhbmQgd2hpY2hcbnRoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlIGNhc2VcbmZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gQyB0aGF0IHVzZSBgYFB5QXJnX1BhcnNlVHVwbGUoKWBgIHRvXG5wYXJzZSB0aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxudXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4ob3IgYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgd2VyZSBubyBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHMpLlxuXG5JZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxubmFtZSwgYSBgYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggYGAqKmlkZW50aWZpZXJgYCBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXRcbmZvcm1hbCBwYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG5hcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG5jb3JyZXNwb25kaW5nIHZhbHVlcyksIG9yIGEgKG5ldykgZW1wdHkgZGljdGlvbmFyeSBpZiB0aGVyZSB3ZXJlIG5vXG5leGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG5cbklmIHRoZSBzeW50YXggYGAqZXhwcmVzc2lvbmBgIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG5gYGV4cHJlc3Npb25gYCBtdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzXG5pdGVyYWJsZSBhcmUgdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cztcbmlmIHRoZXJlIGFyZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCBgYGV4cHJlc3Npb25gYFxuZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsXG53aXRoIE0rTiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosICp5MSosIC4uLiwgKnlNKi5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlIGBgKmV4cHJlc3Npb25gYCBzeW50YXggbWF5XG5hcHBlYXIgKmFmdGVyKiBzb21lIGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgKmJlZm9yZSogdGhlXG5rZXl3b3JkIGFyZ3VtZW50cyAoYW5kIHRoZSBgYCoqZXhwcmVzc2lvbmBgIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICBwcmludChhLCBiKVxuICAgLi4uXG4gICA+Pj4gZihiPTEsICooMiwpKVxuICAgMiAxXG4gICA+Pj4gZihhPTEsICooMiwpKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50IFwnYVwnXG4gICA+Pj4gZigxLCAqKDIsKSlcbiAgIDEgMlxuXG5JdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgYGAqZXhwcmVzc2lvbmBgXG5zeW50YXggdG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzXG5ub3QgYXJpc2UuXG5cbklmIHRoZSBzeW50YXggYGAqKmV4cHJlc3Npb25gYCBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuYGBleHByZXNzaW9uYGAgbXVzdCBldmFsdWF0ZSB0byBhIG1hcHBpbmcsIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuYXBwZWFyaW5nIGluIGJvdGggYGBleHByZXNzaW9uYGAgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsXG5hIGBgVHlwZUVycm9yYGAgZXhjZXB0aW9uIGlzIHJhaXNlZC5cblxuRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYFxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy5cblxuQSBjYWxsIGFsd2F5cyByZXR1cm5zIHNvbWUgdmFsdWUsIHBvc3NpYmx5IGBgTm9uZWBgLCB1bmxlc3MgaXQgcmFpc2VzXG5hbiBleGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZVxuY2FsbGFibGUgb2JqZWN0LlxuXG5JZiBpdCBpcy0tLVxuXG5hIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbiAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4gICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCB0aGVcbiAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb25cbiAgICpGdW5jdGlvbiBkZWZpbml0aW9ucyouICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgYGByZXR1cm5gYFxuICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLlxuXG5hIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbiAgIFRoZSByZXN1bHQgaXMgdXAgdG8gdGhlIGludGVycHJldGVyOyBzZWUgKkJ1aWx0LWluIEZ1bmN0aW9ucyogZm9yXG4gICB0aGUgZGVzY3JpcHRpb25zIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcy5cblxuYSBjbGFzcyBvYmplY3Q6XG4gICBBIG5ldyBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIGlzIHJldHVybmVkLlxuXG5hIGNsYXNzIGluc3RhbmNlIG1ldGhvZDpcbiAgIFRoZSBjb3JyZXNwb25kaW5nIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpcyBjYWxsZWQsIHdpdGggYW4gYXJndW1lbnRcbiAgIGxpc3QgdGhhdCBpcyBvbmUgbG9uZ2VyIHRoYW4gdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGNhbGw6IHRoZVxuICAgaW5zdGFuY2UgYmVjb21lcyB0aGUgZmlyc3QgYXJndW1lbnQuXG5cbmEgY2xhc3MgaW5zdGFuY2U6XG4gICBUaGUgY2xhc3MgbXVzdCBkZWZpbmUgYSBgYF9fY2FsbF9fKClgYCBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlblxuICAgdGhlIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCiAgJ2NsYXNzJzogJ1xuQ2xhc3MgZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiXG4gICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBUaGUgaW5oZXJpdGFuY2UgbGlzdFxudXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgKkN1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uKlxuZm9yIG1vcmUgYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYVxuY2xhc3Mgb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZVxubGlzdCBpbmhlcml0LCBieSBkZWZhdWx0LCBmcm9tIHRoZSBiYXNlIGNsYXNzIGBgb2JqZWN0YGA7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCBgYHNlbGYubmFtZSA9IHZhbHVlYGAuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvblxuImBgc2VsZi5uYW1lYGAiLCBhbmQgYW4gaW5zdGFuY2UgYXR0cmlidXRlIGhpZGVzIGEgY2xhc3MgYXR0cmlidXRlXG53aXRoIHRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlXG51c2VkIGFzIGRlZmF1bHRzIGZvciBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXNcbnRoZXJlIGNhbiBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gICpEZXNjcmlwdG9ycyogY2FuIGJlIHVzZWQgdG9cbmNyZWF0ZSBpbnN0YW5jZSB2YXJpYWJsZXMgd2l0aCBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtIENsYXNzXG4gICBEZWNvcmF0b3JzXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzcyB0aGVyZVxuICAgIGlzIGEgYGBmaW5hbGx5YGAgY2xhdXNlIHdoaWNoIGhhcHBlbnMgdG8gcmFpc2UgYW5vdGhlciBleGNlcHRpb24uXG4gICAgVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSBsb3N0LlxuXG5bMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlIG9mIGFuXG4gICAgZXhjZXB0aW9uIG9yIHRoZSBleGVjdXRpb24gb2YgYSBgYHJldHVybmBgLCBgYGNvbnRpbnVlYGAsIG9yXG4gICAgYGBicmVha2BgIHN0YXRlbWVudC5cblxuWzNdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyBgYF9fZG9jX19gYCBhdHRyaWJ1dGUgYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBmdW5jdGlvblwncyAqZG9jc3RyaW5nKi5cblxuWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4gICAgYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBuYW1lc3BhY2VcJ3MgYGBfX2RvY19fYGAgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKICAnY29tcGFyaXNvbnMnOiAnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgYGBhIDwgYiA8IGNgYCBoYXZlIHRoZVxuaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG5cbiAgIGNvbXBhcmlzb24gICAgOjo9IG9yX2V4cHIgKCBjb21wX29wZXJhdG9yIG9yX2V4cHIgKSpcbiAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiBgYFRydWVgYCBvciBgYEZhbHNlYGAuXG5cbkNvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCBgYHggPCB5IDw9IHpgYCBpc1xuZXF1aXZhbGVudCB0byBgYHggPCB5IGFuZCB5IDw9IHpgYCwgZXhjZXB0IHRoYXQgYGB5YGAgaXMgZXZhbHVhdGVkXG5vbmx5IG9uY2UgKGJ1dCBpbiBib3RoIGNhc2VzIGBgemBgIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gYGB4IDxcbnlgYCBpcyBmb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gYGBhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4gemBgIGlzIGVxdWl2YWxlbnQgdG8gYGBhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gemBgLFxuZXhjZXB0IHRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCBgYGEgb3AxIGIgb3AyIGNgYCBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uXG5iZXR3ZWVuICphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCBgYHggPCB5ID4gemBgIGlzIHBlcmZlY3RseSBsZWdhbFxuKHRob3VnaCBwZXJoYXBzIG5vdCBwcmV0dHkpLlxuXG5UaGUgb3BlcmF0b3JzIGBgPGBgLCBgYD5gYCwgYGA9PWBgLCBgYD49YGAsIGBgPD1gYCwgYW5kIGBgIT1gYCBjb21wYXJlXG50aGUgdmFsdWVzIG9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLlxuSWYgYm90aCBhcmUgbnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsXG50aGUgYGA9PWBgIGFuZCBgYCE9YGAgb3BlcmF0b3JzICphbHdheXMqIGNvbnNpZGVyIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0byBiZSB1bmVxdWFsLCB3aGlsZSB0aGUgYGA8YGAsIGBgPmBgLCBgYD49YGAgYW5kIGBgPD1gYFxub3BlcmF0b3JzIHJhaXNlIGEgYGBUeXBlRXJyb3JgYCB3aGVuIGNvbXBhcmluZyBvYmplY3RzIG9mIGRpZmZlcmVudFxudHlwZXMgdGhhdCBkbyBub3QgaW1wbGVtZW50IHRoZXNlIG9wZXJhdG9ycyBmb3IgdGhlIGdpdmVuIHBhaXIgb2ZcbnR5cGVzLiAgWW91IGNhbiBjb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW5cbnR5cGVzIGJ5IGRlZmluaW5nIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgYGBfX2d0X18oKWBgLCBkZXNjcmliZWRcbmluIHNlY3Rpb24gKkJhc2ljIGN1c3RvbWl6YXRpb24qLlxuXG5Db21wYXJpc29uIG9mIG9iamVjdHMgb2YgdGhlIHNhbWUgdHlwZSBkZXBlbmRzIG9uIHRoZSB0eXBlOlxuXG4qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LlxuXG4qIFRoZSB2YWx1ZXMgYGBmbG9hdChcJ05hTlwnKWBgIGFuZCBgYERlY2ltYWwoXCdOYU5cJylgYCBhcmUgc3BlY2lhbC4gVGhlXG4gIGFyZSBpZGVudGljYWwgdG8gdGhlbXNlbHZlcywgYGB4IGlzIHhgYCBidXQgYXJlIG5vdCBlcXVhbCB0b1xuICB0aGVtc2VsdmVzLCBgYHggIT0geGBgLiAgQWRkaXRpb25hbGx5LCBjb21wYXJpbmcgYW55IHZhbHVlIHRvIGFcbiAgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuIGBgRmFsc2VgYC4gIEZvciBleGFtcGxlLCBib3RoIGBgMyA8XG4gIGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgZmxvYXQoXCdOYU5cJykgPCAzYGAgd2lsbCByZXR1cm4gYGBGYWxzZWBgLlxuXG4qIEJ5dGVzIG9iamVjdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljXG4gIHZhbHVlcyBvZiB0aGVpciBlbGVtZW50cy5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyBlcXVpdmFsZW50c1xuICAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBvcmQoKWBgKSBvZiB0aGVpciBjaGFyYWN0ZXJzLlxuICBbM10gU3RyaW5nIGFuZCBieXRlcyBvYmplY3QgY2FuXCd0IGJlIGNvbXBhcmVkIVxuXG4qIFR1cGxlcyBhbmQgbGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gb2ZcbiAgY29ycmVzcG9uZGluZyBlbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBlYWNoXG4gIGVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG4gIHR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLlxuXG4gIElmIG5vdCBlcXVhbCwgdGhlIHNlcXVlbmNlcyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdFxuICBkaWZmZXJpbmcgZWxlbWVudHMuICBGb3IgZXhhbXBsZSwgYGBbMSwyLHhdIDw9IFsxLDIseV1gYCBoYXMgdGhlXG4gIHNhbWUgdmFsdWUgYXMgYGB4IDw9IHlgYC4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3RcbiAgZXhpc3QsIHRoZSBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCBgYFsxLDJdIDxcbiAgWzEsMiwzXWBgKS5cblxuKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGVcbiAgc2FtZSBgYChrZXksIHZhbHVlKWBgIHBhaXJzLiBPcmRlciBjb21wYXJpc29ucyBgYChcJzxcJywgXCc8PVwnLCBcJz49XCcsXG4gIFwnPlwnKWBgIHJhaXNlIGBgVHlwZUVycm9yYGAuXG5cbiogU2V0cyBhbmQgZnJvemVuc2V0cyBkZWZpbmUgY29tcGFyaXNvbiBvcGVyYXRvcnMgdG8gbWVhbiBzdWJzZXQgYW5kXG4gIHN1cGVyc2V0IHRlc3RzLiAgVGhvc2UgcmVsYXRpb25zIGRvIG5vdCBkZWZpbmUgdG90YWwgb3JkZXJpbmdzICh0aGVcbiAgdHdvIHNldHMgYGB7MSwyfWBgIGFuZCB7MiwzfSBhcmUgbm90IGVxdWFsLCBub3Igc3Vic2V0cyBvZiBvbmVcbiAgYW5vdGhlciwgbm9yIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlcikuICBBY2NvcmRpbmdseSwgc2V0cyBhcmUgbm90XG4gIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCBvcmRlcmluZy5cbiAgRm9yIGV4YW1wbGUsIGBgbWluKClgYCwgYGBtYXgoKWBgLCBhbmQgYGBzb3J0ZWQoKWBgIHByb2R1Y2VcbiAgdW5kZWZpbmVkIHJlc3VsdHMgZ2l2ZW4gYSBsaXN0IG9mIHNldHMgYXMgaW5wdXRzLlxuXG4qIE1vc3Qgb3RoZXIgb2JqZWN0cyBvZiBidWlsdC1pbiB0eXBlcyBjb21wYXJlIHVuZXF1YWwgdW5sZXNzIHRoZXkgYXJlXG4gIHRoZSBzYW1lIG9iamVjdDsgdGhlIGNob2ljZSB3aGV0aGVyIG9uZSBvYmplY3QgaXMgY29uc2lkZXJlZCBzbWFsbGVyXG4gIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0IGNvbnNpc3RlbnRseVxuICB3aXRoaW4gb25lIGV4ZWN1dGlvbiBvZiBhIHByb2dyYW0uXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgZGlmZmVyaW5nIHR5cGVzIGRlcGVuZHMgb24gd2hldGhlciBlaXRoZXJcbm9mIHRoZSB0eXBlcyBwcm92aWRlIGV4cGxpY2l0IHN1cHBvcnQgZm9yIHRoZSBjb21wYXJpc29uLiAgTW9zdFxubnVtZXJpYyB0eXBlcyBjYW4gYmUgY29tcGFyZWQgd2l0aCBvbmUgYW5vdGhlciwgYnV0IGNvbXBhcmlzb25zIG9mXG5gYGZsb2F0YGAgYW5kIGBgRGVjaW1hbGBgIGFyZSBub3Qgc3VwcG9ydGVkIHRvIGF2b2lkIHRoZSBpbmV2aXRhYmxlXG5jb25mdXNpb24gYXJpc2luZyBmcm9tIHJlcHJlc2VudGF0aW9uIGlzc3VlcyBzdWNoIGFzIGBgZmxvYXQoXCcxLjFcJylgYFxuYmVpbmcgaW5leGFjdGx5IHJlcHJlc2VudGVkIGFuZCB0aGVyZWZvcmUgbm90IGV4YWN0bHkgZXF1YWwgdG9cbmBgRGVjaW1hbChcJzEuMVwnKWBgIHdoaWNoIGlzLiAgV2hlbiBjcm9zcy10eXBlIGNvbXBhcmlzb24gaXMgbm90XG5zdXBwb3J0ZWQsIHRoZSBjb21wYXJpc29uIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYC4gIFRoaXMgY2FuXG5jcmVhdGUgdGhlIGlsbHVzaW9uIG9mIG5vbi10cmFuc2l0aXZpdHkgYmV0d2VlbiBzdXBwb3J0ZWQgY3Jvc3MtdHlwZVxuY29tcGFyaXNvbnMgYW5kIHVuc3VwcG9ydGVkIGNvbXBhcmlzb25zLiAgRm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgyKSA9PVxuMmBgIGFuZCBgYDIgPT0gZmxvYXQoMilgYCBidXQgYGBEZWNpbWFsKDIpICE9IGZsb2F0KDIpYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIHRlc3QgZm9yIG1lbWJlcnNoaXAuICBgYHggaW4gc2BgXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgYGB4XG5ub3QgaW4gc2BgIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIGBgeCBpbiBzYGAuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCBgYGluYGBcbnRlc3RzIHdoZXRoZXIgYSB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXNcbnN1Y2ggYXMgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG5leHByZXNzaW9uIGBgeCBpbiB5YGAgaXMgZXF1aXZhbGVudCB0byBgYGFueSh4IGlzIGUgb3IgeCA9PSBlIGZvciBlIGluXG55KWBgLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCpcbmlzIGEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyBgYHkuZmluZCh4KSAhPSAtMWBgLlxuRW1wdHkgc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyXG5zdHJpbmcsIHNvIGBgIiIgaW4gImFiYyJgYCB3aWxsIHJldHVybiBgYFRydWVgYC5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCxcbmBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiBgYHkuX19jb250YWluc19fKHgpYGAgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgIGJ1dCBkb1xuZGVmaW5lIGBgX19pdGVyX18oKWBgLCBgYHggaW4geWBgIGlzIHRydWUgaWYgc29tZSB2YWx1ZSBgYHpgYCB3aXRoIGBgeFxuPT0gemBgIGlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyIGBgeWBgLiAgSWYgYW4gZXhjZXB0aW9uIGlzXG5yYWlzZWQgZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuYGBfX2dldGl0ZW1fXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCBgYHggPT0geVtpXWBgLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlIGBgSW5kZXhFcnJvcmBgIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbmV4Y2VwdGlvbiBpcyByYWlzZWQsIGl0IGlzIGFzIGlmIGBgaW5gYCByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgYGBub3QgaW5gYCBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuYGBpbmBgLlxuXG5UaGUgb3BlcmF0b3JzIGBgaXNgYCBhbmQgYGBpcyBub3RgYCB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6IGBgeCBpc1xueWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIGBgeCBpc1xubm90IHlgYCB5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKLSAnY29tcG91bmQnOiAnXG5Db21wb3VuZCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5IGFmZmVjdFxub3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICBJblxuZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiBzaW1wbGVcbmluY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSBsaW5lLlxuXG5UaGUgYGBpZmBgLCBgYHdoaWxlYGAgYW5kIGBgZm9yYGAgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWxcbmNvbnRyb2wgZmxvdyBjb25zdHJ1Y3RzLiAgYGB0cnlgYCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vclxuY2xlYW51cCBjb2RlIGZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHMsIHdoaWxlIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIGluaXRpYWxpemF0aW9uIGFuZCBmaW5hbGl6YXRpb24gY29kZSBhcm91bmQgYVxuYmxvY2sgb2YgY29kZS4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmUgYWxzbyBzeW50YWN0aWNhbGx5XG5jb21wb3VuZCBzdGF0ZW1lbnRzLlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnNpc3Qgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCBjb21wb3VuZFxuc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG5cJ3QgYmVcbmNsZWFyIHRvIHdoaWNoIGBgaWZgYCBjbGF1c2UgYSBmb2xsb3dpbmcgYGBlbHNlYGAgY2xhdXNlIHdvdWxkIGJlbG9uZzpcblxuICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCh4KVxuXG5BbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gdGhpc1xuY29udGV4dCwgc28gdGhhdCBpbiB0aGUgZm9sbG93aW5nIGV4YW1wbGUsIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGVcbmBgcHJpbnQoKWBgIGNhbGxzIGFyZSBleGVjdXRlZDpcblxuICAgaWYgeCA8IHkgPCB6OiBwcmludCh4KTsgcHJpbnQoeSk7IHByaW50KHopXG5cblN1bW1hcml6aW5nOlxuXG4gICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWZcbiAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbiAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgc3RhdGVtZW50KyBERURFTlRcbiAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG5cbk5vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSBgYE5FV0xJTkVgYCBwb3NzaWJseSBmb2xsb3dlZCBieVxuYSBgYERFREVOVGBgLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzXG5iZWdpbiB3aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbmFtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyBgYGVsc2VgYFwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiBieVxucmVxdWlyaW5nIG5lc3RlZCBgYGlmYGAgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cblxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgd2hpbGVgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzXG5leGVjdXRlZCBhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuZ29lcyBiYWNrIHRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG5cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgZm9yYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBvZiBhXG5zZXF1ZW5jZSAoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuXG4gICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiBpdGVyYWJsZVxub2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbmBgZXhwcmVzc2lvbl9saXN0YGAuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIG9mIGFzY2VuZGluZyBpbmRpY2VzLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSBgYFN0b3BJdGVyYXRpb25gYFxuZXhjZXB0aW9uKSwgdGhlIHN1aXRlIGluIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkLFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgYGBicmVha2BgIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlIGBgZWxzZWBgIGNsYXVzZVwncyBzdWl0ZS4gIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmRcbmNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGl0ZW0sIG9yIHdpdGggdGhlIGBgZWxzZWBgIGNsYXVzZSBpZiB0aGVyZSB3YXNcbm5vIG5leHQgaXRlbS5cblxuVGhlIHN1aXRlIG1heSBhc3NpZ24gdG8gdGhlIHZhcmlhYmxlKHMpIGluIHRoZSB0YXJnZXQgbGlzdDsgdGhpcyBkb2VzXG5ub3QgYWZmZWN0IHRoZSBuZXh0IGl0ZW0gYXNzaWduZWQgdG8gaXQuXG5cbk5hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbmJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIGl0IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdCBhbGxcbmJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgcmFuZ2UoKWBgIHJldHVybnMgYW5cbml0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgYGBmb3JcbmkgOj0gYSB0byBiIGRvYGA7IGUuZy4sIGBgbGlzdChyYW5nZSgzKSlgYCByZXR1cm5zIHRoZSBsaXN0IGBgWzAsIDEsXG4yXWBgLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZSBsb29wXG4gICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcblxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kXG5vZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiBJZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlIHJhaXNlcyBhbm90aGVyXG5leGNlcHRpb24gb3IgZXhlY3V0ZXMgYSBgYHJldHVybmBgIG9yIGBgYnJlYWtgYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gIFRoZSBleGNlcHRpb25cbmluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nIGV4ZWN1dGlvbiBvZiB0aGVcbmBgZmluYWxseWBgIGNsYXVzZS5cblxuV2hlbiBhIGBgcmV0dXJuYGAsIGBgYnJlYWtgYCBvciBgYGNvbnRpbnVlYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluXG50aGUgYGB0cnlgYCBzdWl0ZSBvZiBhIGBgdHJ5YGAuLi5gYGZpbmFsbHlgYCBzdGF0ZW1lbnQsIHRoZVxuYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGlzIGlsbGVnYWwgaW4gdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYVxucHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZVxubGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSBgYHJhaXNlYGAgc3RhdGVtZW50IHRvXG5nZW5lcmF0ZSBleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uICpUaGUgcmFpc2Ugc3RhdGVtZW50Ki5cblxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgYGBvYmplY3RgYDsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoIGBgc2VsZi5uYW1lID0gdmFsdWVgYC4gIEJvdGggY2xhc3MgYW5kXG5pbnN0YW5jZSBhdHRyaWJ1dGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlIG5vdGF0aW9uXG4iYGBzZWxmLm5hbWVgYCIsIGFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGVcbndpdGggdGhlIHNhbWUgbmFtZSB3aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmVcbnVzZWQgYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlc1xudGhlcmUgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0b1xuY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC0gQ2xhc3NcbiAgIERlY29yYXRvcnNcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzIHRoZXJlXG4gICAgaXMgYSBgYGZpbmFsbHlgYCBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyIGV4Y2VwdGlvbi5cbiAgICBUaGF0IG5ldyBleGNlcHRpb24gY2F1c2VzIHRoZSBvbGQgb25lIHRvIGJlIGxvc3QuXG5cblsyXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgYW5cbiAgICBleGNlcHRpb24gb3IgdGhlIGV4ZWN1dGlvbiBvZiBhIGBgcmV0dXJuYGAsIGBgY29udGludWVgYCwgb3JcbiAgICBgYGJyZWFrYGAgc3RhdGVtZW50LlxuXG5bM10gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgZnVuY3Rpb25cbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGZ1bmN0aW9uXCdzIGBgX19kb2NfX2BgIGF0dHJpYnV0ZSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyBgYF9fZG9jX19gYCBpdGVtIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgY2xhc3NcJ3MgKmRvY3N0cmluZyouXG4nLAorICdjb21wb3VuZCc6ICdcbkNvbXBvdW5kIHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKipcblxuQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgYWZmZWN0XG5vciBjb250cm9sIHRoZSBleGVjdXRpb24gb2YgdGhvc2Ugb3RoZXIgc3RhdGVtZW50cyBpbiBzb21lIHdheS4gIEluXG5nZW5lcmFsLCBjb21wb3VuZCBzdGF0ZW1lbnRzIHNwYW4gbXVsdGlwbGUgbGluZXMsIGFsdGhvdWdoIGluIHNpbXBsZVxuaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lIGxpbmUuXG5cblRoZSBgYGlmYGAsIGBgd2hpbGVgYCBhbmQgYGBmb3JgYCBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbFxuY29udHJvbCBmbG93IGNvbnN0cnVjdHMuICBgYHRyeWBgIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yXG5jbGVhbnVwIGNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhXG5ibG9jayBvZiBjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHlcbmNvbXBvdW5kIHN0YXRlbWVudHMuXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSBcJ2NsYXVzZXMuXCcgIEEgY2xhdXNlXG5jb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSBcJ3N1aXRlLlwnICBUaGUgY2xhdXNlIGhlYWRlcnMgb2YgYVxucGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiBsZXZlbC5cbkVhY2ggY2xhdXNlIGhlYWRlciBiZWdpbnMgd2l0aCBhIHVuaXF1ZWx5IGlkZW50aWZ5aW5nIGtleXdvcmQgYW5kIGVuZHNcbndpdGggYSBjb2xvbi4gIEEgc3VpdGUgaXMgYSBncm91cCBvZiBzdGF0ZW1lbnRzIGNvbnRyb2xsZWQgYnkgYVxuY2xhdXNlLiAgQSBzdWl0ZSBjYW4gYmUgb25lIG9yIG1vcmUgc2VtaWNvbG9uLXNlcGFyYXRlZCBzaW1wbGVcbnN0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlIGhlYWRlclwnc1xuY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uIHN1YnNlcXVlbnRcbmxpbmVzLiAgT25seSB0aGUgbGF0dGVyIGZvcm0gb2Ygc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkIGNvbXBvdW5kXG5zdGF0ZW1lbnRzOyB0aGUgZm9sbG93aW5nIGlzIGlsbGVnYWwsIG1vc3RseSBiZWNhdXNlIGl0IHdvdWxkblwndCBiZVxuY2xlYXIgdG8gd2hpY2ggYGBpZmBgIGNsYXVzZSBhIGZvbGxvd2luZyBgYGVsc2VgYCBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuYGBwcmludCgpYGAgY2FsbHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50KHgpOyBwcmludCh5KTsgcHJpbnQoeilcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCBzdGF0ZW1lbnQrIERFREVOVFxuICAgc3RhdGVtZW50ICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBjb21wb3VuZF9zdG10XG4gICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cblxuTm90ZSB0aGF0IHN0YXRlbWVudHMgYWx3YXlzIGVuZCBpbiBhIGBgTkVXTElORWBgIHBvc3NpYmx5IGZvbGxvd2VkIGJ5XG5hIGBgREVERU5UYGAuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXNcbmJlZ2luIHdpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nIGBgZWxzZWBgXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkIGBgaWZgYCBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cblxuVGhlIGZvcm1hdHRpbmcgb2YgdGhlIGdyYW1tYXIgcnVsZXMgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucyBwbGFjZXNcbmVhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cblxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuXG5cblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cblxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBgYHRyeWBgIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgYGBleGNlcHRgYCBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW5cbm5vIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBzdWl0ZSwgYSBzZWFyY2ggZm9yXG5hbiBleGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdFxuY2xhdXNlcyBpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuXG5leHByZXNzaW9uLWxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzXG5hbnkgZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0XG5leHByZXNzaW9uIGlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZVxucmVzdWx0aW5nIG9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzXG5jb21wYXRpYmxlIHdpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlXG5leGNlcHRpb24gb2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGVcbmV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSBgYHRyeWBgIHN0YXRlbWVudFxucmFpc2VkIHRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlIGBgYXNgYCBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSxcbmlmIHByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbmNsYXVzZXMgbXVzdCBoYXZlIGFuIGV4ZWN1dGFibGUgYmxvY2suICBXaGVuIHRoZSBlbmQgb2YgdGhpcyBibG9jayBpc1xucmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSBzdGF0ZW1lbnQuXG4oVGhpcyBtZWFucyB0aGF0IGlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbixcbmFuZCB0aGUgZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlXG5vdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuV2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gYXNzaWduZWQgdXNpbmcgYGBhcyB0YXJnZXRgYCwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgYGBzeXNgYCBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3MgdmlhXG5gYHN5cy5leGNfaW5mbygpYGAuIGBgc3lzLmV4Y19pbmZvKClgYCByZXR1cm5zIGEgMy10dXBsZSBjb25zaXN0aW5nIG9mXG50aGUgZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3RcbihzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KikgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluXG50aGUgcHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgYGBzeXMuZXhjX2luZm8oKWBgIHZhbHVlc1xuYXJlIHJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCBgYGVsc2VgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlIGBgdHJ5YGAgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgYGBlbHNlYGAgY2xhdXNlXG5hcmUgbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyBgYGV4Y2VwdGBgIGNsYXVzZXMuXG5cbklmIGBgZmluYWxseWBgIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGVcbmBgdHJ5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55IGBgZXhjZXB0YGAgYW5kIGBgZWxzZWBgXG5jbGF1c2VzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdFxuaGFuZGxlZCwgdGhlIGV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlIGBgZmluYWxseWBgIGNsYXVzZSBpc1xuZXhlY3V0ZWQuICBJZiB0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCBpdCBpc1xucmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgXG5jbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgc2V0IGFzIHRoZVxuY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbjsgaWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSBleGVjdXRlcyBhXG5gYHJldHVybmBgIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvbiBpcyBkaXNjYXJkZWQ6XG5cbiAgIGRlZiBmKCk6XG4gICAgICAgdHJ5OlxuICAgICAgICAgICAxLzBcbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICByZXR1cm4gNDJcblxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cblxuVGhlIGBgd2l0aGBgIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uXG5gYHRyeWBgLi4uYGBleGNlcHRgYC4uLmBgZmluYWxseWBgIHVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZFxuZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlIGBgd2l0aF9pdGVtYGApXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19leGl0X18oKWBgIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzIGBgX19lbnRlcl9fKClgYCBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gYGBfX2VudGVyX18oKWBgIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgYGB3aXRoYGAgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgYGBfX2VudGVyX18oKWBgXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gYGBfX2V4aXRfXygpYGAgd2lsbCBhbHdheXNcbiAgICAgYmUgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvIGBgX19leGl0X18oKWBgLiBPdGhlcndpc2UsXG4gICB0aHJlZSBgYE5vbmVgYCBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgYGBfX2V4aXRfXygpYGAgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpc1xuICAgcmVyYWlzZWQuICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICBzdXBwcmVzc2VkLCBhbmQgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nXG4gICB0aGUgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSBgYF9fZXhpdF9fKClgYCBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uIHByb2NlZWRzXG4gICBhdCB0aGUgbm9ybWFsIGxvY2F0aW9uIGZvciB0aGUga2luZCBvZiBleGl0IHRoYXQgd2FzIHRha2VuLlxuXG5XaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxubXVsdGlwbGUgYGB3aXRoYGAgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cbkZ1bmN0aW9uIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PT09PVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGZ1bmNkZWYgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiIFsiLT4iIGV4cHJlc3Npb25dICI6IiBzdWl0ZVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbcGFyYW1ldGVyX2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSpcbiAgICAgICAgICAgICAgICAgICAgICBbLCAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgcGFyYW1ldGVycyBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqIGBgPWBgXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nIGFyZ3VtZW50IG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgImBgKmBgIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tXG50aGlzIGlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIG9uY2UsIHdoZW5cbnRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLWNvbXB1dGVkIiB2YWx1ZSBpc1xudXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHdoZW4gYVxuZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSBkaWN0aW9uYXJ5OlxuaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gYnkgYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYVxubGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyBnZW5lcmFsbHkgbm90XG53aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzIGlzIHRvIHVzZSBgYE5vbmVgYCBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iYGAqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZ1xuYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWZcbnRoZSBmb3JtICJgYCoqaWRlbnRpZmllcmBgIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiYGAqYGAiIG9yICJgYCppZGVudGlmaWVyYGAiIGFyZVxua2V5d29yZC1vbmx5IHBhcmFtZXRlcnMgYW5kIG1heSBvbmx5IGJlIHBhc3NlZCB1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuXG5QYXJhbWV0ZXJzIG1heSBoYXZlIGFubm90YXRpb25zIG9mIHRoZSBmb3JtICJgYDogZXhwcmVzc2lvbmBgIlxuZm9sbG93aW5nIHRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvblxuZXZlbiB0aG9zZSBvZiB0aGUgZm9ybSBgYCppZGVudGlmaWVyYGAgb3IgYGAqKmlkZW50aWZpZXJgYC4gIEZ1bmN0aW9uc1xubWF5IGhhdmUgInJldHVybiIgYW5ub3RhdGlvbiBvZiB0aGUgZm9ybSAiYGAtPiBleHByZXNzaW9uYGAiIGFmdGVyIHRoZVxucGFyYW1ldGVyIGxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uXG5hbmQgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLlxuQW5ub3RhdGlvbnMgbWF5IGJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluXG50aGUgc291cmNlIGNvZGUuICBUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZVxuc2VtYW50aWNzIG9mIGEgZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhc1xudmFsdWVzIG9mIGEgZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZVxuYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhIGZvcm1zLFxuZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGEgZm9ybSBpcyBtZXJlbHkgYVxuc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjsgYSBmdW5jdGlvbiBkZWZpbmVkIGluXG5hICJgYGRlZmBgIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3IgYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lXG5qdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhIGZvcm0uICBUaGUgImBgZGVmYGAiIGZvcm0gaXNcbmFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXQgYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGVcbnN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICJgYGRlZmBgIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuICAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZFxudHlwZSBoaWVyYXJjaHkqKTpcblxuICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyBgYG9iamVjdGBgOyBoZW5jZSxcblxuICAgY2xhc3MgRm9vOlxuICAgICAgIHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb28ob2JqZWN0KTpcbiAgICAgICBwYXNzXG5cblRoZSBjbGFzc1wncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4qTmFtaW5nIGFuZCBiaW5kaW5nKiksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxub3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZSBjb250YWlucyBtb3N0bHlcbmZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzXCdzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgaXRzXG5leGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlIGlzIHNhdmVkLiBbNF0gQVxuY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgbGlzdCBmb3IgdGhlIGJhc2VcbmNsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeS5cblRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZSBvcmlnaW5hbCBsb2NhbFxubmFtZXNwYWNlLlxuXG5DbGFzcyBjcmVhdGlvbiBjYW4gYmUgY3VzdG9taXplZCBoZWF2aWx5IHVzaW5nICptZXRhY2xhc3NlcyouXG5cbkNsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nIGZ1bmN0aW9ucyxcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgY2xhc3MgRm9vOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vOiBwYXNzXG4gICBGb28gPSBmMShhcmcpKGYyKEZvbykpXG5cblRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3JcbmZ1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSBjbGFzcyBvYmplY3QsIHdoaWNoIGlzIHRoZW5cbmJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIGF0dHJpYnV0ZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBpbnN0YW5jZXMuICBJbnN0YW5jZSBhdHRyaWJ1dGVzXG5jYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggYGBzZWxmLm5hbWUgPSB2YWx1ZWBgLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiJgYHNlbGYubmFtZWBgIiwgYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZVxud2l0aCB0aGUgc2FtZSBuYW1lIHdoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZVxudXNlZCBhcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzXG50aGVyZSBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvXG5jcmVhdGUgaW5zdGFuY2UgdmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLSBDbGFzc1xuICAgRGVjb3JhdG9yc1xuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3MgdGhlcmVcbiAgICBpcyBhIGBgZmluYWxseWBgIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXIgZXhjZXB0aW9uLlxuICAgIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhblxuICAgIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgYGByZXR1cm5gYCwgYGBjb250aW51ZWBgLCBvclxuICAgIGBgYnJlYWtgYCBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBmdW5jdGlvblxuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgYGBfX2RvY19fYGAgYXR0cmlidXRlIGFuZFxuICAgIHRoZXJlZm9yZSB0aGUgZnVuY3Rpb25cJ3MgKmRvY3N0cmluZyouXG5cbls0XSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZSBjbGFzc1xuICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzIGBgX19kb2NfX2BgIGl0ZW0gYW5kXG4gICAgdGhlcmVmb3JlIHRoZSBjbGFzc1wncyAqZG9jc3RyaW5nKi5cbicsCiAgJ2NvbnRleHQtbWFuYWdlcnMnOiAnXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAogICdjb250aW51ZSc6ICdcblRoZSBgYGNvbnRpbnVlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbmBgY29udGludWVgYCBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGBgZm9yYGAgb3JcbmBgd2hpbGVgYCBsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3JcbmBgZmluYWxseWBgIGNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGVcbm9mIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuIGBgY29udGludWVgYCBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIGFcbmBgZmluYWxseWBgIGNsYXVzZSwgdGhhdCBgYGZpbmFsbHlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseVxuc3RhcnRpbmcgdGhlIG5leHQgbG9vcCBjeWNsZS5cbicsCiAgJ2NvbnZlcnNpb25zJzogJ1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhpcyBtZWFuc1xudGhhdCB0aGUgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24gZm9yIGJ1aWx0LWluIHR5cGVzIHdvcmtzIHRoYXQgd2F5OlxuXG4qIElmIGVpdGhlciBhcmd1bWVudCBpcyBhIGNvbXBsZXggbnVtYmVyLCB0aGUgb3RoZXIgaXMgY29udmVydGVkIHRvXG4gIGNvbXBsZXg7XG5cbiogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsIHRoZSBvdGhlclxuICBpcyBjb252ZXJ0ZWQgdG8gZmxvYXRpbmcgcG9pbnQ7XG5cbiogb3RoZXJ3aXNlLCBib3RoIG11c3QgYmUgaW50ZWdlcnMgYW5kIG5vIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5LlxuXG5Tb21lIGFkZGl0aW9uYWwgcnVsZXMgYXBwbHkgZm9yIGNlcnRhaW4gb3BlcmF0b3JzIChlLmcuLCBhIHN0cmluZyBsZWZ0XG5hcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAotICdjdXN0b21pemF0aW9uJzogJ1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgYGBfX25ld19fKClgYCBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiBgYF9fbmV3X18oKWBgIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseVxuICAgYW4gaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCB1c2luZ1xuICAgYGBzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKWBgIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICBgYF9faW5pdF9fKHNlbGZbLCAuLi5dKWBgLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgLlxuXG4gICBJZiBgYF9fbmV3X18oKWBgIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgYGBfX25ld19fKClgYCBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgY3JlYXRlZC4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICBgYF9faW5pdF9fKClgYCBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCxcbiAgIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZlxuICAgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgYGBCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKWBgLiAgQXMgYSBzcGVjaWFsIGNvbnN0cmFpbnRcbiAgIG9uIGNvbnN0cnVjdG9ycywgbm8gdmFsdWUgbWF5IGJlIHJldHVybmVkOyBkb2luZyBzbyB3aWxsIGNhdXNlIGFcbiAgIGBgVHlwZUVycm9yYGAgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgYGBfX2RlbF9fKClgYCBtZXRob2QsXG4gICB0aGUgZGVyaXZlZCBjbGFzc1wncyBgYF9fZGVsX18oKWBgIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHlcbiAgIGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZVxuICAgaW5zdGFuY2UuICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3JcbiAgIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICBgYF9fZGVsX18oKWBgIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogYGBkZWwgeGBgIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgYGB4Ll9fZGVsX18oKWBgIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgYGB4YGAgYnkgb25lLCBhbmQgdGhlIGxhdHRlclxuICAgICBpcyBvbmx5IGNhbGxlZCB3aGVuIGBgeGBgXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lXG4gICAgIGNvbW1vbiBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhblxuICAgICBvYmplY3QgZnJvbSBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlblxuICAgICBvYmplY3RzIChlLmcuLCBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aFxuICAgICBwYXJlbnQgYW5kIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGVcbiAgICAgc3RhY2sgZnJhbWUgb2YgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2tcbiAgICAgc3RvcmVkIGluIGBgc3lzLmV4Y19pbmZvKClbMl1gYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvclxuICAgICBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhblxuICAgICB1bmhhbmRsZWQgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nIGBgTm9uZWBgIGluXG4gICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuIENpcmN1bGFyIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlXG4gICAgIGRldGVjdGVkIHdoZW4gdGhlIG9wdGlvbiBjeWNsZSBkZXRlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieVxuICAgICBkZWZhdWx0KSwgYnV0IGNhbiBvbmx5IGJlIGNsZWFuZWQgdXAgaWYgdGhlcmUgYXJlIG5vIFB5dGhvbi1cbiAgICAgbGV2ZWwgYGBfX2RlbF9fKClgYCBtZXRob2RzIGludm9sdmVkLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvblxuICAgICBmb3IgdGhlIGBgZ2NgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgaGFuZGxlZCBieSB0aGUgY3ljbGUgZGV0ZWN0b3IsXG4gICAgIHBhcnRpY3VsYXJseSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGBgZ2FyYmFnZWBgIHZhbHVlLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmcgdGhlaXIgZXhlY3V0aW9uXG4gICAgIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG8gYGBzeXMuc3RkZXJyYGAgaW5zdGVhZC5cbiAgICAgQWxzbywgd2hlbiBgYF9fZGVsX18oKWBgIGlzIGludm9rZWQgaW4gcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmdcbiAgICAgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0gaXMgZG9uZSksIG90aGVyXG4gICAgIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZVxuICAgICBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgdG9ybiBkb3duIChlLmcuIHRoZVxuICAgICBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXMgcmVhc29uLCBgYF9fZGVsX18oKWBgXG4gICAgIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZCB0byBtYWludGFpblxuICAgICBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSwgUHl0aG9uXG4gICAgIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgYGBfX2RlbF9fKClgYCBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHJlcHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlXG4gICAib2ZmaWNpYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsXG4gICB0aGlzIHNob3VsZCBsb29rIGxpa2UgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWRcbiAgIHRvIHJlY3JlYXRlIGFuIG9iamVjdCB3aXRoIHRoZSBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZVxuICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtXG4gICBgYDwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj5gYCBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgYGBfX3JlcHJfXygpYGBcbiAgIGJ1dCBub3QgYGBfX3N0cl9fKClgYCwgdGhlbiBgYF9fcmVwcl9fKClgYCBpcyBhbHNvIHVzZWQgd2hlbiBhblxuICAgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXNcbiAgIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBzdHIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBieSB0aGUgYGBwcmludCgpYGBcbiAgIGZ1bmN0aW9uIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuICBUaGlzIGRpZmZlcnMgZnJvbSBgYF9fcmVwcl9fKClgYCBpbiB0aGF0IGl0IGRvZXMgbm90IGhhdmVcbiAgIHRvIGJlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2VcbiAgIHJlcHJlc2VudGF0aW9uIG1heSBiZSB1c2VkIGluc3RlYWQuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhXG4gICBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBgYGJ5dGVzKClgYCB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgYGBieXRlc2BgIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgYGBmb3JtYXQoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgIGBgZm9ybWF0KClgYCBtZXRob2Qgb2YgY2xhc3MgYGBzdHJgYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgYGBmb3JtYXRfc3BlY2BgIGFyZ3VtZW50IGlzXG4gICBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9uc1xuICAgZGVzaXJlZC4gVGhlIGludGVycHJldGF0aW9uIG9mIHRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMgdXBcbiAgIHRvIHRoZSB0eXBlIGltcGxlbWVudGluZyBgYF9fZm9ybWF0X18oKWBgLCBob3dldmVyIG1vc3QgY2xhc3Nlc1xuICAgd2lsbCBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvclxuICAgdXNlIGEgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiBgYHg8eWBgIGNhbGxzIGBgeC5fX2x0X18oeSlgYCwgYGB4PD15YGAgY2FsbHNcbiAgIGBgeC5fX2xlX18oeSlgYCwgYGB4PT15YGAgY2FsbHMgYGB4Ll9fZXFfXyh5KWBgLCBgYHghPXlgYCBjYWxsc1xuICAgYGB4Ll9fbmVfXyh5KWBgLCBgYHg+eWBgIGNhbGxzIGBgeC5fX2d0X18oeSlgYCwgYW5kIGBgeD49eWBgIGNhbGxzXG4gICBgYHguX19nZV9fKHkpYGAuXG5cbiAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b25cbiAgIGBgTm90SW1wbGVtZW50ZWRgYCBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYVxuICAgZ2l2ZW4gcGFpciBvZiBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sIGBgRmFsc2VgYCBhbmQgYGBUcnVlYGAgYXJlXG4gICByZXR1cm5lZCBmb3IgYSBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuXG4gICByZXR1cm4gYW55IHZhbHVlLCBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGFcbiAgIEJvb2xlYW4gY29udGV4dCAoZS5nLiwgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiBgYGlmYGAgc3RhdGVtZW50KSxcbiAgIFB5dGhvbiB3aWxsIGNhbGwgYGBib29sKClgYCBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHRcbiAgIGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mIGBgeD09eWBgIGRvZXMgbm90IGltcGx5IHRoYXQgYGB4IT15YGAgaXMgZmFsc2UuXG4gICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyBgYF9fZXFfXygpYGAsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgIGBgX19uZV9fKClgYCBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgZXhwZWN0ZWQuICBTZWVcbiAgIHRoZSBwYXJhZ3JhcGggb24gYGBfX2hhc2hfXygpYGAgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsIGBgX19sdF9fKClgYCBhbmQgYGBfX2d0X18oKWBgIGFyZSBlYWNoXG4gICBvdGhlclwncyByZWZsZWN0aW9uLCBgYF9fbGVfXygpYGAgYW5kIGBgX19nZV9fKClgYCBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgYW5kIGBgX19lcV9fKClgYCBhbmQgYGBfX25lX18oKWBgIGFyZSB0aGVpciBvd25cbiAgIHJlZmxlY3Rpb24uXG5cbiAgIEFyZ3VtZW50cyB0byByaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBhcmUgbmV2ZXIgY29lcmNlZC5cblxuICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBvcmRlcmluZyBvcGVyYXRpb25zIGZyb20gYSBzaW5nbGUgcm9vdFxuICAgb3BlcmF0aW9uLCBzZWUgYGBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKWBgLlxuXG5vYmplY3QuX19oYXNoX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uIGBgaGFzaCgpYGAgYW5kIGZvciBvcGVyYXRpb25zIG9uXG4gICBtZW1iZXJzIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgYGBzZXRgYCwgYGBmcm96ZW5zZXRgYCwgYW5kXG4gICBgYGRpY3RgYC4gIGBgX19oYXNoX18oKWBgIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5XG4gICByZXF1aXJlZCBwcm9wZXJ0eSBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lXG4gICBoYXNoIHZhbHVlOyBpdCBpcyBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nXG4gICBleGNsdXNpdmUgb3IpIHRoZSBoYXNoIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0XG4gICBhbHNvIHBsYXkgYSBwYXJ0IGluIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCBpdCBzaG91bGQgbm90XG4gICBkZWZpbmUgYSBgYF9faGFzaF9fKClgYCBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzXG4gICBgYF9fZXFfXygpYGAgYnV0IG5vdCBgYF9faGFzaF9fKClgYCwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZVxuICAgdXNhYmxlIGFzIGl0ZW1zIGluIGhhc2hhYmxlIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzXG4gICBtdXRhYmxlIG9iamVjdHMgYW5kIGltcGxlbWVudHMgYW4gYGBfX2VxX18oKWBgIG1ldGhvZCwgaXQgc2hvdWxkXG4gICBub3QgaW1wbGVtZW50IGBgX19oYXNoX18oKWBgLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGVcbiAgIGNvbGxlY3Rpb25zIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZVxuICAgb2JqZWN0XCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlIGBgX19lcV9fKClgYCBhbmQgYGBfX2hhc2hfXygpYGAgbWV0aG9kc1xuICAgYnkgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgYGB4Ll9faGFzaF9fKClgYCByZXR1cm5zIGBgaWQoeClgYC5cblxuICAgQ2xhc3NlcyB3aGljaCBpbmhlcml0IGEgYGBfX2hhc2hfXygpYGAgbWV0aG9kIGZyb20gYSBwYXJlbnQgY2xhc3NcbiAgIGJ1dCBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgYGBfX2VxX18oKWBgIHN1Y2ggdGhhdCB0aGUgaGFzaCB2YWx1ZVxuICAgcmV0dXJuZWQgaXMgbm8gbG9uZ2VyIGFwcHJvcHJpYXRlIChlLmcuIGJ5IHN3aXRjaGluZyB0byBhIHZhbHVlLVxuICAgYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGlkZW50aXR5IGJhc2VkXG4gICBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nIHVuaGFzaGFibGUgYnlcbiAgIHNldHRpbmcgYGBfX2hhc2hfXyA9IE5vbmVgYCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4gRG9pbmcgc28gbWVhbnNcbiAgIHRoYXQgbm90IG9ubHkgd2lsbCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHJhaXNlIGFuIGFwcHJvcHJpYXRlXG4gICBgYFR5cGVFcnJvcmBgIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsXG4gICBidXQgdGhleSB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgYXMgdW5oYXNoYWJsZSB3aGVuXG4gICBjaGVja2luZyBgYGlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSlgYCAodW5saWtlIGNsYXNzZXNcbiAgIHdoaWNoIGRlZmluZSB0aGVpciBvd24gYGBfX2hhc2hfXygpYGAgdG8gZXhwbGljaXRseSByYWlzZVxuICAgYGBUeXBlRXJyb3JgYCkuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgYGBfX2VxX18oKWBgIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIGBgX19oYXNoX18oKWBgIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZVxuICAgaW50ZXJwcmV0ZXIgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nIGBgX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfX2BgLiBPdGhlcndpc2UgdGhlIGluaGVyaXRhbmNlIG9mXG4gICBgYF9faGFzaF9fKClgYCB3aWxsIGJlIGJsb2NrZWQsIGp1c3QgYXMgaWYgYGBfX2hhc2hfX2BgIGhhZCBiZWVuXG4gICBleHBsaWNpdGx5IHNldCB0byBgYE5vbmVgYC5cblxuICAgU2VlIGFsc28gdGhlICotUiogY29tbWFuZC1saW5lIG9wdGlvbi5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgYGBib29sKClgYDsgc2hvdWxkIHJldHVybiBgYEZhbHNlYGAgb3IgYGBUcnVlYGAuICBXaGVuIHRoaXMgbWV0aG9kXG4gICBpcyBub3QgZGVmaW5lZCwgYGBfX2xlbl9fKClgYCBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGVcbiAgIG9iamVjdCBpcyBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzc1xuICAgZGVmaW5lcyBuZWl0aGVyIGBgX19sZW5fXygpYGAgbm9yIGBgX19ib29sX18oKWBgLCBhbGwgaXRzIGluc3RhbmNlc1xuICAgYXJlIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCi0gJ2RlYnVnZ2VyJzogJ1xuYGBwZGJgYCAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgbW9kdWxlIGBgcGRiYGAgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLSBpdCBpcyBhY3R1YWxseSBkZWZpbmVkIGFzIHRoZSBjbGFzc1xuYGBQZGJgYC4gVGhpcyBpcyBjdXJyZW50bHkgdW5kb2N1bWVudGVkIGJ1dCBlYXNpbHkgdW5kZXJzdG9vZCBieVxucmVhZGluZyB0aGUgc291cmNlLiAgVGhlIGV4dGVuc2lvbiBpbnRlcmZhY2UgdXNlcyB0aGUgbW9kdWxlcyBgYGJkYmBgXG5hbmQgYGBjbWRgYC5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyBgYChQZGIpYGAuIFR5cGljYWwgdXNhZ2UgdG8gcnVuIGEgcHJvZ3JhbVxudW5kZXIgY29udHJvbCBvZiB0aGUgZGVidWdnZXIgaXM6XG5cbiAgID4+PiBpbXBvcnQgcGRiXG4gICA+Pj4gaW1wb3J0IG15bW9kdWxlXG4gICA+Pj4gcGRiLnJ1bihcJ215bW9kdWxlLnRlc3QoKVwnKVxuICAgPiA8c3RyaW5nPigwKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICBOYW1lRXJyb3I6IFwnc3BhbVwnXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKVxuXG5gYHBkYi5weWBgIGNhbiBhbHNvIGJlIGludm9rZWQgYXMgYSBzY3JpcHQgdG8gZGVidWcgb3RoZXIgc2NyaXB0cy5cbkZvciBleGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6IGBgcGRiLnB5YGAgbm93IGFjY2VwdHMgYSBgYC1jYGAgb3B0aW9uIHRoYXRcbmV4ZWN1dGVzIGNvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgYGAucGRicmNgYCBmaWxlLCBzZWUgKkRlYnVnZ2VyXG5Db21tYW5kcyouXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlIGBgY29udGludWVgYCBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSBgYGNvbnRpbnVlYGAsIG9yIHlvdSBjYW5cbiAgIHN0ZXAgdGhyb3VnaCB0aGUgc3RhdGVtZW50IHVzaW5nIGBgc3RlcGBgIG9yIGBgbmV4dGBgIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSBgYF9fbWFpbl9fYGAgaXMgdXNlZC4gIChTZWVcbiAgIHRoZSBleHBsYW5hdGlvbiBvZiB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBvciBgYGV2YWwoKWBgXG4gICBmdW5jdGlvbnMuKVxuXG5wZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KVxuICAgdW5kZXIgZGVidWdnZXIgY29udHJvbC4gIFdoZW4gYGBydW5ldmFsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICBgYHJ1bigpYGAuXG5cbnBkYi5ydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gYGBydW5jYWxsKClgYCByZXR1cm5zLCBpdCByZXR1cm5zXG4gICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFyc1xuICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cblxucGRiLnNldF90cmFjZSgpXG5cbiAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmIHRoZVxuICAgY29kZSBpcyBub3Qgb3RoZXJ3aXNlIGJlaW5nIGRlYnVnZ2VkIChlLmcuIHdoZW4gYW4gYXNzZXJ0aW9uXG4gICBmYWlscykuXG5cbnBkYi5wb3N0X21vcnRlbSh0cmFjZWJhY2s9Tm9uZSlcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICBJZiBub1xuICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgaXNcbiAgIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChhbiBleGNlcHRpb24gbXVzdCBiZSBiZWluZyBoYW5kbGVkIGlmIHRoZVxuICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cblxucGRiLnBtKClcblxuICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSB0cmFjZWJhY2sgZm91bmQgaW5cbiAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cblRoZSBgYHJ1bipgYCBmdW5jdGlvbnMgYW5kIGBgc2V0X3RyYWNlKClgYCBhcmUgYWxpYXNlcyBmb3Jcbmluc3RhbnRpYXRpbmcgdGhlIGBgUGRiYGAgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZVxubmFtZS4gIElmIHlvdSB3YW50IHRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzXG55b3Vyc2VsZjpcblxuY2xhc3MgY2xhc3MgcGRiLlBkYihjb21wbGV0ZWtleT1cJ3RhYlwnLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgc2tpcD1Ob25lLCBub3NpZ2ludD1GYWxzZSlcblxuICAgYGBQZGJgYCBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgYGBjbWQuQ21kYGAgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG5cbiAgIFRoZSAqc2tpcCogYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mIGdsb2Itc3R5bGVcbiAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgdGhhdFxuICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuIFsxXVxuXG4gICBCeSBkZWZhdWx0LCBQZGIgc2V0cyBhIGhhbmRsZXIgZm9yIHRoZSBTSUdJTlQgc2lnbmFsICh3aGljaCBpcyBzZW50XG4gICB3aGVuIHRoZSB1c2VyIHByZXNzZXMgQ3RybC1DIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgIGBgY29udGludWVgYCBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXJcbiAgIGFnYWluIGJ5IHByZXNzaW5nIEN0cmwtQy4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVFxuICAgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG5gYGgoZWxwKWBgIG1lYW5zIHRoYXQgZWl0aGVyIGBgaGBgIG9yIGBgaGVscGBgIGNhbiBiZSB1c2VkIHRvIGVudGVyXG50aGUgaGVscCBjb21tYW5kIChidXQgbm90IGBgaGVgYCBvciBgYGhlbGBgLCBub3IgYGBIYGAgb3IgYGBIZWxwYGAgb3JcbmBgSEVMUGBgKS4gIEFyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlXG4oc3BhY2VzIG9yIHRhYnMpLiAgT3B0aW9uYWwgYXJndW1lbnRzIGFyZSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHNcbihgYFtdYGApIGluIHRoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbkFsdGVybmF0aXZlcyBpbiB0aGUgY29tbWFuZCBzeW50YXggYXJlIHNlcGFyYXRlZCBieSBhIHZlcnRpY2FsIGJhclxuKGBgfGBgKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSBgYGxpc3RgYCBjb21tYW5kLCB0aGUgbmV4dCAxMSBsaW5lcyBhcmUgbGlzdGVkLlxuXG5Db21tYW5kcyB0aGF0IHRoZSBkZWJ1Z2dlciBkb2VzblwndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgUHl0aG9uXG5zdGF0ZW1lbnRzIGFuZCBhcmUgZXhlY3V0ZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiBleGNsYW1hdGlvblxucG9pbnQgKGBgIWBgKS4gIFRoaXMgaXMgYSBwb3dlcmZ1bCB3YXkgdG8gaW5zcGVjdCB0aGUgcHJvZ3JhbSBiZWluZ1xuZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhIGZ1bmN0aW9uLlxuV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHN1Y2ggYSBzdGF0ZW1lbnQsIHRoZSBleGNlcHRpb24gbmFtZSBpc1xucHJpbnRlZCBidXQgdGhlIGRlYnVnZ2VyXCdzIHN0YXRlIGlzIG5vdCBjaGFuZ2VkLlxuXG5UaGUgZGVidWdnZXIgc3VwcG9ydHMgKmFsaWFzZXMqLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzIHdoaWNoXG5hbGxvd3Mgb25lIGEgY2VydGFpbiBsZXZlbCBvZiBhZGFwdGFiaWxpdHkgdG8gdGhlIGNvbnRleHQgdW5kZXJcbmV4YW1pbmF0aW9uLlxuXG5NdWx0aXBsZSBjb21tYW5kcyBtYXkgYmUgZW50ZXJlZCBvbiBhIHNpbmdsZSBsaW5lLCBzZXBhcmF0ZWQgYnlcbmBgOztgYC4gIChBIHNpbmdsZSBgYDtgYCBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvclxubXVsdGlwbGUgY29tbWFuZHMgaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vXG5pbnRlbGxpZ2VuY2UgaXMgYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0XG5hdCB0aGUgZmlyc3QgYGA7O2BgIHBhaXIsIGV2ZW4gaWYgaXQgaXMgaW4gdGhlIG1pZGRsZSBvZiBhIHF1b3RlZFxuc3RyaW5nLlxuXG5JZiBhIGZpbGUgYGAucGRicmNgYCBleGlzdHMgaW4gdGhlIHVzZXJcJ3MgaG9tZSBkaXJlY3Rvcnkgb3IgaW4gdGhlXG5jdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gdHlwZWRcbmF0IHRoZSBkZWJ1Z2dlciBwcm9tcHQuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yIGFsaWFzZXMuICBJZlxuYm90aCBmaWxlcyBleGlzdCwgdGhlIG9uZSBpbiB0aGUgaG9tZSBkaXJlY3RvcnkgaXMgcmVhZCBmaXJzdCBhbmRcbmFsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogYGAucGRicmNgYCBjYW4gbm93IGNvbnRhaW4gY29tbWFuZHMgdGhhdFxuY29udGludWUgZGVidWdnaW5nLCBzdWNoIGFzIGBgY29udGludWVgYCBvciBgYG5leHRgYC4gIFByZXZpb3VzbHksXG50aGVzZSBjb21tYW5kcyBoYWQgbm8gZWZmZWN0LlxuXG5oKGVscCkgW2NvbW1hbmRdXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggYVxuICAgKmNvbW1hbmQqIGFzIGFyZ3VtZW50LCBwcmludCBoZWxwIGFib3V0IHRoYXQgY29tbWFuZC4gIGBgaGVscCBwZGJgYFxuICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgYGBwZGJgYFxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLFxuICAgYGBoZWxwIGV4ZWNgYCBtdXN0IGJlIGVudGVyZWQgdG8gZ2V0IGhlbHAgb24gdGhlIGBgIWBgIGNvbW1hbmQuXG5cbncoaGVyZSlcblxuICAgUHJpbnQgYSBzdGFjayB0cmFjZSwgd2l0aCB0aGUgbW9zdCByZWNlbnQgZnJhbWUgYXQgdGhlIGJvdHRvbS4gIEFuXG4gICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlIGNvbnRleHQgb2ZcbiAgIG1vc3QgY29tbWFuZHMuXG5cbmQob3duKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluIHRoZVxuICAgc3RhY2sgdHJhY2UgKHRvIGEgbmV3ZXIgZnJhbWUpLlxuXG51KHApIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSBzdGFja1xuICAgdHJhY2UgKHRvIGFuIG9sZGVyIGZyYW1lKS5cblxuYihyZWFrKSBbKFtmaWxlbmFtZTpdbGluZW5vIHwgZnVuY3Rpb24pIFssIGNvbmRpdGlvbl1dXG5cbiAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgZmlsZS5cbiAgIFdpdGggYSAqZnVuY3Rpb24qIGFyZ3VtZW50LCBzZXQgYSBicmVhayBhdCB0aGUgZmlyc3QgZXhlY3V0YWJsZVxuICAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIG1heSBiZSBwcmVmaXhlZFxuICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiBhbm90aGVyXG4gICBmaWxlIChwcm9iYWJseSBvbmUgdGhhdCBoYXNuXCd0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSBpc1xuICAgc2VhcmNoZWQgb24gYGBzeXMucGF0aGBgLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIGBgYnJlYWtgYC5cblxuY2woZWFyKSBbZmlsZW5hbWU6bGluZW5vIHwgYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIFdpdGggYSAqZmlsZW5hbWU6bGluZW5vKiBhcmd1bWVudCwgY2xlYXIgYWxsIHRoZSBicmVha3BvaW50cyBhdFxuICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCBjbGVhclxuICAgdGhvc2UgYnJlYWtwb2ludHMuIFdpdGhvdXQgYXJndW1lbnQsIGNsZWFyIGFsbCBicmVha3MgKGJ1dCBmaXJzdFxuICAgYXNrIGNvbmZpcm1hdGlvbikuXG5cbmRpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBEaXNhYmxlIHRoZSBicmVha3BvaW50cyBnaXZlbiBhcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mXG4gICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCBjYXVzZVxuICAgdGhlIHByb2dyYW0gdG8gc3RvcCBleGVjdXRpb24sIGJ1dCB1bmxpa2UgY2xlYXJpbmcgYSBicmVha3BvaW50LCBpdFxuICAgcmVtYWlucyBpbiB0aGUgbGlzdCBvZiBicmVha3BvaW50cyBhbmQgY2FuIGJlIChyZS0pZW5hYmxlZC5cblxuZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRW5hYmxlIHRoZSBicmVha3BvaW50cyBzcGVjaWZpZWQuXG5cbmlnbm9yZSBicG51bWJlciBbY291bnRdXG5cbiAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiBjb3VudCBpc1xuICAgb21pdHRlZCwgdGhlIGlnbm9yZSBjb3VudCBpcyBzZXQgdG8gMC4gIEEgYnJlYWtwb2ludCBiZWNvbWVzIGFjdGl2ZVxuICAgd2hlbiB0aGUgaWdub3JlIGNvdW50IGlzIHplcm8uICBXaGVuIG5vbi16ZXJvLCB0aGUgY291bnQgaXNcbiAgIGRlY3JlbWVudGVkIGVhY2ggdGltZSB0aGUgYnJlYWtwb2ludCBpcyByZWFjaGVkIGFuZCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbm90IGRpc2FibGVkIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25kaXRpb24gZXZhbHVhdGVzIHRvIHRydWUuXG5cbmNvbmRpdGlvbiBicG51bWJlciBbY29uZGl0aW9uXVxuXG4gICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuICBJZiAqY29uZGl0aW9uKlxuICAgaXMgYWJzZW50LCBhbnkgZXhpc3RpbmcgY29uZGl0aW9uIGlzIHJlbW92ZWQ7IGkuZS4sIHRoZSBicmVha3BvaW50XG4gICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG5cbmNvbW1hbmRzIFticG51bWJlcl1cblxuICAgU3BlY2lmeSBhIGxpc3Qgb2YgY29tbWFuZHMgZm9yIGJyZWFrcG9pbnQgbnVtYmVyICpicG51bWJlciouICBUaGVcbiAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgbGluZVxuICAgY29udGFpbmluZyBqdXN0IGBgZW5kYGAgdG8gdGVybWluYXRlIHRoZSBjb21tYW5kcy4gQW4gZXhhbXBsZTpcblxuICAgICAgKFBkYikgY29tbWFuZHMgMVxuICAgICAgKGNvbSkgcHJpbnQgc29tZV92YXJpYWJsZVxuICAgICAgKGNvbSkgZW5kXG4gICAgICAoUGRiKVxuXG4gICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCBmb2xsb3dcbiAgIGl0IGltbWVkaWF0ZWx5IHdpdGggYGBlbmRgYDsgdGhhdCBpcywgZ2l2ZSBubyBjb21tYW5kcy5cblxuICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgYnJlYWtwb2ludFxuICAgc2V0LlxuXG4gICBZb3UgY2FuIHVzZSBicmVha3BvaW50IGNvbW1hbmRzIHRvIHN0YXJ0IHlvdXIgcHJvZ3JhbSB1cCBhZ2Fpbi5cbiAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciBjb21tYW5kIHRoYXRcbiAgIHJlc3VtZXMgZXhlY3V0aW9uLlxuXG4gICBTcGVjaWZ5aW5nIGFueSBjb21tYW5kIHJlc3VtaW5nIGV4ZWN1dGlvbiAoY3VycmVudGx5IGNvbnRpbnVlLFxuICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSB0ZXJtaW5hdGVzXG4gICB0aGUgY29tbWFuZCBsaXN0IChhcyBpZiB0aGF0IGNvbW1hbmQgd2FzIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5XG4gICBlbmQpLiBUaGlzIGlzIGJlY2F1c2UgYW55IHRpbWUgeW91IHJlc3VtZSBleGVjdXRpb24gKGV2ZW4gd2l0aCBhXG4gICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciBicmVha3BvaW50LS13aGljaFxuICAgY291bGQgaGF2ZSBpdHMgb3duIGNvbW1hbmQgbGlzdCwgbGVhZGluZyB0byBhbWJpZ3VpdGllcyBhYm91dCB3aGljaFxuICAgbGlzdCB0byBleGVjdXRlLlxuXG4gICBJZiB5b3UgdXNlIHRoZSBcJ3NpbGVudFwnIGNvbW1hbmQgaW4gdGhlIGNvbW1hbmQgbGlzdCwgdGhlIHVzdWFsXG4gICBtZXNzYWdlIGFib3V0IHN0b3BwaW5nIGF0IGEgYnJlYWtwb2ludCBpcyBub3QgcHJpbnRlZC4gIFRoaXMgbWF5IGJlXG4gICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgbWVzc2FnZSBhbmRcbiAgIHRoZW4gY29udGludWUuICBJZiBub25lIG9mIHRoZSBvdGhlciBjb21tYW5kcyBwcmludCBhbnl0aGluZywgeW91XG4gICBzZWUgbm8gc2lnbiB0aGF0IHRoZSBicmVha3BvaW50IHdhcyByZWFjaGVkLlxuXG5zKHRlcClcblxuICAgRXhlY3V0ZSB0aGUgY3VycmVudCBsaW5lLCBzdG9wIGF0IHRoZSBmaXJzdCBwb3NzaWJsZSBvY2Nhc2lvblxuICAgKGVpdGhlciBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIG9yIG9uIHRoZSBuZXh0IGxpbmUgaW4gdGhlXG4gICBjdXJyZW50IGZ1bmN0aW9uKS5cblxubihleHQpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGlzXG4gICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBgYG5leHRgYCBhbmRcbiAgIGBgc3RlcGBgIGlzIHRoYXQgYGBzdGVwYGAgc3RvcHMgaW5zaWRlIGEgY2FsbGVkIGZ1bmN0aW9uLCB3aGlsZVxuICAgYGBuZXh0YGAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5XG4gICBzdG9wcGluZyBhdCB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSBgYGZvcmBgIGxvb3Agb3Igb3V0XG4gICBvZiBhIGBgZmluYWxseWBgIGNsYXVzZS5cblxubChpc3QpIFtmaXJzdFssIGxhc3RdXVxuXG4gICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsIGxpc3QgMTFcbiAgIGxpbmVzIGFyb3VuZCB0aGUgY3VycmVudCBsaW5lIG9yIGNvbnRpbnVlIHRoZSBwcmV2aW91cyBsaXN0aW5nLlxuICAgV2l0aCBgYC5gYCBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS5cbiAgIFdpdGggb25lIGFyZ3VtZW50LCBsaXN0IDExIGxpbmVzIGFyb3VuZCBhdCB0aGF0IGxpbmUuICBXaXRoIHR3b1xuICAgYXJndW1lbnRzLCBsaXN0IHRoZSBnaXZlbiByYW5nZTsgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBsZXNzXG4gICB0aGFuIHRoZSBmaXJzdCwgaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBjb3VudC5cblxuICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgYGAtPmBgLiAgSWZcbiAgIGFuIGV4Y2VwdGlvbiBpcyBiZWluZyBkZWJ1Z2dlZCwgdGhlIGxpbmUgd2hlcmUgdGhlIGV4Y2VwdGlvbiB3YXNcbiAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5IGBgPj5gYCwgaWYgaXRcbiAgIGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSBgYD4+YGAgbWFya2VyLlxuXG5sbCB8IGxvbmdsaXN0XG5cbiAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbiAgIEludGVyZXN0aW5nIGxpbmVzIGFyZSBtYXJrZWQgYXMgZm9yIGBgbGlzdGBgLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmEocmdzKVxuXG4gICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cblxucChyaW50KSBleHByZXNzaW9uXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogaW4gdGhlIGN1cnJlbnQgY29udGV4dCBhbmQgcHJpbnQgaXRzXG4gICB2YWx1ZS5cblxucHAgZXhwcmVzc2lvblxuXG4gICBMaWtlIHRoZSBgYHByaW50YGAgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpc1xuICAgcHJldHR5LXByaW50ZWQgdXNpbmcgdGhlIGBgcHByaW50YGAgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSBgYGNvZGVgYCBtb2R1bGUpIHdob3NlXG4gICBnbG9iYWwgbmFtZXNwYWNlIGNvbnRhaW5zIGFsbCB0aGUgKGdsb2JhbCBhbmQgbG9jYWwpIG5hbWVzIGZvdW5kIGluXG4gICB0aGUgY3VycmVudCBzY29wZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hbGlhcyBbbmFtZSBbY29tbWFuZF1dXG5cbiAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlIGNvbW1hbmRcbiAgIG11c3QgKm5vdCogYmUgZW5jbG9zZWQgaW4gcXVvdGVzLiAgUmVwbGFjZWFibGUgcGFyYW1ldGVycyBjYW4gYmVcbiAgIGluZGljYXRlZCBieSBgYCUxYGAsIGBgJTJgYCwgYW5kIHNvIG9uLCB3aGlsZSBgYCUqYGAgaXMgcmVwbGFjZWQgYnlcbiAgIGFsbCB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgZm9yXG4gICAqbmFtZSogaXMgc2hvd24uIElmIG5vIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIGFsbCBhbGlhc2VzIGFyZSBsaXN0ZWQuXG5cbiAgIEFsaWFzZXMgbWF5IGJlIG5lc3RlZCBhbmQgY2FuIGNvbnRhaW4gYW55dGhpbmcgdGhhdCBjYW4gYmUgbGVnYWxseVxuICAgdHlwZWQgYXQgdGhlIHBkYiBwcm9tcHQuICBOb3RlIHRoYXQgaW50ZXJuYWwgcGRiIGNvbW1hbmRzICpjYW4qIGJlXG4gICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCB0aGVcbiAgIGFsaWFzIGlzIHJlbW92ZWQuICBBbGlhc2luZyBpcyByZWN1cnNpdmVseSBhcHBsaWVkIHRvIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgY29tbWFuZCBsaW5lOyBhbGwgb3RoZXIgd29yZHMgaW4gdGhlIGxpbmUgYXJlIGxlZnRcbiAgIGFsb25lLlxuXG4gICBBcyBhbiBleGFtcGxlLCBoZXJlIGFyZSB0d28gdXNlZnVsIGFsaWFzZXMgKGVzcGVjaWFsbHkgd2hlbiBwbGFjZWRcbiAgIGluIHRoZSBgYC5wZGJyY2BgIGZpbGUpOlxuXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyAodXNhZ2UgInBpIGNsYXNzSW5zdCIpXG4gICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6IHByaW50KCIlMS4iLGssIj0iLCUxLl9fZGljdF9fW2tdKVxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gc2VsZlxuICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuXG51bmFsaWFzIG5hbWVcblxuICAgRGVsZXRlIHRoZSBzcGVjaWZpZWQgYWxpYXMuXG5cbiEgc3RhdGVtZW50XG5cbiAgIEV4ZWN1dGUgdGhlIChvbmUtbGluZSkgKnN0YXRlbWVudCogaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnRcbiAgIHN0YWNrIGZyYW1lLiBUaGUgZXhjbGFtYXRpb24gcG9pbnQgY2FuIGJlIG9taXR0ZWQgdW5sZXNzIHRoZSBmaXJzdFxuICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgYVxuICAgZ2xvYmFsIHZhcmlhYmxlLCB5b3UgY2FuIHByZWZpeCB0aGUgYXNzaWdubWVudCBjb21tYW5kIHdpdGggYVxuICAgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggYGBzaGxleGBgIGFuZCB0aGUgcmVzdWx0IGlzIHVzZWQgYXMgdGhlIG5ld1xuICAgYGBzeXMuYXJndmBgLiBIaXN0b3J5LCBicmVha3BvaW50cywgYWN0aW9ucyBhbmQgZGVidWdnZXIgb3B0aW9uc1xuICAgYXJlIHByZXNlcnZlZC4gYGByZXN0YXJ0YGAgaXMgYW4gYWxpYXMgZm9yIGBgcnVuYGAuXG5cbnEodWl0KVxuXG4gICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgYWJvcnRlZC5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGV0aGVyIGEgZnJhbWUgaXMgY29uc2lkZXJlZCB0byBvcmlnaW5hdGUgaW4gYSBjZXJ0YWluIG1vZHVsZSBpc1xuICAgIGRldGVybWluZWQgYnkgdGhlIGBgX19uYW1lX19gYCBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCi0gJ2RlbCc6ICdcblRoZSBgYGRlbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGRlbF9zdG10IDo6PSAiZGVsIiB0YXJnZXRfbGlzdFxuXG5EZWxldGlvbiBpcyByZWN1cnNpdmVseSBkZWZpbmVkIHZlcnkgc2ltaWxhciB0byB0aGUgd2F5IGFzc2lnbm1lbnQgaXNcbmRlZmluZWQuIFJhdGhlciB0aGFuIHNwZWxsaW5nIGl0IG91dCBpbiBmdWxsIGRldGFpbHMsIGhlcmUgYXJlIHNvbWVcbmhpbnRzLlxuXG5EZWxldGlvbiBvZiBhIHRhcmdldCBsaXN0IHJlY3Vyc2l2ZWx5IGRlbGV0ZXMgZWFjaCB0YXJnZXQsIGZyb20gbGVmdFxudG8gcmlnaHQuXG5cbkRlbGV0aW9uIG9mIGEgbmFtZSByZW1vdmVzIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgYGBnbG9iYWxgYFxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG5gYE5hbWVFcnJvcmBgIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZC5cblxuRGVsZXRpb24gb2YgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHN1YnNjcmlwdGlvbnMgYW5kIHNsaWNpbmdzIGlzIHBhc3NlZFxudG8gdGhlIHByaW1hcnkgb2JqZWN0IGludm9sdmVkOyBkZWxldGlvbiBvZiBhIHNsaWNpbmcgaXMgaW4gZ2VuZXJhbFxuZXF1aXZhbGVudCB0byBhc3NpZ25tZW50IG9mIGFuIGVtcHR5IHNsaWNlIG9mIHRoZSByaWdodCB0eXBlIChidXQgZXZlblxudGhpcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzbGljZWQgb2JqZWN0KS5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMi5cbicsCisgJ2N1c3RvbWl6YXRpb24nOiAnXG5CYXNpYyBjdXN0b21pemF0aW9uXG4qKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuJywKKyAnZGVidWdnZXInOiAnXG5gYHBkYmBgIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBtb2R1bGUgYGBwZGJgYCBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyIGZvclxuUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzIGFuZFxuc2luZ2xlIHN0ZXBwaW5nIGF0IHRoZSBzb3VyY2UgbGluZSBsZXZlbCwgaW5zcGVjdGlvbiBvZiBzdGFjayBmcmFtZXMsXG5zb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gdGhlXG5jb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gZGVidWdnaW5nXG5hbmQgY2FuIGJlIGNhbGxlZCB1bmRlciBwcm9ncmFtIGNvbnRyb2wuXG5cblRoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlIGNsYXNzXG5gYFBkYmBgLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5XG5yZWFkaW5nIHRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzIGBgYmRiYGBcbmFuZCBgYGNtZGBgLlxuXG5UaGUgZGVidWdnZXJcJ3MgcHJvbXB0IGlzIGBgKFBkYilgYC4gVHlwaWNhbCB1c2FnZSB0byBydW4gYSBwcm9ncmFtXG51bmRlciBjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBwZGIucnVuKFwnbXltb2R1bGUudGVzdCgpXCcpXG4gICA+IDxzdHJpbmc+KDApPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYikgY29udGludWVcbiAgIE5hbWVFcnJvcjogXCdzcGFtXCdcbiAgID4gPHN0cmluZz4oMSk/KClcbiAgIChQZGIpXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IFRhYi1jb21wbGV0aW9uIHZpYSB0aGUgYGByZWFkbGluZWBgIG1vZHVsZSBpc1xuYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsXG5hbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSBgYHByaW50YGAgY29tbWFuZC5cblxuYGBwZGIucHlgYCBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyIHNjcmlwdHMuXG5Gb3IgZXhhbXBsZTpcblxuICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcblxuV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyIHBvc3QtbW9ydGVtXG5kZWJ1Z2dpbmcgaWYgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgZXhpdHMgYWJub3JtYWxseS4gIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiAgQXV0b21hdGljIHJlc3RhcnRpbmcgcHJlc2VydmVzIHBkYlwncyBzdGF0ZSAoc3VjaFxuYXMgYnJlYWtwb2ludHMpIGFuZCBpbiBtb3N0IGNhc2VzIGlzIG1vcmUgdXNlZnVsIHRoYW4gcXVpdHRpbmcgdGhlXG5kZWJ1Z2dlciB1cG9uIHByb2dyYW1cJ3MgZXhpdC5cblxuTmV3IGluIHZlcnNpb24gMy4yOiBgYHBkYi5weWBgIG5vdyBhY2NlcHRzIGEgYGAtY2BgIG9wdGlvbiB0aGF0XG5leGVjdXRlcyBjb21tYW5kcyBhcyBpZiBnaXZlbiBpbiBhIGBgLnBkYnJjYGAgZmlsZSwgc2VlICpEZWJ1Z2dlclxuQ29tbWFuZHMqLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyBwcm9ncmFtIGlzXG50byBpbnNlcnRcblxuICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG5cbmF0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gdGhlblxuc3RlcCB0aHJvdWdoIHRoZSBjb2RlIGZvbGxvd2luZyB0aGlzIHN0YXRlbWVudCwgYW5kIGNvbnRpbnVlIHJ1bm5pbmdcbndpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSBgYGNvbnRpbnVlYGAgY29tbWFuZC5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcblxuICAgPj4+IGltcG9ydCBwZGJcbiAgID4+PiBpbXBvcnQgbXltb2R1bGVcbiAgID4+PiBteW1vZHVsZS50ZXN0KClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4gICAgICAgdGVzdDIoKVxuICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSAzLCBpbiB0ZXN0MlxuICAgICAgIHByaW50KHNwYW0pXG4gICBOYW1lRXJyb3I6IHNwYW1cbiAgID4+PiBwZGIucG0oKVxuICAgPiAuL215bW9kdWxlLnB5KDMpdGVzdDIoKVxuICAgLT4gcHJpbnQoc3BhbSlcbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50LCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgdW5kZXJcbiAgIGRlYnVnZ2VyIGNvbnRyb2wuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzXG4gICBleGVjdXRlZDsgeW91IGNhbiBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgYGBjb250aW51ZWBgLCBvciB5b3UgY2FuXG4gICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyBgYHN0ZXBgYCBvciBgYG5leHRgYCAoYWxsIHRoZXNlXG4gICBjb21tYW5kcyBhcmUgZXhwbGFpbmVkIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqXG4gICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5XG4gICBkZWZhdWx0IHRoZSBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgYGBfX21haW5fX2BgIGlzIHVzZWQuICAoU2VlXG4gICB0aGUgZXhwbGFuYXRpb24gb2YgdGhlIGJ1aWx0LWluIGBgZXhlYygpYGAgb3IgYGBldmFsKClgYFxuICAgZnVuY3Rpb25zLilcblxucGRiLnJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdClcbiAgIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuICBXaGVuIGBgcnVuZXZhbCgpYGAgcmV0dXJucywgaXQgcmV0dXJucyB0aGVcbiAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0b1xuICAgYGBydW4oKWBgLlxuXG5wZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcblxuICAgQ2FsbCB0aGUgKmZ1bmN0aW9uKiAoYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LCBub3QgYSBzdHJpbmcpXG4gICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuIGBgcnVuY2FsbCgpYGAgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG5UaGUgYGBydW4qYGAgZnVuY3Rpb25zIGFuZCBgYHNldF90cmFjZSgpYGAgYXJlIGFsaWFzZXMgZm9yXG5pbnN0YW50aWF0aW5nIHRoZSBgYFBkYmBgIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWVcbm5hbWUuICBJZiB5b3Ugd2FudCB0byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpc1xueW91cnNlbGY6XG5cbmNsYXNzIGNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UpXG5cbiAgIGBgUGRiYGAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nIGBgY21kLkNtZGBgIGNsYXNzOyBzZWUgdGhlIGRlc2NyaXB0aW9uIHRoZXJlLlxuXG4gICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBnbG9iLXN0eWxlXG4gICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzIHRoYXRcbiAgIG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLiBbMV1cblxuICAgQnkgZGVmYXVsdCwgUGRiIHNldHMgYSBoYW5kbGVyIGZvciB0aGUgU0lHSU5UIHNpZ25hbCAod2hpY2ggaXMgc2VudFxuICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzIEN0cmwtQyBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSBhXG4gICBgYGNvbnRpbnVlYGAgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyBDdHJsLUMuICBJZiB5b3Ugd2FudCBQZGIgbm90IHRvIHRvdWNoIHRoZSBTSUdJTlRcbiAgIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvdCB0cnVlLlxuXG4gICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG5cbiAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bXCdkamFuZ28uKlwnXSkuc2V0X3RyYWNlKClcblxuICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAqbm9zaWdpbnQqIGFyZ3VtZW50LiAgUHJldmlvdXNseSwgYSBTSUdJTlRcbiAgIGhhbmRsZXIgd2FzIG5ldmVyIHNldCBieSBQZGIuXG5cbiAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4gICBydW5jYWxsKGZ1bmN0aW9uLCAqYXJncywgKiprd2RzKVxuICAgc2V0X3RyYWNlKClcblxuICAgICAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgZnVuY3Rpb25zIGV4cGxhaW5lZCBhYm92ZS5cblxuXG5EZWJ1Z2dlciBDb21tYW5kc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIGNvbW1hbmRzIHJlY29nbml6ZWQgYnkgdGhlIGRlYnVnZ2VyIGFyZSBsaXN0ZWQgYmVsb3cuICBNb3N0XG5jb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgZS5nLlxuYGBoKGVscClgYCBtZWFucyB0aGF0IGVpdGhlciBgYGhgYCBvciBgYGhlbHBgYCBjYW4gYmUgdXNlZCB0byBlbnRlclxudGhlIGhlbHAgY29tbWFuZCAoYnV0IG5vdCBgYGhlYGAgb3IgYGBoZWxgYCwgbm9yIGBgSGBgIG9yIGBgSGVscGBgIG9yXG5gYEhFTFBgYCkuICBBcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZVxuKHNwYWNlcyBvciB0YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzXG4oYGBbXWBgKSBpbiB0aGUgY29tbWFuZCBzeW50YXg7IHRoZSBzcXVhcmUgYnJhY2tldHMgbXVzdCBub3QgYmUgdHlwZWQuXG5BbHRlcm5hdGl2ZXMgaW4gdGhlIGNvbW1hbmQgc3ludGF4IGFyZSBzZXBhcmF0ZWQgYnkgYSB2ZXJ0aWNhbCBiYXJcbihgYHxgYCkuXG5cbkVudGVyaW5nIGEgYmxhbmsgbGluZSByZXBlYXRzIHRoZSBsYXN0IGNvbW1hbmQgZW50ZXJlZC4gIEV4Y2VwdGlvbjogaWZcbnRoZSBsYXN0IGNvbW1hbmQgd2FzIGEgYGBsaXN0YGAgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlIGxpc3RlZC5cblxuQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc25cJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvblxuc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gZXhjbGFtYXRpb25cbnBvaW50IChgYCFgYCkuICBUaGlzIGlzIGEgcG93ZXJmdWwgd2F5IHRvIGluc3BlY3QgdGhlIHByb2dyYW0gYmVpbmdcbmRlYnVnZ2VkOyBpdCBpcyBldmVuIHBvc3NpYmxlIHRvIGNoYW5nZSBhIHZhcmlhYmxlIG9yIGNhbGwgYSBmdW5jdGlvbi5cbldoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgaXNcbnByaW50ZWQgYnV0IHRoZSBkZWJ1Z2dlclwncyBzdGF0ZSBpcyBub3QgY2hhbmdlZC5cblxuVGhlIGRlYnVnZ2VyIHN1cHBvcnRzICphbGlhc2VzKi4gIEFsaWFzZXMgY2FuIGhhdmUgcGFyYW1ldGVycyB3aGljaFxuYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0IHVuZGVyXG5leGFtaW5hdGlvbi5cblxuTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5XG5gYDs7YGAuICAoQSBzaW5nbGUgYGA7YGAgaXMgbm90IHVzZWQgYXMgaXQgaXMgdGhlIHNlcGFyYXRvciBmb3Jcbm11bHRpcGxlIGNvbW1hbmRzIGluIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBOb1xuaW50ZWxsaWdlbmNlIGlzIGFwcGxpZWQgdG8gc2VwYXJhdGluZyB0aGUgY29tbWFuZHM7IHRoZSBpbnB1dCBpcyBzcGxpdFxuYXQgdGhlIGZpcnN0IGBgOztgYCBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWRcbnN0cmluZy5cblxuSWYgYSBmaWxlIGBgLnBkYnJjYGAgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluIHRoZVxuY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkXG5hdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWZcbmJvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kXG5hbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IGBgLnBkYnJjYGAgY2FuIG5vdyBjb250YWluIGNvbW1hbmRzIHRoYXRcbmNvbnRpbnVlIGRlYnVnZ2luZywgc3VjaCBhcyBgYGNvbnRpbnVlYGAgb3IgYGBuZXh0YGAuICBQcmV2aW91c2x5LFxudGhlc2UgY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cblxuaChlbHApIFtjb21tYW5kXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoIGFcbiAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICBgYGhlbHAgcGRiYGBcbiAgIGRpc3BsYXlzIHRoZSBmdWxsIGRvY3VtZW50YXRpb24gKHRoZSBkb2NzdHJpbmcgb2YgdGhlIGBgcGRiYGBcbiAgIG1vZHVsZSkuICBTaW5jZSB0aGUgKmNvbW1hbmQqIGFyZ3VtZW50IG11c3QgYmUgYW4gaWRlbnRpZmllcixcbiAgIGBgaGVscCBleGVjYGAgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSBgYCFgYCBjb21tYW5kLlxuXG53KGhlcmUpXG5cbiAgIFByaW50IGEgc3RhY2sgdHJhY2UsIHdpdGggdGhlIG1vc3QgcmVjZW50IGZyYW1lIGF0IHRoZSBib3R0b20uICBBblxuICAgYXJyb3cgaW5kaWNhdGVzIHRoZSBjdXJyZW50IGZyYW1lLCB3aGljaCBkZXRlcm1pbmVzIHRoZSBjb250ZXh0IG9mXG4gICBtb3N0IGNvbW1hbmRzLlxuXG5kKG93bikgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgZG93biBpbiB0aGVcbiAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cblxudShwKSBbY291bnRdXG5cbiAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyB1cCBpbiB0aGUgc3RhY2tcbiAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG5cbmIocmVhaykgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBXaXRoIGEgKmxpbmVubyogYXJndW1lbnQsIHNldCBhIGJyZWFrIHRoZXJlIGluIHRoZSBjdXJyZW50IGZpbGUuXG4gICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0IGV4ZWN1dGFibGVcbiAgIHN0YXRlbWVudCB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUgcHJlZml4ZWRcbiAgIHdpdGggYSBmaWxlbmFtZSBhbmQgYSBjb2xvbiwgdG8gc3BlY2lmeSBhIGJyZWFrcG9pbnQgaW4gYW5vdGhlclxuICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzblwndCBiZWVuIGxvYWRlZCB5ZXQpLiAgVGhlIGZpbGUgaXNcbiAgIHNlYXJjaGVkIG9uIGBgc3lzLnBhdGhgYC4gIE5vdGUgdGhhdCBlYWNoIGJyZWFrcG9pbnQgaXMgYXNzaWduZWQgYVxuICAgbnVtYmVyIHRvIHdoaWNoIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2ludCBjb21tYW5kcyByZWZlci5cblxuICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLlxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBsaXN0IGFsbCBicmVha3MsIGluY2x1ZGluZyBmb3IgZWFjaCBicmVha3BvaW50LFxuICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgY3VycmVudFxuICAgaWdub3JlIGNvdW50LCBhbmQgdGhlIGFzc29jaWF0ZWQgY29uZGl0aW9uIGlmIGFueS5cblxudGJyZWFrIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0IGlzXG4gICBmaXJzdCBoaXQuIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciBgYGJyZWFrYGAuXG5cbmNsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgYXRcbiAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXJcbiAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgZmlyc3RcbiAgIGFzayBjb25maXJtYXRpb24pLlxuXG5kaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgY2F1c2VcbiAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgYnJlYWtwb2ludCwgaXRcbiAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG5cbmVuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuXG5pZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuXG4gICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgY291bnQgaXNcbiAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyBhY3RpdmVcbiAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4gICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlxuXG5jb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cblxuICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgKmNvbmRpdGlvbipcbiAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuXG5jb21tYW5kcyBbYnBudW1iZXJdXG5cbiAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgVGhlXG4gICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhIGxpbmVcbiAgIGNvbnRhaW5pbmcganVzdCBgYGVuZGBgIHRvIHRlcm1pbmF0ZSB0aGUgY29tbWFuZHMuIEFuIGV4YW1wbGU6XG5cbiAgICAgIChQZGIpIGNvbW1hbmRzIDFcbiAgICAgIChjb20pIHByaW50IHNvbWVfdmFyaWFibGVcbiAgICAgIChjb20pIGVuZFxuICAgICAgKFBkYilcblxuICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgZm9sbG93XG4gICBpdCBpbW1lZGlhdGVseSB3aXRoIGBgZW5kYGA7IHRoYXQgaXMsIGdpdmUgbm8gY29tbWFuZHMuXG5cbiAgIFdpdGggbm8gKmJwbnVtYmVyKiBhcmd1bWVudCwgY29tbWFuZHMgcmVmZXJzIHRvIHRoZSBsYXN0IGJyZWFrcG9pbnRcbiAgIHNldC5cblxuICAgWW91IGNhbiB1c2UgYnJlYWtwb2ludCBjb21tYW5kcyB0byBzdGFydCB5b3VyIHByb2dyYW0gdXAgYWdhaW4uXG4gICBTaW1wbHkgdXNlIHRoZSBjb250aW51ZSBjb21tYW5kLCBvciBzdGVwLCBvciBhbnkgb3RoZXIgY29tbWFuZCB0aGF0XG4gICByZXN1bWVzIGV4ZWN1dGlvbi5cblxuICAgU3BlY2lmeWluZyBhbnkgY29tbWFuZCByZXN1bWluZyBleGVjdXRpb24gKGN1cnJlbnRseSBjb250aW51ZSxcbiAgIHN0ZXAsIG5leHQsIHJldHVybiwganVtcCwgcXVpdCBhbmQgdGhlaXIgYWJicmV2aWF0aW9ucykgdGVybWluYXRlc1xuICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieVxuICAgZW5kKS4gVGhpcyBpcyBiZWNhdXNlIGFueSB0aW1lIHlvdSByZXN1bWUgZXhlY3V0aW9uIChldmVuIHdpdGggYVxuICAgc2ltcGxlIG5leHQgb3Igc3RlcCksIHlvdSBtYXkgZW5jb3VudGVyIGFub3RoZXIgYnJlYWtwb2ludC0td2hpY2hcbiAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgd2hpY2hcbiAgIGxpc3QgdG8gZXhlY3V0ZS5cblxuICAgSWYgeW91IHVzZSB0aGUgXCdzaWxlbnRcJyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSB1c3VhbFxuICAgbWVzc2FnZSBhYm91dCBzdG9wcGluZyBhdCBhIGJyZWFrcG9pbnQgaXMgbm90IHByaW50ZWQuICBUaGlzIG1heSBiZVxuICAgZGVzaXJhYmxlIGZvciBicmVha3BvaW50cyB0aGF0IGFyZSB0byBwcmludCBhIHNwZWNpZmljIG1lc3NhZ2UgYW5kXG4gICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsIHlvdVxuICAgc2VlIG5vIHNpZ24gdGhhdCB0aGUgYnJlYWtwb2ludCB3YXMgcmVhY2hlZC5cblxucyh0ZXApXG5cbiAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgb2NjYXNpb25cbiAgIChlaXRoZXIgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBvciBvbiB0aGUgbmV4dCBsaW5lIGluIHRoZVxuICAgY3VycmVudCBmdW5jdGlvbikuXG5cbm4oZXh0KVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbiBpc1xuICAgcmVhY2hlZCBvciBpdCByZXR1cm5zLiAgKFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYGBuZXh0YGAgYW5kXG4gICBgYHN0ZXBgYCBpcyB0aGF0IGBgc3RlcGBgIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGVcbiAgIGBgbmV4dGBgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seVxuICAgc3RvcHBpbmcgYXQgdGhlIG5leHQgbGluZSBpbiB0aGUgY3VycmVudCBmdW5jdGlvbi4pXG5cbnVudChpbCkgW2xpbmVub11cblxuICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBvbmUgaXMgcmVhY2hlZC5cblxuICAgV2l0aCBhIGxpbmUgbnVtYmVyLCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgYSBsaW5lIHdpdGggYSBudW1iZXJcbiAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyBzdG9wIHdoZW5cbiAgIHRoZSBjdXJyZW50IGZyYW1lIHJldHVybnMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEFsbG93IGdpdmluZyBhbiBleHBsaWNpdCBsaW5lIG51bWJlci5cblxucihldHVybilcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG5cbmMob250KGludWUpKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24sIG9ubHkgc3RvcCB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmNvdW50ZXJlZC5cblxuaih1bXApIGxpbmVub1xuXG4gICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiB0aGVcbiAgIGJvdHRvbS1tb3N0IGZyYW1lLiAgVGhpcyBsZXRzIHlvdSBqdW1wIGJhY2sgYW5kIGV4ZWN1dGUgY29kZSBhZ2FpbixcbiAgIG9yIGp1bXAgZm9yd2FyZCB0byBza2lwIGNvZGUgdGhhdCB5b3UgZG9uXCd0IHdhbnQgdG8gcnVuLlxuXG4gICBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCBub3QgYWxsIGp1bXBzIGFyZSBhbGxvd2VkIC0tIGZvciBpbnN0YW5jZVxuICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgYGBmb3JgYCBsb29wIG9yIG91dFxuICAgb2YgYSBgYGZpbmFsbHlgYCBjbGF1c2UuXG5cbmwoaXN0KSBbZmlyc3RbLCBsYXN0XV1cblxuICAgTGlzdCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZmlsZS4gIFdpdGhvdXQgYXJndW1lbnRzLCBsaXN0IDExXG4gICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgbGlzdGluZy5cbiAgIFdpdGggYGAuYGAgYXMgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUuXG4gICBXaXRoIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbiAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbGVzc1xuICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG5cbiAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5IGBgLT5gYC4gIElmXG4gICBhbiBleGNlcHRpb24gaXMgYmVpbmcgZGVidWdnZWQsIHRoZSBsaW5lIHdoZXJlIHRoZSBleGNlcHRpb24gd2FzXG4gICBvcmlnaW5hbGx5IHJhaXNlZCBvciBwcm9wYWdhdGVkIGlzIGluZGljYXRlZCBieSBgYD4+YGAsIGlmIGl0XG4gICBkaWZmZXJzIGZyb20gdGhlIGN1cnJlbnQgbGluZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgYGA+PmBgIG1hcmtlci5cblxubGwgfCBsb25nbGlzdFxuXG4gICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4gICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciBgYGxpc3RgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5hKHJncylcblxuICAgUHJpbnQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24uXG5cbnAocmludCkgZXhwcmVzc2lvblxuXG4gICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIGluIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIHByaW50IGl0c1xuICAgdmFsdWUuXG5cbnBwIGV4cHJlc3Npb25cblxuICAgTGlrZSB0aGUgYGBwcmludGBgIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXNcbiAgIHByZXR0eS1wcmludGVkIHVzaW5nIHRoZSBgYHBwcmludGBgIG1vZHVsZS5cblxud2hhdGlzIGV4cHJlc3Npb25cblxuICAgUHJpbnQgdGhlIHR5cGUgb2YgdGhlICpleHByZXNzaW9uKi5cblxuc291cmNlIGV4cHJlc3Npb25cblxuICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbiAgIGV4ZWN1dGlvbiBzdG9wcyBpbiB0aGUgY3VycmVudCBmcmFtZS5cblxuICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgY3VycmVudFxuICAgZnJhbWUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxudW5kaXNwbGF5IFtleHByZXNzaW9uXVxuXG4gICBEbyBub3QgZGlzcGxheSB0aGUgZXhwcmVzc2lvbiBhbnkgbW9yZSBpbiB0aGUgY3VycmVudCBmcmFtZS5cbiAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG5pbnRlcmFjdFxuXG4gICBTdGFydCBhbiBpbnRlcmF0aXZlIGludGVycHJldGVyICh1c2luZyB0aGUgYGBjb2RlYGAgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgYGAlMWBgLCBgYCUyYGAsIGFuZCBzbyBvbiwgd2hpbGUgYGAlKmBgIGlzIHJlcGxhY2VkIGJ5XG4gICBhbGwgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgYGAucGRicmNgYCBmaWxlKTpcblxuICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKVxuICAgICAgYWxpYXMgcGkgZm9yIGsgaW4gJTEuX19kaWN0X18ua2V5cygpOiBwcmludCgiJTEuIixrLCI9IiwlMS5fX2RpY3RfX1trXSlcbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzIGluIHNlbGZcbiAgICAgIGFsaWFzIHBzIHBpIHNlbGZcblxudW5hbGlhcyBuYW1lXG5cbiAgIERlbGV0ZSB0aGUgc3BlY2lmaWVkIGFsaWFzLlxuXG4hIHN0YXRlbWVudFxuXG4gICBFeGVjdXRlIHRoZSAob25lLWxpbmUpICpzdGF0ZW1lbnQqIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50XG4gICBzdGFjayBmcmFtZS4gVGhlIGV4Y2xhbWF0aW9uIHBvaW50IGNhbiBiZSBvbWl0dGVkIHVubGVzcyB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIHN0YXRlbWVudCByZXNlbWJsZXMgYSBkZWJ1Z2dlciBjb21tYW5kLiAgVG8gc2V0IGFcbiAgIGdsb2JhbCB2YXJpYWJsZSwgeW91IGNhbiBwcmVmaXggdGhlIGFzc2lnbm1lbnQgY29tbWFuZCB3aXRoIGFcbiAgIGBgZ2xvYmFsYGAgc3RhdGVtZW50IG9uIHRoZSBzYW1lIGxpbmUsIGUuZy46XG5cbiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFtcJy1sXCddXG4gICAgICAoUGRiKVxuXG5ydW4gW2FyZ3MgLi4uXVxucmVzdGFydCBbYXJncyAuLi5dXG5cbiAgIFJlc3RhcnQgdGhlIGRlYnVnZ2VkIFB5dGhvbiBwcm9ncmFtLiAgSWYgYW4gYXJndW1lbnQgaXMgc3VwcGxpZWQsXG4gICBpdCBpcyBzcGxpdCB3aXRoIGBgc2hsZXhgYCBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgIGBgc3lzLmFyZ3ZgYC4gSGlzdG9yeSwgYnJlYWtwb2ludHMsIGFjdGlvbnMgYW5kIGRlYnVnZ2VyIG9wdGlvbnNcbiAgIGFyZSBwcmVzZXJ2ZWQuIGBgcmVzdGFydGBgIGlzIGFuIGFsaWFzIGZvciBgYHJ1bmBgLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGUgaXNcbiAgICBkZXRlcm1pbmVkIGJ5IHRoZSBgYF9fbmFtZV9fYGAgaW4gdGhlIGZyYW1lIGdsb2JhbHMuXG4nLAorICdkZWwnOiAnXG5UaGUgYGBkZWxgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcblxuRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50IGlzXG5kZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG5oaW50cy5cblxuRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbnRvIHJpZ2h0LlxuXG5EZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgZnJvbSB0aGUgbG9jYWwgb3Jcbmdsb2JhbCBuYW1lc3BhY2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBuYW1lIG9jY3VycyBpbiBhIGBgZ2xvYmFsYGBcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuYGBOYW1lRXJyb3JgYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKICAnZGljdCc6ICdcbkRpY3Rpb25hcnkgZGlzcGxheXNcbioqKioqKioqKioqKioqKioqKipcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG5lbmNsb3NlZCBpbiBjdXJseSBicmFjZXM6XG5cbiAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gIn0iXG4gICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4gICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb25cbiAgIGRpY3RfY29tcHJlaGVuc2lvbiA6Oj0gZXhwcmVzc2lvbiAiOiIgZXhwcmVzc2lvbiBjb21wX2ZvclxuXG5BIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG5cbklmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSBkaWN0aW9uYXJ5OlxuZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbmNvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxubXVsdGlwbGUgdGltZXMgaW4gdGhlIGtleS9kYXR1bSBsaXN0LCBhbmQgdGhlIGZpbmFsIGRpY3Rpb25hcnlcJ3MgdmFsdWVcbmZvciB0aGF0IGtleSB3aWxsIGJlIHRoZSBsYXN0IG9uZSBnaXZlbi5cblxuQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbm5lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSByZXN1bHRpbmdcbmtleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgb3JkZXJcbnRoZXkgYXJlIHByb2R1Y2VkLlxuXG5SZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Ki4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG5yaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAogICdkeW5hbWljLWZlYXR1cmVzJzogJ1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gYGBpbXBvcnQgKmBgIC0tLSBpcyB1c2VkIGluIGFcbmZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYSBuZXN0ZWQgYmxvY2sgd2l0aCBmcmVlXG52YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGEgYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgYGBldmFsKClgYCBhbmQgYGBleGVjKClgYCBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsXG5lbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbFxuYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkXG5pbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICBbMV1cblRoZSBgYGV4ZWMoKWBgIGFuZCBgYGV2YWwoKWBgIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAogICdlbHNlJzogJ1xuVGhlIGBgaWZgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYGlmYGAgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgYGBpZmBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSBgYGVsc2VgYCBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCkBAIC0zMywxNCArMzQsMTQgQEAKICAnZXhwcmxpc3RzJzogJ1xuRXhwcmVzc2lvbiBsaXN0c1xuKioqKioqKioqKioqKioqKlxuXG4gICBleHByZXNzaW9uX2xpc3QgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuXG5BbiBleHByZXNzaW9uIGxpc3QgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGVcbmxlbmd0aCBvZiB0aGUgdHVwbGUgaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZVxuZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cblRoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAoYS5rLmEuIGFcbipzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgZXhwcmVzc2lvblxud2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuXCd0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyIHlpZWxkcyB0aGVcbnZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuIGVtcHR5IHBhaXJcbm9mIHBhcmVudGhlc2VzOiBgYCgpYGAuKVxuJywKICAnZmxvYXRpbmcnOiAnXG5GbG9hdGluZyBwb2ludCBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWxcbmRlZmluaXRpb25zOlxuXG4gICBmbG9hdG51bWJlciAgIDo6PSBwb2ludGZsb2F0IHwgZXhwb25lbnRmbG9hdFxuICAgcG9pbnRmbG9hdCAgICA6Oj0gW2ludHBhcnRdIGZyYWN0aW9uIHwgaW50cGFydCAiLiJcbiAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbiAgIGludHBhcnQgICAgICAgOjo9IGRpZ2l0K1xuICAgZnJhY3Rpb24gICAgICA6Oj0gIi4iIGRpZ2l0K1xuICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG5cbk5vdGUgdGhhdCB0aGUgaW50ZWdlciBhbmQgZXhwb25lbnQgcGFydHMgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCB1c2luZ1xucmFkaXggMTAuIEZvciBleGFtcGxlLCBgYDA3N2UwMTBgYCBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWVcbm51bWJlciBhcyBgYDc3ZTEwYGAuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG5pbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuIFNvbWUgZXhhbXBsZXMgb2YgZmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHM6XG5cbiAgIDMuMTQgICAgMTAuICAgIC4wMDEgICAgMWUxMDAgICAgMy4xNGUtMTAgICAgMGUwXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSBgYC0xYGBcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIGBgLWBgIGFuZCB0aGVcbmxpdGVyYWwgYGAxYGAuXG4nLAogICdmb3InOiAnXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBmb3JgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGFcbnNlcXVlbmNlIChzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuYGBleHByZXNzaW9uX2xpc3RgYC4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzIChzZWUgKkFzc2lnbm1lbnQgc3RhdGVtZW50cyopLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbmV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhIGBgU3RvcEl0ZXJhdGlvbmBgXG5leGNlcHRpb24pLCB0aGUgc3VpdGUgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSBgYGJyZWFrYGAgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgYGBlbHNlYGAgY2xhdXNlXCdzIHN1aXRlLiAgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZFxuY29udGludWVzIHdpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgYGBlbHNlYGAgY2xhdXNlIGlmIHRoZXJlIHdhc1xubm8gbmV4dCBpdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuTmFtZXMgaW4gdGhlIHRhcmdldCBsaXN0IGFyZSBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLFxuYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbFxuYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGByYW5nZSgpYGAgcmV0dXJucyBhblxuaXRlcmF0b3Igb2YgaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyBgYGZvclxuaSA6PSBhIHRvIGIgZG9gYDsgZS5nLiwgYGBsaXN0KHJhbmdlKDMpKWBgIHJldHVybnMgdGhlIGxpc3QgYGBbMCwgMSxcbjJdYGAuXG5cbk5vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlIGxvb3BcbiAgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKLSAnZm9ybWF0c3RyaW5ncyc6ICdcbkZvcm1hdCBTdHJpbmcgU3ludGF4XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBzdHIuZm9ybWF0KClgYCBtZXRob2QgYW5kIHRoZSBgYEZvcm1hdHRlcmBgIGNsYXNzIHNoYXJlIHRoZSBzYW1lXG5zeW50YXggZm9yIGZvcm1hdCBzdHJpbmdzIChhbHRob3VnaCBpbiB0aGUgY2FzZSBvZiBgYEZvcm1hdHRlcmBgLFxuc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuXG5cbkZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXNcbmBge31gYC4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuYGB7e2BgIGFuZCBgYH19YGAuXG5cblRoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG5cbiAgICAgIHJlcGxhY2VtZW50X2ZpZWxkIDo6PSAieyIgW2ZpZWxkX25hbWVdIFsiISIgY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4gICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICJbIiBlbGVtZW50X2luZGV4ICJdIikqXG4gICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgIGVsZW1lbnRfaW5kZXggICAgIDo6PSBpbnRlZ2VyIHwgaW5kZXhfc3RyaW5nXG4gICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXSI+ICtcbiAgICAgIGNvbnZlcnNpb24gICAgICAgIDo6PSAiciIgfCAicyIgfCAiYSJcbiAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0IHNlY3Rpb24+XG5cbkluIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggYVxuKmZpZWxkX25hbWUqIHRoYXQgc3BlY2lmaWVzIHRoZSBvYmplY3Qgd2hvc2UgdmFsdWUgaXMgdG8gYmUgZm9ybWF0dGVkXG5hbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50IGZpZWxkLiBUaGVcbipmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiBmaWVsZCwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGFuIGV4Y2xhbWF0aW9uIHBvaW50IGBgXCchXCdgYCwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2hcbmlzIHByZWNlZGVkIGJ5IGEgY29sb24gYGBcJzpcJ2BgLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0IGZvcm1hdFxuZm9yIHRoZSByZXBsYWNlbWVudCB2YWx1ZS5cblxuU2VlIGFsc28gdGhlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBzZWN0aW9uLlxuXG5UaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgZWl0aGVyIGFcbm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdFwncyBhIG51bWJlciwgaXQgcmVmZXJzIHRvIGEgcG9zaXRpb25hbFxuYXJndW1lbnQsIGFuZCBpZiBpdFwncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkIGtleXdvcmRcbmFyZ3VtZW50LiAgSWYgdGhlIG51bWVyaWNhbCBhcmdfbmFtZXMgaW4gYSBmb3JtYXQgc3RyaW5nIGFyZSAwLCAxLCAyLFxuLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgYW5kIHRoZVxubnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgb3JkZXIuXG5CZWNhdXNlICphcmdfbmFtZSogaXMgbm90IHF1b3RlLWRlbGltaXRlZCwgaXQgaXMgbm90IHBvc3NpYmxlIHRvXG5zcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzIGBgXCcxMFwnYGAgb3JcbmBgXCc6LV1cJ2BgKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnlcbmFueSBudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZVxuZm9ybSBgYFwnLm5hbWVcJ2BgIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyBgYGdldGF0dHIoKWBgLFxud2hpbGUgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSBgYFwnW2luZGV4XVwnYGAgZG9lcyBhbiBpbmRleCBsb29rdXBcbnVzaW5nIGBgX19nZXRpdGVtX18oKWBgLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzIGNhbiBiZVxub21pdHRlZCwgc28gYGBcJ3t9IHt9XCdgYCBpcyBlcXVpdmFsZW50IHRvIGBgXCd7MH0gezF9XCdgYC5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgIyBSZWZlcmVuY2VzIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkIGFyZ3VtZW50IFwnbmFtZVwnXG4gICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlXG5gYF9fZm9ybWF0X18oKWBgIG1ldGhvZCBvZiB0aGUgdmFsdWUgaXRzZWxmLiAgSG93ZXZlciwgaW4gc29tZSBjYXNlc1xuaXQgaXMgZGVzaXJhYmxlIHRvIGZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsXG5vdmVycmlkaW5nIGl0cyBvd24gZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWVcbnRvIGEgc3RyaW5nIGJlZm9yZSBjYWxsaW5nIGBgX19mb3JtYXRfXygpYGAsIHRoZSBub3JtYWwgZm9ybWF0dGluZ1xubG9naWMgaXMgYnlwYXNzZWQuXG5cblRocmVlIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6IGBgXCchc1wnYGAgd2hpY2ggY2FsbHNcbmBgc3RyKClgYCBvbiB0aGUgdmFsdWUsIGBgXCchclwnYGAgd2hpY2ggY2FsbHMgYGByZXByKClgYCBhbmQgYGBcJyFhXCdgYFxud2hpY2ggY2FsbHMgYGBhc2NpaSgpYGAuXG5cblNvbWUgZXhhbXBsZXM6XG5cbiAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG4gICAiTW9yZSB7IWF9IiAgICAgICAgICAgICAgICAgICAgICAjIENhbGxzIGFzY2lpKCkgb24gdGhlIGFyZ3VtZW50IGZpcnN0XG5cblRoZSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNvbnRhaW5zIGEgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlIHZhbHVlXG5zaG91bGQgYmUgcHJlc2VudGVkLCBpbmNsdWRpbmcgc3VjaCBkZXRhaWxzIGFzIGZpZWxkIHdpZHRoLCBhbGlnbm1lbnQsXG5wYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuIGRlZmluZSBpdHNcbm93biAiZm9ybWF0dGluZyBtaW5pLWxhbmd1YWdlIiBvciBpbnRlcnByZXRhdGlvbiBvZiB0aGUgKmZvcm1hdF9zcGVjKi5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBzdXBwb3J0IGEgY29tbW9uIGZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSwgd2hpY2hcbmlzIGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uLlxuXG5BICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzXG53aXRoaW4gaXQuIFRoZXNlIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZHMgY2FuIGNvbnRhaW4gb25seSBhIGZpZWxkXG5uYW1lOyBjb252ZXJzaW9uIGZsYWdzIGFuZCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgYXJlIG5vdCBhbGxvd2VkLiAgVGhlXG5yZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyBhcmUgc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZVxuKmZvcm1hdF9zcGVjKiBzdHJpbmcgaXMgaW50ZXJwcmV0ZWQuIFRoaXMgYWxsb3dzIHRoZSBmb3JtYXR0aW5nIG9mIGFcbnZhbHVlIHRvIGJlIGR5bmFtaWNhbGx5IHNwZWNpZmllZC5cblxuU2VlIHRoZSAqRm9ybWF0IGV4YW1wbGVzKiBzZWN0aW9uIGZvciBzb21lIGV4YW1wbGVzLlxuXG5cbkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Vcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIkZvcm1hdCBzcGVjaWZpY2F0aW9ucyIgYXJlIHVzZWQgd2l0aGluIHJlcGxhY2VtZW50IGZpZWxkcyBjb250YWluZWRcbndpdGhpbiBhIGZvcm1hdCBzdHJpbmcgdG8gZGVmaW5lIGhvdyBpbmRpdmlkdWFsIHZhbHVlcyBhcmUgcHJlc2VudGVkXG4oc2VlICpGb3JtYXQgU3RyaW5nIFN5bnRheCopLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiBgYGZvcm1hdCgpYGAgZnVuY3Rpb24uICBFYWNoIGZvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3dcbnRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cblxuTW9zdCBidWlsdC1pbiB0eXBlcyBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBvcHRpb25zIGZvciBmb3JtYXRcbnNwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlIG9ubHlcbnN1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cblxuQSBnZW5lcmFsIGNvbnZlbnRpb24gaXMgdGhhdCBhbiBlbXB0eSBmb3JtYXQgc3RyaW5nIChgYCIiYGApIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgYGBzdHIoKWBgIG9uIHRoZSB2YWx1ZS4gQSBub24tXG5lbXB0eSBmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ31cJz5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5UaGUgKmZpbGwqIGNoYXJhY3RlciBjYW4gYmUgYW55IGNoYXJhY3RlciBvdGhlciB0aGFuIFwne1wnIG9yIFwnfVwnLiAgVGhlXG5wcmVzZW5jZSBvZiBhIGZpbGwgY2hhcmFjdGVyIGlzIHNpZ25hbGVkIGJ5IHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nXG5pdCwgd2hpY2ggbXVzdCBiZSBvbmUgb2YgdGhlIGFsaWdubWVudCBvcHRpb25zLiAgSWYgdGhlIHNlY29uZFxuY2hhcmFjdGVyIG9mICpmb3JtYXRfc3BlYyogaXMgbm90IGEgdmFsaWQgYWxpZ25tZW50IG9wdGlvbiwgdGhlbiBpdCBpc1xuYXNzdW1lZCB0aGF0IGJvdGggdGhlIGZpbGwgY2hhcmFjdGVyIGFuZCB0aGUgYWxpZ25tZW50IG9wdGlvbiBhcmVcbmFic2VudC5cblxuVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgZm9sbG93czpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnPFwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCBvYmplY3RzKS4gICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc+XCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJz1cJ2BgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyIHRoZSBzaWduIChpZiBhbnkpICAgIHxcbiAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciBwcmludGluZyBmaWVsZHMgICB8XG4gICB8ICAgICAgICAgICB8IGluIHRoZSBmb3JtIFwnKzAwMDAwMDEyMFwnLiBUaGlzIGFsaWdubWVudCBvcHRpb24gaXMgb25seSAgICB8XG4gICB8ICAgICAgICAgICB8IHZhbGlkIGZvciBudW1lcmljIHR5cGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ15cJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiB0aGUgYXZhaWxhYmxlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlIHRoYXQgdW5sZXNzIGEgbWluaW11bSBmaWVsZCB3aWR0aCBpcyBkZWZpbmVkLCB0aGUgZmllbGQgd2lkdGhcbndpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gdGhhdCB0aGVcbmFsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuXG5UaGUgKnNpZ24qIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBudW1iZXIgdHlwZXMsIGFuZCBjYW4gYmUgb25lIG9mXG50aGUgZm9sbG93aW5nOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCcrXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciBib3RoIHBvc2l0aXZlIGFzICB8XG4gICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJy1cJ2BgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgb25seSBmb3IgbmVnYXRpdmUgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlIHVzZWQgb24gcG9zaXRpdmUgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYGBcJyNcJ2BgIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlIGBgXCcwYlwnYGAsIGBgXCcwb1wnYGAsIG9yXG5gYFwnMHhcJ2BgIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciBgYFwnZ1wnYGAgYW5kIGBgXCdHXCdgYFxuY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuXG5cblRoZSBgYFwnLFwnYGAgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kc1xuc2VwYXJhdG9yLiBGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlIGBgXCduXCdgYCBpbnRlZ2VyXG5wcmVzZW50YXRpb24gdHlwZSBpbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBBZGRlZCB0aGUgYGBcJyxcJ2BgIG9wdGlvbiAoc2VlIGFsc28gKipQRVBcbjM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cbklmIHRoZSAqd2lkdGgqIGZpZWxkIGlzIHByZWNlZGVkIGJ5IGEgemVybyAoYGBcJzBcJ2BgKSBjaGFyYWN0ZXIsIHRoaXNcbmVuYWJsZXMgemVyby1wYWRkaW5nLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGFuICphbGlnbm1lbnQqIHR5cGUgb2ZcbmBgXCc9XCdgYCBhbmQgYSAqZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYC5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoIGBgXCdmXCdgYCBhbmQgYGBcJ0ZcJ2BgLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsXG5wb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCBgYFwnZ1wnYGAgb3IgYGBcJ0dcJ2BgLlxuRm9yIG5vbi1udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW5cbm90aGVyIHdvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LlxuVGhlICpwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdzXCdgYCAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ3NcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdiXCdgYCAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnY1wnYGAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdkXCdgYCAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnb1wnYGAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ3hcJ2BgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnWFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdkXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdFxuYGBcJ25cJ2BgIGFuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgYGBmbG9hdCgpYGAgaXMgdXNlZCB0byBjb252ZXJ0IHRoZVxuaW50ZWdlciB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cblxuVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCBkZWNpbWFsIHZhbHVlc1xuYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8IGBgXCdlXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgXCdlXCcgdG8gaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRVwnYGAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgXCdlXCdgYCBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgXCdFXCcgYXMgdGhlIHNlcGFyYXRvciBjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnZlwnYGAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgbnVtYmVyLiAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0ZcJ2BgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyBgYFwnZlwnYGAsIGJ1dCBjb252ZXJ0cyBgYG5hbmBgIHRvICAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYE5BTmBgIGFuZCBgYGluZmBgIHRvIGBgSU5GYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdnXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuICBGb3IgYSBnaXZlbiBwcmVjaXNpb24gYGBwID49IDFgYCwgdGhpcyAgICB8XG4gICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvIGBgcGBgIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXRzIHRoZSByZXN1bHQgaW4gZWl0aGVyIGZpeGVkLXBvaW50IGZvcm1hdCBvciBpbiAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgc2NpZW50aWZpYyBub3RhdGlvbiwgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICBUaGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCB0aGUgcmVzdWx0ICAgICAgfFxuICAgfCAgICAgICAgICAgfCBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSBgYFwnZVwnYGAgYW5kIHByZWNpc2lvbiAgICAgfFxuICAgfCAgICAgICAgICAgfCBgYHAtMWBgIHdvdWxkIGhhdmUgZXhwb25lbnQgYGBleHBgYC4gIFRoZW4gaWYgYGAtNCA8PSBleHAgIHxcbiAgIHwgICAgICAgICAgIHwgPCBwYGAsIHRoZSBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgXCdmXCdgYCBhbmQgcHJlY2lzaW9uIGBgcC0xLWV4cGBgLiBPdGhlcndpc2UsIHRoZSBudW1iZXIgICB8XG4gICB8ICAgICAgICAgICB8IGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAuIEluIGJvdGggY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgICAgfFxuICAgfCAgICAgICAgICAgfCByZW1vdmVkIGZyb20gdGhlIHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYWxzbyByZW1vdmVkIGlmIHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAgICB8XG4gICB8ICAgICAgICAgICB8IGl0LiAgUG9zaXRpdmUgYW5kIG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgfFxuICAgfCAgICAgICAgICAgfCB6ZXJvLCBhbmQgbmFucywgYXJlIGZvcm1hdHRlZCBhcyBgYGluZmBgLCBgYC1pbmZgYCwgYGAwYGAsIHxcbiAgIHwgICAgICAgICAgIHwgYGAtMGBgIGFuZCBgYG5hbmBgIHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIGBgMGBgIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCAgfFxuICAgfCAgICAgICAgICAgfCB0byBhIHByZWNpc2lvbiBvZiBgYDFgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdHXCdgYCAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgYGBcJ2dcJ2BgIGV4Y2VwdCBzd2l0Y2hlcyB0byBgYFwnRVwnYGAgfFxuICAgfCAgICAgICAgICAgfCBpZiB0aGUgbnVtYmVyIGdldHMgdG9vIGxhcmdlLiBUaGUgcmVwcmVzZW50YXRpb25zIG9mICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgaW5maW5pdHkgYW5kIE5hTiBhcmUgdXBwZXJjYXNlZCwgdG9vLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnblwnYGAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyBgYFwnZ1wnYGAsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgYXBwcm9wcmlhdGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgc2VwYXJhdG9yIGNoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCclXCdgYCAgIHwgUGVyY2VudGFnZS4gTXVsdGlwbGllcyB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZGlzcGxheXMgaW4gICB8XG4gICB8ICAgICAgICAgICB8IGZpeGVkIChgYFwnZlwnYGApIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBTaW1pbGFyIHRvIGBgXCdnXCdgYCwgZXhjZXB0IHdpdGggYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgZGVjaW1hbCBwb2ludCBhbmQgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gVGhpcyBpcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW50ZW5kZWQgdG8gbWF0Y2ggYGBzdHIoKWBgLCBleGNlcHQgeW91IGNhbiBhZGQgdGhlIG90aGVyICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdCBtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuXG5Gb3JtYXQgZXhhbXBsZXNcbj09PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gY29udGFpbnMgZXhhbXBsZXMgb2YgdGhlIG5ldyBmb3JtYXQgc3ludGF4IGFuZCBjb21wYXJpc29uXG53aXRoIHRoZSBvbGQgYGAlYGAtZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGRcbmBgJWBgLWZvcm1hdHRpbmcsIHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBgYHt9YGAgYW5kIHdpdGggYGA6YGAgdXNlZFxuaW5zdGVhZCBvZiBgYCVgYC4gRm9yIGV4YW1wbGUsIGBgXCclMDMuMmZcJ2BgIGNhbiBiZSB0cmFuc2xhdGVkIHRvXG5gYFwnezowMy4yZn1cJ2BgLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMy4xKyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludDpcbiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4gICAuLi4gICAgIGRlZiBfX3N0cl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnUG9pbnQoe3NlbGYueH0sIHtzZWxmLnl9KVwnLmZvcm1hdChzZWxmPXNlbGYpXG4gICAuLi5cbiAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4gICBcJ1BvaW50KDQsIDIpXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGl0ZW1zOlxuXG4gICA+Pj4gY29vcmQgPSAoMywgNSlcbiAgID4+PiBcJ1g6IHswWzBdfTsgIFk6IHswWzFdfVwnLmZvcm1hdChjb29yZClcbiAgIFwnWDogMzsgIFk6IDVcJ1xuXG5SZXBsYWNpbmcgYGAlc2BgIGFuZCBgYCVyYGA6XG5cbiAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6IHshc30iLmZvcm1hdChcJ3Rlc3QxXCcsIFwndGVzdDJcJylcbiAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcblxuQWxpZ25pbmcgdGhlIHRleHQgYW5kIHNwZWNpZnlpbmcgYSB3aWR0aDpcblxuICAgPj4+IFwnezo8MzB9XCcuZm9ybWF0KFwnbGVmdCBhbGlnbmVkXCcpXG4gICBcJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7Oj4zMH1cJy5mb3JtYXQoXCdyaWdodCBhbGlnbmVkXCcpXG4gICBcJyAgICAgICAgICAgICAgICAgcmlnaHQgYWxpZ25lZFwnXG4gICA+Pj4gXCd7Ol4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKVxuICAgXCcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICBcJ1xuICAgPj4+IFwnezoqXjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpICAjIHVzZSBcJypcJyBhcyBhIGZpbGwgY2hhclxuICAgXCcqKioqKioqKioqKmNlbnRlcmVkKioqKioqKioqKipcJ1xuXG5SZXBsYWNpbmcgYGAlK2ZgYCwgYGAlLWZgYCwgYW5kIGBgJSBmYGAgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuXG4gICA+Pj4gXCd7OitmfTsgezorZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgYWx3YXlzXG4gICBcJyszLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6IGZ9OyB7OiBmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBhIHNwYWNlIGZvciBwb3NpdGl2ZSBudW1iZXJzXG4gICBcJyAzLjE0MDAwMDsgLTMuMTQwMDAwXCdcbiAgID4+PiBcJ3s6LWZ9OyB7Oi1mfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSBtaW51cyAtLSBzYW1lIGFzIFwnezpmfTsgezpmfVwnXG4gICBcJzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuXG5SZXBsYWNpbmcgYGAleGBgIGFuZCBgYCVvYGAgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudFxuYmFzZXM6XG5cbiAgID4+PiAjIGZvcm1hdCBhbHNvIHN1cHBvcnRzIGJpbmFyeSBudW1iZXJzXG4gICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogezA6Yn0iLmZvcm1hdCg0MilcbiAgIFwnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTBcJ1xuICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6I3h9OyAgb2N0OiB7MDojb307ICBiaW46IHswOiNifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMFwnXG5cblVzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG5cbiAgID4+PiBcJ3s6LH1cJy5mb3JtYXQoMTIzNDU2Nzg5MClcbiAgIFwnMSwyMzQsNTY3LDg5MFwnXG5cbkV4cHJlc3NpbmcgYSBwZXJjZW50YWdlOlxuXG4gICA+Pj4gcG9pbnRzID0gMTlcbiAgID4+PiB0b3RhbCA9IDIyXG4gICA+Pj4gXCdDb3JyZWN0IGFuc3dlcnM6IHs6LjIlfVwnLmZvcm1hdChwb2ludHMvdG90YWwpXG4gICBcJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlXCdcblxuVXNpbmcgdHlwZS1zcGVjaWZpYyBmb3JtYXR0aW5nOlxuXG4gICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4gICA+Pj4gZCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTAsIDcsIDQsIDEyLCAxNSwgNTgpXG4gICA+Pj4gXCd7OiVZLSVtLSVkICVIOiVNOiVTfVwnLmZvcm1hdChkKVxuICAgXCcyMDEwLTA3LTA0IDEyOjE1OjU4XCdcblxuTmVzdGluZyBhcmd1bWVudHMgYW5kIG1vcmUgY29tcGxleCBleGFtcGxlczpcblxuICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoXCc8Xj5cJywgW1wnbGVmdFwnLCBcJ2NlbnRlclwnLCBcJ3JpZ2h0XCddKTpcbiAgIC4uLiAgICAgXCd7MDp7ZmlsbH17YWxpZ259MTZ9XCcuZm9ybWF0KHRleHQsIGZpbGw9YWxpZ24sIGFsaWduPWFsaWduKVxuICAgLi4uXG4gICBcJ2xlZnQ8PDw8PDw8PDw8PDxcJ1xuICAgXCdeXl5eXmNlbnRlcl5eXl5eXCdcbiAgIFwnPj4+Pj4+Pj4+Pj5yaWdodFwnXG4gICA+Pj5cbiAgID4+PiBvY3RldHMgPSBbMTkyLCAxNjgsIDAsIDFdXG4gICA+Pj4gXCd7OjAyWH17OjAyWH17OjAyWH17OjAyWH1cJy5mb3JtYXQoKm9jdGV0cylcbiAgIFwnQzBBODAwMDFcJ1xuICAgPj4+IGludChfLCAxNilcbiAgIDMyMzIyMzU1MjFcbiAgID4+PlxuICAgPj4+IHdpZHRoID0gNVxuICAgPj4+IGZvciBudW0gaW4gcmFuZ2UoNSwxMik6XG4gICAuLi4gICAgIGZvciBiYXNlIGluIFwnZFhvYlwnOlxuICAgLi4uICAgICAgICAgcHJpbnQoXCd7MDp7d2lkdGh9e2Jhc2V9fVwnLmZvcm1hdChudW0sIGJhc2U9YmFzZSwgd2lkdGg9d2lkdGgpLCBlbmQ9XCcgXCcpXG4gICAuLi4gICAgIHByaW50KClcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogJ1xuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFtwYXJhbWV0ZXJfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKlxuICAgICAgICAgICAgICAgICAgICAgIFssICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSBwYXJhbWV0ZXJzIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogYGA9YGBcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQgbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiYGAqYGAiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS1cbnRoaXMgaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25cbmlzIGV4ZWN1dGVkLioqIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlIGBgTm9uZWBgIGFzIHRoZVxuZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCBlLmcuOlxuXG4gICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4gICAgICAgaWYgcGVuZ3VpbiBpcyBOb25lOlxuICAgICAgICAgICBwZW5ndWluID0gW11cbiAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4gICAgICAgcmV0dXJuIHBlbmd1aW5cblxuRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uXG4qQ2FsbHMqLiBBIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzXG5tZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb21cbmtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm1cbiJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nXG5hbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZlxudGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gImBgOiBleHByZXNzaW9uYGAiXG5mb2xsb3dpbmcgdGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uXG5ldmVuIHRob3NlIG9mIHRoZSBmb3JtIGBgKmlkZW50aWZpZXJgYCBvciBgYCoqaWRlbnRpZmllcmBgLiAgRnVuY3Rpb25zXG5tYXkgaGF2ZSAicmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICJgYC0+IGV4cHJlc3Npb25gYCIgYWZ0ZXIgdGhlXG5wYXJhbWV0ZXIgbGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb25cbmFuZCBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuXG5Bbm5vdGF0aW9ucyBtYXkgYmUgZXZhbHVhdGVkIGluIGEgZGlmZmVyZW50IG9yZGVyIHRoYW4gdGhleSBhcHBlYXIgaW5cbnRoZSBzb3VyY2UgY29kZS4gIFRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlXG5zZW1hbnRpY3Mgb2YgYSBmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzXG52YWx1ZXMgb2YgYSBkaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlXG5gYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuXG5JdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90IGJvdW5kXG50byBhIG5hbWUpLCBmb3IgaW1tZWRpYXRlIHVzZSBpbiBleHByZXNzaW9ucy4gIFRoaXMgdXNlcyBsYW1iZGEgZm9ybXMsXG5kZXNjcmliZWQgaW4gc2VjdGlvbiAqTGFtYmRhcyouICBOb3RlIHRoYXQgdGhlIGxhbWJkYSBmb3JtIGlzIG1lcmVseSBhXG5zaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uOyBhIGZ1bmN0aW9uIGRlZmluZWQgaW5cbmEgImBgZGVmYGAiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvciBhc3NpZ25lZCB0byBhbm90aGVyIG5hbWVcbmp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGEgZm9ybS4gIFRoZSAiYGBkZWZgYCIgZm9ybSBpc1xuYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdCBhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZVxuc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgImBgZGVmYGAiXG5mb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsIGZ1bmN0aW9uXG50aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGVcbm5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cbicsCisgJ2Zvcm1hdHN0cmluZ3MnOiAnXG5Gb3JtYXQgU3RyaW5nIFN5bnRheFxuKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgc3RyLmZvcm1hdCgpYGAgbWV0aG9kIGFuZCB0aGUgYGBGb3JtYXR0ZXJgYCBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgYGBGb3JtYXR0ZXJgYCxcbnN1YmNsYXNzZXMgY2FuIGRlZmluZSB0aGVpciBvd24gZm9ybWF0IHN0cmluZyBzeW50YXgpLlxuXG5Gb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgY3VybHkgYnJhY2VzXG5gYHt9YGAuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgY29uc2lkZXJlZCBsaXRlcmFsXG50ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCB0byBpbmNsdWRlXG5hIGJyYWNlIGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbCB0ZXh0LCBpdCBjYW4gYmUgZXNjYXBlZCBieSBkb3VibGluZzpcbmBge3tgYCBhbmQgYGB9fWBgLlxuXG5UaGUgZ3JhbW1hciBmb3IgYSByZXBsYWNlbWVudCBmaWVsZCBpcyBhcyBmb2xsb3dzOlxuXG4gICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiIGNvbnZlcnNpb25dIFsiOiIgZm9ybWF0X3NwZWNdICJ9IlxuICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAiWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuICAgICAgYXJnX25hbWUgICAgICAgICAgOjo9IFtpZGVudGlmaWVyIHwgaW50ZWdlcl1cbiAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4gICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuICAgICAgaW5kZXhfc3RyaW5nICAgICAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIl0iPiArXG4gICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiIHwgImEiXG4gICAgICBmb3JtYXRfc3BlYyAgICAgICA6Oj0gPGRlc2NyaWJlZCBpbiB0aGUgbmV4dCBzZWN0aW9uPlxuXG5JbiBsZXNzIGZvcm1hbCB0ZXJtcywgdGhlIHJlcGxhY2VtZW50IGZpZWxkIGNhbiBzdGFydCB3aXRoIGFcbipmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlIGZvcm1hdHRlZFxuYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCBmaWVsZC4gVGhlXG4qZmllbGRfbmFtZSogaXMgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhICAqY29udmVyc2lvbiogZmllbGQsIHdoaWNoIGlzXG5wcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCBgYFwnIVwnYGAsIGFuZCBhICpmb3JtYXRfc3BlYyosIHdoaWNoXG5pcyBwcmVjZWRlZCBieSBhIGNvbG9uIGBgXCc6XCdgYC4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXRcbmZvciB0aGUgcmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyBgYFwnMTBcJ2BgIG9yXG5gYFwnOi1dXCdgYCkgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5XG5hbnkgbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGVcbmZvcm0gYGBcJy5uYW1lXCdgYCBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgYGBnZXRhdHRyKClgYCxcbndoaWxlIGFuIGV4cHJlc3Npb24gb2YgdGhlIGZvcm0gYGBcJ1tpbmRleF1cJ2BgIGRvZXMgYW4gaW5kZXggbG9va3VwXG51c2luZyBgYF9fZ2V0aXRlbV9fKClgYC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvIGBgXCd7fSB7fVwnYGAgaXMgZXF1aXZhbGVudCB0byBgYFwnezB9IHsxfVwnYGAuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgcmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkZyb20ge30gdG8ge30iICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSBvZiBmaXJzdCBwb3NpdGlvbmFsIGFyZ1xuICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZVxuYGBfX2Zvcm1hdF9fKClgYCBtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXNcbml0IGlzIGRlc2lyYWJsZSB0byBmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLFxub3ZlcnJpZGluZyBpdHMgb3duIGRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlXG50byBhIHN0cmluZyBiZWZvcmUgY2FsbGluZyBgYF9fZm9ybWF0X18oKWBgLCB0aGUgbm9ybWFsIGZvcm1hdHRpbmdcbmxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiBgYFwnIXNcJ2BgIHdoaWNoIGNhbGxzXG5gYHN0cigpYGAgb24gdGhlIHZhbHVlLCBgYFwnIXJcJ2BgIHdoaWNoIGNhbGxzIGBgcmVwcigpYGAgYW5kIGBgXCchYVwnYGBcbndoaWNoIGNhbGxzIGBgYXNjaWkoKWBgLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIGNhbiBjb250YWluIG9ubHkgYSBmaWVsZFxubmFtZTsgY29udmVyc2lvbiBmbGFncyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb25zIGFyZSBub3QgYWxsb3dlZC4gIFRoZVxucmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlIHN1YnN0aXR1dGVkIGJlZm9yZSB0aGVcbipmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzIGFsbG93cyB0aGUgZm9ybWF0dGluZyBvZiBhXG52YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gYGBmb3JtYXQoKWBgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoYGAiImBgKSBwcm9kdWNlc1xudGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkIGBgc3RyKClgYCBvbiB0aGUgdmFsdWUuIEEgbm9uLVxuZW1wdHkgZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cblxuVGhlIGdlbmVyYWwgZm9ybSBvZiBhICpzdGFuZGFyZCBmb3JtYXQgc3BlY2lmaWVyKiBpczpcblxuICAgZm9ybWF0X3NwZWMgOjo9IFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdXG4gICBmaWxsICAgICAgICA6Oj0gPGEgY2hhcmFjdGVyIG90aGVyIHRoYW4gXCd7XCcgb3IgXCd9XCc+XG4gICBhbGlnbiAgICAgICA6Oj0gIjwiIHwgIj4iIHwgIj0iIHwgIl4iXG4gICBzaWduICAgICAgICA6Oj0gIisiIHwgIi0iIHwgIiAiXG4gICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuICAgcHJlY2lzaW9uICAgOjo9IGludGVnZXJcbiAgIHR5cGUgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAiRiIgfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcblxuVGhlICpmaWxsKiBjaGFyYWN0ZXIgY2FuIGJlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBcJ3tcJyBvciBcJ31cJy4gIFRoZVxucHJlc2VuY2Ugb2YgYSBmaWxsIGNoYXJhY3RlciBpcyBzaWduYWxlZCBieSB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZ1xuaXQsIHdoaWNoIG11c3QgYmUgb25lIG9mIHRoZSBhbGlnbm1lbnQgb3B0aW9ucy4gIElmIHRoZSBzZWNvbmRcbmNoYXJhY3RlciBvZiAqZm9ybWF0X3NwZWMqIGlzIG5vdCBhIHZhbGlkIGFsaWdubWVudCBvcHRpb24sIHRoZW4gaXQgaXNcbmFzc3VtZWQgdGhhdCBib3RoIHRoZSBmaWxsIGNoYXJhY3RlciBhbmQgdGhlIGFsaWdubWVudCBvcHRpb24gYXJlXG5hYnNlbnQuXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJzxcJ2BgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnPlwnYGAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCc9XCdgYCAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdeXCdgYCAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCBgYFwnK1wnYGAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCctXCdgYCAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGBgXCcjXCdgYCBvcHRpb24gY2F1c2VzIHRoZSAiYWx0ZXJuYXRlIGZvcm0iIHRvIGJlIHVzZWQgZm9yIHRoZVxuY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciBkaWZmZXJlbnRcbnR5cGVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgaW50ZWdlciwgZmxvYXQsIGNvbXBsZXggYW5kXG5EZWNpbWFsIHR5cGVzLiBGb3IgaW50ZWdlcnMsIHdoZW4gYmluYXJ5LCBvY3RhbCwgb3IgaGV4YWRlY2ltYWwgb3V0cHV0XG5pcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSBgYFwnMGJcJ2BgLCBgYFwnMG9cJ2BgLCBvclxuYGBcJzB4XCdgYCB0byB0aGUgb3V0cHV0IHZhbHVlLiBGb3IgZmxvYXRzLCBjb21wbGV4IGFuZCBEZWNpbWFsIHRoZVxuYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgb2YgdGhlIGNvbnZlcnNpb24gdG8gYWx3YXlzIGNvbnRhaW4gYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gTm9ybWFsbHksIGFcbmRlY2ltYWwtcG9pbnQgY2hhcmFjdGVyIGFwcGVhcnMgaW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjb252ZXJzaW9uc1xub25seSBpZiBhIGRpZ2l0IGZvbGxvd3MgaXQuIEluIGFkZGl0aW9uLCBmb3IgYGBcJ2dcJ2BgIGFuZCBgYFwnR1wnYGBcbmNvbnZlcnNpb25zLCB0cmFpbGluZyB6ZXJvcyBhcmUgbm90IHJlbW92ZWQgZnJvbSB0aGUgcmVzdWx0LlxuXG5UaGUgYGBcJyxcJ2BgIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSB0aG91c2FuZHNcbnNlcGFyYXRvci4gRm9yIGEgbG9jYWxlIGF3YXJlIHNlcGFyYXRvciwgdXNlIHRoZSBgYFwnblwnYGAgaW50ZWdlclxucHJlc2VudGF0aW9uIHR5cGUgaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlIGBgXCcsXCdgYCBvcHRpb24gKHNlZSBhbHNvICoqUEVQXG4zNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5QcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYSB6ZXJvIChgYFwnMFwnYGApIGNoYXJhY3RlciBlbmFibGVzXG5zaWduLWF3YXJlIHplcm8tcGFkZGluZyBmb3IgbnVtZXJpYyB0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhXG4qZmlsbCogY2hhcmFjdGVyIG9mIGBgXCcwXCdgYCB3aXRoIGFuICphbGlnbm1lbnQqIHR5cGUgb2YgYGBcJz1cJ2BgLlxuXG5UaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpZ2l0cyBzaG91bGRcbmJlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZVxuZm9ybWF0dGVkIHdpdGggYGBcJ2ZcJ2BgIGFuZCBgYFwnRlwnYGAsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWxcbnBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoIGBgXCdnXCdgYCBvciBgYFwnR1wnYGAuXG5Gb3Igbm9uLW51bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSBpblxub3RoZXIgd29yZHMsIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGZyb20gdGhlIGZpZWxkIGNvbnRlbnQuXG5UaGUgKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuXG5GaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSBwcmVzZW50ZWQuXG5cblRoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ3NcJ2BgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgZm9yIHN0cmluZ3MgYW5kICAgIHxcbiAgIHwgICAgICAgICAgIHwgbWF5IGJlIG9taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnc1wnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlIGF2YWlsYWJsZSBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2JcJ2BgICAgfCBCaW5hcnkgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAyLiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdjXCdgYCAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgY29ycmVzcG9uZGluZyAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHVuaWNvZGUgY2hhcmFjdGVyIGJlZm9yZSBwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2RcJ2BgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDEwLiAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdvXCdgYCAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSA4LiAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwneFwnYGAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyBsb3dlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdYXCdgYCAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ25cJ2BgICAgfCBOdW1iZXIuIFRoaXMgaXMgdGhlIHNhbWUgYXMgYGBcJ2RcJ2BgLCBleGNlcHQgdGhhdCBpdCB1c2VzICAgfFxuICAgfCAgICAgICAgICAgfCB0aGUgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbnVtYmVyIHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyBgYFwnZFwnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuIGJlIGZvcm1hdHRlZFxud2l0aCB0aGUgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGxpc3RlZCBiZWxvdyAoZXhjZXB0XG5gYFwnblwnYGAgYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCBgYGZsb2F0KClgYCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlXG5pbnRlZ2VyIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGJlZm9yZSBmb3JtYXR0aW5nLlxuXG5UaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kIGRlY2ltYWwgdmFsdWVzXG5hcmU6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IFR5cGUgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgYGBcJ2VcJ2BgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gUHJpbnRzIHRoZSBudW1iZXIgaW4gc2NpZW50aWZpYyAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgbm90YXRpb24gdXNpbmcgdGhlIGxldHRlciBcJ2VcJyB0byBpbmRpY2F0ZSB0aGUgZXhwb25lbnQuICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdFXCdgYCAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgYGBcJ2VcJ2BgIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCdmXCdgYCAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBgYFwnRlwnYGAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgXCdmXCdgYCwgYnV0IGNvbnZlcnRzIGBgbmFuYGAgdG8gICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgTkFOYGAgYW5kIGBgaW5mYGAgdG8gYGBJTkZgYC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ2dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiBgYHAgPj0gMWBgLCB0aGlzICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlIGBgXCdlXCdgYCBhbmQgcHJlY2lzaW9uICAgICB8XG4gICB8ICAgICAgICAgICB8IGBgcC0xYGAgd291bGQgaGF2ZSBleHBvbmVudCBgYGV4cGBgLiAgVGhlbiBpZiBgYC00IDw9IGV4cCAgfFxuICAgfCAgICAgICAgICAgfCA8IHBgYCwgdGhlIG51bWJlciBpcyBmb3JtYXR0ZWQgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgYGBcJ2ZcJ2BgIGFuZCBwcmVjaXNpb24gYGBwLTEtZXhwYGAuIE90aGVyd2lzZSwgdGhlIG51bWJlciAgIHxcbiAgIHwgICAgICAgICAgIHwgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgYGBcJ2VcJ2BgIGFuZCBwcmVjaXNpb24gIHxcbiAgIHwgICAgICAgICAgIHwgYGBwLTFgYC4gSW4gYm90aCBjYXNlcyBpbnNpZ25pZmljYW50IHRyYWlsaW5nIHplcm9zIGFyZSAgICB8XG4gICB8ICAgICAgICAgICB8IHJlbW92ZWQgZnJvbSB0aGUgc2lnbmlmaWNhbmQsIGFuZCB0aGUgZGVjaW1hbCBwb2ludCBpcyAgICAgfFxuICAgfCAgICAgICAgICAgfCBhbHNvIHJlbW92ZWQgaWYgdGhlcmUgYXJlIG5vIHJlbWFpbmluZyBkaWdpdHMgZm9sbG93aW5nICAgIHxcbiAgIHwgICAgICAgICAgIHwgaXQuICBQb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB8XG4gICB8ICAgICAgICAgICB8IHplcm8sIGFuZCBuYW5zLCBhcmUgZm9ybWF0dGVkIGFzIGBgaW5mYGAsIGBgLWluZmBgLCBgYDBgYCwgfFxuICAgfCAgICAgICAgICAgfCBgYC0wYGAgYW5kIGBgbmFuYGAgcmVzcGVjdGl2ZWx5LCByZWdhcmRsZXNzIG9mIHRoZSAgICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzaW9uLiAgQSBwcmVjaXNpb24gb2YgYGAwYGAgaXMgdHJlYXRlZCBhcyBlcXVpdmFsZW50ICB8XG4gICB8ICAgICAgICAgICB8IHRvIGEgcHJlY2lzaW9uIG9mIGBgMWBgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJ0dcJ2BgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyBgYFwnZ1wnYGAgZXhjZXB0IHN3aXRjaGVzIHRvIGBgXCdFXCdgYCB8XG4gICB8ICAgICAgICAgICB8IGlmIHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBpbmZpbml0eSBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IGBgXCduXCdgYCAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGBgXCdnXCdgYCwgZXhjZXB0IHRoYXQgaXQgdXNlcyAgIHxcbiAgIHwgICAgICAgICAgIHwgdGhlIGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlciBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgYGBcJyVcJ2BgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKGBgXCdmXCdgYCkgZm9ybWF0LCBmb2xsb3dlZCBieSBhIHBlcmNlbnQgc2lnbi4gICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gYGBcJ2dcJ2BgLCBleGNlcHQgd2l0aCBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCAgICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBkZWNpbWFsIHBvaW50IGFuZCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBUaGlzIGlzICAgfFxuICAgfCAgICAgICAgICAgfCBpbnRlbmRlZCB0byBtYXRjaCBgYHN0cigpYGAsIGV4Y2VwdCB5b3UgY2FuIGFkZCB0aGUgb3RoZXIgIHxcbiAgIHwgICAgICAgICAgIHwgZm9ybWF0IG1vZGlmaWVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgbmV3IGZvcm1hdCBzeW50YXggYW5kIGNvbXBhcmlzb25cbndpdGggdGhlIG9sZCBgYCVgYC1mb3JtYXR0aW5nLlxuXG5JbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZFxuYGAlYGAtZm9ybWF0dGluZywgd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlIGBge31gYCBhbmQgd2l0aCBgYDpgYCB1c2VkXG5pbnN0ZWFkIG9mIGBgJWBgLiBGb3IgZXhhbXBsZSwgYGBcJyUwMy4yZlwnYGAgY2FuIGJlIHRyYW5zbGF0ZWQgdG9cbmBgXCd7OjAzLjJmfVwnYGAuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+Pj4gXCd7MH0sIHsxfSwgezJ9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwne30sIHt9LCB7fVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKSAgIyAzLjErIG9ubHlcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdCgqXCdhYmNcJykgICAgICAjIHVucGFja2luZyBhcmd1bWVudCBzZXF1ZW5jZVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3swfXsxfXswfVwnLmZvcm1hdChcJ2FicmFcJywgXCdjYWRcJykgICAjIGFyZ3VtZW50c1wnIGluZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4gICBcJ2FicmFjYWRhYnJhXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuXG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQobGF0aXR1ZGU9XCczNy4yNE5cJywgbG9uZ2l0dWRlPVwnLTExNS44MVdcJylcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuICAgPj4+IGNvb3JkID0ge1wnbGF0aXR1ZGVcJzogXCczNy4yNE5cJywgXCdsb25naXR1ZGVcJzogXCctMTE1LjgxV1wnfVxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KCoqY29vcmQpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGF0dHJpYnV0ZXM6XG5cbiAgID4+PiBjID0gMy01alxuICAgPj4+IChcJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCB7MC5yZWFsfSBcJ1xuICAgLi4uICBcJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uXCcpLmZvcm1hdChjKVxuICAgXCdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC5cJ1xuICAgPj4+IGNsYXNzIFBvaW50OlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyBgYCVzYGAgYW5kIGBgJXJgYDpcblxuICAgPj4+ICJyZXByKCkgc2hvd3MgcXVvdGVzOiB7IXJ9OyBzdHIoKSBkb2VzblwndDogeyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuXG5BbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuXG4gICA+Pj4gXCd7OjwzMH1cJy5mb3JtYXQoXCdsZWZ0IGFsaWduZWRcJylcbiAgIFwnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6PjMwfVwnLmZvcm1hdChcJ3JpZ2h0IGFsaWduZWRcJylcbiAgIFwnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkXCdcbiAgID4+PiBcJ3s6XjMwfVwnLmZvcm1hdChcJ2NlbnRlcmVkXCcpXG4gICBcJyAgICAgICAgICAgY2VudGVyZWQgICAgICAgICAgIFwnXG4gICA+Pj4gXCd7OipeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJykgICMgdXNlIFwnKlwnIGFzIGEgZmlsbCBjaGFyXG4gICBcJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKlwnXG5cblJlcGxhY2luZyBgYCUrZmBgLCBgYCUtZmBgLCBhbmQgYGAlIGZgYCBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG5cbiAgID4+PiBcJ3s6K2Z9OyB7OitmfVwnLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCBhbHdheXNcbiAgIFwnKzMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezogZn07IHs6IGZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgZm9yIHBvc2l0aXZlIG51bWJlcnNcbiAgIFwnIDMuMTQwMDAwOyAtMy4xNDAwMDBcJ1xuICAgPj4+IFwnezotZn07IHs6LWZ9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IG9ubHkgdGhlIG1pbnVzIC0tIHNhbWUgYXMgXCd7OmZ9OyB7OmZ9XCdcbiAgIFwnMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG5cblJlcGxhY2luZyBgYCV4YGAgYW5kIGBgJW9gYCBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gZGlmZmVyZW50XG5iYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOVxuICAgPj4+IHRvdGFsID0gMjJcbiAgID4+PiBcJ0NvcnJlY3QgYW5zd2VyczogezouMiV9XCcuZm9ybWF0KHBvaW50cy90b3RhbClcbiAgIFwnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiVcJ1xuXG5Vc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG5cbiAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbiAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbiAgID4+PiBcJ3s6JVktJW0tJWQgJUg6JU06JVN9XCcuZm9ybWF0KGQpXG4gICBcJzIwMTAtMDctMDQgMTI6MTU6NThcJ1xuXG5OZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuXG4gICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcChcJzxePlwnLCBbXCdsZWZ0XCcsIFwnY2VudGVyXCcsIFwncmlnaHRcJ10pOlxuICAgLi4uICAgICBcJ3swOntmaWxsfXthbGlnbn0xNn1cJy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgYWxpZ249YWxpZ24pXG4gICAuLi5cbiAgIFwnbGVmdDw8PDw8PDw8PDw8PFwnXG4gICBcJ15eXl5eY2VudGVyXl5eXl5cJ1xuICAgXCc+Pj4+Pj4+Pj4+PnJpZ2h0XCdcbiAgID4+PlxuICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbiAgID4+PiBcJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfVwnLmZvcm1hdCgqb2N0ZXRzKVxuICAgXCdDMEE4MDAwMVwnXG4gICA+Pj4gaW50KF8sIDE2KVxuICAgMzIzMjIzNTUyMVxuICAgPj4+XG4gICA+Pj4gd2lkdGggPSA1XG4gICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbiAgIC4uLiAgICAgZm9yIGJhc2UgaW4gXCdkWG9iXCc6XG4gICAuLi4gICAgICAgICBwcmludChcJ3swOnt3aWR0aH17YmFzZX19XCcuZm9ybWF0KG51bSwgYmFzZT1iYXNlLCB3aWR0aD13aWR0aCksIGVuZD1cJyBcJylcbiAgIC4uLiAgICAgcHJpbnQoKVxuICAgLi4uXG4gICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuICAgICAgIDYgICAgIDYgICAgIDYgICAxMTBcbiAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4gICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuICAgICAgIDkgICAgIDkgICAgMTEgIDEwMDFcbiAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4gICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKKyAnZnVuY3Rpb24nOiAnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW3BhcmFtZXRlcl9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgICggICIqIiBbcGFyYW1ldGVyXSAoIiwiIGRlZnBhcmFtZXRlcikqXG4gICAgICAgICAgICAgICAgICAgICAgWywgIioqIiBwYXJhbWV0ZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGVcblxuICAgQGYxKGFyZylcbiAgIEBmMlxuICAgZGVmIGZ1bmMoKTogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHBhcmFtZXRlcnMgaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiBgYD1gYFxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyBhcmd1bWVudCBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICJgYCpgYCIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLVxudGhpcyBpcyBhIHN5bnRhY3RpYyByZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2UgYGBOb25lYGAgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuImBgKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmdcbmFueSBleGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmXG50aGUgZm9ybSAiYGAqKmlkZW50aWZpZXJgYCIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXdcbmRpY3Rpb25hcnkgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXdcbmVtcHR5IGRpY3Rpb25hcnkuIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvciAiYGAqaWRlbnRpZmllcmBgIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiYGA6IGV4cHJlc3Npb25gYCJcbmZvbGxvd2luZyB0aGUgcGFyYW1ldGVyIG5hbWUuICBBbnkgcGFyYW1ldGVyIG1heSBoYXZlIGFuIGFubm90YXRpb25cbmV2ZW4gdGhvc2Ugb2YgdGhlIGZvcm0gYGAqaWRlbnRpZmllcmBgIG9yIGBgKippZGVudGlmaWVyYGAuICBGdW5jdGlvbnNcbm1heSBoYXZlICJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gImBgLT4gZXhwcmVzc2lvbmBgIiBhZnRlciB0aGVcbnBhcmFtZXRlciBsaXN0LiAgVGhlc2UgYW5ub3RhdGlvbnMgY2FuIGJlIGFueSB2YWxpZCBQeXRob24gZXhwcmVzc2lvblxuYW5kIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC5cbkFubm90YXRpb25zIG1heSBiZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpblxudGhlIHNvdXJjZSBjb2RlLiAgVGhlIHByZXNlbmNlIG9mIGFubm90YXRpb25zIGRvZXMgbm90IGNoYW5nZSB0aGVcbnNlbWFudGljcyBvZiBhIGZ1bmN0aW9uLiAgVGhlIGFubm90YXRpb24gdmFsdWVzIGFyZSBhdmFpbGFibGUgYXNcbnZhbHVlcyBvZiBhIGRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnNcJyBuYW1lcyBpbiB0aGVcbmBgX19hbm5vdGF0aW9uc19fYGAgYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYSBmb3JtcyxcbmRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhIGZvcm0gaXMgbWVyZWx5IGFcbnNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247IGEgZnVuY3Rpb24gZGVmaW5lZCBpblxuYSAiYGBkZWZgYCIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yIGFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZVxuanVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYSBmb3JtLiAgVGhlICJgYGRlZmBgIiBmb3JtIGlzXG5hY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0IGFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlXG5zdGF0ZW1lbnRzIGFuZCBhbm5vdGF0aW9ucy5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiYGBkZWZgYCJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uICpOYW1pbmcgYW5kIGJpbmRpbmcqIGZvciBkZXRhaWxzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNyoqIC0gRnVuY3Rpb24gQW5ub3RhdGlvbnNcbiAgICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cbicsCiAgJ2dsb2JhbCc6ICdcblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSBgYGdsb2JhbGBgIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgZW50aXJlXG5jdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvIGJlXG5pbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSBnbG9iYWxcbnZhcmlhYmxlIHdpdGhvdXQgYGBnbG9iYWxgYCwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG5nbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSBgYGdsb2JhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lXG5jb2RlIGJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCBgYGdsb2JhbGBgIHN0YXRlbWVudC5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyBmb3JtYWxcbnBhcmFtZXRlcnMgb3IgaW4gYSBgYGZvcmBgIGxvb3AgY29udHJvbCB0YXJnZXQsIGBgY2xhc3NgYCBkZWZpbml0aW9uLFxuZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgYGBpbXBvcnRgYCBzdGF0ZW1lbnQuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3RcbmVuZm9yY2UgdGhlIGxhdHRlciB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZVxudGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHlcbmNoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlIGBgZ2xvYmFsYGAgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci5cbkl0IGFwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBgYGdsb2JhbGBgXG5zdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgYGBnbG9iYWxgYCBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGEgc3RyaW5nXG5vciBjb2RlIG9iamVjdCBzdXBwbGllZCB0byB0aGUgYnVpbHQtaW4gYGBleGVjKClgYCBmdW5jdGlvbiBkb2VzIG5vdFxuYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbmNvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgYGBnbG9iYWxgYCBzdGF0ZW1lbnRzIGluXG50aGUgY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGVcbmBgZXZhbCgpYGAgYW5kIGBgY29tcGlsZSgpYGAgZnVuY3Rpb25zLlxuJywKICAnaWQtY2xhc3Nlcyc6ICdcblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuYGBfKmBgXG4gICBOb3QgaW1wb3J0ZWQgYnkgYGBmcm9tIG1vZHVsZSBpbXBvcnQgKmBgLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllclxuICAgYGBfYGAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZlxuICAgdGhlIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSBgYGJ1aWx0aW5zYGAgbW9kdWxlLiAgV2hlblxuICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsIGBgX2BgIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgYGBfYGAgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgIGBgZ2V0dGV4dGBgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbmBgX18qX19gYFxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgYGBfXypfX2BgIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzXG4gICBub3QgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2VcbiAgIHdpdGhvdXQgd2FybmluZy5cblxuYGBfXypgYFxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uICpJZGVudGlmaWVycyAoTmFtZXMpKi5cbicsCiAgJ2lkZW50aWZpZXJzJzogJ1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zLlxuXG5UaGUgc3ludGF4IG9mIGlkZW50aWZpZXJzIGluIFB5dGhvbiBpcyBiYXNlZCBvbiB0aGUgVW5pY29kZSBzdGFuZGFyZFxuYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7IHNlZSBhbHNvXG4qKlBFUCAzMTMxKiogZm9yIGZ1cnRoZXIgZGV0YWlscy5cblxuV2l0aGluIHRoZSBBU0NJSSByYW5nZSAoVSswMDAxLi5VKzAwN0YpLCB0aGUgdmFsaWQgY2hhcmFjdGVycyBmb3JcbmlkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2VcbmxldHRlcnMgYGBBYGAgdGhyb3VnaCBgYFpgYCwgdGhlIHVuZGVyc2NvcmUgYGBfYGAgYW5kLCBleGNlcHQgZm9yIHRoZVxuZmlyc3QgY2hhcmFjdGVyLCB0aGUgZGlnaXRzIGBgMGBgIHRocm91Z2ggYGA5YGAuXG5cblB5dGhvbiAzLjAgaW50cm9kdWNlcyBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgZnJvbSBvdXRzaWRlIHRoZSBBU0NJSVxucmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSBjbGFzc2lmaWNhdGlvblxudXNlcyB0aGUgdmVyc2lvbiBvZiB0aGUgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgYXMgaW5jbHVkZWQgaW4gdGhlXG5gYHVuaWNvZGVkYXRhYGAgbW9kdWxlLlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cbiAgIGlkZW50aWZpZXIgICA6Oj0geGlkX3N0YXJ0IHhpZF9jb250aW51ZSpcbiAgIGlkX3N0YXJ0ICAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGdlbmVyYWwgY2F0ZWdvcmllcyBMdSwgTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgT3RoZXJfSURfU3RhcnQgcHJvcGVydHk+XG4gICBpZF9jb250aW51ZSAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCwgcGx1cyBjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCB0aGUgT3RoZXJfSURfQ29udGludWUgcHJvcGVydHk+XG4gICB4aWRfc3RhcnQgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9zdGFydCB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuICAgeGlkX2NvbnRpbnVlIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfY29udGludWUgd2hvc2UgTkZLQyBub3JtYWxpemF0aW9uIGlzIGluICJpZF9jb250aW51ZSoiPlxuXG5UaGUgVW5pY29kZSBjYXRlZ29yeSBjb2RlcyBtZW50aW9uZWQgYWJvdmUgc3RhbmQgZm9yOlxuXG4qICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuXG4qICpMbCogLSBsb3dlcmNhc2UgbGV0dGVyc1xuXG4qICpMdCogLSB0aXRsZWNhc2UgbGV0dGVyc1xuXG4qICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG5cbiogKkxvKiAtIG90aGVyIGxldHRlcnNcblxuKiAqTmwqIC0gbGV0dGVyIG51bWJlcnNcblxuKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuXG4qICpNYyogLSBzcGFjaW5nIGNvbWJpbmluZyBtYXJrc1xuXG4qICpOZCogLSBkZWNpbWFsIG51bWJlcnNcblxuKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuXG4qICpPdGhlcl9JRF9TdGFydCogLSBleHBsaWNpdCBsaXN0IG9mIGNoYXJhY3RlcnMgaW4gUHJvcExpc3QudHh0IHRvXG4gIHN1cHBvcnQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHlcblxuKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcblxuQWxsIGlkZW50aWZpZXJzIGFyZSBjb252ZXJ0ZWQgaW50byB0aGUgbm9ybWFsIGZvcm0gTkZLQyB3aGlsZSBwYXJzaW5nO1xuY29tcGFyaXNvbiBvZiBpZGVudGlmaWVycyBpcyBiYXNlZCBvbiBORktDLlxuXG5BIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgY2hhcmFjdGVycyBmb3JcblVuaWNvZGUgNC4xIGNhbiBiZSBmb3VuZCBhdCBodHRwOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbmBgXypgYFxuICAgTm90IGltcG9ydGVkIGJ5IGBgZnJvbSBtb2R1bGUgaW1wb3J0ICpgYC4gIFRoZSBzcGVjaWFsIGlkZW50aWZpZXJcbiAgIGBgX2BgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2ZcbiAgIHRoZSBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgYGBidWlsdGluc2BgIG1vZHVsZS4gIFdoZW5cbiAgIG5vdCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCBgYF9gYCBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3RcbiAgIGRlZmluZWQuIFNlZSBzZWN0aW9uICpUaGUgaW1wb3J0IHN0YXRlbWVudCouXG5cbiAgIE5vdGU6IFRoZSBuYW1lIGBgX2BgIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICBgYGdldHRleHRgYCBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG5gYF9fKl9fYGBcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgKlNwZWNpYWwgbWV0aG9kIG5hbWVzKiBzZWN0aW9uXG4gICBhbmQgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mIGBgX18qX19gYCBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lc1xuICAgbm90IGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlXG4gICB3aXRob3V0IHdhcm5pbmcuXG5cbmBgX18qYGBcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAogICdpZic6ICdcblRoZSBgYGlmYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGBpZmBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlIGBgaWZgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgYGBlbHNlYGAgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAogICdpbWFnaW5hcnknOiAnXG5JbWFnaW5hcnkgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKlxuXG5JbWFnaW5hcnkgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGltYWdudW1iZXIgOjo9IChmbG9hdG51bWJlciB8IGludHBhcnQpICgiaiIgfCAiSiIpXG5cbkFuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgb2YgMC4wLlxuQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgbnVtYmVyc1xuYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgY29tcGxleFxubnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvIGl0LFxuZS5nLiwgYGAoMys0ailgYC4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiAnXG5UaGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kXG5pbml0aWFsaXplIGl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsXG5uYW1lc3BhY2UgKG9mIHRoZSBzY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzKS4gVGhlXG5zdGF0ZW1lbnQgY29tZXMgaW4gdHdvIGZvcm1zIGRpZmZlcmluZyBvbiB3aGV0aGVyIGl0IHVzZXMgdGhlIGBgZnJvbWBgXG5rZXl3b3JkLiBUaGUgZmlyc3QgZm9ybSAod2l0aG91dCBgYGZyb21gYCkgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3JcbmVhY2ggaWRlbnRpZmllciBpbiB0aGUgbGlzdC4gVGhlIGZvcm0gd2l0aCBgYGZyb21gYCBwZXJmb3JtcyBzdGVwICgxKVxub25jZSwgYW5kIHRoZW4gcGVyZm9ybXMgc3RlcCAoMikgcmVwZWF0ZWRseS4gRm9yIGEgcmVmZXJlbmNlXG5pbXBsZW1lbnRhdGlvbiBvZiBzdGVwICgxKSwgc2VlIHRoZSBgYGltcG9ydGxpYmBgIG1vZHVsZS5cblxuVG8gdW5kZXJzdGFuZCBob3cgc3RlcCAoMSkgb2NjdXJzLCBvbmUgbXVzdCBmaXJzdCB1bmRlcnN0YW5kIGhvd1xuUHl0aG9uIGhhbmRsZXMgaGllcmFyY2hpY2FsIG5hbWluZyBvZiBtb2R1bGVzLiBUbyBoZWxwIG9yZ2FuaXplXG5tb2R1bGVzIGFuZCBwcm92aWRlIGEgaGllcmFyY2h5IGluIG5hbWluZywgUHl0aG9uIGhhcyBhIGNvbmNlcHQgb2ZcbnBhY2thZ2VzLiBBIHBhY2thZ2UgY2FuIGNvbnRhaW4gb3RoZXIgcGFja2FnZXMgYW5kIG1vZHVsZXMgd2hpbGVcbm1vZHVsZXMgY2Fubm90IGNvbnRhaW4gb3RoZXIgbW9kdWxlcyBvciBwYWNrYWdlcy4gRnJvbSBhIGZpbGUgc3lzdGVtXG5wZXJzcGVjdGl2ZSwgcGFja2FnZXMgYXJlIGRpcmVjdG9yaWVzIGFuZCBtb2R1bGVzIGFyZSBmaWxlcy4gVGhlXG5vcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBwYWNrYWdlcyBpcyBzdGlsbCBhdmFpbGFibGUgdG8gcmVhZCxcbmFsdGhvdWdoIG1pbm9yIGRldGFpbHMgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB3cml0aW5nIG9mIHRoYXRcbmRvY3VtZW50LlxuXG5PbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCB0aGVcbnRlcm0gIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nIGZvclxudGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXNcbmBgc3lzLm1vZHVsZXNgYCwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkXG5wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKVxub2YgaW1wb3J0IHVubGVzcyBgYE5vbmVgYCBpcyBmb3VuZCBpbiBgYHN5cy5tb2R1bGVzYGAsIGluIHdoaWNoIGNhc2VcbmBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuXG5cbklmIHRoZSBtb2R1bGUgaXMgbm90IGZvdW5kIGluIHRoZSBjYWNoZSwgdGhlbiBgYHN5cy5tZXRhX3BhdGhgYCBpc1xuc2VhcmNoZWQgKHRoZSBzcGVjaWZpY2F0aW9uIGZvciBgYHN5cy5tZXRhX3BhdGhgYCBjYW4gYmUgZm91bmQgaW5cbioqUEVQIDMwMioqKS4gVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgKmZpbmRlciogb2JqZWN0cyB3aGljaCBhcmVcbnF1ZXJpZWQgaW4gb3JkZXIgYXMgdG8gd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieVxuY2FsbGluZyB0aGVpciBgYGZpbmRfbW9kdWxlKClgYCBtZXRob2Qgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBJZlxudGhlIG1vZHVsZSBoYXBwZW5zIHRvIGJlIGNvbnRhaW5lZCB3aXRoaW4gYSBwYWNrYWdlIChhcyBkZW5vdGVkIGJ5IHRoZVxuZXhpc3RlbmNlIG9mIGEgZG90IGluIHRoZSBuYW1lKSwgdGhlbiBhIHNlY29uZCBhcmd1bWVudCB0b1xuYGBmaW5kX21vZHVsZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZSBgYF9fcGF0aF9fYGAgYXR0cmlidXRlXG5mcm9tIHRoZSBwYXJlbnQgcGFja2FnZSAoZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QgaW4gdGhlIG5hbWUgb2ZcbnRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIGl0IHJldHVybnNcbmEgKmxvYWRlciogKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyBgYE5vbmVgYC5cblxuSWYgbm9uZSBvZiB0aGUgZmluZGVycyBvbiBgYHN5cy5tZXRhX3BhdGhgYCBhcmUgYWJsZSB0byBmaW5kIHRoZVxubW9kdWxlIHRoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC5cbkltcGxlbWVudGF0aW9ucyBvZiBQeXRob24gdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZVxuZGVmaW5lZC4gVGhlIG9uZSB0aGV5IGFsbCBkbyBkZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlc1xuYGBzeXMucGF0aF9ob29rc2BgLCBgYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAsIGFuZCBgYHN5cy5wYXRoYGAuXG5cblRoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAicGF0aHMiXG5zcGVjaWZpZWQgaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSBzeXN0ZW1cbnBhdGhzKS4gSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWRcbndpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byBgYGZpbmRfbW9kdWxlKClgYCxcbmBgX19wYXRoX19gYCBvbiB0aGUgcGFyZW50IHBhY2thZ2UsIGlzIHVzZWQgYXMgdGhlIHNvdXJjZSBvZiBwYXRocy4gSWZcbnRoZSBtb2R1bGUgaXMgbm90IGNvbnRhaW5lZCBpbiBhIHBhY2thZ2UgdGhlbiBgYHN5cy5wYXRoYGAgaXMgdXNlZCBhc1xudGhlIHNvdXJjZSBvZiBwYXRocy5cblxuT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYVxuZmluZGVyIHRoYXQgY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0XG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgY2FjaGVzIGZpbmRlcnMgZm9yIHBhdGhzIGFuZCBpcyBjaGVja2VkXG5mb3IgYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYSBmaW5kZXIgY2FjaGVkIHRoZW5cbmBgc3lzLnBhdGhfaG9va3NgYCBpcyBzZWFyY2hlZCBieSBjYWxsaW5nIGVhY2ggb2JqZWN0IGluIHRoZSBsaXN0IHdpdGhcbmEgc2luZ2xlIGFyZ3VtZW50IG9mIHRoZSBwYXRoLCByZXR1cm5pbmcgYSBmaW5kZXIgb3IgcmFpc2VzXG5gYEltcG9ydEVycm9yYGAuIElmIGEgZmluZGVyIGlzIHJldHVybmVkIHRoZW4gaXQgaXMgY2FjaGVkIGluXG5gYHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlYGAgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBub1xuZmluZGVyIGNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiBgYE5vbmVgYCBpc1xuc3RvcmVkIGluIGBgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVgYCB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsXG5maWxlLWJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlc1xuc2hvdWxkIGJlIHVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlclxud2hpY2ggYWx3YXlzIHJldHVybnMgYGBOb25lYGAgaXMgcGxhY2VkIGluIHRoZSBjYWNoZSBmb3IgdGhlIHBhdGguXG5cbklmIG5vIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIHRoZW4gYGBJbXBvcnRFcnJvcmBgIGlzIHJhaXNlZC5cbk90aGVyd2lzZSBzb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSBgYGxvYWRfbW9kdWxlKClgYCBtZXRob2RcbmlzIGNhbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlICoqUEVQIDMwMioqIGZvciB0aGVcbm9yaWdpbmFsIGRlZmluaXRpb24gb2YgbG9hZGVycykuIEEgbG9hZGVyIGhhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXNcbnRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQgbG9hZHMuIEZpcnN0LCBpZiB0aGUgbW9kdWxlIGFscmVhZHkgZXhpc3RzXG5pbiBgYHN5cy5tb2R1bGVzYGAgKGEgcG9zc2liaWxpdHkgaWYgdGhlIGxvYWRlciBpcyBjYWxsZWQgb3V0c2lkZSBvZlxudGhlIGltcG9ydCBtYWNoaW5lcnkpIHRoZW4gaXQgaXMgdG8gdXNlIHRoYXQgbW9kdWxlIGZvciBpbml0aWFsaXphdGlvblxuYW5kIG5vdCBhIG5ldyBtb2R1bGUuIEJ1dCBpZiB0aGUgbW9kdWxlIGRvZXMgbm90IGV4aXN0IGluXG5gYHN5cy5tb2R1bGVzYGAgdGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0IGRpY3QgYmVmb3JlXG5pbml0aWFsaXphdGlvbiBiZWdpbnMuIElmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUgbW9kdWxlXG5hbmQgaXQgd2FzIGFkZGVkIHRvIGBgc3lzLm1vZHVsZXNgYCBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRpY3QuXG5JZiBhbiBlcnJvciBvY2N1cnMgYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gYGBzeXMubW9kdWxlc2BgIGl0IGlzXG5sZWZ0IGluIHRoZSBkaWN0LlxuXG5UaGUgbG9hZGVyIG11c3Qgc2V0IHNldmVyYWwgYXR0cmlidXRlcyBvbiB0aGUgbW9kdWxlLiBgYF9fbmFtZV9fYGAgaXNcbnRvIGJlIHNldCB0byB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlLiBgYF9fZmlsZV9fYGAgaXMgdG8gYmUgdGhlICJwYXRoIlxudG8gdGhlIGZpbGUgdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpblxuYGBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXNgYCkgaW4gd2hpY2ggY2FzZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBzZXQuXG5JZiB3aGF0IGlzIGJlaW5nIGltcG9ydGVkIGlzIGEgcGFja2FnZSB0aGVuIGBgX19wYXRoX19gYCBpcyB0byBiZSBzZXRcbnRvIGEgbGlzdCBvZiBwYXRocyB0byBiZSBzZWFyY2hlZCB3aGVuIGxvb2tpbmcgZm9yIG1vZHVsZXMgYW5kXG5wYWNrYWdlcyBjb250YWluZWQgd2l0aGluIHRoZSBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLiBgYF9fcGFja2FnZV9fYGBcbmlzIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGVcbm1vZHVsZSBvciBwYWNrYWdlICh0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkXG5pbiBhIHBhY2thZ2UpLiBgYF9fbG9hZGVyX19gYCBpcyBhbHNvIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvXG50aGUgbG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlIG1vZHVsZS5cblxuSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIHRoZW4gdGhlIGxvYWRlciByYWlzZXNcbmBgSW1wb3J0RXJyb3JgYCBpZiBzb21lIG90aGVyIGV4Y2VwdGlvbiBpcyBub3QgYWxyZWFkeSBiZWluZ1xucHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZSBsb2FkZXIgcmV0dXJucyB0aGUgbW9kdWxlIHRoYXQgd2FzIGxvYWRlZFxuYW5kIGluaXRpYWxpemVkLlxuXG5XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhblxuYmVnaW4uXG5cblRoZSBmaXJzdCBmb3JtIG9mIGBgaW1wb3J0YGAgc3RhdGVtZW50IGJpbmRzIHRoZSBtb2R1bGUgbmFtZSBpbiB0aGVcbmxvY2FsIG5hbWVzcGFjZSB0byB0aGUgbW9kdWxlIG9iamVjdCwgYW5kIHRoZW4gZ29lcyBvbiB0byBpbXBvcnQgdGhlXG5uZXh0IGlkZW50aWZpZXIsIGlmIGFueS4gIElmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSBgYGFzYGAsXG50aGUgbmFtZSBmb2xsb3dpbmcgYGBhc2BgIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuXG5cblRoZSBgYGZyb21gYCBmb3JtIGRvZXMgbm90IGJpbmQgdGhlIG1vZHVsZSBuYW1lOiBpdCBnb2VzIHRocm91Z2ggdGhlXG5saXN0IG9mIGlkZW50aWZpZXJzLCBsb29rcyBlYWNoIG9uZSBvZiB0aGVtIHVwIGluIHRoZSBtb2R1bGUgZm91bmQgaW5cbnN0ZXAgKDEpLCBhbmQgYmluZHMgdGhlIG5hbWUgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSB0byB0aGUgb2JqZWN0IHRodXNcbmZvdW5kLiAgQXMgd2l0aCB0aGUgZmlyc3QgZm9ybSBvZiBgYGltcG9ydGBgLCBhbiBhbHRlcm5hdGUgbG9jYWwgbmFtZVxuY2FuIGJlIHN1cHBsaWVkIGJ5IHNwZWNpZnlpbmcgImBgYXNgYCBsb2NhbG5hbWUiLiAgSWYgYSBuYW1lIGlzIG5vdFxuZm91bmQsIGBgSW1wb3J0RXJyb3JgYCBpcyByYWlzZWQuICBJZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpc1xucmVwbGFjZWQgYnkgYSBzdGFyIChgYFwnKlwnYGApLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZVxuYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2Ugb2YgdGhlIGBgaW1wb3J0YGAgc3RhdGVtZW50LlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gYGBfX2FsbF9fYGBcbnNob3VsZCBjb250YWluIHRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWRcbmFjY2lkZW50YWxseSBleHBvcnRpbmcgaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhc1xubGlicmFyeSBtb2R1bGVzIHdoaWNoIHdlcmUgaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgYGBmcm9tYGAgZm9ybSB3aXRoIGBgKmBgIG1heSBvbmx5IG9jY3VyIGluIGEgbW9kdWxlIHNjb3BlLiAgVGhlXG53aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tIGBgaW1wb3J0ICpgYCAtLS0gaXMgb25seSBhbGxvd2VkIGF0IHRoZVxubW9kdWxlIGxldmVsLiBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uc1xud2lsbCByYWlzZSBhIGBgU3ludGF4RXJyb3JgYC5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgYGBmcm9tYGBcbnlvdSBjYW4gc3BlY2lmeSBob3cgaGlnaCB0byB0cmF2ZXJzZSB1cCB0aGUgY3VycmVudCBwYWNrYWdlIGhpZXJhcmNoeVxud2l0aG91dCBzcGVjaWZ5aW5nIGV4YWN0IG5hbWVzLiBPbmUgbGVhZGluZyBkb3QgbWVhbnMgdGhlIGN1cnJlbnRcbnBhY2thZ2Ugd2hlcmUgdGhlIG1vZHVsZSBtYWtpbmcgdGhlIGltcG9ydCBleGlzdHMuIFR3byBkb3RzIG1lYW5zIHVwXG5vbmUgcGFja2FnZSBsZXZlbC4gVGhyZWUgZG90cyBpcyB1cCB0d28gbGV2ZWxzLCBldGMuIFNvIGlmIHlvdSBleGVjdXRlXG5gYGZyb20gLiBpbXBvcnQgbW9kYGAgZnJvbSBhIG1vZHVsZSBpbiB0aGUgYGBwa2dgYCBwYWNrYWdlIHRoZW4geW91XG53aWxsIGVuZCB1cCBpbXBvcnRpbmcgYGBwa2cubW9kYGAuIElmIHlvdSBleGVjdXRlIGBgZnJvbSAuLnN1YnBrZzJcbmltcG9ydCBtb2RgYCBmcm9tIHdpdGhpbiBgYHBrZy5zdWJwa2cxYGAgeW91IHdpbGwgaW1wb3J0XG5gYHBrZy5zdWJwa2cyLm1vZGBgLiBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgcmVsYXRpdmUgaW1wb3J0cyBpc1xuY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuYGBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpYGAgaXMgcHJvdmlkZWQgdG8gc3VwcG9ydCBhcHBsaWNhdGlvbnMgdGhhdFxuZGV0ZXJtaW5lIHdoaWNoIG1vZHVsZXMgbmVlZCB0byBiZSBsb2FkZWQgZHluYW1pY2FsbHkuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbi4gIFRoZSBmdXR1cmVcbnN0YXRlbWVudCBpcyBpbnRlbmRlZCB0byBlYXNlIG1pZ3JhdGlvbiB0byBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uXG50aGF0IGludHJvZHVjZSBpbmNvbXBhdGlibGUgY2hhbmdlcyB0byB0aGUgbGFuZ3VhZ2UuICBJdCBhbGxvd3MgdXNlIG9mXG50aGUgbmV3IGZlYXR1cmVzIG9uIGEgcGVyLW1vZHVsZSBiYXNpcyBiZWZvcmUgdGhlIHJlbGVhc2UgaW4gd2hpY2ggdGhlXG5mZWF0dXJlIGJlY29tZXMgc3RhbmRhcmQuXG5cbiAgIGZ1dHVyZV9zdGF0ZW1lbnQgOjo9ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSpcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiAiKCIgZmVhdHVyZSBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiBmZWF0dXJlIFsiYXMiIG5hbWVdKSogWyIsIl0gIikiXG4gICBmZWF0dXJlICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4gICBuYW1lICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBtdXN0IGFwcGVhciBuZWFyIHRoZSB0b3Agb2YgdGhlIG1vZHVsZS4gIFRoZSBvbmx5XG5saW5lcyB0aGF0IGNhbiBhcHBlYXIgYmVmb3JlIGEgZnV0dXJlIHN0YXRlbWVudCBhcmU6XG5cbiogdGhlIG1vZHVsZSBkb2NzdHJpbmcgKGlmIGFueSksXG5cbiogY29tbWVudHMsXG5cbiogYmxhbmsgbGluZXMsIGFuZFxuXG4qIG90aGVyIGZ1dHVyZSBzdGF0ZW1lbnRzLlxuXG5UaGUgZmVhdHVyZXMgcmVjb2duaXplZCBieSBQeXRob24gMy4wIGFyZSBgYGFic29sdXRlX2ltcG9ydGBgLFxuYGBkaXZpc2lvbmBgLCBgYGdlbmVyYXRvcnNgYCwgYGB1bmljb2RlX2xpdGVyYWxzYGAsXG5gYHByaW50X2Z1bmN0aW9uYGAsIGBgbmVzdGVkX3Njb3Blc2BgIGFuZCBgYHdpdGhfc3RhdGVtZW50YGAuICBUaGV5XG5hcmUgYWxsIHJlZHVuZGFudCBiZWNhdXNlIHRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvclxuYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCBpcyByZWNvZ25pemVkIGFuZCB0cmVhdGVkIHNwZWNpYWxseSBhdCBjb21waWxlXG50aW1lOiBDaGFuZ2VzIHRvIHRoZSBzZW1hbnRpY3Mgb2YgY29yZSBjb25zdHJ1Y3RzIGFyZSBvZnRlblxuaW1wbGVtZW50ZWQgYnkgZ2VuZXJhdGluZyBkaWZmZXJlbnQgY29kZS4gIEl0IG1heSBldmVuIGJlIHRoZSBjYXNlXG50aGF0IGEgbmV3IGZlYXR1cmUgaW50cm9kdWNlcyBuZXcgaW5jb21wYXRpYmxlIHN5bnRheCAoc3VjaCBhcyBhIG5ld1xucmVzZXJ2ZWQgd29yZCksIGluIHdoaWNoIGNhc2UgdGhlIGNvbXBpbGVyIG1heSBuZWVkIHRvIHBhcnNlIHRoZVxubW9kdWxlIGRpZmZlcmVudGx5LiAgU3VjaCBkZWNpc2lvbnMgY2Fubm90IGJlIHB1c2hlZCBvZmYgdW50aWxcbnJ1bnRpbWUuXG5cbkZvciBhbnkgZ2l2ZW4gcmVsZWFzZSwgdGhlIGNvbXBpbGVyIGtub3dzIHdoaWNoIGZlYXR1cmUgbmFtZXMgaGF2ZVxuYmVlbiBkZWZpbmVkLCBhbmQgcmFpc2VzIGEgY29tcGlsZS10aW1lIGVycm9yIGlmIGEgZnV0dXJlIHN0YXRlbWVudFxuY29udGFpbnMgYSBmZWF0dXJlIG5vdCBrbm93biB0byBpdC5cblxuVGhlIGRpcmVjdCBydW50aW1lIHNlbWFudGljcyBhcmUgdGhlIHNhbWUgYXMgZm9yIGFueSBpbXBvcnQgc3RhdGVtZW50OlxudGhlcmUgaXMgYSBzdGFuZGFyZCBtb2R1bGUgYGBfX2Z1dHVyZV9fYGAsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0XG53aWxsIGJlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbmV4ZWN1dGVkLlxuXG5UaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG5lbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuXG5Ob3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG5cbiAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuXG5UaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0XCdzIGFuIG9yZGluYXJ5IGltcG9ydCBzdGF0ZW1lbnQgd2l0aFxubm8gc3BlY2lhbCBzZW1hbnRpY3Mgb3Igc3ludGF4IHJlc3RyaWN0aW9ucy5cblxuQ29kZSBjb21waWxlZCBieSBjYWxscyB0byB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGBgZXhlYygpYGAgYW5kXG5gYGNvbXBpbGUoKWBgIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgYGBNYGAgY29udGFpbmluZyBhIGZ1dHVyZVxuc3RhdGVtZW50IHdpbGwsIGJ5IGRlZmF1bHQsIHVzZSB0aGUgbmV3IHN5bnRheCBvciBzZW1hbnRpY3MgYXNzb2NpYXRlZFxud2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWxcbmFyZ3VtZW50cyB0byBgYGNvbXBpbGUoKWBgIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvblxuZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgKi1pKiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMjM2KiogLSBCYWNrIHRvIHRoZSBfX2Z1dHVyZV9fXG4gICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2ltcG9ydCc6ICdcblRoZSBgYGltcG9ydGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGltcG9ydF9zdG10ICAgICA6Oj0gImltcG9ydCIgbW9kdWxlIFsiYXMiIG5hbWVdICggIiwiIG1vZHVsZSBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIHJlbGF0aXZlX21vZHVsZSAiaW1wb3J0IiAiKCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSogWyIsIl0gIikiXG4gICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgbW9kdWxlICJpbXBvcnQiICIqIlxuICAgbW9kdWxlICAgICAgICAgIDo6PSAoaWRlbnRpZmllciAiLiIpKiBpZGVudGlmaWVyXG4gICByZWxhdGl2ZV9tb2R1bGUgOjo9ICIuIiogbW9kdWxlIHwgIi4iK1xuICAgbmFtZSAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG5cblRoZSBiYXNpYyBpbXBvcnQgc3RhdGVtZW50IChubyBgYGZyb21gYCBjbGF1c2UpIGlzIGV4ZWN1dGVkIGluIHR3b1xuc3RlcHM6XG5cbjEuIGZpbmQgYSBtb2R1bGUsIGxvYWRpbmcgYW5kIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3NhcnlcblxuMi4gZGVmaW5lIGEgbmFtZSBvciBuYW1lcyBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgc2NvcGUgd2hlcmVcbiAgIHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZGl1YWwgaW1wb3J0IHN0YXRlbWVudHMuXG5cblRoZSBkZXRhaWxzIG9mIHRoZSBmaXJzdCBzdGVwLCBmaW5kaW5nIGFuZCBsb2FkaW5nIG1vZHVsZXMgaXNcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5IGBgYXNgYCwgdGhlbiB0aGUgbmFtZSBmb2xsb3dpbmdcbiAgYGBhc2BgIGlzIGJvdW5kIGRpcmVjdGx5IHRvIHRoZSBpbXBvcnRlZCBtb2R1bGUuXG5cbiogSWYgbm8gb3RoZXIgbmFtZSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIGFcbiAgdG9wIGxldmVsIG1vZHVsZSwgdGhlIG1vZHVsZVwncyBuYW1lIGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2VcbiAgYXMgYSByZWZlcmVuY2UgdG8gdGhlIGltcG9ydGVkIG1vZHVsZVxuXG4qIElmIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgKm5vdCogYSB0b3AgbGV2ZWwgbW9kdWxlLCB0aGVuIHRoZVxuICBuYW1lIG9mIHRoZSB0b3AgbGV2ZWwgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgaXMgYm91bmQgaW5cbiAgdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyBhIHJlZmVyZW5jZSB0byB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIFRoZVxuICBpbXBvcnRlZCBtb2R1bGUgbXVzdCBiZSBhY2Nlc3NlZCB1c2luZyBpdHMgZnVsbCBxdWFsaWZpZWQgbmFtZVxuICByYXRoZXIgdGhhbiBkaXJlY3RseVxuXG5UaGUgYGBmcm9tYGAgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlIGBgZnJvbWBgIGNsYXVzZSBsb2FkaW5nIGFuZFxuICAgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeTtcblxuMi4gZm9yIGVhY2ggb2YgdGhlIGlkZW50aWZpZXJzIHNwZWNpZmllZCBpbiB0aGUgYGBpbXBvcnRgYCBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCBgYEltcG9ydEVycm9yYGAgaXMgcmFpc2VkLlxuXG4gICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsXG4gICAgICBuYW1lc3BhY2UsIHVzaW5nIHRoZSBuYW1lIGluIHRoZSBgYGFzYGAgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKGBgXCcqXCdgYCksIGFsbCBwdWJsaWNcbm5hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlXG5zY29wZSB3aGVyZSB0aGUgYGBpbXBvcnRgYCBzdGF0ZW1lbnQgb2NjdXJzLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS5cbkF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb25zIHdpbGwgcmFpc2UgYVxuYGBTeW50YXhFcnJvcmBgLlxuXG5UaGUgKnB1YmxpYyBuYW1lcyogZGVmaW5lZCBieSBhIG1vZHVsZSBhcmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGVcbm1vZHVsZVwncyBuYW1lc3BhY2UgZm9yIGEgdmFyaWFibGUgbmFtZWQgYGBfX2FsbF9fYGA7IGlmIGRlZmluZWQsIGl0XG5tdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieVxudGhhdCBtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gYGBfX2FsbF9fYGAgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpY1xuYW5kIGFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmIGBgX19hbGxfX2BgIGlzIG5vdCBkZWZpbmVkLCB0aGUgc2V0IG9mXG5wdWJsaWMgbmFtZXMgaW5jbHVkZXMgYWxsIG5hbWVzIGZvdW5kIGluIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlIHdoaWNoXG5kbyBub3QgYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoYGBcJ19cJ2BgKS4gIGBgX19hbGxfX2BgXG5zaG91bGQgY29udGFpbiB0aGUgZW50aXJlIHB1YmxpYyBBUEkuIEl0IGlzIGludGVuZGVkIHRvIGF2b2lkXG5hY2NpZGVudGFsbHkgZXhwb3J0aW5nIGl0ZW1zIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBUEkgKHN1Y2ggYXNcbmxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlIGltcG9ydGVkIGFuZCB1c2VkIHdpdGhpbiB0aGUgbW9kdWxlKS5cblxuVGhlIGBgZnJvbWBgIGZvcm0gd2l0aCBgYCpgYCBtYXkgb25seSBvY2N1ciBpbiBhIG1vZHVsZSBzY29wZS4gIFRoZVxud2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSBgYGltcG9ydCAqYGAgLS0tIGlzIG9ubHkgYWxsb3dlZCBhdCB0aGVcbm1vZHVsZSBsZXZlbC4gQXR0ZW1wdGluZyB0byB1c2UgaXQgaW4gY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnNcbndpbGwgcmFpc2UgYSBgYFN5bnRheEVycm9yYGAuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyIGBgZnJvbWBgXG55b3UgY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuYGBmcm9tIC4gaW1wb3J0IG1vZGBgIGZyb20gYSBtb2R1bGUgaW4gdGhlIGBgcGtnYGAgcGFja2FnZSB0aGVuIHlvdVxud2lsbCBlbmQgdXAgaW1wb3J0aW5nIGBgcGtnLm1vZGBgLiBJZiB5b3UgZXhlY3V0ZSBgYGZyb20gLi5zdWJwa2cyXG5pbXBvcnQgbW9kYGAgZnJvbSB3aXRoaW4gYGBwa2cuc3VicGtnMWBgIHlvdSB3aWxsIGltcG9ydFxuYGBwa2cuc3VicGtnMi5tb2RgYC4gVGhlIHNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXNcbmNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbmBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSB3aGljaCBtb2R1bGVzIG5lZWQgdG8gYmUgbG9hZGVkIGR5bmFtaWNhbGx5LlxuXG5cbkZ1dHVyZSBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PVxuXG5BICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhIHBhcnRpY3VsYXJcbm1vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbmF2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24uICBUaGUgZnV0dXJlXG5zdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvblxudGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXQgYWxsb3dzIHVzZSBvZlxudGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZSByZWxlYXNlIGluIHdoaWNoIHRoZVxuZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgYGBhYnNvbHV0ZV9pbXBvcnRgYCxcbmBgZGl2aXNpb25gYCwgYGBnZW5lcmF0b3JzYGAsIGBgdW5pY29kZV9saXRlcmFsc2BgLFxuYGBwcmludF9mdW5jdGlvbmBgLCBgYG5lc3RlZF9zY29wZXNgYCBhbmQgYGB3aXRoX3N0YXRlbWVudGBgLiAgVGhleVxuYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgZW5hYmxlZCwgYW5kIG9ubHkga2VwdCBmb3JcbmJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlIGBgX19mdXR1cmVfX2BgLCBkZXNjcmliZWQgbGF0ZXIsIGFuZCBpdFxud2lsbCBiZSBpbXBvcnRlZCBpbiB0aGUgdXN1YWwgd2F5IGF0IHRoZSB0aW1lIHRoZSBmdXR1cmUgc3RhdGVtZW50IGlzXG5leGVjdXRlZC5cblxuVGhlIGludGVyZXN0aW5nIHJ1bnRpbWUgc2VtYW50aWNzIGRlcGVuZCBvbiB0aGUgc3BlY2lmaWMgZmVhdHVyZVxuZW5hYmxlZCBieSB0aGUgZnV0dXJlIHN0YXRlbWVudC5cblxuTm90ZSB0aGF0IHRoZXJlIGlzIG5vdGhpbmcgc3BlY2lhbCBhYm91dCB0aGUgc3RhdGVtZW50OlxuXG4gICBpbXBvcnQgX19mdXR1cmVfXyBbYXMgbmFtZV1cblxuVGhhdCBpcyBub3QgYSBmdXR1cmUgc3RhdGVtZW50OyBpdFwncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50IHdpdGhcbm5vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG5cbkNvZGUgY29tcGlsZWQgYnkgY2FsbHMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGV4ZWMoKWBgIGFuZFxuYGBjb21waWxlKClgYCB0aGF0IG9jY3VyIGluIGEgbW9kdWxlIGBgTWBgIGNvbnRhaW5pbmcgYSBmdXR1cmVcbnN0YXRlbWVudCB3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyBzeW50YXggb3Igc2VtYW50aWNzIGFzc29jaWF0ZWRcbndpdGggdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIGJ5IG9wdGlvbmFsXG5hcmd1bWVudHMgdG8gYGBjb21waWxlKClgYCAtLS0gc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb25cbmZvciBkZXRhaWxzLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgdHlwZWQgYXQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgcHJvbXB0IHdpbGxcbnRha2UgZWZmZWN0IGZvciB0aGUgcmVzdCBvZiB0aGUgaW50ZXJwcmV0ZXIgc2Vzc2lvbi4gIElmIGFuXG5pbnRlcnByZXRlciBpcyBzdGFydGVkIHdpdGggdGhlICotaSogb3B0aW9uLCBpcyBwYXNzZWQgYSBzY3JpcHQgbmFtZVxudG8gZXhlY3V0ZSwgYW5kIHRoZSBzY3JpcHQgaW5jbHVkZXMgYSBmdXR1cmUgc3RhdGVtZW50LCBpdCB3aWxsIGJlIGluXG5lZmZlY3QgaW4gdGhlIGludGVyYWN0aXZlIHNlc3Npb24gc3RhcnRlZCBhZnRlciB0aGUgc2NyaXB0IGlzXG5leGVjdXRlZC5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuICAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAogICdpbic6ICdcbkNvbXBhcmlzb25zXG4qKioqKioqKioqKlxuXG5Vbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSxcbndoaWNoIGlzIGxvd2VyIHRoYW4gdGhhdCBvZiBhbnkgYXJpdGhtZXRpYywgc2hpZnRpbmcgb3IgYml0d2lzZVxub3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSBgYGEgPCBiIDwgY2BgIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6IGBgVHJ1ZWBgIG9yIGBgRmFsc2VgYC5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sIGBgeCA8IHkgPD0gemBgIGlzXG5lcXVpdmFsZW50IHRvIGBgeCA8IHkgYW5kIHkgPD0gemBgLCBleGNlcHQgdGhhdCBgYHlgYCBpcyBldmFsdWF0ZWRcbm9ubHkgb25jZSAoYnV0IGluIGJvdGggY2FzZXMgYGB6YGAgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiBgYHggPFxueWBgIGlzIGZvdW5kIHRvIGJlIGZhbHNlKS5cblxuRm9ybWFsbHksIGlmICphKiwgKmIqLCAqYyosIC4uLiwgKnkqLCAqeiogYXJlIGV4cHJlc3Npb25zIGFuZCAqb3AxKixcbipvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiBgYGEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6YGAgaXMgZXF1aXZhbGVudCB0byBgYGEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiB6YGAsXG5leGNlcHQgdGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0IGBgYSBvcDEgYiBvcDIgY2BgIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mIGNvbXBhcmlzb25cbmJldHdlZW4gKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sIGBgeCA8IHkgPiB6YGAgaXMgcGVyZmVjdGx5IGxlZ2FsXG4odGhvdWdoIHBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBvcGVyYXRvcnMgYGA8YGAsIGBgPmBgLCBgYD09YGAsIGBgPj1gYCwgYGA8PWBgLCBhbmQgYGAhPWBgIGNvbXBhcmVcbnRoZSB2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuXG5JZiBib3RoIGFyZSBudW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSxcbnRoZSBgYD09YGAgYW5kIGBgIT1gYCBvcGVyYXRvcnMgKmFsd2F5cyogY29uc2lkZXIgb2JqZWN0cyBvZiBkaWZmZXJlbnRcbnR5cGVzIHRvIGJlIHVuZXF1YWwsIHdoaWxlIHRoZSBgYDxgYCwgYGA+YGAsIGBgPj1gYCBhbmQgYGA8PWBgXG5vcGVyYXRvcnMgcmFpc2UgYSBgYFR5cGVFcnJvcmBgIHdoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgZGlmZmVyZW50XG50eXBlcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0b3JzIGZvciB0aGUgZ2l2ZW4gcGFpciBvZlxudHlwZXMuICBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mIG5vbi1idWlsdC1pblxudHlwZXMgYnkgZGVmaW5pbmcgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbGlrZSBgYF9fZ3RfXygpYGAsIGRlc2NyaWJlZFxuaW4gc2VjdGlvbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogVGhlIHZhbHVlcyBgYGZsb2F0KFwnTmFOXCcpYGAgYW5kIGBgRGVjaW1hbChcJ05hTlwnKWBgIGFyZSBzcGVjaWFsLiBUaGVcbiAgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzLCBgYHggaXMgeGBgIGJ1dCBhcmUgbm90IGVxdWFsIHRvXG4gIHRoZW1zZWx2ZXMsIGBgeCAhPSB4YGAuICBBZGRpdGlvbmFsbHksIGNvbXBhcmluZyBhbnkgdmFsdWUgdG8gYVxuICBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gYGBGYWxzZWBgLiAgRm9yIGV4YW1wbGUsIGJvdGggYGAzIDxcbiAgZmxvYXQoXCdOYU5cJylgYCBhbmQgYGBmbG9hdChcJ05hTlwnKSA8IDNgYCB3aWxsIHJldHVybiBgYEZhbHNlYGAuXG5cbiogQnl0ZXMgb2JqZWN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzXG4gICh0aGUgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBgYG9yZCgpYGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuXG4gIFszXSBTdHJpbmcgYW5kIGJ5dGVzIG9iamVjdCBjYW5cJ3QgYmUgY29tcGFyZWQhXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYFsxLDIseF0gPD0gWzEsMix5XWBgIGhhcyB0aGVcbiAgc2FtZSB2YWx1ZSBhcyBgYHggPD0geWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdFxuICBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPFxuICBbMSwyLDNdYGApLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZVxuICBzYW1lIGBgKGtleSwgdmFsdWUpYGAgcGFpcnMuIE9yZGVyIGNvbXBhcmlzb25zIGBgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJyxcbiAgXCc+XCcpYGAgcmFpc2UgYGBUeXBlRXJyb3JgYC5cblxuKiBTZXRzIGFuZCBmcm96ZW5zZXRzIGRlZmluZSBjb21wYXJpc29uIG9wZXJhdG9ycyB0byBtZWFuIHN1YnNldCBhbmRcbiAgc3VwZXJzZXQgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKHRoZVxuICB0d28gc2V0cyBgYHsxLDJ9YGAgYW5kIHsyLDN9IGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nLlxuICBGb3IgZXhhbXBsZSwgYGBtaW4oKWBgLCBgYG1heCgpYGAsIGFuZCBgYHNvcnRlZCgpYGAgcHJvZHVjZVxuICB1bmRlZmluZWQgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMuXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleSBhcmVcbiAgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkIHNtYWxsZXJcbiAgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXQgY29uc2lzdGVudGx5XG4gIHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBkaWZmZXJpbmcgdHlwZXMgZGVwZW5kcyBvbiB3aGV0aGVyIGVpdGhlclxub2YgdGhlIHR5cGVzIHByb3ZpZGUgZXhwbGljaXQgc3VwcG9ydCBmb3IgdGhlIGNvbXBhcmlzb24uICBNb3N0XG5udW1lcmljIHR5cGVzIGNhbiBiZSBjb21wYXJlZCB3aXRoIG9uZSBhbm90aGVyLCBidXQgY29tcGFyaXNvbnMgb2ZcbmBgZmxvYXRgYCBhbmQgYGBEZWNpbWFsYGAgYXJlIG5vdCBzdXBwb3J0ZWQgdG8gYXZvaWQgdGhlIGluZXZpdGFibGVcbmNvbmZ1c2lvbiBhcmlzaW5nIGZyb20gcmVwcmVzZW50YXRpb24gaXNzdWVzIHN1Y2ggYXMgYGBmbG9hdChcJzEuMVwnKWBgXG5iZWluZyBpbmV4YWN0bHkgcmVwcmVzZW50ZWQgYW5kIHRoZXJlZm9yZSBub3QgZXhhY3RseSBlcXVhbCB0b1xuYGBEZWNpbWFsKFwnMS4xXCcpYGAgd2hpY2ggaXMuICBXaGVuIGNyb3NzLXR5cGUgY29tcGFyaXNvbiBpcyBub3RcbnN1cHBvcnRlZCwgdGhlIGNvbXBhcmlzb24gbWV0aG9kIHJldHVybnMgYGBOb3RJbXBsZW1lbnRlZGBgLiAgVGhpcyBjYW5cbmNyZWF0ZSB0aGUgaWxsdXNpb24gb2Ygbm9uLXRyYW5zaXRpdml0eSBiZXR3ZWVuIHN1cHBvcnRlZCBjcm9zcy10eXBlXG5jb21wYXJpc29ucyBhbmQgdW5zdXBwb3J0ZWQgY29tcGFyaXNvbnMuICBGb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDIpID09XG4yYGAgYW5kIGBgMiA9PSBmbG9hdCgyKWBgIGJ1dCBgYERlY2ltYWwoMikgIT0gZmxvYXQoMilgYC5cblxuVGhlIG9wZXJhdG9ycyBgYGluYGAgYW5kIGBgbm90IGluYGAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbiBzYGBcbmV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCBmYWxzZSBvdGhlcndpc2UuICBgYHhcbm5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoIGBgaW5gYFxudGVzdHMgd2hldGhlciBhIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlc1xuc3VjaCBhcyBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gYGB4IGluIHlgYCBpcyBlcXVpdmFsZW50IHRvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpYGAuXG5cbkZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuXG5FbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbnN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSBgYF9fY29udGFpbnNfXygpYGAgbWV0aG9kLFxuYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAgYnV0IGRvXG5kZWZpbmUgYGBfX2l0ZXJfXygpYGAsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4XG49PSB6YGAgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXNcbnJhaXNlZCBkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG5gYF9fZ2V0aXRlbV9fKClgYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0IGBgeCA9PSB5W2ldYGAsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgYGBJbmRleEVycm9yYGAgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgYGBpbmBgIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciBgYG5vdCBpbmBgIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG5gYGluYGAuXG5cblRoZSBvcGVyYXRvcnMgYGBpc2BgIGFuZCBgYGlzIG5vdGBgIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogYGB4IGlzXG55YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgYGB4IGlzXG5ub3QgeWBgIHlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAogICdpbnRlZ2Vycyc6ICdcbkludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuSW50ZWdlciBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIitcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIGRpZ2l0ICAgICAgICAgIDo6PSAiMCIuLi4iOSJcbiAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuXG5UaGVyZSBpcyBubyBsaW1pdCBmb3IgdGhlIGxlbmd0aCBvZiBpbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdFxuY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgbWVtb3J5LlxuXG5Ob3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgYWxsb3dlZC5cblRoaXMgaXMgZm9yIGRpc2FtYmlndWF0aW9uIHdpdGggQy1zdHlsZSBvY3RhbCBsaXRlcmFscywgd2hpY2ggUHl0aG9uXG51c2VkIGJlZm9yZSB2ZXJzaW9uIDMuMC5cblxuU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuXG4gICA3ICAgICAyMTQ3NDgzNjQ3ICAgICAgICAgICAgICAgICAgICAgICAgMG8xNzcgICAgMGIxMDAxMTAxMTFcbiAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweDEwMDAwMDAwMFxuICAgICAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgICAgICAgICAgIDB4ZGVhZGJlZWZcbicsCiAgJ2xhbWJkYSc6ICdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2Zvcm0gICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZm9ybV9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBmb3JtcyAobGFtYmRhIGV4cHJlc3Npb25zKSBoYXZlIHRoZSBzYW1lIHN5bnRhY3RpYyBwb3NpdGlvbiBhc1xuZXhwcmVzc2lvbnMuICBUaGV5IGFyZSBhIHNob3J0aGFuZCB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9uczsgdGhlXG5leHByZXNzaW9uIGBgbGFtYmRhIGFyZ3VtZW50czogZXhwcmVzc2lvbmBgIHlpZWxkcyBhIGZ1bmN0aW9uIG9iamVjdC5cblRoZSB1bm5hbWVkIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBmdW5jdGlvbiBvYmplY3QgZGVmaW5lZCB3aXRoXG5cbiAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuICAgICAgIHJldHVybiBleHByZXNzaW9uXG5cblNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyogZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLlxuTm90ZSB0aGF0IGZ1bmN0aW9ucyBjcmVhdGVkIHdpdGggbGFtYmRhIGZvcm1zIGNhbm5vdCBjb250YWluXG5zdGF0ZW1lbnRzIG9yIGFubm90YXRpb25zLlxuJywKQEAgLTQ5LDMwICs1MCwzMCBAQAogICdub25sb2NhbCc6ICdcblRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBub25sb2NhbF9zdG10IDo6PSAibm9ubG9jYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgdG9cbnByZXZpb3VzbHkgYm91bmQgdmFyaWFibGVzIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZS4gIFRoaXMgaXNcbmltcG9ydGFudCBiZWNhdXNlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBiaW5kaW5nIGlzIHRvIHNlYXJjaCB0aGVcbmxvY2FsIG5hbWVzcGFjZSBmaXJzdC4gIFRoZSBzdGF0ZW1lbnQgYWxsb3dzIGVuY2Fwc3VsYXRlZCBjb2RlIHRvXG5yZWJpbmQgdmFyaWFibGVzIG91dHNpZGUgb2YgdGhlIGxvY2FsIHNjb3BlIGJlc2lkZXMgdGhlIGdsb2JhbFxuKG1vZHVsZSkgc2NvcGUuXG5cbk5hbWVzIGxpc3RlZCBpbiBhIGBgbm9ubG9jYWxgYCBzdGF0ZW1lbnQsIHVubGlrZSB0byB0aG9zZSBsaXN0ZWQgaW4gYVxuYGBnbG9iYWxgYCBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgYGBub25sb2NhbGBgIHN0YXRlbWVudCBtdXN0IG5vdCBjb2xsaWRlIHdpdGggcHJlLVxuZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEwNCoqIC0gQWNjZXNzIHRvIE5hbWVzIGluIE91dGVyIFNjb3Blc1xuICAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSBgYG5vbmxvY2FsYGAgc3RhdGVtZW50LlxuJywKICAnbnVtYmVycyc6ICJcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IGludGVnZXJzLCBmbG9hdGluZyBwb2ludFxubnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbihjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsIG51bWJlciBhbmQgYW5cbmltYWdpbmFyeSBudW1iZXIpLlxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgYGAtMWBgXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciAnYGAtYGAnIGFuZFxudGhlIGxpdGVyYWwgYGAxYGAuXG4iLAogICdudW1lcmljLXR5cGVzJzogIlxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzXG4gICAgIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCBtZXRob2QgZm9yIHRoZVxuICAgICBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgbGVmdCBvcGVyYW5kJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cbiIsCi0gJ29iamVjdHMnOiAnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJ2BgaXNgYFwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSBgYGlkKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbnJlcHJlc2VudGluZyBpdHMgaWRlbnRpdHkgKGN1cnJlbnRseSBpbXBsZW1lbnRlZCBhcyBpdHMgYWRkcmVzcykuIEFuXG5vYmplY3RcJ3MgKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV0gQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lc1xudGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzIChlLmcuLCAiZG9lcyBpdCBoYXZlIGFcbmxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSB2YWx1ZXMgZm9yIG9iamVjdHMgb2YgdGhhdFxudHlwZS4gIFRoZSBgYHR5cGUoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzIHR5cGUgKHdoaWNoIGlzIGFuXG5vYmplY3QgaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0c1xud2hvc2UgdmFsdWUgY2FuIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWVcbmlzIHVuY2hhbmdlYWJsZSBvbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZVxudmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhXG5tdXRhYmxlIG9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyXG50aGUgY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBgYGdjYGAgbW9kdWxlIGZvclxuaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuIE90aGVyXG5pbXBsZW1lbnRhdGlvbnMgYWN0IGRpZmZlcmVudGx5IGFuZCBDUHl0aG9uIG1heSBjaGFuZ2UuIERvIG5vdCBkZXBlbmRcbm9uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlIChleDpcbmFsd2F5cyBjbG9zZSBmaWxlcykuXG5cbk5vdGUgdGhhdCB0aGUgdXNlIG9mIHRoZSBpbXBsZW1lbnRhdGlvblwncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuZmFjaWxpdGllcyBtYXkga2VlcCBvYmplY3RzIGFsaXZlIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgY29sbGVjdGFibGUuXG5BbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnYGB0cnlgYC4uLmBgZXhjZXB0YGBcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSBgYGNsb3NlKClgYCBtZXRob2QuIFByb2dyYW1zXG5hcmUgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gZXhwbGljaXRseSBjbG9zZSBzdWNoIG9iamVjdHMuICBUaGVcblwnYGB0cnlgYC4uLmBgZmluYWxseWBgXCcgc3RhdGVtZW50IGFuZCB0aGUgXCdgYHdpdGhgYFwnIHN0YXRlbWVudCBwcm92aWRlXG5jb252ZW5pZW50IHdheXMgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyIGBgYSA9IDE7IGIgPVxuMWBgLCBgYGFgYCBhbmQgYGBiYGAgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlXG52YWx1ZSBvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciBgYGMgPSBbXTsgZCA9XG5bXWBgLCBgYGNgYCBhbmQgYGBkYGAgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCxcbnVuaXF1ZSwgbmV3bHkgY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCBgYGMgPSBkID0gW11gYCBhc3NpZ25zXG50aGUgc2FtZSBvYmplY3QgdG8gYm90aCBgYGNgYCBhbmQgYGBkYGAuKVxuJywKKyAnb2JqZWN0cyc6ICdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnYGBpc2BgXCcgb3BlcmF0b3IgY29tcGFyZXMgdGhlXG5pZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlIGBgaWQoKWBgIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eS5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBGb3IgQ1B5dGhvbiwgYGBpZCh4KWBgIGlzIHRoZVxubWVtb3J5IGFkZHJlc3Mgd2hlcmUgYGB4YGAgaXMgc3RvcmVkLlxuXG5BbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCBzdXBwb3J0c1xuKGUuZy4sICJkb2VzIGl0IGhhdmUgYSBsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzXG5mb3Igb2JqZWN0cyBvZiB0aGF0IHR5cGUuICBUaGUgYGB0eXBlKClgYCBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwnc1xudHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gb2JqZWN0XCdzXG4qdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXVxuXG5UaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG5jaGFuZ2UgYXJlIHNhaWQgdG8gYmUgKm11dGFibGUqOyBvYmplY3RzIHdob3NlIHZhbHVlIGlzIHVuY2hhbmdlYWJsZVxub25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbmltbXV0YWJsZSBjb250YWluZXIgb2JqZWN0IHRoYXQgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlXG5vYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXJcJ3MgdmFsdWUgaXMgY2hhbmdlZDsgaG93ZXZlciB0aGVcbmNvbnRhaW5lciBpcyBzdGlsbCBjb25zaWRlcmVkIGltbXV0YWJsZSwgYmVjYXVzZSB0aGUgY29sbGVjdGlvbiBvZlxub2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG5zdHJpY3RseSB0aGUgc2FtZSBhcyBoYXZpbmcgYW4gdW5jaGFuZ2VhYmxlIHZhbHVlLCBpdCBpcyBtb3JlIHN1YnRsZS4pXG5BbiBvYmplY3RcJ3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG5udW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzIGFuZFxubGlzdHMgYXJlIG11dGFibGUuXG5cbk9iamVjdHMgYXJlIG5ldmVyIGV4cGxpY2l0bHkgZGVzdHJveWVkOyBob3dldmVyLCB3aGVuIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG5hbGxvd2VkIHRvIHBvc3Rwb25lIGdhcmJhZ2UgY29sbGVjdGlvbiBvciBvbWl0IGl0IGFsdG9nZXRoZXIgLS0tIGl0IGlzXG5hIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbmltcGxlbWVudGVkLCBhcyBsb25nIGFzIG5vIG9iamVjdHMgYXJlIGNvbGxlY3RlZCB0aGF0IGFyZSBzdGlsbFxucmVhY2hhYmxlLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIENQeXRob24gY3VycmVudGx5IHVzZXMgYSByZWZlcmVuY2UtXG5jb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgbGlua2VkXG5nYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxudW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuY2lyY3VsYXIgcmVmZXJlbmNlcy4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgYGBnY2BgIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoZXg6XG5hbHdheXMgY2xvc2UgZmlsZXMpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJ2BgdHJ5YGAuLi5gYGV4Y2VwdGBgXCdcbnN0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuXG5Tb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvICJleHRlcm5hbCIgcmVzb3VyY2VzIHN1Y2ggYXMgb3BlblxuZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlIGZyZWVkXG53aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbm5vdCBndWFyYW50ZWVkIHRvIGhhcHBlbiwgc3VjaCBvYmplY3RzIGFsc28gcHJvdmlkZSBhbiBleHBsaWNpdCB3YXkgdG9cbnJlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgYGBjbG9zZSgpYGAgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJ2BgdHJ5YGAuLi5gYGZpbmFsbHlgYFwnIHN0YXRlbWVudCBhbmQgdGhlIFwnYGB3aXRoYGBcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciBgYGEgPSAxOyBiID1cbjFgYCwgYGBhYGAgYW5kIGBgYmBgIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZVxudmFsdWUgb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgYGBjID0gW107IGQgPVxuW11gYCwgYGBjYGAgYW5kIGBgZGBgIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsXG51bmlxdWUsIG5ld2x5IGNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgYGBjID0gZCA9IFtdYGAgYXNzaWduc1xudGhlIHNhbWUgb2JqZWN0IHRvIGJvdGggYGBjYGAgYW5kIGBgZGBgLilcbicsCiAgJ29wZXJhdG9yLXN1bW1hcnknOiAnXG5TdW1tYXJ5XG4qKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZXMgaW4gUHl0aG9uLFxuZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBjb21wYXJpc29ucywgaW5jbHVkaW5nXG50ZXN0cywgd2hpY2ggYWxsIGhhdmUgdGhlIHNhbWUgcHJlY2VkZW5jZSBhbmQgY2hhaW4gZnJvbSBsZWZ0IHRvIHJpZ2h0XG4tLS0gc2VlIHNlY3Rpb24gKkNvbXBhcmlzb25zKiAtLS0gYW5kIGV4cG9uZW50aWF0aW9uLCB3aGljaCBncm91cHNcbmZyb20gcmlnaHQgdG8gbGVmdCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBsYW1iZGFgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpZmBgIC0tIGBgZWxzZWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBvcmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBhbmRgYCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBub3RgYCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBpbmBgLCBgYG5vdGBgIGBgaW5gYCwgYGBpc2BgLCBgYGlzIG5vdGBgLCAgICAgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgYGA8YGAsIGBgPD1gYCwgYGA+YGAsIGBgPj1gYCwgYGAhPWBgLCBgYD09YGAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMsICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB8YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBeYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAmYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGA8PGBgLCBgYD4+YGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGArYGAsIGBgLWBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbNV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAreGBgLCBgYC14YGAsIGBgfnhgYCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAqKmBgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbNl0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGB4W2luZGV4XWBgLCBgYHhbaW5kZXg6aW5kZXhdYGAsICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgYGB4KGFyZ3VtZW50cy4uLilgYCwgYGB4LmF0dHJpYnV0ZWBgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGAoZXhwcmVzc2lvbnMuLi4pYGAsIGBgW2V4cHJlc3Npb25zLi4uXWBgLCAgICAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgYGB7a2V5OmRhdHVtLi4ufWBgLCBgYHtleHByZXNzaW9ucy4uLn1gYCAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHNldCAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBXaGlsZSBgYGFicyh4JXkpIDwgYWJzKHkpYGAgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgZm9yIGZsb2F0cyBpdFxuICAgIG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgZXhhbXBsZSwgYW5kXG4gICAgYXNzdW1pbmcgYSBwbGF0Zm9ybSBvbiB3aGljaCBhIFB5dGhvbiBmbG9hdCBpcyBhbiBJRUVFIDc1NCBkb3VibGUtXG4gICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCBgYC0xZS0xMDAgJSAxZTEwMGBgIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzIGBgMWUxMDBgYCwgdGhlIGNvbXB1dGVkIHJlc3VsdCBpcyBgYC0xZS0xMDAgKyAxZTEwMGBgLFxuICAgIHdoaWNoIGlzIG51bWVyaWNhbGx5IGV4YWN0bHkgZXF1YWwgdG8gYGAxZTEwMGBgLiAgVGhlIGZ1bmN0aW9uXG4gICAgYGBtYXRoLmZtb2QoKWBgIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzIHRoZSBzaWduIG9mXG4gICAgdGhlIGZpcnN0IGFyZ3VtZW50IGluc3RlYWQsIGFuZCBzbyByZXR1cm5zIGBgLTFlLTEwMGBgIGluIHRoaXNcbiAgICBjYXNlLiBXaGljaCBhcHByb2FjaCBpcyBtb3JlIGFwcHJvcHJpYXRlIGRlcGVuZHMgb24gdGhlXG4gICAgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciBgYHgvL3lgYCB0byBiZSBvbmUgbGFyZ2VyIHRoYW4gYGAoeC14JXkpLy95YGAgZHVlIHRvXG4gICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyIHJlc3VsdCwgaW5cbiAgICBvcmRlciB0byBwcmVzZXJ2ZSB0aGF0IGBgZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHlgYCBiZSB2ZXJ5XG4gICAgY2xvc2UgdG8gYGB4YGAuXG5cblszXSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZSBsZXZlbCxcbiAgICB0aGV5IG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byB1c2Vycy4gIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nc1xuICAgIGBgIlxcdTAwQzciYGAgYW5kIGBgIlxcdTAzMjdcXHUwMDQzImBgIGNvbXBhcmUgZGlmZmVyZW50bHksIGV2ZW5cbiAgICB0aG91Z2ggdGhleSBib3RoIHJlcHJlc2VudCB0aGUgc2FtZSB1bmljb2RlIGNoYXJhY3RlciAoTEFUSU5cbiAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuICBUbyBjb21wYXJlIHN0cmluZ3MgaW4gYSBodW1hblxuICAgIHJlY29nbml6YWJsZSB3YXksIGNvbXBhcmUgdXNpbmcgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgLlxuXG5bNF0gRHVlIHRvIGF1dG9tYXRpYyBnYXJiYWdlLWNvbGxlY3Rpb24sIGZyZWUgbGlzdHMsIGFuZCB0aGUgZHluYW1pY1xuICAgIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2Ugc2VlbWluZ2x5IHVudXN1YWwgYmVoYXZpb3VyXG4gICAgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSBgYGlzYGAgb3BlcmF0b3IsIGxpa2UgdGhvc2UgaW52b2x2aW5nXG4gICAgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciBjb25zdGFudHMuICBDaGVjayB0aGVpclxuICAgIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cblxuWzVdIFRoZSBgYCVgYCBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyB0aGUgc2FtZVxuICAgIHByZWNlZGVuY2UgYXBwbGllcy5cblxuWzZdIFRoZSBwb3dlciBvcGVyYXRvciBgYCoqYGAgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpYyBvclxuICAgIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCBgYDIqKi0xYGAgaXNcbiAgICBgYDAuNWBgLlxuJywKICAncGFzcyc6ICdcblRoZSBgYHBhc3NgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuYGBwYXNzYGAgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyBoYXBwZW5zLlxuSXQgaXMgdXNlZnVsIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIHN0YXRlbWVudCBpcyByZXF1aXJlZFxuc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuXG4gICBkZWYgZihhcmcpOiBwYXNzICAgICMgYSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90aGluZyAoeWV0KVxuXG4gICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCiAgJ3Bvd2VyJzogJ1xuVGhlIHBvd2VyIG9wZXJhdG9yXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbmxlZnQ7IGl0IGJpbmRzIGxlc3MgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHMgcmlnaHQuICBUaGVcbnN5bnRheCBpczpcblxuICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuXG5UaHVzLCBpbiBhbiB1bnBhcmVudGhlc2l6ZWQgc2VxdWVuY2Ugb2YgcG93ZXIgYW5kIHVuYXJ5IG9wZXJhdG9ycywgdGhlXG5vcGVyYXRvcnMgYXJlIGV2YWx1YXRlZCBmcm9tIHJpZ2h0IHRvIGxlZnQgKHRoaXMgZG9lcyBub3QgY29uc3RyYWluXG50aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogYGAtMSoqMmBgIHJlc3VsdHMgaW4gYGAtMWBgLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gYGBwb3coKWBgXG5mdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgYXJndW1lbnRcbnJhaXNlZCB0byB0aGUgcG93ZXIgb2YgaXRzIHJpZ2h0IGFyZ3VtZW50LiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZVxuZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIGFuZCB0aGUgcmVzdWx0IGlzIG9mIHRoYXQgdHlwZS5cblxuRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgdW5sZXNzXG50aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlXG5jb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG5gYDEwKioyYGAgcmV0dXJucyBgYDEwMGBgLCBidXQgYGAxMCoqLTJgYCByZXR1cm5zIGBgMC4wMWBgLlxuXG5SYWlzaW5nIGBgMC4wYGAgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGFcbmBgWmVyb0RpdmlzaW9uRXJyb3JgYC4gUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXJcbnJlc3VsdHMgaW4gYSBgYGNvbXBsZXhgYCBudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhXG5gYFZhbHVlRXJyb3JgYC4pXG4nLAogICdyYWlzZSc6ICdcblRoZSBgYHJhaXNlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiZnJvbSIgZXhwcmVzc2lvbl1dXG5cbklmIG5vIGV4cHJlc3Npb25zIGFyZSBwcmVzZW50LCBgYHJhaXNlYGAgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgYGBSdW50aW1lRXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbnRoYXQgdGhpcyBpcyBhbiBlcnJvci5cblxuT3RoZXJ3aXNlLCBgYHJhaXNlYGAgZXZhbHVhdGVzIHRoZSBmaXJzdCBleHByZXNzaW9uIGFzIHRoZSBleGNlcHRpb25cbm9iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbmBgQmFzZUV4Y2VwdGlvbmBgLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlIGBgX190cmFjZWJhY2tfX2BgIGF0dHJpYnV0ZSwgd2hpY2hcbmlzIHdyaXRhYmxlLiBZb3UgY2FuIGNyZWF0ZSBhbiBleGNlcHRpb24gYW5kIHNldCB5b3VyIG93biB0cmFjZWJhY2sgaW5cbm9uZSBzdGVwIHVzaW5nIHRoZSBgYHdpdGhfdHJhY2ViYWNrKClgYCBleGNlcHRpb24gbWV0aG9kICh3aGljaFxucmV0dXJucyB0aGUgc2FtZSBleGNlcHRpb24gaW5zdGFuY2UsIHdpdGggaXRzIHRyYWNlYmFjayBzZXQgdG8gaXRzXG5hcmd1bWVudCksIGxpa2Ugc286XG5cbiAgIHJhaXNlIEV4Y2VwdGlvbigiZm9vIG9jY3VycmVkIikud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrb2JqKVxuXG5UaGUgYGBmcm9tYGAgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZVxuc2Vjb25kICpleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaFxud2lsbCB0aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSBgYF9fY2F1c2VfX2BgXG5hdHRyaWJ1dGUgKHdoaWNoIGlzIHdyaXRhYmxlKS4gIElmIHRoZSByYWlzZWQgZXhjZXB0aW9uIGlzIG5vdFxuaGFuZGxlZCwgYm90aCBleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6XG4gICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpIGZyb20gZXhjXG4gICAuLi5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbiAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cblxuICAgVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkEgc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGluc2lkZVxuYW4gZXhjZXB0aW9uIGhhbmRsZXI6IHRoZSBwcmV2aW91cyBleGNlcHRpb24gaXMgdGhlbiBhdHRhY2hlZCBhcyB0aGVcbm5ldyBleGNlcHRpb25cJ3MgYGBfX2NvbnRleHRfX2BgIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKLSAncmV0dXJuJzogJ1xuVGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbmBgcmV0dXJuYGAgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvblxuZGVmaW5pdGlvbiwgbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuXG5JZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlIGBgTm9uZWBgIGlzXG5zdWJzdGl0dXRlZC5cblxuYGByZXR1cm5gYCBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3RcbihvciBgYE5vbmVgYCkgYXMgcmV0dXJuIHZhbHVlLlxuXG5XaGVuIGBgcmV0dXJuYGAgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBhXG5gYGZpbmFsbHlgYCBjbGF1c2UsIHRoYXQgYGBmaW5hbGx5YGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbmxlYXZpbmcgdGhlIGZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlIGBgcmV0dXJuYGAgc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIHRvXG5pbmNsdWRlIGFuIGBgZXhwcmVzc2lvbl9saXN0YGAuICBJbiB0aGF0IGNvbnRleHQsIGEgYmFyZSBgYHJldHVybmBgXG5pbmRpY2F0ZXMgdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgYGBTdG9wSXRlcmF0aW9uYGBcbnRvIGJlIHJhaXNlZC5cbicsCisgJ3JldHVybic6ICdcblRoZSBgYHJldHVybmBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG5gYHJldHVybmBgIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb25cbmRlZmluaXRpb24sIG5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSBgYE5vbmVgYCBpc1xuc3Vic3RpdHV0ZWQuXG5cbmBgcmV0dXJuYGAgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0XG4ob3IgYGBOb25lYGApIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiBgYHJldHVybmBgIHBhc3NlcyBjb250cm9sIG91dCBvZiBhIGBgdHJ5YGAgc3RhdGVtZW50IHdpdGggYVxuYGBmaW5hbGx5YGAgY2xhdXNlLCB0aGF0IGBgZmluYWxseWBgIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5sZWF2aW5nIHRoZSBmdW5jdGlvbi5cblxuSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSBgYHJldHVybmBgIHN0YXRlbWVudCBpbmRpY2F0ZXMgdGhhdCB0aGVcbmdlbmVyYXRvciBpcyBkb25lIGFuZCB3aWxsIGNhdXNlIGBgU3RvcEl0ZXJhdGlvbmBgIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuYGBTdG9wSXRlcmF0aW9uYGAgYW5kIGJlY29tZXMgdGhlIGBgU3RvcEl0ZXJhdGlvbi52YWx1ZWBgIGF0dHJpYnV0ZS5cbicsCiAgJ3NlcXVlbmNlLXR5cGVzJzogIlxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmRcbmRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZSBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlIHByb3ZpZGVzIGFcbmBgTXV0YWJsZU1hcHBpbmdgYCBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHNcbmZyb20gYSBiYXNlIHNldCBvZiBgYF9fZ2V0aXRlbV9fKClgYCwgYGBfX3NldGl0ZW1fXygpYGAsXG5gYF9fZGVsaXRlbV9fKClgYCwgYW5kIGBga2V5cygpYGAuIE11dGFibGUgc2VxdWVuY2VzIHNob3VsZCBwcm92aWRlXG5tZXRob2RzIGBgYXBwZW5kKClgYCwgYGBjb3VudCgpYGAsIGBgaW5kZXgoKWBgLCBgYGV4dGVuZCgpYGAsXG5gYGluc2VydCgpYGAsIGBgcG9wKClgYCwgYGByZW1vdmUoKWBgLCBgYHJldmVyc2UoKWBgIGFuZCBgYHNvcnQoKWBgLFxubGlrZSBQeXRob24gc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkXG5pbXBsZW1lbnQgYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyBgYF9fYWRkX18oKWBgLCBgYF9fcmFkZF9fKClgYCxcbmBgX19pYWRkX18oKWBgLCBgYF9fbXVsX18oKWBgLCBgYF9fcm11bF9fKClgYCBhbmQgYGBfX2ltdWxfXygpYGBcbmRlc2NyaWJlZCBiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXRcbmlzIHJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19jb250YWluc19fKClgYCBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgYGBpbmBgXG5vcGVyYXRvcjsgZm9yIG1hcHBpbmdzLCBgYGluYGAgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZydzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2Vzbid0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvbid0IGRlZmluZSBgYF9fY29udGFpbnNfXygpYGAsIHRoZSBtZW1iZXJzaGlwXG4gICB0ZXN0IGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgYGBfX2l0ZXJfXygpYGAsIHRoZW4gdGhlIG9sZFxuICAgc2VxdWVuY2UgaXRlcmF0aW9uIHByb3RvY29sIHZpYSBgYF9fZ2V0aXRlbV9fKClgYCwgc2VlICp0aGlzXG4gICBzZWN0aW9uIGluIHRoZSBsYW5ndWFnZSByZWZlcmVuY2UqLlxuIiwKICAnc2hpZnRpbmcnOiAnXG5TaGlmdGluZyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xub3BlcmF0aW9uczpcblxuICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG5cblRoZXNlIG9wZXJhdG9ycyBhY2NlcHQgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGRpdmlzaW9uIGJ5IGBgcG93KDIsbilgYC4gIEFcbmxlZnQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBtdWx0aXBsaWNhdGlvbiB3aXRoIGBgcG93KDIsbilgYC5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXMgcmVxdWlyZWQgdG9cbiAgYmUgYXQgbW9zdCBgYHN5cy5tYXhzaXplYGAuICBJZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzIGxhcmdlclxuICB0aGFuIGBgc3lzLm1heHNpemVgYCBhbiBgYE92ZXJmbG93RXJyb3JgYCBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKICAnc2xpY2luZ3MnOiAnXG5TbGljaW5nc1xuKioqKioqKipcblxuQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgYVxuc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yIGFzXG50YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgYGBkZWxgYCBzdGF0ZW1lbnRzLiAgVGhlIHN5bnRheCBmb3IgYVxuc2xpY2luZzpcblxuICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuICAgc2xpY2VfbGlzdCAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4gICBzbGljZV9pdGVtICAgOjo9IGV4cHJlc3Npb24gfCBwcm9wZXJfc2xpY2VcbiAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiBbc3RyaWRlXSBdXG4gICBsb3dlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuICAgc3RyaWRlICAgICAgIDo6PSBleHByZXNzaW9uXG5cblRoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0IGxvb2tzIGxpa2VcbmFuIGV4cHJlc3Npb24gbGlzdCBhbHNvIGxvb2tzIGxpa2UgYSBzbGljZSBsaXN0LCBzbyBhbnkgc3Vic2NyaXB0aW9uXG5jYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciBjb21wbGljYXRpbmcgdGhlXG5zeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbmludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHNsaWNpbmcgKHRoaXMgaXMgdGhlIGNhc2UgaWYgdGhlIHNsaWNlIGxpc3RcbmNvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG5cblRoZSBzZW1hbnRpY3MgZm9yIGEgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGVcbnRvIGEgbWFwcGluZyBvYmplY3QsIGFuZCBpdCBpcyBpbmRleGVkICh1c2luZyB0aGUgc2FtZVxuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kIGFzIG5vcm1hbCBzdWJzY3JpcHRpb24pIHdpdGggYSBrZXkgdGhhdCBpc1xuY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGxvbmVcbnNsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzIGFuXG5leHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyIHNsaWNlIGlzIGFcbnNsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIHdob3NlXG5gYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRoZVxuZXhwcmVzc2lvbnMgZ2l2ZW4gYXMgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIGFuZCBzdHJpZGUsXG5yZXNwZWN0aXZlbHksIHN1YnN0aXR1dGluZyBgYE5vbmVgYCBmb3IgbWlzc2luZyBleHByZXNzaW9ucy5cbicsCi0gJ3NwZWNpYWxhdHRycyc6ICdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlIGBgZGlyKClgYCBidWlsdC1pbiBmdW5jdGlvbi5cblxub2JqZWN0Ll9fZGljdF9fXG5cbiAgIEEgZGljdGlvbmFyeSBvciBvdGhlciBtYXBwaW5nIG9iamVjdCB1c2VkIHRvIHN0b3JlIGFuIG9iamVjdFwnc1xuICAgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzLlxuXG5pbnN0YW5jZS5fX2NsYXNzX19cblxuICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cblxuY2xhc3MuX19iYXNlc19fXG5cbiAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG5cbmNsYXNzLl9fbmFtZV9fXG5cbiAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAotICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYGBpZCh4KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBTZWUgYWxzbyB0aGUgKi1SKiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gIEEgbGlzdCBtdXN0IGJlXG4gICByZXR1cm5lZC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIEEgY2xhc3NcbmRlZmluaXRpb24gaXMgcmVhZCBpbnRvIGEgc2VwYXJhdGUgbmFtZXNwYWNlIGFuZCB0aGUgdmFsdWUgb2YgY2xhc3Ncbm5hbWUgaXMgYm91bmQgdG8gdGhlIHJlc3VsdCBvZiBgYHR5cGUobmFtZSwgYmFzZXMsIGRpY3QpYGAuXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gaXMgcmVhZCwgaWYgYSBjYWxsYWJsZSBgYG1ldGFjbGFzc2BgIGtleXdvcmRcbmFyZ3VtZW50IGlzIHBhc3NlZCBhZnRlciB0aGUgYmFzZXMgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24sIHRoZVxuY2FsbGFibGUgZ2l2ZW4gd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiBgYHR5cGUoKWBgLiAgSWYgb3RoZXIga2V5d29yZFxuYXJndW1lbnRzIGFyZSBwYXNzZWQsIHRoZXkgd2lsbCBhbHNvIGJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzLiAgVGhpc1xuYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlIHdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGVcbmNsYXNzIGNyZWF0aW9uIHByb2Nlc3M6XG5cbiogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLlxuXG4qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmcgdGhlXG4gIHJvbGUgb2YgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuXG5UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3NcJ3MgYGBfX25ld19fKClgYFxubWV0aG9kIC0tIGBgdHlwZS5fX25ld19fKClgYCBjYW4gdGhlbiBiZSBjYWxsZWQgZnJvbSB0aGlzIG1ldGhvZCB0b1xuY3JlYXRlIGEgY2xhc3Mgd2l0aCBkaWZmZXJlbnQgcHJvcGVydGllcy4gIFRoaXMgZXhhbXBsZSBhZGRzIGEgbmV3XG5lbGVtZW50IHRvIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGJlZm9yZSBjcmVhdGluZyB0aGUgY2xhc3M6XG5cbiAgIGNsYXNzIG1ldGFjbHModHlwZSk6XG4gICAgICAgZGVmIF9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdCk6XG4gICAgICAgICAgIGRpY3RbXCdmb29cJ10gPSBcJ21ldGFjbHMgd2FzIGhlcmVcJ1xuICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpXG5cbllvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkIG5ld1xubWV0aG9kcyk7IGZvciBleGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tIGBgX19jYWxsX18oKWBgIG1ldGhvZCBpbiB0aGVcbm1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tIGJlaGF2aW9yIHdoZW4gdGhlIGNsYXNzIGlzIGNhbGxlZCwgZS5nLiBub3RcbmFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSBgYF9fcHJlcGFyZV9fKClgYCBhdHRyaWJ1dGUgKHVzdWFsbHlcbmltcGxlbWVudGVkIGFzIGEgY2xhc3Mgb3Igc3RhdGljIG1ldGhvZCksIGl0IGlzIGNhbGxlZCBiZWZvcmUgdGhlXG5jbGFzcyBib2R5IGlzIGV2YWx1YXRlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBhbmQgYSB0dXBsZSBvZiBpdHNcbmJhc2VzIGZvciBhcmd1bWVudHMuICBJdCBzaG91bGQgcmV0dXJuIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHRoZVxubWFwcGluZyBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgdG8gc3RvcmUgdGhlIG5hbWVzcGFjZSBvZiB0aGVcbmNsYXNzLiAgVGhlIGRlZmF1bHQgaXMgYSBwbGFpbiBkaWN0aW9uYXJ5LiAgVGhpcyBjb3VsZCBiZSB1c2VkLCBmb3JcbmV4YW1wbGUsIHRvIGtlZXAgdHJhY2sgb2YgdGhlIG9yZGVyIHRoYXQgY2xhc3MgYXR0cmlidXRlcyBhcmUgZGVjbGFyZWRcbmluIGJ5IHJldHVybmluZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuXG5cblRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZCBieSB0aGUgZm9sbG93aW5nIHByZWNlZGVuY2VcbnJ1bGVzOlxuXG4qIElmIHRoZSBgYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaXMgcGFzc2VkIHdpdGggdGhlIGJhc2VzLCBpdFxuICBpcyB1c2VkLlxuXG4qIE90aGVyd2lzZSwgaWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGJhc2UgY2xhc3MsIGl0cyBtZXRhY2xhc3MgaXNcbiAgdXNlZC5cblxuKiBPdGhlcndpc2UsIHRoZSBkZWZhdWx0IG1ldGFjbGFzcyAoYGB0eXBlYGApIGlzIHVzZWQuXG5cblRoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyB0aGF0IGhhdmVcbmJlZW4gZXhwbG9yZWQgaW5jbHVkaW5nIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBjbGFzc2RpY3QpOlxuICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChjbGFzc2RpY3QpKVxuICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKGNsYXNzZGljdClcbiAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuXG4gICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcblxuICAgPj4+IEEubWVtYmVyc1xuICAgKFwnX19tb2R1bGVfX1wnLCBcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCcsIFwnZm91clwnKVxuXG5XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgYmVnaW5zXG53aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyBgYF9fcHJlcGFyZV9fKClgYCBtZXRob2Qgd2hpY2ggcmV0dXJucyBhblxuZW1wdHkgYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlIG1ldGhvZHNcbmFuZCBhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2xhc3NcbnN0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkIGRpY3Rpb25hcnlcbmlzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyBgYF9fbmV3X18oKWBgIG1ldGhvZCBnZXRzXG5pbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlIG9yZGVyZWRcbmRpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkIGBgbWVtYmVyc2BgLlxuXG5cbkN1c3RvbWl6aW5nIGluc3RhbmNlIGFuZCBzdWJjbGFzcyBjaGVja3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuYGBpc2luc3RhbmNlKClgYCBhbmQgYGBpc3N1YmNsYXNzKClgYCBidWlsdC1pbiBmdW5jdGlvbnMuXG5cbkluIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgYGBhYmMuQUJDTWV0YWBgIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kc1xuaW4gb3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcylgYC5cblxuY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG5cbiAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgIGBgaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpYGAuXG5cbk5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgKG1ldGFjbGFzcykgb2YgYVxuY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlIGFjdHVhbCBjbGFzcy5cblRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZFxub24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgY2xhc3MuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbiAgICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyBgYGlzaW5zdGFuY2UoKWBgIGFuZFxuICAgICAgYGBpc3N1YmNsYXNzKClgYCBiZWhhdmlvciB0aHJvdWdoIGBgX19pbnN0YW5jZWNoZWNrX18oKWBgIGFuZFxuICAgICAgYGBfX3N1YmNsYXNzY2hlY2tfXygpYGAsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5XG4gICAgICBpbiB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlIGBgYWJjYGBcbiAgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuXG5cbkVtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgdGhpcyBtZXRob2RcbiAgIGlzIGRlZmluZWQsIGBgeChhcmcxLCBhcmcyLCAuLi4pYGAgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICBgYHguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKWBgLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggYGAwIDw9IGsgPCBOYGBcbndoZXJlICpOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2hcbmRlZmluZSBhIHJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGVcbnRoZSBtZXRob2RzIGBga2V5cygpYGAsIGBgdmFsdWVzKClgYCwgYGBpdGVtcygpYGAsIGBgZ2V0KClgYCxcbmBgY2xlYXIoKWBgLCBgYHNldGRlZmF1bHQoKWBgLCBgYHBvcCgpYGAsIGBgcG9waXRlbSgpYGAsIGBgY29weSgpYGAsXG5hbmQgYGB1cGRhdGUoKWBgIGJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZFxuZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUgcHJvdmlkZXMgYVxuYGBNdXRhYmxlTWFwcGluZ2BgIGFic3RyYWN0IGJhc2UgY2xhc3MgdG8gaGVscCBjcmVhdGUgdGhvc2UgbWV0aG9kc1xuZnJvbSBhIGJhc2Ugc2V0IG9mIGBgX19nZXRpdGVtX18oKWBgLCBgYF9fc2V0aXRlbV9fKClgYCxcbmBgX19kZWxpdGVtX18oKWBgLCBhbmQgYGBrZXlzKClgYC4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgYGBhcHBlbmQoKWBgLCBgYGNvdW50KClgYCwgYGBpbmRleCgpYGAsIGBgZXh0ZW5kKClgYCxcbmBgaW5zZXJ0KClgYCwgYGBwb3AoKWBgLCBgYHJlbW92ZSgpYGAsIGBgcmV2ZXJzZSgpYGAgYW5kIGBgc29ydCgpYGAsXG5saWtlIFB5dGhvbiBzdGFuZGFyZCBsaXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGRcbmltcGxlbWVudCBhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmdcbnJlcGV0aXRpb24pIGJ5IGRlZmluaW5nIHRoZSBtZXRob2RzIGBgX19hZGRfXygpYGAsIGBgX19yYWRkX18oKWBgLFxuYGBfX2lhZGRfXygpYGAsIGBgX19tdWxfXygpYGAsIGBgX19ybXVsX18oKWBgIGFuZCBgYF9faW11bF9fKClgYFxuZGVzY3JpYmVkIGJlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdFxuaXMgcmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2NvbnRhaW5zX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSBgYGluYGBcbm9wZXJhdG9yOyBmb3IgbWFwcGluZ3MsIGBgaW5gYCBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvclxuc2VxdWVuY2VzLCBpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXJcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbmBgX19pdGVyX18oKWBgIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlXG5jb250YWluZXI7IGZvciBtYXBwaW5ncywgYGBfX2l0ZXJfXygpYGAgc2hvdWxkIGJlIHRoZSBzYW1lIGFzXG5gYGtleXMoKWBgOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZSB0aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYC4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciBgYD49YGAgMC4gIEFsc28sIGFuIG9iamVjdFxuICAgdGhhdCBkb2VzblwndCBkZWZpbmUgYSBgYF9fYm9vbF9fKClgYCBtZXRob2QgYW5kIHdob3NlIGBgX19sZW5fXygpYGBcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLiAgQVxuICBjYWxsIGxpa2VcblxuICAgICBhWzE6Ml0gPSBiXG5cbiAgaXMgdHJhbnNsYXRlZCB0b1xuXG4gICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuXG4gIGFuZCBzbyBmb3J0aC4gIE1pc3Npbmcgc2xpY2UgaXRlbXMgYXJlIGFsd2F5cyBmaWxsZWQgaW4gd2l0aFxuICBgYE5vbmVgYC5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mIGBgc2VsZltrZXldYGAuIEZvciBzZXF1ZW5jZVxuICAgdHlwZXMsIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy5cbiAgIE5vdGUgdGhhdCB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGVcbiAgIGNsYXNzIHdpc2hlcyB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlXG4gICBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuIElmICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSxcbiAgIGBgVHlwZUVycm9yYGAgbWF5IGJlIHJhaXNlZDsgaWYgb2YgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2ZcbiAgIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55IHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2ZcbiAgIG5lZ2F0aXZlIHZhbHVlcyksIGBgSW5kZXhFcnJvcmBgIHNob3VsZCBiZSByYWlzZWQuIEZvciBtYXBwaW5nXG4gICB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZSBjb250YWluZXIpLCBgYEtleUVycm9yYGBcbiAgIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6IGBgZm9yYGAgbG9vcHMgZXhwZWN0IHRoYXQgYW4gYGBJbmRleEVycm9yYGAgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mIGBgc2VsZltrZXldYGAuICBTYW1lIG5vdGUgYXMgZm9yXG4gICBgYF9fZ2V0aXRlbV9fKClgYC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSBgYF9fZ2V0aXRlbV9fKClgYFxuICAgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvIGJlIG1hZGVcbiAgIGF2YWlsYWJsZSBhcyB0aGUgbWV0aG9kIGBga2V5cygpYGAuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSAqSXRlcmF0b3IgVHlwZXMqLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSBgYF9fcmV2ZXJzZWRfXygpYGAgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlXG4gICBgYHJldmVyc2VkKClgYCBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2VcbiAgIHByb3RvY29sIChgYF9fbGVuX18oKWBgIGFuZCBgYF9fZ2V0aXRlbV9fKClgYCkuICBPYmplY3RzIHRoYXRcbiAgIHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sIHNob3VsZCBvbmx5IHByb3ZpZGVcbiAgIGBgX19yZXZlcnNlZF9fKClgYCBpZiB0aGV5IGNhbiBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIHRoYXQgaXNcbiAgIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieSBgYHJldmVyc2VkKClgYC5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKGBgaW5gYCBhbmQgYGBub3QgaW5gYCkgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lIGBgX19jb250YWluc19fKClgYCwgdGhlIG1lbWJlcnNoaXBcbiAgIHRlc3QgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSBgYF9faXRlcl9fKClgYCwgdGhlbiB0aGUgb2xkXG4gICBzZXF1ZW5jZSBpdGVyYXRpb24gcHJvdG9jb2wgdmlhIGBgX19nZXRpdGVtX18oKWBgLCBzZWUgKnRoaXNcbiAgIHNlY3Rpb24gaW4gdGhlIGxhbmd1YWdlIHJlZmVyZW5jZSouXG5cblxuRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgb2JqZWN0cy5cbk1ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlXG5wYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yXG5ub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuXG5vYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKGBgK2BgLCBgYC1gYCwgYGAqYGAsIGBgL2BgLCBgYC8vYGAsIGBgJWBgLFxuICAgYGBkaXZtb2QoKWBgLCBgYHBvdygpYGAsIGBgKipgYCwgYGA8PGBgLCBgYD4+YGAsIGBgJmBgLCBgYF5gYCxcbiAgIGBgfGBgKS4gIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4ICsgeWBgLCB3aGVyZVxuICAgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX2FkZF9fKClgYCBtZXRob2QsXG4gICBgYHguX19hZGRfXyh5KWBgIGlzIGNhbGxlZC4gIFRoZSBgYF9fZGl2bW9kX18oKWBgIG1ldGhvZCBzaG91bGQgYmVcbiAgIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nIGBgX19mbG9vcmRpdl9fKClgYCBhbmQgYGBfX21vZF9fKClgYDsgaXRcbiAgIHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byBgYF9fdHJ1ZWRpdl9fKClgYC4gIE5vdGUgdGhhdFxuICAgYGBfX3Bvd19fKClgYCBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW4gb3B0aW9uYWwgdGhpcmRcbiAgIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluIGBgcG93KClgYCBmdW5jdGlvblxuICAgaXMgdG8gYmUgc3VwcG9ydGVkLlxuXG4gICBJZiBvbmUgb2YgdGhvc2UgbWV0aG9kcyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gd2l0aCB0aGVcbiAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiBgYE5vdEltcGxlbWVudGVkYGAuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKSBvcGVyYW5kcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSBvbmx5XG4gICBjYWxsZWQgaWYgdGhlIGxlZnQgb3BlcmFuZCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjb3JyZXNwb25kaW5nXG4gICBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLiBbMl0gIEZvclxuICAgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uIGBgeCAtIHlgYCwgd2hlcmUgKnkqIGlzIGFuXG4gICBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19yc3ViX18oKWBgIG1ldGhvZCxcbiAgIGBgeS5fX3JzdWJfXyh4KWBgIGlzIGNhbGxlZCBpZiBgYHguX19zdWJfXyh5KWBgIHJldHVybnNcbiAgICpOb3RJbXBsZW1lbnRlZCouXG5cbiAgIE5vdGUgdGhhdCB0ZXJuYXJ5IGBgcG93KClgYCB3aWxsIG5vdCB0cnkgY2FsbGluZyBgYF9fcnBvd19fKClgYFxuICAgKHRoZSBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZCBmb3IgdGhlXG4gICAgIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0IG9wZXJhbmRcJ3NcbiAgICAgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzIHRvXG4gICAgIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzIChgYCs9YGAsIGBgLT1gYCwgYGAqPWBgLCBgYC89YGAsIGBgLy89YGAsIGBgJT1gYCxcbiAgIGBgKio9YGAsIGBgPDw9YGAsIGBgPj49YGAsIGBgJj1gYCwgYGBePWBgLCBgYHw9YGApLiAgVGhlc2UgbWV0aG9kc1xuICAgc2hvdWxkIGF0dGVtcHQgdG8gZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kXG4gICByZXR1cm4gdGhlIHJlc3VsdCAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLFxuICAgKnNlbGYqKS4gIElmIGEgc3BlY2lmaWMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkXG4gICBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0b1xuICAgZXhlY3V0ZSB0aGUgc3RhdGVtZW50IGBgeCArPSB5YGAsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2lhZGRfXyh5KWBgIGlzXG4gICBjYWxsZWQuICBJZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGRvZXMgbm90IGRlZmluZSBhXG4gICBgYF9faWFkZF9fKClgYCBtZXRob2QsIGBgeC5fX2FkZF9fKHkpYGAgYW5kIGBgeS5fX3JhZGRfXyh4KWBgIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiBgYHggKyB5YGAuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoYGAtYGAsIGBgK2BgLFxuICAgYGBhYnMoKWBgIGFuZCBgYH5gYCkuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgYGBjb21wbGV4KClgYCxcbiAgIGBgaW50KClgYCwgYGBmbG9hdCgpYGAgYW5kIGBgcm91bmQoKWBgLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mXG4gICB0aGUgYXBwcm9wcmlhdGUgdHlwZS5cblxub2JqZWN0Ll9faW5kZXhfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGBgb3BlcmF0b3IuaW5kZXgoKWBgLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGVcbiAgIGJ1aWx0LWluIGBgYmluKClgYCwgYGBoZXgoKWBgIGFuZCBgYG9jdCgpYGAgZnVuY3Rpb25zKS4gTXVzdCByZXR1cm5cbiAgIGFuIGludGVnZXIuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSBgYHdpdGhgYCBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0XG5tYW5hZ2VyIGhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lXG5jb250ZXh0IGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmVcbm5vcm1hbGx5IGludm9rZWQgdXNpbmcgdGhlIGBgd2l0aGBgIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb25cbipUaGUgd2l0aCBzdGF0ZW1lbnQqKSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXJcbm1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIGBgd2l0aGBgXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlIGBgYXNgYCBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSBgYE5vbmVgYC5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgYGBfX2V4aXRfXygpYGAgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAwMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvblxuICAgICAgYGB3aXRoYGAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cFxuPT09PT09PT09PT09PT09PT09PT09XG5cbkZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzIGFyZSBvbmx5XG5ndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0XCdzIHR5cGUsIG5vdCBpblxudGhlIG9iamVjdFwncyBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgVGhhdCBiZWhhdmlvdXIgaXMgdGhlIHJlYXNvbiB3aHlcbnRoZSBmb2xsb3dpbmcgY29kZSByYWlzZXMgYW4gZXhjZXB0aW9uOlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgcGFzc1xuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXyA9IGxhbWJkYTogNVxuICAgPj4+IGxlbihjKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBvYmplY3Qgb2YgdHlwZSBcJ0NcJyBoYXMgbm8gbGVuKClcblxuVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mIHNwZWNpYWxcbm1ldGhvZHMgc3VjaCBhcyBgYF9faGFzaF9fKClgYCBhbmQgYGBfX3JlcHJfXygpYGAgdGhhdCBhcmUgaW1wbGVtZW50ZWRcbmJ5IGFsbCBvYmplY3RzLCBpbmNsdWRpbmcgdHlwZSBvYmplY3RzLiBJZiB0aGUgaW1wbGljaXQgbG9va3VwIG9mXG50aGVzZSBtZXRob2RzIHVzZWQgdGhlIGNvbnZlbnRpb25hbCBsb29rdXAgcHJvY2VzcywgdGhleSB3b3VsZCBmYWlsXG53aGVuIGludm9rZWQgb24gdGhlIHR5cGUgb2JqZWN0IGl0c2VsZjpcblxuICAgPj4+IDEgLl9faGFzaF9fKCkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IGludC5fX2hhc2hfXygpID09IGhhc2goaW50KVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPlxuICAgVHlwZUVycm9yOiBkZXNjcmlwdG9yIFwnX19oYXNoX19cJyBvZiBcJ2ludFwnIG9iamVjdCBuZWVkcyBhbiBhcmd1bWVudFxuXG5JbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhIGNsYXNzIGluIHRoaXNcbndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgXCdtZXRhY2xhc3MgY29uZnVzaW9uXCcsIGFuZCBpcyBhdm9pZGVkXG5ieSBieXBhc3NpbmcgdGhlIGluc3RhbmNlIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHM6XG5cbiAgID4+PiB0eXBlKDEpLl9faGFzaF9fKDEpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiB0eXBlKGludCkuX19oYXNoX18oaW50KSA9PSBoYXNoKGludClcbiAgIFRydWVcblxuSW4gYWRkaXRpb24gdG8gYnlwYXNzaW5nIGFueSBpbnN0YW5jZSBhdHRyaWJ1dGVzIGluIHRoZSBpbnRlcmVzdCBvZlxuY29ycmVjdG5lc3MsIGltcGxpY2l0IHNwZWNpYWwgbWV0aG9kIGxvb2t1cCBnZW5lcmFsbHkgYWxzbyBieXBhc3Nlc1xudGhlIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyBtZXRhY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuICAgLi4uICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICBwcmludCgiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICByZXR1cm4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKTpcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQoIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIilcbiAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIGluc3RhbmNlXG4gICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhIHR5cGVcbiAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuICAgMTBcbiAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbiAgIDEwXG5cbkJ5cGFzc2luZyB0aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uXG5wcm92aWRlcyBzaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlXG5pbnRlcnByZXRlciwgYXQgdGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2ZcbnNwZWNpYWwgbWV0aG9kcyAodGhlIHNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdFxuaXRzZWxmIGluIG9yZGVyIHRvIGJlIGNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSwgdW5kZXJcbiAgICBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2QgaWRlYVxuICAgIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmIGl0IGlzXG4gICAgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzIGBgX19hZGRfXygpYGApIGZhaWxzIHRoZSBvcGVyYXRpb24gaXNcbiAgICBub3Qgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90IGNhbGxlZC5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogJ1xuU3RyaW5nIE1ldGhvZHNcbioqKioqKioqKioqKioqXG5cblN0cmluZyBvYmplY3RzIHN1cHBvcnQgdGhlIG1ldGhvZHMgbGlzdGVkIGJlbG93LlxuXG5JbiBhZGRpdGlvbiwgUHl0aG9uXCdzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTZXF1ZW5jZSBUeXBlcyAtLS0gc3RyLCBieXRlcywgYnl0ZWFycmF5LCBsaXN0LFxudHVwbGUsIHJhbmdlKiBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgKlN0cmluZ1xuRm9ybWF0dGluZyogc2VjdGlvbi4gQWxzbywgc2VlIHRoZSBgYHJlYGAgbW9kdWxlIGZvciBzdHJpbmcgZnVuY3Rpb25zXG5iYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGEgc3BhY2UpLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudFxuICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgYGBcJ3N0cmljdFwnYGAsXG4gICBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgYGBVbmljb2RlRXJyb3JgYC4gT3RoZXJcbiAgIHBvc3NpYmxlIHZhbHVlcyBhcmUgYGBcJ2lnbm9yZVwnYGAsIGBgXCdyZXBsYWNlXCdgYCxcbiAgIGBgXCd4bWxjaGFycmVmcmVwbGFjZVwnYGAsIGBgXCdiYWNrc2xhc2hyZXBsYWNlXCdgYCBhbmQgYW55IG90aGVyIG5hbWVcbiAgIHJlZ2lzdGVyZWQgdmlhIGBgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKClgYCwgc2VlIHNlY3Rpb24gKkNvZGVjIEJhc2VcbiAgIENsYXNzZXMqLiBGb3IgYSBsaXN0IG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gKlN0YW5kYXJkXG4gICBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICpzdWZmaXgqLFxuICAgb3RoZXJ3aXNlIHJldHVybiBgYEZhbHNlYGAuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mXG4gICBzdWZmaXhlcyB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXRcbiAgIHRoYXQgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLmV4cGFuZHRhYnMoW3RhYnNpemVdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIHRhYiBjaGFyYWN0ZXJzIGFyZSByZXBsYWNlZFxuICAgYnkgemVybyBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRoZSBjb2x1bW4gbnVtYmVyIGlzIHJlc2V0IHRvIHplcm8gYWZ0ZXIgZWFjaFxuICAgbmV3bGluZSBvY2N1cnJpbmcgaW4gdGhlIHN0cmluZy4gSWYgKnRhYnNpemUqIGlzIG5vdCBnaXZlbiwgYSB0YWJcbiAgIHNpemUgb2YgYGA4YGAgY2hhcmFjdGVycyBpcyBhc3N1bWVkLiAgVGhpcyBkb2VzblwndCB1bmRlcnN0YW5kIG90aGVyXG4gICBub24tcHJpbnRpbmcgY2hhcmFjdGVycyBvciBlc2NhcGUgc2VxdWVuY2VzLlxuXG5zdHIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgaW4gdGhlIHNsaWNlIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgaWYgKnN1YiogaXMgbm90IGZvdW5kLlxuXG4gICBOb3RlOiBUaGUgYGBmaW5kKClgYCBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93IHRoZVxuICAgICBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCwgdXNlXG4gICAgIHRoZSBgYGluYGAgb3BlcmF0b3I6XG5cbiAgICAgICAgPj4+IFwnUHlcJyBpbiBcJ1B5dGhvblwnXG4gICAgICAgIFRydWVcblxuc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG5cbiAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uIHdoaWNoIHRoaXNcbiAgIG1ldGhvZCBpcyBjYWxsZWQgY2FuIGNvbnRhaW4gbGl0ZXJhbCB0ZXh0IG9yIHJlcGxhY2VtZW50IGZpZWxkc1xuICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyBgYHt9YGAuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkIGNvbnRhaW5zIGVpdGhlclxuICAgdGhlIG51bWVyaWMgaW5kZXggb2YgYSBwb3NpdGlvbmFsIGFyZ3VtZW50LCBvciB0aGUgbmFtZSBvZiBhXG4gICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBlYWNoXG4gICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4gICBjb3JyZXNwb25kaW5nIGFyZ3VtZW50LlxuXG4gICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuICAgXCdUaGUgc3VtIG9mIDEgKyAyIGlzIDNcJ1xuXG4gICBTZWUgKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuc3RyLmZvcm1hdF9tYXAobWFwcGluZylcblxuICAgU2ltaWxhciB0byBgYHN0ci5mb3JtYXQoKiptYXBwaW5nKWBgLCBleGNlcHQgdGhhdCBgYG1hcHBpbmdgYCBpc1xuICAgdXNlZCBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhIGBgZGljdGBgIC4gIFRoaXMgaXMgdXNlZnVsIGlmIGZvclxuICAgZXhhbXBsZSBgYG1hcHBpbmdgYCBpcyBhIGRpY3Qgc3ViY2xhc3M6XG5cbiAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBrZXlcbiAgIC4uLlxuICAgPj4+IFwne25hbWV9IHdhcyBib3JuIGluIHtjb3VudHJ5fVwnLmZvcm1hdF9tYXAoRGVmYXVsdChuYW1lPVwnR3VpZG9cJykpXG4gICBcJ0d1aWRvIHdhcyBib3JuIGluIGNvdW50cnlcJ1xuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnN0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgZmluZCgpYGAsIGJ1dCByYWlzZSBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90XG4gICBmb3VuZC5cblxuc3RyLmlzYWxudW0oKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYW51bWVyaWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBIGNoYXJhY3RlclxuICAgYGBjYGAgaXMgYWxwaGFudW1lcmljIGlmIG9uZSBvZiB0aGUgZm9sbG93aW5nIHJldHVybnMgYGBUcnVlYGA6XG4gICBgYGMuaXNhbHBoYSgpYGAsIGBgYy5pc2RlY2ltYWwoKWBgLCBgYGMuaXNkaWdpdCgpYGAsIG9yXG4gICBgYGMuaXNudW1lcmljKClgYC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gYGByZXByKClgYCBpc1xuICAgaW52b2tlZCBvbiBhIHN0cmluZy4gIEl0IGhhcyBubyBiZWFyaW5nIG9uIHRoZSBoYW5kbGluZyBvZiBzdHJpbmdzXG4gICB3cml0dGVuIHRvIGBgc3lzLnN0ZG91dGBgIG9yIGBgc3lzLnN0ZGVycmBgLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSBgYFR5cGVFcnJvcmBgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZVxuICAgYW55IG5vbi1zdHJpbmcgdmFsdWVzIGluICppdGVyYWJsZSosIGluY2x1ZGluZyBgYGJ5dGVzYGAgb2JqZWN0cy5cbiAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyB0aGlzIG1ldGhvZC5cblxuc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiAgVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuc3RyLmxzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgcmVtb3ZlZC4gIFRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0byBiZVxuICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgc3RyLnRyYW5zbGF0ZSgpYGAuXG5cbiAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSBtYXBwaW5nXG4gICBVbmljb2RlIG9yZGluYWxzIChpbnRlZ2Vycykgb3IgY2hhcmFjdGVycyAoc3RyaW5ncyBvZiBsZW5ndGggMSkgdG9cbiAgIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3MgKG9mIGFyYml0cmFyeSBsZW5ndGhzKSBvciBOb25lLlxuICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cblxuICAgSWYgdGhlcmUgYXJlIHR3byBhcmd1bWVudHMsIHRoZXkgbXVzdCBiZSBzdHJpbmdzIG9mIGVxdWFsIGxlbmd0aCxcbiAgIGFuZCBpbiB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnksIGVhY2ggY2hhcmFjdGVyIGluIHggd2lsbCBiZSBtYXBwZWRcbiAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlIGlzIGEgdGhpcmRcbiAgIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgc3RyaW5nLCB3aG9zZSBjaGFyYWN0ZXJzIHdpbGwgYmUgbWFwcGVkIHRvXG4gICBOb25lIGluIHRoZSByZXN1bHQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbnN0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpvbGQqXG4gICByZXBsYWNlZCBieSAqbmV3Ki4gIElmIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqY291bnQqIGlzIGdpdmVuLCBvbmx5XG4gICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG5cbnN0ci5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiBgYHNbc3RhcnQ6ZW5kXWBgLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gYGAtMWBgIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSBgYHJmaW5kKClgYCBidXQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKlxuICAgaXMgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIucnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgZm9sbG93ZWQgYnlcbiAgIHRoZSBzdHJpbmcgaXRzZWxmLlxuXG5zdHIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KiBzcGxpdHNcbiAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3JcbiAgIGBgTm9uZWBgLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yXG4gICBzcGxpdHRpbmcgZnJvbSB0aGUgcmlnaHQsIGBgcnNwbGl0KClgYCBiZWhhdmVzIGxpa2UgYGBzcGxpdCgpYGBcbiAgIHdoaWNoIGlzIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgIFwnICAgc3BhY2lvdXNcJ1xuICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gbGltaXRcbiAgIG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzIGFyZSBtYWRlKS5cblxuICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCBncm91cGVkIHRvZ2V0aGVyXG4gICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuICAgYGBcJzEsLDJcJy5zcGxpdChcJyxcJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJ1wnLCBcJzJcJ11gYCkuICBUaGUgKnNlcCpcbiAgIGFyZ3VtZW50IG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgYGBcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgKS4gU3BsaXR0aW5nXG4gICBhbiBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyBgYFtcJ1wnXWBgLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzIGBgTm9uZWBgLCBhIGRpZmZlcmVudCBzcGxpdHRpbmdcbiAgIGFsZ29yaXRobSBpcyBhcHBsaWVkOiBydW5zIG9mIGNvbnNlY3V0aXZlIHdoaXRlc3BhY2UgYXJlIHJlZ2FyZGVkXG4gICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyBlbXB0eSBzdHJpbmdzXG4gICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbiAgIHdoaXRlc3BhY2UuICBDb25zZXF1ZW50bHksIHNwbGl0dGluZyBhbiBlbXB0eSBzdHJpbmcgb3IgYSBzdHJpbmdcbiAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSBgYE5vbmVgYCBzZXBhcmF0b3IgcmV0dXJuc1xuICAgYGBbXWBgLlxuXG4gICBGb3IgZXhhbXBsZSwgYGBcJyAxICAyICAgMyAgXCcuc3BsaXQoKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCxcbiAgIGFuZCBgYFwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSlgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzIgICAzICBcJ11gYC5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZVxuICAgcmV0dXJuIGBgRmFsc2VgYC4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rXG4gICBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIHJlbW92aW5nIHdoaXRlc3BhY2UuIFRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzXG4gICB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnN0cmlwKClcbiAgIFwnc3BhY2lvdXNcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcuc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZVwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgYGxlbihzKWBgLlxuJywKLSAnc3RyaW5ncyc6ICdcblN0cmluZyBhbmQgQnl0ZXMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgIlIiXG4gICBzaG9ydHN0cmluZyAgICAgOjo9ICJcJyIgc2hvcnRzdHJpbmdpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuICAgbG9uZ3N0cmluZyAgICAgIDo6PSAiXCdcJ1wnIiBsb25nc3RyaW5naXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIHN0cmluZ2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IHNvdXJjZSBjaGFyYWN0ZXI+XG5cbiAgIGJ5dGVzbGl0ZXJhbCAgIDo6PSBieXRlc3ByZWZpeChzaG9ydGJ5dGVzIHwgbG9uZ2J5dGVzKVxuICAgYnl0ZXNwcmVmaXggICAgOjo9ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbmxldHRlciBgYFwnclwnYGAgb3IgYGBcJ1JcJ2BgOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZFxudHJlYXQgYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZ1xubGl0ZXJhbHMsIGBgXCdcXFVcJ2BgIGFuZCBgYFwnXFx1XCdgYCBlc2NhcGVzIGluIHJhdyBzdHJpbmdzIGFyZSBub3QgdHJlYXRlZFxuc3BlY2lhbGx5LlxuXG5JbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkXG4oYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbnRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiB0aGVcbnN0cmluZywgaS5lLiBlaXRoZXIgYGBcJ2BgIG9yIGBgImBgLilcblxuVW5sZXNzIGFuIGBgXCdyXCdgYCBvciBgYFwnUlwnYGAgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgaW5cbnN0cmluZ3MgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvIHRob3NlIHVzZWQgYnlcblN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcbmV3bGluZWBgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFxcYGAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoYGBcXGBgKSAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXFwnYGAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoYGBcJ2BgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXCJgYCAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlIChgYCJgYCkgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxhYGAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcYmBgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGZgYCAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxuYGAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxccmBgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHRgYCAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx2YGAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcb29vYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAoMSwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHhoaGBgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgKDIsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbkVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcXE57bmFtZX1gYCAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFx1eHh4eGBgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcVXh4eHh4eHh4YGAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlIGJ5dGVcbiAgIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzIGRlbm90ZSBhXG4gICBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cblxuNC4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG41LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKKyAnc3BlY2lhbGF0dHJzJzogJ1xuU3BlY2lhbCBBdHRyaWJ1dGVzXG4qKioqKioqKioqKioqKioqKipcblxuVGhlIGltcGxlbWVudGF0aW9uIGFkZHMgYSBmZXcgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byBzZXZlcmFsXG5vYmplY3QgdHlwZXMsIHdoZXJlIHRoZXkgYXJlIHJlbGV2YW50LiAgU29tZSBvZiB0aGVzZSBhcmUgbm90IHJlcG9ydGVkXG5ieSB0aGUgYGBkaXIoKWBgIGJ1aWx0LWluIGZ1bmN0aW9uLlxuXG5vYmplY3QuX19kaWN0X19cblxuICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gb2JqZWN0XCdzXG4gICAod3JpdGFibGUpIGF0dHJpYnV0ZXMuXG5cbmluc3RhbmNlLl9fY2xhc3NfX1xuXG4gICBUaGUgY2xhc3MgdG8gd2hpY2ggYSBjbGFzcyBpbnN0YW5jZSBiZWxvbmdzLlxuXG5jbGFzcy5fX2Jhc2VzX19cblxuICAgVGhlIHR1cGxlIG9mIGJhc2UgY2xhc3NlcyBvZiBhIGNsYXNzIG9iamVjdC5cblxuY2xhc3MuX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIG9yIHR5cGUuXG5cbmNsYXNzLl9fcXVhbG5hbWVfX1xuXG4gICBUaGUgKnF1YWxpZmllZCBuYW1lKiBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5jbGFzcy5fX21yb19fXG5cbiAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkIHdoZW5cbiAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG5cbmNsYXNzLm1ybygpXG5cbiAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSB0aGVcbiAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkIGF0IGNsYXNzXG4gICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gYGBfX21yb19fYGAuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kIGluXG4gICAgdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgYGBbMSwgMl1gYCBpcyBjb25zaWRlcmVkIGVxdWFsIHRvXG4gICAgYGBbMS4wLCAyLjBdYGAsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHkgYmVpbmdcbiAgICBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksIG9yICJMdCJcbiAgICAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGEgc2luZ2xldG9uXG4gICAgdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgYGBfX2dldGl0ZW1fXygpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzXG5jbGFzcywgdGhlbiBgYHhbaV1gYCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gYGB0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsXG5pKWBgLiAgRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2VcbmFuIGV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbmBgQXR0cmlidXRlRXJyb3JgYCBvciBgYFR5cGVFcnJvcmBgKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG5gYE5vZGVMaXN0YGAgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICBgYF9fbmV3X18oKWBgIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mIGBgX19uZXdfXygpYGAgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5XG4gICBhbiBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIHVzaW5nXG4gICBgYHN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pYGAgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyBgYF9faW5pdF9fKClgYCBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgIGBgX19pbml0X18oc2VsZlssIC4uLl0pYGAsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAuXG5cbiAgIElmIGBgX19uZXdfXygpYGAgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzIGBgX19pbml0X18oKWBgIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICBgYF9fbmV3X18oKWBgIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBjcmVhdGVkLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgIGBgX19pbml0X18oKWBgIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgYGBfX2luaXRfXygpYGAgbWV0aG9kLFxuICAgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mXG4gICB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICBgYEJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pYGAuICBBcyBhIHNwZWNpYWwgY29uc3RyYWludFxuICAgb24gY29uc3RydWN0b3JzLCBubyB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQ7IGRvaW5nIHNvIHdpbGwgY2F1c2UgYVxuICAgYGBUeXBlRXJyb3JgYCB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSBgYF9fZGVsX18oKWBgIG1ldGhvZCxcbiAgIHRoZSBkZXJpdmVkIGNsYXNzXCdzIGBgX19kZWxfXygpYGAgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseVxuICAgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlXG4gICBpbnN0YW5jZS4gIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvclxuICAgdGhlIGBgX19kZWxfXygpYGAgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgIGBgX19kZWxfXygpYGAgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiBgYGRlbCB4YGAgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCBgYHguX19kZWxfXygpYGAgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciBgYHhgYCBieSBvbmUsIGFuZCB0aGUgbGF0dGVyXG4gICAgIGlzIG9ubHkgY2FsbGVkIHdoZW4gYGB4YGBcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWVcbiAgICAgY29tbW9uIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuXG4gICAgIG9iamVjdCBmcm9tIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuXG4gICAgIG9iamVjdHMgKGUuZy4sIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoXG4gICAgIHBhcmVudCBhbmQgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZVxuICAgICBzdGFjayBmcmFtZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFja1xuICAgICBzdG9yZWQgaW4gYGBzeXMuZXhjX2luZm8oKVsyXWBgIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yXG4gICAgIGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuXG4gICAgIHVuaGFuZGxlZCBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYCBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgYGBOb25lYGAgaW5cbiAgICAgYGBzeXMubGFzdF90cmFjZWJhY2tgYC4gQ2lyY3VsYXIgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmVcbiAgICAgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzIGVuYWJsZWQgKGl0XCdzIG9uIGJ5XG4gICAgIGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZSBhcmUgbm8gUHl0aG9uLVxuICAgICBsZXZlbCBgYF9fZGVsX18oKWBgIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uXG4gICAgIGZvciB0aGUgYGBnY2BgIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBob3dcbiAgICAgYGBfX2RlbF9fKClgYCBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbiAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgYGBnYXJiYWdlYGAgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZyB0aGVpciBleGVjdXRpb25cbiAgICAgYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0byBgYHN5cy5zdGRlcnJgYCBpbnN0ZWFkLlxuICAgICBBbHNvLCB3aGVuIGBgX19kZWxfXygpYGAgaXMgaW52b2tlZCBpbiByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZ1xuICAgICBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXJcbiAgICAgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlXG4gICAgIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyB0b3JuIGRvd24gKGUuZy4gdGhlXG4gICAgIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpcyByZWFzb24sIGBgX19kZWxfXygpYGBcbiAgICAgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkIHRvIG1haW50YWluXG4gICAgIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LCBQeXRob25cbiAgICAgZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBpcyBjYWxsZWQuXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlIGBgcmVwcigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGVcbiAgICJvZmZpY2lhbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSxcbiAgIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZFxuICAgdG8gcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgIGBgPC4uLnNvbWUgdXNlZnVsIGRlc2NyaXB0aW9uLi4uPmBgIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyBgYF9fcmVwcl9fKClgYFxuICAgYnV0IG5vdCBgYF9fc3RyX18oKWBgLCB0aGVuIGBgX19yZXByX18oKWBgIGlzIGFsc28gdXNlZCB3aGVuIGFuXG4gICAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpc1xuICAgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYHN0cigpYGAgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSBgYHByaW50KClgYFxuICAgZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW5cbiAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tIGBgX19yZXByX18oKWBgIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZVxuICAgdG8gYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2J5dGVzX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IGBgYnl0ZXMoKWBgIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSBgYGJ5dGVzYGAgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSBgYGZvcm1hdCgpYGAgYnVpbHQtaW4gZnVuY3Rpb24gKGFuZCBieSBleHRlbnNpb24sIHRoZVxuICAgYGBmb3JtYXQoKWBgIG1ldGhvZCBvZiBjbGFzcyBgYHN0cmBgKSB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXNcbiAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cFxuICAgdG8gdGhlIHR5cGUgaW1wbGVtZW50aW5nIGBgX19mb3JtYXRfXygpYGAsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzXG4gICB3aWxsIGVpdGhlciBkZWxlZ2F0ZSBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yXG4gICB1c2UgYSBzaW1pbGFyIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cblxuICAgU2VlICpGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlKiBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGVcbiAgIHN0YW5kYXJkIGZvcm1hdHRpbmcgc3ludGF4LlxuXG4gICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6IGBgeDx5YGAgY2FsbHMgYGB4Ll9fbHRfXyh5KWBgLCBgYHg8PXlgYCBjYWxsc1xuICAgYGB4Ll9fbGVfXyh5KWBgLCBgYHg9PXlgYCBjYWxscyBgYHguX19lcV9fKHkpYGAsIGBgeCE9eWBgIGNhbGxzXG4gICBgYHguX19uZV9fKHkpYGAsIGBgeD55YGAgY2FsbHMgYGB4Ll9fZ3RfXyh5KWBgLCBhbmQgYGB4Pj15YGAgY2FsbHNcbiAgIGBgeC5fX2dlX18oeSlgYC5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvblxuICAgYGBOb3RJbXBsZW1lbnRlZGBgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhXG4gICBnaXZlbiBwYWlyIG9mIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgYGBGYWxzZWBgIGFuZCBgYFRydWVgYCBhcmVcbiAgIHJldHVybmVkIGZvciBhIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW5cbiAgIHJldHVybiBhbnkgdmFsdWUsIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYVxuICAgQm9vbGVhbiBjb250ZXh0IChlLmcuLCBpbiB0aGUgY29uZGl0aW9uIG9mIGFuIGBgaWZgYCBzdGF0ZW1lbnQpLFxuICAgUHl0aG9uIHdpbGwgY2FsbCBgYGJvb2woKWBgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdFxuICAgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMuXG4gICBUaGUgdHJ1dGggb2YgYGB4PT15YGAgZG9lcyBub3QgaW1wbHkgdGhhdCBgYHghPXlgYCBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nIGBgX19lcV9fKClgYCwgb25lIHNob3VsZCBhbHNvIGRlZmluZVxuICAgYGBfX25lX18oKWBgIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyBleHBlY3RlZC4gIFNlZVxuICAgdGhlIHBhcmFncmFwaCBvbiBgYF9faGFzaF9fKClgYCBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgYGBfX2x0X18oKWBgIGFuZCBgYF9fZ3RfXygpYGAgYXJlIGVhY2hcbiAgIG90aGVyXCdzIHJlZmxlY3Rpb24sIGBgX19sZV9fKClgYCBhbmQgYGBfX2dlX18oKWBgIGFyZSBlYWNoIG90aGVyXCdzXG4gICByZWZsZWN0aW9uLCBhbmQgYGBfX2VxX18oKWBgIGFuZCBgYF9fbmVfXygpYGAgYXJlIHRoZWlyIG93blxuICAgcmVmbGVjdGlvbi5cblxuICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuXG4gICBUbyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290XG4gICBvcGVyYXRpb24sIHNlZSBgYGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpYGAuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gYGBoYXNoKClgYCBhbmQgZm9yIG9wZXJhdGlvbnMgb25cbiAgIG1lbWJlcnMgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyBgYHNldGBgLCBgYGZyb3plbnNldGBgLCBhbmRcbiAgIGBgZGljdGBgLiAgYGBfX2hhc2hfXygpYGAgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHlcbiAgIHJlcXVpcmVkIHByb3BlcnR5IGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWVcbiAgIGhhc2ggdmFsdWU7IGl0IGlzIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmdcbiAgIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXRcbiAgIGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhbiBgYF9fZXFfXygpYGAgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhIGBgX19oYXNoX18oKWBgIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXNcbiAgIGBgX19lcV9fKClgYCBidXQgbm90IGBgX19oYXNoX18oKWBgLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlXG4gICB1c2FibGUgYXMgaXRlbXMgaW4gaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG11dGFibGUgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhbiBgYF9fZXFfXygpYGAgbWV0aG9kLCBpdCBzaG91bGRcbiAgIG5vdCBpbXBsZW1lbnQgYGBfX2hhc2hfXygpYGAsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZVxuICAgY29sbGVjdGlvbnMgcmVxdWlyZXMgdGhhdCBhIGtleVwncyBoYXNoIHZhbHVlIGlzIGltbXV0YWJsZSAoaWYgdGhlXG4gICBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG5cbiAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgYGBfX2VxX18oKWBgIGFuZCBgYF9faGFzaF9fKClgYCBtZXRob2RzXG4gICBieSBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCBgYHguX19oYXNoX18oKWBgIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgdmFsdWUgc3VjaFxuICAgdGhhdCBgYHggPT0geWBgIGltcGxpZXMgYm90aCB0aGF0IGBgeCBpcyB5YGAgYW5kIGBgaGFzaCh4KSA9PVxuICAgaGFzaCh5KWBgLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSBgYF9faGFzaF9fKClgYCBtZXRob2QgZnJvbSBhIHBhcmVudCBjbGFzc1xuICAgYnV0IGNoYW5nZSB0aGUgbWVhbmluZyBvZiBgYF9fZXFfXygpYGAgc3VjaCB0aGF0IHRoZSBoYXNoIHZhbHVlXG4gICByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgc3dpdGNoaW5nIHRvIGEgdmFsdWUtXG4gICBiYXNlZCBjb25jZXB0IG9mIGVxdWFsaXR5IGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgaWRlbnRpdHkgYmFzZWRcbiAgIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgdW5oYXNoYWJsZSBieVxuICAgc2V0dGluZyBgYF9faGFzaF9fID0gTm9uZWBgIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiBEb2luZyBzbyBtZWFuc1xuICAgdGhhdCBub3Qgb25seSB3aWxsIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MgcmFpc2UgYW4gYXBwcm9wcmlhdGVcbiAgIGBgVHlwZUVycm9yYGAgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSxcbiAgIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhcyB1bmhhc2hhYmxlIHdoZW5cbiAgIGNoZWNraW5nIGBgaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKWBgICh1bmxpa2UgY2xhc3Nlc1xuICAgd2hpY2ggZGVmaW5lIHRoZWlyIG93biBgYF9faGFzaF9fKClgYCB0byBleHBsaWNpdGx5IHJhaXNlXG4gICBgYFR5cGVFcnJvcmBgKS5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyBgYF9fZXFfXygpYGAgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgYGBfX2hhc2hfXygpYGAgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlXG4gICBpbnRlcnByZXRlciBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgYGBfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fYGAuIE90aGVyd2lzZSB0aGUgaW5oZXJpdGFuY2Ugb2ZcbiAgIGBgX19oYXNoX18oKWBgIHdpbGwgYmUgYmxvY2tlZCwganVzdCBhcyBpZiBgYF9faGFzaF9fYGAgaGFkIGJlZW5cbiAgIGV4cGxpY2l0bHkgc2V0IHRvIGBgTm9uZWBgLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgYGBfX2hhc2hfXygpYGAgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lXG4gICAgIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gYGBQWVRIT05IQVNIU0VFRGBgLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSBkZWZhdWx0LlxuXG5vYmplY3QuX19ib29sX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICBgYGJvb2woKWBgOyBzaG91bGQgcmV0dXJuIGBgRmFsc2VgYCBvciBgYFRydWVgYC4gIFdoZW4gdGhpcyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCBgYF9fbGVuX18oKWBgIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZVxuICAgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzXG4gICBkZWZpbmVzIG5laXRoZXIgYGBfX2xlbl9fKClgYCBub3IgYGBfX2Jvb2xfXygpYGAsIGFsbCBpdHMgaW5zdGFuY2VzXG4gICBhcmUgY29uc2lkZXJlZCB0cnVlLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiBgYHgubmFtZWBgKVxuZm9yIGNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgYGBzZWxmYGApLiAgYGBuYW1lYGAgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2VcbiAgIGFuIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICBgYF9fZ2V0YXR0cl9fKClgYCBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4gICBiZXR3ZWVuIGBgX19nZXRhdHRyX18oKWBgIGFuZCBgYF9fc2V0YXR0cl9fKClgYC4pIFRoaXMgaXMgZG9uZSBib3RoXG4gICBmb3IgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSBgYF9fZ2V0YXR0cl9fKClgYFxuICAgd291bGQgaGF2ZSBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgTm90ZVxuICAgdGhhdCBhdCBsZWFzdCBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCB5b3UgY2FuIGZha2UgdG90YWwgY29udHJvbCBieVxuICAgbm90IGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgZGljdGlvbmFyeSAoYnV0XG4gICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbiAgIGBgX19nZXRhdHRyaWJ1dGVfXygpYGAgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzXG4gICBgYF9fZ2V0YXR0cl9fKClgYCwgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzXG4gICBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIGVpdGhlciBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhblxuICAgYGBBdHRyaWJ1dGVFcnJvcmBgLiBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpXG4gICBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gYGBBdHRyaWJ1dGVFcnJvcmBgIGV4Y2VwdGlvbi4gSW4gb3JkZXJcbiAgIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpbiB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uXG4gICBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0b1xuICAgYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3IgZXhhbXBsZSxcbiAgIGBgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlgYC5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsIG1ldGhvZHNcbiAgICAgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXggb3JcbiAgICAgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgYGBfX3NldGF0dHJfXygpYGAgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgaXRcbiAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciBleGFtcGxlLFxuICAgYGBvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpYGAuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlIGBgX19zZXRhdHRyX18oKWBgIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmIGBgZGVsIG9iai5uYW1lYGAgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cbm9iamVjdC5fX2Rpcl9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIGBgZGlyKClgYCBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gYGBkaXIoKWBgIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyBgYF9fZGljdF9fYGAuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciBgYE5vbmVgYCB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgIGBgQXR0cmlidXRlRXJyb3JgYCBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblxuSW52b2tpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkluIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggImJpbmRpbmdcbmJlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSBtZXRob2RzXG5pbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogIGBgX19nZXRfXygpYGAsIGBgX19zZXRfXygpYGAsIGFuZFxuYGBfX2RlbGV0ZV9fKClgYC4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuIG9iamVjdCxcbml0IGlzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuXG5UaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgZGVsZXRlXG50aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0XCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgYGBhLnhgYCBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggYGBhLl9fZGljdF9fW1wneFwnXWBgLCB0aGVuXG5gYHR5cGUoYSkuX19kaWN0X19bXCd4XCddYGAsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgY2xhc3NlcyBvZlxuYGB0eXBlKGEpYGAgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCBgYGEueGBgLlxuSG93IHRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uIGBgYWBgOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICBgYHguX19nZXRfXyhhKWBgLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgYGBhLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogYGB0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpYGAuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBjbGFzcywgYGBBLnhgYCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgYGBBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpYGAuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmIGBgYWBgIGlzIGFuIGluc3RhbmNlIG9mIGBgc3VwZXJgYCwgdGhlbiB0aGUgYmluZGluZyBgYHN1cGVyKEIsXG4gICBvYmopLm0oKWBgIHNlYXJjaGVzIGBgb2JqLl9fY2xhc3NfXy5fX21yb19fYGAgZm9yIHRoZSBiYXNlIGNsYXNzXG4gICBgYEFgYCBpbW1lZGlhdGVseSBwcmVjZWRpbmcgYGBCYGAgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvclxuICAgd2l0aCB0aGUgY2FsbDogYGBBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXylgYC5cblxuRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yIGludm9jYXRpb24gZGVwZW5kc1xub24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciBjYW4gZGVmaW5lXG5hbnkgY29tYmluYXRpb24gb2YgYGBfX2dldF9fKClgYCwgYGBfX3NldF9fKClgYCBhbmQgYGBfX2RlbGV0ZV9fKClgYC5cbklmIGl0IGRvZXMgbm90IGRlZmluZSBgYF9fZ2V0X18oKWBgLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGxcbnJldHVybiB0aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZVxub2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzIGBgX19zZXRfXygpYGBcbmFuZC9vciBgYF9fZGVsZXRlX18oKWBgLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lc1xubmVpdGhlciwgaXQgaXMgYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnNcbmRlZmluZSBib3RoIGBgX19nZXRfXygpYGAgYW5kIGBgX19zZXRfXygpYGAsIHdoaWxlIG5vbi1kYXRhXG5kZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlIGBgX19nZXRfXygpYGAgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoXG5gYF9fc2V0X18oKWBgIGFuZCBgYF9fZ2V0X18oKWBgIGRlZmluZWQgYWx3YXlzIG92ZXJyaWRlIGEgcmVkZWZpbml0aW9uXG5pbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW4gY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZVxub3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgYGBzdGF0aWNtZXRob2QoKWBgIGFuZCBgYGNsYXNzbWV0aG9kKClgYClcbmFyZSBpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlIGBgcHJvcGVydHkoKWBgIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSBkZWNsYXJlZCB2YXJpYWJsZXMgYW5kXG4gICBwcmV2ZW50cyB0aGUgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogZm9yXG4gICBlYWNoIGluc3RhbmNlLlxuXG5cbk5vdGVzIG9uIHVzaW5nICpfX3Nsb3RzX18qXG5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+flxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgYGBBdHRyaWJ1dGVFcnJvcmBgLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICBgYFwnX19kaWN0X19cJ2BgIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3NlcyBkZWZpbmluZ1xuICAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzIGluc3RhbmNlcy4gSWYgd2Vha1xuICByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkIGBgXCdfX3dlYWtyZWZfX1wnYGAgdG8gdGhlXG4gIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uLlxuXG4qICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgY3JlYXRpbmdcbiAgZGVzY3JpcHRvcnMgKCpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXNcbiAgYSByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGUgaW5zdGFuY2VcbiAgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZSAoZXhjZXB0IGJ5XG4gIHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuIFRoaXNcbiAgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyBgYGludGBgLCBgYHN0cmBgIGFuZFxuICBgYHR1cGxlYGAuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5ncyBtYXlcbiAgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nIGBgdHlwZSgpYGAuIFRoZSBjbGFzcyBib2R5XG5pcyBleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIGxvY2FsbHkgdG9cbnRoZSByZXN1bHQgb2YgYGB0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpYGAuXG5cblRoZSBjbGFzcyBjcmVhdGlvbiBwcm9jZXNzIGNhbiBiZSBjdXN0b21pc2VkIGJ5IHBhc3NpbmcgdGhlXG5gYG1ldGFjbGFzc2BgIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggYGBNeUNsYXNzYGAgYW5kIGBgTXlTdWJjbGFzc2BgIGFyZVxuaW5zdGFuY2VzIG9mIGBgTWV0YWBgOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gYGB0eXBlKClgYCBpc1xuICB1c2VkXG5cbiogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiBpbnN0YW5jZSBvZlxuICBgYHR5cGUoKWBgLCB0aGVuIGl0IGlzIHVzZWQgZGlyZWN0bHkgYXMgdGhlIG1ldGFjbGFzc1xuXG4qIGlmIGFuIGluc3RhbmNlIG9mIGBgdHlwZSgpYGAgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gYGB0eXBlKGNscylgYCkgb2YgYWxsXG5zcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgd2hpY2ggaXMgYVxuc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgdGhlXG5jYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzIGRlZmluaXRpb25cbndpbGwgZmFpbCB3aXRoIGBgVHlwZUVycm9yYGAuXG5cblxuUHJlcGFyaW5nIHRoZSBjbGFzcyBuYW1lc3BhY2Vcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk9uY2UgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBoYXMgYmVlbiBpZGVudGlmaWVkLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIHByZXBhcmVkLiBJZiB0aGUgbWV0YWNsYXNzIGhhcyBhIGBgX19wcmVwYXJlX19gYFxuYXR0cmlidXRlLCBpdCBpcyBjYWxsZWQgYXMgYGBuYW1lc3BhY2UgPSBtZXRhY2xhc3MuX19wcmVwYXJlX18obmFtZSxcbmJhc2VzLCAqKmt3ZHMpYGAgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksIGNvbWVcbmZyb20gdGhlIGNsYXNzIGRlZmluaXRpb24pLlxuXG5JZiB0aGUgbWV0YWNsYXNzIGhhcyBubyBgYF9fcHJlcGFyZV9fYGAgYXR0cmlidXRlLCB0aGVuIHRoZSBjbGFzc1xubmFtZXNwYWNlIGlzIGluaXRpYWxpc2VkIGFzIGFuIGVtcHR5IGBgZGljdCgpYGAgaW5zdGFuY2UuXG5cblNlZSBhbHNvOlxuXG4gICAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuICAgICAgSW50cm9kdWNlZCB0aGUgYGBfX3ByZXBhcmVfX2BgIG5hbWVzcGFjZSBob29rXG5cblxuRXhlY3V0aW5nIHRoZSBjbGFzcyBib2R5XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGNsYXNzIGJvZHkgaXMgZXhlY3V0ZWQgKGFwcHJveGltYXRlbHkpIGFzIGBgZXhlYyhib2R5LCBnbG9iYWxzKCksXG5uYW1lc3BhY2UpYGAuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gYGBleGVjKClgYCBpc1xudGhhdCBsZXhpY2FsIHNjb3BpbmcgYWxsb3dzIHRoZSBjbGFzcyBib2R5IChpbmNsdWRpbmcgYW55IG1ldGhvZHMpIHRvXG5yZWZlcmVuY2UgbmFtZXMgZnJvbSB0aGUgY3VycmVudCBhbmQgb3V0ZXIgc2NvcGVzIHdoZW4gdGhlIGNsYXNzXG5kZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgYSBmdW5jdGlvbi5cblxuSG93ZXZlciwgZXZlbiB3aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIG9jY3VycyBpbnNpZGUgdGhlIGZ1bmN0aW9uLFxubWV0aG9kcyBkZWZpbmVkIGluc2lkZSB0aGUgY2xhc3Mgc3RpbGwgY2Fubm90IHNlZSBuYW1lcyBkZWZpbmVkIGF0IHRoZVxuY2xhc3Mgc2NvcGUuIENsYXNzIHZhcmlhYmxlcyBtdXN0IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGZpcnN0XG5wYXJhbWV0ZXIgb2YgaW5zdGFuY2Ugb3IgY2xhc3MgbWV0aG9kcywgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBhdCBhbGxcbmZyb20gc3RhdGljIG1ldGhvZHMuXG5cblxuQ3JlYXRpbmcgdGhlIGNsYXNzIG9iamVjdFxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5PbmNlIHRoZSBjbGFzcyBuYW1lc3BhY2UgaGFzIGJlZW4gcG9wdWxhdGVkIGJ5IGV4ZWN1dGluZyB0aGUgY2xhc3NcbmJvZHksIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGBgbWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpYGAgKHRoZSBhZGRpdGlvbmFsIGtleXdvcmRzIHBhc3NlZCBoZXJlIGFyZSB0aGUgc2FtZVxuYXMgdGhvc2UgcGFzc2VkIHRvIGBgX19wcmVwYXJlX19gYCkuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mIGBgc3VwZXIoKWBgLiBgYF9fY2xhc3NfX2BgIGlzIGFuIGltcGxpY2l0IGNsb3N1cmVcbnJlZmVyZW5jZSBjcmVhdGVkIGJ5IHRoZSBjb21waWxlciBpZiBhbnkgbWV0aG9kcyBpbiBhIGNsYXNzIGJvZHkgcmVmZXJcbnRvIGVpdGhlciBgYF9fY2xhc3NfX2BgIG9yIGBgc3VwZXJgYC4gVGhpcyBhbGxvd3MgdGhlIHplcm8gYXJndW1lbnRcbmZvcm0gb2YgYGBzdXBlcigpYGAgdG8gY29ycmVjdGx5IGlkZW50aWZ5IHRoZSBjbGFzcyBiZWluZyBkZWZpbmVkXG5iYXNlZCBvbiBsZXhpY2FsIHNjb3BpbmcsIHdoaWxlIHRoZSBjbGFzcyBvciBpbnN0YW5jZSB0aGF0IHdhcyB1c2VkIHRvXG5tYWtlIHRoZSBjdXJyZW50IGNhbGwgaXMgaWRlbnRpZmllZCBiYXNlZCBvbiB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkXG50byB0aGUgbWV0aG9kLlxuXG5BZnRlciB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQsIGl0IGlzIHBhc3NlZCB0byB0aGUgY2xhc3NcbmRlY29yYXRvcnMgaW5jbHVkZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gKGlmIGFueSkgYW5kIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyBib3VuZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIHRoZSBkZWZpbmVkIGNsYXNzLlxuXG5TZWUgYWxzbzpcblxuICAgKipQRVAgMzEzNSoqIC0gTmV3IHN1cGVyXG4gICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0IGBgX19jbGFzc19fYGAgY2xvc3VyZSByZWZlcmVuY2VcblxuXG5NZXRhY2xhc3MgZXhhbXBsZVxuLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzIHRoYXQgaGF2ZVxuYmVlbiBleHBsb3JlZCBpbmNsdWRlIGxvZ2dpbmcsIGludGVyZmFjZSBjaGVja2luZywgYXV0b21hdGljXG5kZWxlZ2F0aW9uLCBhdXRvbWF0aWMgcHJvcGVydHkgY3JlYXRpb24sIHByb3hpZXMsIGZyYW1ld29ya3MsIGFuZFxuYXV0b21hdGljIHJlc291cmNlIGxvY2tpbmcvc3luY2hyb25pemF0aW9uLlxuXG5IZXJlIGlzIGFuIGV4YW1wbGUgb2YgYSBtZXRhY2xhc3MgdGhhdCB1c2VzIGFuXG5gYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgbWVtYmVyc1xud2VyZSBkZWZpbmVkOlxuXG4gICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG5cbiAgICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtZXRhY2xzLCBuYW1lLCBiYXNlcywgKiprd2RzKTpcbiAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KClcblxuICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4gICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBkaWN0KG5hbWVzcGFjZSkpXG4gICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuICAgICAgICAgICByZXR1cm4gcmVzdWx0XG5cbiAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4gICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuXG4gICA+Pj4gQS5tZW1iZXJzXG4gICAoXCdfX21vZHVsZV9fXCcsIFwnb25lXCcsIFwndHdvXCcsIFwndGhyZWVcJywgXCdmb3VyXCcpXG5cbldoZW4gdGhlIGNsYXNzIGRlZmluaXRpb24gZm9yICpBKiBnZXRzIGV4ZWN1dGVkLCB0aGUgcHJvY2VzcyBiZWdpbnNcbndpdGggY2FsbGluZyB0aGUgbWV0YWNsYXNzXCdzIGBgX19wcmVwYXJlX18oKWBgIG1ldGhvZCB3aGljaCByZXR1cm5zIGFuXG5lbXB0eSBgYGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0YGAuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kc1xuYW5kIGF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzIGBgX19uZXdfXygpYGAgbWV0aG9kIGdldHNcbmludm9rZWQuICBUaGF0IG1ldGhvZCBidWlsZHMgdGhlIG5ldyB0eXBlIGFuZCBpdCBzYXZlcyB0aGUgb3JkZXJlZFxuZGljdGlvbmFyeSBrZXlzIGluIGFuIGF0dHJpYnV0ZSBjYWxsZWQgYGBtZW1iZXJzYGAuXG5cblxuQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlXG5gYGlzaW5zdGFuY2UoKWBgIGFuZCBgYGlzc3ViY2xhc3MoKWBgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyBgYGFiYy5BQkNNZXRhYGAgaW1wbGVtZW50cyB0aGVzZSBtZXRob2RzXG5pbiBvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSBhc1xuInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nIGJ1aWx0LWluXG50eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuXG5jbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICBgYGlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKWBgLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgYGBpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcylgYC5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuICAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nIGBgaXNpbnN0YW5jZSgpYGAgYW5kXG4gICAgICBgYGlzc3ViY2xhc3MoKWBgIGJlaGF2aW9yIHRocm91Z2ggYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kXG4gICAgICBgYF9fc3ViY2xhc3NjaGVja19fKClgYCwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHlcbiAgICAgIGluIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgYGBhYmNgYFxuICAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgYGB4KGFyZzEsIGFyZzIsIC4uLilgYCBpcyBhIHNob3J0aGFuZCBmb3JcbiAgIGBgeC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pYGAuXG5cblxuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCBgYDAgPD0gayA8IE5gYFxud2hlcmUgKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaFxuZGVmaW5lIGEgcmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZVxudGhlIG1ldGhvZHMgYGBrZXlzKClgYCwgYGB2YWx1ZXMoKWBgLCBgYGl0ZW1zKClgYCwgYGBnZXQoKWBgLFxuYGBjbGVhcigpYGAsIGBgc2V0ZGVmYXVsdCgpYGAsIGBgcG9wKClgYCwgYGBwb3BpdGVtKClgYCwgYGBjb3B5KClgYCxcbmFuZCBgYHVwZGF0ZSgpYGAgYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkXG5kaWN0aW9uYXJ5IG9iamVjdHMuICBUaGUgYGBjb2xsZWN0aW9uc2BgIG1vZHVsZSBwcm92aWRlcyBhXG5gYE11dGFibGVNYXBwaW5nYGAgYWJzdHJhY3QgYmFzZSBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzXG5mcm9tIGEgYmFzZSBzZXQgb2YgYGBfX2dldGl0ZW1fXygpYGAsIGBgX19zZXRpdGVtX18oKWBgLFxuYGBfX2RlbGl0ZW1fXygpYGAsIGFuZCBgYGtleXMoKWBgLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyBgYGFwcGVuZCgpYGAsIGBgY291bnQoKWBgLCBgYGluZGV4KClgYCwgYGBleHRlbmQoKWBgLFxuYGBpbnNlcnQoKWBgLCBgYHBvcCgpYGAsIGBgcmVtb3ZlKClgYCwgYGByZXZlcnNlKClgYCBhbmQgYGBzb3J0KClgYCxcbmxpa2UgUHl0aG9uIHN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZFxuaW1wbGVtZW50IGFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgYGBfX2FkZF9fKClgYCwgYGBfX3JhZGRfXygpYGAsXG5gYF9faWFkZF9fKClgYCwgYGBfX211bF9fKClgYCwgYGBfX3JtdWxfXygpYGAgYW5kIGBgX19pbXVsX18oKWBgXG5kZXNjcmliZWQgYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0XG5pcyByZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG5gYF9fY29udGFpbnNfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlIGBgaW5gYFxub3BlcmF0b3I7IGZvciBtYXBwaW5ncywgYGBpbmBgIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yXG5zZXF1ZW5jZXMsIGl0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlclxucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuYGBfX2l0ZXJfXygpYGAgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGVcbmNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCBgYF9faXRlcl9fKClgYCBzaG91bGQgYmUgdGhlIHNhbWUgYXNcbmBga2V5cygpYGA7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlIHRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyIGBgPj1gYCAwLiAgQWxzbywgYW4gb2JqZWN0XG4gICB0aGF0IGRvZXNuXCd0IGRlZmluZSBhIGBgX19ib29sX18oKWBgIG1ldGhvZCBhbmQgd2hvc2UgYGBfX2xlbl9fKClgYFxuICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuICBBXG4gIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoXG4gIGBgTm9uZWBgLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgYGBzZWxmW2tleV1gYC4gRm9yIHNlcXVlbmNlXG4gICB0eXBlcywgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLlxuICAgTm90ZSB0aGF0IHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZVxuICAgY2xhc3Mgd2lzaGVzIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGVcbiAgIGBgX19nZXRpdGVtX18oKWBgIG1ldGhvZC4gSWYgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLFxuICAgYGBUeXBlRXJyb3JgYCBtYXkgYmUgcmFpc2VkOyBpZiBvZiBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZlxuICAgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnkgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZlxuICAgbmVnYXRpdmUgdmFsdWVzKSwgYGBJbmRleEVycm9yYGAgc2hvdWxkIGJlIHJhaXNlZC4gRm9yIG1hcHBpbmdcbiAgIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlIGNvbnRhaW5lciksIGBgS2V5RXJyb3JgYFxuICAgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogYGBmb3JgYCBsb29wcyBleHBlY3QgdGhhdCBhbiBgYEluZGV4RXJyb3JgYCB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgYGBzZWxmW2tleV1gYC4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgIGBgX19nZXRpdGVtX18oKWBgLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlIGBgX19nZXRpdGVtX18oKWBgXG4gICBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLCBhbmQgc2hvdWxkIGFsc28gYmUgbWFkZVxuICAgYXZhaWxhYmxlIGFzIHRoZSBtZXRob2QgYGBrZXlzKClgYC5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgYGByZXZlcnNlZCgpYGAgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlIGBgX19yZXZlcnNlZF9fKClgYCBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGVcbiAgIGBgcmV2ZXJzZWQoKWBgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZVxuICAgcHJvdG9jb2wgKGBgX19sZW5fXygpYGAgYW5kIGBgX19nZXRpdGVtX18oKWBgKS4gIE9iamVjdHMgdGhhdFxuICAgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgc2hvdWxkIG9ubHkgcHJvdmlkZVxuICAgYGBfX3JldmVyc2VkX18oKWBgIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gdGhhdCBpc1xuICAgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5IGBgcmV2ZXJzZWQoKWBgLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoYGBpbmBgIGFuZCBgYG5vdCBpbmBgKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgYGBfX2NvbnRhaW5zX18oKWBgLCB0aGUgbWVtYmVyc2hpcFxuICAgdGVzdCBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhIGBgX19pdGVyX18oKWBgLCB0aGVuIHRoZSBvbGRcbiAgIHNlcXVlbmNlIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgYGBfX2dldGl0ZW1fXygpYGAsIHNlZSAqdGhpc1xuICAgc2VjdGlvbiBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoYGArYGAsIGBgLWBgLCBgYCpgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsXG4gICBgYGRpdm1vZCgpYGAsIGBgcG93KClgYCwgYGAqKmBgLCBgYDw8YGAsIGBgPj5gYCwgYGAmYGAsIGBgXmBgLFxuICAgYGB8YGApLiAgRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBgYHggKyB5YGAsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiBgYF9fYWRkX18oKWBgIG1ldGhvZCxcbiAgIGBgeC5fX2FkZF9fKHkpYGAgaXMgY2FsbGVkLiAgVGhlIGBgX19kaXZtb2RfXygpYGAgbWV0aG9kIHNob3VsZCBiZVxuICAgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgYGBfX2Zsb29yZGl2X18oKWBgIGFuZCBgYF9fbW9kX18oKWBgOyBpdFxuICAgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvIGBgX190cnVlZGl2X18oKWBgLiAgTm90ZSB0aGF0XG4gICBgYF9fcG93X18oKWBgIHNob3VsZCBiZSBkZWZpbmVkIHRvIGFjY2VwdCBhbiBvcHRpb25hbCB0aGlyZFxuICAgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgYnVpbHQtaW4gYGBwb3coKWBgIGZ1bmN0aW9uXG4gICBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuIGBgTm90SW1wbGVtZW50ZWRgYC5cblxub2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSBhcml0aG1ldGljXG4gICBvcGVyYXRpb25zIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYC9gYCwgYGAvL2BgLCBgYCVgYCxcbiAgIGBgZGl2bW9kKClgYCwgYGBwb3coKWBgLCBgYCoqYGAsIGBgPDxgYCwgYGA+PmBgLCBgYCZgYCwgYGBeYGAsXG4gICBgYHxgYCkgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpIG9wZXJhbmRzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHlcbiAgIGNhbGxlZCBpZiB0aGUgbGVmdCBvcGVyYW5kIGRvZXMgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmdcbiAgIG9wZXJhdGlvbiBhbmQgdGhlIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMuIFsyXSAgRm9yXG4gICBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYGB4IC0geWBgLCB3aGVyZSAqeSogaXMgYW5cbiAgIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gYGBfX3JzdWJfXygpYGAgbWV0aG9kLFxuICAgYGB5Ll9fcnN1Yl9fKHgpYGAgaXMgY2FsbGVkIGlmIGBgeC5fX3N1Yl9fKHkpYGAgcmV0dXJuc1xuICAgKk5vdEltcGxlbWVudGVkKi5cblxuICAgTm90ZSB0aGF0IHRlcm5hcnkgYGBwb3coKWBgIHdpbGwgbm90IHRyeSBjYWxsaW5nIGBgX19ycG93X18oKWBgXG4gICAodGhlIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuXG4gICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSByZWZsZWN0ZWQgbWV0aG9kIGZvciB0aGVcbiAgICAgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBiZWZvcmUgdGhlIGxlZnQgb3BlcmFuZFwnc1xuICAgICBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzIHN1YmNsYXNzZXMgdG9cbiAgICAgb3ZlcnJpZGUgdGhlaXIgYW5jZXN0b3JzXCcgb3BlcmF0aW9ucy5cblxub2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgYXJpdGhtZXRpY1xuICAgYXNzaWdubWVudHMgKGBgKz1gYCwgYGAtPWBgLCBgYCo9YGAsIGBgLz1gYCwgYGAvLz1gYCwgYGAlPWBgLFxuICAgYGAqKj1gYCwgYGA8PD1gYCwgYGA+Pj1gYCwgYGAmPWBgLCBgYF49YGAsIGBgfD1gYCkuICBUaGVzZSBtZXRob2RzXG4gICBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmRcbiAgIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsXG4gICAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWRcbiAgIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvXG4gICBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgYGB4ICs9IHlgYCwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlIG9mIGFcbiAgIGNsYXNzIHRoYXQgaGFzIGFuIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9faWFkZF9fKHkpYGAgaXNcbiAgIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgZG9lcyBub3QgZGVmaW5lIGFcbiAgIGBgX19pYWRkX18oKWBgIG1ldGhvZCwgYGB4Ll9fYWRkX18oeSlgYCBhbmQgYGB5Ll9fcmFkZF9fKHgpYGAgYXJlXG4gICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mIGBgeCArIHlgYC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIChgYC1gYCwgYGArYGAsXG4gICBgYGFicygpYGAgYW5kIGBgfmBgKS5cblxub2JqZWN0Ll9fY29tcGxleF9fKHNlbGYpXG5vYmplY3QuX19pbnRfXyhzZWxmKVxub2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxub2JqZWN0Ll9fcm91bmRfXyhzZWxmWywgbl0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNvbXBsZXgoKWBgLFxuICAgYGBpbnQoKWBgLCBgYGZsb2F0KClgYCBhbmQgYGByb3VuZCgpYGAuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2ZcbiAgIHRoZSBhcHByb3ByaWF0ZSB0eXBlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYGBvcGVyYXRvci5pbmRleCgpYGAuICBBbHNvIGNhbGxlZCB3aGVuZXZlclxuICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZVxuICAgYnVpbHQtaW4gYGBiaW4oKWBgLCBgYGhleCgpYGAgYW5kIGBgb2N0KClgYCBmdW5jdGlvbnMpLiBNdXN0IHJldHVyblxuICAgYW4gaW50ZWdlci5cblxuXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhIGBgd2l0aGBgIHN0YXRlbWVudC4gVGhlIGNvbnRleHRcbm1hbmFnZXIgaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWVcbmNvbnRleHQgZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZVxubm9ybWFsbHkgaW52b2tlZCB1c2luZyB0aGUgYGB3aXRoYGAgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvblxuKlRoZSB3aXRoIHN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpclxubWV0aG9kcy5cblxuVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kIHJlc3RvcmluZyB2YXJpb3VzXG5raW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsIGNsb3Npbmcgb3BlbmVkXG5maWxlcywgZXRjLlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgKkNvbnRleHQgTWFuYWdlciBUeXBlcyouXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgYGB3aXRoYGBcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgYGBhc2BgIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlIGBgTm9uZWBgLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCBgYF9fZXhpdF9fKClgYCBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzIGBgX19oYXNoX18oKWBgIGFuZCBgYF9fcmVwcl9fKClgYCB0aGF0IGFyZSBpbXBsZW1lbnRlZFxuYnkgYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgb2ZcbnRoZXNlIG1ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkIGZhaWxcbndoZW4gaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuXG4gICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgXCdfX2hhc2hfX1wnIG9mIFwnaW50XCcgb2JqZWN0IG5lZWRzIGFuIGFyZ3VtZW50XG5cbkluY29ycmVjdGx5IGF0dGVtcHRpbmcgdG8gaW52b2tlIGFuIHVuYm91bmQgbWV0aG9kIG9mIGEgY2xhc3MgaW4gdGhpc1xud2F5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyBcJ21ldGFjbGFzcyBjb25mdXNpb25cJywgYW5kIGlzIGF2b2lkZWRcbmJ5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcblxuICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuICAgVHJ1ZVxuICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuICAgVHJ1ZVxuXG5JbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlIGludGVyZXN0IG9mXG5jb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvIGJ5cGFzc2VzXG50aGUgYGBfX2dldGF0dHJpYnV0ZV9fKClgYCBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjbGFzcyBDKG9iamVjdCwgbWV0YWNsYXNzPU1ldGEpOlxuICAgLi4uICAgICBkZWYgX19sZW5fXyhzZWxmKTpcbiAgIC4uLiAgICAgICAgIHJldHVybiAxMFxuICAgLi4uICAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXygqYXJncyk6XG4gICAuLi4gICAgICAgICBwcmludCgiQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSBgYF9fZ2V0YXR0cmlidXRlX18oKWBgIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb25cbnByb3ZpZGVzIHNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGVcbmludGVycHJldGVyLCBhdCB0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZlxuc3BlY2lhbCBtZXRob2RzICh0aGUgc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0XG5pdHNlbGYgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJdCAqaXMqIHBvc3NpYmxlIGluIHNvbWUgY2FzZXMgdG8gY2hhbmdlIGFuIG9iamVjdFwncyB0eXBlLCB1bmRlclxuICAgIGNlcnRhaW4gY29udHJvbGxlZCBjb25kaXRpb25zLiBJdCBnZW5lcmFsbHkgaXNuXCd0IGEgZ29vZCBpZGVhXG4gICAgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSBiZWhhdmlvdXIgaWYgaXQgaXNcbiAgICBoYW5kbGVkIGluY29ycmVjdGx5LlxuXG5bMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgbm9uLVxuICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgYGBfX2FkZF9fKClgYCkgZmFpbHMgdGhlIG9wZXJhdGlvbiBpc1xuICAgIG5vdCBzdXBwb3J0ZWQsIHdoaWNoIGlzIHdoeSB0aGUgcmVmbGVjdGVkIG1ldGhvZCBpcyBub3QgY2FsbGVkLlxuJywKKyAnc3RyaW5nLW1ldGhvZHMnOiAnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSAqY29tbW9uKiBzZXF1ZW5jZSBvcGVyYXRpb25zLCBhbG9uZyB3aXRoXG50aGUgYWRkaXRpb25hbCBtZXRob2RzIGRlc2NyaWJlZCBiZWxvdy5cblxuU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lIHByb3ZpZGluZyBhXG5sYXJnZSBkZWdyZWUgb2YgZmxleGliaWxpdHkgYW5kIGN1c3RvbWl6YXRpb24gKHNlZSBgYHN0ci5mb3JtYXQoKWBgLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKlN0cmluZyBGb3JtYXR0aW5nKikgYW5kIHRoZSBvdGhlciBiYXNlZCBvblxuQyBgYHByaW50ZmBgIHN0eWxlIGZvcm1hdHRpbmcgdGhhdCBoYW5kbGVzIGEgbmFycm93ZXIgcmFuZ2Ugb2YgdHlwZXNcbmFuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuIGZhc3RlciBmb3IgdGhlXG5jYXNlcyBpdCBjYW4gaGFuZGxlICgqcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKikuXG5cblRoZSAqVGV4dCBQcm9jZXNzaW5nIFNlcnZpY2VzKiBzZWN0aW9uIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGNvdmVyc1xuYSBudW1iZXIgb2Ygb3RoZXIgbW9kdWxlcyB0aGF0IHByb3ZpZGUgdmFyaW91cyB0ZXh0IHJlbGF0ZWQgdXRpbGl0aWVzXG4oaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSBgYHJlYGAgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgYGBcJ1x4YzNceDlmXCdgYCBpcyBlcXVpdmFsZW50IHRvXG4gICBgYCJzcyJgYC4gU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsIGBgbG93ZXIoKWBgIHdvdWxkIGRvXG4gICBub3RoaW5nIHRvIGBgXCdceGMzXHg5ZlwnYGA7IGBgY2FzZWZvbGQoKWBgIGNvbnZlcnRzIGl0IHRvIGBgInNzImBgLlxuXG4gICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG4gICBUaGUgbG93ZXJjYXNpbmcgYWxnb3JpdGhtIHVzZWQgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gMy4xMyBvZiB0aGVcbiAgIFVuaWNvZGUgU3RhbmRhcmQuXG5cbnN0ci5sc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggbGVhZGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5sc3RyaXAoKVxuICAgXCdzcGFjaW91cyAgIFwnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5sc3RyaXAoXCdjbW93ei5cJylcbiAgIFwnZXhhbXBsZS5jb21cJ1xuXG5zdGF0aWMgc3RyLm1ha2V0cmFucyh4WywgeVssIHpdXSlcblxuICAgVGhpcyBzdGF0aWMgbWV0aG9kIHJldHVybnMgYSB0cmFuc2xhdGlvbiB0YWJsZSB1c2FibGUgZm9yXG4gICBgYHN0ci50cmFuc2xhdGUoKWBgLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGByZmluZCgpYGAgYnV0IHJhaXNlcyBgYFZhbHVlRXJyb3JgYCB3aGVuIHRoZSBzdWJzdHJpbmcgKnN1YipcbiAgIGlzIG5vdCBmb3VuZC5cblxuc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gdGhlIHN0cmluZyByaWdodCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouXG4gICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbiAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvclxuICAgZXF1YWwgdG8gYGBsZW4ocylgYC5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqXG4gICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0IGBgbWF4c3BsaXQrMWBgXG4gICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgYGAtMWBgLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxLCwyXCcuc3BsaXQoXCcsXCcpYGAgcmV0dXJucyBgYFtcJzFcJywgXCdcJywgXCcyXCddYGApLiAgVGhlICpzZXAqXG4gICBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbiAgIGBgXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMlwnLCBcJzNcJ11gYCkuIFNwbGl0dGluZ1xuICAgYW4gZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgYGBbXCdcJ11gYC5cblxuICAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvciBpcyBgYE5vbmVgYCwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgYGBOb25lYGAgc2VwYXJhdG9yIHJldHVybnNcbiAgIGBgW11gYC5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCcgMSAgMiAgIDMgIFwnLnNwbGl0KClgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGAsXG4gICBhbmQgYGBcJyAgMSAgMiAgIDMgIFwnLnNwbGl0KE5vbmUsIDEpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyICAgMyAgXCddYGAuXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuIFRoaXMgbWV0aG9kIHVzZXMgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqIGFwcHJvYWNoIHRvXG4gICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0XG4gICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cblxuICAgRm9yIGV4YW1wbGUsIGBgXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoKWBgIHJldHVybnNcbiAgIGBgW1wnYWIgY1wnLCBcJ1wnLCBcJ2RlIGZnXCcsIFwna2xcJ11gYCwgd2hpbGUgdGhlIHNhbWUgY2FsbCB3aXRoXG4gICBgYHNwbGl0bGluZXMoVHJ1ZSlgYCByZXR1cm5zIGBgW1wnYWIgY1xcblwnLCBcJ1xcblwnLCBcJ2RlIGZnXFxyXCcsXG4gICBcJ2tsXFxyXFxuXCddYGAuXG5cbiAgIFVubGlrZSBgYHNwbGl0KClgYCB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgdGhpc1xuICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kIGEgdGVybWluYWxcbiAgIGxpbmUgYnJlYWsgZG9lcyBub3QgcmVzdWx0IGluIGFuIGV4dHJhIGxpbmUuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCBvdGhlcndpc2VcbiAgIHJldHVybiBgYEZhbHNlYGAuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9va1xuICAgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdFxuICAgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZVxuICAgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKlxuICAgYXJndW1lbnQgaXMgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0c1xuICAgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3NhcmlseSB0cnVlIHRoYXRcbiAgIGBgcy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gc2BgLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50IGRlZmluaXRpb24gb2YgYVxuICAgd29yZCBhcyBncm91cHMgb2YgY29uc2VjdXRpdmUgbGV0dGVycy4gIFRoZSBkZWZpbml0aW9uIHdvcmtzIGluXG4gICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyBhbmRcbiAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSBkZXNpcmVkXG4gICByZXN1bHQ6XG5cbiAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4gICAgICAiVGhleVwnUmUgQmlsbFwnUyBGcmllbmRzIEZyb20gVGhlIFVrIlxuXG4gICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyByZWd1bGFyXG4gICBleHByZXNzaW9uczpcblxuICAgICAgPj4+IGltcG9ydCByZVxuICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4gICAgICAgICAgICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIG1vOiBtby5ncm91cCgwKVswXS51cHBlcigpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vLmdyb3VwKDApWzE6XS5sb3dlcigpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMpXG5cbiAgICAgID4+PiB0aXRsZWNhc2UoInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcy4iKVxuICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG5cbnN0ci50cmFuc2xhdGUobWFwKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZFxuICAgdGhyb3VnaCB0aGUgKm1hcCogd2hpY2ggbXVzdCBiZSBhIGRpY3Rpb25hcnkgb2YgVW5pY29kZSBvcmRpbmFsc1xuICAgKGludGVnZXJzKSB0byBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIG9yIGBgTm9uZWBgLiAgVW5tYXBwZWRcbiAgIGNoYXJhY3RlcnMgYXJlIGxlZnQgdW50b3VjaGVkLiBDaGFyYWN0ZXJzIG1hcHBlZCB0byBgYE5vbmVgYCBhcmVcbiAgIGRlbGV0ZWQuXG5cbiAgIFlvdSBjYW4gdXNlIGBgc3RyLm1ha2V0cmFucygpYGAgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gbWFwIGZyb21cbiAgIGNoYXJhY3Rlci10by1jaGFyYWN0ZXIgbWFwcGluZ3MgaW4gZGlmZmVyZW50IGZvcm1hdHMuXG5cbiAgIE5vdGU6IEFuIGV2ZW4gbW9yZSBmbGV4aWJsZSBhcHByb2FjaCBpcyB0byBjcmVhdGUgYSBjdXN0b20gY2hhcmFjdGVyXG4gICAgIG1hcHBpbmcgY29kZWMgdXNpbmcgdGhlIGBgY29kZWNzYGAgbW9kdWxlIChzZWVcbiAgICAgYGBlbmNvZGluZ3MuY3AxMjUxYGAgZm9yIGFuIGV4YW1wbGUpLlxuXG5zdHIudXBwZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiAgTm90ZSB0aGF0IGBgc3RyLnVwcGVyKCkuaXN1cHBlcigpYGAgbWlnaHRcbiAgIGJlIGBgRmFsc2VgYCBpZiBgYHNgYCBjb250YWlucyB1bmNhc2VkIGNoYXJhY3RlcnMgb3IgaWYgdGhlIFVuaWNvZGVcbiAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiIChMZXR0ZXIsXG4gICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbiAgIFRoZSB1cHBlcmNhc2luZyBhbGdvcml0aG0gdXNlZCBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG4nLAorICdzdHJpbmdzJzogJ1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgYGBzdHJpbmdwcmVmaXhgYCBvclxuYGBieXRlc3ByZWZpeGBgIGFuZCB0aGUgcmVzdCBvZiB0aGUgbGl0ZXJhbC4gVGhlIHNvdXJjZSBjaGFyYWN0ZXIgc2V0XG5pcyBkZWZpbmVkIGJ5IHRoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmdcbmRlY2xhcmF0aW9uIGlzIGdpdmVuIGluIHRoZSBzb3VyY2UgZmlsZTsgc2VlIHNlY3Rpb24gKkVuY29kaW5nXG5kZWNsYXJhdGlvbnMqLlxuXG5JbiBwbGFpbiBFbmdsaXNoOiBCb3RoIHR5cGVzIG9mIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZ1xuc2luZ2xlIHF1b3RlcyAoYGBcJ2BgKSBvciBkb3VibGUgcXVvdGVzIChgYCJgYCkuICBUaGV5IGNhbiBhbHNvIGJlXG5lbmNsb3NlZCBpbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlXG5hcmUgZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbihgYFxcYGApIGNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYVxuc3BlY2lhbCBtZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZVxuY2hhcmFjdGVyLlxuXG5CeXRlcyBsaXRlcmFscyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYGBcJ2JcJ2BgIG9yIGBgXCdCXCdgYDsgdGhleVxucHJvZHVjZSBhbiBpbnN0YW5jZSBvZiB0aGUgYGBieXRlc2BgIHR5cGUgaW5zdGVhZCBvZiB0aGUgYGBzdHJgYCB0eXBlLlxuVGhleSBtYXkgb25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mXG4xMjggb3IgZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHVuaWNvZGUgc3RyaW5ncyB3aXRoIGFcbmBgdWBgIHByZWZpeCB0byBzaW1wbGlmeSBtYWludGVuYW5jZSBvZiBkdWFsIDIueCBhbmQgMy54IGNvZGViYXNlcy5cblxuQm90aCBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYVxubGV0dGVyIGBgXCdyXCdgYCBvciBgYFwnUlwnYGA7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kXG50cmVhdCBiYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nXG5saXRlcmFscywgYGBcJ1xcVVwnYGAgYW5kIGBgXCdcXHVcJ2BgIGVzY2FwZXMgaW4gcmF3IHN0cmluZ3MgYXJlIG5vdCB0cmVhdGVkXG5zcGVjaWFsbHkuIEdpdmVuIHRoYXQgUHl0aG9uIDIueFwncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmVcbmRpZmZlcmVudGx5IHRoYW4gUHl0aG9uIDMueFwncyB0aGUgYGBcJ3VyXCdgYCBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgYGBcJ3JiXCdgYCBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhc1xuICAgYmVlbiBhZGRlZCBhcyBhIHN5bm9ueW0gb2YgYGBcJ2JyXCdgYC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciB0aGUgdW5pY29kZSBsZWdhY3kgbGl0ZXJhbFxuICAgKGBgdVwndmFsdWVcJ2BgKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG4gICBQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgc3RyaW5ncywgdW5lc2NhcGVkIG5ld2xpbmVzIGFuZCBxdW90ZXMgYXJlIGFsbG93ZWRcbihhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xudGVybWluYXRlIHRoZSBzdHJpbmcuICAoQSAicXVvdGUiIGlzIHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBvcGVuIHRoZVxuc3RyaW5nLCBpLmUuIGVpdGhlciBgYFwnYGAgb3IgYGAiYGAuKVxuXG5Vbmxlc3MgYW4gYGBcJ3JcJ2BgIG9yIGBgXCdSXCdgYCBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58IGBgXFxuZXdsaW5lYGAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXFxgYCAgICAgICAgICAgIHwgQmFja3NsYXNoIChgYFxcYGApICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcXCdgYCAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlIChgYFwnYGApICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcImBgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKGBgImBgKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXGFgYCAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxiYGAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcZmBgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXG5gYCAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxyYGAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxcdGBgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHZgYCAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxvb29gYCAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgxLDMpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFxceGhoYGAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoMiwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuRXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nIGxpdGVyYWxzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCBgYFxcTntuYW1lfWBgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcXHV4eHh4YGAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXFxVeHh4eHh4eHhgYCAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICg2KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4eHh4eCogICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gQXMgaW4gU3RhbmRhcmQgQywgdXAgdG8gdGhyZWUgb2N0YWwgZGlnaXRzIGFyZSBhY2NlcHRlZC5cblxuMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG4zLiBJbiBhIGJ5dGVzIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGUgYnl0ZVxuICAgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXMgZGVub3RlIGFcbiAgIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuIHZhbHVlLlxuXG40LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4gICBhZGRlZC5cblxuNS4gSW5kaXZpZHVhbCBjb2RlIHVuaXRzIHdoaWNoIGZvcm0gcGFydHMgb2YgYSBzdXJyb2dhdGUgcGFpciBjYW4gYmVcbiAgIGVuY29kZWQgdXNpbmcgdGhpcyBlc2NhcGUgc2VxdWVuY2UuICBFeGFjdGx5IGZvdXIgaGV4IGRpZ2l0cyBhcmVcbiAgIHJlcXVpcmVkLlxuXG42LiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuICBFeGFjdGx5IGVpZ2h0IGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuXG5Vbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluIHRoZVxuc3RyaW5nIHVuY2hhbmdlZCwgaS5lLiwgKnRoZSBiYWNrc2xhc2ggaXMgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIChUaGlzXG5iZWhhdmlvciBpcyB1c2VmdWwgd2hlbiBkZWJ1Z2dpbmc6IGlmIGFuIGVzY2FwZSBzZXF1ZW5jZSBpcyBtaXN0eXBlZCxcbnRoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzIGFsc29cbmltcG9ydGFudCB0byBub3RlIHRoYXQgdGhlIGVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZ1xubGl0ZXJhbHMgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3IgYnl0ZXNcbmxpdGVyYWxzLlxuXG5FdmVuIGluIGEgcmF3IHN0cmluZywgc3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLFxuYnV0IHRoZSBiYWNrc2xhc2ggcmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgYGByIlxcIiJgYCBpcyBhXG52YWxpZCBzdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYVxuZG91YmxlIHF1b3RlOyBgYHIiXFwiYGAgaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXdcbnN0cmluZyBjYW5ub3QgZW5kIGluIGFuIG9kZCBudW1iZXIgb2YgYmFja3NsYXNoZXMpLiAgU3BlY2lmaWNhbGx5LCAqYVxucmF3IHN0cmluZyBjYW5ub3QgZW5kIGluIGEgc2luZ2xlIGJhY2tzbGFzaCogKHNpbmNlIHRoZSBiYWNrc2xhc2hcbndvdWxkIGVzY2FwZSB0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZVxuYmFja3NsYXNoIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSBpcyBpbnRlcnByZXRlZCBhcyB0aG9zZSB0d28gY2hhcmFjdGVyc1xuYXMgcGFydCBvZiB0aGUgc3RyaW5nLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKICAnc3Vic2NyaXB0aW9ucyc6ICdcblN1YnNjcmlwdGlvbnNcbioqKioqKioqKioqKipcblxuQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgb3IgbGlzdClcbm9yIG1hcHBpbmcgKGRpY3Rpb25hcnkpIG9iamVjdDpcblxuICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgc3Vic2NyaXB0aW9uLFxuZS5nLiBhIGxpc3Qgb3IgZGljdGlvbmFyeS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBzdXBwb3J0XG5zdWJzY3JpcHRpb24gYnkgZGVmaW5pbmcgYSBgYF9fZ2V0aXRlbV9fKClgYCBtZXRob2QuXG5cbkZvciBidWlsdC1pbiBvYmplY3RzLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9iamVjdHMgdGhhdCBzdXBwb3J0XG5zdWJzY3JpcHRpb246XG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGFuXG5vYmplY3Qgd2hvc2UgdmFsdWUgaXMgb25lIG9mIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nLCBhbmQgdGhlXG5zdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCBjb3JyZXNwb25kcyB0byB0aGF0XG5rZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgZXhhY3RseSBvbmVcbml0ZW0uKVxuXG5JZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCBldmFsdWF0ZSB0b1xuYW4gaW50ZWdlciBvciBhIHNsaWNlIChhcyBkaXNjdXNzZWQgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9uKS5cblxuVGhlIGZvcm1hbCBzeW50YXggbWFrZXMgbm8gc3BlY2lhbCBwcm92aXNpb24gZm9yIG5lZ2F0aXZlIGluZGljZXMgaW5cbnNlcXVlbmNlczsgaG93ZXZlciwgYnVpbHQtaW4gc2VxdWVuY2VzIGFsbCBwcm92aWRlIGEgYGBfX2dldGl0ZW1fXygpYGBcbm1ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCBgYHhbLTFdYGAgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mXG5gYHhgYCkuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhblxudGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlXG5pdGVtIHdob3NlIGluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuIFNpbmNlIHRoZSBzdXBwb3J0XG5mb3IgbmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdFwnc1xuYGBfX2dldGl0ZW1fXygpYGAgbWV0aG9kLCBzdWJjbGFzc2VzIG92ZXJyaWRpbmcgdGhpcyBtZXRob2Qgd2lsbCBuZWVkXG50byBleHBsaWNpdGx5IGFkZCB0aGF0IHN1cHBvcnQuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKICAndHJ1dGgnOiAiXG5UcnV0aCBWYWx1ZSBUZXN0aW5nXG4qKioqKioqKioqKioqKioqKioqXG5cbkFueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gYGBpZmBgIG9yXG5gYHdoaWxlYGAgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qIGBgTm9uZWBgXG5cbiogYGBGYWxzZWBgXG5cbiogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgYGAwYGAsIGBgMC4wYGAsIGBgMGpgYC5cblxuKiBhbnkgZW1wdHkgc2VxdWVuY2UsIGZvciBleGFtcGxlLCBgYCcnYGAsIGBgKClgYCwgYGBbXWBgLlxuXG4qIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgYGB7fWBgLlxuXG4qIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuICBgYF9fYm9vbF9fKClgYCBvciBgYF9fbGVuX18oKWBgIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuICBpbnRlZ2VyIHplcm8gb3IgYGBib29sYGAgdmFsdWUgYGBGYWxzZWBgLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuIGBgMGBgIG9yIGBgRmFsc2VgYCBmb3IgZmFsc2UgYW5kIGBgMWBgIG9yIGBgVHJ1ZWBgIGZvciB0cnVlLFxudW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zXG5gYG9yYGAgYW5kIGBgYW5kYGAgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuIiwKLSAndHJ5JzogJ1xuVGhlIGBgdHJ5YGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGBgdHJ5YGAgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSBgYGV4Y2VwdGBgIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlblxubm8gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgYGB0cnlgYCBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIHN1aXRlLCBhIHNlYXJjaCBmb3JcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0XG5jbGF1c2VzIGluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW5cbmV4cHJlc3Npb24tbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXNcbmFueSBleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXRcbmV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlXG5yZXN1bHRpbmcgb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXNcbmNvbXBhdGlibGUgd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGVcbmV4Y2VwdGlvbiBvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZVxuZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlIGBgdHJ5YGAgc3RhdGVtZW50XG5yYWlzZWQgdGhlIGV4Y2VwdGlvbikuXG5cbldoZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG50aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgYGBhc2BgIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLFxuaWYgcHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyBgYGFzIHRhcmdldGBgLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSBgYHN5c2BgIG1vZHVsZSBhbmQgY2FuIGJlIGFjY2VzcyB2aWFcbmBgc3lzLmV4Y19pbmZvKClgYC4gYGBzeXMuZXhjX2luZm8oKWBgIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2ZcbnRoZSBleGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdFxuKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW5cbnRoZSBwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICBgYHN5cy5leGNfaW5mbygpYGAgdmFsdWVzXG5hcmUgcmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsIGBgZWxzZWBgIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgYGB0cnlgYCBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSBgYGVsc2VgYCBjbGF1c2VcbmFyZSBub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nIGBgZXhjZXB0YGAgY2xhdXNlcy5cblxuSWYgYGBmaW5hbGx5YGAgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZVxuYGB0cnlgYCBjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgYGBleGNlcHRgYCBhbmQgYGBlbHNlYGBcbmNsYXVzZXMuICBJZiBhbiBleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90XG5oYW5kbGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgYGBmaW5hbGx5YGAgY2xhdXNlIGlzXG5leGVjdXRlZC4gIElmIHRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uLCBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZFxub2YgdGhlIGBgZmluYWxseWBgIGNsYXVzZS4gSWYgdGhlIGBgZmluYWxseWBgIGNsYXVzZSByYWlzZXMgYW5vdGhlclxuZXhjZXB0aW9uIG9yIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBvciBgYGJyZWFrYGAgc3RhdGVtZW50LCB0aGUgc2F2ZWRcbmV4Y2VwdGlvbiBpcyBzZXQgYXMgdGhlIGNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb24uICBUaGUgZXhjZXB0aW9uXG5pbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZyBleGVjdXRpb24gb2YgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UuXG5cbldoZW4gYSBgYHJldHVybmBgLCBgYGJyZWFrYGAgb3IgYGBjb250aW51ZWBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpblxudGhlIGBgdHJ5YGAgc3VpdGUgb2YgYSBgYHRyeWBgLi4uYGBmaW5hbGx5YGAgc3RhdGVtZW50LCB0aGVcbmBgZmluYWxseWBgIGNsYXVzZSBpcyBhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSBgYGNvbnRpbnVlYGBcbnN0YXRlbWVudCBpcyBpbGxlZ2FsIGluIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGFcbnByb2JsZW0gd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmVcbmxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgYGByYWlzZWBgIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG4nLAotICd0eXBlcyc6ICdcblRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeVxuKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkJlbG93IGlzIGEgbGlzdCBvZiB0aGUgdHlwZXMgdGhhdCBhcmUgYnVpbHQgaW50byBQeXRob24uICBFeHRlbnNpb25cbm1vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG5pbXBsZW1lbnRhdGlvbikgY2FuIGRlZmluZSBhZGRpdGlvbmFsIHR5cGVzLiAgRnV0dXJlIHZlcnNpb25zIG9mXG5QeXRob24gbWF5IGFkZCB0eXBlcyB0byB0aGUgdHlwZSBoaWVyYXJjaHkgKGUuZy4sIHJhdGlvbmFsIG51bWJlcnMsXG5lZmZpY2llbnRseSBzdG9yZWQgYXJyYXlzIG9mIGludGVnZXJzLCBldGMuKSwgYWx0aG91Z2ggc3VjaCBhZGRpdGlvbnNcbndpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG5cblNvbWUgb2YgdGhlIHR5cGUgZGVzY3JpcHRpb25zIGJlbG93IGNvbnRhaW4gYSBwYXJhZ3JhcGggbGlzdGluZ1xuXCdzcGVjaWFsIGF0dHJpYnV0ZXMuXCcgIFRoZXNlIGFyZSBhdHRyaWJ1dGVzIHRoYXQgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlXG5pbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciBkZWZpbml0aW9uXG5tYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbk5vbmVcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZSBgYE5vbmVgYC5cbiAgIEl0IGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucyxcbiAgIGUuZy4sIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICBgYE5vdEltcGxlbWVudGVkYGAuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBsaXRlcmFsIGBgLi4uYGAgb3IgdGhlXG4gICBidWlsdC1pbiBuYW1lIGBgRWxsaXBzaXNgYC4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5gYG51bWJlcnMuTnVtYmVyYGBcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICBgYG51bWJlcnMuSW50ZWdyYWxgYFxuICAgICAgVGhlc2UgcmVwcmVzZW50IGVsZW1lbnRzIGZyb20gdGhlIG1hdGhlbWF0aWNhbCBzZXQgb2YgaW50ZWdlcnNcbiAgICAgIChwb3NpdGl2ZSBhbmQgbmVnYXRpdmUpLlxuXG4gICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBJbnRlZ2VycyAoYGBpbnRgYClcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zIChgYGJvb2xgYClcbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCB0aGUgdHJ1dGggdmFsdWVzIEZhbHNlIGFuZCBUcnVlLiAgVGhlIHR3b1xuICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZSBhcmUgdGhlIG9ubHlcbiAgICAgICAgIEJvb2xlYW4gb2JqZWN0cy4gVGhlIEJvb2xlYW4gdHlwZSBpcyBhIHN1YnR5cGUgb2YgdGhlIGludGVnZXJcbiAgICAgICAgIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzIGBgIkZhbHNlImBgIG9yXG4gICAgICAgICBgYCJUcnVlImBgIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuXG4gICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgdGhlXG4gICAgICBtb3N0IG1lYW5pbmdmdWwgaW50ZXJwcmV0YXRpb24gb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9uc1xuICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzLlxuXG4gICBgYG51bWJlcnMuUmVhbGBgIChgYGZsb2F0YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGlzXG4gICAgICBkd2FyZmVkIGJ5IHRoZSBvdmVyaGVhZCBvZiB1c2luZyBvYmplY3RzIGluIFB5dGhvbiwgc28gdGhlcmUgaXNcbiAgICAgIG5vIHJlYXNvbiB0byBjb21wbGljYXRlIHRoZSBsYW5ndWFnZSB3aXRoIHR3byBraW5kcyBvZiBmbG9hdGluZ1xuICAgICAgcG9pbnQgbnVtYmVycy5cblxuICAgYGBudW1iZXJzLkNvbXBsZXhgYCAoYGBjb21wbGV4YGApXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciBgYHpgYCBjYW4gYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlIHJlYWQtb25seVxuICAgICAgYXR0cmlidXRlcyBgYHoucmVhbGBgIGFuZCBgYHouaW1hZ2BgLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZlxuICAgaXRlbXMgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGVcbiAgIGluZGV4IHNldCBjb250YWlucyB0aGUgbnVtYmVycyAwLCAxLCAuLi4sICpuKi0xLiAgSXRlbSAqaSogb2ZcbiAgIHNlcXVlbmNlICphKiBpcyBzZWxlY3RlZCBieSBgYGFbaV1gYC5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiBgYGFbaTpqXWBgIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqIGBgPD1gYCAqayogYGA8YGAgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6IGBgYVtpOmo6a11gYCBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCpcbiAgIHdoZXJlIGBgeCA9IGkgKyBuKmtgYCwgKm4qIGBgPj1gYCBgYDBgYCBhbmQgKmkqIGBgPD1gYCAqeCogYGA8YGBcbiAgICpqKi5cblxuICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuXG4gICBJbW11dGFibGUgc2VxdWVuY2VzXG4gICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0IGlzXG4gICAgICBjcmVhdGVkLiAgKElmIHRoZSBvYmplY3QgY29udGFpbnMgcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzLFxuICAgICAgdGhlc2Ugb3RoZXIgb2JqZWN0cyBtYXkgYmUgbXV0YWJsZSBhbmQgbWF5IGJlIGNoYW5nZWQ7IGhvd2V2ZXIsXG4gICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gaW1tdXRhYmxlXG4gICAgICBvYmplY3QgY2Fubm90IGNoYW5nZS4pXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZXM6XG5cbiAgICAgIFN0cmluZ3NcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHN0cmluZyBvYmplY3QgYXJlIFVuaWNvZGUgY29kZSB1bml0cy4gIEFcbiAgICAgICAgIFVuaWNvZGUgY29kZSB1bml0IGlzIHJlcHJlc2VudGVkIGJ5IGEgc3RyaW5nIG9iamVjdCBvZiBvbmVcbiAgICAgICAgIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWVcbiAgICAgICAgIHJlcHJlc2VudGluZyBhIFVuaWNvZGUgb3JkaW5hbCAodGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZVxuICAgICAgICAgb3JkaW5hbCBpcyBnaXZlbiBpbiBgYHN5cy5tYXh1bmljb2RlYGAsIGFuZCBkZXBlbmRzIG9uIGhvd1xuICAgICAgICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXlcbiAgICAgICAgIGJlIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d29cbiAgICAgICAgIHNlcGFyYXRlIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyBgYGNocigpYGAgYW5kXG4gICAgICAgICBgYG9yZCgpYGAgY29udmVydCBiZXR3ZWVuIGNvZGUgdW5pdHMgYW5kIG5vbm5lZ2F0aXZlIGludGVnZXJzXG4gICAgICAgICByZXByZXNlbnRpbmcgdGhlIFVuaWNvZGUgb3JkaW5hbHMgYXMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZVxuICAgICAgICAgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIG90aGVyIGVuY29kaW5ncyBhcmVcbiAgICAgICAgIHBvc3NpYmxlIHRocm91Z2ggdGhlIHN0cmluZyBtZXRob2QgYGBlbmNvZGUoKWBgLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19tb2R1bGVfX2BgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZGVmYXVsdHNfX2BgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBOb25lYGAgaWYgbm8gYXJndW1lbnRzICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhhdmUgYSBkZWZhdWx0IHZhbHVlICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fY29kZV9fYGAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fZ2xvYmFsc19fYGAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RpY3RfX2BgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Nsb3N1cmVfX2BgICAgICAgICAgICB8IGBgTm9uZWBgIG9yIGEgdHVwbGUgb2YgY2VsbHMgICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fYW5ub3RhdGlvbnNfX2BgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgYGBcJ3JldHVyblwnYGAgZm9yIHRoZSByZXR1cm4gIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19rd2RlZmF1bHRzX19gYCAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYF9fc2VsZl9fYGAgaXMgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICBvYmplY3QsIGBgX19mdW5jX19gYCBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyBgYF9fZG9jX19gYCBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzIGBgX19mdW5jX18uX19kb2NfX2BgKTtcbiAgICAgIGBgX19uYW1lX19gYCBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgYGBfX2Z1bmNfXy5fX25hbWVfX2BgKTtcbiAgICAgIGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZFxuICAgICAgaW4sIG9yIGBgTm9uZWBgIGlmIHVuYXZhaWxhYmxlLlxuXG4gICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlIGFyYml0cmFyeVxuICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0cyBtYXkgYmUgY3JlYXRlZCB3aGVuIGdldHRpbmcgYW5cbiAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgaWZcbiAgICAgIHRoYXQgYXR0cmlidXRlIGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBvciBhIGNsYXNzXG4gICAgICBtZXRob2Qgb2JqZWN0LlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1cbiAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsXG4gICAgICBpdHMgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kXG4gICAgICBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlIGBgX19mdW5jX19gYFxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyBgYF9fc2VsZl9fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzIGBgX19mdW5jX19gYCBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24gKGBgX19mdW5jX19gYCkgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoYGBfX3NlbGZfX2BgKSBpbiBmcm9udCBvZiB0aGUgYXJndW1lbnQgbGlzdC4gIEZvciBpbnN0YW5jZSxcbiAgICAgIHdoZW4gYGBDYGAgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGEgZnVuY3Rpb25cbiAgICAgIGBgZigpYGAsIGFuZCBgYHhgYCBpcyBhbiBpbnN0YW5jZSBvZiBgYENgYCwgY2FsbGluZyBgYHguZigxKWBgXG4gICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBDLmYoeCwgMSlgYC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzIG1ldGhvZFxuICAgICAgb2JqZWN0LCB0aGUgImNsYXNzIGluc3RhbmNlIiBzdG9yZWQgaW4gYGBfX3NlbGZfX2BgIHdpbGxcbiAgICAgIGFjdHVhbGx5IGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgYGB4LmYoMSlgYFxuICAgICAgb3IgYGBDLmYoMSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgYGBmKEMsMSlgYCB3aGVyZSBgYGZgYCBpc1xuICAgICAgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uICpUaGUgeWllbGQgc3RhdGVtZW50KikgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciBmdW5jdGlvbiouXG4gICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciBvYmplY3RcbiAgICAgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGV4ZWN1dGUgdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uOiAgY2FsbGluZ1xuICAgICAgdGhlIGl0ZXJhdG9yXCdzIGBgX19uZXh0X18oKWBgIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuICAgICAgZXhlY3V0ZSB1bnRpbCBpdCBwcm92aWRlcyBhIHZhbHVlIHVzaW5nIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50LlxuICAgICAgV2hlbiB0aGUgZnVuY3Rpb24gZXhlY3V0ZXMgYSBgYHJldHVybmBgIHN0YXRlbWVudCBvciBmYWxscyBvZmZcbiAgICAgIHRoZSBlbmQsIGEgYGBTdG9wSXRlcmF0aW9uYGAgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgYGBsZW4oKWBgIGFuZCBgYG1hdGguc2luKClgYFxuICAgICAgKGBgbWF0aGBgIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiBgYF9fZG9jX19gYCBpcyB0aGUgZnVuY3Rpb25cJ3MgZG9jdW1lbnRhdGlvblxuICAgICAgc3RyaW5nLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZTsgYGBfX25hbWVfX2BgIGlzIHRoZVxuICAgICAgZnVuY3Rpb25cJ3MgbmFtZTsgYGBfX3NlbGZfX2BgIGlzIHNldCB0byBgYE5vbmVgYCAoYnV0IHNlZSB0aGVcbiAgICAgIG5leHQgaXRlbSk7IGBgX19tb2R1bGVfX2BgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlXG4gICAgICBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgQnVpbHQtaW4gbWV0aG9kc1xuICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgdGhpc1xuICAgICAgdGltZSBjb250YWluaW5nIGFuIG9iamVjdCBwYXNzZWQgdG8gdGhlIEMgZnVuY3Rpb24gYXMgYW5cbiAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuICAgICAgYGBhbGlzdC5hcHBlbmQoKWBgLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgYGBfX3NlbGZfX2BgIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzZXNcbiAgICAgIENsYXNzZXMgYXJlIGNhbGxhYmxlLiAgVGhlc2Ugb2JqZWN0cyBub3JtYWxseSBhY3QgYXMgZmFjdG9yaWVzXG4gICAgICBmb3IgbmV3IGluc3RhbmNlcyBvZiB0aGVtc2VsdmVzLCBidXQgdmFyaWF0aW9ucyBhcmUgcG9zc2libGUgZm9yXG4gICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlIGBgX19uZXdfXygpYGAuICBUaGUgYXJndW1lbnRzIG9mIHRoZVxuICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvIGBgX19uZXdfXygpYGAgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgYGBfX2luaXRfXygpYGAgdG8gaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuXG4gICBDbGFzcyBJbnN0YW5jZXNcbiAgICAgIEluc3RhbmNlcyBvZiBhcmJpdHJhcnkgY2xhc3NlcyBjYW4gYmUgbWFkZSBjYWxsYWJsZSBieSBkZWZpbmluZ1xuICAgICAgYSBgYF9fY2FsbF9fKClgYCBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG5cbk1vZHVsZXNcbiAgIE1vZHVsZXMgYXJlIGltcG9ydGVkIGJ5IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCAoc2VlIHNlY3Rpb24gKlRoZVxuICAgaW1wb3J0IHN0YXRlbWVudCopLiBBIG1vZHVsZSBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5XG4gICBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlXG4gICBfX2dsb2JhbHNfXyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuXG4gICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54YGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXWBgLiBBIG1vZHVsZSBvYmplY3RcbiAgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXG4gICAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgYGBtLnggPSAxYGAgaXMgZXF1aXZhbGVudCB0byBgYG0uX19kaWN0X19bIngiXSA9IDFgYC5cblxuICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiBgYF9fZGljdF9fYGAgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBtb2R1bGVcJ3NcbiAgIG5hbWU7IGBgX19kb2NfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgXG4gICBpZiB1bmF2YWlsYWJsZTsgYGBfX2ZpbGVfX2BgIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoXG4gICB0aGUgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZVxuICAgYGBfX2ZpbGVfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlXG4gICBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzXG4gICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlXG4gICBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgYGBDLnhgYCBpcyB0cmFuc2xhdGVkIHRvXG4gICBgYEMuX19kaWN0X19bIngiXWBgIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2hcbiAgIGFsbG93IGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZyBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlXG4gICBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGF0dHJpYnV0ZSBzZWFyY2ggY29udGludWVzIGluIHRoZSBiYXNlXG4gICBjbGFzc2VzLiBUaGlzIHNlYXJjaCBvZiB0aGUgYmFzZSBjbGFzc2VzIHVzZXMgdGhlIEMzIG1ldGhvZFxuICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSBvZlxuICAgXCdkaWFtb25kXCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSBhcmUgbXVsdGlwbGVcbiAgIGluaGVyaXRhbmNlIHBhdGhzIGxlYWRpbmcgYmFjayB0byBhIGNvbW1vbiBhbmNlc3Rvci4gQWRkaXRpb25hbFxuICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbiAgIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuICAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzIGBgQ2BgLCBzYXkpIHdvdWxkIHlpZWxkXG4gICBhIGNsYXNzIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZXMgaXMgYGBDYGAuICBXaGVuIGl0IHdvdWxkIHlpZWxkXG4gICBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZFxuICAgYnkgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgYGBfX2RpY3RfX2BgLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgY2xhc3MgbmFtZTsgYGBfX21vZHVsZV9fYGBcbiAgIGlzIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7IGBgX19kaWN0X19gYCBpc1xuICAgdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyBgYF9fYmFzZXNfX2BgIGlzIGFcbiAgIHR1cGxlIChwb3NzaWJseSBlbXB0eSBvciBhIHNpbmdsZXRvbikgY29udGFpbmluZyB0aGUgYmFzZSBjbGFzc2VzLFxuICAgaW4gdGhlIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDtcbiAgIGBgX19kb2NfX2BgIGlzIHRoZSBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZlxuICAgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdFxuICAgd2hvc2UgYGBfX3NlbGZfX2BgIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wnc1xuICAgYGBfX2RpY3RfX2BgLiAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwnc1xuICAgY2xhc3MgaGFzIGEgYGBfX2dldGF0dHJfXygpYGAgbWV0aG9kLCB0aGF0IGlzIGNhbGxlZCB0byBzYXRpc2Z5IHRoZVxuICAgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgIGBgX19zZXRhdHRyX18oKWBgIG9yIGBgX19kZWxhdHRyX18oKWBgIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG5cbiAgIENsYXNzIGluc3RhbmNlcyBjYW4gcHJldGVuZCB0byBiZSBudW1iZXJzLCBzZXF1ZW5jZXMsIG9yIG1hcHBpbmdzXG4gICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4gICAqU3BlY2lhbCBtZXRob2QgbmFtZXMqLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6IGBgX19kaWN0X19gYCBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICBgYF9fY2xhc3NfX2BgIGlzIHRoZSBpbnN0YW5jZVwncyBjbGFzcy5cblxuSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuICAgQSAqZmlsZSBvYmplY3QqIHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgVmFyaW91cyBzaG9ydGN1dHMgYXJlXG4gICBhdmFpbGFibGUgdG8gY3JlYXRlIGZpbGUgb2JqZWN0czogdGhlIGBgb3BlbigpYGAgYnVpbHQtaW4gZnVuY3Rpb24sXG4gICBhbmQgYWxzbyBgYG9zLnBvcGVuKClgYCwgYGBvcy5mZG9wZW4oKWBgLCBhbmQgdGhlIGBgbWFrZWZpbGUoKWBgXG4gICBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMgKGFuZCBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzXG4gICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG5cbiAgIFRoZSBvYmplY3RzIGBgc3lzLnN0ZGluYGAsIGBgc3lzLnN0ZG91dGBgIGFuZCBgYHN5cy5zdGRlcnJgYCBhcmVcbiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlclwnc1xuICAgc3RhbmRhcmQgaW5wdXQsIG91dHB1dCBhbmQgZXJyb3Igc3RyZWFtczsgdGhleSBhcmUgYWxsIG9wZW4gaW4gdGV4dFxuICAgbW9kZSBhbmQgdGhlcmVmb3JlIGZvbGxvdyB0aGUgaW50ZXJmYWNlIGRlZmluZWQgYnkgdGhlXG4gICBgYGlvLlRleHRJT0Jhc2VgYCBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgY29fbmFtZWBgIGdpdmVzIHRoZSBmdW5jdGlvblxuICAgICAgbmFtZTsgYGBjb19hcmdjb3VudGBgIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHNcbiAgICAgIChpbmNsdWRpbmcgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyBgYGNvX25sb2NhbHNgYCBpcyB0aGVcbiAgICAgIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzKTsgYGBjb192YXJuYW1lc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2ZcbiAgICAgIHRoZSBsb2NhbCB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTtcbiAgICAgIGBgY29fY2VsbHZhcnNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsXG4gICAgICB2YXJpYWJsZXMgdGhhdCBhcmUgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zO1xuICAgICAgYGBjb19mcmVldmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZVxuICAgICAgdmFyaWFibGVzOyBgYGNvX2NvZGVgYCBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mXG4gICAgICBieXRlY29kZSBpbnN0cnVjdGlvbnM7IGBgY29fY29uc3RzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuICAgICAgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7IGBgY29fbmFtZXNgYCBpcyBhIHR1cGxlXG4gICAgICBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19maWxlbmFtZWBgIGlzXG4gICAgICB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICBgYGNvX2ZpcnN0bGluZW5vYGAgaXMgdGhlIGZpcnN0IGxpbmUgbnVtYmVyIG9mIHRoZSBmdW5jdGlvbjtcbiAgICAgIGBgY29fbG5vdGFiYGAgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7IGBgY29fc3RhY2tzaXplYGAgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgYGBjb19mbGFnc2BgIGlzIGFuIGludGVnZXIgZW5jb2RpbmdcbiAgICAgIGEgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG5cbiAgICAgIFRoZSBmb2xsb3dpbmcgZmxhZyBiaXRzIGFyZSBkZWZpbmVkIGZvciBgYGNvX2ZsYWdzYGA6IGJpdFxuICAgICAgYGAweDA0YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCphcmd1bWVudHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXRcbiAgICAgIGBgMHgwOGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgYGAqKmtleXdvcmRzYGAgc3ludGF4XG4gICAgICB0byBhY2NlcHQgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzOyBiaXQgYGAweDIwYGAgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gaXMgYSBnZW5lcmF0b3IuXG5cbiAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0XG4gICAgICBkaXZpc2lvbmBgKSBhbHNvIHVzZSBiaXRzIGluIGBgY29fZmxhZ3NgYCB0byBpbmRpY2F0ZSB3aGV0aGVyIGFcbiAgICAgIGNvZGUgb2JqZWN0IHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdFxuICAgICAgYGAweDIwMDBgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZVxuICAgICAgZGl2aXNpb24gZW5hYmxlZDsgYml0cyBgYDB4MTBgYCBhbmQgYGAweDEwMDBgYCB3ZXJlIHVzZWQgaW5cbiAgICAgIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluIGBgY29fZmxhZ3NgYCBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cblxuICAgICAgSWYgYSBjb2RlIG9iamVjdCByZXByZXNlbnRzIGEgZnVuY3Rpb24sIHRoZSBmaXJzdCBpdGVtIGluXG4gICAgICBgYGNvX2NvbnN0c2BgIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICBgYE5vbmVgYCBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgZl9iYWNrYGAgaXMgdG8gdGhlIHByZXZpb3VzXG4gICAgICBzdGFjayBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgYGBOb25lYGAgaWYgdGhpcyBpcyB0aGVcbiAgICAgIGJvdHRvbSBzdGFjayBmcmFtZTsgYGBmX2NvZGVgYCBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWRcbiAgICAgIGluIHRoaXMgZnJhbWU7IGBgZl9sb2NhbHNgYCBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXBcbiAgICAgIGxvY2FsIHZhcmlhYmxlczsgYGBmX2dsb2JhbHNgYCBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgYGBmX2J1aWx0aW5zYGAgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7XG4gICAgICBgYGZfbGFzdGlgYCBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvXG4gICAgICB0aGUgYnl0ZWNvZGUgc3RyaW5nIG9mIHRoZSBjb2RlIG9iamVjdCkuXG5cbiAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogYGBmX3RyYWNlYGAsIGlmIG5vdCBgYE5vbmVgYCwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgYGBmX2xpbmVub2BgIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyXG4gICAgICBvZiB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uXG4gICAgICBqdW1wcyB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlIGJvdHRvbS1tb3N0IGZyYW1lKS4gIEFcbiAgICAgIGRlYnVnZ2VyIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpXG4gICAgICBieSB3cml0aW5nIHRvIGZfbGluZW5vLlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICAqVGhlIHRyeSBzdGF0ZW1lbnQqLikgSXQgaXMgYWNjZXNzaWJsZSBhcyB0aGUgdGhpcmQgaXRlbSBvZiB0aGVcbiAgICAgIHR1cGxlIHJldHVybmVkIGJ5IGBgc3lzLmV4Y19pbmZvKClgYC4gV2hlbiB0aGUgcHJvZ3JhbSBjb250YWluc1xuICAgICAgbm8gc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrIHRyYWNlIGlzIHdyaXR0ZW4gKG5pY2VseVxuICAgICAgZm9ybWF0dGVkKSB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXNcbiAgICAgIGludGVyYWN0aXZlLCBpdCBpcyBhbHNvIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSB1c2VyIGFzXG4gICAgICBgYHN5cy5sYXN0X3RyYWNlYmFja2BgLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHRiX25leHRgYCBpcyB0aGUgbmV4dCBsZXZlbCBpblxuICAgICAgdGhlIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZCksIG9yIGBgTm9uZWBgIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7IGBgdGJfZnJhbWVgYFxuICAgICAgcG9pbnRzIHRvIHRoZSBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7XG4gICAgICBgYHRiX2xpbmVub2BgIGdpdmVzIHRoZSBsaW5lIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uXG4gICAgICBvY2N1cnJlZDsgYGB0Yl9sYXN0aWBgIGluZGljYXRlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZVxuICAgICAgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIHRyYWNlYmFjayBtYXkgZGlmZmVyXG4gICAgICBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWUgb2JqZWN0IGlmIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkIGluIGEgYGB0cnlgYCBzdGF0ZW1lbnQgd2l0aCBubyBtYXRjaGluZyBleGNlcHQgY2xhdXNlXG4gICAgICBvciB3aXRoIGEgZmluYWxseSBjbGF1c2UuXG5cbiAgIFNsaWNlIG9iamVjdHNcbiAgICAgIFNsaWNlIG9iamVjdHMgYXJlIHVzZWQgdG8gcmVwcmVzZW50IHNsaWNlcyBmb3IgYGBfX2dldGl0ZW1fXygpYGBcbiAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluIGBgc2xpY2UoKWBgXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBzdGFydGBgIGlzIHRoZSBsb3dlciBib3VuZDtcbiAgICAgIGBgc3RvcGBgIGlzIHRoZSB1cHBlciBib3VuZDsgYGBzdGVwYGAgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXNcbiAgICAgIGBgTm9uZWBgIGlmIG9taXR0ZWQuIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG5cbiAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuXG4gICAgICBzbGljZS5pbmRpY2VzKHNlbGYsIGxlbmd0aClcblxuICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbiAgICAgICAgIGNvbXB1dGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzbGljZSB0aGF0IHRoZSBzbGljZSBvYmplY3RcbiAgICAgICAgIHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAqbGVuZ3RoKiBpdGVtcy5cbiAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlIGFyZVxuICAgICAgICAgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqIG9yIHN0cmlkZVxuICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4gICAgICAgICBoYW5kbGVkIGluIGEgbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcy5cblxuICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4gICAgICBTdGF0aWMgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSBhIHdheSBvZiBkZWZlYXRpbmcgdGhlXG4gICAgICB0cmFuc2Zvcm1hdGlvbiBvZiBmdW5jdGlvbiBvYmplY3RzIHRvIG1ldGhvZCBvYmplY3RzIGRlc2NyaWJlZFxuICAgICAgYWJvdmUuIEEgc3RhdGljIG1ldGhvZCBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhbnkgb3RoZXJcbiAgICAgIG9iamVjdCwgdXN1YWxseSBhIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LiBXaGVuIGEgc3RhdGljXG4gICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgdGhlXG4gICAgICBvYmplY3QgYWN0dWFsbHkgcmV0dXJuZWQgaXMgdGhlIHdyYXBwZWQgb2JqZWN0LCB3aGljaCBpcyBub3RcbiAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmVcbiAgICAgIG5vdCB0aGVtc2VsdmVzIGNhbGxhYmxlLCBhbHRob3VnaCB0aGUgb2JqZWN0cyB0aGV5IHdyYXAgdXN1YWxseVxuICAgICAgYXJlLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICBgYHN0YXRpY21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gYGBjbGFzc21ldGhvZCgpYGAgY29uc3RydWN0b3IuXG4nLAorICd0cnknOiAnXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB0cnlgYCBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIHRhcmdldF1dICI6IiBzdWl0ZSkrXG4gICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbiAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcblxuVGhlIGBgZXhjZXB0YGAgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuXG5ubyBleGNlcHRpb24gb2NjdXJzIGluIHRoZSBgYHRyeWBgIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIGBgdHJ5YGAgc3VpdGUsIGEgc2VhcmNoIGZvclxuYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHRcbmNsYXVzZXMgaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBblxuZXhwcmVzc2lvbi1sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlc1xuYW55IGV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdFxuZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGVcbnJlc3VsdGluZyBvYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpc1xuY29tcGF0aWJsZSB3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZVxuZXhjZXB0aW9uIG9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlXG5leGNlcHRpb24uXG5cbklmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiBleGNlcHRpb25cbmhhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiBzdGFjay5cblsxXVxuXG5JZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxucmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkIGFuZFxuYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbnRoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgYGB0cnlgYCBzdGF0ZW1lbnRcbnJhaXNlZCB0aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSBgYGFzYGAga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsXG5pZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nIGBgYXMgdGFyZ2V0YGAsIGl0IGlzIGNsZWFyZWRcbmF0IHRoZSBlbmQgb2YgdGhlIGV4Y2VwdCBjbGF1c2UuICBUaGlzIGlzIGFzIGlmXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgZm9vXG5cbndhcyB0cmFuc2xhdGVkIHRvXG5cbiAgIGV4Y2VwdCBFIGFzIE46XG4gICAgICAgdHJ5OlxuICAgICAgICAgICBmb29cbiAgICAgICBmaW5hbGx5OlxuICAgICAgICAgICBkZWwgTlxuXG5UaGlzIG1lYW5zIHRoZSBleGNlcHRpb24gbXVzdCBiZSBhc3NpZ25lZCB0byBhIGRpZmZlcmVudCBuYW1lIHRvIGJlXG5hYmxlIHRvIHJlZmVyIHRvIGl0IGFmdGVyIHRoZSBleGNlcHQgY2xhdXNlLiAgRXhjZXB0aW9ucyBhcmUgY2xlYXJlZFxuYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgcmVmZXJlbmNlXG5jeWNsZSB3aXRoIHRoZSBzdGFjayBmcmFtZSwga2VlcGluZyBhbGwgbG9jYWxzIGluIHRoYXQgZnJhbWUgYWxpdmVcbnVudGlsIHRoZSBuZXh0IGdhcmJhZ2UgY29sbGVjdGlvbiBvY2N1cnMuXG5cbkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLCBkZXRhaWxzIGFib3V0IHRoZVxuZXhjZXB0aW9uIGFyZSBzdG9yZWQgaW4gdGhlIGBgc3lzYGAgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzIHZpYVxuYGBzeXMuZXhjX2luZm8oKWBgLiBgYHN5cy5leGNfaW5mbygpYGAgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZlxudGhlIGV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0XG4oc2VlIHNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpblxudGhlIHByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gIGBgc3lzLmV4Y19pbmZvKClgYCB2YWx1ZXNcbmFyZSByZXN0b3JlZCB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmdcbmZyb20gYSBmdW5jdGlvbiB0aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgYGBlbHNlYGAgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSBgYHRyeWBgIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlIGBgZWxzZWBgIGNsYXVzZVxuYXJlIG5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgYGBleGNlcHRgYCBjbGF1c2VzLlxuXG5JZiBgYGZpbmFsbHlgYCBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlXG5gYHRyeWBgIGNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSBgYGV4Y2VwdGBgIGFuZCBgYGVsc2VgYFxuY2xhdXNlcy4gIElmIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3RcbmhhbmRsZWQsIHRoZSBleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgaXNcbmV4ZWN1dGVkLiAgSWYgdGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24gb3IgYGBicmVha2BgIHN0YXRlbWVudCwgaXQgaXNcbnJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UuIElmIHRoZSBgYGZpbmFsbHlgYFxuY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzIHNldCBhcyB0aGVcbmNvbnRleHQgb2YgdGhlIG5ldyBleGNlcHRpb247IGlmIHRoZSBgYGZpbmFsbHlgYCBjbGF1c2UgZXhlY3V0ZXMgYVxuYGByZXR1cm5gYCBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb24gaXMgZGlzY2FyZGVkOlxuXG4gICBkZWYgZigpOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgMS8wXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgcmV0dXJuIDQyXG5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLlxuXG5XaGVuIGEgYGByZXR1cm5gYCwgYGBicmVha2BgIG9yIGBgY29udGludWVgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW5cbnRoZSBgYHRyeWBgIHN1aXRlIG9mIGEgYGB0cnlgYC4uLmBgZmluYWxseWBgIHN0YXRlbWVudCwgdGhlXG5gYGZpbmFsbHlgYCBjbGF1c2UgaXMgYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgYGBjb250aW51ZWBgXG5zdGF0ZW1lbnQgaXMgaWxsZWdhbCBpbiB0aGUgYGBmaW5hbGx5YGAgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhXG5wcm9ibGVtIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlXG5saWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlIGBgcmFpc2VgYCBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKKyAndHlwZXMnOiAnXG5UaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHlcbioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5CZWxvdyBpcyBhIGxpc3Qgb2YgdGhlIHR5cGVzIHRoYXQgYXJlIGJ1aWx0IGludG8gUHl0aG9uLiAgRXh0ZW5zaW9uXG5tb2R1bGVzICh3cml0dGVuIGluIEMsIEphdmEsIG9yIG90aGVyIGxhbmd1YWdlcywgZGVwZW5kaW5nIG9uIHRoZVxuaW1wbGVtZW50YXRpb24pIGNhbiBkZWZpbmUgYWRkaXRpb25hbCB0eXBlcy4gIEZ1dHVyZSB2ZXJzaW9ucyBvZlxuUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCBudW1iZXJzLFxuZWZmaWNpZW50bHkgc3RvcmVkIGFycmF5cyBvZiBpbnRlZ2VycywgZXRjLiksIGFsdGhvdWdoIHN1Y2ggYWRkaXRpb25zXG53aWxsIG9mdGVuIGJlIHByb3ZpZGVkIHZpYSB0aGUgc3RhbmRhcmQgbGlicmFyeSBpbnN0ZWFkLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgYGBOb25lYGAuXG4gICBJdCBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsXG4gICBlLmcuLCBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVyblxuICAgYW55dGhpbmcuIEl0cyB0cnV0aCB2YWx1ZSBpcyBmYWxzZS5cblxuTm90SW1wbGVtZW50ZWRcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuICAgYGBOb3RJbXBsZW1lbnRlZGBgLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIG1heVxuICAgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIHRoZVxuICAgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlIHJlZmxlY3RlZFxuICAgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yLikgIEl0c1xuICAgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCBgYC4uLmBgIG9yIHRoZVxuICAgYnVpbHQtaW4gbmFtZSBgYEVsbGlwc2lzYGAuICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuYGBudW1iZXJzLk51bWJlcmBgXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgYGBudW1iZXJzLkludGVncmFsYGBcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBpbnRlZ2VyczpcblxuICAgICAgSW50ZWdlcnMgKGBgaW50YGApXG5cbiAgICAgICAgIFRoZXNlIHJlcHJlc2VudCBudW1iZXJzIGluIGFuIHVubGltaXRlZCByYW5nZSwgc3ViamVjdCB0b1xuICAgICAgICAgYXZhaWxhYmxlICh2aXJ0dWFsKSBtZW1vcnkgb25seS4gIEZvciB0aGUgcHVycG9zZSBvZiBzaGlmdFxuICAgICAgICAgYW5kIG1hc2sgb3BlcmF0aW9ucywgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gaXMgYXNzdW1lZCwgYW5kXG4gICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMlwnc1xuICAgICAgICAgY29tcGxlbWVudCB3aGljaCBnaXZlcyB0aGUgaWxsdXNpb24gb2YgYW4gaW5maW5pdGUgc3RyaW5nIG9mXG4gICAgICAgICBzaWduIGJpdHMgZXh0ZW5kaW5nIHRvIHRoZSBsZWZ0LlxuXG4gICAgICBCb29sZWFucyAoYGBib29sYGApXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgRmFsc2UgYW5kIFRydWUgYXJlIHRoZSBvbmx5XG4gICAgICAgICBCb29sZWFuIG9iamVjdHMuIFRoZSBCb29sZWFuIHR5cGUgaXMgYSBzdWJ0eXBlIG9mIHRoZSBpbnRlZ2VyXG4gICAgICAgICB0eXBlLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZCAxLFxuICAgICAgICAgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uIGJlaW5nXG4gICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyBgYCJGYWxzZSJgYCBvclxuICAgICAgICAgYGAiVHJ1ZSJgYCBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgYGBudW1iZXJzLlJlYWxgYCAoYGBmbG9hdGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBpc1xuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgIGBgbnVtYmVycy5Db21wbGV4YGAgKGBgY29tcGxleGBgKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgYGB6YGAgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgYGB6LnJlYWxgYCBhbmQgYGB6LmltYWdgYC5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uIGBgbGVuKClgYCByZXR1cm5zIHRoZSBudW1iZXIgb2ZcbiAgIGl0ZW1zIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlXG4gICBpbmRleCBzZXQgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mXG4gICBzZXF1ZW5jZSAqYSogaXMgc2VsZWN0ZWQgYnkgYGBhW2ldYGAuXG5cbiAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogYGBhW2k6al1gYCBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiBgYDw9YGAgKmsqIGBgPGBgICpqKi4gIFdoZW4gdXNlZCBhcyBhblxuICAgZXhwcmVzc2lvbiwgYSBzbGljZSBpcyBhIHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUuICBUaGlzIGltcGxpZXNcbiAgIHRoYXQgdGhlIGluZGV4IHNldCBpcyByZW51bWJlcmVkIHNvIHRoYXQgaXQgc3RhcnRzIGF0IDAuXG5cbiAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICJzdGVwIlxuICAgcGFyYW1ldGVyOiBgYGFbaTpqOmtdYGAgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqXG4gICB3aGVyZSBgYHggPSBpICsgbiprYGAsICpuKiBgYD49YGAgYGAwYGAgYW5kICppKiBgYDw9YGAgKngqIGBgPGBgXG4gICAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlXG4gICAgICAgICBjb2RlcG9pbnRzLiBBbGwgdGhlIGNvZGVwb2ludHMgaW4gcmFuZ2UgYGBVKzAwMDAgLSBVKzEwRkZGRmBgXG4gICAgICAgICBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gYSBzdHJpbmcuICBQeXRob24gZG9lc25cJ3QgaGF2ZSBhXG4gICAgICAgICBgYGNocmBgIHR5cGUsIGFuZCBldmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZyBpc1xuICAgICAgICAgcmVwcmVzZW50ZWQgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoIGBgMWBgLiAgVGhlIGJ1aWx0LVxuICAgICAgICAgaW4gZnVuY3Rpb24gYGBvcmQoKWBgIGNvbnZlcnRzIGEgY2hhcmFjdGVyIHRvIGl0cyBjb2RlcG9pbnRcbiAgICAgICAgIChhcyBhbiBpbnRlZ2VyKTsgYGBjaHIoKWBgIGNvbnZlcnRzIGFuIGludGVnZXIgaW4gcmFuZ2UgYGAwIC1cbiAgICAgICAgIDEwRkZGRmBgIHRvIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rlci4gYGBzdHIuZW5jb2RlKClgYCBjYW5cbiAgICAgICAgIGJlIHVzZWQgdG8gY29udmVydCBhIGBgc3RyYGAgdG8gYGBieXRlc2BgIHVzaW5nIHRoZSBnaXZlblxuICAgICAgICAgZW5jb2RpbmcsIGFuZCBgYGJ5dGVzLmRlY29kZSgpYGAgY2FuIGJlIHVzZWQgdG8gYWNoaWV2ZSB0aGVcbiAgICAgICAgIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSBgYGJcJ2FiY1wnYGAgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgYGBieXRlcygpYGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgYGBkZWNvZGUoKWBgXG4gICAgICAgICBtZXRob2QuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kIGBgZGVsYGAgKGRlbGV0ZSkgc3RhdGVtZW50cy5cblxuICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG5cbiAgICAgIExpc3RzXG4gICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyBhcmVcbiAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaW5cbiAgICAgICAgIHNxdWFyZSBicmFja2V0cy4gKE5vdGUgdGhhdCB0aGVyZSBhcmUgbm8gc3BlY2lhbCBjYXNlcyBuZWVkZWRcbiAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG5cbiAgICAgIEJ5dGUgQXJyYXlzXG4gICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkIGJ5XG4gICAgICAgICB0aGUgYnVpbHQtaW4gYGBieXRlYXJyYXkoKWBgIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgYGBhcnJheWBgIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZlxuICAgICAgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gYGBsZW4oKWBgXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCBgYDFgYCBhbmRcbiAgIGBgMS4wYGApLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgYGBzZXQoKWBgIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzIGBgYWRkKClgYC5cblxuICAgRnJvemVuIHNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhbiBpbW11dGFibGUgc2V0LiAgVGhleSBhcmUgY3JlYXRlZCBieSB0aGVcbiAgICAgIGJ1aWx0LWluIGBgZnJvemVuc2V0KClgYCBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzXG4gICAgICBpbW11dGFibGUgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2ZcbiAgICAgIGFub3RoZXIgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gYGBhW2tdYGAgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5XG4gICBgYGtgYCBmcm9tIHRoZSBtYXBwaW5nIGBgYWBgOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZFxuICAgYXMgdGhlIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciBgYGRlbGBgIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pblxuICAgZnVuY3Rpb24gYGBsZW4oKWBgIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG5cbiAgIFRoZXJlIGlzIGN1cnJlbnRseSBhIHNpbmdsZSBpbnRyaW5zaWMgbWFwcGluZyB0eXBlOlxuXG4gICBEaWN0aW9uYXJpZXNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgc2V0cyBvZiBvYmplY3RzIGluZGV4ZWQgYnkgbmVhcmx5XG4gICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlIGFzXG4gICAgICBrZXlzIGFyZSB2YWx1ZXMgY29udGFpbmluZyBsaXN0cyBvciBkaWN0aW9uYXJpZXMgb3Igb3RoZXJcbiAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG4gICAgICBpZGVudGl0eSwgdGhlIHJlYXNvbiBiZWluZyB0aGF0IHRoZSBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgIGRpY3Rpb25hcmllcyByZXF1aXJlcyBhIGtleVwncyBoYXNoIHZhbHVlIHRvIHJlbWFpbiBjb25zdGFudC5cbiAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWNcbiAgICAgIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWwgKGUuZy4sIGBgMWBgIGFuZFxuICAgICAgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBgYHsuLi59YGBcbiAgICAgIG5vdGF0aW9uIChzZWUgc2VjdGlvbiAqRGljdGlvbmFyeSBkaXNwbGF5cyopLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgYGBkYm0ubmRibWBgIGFuZCBgYGRibS5nbnVgYCBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlXG4gICAgICBgYGNvbGxlY3Rpb25zYGAgbW9kdWxlLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiAqQ2FsbHMqKSBjYW4gYmUgYXBwbGllZDpcblxuICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuICAgICAgZGVmaW5pdGlvbiAoc2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKikuICBJdCBzaG91bGQgYmVcbiAgICAgIGNhbGxlZCB3aXRoIGFuIGFyZ3VtZW50IGxpc3QgY29udGFpbmluZyB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXNcbiAgICAgIGFzIHRoZSBmdW5jdGlvblwncyBmb3JtYWwgcGFyYW1ldGVyIGxpc3QuXG5cbiAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcblxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09K1xuICAgICAgfCBgYF9fZG9jX19gYCAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGUgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19uYW1lX19gYCAgICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19xdWFsbmFtZV9fYGAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCBuYW1lKiB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5ldyBpbiB2ZXJzaW9uIDMuMy4gICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fbW9kdWxlX19gYCAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS4gICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2RlZmF1bHRzX19gYCAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudCB2YWx1ZXMgZm9yIHRob3NlICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgTm9uZWBgIGlmIG5vIGFyZ3VtZW50cyAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2NvZGVfX2BgICAgICAgICAgICAgICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29tcGlsZWQgZnVuY3Rpb24gYm9keS4gICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2dsb2JhbHNfX2BgICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGF0IGhvbGRzIHRoZSBmdW5jdGlvblwncyAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hpY2ggdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkLiB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19kaWN0X19gYCAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJiaXRyYXJ5IGZ1bmN0aW9uIGF0dHJpYnV0ZXMuICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IGBgX19jbG9zdXJlX19gYCAgICAgICAgICAgfCBgYE5vbmVgYCBvciBhIHR1cGxlIG9mIGNlbGxzICAgIHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhhdCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uXCdzIGZyZWUgdmFyaWFibGVzLiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgYGBfX2Fubm90YXRpb25zX19gYCAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvZiBwYXJhbWV0ZXJzLiAgVGhlIGtleXMgb2YgdGhlIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGljdCBhcmUgdGhlIHBhcmFtZXRlciBuYW1lcywgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yIGBgXCdyZXR1cm5cJ2BgIGZvciB0aGUgcmV0dXJuICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFubm90YXRpb24sIGlmIHByb3ZpZGVkLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCBgYF9fa3dkZWZhdWx0c19fYGAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleXdvcmQtb25seSBwYXJhbWV0ZXJzLiAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuXG4gICAgICBNb3N0IG9mIHRoZSBhdHRyaWJ1dGVzIGxhYmVsbGVkICJXcml0YWJsZSIgY2hlY2sgdGhlIHR5cGUgb2YgdGhlXG4gICAgICBhc3NpZ25lZCB2YWx1ZS5cblxuICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbiAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoIG1ldGFkYXRhXG4gICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgYW5kXG4gICAgICBzZXQgc3VjaCBhdHRyaWJ1dGVzLiAqTm90ZSB0aGF0IHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHlcbiAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gRnVuY3Rpb25cbiAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4gICAgICBmdXR1cmUuKlxuXG4gICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb25cJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiAgICAgIHJldHJpZXZlZCBmcm9tIGl0cyBjb2RlIG9iamVjdDsgc2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBpbnRlcm5hbFxuICAgICAgdHlwZXMgYmVsb3cuXG5cbiAgIEluc3RhbmNlIG1ldGhvZHNcbiAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSBhbmRcbiAgICAgIGFueSBjYWxsYWJsZSBvYmplY3QgKG5vcm1hbGx5IGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBfX3NlbGZfX2BgIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCBgYF9fZnVuY19fYGAgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgYGBfX2RvY19fYGAgaXMgdGhlXG4gICAgICBtZXRob2RcJ3MgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyBgYF9fZnVuY19fLl9fZG9jX19gYCk7XG4gICAgICBgYF9fbmFtZV9fYGAgaXMgdGhlIG1ldGhvZCBuYW1lIChzYW1lIGFzIGBgX19mdW5jX18uX19uYW1lX19gYCk7XG4gICAgICBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWRcbiAgICAgIGluLCBvciBgYE5vbmVgYCBpZiB1bmF2YWlsYWJsZS5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItXG4gICAgICBkZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MgdmlhIG9uZSBvZiBpdHMgaW5zdGFuY2VzLFxuICAgICAgaXRzIGBgX19zZWxmX19gYCBhdHRyaWJ1dGUgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZFxuICAgICAgb2JqZWN0IGlzIHNhaWQgdG8gYmUgYm91bmQuICBUaGUgbmV3IG1ldGhvZFwncyBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSBgYF9fZnVuY19fYGBcbiAgICAgIGF0dHJpYnV0ZSBvZiB0aGUgbmV3IGluc3RhbmNlIGlzIG5vdCB0aGUgb3JpZ2luYWwgbWV0aG9kIG9iamVjdFxuICAgICAgYnV0IGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlLlxuXG4gICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCBpdHMgYGBfX3NlbGZfX2BgXG4gICAgICBhdHRyaWJ1dGUgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyBgYF9fZnVuY19fYGAgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgZnVuY3Rpb24gb2JqZWN0IHVuZGVybHlpbmcgdGhlIGNsYXNzIG1ldGhvZC5cblxuICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlIHVuZGVybHlpbmdcbiAgICAgIGZ1bmN0aW9uIChgYF9fZnVuY19fYGApIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgKGBgX19zZWxmX19gYCkgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsXG4gICAgICB3aGVuIGBgQ2BgIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uXG4gICAgICBgYGYoKWBgLCBhbmQgYGB4YGAgaXMgYW4gaW5zdGFuY2Ugb2YgYGBDYGAsIGNhbGxpbmcgYGB4LmYoMSlgYFxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgQy5mKHgsIDEpYGAuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluIGBgX19zZWxmX19gYCB3aWxsXG4gICAgICBhY3R1YWxseSBiZSB0aGUgY2xhc3MgaXRzZWxmLCBzbyB0aGF0IGNhbGxpbmcgZWl0aGVyIGBgeC5mKDEpYGBcbiAgICAgIG9yIGBgQy5mKDEpYGAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgZihDLDEpYGAgd2hlcmUgYGBmYGAgaXNcbiAgICAgIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uLlxuXG4gICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvIGluc3RhbmNlXG4gICAgICBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXMgcmV0cmlldmVkIGZyb21cbiAgICAgIHRoZSBpbnN0YW5jZS4gIEluIHNvbWUgY2FzZXMsIGEgZnJ1aXRmdWwgb3B0aW1pemF0aW9uIGlzIHRvXG4gICAgICBhc3NpZ24gdGhlIGF0dHJpYnV0ZSB0byBhIGxvY2FsIHZhcmlhYmxlIGFuZCBjYWxsIHRoYXQgbG9jYWxcbiAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zIGZvclxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgb2JqZWN0cyAoYW5kIGFsbCBub24tXG4gICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCBpc1xuICAgICAgYWxzbyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgd2hpY2ggYXJlXG4gICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbiAgICAgIG1ldGhvZHM7IHRoaXMgKm9ubHkqIGhhcHBlbnMgd2hlbiB0aGUgZnVuY3Rpb24gaXMgYW4gYXR0cmlidXRlXG4gICAgICBvZiB0aGUgY2xhc3MuXG5cbiAgIEdlbmVyYXRvciBmdW5jdGlvbnNcbiAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyBgYF9fbmV4dF9fKClgYCBtZXRob2Qgd2lsbCBjYXVzZSB0aGUgZnVuY3Rpb24gdG9cbiAgICAgIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudC5cbiAgICAgIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgYGByZXR1cm5gYCBzdGF0ZW1lbnQgb3IgZmFsbHMgb2ZmXG4gICAgICB0aGUgZW5kLCBhIGBgU3RvcEl0ZXJhdGlvbmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZVxuICAgICAgaXRlcmF0b3Igd2lsbCBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZVxuICAgICAgcmV0dXJuZWQuXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlIGBgbGVuKClgYCBhbmQgYGBtYXRoLnNpbigpYGBcbiAgICAgIChgYG1hdGhgYCBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogYGBfX2RvY19fYGAgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGU7IGBgX19uYW1lX19gYCBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uXCdzIG5hbWU7IGBgX19zZWxmX19gYCBpcyBzZXQgdG8gYGBOb25lYGAgKGJ1dCBzZWUgdGhlXG4gICAgICBuZXh0IGl0ZW0pOyBgYF9fbW9kdWxlX19gYCBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZVxuICAgICAgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4gb3IgYGBOb25lYGAgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgIGBgYWxpc3QuYXBwZW5kKClgYCwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4gICAgICBjYXNlLCB0aGUgc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlIGBgX19zZWxmX19gYCBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSBgYF9fbmV3X18oKWBgLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbiAgICAgIGNhbGwgYXJlIHBhc3NlZCB0byBgYF9fbmV3X18oKWBgIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbiAgICAgIGBgX19pbml0X18oKWBgIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgYGBfX2NhbGxfXygpYGAgbWV0aG9kIGluIHRoZWlyIGNsYXNzLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBhIGJhc2ljIG9yZ2FuaXphdGlvbmFsIHVuaXQgb2YgUHl0aG9uIGNvZGUsIGFuZCBhcmVcbiAgIGNyZWF0ZWQgYnkgdGhlICppbXBvcnQgc3lzdGVtKiBhcyBpbnZva2VkIGVpdGhlciBieSB0aGUgYGBpbXBvcnRgYFxuICAgc3RhdGVtZW50IChzZWUgYGBpbXBvcnRgYCksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgIGBgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKWBgIGFuZCBidWlsdC1pbiBgYF9faW1wb3J0X18oKWBgLiAgQVxuICAgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdFxuICAgKHRoaXMgaXMgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgYGBfX2dsb2JhbHNfX2BgIGF0dHJpYnV0ZVxuICAgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sIGBgbS54YGAgaXNcbiAgIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il1gYC4gQSBtb2R1bGUgb2JqZWN0IGRvZXMgbm90IGNvbnRhaW5cbiAgIHRoZSBjb2RlIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZSAoc2luY2UgaXQgaXNuXCd0XG4gICBuZWVkZWQgb25jZSB0aGUgaW5pdGlhbGl6YXRpb24gaXMgZG9uZSkuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50IHVwZGF0ZXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2UgZGljdGlvbmFyeSxcbiAgIGUuZy4sIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuXG5cbiAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogYGBfX2RpY3RfX2BgIGlzIHRoZSBtb2R1bGVcJ3MgbmFtZXNwYWNlXG4gICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuXG4gICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4gICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZFxuICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsIGhhc1xuICAgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeSBvciBrZWVwIHRoZVxuICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6IGBgX19uYW1lX19gYCBpcyB0aGUgbW9kdWxlXCdzXG4gICBuYW1lOyBgYF9fZG9jX19gYCBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBgYE5vbmVgYFxuICAgaWYgdW5hdmFpbGFibGU7IGBgX19maWxlX19gYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaFxuICAgdGhlIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGVcbiAgIGBgX19maWxlX19gYCBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcyxcbiAgIHN1Y2ggYXMgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyO1xuICAgZm9yIGV4dGVuc2lvbiBtb2R1bGVzIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0XG4gICBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG5cbkN1c3RvbSBjbGFzc2VzXG4gICBDdXN0b20gY2xhc3MgdHlwZXMgYXJlIHR5cGljYWxseSBjcmVhdGVkIGJ5IGNsYXNzIGRlZmluaXRpb25zIChzZWVcbiAgIHNlY3Rpb24gKkNsYXNzIGRlZmluaXRpb25zKikuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZFxuICAgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWRcbiAgIHRvIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCBgYEMueGBgIGlzIHRyYW5zbGF0ZWQgdG9cbiAgIGBgQy5fX2RpY3RfX1sieCJdYGAgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaFxuICAgYWxsb3cgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGVcbiAgIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgYGBDYGAsIHNheSkgd291bGQgeWllbGRcbiAgIGEgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlcyBpcyBgYENgYC4gIFdoZW4gaXQgd291bGQgeWllbGRcbiAgIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdCB3cmFwcGVkXG4gICBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uICpJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMqXG4gICBmb3IgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG1heVxuICAgZGlmZmVyIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyBgYF9fZGljdF9fYGAuXG5cbiAgIENsYXNzIGF0dHJpYnV0ZSBhc3NpZ25tZW50cyB1cGRhdGUgdGhlIGNsYXNzXCdzIGRpY3Rpb25hcnksIG5ldmVyXG4gICB0aGUgZGljdGlvbmFyeSBvZiBhIGJhc2UgY2xhc3MuXG5cbiAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyBpbnN0YW5jZVxuICAgKHNlZSBiZWxvdykuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX25hbWVfX2BgIGlzIHRoZSBjbGFzcyBuYW1lOyBgYF9fbW9kdWxlX19gYFxuICAgaXMgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgYGBfX2RpY3RfX2BgIGlzXG4gICB0aGUgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7IGBgX19iYXNlc19fYGAgaXMgYVxuICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsXG4gICBpbiB0aGUgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0O1xuICAgYGBfX2RvY19fYGAgaXMgdGhlIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmXG4gICB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSBgYF9fc2VsZl9fYGAgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZS4gIFN0YXRpYyBtZXRob2QgYW5kXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4gICAiQ2xhc3NlcyIuICBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKiBmb3IgYW5vdGhlciB3YXlcbiAgIGluIHdoaWNoIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyByZXRyaWV2ZWQgdmlhIGl0cyBpbnN0YW5jZXMgbWF5XG4gICBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlIGNsYXNzXCdzXG4gICBgYF9fZGljdF9fYGAuICBJZiBubyBjbGFzcyBhdHRyaWJ1dGUgaXMgZm91bmQsIGFuZCB0aGUgb2JqZWN0XCdzXG4gICBjbGFzcyBoYXMgYSBgYF9fZ2V0YXR0cl9fKClgYCBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlXG4gICBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgYGBfX3NldGF0dHJfXygpYGAgb3IgYGBfX2RlbGF0dHJfXygpYGAgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogYGBfX2RpY3RfX2BgIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbiAgIGBgX19jbGFzc19fYGAgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuXG5JL08gb2JqZWN0cyAoYWxzbyBrbm93biBhcyBmaWxlIG9iamVjdHMpXG4gICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbiAgIGF2YWlsYWJsZSB0byBjcmVhdGUgZmlsZSBvYmplY3RzOiB0aGUgYGBvcGVuKClgYCBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvIGBgb3MucG9wZW4oKWBgLCBgYG9zLmZkb3BlbigpYGAsIGFuZCB0aGUgYGBtYWtlZmlsZSgpYGBcbiAgIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgYGBzeXMuc3RkaW5gYCwgYGBzeXMuc3Rkb3V0YGAgYW5kIGBgc3lzLnN0ZGVycmBgIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgIGBgaW8uVGV4dElPQmFzZWBgIGFic3RyYWN0IGNsYXNzLlxuXG5JbnRlcm5hbCB0eXBlc1xuICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byB0aGVcbiAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4gICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG5cbiAgIENvZGUgb2JqZWN0c1xuICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gY29kZSxcbiAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiBleHBsaWNpdFxuICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvblwncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0IHdhc1xuICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbiAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgbm90XG4gICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgYXRcbiAgICAgIHJ1bi10aW1lKS4gIFVubGlrZSBmdW5jdGlvbiBvYmplY3RzLCBjb2RlIG9iamVjdHMgYXJlIGltbXV0YWJsZVxuICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gbXV0YWJsZVxuICAgICAgb2JqZWN0cy5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBjb19uYW1lYGAgZ2l2ZXMgdGhlIGZ1bmN0aW9uXG4gICAgICBuYW1lOyBgYGNvX2FyZ2NvdW50YGAgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50c1xuICAgICAgKGluY2x1ZGluZyBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7IGBgY29fbmxvY2Fsc2BgIGlzIHRoZVxuICAgICAgbnVtYmVyIG9mIGxvY2FsIHZhcmlhYmxlcyB1c2VkIGJ5IHRoZSBmdW5jdGlvbiAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMpOyBgYGNvX3Zhcm5hbWVzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZlxuICAgICAgdGhlIGxvY2FsIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpO1xuICAgICAgYGBjb19jZWxsdmFyc2BgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7XG4gICAgICBgYGNvX2ZyZWV2YXJzYGAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBmcmVlXG4gICAgICB2YXJpYWJsZXM7IGBgY29fY29kZWBgIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2ZcbiAgICAgIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgYGBjb19jb25zdHNgYCBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlXG4gICAgICBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTsgYGBjb19uYW1lc2BgIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlOyBgYGNvX2ZpbGVuYW1lYGAgaXNcbiAgICAgIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyBjb21waWxlZDtcbiAgICAgIGBgY29fZmlyc3RsaW5lbm9gYCBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgYGBjb19sbm90YWJgYCBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgYGBjb19zdGFja3NpemVgYCBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyBgYGNvX2ZsYWdzYGAgaXMgYW4gaW50ZWdlciBlbmNvZGluZ1xuICAgICAgYSBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yIGBgY29fZmxhZ3NgYDogYml0XG4gICAgICBgYDB4MDRgYCBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlIGBgKmFyZ3VtZW50c2BgIHN5bnRheFxuICAgICAgdG8gYWNjZXB0IGFuIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdFxuICAgICAgYGAweDA4YGAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSBgYCoqa2V5d29yZHNgYCBzeW50YXhcbiAgICAgIHRvIGFjY2VwdCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHM7IGJpdCBgYDB4MjBgYCBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiBpcyBhIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zIChgYGZyb20gX19mdXR1cmVfXyBpbXBvcnRcbiAgICAgIGRpdmlzaW9uYGApIGFsc28gdXNlIGJpdHMgaW4gYGBjb19mbGFnc2BgIHRvIGluZGljYXRlIHdoZXRoZXIgYVxuICAgICAgY29kZSBvYmplY3Qgd2FzIGNvbXBpbGVkIHdpdGggYSBwYXJ0aWN1bGFyIGZlYXR1cmUgZW5hYmxlZDogYml0XG4gICAgICBgYDB4MjAwMGBgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlXG4gICAgICBkaXZpc2lvbiBlbmFibGVkOyBiaXRzIGBgMHgxMGBgIGFuZCBgYDB4MTAwMGBgIHdlcmUgdXNlZCBpblxuICAgICAgZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24uXG5cbiAgICAgIE90aGVyIGJpdHMgaW4gYGBjb19mbGFnc2BgIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgIGBgY29fY29uc3RzYGAgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgIGBgTm9uZWBgIGlmIHVuZGVmaW5lZC5cblxuICAgRnJhbWUgb2JqZWN0c1xuICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0cyAoc2VlIGJlbG93KS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBmX2JhY2tgYCBpcyB0byB0aGUgcHJldmlvdXNcbiAgICAgIHN0YWNrIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciBgYE5vbmVgYCBpZiB0aGlzIGlzIHRoZVxuICAgICAgYm90dG9tIHN0YWNrIGZyYW1lOyBgYGZfY29kZWBgIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZFxuICAgICAgaW4gdGhpcyBmcmFtZTsgYGBmX2xvY2Fsc2BgIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cFxuICAgICAgbG9jYWwgdmFyaWFibGVzOyBgYGZfZ2xvYmFsc2BgIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICBgYGZfYnVpbHRpbnNgYCBpcyB1c2VkIGZvciBidWlsdC1pbiAoaW50cmluc2ljKSBuYW1lcztcbiAgICAgIGBgZl9sYXN0aWBgIGdpdmVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG9cbiAgICAgIHRoZSBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiBgYGZfdHJhY2VgYCwgaWYgbm90IGBgTm9uZWBgLCBpcyBhXG4gICAgICBmdW5jdGlvbiBjYWxsZWQgYXQgdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGNvZGUgbGluZSAodGhpcyBpc1xuICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyBgYGZfbGluZW5vYGAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXJcbiAgICAgIG9mIHRoZSBmcmFtZSAtLS0gd3JpdGluZyB0byB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb25cbiAgICAgIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQVxuICAgICAgZGVidWdnZXIgY2FuIGltcGxlbWVudCBhIEp1bXAgY29tbWFuZCAoYWthIFNldCBOZXh0IFN0YXRlbWVudClcbiAgICAgIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG5cbiAgIFRyYWNlYmFjayBvYmplY3RzXG4gICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICBBXG4gICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiB0aGVcbiAgICAgIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdW53aW5kcyB0aGUgZXhlY3V0aW9uIHN0YWNrLCBhdFxuICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCBvZlxuICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyBlbnRlcmVkLFxuICAgICAgdGhlIHN0YWNrIHRyYWNlIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtLiAoU2VlIHNlY3Rpb25cbiAgICAgICpUaGUgdHJ5IHN0YXRlbWVudCouKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZVxuICAgICAgdHVwbGUgcmV0dXJuZWQgYnkgYGBzeXMuZXhjX2luZm8oKWBgLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zXG4gICAgICBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5XG4gICAgICBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpc1xuICAgICAgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXNcbiAgICAgIGBgc3lzLmxhc3RfdHJhY2ViYWNrYGAuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6IGBgdGJfbmV4dGBgIGlzIHRoZSBuZXh0IGxldmVsIGluXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgKHRvd2FyZHMgdGhlIGZyYW1lIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkKSwgb3IgYGBOb25lYGAgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgYGB0Yl9mcmFtZWBgXG4gICAgICBwb2ludHMgdG8gdGhlIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDtcbiAgICAgIGBgdGJfbGluZW5vYGAgZ2l2ZXMgdGhlIGxpbmUgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb25cbiAgICAgIG9jY3VycmVkOyBgYHRiX2xhc3RpYGAgaW5kaWNhdGVzIHRoZSBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlXG4gICAgICBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiBpbiB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXJcbiAgICAgIGZyb20gdGhlIGxpbmUgbnVtYmVyIG9mIGl0cyBmcmFtZSBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvblxuICAgICAgb2NjdXJyZWQgaW4gYSBgYHRyeWBgIHN0YXRlbWVudCB3aXRoIG5vIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2VcbiAgICAgIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIGZvciBgYF9fZ2V0aXRlbV9fKClgYFxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gYGBzbGljZSgpYGBcbiAgICAgIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiBgYHN0YXJ0YGAgaXMgdGhlIGxvd2VyIGJvdW5kO1xuICAgICAgYGBzdG9wYGAgaXMgdGhlIHVwcGVyIGJvdW5kOyBgYHN0ZXBgYCBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpc1xuICAgICAgYGBOb25lYGAgaWYgb21pdHRlZC4gVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgIGBgc3RhdGljbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiBgYGNsYXNzbWV0aG9kKClgYCBjb25zdHJ1Y3Rvci5cbicsCiAgJ3R5cGVzZnVuY3Rpb25zJzogJ1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogYGBmdW5jKGFyZ3VtZW50LWxpc3QpYGAuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSAqRnVuY3Rpb24gZGVmaW5pdGlvbnMqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtYXBwaW5nJzogJ1xuTWFwcGluZyBUeXBlcyAtLS0gYGBkaWN0YGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSBvYmplY3RzLlxuTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSBzdGFuZGFyZFxubWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHRcbmluIGBgbGlzdGBgLCBgYHNldGBgLCBhbmQgYGB0dXBsZWBgIGNsYXNzZXMsIGFuZCB0aGUgYGBjb2xsZWN0aW9uc2BgXG5tb2R1bGUuKVxuXG5BIGRpY3Rpb25hcnlcJ3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyB0aGF0IGFyZVxubm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCBkaWN0aW9uYXJpZXMgb3Jcbm90aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXlcbnRoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbFxuKHN1Y2ggYXMgYGAxYGAgYW5kIGBgMS4wYGApIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG9cbmluZGV4IHRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVyc1xuc3RvcmUgZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0b1xudXNlIHRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZlxuYGBrZXk6IHZhbHVlYGAgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6IGBge1wnamFja1wnOiA0MDk4LFxuXCdzam9lcmRcJzogNDEyN31gYCBvciBgYHs0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ31gYCwgb3IgYnkgdGhlXG5gYGRpY3RgYCBjb25zdHJ1Y3Rvci5cblxuY2xhc3MgY2xhc3MgZGljdChbYXJnXSlcblxuICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCBwb3NpdGlvbmFsXG4gICBhcmd1bWVudCBvciBmcm9tIGEgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgbm8gYXJndW1lbnRzIGFyZVxuICAgZ2l2ZW4sIHJldHVybiBhIG5ldyBlbXB0eSBkaWN0aW9uYXJ5LiAgSWYgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICphcmcqIGlzIGEgbWFwcGluZyBvYmplY3QsIHJldHVybiBhIGRpY3Rpb25hcnkgbWFwcGluZyB0aGUgc2FtZVxuICAga2V5cyB0byB0aGUgc2FtZSB2YWx1ZXMgYXMgZG9lcyB0aGUgbWFwcGluZyBvYmplY3QuICBPdGhlcndpc2UgdGhlXG4gICBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBzZXF1ZW5jZSwgYSBjb250YWluZXIgdGhhdCBzdXBwb3J0c1xuICAgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvciBvYmplY3QuICBUaGUgZWxlbWVudHMgb2YgdGhlIGFyZ3VtZW50XG4gICBtdXN0IGVhY2ggYWxzbyBiZSBvZiBvbmUgb2YgdGhvc2Uga2luZHMsIGFuZCBlYWNoIG11c3QgaW4gdHVyblxuICAgY29udGFpbiBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IGlzIHVzZWQgYXMgYSBrZXkgaW4gdGhlIG5ld1xuICAgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgYXMgdGhlIGtleVwncyB2YWx1ZS4gIElmIGEgZ2l2ZW4ga2V5IGlzXG4gICBzZWVuIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggaXQgaXMgcmV0YWluZWRcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZHMgdGhlbXNlbHZlcyB3aXRoIHRoZWlyXG4gICBhc3NvY2lhdGVkIHZhbHVlcyBhcmUgYWRkZWQgYXMgaXRlbXMgdG8gdGhlIGRpY3Rpb25hcnkuICBJZiBhIGtleVxuICAgaXMgc3BlY2lmaWVkIGJvdGggaW4gdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgYW5kIGFzIGEga2V5d29yZFxuICAgYXJndW1lbnQsIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXdvcmQgaXMgcmV0YWluZWQgaW4gdGhlXG4gICBkaWN0aW9uYXJ5LiAgRm9yIGV4YW1wbGUsIHRoZXNlIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsIHRvXG4gICBgYHsib25lIjogMSwgInR3byI6IDJ9YGA6XG5cbiAgICogYGBkaWN0KG9uZT0xLCB0d289MilgYFxuXG4gICAqIGBgZGljdCh7XCdvbmVcJzogMSwgXCd0d29cJzogMn0pYGBcblxuICAgKiBgYGRpY3QoemlwKChcJ29uZVwnLCBcJ3R3b1wnKSwgKDEsIDIpKSlgYFxuXG4gICAqIGBgZGljdChbW1wndHdvXCcsIDJdLCBbXCdvbmVcJywgMV1dKWBgXG5cbiAgIFRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uXG4gICBpZGVudGlmaWVyczsgdGhlIG90aGVycyB3b3JrIHdpdGggYW55IHZhbGlkIGtleXMuXG5cbiAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgdGhlcmVmb3JlLFxuICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcblxuICAgbGVuKGQpXG5cbiAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cblxuICAgZFtrZXldXG5cbiAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSBgYEtleUVycm9yYGAgaWZcbiAgICAgICprZXkqIGlzIG5vdCBpbiB0aGUgbWFwLlxuXG4gICAgICBJZiBhIHN1YmNsYXNzIG9mIGRpY3QgZGVmaW5lcyBhIG1ldGhvZCBgYF9fbWlzc2luZ19fKClgYCwgaWYgdGhlXG4gICAgICBrZXkgKmtleSogaXMgbm90IHByZXNlbnQsIHRoZSBgYGRba2V5XWBgIG9wZXJhdGlvbiBjYWxscyB0aGF0XG4gICAgICBtZXRob2Qgd2l0aCB0aGUga2V5ICprZXkqIGFzIGFyZ3VtZW50LiAgVGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uXG4gICAgICB0aGVuIHJldHVybnMgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgIGBgX19taXNzaW5nX18oa2V5KWBgIGNhbGwgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudC4gTm8gb3RoZXJcbiAgICAgIG9wZXJhdGlvbnMgb3IgbWV0aG9kcyBpbnZva2UgYGBfX21pc3NpbmdfXygpYGAuIElmXG4gICAgICBgYF9fbWlzc2luZ19fKClgYCBpcyBub3QgZGVmaW5lZCwgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cbiAgICAgIGBgX19taXNzaW5nX18oKWBgIG11c3QgYmUgYSBtZXRob2Q7IGl0IGNhbm5vdCBiZSBhbiBpbnN0YW5jZVxuICAgICAgdmFyaWFibGU6XG5cbiAgICAgICAgID4+PiBjbGFzcyBDb3VudGVyKGRpY3QpOlxuICAgICAgICAgLi4uICAgICBkZWYgX19taXNzaW5nX18oc2VsZiwga2V5KTpcbiAgICAgICAgIC4uLiAgICAgICAgIHJldHVybiAwXG4gICAgICAgICA+Pj4gYyA9IENvdW50ZXIoKVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDBcbiAgICAgICAgID4+PiBjW1wncmVkXCddICs9IDFcbiAgICAgICAgID4+PiBjW1wncmVkXCddXG4gICAgICAgICAxXG5cbiAgICAgIFNlZSBgYGNvbGxlY3Rpb25zLkNvdW50ZXJgYCBmb3IgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvblxuICAgICAgaW5jbHVkaW5nIG90aGVyIG1ldGhvZHMgaGVscGZ1bCBmb3IgYWNjdW11bGF0aW5nIGFuZCBtYW5hZ2luZ1xuICAgICAgdGFsbGllcy5cblxuICAgZFtrZXldID0gdmFsdWVcblxuICAgICAgU2V0IGBgZFtrZXldYGAgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgYGBkW2tleV1gYCBmcm9tICpkKi4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZiAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBtYXAuXG5cbiAgIGtleSBpbiBkXG5cbiAgICAgIFJldHVybiBgYFRydWVgYCBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlIGBgRmFsc2VgYC5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gYGBub3Qga2V5IGluIGRgYC5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yIGBgaXRlcihkLmtleXMoKSlgYC5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNsYXNzbWV0aG9kIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgIGBgZnJvbWtleXMoKWBgIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgZWxzZVxuICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byBgYE5vbmVgYCxcbiAgICAgIHNvIHRoYXQgdGhpcyBtZXRob2QgbmV2ZXIgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zIChgYChrZXksIHZhbHVlKWBgXG4gICAgICBwYWlycykuICBTZWUgYmVsb3cgZm9yIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICBwb3Aoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiBpdHMgdmFsdWUsXG4gICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAqa2V5KiBpc1xuICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhIGBgS2V5RXJyb3JgYCBpcyByYWlzZWQuXG5cbiAgIHBvcGl0ZW0oKVxuXG4gICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgYGAoa2V5LCB2YWx1ZSlgYCBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICBgYHBvcGl0ZW0oKWBgIGlzIHVzZWZ1bCB0byBkZXN0cnVjdGl2ZWx5IGl0ZXJhdGUgb3ZlciBhXG4gICAgICBkaWN0aW9uYXJ5LCBhcyBvZnRlbiB1c2VkIGluIHNldCBhbGdvcml0aG1zLiAgSWYgdGhlIGRpY3Rpb25hcnlcbiAgICAgIGlzIGVtcHR5LCBjYWxsaW5nIGBgcG9waXRlbSgpYGAgcmFpc2VzIGEgYGBLZXlFcnJvcmBgLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byBgYE5vbmVgYC5cblxuICAgdXBkYXRlKFtvdGhlcl0pXG5cbiAgICAgIFVwZGF0ZSB0aGUgZGljdGlvbmFyeSB3aXRoIHRoZSBrZXkvdmFsdWUgcGFpcnMgZnJvbSAqb3RoZXIqLFxuICAgICAgb3ZlcndyaXRpbmcgZXhpc3Rpbmcga2V5cy4gIFJldHVybiBgYE5vbmVgYC5cblxuICAgICAgYGB1cGRhdGUoKWBgIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiBgYGQudXBkYXRlKHJlZD0xLFxuICAgICAgYmx1ZT0yKWBgLlxuXG4gICB2YWx1ZXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyB2YWx1ZXMuICBTZWUgYmVsb3cgZm9yXG4gICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5TZXRgYCBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgYGA9PWBgLFxuYGA8YGAsIG9yIGBgXmBgKS5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy5rZXlzKClcbiAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmFsdWVzKClcblxuICAgPj4+ICMgaXRlcmF0aW9uXG4gICA+Pj4gbiA9IDBcbiAgID4+PiBmb3IgdmFsIGluIHZhbHVlczpcbiAgIC4uLiAgICAgbiArPSB2YWxcbiAgID4+PiBwcmludChuKVxuICAgNTA0XG5cbiAgID4+PiAjIGtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiB0aGUgc2FtZSBvcmRlclxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhdXNhZ2VcJywgXCdzcGFtXCddXG4gICA+Pj4gbGlzdCh2YWx1ZXMpXG4gICBbMiwgMSwgMSwgNTAwXVxuXG4gICA+Pj4gIyB2aWV3IG9iamVjdHMgYXJlIGR5bmFtaWMgYW5kIHJlZmxlY3QgZGljdCBjaGFuZ2VzXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ2VnZ3NcJ11cbiAgID4+PiBkZWwgZGlzaGVzW1wnc2F1c2FnZVwnXVxuICAgPj4+IGxpc3Qoa2V5cylcbiAgIFtcJ3NwYW1cJywgXCdiYWNvblwnXVxuXG4gICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuICAgPj4+IGtleXMgJiB7XCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYWxhZFwnfVxuICAge1wnYmFjb25cJ31cbiAgID4+PiBrZXlzIF4ge1wnc2F1c2FnZVwnLCBcJ2p1aWNlXCd9XG4gICB7XCdqdWljZVwnLCBcJ3NhdXNhZ2VcJywgXCdiYWNvblwnLCBcJ3NwYW1cJ31cbicsCisgJ3R5cGVzbWFwcGluZyc6ICdcbk1hcHBpbmcgVHlwZXMgLS0tIGBgZGljdGBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gYGBsaXN0YGAsIGBgc2V0YGAsIGFuZCBgYHR1cGxlYGAgY2xhc3NlcywgYW5kIHRoZSBgYGNvbGxlY3Rpb25zYGBcbm1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyBgYDFgYCBhbmQgYGAxLjBgYCkgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0b1xuaW5kZXggdGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgY29tcHV0ZXJzXG5zdG9yZSBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgdW53aXNlIHRvXG51c2UgdGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuXG5EaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mXG5gYGtleTogdmFsdWVgYCBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogYGB7XCdqYWNrXCc6IDQwOTgsXG5cJ3Nqb2VyZFwnOiA0MTI3fWBgIG9yIGBgezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfWBgLCBvciBieSB0aGVcbmBgZGljdGBgIGNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KFthcmddKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IG9yIGZyb20gYSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuICBJZiBubyBhcmd1bWVudHMgYXJlXG4gICBnaXZlbiwgcmV0dXJuIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuICBJZiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgKmFyZyogaXMgYSBtYXBwaW5nIG9iamVjdCwgcmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIHRoZSBzYW1lXG4gICBrZXlzIHRvIHRoZSBzYW1lIHZhbHVlcyBhcyBkb2VzIHRoZSBtYXBwaW5nIG9iamVjdC4gIE90aGVyd2lzZSB0aGVcbiAgIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzXG4gICBpdGVyYXRpb24sIG9yIGFuIGl0ZXJhdG9yIG9iamVjdC4gIFRoZSBlbGVtZW50cyBvZiB0aGUgYXJndW1lbnRcbiAgIG11c3QgZWFjaCBhbHNvIGJlIG9mIG9uZSBvZiB0aG9zZSBraW5kcywgYW5kIGVhY2ggbXVzdCBpbiB0dXJuXG4gICBjb250YWluIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3QgaXMgdXNlZCBhcyBhIGtleSBpbiB0aGUgbmV3XG4gICBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBhcyB0aGUga2V5XCdzIHZhbHVlLiAgSWYgYSBnaXZlbiBrZXkgaXNcbiAgIHNlZW4gbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBpdCBpcyByZXRhaW5lZFxuICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuXG4gICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkcyB0aGVtc2VsdmVzIHdpdGggdGhlaXJcbiAgIGFzc29jaWF0ZWQgdmFsdWVzIGFyZSBhZGRlZCBhcyBpdGVtcyB0byB0aGUgZGljdGlvbmFyeS4gIElmIGEga2V5XG4gICBpcyBzcGVjaWZpZWQgYm90aCBpbiB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBhbmQgYXMgYSBrZXl3b3JkXG4gICBhcmd1bWVudCwgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUga2V5d29yZCBpcyByZXRhaW5lZCBpbiB0aGVcbiAgIGRpY3Rpb25hcnkuICBGb3IgZXhhbXBsZSwgdGhlc2UgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWwgdG9cbiAgIGBgeyJvbmUiOiAxLCAidHdvIjogMn1gYDpcblxuICAgKiBgYGRpY3Qob25lPTEsIHR3bz0yKWBgXG5cbiAgICogYGBkaWN0KHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlgYFxuXG4gICAqIGBgZGljdCh6aXAoKFwnb25lXCcsIFwndHdvXCcpLCAoMSwgMikpKWBgXG5cbiAgICogYGBkaWN0KFtbXCd0d29cJywgMl0sIFtcJ29uZVwnLCAxXV0pYGBcblxuICAgVGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3Iga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob25cbiAgIGlkZW50aWZpZXJzOyB0aGUgb3RoZXJzIHdvcmsgd2l0aCBhbnkgdmFsaWQga2V5cy5cblxuICAgVGhlc2UgYXJlIHRoZSBvcGVyYXRpb25zIHRoYXQgZGljdGlvbmFyaWVzIHN1cHBvcnQgKGFuZCB0aGVyZWZvcmUsXG4gICBjdXN0b20gbWFwcGluZyB0eXBlcyBzaG91bGQgc3VwcG9ydCB0b28pOlxuXG4gICBsZW4oZClcblxuICAgICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGRpY3Rpb25hcnkgKmQqLlxuXG4gICBkW2tleV1cblxuICAgICAgUmV0dXJuIHRoZSBpdGVtIG9mICpkKiB3aXRoIGtleSAqa2V5Ki4gIFJhaXNlcyBhIGBgS2V5RXJyb3JgYCBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kIGBgX19taXNzaW5nX18oKWBgLCBpZiB0aGVcbiAgICAgIGtleSAqa2V5KiBpcyBub3QgcHJlc2VudCwgdGhlIGBgZFtrZXldYGAgb3BlcmF0aW9uIGNhbGxzIHRoYXRcbiAgICAgIG1ldGhvZCB3aXRoIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgYGBkW2tleV1gYCBvcGVyYXRpb25cbiAgICAgIHRoZW4gcmV0dXJucyBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuICAgICAgYGBfX21pc3NpbmdfXyhrZXkpYGAgY2FsbCBpZiB0aGUga2V5IGlzIG5vdCBwcmVzZW50LiBObyBvdGhlclxuICAgICAgb3BlcmF0aW9ucyBvciBtZXRob2RzIGludm9rZSBgYF9fbWlzc2luZ19fKClgYC4gSWZcbiAgICAgIGBgX19taXNzaW5nX18oKWBgIGlzIG5vdCBkZWZpbmVkLCBgYEtleUVycm9yYGAgaXMgcmFpc2VkLlxuICAgICAgYGBfX21pc3NpbmdfXygpYGAgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuIGluc3RhbmNlXG4gICAgICB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgU2VlIGBgY29sbGVjdGlvbnMuQ291bnRlcmBgIGZvciBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uXG4gICAgICBpbmNsdWRpbmcgb3RoZXIgbWV0aG9kcyBoZWxwZnVsIGZvciBhY2N1bXVsYXRpbmcgYW5kIG1hbmFnaW5nXG4gICAgICB0YWxsaWVzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgYGBkW2tleV1gYCB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSBgYGRba2V5XWBgIGZyb20gKmQqLiAgUmFpc2VzIGEgYGBLZXlFcnJvcmBgIGlmICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgYGBGYWxzZWBgLlxuXG4gICBrZXkgbm90IGluIGRcblxuICAgICAgRXF1aXZhbGVudCB0byBgYG5vdCBrZXkgaW4gZGBgLlxuXG4gICBpdGVyKGQpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgVGhpcyBpcyBhXG4gICAgICBzaG9ydGN1dCBmb3IgYGBpdGVyKGQua2V5cygpKWBgLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgYGBmcm9ta2V5cygpYGAgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3IGRpY3Rpb25hcnkuXG4gICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICBnZXQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIFJldHVybiB0aGUgdmFsdWUgZm9yICprZXkqIGlmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCBlbHNlXG4gICAgICAqZGVmYXVsdCouIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLFxuICAgICAgc28gdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIGl0ZW1zKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKGBgKGtleSwgdmFsdWUpYGBcbiAgICAgIHBhaXJzKS4gU2VlIHRoZSAqZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMqLlxuXG4gICBrZXlzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgYGBLZXlFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSBgYChrZXksIHZhbHVlKWBgIHBhaXIgZnJvbSB0aGVcbiAgICAgIGRpY3Rpb25hcnkuXG5cbiAgICAgIGBgcG9waXRlbSgpYGAgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbiAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgZW1wdHksIGNhbGxpbmcgYGBwb3BpdGVtKClgYCByYWlzZXMgYSBgYEtleUVycm9yYGAuXG5cbiAgIHNldGRlZmF1bHQoa2V5WywgZGVmYXVsdF0pXG5cbiAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZXR1cm4gaXRzIHZhbHVlLiAgSWYgbm90LCBpbnNlcnRcbiAgICAgICprZXkqIHdpdGggYSB2YWx1ZSBvZiAqZGVmYXVsdCogYW5kIHJldHVybiAqZGVmYXVsdCouICAqZGVmYXVsdCpcbiAgICAgIGRlZmF1bHRzIHRvIGBgTm9uZWBgLlxuXG4gICB1cGRhdGUoW290aGVyXSlcblxuICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICpvdGhlciosXG4gICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuIGBgTm9uZWBgLlxuXG4gICAgICBgYHVwZGF0ZSgpYGAgYWNjZXB0cyBlaXRoZXIgYW5vdGhlciBkaWN0aW9uYXJ5IG9iamVjdCBvciBhblxuICAgICAgaXRlcmFibGUgb2Yga2V5L3ZhbHVlIHBhaXJzIChhcyB0dXBsZXMgb3Igb3RoZXIgaXRlcmFibGVzIG9mXG4gICAgICBsZW5ndGggdHdvKS4gIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQsIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyB0aGVuIHVwZGF0ZWQgd2l0aCB0aG9zZSBrZXkvdmFsdWUgcGFpcnM6IGBgZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpYGAuXG5cbiAgIHZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSB0aGVcbiAgICAgICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cblNlZSBhbHNvOlxuXG4gICBgYHR5cGVzLk1hcHBpbmdQcm94eVR5cGVgYCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHkgdmlld1xuICAgb2YgYSBgYGRpY3RgYC5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgYGBkaWN0LmtleXMoKWBgLCBgYGRpY3QudmFsdWVzKClgYCBhbmRcbmBgZGljdC5pdGVtcygpYGAgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uXG50aGUgZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnlcbmNoYW5nZXMsIHRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mIGBgKGtleSwgdmFsdWUpYGApIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG4gICBLZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzXG4gICBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uXG4gICB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYga2V5cyxcbiAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyBpbnRlcnZlbmluZ1xuICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgZGlyZWN0bHlcbiAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgYGAodmFsdWUsIGtleSlgYCBwYWlyc1xuICAgdXNpbmcgYGB6aXAoKWBgOiBgYHBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKWBgLiAgQW5vdGhlclxuICAgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzIGBgcGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW5cbiAgIGQuaXRlbXMoKV1gYC5cblxuICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5XG4gICBtYXkgcmFpc2UgYSBgYFJ1bnRpbWVFcnJvcmBgIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiBgYFRydWVgYCBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLFxuICAgdmFsdWVzIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSBgYChrZXksXG4gICB2YWx1ZSlgYCB0dXBsZSkuXG5cbktleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgaGFzaGFibGUuXG5JZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCBgYChrZXksIHZhbHVlKWBgIHBhaXJzIGFyZSB1bmlxdWVcbmFuZCBoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyB2aWV3cyBhcmVcbm5vdCB0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90IHVuaXF1ZS4pXG5Gb3Igc2V0LWxpa2Ugdmlld3MsIGFsbCBvZiB0aGUgb3BlcmF0aW9ucyBkZWZpbmVkIGZvciB0aGUgYWJzdHJhY3RcbmJhc2UgY2xhc3MgYGBjb2xsZWN0aW9ucy5hYmMuU2V0YGAgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsIGBgPT1gYCxcbmBgPGBgLCBvciBgYF5gYCkuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAogICd0eXBlc21ldGhvZHMnOiAiXG5NZXRob2RzXG4qKioqKioqXG5cbk1ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSBub3RhdGlvbi5cblRoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyBgYGFwcGVuZCgpYGAgb25cbmxpc3RzKSBhbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZFxud2l0aCB0aGUgdHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cbklmIHlvdSBhY2Nlc3MgYSBtZXRob2QgKGEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhIGNsYXNzIG5hbWVzcGFjZSlcbnRocm91Z2ggYW4gaW5zdGFuY2UsIHlvdSBnZXQgYSBzcGVjaWFsIG9iamVjdDogYSAqYm91bmQgbWV0aG9kKiAoYWxzb1xuY2FsbGVkICppbnN0YW5jZSBtZXRob2QqKSBvYmplY3QuIFdoZW4gY2FsbGVkLCBpdCB3aWxsIGFkZCB0aGVcbmBgc2VsZmBgIGFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3b1xuc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogYGBtLl9fc2VsZl9fYGAgaXMgdGhlIG9iamVjdCBvbiB3aGljaFxudGhlIG1ldGhvZCBvcGVyYXRlcywgYW5kIGBgbS5fX2Z1bmNfX2BgIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmdcbnRoZSBtZXRob2QuICBDYWxsaW5nIGBgbShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pYGAgaXMgY29tcGxldGVseVxuZXF1aXZhbGVudCB0byBjYWxsaW5nIGBgbS5fX2Z1bmNfXyhtLl9fc2VsZl9fLCBhcmctMSwgYXJnLTIsIC4uLixcbmFyZy1uKWBgLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKGBgbWV0aC5fX2Z1bmNfX2BgKSwgc2V0dGluZyBtZXRob2RcbmF0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byBzZXQgYSBtZXRob2RcbmF0dHJpYnV0ZSByZXN1bHRzIGluIGEgYGBUeXBlRXJyb3JgYCBiZWluZyByYWlzZWQuICBJbiBvcmRlciB0byBzZXQgYVxubWV0aG9kIGF0dHJpYnV0ZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlIHVuZGVybHlpbmdcbmZ1bmN0aW9uIG9iamVjdDpcblxuICAgY2xhc3MgQzpcbiAgICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuICAgICAgICAgICBwYXNzXG5cbiAgIGMgPSBDKClcbiAgIGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9ICdteSBuYW1lIGlzIGMnXG5cblNlZSAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsCiAgJ3R5cGVzbW9kdWxlcyc6ICJcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczpcbmBgbS5uYW1lYGAsIHdoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkXG5pbiAqbSoncyBzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlXG50aGF0IHRoZSBgYGltcG9ydGBgIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb25cbm9uIGEgbW9kdWxlIG9iamVjdDsgYGBpbXBvcnQgZm9vYGAgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3Rcbm5hbWVkICpmb28qIHRvIGV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbipcbmZvciBhIG1vZHVsZSBuYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyBgYF9fZGljdF9fYGAuIFRoaXMgaXMgdGhlXG5kaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgYGBfX2RpY3RfX2BgIGF0dHJpYnV0ZSBpcyBub3QgcG9zc2libGUgKHlvdSBjYW5cbndyaXRlIGBgbS5fX2RpY3RfX1snYSddID0gMWBgLCB3aGljaCBkZWZpbmVzIGBgbS5hYGAgdG8gYmUgYGAxYGAsIGJ1dFxueW91IGNhbid0IHdyaXRlIGBgbS5fX2RpY3RfXyA9IHt9YGApLiAgTW9kaWZ5aW5nIGBgX19kaWN0X19gYCBkaXJlY3RseVxuaXMgbm90IHJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogYGA8bW9kdWxlXG4nc3lzJyAoYnVpbHQtaW4pPmBgLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG5gYDxtb2R1bGUgJ29zJyBmcm9tICcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljJz5gYC5cbiIsCi0gJ3R5cGVzc2VxJzogJ1xuU2VxdWVuY2UgVHlwZXMgLS0tIGBgc3RyYGAsIGBgYnl0ZXNgYCwgYGBieXRlYXJyYXlgYCwgYGBsaXN0YGAsIGBgdHVwbGVgYCwgYGByYW5nZWBgXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNpeCBzZXF1ZW5jZSB0eXBlczogc3RyaW5ncywgYnl0ZSBzZXF1ZW5jZXMgKGBgYnl0ZXNgYFxub2JqZWN0cyksIGJ5dGUgYXJyYXlzIChgYGJ5dGVhcnJheWBgIG9iamVjdHMpLCBsaXN0cywgdHVwbGVzLCBhbmRcbnJhbmdlIG9iamVjdHMuICBGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0IGluIGBgZGljdGBgIGFuZFxuYGBzZXRgYCBjbGFzc2VzLCBhbmQgdGhlIGBgY29sbGVjdGlvbnNgYCBtb2R1bGUuXG5cblN0cmluZ3MgY29udGFpbiBVbmljb2RlIGNoYXJhY3RlcnMuICBUaGVpciBsaXRlcmFscyBhcmUgd3JpdHRlbiBpblxuc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXM6IGBgXCd4eXp6eVwnYGAsIGBgImZyb2JvenoiYGAuICBTZWUgKlN0cmluZyBhbmRcbkJ5dGVzIGxpdGVyYWxzKiBmb3IgbW9yZSBhYm91dCBzdHJpbmcgbGl0ZXJhbHMuICBJbiBhZGRpdGlvbiB0byB0aGVcbmZ1bmN0aW9uYWxpdHkgZGVzY3JpYmVkIGhlcmUsIHRoZXJlIGFyZSBhbHNvIHN0cmluZy1zcGVjaWZpYyBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlICpTdHJpbmcgTWV0aG9kcyogc2VjdGlvbi5cblxuQnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGNvbnRhaW4gc2luZ2xlIGJ5dGVzIC0tIHRoZSBmb3JtZXIgaXNcbmltbXV0YWJsZSB3aGlsZSB0aGUgbGF0dGVyIGlzIGEgbXV0YWJsZSBzZXF1ZW5jZS4gIEJ5dGVzIG9iamVjdHMgY2FuXG5iZSBjb25zdHJ1Y3RlZCB0aGUgY29uc3RydWN0b3IsIGBgYnl0ZXMoKWBgLCBhbmQgZnJvbSBsaXRlcmFsczsgdXNlIGFcbmBgYmBgIHByZWZpeCB3aXRoIG5vcm1hbCBzdHJpbmcgc3ludGF4OiBgYGJcJ3h5enp5XCdgYC4gIFRvIGNvbnN0cnVjdFxuYnl0ZSBhcnJheXMsIHVzZSB0aGUgYGBieXRlYXJyYXkoKWBgIGZ1bmN0aW9uLlxuXG5XaGlsZSBzdHJpbmcgb2JqZWN0cyBhcmUgc2VxdWVuY2VzIG9mIGNoYXJhY3RlcnMgKHJlcHJlc2VudGVkIGJ5XG5zdHJpbmdzIG9mIGxlbmd0aCAxKSwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGFyZSBzZXF1ZW5jZXMgb2ZcbippbnRlZ2VycyogKGJldHdlZW4gMCBhbmQgMjU1KSwgcmVwcmVzZW50aW5nIHRoZSBBU0NJSSB2YWx1ZSBvZiBzaW5nbGVcbmJ5dGVzLiAgVGhhdCBtZWFucyB0aGF0IGZvciBhIGJ5dGVzIG9yIGJ5dGVhcnJheSBvYmplY3QgKmIqLCBgYGJbMF1gYFxud2lsbCBiZSBhbiBpbnRlZ2VyLCB3aGlsZSBgYGJbMDoxXWBgIHdpbGwgYmUgYSBieXRlcyBvciBieXRlYXJyYXlcbm9iamVjdCBvZiBsZW5ndGggMS4gIFRoZSByZXByZXNlbnRhdGlvbiBvZiBieXRlcyBvYmplY3RzIHVzZXMgdGhlXG5saXRlcmFsIGZvcm1hdCAoYGBiXCcuLi5cJ2BgKSBzaW5jZSBpdCBpcyBnZW5lcmFsbHkgbW9yZSB1c2VmdWwgdGhhblxuZS5nLiBgYGJ5dGVzKFs1MCwgMTksIDEwMF0pYGAuICBZb3UgY2FuIGFsd2F5cyBjb252ZXJ0IGEgYnl0ZXMgb2JqZWN0XG5pbnRvIGEgbGlzdCBvZiBpbnRlZ2VycyB1c2luZyBgYGxpc3QoYilgYC5cblxuQWxzbywgd2hpbGUgaW4gcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zLCBieXRlIHN0cmluZ3MgYW5kIFVuaWNvZGVcbnN0cmluZ3MgY291bGQgYmUgZXhjaGFuZ2VkIGZvciBlYWNoIG90aGVyIHJhdGhlciBmcmVlbHkgKGJhcnJpbmdcbmVuY29kaW5nIGlzc3VlcyksIHN0cmluZ3MgYW5kIGJ5dGVzIGFyZSBub3cgY29tcGxldGVseSBzZXBhcmF0ZVxuY29uY2VwdHMuICBUaGVyZVwncyBubyBpbXBsaWNpdCBlbi0vZGVjb2RpbmcgaWYgeW91IHBhc3MgYW4gb2JqZWN0IG9mXG50aGUgd3JvbmcgdHlwZS4gIEEgc3RyaW5nIGFsd2F5cyBjb21wYXJlcyB1bmVxdWFsIHRvIGEgYnl0ZXMgb3JcbmJ5dGVhcnJheSBvYmplY3QuXG5cbkxpc3RzIGFyZSBjb25zdHJ1Y3RlZCB3aXRoIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoXG5jb21tYXM6IGBgW2EsIGIsIGNdYGAuICBUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvclxuKG5vdCB3aXRoaW4gc3F1YXJlIGJyYWNrZXRzKSwgd2l0aCBvciB3aXRob3V0IGVuY2xvc2luZyBwYXJlbnRoZXNlcyxcbmJ1dCBhbiBlbXB0eSB0dXBsZSBtdXN0IGhhdmUgdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyBgYGEsXG5iLCBjYGAgb3IgYGAoKWBgLiAgQSBzaW5nbGUgaXRlbSB0dXBsZSBtdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSxcbnN1Y2ggYXMgYGAoZCwpYGAuXG5cbk9iamVjdHMgb2YgdHlwZSByYW5nZSBhcmUgY3JlYXRlZCB1c2luZyB0aGUgYGByYW5nZSgpYGAgZnVuY3Rpb24uXG5UaGV5IGRvblwndCBzdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbiwgYW5kIHVzaW5nIGBgbWluKClgYCBvclxuYGBtYXgoKWBgIG9uIHRoZW0gaXMgaW5lZmZpY2llbnQuXG5cbk1vc3Qgc2VxdWVuY2UgdHlwZXMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuICBUaGUgYGBpbmBgIGFuZFxuYGBub3QgaW5gYCBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvblxub3BlcmF0aW9ucy4gIFRoZSBgYCtgYCBhbmQgYGAqYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzXG50aGUgY29ycmVzcG9uZGluZyBudW1lcmljIG9wZXJhdGlvbnMuIFszXSBBZGRpdGlvbmFsIG1ldGhvZHMgYXJlXG5wcm92aWRlZCBmb3IgKk11dGFibGUgU2VxdWVuY2UgVHlwZXMqLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgIHwgYGBUcnVlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgRmFsc2VgYCAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgIHwgYGBGYWxzZWBgIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgfCAoMSkgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlIGBgVHJ1ZWBgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgIHwgdGhlIGNvbmNhdGVuYXRpb24gb2YgKnMqIGFuZCAqdCogfCAoNikgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICogbiwgbiAqIHNgYCAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgY29uY2F0ZW5hdGVkICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2ldYGAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al1gYCAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNSkgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtaW4ocylgYCAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBtYXgocylgYCAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KGkpYGAgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmNvdW50KGkpYGAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VyZW5jZXMgb2YgICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgIHwgKmkqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcblxuU2VxdWVuY2UgdHlwZXMgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZFxubGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nXG5lbGVtZW50cy4gIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeSBlbGVtZW50IG11c3RcbmNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZVxudGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW4gdGhlIGxhbmd1YWdlXG5yZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hlbiAqcyogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgYGBpbmBgIGFuZCBgYG5vdCBpbmBgIG9wZXJhdGlvbnNcbiAgIGFjdCBsaWtlIGEgc3Vic3RyaW5nIHRlc3QuXG5cbjIuIFZhbHVlcyBvZiAqbiogbGVzcyB0aGFuIGBgMGBgIGFyZSB0cmVhdGVkIGFzIGBgMGBgICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgYWxzbyB0aGF0IHRoZSBjb3BpZXNcbiAgIGFyZSBzaGFsbG93OyBuZXN0ZWQgc3RydWN0dXJlcyBhcmUgbm90IGNvcGllZC4gIFRoaXMgb2Z0ZW4gaGF1bnRzXG4gICBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgID4+PiBsaXN0c1xuICAgW1tdLCBbXSwgW11dXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0IGBgW1tdXWBgIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgYGBbW11dICogM2BgIGFyZSAocG9pbnRlcnNcbiAgIHRvKSB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbiAgIGBgbGlzdHNgYCBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgPj4+IGxpc3RzXG4gICBbWzNdLCBbNV0sIFs3XV1cblxuMy4gSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2YgdGhlXG4gICBzdHJpbmc6IGBgbGVuKHMpICsgaWBgIG9yIGBgbGVuKHMpICsgamBgIGlzIHN1YnN0aXR1dGVkLiAgQnV0IG5vdGVcbiAgIHRoYXQgYGAtMGBgIGlzIHN0aWxsIGBgMGBgLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0IGBgaSA8PSBrIDwgamBgLiAgSWYgKmkqIG9yICpqKiBpc1xuICAgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3JcbiAgIGBgTm9uZWBgLCB1c2UgYGAwYGAuICBJZiAqaiogaXMgb21pdHRlZCBvciBgYE5vbmVgYCwgdXNlXG4gICBgYGxlbihzKWBgLiAgSWYgKmkqIGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAqaiosIHRoZSBzbGljZSBpc1xuICAgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPFxuICAgKGotaSkva2BgLiAgSW4gb3RoZXIgd29yZHMsIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCxcbiAgIGBgaSsyKmtgYCwgYGBpKzMqa2BgIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0XG4gICBuZXZlciBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuIGBgbGVuKHMpYGAsXG4gICB1c2UgYGBsZW4ocylgYC4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lXG4gICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqaypcbiAgIGNhbm5vdCBiZSB6ZXJvLiBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC5cblxuNi4gQ29uY2F0ZW5hdGluZyBpbW11dGFibGUgc3RyaW5ncyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzdHJpbmcgYnkgcmVwZWF0ZWQgY29uY2F0ZW5hdGlvbiB3aWxsXG4gICBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWwgc3RyaW5nIGxlbmd0aC4gIFRvIGdldCBhXG4gICBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZSBhbHRlcm5hdGl2ZXNcbiAgIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQ7XG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYGJ5dGVzYGAgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4gICAgIGBgYnl0ZXMuam9pbigpYGAsIG9yIHlvdSBjYW4gZG8gaW4tcGxhY2UgY29uY2F0ZW5hdGlvbiB3aXRoIGFcbiAgICAgYGBieXRlYXJyYXlgYCBvYmplY3QuICBgYGJ5dGVhcnJheWBgIG9iamVjdHMgYXJlIG11dGFibGUgYW5kIGhhdmVcbiAgICAgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbS5cblxuXG5TdHJpbmcgTWV0aG9kc1xuPT09PT09PT09PT09PT1cblxuU3RyaW5nIG9iamVjdHMgc3VwcG9ydCB0aGUgbWV0aG9kcyBsaXN0ZWQgYmVsb3cuXG5cbkluIGFkZGl0aW9uLCBQeXRob25cJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlIG1ldGhvZHNcbmRlc2NyaWJlZCBpbiB0aGUgKlNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIGJ5dGVzLCBieXRlYXJyYXksIGxpc3QsXG50dXBsZSwgcmFuZ2UqIHNlY3Rpb24uIFRvIG91dHB1dCBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSAqU3RyaW5nXG5Gb3JtYXR0aW5nKiBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlIGBgcmVgYCBtb2R1bGUgZm9yIHN0cmluZyBmdW5jdGlvbnNcbmJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG5cbnN0ci5jYXBpdGFsaXplKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggaXRzIGZpcnN0IGNoYXJhY3RlciBjYXBpdGFsaXplZFxuICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG5cbnN0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyBpcyBkb25lXG4gICB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYSBzcGFjZSkuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcblxuICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIGFzIGEgYnl0ZXMgb2JqZWN0LiBEZWZhdWx0XG4gICBlbmNvZGluZyBpcyBgYFwndXRmLThcJ2BgLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50XG4gICBlcnJvciBoYW5kbGluZyBzY2hlbWUuIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpcyBgYFwnc3RyaWN0XCdgYCxcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSBgYFVuaWNvZGVFcnJvcmBgLiBPdGhlclxuICAgcG9zc2libGUgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgLFxuICAgYGBcJ3htbGNoYXJyZWZyZXBsYWNlXCdgYCwgYGBcJ2JhY2tzbGFzaHJlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZSBzdHJpbmcgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgKnN1ZmZpeCosXG4gICBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2ZcbiAgIHN1ZmZpeGVzIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdFxuICAgdGhhdCBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuZXhwYW5kdGFicyhbdGFic2l6ZV0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkXG4gICBieSB6ZXJvIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uIGFuZCB0aGVcbiAgIGdpdmVuIHRhYiBzaXplLiAgVGhlIGNvbHVtbiBudW1iZXIgaXMgcmVzZXQgdG8gemVybyBhZnRlciBlYWNoXG4gICBuZXdsaW5lIG9jY3VycmluZyBpbiB0aGUgc3RyaW5nLiBJZiAqdGFic2l6ZSogaXMgbm90IGdpdmVuLCBhIHRhYlxuICAgc2l6ZSBvZiBgYDhgYCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuICBUaGlzIGRvZXNuXCd0IHVuZGVyc3RhbmQgb3RoZXJcbiAgIG5vbi1wcmludGluZyBjaGFyYWN0ZXJzIG9yIGVzY2FwZSBzZXF1ZW5jZXMuXG5cbnN0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2xpY2UgYGBzW3N0YXJ0OmVuZF1gYC5cbiAgIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2VcbiAgIG5vdGF0aW9uLiAgUmV0dXJuIGBgLTFgYCBpZiAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSBgYGZpbmQoKWBgIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSBuZWVkIHRvIGtub3cgdGhlXG4gICAgIHBvc2l0aW9uIG9mICpzdWIqLiAgVG8gY2hlY2sgaWYgKnN1YiogaXMgYSBzdWJzdHJpbmcgb3Igbm90LCB1c2VcbiAgICAgdGhlIGBgaW5gYCBvcGVyYXRvcjpcblxuICAgICAgICA+Pj4gXCdQeVwnIGluIFwnUHl0aG9uXCdcbiAgICAgICAgVHJ1ZVxuXG5zdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcblxuICAgUGVyZm9ybSBhIHN0cmluZyBmb3JtYXR0aW5nIG9wZXJhdGlvbi4gIFRoZSBzdHJpbmcgb24gd2hpY2ggdGhpc1xuICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgZmllbGRzXG4gICBkZWxpbWl0ZWQgYnkgYnJhY2VzIGBge31gYC4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAsIGV4Y2VwdCB0aGF0IGBgbWFwcGluZ2BgIGlzXG4gICB1c2VkIGRpcmVjdGx5IGFuZCBub3QgY29waWVkIHRvIGEgYGBkaWN0YGAgLiAgVGhpcyBpcyB1c2VmdWwgaWYgZm9yXG4gICBleGFtcGxlIGBgbWFwcGluZ2BgIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgYGBmaW5kKClgYCwgYnV0IHJhaXNlIGBgVmFsdWVFcnJvcmBgIHdoZW4gdGhlIHN1YnN0cmluZyBpcyBub3RcbiAgIGZvdW5kLlxuXG5zdHIuaXNhbG51bSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyBhbmRcbiAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIEEgY2hhcmFjdGVyXG4gICBgYGNgYCBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyBgYFRydWVgYDpcbiAgIGBgYy5pc2FscGhhKClgYCwgYGBjLmlzZGVjaW1hbCgpYGAsIGBgYy5pc2RpZ2l0KClgYCwgb3JcbiAgIGBgYy5pc251bWVyaWMoKWBgLlxuXG5zdHIuaXNhbHBoYSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgYW5kXG4gICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBbHBoYWJldGljXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5IHByb3BlcnR5XG4gICBiZWluZyBvbmUgb2YgIkxtIiwgIkx0IiwgIkx1IiwgIkxsIiwgb3IgIkxvIi4gIE5vdGUgdGhhdCB0aGlzIGlzXG4gICBkaWZmZXJlbnQgZnJvbSB0aGUgIkFscGhhYmV0aWMiIHByb3BlcnR5IGRlZmluZWQgaW4gdGhlIFVuaWNvZGVcbiAgIFN0YW5kYXJkLlxuXG5zdHIuaXNkZWNpbWFsKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGVjaW1hbCBjaGFyYWN0ZXJzXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBEZWNpbWFsXG4gICBjaGFyYWN0ZXJzIGFyZSB0aG9zZSBmcm9tIGdlbmVyYWwgY2F0ZWdvcnkgIk5kIi4gVGhpcyBjYXRlZ29yeVxuICAgaW5jbHVkZXMgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDIERJR0lUIFpFUk8uXG5cbnN0ci5pc2RpZ2l0KClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzIGFuZCB0aGVyZSBpc1xuICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgRGlnaXRzIGluY2x1ZGUgZGVjaW1hbFxuICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoIGFzIHRoZVxuICAgY29tcGF0aWJpbGl0eSBzdXBlcnNjcmlwdCBkaWdpdHMuICBGb3JtYWxseSwgYSBkaWdpdCBpcyBhIGNoYXJhY3RlclxuICAgdGhhdCBoYXMgdGhlIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCBvclxuICAgTnVtZXJpY19UeXBlPURlY2ltYWwuXG5cbnN0ci5pc2lkZW50aWZpZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciBhY2NvcmRpbmcgdG8gdGhlXG4gICBsYW5ndWFnZSBkZWZpbml0aW9uLCBzZWN0aW9uICpJZGVudGlmaWVycyBhbmQga2V5d29yZHMqLlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBudW1lcmljIGNoYXJhY3RlcnMsXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiBOdW1lcmljXG4gICBjaGFyYWN0ZXJzIGluY2x1ZGUgZGlnaXQgY2hhcmFjdGVycywgYW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZVxuICAgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgZS5nLiBVKzIxNTUsIFZVTEdBUiBGUkFDVElPTlxuICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCB0aGVcbiAgIHByb3BlcnR5IHZhbHVlIE51bWVyaWNfVHlwZT1EaWdpdCwgTnVtZXJpY19UeXBlPURlY2ltYWwgb3JcbiAgIE51bWVyaWNfVHlwZT1OdW1lcmljLlxuXG5zdHIuaXNwcmludGFibGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBwcmludGFibGUgb3IgdGhlXG4gICBzdHJpbmcgaXMgZW1wdHksIGZhbHNlIG90aGVyd2lzZS4gIE5vbnByaW50YWJsZSBjaGFyYWN0ZXJzIGFyZVxuICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciBkYXRhYmFzZSBhc1xuICAgIk90aGVyIiBvciAiU2VwYXJhdG9yIiwgZXhjZXB0aW5nIHRoZSBBU0NJSSBzcGFjZSAoMHgyMCkgd2hpY2ggaXNcbiAgIGNvbnNpZGVyZWQgcHJpbnRhYmxlLiAgKE5vdGUgdGhhdCBwcmludGFibGUgY2hhcmFjdGVycyBpbiB0aGlzXG4gICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiBgYHJlcHIoKWBgIGlzXG4gICBpbnZva2VkIG9uIGEgc3RyaW5nLiAgSXQgaGFzIG5vIGJlYXJpbmcgb24gdGhlIGhhbmRsaW5nIG9mIHN0cmluZ3NcbiAgIHdyaXR0ZW4gdG8gYGBzeXMuc3Rkb3V0YGAgb3IgYGBzeXMuc3RkZXJyYGAuKVxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgV2hpdGVzcGFjZVxuICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXJcbiAgIGRhdGFiYXNlIGFzICJPdGhlciIgb3IgIlNlcGFyYXRvciIgYW5kIHRob3NlIHdpdGggYmlkaXJlY3Rpb25hbFxuICAgcHJvcGVydHkgYmVpbmcgb25lIG9mICJXUyIsICJCIiwgb3IgIlMiLlxuXG5zdHIuaXN0aXRsZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgYSB0aXRsZWNhc2VkIHN0cmluZyBhbmQgdGhlcmUgaXMgYXRcbiAgIGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZvciBleGFtcGxlIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIG1heSBvbmx5XG4gICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkIG9uZXMuXG4gICBSZXR1cm4gZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXN1cHBlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSB1cHBlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBIGBgVHlwZUVycm9yYGAgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlXG4gICBhbnkgbm9uLXN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nIGBgYnl0ZXNgYCBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byBgYGxlbihzKWBgLlxuXG5zdHIubG93ZXIoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgWzRdXG4gICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBwcmVmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcubHN0cmlwKClcbiAgIFwnc3BhY2lvdXMgICBcJ1xuICAgPj4+IFwnd3d3LmV4YW1wbGUuY29tXCcubHN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGUuY29tXCdcblxuc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG5cbiAgIFRoaXMgc3RhdGljIG1ldGhvZCByZXR1cm5zIGEgdHJhbnNsYXRpb24gdGFibGUgdXNhYmxlIGZvclxuICAgYGBzdHIudHJhbnNsYXRlKClgYC5cblxuICAgSWYgdGhlcmUgaXMgb25seSBvbmUgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBkaWN0aW9uYXJ5IG1hcHBpbmdcbiAgIFVuaWNvZGUgb3JkaW5hbHMgKGludGVnZXJzKSBvciBjaGFyYWN0ZXJzIChzdHJpbmdzIG9mIGxlbmd0aCAxKSB0b1xuICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yIE5vbmUuXG4gICBDaGFyYWN0ZXIga2V5cyB3aWxsIHRoZW4gYmUgY29udmVydGVkIHRvIG9yZGluYWxzLlxuXG4gICBJZiB0aGVyZSBhcmUgdHdvIGFyZ3VtZW50cywgdGhleSBtdXN0IGJlIHN0cmluZ3Mgb2YgZXF1YWwgbGVuZ3RoLFxuICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCB3aWxsIGJlIG1hcHBlZFxuICAgdG8gdGhlIGNoYXJhY3RlciBhdCB0aGUgc2FtZSBwb3NpdGlvbiBpbiB5LiAgSWYgdGhlcmUgaXMgYSB0aGlyZFxuICAgYXJndW1lbnQsIGl0IG11c3QgYmUgYSBzdHJpbmcsIHdob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSBtYXBwZWQgdG9cbiAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cblxuc3RyLnBhcnRpdGlvbihzZXApXG5cbiAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBpdHNlbGYsIGZvbGxvd2VkIGJ5XG4gICB0d28gZW1wdHkgc3RyaW5ncy5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluIGBgc1tzdGFydDplbmRdYGAuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiBgYC0xYGAgb24gZmFpbHVyZS5cblxuc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBMaWtlIGBgcmZpbmQoKWBgIGJ1dCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqXG4gICBpcyBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3JcbiAgIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbnN0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgYGBOb25lYGAsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3JcbiAgIHNwbGl0dGluZyBmcm9tIHRoZSByaWdodCwgYGByc3BsaXQoKWBgIGJlaGF2ZXMgbGlrZSBgYHNwbGl0KClgYFxuICAgd2hpY2ggaXMgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGUgKmNoYXJzKiBhcmd1bWVudCBkZWZhdWx0cyB0b1xuICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhIHN1ZmZpeDsgcmF0aGVyLFxuICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5yc3RyaXAoKVxuICAgXCcgICBzcGFjaW91c1wnXG4gICA+Pj4gXCdtaXNzaXNzaXBwaVwnLnJzdHJpcChcJ2lwelwnKVxuICAgXCdtaXNzaXNzXCdcblxuc3RyLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbiAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCpcbiAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgYGBtYXhzcGxpdCsxYGBcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCwgdGhlbiB0aGVyZSBpcyBubyBsaW1pdFxuICAgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgYXJlIG1hZGUpLlxuXG4gICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90IGdyb3VwZWQgdG9nZXRoZXJcbiAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMSwsMlwnLnNwbGl0KFwnLFwnKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnXCcsIFwnMlwnXWBgKS4gIFRoZSAqc2VwKlxuICAgYXJndW1lbnQgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4gICBgYFwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJylgYCByZXR1cm5zIGBgW1wnMVwnLCBcJzJcJywgXCczXCddYGApLiBTcGxpdHRpbmdcbiAgIGFuIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zIGBgW1wnXCddYGAuXG5cbiAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgYGBOb25lYGAsIGEgZGlmZmVyZW50IHNwbGl0dGluZ1xuICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBhcmUgcmVnYXJkZWRcbiAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5IHN0cmluZ3NcbiAgIGF0IHRoZSBzdGFydCBvciBlbmQgaWYgdGhlIHN0cmluZyBoYXMgbGVhZGluZyBvciB0cmFpbGluZ1xuICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhIHN0cmluZ1xuICAgY29uc2lzdGluZyBvZiBqdXN0IHdoaXRlc3BhY2Ugd2l0aCBhIGBgTm9uZWBgIHNlcGFyYXRvciByZXR1cm5zXG4gICBgYFtdYGAuXG5cbiAgIEZvciBleGFtcGxlLCBgYFwnIDEgIDIgICAzICBcJy5zcGxpdCgpYGAgcmV0dXJucyBgYFtcJzFcJywgXCcyXCcsIFwnM1wnXWBgLFxuICAgYW5kIGBgXCcgIDEgIDIgICAzICBcJy5zcGxpdChOb25lLCAxKWBgIHJldHVybnMgYGBbXCcxXCcsIFwnMiAgIDMgIFwnXWBgLlxuXG5zdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuXG4gICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBicmVha2luZyBhdCBsaW5lXG4gICBib3VuZGFyaWVzLiAgTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlXG4gICByZXR1cm4gYGBGYWxzZWBgLiAqcHJlZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIHByZWZpeGVzIHRvIGxvb2tcbiAgIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXRcbiAgIHBvc2l0aW9uLlxuXG5zdHIuc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nXG4gICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlXG4gICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGVcbiAgICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycypcbiAgIGFyZ3VtZW50IGlzIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHNcbiAgIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgXCdzcGFjaW91c1wnXG4gICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlXCdcblxuc3RyLnN3YXBjYXNlKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdXBwZXJjYXNlIGNoYXJhY3RlcnMgY29udmVydGVkIHRvXG4gICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgICAgICAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcylcblxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuc3RyLnRyYW5zbGF0ZShtYXApXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSAqbWFwKiB3aGljaCBtdXN0IGJlIGEgZGljdGlvbmFyeSBvZiBVbmljb2RlIG9yZGluYWxzXG4gICAoaW50ZWdlcnMpIHRvIFVuaWNvZGUgb3JkaW5hbHMsIHN0cmluZ3Mgb3IgYGBOb25lYGAuICBVbm1hcHBlZFxuICAgY2hhcmFjdGVycyBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvIGBgTm9uZWBgIGFyZVxuICAgZGVsZXRlZC5cblxuICAgWW91IGNhbiB1c2UgYGBzdHIubWFrZXRyYW5zKClgYCB0byBjcmVhdGUgYSB0cmFuc2xhdGlvbiBtYXAgZnJvbVxuICAgY2hhcmFjdGVyLXRvLWNoYXJhY3RlciBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgZm9ybWF0cy5cblxuICAgTm90ZTogQW4gZXZlbiBtb3JlIGZsZXhpYmxlIGFwcHJvYWNoIGlzIHRvIGNyZWF0ZSBhIGN1c3RvbSBjaGFyYWN0ZXJcbiAgICAgbWFwcGluZyBjb2RlYyB1c2luZyB0aGUgYGBjb2RlY3NgYCBtb2R1bGUgKHNlZVxuICAgICBgYGVuY29kaW5ncy5jcDEyNTFgYCBmb3IgYW4gZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodFxuICAgYmUgYGBGYWxzZWBgIGlmIGBgc2BgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuc3RyLnpmaWxsKHdpZHRoKVxuXG4gICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSBzdHJpbmcgb2ZcbiAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSBvcmlnaW5hbFxuICAgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBgbGVuKHMpYGAuXG5cblxuT2xkIFN0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbk5vdGU6IFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgYXJlIG9ic29sZXRlIGFuZCBtYXkgZ29cbiAgYXdheSBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgUHl0aG9uLiAgVXNlIHRoZSBuZXcgKlN0cmluZyBGb3JtYXR0aW5nKlxuICBpbiBuZXcgY29kZS5cblxuU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yXG4obW9kdWxvKS4gVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yXG4qaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuIEdpdmVuIGBgZm9ybWF0ICUgdmFsdWVzYGAgKHdoZXJlICpmb3JtYXQqIGlzXG5hIHN0cmluZyksIGBgJWBgIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCogYXJlIHJlcGxhY2VkXG53aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4gVGhlIGVmZmVjdCBpcyBzaW1pbGFyIHRvIHRoZVxudXNpbmcgYGBzcHJpbnRmKClgYCBpbiB0aGUgQyBsYW5ndWFnZS5cblxuSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSBub24tXG50dXBsZSBvYmplY3QuIFs1XSAgT3RoZXJ3aXNlLCAqdmFsdWVzKiBtdXN0IGJlIGEgdHVwbGUgd2l0aCBleGFjdGx5XG50aGUgbnVtYmVyIG9mIGl0ZW1zIHNwZWNpZmllZCBieSB0aGUgZm9ybWF0IHN0cmluZywgb3IgYSBzaW5nbGVcbm1hcHBpbmcgb2JqZWN0IChmb3IgZXhhbXBsZSwgYSBkaWN0aW9uYXJ5KS5cblxuQSBjb252ZXJzaW9uIHNwZWNpZmllciBjb250YWlucyB0d28gb3IgbW9yZSBjaGFyYWN0ZXJzIGFuZCBoYXMgdGhlXG5mb2xsb3dpbmcgY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOlxuXG4xLiBUaGUgYGBcJyVcJ2BgIGNoYXJhY3Rlciwgd2hpY2ggbWFya3MgdGhlIHN0YXJ0IG9mIHRoZSBzcGVjaWZpZXIuXG5cbjIuIE1hcHBpbmcga2V5IChvcHRpb25hbCksIGNvbnNpc3Rpbmcgb2YgYSBwYXJlbnRoZXNpc2VkIHNlcXVlbmNlIG9mXG4gICBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSwgYGAoc29tZW5hbWUpYGApLlxuXG4zLiBDb252ZXJzaW9uIGZsYWdzIChvcHRpb25hbCksIHdoaWNoIGFmZmVjdCB0aGUgcmVzdWx0IG9mIHNvbWVcbiAgIGNvbnZlcnNpb24gdHlwZXMuXG5cbjQuIE1pbmltdW0gZmllbGQgd2lkdGggKG9wdGlvbmFsKS4gIElmIHNwZWNpZmllZCBhcyBhbiBgYFwnKlwnYGBcbiAgIChhc3RlcmlzayksIHRoZSBhY3R1YWwgd2lkdGggaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlXG4gICB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGVcbiAgIG1pbmltdW0gZmllbGQgd2lkdGggYW5kIG9wdGlvbmFsIHByZWNpc2lvbi5cblxuNS4gUHJlY2lzaW9uIChvcHRpb25hbCksIGdpdmVuIGFzIGEgYGBcJy5cJ2BgIChkb3QpIGZvbGxvd2VkIGJ5IHRoZVxuICAgcHJlY2lzaW9uLiAgSWYgc3BlY2lmaWVkIGFzIGBgXCcqXCdgYCAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsXG4gICBwcmVjaXNpb24gaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLFxuICAgYW5kIHRoZSB2YWx1ZSB0byBjb252ZXJ0IGNvbWVzIGFmdGVyIHRoZSBwcmVjaXNpb24uXG5cbjYuIExlbmd0aCBtb2RpZmllciAob3B0aW9uYWwpLlxuXG43LiBDb252ZXJzaW9uIHR5cGUuXG5cbldoZW4gdGhlIHJpZ2h0IGFyZ3VtZW50IGlzIGEgZGljdGlvbmFyeSAob3Igb3RoZXIgbWFwcGluZyB0eXBlKSwgdGhlblxudGhlIGZvcm1hdHMgaW4gdGhlIHN0cmluZyAqbXVzdCogaW5jbHVkZSBhIHBhcmVudGhlc2lzZWQgbWFwcGluZyBrZXlcbmludG8gdGhhdCBkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBgYFwnJVwnYGAgY2hhcmFjdGVyLlxuVGhlIG1hcHBpbmcga2V5IHNlbGVjdHMgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZCBmcm9tIHRoZSBtYXBwaW5nLlxuRm9yIGV4YW1wbGU6XG5cbj4+PiBwcmludChcJyUobGFuZ3VhZ2UpcyBoYXMgJShudW1iZXIpMDNkIHF1b3RlIHR5cGVzLlwnICVcbi4uLiAgICAgICB7XCdsYW5ndWFnZVwnOiAiUHl0aG9uIiwgIm51bWJlciI6IDJ9KVxuUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuXG5cbkluIHRoaXMgY2FzZSBubyBgYCpgYCBzcGVjaWZpZXJzIG1heSBvY2N1ciBpbiBhIGZvcm1hdCAoc2luY2UgdGhleVxucmVxdWlyZSBhIHNlcXVlbnRpYWwgcGFyYW1ldGVyIGxpc3QpLlxuXG5UaGUgY29udmVyc2lvbiBmbGFnIGNoYXJhY3RlcnMgYXJlOlxuXG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IEZsYWcgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgXCcjXCdgYCAgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgZm9ybSIgKHdoZXJlIGRlZmluZWQgICAgIHxcbnwgICAgICAgICAgIHwgYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJzBcJ2BgICAgfCBUaGUgY29udmVyc2lvbiB3aWxsIGJlIHplcm8gcGFkZGVkIGZvciBudW1lcmljIHZhbHVlcy4gICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnLVwnYGAgICB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzIHRoZSBgYFwnMFwnYGAgICAgICAgICAgIHxcbnwgICAgICAgICAgIHwgY29udmVyc2lvbiBpZiBib3RoIGFyZSBnaXZlbikuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBcJyBcJ2BgICAgfCAoYSBzcGFjZSkgQSBibGFuayBzaG91bGQgYmUgbGVmdCBiZWZvcmUgYSBwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5ICAgfFxufCAgICAgICAgICAgfCBzdHJpbmcpIHByb2R1Y2VkIGJ5IGEgc2lnbmVkIGNvbnZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYFwnK1wnYGAgICB8IEEgc2lnbiBjaGFyYWN0ZXIgKGBgXCcrXCdgYCBvciBgYFwnLVwnYGApIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgICAgfFxufCAgICAgICAgICAgfCAob3ZlcnJpZGVzIGEgInNwYWNlIiBmbGFnKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5BIGxlbmd0aCBtb2RpZmllciAoYGBoYGAsIGBgbGBgLCBvciBgYExgYCkgbWF5IGJlIHByZXNlbnQsIGJ1dCBpc1xuaWdub3JlZCBhcyBpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBQeXRob24gLS0gc28gZS5nLiBgYCVsZGBgIGlzXG5pZGVudGljYWwgdG8gYGAlZGBgLlxuXG5UaGUgY29udmVyc2lvbiB0eXBlcyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgQ29udmVyc2lvbiAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgYGBcJ2RcJ2BgICAgICAgfCBTaWduZWQgaW50ZWdlciBkZWNpbWFsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnaVwnYGAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdvXCdgYCAgICAgIHwgU2lnbmVkIG9jdGFsIHZhbHVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoMSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3VcJ2BgICAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byBgYFwnZFwnYGAuICAgICAgICAgIHwgKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCd4XCdgYCAgICAgIHwgU2lnbmVkIGhleGFkZWNpbWFsIChsb3dlcmNhc2UpLiAgICAgICAgICAgICAgICAgICAgICAgfCAoMikgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ1hcJ2BgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKHVwcGVyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnZVwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAobG93ZXJjYXNlKS4gICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdFXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0ICh1cHBlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ2ZcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnRlwnYGAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdnXCdgYCAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZm9ybWF0LiBVc2VzIGxvd2VyY2FzZSBleHBvbmVudGlhbCAgICAgfCAoNCkgICAgIHxcbnwgICAgICAgICAgICAgIHwgZm9ybWF0IGlmIGV4cG9uZW50IGlzIGxlc3MgdGhhbiAtNCBvciBub3QgbGVzcyB0aGFuICAgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgcHJlY2lzaW9uLCBkZWNpbWFsIGZvcm1hdCBvdGhlcndpc2UuICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ0dcJ2BgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgdXBwZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnY1wnYGAgICAgICB8IFNpbmdsZSBjaGFyYWN0ZXIgKGFjY2VwdHMgaW50ZWdlciBvciBzaW5nbGUgY2hhcmFjdGVyIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHN0cmluZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCdyXCdgYCAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyBgYHJlcHIoKWBgKS4gfCAoNSkgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgYGBcJ3NcJ2BgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIGBgc3RyKClgYCkuICB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBgYFwnYVwnYGAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgICAgICAgICAgICAgIHwgKDUpICAgICB8XG58ICAgICAgICAgICAgICB8IGBgYXNjaWkoKWBgKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IGBgXCclXCdgYCAgICAgIHwgTm8gYXJndW1lbnQgaXMgY29udmVydGVkLCByZXN1bHRzIGluIGEgYGBcJyVcJ2BgICAgICAgICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoYGBcJzBcJ2BgKSB0byBiZSBpbnNlcnRlZFxuICAgYmV0d2VlbiBsZWZ0LWhhbmQgcGFkZGluZyBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhlIG51bWJlciBpZiB0aGVcbiAgIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90IGFscmVhZHkgYSB6ZXJvLlxuXG4yLiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIGEgbGVhZGluZyBgYFwnMHhcJ2BgIG9yIGBgXCcwWFwnYGAgKGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGUgYGBcJ3hcJ2BgIG9yIGBgXCdYXCdgYCBmb3JtYXQgd2FzIHVzZWQpIHRvIGJlIGluc2VydGVkXG4gICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZVxuICAgbGVhZGluZyBjaGFyYWN0ZXIgb2YgdGhlIHJlc3VsdCBpcyBub3QgYWxyZWFkeSBhIHplcm8uXG5cbjMuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBldmVuIGlmIG5vIGRpZ2l0cyBmb2xsb3cgaXQuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbFxuICAgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuXG5cbjQuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhIGRlY2ltYWxcbiAgIHBvaW50LCBhbmQgdHJhaWxpbmcgemVyb2VzIGFyZSBub3QgcmVtb3ZlZCBhcyB0aGV5IHdvdWxkIG90aGVyd2lzZVxuICAgYmUuXG5cbiAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBiZWZvcmVcbiAgIGFuZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNS4gSWYgcHJlY2lzaW9uIGlzIGBgTmBgLCB0aGUgb3V0cHV0IGlzIHRydW5jYXRlZCB0byBgYE5gYCBjaGFyYWN0ZXJzLlxuXG4xLiBTZWUgKipQRVAgMjM3KiouXG5cblNpbmNlIFB5dGhvbiBzdHJpbmdzIGhhdmUgYW4gZXhwbGljaXQgbGVuZ3RoLCBgYCVzYGAgY29udmVyc2lvbnMgZG9cbm5vdCBhc3N1bWUgdGhhdCBgYFwnXFwwXCdgYCBpcyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IGBgJWZgYCBjb252ZXJzaW9ucyBmb3IgbnVtYmVycyB3aG9zZSBhYnNvbHV0ZVxudmFsdWUgaXMgb3ZlciAxZTUwIGFyZSBubyBsb25nZXIgcmVwbGFjZWQgYnkgYGAlZ2BgIGNvbnZlcnNpb25zLlxuXG5BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXNcbmBgc3RyaW5nYGAgYW5kIGBgcmVgYC5cblxuXG5SYW5nZSBUeXBlXG49PT09PT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3Jcbmxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSBgYHJhbmdlYGAgdHlwZSBpcyB0aGF0IGFuIGBgcmFuZ2VgYFxub2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgYW1vdW50IG9mIG1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplXG5vZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cy5cblxuUmFuZ2Ugb2JqZWN0cyBoYXZlIHJlbGF0aXZlbHkgbGl0dGxlIGJlaGF2aW9yOiB0aGV5IHN1cHBvcnQgaW5kZXhpbmcsXG5jb250YWlucywgaXRlcmF0aW9uLCB0aGUgYGBsZW4oKWBgIGZ1bmN0aW9uLCBhbmQgdGhlIGZvbGxvd2luZ1xubWV0aG9kczpcblxucmFuZ2UuY291bnQoeClcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCBgYHNbaV0gPT0geGBgLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbnJhbmdlLmluZGV4KHgpXG5cbiAgIFJldHVybiB0aGUgc21hbGxlc3QgKmkqIHN1Y2ggdGhhdCBgYHNbaV0gPT0geGBgLiAgUmFpc2VzXG4gICBgYFZhbHVlRXJyb3JgYCB3aGVuICp4KiBpcyBub3QgaW4gdGhlIHJhbmdlLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cblxuTXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PVxuXG5MaXN0IGFuZCBieXRlYXJyYXkgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCkuXG5cbk5vdGUgdGhhdCB3aGlsZSBsaXN0cyBhbGxvdyB0aGVpciBpdGVtcyB0byBiZSBvZiBhbnkgdHlwZSwgYnl0ZWFycmF5XG5vYmplY3QgIml0ZW1zIiBhcmUgYWxsIGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgYGBzW2ldID0geGBgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6al0gPSB0YGAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6al1gYCAgICAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmpdID0gW11gYCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXSA9IHRgYCAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mIGBgc1tpOmo6a11gYCBhcmUgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmo6a11gYCAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaTpqOmtdYGAgZnJvbSB0aGUgbGlzdCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmFwcGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbeF1gYCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmV4dGVuZCh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbbGVuKHMpOmxlbihzKV0gPSB4YGAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3VudCh4KWBgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5kZXgoeFssIGlbLCBqXV0pYGAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1trXSA9PSB4YGAgYW5kIGBgaSA8PSBrIDwgamBgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuaW5zZXJ0KGksIHgpYGAgICAgICAgICAgICAgfCBzYW1lIGFzIGBgc1tpOmldID0gW3hdYGAgICAgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnBvcChbaV0pYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHggPSBzW2ldOyBkZWwgc1tpXTsgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geGBgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLnJlbW92ZSh4KWBgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYGRlbCBzW3MuaW5kZXgoeCldYGAgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZXZlcnNlKClgYCAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5zb3J0KFtrZXlbLCByZXZlcnNlXV0pYGAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDYpLCAoNyksICg4KSAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gKngqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG4zLiBSYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhIG5lZ2F0aXZlXG4gICBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlIGBgaW5kZXgoKWBgXG4gICBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLiAgSWYgaXRcbiAgIGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlIGluZGljZXMuXG5cbjQuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgIGBgaW5zZXJ0KClgYCBtZXRob2QsIHRoZSBzZXF1ZW5jZSBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZVxuICAgaW5kaWNlcy4gIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yXG4gICBzbGljZSBpbmRpY2VzLlxuXG41LiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvIGBgLTFgYCwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG42LiBUaGUgYGBzb3J0KClgYCBhbmQgYGByZXZlcnNlKClgYCBtZXRob2RzIG1vZGlmeSB0aGUgc2VxdWVuY2UgaW5cbiAgIHBsYWNlIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZVxuICAgc2VxdWVuY2UuICBUbyByZW1pbmQgeW91IHRoYXQgdGhleSBvcGVyYXRlIGJ5IHNpZGUgZWZmZWN0LCB0aGV5XG4gICBkb25cJ3QgcmV0dXJuIHRoZSBzb3J0ZWQgb3IgcmV2ZXJzZWQgc2VxdWVuY2UuXG5cbjcuIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCB0YWtlcyBvcHRpb25hbCBhcmd1bWVudHMgZm9yIGNvbnRyb2xsaW5nIHRoZVxuICAgY29tcGFyaXNvbnMuICBFYWNoIG11c3QgYmUgc3BlY2lmaWVkIGFzIGEga2V5d29yZCBhcmd1bWVudC5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6IGBga2V5PXN0ci5sb3dlcmBgLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzIGBgTm9uZWBgLiBVc2UgYGBmdW5jdG9vbHMuY21wX3RvX2tleSgpYGAgdG9cbiAgIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIFRoZSBgYHNvcnQoKWBgIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGVcbiAgIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICAgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3Nlc1xuICAgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgc29ydGVkLFxuICAgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGUgbGlzdCBpc1xuICAgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIG1ha2VzIHRoZSBsaXN0IGFwcGVhclxuICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyBgYFZhbHVlRXJyb3JgYCBpZiBpdCBjYW4gZGV0ZWN0XG4gICB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWQgZHVyaW5nIGEgc29ydC5cblxuOC4gYGBzb3J0KClgYCBpcyBub3Qgc3VwcG9ydGVkIGJ5IGBgYnl0ZWFycmF5YGAgb2JqZWN0cy5cblxuXG5CeXRlcyBhbmQgQnl0ZSBBcnJheSBNZXRob2RzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cywgYmVpbmcgInN0cmluZ3Mgb2YgYnl0ZXMiLCBoYXZlIGFsbFxubWV0aG9kcyBmb3VuZCBvbiBzdHJpbmdzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgYGBlbmNvZGUoKWBgLFxuYGBmb3JtYXQoKWBgIGFuZCBgYGlzaWRlbnRpZmllcigpYGAsIHdoaWNoIGRvIG5vdCBtYWtlIHNlbnNlIHdpdGhcbnRoZXNlIHR5cGVzLiAgRm9yIGNvbnZlcnRpbmcgdGhlIG9iamVjdHMgdG8gc3RyaW5ncywgdGhleSBoYXZlIGFcbmBgZGVjb2RlKClgYCBtZXRob2QuXG5cbldoZXJldmVyIG9uZSBvZiB0aGVzZSBtZXRob2RzIG5lZWRzIHRvIGludGVycHJldCB0aGUgYnl0ZXMgYXNcbmNoYXJhY3RlcnMgKGUuZy4gdGhlIGBgaXMuLi4oKWBgIG1ldGhvZHMpLCB0aGUgQVNDSUkgY2hhcmFjdGVyIHNldCBpc1xuYXNzdW1lZC5cblxuTm90ZTogVGhlIG1ldGhvZHMgb24gYnl0ZXMgYW5kIGJ5dGVhcnJheSBvYmplY3RzIGRvblwndCBhY2NlcHQgc3RyaW5ncyBhc1xuICB0aGVpciBhcmd1bWVudHMsIGp1c3QgYXMgdGhlIG1ldGhvZHMgb24gc3RyaW5ncyBkb25cJ3QgYWNjZXB0IGJ5dGVzXG4gIGFzIHRoZWlyIGFyZ3VtZW50cy4gIEZvciBleGFtcGxlLCB5b3UgaGF2ZSB0byB3cml0ZVxuXG4gICAgIGEgPSAiYWJjIlxuICAgICBiID0gYS5yZXBsYWNlKCJhIiwgImYiKVxuXG4gIGFuZFxuXG4gICAgIGEgPSBiImFiYyJcbiAgICAgYiA9IGEucmVwbGFjZShiImEiLCBiImYiKVxuXG5ieXRlcy5kZWNvZGUoZW5jb2Rpbmc9InV0Zi04IiwgZXJyb3JzPSJzdHJpY3QiKVxuYnl0ZWFycmF5LmRlY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhIHN0cmluZyBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIGJ5dGVzLiAgRGVmYXVsdCBlbmNvZGluZyBpc1xuICAgYGBcJ3V0Zi04XCdgYC4gKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvclxuICAgaGFuZGxpbmcgc2NoZW1lLiAgVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzIGBgXCdzdHJpY3RcJ2BgLCBtZWFuaW5nXG4gICB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhIGBgVW5pY29kZUVycm9yYGAuICBPdGhlciBwb3NzaWJsZVxuICAgdmFsdWVzIGFyZSBgYFwnaWdub3JlXCdgYCwgYGBcJ3JlcGxhY2VcJ2BgIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgYGBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKWBgLCBzZWUgc2VjdGlvbiAqQ29kZWMgQmFzZVxuICAgQ2xhc3NlcyouIEZvciBhIGxpc3Qgb2YgcG9zc2libGUgZW5jb2RpbmdzLCBzZWUgc2VjdGlvbiAqU3RhbmRhcmRcbiAgIEVuY29kaW5ncyouXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzLlxuXG5UaGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSB0eXBlcyBoYXZlIGFuIGFkZGl0aW9uYWwgY2xhc3MgbWV0aG9kOlxuXG5jbGFzc21ldGhvZCBieXRlcy5mcm9taGV4KHN0cmluZylcbmNsYXNzbWV0aG9kIGJ5dGVhcnJheS5mcm9taGV4KHN0cmluZylcblxuICAgVGhpcyBgYGJ5dGVzYGAgY2xhc3MgbWV0aG9kIHJldHVybnMgYSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0LFxuICAgZGVjb2RpbmcgdGhlIGdpdmVuIHN0cmluZyBvYmplY3QuICBUaGUgc3RyaW5nIG11c3QgY29udGFpbiB0d29cbiAgIGhleGFkZWNpbWFsIGRpZ2l0cyBwZXIgYnl0ZSwgc3BhY2VzIGFyZSBpZ25vcmVkLlxuXG4gICA+Pj4gYnl0ZXMuZnJvbWhleChcJ2YwIGYxZjIgIFwnKVxuICAgYlwnXFx4ZjBcXHhmMVxceGYyXCdcblxuVGhlIG1ha2V0cmFucyBhbmQgdHJhbnNsYXRlIG1ldGhvZHMgZGlmZmVyIGluIHNlbWFudGljcyBmcm9tIHRoZVxudmVyc2lvbnMgYXZhaWxhYmxlIG9uIHN0cmluZ3M6XG5cbmJ5dGVzLnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pXG5ieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlWywgZGVsZXRlXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgYnl0ZXMgb3IgYnl0ZWFycmF5IG9iamVjdCB3aGVyZSBhbGwgYnl0ZXNcbiAgIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmRlbGV0ZSogYXJlIHJlbW92ZWQsIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBieXRlcyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uXG4gICB0YWJsZSwgd2hpY2ggbXVzdCBiZSBhIGJ5dGVzIG9iamVjdCBvZiBsZW5ndGggMjU2LlxuXG4gICBZb3UgY2FuIHVzZSB0aGUgYGBieXRlcy5tYWtldHJhbnMoKWBgIG1ldGhvZCB0byBjcmVhdGUgYVxuICAgdHJhbnNsYXRpb24gdGFibGUuXG5cbiAgIFNldCB0aGUgKnRhYmxlKiBhcmd1bWVudCB0byBgYE5vbmVgYCBmb3IgdHJhbnNsYXRpb25zIHRoYXQgb25seVxuICAgZGVsZXRlIGNoYXJhY3RlcnM6XG5cbiAgICAgID4+PiBiXCdyZWFkIHRoaXMgc2hvcnQgdGV4dFwnLnRyYW5zbGF0ZShOb25lLCBiXCdhZWlvdVwnKVxuICAgICAgYlwncmQgdGhzIHNocnQgdHh0XCdcblxuc3RhdGljIGJ5dGVzLm1ha2V0cmFucyhmcm9tLCB0bylcbnN0YXRpYyBieXRlYXJyYXkubWFrZXRyYW5zKGZyb20sIHRvKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgIGBgYnl0ZXMudHJhbnNsYXRlKClgYCB0aGF0IHdpbGwgbWFwIGVhY2ggY2hhcmFjdGVyIGluICpmcm9tKiBpbnRvXG4gICB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluICp0byo7ICpmcm9tKiBhbmQgKnRvKiBtdXN0IGJlXG4gICBieXRlcyBvYmplY3RzIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4xLlxuJywKLSAndHlwZXNzZXEtbXV0YWJsZSc6ICdcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuTGlzdCBhbmQgYnl0ZWFycmF5IG9iamVjdHMgc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgdGhhdCBhbGxvd1xuaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIHRoZSBvYmplY3QuICBPdGhlciBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzXG4od2hlbiBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UpIHNob3VsZCBhbHNvIHN1cHBvcnQgdGhlc2Ugb3BlcmF0aW9ucy5cblN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGVzOiBzdWNoIG9iamVjdHMgY2Fubm90XG5iZSBtb2RpZmllZCBvbmNlIGNyZWF0ZWQuIFRoZSBmb2xsb3dpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBvblxubXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlcmUgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QpLlxuXG5Ob3RlIHRoYXQgd2hpbGUgbGlzdHMgYWxsb3cgdGhlaXIgaXRlbXMgdG8gYmUgb2YgYW55IHR5cGUsIGJ5dGVhcnJheVxub2JqZWN0ICJpdGVtcyIgYXJlIGFsbCBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCA8PSB4IDwgMjU2LlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG58IGBgc1tpXSA9IHhgYCAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmpdID0gdGBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhlIGNvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAqdCogICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBkZWwgc1tpOmpdYGAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTpqXSA9IFtdYGAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgc1tpOmo6a10gPSB0YGAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiBgYHNbaTpqOmtdYGAgYXJlIHwgKDEpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqOmtdYGAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzIG9mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2k6ajprXWBgIGZyb20gdGhlIGxpc3QgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5hcHBlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0gICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW3hdYGAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2xlbihzKTpsZW4ocyldID0geGBgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICAgICAgfCByZXR1cm4gbnVtYmVyIG9mICppKlwncyBmb3Igd2hpY2ggfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNbaV0gPT0geGBgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiBzdWNoIHRoYXQgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgYHNba10gPT0geGBgIGFuZCBgYGkgPD0gayA8IGpgYCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgc2FtZSBhcyBgYHNbaTppXSA9IFt4XWBgICAgICAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5wb3AoW2ldKWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGB4ID0gc1tpXTsgZGVsIHNbaV07ICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIHhgYCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5yZW1vdmUoeClgYCAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBkZWwgc1tzLmluZGV4KHgpXWBgICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuc29ydChba2V5WywgcmV2ZXJzZV1dKWBgICAgfCBzb3J0IHRoZSBpdGVtcyBvZiAqcyogaW4gcGxhY2UgICB8ICg2KSwgKDcpLCAoOCkgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuICp4KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC5cblxuMy4gUmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYSBuZWdhdGl2ZVxuICAgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSBgYGluZGV4KClgYFxuICAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy4gIElmIGl0XG4gICBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvciBzbGljZSBpbmRpY2VzLlxuXG40LiBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlXG4gICBgYGluc2VydCgpYGAgbWV0aG9kLCB0aGUgc2VxdWVuY2UgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2VcbiAgIGluZGljZXMuICBJZiBpdCBpcyBzdGlsbCBuZWdhdGl2ZSwgaXQgaXMgdHJ1bmNhdGVkIHRvIHplcm8sIGFzIGZvclxuICAgc2xpY2UgaW5kaWNlcy5cblxuNS4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuNi4gVGhlIGBgc29ydCgpYGAgYW5kIGBgcmV2ZXJzZSgpYGAgbWV0aG9kcyBtb2RpZnkgdGhlIHNlcXVlbmNlIGluXG4gICBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2VcbiAgIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleVxuICAgZG9uXCd0IHJldHVybiB0aGUgc29ydGVkIG9yIHJldmVyc2VkIHNlcXVlbmNlLlxuXG43LiBUaGUgYGBzb3J0KClgYCBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGVcbiAgIGNvbXBhcmlzb25zLiAgRWFjaCBtdXN0IGJlIHNwZWNpZmllZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuXG5cbiAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gZXh0cmFjdFxuICAgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiBgYGtleT1zdHIubG93ZXJgYC4gIFRoZVxuICAgZGVmYXVsdCB2YWx1ZSBpcyBgYE5vbmVgYC4gVXNlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHRvXG4gICBjb252ZXJ0IGFuIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0byBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHRoZSBsaXN0XG4gICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlXG4gICBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXRcbiAgIGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXNcbiAgIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgaWYgaXQgY2FuIGRldGVjdFxuICAgdGhhdCB0aGUgbGlzdCBoYXMgYmVlbiBtdXRhdGVkIGR1cmluZyBhIHNvcnQuXG5cbjguIGBgc29ydCgpYGAgaXMgbm90IHN1cHBvcnRlZCBieSBgYGJ5dGVhcnJheWBgIG9iamVjdHMuXG4nLAorICd0eXBlc3NlcSc6ICdcblNlcXVlbmNlIFR5cGVzIC0tLSBgYGxpc3RgYCwgYGB0dXBsZWBgLCBgYHJhbmdlYGBcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgYGBjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2VgYFxuQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Vcbm9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHlcbihvcGVyYXRpb25zIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByaW9yaXR5KS4gIEluIHRoZSB0YWJsZSxcbipzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSwgKm4qLCAqaSosICpqKiBhbmQgKmsqIGFyZVxuaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kIHZhbHVlXG5yZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyouXG5cblRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSBgYCtgYCAoY29uY2F0ZW5hdGlvbikgYW5kIGBgKmBgXG4ocmVwZXRpdGlvbikgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5IGFzIHRoZSBjb3JyZXNwb25kaW5nXG5udW1lcmljIG9wZXJhdGlvbnMuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbnwgYGB4IGluIHNgYCAgICAgICAgICAgICAgICAgfCBgYFRydWVgYCBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYEZhbHNlYGAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGB4IG5vdCBpbiBzYGAgICAgICAgICAgICAgfCBgYEZhbHNlYGAgaWYgYW4gaXRlbSBvZiAqcyogaXMgICB8ICgxKSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSBgYFRydWVgYCAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzICsgdGBgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiB8ICg2KSg3KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgcyAqIG5gYCBvciBgYG4gKiBzYGAgICAgIHwgKm4qIHNoYWxsb3cgY29waWVzIG9mICpzKiAgICAgICAgfCAoMikoNykgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb25jYXRlbmF0ZWQgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgc1tpXWBgICAgICAgICAgICAgICAgICAgIHwgKmkqdGggaXRlbSBvZiAqcyosIG9yaWdpbiAwICAgICAgfCAoMykgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICgzKSg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBsZW4ocylgYCAgICAgICAgICAgICAgICAgfCBsZW5ndGggb2YgKnMqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IGBgbWluKHMpYGAgICAgICAgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYG1heChzKWBgICAgICAgICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgYGBzLmluZGV4KHhbLCBpWywgal1dKWBgICAgfCBpbmRleCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mICB8ICg4KSAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKmkqIGFuZCBiZWZvcmUgaW5kZXggKmoqKSAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCBgYHMuY291bnQoeClgYCAgICAgICAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cmVuY2VzIG9mICAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuXG5TZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZSBhbHNvIHN1cHBvcnQgY29tcGFyaXNvbnMuICBJbiBwYXJ0aWN1bGFyLFxudHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgYnkgY29tcGFyaW5nXG5jb3JyZXNwb25kaW5nIGVsZW1lbnRzLiBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZXZlcnlcbmVsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSBzYW1lXG50eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4gIChGb3IgZnVsbCBkZXRhaWxzIHNlZSAqQ29tcGFyaXNvbnMqIGluXG50aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoaWxlIHRoZSBgYGluYGAgYW5kIGBgbm90IGluYGAgb3BlcmF0aW9ucyBhcmUgdXNlZCBvbmx5IGZvciBzaW1wbGVcbiAgIGNvbnRhaW5tZW50IHRlc3RpbmcgaW4gdGhlIGdlbmVyYWwgY2FzZSwgc29tZSBzcGVjaWFsaXNlZCBzZXF1ZW5jZXNcbiAgIChzdWNoIGFzIGBgc3RyYGAsIGBgYnl0ZXNgYCBhbmQgYGBieXRlYXJyYXlgYCkgYWxzbyB1c2UgdGhlbSBmb3JcbiAgIHN1YnNlcXVlbmNlIHRlc3Rpbmc6XG5cbiAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuICAgICAgVHJ1ZVxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiBgYDBgYCBhcmUgdHJlYXRlZCBhcyBgYDBgYCAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIGFsc28gdGhhdCB0aGUgY29waWVzXG4gICBhcmUgc2hhbGxvdzsgbmVzdGVkIHN0cnVjdHVyZXMgYXJlIG5vdCBjb3BpZWQuICBUaGlzIG9mdGVuIGhhdW50c1xuICAgbmV3IFB5dGhvbiBwcm9ncmFtbWVyczsgY29uc2lkZXI6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbXSwgW10sIFtdXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbM10sIFszXV1cblxuICAgV2hhdCBoYXMgaGFwcGVuZWQgaXMgdGhhdCBgYFtbXV1gYCBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mIGBgW1tdXSAqIDNgYCBhcmUgKHBvaW50ZXJzXG4gICB0bykgdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4gICBgYGxpc3RzYGAgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4gICBkaWZmZXJlbnQgbGlzdHMgdGhpcyB3YXk6XG5cbiAgICAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbiAgICAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbiAgICAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1szXSwgWzVdLCBbN11dXG5cbjMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZVxuICAgc3RyaW5nOiBgYGxlbihzKSArIGlgYCBvciBgYGxlbihzKSArIGpgYCBpcyBzdWJzdGl0dXRlZC4gIEJ1dCBub3RlXG4gICB0aGF0IGBgLTBgYCBpcyBzdGlsbCBgYDBgYC5cblxuNC4gVGhlIHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2ZcbiAgIGl0ZW1zIHdpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCBgYGkgPD0gayA8IGpgYC4gIElmICppKiBvciAqaiogaXNcbiAgIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLCB1c2UgYGBsZW4ocylgYC4gIElmICppKiBpcyBvbWl0dGVkIG9yXG4gICBgYE5vbmVgYCwgdXNlIGBgMGBgLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIHVzZVxuICAgYGBsZW4ocylgYC4gIElmICppKiBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXNcbiAgIGVtcHR5LlxuXG41LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgdGhlXG4gICBzZXF1ZW5jZSBvZiBpdGVtcyB3aXRoIGluZGV4ICBgYHggPSBpICsgbiprYGAgc3VjaCB0aGF0IGBgMCA8PSBuIDxcbiAgIChqLWkpL2tgYC4gIEluIG90aGVyIHdvcmRzLCB0aGUgaW5kaWNlcyBhcmUgYGBpYGAsIGBgaStrYGAsXG4gICBgYGkrMiprYGAsIGBgaSszKmtgYCBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dFxuICAgbmV2ZXIgaW5jbHVkaW5nICpqKikuICBJZiAqaSogb3IgKmoqIGlzIGdyZWF0ZXIgdGhhbiBgYGxlbihzKWBgLFxuICAgdXNlIGBgbGVuKHMpYGAuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yIGBgTm9uZWBgLCB0aGV5IGJlY29tZVxuICAgImVuZCIgdmFsdWVzICh3aGljaCBlbmQgZGVwZW5kcyBvbiB0aGUgc2lnbiBvZiAqayopLiAgTm90ZSwgKmsqXG4gICBjYW5ub3QgYmUgemVyby4gSWYgKmsqIGlzIGBgTm9uZWBgLCBpdCBpcyB0cmVhdGVkIGxpa2UgYGAxYGAuXG5cbjYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ldyBvYmplY3QuXG4gICBUaGlzIG1lYW5zIHRoYXQgYnVpbGRpbmcgdXAgYSBzZXF1ZW5jZSBieSByZXBlYXRlZCBjb25jYXRlbmF0aW9uXG4gICB3aWxsIGhhdmUgYSBxdWFkcmF0aWMgcnVudGltZSBjb3N0IGluIHRoZSB0b3RhbCBzZXF1ZW5jZSBsZW5ndGguXG4gICBUbyBnZXQgYSBsaW5lYXIgcnVudGltZSBjb3N0LCB5b3UgbXVzdCBzd2l0Y2ggdG8gb25lIG9mIHRoZVxuICAgYWx0ZXJuYXRpdmVzIGJlbG93OlxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgYGBzdHJgYCBvYmplY3RzLCB5b3UgY2FuIGJ1aWxkIGEgbGlzdCBhbmQgdXNlXG4gICAgIGBgc3RyLmpvaW4oKWBgIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhIGBgaW8uU3RyaW5nSU9gYFxuICAgICBpbnN0YW5jZSBhbmQgcmV0cmlldmUgaXRzIHZhbHVlIHdoZW4gY29tcGxldGVcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nIGBgYnl0ZXNgYCBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgYGBieXRlcy5qb2luKClgYCBvciBgYGlvLkJ5dGVzSU9gYCwgb3IgeW91IGNhbiBkbyBpbi1wbGFjZVxuICAgICBjb25jYXRlbmF0aW9uIHdpdGggYSBgYGJ5dGVhcnJheWBgIG9iamVjdC4gIGBgYnl0ZWFycmF5YGAgb2JqZWN0c1xuICAgICBhcmUgbXV0YWJsZSBhbmQgaGF2ZSBhbiBlZmZpY2llbnQgb3ZlcmFsbG9jYXRpb24gbWVjaGFuaXNtXG5cbiAgICogaWYgY29uY2F0ZW5hdGluZyBgYHR1cGxlYGAgb2JqZWN0cywgZXh0ZW5kIGEgYGBsaXN0YGAgaW5zdGVhZFxuXG4gICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb25cblxuNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyBgYHJhbmdlYGApIG9ubHkgc3VwcG9ydCBpdGVtIHNlcXVlbmNlc1xuICAgdGhhdCBmb2xsb3cgc3BlY2lmaWMgcGF0dGVybnMsIGFuZCBoZW5jZSBkb25cJ3Qgc3VwcG9ydCBzZXF1ZW5jZVxuICAgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuXG44LiBgYGluZGV4YGAgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW5cbiAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3dcbiAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZVxuICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyBgYHNbaTpqXS5pbmRleCh4KWBgLFxuICAgb25seSB3aXRob3V0IGNvcHlpbmcgYW55IGRhdGEgYW5kIHdpdGggdGhlIHJldHVybmVkIGluZGV4IGJlaW5nXG4gICByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlcXVlbmNlIHJhdGhlciB0aGFuIHRoZSBzdGFydCBvZiB0aGVcbiAgIHNsaWNlLlxuXG5cbkltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgaW1wbGVtZW50XG50aGF0IGlzIG5vdCBhbHNvIGltcGxlbWVudGVkIGJ5IG11dGFibGUgc2VxdWVuY2UgdHlwZXMgaXMgc3VwcG9ydCBmb3JcbnRoZSBgYGhhc2goKWBgIGJ1aWx0LWluLlxuXG5UaGlzIHN1cHBvcnQgYWxsb3dzIGltbXV0YWJsZSBzZXF1ZW5jZXMsIHN1Y2ggYXMgYGB0dXBsZWBgIGluc3RhbmNlcyxcbnRvIGJlIHVzZWQgYXMgYGBkaWN0YGAga2V5cyBhbmQgc3RvcmVkIGluIGBgc2V0YGAgYW5kIGBgZnJvemVuc2V0YGBcbmluc3RhbmNlcy5cblxuQXR0ZW1wdGluZyB0byBoYXNoIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0aGF0IGNvbnRhaW5zIHVuaGFzaGFibGVcbnZhbHVlcyB3aWxsIHJlc3VsdCBpbiBgYFR5cGVFcnJvcmBgLlxuXG5cbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb25cJ3Qgc3VwcG9ydCBzbGljaW5nXG4gICBvcGVyYXRpb25zIChzdWNoIGFzIGBgZGljdGBgIGFuZCBgYHNldGBgKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6IGBgY2xlYXIoKWBgIGFuZCBgYGNvcHkoKWBgIG1ldGhvZHMuXG5cblxuTGlzdHNcbj09PT09XG5cbkxpc3RzIGFyZSBtdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsIHZhcnkgYnlcbmFwcGxpY2F0aW9uKS5cblxuY2xhc3MgY2xhc3MgbGlzdChbaXRlcmFibGVdKVxuXG4gICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuXG4gICAqIFVzaW5nIGEgcGFpciBvZiBzcXVhcmUgYnJhY2tldHMgdG8gZGVub3RlIHRoZSBlbXB0eSBsaXN0OiBgYFtdYGBcblxuICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6IGBgW2FdYGAsXG4gICAgIGBgW2EsIGIsIGNdYGBcblxuICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogYGBbeCBmb3IgeCBpbiBpdGVyYWJsZV1gYFxuXG4gICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiBgYGxpc3QoKWBgIG9yIGBgbGlzdChpdGVyYWJsZSlgYFxuXG4gICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgbGlzdCB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIGxpc3QsIGEgY29weSBpcyBtYWRlIGFuZFxuICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gYGBpdGVyYWJsZVs6XWBgLiBGb3IgZXhhbXBsZSwgYGBsaXN0KFwnYWJjXCcpYGBcbiAgIHJldHVybnMgYGBbXCdhXCcsIFwnYlwnLCBcJ2NcJ11gYCBhbmQgYGBsaXN0KCAoMSwgMiwgMykgKWBgIHJldHVybnMgYGBbMSxcbiAgIDIsIDNdYGAuIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCB0aGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIG5ld1xuICAgZW1wdHkgbGlzdCwgYGBbXWBgLlxuXG4gICBNYW55IG90aGVyIG9wZXJhdGlvbnMgYWxzbyBwcm9kdWNlIGxpc3RzLCBpbmNsdWRpbmcgdGhlXG4gICBgYHNvcnRlZCgpYGAgYnVpbHQtaW4uXG5cbiAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbiAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuXG4gICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG5cbiAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5IGBgPGBgXG4gICAgICBjb21wYXJpc29ucyBiZXR3ZWVuIGl0ZW1zLiBFeGNlcHRpb25zIGFyZSBub3Qgc3VwcHJlc3NlZCAtIGlmXG4gICAgICBhbnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbFxuICAgICAgZmFpbCAoYW5kIHRoZSBsaXN0IHdpbGwgbGlrZWx5IGJlIGxlZnQgaW4gYSBwYXJ0aWFsbHkgbW9kaWZpZWRcbiAgICAgIHN0YXRlKS5cblxuICAgICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0b1xuICAgICAgZXh0cmFjdCBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQgKGZvciBleGFtcGxlLFxuICAgICAgYGBrZXk9c3RyLmxvd2VyYGApLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZVxuICAgICAgbGlzdCBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nXG4gICAgICBwcm9jZXNzLiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiBgYE5vbmVgYCBtZWFucyB0aGF0IGxpc3QgaXRlbXMgYXJlXG4gICAgICBzb3J0ZWQgZGlyZWN0bHkgd2l0aG91dCBjYWxjdWxhdGluZyBhIHNlcGFyYXRlIGtleSB2YWx1ZS5cblxuICAgICAgVGhlIGBgZnVuY3Rvb2xzLmNtcF90b19rZXkoKWBgIHV0aWxpdHkgaXMgYXZhaWxhYmxlIHRvIGNvbnZlcnQgYVxuICAgICAgMi54IHN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvIGEgKmtleSogZnVuY3Rpb24uXG5cbiAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gdGhlIGxpc3RcbiAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZVxuICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlc1xuICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2VcbiAgICAgIGBgc29ydGVkKClgYCB0byBleHBsaWNpdGx5IHJlcXVlc3QgYSBuZXcgc29ydGVkIGxpc3QgaW5zdGFuY2UpLlxuXG4gICAgICBUaGUgYGBzb3J0KClgYCBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBiZSBzdGFibGUuICBBIHNvcnQgaXNcbiAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mXG4gICAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwgLS0tIHRoaXMgaXMgaGVscGZ1bCBmb3Igc29ydGluZyBpblxuICAgICAgbXVsdGlwbGUgcGFzc2VzIChmb3IgZXhhbXBsZSwgc29ydCBieSBkZXBhcnRtZW50LCB0aGVuIGJ5IHNhbGFyeVxuICAgICAgZ3JhZGUpLlxuXG4gICAgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZyBzb3J0ZWQsXG4gICAgICB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZSBsaXN0IGlzXG4gICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgYXBwZWFyXG4gICAgICBlbXB0eSBmb3IgdGhlIGR1cmF0aW9uLCBhbmQgcmFpc2VzIGBgVmFsdWVFcnJvcmBgIGlmIGl0IGNhblxuICAgICAgZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG5cblR1cGxlc1xuPT09PT09XG5cblR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlXG5gYGVudW1lcmF0ZSgpYGAgYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW5cbmltbXV0YWJsZSBzZXF1ZW5jZSBvZiBob21vZ2VuZW91cyBkYXRhIGlzIG5lZWRlZCAoc3VjaCBhcyBhbGxvd2luZ1xuc3RvcmFnZSBpbiBhIGBgc2V0YGAgb3IgYGBkaWN0YGAgaW5zdGFuY2UpLlxuXG5jbGFzcyBjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuXG4gICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6IGBgKClgYFxuXG4gICAqIFVzaW5nIGEgdHJhaWxpbmcgY29tbWEgZm9yIGEgc2luZ2xldG9uIHR1cGxlOiBgYGEsYGAgb3IgYGAoYSwpYGBcblxuICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiBgYGEsIGIsIGNgYCBvciBgYChhLCBiLCBjKWBgXG5cbiAgICogVXNpbmcgdGhlIGBgdHVwbGUoKWBgIGJ1aWx0LWluOiBgYHR1cGxlKClgYCBvclxuICAgICBgYHR1cGxlKGl0ZXJhYmxlKWBgXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSB0dXBsZSB3aG9zZSBpdGVtcyBhcmUgdGhlIHNhbWUgYW5kIGluIHRoZVxuICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqXCdzIGl0ZW1zLiAgKml0ZXJhYmxlKiBtYXkgYmUgZWl0aGVyIGFcbiAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gaXRlcmF0b3JcbiAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuICAgdW5jaGFuZ2VkLiBGb3IgZXhhbXBsZSwgYGB0dXBsZShcJ2FiY1wnKWBgIHJldHVybnMgYGAoXCdhXCcsIFwnYlwnLFxuICAgXCdjXCcpYGAgYW5kIGBgdHVwbGUoIFsxLCAyLCAzXSApYGAgcmV0dXJucyBgYCgxLCAyLCAzKWBgLiBJZiBub1xuICAgYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLFxuICAgYGAoKWBgLlxuXG4gICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGVcbiAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5XG4gICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LlxuICAgRm9yIGV4YW1wbGUsIGBgZihhLCBiLCBjKWBgIGlzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRocmVlXG4gICBhcmd1bWVudHMsIHdoaWxlIGBgZigoYSwgYiwgYykpYGAgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlXG4gICBhcyB0aGUgc29sZSBhcmd1bWVudC5cblxuICAgVHVwbGVzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG5cbkZvciBoZXRlcm9nZW5lb3VzIGNvbGxlY3Rpb25zIG9mIGRhdGEgd2hlcmUgYWNjZXNzIGJ5IG5hbWUgaXMgY2xlYXJlclxudGhhbiBhY2Nlc3MgYnkgaW5kZXgsIGBgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpYGAgbWF5IGJlIGEgbW9yZVxuYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuXG5cblJhbmdlc1xuPT09PT09XG5cblRoZSBgYHJhbmdlYGAgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCBpc1xuY29tbW9ubHkgdXNlZCBmb3IgbG9vcGluZyBhIHNwZWNpZmljIG51bWJlciBvZiB0aW1lcyBpbiBgYGZvcmBgIGxvb3BzLlxuXG5jbGFzcyBjbGFzcyByYW5nZShbc3RhcnRdLCBzdG9wWywgc3RlcF0pXG5cbiAgIFRoZSBhcmd1bWVudHMgdG8gdGhlIHJhbmdlIGNvbnN0cnVjdG9yIG11c3QgYmUgaW50ZWdlcnMgKGVpdGhlclxuICAgYnVpbHQtaW4gYGBpbnRgYCBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgYGBfX2luZGV4X19gYFxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgYGAxYGAuIElmIHRoZSAqc3RhcnQqIGFyZ3VtZW50IGlzIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBgMGBgLiBJZlxuICAgKnN0ZXAqIGlzIHplcm8sIGBgVmFsdWVFcnJvcmBgIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSBgYHJgYCBhcmUgZGV0ZXJtaW5lZFxuICAgYnkgdGhlIGZvcm11bGEgYGByW2ldID0gc3RhcnQgKyBzdGVwKmlgYCB3aGVyZSBgYGkgPj0gMGBgIGFuZFxuICAgYGByW2ldIDwgc3RvcGBgLlxuXG4gICBGb3IgYSBuZWdhdGl2ZSAqc3RlcCosIHRoZSBjb250ZW50cyBvZiB0aGUgcmFuZ2UgYXJlIHN0aWxsXG4gICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhIGBgcltpXSA9IHN0YXJ0ICsgc3RlcCppYGAsIGJ1dCB0aGVcbiAgIGNvbnN0cmFpbnRzIGFyZSBgYGkgPj0gMGBgIGFuZCBgYHJbaV0gPiBzdG9wYGAuXG5cbiAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgYGByWzBdYGAgZG9lcyBub3QgbWVhbnQgdGhlIHZhbHVlXG4gICBjb25zdHJhaW50LiBSYW5nZXMgZG8gc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzLCBidXQgdGhlc2UgYXJlXG4gICBpbnRlcnByZXRlZCBhcyBpbmRleGluZyBmcm9tIHRoZSBlbmQgb2YgdGhlIHNlcXVlbmNlIGRldGVybWluZWQgYnlcbiAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuXG4gICBSYW5nZXMgY29udGFpbmluZyBhYnNvbHV0ZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gYGBzeXMubWF4c2l6ZWBgIGFyZVxuICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzIGBgbGVuKClgYCkgbWF5IHJhaXNlXG4gICBgYE92ZXJmbG93RXJyb3JgYC5cblxuICAgUmFuZ2UgZXhhbXBsZXM6XG5cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbiAgICAgIFswLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMTEpKVxuICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMzAsIDUpKVxuICAgICAgWzAsIDUsIDEwLCAxNSwgMjAsIDI1XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuICAgICAgWzAsIDMsIDYsIDldXG4gICAgICA+Pj4gbGlzdChyYW5nZSgwLCAtMTAsIC0xKSlcbiAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCkpXG4gICAgICBbXVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4gICAgICBbXVxuXG4gICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucyBleGNlcHRcbiAgIGNvbmNhdGVuYXRpb24gYW5kIHJlcGV0aXRpb24gKGR1ZSB0byB0aGUgZmFjdCB0aGF0IHJhbmdlIG9iamVjdHNcbiAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiBhbmRcbiAgIHJlcGV0aXRpb24gYW5kIGNvbmNhdGVuYXRpb24gd2lsbCB1c3VhbGx5IHZpb2xhdGUgdGhhdCBwYXR0ZXJuKS5cblxuVGhlIGFkdmFudGFnZSBvZiB0aGUgYGByYW5nZWBgIHR5cGUgb3ZlciBhIHJlZ3VsYXIgYGBsaXN0YGAgb3JcbmBgdHVwbGVgYCBpcyB0aGF0IGEgYGByYW5nZWBgIG9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIChzbWFsbClcbmFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXRcbm9ubHkgc3RvcmVzIHRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCB2YWx1ZXMsIGNhbGN1bGF0aW5nXG5pbmRpdmlkdWFsIGl0ZW1zIGFuZCBzdWJyYW5nZXMgYXMgbmVlZGVkKS5cblxuUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlIGBgY29sbGVjdGlvbnMuU2VxdWVuY2VgYCBBQkMsIGFuZCBwcm92aWRlXG5mZWF0dXJlcyBzdWNoIGFzIGNvbnRhaW5tZW50IHRlc3RzLCBlbGVtZW50IGluZGV4IGxvb2t1cCwgc2xpY2luZyBhbmRcbnN1cHBvcnQgZm9yIG5lZ2F0aXZlIGluZGljZXMgKHNlZSAqU2VxdWVuY2UgVHlwZXMgLS0tIGxpc3QsIHR1cGxlLFxucmFuZ2UqKTpcblxuPj4+IHIgPSByYW5nZSgwLCAyMCwgMilcbj4+PiByXG5yYW5nZSgwLCAyMCwgMilcbj4+PiAxMSBpbiByXG5GYWxzZVxuPj4+IDEwIGluIHJcblRydWVcbj4+PiByLmluZGV4KDEwKVxuNVxuPj4+IHJbNV1cbjEwXG4+Pj4gcls6NV1cbnJhbmdlKDAsIDEwLCAyKVxuPj4+IHJbLTFdXG4xOFxuXG5UZXN0aW5nIHJhbmdlIG9iamVjdHMgZm9yIGVxdWFsaXR5IHdpdGggYGA9PWBgIGFuZCBgYCE9YGAgY29tcGFyZXNcbnRoZW0gYXMgc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWZcbnRoZXkgcmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlXG5vYmplY3RzIHRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCBgYHN0YXJ0YGAsIGBgc3RvcGBgXG5hbmQgYGBzdGVwYGAgYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgYGByYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKWBgIG9yXG5gYHJhbmdlKDAsIDMsIDIpID09IHJhbmdlKDAsIDQsIDIpYGAuKVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy4yOiBJbXBsZW1lbnQgdGhlIFNlcXVlbmNlIEFCQy4gU3VwcG9ydCBzbGljaW5nXG5hbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCBgYGludGBgIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSBgYHN0YXJ0YGAsIGBgc3RvcGBgIGFuZCBgYHN0ZXBgYCBhdHRyaWJ1dGVzLlxuJywKKyAndHlwZXNzZXEtbXV0YWJsZSc6ICJcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlIGBgY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZWBgIEFCQyBpcyBwcm92aWRlZCB0byBtYWtlXG5pdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uIGN1c3RvbSBzZXF1ZW5jZVxudHlwZXMuXG5cbkluIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiBpcyBhbnlcbml0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCBtZWV0cyBhbnkgdHlwZSBhbmRcbnZhbHVlIHJlc3RyaWN0aW9ucyBpbXBvc2VkIGJ5ICpzKiAoZm9yIGV4YW1wbGUsIGBgYnl0ZWFycmF5YGAgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uIGBgMCA8PSB4IDw9IDI1NWBgKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCBgYHNbaV0gPSB4YGAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqXSA9IHRgYCAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgZGVsIHNbaTpqXWBgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgYGBzW2k6al0gPSBbXWBgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHNbaTpqOmtdID0gdGBgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgYGBzW2k6ajprXWBgIGFyZSB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYGRlbCBzW2k6ajprXWBgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmo6a11gYCBmcm9tIHRoZSBsaXN0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMuYXBwZW5kKHgpYGAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYGBzW2xlbihzKTpsZW4ocyldID0gW3hdYGApICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jbGVhcigpYGAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gYGBzYGAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBkZWwgc1s6XWBgKSAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5jb3B5KClgYCAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgYGBzYGAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgYGBzWzpdYGApICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IGBgcy5leHRlbmQodClgYCAgICAgICAgICAgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChzYW1lIGFzIGBgc1tsZW4ocyk6bGVuKHMpXSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA9IHRgYCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgYGBzLmluc2VydChpLCB4KWBgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBgc1tpOmldID0gW3hdYGApICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucG9wKFtpXSlgYCAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmVtb3ZlKHgpYGAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlIGBgc1tpXSA9PSB4YGAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBgYHMucmV2ZXJzZSgpYGAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byBgYC0xYGAsIHNvIHRoYXQgYnkgZGVmYXVsdFxuICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuMy4gYGByZW1vdmVgYCByYWlzZXMgYGBWYWx1ZUVycm9yYGAgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlIGBgcmV2ZXJzZSgpYGAgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teVxuICAgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvIHJlbWluZCB1c2VycyB0aGF0IGl0XG4gICBvcGVyYXRlcyBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSByZXZlcnNlZCBzZXF1ZW5jZS5cblxuNS4gYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSB3aXRoIHRoZVxuICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgYGBkaWN0YGAgYW5kIGBgc2V0YGApXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMzogYGBjbGVhcigpYGAgYW5kIGBgY29weSgpYGAgbWV0aG9kcy5cbiIsCiAgJ3VuYXJ5JzogJ1xuVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXR5OlxuXG4gICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG5cblRoZSB1bmFyeSBgYC1gYCAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbmFyZ3VtZW50LlxuXG5UaGUgdW5hcnkgYGArYGAgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cblRoZSB1bmFyeSBgYH5gYCAoaW52ZXJ0KSBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mIGl0c1xuaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiBgYHhgYCBpcyBkZWZpbmVkIGFzXG5gYC0oeCsxKWBgLiAgSXQgb25seSBhcHBsaWVzIHRvIGludGVncmFsIG51bWJlcnMuXG5cbkluIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCBhXG5gYFR5cGVFcnJvcmBgIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAogICd3aGlsZSc6ICdcblRoZSBgYHdoaWxlYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgYGB3aGlsZWBgIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlIGBgZWxzZWBgIGNsYXVzZSwgaWYgcHJlc2VudCwgaXNcbmV4ZWN1dGVkIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzLlxuXG5BIGBgYnJlYWtgYCBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSBgYGVsc2VgYCBjbGF1c2VcJ3Mgc3VpdGUuICBBIGBgY29udGludWVgYFxuc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kXG5nb2VzIGJhY2sgdG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCiAgJ3dpdGgnOiAnXG5UaGUgYGB3aXRoYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG5tZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uICpXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycyopLiBUaGlzIGFsbG93cyBjb21tb25cbmBgdHJ5YGAuLi5gYGV4Y2VwdGBgLi4uYGBmaW5hbGx5YGAgdXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkXG5mb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgYGB3aXRoX2l0ZW1gYClcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2V4aXRfXygpYGAgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgYGBfX2VudGVyX18oKWBgIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlIGBgd2l0aGBgIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSBgYF9fZW50ZXJfXygpYGAgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSBgYF9fZW50ZXJfXygpYGBcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiBgYF9fZXhpdF9fKClgYCB3aWxsIGFsd2F5c1xuICAgICBiZSBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyBgYF9fZXhpdF9fKClgYCBtZXRob2QgaXMgaW52b2tlZC4gIElmIGFuXG4gICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4gICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gYGBfX2V4aXRfXygpYGAuIE90aGVyd2lzZSxcbiAgIHRocmVlIGBgTm9uZWBgIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSBgYF9fZXhpdF9fKClgYCBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzXG4gICByZXJhaXNlZC4gIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXNcbiAgIHN1cHByZXNzZWQsIGFuZCBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmdcbiAgIHRoZSBgYHdpdGhgYCBzdGF0ZW1lbnQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCB0aGVcbiAgIHJldHVybiB2YWx1ZSBmcm9tIGBgX19leGl0X18oKWBgIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSBgYHdpdGhgYCBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4gICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uXG4gICAgICBgYHdpdGhgYCBzdGF0ZW1lbnQuXG4nLAotICd5aWVsZCc6ICdcblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICB5aWVsZF9zdG10IDo6PSB5aWVsZF9leHByZXNzaW9uXG5cblRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yXG5mdW5jdGlvbiwgYW5kIGlzIG9ubHkgdXNlZCBpbiB0aGUgYm9keSBvZiB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuVXNpbmcgYSBgYHlpZWxkYGAgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvXG5jYXVzZSB0aGF0IGRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYVxubm9ybWFsIGZ1bmN0aW9uLiBXaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhblxuaXRlcmF0b3Iga25vd24gYXMgYSBnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLlxuVGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBleGVjdXRlZCBieSBjYWxsaW5nIHRoZVxuYGBuZXh0KClgYCBmdW5jdGlvbiBvbiB0aGUgZ2VuZXJhdG9yIHJlcGVhdGVkbHkgdW50aWwgaXQgcmFpc2VzIGFuXG5leGNlcHRpb24uXG5cbldoZW4gYSBgYHlpZWxkYGAgc3RhdGVtZW50IGlzIGV4ZWN1dGVkLCB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBpc1xuZnJvemVuIGFuZCB0aGUgdmFsdWUgb2YgYGBleHByZXNzaW9uX2xpc3RgYCBpcyByZXR1cm5lZCB0b1xuYGBuZXh0KClgYFwncyBjYWxsZXIuICBCeSAiZnJvemVuIiB3ZSBtZWFuIHRoYXQgYWxsIGxvY2FsIHN0YXRlIGlzXG5yZXRhaW5lZCwgaW5jbHVkaW5nIHRoZSBjdXJyZW50IGJpbmRpbmdzIG9mIGxvY2FsIHZhcmlhYmxlcywgdGhlXG5pbnN0cnVjdGlvbiBwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaFxuaW5mb3JtYXRpb24gaXMgc2F2ZWQgc28gdGhhdCB0aGUgbmV4dCB0aW1lIGBgbmV4dCgpYGAgaXMgaW52b2tlZCwgdGhlXG5mdW5jdGlvbiBjYW4gcHJvY2VlZCBleGFjdGx5IGFzIGlmIHRoZSBgYHlpZWxkYGAgc3RhdGVtZW50IHdlcmUganVzdFxuYW5vdGhlciBleHRlcm5hbCBjYWxsLlxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBhbGxvd2VkIGluIHRoZSBgYHRyeWBgIGNsYXVzZSBvZiBhIGBgdHJ5YGBcbi4uLiAgYGBmaW5hbGx5YGAgY29uc3RydWN0LiAgSWYgdGhlIGdlbmVyYXRvciBpcyBub3QgcmVzdW1lZCBiZWZvcmUgaXRcbmlzIGZpbmFsaXplZCAoYnkgcmVhY2hpbmcgYSB6ZXJvIHJlZmVyZW5jZSBjb3VudCBvciBieSBiZWluZyBnYXJiYWdlXG5jb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yXCdzIGBgY2xvc2UoKWBgIG1ldGhvZCB3aWxsIGJlXG5jYWxsZWQsIGFsbG93aW5nIGFueSBwZW5kaW5nIGBgZmluYWxseWBgIGNsYXVzZXMgdG8gZXhlY3V0ZS5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgcHJvcG9zZWRcbiAgICAgIGFsbG93aW5nIGBgeWllbGRgYCB0byBhcHBlYXIgaW5zaWRlIGEgYGB0cnlgYCAuLi4gYGBmaW5hbGx5YGBcbiAgICAgIGJsb2NrLlxuJ30KKyAneWllbGQnOiAnXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuXG5UaGUgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhIGdlbmVyYXRvclxuZnVuY3Rpb24sIGFuZCBpcyBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi5cblVzaW5nIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0b1xuY2F1c2UgdGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGFcbm5vcm1hbCBmdW5jdGlvbi5cblxuV2hlbiBhIGdlbmVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGl0IHJldHVybnMgYW4gaXRlcmF0b3Iga25vd24gYXMgYVxuZ2VuZXJhdG9yIGl0ZXJhdG9yLCBvciBtb3JlIGNvbW1vbmx5LCBhIGdlbmVyYXRvci4gIFRoZSBib2R5IG9mIHRoZVxuZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlIGBgbmV4dCgpYGAgZnVuY3Rpb24gb25cbnRoZSBnZW5lcmF0b3IgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXG5XaGVuIGEgYGB5aWVsZGBgIHN0YXRlbWVudCBpcyBleGVjdXRlZCwgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgaXNcbmZyb3plbiBhbmQgdGhlIHZhbHVlIG9mIGBgZXhwcmVzc2lvbl9saXN0YGAgaXMgcmV0dXJuZWQgdG9cbmBgbmV4dCgpYGBcJ3MgY2FsbGVyLiAgQnkgImZyb3plbiIgd2UgbWVhbiB0aGF0IGFsbCBsb2NhbCBzdGF0ZSBpc1xucmV0YWluZWQsIGluY2x1ZGluZyB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiBsb2NhbCB2YXJpYWJsZXMsIHRoZVxuaW5zdHJ1Y3Rpb24gcG9pbnRlciwgYW5kIHRoZSBpbnRlcm5hbCBldmFsdWF0aW9uIHN0YWNrOiBlbm91Z2hcbmluZm9ybWF0aW9uIGlzIHNhdmVkIHNvIHRoYXQgdGhlIG5leHQgdGltZSBgYG5leHQoKWBgIGlzIGludm9rZWQsIHRoZVxuZnVuY3Rpb24gY2FuIHByb2NlZWQgZXhhY3RseSBhcyBpZiB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudCB3ZXJlIGp1c3RcbmFub3RoZXIgZXh0ZXJuYWwgY2FsbC5cblxuVGhlIGBgeWllbGRgYCBzdGF0ZW1lbnQgaXMgYWxsb3dlZCBpbiB0aGUgYGB0cnlgYCBjbGF1c2Ugb2YgYSBgYHRyeWBgXG4uLi4gIGBgZmluYWxseWBgIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXMgbm90IHJlc3VtZWQgYmVmb3JlIGl0XG5pcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnQgb3IgYnkgYmVpbmcgZ2FyYmFnZVxuY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvclwncyBgYGNsb3NlKClgYCBtZXRob2Qgd2lsbCBiZVxuY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyBgYGZpbmFsbHlgYCBjbGF1c2VzIHRvIGV4ZWN1dGUuXG5cbldoZW4gYGB5aWVsZCBmcm9tIDxleHByPmBgIGlzIHVzZWQsIGl0IHRyZWF0cyB0aGUgc3VwcGxpZWQgZXhwcmVzc2lvblxuYXMgYSBzdWJpdGVyYXRvciwgcHJvZHVjaW5nIHZhbHVlcyBmcm9tIGl0IHVudGlsIHRoZSB1bmRlcmx5aW5nXG5pdGVyYXRvciBpcyBleGhhdXN0ZWQuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEFkZGVkIGBgeWllbGQgZnJvbSA8ZXhwcj5gYCB0byBkZWxlZ2F0ZVxuICAgY29udHJvbCBmbG93IHRvIGEgc3ViaXRlcmF0b3JcblxuRm9yIGZ1bGwgZGV0YWlscyBvZiBgYHlpZWxkYGAgc2VtYW50aWNzLCByZWZlciB0byB0aGUgKllpZWxkXG5leHByZXNzaW9ucyogc2VjdGlvbi5cblxuU2VlIGFsc286XG5cbiAgICoqUEVQIDAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgZm9yIGFkZGluZyBnZW5lcmF0b3JzIGFuZCB0aGUgYGB5aWVsZGBgIHN0YXRlbWVudFxuICAgICAgdG8gUHl0aG9uLlxuXG4gICAqKlBFUCAwMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gZW5oYW5jZSB0aGUgQVBJIGFuZCBzeW50YXggb2YgZ2VuZXJhdG9ycywgbWFraW5nXG4gICAgICB0aGVtIHVzYWJsZSBhcyBzaW1wbGUgY29yb3V0aW5lcy5cblxuICAgKipQRVAgMDM4MCoqIC0gU3ludGF4IGZvciBEZWxlZ2F0aW5nIHRvIGEgU3ViZ2VuZXJhdG9yXG4gICAgICBUaGUgcHJvcG9zYWwgdG8gaW50cm9kdWNlIHRoZSBgYHlpZWxkX2Zyb21gYCBzeW50YXgsIG1ha2luZ1xuICAgICAgZGVsZWdhdGlvbiB0byBzdWItZ2VuZXJhdG9ycyBlYXN5LlxuJ30KZGlmZiAtLWdpdCBhL0xpYi9xdWV1ZS5weSBiL0xpYi9xdWV1ZS5weQppbmRleCBiZWU3ZWQ0Li5jMzI5NmZlIDEwMDY0NAotLS0gYS9MaWIvcXVldWUucHkKKysrIGIvTGliL3F1ZXVlLnB5CkBAIC0xLDQ5ICsxLDU3IEBACi0iIiJBIG11bHRpLXByb2R1Y2VyLCBtdWx0aS1jb25zdW1lciBxdWV1ZS4iIiIKKycnJ0EgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIHF1ZXVlLicnJwogCi1mcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIHRyeToKLSAgICBpbXBvcnQgdGhyZWFkaW5nIGFzIF90aHJlYWRpbmcKKyAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyBfdGhyZWFkaW5nCisgICAgaW1wb3J0IGR1bW15X3RocmVhZGluZyBhcyB0aHJlYWRpbmcKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCi1pbXBvcnQgaGVhcHEKK2Zyb20gaGVhcHEgaW1wb3J0IGhlYXBwdXNoLCBoZWFwcG9wCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZQogCiBfX2FsbF9fID0gWydFbXB0eScsICdGdWxsJywgJ1F1ZXVlJywgJ1ByaW9yaXR5UXVldWUnLCAnTGlmb1F1ZXVlJ10KIAogY2xhc3MgRW1wdHkoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5nZXQoYmxvY2s9MCkvZ2V0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIEZ1bGwoRXhjZXB0aW9uKToKLSAgICAiRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLiIKKyAgICAnRXhjZXB0aW9uIHJhaXNlZCBieSBRdWV1ZS5wdXQoYmxvY2s9MCkvcHV0X25vd2FpdCgpLicKICAgICBwYXNzCiAKIGNsYXNzIFF1ZXVlOgotICAgICIiIkNyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgorICAgICcnJ0NyZWF0ZSBhIHF1ZXVlIG9iamVjdCB3aXRoIGEgZ2l2ZW4gbWF4aW11bSBzaXplLgogCiAgICAgSWYgbWF4c2l6ZSBpcyA8PSAwLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KLSAgICAiIiIKKyAgICAnJycKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXhzaXplPTApOgogICAgICAgICBzZWxmLm1heHNpemUgPSBtYXhzaXplCiAgICAgICAgIHNlbGYuX2luaXQobWF4c2l6ZSkKKwogICAgICAgICAjIG11dGV4IG11c3QgYmUgaGVsZCB3aGVuZXZlciB0aGUgcXVldWUgaXMgbXV0YXRpbmcuICBBbGwgbWV0aG9kcwogICAgICAgICAjIHRoYXQgYWNxdWlyZSBtdXRleCBtdXN0IHJlbGVhc2UgaXQgYmVmb3JlIHJldHVybmluZy4gIG11dGV4CiAgICAgICAgICMgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHRocmVlIGNvbmRpdGlvbnMsIHNvIGFjcXVpcmluZyBhbmQKICAgICAgICAgIyByZWxlYXNpbmcgdGhlIGNvbmRpdGlvbnMgYWxzbyBhY3F1aXJlcyBhbmQgcmVsZWFzZXMgbXV0ZXguCi0gICAgICAgIHNlbGYubXV0ZXggPSBfdGhyZWFkaW5nLkxvY2soKQorICAgICAgICBzZWxmLm11dGV4ID0gdGhyZWFkaW5nLkxvY2soKQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9lbXB0eSB3aGVuZXZlciBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZSBxdWV1ZTsgYQogICAgICAgICAjIHRocmVhZCB3YWl0aW5nIHRvIGdldCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9lbXB0eSA9IF90aHJlYWRpbmcuQ29uZGl0aW9uKHNlbGYubXV0ZXgpCisgICAgICAgIHNlbGYubm90X2VtcHR5ID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorCiAgICAgICAgICMgTm90aWZ5IG5vdF9mdWxsIHdoZW5ldmVyIGFuIGl0ZW0gaXMgcmVtb3ZlZCBmcm9tIHRoZSBxdWV1ZTsKICAgICAgICAgIyBhIHRocmVhZCB3YWl0aW5nIHRvIHB1dCBpcyBub3RpZmllZCB0aGVuLgotICAgICAgICBzZWxmLm5vdF9mdWxsID0gX3RocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKyAgICAgICAgc2VsZi5ub3RfZnVsbCA9IHRocmVhZGluZy5Db25kaXRpb24oc2VsZi5tdXRleCkKKwogICAgICAgICAjIE5vdGlmeSBhbGxfdGFza3NfZG9uZSB3aGVuZXZlciB0aGUgbnVtYmVyIG9mIHVuZmluaXNoZWQgdGFza3MKICAgICAgICAgIyBkcm9wcyB0byB6ZXJvOyB0aHJlYWQgd2FpdGluZyB0byBqb2luKCkgaXMgbm90aWZpZWQgdG8gcmVzdW1lCi0gICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUgPSBfdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQorICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lID0gdGhyZWFkaW5nLkNvbmRpdGlvbihzZWxmLm11dGV4KQogICAgICAgICBzZWxmLnVuZmluaXNoZWRfdGFza3MgPSAwCiAKICAgICBkZWYgdGFza19kb25lKHNlbGYpOgotICAgICAgICAiIiJJbmRpY2F0ZSB0aGF0IGEgZm9ybWVybHkgZW5xdWV1ZWQgdGFzayBpcyBjb21wbGV0ZS4KKyAgICAgICAgJycnSW5kaWNhdGUgdGhhdCBhIGZvcm1lcmx5IGVucXVldWVkIHRhc2sgaXMgY29tcGxldGUuCiAKICAgICAgICAgVXNlZCBieSBRdWV1ZSBjb25zdW1lciB0aHJlYWRzLiAgRm9yIGVhY2ggZ2V0KCkgdXNlZCB0byBmZXRjaCBhIHRhc2ssCiAgICAgICAgIGEgc3Vic2VxdWVudCBjYWxsIHRvIHRhc2tfZG9uZSgpIHRlbGxzIHRoZSBxdWV1ZSB0aGF0IHRoZSBwcm9jZXNzaW5nCkBAIC01NSw0MyArNjMsMzUgQEAKIAogICAgICAgICBSYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gdGhlcmUgd2VyZSBpdGVtcwogICAgICAgICBwbGFjZWQgaW4gdGhlIHF1ZXVlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgdW5maW5pc2hlZCA9IHNlbGYudW5maW5pc2hlZF90YXNrcyAtIDEKICAgICAgICAgICAgIGlmIHVuZmluaXNoZWQgPD0gMDoKICAgICAgICAgICAgICAgICBpZiB1bmZpbmlzaGVkIDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigndGFza19kb25lKCkgY2FsbGVkIHRvbyBtYW55IHRpbWVzJykKICAgICAgICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLm5vdGlmeV9hbGwoKQogICAgICAgICAgICAgc2VsZi51bmZpbmlzaGVkX3Rhc2tzID0gdW5maW5pc2hlZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5yZWxlYXNlKCkKIAogICAgIGRlZiBqb2luKHNlbGYpOgotICAgICAgICAiIiJCbG9ja3MgdW50aWwgYWxsIGl0ZW1zIGluIHRoZSBRdWV1ZSBoYXZlIGJlZW4gZ290dGVuIGFuZCBwcm9jZXNzZWQuCisgICAgICAgICcnJ0Jsb2NrcyB1bnRpbCBhbGwgaXRlbXMgaW4gdGhlIFF1ZXVlIGhhdmUgYmVlbiBnb3R0ZW4gYW5kIHByb2Nlc3NlZC4KIAogICAgICAgICBUaGUgY291bnQgb2YgdW5maW5pc2hlZCB0YXNrcyBnb2VzIHVwIHdoZW5ldmVyIGFuIGl0ZW0gaXMgYWRkZWQgdG8gdGhlCiAgICAgICAgIHF1ZXVlLiBUaGUgY291bnQgZ29lcyBkb3duIHdoZW5ldmVyIGEgY29uc3VtZXIgdGhyZWFkIGNhbGxzIHRhc2tfZG9uZSgpCiAgICAgICAgIHRvIGluZGljYXRlIHRoZSBpdGVtIHdhcyByZXRyaWV2ZWQgYW5kIGFsbCB3b3JrIG9uIGl0IGlzIGNvbXBsZXRlLgogCiAgICAgICAgIFdoZW4gdGhlIGNvdW50IG9mIHVuZmluaXNoZWQgdGFza3MgZHJvcHMgdG8gemVybywgam9pbigpIHVuYmxvY2tzLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hbGxfdGFza3NfZG9uZS5hY3F1aXJlKCkKLSAgICAgICAgdHJ5OgorICAgICAgICAnJycKKyAgICAgICAgd2l0aCBzZWxmLmFsbF90YXNrc19kb25lOgogICAgICAgICAgICAgd2hpbGUgc2VsZi51bmZpbmlzaGVkX3Rhc2tzOgogICAgICAgICAgICAgICAgIHNlbGYuYWxsX3Rhc2tzX2RvbmUud2FpdCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLmFsbF90YXNrc19kb25lLnJlbGVhc2UoKQogCiAgICAgZGVmIHFzaXplKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGFwcHJveGltYXRlIHNpemUgb2YgdGhlIHF1ZXVlIChub3QgcmVsaWFibGUhKS4iIiIKLSAgICAgICAgc2VsZi5tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgbiA9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnUmV0dXJuIHRoZSBhcHByb3hpbWF0ZSBzaXplIG9mIHRoZSBxdWV1ZSAobm90IHJlbGlhYmxlISkuJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9xc2l6ZSgpCiAKICAgICBkZWYgZW1wdHkoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBlbXB0eSwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KKyAgICAgICAgJycnUmV0dXJuIFRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgogCiAgICAgICAgIFRoaXMgbWV0aG9kIGlzIGxpa2VseSB0byBiZSByZW1vdmVkIGF0IHNvbWUgcG9pbnQuICBVc2UgcXNpemUoKSA9PSAwCiAgICAgICAgIGFzIGEgZGlyZWN0IHN1YnN0aXR1dGUsIGJ1dCBiZSBhd2FyZSB0aGF0IGVpdGhlciBhcHByb2FjaCByaXNrcyBhIHJhY2UKQEAgLTEwMCwyOSArMTAwLDIzIEBACiAKICAgICAgICAgVG8gY3JlYXRlIGNvZGUgdGhhdCBuZWVkcyB0byB3YWl0IGZvciBhbGwgcXVldWVkIHRhc2tzIHRvIGJlCiAgICAgICAgIGNvbXBsZXRlZCwgdGhlIHByZWZlcnJlZCB0ZWNobmlxdWUgaXMgdG8gdXNlIHRoZSBqb2luKCkgbWV0aG9kLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLm11dGV4LmFjcXVpcmUoKQotICAgICAgICBuID0gbm90IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXNpemUoKQogCiAgICAgZGVmIGZ1bGwoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBxdWV1ZSBpcyBmdWxsLCBGYWxzZSBvdGhlcndpc2UgKG5vdCByZWxpYWJsZSEpLgorICAgICAgICAnJydSZXR1cm4gVHJ1ZSBpZiB0aGUgcXVldWUgaXMgZnVsbCwgRmFsc2Ugb3RoZXJ3aXNlIChub3QgcmVsaWFibGUhKS4KIAogICAgICAgICBUaGlzIG1ldGhvZCBpcyBsaWtlbHkgdG8gYmUgcmVtb3ZlZCBhdCBzb21lIHBvaW50LiAgVXNlIHFzaXplKCkgPj0gbgogICAgICAgICBhcyBhIGRpcmVjdCBzdWJzdGl0dXRlLCBidXQgYmUgYXdhcmUgdGhhdCBlaXRoZXIgYXBwcm9hY2ggcmlza3MgYSByYWNlCiAgICAgICAgIGNvbmRpdGlvbiB3aGVyZSBhIHF1ZXVlIGNhbiBzaHJpbmsgYmVmb3JlIHRoZSByZXN1bHQgb2YgZnVsbCgpIG9yCiAgICAgICAgIHFzaXplKCkgY2FuIGJlIHVzZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubXV0ZXguYWNxdWlyZSgpCi0gICAgICAgIG4gPSAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKLSAgICAgICAgc2VsZi5tdXRleC5yZWxlYXNlKCkKLSAgICAgICAgcmV0dXJuIG4KKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgIHJldHVybiAwIDwgc2VsZi5tYXhzaXplIDw9IHNlbGYuX3FzaXplKCkKIAogICAgIGRlZiBwdXQoc2VsZiwgaXRlbSwgYmxvY2s9VHJ1ZSwgdGltZW91dD1Ob25lKToKLSAgICAgICAgIiIiUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUuCisgICAgICAgICcnJ1B1dCBhbiBpdGVtIGludG8gdGhlIHF1ZXVlLgogCiAgICAgICAgIElmIG9wdGlvbmFsIGFyZ3MgJ2Jsb2NrJyBpcyB0cnVlIGFuZCAndGltZW91dCcgaXMgTm9uZSAodGhlIGRlZmF1bHQpLAogICAgICAgICBibG9jayBpZiBuZWNlc3NhcnkgdW50aWwgYSBmcmVlIHNsb3QgaXMgYXZhaWxhYmxlLiBJZiAndGltZW91dCcgaXMKQEAgLTEzMSw5ICsxMjUsOCBAQAogICAgICAgICBPdGhlcndpc2UgKCdibG9jaycgaXMgZmFsc2UpLCBwdXQgYW4gaXRlbSBvbiB0aGUgcXVldWUgaWYgYSBmcmVlIHNsb3QKICAgICAgICAgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBlbHNlIHJhaXNlIHRoZSBGdWxsIGV4Y2VwdGlvbiAoJ3RpbWVvdXQnCiAgICAgICAgIGlzIGlnbm9yZWQgaW4gdGhhdCBjYXNlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubm90X2Z1bGwuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZnVsbDoKICAgICAgICAgICAgIGlmIHNlbGYubWF4c2l6ZSA+IDA6CiAgICAgICAgICAgICAgICAgaWYgbm90IGJsb2NrOgogICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKQEAgLTE0NCwyOCArMTM3LDE4IEBACiAgICAgICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJ3RpbWVvdXQnIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXIiKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgICAgICBlbmR0aW1lID0gdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgICAgICB3aGlsZSBzZWxmLl9xc2l6ZSgpID49IHNlbGYubWF4c2l6ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBlbmR0aW1lIC0gdGltZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZW1haW5pbmcgPD0gMC4wOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2Z1bGwud2FpdChyZW1haW5pbmcpCiAgICAgICAgICAgICBzZWxmLl9wdXQoaXRlbSkKICAgICAgICAgICAgIHNlbGYudW5maW5pc2hlZF90YXNrcyArPSAxCiAgICAgICAgICAgICBzZWxmLm5vdF9lbXB0eS5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZnVsbC5yZWxlYXNlKCkKLQotICAgIGRlZiBwdXRfbm93YWl0KHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJQdXQgYW4gaXRlbSBpbnRvIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgotCi0gICAgICAgIE9ubHkgZW5xdWV1ZSB0aGUgaXRlbSBpZiBhIGZyZWUgc2xvdCBpcyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCi0gICAgICAgIE90aGVyd2lzZSByYWlzZSB0aGUgRnVsbCBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5wdXQoaXRlbSwgRmFsc2UpCiAKICAgICBkZWYgZ2V0KHNlbGYsIGJsb2NrPVRydWUsIHRpbWVvdXQ9Tm9uZSk6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCisgICAgICAgICcnJ1JlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUuCiAKICAgICAgICAgSWYgb3B0aW9uYWwgYXJncyAnYmxvY2snIGlzIHRydWUgYW5kICd0aW1lb3V0JyBpcyBOb25lICh0aGUgZGVmYXVsdCksCiAgICAgICAgIGJsb2NrIGlmIG5lY2Vzc2FyeSB1bnRpbCBhbiBpdGVtIGlzIGF2YWlsYWJsZS4gSWYgJ3RpbWVvdXQnIGlzCkBAIC0xNzQsOSArMTU3LDggQEAKICAgICAgICAgT3RoZXJ3aXNlICgnYmxvY2snIGlzIGZhbHNlKSwgcmV0dXJuIGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5CiAgICAgICAgIGF2YWlsYWJsZSwgZWxzZSByYWlzZSB0aGUgRW1wdHkgZXhjZXB0aW9uICgndGltZW91dCcgaXMgaWdub3JlZAogICAgICAgICBpbiB0aGF0IGNhc2UpLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ub3RfZW1wdHkuYWNxdWlyZSgpCi0gICAgICAgIHRyeToKKyAgICAgICAgJycnCisgICAgICAgIHdpdGggc2VsZi5ub3RfZW1wdHk6CiAgICAgICAgICAgICBpZiBub3QgYmxvY2s6CiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3FzaXplKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CkBAIC0xODYsMjUgKzE2OCwzMSBAQAogICAgICAgICAgICAgZWxpZiB0aW1lb3V0IDwgMDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIndGltZW91dCcgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dAorICAgICAgICAgICAgICAgIGVuZHRpbWUgPSB0aW1lKCkgKyB0aW1lb3V0CiAgICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3FzaXplKCk6Ci0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSBfdGltZSgpCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IGVuZHRpbWUgLSB0aW1lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgcmVtYWluaW5nIDw9IDAuMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CiAgICAgICAgICAgICAgICAgICAgIHNlbGYubm90X2VtcHR5LndhaXQocmVtYWluaW5nKQogICAgICAgICAgICAgaXRlbSA9IHNlbGYuX2dldCgpCiAgICAgICAgICAgICBzZWxmLm5vdF9mdWxsLm5vdGlmeSgpCiAgICAgICAgICAgICByZXR1cm4gaXRlbQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5ub3RfZW1wdHkucmVsZWFzZSgpCisKKyAgICBkZWYgcHV0X25vd2FpdChzZWxmLCBpdGVtKToKKyAgICAgICAgJycnUHV0IGFuIGl0ZW0gaW50byB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKworICAgICAgICBPbmx5IGVucXVldWUgdGhlIGl0ZW0gaWYgYSBmcmVlIHNsb3QgaXMgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAgICBPdGhlcndpc2UgcmFpc2UgdGhlIEZ1bGwgZXhjZXB0aW9uLgorICAgICAgICAnJycKKyAgICAgICAgcmV0dXJuIHNlbGYucHV0KGl0ZW0sIGJsb2NrPUZhbHNlKQogCiAgICAgZGVmIGdldF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICIiIlJlbW92ZSBhbmQgcmV0dXJuIGFuIGl0ZW0gZnJvbSB0aGUgcXVldWUgd2l0aG91dCBibG9ja2luZy4KKyAgICAgICAgJycnUmVtb3ZlIGFuZCByZXR1cm4gYW4gaXRlbSBmcm9tIHRoZSBxdWV1ZSB3aXRob3V0IGJsb2NraW5nLgogCiAgICAgICAgIE9ubHkgZ2V0IGFuIGl0ZW0gaWYgb25lIGlzIGltbWVkaWF0ZWx5IGF2YWlsYWJsZS4gT3RoZXJ3aXNlCiAgICAgICAgIHJhaXNlIHRoZSBFbXB0eSBleGNlcHRpb24uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5nZXQoRmFsc2UpCisgICAgICAgICcnJworICAgICAgICByZXR1cm4gc2VsZi5nZXQoYmxvY2s9RmFsc2UpCiAKICAgICAjIE92ZXJyaWRlIHRoZXNlIG1ldGhvZHMgdG8gaW1wbGVtZW50IG90aGVyIHF1ZXVlIG9yZ2FuaXphdGlvbnMKICAgICAjIChlLmcuIHN0YWNrIG9yIHByaW9yaXR5IHF1ZXVlKS4KQEAgLTIxNCw3ICsyMDIsNyBAQAogICAgIGRlZiBfaW5pdChzZWxmLCBtYXhzaXplKToKICAgICAgICAgc2VsZi5xdWV1ZSA9IGRlcXVlKCkKIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCiAgICAgIyBQdXQgYSBuZXcgaXRlbSBpbiB0aGUgcXVldWUKQEAgLTIzNSwxMyArMjIzLDEzIEBACiAgICAgZGVmIF9pbml0KHNlbGYsIG1heHNpemUpOgogICAgICAgICBzZWxmLnF1ZXVlID0gW10KIAotICAgIGRlZiBfcXNpemUoc2VsZiwgbGVuPWxlbik6CisgICAgZGVmIF9xc2l6ZShzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLnF1ZXVlKQogCi0gICAgZGVmIF9wdXQoc2VsZiwgaXRlbSwgaGVhcHB1c2g9aGVhcHEuaGVhcHB1c2gpOgorICAgIGRlZiBfcHV0KHNlbGYsIGl0ZW0pOgogICAgICAgICBoZWFwcHVzaChzZWxmLnF1ZXVlLCBpdGVtKQogCi0gICAgZGVmIF9nZXQoc2VsZiwgaGVhcHBvcD1oZWFwcS5oZWFwcG9wKToKKyAgICBkZWYgX2dldChzZWxmKToKICAgICAgICAgcmV0dXJuIGhlYXBwb3Aoc2VsZi5xdWV1ZSkKIAogCkBAIC0yNTEsNyArMjM5LDcgQEAKICAgICBkZWYgX2luaXQoc2VsZiwgbWF4c2l6ZSk6CiAgICAgICAgIHNlbGYucXVldWUgPSBbXQogCi0gICAgZGVmIF9xc2l6ZShzZWxmLCBsZW49bGVuKToKKyAgICBkZWYgX3FzaXplKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYucXVldWUpCiAKICAgICBkZWYgX3B1dChzZWxmLCBpdGVtKToKZGlmZiAtLWdpdCBhL0xpYi9yYW5kb20ucHkgYi9MaWIvcmFuZG9tLnB5CmluZGV4IDliNjEyMDguLjYzODhmMjkgMTAwNjQ0Ci0tLSBhL0xpYi9yYW5kb20ucHkKKysrIGIvTGliL3JhbmRvbS5weQpAQCAtNDEsNyArNDEsNyBAQAogZnJvbSBtYXRoIGltcG9ydCBsb2cgYXMgX2xvZywgZXhwIGFzIF9leHAsIHBpIGFzIF9waSwgZSBhcyBfZSwgY2VpbCBhcyBfY2VpbAogZnJvbSBtYXRoIGltcG9ydCBzcXJ0IGFzIF9zcXJ0LCBhY29zIGFzIF9hY29zLCBjb3MgYXMgX2Nvcywgc2luIGFzIF9zaW4KIGZyb20gb3MgaW1wb3J0IHVyYW5kb20gYXMgX3VyYW5kb20KLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNldCBhcyBfU2V0LCBTZXF1ZW5jZSBhcyBfU2VxdWVuY2UKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQgYXMgX1NldCwgU2VxdWVuY2UgYXMgX1NlcXVlbmNlCiBmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTUxMiBhcyBfc2hhNTEyCiAKIF9fYWxsX18gPSBbIlJhbmRvbSIsInNlZWQiLCJyYW5kb20iLCJ1bmlmb3JtIiwicmFuZGludCIsImNob2ljZSIsInNhbXBsZSIsCmRpZmYgLS1naXQgYS9MaWIvcmUucHkgYi9MaWIvcmUucHkKaW5kZXggODVjNWE1Ny4uOWFlNTE3NCAxMDA2NDQKLS0tIGEvTGliL3JlLnB5CisrKyBiL0xpYi9yZS5weQpAQCAtMjE1LDcgKzIxNSw3IEBACiAKIGRlZiBwdXJnZSgpOgogICAgICJDbGVhciB0aGUgcmVndWxhciBleHByZXNzaW9uIGNhY2hlcyIKLSAgICBfY29tcGlsZV90eXBlZC5jYWNoZV9jbGVhcigpCisgICAgX2NvbXBpbGUuY2FjaGVfY2xlYXIoKQogICAgIF9jb21waWxlX3JlcGwuY2FjaGVfY2xlYXIoKQogCiBkZWYgdGVtcGxhdGUocGF0dGVybiwgZmxhZ3M9MCk6CkBAIC0yMjMsMTIgKzIyMywxNCBAQAogICAgIHJldHVybiBfY29tcGlsZShwYXR0ZXJuLCBmbGFnc3xUKQogCiBfYWxwaGFudW1fc3RyID0gZnJvemVuc2V0KAotICAgICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OTAiKQorICAgICJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIF9hbHBoYW51bV9ieXRlcyA9IGZyb3plbnNldCgKLSAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5MCIpCisgICAgYiJfYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkwIikKIAogZGVmIGVzY2FwZShwYXR0ZXJuKToKLSAgICAiRXNjYXBlIGFsbCBub24tYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgaW4gcGF0dGVybi4iCisgICAgIiIiCisgICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBwYXR0ZXJuIGV4Y2VwdCBBU0NJSSBsZXR0ZXJzLCBudW1iZXJzIGFuZCAnXycuCisgICAgIiIiCiAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgogICAgICAgICBhbHBoYW51bSA9IF9hbHBoYW51bV9zdHIKICAgICAgICAgcyA9IGxpc3QocGF0dGVybikKQEAgLTI1OSwxMSArMjYxLDggQEAKIAogX3BhdHRlcm5fdHlwZSA9IHR5cGUoc3JlX2NvbXBpbGUuY29tcGlsZSgiIiwgMCkpCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwLCB0eXBlZD1UcnVlKQogZGVmIF9jb21waWxlKHBhdHRlcm4sIGZsYWdzKToKLSAgICByZXR1cm4gX2NvbXBpbGVfdHlwZWQodHlwZShwYXR0ZXJuKSwgcGF0dGVybiwgZmxhZ3MpCi0KLUBmdW5jdG9vbHMubHJ1X2NhY2hlKG1heHNpemU9NTAwKQotZGVmIF9jb21waWxlX3R5cGVkKHRleHRfYnl0ZXNfdHlwZSwgcGF0dGVybiwgZmxhZ3MpOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcGF0dGVybgogICAgIGlmIGlzaW5zdGFuY2UocGF0dGVybiwgX3BhdHRlcm5fdHlwZSk6CiAgICAgICAgIGlmIGZsYWdzOgpkaWZmIC0tZ2l0IGEvTGliL3J1bnB5LnB5IGIvTGliL3J1bnB5LnB5CmluZGV4IDdjYjQ2NjguLjM5YzBlOWYgMTAwNjQ0Ci0tLSBhL0xpYi9ydW5weS5weQorKysgYi9MaWIvcnVucHkucHkKQEAgLTksMTMgKzksMTIgQEAKICMgV3JpdHRlbiBieSBOaWNrIENvZ2hsYW4gPG5jb2dobGFuIGF0IGdtYWlsLmNvbT4KICMgICAgdG8gaW1wbGVtZW50IFBFUCAzMzggKEV4ZWN1dGluZyBNb2R1bGVzIGFzIFNjcmlwdHMpCiAKKworaW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeSAjIGltcG9ydGxpYiBmaXJzdCBzbyB3ZSBjYW4gdGVzdCAjMTUzODYgdmlhIC1tCiBpbXBvcnQgaW1wCi1mcm9tIHBrZ3V0aWwgaW1wb3J0IHJlYWRfY29kZQotdHJ5OgotICAgIGZyb20gaW1wIGltcG9ydCBnZXRfbG9hZGVyCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSBwa2d1dGlsIGltcG9ydCBnZXRfbG9hZGVyCitmcm9tIHBrZ3V0aWwgaW1wb3J0IHJlYWRfY29kZSwgZ2V0X2xvYWRlciwgZ2V0X2ltcG9ydGVyCiAKIF9fYWxsX18gPSBbCiAgICAgInJ1bl9tb2R1bGUiLCAicnVuX3BhdGgiLApAQCAtOTUsNyArOTQsNyBAQAogICAgIGZvciBhdHRyIGluICgiZ2V0X2ZpbGVuYW1lIiwgIl9nZXRfZmlsZW5hbWUiKToKICAgICAgICAgbWV0aCA9IGdldGF0dHIobG9hZGVyLCBhdHRyLCBOb25lKQogICAgICAgICBpZiBtZXRoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuIG1ldGgobW9kX25hbWUpCisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG1ldGgobW9kX25hbWUpKQogICAgIHJldHVybiBOb25lCiAKICMgSGVscGVyIHRvIGdldCB0aGUgbG9hZGVyLCBjb2RlIGFuZCBmaWxlbmFtZSBmb3IgYSBtb2R1bGUKQEAgLTE4MSw0NyArMTgwLDIzIEBACiBkZWYgX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCk6CiAgICAgIyBIZWxwZXIgdGhhdCBnaXZlcyBhIG5pY2VyIGVycm9yIG1lc3NhZ2Ugd2hlbiBhdHRlbXB0aW5nIHRvCiAgICAgIyBleGVjdXRlIGEgemlwZmlsZSBvciBkaXJlY3RvcnkgYnkgaW52b2tpbmcgX19tYWluX18ucHkKKyAgICAjIEFsc28gbW92ZXMgdGhlIHN0YW5kYXJkIF9fbWFpbl9fIG91dCBvZiB0aGUgd2F5IHNvIHRoYXQgdGhlCisgICAgIyBwcmVleGlzdGluZyBfX2xvYWRlcl9fIGVudHJ5IGRvZXNuJ3QgY2F1c2UgaXNzdWVzCiAgICAgbWFpbl9uYW1lID0gIl9fbWFpbl9fIgorICAgIHNhdmVkX21haW4gPSBzeXMubW9kdWxlc1ttYWluX25hbWVdCisgICAgZGVsIHN5cy5tb2R1bGVzW21haW5fbmFtZV0KICAgICB0cnk6CiAgICAgICAgIHJldHVybiBfZ2V0X21vZHVsZV9kZXRhaWxzKG1haW5fbmFtZSkKICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXhjOgogICAgICAgICBpZiBtYWluX25hbWUgaW4gc3RyKGV4Yyk6CiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcigiY2FuJ3QgZmluZCAlciBtb2R1bGUgaW4gJXIiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWluX25hbWUsIHN5cy5wYXRoWzBdKSkgZnJvbSBleGMKICAgICAgICAgcmFpc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMubW9kdWxlc1ttYWluX25hbWVdID0gc2F2ZWRfbWFpbgogCiAKLSMgWFhYIChuY29naGxhbik6IFBlcmhhcHMgZXhwb3NlIHRoZSBDIEFQSSBmdW5jdGlvbgotIyBhcyBpbXAuZ2V0X2ltcG9ydGVyIGluc3RlYWQgb2YgcmVpbXBsZW1lbnRpbmcgaXQgaW4gUHl0aG9uPwotZGVmIF9nZXRfaW1wb3J0ZXIocGF0aF9uYW1lKToKLSAgICAiIiJQeXRob24gdmVyc2lvbiBvZiBQeUltcG9ydF9HZXRJbXBvcnRlciBDIEFQSSBmdW5jdGlvbiIiIgotICAgIGNhY2hlID0gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydGVyID0gY2FjaGVbcGF0aF9uYW1lXQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgIyBOb3QgeWV0IGNhY2hlZC4gRmxhZyBhcyB1c2luZyB0aGUKLSAgICAgICAgIyBzdGFuZGFyZCBtYWNoaW5lcnkgdW50aWwgd2UgZmluaXNoCi0gICAgICAgICMgY2hlY2tpbmcgdGhlIGhvb2tzCi0gICAgICAgIGNhY2hlW3BhdGhfbmFtZV0gPSBOb25lCi0gICAgICAgIGZvciBob29rIGluIHN5cy5wYXRoX2hvb2tzOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGltcG9ydGVyID0gaG9vayhwYXRoX25hbWUpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgY2hlY2sgbG9va3MgYSBiaXQgb2RkLiBUaGUgdHJpY2sgaXMgdGhhdAotICAgICAgICAgICAgIyBOdWxsSW1wb3J0ZXIgdGhyb3dzIEltcG9ydEVycm9yIGlmIHRoZSBzdXBwbGllZCBwYXRoIGlzIGEKLSAgICAgICAgICAgICMgKnZhbGlkKiBkaXJlY3RvcnkgZW50cnkgKGFuZCBoZW5jZSBhYmxlIHRvIGJlIGhhbmRsZWQKLSAgICAgICAgICAgICMgYnkgdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgaW1wb3J0ZXIgPSBpbXAuTnVsbEltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBjYWNoZVtwYXRoX25hbWVdID0gaW1wb3J0ZXIKLSAgICByZXR1cm4gaW1wb3J0ZXIKLQotZGVmIF9nZXRfY29kZV9mcm9tX2ZpbGUoZm5hbWUpOgorZGVmIF9nZXRfY29kZV9mcm9tX2ZpbGUocnVuX25hbWUsIGZuYW1lKToKICAgICAjIENoZWNrIGZvciBhIGNvbXBpbGVkIGZpbGUgZmlyc3QKICAgICB3aXRoIG9wZW4oZm5hbWUsICJyYiIpIGFzIGY6CiAgICAgICAgIGNvZGUgPSByZWFkX2NvZGUoZikKQEAgLTIyOSw3ICsyMDQsMTAgQEAKICAgICAgICAgIyBUaGF0IGRpZG4ndCB3b3JrLCBzbyB0cnkgaXQgYXMgbm9ybWFsIHNvdXJjZSBjb2RlCiAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKGYucmVhZCgpLCBmbmFtZSwgJ2V4ZWMnKQotICAgIHJldHVybiBjb2RlCisgICAgICAgICAgICBsb2FkZXIgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIocnVuX25hbWUsIGZuYW1lKQorICAgIGVsc2U6CisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIocnVuX25hbWUsIGZuYW1lKQorICAgIHJldHVybiBjb2RlLCBsb2FkZXIKIAogZGVmIHJ1bl9wYXRoKHBhdGhfbmFtZSwgaW5pdF9nbG9iYWxzPU5vbmUsIHJ1bl9uYW1lPU5vbmUpOgogICAgICIiIkV4ZWN1dGUgY29kZSBsb2NhdGVkIGF0IHRoZSBzcGVjaWZpZWQgZmlsZXN5c3RlbSBsb2NhdGlvbgpAQCAtMjQ0LDEzICsyMjIsMTMgQEAKICAgICBpZiBydW5fbmFtZSBpcyBOb25lOgogICAgICAgICBydW5fbmFtZSA9ICI8cnVuX3BhdGg+IgogICAgIHBrZ19uYW1lID0gcnVuX25hbWUucnBhcnRpdGlvbigiLiIpWzBdCi0gICAgaW1wb3J0ZXIgPSBfZ2V0X2ltcG9ydGVyKHBhdGhfbmFtZSkKLSAgICBpZiBpc2luc3RhbmNlKGltcG9ydGVyLCBpbXAuTnVsbEltcG9ydGVyKToKKyAgICBpbXBvcnRlciA9IGdldF9pbXBvcnRlcihwYXRoX25hbWUpCisgICAgaWYgaXNpbnN0YW5jZShpbXBvcnRlciwgKHR5cGUoTm9uZSksIGltcC5OdWxsSW1wb3J0ZXIpKToKICAgICAgICAgIyBOb3QgYSB2YWxpZCBzeXMucGF0aCBlbnRyeSwgc28gcnVuIHRoZSBjb2RlIGRpcmVjdGx5CiAgICAgICAgICMgZXhlY2ZpbGUoKSBkb2Vzbid0IGhlbHAgYXMgd2Ugd2FudCB0byBhbGxvdyBjb21waWxlZCBmaWxlcwotICAgICAgICBjb2RlID0gX2dldF9jb2RlX2Zyb21fZmlsZShwYXRoX25hbWUpCisgICAgICAgIGNvZGUsIG1vZF9sb2FkZXIgPSBfZ2V0X2NvZGVfZnJvbV9maWxlKHJ1bl9uYW1lLCBwYXRoX25hbWUpCiAgICAgICAgIHJldHVybiBfcnVuX21vZHVsZV9jb2RlKGNvZGUsIGluaXRfZ2xvYmFscywgcnVuX25hbWUsIHBhdGhfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnX25hbWU9cGtnX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9sb2FkZXIsIHBrZ19uYW1lKQogICAgIGVsc2U6CiAgICAgICAgICMgSW1wb3J0ZXIgaXMgZGVmaW5lZCBmb3IgcGF0aCwgc28gYWRkIGl0IHRvCiAgICAgICAgICMgdGhlIHN0YXJ0IG9mIHN5cy5wYXRoCkBAIC0yNjIsMTMgKzI0MCw3IEBACiAgICAgICAgICAgICAjIGhhdmUgbm8gY2hvaWNlIGFuZCB3ZSBoYXZlIHRvIHJlbW92ZSBpdCBldmVuIHdoaWxlIHdlIHJlYWQgdGhlCiAgICAgICAgICAgICAjIGNvZGUuIElmIHdlIGRvbid0IGRvIHRoaXMsIGEgX19sb2FkZXJfXyBhdHRyaWJ1dGUgaW4gdGhlCiAgICAgICAgICAgICAjIGV4aXN0aW5nIF9fbWFpbl9fIG1vZHVsZSBtYXkgcHJldmVudCBsb2NhdGlvbiBvZiB0aGUgbmV3IG1vZHVsZS4KLSAgICAgICAgICAgIG1haW5fbmFtZSA9ICJfX21haW5fXyIKLSAgICAgICAgICAgIHNhdmVkX21haW4gPSBzeXMubW9kdWxlc1ttYWluX25hbWVdCi0gICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZF9uYW1lLCBsb2FkZXIsIGNvZGUsIGZuYW1lID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbbWFpbl9uYW1lXSA9IHNhdmVkX21haW4KKyAgICAgICAgICAgIG1vZF9uYW1lLCBsb2FkZXIsIGNvZGUsIGZuYW1lID0gX2dldF9tYWluX21vZHVsZV9kZXRhaWxzKCkKICAgICAgICAgICAgIHdpdGggX1RlbXBNb2R1bGUocnVuX25hbWUpIGFzIHRlbXBfbW9kdWxlLCBcCiAgICAgICAgICAgICAgICAgIF9Nb2RpZmllZEFyZ3YwKHBhdGhfbmFtZSk6CiAgICAgICAgICAgICAgICAgbW9kX2dsb2JhbHMgPSB0ZW1wX21vZHVsZS5tb2R1bGUuX19kaWN0X18KZGlmZiAtLWdpdCBhL0xpYi9zY2hlZC5weSBiL0xpYi9zY2hlZC5weQppbmRleCBhMTE5ODkyLi41NTUxZjcxIDEwMDY0NAotLS0gYS9MaWIvc2NoZWQucHkKKysrIGIvTGliL3NjaGVkLnB5CkBAIC0yOCwxMiArMjgsMjEgQEAKICMgWFhYIGluc3RlYWQgb2YgaGF2aW5nIHRvIGRlZmluZSBhIG1vZHVsZSBvciBjbGFzcyBqdXN0IHRvIGhvbGQKICMgWFhYIHRoZSBnbG9iYWwgc3RhdGUgb2YgeW91ciBwYXJ0aWN1bGFyIHRpbWUgYW5kIGRlbGF5IGZ1bmN0aW9ucy4KIAoraW1wb3J0IHRpbWUKIGltcG9ydCBoZWFwcQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQordHJ5OgorICAgIGltcG9ydCB0aHJlYWRpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBpbXBvcnQgZHVtbXlfdGhyZWFkaW5nIGFzIHRocmVhZGluZwordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiAKIF9fYWxsX18gPSBbInNjaGVkdWxlciJdCiAKLWNsYXNzIEV2ZW50KG5hbWVkdHVwbGUoJ0V2ZW50JywgJ3RpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50JykpOgorY2xhc3MgRXZlbnQobmFtZWR0dXBsZSgnRXZlbnQnLCAndGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncycpKToKICAgICBkZWYgX19lcV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPT0gKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19uZV9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgIT0gKG8udGltZSwgby5wcmlvcml0eSkKICAgICBkZWYgX19sdF9fKHMsIG8pOiByZXR1cm4gKHMudGltZSwgcy5wcmlvcml0eSkgPCAgKG8udGltZSwgby5wcmlvcml0eSkKQEAgLTQyLDMyICs1MSwzNiBAQAogICAgIGRlZiBfX2dlX18ocywgbyk6IHJldHVybiAocy50aW1lLCBzLnByaW9yaXR5KSA+PSAoby50aW1lLCBvLnByaW9yaXR5KQogCiBjbGFzcyBzY2hlZHVsZXI6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVmdW5jLCBkZWxheWZ1bmMpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbWVmdW5jPV90aW1lLCBkZWxheWZ1bmM9dGltZS5zbGVlcCk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5zdGFuY2UsIHBhc3NpbmcgdGhlIHRpbWUgYW5kIGRlbGF5CiAgICAgICAgIGZ1bmN0aW9ucyIiIgogICAgICAgICBzZWxmLl9xdWV1ZSA9IFtdCisgICAgICAgIHNlbGYuX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQogICAgICAgICBzZWxmLnRpbWVmdW5jID0gdGltZWZ1bmMKICAgICAgICAgc2VsZi5kZWxheWZ1bmMgPSBkZWxheWZ1bmMKIAotICAgIGRlZiBlbnRlcmFicyhzZWxmLCB0aW1lLCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCk6CisgICAgZGVmIGVudGVyYWJzKHNlbGYsIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50PVtdLCBrd2FyZ3M9e30pOgogICAgICAgICAiIiJFbnRlciBhIG5ldyBldmVudCBpbiB0aGUgcXVldWUgYXQgYW4gYWJzb2x1dGUgdGltZS4KIAogICAgICAgICBSZXR1cm5zIGFuIElEIGZvciB0aGUgZXZlbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIGl0LAogICAgICAgICBpZiBuZWNlc3NhcnkuCiAKICAgICAgICAgIiIiCi0gICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCi0gICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKLSAgICAgICAgcmV0dXJuIGV2ZW50ICMgVGhlIElECisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQodGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKKyAgICAgICAgICAgIGhlYXBxLmhlYXBwdXNoKHNlbGYuX3F1ZXVlLCBldmVudCkKKyAgICAgICAgICAgIHJldHVybiBldmVudCAjIFRoZSBJRAogCi0gICAgZGVmIGVudGVyKHNlbGYsIGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudCk6CisgICAgZGVmIGVudGVyKHNlbGYsIGRlbGF5LCBwcmlvcml0eSwgYWN0aW9uLCBhcmd1bWVudD1bXSwga3dhcmdzPXt9KToKICAgICAgICAgIiIiQSB2YXJpYW50IHRoYXQgc3BlY2lmaWVzIHRoZSB0aW1lIGFzIGEgcmVsYXRpdmUgdGltZS4KIAogICAgICAgICBUaGlzIGlzIGFjdHVhbGx5IHRoZSBtb3JlIGNvbW1vbmx5IHVzZWQgaW50ZXJmYWNlLgogCiAgICAgICAgICIiIgotICAgICAgICB0aW1lID0gc2VsZi50aW1lZnVuYygpICsgZGVsYXkKLSAgICAgICAgcmV0dXJuIHNlbGYuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQpCisgICAgICAgIHdpdGggc2VsZi5fbG9jazoKKyAgICAgICAgICAgIHRpbWUgPSBzZWxmLnRpbWVmdW5jKCkgKyBkZWxheQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW50ZXJhYnModGltZSwgcHJpb3JpdHksIGFjdGlvbiwgYXJndW1lbnQsIGt3YXJncykKIAogICAgIGRlZiBjYW5jZWwoc2VsZiwgZXZlbnQpOgogICAgICAgICAiIiJSZW1vdmUgYW4gZXZlbnQgZnJvbSB0aGUgcXVldWUuCkBAIC03NiwxNSArODksMjAgQEAKICAgICAgICAgSWYgdGhlIGV2ZW50IGlzIG5vdCBpbiB0aGUgcXVldWUsIHRoaXMgcmFpc2VzIFZhbHVlRXJyb3IuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3F1ZXVlLnJlbW92ZShldmVudCkKLSAgICAgICAgaGVhcHEuaGVhcGlmeShzZWxmLl9xdWV1ZSkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fcXVldWUucmVtb3ZlKGV2ZW50KQorICAgICAgICAgICAgaGVhcHEuaGVhcGlmeShzZWxmLl9xdWV1ZSkKIAogICAgIGRlZiBlbXB0eShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgd2hldGhlciB0aGUgcXVldWUgaXMgZW1wdHkuIiIiCi0gICAgICAgIHJldHVybiBub3Qgc2VsZi5fcXVldWUKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcmV0dXJuIG5vdCBzZWxmLl9xdWV1ZQogCi0gICAgZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIGJsb2NraW5nPVRydWUpOgogICAgICAgICAiIiJFeGVjdXRlIGV2ZW50cyB1bnRpbCB0aGUgcXVldWUgaXMgZW1wdHkuCisgICAgICAgIElmIGJsb2NraW5nIGlzIEZhbHNlIGV4ZWN1dGVzIHRoZSBzY2hlZHVsZWQgZXZlbnRzIGR1ZSB0bworICAgICAgICBleHBpcmUgc29vbmVzdCAoaWYgYW55KSBhbmQgdGhlbiByZXR1cm4gdGhlIGRlYWRsaW5lIG9mIHRoZQorICAgICAgICBuZXh0IHNjaGVkdWxlZCBjYWxsIGluIHRoZSBzY2hlZHVsZXIuCiAKICAgICAgICAgV2hlbiB0aGVyZSBpcyBhIHBvc2l0aXZlIGRlbGF5IHVudGlsIHRoZSBmaXJzdCBldmVudCwgdGhlCiAgICAgICAgIGRlbGF5IGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgdGhlIGV2ZW50IGlzIGxlZnQgaW4gdGhlIHF1ZXVlOwpAQCAtMTA2LDI0ICsxMjQsMjcgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgbG9jYWxpemUgdmFyaWFibGUgYWNjZXNzIHRvIG1pbmltaXplIG92ZXJoZWFkCiAgICAgICAgICMgYW5kIHRvIGltcHJvdmUgdGhyZWFkIHNhZmV0eQotICAgICAgICBxID0gc2VsZi5fcXVldWUKLSAgICAgICAgZGVsYXlmdW5jID0gc2VsZi5kZWxheWZ1bmMKLSAgICAgICAgdGltZWZ1bmMgPSBzZWxmLnRpbWVmdW5jCi0gICAgICAgIHBvcCA9IGhlYXBxLmhlYXBwb3AKLSAgICAgICAgd2hpbGUgcToKLSAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50ID0gY2hlY2tlZF9ldmVudCA9IHFbMF0KLSAgICAgICAgICAgIG5vdyA9IHRpbWVmdW5jKCkKLSAgICAgICAgICAgIGlmIG5vdyA8IHRpbWU6Ci0gICAgICAgICAgICAgICAgZGVsYXlmdW5jKHRpbWUgLSBub3cpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV2ZW50ID0gcG9wKHEpCi0gICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZXZlbnQgd2FzIG5vdCByZW1vdmVkIG9yIGFsdGVyZWQKLSAgICAgICAgICAgICAgICAjIGJ5IGFub3RoZXIgdGhyZWFkIGFmdGVyIHdlIGxhc3QgbG9va2VkIGF0IHFbMF0uCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQgaXMgY2hlY2tlZF9ldmVudDoKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCkKLSAgICAgICAgICAgICAgICAgICAgZGVsYXlmdW5jKDApICAgIyBMZXQgb3RoZXIgdGhyZWFkcyBydW4KKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgcSA9IHNlbGYuX3F1ZXVlCisgICAgICAgICAgICBkZWxheWZ1bmMgPSBzZWxmLmRlbGF5ZnVuYworICAgICAgICAgICAgdGltZWZ1bmMgPSBzZWxmLnRpbWVmdW5jCisgICAgICAgICAgICBwb3AgPSBoZWFwcS5oZWFwcG9wCisgICAgICAgICAgICB3aGlsZSBxOgorICAgICAgICAgICAgICAgIHRpbWUsIHByaW9yaXR5LCBhY3Rpb24sIGFyZ3VtZW50LCBrd2FyZ3MgPSBjaGVja2VkX2V2ZW50ID0gcVswXQorICAgICAgICAgICAgICAgIG5vdyA9IHRpbWVmdW5jKCkKKyAgICAgICAgICAgICAgICBpZiBub3cgPCB0aW1lOgorICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2tpbmc6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGltZSAtIG5vdworICAgICAgICAgICAgICAgICAgICBkZWxheWZ1bmModGltZSAtIG5vdykKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBoZWFwcS5oZWFwcHVzaChxLCBldmVudCkKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBwb3AocSkKKyAgICAgICAgICAgICAgICAgICAgIyBWZXJpZnkgdGhhdCB0aGUgZXZlbnQgd2FzIG5vdCByZW1vdmVkIG9yIGFsdGVyZWQKKyAgICAgICAgICAgICAgICAgICAgIyBieSBhbm90aGVyIHRocmVhZCBhZnRlciB3ZSBsYXN0IGxvb2tlZCBhdCBxWzBdLgorICAgICAgICAgICAgICAgICAgICBpZiBldmVudCBpcyBjaGVja2VkX2V2ZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uKCphcmd1bWVudCwgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBkZWxheWZ1bmMoMCkgICAjIExldCBvdGhlciB0aHJlYWRzIHJ1bgorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhcHEuaGVhcHB1c2gocSwgZXZlbnQpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgcXVldWUoc2VsZik6CkBAIC0xMzYsNSArMTU3LDYgQEAKICAgICAgICAgIyBVc2UgaGVhcHEgdG8gc29ydCB0aGUgcXVldWUgcmF0aGVyIHRoYW4gdXNpbmcgJ3NvcnRlZChzZWxmLl9xdWV1ZSknLgogICAgICAgICAjIFdpdGggaGVhcHEsIHR3byBldmVudHMgc2NoZWR1bGVkIGF0IHRoZSBzYW1lIHRpbWUgd2lsbCBzaG93IGluCiAgICAgICAgICMgdGhlIGFjdHVhbCBvcmRlciB0aGV5IHdvdWxkIGJlIHJldHJpZXZlZC4KLSAgICAgICAgZXZlbnRzID0gc2VsZi5fcXVldWVbOl0KLSAgICAgICAgcmV0dXJuIG1hcChoZWFwcS5oZWFwcG9wLCBbZXZlbnRzXSpsZW4oZXZlbnRzKSkKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgZXZlbnRzID0gc2VsZi5fcXVldWVbOl0KKyAgICAgICAgICAgIHJldHVybiBtYXAoaGVhcHEuaGVhcHBvcCwgW2V2ZW50c10qbGVuKGV2ZW50cykpCmRpZmYgLS1naXQgYS9MaWIvc2hsZXgucHkgYi9MaWIvc2hsZXgucHkKaW5kZXggM2VkZDNkYi4uNjlmM2I0NSAxMDA2NDQKLS0tIGEvTGliL3NobGV4LnB5CisrKyBiL0xpYi9zaGxleC5weQpAQCAtNiwxMyArNiwxNCBAQAogIyBQb3NpeCBjb21wbGlhbmNlLCBzcGxpdCgpLCBzdHJpbmcgYXJndW1lbnRzLCBhbmQKICMgaXRlcmF0b3IgaW50ZXJmYWNlIGJ5IEd1c3Rhdm8gTmllbWV5ZXIsIEFwcmlsIDIwMDMuCiAKLWltcG9ydCBvcy5wYXRoCitpbXBvcnQgb3MKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIAogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIAotX19hbGxfXyA9IFsic2hsZXgiLCAic3BsaXQiXQorX19hbGxfXyA9IFsic2hsZXgiLCAic3BsaXQiLCAicXVvdGUiXQogCiBjbGFzcyBzaGxleDoKICAgICAiQSBsZXhpY2FsIGFuYWx5emVyIGNsYXNzIGZvciBzaW1wbGUgc2hlbGwtbGlrZSBzeW50YXhlcy4iCkBAIC0yNzQsNiArMjc1LDIxIEBACiAgICAgICAgIGxleC5jb21tZW50ZXJzID0gJycKICAgICByZXR1cm4gbGlzdChsZXgpCiAKKworX2ZpbmRfdW5zYWZlID0gcmUuY29tcGlsZShyJ1teXHdAJSs9OiwuLy1dJywgcmUuQVNDSUkpLnNlYXJjaAorCitkZWYgcXVvdGUocyk6CisgICAgIiIiUmV0dXJuIGEgc2hlbGwtZXNjYXBlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgKnMqLiIiIgorICAgIGlmIG5vdCBzOgorICAgICAgICByZXR1cm4gIicnIgorICAgIGlmIF9maW5kX3Vuc2FmZShzKSBpcyBOb25lOgorICAgICAgICByZXR1cm4gcworCisgICAgIyB1c2Ugc2luZ2xlIHF1b3RlcywgYW5kIHB1dCBzaW5nbGUgcXVvdGVzIGludG8gZG91YmxlIHF1b3RlcworICAgICMgdGhlIHN0cmluZyAkJ2IgaXMgdGhlbiBxdW90ZWQgYXMgJyQnIiciJ2InCisgICAgcmV0dXJuICInIiArIHMucmVwbGFjZSgiJyIsICInXCInXCInIikgKyAiJyIKKworCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMToKICAgICAgICAgbGV4ZXIgPSBzaGxleCgpCmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCBlZjI5YWUyLi41ZGMzMTFlIDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTE1LDYgKzE1LDcgQEAKIAogdHJ5OgogICAgIGltcG9ydCBiejIKKyAgICBkZWwgYnoyCiAgICAgX0JaMl9TVVBQT1JURUQgPSBUcnVlCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgX0JaMl9TVVBQT1JURUQgPSBGYWxzZQpAQCAtMzQsNyArMzUsOSBAQAogICAgICAgICAgICAiRXhlY0Vycm9yIiwgIm1ha2VfYXJjaGl2ZSIsICJnZXRfYXJjaGl2ZV9mb3JtYXRzIiwKICAgICAgICAgICAgInJlZ2lzdGVyX2FyY2hpdmVfZm9ybWF0IiwgInVucmVnaXN0ZXJfYXJjaGl2ZV9mb3JtYXQiLAogICAgICAgICAgICAiZ2V0X3VucGFja19mb3JtYXRzIiwgInJlZ2lzdGVyX3VucGFja19mb3JtYXQiLAotICAgICAgICAgICAidW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0IiwgInVucGFja19hcmNoaXZlIiwgImlnbm9yZV9wYXR0ZXJucyJdCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX3VucGFja19mb3JtYXQiLCAidW5wYWNrX2FyY2hpdmUiLAorICAgICAgICAgICAiaWdub3JlX3BhdHRlcm5zIiwgImNob3duIiwgIndoaWNoIl0KKyAgICAgICAgICAgIyBkaXNrX3VzYWdlIGlzIGFkZGVkIGxhdGVyLCBpZiBhdmFpbGFibGUgb24gdGhlIHBsYXRmb3JtCiAKIGNsYXNzIEVycm9yKEVudmlyb25tZW50RXJyb3IpOgogICAgIHBhc3MKQEAgLTc5LDggKzgyLDEzIEBACiAgICAgcmV0dXJuIChvcy5wYXRoLm5vcm1jYXNlKG9zLnBhdGguYWJzcGF0aChzcmMpKSA9PQogICAgICAgICAgICAgb3MucGF0aC5ub3JtY2FzZShvcy5wYXRoLmFic3BhdGgoZHN0KSkpCiAKLWRlZiBjb3B5ZmlsZShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdCIiIgorZGVmIGNvcHlmaWxlKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBkYXRhIGZyb20gc3JjIHRvIGRzdC4KKworICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBub3Qgc2V0IGFuZCBzcmMgaXMgYSBzeW1ib2xpYyBsaW5rLCBhIG5ldworICAgIHN5bWxpbmsgd2lsbCBiZSBjcmVhdGVkIGluc3RlYWQgb2YgY29weWluZyB0aGUgZmlsZSBpdCBwb2ludHMgdG8uCisKKyAgICAiIiIKICAgICBpZiBfc2FtZWZpbGUoc3JjLCBkc3QpOgogICAgICAgICByYWlzZSBFcnJvcigiYCVzYCBhbmQgYCVzYCBhcmUgdGhlIHNhbWUgZmlsZSIgJSAoc3JjLCBkc3QpKQogCkBAIC05NSw1NiArMTAzLDE0MCBAQAogICAgICAgICAgICAgaWYgc3RhdC5TX0lTRklGTyhzdC5zdF9tb2RlKToKICAgICAgICAgICAgICAgICByYWlzZSBTcGVjaWFsRmlsZUVycm9yKCJgJXNgIGlzIGEgbmFtZWQgcGlwZSIgJSBmbikKIAotICAgIHdpdGggb3BlbihzcmMsICdyYicpIGFzIGZzcmM6Ci0gICAgICAgIHdpdGggb3Blbihkc3QsICd3YicpIGFzIGZkc3Q6Ci0gICAgICAgICAgICBjb3B5ZmlsZW9iaihmc3JjLCBmZHN0KQorICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIG9zLnBhdGguaXNsaW5rKHNyYyk6CisgICAgICAgIG9zLnN5bWxpbmsob3MucmVhZGxpbmsoc3JjKSwgZHN0KQorICAgIGVsc2U6CisgICAgICAgIHdpdGggb3BlbihzcmMsICdyYicpIGFzIGZzcmM6CisgICAgICAgICAgICB3aXRoIG9wZW4oZHN0LCAnd2InKSBhcyBmZHN0OgorICAgICAgICAgICAgICAgIGNvcHlmaWxlb2JqKGZzcmMsIGZkc3QpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgY29weW1vZGUoc3JjLCBkc3QpOgotICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdCIiIgotICAgIGlmIGhhc2F0dHIob3MsICdjaG1vZCcpOgotICAgICAgICBzdCA9IG9zLnN0YXQoc3JjKQotICAgICAgICBtb2RlID0gc3RhdC5TX0lNT0RFKHN0LnN0X21vZGUpCi0gICAgICAgIG9zLmNobW9kKGRzdCwgbW9kZSkKK2RlZiBjb3B5bW9kZShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgbW9kZSBiaXRzIGZyb20gc3JjIHRvIGRzdC4KIAotZGVmIGNvcHlzdGF0KHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGFsbCBzdGF0IGluZm8gKG1vZGUgYml0cywgYXRpbWUsIG10aW1lLCBmbGFncykgZnJvbSBzcmMgdG8gZHN0IiIiCi0gICAgc3QgPSBvcy5zdGF0KHNyYykKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgbm90IHNldCwgc3ltbGlua3MgYXJlbid0IGZvbGxvd2VkIGlmIGFuZCBvbmx5CisgICAgaWYgYm90aCBgc3JjYCBhbmQgYGRzdGAgYXJlIHN5bWxpbmtzLiAgSWYgYGxjaG1vZGAgaXNuJ3QgYXZhaWxhYmxlCisgICAgKGUuZy4gTGludXgpIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KKworICAgICIiIgorICAgIGlmIG5vdCBmb2xsb3dfc3ltbGlua3MgYW5kIG9zLnBhdGguaXNsaW5rKHNyYykgYW5kIG9zLnBhdGguaXNsaW5rKGRzdCk6CisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLmxzdGF0LCBvcy5sY2htb2QKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybgorICAgIGVsaWYgaGFzYXR0cihvcywgJ2NobW9kJyk6CisgICAgICAgIHN0YXRfZnVuYywgY2htb2RfZnVuYyA9IG9zLnN0YXQsIG9zLmNobW9kCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuCisKKyAgICBzdCA9IHN0YXRfZnVuYyhzcmMpCisgICAgY2htb2RfZnVuYyhkc3QsIHN0YXQuU19JTU9ERShzdC5zdF9tb2RlKSkKKworaWYgaGFzYXR0cihvcywgJ2xpc3R4YXR0cicpOgorICAgIGRlZiBfY29weXhhdHRyKHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgICAgICIiIkNvcHkgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGVzIGZyb20gYHNyY2AgdG8gYGRzdGAuCisKKyAgICAgICAgT3ZlcndyaXRlIGV4aXN0aW5nIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgSWYgYGZvbGxvd19zeW1saW5rc2AgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLgorCisgICAgICAgICIiIgorCisgICAgICAgIGZvciBuYW1lIGluIG9zLmxpc3R4YXR0cihzcmMsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHZhbHVlID0gb3MuZ2V0eGF0dHIoc3JjLCBuYW1lLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGRzdCwgbmFtZSwgdmFsdWUsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FUEVSTSwgZXJybm8uRU5PVFNVUCwgZXJybm8uRU5PREFUQSk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCitlbHNlOgorICAgIGRlZiBfY29weXhhdHRyKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKworZGVmIGNvcHlzdGF0KHNyYywgZHN0LCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSk6CisgICAgIiIiQ29weSBhbGwgc3RhdCBpbmZvIChtb2RlIGJpdHMsIGF0aW1lLCBtdGltZSwgZmxhZ3MpIGZyb20gc3JjIHRvIGRzdC4KKworICAgIElmIHRoZSBvcHRpb25hbCBmbGFnIGBmb2xsb3dfc3ltbGlua3NgIGlzIG5vdCBzZXQsIHN5bWxpbmtzIGFyZW4ndCBmb2xsb3dlZCBpZiBhbmQKKyAgICBvbmx5IGlmIGJvdGggYHNyY2AgYW5kIGBkc3RgIGFyZSBzeW1saW5rcy4KKworICAgICIiIgorICAgIGRlZiBfbm9wKCphcmdzLCBucz1Ob25lLCBmb2xsb3dfc3ltbGlua3M9Tm9uZSk6CisgICAgICAgIHBhc3MKKworICAgICMgZm9sbG93IHN5bWxpbmtzIChha2EgZG9uJ3Qgbm90IGZvbGxvdyBzeW1saW5rcykKKyAgICBmb2xsb3cgPSBmb2xsb3dfc3ltbGlua3Mgb3Igbm90IChvcy5wYXRoLmlzbGluayhzcmMpIGFuZCBvcy5wYXRoLmlzbGluayhkc3QpKQorICAgIGlmIGZvbGxvdzoKKyAgICAgICAgIyB1c2UgdGhlIHJlYWwgZnVuY3Rpb24gaWYgaXQgZXhpc3RzCisgICAgICAgIGRlZiBsb29rdXAobmFtZSk6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvcywgbmFtZSwgX25vcCkKKyAgICBlbHNlOgorICAgICAgICAjIHVzZSB0aGUgcmVhbCBmdW5jdGlvbiBvbmx5IGlmIGl0IGV4aXN0cworICAgICAgICAjICphbmQqIGl0IHN1cHBvcnRzIGZvbGxvd19zeW1saW5rcworICAgICAgICBkZWYgbG9va3VwKG5hbWUpOgorICAgICAgICAgICAgZm4gPSBnZXRhdHRyKG9zLCBuYW1lLCBfbm9wKQorICAgICAgICAgICAgaWYgZm4gaW4gb3Muc3VwcG9ydHNfZm9sbG93X3N5bWxpbmtzOgorICAgICAgICAgICAgICAgIHJldHVybiBmbgorICAgICAgICAgICAgcmV0dXJuIF9ub3AKKworICAgIHN0ID0gbG9va3VwKCJzdGF0Iikoc3JjLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogICAgIG1vZGUgPSBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkKLSAgICBpZiBoYXNhdHRyKG9zLCAndXRpbWUnKToKLSAgICAgICAgb3MudXRpbWUoZHN0LCAoc3Quc3RfYXRpbWUsIHN0LnN0X210aW1lKSkKLSAgICBpZiBoYXNhdHRyKG9zLCAnY2htb2QnKToKLSAgICAgICAgb3MuY2htb2QoZHN0LCBtb2RlKQotICAgIGlmIGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kIGhhc2F0dHIoc3QsICdzdF9mbGFncycpOgorICAgIGxvb2t1cCgidXRpbWUiKShkc3QsIG5zPShzdC5zdF9hdGltZV9ucywgc3Quc3RfbXRpbWVfbnMpLAorICAgICAgICBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQorICAgIHRyeToKKyAgICAgICAgbG9va3VwKCJjaG1vZCIpKGRzdCwgbW9kZSwgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKKyAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgIyBpZiB3ZSBnb3QgYSBOb3RJbXBsZW1lbnRlZEVycm9yLCBpdCdzIGJlY2F1c2UKKyAgICAgICAgIyAgICogZm9sbG93X3N5bWxpbmtzPUZhbHNlLAorICAgICAgICAjICAgKiBsY2hvd24oKSBpcyB1bmF2YWlsYWJsZSwgYW5kCisgICAgICAgICMgICAqIGVpdGhlcgorICAgICAgICAjICAgICAgICogZmNob3duYXQoKSBpcyB1bnZhaWxhYmxlIG9yCisgICAgICAgICMgICAgICAgKiBmY2hvd25hdCgpIGRvZXNuJ3QgaW1wbGVtZW50IEFUX1NZTUxJTktfTk9GT0xMT1cuCisgICAgICAgICMgICAgICAgICAoaXQgcmV0dXJuZWQgRU5PU1VQLikKKyAgICAgICAgIyB0aGVyZWZvcmUgd2UncmUgb3V0IG9mIG9wdGlvbnMtLXdlIHNpbXBseSBjYW5ub3QgY2hvd24gdGhlCisgICAgICAgICMgc3ltbGluay4gIGdpdmUgdXAsIHN1cHByZXNzIHRoZSBlcnJvci4KKyAgICAgICAgIyAod2hpY2ggaXMgd2hhdCBzaHV0aWwgYWx3YXlzIGRpZCBpbiB0aGlzIGNpcmN1bXN0YW5jZS4pCisgICAgICAgIHBhc3MKKyAgICBpZiBoYXNhdHRyKHN0LCAnc3RfZmxhZ3MnKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuY2hmbGFncyhkc3QsIHN0LnN0X2ZsYWdzKQorICAgICAgICAgICAgbG9va3VwKCJjaGZsYWdzIikoZHN0LCBzdC5zdF9mbGFncywgZm9sbG93X3N5bWxpbmtzPWZvbGxvdykKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgd2h5OgogICAgICAgICAgICAgZm9yIGVyciBpbiAnRU9QTk9UU1VQUCcsICdFTk9UU1VQJzoKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGVycm5vLCBlcnIpIGFuZCB3aHkuZXJybm8gPT0gZ2V0YXR0cihlcnJubywgZXJyKToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICBfY29weXhhdHRyKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93KQogCi1kZWYgY29weShzcmMsIGRzdCk6Ci0gICAgIiIiQ29weSBkYXRhIGFuZCBtb2RlIGJpdHMgKCJjcCBzcmMgZHN0IikuCitkZWYgY29weShzcmMsIGRzdCwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICIiIkNvcHkgZGF0YSBhbmQgbW9kZSBiaXRzICgiY3Agc3JjIGRzdCIpLiBSZXR1cm4gdGhlIGZpbGUncyBkZXN0aW5hdGlvbi4KIAogICAgIFRoZSBkZXN0aW5hdGlvbiBtYXkgYmUgYSBkaXJlY3RvcnkuCiAKKyAgICBJZiBmb2xsb3dfc3ltbGlua3MgaXMgZmFsc2UsIHN5bWxpbmtzIHdvbid0IGJlIGZvbGxvd2VkLiBUaGlzCisgICAgcmVzZW1ibGVzIEdOVSdzICJjcCAtUCBzcmMgZHN0Ii4KKwogICAgICIiIgogICAgIGlmIG9zLnBhdGguaXNkaXIoZHN0KToKICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGRzdCwgb3MucGF0aC5iYXNlbmFtZShzcmMpKQotICAgIGNvcHlmaWxlKHNyYywgZHN0KQotICAgIGNvcHltb2RlKHNyYywgZHN0KQorICAgIGNvcHlmaWxlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIGNvcHltb2RlKHNyYywgZHN0LCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKQorICAgIHJldHVybiBkc3QKIAotZGVmIGNvcHkyKHNyYywgZHN0KToKLSAgICAiIiJDb3B5IGRhdGEgYW5kIGFsbCBzdGF0IGluZm8gKCJjcCAtcCBzcmMgZHN0IikuCitkZWYgY29weTIoc3JjLCBkc3QsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAiIiJDb3B5IGRhdGEgYW5kIGFsbCBzdGF0IGluZm8gKCJjcCAtcCBzcmMgZHN0IikuIFJldHVybiB0aGUgZmlsZSdzCisgICAgZGVzdGluYXRpb24uIgogCiAgICAgVGhlIGRlc3RpbmF0aW9uIG1heSBiZSBhIGRpcmVjdG9yeS4KIAorICAgIElmIGZvbGxvd19zeW1saW5rcyBpcyBmYWxzZSwgc3ltbGlua3Mgd29uJ3QgYmUgZm9sbG93ZWQuIFRoaXMKKyAgICByZXNlbWJsZXMgR05VJ3MgImNwIC1QIHNyYyBkc3QiLgorCiAgICAgIiIiCiAgICAgaWYgb3MucGF0aC5pc2Rpcihkc3QpOgogICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oZHN0LCBvcy5wYXRoLmJhc2VuYW1lKHNyYykpCi0gICAgY29weWZpbGUoc3JjLCBkc3QpCi0gICAgY29weXN0YXQoc3JjLCBkc3QpCisgICAgY29weWZpbGUoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgY29weXN0YXQoc3JjLCBkc3QsIGZvbGxvd19zeW1saW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgcmV0dXJuIGRzdAogCiBkZWYgaWdub3JlX3BhdHRlcm5zKCpwYXR0ZXJucyk6CiAgICAgIiIiRnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBjb3B5dHJlZSgpIGlnbm9yZSBwYXJhbWV0ZXIuCkBAIC0yMTEsNyArMzAzLDExIEBACiAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmNuYW1lKToKICAgICAgICAgICAgICAgICBsaW5rdG8gPSBvcy5yZWFkbGluayhzcmNuYW1lKQogICAgICAgICAgICAgICAgIGlmIHN5bWxpbmtzOgorICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbid0IGp1c3QgbGVhdmUgaXQgdG8gYGNvcHlfZnVuY3Rpb25gIGJlY2F1c2UgbGVnYWN5CisgICAgICAgICAgICAgICAgICAgICMgY29kZSB3aXRoIGEgY3VzdG9tIGBjb3B5X2Z1bmN0aW9uYCBtYXkgcmVseSBvbiBjb3B5dHJlZQorICAgICAgICAgICAgICAgICAgICAjIGRvaW5nIHRoZSByaWdodCB0aGluZy4KICAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhsaW5rdG8sIGRzdG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGNvcHlzdGF0KHNyY25hbWUsIGRzdG5hbWUsIGZvbGxvd19zeW1saW5rcz1ub3Qgc3ltbGlua3MpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgIyBpZ25vcmUgZGFuZ2xpbmcgc3ltbGluayBpZiB0aGUgZmxhZyBpcyBvbgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGlua3RvKSBhbmQgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzOgpAQCAtMjM5LDI0ICszMzUsMTAgQEAKICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHNyYywgZHN0LCBzdHIod2h5KSkpCiAgICAgaWYgZXJyb3JzOgogICAgICAgICByYWlzZSBFcnJvcihlcnJvcnMpCisgICAgcmV0dXJuIGRzdAogCi1kZWYgcm10cmVlKHBhdGgsIGlnbm9yZV9lcnJvcnM9RmFsc2UsIG9uZXJyb3I9Tm9uZSk6Ci0gICAgIiIiUmVjdXJzaXZlbHkgZGVsZXRlIGEgZGlyZWN0b3J5IHRyZWUuCi0KLSAgICBJZiBpZ25vcmVfZXJyb3JzIGlzIHNldCwgZXJyb3JzIGFyZSBpZ25vcmVkOyBvdGhlcndpc2UsIGlmIG9uZXJyb3IKLSAgICBpcyBzZXQsIGl0IGlzIGNhbGxlZCB0byBoYW5kbGUgdGhlIGVycm9yIHdpdGggYXJndW1lbnRzIChmdW5jLAotICAgIHBhdGgsIGV4Y19pbmZvKSB3aGVyZSBmdW5jIGlzIG9zLmxpc3RkaXIsIG9zLnJlbW92ZSwgb3Igb3Mucm1kaXI7Ci0gICAgcGF0aCBpcyB0aGUgYXJndW1lbnQgdG8gdGhhdCBmdW5jdGlvbiB0aGF0IGNhdXNlZCBpdCB0byBmYWlsOyBhbmQKLSAgICBleGNfaW5mbyBpcyBhIHR1cGxlIHJldHVybmVkIGJ5IHN5cy5leGNfaW5mbygpLiAgSWYgaWdub3JlX2Vycm9ycwotICAgIGlzIGZhbHNlIGFuZCBvbmVycm9yIGlzIE5vbmUsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCi0KLSAgICAiIiIKLSAgICBpZiBpZ25vcmVfZXJyb3JzOgotICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgZWxpZiBvbmVycm9yIGlzIE5vbmU6Ci0gICAgICAgIGRlZiBvbmVycm9yKCphcmdzKToKLSAgICAgICAgICAgIHJhaXNlCisjIHZlcnNpb24gdnVsbmVyYWJsZSB0byByYWNlIGNvbmRpdGlvbnMKK2RlZiBfcm10cmVlX3Vuc2FmZShwYXRoLCBvbmVycm9yKToKICAgICB0cnk6CiAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgogICAgICAgICAgICAgIyBzeW1saW5rcyB0byBkaXJlY3RvcmllcyBhcmUgZm9yYmlkZGVuLCBzZWUgYnVnICMxNjY5CkBAIC0yNjgsNyArMzUwLDcgQEAKICAgICBuYW1lcyA9IFtdCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIocGF0aCkKLSAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyOgorICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgb25lcnJvcihvcy5saXN0ZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKQEAgLTI3NywxNyArMzU5LDEwOSBAQAogICAgICAgICBleGNlcHQgb3MuZXJyb3I6CiAgICAgICAgICAgICBtb2RlID0gMAogICAgICAgICBpZiBzdGF0LlNfSVNESVIobW9kZSk6Ci0gICAgICAgICAgICBybXRyZWUoZnVsbG5hbWUsIGlnbm9yZV9lcnJvcnMsIG9uZXJyb3IpCisgICAgICAgICAgICBfcm10cmVlX3Vuc2FmZShmdWxsbmFtZSwgb25lcnJvcikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZnVsbG5hbWUpCi0gICAgICAgICAgICBleGNlcHQgb3MuZXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MucmVtb3ZlLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICAgICAgb3MudW5saW5rKGZ1bGxuYW1lKQorICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgIG9uZXJyb3Iob3MudW5saW5rLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCiAgICAgdHJ5OgogICAgICAgICBvcy5ybWRpcihwYXRoKQogICAgIGV4Y2VwdCBvcy5lcnJvcjoKICAgICAgICAgb25lcnJvcihvcy5ybWRpciwgcGF0aCwgc3lzLmV4Y19pbmZvKCkpCiAKKyMgVmVyc2lvbiB1c2luZyBmZC1iYXNlZCBBUElzIHRvIHByb3RlY3QgYWdhaW5zdCByYWNlcworZGVmIF9ybXRyZWVfc2FmZV9mZCh0b3BmZCwgcGF0aCwgb25lcnJvcik6CisgICAgbmFtZXMgPSBbXQorICAgIHRyeToKKyAgICAgICAgbmFtZXMgPSBvcy5saXN0ZGlyKHRvcGZkKQorICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgb25lcnJvcihvcy5saXN0ZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19zdCA9IG9zLnN0YXQobmFtZSwgZGlyX2ZkPXRvcGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICBtb2RlID0gb3JpZ19zdC5zdF9tb2RlCisgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgIG1vZGUgPSAwCisgICAgICAgIGlmIHN0YXQuU19JU0RJUihtb2RlKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkaXJmZCA9IG9zLm9wZW4obmFtZSwgb3MuT19SRE9OTFksIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBvbmVycm9yKG9zLm9wZW4sIGZ1bGxuYW1lLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGRpcmZkKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBfcm10cmVlX3NhZmVfZmQoZGlyZmQsIGZ1bGxuYW1lLCBvbmVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKG5hbWUsIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBmdWxsbmFtZSwgc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD10b3BmZCkKKyAgICAgICAgICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnVubGluaywgZnVsbG5hbWUsIHN5cy5leGNfaW5mbygpKQorCitfdXNlX2ZkX2Z1bmN0aW9ucyA9ICh7b3Mub3Blbiwgb3Muc3RhdCwgb3MudW5saW5rLCBvcy5ybWRpcn0gPD0KKyAgICAgICAgICAgICAgICAgICAgIG9zLnN1cHBvcnRzX2Rpcl9mZCBhbmQKKyAgICAgICAgICAgICAgICAgICAgIG9zLmxpc3RkaXIgaW4gb3Muc3VwcG9ydHNfZmQgYW5kCisgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcykKKworZGVmIHJtdHJlZShwYXRoLCBpZ25vcmVfZXJyb3JzPUZhbHNlLCBvbmVycm9yPU5vbmUpOgorICAgICIiIlJlY3Vyc2l2ZWx5IGRlbGV0ZSBhIGRpcmVjdG9yeSB0cmVlLgorCisgICAgSWYgaWdub3JlX2Vycm9ycyBpcyBzZXQsIGVycm9ycyBhcmUgaWdub3JlZDsgb3RoZXJ3aXNlLCBpZiBvbmVycm9yCisgICAgaXMgc2V0LCBpdCBpcyBjYWxsZWQgdG8gaGFuZGxlIHRoZSBlcnJvciB3aXRoIGFyZ3VtZW50cyAoZnVuYywKKyAgICBwYXRoLCBleGNfaW5mbykgd2hlcmUgZnVuYyBpcyBwbGF0Zm9ybSBhbmQgaW1wbGVtZW50YXRpb24gZGVwZW5kZW50OworICAgIHBhdGggaXMgdGhlIGFyZ3VtZW50IHRvIHRoYXQgZnVuY3Rpb24gdGhhdCBjYXVzZWQgaXQgdG8gZmFpbDsgYW5kCisgICAgZXhjX2luZm8gaXMgYSB0dXBsZSByZXR1cm5lZCBieSBzeXMuZXhjX2luZm8oKS4gIElmIGlnbm9yZV9lcnJvcnMKKyAgICBpcyBmYWxzZSBhbmQgb25lcnJvciBpcyBOb25lLCBhbiBleGNlcHRpb24gaXMgcmFpc2VkLgorCisgICAgIiIiCisgICAgaWYgaWdub3JlX2Vycm9yczoKKyAgICAgICAgZGVmIG9uZXJyb3IoKmFyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgIGVsaWYgb25lcnJvciBpcyBOb25lOgorICAgICAgICBkZWYgb25lcnJvcigqYXJncyk6CisgICAgICAgICAgICByYWlzZQorICAgIGlmIF91c2VfZmRfZnVuY3Rpb25zOgorICAgICAgICAjIFdoaWxlIHRoZSB1bnNhZmUgcm10cmVlIHdvcmtzIGZpbmUgb24gYnl0ZXMsIHRoZSBmZCBiYXNlZCBkb2VzIG5vdC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CisgICAgICAgICAgICBwYXRoID0gb3MuZnNkZWNvZGUocGF0aCkKKyAgICAgICAgIyBOb3RlOiBUbyBndWFyZCBhZ2FpbnN0IHN5bWxpbmsgcmFjZXMsIHdlIHVzZSB0aGUgc3RhbmRhcmQKKyAgICAgICAgIyBsc3RhdCgpL29wZW4oKS9mc3RhdCgpIHRyaWNrLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnX3N0ID0gb3MubHN0YXQocGF0aCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIG9uZXJyb3Iob3MubHN0YXQsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZkID0gb3Mub3BlbihwYXRoLCBvcy5PX1JET05MWSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIG9uZXJyb3Iob3MubHN0YXQsIHBhdGgsIHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIChzdGF0LlNfSVNESVIob3JpZ19zdC5zdF9tb2RlKSBhbmQKKyAgICAgICAgICAgICAgICBvcy5wYXRoLnNhbWVzdGF0KG9yaWdfc3QsIG9zLmZzdGF0KGZkKSkpOgorICAgICAgICAgICAgICAgIF9ybXRyZWVfc2FmZV9mZChmZCwgcGF0aCwgb25lcnJvcikKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnJtZGlyKHBhdGgpCisgICAgICAgICAgICAgICAgZXhjZXB0IG9zLmVycm9yOgorICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG9zLnJtZGlyLCBwYXRoLCBzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgTm90QURpcmVjdG9yeUVycm9yKDIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGEgZGlyZWN0b3J5OiAne30nIi5mb3JtYXQocGF0aCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gX3JtdHJlZV91bnNhZmUocGF0aCwgb25lcnJvcikKKworIyBBbGxvdyBpbnRyb3NwZWN0aW9uIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBoYXJkZW5pbmcgYWdhaW5zdCBzeW1saW5rCisjIGF0dGFja3MgaXMgc3VwcG9ydGVkIG9uIHRoZSBjdXJyZW50IHBsYXRmb3JtCitybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcyA9IF91c2VfZmRfZnVuY3Rpb25zCiAKIGRlZiBfYmFzZW5hbWUocGF0aCk6CiAgICAgIyBBIGJhc2VuYW1lKCkgdmFyaWFudCB3aGljaCBmaXJzdCBzdHJpcHMgdGhlIHRyYWlsaW5nIHNsYXNoLCBpZiBwcmVzZW50LgpAQCAtMjk2LDcgKzQ3MCw4IEBACiAKIGRlZiBtb3ZlKHNyYywgZHN0KToKICAgICAiIiJSZWN1cnNpdmVseSBtb3ZlIGEgZmlsZSBvciBkaXJlY3RvcnkgdG8gYW5vdGhlciBsb2NhdGlvbi4gVGhpcyBpcwotICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLgorICAgIHNpbWlsYXIgdG8gdGhlIFVuaXggIm12IiBjb21tYW5kLiBSZXR1cm4gdGhlIGZpbGUgb3IgZGlyZWN0b3J5J3MKKyAgICBkZXN0aW5hdGlvbi4KIAogICAgIElmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSBvciBhIHN5bWxpbmsgdG8gYSBkaXJlY3RvcnksIHRoZSBzb3VyY2UKICAgICBpcyBtb3ZlZCBpbnNpZGUgdGhlIGRpcmVjdG9yeS4gVGhlIGRlc3RpbmF0aW9uIHBhdGggbXVzdCBub3QgYWxyZWFkeQpAQCAtMzA2LDcgKzQ4MSwxMCBAQAogICAgIG92ZXJ3cml0dGVuIGRlcGVuZGluZyBvbiBvcy5yZW5hbWUoKSBzZW1hbnRpY3MuCiAKICAgICBJZiB0aGUgZGVzdGluYXRpb24gaXMgb24gb3VyIGN1cnJlbnQgZmlsZXN5c3RlbSwgdGhlbiByZW5hbWUoKSBpcyB1c2VkLgotICAgIE90aGVyd2lzZSwgc3JjIGlzIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gYW5kIHRoZW4gcmVtb3ZlZC4KKyAgICBPdGhlcndpc2UsIHNyYyBpcyBjb3BpZWQgdG8gdGhlIGRlc3RpbmF0aW9uIGFuZCB0aGVuIHJlbW92ZWQuIFN5bWxpbmtzIGFyZQorICAgIHJlY3JlYXRlZCB1bmRlciB0aGUgbmV3IG5hbWUgaWYgb3MucmVuYW1lKCkgZmFpbHMgYmVjYXVzZSBvZiBjcm9zcworICAgIGZpbGVzeXN0ZW0gcmVuYW1lcy4KKwogICAgIEEgbG90IG1vcmUgY291bGQgYmUgZG9uZSBoZXJlLi4uICBBIGxvb2sgYXQgYSBtdi5jIHNob3dzIGEgbG90IG9mCiAgICAgdGhlIGlzc3VlcyB0aGlzIGltcGxlbWVudGF0aW9uIGdsb3NzZXMgb3Zlci4KIApAQCAtMzI0LDggKzUwMiwxMiBAQAogICAgICAgICAgICAgcmFpc2UgRXJyb3IoIkRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyIgJSByZWFsX2RzdCkKICAgICB0cnk6CiAgICAgICAgIG9zLnJlbmFtZShzcmMsIHJlYWxfZHN0KQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzcmMpOgorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICBpZiBvcy5wYXRoLmlzbGluayhzcmMpOgorICAgICAgICAgICAgbGlua3RvID0gb3MucmVhZGxpbmsoc3JjKQorICAgICAgICAgICAgb3Muc3ltbGluayhsaW5rdG8sIHJlYWxfZHN0KQorICAgICAgICAgICAgb3MudW5saW5rKHNyYykKKyAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHNyYyk6CiAgICAgICAgICAgICBpZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiQ2Fubm90IG1vdmUgYSBkaXJlY3RvcnkgJyVzJyBpbnRvIGl0c2VsZiAnJXMnLiIgJSAoc3JjLCBkc3QpKQogICAgICAgICAgICAgY29weXRyZWUoc3JjLCByZWFsX2RzdCwgc3ltbGlua3M9VHJ1ZSkKQEAgLTMzMyw2ICs1MTUsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29weTIoc3JjLCByZWFsX2RzdCkKICAgICAgICAgICAgIG9zLnVubGluayhzcmMpCisgICAgcmV0dXJuIHJlYWxfZHN0CiAKIGRlZiBfZGVzdGluc3JjKHNyYywgZHN0KToKICAgICBzcmMgPSBhYnNwYXRoKHNyYykKQEAgLTM5MSw3ICs1NzQsNyBAQAogICAgICAgICBjb21wcmVzc19leHRbJ2J6aXAyJ10gPSAnLmJ6MicKIAogICAgICMgZmxhZ3MgZm9yIGNvbXByZXNzaW9uIHByb2dyYW0sIGVhY2ggZWxlbWVudCBvZiBsaXN0IHdpbGwgYmUgYW4gYXJndW1lbnQKLSAgICBpZiBjb21wcmVzcyBpcyBub3QgTm9uZSBhbmQgY29tcHJlc3Mgbm90IGluIGNvbXByZXNzX2V4dC5rZXlzKCk6CisgICAgaWYgY29tcHJlc3MgaXMgbm90IE5vbmUgYW5kIGNvbXByZXNzIG5vdCBpbiBjb21wcmVzc19leHQ6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJywgb3IgY29tcHJlc3Npb24gZm9ybWF0IG5vdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnRlZCA6IHswfSIuZm9ybWF0KGNvbXByZXNzKSkKIApAQCAtNDk2LDcgKzY3OSw3IEBACiBfQVJDSElWRV9GT1JNQVRTID0gewogICAgICdnenRhcic6IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdnemlwJyldLCAiZ3ppcCdlZCB0YXItZmlsZSIpLAogICAgICd0YXInOiAgIChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsIE5vbmUpXSwgInVuY29tcHJlc3NlZCB0YXIgZmlsZSIpLAotICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwiWklQIGZpbGUiKQorICAgICd6aXAnOiAgIChfbWFrZV96aXBmaWxlLCBbXSwgIlpJUCBmaWxlIikKICAgICB9CiAKIGlmIF9CWjJfU1VQUE9SVEVEOgpAQCAtNTI5LDcgKzcxMiw3IEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXh0cmFfYXJncywgKHR1cGxlLCBsaXN0KSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBuZWVkcyB0byBiZSBhIHNlcXVlbmNlJykKICAgICBmb3IgZWxlbWVudCBpbiBleHRyYV9hcmdzOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbGVtZW50LCAodHVwbGUsIGxpc3QpKSBvciBsZW4oZWxlbWVudCkgIT0yIDoKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZWxlbWVudCwgKHR1cGxlLCBsaXN0KSkgb3IgbGVuKGVsZW1lbnQpICE9MjoKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXh0cmFfYXJncyBlbGVtZW50cyBhcmUgOiAoYXJnX25hbWUsIHZhbHVlKScpCiAKICAgICBfQVJDSElWRV9GT1JNQVRTW25hbWVdID0gKGZ1bmN0aW9uLCBleHRyYV9hcmdzLCBkZXNjcmlwdGlvbikKQEAgLTY4MSw3ICs4NjQsNyBAQAogICAgICAgICAgICAgaWYgbm90IG5hbWUuZW5kc3dpdGgoJy8nKToKICAgICAgICAgICAgICAgICAjIGZpbGUKICAgICAgICAgICAgICAgICBkYXRhID0gemlwLnJlYWQoaW5mby5maWxlbmFtZSkKLSAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsJ3diJykKKyAgICAgICAgICAgICAgICBmID0gb3Blbih0YXJnZXQsICd3YicpCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCiAgICAgICAgICAgICAgICAgZmluYWxseToKQEAgLTc1NSwzICs5MzgsMTY1IEBACiAgICAgICAgIGZ1bmMgPSBfVU5QQUNLX0ZPUk1BVFNbZm9ybWF0XVsxXQogICAgICAgICBrd2FyZ3MgPSBkaWN0KF9VTlBBQ0tfRk9STUFUU1tmb3JtYXRdWzJdKQogICAgICAgICBmdW5jKGZpbGVuYW1lLCBleHRyYWN0X2RpciwgKiprd2FyZ3MpCisKKworaWYgaGFzYXR0cihvcywgJ3N0YXR2ZnMnKToKKworICAgIF9fYWxsX18uYXBwZW5kKCdkaXNrX3VzYWdlJykKKyAgICBfbnR1cGxlX2Rpc2t1c2FnZSA9IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoJ3VzYWdlJywgJ3RvdGFsIHVzZWQgZnJlZScpCisKKyAgICBkZWYgZGlza191c2FnZShwYXRoKToKKyAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KKworICAgICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBhIG5hbWVkIHR1cGxlIHdpdGggYXR0cmlidXRlcyAndG90YWwnLCAndXNlZCcgYW5kCisgICAgICAgICdmcmVlJywgd2hpY2ggYXJlIHRoZSBhbW91bnQgb2YgdG90YWwsIHVzZWQgYW5kIGZyZWUgc3BhY2UsIGluIGJ5dGVzLgorICAgICAgICAiIiIKKyAgICAgICAgc3QgPSBvcy5zdGF0dmZzKHBhdGgpCisgICAgICAgIGZyZWUgPSBzdC5mX2JhdmFpbCAqIHN0LmZfZnJzaXplCisgICAgICAgIHRvdGFsID0gc3QuZl9ibG9ja3MgKiBzdC5mX2Zyc2l6ZQorICAgICAgICB1c2VkID0gKHN0LmZfYmxvY2tzIC0gc3QuZl9iZnJlZSkgKiBzdC5mX2Zyc2l6ZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKK2VsaWYgb3MubmFtZSA9PSAnbnQnOgorCisgICAgaW1wb3J0IG50CisgICAgX19hbGxfXy5hcHBlbmQoJ2Rpc2tfdXNhZ2UnKQorICAgIF9udHVwbGVfZGlza3VzYWdlID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgndXNhZ2UnLCAndG90YWwgdXNlZCBmcmVlJykKKworICAgIGRlZiBkaXNrX3VzYWdlKHBhdGgpOgorICAgICAgICAiIiJSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoLgorCisgICAgICAgIFJldHVybmVkIHZhbHVzIGlzIGEgbmFtZWQgdHVwbGUgd2l0aCBhdHRyaWJ1dGVzICd0b3RhbCcsICd1c2VkJyBhbmQKKyAgICAgICAgJ2ZyZWUnLCB3aGljaCBhcmUgdGhlIGFtb3VudCBvZiB0b3RhbCwgdXNlZCBhbmQgZnJlZSBzcGFjZSwgaW4gYnl0ZXMuCisgICAgICAgICIiIgorICAgICAgICB0b3RhbCwgZnJlZSA9IG50Ll9nZXRkaXNrdXNhZ2UocGF0aCkKKyAgICAgICAgdXNlZCA9IHRvdGFsIC0gZnJlZQorICAgICAgICByZXR1cm4gX250dXBsZV9kaXNrdXNhZ2UodG90YWwsIHVzZWQsIGZyZWUpCisKKworZGVmIGNob3duKHBhdGgsIHVzZXI9Tm9uZSwgZ3JvdXA9Tm9uZSk6CisgICAgIiIiQ2hhbmdlIG93bmVyIHVzZXIgYW5kIGdyb3VwIG9mIHRoZSBnaXZlbiBwYXRoLgorCisgICAgdXNlciBhbmQgZ3JvdXAgY2FuIGJlIHRoZSB1aWQvZ2lkIG9yIHRoZSB1c2VyL2dyb3VwIG5hbWVzLCBhbmQgaW4gdGhhdCBjYXNlLAorICAgIHRoZXkgYXJlIGNvbnZlcnRlZCB0byB0aGVpciByZXNwZWN0aXZlIHVpZC9naWQuCisgICAgIiIiCisKKyAgICBpZiB1c2VyIGlzIE5vbmUgYW5kIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVzZXIgYW5kL29yIGdyb3VwIG11c3QgYmUgc2V0IikKKworICAgIF91c2VyID0gdXNlcgorICAgIF9ncm91cCA9IGdyb3VwCisKKyAgICAjIC0xIG1lYW5zIGRvbid0IGNoYW5nZSBpdAorICAgIGlmIHVzZXIgaXMgTm9uZToKKyAgICAgICAgX3VzZXIgPSAtMQorICAgICMgdXNlciBjYW4gZWl0aGVyIGJlIGFuIGludCAodGhlIHVpZCkgb3IgYSBzdHJpbmcgKHRoZSBzeXN0ZW0gdXNlcm5hbWUpCisgICAgZWxpZiBpc2luc3RhbmNlKHVzZXIsIHN0cik6CisgICAgICAgIF91c2VyID0gX2dldF91aWQodXNlcikKKyAgICAgICAgaWYgX3VzZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIExvb2t1cEVycm9yKCJubyBzdWNoIHVzZXI6IHshcn0iLmZvcm1hdCh1c2VyKSkKKworICAgIGlmIGdyb3VwIGlzIE5vbmU6CisgICAgICAgIF9ncm91cCA9IC0xCisgICAgZWxpZiBub3QgaXNpbnN0YW5jZShncm91cCwgaW50KToKKyAgICAgICAgX2dyb3VwID0gX2dldF9naWQoZ3JvdXApCisgICAgICAgIGlmIF9ncm91cCBpcyBOb25lOgorICAgICAgICAgICAgcmFpc2UgTG9va3VwRXJyb3IoIm5vIHN1Y2ggZ3JvdXA6IHshcn0iLmZvcm1hdChncm91cCkpCisKKyAgICBvcy5jaG93bihwYXRoLCBfdXNlciwgX2dyb3VwKQorCitkZWYgZ2V0X3Rlcm1pbmFsX3NpemUoZmFsbGJhY2s9KDgwLCAyNCkpOgorICAgICIiIkdldCB0aGUgc2l6ZSBvZiB0aGUgdGVybWluYWwgd2luZG93LgorCisgICAgRm9yIGVhY2ggb2YgdGhlIHR3byBkaW1lbnNpb25zLCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUsIENPTFVNTlMKKyAgICBhbmQgTElORVMgcmVzcGVjdGl2ZWx5LCBpcyBjaGVja2VkLiBJZiB0aGUgdmFyaWFibGUgaXMgZGVmaW5lZCBhbmQKKyAgICB0aGUgdmFsdWUgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBpdCBpcyB1c2VkLgorCisgICAgV2hlbiBDT0xVTU5TIG9yIExJTkVTIGlzIG5vdCBkZWZpbmVkLCB3aGljaCBpcyB0aGUgY29tbW9uIGNhc2UsCisgICAgdGhlIHRlcm1pbmFsIGNvbm5lY3RlZCB0byBzeXMuX19zdGRvdXRfXyBpcyBxdWVyaWVkCisgICAgYnkgaW52b2tpbmcgb3MuZ2V0X3Rlcm1pbmFsX3NpemUuCisKKyAgICBJZiB0aGUgdGVybWluYWwgc2l6ZSBjYW5ub3QgYmUgc3VjY2Vzc2Z1bGx5IHF1ZXJpZWQsIGVpdGhlciBiZWNhdXNlCisgICAgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgcXVlcnlpbmcsIG9yIGJlY2F1c2Ugd2UgYXJlIG5vdAorICAgIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLCB0aGUgdmFsdWUgZ2l2ZW4gaW4gZmFsbGJhY2sgcGFyYW1ldGVyCisgICAgaXMgdXNlZC4gRmFsbGJhY2sgZGVmYXVsdHMgdG8gKDgwLCAyNCkgd2hpY2ggaXMgdGhlIGRlZmF1bHQKKyAgICBzaXplIHVzZWQgYnkgbWFueSB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgICBUaGUgdmFsdWUgcmV0dXJuZWQgaXMgYSBuYW1lZCB0dXBsZSBvZiB0eXBlIG9zLnRlcm1pbmFsX3NpemUuCisgICAgIiIiCisgICAgIyBjb2x1bW5zLCBsaW5lcyBhcmUgdGhlIHdvcmtpbmcgdmFsdWVzCisgICAgdHJ5OgorICAgICAgICBjb2x1bW5zID0gaW50KG9zLmVudmlyb25bJ0NPTFVNTlMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgY29sdW1ucyA9IDAKKworICAgIHRyeToKKyAgICAgICAgbGluZXMgPSBpbnQob3MuZW52aXJvblsnTElORVMnXSkKKyAgICBleGNlcHQgKEtleUVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgbGluZXMgPSAwCisKKyAgICAjIG9ubHkgcXVlcnkgaWYgbmVjZXNzYXJ5CisgICAgaWYgY29sdW1ucyA8PSAwIG9yIGxpbmVzIDw9IDA6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBvcy5nZXRfdGVybWluYWxfc2l6ZShzeXMuX19zdGRvdXRfXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IChOYW1lRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgc2l6ZSA9IG9zLnRlcm1pbmFsX3NpemUoZmFsbGJhY2spCisgICAgICAgIGlmIGNvbHVtbnMgPD0gMDoKKyAgICAgICAgICAgIGNvbHVtbnMgPSBzaXplLmNvbHVtbnMKKyAgICAgICAgaWYgbGluZXMgPD0gMDoKKyAgICAgICAgICAgIGxpbmVzID0gc2l6ZS5saW5lcworCisgICAgcmV0dXJuIG9zLnRlcm1pbmFsX3NpemUoKGNvbHVtbnMsIGxpbmVzKSkKKworZGVmIHdoaWNoKGNtZCwgbW9kZT1vcy5GX09LIHwgb3MuWF9PSywgcGF0aD1Ob25lKToKKyAgICAiIiJHaXZlbiBhIGNvbW1hbmQsIG1vZGUsIGFuZCBhIFBBVEggc3RyaW5nLCByZXR1cm4gdGhlIHBhdGggd2hpY2gKKyAgICBjb25mb3JtcyB0byB0aGUgZ2l2ZW4gbW9kZSBvbiB0aGUgUEFUSCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubyBzdWNoCisgICAgZmlsZS4KKworICAgIGBtb2RlYCBkZWZhdWx0cyB0byBvcy5GX09LIHwgb3MuWF9PSy4gYHBhdGhgIGRlZmF1bHRzIHRvIHRoZSByZXN1bHQKKyAgICBvZiBvcy5lbnZpcm9uLmdldCgiUEFUSCIpLCBvciBjYW4gYmUgb3ZlcnJpZGRlbiB3aXRoIGEgY3VzdG9tIHNlYXJjaAorICAgIHBhdGguCisKKyAgICAiIiIKKyAgICAjIENoZWNrIHRoYXQgYSBnaXZlbiBmaWxlIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBjb3JyZWN0IG1vZGUuCisgICAgIyBBZGRpdGlvbmFsbHkgY2hlY2sgdGhhdCBgZmlsZWAgaXMgbm90IGEgZGlyZWN0b3J5LCBhcyBvbiBXaW5kb3dzCisgICAgIyBkaXJlY3RvcmllcyBwYXNzIHRoZSBvcy5hY2Nlc3MgY2hlY2suCisgICAgZGVmIF9hY2Nlc3NfY2hlY2soZm4sIG1vZGUpOgorICAgICAgICByZXR1cm4gKG9zLnBhdGguZXhpc3RzKGZuKSBhbmQgb3MuYWNjZXNzKGZuLCBtb2RlKQorICAgICAgICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5pc2RpcihmbikpCisKKyAgICAjIFNob3J0IGNpcmN1aXQuIElmIHdlJ3JlIGdpdmVuIGEgZnVsbCBwYXRoIHdoaWNoIG1hdGNoZXMgdGhlIG1vZGUKKyAgICAjIGFuZCBpdCBleGlzdHMsIHdlJ3JlIGRvbmUgaGVyZS4KKyAgICBpZiBfYWNjZXNzX2NoZWNrKGNtZCwgbW9kZSk6CisgICAgICAgIHJldHVybiBjbWQKKworICAgIHBhdGggPSAocGF0aCBvciBvcy5lbnZpcm9uLmdldCgiUEFUSCIsIG9zLmRlZnBhdGgpKS5zcGxpdChvcy5wYXRoc2VwKQorCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6CisgICAgICAgICMgVGhlIGN1cnJlbnQgZGlyZWN0b3J5IHRha2VzIHByZWNlZGVuY2Ugb24gV2luZG93cy4KKyAgICAgICAgaWYgbm90IG9zLmN1cmRpciBpbiBwYXRoOgorICAgICAgICAgICAgcGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorCisgICAgICAgICMgUEFUSEVYVCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgb24gV2luZG93cy4KKyAgICAgICAgcGF0aGV4dCA9IG9zLmVudmlyb24uZ2V0KCJQQVRIRVhUIiwgIiIpLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgICMgU2VlIGlmIHRoZSBnaXZlbiBmaWxlIG1hdGNoZXMgYW55IG9mIHRoZSBleHBlY3RlZCBwYXRoIGV4dGVuc2lvbnMuCisgICAgICAgICMgVGhpcyB3aWxsIGFsbG93IHVzIHRvIHNob3J0IGNpcmN1aXQgd2hlbiBnaXZlbiAicHl0aG9uLmV4ZSIuCisgICAgICAgIG1hdGNoZXMgPSBbY21kIGZvciBleHQgaW4gcGF0aGV4dCBpZiBjbWQubG93ZXIoKS5lbmRzd2l0aChleHQubG93ZXIoKSldCisgICAgICAgICMgSWYgaXQgZG9lcyBtYXRjaCwgb25seSB0ZXN0IHRoYXQgb25lLCBvdGhlcndpc2Ugd2UgaGF2ZSB0byB0cnkKKyAgICAgICAgIyBvdGhlcnMuCisgICAgICAgIGZpbGVzID0gW2NtZF0gaWYgbWF0Y2hlcyBlbHNlIFtjbWQgKyBleHQubG93ZXIoKSBmb3IgZXh0IGluIHBhdGhleHRdCisgICAgZWxzZToKKyAgICAgICAgIyBPbiBvdGhlciBwbGF0Zm9ybXMgeW91IGRvbid0IGhhdmUgdGhpbmdzIGxpa2UgUEFUSEVYVCB0byB0ZWxsIHlvdQorICAgICAgICAjIHdoYXQgZmlsZSBzdWZmaXhlcyBhcmUgZXhlY3V0YWJsZSwgc28ganVzdCBwYXNzIG9uIGNtZCBhcy1pcy4KKyAgICAgICAgZmlsZXMgPSBbY21kXQorCisgICAgc2VlbiA9IHNldCgpCisgICAgZm9yIGRpciBpbiBwYXRoOgorICAgICAgICBkaXIgPSBvcy5wYXRoLm5vcm1jYXNlKGRpcikKKyAgICAgICAgaWYgbm90IGRpciBpbiBzZWVuOgorICAgICAgICAgICAgc2Vlbi5hZGQoZGlyKQorICAgICAgICAgICAgZm9yIHRoZWZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIHRoZWZpbGUpCisgICAgICAgICAgICAgICAgaWYgX2FjY2Vzc19jaGVjayhuYW1lLCBtb2RlKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3NpdGUucHkgYi9MaWIvc2l0ZS5weQppbmRleCBhMmMwYmVjLi4wYWFmNDZiIDEwMDY0NAotLS0gYS9MaWIvc2l0ZS5weQorKysgYi9MaWIvc2l0ZS5weQpAQCAtMTMsNiArMTMsMTkgQEAKIHJlc3VsdGluZyBkaXJlY3RvcmllcywgaWYgdGhleSBleGlzdCwgYXJlIGFwcGVuZGVkIHRvIHN5cy5wYXRoLCBhbmQKIGFsc28gaW5zcGVjdGVkIGZvciBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAKK0lmIGEgZmlsZSBuYW1lZCAicHl2ZW52LmNmZyIgZXhpc3RzIG9uZSBkaXJlY3RvcnkgYWJvdmUgc3lzLmV4ZWN1dGFibGUsCitzeXMucHJlZml4IGFuZCBzeXMuZXhlY19wcmVmaXggYXJlIHNldCB0byB0aGF0IGRpcmVjdG9yeSBhbmQKK2l0IGlzIGFsc28gY2hlY2tlZCBmb3Igc2l0ZS1wYWNrYWdlcyBhbmQgc2l0ZS1weXRob24gKHN5cy5iYXNlX3ByZWZpeCBhbmQKK3N5cy5iYXNlX2V4ZWNfcHJlZml4IHdpbGwgYWx3YXlzIGJlIHRoZSAicmVhbCIgcHJlZml4ZXMgb2YgdGhlIFB5dGhvbgoraW5zdGFsbGF0aW9uKS4gSWYgInB5dmVudi5jZmciIChhIGJvb3RzdHJhcCBjb25maWd1cmF0aW9uIGZpbGUpIGNvbnRhaW5zCit0aGUga2V5ICJpbmNsdWRlLXN5c3RlbS1zaXRlLXBhY2thZ2VzIiBzZXQgdG8gYW55dGhpbmcgb3RoZXIgdGhhbiAiZmFsc2UiCisoY2FzZS1pbnNlbnNpdGl2ZSksIHRoZSBzeXN0ZW0tbGV2ZWwgcHJlZml4ZXMgd2lsbCBzdGlsbCBhbHNvIGJlCitzZWFyY2hlZCBmb3Igc2l0ZS1wYWNrYWdlczsgb3RoZXJ3aXNlIHRoZXkgd29uJ3QuCisKK0FsbCBvZiB0aGUgcmVzdWx0aW5nIHNpdGUtc3BlY2lmaWMgZGlyZWN0b3JpZXMsIGlmIHRoZXkgZXhpc3QsIGFyZQorYXBwZW5kZWQgdG8gc3lzLnBhdGgsIGFuZCBhbHNvIGluc3BlY3RlZCBmb3IgcGF0aCBjb25maWd1cmF0aW9uCitmaWxlcy4KKwogQSBwYXRoIGNvbmZpZ3VyYXRpb24gZmlsZSBpcyBhIGZpbGUgd2hvc2UgbmFtZSBoYXMgdGhlIGZvcm0KIDxwYWNrYWdlPi5wdGg7IGl0cyBjb250ZW50cyBhcmUgYWRkaXRpb25hbCBkaXJlY3RvcmllcyAob25lIHBlciBsaW5lKQogdG8gYmUgYWRkZWQgdG8gc3lzLnBhdGguICBOb24tZXhpc3RpbmcgZGlyZWN0b3JpZXMgKG9yCkBAIC01NCw4ICs2Nyw4IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IHJlCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCB0cmFjZWJhY2sKIAogIyBQcmVmaXhlcyBmb3Igc2l0ZS1wYWNrYWdlczsgYWRkIGFkZGl0aW9uYWwgcHJlZml4ZXMgbGlrZSAvdXNyL2xvY2FsIGhlcmUKIFBSRUZJWEVTID0gW3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeF0KQEAgLTgyLDcgKzk1LDggQEAKIGRlZiBhYnNfcGF0aHMoKToKICAgICAiIiJTZXQgYWxsIG1vZHVsZSBfX2ZpbGVfXyBhbmQgX19jYWNoZWRfXyBhdHRyaWJ1dGVzIHRvIGFuIGFic29sdXRlIHBhdGgiIiIKICAgICBmb3IgbSBpbiBzZXQoc3lzLm1vZHVsZXMudmFsdWVzKCkpOgotICAgICAgICBpZiBoYXNhdHRyKG0sICdfX2xvYWRlcl9fJyk6CisgICAgICAgIGlmIChnZXRhdHRyKGdldGF0dHIobSwgJ19fbG9hZGVyX18nLCBOb25lKSwgJ19fbW9kdWxlX18nLCBOb25lKSAhPQorICAgICAgICAgICAgICAgICdfZnJvemVuX2ltcG9ydGxpYicpOgogICAgICAgICAgICAgY29udGludWUgICAjIGRvbid0IG1lc3Mgd2l0aCBhIFBFUCAzMDItc3VwcGxpZWQgX19maWxlX18KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbS5fX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChtLl9fZmlsZV9fKQpAQCAtMTM4LDcgKzE1Miw3IEBACiAgICAgICAgIHJlc2V0ID0gMAogICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHNpdGVkaXIsIG5hbWUpCiAgICAgdHJ5OgotICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInJVIikKKyAgICAgICAgZiA9IG9wZW4oZnVsbG5hbWUsICJyIikKICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgcmV0dXJuCiAgICAgd2l0aCBmOgpAQCAtMTU0LDkgKzE2OCwxMCBAQAogICAgICAgICAgICAgICAgIGlmIG5vdCBkaXJjYXNlIGluIGtub3duX3BhdGhzIGFuZCBvcy5wYXRoLmV4aXN0cyhkaXIpOgogICAgICAgICAgICAgICAgICAgICBzeXMucGF0aC5hcHBlbmQoZGlyKQogICAgICAgICAgICAgICAgICAgICBrbm93bl9wYXRocy5hZGQoZGlyY2FzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBwcmludCgiRXJyb3IgcHJvY2Vzc2luZyBsaW5lIHs6ZH0gb2Yge306XG4iLmZvcm1hdChuKzEsIGZ1bGxuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICAgICAgaW1wb3J0IHRyYWNlYmFjawogICAgICAgICAgICAgICAgIGZvciByZWNvcmQgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKToKICAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gcmVjb3JkLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCcgICcrbGluZSwgZmlsZT1zeXMuc3RkZXJyKQpAQCAtMTc4LDYgKzE5Myw3IEBACiAgICAgc2l0ZWRpciwgc2l0ZWRpcmNhc2UgPSBtYWtlcGF0aChzaXRlZGlyKQogICAgIGlmIG5vdCBzaXRlZGlyY2FzZSBpbiBrbm93bl9wYXRoczoKICAgICAgICAgc3lzLnBhdGguYXBwZW5kKHNpdGVkaXIpICAgICAgICAjIEFkZCBwYXRoIGNvbXBvbmVudAorICAgICAgICBrbm93bl9wYXRocy5hZGQoc2l0ZWRpcmNhc2UpCiAgICAgdHJ5OgogICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoc2l0ZWRpcikKICAgICBleGNlcHQgb3MuZXJyb3I6CkBAIC0yNDEsNyArMjU3LDYgQEAKICAgICAgICAgcmV0dXJuIFVTRVJfU0lURQogCiAgICAgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wYXRoCi0gICAgaW1wb3J0IG9zCiAKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgIGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfY29uZmlnX3ZhcgpAQCAtMjY2LDE4ICsyODEsMjEgQEAKICAgICAgICAgYWRkc2l0ZWRpcih1c2VyX3NpdGUsIGtub3duX3BhdGhzKQogICAgIHJldHVybiBrbm93bl9wYXRocwogCi1kZWYgZ2V0c2l0ZXBhY2thZ2VzKCk6CitkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICIiIlJldHVybnMgYSBsaXN0IGNvbnRhaW5pbmcgYWxsIGdsb2JhbCBzaXRlLXBhY2thZ2VzIGRpcmVjdG9yaWVzCiAgICAgKGFuZCBwb3NzaWJseSBzaXRlLXB5dGhvbikuCiAKLSAgICBGb3IgZWFjaCBkaXJlY3RvcnkgcHJlc2VudCBpbiB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCwgdGhpcyBmdW5jdGlvbgotICAgIHdpbGwgZmluZCBpdHMgYHNpdGUtcGFja2FnZXNgIHN1YmRpcmVjdG9yeSBkZXBlbmRpbmcgb24gdGhlIHN5c3RlbQotICAgIGVudmlyb25tZW50LCBhbmQgd2lsbCByZXR1cm4gYSBsaXN0IG9mIGZ1bGwgcGF0aHMuCisgICAgRm9yIGVhY2ggZGlyZWN0b3J5IHByZXNlbnQgaW4gYGBwcmVmaXhlc2BgIChvciB0aGUgZ2xvYmFsIGBgUFJFRklYRVNgYCksCisgICAgdGhpcyBmdW5jdGlvbiB3aWxsIGZpbmQgaXRzIGBzaXRlLXBhY2thZ2VzYCBzdWJkaXJlY3RvcnkgZGVwZW5kaW5nIG9uIHRoZQorICAgIHN5c3RlbSBlbnZpcm9ubWVudCwgYW5kIHdpbGwgcmV0dXJuIGEgbGlzdCBvZiBmdWxsIHBhdGhzLgogICAgICIiIgogICAgIHNpdGVwYWNrYWdlcyA9IFtdCiAgICAgc2VlbiA9IHNldCgpCiAKLSAgICBmb3IgcHJlZml4IGluIFBSRUZJWEVTOgorICAgIGlmIHByZWZpeGVzIGlzIE5vbmU6CisgICAgICAgIHByZWZpeGVzID0gUFJFRklYRVMKKworICAgIGZvciBwcmVmaXggaW4gcHJlZml4ZXM6CiAgICAgICAgIGlmIG5vdCBwcmVmaXggb3IgcHJlZml4IGluIHNlZW46CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBzZWVuLmFkZChwcmVmaXgpCkBAIC0zMDMsOSArMzIxLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sICJzaXRlLXBhY2thZ2VzIikpCiAgICAgcmV0dXJuIHNpdGVwYWNrYWdlcwogCi1kZWYgYWRkc2l0ZXBhY2thZ2VzKGtub3duX3BhdGhzKToKK2RlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogICAgICIiIkFkZCBzaXRlLXBhY2thZ2VzIChhbmQgcG9zc2libHkgc2l0ZS1weXRob24pIHRvIHN5cy5wYXRoIiIiCi0gICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKCk6CisgICAgZm9yIHNpdGVkaXIgaW4gZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzKToKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihzaXRlZGlyKToKICAgICAgICAgICAgIGFkZHNpdGVkaXIoc2l0ZWRpciwga25vd25fcGF0aHMpCiAKQEAgLTM4NSw3ICs0MDMsNyBAQAogICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX19maWxlczoKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihkaXIsIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZnAgPSBvcGVuKGZpbGVuYW1lLCAiclUiKQorICAgICAgICAgICAgICAgICAgICBmcCA9IG9wZW4oZmlsZW5hbWUsICJyIikKICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQogICAgICAgICAgICAgICAgICAgICBmcC5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC00NzUsNiArNDkzLDYxIEBACiAgICAgICAgICAgICAgICAgZW5jb2RpbmdzLmFsaWFzZXMuYWxpYXNlc1tlbmNdID0gJ21iY3MnCiAKIAorQ09ORklHX0xJTkUgPSByZS5jb21waWxlKHInXig/UDxrZXk+KFx3fFstX10pKylccyo9XHMqKD9QPHZhbHVlPi4qKVxzKiQnKQorCitkZWYgdmVudihrbm93bl9wYXRocyk6CisgICAgZ2xvYmFsIFBSRUZJWEVTLCBFTkFCTEVfVVNFUl9TSVRFCisKKyAgICBlbnYgPSBvcy5lbnZpcm9uCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCAnX19QWVZFTlZfTEFVTkNIRVJfXycgaW4gZW52OgorICAgICAgICBleGVjdXRhYmxlID0gb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgZWxzZToKKyAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgZXhlY3V0YWJsZV9kaXIsIGV4ZWN1dGFibGVfbmFtZSA9IG9zLnBhdGguc3BsaXQoZXhlY3V0YWJsZSkKKyAgICBzaXRlX3ByZWZpeCA9IG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlX2RpcikKKyAgICBzeXMuX2hvbWUgPSBOb25lCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGV4ZWN1dGFibGVfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZXhlY3V0YWJsZV9uYW1lKVswXQorICAgIGNvbmZfYmFzZW5hbWUgPSAncHl2ZW52LmNmZycKKyAgICBjYW5kaWRhdGVfY29uZnMgPSBbCisgICAgICAgIGNvbmZmaWxlIGZvciBjb25mZmlsZSBpbiAoCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZXhlY3V0YWJsZV9kaXIsIGNvbmZfYmFzZW5hbWUpLAorICAgICAgICAgICAgb3MucGF0aC5qb2luKHNpdGVfcHJlZml4LCBjb25mX2Jhc2VuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShjb25mZmlsZSkKKyAgICAgICAgXQorCisgICAgaWYgY2FuZGlkYXRlX2NvbmZzOgorICAgICAgICB2aXJ0dWFsX2NvbmYgPSBjYW5kaWRhdGVfY29uZnNbMF0KKyAgICAgICAgc3lzdGVtX3NpdGUgPSAidHJ1ZSIKKyAgICAgICAgd2l0aCBvcGVuKHZpcnR1YWxfY29uZikgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgIG0gPSBDT05GSUdfTElORS5tYXRjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgICAgIGQgPSBtLmdyb3VwZGljdCgpCisgICAgICAgICAgICAgICAgICAgIGtleSwgdmFsdWUgPSBkWydrZXknXS5sb3dlcigpLCBkWyd2YWx1ZSddCisgICAgICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyc6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1fc2l0ZSA9IHZhbHVlLmxvd2VyKCkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2hvbWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLl9ob21lID0gdmFsdWUKKworICAgICAgICBzeXMucHJlZml4ID0gc3lzLmV4ZWNfcHJlZml4ID0gc2l0ZV9wcmVmaXgKKworICAgICAgICAjIERvaW5nIHRoaXMgaGVyZSBlbnN1cmVzIHZlbnYgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHVzZXItc2l0ZQorICAgICAgICBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIFtzeXMucHJlZml4XSkKKworICAgICAgICAjIGFkZHNpdGVwYWNrYWdlcyB3aWxsIHByb2Nlc3Mgc2l0ZV9wcmVmaXggYWdhaW4gaWYgaXRzIGluIFBSRUZJWEVTLAorICAgICAgICAjIGJ1dCB0aGF0J3Mgb2s7IGtub3duX3BhdGhzIHdpbGwgcHJldmVudCBhbnl0aGluZyBiZWluZyBhZGRlZCB0d2ljZQorICAgICAgICBpZiBzeXN0ZW1fc2l0ZSA9PSAidHJ1ZSI6CisgICAgICAgICAgICBQUkVGSVhFUy5pbnNlcnQoMCwgc3lzLnByZWZpeCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIFBSRUZJWEVTID0gW3N5cy5wcmVmaXhdCisgICAgICAgICAgICBFTkFCTEVfVVNFUl9TSVRFID0gRmFsc2UKKworICAgIHJldHVybiBrbm93bl9wYXRocworCisKIGRlZiBleGVjc2l0ZWN1c3RvbWl6ZSgpOgogICAgICIiIlJ1biBjdXN0b20gc2l0ZSBzcGVjaWZpYyBjb2RlLCBpZiBhdmFpbGFibGUuIiIiCiAgICAgdHJ5OgpAQCAtNTA4LDEwICs1ODEsMTYgQEAKIAogCiBkZWYgbWFpbigpOgorICAgICIiIkFkZCBzdGFuZGFyZCBzaXRlLXNwZWNpZmljIGRpcmVjdG9yaWVzIHRvIHRoZSBtb2R1bGUgc2VhcmNoIHBhdGguCisKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhpcyBtb2R1bGUgaXMgaW1wb3J0ZWQsCisgICAgdW5sZXNzIHRoZSBweXRob24gaW50ZXJwcmV0ZXIgd2FzIHN0YXJ0ZWQgd2l0aCB0aGUgLVMgZmxhZy4KKyAgICAiIiIKICAgICBnbG9iYWwgRU5BQkxFX1VTRVJfU0lURQogCiAgICAgYWJzX3BhdGhzKCkKICAgICBrbm93bl9wYXRocyA9IHJlbW92ZWR1cHBhdGhzKCkKKyAgICBrbm93bl9wYXRocyA9IHZlbnYoa25vd25fcGF0aHMpCiAgICAgaWYgRU5BQkxFX1VTRVJfU0lURSBpcyBOb25lOgogICAgICAgICBFTkFCTEVfVVNFUl9TSVRFID0gY2hlY2tfZW5hYmxldXNlcnNpdGUoKQogICAgIGtub3duX3BhdGhzID0gYWRkdXNlcnNpdGVwYWNrYWdlcyhrbm93bl9wYXRocykKQEAgLTUyNiw3ICs2MDUsMTAgQEAKICAgICBpZiBFTkFCTEVfVVNFUl9TSVRFOgogICAgICAgICBleGVjdXNlcmN1c3RvbWl6ZSgpCiAKLW1haW4oKQorIyBQcmV2ZW50IGVkaXRpb24gb2Ygc3lzLnBhdGggd2hlbiBweXRob24gd2FzIHN0YXJ0ZWQgd2l0aCAtUyBhbmQKKyMgc2l0ZSBpcyBpbXBvcnRlZCBsYXRlci4KK2lmIG5vdCBzeXMuZmxhZ3Mubm9fc2l0ZToKKyAgICBtYWluKCkKIAogZGVmIF9zY3JpcHQoKToKICAgICBoZWxwID0gIiIiXApkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IDhjZDQwNWMuLjc3OGQ2ZDYgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTEsNSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIiIiQW4gUkZDIDI4MjEgc210cCBwcm94eS4KKyIiIkFuIFJGQyA1MzIxIHNtdHAgcHJveHkuCiAKIFVzYWdlOiAlKHByb2dyYW0pcyBbb3B0aW9uc10gW2xvY2FsaG9zdDpsb2NhbHBvcnQgW3JlbW90ZWhvc3Q6cmVtb3RlcG9ydF1dCiAKQEAgLTIwLDYgKzIwLDExIEBACiAgICAgICAgIFVzZSBgY2xhc3NuYW1lJyBhcyB0aGUgY29uY3JldGUgU01UUCBwcm94eSBjbGFzcy4gIFVzZXMgYFB1cmVQcm94eScgYnkKICAgICAgICAgZGVmYXVsdC4KIAorICAgIC0tc2l6ZSBsaW1pdAorICAgIC1zIGxpbWl0CisgICAgICAgIFJlc3RyaWN0IHRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlIHRvICJsaW1pdCIgbnVtYmVyIG9mCisgICAgICAgIGJ5dGVzIHZpYSB0aGUgUkZDIDE4NzAgU0laRSBleHRlbnNpb24uICBEZWZhdWx0cyB0byAzMzU1NDQzMiBieXRlcy4KKwogICAgIC0tZGVidWcKICAgICAtZAogICAgICAgICBUdXJuIG9uIGRlYnVnZ2luZyBwcmludHMuCkBAIC0zNSwxMCArNDAsOSBAQAogYW5kIGlmIHJlbW90ZXBvcnQgaXMgbm90IGdpdmVuLCB0aGVuIDI1IGlzIHVzZWQuCiAiIiIKIAotDAogIyBPdmVydmlldzoKICMKLSMgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIG1pbmltYWwgU01UUCBwcm90b2NvbCBhcyBkZWZpbmVkIGluIFJGQyA4MjEuICBJdAorIyBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgbWluaW1hbCBTTVRQIHByb3RvY29sIGFzIGRlZmluZWQgaW4gUkZDIDUzMjEuICBJdAogIyBoYXMgYSBoaWVyYXJjaHkgb2YgY2xhc3NlcyB3aGljaCBpbXBsZW1lbnQgdGhlIGJhY2tlbmQgZnVuY3Rpb25hbGl0eSBmb3IgdGhlCiAjIHNtdHBkLiAgQSBudW1iZXIgb2YgY2xhc3NlcyBhcmUgcHJvdmlkZWQ6CiAjCkBAIC02Niw3ICs3MCw3IEBACiAjCiAjIC0gc3VwcG9ydCBtYWlsYm94IGRlbGl2ZXJ5CiAjIC0gYWxpYXMgZmlsZXMKLSMgLSBFU01UUAorIyAtIEhhbmRsZSBtb3JlIEVTTVRQIGV4dGVuc2lvbnMKICMgLSBoYW5kbGUgZXJyb3IgY29kZXMgZnJvbSB0aGUgYmFja2VuZCBzbXRwZAogCiBpbXBvcnQgc3lzCkBAIC03NywxMiArODEsMTQgQEAKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBhc3luY29yZQogaW1wb3J0IGFzeW5jaGF0CitpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KK2Zyb20gZW1haWwuX2hlYWRlcl92YWx1ZV9wYXJzZXIgaW1wb3J0IGdldF9hZGRyX3NwZWMsIGdldF9hbmdsZV9hZGRyCiAKIF9fYWxsX18gPSBbIlNNVFBTZXJ2ZXIiLCJEZWJ1Z2dpbmdTZXJ2ZXIiLCJQdXJlUHJveHkiLCJNYWlsbWFuUHJveHkiXQogCiBwcm9ncmFtID0gc3lzLmFyZ3ZbMF0KLV9fdmVyc2lvbl9fID0gJ1B5dGhvbiBTTVRQIHByb3h5IHZlcnNpb24gMC4yJworX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjMnCiAKIAogY2xhc3MgRGV2bnVsbDoKQEAgLTk0LDkgKzEwMCw5IEBACiBORVdMSU5FID0gJ1xuJwogRU1QVFlTVFJJTkcgPSAnJwogQ09NTUFTUEFDRSA9ICcsICcKK0RBVEFfU0laRV9ERUZBVUxUID0gMzM1NTQ0MzIKIAogCi0MCiBkZWYgdXNhZ2UoY29kZSwgbXNnPScnKToKICAgICBwcmludChfX2RvY19fICUgZ2xvYmFscygpLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgaWYgbXNnOgpAQCAtMTA0LDE5ICsxMTAsMjMgQEAKICAgICBzeXMuZXhpdChjb2RlKQogCiAKLQwKIGNsYXNzIFNNVFBDaGFubmVsKGFzeW5jaGF0LmFzeW5jX2NoYXQpOgogICAgIENPTU1BTkQgPSAwCiAgICAgREFUQSA9IDEKIAotICAgIGRhdGFfc2l6ZV9saW1pdCA9IDMzNTU0NDMyCiAgICAgY29tbWFuZF9zaXplX2xpbWl0ID0gNTEyCisgICAgY29tbWFuZF9zaXplX2xpbWl0cyA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KGxhbWJkYSB4PWNvbW1hbmRfc2l6ZV9saW1pdDogeCkKKyAgICBjb21tYW5kX3NpemVfbGltaXRzLnVwZGF0ZSh7CisgICAgICAgICdNQUlMJzogY29tbWFuZF9zaXplX2xpbWl0ICsgMjYsCisgICAgICAgIH0pCisgICAgbWF4X2NvbW1hbmRfc2l6ZV9saW1pdCA9IG1heChjb21tYW5kX3NpemVfbGltaXRzLnZhbHVlcygpKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxUKToKICAgICAgICAgYXN5bmNoYXQuYXN5bmNfY2hhdC5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCiAgICAgICAgIHNlbGYuY29ubiA9IGNvbm4KICAgICAgICAgc2VsZi5hZGRyID0gYWRkcgorICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLnJlY2VpdmVkX2xpbmVzID0gW10KICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECiAgICAgICAgIHNlbGYuc2Vlbl9ncmVldGluZyA9ICcnCkBAIC0xMzcsMTI3ICsxNDcsMTI4IEBACiAgICAgICAgIHByaW50KCdQZWVyOicsIHJlcHIoc2VsZi5wZWVyKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5wdXNoKCcyMjAgJXMgJXMnICUgKHNlbGYuZnFkbiwgX192ZXJzaW9uX18pKQogICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCisgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCiAKICAgICAjIHByb3BlcnRpZXMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5CiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fc2VydmVyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19zZXJ2ZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3NtdHBfc2VydmVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5zbXRwX3NlcnZlcgogICAgIEBfX3NlcnZlci5zZXR0ZXIKICAgICBkZWYgX19zZXJ2ZXIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fc2VydmVyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdzbXRwX3NlcnZlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdzbXRwX3NlcnZlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19saW5lKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19saW5lIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyZWNlaXZlZF9saW5lcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZWRfbGluZXMKICAgICBAX19saW5lLnNldHRlcgogICAgIGRlZiBfX2xpbmUoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fbGluZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmVjZWl2ZWRfbGluZXMnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fc3RhdGUoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX3N0YXRlIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3NtdHBfc3RhdGUnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNtdHBfc3RhdGUKICAgICBAX19zdGF0ZS5zZXR0ZXIKICAgICBkZWYgX19zdGF0ZShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19zdGF0ZSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnc210cF9zdGF0ZScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdzbXRwX3N0YXRlJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNtdHBfc3RhdGUgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fZ3JlZXRpbmcoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2dyZWV0aW5nIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ3NlZW5fZ3JlZXRpbmcnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLnNlZW5fZ3JlZXRpbmcKICAgICBAX19ncmVldGluZy5zZXR0ZXIKICAgICBkZWYgX19ncmVldGluZyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19ncmVldGluZyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnc2Vlbl9ncmVldGluZycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdzZWVuX2dyZWV0aW5nJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fbWFpbGZyb20oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX21haWxmcm9tIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdtYWlsZnJvbScgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdtYWlsZnJvbScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYubWFpbGZyb20KICAgICBAX19tYWlsZnJvbS5zZXR0ZXIKICAgICBkZWYgX19tYWlsZnJvbShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19tYWlsZnJvbSBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnbWFpbGZyb20nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAnbWFpbGZyb20nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYubWFpbGZyb20gPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fcmNwdHRvcyhzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fcmNwdHRvcyBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncmNwdHRvcycgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdyY3B0dG9zJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5yY3B0dG9zCiAgICAgQF9fcmNwdHRvcy5zZXR0ZXIKICAgICBkZWYgX19yY3B0dG9zKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3JjcHR0b3MgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3JjcHR0b3MnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncmNwdHRvcycgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5yY3B0dG9zID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2RhdGEoc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2RhdGEgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAncmVjZWl2ZWRfZGF0YScgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZWRfZGF0YQogICAgIEBfX2RhdGEuc2V0dGVyCiAgICAgZGVmIF9fZGF0YShzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19kYXRhIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdyZWNlaXZlZF9kYXRhJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ3JlY2VpdmVkX2RhdGEnIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19mcWRuKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19mcWRuIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdmcWRuJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ2ZxZG4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLmZxZG4KICAgICBAX19mcWRuLnNldHRlcgogICAgIGRlZiBfX2ZxZG4oc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fZnFkbiBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnZnFkbicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdmcWRuJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLmZxZG4gPSB2YWx1ZQogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIF9fcGVlcihzZWxmKToKICAgICAgICAgd2FybigiQWNjZXNzIHRvIF9fcGVlciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInVzZSAncGVlcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAidXNlICdwZWVyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICByZXR1cm4gc2VsZi5wZWVyCiAgICAgQF9fcGVlci5zZXR0ZXIKICAgICBkZWYgX19wZWVyKHNlbGYsIHZhbHVlKToKICAgICAgICAgd2FybigiU2V0dGluZyBfX3BlZXIgYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJzZXQgJ3BlZXInIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInNldCAncGVlcicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgc2VsZi5wZWVyID0gdmFsdWUKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBfX2Nvbm4oc2VsZik6CiAgICAgICAgIHdhcm4oIkFjY2VzcyB0byBfX2Nvbm4gYXR0cmlidXRlIG9uIFNNVFBDaGFubmVsIGlzIGRlcHJlY2F0ZWQsICIKLSAgICAgICAgICAgICJ1c2UgJ2Nvbm4nIGluc3RlYWQiLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLCAyKQorICAgICAgICAgICAgInVzZSAnY29ubicgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgcmV0dXJuIHNlbGYuY29ubgogICAgIEBfX2Nvbm4uc2V0dGVyCiAgICAgZGVmIF9fY29ubihzZWxmLCB2YWx1ZSk6CiAgICAgICAgIHdhcm4oIlNldHRpbmcgX19jb25uIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAic2V0ICdjb25uJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJzZXQgJ2Nvbm4nIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHNlbGYuY29ubiA9IHZhbHVlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgX19hZGRyKHNlbGYpOgogICAgICAgICB3YXJuKCJBY2Nlc3MgdG8gX19hZGRyIGF0dHJpYnV0ZSBvbiBTTVRQQ2hhbm5lbCBpcyBkZXByZWNhdGVkLCAiCi0gICAgICAgICAgICAidXNlICdhZGRyJyBpbnN0ZWFkIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICAgICAgICAgICJ1c2UgJ2FkZHInIGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgIHJldHVybiBzZWxmLmFkZHIKICAgICBAX19hZGRyLnNldHRlcgogICAgIGRlZiBfX2FkZHIoc2VsZiwgdmFsdWUpOgogICAgICAgICB3YXJuKCJTZXR0aW5nIF9fYWRkciBhdHRyaWJ1dGUgb24gU01UUENoYW5uZWwgaXMgZGVwcmVjYXRlZCwgIgotICAgICAgICAgICAgInNldCAnYWRkcicgaW5zdGVhZCIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDIpCisgICAgICAgICAgICAic2V0ICdhZGRyJyBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICBzZWxmLmFkZHIgPSB2YWx1ZQogCiAgICAgIyBPdmVycmlkZXMgYmFzZSBjbGFzcyBmb3IgY29udmVuaWVuY2UKQEAgLTI2OCwxNCArMjc5LDE0IEBACiAgICAgZGVmIGNvbGxlY3RfaW5jb21pbmdfZGF0YShzZWxmLCBkYXRhKToKICAgICAgICAgbGltaXQgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkNPTU1BTkQ6Ci0gICAgICAgICAgICBsaW1pdCA9IHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CisgICAgICAgICAgICBsaW1pdCA9IHNlbGYubWF4X2NvbW1hbmRfc2l6ZV9saW1pdAogICAgICAgICBlbGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkRBVEE6CiAgICAgICAgICAgICBsaW1pdCA9IHNlbGYuZGF0YV9zaXplX2xpbWl0CiAgICAgICAgIGlmIGxpbWl0IGFuZCBzZWxmLm51bV9ieXRlcyA+IGxpbWl0OgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGVsaWYgbGltaXQ6CiAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyArPSBsZW4oZGF0YSkKLSAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcy5hcHBlbmQoc3RyKGRhdGEsICJ1dGY4IikpCisgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMuYXBwZW5kKHN0cihkYXRhLCAidXRmLTgiKSkKIAogICAgICMgSW1wbGVtZW50YXRpb24gb2YgYmFzZSBjbGFzcyBhYnN0cmFjdCBtZXRob2QKICAgICBkZWYgZm91bmRfdGVybWluYXRvcihzZWxmKToKQEAgLTI4MywxMSArMjk0LDcgQEAKICAgICAgICAgcHJpbnQoJ0RhdGE6JywgcmVwcihsaW5lKSwgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgc2VsZi5yZWNlaXZlZF9saW5lcyA9IFtdCiAgICAgICAgIGlmIHNlbGYuc210cF9zdGF0ZSA9PSBzZWxmLkNPTU1BTkQ6Ci0gICAgICAgICAgICBpZiBzZWxmLm51bV9ieXRlcyA+IHNlbGYuY29tbWFuZF9zaXplX2xpbWl0OgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBsaW5lIHRvbyBsb25nJykKLSAgICAgICAgICAgICAgICBzZWxmLm51bV9ieXRlcyA9IDAKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHNlbGYubnVtX2J5dGVzID0gMAorICAgICAgICAgICAgc3osIHNlbGYubnVtX2J5dGVzID0gc2VsZi5udW1fYnl0ZXMsIDAKICAgICAgICAgICAgIGlmIG5vdCBsaW5lOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAwIEVycm9yOiBiYWQgc3ludGF4JykKICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTI5OSw5ICszMDYsMTQgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29tbWFuZCA9IGxpbmVbOmldLnVwcGVyKCkKICAgICAgICAgICAgICAgICBhcmcgPSBsaW5lW2krMTpdLnN0cmlwKCkKKyAgICAgICAgICAgIG1heF9zeiA9IChzZWxmLmNvbW1hbmRfc2l6ZV9saW1pdHNbY29tbWFuZF0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cCBlbHNlIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0KQorICAgICAgICAgICAgaWYgc3ogPiBtYXhfc3o6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmcnKQorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihzZWxmLCAnc210cF8nICsgY29tbWFuZCwgTm9uZSkKICAgICAgICAgICAgIGlmIG5vdCBtZXRob2Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDIgRXJyb3I6IGNvbW1hbmQgIiVzIiBub3QgaW1wbGVtZW50ZWQnICUgY29tbWFuZCkKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMCBFcnJvcjogY29tbWFuZCAiJXMiIG5vdCByZWNvZ25pemVkJyAlIGNvbW1hbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBtZXRob2QoYXJnKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0zMTAsMTIgKzMyMiwxMiBAQAogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNDUxIEludGVybmFsIGNvbmZ1c2lvbicpCiAgICAgICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBpZiBzZWxmLm51bV9ieXRlcyA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgaWYgc2VsZi5kYXRhX3NpemVfbGltaXQgYW5kIHNlbGYubnVtX2J5dGVzID4gc2VsZi5kYXRhX3NpemVfbGltaXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCc1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YScpCiAgICAgICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAjIFJlbW92ZSBleHRyYW5lb3VzIGNhcnJpYWdlIHJldHVybnMgYW5kIGRlLXRyYW5zcGFyZW5jeSBhY2NvcmRpbmcKLSAgICAgICAgICAgICMgdG8gUkZDIDgyMSwgU2VjdGlvbiA0LjUuMi4KKyAgICAgICAgICAgICMgdG8gUkZDIDUzMjEsIFNlY3Rpb24gNC41LjIuCiAgICAgICAgICAgICBkYXRhID0gW10KICAgICAgICAgICAgIGZvciB0ZXh0IGluIGxpbmUuc3BsaXQoJ1xyXG4nKToKICAgICAgICAgICAgICAgICBpZiB0ZXh0IGFuZCB0ZXh0WzBdID09ICcuJzoKQEAgLTMzMyw3ICszNDUsNyBAQAogICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCiAgICAgICAgICAgICBzZWxmLnNldF90ZXJtaW5hdG9yKGInXHJcbicpCiAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaChzdGF0dXMpCiAKQEAgLTM0Niw1OCArMzU4LDE4OCBAQAogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRHVwbGljYXRlIEhFTE8vRUhMTycpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSBhcmcKKyAgICAgICAgICAgIHNlbGYuZXh0ZW5kZWRfc210cCA9IEZhbHNlCiAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCAlcycgJSBzZWxmLmZxZG4pCiAKKyAgICBkZWYgc210cF9FSExPKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBhcmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTeW50YXg6IEVITE8gaG9zdG5hbWUnKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIER1cGxpY2F0ZSBIRUxPL0VITE8nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZWVuX2dyZWV0aW5nID0gYXJnCisgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NtdHAgPSBUcnVlCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC0lcycgJSBzZWxmLmZxZG4pCisgICAgICAgICAgICBpZiBzZWxmLmRhdGFfc2l6ZV9saW1pdDoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MC1TSVpFICVzJyAlIHNlbGYuZGF0YV9zaXplX2xpbWl0KQorICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgSEVMUCcpCisKICAgICBkZWYgc210cF9OT09QKHNlbGYsIGFyZyk6CiAgICAgICAgIGlmIGFyZzoKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogTk9PUCcpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9RVUlUKHNlbGYsIGFyZyk6CiAgICAgICAgICMgYXJncyBpcyBpZ25vcmVkCiAgICAgICAgIHNlbGYucHVzaCgnMjIxIEJ5ZScpCiAgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgICMgZmFjdG9yZWQKLSAgICBkZWYgX19nZXRhZGRyKHNlbGYsIGtleXdvcmQsIGFyZyk6Ci0gICAgICAgIGFkZHJlc3MgPSBOb25lCisgICAgZGVmIF9zdHJpcF9jb21tYW5kX2tleXdvcmQoc2VsZiwga2V5d29yZCwgYXJnKToKICAgICAgICAga2V5bGVuID0gbGVuKGtleXdvcmQpCiAgICAgICAgIGlmIGFyZ1s6a2V5bGVuXS51cHBlcigpID09IGtleXdvcmQ6Ci0gICAgICAgICAgICBhZGRyZXNzID0gYXJnW2tleWxlbjpdLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsaWYgYWRkcmVzc1swXSA9PSAnPCcgYW5kIGFkZHJlc3NbLTFdID09ICc+JyBhbmQgYWRkcmVzcyAhPSAnPD4nOgotICAgICAgICAgICAgICAgICMgQWRkcmVzc2VzIGNhbiBiZSBpbiB0aGUgZm9ybSA8cGVyc29uQGRvbS5jb20+IGJ1dCB3YXRjaCBvdXQKLSAgICAgICAgICAgICAgICAjIGZvciBudWxsIGFkZHJlc3MsIGUuZy4gPD4KLSAgICAgICAgICAgICAgICBhZGRyZXNzID0gYWRkcmVzc1sxOi0xXQotICAgICAgICByZXR1cm4gYWRkcmVzcworICAgICAgICAgICAgcmV0dXJuIGFyZ1trZXlsZW46XS5zdHJpcCgpCisgICAgICAgIHJldHVybiAnJworCisgICAgZGVmIF9nZXRhZGRyKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBhcmc6CisgICAgICAgICAgICByZXR1cm4gJycsICcnCisgICAgICAgIGlmIGFyZy5sc3RyaXAoKS5zdGFydHN3aXRoKCc8Jyk6CisgICAgICAgICAgICBhZGRyZXNzLCByZXN0ID0gZ2V0X2FuZ2xlX2FkZHIoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWRkcmVzcywgcmVzdCA9IGdldF9hZGRyX3NwZWMoYXJnKQorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHJldHVybiBhZGRyZXNzLCByZXN0CisgICAgICAgIHJldHVybiBhZGRyZXNzLmFkZHJfc3BlYywgcmVzdAorCisgICAgZGVmIF9nZXRwYXJhbXMoc2VsZiwgcGFyYW1zKToKKyAgICAgICAgIyBSZXR1cm4gYW55IHBhcmFtZXRlcnMgdGhhdCBhcHBlYXIgdG8gYmUgc3ludGFjdGljYWxseSB2YWxpZCBhY2NvcmRpbmcKKyAgICAgICAgIyB0byBSRkMgMTg2OSwgaWdub3JlIGFsbCBvdGhlcnMuICAoUG9zdGVsIHJ1bGU6IGFjY2VwdCB3aGF0IHdlIGNhbi4pCisgICAgICAgIHBhcmFtcyA9IFtwYXJhbS5zcGxpdCgnPScsIDEpIGZvciBwYXJhbSBpbiBwYXJhbXMuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnPScgaW4gcGFyYW1dCisgICAgICAgIHJldHVybiB7azogdiBmb3IgaywgdiBpbiBwYXJhbXMgaWYgay5pc2FsbnVtKCl9CisKKyAgICBkZWYgc210cF9IRUxQKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIGFyZzoKKyAgICAgICAgICAgIGV4dGVuZGVkID0gJyBbU1AgPG1haWwgcGFyYW1ldGVyc10nCisgICAgICAgICAgICBsY19hcmcgPSBhcmcudXBwZXIoKQorICAgICAgICAgICAgaWYgbGNfYXJnID09ICdFSExPJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IEVITE8gaG9zdG5hbWUnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ0hFTE8nOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogSEVMTyBob3N0bmFtZScpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnTUFJTCc6CisgICAgICAgICAgICAgICAgbXNnID0gJzI1MCBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JworICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICAgICAgbXNnICs9IGV4dGVuZGVkCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKG1zZykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdSQ1BUJzoKKyAgICAgICAgICAgICAgICBtc2cgPSAnMjUwIFN5bnRheDogUkNQVCBUTzogPGFkZHJlc3M+JworICAgICAgICAgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgICAgICAgICAgbXNnICs9IGV4dGVuZGVkCisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKG1zZykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdEQVRBJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IERBVEEnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1JTRVQnOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogUlNFVCcpCisgICAgICAgICAgICBlbGlmIGxjX2FyZyA9PSAnTk9PUCc6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKCcyNTAgU3ludGF4OiBOT09QJykKKyAgICAgICAgICAgIGVsaWYgbGNfYXJnID09ICdRVUlUJzoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MCBTeW50YXg6IFFVSVQnKQorICAgICAgICAgICAgZWxpZiBsY19hcmcgPT0gJ1ZSRlknOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN5bnRheDogVlJGWSA8YWRkcmVzcz4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMSBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnMjUwIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCBEQVRBICcKKyAgICAgICAgICAgICAgICAgICAgICAnUlNFVCBOT09QIFFVSVQgVlJGWScpCisKKyAgICBkZWYgc210cF9WUkZZKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIGFyZzoKKyAgICAgICAgICAgIGFkZHJlc3MsIHBhcmFtcyA9IHNlbGYuX2dldGFkZHIoYXJnKQorICAgICAgICAgICAgaWYgYWRkcmVzczoKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goJzI1MiBDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmQgYXR0ZW1wdCBkZWxpdmVyeScpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAyIENvdWxkIG5vdCBWUkZZICVzJyAlIGFyZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAxIFN5bnRheDogVlJGWSA8YWRkcmVzcz4nKQogCiAgICAgZGVmIHNtdHBfTUFJTChzZWxmLCBhcmcpOgorICAgICAgICBpZiBub3Qgc2VsZi5zZWVuX2dyZWV0aW5nOgorICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IHNlbmQgSEVMTyBmaXJzdCcpOworICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHByaW50KCc9PT0+IE1BSUwnLCBhcmcsIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIGFkZHJlc3MgPSBzZWxmLl9fZ2V0YWRkcignRlJPTTonLCBhcmcpIGlmIGFyZyBlbHNlIE5vbmUKKyAgICAgICAgc3ludGF4ZXJyID0gJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+JworICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICBzeW50YXhlcnIgKz0gJyBbU1AgPG1haWwtcGFyYW1ldGVycz5dJworICAgICAgICBpZiBhcmcgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgYXJnID0gc2VsZi5fc3RyaXBfY29tbWFuZF9rZXl3b3JkKCdGUk9NOicsIGFyZykKKyAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCiAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgotICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+JykKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IHNlbGYuZXh0ZW5kZWRfc210cCBhbmQgcGFyYW1zOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBub3QgYWRkcmVzczoKKyAgICAgICAgICAgIHNlbGYucHVzaChzeW50YXhlcnIpCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgc2VsZi5tYWlsZnJvbToKICAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBuZXN0ZWQgTUFJTCBjb21tYW5kJykKICAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXJhbXMgPSBzZWxmLl9nZXRwYXJhbXMocGFyYW1zLnVwcGVyKCkpCisgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzaXplID0gcGFyYW1zLnBvcCgnU0laRScsIE5vbmUpCisgICAgICAgIGlmIHNpemU6CisgICAgICAgICAgICBpZiBub3Qgc2l6ZS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsaWYgc2VsZi5kYXRhX3NpemVfbGltaXQgYW5kIGludChzaXplKSA+IHNlbGYuZGF0YV9zaXplX2xpbWl0OgorICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnNTUyIEVycm9yOiBtZXNzYWdlIHNpemUgZXhjZWVkcyBmaXhlZCBtYXhpbXVtIG1lc3NhZ2Ugc2l6ZScpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGxlbihwYXJhbXMua2V5cygpKSA+IDA6CisgICAgICAgICAgICBzZWxmLnB1c2goJzU1NSBNQUlMIEZST00gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYubWFpbGZyb20gPSBhZGRyZXNzCiAgICAgICAgIHByaW50KCdzZW5kZXI6Jywgc2VsZi5tYWlsZnJvbSwgZmlsZT1ERUJVR1NUUkVBTSkKLSAgICAgICAgc2VsZi5wdXNoKCcyNTAgT2snKQorICAgICAgICBzZWxmLnB1c2goJzI1MCBPSycpCiAKICAgICBkZWYgc210cF9SQ1BUKHNlbGYsIGFyZyk6CisgICAgICAgIGlmIG5vdCBzZWxmLnNlZW5fZ3JlZXRpbmc6CisgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0Jyk7CisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgcHJpbnQoJz09PT4gUkNQVCcsIGFyZywgZmlsZT1ERUJVR1NUUkVBTSkKICAgICAgICAgaWYgbm90IHNlbGYubWFpbGZyb206CiAgICAgICAgICAgICBzZWxmLnB1c2goJzUwMyBFcnJvcjogbmVlZCBNQUlMIGNvbW1hbmQnKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGFkZHJlc3MgPSBzZWxmLl9fZ2V0YWRkcignVE86JywgYXJnKSBpZiBhcmcgZWxzZSBOb25lCisgICAgICAgIHN5bnRheGVyciA9ICc1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nCisgICAgICAgIGlmIHNlbGYuZXh0ZW5kZWRfc210cDoKKyAgICAgICAgICAgIHN5bnRheGVyciArPSAnIFtTUCA8bWFpbC1wYXJhbWV0ZXJzPl0nCisgICAgICAgIGlmIGFyZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBhcmcgPSBzZWxmLl9zdHJpcF9jb21tYW5kX2tleXdvcmQoJ1RPOicsIGFyZykKKyAgICAgICAgYWRkcmVzcywgcGFyYW1zID0gc2VsZi5fZ2V0YWRkcihhcmcpCisgICAgICAgIGlmIG5vdCBhZGRyZXNzOgorICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBwYXJhbXM6CisgICAgICAgICAgICBpZiBzZWxmLmV4dGVuZGVkX3NtdHA6CisgICAgICAgICAgICAgICAgcGFyYW1zID0gc2VsZi5fZ2V0cGFyYW1zKHBhcmFtcy51cHBlcigpKQorICAgICAgICAgICAgICAgIGlmIHBhcmFtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5wdXNoKHN5bnRheGVycikKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgbm90IGFkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnB1c2goc3ludGF4ZXJyKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIHBhcmFtcyBhbmQgbGVuKHBhcmFtcy5rZXlzKCkpID4gMDoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTU1IFJDUFQgVE8gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBhZGRyZXNzOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4nKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYucmNwdHRvcy5hcHBlbmQoYWRkcmVzcykKICAgICAgICAgcHJpbnQoJ3JlY2lwczonLCBzZWxmLnJjcHR0b3MsIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIHNlbGYucHVzaCgnMjUwIE9rJykKKyAgICAgICAgc2VsZi5wdXNoKCcyNTAgT0snKQogCiAgICAgZGVmIHNtdHBfUlNFVChzZWxmLCBhcmcpOgogICAgICAgICBpZiBhcmc6CkBAIC00MDgsOSArNTUwLDEyIEBACiAgICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCiAgICAgICAgIHNlbGYucmVjZWl2ZWRfZGF0YSA9ICcnCiAgICAgICAgIHNlbGYuc210cF9zdGF0ZSA9IHNlbGYuQ09NTUFORAotICAgICAgICBzZWxmLnB1c2goJzI1MCBPaycpCisgICAgICAgIHNlbGYucHVzaCgnMjUwIE9LJykKIAogICAgIGRlZiBzbXRwX0RBVEEoc2VsZiwgYXJnKToKKyAgICAgICAgaWYgbm90IHNlbGYuc2Vlbl9ncmVldGluZzoKKyAgICAgICAgICAgIHNlbGYucHVzaCgnNTAzIEVycm9yOiBzZW5kIEhFTE8gZmlyc3QnKTsKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3Qgc2VsZi5yY3B0dG9zOgogICAgICAgICAgICAgc2VsZi5wdXNoKCc1MDMgRXJyb3I6IG5lZWQgUkNQVCBjb21tYW5kJykKICAgICAgICAgICAgIHJldHVybgpAQCAtNDIxLDE1ICs1NjYsMjAgQEAKICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4uXHJcbicpCiAgICAgICAgIHNlbGYucHVzaCgnMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj4nKQogCisgICAgIyBDb21tYW5kcyB0aGF0IGhhdmUgbm90IGJlZW4gaW1wbGVtZW50ZWQKKyAgICBkZWYgc210cF9FWFBOKHNlbGYsIGFyZyk6CisgICAgICAgIHNlbGYucHVzaCgnNTAyIEVYUE4gbm90IGltcGxlbWVudGVkJykKIAotDAorCiBjbGFzcyBTTVRQU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgogICAgICMgU01UUENoYW5uZWwgY2xhc3MgdG8gdXNlIGZvciBtYW5hZ2luZyBjbGllbnQgY29ubmVjdGlvbnMKICAgICBjaGFubmVsX2NsYXNzID0gU01UUENoYW5uZWwKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2NhbGFkZHIsIHJlbW90ZWFkZHIsCisgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZV9saW1pdD1EQVRBX1NJWkVfREVGQVVMVCk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgorICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyLl9faW5pdF9fKHNlbGYpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpAQCAtNDQ3LDcgKzU5Nyw3IEBACiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgogICAgICAgICBwcmludCgnSW5jb21pbmcgY29ubmVjdGlvbiBmcm9tICVzJyAlIHJlcHIoYWRkciksIGZpbGU9REVCVUdTVFJFQU0pCi0gICAgICAgIGNoYW5uZWwgPSBzZWxmLmNoYW5uZWxfY2xhc3Moc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyLCBzZWxmLmRhdGFfc2l6ZV9saW1pdCkKIAogICAgICMgQVBJIGZvciAiZG9pbmcgc29tZXRoaW5nIHVzZWZ1bCB3aXRoIHRoZSBtZXNzYWdlIgogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgpAQCAtNDc1LDcgKzYyNSw2IEBACiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogCi0MCiBjbGFzcyBEZWJ1Z2dpbmdTZXJ2ZXIoU01UUFNlcnZlcik6CiAgICAgIyBEbyBzb21ldGhpbmcgd2l0aCB0aGUgZ2F0aGVyZWQgbWVzc2FnZQogICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgcGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEpOgpAQCAtNDkxLDcgKzY0MCw2IEBACiAgICAgICAgIHByaW50KCctLS0tLS0tLS0tLS0gRU5EIE1FU1NBR0UgLS0tLS0tLS0tLS0tJykKIAogCi0MCiBjbGFzcyBQdXJlUHJveHkoU01UUFNlcnZlcik6CiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdCgnXG4nKQpAQCAtNTMyLDcgKzY4MCw2IEBACiAgICAgICAgIHJldHVybiByZWZ1c2VkCiAKIAotDAogY2xhc3MgTWFpbG1hblByb3h5KFB1cmVQcm94eSk6CiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCkBAIC02MTEsMTkgKzc1OCwxOCBAQAogICAgICAgICAgICAgICAgIG1zZy5FbnF1ZXVlKG1saXN0LCB0b3JlcXVlc3Q9MSkKIAogCi0MCiBjbGFzcyBPcHRpb25zOgogICAgIHNldHVpZCA9IDEKICAgICBjbGFzc25hbWUgPSAnUHVyZVByb3h5JworICAgIHNpemVfbGltaXQgPSBOb25lCiAKIAotDAogZGVmIHBhcnNlYXJncygpOgogICAgIGdsb2JhbCBERUJVR1NUUkVBTQogICAgIHRyeToKICAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoCi0gICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOmQnLAotICAgICAgICAgICAgWydjbGFzcz0nLCAnbm9zZXR1aWQnLCAndmVyc2lvbicsICdoZWxwJywgJ2RlYnVnJ10pCisgICAgICAgICAgICBzeXMuYXJndlsxOl0sICduVmhjOnM6ZCcsCisgICAgICAgICAgICBbJ2NsYXNzPScsICdub3NldHVpZCcsICd2ZXJzaW9uJywgJ2hlbHAnLCAnc2l6ZT0nLCAnZGVidWcnXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIGU6CiAgICAgICAgIHVzYWdlKDEsIGUpCiAKQEAgLTY0MCw2ICs3ODYsMTMgQEAKICAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NuYW1lID0gYXJnCiAgICAgICAgIGVsaWYgb3B0IGluICgnLWQnLCAnLS1kZWJ1ZycpOgogICAgICAgICAgICAgREVCVUdTVFJFQU0gPSBzeXMuc3RkZXJyCisgICAgICAgIGVsaWYgb3B0IGluICgnLXMnLCAnLS1zaXplJyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW50X3NpemUgPSBpbnQoYXJnKQorICAgICAgICAgICAgICAgIG9wdGlvbnMuc2l6ZV9saW1pdCA9IGludF9zaXplCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcHJpbnQoJ0ludmFsaWQgc2l6ZTogJyArIGFyZywgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICAjIHBhcnNlIHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudHMKICAgICBpZiBsZW4oYXJncykgPCAxOgpAQCAtNjc0LDcgKzgyNyw2IEBACiAgICAgcmV0dXJuIG9wdGlvbnMKIAogCi0MCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG9wdGlvbnMgPSBwYXJzZWFyZ3MoKQogICAgICMgQmVjb21lIG5vYm9keQpAQCAtNjg3LDcgKzgzOSw4IEBACiAgICAgICAgIGltcG9ydCBfX21haW5fXyBhcyBtb2QKICAgICBjbGFzc18gPSBnZXRhdHRyKG1vZCwgY2xhc3NuYW1lKQogICAgIHByb3h5ID0gY2xhc3NfKChvcHRpb25zLmxvY2FsaG9zdCwgb3B0aW9ucy5sb2NhbHBvcnQpLAotICAgICAgICAgICAgICAgICAgIChvcHRpb25zLnJlbW90ZWhvc3QsIG9wdGlvbnMucmVtb3RlcG9ydCkpCisgICAgICAgICAgICAgICAgICAgKG9wdGlvbnMucmVtb3RlaG9zdCwgb3B0aW9ucy5yZW1vdGVwb3J0KSwKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zLnNpemVfbGltaXQpCiAgICAgaWYgb3B0aW9ucy5zZXR1aWQ6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCBwd2QKZGlmZiAtLWdpdCBhL0xpYi9zbXRwbGliLnB5IGIvTGliL3NtdHBsaWIucHkKaW5kZXggZmJlZjk2ZS4uZDM3YjBlMiAxMDA2NDQKLS0tIGEvTGliL3NtdHBsaWIucHkKKysrIGIvTGliL3NtdHBsaWIucHkKQEAgLTEzMywyNCArMTMzLDE4IEBACiAgICAgY29tYmluYXRpb24gcHJvdmlkZWQuCiAgICAgIiIiCiAKLWRlZiBxdW90ZWFkZHIoYWRkcik6CitkZWYgcXVvdGVhZGRyKGFkZHJzdHJpbmcpOgogICAgICIiIlF1b3RlIGEgc3Vic2V0IG9mIHRoZSBlbWFpbCBhZGRyZXNzZXMgZGVmaW5lZCBieSBSRkMgODIxLgogCiAgICAgU2hvdWxkIGJlIGFibGUgdG8gaGFuZGxlIGFueXRoaW5nIGVtYWlsLnV0aWxzLnBhcnNlYWRkciBjYW4gaGFuZGxlLgogICAgICIiIgotICAgIG0gPSAoTm9uZSwgTm9uZSkKLSAgICB0cnk6Ci0gICAgICAgIG0gPSBlbWFpbC51dGlscy5wYXJzZWFkZHIoYWRkcilbMV0KLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICBpZiBtID09IChOb25lLCBOb25lKTogICMgSW5kaWNhdGVzIHBhcnNlIGZhaWx1cmUgb3IgQXR0cmlidXRlRXJyb3IKLSAgICAgICAgIyBzb21ldGhpbmcgd2VpcmQgaGVyZS4uIHB1bnQgLWRkbQotICAgICAgICByZXR1cm4gIjwlcz4iICUgYWRkcgotICAgIGVsaWYgbSBpcyBOb25lOgotICAgICAgICAjIHRoZSBzZW5kZXIgd2FudHMgYW4gZW1wdHkgcmV0dXJuIGFkZHJlc3MKLSAgICAgICAgcmV0dXJuICI8PiIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIjwlcz4iICUgbQorICAgIGRpc3BsYXluYW1lLCBhZGRyID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHJzdHJpbmcpCisgICAgaWYgKGRpc3BsYXluYW1lLCBhZGRyKSA9PSAoJycsICcnKToKKyAgICAgICAgIyBwYXJzZWFkZHIgY291bGRuJ3QgcGFyc2UgaXQsIHVzZSBpdCBhcyBpcyBhbmQgaG9wZSBmb3IgdGhlIGJlc3QuCisgICAgICAgIGlmIGFkZHJzdHJpbmcuc3RyaXAoKS5zdGFydHN3aXRoKCc8Jyk6CisgICAgICAgICAgICByZXR1cm4gYWRkcnN0cmluZworICAgICAgICByZXR1cm4gIjwlcz4iICUgYWRkcnN0cmluZworICAgIHJldHVybiAiPCVzPiIgJSBhZGRyCiAKIGRlZiBfYWRkcl9vbmx5KGFkZHJzdHJpbmcpOgogICAgIGRpc3BsYXluYW1lLCBhZGRyID0gZW1haWwudXRpbHMucGFyc2VhZGRyKGFkZHJzdHJpbmcpCkBAIC0xODAsMjcgKzE3NCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgX2hhdmVfc3NsID0gRmFsc2UKIGVsc2U6Ci0gICAgY2xhc3MgU1NMRmFrZUZpbGU6Ci0gICAgICAgICIiIkEgZmFrZSBmaWxlIGxpa2Ugb2JqZWN0IHRoYXQgcmVhbGx5IHdyYXBzIGEgU1NMT2JqZWN0LgotCi0gICAgICAgIEl0IG9ubHkgc3VwcG9ydHMgd2hhdCBpcyBuZWVkZWQgaW4gc210cGxpYi4KLSAgICAgICAgIiIiCi0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmopOgotICAgICAgICAgICAgc2VsZi5zc2xvYmogPSBzc2xvYmoKLQotICAgICAgICBkZWYgcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgICAgICBzdHIgPSBiIiIKLSAgICAgICAgICAgIGNociA9IE5vbmUKLSAgICAgICAgICAgIHdoaWxlIGNociAhPSBiIlxuIjoKLSAgICAgICAgICAgICAgICBjaHIgPSBzZWxmLnNzbG9iai5yZWFkKDEpCi0gICAgICAgICAgICAgICAgaWYgbm90IGNocjoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzdHIgKz0gY2hyCi0gICAgICAgICAgICByZXR1cm4gc3RyCi0KLSAgICAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAgICAgcGFzcwotCiAgICAgX2hhdmVfc3NsID0gVHJ1ZQogCiAKQEAgLTI0Miw3ICsyMTUsOCBAQAogICAgIGRlZmF1bHRfcG9ydCA9IFNNVFBfUE9SVAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9MCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICB0aW1lb3V0PXNvY2tldC5fR0xPQkFMX0RFRkFVTFRfVElNRU9VVCwKKyAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5zdGFuY2UuCiAKICAgICAgICAgSWYgc3BlY2lmaWVkLCBgaG9zdCcgaXMgdGhlIG5hbWUgb2YgdGhlIHJlbW90ZSBob3N0IHRvIHdoaWNoIHRvCkBAIC0yNTAsMTEgKzIyNCwxNiBAQAogICAgICAgICBCeSBkZWZhdWx0LCBzbXRwbGliLlNNVFBfUE9SVCBpcyB1c2VkLiAgQW4gU01UUENvbm5lY3RFcnJvciBpcyByYWlzZWQKICAgICAgICAgaWYgdGhlIHNwZWNpZmllZCBgaG9zdCcgZG9lc24ndCByZXNwb25kIGNvcnJlY3RseS4gIElmIHNwZWNpZmllZCwKICAgICAgICAgYGxvY2FsX2hvc3RuYW1lYCBpcyB1c2VkIGFzIHRoZSBGUUROIG9mIHRoZSBsb2NhbCBob3N0LiAgQnkgZGVmYXVsdCwKLSAgICAgICAgdGhlIGxvY2FsIGhvc3RuYW1lIGlzIGZvdW5kIHVzaW5nIHNvY2tldC5nZXRmcWRuKCkuCisgICAgICAgIHRoZSBsb2NhbCBob3N0bmFtZSBpcyBmb3VuZCB1c2luZyBzb2NrZXQuZ2V0ZnFkbigpLiBUaGUKKyAgICAgICAgYHNvdXJjZV9hZGRyZXNzYCBwYXJhbWV0ZXIgdGFrZXMgYSAyLXR1cGxlIChob3N0LCBwb3J0KSBmb3IgdGhlIHNvY2tldAorICAgICAgICB0byBiaW5kIHRvIGFzIGl0cyBzb3VyY2UgYWRkcmVzcyBiZWZvcmUgY29ubmVjdGluZy4gSWYgdGhlIGhvc3QgaXMgJycKKyAgICAgICAgYW5kIHBvcnQgaXMgMCwgdGhlIE9TIGRlZmF1bHQgYmVoYXZpb3Igd2lsbCBiZSB1c2VkLgogCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYuZXNtdHBfZmVhdHVyZXMgPSB7fQorICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKKwogICAgICAgICBpZiBob3N0OgogICAgICAgICAgICAgKGNvZGUsIG1zZykgPSBzZWxmLmNvbm5lY3QoaG9zdCwgcG9ydCkKICAgICAgICAgICAgIGlmIGNvZGUgIT0gMjIwOgpAQCAtMjc3LDYgKzI1NiwxOSBAQAogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9ob3N0bmFtZSA9ICdbJXNdJyAlIGFkZHIKIAorICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb2RlLCBtZXNzYWdlID0gc2VsZi5kb2NtZCgiUVVJVCIpCisgICAgICAgICAgICBpZiBjb2RlICE9IDIyMToKKyAgICAgICAgICAgICAgICByYWlzZSBTTVRQUmVzcG9uc2VFeGNlcHRpb24oY29kZSwgbWVzc2FnZSkKKyAgICAgICAgZXhjZXB0IFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQ6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKwogICAgIGRlZiBzZXRfZGVidWdsZXZlbChzZWxmLCBkZWJ1Z2xldmVsKToKICAgICAgICAgIiIiU2V0IHRoZSBkZWJ1ZyBvdXRwdXQgbGV2ZWwuCiAKQEAgLTI5MCwxMCArMjgyLDEyIEBACiAgICAgICAgICMgVGhpcyBtYWtlcyBpdCBzaW1wbGVyIGZvciBTTVRQX1NTTCB0byB1c2UgdGhlIFNNVFAgY29ubmVjdCBjb2RlCiAgICAgICAgICMgYW5kIGp1c3QgYWx0ZXIgdGhlIHNvY2tldCBjb25uZWN0aW9uIGJpdC4KICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCi0gICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0KQorICAgICAgICAgICAgcHJpbnQoJ2Nvbm5lY3Q6IHRvJywgKGhvc3QsIHBvcnQpLCBzZWxmLnNvdXJjZV9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zdGRlcnIpCisgICAgICAgIHJldHVybiBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKGhvc3QsIHBvcnQpLCB0aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc291cmNlX2FkZHJlc3MpCiAKLSAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTApOgorICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkNvbm5lY3QgdG8gYSBob3N0IG9uIGEgZ2l2ZW4gcG9ydC4KIAogICAgICAgICBJZiB0aGUgaG9zdG5hbWUgZW5kcyB3aXRoIGEgY29sb24gKGA6JykgZm9sbG93ZWQgYnkgYSBudW1iZXIsIGFuZApAQCAtMzA0LDYgKzI5OCwxMCBAQAogICAgICAgICBzcGVjaWZpZWQgZHVyaW5nIGluc3RhbnRpYXRpb24uCiAKICAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc291cmNlX2FkZHJlc3M6CisgICAgICAgICAgICBzZWxmLnNvdXJjZV9hZGRyZXNzID0gc291cmNlX2FkZHJlc3MKKwogICAgICAgICBpZiBub3QgcG9ydCBhbmQgKGhvc3QuZmluZCgnOicpID09IGhvc3QucmZpbmQoJzonKSk6CiAgICAgICAgICAgICBpID0gaG9zdC5yZmluZCgnOicpCiAgICAgICAgICAgICBpZiBpID49IDA6CkBAIC0zMTcsNiArMzE1LDcgQEAKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgIHByaW50KCdjb25uZWN0OicsIChob3N0LCBwb3J0KSwgZmlsZT1zdGRlcnIpCiAgICAgICAgIHNlbGYuc29jayA9IHNlbGYuX2dldF9zb2NrZXQoaG9zdCwgcG9ydCwgc2VsZi50aW1lb3V0KQorICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5nZXRyZXBseSgpCiAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICBwcmludCgiY29ubmVjdDoiLCBtc2csIGZpbGU9c3RkZXJyKQpAQCAtMzg4LDcgKzM4Nyw4IEBACiAKICAgICAgICAgZXJybXNnID0gYiJcbiIuam9pbihyZXNwKQogICAgICAgICBpZiBzZWxmLmRlYnVnbGV2ZWwgPiAwOgotICAgICAgICAgICAgcHJpbnQoJ3JlcGx5OiByZXRjb2RlICglcyk7IE1zZzogJXMnICUgKGVycmNvZGUsIGVycm1zZyksIGZpbGU9c3RkZXJyKQorICAgICAgICAgICAgcHJpbnQoJ3JlcGx5OiByZXRjb2RlICglcyk7IE1zZzogJXMnICUgKGVycmNvZGUsIGVycm1zZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zdGRlcnIpCiAgICAgICAgIHJldHVybiBlcnJjb2RlLCBlcnJtc2cKIAogICAgIGRlZiBkb2NtZChzZWxmLCBjbWQsIGFyZ3M9IiIpOgpAQCAtNjMyLDcgKzYzMiw3IEBACiAgICAgICAgICMgV2UgY291bGQgbm90IGxvZ2luIHN1Y2Vzc2Z1bGx5LiBSZXR1cm4gcmVzdWx0IG9mIGxhc3QgYXR0ZW1wdC4KICAgICAgICAgcmFpc2UgU01UUEF1dGhlbnRpY2F0aW9uRXJyb3IoY29kZSwgcmVzcCkKIAotICAgIGRlZiBzdGFydHRscyhzZWxmLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUpOgorICAgIGRlZiBzdGFydHRscyhzZWxmLCBrZXlmaWxlPU5vbmUsIGNlcnRmaWxlPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICIiIlB1dHMgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIFNNVFAgc2VydmVyIGludG8gVExTIG1vZGUuCiAKICAgICAgICAgSWYgdGhlcmUgaGFzIGJlZW4gbm8gcHJldmlvdXMgRUhMTyBvciBIRUxPIGNvbW1hbmQgdGhpcyBzZXNzaW9uLCB0aGlzCkBAIC02NTYsOCArNjU2LDE3IEBACiAgICAgICAgIGlmIHJlc3AgPT0gMjIwOgogICAgICAgICAgICAgaWYgbm90IF9oYXZlX3NzbDoKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk5vIFNTTCBzdXBwb3J0IGluY2x1ZGVkIGluIHRoaXMgUHl0aG9uIikKLSAgICAgICAgICAgIHNlbGYuc29jayA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2ssIGtleWZpbGUsIGNlcnRmaWxlKQotICAgICAgICAgICAgc2VsZi5maWxlID0gU1NMRmFrZUZpbGUoc2VsZi5zb2NrKQorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHNlbGYuc29jaykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc3NsLndyYXBfc29ja2V0KHNlbGYuc29jaywga2V5ZmlsZSwgY2VydGZpbGUpCisgICAgICAgICAgICBzZWxmLmZpbGUgPSBOb25lCiAgICAgICAgICAgICAjIFJGQyAzMjA3OgogICAgICAgICAgICAgIyBUaGUgY2xpZW50IE1VU1QgZGlzY2FyZCBhbnkga25vd2xlZGdlIG9idGFpbmVkIGZyb20KICAgICAgICAgICAgICMgdGhlIHNlcnZlciwgc3VjaCBhcyB0aGUgbGlzdCBvZiBTTVRQIHNlcnZpY2UgZXh0ZW5zaW9ucywKQEAgLTc4Niw3ICs3OTUsOCBAQAogICAgICAgICAjIFRPRE8gaW1wbGVtZW50IGhldXJpc3RpY3MgdG8gZ3Vlc3MgdGhlIGNvcnJlY3QgUmVzZW50LSogYmxvY2sgd2l0aCBhbgogICAgICAgICAjIG9wdGlvbiBhbGxvd2luZyB0aGUgdXNlciB0byBlbmFibGUgdGhlIGhldXJpc3RpY3MuICAoSXQgc2hvdWxkIGJlCiAgICAgICAgICMgcG9zc2libGUgdG8gZ3Vlc3MgY29ycmVjdGx5IGFsbW9zdCBhbGwgb2YgdGhlIHRpbWUuKQotICAgICAgICByZXNlbnQgPW1zZy5nZXRfYWxsKCdSZXNlbnQtRGF0ZScpCisKKyAgICAgICAgcmVzZW50ID0gbXNnLmdldF9hbGwoJ1Jlc2VudC1EYXRlJykKICAgICAgICAgaWYgcmVzZW50IGlzIE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJfcHJlZml4ID0gJycKICAgICAgICAgZWxpZiBsZW4ocmVzZW50KSA9PSAxOgpAQCAtNzk1LDEzICs4MDUsMTMgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm1lc3NhZ2UgaGFzIG1vcmUgdGhhbiBvbmUgJ1Jlc2VudC0nIGhlYWRlciBibG9jayIpCiAgICAgICAgIGlmIGZyb21fYWRkciBpcyBOb25lOgogICAgICAgICAgICAgIyBQcmVmZXIgdGhlIHNlbmRlciBmaWVsZCBwZXIgUkZDIDI4MjI6My42LjIuCi0gICAgICAgICAgICBmcm9tX2FkZHIgPSAobXNnW2hlYWRlcl9wcmVmaXgrJ1NlbmRlciddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX3ByZWZpeCsnU2VuZGVyJykgaW4gbXNnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIG1zZ1toZWFkZXJfcHJlZml4KydGcm9tJ10pCisgICAgICAgICAgICBmcm9tX2FkZHIgPSAobXNnW2hlYWRlcl9wcmVmaXggKyAnU2VuZGVyJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfcHJlZml4ICsgJ1NlbmRlcicpIGluIG1zZworICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBtc2dbaGVhZGVyX3ByZWZpeCArICdGcm9tJ10pCiAgICAgICAgIGlmIHRvX2FkZHJzIGlzIE5vbmU6Ci0gICAgICAgICAgICBhZGRyX2ZpZWxkcyA9IFtmIGZvciBmIGluIChtc2dbaGVhZGVyX3ByZWZpeCsnVG8nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4KydCY2MnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4KydDYyddKSBpZiBmIGlzIG5vdCBOb25lXQorICAgICAgICAgICAgYWRkcl9maWVsZHMgPSBbZiBmb3IgZiBpbiAobXNnW2hlYWRlcl9wcmVmaXggKyAnVG8nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1toZWFkZXJfcHJlZml4ICsgJ0JjYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2hlYWRlcl9wcmVmaXggKyAnQ2MnXSkgaWYgZiBpcyBub3QgTm9uZV0KICAgICAgICAgICAgIHRvX2FkZHJzID0gW2FbMV0gZm9yIGEgaW4gZW1haWwudXRpbHMuZ2V0YWRkcmVzc2VzKGFkZHJfZmllbGRzKV0KICAgICAgICAgIyBNYWtlIGEgbG9jYWwgY29weSBzbyB3ZSBjYW4gZGVsZXRlIHRoZSBiY2MgaGVhZGVycy4KICAgICAgICAgbXNnX2NvcHkgPSBjb3B5LmNvcHkobXNnKQpAQCAtODM1LDI2ICs4NDUsNDEgQEAKICAgICAgICAgIiIiIFRoaXMgaXMgYSBzdWJjbGFzcyBkZXJpdmVkIGZyb20gU01UUCB0aGF0IGNvbm5lY3RzIG92ZXIgYW4gU1NMIGVuY3J5cHRlZAogICAgICAgICBzb2NrZXQgKHRvIHVzZSB0aGlzIGNsYXNzIHlvdSBuZWVkIGEgc29ja2V0IG1vZHVsZSB0aGF0IHdhcyBjb21waWxlZCB3aXRoIFNTTAogICAgICAgICBzdXBwb3J0KS4gSWYgaG9zdCBpcyBub3Qgc3BlY2lmaWVkLCAnJyAodGhlIGxvY2FsIGhvc3QpIGlzIHVzZWQuIElmIHBvcnQgaXMKLSAgICAgICAgb21pdHRlZCwgdGhlIHN0YW5kYXJkIFNNVFAtb3Zlci1TU0wgcG9ydCAoNDY1KSBpcyB1c2VkLiBrZXlmaWxlIGFuZCBjZXJ0ZmlsZQorICAgICAgICBvbWl0dGVkLCB0aGUgc3RhbmRhcmQgU01UUC1vdmVyLVNTTCBwb3J0ICg0NjUpIGlzIHVzZWQuIFRoZSBvcHRpb25hbAorICAgICAgICBzb3VyY2VfYWRkcmVzcyB0YWtlcyBhIHR3by10dXBsZSAoaG9zdCxwb3J0KSBmb3Igc29ja2V0IHRvIGJpbmQgdG8uIGtleWZpbGUgYW5kIGNlcnRmaWxlCiAgICAgICAgIGFyZSBhbHNvIG9wdGlvbmFsIC0gdGhleSBjYW4gY29udGFpbiBhIFBFTSBmb3JtYXR0ZWQgcHJpdmF0ZSBrZXkgYW5kCi0gICAgICAgIGNlcnRpZmljYXRlIGNoYWluIGZpbGUgZm9yIHRoZSBTU0wgY29ubmVjdGlvbi4KKyAgICAgICAgY2VydGlmaWNhdGUgY2hhaW4gZmlsZSBmb3IgdGhlIFNTTCBjb25uZWN0aW9uLiBjb250ZXh0IGFsc28gb3B0aW9uYWwsIGNhbiBjb250YWluCisgICAgICAgIGEgU1NMQ29udGV4dCwgYW5kIGlzIGFuIGFsdGVybmF0aXZlIHRvIGtleWZpbGUgYW5kIGNlcnRmaWxlOyBJZiBpdCBpcyBzcGVjaWZpZWQgYm90aAorICAgICAgICBrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBtdXN0IGJlIE5vbmUuCiAgICAgICAgICIiIgogCiAgICAgICAgIGRlZmF1bHRfcG9ydCA9IFNNVFBfU1NMX1BPUlQKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nJywgcG9ydD0wLCBsb2NhbF9ob3N0bmFtZT1Ob25lLAogICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1Ob25lLCBjZXJ0ZmlsZT1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQpOgorICAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBrZXlmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCisgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCi0gICAgICAgICAgICBTTVRQLl9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGxvY2FsX2hvc3RuYW1lLCB0aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4dAorICAgICAgICAgICAgU01UUC5fX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0LCBsb2NhbF9ob3N0bmFtZSwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3MpCiAKICAgICAgICAgZGVmIF9nZXRfc29ja2V0KHNlbGYsIGhvc3QsIHBvcnQsIHRpbWVvdXQpOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgICAgICBwcmludCgnY29ubmVjdDonLCAoaG9zdCwgcG9ydCksIGZpbGU9c3RkZXJyKQotICAgICAgICAgICAgbmV3X3NvY2tldCA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaG9zdCwgcG9ydCksIHRpbWVvdXQpCi0gICAgICAgICAgICBuZXdfc29ja2V0ID0gc3NsLndyYXBfc29ja2V0KG5ld19zb2NrZXQsIHNlbGYua2V5ZmlsZSwgc2VsZi5jZXJ0ZmlsZSkKLSAgICAgICAgICAgIHNlbGYuZmlsZSA9IFNTTEZha2VGaWxlKG5ld19zb2NrZXQpCisgICAgICAgICAgICBuZXdfc29ja2V0ID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChob3N0LCBwb3J0KSwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zb3VyY2VfYWRkcmVzcykKKyAgICAgICAgICAgIGlmIHNlbGYuY29udGV4dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBuZXdfc29ja2V0ID0gc2VsZi5jb250ZXh0LndyYXBfc29ja2V0KG5ld19zb2NrZXQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5ld19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQobmV3X3NvY2tldCwgc2VsZi5rZXlmaWxlLCBzZWxmLmNlcnRmaWxlKQogICAgICAgICAgICAgcmV0dXJuIG5ld19zb2NrZXQKIAogICAgIF9fYWxsX18uYXBwZW5kKCJTTVRQX1NTTCIpCkBAIC04NzksMTggKzkwNCwyMSBAQAogCiAgICAgZWhsb19tc2cgPSAibGhsbyIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PScnLCBwb3J0PUxNVFBfUE9SVCwgbG9jYWxfaG9zdG5hbWU9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLAorICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemUgYSBuZXcgaW5zdGFuY2UuIiIiCi0gICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWUpCisgICAgICAgIFNNVFAuX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCwgbG9jYWxfaG9zdG5hbWU9bG9jYWxfaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9c291cmNlX2FkZHJlc3MpCiAKLSAgICBkZWYgY29ubmVjdChzZWxmLCBob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTApOgorICAgIGRlZiBjb25uZWN0KHNlbGYsIGhvc3Q9J2xvY2FsaG9zdCcsIHBvcnQ9MCwgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgICAgICIiIkNvbm5lY3QgdG8gdGhlIExNVFAgZGFlbW9uLCBvbiBlaXRoZXIgYSBVbml4IG9yIGEgVENQIHNvY2tldC4iIiIKICAgICAgICAgaWYgaG9zdFswXSAhPSAnLyc6Ci0gICAgICAgICAgICByZXR1cm4gU01UUC5jb25uZWN0KHNlbGYsIGhvc3QsIHBvcnQpCisgICAgICAgICAgICByZXR1cm4gU01UUC5jb25uZWN0KHNlbGYsIGhvc3QsIHBvcnQsIHNvdXJjZV9hZGRyZXNzPXNvdXJjZV9hZGRyZXNzKQogCiAgICAgICAgICMgSGFuZGxlIFVuaXgtZG9tYWluIHNvY2tldHMuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNlbGYuZmlsZSA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuc29jay5jb25uZWN0KGhvc3QpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGVhNTZhNjcuLmQ0ZjFiNjUgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtMTIsNiArMTIsNyBAQAogc29ja2V0KCkgLS0gY3JlYXRlIGEgbmV3IHNvY2tldCBvYmplY3QKIHNvY2tldHBhaXIoKSAtLSBjcmVhdGUgYSBwYWlyIG9mIG5ldyBzb2NrZXQgb2JqZWN0cyBbKl0KIGZyb21mZCgpIC0tIGNyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBbKl0KK2Zyb21zaGFyZSgpIC0tIGNyZWF0ZSBhIHNvY2tldCBvYmplY3QgZnJvbSBkYXRhIHJlY2VpdmVkIGZyb20gc29ja2V0LnNoYXJlKCkgWypdCiBnZXRob3N0bmFtZSgpIC0tIHJldHVybiB0aGUgY3VycmVudCBob3N0bmFtZQogZ2V0aG9zdGJ5bmFtZSgpIC0tIG1hcCBhIGhvc3RuYW1lIHRvIGl0cyBJUCBudW1iZXIKIGdldGhvc3RieWFkZHIoKSAtLSBtYXAgYW4gSVAgbnVtYmVyIG9yIGhvc3RuYW1lIHRvIEROUyBpbmZvCkBAIC01Myw3ICs1NCw2IEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZXJybm8gPSBOb25lCiBFQkFERiA9IGdldGF0dHIoZXJybm8sICdFQkFERicsIDkpCi1FSU5UUiA9IGdldGF0dHIoZXJybm8sICdFSU5UUicsIDQpCiBFQUdBSU4gPSBnZXRhdHRyKGVycm5vLCAnRUFHQUlOJywgMTEpCiBFV09VTERCTE9DSyA9IGdldGF0dHIoZXJybm8sICdFV09VTERCTE9DSycsIDExKQogCkBAIC0xMTIsNiArMTEyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc1s3Ol0pCiAgICAgICAgIHJldHVybiBzCiAKKyAgICBkZWYgX19nZXRzdGF0ZV9fKHNlbGYpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbm5vdCBzZXJpYWxpemUgc29ja2V0IG9iamVjdCIpCisKICAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICAiIiJkdXAoKSAtPiBzb2NrZXQgb2JqZWN0CiAKQEAgLTIwNyw3ICsyMTAsNiBAQAogICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCiAgICAgICAgIHJldHVybiBzdXBlcigpLmRldGFjaCgpCiAKLQogZGVmIGZyb21mZChmZCwgZmFtaWx5LCB0eXBlLCBwcm90bz0wKToKICAgICAiIiIgZnJvbWZkKGZkLCBmYW1pbHksIHR5cGVbLCBwcm90b10pIC0+IHNvY2tldCBvYmplY3QKIApAQCAtMjE3LDYgKzIxOSwxNCBAQAogICAgIG5mZCA9IGR1cChmZCkKICAgICByZXR1cm4gc29ja2V0KGZhbWlseSwgdHlwZSwgcHJvdG8sIG5mZCkKIAoraWYgaGFzYXR0cihfc29ja2V0LnNvY2tldCwgInNoYXJlIik6CisgICAgZGVmIGZyb21zaGFyZShpbmZvKToKKyAgICAgICAgIiIiIGZyb21zaGFyZShpbmZvKSAtPiBzb2NrZXQgb2JqZWN0CisKKyAgICAgICAgQ3JlYXRlIGEgc29ja2V0IG9iamVjdCBmcm9tIGEgdGhlIGJ5dGVzIG9iamVjdCByZXR1cm5lZCBieQorICAgICAgICBzb2NrZXQuc2hhcmUocGlkKS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzb2NrZXQoMCwgMCwgMCwgaW5mbykKIAogaWYgaGFzYXR0cihfc29ja2V0LCAic29ja2V0cGFpciIpOgogCkBAIC0yODgsMTEgKzI5OCwxMCBAQAogICAgICAgICAgICAgZXhjZXB0IHRpbWVvdXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5fdGltZW91dF9vY2N1cnJlZCA9IFRydWUKICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0IEludGVycnVwdGVkRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGV4Y2VwdCBlcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIG4gPSBlLmFyZ3NbMF0KLSAgICAgICAgICAgICAgICBpZiBuID09IEVJTlRSOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG4gaW4gX2Jsb2NraW5nX2Vycm5vczoKKyAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gaW4gX2Jsb2NraW5nX2Vycm5vczoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgICAgICByYWlzZQogCmRpZmYgLS1naXQgYS9MaWIvc29ja2V0c2VydmVyLnB5IGIvTGliL3NvY2tldHNlcnZlci5weQppbmRleCBhZGY5ZjM4Li5hMjEzMThkIDEwMDY0NAotLS0gYS9MaWIvc29ja2V0c2VydmVyLnB5CisrKyBiL0xpYi9zb2NrZXRzZXJ2ZXIucHkKQEAgLTE1Myw4ICsxNTMsOCBAQAogICAgIHdoaWxlIFRydWU6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBleGNlcHQgKE9TRXJyb3IsIHNlbGVjdC5lcnJvcikgYXMgZToKLSAgICAgICAgICAgIGlmIGUuYXJnc1swXSAhPSBlcnJuby5FSU5UUjoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgcmFpc2UKIAogY2xhc3MgQmFzZVNlcnZlcjoKQEAgLTE4MCw2ICsxODAsNyBAQAogICAgIC0gcHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogICAgIC0gc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogICAgIC0gY2xvc2VfcmVxdWVzdChyZXF1ZXN0KQorICAgIC0gc2VydmljZV9hY3Rpb25zKCkKICAgICAtIGhhbmRsZV9lcnJvcigpCiAKICAgICBNZXRob2RzIGZvciBkZXJpdmVkIGNsYXNzZXM6CkBAIC0yMzYsNiArMjM3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGxfaW50ZXJ2YWwpCiAgICAgICAgICAgICAgICAgaWYgc2VsZiBpbiByOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfcmVxdWVzdF9ub2Jsb2NrKCkKKworICAgICAgICAgICAgICAgIHNlbGYuc2VydmljZV9hY3Rpb25zKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX19zaHV0ZG93bl9yZXF1ZXN0ID0gRmFsc2UKICAgICAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24uc2V0KCkKQEAgLTI1MCw2ICsyNTMsMTQgQEAKICAgICAgICAgc2VsZi5fX3NodXRkb3duX3JlcXVlc3QgPSBUcnVlCiAgICAgICAgIHNlbGYuX19pc19zaHV0X2Rvd24ud2FpdCgpCiAKKyAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHNlcnZlX2ZvcmV2ZXIoKSBsb29wLgorCisgICAgICAgIE1heSBiZSBvdmVycmlkZGVuIGJ5IGEgc3ViY2xhc3MgLyBNaXhpbiB0byBpbXBsZW1lbnQgYW55IGNvZGUgdGhhdAorICAgICAgICBuZWVkcyB0byBiZSBydW4gZHVyaW5nIHRoZSBsb29wLgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcworCiAgICAgIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBoYW5kbGluZywgZ2V0dGluZywgcHJvY2Vzc2luZyBhbmQKICAgICAjIGZpbmlzaGluZyBhIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgICMKQEAgLTU1MCw5ICs1NjEsMTUgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCiAKKyAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgorCisgICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCisKICAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCiAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQogICAgICAgICBpZiBwaWQ6CiAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCkBAIC01NjAsNiArNTc3LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IFtdCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hcHBlbmQocGlkKQogICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KICAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDIwMmJkMzguLmI3ZWMxYWQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMSw0ICsxLDQgQEAKLSMtKi0gY29kaW5nOiBJU08tODg1OS0xIC0qLQorIy0qLSBjb2Rpbmc6IGlzby04ODU5LTEgLSotCiAjIHB5c3FsaXRlMi90ZXN0L2RiYXBpLnB5OiB0ZXN0cyBmb3IgREItQVBJIGNvbXBsaWFuY2UKICMKICMgQ29weXJpZ2h0IChDKSAyMDA0LTIwMTAgR2VyaGFyZCBI5HJpbmcgPGdoQGdoYWVyaW5nLmRlPgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9mYWN0b3J5LnB5CmluZGV4IDdmNmYzNDcuLjllODMzYWUgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZmFjdG9yeS5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L2ZhY3RvcnkucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9mYWN0b3J5LnB5OiB0ZXN0cyBmb3IgdGhlIHZhcmlvdXMgZmFjdG9yaWVzIGluIHB5c3FsaXRlCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTE3OCw2ICsxNzgsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUocm93WzBdLmVuZHN3aXRoKCJyZWljaCIpLCAiY29sdW1uIG11c3QgY29udGFpbiBvcmlnaW5hbCBkYXRhIikKIAogICAgIGRlZiBDaGVja09wdGltaXplZFVuaWNvZGUoc2VsZik6CisgICAgICAgICMgSW4gcHkzaywgc3RyIG9iamVjdHMgYXJlIGFsd2F5cyByZXR1cm5lZCB3aGVuIHRleHRfZmFjdG9yeQorICAgICAgICAjIGlzIE9wdGltaXplZFVuaWNvZGUKICAgICAgICAgc2VsZi5jb24udGV4dF9mYWN0b3J5ID0gc3FsaXRlLk9wdGltaXplZFVuaWNvZGUKICAgICAgICAgYXVzdHJpYSA9ICLWc3RlcnJlaWNoIgogICAgICAgICBnZXJtYW55ID0gIkRldXRjaGxhbmQiCmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9ob29rcy5weQppbmRleCBhOTJlODM4Li4zZGM0NGY2IDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L2hvb2tzLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvaG9va3MucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9ob29rcy5weTogdGVzdHMgZm9yIHZhcmlvdXMgU1FMaXRlLXNwZWNpZmljIGhvb2tzCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNi0yMDA3IEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KQEAgLTE3NiwxMCArMTc2LDYwIEBACiAgICAgICAgIGNvbi5leGVjdXRlKCJzZWxlY3QgMSB1bmlvbiBzZWxlY3QgMiB1bmlvbiBzZWxlY3QgMyIpLmZldGNoYWxsKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3Rpb24sIDAsICJwcm9ncmVzcyBoYW5kbGVyIHdhcyBub3QgY2xlYXJlZCIpCiAKK2NsYXNzIFRyYWNlQ2FsbGJhY2tUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIENoZWNrVHJhY2VDYWxsYmFja1VzZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHRyYWNlIGNhbGxiYWNrIGlzIGludm9rZWQgb25jZSBpdCBpcyBzZXQuCisgICAgICAgICIiIgorICAgICAgICBjb24gPSBzcWxpdGUuY29ubmVjdCgiOm1lbW9yeToiKQorICAgICAgICB0cmFjZWRfc3RhdGVtZW50cyA9IFtdCisgICAgICAgIGRlZiB0cmFjZShzdGF0ZW1lbnQpOgorICAgICAgICAgICAgdHJhY2VkX3N0YXRlbWVudHMuYXBwZW5kKHN0YXRlbWVudCkKKyAgICAgICAgY29uLnNldF90cmFjZV9jYWxsYmFjayh0cmFjZSkKKyAgICAgICAgY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSBmb28oYSwgYikiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodHJhY2VkX3N0YXRlbWVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhbnkoImNyZWF0ZSB0YWJsZSBmb28iIGluIHN0bXQgZm9yIHN0bXQgaW4gdHJhY2VkX3N0YXRlbWVudHMpKQorCisgICAgZGVmIENoZWNrQ2xlYXJUcmFjZUNhbGxiYWNrKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHNldHRpbmcgdGhlIHRyYWNlIGNhbGxiYWNrIHRvIE5vbmUgY2xlYXJzIHRoZSBwcmV2aW91c2x5IHNldCBjYWxsYmFjay4KKyAgICAgICAgIiIiCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKE5vbmUpCisgICAgICAgIGNvbi5leGVjdXRlKCJjcmVhdGUgdGFibGUgZm9vKGEsIGIpIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0cmFjZWRfc3RhdGVtZW50cywgInRyYWNlIGNhbGxiYWNrIHdhcyBub3QgY2xlYXJlZCIpCisKKyAgICBkZWYgQ2hlY2tVbmljb2RlQ29udGVudChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgc3RhdGVtZW50IGNhbiBjb250YWluIHVuaWNvZGUgbGl0ZXJhbHMuCisgICAgICAgICIiIgorICAgICAgICB1bmljb2RlX3ZhbHVlID0gJ1x4ZjZceGU0XHhmY1x4ZDZceGM0XHhkY1x4ZGZcdTIwYWMnCisgICAgICAgIGNvbiA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCisgICAgICAgIHRyYWNlZF9zdGF0ZW1lbnRzID0gW10KKyAgICAgICAgZGVmIHRyYWNlKHN0YXRlbWVudCk6CisgICAgICAgICAgICB0cmFjZWRfc3RhdGVtZW50cy5hcHBlbmQoc3RhdGVtZW50KQorICAgICAgICBjb24uc2V0X3RyYWNlX2NhbGxiYWNrKHRyYWNlKQorICAgICAgICBjb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIGZvbyh4KSIpCisgICAgICAgICMgQ2FuJ3QgZXhlY3V0ZSBib3VuZCBwYXJhbWV0ZXJzIGFzIHRoZWlyIHZhbHVlcyBkb24ndCBhcHBlYXIKKyAgICAgICAgIyBpbiB0cmFjZWQgc3RhdGVtZW50cyBiZWZvcmUgU1FMaXRlIDMuNi4yMQorICAgICAgICAjIChjZi4gaHR0cDovL3d3dy5zcWxpdGUub3JnL2RyYWZ0L3JlbGVhc2Vsb2cvM182XzIxLmh0bWwpCisgICAgICAgIGNvbi5leGVjdXRlKCdpbnNlcnQgaW50byBmb28oeCkgdmFsdWVzICgiJXMiKScgJSB1bmljb2RlX3ZhbHVlKQorICAgICAgICBjb24uY29tbWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFueSh1bmljb2RlX3ZhbHVlIGluIHN0bXQgZm9yIHN0bXQgaW4gdHJhY2VkX3N0YXRlbWVudHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVuaWNvZGUgZGF0YSAlcyBnYXJibGVkIGluIHRyYWNlIGNhbGxiYWNrOiAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGFzY2lpKHVuaWNvZGVfdmFsdWUpLCAnLCAnLmpvaW4obWFwKGFzY2lpLCB0cmFjZWRfc3RhdGVtZW50cykpKSkKKworCisKIGRlZiBzdWl0ZSgpOgogICAgIGNvbGxhdGlvbl9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShDb2xsYXRpb25UZXN0cywgIkNoZWNrIikKICAgICBwcm9ncmVzc19zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShQcm9ncmVzc1Rlc3RzLCAiQ2hlY2siKQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGNvbGxhdGlvbl9zdWl0ZSwgcHJvZ3Jlc3Nfc3VpdGUpKQorICAgIHRyYWNlX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYWNlQ2FsbGJhY2tUZXN0cywgIkNoZWNrIikKKyAgICByZXR1cm4gdW5pdHRlc3QuVGVzdFN1aXRlKChjb2xsYXRpb25fc3VpdGUsIHByb2dyZXNzX3N1aXRlLCB0cmFjZV9zdWl0ZSkpCiAKIGRlZiB0ZXN0KCk6CiAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CmluZGV4IGM3NTUxZTMuLjlkN2IyNzYgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC9yZWdyZXNzaW9uLnB5OiBweXNxbGl0ZSByZWdyZXNzaW9uIHRlc3RzCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNi0yMDEwIEdlcmhhcmQgSORyaW5nIDxnaEBnaGFlcmluZy5kZT4KZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKaW5kZXggNzBlOTZhMS4uZmViNGZhMSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC90cmFuc2FjdGlvbnMucHk6IHRlc3RzIHRyYW5zYWN0aW9ucwogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwNyBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CmRpZmYgLS1naXQgYS9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQppbmRleCAyOTQxM2UxLi4zYjRjYjZkIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CisrKyBiL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC90eXBlcy5weTogdGVzdHMgZm9yIHR5cGUgY29udmVyc2lvbiBhbmQgZGV0ZWN0aW9uCiAjCiAjIENvcHlyaWdodCAoQykgMjAwNSBHZXJoYXJkIEjkcmluZyA8Z2hAZ2hhZXJpbmcuZGU+CkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKF92YWwsIGJ5dGVzKToKICAgICAgICAgICAgICAgICAjIHNxbGl0ZTMgYWx3YXlzIGNhbGxzIF9faW5pdF9fIHdpdGggYSBieXRlcyBjcmVhdGVkIGZyb20gYQogICAgICAgICAgICAgICAgICMgVVRGLTggc3RyaW5nIHdoZW4gX19jb25mb3JtX18gd2FzIHVzZWQgdG8gc3RvcmUgdGhlIG9iamVjdC4KLSAgICAgICAgICAgICAgICBfdmFsID0gX3ZhbC5kZWNvZGUoJ3V0ZjgnKQorICAgICAgICAgICAgICAgIF92YWwgPSBfdmFsLmRlY29kZSgndXRmLTgnKQogICAgICAgICAgICAgc2VsZi52YWwgPSBfdmFsCiAKICAgICAgICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC91c2VyZnVuY3Rpb25zLnB5CmluZGV4IGUwMTM0MWUuLjE0ZjZiNjUgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvdXNlcmZ1bmN0aW9ucy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3VzZXJmdW5jdGlvbnMucHkKQEAgLTEsNCArMSw0IEBACi0jLSotIGNvZGluZzogSVNPLTg4NTktMSAtKi0KKyMtKi0gY29kaW5nOiBpc28tODg1OS0xIC0qLQogIyBweXNxbGl0ZTIvdGVzdC91c2VyZnVuY3Rpb25zLnB5OiB0ZXN0cyBmb3IgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQKICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlcy4KICMKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCBmNTJlYTAxLi43NWYzYTA5IDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC0zMTgsMTEgKzMxOCwxMyBAQAogICAgICAgICAgICAgICAgICMgWFhYOiBjb3VsZCBleHBhbmQgY2F0ZWdvcnkKICAgICAgICAgICAgICAgICByZXR1cm4gY2hhcnNldCAjIGNhbm5vdCBjb21wcmVzcwogICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAjIG5vbi1CTVAgY2hhcmFjdGVycworICAgICAgICAjIG5vbi1CTVAgY2hhcmFjdGVyczsgWFhYIG5vdyB0aGV5IHNob3VsZCB3b3JrCiAgICAgICAgIHJldHVybiBjaGFyc2V0CiAgICAgaWYgbmVnYXRlOgogICAgICAgICBpZiBzeXMubWF4dW5pY29kZSAhPSA2NTUzNToKICAgICAgICAgICAgICMgWFhYOiBuZWdhdGlvbiBkb2VzIG5vdCB3b3JrIHdpdGggYmlnIGNoYXJzZXRzCisgICAgICAgICAgICAjIFhYWDI6IG5vdyB0aGV5IHNob3VsZCB3b3JrLCBidXQgcmVtb3ZpbmcgdGhpcyB3aWxsIG1ha2UgdGhlCisgICAgICAgICAgICAjIGNoYXJtYXAgMTcgdGltZXMgYmlnZ2VyCiAgICAgICAgICAgICByZXR1cm4gY2hhcnNldAogICAgICAgICBmb3IgaSBpbiByYW5nZSg2NTUzNik6CiAgICAgICAgICAgICBjaGFybWFwW2ldID0gbm90IGNoYXJtYXBbaV0KZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IDEzNzM3Y2EuLmQzNTg2NDYgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtMTc3LDYgKzE3Nyw3IEBACiAKIGNsYXNzIFRva2VuaXplcjoKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaW5nKToKKyAgICAgICAgc2VsZi5pc3RleHQgPSBpc2luc3RhbmNlKHN0cmluZywgc3RyKQogICAgICAgICBzZWxmLnN0cmluZyA9IHN0cmluZwogICAgICAgICBzZWxmLmluZGV4ID0gMAogICAgICAgICBzZWxmLl9fbmV4dCgpCkBAIC0xODcsMTQgKzE4OCwxNCBAQAogICAgICAgICBjaGFyID0gc2VsZi5zdHJpbmdbc2VsZi5pbmRleDpzZWxmLmluZGV4KzFdCiAgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciB0aGUgc3RyOCwgc2luY2UgaW5kZXhpbmcgcmV0dXJucyBhIGludGVnZXIKICAgICAgICAgIyBYWFggVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3IgdGVzdF9idWdfOTI2MDc1IGluIHRlc3RfcmUucHkKLSAgICAgICAgaWYgY2hhciBhbmQgaXNpbnN0YW5jZShjaGFyLCBieXRlcyk6CisgICAgICAgIGlmIGNoYXIgYW5kIG5vdCBzZWxmLmlzdGV4dDoKICAgICAgICAgICAgIGNoYXIgPSBjaHIoY2hhclswXSkKICAgICAgICAgaWYgY2hhciA9PSAiXFwiOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGMgPSBzZWxmLnN0cmluZ1tzZWxmLmluZGV4ICsgMV0KICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGUgKGVuZCBvZiBsaW5lKSIpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuc3RyaW5nLCBieXRlcyk6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc3RleHQ6CiAgICAgICAgICAgICAgICAgYyA9IGNocihjKQogICAgICAgICAgICAgY2hhciA9IGNoYXIgKyBjCiAgICAgICAgIHNlbGYuaW5kZXggPSBzZWxmLmluZGV4ICsgbGVuKGNoYXIpCkBAIC0yMDksNiArMjEwLDE1IEBACiAgICAgICAgIHRoaXMgPSBzZWxmLm5leHQKICAgICAgICAgc2VsZi5fX25leHQoKQogICAgICAgICByZXR1cm4gdGhpcworICAgIGRlZiBnZXR3aGlsZShzZWxmLCBuLCBjaGFyc2V0KToKKyAgICAgICAgcmVzdWx0ID0gJycKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBjID0gc2VsZi5uZXh0CisgICAgICAgICAgICBpZiBjIG5vdCBpbiBjaGFyc2V0OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICByZXN1bHQgKz0gYworICAgICAgICAgICAgc2VsZi5fX25leHQoKQorICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmluZGV4LCBzZWxmLm5leHQKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6CkBAIC0yNDEsMjAgKzI1MSwzMCBAQAogICAgICAgICBjID0gZXNjYXBlWzE6Ml0KICAgICAgICAgaWYgYyA9PSAieCI6CiAgICAgICAgICAgICAjIGhleGFkZWNpbWFsIGVzY2FwZSAoZXhhY3RseSB0d28gZGlnaXRzKQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gSEVYRElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCi0gICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGVbMjpdCi0gICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9yKCJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoIlxcIiArIGVzY2FwZSkpCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZSwgMTYpICYgMHhmZgorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSA0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzI6XSwgMTYpICYgMHhmZgorICAgICAgICBlbGlmIGMgPT0gInUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBmb3VyIGRpZ2l0cykKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoNCwgSEVYRElHSVRTKQorICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNjoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICBlbGlmIGMgPT0gIlUiIGFuZCBzb3VyY2UuaXN0ZXh0OgorICAgICAgICAgICAgIyB1bmljb2RlIGVzY2FwZSAoZXhhY3RseSBlaWdodCBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDgsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDEwOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgIGMgPSBpbnQoZXNjYXBlWzI6XSwgMTYpCisgICAgICAgICAgICBjaHIoYykgIyByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkIGNvZGUKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBjCiAgICAgICAgIGVsaWYgYyBpbiBPQ1RESUdJVFM6CiAgICAgICAgICAgICAjIG9jdGFsIGVzY2FwZSAodXAgdG8gdGhyZWUgZGlnaXRzKQotICAgICAgICAgICAgd2hpbGUgc291cmNlLm5leHQgaW4gT0NURElHSVRTIGFuZCBsZW4oZXNjYXBlKSA8IDQ6Ci0gICAgICAgICAgICAgICAgZXNjYXBlID0gZXNjYXBlICsgc291cmNlLmdldCgpCi0gICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGVbMTpdCi0gICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZSwgOCkgJiAweGZmCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDIsIE9DVERJR0lUUykKKyAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBpbnQoZXNjYXBlWzE6XSwgOCkgJiAweGZmCiAgICAgICAgIGVsaWYgYyBpbiBESUdJVFM6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcigiYm9ndXMgZXNjYXBlOiAlcyIgJSByZXByKGVzY2FwZSkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKQEAgLTI3MywxNSArMjkzLDI3IEBACiAgICAgICAgIGMgPSBlc2NhcGVbMToyXQogICAgICAgICBpZiBjID09ICJ4IjoKICAgICAgICAgICAgICMgaGV4YWRlY2ltYWwgZXNjYXBlCi0gICAgICAgICAgICB3aGlsZSBzb3VyY2UubmV4dCBpbiBIRVhESUdJVFMgYW5kIGxlbihlc2NhcGUpIDwgNDoKLSAgICAgICAgICAgICAgICBlc2NhcGUgPSBlc2NhcGUgKyBzb3VyY2UuZ2V0KCkKKyAgICAgICAgICAgIGVzY2FwZSArPSBzb3VyY2UuZ2V0d2hpbGUoMiwgSEVYRElHSVRTKQogICAgICAgICAgICAgaWYgbGVuKGVzY2FwZSkgIT0gNDoKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsyOl0sIDE2KSAmIDB4ZmYKKyAgICAgICAgZWxpZiBjID09ICJ1IiBhbmQgc291cmNlLmlzdGV4dDoKKyAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZm91ciBkaWdpdHMpCisgICAgICAgICAgICBlc2NhcGUgKz0gc291cmNlLmdldHdoaWxlKDQsIEhFWERJR0lUUykKKyAgICAgICAgICAgIGlmIGxlbihlc2NhcGUpICE9IDY6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIGludChlc2NhcGVbMjpdLCAxNikKKyAgICAgICAgZWxpZiBjID09ICJVIiBhbmQgc291cmNlLmlzdGV4dDoKKyAgICAgICAgICAgICMgdW5pY29kZSBlc2NhcGUgKGV4YWN0bHkgZWlnaHQgZGlnaXRzKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSg4LCBIRVhESUdJVFMpCisgICAgICAgICAgICBpZiBsZW4oZXNjYXBlKSAhPSAxMDoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBjID0gaW50KGVzY2FwZVsyOl0sIDE2KQorICAgICAgICAgICAgY2hyKGMpICMgcmFpc2UgVmFsdWVFcnJvciBmb3IgaW52YWxpZCBjb2RlCisgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgYwogICAgICAgICBlbGlmIGMgPT0gIjAiOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUKLSAgICAgICAgICAgIHdoaWxlIHNvdXJjZS5uZXh0IGluIE9DVERJR0lUUyBhbmQgbGVuKGVzY2FwZSkgPCA0OgotICAgICAgICAgICAgICAgIGVzY2FwZSA9IGVzY2FwZSArIHNvdXJjZS5nZXQoKQorICAgICAgICAgICAgZXNjYXBlICs9IHNvdXJjZS5nZXR3aGlsZSgyLCBPQ1RESUdJVFMpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgaW50KGVzY2FwZVsxOl0sIDgpICYgMHhmZgogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgIyBvY3RhbCBlc2NhcGUgKm9yKiBkZWNpbWFsIGdyb3VwIHJlZmVyZW5jZSAoc2lnaCkKQEAgLTc5MSw3ICs4MjMsNyBAQAogICAgIGVsc2U6CiAgICAgICAgICMgVGhlIHRva2VuaXplciBpbXBsaWNpdGx5IGRlY29kZXMgYnl0ZXMgb2JqZWN0cyBhcyBsYXRpbi0xLCB3ZSBtdXN0CiAgICAgICAgICMgdGhlcmVmb3JlIHJlLWVuY29kZSB0aGUgZmluYWwgcmVwcmVzZW50YXRpb24uCi0gICAgICAgIGVuY29kZSA9IGxhbWJkYSB4OiB4LmVuY29kZSgnbGF0aW4xJykKKyAgICAgICAgZW5jb2RlID0gbGFtYmRhIHg6IHguZW5jb2RlKCdsYXRpbi0xJykKICAgICBmb3IgYywgcyBpbiBwOgogICAgICAgICBpZiBjIGlzIE1BUks6CiAgICAgICAgICAgICBncm91cHNhcHBlbmQoKGksIHMpKQpkaWZmIC0tZ2l0IGEvTGliL3NzbC5weSBiL0xpYi9zc2wucHkKaW5kZXggODEzNzIzMS4uMzE2MmY1NiAxMDA2NDQKLS0tIGEvTGliL3NzbC5weQorKysgYi9MaWIvc3NsLnB5CkBAIC02MCwxMCArNjAsMjUgQEAKIGltcG9ydCBfc3NsICAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgaW1wb3J0IGl0LCBsZXQgdGhlIGVycm9yIHByb3BhZ2F0ZQogCiBmcm9tIF9zc2wgaW1wb3J0IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIsIE9QRU5TU0xfVkVSU0lPTl9JTkZPLCBPUEVOU1NMX1ZFUlNJT04KLWZyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIFNTTEVycm9yCitmcm9tIF9zc2wgaW1wb3J0IF9TU0xDb250ZXh0Citmcm9tIF9zc2wgaW1wb3J0ICgKKyAgICBTU0xFcnJvciwgU1NMWmVyb1JldHVybkVycm9yLCBTU0xXYW50UmVhZEVycm9yLCBTU0xXYW50V3JpdGVFcnJvciwKKyAgICBTU0xTeXNjYWxsRXJyb3IsIFNTTEVPRkVycm9yLAorICAgICkKIGZyb20gX3NzbCBpbXBvcnQgQ0VSVF9OT05FLCBDRVJUX09QVElPTkFMLCBDRVJUX1JFUVVJUkVECi1mcm9tIF9zc2wgaW1wb3J0IE9QX0FMTCwgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19UTFN2MQotZnJvbSBfc3NsIGltcG9ydCBSQU5EX3N0YXR1cywgUkFORF9lZ2QsIFJBTkRfYWRkCitmcm9tIF9zc2wgaW1wb3J0ICgKKyAgICBPUF9BTEwsIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fVExTdjEsCisgICAgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLCBPUF9TSU5HTEVfREhfVVNFCisgICAgKQordHJ5OgorICAgIGZyb20gX3NzbCBpbXBvcnQgT1BfTk9fQ09NUFJFU1NJT04KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCit0cnk6CisgICAgZnJvbSBfc3NsIGltcG9ydCBPUF9TSU5HTEVfRUNESF9VU0UKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitmcm9tIF9zc2wgaW1wb3J0IFJBTkRfc3RhdHVzLCBSQU5EX2VnZCwgUkFORF9hZGQsIFJBTkRfYnl0ZXMsIFJBTkRfcHNldWRvX2J5dGVzCiBmcm9tIF9zc2wgaW1wb3J0ICgKICAgICBTU0xfRVJST1JfWkVST19SRVRVUk4sCiAgICAgU1NMX0VSUk9SX1dBTlRfUkVBRCwKQEAgLTc1LDggKzkwLDkgQEAKICAgICBTU0xfRVJST1JfRU9GLAogICAgIFNTTF9FUlJPUl9JTlZBTElEX0VSUk9SX0NPREUsCiAgICAgKQotZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JCi1mcm9tIF9zc2wgaW1wb3J0IFBST1RPQ09MX1NTTHYzLCBQUk9UT0NPTF9TU0x2MjMsIFBST1RPQ09MX1RMU3YxCitmcm9tIF9zc2wgaW1wb3J0IEhBU19TTkksIEhBU19FQ0RILCBIQVNfTlBOCitmcm9tIF9zc2wgaW1wb3J0IChQUk9UT0NPTF9TU0x2MywgUFJPVE9DT0xfU1NMdjIzLAorICAgICAgICAgICAgICAgICAgUFJPVE9DT0xfVExTdjEpCiBmcm9tIF9zc2wgaW1wb3J0IF9PUEVOU1NMX0FQSV9WRVJTSU9OCiAKIF9QUk9UT0NPTF9OQU1FUyA9IHsKQEAgLTk0LDExICsxMTAsMTYgQEAKIAogZnJvbSBzb2NrZXQgaW1wb3J0IGdldG5hbWVpbmZvIGFzIF9nZXRuYW1laW5mbwogZnJvbSBzb2NrZXQgaW1wb3J0IGVycm9yIGFzIHNvY2tldF9lcnJvcgotZnJvbSBzb2NrZXQgaW1wb3J0IHNvY2tldCwgQUZfSU5FVCwgU09DS19TVFJFQU0KK2Zyb20gc29ja2V0IGltcG9ydCBzb2NrZXQsIEFGX0lORVQsIFNPQ0tfU1RSRUFNLCBjcmVhdGVfY29ubmVjdGlvbgogaW1wb3J0IGJhc2U2NCAgICAgICAgIyBmb3IgREVSLXRvLVBFTSB0cmFuc2xhdGlvbgogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGVycm5vCiAKK2lmIF9zc2wuSEFTX1RMU19VTklRVUU6CisgICAgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTID0gWyd0bHMtdW5pcXVlJ10KK2Vsc2U6CisgICAgQ0hBTk5FTF9CSU5ESU5HX1RZUEVTID0gW10KKwogIyBEaXNhYmxlIHdlYWsgb3IgaW5zZWN1cmUgY2lwaGVycyBieSBkZWZhdWx0CiAjIChPcGVuU1NMJ3MgZGVmYXVsdCBzZXR0aW5nIGlzICdERUZBVUxUOiFhTlVMTDohZU5VTEwnKQogX0RFRkFVTFRfQ0lQSEVSUyA9ICdERUZBVUxUOiFhTlVMTDohZU5VTEw6IUxPVzohRVhQT1JUOiFTU0x2MicKQEAgLTE4OCw2ICsyMDksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9c2VydmVyX2hvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0PXNlbGYpCiAKKyAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CisgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCisgICAgICAgIGZvciBwcm90b2NvbCBpbiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgYiA9IGJ5dGVzKHByb3RvY29sLCAnYXNjaWknKQorICAgICAgICAgICAgaWYgbGVuKGIpID09IDAgb3IgbGVuKGIpID4gMjU1OgorICAgICAgICAgICAgICAgIHJhaXNlIFNTTEVycm9yKCdOUE4gcHJvdG9jb2xzIG11c3QgYmUgMSB0byAyNTUgaW4gbGVuZ3RoJykKKyAgICAgICAgICAgIHByb3Rvcy5hcHBlbmQobGVuKGIpKQorICAgICAgICAgICAgcHJvdG9zLmV4dGVuZChiKQorCisgICAgICAgIHNlbGYuX3NldF9ucG5fcHJvdG9jb2xzKHByb3RvcykKKwogCiBjbGFzcyBTU0xTb2NrZXQoc29ja2V0KToKICAgICAiIiJUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBzdWJ0eXBlIG9mIHNvY2tldC5zb2NrZXQgdGhhdCB3cmFwcwpAQCAtMTk5LDcgKzIzMSw3IEBACiAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPVBST1RPQ09MX1NTTHYyMywgY2FfY2VydHM9Tm9uZSwKICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZmFtaWx5PUFGX0lORVQsIHR5cGU9U09DS19TVFJFQU0sIHByb3RvPTAsIGZpbGVubz1Ob25lLAotICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBjaXBoZXJzPU5vbmUsCisgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsIG5wbl9wcm90b2NvbHM9Tm9uZSwgY2lwaGVycz1Ob25lLAogICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSk6CiAKQEAgLTIxOSw2ICsyNTEsOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCiAgICAgICAgICAgICBpZiBjZXJ0ZmlsZToKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQubG9hZF9jZXJ0X2NoYWluKGNlcnRmaWxlLCBrZXlmaWxlKQorICAgICAgICAgICAgaWYgbnBuX3Byb3RvY29sczoKKyAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X25wbl9wcm90b2NvbHMobnBuX3Byb3RvY29scykKICAgICAgICAgICAgIGlmIGNpcGhlcnM6CiAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnNldF9jaXBoZXJzKGNpcGhlcnMpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCkBAIC0zMTksNiArMzUzLDEzIEBACiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5wZWVyX2NlcnRpZmljYXRlKGJpbmFyeV9mb3JtKQogCisgICAgZGVmIHNlbGVjdGVkX25wbl9wcm90b2NvbChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQorICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqIG9yIG5vdCBfc3NsLkhBU19OUE46CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZWxlY3RlZF9ucG5fcHJvdG9jb2woKQorCiAgICAgZGVmIGNpcGhlcihzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBub3Qgc2VsZi5fc3Nsb2JqOgpAQCAtMzI2LDYgKzM2NywxMyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jaXBoZXIoKQogCisgICAgZGVmIGNvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCisgICAgICAgIGlmIG5vdCBzZWxmLl9zc2xvYmo6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5jb21wcmVzc2lvbigpCisKICAgICBkZWYgc2VuZChzZWxmLCBkYXRhLCBmbGFncz0wKToKICAgICAgICAgc2VsZi5fY2hlY2tDbG9zZWQoKQogICAgICAgICBpZiBzZWxmLl9zc2xvYmo6CkBAIC0zNTgsNiArNDA2LDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc29ja2V0LnNlbmR0byhzZWxmLCBkYXRhLCBmbGFnc19vcl9hZGRyLCBhZGRyKQogCisgICAgZGVmIHNlbmRtc2coc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBFbnN1cmUgcHJvZ3JhbXMgZG9uJ3Qgc2VuZCBkYXRhIHVuZW5jcnlwdGVkIGlmIHRoZXkgdHJ5IHRvCisgICAgICAgICMgdXNlIHRoaXMgbWV0aG9kLgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzZW5kbXNnIG5vdCBhbGxvd2VkIG9uIGluc3RhbmNlcyBvZiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fKQorCiAgICAgZGVmIHNlbmRhbGwoc2VsZiwgZGF0YSwgZmxhZ3M9MCk6CiAgICAgICAgIHNlbGYuX2NoZWNrQ2xvc2VkKCkKICAgICAgICAgaWYgc2VsZi5fc3Nsb2JqOgpAQCAtNDE2LDYgKzQ3MCwxNCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNvY2tldC5yZWN2ZnJvbV9pbnRvKHNlbGYsIGJ1ZmZlciwgbmJ5dGVzLCBmbGFncykKIAorICAgIGRlZiByZWN2bXNnKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInJlY3Ztc2cgbm90IGFsbG93ZWQgb24gaW5zdGFuY2VzIG9mICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18pCisKKyAgICBkZWYgcmVjdm1zZ19pbnRvKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInJlY3Ztc2dfaW50byBub3QgYWxsb3dlZCBvbiBpbnN0YW5jZXMgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIgJSBzZWxmLl9fY2xhc3NfXykKKwogICAgIGRlZiBwZW5kaW5nKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja0Nsb3NlZCgpCiAgICAgICAgIGlmIHNlbGYuX3NzbG9iajoKQEAgLTUwMiw2ICs1NjQsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QpLAogICAgICAgICAgICAgICAgIGFkZHIpCiAKKyAgICBkZWYgZ2V0X2NoYW5uZWxfYmluZGluZyhzZWxmLCBjYl90eXBlPSJ0bHMtdW5pcXVlIik6CisgICAgICAgICIiIkdldCBjaGFubmVsIGJpbmRpbmcgZGF0YSBmb3IgY3VycmVudCBjb25uZWN0aW9uLiAgUmFpc2UgVmFsdWVFcnJvcgorICAgICAgICBpZiB0aGUgcmVxdWVzdGVkIGBjYl90eXBlYCBpcyBub3Qgc3VwcG9ydGVkLiAgUmV0dXJuIGJ5dGVzIG9mIHRoZSBkYXRhCisgICAgICAgIG9yIE5vbmUgaWYgdGhlIGRhdGEgaXMgbm90IGF2YWlsYWJsZSAoZS5nLiBiZWZvcmUgdGhlIGhhbmRzaGFrZSkuCisgICAgICAgICIiIgorICAgICAgICBpZiBjYl90eXBlIG5vdCBpbiBDSEFOTkVMX0JJTkRJTkdfVFlQRVM6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBjaGFubmVsIGJpbmRpbmcgdHlwZSIpCisgICAgICAgIGlmIGNiX3R5cGUgIT0gInRscy11bmlxdWUiOgorICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiezB9IGNoYW5uZWwgYmluZGluZyB0eXBlIG5vdCBpbXBsZW1lbnRlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX3R5cGUpKQorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBzZWxmLl9zc2xvYmoudGxzX3VuaXF1ZV9jYigpCisKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgIyBzeXMuc3RkZXJyLndyaXRlKCJfX2RlbF9fIG9uICVzXG4iICUgcmVwcihzZWxmKSkKICAgICAgICAgc2VsZi5fcmVhbF9jbG9zZSgpCkBAIC01MTEsNyArNTg4LDggQEAKICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwgY2VydF9yZXFzPUNFUlRfTk9ORSwKICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1QUk9UT0NPTF9TU0x2MjMsIGNhX2NlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9VHJ1ZSwKLSAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBjaXBoZXJzPU5vbmUpOgorICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPVRydWUsCisgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lKToKIAogICAgIHJldHVybiBTU0xTb2NrZXQoc29jaz1zb2NrLCBrZXlmaWxlPWtleWZpbGUsIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsIGNlcnRfcmVxcz1jZXJ0X3JlcXMsCkBAIC01NjYsOSArNjQ0LDkgQEAKICAgICAgICAgY2VydF9yZXFzID0gQ0VSVF9SRVFVSVJFRAogICAgIGVsc2U6CiAgICAgICAgIGNlcnRfcmVxcyA9IENFUlRfTk9ORQotICAgIHMgPSB3cmFwX3NvY2tldChzb2NrZXQoKSwgc3NsX3ZlcnNpb249c3NsX3ZlcnNpb24sCisgICAgcyA9IGNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpCisgICAgcyA9IHdyYXBfc29ja2V0KHMsIHNzbF92ZXJzaW9uPXNzbF92ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9Y2VydF9yZXFzLCBjYV9jZXJ0cz1jYV9jZXJ0cykKLSAgICBzLmNvbm5lY3QoYWRkcikKICAgICBkZXJjZXJ0ID0gcy5nZXRwZWVyY2VydChUcnVlKQogICAgIHMuY2xvc2UoKQogICAgIHJldHVybiBERVJfY2VydF90b19QRU1fY2VydChkZXJjZXJ0KQpkaWZmIC0tZ2l0IGEvTGliL3N0YXQucHkgYi9MaWIvc3RhdC5weQppbmRleCA3OGNjZDVlLi43MDRhZGZlIDEwMDY0NAotLS0gYS9MaWIvc3RhdC5weQorKysgYi9MaWIvc3RhdC5weQpAQCAtMTksNzggKzE5LDEzMSBAQAogIyBFeHRyYWN0IGJpdHMgZnJvbSB0aGUgbW9kZQogCiBkZWYgU19JTU9ERShtb2RlKToKKyAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgY2FuIGJlIHNldCBieQorICAgIG9zLmNobW9kKCkuCisgICAgIiIiCiAgICAgcmV0dXJuIG1vZGUgJiAwbzc3NzcKIAogZGVmIFNfSUZNVChtb2RlKToKKyAgICAiIiJSZXR1cm4gdGhlIHBvcnRpb24gb2YgdGhlIGZpbGUncyBtb2RlIHRoYXQgZGVzY3JpYmVzIHRoZQorICAgIGZpbGUgdHlwZS4KKyAgICAiIiIKICAgICByZXR1cm4gbW9kZSAmIDBvMTcwMDAwCiAKICMgQ29uc3RhbnRzIHVzZWQgYXMgU19JRk1UKCkgZm9yIHZhcmlvdXMgZmlsZSB0eXBlcwogIyAobm90IGFsbCBhcmUgaW1wbGVtZW50ZWQgb24gYWxsIHN5c3RlbXMpCiAKLVNfSUZESVIgID0gMG8wNDAwMDAKLVNfSUZDSFIgID0gMG8wMjAwMDAKLVNfSUZCTEsgID0gMG8wNjAwMDAKLVNfSUZSRUcgID0gMG8xMDAwMDAKLVNfSUZJRk8gID0gMG8wMTAwMDAKLVNfSUZMTksgID0gMG8xMjAwMDAKLVNfSUZTT0NLID0gMG8xNDAwMDAKK1NfSUZESVIgID0gMG8wNDAwMDAgICMgZGlyZWN0b3J5CitTX0lGQ0hSICA9IDBvMDIwMDAwICAjIGNoYXJhY3RlciBkZXZpY2UKK1NfSUZCTEsgID0gMG8wNjAwMDAgICMgYmxvY2sgZGV2aWNlCitTX0lGUkVHICA9IDBvMTAwMDAwICAjIHJlZ3VsYXIgZmlsZQorU19JRklGTyAgPSAwbzAxMDAwMCAgIyBmaWZvIChuYW1lZCBwaXBlKQorU19JRkxOSyAgPSAwbzEyMDAwMCAgIyBzeW1ib2xpYyBsaW5rCitTX0lGU09DSyA9IDBvMTQwMDAwICAjIHNvY2tldCBmaWxlCiAKICMgRnVuY3Rpb25zIHRvIHRlc3QgZm9yIGVhY2ggZmlsZSB0eXBlCiAKIGRlZiBTX0lTRElSKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGRpcmVjdG9yeS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZESVIKIAogZGVmIFNfSVNDSFIobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgY2hhcmFjdGVyIHNwZWNpYWwgZGV2aWNlIGZpbGUuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQ0hSCiAKIGRlZiBTX0lTQkxLKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIGJsb2NrIHNwZWNpYWwgZGV2aWNlIGZpbGUuIiIiCiAgICAgcmV0dXJuIFNfSUZNVChtb2RlKSA9PSBTX0lGQkxLCiAKIGRlZiBTX0lTUkVHKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIHJlZ3VsYXIgZmlsZS4iIiIKICAgICByZXR1cm4gU19JRk1UKG1vZGUpID09IFNfSUZSRUcKIAogZGVmIFNfSVNGSUZPKG1vZGUpOgorICAgICIiIlJldHVybiBUcnVlIGlmIG1vZGUgaXMgZnJvbSBhIEZJRk8gKG5hbWVkIHBpcGUpLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRklGTwogCiBkZWYgU19JU0xOSyhtb2RlKToKKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiBtb2RlIGlzIGZyb20gYSBzeW1ib2xpYyBsaW5rLiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRkxOSwogCiBkZWYgU19JU1NPQ0sobW9kZSk6CisgICAgIiIiUmV0dXJuIFRydWUgaWYgbW9kZSBpcyBmcm9tIGEgc29ja2V0LiIiIgogICAgIHJldHVybiBTX0lGTVQobW9kZSkgPT0gU19JRlNPQ0sKIAogIyBOYW1lcyBmb3IgcGVybWlzc2lvbiBiaXRzCiAKLVNfSVNVSUQgPSAwbzQwMDAKLVNfSVNHSUQgPSAwbzIwMDAKLVNfRU5GTVQgPSBTX0lTR0lECi1TX0lTVlRYID0gMG8xMDAwCi1TX0lSRUFEID0gMG8wNDAwCi1TX0lXUklURSA9IDBvMDIwMAotU19JRVhFQyA9IDBvMDEwMAotU19JUldYVSA9IDBvMDcwMAotU19JUlVTUiA9IDBvMDQwMAotU19JV1VTUiA9IDBvMDIwMAotU19JWFVTUiA9IDBvMDEwMAotU19JUldYRyA9IDBvMDA3MAotU19JUkdSUCA9IDBvMDA0MAotU19JV0dSUCA9IDBvMDAyMAotU19JWEdSUCA9IDBvMDAxMAotU19JUldYTyA9IDBvMDAwNwotU19JUk9USCA9IDBvMDAwNAotU19JV09USCA9IDBvMDAwMgotU19JWE9USCA9IDBvMDAwMQorU19JU1VJRCA9IDBvNDAwMCAgIyBzZXQgVUlEIGJpdAorU19JU0dJRCA9IDBvMjAwMCAgIyBzZXQgR0lEIGJpdAorU19FTkZNVCA9IFNfSVNHSUQgIyBmaWxlIGxvY2tpbmcgZW5mb3JjZW1lbnQKK1NfSVNWVFggPSAwbzEwMDAgICMgc3RpY2t5IGJpdAorU19JUkVBRCA9IDBvMDQwMCAgIyBVbml4IFY3IHN5bm9ueW0gZm9yIFNfSVJVU1IKK1NfSVdSSVRFID0gMG8wMjAwICMgVW5peCBWNyBzeW5vbnltIGZvciBTX0lXVVNSCitTX0lFWEVDID0gMG8wMTAwICAjIFVuaXggVjcgc3lub255bSBmb3IgU19JWFVTUgorU19JUldYVSA9IDBvMDcwMCAgIyBtYXNrIGZvciBvd25lciBwZXJtaXNzaW9ucworU19JUlVTUiA9IDBvMDQwMCAgIyByZWFkIGJ5IG93bmVyCitTX0lXVVNSID0gMG8wMjAwICAjIHdyaXRlIGJ5IG93bmVyCitTX0lYVVNSID0gMG8wMTAwICAjIGV4ZWN1dGUgYnkgb3duZXIKK1NfSVJXWEcgPSAwbzAwNzAgICMgbWFzayBmb3IgZ3JvdXAgcGVybWlzc2lvbnMKK1NfSVJHUlAgPSAwbzAwNDAgICMgcmVhZCBieSBncm91cAorU19JV0dSUCA9IDBvMDAyMCAgIyB3cml0ZSBieSBncm91cAorU19JWEdSUCA9IDBvMDAxMCAgIyBleGVjdXRlIGJ5IGdyb3VwCitTX0lSV1hPID0gMG8wMDA3ICAjIG1hc2sgZm9yIG90aGVycyAobm90IGluIGdyb3VwKSBwZXJtaXNzaW9ucworU19JUk9USCA9IDBvMDAwNCAgIyByZWFkIGJ5IG90aGVycworU19JV09USCA9IDBvMDAwMiAgIyB3cml0ZSBieSBvdGhlcnMKK1NfSVhPVEggPSAwbzAwMDEgICMgZXhlY3V0ZSBieSBvdGhlcnMKIAogIyBOYW1lcyBmb3IgZmlsZSBmbGFncwogCi1VRl9OT0RVTVAgICAgPSAweDAwMDAwMDAxCi1VRl9JTU1VVEFCTEUgPSAweDAwMDAwMDAyCi1VRl9BUFBFTkQgICAgPSAweDAwMDAwMDA0Ci1VRl9PUEFRVUUgICAgPSAweDAwMDAwMDA4Ci1VRl9OT1VOTElOSyAgPSAweDAwMDAwMDEwCi1VRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAgIyBPUyBYOiBmaWxlIGlzIGhmcy1jb21wcmVzc2VkCi1VRl9ISURERU4gICAgPSAweDAwMDA4MDAwICAgIyBPUyBYOiBmaWxlIHNob3VsZCBub3QgYmUgZGlzcGxheWVkCi1TRl9BUkNISVZFRCAgPSAweDAwMDEwMDAwCi1TRl9JTU1VVEFCTEUgPSAweDAwMDIwMDAwCi1TRl9BUFBFTkQgICAgPSAweDAwMDQwMDAwCi1TRl9OT1VOTElOSyAgPSAweDAwMTAwMDAwCi1TRl9TTkFQU0hPVCAgPSAweDAwMjAwMDAwCitVRl9OT0RVTVAgICAgPSAweDAwMDAwMDAxICAjIGRvIG5vdCBkdW1wIGZpbGUKK1VGX0lNTVVUQUJMRSA9IDB4MDAwMDAwMDIgICMgZmlsZSBtYXkgbm90IGJlIGNoYW5nZWQKK1VGX0FQUEVORCAgICA9IDB4MDAwMDAwMDQgICMgZmlsZSBtYXkgb25seSBiZSBhcHBlbmRlZCB0bworVUZfT1BBUVVFICAgID0gMHgwMDAwMDAwOCAgIyBkaXJlY3RvcnkgaXMgb3BhcXVlIHdoZW4gdmlld2VkIHRocm91Z2ggYSB1bmlvbiBzdGFjaworVUZfTk9VTkxJTksgID0gMHgwMDAwMDAxMCAgIyBmaWxlIG1heSBub3QgYmUgcmVuYW1lZCBvciBkZWxldGVkCitVRl9DT01QUkVTU0VEID0gMHgwMDAwMDAyMCAjIE9TIFg6IGZpbGUgaXMgaGZzLWNvbXByZXNzZWQKK1VGX0hJRERFTiAgICA9IDB4MDAwMDgwMDAgICMgT1MgWDogZmlsZSBzaG91bGQgbm90IGJlIGRpc3BsYXllZAorU0ZfQVJDSElWRUQgID0gMHgwMDAxMDAwMCAgIyBmaWxlIG1heSBiZSBhcmNoaXZlZAorU0ZfSU1NVVRBQkxFID0gMHgwMDAyMDAwMCAgIyBmaWxlIG1heSBub3QgYmUgY2hhbmdlZAorU0ZfQVBQRU5EICAgID0gMHgwMDA0MDAwMCAgIyBmaWxlIG1heSBvbmx5IGJlIGFwcGVuZGVkIHRvCitTRl9OT1VOTElOSyAgPSAweDAwMTAwMDAwICAjIGZpbGUgbWF5IG5vdCBiZSByZW5hbWVkIG9yIGRlbGV0ZWQKK1NGX1NOQVBTSE9UICA9IDB4MDAyMDAwMDAgICMgZmlsZSBpcyBhIHNuYXBzaG90IGZpbGUKKworCitfZmlsZW1vZGVfdGFibGUgPSAoCisgICAgKChTX0lGTE5LLCAgICAgICAgICJsIiksCisgICAgIChTX0lGUkVHLCAgICAgICAgICItIiksCisgICAgIChTX0lGQkxLLCAgICAgICAgICJiIiksCisgICAgIChTX0lGRElSLCAgICAgICAgICJkIiksCisgICAgIChTX0lGQ0hSLCAgICAgICAgICJjIiksCisgICAgIChTX0lGSUZPLCAgICAgICAgICJwIikpLAorCisgICAgKChTX0lSVVNSLCAgICAgICAgICJyIiksKSwKKyAgICAoKFNfSVdVU1IsICAgICAgICAgInciKSwpLAorICAgICgoU19JWFVTUnxTX0lTVUlELCAicyIpLAorICAgICAoU19JU1VJRCwgICAgICAgICAiUyIpLAorICAgICAoU19JWFVTUiwgICAgICAgICAieCIpKSwKKworICAgICgoU19JUkdSUCwgICAgICAgICAiciIpLCksCisgICAgKChTX0lXR1JQLCAgICAgICAgICJ3IiksKSwKKyAgICAoKFNfSVhHUlB8U19JU0dJRCwgInMiKSwKKyAgICAgKFNfSVNHSUQsICAgICAgICAgIlMiKSwKKyAgICAgKFNfSVhHUlAsICAgICAgICAgIngiKSksCisKKyAgICAoKFNfSVJPVEgsICAgICAgICAgInIiKSwpLAorICAgICgoU19JV09USCwgICAgICAgICAidyIpLCksCisgICAgKChTX0lYT1RIfFNfSVNWVFgsICJ0IiksCisgICAgIChTX0lTVlRYLCAgICAgICAgICJUIiksCisgICAgIChTX0lYT1RILCAgICAgICAgICJ4IikpCispCisKK2RlZiBmaWxlbW9kZShtb2RlKToKKyAgICAiIiJDb252ZXJ0IGEgZmlsZSdzIG1vZGUgdG8gYSBzdHJpbmcgb2YgdGhlIGZvcm0gJy1yd3hyd3hyd3gnLiIiIgorICAgIHBlcm0gPSBbXQorICAgIGZvciB0YWJsZSBpbiBfZmlsZW1vZGVfdGFibGU6CisgICAgICAgIGZvciBiaXQsIGNoYXIgaW4gdGFibGU6CisgICAgICAgICAgICBpZiBtb2RlICYgYml0ID09IGJpdDoKKyAgICAgICAgICAgICAgICBwZXJtLmFwcGVuZChjaGFyKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwZXJtLmFwcGVuZCgiLSIpCisgICAgcmV0dXJuICIiLmpvaW4ocGVybSkKZGlmZiAtLWdpdCBhL0xpYi9zdHJpbmcucHkgYi9MaWIvc3RyaW5nLnB5CmluZGV4IDBmNGVkZTIuLmI1N2M3OWIgMTAwNjQ0Ci0tLSBhL0xpYi9zdHJpbmcucHkKKysrIGIvTGliL3N0cmluZy5weQpAQCAtNDYsMjMgKzQ2LDcgQEAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGltcG9ydCByZSBhcyBfcmUKLQotY2xhc3MgX211bHRpbWFwOgotICAgICIiIkhlbHBlciBjbGFzcyBmb3IgY29tYmluaW5nIG11bHRpcGxlIG1hcHBpbmdzLgotCi0gICAgVXNlZCBieSAue3NhZmVfLH1zdWJzdGl0dXRlKCkgdG8gY29tYmluZSB0aGUgbWFwcGluZyBhbmQga2V5d29yZAotICAgIGFyZ3VtZW50cy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcHJpbWFyeSwgc2Vjb25kYXJ5KToKLSAgICAgICAgc2VsZi5fcHJpbWFyeSA9IHByaW1hcnkKLSAgICAgICAgc2VsZi5fc2Vjb25kYXJ5ID0gc2Vjb25kYXJ5Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByaW1hcnlba2V5XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fc2Vjb25kYXJ5W2tleV0KLQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgQ2hhaW5NYXAKIAogY2xhc3MgX1RlbXBsYXRlTWV0YWNsYXNzKHR5cGUpOgogICAgIHBhdHRlcm4gPSByIiIiCkBAIC0xMDAsNyArODQsNyBAQAogCiAgICAgZGVmIF9pbnZhbGlkKHNlbGYsIG1vKToKICAgICAgICAgaSA9IG1vLnN0YXJ0KCdpbnZhbGlkJykKLSAgICAgICAgbGluZXMgPSBzZWxmLnRlbXBsYXRlWzppXS5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgIGxpbmVzID0gc2VsZi50ZW1wbGF0ZVs6aV0uc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICBpZiBub3QgbGluZXM6CiAgICAgICAgICAgICBjb2xubyA9IDEKICAgICAgICAgICAgIGxpbmVubyA9IDEKQEAgLTExNiw3ICsxMDAsNyBAQAogICAgICAgICBpZiBub3QgYXJnczoKICAgICAgICAgICAgIG1hcHBpbmcgPSBrd3MKICAgICAgICAgZWxpZiBrd3M6Ci0gICAgICAgICAgICBtYXBwaW5nID0gX211bHRpbWFwKGt3cywgYXJnc1swXSkKKyAgICAgICAgICAgIG1hcHBpbmcgPSBDaGFpbk1hcChrd3MsIGFyZ3NbMF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtYXBwaW5nID0gYXJnc1swXQogICAgICAgICAjIEhlbHBlciBmdW5jdGlvbiBmb3IgLnN1YigpCkBAIC0xNDIsNyArMTI2LDcgQEAKICAgICAgICAgaWYgbm90IGFyZ3M6CiAgICAgICAgICAgICBtYXBwaW5nID0ga3dzCiAgICAgICAgIGVsaWYga3dzOgotICAgICAgICAgICAgbWFwcGluZyA9IF9tdWx0aW1hcChrd3MsIGFyZ3NbMF0pCisgICAgICAgICAgICBtYXBwaW5nID0gQ2hhaW5NYXAoa3dzLCBhcmdzWzBdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWFwcGluZyA9IGFyZ3NbMF0KICAgICAgICAgIyBIZWxwZXIgZnVuY3Rpb24gZm9yIC5zdWIoKQpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCA4M2M3OWVmLi41N2NjMWE0IDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtMTkxLDggKzE5MSwxMCBAQAogCiBBIFZhbHVlRXJyb3Igd2lsbCBiZSByYWlzZWQgaWYgUG9wZW4gaXMgY2FsbGVkIHdpdGggaW52YWxpZCBhcmd1bWVudHMuCiAKLWNoZWNrX2NhbGwoKSBhbmQgY2hlY2tfb3V0cHV0KCkgd2lsbCByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IsIGlmIHRoZQotY2FsbGVkIHByb2Nlc3MgcmV0dXJucyBhIG5vbi16ZXJvIHJldHVybiBjb2RlLgorRXhjZXB0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIG1vZHVsZSBpbmhlcml0IGZyb20gU3VicHJvY2Vzc0Vycm9yLgorY2hlY2tfY2FsbCgpIGFuZCBjaGVja19vdXRwdXQoKSB3aWxsIHJhaXNlIENhbGxlZFByb2Nlc3NFcnJvciBpZiB0aGUKK2NhbGxlZCBwcm9jZXNzIHJldHVybnMgYSBub24temVybyByZXR1cm4gY29kZS4gIFRpbWVvdXRFeHBpcmVkCitiZSByYWlzZWQgaWYgYSB0aW1lb3V0IHdhcyBzcGVjaWZpZWQgYW5kIGV4cGlyZWQuCiAKIAogU2VjdXJpdHkKQEAgLTM0MCwxNSArMzQyLDIzIEBACiAKIGltcG9ydCBpbwogaW1wb3J0IG9zCitpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IGdjCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCB3YXJuaW5ncwogaW1wb3J0IGVycm5vCit0cnk6CisgICAgZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgX3RpbWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmcm9tIHRpbWUgaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogIyBFeGNlcHRpb24gY2xhc3NlcyB1c2VkIGJ5IHRoaXMgbW9kdWxlLgotY2xhc3MgQ2FsbGVkUHJvY2Vzc0Vycm9yKEV4Y2VwdGlvbik6CitjbGFzcyBTdWJwcm9jZXNzRXJyb3IoRXhjZXB0aW9uKTogcGFzcworCisKK2NsYXNzIENhbGxlZFByb2Nlc3NFcnJvcihTdWJwcm9jZXNzRXJyb3IpOgogICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIGEgcHJvY2VzcyBydW4gYnkgY2hlY2tfY2FsbCgpIG9yCiAgICAgY2hlY2tfb3V0cHV0KCkgcmV0dXJucyBhIG5vbi16ZXJvIGV4aXQgc3RhdHVzLgogICAgIFRoZSBleGl0IHN0YXR1cyB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcmV0dXJuY29kZSBhdHRyaWJ1dGU7CkBAIC0zNjIsMTAgKzM3MiwyNCBAQAogICAgICAgICByZXR1cm4gIkNvbW1hbmQgJyVzJyByZXR1cm5lZCBub24temVybyBleGl0IHN0YXR1cyAlZCIgJSAoc2VsZi5jbWQsIHNlbGYucmV0dXJuY29kZSkKIAogCitjbGFzcyBUaW1lb3V0RXhwaXJlZChTdWJwcm9jZXNzRXJyb3IpOgorICAgICIiIlRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMgd2hpbGUgd2FpdGluZyBmb3IgYQorICAgIGNoaWxkIHByb2Nlc3MuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgdGltZW91dCwgb3V0cHV0PU5vbmUpOgorICAgICAgICBzZWxmLmNtZCA9IGNtZAorICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CisgICAgICAgIHNlbGYub3V0cHV0ID0gb3V0cHV0CisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgiQ29tbWFuZCAnJXMnIHRpbWVkIG91dCBhZnRlciAlcyBzZWNvbmRzIiAlCisgICAgICAgICAgICAgICAgKHNlbGYuY21kLCBzZWxmLnRpbWVvdXQpKQorCisKIGlmIG1zd2luZG93czoKICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgaW1wb3J0IG1zdmNydAotICAgIGltcG9ydCBfc3VicHJvY2VzcworICAgIGltcG9ydCBfd2luYXBpCiAgICAgY2xhc3MgU1RBUlRVUElORk86CiAgICAgICAgIGR3RmxhZ3MgPSAwCiAgICAgICAgIGhTdGRJbnB1dCA9IE5vbmUKQEAgLTM3Nyw1MyArNDAxLDQ5IEBACiBlbHNlOgogICAgIGltcG9ydCBzZWxlY3QKICAgICBfaGFzX3BvbGwgPSBoYXNhdHRyKHNlbGVjdCwgJ3BvbGwnKQotICAgIGltcG9ydCBmY250bAotICAgIGltcG9ydCBwaWNrbGUKLQotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IF9wb3NpeHN1YnByb2Nlc3MKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIF9wb3NpeHN1YnByb2Nlc3MgPSBOb25lCi0gICAgICAgIHdhcm5pbmdzLndhcm4oIlRoZSBfcG9zaXhzdWJwcm9jZXNzIG1vZHVsZSBpcyBub3QgYmVpbmcgdXNlZC4gIgotICAgICAgICAgICAgICAgICAgICAgICJDaGlsZCBwcm9jZXNzIHJlbGlhYmlsaXR5IG1heSBzdWZmZXIgaWYgeW91ciAiCi0gICAgICAgICAgICAgICAgICAgICAgInByb2dyYW0gdXNlcyB0aHJlYWRzLiIsIFJ1bnRpbWVXYXJuaW5nKQorICAgIGltcG9ydCBfcG9zaXhzdWJwcm9jZXNzCisgICAgX2NyZWF0ZV9waXBlID0gX3Bvc2l4c3VicHJvY2Vzcy5jbG9leGVjX3BpcGUKIAogICAgICMgV2hlbiBzZWxlY3Qgb3IgcG9sbCBoYXMgaW5kaWNhdGVkIHRoYXQgdGhlIGZpbGUgaXMgd3JpdGFibGUsCiAgICAgIyB3ZSBjYW4gd3JpdGUgdXAgdG8gX1BJUEVfQlVGIGJ5dGVzIHdpdGhvdXQgcmlzayBvZiBibG9ja2luZy4KICAgICAjIFBPU0lYIGRlZmluZXMgUElQRV9CVUYgYXMgPj0gNTEyLgogICAgIF9QSVBFX0JVRiA9IGdldGF0dHIoc2VsZWN0LCAnUElQRV9CVUYnLCA1MTIpCiAKLSAgICBfRkRfQ0xPRVhFQyA9IGdldGF0dHIoZmNudGwsICdGRF9DTE9FWEVDJywgMSkKLQotICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQsIGNsb2V4ZWMpOgotICAgICAgICBvbGQgPSBmY250bC5mY250bChmZCwgZmNudGwuRl9HRVRGRCkKLSAgICAgICAgaWYgY2xvZXhlYzoKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZELCBvbGQgfCBfRkRfQ0xPRVhFQykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX1NFVEZELCBvbGQgJiB+X0ZEX0NMT0VYRUMpCi0KLSAgICBpZiBfcG9zaXhzdWJwcm9jZXNzOgotICAgICAgICBfY3JlYXRlX3BpcGUgPSBfcG9zaXhzdWJwcm9jZXNzLmNsb2V4ZWNfcGlwZQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBfY3JlYXRlX3BpcGUoKToKLSAgICAgICAgICAgIGZkcyA9IG9zLnBpcGUoKQotICAgICAgICAgICAgX3NldF9jbG9leGVjKGZkc1swXSwgVHJ1ZSkKLSAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZHNbMV0sIFRydWUpCi0gICAgICAgICAgICByZXR1cm4gZmRzCiAKIF9fYWxsX18gPSBbIlBvcGVuIiwgIlBJUEUiLCAiU1RET1VUIiwgImNhbGwiLCAiY2hlY2tfY2FsbCIsICJnZXRzdGF0dXNvdXRwdXQiLAotICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiXQorICAgICAgICAgICAiZ2V0b3V0cHV0IiwgImNoZWNrX291dHB1dCIsICJDYWxsZWRQcm9jZXNzRXJyb3IiLCAiREVWTlVMTCJdCiAKIGlmIG1zd2luZG93czoKLSAgICBmcm9tIF9zdWJwcm9jZXNzIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVERfRVJST1JfSEFORExFLCBTV19ISURFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1cpCisgICAgZnJvbSBfd2luYXBpIGltcG9ydCAoQ1JFQVRFX05FV19DT05TT0xFLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgU1REX0VSUk9SX0hBTkRMRSwgU1dfSElERSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTVEFSVEZfVVNFU1RESEFORExFUywgU1RBUlRGX1VTRVNIT1dXSU5ET1cpCiAKICAgICBfX2FsbF9fLmV4dGVuZChbIkNSRUFURV9ORVdfQ09OU09MRSIsICJDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAiLAogICAgICAgICAgICAgICAgICAgICAiU1REX0lOUFVUX0hBTkRMRSIsICJTVERfT1VUUFVUX0hBTkRMRSIsCiAgICAgICAgICAgICAgICAgICAgICJTVERfRVJST1JfSEFORExFIiwgIlNXX0hJREUiLAogICAgICAgICAgICAgICAgICAgICAiU1RBUlRGX1VTRVNUREhBTkRMRVMiLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciXSkKKworICAgIGNsYXNzIEhhbmRsZShpbnQpOgorICAgICAgICBjbG9zZWQgPSBGYWxzZQorCisgICAgICAgIGRlZiBDbG9zZShzZWxmLCBDbG9zZUhhbmRsZT1fd2luYXBpLkNsb3NlSGFuZGxlKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShzZWxmKQorCisgICAgICAgIGRlZiBEZXRhY2goc2VsZik6CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbG9zZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgcmV0dXJuIGludChzZWxmKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWxyZWFkeSBjbG9zZWQiKQorCisgICAgICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAiSGFuZGxlKCVkKSIgJSBpbnQoc2VsZikKKworICAgICAgICBfX2RlbF9fID0gQ2xvc2UKKyAgICAgICAgX19zdHJfXyA9IF9fcmVwcl9fCisKIHRyeToKICAgICBNQVhGRCA9IG9zLnN5c2NvbmYoIlNDX09QRU5fTUFYIikKIGV4Y2VwdDoKQEAgLTQ0OCwyNyArNDY4LDYzIEBACiAKIFBJUEUgPSAtMQogU1RET1VUID0gLTIKK0RFVk5VTEwgPSAtMwogCiAKIGRlZiBfZWludHJfcmV0cnlfY2FsbChmdW5jLCAqYXJncyk6CiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBJbnRlcnJ1cHRlZEVycm9yOgorICAgICAgICAgICAgY29udGludWUKIAogCi1kZWYgY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncyk6Ci0gICAgIiIiUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMuICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCi0gICAgcmV0dXJuIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KKyMgWFhYIFRoaXMgZnVuY3Rpb24gaXMgb25seSB1c2VkIGJ5IG11bHRpcHJvY2Vzc2luZyBhbmQgdGhlIHRlc3Qgc3VpdGUsCisjIGJ1dCBpdCdzIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgaW1wb3J0ZWQgd2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aG91dAorIyB0aHJlYWRzLgorCitkZWYgX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgorICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAorICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgorICAgIGZsYWdfb3B0X21hcCA9IHsKKyAgICAgICAgJ2RlYnVnJzogJ2QnLAorICAgICAgICAjICdpbnNwZWN0JzogJ2knLAorICAgICAgICAjICdpbnRlcmFjdGl2ZSc6ICdpJywKKyAgICAgICAgJ29wdGltaXplJzogJ08nLAorICAgICAgICAnZG9udF93cml0ZV9ieXRlY29kZSc6ICdCJywKKyAgICAgICAgJ25vX3VzZXJfc2l0ZSc6ICdzJywKKyAgICAgICAgJ25vX3NpdGUnOiAnUycsCisgICAgICAgICdpZ25vcmVfZW52aXJvbm1lbnQnOiAnRScsCisgICAgICAgICd2ZXJib3NlJzogJ3YnLAorICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKKyAgICAgICAgJ3F1aWV0JzogJ3EnLAorICAgICAgICAnaGFzaF9yYW5kb21pemF0aW9uJzogJ1InLAorICAgIH0KKyAgICBhcmdzID0gW10KKyAgICBmb3IgZmxhZywgb3B0IGluIGZsYWdfb3B0X21hcC5pdGVtcygpOgorICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCisgICAgICAgIGlmIHYgPiAwOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0nICsgb3B0ICogdikKKyAgICBmb3Igb3B0IGluIHN5cy53YXJub3B0aW9uczoKKyAgICAgICAgYXJncy5hcHBlbmQoJy1XJyArIG9wdCkKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBjYWxsKCpwb3BlbmFyZ3MsIHRpbWVvdXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzLiAgV2FpdCBmb3IgY29tbWFuZCB0byBjb21wbGV0ZSBvcgorICAgIHRpbWVvdXQsIHRoZW4gcmV0dXJuIHRoZSByZXR1cm5jb2RlIGF0dHJpYnV0ZS4KIAogICAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciB0aGUgUG9wZW4gY29uc3RydWN0b3IuICBFeGFtcGxlOgogCiAgICAgcmV0Y29kZSA9IGNhbGwoWyJscyIsICItbCJdKQogICAgICIiIgotICAgIHJldHVybiBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykud2FpdCgpCisgICAgd2l0aCBQb3BlbigqcG9wZW5hcmdzLCAqKmt3YXJncykgYXMgcDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHAud2FpdCh0aW1lb3V0PXRpbWVvdXQpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHAua2lsbCgpCisgICAgICAgICAgICBwLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKIAogCiBkZWYgY2hlY2tfY2FsbCgqcG9wZW5hcmdzLCAqKmt3YXJncyk6CkBAIC00NzcsNyArNTMzLDcgQEAKICAgICBDYWxsZWRQcm9jZXNzRXJyb3IuICBUaGUgQ2FsbGVkUHJvY2Vzc0Vycm9yIG9iamVjdCB3aWxsIGhhdmUgdGhlCiAgICAgcmV0dXJuIGNvZGUgaW4gdGhlIHJldHVybmNvZGUgYXR0cmlidXRlLgogCi0gICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBQb3BlbiBjb25zdHJ1Y3Rvci4gIEV4YW1wbGU6CisgICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZSBjYWxsIGZ1bmN0aW9uLiAgRXhhbXBsZToKIAogICAgIGNoZWNrX2NhbGwoWyJscyIsICItbCJdKQogICAgICIiIgpAQCAtNDkwLDcgKzU0Niw3IEBACiAgICAgcmV0dXJuIDAKIAogCi1kZWYgY2hlY2tfb3V0cHV0KCpwb3BlbmFyZ3MsICoqa3dhcmdzKToKK2RlZiBjaGVja19vdXRwdXQoKnBvcGVuYXJncywgdGltZW91dD1Ob25lLCAqKmt3YXJncyk6CiAgICAgciIiIlJ1biBjb21tYW5kIHdpdGggYXJndW1lbnRzIGFuZCByZXR1cm4gaXRzIG91dHB1dCBhcyBhIGJ5dGUgc3RyaW5nLgogCiAgICAgSWYgdGhlIGV4aXQgY29kZSB3YXMgbm9uLXplcm8gaXQgcmFpc2VzIGEgQ2FsbGVkUHJvY2Vzc0Vycm9yLiAgVGhlCkBAIC01MTIsMTQgKzU2OCwyMCBAQAogICAgICIiIgogICAgIGlmICdzdGRvdXQnIGluIGt3YXJnczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignc3Rkb3V0IGFyZ3VtZW50IG5vdCBhbGxvd2VkLCBpdCB3aWxsIGJlIG92ZXJyaWRkZW4uJykKLSAgICBwcm9jZXNzID0gUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKQotICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQotICAgIGlmIHJldGNvZGU6Ci0gICAgICAgIGNtZCA9IGt3YXJncy5nZXQoImFyZ3MiKQotICAgICAgICBpZiBjbWQgaXMgTm9uZToKLSAgICAgICAgICAgIGNtZCA9IHBvcGVuYXJnc1swXQotICAgICAgICByYWlzZSBDYWxsZWRQcm9jZXNzRXJyb3IocmV0Y29kZSwgY21kLCBvdXRwdXQ9b3V0cHV0KQorICAgIHdpdGggUG9wZW4oKnBvcGVuYXJncywgc3Rkb3V0PVBJUEUsICoqa3dhcmdzKSBhcyBwcm9jZXNzOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQsIHVudXNlZF9lcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKHRpbWVvdXQ9dGltZW91dCkKKyAgICAgICAgZXhjZXB0IFRpbWVvdXRFeHBpcmVkOgorICAgICAgICAgICAgcHJvY2Vzcy5raWxsKCkKKyAgICAgICAgICAgIG91dHB1dCwgdW51c2VkX2VyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQocHJvY2Vzcy5hcmdzLCB0aW1lb3V0LCBvdXRwdXQ9b3V0cHV0KQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwcm9jZXNzLmtpbGwoKQorICAgICAgICAgICAgcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldGNvZGUgPSBwcm9jZXNzLnBvbGwoKQorICAgICAgICBpZiByZXRjb2RlOgorICAgICAgICAgICAgcmFpc2UgQ2FsbGVkUHJvY2Vzc0Vycm9yKHJldGNvZGUsIHByb2Nlc3MuYXJncywgb3V0cHV0PW91dHB1dCkKICAgICByZXR1cm4gb3V0cHV0CiAKIApAQCAtNjE0LDExICs2NzYsMTkgQEAKICAgICA+Pj4gc3VicHJvY2Vzcy5nZXRzdGF0dXNvdXRwdXQoJy9iaW4vanVuaycpCiAgICAgKDI1NiwgJ3NoOiAvYmluL2p1bms6IG5vdCBmb3VuZCcpCiAgICAgIiIiCi0gICAgcGlwZSA9IG9zLnBvcGVuKCd7ICcgKyBjbWQgKyAnOyB9IDI+JjEnLCAncicpCi0gICAgdGV4dCA9IHBpcGUucmVhZCgpCi0gICAgc3RzID0gcGlwZS5jbG9zZSgpCi0gICAgaWYgc3RzIGlzIE5vbmU6IHN0cyA9IDAKLSAgICBpZiB0ZXh0Wy0xOl0gPT0gJ1xuJzogdGV4dCA9IHRleHRbOi0xXQorICAgIHdpdGggb3MucG9wZW4oJ3sgJyArIGNtZCArICc7IH0gMj4mMScsICdyJykgYXMgcGlwZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGV4dCA9IHBpcGUucmVhZCgpCisgICAgICAgICAgICBzdHMgPSBwaXBlLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcHJvY2VzcyA9IHBpcGUuX3Byb2MKKyAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCisgICAgICAgICAgICBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICBpZiBzdHMgaXMgTm9uZToKKyAgICAgICAgc3RzID0gMAorICAgIGlmIHRleHRbLTE6XSA9PSAnXG4nOgorICAgICAgICB0ZXh0ID0gdGV4dFs6LTFdCiAgICAgcmV0dXJuIHN0cywgdGV4dAogCiAKQEAgLTY1MCw2ICs3MjAsOCBAQAogICAgICAgICBfY2xlYW51cCgpCiAKICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2lucHV0ID0gTm9uZQorICAgICAgICBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQgPSBGYWxzZQogICAgICAgICBpZiBidWZzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBidWZzaXplID0gMCAgIyBSZXN0b3JlIGRlZmF1bHQKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYnVmc2l6ZSwgaW50KToKQEAgLTY4NCw2ICs3NTYsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNyZWF0aW9uZmxhZ3MgaXMgb25seSBzdXBwb3J0ZWQgb24gV2luZG93cyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm1zIikKIAorICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCiAgICAgICAgIHNlbGYuc3RkaW4gPSBOb25lCiAgICAgICAgIHNlbGYuc3Rkb3V0ID0gTm9uZQogICAgICAgICBzZWxmLnN0ZGVyciA9IE5vbmUKQEAgLTcyNCw3ICs3OTcsNyBAQAogCiAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgogICAgICAgICAgICAgc2VsZi5zdGRpbiA9IGlvLm9wZW4ocDJjd3JpdGUsICd3YicsIGJ1ZnNpemUpCi0gICAgICAgICAgICBpZiBzZWxmLnVuaXZlcnNhbF9uZXdsaW5lczoKKyAgICAgICAgICAgIGlmIHVuaXZlcnNhbF9uZXdsaW5lczoKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluID0gaW8uVGV4dElPV3JhcHBlcihzZWxmLnN0ZGluLCB3cml0ZV90aHJvdWdoPVRydWUpCiAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6CiAgICAgICAgICAgICBzZWxmLnN0ZG91dCA9IGlvLm9wZW4oYzJwcmVhZCwgJ3JiJywgYnVmc2l6ZSkKQEAgLTczNyw3ICs4MTAsNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfY2hpbGQoYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSwKQEAgLTc4NCwxOSArODU3LDI4IEBACiAgICAgICAgICAgICAjIENoaWxkIGlzIHN0aWxsIHJ1bm5pbmcsIGtlZXAgdXMgYWxpdmUgdW50aWwgd2UgY2FuIHdhaXQgb24gaXQuCiAgICAgICAgICAgICBfYWN0aXZlLmFwcGVuZChzZWxmKQogCisgICAgZGVmIF9nZXRfZGV2bnVsbChzZWxmKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICBzZWxmLl9kZXZudWxsID0gb3Mub3Blbihvcy5kZXZudWxsLCBvcy5PX1JEV1IpCisgICAgICAgIHJldHVybiBzZWxmLl9kZXZudWxsCiAKLSAgICBkZWYgY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQ9Tm9uZSk6CisgICAgZGVmIGNvbW11bmljYXRlKHNlbGYsIGlucHV0PU5vbmUsIHRpbWVvdXQ9Tm9uZSk6CiAgICAgICAgICIiIkludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20KICAgICAgICAgc3Rkb3V0IGFuZCBzdGRlcnIsIHVudGlsIGVuZC1vZi1maWxlIGlzIHJlYWNoZWQuICBXYWl0IGZvcgotICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUgYQotICAgICAgICBzdHJpbmcgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQorICAgICAgICBwcm9jZXNzIHRvIHRlcm1pbmF0ZS4gIFRoZSBvcHRpb25hbCBpbnB1dCBhcmd1bWVudCBzaG91bGQgYmUKKyAgICAgICAgYnl0ZXMgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IgTm9uZSwgaWYgbm8gZGF0YQogICAgICAgICBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuCiAKICAgICAgICAgY29tbXVuaWNhdGUoKSByZXR1cm5zIGEgdHVwbGUgKHN0ZG91dCwgc3RkZXJyKS4iIiIKIAotICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG9ubHkgdXNpbmcgb25lIHBpcGUsIG9yIG5vIHBpcGUgYXQKLSAgICAgICAgIyBhbGwsIHVzaW5nIHNlbGVjdCgpIG9yIHRocmVhZHMgaXMgdW5uZWNlc3NhcnkuCi0gICAgICAgIGlmIFtzZWxmLnN0ZGluLCBzZWxmLnN0ZG91dCwgc2VsZi5zdGRlcnJdLmNvdW50KE5vbmUpID49IDI6CisgICAgICAgIGlmIHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZCBhbmQgaW5wdXQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDYW5ub3Qgc2VuZCBpbnB1dCBhZnRlciBzdGFydGluZyBjb21tdW5pY2F0aW9uIikKKworICAgICAgICAjIE9wdGltaXphdGlvbjogSWYgd2UgYXJlIG5vdCB3b3JyaWVkIGFib3V0IHRpbWVvdXRzLCB3ZSBoYXZlbid0CisgICAgICAgICMgc3RhcnRlZCBjb21tdW5pY2F0aW5nLCBhbmQgd2UgaGF2ZSBvbmUgb3IgemVybyBwaXBlcywgdXNpbmcgc2VsZWN0KCkKKyAgICAgICAgIyBvciB0aHJlYWRzIGlzIHVubmVjZXNzYXJ5LgorICAgICAgICBpZiAodGltZW91dCBpcyBOb25lIGFuZCBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkIGFuZAorICAgICAgICAgICAgW3NlbGYuc3RkaW4sIHNlbGYuc3Rkb3V0LCBzZWxmLnN0ZGVycl0uY291bnQoTm9uZSkgPj0gMik6CiAgICAgICAgICAgICBzdGRvdXQgPSBOb25lCiAgICAgICAgICAgICBzdGRlcnIgPSBOb25lCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluOgpAQCAtODE0LDE1ICs4OTYsNDIgQEAKICAgICAgICAgICAgICAgICBzdGRlcnIgPSBfZWludHJfcmV0cnlfY2FsbChzZWxmLnN0ZGVyci5yZWFkKQogICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYud2FpdCgpCi0gICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBlbmR0aW1lID0gX3RpbWUoKSArIHRpbWVvdXQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZW5kdGltZSA9IE5vbmUKIAotICAgICAgICByZXR1cm4gc2VsZi5fY29tbXVuaWNhdGUoaW5wdXQpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZShpbnB1dCwgZW5kdGltZSwgdGltZW91dCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkID0gVHJ1ZQorCisgICAgICAgICAgICBzdHMgPSBzZWxmLndhaXQodGltZW91dD1zZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKSkKKworICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKICAgICBkZWYgcG9sbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ludGVybmFsX3BvbGwoKQogCiAKKyAgICBkZWYgX3JlbWFpbmluZ190aW1lKHNlbGYsIGVuZHRpbWUpOgorICAgICAgICAiIiJDb252ZW5pZW5jZSBmb3IgX2NvbW11bmljYXRlIHdoZW4gY29tcHV0aW5nIHRpbWVvdXRzLiIiIgorICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIGVuZHRpbWUgLSBfdGltZSgpCisKKworICAgIGRlZiBfY2hlY2tfdGltZW91dChzZWxmLCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAiIiJDb252ZW5pZW5jZSBmb3IgY2hlY2tpbmcgaWYgYSB0aW1lb3V0IGhhcyBleHBpcmVkLiIiIgorICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgaWYgX3RpbWUoKSA+IGVuZHRpbWU6CisgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIG9yaWdfdGltZW91dCkKKworCiAgICAgaWYgbXN3aW5kb3dzOgogICAgICAgICAjCiAgICAgICAgICMgV2luZG93cyBtZXRob2RzCkBAIC04MzksMTEgKzk0OCwxNiBAQAogICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSAtMSwgLTEKIAogICAgICAgICAgICAgaWYgc3RkaW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBwMmNyZWFkID0gX3N1YnByb2Nlc3MuR2V0U3RkSGFuZGxlKF9zdWJwcm9jZXNzLlNURF9JTlBVVF9IQU5ETEUpCisgICAgICAgICAgICAgICAgcDJjcmVhZCA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0lOUFVUX0hBTkRMRSkKICAgICAgICAgICAgICAgICBpZiBwMmNyZWFkIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIF8gPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIF8gPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IEhhbmRsZShwMmNyZWFkKQorICAgICAgICAgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKF8pCiAgICAgICAgICAgICBlbGlmIHN0ZGluID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IEhhbmRsZShwMmNyZWFkKSwgSGFuZGxlKHAyY3dyaXRlKQorICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRpbikKICAgICAgICAgICAgIGVsc2U6CkBAIC04NTIsMTEgKzk2NiwxNiBAQAogICAgICAgICAgICAgcDJjcmVhZCA9IHNlbGYuX21ha2VfaW5oZXJpdGFibGUocDJjcmVhZCkKIAogICAgICAgICAgICAgaWYgc3Rkb3V0IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX09VVFBVVF9IQU5ETEUpCisgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBfd2luYXBpLkdldFN0ZEhhbmRsZShfd2luYXBpLlNURF9PVVRQVVRfSEFORExFKQogICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIF8sIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBfLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IEhhbmRsZShjMnB3cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgX3dpbmFwaS5DbG9zZUhhbmRsZShfKQogICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKLSAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF93aW5hcGkuQ3JlYXRlUGlwZShOb25lLCAwKQorICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gSGFuZGxlKGMycHJlYWQpLCBIYW5kbGUoYzJwd3JpdGUpCisgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIGMycHdyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc2VsZi5fZ2V0X2Rldm51bGwoKSkKICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRvdXQsIGludCk6CiAgICAgICAgICAgICAgICAgYzJwd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRvdXQpCiAgICAgICAgICAgICBlbHNlOgpAQCAtODY1LDEzICs5ODQsMTggQEAKICAgICAgICAgICAgIGMycHdyaXRlID0gc2VsZi5fbWFrZV9pbmhlcml0YWJsZShjMnB3cml0ZSkKIAogICAgICAgICAgICAgaWYgc3RkZXJyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBfc3VicHJvY2Vzcy5HZXRTdGRIYW5kbGUoX3N1YnByb2Nlc3MuU1REX0VSUk9SX0hBTkRMRSkKKyAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IF93aW5hcGkuR2V0U3RkSGFuZGxlKF93aW5hcGkuU1REX0VSUk9SX0hBTkRMRSkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBfLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgXywgZXJyd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBIYW5kbGUoZXJyd3JpdGUpCisgICAgICAgICAgICAgICAgICAgIF93aW5hcGkuQ2xvc2VIYW5kbGUoXykKICAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IFBJUEU6Ci0gICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCisgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfd2luYXBpLkNyZWF0ZVBpcGUoTm9uZSwgMCkKKyAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IEhhbmRsZShlcnJyZWFkKSwgSGFuZGxlKGVycndyaXRlKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKKyAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzZWxmLl9nZXRfZGV2bnVsbCgpKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGVyciwgaW50KToKICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZGVycikKICAgICAgICAgICAgIGVsc2U6CkBAIC04ODYsMjAgKzEwMTAsMjIgQEAKIAogICAgICAgICBkZWYgX21ha2VfaW5oZXJpdGFibGUoc2VsZiwgaGFuZGxlKToKICAgICAgICAgICAgICIiIlJldHVybiBhIGR1cGxpY2F0ZSBvZiBoYW5kbGUsIHdoaWNoIGlzIGluaGVyaXRhYmxlIiIiCi0gICAgICAgICAgICByZXR1cm4gX3N1YnByb2Nlc3MuRHVwbGljYXRlSGFuZGxlKF9zdWJwcm9jZXNzLkdldEN1cnJlbnRQcm9jZXNzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSwgX3N1YnByb2Nlc3MuR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuRFVQTElDQVRFX1NBTUVfQUNDRVNTKQorICAgICAgICAgICAgaCA9IF93aW5hcGkuRHVwbGljYXRlSGFuZGxlKAorICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwgaGFuZGxlLAorICAgICAgICAgICAgICAgIF93aW5hcGkuR2V0Q3VycmVudFByb2Nlc3MoKSwgMCwgMSwKKyAgICAgICAgICAgICAgICBfd2luYXBpLkRVUExJQ0FURV9TQU1FX0FDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiBIYW5kbGUoaCkKIAogCiAgICAgICAgIGRlZiBfZmluZF93OXhwb3BlbihzZWxmKToKICAgICAgICAgICAgICIiIkZpbmQgYW5kIHJldHVybiBhYnNvbHV0IHBhdGggdG8gdzl4cG9wZW4uZXhlIiIiCiAgICAgICAgICAgICB3OXhwb3BlbiA9IG9zLnBhdGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoX3N1YnByb2Nlc3MuR2V0TW9kdWxlRmlsZU5hbWUoMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShfd2luYXBpLkdldE1vZHVsZUZpbGVOYW1lKDApKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3OXhwb3Blbi5leGUiKQogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHc5eHBvcGVuKToKICAgICAgICAgICAgICAgICAjIEVlZWsgLSBmaWxlLW5vdC1mb3VuZCAtIHBvc3NpYmx5IGFuIGVtYmVkZGluZwogICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIC0gc2VlIGlmIHdlIGNhbiBsb2NhdGUgaXQgaW4gc3lzLmV4ZWNfcHJlZml4Ci0gICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjX3ByZWZpeCksCisgICAgICAgICAgICAgICAgdzl4cG9wZW4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5iYXNlX2V4ZWNfcHJlZml4KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidzl4cG9wZW4uZXhlIikKICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModzl4cG9wZW4pOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBsb2NhdGUgdzl4cG9wZW4uZXhlLCB3aGljaCBpcyAiCkBAIC05MDksNyArMTAzNSw3IEBACiAKIAogICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc19mZHMsIGN3ZCwgZW52LCB1bml2ZXJzYWxfbmV3bGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHVwaW5mbywgY3JlYXRpb25mbGFncywgc2hlbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlLApAQCAtOTI2LDE3ICsxMDUyLDE3IEBACiAgICAgICAgICAgICBpZiBzdGFydHVwaW5mbyBpcyBOb25lOgogICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvID0gU1RBUlRVUElORk8oKQogICAgICAgICAgICAgaWYgLTEgbm90IGluIChwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGUpOgotICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3N1YnByb2Nlc3MuU1RBUlRGX1VTRVNUREhBTkRMRVMKKyAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5kd0ZsYWdzIHw9IF93aW5hcGkuU1RBUlRGX1VTRVNUREhBTkRMRVMKICAgICAgICAgICAgICAgICBzdGFydHVwaW5mby5oU3RkSW5wdXQgPSBwMmNyZWFkCiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZE91dHB1dCA9IGMycHdyaXRlCiAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uaFN0ZEVycm9yID0gZXJyd3JpdGUKIAogICAgICAgICAgICAgaWYgc2hlbGw6Ci0gICAgICAgICAgICAgICAgc3RhcnR1cGluZm8uZHdGbGFncyB8PSBfc3VicHJvY2Vzcy5TVEFSVEZfVVNFU0hPV1dJTkRPVwotICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3N1YnByb2Nlc3MuU1dfSElERQorICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLmR3RmxhZ3MgfD0gX3dpbmFwaS5TVEFSVEZfVVNFU0hPV1dJTkRPVworICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLndTaG93V2luZG93ID0gX3dpbmFwaS5TV19ISURFCiAgICAgICAgICAgICAgICAgY29tc3BlYyA9IG9zLmVudmlyb24uZ2V0KCJDT01TUEVDIiwgImNtZC5leGUiKQogICAgICAgICAgICAgICAgIGFyZ3MgPSAne30gL2MgInt9IicuZm9ybWF0IChjb21zcGVjLCBhcmdzKQotICAgICAgICAgICAgICAgIGlmIChfc3VicHJvY2Vzcy5HZXRWZXJzaW9uKCkgPj0gMHg4MDAwMDAwMCBvcgorICAgICAgICAgICAgICAgIGlmIChfd2luYXBpLkdldFZlcnNpb24oKSA+PSAweDgwMDAwMDAwIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKGNvbXNwZWMpLmxvd2VyKCkgPT0gImNvbW1hbmQuY29tIik6CiAgICAgICAgICAgICAgICAgICAgICMgV2luOXgsIG9yIHVzaW5nIGNvbW1hbmQuY29tIG9uIE5ULiBXZSBuZWVkIHRvCiAgICAgICAgICAgICAgICAgICAgICMgdXNlIHRoZSB3OXhwb3BlbiBpbnRlcm1lZGlhdGUgcHJvZ3JhbS4gRm9yIG1vcmUKQEAgLTk1MCwxMSArMTA3NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAjIHVzZSBhdCB4eHgiIGFuZCBhIGhvcGVmdWwgd2FybmluZyBhYm91dCB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBzdGFiaWxpdHkgb2YgeW91ciBzeXN0ZW0uICBDb3N0IGlzIEN0cmwrQyB3b24ndAogICAgICAgICAgICAgICAgICAgICAjIGtpbGwgY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3N1YnByb2Nlc3MuQ1JFQVRFX05FV19DT05TT0xFCisgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uZmxhZ3MgfD0gX3dpbmFwaS5DUkVBVEVfTkVXX0NPTlNPTEUKIAogICAgICAgICAgICAgIyBTdGFydCB0aGUgcHJvY2VzcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhwLCBodCwgcGlkLCB0aWQgPSBfc3VicHJvY2Vzcy5DcmVhdGVQcm9jZXNzKGV4ZWN1dGFibGUsIGFyZ3MsCisgICAgICAgICAgICAgICAgaHAsIGh0LCBwaWQsIHRpZCA9IF93aW5hcGkuQ3JlYXRlUHJvY2VzcyhleGVjdXRhYmxlLCBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5vIHNwZWNpYWwgc2VjdXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KG5vdCBjbG9zZV9mZHMpLApAQCAtOTgxLDE3ICsxMTA3LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIGMycHdyaXRlLkNsb3NlKCkKICAgICAgICAgICAgICAgICBpZiBlcnJ3cml0ZSAhPSAtMToKICAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUuQ2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2Rldm51bGwpCiAKICAgICAgICAgICAgICMgUmV0YWluIHRoZSBwcm9jZXNzIGhhbmRsZSwgYnV0IGNsb3NlIHRoZSB0aHJlYWQgaGFuZGxlCiAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlID0gaHAKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZSA9IEhhbmRsZShocCkKICAgICAgICAgICAgIHNlbGYucGlkID0gcGlkCi0gICAgICAgICAgICBodC5DbG9zZSgpCisgICAgICAgICAgICBfd2luYXBpLkNsb3NlSGFuZGxlKGh0KQogCiAgICAgICAgIGRlZiBfaW50ZXJuYWxfcG9sbChzZWxmLCBfZGVhZHN0YXRlPU5vbmUsCi0gICAgICAgICAgICAgICAgX1dhaXRGb3JTaW5nbGVPYmplY3Q9X3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdCwKLSAgICAgICAgICAgICAgICBfV0FJVF9PQkpFQ1RfMD1fc3VicHJvY2Vzcy5XQUlUX09CSkVDVF8wLAotICAgICAgICAgICAgICAgIF9HZXRFeGl0Q29kZVByb2Nlc3M9X3N1YnByb2Nlc3MuR2V0RXhpdENvZGVQcm9jZXNzKToKKyAgICAgICAgICAgICAgICBfV2FpdEZvclNpbmdsZU9iamVjdD1fd2luYXBpLldhaXRGb3JTaW5nbGVPYmplY3QsCisgICAgICAgICAgICAgICAgX1dBSVRfT0JKRUNUXzA9X3dpbmFwaS5XQUlUX09CSkVDVF8wLAorICAgICAgICAgICAgICAgIF9HZXRFeGl0Q29kZVByb2Nlc3M9X3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3MpOgogICAgICAgICAgICAgIiIiQ2hlY2sgaWYgY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZC4gIFJldHVybnMgcmV0dXJuY29kZQogICAgICAgICAgICAgYXR0cmlidXRlLgogCkBAIC0xMDA1LDEzICsxMTMzLDIxIEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIAotICAgICAgICBkZWYgd2FpdChzZWxmKToKKyAgICAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lLCBlbmR0aW1lPU5vbmUpOgogICAgICAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBSZXR1cm5zIHJldHVybmNvZGUKICAgICAgICAgICAgIGF0dHJpYnV0ZS4iIiIKKyAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMgPSBfd2luYXBpLklORklOSVRFCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRpbWVvdXRfbWlsbGlzID0gaW50KHRpbWVvdXQgKiAxMDAwKQogICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3VicHJvY2Vzcy5JTkZJTklURSkKLSAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfc3VicHJvY2Vzcy5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IF93aW5hcGkuV2FpdEZvclNpbmdsZU9iamVjdChzZWxmLl9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9taWxsaXMpCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0ID09IF93aW5hcGkuV0FJVF9USU1FT1VUOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0RXhwaXJlZChzZWxmLmFyZ3MsIHRpbWVvdXQpCisgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuY29kZQogCiAKQEAgLTEwMjAsMjIgKzExNTYsMjMgQEAKICAgICAgICAgICAgIGZoLmNsb3NlKCkKIAogCi0gICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQpOgotICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZSAjIFJldHVybgotICAgICAgICAgICAgc3RkZXJyID0gTm9uZSAjIFJldHVybgotCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICBzdGRvdXQgPSBbXQotICAgICAgICAgICAgICAgIHN0ZG91dF90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRvdXQsIHN0ZG91dCkpCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5zdGFydCgpCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZGVycjoKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBbXQotICAgICAgICAgICAgICAgIHN0ZGVycl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9yZWFkZXJ0aHJlYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRlcnIsIHN0ZGVycikpCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgc3RkZXJyX3RocmVhZC5zdGFydCgpCisgICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICAgICAjIFN0YXJ0IHJlYWRlciB0aHJlYWRzIGZlZWRpbmcgaW50byBhIGxpc3QgaGFuZ2luZyBvZmYgb2YgdGhpcworICAgICAgICAgICAgIyBvYmplY3QsIHVubGVzcyB0aGV5J3ZlIGFscmVhZHkgYmVlbiBzdGFydGVkLgorICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgYW5kIG5vdCBoYXNhdHRyKHNlbGYsICJfc3Rkb3V0X2J1ZmYiKToKKyAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXRfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkID0gXAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5fcmVhZGVydGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnN0ZG91dCwgc2VsZi5fc3Rkb3V0X2J1ZmYpKQorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0X3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyIGFuZCBub3QgaGFzYXR0cihzZWxmLCAiX3N0ZGVycl9idWZmIik6CisgICAgICAgICAgICAgICAgc2VsZi5fc3RkZXJyX2J1ZmYgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZCA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3JlYWRlcnRocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5zdGRlcnIsIHNlbGYuX3N0ZGVycl9idWZmKSkKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVycl90aHJlYWQuZGFlbW9uID0gVHJ1ZQorICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyX3RocmVhZC5zdGFydCgpCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CiAgICAgICAgICAgICAgICAgaWYgaW5wdXQgaXMgbm90IE5vbmU6CkBAIC0xMDQ2LDEwICsxMTgzLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKIAorICAgICAgICAgICAgIyBXYWl0IGZvciB0aGUgcmVhZGVyIHRocmVhZHMsIG9yIHRpbWUgb3V0LiAgSWYgd2UgdGltZSBvdXQsIHRoZQorICAgICAgICAgICAgIyB0aHJlYWRzIHJlbWFpbiByZWFkaW5nIGFuZCB0aGUgZmRzIGxlZnQgb3BlbiBpbiBjYXNlIHRoZSB1c2VyCisgICAgICAgICAgICAjIGNhbGxzIGNvbW11bmljYXRlIGFnYWluLgorICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRvdXRfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXRfdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5zdGRlcnJfdGhyZWFkLmpvaW4oc2VsZi5fcmVtYWluaW5nX3RpbWUoZW5kdGltZSkpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnJfdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQorCisgICAgICAgICAgICAjIENvbGxlY3QgdGhlIG91dHB1dCBmcm9tIGFuZCBjbG9zZSBib3RoIHBpcGVzLCBub3cgdGhhdCB3ZSBrbm93CisgICAgICAgICAgICAjIGJvdGggaGF2ZSBiZWVuIHJlYWQgc3VjY2Vzc2Z1bGx5LgorICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZQorICAgICAgICAgICAgc3RkZXJyID0gTm9uZQogICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6Ci0gICAgICAgICAgICAgICAgc3Rkb3V0X3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgICAgICBzdGRvdXQgPSBzZWxmLl9zdGRvdXRfYnVmZgorICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmNsb3NlKCkKICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHN0ZGVycl90aHJlYWQuam9pbigpCisgICAgICAgICAgICAgICAgc3RkZXJyID0gc2VsZi5fc3RkZXJyX2J1ZmYKKyAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5jbG9zZSgpCiAKICAgICAgICAgICAgICMgQWxsIGRhdGEgZXhjaGFuZ2VkLiAgVHJhbnNsYXRlIGxpc3RzIGludG8gc3RyaW5ncy4KICAgICAgICAgICAgIGlmIHN0ZG91dCBpcyBub3QgTm9uZToKQEAgLTEwNTcsNyArMTIxMiw2IEBACiAgICAgICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc3RkZXJyID0gc3RkZXJyWzBdCiAKLSAgICAgICAgICAgIHNlbGYud2FpdCgpCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAgICAgICAgIGRlZiBzZW5kX3NpZ25hbChzZWxmLCBzaWcpOgpAQCAtMTA3NiwxNCArMTIzMCwxMiBAQAogICAgICAgICAgICAgIiIiVGVybWluYXRlcyB0aGUgcHJvY2VzcwogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgX3N1YnByb2Nlc3MuVGVybWluYXRlUHJvY2VzcyhzZWxmLl9oYW5kbGUsIDEpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIF93aW5hcGkuVGVybWluYXRlUHJvY2VzcyhzZWxmLl9oYW5kbGUsIDEpCisgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgICMgRVJST1JfQUNDRVNTX0RFTklFRCAod2luZXJyb3IgNSkgaXMgcmVjZWl2ZWQgd2hlbiB0aGUKICAgICAgICAgICAgICAgICAjIHByb2Nlc3MgYWxyZWFkeSBkaWVkLgotICAgICAgICAgICAgICAgIGlmIGUud2luZXJyb3IgIT0gNToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgICAgICByYyA9IF9zdWJwcm9jZXNzLkdldEV4aXRDb2RlUHJvY2VzcyhzZWxmLl9oYW5kbGUpCi0gICAgICAgICAgICAgICAgaWYgcmMgPT0gX3N1YnByb2Nlc3MuU1RJTExfQUNUSVZFOgorICAgICAgICAgICAgICAgIHJjID0gX3dpbmFwaS5HZXRFeGl0Q29kZVByb2Nlc3Moc2VsZi5faGFuZGxlKQorICAgICAgICAgICAgICAgIGlmIHJjID09IF93aW5hcGkuU1RJTExfQUNUSVZFOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IHJjCiAKQEAgLTExMDUsNiArMTI1Nyw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBQSVBFOgogICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gX2NyZWF0ZV9waXBlKCkKKyAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gREVWTlVMTDoKKyAgICAgICAgICAgICAgICBwMmNyZWFkID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBzdGRpbgogICAgICAgICAgICAgZWxzZToKQEAgLTExMTUsNiArMTI2OSw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxpZiBzdGRvdXQgPT0gUElQRToKICAgICAgICAgICAgICAgICBjMnByZWFkLCBjMnB3cml0ZSA9IF9jcmVhdGVfcGlwZSgpCisgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBERVZOVUxMOgorICAgICAgICAgICAgICAgIGMycHdyaXRlID0gc2VsZi5fZ2V0X2Rldm51bGwoKQogICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IHN0ZG91dAogICAgICAgICAgICAgZWxzZToKQEAgLTExMjcsNiArMTI4Myw4IEBACiAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUgPSBfY3JlYXRlX3BpcGUoKQogICAgICAgICAgICAgZWxpZiBzdGRlcnIgPT0gU1RET1VUOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gYzJwd3JpdGUKKyAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IERFVk5VTEw6CisgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzZWxmLl9nZXRfZGV2bnVsbCgpCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gc3RkZXJyCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTE0OSw3ICsxMzA3LDcgQEAKIAogCiAgICAgICAgIGRlZiBfZXhlY3V0ZV9jaGlsZChzZWxmLCBhcmdzLCBleGVjdXRhYmxlLCBwcmVleGVjX2ZuLCBjbG9zZV9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzX2ZkcywgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NfZmRzLCBjd2QsIGVudiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCkBAIC0xMTU3LDcgKzEzMTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLCBzdGFydF9uZXdfc2Vzc2lvbik6CiAgICAgICAgICAgICAiIiJFeGVjdXRlIHByb2dyYW0gKFBPU0lYIHZlcnNpb24pIiIiCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgc3RyKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYXJncywgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBhcmdzID0gW2FyZ3NdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGFyZ3MgPSBsaXN0KGFyZ3MpCkBAIC0xMTc3LDE1MyArMTMzNSwzNCBAQAogICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlID0gX2NyZWF0ZV9waXBlKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgV2UgbXVzdCBhdm9pZCBjb21wbGV4IHdvcmsgdGhhdCBjb3VsZCBpbnZvbHZlCisgICAgICAgICAgICAgICAgICAgICMgbWFsbG9jIG9yIGZyZWUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8gYXZvaWQKKyAgICAgICAgICAgICAgICAgICAgIyBwb3RlbnRpYWwgZGVhZGxvY2tzLCB0aHVzIHdlIGRvIGFsbCB0aGlzIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICMgYW5kIHBhc3MgaXQgdG8gZm9ya19leGVjKCkKIAotICAgICAgICAgICAgICAgICAgICBpZiBfcG9zaXhzdWJwcm9jZXNzOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSBtdXN0IGF2b2lkIGNvbXBsZXggd29yayB0aGF0IGNvdWxkIGludm9sdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbWFsbG9jIG9yIGZyZWUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcG90ZW50aWFsIGRlYWRsb2NrcywgdGh1cyB3ZSBkbyBhbGwgdGhpcyBoZXJlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBhbmQgcGFzcyBpdCB0byBmb3JrX2V4ZWMoKQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBbb3MuZnNlbmNvZGUoaykgKyBiJz0nICsgb3MuZnNlbmNvZGUodikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBlbnYuaXRlbXMoKV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBOb25lICAjIFVzZSBleGVjdiBpbnN0ZWFkIG9mIGV4ZWN2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5mc2VuY29kZShleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IChleGVjdXRhYmxlLCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIG9zLl9leGVjdnBlKCkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gdHVwbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5mc2VuY29kZShkaXIpLCBleGVjdXRhYmxlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGlyIGluIG9zLmdldF9leGVjX3BhdGgoZW52KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQotICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAuYWRkKGVycnBpcGVfd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IF9wb3NpeHN1YnByb2Nlc3MuZm9ya19leGVjKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBleGVjdXRhYmxlX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcywgc29ydGVkKGZkc190b19rZWVwKSwgY3dkLCBlbnZfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsIGMycHJlYWQsIGMycHdyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlX3NpZ25hbHMsIHN0YXJ0X25ld19zZXNzaW9uLCBwcmVleGVjX2ZuKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgaWYgZW52IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBbb3MuZnNlbmNvZGUoaykgKyBiJz0nICsgb3MuZnNlbmNvZGUodikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGVudi5pdGVtcygpXQogICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBQdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbjogSXQgaXMgbm90IHRocmVhZCBzYWZlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9uIG1heSBkZWFkbG9jayBpbiB0aGUgY2hpbGQgaWYgeW91cgotICAgICAgICAgICAgICAgICAgICAgICAgIyBwYXJlbnQgcHJvY2VzcyBoYXMgYW55IG90aGVyIHRocmVhZHMgcnVubmluZy4KLQotICAgICAgICAgICAgICAgICAgICAgICAgZ2Nfd2FzX2VuYWJsZWQgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICAgICAgICAgICAgICAgICAgIyBEaXNhYmxlIGdjIHRvIGF2b2lkIGJ1ZyB3aGVyZSBnYyAtPiBmaWxlX2RlYWxsb2MgLT4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgd3JpdGUgdG8gc3RkZXJyIC0+IGhhbmcuICBTZWUgaXNzdWUxMzM2Ci0gICAgICAgICAgICAgICAgICAgICAgICBnYy5kaXNhYmxlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IG9zLmZvcmsoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGdjX3dhc19lbmFibGVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5lbmFibGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jaGlsZF9jcmVhdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5waWQgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENoaWxkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhY2hlZF9wcmVleGVjID0gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2xvc2UgcGFyZW50J3MgcGlwZSBlbmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAyY3dyaXRlICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UocDJjd3JpdGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMycHJlYWQgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShjMnByZWFkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnJyZWFkICE9IC0xOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycmVhZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoZXJycGlwZV9yZWFkKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkdXBpbmcgZmRzLCBpZiB0aGVyZSBhcmlzZXMgYSBzaXR1YXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aGVyZSBvbmUgb2YgdGhlIGZkcyBpcyBlaXRoZXIgMCwgMSBvciAyLCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlzIHBvc3NpYmxlIHRoYXQgaXQgaXMgb3ZlcndyaXR0ZW4gKCMxMjYwNykuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGMycHdyaXRlID09IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG9zLmR1cChjMnB3cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgPT0gMCBvciBlcnJ3cml0ZSA9PSAxOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBvcy5kdXAoZXJyd3JpdGUpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBEdXAgZmRzIGZvciBjaGlsZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYgX2R1cDIoYSwgYik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGR1cDIoKSByZW1vdmVzIHRoZSBDTE9FWEVDIGZsYWcgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdlIG11c3QgZG8gaXQgb3Vyc2VsdmVzIGlmIGR1cDIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3b3VsZCBiZSBhIG5vLW9wIChpc3N1ZSAjMTA4MDYpLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYSA9PSBiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhhLCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgYSAhPSAtMToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5kdXAyKGEsIGIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKHAyY3JlYWQsIDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdXAyKGMycHdyaXRlLCAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVwMihlcnJ3cml0ZSwgMikKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENsb3NlIHBpcGUgZmRzLiAgTWFrZSBzdXJlIHdlIGRvbid0IGNsb3NlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNhbWUgZmQgbW9yZSB0aGFuIG9uY2UsIG9yIHN0YW5kYXJkIGZkcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VkID0gc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZkIGluIFtwMmNyZWFkLCBjMnB3cml0ZSwgZXJyd3JpdGVdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmQgPiAyIGFuZCBmZCBub3QgaW4gY2xvc2VkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlZC5hZGQoZmQpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDbG9zZSBhbGwgb3RoZXIgZmRzLCBpZiBhc2tlZCBmb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2xvc2VfZmRzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRzX3RvX2tlZXAgPSBzZXQocGFzc19mZHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Nsb3NlX2ZkcyhmZHNfdG9fa2VlcCkKLQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN3ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNoZGlyKGN3ZCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgYSBjb3B5IG9mIFB5dGhvbi9weXRob25ydW4uYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIF9QeV9SZXN0b3JlU2lnbmFscygpLiAgSWYgdGhhdCB3ZXJlIGV4cG9zZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhcyBhIHN5cy5fcHlfcmVzdG9yZXNpZ25hbHMgZnVuYyBpdCB3b3VsZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGJldHRlci4uIGJ1dCB0aGlzIHB1cmUgcHl0aG9uIGltcGxlbWVudGF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaXNuJ3QgbGlrZWx5IHRvIGJlIHVzZWQgbXVjaCBhbnltb3JlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXN0b3JlX3NpZ25hbHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWxzID0gKCdTSUdQSVBFJywgJ1NJR1hGWicsICdTSUdYRlNaJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzaWcgaW4gc2lnbmFsczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNpZ25hbCwgc2lnKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChnZXRhdHRyKHNpZ25hbCwgc2lnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYWwuU0lHX0RGTCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGFydF9uZXdfc2Vzc2lvbiBhbmQgaGFzYXR0cihvcywgJ3NldHNpZCcpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc2V0c2lkKCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkX3ByZWV4ZWMgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHByZWV4ZWNfZm46Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuKCkKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlbnYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmV4ZWN2cChleGVjdXRhYmxlLCBhcmdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZXhlY3ZwZShleGVjdXRhYmxlLCBhcmdzLCBlbnYpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUgPSBzeXMuZXhjX2luZm8oKVs6Ml0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhjX3ZhbHVlLCBPU0Vycm9yKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0gPSBleGNfdmFsdWUuZXJybm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm9fbnVtID0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWNoZWRfcHJlZXhlYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfdmFsdWUgPSAibm9leGVjIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICclczoleDolcycgJSAoZXhjX3R5cGUuX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJub19udW0sIGV4Y192YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmVuY29kZShlcnJvcnM9InN1cnJvZ2F0ZXBhc3MiKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoZXJycGlwZV93cml0ZSwgbWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgTVVTVCBub3QgYWxsb3cgYW55dGhpbmcgb2RkIGhhcHBlbmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhYm92ZSB0byBwcmV2ZW50IHVzIGZyb20gZXhpdGluZyBiZWxvdy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBleGl0Y29kZSB3b24ndCBiZSByZXBvcnRlZCB0byBhcHBsaWNhdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNvIGl0IHJlYWxseSBkb2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgyNTUpCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgUGFyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBnY193YXNfZW5hYmxlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5lbmFibGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgZW52X2xpc3QgPSBOb25lICAjIFVzZSBleGVjdiBpbnN0ZWFkIG9mIGV4ZWN2ZS4KKyAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmZzZW5jb2RlKGV4ZWN1dGFibGUpCisgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVfbGlzdCA9IChleGVjdXRhYmxlLCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiBvcy5fZXhlY3ZwZSgpLgorICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZV9saXN0ID0gdHVwbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmZzZW5jb2RlKGRpciksIGV4ZWN1dGFibGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRpciBpbiBvcy5nZXRfZXhlY19wYXRoKGVudikpCisgICAgICAgICAgICAgICAgICAgIGZkc190b19rZWVwID0gc2V0KHBhc3NfZmRzKQorICAgICAgICAgICAgICAgICAgICBmZHNfdG9fa2VlcC5hZGQoZXJycGlwZV93cml0ZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5waWQgPSBfcG9zaXhzdWJwcm9jZXNzLmZvcmtfZXhlYygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBleGVjdXRhYmxlX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzLCBzb3J0ZWQoZmRzX3RvX2tlZXApLCBjd2QsIGVudl9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlLCBjMnByZWFkLCBjMnB3cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJwaXBlX3JlYWQsIGVycnBpcGVfd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZV9zaWduYWxzLCBzdGFydF9uZXdfc2Vzc2lvbiwgcHJlZXhlY19mbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2hpbGRfY3JlYXRlZCA9IFRydWUKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICAjIGJlIHN1cmUgdGhlIEZEIGlzIGNsb3NlZCBubyBtYXR0ZXIgd2hhdAogICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShlcnJwaXBlX3dyaXRlKQpAQCAtMTMzNCw2ICsxMzczLDggQEAKICAgICAgICAgICAgICAgICAgICAgb3MuY2xvc2UoYzJwd3JpdGUpCiAgICAgICAgICAgICAgICAgaWYgZXJyd3JpdGUgIT0gLTEgYW5kIGVycnJlYWQgIT0gLTE6CiAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGVycndyaXRlKQorICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19kZXZudWxsJyk6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYuX2Rldm51bGwpCiAKICAgICAgICAgICAgICAgICAjIFdhaXQgZm9yIGV4ZWMgdG8gZmFpbCBvciBzdWNjZWVkOyBwb3NzaWJseSByYWlzaW5nIGFuCiAgICAgICAgICAgICAgICAgIyBleGNlcHRpb24gKGxpbWl0ZWQgaW4gc2l6ZSkKQEAgLTE0MjUsMjUgKzE0NjYsNTcgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKIAogCi0gICAgICAgIGRlZiB3YWl0KHNlbGYpOgorICAgICAgICBkZWYgX3RyeV93YWl0KHNlbGYsIHdhaXRfZmxhZ3MpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBfZWludHJfcmV0cnlfY2FsbChvcy53YWl0cGlkLCBzZWxmLnBpZCwgd2FpdF9mbGFncykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgaWYgU0lHQ0xEIGlzIHNldCB0byBiZSBpZ25vcmVkIG9yIHdhaXRpbmcKKyAgICAgICAgICAgICAgICAjIGZvciBjaGlsZCBwcm9jZXNzZXMgaGFzIG90aGVyd2lzZSBiZWVuIGRpc2FibGVkIGZvciBvdXIKKyAgICAgICAgICAgICAgICAjIHByb2Nlc3MuICBUaGlzIGNoaWxkIGlzIGRlYWQsIHdlIGNhbid0IGdldCB0aGUgc3RhdHVzLgorICAgICAgICAgICAgICAgIHBpZCA9IHNlbGYucGlkCisgICAgICAgICAgICAgICAgc3RzID0gMAorICAgICAgICAgICAgcmV0dXJuIChwaWQsIHN0cykKKworCisgICAgICAgIGRlZiB3YWl0KHNlbGYsIHRpbWVvdXQ9Tm9uZSwgZW5kdGltZT1Ob25lKToKICAgICAgICAgICAgICIiIldhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlLiAgUmV0dXJucyByZXR1cm5jb2RlCiAgICAgICAgICAgICBhdHRyaWJ1dGUuIiIiCi0gICAgICAgICAgICBpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHBpZCwgc3RzID0gX2VpbnRyX3JldHJ5X2NhbGwob3Mud2FpdHBpZCwgc2VsZi5waWQsIDApCi0gICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ0hJTEQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaGFwcGVucyBpZiBTSUdDTEQgaXMgc2V0IHRvIGJlIGlnbm9yZWQgb3Igd2FpdGluZwotICAgICAgICAgICAgICAgICAgICAjIGZvciBjaGlsZCBwcm9jZXNzZXMgaGFzIG90aGVyd2lzZSBiZWVuIGRpc2FibGVkIGZvciBvdXIKLSAgICAgICAgICAgICAgICAgICAgIyBwcm9jZXNzLiAgVGhpcyBjaGlsZCBpcyBkZWFkLCB3ZSBjYW4ndCBnZXQgdGhlIHN0YXR1cy4KLSAgICAgICAgICAgICAgICAgICAgc3RzID0gMAorICAgICAgICAgICAgaWYgc2VsZi5yZXR1cm5jb2RlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHVybmNvZGUKKworICAgICAgICAgICAgIyBlbmR0aW1lIGlzIHByZWZlcnJlZCB0byB0aW1lb3V0LiAgdGltZW91dCBpcyBvbmx5IHVzZWQgZm9yCisgICAgICAgICAgICAjIHByaW50aW5nLgorICAgICAgICAgICAgaWYgZW5kdGltZSBpcyBub3QgTm9uZSBvciB0aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIGVuZHRpbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZW5kdGltZSA9IF90aW1lKCkgKyB0aW1lb3V0CisgICAgICAgICAgICAgICAgZWxpZiB0aW1lb3V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLl9yZW1haW5pbmdfdGltZShlbmR0aW1lKQorCisgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgRW50ZXIgYSBidXN5IGxvb3AgaWYgd2UgaGF2ZSBhIHRpbWVvdXQuICBUaGlzIGJ1c3kgbG9vcCB3YXMKKyAgICAgICAgICAgICAgICAjIGNyaWJiZWQgZnJvbSBMaWIvdGhyZWFkaW5nLnB5IGluIFRocmVhZC53YWl0KCkgYXQgcjcxMDY1LgorICAgICAgICAgICAgICAgIGRlbGF5ID0gMC4wMDA1ICMgNTAwIHVzIC0+IGluaXRpYWwgZGVsYXkgb2YgMSBtcworICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIChwaWQsIHN0cykgPSBzZWxmLl90cnlfd2FpdChvcy5XTk9IQU5HKQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcGlkID09IHNlbGYucGlkIG9yIHBpZCA9PSAwCisgICAgICAgICAgICAgICAgICAgIGlmIHBpZCA9PSBzZWxmLnBpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9leGl0c3RhdHVzKHN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHJlbWFpbmluZyA8PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCB0aW1lb3V0KQorICAgICAgICAgICAgICAgICAgICBkZWxheSA9IG1pbihkZWxheSAqIDIsIHJlbWFpbmluZywgLjA1KQorICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKGRlbGF5KQorICAgICAgICAgICAgZWxpZiBzZWxmLnJldHVybmNvZGUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAocGlkLCBzdHMpID0gc2VsZi5fdHJ5X3dhaXQoMCkKICAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfZXhpdHN0YXR1cyhzdHMpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5jb2RlCiAKIAotICAgICAgICBkZWYgX2NvbW11bmljYXRlKHNlbGYsIGlucHV0KToKLSAgICAgICAgICAgIGlmIHNlbGYuc3RkaW46CisgICAgICAgIGRlZiBfY29tbXVuaWNhdGUoc2VsZiwgaW5wdXQsIGVuZHRpbWUsIG9yaWdfdGltZW91dCk6CisgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgogICAgICAgICAgICAgICAgICMgRmx1c2ggc3RkaW8gYnVmZmVyLiAgVGhpcyBtaWdodCBibG9jaywgaWYgdGhlIHVzZXIgaGFzCiAgICAgICAgICAgICAgICAgIyBiZWVuIHdyaXRpbmcgdG8gLnN0ZGluIGluIGFuIHVuY29udHJvbGxlZCBmYXNoaW9uLgogICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uZmx1c2goKQpAQCAtMTQ1MSw5ICsxNTI0LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkaW4uY2xvc2UoKQogCiAgICAgICAgICAgICBpZiBfaGFzX3BvbGw6Ci0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3BvbGwoaW5wdXQpCisgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBzZWxmLl9jb21tdW5pY2F0ZV93aXRoX3BvbGwoaW5wdXQsIGVuZHRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ190aW1lb3V0KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYuX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KGlucHV0KQorICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gc2VsZi5fY29tbXVuaWNhdGVfd2l0aF9zZWxlY3QoaW5wdXQsIGVuZHRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnX3RpbWVvdXQpCisKKyAgICAgICAgICAgIHNlbGYud2FpdCh0aW1lb3V0PXNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpKQogCiAgICAgICAgICAgICAjIEFsbCBkYXRhIGV4Y2hhbmdlZC4gIFRyYW5zbGF0ZSBsaXN0cyBpbnRvIHN0cmluZ3MuCiAgICAgICAgICAgICBpZiBzdGRvdXQgaXMgbm90IE5vbmU6CkBAIC0xNDcxLDY3ICsxNTQ4LDkyIEBACiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX3RyYW5zbGF0ZV9uZXdsaW5lcyhzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGVyci5lbmNvZGluZykKIAotICAgICAgICAgICAgc2VsZi53YWl0KCkKICAgICAgICAgICAgIHJldHVybiAoc3Rkb3V0LCBzdGRlcnIpCiAKIAotICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfcG9sbChzZWxmLCBpbnB1dCk6CisgICAgICAgIGRlZiBfc2F2ZV9pbnB1dChzZWxmLCBpbnB1dCk6CisgICAgICAgICAgICAjIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmcm9tIHRoZSBfY29tbXVuaWNhdGVfd2l0aF8qKCkgbWV0aG9kcworICAgICAgICAgICAgIyBzbyB0aGF0IGlmIHdlIHRpbWUgb3V0IHdoaWxlIGNvbW11bmljYXRpbmcsIHdlIGNhbiBjb250aW51ZQorICAgICAgICAgICAgIyBzZW5kaW5nIGlucHV0IGlmIHdlIHJldHJ5LgorICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBhbmQgc2VsZi5faW5wdXQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgPSAwCisgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBpbnB1dAorICAgICAgICAgICAgICAgIGlmIHNlbGYudW5pdmVyc2FsX25ld2xpbmVzIGFuZCBpbnB1dCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5faW5wdXQgPSBzZWxmLl9pbnB1dC5lbmNvZGUoc2VsZi5zdGRpbi5lbmNvZGluZykKKworCisgICAgICAgIGRlZiBfY29tbXVuaWNhdGVfd2l0aF9wb2xsKHNlbGYsIGlucHV0LCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZSAjIFJldHVybgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZSAjIFJldHVybgotICAgICAgICAgICAgZmQyZmlsZSA9IHt9Ci0gICAgICAgICAgICBmZDJvdXRwdXQgPSB7fQorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMmZpbGUgPSB7fQogCiAgICAgICAgICAgICBwb2xsZXIgPSBzZWxlY3QucG9sbCgpCiAgICAgICAgICAgICBkZWYgcmVnaXN0ZXJfYW5kX2FwcGVuZChmaWxlX29iaiwgZXZlbnRtYXNrKToKICAgICAgICAgICAgICAgICBwb2xsZXIucmVnaXN0ZXIoZmlsZV9vYmouZmlsZW5vKCksIGV2ZW50bWFzaykKLSAgICAgICAgICAgICAgICBmZDJmaWxlW2ZpbGVfb2JqLmZpbGVubygpXSA9IGZpbGVfb2JqCisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZVtmaWxlX29iai5maWxlbm8oKV0gPSBmaWxlX29iagogCiAgICAgICAgICAgICBkZWYgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKToKICAgICAgICAgICAgICAgICBwb2xsZXIudW5yZWdpc3RlcihmZCkKLSAgICAgICAgICAgICAgICBmZDJmaWxlW2ZkXS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgZmQyZmlsZS5wb3AoZmQpCisgICAgICAgICAgICAgICAgc2VsZi5fZmQyZmlsZVtmZF0uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMmZpbGUucG9wKGZkKQogCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBpbnB1dDoKICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hbmRfYXBwZW5kKHNlbGYuc3RkaW4sIHNlbGVjdC5QT0xMT1VUKQogCisgICAgICAgICAgICAjIE9ubHkgY3JlYXRlIHRoaXMgbWFwcGluZyBpZiB3ZSBoYXZlbid0IGFscmVhZHkuCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dCA9IHt9CisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZG91dC5maWxlbm8oKV0gPSBbXQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXRbc2VsZi5zdGRlcnIuZmlsZW5vKCldID0gW10KKwogICAgICAgICAgICAgc2VsZWN0X1BPTExJTl9QT0xMUFJJID0gc2VsZWN0LlBPTExJTiB8IHNlbGVjdC5QT0xMUFJJCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKICAgICAgICAgICAgICAgICByZWdpc3Rlcl9hbmRfYXBwZW5kKHNlbGYuc3Rkb3V0LCBzZWxlY3RfUE9MTElOX1BPTExQUkkpCi0gICAgICAgICAgICAgICAgZmQyb3V0cHV0W3NlbGYuc3Rkb3V0LmZpbGVubygpXSA9IHN0ZG91dCA9IFtdCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5fZmQyb3V0cHV0W3NlbGYuc3Rkb3V0LmZpbGVubygpXQogICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CiAgICAgICAgICAgICAgICAgcmVnaXN0ZXJfYW5kX2FwcGVuZChzZWxmLnN0ZGVyciwgc2VsZWN0X1BPTExJTl9QT0xMUFJJKQotICAgICAgICAgICAgICAgIGZkMm91dHB1dFtzZWxmLnN0ZGVyci5maWxlbm8oKV0gPSBzdGRlcnIgPSBbXQorICAgICAgICAgICAgICAgIHN0ZGVyciA9IHNlbGYuX2ZkMm91dHB1dFtzZWxmLnN0ZGVyci5maWxlbm8oKV0KIAotICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ID0gMAotICAgICAgICAgICAgd2hpbGUgZmQyZmlsZToKKyAgICAgICAgICAgIHNlbGYuX3NhdmVfaW5wdXQoaW5wdXQpCisKKyAgICAgICAgICAgIHdoaWxlIHNlbGYuX2ZkMmZpbGU6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgdGltZW91dCA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBwb2xsZXIucG9sbCgpCisgICAgICAgICAgICAgICAgICAgIHJlYWR5ID0gcG9sbGVyLnBvbGwodGltZW91dCkKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGUuYXJnc1swXSA9PSBlcnJuby5FSU5UUjoKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgc2VsZi5fY2hlY2tfdGltZW91dChlbmR0aW1lLCBvcmlnX3RpbWVvdXQpCiAKICAgICAgICAgICAgICAgICAjIFhYWCBSZXdyaXRlIHRoZXNlIHRvIHVzZSBub24tYmxvY2tpbmcgSS9PIG9uIHRoZQogICAgICAgICAgICAgICAgICMgZmlsZSBvYmplY3RzOyB0aGV5IGFyZSBubyBsb25nZXIgdXNpbmcgQyBzdGRpbyEKIAogICAgICAgICAgICAgICAgIGZvciBmZCwgbW9kZSBpbiByZWFkeToKICAgICAgICAgICAgICAgICAgICAgaWYgbW9kZSAmIHNlbGVjdC5QT0xMT1VUOgotICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBpbnB1dFtpbnB1dF9vZmZzZXQgOiBpbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCisgICAgICAgICAgICAgICAgICAgICAgICBjaHVuayA9IHNlbGYuX2lucHV0W3NlbGYuX2lucHV0X29mZnNldCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArIF9QSVBFX0JVRl0KICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgKz0gb3Mud3JpdGUoZmQsIGNodW5rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArPSBvcy53cml0ZShmZCwgY2h1bmspCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBJUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnB1dF9vZmZzZXQgPj0gbGVuKGlucHV0KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbnB1dF9vZmZzZXQgPj0gbGVuKHNlbGYuX2lucHV0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfdW5yZWdpc3Rlcl9hbmRfcmVtb3ZlKGZkKQogICAgICAgICAgICAgICAgICAgICBlbGlmIG1vZGUgJiBzZWxlY3RfUE9MTElOX1BPTExQUkk6CiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gb3MucmVhZChmZCwgNDA5NikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX3VucmVnaXN0ZXJfYW5kX3JlbW92ZShmZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZkMm91dHB1dFtmZF0uYXBwZW5kKGRhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9mZDJvdXRwdXRbZmRdLmFwcGVuZChkYXRhKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBJZ25vcmUgaGFuZyB1cCBvciBlcnJvcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV91bnJlZ2lzdGVyX2FuZF9yZW1vdmUoZmQpCkBAIC0xNTM5LDYxICsxNjQxLDgzIEBACiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQogCiAKLSAgICAgICAgZGVmIF9jb21tdW5pY2F0ZV93aXRoX3NlbGVjdChzZWxmLCBpbnB1dCk6Ci0gICAgICAgICAgICByZWFkX3NldCA9IFtdCi0gICAgICAgICAgICB3cml0ZV9zZXQgPSBbXQorICAgICAgICBkZWYgX2NvbW11bmljYXRlX3dpdGhfc2VsZWN0KHNlbGYsIGlucHV0LCBlbmR0aW1lLCBvcmlnX3RpbWVvdXQpOgorICAgICAgICAgICAgaWYgbm90IHNlbGYuX2NvbW11bmljYXRpb25fc3RhcnRlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldCA9IFtdCisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0ID0gW10KKyAgICAgICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBpbnB1dDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0LmFwcGVuZChzZWxmLnN0ZGluKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3Rkb3V0OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRvdXQpCisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZGVycikKKworICAgICAgICAgICAgc2VsZi5fc2F2ZV9pbnB1dChpbnB1dCkKKwogICAgICAgICAgICAgc3Rkb3V0ID0gTm9uZSAjIFJldHVybgogICAgICAgICAgICAgc3RkZXJyID0gTm9uZSAjIFJldHVybgogCi0gICAgICAgICAgICBpZiBzZWxmLnN0ZGluIGFuZCBpbnB1dDoKLSAgICAgICAgICAgICAgICB3cml0ZV9zZXQuYXBwZW5kKHNlbGYuc3RkaW4pCiAgICAgICAgICAgICBpZiBzZWxmLnN0ZG91dDoKLSAgICAgICAgICAgICAgICByZWFkX3NldC5hcHBlbmQoc2VsZi5zdGRvdXQpCi0gICAgICAgICAgICAgICAgc3Rkb3V0ID0gW10KKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY29tbXVuaWNhdGlvbl9zdGFydGVkOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGRvdXRfYnVmZiA9IFtdCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gc2VsZi5fc3Rkb3V0X2J1ZmYKICAgICAgICAgICAgIGlmIHNlbGYuc3RkZXJyOgotICAgICAgICAgICAgICAgIHJlYWRfc2V0LmFwcGVuZChzZWxmLnN0ZGVycikKLSAgICAgICAgICAgICAgICBzdGRlcnIgPSBbXQorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jb21tdW5pY2F0aW9uX3N0YXJ0ZWQ6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0ZGVycl9idWZmID0gW10KKyAgICAgICAgICAgICAgICBzdGRlcnIgPSBzZWxmLl9zdGRlcnJfYnVmZgogCi0gICAgICAgICAgICBpbnB1dF9vZmZzZXQgPSAwCi0gICAgICAgICAgICB3aGlsZSByZWFkX3NldCBvciB3cml0ZV9zZXQ6CisgICAgICAgICAgICB3aGlsZSBzZWxmLl9yZWFkX3NldCBvciBzZWxmLl93cml0ZV9zZXQ6CisgICAgICAgICAgICAgICAgdGltZW91dCA9IHNlbGYuX3JlbWFpbmluZ190aW1lKGVuZHRpbWUpCisgICAgICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgdGltZW91dCA8IDA6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFeHBpcmVkKHNlbGYuYXJncywgb3JpZ190aW1lb3V0KQogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmxpc3QsIHdsaXN0LCB4bGlzdCA9IHNlbGVjdC5zZWxlY3QocmVhZF9zZXQsIHdyaXRlX3NldCwgW10pCisgICAgICAgICAgICAgICAgICAgIChybGlzdCwgd2xpc3QsIHhsaXN0KSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3Qoc2VsZi5fcmVhZF9zZXQsIHNlbGYuX3dyaXRlX3NldCwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpCiAgICAgICAgICAgICAgICAgZXhjZXB0IHNlbGVjdC5lcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gPT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQogCisgICAgICAgICAgICAgICAgIyBBY2NvcmRpbmcgdG8gdGhlIGRvY3MsIHJldHVybmluZyB0aHJlZSBlbXB0eSBsaXN0cyBpbmRpY2F0ZXMKKyAgICAgICAgICAgICAgICAjIHRoYXQgdGhlIHRpbWVvdXQgZXhwaXJlZC4KKyAgICAgICAgICAgICAgICBpZiBub3QgKHJsaXN0IG9yIHdsaXN0IG9yIHhsaXN0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4cGlyZWQoc2VsZi5hcmdzLCBvcmlnX3RpbWVvdXQpCisgICAgICAgICAgICAgICAgIyBXZSBhbHNvIGNoZWNrIHdoYXQgdGltZSBpdCBpcyBvdXJzZWx2ZXMgZm9yIGdvb2QgbWVhc3VyZS4KKyAgICAgICAgICAgICAgICBzZWxmLl9jaGVja190aW1lb3V0KGVuZHRpbWUsIG9yaWdfdGltZW91dCkKKwogICAgICAgICAgICAgICAgICMgWFhYIFJld3JpdGUgdGhlc2UgdG8gdXNlIG5vbi1ibG9ja2luZyBJL08gb24gdGhlCiAgICAgICAgICAgICAgICAgIyBmaWxlIG9iamVjdHM7IHRoZXkgYXJlIG5vIGxvbmdlciB1c2luZyBDIHN0ZGlvIQogCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRpbiBpbiB3bGlzdDoKLSAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBpbnB1dFtpbnB1dF9vZmZzZXQgOiBpbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCisgICAgICAgICAgICAgICAgICAgIGNodW5rID0gc2VsZi5faW5wdXRbc2VsZi5faW5wdXRfb2Zmc2V0IDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnB1dF9vZmZzZXQgKyBfUElQRV9CVUZdCiAgICAgICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3dyaXR0ZW4gPSBvcy53cml0ZShzZWxmLnN0ZGluLmZpbGVubygpLCBjaHVuaykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRVBJUEU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGRpbi5jbG9zZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX3NldC5yZW1vdmUoc2VsZi5zdGRpbikKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X29mZnNldCArPSBieXRlc193cml0dGVuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnB1dF9vZmZzZXQgPj0gbGVuKGlucHV0KToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2lucHV0X29mZnNldCArPSBieXRlc193cml0dGVuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9pbnB1dF9vZmZzZXQgPj0gbGVuKHNlbGYuX2lucHV0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnN0ZGluLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZV9zZXQucmVtb3ZlKHNlbGYuc3RkaW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfc2V0LnJlbW92ZShzZWxmLnN0ZGluKQogCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRvdXQgaW4gcmxpc3Q6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHNlbGYuc3Rkb3V0LmZpbGVubygpLCAxMDI0KQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc2V0LnJlbW92ZShzZWxmLnN0ZG91dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0LnJlbW92ZShzZWxmLnN0ZG91dCkKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LmFwcGVuZChkYXRhKQogCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zdGRlcnIgaW4gcmxpc3Q6CiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBvcy5yZWFkKHNlbGYuc3RkZXJyLmZpbGVubygpLCAxMDI0KQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RkZXJyLmNsb3NlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc2V0LnJlbW92ZShzZWxmLnN0ZGVycikKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRfc2V0LnJlbW92ZShzZWxmLnN0ZGVycikKICAgICAgICAgICAgICAgICAgICAgc3RkZXJyLmFwcGVuZChkYXRhKQogCiAgICAgICAgICAgICByZXR1cm4gKHN0ZG91dCwgc3RkZXJyKQpAQCAtMTYxMyw2OCArMTczNywzIEBACiAgICAgICAgICAgICAiIiJLaWxsIHRoZSBwcm9jZXNzIHdpdGggU0lHS0lMTAogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICBzZWxmLnNlbmRfc2lnbmFsKHNpZ25hbC5TSUdLSUxMKQotCi0KLWRlZiBfZGVtb19wb3NpeCgpOgotICAgICMKLSAgICAjIEV4YW1wbGUgMTogU2ltcGxlIHJlZGlyZWN0aW9uOiBHZXQgcHJvY2VzcyBsaXN0Ci0gICAgIwotICAgIHBsaXN0ID0gUG9wZW4oWyJwcyJdLCBzdGRvdXQ9UElQRSkuY29tbXVuaWNhdGUoKVswXQotICAgIHByaW50KCJQcm9jZXNzIGxpc3Q6IikKLSAgICBwcmludChwbGlzdCkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgMjogQ2hhbmdlIHVpZCBiZWZvcmUgZXhlY3V0aW5nIGNoaWxkCi0gICAgIwotICAgIGlmIG9zLmdldHVpZCgpID09IDA6Ci0gICAgICAgIHAgPSBQb3BlbihbImlkIl0sIHByZWV4ZWNfZm49bGFtYmRhOiBvcy5zZXR1aWQoMTAwKSkKLSAgICAgICAgcC53YWl0KCkKLQotICAgICMKLSAgICAjIEV4YW1wbGUgMzogQ29ubmVjdGluZyBzZXZlcmFsIHN1YnByb2Nlc3NlcwotICAgICMKLSAgICBwcmludCgiTG9va2luZyBmb3IgJ2hkYScuLi4iKQotICAgIHAxID0gUG9wZW4oWyJkbWVzZyJdLCBzdGRvdXQ9UElQRSkKLSAgICBwMiA9IFBvcGVuKFsiZ3JlcCIsICJoZGEiXSwgc3RkaW49cDEuc3Rkb3V0LCBzdGRvdXQ9UElQRSkKLSAgICBwcmludChyZXByKHAyLmNvbW11bmljYXRlKClbMF0pKQotCi0gICAgIwotICAgICMgRXhhbXBsZSA0OiBDYXRjaCBleGVjdXRpb24gZXJyb3IKLSAgICAjCi0gICAgcHJpbnQoKQotICAgIHByaW50KCJUcnlpbmcgYSB3ZWlyZCBmaWxlLi4uIikKLSAgICB0cnk6Ci0gICAgICAgIHByaW50KFBvcGVuKFsiL3RoaXMvcGF0aC9kb2VzL25vdC9leGlzdCJdKS5jb21tdW5pY2F0ZSgpKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcHJpbnQoIlRoZSBmaWxlIGRpZG4ndCBleGlzdC4gIEkgdGhvdWdodCBzby4uLiIpCi0gICAgICAgICAgICBwcmludCgiQ2hpbGQgdHJhY2ViYWNrOiIpCi0gICAgICAgICAgICBwcmludChlLmNoaWxkX3RyYWNlYmFjaykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50KCJFcnJvciIsIGUuZXJybm8pCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIkdvc2guICBObyBlcnJvci4iLCBmaWxlPXN5cy5zdGRlcnIpCi0KLQotZGVmIF9kZW1vX3dpbmRvd3MoKToKLSAgICAjCi0gICAgIyBFeGFtcGxlIDE6IENvbm5lY3Rpbmcgc2V2ZXJhbCBzdWJwcm9jZXNzZXMKLSAgICAjCi0gICAgcHJpbnQoIkxvb2tpbmcgZm9yICdQUk9NUFQnIGluIHNldCBvdXRwdXQuLi4iKQotICAgIHAxID0gUG9wZW4oInNldCIsIHN0ZG91dD1QSVBFLCBzaGVsbD1UcnVlKQotICAgIHAyID0gUG9wZW4oJ2ZpbmQgIlBST01QVCInLCBzdGRpbj1wMS5zdGRvdXQsIHN0ZG91dD1QSVBFKQotICAgIHByaW50KHJlcHIocDIuY29tbXVuaWNhdGUoKVswXSkpCi0KLSAgICAjCi0gICAgIyBFeGFtcGxlIDI6IFNpbXBsZSBleGVjdXRpb24gb2YgcHJvZ3JhbQotICAgICMKLSAgICBwcmludCgiRXhlY3V0aW5nIGNhbGMuLi4iKQotICAgIHAgPSBQb3BlbigiY2FsYyIpCi0gICAgcC53YWl0KCkKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGlmIG1zd2luZG93czoKLSAgICAgICAgX2RlbW9fd2luZG93cygpCi0gICAgZWxzZToKLSAgICAgICAgX2RlbW9fcG9zaXgoKQpkaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKaW5kZXggYjIxODNkOC4uNzFkYTFkYiAxMDA2NDQKLS0tIGEvTGliL3N5c2NvbmZpZy5weQorKysgYi9MaWIvc3lzY29uZmlnLnB5CkBAIC0xLDggKzEsOCBAQAotIiIiUHJvdmlkZSBhY2Nlc3MgdG8gUHl0aG9uJ3MgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbi4KKyIiIkFjY2VzcyB0byBQeXRob24ncyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uLiIiIgogCi0iIiIKLWltcG9ydCBzeXMKIGltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCiBmcm9tIG9zLnBhdGggaW1wb3J0IHBhcmRpciwgcmVhbHBhdGgKIAogX19hbGxfXyA9IFsKQEAgLTE3LDUwICsxNyw1MCBAQAogICAgICdnZXRfcHl0aG9uX3ZlcnNpb24nLAogICAgICdnZXRfc2NoZW1lX25hbWVzJywKICAgICAncGFyc2VfY29uZmlnX2gnLAotICAgIF0KK10KIAogX0lOU1RBTExfU0NIRU1FUyA9IHsKICAgICAncG9zaXhfcHJlZml4JzogewotICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ3BsYXRsaWInOiAne3BsYXRiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6Ci0gICAgICAgICAgICAne2Jhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9e2FiaWZsYWdzfScsCisgICAgICAgICAgICAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAogICAgICAgICAncGxhdGluY2x1ZGUnOgotICAgICAgICAgICAgJ3twbGF0YmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH17YWJpZmxhZ3N9JywKKyAgICAgICAgICAgICd7aW5zdGFsbGVkX3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fXthYmlmbGFnc30nLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vYmluJywKICAgICAgICAgJ2RhdGEnOiAne2Jhc2V9JywKICAgICAgICAgfSwKICAgICAncG9zaXhfaG9tZSc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCisgICAgICAgICdzdGRsaWInOiAne2luc3RhbGxlZF9iYXNlfS9saWIvcHl0aG9uJywKICAgICAgICAgJ3BsYXRzdGRsaWInOiAne2Jhc2V9L2xpYi9weXRob24nLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbicsCiAgICAgICAgICdwbGF0bGliJzogJ3tiYXNlfS9saWIvcHl0aG9uJywKLSAgICAgICAgJ2luY2x1ZGUnOiAne2Jhc2V9L2luY2x1ZGUvcHl0aG9uJywKLSAgICAgICAgJ3BsYXRpbmNsdWRlJzogJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbicsCisgICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vaW5jbHVkZS9weXRob24nLAorICAgICAgICAncGxhdGluY2x1ZGUnOiAne2luc3RhbGxlZF9iYXNlfS9pbmNsdWRlL3B5dGhvbicsCiAgICAgICAgICdzY3JpcHRzJzogJ3tiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7YmFzZX0nLAorICAgICAgICAnZGF0YSc6ICd7YmFzZX0nLAogICAgICAgICB9LAogICAgICdudCc6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vTGliJywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L0xpYicsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9MaWInLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCi0gICAgICAgICdwbGF0aW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCisgICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCisgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vU2NyaXB0cycsCi0gICAgICAgICdkYXRhJyAgIDogJ3tiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ29zMic6IHsKLSAgICAgICAgJ3N0ZGxpYic6ICd7YmFzZX0vTGliJywKKyAgICAgICAgJ3N0ZGxpYic6ICd7aW5zdGFsbGVkX2Jhc2V9L0xpYicsCiAgICAgICAgICdwbGF0c3RkbGliJzogJ3tiYXNlfS9MaWInLAogICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAogICAgICAgICAncGxhdGxpYic6ICd7YmFzZX0vTGliL3NpdGUtcGFja2FnZXMnLAotICAgICAgICAnaW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCi0gICAgICAgICdwbGF0aW5jbHVkZSc6ICd7YmFzZX0vSW5jbHVkZScsCisgICAgICAgICdpbmNsdWRlJzogJ3tpbnN0YWxsZWRfYmFzZX0vSW5jbHVkZScsCisgICAgICAgICdwbGF0aW5jbHVkZSc6ICd7aW5zdGFsbGVkX2Jhc2V9L0luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vU2NyaXB0cycsCi0gICAgICAgICdkYXRhJyAgIDogJ3tiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3tiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ29zMl9ob21lJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCiAgICAgICAgICdzY3JpcHRzJzogJ3t1c2VyYmFzZX0vYmluJywKLSAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCisgICAgICAgICdkYXRhJzogJ3t1c2VyYmFzZX0nLAogICAgICAgICB9LAogICAgICdudF91c2VyJzogewogICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9JywKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9QeXRob257cHlfdmVyc2lvbl9ub2RvdH0vc2l0ZS1wYWNrYWdlcycsCiAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vUHl0aG9ue3B5X3ZlcnNpb25fbm9kb3R9L0luY2x1ZGUnLAogICAgICAgICAnc2NyaXB0cyc6ICd7dXNlcmJhc2V9L1NjcmlwdHMnLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ3Bvc2l4X3VzZXInOiB7CiAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgJ3BsYXRsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAogICAgICAgICAnaW5jbHVkZSc6ICd7dXNlcmJhc2V9L2luY2x1ZGUvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgJ29zeF9mcmFtZXdvcmtfdXNlcic6IHsKICAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob24nLApAQCAtOTYsMjAgKzk2LDI2IEBACiAgICAgICAgICdwbGF0bGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbi9zaXRlLXBhY2thZ2VzJywKICAgICAgICAgJ2luY2x1ZGUnOiAne3VzZXJiYXNlfS9pbmNsdWRlJywKICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAnZGF0YScgICA6ICd7dXNlcmJhc2V9JywKKyAgICAgICAgJ2RhdGEnOiAne3VzZXJiYXNlfScsCiAgICAgICAgIH0sCiAgICAgfQogCiBfU0NIRU1FX0tFWVMgPSAoJ3N0ZGxpYicsICdwbGF0c3RkbGliJywgJ3B1cmVsaWInLCAncGxhdGxpYicsICdpbmNsdWRlJywKICAgICAgICAgICAgICAgICAnc2NyaXB0cycsICdkYXRhJykKKworICMgRklYTUUgZG9uJ3QgcmVseSBvbiBzeXMudmVyc2lvbiBoZXJlLCBpdHMgZm9ybWF0IGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbAorICMgb2YgQ1B5dGhvbiwgdXNlIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLmhleHZlcnNpb24KIF9QWV9WRVJTSU9OID0gc3lzLnZlcnNpb24uc3BsaXQoKVswXQogX1BZX1ZFUlNJT05fU0hPUlQgPSBzeXMudmVyc2lvbls6M10KIF9QWV9WRVJTSU9OX1NIT1JUX05PX0RPVCA9IF9QWV9WRVJTSU9OWzBdICsgX1BZX1ZFUlNJT05bMl0KIF9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpCitfQkFTRV9QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX3ByZWZpeCkKIF9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQorX0JBU0VfRVhFQ19QUkVGSVggPSBvcy5wYXRoLm5vcm1wYXRoKHN5cy5iYXNlX2V4ZWNfcHJlZml4KQogX0NPTkZJR19WQVJTID0gTm9uZQogX1VTRVJfQkFTRSA9IE5vbmUKIAorCiBkZWYgX3NhZmVfcmVhbHBhdGgocGF0aCk6CiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gcmVhbHBhdGgocGF0aCkKQEAgLTEzMiwxOSArMTM4LDM1IEBACiBpZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjYnVpbGRcXGFtZDY0IiBpbiBfUFJPSkVDVF9CQVNFWy0xNDpdLmxvd2VyKCk6CiAgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCBwYXJkaXIsIHBhcmRpcikpCiAKLWRlZiBpc19weXRob25fYnVpbGQoKToKKyMgc2V0IGZvciBjcm9zcyBidWlsZHMKK2lmICJfUFlUSE9OX1BST0pFQ1RfQkFTRSIgaW4gb3MuZW52aXJvbjoKKyAgICBfUFJPSkVDVF9CQVNFID0gX3NhZmVfcmVhbHBhdGgob3MuZW52aXJvblsiX1BZVEhPTl9QUk9KRUNUX0JBU0UiXSkKKworZGVmIF9pc19weXRob25fc291cmNlX2RpcihkKToKICAgICBmb3IgZm4gaW4gKCJTZXR1cC5kaXN0IiwgIlNldHVwLmxvY2FsIik6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiTW9kdWxlcyIsIGZuKSk6CisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkLCAiTW9kdWxlcyIsIGZuKSk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgIHJldHVybiBGYWxzZQogCi1fUFlUSE9OX0JVSUxEID0gaXNfcHl0aG9uX2J1aWxkKCkKK19zeXNfaG9tZSA9IGdldGF0dHIoc3lzLCAnX2hvbWUnLCBOb25lKQoraWYgX3N5c19ob21lIGFuZCBvcy5uYW1lID09ICdudCcgYW5kIFwKKyAgICBfc3lzX2hvbWUubG93ZXIoKS5lbmRzd2l0aCgoJ3BjYnVpbGQnLCAncGNidWlsZFxcYW1kNjQnKSk6CisgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKKyAgICBpZiBfc3lzX2hvbWUuZW5kc3dpdGgoJ3BjYnVpbGQnKTogICAjIG11c3QgYmUgYW1kNjQKKyAgICAgICAgX3N5c19ob21lID0gb3MucGF0aC5kaXJuYW1lKF9zeXNfaG9tZSkKK2RlZiBpc19weXRob25fYnVpbGQoY2hlY2tfaG9tZT1GYWxzZSk6CisgICAgaWYgY2hlY2tfaG9tZSBhbmQgX3N5c19ob21lOgorICAgICAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9zeXNfaG9tZSkKKyAgICByZXR1cm4gX2lzX3B5dGhvbl9zb3VyY2VfZGlyKF9QUk9KRUNUX0JBU0UpCisKK19QWVRIT05fQlVJTEQgPSBpc19weXRob25fYnVpbGQoVHJ1ZSkKIAogaWYgX1BZVEhPTl9CVUlMRDoKICAgICBmb3Igc2NoZW1lIGluICgncG9zaXhfcHJlZml4JywgJ3Bvc2l4X2hvbWUnKToKICAgICAgICAgX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdWydpbmNsdWRlJ10gPSAne3NyY2Rpcn0vSW5jbHVkZScKICAgICAgICAgX0lOU1RBTExfU0NIRU1FU1tzY2hlbWVdWydwbGF0aW5jbHVkZSddID0gJ3twcm9qZWN0YmFzZX0vLicKIAorCiBkZWYgX3N1YnN0X3ZhcnMocywgbG9jYWxfdmFycyk6CiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gcy5mb3JtYXQoKipsb2NhbF92YXJzKQpAQCAtMTYxLDYgKzE4Myw3IEBACiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0YXJnZXRfZGljdFtrZXldID0gdmFsdWUKIAorCiBkZWYgX2V4cGFuZF92YXJzKHNjaGVtZSwgdmFycyk6CiAgICAgcmVzID0ge30KICAgICBpZiB2YXJzIGlzIE5vbmU6CkBAIC0xNzMsMjkgKzE5Niw0MSBAQAogICAgICAgICByZXNba2V5XSA9IG9zLnBhdGgubm9ybXBhdGgoX3N1YnN0X3ZhcnModmFsdWUsIHZhcnMpKQogICAgIHJldHVybiByZXMKIAorCiBkZWYgX2dldF9kZWZhdWx0X3NjaGVtZSgpOgogICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKICAgICAgICAgIyB0aGUgZGVmYXVsdCBzY2hlbWUgZm9yIHBvc2l4IGlzIHBvc2l4X3ByZWZpeAogICAgICAgICByZXR1cm4gJ3Bvc2l4X3ByZWZpeCcKICAgICByZXR1cm4gb3MubmFtZQogCisKIGRlZiBfZ2V0dXNlcmJhc2UoKToKICAgICBlbnZfYmFzZSA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05VU0VSQkFTRSIsIE5vbmUpCisKICAgICBkZWYgam9pbnVzZXIoKmFyZ3MpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5leHBhbmR1c2VyKG9zLnBhdGguam9pbigqYXJncykpCiAKICAgICAjIHdoYXQgYWJvdXQgJ29zMmVteCcsICdyaXNjb3MnID8KICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgIGJhc2UgPSBvcy5lbnZpcm9uLmdldCgiQVBQREFUQSIpIG9yICJ+IgotICAgICAgICByZXR1cm4gZW52X2Jhc2UgaWYgZW52X2Jhc2UgZWxzZSBqb2ludXNlcihiYXNlLCAiUHl0aG9uIikKKyAgICAgICAgaWYgZW52X2Jhc2U6CisgICAgICAgICAgICByZXR1cm4gZW52X2Jhc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBqb2ludXNlcihiYXNlLCAiUHl0aG9uIikKIAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKICAgICAgICAgZnJhbWV3b3JrID0gZ2V0X2NvbmZpZ192YXIoIlBZVEhPTkZSQU1FV09SSyIpCiAgICAgICAgIGlmIGZyYW1ld29yazoKLSAgICAgICAgICAgIHJldHVybiBlbnZfYmFzZSBpZiBlbnZfYmFzZSBlbHNlIGpvaW51c2VyKCJ+IiwgIkxpYnJhcnkiLCBmcmFtZXdvcmssICIlZC4lZCIlKAotICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uX2luZm9bOjJdKSkKKyAgICAgICAgICAgIGlmIGVudl9iYXNlOgorICAgICAgICAgICAgICAgIHJldHVybiBlbnZfYmFzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gam9pbnVzZXIoIn4iLCAiTGlicmFyeSIsIGZyYW1ld29yaywgIiVkLiVkIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogCi0gICAgcmV0dXJuIGVudl9iYXNlIGlmIGVudl9iYXNlIGVsc2Ugam9pbnVzZXIoIn4iLCAiLmxvY2FsIikKKyAgICBpZiBlbnZfYmFzZToKKyAgICAgICAgcmV0dXJuIGVudl9iYXNlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGpvaW51c2VyKCJ+IiwgIi5sb2NhbCIpCiAKIAogZGVmIF9wYXJzZV9tYWtlZmlsZShmaWxlbmFtZSwgdmFycz1Ob25lKToKQEAgLTIwNSw3ICsyNDAsNiBAQAogICAgIG9wdGlvbmFsIGRpY3Rpb25hcnkgaXMgcGFzc2VkIGluIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGl0IGlzCiAgICAgdXNlZCBpbnN0ZWFkIG9mIGEgbmV3IGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAgICAgIyBsaWtlIG9sZC1zdHlsZSBTZXR1cCBmaWxlcykuCiAgICAgX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZSgiKFthLXpBLVpdW2EtekEtWjAtOV9dKylccyo9XHMqKC4qKSIpCkBAIC0yNjcsNyArMzAxLDggQEAKICAgICAgICAgICAgICAgICAgICAgaXRlbSA9IG9zLmVudmlyb25bbl0KIAogICAgICAgICAgICAgICAgIGVsaWYgbiBpbiByZW5hbWVkX3ZhcmlhYmxlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdQWV8nKSBhbmQgbmFtZVszOl0gaW4gcmVuYW1lZF92YXJpYWJsZXM6CisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lLnN0YXJ0c3dpdGgoJ1BZXycpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZVszOl0gaW4gcmVuYW1lZF92YXJpYWJsZXMpOgogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbSA9ICIiCiAKICAgICAgICAgICAgICAgICAgICAgZWxpZiAnUFlfJyArIG4gaW4gbm90ZG9uZToKQEAgLTMwMCw3ICszMzUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIGRvbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmVbbmFtZV0gPSB2YWx1ZQogCi0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBib2d1cyB2YXJpYWJsZSByZWZlcmVuY2UgKGUuZy4gInByZWZpeD0kL29wdC9weXRob24iKTsKICAgICAgICAgICAgICAgICAjIGp1c3QgZHJvcCBpdCBzaW5jZSB3ZSBjYW4ndCBkZWFsCkBAIC0zMjAsMTQgKzM1NCwxNyBAQAogZGVmIGdldF9tYWtlZmlsZV9maWxlbmFtZSgpOgogICAgICIiIlJldHVybiB0aGUgcGF0aCBvZiB0aGUgTWFrZWZpbGUuIiIiCiAgICAgaWYgX1BZVEhPTl9CVUlMRDoKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCAiTWFrZWZpbGUiKQotICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZ2V0X3BhdGgoJ3N0ZGxpYicpLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZy17fXt9Jy5mb3JtYXQoX1BZX1ZFUlNJT05fU0hPUlQsIHN5cy5hYmlmbGFncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAnTWFrZWZpbGUnKQorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFLCAiTWFrZWZpbGUiKQorICAgIGlmIGhhc2F0dHIoc3lzLCAnYWJpZmxhZ3MnKToKKyAgICAgICAgY29uZmlnX2Rpcl9uYW1lID0gJ2NvbmZpZy0lcyVzJyAlIChfUFlfVkVSU0lPTl9TSE9SVCwgc3lzLmFiaWZsYWdzKQorICAgIGVsc2U6CisgICAgICAgIGNvbmZpZ19kaXJfbmFtZSA9ICdjb25maWcnCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihnZXRfcGF0aCgnc3RkbGliJyksIGNvbmZpZ19kaXJfbmFtZSwgJ01ha2VmaWxlJykKIAotCi1kZWYgX2luaXRfcG9zaXgodmFycyk6Ci0gICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBQT1NJWCBzeXN0ZW1zLiIiIgorZGVmIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCk6CisgICAgIiIiR2VuZXJhdGUgdGhlIFB5dGhvbiBtb2R1bGUgY29udGFpbmluZyBidWlsZC10aW1lIHZhcmlhYmxlcy4iIiIKKyAgICBpbXBvcnQgcHByaW50CisgICAgdmFycyA9IHt9CiAgICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6CiAgICAgbWFrZWZpbGUgPSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKQogICAgIHRyeToKQEAgLTM1Myw2ICszOTAsNDYgQEAKICAgICBpZiBfUFlUSE9OX0JVSUxEOgogICAgICAgICB2YXJzWydMRFNIQVJFRCddID0gdmFyc1snQkxEU0hBUkVEJ10KIAorICAgICMgVGhlcmUncyBhIGNoaWNrZW4tYW5kLWVnZyBzaXR1YXRpb24gb24gT1MgWCB3aXRoIHJlZ2FyZHMgdG8gdGhlCisgICAgIyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgYWZ0ZXIgdGhlIGNoYW5nZXMgaW50cm9kdWNlZCBieSAjMTUyOTg6CisgICAgIyBnZXRfY29uZmlnX3ZhcnMoKSBpcyBjYWxsZWQgYnkgZ2V0X3BsYXRmb3JtKCkgYXMgcGFydCBvZiB0aGUKKyAgICAjIGBtYWtlIHB5YnVpbGRkaXIudHh0YCB0YXJnZXQgLS0gd2hpY2ggaXMgYSBwcmVjdXJzb3IgdG8gdGhlCisgICAgIyBfc3lzY29uZmlnZGF0YS5weSBtb2R1bGUgYmVpbmcgY29uc3RydWN0ZWQuICBVbmZvcnR1bmF0ZWx5LAorICAgICMgZ2V0X2NvbmZpZ192YXJzKCkgZXZlbnR1YWxseSBjYWxscyBfaW5pdF9wb3NpeCgpLCB3aGljaCBhdHRlbXB0cworICAgICMgdG8gaW1wb3J0IF9zeXNjb25maWdkYXRhLCB3aGljaCB3ZSB3b24ndCBoYXZlIGJ1aWx0IHlldC4gIEluIG9yZGVyCisgICAgIyBmb3IgX2luaXRfcG9zaXgoKSB0byB3b3JrLCBpZiB3ZSdyZSBvbiBEYXJ3aW4sIGp1c3QgbW9jayB1cCB0aGUKKyAgICAjIF9zeXNjb25maWdkYXRhIG1vZHVsZSBtYW51YWxseSBhbmQgcG9wdWxhdGUgaXQgd2l0aCB0aGUgYnVpbGQgdmFycy4KKyAgICAjIFRoaXMgaXMgbW9yZSB0aGFuIHN1ZmZpY2llbnQgZm9yIGVuc3VyaW5nIHRoZSBzdWJzZXF1ZW50IGNhbGwgdG8KKyAgICAjIGdldF9wbGF0Zm9ybSgpIHN1Y2NlZWRzLgorICAgIG5hbWUgPSAnX3N5c2NvbmZpZ2RhdGEnCisgICAgaWYgJ2RhcndpbicgaW4gc3lzLnBsYXRmb3JtOgorICAgICAgICBpbXBvcnQgaW1wCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgIG1vZHVsZS5idWlsZF90aW1lX3ZhcnMgPSB2YXJzCisgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisKKyAgICBweWJ1aWxkZGlyID0gJ2J1aWxkL2xpYi4lcy0lcycgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzozXSkKKyAgICBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKKyAgICAgICAgcHlidWlsZGRpciArPSAnLXB5ZGVidWcnCisgICAgb3MubWFrZWRpcnMocHlidWlsZGRpciwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICBkZXN0ZmlsZSA9IG9zLnBhdGguam9pbihweWJ1aWxkZGlyLCBuYW1lICsgJy5weScpCisKKyAgICB3aXRoIG9wZW4oZGVzdGZpbGUsICd3JywgZW5jb2Rpbmc9J3V0ZjgnKSBhcyBmOgorICAgICAgICBmLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgICAgICBmLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgICAgICBwcHJpbnQucHByaW50KHZhcnMsIHN0cmVhbT1mKQorCisgICAgIyBDcmVhdGUgZmlsZSB1c2VkIGZvciBzeXMucGF0aCBmaXh1cCAtLSBzZWUgTW9kdWxlcy9nZXRwYXRoLmMKKyAgICB3aXRoIG9wZW4oJ3B5YnVpbGRkaXIudHh0JywgJ3cnLCBlbmNvZGluZz0nYXNjaWknKSBhcyBmOgorICAgICAgICBmLndyaXRlKHB5YnVpbGRkaXIpCisKK2RlZiBfaW5pdF9wb3NpeCh2YXJzKToKKyAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCisgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICBmcm9tIF9zeXNjb25maWdkYXRhIGltcG9ydCBidWlsZF90aW1lX3ZhcnMKKyAgICB2YXJzLnVwZGF0ZShidWlsZF90aW1lX3ZhcnMpCisKIGRlZiBfaW5pdF9ub25fcG9zaXgodmFycyk6CiAgICAgIiIiSW5pdGlhbGl6ZSB0aGUgbW9kdWxlIGFzIGFwcHJvcHJpYXRlIGZvciBOVCIiIgogICAgICMgc2V0IGJhc2ljIGluc3RhbGwgZGlyZWN0b3JpZXMKQEAgLTM3Niw3ICs0NTMsNiBAQAogICAgIG9wdGlvbmFsIGRpY3Rpb25hcnkgaXMgcGFzc2VkIGluIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQsIGl0IGlzCiAgICAgdXNlZCBpbnN0ZWFkIG9mIGEgbmV3IGRpY3Rpb25hcnkuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgaWYgdmFycyBpcyBOb25lOgogICAgICAgICB2YXJzID0ge30KICAgICBkZWZpbmVfcnggPSByZS5jb21waWxlKCIjZGVmaW5lIChbQS1aXVtBLVphLXowLTlfXSspICguKilcbiIpCkBAIC0zODksOCArNDY1LDEwIEBACiAgICAgICAgIG0gPSBkZWZpbmVfcngubWF0Y2gobGluZSkKICAgICAgICAgaWYgbToKICAgICAgICAgICAgIG4sIHYgPSBtLmdyb3VwKDEsIDIpCi0gICAgICAgICAgICB0cnk6IHYgPSBpbnQodikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOiBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdiA9IGludCh2KQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdmFyc1tuXSA9IHYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG0gPSB1bmRlZl9yeC5tYXRjaChsaW5lKQpAQCAtMzk4LDI3ICs0NzYsMjkgQEAKICAgICAgICAgICAgICAgICB2YXJzW20uZ3JvdXAoMSldID0gMAogICAgIHJldHVybiB2YXJzCiAKKwogZGVmIGdldF9jb25maWdfaF9maWxlbmFtZSgpOgogICAgICIiIlJldHVybiB0aGUgcGF0aCBvZiBweWNvbmZpZy5oLiIiIgogICAgIGlmIF9QWVRIT05fQlVJTEQ6CiAgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKLSAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgIlBDIikKKyAgICAgICAgICAgIGluY19kaXIgPSBvcy5wYXRoLmpvaW4oX3N5c19ob21lIG9yIF9QUk9KRUNUX0JBU0UsICJQQyIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpbmNfZGlyID0gX1BST0pFQ1RfQkFTRQorICAgICAgICAgICAgaW5jX2RpciA9IF9zeXNfaG9tZSBvciBfUFJPSkVDVF9CQVNFCiAgICAgZWxzZToKICAgICAgICAgaW5jX2RpciA9IGdldF9wYXRoKCdwbGF0aW5jbHVkZScpCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihpbmNfZGlyLCAncHljb25maWcuaCcpCiAKKwogZGVmIGdldF9zY2hlbWVfbmFtZXMoKToKICAgICAiIiJSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBzY2hlbWVzIG5hbWVzLiIiIgotICAgIHNjaGVtZXMgPSBsaXN0KF9JTlNUQUxMX1NDSEVNRVMua2V5cygpKQotICAgIHNjaGVtZXMuc29ydCgpCi0gICAgcmV0dXJuIHR1cGxlKHNjaGVtZXMpCisgICAgcmV0dXJuIHR1cGxlKHNvcnRlZChfSU5TVEFMTF9TQ0hFTUVTKSkKKwogCiBkZWYgZ2V0X3BhdGhfbmFtZXMoKToKICAgICAiIiJSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIHRoZSBwYXRocyBuYW1lcy4iIiIKICAgICByZXR1cm4gX1NDSEVNRV9LRVlTCiAKKwogZGVmIGdldF9wYXRocyhzY2hlbWU9X2dldF9kZWZhdWx0X3NjaGVtZSgpLCB2YXJzPU5vbmUsIGV4cGFuZD1UcnVlKToKICAgICAiIiJSZXR1cm4gYSBtYXBwaW5nIGNvbnRhaW5pbmcgYW4gaW5zdGFsbCBzY2hlbWUuCiAKQEAgLTQzMCw2ICs1MTAsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBfSU5TVEFMTF9TQ0hFTUVTW3NjaGVtZV0KIAorCiBkZWYgZ2V0X3BhdGgobmFtZSwgc2NoZW1lPV9nZXRfZGVmYXVsdF9zY2hlbWUoKSwgdmFycz1Ob25lLCBleHBhbmQ9VHJ1ZSk6CiAgICAgIiIiUmV0dXJuIGEgcGF0aCBjb3JyZXNwb25kaW5nIHRvIHRoZSBzY2hlbWUuCiAKQEAgLTQzNywxNyArNTE4LDE3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGdldF9wYXRocyhzY2hlbWUsIHZhcnMsIGV4cGFuZClbbmFtZV0KIAorCiBkZWYgZ2V0X2NvbmZpZ192YXJzKCphcmdzKToKICAgICAiIiJXaXRoIG5vIGFyZ3VtZW50cywgcmV0dXJuIGEgZGljdGlvbmFyeSBvZiBhbGwgY29uZmlndXJhdGlvbgogICAgIHZhcmlhYmxlcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCiAKICAgICBPbiBVbml4LCB0aGlzIG1lYW5zIGV2ZXJ5IHZhcmlhYmxlIGRlZmluZWQgaW4gUHl0aG9uJ3MgaW5zdGFsbGVkIE1ha2VmaWxlOwotICAgIE9uIFdpbmRvd3MgYW5kIE1hYyBPUyBpdCdzIGEgbXVjaCBzbWFsbGVyIHNldC4KKyAgICBPbiBXaW5kb3dzIGl0J3MgYSBtdWNoIHNtYWxsZXIgc2V0LgogCiAgICAgV2l0aCBhcmd1bWVudHMsIHJldHVybiBhIGxpc3Qgb2YgdmFsdWVzIHRoYXQgcmVzdWx0IGZyb20gbG9va2luZyB1cAogICAgIGVhY2ggYXJndW1lbnQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZGljdGlvbmFyeS4KICAgICAiIiIKLSAgICBpbXBvcnQgcmUKICAgICBnbG9iYWwgX0NPTkZJR19WQVJTCiAgICAgaWYgX0NPTkZJR19WQVJTIGlzIE5vbmU6CiAgICAgICAgIF9DT05GSUdfVkFSUyA9IHt9CkBAIC00NTksNyArNTQwLDkgQEAKICAgICAgICAgX0NPTkZJR19WQVJTWydweV92ZXJzaW9uJ10gPSBfUFlfVkVSU0lPTgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3B5X3ZlcnNpb25fc2hvcnQnXSA9IF9QWV9WRVJTSU9OX1NIT1JUCiAgICAgICAgIF9DT05GSUdfVkFSU1sncHlfdmVyc2lvbl9ub2RvdCddID0gX1BZX1ZFUlNJT05bMF0gKyBfUFlfVkVSU0lPTlsyXQorICAgICAgICBfQ09ORklHX1ZBUlNbJ2luc3RhbGxlZF9iYXNlJ10gPSBfQkFTRV9QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydiYXNlJ10gPSBfUFJFRklYCisgICAgICAgIF9DT05GSUdfVkFSU1snaW5zdGFsbGVkX3BsYXRiYXNlJ10gPSBfQkFTRV9FWEVDX1BSRUZJWAogICAgICAgICBfQ09ORklHX1ZBUlNbJ3BsYXRiYXNlJ10gPSBfRVhFQ19QUkVGSVgKICAgICAgICAgX0NPTkZJR19WQVJTWydwcm9qZWN0YmFzZSddID0gX1BST0pFQ1RfQkFTRQogICAgICAgICB0cnk6CkBAIC00NzcsODggKzU2MCwyOCBAQAogICAgICAgICAjIHRoZSBpbml0LWZ1bmN0aW9uLgogICAgICAgICBfQ09ORklHX1ZBUlNbJ3VzZXJiYXNlJ10gPSBfZ2V0dXNlcmJhc2UoKQogCi0gICAgICAgIGlmICdzcmNkaXInIG5vdCBpbiBfQ09ORklHX1ZBUlM6Ci0gICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gX1BST0pFQ1RfQkFTRQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgX0NPTkZJR19WQVJTWydzcmNkaXInXSA9IF9zYWZlX3JlYWxwYXRoKF9DT05GSUdfVkFSU1snc3JjZGlyJ10pCi0KLQotICAgICAgICAjIENvbnZlcnQgc3JjZGlyIGludG8gYW4gYWJzb2x1dGUgcGF0aCBpZiBpdCBhcHBlYXJzIG5lY2Vzc2FyeS4KLSAgICAgICAgIyBOb3JtYWxseSBpdCBpcyByZWxhdGl2ZSB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiAgSG93ZXZlciwgZHVyaW5nCi0gICAgICAgICMgdGVzdGluZywgZm9yIGV4YW1wbGUsIHdlIG1pZ2h0IGJlIHJ1bm5pbmcgYSBub24taW5zdGFsbGVkIHB5dGhvbgotICAgICAgICAjIGZyb20gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LgotICAgICAgICBpZiBfUFlUSE9OX0JVSUxEIGFuZCBvcy5uYW1lID09ICJwb3NpeCI6Ci0gICAgICAgICAgICBiYXNlID0gX1BST0pFQ1RfQkFTRQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBjd2QgPSBOb25lCi0gICAgICAgICAgICBpZiAobm90IG9zLnBhdGguaXNhYnMoX0NPTkZJR19WQVJTWydzcmNkaXInXSkgYW5kCi0gICAgICAgICAgICAgICAgYmFzZSAhPSBjd2QpOgotICAgICAgICAgICAgICAgICMgc3JjZGlyIGlzIHJlbGF0aXZlIGFuZCB3ZSBhcmUgbm90IGluIHRoZSBzYW1lIGRpcmVjdG9yeQotICAgICAgICAgICAgICAgICMgYXMgdGhlIGV4ZWN1dGFibGUuIEFzc3VtZSBleGVjdXRhYmxlIGlzIGluIHRoZSBidWlsZAotICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGFuZCBtYWtlIHNyY2RpciBhYnNvbHV0ZS4KLSAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgX0NPTkZJR19WQVJTWydzcmNkaXInXSkKLSAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNbJ3NyY2RpciddID0gb3MucGF0aC5ub3JtcGF0aChzcmNkaXIpCi0KLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAga2VybmVsX3ZlcnNpb24gPSBvcy51bmFtZSgpWzJdICMgS2VybmVsIHZlcnNpb24gKDguNC4zKQotICAgICAgICAgICAgbWFqb3JfdmVyc2lvbiA9IGludChrZXJuZWxfdmVyc2lvbi5zcGxpdCgnLicpWzBdKQotCi0gICAgICAgICAgICBpZiBtYWpvcl92ZXJzaW9uIDwgODoKLSAgICAgICAgICAgICAgICAjIE9uIE1hYyBPUyBYIGJlZm9yZSAxMC40LCBjaGVjayBpZiAtYXJjaCBhbmQgLWlzeXNyb290Ci0gICAgICAgICAgICAgICAgIyBhcmUgaW4gQ0ZMQUdTIG9yIExERkxBR1MgYW5kIHJlbW92ZSB0aGVtIGlmIHRoZXkgYXJlLgotICAgICAgICAgICAgICAgICMgVGhpcyBpcyBuZWVkZWQgd2hlbiBidWlsZGluZyBleHRlbnNpb25zIG9uIGEgMTAuMyBzeXN0ZW0KLSAgICAgICAgICAgICAgICAjIHVzaW5nIGEgdW5pdmVyc2FsIGJ1aWxkIG9mIHB5dGhvbi4KLSAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6Ci0gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX0NPTkZJR19WQVJTW2tleV0KLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290IFteIFx0XSonLCAnICcsIGZsYWdzKQotICAgICAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNba2V5XSA9IGZsYWdzCisgICAgICAgICMgQWx3YXlzIGNvbnZlcnQgc3JjZGlyIHRvIGFuIGFic29sdXRlIHBhdGgKKyAgICAgICAgc3JjZGlyID0gX0NPTkZJR19WQVJTLmdldCgnc3JjZGlyJywgX1BST0pFQ1RfQkFTRSkKKyAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICAgICAgaWYgX1BZVEhPTl9CVUlMRDoKKyAgICAgICAgICAgICAgICAjIElmIHNyY2RpciBpcyBhIHJlbGF0aXZlIHBhdGggKHR5cGljYWxseSAnLicgb3IgJy4uJykKKyAgICAgICAgICAgICAgICAjIHRoZW4gaXQgc2hvdWxkIGJlIGludGVycHJldGVkIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICAjIGNvbnRhaW5pbmcgTWFrZWZpbGUuCisgICAgICAgICAgICAgICAgYmFzZSA9IG9zLnBhdGguZGlybmFtZShnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSkKKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmpvaW4oYmFzZSwgc3JjZGlyKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIEFsbG93IHRoZSB1c2VyIHRvIG92ZXJyaWRlIHRoZSBhcmNoaXRlY3R1cmUgZmxhZ3MgdXNpbmcKLSAgICAgICAgICAgICAgICAjIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgICMgTk9URTogVGhpcyBuYW1lIHdhcyBpbnRyb2R1Y2VkIGJ5IEFwcGxlIGluIE9TWCAxMC41IGFuZAotICAgICAgICAgICAgICAgICMgaXMgdXNlZCBieSBzZXZlcmFsIHNjcmlwdGluZyBsYW5ndWFnZXMgZGlzdHJpYnV0ZWQgd2l0aAotICAgICAgICAgICAgICAgICMgdGhhdCBPUyByZWxlYXNlLgotICAgICAgICAgICAgICAgIGlmICdBUkNIRkxBR1MnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgICAgIGFyY2ggPSBvcy5lbnZpcm9uWydBUkNIRkxBR1MnXQotICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYSBudW1iZXIgb2YgZGVyaXZlZCB2YXJpYWJsZXMuIFRoZXNlIG5lZWQgdG8gYmUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgcGF0Y2hlZCB1cCBhcyB3ZWxsLgotICAgICAgICAgICAgICAgICAgICAgICAgJ0NGTEFHUycsICdQWV9DRkxBR1MnLCAnQkxEU0hBUkVEJyk6CisgICAgICAgICAgICAgICAgIyBzcmNkaXIgaXMgbm90IG1lYW5pbmdmdWwgc2luY2UgdGhlIGluc3RhbGxhdGlvbiBpcworICAgICAgICAgICAgICAgICMgc3ByZWFkIGFib3V0IHRoZSBmaWxlc3lzdGVtLiAgV2UgY2hvb3NlIHRoZQorICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIE1ha2VmaWxlIHNpbmNlIHdlIGtub3cgaXQKKyAgICAgICAgICAgICAgICAjIGV4aXN0cy4KKyAgICAgICAgICAgICAgICBzcmNkaXIgPSBvcy5wYXRoLmRpcm5hbWUoZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpCisgICAgICAgIF9DT05GSUdfVkFSU1snc3JjZGlyJ10gPSBfc2FmZV9yZWFscGF0aChzcmNkaXIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX0NPTkZJR19WQVJTW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCi0gICAgICAgICAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNba2V5XSA9IGZsYWdzCi0KLSAgICAgICAgICAgICAgICAjIElmIHdlJ3JlIG9uIE9TWCAxMC41IG9yIGxhdGVyIGFuZCB0aGUgdXNlciB0cmllcyB0bwotICAgICAgICAgICAgICAgICMgY29tcGlsZXMgYW4gZXh0ZW5zaW9uIHVzaW5nIGFuIFNESyB0aGF0IGlzIG5vdCBwcmVzZW50Ci0gICAgICAgICAgICAgICAgIyBvbiB0aGUgY3VycmVudCBtYWNoaW5lIGl0IGlzIGJldHRlciB0byBub3QgdXNlIGFuIFNESwotICAgICAgICAgICAgICAgICMgdGhhbiB0byBmYWlsLgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIFRoZSBtYWpvciB1c2VjYXNlIGZvciB0aGlzIGlzIHVzZXJzIHVzaW5nIGEgUHl0aG9uLm9yZwotICAgICAgICAgICAgICAgICMgYmluYXJ5IGluc3RhbGxlciAgb24gT1NYIDEwLjY6IHRoYXQgaW5zdGFsbGVyIHVzZXMKLSAgICAgICAgICAgICAgICAjIHRoZSAxMC40dSBTREssIGJ1dCB0aGF0IFNESyBpcyBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQKLSAgICAgICAgICAgICAgICAjIHdoZW4geW91IGluc3RhbGwgWGNvZGUuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgIENGTEFHUyA9IF9DT05GSUdfVkFSUy5nZXQoJ0NGTEFHUycsICcnKQotICAgICAgICAgICAgICAgIG0gPSByZS5zZWFyY2goJy1pc3lzcm9vdFxzKyhcUyspJywgQ0ZMQUdTKQotICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNkayA9IG0uZ3JvdXAoMSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNkayk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3Iga2V5IGluICgnTERGTEFHUycsICdCQVNFQ0ZMQUdTJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG51bWJlciBvZiBkZXJpdmVkIHZhcmlhYmxlcy4gVGhlc2UgbmVlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBhdGNoZWQgdXAgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ0ZMQUdTJywgJ1BZX0NGTEFHUycsICdCTERTSEFSRUQnKToKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX0NPTkZJR19WQVJTW2tleV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YignLWlzeXNyb290XHMrXFMrKFxzfCQpJywgJyAnLCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfQ09ORklHX1ZBUlNba2V5XSA9IGZsYWdzCisgICAgICAgICMgT1MgWCBwbGF0Zm9ybXMgcmVxdWlyZSBzcGVjaWFsIGN1c3RvbWl6YXRpb24gdG8gaGFuZGxlCisgICAgICAgICMgbXVsdGktYXJjaGl0ZWN0dXJlLCBtdWx0aS1vcy12ZXJzaW9uIGluc3RhbGxlcnMKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICAgICAgX29zeF9zdXBwb3J0LmN1c3RvbWl6ZV9jb25maWdfdmFycyhfQ09ORklHX1ZBUlMpCiAKICAgICBpZiBhcmdzOgogICAgICAgICB2YWxzID0gW10KQEAgLTU2OCw2ICs1OTEsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBfQ09ORklHX1ZBUlMKIAorCiBkZWYgZ2V0X2NvbmZpZ192YXIobmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIHNpbmdsZSB2YXJpYWJsZSB1c2luZyB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCBieQogICAgICdnZXRfY29uZmlnX3ZhcnMoKScuCkBAIC01NzYsNiArNjAwLDcgQEAKICAgICAiIiIKICAgICByZXR1cm4gZ2V0X2NvbmZpZ192YXJzKCkuZ2V0KG5hbWUpCiAKKwogZGVmIGdldF9wbGF0Zm9ybSgpOgogICAgICIiIlJldHVybiBhIHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlIGN1cnJlbnQgcGxhdGZvcm0uCiAKQEAgLTYwMSw3ICs2MjYsNiBAQAogCiAgICAgRm9yIG90aGVyIG5vbi1QT1NJWCBwbGF0Zm9ybXMsIGN1cnJlbnRseSBqdXN0IHJldHVybnMgJ3N5cy5wbGF0Zm9ybScuCiAgICAgIiIiCi0gICAgaW1wb3J0IHJlCiAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgogICAgICAgICAjIHNuaWZmIHN5cy52ZXJzaW9uIGZvciBhcmNoaXRlY3R1cmUuCiAgICAgICAgIHByZWZpeCA9ICIgYml0ICgiCkBAIC02MTcsMTAgKzY0MSwxMyBAQAogICAgICAgICByZXR1cm4gc3lzLnBsYXRmb3JtCiAKICAgICBpZiBvcy5uYW1lICE9ICJwb3NpeCIgb3Igbm90IGhhc2F0dHIob3MsICd1bmFtZScpOgotICAgICAgICAjIFhYWCB3aGF0IGFib3V0IHRoZSBhcmNoaXRlY3R1cmU/IE5UIGlzIEludGVsIG9yIEFscGhhLAotICAgICAgICAjIE1hYyBPUyBpcyBNNjhrIG9yIFBQQywgZXRjLgorICAgICAgICAjIFhYWCB3aGF0IGFib3V0IHRoZSBhcmNoaXRlY3R1cmU/IE5UIGlzIEludGVsIG9yIEFscGhhCiAgICAgICAgIHJldHVybiBzeXMucGxhdGZvcm0KIAorICAgICMgU2V0IGZvciBjcm9zcyBidWlsZHMgZXhwbGljaXRseQorICAgIGlmICJfUFlUSE9OX0hPU1RfUExBVEZPUk0iIGluIG9zLmVudmlyb246CisgICAgICAgIHJldHVybiBvcy5lbnZpcm9uWyJfUFlUSE9OX0hPU1RfUExBVEZPUk0iXQorCiAgICAgIyBUcnkgdG8gZGlzdGluZ3Vpc2ggdmFyaW91cyBmbGF2b3VycyBvZiBVbml4CiAgICAgb3NuYW1lLCBob3N0LCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lID0gb3MudW5hbWUoKQogCkBAIC02NTEsOTcgKzY3OCwxNSBAQAogICAgICAgICByZXR1cm4gIiVzLSVzLiVzIiAlIChvc25hbWUsIHZlcnNpb24sIHJlbGVhc2UpCiAgICAgZWxpZiBvc25hbWVbOjZdID09ICJjeWd3aW4iOgogICAgICAgICBvc25hbWUgPSAiY3lnd2luIgotICAgICAgICByZWxfcmUgPSByZS5jb21waWxlIChyJ1tcZC5dKycpCisgICAgICAgIHJlbF9yZSA9IHJlLmNvbXBpbGUocidbXGQuXSsnKQogICAgICAgICBtID0gcmVsX3JlLm1hdGNoKHJlbGVhc2UpCiAgICAgICAgIGlmIG06CiAgICAgICAgICAgICByZWxlYXNlID0gbS5ncm91cCgpCiAgICAgZWxpZiBvc25hbWVbOjZdID09ICJkYXJ3aW4iOgotICAgICAgICAjCi0gICAgICAgICMgRm9yIG91ciBwdXJwb3Nlcywgd2UnbGwgYXNzdW1lIHRoYXQgdGhlIHN5c3RlbSB2ZXJzaW9uIGZyb20KLSAgICAgICAgIyBkaXN0dXRpbHMnIHBlcnNwZWN0aXZlIGlzIHdoYXQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGlzIHNldAotICAgICAgICAjIHRvLiBUaGlzIG1ha2VzIHRoZSBjb21wYXRpYmlsaXR5IHN0b3J5IGEgYml0IG1vcmUgc2FuZSBiZWNhdXNlIHRoZQotICAgICAgICAjIG1hY2hpbmUgaXMgZ29pbmcgdG8gY29tcGlsZSBhbmQgbGluayBhcyBpZiBpdCB3ZXJlCi0gICAgICAgICMgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULgotICAgICAgICAjCi0gICAgICAgIGNmZ3ZhcnMgPSBnZXRfY29uZmlnX3ZhcnMoKQotICAgICAgICBtYWN2ZXIgPSBjZmd2YXJzLmdldCgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJykKLQotICAgICAgICBpZiAxOgotICAgICAgICAgICAgIyBBbHdheXMgY2FsY3VsYXRlIHRoZSByZWxlYXNlIG9mIHRoZSBydW5uaW5nIG1hY2hpbmUsCi0gICAgICAgICAgICAjIG5lZWRlZCB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIGJ1aWxkIGZhdCBiaW5hcmllcyBvciBub3QuCi0KLSAgICAgICAgICAgIG1hY3JlbGVhc2UgPSBtYWN2ZXIKLSAgICAgICAgICAgICMgR2V0IHRoZSBzeXN0ZW0gdmVyc2lvbi4gUmVhZGluZyB0aGlzIHBsaXN0IGlzIGEgZG9jdW1lbnRlZAotICAgICAgICAgICAgIyB3YXkgdG8gZ2V0IHRoZSBzeXN0ZW0gdmVyc2lvbiAoc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgotICAgICAgICAgICAgIyB0aGUgR2VzdGFsdCBNYW5hZ2VyKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYgPSBvcGVuKCcvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzL1N5c3RlbVZlcnNpb24ucGxpc3QnKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBXZSdyZSBvbiBhIHBsYWluIGRhcndpbiBib3gsIGZhbGwgYmFjayB0byB0aGUgZGVmYXVsdAotICAgICAgICAgICAgICAgICMgYmVoYXZpb3VyLgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtID0gcmUuc2VhcmNoKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInPGtleT5Qcm9kdWN0VXNlclZpc2libGVWZXJzaW9uPC9rZXk+XHMqJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcic8c3RyaW5nPiguKj8pPC9zdHJpbmc+JywgZi5yZWFkKCkpCi0gICAgICAgICAgICAgICAgICAgIGlmIG0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYWNyZWxlYXNlID0gJy4nLmpvaW4obS5ncm91cCgxKS5zcGxpdCgnLicpWzoyXSkKLSAgICAgICAgICAgICAgICAgICAgIyBlbHNlOiBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgYmVoYXZpb3VyCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0KLSAgICAgICAgaWYgbm90IG1hY3ZlcjoKLSAgICAgICAgICAgIG1hY3ZlciA9IG1hY3JlbGVhc2UKLQotICAgICAgICBpZiBtYWN2ZXI6Ci0gICAgICAgICAgICByZWxlYXNlID0gbWFjdmVyCi0gICAgICAgICAgICBvc25hbWUgPSAibWFjb3N4IgotCi0gICAgICAgICAgICBpZiAobWFjcmVsZWFzZSArICcuJykgPj0gJzEwLjQuJyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAnLWFyY2gnIGluIGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJywgJycpLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgIyBUaGUgdW5pdmVyc2FsIGJ1aWxkIHdpbGwgYnVpbGQgZmF0IGJpbmFyaWVzLCBidXQgbm90IG9uCi0gICAgICAgICAgICAgICAgIyBzeXN0ZW1zIGJlZm9yZSAxMC40Ci0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgVHJ5IHRvIGRldGVjdCA0LXdheSB1bml2ZXJzYWwgYnVpbGRzLCB0aG9zZSBoYXZlIG1hY2hpbmUtdHlwZQotICAgICAgICAgICAgICAgICMgJ3VuaXZlcnNhbCcgaW5zdGVhZCBvZiAnZmF0Jy4KLQotICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGNmbGFncyA9IGdldF9jb25maWdfdmFycygpLmdldCgnQ0ZMQUdTJykKLQotICAgICAgICAgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbCgnLWFyY2hccysoXFMrKScsIGNmbGFncykKLSAgICAgICAgICAgICAgICBhcmNocyA9IHR1cGxlKHNvcnRlZChzZXQoYXJjaHMpKSkKLQotICAgICAgICAgICAgICAgIGlmIGxlbihhcmNocykgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9IGFyY2hzWzBdCi0gICAgICAgICAgICAgICAgZWxpZiBhcmNocyA9PSAoJ2kzODYnLCAncHBjJyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAnZmF0JwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3g4Nl82NCcpOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ2ludGVsJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQzJwotICAgICAgICAgICAgICAgIGVsaWYgYXJjaHMgPT0gKCdwcGM2NCcsICd4ODZfNjQnKToKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdmYXQ2NCcKLSAgICAgICAgICAgICAgICBlbGlmIGFyY2hzID09ICgnaTM4NicsICdwcGMnLCAncHBjNjQnLCAneDg2XzY0Jyk6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAndW5pdmVyc2FsJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICJEb24ndCBrbm93IG1hY2hpbmUgdmFsdWUgZm9yIGFyY2hzPSVyIiUoYXJjaHMsKSkKLQotICAgICAgICAgICAgZWxpZiBtYWNoaW5lID09ICdpMzg2JzoKLSAgICAgICAgICAgICAgICAjIE9uIE9TWCB0aGUgbWFjaGluZSB0eXBlIHJldHVybmVkIGJ5IHVuYW1lIGlzIGFsd2F5cyB0aGUKLSAgICAgICAgICAgICAgICAjIDMyLWJpdCB2YXJpYW50LCBldmVuIGlmIHRoZSBleGVjdXRhYmxlIGFyY2hpdGVjdHVyZSBpcwotICAgICAgICAgICAgICAgICMgdGhlIDY0LWJpdCB2YXJpYW50Ci0gICAgICAgICAgICAgICAgaWYgc3lzLm1heHNpemUgPj0gMioqMzI6Ci0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmUgPSAneDg2XzY0JwotCi0gICAgICAgICAgICBlbGlmIG1hY2hpbmUgaW4gKCdQb3dlclBDJywgJ1Bvd2VyX01hY2ludG9zaCcpOgotICAgICAgICAgICAgICAgICMgUGljayBhIHNhbmUgbmFtZSBmb3IgdGhlIFBQQyBhcmNoaXRlY3R1cmUuCi0gICAgICAgICAgICAgICAgIyBTZWUgJ2kzODYnIGNhc2UKLSAgICAgICAgICAgICAgICBpZiBzeXMubWF4c2l6ZSA+PSAyKiozMjoKLSAgICAgICAgICAgICAgICAgICAgbWFjaGluZSA9ICdwcGM2NCcKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtYWNoaW5lID0gJ3BwYycKKyAgICAgICAgaW1wb3J0IF9vc3hfc3VwcG9ydAorICAgICAgICBvc25hbWUsIHJlbGVhc2UsIG1hY2hpbmUgPSBfb3N4X3N1cHBvcnQuZ2V0X3BsYXRmb3JtX29zeCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2NvbmZpZ192YXJzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKIAogICAgIHJldHVybiAiJXMtJXMtJXMiICUgKG9zbmFtZSwgcmVsZWFzZSwgbWFjaGluZSkKIApAQCAtNzQ5LDIxICs2OTQsMjcgQEAKIGRlZiBnZXRfcHl0aG9uX3ZlcnNpb24oKToKICAgICByZXR1cm4gX1BZX1ZFUlNJT05fU0hPUlQKIAorCiBkZWYgX3ByaW50X2RpY3QodGl0bGUsIGRhdGEpOgogICAgIGZvciBpbmRleCwgKGtleSwgdmFsdWUpIGluIGVudW1lcmF0ZShzb3J0ZWQoZGF0YS5pdGVtcygpKSk6CiAgICAgICAgIGlmIGluZGV4ID09IDA6Ci0gICAgICAgICAgICBwcmludCgnezB9OiAnLmZvcm1hdCh0aXRsZSkpCi0gICAgICAgIHByaW50KCdcdHswfSA9ICJ7MX0iJy5mb3JtYXQoa2V5LCB2YWx1ZSkpCisgICAgICAgICAgICBwcmludCgnJXM6ICcgJSAodGl0bGUpKQorICAgICAgICBwcmludCgnXHQlcyA9ICIlcyInICUgKGtleSwgdmFsdWUpKQorCiAKIGRlZiBfbWFpbigpOgogICAgICIiIkRpc3BsYXkgYWxsIGluZm9ybWF0aW9uIHN5c2NvbmZpZyBkZXRhaW5zLiIiIgotICAgIHByaW50KCdQbGF0Zm9ybTogInswfSInLmZvcm1hdChnZXRfcGxhdGZvcm0oKSkpCi0gICAgcHJpbnQoJ1B5dGhvbiB2ZXJzaW9uOiAiezB9IicuZm9ybWF0KGdldF9weXRob25fdmVyc2lvbigpKSkKLSAgICBwcmludCgnQ3VycmVudCBpbnN0YWxsYXRpb24gc2NoZW1lOiAiezB9IicuZm9ybWF0KF9nZXRfZGVmYXVsdF9zY2hlbWUoKSkpCi0gICAgcHJpbnQoJycpCisgICAgaWYgJy0tZ2VuZXJhdGUtcG9zaXgtdmFycycgaW4gc3lzLmFyZ3Y6CisgICAgICAgIF9nZW5lcmF0ZV9wb3NpeF92YXJzKCkKKyAgICAgICAgcmV0dXJuCisgICAgcHJpbnQoJ1BsYXRmb3JtOiAiJXMiJyAlIGdldF9wbGF0Zm9ybSgpKQorICAgIHByaW50KCdQeXRob24gdmVyc2lvbjogIiVzIicgJSBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKKyAgICBwcmludCgnQ3VycmVudCBpbnN0YWxsYXRpb24gc2NoZW1lOiAiJXMiJyAlIF9nZXRfZGVmYXVsdF9zY2hlbWUoKSkKKyAgICBwcmludCgpCiAgICAgX3ByaW50X2RpY3QoJ1BhdGhzJywgZ2V0X3BhdGhzKCkpCi0gICAgcHJpbnQoJycpCisgICAgcHJpbnQoKQogICAgIF9wcmludF9kaWN0KCdWYXJpYWJsZXMnLCBnZXRfY29uZmlnX3ZhcnMoKSkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90YWJuYW5ueS5weSBiL0xpYi90YWJuYW5ueS5weQppbmRleCA0NmY4MTYzLi40YTU0Zjg5IDEwMDc1NQotLS0gYS9MaWIvdGFibmFubnkucHkKKysrIGIvTGliL3RhYm5hbm55LnB5CkBAIC0xMjYsNiArMTI2LDkgQEAKICAgICAgICAgICAgIGVsc2U6IHByaW50KGZpbGUsIGJhZGxpbmUsIHJlcHIobGluZSkpCiAgICAgICAgIHJldHVybgogCisgICAgZmluYWxseToKKyAgICAgICAgZi5jbG9zZSgpCisKICAgICBpZiB2ZXJib3NlOgogICAgICAgICBwcmludCgiJXI6IENsZWFuIGJpbGwgb2YgaGVhbHRoLiIgJSAoZmlsZSwpKQogCmRpZmYgLS1naXQgYS9MaWIvdGFyZmlsZS5weSBiL0xpYi90YXJmaWxlLnB5CmluZGV4IGYyNjk1M2UuLjdiOWY0MDcgMTAwNjQ0Ci0tLSBhL0xpYi90YXJmaWxlLnB5CisrKyBiL0xpYi90YXJmaWxlLnB5CkBAIC0yOSw4ICsyOSw2IEBACiAiIiJSZWFkIGZyb20gYW5kIHdyaXRlIHRvIHRhciBmb3JtYXQgYXJjaGl2ZXMuCiAiIiIKIAotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uJCIKLQogdmVyc2lvbiAgICAgPSAiMC45LjAiCiBfX2F1dGhvcl9fICA9ICJMYXJzIEd1c3RcdTAwZTRiZWwgKGxhcnNAZ3VzdGFlYmVsLmRlKSIKIF9fZGF0ZV9fICAgID0gIiREYXRlOiAyMDExLTAyLTI1IDE3OjQyOjAxICswMjAwIChGcmksIDI1IEZlYiAyMDExKSAkIgpAQCAtNDIsOSArNDAsOSBAQAogIy0tLS0tLS0tLQogaW1wb3J0IHN5cwogaW1wb3J0IG9zCitpbXBvcnQgaW8KIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0Ci1pbXBvcnQgZXJybm8KIGltcG9ydCB0aW1lCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgY29weQpAQCAtMjQ3LDggKzI0NSw4IEBACiAgICAgICAgdGhlIGhpZ2ggYml0IHNldC4gU28gd2UgY2FsY3VsYXRlIHR3byBjaGVja3N1bXMsIHVuc2lnbmVkIGFuZAogICAgICAgIHNpZ25lZC4KICAgICAiIiIKLSAgICB1bnNpZ25lZF9jaGtzdW0gPSAyNTYgKyBzdW0oc3RydWN0LnVucGFjaygiMTQ4QiIsIGJ1Zls6MTQ4XSkgKyBzdHJ1Y3QudW5wYWNrKCIzNTZCIiwgYnVmWzE1Njo1MTJdKSkKLSAgICBzaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2soIjE0OGIiLCBidWZbOjE0OF0pICsgc3RydWN0LnVucGFjaygiMzU2YiIsIGJ1ZlsxNTY6NTEyXSkpCisgICAgdW5zaWduZWRfY2hrc3VtID0gMjU2ICsgc3VtKHN0cnVjdC51bnBhY2tfZnJvbSgiMTQ4Qjh4MzU2QiIsIGJ1ZikpCisgICAgc2lnbmVkX2Noa3N1bSA9IDI1NiArIHN1bShzdHJ1Y3QudW5wYWNrX2Zyb20oIjE0OGI4eDM1NmIiLCBidWYpKQogICAgIHJldHVybiB1bnNpZ25lZF9jaGtzdW0sIHNpZ25lZF9jaGtzdW0KIAogZGVmIGNvcHlmaWxlb2JqKHNyYywgZHN0LCBsZW5ndGg9Tm9uZSk6CkBAIC0yNzYsNDcgKzI3NCwxMyBAQAogICAgICAgICBkc3Qud3JpdGUoYnVmKQogICAgIHJldHVybgogCi1maWxlbW9kZV90YWJsZSA9ICgKLSAgICAoKFNfSUZMTkssICAgICAgImwiKSwKLSAgICAgKFNfSUZSRUcsICAgICAgIi0iKSwKLSAgICAgKFNfSUZCTEssICAgICAgImIiKSwKLSAgICAgKFNfSUZESVIsICAgICAgImQiKSwKLSAgICAgKFNfSUZDSFIsICAgICAgImMiKSwKLSAgICAgKFNfSUZJRk8sICAgICAgInAiKSksCi0KLSAgICAoKFRVUkVBRCwgICAgICAgInIiKSwpLAotICAgICgoVFVXUklURSwgICAgICAidyIpLCksCi0gICAgKChUVUVYRUN8VFNVSUQsICJzIiksCi0gICAgIChUU1VJRCwgICAgICAgICJTIiksCi0gICAgIChUVUVYRUMsICAgICAgICJ4IikpLAotCi0gICAgKChUR1JFQUQsICAgICAgICJyIiksKSwKLSAgICAoKFRHV1JJVEUsICAgICAgInciKSwpLAotICAgICgoVEdFWEVDfFRTR0lELCAicyIpLAotICAgICAoVFNHSUQsICAgICAgICAiUyIpLAotICAgICAoVEdFWEVDLCAgICAgICAieCIpKSwKLQotICAgICgoVE9SRUFELCAgICAgICAiciIpLCksCi0gICAgKChUT1dSSVRFLCAgICAgICJ3IiksKSwKLSAgICAoKFRPRVhFQ3xUU1ZUWCwgInQiKSwKLSAgICAgKFRTVlRYLCAgICAgICAgIlQiKSwKLSAgICAgKFRPRVhFQywgICAgICAgIngiKSkKLSkKLQogZGVmIGZpbGVtb2RlKG1vZGUpOgotICAgICIiIkNvbnZlcnQgYSBmaWxlJ3MgbW9kZSB0byBhIHN0cmluZyBvZiB0aGUgZm9ybQotICAgICAgIC1yd3hyd3hyd3guCi0gICAgICAgVXNlZCBieSBUYXJGaWxlLmxpc3QoKQotICAgICIiIgotICAgIHBlcm0gPSBbXQotICAgIGZvciB0YWJsZSBpbiBmaWxlbW9kZV90YWJsZToKLSAgICAgICAgZm9yIGJpdCwgY2hhciBpbiB0YWJsZToKLSAgICAgICAgICAgIGlmIG1vZGUgJiBiaXQgPT0gYml0OgotICAgICAgICAgICAgICAgIHBlcm0uYXBwZW5kKGNoYXIpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBlcm0uYXBwZW5kKCItIikKLSAgICByZXR1cm4gIiIuam9pbihwZXJtKQorICAgICIiIkRlcHJlY2F0ZWQgaW4gdGhpcyBsb2NhdGlvbjsgdXNlIHN0YXQuZmlsZW1vZGUuIiIiCisgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgd2FybmluZ3Mud2FybigiZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBzdGF0LmZpbGVtb2RlIiwKKyAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKKyAgICByZXR1cm4gc3RhdC5maWxlbW9kZShtb2RlKQorCiAKIGNsYXNzIFRhckVycm9yKEV4Y2VwdGlvbik6CiAgICAgIiIiQmFzZSBleGNlcHRpb24uIiIiCkBAIC00MjMsMTAgKzM4NywxMSBAQAogICAgICAgICAgICAgICAgIHNlbGYuY3JjID0gemxpYi5jcmMzMihiIiIpCiAgICAgICAgICAgICAgICAgaWYgbW9kZSA9PSAiciI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfcmVhZF9neigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gemxpYi5lcnJvcgogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2luaXRfd3JpdGVfZ3ooKQogCi0gICAgICAgICAgICBpZiBjb21wdHlwZSA9PSAiYnoyIjoKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gImJ6MiI6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgYnoyCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtNDM0LDggKzM5OSwyNSBAQAogICAgICAgICAgICAgICAgIGlmIG1vZGUgPT0gInIiOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmRidWYgPSBiIiIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBJT0Vycm9yCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbXAgPSBiejIuQloyQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgPT0gInh6IjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBsem1hCisgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBDb21wcmVzc2lvbkVycm9yKCJsem1hIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICBpZiBtb2RlID09ICJyIjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kYnVmID0gYiIiCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leGNlcHRpb24gPSBsem1hLkxaTUFFcnJvcgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuY21wID0gbHptYS5MWk1BQ29tcHJlc3NvcigpCisKKyAgICAgICAgICAgIGVsaWYgY29tcHR5cGUgIT0gInRhciI6CisgICAgICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigidW5rbm93biBjb21wcmVzc2lvbiB0eXBlICVyIiAlIGNvbXB0eXBlKQorCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9leHRmaWxlb2JqOgogICAgICAgICAgICAgICAgIHNlbGYuZmlsZW9iai5jbG9zZSgpCkBAIC01ODcsNyArNTY5LDcgQEAKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuY21wLmRlY29tcHJlc3MoYnVmKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgc2VsZi5leGNlcHRpb246CiAgICAgICAgICAgICAgICAgcmFpc2UgUmVhZEVycm9yKCJpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSIpCiAgICAgICAgICAgICBzZWxmLmRidWYgKz0gYnVmCiAgICAgICAgICAgICBjICs9IGxlbihidWYpCkBAIC02MjUsNzYgKzYwNywxOSBAQAogICAgICAgICByZXR1cm4gc2VsZi5idWYKIAogICAgIGRlZiBnZXRjb21wdHlwZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5idWYuc3RhcnRzd2l0aChiIlwwMzdcMjEzXDAxMCIpOgorICAgICAgICBpZiBzZWxmLmJ1Zi5zdGFydHN3aXRoKGIiXHgxZlx4OGJceDA4Iik6CiAgICAgICAgICAgICByZXR1cm4gImd6IgotICAgICAgICBpZiBzZWxmLmJ1ZlswOjNdID09IGIiQlpoIiBhbmQgc2VsZi5idWZbNDoxMF0gPT0gYiIxQVkmU1kiOgorICAgICAgICBlbGlmIHNlbGYuYnVmWzA6M10gPT0gYiJCWmgiIGFuZCBzZWxmLmJ1Zls0OjEwXSA9PSBiIjFBWSZTWSI6CiAgICAgICAgICAgICByZXR1cm4gImJ6MiIKLSAgICAgICAgcmV0dXJuICJ0YXIiCisgICAgICAgIGVsaWYgc2VsZi5idWYuc3RhcnRzd2l0aCgoYiJceDVkXHgwMFx4MDBceDgwIiwgYiJceGZkN3pYWiIpKToKKyAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gInRhciIKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgc2VsZi5maWxlb2JqLmNsb3NlKCkKICMgY2xhc3MgU3RyZWFtUHJveHkKIAotY2xhc3MgX0JaMlByb3h5KG9iamVjdCk6Ci0gICAgIiIiU21hbGwgcHJveHkgY2xhc3MgdGhhdCBlbmFibGVzIGV4dGVybmFsIGZpbGUgb2JqZWN0Ci0gICAgICAgc3VwcG9ydCBmb3IgInI6YnoyIiBhbmQgInc6YnoyIiBtb2Rlcy4gVGhpcyBpcyBhY3R1YWxseQotICAgICAgIGEgd29ya2Fyb3VuZCBmb3IgYSBsaW1pdGF0aW9uIGluIGJ6MiBtb2R1bGUncyBCWjJGaWxlCi0gICAgICAgY2xhc3Mgd2hpY2ggKHVubGlrZSBnemlwLkd6aXBGaWxlKSBoYXMgbm8gc3VwcG9ydCBmb3IKLSAgICAgICBhIGZpbGUgb2JqZWN0IGFyZ3VtZW50LgotICAgICIiIgotCi0gICAgYmxvY2tzaXplID0gMTYgKiAxMDI0Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW9iaiwgbW9kZSk6Ci0gICAgICAgIHNlbGYuZmlsZW9iaiA9IGZpbGVvYmoKLSAgICAgICAgc2VsZi5tb2RlID0gbW9kZQotICAgICAgICBzZWxmLm5hbWUgPSBnZXRhdHRyKHNlbGYuZmlsZW9iaiwgIm5hbWUiLCBOb25lKQotICAgICAgICBzZWxmLmluaXQoKQotCi0gICAgZGVmIGluaXQoc2VsZik6Ci0gICAgICAgIGltcG9ydCBiejIKLSAgICAgICAgc2VsZi5wb3MgPSAwCi0gICAgICAgIGlmIHNlbGYubW9kZSA9PSAiciI6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgIHNlbGYuYnVmID0gYiIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ6Mm9iaiA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB4ID0gbGVuKHNlbGYuYnVmKQotICAgICAgICB3aGlsZSB4IDwgc2l6ZToKLSAgICAgICAgICAgIHJhdyA9IHNlbGYuZmlsZW9iai5yZWFkKHNlbGYuYmxvY2tzaXplKQotICAgICAgICAgICAgaWYgbm90IHJhdzoKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZGF0YSA9IHNlbGYuYnoyb2JqLmRlY29tcHJlc3MocmF3KQotICAgICAgICAgICAgc2VsZi5idWYgKz0gZGF0YQotICAgICAgICAgICAgeCArPSBsZW4oZGF0YSkKLQotICAgICAgICBidWYgPSBzZWxmLmJ1Zls6c2l6ZV0KLSAgICAgICAgc2VsZi5idWYgPSBzZWxmLmJ1ZltzaXplOl0KLSAgICAgICAgc2VsZi5wb3MgKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHNlZWsoc2VsZiwgcG9zKToKLSAgICAgICAgaWYgcG9zIDwgc2VsZi5wb3M6Ci0gICAgICAgICAgICBzZWxmLmluaXQoKQotICAgICAgICBzZWxmLnJlYWQocG9zIC0gc2VsZi5wb3MpCi0KLSAgICBkZWYgdGVsbChzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucG9zCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYucG9zICs9IGxlbihkYXRhKQotICAgICAgICByYXcgPSBzZWxmLmJ6Mm9iai5jb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmZpbGVvYmoud3JpdGUocmF3KQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLm1vZGUgPT0gInciOgotICAgICAgICAgICAgcmF3ID0gc2VsZi5iejJvYmouZmx1c2goKQotICAgICAgICAgICAgc2VsZi5maWxlb2JqLndyaXRlKHJhdykKLSMgY2xhc3MgX0JaMlByb3h5Ci0KICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRXh0cmFjdGlvbiBmaWxlIG9iamVjdAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzA5LDYgKzYzNCw4IEBACiAgICAgICAgIHNlbGYub2Zmc2V0ID0gb2Zmc2V0CiAgICAgICAgIHNlbGYuc2l6ZSA9IHNpemUKICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IDAKKyAgICAgICAgc2VsZi5uYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAibmFtZSIsIE5vbmUpCisgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKIAogICAgICAgICBpZiBibG9ja2luZm8gaXMgTm9uZToKICAgICAgICAgICAgIGJsb2NraW5mbyA9IFsoMCwgc2l6ZSldCkBAIC03MjcsMTAgKzY1NCwxNiBAQAogICAgICAgICBpZiBsYXN0cG9zIDwgc2VsZi5zaXplOgogICAgICAgICAgICAgc2VsZi5tYXAuYXBwZW5kKChGYWxzZSwgbGFzdHBvcywgc2VsZi5zaXplLCBOb25lKSkKIAorICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi5maWxlb2JqLCAic2Vla2FibGUiKToKLSAgICAgICAgICAgICMgWFhYIGd6aXAuR3ppcEZpbGUgYW5kIGJ6Mi5CWjJGaWxlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqLnNlZWthYmxlKCkKIAogICAgIGRlZiB0ZWxsKHNlbGYpOgpAQCAtNzM4LDEwICs2NzEsMjEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnBvc2l0aW9uCiAKLSAgICBkZWYgc2VlayhzZWxmLCBwb3NpdGlvbik6CisgICAgZGVmIHNlZWsoc2VsZiwgcG9zaXRpb24sIHdoZW5jZT1pby5TRUVLX1NFVCk6CiAgICAgICAgICIiIlNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYucG9zaXRpb24gPSBwb3NpdGlvbgorICAgICAgICBpZiB3aGVuY2UgPT0gaW8uU0VFS19TRVQ6CisgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3NpdGlvbiwgMCksIHNlbGYuc2l6ZSkKKyAgICAgICAgZWxpZiB3aGVuY2UgPT0gaW8uU0VFS19DVVI6CisgICAgICAgICAgICBpZiBwb3NpdGlvbiA8IDA6CisgICAgICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChzZWxmLnBvc2l0aW9uICsgcG9zaXRpb24sIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvc2l0aW9uLCBzZWxmLnNpemUpCisgICAgICAgIGVsaWYgd2hlbmNlID09IGlvLlNFRUtfRU5EOgorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiA9IG1heChtaW4oc2VsZi5zaXplICsgcG9zaXRpb24sIHNlbGYuc2l6ZSksIDApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIGFyZ3VtZW50IikKKyAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KIAogICAgIGRlZiByZWFkKHNlbGYsIHNpemU9Tm9uZSk6CiAgICAgICAgICIiIlJlYWQgZGF0YSBmcm9tIHRoZSBmaWxlLgpAQCAtNzcwLDE0NSArNzE0LDIyIEBACiAgICAgICAgICAgICBzaXplIC09IGxlbmd0aAogICAgICAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW5ndGgKICAgICAgICAgcmV0dXJuIGJ1ZgotI2NsYXNzIF9GaWxlSW5GaWxlCiAKLQotY2xhc3MgRXhGaWxlT2JqZWN0KG9iamVjdCk6Ci0gICAgIiIiRmlsZS1saWtlIG9iamVjdCBmb3IgcmVhZGluZyBhbiBhcmNoaXZlIG1lbWJlci4KLSAgICAgICBJcyByZXR1cm5lZCBieSBUYXJGaWxlLmV4dHJhY3RmaWxlKCkuCi0gICAgIiIiCi0gICAgYmxvY2tzaXplID0gMTAyNAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmZpbGUsIHRhcmluZm8pOgotICAgICAgICBzZWxmLmZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8ub2Zmc2V0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmluZm8uc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyaW5mby5zcGFyc2UpCi0gICAgICAgIHNlbGYubmFtZSA9IHRhcmluZm8ubmFtZQotICAgICAgICBzZWxmLm1vZGUgPSAiciIKLSAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnNpemUgPSB0YXJpbmZvLnNpemUKLQotICAgICAgICBzZWxmLnBvc2l0aW9uID0gMAotICAgICAgICBzZWxmLmJ1ZmZlciA9IGIiIgotCi0gICAgZGVmIHJlYWRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHdyaXRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBzZWVrYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZmlsZW9iai5zZWVrYWJsZSgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBzaXplPU5vbmUpOgotICAgICAgICAiIiJSZWFkIGF0IG1vc3Qgc2l6ZSBieXRlcyBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIG5vdAotICAgICAgICAgICBwcmVzZW50IG9yIE5vbmUsIHJlYWQgYWxsIGRhdGEgdW50aWwgRU9GIGlzIHJlYWNoZWQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIGJ1ZiA9IGIiIgotICAgICAgICBpZiBzZWxmLmJ1ZmZlcjoKLSAgICAgICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1ZiA9IHNlbGYuYnVmZmVyWzpzaXplXQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gc2VsZi5idWZmZXJbc2l6ZTpdCi0KLSAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgotICAgICAgICAgICAgYnVmICs9IHNlbGYuZmlsZW9iai5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJ1ZiArPSBzZWxmLmZpbGVvYmoucmVhZChzaXplIC0gbGVuKGJ1ZikpCi0KLSAgICAgICAgc2VsZi5wb3NpdGlvbiArPSBsZW4oYnVmKQotICAgICAgICByZXR1cm4gYnVmCi0KLSAgICAjIFhYWCBUZXh0SU9XcmFwcGVyIHVzZXMgdGhlIHJlYWQxKCkgbWV0aG9kLgotICAgIHJlYWQxID0gcmVhZAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgotICAgICAgICAiIiJSZWFkIG9uZSBlbnRpcmUgbGluZSBmcm9tIHRoZSBmaWxlLiBJZiBzaXplIGlzIHByZXNlbnQKLSAgICAgICAgICAgYW5kIG5vbi1uZWdhdGl2ZSwgcmV0dXJuIGEgc3RyaW5nIHdpdGggYXQgbW9zdCB0aGF0Ci0gICAgICAgICAgIHNpemUsIHdoaWNoIG1heSBiZSBhbiBpbmNvbXBsZXRlIGxpbmUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKQotCi0gICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgYnVmID0gc2VsZi5maWxlb2JqLnJlYWQoc2VsZi5ibG9ja3NpemUpCi0gICAgICAgICAgICAgICAgc2VsZi5idWZmZXIgKz0gYnVmCi0gICAgICAgICAgICAgICAgaWYgbm90IGJ1ZiBvciBiIlxuIiBpbiBidWY6Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IHNlbGYuYnVmZmVyLmZpbmQoYiJcbiIpICsgMQotICAgICAgICAgICAgICAgICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgbm8gbmV3bGluZSBmb3VuZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGxlbihzZWxmLmJ1ZmZlcikKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBzaXplICE9IC0xOgotICAgICAgICAgICAgcG9zID0gbWluKHNpemUsIHBvcykKLQotICAgICAgICBidWYgPSBzZWxmLmJ1ZmZlcls6cG9zXQotICAgICAgICBzZWxmLmJ1ZmZlciA9IHNlbGYuYnVmZmVyW3BvczpdCi0gICAgICAgIHNlbGYucG9zaXRpb24gKz0gbGVuKGJ1ZikKLSAgICAgICAgcmV0dXJuIGJ1ZgotCi0gICAgZGVmIHJlYWRsaW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCB3aXRoIGFsbCByZW1haW5pbmcgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICByZXN1bHQgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6IGJyZWFrCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxpbmUpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiB0ZWxsKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuY2xvc2VkOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYucG9zaXRpb24KLQotICAgIGRlZiBzZWVrKHNlbGYsIHBvcywgd2hlbmNlPW9zLlNFRUtfU0VUKToKLSAgICAgICAgIiIiU2VlayB0byBhIHBvc2l0aW9uIGluIHRoZSBmaWxlLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIikKLQotICAgICAgICBpZiB3aGVuY2UgPT0gb3MuU0VFS19TRVQ6Ci0gICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWluKG1heChwb3MsIDApLCBzZWxmLnNpemUpCi0gICAgICAgIGVsaWYgd2hlbmNlID09IG9zLlNFRUtfQ1VSOgotICAgICAgICAgICAgaWYgcG9zIDwgMDoKLSAgICAgICAgICAgICAgICBzZWxmLnBvc2l0aW9uID0gbWF4KHNlbGYucG9zaXRpb24gKyBwb3MsIDApCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtaW4oc2VsZi5wb3NpdGlvbiArIHBvcywgc2VsZi5zaXplKQotICAgICAgICBlbGlmIHdoZW5jZSA9PSBvcy5TRUVLX0VORDoKLSAgICAgICAgICAgIHNlbGYucG9zaXRpb24gPSBtYXgobWluKHNlbGYuc2l6ZSArIHBvcywgc2VsZi5zaXplKSwgMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgYXJndW1lbnQiKQotCi0gICAgICAgIHNlbGYuYnVmZmVyID0gYiIiCi0gICAgICAgIHNlbGYuZmlsZW9iai5zZWVrKHNlbGYucG9zaXRpb24pCisgICAgZGVmIHJlYWRpbnRvKHNlbGYsIGIpOgorICAgICAgICBidWYgPSBzZWxmLnJlYWQobGVuKGIpKQorICAgICAgICBiWzpsZW4oYnVmKV0gPSBidWYKKyAgICAgICAgcmV0dXJuIGxlbihidWYpCiAKICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICIiIkNsb3NlIHRoZSBmaWxlIG9iamVjdC4KLSAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQorI2NsYXNzIF9GaWxlSW5GaWxlCiAKLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgICIiIkdldCBhbiBpdGVyYXRvciBvdmVyIHRoZSBmaWxlJ3MgbGluZXMuCi0gICAgICAgICIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IHNlbGYucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHlpZWxkIGxpbmUKK2NsYXNzIEV4RmlsZU9iamVjdChpby5CdWZmZXJlZFJlYWRlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZmlsZSwgdGFyaW5mbyk6CisgICAgICAgIGZpbGVvYmogPSBfRmlsZUluRmlsZSh0YXJmaWxlLmZpbGVvYmosIHRhcmluZm8ub2Zmc2V0X2RhdGEsCisgICAgICAgICAgICAgICAgdGFyaW5mby5zaXplLCB0YXJpbmZvLnNwYXJzZSkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhmaWxlb2JqKQogI2NsYXNzIEV4RmlsZU9iamVjdAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDg3LDcgKzkwOCw3IEBACiAgICAgZGVmIGNyZWF0ZV9wYXhfZ2xvYmFsX2hlYWRlcihjbHMsIHBheF9oZWFkZXJzKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBvYmplY3QgYXMgYSBwYXggZ2xvYmFsIGhlYWRlciBibG9jayBzZXF1ZW5jZS4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBjbHMuX2NyZWF0ZV9wYXhfZ2VuZXJpY19oZWFkZXIocGF4X2hlYWRlcnMsIFhHTFRZUEUsICJ1dGY4IikKKyAgICAgICAgcmV0dXJuIGNscy5fY3JlYXRlX3BheF9nZW5lcmljX2hlYWRlcihwYXhfaGVhZGVycywgWEdMVFlQRSwgInV0Zi04IikKIAogICAgIGRlZiBfcG9zaXhfc3BsaXRfbmFtZShzZWxmLCBuYW1lKToKICAgICAgICAgIiIiU3BsaXQgYSBuYW1lIGxvbmdlciB0aGFuIDEwMCBjaGFycyBpbnRvIGEgcHJlZml4CkBAIC0xMTcwLDcgKzk5MSw3IEBACiAgICAgICAgIGJpbmFyeSA9IEZhbHNlCiAgICAgICAgIGZvciBrZXl3b3JkLCB2YWx1ZSBpbiBwYXhfaGVhZGVycy5pdGVtcygpOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmOCIsICJzdHJpY3QiKQorICAgICAgICAgICAgICAgIHZhbHVlLmVuY29kZSgidXRmLTgiLCAic3RyaWN0IikKICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICAgICAgYmluYXJ5ID0gVHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xMTgxLDEzICsxMDAyLDEzIEBACiAgICAgICAgICAgICByZWNvcmRzICs9IGIiMjEgaGRyY2hhcnNldD1CSU5BUllcbiIKIAogICAgICAgICBmb3Iga2V5d29yZCwgdmFsdWUgaW4gcGF4X2hlYWRlcnMuaXRlbXMoKToKLSAgICAgICAgICAgIGtleXdvcmQgPSBrZXl3b3JkLmVuY29kZSgidXRmOCIpCisgICAgICAgICAgICBrZXl3b3JkID0ga2V5d29yZC5lbmNvZGUoInV0Zi04IikKICAgICAgICAgICAgIGlmIGJpbmFyeToKICAgICAgICAgICAgICAgICAjIFRyeSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBieXRlIHJlcHJlc2VudGF0aW9uIG9mIGB2YWx1ZScuCiAgICAgICAgICAgICAgICAgIyBOZWVkbGVzcyB0byBzYXksIHRoYXQgdGhlIGVuY29kaW5nIG11c3QgbWF0Y2ggdGhlIHN0cmluZy4KICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZShlbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmVuY29kZSgidXRmLTgiKQogCiAgICAgICAgICAgICBsID0gbGVuKGtleXdvcmQpICsgbGVuKHZhbHVlKSArIDMgICAjICcgJyArICc9JyArICdcbicKICAgICAgICAgICAgIG4gPSBwID0gMApAQCAtMTM5Niw3ICsxMjE3LDcgQEAKICAgICAgICAgIyB0aGUgdHJhbnNsYXRpb24gdG8gVVRGLTggZmFpbHMuCiAgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKGJyIlxkKyBoZHJjaGFyc2V0PShbXlxuXSspXG4iLCBidWYpCiAgICAgICAgIGlmIG1hdGNoIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcGF4X2hlYWRlcnNbImhkcmNoYXJzZXQiXSA9IG1hdGNoLmdyb3VwKDEpLmRlY29kZSgidXRmOCIpCisgICAgICAgICAgICBwYXhfaGVhZGVyc1siaGRyY2hhcnNldCJdID0gbWF0Y2guZ3JvdXAoMSkuZGVjb2RlKCJ1dGYtOCIpCiAKICAgICAgICAgIyBGb3IgdGhlIHRpbWUgYmVpbmcsIHdlIGRvbid0IGNhcmUgYWJvdXQgYW55dGhpbmcgb3RoZXIgdGhhbiAiQklOQVJZIi4KICAgICAgICAgIyBUaGUgb25seSBvdGhlciB2YWx1ZSB0aGF0IGlzIGN1cnJlbnRseSBhbGxvd2VkIGJ5IHRoZSBzdGFuZGFyZCBpcwpAQCAtMTQwNSw3ICsxMjI2LDcgQEAKICAgICAgICAgaWYgaGRyY2hhcnNldCA9PSAiQklOQVJZIjoKICAgICAgICAgICAgIGVuY29kaW5nID0gdGFyZmlsZS5lbmNvZGluZwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmOCIKKyAgICAgICAgICAgIGVuY29kaW5nID0gInV0Zi04IgogCiAgICAgICAgICMgUGFyc2UgcGF4IGhlYWRlciBpbmZvcm1hdGlvbi4gQSByZWNvcmQgbG9va3MgbGlrZSB0aGF0OgogICAgICAgICAjICIlZCAlcz0lc1xuIiAlIChsZW5ndGgsIGtleXdvcmQsIHZhbHVlKS4gbGVuZ3RoIGlzIHRoZSBzaXplCkBAIC0xNDIyLDIwICsxMjQzLDIwIEBACiAgICAgICAgICAgICBsZW5ndGggPSBpbnQobGVuZ3RoKQogICAgICAgICAgICAgdmFsdWUgPSBidWZbbWF0Y2guZW5kKDIpICsgMTptYXRjaC5zdGFydCgxKSArIGxlbmd0aCAtIDFdCiAKLSAgICAgICAgICAgICMgTm9ybWFsbHksIHdlIGNvdWxkIGp1c3QgdXNlICJ1dGY4IiBhcyB0aGUgZW5jb2RpbmcgYW5kICJzdHJpY3QiCisgICAgICAgICAgICAjIE5vcm1hbGx5LCB3ZSBjb3VsZCBqdXN0IHVzZSAidXRmLTgiIGFzIHRoZSBlbmNvZGluZyBhbmQgInN0cmljdCIKICAgICAgICAgICAgICMgYXMgdGhlIGVycm9yIGhhbmRsZXIsIGJ1dCB3ZSBiZXR0ZXIgbm90IHRha2UgdGhlIHJpc2suIEZvcgogICAgICAgICAgICAgIyBleGFtcGxlLCBHTlUgdGFyIDw9IDEuMjMgaXMga25vd24gdG8gc3RvcmUgZmlsZW5hbWVzIGl0IGNhbm5vdAogICAgICAgICAgICAgIyB0cmFuc2xhdGUgdG8gVVRGLTggYXMgcmF3IHN0cmluZ3MgKHVuZm9ydHVuYXRlbHkgd2l0aG91dCBhCiAgICAgICAgICAgICAjIGhkcmNoYXJzZXQ9QklOQVJZIGhlYWRlcikuCiAgICAgICAgICAgICAjIFdlIGZpcnN0IHRyeSB0aGUgc3RyaWN0IHN0YW5kYXJkIGVuY29kaW5nLCBhbmQgaWYgdGhhdCBmYWlscyB3ZQogICAgICAgICAgICAgIyBmYWxsIGJhY2sgb24gdGhlIHVzZXIncyBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KLSAgICAgICAgICAgIGtleXdvcmQgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKGtleXdvcmQsICJ1dGY4IiwgInV0ZjgiLAorICAgICAgICAgICAga2V5d29yZCA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQoa2V5d29yZCwgInV0Zi04IiwgInV0Zi04IiwKICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBpZiBrZXl3b3JkIGluIFBBWF9OQU1FX0ZJRUxEUzoKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYuX2RlY29kZV9wYXhfZmllbGQodmFsdWUsIGVuY29kaW5nLCB0YXJmaWxlLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5fZGVjb2RlX3BheF9maWVsZCh2YWx1ZSwgInV0ZjgiLCAidXRmOCIsCisgICAgICAgICAgICAgICAgdmFsdWUgPSBzZWxmLl9kZWNvZGVfcGF4X2ZpZWxkKHZhbHVlLCAidXRmLTgiLCAidXRmLTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZmlsZS5lcnJvcnMpCiAKICAgICAgICAgICAgIHBheF9oZWFkZXJzW2tleXdvcmRdID0gdmFsdWUKQEAgLTE1OTUsNyArMTQxNiw3IEBACiAKICAgICB0YXJpbmZvID0gVGFySW5mbyAgICAgICAgICAgIyBUaGUgZGVmYXVsdCBUYXJJbmZvIGNsYXNzIHRvIHVzZS4KIAotICAgIGZpbGVvYmplY3QgPSBFeEZpbGVPYmplY3QgICAjIFRoZSBkZWZhdWx0IEV4RmlsZU9iamVjdCBjbGFzcyB0byB1c2UuCisgICAgZmlsZW9iamVjdCA9IEV4RmlsZU9iamVjdCAgICMgVGhlIGZpbGUtb2JqZWN0IGZvciBleHRyYWN0ZmlsZSgpLgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgbW9kZT0iciIsIGZpbGVvYmo9Tm9uZSwgZm9ybWF0PU5vbmUsCiAgICAgICAgICAgICB0YXJpbmZvPU5vbmUsIGRlcmVmZXJlbmNlPU5vbmUsIGlnbm9yZV96ZXJvcz1Ob25lLCBlbmNvZGluZz1Ob25lLApAQCAtMTcxNCwxOCArMTUzNSwyMiBAQAogICAgICAgICAgICAncjonICAgICAgICAgb3BlbiBmb3IgcmVhZGluZyBleGNsdXNpdmVseSB1bmNvbXByZXNzZWQKICAgICAgICAgICAgJ3I6Z3onICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBnemlwIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdyOmJ6MicgICAgICBvcGVuIGZvciByZWFkaW5nIHdpdGggYnppcDIgY29tcHJlc3Npb24KKyAgICAgICAgICAgJ3I6eHonICAgICAgIG9wZW4gZm9yIHJlYWRpbmcgd2l0aCBsem1hIGNvbXByZXNzaW9uCiAgICAgICAgICAgICdhJyBvciAnYTonICBvcGVuIGZvciBhcHBlbmRpbmcsIGNyZWF0aW5nIHRoZSBmaWxlIGlmIG5lY2Vzc2FyeQogICAgICAgICAgICAndycgb3IgJ3c6JyAgb3BlbiBmb3Igd3JpdGluZyB3aXRob3V0IGNvbXByZXNzaW9uCiAgICAgICAgICAgICd3Omd6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggZ3ppcCBjb21wcmVzc2lvbgogICAgICAgICAgICAndzpiejInICAgICAgb3BlbiBmb3Igd3JpdGluZyB3aXRoIGJ6aXAyIGNvbXByZXNzaW9uCisgICAgICAgICAgICd3Onh6JyAgICAgICBvcGVuIGZvciB3cml0aW5nIHdpdGggbHptYSBjb21wcmVzc2lvbgogCiAgICAgICAgICAgICdyfConICAgICAgICBvcGVuIGEgc3RyZWFtIG9mIHRhciBibG9ja3Mgd2l0aCB0cmFuc3BhcmVudCBjb21wcmVzc2lvbgogICAgICAgICAgICAncnwnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MgZm9yIHJlYWRpbmcKICAgICAgICAgICAgJ3J8Z3onICAgICAgIG9wZW4gYSBnemlwIGNvbXByZXNzZWQgc3RyZWFtIG9mIHRhciBibG9ja3MKICAgICAgICAgICAgJ3J8YnoyJyAgICAgIG9wZW4gYSBiemlwMiBjb21wcmVzc2VkIHN0cmVhbSBvZiB0YXIgYmxvY2tzCisgICAgICAgICAgICdyfHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gb2YgdGFyIGJsb2NrcwogICAgICAgICAgICAnd3wnICAgICAgICAgb3BlbiBhbiB1bmNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCiAgICAgICAgICAgICd3fGd6JyAgICAgICBvcGVuIGEgZ3ppcCBjb21wcmVzc2VkIHN0cmVhbSBmb3Igd3JpdGluZwogICAgICAgICAgICAnd3xiejInICAgICAgb3BlbiBhIGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtIGZvciB3cml0aW5nCisgICAgICAgICAgICd3fHh6JyAgICAgICBvcGVuIGFuIGx6bWEgY29tcHJlc3NlZCBzdHJlYW0gZm9yIHdyaXRpbmcKICAgICAgICAgIiIiCiAKICAgICAgICAgaWYgbm90IG5hbWUgYW5kIG5vdCBmaWxlb2JqOgpAQCAtMTgzMiwxMCArMTY1Nyw4IEBACiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIENvbXByZXNzaW9uRXJyb3IoImJ6MiBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCiAKLSAgICAgICAgaWYgZmlsZW9iaiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBfQloyUHJveHkoZmlsZW9iaiwgbW9kZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShuYW1lLCBtb2RlLCBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCisgICAgICAgIGZpbGVvYmogPSBiejIuQloyRmlsZShmaWxlb2JqIG9yIG5hbWUsIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2xldmVsPWNvbXByZXNzbGV2ZWwpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdCA9IGNscy50YXJvcGVuKG5hbWUsIG1vZGUsIGZpbGVvYmosICoqa3dhcmdzKQpAQCAtMTg0NSwxMSArMTY2OCwzNSBAQAogICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKICAgICAgICAgcmV0dXJuIHQKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB4em9wZW4oY2xzLCBuYW1lLCBtb2RlPSJyIiwgZmlsZW9iaj1Ob25lLCBwcmVzZXQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAiIiJPcGVuIGx6bWEgY29tcHJlc3NlZCB0YXIgYXJjaGl2ZSBuYW1lIGZvciByZWFkaW5nIG9yIHdyaXRpbmcuCisgICAgICAgICAgIEFwcGVuZGluZyBpcyBub3QgYWxsb3dlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vZGUgbm90IGluICgiciIsICJ3Iik6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIG11c3QgYmUgJ3InIG9yICd3JyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGx6bWEKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcmFpc2UgQ29tcHJlc3Npb25FcnJvcigibHptYSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSIpCisKKyAgICAgICAgZmlsZW9iaiA9IGx6bWEuTFpNQUZpbGUoZmlsZW9iaiBvciBuYW1lLCBtb2RlLCBwcmVzZXQ9cHJlc2V0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHQgPSBjbHMudGFyb3BlbihuYW1lLCBtb2RlLCBmaWxlb2JqLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IChsem1hLkxaTUFFcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgZmlsZW9iai5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSBSZWFkRXJyb3IoIm5vdCBhbiBsem1hIGZpbGUiKQorICAgICAgICB0Ll9leHRmaWxlb2JqID0gRmFsc2UKKyAgICAgICAgcmV0dXJuIHQKKwogICAgICMgQWxsICpvcGVuKCkgbWV0aG9kcyBhcmUgcmVnaXN0ZXJlZCBoZXJlLgogICAgIE9QRU5fTUVUSCA9IHsKICAgICAgICAgInRhciI6ICJ0YXJvcGVuIiwgICAjIHVuY29tcHJlc3NlZCB0YXIKICAgICAgICAgImd6IjogICJnem9wZW4iLCAgICAjIGd6aXAgY29tcHJlc3NlZCB0YXIKLSAgICAgICAgImJ6MiI6ICJiejJvcGVuIiAgICAjIGJ6aXAyIGNvbXByZXNzZWQgdGFyCisgICAgICAgICJiejIiOiAiYnoyb3BlbiIsICAgIyBiemlwMiBjb21wcmVzc2VkIHRhcgorICAgICAgICAieHoiOiAgInh6b3BlbiIgICAgICMgbHptYSBjb21wcmVzc2VkIHRhcgogICAgIH0KIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMjAwOSw3ICsxODU2LDcgQEAKIAogICAgICAgICBmb3IgdGFyaW5mbyBpbiBzZWxmOgogICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludChmaWxlbW9kZSh0YXJpbmZvLm1vZGUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KHN0YXQuZmlsZW1vZGUodGFyaW5mby5tb2RlKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBwcmludCgiJXMvJXMiICUgKHRhcmluZm8udW5hbWUgb3IgdGFyaW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJpbmZvLmduYW1lIG9yIHRhcmluZm8uZ2lkKSwgZW5kPScgJykKICAgICAgICAgICAgICAgICBpZiB0YXJpbmZvLmlzY2hyKCkgb3IgdGFyaW5mby5pc2JsaygpOgpAQCAtMjE5MiwxMiArMjAzOSw5IEBACiAKICAgICBkZWYgZXh0cmFjdGZpbGUoc2VsZiwgbWVtYmVyKToKICAgICAgICAgIiIiRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZSBvYmplY3QuIGBtZW1iZXInIG1heSBiZQotICAgICAgICAgICBhIGZpbGVuYW1lIG9yIGEgVGFySW5mbyBvYmplY3QuIElmIGBtZW1iZXInIGlzIGEgcmVndWxhciBmaWxlLCBhCi0gICAgICAgICAgIGZpbGUtbGlrZSBvYmplY3QgaXMgcmV0dXJuZWQuIElmIGBtZW1iZXInIGlzIGEgbGluaywgYSBmaWxlLWxpa2UKLSAgICAgICAgICAgb2JqZWN0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIGxpbmsncyB0YXJnZXQuIElmIGBtZW1iZXInIGlzIG5vbmUgb2YKLSAgICAgICAgICAgdGhlIGFib3ZlLCBOb25lIGlzIHJldHVybmVkLgotICAgICAgICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcKLSAgICAgICAgICAgbWV0aG9kczogcmVhZCgpLCByZWFkbGluZSgpLCByZWFkbGluZXMoKSwgc2VlaygpIGFuZCB0ZWxsKCkKKyAgICAgICAgICAgYSBmaWxlbmFtZSBvciBhIFRhckluZm8gb2JqZWN0LiBJZiBgbWVtYmVyJyBpcyBhIHJlZ3VsYXIgZmlsZSBvciBhCisgICAgICAgICAgIGxpbmssIGFuIGlvLkJ1ZmZlcmVkUmVhZGVyIG9iamVjdCBpcyByZXR1cm5lZC4gT3RoZXJ3aXNlLCBOb25lIGlzCisgICAgICAgICAgIHJldHVybmVkLgogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5fY2hlY2soInIiKQogCkBAIC0yMjA2LDEyICsyMDUwLDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhcmluZm8gPSBtZW1iZXIKIAotICAgICAgICBpZiB0YXJpbmZvLmlzcmVnKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5maWxlb2JqZWN0KHNlbGYsIHRhcmluZm8pCi0KLSAgICAgICAgZWxpZiB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKLSAgICAgICAgICAgICMgSWYgYSBtZW1iZXIncyB0eXBlIGlzIHVua25vd24sIGl0IGlzIHRyZWF0ZWQgYXMgYQotICAgICAgICAgICAgIyByZWd1bGFyIGZpbGUuCisgICAgICAgIGlmIHRhcmluZm8uaXNyZWcoKSBvciB0YXJpbmZvLnR5cGUgbm90IGluIFNVUFBPUlRFRF9UWVBFUzoKKyAgICAgICAgICAgICMgTWVtYmVycyB3aXRoIHVua25vd24gdHlwZXMgYXJlIHRyZWF0ZWQgYXMgcmVndWxhciBmaWxlcy4KICAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbGVvYmplY3Qoc2VsZiwgdGFyaW5mbykKIAogICAgICAgICBlbGlmIHRhcmluZm8uaXNsbmsoKSBvciB0YXJpbmZvLmlzc3ltKCk6CkBAIC0yMjgzLDkgKzIxMjMsOCBAQAogICAgICAgICAgICAgIyBVc2UgYSBzYWZlIG1vZGUgZm9yIHRoZSBkaXJlY3RvcnksIHRoZSByZWFsIG1vZGUgaXMgc2V0CiAgICAgICAgICAgICAjIGxhdGVyIGluIF9leHRyYWN0X21lbWJlcigpLgogICAgICAgICAgICAgb3MubWtkaXIodGFyZ2V0cGF0aCwgMG83MDApCi0gICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIG1ha2VmaWxlKHNlbGYsIHRhcmluZm8sIHRhcmdldHBhdGgpOgogICAgICAgICAiIiJNYWtlIGEgZmlsZSBjYWxsZWQgdGFyZ2V0cGF0aC4KZGlmZiAtLWdpdCBhL0xpYi90ZW1wZmlsZS5weSBiL0xpYi90ZW1wZmlsZS5weQppbmRleCAzNGRmZjMwLi4zOWViZjVhIDEwMDY0NAotLS0gYS9MaWIvdGVtcGZpbGUucHkKKysrIGIvTGliL3RlbXBmaWxlLnB5CkBAIC0xMCw4ICsxMCw2IEBACiAKICAgVE1QX01BWCAgLSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB0aGF0IHdpbGwgYmUgdHJpZWQgYmVmb3JlCiAgICAgICAgICAgICAgZ2l2aW5nIHVwLgotICB0ZW1wbGF0ZSAtIHRoZSBkZWZhdWx0IHByZWZpeCBmb3IgYWxsIHRlbXBvcmFyeSBuYW1lcy4KLSAgICAgICAgICAgICBZb3UgbWF5IGNoYW5nZSB0aGlzIHRvIGNvbnRyb2wgdGhlIGRlZmF1bHQgcHJlZml4LgogICB0ZW1wZGlyICAtIElmIHRoaXMgaXMgc2V0IHRvIGEgc3RyaW5nIGJlZm9yZSB0aGUgZmlyc3QgdXNlIG9mCiAgICAgICAgICAgICAgYW55IHJvdXRpbmUgZnJvbSB0aGlzIG1vZHVsZSwgaXQgd2lsbCBiZSBjb25zaWRlcmVkIGFzCiAgICAgICAgICAgICAgYW5vdGhlciBjYW5kaWRhdGUgbG9jYXRpb24gdG8gc3RvcmUgdGVtcG9yYXJ5IGZpbGVzLgpAQCAtMzMsNyArMzEsNiBAQAogaW1wb3J0IHN5cyBhcyBfc3lzCiBpbXBvcnQgaW8gYXMgX2lvCiBpbXBvcnQgb3MgYXMgX29zCi1pbXBvcnQgZXJybm8gYXMgX2Vycm5vCiBmcm9tIHJhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIF9SYW5kb20KIAogdHJ5OgpAQCAtNDUsNyArNDIsNyBAQAogICAgIGRlZiBfc2V0X2Nsb2V4ZWMoZmQpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmbGFncyA9IF9mY250bC5mY250bChmZCwgX2ZjbnRsLkZfR0VURkQsIDApCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZmxhZ3MgcmVhZCBzdWNjZXNzZnVsbHksIG1vZGlmeQpAQCAtNzQsNiArNzEsOCBAQAogZWxzZToKICAgICBUTVBfTUFYID0gMTAwMDAKIAorIyBBbHRob3VnaCBpdCBkb2VzIG5vdCBoYXZlIGFuIHVuZGVyc2NvcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgdGhpcworIyB2YXJpYWJsZSBpcyBhbiBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgKHNlZSBpc3N1ZSAxMDM1NCkuCiB0ZW1wbGF0ZSA9ICJ0bXAiCiAKICMgSW50ZXJuYWwgcm91dGluZXMuCkBAIC04NSwxOSArODQsMTYgQEAKIGVsaWYgaGFzYXR0cihfb3MsICJzdGF0Iik6CiAgICAgX3N0YXQgPSBfb3Muc3RhdAogZWxzZToKLSAgICAjIEZhbGxiYWNrLiAgQWxsIHdlIG5lZWQgaXMgc29tZXRoaW5nIHRoYXQgcmFpc2VzIG9zLmVycm9yIGlmIHRoZQorICAgICMgRmFsbGJhY2suICBBbGwgd2UgbmVlZCBpcyBzb21ldGhpbmcgdGhhdCByYWlzZXMgT1NFcnJvciBpZiB0aGUKICAgICAjIGZpbGUgZG9lc24ndCBleGlzdC4KICAgICBkZWYgX3N0YXQoZm4pOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gb3BlbihmbikKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBfb3MuZXJyb3IKKyAgICAgICAgZiA9IG9wZW4oZm4pCiAgICAgICAgIGYuY2xvc2UoKQogCiBkZWYgX2V4aXN0cyhmbik6CiAgICAgdHJ5OgogICAgICAgICBfc3RhdChmbikKLSAgICBleGNlcHQgX29zLmVycm9yOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMTQ5LDcgKzE0NSw3IEBACiAgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB0aGUgY3VycmVudCBkaXJlY3RvcnkuCiAgICAgdHJ5OgogICAgICAgICBkaXJsaXN0LmFwcGVuZChfb3MuZ2V0Y3dkKCkpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgX29zLmVycm9yKToKKyAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBPU0Vycm9yKToKICAgICAgICAgZGlybGlzdC5hcHBlbmQoX29zLmN1cmRpcikKIAogICAgIHJldHVybiBkaXJsaXN0CkBAIC0xODEsMTIgKzE3NywxMSBAQAogICAgICAgICAgICAgICAgIF9vcy51bmxpbmsoZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgZGVsIGZwLCBmZAogICAgICAgICAgICAgICAgIHJldHVybiBkaXIKLSAgICAgICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgSU9FcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gX2Vycm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsgIyBubyBwb2ludCB0cnlpbmcgbW9yZSBuYW1lcyBpbiB0aGlzIGRpcmVjdG9yeQorICAgICAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRU5PRU5ULAotICAgICAgICAgICAgICAgICAgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvdW5kIGluICVzIiAlIGRpcmxpc3QpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICBicmVhayAgICMgbm8gcG9pbnQgdHJ5aW5nIG1vcmUgbmFtZXMgaW4gdGhpcyBkaXJlY3RvcnkKKyAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm91bmQgaW4gJXMiICUgZGlybGlzdCkKIAogX25hbWVfc2VxdWVuY2UgPSBOb25lCiAKQEAgLTIxNiwxMiArMjExLDEwIEBACiAgICAgICAgICAgICBmZCA9IF9vcy5vcGVuKGZpbGUsIGZsYWdzLCAwbzYwMCkKICAgICAgICAgICAgIF9zZXRfY2xvZXhlYyhmZCkKICAgICAgICAgICAgIHJldHVybiAoZmQsIF9vcy5wYXRoLmFic3BhdGgoZmlsZSkpCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBpZiBlLmVycm5vID09IF9lcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgY29udGludWUgIyB0cnkgYWdhaW4KLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZSAgICAjIHRyeSBhZ2FpbgogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZm91bmQiKQogCiAKICMgVXNlciB2aXNpYmxlIGludGVyZmFjZXMuCkBAIC0zMDUsMTIgKzI5OCwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfb3MubWtkaXIoZmlsZSwgMG83MDApCiAgICAgICAgICAgICByZXR1cm4gZmlsZQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBfZXJybm8uRUVYSVNUOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgdHJ5IGFnYWluCi0gICAgICAgICAgICByYWlzZQorICAgICAgICBleGNlcHQgRmlsZUV4aXN0c0Vycm9yOgorICAgICAgICAgICAgY29udGludWUgICAgIyB0cnkgYWdhaW4KIAotICAgIHJhaXNlIElPRXJyb3IoX2Vycm5vLkVFWElTVCwgIk5vIHVzYWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IG5hbWUgZm91bmQiKQorICAgIHJhaXNlIEZpbGVFeGlzdHNFcnJvcigiTm8gdXNhYmxlIHRlbXBvcmFyeSBkaXJlY3RvcnkgbmFtZSBmb3VuZCIpCiAKIGRlZiBta3RlbXAoc3VmZml4PSIiLCBwcmVmaXg9dGVtcGxhdGUsIGRpcj1Ob25lKToKICAgICAiIiJVc2VyLWNhbGxhYmxlIGZ1bmN0aW9uIHRvIHJldHVybiBhIHVuaXF1ZSB0ZW1wb3JhcnkgZmlsZSBuYW1lLiAgVGhlCkBAIC0zMzksNyArMzMwLDcgQEAKICAgICAgICAgaWYgbm90IF9leGlzdHMoZmlsZSk6CiAgICAgICAgICAgICByZXR1cm4gZmlsZQogCi0gICAgcmFpc2UgSU9FcnJvcihfZXJybm8uRUVYSVNULCAiTm8gdXNhYmxlIHRlbXBvcmFyeSBmaWxlbmFtZSBmb3VuZCIpCisgICAgcmFpc2UgRmlsZUV4aXN0c0Vycm9yKCJObyB1c2FibGUgdGVtcG9yYXJ5IGZpbGVuYW1lIGZvdW5kIikKIAogCiBjbGFzcyBfVGVtcG9yYXJ5RmlsZVdyYXBwZXI6CkBAIC01OTIsOCArNTgzLDEzIEBACiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlLnRlbGwoKQogCi0gICAgZGVmIHRydW5jYXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKCkKKyAgICBkZWYgdHJ1bmNhdGUoc2VsZiwgc2l6ZT1Ob25lKToKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fZmlsZS50cnVuY2F0ZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBzaXplID4gc2VsZi5fbWF4X3NpemU6CisgICAgICAgICAgICAgICAgc2VsZi5yb2xsb3ZlcigpCisgICAgICAgICAgICBzZWxmLl9maWxlLnRydW5jYXRlKHNpemUpCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CiAgICAgICAgIGZpbGUgPSBzZWxmLl9maWxlCkBAIC02NjksNyArNjY1LDcgQEAKICAgICBfaXNsaW5rID0gc3RhdGljbWV0aG9kKF9vcy5wYXRoLmlzbGluaykKICAgICBfcmVtb3ZlID0gc3RhdGljbWV0aG9kKF9vcy5yZW1vdmUpCiAgICAgX3JtZGlyID0gc3RhdGljbWV0aG9kKF9vcy5ybWRpcikKLSAgICBfb3NfZXJyb3IgPSBfb3MuZXJyb3IKKyAgICBfb3NfZXJyb3IgPSBPU0Vycm9yCiAgICAgX3dhcm4gPSBfd2FybmluZ3Mud2FybgogCiAgICAgZGVmIF9ybXRyZWUoc2VsZiwgcGF0aCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkgYi9MaWIvdGVzdC9idWZmZXJfdGVzdHMucHkKaW5kZXggNmQyMGY3ZC4uY2Y1NGMyOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvYnVmZmVyX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2J1ZmZlcl90ZXN0cy5weQpAQCAtMjAwLDcgKzIwMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ2FiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2InJywgYidhYmMnLCBiJ2RlZicsIGInZ2hpJywgYicnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1hcnNoYWwoYidcbmFiY1xuZGVmXHJcbmdoaVxuXHInKS5zcGxpdGxpbmVzKEZhbHNlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYidcbicsIGInYWJjXG4nLCBiJ2RlZlxyXG4nLCBiJ2doaVxuJywgYidcciddLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoMSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhUcnVlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYicnLCBiJ2FiYycsIGInZGVmJywgYidnaGknLCBiJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubWFyc2hhbChiJ1xuYWJjXG5kZWZcclxuZ2hpXG5ccicpLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ1xuJywgYidhYmNcbicsIGInZGVmXHJcbicsIGInZ2hpXG4nLCBiJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXJzaGFsKGInXG5hYmNcbmRlZlxyXG5naGlcblxyJykuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFyc2hhbChiJ2FiYycpLnNwbGl0bGluZXMsIDQyLCA0MikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRSBiL0xpYi90ZXN0L2NyYXNoZXJzL1JFQURNRQppbmRleCAyYTczZTFiLi4wMjU5YTA2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9SRUFETUUKKysrIGIvTGliL3Rlc3QvY3Jhc2hlcnMvUkVBRE1FCkBAIC0xNCwzICsxNCw3IEBACiBPbmNlIHRoZSBjcmFzaCBpcyBmaXhlZCwgdGhlIHRlc3QgY2FzZSBzaG91bGQgYmUgbW92ZWQgaW50byBhbiBhcHByb3ByaWF0ZSB0ZXN0CiAoZXZlbiBpZiBpdCB3YXMgb3JpZ2luYWxseSBmcm9tIHRoZSB0ZXN0IHN1aXRlKS4gIFRoaXMgZW5zdXJlcyB0aGUgcmVncmVzc2lvbgogZG9lc24ndCBoYXBwZW4gYWdhaW4uICBBbmQgaWYgaXQgZG9lcywgaXQgc2hvdWxkIGJlIGVhc2llciB0byB0cmFjayBkb3duLgorCitBbHNvIHNlZSBMaWIvdGVzdF9jcmFzaGVycy5weSB3aGljaCBleGVyY2lzZXMgdGhlIGNyYXNoZXJzIGluIHRoaXMgZGlyZWN0b3J5LgorSW4gcGFydGljdWxhciwgbWFrZSBzdXJlIHRvIGFkZCBhbnkgbmV3IGluZmluaXRlIGxvb3AgY3Jhc2hlcnMgdG8gdGhlIGJsYWNrCitsaXN0IHNvIGl0IGRvZXNuJ3QgdHJ5IHRvIHJ1biB0aGVtLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzEucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjgyZjQ2NC4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMS5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIHRoZSBjYWxsIGluIGRpY3RvYmplY3QuYy4KLSIiIgotCi1jbGFzcyBBKG9iamVjdCk6Ci0gICAgcGFzcwotCi1jbGFzcyBCKG9iamVjdCk6Ci0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHByaW50KCdoaScpCi0gICAgICAgIGRlbCBELl9fbWlzc2luZ19fCi0KLWNsYXNzIEQoZGljdCk6Ci0gICAgY2xhc3MgX19taXNzaW5nX186Ci0gICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KLQotZCA9IEQoKQotYSA9IEEoKQotYS5jeWNsZSA9IGEKLWEub3RoZXIgPSBCKCkKLWRlbCBhCi0KLXByZXYgPSBOb25lCi13aGlsZSAxOgotICAgIGRbNV0KLSAgICBwcmV2ID0gKHByZXYsKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvYm9ycm93ZWRfcmVmXzIucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MDNlYi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC9jcmFzaGVycy9ib3Jyb3dlZF9yZWZfMi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSIiIgotX1B5VHlwZV9Mb29rdXAoKSByZXR1cm5zIGEgYm9ycm93ZWQgcmVmZXJlbmNlLgotVGhpcyBhdHRhY2tzIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKCkuCi0KLU5CLiBvbiBteSBtYWNoaW5lIHRoaXMgY3Jhc2hlcyBpbiAyLjUgZGVidWcgYnV0IG5vdCByZWxlYXNlLgotIiIiCi0KLWNsYXNzIEEob2JqZWN0KToKLSAgICBwYXNzCi0KLWNsYXNzIEIob2JqZWN0KToKLSAgICBkZWYgX19kZWxfXyhzZWxmKToKLSAgICAgICAgcHJpbnQoImhpIikKLSAgICAgICAgZGVsIEMuZAotCi1jbGFzcyBEKG9iamVjdCk6Ci0gICAgZGVmIF9fc2V0X18oc2VsZiwgb2JqLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuaGVsbG8gPSA0MgotCi1jbGFzcyBDKG9iamVjdCk6Ci0gICAgZCA9IEQoKQotCi0gICAgZGVmIGcoKToKLSAgICAgICAgcGFzcwotCi0KLWMgPSBDKCkKLWEgPSBBKCkKLWEuY3ljbGUgPSBhCi1hLm90aGVyID0gQigpCi0KLWxzdCA9IFtOb25lXSAqIDEwMDAwMDAKLWkgPSAwCi1kZWwgYQotd2hpbGUgMToKLSAgICBjLmQgPSA0MiAgICAgICAgICMgc2VnZmF1bHRzIGluIFB5TWV0aG9kX05ldyhfX2Z1bmNfXz1ELl9fc2V0X18sIF9fc2VsZl9fPWQpCi0gICAgbHN0W2ldID0gYy5nICAgICAjIGNvbnN1bWUgdGhlIGZyZWUgbGlzdCBvZiBpbnN0YW5jZW1ldGhvZCBvYmplY3RzCi0gICAgaSArPSAxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9jb21waWxlcl9yZWN1cnNpb24ucHkKaW5kZXggNDk1NGJkZC4uMzFmMjhhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvY3Jhc2hlcnMvY29tcGlsZXJfcmVjdXJzaW9uLnB5CisrKyBiL0xpYi90ZXN0L2NyYXNoZXJzL2NvbXBpbGVyX3JlY3Vyc2lvbi5weQpAQCAtMSw1ICsxLDEzIEBACiAiIiIKLVRoZSBjb21waWxlciAoPj0gMi41KSByZWN1cnNlcyBoYXBwaWx5LgorVGhlIGNvbXBpbGVyICg+PSAyLjUpIHJlY3Vyc2VzIGhhcHBpbHkgdW50aWwgaXQgYmxvd3MgdGhlIHN0YWNrLgorCitSZWNvcmRlZCBvbiB0aGUgdHJhY2tlciBhcyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTEzODMKICIiIgogCi1jb21waWxlKCcoKScqOSoqNSwgJz8nLCAnZXhlYycpCisjIFRoZSB2YXJpYW50IGJlbG93IGJsb3dzIHVwIGluIGNvbXBpbGVyX2NhbGwsIGJ1dCB0aGVyZSBhcmUgYXNzb3J0ZWQKKyMgb3RoZXIgdmFyaWF0aW9ucyB0aGF0IGJsb3cgdXAgaW4gb3RoZXIgZnVuY3Rpb25zCisjIGUuZy4gJzEqJyoxMCoqNSsnMScgd2lsbCBkaWUgaW4gY29tcGlsZXJfdmlzaXRfZXhwcgorCisjIFRoZSBleGFjdCBsaW1pdCB0byBkZXN0cm95IHRoZSBzdGFjayB3aWxsIHZhcnkgYnkgcGxhdGZvcm0KKyMgYnV0IDEwTSBzaG91bGQgZG8gdGhlIHRyaWNrIGV2ZW4gd2l0aCBodWdlIHN0YWNrIGFsbG9jYXRpb25zCitjb21waWxlKCcoKScqMTAqKjcsICc/JywgJ2V4ZWMnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvY3Jhc2hlcnMvbG9vc2luZ19tcm9fcmVmLnB5IGIvTGliL3Rlc3QvY3Jhc2hlcnMvbG9vc2luZ19tcm9fcmVmLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2JjZDMyLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NyYXNoZXJzL2xvb3NpbmdfbXJvX3JlZi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLSIiIgotVGhlcmUgaXMgYSB3YXkgdG8gcHV0IGtleXMgb2YgYW55IHR5cGUgaW4gYSB0eXBlJ3MgZGljdGlvbmFyeS4KLUkgdGhpbmsgdGhpcyBhbGxvd3MgdmFyaW91cyBraW5kcyBvZiBjcmFzaGVzLCBidXQgc28gZmFyIEkgaGF2ZSBvbmx5Ci1mb3VuZCBhIGNvbnZvbHV0ZWQgYXR0YWNrIG9mIF9QeVR5cGVfTG9va3VwKCksIHdoaWNoIHVzZXMgdGhlIG1ybyBvZiB0aGUKLXR5cGUgd2l0aG91dCBob2xkaW5nIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBpdC4gIFByb2JhYmx5IHdvcmtzIHdpdGgKLXN1cGVyLl9fZ2V0YXR0cmlidXRlX18oKSB0b28sIHdoaWNoIHVzZXMgdGhlIHNhbWUga2luZCBvZiBjb2RlLgotIiIiCi0KLWNsYXNzIE15S2V5KG9iamVjdCk6Ci0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gaGFzaCgnbXlrZXknKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgICMgdGhlIGZvbGxvd2luZyBsaW5lIGRlY3JlZnMgdGhlIHByZXZpb3VzIFguX19tcm9fXwotICAgICAgICBYLl9fYmFzZXNfXyA9IChCYXNlMiwpCi0gICAgICAgICMgdHJhc2ggYWxsIHR1cGxlcyBvZiBsZW5ndGggMywgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGl0ZW1zIG9mCi0gICAgICAgICMgdGhlIHByZXZpb3VzIFguX19tcm9fXyBhcmUgcmVhbGx5IGdhcmJhZ2UKLSAgICAgICAgeiA9IFtdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgotICAgICAgICAgICAgei5hcHBlbmQoKGksIE5vbmUsIE5vbmUpKQotICAgICAgICByZXR1cm4gMAotCi0KLWNsYXNzIEJhc2Uob2JqZWN0KToKLSAgICBteWtleSA9ICdmcm9tIEJhc2UnCi0KLWNsYXNzIEJhc2UyKG9iamVjdCk6Ci0gICAgbXlrZXkgPSAnZnJvbSBCYXNlMicKLQotIyB5b3UgY2FuJ3QgYWRkIGEgbm9uLXN0cmluZyBrZXkgdG8gWC5fX2RpY3RfXywgYnV0IGl0IGNhbiBiZQotIyB0aGVyZSBmcm9tIHRoZSBiZWdpbm5pbmcgOi0pCi1YID0gdHlwZSgnWCcsIChCYXNlLCksIHtNeUtleSgpOiA1fSkKLQotcHJpbnQoWC5teWtleSkKLSMgSSBnZXQgYSBzZWdmYXVsdCwgb3IgYSBzbGlnaHRseSB3cm9uZyBhc3NlcnRpb24gZXJyb3IgaW4gYSBkZWJ1ZyBidWlsZC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2NyYXNoZXJzL25hc3R5X2VxX3ZzX2RpY3QucHkgYi9MaWIvdGVzdC9jcmFzaGVycy9uYXN0eV9lcV92c19kaWN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWY3Y2FmLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2NyYXNoZXJzL25hc3R5X2VxX3ZzX2RpY3QucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0jIGZyb20gaHR0cDovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLWRldi8yMDAxLUp1bmUvMDE1MjM5Lmh0bWwKLQotIyBpZiB5b3Uga2VlcCBjaGFuZ2luZyBhIGRpY3Rpb25hcnkgd2hpbGUgbG9va2luZyB1cCBhIGtleSwgeW91IGNhbgotIyBwcm92b2tlIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBpbiBDCi0KLSMgQXQgdGhlIHRpbWUgbmVpdGhlciBUaW0gbm9yIE1pY2hhZWwgY291bGQgYmUgYm90aGVyZWQgdG8gdGhpbmsgb2YgYQotIyB3YXkgdG8gZml4IGl0LgotCi1jbGFzcyBZdWNrOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5pID0gMAotCi0gICAgZGVmIG1ha2VfZGFuZ2Vyb3VzKHNlbGYpOgotICAgICAgICBzZWxmLmkgPSAxCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgICMgZGlyZWN0IHRvIHNsb3QgNCBpbiB0YWJsZSBvZiBzaXplIDg7IHNsb3QgMTIgd2hlbiBzaXplIDE2Ci0gICAgICAgIHJldHVybiA0ICsgOAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIHNlbGYuaSA9PSAwOgotICAgICAgICAgICAgIyBsZWF2ZSBkaWN0IGFsb25lCi0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgc2VsZi5pID09IDE6Ci0gICAgICAgICAgICAjIGZpZGRsZSB0byAxNiBzbG90cwotICAgICAgICAgICAgc2VsZi5fX2ZpbGxfZGljdCg2KQotICAgICAgICAgICAgc2VsZi5pID0gMgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBmaWRkbGUgdG8gOCBzbG90cwotICAgICAgICAgICAgc2VsZi5fX2ZpbGxfZGljdCg0KQotICAgICAgICAgICAgc2VsZi5pID0gMQotCi0gICAgICAgIHJldHVybiAxCi0KLSAgICBkZWYgX19maWxsX2RpY3Qoc2VsZiwgbik6Ci0gICAgICAgIHNlbGYuaSA9IDAKLSAgICAgICAgZGljdC5jbGVhcigpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgotICAgICAgICAgICAgZGljdFtpXSA9IGkKLSAgICAgICAgZGljdFtzZWxmXSA9ICJPSyEiCi0KLXkgPSBZdWNrKCkKLWRpY3QgPSB7eTogIk9LISJ9Ci0KLXogPSBZdWNrKCkKLXkubWFrZV9kYW5nZXJvdXMoKQotcHJpbnQoZGljdFt6XSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RhdGV0aW1ldGVzdGVyLnB5IGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKaW5kZXggYmIxODYzMC4uOTMxZWY2ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKKysrIGIvTGliL3Rlc3QvZGF0ZXRpbWV0ZXN0ZXIucHkKQEAgLTk3OSw3ICs5NzksNyBAQAogICAgICAgICAjIGV4ZW1wdCBzdWNoIHBsYXRmb3JtcyAocHJvdmlkZWQgdGhleSByZXR1cm4gcmVhc29uYWJsZQogICAgICAgICAjIHJlc3VsdHMhKS4KICAgICAgICAgZm9yIGluc2FuZSBpbiAtMWUyMDAsIDFlMjAwOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zYW5lKQogCiAgICAgZGVmIHRlc3RfdG9kYXkoc2VsZik6CkBAIC0xMjkxLDEyICsxMjkxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRoZWNsYXNzLm1pbikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudGhlY2xhc3MubWF4KQogCi0gICAgZGVmIHRlc3Rfc3RyZnRpbWVfb3V0X29mX3JhbmdlKHNlbGYpOgotICAgICAgICAjIEZvciBuYXN0eSB0ZWNobmljYWwgcmVhc29ucywgd2UgY2FuJ3QgaGFuZGxlIHllYXJzIGJlZm9yZSAxMDAwLgotICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzKDEwMDAsIDEsIDEpLnN0cmZ0aW1lKCIlWSIpLCAiMTAwMCIpCi0gICAgICAgIGZvciB5IGluIDEsIDQ5LCA1MSwgOTksIDEwMCwgOTk5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY2xzKHksIDEsIDEpLnN0cmZ0aW1lLCAiJVkiKQorICAgIGRlZiB0ZXN0X3N0cmZ0aW1lX3kyayhzZWxmKToKKyAgICAgICAgZm9yIHkgaW4gKDEsIDQ5LCA3MCwgOTksIDEwMCwgOTk5LCAxMDAwLCAxOTcwKToKKyAgICAgICAgICAgIGQgPSBzZWxmLnRoZWNsYXNzKHksIDEsIDEpCisgICAgICAgICAgICAjIElzc3VlIDEzMzA1OiAgRm9yIHllYXJzIDwgMTAwMCwgdGhlIHZhbHVlIGlzIG5vdCBhbHdheXMKKyAgICAgICAgICAgICMgcGFkZGVkIHRvIDQgZGlnaXRzIGFjcm9zcyBwbGF0Zm9ybXMuICBUaGUgQyBzdGFuZGFyZAorICAgICAgICAgICAgIyBhc3N1bWVzIHllYXIgPj0gMTkwMCwgc28gaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgbnVtYmVyCisgICAgICAgICAgICAjIG9mIGRpZ2l0cy4KKyAgICAgICAgICAgIGlmIGQuc3RyZnRpbWUoIiVZIikgIT0gJyUwNGQnICUgeToKKyAgICAgICAgICAgICAgICAjIFllYXIgNDIgcmV0dXJucyAnNDInLCBub3QgcGFkZGVkCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLnN0cmZ0aW1lKCIlWSIpLCAnJWQnICUgeSkKKyAgICAgICAgICAgICAgICAjICcwMDQyJyBpcyBvYnRhaW5lZCBhbnl3YXkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuc3RyZnRpbWUoIiU0WSIpLCAnJTA0ZCcgJSB5KQogCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgY2xzID0gc2VsZi50aGVjbGFzcwpAQCAtMTczMSwxMyArMTczNyw3NCBAQAogICAgICAgICBnb3QgPSBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXAodHMpCiAgICAgICAgIHNlbGYudmVyaWZ5X2ZpZWxkX2VxdWFsaXR5KGV4cGVjdGVkLCBnb3QpCiAKKyAgICAjIFJ1biB3aXRoIFVTLXN0eWxlIERTVCBydWxlczogRFNUIGJlZ2lucyAyIGEubS4gb24gc2Vjb25kIFN1bmRheSBpbgorICAgICMgTWFyY2ggKE0zLjIuMCkgYW5kIGVuZHMgMiBhLm0uIG9uIGZpcnN0IFN1bmRheSBpbiBOb3ZlbWJlciAoTTExLjEuMCkuCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfdGltZXN0YW1wX25haXZlKHNlbGYpOgorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksIDE4MDAwLjApCisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDE5NzAsIDEsIDEsIDEsIDIsIDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC50aW1lc3RhbXAoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAxODAwMC4wICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQorICAgICAgICAjIE1pc3NpbmcgaG91ciBtYXkgcHJvZHVjZSBwbGF0Zm9ybS1kZXBlbmRlbnQgcmVzdWx0CisgICAgICAgIHQgPSBzZWxmLnRoZWNsYXNzKDIwMTIsIDMsIDExLCAyLCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAodC50aW1lc3RhbXAoKSksCisgICAgICAgICAgICAgICAgICAgICAgW3QgLSB0aW1lZGVsdGEoaG91cnM9MSksIHQgKyB0aW1lZGVsdGEoaG91cnM9MSldKQorICAgICAgICAjIEFtYmlndW91cyBob3VyIGRlZmF1bHRzIHRvIERTVAorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAxMSwgNCwgMSwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHQudGltZXN0YW1wKCkpLCB0KQorCisgICAgICAgICMgVGltZXN0YW1wIG1heSByYWlzZSBhbiBvdmVyZmxvdyBlcnJvciBvbiBzb21lIHBsYXRmb3JtcworICAgICAgICBmb3IgdCBpbiBbc2VsZi50aGVjbGFzcygxLDEsMSksIHNlbGYudGhlY2xhc3MoOTk5OSwxMiwxMildOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHMgPSB0LnRpbWVzdGFtcCgpCisgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50aGVjbGFzcy5mcm9tdGltZXN0YW1wKHMpLCB0KQorCisgICAgZGVmIHRlc3RfdGltZXN0YW1wX2F3YXJlKHNlbGYpOgorICAgICAgICB0ID0gc2VsZi50aGVjbGFzcygxOTcwLCAxLCAxLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudGltZXN0YW1wKCksIDAuMCkKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgMSwgMiwgMywgNCwgdHppbmZvPXRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDM2MDAgKyAyKjYwICsgMyArIDQqMWUtNikKKyAgICAgICAgdCA9IHNlbGYudGhlY2xhc3MoMTk3MCwgMSwgMSwgMSwgMiwgMywgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvPXRpbWV6b25lKHRpbWVkZWx0YShob3Vycz0tNSksICdFU1QnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRpbWVzdGFtcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIDE4MDAwICsgMzYwMCArIDIqNjAgKyAzICsgNCoxZS02KQogICAgIGRlZiB0ZXN0X21pY3Jvc2Vjb25kX3JvdW5kaW5nKHNlbGYpOgotICAgICAgICAjIFRlc3Qgd2hldGhlciBmcm9tdGltZXN0YW1wICJyb3VuZHMgdXAiIGZsb2F0cyB0aGF0IGFyZSBsZXNzCi0gICAgICAgICMgdGhhbiAxLzIgbWljcm9zZWNvbmQgc21hbGxlciB0aGFuIGFuIGludGVnZXIuCiAgICAgICAgIGZvciBmdHMgaW4gW3NlbGYudGhlY2xhc3MuZnJvbXRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgc2VsZi50aGVjbGFzcy51dGNmcm9tdGltZXN0YW1wXToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRzKDAuOTk5OTk5OSksIGZ0cygxKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnRzKDAuOTk5OTk5NDkpLm1pY3Jvc2Vjb25kLCA5OTk5OTkpCisgICAgICAgICAgICB6ZXJvID0gZnRzKDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHplcm8uc2Vjb25kLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6ZXJvLm1pY3Jvc2Vjb25kLCAwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG1pbnVzX29uZSA9IGZ0cygtMWUtNikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICMgbG9jYWx0aW1lKC0xKSBhbmQgZ210aW1lKC0xKSBpcyBub3Qgc3VwcG9ydGVkIG9uIFdpbmRvd3MKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWludXNfb25lLnNlY29uZCwgNTkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW51c19vbmUubWljcm9zZWNvbmQsIDk5OTk5OSkKKworICAgICAgICAgICAgICAgIHQgPSBmdHMoLTFlLTgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCBtaW51c19vbmUpCisgICAgICAgICAgICAgICAgdCA9IGZ0cygtOWUtNykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIG1pbnVzX29uZSkKKyAgICAgICAgICAgICAgICB0ID0gZnRzKC0xZS03KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgbWludXNfb25lKQorCisgICAgICAgICAgICB0ID0gZnRzKDFlLTcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHplcm8pCisgICAgICAgICAgICB0ID0gZnRzKDllLTcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHplcm8pCisgICAgICAgICAgICB0ID0gZnRzKDAuOTk5OTk5NDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuc2Vjb25kLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm1pY3Jvc2Vjb25kLCA5OTk5OTkpCisgICAgICAgICAgICB0ID0gZnRzKDAuOTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5zZWNvbmQsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubWljcm9zZWNvbmQsIDk5OTk5OSkKIAogICAgIGRlZiB0ZXN0X2luc2FuZV9mcm9tdGltZXN0YW1wKHNlbGYpOgogICAgICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCBzb21lIHBsYXRmb3JtIG1hcHMgdGltZV90IHRvIGRvdWJsZSwKQEAgLTE3NDUsNyArMTgxMiw3IEBACiAgICAgICAgICMgZXhlbXB0IHN1Y2ggcGxhdGZvcm1zIChwcm92aWRlZCB0aGV5IHJldHVybiByZWFzb25hYmxlCiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgaW5zYW5lIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnRoZWNsYXNzLmZyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNhbmUpCiAKICAgICBkZWYgdGVzdF9pbnNhbmVfdXRjZnJvbXRpbWVzdGFtcChzZWxmKToKQEAgLTE3NTQsNyArMTgyMSw3IEBACiAgICAgICAgICMgZXhlbXB0IHN1Y2ggcGxhdGZvcm1zIChwcm92aWRlZCB0aGV5IHJldHVybiByZWFzb25hYmxlCiAgICAgICAgICMgcmVzdWx0cyEpLgogICAgICAgICBmb3IgaW5zYW5lIGluIC0xZTIwMCwgMWUyMDA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXAsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnRoZWNsYXNzLnV0Y2Zyb210aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNhbmUpCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbmRvd3MgZG9lc24ndCBhY2NlcHQgbmVnYXRpdmUgdGltZXN0YW1wcyIpCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfZmxvYXRfZnJvbXRpbWVzdGFtcChzZWxmKToKQEAgLTE5MDcsNyArMTk3NCw3IEBACiAgICAgICAgICMgc2ltcGx5IGNhbid0IGJlIGFwcGxpZWQgdG8gYSBuYWl2ZSBvYmplY3QuCiAgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcy5ub3coKQogICAgICAgICBmID0gRml4ZWRPZmZzZXQoNDQsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUpICMgbm90IGVub3VnaCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGR0LmFzdGltZXpvbmUpICMgbmFpdmUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkdC5hc3RpbWV6b25lLCBmLCBmKSAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkdC5hc3RpbWV6b25lLCBkdCkgIyBhcmcgd3JvbmcgdHlwZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkdC5hc3RpbWV6b25lLCBmKSAjIG5haXZlCkBAIC0yNDc5LDcgKzI1NDYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDIsIHQzKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDQgPT0gdDUpICMgbWl4ZWQgdHotYXdhcmUgJiBuYWl2ZQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHQ0LCB0NSkgIyBtaXhlZCB0ei1hd2FyZSAmIG5haXZlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0NCA8IHQ1KSAjIG1peGVkIHR6LWF3YXJlICYgbmFpdmUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHQ1IDwgdDQpICMgbWl4ZWQgdHotYXdhcmUgJiBuYWl2ZQogCkBAIC0yNjMxLDcgKzI2OTgsNyBAQAogICAgICAgICB0MiA9IHQyLnJlcGxhY2UodHppbmZvPUZpeGVkT2Zmc2V0KE5vbmUsICIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCiAgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm89Rml4ZWRPZmZzZXQoMCwgIiIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDEgPT0gdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDEsIHQyKQogCiAgICAgICAgICMgSW4gdGltZSB3LyBpZGVudGljYWwgdHppbmZvIG9iamVjdHMsIHV0Y29mZnNldCBpcyBpZ25vcmVkLgogICAgICAgICBjbGFzcyBWYXJpZXModHppbmZvKToKQEAgLTI3MzYsMTYgKzI4MDMsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kPTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0MSA+IHQyKQogCi0gICAgICAgICMgTWFrZSB0MiBuYWl2ZSBhbmQgaXQgc2hvdWxkIGZhaWwuCisgICAgICAgICMgTWFrZSB0MiBuYWl2ZSBhbmQgaXQgc2hvdWxkIGRpZmZlci4KICAgICAgICAgdDIgPSBzZWxmLnRoZWNsYXNzLm1pbgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogdDEgPT0gdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodDEsIHQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQyLCB0MikKIAogICAgICAgICAjIEl0J3MgYWxzbyBuYWl2ZSBpZiBpdCBoYXMgdHppbmZvIGJ1dCB0emluZm8udXRjb2Zmc2V0KCkgaXMgTm9uZS4KICAgICAgICAgY2xhc3MgTmFpdmUodHppbmZvKToKICAgICAgICAgICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOiByZXR1cm4gTm9uZQogICAgICAgICB0MiA9IHNlbGYudGhlY2xhc3MoNSwgNiwgNywgdHppbmZvPU5haXZlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDIsIHQyKQogCiAgICAgICAgICMgT1RPSCwgaXQncyBPSyB0byBjb21wYXJlIHR3byBvZiB0aGVzZSBtaXhpbmcgdGhlIHR3byB3YXlzIG9mIGJlaW5nCkBAIC0zMTg4LDggKzMyNTUsNiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoZHQudHppbmZvIGlzIGY0NG0pCiAgICAgICAgICMgUmVwbGFjaW5nIHdpdGggZGVnZW5lcmF0ZSB0emluZm8gcmFpc2VzIGFuIGV4Y2VwdGlvbi4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHQuYXN0aW1lem9uZSwgZm5vbmUpCi0gICAgICAgICMgRGl0dG8gd2l0aCBOb25lIHR6LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGR0LmFzdGltZXpvbmUsIE5vbmUpCiAgICAgICAgICMgUmVwbGFjaW5nIHdpdGggc2FtZSB0emluZm8gbWFrZXMgbm8gY2hhbmdlLgogICAgICAgICB4ID0gZHQuYXN0aW1lem9uZShkdC50emluZm8pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LnR6aW5mbyBpcyBmNDRtKQpAQCAtMzIwOSw2ICszMjc0LDI1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnb3QudHppbmZvIGlzIGV4cGVjdGVkLnR6aW5mbykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3QsIGV4cGVjdGVkKQogCisgICAgQHN1cHBvcnQucnVuX3dpdGhfdHooJ1VUQycpCisgICAgZGVmIHRlc3RfYXN0aW1lem9uZV9kZWZhdWx0X3V0YyhzZWxmKToKKyAgICAgICAgZHQgPSBzZWxmLnRoZWNsYXNzLm5vdyh0aW1lem9uZS51dGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuYXN0aW1lem9uZShOb25lKSwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQuYXN0aW1lem9uZSgpLCBkdCkKKworICAgICMgTm90ZSB0aGF0IG9mZnNldCBpbiBUWiB2YXJpYWJsZSBoYXMgdGhlIG9wcG9zaXRlIHNpZ24gdG8gdGhhdAorICAgICMgcHJvZHVjZWQgYnkgJXogZGlyZWN0aXZlLgorICAgIEBzdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X2FzdGltZXpvbmVfZGVmYXVsdF9lYXN0ZXJuKHNlbGYpOgorICAgICAgICBkdCA9IHNlbGYudGhlY2xhc3MoMjAxMiwgMTEsIDQsIDYsIDMwLCB0emluZm89dGltZXpvbmUudXRjKQorICAgICAgICBsb2NhbCA9IGR0LmFzdGltZXpvbmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCBsb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbC5zdHJmdGltZSgiJXogJVoiKSwgIi0wNTAwIEVTVCIpCisgICAgICAgIGR0ID0gc2VsZi50aGVjbGFzcygyMDEyLCAxMSwgNCwgNSwgMzAsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgICAgIGxvY2FsID0gZHQuYXN0aW1lem9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIGxvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsLnN0cmZ0aW1lKCIleiAlWiIpLCAiLTA0MDAgRURUIikKKwogICAgIGRlZiB0ZXN0X2F3YXJlX3N1YnRyYWN0KHNlbGYpOgogICAgICAgICBjbHMgPSBzZWxmLnRoZWNsYXNzCiAKQEAgLTMyNjIsNyArMzM0Niw3IEBACiAgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm89Rml4ZWRPZmZzZXQoTm9uZSwgIiIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKICAgICAgICAgdDIgPSB0Mi5yZXBsYWNlKHR6aW5mbz1GaXhlZE9mZnNldCgwLCAiIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiB0MSA9PSB0MikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh0MSwgdDIpCiAKICAgICAgICAgIyBJbiBkYXRldGltZSB3LyBpZGVudGljYWwgdHppbmZvIG9iamVjdHMsIHV0Y29mZnNldCBpcyBpZ25vcmVkLgogICAgICAgICBjbGFzcyBWYXJpZXModHppbmZvKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RlY2ltYWx0ZXN0ZGF0YS9leHRyYS5kZWNUZXN0IGIvTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhL2V4dHJhLmRlY1Rlc3QKaW5kZXggZmU4Yjc3YS4uYjYzMGQ4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhL2V4dHJhLmRlY1Rlc3QKKysrIGIvTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhL2V4dHJhLmRlY1Rlc3QKQEAgLTIyMiwxMiArMjIyLDI1IEBACiBleHRyMTcwMSBwb3dlciAxMDAuMCAtNTU3LjcxZS03NDI4ODg4ODggLT4gMS4wMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCiBleHRyMTcwMiBwb3dlciAxMCAxZS0xMDAgLT4gMS4wMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCiAKKy0tIEFub3RoZXIgb25lIChzZWUgaXNzdWUgIzEyMDgwKS4gIFRoYW5rcyBhZ2FpbiB0byBTdGVmYW4gS3JhaC4KK2V4dHIxNzAzIHBvd2VyIDQgLTEuMmUtOTk5OTk5OTk5IC0+IDEuMDAwMDAwMDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAorCiAtLSBBIGNvdXBsZSBvZiBpbnRlcmVzdGluZyBleGFjdCBjYXNlcyBmb3IgcG93ZXIuICBOb3RlIHRoYXQgdGhlIHNwZWNpZmljYXRpb24KIC0tIHJlcXVpcmVzIHRoZXNlIHRvIGJlIHJlcG9ydGVkIGFzIEluZXhhY3QuCiBleHRyMTcxMCBwb3dlciAxZTM3NSA1NmUtMyAtPiAxLjAwMDAwMDAwMDAwMDAwMEUrMjEgSW5leGFjdCBSb3VuZGVkCiBleHRyMTcxMSBwb3dlciAxMDAwMCAwLjc1IC0+IDEwMDAuMDAwMDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAogZXh0cjE3MTIgcG93ZXIgMWUtMjQgMC44NzUgLT4gMS4wMDAwMDAwMDAwMDAwMDBFLTIxIEluZXhhY3QgUm91bmRlZAogCistLSBTb21lIG1vcmUgZXhhY3QgY2FzZXMsIGV4ZXJjaXNpbmcgcG93ZXIgd2l0aCBuZWdhdGl2ZSBzZWNvbmQgYXJndW1lbnQuCitleHRyMTcyMCBwb3dlciA0MDAgLTAuNSAtPiAwLjA1MDAwMDAwMDAwMDAwMDAwIEluZXhhY3QgUm91bmRlZAorZXh0cjE3MjEgcG93ZXIgNDA5NiAtMC43NSAtPiAwLjAwMTk1MzEyNTAwMDAwMDAwMCBJbmV4YWN0IFJvdW5kZWQKK2V4dHIxNzIyIHBvd2VyIDYyNWU0IC0wLjI1IC0+IDAuMDIwMDAwMDAwMDAwMDAwMDAgSW5leGFjdCBSb3VuZGVkCisKKy0tIE5vbmV4YWN0IGNhc2VzLCB0byBleGVyY2lzZSBzb21lIG9mIHRoZSBlYXJseSBleGl0IGNvbmRpdGlvbnMgZnJvbQorLS0gX3Bvd2VyX2V4YWN0LgorZXh0cjE3MzAgcG93ZXIgMjA0OCAtMC43NSAtPiAwLjAwMzI4NDc1MTYyMjA4NDgyMiBJbmV4YWN0IFJvdW5kZWQKKworCiAtLSBUZXN0cyBmb3IgdGhlIGlzXyogYm9vbGVhbiBvcGVyYXRpb25zCiBwcmVjaXNpb246IDkKIG1heEV4cG9uZW50OiA5OTkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RoNTEyLnBlbSBiL0xpYi90ZXN0L2RoNTEyLnBlbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDBkMTZjCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvZGg1MTIucGVtCkBAIC0wLDAgKzEsOSBAQAorLS0tLS1CRUdJTiBESCBQQVJBTUVURVJTLS0tLS0KK01FWUNRUUQxS3Y4ODRiRXBRQmdSalh5RXB3cHkxb2JFQXhuSUJ5bDZ5cFVNMlphZnE5QUtVSnNDUnRNSVBXYWsKK1hVR2ZuSHk5aVVzaUdTYTZxNkpldzFYcEtnVmZBZ0VDCistLS0tLUVORCBESCBQQVJBTUVURVJTLS0tLS0KKworVGhlc2UgYXJlIHRoZSA1MTIgYml0IERIIHBhcmFtZXRlcnMgZnJvbSAiQXNzaWduZWQgTnVtYmVyIGZvciBTS0lQIFByb3RvY29scyIKKyhodHRwOi8vd3d3LnNraXAtdnBuLm9yZy9zcGVjL251bWJlcnMuaHRtbCkuCitTZWUgdGhlcmUgZm9yIGhvdyB0aGV5IHdlcmUgZ2VuZXJhdGVkLgorTm90ZSB0aGF0IGcgaXMgbm90IGEgZ2VuZXJhdG9yLCBidXQgdGhpcyBpcyBub3QgYSBwcm9ibGVtIHNpbmNlIHAgaXMgYSBzYWZlIHByaW1lLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZXhjZXB0aW9uX2hpZXJhcmNoeS50eHQgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAppbmRleCA1MDM3YjMzLi4xYzFmNjlmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAorKysgYi9MaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dApAQCAtMTEsMTEgKzExLDYgQEAKICAgICAgICstLSBBc3NlcnRpb25FcnJvcgogICAgICAgKy0tIEF0dHJpYnV0ZUVycm9yCiAgICAgICArLS0gQnVmZmVyRXJyb3IKLSAgICAgICstLSBFbnZpcm9ubWVudEVycm9yCi0gICAgICB8ICAgICstLSBJT0Vycm9yCi0gICAgICB8ICAgICstLSBPU0Vycm9yCi0gICAgICB8ICAgICAgICAgKy0tIFdpbmRvd3NFcnJvciAoV2luZG93cykKLSAgICAgIHwgICAgICAgICArLS0gVk1TRXJyb3IgKFZNUykKICAgICAgICstLSBFT0ZFcnJvcgogICAgICAgKy0tIEltcG9ydEVycm9yCiAgICAgICArLS0gTG9va3VwRXJyb3IKQEAgLTI0LDYgKzE5LDIyIEBACiAgICAgICArLS0gTWVtb3J5RXJyb3IKICAgICAgICstLSBOYW1lRXJyb3IKICAgICAgIHwgICAgKy0tIFVuYm91bmRMb2NhbEVycm9yCisgICAgICArLS0gT1NFcnJvcgorICAgICAgfCAgICArLS0gQmxvY2tpbmdJT0Vycm9yCisgICAgICB8ICAgICstLSBDaGlsZFByb2Nlc3NFcnJvcgorICAgICAgfCAgICArLS0gQ29ubmVjdGlvbkVycm9yCisgICAgICB8ICAgIHwgICAgKy0tIEJyb2tlblBpcGVFcnJvcgorICAgICAgfCAgICB8ICAgICstLSBDb25uZWN0aW9uQWJvcnRlZEVycm9yCisgICAgICB8ICAgIHwgICAgKy0tIENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IKKyAgICAgIHwgICAgfCAgICArLS0gQ29ubmVjdGlvblJlc2V0RXJyb3IKKyAgICAgIHwgICAgKy0tIEZpbGVFeGlzdHNFcnJvcgorICAgICAgfCAgICArLS0gRmlsZU5vdEZvdW5kRXJyb3IKKyAgICAgIHwgICAgKy0tIEludGVycnVwdGVkRXJyb3IKKyAgICAgIHwgICAgKy0tIElzQURpcmVjdG9yeUVycm9yCisgICAgICB8ICAgICstLSBOb3RBRGlyZWN0b3J5RXJyb3IKKyAgICAgIHwgICAgKy0tIFBlcm1pc3Npb25FcnJvcgorICAgICAgfCAgICArLS0gUHJvY2Vzc0xvb2t1cEVycm9yCisgICAgICB8ICAgICstLSBUaW1lb3V0RXJyb3IKICAgICAgICstLSBSZWZlcmVuY2VFcnJvcgogICAgICAgKy0tIFJ1bnRpbWVFcnJvcgogICAgICAgfCAgICArLS0gTm90SW1wbGVtZW50ZWRFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvZm9ya193YWl0LnB5IGIvTGliL3Rlc3QvZm9ya193YWl0LnB5CmluZGV4IDFjYWFiMWMuLjg4NTI3ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQorKysgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKQEAgLTQzLDYgKzQzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGlkLCBjcGlkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgImNhdXNlID0gJWQsIGV4aXQgPSAlZCIgJSAoc3RhdHVzJjB4ZmYsIHN0YXR1cz4+OCkpCiAKKyAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgogICAgICAgICBmb3IgaSBpbiByYW5nZShOVU1fVEhSRUFEUyk6CiAgICAgICAgICAgICBfdGhyZWFkLnN0YXJ0X25ldyhzZWxmLmYsIChpLCkpCkBAIC02OSw3ICs3MCw4IEBACiAgICAgICAgICAgICBvcy5fZXhpdChuKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBQYXJlbnQKLSAgICAgICAgICAgIHNlbGYud2FpdF9pbXBsKGNwaWQpCi0gICAgICAgICAgICAjIFRlbGwgdGhyZWFkcyB0byBkaWUKLSAgICAgICAgICAgIHNlbGYuc3RvcCA9IDEKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoMipTSE9SVFNMRUVQKSAjIFdhaXQgZm9yIHRocmVhZHMgdG8gZGllCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi53YWl0X2ltcGwoY3BpZCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgIyBUZWxsIHRocmVhZHMgdG8gZGllCisgICAgICAgICAgICAgICAgc2VsZi5zdG9wID0gMQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUxLnB5IGIvTGliL3Rlc3QvZnV0dXJlX3Rlc3QxLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2Z1dHVyZTEucHkKcmVuYW1lIHRvIExpYi90ZXN0L2Z1dHVyZV90ZXN0MS5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUyLnB5IGIvTGliL3Rlc3QvZnV0dXJlX3Rlc3QyLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2Z1dHVyZTIucHkKcmVuYW1lIHRvIExpYi90ZXN0L2Z1dHVyZV90ZXN0Mi5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvanNvbl90ZXN0cy90ZXN0X2R1bXAucHkgYi9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3RfZHVtcC5weQppbmRleCAwODNjMTFmLi40YjMzODZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3RfZHVtcC5weQorKysgYi9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3RfZHVtcC5weQpAQCAtMSw2ICsxLDcgQEAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlc3QuanNvbl90ZXN0cyBpbXBvcnQgUHlUZXN0LCBDVGVzdAogCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgYmlnbWVtdGVzdCwgXzFHCiAKIGNsYXNzIFRlc3REdW1wOgogICAgIGRlZiB0ZXN0X2R1bXAoc2VsZik6CkBAIC0yMSw0ICsyMiwyMCBAQAogCiAKIGNsYXNzIFRlc3RQeUR1bXAoVGVzdER1bXAsIFB5VGVzdCk6IHBhc3MKLWNsYXNzIFRlc3RDRHVtcChUZXN0RHVtcCwgQ1Rlc3QpOiBwYXNzCisKK2NsYXNzIFRlc3RDRHVtcChUZXN0RHVtcCwgQ1Rlc3QpOgorCisgICAgIyBUaGUgc2l6ZSByZXF1aXJlbWVudCBoZXJlIGlzIGhvcGVmdWxseSBvdmVyLWVzdGltYXRlZCAoYWN0dWFsCisgICAgIyBtZW1vcnkgY29uc3VtcHRpb24gZGVwZW5kaW5nIG9uIGltcGxlbWVudGF0aW9uIGRldGFpbHMsIGFuZCBhbHNvCisgICAgIyBzeXN0ZW0gbWVtb3J5IG1hbmFnZW1lbnQsIHNpbmNlIHRoaXMgbWF5IGFsbG9jYXRlIGEgbG90IG9mCisgICAgIyBzbWFsbCBvYmplY3RzKS4KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzFHLCBtZW11c2U9MSkKKyAgICBkZWYgdGVzdF9sYXJnZV9saXN0KHNlbGYsIHNpemUpOgorICAgICAgICBOID0gaW50KDMwICogMTAyNCAqIDEwMjQgKiAoc2l6ZSAvIF8xRykpCisgICAgICAgIGwgPSBbMV0gKiBOCisgICAgICAgIGVuY29kZWQgPSBzZWxmLmR1bXBzKGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVuY29kZWQpLCBOICogMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzoxXSwgIlsiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbLTI6XSwgIjFdIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkWzE6LTJdLCAiMSwgIiAqIChOIC0gMSkpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9qc29uX3Rlc3RzL3Rlc3Rfc2NhbnN0cmluZy5weSBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9zY2Fuc3RyaW5nLnB5CmluZGV4IGY4MmNkZWUuLjQyNmM4ZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9zY2Fuc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L2pzb25fdGVzdHMvdGVzdF9zY2Fuc3RyaW5nLnB5CkBAIC05LDE0ICs5LDkgQEAKICAgICAgICAgICAgIHNjYW5zdHJpbmcoJyJ6XFx1ZDgzNFxcdWRkMjB4IicsIDEsIFRydWUpLAogICAgICAgICAgICAgKCd6XFUwMDAxZDEyMHgnLCAxNikpCiAKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgIHNjYW5zdHJpbmcoJyJ6XFUwMDAxZDEyMHgiJywgMSwgVHJ1ZSksCi0gICAgICAgICAgICAgICAgKCd6XFUwMDAxZDEyMHgnLCA2KSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgc2NhbnN0cmluZygnInpcVTAwMDFkMTIweCInLCAxLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAoJ3pcVTAwMDFkMTIweCcsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2NhbnN0cmluZygnInpcVTAwMDFkMTIweCInLCAxLCBUcnVlKSwKKyAgICAgICAgICAgICgnelxVMDAwMWQxMjB4JywgNSkpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHNjYW5zdHJpbmcoJyJcXHUwMDdiIicsIDEsIFRydWUpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qva2V5Y2VydC5wYXNzd2QucGVtIGIvTGliL3Rlc3Qva2V5Y2VydC5wYXNzd2QucGVtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MDU3NDgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0KQEAgLTAsMCArMSwzMyBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRAorREVLLUluZm86IERFUy1FREUzLUNCQywxQThEOUQyQTAyRUM2OThBCisKK2tKWWJmWjhMMHNmZTlPdHkzZ3cwYWxvTm5ZNUU4ZmVnUmZRTFpsTm94VGw2ak50MG5Jd0k4a0RKMzZDWmdSOWMKK3UzRkRKbS9LcXJmVW96OHZXK3FFbldoU0c3UVBYMndXR1BIZDRLOTRZei9GZ3JSelowRG9LN1h4WHE5Z090VkEKK0FWR1FobnozMnArNldoZkdzQ3I5QXJYRXdSWnJUay9GdnpFUGFVNWZIY29Ta3JOVkFHWDhJcFNWa1NEd0VEUXIKK0d2MTcrY2ZrOTlVVjFPQ3phNnlLSG9Ga1R0ckMrUFpVNzFMb21CYWJpdlMyT2M0QjloWXVTUjJoRjAxd1RIUCsKK1lsV05hZ1pPT1Z0Tno0b0tLOXg5ZU5RcG1mUVhRdlBQVGZ1c2V4S0liS2Zack12Sm94Y20xZ2ZjWjBIL3dLNlAKKzZ3bVhTRzM1cU1PT3p0Q1pOdHBlcmpzMXd6RUJYem55SzhRbUxjQUpCamtmYXJBQkpYOXZCRXpaVjBPVUtoeSsKK25vT1JGd0hUbGxwaGJteWRMaHU2ZWhMVVpNSFBoekFTNVVON3NydHBTTjgxZWVyRE15MFJNVUF3QTcvUG9mWDEKKzk0TWU4NVE4alAwUEM5RVRkc0pjUHFMekFQRVRFWXUwRUxld0tSY3JkeVdpK3RsTEZycEU1S1QvczVlY2JsOWwKKzdCNjFVNEtmZDFQSVhjL3NpSU5oVTNBM2JZSys4NDVZeVVBclVPbktmMWtFb3g3cDFScEQ3eUZxVlQwNGxSVG8KK2NpYk5LQVRCdXNYU3VCcnAyRzZHTnVoV0VPU2FmV0NLSlFBemdDWUlwNlpUVjJraGhNVUdwcGMvMkgzQ0Y2Y08KK3pYMEt0bFBWWkM3aExrQjZIVDhTeFlVd0YxenFXWTcrL1hQUGRjMzdNZUVaODdRM1V1WndxT1JMWStaMGhwZ3QKK0w1SlhCQ29rbFpoQ0FhTjJHcXdGTFh0R2lSU1JGR1k3eFhJaGJEVGxFNjVXdjFXR0dnRExNS0dFMWdPejN5QW8KKzJqakcxK3lBSEpVZEU2OVhURkhTcVNrdmFsb0ExVzAzTGRNWFo5VnVRSi95U1hDaWU2QUJBUT09CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQorLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCitNSUlDVkRDQ0FiMmdBd0lCQWdJSkFOZkhPQmtacjhKT01BMEdDU3FHU0liM0RRRUJCUVVBTUY4eEN6QUpCZ05WCitCQVlUQWxoWk1SY3dGUVlEVlFRSEV3NURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2hNYVVIbDBhRzl1CitJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERBZUZ3MHhNREV3CitNRGd5TXpBeE5UWmFGdzB5TURFd01EVXlNekF4TlRaYU1GOHhDekFKQmdOVkJBWVRBbGhaTVJjd0ZRWURWUVFICitFdzVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNoTWFVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrCitZWFJwYjI0eEVqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3CitnWWtDZ1lFQTIxdlQ1aXNxN0Y2OGFtWXV1TnBTRmxLRFByTVVDYTRZV1lxWlJ0Mk9aKy8zTkthWjJ4QWlTd3I3Cis2TXJRRjcwdDVuTGJTUHBxRTUrNVZyUzU4U1krZy9zWExpRmQ2QXBsSDF3Slp3aDc4RG9mYkZZWFVnZ2t0Rk10CitwVHlpWDhqdFA2NmJrY1BrREFEQTA4OVJJMVRRUjZDYStuN0hGYTdjMWZhYlZWNmkzemtDQXdFQUFhTVlNQll3CitGQVlEVlIwUkJBMHdDNElKYkc5allXeG9iM04wTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUhQY3RRQkVRNHdkCitCSjYrSmNwSXJhb3BMbjhCR2hiak5XajQwbW1ScVdCL05BV0Y2TTVuZTdLcEdBdTd0TGVHNGhiMXpMYWxkSzhHCitseHkyR1BTUkY2TEZTNDhkcEVqMkhiTXYybnZ2Nnh4YWxETUo5K0RpY1dnQUtUUTZiY1gyajNHVWtDUjBnL1QxCitDUmxOQkFBbHZoS3pPN0NscGY5bDBZS0JFZnJhSkJ5WAorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggYmUwNTRlYS4uNDJlMTE4YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC00MTgsNiArNDE4LDQ3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1LnJldmVyc2UsIDQyKQogCisgICAgZGVmIHRlc3RfY2xlYXIoc2VsZik6CisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbMiwgMywgNF0pCisgICAgICAgIHUuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIFtdKQorCisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbXSkKKyAgICAgICAgdS5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgW10pCisKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFtdKQorICAgICAgICB1LmFwcGVuZCgxKQorICAgICAgICB1LmNsZWFyKCkKKyAgICAgICAgdS5hcHBlbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LCBbMl0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1LmNsZWFyLCBOb25lKQorCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsxLCAyLCAzXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgWzEsIDIsIDNdKQorCisgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgW10pCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXQncyBpbmRlZWQgYSBjb3B5IGFuZCBub3QgYSByZWZlcmVuY2UKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFsnYScsICdiJ10pCisgICAgICAgIHYgPSB1LmNvcHkoKQorICAgICAgICB2LmFwcGVuZCgnaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgWydhJywgJ2InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB1ICsgWydpJ10pCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgaXQncyBhIHNoYWxsb3csIG5vdCBhIGRlZXAgY29weQorICAgICAgICB1ID0gc2VsZi50eXBlMnRlc3QoWzEsIDIsIFszLCA0XSwgNV0pCisgICAgICAgIHYgPSB1LmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModlszXSwgdVszXSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHUuY29weSwgTm9uZSkKKwogICAgIGRlZiB0ZXN0X3NvcnQoc2VsZik6CiAgICAgICAgIHUgPSBzZWxmLnR5cGUydGVzdChbMSwgMF0pCiAgICAgICAgIHUuc29ydCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5IGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQppbmRleCAwOTRjYzdhLi5iZmJmNDRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKQEAgLTQsNyArNCw3IEBACiAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1mcm9tIF90aHJlYWQgaW1wb3J0IHN0YXJ0X25ld190aHJlYWQsIGdldF9pZGVudCwgVElNRU9VVF9NQVgKK2Zyb20gX3RocmVhZCBpbXBvcnQgc3RhcnRfbmV3X3RocmVhZCwgVElNRU9VVF9NQVgKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCB1bml0dGVzdAogCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgIHNlbGYuZmluaXNoZWQgPSBbXQogICAgICAgICBzZWxmLl9jYW5fZXhpdCA9IG5vdCB3YWl0X2JlZm9yZV9leGl0CiAgICAgICAgIGRlZiB0YXNrKCk6Ci0gICAgICAgICAgICB0aWQgPSBnZXRfaWRlbnQoKQorICAgICAgICAgICAgdGlkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgICAgICBzZWxmLnN0YXJ0ZWQuYXBwZW5kKHRpZCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmKCkKQEAgLTI1NSw2ICsyNTUsMTggQEAKICAgICAgICAgbG9jay5yZWxlYXNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsb2NrLnJlbGVhc2UpCiAKKyAgICBkZWYgdGVzdF9yZWxlYXNlX3NhdmVfdW5hY3F1aXJlZChzZWxmKToKKyAgICAgICAgIyBDYW5ub3QgX3JlbGVhc2Vfc2F2ZSBhbiB1bmFjcXVpcmVkIGxvY2sKKyAgICAgICAgbG9jayA9IHNlbGYubG9ja3R5cGUoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGxvY2suX3JlbGVhc2Vfc2F2ZSkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgbG9jay5yZWxlYXNlKCkKKyAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgbG9jay5yZWxlYXNlKCkKKyAgICAgICAgbG9jay5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsb2NrLl9yZWxlYXNlX3NhdmUpCisKICAgICBkZWYgdGVzdF9kaWZmZXJlbnRfdGhyZWFkKHNlbGYpOgogICAgICAgICAjIENhbm5vdCByZWxlYXNlIGZyb20gYSBkaWZmZXJlbnQgdGhyZWFkCiAgICAgICAgIGxvY2sgPSBzZWxmLmxvY2t0eXBlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21haWxjYXAudHh0IGIvTGliL3Rlc3QvbWFpbGNhcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYxMTM1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L21haWxjYXAudHh0CkBAIC0wLDAgKzEsMzkgQEAKKyMgTWFpbGNhcCBmaWxlIGZvciB0ZXN0X21haWxjYXA7IGJhc2VkIG9uIFJGQyAxNTI0CisjIFJlZmVycmVkIHRvIGJ5IHRlc3RfbWFpbGNhcC5weQorCisjCisjIFRoaXMgaXMgYSBjb21tZW50LgorIworCithcHBsaWNhdGlvbi9mcmFtZTsgc2hvd2ZyYW1lICVzOyBwcmludD0iY2F0ICVzIHwgbHAiCithcHBsaWNhdGlvbi9wb3N0c2NyaXB0OyBwcy10by10ZXJtaW5hbCAlcztcCisgICAgbmVlZHN0ZXJtaW5hbAorYXBwbGljYXRpb24vcG9zdHNjcmlwdDsgcHMtdG8tdGVybWluYWwgJXM7IFwKKyAgICBjb21wb3NlPWlkcmF3ICVzCithcHBsaWNhdGlvbi94LWR2aTsgeGR2aSAlcworYXBwbGljYXRpb24veC1tb3ZpZTsgbW92aWVwbGF5ZXIgJXM7IGNvbXBvc2U9bW92aWVtYWtlciAlczsgXAorICAgICAgIGRlc2NyaXB0aW9uPSJNb3ZpZSI7IFwKKyAgICAgICB4MTEtYml0bWFwPSIvdXNyL2xpYi9abWFpbC9iaXRtYXBzL21vdmllLnhibSIKK2FwcGxpY2F0aW9uLyo7IGVjaG8gIlRoaXMgaXMgXCIldFwiIGJ1dCBcCisgICAgICAgaXMgNTAgXCUgR3JlZWsgdG8gbWUiIFw7IGNhdCAlczsgY29waW91c291dHB1dAorCithdWRpby9iYXNpYzsgc2hvd2F1ZGlvICVzOyBjb21wb3NlPWF1ZGlvY29tcG9zZSAlczsgZWRpdD1hdWRpb2NvbXBvc2UgJXM7XAorZGVzY3JpcHRpb249IkFuIGF1ZGlvIGZyYWdtZW50IgorYXVkaW8vKiA7IC91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyAldAorCitpbWFnZS9yZ2I7IGRpc3BsYXkgJXMKKyNpbWFnZS9naWY7IGRpc3BsYXkgJXMKK2ltYWdlL3gteHdpbmRvd2R1bXA7IGRpc3BsYXkgJXMKKworIyBUaGUgY29udGludWF0aW9uIGNoYXIgc2hvdWxkbid0IFwKKyMgbWFrZSBhIGRpZmZlcmVuY2UgaW4gYSBjb21tZW50LgorCittZXNzYWdlL2V4dGVybmFsLWJvZHk7IHNob3dleHRlcm5hbCAlcyAle2FjY2Vzcy10eXBlfSAle25hbWV9ICV7c2l0ZX0gXAorICAgICV7ZGlyZWN0b3J5fSAle21vZGV9ICV7c2VydmVyfTsgbmVlZHN0ZXJtaW5hbDsgY29tcG9zZXR5cGVkID0gZXh0Y29tcG9zZSAlczsgXAorICAgIGRlc2NyaXB0aW9uPSJBIHJlZmVyZW5jZSB0byBkYXRhIHN0b3JlZCBpbiBhbiBleHRlcm5hbCBsb2NhdGlvbiIKKwordGV4dC9yaWNodGV4dDsgc2hvd25vbmFzY2lpIGlzby04ODU5LTggLWUgcmljaHRleHQgLXAgJXM7IHRlc3Q9dGVzdCAiYGVjaG8gXAorICAgICV7Y2hhcnNldH0gfCB0ciAnW0EtWl0nICdbYS16XSdgIiAgPSBpc28tODg1OS04OyBjb3Bpb3Vzb3V0cHV0CisKK3ZpZGVvL21wZWc7IG1wZWdfcGxheSAlcwordmlkZW8vKjsgYW5pbWF0ZSAlcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbWF0aF90ZXN0Y2FzZXMudHh0IGIvTGliL3Rlc3QvbWF0aF90ZXN0Y2FzZXMudHh0CmluZGV4IDVlMjQzMzUuLjk1ODUxODggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L21hdGhfdGVzdGNhc2VzLnR4dAorKysgYi9MaWIvdGVzdC9tYXRoX3Rlc3RjYXNlcy50eHQKQEAgLTUxNywzICs1MTcsMTE3IEBACiAKIC0tIHdlYWtlciB2ZXJzaW9uIG9mIGV4cG0xMDMwMgogZXhwbTEwMzA3IGV4cG0xIDcwOS41IC0+IDEuMzU0OTg2MzE5MzE0NjMyOGUrMzA4CisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIGxvZzI6IGxvZyB0byBiYXNlIDIgLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLS0gc3BlY2lhbCB2YWx1ZXMKK2xvZzIwMDAwIGxvZzIgMC4wIC0+IC1pbmYgICAgICAgICAgICAgICBkaXZpZGUtYnktemVybworbG9nMjAwMDEgbG9nMiAtMC4wIC0+IC1pbmYgICAgICAgICAgICAgIGRpdmlkZS1ieS16ZXJvCitsb2cyMDAwMiBsb2cyIGluZiAtPiBpbmYKK2xvZzIwMDAzIGxvZzIgLWluZiAtPiBuYW4gICAgICAgICAgICAgICBpbnZhbGlkCitsb2cyMDAwNCBsb2cyIG5hbiAtPiBuYW4KKworLS0gZXhhY3QgdmFsdWUgYXQgMS4wCitsb2cyMDAxMCBsb2cyIDEuMCAtPiAwLjAKKworLS0gbmVnYXRpdmVzCitsb2cyMDAyMCBsb2cyIC01ZS0zMjQgLT4gbmFuICAgICAgICAgICAgaW52YWxpZAorbG9nMjAwMjEgbG9nMiAtMS4wIC0+IG5hbiAgICAgICAgICAgICAgIGludmFsaWQKK2xvZzIwMDIyIGxvZzIgLTEuN2UtMzA4IC0+IG5hbiAgICAgICAgICBpbnZhbGlkCisKKy0tIGV4YWN0IHZhbHVlcyBhdCBwb3dlcnMgb2YgMgorbG9nMjAxMDAgbG9nMiAyLjAgLT4gMS4wCitsb2cyMDEwMSBsb2cyIDQuMCAtPiAyLjAKK2xvZzIwMTAyIGxvZzIgOC4wIC0+IDMuMAorbG9nMjAxMDMgbG9nMiAxNi4wIC0+IDQuMAorbG9nMjAxMDQgbG9nMiAzMi4wIC0+IDUuMAorbG9nMjAxMDUgbG9nMiA2NC4wIC0+IDYuMAorbG9nMjAxMDYgbG9nMiAxMjguMCAtPiA3LjAKK2xvZzIwMTA3IGxvZzIgMjU2LjAgLT4gOC4wCitsb2cyMDEwOCBsb2cyIDUxMi4wIC0+IDkuMAorbG9nMjAxMDkgbG9nMiAxMDI0LjAgLT4gMTAuMAorbG9nMjAxMTAgbG9nMiAyMDQ4LjAgLT4gMTEuMAorCitsb2cyMDIwMCBsb2cyIDAuNSAtPiAtMS4wCitsb2cyMDIwMSBsb2cyIDAuMjUgLT4gLTIuMAorbG9nMjAyMDIgbG9nMiAwLjEyNSAtPiAtMy4wCitsb2cyMDIwMyBsb2cyIDAuMDYyNSAtPiAtNC4wCisKKy0tIHZhbHVlcyBjbG9zZSB0byAxLjAKK2xvZzIwMzAwIGxvZzIgMS4wMDAwMDAwMDAwMDAwMDAyIC0+IDMuMjAzNDI2NTAzODE0OTE3MWUtMTYKK2xvZzIwMzAxIGxvZzIgMS4wMDAwMDAwMDAxIC0+IDEuNDQyNjk1MTYwMTg1OTUxNmUtMTAKK2xvZzIwMzAyIGxvZzIgMS4wMDAwMSAtPiAxLjQ0MjY4NzgyNzQ3MTI5OTdlLTUKKworbG9nMjAzMTAgbG9nMiAwLjk5OTk5OTk5OTk5OTk5OTkgLT4gLTEuNjAxNzEzMjUxOTA3NDU4OGUtMTYKK2xvZzIwMzExIGxvZzIgMC45OTk5OTk5OTk5IC0+IC0xLjQ0MjY5NTE2MDMzMDIyMTBlLTEwCitsb2cyMDMxMiBsb2cyIDAuOTk5OTkgLT4gLTEuNDQyNzAyMjU0NDA1NjkyMmUtNQorCistLSB0aW55IHZhbHVlcworbG9nMjA0MDAgbG9nMiA1ZS0zMjQgLT4gLTEwNzQuMAorbG9nMjA0MDEgbG9nMiAxZS0zMjMgLT4gLTEwNzMuMAorbG9nMjA0MDIgbG9nMiAxLjVlLTMyMyAtPiAtMTA3Mi40MTUwMzc0OTkyNzg5Citsb2cyMDQwMyBsb2cyIDJlLTMyMyAtPiAtMTA3Mi4wCisKK2xvZzIwNDEwIGxvZzIgMWUtMzA4IC0+IC0xMDIzLjE1Mzg1MzIyNTMwNzYKK2xvZzIwNDExIGxvZzIgMi4yMjUwNzM4NTg1MDcyMDE0ZS0zMDggLT4gLTEwMjIuMAorbG9nMjA0MTIgbG9nMiA0LjQ1MDE0NzcxNzAxNDQwMjhlLTMwOCAtPiAtMTAyMS4wCitsb2cyMDQxMyBsb2cyIDFlLTMwNyAtPiAtMTAxOS44MzE5MjUxMzA0MjAyCisKKy0tIGh1Z2UgdmFsdWVzCitsb2cyMDUwMCBsb2cyIDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4IC0+IDEwMjQuMAorbG9nMjA1MDEgbG9nMiAxLjdlKzMwOCAtPiAxMDIzLjkxOTM4Nzk3MTY3MDYKK2xvZzIwNTAyIGxvZzIgOC45ODg0NjU2NzQzMTE1Nzk1ZSszMDcgLT4gMTAyMy4wCisKKy0tIHNlbGVjdGlvbiBvZiByYW5kb20gdmFsdWVzCitsb2cyMDYwMCBsb2cyIC03LjIxNzQzMjQ4NDEwMzk4MzhlKzI4OSAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwMSBsb2cyIC0yLjg2MTMxOTczNDA4OTYxN2UrMjY1IC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYwMiBsb2cyIC00LjM1MDc2NDY4OTQwMDg5NjJlKzI1NyAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwMyBsb2cyIC02LjY3MTcyNjUzMDc1MjAyMjRlKzIzNCAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwNCBsb2cyIC0zLjkxMTgwMjM3ODY2MTkyOTRlKzIyOSAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwNSBsb2cyIC0xLjU0NzgyMjEzMDI1MDUxNjFlKzIwNiAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwNiBsb2cyIC0xLjQzODA0ODUxMzEzNjQ2MDJlKzIwMCAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwNyBsb2cyIC0zLjcyMzUxOTg3MzAzODI2NDVlKzE4NSAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwOCBsb2cyIC0xLjA0NzIyNDIyMzUwOTU3MjRlKzE4NCAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYwOSBsb2cyIC01LjAxNDE3ODE5NTYxNjM4ODRlKzE2MCAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYxMCBsb2cyIC0yLjExNTc5NTgwMzExNjAzMjRlKzEyNCAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYxMSBsb2cyIC03Ljk2Nzc1NTg2MTI1Njc3MThlKzkwIC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYxMiBsb2cyIC01LjU1NTM5MDYxOTQwNjM3MzJlKzQ1IC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYxMyBsb2cyIC0xNjU3MzkwMDk1MjYwNy45NTMgLT4gbmFuICAgICAgICBpbnZhbGlkCitsb2cyMDYxNCBsb2cyIC0zNzE5ODM3MTAxOS44ODg2MTggLT4gbmFuICAgICAgICBpbnZhbGlkCitsb2cyMDYxNSBsb2cyIC02LjA3MjcxMTUxMjE0MjI2NzRlLTMyIC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYxNiBsb2cyIC0yLjU0MDY4NDE2NTY1MjYwNTdlLTM4IC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYxNyBsb2cyIC00LjkwNTY3NjY3MDMyNjc2NTdlLTQzIC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYxOCBsb2cyIC0yLjE2NDY3ODYwNzUyMjgzMDVlLTcxIC0+IG5hbiAgICBpbnZhbGlkCitsb2cyMDYxOSBsb2cyIC0yLjQ3MDgyNjc5MDQ4ODU3M2UtNzggLT4gbmFuICAgICBpbnZhbGlkCitsb2cyMDYyMCBsb2cyIC0zLjg2NjE3MDkzMDM0ODkwNjRlLTE2NSAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYyMSBsb2cyIC0xLjA1MTY0OTY5NzY2NDk5ODZlLTE4MiAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYyMiBsb2cyIC0xLjU5MzU0NTg2MTQzMTc5OTZlLTI1NSAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYyMyBsb2cyIC0yLjg3NTA5NzcyNjczMzY2NTRlLTI5MyAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYyNCBsb2cyIC03LjYwNzk0NjY3OTQ3MzI1ODVlLTI5NiAtPiBuYW4gICBpbnZhbGlkCitsb2cyMDYyNSBsb2cyIDMuMjA3MzI1MzUzOTk4ODU0NWUtMzA3IC0+IC0xMDE4LjE1MDU1NDQyMDkyMTMKK2xvZzIwNjI2IGxvZzIgMS42NzQ5Mzc4ODU0NzIyNDllLTI0NCAtPiAtODA5LjgwNjM0NzU1NzgzMTI2Citsb2cyMDYyNyBsb2cyIDEuMDkxMTI1OTA0NDkzMTI4M2UtMjE0IC0+IC03MTAuNzY2Nzk0NzIyNzQyMTMKK2xvZzIwNjI4IGxvZzIgMi4wMjc1MzcyNjI0ODA5NzA5ZS0xNTQgLT4gLTUxMC41NTcxOTgxODM4MzI3MgorbG9nMjA2MjkgbG9nMiA3LjM5MjYwODczNjk2MzE4NDFlLTExNSAtPiAtMzc5LjEzNTY0NzM1MzEyMjkyCitsb2cyMDYzMCBsb2cyIDEuMzQ4MDE5ODIwNjM0MjQyM2UtODYgLT4gLTI4NS4yNTQ5NzQ0NTA5NDQzNgorbG9nMjA2MzEgbG9nMiA4Ljk5MjczODQ2NTU3MTk5NDdlLTgzIC0+IC0yNzIuNTUxMjcxMzY0MDE2MzcKK2xvZzIwNjMyIGxvZzIgMy4xNDUyMzk4NzEzNTk3NDg3ZS02MCAtPiAtMTk3LjY2MjUxNTY0NDk2ODc1Citsb2cyMDYzMyBsb2cyIDcuMDcwNjU3MzIxNTQ1NzM1MWUtNTUgLT4gLTE3OS44ODQyMDA4Nzc4MjIxNworbG9nMjA2MzQgbG9nMiAzLjEyNTgyODUzOTA3MzE2NjllLTQ5IC0+IC0xNjEuMTMwMjM4MDA1MDU2NTMKK2xvZzIwNjM1IGxvZzIgOC4yMjUzMDQ2NjI3ODI5OTQyZS00MSAtPiAtMTMzLjE1ODk4Mjc3MzU1ODc5Citsb2cyMDYzNiBsb2cyIDcuODY5MTM2NzM5NzUxOTg5N2UrNDkgLT4gMTY1Ljc1MDY4MjAyNzMyNDE5Citsb2cyMDYzNyBsb2cyIDIuOTkyMDU2MTk4MzkyNTAxM2UrNjQgLT4gMjE0LjE4NDUzNTM0NTczNzU3Citsb2cyMDYzOCBsb2cyIDQuNzgyNzI1NDU1Mzk0Njg0MWUrNzcgLT4gMjU4LjA0NjI5NjI4NDQ1NjczCitsb2cyMDYzOSBsb2cyIDMuMTkwMzU2NjQ5NjQ4MTg2OGUrMTA1IC0+IDM1MC40NzYxNjc2NzQ5MTE2NgorbG9nMjA2NDAgbG9nMiA1LjYxOTUwODI0NDk1MDI0MTllKzExMyAtPiAzNzcuODY4MzE4NjEwMDgyNTAKK2xvZzIwNjQxIGxvZzIgOS45NjI1NjU4MjUwNjUxMDQ3ZSsxMjUgLT4gNDE4LjU1NzUyOTIxMjI4NzUzCitsb2cyMDY0MiBsb2cyIDIuNzM1ODk0NTIyMDk2MTUzMmUrMTQ1IC0+IDQ4My4xMzE1ODYzNjkyMzQxMworbG9nMjA2NDMgbG9nMiAyLjc4NTg0MjM4NzkyNjkzMWUrMTc0IC0+IDU3OS40OTM2MDIxNDg2MDI4MAorbG9nMjA2NDQgbG9nMiAyLjQxNjkxNzI1MDcyNTI3NTFlKzE5MyAtPiA2NDIuNDA1MjkwMzkyODk2NTIKK2xvZzIwNjQ1IGxvZzIgMy4xNjg5MDkxMjA2Mzk1NjMyZSsyMDUgLT4gNjgyLjY1OTI0NTczNzk4Mzk1Citsb2cyMDY0NiBsb2cyIDIuNTM1OTk1NTkyMzY1MzkxZSsyMDggLT4gNjkyLjMwMzU5NTk3NDYwNDYwCitsb2cyMDY0NyBsb2cyIDYuMjAxMTIzNjU2NjA4OTkxNmUrMjMzIC0+IDc3Ni42NDE3NzU3NjczMDkxMworbG9nMjA2NDggbG9nMiAyLjE4NDMyNzQ4MjA2Nzc2MzJlKzI1MyAtPiA4NDEuNTc0OTk3MTcyODk2NDcKK2xvZzIwNjQ5IGxvZzIgOC43NDkzOTMxMDYzNDc0NzkxZSsyOTcgLT4gOTg5Ljc0MTgyNzEzMDczOTgxCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tZW1vcnlfd2F0Y2hkb2cucHkgYi9MaWIvdGVzdC9tZW1vcnlfd2F0Y2hkb2cucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhjY2E4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L21lbW9yeV93YXRjaGRvZy5weQpAQCAtMCwwICsxLDI4IEBACisiIiJNZW1vcnkgd2F0Y2hkb2c6IHBlcmlvZGljYWxseSByZWFkIHRoZSBtZW1vcnkgdXNhZ2Ugb2YgdGhlIG1haW4gdGVzdCBwcm9jZXNzCithbmQgcHJpbnQgaXQgb3V0LCB1bnRpbCB0ZXJtaW5hdGVkLiIiIgorIyBzdGRpbiBzaG91bGQgcmVmZXIgdG8gdGhlIHByb2Nlc3MnIC9wcm9jLzxQSUQ+L3N0YXRtOiB3ZSBkb24ndCBwYXNzIHRoZQorIyBwcm9jZXNzJyBQSUQgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiBpbiBjYXNlIG9mIC0gdW5saWtlbHkgLSBQSUQgcmVjeWNsaW5nLgorIyBJZiB0aGUgcHJvY2VzcyBjcmFzaGVzLCByZWFkaW5nIGZyb20gdGhlIC9wcm9jIGVudHJ5IHdpbGwgZmFpbCB3aXRoIEVTUkNILgorCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworCit0cnk6CisgICAgcGFnZV9zaXplID0gb3Muc3lzY29uZignU0NfUEFHRVNJWkUnKQorZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgdHJ5OgorICAgICAgICBwYWdlX3NpemUgPSBvcy5zeXNjb25mKCdTQ19QQUdFX1NJWkUnKQorICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICBwYWdlX3NpemUgPSA0MDk2CisKK3doaWxlIFRydWU6CisgICAgc3lzLnN0ZGluLnNlZWsoMCkKKyAgICBzdGF0bSA9IHN5cy5zdGRpbi5yZWFkKCkKKyAgICBkYXRhID0gaW50KHN0YXRtLnNwbGl0KClbNV0pCisgICAgc3lzLnN0ZG91dC53cml0ZSgiIC4uLiBwcm9jZXNzIGRhdGEgc2l6ZToge2RhdGE6LjFmfUdcbiIKKyAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZGF0YT1kYXRhICogcGFnZV9zaXplIC8gKDEwMjQgKiogMykpKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgIHRpbWUuc2xlZXAoMSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L21vY2tfc29ja2V0LnB5IGIvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkKaW5kZXggODAzNjkzMi4uZDA5ZTc4YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvbW9ja19zb2NrZXQucHkKQEAgLTEwNiw3ICsxMDYsOCBAQAogICAgIHJldHVybiBNb2NrU29ja2V0KCkKIAogCi1kZWYgY3JlYXRlX2Nvbm5lY3Rpb24oYWRkcmVzcywgdGltZW91dD1zb2NrZXRfbW9kdWxlLl9HTE9CQUxfREVGQVVMVF9USU1FT1VUKToKK2RlZiBjcmVhdGVfY29ubmVjdGlvbihhZGRyZXNzLCB0aW1lb3V0PXNvY2tldF9tb2R1bGUuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9Tm9uZSk6CiAgICAgdHJ5OgogICAgICAgICBpbnRfcG9ydCA9IGludChhZGRyZXNzWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5IGIvTGliL3Rlc3QvbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKcmVuYW1lIHRvIExpYi90ZXN0L211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKaW5kZXggZWY2M2I2OS4uYTJjNTdlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CisrKyBiL0xpYi90ZXN0L211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL2VudiBweXRob24zCiAjCi0jIHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQorIyBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CiAjICAgQ29tbW9uIFVuaXR0ZXN0IFJvdXRpbmVzIGZvciBDSksgY29kZWNzCiAjCiAKQEAgLTI2NCwyMSArMjY0LDYgQEAKIAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3N0cmVhbS5nZXR2YWx1ZSgpLCBzZWxmLnRzdHJpbmdbMF0pCiAKLWlmIGxlbignXFUwMDAxMjM0NScpID09IDI6ICMgdWNzMiBidWlsZAotICAgIF91bmljaHIgPSBjaHIKLSAgICBkZWYgY2hyKHYpOgotICAgICAgICBpZiB2ID49IDB4MTAwMDA6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocigweGQ4MDAgKyAoKHYgLSAweDEwMDAwKSA+PiAxMCkpICsgXAotICAgICAgICAgICAgICAgICAgIF91bmljaHIoMHhkYzAwICsgKCh2IC0gMHgxMDAwMCkgJiAweDNmZikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX3VuaWNocih2KQotICAgIF9vcmQgPSBvcmQKLSAgICBkZWYgb3JkKGMpOgotICAgICAgICBpZiBsZW4oYykgPT0gMjoKLSAgICAgICAgICAgIHJldHVybiAweDEwMDAwICsgKChfb3JkKGNbMF0pIC0gMHhkODAwKSA8PCAxMCkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChvcmQoY1sxXSkgLSAweGRjMDApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gX29yZChjKQogCiBjbGFzcyBUZXN0QmFzZV9NYXBwaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBwYXNzX2VuY3Rlc3QgPSBbXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvYm90aF9wb3J0aW9ucy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwODBmNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdib3RoX3BvcnRpb25zIGZvbyBvbmUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ib3RoX3BvcnRpb25zL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEzMWQzZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vL3R3by5weQpAQCAtMCwwICsxIEBACithdHRyID0gJ2JvdGhfcG9ydGlvbnMgZm9vIHR3bycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcCBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21pc3NpbmdfZGlyZWN0b3J5LnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzZhOTEwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbWlzc2luZ19kaXJlY3RvcnkuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNjYmVkYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0LnB5CkBAIC0wLDAgKzEgQEAKK2F0dHIgPSAnaW4gbW9kdWxlJwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvX19pbml0X18ucHkgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlL2FfdGVzdC9lbXB0eQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKY29weSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvbW9kdWxlX2FuZF9uYW1lc3BhY2VfcGFja2FnZS9hX3Rlc3QvZW1wdHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL25lc3RlZF9wb3J0aW9uMS56aXAgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMjI0MDYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9uZXN0ZWRfcG9ydGlvbjEuemlwCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9fX2luaXRfXy5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3Mvbm90X2FfbmFtZXNwYWNlX3BrZy9mb28vb25lLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZjVjODMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEvZm9vL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmNWM4MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2Zvby9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMSBmb28gb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIvZm9vL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA5MmUxZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2Zvby90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwb3J0aW9uMiBmb28gdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkL29uZS5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc3NmZjZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudC9jaGlsZC9vbmUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgb25lJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50L2NoaWxkL3R3by5weSBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwMzdiYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QyL3BhcmVudC9jaGlsZC90d28ucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdHdvJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5IGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDMvcGFyZW50L2NoaWxkL3RocmVlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4YWJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQvY2hpbGQvdGhyZWUucHkKQEAgLTAsMCArMSBAQAorYXR0ciA9ICdwYXJlbnQgY2hpbGQgdGhyZWUnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9uYW1lc3BhY2VfcGtncy90b3BfbGV2ZWxfcG9ydGlvbjEuemlwIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjg2NmM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvbmFtZXNwYWNlX3BrZ3MvdG9wX2xldmVsX3BvcnRpb24xLnppcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKaW5kZXggNGQ0OTFiMC4uZmIwNDgzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQpAQCAtNCwxMCArNCwxMSBAQAogaW1wb3J0IHBpY2tsZXRvb2xzCiBpbXBvcnQgc3lzCiBpbXBvcnQgY29weXJlZworaW1wb3J0IHdlYWtyZWYKIGZyb20gaHR0cC5jb29raWVzIGltcG9ydCBTaW1wbGVDb29raWUKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKLSAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwKKyAgICBUZXN0RmFpbGVkLCBURVNURk4sIHJ1bl93aXRoX2xvY2FsZSwgbm9fdHJhY2luZywKICAgICBfMkcsIF80RywgYmlnbWVtdGVzdCwKICAgICApCiAKQEAgLTE4LDcgKzE5LDcgQEAKICMga2luZCBvZiBvdXRlciBsb29wLgogcHJvdG9jb2xzID0gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKQogCi1jaGFyYWN0ZXJfc2l6ZSA9IDQgaWYgc3lzLm1heHVuaWNvZGUgPiAweEZGRkYgZWxzZSAyCithc2NpaV9jaGFyX3NpemUgPSAxCiAKIAogIyBSZXR1cm4gVHJ1ZSBpZiBvcGNvZGUgY29kZSBhcHBlYXJzIGluIHRoZSBwaWNrbGUsIGVsc2UgRmFsc2UuCkBAIC03NDcsNiArNzQ4LDE4IEBACiAgICAgICAgICAgICAgICAgdSA9IHNlbGYubG9hZHMocykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQsIHUpCiAKKyAgICBkZWYgdGVzdF9lbGxpcHNpcyhzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKC4uLiwgcHJvdG8pCisgICAgICAgICAgICB1ID0gc2VsZi5sb2FkcyhzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCguLi4sIHUpCisKKyAgICBkZWYgdGVzdF9ub3RpbXBsZW1lbnRlZChzZWxmKToKKyAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKKyAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKE5vdEltcGxlbWVudGVkLCBwcm90bykKKyAgICAgICAgICAgIHUgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCB1KQorCiAgICAgIyBUZXN0cyBmb3IgcHJvdG9jb2wgMgogCiAgICAgZGVmIHRlc3RfcHJvdG8oc2VsZik6CkBAIC04ODAsNiArODkzLDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCKHgpLCBCKHkpLCBkZXRhaWwpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZGljdF9fLCB5Ll9fZGljdF9fLCBkZXRhaWwpCiAKKyAgICBkZWYgdGVzdF9uZXdvYmpfcHJveGllcyhzZWxmKToKKyAgICAgICAgIyBORVdPQkogc2hvdWxkIHVzZSB0aGUgX19jbGFzc19fIHJhdGhlciB0aGFuIHRoZSByYXcgdHlwZQorICAgICAgICBjbGFzc2VzID0gbXljbGFzc2VzWzpdCisgICAgICAgICMgQ2Fubm90IGNyZWF0ZSB3ZWFrcHJveGllcyB0byB0aGVzZSBjbGFzc2VzCisgICAgICAgIGZvciBjIGluIChNeUludCwgTXlUdXBsZSk6CisgICAgICAgICAgICBjbGFzc2VzLnJlbW92ZShjKQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgZm9yIEMgaW4gY2xhc3NlczoKKyAgICAgICAgICAgICAgICBCID0gQy5fX2Jhc2VfXworICAgICAgICAgICAgICAgIHggPSBDKEMuc2FtcGxlKQorICAgICAgICAgICAgICAgIHguZm9vID0gNDIKKyAgICAgICAgICAgICAgICBwID0gd2Vha3JlZi5wcm94eSh4KQorICAgICAgICAgICAgICAgIHMgPSBzZWxmLmR1bXBzKHAsIHByb3RvKQorICAgICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHkpLCB0eXBlKHgpKSAgIyByYXRoZXIgdGhhbiB0eXBlKHApCisgICAgICAgICAgICAgICAgZGV0YWlsID0gKHByb3RvLCBDLCBCLCB4LCB5LCB0eXBlKHkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQih4KSwgQih5KSwgZGV0YWlsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5fX2RpY3RfXywgeS5fX2RpY3RfXywgZGV0YWlsKQorCiAgICAgIyBSZWdpc3RlciBhIHR5cGUgd2l0aCBjb3B5cmVnLCB3aXRoIGV4dGVuc2lvbiBjb2RlIGV4dGNvZGUuICBQaWNrbGUKICAgICAjIGFuIG9iamVjdCBvZiB0aGF0IHR5cGUuICBDaGVjayB0aGF0IHRoZSByZXN1bHRpbmcgcGlja2xlIHVzZXMgb3Bjb2RlCiAgICAgIyAoRVhUWzEyNF0pIHVuZGVyIHByb3RvIDIsIGFuZCBub3QgaW4gcHJvdG8gMS4KQEAgLTEwNDAsMTMgKzEwNzIsMTMgQEAKICAgICAgICAgICAgIHkgPSBzZWxmLmxvYWRzKHMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX3JlZHVjZV9jYWxsZWQsIDEpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X2JhZF9nZXRhdHRyKHNlbGYpOgogICAgICAgICB4ID0gQmFkR2V0YXR0cigpCiAgICAgICAgIGZvciBwcm90byBpbiAwLCAxOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLmR1bXBzLCB4LCBwcm90bykKICAgICAgICAgIyBwcm90b2NvbCAyIGRvbid0IHJhaXNlIGEgUnVudGltZUVycm9yLgogICAgICAgICBkID0gc2VsZi5kdW1wcyh4LCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYubG9hZHMsIGQpCiAKICAgICBkZWYgdGVzdF9yZWR1Y2VfYmFkX2l0ZXJhdG9yKHNlbGYpOgogICAgICAgICAjIElzc3VlNDE3NjogY3Jhc2ggd2hlbiA0dGggYW5kIDV0aCBpdGVtcyBvZiBfX3JlZHVjZV9fKCkKQEAgLTExMzYsNiArMTE2OCwxNSBAQAogICAgICAgICBlbXB0eSA9IHNlbGYubG9hZHMoYidceDgwXHgwM1VceDAwcVx4MDAuJywgZW5jb2Rpbmc9J2tvaTgtcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW1wdHksICcnKQogCisgICAgZGVmIHRlc3RfaW50X3BpY2tsaW5nX2VmZmljaWVuY3koc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYWNpdHkgb2YgaW50IHJlcHJlc2VudGF0aW9uIChzZWUgaXNzdWUgIzEyNzQ0KQorICAgICAgICBmb3IgcHJvdG8gaW4gcHJvdG9jb2xzOgorICAgICAgICAgICAgc2l6ZXMgPSBbbGVuKHNlbGYuZHVtcHMoMioqbiwgcHJvdG8pKSBmb3IgbiBpbiByYW5nZSg3MCldCisgICAgICAgICAgICAjIHRoZSBzaXplIGZ1bmN0aW9uIGlzIG1vbm90b25pYworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2l6ZXMpLCBzaXplcykKKyAgICAgICAgICAgIGlmIHByb3RvID49IDI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc2l6ZXNbLTFdLCAxNCkKKwogICAgIGRlZiBjaGVja19uZWdhdGl2ZV8zMmJfYmluWFhYKHNlbGYsIGR1bXBlZCk6CiAgICAgICAgIGlmIHN5cy5tYXhzaXplID4gMioqMzI6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IGlzIG9ubHkgbWVhbmluZ2Z1bCBvbiAzMi1iaXQgYnVpbGRzIikKQEAgLTEyMTcsNyArMTI1OCw3IEBACiAgICAgIyBBbGwgcHJvdG9jb2xzIHVzZSAxLWJ5dGUgcGVyIHByaW50YWJsZSBBU0NJSSBjaGFyYWN0ZXI7IHdlIGFkZCBhbm90aGVyCiAgICAgIyBieXRlIGJlY2F1c2UgdGhlIGVuY29kZWQgZm9ybSBoYXMgdG8gYmUgY29waWVkIGludG8gdGhlIGludGVybmFsIGJ1ZmZlci4KIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGNoYXJhY3Rlcl9zaXplLCBkcnlfcnVuPUZhbHNlKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MiArIGFzY2lpX2NoYXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9odWdlX3N0cl8zMmIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGRhdGEgPSAiYWJjZCIgKiAoc2l6ZSAvLyA0KQogICAgICAgICB0cnk6CkBAIC0xMjM0LDcgKzEyNzUsNyBAQAogICAgICMgQklOVU5JQ09ERSAocHJvdG9jb2xzIDEsIDIgYW5kIDMpIGNhbm5vdCBjYXJyeSBtb3JlIHRoYW4KICAgICAjIDIqKjMyIC0gMSBieXRlcyBvZiB1dGYtOCBlbmNvZGVkIHVuaWNvZGUuCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSwgZHJ5X3J1bj1GYWxzZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEgKyBhc2NpaV9jaGFyX3NpemUsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfaHVnZV9zdHJfNjRiKHNlbGYsIHNpemUpOgogICAgICAgICBkYXRhID0gImEiICogc2l6ZQogICAgICAgICB0cnk6CkBAIC0xNTc4LDYgKzE2MTksMTA1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bnBpY2tsZXIubG9hZCgpLCBkYXRhKQogCiAKKyMgVGVzdHMgZm9yIGRpc3BhdGNoX3RhYmxlIGF0dHJpYnV0ZQorCitSRURVQ0VfQSA9ICdyZWR1Y2VfQScKKworY2xhc3MgQUFBKG9iamVjdCk6CisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfQSwpCisKK2NsYXNzIEJCQihvYmplY3QpOgorICAgIHBhc3MKKworY2xhc3MgQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgIyBObyBkaXNwYXRjaF90YWJsZSBhdHRyaWJ1dGUgYnkgZGVmYXVsdAorICAgICAgICBmID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHAgPSBzZWxmLnBpY2tsZXJfY2xhc3MoZiwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwLmRpc3BhdGNoX3RhYmxlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihwLCAnZGlzcGF0Y2hfdGFibGUnKSkKKworICAgIGRlZiB0ZXN0X2NsYXNzX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBiZSBzcGVjaWZpZWQgY2xhc3Mtd2lkZQorICAgICAgICBkdCA9IHNlbGYuZ2V0X2Rpc3BhdGNoX3RhYmxlKCkKKworICAgICAgICBjbGFzcyBNeVBpY2tsZXIoc2VsZi5waWNrbGVyX2NsYXNzKToKKyAgICAgICAgICAgIGRpc3BhdGNoX3RhYmxlID0gZHQKKworICAgICAgICBkZWYgZHVtcHMob2JqLCBwcm90b2NvbD1Ob25lKToKKyAgICAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgICAgIHAgPSBNeVBpY2tsZXIoZiwgcHJvdG9jb2wpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGlzcGF0Y2hfdGFibGUsIGR0KQorICAgICAgICAgICAgcC5kdW1wKG9iaikKKyAgICAgICAgICAgIHJldHVybiBmLmdldHZhbHVlKCkKKworICAgICAgICBzZWxmLl90ZXN0X2Rpc3BhdGNoX3RhYmxlKGR1bXBzLCBkdCkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2Rpc3BhdGNoX3RhYmxlKHNlbGYpOgorICAgICAgICAjIEEgZGlzcGF0Y2hfdGFibGUgYXR0cmlidXRlIGNhbiBhbHNvIGJlIHNwZWNpZmllZCBpbnN0YW5jZS13aWRlCisgICAgICAgIGR0ID0gc2VsZi5nZXRfZGlzcGF0Y2hfdGFibGUoKQorCisgICAgICAgIGRlZiBkdW1wcyhvYmosIHByb3RvY29sPU5vbmUpOgorICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgcCA9IHNlbGYucGlja2xlcl9jbGFzcyhmLCBwcm90b2NvbCkKKyAgICAgICAgICAgIHAuZGlzcGF0Y2hfdGFibGUgPSBkdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLmRpc3BhdGNoX3RhYmxlLCBkdCkKKyAgICAgICAgICAgIHAuZHVtcChvYmopCisgICAgICAgICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCisKKyAgICAgICAgc2VsZi5fdGVzdF9kaXNwYXRjaF90YWJsZShkdW1wcywgZHQpCisKKyAgICBkZWYgX3Rlc3RfZGlzcGF0Y2hfdGFibGUoc2VsZiwgZHVtcHMsIGRpc3BhdGNoX3RhYmxlKToKKyAgICAgICAgZGVmIGN1c3RvbV9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMoZHVtcHMob2JqLCAwKSkKKworICAgICAgICBkZWYgZGVmYXVsdF9sb2FkX2R1bXAob2JqKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKG9iaiwgMCkpCisKKyAgICAgICAgIyBwaWNrbGluZyBjb21wbGV4IG51bWJlcnMgdXNpbmcgcHJvdG9jb2wgMCByZWxpZXMgb24gY29weXJlZworICAgICAgICAjIHNvIGNoZWNrIHBpY2tsaW5nIGEgY29tcGxleCBudW1iZXIgc3RpbGwgd29ya3MKKyAgICAgICAgeiA9IDEgKyAyagorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoeiksIHopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgY29tcGxleAorICAgICAgICBSRURVQ0VfMSA9ICdyZWR1Y2VfMScKKyAgICAgICAgZGVmIHJlZHVjZV8xKG9iaik6CisgICAgICAgICAgICByZXR1cm4gc3RyLCAoUkVEVUNFXzEsKQorICAgICAgICBkaXNwYXRjaF90YWJsZVtjb21wbGV4XSA9IHJlZHVjZV8xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3VzdG9tX2xvYWRfZHVtcCh6KSwgUkVEVUNFXzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdF9sb2FkX2R1bXAoeiksIHopCisKKyAgICAgICAgIyBjaGVjayBwaWNrbGFiaWxpdHkgb2YgQUFBIGFuZCBCQkIKKyAgICAgICAgYSA9IEFBQSgpCisgICAgICAgIGIgPSBCQkIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyBtb2RpZnkgcGlja2xpbmcgb2YgQkJCCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0JCQl0gPSByZWR1Y2VfMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYiksIFJFRFVDRV8xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKyAgICAgICAgIyByZXZlcnQgcGlja2xpbmcgb2YgQkJCIGFuZCBtb2RpZnkgcGlja2xpbmcgb2YgQUFBCisgICAgICAgIFJFRFVDRV8yID0gJ3JlZHVjZV8yJworICAgICAgICBkZWYgcmVkdWNlXzIob2JqKToKKyAgICAgICAgICAgIHJldHVybiBzdHIsIChSRURVQ0VfMiwpCisgICAgICAgIGRpc3BhdGNoX3RhYmxlW0FBQV0gPSByZWR1Y2VfMgorICAgICAgICBkZWwgZGlzcGF0Y2hfdGFibGVbQkJCXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1c3RvbV9sb2FkX2R1bXAoYSksIFJFRFVDRV8yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3VzdG9tX2xvYWRfZHVtcChiKSwgQkJCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHRfbG9hZF9kdW1wKGEpLCBSRURVQ0VfQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGRlZmF1bHRfbG9hZF9kdW1wKGIpLCBCQkIpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAjIFByaW50IHNvbWUgc3R1ZmYgdGhhdCBjYW4gYmUgdXNlZCB0byByZXdyaXRlIERBVEF7MCwxLDJ9CiAgICAgZnJvbSBwaWNrbGV0b29scyBpbXBvcnQgZGlzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZWdydGVzdC5weSBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CmluZGV4IDI5ZjJiZjAuLmU5NzdlNDIgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5CkBAIC0yMCw2ICsyMCwxMSBAQAogT3B0aW9uczoKIAogLWgvLS1oZWxwICAgICAgIC0tIHByaW50IHRoaXMgdGV4dCBhbmQgZXhpdAorLS10aW1lb3V0IFRJTUVPVVQKKyAgICAgICAgICAgICAgICAtLSBkdW1wIHRoZSB0cmFjZWJhY2sgYW5kIGV4aXQgaWYgYSB0ZXN0IHRha2VzIG1vcmUKKyAgICAgICAgICAgICAgICAgICB0aGFuIFRJTUVPVVQgc2Vjb25kczsgZGlzYWJsZWQgaWYgVElNRU9VVCBpcyBuZWdhdGl2ZQorICAgICAgICAgICAgICAgICAgIG9yIGVxdWFscyB0byB6ZXJvCistLXdhaXQgICAgICAgICAgLS0gd2FpdCBmb3IgdXNlciBpbnB1dCwgZS5nLiwgYWxsb3cgYSBkZWJ1Z2dlciB0byBiZSBhdHRhY2hlZAogCiBWZXJib3NpdHkKIApAQCAtNDQsNiArNDksOSBAQAogICAgICAgICAgICAgICAgIC0tIHNwZWNpZnkgd2hpY2ggc3BlY2lhbCByZXNvdXJjZSBpbnRlbnNpdmUgdGVzdHMgdG8gcnVuCiAtTS8tLW1lbWxpbWl0IExJTUlUCiAgICAgICAgICAgICAgICAgLS0gcnVuIHZlcnkgbGFyZ2UgbWVtb3J5LWNvbnN1bWluZyB0ZXN0cworICAgLS10ZXN0ZGlyIERJUgorICAgICAgICAgICAgICAgIC0tIGV4ZWN1dGUgdGVzdCBmaWxlcyBpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSAoaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIG9mIHRoZSBQeXRob24gc3RkbGliIHRlc3Qgc3VpdGUpCiAKIFNwZWNpYWwgcnVucwogCkBAIC0xMjUsNiArMTMzLDggQEAKIAogICAgIGFsbCAtICAgICAgIEVuYWJsZSBhbGwgc3BlY2lhbCByZXNvdXJjZXMuCiAKKyAgICBub25lIC0gICAgICBEaXNhYmxlIGFsbCBzcGVjaWFsIHJlc291cmNlcyAodGhpcyBpcyB0aGUgZGVmYXVsdCkuCisKICAgICBhdWRpbyAtICAgICBUZXN0cyB0aGF0IHVzZSB0aGUgYXVkaW8gZGV2aWNlLiAgKFRoZXJlIGFyZSBrbm93bgogICAgICAgICAgICAgICAgIGNhc2VzIG9mIGJyb2tlbiBhdWRpbyBkcml2ZXJzIHRoYXQgY2FuIGNyYXNoIFB5dGhvbiBvcgogICAgICAgICAgICAgICAgIGV2ZW4gdGhlIExpbnV4IGtlcm5lbC4pCkBAIC0xNTUsOCArMTY1LDExIEBACiBvcHRpb24gJy11YWxsLC1ndWknLgogIiIiCiAKKyMgV2UgaW1wb3J0IGltcG9ydGxpYiAqQVNBUCogaW4gb3JkZXIgdG8gdGVzdCAjMTUzODYKK2ltcG9ydCBpbXBvcnRsaWIKKwogaW1wb3J0IGJ1aWx0aW5zCi1pbXBvcnQgZXJybm8KK2ltcG9ydCBmYXVsdGhhbmRsZXIKIGltcG9ydCBnZXRvcHQKIGltcG9ydCBpbwogaW1wb3J0IGpzb24KQEAgLTE2Niw2ICsxNzksNyBAQAogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCitpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdGVtcGZpbGUKQEAgLTIyNSw2ICsyMzksNyBAQAogU0tJUFBFRCA9IC0yCiBSRVNPVVJDRV9ERU5JRUQgPSAtMwogSU5URVJSVVBURUQgPSAtNAorQ0hJTERfRVJST1IgPSAtNSAgICMgZXJyb3IgaW4gYSBjaGlsZCBwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC0yNjgsNiArMjgzLDE4IEBACiAgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KICAgICAiIiIKIAorICAgICMgRGlzcGxheSB0aGUgUHl0aG9uIHRyYWNlYmFjayBvbiBmYXRhbCBlcnJvcnMgKGUuZy4gc2VnZmF1bHQpCisgICAgZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1UcnVlKQorCisgICAgIyBEaXNwbGF5IHRoZSBQeXRob24gdHJhY2ViYWNrIG9uIFNJR0FMUk0gb3IgU0lHVVNSMSBzaWduYWwKKyAgICBzaWduYWxzID0gW10KKyAgICBpZiBoYXNhdHRyKHNpZ25hbCwgJ1NJR0FMUk0nKToKKyAgICAgICAgc2lnbmFscy5hcHBlbmQoc2lnbmFsLlNJR0FMUk0pCisgICAgaWYgaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyk6CisgICAgICAgIHNpZ25hbHMuYXBwZW5kKHNpZ25hbC5TSUdVU1IxKQorICAgIGZvciBzaWdudW0gaW4gc2lnbmFsczoKKyAgICAgICAgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgY2hhaW49VHJ1ZSkKKwogICAgIHJlcGxhY2Vfc3Rkb3V0KCkKIAogICAgIHN1cHBvcnQucmVjb3JkX29yaWdpbmFsX3N0ZG91dChzeXMuc3Rkb3V0KQpAQCAtMjc4LDcgKzMwNSw4IEBACiAgICAgICAgICAgICAgJ3VzZT0nLCAndGhyZXNob2xkPScsICdjb3ZlcmRpcj0nLCAnbm9jb3ZlcmRpcicsCiAgICAgICAgICAgICAgJ3J1bmxlYWtzJywgJ2h1bnRybGVha3M9JywgJ21lbWxpbWl0PScsICdyYW5kc2VlZD0nLAogICAgICAgICAgICAgICdtdWx0aXByb2Nlc3M9JywgJ2NvdmVyYWdlJywgJ3NsYXZlYXJncz0nLCAnZm9yZXZlcicsICdkZWJ1ZycsCi0gICAgICAgICAgICAgJ3N0YXJ0PScsICdub3dpbmRvd3MnLCAnaGVhZGVyJywgJ2ZhaWxmYXN0JywgJ21hdGNoJ10pCisgICAgICAgICAgICAgJ3N0YXJ0PScsICdub3dpbmRvd3MnLCAnaGVhZGVyJywgJ3Rlc3RkaXI9JywgJ3RpbWVvdXQ9JywgJ3dhaXQnLAorICAgICAgICAgICAgICdmYWlsZmFzdCcsICdtYXRjaCddKQogICAgIGV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgogICAgICAgICB1c2FnZShtc2cpCiAKQEAgLTI4OSw2ICszMTcsNyBAQAogICAgICAgICB1c2VfcmVzb3VyY2VzID0gW10KICAgICBkZWJ1ZyA9IEZhbHNlCiAgICAgc3RhcnQgPSBOb25lCisgICAgdGltZW91dCA9IE5vbmUKICAgICBmb3IgbywgYSBpbiBvcHRzOgogICAgICAgICBpZiBvIGluICgnLWgnLCAnLS1oZWxwJyk6CiAgICAgICAgICAgICBwcmludChfX2RvY19fKQpAQCAtMzMyLDcgKzM2MSw5IEBACiAgICAgICAgIGVsaWYgbyBpbiAoJy1UJywgJy0tY292ZXJhZ2UnKToKICAgICAgICAgICAgIHRyYWNlID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctRCcsICctLWNvdmVyZGlyJyk6Ci0gICAgICAgICAgICBjb3ZlcmRpciA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgYSkKKyAgICAgICAgICAgICMgQ1dEIGlzIHJlcGxhY2VkIHdpdGggYSB0ZW1wb3JhcnkgZGlyIGJlZm9yZSBjYWxsaW5nIG1haW4oKSwgc28gd2UKKyAgICAgICAgICAgICMgbmVlZCAgam9pbiBpdCB3aXRoIHRoZSBzYXZlZCBDV0Qgc28gaXQgZ29lcyB3aGVyZSB0aGUgdXNlciBleHBlY3RzLgorICAgICAgICAgICAgY292ZXJkaXIgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgYSkKICAgICAgICAgZWxpZiBvIGluICgnLU4nLCAnLS1ub2NvdmVyZGlyJyk6CiAgICAgICAgICAgICBjb3ZlcmRpciA9IE5vbmUKICAgICAgICAgZWxpZiBvIGluICgnLVInLCAnLS1odW50cmxlYWtzJyk6CkBAIC0zNTAsOSArMzgxLDkgQEAKICAgICAgICAgICAgICAgICBodW50cmxlYWtzWzFdID0gaW50KGh1bnRybGVha3NbMV0pCiAgICAgICAgICAgICBpZiBsZW4oaHVudHJsZWFrcykgPT0gMiBvciBub3QgaHVudHJsZWFrc1syXToKICAgICAgICAgICAgICAgICBodW50cmxlYWtzWzI6XSA9IFsicmVmbG9nLnR4dCJdCi0gICAgICAgICAgICAjIEF2b2lkIGZhbHNlIHBvc2l0aXZlcyBkdWUgdG8gdGhlIGNoYXJhY3RlciBjYWNoZSBpbgotICAgICAgICAgICAgIyBzdHJpbmdvYmplY3QuYyBmaWxsaW5nIHNsb3dseSB3aXRoIHJhbmRvbSBkYXRhCi0gICAgICAgICAgICB3YXJtX2NoYXJfY2FjaGUoKQorICAgICAgICAgICAgIyBBdm9pZCBmYWxzZSBwb3NpdGl2ZXMgZHVlIHRvIHZhcmlvdXMgY2FjaGVzCisgICAgICAgICAgICAjIGZpbGxpbmcgc2xvd2x5IHdpdGggcmFuZG9tIGRhdGE6CisgICAgICAgICAgICB3YXJtX2NhY2hlcygpCiAgICAgICAgIGVsaWYgbyBpbiAoJy1NJywgJy0tbWVtbGltaXQnKToKICAgICAgICAgICAgIHN1cHBvcnQuc2V0X21lbWxpbWl0KGEpCiAgICAgICAgIGVsaWYgbyBpbiAoJy11JywgJy0tdXNlJyk6CkBAIC0zNjEsNiArMzkyLDkgQEAKICAgICAgICAgICAgICAgICBpZiByID09ICdhbGwnOgogICAgICAgICAgICAgICAgICAgICB1c2VfcmVzb3VyY2VzWzpdID0gUkVTT1VSQ0VfTkFNRVMKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiByID09ICdub25lJzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIHVzZV9yZXNvdXJjZXNbOl0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICByZW1vdmUgPSBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHJbMF0gPT0gJy0nOgogICAgICAgICAgICAgICAgICAgICByZW1vdmUgPSBUcnVlCkBAIC0zOTEsMTggKzQyNSw0NSBAQAogICAgICAgICAgICAgZm9yZXZlciA9IFRydWUKICAgICAgICAgZWxpZiBvIGluICgnLWonLCAnLS1tdWx0aXByb2Nlc3MnKToKICAgICAgICAgICAgIHVzZV9tcCA9IGludChhKQorICAgICAgICAgICAgaWYgdXNlX21wIDw9IDA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCisgICAgICAgICAgICAgICAgICAgICMgVXNlIGFsbCBjb3JlcyArIGV4dHJhcyBmb3IgdGVzdHMgdGhhdCBsaWtlIHRvIHNsZWVwCisgICAgICAgICAgICAgICAgICAgIHVzZV9tcCA9IDIgKyBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKKyAgICAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgdXNlX21wID0gMworICAgICAgICAgICAgaWYgdXNlX21wID09IDE6CisgICAgICAgICAgICAgICAgdXNlX21wID0gTm9uZQogICAgICAgICBlbGlmIG8gPT0gJy0taGVhZGVyJzoKICAgICAgICAgICAgIGhlYWRlciA9IFRydWUKICAgICAgICAgZWxpZiBvID09ICctLXNsYXZlYXJncyc6CiAgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBqc29uLmxvYWRzKGEpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCgqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5URVJSVVBURUQsICcnCiAgICAgICAgICAgICBleGNlcHQgQmFzZUV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCBlLl9fY2xhc3NfXy5fX25hbWVfXworICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IENISUxEX0VSUk9SLCBzdHIoZSkKICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICAgICAgcHJpbnQoKSAgICMgRm9yY2UgYSBuZXdsaW5lIChqdXN0IGluIGNhc2UpCiAgICAgICAgICAgICBwcmludChqc29uLmR1bXBzKHJlc3VsdCkpCiAgICAgICAgICAgICBzeXMuZXhpdCgwKQorICAgICAgICBlbGlmIG8gPT0gJy0tdGVzdGRpcic6CisgICAgICAgICAgICAjIENXRCBpcyByZXBsYWNlZCB3aXRoIGEgdGVtcG9yYXJ5IGRpciBiZWZvcmUgY2FsbGluZyBtYWluKCksIHNvIHdlCisgICAgICAgICAgICAjIGpvaW4gaXQgd2l0aCB0aGUgc2F2ZWQgQ1dEIHNvIGl0IGVuZHMgdXAgd2hlcmUgdGhlIHVzZXIgZXhwZWN0cy4KKyAgICAgICAgICAgIHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgYSkKKyAgICAgICAgZWxpZiBvID09ICctLXRpbWVvdXQnOgorICAgICAgICAgICAgaWYgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja3NfbGF0ZXInKToKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gZmxvYXQoYSkKKyAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IDw9IDA6CisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCJXYXJuaW5nOiBUaGUgdGltZW91dCBvcHRpb24gcmVxdWlyZXMgIgorICAgICAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tzX2xhdGVyIikKKyAgICAgICAgICAgICAgICB0aW1lb3V0ID0gTm9uZQorICAgICAgICBlbGlmIG8gPT0gJy0td2FpdCc6CisgICAgICAgICAgICBpbnB1dCgiUHJlc3MgYW55IGtleSB0byBjb250aW51ZS4uLiIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmludCgoIk5vIGhhbmRsZXIgZm9yIG9wdGlvbiB7fS4gIFBsZWFzZSByZXBvcnQgdGhpcyBhcyBhIGJ1ZyAiCiAgICAgICAgICAgICAgICAgICAgImF0IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcuIikuZm9ybWF0KG8pLCBmaWxlPXN5cy5zdGRlcnIpCkBAIC00ODEsNyArNTQyLDEzIEBACiAgICAgICAgIHByaW50KCI9PSAgIiwgb3MuZ2V0Y3dkKCkpCiAgICAgICAgIHByaW50KCJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzKQogCi0gICAgYWxsdGVzdHMgPSBmaW5kdGVzdHModGVzdGRpciwgc3RkdGVzdHMsIG5vdHRlc3RzKQorICAgICMgaWYgdGVzdGRpciBpcyBzZXQsIHRoZW4gd2UgYXJlIG5vdCBydW5uaW5nIHRoZSBweXRob24gdGVzdHMgc3VpdGUsIHNvCisgICAgIyBkb24ndCBhZGQgZGVmYXVsdCB0ZXN0cyB0byBiZSBleGVjdXRlZCBvciBza2lwcGVkIChwYXNzIGVtcHR5IHZhbHVlcykKKyAgICBpZiB0ZXN0ZGlyOgorICAgICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBsaXN0KCksIHNldCgpKQorICAgIGVsc2U6CisgICAgICAgIGFsbHRlc3RzID0gZmluZHRlc3RzKHRlc3RkaXIsIHN0ZHRlc3RzLCBub3R0ZXN0cykKKwogICAgIHNlbGVjdGVkID0gdGVzdHMgb3IgYXJncyBvciBhbGx0ZXN0cwogICAgIGlmIHNpbmdsZToKICAgICAgICAgc2VsZWN0ZWQgPSBzZWxlY3RlZFs6MV0KQEAgLTUwMSw3ICs1NjgsNyBAQAogICAgICAgICByYW5kb20uc2h1ZmZsZShzZWxlY3RlZCkKICAgICBpZiB0cmFjZToKICAgICAgICAgaW1wb3J0IHRyYWNlLCB0ZW1wZmlsZQotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsCisgICAgICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLmdldHRlbXBkaXIoKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPUZhbHNlLCBjb3VudD1UcnVlKQogCkBAIC01NjYsNyArNjMzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXN0LCB2ZXJib3NlLCBxdWlldCksCiAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9aHVudHJsZWFrcywgdXNlX3Jlc291cmNlcz11c2VfcmVzb3VyY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz1kZWJ1Zywgb3V0cHV0X29uX2ZhaWx1cmU9dmVyYm9zZTMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PWZhaWxmYXN0LCBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD10aW1lb3V0LCBmYWlsZmFzdD1mYWlsZmFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHM9bWF0Y2hfdGVzdHMpCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgIyAtRSBpcyBuZWVkZWQgYnkgc29tZSB0ZXN0cywgZS5nLiB0ZXN0X2ltcG9ydAogICAgICAgICAgICAgICAgICAgICAjIFJ1bm5pbmcgdGhlIGNoaWxkIGZyb20gdGhlIHNhbWUgd29ya2luZyBkaXJlY3RvcnkgZW5zdXJlcwpAQCAtNTc4LDEwICs2NDYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VfZmRzPShvcy5uYW1lICE9ICdudCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9c3VwcG9ydC5TQVZFRENXRCkKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgICAgIHJldGNvZGUgPSBwb3Blbi53YWl0KCkKICAgICAgICAgICAgICAgICAgICAgIyBTdHJpcCBsYXN0IHJlZmNvdW50IG91dHB1dCBsaW5lIGlmIGl0IGV4aXN0cywgc2luY2UgaXQKICAgICAgICAgICAgICAgICAgICAgIyBjb21lcyBmcm9tIHRoZSBzaHV0ZG93biBvZiB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIHN1YmNvbW1hbmQuCiAgICAgICAgICAgICAgICAgICAgIHN0ZGVyciA9IGRlYnVnX291dHB1dF9wYXQuc3ViKCIiLCBzdGRlcnIpCiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgXywgcmVzdWx0ID0gc3Rkb3V0LnN0cmlwKCkucnBhcnRpdGlvbigiXG4iKQorICAgICAgICAgICAgICAgICAgICBpZiByZXRjb2RlICE9IDA6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0hJTERfRVJST1IsICJFeGl0IGNvZGUgJXMiICUgcmV0Y29kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgpAQCAtNjE0LDggKzY4Nyw5IEBACiAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0WzBdID09IElOVEVSUlVQVEVEOgotICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcmVzdWx0WzFdID09ICdLZXlib2FyZEludGVycnVwdCcKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQgICAjIFdoYXQgZWxzZT8KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gQ0hJTERfRVJST1I6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQ2hpbGQgZXJyb3Igb24ge306IHt9Ii5mb3JtYXQodGVzdCwgcmVzdWx0WzFdKSkKICAgICAgICAgICAgICAgICB0ZXN0X2luZGV4ICs9IDEKICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgaW50ZXJydXB0ZWQgPSBUcnVlCkBAIC02MzIsMTMgKzcwNiwxNCBAQAogICAgICAgICAgICAgaWYgdHJhY2U6CiAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSB0cmFjaW5nIGNvZGUgY292ZXJhZ2UsIHRoZW4gd2UgZG9uJ3QgZXhpdCB3aXRoIHN0YXR1cwogICAgICAgICAgICAgICAgICMgaWYgb24gYSBmYWxzZSByZXR1cm4gdmFsdWUgZnJvbSBtYWluLgotICAgICAgICAgICAgICAgIHRyYWNlci5ydW5jdHgoJ3J1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQpJywKKyAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0LCB0aW1lb3V0PXRpbWVvdXQpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9dmFycygpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsIGh1bnRybGVha3MsIGRlYnVnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPXZlcmJvc2UzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PWZhaWxmYXN0LCBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsIGZhaWxmYXN0PWZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzKQogICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKQEAgLTcwOSw3ICs3ODQsNyBAQAogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IFRydWUKLSAgICAgICAgICAgICAgICBvayA9IHJ1bnRlc3QodGVzdCwgVHJ1ZSwgcXVpZXQsIGh1bnRybGVha3MsIGRlYnVnKQorICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgZGVidWcsIHRpbWVvdXQ9dGltZW91dCkKICAgICAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgICAgICAjIHByaW50IGEgbmV3bGluZSBzZXBhcmF0ZSBmcm9tIHRoZSBeQwogICAgICAgICAgICAgICAgIHByaW50KCkKQEAgLTczNCw2ICs4MDksOCBAQAogICAgIHN5cy5leGl0KGxlbihiYWQpID4gMCBvciBpbnRlcnJ1cHRlZCkKIAogCisjIHNtYWxsIHNldCBvZiB0ZXN0cyB0byBkZXRlcm1pbmUgaWYgd2UgaGF2ZSBhIGJhc2ljYWxseSBmdW5jdGlvbmluZyBpbnRlcnByZXRlcgorIyAoaS5lLiBpZiBhbnkgb2YgdGhlc2UgZmFpbCwgdGhlbiBhbnl0aGluZyBlbHNlIGlzIGxpa2VseSB0byBmb2xsb3cpCiBTVERURVNUUyA9IFsKICAgICAndGVzdF9ncmFtbWFyJywKICAgICAndGVzdF9vcGNvZGVzJywKQEAgLTc0NCwxMiArODIxLDExIEBACiAgICAgJ3Rlc3RfdW5pdHRlc3QnLAogICAgICd0ZXN0X2RvY3Rlc3QnLAogICAgICd0ZXN0X2RvY3Rlc3QyJywKKyAgICAndGVzdF9zdXBwb3J0JwogXQogCi1OT1RURVNUUyA9IHsKLSAgICAndGVzdF9mdXR1cmUxJywKLSAgICAndGVzdF9mdXR1cmUyJywKLX0KKyMgc2V0IG9mIHRlc3RzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBiZSBleGVjdXRlZCB3aGVuIHVzaW5nIHJlZ3J0ZXN0CitOT1RURVNUUyA9IHNldCgpCiAKIGRlZiBmaW5kdGVzdHModGVzdGRpcj1Ob25lLCBzdGR0ZXN0cz1TVERURVNUUywgbm90dGVzdHM9Tk9UVEVTVFMpOgogICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGFwcGxpY2FibGUgdGVzdCBtb2R1bGVzLiIiIgpAQCAtNzU4LDkgKzgzNCw5IEBACiAgICAgdGVzdHMgPSBbXQogICAgIG90aGVycyA9IHNldChzdGR0ZXN0cykgfCBub3R0ZXN0cwogICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBtb2RuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG5hbWUpCi0gICAgICAgIGlmIG1vZG5hbWVbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCA9PSAiLnB5IiBhbmQgbW9kbmFtZSBub3QgaW4gb3RoZXJzOgotICAgICAgICAgICAgdGVzdHMuYXBwZW5kKG1vZG5hbWUpCisgICAgICAgIG1vZCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBtb2RbOjVdID09ICJ0ZXN0XyIgYW5kIGV4dCBpbiAoIi5weSIsICIiKSBhbmQgbW9kIG5vdCBpbiBvdGhlcnM6CisgICAgICAgICAgICB0ZXN0cy5hcHBlbmQobW9kKQogICAgIHJldHVybiBzdGR0ZXN0cyArIHNvcnRlZCh0ZXN0cykKIAogIyBXZSBkbyBub3QgdXNlIGEgZ2VuZXJhdG9yIHNvIG11bHRpcGxlIHRocmVhZHMgY2FuIGNhbGwgbmV4dCgpLgpAQCAtNzg1LDE3ICs4NjEsMTQgQEAKIGRlZiByZXBsYWNlX3N0ZG91dCgpOgogICAgICIiIlNldCBzdGRvdXQgZW5jb2RlciBlcnJvciBoYW5kbGVyIHRvIGJhY2tzbGFzaHJlcGxhY2UgKGFzIHN0ZGVyciBlcnJvcgogICAgIGhhbmRsZXIpIHRvIGF2b2lkIFVuaWNvZGVFbmNvZGVFcnJvciB3aGVuIHByaW50aW5nIGEgdHJhY2ViYWNrIiIiCi0gICAgaWYgb3MubmFtZSA9PSAibnQiOgotICAgICAgICAjIFJlcGxhY2Ugc3lzLnN0ZG91dCBicmVha3MgdGhlIHN0ZG91dCBuZXdsaW5lcyBvbiBXaW5kb3dzOiBpc3N1ZSAjODUzMwotICAgICAgICByZXR1cm4KLQogICAgIGltcG9ydCBhdGV4aXQKIAogICAgIHN0ZG91dCA9IHN5cy5zdGRvdXQKICAgICBzeXMuc3Rkb3V0ID0gb3BlbihzdGRvdXQuZmlsZW5vKCksICd3JywKICAgICAgICAgZW5jb2Rpbmc9c3Rkb3V0LmVuY29kaW5nLAogICAgICAgICBlcnJvcnM9ImJhY2tzbGFzaHJlcGxhY2UiLAotICAgICAgICBjbG9zZWZkPUZhbHNlKQorICAgICAgICBjbG9zZWZkPUZhbHNlLAorICAgICAgICBuZXdsaW5lPSdcbicpCiAKICAgICBkZWYgcmVzdG9yZV9zdGRvdXQoKToKICAgICAgICAgc3lzLnN0ZG91dC5jbG9zZSgpCkBAIC04MDQsNyArODc3LDggQEAKIAogZGVmIHJ1bnRlc3QodGVzdCwgdmVyYm9zZSwgcXVpZXQsCiAgICAgICAgICAgICBodW50cmxlYWtzPUZhbHNlLCBkZWJ1Zz1GYWxzZSwgdXNlX3Jlc291cmNlcz1Ob25lLAotICAgICAgICAgICAgb3V0cHV0X29uX2ZhaWx1cmU9RmFsc2UsIGZhaWxmYXN0PUZhbHNlLCBtYXRjaF90ZXN0cz1Ob25lKToKKyAgICAgICAgICAgIG91dHB1dF9vbl9mYWlsdXJlPUZhbHNlLCBmYWlsZmFzdD1GYWxzZSwgbWF0Y2hfdGVzdHM9Tm9uZSwKKyAgICAgICAgICAgIHRpbWVvdXQ9Tm9uZSk6CiAgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCiAKICAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CkBAIC04MTQsNiArODg4LDggQEAKICAgICBodW50cmxlYWtzIC0tIHJ1biBtdWx0aXBsZSB0aW1lcyB0byB0ZXN0IGZvciBsZWFrczsgcmVxdWlyZXMgYSBkZWJ1ZwogICAgICAgICAgICAgICAgICAgYnVpbGQ7IGEgdHJpcGxlIGNvcnJlc3BvbmRpbmcgdG8gLVIncyB0aHJlZSBhcmd1bWVudHMKICAgICBvdXRwdXRfb25fZmFpbHVyZSAtLSBpZiB0cnVlLCBkaXNwbGF5IHRlc3Qgb3V0cHV0IG9uIGZhaWx1cmUKKyAgICB0aW1lb3V0IC0tIGR1bXAgdGhlIHRyYWNlYmFjayBhbmQgZXhpdCBpZiBhIHRlc3QgdGFrZXMgbW9yZSB0aGFuCisgICAgICAgICAgICAgICB0aW1lb3V0IHNlY29uZHMKIAogICAgIFJldHVybnMgb25lIG9mIHRoZSB0ZXN0IHJlc3VsdCBjb25zdGFudHM6CiAgICAgICAgIElOVEVSUlVQVEVEICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiBydW4gdW5kZXIgLWoKQEAgLTgyNiw2ICs5MDIsOSBAQAogCiAgICAgaWYgdXNlX3Jlc291cmNlcyBpcyBub3QgTm9uZToKICAgICAgICAgc3VwcG9ydC51c2VfcmVzb3VyY2VzID0gdXNlX3Jlc291cmNlcworICAgIHVzZV90aW1lb3V0ID0gKHRpbWVvdXQgaXMgbm90IE5vbmUpCisgICAgaWYgdXNlX3RpbWVvdXQ6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFja3NfbGF0ZXIodGltZW91dCwgZXhpdD1UcnVlKQogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5tYXRjaF90ZXN0cyA9IG1hdGNoX3Rlc3RzCiAgICAgICAgIGlmIGZhaWxmYXN0OgpAQCAtODY0LDYgKzk0Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfZmFpbHVyZT1ub3QgdmVyYm9zZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGZpbmFsbHk6CisgICAgICAgIGlmIHVzZV90aW1lb3V0OgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKQogICAgICAgICBjbGVhbnVwX3Rlc3RfZHJvcHBpbmdzKHRlc3QsIHZlcmJvc2UpCiBydW50ZXN0LnN0cmluZ2lvID0gTm9uZQogCkBAIC05MDksMTAgKzk5MCwxMCBAQAogICAgIHJlc291cmNlcyA9ICgnc3lzLmFyZ3YnLCAnY3dkJywgJ3N5cy5zdGRpbicsICdzeXMuc3Rkb3V0JywgJ3N5cy5zdGRlcnInLAogICAgICAgICAgICAgICAgICAnb3MuZW52aXJvbicsICdzeXMucGF0aCcsICdzeXMucGF0aF9ob29rcycsICdfX2ltcG9ydF9fJywKICAgICAgICAgICAgICAgICAgJ3dhcm5pbmdzLmZpbHRlcnMnLCAnYXN5bmNvcmUuc29ja2V0X21hcCcsCi0gICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsCi0gICAgICAgICAgICAgICAgICdzaHV0aWwuYXJjaGl2ZV9mb3JtYXRzJywgJ3NodXRpbC51bnBhY2tfZm9ybWF0cycsCisgICAgICAgICAgICAgICAgICdsb2dnaW5nLl9oYW5kbGVycycsICdsb2dnaW5nLl9oYW5kbGVyTGlzdCcsICdzeXMuZ2V0dHJhY2UnLAogICAgICAgICAgICAgICAgICAnc3lzLndhcm5vcHRpb25zJywgJ3RocmVhZGluZy5fZGFuZ2xpbmcnLAogICAgICAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzaW5nLnByb2Nlc3MuX2RhbmdsaW5nJywKKyAgICAgICAgICAgICAgICAgJ3N5c2NvbmZpZy5fQ09ORklHX1ZBUlMnLCAnc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMnLAogICAgICAgICAgICAgICAgICAnc3VwcG9ydC5URVNURk4nLAogICAgICAgICAgICAgICAgICkKIApAQCAtOTYxLDYgKzEwNDIsMTEgQEAKICAgICAgICAgc3lzLnBhdGhfaG9va3MgPSBzYXZlZF9ob29rc1sxXQogICAgICAgICBzeXMucGF0aF9ob29rc1s6XSA9IHNhdmVkX2hvb2tzWzJdCiAKKyAgICBkZWYgZ2V0X3N5c19nZXR0cmFjZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHN5cy5nZXR0cmFjZSgpCisgICAgZGVmIHJlc3RvcmVfc3lzX2dldHRyYWNlKHNlbGYsIHRyYWNlX2Z4bik6CisgICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZV9meG4pCisKICAgICBkZWYgZ2V0X19faW1wb3J0X18oc2VsZik6CiAgICAgICAgIHJldHVybiBidWlsdGlucy5fX2ltcG9ydF9fCiAgICAgZGVmIHJlc3RvcmVfX19pbXBvcnRfXyhzZWxmLCBpbXBvcnRfKToKQEAgLTEwNDQsNiArMTEzMCwyNCBAQAogICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcuY2xlYXIoKQogICAgICAgICBtdWx0aXByb2Nlc3NpbmcucHJvY2Vzcy5fZGFuZ2xpbmcudXBkYXRlKHNhdmVkKQogCisgICAgZGVmIGdldF9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgZGljdCBpcyBpbml0aWFsaXplZAorICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3ByZWZpeCcpCisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9DT05GSUdfVkFSUyksIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMsCisgICAgICAgICAgICAgICAgZGljdChzeXNjb25maWcuX0NPTkZJR19WQVJTKSkKKyAgICBkZWYgcmVzdG9yZV9zeXNjb25maWdfX0NPTkZJR19WQVJTKHNlbGYsIHNhdmVkKToKKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzYXZlZFsyXSkKKworICAgIGRlZiBnZXRfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZik6CisgICAgICAgIHJldHVybiAoaWQoc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMpLCBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUywKKyAgICAgICAgICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUy5jb3B5KCkpCisgICAgZGVmIHJlc3RvcmVfc3lzY29uZmlnX19JTlNUQUxMX1NDSEVNRVMoc2VsZiwgc2F2ZWQpOgorICAgICAgICBzeXNjb25maWcuX0lOU1RBTExfU0NIRU1FUyA9IHNhdmVkWzFdCisgICAgICAgIHN5c2NvbmZpZy5fSU5TVEFMTF9TQ0hFTUVTLmNsZWFyKCkKKyAgICAgICAgc3lzY29uZmlnLl9JTlNUQUxMX1NDSEVNRVMudXBkYXRlKHNhdmVkWzJdKQorCiAgICAgZGVmIGdldF9zdXBwb3J0X1RFU1RGTihzZWxmKToKICAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc3VwcG9ydC5URVNURk4pOgogICAgICAgICAgICAgcmVzdWx0ID0gJ2YnCkBAIC0xMTA4LDE0ICsxMjEyLDE1IEBACiAgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIHRoZV9wYWNrYWdlID0gX19pbXBvcnRfXyhhYnN0ZXN0LCBnbG9iYWxzKCksIGxvY2FscygpLCBbXSkKICAgICAgICAgICAgIHRoZV9tb2R1bGUgPSBnZXRhdHRyKHRoZV9wYWNrYWdlLCB0ZXN0KQotICAgICAgICAgICAgIyBPbGQgdGVzdHMgcnVuIHRvIGNvbXBsZXRpb24gc2ltcGx5IGFzIGEgc2lkZS1lZmZlY3Qgb2YKLSAgICAgICAgICAgICMgYmVpbmcgaW1wb3J0ZWQuICBGb3IgdGVzdHMgYmFzZWQgb24gdW5pdHRlc3Qgb3IgZG9jdGVzdCwKLSAgICAgICAgICAgICMgZXhwbGljaXRseSBpbnZva2UgdGhlaXIgdGVzdF9tYWluKCkgZnVuY3Rpb24gKGlmIGl0IGV4aXN0cykuCi0gICAgICAgICAgICBpbmRpcmVjdF90ZXN0ID0gZ2V0YXR0cih0aGVfbW9kdWxlLCAidGVzdF9tYWluIiwgTm9uZSkKLSAgICAgICAgICAgIGlmIGluZGlyZWN0X3Rlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaW5kaXJlY3RfdGVzdCgpCisgICAgICAgICAgICAjIElmIHRoZSB0ZXN0IGhhcyBhIHRlc3RfbWFpbiwgdGhhdCB3aWxsIHJ1biB0aGUgYXBwcm9wcmlhdGUKKyAgICAgICAgICAgICMgdGVzdHMuICBJZiBub3QsIHVzZSBub3JtYWwgdW5pdHRlc3QgdGVzdCBsb2FkaW5nLgorICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQorICAgICAgICAgICAgaWYgdGVzdF9ydW5uZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0ZXN0cyA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoZV9tb2R1bGUpCisgICAgICAgICAgICAgICAgdGVzdF9ydW5uZXIgPSBsYW1iZGE6IHN1cHBvcnQucnVuX3VuaXR0ZXN0KHRlc3RzKQorICAgICAgICAgICAgdGVzdF9ydW5uZXIoKQogICAgICAgICAgICAgaWYgaHVudHJsZWFrczoKLSAgICAgICAgICAgICAgICByZWZsZWFrID0gZGFzaF9SKHRoZV9tb2R1bGUsIHRlc3QsIGluZGlyZWN0X3Rlc3QsCisgICAgICAgICAgICAgICAgcmVmbGVhayA9IGRhc2hfUih0aGVfbW9kdWxlLCB0ZXN0LCB0ZXN0X3J1bm5lciwKICAgICAgICAgICAgICAgICAgICAgaHVudHJsZWFrcykKICAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQogICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkIGFzIG1zZzoKQEAgLTExOTgsNyArMTMwMyw4IEBACiAgICAgICAgIEZhbHNlIGlmIHRoZSB0ZXN0IGRpZG4ndCBsZWFrIHJlZmVyZW5jZXM7IFRydWUgaWYgd2UgZGV0ZWN0ZWQgcmVmbGVha3MuCiAgICAgIiIiCiAgICAgIyBUaGlzIGNvZGUgaXMgaGFja2lzaCBhbmQgaW5lbGVnYW50LCBidXQgaXQgc2VlbXMgdG8gZG8gdGhlIGpvYi4KLSAgICBpbXBvcnQgY29weXJlZywgX2FiY29sbAorICAgIGltcG9ydCBjb3B5cmVnCisgICAgaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiAgICAgaWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpOgogICAgICAgICByYWlzZSBFeGNlcHRpb24oIlRyYWNraW5nIHJlZmVyZW5jZSBsZWFrcyByZXF1aXJlcyBhIGRlYnVnIGJ1aWxkICIKQEAgLTEyMTUsNyArMTMyMSw3IEBACiAgICAgZWxzZToKICAgICAgICAgemRjID0gemlwaW1wb3J0Ll96aXBfZGlyZWN0b3J5X2NhY2hlLmNvcHkoKQogICAgIGFiY3MgPSB7fQotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoX2FiY29sbCwgYSkgZm9yIGEgaW4gX2FiY29sbC5fX2FsbF9fXToKKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgogICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgpAQCAtMTI2MSw3ICsxMzY3LDcgQEAKICAgICBpbXBvcnQgZ2MsIGNvcHlyZWcKICAgICBpbXBvcnQgX3N0cnB0aW1lLCBsaW5lY2FjaGUKICAgICBpbXBvcnQgdXJsbGliLnBhcnNlLCB1cmxsaWIucmVxdWVzdCwgbWltZXR5cGVzLCBkb2N0ZXN0Ci0gICAgaW1wb3J0IHN0cnVjdCwgZmlsZWNtcCwgX2FiY29sbAorICAgIGltcG9ydCBzdHJ1Y3QsIGZpbGVjbXAsIGNvbGxlY3Rpb25zLmFiYwogICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBfcGF0aF9jcmVhdGVkCiAgICAgZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrU2V0CiAKQEAgLTEyODgsNyArMTM5NCw3IEBACiAgICAgc3lzLl9jbGVhcl90eXBlX2NhY2hlKCkKIAogICAgICMgQ2xlYXIgQUJDIHJlZ2lzdHJpZXMsIHJlc3RvcmluZyBwcmV2aW91c2x5IHNhdmVkIEFCQyByZWdpc3RyaWVzLgotICAgIGZvciBhYmMgaW4gW2dldGF0dHIoX2FiY29sbCwgYSkgZm9yIGEgaW4gX2FiY29sbC5fX2FsbF9fXToKKyAgICBmb3IgYWJjIGluIFtnZXRhdHRyKGNvbGxlY3Rpb25zLmFiYywgYSkgZm9yIGEgaW4gY29sbGVjdGlvbnMuYWJjLl9fYWxsX19dOgogICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChhYmMpOgogICAgICAgICAgICAgY29udGludWUKICAgICAgICAgZm9yIG9iaiBpbiBhYmMuX19zdWJjbGFzc2VzX18oKSArIFthYmNdOgpAQCAtMTMyNCwxMCArMTQzMCwxNSBAQAogICAgICMgQ29sbGVjdCBjeWNsaWMgdHJhc2guCiAgICAgZ2MuY29sbGVjdCgpCiAKLWRlZiB3YXJtX2NoYXJfY2FjaGUoKToKK2RlZiB3YXJtX2NhY2hlcygpOgorICAgICMgY2hhciBjYWNoZQogICAgIHMgPSBieXRlcyhyYW5nZSgyNTYpKQogICAgIGZvciBpIGluIHJhbmdlKDI1Nik6CiAgICAgICAgIHNbaTppKzFdCisgICAgIyB1bmljb2RlIGNhY2hlCisgICAgeCA9IFtjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KV0KKyAgICAjIGludCBjYWNoZQorICAgIHggPSBsaXN0KHJhbmdlKC01LCAyNTcpKQogCiBkZWYgZmluZHRlc3RkaXIocGF0aD1Ob25lKToKICAgICByZXR1cm4gcGF0aCBvciBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pIG9yIG9zLmN1cmRpcgpAQCAtMTM3NCwxMyArMTQ4NSwxNCBAQAogIyBUZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBiZSBza2lwcGVkIGV2ZXJ5d2hlcmUgZXhjZXB0IG9uIG9uZSBwbGF0Zm9ybQogIyBhcmUgYWxzbyBoYW5kbGVkIHNlcGFyYXRlbHkuCiAKLV9leHBlY3RhdGlvbnMgPSB7Ci0gICAgJ3dpbjMyJzoKK19leHBlY3RhdGlvbnMgPSAoCisgICAgKCd3aW4zMicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X19sb2NhbGUKICAgICAgICAgdGVzdF9jcnlwdAogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2RibQorICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9mY250bAogICAgICAgICB0ZXN0X2ZvcmsxCiAgICAgICAgIHRlc3RfZXBvbGwKQEAgLTE0MDMsMTUgKzE1MTUsMTYgQEAKICAgICAgICAgdGVzdF90aHJlYWRzaWduYWxzCiAgICAgICAgIHRlc3Rfd2FpdDMKICAgICAgICAgdGVzdF93YWl0NAotICAgICAgICAiIiIsCi0gICAgJ2xpbnV4Mic6CisgICAgICAgICIiIiksCisgICAgKCdsaW51eCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcworICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9sYXJnZWZpbGUKICAgICAgICAgdGVzdF9rcXVldWUKICAgICAgICAgdGVzdF9vc3NhdWRpb2RldgotICAgICAgICAiIiIsCi0gICAgJ3VuaXh3YXJlNyc6CisgICAgICAgICIiIiksCisgICAgKCd1bml4d2FyZScsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfbGFyZ2VmaWxlCkBAIC0xNDIxLDggKzE1MzQsOCBAQAogICAgICAgICB0ZXN0X3B5ZXhwYXQKICAgICAgICAgdGVzdF9zYXgKICAgICAgICAgdGVzdF9zdW5kcnkKLSAgICAgICAgIiIiLAotICAgICdvcGVudW5peDgnOgorICAgICAgICAiIiIpLAorICAgICgnb3BlbnVuaXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2xhcmdlZmlsZQpAQCAtMTQzMiw4ICsxNTQ1LDggQEAKICAgICAgICAgdGVzdF9weWV4cGF0CiAgICAgICAgIHRlc3Rfc2F4CiAgICAgICAgIHRlc3Rfc3VuZHJ5Ci0gICAgICAgICIiIiwKLSAgICAnc2NvX3N2Myc6CisgICAgICAgICIiIiksCisgICAgKCdzY29fc3YnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9hc3luY2hhdAogICAgICAgICB0ZXN0X2ZvcmsxCkBAIC0xNDUyLDExICsxNTY1LDEyIEBACiAgICAgICAgIHRlc3RfdGhyZWFkZWRfaW1wb3J0CiAgICAgICAgIHRlc3RfdGhyZWFkZWR0ZW1wZmlsZQogICAgICAgICB0ZXN0X3RocmVhZGluZwotICAgICAgICAiIiIsCi0gICAgJ2Rhcndpbic6CisgICAgICAgICIiIiksCisgICAgKCdkYXJ3aW4nLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9fbG9jYWxlCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2dkYgpAQCAtMTQ2NSw4ICsxNTc5LDggQEAKICAgICAgICAgdGVzdF9taW5pZG9tCiAgICAgICAgIHRlc3Rfb3NzYXVkaW9kZXYKICAgICAgICAgdGVzdF9wb2xsCi0gICAgICAgICIiIiwKLSAgICAnc3Vub3M1JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ3N1bm9zJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3Vyc2VzCiAgICAgICAgIHRlc3RfZGJtCkBAIC0xNDc3LDggKzE1OTEsOCBAQAogICAgICAgICB0ZXN0X29wZW5wdHkKICAgICAgICAgdGVzdF96aXBmaWxlCiAgICAgICAgIHRlc3RfemxpYgotICAgICAgICAiIiIsCi0gICAgJ2hwLXV4MTEnOgorICAgICAgICAiIiIpLAorICAgICgnaHAtdXgnLAogICAgICAgICAiIiIKICAgICAgICAgdGVzdF9jdXJzZXMKICAgICAgICAgdGVzdF9lcG9sbApAQCAtMTQ5MywxMSArMTYwNywxMiBAQAogICAgICAgICB0ZXN0X3NheAogICAgICAgICB0ZXN0X3ppcGZpbGUKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnY3lnd2luJzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ2N5Z3dpbicsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N1cnNlcwogICAgICAgICB0ZXN0X2RibQorICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2lvY3RsCiAgICAgICAgIHRlc3Rfa3F1ZXVlCkBAIC0xNTA1LDggKzE2MjAsOCBAQAogICAgICAgICB0ZXN0X2xvY2FsZQogICAgICAgICB0ZXN0X29zc2F1ZGlvZGV2CiAgICAgICAgIHRlc3Rfc29ja2V0c2VydmVyCi0gICAgICAgICIiIiwKLSAgICAnb3MyZW14JzoKKyAgICAgICAgIiIiKSwKKyAgICAoJ29zMmVteCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2F1ZGlvb3AKICAgICAgICAgdGVzdF9jdXJzZXMKQEAgLTE1MTksOSArMTYzNCwxMCBAQAogICAgICAgICB0ZXN0X3B0eQogICAgICAgICB0ZXN0X3Jlc291cmNlCiAgICAgICAgIHRlc3Rfc2lnbmFsCi0gICAgICAgICIiIiwKLSAgICAnZnJlZWJzZDQnOgorICAgICAgICAiIiIpLAorICAgICgnZnJlZWJzZCcsCiAgICAgICAgICIiIgorICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2RibV9nbnUKICAgICAgICAgdGVzdF9sb2NhbGUKQEAgLTE1MzYsOCArMTY1Miw4IEBACiAgICAgICAgIHRlc3RfdGltZW91dAogICAgICAgICB0ZXN0X3VybGxpYm5ldAogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi0gICAgJ2FpeDUnOgorICAgICAgICAiIiIpLAorICAgICgnYWl4JywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfYnoyCiAgICAgICAgIHRlc3RfZXBvbGwKQEAgLTE1NTEsMTAgKzE2NjcsMTEgQEAKICAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKICAgICAgICAgdGVzdF96aXBpbXBvcnQKICAgICAgICAgdGVzdF96bGliCi0gICAgICAgICIiIiwKLSAgICAnb3BlbmJzZDMnOgorICAgICAgICAiIiIpLAorICAgICgnb3BlbmJzZCcsCiAgICAgICAgICIiIgogICAgICAgICB0ZXN0X2N0eXBlcworICAgICAgICB0ZXN0X2RldnBvbGwKICAgICAgICAgdGVzdF9lcG9sbAogICAgICAgICB0ZXN0X2RibV9nbnUKICAgICAgICAgdGVzdF9sb2NhbGUKQEAgLTE1NjYsMTEgKzE2ODMsMTIgQEAKICAgICAgICAgdGVzdF90dGtfZ3Vpb25seQogICAgICAgICB0ZXN0X3R0a190ZXh0b25seQogICAgICAgICB0ZXN0X211bHRpcHJvY2Vzc2luZwotICAgICAgICAiIiIsCi0gICAgJ25ldGJzZDMnOgorICAgICAgICAiIiIpLAorICAgICgnbmV0YnNkJywKICAgICAgICAgIiIiCiAgICAgICAgIHRlc3RfY3R5cGVzCiAgICAgICAgIHRlc3RfY3Vyc2VzCisgICAgICAgIHRlc3RfZGV2cG9sbAogICAgICAgICB0ZXN0X2Vwb2xsCiAgICAgICAgIHRlc3RfZGJtX2dudQogICAgICAgICB0ZXN0X2xvY2FsZQpAQCAtMTU4MSwxMiArMTY5OSw4IEBACiAgICAgICAgIHRlc3RfdHRrX2d1aW9ubHkKICAgICAgICAgdGVzdF90dGtfdGV4dG9ubHkKICAgICAgICAgdGVzdF9tdWx0aXByb2Nlc3NpbmcKLSAgICAgICAgIiIiLAotfQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDUnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KLV9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q2J10gPSBfZXhwZWN0YXRpb25zWydmcmVlYnNkNCddCi1fZXhwZWN0YXRpb25zWydmcmVlYnNkNyddID0gX2V4cGVjdGF0aW9uc1snZnJlZWJzZDQnXQotX2V4cGVjdGF0aW9uc1snZnJlZWJzZDgnXSA9IF9leHBlY3RhdGlvbnNbJ2ZyZWVic2Q0J10KKyAgICAgICAgIiIiKSwKKykKIAogY2xhc3MgX0V4cGVjdGVkU2tpcHM6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgpAQCAtMTU5NCw5ICsxNzA4LDEzIEBACiAgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF90aW1lb3V0CiAKICAgICAgICAgc2VsZi52YWxpZCA9IEZhbHNlCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiBfZXhwZWN0YXRpb25zOgotICAgICAgICAgICAgcyA9IF9leHBlY3RhdGlvbnNbc3lzLnBsYXRmb3JtXQotICAgICAgICAgICAgc2VsZi5leHBlY3RlZCA9IHNldChzLnNwbGl0KCkpCisgICAgICAgIGV4cGVjdGVkID0gTm9uZQorICAgICAgICBmb3IgaXRlbSBpbiBfZXhwZWN0YXRpb25zOgorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoaXRlbVswXSk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBpdGVtWzFdCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmV4cGVjdGVkID0gc2V0KGV4cGVjdGVkLnNwbGl0KCkpCiAKICAgICAgICAgICAgICMgVGhlc2UgYXJlIGJyb2tlbiB0ZXN0cywgZm9yIG5vdyBza2lwcGVkIG9uIGV2ZXJ5IHBsYXRmb3JtLgogICAgICAgICAgICAgIyBYWFggRml4IHRoZXNlIQpAQCAtMTY1Niw5ICsxNzc0LDggQEAKICAgICAgICAgVEVNUERJUiA9IG9zLnBhdGguYWJzcGF0aChURU1QRElSKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5ta2RpcihURU1QRElSKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FRVhJU1Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEZpbGVFeGlzdHNFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKIAogICAgICMgRGVmaW5lIGEgd3JpdGFibGUgdGVtcCBkaXIgdGhhdCB3aWxsIGJlIHVzZWQgYXMgY3dkIHdoaWxlIHJ1bm5pbmcKICAgICAjIHRoZSB0ZXN0cy4gVGhlIG5hbWUgb2YgdGhlIGRpciBpbmNsdWRlcyB0aGUgcGlkIHRvIGFsbG93IHBhcmFsbGVsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZXBlcmYucHkgYi9MaWIvdGVzdC9yZXBlcmYucHkKaW5kZXggN2M2ODIzNC4uZTkzYmFjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcmVwZXJmLnB5CisrKyBiL0xpYi90ZXN0L3JlcGVyZi5weQpAQCAtOSwxMyArOSwxMyBAQAogICAgIHRpbWVmdW5jKDEwLCBwLmZpbmRhbGwsIHMpCiAKIGRlZiB0aW1lZnVuYyhuLCBmdW5jLCAqYXJncywgKiprdyk6Ci0gICAgdDAgPSB0aW1lLmNsb2NrKCkKKyAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICB0cnk6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKG4pOgogICAgICAgICAgICAgcmVzdWx0ID0gZnVuYygqYXJncywgKiprdykKICAgICAgICAgcmV0dXJuIHJlc3VsdAogICAgIGZpbmFsbHk6Ci0gICAgICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgICAgIHQxID0gdGltZS5wZXJmX2NvdW50ZXIoKQogICAgICAgICBpZiBuID4gMToKICAgICAgICAgICAgIHByaW50KG4sICJ0aW1lcyIsIGVuZD0nICcpCiAgICAgICAgIHByaW50KGZ1bmMuX19uYW1lX18sICIlLjNmIiAlICh0MS10MCksICJDUFUgc2Vjb25kcyIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5IGIvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQppbmRleCBiYTQ0NmNkLi5iMDlmNGJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CisrKyBiL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKQEAgLTEsNiArMSw3IEBACiAjIENvbW1vbiB1dGlsaXR5IGZ1bmN0aW9ucyB1c2VkIGJ5IHZhcmlvdXMgc2NyaXB0IGV4ZWN1dGlvbiB0ZXN0cwogIyAgZS5nLiB0ZXN0X2NtZF9saW5lLCB0ZXN0X2NtZF9saW5lX3NjcmlwdCBhbmQgdGVzdF9ydW5weQogCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCkBAIC01OSwxMSArNjAsMTIgQEAKICAgICAiIiIKICAgICByZXR1cm4gX2Fzc2VydF9weXRob24oRmFsc2UsICphcmdzLCAqKmVudl92YXJzKQogCi1kZWYgc3Bhd25fcHl0aG9uKCphcmdzKToKK2RlZiBzcGF3bl9weXRob24oKmFyZ3MsICoqa3cpOgogICAgIGNtZF9saW5lID0gW3N5cy5leGVjdXRhYmxlLCAnLUUnXQogICAgIGNtZF9saW5lLmV4dGVuZChhcmdzKQogICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKGNtZF9saW5lLCBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3KQogCiBkZWYga2lsbF9weXRob24ocCk6CiAgICAgcC5zdGRpbi5jbG9zZSgpCkBAIC05Miw2ICs5NCw3IEBACiAgICAgc2NyaXB0X2ZpbGUgPSBvcGVuKHNjcmlwdF9uYW1lLCAndycsIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgc2NyaXB0X2ZpbGUud3JpdGUoc291cmNlKQogICAgIHNjcmlwdF9maWxlLmNsb3NlKCkKKyAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgIHJldHVybiBzY3JpcHRfbmFtZQogCiBkZWYgbWFrZV96aXBfc2NyaXB0KHppcF9kaXIsIHppcF9iYXNlbmFtZSwgc2NyaXB0X25hbWUsIG5hbWVfaW5femlwPU5vbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5IGIvTGliL3Rlc3Qvc2VxX3Rlc3RzLnB5CmluZGV4IGY2NTVjMjkuLmYxODVhODIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NlcV90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9zZXFfdGVzdHMucHkKQEAgLTQsNiArNCw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cworaW1wb3J0IHBpY2tsZQogCiAjIFZhcmlvdXMgaXRlcmFibGVzCiAjIFRoaXMgaXMgdXNlZCBmb3IgY2hlY2tpbmcgdGhlIGNvbnN0cnVjdG9yIChoZXJlIGFuZCBpbiB0ZXN0X2RlcXVlLnB5KQpAQCAtMzg4LDMgKzM4OSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5pbmRleCgwLCAtNCpzeXMubWF4c2l6ZSwgNCpzeXMubWF4c2l6ZSksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEuaW5kZXgsIDAsIDQqc3lzLm1heHNpemUsLTQqc3lzLm1heHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEuaW5kZXgsIDIsIDAsIC0xMCkKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgbHN0ID0gc2VsZi50eXBlMnRlc3QoWzQsIDUsIDYsIDddKQorICAgICAgICBsc3QyID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhsc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdDIsIGxzdCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChsc3QyKSwgaWQobHN0KSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NvcnRwZXJmLnB5IGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKaW5kZXggMGNlODhkZS4uYWY3YzBiNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc29ydHBlcmYucHkKKysrIGIvTGliL3Rlc3Qvc29ydHBlcmYucHkKQEAgLTU3LDkgKzU3LDkgQEAKICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAogZGVmIGRvaXQoTCk6Ci0gICAgdDAgPSB0aW1lLmNsb2NrKCkKKyAgICB0MCA9IHRpbWUucGVyZl9jb3VudGVyKCkKICAgICBMLnNvcnQoKQotICAgIHQxID0gdGltZS5jbG9jaygpCisgICAgdDEgPSB0aW1lLnBlcmZfY291bnRlcigpCiAgICAgcHJpbnQoIiU2LjJmIiAlICh0MS10MCksIGVuZD0nICcpCiAgICAgZmx1c2goKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zc2xfa2V5LnBhc3N3ZC5wZW0gYi9MaWIvdGVzdC9zc2xfa2V5LnBhc3N3ZC5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjUyNDY3MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbQpAQCAtMCwwICsxLDE4IEBACistLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCitQcm9jLVR5cGU6IDQsRU5DUllQVEVECitERUstSW5mbzogREVTLUVERTMtQ0JDLDFBOEQ5RDJBMDJFQzY5OEEKKwora0pZYmZaOEwwc2ZlOU90eTNndzBhbG9Oblk1RThmZWdSZlFMWmxOb3hUbDZqTnQwbkl3SThrREozNkNaZ1I5YwordTNGREptL0txcmZVb3o4dlcrcUVuV2hTRzdRUFgyd1dHUEhkNEs5NFl6L0ZnclJ6WjBEb0s3WHhYcTlnT3RWQQorQVZHUWhuejMycCs2V2hmR3NDcjlBclhFd1JaclRrL0Z2ekVQYVU1Zkhjb1Nrck5WQUdYOElwU1ZrU0R3RURRcgorR3YxNytjZms5OVVWMU9DemE2eUtIb0ZrVHRyQytQWlU3MUxvbUJhYml2UzJPYzRCOWhZdVNSMmhGMDF3VEhQKworWWxXTmFnWk9PVnROejRvS0s5eDllTlFwbWZRWFF2UFBUZnVzZXhLSWJLZlpyTXZKb3hjbTFnZmNaMEgvd0s2UAorNndtWFNHMzVxTU9PenRDWk50cGVyanMxd3pFQlh6bnlLOFFtTGNBSkJqa2ZhckFCSlg5dkJFelpWME9VS2h5Kworbm9PUkZ3SFRsbHBoYm15ZExodTZlaExVWk1IUGh6QVM1VU43c3J0cFNOODFlZXJETXkwUk1VQXdBNy9Qb2ZYMQorOTRNZTg1UThqUDBQQzlFVGRzSmNQcUx6QVBFVEVZdTBFTGV3S1JjcmR5V2krdGxMRnJwRTVLVC9zNWVjYmw5bAorN0I2MVU0S2ZkMVBJWGMvc2lJTmhVM0EzYllLKzg0NVl5VUFyVU9uS2Yxa0VveDdwMVJwRDd5RnFWVDA0bFJUbworY2liTktBVEJ1c1hTdUJycDJHNkdOdWhXRU9TYWZXQ0tKUUF6Z0NZSXA2WlRWMmtoaE1VR3BwYy8ySDNDRjZjTworelgwS3RsUFZaQzdoTGtCNkhUOFN4WVV3RjF6cVdZNysvWFBQZGMzN01lRVo4N1EzVXVad3FPUkxZK1owaHBndAorTDVKWEJDb2tsWmhDQWFOMkdxd0ZMWHRHaVJTUkZHWTd4WEloYkRUbEU2NVd2MVdHR2dETE1LR0UxZ096M3lBbworMmpqRzEreUFISlVkRTY5WFRGSFNxU2t2YWxvQTFXMDNMZE1YWjlWdVFKL3lTWENpZTZBQkFRPT0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zc2xfc2VydmVycy5weSBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CmluZGV4IDc3YzA1NDIuLjg2ODYxNTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3NzbF9zZXJ2ZXJzLnB5CkBAIC05NCw3ICs5NCwxMiBAQAogICAgICAgICAiIiJTZXJ2ZSBhIEdFVCByZXF1ZXN0LiIiIgogICAgICAgICBzb2NrID0gc2VsZi5yZmlsZS5yYXcuX3NvY2sKICAgICAgICAgY29udGV4dCA9IHNvY2suY29udGV4dAotICAgICAgICBib2R5ID0gcHByaW50LnBmb3JtYXQoY29udGV4dC5zZXNzaW9uX3N0YXRzKCkpCisgICAgICAgIHN0YXRzID0geworICAgICAgICAgICAgJ3Nlc3Npb25fY2FjaGUnOiBjb250ZXh0LnNlc3Npb25fc3RhdHMoKSwKKyAgICAgICAgICAgICdjaXBoZXInOiBzb2NrLmNpcGhlcigpLAorICAgICAgICAgICAgJ2NvbXByZXNzaW9uJzogc29jay5jb21wcmVzc2lvbigpLAorICAgICAgICAgICAgfQorICAgICAgICBib2R5ID0gcHByaW50LnBmb3JtYXQoc3RhdHMpCiAgICAgICAgIGJvZHkgPSBib2R5LmVuY29kZSgndXRmLTgnKQogICAgICAgICBzZWxmLnNlbmRfcmVzcG9uc2UoMjAwKQogICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LXR5cGUiLCAidGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCIpCkBAIC0xNzIsNiArMTc3LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX2ZhbHNlJywgaGVscD0nYmUgbGVzcyB2ZXJib3NlJykKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXN0YXRzJywgZGVzdD0ndXNlX3N0YXRzX2hhbmRsZXInLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgaGVscD0nYWx3YXlzIHJldHVybiBzdGF0cyBwYWdlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWN1cnZlLW5hbWUnLCBkZXN0PSdjdXJ2ZV9uYW1lJywgdHlwZT1zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2N1cnZlIG5hbWUgZm9yIEVDLWJhc2VkIERpZmZpZS1IZWxsbWFuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWRoJywgZGVzdD0nZGhfZmlsZScsIHR5cGU9c3RyLCBhY3Rpb249J3N0b3JlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1BFTSBmaWxlIGNvbnRhaW5pbmcgREggcGFyYW1ldGVycycpCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIHN1cHBvcnQudmVyYm9zZSA9IGFyZ3MudmVyYm9zZQpAQCAtMTgyLDYgKzE5MiwxMCBAQAogICAgICAgICBoYW5kbGVyX2NsYXNzLnJvb3QgPSBvcy5nZXRjd2QoKQogICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgaWYgYXJncy5jdXJ2ZV9uYW1lOgorICAgICAgICBjb250ZXh0LnNldF9lY2RoX2N1cnZlKGFyZ3MuY3VydmVfbmFtZSkKKyAgICBpZiBhcmdzLmRoX2ZpbGU6CisgICAgICAgIGNvbnRleHQubG9hZF9kaF9wYXJhbXMoYXJncy5kaF9maWxlKQogCiAgICAgc2VydmVyID0gSFRUUFNTZXJ2ZXIoKCIiLCBhcmdzLnBvcnQpLCBoYW5kbGVyX2NsYXNzLCBjb250ZXh0KQogICAgIGlmIGFyZ3MudmVyYm9zZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weSBiL0xpYi90ZXN0L3N0cmluZ190ZXN0cy5weQppbmRleCA0MTNmOWRkLi5lNDY4OGQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9zdHJpbmdfdGVzdHMucHkKKysrIGIvTGliL3Rlc3Qvc3RyaW5nX3Rlc3RzLnB5CkBAIC0yOCw2ICsyOCwxMSBAQAogICAgICMgQ2hhbmdlIGluIHN1YmNsYXNzZXMgdG8gY2hhbmdlIHRoZSBiZWhhdmlvdXIgb2YgZml4dGVzdHR5cGUoKQogICAgIHR5cGUydGVzdCA9IE5vbmUKIAorICAgICMgV2hldGhlciB0aGUgImNvbnRhaW5lZCBpdGVtcyIgb2YgdGhlIGNvbnRhaW5lciBhcmUgaW50ZWdlcnMgaW4KKyAgICAjIHJhbmdlKDAsIDI1NikgKGkuZS4gYnl0ZXMsIGJ5dGVhcnJheSkgb3Igc3RyaW5ncyBvZiBsZW5ndGggMQorICAgICMgKHN0cikKKyAgICBjb250YWluc19ieXRlcyA9IEZhbHNlCisKICAgICAjIEFsbCB0ZXN0cyBwYXNzIHRoZWlyIGFyZ3VtZW50cyB0byB0aGUgdGVzdGluZyBtZXRob2RzCiAgICAgIyBhcyBzdHIgb2JqZWN0cy4gZml4dGVzdHR5cGUoKSBjYW4gYmUgdXNlZCB0byBwcm9wYWdhdGUKICAgICAjIHRoZXNlIGFyZ3VtZW50cyB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQpAQCAtNDcsMTEgKzUyLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gb2JqCiAKICAgICAjIGNoZWNrIHRoYXQgb2JqLm1ldGhvZCgqYXJncykgcmV0dXJucyByZXN1bHQKLSAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iaiwgbWV0aG9kbmFtZSwgKmFyZ3MpOgorICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqLCBtZXRob2RuYW1lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmZpeHR5cGUocmVzdWx0KQogICAgICAgICBvYmogPSBzZWxmLmZpeHR5cGUob2JqKQogICAgICAgICBhcmdzID0gc2VsZi5maXh0eXBlKGFyZ3MpCi0gICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iaiwgbWV0aG9kbmFtZSkoKmFyZ3MpCisgICAgICAgIGt3YXJncyA9IHtrOiBzZWxmLmZpeHR5cGUodikgZm9yIGssdiBpbiBrd2FyZ3MuaXRlbXMoKX0KKyAgICAgICAgcmVhbHJlc3VsdCA9IGdldGF0dHIob2JqLCBtZXRob2RuYW1lKSgqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICByZXN1bHQsCiAgICAgICAgICAgICByZWFscmVzdWx0CkBAIC0xMTYsNyArMTIyLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnJywgJ2NvdW50JywgJ3h4Jywgc3lzLm1heHNpemUsIDApCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdjb3VudCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnY291bnQnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdoZWxsbycsICdjb3VudCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdjb3VudCcsIDQyKQogCiAgICAgICAgICMgRm9yIGEgdmFyaWV0eSBvZiBjb21iaW5hdGlvbnMsCiAgICAgICAgICMgICAgdmVyaWZ5IHRoYXQgc3RyLmNvdW50KCkgbWF0Y2hlcyBhbiBlcXVpdmFsZW50IGZ1bmN0aW9uCkBAIC0xNjIsNyArMTcyLDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCggMiwgJ3JyYXJycnJycnJycmEnLCAnZmluZCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2ZpbmQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ2ZpbmQnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnaGVsbG8nLCAnZmluZCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdmaW5kJywgNDIpCiAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICcnLCAnZmluZCcsICcnKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICcnLCAnZmluZCcsICcnLCAxLCAxKQpAQCAtMjE2LDcgKzIzMCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ3JmaW5kJywgJ2EnLCBOb25lLCA2KQogCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmZpbmQnKQotICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2hlbGxvJywgJ3JmaW5kJywgNDIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JmaW5kJywgNDIpCiAKICAgICAgICAgIyBGb3IgYSB2YXJpZXR5IG9mIGNvbWJpbmF0aW9ucywKICAgICAgICAgIyAgICB2ZXJpZnkgdGhhdCBzdHIucmZpbmQoKSBtYXRjaGVzIF9fY29udGFpbnNfXwpAQCAtMjQ0LDYgKzI2Miw5IEBACiAgICAgICAgICMgaXNzdWUgNzQ1OAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdhYicsICdyZmluZCcsICd4eHgnLCBzeXMubWF4c2l6ZSArIDEsIDApCiAKKyAgICAgICAgIyBpc3N1ZSAjMTU1MzQKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICc8Li4uLi4uXHUwNDNjLi4uJywgInJmaW5kIiwgIjwiKQorCiAgICAgZGVmIHRlc3RfaW5kZXgoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnYWJjZGVmZ2hpYWJjJywgJ2luZGV4JywgJycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgzLCAnYWJjZGVmZ2hpYWJjJywgJ2luZGV4JywgJ2RlZicpCkBAIC0yNjMsNyArMjg0LDExIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbCggMiwgJ3JyYXJycnJycnJycmEnLCAnaW5kZXgnLCAnYScsIE5vbmUsIDYpCiAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdpbmRleCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnLCA0MikKKworICAgICAgICBpZiBzZWxmLmNvbnRhaW5zX2J5dGVzOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnLCA0MikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAnaW5kZXgnLCA0MikKIAogICAgIGRlZiB0ZXN0X3JpbmRleChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEyLCAnYWJjZGVmZ2hpYWJjJywgJ3JpbmRleCcsICcnKQpAQCAtMjg1LDcgKzMxMCwxMSBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoIDIsICdycmFycnJycnJycnJhJywgJ3JpbmRleCcsICdhJywgTm9uZSwgNikKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcpCi0gICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncmluZGV4JywgNDIpCisKKyAgICAgICAgaWYgc2VsZi5jb250YWluc19ieXRlczoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJ2hlbGxvJywgJ3JpbmRleCcsIDQyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICdoZWxsbycsICdyaW5kZXgnLCA0MikKIAogICAgIGRlZiB0ZXN0X2xvd2VyKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoJ2hlbGxvJywgJ0hlTExvJywgJ2xvd2VyJykKQEAgLTM2Myw2ICszOTIsMTcgQEAKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYSddKjE4ICsgWydhQkxBSGEnXSwgKCdhQkxBSCcqMjApWzotNF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAnc3BsaXQnLCAnQkxBSCcsIDE4KQogCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdiJywgJ2MnLCAnZCddLCAnYXxifGN8ZCcsICdzcGxpdCcsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYnxjfGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3NwbGl0JywgJ3wnLCBtYXhzcGxpdD0xKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhJywgJ2J8Y3xkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdzcGxpdCcsIHNlcD0nfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EnLCAnYnxjfGQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3NwbGl0JywgbWF4c3BsaXQ9MSwgc2VwPSd8JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdiIGMgZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2EgYiBjIGQnLCAnc3BsaXQnLCBtYXhzcGxpdD0xKQorCiAgICAgICAgICMgYXJndW1lbnQgdHlwZQogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2hlbGxvJywgJ3NwbGl0JywgNDIsIDQyLCA0MikKIApAQCAtNDIwLDYgKzQ2MCwxNyBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhQkxBSGEnXSArIFsnYSddKjE4LCAoJ2FCTEFIJyoyMClbOi00XSwKICAgICAgICAgICAgICAgICAgICAgICAgICdyc3BsaXQnLCAnQkxBSCcsIDE4KQogCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnYScsICdiJywgJ2MnLCAnZCddLCAnYXxifGN8ZCcsICdyc3BsaXQnLCBzZXA9J3wnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhfGJ8YycsICdkJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAnYXxifGN8ZCcsICdyc3BsaXQnLCAnfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2F8YnxjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3JzcGxpdCcsIHNlcD0nfCcsIG1heHNwbGl0PTEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2F8YnxjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhfGJ8Y3xkJywgJ3JzcGxpdCcsIG1heHNwbGl0PTEsIHNlcD0nfCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2EgYiBjJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdhIGIgYyBkJywgJ3JzcGxpdCcsIG1heHNwbGl0PTEpCisKICAgICAgICAgIyBhcmd1bWVudCB0eXBlCiAgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVHlwZUVycm9yLCAnaGVsbG8nLCAncnNwbGl0JywgNDIsIDQyLCA0MikKIApAQCAtNTQ5LDYgKzYwMCw4IEBACiAgICAgICAgIEVRKCJSZXlLS2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgImsiLCAiS0siLCAxKQogICAgICAgICBFUSgiUmV5a2phdmlrIiwgIlJleWtqYXZpayIsICJyZXBsYWNlIiwgImsiLCAiS0siLCAwKQogICAgICAgICBFUSgiQS0tLS1CLS0tLUMtLS0tIiwgIkEuQi5DLiIsICJyZXBsYWNlIiwgIi4iLCAiLS0tLSIpCisgICAgICAgICMgaXNzdWUgIzE1NTM0CisgICAgICAgIEVRKCcuLi5cdTA0M2MuLi4uLi4mbHQ7JywgJy4uLlx1MDQzYy4uLi4uLjwnLCAicmVwbGFjZSIsICI8IiwgIiZsdDsiKQogCiAgICAgICAgIEVRKCJSZXlramF2aWsiLCAiUmV5a2phdmlrIiwgInJlcGxhY2UiLCAicSIsICJLSyIpCiAKQEAgLTY0Myw3ICs2OTYsNyBAQAogCiAgICAgICAgICMgY2hlY2sgdGhhdCB0aXRsZWNhc2VkIGNoYXJzIGFyZSBsb3dlcmVkIGNvcnJlY3RseQogICAgICAgICAjIFx1MWZmYyBpcyB0aGUgdGl0bGVjYXNlZCBjaGFyCi0gICAgICAgIHNlbGYuY2hlY2tlcXVhbCgnXHUxZmZjXHUxZmYzXHUxZmYzXHUxZmYzJywKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdcdTAzYTlcdTAzOTlcdTFmZjNcdTFmZjNcdTFmZjMnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1x1MWZmM1x1MWZmM1x1MWZmY1x1MWZmYycsICdjYXBpdGFsaXplJykKICAgICAgICAgIyBjaGVjayB3aXRoIGNhc2VkIG5vbi1sZXR0ZXIgY2hhcnMKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKCdcdTI0YzVcdTI0ZThcdTI0ZTNcdTI0ZDdcdTI0ZGVcdTI0ZGQnLApAQCAtOTA4LDcgKzk2MSwxNCBAQAogICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydhYmMnLCAnZGVmJywgJ2doaSddLCAiYWJjXG5kZWZcclxuZ2hpXG4iLCAnc3BsaXRsaW5lcycpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnJywgJ2FiYycsICdkZWYnLCAnZ2hpJywgJyddLCAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnKQotICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydcbicsICdhYmNcbicsICdkZWZcclxuJywgJ2doaVxuJywgJ1xyJ10sICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIDEpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbChbJycsICdhYmMnLCAnZGVmJywgJ2doaScsICcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLCAnc3BsaXRsaW5lcycsIEZhbHNlKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWydcbicsICdhYmNcbicsICdkZWZcclxuJywgJ2doaVxuJywgJ1xyJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAiXG5hYmNcbmRlZlxyXG5naGlcblxyIiwgJ3NwbGl0bGluZXMnLCBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoWycnLCAnYWJjJywgJ2RlZicsICdnaGknLCAnJ10sICJcbmFiY1xuZGVmXHJcbmdoaVxuXHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NwbGl0bGluZXMnLCBrZWVwZW5kcz1GYWxzZSkKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKFsnXG4nLCAnYWJjXG4nLCAnZGVmXHJcbicsICdnaGlcbicsICdcciddLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxuYWJjXG5kZWZcclxuZ2hpXG5cciIsICdzcGxpdGxpbmVzJywga2VlcGVuZHM9VHJ1ZSkKIAogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2FiYycsICdzcGxpdGxpbmVzJywgNDIsIDQyKQogCkBAIC0xMTQyLDYgKzEyMDIsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhUeXBlRXJyb3IsICclMTAuKmYnLCAnX19tb2RfXycsICgnZm9vJywgNDIuKSkKICAgICAgICAgc2VsZi5jaGVja3JhaXNlcyhWYWx1ZUVycm9yLCAnJTEwJywgJ19fbW9kX18nLCAoNDIsKSkKIAorICAgICAgICAjIE91dHJhZ2VvdXNseSBsYXJnZSB3aWR0aCBvciBwcmVjaXNpb24gc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IuCisgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUlJWRmJyAlICgyKio2NCksICdfX21vZF9fJywgKDMuMikpCisgICAgICAgIHNlbGYuY2hlY2tyYWlzZXMoVmFsdWVFcnJvciwgJyUlLiVkZicgJSAoMioqNjQpLCAnX19tb2RfXycsICgzLjIpKQorCiAgICAgICAgIGNsYXNzIFgob2JqZWN0KTogcGFzcwogICAgICAgICBzZWxmLmNoZWNrcmFpc2VzKFR5cGVFcnJvciwgJ2FiYycsICdfX21vZF9fJywgWCgpKQogCkBAIC0xMjYwLDYgKzEzMjQsOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgcideZW5kc3dpdGhcKCcsIHMuZW5kc3dpdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsIE5vbmUsIE5vbmUsIE5vbmUpCiAKKyAgICAgICAgIyBpc3N1ZSAjMTU1MzQKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwLCAiLi4uXHUwNDNjLi4uLi4uPCIsICJmaW5kIiwgIjwiKQorCiAKIGNsYXNzIE1peGluU3RyVW5pY29kZVRlc3Q6CiAgICAgIyBBZGRpdGlvbmFsIHRlc3RzIHRoYXQgb25seSB3b3JrIHdpdGggc3RyIGFuZCB1bmljb2RlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3VwcG9ydC5weSBiL0xpYi90ZXN0L3N1cHBvcnQucHkKaW5kZXggZTFlYzllMi4uYzU2NDBlMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC9zdXBwb3J0LnB5CkBAIC0xNSw3ICsxNSw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGltcG9ydGxpYgotaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgaW1wCkBAIC0zNywyNiArMzcsNDEgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICBtdWx0aXByb2Nlc3NpbmcgPSBOb25lCiAKK3RyeToKKyAgICBpbXBvcnQgemxpYgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHpsaWIgPSBOb25lCisKK3RyeToKKyAgICBpbXBvcnQgYnoyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IGx6bWEKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBsem1hID0gTm9uZQogCiBfX2FsbF9fID0gWwotICAgICJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLAotICAgICJ2ZXJib3NlIiwgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKKyAgICAiRXJyb3IiLCAiVGVzdEZhaWxlZCIsICJSZXNvdXJjZURlbmllZCIsICJpbXBvcnRfbW9kdWxlIiwgInZlcmJvc2UiLAorICAgICJ1c2VfcmVzb3VyY2VzIiwgIm1heF9tZW11c2UiLCAicmVjb3JkX29yaWdpbmFsX3N0ZG91dCIsCiAgICAgImdldF9vcmlnaW5hbF9zdGRvdXQiLCAidW5sb2FkIiwgInVubGluayIsICJybXRyZWUiLCAiZm9yZ2V0IiwKLSAgICAiaXNfcmVzb3VyY2VfZW5hYmxlZCIsICJyZXF1aXJlcyIsICJyZXF1aXJlc19tYWNfdmVyIiwKLSAgICAiZmluZF91bnVzZWRfcG9ydCIsICJiaW5kX3BvcnQiLAotICAgICJmY21wIiwgImlzX2p5dGhvbiIsICJURVNURk4iLCAiSE9TVCIsICJGVVpaIiwgIlNBVkVEQ1dEIiwgInRlbXBfY3dkIiwKLSAgICAiZmluZGZpbGUiLCAic29ydGRpY3QiLCAiY2hlY2tfc3ludGF4X2Vycm9yIiwgIm9wZW5fdXJscmVzb3VyY2UiLAotICAgICJjaGVja193YXJuaW5ncyIsICJDbGVhbkltcG9ydCIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwKLSAgICAiVHJhbnNpZW50UmVzb3VyY2UiLCAiY2FwdHVyZWRfb3V0cHV0IiwgImNhcHR1cmVkX3N0ZG91dCIsCi0gICAgImNhcHR1cmVkX3N0ZGluIiwgImNhcHR1cmVkX3N0ZGVyciIsCi0gICAgInRpbWVfb3V0IiwgInNvY2tldF9wZWVyX3Jlc2V0IiwgImlvZXJyb3JfcGVlcl9yZXNldCIsCi0gICAgInJ1bl93aXRoX2xvY2FsZSIsICd0ZW1wX3VtYXNrJywgInRyYW5zaWVudF9pbnRlcm5ldCIsCi0gICAgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLCAiQmFzaWNUZXN0UnVubmVyIiwKLSAgICAicnVuX3VuaXR0ZXN0IiwgInJ1bl9kb2N0ZXN0IiwgInRocmVhZGluZ19zZXR1cCIsICJ0aHJlYWRpbmdfY2xlYW51cCIsCi0gICAgInJlYXBfY2hpbGRyZW4iLCAiY3B5dGhvbl9vbmx5IiwgImNoZWNrX2ltcGxfZGV0YWlsIiwgImdldF9hdHRyaWJ1dGUiLAotICAgICJzd2FwX2l0ZW0iLCAic3dhcF9hdHRyIiwgInJlcXVpcmVzX0lFRUVfNzU0IiwKKyAgICAiaXNfcmVzb3VyY2VfZW5hYmxlZCIsICJyZXF1aXJlcyIsICJyZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24iLAorICAgICJyZXF1aXJlc19saW51eF92ZXJzaW9uIiwgInJlcXVpcmVzX21hY192ZXIiLCAiZmluZF91bnVzZWRfcG9ydCIsCisgICAgImJpbmRfcG9ydCIsICJJUFY2X0VOQUJMRUQiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIlNBVkVEQ1dEIiwKKyAgICAidGVtcF9jd2QiLCAiZmluZGZpbGUiLCAiY3JlYXRlX2VtcHR5X2ZpbGUiLCAic29ydGRpY3QiLAorICAgICJjaGVja19zeW50YXhfZXJyb3IiLCAib3Blbl91cmxyZXNvdXJjZSIsICJjaGVja193YXJuaW5ncyIsICJDbGVhbkltcG9ydCIsCisgICAgIkVudmlyb25tZW50VmFyR3VhcmQiLCAiVHJhbnNpZW50UmVzb3VyY2UiLCAiY2FwdHVyZWRfc3Rkb3V0IiwKKyAgICAiY2FwdHVyZWRfc3RkaW4iLCAiY2FwdHVyZWRfc3RkZXJyIiwgInRpbWVfb3V0IiwgInNvY2tldF9wZWVyX3Jlc2V0IiwKKyAgICAiaW9lcnJvcl9wZWVyX3Jlc2V0IiwgInJ1bl93aXRoX2xvY2FsZSIsICd0ZW1wX3VtYXNrJywKKyAgICAidHJhbnNpZW50X2ludGVybmV0IiwgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLAorICAgICJCYXNpY1Rlc3RSdW5uZXIiLCAicnVuX3VuaXR0ZXN0IiwgInJ1bl9kb2N0ZXN0IiwgInRocmVhZGluZ19zZXR1cCIsCisgICAgInRocmVhZGluZ19jbGVhbnVwIiwgInJlYXBfY2hpbGRyZW4iLCAiY3B5dGhvbl9vbmx5IiwgImNoZWNrX2ltcGxfZGV0YWlsIiwKKyAgICAiZ2V0X2F0dHJpYnV0ZSIsICJzd2FwX2l0ZW0iLCAic3dhcF9hdHRyIiwgInJlcXVpcmVzX0lFRUVfNzU0IiwKICAgICAiVGVzdEhhbmRsZXIiLCAiTWF0Y2hlciIsICJjYW5fc3ltbGluayIsICJza2lwX3VubGVzc19zeW1saW5rIiwKLSAgICAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJmYWlsZmFzdCIsICJydW5fd2l0aF90eiIKKyAgICAic2tpcF91bmxlc3NfeGF0dHIiLCAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJyZXF1aXJlc196bGliIiwKKyAgICAiUElQRV9NQVhfU0laRSIsICJmYWlsZmFzdCIsICJhbnRpY2lwYXRlX2ZhaWx1cmUiLCAicnVuX3dpdGhfdHoiLAorICAgICJyZXF1aXJlc19iejIiLCAicmVxdWlyZXNfbHptYSIKICAgICBdCiAKIGNsYXNzIEVycm9yKEV4Y2VwdGlvbik6CkBAIC0xMjcsNiArMTQyLDE3IEBACiAgICAgcmV0dXJuIHNhdmVkCiAKIAorZGVmIGFudGljaXBhdGVfZmFpbHVyZShjb25kaXRpb24pOgorICAgICIiIkRlY29yYXRvciB0byBtYXJrIGEgdGVzdCB0aGF0IGlzIGtub3duIHRvIGJlIGJyb2tlbiBpbiBzb21lIGNhc2VzCisKKyAgICAgICBBbnkgdXNlIG9mIHRoaXMgZGVjb3JhdG9yIHNob3VsZCBoYXZlIGEgY29tbWVudCBpZGVudGlmeWluZyB0aGUKKyAgICAgICBhc3NvY2lhdGVkIHRyYWNrZXIgaXNzdWUuCisgICAgIiIiCisgICAgaWYgY29uZGl0aW9uOgorICAgICAgICByZXR1cm4gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgcmV0dXJuIGxhbWJkYSBmOiBmCisKKwogZGVmIGltcG9ydF9mcmVzaF9tb2R1bGUobmFtZSwgZnJlc2g9KCksIGJsb2NrZWQ9KCksIGRlcHJlY2F0ZWQ9RmFsc2UpOgogICAgICIiIkltcG9ydHMgYW5kIHJldHVybnMgYSBtb2R1bGUsIGRlbGliZXJhdGVseSBieXBhc3NpbmcgdGhlIHN5cy5tb2R1bGVzIGNhY2hlCiAgICAgYW5kIGltcG9ydGluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIG1vZHVsZS4gT25jZSB0aGUgaW1wb3J0IGlzIGNvbXBsZXRlLApAQCAtMTcwLDggKzE5Niw3IEBACiAgICAgdHJ5OgogICAgICAgICBhdHRyaWJ1dGUgPSBnZXRhdHRyKG9iaiwgbmFtZSkKICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJtb2R1bGUgJXMgaGFzIG5vIGF0dHJpYnV0ZSAlcyIgJSAoCi0gICAgICAgICAgICBvYmouX19uYW1lX18sIG5hbWUpKQorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgib2JqZWN0ICVyIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKG9iaiwgbmFtZSkpCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZQogCkBAIC0yNzYsOCArMzAxLDcgQEAKICAgICB0cnk6CiAgICAgICAgIF9ybXRyZWUocGF0aCkKICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKLSAgICAgICAgIyBVbml4IHJldHVybnMgRU5PRU5ULCBXaW5kb3dzIHJldHVybnMgRVNSQ0guCi0gICAgICAgIGlmIGVycm9yLmVycm5vIG5vdCBpbiAoZXJybm8uRU5PRU5ULCBlcnJuby5FU1JDSCk6CisgICAgICAgIGlmIGVycm9yLmVycm5vICE9IGVycm5vLkVOT0VOVDoKICAgICAgICAgICAgIHJhaXNlCiAKIGRlZiBtYWtlX2xlZ2FjeV9weWMoc291cmNlKToKQEAgLTM2Miw5ICszODYsNTIgQEAKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpOgogICAgICAgICBpZiBtc2cgaXMgTm9uZToKLSAgICAgICAgICAgIG1zZyA9ICJVc2Ugb2YgdGhlIGAlcycgcmVzb3VyY2Ugbm90IGVuYWJsZWQiICUgcmVzb3VyY2UKKyAgICAgICAgICAgIG1zZyA9ICJVc2Ugb2YgdGhlICVyIHJlc291cmNlIG5vdCBlbmFibGVkIiAlIHJlc291cmNlCiAgICAgICAgIHJhaXNlIFJlc291cmNlRGVuaWVkKG1zZykKIAorZGVmIF9yZXF1aXJlc191bml4X3ZlcnNpb24oc3lzbmFtZSwgbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBgc3lzbmFtZWAgYW5kIHRoZSB2ZXJzaW9uIGlzIGxlc3MKKyAgICB0aGFuIGBtaW5fdmVyc2lvbmAuCisKKyAgICBGb3IgZXhhbXBsZSwgQF9yZXF1aXJlc191bml4X3ZlcnNpb24oJ0ZyZWVCU0QnLCAoNywgMikpIHJhaXNlcyBTa2lwVGVzdCBpZgorICAgIHRoZSBGcmVlQlNEIHZlcnNpb24gaXMgbGVzcyB0aGFuIDcuMi4KKyAgICAiIiIKKyAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09IHN5c25hbWU6CisgICAgICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5yZWxlYXNlKCkuc3BsaXQoJy0nLCAxKVswXQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIHZlcnNpb25fdHh0LnNwbGl0KCcuJykpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgdmVyc2lvbiA8IG1pbl92ZXJzaW9uOgorICAgICAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb25fdHh0ID0gJy4nLmpvaW4obWFwKHN0ciwgbWluX3ZlcnNpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIHZlcnNpb24gJXMgb3IgaGlnaGVyIHJlcXVpcmVkLCBub3QgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc3lzbmFtZSwgbWluX3ZlcnNpb25fdHh0LCB2ZXJzaW9uX3R4dCkpCisgICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgcmV0dXJuIGRlY29yYXRvcgorCitkZWYgcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKCptaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIEZyZWVCU0QgYW5kIHRoZSBGcmVlQlNEIHZlcnNpb24gaXMKKyAgICBsZXNzIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAcmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDcsIDIpIHJhaXNlcyBTa2lwVGVzdCBpZiB0aGUgRnJlZUJTRAorICAgIHZlcnNpb24gaXMgbGVzcyB0aGFuIDcuMi4KKyAgICAiIiIKKyAgICByZXR1cm4gX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignRnJlZUJTRCcsIG1pbl92ZXJzaW9uKQorCitkZWYgcmVxdWlyZXNfbGludXhfdmVyc2lvbigqbWluX3ZlcnNpb24pOgorICAgICIiIkRlY29yYXRvciByYWlzaW5nIFNraXBUZXN0IGlmIHRoZSBPUyBpcyBMaW51eCBhbmQgdGhlIExpbnV4IHZlcnNpb24gaXMKKyAgICBsZXNzIHRoYW4gYG1pbl92ZXJzaW9uYC4KKworICAgIEZvciBleGFtcGxlLCBAcmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAzMikgcmFpc2VzIFNraXBUZXN0IGlmIHRoZSBMaW51eAorICAgIHZlcnNpb24gaXMgbGVzcyB0aGFuIDIuNi4zMi4KKyAgICAiIiIKKyAgICByZXR1cm4gX3JlcXVpcmVzX3VuaXhfdmVyc2lvbignTGludXgnLCBtaW5fdmVyc2lvbikKKwogZGVmIHJlcXVpcmVzX21hY192ZXIoKm1pbl92ZXJzaW9uKToKICAgICAiIiJEZWNvcmF0b3IgcmFpc2luZyBTa2lwVGVzdCBpZiB0aGUgT1MgaXMgTWFjIE9TIFggYW5kIHRoZSBPUyBYCiAgICAgdmVyc2lvbiBpZiBsZXNzIHRoYW4gbWluX3ZlcnNpb24uCkBAIC0zOTIsNiArNDU5LDcgQEAKICAgICAgICAgcmV0dXJuIHdyYXBwZXIKICAgICByZXR1cm4gZGVjb3JhdG9yCiAKKwogSE9TVCA9ICdsb2NhbGhvc3QnCiAKIGRlZiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKToKQEAgLTQ4NywyOSArNTU1LDQxIEBACiAgICAgcG9ydCA9IHNvY2suZ2V0c29ja25hbWUoKVsxXQogICAgIHJldHVybiBwb3J0CiAKLUZVWlogPSAxZS02Ci0KLWRlZiBmY21wKHgsIHkpOiAjIGZ1enp5IGNvbXBhcmlzb24gZnVuY3Rpb24KLSAgICBpZiBpc2luc3RhbmNlKHgsIGZsb2F0KSBvciBpc2luc3RhbmNlKHksIGZsb2F0KToKK2RlZiBfaXNfaXB2Nl9lbmFibGVkKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBJUHY2IGlzIGVuYWJsZWQgb24gdGhpcyBob3N0LiIiIgorICAgIGlmIHNvY2tldC5oYXNfaXB2NjoKKyAgICAgICAgc29jayA9IE5vbmUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnV6eiA9IChhYnMoeCkgKyBhYnMoeSkpICogRlVaWgotICAgICAgICAgICAgaWYgYWJzKHgteSkgPD0gZnV6ejoKLSAgICAgICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNvY2suYmluZCgoJzo6MScsIDApKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZXhjZXB0IChzb2NrZXQuZXJyb3IsIHNvY2tldC5nYWllcnJvcik6CiAgICAgICAgICAgICBwYXNzCi0gICAgZWxpZiB0eXBlKHgpID09IHR5cGUoeSkgYW5kIGlzaW5zdGFuY2UoeCwgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgIGZvciBpIGluIHJhbmdlKG1pbihsZW4oeCksIGxlbih5KSkpOgotICAgICAgICAgICAgb3V0Y29tZSA9IGZjbXAoeFtpXSwgeVtpXSkKLSAgICAgICAgICAgIGlmIG91dGNvbWUgIT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gb3V0Y29tZQotICAgICAgICByZXR1cm4gKGxlbih4KSA+IGxlbih5KSkgLSAobGVuKHgpIDwgbGVuKHkpKQotICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgc29jazoKKyAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICByZXR1cm4gRmFsc2UKKworSVBWNl9FTkFCTEVEID0gX2lzX2lwdjZfZW5hYmxlZCgpCisKKworIyBBIGNvbnN0YW50IGxpa2VseSBsYXJnZXIgdGhhbiB0aGUgdW5kZXJseWluZyBPUyBwaXBlIGJ1ZmZlciBzaXplLgorIyBXaW5kb3dzIGxpbWl0IHNlZW1zIHRvIGJlIGFyb3VuZCA1MTJCLCBhbmQgbW9zdCBVbml4IGtlcm5lbHMgaGF2ZSBhIDY0SyBwaXBlCisjIGJ1ZmZlciBzaXplOiB0YWtlIDFNIHRvIGJlIHN1cmUuCitQSVBFX01BWF9TSVpFID0gMTAyNCAqIDEwMjQKKwogCiAjIGRlY29yYXRvciBmb3Igc2tpcHBpbmcgdGVzdHMgb24gbm9uLUlFRUUgNzU0IHBsYXRmb3JtcwogcmVxdWlyZXNfSUVFRV83NTQgPSB1bml0dGVzdC5za2lwVW5sZXNzKAogICAgIGZsb2F0Ll9fZ2V0Zm9ybWF0X18oImRvdWJsZSIpLnN0YXJ0c3dpdGgoIklFRUUiKSwKICAgICAidGVzdCByZXF1aXJlcyBJRUVFIDc1NCBkb3VibGVzIikKIAorcmVxdWlyZXNfemxpYiA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgJ3JlcXVpcmVzIHpsaWInKQorCityZXF1aXJlc19iejIgPSB1bml0dGVzdC5za2lwVW5sZXNzKGJ6MiwgJ3JlcXVpcmVzIGJ6MicpCisKK3JlcXVpcmVzX2x6bWEgPSB1bml0dGVzdC5za2lwVW5sZXNzKGx6bWEsICdyZXF1aXJlcyBsem1hJykKKwogaXNfanl0aG9uID0gc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKQogCiAjIEZpbGVuYW1lIHVzZWQgZm9yIHRlc3RpbmcKQEAgLTYxMCwxNCArNjkwLDE1IEBACiAgICAgICAgICAgICBybXRyZWUobmFtZSkKIAogCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIHRlbXBfdW1hc2sodW1hc2spOgotICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suIiIiCi0gICAgb2xkbWFzayA9IG9zLnVtYXNrKHVtYXNrKQotICAgIHRyeToKLSAgICAgICAgeWllbGQKLSAgICBmaW5hbGx5OgotICAgICAgICBvcy51bWFzayhvbGRtYXNrKQoraWYgaGFzYXR0cihvcywgInVtYXNrIik6CisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKKyAgICBkZWYgdGVtcF91bWFzayh1bWFzayk6CisgICAgICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IHRlbXBvcmFyaWx5IHNldHMgdGhlIHByb2Nlc3MgdW1hc2suIiIiCisgICAgICAgIG9sZG1hc2sgPSBvcy51bWFzayh1bWFzaykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVtYXNrKG9sZG1hc2spCiAKIAogZGVmIGZpbmRmaWxlKGZpbGUsIGhlcmU9X19maWxlX18sIHN1YmRpcj1Ob25lKToKQEAgLTYzNSw2ICs3MTYsMTEgQEAKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZm4pOiByZXR1cm4gZm4KICAgICByZXR1cm4gZmlsZQogCitkZWYgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpOgorICAgICIiIkNyZWF0ZSBhbiBlbXB0eSBmaWxlLiBJZiB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cywgdHJ1bmNhdGUgaXQuIiIiCisgICAgZmQgPSBvcy5vcGVuKGZpbGVuYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQgfCBvcy5PX1RSVU5DKQorICAgIG9zLmNsb3NlKGZkKQorCiBkZWYgc29ydGRpY3QoZGljdCk6CiAgICAgIkxpa2UgcmVwcihkaWN0KSwgYnV0IGluIHNvcnRlZCBvcmRlci4iCiAgICAgaXRlbXMgPSBzb3J0ZWQoZGljdC5pdGVtcygpKQpAQCAtNjk5LDcgKzc4NSw3IEBACiAgICAgZiA9IGNoZWNrX3ZhbGlkX2ZpbGUoZm4pCiAgICAgaWYgZiBpcyBub3QgTm9uZToKICAgICAgICAgcmV0dXJuIGYKLSAgICByYWlzZSBUZXN0RmFpbGVkKCdpbnZhbGlkIHJlc291cmNlICIlcyInICUgZm4pCisgICAgcmFpc2UgVGVzdEZhaWxlZCgnaW52YWxpZCByZXNvdXJjZSAlcicgJSBmbikKIAogCiBjbGFzcyBXYXJuaW5nc1JlY29yZGVyKG9iamVjdCk6CkBAIC04MjAsNyArOTA2LDcgQEAKICAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKHNlbGYub3JpZ2luYWxfbW9kdWxlcykKIAogCi1jbGFzcyBFbnZpcm9ubWVudFZhckd1YXJkKGNvbGxlY3Rpb25zLk11dGFibGVNYXBwaW5nKToKK2NsYXNzIEVudmlyb25tZW50VmFyR3VhcmQoY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nKToKIAogICAgICIiIkNsYXNzIHRvIGhlbHAgcHJvdGVjdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgcHJvcGVybHkuICBDYW4gYmUgdXNlZCBhcwogICAgIGEgY29udGV4dCBtYW5hZ2VyLiIiIgpAQCAtOTUxLDcgKzEwMzcsNyBAQAogICAgICAgICAoJ1dTQU5PX0RBVEEnLCAxMTAwNCksCiAgICAgXQogCi0gICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICclcycgaXMgbm90IGF2YWlsYWJsZSIgJSByZXNvdXJjZV9uYW1lKQorICAgIGRlbmllZCA9IFJlc291cmNlRGVuaWVkKCJSZXNvdXJjZSAlciBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCiAgICAgY2FwdHVyZWRfZXJybm9zID0gZXJybm9zCiAgICAgZ2FpX2Vycm5vcyA9IFtdCiAgICAgaWYgbm90IGNhcHR1cmVkX2Vycm5vczoKQEAgLTEwNDAsNiArMTEyNiwxNiBAQAogICAgIGdjLmNvbGxlY3QoKQogICAgIGdjLmNvbGxlY3QoKQogCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGRpc2FibGVfZ2MoKToKKyAgICBoYXZlX2djID0gZ2MuaXNlbmFibGVkKCkKKyAgICBnYy5kaXNhYmxlKCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgaWYgaGF2ZV9nYzoKKyAgICAgICAgICAgIGdjLmVuYWJsZSgpCisKIAogZGVmIHB5dGhvbl9pc19vcHRpbWl6ZWQoKToKICAgICAiIiJGaW5kIGlmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCBvcHRpbWl6YXRpb25zLiIiIgpAQCAtMTA0OCwxOSArMTE0NCwyMSBAQAogICAgIGZvciBvcHQgaW4gY2ZsYWdzLnNwbGl0KCk6CiAgICAgICAgIGlmIG9wdC5zdGFydHN3aXRoKCctTycpOgogICAgICAgICAgICAgZmluYWxfb3B0ID0gb3B0Ci0gICAgcmV0dXJuIGZpbmFsX29wdCBhbmQgZmluYWxfb3B0ICE9ICctTzAnCisgICAgcmV0dXJuIGZpbmFsX29wdCAhPSAnJyBhbmQgZmluYWxfb3B0ICE9ICctTzAnCiAKIAotX2hlYWRlciA9ICcyUCcKK19oZWFkZXIgPSAnblAnCitfYWxpZ24gPSAnMG4nCiBpZiBoYXNhdHRyKHN5cywgImdldHRvdGFscmVmY291bnQiKToKICAgICBfaGVhZGVyID0gJzJQJyArIF9oZWFkZXIKLV92aGVhZGVyID0gX2hlYWRlciArICdQJworICAgIF9hbGlnbiA9ICcwUCcKK192aGVhZGVyID0gX2hlYWRlciArICduJwogCiBkZWYgY2FsY29ianNpemUoZm10KToKLSAgICByZXR1cm4gc3RydWN0LmNhbGNzaXplKF9oZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArIF9hbGlnbikKIAogZGVmIGNhbGN2b2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyAnMFAnKQorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyBfYWxpZ24pCiAKIAogX1RQRkxBR1NfSEFWRV9HQyA9IDE8PDE0CkBAIC0xMTM0LDcgKzEyMzIsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3ZHMpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9yaWdfdHogPT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiBvcmlnX3R6IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydUWiddCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IG9yaWdfdHoKQEAgLTExNzksNDEgKzEyNzcsMzUgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTWVtb3J5IGxpbWl0ICVyIHRvbyBsb3cgdG8gYmUgdXNlZnVsJyAlIChsaW1pdCwpKQogICAgIG1heF9tZW11c2UgPSBtZW1saW1pdAogCi1kZWYgX21lbW9yeV93YXRjaGRvZyhzdGFydF9ldnQsIGZpbmlzaF9ldnQsIHBlcmlvZD0xMC4wKToKLSAgICAiIiJBIGZ1bmN0aW9uIHdoaWNoIHBlcmlvZGljYWxseSB3YXRjaGVzIHRoZSBwcm9jZXNzJyBtZW1vcnkgY29uc3VtcHRpb24KK2NsYXNzIF9NZW1vcnlXYXRjaGRvZzoKKyAgICAiIiJBbiBvYmplY3Qgd2hpY2ggcGVyaW9kaWNhbGx5IHdhdGNoZXMgdGhlIHByb2Nlc3MnIG1lbW9yeSBjb25zdW1wdGlvbgogICAgIGFuZCBwcmludHMgaXQgb3V0LgogICAgICIiIgotICAgICMgWFhYOiBiZWNhdXNlIG9mIHRoZSBHSUwsIGFuZCBiZWNhdXNlIHRoZSB2ZXJ5IGxvbmcgb3BlcmF0aW9ucyB0ZXN0ZWQKLSAgICAjIGluIG1vc3QgYmlnbWVtIHRlc3RzIGFyZSB1bmludGVycnVwdGlibGUsIHRoZSBsb29wIGJlbG93IGdldHMgd29rZW4gdXAKLSAgICAjIG11Y2ggbGVzcyBvZnRlbiB0aGFuIGV4cGVjdGVkLgotICAgICMgVGhlIHBvbGxpbmcgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIHJhdyBDLCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCwKLSAgICAjIGFuZCBwdXNoIHJlc3VsdHMgb250byBhbiBhbm9ueW1vdXMgcGlwZS4KLSAgICB0cnk6Ci0gICAgICAgIHBhZ2Vfc2l6ZSA9IG9zLnN5c2NvbmYoJ1NDX1BBR0VTSVpFJykKLSAgICBleGNlcHQgKFZhbHVlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5wcm9jZmlsZSA9ICcvcHJvYy97cGlkfS9zdGF0bScuZm9ybWF0KHBpZD1vcy5nZXRwaWQoKSkKKyAgICAgICAgc2VsZi5zdGFydGVkID0gRmFsc2UKKworICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGFnZV9zaXplID0gb3Muc3lzY29uZignU0NfUEFHRV9TSVpFJykKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICBwYWdlX3NpemUgPSA0MDk2Ci0gICAgcHJvY2ZpbGUgPSAnL3Byb2Mve3BpZH0vc3RhdG0nLmZvcm1hdChwaWQ9b3MuZ2V0cGlkKCkpCi0gICAgdHJ5OgotICAgICAgICBmID0gb3Blbihwcm9jZmlsZSwgJ3JiJykKLSAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAgICB3YXJuaW5ncy53YXJuKCcvcHJvYyBub3QgYXZhaWxhYmxlIGZvciBzdGF0czoge30nLmZvcm1hdChlKSwKLSAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKLSAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgIHJldHVybgotICAgIHdpdGggZjoKLSAgICAgICAgc3RhcnRfZXZ0LnNldCgpCi0gICAgICAgIG9sZF9kYXRhID0gLTEKLSAgICAgICAgd2hpbGUgbm90IGZpbmlzaF9ldnQud2FpdChwZXJpb2QpOgotICAgICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgICAgICBzdGF0bSA9IGYucmVhZCgpLmRlY29kZSgnYXNjaWknKQotICAgICAgICAgICAgZGF0YSA9IGludChzdGF0bS5zcGxpdCgpWzVdKQotICAgICAgICAgICAgaWYgZGF0YSAhPSBvbGRfZGF0YToKLSAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IGRhdGEKLSAgICAgICAgICAgICAgICBwcmludCgiIC4uLiBwcm9jZXNzIGRhdGEgc2l6ZToge2RhdGE6LjFmfUciCi0gICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZGF0YT1kYXRhICogcGFnZV9zaXplIC8gKDEwMjQgKiogMykpKQorICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5wcm9jZmlsZSwgJ3InKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgd2FybmluZ3Mud2FybignL3Byb2Mgbm90IGF2YWlsYWJsZSBmb3Igc3RhdHM6IHt9Jy5mb3JtYXQoZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB3YXRjaGRvZ19zY3JpcHQgPSBmaW5kZmlsZSgibWVtb3J5X3dhdGNoZG9nLnB5IikKKyAgICAgICAgc2VsZi5tZW1fd2F0Y2hkb2cgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgd2F0Y2hkb2dfc2NyaXB0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPWYsIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLnN0YXJ0ZWQgPSBUcnVlCisKKyAgICBkZWYgc3RvcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zdGFydGVkOgorICAgICAgICAgICAgc2VsZi5tZW1fd2F0Y2hkb2cudGVybWluYXRlKCkKKyAgICAgICAgICAgIHNlbGYubWVtX3dhdGNoZG9nLndhaXQoKQorCiAKIGRlZiBiaWdtZW10ZXN0KHNpemUsIG1lbXVzZSwgZHJ5X3J1bj1UcnVlKToKICAgICAiIiJEZWNvcmF0b3IgZm9yIGJpZ21lbSB0ZXN0cy4KQEAgLTEyNDAsMjcgKzEzMzIsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5OiAlLjFmRyBtaW5pbXVtIG5lZWRlZCIKICAgICAgICAgICAgICAgICAgICAgJSAoc2l6ZSAqIG1lbXVzZSAvICgxMDI0ICoqIDMpKSkKIAotICAgICAgICAgICAgaWYgcmVhbF9tYXhfbWVtdXNlIGFuZCB2ZXJib3NlIGFuZCB0aHJlYWRpbmc6CisgICAgICAgICAgICBpZiByZWFsX21heF9tZW11c2UgYW5kIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJpbnQoKQogICAgICAgICAgICAgICAgIHByaW50KCIgLi4uIGV4cGVjdGVkIHBlYWsgbWVtb3J5IHVzZToge3BlYWs6LjFmfUciCiAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdChwZWFrPXNpemUgKiBtZW11c2UgLyAoMTAyNCAqKiAzKSkpCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCi0gICAgICAgICAgICAgICAgc3RhcnRfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgICAgICAgICBmaW5pc2hfZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9X21lbW9yeV93YXRjaGRvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzdGFydF9ldnQsIGZpbmlzaF9ldnQsIDAuNSkpCi0gICAgICAgICAgICAgICAgdC5kYWVtb24gPSBUcnVlCi0gICAgICAgICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgICAgICAgICAgc3RhcnRfZXZ0LnNldCgpCisgICAgICAgICAgICAgICAgd2F0Y2hkb2cgPSBfTWVtb3J5V2F0Y2hkb2coKQorICAgICAgICAgICAgICAgIHdhdGNoZG9nLnN0YXJ0KCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdCA9IE5vbmUKKyAgICAgICAgICAgICAgICB3YXRjaGRvZyA9IE5vbmUKIAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIG1heHNpemUpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIHQ6Ci0gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9ldnQuc2V0KCkKLSAgICAgICAgICAgICAgICAgICAgdC5qb2luKCkKKyAgICAgICAgICAgICAgICBpZiB3YXRjaGRvZzoKKyAgICAgICAgICAgICAgICAgICAgd2F0Y2hkb2cuc3RvcCgpCiAKICAgICAgICAgd3JhcHBlci5zaXplID0gc2l6ZQogICAgICAgICB3cmFwcGVyLm1lbXVzZSA9IG1lbXVzZQpAQCAtMTM0Miw2ICsxNDI3LDMzIEBACiAgICAgcmV0dXJuIGd1YXJkcy5nZXQocGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCkubG93ZXIoKSwgZGVmYXVsdCkKIAogCitkZWYgbm9fdHJhY2luZyhmdW5jKToKKyAgICAiIiJEZWNvcmF0b3IgdG8gdGVtcG9yYXJpbHkgdHVybiBvZmYgdHJhY2luZyBmb3IgdGhlIGR1cmF0aW9uIG9mIGEgdGVzdC4iIiIKKyAgICBpZiBub3QgaGFzYXR0cihzeXMsICdnZXR0cmFjZScpOgorICAgICAgICByZXR1cm4gZnVuYworICAgIGVsc2U6CisgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIG9yaWdpbmFsX3RyYWNlID0gc3lzLmdldHRyYWNlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHN5cy5zZXR0cmFjZShvcmlnaW5hbF90cmFjZSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIKKworCitkZWYgcmVmY291bnRfdGVzdCh0ZXN0KToKKyAgICAiIiJEZWNvcmF0b3IgZm9yIHRlc3RzIHdoaWNoIGludm9sdmUgcmVmZXJlbmNlIGNvdW50aW5nLgorCisgICAgVG8gc3RhcnQsIHRoZSBkZWNvcmF0b3IgZG9lcyBub3QgcnVuIHRoZSB0ZXN0IGlmIGlzIG5vdCBydW4gYnkgQ1B5dGhvbi4KKyAgICBBZnRlciB0aGF0LCBhbnkgdHJhY2UgZnVuY3Rpb24gaXMgdW5zZXQgZHVyaW5nIHRoZSB0ZXN0IHRvIHByZXZlbnQKKyAgICB1bmV4cGVjdGVkIHJlZmNvdW50cyBjYXVzZWQgYnkgdGhlIHRyYWNlIGZ1bmN0aW9uLgorCisgICAgIiIiCisgICAgcmV0dXJuIG5vX3RyYWNpbmcoY3B5dGhvbl9vbmx5KHRlc3QpKQorCisKIGRlZiBfZmlsdGVyX3N1aXRlKHN1aXRlLCBwcmVkKToKICAgICAiIiJSZWN1cnNpdmVseSBmaWx0ZXIgdGVzdCBjYXNlcyBpbiBhIHN1aXRlIGJhc2VkIG9uIGEgcHJlZGljYXRlLiIiIgogICAgIG5ld3Rlc3RzID0gW10KQEAgLTEzNTQsNyArMTQ2Niw2IEBACiAgICAgICAgICAgICAgICAgbmV3dGVzdHMuYXBwZW5kKHRlc3QpCiAgICAgc3VpdGUuX3Rlc3RzID0gbmV3dGVzdHMKIAotCiBkZWYgX3J1bl9zdWl0ZShzdWl0ZSk6CiAgICAgIiIiUnVuIHRlc3RzIGZyb20gYSB1bml0dGVzdC5UZXN0U3VpdGUtZGVyaXZlZCBjbGFzcy4iIiIKICAgICBpZiB2ZXJib3NlOgpAQCAtMTQwMyw3ICsxNTE0LDcgQEAKICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBkb2N0ZXN0IGRyaXZlci4KIAotZGVmIHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUpOgorZGVmIHJ1bl9kb2N0ZXN0KG1vZHVsZSwgdmVyYm9zaXR5PU5vbmUsIG9wdGlvbmZsYWdzPTApOgogICAgICIiIlJ1biBkb2N0ZXN0IG9uIHRoZSBnaXZlbiBtb2R1bGUuICBSZXR1cm4gKCNmYWlsdXJlcywgI3Rlc3RzKS4KIAogICAgIElmIG9wdGlvbmFsIGFyZ3VtZW50IHZlcmJvc2l0eSBpcyBub3Qgc3BlY2lmaWVkIChvciBpcyBOb25lKSwgcGFzcwpAQCAtMTQxOCw3ICsxNTI5LDcgQEAKICAgICBlbHNlOgogICAgICAgICB2ZXJib3NpdHkgPSBOb25lCiAKLSAgICBmLCB0ID0gZG9jdGVzdC50ZXN0bW9kKG1vZHVsZSwgdmVyYm9zZT12ZXJib3NpdHkpCisgICAgZiwgdCA9IGRvY3Rlc3QudGVzdG1vZChtb2R1bGUsIHZlcmJvc2U9dmVyYm9zaXR5LCBvcHRpb25mbGFncz1vcHRpb25mbGFncykKICAgICBpZiBmOgogICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCIlZCBvZiAlZCBkb2N0ZXN0cyBmYWlsZWQiICUgKGYsIHQpKQogICAgIGlmIHZlcmJvc2U6CkBAIC0xNTc2LDI4ICsxNjg3LDEzIEBACiAgICAgVGhpcyB3aWxsIHR5cGljYWxseSBiZSBydW4gb24gdGhlIHJlc3VsdCBvZiB0aGUgY29tbXVuaWNhdGUoKSBtZXRob2QKICAgICBvZiBhIHN1YnByb2Nlc3MuUG9wZW4gb2JqZWN0LgogICAgICIiIgotICAgIHN0ZGVyciA9IHJlLnN1YihiciJcW1xkKyByZWZzXF1ccj9cbj8kIiwgYiIiLCBzdGRlcnIpLnN0cmlwKCkKKyAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmc1xdXHI/XG4/IiwgYiIiLCBzdGRlcnIpLnN0cmlwKCkKICAgICByZXR1cm4gc3RkZXJyCiAKIGRlZiBhcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKLSAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCi0gICAgZmxhZ19vcHRfbWFwID0gewotICAgICAgICAnYnl0ZXNfd2FybmluZyc6ICdiJywKLSAgICAgICAgJ2RvbnRfd3JpdGVfYnl0ZWNvZGUnOiAnQicsCi0gICAgICAgICdoYXNoX3JhbmRvbWl6YXRpb24nOiAnUicsCi0gICAgICAgICdpZ25vcmVfZW52aXJvbm1lbnQnOiAnRScsCi0gICAgICAgICdub191c2VyX3NpdGUnOiAncycsCi0gICAgICAgICdub19zaXRlJzogJ1MnLAotICAgICAgICAnb3B0aW1pemUnOiAnTycsCi0gICAgICAgICd2ZXJib3NlJzogJ3YnLAotICAgIH0KLSAgICBhcmdzID0gW10KLSAgICBmb3IgZmxhZywgb3B0IGluIGZsYWdfb3B0X21hcC5pdGVtcygpOgotICAgICAgICB2ID0gZ2V0YXR0cihzeXMuZmxhZ3MsIGZsYWcpCi0gICAgICAgIGlmIHYgPiAwOgotICAgICAgICAgICAgYXJncy5hcHBlbmQoJy0nICsgb3B0ICogdikKLSAgICByZXR1cm4gYXJncworICAgIHNldHRpbmdzIGluIHN5cy5mbGFncyBhbmQgc3lzLndhcm5vcHRpb25zLiIiIgorICAgIHJldHVybiBzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQogCiAjPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIFN1cHBvcnQgZm9yIGFzc2VydGlvbnMgYWJvdXQgbG9nZ2luZy4KQEAgLTE2ODcsNiArMTc4Myw0MCBAQAogICAgIG1zZyA9ICJSZXF1aXJlcyBmdW5jdGlvbmFsIHN5bWxpbmsgaW1wbGVtZW50YXRpb24iCiAgICAgcmV0dXJuIHRlc3QgaWYgb2sgZWxzZSB1bml0dGVzdC5za2lwKG1zZykodGVzdCkKIAorX2Nhbl94YXR0ciA9IE5vbmUKK2RlZiBjYW5feGF0dHIoKToKKyAgICBnbG9iYWwgX2Nhbl94YXR0cgorICAgIGlmIF9jYW5feGF0dHIgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBfY2FuX3hhdHRyCisgICAgaWYgbm90IGhhc2F0dHIob3MsICJzZXR4YXR0ciIpOgorICAgICAgICBjYW4gPSBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHRtcF9mcCwgdG1wX25hbWUgPSB0ZW1wZmlsZS5ta3N0ZW1wKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIFRFU1RGTiAmIHRlbXBmaWxlIG1heSB1c2UgZGlmZmVyZW50IGZpbGUgc3lzdGVtcyB3aXRoCisgICAgICAgICAgICAgICAgICAgICMgZGlmZmVyZW50IGNhcGFiaWxpdGllcworICAgICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cih0bXBfZnAsIGIidXNlci50ZXN0IiwgYiIiKQorICAgICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICAgICAgICAgICMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgorICAgICAgICAgICAgICAgICAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQorICAgICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goIjIuNi4oXGR7MSwyfSkiLCBrZXJuZWxfdmVyc2lvbikKKyAgICAgICAgICAgICAgICAgICAgY2FuID0gbSBpcyBOb25lIG9yIGludChtLmdyb3VwKDEpKSA+PSAzOQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjYW4gPSBGYWxzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgICAgIHVubGluayh0bXBfbmFtZSkKKyAgICBfY2FuX3hhdHRyID0gY2FuCisgICAgcmV0dXJuIGNhbgorCitkZWYgc2tpcF91bmxlc3NfeGF0dHIodGVzdCk6CisgICAgIiIiU2tpcCBkZWNvcmF0b3IgZm9yIHRlc3RzIHRoYXQgcmVxdWlyZSBmdW5jdGlvbmFsIGV4dGVuZGVkIGF0dHJpYnV0ZXMiIiIKKyAgICBvayA9IGNhbl94YXR0cigpCisgICAgbXNnID0gIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiCisgICAgcmV0dXJuIHRlc3QgaWYgb2sgZWxzZSB1bml0dGVzdC5za2lwKG1zZykodGVzdCkKKwogZGVmIHBhdGNoKHRlc3RfaW5zdGFuY2UsIG9iamVjdF90b19wYXRjaCwgYXR0cl9uYW1lLCBuZXdfdmFsdWUpOgogICAgICIiIk92ZXJyaWRlICdvYmplY3RfdG9fcGF0Y2gnLidhdHRyX25hbWUnIHdpdGggJ25ld192YWx1ZScuCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfX2xvY2FsZS5weQppbmRleCAzZmFkYjU3Li40MjMxZjM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X19sb2NhbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9fbG9jYWxlLnB5CkBAIC0xLDIzICsxLDI1IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiBmcm9tIF9sb2NhbGUgaW1wb3J0IChzZXRsb2NhbGUsIExDX0FMTCwgTENfQ1RZUEUsIExDX05VTUVSSUMsIGxvY2FsZWNvbnYsIEVycm9yKQogdHJ5OgogICAgIGZyb20gX2xvY2FsZSBpbXBvcnQgKFJBRElYQ0hBUiwgVEhPVVNFUCwgbmxfbGFuZ2luZm8pCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgbmxfbGFuZ2luZm8gPSBOb25lCiAKLWltcG9ydCB1bml0dGVzdAoraW1wb3J0IGNvZGVjcworaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHBsYXRmb3JtIGltcG9ydCB1bmFtZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCi1pZiB1bmFtZSgpWzBdID09ICJEYXJ3aW4iOgotICAgIG1haiwgbWluLCBtaWMgPSBbaW50KHBhcnQpIGZvciBwYXJ0IGluIHVuYW1lKClbMl0uc3BsaXQoIi4iKV0KK2lmIHVuYW1lKCkuc3lzdGVtID09ICJEYXJ3aW4iOgorICAgIG1haiwgbWluLCBtaWMgPSBbaW50KHBhcnQpIGZvciBwYXJ0IGluIHVuYW1lKCkucmVsZWFzZS5zcGxpdCgiLiIpXQogICAgIGlmIChtYWosIG1pbiwgbWljKSA8ICg4LCAwLCAwKToKICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImxvY2FsZSBzdXBwb3J0IGJyb2tlbiBmb3IgT1MgWCA8IDEwLjQiKQogCiBjYW5kaWRhdGVfbG9jYWxlcyA9IFsnZXNfVVknLCAnZnJfRlInLCAnZmlfRkknLCAnZXNfQ08nLCAncHRfUFQnLCAnaXRfSVQnLAogICAgICdldF9FRScsICdlc19QWScsICdub19OTycsICdubF9OTCcsICdsdl9MVicsICdlbF9HUicsICdiZV9CWScsICdmcl9CRScsCiAgICAgJ3JvX1JPJywgJ3J1X1VBJywgJ3J1X1JVJywgJ2VzX1ZFJywgJ2NhX0VTJywgJ3NlX05PJywgJ2VzX0VDJywgJ2lkX0lEJywKLSAgICAna2FfR0UnLCAnZXNfQ0wnLCAnaHVfSFUnLCAnd2FfQkUnLCAnbHRfTFQnLCAnc2xfU0knLCAnaHJfSFInLCAnZXNfQVInLAorICAgICdrYV9HRScsICdlc19DTCcsICd3YV9CRScsICdodV9IVScsICdsdF9MVCcsICdzbF9TSScsICdocl9IUicsICdlc19BUicsCiAgICAgJ2VzX0VTJywgJ29jX0ZSJywgJ2dsX0VTJywgJ2JnX0JHJywgJ2lzX0lTJywgJ21rX01LJywgJ2RlX0FUJywgJ3B0X0JSJywKICAgICAnZGFfREsnLCAnbm5fTk8nLCAnY3NfQ1onLCAnZGVfTFUnLCAnZXNfQk8nLCAnc3FfQUwnLCAnc2tfU0snLCAnZnJfQ0gnLAogICAgICdkZV9ERScsICdzcl9ZVScsICdicl9GUicsICdubF9CRScsICdzdl9GSScsICdwbF9QTCcsICdmcl9DQScsICdmb19GTycsCkBAIC0yNSw2ICsyNywzMSBAQAogICAgICdldV9FUycsICd2aV9WTicsICdhZl9aQScsICduYl9OTycsICdlbl9ESycsICd0Z19USicsICdlbl9VUycsCiAgICAgJ2VzX0VTLklTTzg4NTktMScsICdmcl9GUi5JU084ODU5LTE1JywgJ3J1X1JVLktPSTgtUicsICdrb19LUi5ldWNLUiddCiAKKyMgSXNzdWUgIzEzNDQxOiBTa2lwIHNvbWUgbG9jYWxlcyAoZS5nLiBjc19DWiBhbmQgaHVfSFUpIG9uIFNvbGFyaXMgdG8KKyMgd29ya2Fyb3VuZCBhIG1ic3Rvd2NzKCkgYnVnLiBGb3IgZXhhbXBsZSwgb24gU29sYXJpcywgdGhlIGh1X0hVIGxvY2FsZSB1c2VzCisjIHRoZSBsb2NhbGUgZW5jb2RpbmcgSVNPLTg4NTktMiwgdGhlIHRob3VzYXVkcyBzZXBhcmF0b3IgaXMgYidceEEwJyBhbmQgaXQgaXMKKyMgZGVjb2RlZCBhcyBVKzMwMDAwMDIwIChhbiBpbnZhbGlkIGNoYXJhY3RlcikgYnkgbWJzdG93Y3MoKS4KK2lmIHN5cy5wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKKyAgICBvbGRfbG9jYWxlID0gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMKQorICAgIHRyeToKKyAgICAgICAgbG9jYWxlcyA9IFtdCisgICAgICAgIGZvciBsb2MgaW4gY2FuZGlkYXRlX2xvY2FsZXM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQUxMLCBsb2MpCisgICAgICAgICAgICBleGNlcHQgRXJyb3I6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGVuY29kaW5nID0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxvY2FsZWNvbnYoKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IFNraXAgbG9jYWxlICVzIChlbmNvZGluZyAlcyk6IFslc10gJXMiCisgICAgICAgICAgICAgICAgICAgICAgJSAobG9jLCBlbmNvZGluZywgdHlwZShlcnIpLCBlcnIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2NhbGVzLmFwcGVuZChsb2MpCisgICAgICAgIGNhbmRpZGF0ZV9sb2NhbGVzID0gbG9jYWxlcworICAgIGZpbmFsbHk6CisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgb2xkX2xvY2FsZSkKKwogIyBXb3JrYXJvdW5kIGZvciBNU1ZDNihkZWJ1ZykgY3Jhc2ggYnVnCiBpZiAiTVNDIHYuMTIwMCIgaW4gc3lzLnZlcnNpb246CiAgICAgZGVmIGFjY2VwdChsb2MpOgpAQCAtODYsOSArMTEzLDEwIEBACiAgICAgICAgICAgICAgICAgc2V0bG9jYWxlKExDX0NUWVBFLCBsb2MpCiAgICAgICAgICAgICBleGNlcHQgRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGZvcm1hdHRpbmcgPSBsb2NhbGVjb252KCkKICAgICAgICAgICAgIGZvciBsYyBpbiAoImRlY2ltYWxfcG9pbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgInRob3VzYW5kc19zZXAiKToKLSAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNfdGVzdGVyKCdsb2NhbGVjb252JywgbG9jYWxlY29udigpW2xjXSwgbGMsIGxvYykKKyAgICAgICAgICAgICAgICBzZWxmLm51bWVyaWNfdGVzdGVyKCdsb2NhbGVjb252JywgZm9ybWF0dGluZ1tsY10sIGxjLCBsb2MpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhubF9sYW5naW5mbywgIm5sX2xhbmdpbmZvIGlzIG5vdCBhdmFpbGFibGUiKQogICAgIGRlZiB0ZXN0X2xjX251bWVyaWNfYmFzaWMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfX29zeF9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiMTU5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X19vc3hfc3VwcG9ydC5weQpAQCAtMCwwICsxLDI3OSBAQAorIiIiCitUZXN0IHN1aXRlIGZvciBfb3N4X3N1cHBvcnQ6IHNoYXJlZCBPUyBYIHN1cHBvcnQgZnVuY3Rpb25zLgorIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKKworaW1wb3J0IF9vc3hfc3VwcG9ydAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZGFyd2luIiksICJyZXF1aXJlcyBPUyBYIikKK2NsYXNzIFRlc3RfT1NYU3VwcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5wcm9nX25hbWUgPSAnYm9ndXNfcHJvZ3JhbV94eHh4JworICAgICAgICBzZWxmLnRlbXBfcGF0aF9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MuZ2V0Y3dkKCkpCisgICAgICAgIHNlbGYuZW52ID0gdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5lbnYuX19leGl0X18pCisgICAgICAgIGZvciBjdiBpbiAoJ0NGTEFHUycsICdMREZMQUdTJywgJ0NQUEZMQUdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQkFTRUNGTEFHUycsICdCTERTSEFSRUQnLCAnTERTSEFSRUQnLCAnQ0MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDWFgnLCAnUFlfQ0ZMQUdTJywgJ1BZX0xERkxBR1MnLCAnUFlfQ1BQRkxBR1MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQWV9DT1JFX0NGTEFHUycpOgorICAgICAgICAgICAgaWYgY3YgaW4gc2VsZi5lbnY6CisgICAgICAgICAgICAgICAgc2VsZi5lbnYudW5zZXQoY3YpCisKKyAgICBkZWYgYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKHNlbGYsIGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKToKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgaW5pdGlhbCB2YWx1ZXMgZm9yIGFsbCBtb2RpZmllZCBjb25maWcgdmFycworICAgICAgICAjIGFyZSBhbHNvIHNhdmVkIHdpdGggbW9kaWZpZWQga2V5cy4KKyAgICAgICAgZXhwZWN0ZWRfdmFycy51cGRhdGUoKCdfT1NYX1NVUFBPUlRfSU5JVElBTF8nKyBrLAorICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzW2tdKSBmb3IgayBpbiBjb25maWdfdmFycworICAgICAgICAgICAgICAgICAgICBpZiBjb25maWdfdmFyc1trXSAhPSBleHBlY3RlZF92YXJzW2tdKQorCisgICAgZGVmIHRlc3RfX2ZpbmRfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5lbnZbJ1BBVEgnXToKKyAgICAgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgJzonCisgICAgICAgIHNlbGYuZW52WydQQVRIJ10gPSBzZWxmLmVudlsnUEFUSCddICsgb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikKKyAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhzZWxmLnByb2dfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoX29zeF9zdXBwb3J0Ll9maW5kX2V4ZWN1dGFibGUoc2VsZi5wcm9nX25hbWUpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnByb2dfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG4vYmluL2VjaG8gT0tcbiIpCisgICAgICAgIG9zLmNobW9kKHNlbGYucHJvZ19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9nX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9maW5kX2V4ZWN1dGFibGUoc2VsZi5wcm9nX25hbWUpKQorCisgICAgZGVmIHRlc3RfX3JlYWRfb3V0cHV0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLmVudlsnUEFUSCddOgorICAgICAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IHNlbGYuZW52WydQQVRIJ10gKyAnOicKKyAgICAgICAgc2VsZi5lbnZbJ1BBVEgnXSA9IHNlbGYuZW52WydQQVRIJ10gKyBvcy5wYXRoLmFic3BhdGgoc2VsZi50ZW1wX3BhdGhfZGlyKQorICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKHNlbGYucHJvZ19uYW1lKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgc2VsZi5wcm9nX25hbWUpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnByb2dfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiIyEvYmluL3NoXG4vYmluL2VjaG8gRXhwZWN0ZWRPdXRwdXRcbiIpCisgICAgICAgIG9zLmNobW9kKHNlbGYucHJvZ19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0V4cGVjdGVkT3V0cHV0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlYWRfb3V0cHV0KHNlbGYucHJvZ19uYW1lKSkKKworICAgIGRlZiB0ZXN0X19maW5kX2J1aWxkX3Rvb2woc2VsZik6CisgICAgICAgIG91dCA9IF9vc3hfc3VwcG9ydC5fZmluZF9idWlsZF90b29sKCdjYycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvdXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYyBub3QgZm91bmQgLSBjaGVjayB4Y29kZS1zZWxlY3QnKQorCisgICAgZGVmIHRlc3RfX2dldF9zeXN0ZW1fdmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBsYXRmb3JtLm1hY192ZXIoKVswXS5zdGFydHN3aXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9nZXRfc3lzdGVtX3ZlcnNpb24oKSkpCisKKyAgICBkZWYgdGVzdF9fcmVtb3ZlX29yaWdpbmFsX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZyAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGN2ID0gJ0NDJworICAgICAgICBuZXd2YWx1ZSA9ICdjbGFuZyAtcHRocmVhZHMnCisgICAgICAgIF9vc3hfc3VwcG9ydC5fc2F2ZV9tb2RpZmllZF92YWx1ZShjb25maWdfdmFycywgY3YsIG5ld3ZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4cGVjdGVkX3ZhcnMsIGNvbmZpZ192YXJzKQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoY29uZmlnX3ZhcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisKKyAgICBkZWYgdGVzdF9fc2F2ZV9tb2RpZmllZF92YWx1ZShzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZyAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorICAgICAgICBjdiA9ICdDQycKKyAgICAgICAgbmV3dmFsdWUgPSAnY2xhbmcgLXB0aHJlYWRzJworICAgICAgICBfb3N4X3N1cHBvcnQuX3NhdmVfbW9kaWZpZWRfdmFsdWUoY29uZmlnX3ZhcnMsIGN2LCBuZXd2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLCBjb25maWdfdmFycykKKworICAgIGRlZiB0ZXN0X19zYXZlX21vZGlmaWVkX3ZhbHVlX3VuY2hhbmdlZChzZWxmKToKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdnY2MtdGVzdCAtcHRocmVhZHMnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSBjb25maWdfdmFycy5jb3B5KCkKKyAgICAgICAgY3YgPSAnQ0MnCisgICAgICAgIG5ld3ZhbHVlID0gJ2djYy10ZXN0IC1wdGhyZWFkcycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9zYXZlX21vZGlmaWVkX3ZhbHVlKGNvbmZpZ192YXJzLCBjdiwgbmV3dmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywgY29uZmlnX3ZhcnMpCisKKyAgICBkZWYgdGVzdF9fc3VwcG9ydHNfdW5pdmVyc2FsX2J1aWxkcyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHBsYXRmb3JtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGxhdGZvcm0ubWFjX3ZlcigpWzBdLnNwbGl0KCcuJykgPj0gWycxMCcsICc0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9zdXBwb3J0c191bml2ZXJzYWxfYnVpbGRzKCkpCisKKyAgICBkZWYgdGVzdF9fZmluZF9hcHByb3ByaWF0ZV9jb21waWxlcihzZWxmKToKKyAgICAgICAgY29tcGlsZXJzID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgKCdnY2MtdGVzdCcsICdpNjg2LWFwcGxlLWRhcndpbjExLWxsdm0tZ2NjLTQuMicpLAorICAgICAgICAgICAgICAgICAgICAgICAgKCdjbGFuZycsICdjbGFuZyB2ZXJzaW9uIDMuMScpLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnZ2NjLXRlc3QgLXB0aHJlYWRzJywKKyAgICAgICAgJ0NYWCc6ICdjYysrLXRlc3QnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtdGVzdCAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy10ZXN0IC1idW5kbGUgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcgLXB0aHJlYWRzJywKKyAgICAgICAgJ0NYWCc6ICdjbGFuZysrJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnY2xhbmcgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdjbGFuZyAtYnVuZGxlIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc3VmZml4ID0gKCc6JyArIHNlbGYuZW52WydQQVRIJ10pIGlmIHNlbGYuZW52WydQQVRIJ10gZWxzZSAnJworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikgKyBzdWZmaXgKKyAgICAgICAgZm9yIGNfbmFtZSwgY19vdXRwdXQgaW4gY29tcGlsZXJzOgorICAgICAgICAgICAgdGVzdC5zdXBwb3J0LnVubGluayhjX25hbWUpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdC5zdXBwb3J0LnVubGluaywgY19uYW1lKQorICAgICAgICAgICAgd2l0aCBvcGVuKGNfbmFtZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoIiMhL2Jpbi9zaFxuL2Jpbi9lY2hvICIgKyBjX291dHB1dCkKKyAgICAgICAgICAgIG9zLmNobW9kKGNfbmFtZSwgc3RhdC5TX0lSV1hVKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29zeF9zdXBwb3J0Ll9maW5kX2FwcHJvcHJpYXRlX2NvbXBpbGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3Moc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgLWFyY2ggcHBjIC1hcmNoIGkzODYgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgICAgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnICAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAgJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAgLWcnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgICAgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV91bml2ZXJzYWxfZmxhZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9fcmVtb3ZlX3Vuc3VwcG9ydGVkX2FyY2hzKHNlbGYpOgorICAgICAgICBjb25maWdfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICctYXJjaCBwcGMgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0ZWRfdmFycyA9IHsKKyAgICAgICAgJ0NDJzogJ2NsYW5nJywKKyAgICAgICAgJ0NGTEFHUyc6ICctZm5vLXN0cmljdC1hbGlhc2luZyAgLWcgLU8zICAtYXJjaCBpMzg2ICAnLAorICAgICAgICAnTERGTEFHUyc6ICcgLWFyY2ggaTM4NiAgIC1nJywKKyAgICAgICAgJ0NQUEZMQUdTJzogJy1JLiAtaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgICAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAtZycsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc3VmZml4ID0gKCc6JyArIHNlbGYuZW52WydQQVRIJ10pIGlmIHNlbGYuZW52WydQQVRIJ10gZWxzZSAnJworICAgICAgICBzZWxmLmVudlsnUEFUSCddID0gb3MucGF0aC5hYnNwYXRoKHNlbGYudGVtcF9wYXRoX2RpcikgKyBzdWZmaXgKKyAgICAgICAgY19uYW1lID0gJ2NsYW5nJworICAgICAgICB0ZXN0LnN1cHBvcnQudW5saW5rKGNfbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIGNfbmFtZSkKKyAgICAgICAgIyBleGl0IHN0YXR1cyAyNTUgbWVhbnMgbm8gUFBDIHN1cHBvcnQgaW4gdGhpcyBjb21waWxlciBjaGFpbgorICAgICAgICB3aXRoIG9wZW4oY19uYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCIjIS9iaW4vc2hcbmV4aXQgMjU1IikKKyAgICAgICAgb3MuY2htb2QoY19uYW1lLCBzdGF0LlNfSVJXWFUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV91bnN1cHBvcnRlZF9hcmNocygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ192YXJzKSkKKworICAgIGRlZiB0ZXN0X19vdmVycmlkZV9hbGxfYXJjaHMoc2VsZik6CisgICAgICAgIHNlbGYuZW52WydBUkNIRkxBR1MnXSA9ICctYXJjaCB4ODZfNjQnCisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcsCisgICAgICAgICdMREZMQUdTJzogJy1hcmNoIHBwYyAtYXJjaCBpMzg2ICAgLWcnLAorICAgICAgICAnQ1BQRkxBR1MnOiAnLUkuIC1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrJywKKyAgICAgICAgJ0JMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1nJywKKyAgICAgICAgJ0xEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAtYXJjaCBwcGMgLWFyY2ggaTM4NiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgLWcnLAorICAgICAgICB9CisgICAgICAgIGV4cGVjdGVkX3ZhcnMgPSB7CisgICAgICAgICdDQyc6ICdjbGFuZycsCisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAgICAgLWFyY2ggeDg2XzY0JywKKyAgICAgICAgJ0xERkxBR1MnOiAnICAgIC1nIC1hcmNoIHg4Nl82NCcsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsnLAorICAgICAgICAnQkxEU0hBUkVEJzogJ2djYy00LjAgLWJ1bmRsZSAgICAtZyAtYXJjaCB4ODZfNjQnLAorICAgICAgICAnTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAgLWlzeXNyb290ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrIC1nIC1hcmNoIHg4Nl82NCcsCisgICAgICAgIH0KKyAgICAgICAgc2VsZi5hZGRfZXhwZWN0ZWRfc2F2ZWRfaW5pdGlhbF92YWx1ZXMoY29uZmlnX3ZhcnMsIGV4cGVjdGVkX3ZhcnMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vc3hfc3VwcG9ydC5fb3ZlcnJpZGVfYWxsX2FyY2hzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3ZhcnMpKQorCisgICAgZGVmIHRlc3RfX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoc2VsZik6CisgICAgICAgIGNvbmZpZ192YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gLWlzeXNyb290IC9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xLnNkaycsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICctaXN5c3Jvb3QgL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEuc2RrIC1nJywKKyAgICAgICAgfQorICAgICAgICBleHBlY3RlZF92YXJzID0geworICAgICAgICAnQ0MnOiAnY2xhbmcnLAorICAgICAgICAnQ0ZMQUdTJzogJy1mbm8tc3RyaWN0LWFsaWFzaW5nICAtZyAtTzMgLWFyY2ggcHBjIC1hcmNoIGkzODYgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcgJywKKyAgICAgICAgJ0xERkxBR1MnOiAnLWFyY2ggcHBjIC1hcmNoIGkzODYgICAtZycsCisgICAgICAgICdDUFBGTEFHUyc6ICctSS4gICcsCisgICAgICAgICdCTERTSEFSRUQnOiAnZ2NjLTQuMCAtYnVuZGxlICAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtZycsCisgICAgICAgICdMRFNIQVJFRCc6ICdnY2MtNC4wIC1idW5kbGUgIC1hcmNoIHBwYyAtYXJjaCBpMzg2ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcgLWcnLAorICAgICAgICB9CisgICAgICAgIHNlbGYuYWRkX2V4cGVjdGVkX3NhdmVkX2luaXRpYWxfdmFsdWVzKGNvbmZpZ192YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX2NoZWNrX2Zvcl91bmF2YWlsYWJsZV9zZGsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfdmFycykpCisKKyAgICBkZWYgdGVzdF9nZXRfcGxhdGZvcm1fb3N4KHNlbGYpOgorICAgICAgICAjIE5vdGUsIGdldF9wbGF0Zm9ybV9vc3ggaXMgY3VycmVudGx5IHRlc3RlZCBtb3JlIGV4dGVuc2l2ZWx5CisgICAgICAgICMgaW5kaXJlY3RseSBieSB0ZXN0X3N5c2NvbmZpZyBhbmQgdGVzdF9kaXN0dXRpbHMKKyAgICAgICAgY29uZmlnX3ZhcnMgPSB7CisgICAgICAgICdDRkxBR1MnOiAnLWZuby1zdHJpY3QtYWxpYXNpbmcgIC1nIC1PMyAtYXJjaCBwcGMgLWFyY2ggaTM4NiAgJworICAgICAgICAgICAgICAgICAgICAgICAgJy1pc3lzcm9vdCAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuMS5zZGsnLAorICAgICAgICAnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJzogJzEwLjYnLAorICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IF9vc3hfc3VwcG9ydC5nZXRfcGxhdGZvcm1fb3N4KGNvbmZpZ192YXJzLCAnICcsICcgJywgJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnbWFjb3N4JywgJzEwLjYnLCAnZmF0JyksIHJlc3VsdCkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0X09TWFN1cHBvcnQpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKaW5kZXggZDg2Zjk3Yy4uNjUzYzk1NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKQEAgLTEwLDE0ICsxMCw3IEBACiBmcm9tIGluc3BlY3QgaW1wb3J0IGlzYWJzdHJhY3QKIAogCi1jbGFzcyBUZXN0QUJDKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKLSAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAotICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCi0gICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCitjbGFzcyBUZXN0TGVnYWN5QVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Fic3RyYWN0cHJvcGVydHlfYmFzaWNzKHNlbGYpOgogICAgICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKQEAgLTI5LDEwICsyMiwxMiBAQAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKICAgICAgICAgY2xhc3MgRChDKToKICAgICAgICAgICAgIEBwcm9wZXJ0eQogICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcmV0dXJuIHN1cGVyKCkuZm9vCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgpLmZvbywgMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKEQuZm9vLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCiAKICAgICBkZWYgdGVzdF9hYnN0cmFjdGNsYXNzbWV0aG9kX2Jhc2ljcyhzZWxmKToKICAgICAgICAgQGFiYy5hYnN0cmFjdGNsYXNzbWV0aG9kCkBAIC00MCw3ICszNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCiAgICAgICAgIEBjbGFzc21ldGhvZAogICAgICAgICBkZWYgYmFyKGNscyk6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QKQEAgLTU4LDcgKzUzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKICAgICAgICAgQHN0YXRpY21ldGhvZAogICAgICAgICBkZWYgYmFyKCk6IHBhc3MKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKIAogICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CiAgICAgICAgICAgICBAYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kCkBAIC05OCw2ICs5MywxNjMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRikgICMgYmVjYXVzZSBiYXIgaXMgYWJzdHJhY3Qgbm93CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChGKSkKIAorCitjbGFzcyBUZXN0QUJDKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0bWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIikpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdHByb3BlcnR5X2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQHByb3BlcnR5CisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBkZWYgYmFyKHNlbGYpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZ2V0YXR0cihiYXIsICJfX2lzYWJzdHJhY3RtZXRob2RfXyIsIEZhbHNlKSkKKworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoKS5mb28sIDMpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdGNsYXNzbWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgZGVmIGZvbyhjbHMpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmb28uX19pc2Fic3RyYWN0bWV0aG9kX18pCisgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICBkZWYgYmFyKGNscyk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShnZXRhdHRyKGJhciwgIl9faXNhYnN0cmFjdG1ldGhvZF9fIiwgRmFsc2UpKQorCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gY2xzLl9fbmFtZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhjbHMpOiByZXR1cm4gc3VwZXIoKS5mb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKCksICdEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vKCksICdEJykKKworICAgIGRlZiB0ZXN0X2Fic3RyYWN0c3RhdGljbWV0aG9kX2Jhc2ljcyhzZWxmKToKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFRydWUoZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fKQorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBiYXIoKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGdldGF0dHIoYmFyLCAiX19pc2Fic3RyYWN0bWV0aG9kX18iLCBGYWxzZSkpCisKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbygpOiByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKCk6IHJldHVybiA0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRC5mb28oKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCkuZm9vKCksIDQpCisKKyAgICBkZWYgdGVzdF9hYnN0cmFjdG1ldGhvZF9pbnRlZ3JhdGlvbihzZWxmKToKKyAgICAgICAgZm9yIGFic3RyYWN0dGhpbmcgaW4gW2FiYy5hYnN0cmFjdG1ldGhvZCwgYWJjLmFic3RyYWN0cHJvcGVydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZF06CisgICAgICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1hYmMuQUJDTWV0YSk6CisgICAgICAgICAgICAgICAgQGFic3RyYWN0dGhpbmcKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiBwYXNzICAjIGFic3RyYWN0CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYWJzdHJhY3RtZXRob2RzX18sIHsiZm9vIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpICAjIGJlY2F1c2UgZm9vIGlzIGFic3RyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChDKSkKKyAgICAgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKTogcGFzcyAgIyBjb25jcmV0ZSBvdmVycmlkZSBvZiBjb25jcmV0ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELl9fYWJzdHJhY3RtZXRob2RzX18sIHsiZm9vIn0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpICAjIGJlY2F1c2UgZm9vIGlzIHN0aWxsIGFic3RyYWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNhYnN0cmFjdChEKSkKKyAgICAgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbyhzZWxmKTogcGFzcworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFLl9fYWJzdHJhY3RtZXRob2RzX18sIHNldCgpKQorICAgICAgICAgICAgRSgpICAjIG5vdyBmb28gaXMgY29uY3JldGUsIHRvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2Fic3RyYWN0KEUpKQorICAgICAgICAgICAgY2xhc3MgRihFKToKKyAgICAgICAgICAgICAgICBAYWJzdHJhY3R0aGluZworICAgICAgICAgICAgICAgIGRlZiBiYXIoc2VsZik6IHBhc3MgICMgYWJzdHJhY3Qgb3ZlcnJpZGUgb2YgY29uY3JldGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRi5fX2Fic3RyYWN0bWV0aG9kc19fLCB7ImJhciJ9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBGKSAgIyBiZWNhdXNlIGJhciBpcyBhYnN0cmFjdCBub3cKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2Fic3RyYWN0KEYpKQorCisgICAgZGVmIHRlc3RfZGVzY3JpcHRvcnNfd2l0aF9hYnN0cmFjdG1ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gMworICAgICAgICAgICAgQGZvby5zZXR0ZXIKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZiwgdmFsKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEMpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBAQy5mb28uZ2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOiByZXR1cm4gc3VwZXIoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKQorICAgICAgICBjbGFzcyBFKEQpOgorICAgICAgICAgICAgQEQuZm9vLnNldHRlcgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRSgpLmZvbywgMykKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEYoQyk6CisgICAgICAgICAgICAgICAgZGVmIGJhcihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGJhci5fX2lzYWJzdHJhY3RtZXRob2RfXyA9IE5vdEJvb2woKQorICAgICAgICAgICAgICAgIGZvbyA9IHByb3BlcnR5KGJhcikKKworCisgICAgZGVmIHRlc3RfY3VzdG9tZGVzY3JpcHRvcnNfd2l0aF9hYnN0cmFjdG1ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZ2V0LCBmc2V0PU5vbmUpOgorICAgICAgICAgICAgICAgIHNlbGYuX2ZnZXQgPSBmZ2V0CisgICAgICAgICAgICAgICAgc2VsZi5fZnNldCA9IGZzZXQKKyAgICAgICAgICAgIGRlZiBnZXR0ZXIoc2VsZiwgY2FsbGFibGUpOgorICAgICAgICAgICAgICAgIHJldHVybiBEZXNjcmlwdG9yKGNhbGxhYmxlLCBzZWxmLl9mZ2V0KQorICAgICAgICAgICAgZGVmIHNldHRlcihzZWxmLCBjYWxsYWJsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlc2NyaXB0b3Ioc2VsZi5fZmdldCwgY2FsbGFibGUpCisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBfX2lzYWJzdHJhY3RtZXRob2RfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gKGdldGF0dHIoc2VsZi5fZmdldCwgJ19faXNhYnN0cmFjdG1ldGhvZF9fJywgRmFsc2UpCisgICAgICAgICAgICAgICAgICAgICAgICBvciBnZXRhdHRyKHNlbGYuX2ZzZXQsICdfX2lzYWJzdHJhY3RtZXRob2RfXycsIEZhbHNlKSkKKyAgICAgICAgY2xhc3MgQyhtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgorICAgICAgICAgICAgQERlc2NyaXB0b3IKKyAgICAgICAgICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiAzCisgICAgICAgICAgICBAZm9vLnNldHRlcgorICAgICAgICAgICAgQGFiYy5hYnN0cmFjdG1ldGhvZAorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCB2YWwpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIEBDLmZvby5nZXR0ZXIKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6IHJldHVybiBzdXBlcigpLmZvbworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQpCisgICAgICAgIGNsYXNzIEUoRCk6CisgICAgICAgICAgICBARC5mb28uc2V0dGVyCisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIHZhbCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShFLmZvby5fX2lzYWJzdHJhY3RtZXRob2RfXykKKwogICAgIGRlZiB0ZXN0X21ldGFjbGFzc19hYmMoc2VsZik6CiAgICAgICAgICMgTWV0YWNsYXNzZXMgY2FuIGJlIEFCQ3MsIHRvby4KICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgpAQCAtMTIxLDExICsyNzMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKEIsIChBLCkpKQogICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoYiwgQSkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGIsIChBLCkpCi0gICAgICAgIEEucmVnaXN0ZXIoQikKKyAgICAgICAgQjEgPSBBLnJlZ2lzdGVyKEIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIEEpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCAoQSwpKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCAoQSwpKQorICAgICAgICBzZWxmLmFzc2VydElzKEIxLCBCKQogICAgICAgICBjbGFzcyBDKEIpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBjID0gQygpCkBAIC0xMzQsNiArMjg3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBBKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYywgKEEsKSkKIAorICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2FzX2NsYXNzX2RlY28oc2VsZik6CisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPWFiYy5BQkNNZXRhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgQEEucmVnaXN0ZXIKKyAgICAgICAgY2xhc3MgQihvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBiID0gQigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEIsIEEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhCLCAoQSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGIsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShiLCAoQSwpKQorICAgICAgICBAQS5yZWdpc3RlcgorICAgICAgICBjbGFzcyBDKEIpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjID0gQygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIEEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCAoQSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGMsIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCAoQSwpKQorICAgICAgICBzZWxmLmFzc2VydElzKEMsIEEucmVnaXN0ZXIoQykpCisKICAgICBkZWYgdGVzdF9pc2luc3RhbmNlX2ludmFsaWRhdGlvbihzZWxmKToKICAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9YWJjLkFCQ01ldGEpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9hYnN0cmFjdF9udW1iZXJzLnB5CmluZGV4IDJhMzk2Y2QuLjI1M2U2ZjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWJzdHJhY3RfbnVtYmVycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Fic3RyYWN0X251bWJlcnMucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykucmVhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBpbnQoNykuaW1hZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBpbnQoNykuY29uanVnYXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTcsIGludCgtNykuY29uanVnYXRlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNywgaW50KDcpLm51bWVyYXRvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBpbnQoNykuZGVub21pbmF0b3IpCiAKQEAgLTI0LDYgKzI1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LjMsIGZsb2F0KDcuMykucmVhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBmbG9hdCg3LjMpLmltYWcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNy4zLCBmbG9hdCg3LjMpLmNvbmp1Z2F0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC03LjMsIGZsb2F0KC03LjMpLmNvbmp1Z2F0ZSgpKQogCiAgICAgZGVmIHRlc3RfY29tcGxleChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGNvbXBsZXgsIFJlYWwpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5IGIvTGliL3Rlc3QvdGVzdF9haWZjLnB5CmluZGV4IGVlNGFkNmIuLmFkNmY2MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOLCBjYXB0dXJlZF9zdGRvdXQsIHVubGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgdW5saW5rCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwogaW1wb3J0IGlvCkBAIC0yMDcsMTEgKzIwNyw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4CiAgICAgICAgIGIgKz0gYidNQVJLJyArIHN0cnVjdC5wYWNrKCc+TGhCJywgMywgMSwgMSkKLSAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoVXNlcldhcm5pbmcpOgogICAgICAgICAgICAgZiA9IGFpZmMub3Blbihpby5CeXRlc0lPKGIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgcy5nZXR2YWx1ZSgpLAotICAgICAgICAgICAgJ1dhcm5pbmc6IE1BUksgY2h1bmsgY29udGFpbnMgb25seSAwIG1hcmtlcnMgaW5zdGVhZCBvZiAxXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0bWFya2VycygpLCBOb25lKQogCiAgICAgZGVmIHRlc3RfcmVhZF9jb21tX2tsdWRnZV9jb21wbmFtZV9ldmVuKHNlbGYpOgpAQCAtMjE5LDkgKzIxNiw4IEBACiAgICAgICAgIGIgKz0gYidDT01NJyArIHN0cnVjdC5wYWNrKCc+TGhsaGhMTCcsIDE4LCAwLCAwLCAwLCAwLCAwLCAwKQogICAgICAgICBiICs9IGInTk9ORScgKyBzdHJ1Y3QucGFjaygnQicsIDQpICsgYidldmVuJyArIGInXHgwMCcKICAgICAgICAgYiArPSBiJ1NTTkQnICsgc3RydWN0LnBhY2soJz5MJywgOCkgKyBiJ1x4MDAnICogOAotICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhVc2VyV2FybmluZyk6CiAgICAgICAgICAgICBmID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAnV2FybmluZzogYmFkIENPTU0gY2h1bmsgc2l6ZVxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmdldGNvbXBuYW1lKCksIGInZXZlbicpCiAKICAgICBkZWYgdGVzdF9yZWFkX2NvbW1fa2x1ZGdlX2NvbXBuYW1lX29kZChzZWxmKToKQEAgLTIyOSw5ICsyMjUsOCBAQAogICAgICAgICBiICs9IGInQ09NTScgKyBzdHJ1Y3QucGFjaygnPkxobGhoTEwnLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCkKICAgICAgICAgYiArPSBiJ05PTkUnICsgc3RydWN0LnBhY2soJ0InLCAzKSArIGInb2RkJwogICAgICAgICBiICs9IGInU1NORCcgKyBzdHJ1Y3QucGFjaygnPkwnLCA4KSArIGInXHgwMCcgKiA4Ci0gICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKICAgICAgICAgICAgIGYgPSBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICdXYXJuaW5nOiBiYWQgQ09NTSBjaHVuayBzaXplXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZ2V0Y29tcG5hbWUoKSwgYidvZGQnKQogCiAgICAgZGVmIHRlc3Rfd3JpdGVfcGFyYW1zX3JhaXNlcyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CmluZGV4IDIyYzI2Y2MuLmMwNmM5NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQpAQCAtMTMyMywyMCArMTMyMywyMSBAQAogY2xhc3MgVGVzdFBhcnNlckRlZmF1bHQ0MihQYXJzZXJUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBhY3Rpb25zIHdpdGggYSBwYXJzZXItbGV2ZWwgZGVmYXVsdCBvZiA0MiIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhhcmd1bWVudF9kZWZhdWx0PTQyLCB2ZXJzaW9uPScxLjAnKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcoYXJndW1lbnRfZGVmYXVsdD00MikKICAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gWworICAgICAgICBTaWcoJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzEuMCcpLAogICAgICAgICBTaWcoJ2ZvbycsIG5hcmdzPSc/JyksCiAgICAgICAgIFNpZygnYmFyJywgbmFyZ3M9JyonKSwKICAgICAgICAgU2lnKCctLWJheicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpLAogICAgIF0KICAgICBmYWlsdXJlcyA9IFsnLXgnXQogICAgIHN1Y2Nlc3NlcyA9IFsKLSAgICAgICAgKCcnLCBOUyhmb289NDIsIGJhcj00MiwgYmF6PTQyKSksCi0gICAgICAgICgnYScsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PTQyKSksCi0gICAgICAgICgnYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9NDIpKSwKLSAgICAgICAgKCctLWJheicsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9VHJ1ZSkpLAotICAgICAgICAoJ2EgLS1iYXonLCBOUyhmb289J2EnLCBiYXI9NDIsIGJhej1UcnVlKSksCi0gICAgICAgICgnLS1iYXogYSBiJywgTlMoZm9vPSdhJywgYmFyPVsnYiddLCBiYXo9VHJ1ZSkpLAorICAgICAgICAoJycsIE5TKGZvbz00MiwgYmFyPTQyLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhJywgTlMoZm9vPSdhJywgYmFyPTQyLCBiYXo9NDIsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCdhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej00MiwgdmVyc2lvbj00MikpLAorICAgICAgICAoJy0tYmF6JywgTlMoZm9vPTQyLCBiYXI9NDIsIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCisgICAgICAgICgnYSAtLWJheicsIE5TKGZvbz0nYScsIGJhcj00MiwgYmF6PVRydWUsIHZlcnNpb249NDIpKSwKKyAgICAgICAgKCctLWJheiBhIGInLCBOUyhmb289J2EnLCBiYXI9WydiJ10sIGJhej1UcnVlLCB2ZXJzaW9uPTQyKSksCiAgICAgXQogCiAKQEAgLTI5MjcsMTAgKzI5MjgsOSBAQAogICAgICAgICAgICAgICAgIHBhcnNlcl90ZXh0ID0gc2ZpbGUuZ2V0dmFsdWUoKQogICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QodGVzdGVyLCBwYXJzZXJfdGV4dCkKIAotICAgICAgICAjIGFkZCB0ZXN0cyBmb3Ige2Zvcm1hdCxwcmludH1fe3VzYWdlLGhlbHAsdmVyc2lvbn0KKyAgICAgICAgIyBhZGQgdGVzdHMgZm9yIHtmb3JtYXQscHJpbnR9X3t1c2FnZSxoZWxwfQogICAgICAgICBmb3IgZnVuY19zdWZmaXgsIHN0ZF9uYW1lIGluIFsoJ3VzYWdlJywgJ3N0ZG91dCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hlbHAnLCAnc3Rkb3V0JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndmVyc2lvbicsICdzdGRlcnInKV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnaGVscCcsICdzdGRvdXQnKV06CiAgICAgICAgICAgICBBZGRUZXN0cyhjbHMsIGZ1bmNfc3VmZml4LCBzdGRfbmFtZSkKIAogYmFzZXMgPSBUZXN0Q2FzZSwKQEAgLTI5NDEsOCArMjk0MSw5IEBACiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgYXJndW1lbnQgaGVscCBhbGlnbnMgd2hlbiBvcHRpb25zIGFyZSBsb25nZXIiIiIKIAogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsIGRlc2NyaXB0aW9uPSdERVNDUklQVElPTicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycsIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlcGlsb2c9J0VQSUxPRycpCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScwLjEnKSwKICAgICAgICAgU2lnKCcteCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGhlbHA9J1ggSEVMUCcpLAogICAgICAgICBTaWcoJy0teScsIGhlbHA9J1kgSEVMUCcpLAogICAgICAgICBTaWcoJ2ZvbycsIGhlbHA9J0ZPTyBIRUxQJyksCkBAIC0yOTc3LDggKzI5NzgsOSBAQAogICAgICIiIk1ha2Ugc3VyZSB0aGF0IGFyZ3VtZW50IGhlbHAgYWxpZ25zIHdoZW4gb3B0aW9ucyBhcmUgbG9uZ2VyIiIiCiAKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nREVTQ1JJUFRJT04nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnLCB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdFUElMT0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyksCiAgICAgICAgIFNpZygnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBoZWxwPSdYIEhFTFAnKSwKICAgICAgICAgU2lnKCctLXknLCBoZWxwPSdZIEhFTFAnKSwKICAgICAgICAgU2lnKCdmb28nLCBoZWxwPSdGT08gSEVMUCcpLApAQCAtMzE0NSw5ICszMTQ3LDkgQEAKIGNsYXNzIFRlc3RIZWxwV3JhcHBpbmdMb25nTmFtZXMoSGVscFRlc3RDYXNlKToKICAgICAiIiJNYWtlIHN1cmUgdGhhdCB0ZXh0IGFmdGVyIGxvbmcgbmFtZXMgc3RhcnRzIG9uIHRoZSBuZXh0IGxpbmUiIiIKIAotICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcodXNhZ2U9J1VTQUdFJywgZGVzY3JpcHRpb249ICdEIEQnICogMzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPSdWIFYnKjMwKQorICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcodXNhZ2U9J1VTQUdFJywgZGVzY3JpcHRpb249ICdEIEQnICogMzApCiAgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFsKKyAgICAgICAgU2lnKCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPSdWIFYnICogMzApLAogICAgICAgICBTaWcoJy14JywgbWV0YXZhcj0nWCcgKiAyNSwgaGVscD0nWEggWEgnICogMjApLAogICAgICAgICBTaWcoJ3knLCBtZXRhdmFyPSd5JyAqIDI1LCBoZWxwPSdZSCBZSCcgKiAyMCksCiAgICAgXQpAQCAtMzc1MCw4ICszNzUyLDkgQEAKIGNsYXNzIFRlc3RIZWxwVmVyc2lvbk9wdGlvbmFsKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGF0IHRoZSAtLXZlcnNpb24gYXJndW1lbnQgY2FuIGJlIHN1cHByZXNzZWQgaGVscCBtZXNzYWdlcyIiIgogCi0gICAgcGFyc2VyX3NpZ25hdHVyZSA9IFNpZyhwcm9nPSdQUk9HJywgdmVyc2lvbj0nMS4wJykKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnKQogICAgIGFyZ3VtZW50X3NpZ25hdHVyZXMgPSBbCisgICAgICAgIFNpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJyksCiAgICAgICAgIFNpZygnLS1mb28nLCBoZWxwPSdmb28gaGVscCcpLAogICAgICAgICBTaWcoJ3NwYW0nLCBoZWxwPSdzcGFtIGhlbHAnKSwKICAgICBdCkBAIC0zOTg0LDggKzM5ODcsOCBAQAogY2xhc3MgVGVzdEhlbHBTdWJwYXJzZXJzT3JkZXJpbmcoSGVscFRlc3RDYXNlKToKICAgICAiIiJUZXN0IG9yZGVyaW5nIG9mIHN1YmNvbW1hbmRzIGluIGhlbHAgbWF0Y2hlcyB0aGUgY29kZSIiIgogICAgIHBhcnNlcl9zaWduYXR1cmUgPSBTaWcocHJvZz0nUFJPRycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249JzAuMScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbj0nZGlzcGxheSBzb21lIHN1YmNvbW1hbmRzJykKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMC4xJyldCiAKICAgICBzdWJwYXJzZXJzX3NpZ25hdHVyZXMgPSBbU2lnKG5hbWU9bmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gKCdhJywgJ2InLCAnYycsICdkJywgJ2UnKV0KQEAgLTQwMTMsOCArNDAxNiw4IEBACiBjbGFzcyBUZXN0SGVscFN1YnBhcnNlcnNXaXRoSGVscE9yZGVyaW5nKEhlbHBUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBvcmRlcmluZyBvZiBzdWJjb21tYW5kcyBpbiBoZWxwIG1hdGNoZXMgdGhlIGNvZGUiIiIKICAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPScwLjEnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249J2Rpc3BsYXkgc29tZSBzdWJjb21tYW5kcycpCisgICAgYXJndW1lbnRfc2lnbmF0dXJlcyA9IFtTaWcoJy12JywgJy0tdmVyc2lvbicsIGFjdGlvbj0ndmVyc2lvbicsIHZlcnNpb249JzAuMScpXQogCiAgICAgc3ViY29tbWFuZF9kYXRhID0gKCgnYScsICdhIHN1YmNvbW1hbmQgaGVscCcpLAogICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAnYiBzdWJjb21tYW5kIGhlbHAnKSwKQEAgLTQwNTIsNiArNDA1NSwzNyBAQAogICAgICAgICAnJycKIAogCisKK2NsYXNzIFRlc3RIZWxwTWV0YXZhclR5cGVGb3JtYXR0ZXIoSGVscFRlc3RDYXNlKToKKyAgICAiIiIiIiIKKworICAgIGRlZiBjdXN0b21fdHlwZShzdHJpbmcpOgorICAgICAgICByZXR1cm4gc3RyaW5nCisKKyAgICBwYXJzZXJfc2lnbmF0dXJlID0gU2lnKHByb2c9J1BST0cnLCBkZXNjcmlwdGlvbj0nZGVzY3JpcHRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyX2NsYXNzPWFyZ3BhcnNlLk1ldGF2YXJUeXBlSGVscEZvcm1hdHRlcikKKyAgICBhcmd1bWVudF9zaWduYXR1cmVzID0gW1NpZygnYScsIHR5cGU9aW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZygnLWInLCB0eXBlPWN1c3RvbV90eXBlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZygnLWMnLCB0eXBlPWZsb2F0LCBtZXRhdmFyPSdTT01FIEZMT0FUJyldCisgICAgYXJndW1lbnRfZ3JvdXBfc2lnbmF0dXJlcyA9IFtdCisgICAgdXNhZ2UgPSAnJydcCisgICAgICAgIHVzYWdlOiBQUk9HIFstaF0gWy1iIGN1c3RvbV90eXBlXSBbLWMgU09NRSBGTE9BVF0gaW50CisgICAgICAgICcnJworICAgIGhlbHAgPSB1c2FnZSArICcnJ1wKKworICAgICAgICBkZXNjcmlwdGlvbgorCisgICAgICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgICAgIGludAorCisgICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICAtaCwgLS1oZWxwICAgICAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAorICAgICAgICAgIC1iIGN1c3RvbV90eXBlCisgICAgICAgICAgLWMgU09NRSBGTE9BVAorICAgICAgICAnJycKKyAgICB2ZXJzaW9uID0gJycKKworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgT3B0aW9uYWwvUG9zaXRpb25hbCBjb25zdHJ1Y3RvciB0ZXN0cwogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC00MjgwLDMyICs0MzE0LDI4IEBACiAgICAgICAgICAgICBwYXJzZXIuZm9ybWF0X2hlbHAoKSwKICAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3Rkb3V0KQogCi0gICAgZGVmIGFzc2VydFByaW50VmVyc2lvbkV4aXQoc2VsZiwgcGFyc2VyLCBhcmdzX3N0cik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBwYXJzZXIuZm9ybWF0X3ZlcnNpb24oKSwKLSAgICAgICAgICAgIHNlbGYuX2dldF9lcnJvcihwYXJzZXIucGFyc2VfYXJncywgYXJnc19zdHIuc3BsaXQoKSkuc3RkZXJyKQotCiAgICAgZGVmIGFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3Ioc2VsZiwgcGFyc2VyLCAqYXJncyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IsIHBhcnNlci5wYXJzZV9hcmdzLCBhcmdzKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbihzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIodmVyc2lvbj0nMS4wJykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCBhY3Rpb249J3ZlcnNpb24nLCB2ZXJzaW9uPScxLjAnKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLWgnKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLS1oZWxwJykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy12JykKLSAgICAgICAgc2VsZi5hc3NlcnRQcmludFZlcnNpb25FeGl0KHBhcnNlciwgJy0tdmVyc2lvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX2Zvcm1hdChzZWxmKToKLSAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFBQJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nJShwcm9nKXMgMy41JykKICAgICAgICAgbXNnID0gc2VsZi5fZ2V0X2Vycm9yKHBhcnNlci5wYXJzZV9hcmdzLCBbJy12J10pLnN0ZGVycgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQUFAgMy41XG4nLCBtc2cpCiAKICAgICBkZWYgdGVzdF92ZXJzaW9uX25vX2hlbHAoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKGFkZF9oZWxwPUZhbHNlLCB2ZXJzaW9uPScxLjAnKQorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihhZGRfaGVscD1GYWxzZSkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXYnLCAnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy1oJykKICAgICAgICAgc2VsZi5hc3NlcnRBcmd1bWVudFBhcnNlckVycm9yKHBhcnNlciwgJy0taGVscCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctdicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsICctLXZlcnNpb24nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgcGFyc2VyLCAnZm9ybWF0X3ZlcnNpb24nKQogCiAgICAgZGVmIHRlc3RfdmVyc2lvbl9hY3Rpb24oc2VsZik6CiAgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHByb2c9J1hYWCcpCkBAIC00MzI1LDEyICs0MzU1LDEzIEBACiAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy14JywgYWN0aW9uPSdoZWxwJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXknLCBhY3Rpb249J3ZlcnNpb24nKQogICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCAnLXgnKQotICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCAnLXknKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLXYnKQogICAgICAgICBzZWxmLmFzc2VydEFyZ3VtZW50UGFyc2VyRXJyb3IocGFyc2VyLCAnLS12ZXJzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHBhcnNlciwgJ2Zvcm1hdF92ZXJzaW9uJykKIAogICAgIGRlZiB0ZXN0X2hlbHBfdmVyc2lvbl9leHRyYV9hcmd1bWVudHMoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKHZlcnNpb249JzEuMCcpCisgICAgICAgIHBhcnNlciA9IEVycm9yUmFpc2luZ0FyZ3VtZW50UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJzaW9uJywgYWN0aW9uPSd2ZXJzaW9uJywgdmVyc2lvbj0nMS4wJykKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXgnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCd5JykKIApAQCAtNDM0Miw4ICs0MzczLDcgQEAKICAgICAgICAgICAgICAgICBmb3JtYXQgPSAnJXMgJSVzICVzJyAlIChwcmVmaXgsIHN1ZmZpeCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRIZWxwRXhpdChwYXJzZXIsIGZvcm1hdCAlICctaCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFByaW50SGVscEV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLS1oZWxwJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UHJpbnRWZXJzaW9uRXhpdChwYXJzZXIsIGZvcm1hdCAlICctdicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFByaW50VmVyc2lvbkV4aXQocGFyc2VyLCBmb3JtYXQgJSAnLS12ZXJzaW9uJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBwYXJzZXIsICdmb3JtYXRfdmVyc2lvbicpCiAKIAogIyA9PT09PT09PT09PT09PT09PT09PT09CkBAIC00Mzk4LDcgKzQ0MjgsNyBAQAogICAgICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJykKICAgICAgICAgc3RyaW5nID0gKAogICAgICAgICAgICAgIkFyZ3VtZW50UGFyc2VyKHByb2c9J1BST0cnLCB1c2FnZT1Ob25lLCBkZXNjcmlwdGlvbj1Ob25lLCAiCi0gICAgICAgICAgICAidmVyc2lvbj1Ob25lLCBmb3JtYXR0ZXJfY2xhc3M9JXIsIGNvbmZsaWN0X2hhbmRsZXI9J2Vycm9yJywgIgorICAgICAgICAgICAgImZvcm1hdHRlcl9jbGFzcz0lciwgY29uZmxpY3RfaGFuZGxlcj0nZXJyb3InLCAiCiAgICAgICAgICAgICAiYWRkX2hlbHA9VHJ1ZSkiICUgYXJncGFyc2UuSGVscEZvcm1hdHRlcikKICAgICAgICAgc2VsZi5hc3NlcnRTdHJpbmdFcXVhbChwYXJzZXIsIHN0cmluZykKIApAQCAtNDQ0Miw3ICs0NDcyLDcgQEAKICAgICBkZWYgX3Rlc3RfbW9kdWxlX2VuY29kaW5nKHNlbGYsIHBhdGgpOgogICAgICAgICBwYXRoLCBfID0gb3MucGF0aC5zcGxpdGV4dChwYXRoKQogICAgICAgICBwYXRoICs9ICIucHkiCi0gICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmOCcpIGFzIGY6CisgICAgICAgIHdpdGggY29kZWNzLm9wZW4ocGF0aCwgJ3InLCAndXRmLTgnKSBhcyBmOgogICAgICAgICAgICAgZi5yZWFkKCkKIAogICAgIGRlZiB0ZXN0X2FyZ3BhcnNlX21vZHVsZV9lbmNvZGluZyhzZWxmKToKQEAgLTQ0ODQsNiArNDUxNCw2NyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCkKIAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09CisjIE1lc3NhZ2VDb250ZW50RXJyb3IgdGVzdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PQorCitjbGFzcyBUZXN0TWVzc2FnZUNvbnRlbnRFcnJvcihUZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2FyZ3VtZW50X25hbWVfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJywgdHlwZT1zdHIpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yZXFfb3B0JywgdHlwZT1pbnQsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ25lZWRfb25lJywgdHlwZT1zdHIsIG5hcmdzPScrJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoW10pCisgICAgICAgIG1zZyA9IHN0cihjbS5leGNlcHRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX3BvcycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAncmVxX29wdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobXNnLCAnbmVlZF9vbmUnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWydteVhhcmd1bWVudCddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFsnbXlYYXJndW1lbnQnLCAnLXJlcV9vcHQ9MSddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ25lZWRfb25lJykKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX29wdGlvbmFsX25vdF9pbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBwYXJzZXIgPSBFcnJvclJhaXNpbmdBcmd1bWVudFBhcnNlcihwcm9nPSdQUk9HJywgdXNhZ2U9JycpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ3JlcV9wb3MnLCB0eXBlPXN0cikKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yZXFfb3B0JywgdHlwZT1pbnQsIHJlcXVpcmVkPVRydWUpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3B0X29wdCcsIHR5cGU9Ym9vbCwgbmFyZ3M9Jz8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBcmd1bWVudFBhcnNlckVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHBhcnNlci5wYXJzZV9hcmdzKFtdKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdF9vcHQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFyZ3VtZW50UGFyc2VyRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgcGFyc2VyLnBhcnNlX2FyZ3MoWyctLXJlcV9vcHQ9MSddKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG1zZywgJ3JlcV9wb3MnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ3JlcV9vcHQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgJ29wdF9vcHQnKQorCisgICAgZGVmIHRlc3Rfb3B0aW9uYWxfcG9zaXRpb25hbF9ub3RfaW5fbWVzc2FnZShzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIocHJvZz0nUFJPRycsIHVzYWdlPScnKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdyZXFfcG9zJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnb3B0aW9uYWxfcG9zaXRpb25hbCcsIG5hcmdzPSc/JywgZGVmYXVsdD0nZWdncycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRQYXJzZXJFcnJvcikgYXMgY206CisgICAgICAgICAgICBwYXJzZXIucGFyc2VfYXJncyhbXSkKKyAgICAgICAgbXNnID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChtc2csICdyZXFfcG9zJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihtc2csICdvcHRpb25hbF9wb3NpdGlvbmFsJykKKworCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBDaGVjayB0aGF0IHRoZSB0eXBlIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IG9uY2UKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC00NzgyLDEzICs0ODczLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXRlbXMpLCBzb3J0ZWQoYXJncGFyc2UuX19hbGxfXykpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICAjIHNpbGVuY2Ugd2FybmluZ3MgYWJvdXQgdmVyc2lvbiBhcmd1bWVudCAtIHRoZXNlIGFyZSBleHBlY3RlZAotICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygKLSAgICAgICAgICAgICgnVGhlICJ2ZXJzaW9uIiBhcmd1bWVudCB0byBBcmd1bWVudFBhcnNlciBpcyBkZXByZWNhdGVkLicsCi0gICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSwKLSAgICAgICAgICAgICgnVGhlIChmb3JtYXR8cHJpbnQpX3ZlcnNpb24gbWV0aG9kIGlzIGRlcHJlY2F0ZWQnLAotICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKICAgICAjIFJlbW92ZSBnbG9iYWwgcmVmZXJlbmNlcyB0byBhdm9pZCBsb29raW5nIGxpa2Ugd2UgaGF2ZSByZWZsZWFrcy4KICAgICBSRmlsZS5zZWVuID0ge30KICAgICBXRmlsZS5zZWVuID0gc2V0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkgYi9MaWIvdGVzdC90ZXN0X2FycmF5LnB5CmluZGV4IGUyNmU5YWQuLjU0NGMyY2UgMTAwNzU1Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXJyYXkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hcnJheS5weQpAQCAtMTYsNiArMTYsMTMgQEAKIGltcG9ydCBhcnJheQogZnJvbSBhcnJheSBpbXBvcnQgX2FycmF5X3JlY29uc3RydWN0b3IgYXMgYXJyYXlfcmVjb25zdHJ1Y3RvcgogCit0cnk6CisgICAgIyBUcnkgdG8gZGV0ZXJtaW5lIGF2YWlsYWJpbGl0eSBvZiBsb25nIGxvbmcgaW5kZXBlbmRlbnRseQorICAgICMgb2YgdGhlIGFycmF5IG1vZHVsZSB1bmRlciB0ZXN0CisgICAgc3RydWN0LmNhbGNzaXplKCdAcScpCisgICAgaGF2ZV9sb25nX2xvbmcgPSBUcnVlCitleGNlcHQgc3RydWN0LmVycm9yOgorICAgIGhhdmVfbG9uZ19sb25nID0gRmFsc2UKIAogY2xhc3MgQXJyYXlTdWJjbGFzcyhhcnJheS5hcnJheSk6CiAgICAgcGFzcwpAQCAtMjYsNiArMzMsOCBAQAogCiB0ZXN0cyA9IFtdICMgbGlzdCB0byBhY2N1bXVsYXRlIGFsbCB0ZXN0cwogdHlwZWNvZGVzID0gInViQmhIaUlsTGZkIgoraWYgaGF2ZV9sb25nX2xvbmc6CisgICAgdHlwZWNvZGVzICs9ICdxUScKIAogY2xhc3MgQmFkQ29uc3RydWN0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjA5LDEwICsyMTgsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiaVsxXSwgbGVuKGEpKQogCiAgICAgZGVmIHRlc3RfYnl0ZXN3YXAoc2VsZik6Ci0gICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCisgICAgICAgIGlmIHNlbGYudHlwZWNvZGUgPT0gJ3UnOgorICAgICAgICAgICAgZXhhbXBsZSA9ICdcVTAwMTAwMTAwJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhhbXBsZSA9IHNlbGYuZXhhbXBsZQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgZXhhbXBsZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhLmJ5dGVzd2FwLCA0MikKICAgICAgICAgaWYgYS5pdGVtc2l6ZSBpbiAoMSwgMiwgNCwgOCk6Ci0gICAgICAgICAgICBiID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQorICAgICAgICAgICAgYiA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIGV4YW1wbGUpCiAgICAgICAgICAgICBiLmJ5dGVzd2FwKCkKICAgICAgICAgICAgIGlmIGEuaXRlbXNpemU9PTE6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQpAQCAtMjcyLDYgKzI4NSwyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLngsIGIueCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShhKSwgdHlwZShiKSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IGFycmF5LmFycmF5KHNlbGYudHlwZWNvZGUsIHNlbGYuZXhhbXBsZSkKKyAgICAgICAgb3JnaXQgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMob3JnaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShvcmdpdCksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpKQorCisgICAgICAgIGlmIGxlbihkYXRhKToKKyAgICAgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSlbMTpdKQorCiAgICAgZGVmIHRlc3RfaW5zZXJ0KHNlbGYpOgogICAgICAgICBhID0gYXJyYXkuYXJyYXkoc2VsZi50eXBlY29kZSwgc2VsZi5leGFtcGxlKQogICAgICAgICBhLmluc2VydCgwLCBzZWxmLmV4YW1wbGVbMF0pCkBAIC05OTEsMTQgKzEwMTgsMTQgQEAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Zfd2l0aF9idWZmZXIoc2VsZik6CiAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlLCBzZWxmLmV4YW1wbGUpCi0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUoJzRQaScpCisgICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjdm9ianNpemUoJ1BuMlBpJykKICAgICAgICAgYnVmZmVyX3NpemUgPSBhLmJ1ZmZlcl9pbmZvKClbMV0gKiBhLml0ZW1zaXplCiAgICAgICAgIHN1cHBvcnQuY2hlY2tfc2l6ZW9mKHNlbGYsIGEsIGJhc2VzaXplICsgYnVmZmVyX3NpemUpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Zfd2l0aG91dF9idWZmZXIoc2VsZik6CiAgICAgICAgIGEgPSBhcnJheS5hcnJheShzZWxmLnR5cGVjb2RlKQotICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCc0UGknKQorICAgICAgICBiYXNlc2l6ZSA9IHN1cHBvcnQuY2FsY3ZvYmpzaXplKCdQbjJQaScpCiAgICAgICAgIHN1cHBvcnQuY2hlY2tfc2l6ZW9mKHNlbGYsIGEsIGJhc2VzaXplKQogCiAKQEAgLTEwMTgsNiArMTA0NSwxNiBAQAogICAgIG1pbml0ZW1zaXplID0gMgogCiAgICAgZGVmIHRlc3RfdW5pY29kZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGN0eXBlcworICAgICAgICAgICAgc2l6ZW9mX3djaGFyID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgaW1wb3J0IHN5cworICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2l6ZW9mX3djaGFyID0gMgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzaXplb2Zfd2NoYXIgPSA0CisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhcnJheS5hcnJheSwgJ2InLCAnZm9vJykKIAogICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ3UnLCAnXHhhMFx4YzJcdTEyMzQnKQpAQCAtMTAyNyw2ICsxMDY0LDcgQEAKICAgICAgICAgYS5mcm9tdW5pY29kZSgnXHgxMWFiY1x4ZmZcdTEyMzQnKQogICAgICAgICBzID0gYS50b3VuaWNvZGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICdceGEwXHhjMlx1MTIzNCBceDExYWJjXHhmZlx1MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5pdGVtc2l6ZSwgc2l6ZW9mX3djaGFyKQogCiAgICAgICAgIHMgPSAnXHgwMD0iXCdhXFxiXHg4MFx4ZmZcdTAwMDBcdTAwMDFcdTEyMzQnCiAgICAgICAgIGEgPSBhcnJheS5hcnJheSgndScsIHMpCkBAIC0xMjE4LDYgKzEyNTYsMTggQEAKICAgICBtaW5pdGVtc2l6ZSA9IDQKIHRlc3RzLmFwcGVuZChVbnNpZ25lZExvbmdUZXN0KQogCitAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXZlX2xvbmdfbG9uZywgJ25lZWQgbG9uZyBsb25nIHN1cHBvcnQnKQorY2xhc3MgTG9uZ0xvbmdUZXN0KFNpZ25lZE51bWJlclRlc3QpOgorICAgIHR5cGVjb2RlID0gJ3EnCisgICAgbWluaXRlbXNpemUgPSA4Cit0ZXN0cy5hcHBlbmQoTG9uZ0xvbmdUZXN0KQorCitAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXZlX2xvbmdfbG9uZywgJ25lZWQgbG9uZyBsb25nIHN1cHBvcnQnKQorY2xhc3MgVW5zaWduZWRMb25nTG9uZ1Rlc3QoVW5zaWduZWROdW1iZXJUZXN0KToKKyAgICB0eXBlY29kZSA9ICdRJworICAgIG1pbml0ZW1zaXplID0gOAordGVzdHMuYXBwZW5kKFVuc2lnbmVkTG9uZ0xvbmdUZXN0KQorCiBjbGFzcyBGUFRlc3QoTnVtYmVyVGVzdCk6CiAgICAgZXhhbXBsZSA9IFstNDIuMCwgMCwgNDIsIDFlNSwgLTFlMTBdCiAgICAgc21hbGxlcmV4YW1wbGUgPSBbLTQyLjAsIDAsIDQyLCAxZTUsIC0yZTEwXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3QucHkgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQppbmRleCAyODg3MDkyLi5hODg1M2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzdC5weQpAQCAtMSw2ICsxLDEwIEBACi1pbXBvcnQgc3lzLCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAogaW1wb3J0IGFzdAoraW1wb3J0IHdlYWtyZWYKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGRlZiB0b190dXBsZSh0KToKICAgICBpZiB0IGlzIE5vbmUgb3IgaXNpbnN0YW5jZSh0LCAoc3RyLCBpbnQsIGNvbXBsZXgpKToKQEAgLTUyLDYgKzU2LDkgQEAKICAgICAid2hpbGUgdjpwYXNzIiwKICAgICAjIElmCiAgICAgImlmIHY6cGFzcyIsCisgICAgIyBXaXRoCisgICAgIndpdGggeCBhcyB5OiBwYXNzIiwKKyAgICAid2l0aCB4IGFzIHksIHogYXMgcTogcGFzcyIsCiAgICAgIyBSYWlzZQogICAgICJyYWlzZSBFeGNlcHRpb24oJ3N0cmluZycpIiwKICAgICAjIFRyeUV4Y2VwdApAQCAtMTkxLDYgKzE5OCw5IEBACiAgICAgZGVmIHRlc3RfQVNUX29iamVjdHMoc2VsZik6CiAgICAgICAgIHggPSBhc3QuQVNUKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9maWVsZHMsICgpKQorICAgICAgICB4LmZvb2JhciA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb29iYXIsIDQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19kaWN0X19bImZvb2JhciJdLCA0MikKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKICAgICAgICAgICAgIHgudmFyYXJnCkBAIC0xOTksNiArMjA5LDE3IEBACiAgICAgICAgICAgICAjICJfYXN0LkFTVCBjb25zdHJ1Y3RvciB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIgogICAgICAgICAgICAgYXN0LkFTVCgyKQogCisgICAgZGVmIHRlc3RfQVNUX2dhcmJhZ2VfY29sbGVjdGlvbihzZWxmKToKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYSA9IGFzdC5BU1QoKQorICAgICAgICBhLnggPSBYKCkKKyAgICAgICAgYS54LmEgPSBhCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGEueCkKKyAgICAgICAgZGVsIGEKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVmKCkpCisKICAgICBkZWYgdGVzdF9zbmlwcGV0cyhzZWxmKToKICAgICAgICAgZm9yIGlucHV0LCBvdXRwdXQsIGtpbmQgaW4gKChleGVjX3Rlc3RzLCBleGVjX3Jlc3VsdHMsICJleGVjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2luZ2xlX3Rlc3RzLCBzaW5nbGVfcmVzdWx0cywgInNpbmdsZSIpLApAQCAtMzkwLDcgKzQxMSw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIDEvMAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGFzdC5wYXJzZSwgciInXFUnIikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgYXN0LmxpdGVyYWxfZXZhbChyIidcVSciKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZS5leGNlcHRpb24uX19jb250ZXh0X18pCiAKICAgICBkZWYgdGVzdF9kdW1wKHNlbGYpOgogICAgICAgICBub2RlID0gYXN0LnBhcnNlKCdzcGFtKGVnZ3MsICJhbmQgY2hlZXNlIiknKQpAQCAtNTA0LDggKzUyNyw0MTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbigiaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiBOb25lIiwgc3RyKGNtLmV4Y2VwdGlvbikpCiAKIAorY2xhc3MgQVNUVmFsaWRhdG9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIG1vZChzZWxmLCBtb2QsIG1zZz1Ob25lLCBtb2RlPSJleGVjIiwgKiwgZXhjPVZhbHVlRXJyb3IpOgorICAgICAgICBtb2QubGluZW5vID0gbW9kLmNvbF9vZmZzZXQgPSAwCisgICAgICAgIGFzdC5maXhfbWlzc2luZ19sb2NhdGlvbnMobW9kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4YykgYXMgY206CisgICAgICAgICAgICBjb21waWxlKG1vZCwgIjx0ZXN0PiIsIG1vZGUpCisgICAgICAgIGlmIG1zZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBzdHIoY20uZXhjZXB0aW9uKSkKKworICAgIGRlZiBleHByKHNlbGYsIG5vZGUsIG1zZz1Ob25lLCAqLCBleGM9VmFsdWVFcnJvcik6CisgICAgICAgIG1vZCA9IGFzdC5Nb2R1bGUoW2FzdC5FeHByKG5vZGUpXSkKKyAgICAgICAgc2VsZi5tb2QobW9kLCBtc2csIGV4Yz1leGMpCisKKyAgICBkZWYgc3RtdChzZWxmLCBzdG10LCBtc2c9Tm9uZSk6CisgICAgICAgIG1vZCA9IGFzdC5Nb2R1bGUoW3N0bXRdKQorICAgICAgICBzZWxmLm1vZChtb2QsIG1zZykKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgbSA9IGFzdC5JbnRlcmFjdGl2ZShbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSkKKyAgICAgICAgc2VsZi5tb2QobSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiLCAic2luZ2xlIikKKyAgICAgICAgbSA9IGFzdC5FeHByZXNzaW9uKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLm1vZChtLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIsICJldmFsIikKKworICAgIGRlZiBfY2hlY2tfYXJndW1lbnRzKHNlbGYsIGZhYywgY2hlY2spOgorICAgICAgICBkZWYgYXJndW1lbnRzKGFyZ3M9Tm9uZSwgdmFyYXJnPU5vbmUsIHZhcmFyZ2Fubm90YXRpb249Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICBrd29ubHlhcmdzPU5vbmUsIGt3YXJnPU5vbmUsIGt3YXJnYW5ub3RhdGlvbj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzPU5vbmUsIGt3X2RlZmF1bHRzPU5vbmUpOgorICAgICAgICAgICAgaWYgYXJncyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGFyZ3MgPSBbXQorICAgICAgICAgICAgaWYga3dvbmx5YXJncyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGt3b25seWFyZ3MgPSBbXQorICAgICAgICAgICAgaWYgZGVmYXVsdHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWZhdWx0cyA9IFtdCisgICAgICAgICAgICBpZiBrd19kZWZhdWx0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGt3X2RlZmF1bHRzID0gW10KKyAgICAgICAgICAgIGFyZ3MgPSBhc3QuYXJndW1lbnRzKGFyZ3MsIHZhcmFyZywgdmFyYXJnYW5ub3RhdGlvbiwga3dvbmx5YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnLCBrd2FyZ2Fubm90YXRpb24sIGRlZmF1bHRzLCBrd19kZWZhdWx0cykKKyAgICAgICAgICAgIHJldHVybiBmYWMoYXJncykKKyAgICAgICAgYXJncyA9IFthc3QuYXJnKCJ4IiwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXQorICAgICAgICBjaGVjayhhcmd1bWVudHMoYXJncz1hcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjaGVjayhhcmd1bWVudHModmFyYXJnYW5ub3RhdGlvbj1hc3QuTnVtKDMpKSwKKyAgICAgICAgICAgICAgInZhcmFyZ2Fubm90YXRpb24gYnV0IG5vIHZhcmFyZyIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyh2YXJhcmdhbm5vdGF0aW9uPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCB2YXJhcmc9IngiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd29ubHlhcmdzPWFyZ3MpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd2FyZ2Fubm90YXRpb249YXN0Lk51bSg0MikpLAorICAgICAgICAgICAgICAgICAgICAgICAia3dhcmdhbm5vdGF0aW9uIGJ1dCBubyBrd2FyZyIpCisgICAgICAgIGNoZWNrKGFyZ3VtZW50cyhrd2FyZ2Fubm90YXRpb249YXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnPSJ4IiksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGRlZmF1bHRzPVthc3QuTnVtKDMpXSksCisgICAgICAgICAgICAgICAgICAgICAgICJtb3JlIHBvc2l0aW9uYWwgZGVmYXVsdHMgdGhhbiBhcmdzIikKKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGt3X2RlZmF1bHRzPVthc3QuTnVtKDQpXSksCisgICAgICAgICAgICAgICAgICAgICAgICJsZW5ndGggb2Yga3dvbmx5YXJncyBpcyBub3QgdGhlIHNhbWUgYXMga3dfZGVmYXVsdHMiKQorICAgICAgICBhcmdzID0gW2FzdC5hcmcoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKV0KKyAgICAgICAgY2hlY2soYXJndW1lbnRzKGFyZ3M9YXJncywgZGVmYXVsdHM9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgYXJncyA9IFthc3QuYXJnKCJhIiwgYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSksCisgICAgICAgICAgICAgICAgYXN0LmFyZygiYiIsIGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkpXQorICAgICAgICBjaGVjayhhcmd1bWVudHMoa3dvbmx5YXJncz1hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBrd19kZWZhdWx0cz1bTm9uZSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKKyAgICAgICAgYSA9IGFzdC5hcmd1bWVudHMoW10sIE5vbmUsIE5vbmUsIFtdLCBOb25lLCBOb25lLCBbXSwgW10pCisgICAgICAgIGYgPSBhc3QuRnVuY3Rpb25EZWYoIngiLCBhLCBbXSwgW10sIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChmLCAiZW1wdHkgYm9keSBvbiBGdW5jdGlvbkRlZiIpCisgICAgICAgIGYgPSBhc3QuRnVuY3Rpb25EZWYoIngiLCBhLCBbYXN0LlBhc3MoKV0sIFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGYsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZiA9IGFzdC5GdW5jdGlvbkRlZigieCIsIGEsIFthc3QuUGFzcygpXSwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChmLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiBmYWMoYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXN0LkZ1bmN0aW9uRGVmKCJ4IiwgYXJncywgW2FzdC5QYXNzKCldLCBbXSwgTm9uZSkKKyAgICAgICAgc2VsZi5fY2hlY2tfYXJndW1lbnRzKGZhYywgc2VsZi5zdG10KQorCisgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6CisgICAgICAgIGRlZiBjbHMoYmFzZXM9Tm9uZSwga2V5d29yZHM9Tm9uZSwgc3RhcmFyZ3M9Tm9uZSwga3dhcmdzPU5vbmUsCisgICAgICAgICAgICAgICAgYm9keT1Ob25lLCBkZWNvcmF0b3JfbGlzdD1Ob25lKToKKyAgICAgICAgICAgIGlmIGJhc2VzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYmFzZXMgPSBbXQorICAgICAgICAgICAgaWYga2V5d29yZHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBrZXl3b3JkcyA9IFtdCisgICAgICAgICAgICBpZiBib2R5IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYm9keSA9IFthc3QuUGFzcygpXQorICAgICAgICAgICAgaWYgZGVjb3JhdG9yX2xpc3QgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBkZWNvcmF0b3JfbGlzdCA9IFtdCisgICAgICAgICAgICByZXR1cm4gYXN0LkNsYXNzRGVmKCJteWNsYXNzIiwgYmFzZXMsIGtleXdvcmRzLCBzdGFyYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzLCBib2R5LCBkZWNvcmF0b3JfbGlzdCkKKyAgICAgICAgc2VsZi5zdG10KGNscyhiYXNlcz1bYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhrZXl3b3Jkcz1bYXN0LmtleXdvcmQoIngiLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhzdGFyYXJncz1hc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoa3dhcmdzPWFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgc2VsZi5zdG10KGNscyhib2R5PVtdKSwgImVtcHR5IGJvZHkgb24gQ2xhc3NEZWYiKQorICAgICAgICBzZWxmLnN0bXQoY2xzKGJvZHk9W05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuc3RtdChjbHMoZGVjb3JhdG9yX2xpc3Q9W2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9kZWxldGUoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuRGVsZXRlKFtdKSwgImVtcHR5IHRhcmdldHMgb24gRGVsZXRlIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5EZWxldGUoW05vbmVdKSwgIk5vbmUgZGlzYWxsb3dlZCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRGVsZXRlKFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIERlbCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2Fzc2lnbihzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW10sIGFzdC5OdW0oMykpLCAiZW1wdHkgdGFyZ2V0cyBvbiBBc3NpZ24iKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkFzc2lnbihbTm9uZV0sIGFzdC5OdW0oMykpLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Bc3NpZ24oW2FzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSldLCBhc3QuTnVtKDMpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzaWduKFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2F1Z2Fzc2lnbihzZWxmKToKKyAgICAgICAgYXVnID0gYXN0LkF1Z0Fzc2lnbihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBhc3QuQWRkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKSkKKyAgICAgICAgc2VsZi5zdG10KGF1ZywgIm11c3QgaGF2ZSBTdG9yZSBjb250ZXh0IikKKyAgICAgICAgYXVnID0gYXN0LkF1Z0Fzc2lnbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXN0LkFkZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXVnLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9mb3Ioc2VsZik6CisgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQorICAgICAgICB5ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQorICAgICAgICBwID0gYXN0LlBhc3MoKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCB5LCBbXSwgW10pLCAiZW1wdHkgYm9keSBvbiBGb3IiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcihhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCB5LCBbcF0sIFtdKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuRm9yKHgsIGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpLCBbcF0sIFtdKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgZSA9IGFzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCB5LCBbZV0sIFtdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkZvcih4LCB5LCBbcF0sIFtlXSksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3doaWxlKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LldoaWxlKGFzdC5OdW0oMyksIFtdLCBbXSksICJlbXB0eSBib2R5IG9uIFdoaWxlIikKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaGlsZShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2FzdC5QYXNzKCldLCBbXSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2hpbGUoYXN0Lk51bSgzKSwgW2FzdC5QYXNzKCldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X2lmKHNlbGYpOgorICAgICAgICBzZWxmLnN0bXQoYXN0LklmKGFzdC5OdW0oMyksIFtdLCBbXSksICJlbXB0eSBib2R5IG9uIElmIikKKyAgICAgICAgaSA9IGFzdC5JZihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgW2FzdC5QYXNzKCldLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KGksICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgaSA9IGFzdC5JZihhc3QuTnVtKDMpLCBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSwgW10pCisgICAgICAgIHNlbGYuc3RtdChpLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGkgPSBhc3QuSWYoYXN0Lk51bSgzKSwgW2FzdC5QYXNzKCldLAorICAgICAgICAgICAgICAgICAgIFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldKQorICAgICAgICBzZWxmLnN0bXQoaSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfd2l0aChzZWxmKToKKyAgICAgICAgcCA9IGFzdC5QYXNzKCkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtdLCBbcF0pLCAiZW1wdHkgaXRlbXMgb24gV2l0aCIpCisgICAgICAgIGkgPSBhc3Qud2l0aGl0ZW0oYXN0Lk51bSgzKSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtpXSwgW10pLCAiZW1wdHkgYm9keSBvbiBXaXRoIikKKyAgICAgICAgaSA9IGFzdC53aXRoaXRlbShhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgTm9uZSkKKyAgICAgICAgc2VsZi5zdG10KGFzdC5XaXRoKFtpXSwgW3BdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBpID0gYXN0LndpdGhpdGVtKGFzdC5OdW0oMyksIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkpCisgICAgICAgIHNlbGYuc3RtdChhc3QuV2l0aChbaV0sIFtwXSksICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKKyAgICAgICAgciA9IGFzdC5SYWlzZShOb25lLCBhc3QuTnVtKDMpKQorICAgICAgICBzZWxmLnN0bXQociwgIlJhaXNlIHdpdGggY2F1c2UgYnV0IG5vIGV4Y2VwdGlvbiIpCisgICAgICAgIHIgPSBhc3QuUmFpc2UoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIE5vbmUpCisgICAgICAgIHNlbGYuc3RtdChyLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHIgPSBhc3QuUmFpc2UoYXN0Lk51bSg0KSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChyLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF90cnkoc2VsZik6CisgICAgICAgIHAgPSBhc3QuUGFzcygpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtdLCBbXSwgW10sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJlbXB0eSBib2R5IG9uIFRyeSIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFthc3QuRXhwcihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSldLCBbXSwgW10sIFtwXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBbXSwgW10sIFtdKQorICAgICAgICBzZWxmLnN0bXQodCwgIlRyeSBoYXMgbmVpdGhlciBleGNlcHQgaGFuZGxlcnMgbm9yIGZpbmFsYm9keSIpCisgICAgICAgIHQgPSBhc3QuVHJ5KFtwXSwgW10sIFtwXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgIlRyeSBoYXMgb3JlbHNlIGJ1dCBubyBleGNlcHQgaGFuZGxlcnMiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIFthc3QuRXhjZXB0SGFuZGxlcihOb25lLCAieCIsIFtdKV0sIFtdLCBbXSkKKyAgICAgICAgc2VsZi5zdG10KHQsICJlbXB0eSBib2R5IG9uIEV4Y2VwdEhhbmRsZXIiKQorICAgICAgICBlID0gW2FzdC5FeGNlcHRIYW5kbGVyKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCAieSIsIFtwXSldCisgICAgICAgIHNlbGYuc3RtdChhc3QuVHJ5KFtwXSwgZSwgW10sIFtdKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBlID0gW2FzdC5FeGNlcHRIYW5kbGVyKE5vbmUsICJ4IiwgW3BdKV0KKyAgICAgICAgdCA9IGFzdC5UcnkoW3BdLCBlLCBbYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpXSwgW3BdKQorICAgICAgICBzZWxmLnN0bXQodCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICB0ID0gYXN0LlRyeShbcF0sIGUsIFtwXSwgW2FzdC5FeHByKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKV0pCisgICAgICAgIHNlbGYuc3RtdCh0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9hc3NlcnQoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuQXNzZXJ0KGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgYXNzcnQgPSBhc3QuQXNzZXJ0KGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSkKKyAgICAgICAgc2VsZi5zdG10KGFzc3J0LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9pbXBvcnQoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuSW1wb3J0KFtdKSwgImVtcHR5IG5hbWVzIG9uIEltcG9ydCIpCisKKyAgICBkZWYgdGVzdF9pbXBvcnRmcm9tKHNlbGYpOgorICAgICAgICBpbXAgPSBhc3QuSW1wb3J0RnJvbShOb25lLCBbYXN0LmFsaWFzKCJ4IiwgTm9uZSldLCAtNDIpCisgICAgICAgIHNlbGYuc3RtdChpbXAsICJsZXZlbCBsZXNzIHRoYW4gLTEiKQorICAgICAgICBzZWxmLnN0bXQoYXN0LkltcG9ydEZyb20oTm9uZSwgW10sIDApLCAiZW1wdHkgbmFtZXMgb24gSW1wb3J0RnJvbSIpCisKKyAgICBkZWYgdGVzdF9nbG9iYWwoc2VsZik6CisgICAgICAgIHNlbGYuc3RtdChhc3QuR2xvYmFsKFtdKSwgImVtcHR5IG5hbWVzIG9uIEdsb2JhbCIpCisKKyAgICBkZWYgdGVzdF9ub25sb2NhbChzZWxmKToKKyAgICAgICAgc2VsZi5zdG10KGFzdC5Ob25sb2NhbChbXSksICJlbXB0eSBuYW1lcyBvbiBOb25sb2NhbCIpCisKKyAgICBkZWYgdGVzdF9leHByKHNlbGYpOgorICAgICAgICBlID0gYXN0LkV4cHIoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuc3RtdChlLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9ib29sb3Aoc2VsZik6CisgICAgICAgIGIgPSBhc3QuQm9vbE9wKGFzdC5BbmQoKSwgW10pCisgICAgICAgIHNlbGYuZXhwcihiLCAibGVzcyB0aGFuIDIgdmFsdWVzIikKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbYXN0Lk51bSgzKV0pCisgICAgICAgIHNlbGYuZXhwcihiLCAibGVzcyB0aGFuIDIgdmFsdWVzIikKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbYXN0Lk51bSg0KSwgTm9uZV0pCisgICAgICAgIHNlbGYuZXhwcihiLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgYiA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBbYXN0Lk51bSg0KSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBzZWxmLmV4cHIoYiwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfdW5hcnlvcChzZWxmKToKKyAgICAgICAgdSA9IGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuZXhwcih1LCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9sYW1iZGEoc2VsZik6CisgICAgICAgIGEgPSBhc3QuYXJndW1lbnRzKFtdLCBOb25lLCBOb25lLCBbXSwgTm9uZSwgTm9uZSwgW10sIFtdKQorICAgICAgICBzZWxmLmV4cHIoYXN0LkxhbWJkYShhLCBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSksCisgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGRlZiBmYWMoYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYXN0LkxhbWJkYShhcmdzLCBhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpKQorICAgICAgICBzZWxmLl9jaGVja19hcmd1bWVudHMoZmFjLCBzZWxmLmV4cHIpCisKKyAgICBkZWYgdGVzdF9pZmV4cChzZWxmKToKKyAgICAgICAgbCA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgcyA9IGFzdC5OYW1lKCJ5IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIGZvciBhcmdzIGluIChzLCBsLCBsKSwgKGwsIHMsIGwpLCAobCwgbCwgcyk6CisgICAgICAgICAgICBzZWxmLmV4cHIoYXN0LklmRXhwKCphcmdzKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfZGljdChzZWxmKToKKyAgICAgICAgZCA9IGFzdC5EaWN0KFtdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCisgICAgICAgIHNlbGYuZXhwcihkLCAic2FtZSBudW1iZXIgb2Yga2V5cyBhcyB2YWx1ZXMiKQorICAgICAgICBkID0gYXN0LkRpY3QoW05vbmVdLCBbYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKV0pCisgICAgICAgIHNlbGYuZXhwcihkLCAiTm9uZSBkaXNhbGxvd2VkIikKKyAgICAgICAgZCA9IGFzdC5EaWN0KFthc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpXSwgW05vbmVdKQorICAgICAgICBzZWxmLmV4cHIoZCwgIk5vbmUgZGlzYWxsb3dlZCIpCisKKyAgICBkZWYgdGVzdF9zZXQoc2VsZik6CisgICAgICAgIHNlbGYuZXhwcihhc3QuU2V0KFtOb25lXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzID0gYXN0LlNldChbYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSldKQorICAgICAgICBzZWxmLmV4cHIocywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIF9jaGVja19jb21wcmVoZW5zaW9uKHNlbGYsIGZhYyk6CisgICAgICAgIHNlbGYuZXhwcihmYWMoW10pLCAiY29tcHJlaGVuc2lvbiB3aXRoIG5vIGdlbmVyYXRvcnMiKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJtdXN0IGhhdmUgU3RvcmUgY29udGV4dCIpCisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHggPSBhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKQorICAgICAgICB5ID0gYXN0Lk5hbWUoInkiLCBhc3QuTG9hZCgpKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW05vbmVdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFtnXSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oeCwgeSwgW2FzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpXSkKKyAgICAgICAgc2VsZi5leHByKGZhYyhbZ10pLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgX3NpbXBsZV9jb21wKHNlbGYsIGZhYyk6CisgICAgICAgIGcgPSBhc3QuY29tcHJlaGVuc2lvbihhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSksIFtdKQorICAgICAgICBzZWxmLmV4cHIoZmFjKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpLCBbZ10pLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgd3JhcChnZW5zKToKKyAgICAgICAgICAgIHJldHVybiBmYWMoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGdlbnMpCisgICAgICAgIHNlbGYuX2NoZWNrX2NvbXByZWhlbnNpb24od3JhcCkKKworICAgIGRlZiB0ZXN0X2xpc3Rjb21wKHNlbGYpOgorICAgICAgICBzZWxmLl9zaW1wbGVfY29tcChhc3QuTGlzdENvbXApCisKKyAgICBkZWYgdGVzdF9zZXRjb21wKHNlbGYpOgorICAgICAgICBzZWxmLl9zaW1wbGVfY29tcChhc3QuU2V0Q29tcCkKKworICAgIGRlZiB0ZXN0X2dlbmVyYXRvcmV4cChzZWxmKToKKyAgICAgICAgc2VsZi5fc2ltcGxlX2NvbXAoYXN0LkdlbmVyYXRvckV4cCkKKworICAgIGRlZiB0ZXN0X2RpY3Rjb21wKHNlbGYpOgorICAgICAgICBnID0gYXN0LmNvbXByZWhlbnNpb24oYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpLCBbXSkKKyAgICAgICAgYyA9IGFzdC5EaWN0Q29tcChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5Mb2FkKCkpLCBbZ10pCisgICAgICAgIHNlbGYuZXhwcihjLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGMgPSBhc3QuRGljdENvbXAoYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuTmFtZSgieSIsIGFzdC5TdG9yZSgpKSwgW2ddKQorICAgICAgICBzZWxmLmV4cHIoYywgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBkZWYgZmFjdG9yeShjb21wcyk6CisgICAgICAgICAgICBrID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICAgICAgdiA9IGFzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgICAgIHJldHVybiBhc3QuRGljdENvbXAoaywgdiwgY29tcHMpCisgICAgICAgIHNlbGYuX2NoZWNrX2NvbXByZWhlbnNpb24oZmFjdG9yeSkKKworICAgIGRlZiB0ZXN0X3lpZWxkKHNlbGYpOgorICAgICAgICBzZWxmLmV4cHIoYXN0LllpZWxkKGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpKSwgIm11c3QgaGF2ZSBMb2FkIikKKyAgICAgICAgc2VsZi5leHByKGFzdC5ZaWVsZEZyb20oYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSkpLCAibXVzdCBoYXZlIExvYWQiKQorCisgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgbGVmdCA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGxlZnQsIFthc3QuSW4oKV0sIFtdKQorICAgICAgICBzZWxmLmV4cHIoY29tcCwgIm5vIGNvbXBhcmF0b3JzIikKKyAgICAgICAgY29tcCA9IGFzdC5Db21wYXJlKGxlZnQsIFthc3QuSW4oKV0sIFthc3QuTnVtKDQpLCBhc3QuTnVtKDUpXSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJkaWZmZXJlbnQgbnVtYmVyIG9mIGNvbXBhcmF0b3JzIGFuZCBvcGVyYW5kcyIpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShhc3QuTnVtKCJibGFoIiksIFthc3QuSW4oKV0sIFtsZWZ0XSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJub24tbnVtZXJpYyIsIGV4Yz1UeXBlRXJyb3IpCisgICAgICAgIGNvbXAgPSBhc3QuQ29tcGFyZShsZWZ0LCBbYXN0LkluKCldLCBbYXN0Lk51bSgiYmxhaCIpXSkKKyAgICAgICAgc2VsZi5leHByKGNvbXAsICJub24tbnVtZXJpYyIsIGV4Yz1UeXBlRXJyb3IpCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBmdW5jID0gYXN0Lk5hbWUoIngiLCBhc3QuTG9hZCgpKQorICAgICAgICBhcmdzID0gW2FzdC5OYW1lKCJ5IiwgYXN0LkxvYWQoKSldCisgICAgICAgIGtleXdvcmRzID0gW2FzdC5rZXl3b3JkKCJ3IiwgYXN0Lk5hbWUoInoiLCBhc3QuTG9hZCgpKSldCisgICAgICAgIHN0YXJhcmcgPSBhc3QuTmFtZSgicCIsIGFzdC5Mb2FkKCkpCisgICAgICAgIGt3YXJnID0gYXN0Lk5hbWUoInEiLCBhc3QuTG9hZCgpKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAga3dhcmcpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBbTm9uZV0sIGtleXdvcmRzLCBzdGFyYXJnLCBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBiYWRfa2V5d29yZHMgPSBbYXN0LmtleXdvcmQoInciLCBhc3QuTmFtZSgieiIsIGFzdC5TdG9yZSgpKSldCisgICAgICAgIGNhbGwgPSBhc3QuQ2FsbChmdW5jLCBhcmdzLCBiYWRfa2V5d29yZHMsIHN0YXJhcmcsIGt3YXJnKQorICAgICAgICBzZWxmLmV4cHIoY2FsbCwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorICAgICAgICBjYWxsID0gYXN0LkNhbGwoZnVuYywgYXJncywga2V5d29yZHMsIGFzdC5OYW1lKCJ6IiwgYXN0LlN0b3JlKCkpLCBrd2FyZykKKyAgICAgICAgc2VsZi5leHByKGNhbGwsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgY2FsbCA9IGFzdC5DYWxsKGZ1bmMsIGFyZ3MsIGtleXdvcmRzLCBzdGFyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgYXN0Lk5hbWUoInciLCBhc3QuU3RvcmUoKSkpCisgICAgICAgIHNlbGYuZXhwcihjYWxsLCAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisKKyAgICBkZWYgdGVzdF9udW0oc2VsZik6CisgICAgICAgIGNsYXNzIHN1YmludChpbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBzdWJmbG9hdChmbG9hdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGNsYXNzIHN1YmNvbXBsZXgoY29tcGxleCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciBvYmogaW4gIjAiLCAiaGVsbG8iLCBzdWJpbnQoKSwgc3ViZmxvYXQoKSwgc3ViY29tcGxleCgpOgorICAgICAgICAgICAgc2VsZi5leHByKGFzdC5OdW0ob2JqKSwgIm5vbi1udW1lcmljIiwgZXhjPVR5cGVFcnJvcikKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgYXR0ciA9IGFzdC5BdHRyaWJ1dGUoYXN0Lk5hbWUoIngiLCBhc3QuU3RvcmUoKSksICJ5IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgc2VsZi5leHByKGF0dHIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKworICAgIGRlZiB0ZXN0X3N1YnNjcmlwdChzZWxmKToKKyAgICAgICAgc3ViID0gYXN0LlN1YnNjcmlwdChhc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKSwgYXN0LkluZGV4KGFzdC5OdW0oMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5Mb2FkKCkpCisgICAgICAgIHNlbGYuZXhwcihzdWIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgeCA9IGFzdC5OYW1lKCJ4IiwgYXN0LkxvYWQoKSkKKyAgICAgICAgc3ViID0gYXN0LlN1YnNjcmlwdCh4LCBhc3QuSW5kZXgoYXN0Lk5hbWUoInkiLCBhc3QuU3RvcmUoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5Mb2FkKCkpCisgICAgICAgIHNlbGYuZXhwcihzdWIsICJtdXN0IGhhdmUgTG9hZCBjb250ZXh0IikKKyAgICAgICAgcyA9IGFzdC5OYW1lKCJ4IiwgYXN0LlN0b3JlKCkpCisgICAgICAgIGZvciBhcmdzIGluIChzLCBOb25lLCBOb25lKSwgKE5vbmUsIHMsIE5vbmUpLCAoTm9uZSwgTm9uZSwgcyk6CisgICAgICAgICAgICBzbCA9IGFzdC5TbGljZSgqYXJncykKKyAgICAgICAgICAgIHNlbGYuZXhwcihhc3QuU3Vic2NyaXB0KHgsIHNsLCBhc3QuTG9hZCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIExvYWQgY29udGV4dCIpCisgICAgICAgIHNsID0gYXN0LkV4dFNsaWNlKFtdKQorICAgICAgICBzZWxmLmV4cHIoYXN0LlN1YnNjcmlwdCh4LCBzbCwgYXN0LkxvYWQoKSksICJlbXB0eSBkaW1zIG9uIEV4dFNsaWNlIikKKyAgICAgICAgc2wgPSBhc3QuRXh0U2xpY2UoW2FzdC5JbmRleChzKV0pCisgICAgICAgIHNlbGYuZXhwcihhc3QuU3Vic2NyaXB0KHgsIHNsLCBhc3QuTG9hZCgpKSwgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3Rfc3RhcnJlZChzZWxmKToKKyAgICAgICAgbGVmdCA9IGFzdC5MaXN0KFthc3QuU3RhcnJlZChhc3QuTmFtZSgieCIsIGFzdC5Mb2FkKCkpLCBhc3QuU3RvcmUoKSldLAorICAgICAgICAgICAgICAgICAgICAgICAgYXN0LlN0b3JlKCkpCisgICAgICAgIGFzc2lnbiA9IGFzdC5Bc3NpZ24oW2xlZnRdLCBhc3QuTnVtKDQpKQorICAgICAgICBzZWxmLnN0bXQoYXNzaWduLCAibXVzdCBoYXZlIFN0b3JlIGNvbnRleHQiKQorCisgICAgZGVmIF9zZXF1ZW5jZShzZWxmLCBmYWMpOgorICAgICAgICBzZWxmLmV4cHIoZmFjKFtOb25lXSwgYXN0LkxvYWQoKSksICJOb25lIGRpc2FsbG93ZWQiKQorICAgICAgICBzZWxmLmV4cHIoZmFjKFthc3QuTmFtZSgieCIsIGFzdC5TdG9yZSgpKV0sIGFzdC5Mb2FkKCkpLAorICAgICAgICAgICAgICAgICAgIm11c3QgaGF2ZSBMb2FkIGNvbnRleHQiKQorCisgICAgZGVmIHRlc3RfbGlzdChzZWxmKToKKyAgICAgICAgc2VsZi5fc2VxdWVuY2UoYXN0Lkxpc3QpCisKKyAgICBkZWYgdGVzdF90dXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5fc2VxdWVuY2UoYXN0LlR1cGxlKQorCisgICAgZGVmIHRlc3Rfc3RkbGliX3ZhbGlkYXRlcyhzZWxmKToKKyAgICAgICAgc3RkbGliID0gb3MucGF0aC5kaXJuYW1lKGFzdC5fX2ZpbGVfXykKKyAgICAgICAgdGVzdHMgPSBbZm4gZm9yIGZuIGluIG9zLmxpc3RkaXIoc3RkbGliKSBpZiBmbi5lbmRzd2l0aCgiLnB5IildCisgICAgICAgIHRlc3RzLmV4dGVuZChbInRlc3QvdGVzdF9ncmFtbWFyLnB5IiwgInRlc3QvdGVzdF91bnBhY2tfZXgucHkiXSkKKyAgICAgICAgZm9yIG1vZHVsZSBpbiB0ZXN0czoKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKHN0ZGxpYiwgbW9kdWxlKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZuLCAiciIsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZwOgorICAgICAgICAgICAgICAgIHNvdXJjZSA9IGZwLnJlYWQoKQorICAgICAgICAgICAgbW9kID0gYXN0LnBhcnNlKHNvdXJjZSkKKyAgICAgICAgICAgIGNvbXBpbGUobW9kLCBmbiwgImV4ZWMiKQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChBU1RfVGVzdHMsIEFTVEhlbHBlcnNfVGVzdCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChBU1RfVGVzdHMsIEFTVEhlbHBlcnNfVGVzdCwgQVNUVmFsaWRhdG9yVGVzdHMpCiAKIGRlZiBtYWluKCk6CiAgICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKQEAgLTUzOSw5ICs5NjcsMTEgQEAKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDExKSldLCBbXSldKSwKICgnTW9kdWxlJywgWygnV2hpbGUnLCAoMSwgMCksICgnTmFtZScsICgxLCA2KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdQYXNzJywgKDEsIDgpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdJZicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDMpLCAndicsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgNSkpXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ1dpdGgnLCAoMSwgMCksIFsoJ3dpdGhpdGVtJywgKCdOYW1lJywgKDEsIDUpLCAneCcsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxMCksICd5JywgKCdTdG9yZScsKSkpXSwgWygnUGFzcycsICgxLCAxMykpXSldKSwKKygnTW9kdWxlJywgWygnV2l0aCcsICgxLCAwKSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgNSksICd4JywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDEwKSwgJ3knLCAoJ1N0b3JlJywpKSksICgnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMSwgMTMpLCAneicsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCAxOCksICdxJywgKCdTdG9yZScsKSkpXSwgWygnUGFzcycsICgxLCAyMSkpXSldKSwKICgnTW9kdWxlJywgWygnUmFpc2UnLCAoMSwgMCksICgnQ2FsbCcsICgxLCA2KSwgKCdOYW1lJywgKDEsIDYpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgWygnU3RyJywgKDEsIDE2KSwgJ3N0cmluZycpXSwgW10sIE5vbmUsIE5vbmUpLCBOb25lKV0pLAotKCdNb2R1bGUnLCBbKCdUcnlFeGNlcHQnLCAoMSwgMCksIFsoJ1Bhc3MnLCAoMiwgMikpXSwgWygnRXhjZXB0SGFuZGxlcicsICgzLCAwKSwgKCdOYW1lJywgKDMsIDcpLCAnRXhjZXB0aW9uJywgKCdMb2FkJywpKSwgTm9uZSwgWygnUGFzcycsICg0LCAyKSldKV0sIFtdKV0pLAotKCdNb2R1bGUnLCBbKCdUcnlGaW5hbGx5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ1Bhc3MnLCAoNCwgMikpXSldKSwKKygnTW9kdWxlJywgWygnVHJ5JywgKDEsIDApLCBbKCdQYXNzJywgKDIsIDIpKV0sIFsoJ0V4Y2VwdEhhbmRsZXInLCAoMywgMCksICgnTmFtZScsICgzLCA3KSwgJ0V4Y2VwdGlvbicsICgnTG9hZCcsKSksIE5vbmUsIFsoJ1Bhc3MnLCAoNCwgMikpXSldLCBbXSwgW10pXSksCisoJ01vZHVsZScsIFsoJ1RyeScsICgxLCAwKSwgWygnUGFzcycsICgyLCAyKSldLCBbXSwgW10sIFsoJ1Bhc3MnLCAoNCwgMikpXSldKSwKICgnTW9kdWxlJywgWygnQXNzZXJ0JywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNyksICd2JywgKCdMb2FkJywpKSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnSW1wb3J0JywgKDEsIDApLCBbKCdhbGlhcycsICdzeXMnLCBOb25lKV0pXSksCiAoJ01vZHVsZScsIFsoJ0ltcG9ydEZyb20nLCAoMSwgMCksICdzeXMnLCBbKCdhbGlhcycsICd2JywgTm9uZSldLCAwKV0pLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weSBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKaW5kZXggNWY1NWRmOC4uNDJhMjUyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CkBAIC0yMSw2ICsyMSw4IEBACiAKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIAorSEFTX1VOSVhfU09DS0VUUyA9IGhhc2F0dHIoc29ja2V0LCAnQUZfVU5JWCcpCisKIGNsYXNzIGR1bW15c29ja2V0OgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5jbG9zZWQgPSBGYWxzZQpAQCAtNzIsMTUgKzc0LDE2IEBACiAgICAgICAgIHBhc3MKICAgICBlbHNlOgogICAgICAgICBuID0gMjAwCi0gICAgICAgIHdoaWxlIG4gPiAwOgotICAgICAgICAgICAgciwgdywgZSA9IHNlbGVjdC5zZWxlY3QoW2Nvbm5dLCBbXSwgW10pCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIHRpbWUudGltZSgpIC0gc3RhcnQgPCAzLjA6CisgICAgICAgICAgICByLCB3LCBlID0gc2VsZWN0LnNlbGVjdChbY29ubl0sIFtdLCBbXSwgMC4xKQogICAgICAgICAgICAgaWYgcjoKKyAgICAgICAgICAgICAgICBuIC09IDEKICAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KDEwKQogICAgICAgICAgICAgICAgICMga2VlcCBldmVyeXRoaW5nIGV4Y2VwdCBmb3IgdGhlIG5ld2xpbmUgdGVybWluYXRvcgogICAgICAgICAgICAgICAgIGJ1Zi53cml0ZShkYXRhLnJlcGxhY2UoYidcbicsIGInJykpCiAgICAgICAgICAgICAgICAgaWYgYidcbicgaW4gZGF0YToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIG4gLT0gMQogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQogCiAgICAgICAgIGNvbm4uY2xvc2UoKQpAQCAtODgsNiArOTEsMTMgQEAKICAgICAgICAgc2Vydi5jbG9zZSgpCiAgICAgICAgIGV2dC5zZXQoKQogCitkZWYgYmluZF9hZl9hd2FyZShzb2NrLCBhZGRyKToKKyAgICAiIiJIZWxwZXIgZnVuY3Rpb24gdG8gYmluZCBhIHNvY2tldCBhY2NvcmRpbmcgdG8gaXRzIGZhbWlseS4iIiIKKyAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzb2NrLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhlIHBhdGggZG9lc24ndCBleGlzdC4KKyAgICAgICAgdW5saW5rKGFkZHIpCisgICAgc29jay5iaW5kKGFkZHIpCisKIAogY2xhc3MgSGVscGVyRnVuY3Rpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVhZHdyaXRlZXhjKHNlbGYpOgpAQCAtMzUzLDcgKzM2Myw3IEBACiAgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKICAgICAgICAgZXZ0ID0gdGhyZWFkaW5nLkV2ZW50KCkKLSAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQogICAgICAgICBzb2NrLnNldHRpbWVvdXQoMykKICAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNvY2spCiAKQEAgLTM2OCw3ICszNzgsNyBAQAogCiAgICAgICAgICAgICBkYXRhID0gYiJTdXBwb3NlIHRoZXJlIGlzbid0IGEgMTYtdG9uIHdlaWdodD8iCiAgICAgICAgICAgICBkID0gZGlzcGF0Y2hlcndpdGhzZW5kX25vcmVhZCgpCi0gICAgICAgICAgICBkLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIGQuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgICBkLmNvbm5lY3QoKEhPU1QsIHBvcnQpKQogCiAgICAgICAgICAgICAjIGdpdmUgdGltZSBmb3Igc29ja2V0IHRvIGNvbm5lY3QKQEAgLTQ2OCwyMiArNDc4LDIyIEBACiAgICAgICAgIHJhaXNlCiAKIAotY2xhc3MgVENQU2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIpOgorY2xhc3MgQmFzZVNlcnZlcihhc3luY29yZS5kaXNwYXRjaGVyKToKICAgICAiIiJBIHNlcnZlciB3aGljaCBsaXN0ZW5zIG9uIGFuIGFkZHJlc3MgYW5kIGRpc3BhdGNoZXMgdGhlCiAgICAgY29ubmVjdGlvbiB0byBhIGhhbmRsZXIuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlcj1CYXNlVGVzdEhhbmRsZXIsIGhvc3Q9SE9TVCwgcG9ydD0wKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmFtaWx5LCBhZGRyLCBoYW5kbGVyPUJhc2VUZXN0SGFuZGxlcik6CiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChmYW1pbHkpCiAgICAgICAgIHNlbGYuc2V0X3JldXNlX2FkZHIoKQotICAgICAgICBzZWxmLmJpbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICBiaW5kX2FmX2F3YXJlKHNlbGYuc29ja2V0LCBhZGRyKQogICAgICAgICBzZWxmLmxpc3Rlbig1KQogICAgICAgICBzZWxmLmhhbmRsZXIgPSBoYW5kbGVyCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgYWRkcmVzcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIHNvY2ssIGFkZHIpOgogICAgICAgICBzZWxmLmhhbmRsZXIoc29jaykKQEAgLTQ5NCw5ICs1MDQsOSBAQAogCiBjbGFzcyBCYXNlQ2xpZW50KEJhc2VUZXN0SGFuZGxlcik6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZhbWlseSwgYWRkcmVzcyk6CiAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKICAgICAgICAgc2VsZi5jb25uZWN0KGFkZHJlc3MpCiAKICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CkBAIC01MjYsOCArNTM2LDggQEAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfY29ubmVjdChzZWxmKToKICAgICAgICAgICAgICAgICBzZWxmLmZsYWcgPSBUcnVlCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKLSAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZXJ2ZXIuYWRkcmVzcykKKyAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX2FjY2VwdChzZWxmKToKQEAgLTUzNSwxOCArNTQ1LDE4IEBACiAKICAgICAgICAgY2xhc3MgVGVzdExpc3RlbmVyKEJhc2VUZXN0SGFuZGxlcik6CiAKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHIpOgogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICAgICAgICAgIHNlbGYuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKKyAgICAgICAgICAgICAgICBiaW5kX2FmX2F3YXJlKHNlbGYuc29ja2V0LCBhZGRyKQogICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCi0gICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAotICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoKQotICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBUZXN0TGlzdGVuZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKHNlcnZlcikKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9hY2NlcHRlZChzZWxmKToKQEAgLTU1NCwxMiArNTY0LDEyIEBACiAKICAgICAgICAgY2xhc3MgVGVzdExpc3RlbmVyKEJhc2VUZXN0SGFuZGxlcik6CiAKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYW1pbHksIGFkZHIpOgogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICAgICAgICAgIHNlbGYuYmluZCgoSE9TVCwgMCkpCisgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfc29ja2V0KGZhbWlseSkKKyAgICAgICAgICAgICAgICBiaW5kX2FmX2F3YXJlKHNlbGYuc29ja2V0LCBhZGRyKQogICAgICAgICAgICAgICAgIHNlbGYubGlzdGVuKDUpCi0gICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzID0gc2VsZi5zb2NrZXQuZ2V0c29ja25hbWUoKVs6Ml0KKyAgICAgICAgICAgICAgICBzZWxmLmFkZHJlc3MgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpCiAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0KHNlbGYpOgogICAgICAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuaGFuZGxlX2FjY2VwdChzZWxmKQpAQCAtNTY4LDggKzU3OCw4IEBACiAgICAgICAgICAgICAgICAgc29jay5jbG9zZSgpCiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRlc3RMaXN0ZW5lcigpCi0gICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IFRlc3RMaXN0ZW5lcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICBjbGllbnQgPSBCYXNlQ2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoc2VydmVyKQogCiAKQEAgLTU4NSw4ICs1OTUsOCBAQAogICAgICAgICAgICAgICAgIEJhc2VUZXN0SGFuZGxlci5fX2luaXRfXyhzZWxmLCBjb25uKQogICAgICAgICAgICAgICAgIHNlbGYuc2VuZChiJ3gnICogMTAyNCkKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoVGVzdEhhbmRsZXIpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9oYW5kbGVfd3JpdGUoc2VsZik6CkBAIC01OTYsOCArNjA2LDggQEAKICAgICAgICAgICAgIGRlZiBoYW5kbGVfd3JpdGUoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQogCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gVGVzdENsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAgICAgICAgIHNlbGYubG9vcF93YWl0aW5nX2Zvcl9mbGFnKGNsaWVudCkKIAogICAgIGRlZiB0ZXN0X2hhbmRsZV9jbG9zZShzZWxmKToKQEAgLTYyMCw4ICs2MzAsNDAgQEAKICAgICAgICAgICAgICAgICBCYXNlVGVzdEhhbmRsZXIuX19pbml0X18oc2VsZiwgY29ubikKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoVGVzdEhhbmRsZXIpCi0gICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVfY2xvc2VfYWZ0ZXJfY29ubl9icm9rZW4oc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBFQ09OTlJFU0VUL0VQSVBFIGlzIGNvcnJlY3RseSBoYW5kbGVkIChpc3N1ZXMgIzU2NjEgYW5kCisgICAgICAgICMgIzExMjY1KS4KKworICAgICAgICBkYXRhID0gYidcMCcgKiAxMjgKKworICAgICAgICBjbGFzcyBUZXN0Q2xpZW50KEJhc2VDbGllbnQpOgorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3dyaXRlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VuZChkYXRhKQorCisgICAgICAgICAgICBkZWYgaGFuZGxlX2Nsb3NlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9leHB0KHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgICAgICBjbGFzcyBUZXN0SGFuZGxlcihCYXNlVGVzdEhhbmRsZXIpOgorCisgICAgICAgICAgICBkZWYgaGFuZGxlX3JlYWQoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5yZWN2KGxlbihkYXRhKSkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgICAgICAgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkciwgVGVzdEhhbmRsZXIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJzdW5vcyIpLApAQCAtNjMwLDkgKzY3MiwxMiBAQAogICAgICAgICAjIE1ha2Ugc3VyZSBoYW5kbGVfZXhwdCBpcyBjYWxsZWQgb24gT09CIGRhdGEgcmVjZWl2ZWQuCiAgICAgICAgICMgTm90ZTogdGhpcyBtaWdodCBmYWlsIG9uIHNvbWUgcGxhdGZvcm1zIGFzIE9PQiBkYXRhIGlzCiAgICAgICAgICMgdGVudW91c2x5IHN1cHBvcnRlZCBhbmQgcmFyZWx5IHVzZWQuCisgICAgICAgIGlmIEhBU19VTklYX1NPQ0tFVFMgYW5kIHNlbGYuZmFtaWx5ID09IHNvY2tldC5BRl9VTklYOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm90IGFwcGxpY2FibGUgdG8gQUZfVU5JWCBzb2NrZXRzLiIpCiAKICAgICAgICAgY2xhc3MgVGVzdENsaWVudChCYXNlQ2xpZW50KToKICAgICAgICAgICAgIGRlZiBoYW5kbGVfZXhwdChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5yZWN2KDEwMjQsIHNvY2tldC5NU0dfT09CKQogICAgICAgICAgICAgICAgIHNlbGYuZmxhZyA9IFRydWUKIAogICAgICAgICBjbGFzcyBUZXN0SGFuZGxlcihCYXNlVGVzdEhhbmRsZXIpOgpAQCAtNjQwLDggKzY4NSw4IEBACiAgICAgICAgICAgICAgICAgQmFzZVRlc3RIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQuc2VuZChieXRlcyhjaHIoMjQ0KSwgJ2xhdGluLTEnKSwgc29ja2V0Lk1TR19PT0IpCiAKLSAgICAgICAgc2VydmVyID0gVENQU2VydmVyKFRlc3RIYW5kbGVyKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIsIFRlc3RIYW5kbGVyKQorICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlbGYuZmFtaWx5LCBzZXJ2ZXIuYWRkcmVzcykKICAgICAgICAgc2VsZi5sb29wX3dhaXRpbmdfZm9yX2ZsYWcoY2xpZW50KQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX2Vycm9yKHNlbGYpOgpAQCAtNjU4LDEzICs3MDMsMTMgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oImV4Y2VwdGlvbiBub3QgcmFpc2VkIikKIAotICAgICAgICBzZXJ2ZXIgPSBUQ1BTZXJ2ZXIoKQotICAgICAgICBjbGllbnQgPSBUZXN0Q2xpZW50KHNlcnZlci5hZGRyZXNzKQorICAgICAgICBzZXJ2ZXIgPSBCYXNlU2VydmVyKHNlbGYuZmFtaWx5LCBzZWxmLmFkZHIpCisgICAgICAgIGNsaWVudCA9IFRlc3RDbGllbnQoc2VsZi5mYW1pbHksIHNlcnZlci5hZGRyZXNzKQogICAgICAgICBzZWxmLmxvb3Bfd2FpdGluZ19mb3JfZmxhZyhjbGllbnQpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0aW9uX2F0dHJpYnV0ZXMoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIGNsaWVudCA9IEJhc2VDbGllbnQoc2VydmVyLmFkZHJlc3MpCisgICAgICAgIHNlcnZlciA9IEJhc2VTZXJ2ZXIoc2VsZi5mYW1pbHksIHNlbGYuYWRkcikKKyAgICAgICAgY2xpZW50ID0gQmFzZUNsaWVudChzZWxmLmZhbWlseSwgc2VydmVyLmFkZHJlc3MpCiAKICAgICAgICAgIyB3ZSBzdGFydCBkaXNjb25uZWN0ZWQKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXJ2ZXIuY29ubmVjdGVkKQpAQCAtNjk0LDI1ICs3MzksMjkgQEAKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9zb2NrZXQoc2VsZik6CiAgICAgICAgIHMgPSBhc3luY29yZS5kaXNwYXRjaGVyKCkKLSAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LmZhbWlseSwgc2VsZi5mYW1pbHkpCiAgICAgICAgIFNPQ0tfTk9OQkxPQ0sgPSBnZXRhdHRyKHNvY2tldCwgJ1NPQ0tfTk9OQkxPQ0snLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc29ja2V0LnR5cGUsIHNvY2tldC5TT0NLX1NUUkVBTSB8IFNPQ0tfTk9OQkxPQ0spCiAKICAgICBkZWYgdGVzdF9iaW5kKHNlbGYpOgorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQogICAgICAgICBzMSA9IGFzeW5jb3JlLmRpc3BhdGNoZXIoKQotICAgICAgICBzMS5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgIHMxLmJpbmQoKEhPU1QsIDApKQorICAgICAgICBzMS5jcmVhdGVfc29ja2V0KHNlbGYuZmFtaWx5KQorICAgICAgICBzMS5iaW5kKHNlbGYuYWRkcikKICAgICAgICAgczEubGlzdGVuKDUpCiAgICAgICAgIHBvcnQgPSBzMS5zb2NrZXQuZ2V0c29ja25hbWUoKVsxXQogCiAgICAgICAgIHMyID0gYXN5bmNvcmUuZGlzcGF0Y2hlcigpCi0gICAgICAgIHMyLmNyZWF0ZV9zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgczIuY3JlYXRlX3NvY2tldChzZWxmLmZhbWlseSkKICAgICAgICAgIyBFQUREUklOVVNFIGluZGljYXRlcyB0aGUgc29ja2V0IHdhcyBjb3JyZWN0bHkgYm91bmQKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzMi5iaW5kLCAoSE9TVCwgcG9ydCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgczIuYmluZCwgKHNlbGYuYWRkclswXSwgcG9ydCkpCiAKICAgICBkZWYgdGVzdF9zZXRfcmV1c2VfYWRkcihzZWxmKToKLSAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBpZiBIQVNfVU5JWF9TT0NLRVRTIGFuZCBzZWxmLmZhbWlseSA9PSBzb2NrZXQuQUZfVU5JWDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vdCBhcHBsaWNhYmxlIHRvIEFGX1VOSVggc29ja2V0cy4iKQorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzZWxmLmZhbWlseSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29jay5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSLCAxKQogICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgpAQCAtNzIwLDExICs3NjksMTEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgaWYgU09fUkVVU0VBRERSIHN1Y2NlZWRlZCBmb3Igc29jayB3ZSBleHBlY3QgYXN5bmNvcmUKICAgICAgICAgICAgICMgdG8gZG8gdGhlIHNhbWUKLSAgICAgICAgICAgIHMgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoKSkKKyAgICAgICAgICAgIHMgPSBhc3luY29yZS5kaXNwYXRjaGVyKHNvY2tldC5zb2NrZXQoc2VsZi5mYW1pbHkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNvY2tldC5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT19SRVVTRUFERFIpKQogICAgICAgICAgICAgcy5zb2NrZXQuY2xvc2UoKQotICAgICAgICAgICAgcy5jcmVhdGVfc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICBzLmNyZWF0ZV9zb2NrZXQoc2VsZi5mYW1pbHkpCiAgICAgICAgICAgICBzLnNldF9yZXVzZV9hZGRyKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnNvY2tldC5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT19SRVVTRUFERFIpKQpAQCAtNzM1LDEyICs3ODQsMTQgQEAKICAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9xdWlja19jb25uZWN0KHNlbGYpOgogICAgICAgICAjIHNlZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEwMzQwCi0gICAgICAgIHNlcnZlciA9IFRDUFNlcnZlcigpCi0gICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1sYW1iZGE6IGFzeW5jb3JlLmxvb3AodGltZW91dD0wLjEsIGNvdW50PTUwMCkpCi0gICAgICAgIHQuc3RhcnQoKQorICAgICAgICBpZiBzZWxmLmZhbWlseSBpbiAoc29ja2V0LkFGX0lORVQsIGdldGF0dHIoc29ja2V0LCAiQUZfSU5FVDYiLCBvYmplY3QoKSkpOgorICAgICAgICAgICAgc2VydmVyID0gQmFzZVNlcnZlcihzZWxmLmZhbWlseSwgc2VsZi5hZGRyKQorICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ9NTAwKSkKKyAgICAgICAgICAgIHQuc3RhcnQoKQogCi0gICAgICAgIGZvciB4IGluIHJhbmdlKDIwKToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisKKyAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNlbGYuZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0pCiAgICAgICAgICAgICBzLnNldHRpbWVvdXQoLjIpCiAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19MSU5HRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soJ2lpJywgMSwgMCkpCkBAIC03NTEsMTggKzgwMiw1MiBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAotY2xhc3MgVGVzdEFQSV9Vc2VTZWxlY3QoQmFzZVRlc3RBUEkpOgorY2xhc3MgVGVzdEFQSV9Vc2VJUHY0U29ja2V0cyhCYXNlVGVzdEFQSSk6CisgICAgZmFtaWx5ID0gc29ja2V0LkFGX0lORVQKKyAgICBhZGRyID0gKEhPU1QsIDApCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiBzdXBwb3J0IHJlcXVpcmVkJykKK2NsYXNzIFRlc3RBUElfVXNlSVB2NlNvY2tldHMoQmFzZVRlc3RBUEkpOgorICAgIGZhbWlseSA9IHNvY2tldC5BRl9JTkVUNgorICAgIGFkZHIgPSAoJzo6MScsIDApCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKEhBU19VTklYX1NPQ0tFVFMsICdVbml4IHNvY2tldHMgcmVxdWlyZWQnKQorY2xhc3MgVGVzdEFQSV9Vc2VVbml4U29ja2V0cyhCYXNlVGVzdEFQSSk6CisgICAgaWYgSEFTX1VOSVhfU09DS0VUUzoKKyAgICAgICAgZmFtaWx5ID0gc29ja2V0LkFGX1VOSVgKKyAgICBhZGRyID0gc3VwcG9ydC5URVNURk4KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdW5saW5rKHNlbGYuYWRkcikKKyAgICAgICAgQmFzZVRlc3RBUEkudGVhckRvd24oc2VsZikKKworY2xhc3MgVGVzdEFQSV9Vc2VJUHY0U2VsZWN0KFRlc3RBUElfVXNlSVB2NFNvY2tldHMpOgogICAgIHVzZV9wb2xsID0gRmFsc2UKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICdzZWxlY3QucG9sbCByZXF1aXJlZCcpCi1jbGFzcyBUZXN0QVBJX1VzZVBvbGwoQmFzZVRlc3RBUEkpOgorY2xhc3MgVGVzdEFQSV9Vc2VJUHY0UG9sbChUZXN0QVBJX1VzZUlQdjRTb2NrZXRzKToKICAgICB1c2VfcG9sbCA9IFRydWUKIAorY2xhc3MgVGVzdEFQSV9Vc2VJUHY2U2VsZWN0KFRlc3RBUElfVXNlSVB2NlNvY2tldHMpOgorICAgIHVzZV9wb2xsID0gRmFsc2UKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICdzZWxlY3QucG9sbCByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZUlQdjZQb2xsKFRlc3RBUElfVXNlSVB2NlNvY2tldHMpOgorICAgIHVzZV9wb2xsID0gVHJ1ZQorCitjbGFzcyBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzU2VsZWN0KFRlc3RBUElfVXNlVW5peFNvY2tldHMpOgorICAgIHVzZV9wb2xsID0gRmFsc2UKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzZWxlY3QsICdwb2xsJyksICdzZWxlY3QucG9sbCByZXF1aXJlZCcpCitjbGFzcyBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzUG9sbChUZXN0QVBJX1VzZVVuaXhTb2NrZXRzKToKKyAgICB1c2VfcG9sbCA9IFRydWUKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3RzID0gW0hlbHBlckZ1bmN0aW9uVGVzdHMsIERpc3BhdGNoZXJUZXN0cywgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHMsCi0gICAgICAgICAgICAgRGlzcGF0Y2hlcldpdGhTZW5kVGVzdHNfVXNlUG9sbCwgVGVzdEFQSV9Vc2VTZWxlY3QsCi0gICAgICAgICAgICAgVGVzdEFQSV9Vc2VQb2xsLCBGaWxlV3JhcHBlclRlc3RdCisgICAgICAgICAgICBEaXNwYXRjaGVyV2l0aFNlbmRUZXN0c19Vc2VQb2xsLCBGaWxlV3JhcHBlclRlc3QsCisgICAgICAgICAgICBUZXN0QVBJX1VzZUlQdjRTZWxlY3QsIFRlc3RBUElfVXNlSVB2NFBvbGwsIFRlc3RBUElfVXNlSVB2NlNlbGVjdCwKKyAgICAgICAgICAgIFRlc3RBUElfVXNlSVB2NlBvbGwsIFRlc3RBUElfVXNlVW5peFNvY2tldHNTZWxlY3QsCisgICAgICAgICAgICBUZXN0QVBJX1VzZVVuaXhTb2NrZXRzUG9sbF0KICAgICBydW5fdW5pdHRlc3QoKnRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iYXNlNjQucHkgYi9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weQppbmRleCBjYTk0NTA0Li4yNTY5NDc2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jhc2U2NC5weQpAQCAtMTAzLDQ0ICsxMDMsNTMgQEAKIAogICAgIGRlZiB0ZXN0X2I2NGRlY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJkM2QzTG5CNWRHaHZiaTV2Y21jPSIpLCBiInd3dy5weXRob24ub3JnIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiJ0FBPT0nKSwgYidceDAwJykKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllRPT0iKSwgYiJhIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllXST0iKSwgYiJhYiIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYiJZV0pqIiksIGIiYWJjIikKLSAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShiIllXSmpaR1ZtWjJocGFtdHNiVzV2Y0hGeWMzUjFkbmQ0ZVhwQlFrTkUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYiJSVVpIU0VsS1MweE5UazlRVVZKVFZGVldWMWhaV2pBeE1qTTBcbk5UIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiWTNPRGtoUUNNd1hpWXFLQ2s3T2p3K0xDNGdXMTE3ZlE9PSIpLAotICAgICAgICAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgotICAgICAgICAgICBiIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgICAgICAgICBiIjAxMjM0NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fSIpCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYicnKSwgYicnKQorCisgICAgICAgIHRlc3RzID0ge2IiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iOiBiInd3dy5weXRob24ub3JnIiwKKyAgICAgICAgICAgICAgICAgYidBQT09JzogYidceDAwJywKKyAgICAgICAgICAgICAgICAgYiJZUT09IjogYiJhIiwKKyAgICAgICAgICAgICAgICAgYiJZV0k9IjogYiJhYiIsCisgICAgICAgICAgICAgICAgIGIiWVdKaiI6IGIiYWJjIiwKKyAgICAgICAgICAgICAgICAgYiJZV0pqWkdWbVoyaHBhbXRzYlc1dmNIRnljM1IxZG5kNGVYcEJRa05FIgorICAgICAgICAgICAgICAgICBiIlJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXakF4TWpNMFxuTlQiCisgICAgICAgICAgICAgICAgIGIiWTNPRGtoUUNNd1hpWXFLQ2s3T2p3K0xDNGdXMTE3ZlE9PSI6CisKKyAgICAgICAgICAgICAgICAgYiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKKyAgICAgICAgICAgICAgICAgYiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKKyAgICAgICAgICAgICAgICAgYiIwMTIzNDU2Nzg5IUAjMF4mKigpOzo8PiwuIFtde30iLAorICAgICAgICAgICAgICAgICBiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgZGF0YSwgcmVzIGluIHRlc3RzLml0ZW1zKCk6CisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGEuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQorCiAgICAgICAgICMgVGVzdCB3aXRoIGFyYml0cmFyeSBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXJzCi0gICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoYicwMWEqYiRjZCcsIGFsdGNoYXJzPWInKiQnKSwgYidceGQzVlx4YmVvXHhmN1x4MWQnKQotICAgICAgICAjIENoZWNrIGlmIHBhc3NpbmcgYSBzdHIgb2JqZWN0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsICIiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsIGIiIiwgYWx0Y2hhcnM9IiIpCisgICAgICAgIHRlc3RzX2FsdGNoYXJzID0geyhiJzAxYSpiJGNkJywgYicqJCcpOiBiJ1x4ZDNWXHhiZW9ceGY3XHgxZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIChkYXRhLCBhbHRjaGFycyksIHJlcyBpbiB0ZXN0c19hbHRjaGFycy5pdGVtcygpOgorICAgICAgICAgICAgZGF0YV9zdHIgPSBkYXRhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgYWx0Y2hhcnNfc3RyID0gYWx0Y2hhcnMuZGVjb2RlKCdhc2NpaScpCisKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YSwgYWx0Y2hhcnM9YWx0Y2hhcnMpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjY0ZGVjb2RlKGRhdGFfc3RyLCBhbHRjaGFycz1hbHRjaGFycyksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iNjRkZWNvZGUoZGF0YSwgYWx0Y2hhcnM9YWx0Y2hhcnNfc3RyKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmI2NGRlY29kZShkYXRhX3N0ciwgYWx0Y2hhcnM9YWx0Y2hhcnNfc3RyKSwgcmVzKQorCiAgICAgICAgICMgVGVzdCBzdGFuZGFyZCBhbHBoYWJldAotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiZDNkM0xuQjVkR2h2Ymk1dmNtYz0iKSwgYiJ3d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJZUT09IiksIGIiYSIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiJZV0k9IiksIGIiYWIiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdKaiIpLCBiImFiYyIpCi0gICAgICAgIGVxKGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUoYiIiKSwgYiIiKQotICAgICAgICBlcShiYXNlNjQuc3RhbmRhcmRfYjY0ZGVjb2RlKGIiWVdKalpHVm1aMmhwYW10c2JXNXZjSEZ5YzNSMWRuZDRlWHBCUWtORSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIlJVWkhTRWxLUzB4TlRrOVFVVkpUVkZWV1YxaFpXakF4TWpNME5UIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIiWTNPRGtoUUNNd1hpWXFLQ2s3T2p3K0xDNGdXMTE3ZlE9PSIpLAotICAgICAgICAgICBiImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgotICAgICAgICAgICBiIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgICAgICAgICBiIjAxMjM0NTY3ODkhQCMwXiYqKCk7Ojw+LC4gW117fSIpCi0gICAgICAgICMgQ2hlY2sgaWYgcGFzc2luZyBhIHN0ciBvYmplY3QgcmFpc2VzIGFuIGVycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZSwgIiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZSwgYiIiLCBhbHRjaGFycz0iIikKKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LnN0YW5kYXJkX2I2NGRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKKwogICAgICAgICAjIFRlc3Qgd2l0aCAnVVJMIHNhZmUnIGFsdGVybmF0aXZlIGNoYXJhY3RlcnMKLSAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGInMDFhLWJfY2QnKSwgYidceGQzVlx4YmVvXHhmN1x4MWQnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC51cmxzYWZlX2I2NGRlY29kZSwgIiIpCisgICAgICAgIHRlc3RzX3VybHNhZmUgPSB7YicwMWEtYl9jZCc6IGInXHhkM1ZceGJlb1x4ZjdceDFkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIGZvciBkYXRhLCByZXMgaW4gdGVzdHNfdXJsc2FmZS5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LnVybHNhZmVfYjY0ZGVjb2RlKGRhdGEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpLCByZXMpCiAKICAgICBkZWYgdGVzdF9iNjRkZWNvZGVfcGFkZGluZ19lcnJvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsIGInYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iNjRkZWNvZGUsICdhYmMnKQogCiAgICAgZGVmIHRlc3RfYjY0ZGVjb2RlX2ludmFsaWRfY2hhcnMoc2VsZik6CiAgICAgICAgICMgaXNzdWUgMTQ2NjA2NTogVGVzdCBzb21lIGludmFsaWQgY2hhcmFjdGVycy4KQEAgLTE1NSw4ICsxNjQsMTEgQEAKICAgICAgICAgICAgICAgICAgKGInWVdKalxuWVdJPScsIGInYWJjYWInKSkKICAgICAgICAgZm9yIGJzdHIsIHJlcyBpbiB0ZXN0czoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZTY0LmI2NGRlY29kZShic3RyKSwgcmVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYXNlNjQuYjY0ZGVjb2RlKGJzdHIuZGVjb2RlKCdhc2NpaScpKSwgcmVzKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvcik6CiAgICAgICAgICAgICAgICAgYmFzZTY0LmI2NGRlY29kZShic3RyLCB2YWxpZGF0ZT1UcnVlKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvcik6CisgICAgICAgICAgICAgICAgYmFzZTY0LmI2NGRlY29kZShic3RyLmRlY29kZSgnYXNjaWknKSwgdmFsaWRhdGU9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2IzMmVuY29kZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCkBAIC0xNzEsNDAgKzE4Myw2MyBAQAogCiAgICAgZGVmIHRlc3RfYjMyZGVjb2RlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJycpLCBiJycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidBQT09PT09PScpLCBiJ1x4MDAnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUU9PT09PT0nKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkE9PT09JyksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0c9PT0nKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0daQT0nKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkRGJyksIGInYWJjZGUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsICIiKQorICAgICAgICB0ZXN0cyA9IHtiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgYidBQT09PT09PSc6IGInXHgwMCcsCisgICAgICAgICAgICAgICAgIGInTUU9PT09PT0nOiBiJ2EnLAorICAgICAgICAgICAgICAgICBiJ01GUkE9PT09JzogYidhYicsCisgICAgICAgICAgICAgICAgIGInTUZSR0c9PT0nOiBiJ2FiYycsCisgICAgICAgICAgICAgICAgIGInTUZSR0daQT0nOiBiJ2FiY2QnLAorICAgICAgICAgICAgICAgICBiJ01GUkdHWkRGJzogYidhYmNkZScsCisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSksIHJlcykKIAogICAgIGRlZiB0ZXN0X2IzMmRlY29kZV9jYXNlZm9sZChzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYicnLCBUcnVlKSwgYicnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUU9PT09PT0nLCBUcnVlKSwgYidhJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkE9PT09JywgVHJ1ZSksIGInYWInKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0c9PT0nLCBUcnVlKSwgYidhYmMnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUZSR0daQT0nLCBUcnVlKSwgYidhYmNkJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ01GUkdHWkRGJywgVHJ1ZSksIGInYWJjZGUnKQotICAgICAgICAjIExvd2VyIGNhc2VzCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZT09PT09PScsIFRydWUpLCBiJ2EnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyYT09PT0nLCBUcnVlKSwgYidhYicpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZnJnZz09PScsIFRydWUpLCBiJ2FiYycpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidtZnJnZ3phPScsIFRydWUpLCBiJ2FiY2QnKQotICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInbWZyZ2d6ZGYnLCBUcnVlKSwgYidhYmNkZScpCi0gICAgICAgICMgRXhwZWN0ZWQgZXhjZXB0aW9ucworICAgICAgICB0ZXN0cyA9IHtiJyc6IGInJywKKyAgICAgICAgICAgICAgICAgYidNRT09PT09PSc6IGInYScsCisgICAgICAgICAgICAgICAgIGInTUZSQT09PT0nOiBiJ2FiJywKKyAgICAgICAgICAgICAgICAgYidNRlJHRz09PSc6IGInYWJjJywKKyAgICAgICAgICAgICAgICAgYidNRlJHR1pBPSc6IGInYWJjZCcsCisgICAgICAgICAgICAgICAgIGInTUZSR0daREYnOiBiJ2FiY2RlJywKKyAgICAgICAgICAgICAgICAgIyBMb3dlciBjYXNlcworICAgICAgICAgICAgICAgICBiJ21lPT09PT09JzogYidhJywKKyAgICAgICAgICAgICAgICAgYidtZnJhPT09PSc6IGInYWInLAorICAgICAgICAgICAgICAgICBiJ21mcmdnPT09JzogYidhYmMnLAorICAgICAgICAgICAgICAgICBiJ21mcmdnemE9JzogYidhYmNkJywKKyAgICAgICAgICAgICAgICAgYidtZnJnZ3pkZic6IGInYWJjZGUnLAorICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgZm9yIGRhdGEsIHJlcyBpbiB0ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLCBUcnVlKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhLmRlY29kZSgnYXNjaWknKSwgVHJ1ZSksIHJlcykKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGInbWU9PT09PT0nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsICdtZT09PT09PScpCisKICAgICAgICAgIyBNYXBwaW5nIHplcm8gYW5kIG9uZQogICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGInTUxPMjM0NTYnKSwgYidiXHhkZFx4YWRceGYzXHhiZScpCi0gICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoYidNMTAyMzQ1NicsIG1hcDAxPWInTCcpLCBiJ2JceGRkXHhhZFx4ZjNceGJlJykKLSAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShiJ00xMDIzNDU2JywgbWFwMDE9YidJJyksIGInYlx4MWRceGFkXHhmM1x4YmUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhc2U2NC5iMzJkZWNvZGUsIGIiIiwgbWFwMDE9IiIpCisgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoJ01MTzIzNDU2JyksIGInYlx4ZGRceGFkXHhmM1x4YmUnKQorCisgICAgICAgIG1hcF90ZXN0cyA9IHsoYidNMTAyMzQ1NicsIGInTCcpOiBiJ2JceGRkXHhhZFx4ZjNceGJlJywKKyAgICAgICAgICAgICAgICAgICAgIChiJ00xMDIzNDU2JywgYidJJyk6IGInYlx4MWRceGFkXHhmM1x4YmUnLAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBmb3IgKGRhdGEsIG1hcDAxKSwgcmVzIGluIG1hcF90ZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgZGF0YV9zdHIgPSBkYXRhLmRlY29kZSgnYXNjaWknKQorICAgICAgICAgICAgbWFwMDFfc3RyID0gbWFwMDEuZGVjb2RlKCdhc2NpaScpCisKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgbWFwMDE9bWFwMDEpLCByZXMpCisgICAgICAgICAgICBlcShiYXNlNjQuYjMyZGVjb2RlKGRhdGFfc3RyLCBtYXAwMT1tYXAwMSksIHJlcykKKyAgICAgICAgICAgIGVxKGJhc2U2NC5iMzJkZWNvZGUoZGF0YSwgbWFwMDE9bWFwMDFfc3RyKSwgcmVzKQorICAgICAgICAgICAgZXEoYmFzZTY0LmIzMmRlY29kZShkYXRhX3N0ciwgbWFwMDE9bWFwMDFfc3RyKSwgcmVzKQogCiAgICAgZGVmIHRlc3RfYjMyZGVjb2RlX2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgYidhYmMnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIzMmRlY29kZSwgYidBQkNERUY9PScpCisgICAgICAgIGZvciBkYXRhIGluIFtiJ2FiYycsIGInQUJDREVGPT0nXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iMzJkZWNvZGUoZGF0YSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IpOgorICAgICAgICAgICAgICAgIGJhc2U2NC5iMzJkZWNvZGUoZGF0YS5kZWNvZGUoJ2FzY2lpJykpCiAKICAgICBkZWYgdGVzdF9iMTZlbmNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtMjE1LDEyICsyNTAsMjQgQEAKICAgICBkZWYgdGVzdF9iMTZkZWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBlcShiYXNlNjQuYjE2ZGVjb2RlKGInMDEwMkFCQ0RFRicpLCBiJ1x4MDFceDAyXHhhYlx4Y2RceGVmJykKKyAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZSgnMDEwMkFCQ0RFRicpLCBiJ1x4MDFceDAyXHhhYlx4Y2RceGVmJykKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAwJyksIGInXHgwMCcpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAwJyksIGInXHgwMCcpCiAgICAgICAgICMgTG93ZXIgY2FzZSBpcyBub3QgYWxsb3dlZCB3aXRob3V0IGEgZmxhZwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhiaW5hc2NpaS5FcnJvciwgYmFzZTY0LmIxNmRlY29kZSwgYicwMTAyYWJjZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYmluYXNjaWkuRXJyb3IsIGJhc2U2NC5iMTZkZWNvZGUsICcwMTAyYWJjZGVmJykKICAgICAgICAgIyBDYXNlIGZvbGQKICAgICAgICAgZXEoYmFzZTY0LmIxNmRlY29kZShiJzAxMDJhYmNkZWYnLCBUcnVlKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmFzZTY0LmIxNmRlY29kZSwgIiIpCisgICAgICAgIGVxKGJhc2U2NC5iMTZkZWNvZGUoJzAxMDJhYmNkZWYnLCBUcnVlKSwgYidceDAxXHgwMlx4YWJceGNkXHhlZicpCisKKyAgICBkZWYgdGVzdF9kZWNvZGVfbm9uYXNjaWlfc3RyKHNlbGYpOgorICAgICAgICBkZWNvZGVfZnVuY3MgPSAoYmFzZTY0LmI2NGRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U2NC5zdGFuZGFyZF9iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQudXJsc2FmZV9iNjRkZWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjQuYjMyZGVjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTY0LmIxNmRlY29kZSkKKyAgICAgICAgZm9yIGYgaW4gZGVjb2RlX2Z1bmNzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZiwgJ3dpdGggbm9uLWFzY2lpIFx4Y2InKQogCiAgICAgZGVmIHRlc3RfRXJyb3JIZXJpdGFnZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYmluYXNjaWkuRXJyb3IsIFZhbHVlRXJyb3IpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQppbmRleCBmM2M2ZWJiLi4wZTU0NTk1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpZ21lbS5weQpAQCAtMSwzICsxLDEzIEBACisiIiJCaWdtZW0gdGVzdHMgLSB0ZXN0cyBmb3IgdGhlIDMyLWJpdCBib3VuZGFyeSBpbiBjb250YWluZXJzLgorCitUaGVzZSB0ZXN0cyB0cnkgdG8gZXhlcmNpc2UgdGhlIDMyLWJpdCBib3VuZGFyeSB0aGF0IGlzIHNvbWV0aW1lcywgaWYKK3JhcmVseSwgZXhjZWVkZWQgaW4gcHJhY3RpY2UsIGJ1dCBhbG1vc3QgbmV2ZXIgdGVzdGVkLiAgVGhleSBhcmUgcmVhbGx5IG9ubHkKK21lYW5pbmdmdWwgb24gNjQtYml0IGJ1aWxkcyBvbiBtYWNoaW5lcyB3aXRoIGEgKmxvdCogb2YgbWVtb3J5LCBidXQgdGhlCit0ZXN0cyBhcmUgYWx3YXlzIHJ1biwgdXN1YWxseSB3aXRoIHZlcnkgbG93IG1lbW9yeSBsaW1pdHMgdG8gbWFrZSBzdXJlIHRoZQordGVzdHMgdGhlbXNlbHZlcyBkb24ndCBzdWZmZXIgZnJvbSBiaXRyb3QuICBUbyBydW4gdGhlbSBmb3IgcmVhbCwgcGFzcyBhCitoaWdoIG1lbW9yeSBsaW1pdCB0byByZWdydGVzdCwgd2l0aCB0aGUgLU0gb3B0aW9uLgorIiIiCisKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF8xRywgXzJHLCBfNEcKIApAQCAtNiwyMCArMTYsMzUgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBmdW5jdG9vbHMKIAorIyBUaGVzZSB0ZXN0cyBhbGwgdXNlIG9uZSBvZiB0aGUgYmlnbWVtdGVzdCBkZWNvcmF0b3JzIHRvIGluZGljYXRlIGhvdyBtdWNoCisjIG1lbW9yeSB0aGV5IHVzZSBhbmQgaG93IG11Y2ggbWVtb3J5IHRoZXkgbmVlZCB0byBiZSBldmVuIG1lYW5pbmdmdWwuICBUaGUKKyMgZGVjb3JhdG9ycyB0YWtlIHR3byBhcmd1bWVudHM6IGEgJ21lbXVzZScgaW5kaWNhdG9yIGRlY2xhcmluZworIyAoYXBwcm94aW1hdGUpIGJ5dGVzIHBlciBzaXplLXVuaXQgdGhlIHRlc3Qgd2lsbCB1c2UgKGF0IHBlYWsgdXNhZ2UpLCBhbmQgYQorIyAnbWluc2l6ZScgaW5kaWNhdG9yIGRlY2xhcmluZyBhIG1pbmltdW0gKnVzZWZ1bCogc2l6ZS4gIEEgdGVzdCB0aGF0CisjIGFsbG9jYXRlcyBhIGJ5dGVzdHJpbmcgdG8gdGVzdCB2YXJpb3VzIG9wZXJhdGlvbnMgbmVhciB0aGUgZW5kIHdpbGwgaGF2ZSBhCisjIG1pbnNpemUgb2YgYXQgbGVhc3QgMkdiIChvciBpdCB3b3VsZG4ndCByZWFjaCB0aGUgMzItYml0IGxpbWl0LCBzbyB0aGUKKyMgdGVzdCB3b3VsZG4ndCBiZSB2ZXJ5IHVzZWZ1bCkgYW5kIGEgbWVtdXNlIG9mIDEgKG9uZSBieXRlIHBlciBzaXplLXVuaXQsCisjIGlmIGl0IGFsbG9jYXRlcyBvbmx5IG9uZSBiaWcgc3RyaW5nIGF0IGEgdGltZS4pCisjCisjIFdoZW4gcnVuIHdpdGggYSBtZW1vcnkgbGltaXQgc2V0LCBib3RoIGRlY29yYXRvcnMgc2tpcCB0ZXN0cyB0aGF0IG5lZWQKKyMgbW9yZSBtZW1vcnkgdGhhbiBhdmFpbGFibGUgdG8gYmUgbWVhbmluZ2Z1bC4gIFRoZSBwcmVjaXNpb25iaWdtZW10ZXN0IHdpbGwKKyMgYWx3YXlzIHBhc3MgbWluc2l6ZSBhcyBzaXplLCBldmVuIGlmIHRoZXJlIGlzIG11Y2ggbW9yZSBtZW1vcnkgYXZhaWxhYmxlLgorIyBUaGUgYmlnbWVtdGVzdCBkZWNvcmF0b3Igd2lsbCBzY2FsZSBzaXplIHVwd2FyZCB0byBmaWxsIGF2YWlsYWJsZSBtZW1vcnkuCisjCiAjIEJpZ21lbSB0ZXN0aW5nIGhvdXNlcnVsZXM6CiAjCiAjICAtIFRyeSBub3QgdG8gYWxsb2NhdGUgdG9vIG1hbnkgbGFyZ2Ugb2JqZWN0cy4gSXQncyBva2F5IHRvIHJlbHkgb24KLSMgICAgcmVmY291bnRpbmcgc2VtYW50aWNzLCBidXQgZG9uJ3QgZm9yZ2V0IHRoYXQgJ3MgPSBjcmVhdGVfbGFyZ2VzdHJpbmcoKScKKyMgICAgcmVmY291bnRpbmcgc2VtYW50aWNzLCBhbmQgZG9uJ3QgZm9yZ2V0IHRoYXQgJ3MgPSBjcmVhdGVfbGFyZ2VzdHJpbmcoKScKICMgICAgZG9lc24ndCByZWxlYXNlIHRoZSBvbGQgJ3MnIChpZiBpdCBleGlzdHMpIHVudGlsIHdlbGwgYWZ0ZXIgaXRzIG5ldwogIyAgICB2YWx1ZSBoYXMgYmVlbiBjcmVhdGVkLiBVc2UgJ2RlbCBzJyBiZWZvcmUgdGhlIGNyZWF0ZV9sYXJnZXN0cmluZyBjYWxsLgogIwotIyAgLSBEbyAqbm90KiBjb21wYXJlIGxhcmdlIG9iamVjdHMgdXNpbmcgYXNzZXJ0RXF1YWwgb3Igc2ltaWxhci4gSXQncyBhCi0jICAgIGxlbmd0aHkgb3BlcmF0aW9uIGFuZCB0aGUgZXJyb3JtZXNzYWdlIHdpbGwgYmUgdXR0ZXJseSB1c2VsZXNzIGR1ZSB0bwotIyAgICBpdHMgc2l6ZS4gVG8gbWFrZSBzdXJlIHdoZXRoZXIgYSByZXN1bHQgaGFzIHRoZSByaWdodCBjb250ZW50cywgYmV0dGVyCi0jICAgIHRvIHVzZSB0aGUgc3RyaXAgb3IgY291bnQgbWV0aG9kcywgb3IgY29tcGFyZSBtZWFuaW5nZnVsIHNsaWNlcy4KKyMgIC0gRG8gKm5vdCogY29tcGFyZSBsYXJnZSBvYmplY3RzIHVzaW5nIGFzc2VydEVxdWFsLCBhc3NlcnRJbiBvciBzaW1pbGFyLgorIyAgICBJdCdzIGEgbGVuZ3RoeSBvcGVyYXRpb24gYW5kIHRoZSBlcnJvcm1lc3NhZ2Ugd2lsbCBiZSB1dHRlcmx5IHVzZWxlc3MKKyMgICAgZHVlIHRvIGl0cyBzaXplLiAgVG8gbWFrZSBzdXJlIHdoZXRoZXIgYSByZXN1bHQgaGFzIHRoZSByaWdodCBjb250ZW50cywKKyMgICAgYmV0dGVyIHRvIHVzZSB0aGUgc3RyaXAgb3IgY291bnQgbWV0aG9kcywgb3IgY29tcGFyZSBtZWFuaW5nZnVsIHNsaWNlcy4KICMKICMgIC0gRG9uJ3QgZm9yZ2V0IHRvIHRlc3QgZm9yIGxhcmdlIGluZGljZXMsIG9mZnNldHMgYW5kIHJlc3VsdHMgYW5kIHN1Y2gsCi0jICAgIGluIGFkZGl0aW9uIHRvIGxhcmdlIHNpemVzLgorIyAgICBpbiBhZGRpdGlvbiB0byBsYXJnZSBzaXplcy4gQW55dGhpbmcgdGhhdCBwcm9iZXMgdGhlIDMyLWJpdCBib3VuZGFyeS4KICMKICMgIC0gV2hlbiByZXBlYXRpbmcgYW4gb2JqZWN0IChzYXksIGEgc3Vic3RyaW5nLCBvciBhIHNtYWxsIGxpc3QpIHRvIGNyZWF0ZQogIyAgICBhIGxhcmdlIG9iamVjdCwgbWFrZSB0aGUgc3Vib2JqZWN0IG9mIGEgbGVuZ3RoIHRoYXQgaXMgbm90IGEgcG93ZXIgb2YKQEAgLTM3LDEzICs2MiwxNCBAQAogIyBmYWlsIGFzIHdlbGwuIEkgZG8gbm90IGtub3cgd2hldGhlciBpdCBpcyBkdWUgdG8gbWVtb3J5IGZyYWdtZW50YXRpb24KICMgaXNzdWVzLCBvciBvdGhlciBzcGVjaWZpY3Mgb2YgdGhlIHBsYXRmb3JtIG1hbGxvYygpIHJvdXRpbmUuCiAKLWNoYXJhY3Rlcl9zaXplID0gNCBpZiBzeXMubWF4dW5pY29kZSA+IDB4RkZGRiBlbHNlIDIKK2FzY2lpX2NoYXJfc2l6ZSA9IDEKK3VjczJfY2hhcl9zaXplID0gMgordWNzNF9jaGFyX3NpemUgPSA0CiAKIAogY2xhc3MgQmFzZVN0clRlc3Q6CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCi0gICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKKyAgICBkZWYgX3Rlc3RfY2FwaXRhbGl6ZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgU1VCU1RSID0gc2VsZi5mcm9tX2xhdGluMSgnIGFiYyBkZWYgZ2hpJykKICAgICAgICAgcyA9IF8oJy0nKSAqIHNpemUgKyBTVUJTVFIKQEAgLTkyLDcgKzExOCw3IEBACiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIHMgPSBfKCctJykgKiBzaXplCiAgICAgICAgIHRhYnNpemUgPSA4Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5leHBhbmR0YWJzKCksIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmV4cGFuZHRhYnMoKSA9PSBzKQogICAgICAgICBkZWwgcwogICAgICAgICBzbGVuLCByZW1haW5kZXIgPSBkaXZtb2Qoc2l6ZSwgdGFic2l6ZSkKICAgICAgICAgcyA9IF8oJyAgICAgICBcdCcpICogc2xlbgpAQCAtMzQ3LDcgKzM3Myw3IEBACiAgICAgIyBzdWZmZXIgZm9yIHRoZSBsaXN0IHNpemUuIChPdGhlcndpc2UsIGl0J2QgY29zdCBhbm90aGVyIDQ4IHRpbWVzCiAgICAgIyBzaXplIGluIGJ5dGVzISkgTmV2ZXJ0aGVsZXNzLCBhIGxpc3Qgb2Ygc2l6ZSB0YWtlcwogICAgICMgOCpzaXplIGJ5dGVzLgotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgNSwgbWVtdXNlPTEwKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgNSwgbWVtdXNlPTIgKiBhc2NpaV9jaGFyX3NpemUgKyA4KQogICAgIGRlZiB0ZXN0X3NwbGl0X2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzID0gXygnIGEnKSAqIHNpemUgKyBfKCcgJykKQEAgLTM2Niw5ICszOTIsOSBAQAogICAgICAgICAjIHRha2UgdXAgYW4gaW5vcmRpbmF0ZSBhbW91bnQgb2YgbWVtb3J5CiAgICAgICAgIGNodW5rc2l6ZSA9IGludChzaXplICoqIDAuNSArIDIpIC8vIDIKICAgICAgICAgU1VCU1RSID0gXygnICcpICogY2h1bmtzaXplICsgXygnXG4nKSArIF8oJyAnKSAqIGNodW5rc2l6ZSArIF8oJ1xyXG4nKQotICAgICAgICBzID0gU1VCU1RSICogY2h1bmtzaXplCisgICAgICAgIHMgPSBTVUJTVFIgKiAoY2h1bmtzaXplICogMikKICAgICAgICAgbCA9IHMuc3BsaXRsaW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGwpLCBjaHVua3NpemUgKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsKSwgY2h1bmtzaXplICogNCkKICAgICAgICAgZXhwZWN0ZWQgPSBfKCcgJykgKiBjaHVua3NpemUKICAgICAgICAgZm9yIGl0ZW0gaW4gbDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbSwgZXhwZWN0ZWQpCkBAIC0zOTQsOCArNDIwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIHNpemUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zdHJpcCgpLCBTVUJTVFIuc3RyaXAoKSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKLSAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICBkZWYgX3Rlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oImFCY0RlRkcxMi4nXHhhOVx4MDAiKQogICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQpAQCAtNDA2LDggKzQzMSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1s6c3VibGVuICogM10sIFNVQlNUUi5zd2FwY2FzZSgpICogMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWy1zdWJsZW4gKiAzOl0sIFNVQlNUUi5zd2FwY2FzZSgpICogMykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKLSAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICBkZWYgX3Rlc3RfdGl0bGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCiAgICAgICAgIFNVQlNUUiA9IF8oJ1NwYWFIQWFhQWFoYW0nKQogICAgICAgICBzID0gU1VCU1RSICogKHNpemUgLy8gbGVuKFNVQlNUUikgKyAyKQpAQCAtNDE5LDE0ICs0NDMsNyBAQAogICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmLCBzaXplKToKICAgICAgICAgXyA9IHNlbGYuZnJvbV9sYXRpbjEKICAgICAgICAgU1VCU1RSID0gXygnYVp6LnouQWF6LicpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoU1VCU1RSLCBzdHIpOgotICAgICAgICAgICAgdHJhbnMgPSB7Ci0gICAgICAgICAgICAgICAgb3JkKF8oJy4nKSk6IF8oJy0nKSwKLSAgICAgICAgICAgICAgICBvcmQoXygnYScpKTogXygnIScpLAotICAgICAgICAgICAgICAgIG9yZChfKCdaJykpOiBfKCckJyksCi0gICAgICAgICAgICB9Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cmFucyA9IGJ5dGVzLm1ha2V0cmFucyhiJy5hWicsIGInLSEkJykKKyAgICAgICAgdHJhbnMgPSBieXRlcy5tYWtldHJhbnMoYicuYVonLCBiJy0hJCcpCiAgICAgICAgIHN1YmxlbiA9IGxlbihTVUJTVFIpCiAgICAgICAgIHJlcGVhdHMgPSBzaXplIC8vIHN1YmxlbiArIDIKICAgICAgICAgcyA9IFNVQlNUUiAqIHJlcGVhdHMKQEAgLTUxOSwxOSArNTM2LDE5IEBACiAgICAgICAgIGVkZ2UgPSBfKCctJykgKiAoc2l6ZSAvLyAyKQogICAgICAgICBzID0gXygnJykuam9pbihbZWRnZSwgU1VCU1RSLCBlZGdlXSkKICAgICAgICAgZGVsIGVkZ2UKLSAgICAgICAgc2VsZi5hc3NlcnRJbihTVUJTVFIsIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oU1VCU1RSICogMiwgcykKLSAgICAgICAgc2VsZi5hc3NlcnRJbihfKCctJyksIHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oXygnYScpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoU1VCU1RSIGluIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoU1VCU1RSICogMiBpbiBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoXygnLScpIGluIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoXygnYScpIGluIHMpCiAgICAgICAgIHMgKz0gXygnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oXygnYScpLCBzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoXygnYScpIGluIHMpCiAKICAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9MikKICAgICBkZWYgdGVzdF9jb21wYXJlKHNlbGYsIHNpemUpOgogICAgICAgICBfID0gc2VsZi5mcm9tX2xhdGluMQogICAgICAgICBzMSA9IF8oJy0nKSAqIHNpemUKICAgICAgICAgczIgPSBfKCctJykgKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoczEgPT0gczIpCiAgICAgICAgIGRlbCBzMgogICAgICAgICBzMiA9IHMxICsgXygnYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoczEgPT0gczIpCkBAIC01NTIsNyArNTY5LDcgQEAKICAgICAgICAgaDEgPSBoYXNoKHMpCiAgICAgICAgIGRlbCBzCiAgICAgICAgIHMgPSBfKCdceDAwJykgKiAoc2l6ZSArIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaDEgPT0gaGFzaChzKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChoMSwgaGFzaChzKSkKIAogCiBjbGFzcyBTdHJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBCYXNlU3RyVGVzdCk6CkBAIC01NjMsNyArNTgwLDYgQEAKICAgICBkZWYgYmFzaWNfZW5jb2RlX3Rlc3Qoc2VsZiwgc2l6ZSwgZW5jLCBjPScuJywgZXhwZWN0ZWRzaXplPU5vbmUpOgogICAgICAgICBpZiBleHBlY3RlZHNpemUgaXMgTm9uZToKICAgICAgICAgICAgIGV4cGVjdGVkc2l6ZSA9IHNpemUKLQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzID0gYyAqIHNpemUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZW5jb2RlKGVuYykpLCBleHBlY3RlZHNpemUpCkBAIC01ODIsNDggKzU5OCw2NCBAQAogICAgICAgICAgICAgICAgIG1lbXVzZSA9IG1ldGgubWVtdXNlCiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG1ldGgubWVtdXNlID0gY2hhcmFjdGVyX3NpemUgKiBtZW11c2UKKyAgICAgICAgICAgIG1ldGgubWVtdXNlID0gYXNjaWlfY2hhcl9zaXplICogbWVtdXNlCiAgICAgICAgICAgICBzZWxmLl9hZGp1c3RlZFtuYW1lXSA9IG1lbXVzZQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSwgbWVtdXNlIGluIHNlbGYuX2FkanVzdGVkLml0ZW1zKCk6CiAgICAgICAgICAgICBnZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUpLm1lbXVzZSA9IG1lbXVzZQogCi0gICAgIyB0aGUgdXRmOCBlbmNvZGVyIHByZWFsbG9jYXRlcyBiaWcgdGltZSAoNHggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzKQotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgNCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9dWNzNF9jaGFyX3NpemUgKiAzKQorICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3RpdGxlKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPXVjczRfY2hhcl9zaXplICogMykKKyAgICBkZWYgdGVzdF9zd2FwY2FzZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF9zd2FwY2FzZShzaXplKQorCisgICAgIyBNYW55IGNvZGVjcyBjb252ZXJ0IHRvIHRoZSBsZWdhY3kgcmVwcmVzZW50YXRpb24gZmlyc3QsIGV4cGxhaW5pbmcKKyAgICAjIHdoeSB3ZSBhZGQgJ3VjczRfY2hhcl9zaXplJyB0byB0aGUgJ21lbXVzZScgYmVsb3cuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmLCBzaXplKToKICAgICAgICAgcmV0dXJuIHNlbGYuYmFzaWNfZW5jb2RlX3Rlc3Qoc2l6ZSwgJ3V0Zi04JykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDYgKyAyLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyAxKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDYgKyAyLCBtZW11c2U9YXNjaWlfY2hhcl9zaXplICsgdWNzNF9jaGFyX3NpemUgKyAxKQogICAgIGRlZiB0ZXN0X2VuY29kZV9yYXdfdW5pY29kZV9lc2NhcGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICdyYXdfdW5pY29kZV9lc2NhcGUnKQogICAgICAgICBleGNlcHQgTWVtb3J5RXJyb3I6CiAgICAgICAgICAgICBwYXNzICMgYWNjZXB0YWJsZSBvbiAzMi1iaXQKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHIC8vIDUgKyA3MCwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgMSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1ICsgNzAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKyB1Y3M0X2NoYXJfc2l6ZSArIDEpCiAgICAgZGVmIHRlc3RfZW5jb2RlX3V0Zjcoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGY3JykKICAgICAgICAgZXhjZXB0IE1lbW9yeUVycm9yOgogICAgICAgICAgICAgcGFzcyAjIGFjY2VwdGFibGUgb24gMzItYml0CiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA0ICsgNSwgbWVtdXNlPWNoYXJhY3Rlcl9zaXplICsgNCkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA0ICsgNSwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIHVjczRfY2hhcl9zaXplICsgNCkKICAgICBkZWYgdGVzdF9lbmNvZGVfdXRmMzIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYzMicsIGV4cGVjdGVkc2l6ZT00KnNpemUrNCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX2VuY29kZV90ZXN0KHNpemUsICd1dGYzMicsIGV4cGVjdGVkc2l6ZT00ICogc2l6ZSArIDQpCiAgICAgICAgIGV4Y2VwdCBNZW1vcnlFcnJvcjoKICAgICAgICAgICAgIHBhc3MgIyBhY2NlcHRhYmxlIG9uIDMyLWJpdAogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLSAxLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKyAxKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC0gMSwgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSArIDEpCiAgICAgZGVmIHRlc3RfZW5jb2RlX2FzY2lpKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY19lbmNvZGVfdGVzdChzaXplLCAnYXNjaWknLCBjPSdBJykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqIDIpCisgICAgIyBzdHIgJSAoLi4uKSB1c2VzIGEgUHlfVUNTNCBpbnRlcm1lZGlhdGUgcmVwcmVzZW50YXRpb24KKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyICsgdWNzNF9jaGFyX3NpemUpCiAgICAgZGVmIHRlc3RfZm9ybWF0KHNlbGYsIHNpemUpOgogICAgICAgICBzID0gJy0nICogc2l6ZQogICAgICAgICBzZiA9ICclcycgJSAocywpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgc2YpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzID09IHNmKQogICAgICAgICBkZWwgc2YKICAgICAgICAgc2YgPSAnLi4lcy4uJyAlIChzLCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2YpLCBsZW4ocykgKyA0KQpAQCAtNjQwLDcgKzY3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnLicpLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJy0nKSwgc2l6ZSAqIDIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAyKQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiAyKQogICAgIGRlZiB0ZXN0X3JlcHJfc21hbGwoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSAnLScgKiBzaXplCiAgICAgICAgIHMgPSByZXByKHMpCkBAIC02NjEsNyArNjkzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCdcXCcpLCBzaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSAqIDIpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDEwLCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiA1KQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT1hc2NpaV9jaGFyX3NpemUgKiA1KQogICAgIGRlZiB0ZXN0X3JlcHJfbGFyZ2Uoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSAnXHgwMCcgKiBzaXplCiAgICAgICAgIHMgPSByZXByKHMpCkBAIC02NzEsNyArNzAzLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5jb3VudCgnXFwnKSwgc2l6ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KCcwJyksIHNpemUgKiAyKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gNSArIDEsIG1lbXVzZT1jaGFyYWN0ZXJfc2l6ZSAqIDcpCisgICAgIyBhc2NpaSgpIGNhbGxzIGVuY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpLCB3aGljaCBpdHNlbGYKKyAgICAjIGNyZWF0ZXMgYSB0ZW1wb3JhcnkgUHlfVU5JQ09ERSByZXByZXNlbnRhdGlvbiBpbiBhZGRpdGlvbiB0byB0aGUKKyAgICAjIG9yaWdpbmFsIChQeV9VQ1MyKSBvbmUKKyAgICAjIFRoZXJlJ3MgYWxzbyBzb21lIG92ZXJhbGxvY2F0aW9uIHdoZW4gcmVzaXppbmcgdGhlIGFzY2lpKCkgcmVzdWx0CisgICAgIyB0aGF0IGlzbid0IHRha2VuIGludG8gYWNjb3VudCBoZXJlLgorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9dWNzMl9jaGFyX3NpemUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNzNF9jaGFyX3NpemUgKyBhc2NpaV9jaGFyX3NpemUgKiA2KQogICAgIGRlZiB0ZXN0X3VuaWNvZGVfcmVwcihzZWxmLCBzaXplKToKICAgICAgICAgIyBVc2UgYW4gYXNzaWduZWQsIGJ1dCBub3QgcHJpbnRhYmxlIGNvZGUgcG9pbnQuCiAgICAgICAgICMgSXQgaXMgaW4gdGhlIHJhbmdlIG9mIHRoZSBsb3cgc3Vycm9nYXRlcyBcdURDMDAtXHVERkZGLgpAQCAtNjg2LDkgKzcyNCw3IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByID0gcyA9IE5vbmUKIAotICAgICMgVGhlIGNoYXJhY3RlciB0YWtlcyA0IGJ5dGVzIGV2ZW4gaW4gVUNTLTIgYnVpbGRzIGJlY2F1c2UgaXQgd2lsbAotICAgICMgYmUgZGVjb21wb3NlZCBpbnRvIHN1cnJvZ2F0ZXMuCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgLy8gNSArIDEsIG1lbXVzZT00ICsgY2hhcmFjdGVyX3NpemUgKiA5KQorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDUgKyAxLCBtZW11c2U9dWNzNF9jaGFyX3NpemUgKiAyICsgYXNjaWlfY2hhcl9zaXplICogMTApCiAgICAgZGVmIHRlc3RfdW5pY29kZV9yZXByX3dpZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGNoYXIgPSAiXFUwMDAxRENCQSIKICAgICAgICAgcyA9IGNoYXIgKiBzaXplCkBAIC03MDEsMzkgKzczNyw3NiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgciA9IHMgPSBOb25lCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyAvLyA1LCBtZW11c2U9Y2hhcmFjdGVyX3NpemUgKiAoNiArIDEpKQotICAgIGRlZiBfdGVzdF91bmljb2RlX3JlcHJfb3ZlcmZsb3coc2VsZiwgc2l6ZSk6Ci0gICAgICAgICMgWFhYIG5vdCBzdXJlIHdoYXQgdGhpcyB0ZXN0IGlzIGFib3V0Ci0gICAgICAgIGNoYXIgPSAiXHVEQ0JBIgotICAgICAgICBzID0gY2hhciAqIHNpemUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgciA9IHJlcHIocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzID09IGV2YWwocikpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByID0gcyA9IE5vbmUKKyAgICAjIFRoZSBvcmlnaW5hbCB0ZXN0X3RyYW5zbGF0ZSBpcyBvdmVycmlkZW4gaGVyZSwgc28gYXMgdG8gZ2V0IHRoZQorICAgICMgY29ycmVjdCBzaXplIGVzdGltYXRlOiBzdHIudHJhbnNsYXRlKCkgdXNlcyBhbiBpbnRlcm1lZGlhdGUgUHlfVUNTNAorICAgICMgcmVwcmVzZW50YXRpb24uCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPWFzY2lpX2NoYXJfc2l6ZSAqIDIgKyB1Y3M0X2NoYXJfc2l6ZSkKKyAgICBkZWYgdGVzdF90cmFuc2xhdGUoc2VsZiwgc2l6ZSk6CisgICAgICAgIF8gPSBzZWxmLmZyb21fbGF0aW4xCisgICAgICAgIFNVQlNUUiA9IF8oJ2Faei56LkFhei4nKQorICAgICAgICB0cmFucyA9IHsKKyAgICAgICAgICAgIG9yZChfKCcuJykpOiBfKCctJyksCisgICAgICAgICAgICBvcmQoXygnYScpKTogXygnIScpLAorICAgICAgICAgICAgb3JkKF8oJ1onKSk6IF8oJyQnKSwKKyAgICAgICAgfQorICAgICAgICBzdWJsZW4gPSBsZW4oU1VCU1RSKQorICAgICAgICByZXBlYXRzID0gc2l6ZSAvLyBzdWJsZW4gKyAyCisgICAgICAgIHMgPSBTVUJTVFIgKiByZXBlYXRzCisgICAgICAgIHMgPSBzLnRyYW5zbGF0ZSh0cmFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIHJlcGVhdHMgKiBzdWJsZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1s6c3VibGVuXSwgU1VCU1RSLnRyYW5zbGF0ZSh0cmFucykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stc3VibGVuOl0sIFNVQlNUUi50cmFuc2xhdGUodHJhbnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoXygnLicpKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmNvdW50KF8oJyEnKSksIHJlcGVhdHMgKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoXygneicpKSwgcmVwZWF0cyAqIDMpCiAKIAogY2xhc3MgQnl0ZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBCYXNlU3RyVGVzdCk6CiAKICAgICBkZWYgZnJvbV9sYXRpbjEoc2VsZiwgcyk6Ci0gICAgICAgIHJldHVybiBzLmVuY29kZSgibGF0aW4xIikKKyAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJsYXRpbi0xIikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMiwgbWVtdXNlPTEgKyBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmLCBzaXplKToKICAgICAgICAgcyA9IHNlbGYuZnJvbV9sYXRpbjEoJy4nKSAqIHNpemUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocy5kZWNvZGUoJ3V0Zi04JykpLCBzaXplKQogCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X2NhcGl0YWxpemUoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3RfY2FwaXRhbGl6ZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3RpdGxlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3RpdGxlKHNpemUpCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTIpCisgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZiwgc2l6ZSk6CisgICAgICAgIHNlbGYuX3Rlc3Rfc3dhcGNhc2Uoc2l6ZSkKKwogCiBjbGFzcyBCeXRlYXJyYXlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBCYXNlU3RyVGVzdCk6CiAKICAgICBkZWYgZnJvbV9sYXRpbjEoc2VsZiwgcyk6Ci0gICAgICAgIHJldHVybiBieXRlYXJyYXkocy5lbmNvZGUoImxhdGluMSIpKQorICAgICAgICByZXR1cm4gYnl0ZWFycmF5KHMuZW5jb2RlKCJsYXRpbi0xIikpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT0xICsgY2hhcmFjdGVyX3NpemUpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9MSArIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHMgPSBzZWxmLmZyb21fbGF0aW4xKCcuJykgKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHMuZGVjb2RlKCd1dGYtOCcpKSwgc2l6ZSkKIAorICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF9jYXBpdGFsaXplKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X2NhcGl0YWxpemUoc2l6ZSkKKworICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHLCBtZW11c2U9MikKKyAgICBkZWYgdGVzdF90aXRsZShzZWxmLCBzaXplKToKKyAgICAgICAgc2VsZi5fdGVzdF90aXRsZShzaXplKQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcsIG1lbXVzZT0yKQorICAgIGRlZiB0ZXN0X3N3YXBjYXNlKHNlbGYsIHNpemUpOgorICAgICAgICBzZWxmLl90ZXN0X3N3YXBjYXNlKHNpemUpCisKICAgICB0ZXN0X2hhc2ggPSBOb25lCiAgICAgdGVzdF9zcGxpdF9sYXJnZSA9IE5vbmUKIApAQCAtNzUyLDcgKzgyNSw3IEBACiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgdDEgPSAoJycsKSAqIHNpemUKICAgICAgICAgdDIgPSAoJycsKSAqIHNpemUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0MSA9PSB0MikKICAgICAgICAgZGVsIHQyCiAgICAgICAgIHQyID0gKCcnLCkgKiAoc2l6ZSArIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDEgPT0gdDIpCkBAIC03ODMsOSArODU2LDkgQEAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmLCBzaXplKToKICAgICAgICAgdCA9ICgxLCAyLCAzLCA0LCA1KSAqIHNpemUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odCksIHNpemUgKiA1KQotICAgICAgICBzZWxmLmFzc2VydEluKDUsIHQpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oKDEsIDIsIDMsIDQsIDUpLCB0KQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKDAsIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSg1IGluIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDEsIDIsIDMsIDQsIDUpIGluIHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiB0KQogCiAgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMCwgbWVtdXNlPTgpCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmLCBzaXplKToKQEAgLTg2OSwxMSArOTQyLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stNTpdLCAnMCwgMCknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDMgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X3JlcHJfc21hbGwoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX3Rlc3RfcmVwcihzaXplKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIApAQCAtODg4LDcgKzk2MSw3IEBACiAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmLCBzaXplKToKICAgICAgICAgbDEgPSBbJyddICogc2l6ZQogICAgICAgICBsMiA9IFsnJ10gKiBzaXplCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDEsIGwyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobDEgPT0gbDIpCiAgICAgICAgIGRlbCBsMgogICAgICAgICBsMiA9IFsnJ10gKiAoc2l6ZSArIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobDEgPT0gbDIpCkBAIC05MzQsOSArMTAwNyw5IEBACiAgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZiwgc2l6ZSk6CiAgICAgICAgIGwgPSBbMSwgMiwgMywgNCwgNV0gKiBzaXplCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGwpLCBzaXplICogNSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbig1LCBsKQotICAgICAgICBzZWxmLmFzc2VydE5vdEluKFsxLCAyLCAzLCA0LCA1XSwgbCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbigwLCBsKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoNSBpbiBsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFsxLCAyLCAzLCA0LCA1XSBpbiBsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gbCkKIAogICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHICsgMTAsIG1lbXVzZT04KQogICAgIGRlZiB0ZXN0X2hhc2goc2VsZiwgc2l6ZSk6CkBAIC0xMDQ0LDExICsxMTE3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1stNTpdLCAnMCwgMF0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuY291bnQoJzAnKSwgc2l6ZSkKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzJHIC8vIDMgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyAvLyAzICsgMiwgbWVtdXNlPTggKyAzICogYXNjaWlfY2hhcl9zaXplKQogICAgIGRlZiB0ZXN0X3JlcHJfc21hbGwoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmJhc2ljX3Rlc3RfcmVwcihzaXplKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAyLCBtZW11c2U9OCArIDMgKiBjaGFyYWN0ZXJfc2l6ZSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV8yRyArIDIsIG1lbXVzZT04ICsgMyAqIGFzY2lpX2NoYXJfc2l6ZSkKICAgICBkZWYgdGVzdF9yZXByX2xhcmdlKHNlbGYsIHNpemUpOgogICAgICAgICByZXR1cm4gc2VsZi5iYXNpY190ZXN0X3JlcHIoc2l6ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weSBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKaW5kZXggMWU5ZTg4OC4uMDRkOGY5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CkBAIC0yMDgsOSArMjA4LDkgQEAKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgie30oeyFyfSkgcmFpc2VzIHshcn0iLmZvcm1hdChmdW5jLCBlbXB0eSwgZXJyKSkKIAotICAgIGRlZiB0ZXN0X3VuaWNvZGVfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgIyBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdCBhY2NlcHRlZC4KLSAgICAgICAgZm9yIGZ1bmMgaW4gYWxsX2Z1bmN0aW9uczoKKyAgICBkZWYgdGVzdF91bmljb2RlX2IyYShzZWxmKToKKyAgICAgICAgIyBVbmljb2RlIHN0cmluZ3MgYXJlIG5vdCBhY2NlcHRlZCBieSBiMmFfKiBmdW5jdGlvbnMuCisgICAgICAgIGZvciBmdW5jIGluIHNldChhbGxfZnVuY3Rpb25zKSAtIHNldChhMmJfZnVuY3Rpb25zKSB8IHsncmxlZGVjb2RlX2hxeCd9OgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXR0cihiaW5hc2NpaSwgZnVuYyksICJ0ZXN0IikKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgpAQCAtMjE4LDYgKzIxOCwzNCBAQAogICAgICAgICAjIGNyY19ocXggbmVlZHMgMiBhcmd1bWVudHMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiaW5hc2NpaS5jcmNfaHF4LCAidGVzdCIsIDApCiAKKyAgICBkZWYgdGVzdF91bmljb2RlX2EyYihzZWxmKToKKyAgICAgICAgIyBVbmljb2RlIHN0cmluZ3MgYXJlIGFjY2VwdGVkIGJ5IGEyYl8qIGZ1bmN0aW9ucy4KKyAgICAgICAgTUFYX0FMTCA9IDQ1CisgICAgICAgIHJhdyA9IHNlbGYucmF3ZGF0YVs6TUFYX0FMTF0KKyAgICAgICAgZm9yIGZhLCBmYiBpbiB6aXAoYTJiX2Z1bmN0aW9ucywgYjJhX2Z1bmN0aW9ucyk6CisgICAgICAgICAgICBpZiBmYSA9PSAncmxlZGVjb2RlX2hxeCc6CisgICAgICAgICAgICAgICAgIyBUYWtlcyBub24tQVNDSUkgZGF0YQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBhMmIgPSBnZXRhdHRyKGJpbmFzY2lpLCBmYSkKKyAgICAgICAgICAgIGIyYSA9IGdldGF0dHIoYmluYXNjaWksIGZiKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGEgPSBiMmEoc2VsZi50eXBlMnRlc3QocmF3KSkKKyAgICAgICAgICAgICAgICBiaW5hcnlfcmVzID0gYTJiKGEpCisgICAgICAgICAgICAgICAgYSA9IGEuZGVjb2RlKCdhc2NpaScpCisgICAgICAgICAgICAgICAgcmVzID0gYTJiKGEpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInt9L3t9IGNvbnZlcnNpb24gcmFpc2VzIHshcn0iLmZvcm1hdChmYiwgZmEsIGVycikpCisgICAgICAgICAgICBpZiBmYiA9PSAnYjJhX2hxeCc6CisgICAgICAgICAgICAgICAgIyBiMmFfaHF4IHJldHVybnMgYSB0dXBsZQorICAgICAgICAgICAgICAgIHJlcywgXyA9IHJlcworICAgICAgICAgICAgICAgIGJpbmFyeV9yZXMsIF8gPSBiaW5hcnlfcmVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgcmF3LCAie30ve30gY29udmVyc2lvbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieyFyfSAhPSB7IXJ9Ii5mb3JtYXQoZmIsIGZhLCByZXMsIHJhdykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgYmluYXJ5X3JlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXMsIGJ5dGVzKQorICAgICAgICAgICAgIyBub24tQVNDSUkgc3RyaW5nCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBhMmIsICJceDgwIikKKwogCiBjbGFzcyBBcnJheUJpbkFTQ0lJVGVzdChCaW5BU0NJSVRlc3QpOgogICAgIGRlZiB0eXBlMnRlc3Qoc2VsZiwgcyk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkgYi9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKaW5kZXggYjI5Njg3MC4uNGJhYjI4YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ib29sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQpAQCAtMzMwLDYgKzMzMCwxNiBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCAoRXhjZXB0aW9uKSBhcyBlX2xlbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZV9ib29sKSwgc3RyKGVfbGVuKSkKIAorICAgIGRlZiB0ZXN0X3JlYWxfYW5kX2ltYWcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5yZWFsLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUuaW1hZywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKFRydWUucmVhbCksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKFRydWUuaW1hZyksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZS5yZWFsLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLmltYWcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShGYWxzZS5yZWFsKSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmFsc2UuaW1hZyksIGludCkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEJvb2xUZXN0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weSBiL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2Y2Q5YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpAQCAtMCwwICsxLDQyNzMgQEAKKyMKKyMgVGhlIG5kYXJyYXkgb2JqZWN0IGZyb20gX3Rlc3RidWZmZXIuYyBpcyBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mCisjIGEgUEVQLTMxMTggYnVmZmVyIHByb3ZpZGVyLiBJdCBpcyBpbmRlcGVuZGVudCBmcm9tIE51bVB5J3MgbmRhcnJheQorIyBhbmQgdGhlIHRlc3RzIGRvbid0IHJlcXVpcmUgTnVtUHkuCisjCisjIElmIE51bVB5IGlzIHByZXNlbnQsIHNvbWUgdGVzdHMgY2hlY2sgYm90aCBuZGFycmF5IGltcGxlbWVudGF0aW9ucworIyBhZ2FpbnN0IGVhY2ggb3RoZXIuCisjCisjIE1vc3QgbmRhcnJheSB0ZXN0cyBhbHNvIGNoZWNrIHRoYXQgbWVtb3J5dmlldyhuZGFycmF5KSBiZWhhdmVzIGluCisjIHRoZSBzYW1lIHdheSBhcyB0aGUgb3JpZ2luYWwuIFRodXMsIGEgc3Vic3RhbnRpYWwgcGFydCBvZiB0aGUKKyMgbWVtb3J5dmlldyB0ZXN0cyBpcyBub3cgaW4gdGhpcyBtb2R1bGUuCisjCisKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zLCBwcm9kdWN0Citmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzYW1wbGUsIGNob2ljZQorZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCitpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCBzeXMsIGFycmF5LCBpbworZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCitmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KKwordHJ5OgorICAgIGZyb20gX3Rlc3RidWZmZXIgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBuZGFycmF5ID0gTm9uZQorCit0cnk6CisgICAgaW1wb3J0IHN0cnVjdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHN0cnVjdCA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisKK3RyeToKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIGZyb20gbnVtcHkgaW1wb3J0IG5kYXJyYXkgYXMgbnVtcHlfYXJyYXkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBudW1weV9hcnJheSA9IE5vbmUKKworCitTSE9SVF9URVNUID0gVHJ1ZQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgUmFuZG9tIGxpc3RzIGJ5IGZvcm1hdCBzcGVjaWZpZXIKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIE5hdGl2ZSBmb3JtYXQgY2hhcnMgYW5kIHRoZWlyIHJhbmdlcy4KK05BVElWRSA9IHsKKyAgICAnPyc6MCwgJ2MnOjAsICdiJzowLCAnQic6MCwKKyAgICAnaCc6MCwgJ0gnOjAsICdpJzowLCAnSSc6MCwKKyAgICAnbCc6MCwgJ0wnOjAsICduJzowLCAnTic6MCwKKyAgICAnZic6MCwgJ2QnOjAsICdQJzowCit9CisKKyMgTnVtUHkgZG9lcyBub3QgaGF2ZSAnbicgb3IgJ04nOgoraWYgbnVtcHlfYXJyYXk6CisgICAgZGVsIE5BVElWRVsnbiddCisgICAgZGVsIE5BVElWRVsnTiddCisKK2lmIHN0cnVjdDoKKyAgICB0cnk6CisgICAgICAgICMgQWRkICJxUSIgaWYgcHJlc2VudCBpbiBuYXRpdmUgbW9kZS4KKyAgICAgICAgc3RydWN0LnBhY2soJ1EnLCAyKio2NC0xKQorICAgICAgICBOQVRJVkVbJ3EnXSA9IDAKKyAgICAgICAgTkFUSVZFWydRJ10gPSAwCisgICAgZXhjZXB0IHN0cnVjdC5lcnJvcjoKKyAgICAgICAgcGFzcworCisjIFN0YW5kYXJkIGZvcm1hdCBjaGFycyBhbmQgdGhlaXIgcmFuZ2VzLgorU1RBTkRBUkQgPSB7CisgICAgJz8nOigwLCAyKSwgICAgICAgICAgICAnYyc6KDAsIDE8PDgpLAorICAgICdiJzooLSgxPDw3KSwgMTw8NyksICAgJ0InOigwLCAxPDw4KSwKKyAgICAnaCc6KC0oMTw8MTUpLCAxPDwxNSksICdIJzooMCwgMTw8MTYpLAorICAgICdpJzooLSgxPDwzMSksIDE8PDMxKSwgJ0knOigwLCAxPDwzMiksCisgICAgJ2wnOigtKDE8PDMxKSwgMTw8MzEpLCAnTCc6KDAsIDE8PDMyKSwKKyAgICAncSc6KC0oMTw8NjMpLCAxPDw2MyksICdRJzooMCwgMTw8NjQpLAorICAgICdmJzooLSgxPDw2MyksIDE8PDYzKSwgJ2QnOigtKDE8PDEwMjMpLCAxPDwxMDIzKQorfQorCitkZWYgbmF0aXZlX3R5cGVfcmFuZ2UoZm10KToKKyAgICAiIiJSZXR1cm4gcmFuZ2Ugb2YgYSBuYXRpdmUgdHlwZS4iIiIKKyAgICBpZiBmbXQgPT0gJ2MnOgorICAgICAgICBsaCA9ICgwLCAyNTYpCisgICAgZWxpZiBmbXQgPT0gJz8nOgorICAgICAgICBsaCA9ICgwLCAyKQorICAgIGVsaWYgZm10ID09ICdmJzoKKyAgICAgICAgbGggPSAoLSgxPDw2MyksIDE8PDYzKQorICAgIGVsaWYgZm10ID09ICdkJzoKKyAgICAgICAgbGggPSAoLSgxPDwxMDIzKSwgMTw8MTAyMykKKyAgICBlbHNlOgorICAgICAgICBmb3IgZXhwIGluICgxMjgsIDEyNywgNjQsIDYzLCAzMiwgMzEsIDE2LCAxNSwgOCwgNyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soZm10LCAoMTw8ZXhwKS0xKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbGggPSAoLSgxPDxleHApLCAxPDxleHApIGlmIGV4cCAmIDEgZWxzZSAoMCwgMTw8ZXhwKQorICAgIHJldHVybiBsaAorCitmbXRkaWN0ID0geworICAgICcnOk5BVElWRSwKKyAgICAnQCc6TkFUSVZFLAorICAgICc8JzpTVEFOREFSRCwKKyAgICAnPic6U1RBTkRBUkQsCisgICAgJz0nOlNUQU5EQVJELAorICAgICchJzpTVEFOREFSRAorfQorCitpZiBzdHJ1Y3Q6CisgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgIGZtdGRpY3RbJ0AnXVtmbXRdID0gbmF0aXZlX3R5cGVfcmFuZ2UoZm10KQorCitNRU1PUllWSUVXID0gTkFUSVZFLmNvcHkoKQorQVJSQVkgPSBOQVRJVkUuY29weSgpCitmb3IgayBpbiBOQVRJVkU6CisgICAgaWYgbm90IGsgaW4gImJCaEhpSWxMZmQiOgorICAgICAgICBkZWwgQVJSQVlba10KKworQllURUZNVCA9IE5BVElWRS5jb3B5KCkKK2ZvciBrIGluIE5BVElWRToKKyAgICBpZiBub3QgayBpbiAiQmJjIjoKKyAgICAgICAgZGVsIEJZVEVGTVRba10KKworZm10ZGljdFsnbSddICA9IE1FTU9SWVZJRVcKK2ZtdGRpY3RbJ0BtJ10gPSBNRU1PUllWSUVXCitmbXRkaWN0WydhJ10gID0gQVJSQVkKK2ZtdGRpY3RbJ2InXSAgPSBCWVRFRk1UCitmbXRkaWN0WydAYiddICA9IEJZVEVGTVQKKworIyBDYXBhYmlsaXRpZXMgb2YgdGhlIHRlc3Qgb2JqZWN0czoKK01PREUgPSAwCitNVUxUID0gMQorY2FwID0geyAgICAgICAgICMgZm9ybWF0IGNoYXJzICAgICAgICAgICAgICAgICAgIyBtdWx0aXBsaWVyCisgICduZGFycmF5JzogICAgKFsnJywgJ0AnLCAnPCcsICc+JywgJz0nLCAnISddLCBbJycsICcxJywgJzInLCAnMyddKSwKKyAgJ2FycmF5JzogICAgICAoWydhJ10sICAgICAgICAgICAgICAgICAgICAgICAgIFsnJ10pLAorICAnbnVtcHknOiAgICAgIChbJyddLCAgICAgICAgICAgICAgICAgICAgICAgICAgWycnXSksCisgICdtZW1vcnl2aWV3JzogKFsnQG0nLCAnbSddLCAgICAgICAgICAgICAgICAgICBbJyddKSwKKyAgJ2J5dGVmbXQnOiAgICAoWydAYicsICdiJ10sICAgICAgICAgICAgICAgICAgIFsnJ10pLAorfQorCitkZWYgcmFuZHJhbmdlX2ZtdChtb2RlLCBjaGFyLCBvYmopOgorICAgICIiIlJldHVybiByYW5kb20gaXRlbSBmb3IgYSB0eXBlIHNwZWNpZmllZCBieSBhIG1vZGUgYW5kIGEgc2luZ2xlCisgICAgICAgZm9ybWF0IGNoYXJhY3Rlci4iIiIKKyAgICB4ID0gcmFuZHJhbmdlKCpmbXRkaWN0W21vZGVdW2NoYXJdKQorICAgIGlmIGNoYXIgPT0gJ2MnOgorICAgICAgICB4ID0gYnl0ZXMoY2hyKHgpLCAnbGF0aW4xJykKKyAgICBpZiBjaGFyID09ICc/JzoKKyAgICAgICAgeCA9IGJvb2woeCkKKyAgICBpZiBjaGFyID09ICdmJyBvciBjaGFyID09ICdkJzoKKyAgICAgICAgeCA9IHN0cnVjdC5wYWNrKGNoYXIsIHgpCisgICAgICAgIHggPSBzdHJ1Y3QudW5wYWNrKGNoYXIsIHgpWzBdCisgICAgaWYgb2JqID09ICdudW1weScgYW5kIHggPT0gYidceDAwJzoKKyAgICAgICAgIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTI1CisgICAgICAgIHggPSBiJ1x4MDEnCisgICAgcmV0dXJuIHgKKworZGVmIGdlbl9pdGVtKGZtdCwgb2JqKToKKyAgICAiIiJSZXR1cm4gc2luZ2xlIHJhbmRvbSBpdGVtLiIiIgorICAgIG1vZGUsIGNoYXJzID0gZm10LnNwbGl0KCcjJykKKyAgICB4ID0gW10KKyAgICBmb3IgYyBpbiBjaGFyczoKKyAgICAgICAgeC5hcHBlbmQocmFuZHJhbmdlX2ZtdChtb2RlLCBjLCBvYmopKQorICAgIHJldHVybiB4WzBdIGlmIGxlbih4KSA9PSAxIGVsc2UgdHVwbGUoeCkKKworZGVmIGdlbl9pdGVtcyhuLCBmbXQsIG9iaik6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiByYW5kb20gaXRlbXMgKG9yIGEgc2NhbGFyKS4iIiIKKyAgICBpZiBuID09IDA6CisgICAgICAgIHJldHVybiBnZW5faXRlbShmbXQsIG9iaikKKyAgICBsc3QgPSBbMF0gKiBuCisgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgIGxzdFtpXSA9IGdlbl9pdGVtKGZtdCwgb2JqKQorICAgIHJldHVybiBsc3QKKworZGVmIHN0cnVjdF9pdGVtcyhuLCBvYmopOgorICAgIG1vZGUgPSBjaG9pY2UoY2FwW29ial1bTU9ERV0pCisgICAgeGZtdCA9IG1vZGUgKyAnIycKKyAgICBmbXQgPSBtb2RlLnN0cmlwKCdhbWInKQorICAgIG5tZW1iID0gcmFuZHJhbmdlKDIsIDEwKSAjIG51bWJlciBvZiBzdHJ1Y3QgbWVtYmVycworICAgIGZvciBfIGluIHJhbmdlKG5tZW1iKToKKyAgICAgICAgY2hhciA9IGNob2ljZSh0dXBsZShmbXRkaWN0W21vZGVdKSkKKyAgICAgICAgbXVsdGlwbGllciA9IGNob2ljZShjYXBbb2JqXVtNVUxUXSkKKyAgICAgICAgeGZtdCArPSAoY2hhciAqIGludChtdWx0aXBsaWVyIGlmIG11bHRpcGxpZXIgZWxzZSAxKSkKKyAgICAgICAgZm10ICs9IChtdWx0aXBsaWVyICsgY2hhcikKKyAgICBpdGVtcyA9IGdlbl9pdGVtcyhuLCB4Zm10LCBvYmopCisgICAgaXRlbSA9IGdlbl9pdGVtKHhmbXQsIG9iaikKKyAgICByZXR1cm4gZm10LCBpdGVtcywgaXRlbQorCitkZWYgcmFuZGl0ZW1zKG4sIG9iaj0nbmRhcnJheScsIG1vZGU9Tm9uZSwgY2hhcj1Ob25lKToKKyAgICAiIiJSZXR1cm4gcmFuZG9tIGZvcm1hdCwgaXRlbXMsIGl0ZW0uIiIiCisgICAgaWYgbW9kZSBpcyBOb25lOgorICAgICAgICBtb2RlID0gY2hvaWNlKGNhcFtvYmpdW01PREVdKQorICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgY2hhciA9IGNob2ljZSh0dXBsZShmbXRkaWN0W21vZGVdKSkKKyAgICBtdWx0aXBsaWVyID0gY2hvaWNlKGNhcFtvYmpdW01VTFRdKQorICAgIGZtdCA9IG1vZGUgKyAnIycgKyBjaGFyICogaW50KG11bHRpcGxpZXIgaWYgbXVsdGlwbGllciBlbHNlIDEpCisgICAgaXRlbXMgPSBnZW5faXRlbXMobiwgZm10LCBvYmopCisgICAgaXRlbSA9IGdlbl9pdGVtKGZtdCwgb2JqKQorICAgIGZtdCA9IG1vZGUuc3RyaXAoJ2FtYicpICsgbXVsdGlwbGllciArIGNoYXIKKyAgICByZXR1cm4gZm10LCBpdGVtcywgaXRlbQorCitkZWYgaXRlcl9tb2RlKG4sIG9iaj0nbmRhcnJheScpOgorICAgICIiIkl0ZXJhdGUgdGhyb3VnaCBzdXBwb3J0ZWQgbW9kZS9jaGFyIGNvbWJpbmF0aW9ucy4iIiIKKyAgICBmb3IgbW9kZSBpbiBjYXBbb2JqXVtNT0RFXToKKyAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFttb2RlXToKKyAgICAgICAgICAgIHlpZWxkIHJhbmRpdGVtcyhuLCBvYmosIG1vZGUsIGNoYXIpCisKK2RlZiBpdGVyX2Zvcm1hdChuaXRlbXMsIHRlc3RvYmo9J25kYXJyYXknKToKKyAgICAiIiJZaWVsZCAoZm9ybWF0LCBpdGVtcywgaXRlbSkgZm9yIGFsbCBwb3NzaWJsZSBtb2RlcyBhbmQgZm9ybWF0CisgICAgICAgY2hhcmFjdGVycyBwbHVzIG9uZSByYW5kb20gY29tcG91bmQgZm9ybWF0IHN0cmluZy4iIiIKKyAgICBmb3IgdCBpbiBpdGVyX21vZGUobml0ZW1zLCB0ZXN0b2JqKToKKyAgICAgICAgeWllbGQgdAorICAgIGlmIHRlc3RvYmogIT0gJ25kYXJyYXknOgorICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgeWllbGQgc3RydWN0X2l0ZW1zKG5pdGVtcywgdGVzdG9iaikKKworCitkZWYgaXNfYnl0ZV9mb3JtYXQoZm10KToKKyAgICByZXR1cm4gJ2MnIGluIGZtdCBvciAnYicgaW4gZm10IG9yICdCJyBpbiBmbXQKKworZGVmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgIiIiZm9ybWF0IHN1aXRhYmxlIGZvciBtZW1vcnl2aWV3IiIiCisgICAgeCA9IGxlbihmbXQpCisgICAgcmV0dXJuICgoeCA9PSAxIG9yICh4ID09IDIgYW5kIGZtdFswXSA9PSAnQCcpKSBhbmQKKyAgICAgICAgICAgIGZtdFt4LTFdIGluIE1FTU9SWVZJRVcpCisKK05PTl9CWVRFX0ZPUk1BVCA9IFtjIGZvciBjIGluIGZtdGRpY3RbJ0AnXSBpZiBub3QgaXNfYnl0ZV9mb3JtYXQoYyldCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgIE11bHRpLWRpbWVuc2lvbmFsIHRvbGlzdCgpLCBzbGljaW5nIGFuZCBzbGljZSBhc3NpZ25tZW50cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBhdG9tcChsc3QpOgorICAgICIiIlR1cGxlIGl0ZW1zIChyZXByZXNlbnRpbmcgc3RydWN0cykgYXJlIHJlZ2FyZGVkIGFzIGF0b21zLiIiIgorICAgIHJldHVybiBub3QgaXNpbnN0YW5jZShsc3QsIGxpc3QpCisKK2RlZiBsaXN0cChsc3QpOgorICAgIHJldHVybiBpc2luc3RhbmNlKGxzdCwgbGlzdCkKKworZGVmIHByb2QobHN0KToKKyAgICAiIiJQcm9kdWN0IG9mIGxpc3QgZWxlbWVudHMuIiIiCisgICAgaWYgbGVuKGxzdCkgPT0gMDoKKyAgICAgICAgcmV0dXJuIDAKKyAgICB4ID0gbHN0WzBdCisgICAgZm9yIHYgaW4gbHN0WzE6XToKKyAgICAgICAgeCAqPSB2CisgICAgcmV0dXJuIHgKKworZGVmIHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsIGxheW91dCk6CisgICAgIiIiQ2FsY3VsYXRlIHN0cmlkZXMgb2YgYSBjb250aWd1b3VzIGFycmF5LiBMYXlvdXQgaXMgJ0MnIG9yCisgICAgICAgJ0YnIChGb3J0cmFuKS4iIiIKKyAgICBpZiBuZGltID09IDA6CisgICAgICAgIHJldHVybiAoKQorICAgIGlmIGxheW91dCA9PSAnQyc6CisgICAgICAgIHN0cmlkZXMgPSBsaXN0KHNoYXBlWzE6XSkgKyBbaXRlbXNpemVdCisgICAgICAgIGZvciBpIGluIHJhbmdlKG5kaW0tMiwgLTEsIC0xKToKKyAgICAgICAgICAgIHN0cmlkZXNbaV0gKj0gc3RyaWRlc1tpKzFdCisgICAgZWxzZToKKyAgICAgICAgc3RyaWRlcyA9IFtpdGVtc2l6ZV0gKyBsaXN0KHNoYXBlWzotMV0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIG5kaW0pOgorICAgICAgICAgICAgc3RyaWRlc1tpXSAqPSBzdHJpZGVzW2ktMV0KKyAgICByZXR1cm4gc3RyaWRlcworCitkZWYgX2NhKGl0ZW1zLCBzKToKKyAgICAiIiJDb252ZXJ0IGZsYXQgaXRlbSBsaXN0IHRvIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgICAgbXVsdGlkaW1lbnNpb25hbCBDIGFycmF5IHdpdGggc2hhcGUgJ3MnLiIiIgorICAgIGlmIGF0b21wKGl0ZW1zKToKKyAgICAgICAgcmV0dXJuIGl0ZW1zCisgICAgaWYgbGVuKHMpID09IDA6CisgICAgICAgIHJldHVybiBpdGVtc1swXQorICAgIGxzdCA9IFswXSAqIHNbMF0KKyAgICBzdHJpZGUgPSBsZW4oaXRlbXMpIC8vIHNbMF0gaWYgc1swXSBlbHNlIDAKKyAgICBmb3IgaSBpbiByYW5nZShzWzBdKToKKyAgICAgICAgc3RhcnQgPSBpKnN0cmlkZQorICAgICAgICBsc3RbaV0gPSBfY2EoaXRlbXNbc3RhcnQ6c3RhcnQrc3RyaWRlXSwgc1sxOl0pCisgICAgcmV0dXJuIGxzdAorCitkZWYgX2ZhKGl0ZW1zLCBzKToKKyAgICAiIiJDb252ZXJ0IGZsYXQgaXRlbSBsaXN0IHRvIHRoZSBuZXN0ZWQgbGlzdCByZXByZXNlbnRhdGlvbiBvZiBhCisgICAgICAgbXVsdGlkaW1lbnNpb25hbCBGb3J0cmFuIGFycmF5IHdpdGggc2hhcGUgJ3MnLiIiIgorICAgIGlmIGF0b21wKGl0ZW1zKToKKyAgICAgICAgcmV0dXJuIGl0ZW1zCisgICAgaWYgbGVuKHMpID09IDA6CisgICAgICAgIHJldHVybiBpdGVtc1swXQorICAgIGxzdCA9IFswXSAqIHNbMF0KKyAgICBzdHJpZGUgPSBzWzBdCisgICAgZm9yIGkgaW4gcmFuZ2Uoc1swXSk6CisgICAgICAgIGxzdFtpXSA9IF9mYShpdGVtc1tpOjpzdHJpZGVdLCBzWzE6XSkKKyAgICByZXR1cm4gbHN0CisKK2RlZiBjYXJyYXkoaXRlbXMsIHNoYXBlKToKKyAgICBpZiBsaXN0cChpdGVtcykgYW5kIG5vdCAwIGluIHNoYXBlIGFuZCBwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwcm9kKHNoYXBlKSAhPSBsZW4oaXRlbXMpIikKKyAgICByZXR1cm4gX2NhKGl0ZW1zLCBzaGFwZSkKKworZGVmIGZhcnJheShpdGVtcywgc2hhcGUpOgorICAgIGlmIGxpc3RwKGl0ZW1zKSBhbmQgbm90IDAgaW4gc2hhcGUgYW5kIHByb2Qoc2hhcGUpICE9IGxlbihpdGVtcyk6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInByb2Qoc2hhcGUpICE9IGxlbihpdGVtcykiKQorICAgIHJldHVybiBfZmEoaXRlbXMsIHNoYXBlKQorCitkZWYgaW5kaWNlcyhzaGFwZSk6CisgICAgIiIiR2VuZXJhdGUgYWxsIHBvc3NpYmxlIHR1cGxlcyBvZiBpbmRpY2VzLiIiIgorICAgIGl0ZXJhYmxlcyA9IFtyYW5nZSh2KSBmb3IgdiBpbiBzaGFwZV0KKyAgICByZXR1cm4gcHJvZHVjdCgqaXRlcmFibGVzKQorCitkZWYgZ2V0aW5kZXgobmRpbSwgaW5kLCBzdHJpZGVzKToKKyAgICAiIiJDb252ZXJ0IG11bHRpLWRpbWVuc2lvbmFsIGluZGV4IHRvIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmxhdCBsaXN0LiIiIgorICAgIHJldCA9IDAKKyAgICBmb3IgaSBpbiByYW5nZShuZGltKToKKyAgICAgICAgcmV0ICs9IHN0cmlkZXNbaV0gKiBpbmRbaV0KKyAgICByZXR1cm4gcmV0CisKK2RlZiB0cmFuc3Bvc2Uoc3JjLCBzaGFwZSk6CisgICAgIiIiVHJhbnNwb3NlIGZsYXQgaXRlbSBsaXN0IHRoYXQgaXMgcmVnYXJkZWQgYXMgYSBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgIG1hdHJpeCBkZWZpbmVkIGJ5IHNoYXBlOiBkZXN0Li4uW2tdW2pdW2ldID0gc3JjW2ldW2pdW2tdLi4uICAiIiIKKyAgICBpZiBub3Qgc2hhcGU6CisgICAgICAgIHJldHVybiBzcmMKKyAgICBuZGltID0gbGVuKHNoYXBlKQorICAgIHNzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCAxLCAnQycpCisgICAgZHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGVbOjotMV0sIDEsICdDJykKKyAgICBkZXN0ID0gWzBdICogbGVuKHNyYykKKyAgICBmb3IgaW5kIGluIGluZGljZXMoc2hhcGUpOgorICAgICAgICBmciA9IGdldGluZGV4KG5kaW0sIGluZCwgc3N0cmlkZXMpCisgICAgICAgIHRvID0gZ2V0aW5kZXgobmRpbSwgaW5kWzo6LTFdLCBkc3RyaWRlcykKKyAgICAgICAgZGVzdFt0b10gPSBzcmNbZnJdCisgICAgcmV0dXJuIGRlc3QKKworZGVmIF9mbGF0dGVuKGxzdCk6CisgICAgIiIiZmxhdHRlbiBsaXN0IiIiCisgICAgaWYgbHN0ID09IFtdOgorICAgICAgICByZXR1cm4gbHN0CisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIFtsc3RdCisgICAgcmV0dXJuIF9mbGF0dGVuKGxzdFswXSkgKyBfZmxhdHRlbihsc3RbMTpdKQorCitkZWYgZmxhdHRlbihsc3QpOgorICAgICIiImZsYXR0ZW4gbGlzdCBvciByZXR1cm4gc2NhbGFyIiIiCisgICAgaWYgYXRvbXAobHN0KTogIyBzY2FsYXIKKyAgICAgICAgcmV0dXJuIGxzdAorICAgIHJldHVybiBfZmxhdHRlbihsc3QpCisKK2RlZiBzbGljZV9zaGFwZShsc3QsIHNsaWNlcyk6CisgICAgIiIiR2V0IHRoZSBzaGFwZSBvZiBsc3QgYWZ0ZXIgc2xpY2luZzogc2xpY2VzIGlzIGEgbGlzdCBvZiBzbGljZQorICAgICAgIG9iamVjdHMuIiIiCisgICAgaWYgYXRvbXAobHN0KToKKyAgICAgICAgcmV0dXJuIFtdCisgICAgcmV0dXJuIFtsZW4obHN0W3NsaWNlc1swXV0pXSArIHNsaWNlX3NoYXBlKGxzdFswXSwgc2xpY2VzWzE6XSkKKworZGVmIG11bHRpc2xpY2UobHN0LCBzbGljZXMpOgorICAgICIiIk11bHRpLWRpbWVuc2lvbmFsIHNsaWNpbmc6IHNsaWNlcyBpcyBhIGxpc3Qgb2Ygc2xpY2Ugb2JqZWN0cy4iIiIKKyAgICBpZiBhdG9tcChsc3QpOgorICAgICAgICByZXR1cm4gbHN0CisgICAgcmV0dXJuIFttdWx0aXNsaWNlKHN1YmxzdCwgc2xpY2VzWzE6XSkgZm9yIHN1YmxzdCBpbiBsc3Rbc2xpY2VzWzBdXV0KKworZGVmIG1fYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIk11bHRpLWRpbWVuc2lvbmFsIHNsaWNlIGFzc2lnbm1lbnQ6IGxsc3QgYW5kIHJsc3QgYXJlIHRoZSBvcGVyYW5kcywKKyAgICAgICBsc2xpY2VzIGFuZCByc2xpY2VzIGFyZSBsaXN0cyBvZiBzbGljZSBvYmplY3RzLiBsbHN0IGFuZCBybHN0IG11c3QKKyAgICAgICBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZS4KKworICAgICAgIEZvciBhIHR3by1kaW1lbnNpb25hbCBleGFtcGxlLCB0aGlzIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBQeXRob246CisKKyAgICAgICAgIGxsc3RbMDozOjIsIDA6MzoyXSA9IHJsc3RbMTozOjEsIDE6MzoxXQorCisgICAgICAgSW5zdGVhZCB3ZSB3cml0ZToKKworICAgICAgICAgbHNsaWNlcyA9IFtzbGljZSgwLDMsMiksIHNsaWNlKDAsMywyKV0KKyAgICAgICAgIHJzbGljZXMgPSBbc2xpY2UoMSwzLDEpLCBzbGljZSgxLDMsMSldCisgICAgICAgICBtdWx0aXNsaWNlX2Fzc2lnbihsbHN0LCBybHN0LCBsc2xpY2VzLCByc2xpY2VzKQorICAgICIiIgorICAgIGlmIGF0b21wKHJsc3QpOgorICAgICAgICByZXR1cm4gcmxzdAorICAgIHJsc3QgPSBbbV9hc3NpZ24obCwgciwgbHNsaWNlc1sxOl0sIHJzbGljZXNbMTpdKQorICAgICAgICAgICAgZm9yIGwsIHIgaW4gemlwKGxsc3RbbHNsaWNlc1swXV0sIHJsc3RbcnNsaWNlc1swXV0pXQorICAgIGxsc3RbbHNsaWNlc1swXV0gPSBybHN0CisgICAgcmV0dXJuIGxsc3QKKworZGVmIGNtcF9zdHJ1Y3R1cmUobGxzdCwgcmxzdCwgbHNsaWNlcywgcnNsaWNlcyk6CisgICAgIiIiQ29tcGFyZSB0aGUgc3RydWN0dXJlIG9mIGxsc3RbbHNsaWNlc10gYW5kIHJsc3RbcnNsaWNlc10uIiIiCisgICAgbHNoYXBlID0gc2xpY2Vfc2hhcGUobGxzdCwgbHNsaWNlcykKKyAgICByc2hhcGUgPSBzbGljZV9zaGFwZShybHN0LCByc2xpY2VzKQorICAgIGlmIChsZW4obHNoYXBlKSAhPSBsZW4ocnNoYXBlKSk6CisgICAgICAgIHJldHVybiAtMQorICAgIGZvciBpIGluIHJhbmdlKGxlbihsc2hhcGUpKToKKyAgICAgICAgaWYgbHNoYXBlW2ldICE9IHJzaGFwZVtpXToKKyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBpZiBsc2hhcGVbaV0gPT0gMDoKKyAgICAgICAgICAgIHJldHVybiAwCisgICAgcmV0dXJuIDAKKworZGVmIG11bHRpc2xpY2VfYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpOgorICAgICIiIlJldHVybiBsbHN0IGFmdGVyIGFzc2lnbmluZzogbGxzdFtsc2xpY2VzXSA9IHJsc3RbcnNsaWNlc10iIiIKKyAgICBpZiBjbXBfc3RydWN0dXJlKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpIDwgMDoKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcyIpCisgICAgcmV0dXJuIG1fYXNzaWduKGxsc3QsIHJsc3QsIGxzbGljZXMsIHJzbGljZXMpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb20gc3RydWN0dXJlcworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMKKyMgUEVQLTMxMTggaXMgdmVyeSBwZXJtaXNzaXZlIHdpdGggcmVzcGVjdCB0byB0aGUgY29udGVudHMgb2YgYQorIyBQeV9idWZmZXIuIEluIHBhcnRpY3VsYXI6CisjCisjICAgLSBzaGFwZSBjYW4gYmUgemVybworIyAgIC0gc3RyaWRlcyBjYW4gYmUgYW55IGludGVnZXIsIGluY2x1ZGluZyB6ZXJvCisjICAgLSBvZmZzZXQgY2FuIHBvaW50IHRvIGFueSBsb2NhdGlvbiBpbiB0aGUgdW5kZXJseWluZworIyAgICAgbWVtb3J5IGJsb2NrLCBwcm92aWRlZCB0aGF0IGl0IGlzIGEgbXVsdGlwbGUgb2YKKyMgICAgIGl0ZW1zaXplLgorIworIyBUaGUgZnVuY3Rpb25zIGluIHRoaXMgc2VjdGlvbiB0ZXN0IGFuZCB2ZXJpZnkgcmFuZG9tIHN0cnVjdHVyZXMKKyMgaW4gZnVsbCBnZW5lcmFsaXR5LiBBIHN0cnVjdHVyZSBpcyB2YWxpZCBpZmYgaXQgZml0cyBpbiB0aGUKKyMgdW5kZXJseWluZyBtZW1vcnkgYmxvY2suCisjCisjIFRoZSBzdHJ1Y3R1cmUgJ3QnIChzaG9ydCBmb3IgJ3R1cGxlJykgaXMgZnVsbHkgZGVmaW5lZCBieToKKyMKKyMgICB0ID0gKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpCisjCisKK2RlZiB2ZXJpZnlfc3RydWN0dXJlKG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQpOgorICAgICIiIlZlcmlmeSB0aGF0IHRoZSBwYXJhbWV0ZXJzIHJlcHJlc2VudCBhIHZhbGlkIGFycmF5IHdpdGhpbgorICAgICAgIHRoZSBib3VuZHMgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnk6CisgICAgICAgICAgIGNoYXIgKm1lbTogc3RhcnQgb2YgdGhlIHBoeXNpY2FsIG1lbW9yeSBibG9jaworICAgICAgICAgICBtZW1sZW46IGxlbmd0aCBvZiB0aGUgcGh5c2ljYWwgbWVtb3J5IGJsb2NrCisgICAgICAgICAgIG9mZnNldDogKGNoYXIgKilidWYgLSBtZW0KKyAgICAiIiIKKyAgICBpZiBvZmZzZXQgJSBpdGVtc2l6ZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgb2Zmc2V0IDwgMCBvciBvZmZzZXQraXRlbXNpemUgPiBtZW1sZW46CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGlmIGFueSh2ICUgaXRlbXNpemUgZm9yIHYgaW4gc3RyaWRlcyk6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgaWYgbmRpbSA8PSAwOgorICAgICAgICByZXR1cm4gbmRpbSA9PSAwIGFuZCBub3Qgc2hhcGUgYW5kIG5vdCBzdHJpZGVzCisgICAgaWYgMCBpbiBzaGFwZToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGltaW4gPSBzdW0oc3RyaWRlc1tqXSooc2hhcGVbal0tMSkgZm9yIGogaW4gcmFuZ2UobmRpbSkKKyAgICAgICAgICAgICAgIGlmIHN0cmlkZXNbal0gPD0gMCkKKyAgICBpbWF4ID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICBpZiBzdHJpZGVzW2pdID4gMCkKKworICAgIHJldHVybiAwIDw9IG9mZnNldCtpbWluIGFuZCBvZmZzZXQraW1heCtpdGVtc2l6ZSA8PSBtZW1sZW4KKworZGVmIGdldF9pdGVtKGxzdCwgaW5kaWNlcyk6CisgICAgZm9yIGkgaW4gaW5kaWNlczoKKyAgICAgICAgbHN0ID0gbHN0W2ldCisgICAgcmV0dXJuIGxzdAorCitkZWYgbWVtb3J5X2luZGV4KGluZGljZXMsIHQpOgorICAgICIiIkxvY2F0aW9uIG9mIGFuIGl0ZW0gaW4gdGhlIHVuZGVybHlpbmcgbWVtb3J5LiIiIgorICAgIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQgPSB0CisgICAgcCA9IG9mZnNldAorICAgIGZvciBpIGluIHJhbmdlKG5kaW0pOgorICAgICAgICBwICs9IHN0cmlkZXNbaV0qaW5kaWNlc1tpXQorICAgIHJldHVybiBwCisKK2RlZiBpc19vdmVybGFwcGluZyh0KToKKyAgICAiIiJUaGUgc3RydWN0dXJlICd0JyBpcyBvdmVybGFwcGluZyBpZiBhdCBsZWFzdCBvbmUgbWVtb3J5IGxvY2F0aW9uCisgICAgICAgaXMgdmlzaXRlZCB0d2ljZSB3aGlsZSBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgcG9zc2libGUgdHVwbGVzIG9mCisgICAgICAgaW5kaWNlcy4iIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHZpc2l0ZWQgPSAxPDxtZW1sZW4KKyAgICBmb3IgaW5kIGluIGluZGljZXMoc2hhcGUpOgorICAgICAgICBpID0gbWVtb3J5X2luZGV4KGluZCwgdCkKKyAgICAgICAgYml0ID0gMTw8aQorICAgICAgICBpZiB2aXNpdGVkICYgYml0OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgdmlzaXRlZCB8PSBiaXQKKyAgICByZXR1cm4gRmFsc2UKKworZGVmIHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCB2YWxpZCwgbWF4ZGltPTUsIG1heHNoYXBlPTE2LCBzaGFwZT0oKSk6CisgICAgIiIiUmV0dXJuIHJhbmRvbSBzdHJ1Y3R1cmU6CisgICAgICAgICAgIChtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0KQorICAgICAgIElmICd2YWxpZCcgaXMgdHJ1ZSwgdGhlIHJldHVybmVkIHN0cnVjdHVyZSBpcyB2YWxpZCwgb3RoZXJ3aXNlIGludmFsaWQuCisgICAgICAgSWYgJ3NoYXBlJyBpcyBnaXZlbiwgdXNlIHRoYXQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIHJhbmRvbSBzaGFwZS4KKyAgICAiIiIKKyAgICBpZiBub3Qgc2hhcGU6CisgICAgICAgIG5kaW0gPSByYW5kcmFuZ2UobWF4ZGltKzEpCisgICAgICAgIGlmIChuZGltID09IDApOgorICAgICAgICAgICAgaWYgdmFsaWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zaXplLCBpdGVtc2l6ZSwgbmRpbSwgKCksICgpLCAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5pdGVtcyA9IHJhbmRyYW5nZSgxLCAxNisxKQorICAgICAgICAgICAgICAgIG1lbWxlbiA9IG5pdGVtcyAqIGl0ZW1zaXplCisgICAgICAgICAgICAgICAgb2Zmc2V0ID0gLWl0ZW1zaXplIGlmIHJhbmRyYW5nZSgyKSA9PSAwIGVsc2UgbWVtbGVuCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sICgpLCAoKSwgb2Zmc2V0CisKKyAgICAgICAgbWluc2hhcGUgPSAyCisgICAgICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgICAgICBpZiBuID49IDk1IGFuZCB2YWxpZDoKKyAgICAgICAgICAgIG1pbnNoYXBlID0gMAorICAgICAgICBlbGlmIG4gPj0gOTA6CisgICAgICAgICAgICBtaW5zaGFwZSA9IDEKKyAgICAgICAgc2hhcGUgPSBbMF0gKiBuZGltCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobmRpbSk6CisgICAgICAgICAgICBzaGFwZVtpXSA9IHJhbmRyYW5nZShtaW5zaGFwZSwgbWF4c2hhcGUrMSkKKyAgICBlbHNlOgorICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorCisgICAgbWF4c3RyaWRlID0gNQorICAgIG4gPSByYW5kcmFuZ2UoMTAwKQorICAgIHplcm9fc3RyaWRlID0gVHJ1ZSBpZiBuID49IDk1IGFuZCBuICYgMSBlbHNlIEZhbHNlCisKKyAgICBzdHJpZGVzID0gWzBdICogbmRpbQorICAgIHN0cmlkZXNbbmRpbS0xXSA9IGl0ZW1zaXplICogcmFuZHJhbmdlKC1tYXhzdHJpZGUsIG1heHN0cmlkZSsxKQorICAgIGlmIG5vdCB6ZXJvX3N0cmlkZSBhbmQgc3RyaWRlc1tuZGltLTFdID09IDA6CisgICAgICAgIHN0cmlkZXNbbmRpbS0xXSA9IGl0ZW1zaXplCisKKyAgICBmb3IgaSBpbiByYW5nZShuZGltLTIsIC0xLCAtMSk6CisgICAgICAgIG1heHN0cmlkZSAqPSBzaGFwZVtpKzFdIGlmIHNoYXBlW2krMV0gZWxzZSAxCisgICAgICAgIGlmIHplcm9fc3RyaWRlOgorICAgICAgICAgICAgc3RyaWRlc1tpXSA9IGl0ZW1zaXplICogcmFuZHJhbmdlKC1tYXhzdHJpZGUsIG1heHN0cmlkZSsxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3RyaWRlc1tpXSA9ICgoMSwtMSlbcmFuZHJhbmdlKDIpXSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplICogcmFuZHJhbmdlKDEsIG1heHN0cmlkZSsxKSkKKworICAgIGltaW4gPSBpbWF4ID0gMAorICAgIGlmIG5vdCAwIGluIHNoYXBlOgorICAgICAgICBpbWluID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA8PSAwKQorICAgICAgICBpbWF4ID0gc3VtKHN0cmlkZXNbal0qKHNoYXBlW2pdLTEpIGZvciBqIGluIHJhbmdlKG5kaW0pCisgICAgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tqXSA+IDApCisKKyAgICBuaXRlbXMgPSBpbWF4IC0gaW1pbgorICAgIGlmIHZhbGlkOgorICAgICAgICBvZmZzZXQgPSAtaW1pbiAqIGl0ZW1zaXplCisgICAgICAgIG1lbWxlbiA9IG9mZnNldCArIChpbWF4KzEpICogaXRlbXNpemUKKyAgICBlbHNlOgorICAgICAgICBtZW1sZW4gPSAoLWltaW4gKyBpbWF4KSAqIGl0ZW1zaXplCisgICAgICAgIG9mZnNldCA9IC1pbWluLWl0ZW1zaXplIGlmIHJhbmRyYW5nZSgyKSA9PSAwIGVsc2UgbWVtbGVuCisgICAgcmV0dXJuIG1lbWxlbiwgaXRlbXNpemUsIG5kaW0sIHNoYXBlLCBzdHJpZGVzLCBvZmZzZXQKKworZGVmIHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBsaXN0bGVuKToKKyAgICAiIiJDcmVhdGUgYSByYW5kb20gc2xpY2Ugb2YgbGVuIHNsaWNlbGVuIHRoYXQgZml0cyBpbnRvIGxpc3RsZW4uIiIiCisgICAgbWF4c3RhcnQgPSBsaXN0bGVuIC0gc2xpY2VsZW4KKyAgICBzdGFydCA9IHJhbmRyYW5nZShtYXhzdGFydCsxKQorICAgIG1heHN0ZXAgPSAobGlzdGxlbiAtIHN0YXJ0KSAvLyBzbGljZWxlbiBpZiBzbGljZWxlbiBlbHNlIDEKKyAgICBzdGVwID0gcmFuZHJhbmdlKDEsIG1heHN0ZXArMSkKKyAgICBzdG9wID0gc3RhcnQgKyBzbGljZWxlbiAqIHN0ZXAKKyAgICBzID0gc2xpY2Uoc3RhcnQsIHN0b3AsIHN0ZXApCisgICAgXywgXywgXywgY29udHJvbCA9IHNsaWNlX2luZGljZXMocywgbGlzdGxlbikKKyAgICBpZiBjb250cm9sICE9IHNsaWNlbGVuOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICByZXR1cm4gcworCitkZWYgcmFuZHNsaWNlX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUpOgorICAgICIiIkNyZWF0ZSB0d28gc2V0cyBvZiBzbGljZXMgZm9yIGFuIGFycmF5IHggd2l0aCBzaGFwZSAnc2hhcGUnCisgICAgICAgc3VjaCB0aGF0IHNoYXBlb2YoeFtsc2xpY2VzXSkgPT0gc2hhcGVvZih4W3JzbGljZXNdKS4iIiIKKyAgICBsc2xpY2VzID0gWzBdICogbmRpbQorICAgIHJzbGljZXMgPSBbMF0gKiBuZGltCisgICAgZm9yIG4gaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIGwgPSBzaGFwZVtuXQorICAgICAgICBzbGljZWxlbiA9IHJhbmRyYW5nZSgxLCBsKzEpIGlmIGwgPiAwIGVsc2UgMAorICAgICAgICBsc2xpY2VzW25dID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIGwpCisgICAgICAgIHJzbGljZXNbbl0gPSByYW5kc2xpY2VfZnJvbV9zbGljZWxlbihzbGljZWxlbiwgbCkKKyAgICByZXR1cm4gdHVwbGUobHNsaWNlcyksIHR1cGxlKHJzbGljZXMpCisKK2RlZiByYW5kX2FsaWduZWRfc2xpY2VzKG1heGRpbT01LCBtYXhzaGFwZT0xNik6CisgICAgIiIiQ3JlYXRlIChsc2hhcGUsIHJzaGFwZSwgdHVwbGUobHNsaWNlcyksIHR1cGxlKHJzbGljZXMpKSBzdWNoIHRoYXQKKyAgICAgICBzaGFwZW9mKHhbbHNsaWNlc10pID09IHNoYXBlb2YoeVtyc2xpY2VzXSksIHdoZXJlIHggaXMgYW4gYXJyYXkKKyAgICAgICB3aXRoIHNoYXBlICdsc2hhcGUnIGFuZCB5IGlzIGFuIGFycmF5IHdpdGggc2hhcGUgJ3JzaGFwZScuIiIiCisgICAgbmRpbSA9IHJhbmRyYW5nZSgxLCBtYXhkaW0rMSkKKyAgICBtaW5zaGFwZSA9IDIKKyAgICBuID0gcmFuZHJhbmdlKDEwMCkKKyAgICBpZiBuID49IDk1OgorICAgICAgICBtaW5zaGFwZSA9IDAKKyAgICBlbGlmIG4gPj0gOTA6CisgICAgICAgIG1pbnNoYXBlID0gMQorICAgIGFsbF9yYW5kb20gPSBUcnVlIGlmIHJhbmRyYW5nZSgxMDApID49IDgwIGVsc2UgRmFsc2UKKyAgICBsc2hhcGUgPSBbMF0qbmRpbTsgcnNoYXBlID0gWzBdKm5kaW0KKyAgICBsc2xpY2VzID0gWzBdKm5kaW07IHJzbGljZXMgPSBbMF0qbmRpbQorCisgICAgZm9yIG4gaW4gcmFuZ2UobmRpbSk6CisgICAgICAgIHNtYWxsID0gcmFuZHJhbmdlKG1pbnNoYXBlLCBtYXhzaGFwZSsxKQorICAgICAgICBiaWcgPSByYW5kcmFuZ2UobWluc2hhcGUsIG1heHNoYXBlKzEpCisgICAgICAgIGlmIGJpZyA8IHNtYWxsOgorICAgICAgICAgICAgYmlnLCBzbWFsbCA9IHNtYWxsLCBiaWcKKworICAgICAgICAjIENyZWF0ZSBhIHNsaWNlIHRoYXQgZml0cyB0aGUgc21hbGxlciB2YWx1ZS4KKyAgICAgICAgaWYgYWxsX3JhbmRvbToKKyAgICAgICAgICAgIHN0YXJ0ID0gcmFuZHJhbmdlKC1zbWFsbCwgc21hbGwrMSkKKyAgICAgICAgICAgIHN0b3AgPSByYW5kcmFuZ2UoLXNtYWxsLCBzbWFsbCsxKQorICAgICAgICAgICAgc3RlcCA9ICgxLC0xKVtyYW5kcmFuZ2UoMildICogcmFuZHJhbmdlKDEsIHNtYWxsKzIpCisgICAgICAgICAgICBzX3NtYWxsID0gc2xpY2Uoc3RhcnQsIHN0b3AsIHN0ZXApCisgICAgICAgICAgICBfLCBfLCBfLCBzbGljZWxlbiA9IHNsaWNlX2luZGljZXMoc19zbWFsbCwgc21hbGwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzbGljZWxlbiA9IHJhbmRyYW5nZSgxLCBzbWFsbCsxKSBpZiBzbWFsbCA+IDAgZWxzZSAwCisgICAgICAgICAgICBzX3NtYWxsID0gcmFuZHNsaWNlX2Zyb21fc2xpY2VsZW4oc2xpY2VsZW4sIHNtYWxsKQorCisgICAgICAgICMgQ3JlYXRlIGEgc2xpY2Ugb2YgdGhlIHNhbWUgbGVuZ3RoIGZvciB0aGUgYmlnZ2VyIHZhbHVlLgorICAgICAgICBzX2JpZyA9IHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBiaWcpCisgICAgICAgIGlmIHJhbmRyYW5nZSgyKSA9PSAwOgorICAgICAgICAgICAgcnNoYXBlW25dLCBsc2hhcGVbbl0gPSBiaWcsIHNtYWxsCisgICAgICAgICAgICByc2xpY2VzW25dLCBsc2xpY2VzW25dID0gc19iaWcsIHNfc21hbGwKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJzaGFwZVtuXSwgbHNoYXBlW25dID0gc21hbGwsIGJpZworICAgICAgICAgICAgcnNsaWNlc1tuXSwgbHNsaWNlc1tuXSA9IHNfc21hbGwsIHNfYmlnCisKKyAgICByZXR1cm4gbHNoYXBlLCByc2hhcGUsIHR1cGxlKGxzbGljZXMpLCB0dXBsZShyc2xpY2VzKQorCitkZWYgcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdCk6CisgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiByYW5kb20gaXRlbXMgZm9yIHN0cnVjdHVyZSAndCcgd2l0aCBmb3JtYXQKKyAgICAgICAnZm10Y2hhcicuIiIiCisgICAgbWVtbGVuLCBpdGVtc2l6ZSwgXywgXywgXywgXyA9IHQKKyAgICByZXR1cm4gZ2VuX2l0ZW1zKG1lbWxlbi8vaXRlbXNpemUsICcjJytmbXQsICdudW1weScpCisKK2RlZiBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQsIGZsYWdzPTApOgorICAgICIiIlJldHVybiBuZGFycmF5IGZyb20gdGhlIHR1cGxlIHJldHVybmVkIGJ5IHJhbmRfc3RydWN0dXJlKCkiIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIHJldHVybiBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLCBmb3JtYXQ9Zm10LAorICAgICAgICAgICAgICAgICAgIG9mZnNldD1vZmZzZXQsIGZsYWdzPU5EX1dSSVRBQkxFfGZsYWdzKQorCitkZWYgbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCk6CisgICAgIiIiUmV0dXJuIG51bXB5X2FycmF5IGZyb20gdGhlIHR1cGxlIHJldHVybmVkIGJ5IHJhbmRfc3RydWN0dXJlKCkiIiIKKyAgICBtZW1sZW4sIGl0ZW1zaXplLCBuZGltLCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0ID0gdAorICAgIGJ1ZiA9IGJ5dGVhcnJheShtZW1sZW4pCisgICAgZm9yIGosIHYgaW4gZW51bWVyYXRlKGl0ZW1zKToKKyAgICAgICAgc3RydWN0LnBhY2tfaW50byhmbXQsIGJ1ZiwgaippdGVtc2l6ZSwgdikKKyAgICByZXR1cm4gbnVtcHlfYXJyYXkoYnVmZmVyPWJ1Ziwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9Zm10LCBvZmZzZXQ9b2Zmc2V0KQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtb3J5dmlldyBjYXN0cworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBjYXN0X2l0ZW1zKGV4cG9ydGVyLCBmbXQsIGl0ZW1zaXplLCBzaGFwZT1Ob25lKToKKyAgICAiIiJJbnRlcnByZXQgdGhlIHJhdyBtZW1vcnkgb2YgJ2V4cG9ydGVyJyBhcyBhIGxpc3Qgb2YgaXRlbXMgd2l0aAorICAgICAgIHNpemUgJ2l0ZW1zaXplJy4gSWYgc2hhcGU9Tm9uZSwgdGhlIG5ldyBzdHJ1Y3R1cmUgaXMgYXNzdW1lZCB0bworICAgICAgIGJlIDEtRCB3aXRoIG4gKiBpdGVtc2l6ZSA9IGJ5dGVsZW4uIElmIHNoYXBlIGlzIGdpdmVuLCB0aGUgdXN1YWwKKyAgICAgICBjb25zdHJhaW50IGZvciBjb250aWd1b3VzIGFycmF5cyBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplID0gYnl0ZWxlbgorICAgICAgIGFwcGxpZXMuIE9uIHN1Y2Nlc3MsIHJldHVybiAoaXRlbXMsIHNoYXBlKS4gSWYgdGhlIGNvbnN0cmFpbnRzCisgICAgICAgY2Fubm90IGJlIG1ldCwgcmV0dXJuIChOb25lLCBOb25lKS4gSWYgYSBjaHVuayBvZiBieXRlcyBpcyBpbnRlcnByZXRlZAorICAgICAgIGFzIE5hTiBhcyBhIHJlc3VsdCBvZiBmbG9hdCBjb252ZXJzaW9uLCByZXR1cm4gKCduYW4nLCBOb25lKS4iIiIKKyAgICBieXRlbGVuID0gZXhwb3J0ZXIubmJ5dGVzCisgICAgaWYgc2hhcGU6CisgICAgICAgIGlmIHByb2Qoc2hhcGUpICogaXRlbXNpemUgIT0gYnl0ZWxlbjoKKyAgICAgICAgICAgIHJldHVybiBOb25lLCBzaGFwZQorICAgIGVsaWYgc2hhcGUgPT0gW106CisgICAgICAgIGlmIGV4cG9ydGVyLm5kaW0gPT0gMCBvciBpdGVtc2l6ZSAhPSBieXRlbGVuOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHNoYXBlCisgICAgZWxzZToKKyAgICAgICAgbiwgciA9IGRpdm1vZChieXRlbGVuLCBpdGVtc2l6ZSkKKyAgICAgICAgc2hhcGUgPSBbbl0KKyAgICAgICAgaWYgciAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHNoYXBlCisKKyAgICBtZW0gPSBleHBvcnRlci50b2J5dGVzKCkKKyAgICBieXRlaXRlbXMgPSBbbWVtW2k6aStpdGVtc2l6ZV0gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKG1lbSksIGl0ZW1zaXplKV0KKworICAgIGl0ZW1zID0gW10KKyAgICBmb3IgdiBpbiBieXRlaXRlbXM6CisgICAgICAgIGl0ZW0gPSBzdHJ1Y3QudW5wYWNrKGZtdCwgdilbMF0KKyAgICAgICAgaWYgaXRlbSAhPSBpdGVtOgorICAgICAgICAgICAgcmV0dXJuICduYW4nLCBzaGFwZQorICAgICAgICBpdGVtcy5hcHBlbmQoaXRlbSkKKworICAgIHJldHVybiAoaXRlbXMsIHNoYXBlKSBpZiBzaGFwZSAhPSBbXSBlbHNlIChpdGVtc1swXSwgc2hhcGUpCisKK2RlZiBnZW5jYXN0c2hhcGVzKCk6CisgICAgIiIiR2VuZXJhdGUgc2hhcGVzIHRvIHRlc3QgY2FzdGluZy4iIiIKKyAgICBmb3IgbiBpbiByYW5nZSgzMik6CisgICAgICAgIHlpZWxkIFtuXQorICAgIG5kaW0gPSByYW5kcmFuZ2UoNCwgNikKKyAgICBtaW5zaGFwZSA9IDEgaWYgcmFuZHJhbmdlKDEwMCkgPiA4MCBlbHNlIDIKKyAgICB5aWVsZCBbcmFuZHJhbmdlKG1pbnNoYXBlLCA1KSBmb3IgXyBpbiByYW5nZShuZGltKV0KKyAgICBuZGltID0gcmFuZHJhbmdlKDIsIDQpCisgICAgbWluc2hhcGUgPSAxIGlmIHJhbmRyYW5nZSgxMDApID4gODAgZWxzZSAyCisgICAgeWllbGQgW3JhbmRyYW5nZShtaW5zaGFwZSwgNSkgZm9yIF8gaW4gcmFuZ2UobmRpbSldCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0dWFsIHRlc3RzCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGdlbnNsaWNlcyhuKToKKyAgICAiIiJHZW5lcmF0ZSBhbGwgcG9zc2libGUgc2xpY2VzIGZvciBhIHNpbmdsZSBkaW1lbnNpb24uIiIiCisgICAgcmV0dXJuIHByb2R1Y3QocmFuZ2UoLW4sIG4rMSksIHJhbmdlKC1uLCBuKzEpLCByYW5nZSgtbiwgbisxKSkKKworZGVmIGdlbnNsaWNlc19uZGltKG5kaW0sIHNoYXBlKToKKyAgICAiIiJHZW5lcmF0ZSBhbGwgcG9zc2libGUgc2xpY2UgdHVwbGVzIGZvciAnc2hhcGUnLiIiIgorICAgIGl0ZXJhYmxlcyA9IFtnZW5zbGljZXMoc2hhcGVbbl0pIGZvciBuIGluIHJhbmdlKG5kaW0pXQorICAgIHJldHVybiBwcm9kdWN0KCppdGVyYWJsZXMpCisKK2RlZiByc2xpY2UobiwgYWxsb3dfZW1wdHk9RmFsc2UpOgorICAgICIiIkdlbmVyYXRlIHJhbmRvbSBzbGljZSBmb3IgYSBzaW5nbGUgZGltZW5zaW9uIG9mIGxlbmd0aCBuLgorICAgICAgIElmIHplcm89VHJ1ZSwgdGhlIHNsaWNlcyBtYXkgYmUgZW1wdHksIG90aGVyd2lzZSB0aGV5IHdpbGwKKyAgICAgICBiZSBub24tZW1wdHkuIiIiCisgICAgbWlubGVuID0gMCBpZiBhbGxvd19lbXB0eSBvciBuID09IDAgZWxzZSAxCisgICAgc2xpY2VsZW4gPSByYW5kcmFuZ2UobWlubGVuLCBuKzEpCisgICAgcmV0dXJuIHJhbmRzbGljZV9mcm9tX3NsaWNlbGVuKHNsaWNlbGVuLCBuKQorCitkZWYgcnNsaWNlcyhuLCBhbGxvd19lbXB0eT1GYWxzZSk6CisgICAgIiIiR2VuZXJhdGUgcmFuZG9tIHNsaWNlcyBmb3IgYSBzaW5nbGUgZGltZW5zaW9uLiIiIgorICAgIGZvciBfIGluIHJhbmdlKDUpOgorICAgICAgICB5aWVsZCByc2xpY2UobiwgYWxsb3dfZW1wdHkpCisKK2RlZiByc2xpY2VzX25kaW0obmRpbSwgc2hhcGUsIGl0ZXJhdGlvbnM9NSk6CisgICAgIiIiR2VuZXJhdGUgcmFuZG9tIHNsaWNlIHR1cGxlcyBmb3IgJ3NoYXBlJy4iIiIKKyAgICAjIG5vbi1lbXB0eSBzbGljZXMKKyAgICBmb3IgXyBpbiByYW5nZShpdGVyYXRpb25zKToKKyAgICAgICAgeWllbGQgdHVwbGUocnNsaWNlKHNoYXBlW25dKSBmb3IgbiBpbiByYW5nZShuZGltKSkKKyAgICAjIHBvc3NpYmx5IGVtcHR5IHNsaWNlcworICAgIGZvciBfIGluIHJhbmdlKGl0ZXJhdGlvbnMpOgorICAgICAgICB5aWVsZCB0dXBsZShyc2xpY2Uoc2hhcGVbbl0sIGFsbG93X2VtcHR5PVRydWUpIGZvciBuIGluIHJhbmdlKG5kaW0pKQorICAgICMgaW52YWxpZCBzbGljZXMKKyAgICB5aWVsZCB0dXBsZShzbGljZSgwLDEsMCkgZm9yIF8gaW4gcmFuZ2UobmRpbSkpCisKK2RlZiBycGVybXV0YXRpb24oaXRlcmFibGUsIHI9Tm9uZSk6CisgICAgcG9vbCA9IHR1cGxlKGl0ZXJhYmxlKQorICAgIHIgPSBsZW4ocG9vbCkgaWYgciBpcyBOb25lIGVsc2UgcgorICAgIHlpZWxkIHR1cGxlKHNhbXBsZShwb29sLCByKSkKKworZGVmIG5kYXJyYXlfcHJpbnQobmQpOgorICAgICIiIlByaW50IG5kYXJyYXkgZm9yIGRlYnVnZ2luZy4iIiIKKyAgICB0cnk6CisgICAgICAgIHggPSBuZC50b2xpc3QoKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgeCA9IG5kLnRvYnl0ZXMoKQorICAgIGlmIGlzaW5zdGFuY2UobmQsIG5kYXJyYXkpOgorICAgICAgICBvZmZzZXQgPSBuZC5vZmZzZXQKKyAgICAgICAgZmxhZ3MgPSBuZC5mbGFncworICAgIGVsc2U6CisgICAgICAgIG9mZnNldCA9ICd1bmtub3duJworICAgICAgICBmbGFncyA9ICd1bmtub3duJworICAgIHByaW50KCJuZGFycmF5KCVzLCBzaGFwZT0lcywgc3RyaWRlcz0lcywgc3Vib2Zmc2V0cz0lcywgb2Zmc2V0PSVzLCAiCisgICAgICAgICAgImZvcm1hdD0nJXMnLCBpdGVtc2l6ZT0lcywgZmxhZ3M9JXMpIiAlCisgICAgICAgICAgKHgsIG5kLnNoYXBlLCBuZC5zdHJpZGVzLCBuZC5zdWJvZmZzZXRzLCBvZmZzZXQsCisgICAgICAgICAgIG5kLmZvcm1hdCwgbmQuaXRlbXNpemUsIGZsYWdzKSkKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworCitJVEVSQVRJT05TID0gMTAwCitNQVhESU0gPSA1CitNQVhTSEFQRSA9IDEwCisKK2lmIFNIT1JUX1RFU1Q6CisgICAgSVRFUkFUSU9OUyA9IDEwCisgICAgTUFYRElNID0gMworICAgIE1BWFNIQVBFID0gNAorICAgIGdlbnNsaWNlcyA9IHJzbGljZXMKKyAgICBnZW5zbGljZXNfbmRpbSA9IHJzbGljZXNfbmRpbQorICAgIHBlcm11dGF0aW9ucyA9IHJwZXJtdXRhdGlvbgorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN0cnVjdCwgJ3N0cnVjdCBtb2R1bGUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MobmRhcnJheSwgJ25kYXJyYXkgb2JqZWN0IHJlcXVpcmVkIGZvciB0aGlzIHRlc3QnKQorY2xhc3MgVGVzdEJ1ZmZlclByb3RvY29sKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBUaGUgc3Vib2Zmc2V0cyB0ZXN0cyBuZWVkIHNpemVvZih2b2lkICopLgorICAgICAgICBzZWxmLnNpemVvZl92b2lkX3AgPSBnZXRfc2l6ZW9mX3ZvaWRfcCgpCisKKyAgICBkZWYgdmVyaWZ5KHNlbGYsIHJlc3VsdCwgb2JqPS0xLAorICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9ezF9LCBmbXQ9LTEsIHJlYWRvbmx5PXsxfSwKKyAgICAgICAgICAgICAgICAgICAgIG5kaW09ezF9LCBzaGFwZT0tMSwgc3RyaWRlcz0tMSwKKyAgICAgICAgICAgICAgICAgICAgIGxzdD0tMSwgc2xpY2VkPUZhbHNlLCBjYXN0PUZhbHNlKToKKyAgICAgICAgIyBWZXJpZnkgYnVmZmVyIGNvbnRlbnRzIGFnYWluc3QgZXhwZWN0ZWQgdmFsdWVzLiBEZWZhdWx0IHZhbHVlcworICAgICAgICAjIGFyZSBkZWxpYmVyYXRlbHkgaW5pdGlhbGl6ZWQgdG8gaW52YWxpZCB0eXBlcy4KKyAgICAgICAgaWYgc2hhcGU6CisgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBwcm9kKHNoYXBlKSppdGVtc2l6ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbm90IGZtdDogIyBhcnJheSBoYXMgYmVlbiBpbXBsaWNpdGx5IGNhc3QgdG8gdW5zaWduZWQgYnl0ZXMKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9sZW4gPSBsZW4obHN0KQorICAgICAgICAgICAgZWxzZTogIyBuZGltID0gMAorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xlbiA9IGl0ZW1zaXplCisKKyAgICAgICAgIyBSZWNvbnN0cnVjdCBzdWJvZmZzZXRzIGZyb20gc3RyaWRlcy4gU3VwcG9ydCBmb3Igc2xpY2luZworICAgICAgICAjIGNvdWxkIGJlIGFkZGVkLCBidXQgaXMgY3VycmVudGx5IG9ubHkgbmVlZGVkIGZvciB0ZXN0X2dldGJ1ZigpLgorICAgICAgICBzdWJvZmZzZXRzID0gKCkKKyAgICAgICAgaWYgcmVzdWx0LnN1Ym9mZnNldHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobmRpbSwgMCkKKworICAgICAgICAgICAgc3Vib2Zmc2V0MCA9IDAKKyAgICAgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIG5kaW0pOgorICAgICAgICAgICAgICAgIGlmIHNoYXBlW25dID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgc3RyaWRlc1tuXSA8PSAwOgorICAgICAgICAgICAgICAgICAgICBzdWJvZmZzZXQwICs9IC1zdHJpZGVzW25dICogKHNoYXBlW25dLTEpCisKKyAgICAgICAgICAgIHN1Ym9mZnNldHMgPSBbc3Vib2Zmc2V0MF0gKyBbLTEgZm9yIHYgaW4gcmFuZ2UobmRpbS0xKV0KKworICAgICAgICAgICAgIyBOb3QgY29ycmVjdCBpZiBzbGljaW5nIGhhcyBvY2N1cnJlZCBpbiB0aGUgZmlyc3QgZGltZW5zaW9uLgorICAgICAgICAgICAgc3RyaWRlMCA9IHNlbGYuc2l6ZW9mX3ZvaWRfcAorICAgICAgICAgICAgaWYgc3RyaWRlc1swXSA8IDA6CisgICAgICAgICAgICAgICAgc3RyaWRlMCA9IC1zdHJpZGUwCisgICAgICAgICAgICBzdHJpZGVzID0gW3N0cmlkZTBdICsgbGlzdChzdHJpZGVzWzE6XSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdC5vYmosIG9iaikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubmJ5dGVzLCBleHBlY3RlZF9sZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lml0ZW1zaXplLCBpdGVtc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZm9ybWF0LCBmbXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnJlYWRvbmx5LCByZWFkb25seSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubmRpbSwgbmRpbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2hhcGUsIHR1cGxlKHNoYXBlKSkKKyAgICAgICAgaWYgbm90IChzbGljZWQgYW5kIHN1Ym9mZnNldHMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc3RyaWRlcywgdHVwbGUoc3RyaWRlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnN1Ym9mZnNldHMsIHR1cGxlKHN1Ym9mZnNldHMpKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2UocmVzdWx0LCBuZGFycmF5KSBvciBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgcmVwID0gcmVzdWx0LnRvbGlzdCgpIGlmIGZtdCBlbHNlIHJlc3VsdC50b2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwLCBsc3QpCisKKyAgICAgICAgaWYgbm90IGZtdDogIyBhcnJheSBoYXMgYmVlbiBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzLAorICAgICAgICAgICAgcmV0dXJuICAjIHRoZSByZW1haW5pbmcgdGVzdHMgd29uJ3Qgd29yay4KKworICAgICAgICAjIFB5QnVmZmVyX0dldFBvaW50ZXIoKSBpcyB0aGUgZGVmaW5pdGlvbiBob3cgdG8gYWNjZXNzIGFuIGl0ZW0uCisgICAgICAgICMgSWYgUHlCdWZmZXJfR2V0UG9pbnRlcihpbmRpY2VzKSBpcyBjb3JyZWN0IGZvciBhbGwgcG9zc2libGUKKyAgICAgICAgIyBjb21iaW5hdGlvbnMgb2YgaW5kaWNlcywgdGhlIGJ1ZmZlciBpcyBjb3JyZWN0LgorICAgICAgICAjCisgICAgICAgICMgQWxzbyB0ZXN0IHRvYnl0ZXMoKSBhZ2FpbnN0IHRoZSBmbGF0dGVuZWQgJ2xzdCcsIHdpdGggYWxsIGl0ZW1zCisgICAgICAgICMgcGFja2VkIHRvIGJ5dGVzLgorICAgICAgICBpZiBub3QgY2FzdDogIyBjYXN0cyBjaG9wIHVwICdsc3QnIGluIGRpZmZlcmVudCB3YXlzCisgICAgICAgICAgICBiID0gYnl0ZWFycmF5KCkKKyAgICAgICAgICAgIGJ1Zl9lcnIgPSBOb25lCisgICAgICAgICAgICBmb3IgaW5kIGluIGluZGljZXMoc2hhcGUpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaXRlbTEgPSBnZXRfcG9pbnRlcihyZXN1bHQsIGluZCkKKyAgICAgICAgICAgICAgICAgICAgaXRlbTIgPSBnZXRfaXRlbShsc3QsIGluZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtMiwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHN0cnVjdC5wYWNrKGZtdCwgKml0ZW0yKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHN0cnVjdC5wYWNrKGZtdCwgaXRlbTIpCisgICAgICAgICAgICAgICAgICAgIGIuZXh0ZW5kKHgpCisgICAgICAgICAgICAgICAgZXhjZXB0IEJ1ZmZlckVycm9yOgorICAgICAgICAgICAgICAgICAgICBidWZfZXJyID0gVHJ1ZSAjIHJlLWV4cG9ydGVyIGRvZXMgbm90IHByb3ZpZGUgZnVsbCBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0xLCBpdGVtMikKKworICAgICAgICAgICAgaWYgbm90IGJ1Zl9lcnI6CisgICAgICAgICAgICAgICAgIyB0ZXN0IHRvYnl0ZXMoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LnRvYnl0ZXMoKSwgYikKKworICAgICAgICAgICAgICAgICMgbHN0IDo9IGV4cGVjdGVkIG11bHRpLWRpbWVuc2lvbmFsIGxvZ2ljYWwgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICAjIGZsYXR0ZW4obHN0KSA6PSBlbGVtZW50cyBpbiBDLW9yZGVyCisgICAgICAgICAgICAgICAgZmYgPSBmbXQgaWYgZm10IGVsc2UgJ0InCisgICAgICAgICAgICAgICAgZmxhdHRlbmVkID0gZmxhdHRlbihsc3QpCisKKyAgICAgICAgICAgICAgICAjIFJ1bGVzIGZvciAnQSc6IGlmIHRoZSBhcnJheSBpcyBhbHJlYWR5IGNvbnRpZ3VvdXMsIHJldHVybgorICAgICAgICAgICAgICAgICMgdGhlIGFycmF5IHVuYWx0ZXJlZC4gT3RoZXJ3aXNlLCByZXR1cm4gYSBjb250aWd1b3VzICdDJworICAgICAgICAgICAgICAgICMgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgaWYgb3JkZXIgPT0gJ0YnOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnQScpIG9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnQycpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRm9yIGNvbnN0cnVjdGluZyB0aGUgbmRhcnJheSwgY29udmVydCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsYXR0ZW5lZCBsb2dpY2FsIHJlcHJlc2VudGF0aW9uIHRvIEZvcnRyYW4gb3JkZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSB0cmFuc3Bvc2UoZmxhdHRlbmVkLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kYXJyYXkodHJhbnMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICAgICAgICAgICAgIGVsc2U6ICMgJ0MnLCAnQScKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0EnKSBvciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jb250aWd1b3VzKHJlc3VsdCwgJ0YnKSBhbmQgb3JkZXIgPT0gJ0MnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlIGZsYXR0ZW5lZCBsaXN0IGlzIGFscmVhZHkgaW4gQy1vcmRlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kYXJyYXkoZmxhdHRlbmVkLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZmKQorCisgICAgICAgICAgICAgICAgICAgIGNvbnRpZyA9IGdldF9jb250aWd1b3VzKHJlc3VsdCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGlnLnRvYnl0ZXMoKSwgYikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtcF9jb250aWcoY29udGlnLCBleHBlY3RlZCkpCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmRpbSA9PSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBubWVtYiA9IGxlbihmbGF0dGVuZWQpCisgICAgICAgICAgICAgICAgICAgIHJvID0gMCBpZiByZWFkb25seSBlbHNlIE5EX1dSSVRBQkxFCisKKyAgICAgICAgICAgICAgICAgICAgIyMjIFNlZSBjb21tZW50IGluIHRlc3RfcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMgZm9yIGFuCisgICAgICAgICAgICAgICAgICAgICMjIyBleHBsYW5hdGlvbiB3aHkgdGhlc2UgdGVzdHMgYXJlIHZhbGlkLgorCisgICAgICAgICAgICAgICAgICAgICMgVG8gJ0MnCisgICAgICAgICAgICAgICAgICAgIGNvbnRpZyA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKHJlc3VsdCwgJ0MnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb250aWcpLCBubWVtYiAqIGl0ZW1zaXplKQorICAgICAgICAgICAgICAgICAgICBpbml0bHN0ID0gW3N0cnVjdC51bnBhY2tfZnJvbShmbXQsIGNvbnRpZywgbippdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbiBpbiByYW5nZShubWVtYildCisgICAgICAgICAgICAgICAgICAgIGlmIGxlbihpbml0bHN0WzBdKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFt2WzBdIGZvciB2IGluIGluaXRsc3RdCisKKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoaW5pdGxzdCwgc2hhcGU9c2hhcGUsIGZsYWdzPXJvLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcocmVzdWx0KSkKKworICAgICAgICAgICAgICAgICAgICAjIFRvICdGJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KGluaXRsc3QsIHNoYXBlPXNoYXBlLCBmbGFncz1yb3xORF9GT1JUUkFOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcocmVzdWx0KSkKKworICAgICAgICAgICAgICAgICAgICAjIFRvICdBJworICAgICAgICAgICAgICAgICAgICBjb250aWcgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhyZXN1bHQsICdBJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY29udGlnKSwgbm1lbWIgKiBpdGVtc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgaW5pdGxzdCA9IFtzdHJ1Y3QudW5wYWNrX2Zyb20oZm10LCBjb250aWcsIG4qaXRlbXNpemUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG4gaW4gcmFuZ2Uobm1lbWIpXQorICAgICAgICAgICAgICAgICAgICBpZiBsZW4oaW5pdGxzdFswXSkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluaXRsc3QgPSBbdlswXSBmb3IgdiBpbiBpbml0bHN0XQorCisgICAgICAgICAgICAgICAgICAgIGYgPSBORF9GT1JUUkFOIGlmIGlzX2NvbnRpZ3VvdXMocmVzdWx0LCAnRicpIGVsc2UgMAorICAgICAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShpbml0bHN0LCBzaGFwZT1zaGFwZSwgZmxhZ3M9ZnxybywgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KHJlc3VsdCkpCisKKyAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhyZXN1bHQpCisgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6ICMgcmUtZXhwb3J0ZXIgZG9lcyBub3QgcHJvdmlkZSBmdWxsIGluZm9ybWF0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBleCA9IHJlc3VsdC5vYmogaWYgaXNpbnN0YW5jZShyZXN1bHQsIG1lbW9yeXZpZXcpIGVsc2UgcmVzdWx0CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCBleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5uYnl0ZXMsIGV4cGVjdGVkX2xlbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5pdGVtc2l6ZSwgaXRlbXNpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZm9ybWF0LCBmbXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZG9ubHksIHJlYWRvbmx5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm5kaW0sIG5kaW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc2hhcGUsIHR1cGxlKHNoYXBlKSkKKyAgICAgICAgICAgIGlmIG5vdCAoc2xpY2VkIGFuZCBzdWJvZmZzZXRzKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3RyaWRlcywgdHVwbGUoc3RyaWRlcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3Vib2Zmc2V0cywgdHVwbGUoc3Vib2Zmc2V0cykpCisKKyAgICAgICAgICAgIG4gPSAxIGlmIG5kaW0gPT0gMCBlbHNlIGxlbihsc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgbikKKworICAgICAgICAgICAgcmVwID0gcmVzdWx0LnRvbGlzdCgpIGlmIGZtdCBlbHNlIHJlc3VsdC50b2J5dGVzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwLCBsc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHJlc3VsdCkKKworICAgIGRlZiB2ZXJpZnlfZ2V0YnVmKHNlbGYsIG9yaWdfZXgsIGV4LCByZXEsIHNsaWNlZD1GYWxzZSk6CisgICAgICAgIGRlZiBzaW1wbGVfZm10KGV4KToKKyAgICAgICAgICAgIHJldHVybiBleC5mb3JtYXQgPT0gJycgb3IgZXguZm9ybWF0ID09ICdCJworICAgICAgICBkZWYgbWF0Y2gocmVxLCBmbGFnKToKKyAgICAgICAgICAgIHJldHVybiAoKHJlcSZmbGFnKSA9PSBmbGFnKQorCisgICAgICAgIGlmICgjIHdyaXRhYmxlIHJlcXVlc3QgdG8gcmVhZC1vbmx5IGV4cG9ydGVyCisgICAgICAgICAgICAoZXgucmVhZG9ubHkgYW5kIG1hdGNoKHJlcSwgUHlCVUZfV1JJVEFCTEUpKSBvcgorICAgICAgICAgICAgIyBjYW5ub3QgbWF0Y2ggZXhwbGljaXQgY29udGlndWl0eSByZXF1ZXN0CisgICAgICAgICAgICAobWF0Y2gocmVxLCBQeUJVRl9DX0NPTlRJR1VPVVMpIGFuZCBub3QgZXguY19jb250aWd1b3VzKSBvcgorICAgICAgICAgICAgKG1hdGNoKHJlcSwgUHlCVUZfRl9DT05USUdVT1VTKSBhbmQgbm90IGV4LmZfY29udGlndW91cykgb3IKKyAgICAgICAgICAgIChtYXRjaChyZXEsIFB5QlVGX0FOWV9DT05USUdVT1VTKSBhbmQgbm90IGV4LmNvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAjIGJ1ZmZlciBuZWVkcyBzdWJvZmZzZXRzCisgICAgICAgICAgICAobm90IG1hdGNoKHJlcSwgUHlCVUZfSU5ESVJFQ1QpIGFuZCBleC5zdWJvZmZzZXRzKSBvcgorICAgICAgICAgICAgIyBidWZmZXIgd2l0aG91dCBzdHJpZGVzIG11c3QgYmUgQy1jb250aWd1b3VzCisgICAgICAgICAgICAobm90IG1hdGNoKHJlcSwgUHlCVUZfU1RSSURFUykgYW5kIG5vdCBleC5jX2NvbnRpZ3VvdXMpIG9yCisgICAgICAgICAgICAjIFB5QlVGX1NJTVBMRXxQeUJVRl9GT1JNQVQgYW5kIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVAorICAgICAgICAgICAgKG5vdCBtYXRjaChyZXEsIFB5QlVGX05EKSBhbmQgbWF0Y2gocmVxLCBQeUJVRl9GT1JNQVQpKSk6CisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPXJlcSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXgsIG5kYXJyYXkpIG9yIGlzX21lbW9yeXZpZXdfZm9ybWF0KGV4LmZvcm1hdCk6CisgICAgICAgICAgICBsc3QgPSBleC50b2xpc3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfRlVMTF9STykKKyAgICAgICAgICAgIGxzdCA9IG5kLnRvbGlzdCgpCisKKyAgICAgICAgIyBUaGUgY29uc3VtZXIgbWF5IGhhdmUgcmVxdWVzdGVkIGRlZmF1bHQgdmFsdWVzIG9yIGEgTlVMTCBmb3JtYXQuCisgICAgICAgIHJvID0gMCBpZiBtYXRjaChyZXEsIFB5QlVGX1dSSVRBQkxFKSBlbHNlIGV4LnJlYWRvbmx5CisgICAgICAgIGZtdCA9IGV4LmZvcm1hdAorICAgICAgICBpdGVtc2l6ZSA9IGV4Lml0ZW1zaXplCisgICAgICAgIG5kaW0gPSBleC5uZGltCisgICAgICAgIGlmIG5vdCBtYXRjaChyZXEsIFB5QlVGX0ZPUk1BVCk6CisgICAgICAgICAgICAjIGl0ZW1zaXplIHJlZmVycyB0byB0aGUgb3JpZ2luYWwgaXRlbXNpemUgYmVmb3JlIHRoZSBjYXN0LgorICAgICAgICAgICAgIyBUaGUgZXF1YWxpdHkgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBzdGlsbCBob2xkcy4KKyAgICAgICAgICAgICMgVGhlIGVxdWFsaXR5IGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZSBkb2VzIF9ub3RfIGhvbGQuCisgICAgICAgICAgICBmbXQgPSAnJworICAgICAgICAgICAgbHN0ID0gb3JpZ19leC50b2J5dGVzKCkgIyBJc3N1ZSAxMjgzNAorICAgICAgICBpZiBub3QgbWF0Y2gocmVxLCBQeUJVRl9ORCk6CisgICAgICAgICAgICBuZGltID0gMQorICAgICAgICBzaGFwZSA9IG9yaWdfZXguc2hhcGUgaWYgbWF0Y2gocmVxLCBQeUJVRl9ORCkgZWxzZSAoKQorICAgICAgICBzdHJpZGVzID0gb3JpZ19leC5zdHJpZGVzIGlmIG1hdGNoKHJlcSwgUHlCVUZfU1RSSURFUykgZWxzZSAoKQorCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPXJlcSkKKyAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PXJvLAorICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIHNsaWNlZD1zbGljZWQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2dldGJ1ZihzZWxmKToKKyAgICAgICAgcmVxdWVzdHMgPSAoCisgICAgICAgICAgICAjIGRpc3RpbmN0IGZsYWdzCisgICAgICAgICAgICBQeUJVRl9JTkRJUkVDVCwgUHlCVUZfU1RSSURFUywgUHlCVUZfTkQsIFB5QlVGX1NJTVBMRSwKKyAgICAgICAgICAgIFB5QlVGX0NfQ09OVElHVU9VUywgUHlCVUZfRl9DT05USUdVT1VTLCBQeUJVRl9BTllfQ09OVElHVU9VUywKKyAgICAgICAgICAgICMgY29tcG91bmQgcmVxdWVzdHMKKyAgICAgICAgICAgIFB5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sCisgICAgICAgICAgICBQeUJVRl9SRUNPUkRTLCBQeUJVRl9SRUNPUkRTX1JPLAorICAgICAgICAgICAgUHlCVUZfU1RSSURFRCwgUHlCVUZfU1RSSURFRF9STywKKyAgICAgICAgICAgIFB5QlVGX0NPTlRJRywgUHlCVUZfQ09OVElHX1JPLAorICAgICAgICApCisgICAgICAgICMgaXRlbXMgYW5kIGZvcm1hdAorICAgICAgICBpdGVtc19mbXQgPSAoCisgICAgICAgICAgICAoW1RydWUgaWYgeCAlIDIgZWxzZSBGYWxzZSBmb3IgeCBpbiByYW5nZSgxMildLCAnPycpLAorICAgICAgICAgICAgKFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0sICdiJyksCisgICAgICAgICAgICAoWzEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyXSwgJ0InKSwKKyAgICAgICAgICAgIChbKDIqKjMxLXgpIGlmIHggJSAyIGVsc2UgKC0yKiozMSt4KSBmb3IgeCBpbiByYW5nZSgxMildLCAnbCcpCisgICAgICAgICkKKyAgICAgICAgIyBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0CisgICAgICAgIHN0cnVjdHVyZSA9ICgKKyAgICAgICAgICAgIChbXSwgW10sIDApLAorICAgICAgICAgICAgKFsxMl0sIFtdLCAwKSwKKyAgICAgICAgICAgIChbMTJdLCBbLTFdLCAxMSksCisgICAgICAgICAgICAoWzZdLCBbMl0sIDApLAorICAgICAgICAgICAgKFs2XSwgWy0yXSwgMTEpLAorICAgICAgICAgICAgKFszLCA0XSwgW10sIDApLAorICAgICAgICAgICAgKFszLCA0XSwgWy00LCAtMV0sIDExKSwKKyAgICAgICAgICAgIChbMiwgMl0sIFs0LCAxXSwgNCksCisgICAgICAgICAgICAoWzIsIDJdLCBbLTQsIC0xXSwgOCkKKyAgICAgICAgKQorICAgICAgICAjIG5kYXJyYXkgY3JlYXRpb24gZmxhZ3MKKyAgICAgICAgbmRmbGFncyA9ICgKKyAgICAgICAgICAgIDAsIE5EX1dSSVRBQkxFLCBORF9GT1JUUkFOLCBORF9GT1JUUkFOfE5EX1dSSVRBQkxFLAorICAgICAgICAgICAgTkRfUElMLCBORF9QSUx8TkRfV1JJVEFCTEUKKyAgICAgICAgKQorICAgICAgICAjIGZsYWdzIHRoYXQgY2FuIGFjdHVhbGx5IGJlIHVzZWQgYXMgZmxhZ3MKKyAgICAgICAgcmVhbF9mbGFncyA9ICgwLCBQeUJVRl9XUklUQUJMRSwgUHlCVUZfRk9STUFULAorICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVCkKKworICAgICAgICBmb3IgaXRlbXMsIGZtdCBpbiBpdGVtc19mbXQ6CisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3Igc2hhcGUsIHN0cmlkZXMsIG9mZnNldCBpbiBzdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgc3RyaWRlcyA9IFt2ICogaXRlbXNpemUgZm9yIHYgaW4gc3RyaWRlc10KKyAgICAgICAgICAgICAgICBvZmZzZXQgKj0gaXRlbXNpemUKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gbmRmbGFnczoKKworICAgICAgICAgICAgICAgICAgICBpZiBzdHJpZGVzIGFuZCAoZmxhZ3MmTkRfRk9SVFJBTik6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2hhcGUgYW5kIChmbGFncyZORF9QSUwpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICBfaXRlbXMgPSBpdGVtcyBpZiBzaGFwZSBlbHNlIGl0ZW1zWzBdCisgICAgICAgICAgICAgICAgICAgIGV4MSA9IG5kYXJyYXkoX2l0ZW1zLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLCBvZmZzZXQ9b2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICBleDIgPSBleDFbOjotMl0gaWYgc2hhcGUgZWxzZSBOb25lCisKKyAgICAgICAgICAgICAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGV4MSkKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgyOgorICAgICAgICAgICAgICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KGV4MikKKyAgICAgICAgICAgICAgICAgICAgaWYgZXgxLm5kaW0gPT0gMCBvciAoZXgxLm5kaW0gPT0gMSBhbmQgc2hhcGUgYW5kIHN0cmlkZXMpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgZXgxKQorICAgICAgICAgICAgICAgICAgICBpZiBleDIgYW5kIGV4Mi5uZGltID09IDEgYW5kIHNoYXBlIGFuZCBzdHJpZGVzOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMiwgZXgyKQorCisgICAgICAgICAgICAgICAgICAgIGZvciByZXEgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYml0cyBpbiByZWFsX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5X2dldGJ1ZihleDEsIGV4MSwgcmVxfGJpdHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MSwgbTEsIHJlcXxiaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4MjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnlfZ2V0YnVmKGV4MiwgZXgyLCByZXF8Yml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlZD1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeV9nZXRidWYoZXgyLCBtMiwgcmVxfGJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbGljZWQ9VHJ1ZSkKKworICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKworICAgICAgICAjIE5EX0dFVEJVRl9GQUlMCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfR0VUQlVGX0ZBSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCkKKworICAgICAgICAjIFJlcXVlc3QgY29tcGxleCBzdHJ1Y3R1cmUgZnJvbSBhIHNpbXBsZSBleHBvcnRlci4gSW4gdGhpcworICAgICAgICAjIHBhcnRpY3VsYXIgY2FzZSB0aGUgdGVzdCBvYmplY3QgaXMgbm90IFBFUC0zMTE4IGNvbXBsaWFudC4KKyAgICAgICAgYmFzZSA9IG5kYXJyYXkoWzldLCBbMV0pCisgICAgICAgIGV4ID0gbmRhcnJheShiYXNlLCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfTkQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX1NUUklERVMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBleCwgZ2V0YnVmPVB5QlVGX0NfQ09OVElHVU9VUykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kYXJyYXksIGV4LCBnZXRidWY9UHlCVUZfRl9DT05USUdVT1VTKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmRhcnJheSwgZXgsIGdldGJ1Zj1QeUJVRl9BTllfQ09OVElHVU9VUykKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9leGNlcHRpb25zKHNlbGYpOgorICAgICAgICBuZCA9IG5kYXJyYXkoWzldLCBbMV0pCisgICAgICAgIG5kbSA9IG5kYXJyYXkoWzldLCBbMV0sIGZsYWdzPU5EX1ZBUkVYUE9SVCkKKworICAgICAgICAjIEluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5kYXJyYXkgb3IgbXV0YXRpb24gb2YgYW4gZXhpc3RpbmcgYXJyYXkuCisgICAgICAgIGZvciBjIGluIChuZGFycmF5LCBuZC5wdXNoLCBuZG0ucHVzaCk6CisgICAgICAgICAgICAjIEludmFsaWQgdHlwZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIHsxLDIsM30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsJzMnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwoMyw0KV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPXszfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBzdHJpZGVzPXsxfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBvZmZzZXQ9W10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBmb3JtYXQ9e30pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBmbGFncz17fSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sIGdldGJ1Zj17fSkKKworICAgICAgICAgICAgIyBORF9GT1JUUkFOIGZsYWcgaXMgb25seSB2YWxpZCB3aXRob3V0IHN0cmlkZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSwgc2hhcGU9WzFdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisKKyAgICAgICAgICAgICMgTkRfUElMIGZsYWcgaXMgb25seSB2YWxpZCB3aXRoIG5kaW0gPiAwLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVtdLCBmbGFncz1ORF9QSUwpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBpdGVtcy4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFtdLCBzaGFwZT1bMV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbJ1hYWCddLCBzaGFwZT1bMV0sIGZvcm1hdD0iTCIpCisgICAgICAgICAgICAjIEludmFsaWQgY29tYmluYXRpb24gb2YgaXRlbXMgYW5kIGZvcm1hdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgYywgWzEwMDBdLCBzaGFwZT1bMV0sIGZvcm1hdD0iQiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwoMiwzKV0sIHNoYXBlPVsyXSwgZm9ybWF0PSJCIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSJRTCIpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBuZGltLgorICAgICAgICAgICAgbiA9IE5EX01BWF9ORElNKzEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxXSpuLCBzaGFwZT1bMV0qbikKKworICAgICAgICAgICAgIyBJbnZhbGlkIHNoYXBlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzFdLCBzaGFwZT1bLTFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WyczJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLCBbMV0sIHNoYXBlPVsyKioxMjhdKQorICAgICAgICAgICAgIyBwcm9kKHNoYXBlKSAqIGl0ZW1zaXplICE9IGxlbihpdGVtcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsMyw0LDVdLCBzaGFwZT1bMiwyXSwgb2Zmc2V0PTMpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBzdHJpZGVzLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzNdLCBzdHJpZGVzPVsnMSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYywgWzFdLCBzaGFwZT1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVsyKioxMjhdKQorCisgICAgICAgICAgICAjIEludmFsaWQgY29tYmluYXRpb24gb2Ygc3RyaWRlcyBhbmQgc2hhcGUuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyXSwgc2hhcGU9WzIsMV0sIHN0cmlkZXM9WzFdKQorICAgICAgICAgICAgIyBJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIHN0cmlkZXMgYW5kIGZvcm1hdC4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMsIFsxLDIsMyw0XSwgc2hhcGU9WzJdLCBzdHJpZGVzPVszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iTCIpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBvZmZzZXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIG9mZnNldD00KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYywgWzEsMiwzXSwgc2hhcGU9WzFdLCBvZmZzZXQ9MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD0iTCIpCisKKyAgICAgICAgICAgICMgSW52YWxpZCBmb3JtYXQuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD0iIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgYywgWygxLDIsMyldLCBzaGFwZT1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9IkAjJCIpCisKKyAgICAgICAgICAgICMgU3RyaWRpbmcgb3V0IG9mIHRoZSBtZW1vcnkgYm91bmRzLgorICAgICAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTBdCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjLCBpdGVtcywgc2hhcGU9WzIsM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzPVstMywgLTJdLCBvZmZzZXQ9NSkKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3RpbmcgY29uc3VtZXI6IGZvcm1hdCBhcmd1bWVudCBpbnZhbGlkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBieXRlYXJyYXkoKSwgZm9ybWF0PSJRIikKKworICAgICAgICAgICAgIyBDb25zdHJ1Y3Rpbmcgb3JpZ2luYWwgYmFzZSBvYmplY3Q6IGdldGJ1ZiBhcmd1bWVudCBpbnZhbGlkLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCBbMV0sIHNoYXBlPVsxXSwgZ2V0YnVmPVB5QlVGX0ZVTEwpCisKKyAgICAgICAgICAgICMgU2hhcGUgYXJndW1lbnQgaXMgbWFuZGF0b3J5IGZvciBvcmlnaW5hbCBiYXNlIG9iamVjdHMuCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMsIFsxXSkKKworCisgICAgICAgICMgUHlCVUZfV1JJVEFCTEUgcmVxdWVzdCB0byByZWFkLW9ubHkgcHJvdmlkZXIuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZGFycmF5LCBiJzEyMycsIGdldGJ1Zj1QeUJVRl9XUklUQUJMRSkKKworICAgICAgICAjIE5EX1ZBUkVYUE9SVCBjYW4gb25seSBiZSBzcGVjaWZpZWQgZHVyaW5nIGNvbnN0cnVjdGlvbi4KKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisKKyAgICAgICAgIyBJbnZhbGlkIG9wZXJhdGlvbiBmb3IgY29uc3VtZXJzOiBwdXNoL3BvcAorICAgICAgICBuZCA9IG5kYXJyYXkoYicxMjMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucHVzaCwgWzFdLCBbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wb3ApCisKKyAgICAgICAgIyBORF9WQVJFWFBPUlQgbm90IHNldDogcHVzaC9wb3AgZmFpbCB3aXRoIGV4cG9ydGVkIGJ1ZmZlcnMKKyAgICAgICAgbmQgPSBuZGFycmF5KFs5XSwgWzFdKQorICAgICAgICBuZC5wdXNoKFsxXSwgWzFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG5kLnB1c2gsIFsxXSwgWzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBuZC5wb3AoKQorCisgICAgICAgICMgU2luZ2xlIHJlbWFpbmluZyBidWZmZXI6IHBvcCBmYWlscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQucG9wKQorICAgICAgICBkZWwgbmQKKworICAgICAgICAjIGdldF9wb2ludGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfcG9pbnRlciwge30sIFsxLDIsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X3BvaW50ZXIsIGInMTIzJywge30pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTAwKSksIHNoYXBlPVsxXSoxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWzVdKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfcG9pbnRlciwgbmQsIFsyLDMsNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWzMsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9wb2ludGVyLCBuZCwgWy0zLDNdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRfcG9pbnRlciwgbmQsIFsxPDw2NCwzXSkKKworICAgICAgICAjIHRvbGlzdCgpIG5lZWRzIGZvcm1hdAorICAgICAgICBleCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9J0wnKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLnRvbGlzdCkKKworICAgICAgICAjIG1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICBleDEgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZm9ybWF0PSdMJykKKyAgICAgICAgZXgyID0gbmRhcnJheShleDEpCisgICAgICAgIG5kID0gbmRhcnJheShleDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcikKKworICAgICAgICBuZCA9IG5kYXJyYXkoWygxLCkqMjAwXSwgc2hhcGU9WzFdLCBmb3JtYXQ9J0wnKjIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorCisgICAgICAgIG4gPSBORF9NQVhfTkRJTQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZShuKSksIHNoYXBlPVsxXSpuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKQorCisgICAgICAgICMgZ2V0X2NvbnRpZ3VvdXMoKQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCAieHl6IiwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRfY29udGlndW91cywgbmQsIDIqKjY0LCAnQycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCA5NjEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAnXHUyMDA3JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9SRUFELCAnWicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgMjU1LCAnQScpCisKKyAgICAgICAgIyBjbXBfY29udGlnKCkKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIDEsIDIsIDMsIDQsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY21wX2NvbnRpZywge30sIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcF9jb250aWcsIG5kLCB7fSkKKworICAgICAgICAjIGlzX2NvbnRpZ3VvdXMoKQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNfY29udGlndW91cywgMSwgMiwgMywgNCwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc19jb250aWd1b3VzLCB7fSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzX2NvbnRpZ3VvdXMsIG5kLCAyMDEpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2xpbmtlZF9saXN0KHNlbGYpOgorICAgICAgICBmb3IgcGVybSBpbiBwZXJtdXRhdGlvbnMocmFuZ2UoNSkpOgorICAgICAgICAgICAgbSA9IFswXSo1CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzNdLCBmbGFncz1ORF9WQVJFWFBPUlQpCisgICAgICAgICAgICBtWzBdID0gbWVtb3J5dmlldyhuZCkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgNSk6CisgICAgICAgICAgICAgICAgbmQucHVzaChbMSwyLDNdLCBzaGFwZT1bM10pCisgICAgICAgICAgICAgICAgbVtpXSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIG1bcGVybVtpXV0ucmVsZWFzZSgpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBuZC5wb3ApCisgICAgICAgICAgICBkZWwgbmQKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ybWF0X3NjYWxhcihzZWxmKToKKyAgICAgICAgIyBuZGltID0gMDogc2NhbGFyCisgICAgICAgIGZvciBmbXQsIHNjYWxhciwgXyBpbiBpdGVyX2Zvcm1hdCgwKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShzY2FsYXIsIHNoYXBlPSgpLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTAsIHNoYXBlPSgpLCBzdHJpZGVzPSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PXNjYWxhcikKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfZm9ybWF0X3NoYXBlKHNlbGYpOgorICAgICAgICAjIG5kaW0gPSAxLCBzaGFwZSA9IFtuXQorICAgICAgICBuaXRlbXMgPSAgcmFuZHJhbmdlKDEsIDEwKQorICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdChuaXRlbXMpOgorICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9W25pdGVtc10sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG5kLCBvYmo9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPShuaXRlbXMsKSwgc3RyaWRlcz0oaXRlbXNpemUsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9aXRlbXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2Zvcm1hdF9zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIG5kaW0gPSAxLCBzdHJpZGVzCisgICAgICAgIG5pdGVtcyA9IHJhbmRyYW5nZSgxLCAzMCkKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQobml0ZW1zKToKKyAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgIGZvciBzdGVwIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICBpZiBzdGVwID09IDA6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzaGFwZSA9IFtsZW4oaXRlbXNbOjpzdGVwXSldCisgICAgICAgICAgICAgICAgc3RyaWRlcyA9IFtzdGVwKml0ZW1zaXplXQorICAgICAgICAgICAgICAgIG9mZnNldCA9IGl0ZW1zaXplKihuaXRlbXMtMSkgaWYgc3RlcCA8IDAgZWxzZSAwCisKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1mbXQsIG9mZnNldD1vZmZzZXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1pdGVtc1s6OnN0ZXBdKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9mb3J0cmFuKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT0oMywgNCksIHN0cmlkZXM9KDEsIDMpKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9GX0NPTlRJR1VPVVN8UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBmYXJyYXkoaXRlbXMsICgzLCA0KSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X211bHRpZGltKHNlbGYpOgorICAgICAgICBmb3IgbmRpbSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgIHNoYXBlX3QgPSBbcmFuZHJhbmdlKDIsIDEwKSBmb3IgXyBpbiByYW5nZShuZGltKV0KKyAgICAgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKyAgICAgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5kaW0gPT0gMCBhbmQgZmxhZ3MgPT0gTkRfUElMOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICAjIEMgYXJyYXkKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisKKyAgICAgICAgICAgICAgICAgICAgc3RyaWRlcyA9IHN0cmlkZXNfZnJvbV9zaGFwZShuZGltLCBzaGFwZSwgaXRlbXNpemUsICdDJykKKyAgICAgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobmQsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgICAgICAjIG1lbW9yeXZpZXc6IHJlY29uc3RydWN0IHN0cmlkZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUdfUk98UHlCVUZfRk9STUFUKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5kLnN0cmlkZXMgPT0gKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBtdiA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobXYsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9aXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAgICAgICAgICMgRm9ydHJhbiBhcnJheQorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9ZmxhZ3N8TkRfRk9SVFJBTikKKworICAgICAgICAgICAgICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kaW0sIHNoYXBlLCBpdGVtc2l6ZSwgJ0YnKQorICAgICAgICAgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcmlmeShuZCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWl0ZW1zaXplLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X2luZGV4X2ludmFsaWQoc2VsZik6CisgICAgICAgICMgbm90IHdyaXRhYmxlCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX3NldGl0ZW1fXywgMSwgOCkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMSwgOCkKKworICAgICAgICAjIGNhbm5vdCBiZSBkZWxldGVkCisgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19kZWxpdGVtX18sIDEpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19kZWxpdGVtX18sIDEpCisKKyAgICAgICAgIyBvdmVyZmxvdworICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMV0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBuZC5fX2dldGl0ZW1fXywgMTw8NjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAxPDw2NCwgOCkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19nZXRpdGVtX18sIDE8PDY0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX3NldGl0ZW1fXywgMTw8NjQsIDgpCisKKyAgICAgICAgIyBmb3JtYXQKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4XQorICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtsZW4oaXRlbXMpXSwgZm9ybWF0PSJCIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgbmQuX19zZXRpdGVtX18sIDIsIDMwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19zZXRpdGVtX18sIDEsICgxMDAsIDIwMCkpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG12Ll9fc2V0aXRlbV9fLCAyLCAzMDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXYuX19zZXRpdGVtX18sIDEsICgxMDAsIDIwMCkpCisKKyAgICAgICAgaXRlbXMgPSBbKDEsMiksICgzLDQpLCAoNSw2KV0KKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbGVuKGl0ZW1zKV0sIGZvcm1hdD0iTFEiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19zZXRpdGVtX18sIDIsIDMwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBuZC5fX3NldGl0ZW1fXywgMSwgKGInXHgwMDEnLCAyMDApKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9zY2FsYXIoc2VsZik6CisgICAgICAgICMgc2NhbGFyCisgICAgICAgIG5kID0gbmRhcnJheSgxLCBzaGFwZT0oKSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisKKyAgICAgICAgeCA9IG5kWygpXTsgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgeCA9IG5kWy4uLl07IHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgeCA9IG12WygpXTsgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgeCA9IG12Wy4uLl07IHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX3NldGl0ZW1fXywgMCwgOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtdi5fX3NldGl0ZW1fXywgMCwgOCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCAxKQorCisgICAgICAgIG5kWygpXSA9IDk7IHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIDkpCisgICAgICAgIG12WygpXSA9IDk7IHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIDkpCisKKyAgICAgICAgbmRbLi4uXSA9IDU7IHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIDUpCisgICAgICAgIG12Wy4uLl0gPSA1OyBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCA1KQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9pbmRleF9udWxsX3N0cmlkZXMoc2VsZik6CisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIqNCkpLCBzaGFwZT1bMiwgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUcpCisKKyAgICAgICAgIyBTdWItdmlld3MgYXJlIG9ubHkgcG9zc2libGUgZm9yIGZ1bGwgZXhwb3J0ZXJzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQuX19nZXRpdGVtX18sIDEpCisgICAgICAgICMgU2FtZSBmb3Igc2xpY2VzLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbmQuX19nZXRpdGVtX18sIHNsaWNlKDMsNSwxKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfZ2V0aXRlbV9zaW5nbGUoc2VsZik6CisgICAgICAgICMgZ2V0aXRlbQorICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdCg1KToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbaV0sIGl0ZW1zW2ldKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX2dldGl0ZW1fXywgLTYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX2dldGl0ZW1fXywgNSkKKworICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTUsIDUpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12W2ldLCBpdGVtc1tpXSkKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAtNikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX2dldGl0ZW1fXywgNSkKKworICAgICAgICAjIGdldGl0ZW0gd2l0aCBudWxsIHN0cmlkZXMKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZmxhZ3M9TkRfV1JJVEFCTEUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9DT05USUd8UHlCVUZfRk9STUFUKQorCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgbXYgPSBuZC5tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG12Ll9fZXFfXyhuZCksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCA1KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdltpXSwgaXRlbXNbaV0pCisKKyAgICAgICAgIyBnZXRpdGVtIHdpdGggbnVsbCBmb3JtYXQKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1XQorICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfQ09OVElHX1JPKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgICAgICAjIGdldGl0ZW0gd2l0aCBudWxsIHNoYXBlL3N0cmlkZXMvZm9ybWF0CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNV0KKyAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0pCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kW2ldLCBpdGVtc1tpXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfc2V0aXRlbV9zaW5nbGUoc2VsZik6CisgICAgICAgICMgYXNzaWduIHNpbmdsZSB2YWx1ZQorICAgICAgICBmb3IgZm10LCBpdGVtcywgc2luZ2xlX2l0ZW0gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg1KToKKyAgICAgICAgICAgICAgICBpdGVtc1tpXSA9IHNpbmdsZV9pdGVtCisgICAgICAgICAgICAgICAgbmRbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgaXRlbXMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG5kLl9fc2V0aXRlbV9fLCAtNiwgc2luZ2xlX2l0ZW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBuZC5fX3NldGl0ZW1fXywgNSwgc2luZ2xlX2l0ZW0pCisKKyAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBzaW5nbGVfaXRlbQorICAgICAgICAgICAgICAgIG12W2ldID0gc2luZ2xlX2l0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtdi5fX3NldGl0ZW1fXywgLTYsIHNpbmdsZV9pdGVtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbXYuX19zZXRpdGVtX18sIDUsIHNpbmdsZV9pdGVtKQorCisKKyAgICAgICAgIyBhc3NpZ24gc2luZ2xlIHZhbHVlOiBsb2JqZWN0ID0gcm9iamVjdAorICAgICAgICBmb3IgZm10LCBpdGVtcywgc2luZ2xlX2l0ZW0gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNCk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpKzFdCisgICAgICAgICAgICAgICAgbmRbaV0gPSBuZFtpKzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAgICAgaWYgbm90IGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgtNSwgNCk6CisgICAgICAgICAgICAgICAgaXRlbXNbaV0gPSBpdGVtc1tpKzFdCisgICAgICAgICAgICAgICAgbXZbaV0gPSBtdltpKzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBpdGVtcykKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfaW5kZXhfZ2V0aXRlbV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuaXRlbXMgPSBwcm9kKHNoYXBlX3QpCisgICAgICAgIGZvciBzaGFwZSBpbiBwZXJtdXRhdGlvbnMoc2hhcGVfdCk6CisKKyAgICAgICAgICAgIGZtdCwgaXRlbXMsIF8gPSByYW5kaXRlbXMobml0ZW1zKQorCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgIyBDIGFycmF5CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKC1zaGFwZVswXSwgc2hhcGVbMF0pOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXSwgbmRbaV0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKC1zaGFwZVsxXSwgc2hhcGVbMV0pOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal0sIG5kW2ldW2pdLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UoLXNoYXBlWzJdLCBzaGFwZVsyXSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3RbaV1bal1ba10sIG5kW2ldW2pdW2tdKQorCisgICAgICAgICAgICAgICAgIyBGb3J0cmFuIGFycmF5CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9ZmxhZ3N8TkRfRk9SVFJBTikKKyAgICAgICAgICAgICAgICBsc3QgPSBmYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLXNoYXBlWzBdLCBzaGFwZVswXSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldLCBuZFtpXS50b2xpc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoLXNoYXBlWzFdLCBzaGFwZVsxXSk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdFtpXVtqXSwgbmRbaV1bal0udG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShzaGFwZVsyXSwgc2hhcGVbMl0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0W2ldW2pdW2tdLCBuZFtpXVtqXVtrXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2VxdWVuY2Uoc2VsZik6CisgICAgICAgIG5kID0gbmRhcnJheSgxLCBzaGFwZT0oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiMSBpbiBuZCIsIGxvY2FscygpKQorICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICIxIGluIG12IiwgbG9jYWxzKCkpCisKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs1XSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShuZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpdGVtc1tpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodiBpbiBuZCkKKworICAgICAgICAgICAgaWYgaXNfbWVtb3J5dmlld19mb3JtYXQoZm10KToKKyAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgZm9yIGksIHYgaW4gZW51bWVyYXRlKG12KToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBpdGVtc1tpXSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHYgaW4gbXYpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3NsaWNlX2ludmFsaWQoc2VsZik6CisgICAgICAgIGl0ZW1zID0gWzEsMiwzLDQsNSw2LDcsOF0KKworICAgICAgICAjIHJ2YWx1ZSBpcyBub3QgYW4gZXhwb3J0ZXIKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWwuX19zZXRpdGVtX18sIHNsaWNlKDAsOCwxKSwgaXRlbXMpCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGEgZnVsbCBleHBvcnRlcgorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgeHIgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfTkQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCB4bC5fX3NldGl0ZW1fXywgc2xpY2UoMCw4LDEpLCB4cikKKworICAgICAgICAjIHplcm8gc3RlcAorICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmQuX19nZXRpdGVtX18sIHNsaWNlKDAsMSwwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbXYuX19nZXRpdGVtX18sIHNsaWNlKDAsMSwwKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsyLDRdLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbXYgPSBtZW1vcnl2aWV3KG5kKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLl9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwxLDEpLCBzbGljZSgwLDEsMCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZC5fX2dldGl0ZW1fXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKHNsaWNlKDAsMSwwKSwgc2xpY2UoMCwxLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgIkAlJCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmQuX19nZXRpdGVtX18sICgiQCUkIiwgc2xpY2UoMCwxLDEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZC5fX2dldGl0ZW1fXywgKHNsaWNlKDAsMSwxKSwge30pKQorCisgICAgICAgICMgbWVtb3J5dmlldzogbm90IGltcGxlbWVudGVkCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwxLDEpLCBzbGljZSgwLDEsMCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG12Ll9fZ2V0aXRlbV9fLCAiQCUkIikKKworICAgICAgICAjIGRpZmZlcmluZyBmb3JtYXQKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iQiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIGRpZmZlcmluZyBpdGVtc2l6ZQorICAgICAgICB4bCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJCIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHlyID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkwiKQorICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeGwpCisgICAgICAgIG1yID0gbWVtb3J5dmlldyh4cikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeGwuX19zZXRpdGVtX18sIHNsaWNlKDAsMSwxKSwgeHJbNzo4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bC50b2xpc3QoKSwgaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIG1yWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgICMgZGlmZmVyaW5nIG5kaW0KKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMiwgNF0sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIFtbMSwyLDMsNF0sIFs1LDYsNyw4XV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG1sLl9fc2V0aXRlbV9fLCBzbGljZSgwLDEsMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1yWzc6OF0pCisKKyAgICAgICAgIyBkaWZmZXJpbmcgc2hhcGUKKyAgICAgICAgeGwgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB4ciA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVs4XSwgZm9ybWF0PSJiIikKKyAgICAgICAgbWwgPSBtZW1vcnl2aWV3KHhsKQorICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHhsLl9fc2V0aXRlbV9fLCBzbGljZSgwLDIsMSksIHhyWzc6OF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeGwudG9saXN0KCksIGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtbC5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDEpLCBtcls3OjhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1sLnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICAjIF90ZXN0YnVmZmVyLmMgbW9kdWxlIGZ1bmN0aW9ucworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNsaWNlX2luZGljZXMsIHNsaWNlKDAsMSwyKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2xpY2VfaW5kaWNlcywgIiMjIyMjIyMjIyMjIiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2xpY2VfaW5kaWNlcywgc2xpY2UoMCwxLDApLCA0KQorCisgICAgICAgIHggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bOF0sIGZvcm1hdD0iYiIsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LmFkZF9zdWJvZmZzZXRzKQorCisgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzhdLCBmb3JtYXQ9IkIiKQorICAgICAgICB4ID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX1NJTVBMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LmFkZF9zdWJvZmZzZXRzKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV96ZXJvX3NoYXBlKHNlbGYpOgorICAgICAgICBpdGVtcyA9IFsxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMl0KKworICAgICAgICB4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEyXSwgZm9ybWF0PSJMIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHkgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMTJdLCBmb3JtYXQ9IkwiKQorICAgICAgICB4WzQ6NF0gPSB5Wzk6OV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBpdGVtcykKKworICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgbXIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwsIHkpCisgICAgICAgIG1sWzQ6NF0gPSBtcls5OjldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWwudG9saXN0KCksIGl0ZW1zKQorCisgICAgICAgIHggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMywgNF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB5ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzQsIDNdLCBmb3JtYXQ9IkwiKQorICAgICAgICB4WzE6MiwgMjoyXSA9IHlbMToyLCAzOjNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgY2FycmF5KGl0ZW1zLCBbMywgNF0pKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9tdWx0aWRpbShzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1KQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10LCBmbGFncz1mbGFncykKKyAgICAgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgZm9yIHNsaWNlcyBpbiByc2xpY2VzX25kaW0obmRpbSwgc2hhcGUpOgorCisgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlZCA9IG11bHRpc2xpY2UobHN0LCBzbGljZXMpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBuZHNsaWNlZCA9IG5kW3NsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgIGlmIG5kZXJyIG9yIGxpc3RlcnI6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZHNsaWNlZC50b2xpc3QoKSwgc2xpY2VkKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9zbGljZV9yZWR1bmRhbnRfc3Vib2Zmc2V0cyhzZWxmKToKKyAgICAgICAgc2hhcGVfdCA9ICgyLCAzLCA1LCAyKQorICAgICAgICBuZGltID0gbGVuKHNoYXBlX3QpCisgICAgICAgIG5pdGVtcyA9IHByb2Qoc2hhcGVfdCkKKyAgICAgICAgZm9yIHNoYXBlIGluIHBlcm11dGF0aW9ucyhzaGFwZV90KToKKworICAgICAgICAgICAgZm10LCBpdGVtcywgXyA9IHJhbmRpdGVtcyhuaXRlbXMpCisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZvcm1hdD1mbXQpCisgICAgICAgICAgICBuZC5hZGRfc3Vib2Zmc2V0cygpCisgICAgICAgICAgICBleCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPXNoYXBlLCBmb3JtYXQ9Zm10KQorICAgICAgICAgICAgZXguYWRkX3N1Ym9mZnNldHMoKQorICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgZm9yIHNsaWNlcyBpbiByc2xpY2VzX25kaW0obmRpbSwgc2hhcGUpOgorCisgICAgICAgICAgICAgICAgbGlzdGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNsaWNlZCA9IG11bHRpc2xpY2UobHN0LCBzbGljZXMpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgIG5kZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgbmRzbGljZWQgPSBuZFtzbGljZXNdCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICBpZiBuZGVyciBvciBsaXN0ZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsaXN0ZXJyKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRzbGljZWQudG9saXN0KCksIHNsaWNlZCkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfYXNzaWduX3NpbmdsZShzZWxmKToKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoNSk6CisgICAgICAgICAgICBmb3IgbHNsaWNlIGluIGdlbnNsaWNlcyg1KToKKyAgICAgICAgICAgICAgICBmb3IgcnNsaWNlIGluIGdlbnNsaWNlcyg1KToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorCisgICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxhZ3N8TkRfV1JJVEFCTEUKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzVdLCBmb3JtYXQ9Zm10LCBmbGFncz1mKQorICAgICAgICAgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bNV0sIGZvcm1hdD1mbXQsIGZsYWdzPWYpCisgICAgICAgICAgICAgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfc3RydWN0dXJlID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgbHN0ID0gaXRlbXNbOl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdmFsID0gbHN0W2xzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydmFsID0gbHN0W3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RbbHNsaWNlXSA9IGxzdFtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9zdHJ1Y3R1cmUgPSBsZW4obHZhbCkgIT0gbGVuKHJ2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgbmRlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRbbHNsaWNlXSA9IG5kW3JzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRpZmZfc3RydWN0dXJlOiAjIG5kYXJyYXkgY2Fubm90IGNoYW5nZSBzaGFwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIFZhbHVlRXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIGxzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG5kZXJyLCBsc3RlcnIpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG12ZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG12W2xzbGljZV0gPSBtdltyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXZlcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkaWZmX3N0cnVjdHVyZTogIyBtZW1vcnl2aWV3IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG12ZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LnRvbGlzdCgpLCBsc3QpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdiwgbmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtdmVyciwgbHN0ZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG12LCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1uZC5pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmQubmRpbSwgc2hhcGU9bmQuc2hhcGUsIHN0cmlkZXM9bmQuc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1uZC50b2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfc2xpY2VfYXNzaWduX211bHRpZGltKHNlbGYpOgorICAgICAgICBzaGFwZV90ID0gKDIsIDMsIDUpCisgICAgICAgIG5kaW0gPSBsZW4oc2hhcGVfdCkKKyAgICAgICAgbml0ZW1zID0gcHJvZChzaGFwZV90KQorICAgICAgICBmb3Igc2hhcGUgaW4gcGVybXV0YXRpb25zKHNoYXBlX3QpOgorCisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBfID0gcmFuZGl0ZW1zKG5pdGVtcykKKworICAgICAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgICAgICAgICBsc2xpY2VzLCByc2xpY2VzID0gcmFuZHNsaWNlX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUpCisKKyAgICAgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPWZsYWdzfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgICAgICAgICBsc3QgPSBjYXJyYXkoaXRlbXMsIHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIGxpc3RlcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IG11bHRpc2xpY2VfYXNzaWduKGxzdCwgbHN0LCBsc2xpY2VzLCByc2xpY2VzKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICBuZGVyciA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgbmRbbHNsaWNlc10gPSBuZFtyc2xpY2VzXQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBuZGVyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgaWYgbmRlcnIgb3IgbGlzdGVycjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobmRlcnIsIGxpc3RlcnIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JhbmRvbShzZWxmKToKKyAgICAgICAgIyBjb25zdHJ1Y3Rpb24gb2YgdmFsaWQgYXJyYXlzCisgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgdCA9IHJhbmRfc3RydWN0dXJlKGl0ZW1zaXplLCBUcnVlLCBtYXhkaW09TUFYRElNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhzaGFwZT1NQVhTSEFQRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdCkpCisgICAgICAgICAgICAgICAgaXRlbXMgPSByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0KQorCisgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICB4bGlzdCA9IHgudG9saXN0KCkKKworICAgICAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgIG12bGlzdCA9IG12LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZsaXN0LCB4bGlzdCkKKworICAgICAgICAgICAgICAgIGlmIHRbMl0gPiAwOgorICAgICAgICAgICAgICAgICAgICAjIG5kaW0gPiAwOiB0ZXN0IGFnYWluc3Qgc3Vib2Zmc2V0cyByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5bGlzdCA9IHkudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bGlzdCwgeWxpc3QpCisKKyAgICAgICAgICAgICAgICAgICAgbXYgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzX21lbW9yeXZpZXdfZm9ybWF0KGZtdCk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCB5KQorICAgICAgICAgICAgICAgICAgICAgICAgbXZsaXN0ID0gbXYudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXZsaXN0LCB5bGlzdCkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IHRbM10KKyAgICAgICAgICAgICAgICAgICAgaWYgMCBpbiBzaGFwZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgaHR0cDovL3Byb2plY3RzLnNjaXB5Lm9yZy9udW1weS90aWNrZXQvMTkxMAorICAgICAgICAgICAgICAgICAgICB6ID0gbnVtcHlfYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoeCwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXouaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09ei5uZGltLCBzaGFwZT16LnNoYXBlLCBzdHJpZGVzPXouc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PXoudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JhbmRvbV9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIGV4Y2VwdGlvbnMgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiBpbnZhbGlkIGFycmF5cworICAgICAgICBmb3IgXyBpbiByYW5nZShJVEVSQVRJT05TKToKKyAgICAgICAgICAgIGZvciBmbXQgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIGl0ZW1zaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKworICAgICAgICAgICAgICAgIHQgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgRmFsc2UsIG1heGRpbT1NQVhESU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heHNoYXBlPU1BWFNIQVBFKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodmVyaWZ5X3N0cnVjdHVyZSgqdCkpCisgICAgICAgICAgICAgICAgaXRlbXMgPSByYW5kaXRlbXNfZnJvbV9zdHJ1Y3R1cmUoZm10LCB0KQorCisgICAgICAgICAgICAgICAgbmRlcnIgPSBGYWxzZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgeCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUoaXRlbXMsIGZtdCwgdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIG5kZXJyID0gZS5fX2NsYXNzX18KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobmRlcnIpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgbnVtcHlfZXJyID0gRmFsc2UKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgeSA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGl0ZW1zLCBmbXQsIHQpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bXB5X2VyciA9IGUuX19jbGFzc19fCisKKyAgICAgICAgICAgICAgICAgICAgaWYgMDogIyBodHRwOi8vcHJvamVjdHMuc2NpcHkub3JnL251bXB5L3RpY2tldC8xOTEwCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtcHlfZXJyKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9yYW5kb21fc2xpY2VfYXNzaWduKHNlbGYpOgorICAgICAgICAjIHZhbGlkIHNsaWNlIGFzc2lnbm1lbnRzCisgICAgICAgIGZvciBfIGluIHJhbmdlKElURVJBVElPTlMpOgorICAgICAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICAgICAgaXRlbXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm10KQorCisgICAgICAgICAgICAgICAgbHNoYXBlLCByc2hhcGUsIGxzbGljZXMsIHJzbGljZXMgPSBcCisgICAgICAgICAgICAgICAgICAgIHJhbmRfYWxpZ25lZF9zbGljZXMobWF4ZGltPU1BWERJTSwgbWF4c2hhcGU9TUFYU0hBUEUpCisgICAgICAgICAgICAgICAgdGwgPSByYW5kX3N0cnVjdHVyZShpdGVtc2l6ZSwgVHJ1ZSwgc2hhcGU9bHNoYXBlKQorICAgICAgICAgICAgICAgIHRyID0gcmFuZF9zdHJ1Y3R1cmUoaXRlbXNpemUsIFRydWUsIHNoYXBlPXJzaGFwZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmVyaWZ5X3N0cnVjdHVyZSgqdGwpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJpZnlfc3RydWN0dXJlKCp0cikpCisgICAgICAgICAgICAgICAgbGl0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdGwpCisgICAgICAgICAgICAgICAgcml0ZW1zID0gcmFuZGl0ZW1zX2Zyb21fc3RydWN0dXJlKGZtdCwgdHIpCisKKyAgICAgICAgICAgICAgICB4bCA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUobGl0ZW1zLCBmbXQsIHRsKQorICAgICAgICAgICAgICAgIHhyID0gbmRhcnJheV9mcm9tX3N0cnVjdHVyZShyaXRlbXMsIGZtdCwgdHIpCisgICAgICAgICAgICAgICAgeGxbbHNsaWNlc10gPSB4cltyc2xpY2VzXQorICAgICAgICAgICAgICAgIHhsbGlzdCA9IHhsLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgeHJsaXN0ID0geHIudG9saXN0KCkKKworICAgICAgICAgICAgICAgIG1sID0gbWVtb3J5dmlldyh4bCkKKyAgICAgICAgICAgICAgICBtciA9IG1lbW9yeXZpZXcoeHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgeGxsaXN0KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXIudG9saXN0KCksIHhybGlzdCkKKworICAgICAgICAgICAgICAgIGlmIHRsWzJdID4gMCBhbmQgdHJbMl0gPiAwOgorICAgICAgICAgICAgICAgICAgICAjIG5kaW0gPiAwOiB0ZXN0IGFnYWluc3Qgc3Vib2Zmc2V0cyByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgeWwgPSBuZGFycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCwgZmxhZ3M9TkRfUElMKQorICAgICAgICAgICAgICAgICAgICB5ciA9IG5kYXJyYXlfZnJvbV9zdHJ1Y3R1cmUocml0ZW1zLCBmbXQsIHRyLCBmbGFncz1ORF9QSUwpCisgICAgICAgICAgICAgICAgICAgIHlsW2xzbGljZXNdID0geXJbcnNsaWNlc10KKyAgICAgICAgICAgICAgICAgICAgeWxsaXN0ID0geWwudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgeXJsaXN0ID0geXIudG9saXN0KCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bGxpc3QsIHlsbGlzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4cmxpc3QsIHlybGlzdCkKKworICAgICAgICAgICAgICAgICAgICBtbCA9IG1lbW9yeXZpZXcoeWwpCisgICAgICAgICAgICAgICAgICAgIG1yID0gbWVtb3J5dmlldyh5cikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbC50b2xpc3QoKSwgeWxsaXN0KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1yLnRvbGlzdCgpLCB5cmxpc3QpCisKKyAgICAgICAgICAgICAgICBpZiBudW1weV9hcnJheToKKyAgICAgICAgICAgICAgICAgICAgaWYgMCBpbiBsc2hhcGUgb3IgMCBpbiByc2hhcGU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIGh0dHA6Ly9wcm9qZWN0cy5zY2lweS5vcmcvbnVtcHkvdGlja2V0LzE5MTAKKworICAgICAgICAgICAgICAgICAgICB6bCA9IG51bXB5X2FycmF5X2Zyb21fc3RydWN0dXJlKGxpdGVtcywgZm10LCB0bCkKKyAgICAgICAgICAgICAgICAgICAgenIgPSBudW1weV9hcnJheV9mcm9tX3N0cnVjdHVyZShyaXRlbXMsIGZtdCwgdHIpCisgICAgICAgICAgICAgICAgICAgIHpsW2xzbGljZXNdID0genJbcnNsaWNlc10KKworICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNfb3ZlcmxhcHBpbmcodGwpIGFuZCBub3QgaXNfb3ZlcmxhcHBpbmcodHIpOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBTbGljZSBhc3NpZ25tZW50IG9mIG92ZXJsYXBwaW5nIHN0cnVjdHVyZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgdW5kZWZpbmVkIGluIE51bVB5LgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoeGwsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9emwuaXRlbXNpemUsIGZtdD1mbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGltPXpsLm5kaW0sIHNoYXBlPXpsLnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz16bC5zdHJpZGVzLCBsc3Q9emwudG9saXN0KCkpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkoeHIsIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT16ci5pdGVtc2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT16ci5uZGltLCBzaGFwZT16ci5zaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz16ci5zdHJpZGVzLCBsc3Q9enIudG9saXN0KCkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3JlX2V4cG9ydChzZWxmKToKKyAgICAgICAgaXRlbXMgPSBbMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTJdCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfUElMKQorICAgICAgICBleCA9IG5kYXJyYXkobmQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4LmZsYWdzICYgTkRfUElMKQorICAgICAgICBzZWxmLmFzc2VydElzKGV4Lm9iaiwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguc3Vib2Zmc2V0cywgKDAsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleC5jX2NvbnRpZ3VvdXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguZl9jb250aWd1b3VzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmNvbnRpZ3VvdXMpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3plcm9fc2hhcGUoc2VsZik6CisgICAgICAgICMgemVyb3MgaW4gc2hhcGUKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVswXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG12LCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgW10pCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMCwzLDNdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksIFtdKQorCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzXSwgc2hhcGU9WzMsMCwzXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbW10sIFtdLCBbXV0pCisKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bMywzLDBdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQudG9saXN0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbW10sIFtdLCBbXV0sIFtbXSwgW10sIFtdXSwgW1tdLCBbXSwgW11dXSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfemVyb19zdHJpZGVzKHNlbGYpOgorICAgICAgICAjIHplcm8gc3RyaWRlcworICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bNV0sIHN0cmlkZXM9WzBdLCBmbGFncz1mbGFncykKKyAgICAgICAgICAgIG12ID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXYsIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZC50b2xpc3QoKSwgWzEsIDEsIDEsIDEsIDFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdi50b2xpc3QoKSwgWzEsIDEsIDEsIDEsIDFdKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9vZmZzZXQoc2VsZik6CisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDIwKSksIHNoYXBlPVszXSwgb2Zmc2V0PTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQub2Zmc2V0LCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBbNyw4LDldKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9tZW1vcnl2aWV3X2Zyb21fYnVmZmVyKHNlbGYpOgorICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzKSksIHNoYXBlPVszXSwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICBtID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9nZXRfcG9pbnRlcihzZWxmKToKKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9QSUwpOgorICAgICAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMykpLCBzaGFwZT1bM10sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZFtpXSwgZ2V0X3BvaW50ZXIobmQsIFtpXSkpCisKKyAgICBkZWYgdGVzdF9uZGFycmF5X3RvbGlzdF9udWxsX3N0cmlkZXMoc2VsZik6CisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDIwKSksIHNoYXBlPVsyLDIsNV0pCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfTkR8UHlCVUZfRk9STUFUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBleC50b2xpc3QoKSkKKworICAgIGRlZiB0ZXN0X25kYXJyYXlfY21wX2NvbnRpZyhzZWxmKToKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNtcF9jb250aWcoYiIxMjMiLCBiIjQ1NiIpKQorCisgICAgICAgIHggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0pCisgICAgICAgIHkgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzQsM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY21wX2NvbnRpZyh4LCB5KSkKKworICAgICAgICB4ID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJCIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNtcF9jb250aWcoeCwgYidceDAxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbXBfY29udGlnKGInXHgwMScsIHgpKQorCisgICAgZGVmIHRlc3RfbmRhcnJheV9oYXNoKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnTCcsIFsxLDIsM10pCisgICAgICAgIG5kID0gbmRhcnJheShhKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoYXNoLCBuZCkKKworICAgICAgICAjIG9uZS1kaW1lbnNpb25hbAorICAgICAgICBiID0gYnl0ZXMobGlzdChyYW5nZSgxMikpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsNF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsMiwyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICAjIEZvcnRyYW4gY29udGlndW91cworICAgICAgICBiID0gYnl0ZXModHJhbnNwb3NlKGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzQsM10pKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICBiID0gYnl0ZXModHJhbnNwb3NlKGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMywyXSkpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDMsMl0sIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChuZCksIGhhc2goYikpCisKKyAgICAgICAgIyBzdWJvZmZzZXRzCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChiKSkKKworICAgICAgICAjIG5vbi1ieXRlIGZvcm1hdHMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSdMJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG5kKSwgaGFzaChuZC50b2J5dGVzKCkpKQorCisgICAgZGVmIHRlc3RfcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMoc2VsZik6CisKKyAgICAgICAgIyBUaGUgcmVxdWVzdHMgYXJlIHVzZWQgaW4gX3Rlc3RidWZmZXIuYzpweV9idWZmZXJfdG9fY29udGlndW91cworICAgICAgICAjIHRvIGdlbmVyYXRlIGJ1ZmZlcnMgd2l0aG91dCBmdWxsIGluZm9ybWF0aW9uIGZvciB0ZXN0aW5nLgorICAgICAgICByZXF1ZXN0cyA9ICgKKyAgICAgICAgICAgICMgZGlzdGluY3QgZmxhZ3MKKyAgICAgICAgICAgIFB5QlVGX0lORElSRUNULCBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORCwgUHlCVUZfU0lNUExFLAorICAgICAgICAgICAgIyBjb21wb3VuZCByZXF1ZXN0cworICAgICAgICAgICAgUHlCVUZfRlVMTCwgUHlCVUZfRlVMTF9STywKKyAgICAgICAgICAgIFB5QlVGX1JFQ09SRFMsIFB5QlVGX1JFQ09SRFNfUk8sCisgICAgICAgICAgICBQeUJVRl9TVFJJREVELCBQeUJVRl9TVFJJREVEX1JPLAorICAgICAgICAgICAgUHlCVUZfQ09OVElHLCBQeUJVRl9DT05USUdfUk8sCisgICAgICAgICkKKworICAgICAgICAjIG5vIGJ1ZmZlciBpbnRlcmZhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBweV9idWZmZXJfdG9fY29udGlndW91cywge30sICdGJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCVUZfRlVMTF9STykKKworICAgICAgICAjIHNjYWxhciwgcmVhZC1vbmx5IHJlcXVlc3QKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIHJlcXVlc3RzOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSg4KSksIHNoYXBlPVsyLCAwLCA3XSwgZm9ybWF0PSJMIiwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICAjIyMgT25lLWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgdHJpdmlhbCwgc2luY2UgRm9ydHJhbiBhbmQgQyBvcmRlcgorICAgICAgICAjIyMgYXJlIHRoZSBzYW1lLgorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsCisgICAgICAgIGZvciBmIGluIFswLCBORF9GT1JUUkFOXToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShbMV0sIHNoYXBlPVsxXSwgZm9ybWF0PSJoIiwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG5kYnl0ZXMgPSBuZC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmRieXRlcykKKworICAgICAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9ImIiLCBmbGFncz1mfE5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgYiA9IHB5X2J1ZmZlcl90b19jb250aWd1b3VzKG5kLCBvcmRlciwgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgICMgb25lLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gW1B5QlVGX1NUUklERVMsIFB5QlVGX0ZVTExdOgorICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgb3JkZXIsIHJlcXVlc3QpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZGJ5dGVzKQorCisgICAgICAgIG5kID0gbmRbOjotMV0KKyAgICAgICAgbmRieXRlcyA9IG5kLnRvYnl0ZXMoKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gcmVxdWVzdHM6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsIG9yZGVyLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kYnl0ZXMpCisKKyAgICAgICAgIyMjCisgICAgICAgICMjIyBNdWx0aS1kaW1lbnNpb25hbCBhcnJheXM6CisgICAgICAgICMjIworICAgICAgICAjIyMgVGhlIGdvYWwgaGVyZSBpcyB0byBwcmVzZXJ2ZSB0aGUgbG9naWNhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgIyMjIGlucHV0IGFycmF5IGJ1dCBjaGFuZ2UgdGhlIHBoeXNpY2FsIHJlcHJlc2VudGF0aW9uIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIyMjCisgICAgICAgICMjIyBfdGVzdGJ1ZmZlciBleGFtcGxlOgorICAgICAgICAjIyMgPT09PT09PT09PT09PT09PT09PT0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBDIGlucHV0IGFycmF5OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0pCisgICAgICAgICMjIyAgICAgICA+Pj4gbmQudG9saXN0KCkKKyAgICAgICAgIyMjICAgICAgIFtbMCwgMSwgMiwgM10sCisgICAgICAgICMjIyAgICAgICAgWzQsIDUsIDYsIDddLAorICAgICAgICAjIyMgICAgICAgIFs4LCA5LCAxMCwgMTFdXQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIEZvcnRyYW4gb3V0cHV0OgorICAgICAgICAjIyMgICAgLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICMjIyAgICAgICA+Pj4gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgIyMjICAgICAgID4+PiBiJ1x4MDBceDA0XHgwOFx4MDFceDA1XHRceDAyXHgwNlxuXHgwM1x4MDdceDBiJworICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIFRoZSByZXR1cm4gdmFsdWUgY29ycmVzcG9uZHMgdG8gdGhpcyBpbnB1dCBsaXN0IGZvcgorICAgICAgICAjIyMgICAgX3Rlc3RidWZmZXIncyBuZGFycmF5OgorICAgICAgICAjIyMgICAgICAgPj4+IG5kID0gbmRhcnJheShbMCw0LDgsMSw1LDksMiw2LDEwLDMsNywxMV0sIHNoYXBlPVszLDRdLAorICAgICAgICAjIyMgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kLnRvbGlzdCgpCisgICAgICAgICMjIyAgICAgICBbWzAsIDEsIDIsIDNdLAorICAgICAgICAjIyMgICAgICAgIFs0LCA1LCA2LCA3XSwKKyAgICAgICAgIyMjICAgICAgICBbOCwgOSwgMTAsIDExXV0KKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBUaGUgbG9naWNhbCBhcnJheSBpcyB0aGUgc2FtZSwgYnV0IHRoZSB2YWx1ZXMgaW4gbWVtb3J5IGFyZSBub3cKKyAgICAgICAgIyMjICAgIGluIEZvcnRyYW4gb3JkZXIuCisgICAgICAgICMjIworICAgICAgICAjIyMgTnVtUHkgZXhhbXBsZToKKyAgICAgICAgIyMjID09PT09PT09PT09PT09CisgICAgICAgICMjIyAgICBfdGVzdGJ1ZmZlcidzIG5kYXJyYXkgdGFrZXMgbGlzdHMgdG8gaW5pdGlhbGl6ZSB0aGUgbWVtb3J5LgorICAgICAgICAjIyMgICAgSGVyZSdzIHRoZSBzYW1lIHNlcXVlbmNlIGluIE51bVB5OgorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgIEMgaW5wdXQ6CisgICAgICAgICMjIyAgICAtLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IG5kID0gbmRhcnJheShidWZmZXI9Ynl0ZWFycmF5KGxpc3QocmFuZ2UoMTIpKSksCisgICAgICAgICMjIyAgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlPVszLCA0XSwgZHR5cGU9J0InKQorICAgICAgICAjIyMgICAgICAgPj4+IG5kCisgICAgICAgICMjIyAgICAgICBhcnJheShbWyAwLCAgMSwgIDIsICAzXSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDQsICA1LCAgNiwgIDddLAorICAgICAgICAjIyMgICAgICAgICAgICAgIFsgOCwgIDksIDEwLCAxMV1dLCBkdHlwZT11aW50OCkKKyAgICAgICAgIyMjCisgICAgICAgICMjIyAgICBGb3J0cmFuIG91dHB1dDoKKyAgICAgICAgIyMjICAgIC0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIyMgICAgICAgPj4+IGZvcnRyYW5fYnVmID0gbmQudG9zdHJpbmcob3JkZXI9J0YnKQorICAgICAgICAjIyMgICAgICAgPj4+IGZvcnRyYW5fYnVmCisgICAgICAgICMjIyAgICAgICBiJ1x4MDBceDA0XHgwOFx4MDFceDA1XHRceDAyXHgwNlxuXHgwM1x4MDdceDBiJworICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgICAgID4+PiBuZCA9IG5kYXJyYXkoYnVmZmVyPWZvcnRyYW5fYnVmLCBzaGFwZT1bMywgNF0sCisgICAgICAgICMjIyAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPSdCJywgb3JkZXI9J0YnKQorICAgICAgICAjIyMKKyAgICAgICAgIyMjICAgICAgID4+PiBuZAorICAgICAgICAjIyMgICAgICAgYXJyYXkoW1sgMCwgIDEsICAyLCAgM10sCisgICAgICAgICMjIyAgICAgICAgICAgICAgWyA0LCAgNSwgIDYsICA3XSwKKyAgICAgICAgIyMjICAgICAgICAgICAgICBbIDgsICA5LCAxMCwgMTFdXSwgZHR5cGU9dWludDgpCisgICAgICAgICMjIworCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwsIGNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbHN0ID0gbGlzdChyYW5nZSgxMikpCisgICAgICAgIGZvciBmIGluIFswLCBORF9GT1JUUkFOXToKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgIG5hID0gbnVtcHlfYXJyYXkoYnVmZmVyPWJ5dGVhcnJheShsc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGU9WzMsIDRdLCBkdHlwZT0nQicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmRlcj0nQycgaWYgZiA9PSAwIGVsc2UgJ0YnKQorCisgICAgICAgICAgICAjICdDJyByZXF1ZXN0CisgICAgICAgICAgICBpZiBmID09IE5EX0ZPUlRSQU46ICMgJ0YnIHRvICdDJworICAgICAgICAgICAgICAgIHggPSBuZGFycmF5KHRyYW5zcG9zZShsc3QsIFs0LCAzXSksIHNoYXBlPVszLCA0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHgudG9ieXRlcygpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gbmQudG9ieXRlcygpCisgICAgICAgICAgICBmb3IgcmVxdWVzdCBpbiByZXF1ZXN0czoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0MnLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhIEMgYXJyYXkgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dCBhcnJheS4KKyAgICAgICAgICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmEudG9zdHJpbmcob3JkZXI9J0MnKSkKKworICAgICAgICAgICAgIyAnRicgcmVxdWVzdAorICAgICAgICAgICAgaWYgZiA9PSAwOiAjICdDJyB0byAnRicKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbMywgNF0pLCBzaGFwZT1bNCwgM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHggPSBuZGFycmF5KGxzdCwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIGV4cGVjdGVkID0geC50b2J5dGVzKCkKKyAgICAgICAgICAgIGZvciByZXF1ZXN0IGluIFtQeUJVRl9GVUxMLCBQeUJVRl9GVUxMX1JPLCBQeUJVRl9JTkRJUkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJVRl9TVFJJREVTLCBQeUJVRl9ORF06CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdGJywgcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgQnVmZmVyRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBleHBlY3RlZCkKKworICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCBvdXRwdXQgY2FuIGJlIHVzZWQgYXMgdGhlIGJhc2lzIGZvciBjb25zdHJ1Y3RpbmcKKyAgICAgICAgICAgICAgICAjIGEgRm9ydHJhbiBhcnJheSB0aGF0IGlzIGxvZ2ljYWxseSBpZGVudGljYWwgdG8gdGhlIGlucHV0IGFycmF5LgorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX0ZPUlRSQU58TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZW1vcnl2aWV3KHkpLCBtZW1vcnl2aWV3KG5kKSkKKworICAgICAgICAgICAgICAgIGlmIG51bXB5X2FycmF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5hLnRvc3RyaW5nKG9yZGVyPSdGJykpCisKKyAgICAgICAgICAgICMgJ0EnIHJlcXVlc3QKKyAgICAgICAgICAgIGlmIGYgPT0gTkRfRk9SVFJBTjoKKyAgICAgICAgICAgICAgICB4ID0gbmRhcnJheShsc3QsIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSB4LnRvYnl0ZXMoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9IG5kLnRvYnl0ZXMoKQorICAgICAgICAgICAgZm9yIHJlcXVlc3QgaW4gW1B5QlVGX0ZVTEwsIFB5QlVGX0ZVTExfUk8sIFB5QlVGX0lORElSRUNULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX1NUUklERVMsIFB5QlVGX05EXToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0EnLCByZXF1ZXN0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCdWZmZXJFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgb3V0cHV0IGNhbiBiZSB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgY29uc3RydWN0aW5nCisgICAgICAgICAgICAgICAgIyBhbiBhcnJheSB3aXRoIG9yZGVyPWYgdGhhdCBpcyBsb2dpY2FsbHkgaWRlbnRpY2FsIHRvIHRoZSBpbnB1dAorICAgICAgICAgICAgICAgICMgYXJyYXkuCisgICAgICAgICAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9ZnxORF9XUklUQUJMRSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICAgICAgICAgaWYgbnVtcHlfYXJyYXk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgbmEudG9zdHJpbmcob3JkZXI9J0EnKSkKKworICAgICAgICAjIG11bHRpLWRpbWVuc2lvbmFsLCBub24tY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKworICAgICAgICAjICdDJworICAgICAgICBiID0gcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMobmQsICdDJywgUHlCVUZfRlVMTF9STykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBuZC50b2J5dGVzKCkpCisgICAgICAgIHkgPSBuZGFycmF5KFt2IGZvciB2IGluIGJdLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICMgJ0YnCisgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0YnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICB4ID0gbmRhcnJheSh0cmFuc3Bvc2UobHN0LCBbMywgNF0pLCBzaGFwZT1bNCwgM10sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHgudG9ieXRlcygpKQorICAgICAgICB5ID0gbmRhcnJheShbdiBmb3IgdiBpbiBiXSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9GT1JUUkFOfE5EX1dSSVRBQkxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lbW9yeXZpZXcoeSksIG1lbW9yeXZpZXcobmQpKQorCisgICAgICAgICMgJ0EnCisgICAgICAgIGIgPSBweV9idWZmZXJfdG9fY29udGlndW91cyhuZCwgJ0EnLCBQeUJVRl9GVUxMX1JPKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIG5kLnRvYnl0ZXMoKSkKKyAgICAgICAgeSA9IG5kYXJyYXkoW3YgZm9yIHYgaW4gYl0sIHNoYXBlPVszLCA0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWVtb3J5dmlldyh5KSwgbWVtb3J5dmlldyhuZCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbnN0cnVjdGlvbihzZWxmKToKKworICAgICAgICBpdGVtc19zaGFwZSA9IFsoOSwgW10pLCAoWzEsMiwzXSwgWzNdKSwgKGxpc3QocmFuZ2UoMiozKjUpKSwgWzIsMyw1XSldCisKKyAgICAgICAgIyBOdW1QeSBzdHlsZSwgQy1jb250aWd1b3VzOgorICAgICAgICBmb3IgaXRlbXMsIHNoYXBlIGluIGl0ZW1zX3NoYXBlOgorCisgICAgICAgICAgICAjIEZyb20gUEVQLTMxMTggY29tcGxpYW50IGV4cG9ydGVyOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY19jb250aWd1b3VzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY29udGlndW91cykKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIDEsICdDJykKKyAgICAgICAgICAgIGxzdCA9IGNhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IG5vIHN0cmlkZXMKKyAgICAgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19ST3xQeUJVRl9GT1JNQVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnN0cmlkZXMsICgpKQorICAgICAgICAgICAgbSA9IG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9J0InLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKworICAgICAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiBubyBmb3JtYXQsIHNoYXBlLCBzdHJpZGVzCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoZXgsIGdldGJ1Zj1QeUJVRl9TSU1QTEUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLmZvcm1hdCwgJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kLnNoYXBlLCAoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQuc3RyaWRlcywgKCkpCisgICAgICAgICAgICBtID0gbmQubWVtb3J5dmlld19mcm9tX2J1ZmZlcigpCisKKyAgICAgICAgICAgIGxzdCA9IFtpdGVtc10gaWYgbmRpbSA9PSAwIGVsc2UgaXRlbXMKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9W2V4Lm5ieXRlc10sIHN0cmlkZXM9KDEsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgIyBOdW1QeSBzdHlsZSwgRm9ydHJhbiBjb250aWd1b3VzOgorICAgICAgICBmb3IgaXRlbXMsIHNoYXBlIGluIGl0ZW1zX3NoYXBlOgorCisgICAgICAgICAgICAjIEZyb20gUEVQLTMxMTggY29tcGxpYW50IGV4cG9ydGVyOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uZl9jb250aWd1b3VzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG0uY29udGlndW91cykKKworICAgICAgICAgICAgbmRpbSA9IGxlbihzaGFwZSkKKyAgICAgICAgICAgIHN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRpbSwgc2hhcGUsIDEsICdGJykKKyAgICAgICAgICAgIGxzdCA9IGZhcnJheShpdGVtcywgc2hhcGUpCisKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICAgICAjIEZyb20gbWVtb3J5dmlldzoKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhtKQorICAgICAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD0nQicsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgICAgICBuZGltPW5kaW0sIHNoYXBlPXNoYXBlLCBzdHJpZGVzPXN0cmlkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorCisgICAgICAgICMgUElMIHN0eWxlOgorICAgICAgICBmb3IgaXRlbXMsIHNoYXBlIGluIGl0ZW1zX3NoYXBlWzE6XToKKworICAgICAgICAgICAgIyBGcm9tIFBFUC0zMTE4IGNvbXBsaWFudCBleHBvcnRlcjoKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9c2hhcGUsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICAgICBuZGltID0gbGVuKHNoYXBlKQorICAgICAgICAgICAgbHN0ID0gY2FycmF5KGl0ZW1zLCBzaGFwZSkKKworICAgICAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9ZXguc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgICAgICMgRnJvbSBtZW1vcnl2aWV3OgorICAgICAgICAgICAgbTIgPSBtZW1vcnl2aWV3KG0pCisgICAgICAgICAgICBzZWxmLnZlcmlmeShtMiwgb2JqPWV4LAorICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09bmRpbSwgc2hhcGU9c2hhcGUsIHN0cmlkZXM9ZXguc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisKKyAgICAgICAgIyBJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHM6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWVtb3J5dmlldywgYic5JywgJ3gnKQorICAgICAgICAjIE5vdCBhIGJ1ZmZlciBwcm92aWRlcjoKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtZW1vcnl2aWV3LCB7fSkKKyAgICAgICAgIyBOb24tY29tcGxpYW50IGJ1ZmZlciBwcm92aWRlcjoKKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSkKKyAgICAgICAgbmQgPSBuZGFycmF5KGV4LCBnZXRidWY9UHlCVUZfU0lNUExFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbWVtb3J5dmlldywgbmQpCisgICAgICAgIG5kID0gbmRhcnJheShleCwgZ2V0YnVmPVB5QlVGX0NPTlRJR19ST3xQeUJVRl9GT1JNQVQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCBuZCkKKworICAgICAgICAjIG5kaW0gPiA2NAorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdKjEyOCwgc2hhcGU9WzFdKjEyOCwgZm9ybWF0PSdMJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWVtb3J5dmlldywgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5kLm1lbW9yeXZpZXdfZnJvbV9idWZmZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldF9jb250aWd1b3VzLCBuZCwgUHlCVUZfUkVBRCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1JFQUQsICdGJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kWzo6LTFdLCBQeUJVRl9SRUFELCAnQycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfemVyb19zaGFwZShzZWxmKToKKyAgICAgICAgIyBDYXN0cyBhcmUgdW5kZWZpbmVkIGlmIHNoYXBlIGNvbnRhaW5zIHplcm9zLiBUaGVzZSBhcnJheXMgYXJlCisgICAgICAgICMgcmVnYXJkZWQgYXMgQy1jb250aWd1b3VzIGJ5IE51bXB5IGFuZCBQeUJ1ZmZlcl9HZXRDb250aWd1b3VzKCksCisgICAgICAgICMgc28gdGhleSBhcmUgbm90IGNhdWdodCBieSB0aGUgdGVzdCBmb3IgQy1jb250aWd1aXR5IGluIG1lbW9yeV9jYXN0KCkuCisgICAgICAgIGl0ZW1zID0gWzEsMiwzXQorICAgICAgICBmb3Igc2hhcGUgaW4gKFswLDMsM10sIFszLDAsM10sIFswLDMsM10pOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleC5jX2NvbnRpZ3VvdXMpCisgICAgICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCAnYycpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3N0cnVjdF9tb2R1bGUoc2VsZik6CisKKyAgICAgICAgY2xhc3MgSU5UKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbCA9IHZhbAorICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsCisKKyAgICAgICAgY2xhc3MgSURYKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbCA9IHZhbAorICAgICAgICAgICAgZGVmIF9faW5kZXhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWwKKworICAgICAgICBkZWYgZigpOiByZXR1cm4gNworCisgICAgICAgIHZhbHVlcyA9IFtJTlQoOSksIElEWCg5KSwKKyAgICAgICAgICAgICAgICAgIDIuMiszaiwgRGVjaW1hbCgiLTIxLjEiKSwgMTIuMiwgRnJhY3Rpb24oNSwgMiksCisgICAgICAgICAgICAgICAgICBbMSwyLDNdLCB7NCw1LDZ9LCB7Nzo4fSwgKCksICg5LCksCisgICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSwgTm9uZSwgTm90SW1wbGVtZW50ZWQsCisgICAgICAgICAgICAgICAgICBiJ2EnLCBiJ2FiYycsIGJ5dGVhcnJheShiJ2EnKSwgYnl0ZWFycmF5KGInYWJjJyksCisgICAgICAgICAgICAgICAgICAnYScsICdhYmMnLCByJ2EnLCByJ2FiYycsCisgICAgICAgICAgICAgICAgICBmLCBsYW1iZGEgeDogeF0KKworICAgICAgICBmb3IgZm10LCBpdGVtcywgaXRlbSBpbiBpdGVyX2Zvcm1hdCgxMCwgJ21lbW9yeXZpZXcnKToKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShpdGVtcywgc2hhcGU9WzEwXSwgZm9ybWF0PWZtdCwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVsxMF0sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgIHN0cnVjdC5wYWNrX2ludG8oZm10LCBuZCwgMCwgaXRlbSkKKyAgICAgICAgICAgIG1bMF0gPSBpdGVtCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMF0sIG5kWzBdKQorCisgICAgICAgICAgICBpdGVtc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBpZiAnUCcgaW4gZm10OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGZvciB2IGluIHZhbHVlczoKKyAgICAgICAgICAgICAgICBzdHJ1Y3RfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2tfaW50byhmbXQsIG5kLCBpdGVtc2l6ZSwgdikKKyAgICAgICAgICAgICAgICBleGNlcHQgc3RydWN0LmVycm9yOgorICAgICAgICAgICAgICAgICAgICBzdHJ1Y3RfZXJyID0gc3RydWN0LmVycm9yCisKKyAgICAgICAgICAgICAgICBtdl9lcnIgPSBOb25lCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtWzFdID0gdgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICAgICBtdl9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgaWYgc3RydWN0X2VyciBvciBtdl9lcnI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qoc3RydWN0X2VyciwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtdl9lcnIsIE5vbmUpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCBuZFsxXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdF96ZXJvX3N0cmlkZXMoc2VsZik6CisgICAgICAgICMgQ2FzdHMgYXJlIHVuZGVmaW5lZCBpZiBzdHJpZGVzIGNvbnRhaW5zIHplcm9zLiBUaGVzZSBhcnJheXMgYXJlCisgICAgICAgICMgKHNvbWV0aW1lcyEpIHJlZ2FyZGVkIGFzIEMtY29udGlndW91cyBieSBOdW1weSwgYnV0IG5vdCBieQorICAgICAgICAjIFB5QnVmZmVyX0dldENvbnRpZ3VvdXMoKS4KKyAgICAgICAgZXggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgc3RyaWRlcz1bMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXguY19jb250aWd1b3VzKQorICAgICAgICBtc3JjID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsICdjJykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2FzdF9pbnZhbGlkKHNlbGYpOgorICAgICAgICAjIGludmFsaWQgZm9ybWF0CisgICAgICAgIGZvciBzZm10IGluIE5PTl9CWVRFX0ZPUk1BVDoKKyAgICAgICAgICAgIHNmb3JtYXQgPSAnQCcgKyBzZm10IGlmIHJhbmRyYW5nZSgyKSBlbHNlIHNmbXQKKyAgICAgICAgICAgIHNzaXplID0gc3RydWN0LmNhbGNzaXplKHNmb3JtYXQpCisgICAgICAgICAgICBmb3IgZGZtdCBpbiBOT05fQllURV9GT1JNQVQ6CisgICAgICAgICAgICAgICAgZGZvcm1hdCA9ICdAJyArIGRmbXQgaWYgcmFuZHJhbmdlKDIpIGVsc2UgZGZtdAorICAgICAgICAgICAgICAgIGRzaXplID0gc3RydWN0LmNhbGNzaXplKGRmb3JtYXQpCisgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMzIpKSwgc2hhcGU9WzMyLy9zc2l6ZV0sIGZvcm1hdD1zZm9ybWF0KQorICAgICAgICAgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXNyYy5jYXN0LCBkZm10LCBbMzIvL2RzaXplXSkKKworICAgICAgICBmb3Igc2ZtdCwgc2l0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDEpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KHNpdGVtcywgc2hhcGU9WzFdLCBmb3JtYXQ9c2ZtdCkKKyAgICAgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgZm9yIGRmbXQsIF8sIF8gaW4gaXRlcl9mb3JtYXQoMSk6CisgICAgICAgICAgICAgICAgaWYgKG5vdCBpc19tZW1vcnl2aWV3X2Zvcm1hdChzZm10KSBvcgorICAgICAgICAgICAgICAgICAgICBub3QgaXNfbWVtb3J5dmlld19mb3JtYXQoZGZtdCkpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtc3JjLmNhc3QsIGRmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFszMi8vZHNpemVdKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpc19ieXRlX2Zvcm1hdChzZm10KSBhbmQgbm90IGlzX2J5dGVfZm9ybWF0KGRmbXQpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtc3JjLmNhc3QsIGRmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMzIvL2RzaXplXSkKKworICAgICAgICAjIGludmFsaWQgc2hhcGUKKyAgICAgICAgc2l6ZV9oID0gc3RydWN0LmNhbGNzaXplKCdoJykKKyAgICAgICAgc2l6ZV9kID0gc3RydWN0LmNhbGNzaXplKCdkJykKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMioyKnNpemVfZCkpLCBzaGFwZT1bMiwyLHNpemVfZF0sIGZvcm1hdD0naCcpCisgICAgICAgIG1zcmMgPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1zcmMuY2FzdCwgc2hhcGU9WzIsMixzaXplX2hdLCBmb3JtYXQ9J2QnKQorCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgIyBpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAxLCAyLCAzKQorCisgICAgICAgICMgaW5jb3JyZWN0IGRlc3QgZm9ybWF0IHR5cGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsIHt9KQorCisgICAgICAgICMgaW5jb3JyZWN0IGRlc3QgZm9ybWF0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIlgiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJAWCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkBYWSIpCisKKyAgICAgICAgIyBkZXN0IGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiPUIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICIhTCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIjxQIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiPmwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCSSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgInhCSSIpCisKKyAgICAgICAgIyBzcmMgZm9ybWF0IG5vdCBpbXBsZW1lbnRlZAorICAgICAgICBleCA9IG5kYXJyYXkoWygxLDIpLCAoMyw0KV0sIHNoYXBlPVsyXSwgZm9ybWF0PSJJSSIpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCA4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICAjIGluY29ycmVjdCBzaGFwZSB0eXBlCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMSwyLDMsNCw1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPXt9KQorCisgICAgICAgICMgaW5jb3JyZWN0IHNoYXBlIGVsZW1lbnRzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyMCkpLCBzaGFwZT1bMiozKjQqNV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIqKjY0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAiQiIsIHNoYXBlPVstMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMiwzLDQsNSw2LDcsLTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDUsNiw3LDBdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkIiLCBzaGFwZT1bMiwzLDQsNSw2LDcsJ3gnXSkKKworICAgICAgICAjIE4tRCAtPiBOLUQgY2FzdAorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChbOSBmb3IgXyBpbiByYW5nZSgzKjUqNyoxMSldKSwgc2hhcGU9WzMsNSw3LDExXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5jYXN0LCAiSSIsIHNoYXBlPVsyLDMsNCw1XSkKKworICAgICAgICAjIGNhc3Qgd2l0aCBuZGltID4gNjQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0knKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAnSScsIFsxXSoxMjgpCisKKyAgICAgICAgIyB2aWV3LT5sZW4gbm90IGEgbXVsdGlwbGUgb2YgaXRlbXNpemUKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QoWzkgZm9yIF8gaW4gcmFuZ2UoMyo1KjcqMTEpXSksIHNoYXBlPVszKjUqNyoxMV0pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uY2FzdCwgIkkiLCBzaGFwZT1bMiwzLDQsNV0pCisKKyAgICAgICAgIyBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICE9IGJ1ZmZlciBzaXplCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KFs5IGZvciBfIGluIHJhbmdlKDMqNSo3KjExKV0pLCBzaGFwZT1bMyo1KjcqMTFdKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsICJCIiwgc2hhcGU9WzIsMyw0LDVdKQorCisgICAgICAgICMgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSBvdmVyZmxvdworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMjgpKSwgc2hhcGU9WzEyOF0sIGZvcm1hdD0nSScpCisgICAgICAgIG0xID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTI4KSksIHNoYXBlPVsxMjhdLCBmb3JtYXQ9J0InKQorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIGlmIHN5cy5tYXhzaXplID09IDIqKjYzLTE6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs3LCA3LCA3MywgMTI3LCAzMzcsIDkyNzM3LCA2NDk2NTddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTEuY2FzdCwgJ0InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzIqKjIwLCAyKioyMCwgMioqMTAsIDIqKjEwLCAyKiozXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLmNhc3QsICdJJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioyMCwgMioqMjAsIDIqKjEwLCAyKioxMCwgMioqMV0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAyMTQ3NDgzNjQ3XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0xLmNhc3QsICdCJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsyKioxMCwgMioqMTAsIDIqKjUsIDIqKjUsIDIqKjFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuY2FzdCwgJ0knLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzIqKjEwLCAyKioxMCwgMioqNSwgMioqMywgMioqMV0pCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3Qoc2VsZik6CisgICAgICAgIGJ5dGVzcGVjID0gKAorICAgICAgICAgICgnQicsIGxhbWJkYSBleDogbGlzdChleC50b2J5dGVzKCkpKSwKKyAgICAgICAgICAoJ2InLCBsYW1iZGEgZXg6IFt4LTI1NiBpZiB4ID4gMTI3IGVsc2UgeCBmb3IgeCBpbiBsaXN0KGV4LnRvYnl0ZXMoKSldKSwKKyAgICAgICAgICAoJ2MnLCBsYW1iZGEgZXg6IFtieXRlcyhjaHIoeCksICdsYXRpbi0xJykgZm9yIHggaW4gbGlzdChleC50b2J5dGVzKCkpXSksCisgICAgICAgICkKKworICAgICAgICBkZWYgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpOgorICAgICAgICAgICAgc3Jjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmbXQpCisgICAgICAgICAgICBmb3IgYnl0ZWZtdCwgdG9fYnl0ZWxpc3QgaW4gYnl0ZXNwZWM6CisKKyAgICAgICAgICAgICAgICBtMiA9IG0uY2FzdChieXRlZm10KQorICAgICAgICAgICAgICAgIGxzdCA9IHRvX2J5dGVsaXN0KGV4KQorICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWJ5dGVmbXQsIHJlYWRvbmx5PTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMzEqc3Jjc2l6ZV0sIHN0cmlkZXM9KDEsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgICAgICAgICBtMyA9IG0yLmNhc3QoZm10KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTMsIGV4KQorICAgICAgICAgICAgICAgIGxzdCA9IGV4LnRvbGlzdCgpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTMsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT1zcmNzaXplLCBmbXQ9Zm10LCByZWFkb25seT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzMxXSwgc3RyaWRlcz0oc3Jjc2l6ZSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QsIGNhc3Q9VHJ1ZSkKKworICAgICAgICAjIGNhc3QgZnJvbSBuZGltID0gMCB0byBuZGltID0gMQorICAgICAgICBzcmNzaXplID0gc3RydWN0LmNhbGNzaXplKCdJJykKKyAgICAgICAgZXggPSBuZGFycmF5KDksIHNoYXBlPVtdLCBmb3JtYXQ9J0knKQorICAgICAgICBkZXN0aXRlbXMsIGRlc3RzaGFwZSA9IGNhc3RfaXRlbXMoZXgsICdCJywgMSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG0yID0gbS5jYXN0KCdCJykKKyAgICAgICAgc2VsZi52ZXJpZnkobTIsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PSdCJywgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1kZXN0c2hhcGUsIHN0cmlkZXM9KDEsKSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWRlc3RpdGVtcywgY2FzdD1UcnVlKQorCisgICAgICAgICMgY2FzdCBmcm9tIG5kaW0gPSAxIHRvIG5kaW0gPSAwCisgICAgICAgIGRlc3RzaXplID0gc3RydWN0LmNhbGNzaXplKCdJJykKKyAgICAgICAgZXggPSBuZGFycmF5KFs5XSpkZXN0c2l6ZSwgc2hhcGU9W2Rlc3RzaXplXSwgZm9ybWF0PSdCJykKKyAgICAgICAgZGVzdGl0ZW1zLCBkZXN0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCAnSScsIGRlc3RzaXplLCBzaGFwZT1bXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG0yID0gbS5jYXN0KCdJJywgc2hhcGU9W10pCisgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPWRlc3RzaXplLCBmbXQ9J0knLCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTAsIHNoYXBlPSgpLCBzdHJpZGVzPSgpLAorICAgICAgICAgICAgICAgICAgICBsc3Q9ZGVzdGl0ZW1zLCBjYXN0PVRydWUpCisKKyAgICAgICAgIyBhcnJheS5hcnJheTogcm91bmR0cmlwIHRvL2Zyb20gYnl0ZXMKKyAgICAgICAgZm9yIGZtdCwgaXRlbXMsIF8gaW4gaXRlcl9mb3JtYXQoMzEsICdhcnJheScpOgorICAgICAgICAgICAgZXggPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBpdGVyX3JvdW5kdHJpcChleCwgbSwgaXRlbXMsIGZtdCkKKworICAgICAgICAjIG5kYXJyYXk6IHJvdW5kdHJpcCB0by9mcm9tIGJ5dGVzCisgICAgICAgIGZvciBmbXQsIGl0ZW1zLCBfIGluIGl0ZXJfZm9ybWF0KDMxLCAnbWVtb3J5dmlldycpOgorICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bMzFdLCBmb3JtYXQ9Zm10LCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICAgICAgaXRlcl9yb3VuZHRyaXAoZXgsIG0sIGl0ZW1zLCBmbXQpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2Nhc3RfMURfTkQoc2VsZik6CisgICAgICAgICMgQ2FzdCBiZXR3ZWVuIEMtY29udGlndW91cyBidWZmZXJzLiBBdCBsZWFzdCBvbmUgYnVmZmVyIG11c3QKKyAgICAgICAgIyBiZSAxRCwgYXQgbGVhc3Qgb25lIGZvcm1hdCBtdXN0IGJlICdjJywgJ2InIG9yICdCJy4KKyAgICAgICAgZm9yIF90c2hhcGUgaW4gZ2VuY2FzdHNoYXBlcygpOgorICAgICAgICAgICAgZm9yIGNoYXIgaW4gZm10ZGljdFsnQCddOgorICAgICAgICAgICAgICAgIHRmbXQgPSAoJycsICdAJylbcmFuZHJhbmdlKDIpXSArIGNoYXIKKyAgICAgICAgICAgICAgICB0c2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSh0Zm10KQorICAgICAgICAgICAgICAgIG4gPSBwcm9kKF90c2hhcGUpICogdHNpemUKKyAgICAgICAgICAgICAgICBvYmogPSAnbWVtb3J5dmlldycgaWYgaXNfYnl0ZV9mb3JtYXQodGZtdCkgZWxzZSAnYnl0ZWZtdCcKKyAgICAgICAgICAgICAgICBmb3IgZm10LCBpdGVtcywgXyBpbiBpdGVyX2Zvcm1hdChuLCBvYmopOgorICAgICAgICAgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZtdCkKKyAgICAgICAgICAgICAgICAgICAgc2hhcGUgPSBbbl0gaWYgbiA+IDAgZWxzZSBbXQorICAgICAgICAgICAgICAgICAgICB0c2hhcGUgPSBfdHNoYXBlICsgW3NpemVdCisKKyAgICAgICAgICAgICAgICAgICAgZXggPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1zaGFwZSwgZm9ybWF0PWZtdCkKKyAgICAgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgICAgICAgICAgICAgdGl0ZW1zLCB0c2hhcGUgPSBjYXN0X2l0ZW1zKGV4LCB0Zm10LCB0c2l6ZSwgc2hhcGU9dHNoYXBlKQorCisgICAgICAgICAgICAgICAgICAgIGlmIHRpdGVtcyBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLmNhc3QsIHRmbXQsIHRzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIHRpdGVtcyA9PSAnbmFuJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgTmFOcyBpbiBsaXN0cyBhcmUgYSByZWNpcGUgZm9yIHRyb3VibGUuCisKKyAgICAgICAgICAgICAgICAgICAgIyAxRCAtPiBORAorICAgICAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkodGl0ZW1zLCBzaGFwZT10c2hhcGUsIGZvcm1hdD10Zm10KQorCisgICAgICAgICAgICAgICAgICAgIG0yID0gbS5jYXN0KHRmbXQsIHNoYXBlPXRzaGFwZSkKKyAgICAgICAgICAgICAgICAgICAgbmRpbSA9IGxlbih0c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBuZC5zdHJpZGVzCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IG5kLnRvbGlzdCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyaWZ5KG0yLCBvYmo9ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPXRzaXplLCBmbXQ9dGZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT10c2hhcGUsIHN0cmlkZXM9c3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCwgY2FzdD1UcnVlKQorCisgICAgICAgICAgICAgICAgICAgICMgTkQgLT4gMUQKKyAgICAgICAgICAgICAgICAgICAgbTMgPSBtMi5jYXN0KGZtdCkKKyAgICAgICAgICAgICAgICAgICAgbTQgPSBtMi5jYXN0KGZtdCwgc2hhcGU9c2hhcGUpCisgICAgICAgICAgICAgICAgICAgIG5kaW0gPSBsZW4oc2hhcGUpCisgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMgPSBleC5zdHJpZGVzCisgICAgICAgICAgICAgICAgICAgIGxzdCA9IGV4LnRvbGlzdCgpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTMsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJpZnkobTQsIG9iaj1leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9c2l6ZSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRpbT1uZGltLCBzaGFwZT1zaGFwZSwgc3RyaWRlcz1zdHJpZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0LCBjYXN0PVRydWUpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3RvbGlzdChzZWxmKToKKworICAgICAgICAjIE1vc3QgdG9saXN0KCkgdGVzdHMgYXJlIGluIHNlbGYudmVyaWZ5KCkgZXRjLgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnaCcsIGxpc3QocmFuZ2UoLTYsIDYpKSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisKKyAgICAgICAgYSA9IGFbMjo6M10KKyAgICAgICAgbSA9IG1bMjo6M10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMiozKjUqNyoxMSkpLCBzaGFwZT1bMTEsMiw3LDMsNV0sIGZvcm1hdD0nTCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGV4LnRvbGlzdCgpKQorCisgICAgICAgIGV4ID0gbmRhcnJheShbKDIsIDUpLCAoNywgMTEpXSwgc2hhcGU9WzJdLCBmb3JtYXQ9J2xoJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0udG9saXN0KQorCisgICAgICAgIGV4ID0gbmRhcnJheShbYicxMjM0NSddLCBzaGFwZT1bMV0sIGZvcm1hdD0icyIpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgICAgICBleCA9IG5kYXJyYXkoW2IiYSIsYiJiIixiImMiLGIiZCIsYiJlIixiImYiXSwgc2hhcGU9WzIsM10sIGZvcm1hdD0ncycpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLnRvbGlzdCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVwcihzZWxmKToKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYnl0ZWFycmF5KDkpKQorICAgICAgICByID0gbS5fX3JlcHJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoIjxtZW1vcnkiKSkKKworICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICByID0gbS5fX3JlcHJfXygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoIjxyZWxlYXNlZCIpKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19zZXF1ZW5jZShzZWxmKToKKworICAgICAgICBmb3IgZm10IGluICgnZCcsICdmJyk6CisgICAgICAgICAgICBpbmYgPSBmbG9hdCgzZTQwMCkKKyAgICAgICAgICAgIGV4ID0gYXJyYXkuYXJyYXkoZm10LCBbMS4wLCBpbmYsIDMuMF0pCisgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oMS4wLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbig1ZTcwMCwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oMy4wLCBtKQorCisgICAgICAgIGV4ID0gbmRhcnJheSg5LjAsIFtdLCBmb3JtYXQ9J2YnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAiOS4wIGluIG0iLCBsb2NhbHMoKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfaW5kZXgoc2VsZik6CisKKyAgICAgICAgIyBuZGltID0gMAorICAgICAgICBleCA9IG5kYXJyYXkoMTIuNSwgc2hhcGU9W10sIGZvcm1hdD0nZCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAxMi41KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLi4uXSwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy4uLl0sIGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisKKyAgICAgICAgZXggPSBuZGFycmF5KCgxLDIsMyksIHNoYXBlPVtdLCBmb3JtYXQ9J2lpaScpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKKworICAgICAgICAjIHJhbmdlCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDcpKSwgc2hhcGU9WzddLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgMioqNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX2dldGl0ZW1fXywgMi4wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIDAuMCkKKworICAgICAgICAjIG91dCBvZiBib3VuZHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX2dldGl0ZW1fXywgLTgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDgpCisKKyAgICAgICAgIyBOb3QgaW1wbGVtZW50ZWQ6IG11bHRpZGltZW5zaW9uYWwgc3ViLXZpZXdzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLDRdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfYXNzaWduKHNlbGYpOgorCisgICAgICAgICMgbmRpbSA9IDAKKyAgICAgICAgZXggPSBuZGFycmF5KDEyLjUsIHNoYXBlPVtdLCBmb3JtYXQ9J2YnLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIG1bKCldID0gMjIuNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bKCldLCAyMi41KQorICAgICAgICBtWy4uLl0gPSAyMy41CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDIzLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMCwgMjQuNykKKworICAgICAgICAjIHJlYWQtb25seQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMiwgMTApCisKKyAgICAgICAgIyByYW5nZQorICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSg3KSksIHNoYXBlPVs3XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19zZXRpdGVtX18sIDIqKjY0LCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19zZXRpdGVtX18sIDIuMCwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgMC4wLCAxMSkKKworICAgICAgICAjIG91dCBvZiBib3VuZHMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5fX3NldGl0ZW1fXywgLTgsIDIwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLl9fc2V0aXRlbV9fLCA4LCAyNSkKKworICAgICAgICAjIHBhY2tfc2luZ2xlKCkgc3VjY2VzczoKKyAgICAgICAgZm9yIGZtdCBpbiBmbXRkaWN0WydAJ106CisgICAgICAgICAgICBpZiBmbXQgPT0gJ2MnIG9yIGZtdCA9PSAnPyc6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGV4ID0gbmRhcnJheShbMSwyLDNdLCBzaGFwZT1bM10sIGZvcm1hdD1mbXQsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgICAgICBpID0gcmFuZHJhbmdlKC0zLCAzKQorICAgICAgICAgICAgbVtpXSA9IDgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVtpXSwgOCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVtpXSwgZXhbaV0pCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiJzEnLCBiJzInLCBiJzMnXSwgc2hhcGU9WzNdLCBmb3JtYXQ9J2MnLAorICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBtWzJdID0gYic5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIGInOScpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtUcnVlLCBGYWxzZSwgVHJ1ZV0sIHNoYXBlPVszXSwgZm9ybWF0PSc/JywKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKyAgICAgICAgbVsxXSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzFdLCBUcnVlKQorCisgICAgICAgICMgcGFja19zaW5nbGUoKSBleGNlcHRpb25zOgorICAgICAgICBuZCA9IG5kYXJyYXkoW2IneCddLCBzaGFwZT1bMV0sIGZvcm1hdD0nYycsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxMDApCisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIwKSksIHNoYXBlPVsxLDIsMyw0LDVdLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIGZvciBmbXQsIF9yYW5nZSBpbiBmbXRkaWN0WydAJ10uaXRlbXMoKToKKyAgICAgICAgICAgIGlmIChmbXQgPT0gJz8nKTogIyBQeU9iamVjdF9Jc1RydWUoKSBhY2NlcHRzIGFueXRoaW5nCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIGZtdCA9PSAnYyc6ICMgc3BlY2lhbCBjYXNlIHRlc3RlZCBhYm92ZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtMiA9IG0xLmNhc3QoZm10KQorICAgICAgICAgICAgbG8sIGhpID0gX3JhbmdlCisgICAgICAgICAgICBpZiBmbXQgPT0gJ2QnIG9yIGZtdCA9PSAnZic6CisgICAgICAgICAgICAgICAgbG8sIGhpID0gLTIqKjEwMjQsIDIqKjEwMjQKKyAgICAgICAgICAgIGlmIGZtdCAhPSAnUCc6ICMgUHlMb25nX0FzVm9pZFB0cigpIGFjY2VwdHMgbmVnYXRpdmUgbnVtYmVycworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBsby0xKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbTIuX19zZXRpdGVtX18sIDAsICJ4eXoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbTIuX19zZXRpdGVtX18sIDAsIGhpKQorCisgICAgICAgICMgaW52YWxpZCBpdGVtCisgICAgICAgIG0yID0gbTEuY2FzdCgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0yLl9fc2V0aXRlbV9fLCAwLCBiJ1x4ZmZceGZmJykKKworICAgICAgICAjIGZvcm1hdCBub3QgaW1wbGVtZW50ZWQKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMSkpLCBzaGFwZT1bMV0sIGZvcm1hdD0ieEwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoZXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEpCisKKyAgICAgICAgZXggPSBuZGFycmF5KFtiJzEyMzQ1J10sIHNoYXBlPVsxXSwgZm9ybWF0PSJzIiwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLCAwLCAxKQorCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHN1Yi12aWV3cworICAgICAgICBleCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMyw0XSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIFsyLCAzXSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfc2xpY2Uoc2VsZik6CisKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGV4KQorCisgICAgICAgICMgemVybyBzdGVwCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19nZXRpdGVtX18sIHNsaWNlKDAsMiwwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX3NldGl0ZW1fXywgc2xpY2UoMCwyLDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgaW52YWxpZCBzbGljZSBrZXkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fZ2V0aXRlbV9fLCAoKSkKKworICAgICAgICAjIG11bHRpZGltZW5zaW9uYWwgc2xpY2VzCisgICAgICAgIGV4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fZ2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwyLDEpLCBzbGljZSgwLDIsMSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBtLl9fc2V0aXRlbV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpY2UoMCwyLDEpLCBzbGljZSgwLDIsMSkpLCBieXRlYXJyYXkoWzEsMl0pKQorCisgICAgICAgICMgaW52YWxpZCBzbGljZSB0dXBsZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0uX19nZXRpdGVtX18sIChzbGljZSgwLDIsMSksIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAoc2xpY2UoMCwyLDEpLCB7fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVhcnJheShbMSwyXSkpCisKKyAgICAgICAgIyBydmFsdWUgaXMgbm90IGFuIGV4cG9ydGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5fX3NldGl0ZW1fXywgc2xpY2UoMCwxLDEpLCBbMV0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cyBzbGljZSBhc3NpZ25tZW50CisgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVstMV0sIG9mZnNldD0xMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEV8ZmxhZ3MpCisgICAgICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMjQpKSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMl0sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGV4MSkKKyAgICAgICAgICAgIG0yID0gbWVtb3J5dmlldyhleDIpCisKKyAgICAgICAgICAgIGV4MVsyOjVdID0gZXgxWzI6NV0KKyAgICAgICAgICAgIG0xWzI6NV0gPSBtMlsyOjVdCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgZXgxWzE6M11bOjotMV0gPSBleDJbMDoyXVs6OjFdCisgICAgICAgICAgICBtMVsxOjNdWzo6LTFdID0gbTJbMDoyXVs6OjFdCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEsIGV4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTIsIGV4MikKKworICAgICAgICAgICAgZXgxWzQ6MTotMl1bOjotMV0gPSBleDFbMTo0OjJdWzo6MV0KKyAgICAgICAgICAgIG0xWzQ6MTotMl1bOjotMV0gPSBtMVsxOjQ6Ml1bOjoxXQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLCBleDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0yLCBleDIpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2FycmF5KHNlbGYpOgorCisgICAgICAgIGRlZiBjbXB0ZXN0KHRlc3RjYXNlLCBhLCBiLCBtLCBzaW5nbGVpdGVtKToKKyAgICAgICAgICAgIGZvciBpLCBfIGluIGVudW1lcmF0ZShhKToKKyAgICAgICAgICAgICAgICBhaSA9IGFbaV0KKyAgICAgICAgICAgICAgICBtaSA9IG1baV0KKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhaSwgbWkpCisgICAgICAgICAgICAgICAgYVtpXSA9IHNpbmdsZWl0ZW0KKyAgICAgICAgICAgICAgICBpZiBzaW5nbGVpdGVtICE9IGFpOgorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnROb3RFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGEsIG0pCisgICAgICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGEsIGIpCisgICAgICAgICAgICAgICAgbVtpXSA9IHNpbmdsZWl0ZW0KKyAgICAgICAgICAgICAgICB0ZXN0Y2FzZS5hc3NlcnRFcXVhbChhLCBtKQorICAgICAgICAgICAgICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKGIsIG0pCisgICAgICAgICAgICAgICAgYVtpXSA9IGFpCisgICAgICAgICAgICAgICAgbVtpXSA9IG1pCisKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgNSk6CisgICAgICAgICAgICBmb3IgZm10LCBpdGVtcywgc2luZ2xlaXRlbSBpbiBpdGVyX2Zvcm1hdChuLCAnYXJyYXknKToKKyAgICAgICAgICAgICAgICBmb3IgbHNsaWNlIGluIGdlbnNsaWNlcyhuKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJzbGljZSBpbiBnZW5zbGljZXMobik6CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhcnJheS5hcnJheShmbXQsIGl0ZW1zKQorICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGFycmF5LmFycmF5KGZtdCwgaXRlbXMpCisgICAgICAgICAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhiKQorCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGEpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIGEudG9saXN0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBhLnRvYnl0ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0pLCBsZW4oYSkpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNtcHRlc3Qoc2VsZiwgYSwgYiwgbSwgc2luZ2xlaXRlbSkKKworICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfZXJyID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9yZXNpemUgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWwgPSBhW2xzbGljZV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhciA9IGFbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbbHNsaWNlXSA9IGFbcnNsaWNlXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVfcmVzaXplID0gbGVuKGFsKSAhPSBsZW4oYXIpCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfZXJyID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVtsc2xpY2VdID0gbVtyc2xpY2VdCisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lcnIgPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXZlX3Jlc2l6ZTogIyBtZW1vcnl2aWV3IGNhbm5vdCBjaGFuZ2Ugc2hhcGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1fZXJyLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBtX2VyciBvciBhcnJheV9lcnI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtX2VyciwgYXJyYXlfZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBhLnRvbGlzdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGEudG9ieXRlcygpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcHRlc3Qoc2VsZiwgYSwgYiwgbSwgc2luZ2xlaXRlbSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9zcGVjaWFsX2Nhc2VzKHNlbGYpOgorCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgnTCcsIFsxLCAyLCAzXSkKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdMJywgWzEsIDIsIDddKQorCisgICAgICAgICMgT3JkZXJpbmcgY29tcGFyaXNvbnMgcmFpc2U6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIGZvciBhdHRyIGluICgnX19sdF9fJywgJ19fbGVfXycsICdfX2d0X18nLCAnX19nZV9fJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGdldGF0dHIodiwgYXR0cikodyksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKGEsIGF0dHIpKHYpLCBOb3RJbXBsZW1lbnRlZCkKKworICAgICAgICAjIFJlbGVhc2VkIHZpZXdzIGNvbXBhcmUgZXF1YWwgdG8gdGhlbXNlbHZlczoKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgdi5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgdikKKworICAgICAgICB2ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhhKQorICAgICAgICB3LnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKworICAgICAgICAjIE9wZXJhbmQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgcHJvdG9jb2w6CisgICAgICAgIHYgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgWzEsIDIsIDNdKQorCisgICAgICAgICMgTmFOcworICAgICAgICBuZCA9IG5kYXJyYXkoWygwLCAwKV0sIHNoYXBlPVsxXSwgZm9ybWF0PSdsIHggZCB4JywgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIG5kWzBdID0gKC0xLCBmbG9hdCgnbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobWVtb3J5dmlldyhuZCksIG5kKQorCisgICAgICAgICMgRGVwZW5kcyBvbiBpc3N1ZSAjMTU2MjU6IHRoZSBzdHJ1Y3QgbW9kdWxlIGRvZXMgbm90IHVuZGVyc3RhbmQgJ3UnLgorICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ3UnLCAneHl6JykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIGEpCisKKyAgICAgICAgIyBTb21lIGN0eXBlcyBmb3JtYXQgc3RyaW5ncyBhcmUgdW5rbm93biB0byB0aGUgc3RydWN0IG1vZHVsZS4KKyAgICAgICAgaWYgY3R5cGVzOgorICAgICAgICAgICAgIyBmb3JtYXQ6ICJUez5sOng6Pmw6eTp9IgorICAgICAgICAgICAgY2xhc3MgQkVQb2ludChjdHlwZXMuQmlnRW5kaWFuU3RydWN0dXJlKToKKyAgICAgICAgICAgICAgICBfZmllbGRzXyA9IFsoIngiLCBjdHlwZXMuY19sb25nKSwgKCJ5IiwgY3R5cGVzLmNfbG9uZyldCisgICAgICAgICAgICBwb2ludCA9IEJFUG9pbnQoMTAwLCAyMDApCisgICAgICAgICAgICBhID0gbWVtb3J5dmlldyhwb2ludCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHBvaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBwb2ludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocG9pbnQsIGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBhLnRvbGlzdCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9uZGltX3plcm8oc2VsZik6CisKKyAgICAgICAgbmQxID0gbmRhcnJheSgxNzI5LCBzaGFwZT1bXSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoMTcyOSwgc2hhcGU9W10sIGZvcm1hdD0nTCcsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMiwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmQxLCB3KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uodi5fX25lX18odykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uody5fX25lX18odikpCisKKyAgICAgICAgd1soKV0gPSAxNzI4CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG5kMSwgdykKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYuX19lcV9fKHcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHcuX19lcV9fKHYpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsxMl0sIGZsYWdzPU5EX1dSSVRBQkxFfE5EX1BJTCkKKyAgICAgICAgZXggPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzEyXSwgZmxhZ3M9TkRfV1JJVEFCTEV8TkRfUElMKQorICAgICAgICBtID0gbWVtb3J5dmlldyhleCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBtWzldID0gMTAwCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobSwgbmQpCisKKyAgICAgICAgIyBzdHJ1Y3QgbW9kdWxlOiBlcXVhbAorICAgICAgICBuZDEgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0nTGY1cycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoKDE3MjksIDEuMiwgYicxMjM0NScpLCBzaGFwZT1bXSwgZm9ybWF0PSdoZjVzJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCB2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZDIsIHYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kMSwgdykKKworICAgICAgICAjIHN0cnVjdCBtb2R1bGU6IG5vdCBlcXVhbAorICAgICAgICBuZDEgPSBuZGFycmF5KCgxNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0nTGY1cycpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoKC0xNzI5LCAxLjIsIGInMTIzNDUnKSwgc2hhcGU9W10sIGZvcm1hdD0naGY1cycsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfV1JJVEFCTEUpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgdikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmQyLCB2KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZDEsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9uZGltX29uZShzZWxmKToKKworICAgICAgICAjIGNvbnRpZ3VvdXMKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIGNvbnRpZ3VvdXMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPGknKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9Jz5oJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIG5vbi1jb250aWd1b3VzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWy01MjksIC02MjUsIC03MjldLCBzaGFwZT1bM10sIGZvcm1hdD0nQGgnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstNTI5LCA1NzYsIC02MjUsIDY3NiwgLTcyOV0sIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyWzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1s6OjJdLCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgd1s6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbOjotMV0sIHdbOjotMl0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9JyFoJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPGwnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMsIHN1Ym9mZnNldHMKKyAgICAgICAgbmQxID0gbmRhcnJheShbLTUyOSwgLTYyNSwgLTcyOV0sIHNoYXBlPVszXSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy01MjksIDU3NiwgLTYyNSwgNjc2LCAtNzI5XSwgc2hhcGU9WzVdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUwpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyWzo6Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1s6OjJdLCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgd1s6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZbOjotMV0sIHdbOjotMl0pCisKKyAgICAgICAgIyBub24tY29udGlndW91cywgc3Vib2Zmc2V0cywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFstNTI5LCAtNjI1LCAtNzI5XSwgc2hhcGU9WzNdLCBmb3JtYXQ9J2ggIDBjJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjldLCBzaGFwZT1bNV0sIGZvcm1hdD0nPiAgaCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMls6OjJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdbOjoyXSwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHdbOjoyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2Wzo6LTFdLCB3Wzo6LTJdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX3plcm9fc2hhcGUoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KFs5MDAsIDk2MV0sIHNoYXBlPVswXSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWy05MDAsIC05NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5NjFdLCBzaGFwZT1bMF0sIGZvcm1hdD0nPSBoMGMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KFstOTAwLCAtOTYxXSwgc2hhcGU9WzBdLCBmb3JtYXQ9J0AgICBpJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV96ZXJvX3N0cmlkZXMoc2VsZik6CisKKyAgICAgICAgIyB6ZXJvIHN0cmlkZXMKKyAgICAgICAgbmQxID0gbmRhcnJheShbOTAwLCA5MDAsIDkwMCwgOTAwXSwgc2hhcGU9WzRdLCBmb3JtYXQ9J0BMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbOTAwXSwgc2hhcGU9WzRdLCBzdHJpZGVzPVswXSwgZm9ybWF0PSdMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHplcm8gc3RyaWRlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoOTAwLCA5MDApXSo0LCBzaGFwZT1bNF0sIGZvcm1hdD0nQCBMaScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWyg5MDAsIDkwMCldLCBzaGFwZT1bNF0sIHN0cmlkZXM9WzBdLCBmb3JtYXQ9JyFMICBoJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9yYW5kb21fZm9ybWF0cyhzZWxmKToKKworICAgICAgICAjIHJhbmRvbSBzaW5nbGUgY2hhcmFjdGVyIG5hdGl2ZSBmb3JtYXRzCisgICAgICAgIG4gPSAxMAorICAgICAgICBmb3IgY2hhciBpbiBmbXRkaWN0WydAbSddOgorICAgICAgICAgICAgZm10LCBpdGVtcywgc2luZ2xlaXRlbSA9IHJhbmRpdGVtcyhuLCAnbWVtb3J5dmlldycsICdAJywgY2hhcikKKyAgICAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgTkRfUElMKToKKyAgICAgICAgICAgICAgICBuZCA9IG5kYXJyYXkoaXRlbXMsIHNoYXBlPVtuXSwgZm9ybWF0PWZtdCwgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgICAgICAgICAgICAgIG5kID0gbmRbOjotM10KKyAgICAgICAgICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorCisgICAgICAgICMgcmFuZG9tIGZvcm1hdHMKKyAgICAgICAgbiA9IDEwCisgICAgICAgIGZvciBfIGluIHJhbmdlKDEwMCk6CisgICAgICAgICAgICBmbXQsIGl0ZW1zLCBzaW5nbGVpdGVtID0gcmFuZGl0ZW1zKG4pCisgICAgICAgICAgICBmb3IgZmxhZ3MgaW4gKDAsIE5EX1BJTCk6CisgICAgICAgICAgICAgICAgbmQgPSBuZGFycmF5KGl0ZW1zLCBzaGFwZT1bbl0sIGZvcm1hdD1mbXQsIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisKKyAgICAgICAgICAgICAgICBuZCA9IG5kWzo6LTNdCisgICAgICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY29tcGFyZV9tdWx0aWRpbV9jKHNlbGYpOgorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgtMTUsIDE1KSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgwLCAzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQGgnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygwLCAxLCAyKV0qMzAsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc9ZiBxIHh4TCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygtMS4yLCAxLCAyKV0qMzAsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc8IGYgMlEnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgQy1jb250aWd1b3VzLCBkaWZmZXJlbnQgc2hhcGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygwLCAxLCAyKV0qMjEsIHNoYXBlPVszLCA3XSwgZm9ybWF0PSchIGIgQiB4TCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygwLCAxLCAyKV0qMjEsIHNoYXBlPVs3LCAzXSwgZm9ybWF0PSc9IFF4IGwgeHhMJykKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEMtY29udGlndW91cywgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J0wnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2wnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX2ZvcnRyYW4oc2VsZik6CisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMCwgMzApKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgRm9ydHJhbi1jb250aWd1b3VzLCBkaWZmZXJlbnQgdmFsdWVzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWygyKio2NC0xLCAtMSldKjYsIHNoYXBlPVsyLCAzXSwgZm9ybWF0PSc9UXEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWygtMSwgMioqNjQtMSldKjYsIHNoYXBlPVsyLCAzXSwgZm9ybWF0PSc9cVEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKC0xNSwgMTUpKSwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBGb3J0cmFuLWNvbnRpZ3VvdXMsIGRpZmZlcmVudCBzaGFwZSwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMiwgMywgNV0sIGZvcm1hdD0nMGxsJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoLTE1LCAxNSkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nbCcsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIEZvcnRyYW4tY29udGlndW91cywgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BoJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDIsIDNdLCBmb3JtYXQ9J0BiJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX21peGVkKHNlbGYpOgorCisgICAgICAgICMgbWl4ZWQgQy9Gb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgbHN0MSA9IGxpc3QocmFuZ2UoLTE1LCAxNSkpCisgICAgICAgIGxzdDIgPSB0cmFuc3Bvc2UobHN0MSwgWzMsIDIsIDVdKQorICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAbCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobHN0Miwgc2hhcGU9WzMsIDIsIDVdLCBmb3JtYXQ9J2wnLCBmbGFncz1ORF9GT1JUUkFOKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIG1peGVkIEMvRm9ydHJhbiBjb250aWd1b3VzLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGxzdDEgPSBbKC0zLjMsIC0yMiwgYid4JyldKjMwCisgICAgICAgIGxzdDFbNV0gPSAoLTIuMiwgLTIyLCBiJ3gnKQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKyAgICAgICAgbmQxID0gbmRhcnJheShsc3QxLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nZCBiIGMnKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdkIGggYycsIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IHZhbHVlcywgbm9uLWNvbnRpZ3VvdXMKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDQwKSksIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSdASScpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisgICAgICAgIGV4MiA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nSScpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHNhbWUgdmFsdWVzLCBub24tY29udGlndW91cywgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMioqMzEtMSwgLTIqKjMxKV0qMjIsIHNoYXBlPVsxMSwgMl0sIGZvcm1hdD0nPWlpJykKKyAgICAgICAgbmQxID0gZXgxWzM6MTotMSwgOjotMl0KKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjMxLTEsIC0yKiozMSldKjIyLCBzaGFwZT1bMTEsIDJdLCBmb3JtYXQ9Jz5paScpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2InKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdiJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBkaWZmZXJlbnQgc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdCJykKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgZGlmZmVyZW50IGZvcm1hdCwgc3RydWN0IG1vZHVsZQorICAgICAgICBleDEgPSBuZGFycmF5KFsoMiwgYicxMjMnKV0qMzAsIHNoYXBlPVs1LCAzLCAyXSwgZm9ybWF0PSdiM3MnKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKyAgICAgICAgbmQyID0gbmRhcnJheShbKDIsIGInMTIzJyldKjMwLCBzaGFwZT1bNSwgMywgMl0sIGZvcm1hdD0naTNzJykKKyAgICAgICAgbmQyID0gZXgyWzE6MzosIDo6LTJdCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1femVyb19zaGFwZShzZWxmKToKKworICAgICAgICAjIHplcm9zIGluIHNoYXBlCisgICAgICAgIG5kMSA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMCwgMywgMl0sIGZvcm1hdD0naScpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bNSwgMCwgMl0sIGZvcm1hdD0nQGknKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgemVyb3MgaW4gc2hhcGUsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgbmQxID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVswLCAzLCAyXSwgZm9ybWF0PSdpJykKKyAgICAgICAgbmQyID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVs1LCAwLCAyXSwgZm9ybWF0PSdAaScpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbXVsdGlkaW1femVyb19zdHJpZGVzKHNlbGYpOgorCisgICAgICAgICMgemVybyBzdHJpZGVzCisgICAgICAgIG5kMSA9IG5kYXJyYXkoWzkwMF0qODAsIHNoYXBlPVs0LCA1LCA0XSwgZm9ybWF0PSdATCcpCisgICAgICAgIG5kMiA9IG5kYXJyYXkoWzkwMF0sIHNoYXBlPVs0LCA1LCA0XSwgc3RyaWRlcz1bMCwgMCwgMF0sIGZvcm1hdD0nTCcpCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi50b2xpc3QoKSwgdy50b2xpc3QoKSkKKworICAgICAgICAjIHplcm8gc3RyaWRlcywgc3RydWN0IG1vZHVsZQorICAgICAgICBuZDEgPSBuZGFycmF5KFsoMSwgMildKjEwLCBzaGFwZT1bMiwgNV0sIGZvcm1hdD0nPWxRJykKKyAgICAgICAgbmQyID0gbmRhcnJheShbKDEsIDIpXSwgc2hhcGU9WzIsIDVdLCBzdHJpZGVzPVswLCAwXSwgZm9ybWF0PSc8bFEnKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCB3KQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19jb21wYXJlX211bHRpZGltX3N1Ym9mZnNldHMoc2VsZik6CisKKyAgICAgICAgIyBzdWJvZmZzZXRzCisgICAgICAgIGV4MSA9IG5kYXJyYXkobGlzdChyYW5nZSg0MCkpLCBzaGFwZT1bNSwgOF0sIGZvcm1hdD0nQEknKQorICAgICAgICBuZDEgPSBleDFbMzoxOi0xLCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoNDApKSwgc2hhcGU9WzUsIDhdLCBmb3JtYXQ9J0knLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6MSwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKDIqKjY0LTEsIC0xKV0qNDAsIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSc9UXEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBleDFbMl1bN10gPSAoMSwgLTIpCisgICAgICAgIG5kMSA9IGV4MVszOjE6LTEsIDo6LTJdCisKKyAgICAgICAgZXgyID0gbmRhcnJheShbKDIqKjY0LTEsIC0xKV0qNDAsIHNoYXBlPVs1LCA4XSwgZm9ybWF0PSc+UXEnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgZXgyWzJdWzddID0gKDEsIC0yKQorICAgICAgICBuZDIgPSBleDJbMTozOjEsIDo6LTJdCisKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBzaGFwZQorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzIsIDMsIDVdLCBmb3JtYXQ9J2InLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQxID0gZXgxWzE6MzosIDo6LTJdCisgICAgICAgIG5kMiA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nYicpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgZGlmZmVyZW50IHNoYXBlLCBzdHJ1Y3QgbW9kdWxlCisgICAgICAgIGV4MSA9IG5kYXJyYXkoWygyKio4LTEsIC0xKV0qNDAsIHNoYXBlPVsyLCAzLCA1XSwgZm9ybWF0PSdCYicsCisgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9TkRfUElMfE5EX1dSSVRBQkxFKQorICAgICAgICBuZDEgPSBleDFbMToyOiwgOjotMl0KKworICAgICAgICBleDIgPSBuZGFycmF5KFsoMioqOC0xLCAtMSldKjQwLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nQmInKQorICAgICAgICBuZDIgPSBleDJbMToyOiwgOjotMl0KKworICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgbmQyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHcsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCB3KQorCisgICAgICAgICMgc3Vib2Zmc2V0cywgZGlmZmVyZW50IGZvcm1hdAorICAgICAgICBleDEgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J2knLCBmbGFncz1ORF9QSUwpCisgICAgICAgIG5kMSA9IGV4MVsxOjM6LCA6Oi0yXQorICAgICAgICBleDIgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzUsIDMsIDJdLCBmb3JtYXQ9J0BJJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBleDJbMTozOiwgOjotMl0KKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIHN1Ym9mZnNldHMsIGRpZmZlcmVudCBmb3JtYXQsIHN0cnVjdCBtb2R1bGUKKyAgICAgICAgZXgxID0gbmRhcnJheShbKGInaGVsbG8nLCBiJycsIDEpXSoyNywgc2hhcGU9WzMsIDMsIDNdLCBmb3JtYXQ9JzVzMHNQJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9QSUx8TkRfV1JJVEFCTEUpCisgICAgICAgIGV4MVsxXVsyXVsyXSA9IChiJ3N1c2hpJywgYicnLCAxKQorICAgICAgICBuZDEgPSBleDFbMTozOiwgOjotMl0KKworICAgICAgICBleDIgPSBuZGFycmF5KFsoYidoZWxsbycsIGInJywgMSldKjI3LCBzaGFwZT1bMywgMywgM10sIGZvcm1hdD0nNXMwc1AnLAorICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1BJTHxORF9XUklUQUJMRSkKKyAgICAgICAgZXgxWzFdWzJdWzJdID0gKGInc3VzaGknLCBiJycsIDEpCisgICAgICAgIG5kMiA9IGV4MlsxOjM6LCA6Oi0yXQorCisgICAgICAgIHYgPSBtZW1vcnl2aWV3KG5kMSkKKyAgICAgICAgdyA9IG1lbW9yeXZpZXcobmQyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgbmQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcsIG5kMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodywgbmQxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHcpCisKKyAgICAgICAgIyBpbml0aWFsaXplIG1peGVkIEMvRm9ydHJhbiArIHN1Ym9mZnNldHMKKyAgICAgICAgbHN0MSA9IGxpc3QocmFuZ2UoLTE1LCAxNSkpCisgICAgICAgIGxzdDIgPSB0cmFuc3Bvc2UobHN0MSwgWzMsIDIsIDVdKQorICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSdAbCcsIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgbmQyID0gbmRhcnJheShsc3QyLCBzaGFwZT1bMywgMiwgNV0sIGZvcm1hdD0nbCcsIGZsYWdzPU5EX0ZPUlRSQU58TkRfUElMKQorICAgICAgICB2ID0gbWVtb3J5dmlldyhuZDEpCisgICAgICAgIHcgPSBtZW1vcnl2aWV3KG5kMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIG5kMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LCBuZDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgdykKKworICAgICAgICAjIGluaXRpYWxpemUgbWl4ZWQgQy9Gb3J0cmFuICsgc3Vib2Zmc2V0cywgc3RydWN0IG1vZHVsZQorICAgICAgICBsc3QxID0gWyhiJ3Nhc2hpbWknLCBiJ3NsaWNlZCcsIDIwLjA1KV0qMzAKKyAgICAgICAgbHN0MVsxMV0gPSAoYidyYW1lbicsIGInc3BpY3knLCA5LjQ1KQorICAgICAgICBsc3QyID0gdHJhbnNwb3NlKGxzdDEsIFszLCAyLCA1XSkKKworICAgICAgICBuZDEgPSBuZGFycmF5KGxzdDEsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc8IDEwcCA5cCBkJywgZmxhZ3M9TkRfUElMKQorICAgICAgICBuZDIgPSBuZGFycmF5KGxzdDIsIHNoYXBlPVszLCAyLCA1XSwgZm9ybWF0PSc+IDEwcCA5cCBkJywKKyAgICAgICAgICAgICAgICAgICAgICBmbGFncz1ORF9GT1JUUkFOfE5EX1BJTCkKKyAgICAgICAgdiA9IG1lbW9yeXZpZXcobmQxKQorICAgICAgICB3ID0gbWVtb3J5dmlldyhuZDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCBuZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodywgbmQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHcpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2NvbXBhcmVfbm90X2VxdWFsKHNlbGYpOgorCisgICAgICAgICMgaXRlbXMgbm90IGVxdWFsCisgICAgICAgIGZvciBieXRlb3JkZXIgaW4gWyc9JywgJzwnLCAnPicsICchJ106CisgICAgICAgICAgICB4ID0gbmRhcnJheShbMioqNjNdKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sIGZvcm1hdD1ieXRlb3JkZXIrJ1EnKQorICAgICAgICAgICAgeSA9IG5kYXJyYXkoWzIqKjYzXSoxMjAsIHNoYXBlPVszLDUsMiwyLDJdLCBmb3JtYXQ9Ynl0ZW9yZGVyKydRJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICB5WzJdWzNdWzFdWzFdWzFdID0gMQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgICAgIGIgPSBtZW1vcnl2aWV3KHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIGIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGEsIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGIsIHgpCisKKyAgICAgICAgICAgIHggPSBuZGFycmF5KFsoMioqNjMsIDIqKjMxLCAyKioxNSldKjEyMCwgc2hhcGU9WzMsNSwyLDIsMl0sCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9Ynl0ZW9yZGVyKydRTEgnKQorICAgICAgICAgICAgeSA9IG5kYXJyYXkoWygyKio2MywgMioqMzEsIDIqKjE1KV0qMTIwLCBzaGFwZT1bMyw1LDIsMiwyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1ieXRlb3JkZXIrJ1FMSCcsIGZsYWdzPU5EX1dSSVRBQkxFfE5EX0ZPUlRSQU4pCisgICAgICAgICAgICB5WzJdWzNdWzFdWzFdWzFdID0gKDEsIDEsIDEpCisgICAgICAgICAgICBhID0gbWVtb3J5dmlldyh4KQorICAgICAgICAgICAgYiA9IG1lbW9yeXZpZXcoeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgYikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYSwgeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoYiwgeCkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfY2hlY2tfcmVsZWFzZWQoc2VsZik6CisKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdkJywgWzEuMSwgMi4yLCAzLjNdKQorCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0ucmVsZWFzZSgpCisKKyAgICAgICAgIyBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1lbW9yeXZpZXcsIG0pCisgICAgICAgICMgbWVtb3J5dmlldy5jYXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5jYXN0LCAnYycpCisgICAgICAgICMgZ2V0YnVmZmVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmRhcnJheSwgbSkKKyAgICAgICAgIyBtZW1vcnl2aWV3LnRvbGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0udG9saXN0KQorICAgICAgICAjIG1lbW9yeXZpZXcudG9ieXRlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0udG9ieXRlcykKKyAgICAgICAgIyBzZXF1ZW5jZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBldmFsLCAiMS4wIGluIG0iLCBsb2NhbHMoKSkKKyAgICAgICAgIyBzdWJzY3JpcHQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2dldGl0ZW1fXywgMCkKKyAgICAgICAgIyBhc3NpZ25tZW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG0uX19zZXRpdGVtX18sIDAsIDEpCisKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdvYmonLCAnbmJ5dGVzJywgJ3JlYWRvbmx5JywgJ2l0ZW1zaXplJywgJ2Zvcm1hdCcsICduZGltJywKKyAgICAgICAgICAgICAgICAgICAgICdzaGFwZScsICdzdHJpZGVzJywgJ3N1Ym9mZnNldHMnLCAnY19jb250aWd1b3VzJywKKyAgICAgICAgICAgICAgICAgICAgICdmX2NvbnRpZ3VvdXMnLCAnY29udGlndW91cycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS5fX2dldGF0dHJpYnV0ZV9fLCBhdHRyKQorCisgICAgICAgICMgcmljaGNvbXBhcmUKKyAgICAgICAgYiA9IGFycmF5LmFycmF5KCdkJywgWzEuMSwgMi4yLCAzLjNdKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbTIgPSBtZW1vcnl2aWV3KGIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgbTIpCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG0xLCBtMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChtMSwgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMSwgbTEpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3RvYnl0ZXMoc2VsZik6CisgICAgICAgICMgTWFueSBpbXBsaWNpdCB0ZXN0cyBhcmUgYWxyZWFkeSBpbiBzZWxmLnZlcmlmeSgpLgorCisgICAgICAgIHQgPSAoLTUyOSwgNTc2LCAtNjI1LCA2NzYsIC03MjkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KHQsIHNoYXBlPVs1XSwgZm9ybWF0PSdAaCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0XSwgc2hhcGU9WzFdLCBmb3JtYXQ9Jz5oUWlMbCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBuZC50b2J5dGVzKCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFt0IGZvciBfIGluIHJhbmdlKDEyKV0sIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nPWhRaUxsJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIG5kLnRvYnl0ZXMoKSkKKworICAgICAgICBuZCA9IG5kYXJyYXkoW3QgZm9yIF8gaW4gcmFuZ2UoMTIwKV0sIHNoYXBlPVs1LDIsMiwzLDJdLAorICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSc8aFFpTGwnKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgbmQudG9ieXRlcygpKQorCisgICAgICAgICMgVW5rbm93biBmb3JtYXRzIGFyZSBoYW5kbGVkOiB0b2J5dGVzKCkgcHVyZWx5IGRlcGVuZHMgb24gaXRlbXNpemUuCisgICAgICAgIGlmIGN0eXBlczoKKyAgICAgICAgICAgICMgZm9ybWF0OiAiVHs+bDp4Oj5sOnk6fSIKKyAgICAgICAgICAgIGNsYXNzIEJFUG9pbnQoY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJ4IiwgY3R5cGVzLmNfbG9uZyksICgieSIsIGN0eXBlcy5jX2xvbmcpXQorICAgICAgICAgICAgcG9pbnQgPSBCRVBvaW50KDEwMCwgMjAwKQorICAgICAgICAgICAgYSA9IG1lbW9yeXZpZXcocG9pbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudG9ieXRlcygpLCBieXRlcyhwb2ludCkpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X2dldF9jb250aWd1b3VzKHNlbGYpOgorICAgICAgICAjIE1hbnkgaW1wbGljaXQgdGVzdHMgYXJlIGFscmVhZHkgaW4gc2VsZi52ZXJpZnkoKS4KKworICAgICAgICAjIG5vIGJ1ZmZlciBpbnRlcmZhY2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRfY29udGlndW91cywge30sIFB5QlVGX1JFQUQsICdGJykKKworICAgICAgICAjIHdyaXRhYmxlIHJlcXVlc3QgdG8gcmVhZC1vbmx5IG9iamVjdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIGIneCcsIFB5QlVGX1dSSVRFLCAnQycpCisKKyAgICAgICAgIyB3cml0YWJsZSByZXF1ZXN0IHRvIG5vbi1jb250aWd1b3VzIG9iamVjdAorICAgICAgICBuZCA9IG5kYXJyYXkoWzEsIDIsIDNdLCBzaGFwZT1bMl0sIHN0cmlkZXM9WzJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0EnKQorCisgICAgICAgICMgc2NhbGFyLCByZWFkLW9ubHkgcmVxdWVzdCBmcm9tIHJlYWQtb25seSBleHBvcnRlcgorICAgICAgICBuZCA9IG5kYXJyYXkoOSwgc2hhcGU9KCksIGZvcm1hdD0iTCIpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsoKV0sIDkpCisKKyAgICAgICAgIyBzY2FsYXIsIHJlYWQtb25seSByZXF1ZXN0IGZyb20gd3JpdGFibGUgZXhwb3J0ZXIKKyAgICAgICAgbmQgPSBuZGFycmF5KDksIHNoYXBlPSgpLCBmb3JtYXQ9IkwiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgOSkKKworICAgICAgICAjIHNjYWxhciwgd3JpdGFibGUgcmVxdWVzdAorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbmRbKCldID0gOQorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgOSkKKworICAgICAgICAgICAgbVsoKV0gPSAxMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWygpXSwgMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kWygpXSwgMTApCisKKyAgICAgICAgIyB6ZXJvcyBpbiBzaGFwZQorICAgICAgICBuZCA9IG5kYXJyYXkoWzFdLCBzaGFwZT1bMF0sIGZvcm1hdD0iTCIsIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uX19nZXRpdGVtX18sIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG5kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnRvbGlzdCgpLCBbXSkKKworICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSg4KSksIHNoYXBlPVsyLCAwLCA3XSwgZm9ybWF0PSJMIiwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgW1tdLCBbXV0pCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxXSwgc2hhcGU9WzFdLCBmb3JtYXQ9ImgiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLCAyLCAzXSwgc2hhcGU9WzNdLCBmb3JtYXQ9ImIiLCBmbGFncz1ORF9XUklUQUJMRSkKKyAgICAgICAgZm9yIG9yZGVyIGluIFsnQycsICdGJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBuZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgIyBvbmUtZGltZW5zaW9uYWwsIG5vbi1jb250aWd1b3VzCisgICAgICAgIG5kID0gbmRhcnJheShbMSwgMiwgM10sIHNoYXBlPVsyXSwgc3RyaWRlcz1bMl0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAxLCAyMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbMV0sIDMpCisKKyAgICAgICAgbmQgPSBuZFs6Oi0xXQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbmQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9saXN0KCksIG5kLnRvbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLl9fc2V0aXRlbV9fLCAxLCAyMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRbMV0sIDEpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgY29udGlndW91cyBpbnB1dAorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMywgNF0sIGZsYWdzPU5EX1dSSVRBQkxFKQorICAgICAgICBmb3Igb3JkZXIgaW4gWydDJywgJ0EnXToKKyAgICAgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfV1JJVEUsIG9yZGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZGFycmF5KG0pLnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwgJ0YnKQorICAgICAgICBtID0gZ2V0X2NvbnRpZ3VvdXMobmQsIFB5QlVGX1JFQUQsIG9yZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVszLCA0XSwKKyAgICAgICAgICAgICAgICAgICAgIGZsYWdzPU5EX1dSSVRBQkxFfE5EX0ZPUlRSQU4pCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0YnLCAnQSddOgorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9XUklURSwgb3JkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5kYXJyYXkobSkudG9saXN0KCksIG5kLnRvbGlzdCgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBnZXRfY29udGlndW91cywgbmQsIFB5QlVGX1dSSVRFLCAnQycpCisgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgb3JkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCwgbm9uLWNvbnRpZ3VvdXMgaW5wdXQKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzMsIDRdLCBmbGFncz1ORF9XUklUQUJMRXxORF9QSUwpCisgICAgICAgIGZvciBvcmRlciBpbiBbJ0MnLCAnRicsICdBJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgZ2V0X2NvbnRpZ3VvdXMsIG5kLCBQeUJVRl9XUklURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyKQorICAgICAgICAgICAgbSA9IGdldF9jb250aWd1b3VzKG5kLCBQeUJVRl9SRUFELCBvcmRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmRhcnJheShtKS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisKKyAgICAgICAgIyBmbGFncworICAgICAgICBuZCA9IG5kYXJyYXkoWzEsMiwzLDQsNV0sIHNoYXBlPVszXSwgc3RyaWRlcz1bMl0pCisgICAgICAgIG0gPSBnZXRfY29udGlndW91cyhuZCwgUHlCVUZfUkVBRCwgJ0MnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobS5jX2NvbnRpZ3VvdXMpCisKKyAgICBkZWYgdGVzdF9tZW1vcnl2aWV3X3NlcmlhbGl6aW5nKHNlbGYpOgorCisgICAgICAgICMgQy1jb250aWd1b3VzCisgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ2knKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoJ2knLCBbMSwyLDMsNCw1XSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTyhtKQorICAgICAgICBiID0gYnl0ZWFycmF5KDUqc2l6ZSkKKyAgICAgICAgYnVmLnJlYWRpbnRvKGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS50b2J5dGVzKCksIGIpCisKKyAgICAgICAgIyBDLWNvbnRpZ3VvdXMsIG11bHRpLWRpbWVuc2lvbmFsCisgICAgICAgIHNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJ0wnKQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmb3JtYXQ9IkwiKQorICAgICAgICBtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgYnVmID0gaW8uQnl0ZXNJTyhtKQorICAgICAgICBiID0gYnl0ZWFycmF5KDIqMyoyKnNpemUpCisgICAgICAgIGJ1Zi5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0udG9ieXRlcygpLCBiKQorCisgICAgICAgICMgRm9ydHJhbiBjb250aWd1b3VzLCBtdWx0aS1kaW1lbnNpb25hbAorICAgICAgICAjc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZSgnTCcpCisgICAgICAgICNuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgxMikpLCBzaGFwZT1bMiwzLDJdLCBmb3JtYXQ9IkwiLAorICAgICAgICAjICAgICAgICAgICAgIGZsYWdzPU5EX0ZPUlRSQU4pCisgICAgICAgICNtID0gbWVtb3J5dmlldyhuZCkKKyAgICAgICAgI2J1ZiA9IGlvLkJ5dGVzSU8obSkKKyAgICAgICAgI2IgPSBieXRlYXJyYXkoMiozKjIqc2l6ZSkKKyAgICAgICAgI2J1Zi5yZWFkaW50byhiKQorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChtLnRvYnl0ZXMoKSwgYikKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfaGFzaChzZWxmKToKKworICAgICAgICAjIGJ5dGVzIGV4cG9ydGVyCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSkpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChiKSwgaGFzaChtKSkKKworICAgICAgICAjIEMtY29udGlndW91cworICAgICAgICBtYyA9IG0uY2FzdCgnYycsIHNoYXBlPVszLDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobWMpLCBoYXNoKGIpKQorCisgICAgICAgICMgbm9uLWNvbnRpZ3VvdXMKKyAgICAgICAgbXggPSBtWzo6LTJdCisgICAgICAgIGIgPSBieXRlcyhsaXN0KHJhbmdlKDEyKSlbOjotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChteCksIGhhc2goYikpCisKKyAgICAgICAgIyBGb3J0cmFuIGNvbnRpZ3VvdXMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMzApKSwgc2hhcGU9WzMsMiw1XSwgZmxhZ3M9TkRfRk9SVFJBTikKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChuZCkpCisKKyAgICAgICAgIyBtdWx0aS1kaW1lbnNpb25hbCBzbGljZQorICAgICAgICBuZCA9IG5kYXJyYXkobGlzdChyYW5nZSgzMCkpLCBzaGFwZT1bMywyLDVdKQorICAgICAgICB4ID0gbmRbOjoyLCA6OiwgOjotMV0KKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG0pLCBoYXNoKHgpKQorCisgICAgICAgICMgbXVsdGktZGltZW5zaW9uYWwgc2xpY2Ugd2l0aCBzdWJvZmZzZXRzCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKDMwKSksIHNoYXBlPVsyLDUsM10sIGZsYWdzPU5EX1BJTCkKKyAgICAgICAgeCA9IG5kWzo6MiwgOjosIDo6LTFdCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaCh4KSkKKworICAgICAgICAjIG5vbi1ieXRlIGZvcm1hdHMKKyAgICAgICAgbmQgPSBuZGFycmF5KGxpc3QocmFuZ2UoMTIpKSwgc2hhcGU9WzIsMiwzXSwgZm9ybWF0PSdMJykKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcobmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtKSwgaGFzaChuZC50b2J5dGVzKCkpKQorCisgICAgICAgIG5kID0gbmRhcnJheShsaXN0KHJhbmdlKC02LCA2KSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0naCcpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KG5kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2gobmQudG9ieXRlcygpKSkKKworICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfcmVsZWFzZShzZWxmKToKKworICAgICAgICAjIENyZWF0ZSByZS1leHBvcnRlciBmcm9tIGdldGJ1ZmZlcihtZW1vcnl2aWV3KSwgdGhlbiByZWxlYXNlIHRoZSB2aWV3LgorICAgICAgICBhID0gYnl0ZWFycmF5KFsxLDIsM10pCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG5kID0gbmRhcnJheShtKSAjIHJlLWV4cG9ydGVyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZAorICAgICAgICBtLnJlbGVhc2UoKQorCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoYSkKKyAgICAgICAgbmQxID0gbmRhcnJheShtLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG5kMiA9IG5kYXJyYXkobmQxLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobmQyLm9iaiwgbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0ucmVsZWFzZSkKKyAgICAgICAgZGVsIG5kMSwgbmQyCisgICAgICAgIG0ucmVsZWFzZSgpCisKKyAgICAgICAgIyBjaGFpbmVkIHZpZXdzCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhtMSkKKyAgICAgICAgbmQgPSBuZGFycmF5KG0yKSAjIHJlLWV4cG9ydGVyCisgICAgICAgIG0xLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvciwgbTIucmVsZWFzZSkKKyAgICAgICAgZGVsIG5kCisgICAgICAgIG0yLnJlbGVhc2UoKQorCisgICAgICAgIGEgPSBieXRlYXJyYXkoWzEsMiwzXSkKKyAgICAgICAgbTEgPSBtZW1vcnl2aWV3KGEpCisgICAgICAgIG0yID0gbWVtb3J5dmlldyhtMSkKKyAgICAgICAgbmQxID0gbmRhcnJheShtMiwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBuZDIgPSBuZGFycmF5KG5kMSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKG5kMi5vYmosIG0yKQorICAgICAgICBtMS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQnVmZmVyRXJyb3IsIG0yLnJlbGVhc2UpCisgICAgICAgIGRlbCBuZDEsIG5kMgorICAgICAgICBtMi5yZWxlYXNlKCkKKworICAgICAgICAjIEFsbG93IGNoYW5naW5nIGxheW91dCB3aGlsZSBidWZmZXJzIGFyZSBleHBvcnRlZC4KKyAgICAgICAgbmQgPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfVkFSRVhQT1JUKQorICAgICAgICBtMSA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgbmQucHVzaChbNCw1LDYsNyw4XSwgc2hhcGU9WzVdKSAjIG11dGF0ZSBuZAorICAgICAgICBtMiA9IG1lbW9yeXZpZXcobmQpCisKKyAgICAgICAgeCA9IG1lbW9yeXZpZXcobTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b2xpc3QoKSwgbTEudG9saXN0KCkpCisKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcobTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS50b2xpc3QoKSwgbTIudG9saXN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeS50b2xpc3QoKSwgbmQudG9saXN0KCkpCisgICAgICAgIG0yLnJlbGVhc2UoKQorICAgICAgICB5LnJlbGVhc2UoKQorCisgICAgICAgIG5kLnBvcCgpICMgcG9wIHRoZSBjdXJyZW50IHZpZXcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvbGlzdCgpLCBuZC50b2xpc3QoKSkKKworICAgICAgICBkZWwgbmQKKyAgICAgICAgbTEucmVsZWFzZSgpCisgICAgICAgIHgucmVsZWFzZSgpCisKKyAgICAgICAgIyBJZiBtdWx0aXBsZSBtZW1vcnl2aWV3cyBzaGFyZSB0aGUgc2FtZSBtYW5hZ2VkIGJ1ZmZlciwgaW1wbGljaXQKKyAgICAgICAgIyByZWxlYXNlKCkgaW4gdGhlIGNvbnRleHQgbWFuYWdlcidzIF9fZXhpdF9fKCkgbWV0aG9kIHNob3VsZCBzdGlsbAorICAgICAgICAjIHdvcmsuCisgICAgICAgIGRlZiBjYXRjaDIyKGIpOgorICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KGIpIGFzIG0yOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHgpIGFzIG0xOgorICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTFbMF0sIG9yZChiJzEnKSkKKworICAgICAgICB4ID0gbmRhcnJheShsaXN0KHJhbmdlKDEyKSksIHNoYXBlPVsyLDIsM10sIGZvcm1hdD0nbCcpCisgICAgICAgIHkgPSBuZGFycmF5KHgsIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICBzZWxmLmFzc2VydElzKHoub2JqLCB4KQorICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeikgYXMgbToKKyAgICAgICAgICAgIGNhdGNoMjIobSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVswOjFdLnRvbGlzdCgpLCBbW1swLCAxLCAyXSwgWzMsIDQsIDVdXV0pCisKKyAgICAgICAgIyBUZXN0IGdhcmJhZ2UgY29sbGVjdGlvbi4KKyAgICAgICAgZm9yIGZsYWdzIGluICgwLCBORF9SRURJUkVDVCk6CisgICAgICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgICAgICBkZWwgeAorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KG0xLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHkpIGFzIG0yOgorICAgICAgICAgICAgICAgICAgICBkZWwgeQorICAgICAgICAgICAgICAgICAgICB6ID0gbmRhcnJheShtMiwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeikgYXMgbTM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgegorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTIpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0xKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMVswXSwgb3JkKGInMScpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMlsxXSwgb3JkKGInMicpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtM1syXSwgb3JkKGInMycpKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIG0zCisgICAgICAgICAgICAgICAgICAgIGRlbCBtMgorICAgICAgICAgICAgICAgIGRlbCBtMQorCisgICAgICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgICAgIHdpdGggbWVtb3J5dmlldyh4KSBhcyBtMToKKyAgICAgICAgICAgICAgICBkZWwgeAorICAgICAgICAgICAgICAgIHkgPSBuZGFycmF5KG0xLCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9ZmxhZ3MpCisgICAgICAgICAgICAgICAgd2l0aCBtZW1vcnl2aWV3KHkpIGFzIG0yOgorICAgICAgICAgICAgICAgICAgICBkZWwgeQorICAgICAgICAgICAgICAgICAgICB6ID0gbmRhcnJheShtMiwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPWZsYWdzKQorICAgICAgICAgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeikgYXMgbTM6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgegorICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2gyMihtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoMjIobTIpCisgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaDIyKG0zKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMVswXSwgb3JkKGInMScpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMlsxXSwgb3JkKGInMicpKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtM1syXSwgb3JkKGInMycpKQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIG0xLCBtMiwgbTMKKworICAgICAgICAjIG1lbW9yeXZpZXcucmVsZWFzZSgpIGZhaWxzIGlmIHRoZSB2aWV3IGhhcyBleHBvcnRlZCBidWZmZXJzLgorICAgICAgICB4ID0gYnl0ZWFycmF5KGInMTIzJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhCdWZmZXJFcnJvcik6CisgICAgICAgICAgICB3aXRoIG1lbW9yeXZpZXcoeCkgYXMgbToKKyAgICAgICAgICAgICAgICBleCA9IG5kYXJyYXkobSkKKyAgICAgICAgICAgICAgICBtWzBdID09IG9yZChiJzEnKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19yZWRpcmVjdChzZWxmKToKKworICAgICAgICBuZCA9IG5kYXJyYXkoWzEuMCAqIHggZm9yIHggaW4gcmFuZ2UoMTIpXSwgc2hhcGU9WzEyXSwgZm9ybWF0PSdkJykKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCdkJywgWzEuMCAqIHggZm9yIHggaW4gcmFuZ2UoMTIpXSkKKworICAgICAgICBmb3IgeCBpbiAobmQsIGEpOgorICAgICAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICAgICAgeiA9IG5kYXJyYXkoeSwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB4KQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIHopCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxOjNdLCB4WzE6M10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeVsxOjNdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzE6M10sIHpbMTozXSkKKyAgICAgICAgICAgIGRlbCB5LCB6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMTozXSwgeFsxOjNdKQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19mcm9tX3N0YXRpY19leHBvcnRlcihzZWxmKToKKworICAgICAgICBmbXQgPSAnQicKKyAgICAgICAgbHN0ID0gWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdCisKKyAgICAgICAgIyBleGNlcHRpb25zCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3RhdGljYXJyYXksIDEsIDIsIDMpCisKKyAgICAgICAgIyB2aWV3Lm9iaj09eAorICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbWVtb3J5dmlldyh4KQorICAgICAgICBzZWxmLnZlcmlmeSh5LCBvYmo9eCwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5W2ldLCBpKQorICAgICAgICBkZWwgeAorICAgICAgICBkZWwgeQorCisgICAgICAgIHggPSBzdGF0aWNhcnJheSgpCisgICAgICAgIHkgPSBtZW1vcnl2aWV3KHgpCisgICAgICAgIGRlbCB5CisgICAgICAgIGRlbCB4CisKKyAgICAgICAgeCA9IHN0YXRpY2FycmF5KCkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB6KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eiwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgICAgICB4ID0gc3RhdGljYXJyYXkoKQorICAgICAgICB5ID0gbmRhcnJheSh4LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPLCBmbGFncz1ORF9SRURJUkVDVCkKKyAgICAgICAgbSA9IG1lbW9yeXZpZXcoeikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh6Lm9iaiwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLm9iaiwgeCkKKyAgICAgICAgc2VsZi52ZXJpZnkobSwgb2JqPXgsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGRlbCB4LCB5LCB6LCBtCisKKyAgICAgICAgIyB2aWV3Lm9iaj09TlVMTAorICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgc2VsZi52ZXJpZnkoeSwgb2JqPU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGl0ZW1zaXplPTEsIGZtdD1mbXQsIHJlYWRvbmx5PTEsCisgICAgICAgICAgICAgICAgICAgIG5kaW09MSwgc2hhcGU9WzEyXSwgc3RyaWRlcz1bMV0sCisgICAgICAgICAgICAgICAgICAgIGxzdD1sc3QpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeVtpXSwgaSkKKyAgICAgICAgZGVsIHgKKyAgICAgICAgZGVsIHkKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG1lbW9yeXZpZXcoeCkKKyAgICAgICAgZGVsIHkKKyAgICAgICAgZGVsIHgKKworICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8pCisgICAgICAgIHogPSBuZGFycmF5KHksIGdldGJ1Zj1QeUJVRl9GVUxMX1JPKQorICAgICAgICBtID0gbWVtb3J5dmlldyh6KQorICAgICAgICBzZWxmLmFzc2VydElzKHkub2JqLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzKG0ub2JqLCB6KQorICAgICAgICBzZWxmLnZlcmlmeShtLCBvYmo9eiwKKyAgICAgICAgICAgICAgICAgICAgaXRlbXNpemU9MSwgZm10PWZtdCwgcmVhZG9ubHk9MSwKKyAgICAgICAgICAgICAgICAgICAgbmRpbT0xLCBzaGFwZT1bMTJdLCBzdHJpZGVzPVsxXSwKKyAgICAgICAgICAgICAgICAgICAgbHN0PWxzdCkKKyAgICAgICAgZGVsIHgsIHksIHosIG0KKworICAgICAgICB4ID0gc3RhdGljYXJyYXkobGVnYWN5X21vZGU9VHJ1ZSkKKyAgICAgICAgeSA9IG5kYXJyYXkoeCwgZ2V0YnVmPVB5QlVGX0ZVTExfUk8sIGZsYWdzPU5EX1JFRElSRUNUKQorICAgICAgICB6ID0gbmRhcnJheSh5LCBnZXRidWY9UHlCVUZfRlVMTF9STywgZmxhZ3M9TkRfUkVESVJFQ1QpCisgICAgICAgIG0gPSBtZW1vcnl2aWV3KHopCisgICAgICAgICMgQ2xlYXJseSBzZXR0aW5nIHZpZXcub2JqPT1OVUxMIGlzIGluZmVyaW9yLCBzaW5jZSBpdAorICAgICAgICAjIG1lc3NlcyB1cCB0aGUgcmVkaXJlY3Rpb24gY2hhaW46CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5vYmosIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoei5vYmosIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5vYmosIHkpCisgICAgICAgIHNlbGYudmVyaWZ5KG0sIG9iaj15LAorICAgICAgICAgICAgICAgICAgICBpdGVtc2l6ZT0xLCBmbXQ9Zm10LCByZWFkb25seT0xLAorICAgICAgICAgICAgICAgICAgICBuZGltPTEsIHNoYXBlPVsxMl0sIHN0cmlkZXM9WzFdLAorICAgICAgICAgICAgICAgICAgICBsc3Q9bHN0KQorICAgICAgICBkZWwgeCwgeSwgeiwgbQorCisgICAgZGVmIHRlc3RfbWVtb3J5dmlld19nZXRidWZmZXJfdW5kZWZpbmVkKHNlbGYpOgorCisgICAgICAgICMgZ2V0YnVmZmVycHJvYyBkb2VzIG5vdCBhZGhlcmUgdG8gdGhlIG5ldyBkb2N1bWVudGF0aW9uCisgICAgICAgIG5kID0gbmRhcnJheShbMSwyLDNdLCBbM10sIGZsYWdzPU5EX0dFVEJVRl9GQUlMfE5EX0dFVEJVRl9VTkRFRklORUQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCBuZCkKKworICAgIGRlZiB0ZXN0X2lzc3VlXzczODUoc2VsZik6CisgICAgICAgIHggPSBuZGFycmF5KFsxLDIsM10sIHNoYXBlPVszXSwgZmxhZ3M9TkRfR0VUQlVGX0ZBSUwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJ1ZmZlckVycm9yLCBtZW1vcnl2aWV3LCB4KQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0QnVmZmVyUHJvdG9jb2wpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5IGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CmluZGV4IDU1ZmI2M2EuLmMzMjk5MmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKQEAgLTEsMTkgKzEsMjEgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIGJ1aWx0LWluIGZ1bmN0aW9ucwogCi1pbXBvcnQgcGxhdGZvcm0KLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgYXN0CitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGlvCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKLWltcG9ydCBhc3QKLWltcG9ydCB0eXBlcwotaW1wb3J0IGJ1aWx0aW5zCitpbXBvcnQgcGlja2xlCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCByYW5kb20KK2ltcG9ydCBzeXMKIGltcG9ydCB0cmFjZWJhY2sKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmY21wLCBURVNURk4sIHVubGluaywgIHJ1bl91bml0dGVzdCwgY2hlY2tfd2FybmluZ3MKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gb3BlcmF0b3IgaW1wb3J0IG5lZworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rLCAgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncwogdHJ5OgogICAgIGltcG9ydCBwdHksIHNpZ25hbAogZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMTEwLDcgKzExMiwzMCBAQAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCiAKK2RlZiBmaWx0ZXJfY2hhcihhcmcpOgorICAgIHJldHVybiBvcmQoYXJnKSA+IG9yZCgiZCIpCisKK2RlZiBtYXBfY2hhcihhcmcpOgorICAgIHJldHVybiBjaHIob3JkKGFyZykrMSkKKwogY2xhc3MgQnVpbHRpblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19pdGVyX3BpY2tsZShzZWxmLCBpdCwgc2VxKToKKyAgICAgICAgaXRvcmcgPSBpdAorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxKQorCisgICAgICAgICN0ZXN0IHRoZSBpdGVyYXRvciBhZnRlciBkcm9wcGluZyBvbmUgZnJvbSBpdAorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXFbMTpdKQogCiAgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgogICAgICAgICBfX2ltcG9ydF9fKCdzeXMnKQpAQCAtMjU1LDggKzI4MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hyKDB4ZmYpLCAnXHhmZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNociwgMTw8MjQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hyKHN5cy5tYXh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoKCdcXFUlMDh4JyAlIChzeXMubWF4dW5pY29kZSkpLmVuY29kZSgiYXNjaWkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGUtZXNjYXBlJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKCdcXFUwMDEwZmZmZicuZW5jb2RlKCJhc2NpaSIpLCAndW5pY29kZS1lc2NhcGUnKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjaHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hyKDB4MDAwMEZGRkYpLCAiXFUwMDAwRkZGRiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hyKDB4MDAwMTAwMDApLCAiXFUwMDAxMDAwMCIpCkBAIC0zNzgsNyArNDAyLDE1IEBACiAgICAgICAgIGYgPSBGb28oKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlyKGYpID09IFsiZ2EiLCAia2FuIiwgInJvbyJdKQogCi0gICAgICAgICMgZGlyKG9ial9fZGlyX19ub3RfbGlzdCkKKyAgICAgICAgIyBkaXIob2JqX19kaXJfX3R1cGxlKQorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAoImIiLCAiYyIsICJhIikKKyAgICAgICAgcmVzID0gZGlyKEZvbygpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmVzLCBsaXN0KQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzID09IFsiYSIsICJiIiwgImMiXSkKKworICAgICAgICAjIGRpcihvYmpfX2Rpcl9fbm90X3NlcXVlbmNlKQogICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiA3CkBAIC0zOTEsNiArNDIzLDggQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlyKHN5cy5leGNfaW5mbygpWzJdKSksIDQpCiAKKyAgICAgICAgIyB0ZXN0IHRoYXQgb2JqZWN0IGhhcyBhIF9fZGlyX18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChbXS5fX2Rpcl9fKCkpLCBkaXIoW10pKQogCiAgICAgZGVmIHRlc3RfZGl2bW9kKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpdm1vZCgxMiwgNyksICgxLCA1KSkKQEAgLTQwMCwxMCArNDM0LDEzIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXZtb2QoLXN5cy5tYXhzaXplLTEsIC0xKSwgKHN5cy5tYXhzaXplKzEsIDApKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZmNtcChkaXZtb2QoMy4yNSwgMS4wKSwgKDMuMCwgMC4yNSkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKC0zLjI1LCAxLjApLCAoLTQuMCwgMC43NSkpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGZjbXAoZGl2bW9kKDMuMjUsIC0xLjApLCAoLTQuMCwgLTAuNzUpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBmY21wKGRpdm1vZCgtMy4yNSwgLTEuMCksICgzLjAsIC0wLjI1KSkpCisgICAgICAgIGZvciBudW0sIGRlbm9tLCBleHBfcmVzdWx0IGluIFsgKDMuMjUsIDEuMCwgKDMuMCwgMC4yNSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtMy4yNSwgMS4wLCAoLTQuMCwgMC43NSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgzLjI1LCAtMS4wLCAoLTQuMCwgLTAuNzUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoLTMuMjUsIC0xLjAsICgzLjAsIC0wLjI1KSldOgorICAgICAgICAgICAgcmVzdWx0ID0gZGl2bW9kKG51bSwgZGVub20pCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHJlc3VsdFswXSwgZXhwX3Jlc3VsdFswXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwocmVzdWx0WzFdLCBleHBfcmVzdWx0WzFdKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZGl2bW9kKQogCkBAIC01MTgsNiArNTU1LDM5IEBACiAgICAgICAgICAgICBkZWwgbFsnX19idWlsdGluc19fJ10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoZywgbCksICh7J2EnOiAxfSwgeydiJzogMn0pKQogCisgICAgZGVmIHRlc3RfZXhlY19nbG9iYWxzKHNlbGYpOgorICAgICAgICBjb2RlID0gY29tcGlsZSgicHJpbnQoJ0hlbGxvIFdvcmxkIScpIiwgIiIsICJleGVjIikKKyAgICAgICAgIyBubyBidWlsdGluIGZ1bmN0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTmFtZUVycm9yLCAibmFtZSAncHJpbnQnIGlzIG5vdCBkZWZpbmVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjLCBjb2RlLCB7J19fYnVpbHRpbnNfXyc6IHt9fSkKKyAgICAgICAgIyBfX2J1aWx0aW5zX18gbXVzdCBiZSBhIG1hcHBpbmcgdHlwZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzogMTIzfSkKKworICAgICAgICAjIG5vIF9fYnVpbGRfY2xhc3NfXyBmdW5jdGlvbgorICAgICAgICBjb2RlID0gY29tcGlsZSgiY2xhc3MgQTogcGFzcyIsICIiLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTmFtZUVycm9yLCAiX19idWlsZF9jbGFzc19fIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgeydfX2J1aWx0aW5zX18nOiB7fX0pCisKKyAgICAgICAgY2xhc3MgZnJvemVuZGljdF9lcnJvcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIGZyb3plbmRpY3QoZGljdCk6CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgZnJvemVuZGljdF9lcnJvcigiZnJvemVuZGljdCBpcyByZWFkb25seSIpCisKKyAgICAgICAgIyByZWFkLW9ubHkgYnVpbHRpbnMKKyAgICAgICAgZnJvemVuX2J1aWx0aW5zID0gZnJvemVuZGljdChfX2J1aWx0aW5zX18pCisgICAgICAgIGNvZGUgPSBjb21waWxlKCJfX2J1aWx0aW5zX19bJ3N1cGVyZ2xvYmFsJ109MjsgcHJpbnQoc3VwZXJnbG9iYWwpIiwgInRlc3QiLCAiZXhlYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZyb3plbmRpY3RfZXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMsIGNvZGUsIHsnX19idWlsdGluc19fJzogZnJvemVuX2J1aWx0aW5zfSkKKworICAgICAgICAjIHJlYWQtb25seSBnbG9iYWxzCisgICAgICAgIG5hbWVzcGFjZSA9IGZyb3plbmRpY3Qoe30pCisgICAgICAgIGNvZGUgPSBjb21waWxlKCJ4PTEiLCAidGVzdCIsICJleGVjIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnJvemVuZGljdF9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYywgY29kZSwgbmFtZXNwYWNlKQorCiAgICAgZGVmIHRlc3RfZXhlY19yZWRpcmVjdGVkKHNlbGYpOgogICAgICAgICBzYXZlc3Rkb3V0ID0gc3lzLnN0ZG91dAogICAgICAgICBzeXMuc3Rkb3V0ID0gTm9uZSAjIFdoYXRldmVyIHRoYXQgY2Fubm90IGZsdXNoKCkKQEAgLTU1NCw2ICs2MjQsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGZpbHRlcihsYW1iZGEgeDogeD49MywgKDEsIDIsIDMsIDQpKSksIFszLCA0XSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBmaWx0ZXIoNDIsICgxLCAyKSkpCiAKKyAgICBkZWYgdGVzdF9maWx0ZXJfcGlja2xlKHNlbGYpOgorICAgICAgICBmMSA9IGZpbHRlcihmaWx0ZXJfY2hhciwgImFiY2RlYWJjZGUiKQorICAgICAgICBmMiA9IGZpbHRlcihmaWx0ZXJfY2hhciwgImFiY2RlYWJjZGUiKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJfcGlja2xlKGYxLCBsaXN0KGYyKSkKKwogICAgIGRlZiB0ZXN0X2dldGF0dHIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnZXRhdHRyKHN5cywgJ3N0ZG91dCcpIGlzIHN5cy5zdGRvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXR0ciwgc3lzLCAxKQpAQCAtNzQ3LDYgKzgyMiwxMSBAQAogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgbGlzdCwgbWFwKGJhZGZ1bmMsIHJhbmdlKDUpKSkKIAorICAgIGRlZiB0ZXN0X21hcF9waWNrbGUoc2VsZik6CisgICAgICAgIG0xID0gbWFwKG1hcF9jaGFyLCAiSXMgdGhpcyB0aGUgcmVhbCBsaWZlPyIpCisgICAgICAgIG0yID0gbWFwKG1hcF9jaGFyLCAiSXMgdGhpcyB0aGUgcmVhbCBsaWZlPyIpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcl9waWNrbGUobTEsIGxpc3QobTIpKQorCiAgICAgZGVmIHRlc3RfbWF4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heCgnMTIzMTIzJyksICczJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXgoMSwgMiwgMyksIDMpCkBAIC04ODAsNyArOTYwLDI5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLnJlYWQoMTAwMCksICdZWVknKjEwMCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZwLmNsb3NlKCkKLSAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgICAgIHVubGluayhURVNURk4pCisKKyAgICBkZWYgdGVzdF9vcGVuX2RlZmF1bHRfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIG9sZF9lbnZpcm9uID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHRyeSB0byBnZXQgYSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiB0aGUgY3VycmVudAorICAgICAgICAgICAgIyBsb2NhbGUgZW5jb2RpbmcgdG8gY2hlY2sgdGhhdCBvcGVuKCkgdXNlcyB0aGUgY3VycmVudCBsb2NhbGUKKyAgICAgICAgICAgICMgZW5jb2RpbmcgYW5kIG5vdCB0aGUgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcKKyAgICAgICAgICAgIGZvciBrZXkgaW4gKCdMQ19BTEwnLCAnTEFORycsICdMQ19DVFlQRScpOgorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvbltrZXldCisKKyAgICAgICAgICAgIHNlbGYud3JpdGVfdGVzdGZpbGUoKQorICAgICAgICAgICAgY3VycmVudF9sb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCisgICAgICAgICAgICBmcCA9IG9wZW4oVEVTVEZOLCAndycpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5lbmNvZGluZywgY3VycmVudF9sb2NhbGVfZW5jb2RpbmcpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKKyAgICAgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCisgICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShvbGRfZW52aXJvbikKIAogICAgIGRlZiB0ZXN0X29yZChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmQoJyAnKSwgMzIpCkBAIC0xMTk3LDYgKzEyOTksOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgNDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbJ2EnLCAnYicsICdjJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbJ2EnLCAnYicsICdjJ10sICcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW2InYScsIGInYyddLCBiJycpCisgICAgICAgIHZhbHVlcyA9IFtieXRlYXJyYXkoYidhJyksIGJ5dGVhcnJheShiJ2InKV0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdW0sIHZhbHVlcywgYnl0ZWFycmF5KGInJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbWzFdLCBbMl0sIFszXV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3VtLCBbezI6M31dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN1bSwgW3syOjN9XSoyLCB7MjozfSkKQEAgLTEyODUsNiArMTM5MCwxMyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gaQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LCB6aXAoQmFkU2VxKCksIEJhZFNlcSgpKSkKIAorICAgIGRlZiB0ZXN0X3ppcF9waWNrbGUoc2VsZik6CisgICAgICAgIGEgPSAoMSwgMiwgMykKKyAgICAgICAgYiA9ICg0LCA1LCA2KQorICAgICAgICB0ID0gWygxLCA0KSwgKDIsIDUpLCAoMywgNildCisgICAgICAgIHoxID0gemlwKGEsIGIpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcl9waWNrbGUoejEsIHQpCisKICAgICBkZWYgdGVzdF9mb3JtYXQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgYmFzaWMgbWFjaGluZXJ5IG9mIHRoZSBmb3JtYXQoKSBidWlsdGluLiAgRG9uJ3QgdGVzdAogICAgICAgICAjICB0aGUgc3BlY2lmaWNzIG9mIHRoZSB2YXJpb3VzIGZvcm1hdHRlcnMKQEAgLTEzNTgsMTQgKzE0NzAsMTQgQEAKIAogICAgICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICMgSXNzdWUgIzc5OTQ6IG9iamVjdC5fX2Zvcm1hdF9fIHdpdGggYSBub24tZW1wdHkgZm9ybWF0IHN0cmluZyBpcwotICAgICAgICAjICBwZW5kaW5nIGRlcHJlY2F0ZWQKKyAgICAgICAgIyAgZGVwcmVjYXRlZAogICAgICAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Zvcm1hdF9zdHJpbmcob2JqLCBmbXRfc3RyLCBzaG91bGRfcmFpc2Vfd2FybmluZyk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiYWx3YXlzIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIsIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgICAgICBmb3JtYXQob2JqLCBmbXRfc3RyKQogICAgICAgICAgICAgaWYgc2hvdWxkX3JhaXNlX3dhcm5pbmc6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHdbMF0ubWVzc2FnZSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uod1swXS5tZXNzYWdlLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignb2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsIHN0cih3WzBdLm1lc3NhZ2UpKQogICAgICAgICAgICAgZWxzZToKQEAgLTE0MDksNiArMTUyMSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB4LnRyYW5zbGF0ZSwgYiIxIiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRyYW5zbGF0ZSwgYiIxIioyNTYsIDEpCiAKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rfc2luZ2xldG9ucyhzZWxmKToKKyAgICAgICAgZm9yIGNvbnN0IGluIE5vbmUsIEVsbGlwc2lzLCBOb3RJbXBsZW1lbnRlZDoKKyAgICAgICAgICAgIHRwID0gdHlwZShjb25zdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHAoKSwgY29uc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRwLCAxLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0cCwgYT0xLCBiPTIpCisKIGNsYXNzIFRlc3RTb3J0ZWQodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQppbmRleCA1ZWFiOGY1Li44Y2U2YzIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKQEAgLTE4OCwyNCArMTg4LDI2IEBACiAKICAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKICAgICAgICAgc2FtcGxlID0gIkhlbGxvIHdvcmxkXG5cdTEyMzRcdTU2NzhcdTlhYmMiCi0gICAgICAgIGZvciBlbmMgaW4gKCJ1dGY4IiwgInV0ZjE2Iik6CisgICAgICAgIGZvciBlbmMgaW4gKCJ1dGYtOCIsICJ1dGYtMTYiKToKICAgICAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChzYW1wbGUsIGVuYykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlLmVuY29kZShlbmMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzZWxmLnR5cGUydGVzdCwgc2FtcGxlLCAibGF0aW4xIikKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluMSIsICJpZ25vcmUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LCBzYW1wbGUsICJsYXRpbi0xIikKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluLTEiLCAiaWdub3JlIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBzZWxmLnR5cGUydGVzdChzYW1wbGVbOi0zXSwgInV0Zi04IikpCiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjXGRlZjBcZGVmMCIKLSAgICAgICAgZm9yIGVuYyBpbiAoInV0ZjgiLCAidXRmMTYiKToKKyAgICAgICAgZm9yIGVuYyBpbiAoInV0Zi04IiwgInV0Zi0xNiIpOgogICAgICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgZW5jKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZShlbmMpLCBzYW1wbGUpCiAgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHg4MFx4ODFceGZlXHhmZiIKLSAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgYi5kZWNvZGUsICJ1dGY4IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmRlY29kZSgidXRmOCIsICJpZ25vcmUiKSwgIkhlbGxvIHdvcmxkXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVycm9ycz0iaWdub3JlIiwgZW5jb2Rpbmc9InV0ZjgiKSwKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KHNhbXBsZSwgImxhdGluLTEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIuZGVjb2RlLCAidXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKCJ1dGYtOCIsICJpZ25vcmUiKSwgIkhlbGxvIHdvcmxkXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVycm9ycz0iaWdub3JlIiwgZW5jb2Rpbmc9InV0Zi04IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIkhlbGxvIHdvcmxkXG4iKQorICAgICAgICAjIERlZmF1bHQgZW5jb2RpbmcgaXMgdXRmLTgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChiJ1x4ZTJceDk4XHg4MycpLmRlY29kZSgpLCAnXHUyNjAzJykKIAogICAgIGRlZiB0ZXN0X2Zyb21faW50KHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoMCkKQEAgLTI5MSwxMCArMjkzLDI3IEBACiAKICAgICBkZWYgdGVzdF9jb3VudChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHAgPSAxMTIKKyAgICAgICAgdyA9IDExOQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ2knKSwgNCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGInc3MnKSwgMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGIndycpLCAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChpKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KHcpLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ2knLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGIncCcsIDYpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoYidpJywgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChiJ3AnLCA3LCA5KSwgMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQoaSwgNiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5jb3VudChwLCA2KSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmNvdW50KGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY291bnQocCwgNywgOSksIDEpCisKICAgICBkZWYgdGVzdF9zdGFydHN3aXRoKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi50eXBlMnRlc3QoKS5zdGFydHN3aXRoKGIiYW55dGhpbmciKSkKQEAgLTMyNSwzNSArMzQ0LDg2IEBACiAKICAgICBkZWYgdGVzdF9maW5kKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidtaXNzaXNzaXBwaScpCisgICAgICAgIGkgPSAxMDUKKyAgICAgICAgdyA9IDExOQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDMpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgNyksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAxLCAzKSwgLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGIndycpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidtaXNzaXNzaXBwaWFuJyksIC0xKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGkpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZCh3KSwgLTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZChiJ3NzJywgMSwgNyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGInc3MnLCAxLCAzKSwgLTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmZpbmQoaSwgNiksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5maW5kKGksIDEsIDMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZmluZCh3LCAxLCAzKSwgLTEpCisKKyAgICAgICAgZm9yIGluZGV4IGluICgtMSwgMjU2LCBzeXMubWF4c2l6ZSArIDEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICBWYWx1ZUVycm9yLCByJ2J5dGUgbXVzdCBiZSBpbiByYW5nZVwoMCwgMjU2XCknLAorICAgICAgICAgICAgICAgIGIuZmluZCwgaW5kZXgpCisKICAgICBkZWYgdGVzdF9yZmluZChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycsIDMpLCA1KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidzcycsIDAsIDYpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYid3JyksIC0xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoYidtaXNzaXNzaXBwaWFuJyksIC0xKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChpKSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZCh3KSwgLTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAzKSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKGInc3MnLCAwLCA2KSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmZpbmQoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZmluZChpLCAzLCA5KSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJmaW5kKHcsIDEsIDMpLCAtMSkKKwogICAgIGRlZiB0ZXN0X2luZGV4KHNlbGYpOgotICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYid3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChiJ3cnKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLmluZGV4KGInb3JsJyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGInd29ybScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIuaW5kZXgsIGInbGRvJykKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQorICAgICAgICBpID0gMTA1CisgICAgICAgIHcgPSAxMTkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidzcycpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ21pc3Npc3NpcHBpYW4nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgdykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidzcycsIDMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoYidzcycsIDEsIDcpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLmluZGV4LCBiJ3NzJywgMSwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuaW5kZXgoaSwgNiksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5pbmRleChpLCAxLCAzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5pbmRleCwgdywgMSwgMykKIAogICAgIGRlZiB0ZXN0X3JpbmRleChzZWxmKToKLSAgICAgICAgIyBYWFggY291bGQgYmUgbW9yZSByaWdvcm91cwotICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYid3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYid3JyksIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidvcmwnKSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIGInd29ybScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ2xkbycpCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ21pc3Npc3NpcHBpJykKKyAgICAgICAgaSA9IDEwNQorICAgICAgICB3ID0gMTE5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ3NzJyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCBiJ3cnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiLnJpbmRleCwgYidtaXNzaXNzaXBwaWFuJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmluZGV4KGkpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYi5yaW5kZXgsIHcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJpbmRleChiJ3NzJywgMyksIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoYidzcycsIDAsIDYpLCAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoaSwgMSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yaW5kZXgoaSwgMywgOSksIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIucmluZGV4LCB3LCAxLCAzKQogCiAgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQpAQCAtMzY1LDYgKzQzNSwxNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYidpJyksIFtiJ20nLCBiJ3NzJywgYidzcycsIGIncHAnLCBiJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYidzcycpLCBbYidtaScsIGInaScsIGInaXBwaSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYid3JyksIFtiXSkKKyAgICAgICAgIyB3aXRoIGtleXdvcmQgYXJncworICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhfGJ8Y3xkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnNwbGl0KHNlcD1iJ3wnKSwgW2InYScsIGInYicsIGInYycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQoYid8JywgbWF4c3BsaXQ9MSksIFtiJ2EnLCBiJ2J8Y3xkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChzZXA9Yid8JywgbWF4c3BsaXQ9MSksIFtiJ2EnLCBiJ2J8Y3xkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdChtYXhzcGxpdD0xLCBzZXA9Yid8JyksIFtiJ2EnLCBiJ2J8Y3xkJ10pCisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2EgYiBjIGQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3BsaXQobWF4c3BsaXQ9MSksIFtiJ2EnLCBiJ2IgYyBkJ10pCiAKICAgICBkZWYgdGVzdF9zcGxpdF93aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBmb3IgYiBpbiAoYicgIGFyZiAgYmFyZiAgJywgYidhcmZcdGJhcmYnLCBiJ2FyZlxuYmFyZicsIGInYXJmXHJiYXJmJywKQEAgLTM5Myw2ICs0NzEsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJzcGxpdChiJ2knKSwgW2InbScsIGInc3MnLCBiJ3NzJywgYidwcCcsIGInJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYidzcycpLCBbYidtaScsIGInaScsIGInaXBwaSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KGIndycpLCBbYl0pCisgICAgICAgICMgd2l0aCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYXxifGN8ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoc2VwPWInfCcpLCBbYidhJywgYidiJywgYidjJywgYidkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoYid8JywgbWF4c3BsaXQ9MSksIFtiJ2F8YnxjJywgYidkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQoc2VwPWInfCcsIG1heHNwbGl0PTEpLCBbYidhfGJ8YycsIGInZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KG1heHNwbGl0PTEsIHNlcD1iJ3wnKSwgW2InYXxifGMnLCBiJ2QnXSkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYSBiIGMgZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yc3BsaXQobWF4c3BsaXQ9MSksIFtiJ2EgYiBjJywgYidkJ10pCiAKICAgICBkZWYgdGVzdF9yc3BsaXRfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgZm9yIGIgaW4gKGInICBhcmYgIGJhcmYgICcsIGInYXJmXHRiYXJmJywgYidhcmZcbmJhcmYnLCBiJ2FyZlxyYmFyZicsCkBAIC00MzIsNiArNTE4LDI0IEBACiAgICAgICAgICAgICAgICAgcSA9IHBpY2tsZS5sb2FkcyhwcykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIHEpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZm9yIGIgaW4gYiIiLCBiImEiLCBiImFiYyIsIGIiXHhmZmFiXHg4MCIsIGIiXDBcMFwzNzdcMFwwIjoKKyAgICAgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKHNlbGYudHlwZTJ0ZXN0KGIpKQorICAgICAgICAgICAgZGF0YSA9IGxpc3Qoc2VsZi50eXBlMnRlc3QoYikpCisgICAgICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YSkKKworICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgZGF0YVsxOl0pCisKICAgICBkZWYgdGVzdF9zdHJpcChzZWxmKToKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInbWlzc2lzc2lwcGknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuc3RyaXAoYidpJyksIGInbWlzc2lzc2lwcCcpCkBAIC00NzMsNiArNTc3LDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5sc3RyaXAsICdiJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLnJzdHJpcCwgJ2InKQogCisgICAgZGVmIHRlc3RfY2VudGVyKHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY2VudGVyKDcsIGZpbGxfdHlwZShiJy0nKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0KGInLS1hYmMtLScpKQorCisgICAgZGVmIHRlc3RfbGp1c3Qoc2VsZik6CisgICAgICAgICMgRmlsbCBjaGFyYWN0ZXIgY2FuIGJlIGVpdGhlciBieXRlcyBvciBieXRlYXJyYXkgKGlzc3VlIDEyMzgwKQorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidhYmMnKQorICAgICAgICBmb3IgZmlsbF90eXBlIGluIChieXRlcywgYnl0ZWFycmF5KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5sanVzdCg3LCBmaWxsX3R5cGUoYictJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnR5cGUydGVzdChiJ2FiYy0tLS0nKSkKKworICAgIGRlZiB0ZXN0X3JqdXN0KHNlbGYpOgorICAgICAgICAjIEZpbGwgY2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYnl0ZXMgb3IgYnl0ZWFycmF5IChpc3N1ZSAxMjM4MCkKKyAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInYWJjJykKKyAgICAgICAgZm9yIGZpbGxfdHlwZSBpbiAoYnl0ZXMsIGJ5dGVhcnJheSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmp1c3QoNywgZmlsbF90eXBlKGInLScpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50eXBlMnRlc3QoYictLS0tYWJjJykpCisKICAgICBkZWYgdGVzdF9vcmQoc2VsZik6CiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ1wwQVx4N2ZceDgwXHhmZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW29yZChiW2k6aSsxXSkgZm9yIGkgaW4gcmFuZ2UobGVuKGIpKV0sCkBAIC01MjksNiArNjU0LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgYi5zdGFydHN3aXRoKGgsIE5vbmUsIC0yKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgYi5zdGFydHN3aXRoKHgsIE5vbmUsIE5vbmUpKQogCisgICAgZGVmIHRlc3RfaW50ZWdlcl9hcmd1bWVudHNfb3V0X29mX2J5dGVfcmFuZ2Uoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiJ2hlbGxvJykKKworICAgICAgICBmb3IgbWV0aG9kIGluIChiLmNvdW50LCBiLmZpbmQsIGIuaW5kZXgsIGIucmZpbmQsIGIucmluZGV4KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGhvZCwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtZXRob2QsIDI1NikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ldGhvZCwgOTk5OSkKKwogICAgIGRlZiB0ZXN0X2ZpbmRfZXRjX3JhaXNlX2NvcnJlY3RfZXJyb3JfbWVzc2FnZXMoc2VsZik6CiAgICAgICAgICMgaXNzdWUgMTE4MjgKICAgICAgICAgYiA9IHNlbGYudHlwZTJ0ZXN0KGInaGVsbG8nKQpAQCAtNjM0LDYgKzc2NywzOSBAQAogICAgICAgICBiLnJldmVyc2UoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGIpCiAKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJ3B5dGhvbicpCisgICAgICAgIGIuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInJykKKworICAgICAgICBiID0gYnl0ZWFycmF5KGInJykKKyAgICAgICAgYi5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYicnKQorCisgICAgICAgIGIgPSBieXRlYXJyYXkoYicnKQorICAgICAgICBiLmFwcGVuZChvcmQoJ3InKSkKKyAgICAgICAgYi5jbGVhcigpCisgICAgICAgIGIuYXBwZW5kKG9yZCgncCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGIncCcpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBiID0gYnl0ZWFycmF5KGInYWJjJykKKyAgICAgICAgYmIgPSBiLmNvcHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJiLCBiJ2FiYycpCisKKyAgICAgICAgYiA9IGJ5dGVhcnJheShiJycpCisgICAgICAgIGJiID0gYi5jb3B5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYiwgYicnKQorCisgICAgICAgICMgdGVzdCB0aGF0IGl0J3MgaW5kZWVkIGEgY29weSBhbmQgbm90IGEgcmVmZXJlbmNlCisgICAgICAgIGIgPSBieXRlYXJyYXkoYidhYmMnKQorICAgICAgICBiYiA9IGIuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYmIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoYiwgYmIpCisgICAgICAgIGJiLmFwcGVuZChvcmQoJ2QnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYiwgYidhYmNkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ2FiYycpCisKICAgICBkZWYgdGVzdF9yZWdleHBzKHNlbGYpOgogICAgICAgICBkZWYgYnkocyk6CiAgICAgICAgICAgICByZXR1cm4gYnl0ZWFycmF5KG1hcChvcmQsIHMpKQpAQCAtMTEwNSw5ICsxMjcxLDExIEBACiAKIGNsYXNzIEJ5dGVBcnJheUFzU3RyaW5nVGVzdChGaXhlZFN0cmluZ1Rlc3QpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVhcnJheQorICAgIGNvbnRhaW5zX2J5dGVzID0gVHJ1ZQogCiBjbGFzcyBCeXRlc0FzU3RyaW5nVGVzdChGaXhlZFN0cmluZ1Rlc3QpOgogICAgIHR5cGUydGVzdCA9IGJ5dGVzCisgICAgY29udGFpbnNfYnl0ZXMgPSBUcnVlCiAKIAogY2xhc3MgU3ViY2xhc3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnoyLnB5IGIvTGliL3Rlc3QvdGVzdF9iejIucHkKaW5kZXggNzE1NDY4YS4uMjU3YjE0NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iejIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iejIucHkKQEAgLTEsMTAgKzEsMTEgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgXzRHLCBiaWdtZW10ZXN0LCBmaW5kZmlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgYmlnbWVtdGVzdCwgXzRHCiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogaW1wb3J0IG9zCitpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCkBAIC0yMSwxMiArMjIsMzggQEAKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICJCYXNlIGZvciBvdGhlciB0ZXN0Y2FzZXMuIgotICAgIFRFWFQgPSBiJ3Jvb3Q6eDowOjA6cm9vdDovcm9vdDovYmluL2Jhc2hcbmJpbjp4OjE6MTpiaW46L2JpbjpcbmRhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG5hZG06eDozOjQ6YWRtOi92YXIvYWRtOlxubHA6eDo0Ojc6bHA6L3Zhci9zcG9vbC9scGQ6XG5zeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG5zaHV0ZG93bjp4OjY6MDpzaHV0ZG93bjovc2Jpbjovc2Jpbi9zaHV0ZG93blxuaGFsdDp4Ojc6MDpoYWx0Oi9zYmluOi9zYmluL2hhbHRcbm1haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxubmV3czp4Ojk6MTM6bmV3czovdmFyL3Nwb29sL25ld3M6XG51dWNwOng6MTA6MTQ6dXVjcDovdmFyL3Nwb29sL3V1Y3A6XG5vcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG5nYW1lczp4OjEyOjEwMDpnYW1lczovdXNyL2dhbWVzOlxuZ29waGVyOng6MTM6MzA6Z29waGVyOi91c3IvbGliL2dvcGhlci1kYXRhOlxuZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG5ub2JvZHk6eDo2NTUzNDo2NTUzNDpOb2JvZHk6L2hvbWU6XG5wb3N0Zml4Ong6MTAwOjEwMTpwb3N0Zml4Oi92YXIvc3Bvb2wvcG9zdGZpeDpcbm5pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG5wb3N0Z3Jlczp4OjEwMToxMDI6UG9zdGdyZVNRTCBTZXJ2ZXI6L3Zhci9saWIvcGdzcWw6L2Jpbi9iYXNoXG5teXNxbDp4OjEwMjoxMDM6TXlTUUwgc2VydmVyOi92YXIvbGliL215c3FsOi9iaW4vYmFzaFxud3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJworICAgIFRFWFRfTElORVMgPSBbCisgICAgICAgIGIncm9vdDp4OjA6MDpyb290Oi9yb290Oi9iaW4vYmFzaFxuJywKKyAgICAgICAgYidiaW46eDoxOjE6YmluOi9iaW46XG4nLAorICAgICAgICBiJ2RhZW1vbjp4OjI6MjpkYWVtb246L3NiaW46XG4nLAorICAgICAgICBiJ2FkbTp4OjM6NDphZG06L3Zhci9hZG06XG4nLAorICAgICAgICBiJ2xwOng6NDo3OmxwOi92YXIvc3Bvb2wvbHBkOlxuJywKKyAgICAgICAgYidzeW5jOng6NTowOnN5bmM6L3NiaW46L2Jpbi9zeW5jXG4nLAorICAgICAgICBiJ3NodXRkb3duOng6NjowOnNodXRkb3duOi9zYmluOi9zYmluL3NodXRkb3duXG4nLAorICAgICAgICBiJ2hhbHQ6eDo3OjA6aGFsdDovc2Jpbjovc2Jpbi9oYWx0XG4nLAorICAgICAgICBiJ21haWw6eDo4OjEyOm1haWw6L3Zhci9zcG9vbC9tYWlsOlxuJywKKyAgICAgICAgYiduZXdzOng6OToxMzpuZXdzOi92YXIvc3Bvb2wvbmV3czpcbicsCisgICAgICAgIGIndXVjcDp4OjEwOjE0OnV1Y3A6L3Zhci9zcG9vbC91dWNwOlxuJywKKyAgICAgICAgYidvcGVyYXRvcjp4OjExOjA6b3BlcmF0b3I6L3Jvb3Q6XG4nLAorICAgICAgICBiJ2dhbWVzOng6MTI6MTAwOmdhbWVzOi91c3IvZ2FtZXM6XG4nLAorICAgICAgICBiJ2dvcGhlcjp4OjEzOjMwOmdvcGhlcjovdXNyL2xpYi9nb3BoZXItZGF0YTpcbicsCisgICAgICAgIGInZnRwOng6MTQ6NTA6RlRQIFVzZXI6L3Zhci9mdHA6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ25vYm9keTp4OjY1NTM0OjY1NTM0Ok5vYm9keTovaG9tZTpcbicsCisgICAgICAgIGIncG9zdGZpeDp4OjEwMDoxMDE6cG9zdGZpeDovdmFyL3Nwb29sL3Bvc3RmaXg6XG4nLAorICAgICAgICBiJ25pZW1leWVyOng6NTAwOjUwMDo6L2hvbWUvbmllbWV5ZXI6L2Jpbi9iYXNoXG4nLAorICAgICAgICBiJ3Bvc3RncmVzOng6MTAxOjEwMjpQb3N0Z3JlU1FMIFNlcnZlcjovdmFyL2xpYi9wZ3NxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInbXlzcWw6eDoxMDI6MTAzOk15U1FMIHNlcnZlcjovdmFyL2xpYi9teXNxbDovYmluL2Jhc2hcbicsCisgICAgICAgIGInd3d3Ong6MTAzOjEwNDo6L3Zhci93d3c6L2Jpbi9mYWxzZVxuJywKKyAgICAgICAgXQorICAgIFRFWFQgPSBiJycuam9pbihURVhUX0xJTkVTKQogICAgIERBVEEgPSBiJ0JaaDkxQVkmU1kuXHhjOE5ceDE4XHgwMFx4MDE+X1x4ODBceDAwXHgxMEBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMDBceDAxXHg5OVx4YWFceDAwXHhjMFx4MDNGXHg4Nlx4OGMjJlx4ODNGXHg5YVx4MDNceDA2XHhhNlx4ZDBceGE2XHg5M01ceDBmUVx4YTdceGE4XHgwNlx4ODA0aGhceDEyJFx4MTFceGE0aTRceGYxNFNceGQyPFFceGI1XHgwZkhceGQzXHhkNFx4ZGRceGQ1XHg4N1x4YmJceGY4XHg5NFxyXHg4Zlx4YWZJXHgxMlx4ZTFceGM5XHhmOC9FXHgwMHB1XHg4OVx4MTJdXHhjOVx4YmJETFxuUVx4MGVcdDFceDEyXHhkZlx4YTBceGMwXHg5N1x4YWMyTzlceDg5XHgxM1x4OTRceDBlXHgxYzdceDBlZFx4OTVJXHgwY1x4YWFKXHhhNFx4MThMXHgxMFx4MDUjXHg5Y1x4YWZceGJhXHhiYy9ceDk3XHg4YSNDXHhjOFx4ZTFceDhjV1x4ZjlceGUyXHhkMFx4ZDZNXHhhN1x4OGJYYTxlXHg4NHRceGNiTFx4YjNceGE3XHhkOVx4Y2RceGQxXHhjYlx4ODQuXHhhZlx4YjNceGFiXHhhYlx4YWRgbn1ceGEwbGhcdEUsXHg4ZVpceDE1XHgxN1ZIPlx4ODhceGU1XHhjZDlnZDZceDBiXG5ceGU5XHg5Ylx4ZDVceDhhXHg5OVx4ZjdceDA4LktceDhldlx4ZmJceGY3eHdceGJiXHhkZlx4YTFceDkyXHhmMVx4ZGR8LyI7XHhhMlx4YmFceDlmXHhkNVx4YjEjQVx4YjZceGY2XHhiM29ceGM5XHhjNXlcXFx4ZWJPXHhlN1x4ODVceDlhXHhiY1x4YjZmOFx4OTUyXHhkNVx4ZDciJVx4ODk+VixceGY3XHhhNnpceGUyXHg5Zlx4YTNceGRmXHgxMVx4MTEiXHhkNkUpSVx4YTlceDEzXlx4Y2FceGYzclx4ZDBceDAzVVx4OTIyXHhmMjZceGVjXHhiNlx4ZWRceDhiXHhjM1VceDEzXHg5ZFx4YzVceDE3MFx4YTRceGZhXlx4OTJceGFjREZceDhhXHg5N1x4ZDZceDE5XHhmZVx4ZGRceGI4XHhiZFx4MWFceDlhXHgxOVx4YTNceDgwYW5rUlx4OGJceGU1XHhkODNdXHhhOVx4YzZceDA4XHg4MmZceGY2XHhiOSI2bCRceGI4akBceGMwXHg4YVx4YjBsMS4uXHhiYWtceDgzbHNceDE1XHhiY1x4ZjRceGMxXHgxM1x4YmVceGY4RVx4YjhceDlkXHJceGE4XHg5ZGtceDg0XHhkM25ceGZhXHhhY1FceDA3XHhiMSV5XHhhYXZceGI0XHgwOFx4ZTB6XHgxYlx4MTZceGY1XHgwNFx4ZTlceGNjXHhiOVx4MDh6XHgxZW43LkdceGZjXVx4YzlceDE0XHhlMUJAXHhiYiE4YCcKLSAgICBEQVRBX0NSTEYgPSBiJ0JaaDkxQVkmU1lceGFlelx4YmJOXHgwMFx4MDFIXHhkZlx4ODBceDAwXHgxMkBceDAyXHhmZlx4ZjBceDAxXHgwN25ceDAwP1x4ZTdceGZmXHhlMEBceDAxXHhiY1x4YzZgXHg4NipceDhkPU1ceGE5XHg5YVx4ODZceGQwTEBceDBmSVx4YTYhXHhhMVx4MTNceGM4XHg4OGpkaVx4OGRAXHgwM0BceDFhXHgxYVx4MGNceDBjXHg4MyBceDAwXHhjNGgyXHgxOVx4MDFceDgyRFx4ODRlXHRceGU4XHg5OVx4ODlceDE5XHgxYWhceDAwXHJceDFhXHgxMVx4YWZceDliXHgwZkdceGY1KFx4MWJceDFmP1x0XHgxMlx4Y2ZceGI1XHhmY1x4OTVFXHgwMHBzXHg4OVx4MTJeXHhhNFx4ZGRceGEyJlx4MDUoXHg4N1x4MDRceDk4XHg4OXVceGU0MCVceGI2XHgxOVwnXHg4Y1x4YzRceDg5XHhjYVx4MDdceDBlXHgxYiFceDkxVUlGVSVDXHg5OTQhRElceGQyXHhmYVx4ZjBceGYxTjhXXHhkZVx4MTNBXHhmNVx4OWNyJT9ceDlmMztJNDVBXHhkMVx4OGJUXHhiMTxsXHhiYVx4Y2JfXHhjMDB4WVx4MTdyXHgxN1x4ODhceDA4XHgwOEBceGEwXHJ5QFx4MTBceDA0JClgXHhmMlx4Y2VceDg5elx4YjBzXHhlY1x4OWIuaVdceDlkXHg4MVx4YjUtK3RceDlmXHgxYVwnXHg5N2RCXHhmNXhceGI1XHhiZS5bLlx4ZDdceDBlXHg4MVx4ZTdceDA4XHgxY05gXHg4OFx4MTBceGNhXHg4N1x4YzMhIlx4ODBceDkyUlx4YTEvXHhkMVx4YzBceGU2bWZceGFjXHhiZFx4OTlceGNjYVx4YjNceDg3ODA+XHhhNFx4YzdceDhkXHgxYVxcIlx4YWRceGExXHhhYnlCZ1x4MTVceGI5bFx4ODhceDg4XHg5MWsiXHg5NFx4YTRceGQ0XHg4OVx4YWUqXHhhNlx4MGJceDEwXHgwY1x4ZDZceGQ0bVx4ZTg2XHhlY1x4YjVqXHg4YVx4ODZqXCc7XHhjYS5ceDAxSVx4ZjJceGFhSlx4ZThceDg4XHg4Y1UrdDNceGZiXHgwY1xuXHhhMzNceDEzcjJcclx4MTZceGUwXHhiMyhceGJmXHgxZFx4ODNyXHhlN01ceGYwRFx4MTM2NVx4ZDhceDg4XHhkM1x4YTRceDkyXHhjYjJceDA2XHgwNFxcXHhjMVx4YjBceGVhLy9ceGJlayZceGQ4XHhlNit0XHhlNVx4YTFceDEzXHhhZGFceDE2XHhkZXI1InddXHhhMmlceGI3W1x4OTdSIFx4ZTJJVFx4Y2Q7Wlx4MDRkazRceGFkXHg4YVx0XHhkM1x4ODF6XHgxMFx4ZjE6XmBceGFiXHgxZlx4YzVceGRjXHg5MU5ceDE0JCtceDllXHhhZVx4ZDNceDgwJwogCi0gICAgd2l0aCBvcGVuKGZpbmRmaWxlKCJ0ZXN0YnoyX2JpZ21lbS5iejIiKSwgInJiIikgYXMgZjoKLSAgICAgICAgREFUQV9CSUdNRU0gPSBmLnJlYWQoKQorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlbmFtZSA9IFRFU1RGTgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzZWxmLmZpbGVuYW1lKToKKyAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmZpbGVuYW1lKQogCiAgICAgaWYgaGFzX2NtZGxpbmVfYnVuemlwMjoKICAgICAgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CkBAIC00Nyw5NCArNzQsMTUyIEBACiAgICAgICAgIGRlZiBkZWNvbXByZXNzKHNlbGYsIGRhdGEpOgogICAgICAgICAgICAgcmV0dXJuIGJ6Mi5kZWNvbXByZXNzKGRhdGEpCiAKLQogY2xhc3MgQloyRmlsZVRlc3QoQmFzZVRlc3QpOgogICAgICJUZXN0IEJaMkZpbGUgdHlwZSBtaXNjZWxsYW5lb3VzIG1ldGhvZHMuIgogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmZpbGVuYW1lID0gVEVTVEZOCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYuZmlsZW5hbWUpOgotICAgICAgICAgICAgb3MudW5saW5rKHNlbGYuZmlsZW5hbWUpCi0KLSAgICBkZWYgY3JlYXRlVGVtcEZpbGUoc2VsZiwgY3JsZj0wKToKKyAgICBkZWYgY3JlYXRlVGVtcEZpbGUoc2VsZiwgc3RyZWFtcz0xKToKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6Ci0gICAgICAgICAgICBpZiBjcmxmOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLkRBVEFfQ1JMRgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5EQVRBCi0gICAgICAgICAgICBmLndyaXRlKGRhdGEpCisgICAgICAgICAgICBmLndyaXRlKHNlbGYuREFUQSAqIHN0cmVhbXMpCisKKyAgICBkZWYgdGVzdEJhZEFyZ3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoMTIzLjQ1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJ6IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsICJyeCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBCWjJGaWxlKCIvZGV2L251bGwiLCAicmJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEJaMkZpbGUoIi9kZXYvbnVsbCIsIGNvbXByZXNzbGV2ZWw9MTApCiAKICAgICBkZWYgdGVzdFJlYWQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkKCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RSZWFkTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogNSkKKworICAgIGRlZiB0ZXN0UmVhZE1vbmtleU11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICAjIFRlc3QgQloyRmlsZS5yZWFkKCkgb24gYSBtdWx0aS1zdHJlYW0gYXJjaGl2ZSB3aGVyZSBhIHN0cmVhbQorICAgICAgICAjIGJvdW5kYXJ5IGNvaW5jaWRlcyB3aXRoIHRoZSBlbmQgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KKyAgICAgICAgYnVmZmVyX3NpemUgPSBiejIuX0JVRkZFUl9TSVpFCisgICAgICAgIGJ6Mi5fQlVGRkVSX1NJWkUgPSBsZW4oc2VsZi5EQVRBKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCAqIDUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejIuX0JVRkZFUl9TSVpFID0gYnVmZmVyX3NpemUKKwogICAgIGRlZiB0ZXN0UmVhZDAoc2VsZik6Ci0gICAgICAgICMgVGVzdCBCQloyRmlsZS5yZWFkKDApIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZCwgTm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKDApLCBiIiIpCiAKICAgICBkZWYgdGVzdFJlYWRDaHVuazEwKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZCgpIGluIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgdGV4dCA9IGInJwotICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgc3RyID0gYnoyZi5yZWFkKDEwKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgdGV4dCArPSBzdHIKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RSZWFkQ2h1bmsxME11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICB0ZXh0ID0gYicnCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHN0ciA9IGJ6MmYucmVhZCgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RyOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHRleHQgKz0gc3RyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCisKICAgICBkZWYgdGVzdFJlYWQxMDAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkKDEwMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKDEwMCksIHNlbGYuVEVYVFs6MTAwXSkKIAorICAgIGRlZiB0ZXN0UGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgcGRhdGEgPSBiejJmLnBlZWsoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChsZW4ocGRhdGEpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuVEVYVC5zdGFydHN3aXRoKHBkYXRhKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0UmVhZEludG8oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIG4gPSAxMjgKKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkobikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkaW50byhiKSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi5URVhUWzpuXSkKKyAgICAgICAgICAgIG4gPSBsZW4oc2VsZi5URVhUKSAtIG4KKyAgICAgICAgICAgIGIgPSBieXRlYXJyYXkobGVuKHNlbGYuVEVYVCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGludG8oYiksIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOm5dLCBzZWxmLlRFWFRbLW46XSkKKwogICAgIGRlZiB0ZXN0UmVhZExpbmUoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5yZWFkbGluZSgpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmUsIE5vbmUpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNpby5yZWFkbGluZXMoKToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuVEVYVF9MSU5FUzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmUoKSwgbGluZSkKKworICAgIGRlZiB0ZXN0UmVhZExpbmVNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTUpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLnJlYWRsaW5lLCBOb25lKQorICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5URVhUX0xJTkVTICogNToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmUoKSwgbGluZSkKIAogICAgIGRlZiB0ZXN0UmVhZExpbmVzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUucmVhZGxpbmVzKCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkbGluZXMsIE5vbmUpCi0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkbGluZXMoKSwgc2lvLnJlYWRsaW5lcygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBzZWxmLlRFWFRfTElORVMpCisKKyAgICBkZWYgdGVzdFJlYWRMaW5lc011bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYucmVhZGxpbmVzLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lcygpLCBzZWxmLlRFWFRfTElORVMgKiA1KQogCiAgICAgZGVmIHRlc3RJdGVyYXRvcihzZWxmKToKLSAgICAgICAgIyAiVGVzdCBpdGVyKEJaMkZpbGUpIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6Ci0gICAgICAgICAgICBzaW8gPSBCeXRlc0lPKHNlbGYuVEVYVCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2lvLnJlYWRsaW5lcygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZXIoYnoyZikpLCBzZWxmLlRFWFRfTElORVMpCisKKyAgICBkZWYgdGVzdEl0ZXJhdG9yTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz01KQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKGJ6MmYpKSwgc2VsZi5URVhUX0xJTkVTICogNSkKIAogICAgIGRlZiB0ZXN0Q2xvc2VkSXRlcmF0b3JEZWFkbG9jayhzZWxmKToKLSAgICAgICAgIyAiVGVzdCB0aGF0IGl0ZXJhdGlvbiBvbiBhIGNsb3NlZCBiejJmaWxlIHJlbGVhc2VzIHRoZSBsb2NrLiIKLSAgICAgICAgIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzMwOQorICAgICAgICAjIElzc3VlICMzMzA5OiBJdGVyYXRpb24gb24gYSBjbG9zZWQgQloyRmlsZSBzaG91bGQgcmVsZWFzZSB0aGUgbG9jay4KICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIGJ6MmYgPSBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpCiAgICAgICAgIGJ6MmYuY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLl9fbmV4dF9fKQotICAgICAgICAjIFRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIG9mIHRoZSBhYm92ZSAuX19uZXh0X18gY2FsbCBmYWlsZWQgdG8KKyAgICAgICAgIyBUaGlzIGNhbGwgd2lsbCBkZWFkbG9jayBpZiB0aGUgYWJvdmUgLl9fbmV4dF9fIGNhbGwgZmFpbGVkIHRvCiAgICAgICAgICMgcmVsZWFzZSB0aGUgbG9jay4KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5yZWFkbGluZXMpCiAKICAgICBkZWYgdGVzdFdyaXRlKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUud3JpdGUoKSIKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKICAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQpAQCAtMTQyLDEwICsyMjcsOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdFdyaXRlQ2h1bmtzMTAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS53cml0ZSgpIHdpdGggY2h1bmtzIG9mIDEwIGJ5dGVzIgogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgInciKSBhcyBiejJmOgogICAgICAgICAgICAgbiA9IDAKLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgIHN0ciA9IHNlbGYuVEVYVFtuKjEwOihuKzEpKjEwXQogICAgICAgICAgICAgICAgIGlmIG5vdCBzdHI6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0xNTQsMTMgKzIzOCwxOSBAQAogICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RXcml0ZU5vbkRlZmF1bHRDb21wcmVzc0xldmVsKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IGJ6Mi5jb21wcmVzcyhzZWxmLlRFWFQsIGNvbXByZXNzbGV2ZWw9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IiwgY29tcHJlc3NsZXZlbD01KSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdFdyaXRlTGluZXMoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS53cml0ZWxpbmVzKCkiCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGVsaW5lcykKLSAgICAgICAgICAgIHNpbyA9IEJ5dGVzSU8oc2VsZi5URVhUKQotICAgICAgICAgICAgYnoyZi53cml0ZWxpbmVzKHNpby5yZWFkbGluZXMoKSkKLSAgICAgICAgIyBwYXRjaCAjMTUzNTUwMAorICAgICAgICAgICAgYnoyZi53cml0ZWxpbmVzKHNlbGYuVEVYVF9MSU5FUykKKyAgICAgICAgIyBJc3N1ZSAjMTUzNTUwMDogQ2FsbGluZyB3cml0ZWxpbmVzKCkgb24gYSBjbG9zZWQgQloyRmlsZQorICAgICAgICAjIHNob3VsZCByYWlzZSBhbiBleGNlcHRpb24uCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGVsaW5lcywgWyJhIl0pCiAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAncmInKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoZi5yZWFkKCkpLCBzZWxmLlRFWFQpCkBAIC0xNzMsMzkgKzI2Myw3MyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgYnoyZi53cml0ZSwgYiJhIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIGJ6MmYud3JpdGVsaW5lcywgW2IiYSJdKQogCisgICAgZGVmIHRlc3RBcHBlbmQoc2VsZik6CisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYud3JpdGUpCisgICAgICAgICAgICBiejJmLndyaXRlKHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJhIikgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi53cml0ZSkKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGYucmVhZCgpKSwgc2VsZi5URVhUICogMikKKwogICAgIGRlZiB0ZXN0U2Vla0ZvcndhcmQoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRmlsZS5zZWVrKDE1MCwgMCkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5zZWVrKQogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFsxNTA6XSkKIAorICAgIGRlZiB0ZXN0U2Vla0ZvcndhcmRBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYuc2VlaykKKyAgICAgICAgICAgIGJ6MmYuc2VlayhsZW4oc2VsZi5URVhUKSArIDE1MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFsxNTA6XSkKKwogICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMSkiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYucmVhZCg1MDApCiAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFs1MDAtMTUwOl0pCiAKKyAgICBkZWYgdGVzdFNlZWtCYWNrd2FyZHNBY3Jvc3NTdHJlYW1zKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9MikKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICByZWFkdG8gPSBsZW4oc2VsZi5URVhUKSArIDEwMAorICAgICAgICAgICAgd2hpbGUgcmVhZHRvID4gMDoKKyAgICAgICAgICAgICAgICByZWFkdG8gLT0gbGVuKGJ6MmYucmVhZChyZWFkdG8pKQorICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTAsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbMTAwLTE1MDpdICsgc2VsZi5URVhUKQorCiAgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzRnJvbUVuZChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoLTE1MCwgMikiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKICAgICAgICAgICAgIGJ6MmYuc2VlaygtMTUwLCAyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUW2xlbihzZWxmLlRFWFQpLTE1MDpdKQogCisgICAgZGVmIHRlc3RTZWVrQmFja3dhcmRzRnJvbUVuZEFjcm9zc1N0cmVhbXMoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoc3RyZWFtcz0yKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYuc2VlaygtMTAwMCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIChzZWxmLlRFWFQgKiAyKVstMTAwMDpdKQorCiAgICAgZGVmIHRlc3RTZWVrUG9zdEVuZChzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJGaWxlLnNlZWsoMTUwMDAwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgYiIiKQogCisgICAgZGVmIHRlc3RTZWVrUG9zdEVuZE11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnRlbGwoKSwgbGVuKHNlbGYuVEVYVCkgKiA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgYiIiKQorCiAgICAgZGVmIHRlc3RTZWVrUG9zdEVuZFR3aWNlKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygxNTAwMDApIHR3aWNlIgogICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKICAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CiAgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQpAQCAtMjEzLDI3ICszMzcsMTA5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCBsZW4oc2VsZi5URVhUKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKIAorICAgIGRlZiB0ZXN0U2Vla1Bvc3RFbmRUd2ljZU11bHRpU3RyZWFtKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKHN0cmVhbXM9NSkKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnNlZWsoMTUwMDAwKQorICAgICAgICAgICAgYnoyZi5zZWVrKDE1MDAwMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi50ZWxsKCksIGxlbihzZWxmLlRFWFQpICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGIiIikKKwogICAgIGRlZiB0ZXN0U2Vla1ByZVN0YXJ0KHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkZpbGUuc2VlaygtMTUwLCAwKSIKICAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZSgpCiAgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgogICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUKQogCisgICAgZGVmIHRlc3RTZWVrUHJlU3RhcnRNdWx0aVN0cmVhbShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVUZW1wRmlsZShzdHJlYW1zPTIpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5zZWVrKC0xNTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYudGVsbCgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWQoKSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0RmlsZW5vKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICdyYicpIGFzIHJhd2Y6CisgICAgICAgICAgICBiejJmID0gQloyRmlsZShyYXdmKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5maWxlbm8oKSwgcmF3Zi5maWxlbm8oKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYuZmlsZW5vKQorCisgICAgZGVmIHRlc3RTZWVrYWJsZShzZWxmKToKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTyhzZWxmLkRBVEEpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5zZWVrYWJsZSgpKQorICAgICAgICAgICAgYnoyZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksIG1vZGU9InciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ6MmYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJ6MmYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiejJmLnNlZWthYmxlKQorCisgICAgICAgIHNyYyA9IEJ5dGVzSU8oc2VsZi5EQVRBKQorICAgICAgICBzcmMuc2Vla2FibGUgPSBsYW1iZGE6IEZhbHNlCisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKHNyYykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnNlZWthYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5zZWVrYWJsZSkKKworICAgIGRlZiB0ZXN0UmVhZGFibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ6MmYucmVhZGFibGUoKSkKKyAgICAgICAgICAgIGJ6MmYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYucmVhZGFibGUpCisKKyAgICAgICAgYnoyZiA9IEJaMkZpbGUoQnl0ZXNJTygpLCBtb2RlPSJ3IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi5yZWFkYWJsZSkKKworICAgIGRlZiB0ZXN0V3JpdGFibGUoc2VsZik6CisgICAgICAgIGJ6MmYgPSBCWjJGaWxlKEJ5dGVzSU8oc2VsZi5EQVRBKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBiejJmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiejJmLndyaXRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejJmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYnoyZi53cml0YWJsZSkKKworICAgICAgICBiejJmID0gQloyRmlsZShCeXRlc0lPKCksIG1vZGU9InciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnoyZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnoyZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6MmYud3JpdGFibGUpCisKICAgICBkZWYgdGVzdE9wZW5EZWwoc2VsZik6Ci0gICAgICAgICMgIlRlc3Qgb3BlbmluZyBhbmQgZGVsZXRpbmcgYSBmaWxlIG1hbnkgdGltZXMiCiAgICAgICAgIHNlbGYuY3JlYXRlVGVtcEZpbGUoKQogICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwMCk6CiAgICAgICAgICAgICBvID0gQloyRmlsZShzZWxmLmZpbGVuYW1lKQogICAgICAgICAgICAgZGVsIG8KIAogICAgIGRlZiB0ZXN0T3Blbk5vbmV4aXN0ZW50KHNlbGYpOgotICAgICAgICAjICJUZXN0IG9wZW5pbmcgYSBub25leGlzdGVudCBmaWxlIgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBCWjJGaWxlLCAiL25vbi9leGlzdGVudCIpCiAKLSAgICBkZWYgdGVzdEJ1ZzExOTEwNDMoc2VsZik6Ci0gICAgICAgICMgcmVhZGxpbmVzKCkgZm9yIGZpbGVzIGNvbnRhaW5pbmcgbm8gbmV3bGluZQorICAgIGRlZiB0ZXN0UmVhZGxpbmVzTm9OZXdsaW5lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMTkxMDQzOiByZWFkbGluZXMoKSBmYWlscyBvbiBhIGZpbGUgY29udGFpbmluZyBubyBuZXdsaW5lLgogICAgICAgICBkYXRhID0gYidCWmg5MUFZJlNZXHhkOWJceDg5XVx4MDBceDAwXHgwMFx4MDNceDgwXHgwNFx4MDBceDAyXHgwMFx4MGNceDAwIFx4MDAhXHg5YWgzTVx4MTM8XVx4YzlceDE0XHhlMUJDZVx4OGEldCcKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCkBAIC0yNDUsNyArNDUxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4bGluZXMsIFtiJ1Rlc3QnXSkKIAogICAgIGRlZiB0ZXN0Q29udGV4dFByb3RvY29sKHNlbGYpOgotICAgICAgICAjIEJaMkZpbGUgc3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbAogICAgICAgICBmID0gTm9uZQogICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYiJ4eHgiKQpAQCAtMjY4LDcgKzQ3Myw3IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogICAgIGRlZiB0ZXN0VGhyZWFkaW5nKHNlbGYpOgotICAgICAgICAjIFVzaW5nIGEgQloyRmlsZSBmcm9tIHNldmVyYWwgdGhyZWFkcyBkb2Vzbid0IGRlYWRsb2NrIChpc3N1ZSAjNzIwNSkuCisgICAgICAgICMgSXNzdWUgIzcyMDU6IFVzaW5nIGEgQloyRmlsZSBmcm9tIHNldmVyYWwgdGhyZWFkcyBzaG91bGRuJ3QgZGVhZGxvY2suCiAgICAgICAgIGRhdGEgPSBiIjEiICogMioqMjAKICAgICAgICAgbnRocmVhZHMgPSAxMAogICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICd3YicpIGFzIGY6CkBAIC0yODEsMjIgKzQ4Niw5OCBAQAogICAgICAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKICAgICAgICAgICAgICAgICB0LmpvaW4oKQogCi0gICAgZGVmIHRlc3RNaXhlZEl0ZXJhdGlvblJlYWRzKHNlbGYpOgotICAgICAgICAjIElzc3VlICM4Mzk3OiBtaXhlZCBpdGVyYXRpb24gYW5kIHJlYWRzIHNob3VsZCBiZSBmb3JiaWRkZW4uCi0gICAgICAgIHdpdGggYnoyLkJaMkZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgICMgVGhlIGludGVybmFsIGJ1ZmZlciBzaXplIGlzIGhhcmQtd2lyZWQgdG8gODE5MiBieXRlcywgd2UgbXVzdAotICAgICAgICAgICAgIyB3cml0ZSBvdXQgbW9yZSB0aGFuIHRoYXQgZm9yIHRoZSB0ZXN0IHRvIHN0b3AgaGFsZiB0aHJvdWdoCi0gICAgICAgICAgICAjIHRoZSBidWZmZXIuCi0gICAgICAgICAgICBmLndyaXRlKHNlbGYuVEVYVCAqIDEwMCkKLSAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAncmInKSBhcyBmOgotICAgICAgICAgICAgbmV4dChmKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkbGluZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmVzKQorICAgIGRlZiB0ZXN0V2l0aG91dFRocmVhZGluZyhzZWxmKToKKyAgICAgICAgYnoyID0gc3VwcG9ydC5pbXBvcnRfZnJlc2hfbW9kdWxlKCJiejIiLCBibG9ja2VkPSgidGhyZWFkaW5nIiwpKQorICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiYWJjIikKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiJhYmMiKQorCisgICAgZGVmIHRlc3RNaXhlZEl0ZXJhdGlvbkFuZFJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZVRlbXBGaWxlKCkKKyAgICAgICAgbGluZWxlbiA9IGxlbihzZWxmLlRFWFRfTElORVNbMF0pCisgICAgICAgIGhhbGZsZW4gPSBsaW5lbGVuIC8vIDIKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5yZWFkKGhhbGZsZW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYnoyZiksIHNlbGYuVEVYVF9MSU5FU1swXVtoYWxmbGVuOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbbGluZWxlbjpdKQorICAgICAgICB3aXRoIGJ6Mi5CWjJGaWxlKHNlbGYuZmlsZW5hbWUpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLnJlYWRsaW5lKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChiejJmKSwgc2VsZi5URVhUX0xJTkVTWzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJmLnJlYWRsaW5lKCksIHNlbGYuVEVYVF9MSU5FU1syXSkKKyAgICAgICAgd2l0aCBiejIuQloyRmlsZShzZWxmLmZpbGVuYW1lKSBhcyBiejJmOgorICAgICAgICAgICAgYnoyZi5yZWFkbGluZXMoKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBuZXh0KGJ6MmYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZGxpbmVzKCksIFtdKQorCisgICAgZGVmIHRlc3RNdWx0aVN0cmVhbU9yZGVyaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIG9yZGVyaW5nIG9mIHN0cmVhbXMgd2hlbiByZWFkaW5nIGEgbXVsdGktc3RyZWFtIGFyY2hpdmUuCisgICAgICAgIGRhdGExID0gYiJmb28iICogMTAwMAorICAgICAgICBkYXRhMiA9IGIiYmFyIiAqIDEwMDAKKyAgICAgICAgd2l0aCBCWjJGaWxlKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgYnoyZjoKKyAgICAgICAgICAgIGJ6MmYud3JpdGUoZGF0YTEpCisgICAgICAgIHdpdGggQloyRmlsZShzZWxmLmZpbGVuYW1lLCAiYSIpIGFzIGJ6MmY6CisgICAgICAgICAgICBiejJmLndyaXRlKGRhdGEyKQorICAgICAgICB3aXRoIEJaMkZpbGUoc2VsZi5maWxlbmFtZSkgYXMgYnoyZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIGRhdGExICsgZGF0YTIpCisKKyAgICBkZWYgdGVzdE9wZW5CeXRlc0ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBzdHJfZmlsZW5hbWUgPSBzZWxmLmZpbGVuYW1lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ5dGVzX2ZpbGVuYW1lID0gc3RyX2ZpbGVuYW1lLmVuY29kZSgiYXNjaWkiKQorICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGVtcG9yYXJ5IGZpbGUgbmFtZSBuZWVkcyB0byBiZSBBU0NJSSIpCisgICAgICAgIHdpdGggQloyRmlsZShieXRlc19maWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5EQVRBKQorICAgICAgICB3aXRoIEJaMkZpbGUoYnl0ZXNfZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisgICAgICAgICMgU2FuaXR5IGNoZWNrIHRoYXQgd2UgYXJlIGFjdHVhbGx5IG9wZXJhdGluZyBvbiB0aGUgcmlnaHQgZmlsZS4KKyAgICAgICAgd2l0aCBCWjJGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKKworCisgICAgIyBUZXN0cyBmb3IgYSBCWjJGaWxlIHdyYXBwaW5nIGFub3RoZXIgZmlsZSBvYmplY3Q6CisKKyAgICBkZWYgdGVzdFJlYWRCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oc2VsZi5EQVRBKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvKSBhcyBiejJmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYnoyZi5yZWFkLCBOb25lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmlvLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0UGVla0J5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgcGRhdGEgPSBiejJmLnBlZWsoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHBkYXRhKSwgMCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5URVhULnN0YXJ0c3dpdGgocGRhdGEpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVCkKKworICAgIGRlZiB0ZXN0V3JpdGVCeXRlc0lPKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIEJaMkZpbGUoYmlvLCAidyIpIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBiejJmLndyaXRlKQorICAgICAgICAgICAgICAgIGJ6MmYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLCBzZWxmLlRFWFQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJpby5jbG9zZWQpCisKKyAgICBkZWYgdGVzdFNlZWtGb3J3YXJkQnl0ZXNJTyhzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKHNlbGYuREFUQSkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBCWjJGaWxlKGJpbykgYXMgYnoyZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmYuc2VlaykKKyAgICAgICAgICAgICAgICBiejJmLnNlZWsoMTUwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnoyZi5yZWFkKCksIHNlbGYuVEVYVFsxNTA6XSkKKworICAgIGRlZiB0ZXN0U2Vla0JhY2t3YXJkc0J5dGVzSU8oc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhzZWxmLkRBVEEpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggQloyRmlsZShiaW8pIGFzIGJ6MmY6CisgICAgICAgICAgICAgICAgYnoyZi5yZWFkKDUwMCkKKyAgICAgICAgICAgICAgICBiejJmLnNlZWsoLTE1MCwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6MmYucmVhZCgpLCBzZWxmLlRFWFRbNTAwLTE1MDpdKQogCiBjbGFzcyBCWjJDb21wcmVzc29yVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RDb21wcmVzcyhzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJDb21wcmVzc29yLmNvbXByZXNzKCkvZmx1c2goKSIKICAgICAgICAgYnoyYyA9IEJaMkNvbXByZXNzb3IoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmMuY29tcHJlc3MpCiAgICAgICAgIGRhdGEgPSBiejJjLmNvbXByZXNzKHNlbGYuVEVYVCkKQEAgLTMwNCwxMSArNTg1LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kZWNvbXByZXNzKGRhdGEpLCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdENvbXByZXNzQ2h1bmtzMTAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyQ29tcHJlc3Nvci5jb21wcmVzcygpL2ZsdXNoKCkgd2l0aCBjaHVua3Mgb2YgMTAgYnl0ZXMiCiAgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKICAgICAgICAgbiA9IDAKICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICB3aGlsZSAxOgorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgc3RyID0gc2VsZi5URVhUW24qMTA6KG4rMSkqMTBdCiAgICAgICAgICAgICBpZiBub3Qgc3RyOgogICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0zMTcsMzQgKzU5NywzOCBAQAogICAgICAgICBkYXRhICs9IGJ6MmMuZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhkYXRhKSwgc2VsZi5URVhUKQogCi0gICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcsIG1lbXVzZT0xLjI1KQotICAgIGRlZiB0ZXN0QmlnbWVtKHNlbGYsIHNpemUpOgotICAgICAgICB0ZXh0ID0gYiJhIiAqIHNpemUKLSAgICAgICAgYnoyYyA9IGJ6Mi5CWjJDb21wcmVzc29yKCkKLSAgICAgICAgZGF0YSA9IGJ6MmMuY29tcHJlc3ModGV4dCkgKyBiejJjLmZsdXNoKCkKLSAgICAgICAgZGVsIHRleHQKLSAgICAgICAgdGV4dCA9IHNlbGYuZGVjb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgc2l6ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnN0cmlwKGIiYSIpLCBiIiIpCi0KKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RDb21wcmVzczRHKHNlbGYsIHNpemUpOgorICAgICAgICAjICJUZXN0IEJaMkNvbXByZXNzb3IuY29tcHJlc3MoKS9mbHVzaCgpIHdpdGggPjRHaUIgaW5wdXQiCisgICAgICAgIGJ6MmMgPSBCWjJDb21wcmVzc29yKCkKKyAgICAgICAgZGF0YSA9IGIieCIgKiBzaXplCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBiejJjLmNvbXByZXNzKGRhdGEpCisgICAgICAgICAgICBjb21wcmVzc2VkICs9IGJ6MmMuZmx1c2goKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGF0YSA9IE5vbmUgICMgUmVsZWFzZSBtZW1vcnkKKyAgICAgICAgZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGNvbXByZXNzZWQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YS5zdHJpcChiIngiKSksIDApCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkYXRhID0gTm9uZQogCiBjbGFzcyBCWjJEZWNvbXByZXNzb3JUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdF9Db25zdHJ1Y3RvcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBCWjJEZWNvbXByZXNzb3IsIDQyKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzKHNlbGYpOgotICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkiCiAgICAgICAgIGJ6MmQgPSBCWjJEZWNvbXByZXNzb3IoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ6MmQuZGVjb21wcmVzcykKICAgICAgICAgdGV4dCA9IGJ6MmQuZGVjb21wcmVzcyhzZWxmLkRBVEEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzQ2h1bmtzMTAoc2VsZik6Ci0gICAgICAgICMgIlRlc3QgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSB3aXRoIGNodW5rcyBvZiAxMCBieXRlcyIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHRleHQgPSBiJycKICAgICAgICAgbiA9IDAKLSAgICAgICAgd2hpbGUgMToKKyAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHN0ciA9IHNlbGYuREFUQVtuKjEwOihuKzEpKjEwXQogICAgICAgICAgICAgaWYgbm90IHN0cjoKICAgICAgICAgICAgICAgICBicmVhawpAQCAtMzUzLDcgKzYzNyw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzVW51c2VkRGF0YShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBCWjJEZWNvbXByZXNzb3IuZGVjb21wcmVzcygpIHdpdGggdW51c2VkIGRhdGEiCiAgICAgICAgIGJ6MmQgPSBCWjJEZWNvbXByZXNzb3IoKQogICAgICAgICB1bnVzZWRfZGF0YSA9IGIidGhpcyBpcyB1bnVzZWQgZGF0YSIKICAgICAgICAgdGV4dCA9IGJ6MmQuZGVjb21wcmVzcyhzZWxmLkRBVEErdW51c2VkX2RhdGEpCkBAIC0zNjEsNjcgKzY0NCwxNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiejJkLnVudXNlZF9kYXRhLCB1bnVzZWRfZGF0YSkKIAogICAgIGRlZiB0ZXN0RU9GRXJyb3Ioc2VsZik6Ci0gICAgICAgICMgIkNhbGxpbmcgQloyRGVjb21wcmVzc29yLmRlY29tcHJlc3MoKSBhZnRlciBFT1MgbXVzdCByYWlzZSBFT0ZFcnJvciIKICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCiAgICAgICAgIHRleHQgPSBiejJkLmRlY29tcHJlc3Moc2VsZi5EQVRBKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvciwgYnoyZC5kZWNvbXByZXNzLCBiImFueXRoaW5nIikKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHLCBtZW11c2U9MS4yNSwgZHJ5X3J1bj1GYWxzZSkKLSAgICBkZWYgdGVzdEJpZ21lbShzZWxmLCB1bnVzZWRfc2l6ZSk6Ci0gICAgICAgICMgSXNzdWUgIzE0Mzk4OiBkZWNvbXByZXNzaW9uIGZhaWxzIHdoZW4gb3V0cHV0IGRhdGEgaXMgPj0yR0IuCi0gICAgICAgIHRleHQgPSBiejIuQloyRGVjb21wcmVzc29yKCkuZGVjb21wcmVzcyhzZWxmLkRBVEFfQklHTUVNKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgXzRHKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQuc3RyaXAoYiJcMCIpLCBiIiIpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0RGVjb21wcmVzczRHKHNlbGYsIHNpemUpOgorICAgICAgICAjICJUZXN0IEJaMkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKCkgd2l0aCA+NEdpQiBpbnB1dCIKKyAgICAgICAgYmxvY2tzaXplID0gMTAgKiAxMDI0ICogMTAyNAorICAgICAgICBibG9jayA9IHJhbmRvbS5nZXRyYW5kYml0cyhibG9ja3NpemUgKiA4KS50b19ieXRlcyhibG9ja3NpemUsICdsaXR0bGUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY29tcHJlc3NlZCA9IGJ6Mi5jb21wcmVzcyhkYXRhKQorICAgICAgICAgICAgYnoyZCA9IEJaMkRlY29tcHJlc3NvcigpCisgICAgICAgICAgICBkZWNvbXByZXNzZWQgPSBiejJkLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkZWNvbXByZXNzZWQgPT0gZGF0YSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRhdGEgPSBOb25lCisgICAgICAgICAgICBjb21wcmVzc2VkID0gTm9uZQorICAgICAgICAgICAgZGVjb21wcmVzc2VkID0gTm9uZQogCiAKLWNsYXNzIEZ1bmNUZXN0KEJhc2VUZXN0KToKLSAgICAiVGVzdCBtb2R1bGUgZnVuY3Rpb25zIgotCitjbGFzcyBDb21wcmVzc0RlY29tcHJlc3NUZXN0KEJhc2VUZXN0KToKICAgICBkZWYgdGVzdENvbXByZXNzKHNlbGYpOgotICAgICAgICAjICJUZXN0IGNvbXByZXNzKCkgZnVuY3Rpb24iCiAgICAgICAgIGRhdGEgPSBiejIuY29tcHJlc3Moc2VsZi5URVhUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGVjb21wcmVzcyhkYXRhKSwgc2VsZi5URVhUKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzKHNlbGYpOgotICAgICAgICAjICJUZXN0IGRlY29tcHJlc3MoKSBmdW5jdGlvbiIKICAgICAgICAgdGV4dCA9IGJ6Mi5kZWNvbXByZXNzKHNlbGYuREFUQSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCBzZWxmLlRFWFQpCiAKICAgICBkZWYgdGVzdERlY29tcHJlc3NFbXB0eShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24gd2l0aCBlbXB0eSBzdHJpbmciCiAgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dCwgYiIiKQogCiAgICAgZGVmIHRlc3REZWNvbXByZXNzSW5jb21wbGV0ZShzZWxmKToKLSAgICAgICAgIyAiVGVzdCBkZWNvbXByZXNzKCkgZnVuY3Rpb24gd2l0aCBpbmNvbXBsZXRlIGRhdGEiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ6Mi5kZWNvbXByZXNzLCBzZWxmLkRBVEFbOi0xMF0pCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUpCi0gICAgZGVmIHRlc3RDb21wcmVzc0JpZ21lbShzZWxmLCBzaXplKToKLSAgICAgICAgdGV4dCA9IGIiYSIgKiBzaXplCi0gICAgICAgIGRhdGEgPSBiejIuY29tcHJlc3ModGV4dCkKLSAgICAgICAgZGVsIHRleHQKLSAgICAgICAgdGV4dCA9IHNlbGYuZGVjb21wcmVzcyhkYXRhKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgc2l6ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LnN0cmlwKGIiYSIpLCBiIiIpCisgICAgZGVmIHRlc3REZWNvbXByZXNzTXVsdGlTdHJlYW0oc2VsZik6CisgICAgICAgIHRleHQgPSBiejIuZGVjb21wcmVzcyhzZWxmLkRBVEEgKiA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHNlbGYuVEVYVCAqIDUpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RywgbWVtdXNlPTEuMjUsIGRyeV9ydW49RmFsc2UpCi0gICAgZGVmIHRlc3REZWNvbXByZXNzQmlnbWVtKHNlbGYsIHVudXNlZF9zaXplKToKLSAgICAgICAgIyBJc3N1ZSAjMTQzOTg6IGRlY29tcHJlc3Npb24gZmFpbHMgd2hlbiBvdXRwdXQgZGF0YSBpcyA+PTJHQi4KLSAgICAgICAgdGV4dCA9IGJ6Mi5kZWNvbXByZXNzKHNlbGYuREFUQV9CSUdNRU0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHRleHQpLCBfNEcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5zdHJpcChiIlwwIiksIGIiIikKKworY2xhc3MgT3BlblRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCAqIDIpCisKKyAgICBkZWYgdGVzdF9pbXBsaWNpdF9iaW5hcnlfbW9kZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbXBsaWNpdCBiaW5hcnkgbW9kZXMgKG5vICJiIiBvciAidCIgaW4gbW9kZSBzdHJpbmcpLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5URVhUKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgImEiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzZWxmLlRFWFQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgc2VsZi5URVhUICogMikKKworICAgIGRlZiB0ZXN0X3RleHRfbW9kZXMoc2VsZik6CisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHRleHRfbmF0aXZlX2VvbCA9IHRleHQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHRleHQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gYnoyLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAiYXQiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGJ6Mi5kZWNvbXByZXNzKGYucmVhZCgpKS5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB0ZXh0X25hdGl2ZV9lb2wgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuVEVYVCkKKyAgICAgICAgd2l0aCBiejIub3BlbihCeXRlc0lPKHNlbGYuREFUQSksICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLlRFWFQpCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oQnl0ZXNJTyhzZWxmLkRBVEEpLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2JhZF9wYXJhbXMoc2VsZik6CisgICAgICAgICMgVGVzdCBpbnZhbGlkIHBhcmFtZXRlciBjb21iaW5hdGlvbnMuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlcnJvcnM9Imlnbm9yZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB0ZXh0ID0gc2VsZi5URVhULmRlY29kZSgiYXNjaWkiKQorICAgICAgICB0ZXh0X25hdGl2ZV9lb2wgPSB0ZXh0LnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBiejIuZGVjb21wcmVzcyhmLnJlYWQoKSkuZGVjb2RlKCJ1dGYtMTYtbGUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHRleHRfbmF0aXZlX2VvbCkKKyAgICAgICAgd2l0aCBiejIub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2LWxlIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHRleHQpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZ19lcnJvcl9oYW5kbGVyKHNlbGYpOgorICAgICAgICAjIFRlc3Qgd2l0aCBub24tZGVmYXVsdCBlbmNvZGluZyBlcnJvciBoYW5kbGVyLgorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBcCisgICAgICAgICAgICAgICAgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBzZWxmLlRFWFQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHdpdGggYnoyLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgbmV3bGluZT0iXG4iKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICB3aXRoIGJ6Mi5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIG5ld2xpbmU9IlxyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgQloyRmlsZVRlc3QsCiAgICAgICAgIEJaMkNvbXByZXNzb3JUZXN0LAogICAgICAgICBCWjJEZWNvbXByZXNzb3JUZXN0LAotICAgICAgICBGdW5jVGVzdAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NUZXN0LAorICAgICAgICBPcGVuVGVzdCwKICAgICApCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQotCi0jIHZpbTp0cz00OnN3PTQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CmluZGV4IDk0OGExMTkuLmU1OTRlMDEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQpAQCAtNSw4ICs1LDE5IEBACiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vawogaW1wb3J0IHRpbWUKIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBzeXMKIGltcG9ydCBkYXRldGltZQogCityZXN1bHRfMjAwNF8wMV90ZXh0ID0gIiIiCisgICAgSmFudWFyeSAyMDA0CitNbyBUdSBXZSBUaCBGciBTYSBTdQorICAgICAgICAgIDEgIDIgIDMgIDQKKyA1ICA2ICA3ICA4ICA5IDEwIDExCisxMiAxMyAxNCAxNSAxNiAxNyAxOAorMTkgMjAgMjEgMjIgMjMgMjQgMjUKKzI2IDI3IDI4IDI5IDMwIDMxCisiIiIKKwogcmVzdWx0XzIwMDRfdGV4dCA9ICIiIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMDQKIApAQCAtNDYsMTEgKzU3LDExIEBACiAiIiIKIAogcmVzdWx0XzIwMDRfaHRtbCA9ICIiIgotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iYXNjaWkiPz4KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiUoZSlzIj8+CiA8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+CiA8aHRtbD4KIDxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9YXNjaWkiIC8+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD0lKGUpcyIgLz4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNhbGVuZGFyLmNzcyIgLz4KIDx0aXRsZT5DYWxlbmRhciBmb3IgMjAwNDwvdGl0bGU+CiA8L2hlYWQ+CkBAIC0xNzAsNiArMTgxLDEzNSBAQAogPC9odG1sPgogIiIiCiAKK3Jlc3VsdF8yMDA0X2RheXMgPSBbCisgICAgW1tbMCwgMCwgMCwgMSwgMiwgMywgNF0sCisgICAgICBbNSwgNiwgNywgOCwgOSwgMTAsIDExXSwKKyAgICAgIFsxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOF0sCisgICAgICBbMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVdLAorICAgICAgWzI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDBdXSwKKyAgICAgW1swLCAwLCAwLCAwLCAwLCAwLCAxXSwKKyAgICAgIFsyLCAzLCA0LCA1LCA2LCA3LCA4XSwKKyAgICAgIFs5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1XSwKKyAgICAgIFsxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMl0sCisgICAgICBbMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjldXSwKKyAgICAgW1sxLCAyLCAzLCA0LCA1LCA2LCA3XSwKKyAgICAgIFs4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTRdLAorICAgICAgWzE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxXSwKKyAgICAgIFsyMiwgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOF0sCisgICAgICBbMjksIDMwLCAzMSwgMCwgMCwgMCwgMF1dXSwKKyAgICBbW1swLCAwLCAwLCAxLCAyLCAzLCA0XSwKKyAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMCwgMTFdLAorICAgICAgWzEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XSwKKyAgICAgIFsxOSwgMjAsIDIxLCAyMiwgMjMsIDI0LCAyNV0sCisgICAgICBbMjYsIDI3LCAyOCwgMjksIDMwLCAwLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMSwgMl0sCisgICAgICBbMywgNCwgNSwgNiwgNywgOCwgOV0sCisgICAgICBbMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTZdLAorICAgICAgWzE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzXSwKKyAgICAgIFsyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMF0sCisgICAgICBbMzEsIDAsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAxLCAyLCAzLCA0LCA1LCA2XSwKKyAgICAgIFs3LCA4LCA5LCAxMCwgMTEsIDEyLCAxM10sCisgICAgICBbMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjBdLAorICAgICAgWzIxLCAyMiwgMjMsIDI0LCAyNSwgMjYsIDI3XSwKKyAgICAgIFsyOCwgMjksIDMwLCAwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDEsIDIsIDMsIDRdLAorICAgICAgWzUsIDYsIDcsIDgsIDksIDEwLCAxMV0sCisgICAgICBbMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThdLAorICAgICAgWzE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XSwKKyAgICAgIFsyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAwXV0sCisgICAgIFtbMCwgMCwgMCwgMCwgMCwgMCwgMV0sCisgICAgICBbMiwgMywgNCwgNSwgNiwgNywgOF0sCisgICAgICBbOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNV0sCisgICAgICBbMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjJdLAorICAgICAgWzIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5XSwKKyAgICAgIFszMCwgMzEsIDAsIDAsIDAsIDAsIDBdXSwKKyAgICAgW1swLCAwLCAxLCAyLCAzLCA0LCA1XSwKKyAgICAgIFs2LCA3LCA4LCA5LCAxMCwgMTEsIDEyXSwKKyAgICAgIFsxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOV0sCisgICAgICBbMjAsIDIxLCAyMiwgMjMsIDI0LCAyNSwgMjZdLAorICAgICAgWzI3LCAyOCwgMjksIDMwLCAwLCAwLCAwXV1dLAorICAgIFtbWzAsIDAsIDAsIDAsIDEsIDIsIDNdLAorICAgICAgWzQsIDUsIDYsIDcsIDgsIDksIDEwXSwKKyAgICAgIFsxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10sCisgICAgICBbMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjRdLAorICAgICAgWzI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxXV0sCisgICAgIFtbMSwgMiwgMywgNCwgNSwgNiwgN10sCisgICAgICBbOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0XSwKKyAgICAgIFsxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCAyMV0sCisgICAgICBbMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjhdLAorICAgICAgWzI5LCAzMCwgMCwgMCwgMCwgMCwgMF1dLAorICAgICBbWzAsIDAsIDEsIDIsIDMsIDQsIDVdLAorICAgICAgWzYsIDcsIDgsIDksIDEwLCAxMSwgMTJdLAorICAgICAgWzEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5XSwKKyAgICAgIFsyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNl0sCisgICAgICBbMjcsIDI4LCAyOSwgMzAsIDMxLCAwLCAwXV1dCitdCisKK3Jlc3VsdF8yMDA0X2RhdGVzID0gXAorICAgIFtbWycxMi8yOS8wMyAxMi8zMC8wMyAxMi8zMS8wMyAwMS8wMS8wNCAwMS8wMi8wNCAwMS8wMy8wNCAwMS8wNC8wNCcsCisgICAgICAgJzAxLzA1LzA0IDAxLzA2LzA0IDAxLzA3LzA0IDAxLzA4LzA0IDAxLzA5LzA0IDAxLzEwLzA0IDAxLzExLzA0JywKKyAgICAgICAnMDEvMTIvMDQgMDEvMTMvMDQgMDEvMTQvMDQgMDEvMTUvMDQgMDEvMTYvMDQgMDEvMTcvMDQgMDEvMTgvMDQnLAorICAgICAgICcwMS8xOS8wNCAwMS8yMC8wNCAwMS8yMS8wNCAwMS8yMi8wNCAwMS8yMy8wNCAwMS8yNC8wNCAwMS8yNS8wNCcsCisgICAgICAgJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0J10sCisgICAgICBbJzAxLzI2LzA0IDAxLzI3LzA0IDAxLzI4LzA0IDAxLzI5LzA0IDAxLzMwLzA0IDAxLzMxLzA0IDAyLzAxLzA0JywKKyAgICAgICAnMDIvMDIvMDQgMDIvMDMvMDQgMDIvMDQvMDQgMDIvMDUvMDQgMDIvMDYvMDQgMDIvMDcvMDQgMDIvMDgvMDQnLAorICAgICAgICcwMi8wOS8wNCAwMi8xMC8wNCAwMi8xMS8wNCAwMi8xMi8wNCAwMi8xMy8wNCAwMi8xNC8wNCAwMi8xNS8wNCcsCisgICAgICAgJzAyLzE2LzA0IDAyLzE3LzA0IDAyLzE4LzA0IDAyLzE5LzA0IDAyLzIwLzA0IDAyLzIxLzA0IDAyLzIyLzA0JywKKyAgICAgICAnMDIvMjMvMDQgMDIvMjQvMDQgMDIvMjUvMDQgMDIvMjYvMDQgMDIvMjcvMDQgMDIvMjgvMDQgMDIvMjkvMDQnXSwKKyAgICAgIFsnMDMvMDEvMDQgMDMvMDIvMDQgMDMvMDMvMDQgMDMvMDQvMDQgMDMvMDUvMDQgMDMvMDYvMDQgMDMvMDcvMDQnLAorICAgICAgICcwMy8wOC8wNCAwMy8wOS8wNCAwMy8xMC8wNCAwMy8xMS8wNCAwMy8xMi8wNCAwMy8xMy8wNCAwMy8xNC8wNCcsCisgICAgICAgJzAzLzE1LzA0IDAzLzE2LzA0IDAzLzE3LzA0IDAzLzE4LzA0IDAzLzE5LzA0IDAzLzIwLzA0IDAzLzIxLzA0JywKKyAgICAgICAnMDMvMjIvMDQgMDMvMjMvMDQgMDMvMjQvMDQgMDMvMjUvMDQgMDMvMjYvMDQgMDMvMjcvMDQgMDMvMjgvMDQnLAorICAgICAgICcwMy8yOS8wNCAwMy8zMC8wNCAwMy8zMS8wNCAwNC8wMS8wNCAwNC8wMi8wNCAwNC8wMy8wNCAwNC8wNC8wNCddXSwKKyAgICAgW1snMDMvMjkvMDQgMDMvMzAvMDQgMDMvMzEvMDQgMDQvMDEvMDQgMDQvMDIvMDQgMDQvMDMvMDQgMDQvMDQvMDQnLAorICAgICAgICcwNC8wNS8wNCAwNC8wNi8wNCAwNC8wNy8wNCAwNC8wOC8wNCAwNC8wOS8wNCAwNC8xMC8wNCAwNC8xMS8wNCcsCisgICAgICAgJzA0LzEyLzA0IDA0LzEzLzA0IDA0LzE0LzA0IDA0LzE1LzA0IDA0LzE2LzA0IDA0LzE3LzA0IDA0LzE4LzA0JywKKyAgICAgICAnMDQvMTkvMDQgMDQvMjAvMDQgMDQvMjEvMDQgMDQvMjIvMDQgMDQvMjMvMDQgMDQvMjQvMDQgMDQvMjUvMDQnLAorICAgICAgICcwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCddLAorICAgICAgWycwNC8yNi8wNCAwNC8yNy8wNCAwNC8yOC8wNCAwNC8yOS8wNCAwNC8zMC8wNCAwNS8wMS8wNCAwNS8wMi8wNCcsCisgICAgICAgJzA1LzAzLzA0IDA1LzA0LzA0IDA1LzA1LzA0IDA1LzA2LzA0IDA1LzA3LzA0IDA1LzA4LzA0IDA1LzA5LzA0JywKKyAgICAgICAnMDUvMTAvMDQgMDUvMTEvMDQgMDUvMTIvMDQgMDUvMTMvMDQgMDUvMTQvMDQgMDUvMTUvMDQgMDUvMTYvMDQnLAorICAgICAgICcwNS8xNy8wNCAwNS8xOC8wNCAwNS8xOS8wNCAwNS8yMC8wNCAwNS8yMS8wNCAwNS8yMi8wNCAwNS8yMy8wNCcsCisgICAgICAgJzA1LzI0LzA0IDA1LzI1LzA0IDA1LzI2LzA0IDA1LzI3LzA0IDA1LzI4LzA0IDA1LzI5LzA0IDA1LzMwLzA0JywKKyAgICAgICAnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnXSwKKyAgICAgIFsnMDUvMzEvMDQgMDYvMDEvMDQgMDYvMDIvMDQgMDYvMDMvMDQgMDYvMDQvMDQgMDYvMDUvMDQgMDYvMDYvMDQnLAorICAgICAgICcwNi8wNy8wNCAwNi8wOC8wNCAwNi8wOS8wNCAwNi8xMC8wNCAwNi8xMS8wNCAwNi8xMi8wNCAwNi8xMy8wNCcsCisgICAgICAgJzA2LzE0LzA0IDA2LzE1LzA0IDA2LzE2LzA0IDA2LzE3LzA0IDA2LzE4LzA0IDA2LzE5LzA0IDA2LzIwLzA0JywKKyAgICAgICAnMDYvMjEvMDQgMDYvMjIvMDQgMDYvMjMvMDQgMDYvMjQvMDQgMDYvMjUvMDQgMDYvMjYvMDQgMDYvMjcvMDQnLAorICAgICAgICcwNi8yOC8wNCAwNi8yOS8wNCAwNi8zMC8wNCAwNy8wMS8wNCAwNy8wMi8wNCAwNy8wMy8wNCAwNy8wNC8wNCddXSwKKyAgICAgW1snMDYvMjgvMDQgMDYvMjkvMDQgMDYvMzAvMDQgMDcvMDEvMDQgMDcvMDIvMDQgMDcvMDMvMDQgMDcvMDQvMDQnLAorICAgICAgICcwNy8wNS8wNCAwNy8wNi8wNCAwNy8wNy8wNCAwNy8wOC8wNCAwNy8wOS8wNCAwNy8xMC8wNCAwNy8xMS8wNCcsCisgICAgICAgJzA3LzEyLzA0IDA3LzEzLzA0IDA3LzE0LzA0IDA3LzE1LzA0IDA3LzE2LzA0IDA3LzE3LzA0IDA3LzE4LzA0JywKKyAgICAgICAnMDcvMTkvMDQgMDcvMjAvMDQgMDcvMjEvMDQgMDcvMjIvMDQgMDcvMjMvMDQgMDcvMjQvMDQgMDcvMjUvMDQnLAorICAgICAgICcwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCddLAorICAgICAgWycwNy8yNi8wNCAwNy8yNy8wNCAwNy8yOC8wNCAwNy8yOS8wNCAwNy8zMC8wNCAwNy8zMS8wNCAwOC8wMS8wNCcsCisgICAgICAgJzA4LzAyLzA0IDA4LzAzLzA0IDA4LzA0LzA0IDA4LzA1LzA0IDA4LzA2LzA0IDA4LzA3LzA0IDA4LzA4LzA0JywKKyAgICAgICAnMDgvMDkvMDQgMDgvMTAvMDQgMDgvMTEvMDQgMDgvMTIvMDQgMDgvMTMvMDQgMDgvMTQvMDQgMDgvMTUvMDQnLAorICAgICAgICcwOC8xNi8wNCAwOC8xNy8wNCAwOC8xOC8wNCAwOC8xOS8wNCAwOC8yMC8wNCAwOC8yMS8wNCAwOC8yMi8wNCcsCisgICAgICAgJzA4LzIzLzA0IDA4LzI0LzA0IDA4LzI1LzA0IDA4LzI2LzA0IDA4LzI3LzA0IDA4LzI4LzA0IDA4LzI5LzA0JywKKyAgICAgICAnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnXSwKKyAgICAgIFsnMDgvMzAvMDQgMDgvMzEvMDQgMDkvMDEvMDQgMDkvMDIvMDQgMDkvMDMvMDQgMDkvMDQvMDQgMDkvMDUvMDQnLAorICAgICAgICcwOS8wNi8wNCAwOS8wNy8wNCAwOS8wOC8wNCAwOS8wOS8wNCAwOS8xMC8wNCAwOS8xMS8wNCAwOS8xMi8wNCcsCisgICAgICAgJzA5LzEzLzA0IDA5LzE0LzA0IDA5LzE1LzA0IDA5LzE2LzA0IDA5LzE3LzA0IDA5LzE4LzA0IDA5LzE5LzA0JywKKyAgICAgICAnMDkvMjAvMDQgMDkvMjEvMDQgMDkvMjIvMDQgMDkvMjMvMDQgMDkvMjQvMDQgMDkvMjUvMDQgMDkvMjYvMDQnLAorICAgICAgICcwOS8yNy8wNCAwOS8yOC8wNCAwOS8yOS8wNCAwOS8zMC8wNCAxMC8wMS8wNCAxMC8wMi8wNCAxMC8wMy8wNCddXSwKKyAgICAgW1snMDkvMjcvMDQgMDkvMjgvMDQgMDkvMjkvMDQgMDkvMzAvMDQgMTAvMDEvMDQgMTAvMDIvMDQgMTAvMDMvMDQnLAorICAgICAgICcxMC8wNC8wNCAxMC8wNS8wNCAxMC8wNi8wNCAxMC8wNy8wNCAxMC8wOC8wNCAxMC8wOS8wNCAxMC8xMC8wNCcsCisgICAgICAgJzEwLzExLzA0IDEwLzEyLzA0IDEwLzEzLzA0IDEwLzE0LzA0IDEwLzE1LzA0IDEwLzE2LzA0IDEwLzE3LzA0JywKKyAgICAgICAnMTAvMTgvMDQgMTAvMTkvMDQgMTAvMjAvMDQgMTAvMjEvMDQgMTAvMjIvMDQgMTAvMjMvMDQgMTAvMjQvMDQnLAorICAgICAgICcxMC8yNS8wNCAxMC8yNi8wNCAxMC8yNy8wNCAxMC8yOC8wNCAxMC8yOS8wNCAxMC8zMC8wNCAxMC8zMS8wNCddLAorICAgICAgWycxMS8wMS8wNCAxMS8wMi8wNCAxMS8wMy8wNCAxMS8wNC8wNCAxMS8wNS8wNCAxMS8wNi8wNCAxMS8wNy8wNCcsCisgICAgICAgJzExLzA4LzA0IDExLzA5LzA0IDExLzEwLzA0IDExLzExLzA0IDExLzEyLzA0IDExLzEzLzA0IDExLzE0LzA0JywKKyAgICAgICAnMTEvMTUvMDQgMTEvMTYvMDQgMTEvMTcvMDQgMTEvMTgvMDQgMTEvMTkvMDQgMTEvMjAvMDQgMTEvMjEvMDQnLAorICAgICAgICcxMS8yMi8wNCAxMS8yMy8wNCAxMS8yNC8wNCAxMS8yNS8wNCAxMS8yNi8wNCAxMS8yNy8wNCAxMS8yOC8wNCcsCisgICAgICAgJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0J10sCisgICAgICBbJzExLzI5LzA0IDExLzMwLzA0IDEyLzAxLzA0IDEyLzAyLzA0IDEyLzAzLzA0IDEyLzA0LzA0IDEyLzA1LzA0JywKKyAgICAgICAnMTIvMDYvMDQgMTIvMDcvMDQgMTIvMDgvMDQgMTIvMDkvMDQgMTIvMTAvMDQgMTIvMTEvMDQgMTIvMTIvMDQnLAorICAgICAgICcxMi8xMy8wNCAxMi8xNC8wNCAxMi8xNS8wNCAxMi8xNi8wNCAxMi8xNy8wNCAxMi8xOC8wNCAxMi8xOS8wNCcsCisgICAgICAgJzEyLzIwLzA0IDEyLzIxLzA0IDEyLzIyLzA0IDEyLzIzLzA0IDEyLzI0LzA0IDEyLzI1LzA0IDEyLzI2LzA0JywKKyAgICAgICAnMTIvMjcvMDQgMTIvMjgvMDQgMTIvMjkvMDQgMTIvMzAvMDQgMTIvMzEvMDQgMDEvMDEvMDUgMDEvMDIvMDUnXV1dCisKIAogY2xhc3MgT3V0cHV0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBub3JtYWxpemVfY2FsZW5kYXIoc2VsZiwgcyk6CkBAIC0xNzgsMTIgKzMxOCwxOSBAQAogICAgICAgICAgICAgcmV0dXJuIG5vdCBjLmlzc3BhY2UoKSBhbmQgbm90IGMuaXNkaWdpdCgpCiAKICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoRmFsc2UpOgorICAgICAgICBmb3IgbGluZSBpbiBzLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpOgogICAgICAgICAgICAgIyBEcm9wIHRleHRzLCBhcyB0aGV5IGFyZSBsb2NhbGUgZGVwZW5kZW50CiAgICAgICAgICAgICBpZiBsaW5lIGFuZCBub3QgZmlsdGVyKG5laXRoZXJzcGFjZW5vcmRpZ2l0LCBsaW5lKToKICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQobGluZSkKICAgICAgICAgcmV0dXJuIGxpbmVzCiAKKyAgICBkZWYgY2hlY2tfaHRtbGNhbGVuZGFyX2VuY29kaW5nKHNlbGYsIHJlcSwgcmVzKToKKyAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1yZXEpLnN0cmlwKGInIFx0XG4nKSwKKyAgICAgICAgICAgIChyZXN1bHRfMjAwNF9odG1sICUgeydlJzogcmVzfSkuc3RyaXAoJyBcdFxuJykuZW5jb2RlKHJlcykKKyAgICAgICAgKQorCiAgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc2VsZi5ub3JtYWxpemVfY2FsZW5kYXIoY2FsZW5kYXIuY2FsZW5kYXIoMjAwNCkpLApAQCAtMTk2LDEyICszNDMsNjAgQEAKICAgICAgICAgICAgIHJlc3VsdF8yMDA0X3RleHQuc3RyaXAoKQogICAgICAgICApCiAKLSAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyKHNlbGYpOgotICAgICAgICBlbmNvZGluZyA9ICdhc2NpaScKLSAgICAgICAgY2FsID0gY2FsZW5kYXIuSFRNTENhbGVuZGFyKCkKKyAgICBkZWYgdGVzdF9vdXRwdXRfaHRtbGNhbGVuZGFyX2VuY29kaW5nX2FzY2lpKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygnYXNjaWknLCAnYXNjaWknKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ191dGY4KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZygndXRmLTgnLCAndXRmLTgnKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0X2h0bWxjYWxlbmRhcl9lbmNvZGluZ19kZWZhdWx0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2h0bWxjYWxlbmRhcl9lbmNvZGluZyhOb25lLCBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkpCisKKyAgICBkZWYgdGVzdF95ZWFyZGF0ZXNjYWxlbmRhcihzZWxmKToKKyAgICAgICAgZGVmIHNocmluayhjYWwpOgorICAgICAgICAgICAgcmV0dXJuIFtbWycgJy5qb2luKCd7OjAyZH0vezowMmR9L3t9Jy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQubW9udGgsIGQuZGF5LCBzdHIoZC55ZWFyKVstMjpdKSBmb3IgZCBpbiB6KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB6IGluIHldIGZvciB5IGluIHhdIGZvciB4IGluIGNhbF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNhbC5mb3JtYXR5ZWFycGFnZSgyMDA0LCBlbmNvZGluZz1lbmNvZGluZykuc3RyaXAoYicgXHRcbicpLAotICAgICAgICAgICAgcmVzdWx0XzIwMDRfaHRtbC5zdHJpcCgnIFx0XG4nKS5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgICAgICBzaHJpbmsoY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF0ZXNjYWxlbmRhcigyMDA0KSksCisgICAgICAgICAgICByZXN1bHRfMjAwNF9kYXRlcworICAgICAgICApCisKKyAgICBkZWYgdGVzdF95ZWFyZGF5c2NhbGVuZGFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuQ2FsZW5kYXIoKS55ZWFyZGF5c2NhbGVuZGFyKDIwMDQpLAorICAgICAgICAgICAgcmVzdWx0XzIwMDRfZGF5cworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXR3ZWVraGVhZGVyX3Nob3J0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcigyKSwKKyAgICAgICAgICAgICdNbyBUdSBXZSBUaCBGciBTYSBTdScKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0d2Vla2hlYWRlcl9sb25nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgY2FsZW5kYXIuVGV4dENhbGVuZGFyKCkuZm9ybWF0d2Vla2hlYWRlcig5KSwKKyAgICAgICAgICAgICcgIE1vbmRheSAgIFR1ZXNkYXkgIFdlZG5lc2RheSAgVGh1cnNkYXkgJworICAgICAgICAgICAgJyAgRnJpZGF5ICAgU2F0dXJkYXkgICBTdW5kYXkgJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9mb3JtYXRtb250aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLlRleHRDYWxlbmRhcigpLmZvcm1hdG1vbnRoKDIwMDQsIDEpLnN0cmlwKCksCisgICAgICAgICAgICByZXN1bHRfMjAwNF8wMV90ZXh0LnN0cmlwKCkKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1UcnVlKSwKKyAgICAgICAgICAgICc8dHI+PHRoIGNvbHNwYW49IjciIGNsYXNzPSJtb250aCI+SmFudWFyeSAyMDA0PC90aD48L3RyPicKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfZm9ybWF0bW9udGhuYW1lX3dpdGhvdXRfeWVhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNhbGVuZGFyLkhUTUxDYWxlbmRhcigpLmZvcm1hdG1vbnRobmFtZSgyMDA0LCAxLCB3aXRoeWVhcj1GYWxzZSksCisgICAgICAgICAgICAnPHRyPjx0aCBjb2xzcGFuPSI3IiBjbGFzcz0ibW9udGgiPkphbnVhcnk8L3RoPjwvdHI+JwogICAgICAgICApCiAKIApAQCAtMjI3LDcgKzQyMiwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGVuZGFyLmZpcnN0d2Vla2RheSgpLCBjYWxlbmRhci5NT05EQVkpCiAgICAgICAgIGNhbGVuZGFyLnNldGZpcnN0d2Vla2RheShvcmlnKQogCi0gICAgZGVmIHRlc3RfZW51bWVyYXRld2Vla2RheXMoc2VsZik6CisgICAgZGVmIHRlc3RfaWxsZWdhbF93ZWVrZGF5X3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbFdlZWtkYXlFcnJvciwgJzEyMycpOgorICAgICAgICAgICAgY2FsZW5kYXIuc2V0Zmlyc3R3ZWVrZGF5KDEyMykKKworICAgIGRlZiB0ZXN0X2VudW1lcmF0ZV93ZWVrZGF5cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X2FiYnIuX19nZXRpdGVtX18sIC0xMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgY2FsZW5kYXIuZGF5X25hbWUuX19nZXRpdGVtX18sIDEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihbZCBmb3IgZCBpbiBjYWxlbmRhci5kYXlfYWJicl0pLCA3KQpAQCAtMjUzLDcgKzQ1Miw3IEBACiAgICAgICAgICAgICAjIHZlcmlmeSBpdCAiYWN0cyBsaWtlIGEgc2VxdWVuY2UiIGluIHR3byBmb3JtcyBvZiBpdGVyYXRpb24KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWVbOjotMV0sIGxpc3QocmV2ZXJzZWQodmFsdWUpKSkKIAotICAgIGRlZiB0ZXN0X2xvY2FsZWNhbGVuZGFycyhzZWxmKToKKyAgICBkZWYgdGVzdF9sb2NhbGVfY2FsZW5kYXJzKHNlbGYpOgogICAgICAgICAjIGVuc3VyZSB0aGF0IExvY2FsZXtUZXh0LEhUTUx9Q2FsZW5kYXIgcmVzZXRzIHRoZSBsb2NhbGUgcHJvcGVybHkKICAgICAgICAgIyAoaXQgaXMgc3RpbGwgbm90IHRocmVhZC1zYWZlIHRob3VnaCkKICAgICAgICAgb2xkX29jdG9iZXIgPSBjYWxlbmRhci5UZXh0Q2FsZW5kYXIoKS5mb3JtYXRtb250aG5hbWUoMjAxMCwgMTAsIDEwKQpAQCAtNDM3LDYgKzYzNiwxMCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGNhbGVuZGFyLklsbGVnYWxNb250aEVycm9yKToKICAgICAgICAgICAgIGNhbGVuZGFyLm1vbnRocmFuZ2UoMjAwNCwgMTMpCiAKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX21vbnRoX3JlcG9ydGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoY2FsZW5kYXIuSWxsZWdhbE1vbnRoRXJyb3IsICc2NScpOgorICAgICAgICAgICAgY2FsZW5kYXIubW9udGhyYW5nZSgyMDA0LCA2NSkKKwogY2xhc3MgTGVhcGRheXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfbm9fcmFuZ2Uoc2VsZik6CiAgICAgICAgICMgdGVzdCB3aGVuIG5vIHJhbmdlIGkuZS4gdHdvIGlkZW50aWNhbCB5ZWFycyBhcyBhcmdzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggNGQ5MzFmOC4uYWYxNWEzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNTIsMTMgKzUyLDM2IEBACiAgICAgICAgIChvdXQsIGVycikgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgIyBUaGlzIHVzZWQgdG8gY2F1c2UgYW4gaW5maW5pdGUgbG9vcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIucnN0cmlwKCksCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIucnN0cmlwKCkuc3RhcnRzd2l0aCgKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ0ZhdGFsIFB5dGhvbiBlcnJvcjonCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicgUHlUaHJlYWRTdGF0ZV9HZXQ6IG5vIGN1cnJlbnQgdGhyZWFkJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyBQeVRocmVhZFN0YXRlX0dldDogbm8gY3VycmVudCB0aHJlYWQnKSkKIAogICAgIGRlZiB0ZXN0X21lbW9yeXZpZXdfZnJvbV9OVUxMX3BvaW50ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5tYWtlX21lbW9yeXZpZXdfZnJvbV9OVUxMX3BvaW50ZXIpCiAKKyAgICBkZWYgdGVzdF9leGNfaW5mbyhzZWxmKToKKyAgICAgICAgcmFpc2VkX2V4Y2VwdGlvbiA9IFZhbHVlRXJyb3IoIjUiKQorICAgICAgICBuZXdfZXhjID0gVHlwZUVycm9yKCJURVNUIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgcmFpc2VkX2V4Y2VwdGlvbgorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgICAgIG9yaWdfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgIG9yaWdfZXhjX2luZm8gPSBfdGVzdGNhcGkuc2V0X2V4Y19pbmZvKG5ld19leGMuX19jbGFzc19fLCBuZXdfZXhjLCBOb25lKQorICAgICAgICAgICAgbmV3X3N5c19leGNfaW5mbyA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBuZXdfZXhjX2luZm8gPSBfdGVzdGNhcGkuc2V0X2V4Y19pbmZvKCpvcmlnX2V4Y19pbmZvKQorICAgICAgICAgICAgcmVzZXRfc3lzX2V4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnX2V4Y19pbmZvWzFdLCBlKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwob3JpZ19leGNfaW5mbywgKHJhaXNlZF9leGNlcHRpb24uX19jbGFzc19fLCByYWlzZWRfZXhjZXB0aW9uLCB0YikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwob3JpZ19zeXNfZXhjX2luZm8sIG9yaWdfZXhjX2luZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFNlcXVlbmNlRXF1YWwocmVzZXRfc3lzX2V4Y19pbmZvLCBvcmlnX2V4Y19pbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXF1ZW5jZUVxdWFsKG5ld19leGNfaW5mbywgKG5ld19leGMuX19jbGFzc19fLCBuZXdfZXhjLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U2VxdWVuY2VFcXVhbChuZXdfc3lzX2V4Y19pbmZvLCBuZXdfZXhjX2luZm8pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRmFsc2UpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfcG9zaXhzdWJwcm9jZXNzLCAnX3Bvc2l4c3VicHJvY2VzcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3Rfc2VxX2J5dGVzX3RvX2NoYXJwX2FycmF5KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNTczMjogY3Jhc2ggaW4gX1B5U2VxdWVuY2VfQnl0ZXNUb0NoYXJwQXJyYXkoKQpAQCAtMjIyLDkgKzI0NSw5MSBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3MuY2hkaXIob2xkY3dkKQogCitjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJZiB0aGlzIHRlc3QgZmFpbGVkLCB5b3UgcHJvYmFibHkgYWRkZWQgYSBuZXcgImZvcm1hdCB1bml0IgorICAgICAgICBpbiBQeXRob24vZ2V0YXJncy5jLCBidXQgbmVnbGVjdGVkIHRvIHVwZGF0ZSBvdXIgcG9vciBmcmllbmQKKyAgICAgICAgc2tpcGl0ZW0oKSBpbiB0aGUgc2FtZSBmaWxlLiAgKElmIHNvLCBzaGFtZSBvbiB5b3UhKQorCisgICAgICAgIFdpdGggYSBmZXcgZXhjZXB0aW9ucyoqLCB0aGlzIGZ1bmN0aW9uIGJydXRlLWZvcmNlIHRlc3RzIGFsbAorICAgICAgICBwcmludGFibGUgQVNDSUkqKiogY2hhcmFjdGVycyAoMzIgdG8gMTI2IGluY2x1c2l2ZSkgYXMgZm9ybWF0IHVuaXRzLAorICAgICAgICBjaGVja2luZyB0byBzZWUgdGhhdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSByZXR1cm4gY29uc2lzdGVudAorICAgICAgICBlcnJvcnMgYm90aCB3aGVuIHRoZSB1bml0IGlzIGF0dGVtcHRlZCB0byBiZSB1c2VkIGFuZCB3aGVuIGl0IGlzCisgICAgICAgIHNraXBwZWQuICBJZiB0aGUgZm9ybWF0IHVuaXQgZG9lc24ndCBleGlzdCwgd2UnbGwgZ2V0IG9uZSBvZiB0d28KKyAgICAgICAgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgKG9uZSBmb3IgdXNlZCwgb25lIGZvciBza2lwcGVkKTsgaWYgaXQgZG9lcworICAgICAgICBleGlzdCB3ZSAqd29uJ3QqIGdldCB0aGF0IGVycm9yLS13ZSdsbCBnZXQgZWl0aGVyIG5vIGVycm9yIG9yIHNvbWUKKyAgICAgICAgb3RoZXIgZXJyb3IuICBJZiB3ZSBnZXQgdGhlIHNwZWNpZmljICJkb2VzIG5vdCBleGlzdCIgZXJyb3IgZm9yIG9uZQorICAgICAgICB0ZXN0IGFuZCBub3QgZm9yIHRoZSBvdGhlciwgdGhlcmUncyBhIG1pc21hdGNoLCBhbmQgdGhlIHRlc3QgZmFpbHMuCisKKyAgICAgICAgICAgKiogU29tZSBmb3JtYXQgdW5pdHMgaGF2ZSBzcGVjaWFsIGZ1bm55IHNlbWFudGljcyBhbmQgaXQgd291bGQKKyAgICAgICAgICAgICAgYmUgZGlmZmljdWx0IHRvIGFjY29tb2RhdGUgdGhlbSBoZXJlLiAgU2luY2UgdGhlc2UgYXJlIGFsbAorICAgICAgICAgICAgICB3ZWxsLWVzdGFibGlzaGVkIGFuZCBwcm9wZXJseSBza2lwcGVkIGluIHNraXBpdGVtKCkgd2UgY2FuCisgICAgICAgICAgICAgIGdldCBhd2F5IHdpdGggbm90IHRlc3RpbmcgdGhlbS0tdGhpcyB0ZXN0IGlzIHJlYWxseSBpbnRlbmRlZAorICAgICAgICAgICAgICB0byBjYXRjaCAqbmV3KiBmb3JtYXQgdW5pdHMuCisKKyAgICAgICAgICAqKiogUHl0aG9uIEMgc291cmNlIGZpbGVzIG11c3QgYmUgQVNDSUkuICBUaGVyZWZvcmUgaXQncyBpbXBvc3NpYmxlCisgICAgICAgICAgICAgIHRvIGhhdmUgbm9uLUFTQ0lJIGZvcm1hdCB1bml0cy4KKworICAgICAgICAiIiIKKyAgICAgICAgZW1wdHlfdHVwbGUgPSAoKQorICAgICAgICB0dXBsZV8xID0gKDAsKQorICAgICAgICBkaWN0X2IgPSB7J2InOjF9CisgICAgICAgIGtleXdvcmRzID0gWyJhIiwgImIiXQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMyLCAxMjcpOgorICAgICAgICAgICAgYyA9IGNocihpKQorCisgICAgICAgICAgICAjIHNraXAgcGFyZW50aGVzZXMsIHRoZSBlcnJvciByZXBvcnRpbmcgaXMgaW5jb25zaXN0ZW50IGFib3V0IHRoZW0KKyAgICAgICAgICAgICMgc2tpcCAnZScsIGl0J3MgYWx3YXlzIGEgdHdvLWNoYXJhY3RlciBjb2RlCisgICAgICAgICAgICAjIHNraXAgJ3wnIGFuZCAnJCcsIHRoZXkgZG9uJ3QgcmVwcmVzZW50IGFyZ3VtZW50cyBhbnl3YXkKKyAgICAgICAgICAgIGlmIGMgaW4gJygpZXwkJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gbm90IHNraXBwZWQKKyAgICAgICAgICAgIGZvcm1hdCA9IGMgKyAiaSIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIChub3RlOiB0aGUgZm9ybWF0IHN0cmluZyBtdXN0IGJlIGJ5dGVzISkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHR1cGxlXzEsIGRpY3RfYiwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmVuY29kZSgiYXNjaWkiKSwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIG11c3QgYmUgaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+LCBub3QgaW50IgorICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisKKyAgICAgICAgICAgICMgdGVzdCB0aGUgZm9ybWF0IHVuaXQgd2hlbiBza2lwcGVkCisgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQgPSAifCIgKyBmb3JtYXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKGVtcHR5X3R1cGxlLCBkaWN0X2IsCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQorICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQorCisgICAgICAgICAgICBtZXNzYWdlID0gKCJ0ZXN0X3NraXBpdGVtX3Bhcml0eTogIgorICAgICAgICAgICAgICAgICJkZXRlY3RlZCBtaXNtYXRjaCBiZXR3ZWVuIGNvbnZlcnRzaW1wbGUgYW5kIHNraXBpdGVtICIKKyAgICAgICAgICAgICAgICAiZm9yIGZvcm1hdCB1bml0ICd7fScgKHt9KSwgbm90IHNraXBwZWQge30sIHNraXBwZWQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYywgaSwgd2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkLCBtZXNzYWdlKQorCisgICAgZGVmIHRlc3RfcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHNlbGYpOgorICAgICAgICAjIHBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyBlcnJvciBoYW5kbGluZyB0ZXN0cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgNDIsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sIGInJywgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbJyddICogNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbNDJdKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0FQSVRlc3QsIFRlc3RQZW5kaW5nQ2FsbHMsIFRlc3Q2MDEyLCBFbWJlZGRpbmdUZXN0KQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KENBUElUZXN0LCBUZXN0UGVuZGluZ0NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3Q2MDEyLCBFbWJlZGRpbmdUZXN0LCBTa2lwaXRlbVRlc3QpCiAKICAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCd0ZXN0XycpOgpAQCAtMjQxLDE4ICszNDYsMTcgQEAKICAgICAgICAgaWRlbnRzID0gW10KIAogICAgICAgICBkZWYgY2FsbGJhY2soKToKLSAgICAgICAgICAgIGlkZW50cy5hcHBlbmQoX3RocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgICAgIGlkZW50cy5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogCiAgICAgICAgIF90ZXN0Y2FwaS5fdGVzdF90aHJlYWRfc3RhdGUoY2FsbGJhY2spCiAgICAgICAgIGEgPSBiID0gY2FsbGJhY2sKICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICAjIENoZWNrIG91ciBtYWluIHRocmVhZCBpcyBpbiB0aGUgbGlzdCBleGFjdGx5IDMgdGltZXMuCi0gICAgICAgIGlmIGlkZW50cy5jb3VudChfdGhyZWFkLmdldF9pZGVudCgpKSAhPSAzOgorICAgICAgICBpZiBpZGVudHMuY291bnQodGhyZWFkaW5nLmdldF9pZGVudCgpKSAhPSAzOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKAogICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgbWFpbiB0aHJlYWQgY29ycmVjdGx5IGluIHRoZSBsaXN0IikKIAogICAgIGlmIHRocmVhZGluZzoKLSAgICAgICAgaW1wb3J0IF90aHJlYWQKICAgICAgICAgaW1wb3J0IHRpbWUKICAgICAgICAgVGVzdFRocmVhZFN0YXRlKCkKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PVRlc3RUaHJlYWRTdGF0ZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggMzAzMWZiMy4uNTUxMGEwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTQsNiArNCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTywgQnl0ZXNJTwogCiBjbGFzcyBIYWNrZWRTeXNNb2R1bGU6CkBAIC0xMTksOSArMTIwLDEzIEBACiBjbGFzcyBDZ2lUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QgJmFtcDsgc3RyaW5nIiwgY2dpLmVzY2FwZSgidGVzdCAmIHN0cmluZyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImcXVvdDt0ZXN0IHN0cmluZyZxdW90OyIsIGNnaS5lc2NhcGUoJyJ0ZXN0IHN0cmluZyInLCBUcnVlKSkKKyAgICAgICAgIyBjZ2kuZXNjYXBlKCkgaXMgZGVwcmVjYXRlZC4KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICdjZ2lcLmVzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdCAmYW1wOyBzdHJpbmciLCBjZ2kuZXNjYXBlKCJ0ZXN0ICYgc3RyaW5nIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCImbHQ7dGVzdCBzdHJpbmcmZ3Q7IiwgY2dpLmVzY2FwZSgiPHRlc3Qgc3RyaW5nPiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJnF1b3Q7dGVzdCBzdHJpbmcmcXVvdDsiLCBjZ2kuZXNjYXBlKCcidGVzdCBzdHJpbmciJywgVHJ1ZSkpCiAKICAgICBkZWYgdGVzdF9zdHJpY3Qoc2VsZik6CiAgICAgICAgIGZvciBvcmlnLCBleHBlY3QgaW4gcGFyc2Vfc3RyaWN0X3Rlc3RfY2FzZXM6CkBAIC0xNjAsMTMgKzE2NSw3IEBACiAgICAgICAgICAgICBjZ2kubG9nZnAgPSBOb25lCiAgICAgICAgICAgICBjZ2kubG9nZmlsZSA9ICIvZGV2L251bGwiCiAgICAgICAgICAgICBjZ2kuaW5pdGxvZygiJXMiLCAiVGVzdGluZyBsb2cgMyIpCi0gICAgICAgICAgICBkZWYgbG9nX2NsZWFudXAoKToKLSAgICAgICAgICAgICAgICAiIiJSZXN0b3JlIHRoZSBnbG9iYWwgc3RhdGUgb2YgdGhlIGxvZyB2YXJzLiIiIgotICAgICAgICAgICAgICAgIGNnaS5sb2dmaWxlID0gJycKLSAgICAgICAgICAgICAgICBjZ2kubG9nZnAuY2xvc2UoKQotICAgICAgICAgICAgICAgIGNnaS5sb2dmcCA9IE5vbmUKLSAgICAgICAgICAgICAgICBjZ2kubG9nID0gY2dpLmluaXRsb2cKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dfY2xlYW51cCkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjZ2kuY2xvc2Vsb2cpCiAgICAgICAgICAgICBjZ2kubG9nKCJUZXN0aW5nIGxvZyA0IikKIAogICAgIGRlZiB0ZXN0X2ZpZWxkc3RvcmFnZV9yZWFkbGluZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpdGIucHkgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2YTRiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2NnaXRiLnB5CkBAIC0wLDAgKzEsNTUgQEAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBjZ2l0YgorCitjbGFzcyBUZXN0Q2dpdGIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZm9udHMoc2VsZik6CisgICAgICAgIHRleHQgPSAiSGVsbG8gUm9iYmllISIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCh0ZXh0KSwgIjxzbWFsbD57fTwvc21hbGw+Ii5mb3JtYXQodGV4dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2dpdGIuc3Ryb25nKHRleHQpLCAiPHN0cm9uZz57fTwvc3Ryb25nPiIuZm9ybWF0KHRleHQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkodGV4dCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzxmb250IGNvbG9yPSIjOTA5MDkwIj57fTwvZm9udD4nLmZvcm1hdCh0ZXh0KSkKKworICAgIGRlZiB0ZXN0X2JsYW5rcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZ2l0Yi5zbWFsbCgiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLnN0cm9uZygiIiksICIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNnaXRiLmdyZXkoIiIpLCAiIikKKworICAgIGRlZiB0ZXN0X2h0bWwoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkhlbGxvIFdvcmxkIikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgIyBJZiB0aGUgaHRtbCB3YXMgdGVtcGxhdGVkIHdlIGNvdWxkIGRvIGEgYml0IG1vcmUgaGVyZS4KKyAgICAgICAgICAgICMgQXQgbGVhc3QgY2hlY2sgdGhhdCB3ZSBnZXQgZGV0YWlscyBvbiB3aGF0IHdlIGp1c3QgcmFpc2VkLgorICAgICAgICAgICAgaHRtbCA9IGNnaXRiLmh0bWwoc3lzLmV4Y19pbmZvKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJWYWx1ZUVycm9yIiwgaHRtbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKGVyciksIGh0bWwpCisKKyAgICBkZWYgdGVzdF90ZXh0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJIZWxsbyBXb3JsZCIpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHRleHQgPSBjZ2l0Yi50ZXh0KHN5cy5leGNfaW5mbygpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIHRleHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJIZWxsbyBXb3JsZCIsIHRleHQpCisKKyAgICBkZWYgdGVzdF9ob29rKHNlbGYpOgorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ltcG9ydCBjZ2l0YjsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NnaXRiLmVuYWJsZSgpOycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmFpc2UgVmFsdWVFcnJvcigiSGVsbG8gV29ybGQiKScpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0ID0gcHJvYy5zdGRvdXQucmVhZCgpLmRlY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwcm9jLnN0ZG91dC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVmFsdWVFcnJvciIsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiSGVsbG8gV29ybGQiLCBvdXQpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChUZXN0Q2dpdGIpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWQucHkKaW5kZXggM2E0NjM1NS4uNjYxODUzNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWQucHkKQEAgLTIyOCw3ICsyMjgsNyBAQAogCiBkZWYgdGVzdF9jb3ZlcmFnZShjb3ZlcmRpcik6CiAgICAgdHJhY2UgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RyYWNlJykKLSAgICB0cmFjZXI9dHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sCisgICAgdHJhY2VyPXRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlPTAsIGNvdW50PTEpCiAgICAgdHJhY2VyLnJ1bigncmVsb2FkKGNtZCk7dGVzdF9tYWluKCknKQogICAgIHI9dHJhY2VyLnJlc3VsdHMoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKaW5kZXggZjQ2M2FmNC4uNzY0NGRiMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CkBAIC0zMSwxMiArMzEsNiBAQAogICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctTycpCiAgICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1PTycpCiAKLSAgICBkZWYgdGVzdF9xKHNlbGYpOgotICAgICAgICBzZWxmLnZlcmlmeV92YWxpZF9mbGFnKCctUW9sZCcpCi0gICAgICAgIHNlbGYudmVyaWZ5X3ZhbGlkX2ZsYWcoJy1RbmV3JykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVF3YXJuJykKLSAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVF3YXJuYWxsJykKLQogICAgIGRlZiB0ZXN0X3NpdGVfZmxhZyhzZWxmKToKICAgICAgICAgc2VsZi52ZXJpZnlfdmFsaWRfZmxhZygnLVMnKQogCkBAIC0xNTEsNyArMTQ1LDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICd0ZXN0IHNwZWNpZmljIHRvIE1hYyBPUyBYJykKICAgICBkZWYgdGVzdF9vc3hfdXRmOChzZWxmKToKICAgICAgICAgZGVmIGNoZWNrX291dHB1dCh0ZXh0KToKLSAgICAgICAgICAgIGRlY29kZWQgPSB0ZXh0LmRlY29kZSgndXRmOCcsICdzdXJyb2dhdGVlc2NhcGUnKQorICAgICAgICAgICAgZGVjb2RlZCA9IHRleHQuZGVjb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVlc2NhcGUnKQogICAgICAgICAgICAgZXhwZWN0ZWQgPSBhc2NpaShkZWNvZGVkKS5lbmNvZGUoJ2FzY2lpJykgKyBiJ1xuJwogCiAgICAgICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQpAQCAtMjIzLDcgKzIxNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0aDIuZW5jb2RlKCdhc2NpaScpLCBvdXQpCiAKICAgICBkZWYgdGVzdF9kaXNwbGF5aG9va191bmVuY29kYWJsZShzZWxmKToKLSAgICAgICAgZm9yIGVuY29kaW5nIGluICgnYXNjaWknLCAnbGF0aW4xJywgJ3V0ZjgnKToKKyAgICAgICAgZm9yIGVuY29kaW5nIGluICgnYXNjaWknLCAnbGF0aW4tMScsICd1dGYtOCcpOgogICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKICAgICAgICAgICAgIGVudlsnUFlUSE9OSU9FTkNPRElORyddID0gZW5jb2RpbmcKICAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKApAQCAtMjk5LDcgKzI5Myw3IEBACiAgICAgICAgIHJjLCBvdXQsIGVyciA9IGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnIuZGVjb2RlKCdhc2NpaScsICdpZ25vcmUnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRXhjZXB0aW9uIElPRXJyb3I6IC4qIGlnbm9yZWQnKQorICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gT1NFcnJvcjogLiogaWdub3JlZCcpCiAKICAgICBkZWYgdGVzdF9jbG9zZWRfc3Rkb3V0KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMzQ0NDogaWYgc3Rkb3V0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY2xvc2VkLCB3ZSBzaG91bGQKQEAgLTM1MywxNCArMzQ3LDE0IEBACiAgICAgICAgIGhhc2hlcyA9IFtdCiAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgogICAgICAgICAgICAgY29kZSA9ICdwcmludChoYXNoKCJzcGFtIikpJwotICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLVInLCAnLWMnLCBjb2RlKQorICAgICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMCkKICAgICAgICAgICAgIGhhc2hlcy5hcHBlbmQob3V0KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGhhc2hlc1swXSwgaGFzaGVzWzFdKQogCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3lzLmZsYWdzIGNvbnRhaW5zIGhhc2hfcmFuZG9taXphdGlvbgogICAgICAgICBjb2RlID0gJ2ltcG9ydCBzeXM7IHByaW50KCJyYW5kb20gaXMiLCBzeXMuZmxhZ3MuaGFzaF9yYW5kb21pemF0aW9uKScKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLVInLCAnLWMnLCBjb2RlKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidyYW5kb20gaXMgMScsIG91dCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQppbmRleCA2YjU5ZDk2Li4xN2RmYmMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lX3NjcmlwdC5weQpAQCAtMSwxNSArMSwyMCBAQAogIyB0ZXN0cyBjb21tYW5kIGxpbmUgZXhlY3V0aW9uIG9mIHNjcmlwdHMKIAoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IGltcG9ydGxpYi5tYWNoaW5lcnkKK2ltcG9ydCB6aXBpbXBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHB5X2NvbXBpbGUKIAoraW1wb3J0IHRleHR3cmFwCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCAoCiAgICAgbWFrZV9wa2csIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9wa2csIG1ha2VfemlwX3NjcmlwdCwKLSAgICBhc3NlcnRfcHl0aG9uX29rLCBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUsIHRlbXBfZGlyKQorICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgdGVtcF9kaXIsCisgICAgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKIAogdmVyYm9zZSA9IHN1cHBvcnQudmVyYm9zZQogCkBAIC0zMiw2ICszNyw5IEBACiBhc3NlcnRFcXVhbChyZXN1bHQsIFsnVG9wIGxldmVsIGFzc2lnbm1lbnQnLCAnTG93ZXIgbGV2ZWwgcmVmZXJlbmNlJ10pCiAjIENoZWNrIHBvcHVsYXRpb24gb2YgbWFnaWMgdmFyaWFibGVzCiBhc3NlcnRFcXVhbChfX25hbWVfXywgJ19fbWFpbl9fJykKK2Zyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgQnVpbHRpbkltcG9ydGVyCitfbG9hZGVyID0gX19sb2FkZXJfXyBpZiBfX2xvYWRlcl9fIGlzIEJ1aWx0aW5JbXBvcnRlciBlbHNlIHR5cGUoX19sb2FkZXJfXykKK3ByaW50KCdfX2xvYWRlcl9fPT0lYScgJSBfbG9hZGVyKQogcHJpbnQoJ19fZmlsZV9fPT0lYScgJSBfX2ZpbGVfXykKIGFzc2VydEVxdWFsKF9fY2FjaGVkX18sIE5vbmUpCiBwcmludCgnX19wYWNrYWdlX189PSVyJyAlIF9fcGFja2FnZV9fKQpAQCAtNDksMTIgKzU3LDE2IEBACiAiIiIKIAogZGVmIF9tYWtlX3Rlc3Rfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlPXRlc3Rfc291cmNlKToKLSAgICByZXR1cm4gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdG9fcmV0dXJuID0gbWFrZV9zY3JpcHQoc2NyaXB0X2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICByZXR1cm4gdG9fcmV0dXJuCiAKIGRlZiBfbWFrZV90ZXN0X3ppcF9wa2coemlwX2RpciwgemlwX2Jhc2VuYW1lLCBwa2dfbmFtZSwgc2NyaXB0X2Jhc2VuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9dGVzdF9zb3VyY2UsIGRlcHRoPTEpOgotICAgIHJldHVybiBtYWtlX3ppcF9wa2coemlwX2RpciwgemlwX2Jhc2VuYW1lLCBwa2dfbmFtZSwgc2NyaXB0X2Jhc2VuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLCBkZXB0aCkKKyAgICB0b19yZXR1cm4gPSBtYWtlX3ppcF9wa2coemlwX2RpciwgemlwX2Jhc2VuYW1lLCBwa2dfbmFtZSwgc2NyaXB0X2Jhc2VuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsIGRlcHRoKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgcmV0dXJuIHRvX3JldHVybgogCiAjIFRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8gcGFzcyB0aGUgc2NyaXB0IGRpcmVjdG9yeSBpbiB0byBnZXQKICMgLW0gdG8gd29yayAoYXZvaWRpbmcgdGhhdCBpcyB0aGUgd2hvbGUgcG9pbnQgb2YgbWFraW5nCkBAIC03MiwxNiArODQsMjAgQEAKICAgICBlbHNlOgogICAgICAgICBwYXRoID0gcmVwcihwYXRoKQogICAgIHNvdXJjZSA9IGxhdW5jaF9zb3VyY2UgJSAocGF0aCwgbW9kdWxlX25hbWUpCi0gICAgcmV0dXJuIG1ha2Vfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlKQorICAgIHRvX3JldHVybiA9IG1ha2Vfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlKQorICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgcmV0dXJuIHRvX3JldHVybgogCiBjbGFzcyBDbWRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9jaGVja19vdXRwdXQoc2VsZiwgc2NyaXB0X25hbWUsIGV4aXRfY29kZSwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZmlsZSwgZXhwZWN0ZWRfYXJndjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhdGgwLCBleHBlY3RlZF9wYWNrYWdlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aDAsIGV4cGVjdGVkX3BhY2thZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2xvYWRlcik6CiAgICAgICAgIGlmIHZlcmJvc2UgPiAxOgogICAgICAgICAgICAgcHJpbnQoIk91dHB1dCBmcm9tIHRlc3Qgc2NyaXB0ICVyOiIgJSBzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHByaW50KGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdF9jb2RlLCAwKQorICAgICAgICBwcmludGVkX2xvYWRlciA9ICdfX2xvYWRlcl9fPT0lYScgJSBleHBlY3RlZF9sb2FkZXIKICAgICAgICAgcHJpbnRlZF9maWxlID0gJ19fZmlsZV9fPT0lYScgJSBleHBlY3RlZF9maWxlCiAgICAgICAgIHByaW50ZWRfcGFja2FnZSA9ICdfX3BhY2thZ2VfXz09JXInICUgZXhwZWN0ZWRfcGFja2FnZQogICAgICAgICBwcmludGVkX2FyZ3YwID0gJ3N5cy5hcmd2WzBdPT0lYScgJSBleHBlY3RlZF9hcmd2MApAQCAtOTMsNiArMTA5LDcgQEAKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfcGFja2FnZSkKICAgICAgICAgICAgIHByaW50KHByaW50ZWRfYXJndjApCiAgICAgICAgICAgICBwcmludChwcmludGVkX2N3ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX2xvYWRlci5lbmNvZGUoJ3V0Zi04JyksIGRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocHJpbnRlZF9maWxlLmVuY29kZSgndXRmLTgnKSwgZGF0YSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihwcmludGVkX3BhY2thZ2UuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQogICAgICAgICBzZWxmLmFzc2VydEluKHByaW50ZWRfYXJndjAuZW5jb2RlKCd1dGYtOCcpLCBkYXRhKQpAQCAtMTAxLDE0ICsxMTgsMTUgQEAKIAogICAgIGRlZiBfY2hlY2tfc2NyaXB0KHNlbGYsIHNjcmlwdF9uYW1lLCBleHBlY3RlZF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMpOgogICAgICAgICBpZiBub3QgX19kZWJ1Z19fOgogICAgICAgICAgICAgY21kX2xpbmVfc3dpdGNoZXMgKz0gKCctJyArICdPJyAqIHN5cy5mbGFncy5vcHRpbWl6ZSwpCiAgICAgICAgIHJ1bl9hcmdzID0gY21kX2xpbmVfc3dpdGNoZXMgKyAoc2NyaXB0X25hbWUsKSArIHR1cGxlKGV4YW1wbGVfYXJncykKICAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqcnVuX2FyZ3MpCiAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCArIGVyciwgZXhwZWN0ZWRfZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwgZXhwZWN0ZWRfcGFja2FnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2UsIGV4cGVjdGVkX2xvYWRlcikKIAogICAgIGRlZiBfY2hlY2tfaW1wb3J0X2Vycm9yKHNlbGYsIHNjcmlwdF9uYW1lLCBleHBlY3RlZF9tc2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzKToKQEAgLTEyMCwxMSArMTM4LDMwIEBACiAgICAgICAgICAgICBwcmludCgnRXhwZWN0ZWQgb3V0cHV0OiAlcicgJSBleHBlY3RlZF9tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXhwZWN0ZWRfbXNnLmVuY29kZSgndXRmLTgnKSwgZXJyKQogCisgICAgZGVmIHRlc3RfZGFzaF9jX2xvYWRlcihzZWxmKToKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygiLWMiLCAicHJpbnQoX19sb2FkZXJfXykiKQorICAgICAgICBleHBlY3RlZCA9IHJlcHIoaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIpLmVuY29kZSgidXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKKyAgICBkZWYgdGVzdF9zdGRpbl9sb2FkZXIoc2VsZik6CisgICAgICAgICMgVW5mb3J0dW5hdGVseSwgdGhlcmUncyBubyB3YXkgdG8gYXV0b21hdGljYWxseSB0ZXN0IHRoZSBmdWxseQorICAgICAgICAjIGludGVyYWN0aXZlIFJFUEwsIHNpbmNlIHRoYXQgY29kZSBwYXRoIG9ubHkgZ2V0cyBleGVjdXRlZCB3aGVuCisgICAgICAgICMgc3RkaW4gaXMgYW4gaW50ZXJhY3RpdmUgdHR5LgorICAgICAgICBwID0gc3Bhd25fcHl0aG9uKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcC5zdGRpbi53cml0ZShiInByaW50KF9fbG9hZGVyX18pXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5mbHVzaCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvdXQgPSBraWxsX3B5dGhvbihwKQorICAgICAgICBleHBlY3RlZCA9IHJlcHIoaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIpLmVuY29kZSgidXRmLTgiKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKICAgICBkZWYgdGVzdF9iYXNpY19zY3JpcHQoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChzY3JpcHRfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9zY3JpcHRfY29tcGlsZWQoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgpAQCAtMTMzLDEzICsxNzAsMTUgQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHB5Y19maWxlID0gc3VwcG9ydC5tYWtlX2xlZ2FjeV9weWMoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQocHljX2ZpbGUsIHB5Y19maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCBOb25lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9uYW1lLCBzY3JpcHRfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsICcnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xNDgsNyArMTg3LDggQEAKICAgICAgICAgICAgIG9zLnJlbW92ZShzY3JpcHRfbmFtZSkKICAgICAgICAgICAgIHB5Y19maWxlID0gc3VwcG9ydC5tYWtlX2xlZ2FjeV9weWMoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoc2NyaXB0X2RpciwgcHljX2ZpbGUsIHNjcmlwdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X2RpciwgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcikKIAogICAgIGRlZiB0ZXN0X2RpcmVjdG9yeV9lcnJvcihzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0xNTksMTQgKzE5OSwxNiBAQAogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IG1ha2VfemlwX3NjcmlwdChzY3JpcHRfZGlyLCAndGVzdF96aXAnLCBzY3JpcHRfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdCh6aXBfbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCB6aXBfbmFtZSwgJycpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3ppcGZpbGVfY29tcGlsZWQoc2VsZik6CiAgICAgICAgIHdpdGggdGVtcF9kaXIoKSBhcyBzY3JpcHRfZGlyOgogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChzY3JpcHRfZGlyLCAnX19tYWluX18nKQogICAgICAgICAgICAgY29tcGlsZWRfbmFtZSA9IHB5X2NvbXBpbGUuY29tcGlsZShzY3JpcHRfbmFtZSwgZG9yYWlzZT1UcnVlKQogICAgICAgICAgICAgemlwX25hbWUsIHJ1bl9uYW1lID0gbWFrZV96aXBfc2NyaXB0KHNjcmlwdF9kaXIsICd0ZXN0X3ppcCcsIGNvbXBpbGVkX25hbWUpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQoemlwX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgemlwX25hbWUsICcnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KHppcF9uYW1lLCBydW5fbmFtZSwgemlwX25hbWUsIHppcF9uYW1lLCAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF96aXBmaWxlX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTE4MSwxOSArMjIzLDI0IEBACiAgICAgICAgICAgICBtYWtlX3BrZyhwa2dfZGlyKQogICAgICAgICAgICAgc2NyaXB0X25hbWUgPSBfbWFrZV90ZXN0X3NjcmlwdChwa2dfZGlyLCAnc2NyaXB0JykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnNjcmlwdCcpCi0gICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgc2NyaXB0X2RpciwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2luX3BhY2thZ2VfaW5femlwZmlsZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICB6aXBfbmFtZSwgcnVuX25hbWUgPSBfbWFrZV90ZXN0X3ppcF9wa2coc2NyaXB0X2RpciwgJ3Rlc3RfemlwJywgJ3Rlc3RfcGtnJywgJ3NjcmlwdCcpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZy5zY3JpcHQnLCB6aXBfbmFtZSkKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLCB6aXBfbmFtZSwgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgcnVuX25hbWUsIHJ1bl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHppcF9uYW1lLCAndGVzdF9wa2cnLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfaW5fc3VicGFja2FnZV9pbl96aXBmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKICAgICAgICAgICAgIHppcF9uYW1lLCBydW5fbmFtZSA9IF9tYWtlX3Rlc3RfemlwX3BrZyhzY3JpcHRfZGlyLCAndGVzdF96aXAnLCAndGVzdF9wa2cnLCAnc2NyaXB0JywgZGVwdGg9MikKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnLnRlc3RfcGtnLnNjcmlwdCcsIHppcF9uYW1lKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsIHppcF9uYW1lLCAndGVzdF9wa2cudGVzdF9wa2cnKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc2NyaXB0KGxhdW5jaF9uYW1lLCBydW5fbmFtZSwgcnVuX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwX25hbWUsICd0ZXN0X3BrZy50ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0yMDIsNyArMjQ5LDggQEAKICAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQocGtnX2RpciwgJ19fbWFpbl9fJykKICAgICAgICAgICAgIGxhdW5jaF9uYW1lID0gX21ha2VfbGF1bmNoX3NjcmlwdChzY3JpcHRfZGlyLCAnbGF1bmNoJywgJ3Rlc3RfcGtnJykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NjcmlwdChsYXVuY2hfbmFtZSwgc2NyaXB0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9kaXIsICd0ZXN0X3BrZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfcGFja2FnZV9jb21waWxlZChzZWxmKToKICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CkBAIC0yMTQsNyArMjYyLDggQEAKICAgICAgICAgICAgIHB5Y19maWxlID0gc3VwcG9ydC5tYWtlX2xlZ2FjeV9weWMoc2NyaXB0X25hbWUpCiAgICAgICAgICAgICBsYXVuY2hfbmFtZSA9IF9tYWtlX2xhdW5jaF9zY3JpcHQoc2NyaXB0X2RpciwgJ2xhdW5jaCcsICd0ZXN0X3BrZycpCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zY3JpcHQobGF1bmNoX25hbWUsIHB5Y19maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5Y19maWxlLCBzY3JpcHRfZGlyLCAndGVzdF9wa2cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKQEAgLTI1MSw3ICszMDAsOCBAQAogICAgICAgICAgICAgICAgIGV4cGVjdGVkID0gImluaXRfYXJndjA9PSVyIiAlICctbScKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLmVuY29kZSgndXRmLTgnKSwgb3V0KQogICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJ3Rlc3RfcGtnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJ3Rlc3RfcGtnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKQogCiAgICAgZGVmIHRlc3RfaXNzdWU4MjAyX2Rhc2hfY19maWxlX2lnbm9yZWQoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgIi1jIiBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeQpAQCAtMjc3LDcgKzMyNyw4IEBACiAgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoImRhdGEiKQogICAgICAgICAgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdvdGhlcicsICpleGFtcGxlX2FyZ3MpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX291dHB1dChzY3JpcHRfbmFtZSwgcmMsIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lLCAnJywgJycpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdF9uYW1lLCBzY3JpcHRfbmFtZSwgJycsICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIpCiAKICAgICBkZWYgdGVzdF9kYXNoX21fZXJyb3JfY29kZV9pc19vbmUoc2VsZik6CiAgICAgICAgICMgSWYgYSBtb2R1bGUgaXMgaW52b2tlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgZmxhZwpAQCAtMjk0LDYgKzM0NSwyNCBAQAogICAgICAgICAgICAgICAgICAgICBwcmludChvdXQpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgMSkKIAorICAgIGRlZiB0ZXN0X3BlcF80MDlfdmVyYmlhZ2Uoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIFBFUCA0MDkgc3ludGF4IHByb3Blcmx5IHN1cHByZXNzZXMKKyAgICAgICAgIyB0aGUgY29udGV4dCBvZiBhbiBleGNlcHRpb24KKyAgICAgICAgc2NyaXB0ID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yIGZyb20gTm9uZQorICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpcjoKKyAgICAgICAgICAgIHNjcmlwdF9uYW1lID0gX21ha2VfdGVzdF9zY3JpcHQoc2NyaXB0X2RpciwgJ3NjcmlwdCcsIHNjcmlwdCkKKyAgICAgICAgICAgIGV4aXRjb2RlLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZShzY3JpcHRfbmFtZSkKKyAgICAgICAgICAgIHRleHQgPSBzdGRlcnIuZGVjb2RlKCdhc2NpaScpLnNwbGl0KCdcbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0ZXh0KSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0ZXh0WzBdLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbMV0uc3RhcnRzd2l0aCgnICBGaWxlICcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRleHRbM10uc3RhcnRzd2l0aCgnTmFtZUVycm9yJykpCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDbWRMaW5lVGVzdCkKICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlLnB5CmluZGV4IGUxYzdhNzguLjMzNzdhN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGUucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGZyZWV2YXJzOiAoKQogbmxvY2FsczogMgogZmxhZ3M6IDMKLWNvbnN0czogKCdOb25lJywgJzxjb2RlIG9iamVjdCBnPicpCitjb25zdHM6ICgnTm9uZScsICc8Y29kZSBvYmplY3QgZz4nLCAiJ2YuPGxvY2Fscz4uZyciKQogCiA+Pj4gZHVtcChmKDQpLl9fY29kZV9fKQogbmFtZTogZwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRlZjE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKQEAgLTAsMCArMSw3MiBAQAorIlRlc3QgSW50ZXJhY3RpdmVDb25zb2xlIGFuZCBJbnRlcmFjdGl2ZUludGVycHJldGVyIGZyb20gY29kZSBtb2R1bGUiCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgRXhpdFN0YWNrCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworY29kZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnY29kZScpCisKKworY2xhc3MgVGVzdEludGVyYWN0aXZlQ29uc29sZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uc29sZSA9IGNvZGUuSW50ZXJhY3RpdmVDb25zb2xlKCkKKyAgICAgICAgc2VsZi5tb2NrX3N5cygpCisKKyAgICBkZWYgbW9ja19zeXMoc2VsZik6CisgICAgICAgICJNb2NrIHN5c3RlbSBlbnZpcm9ubWVudCBmb3IgSW50ZXJhY3RpdmVDb25zb2xlIgorICAgICAgICAjIHVzZSBleGl0IHN0YWNrIHRvIG1hdGNoIHBhdGNoIGNvbnRleHQgbWFuYWdlcnMgdG8gYWRkQ2xlYW51cAorICAgICAgICBzdGFjayA9IEV4aXRTdGFjaygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdGFjay5jbG9zZSkKKyAgICAgICAgc2VsZi5pbmZ1bmMgPSBzdGFjay5lbnRlcl9jb250ZXh0KG1vY2sucGF0Y2goJ2NvZGUuaW5wdXQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlPVRydWUpKQorICAgICAgICBzZWxmLnN0ZG91dCA9IHN0YWNrLmVudGVyX2NvbnRleHQobW9jay5wYXRjaCgnY29kZS5zeXMuc3Rkb3V0JykpCisgICAgICAgIHNlbGYuc3RkZXJyID0gc3RhY2suZW50ZXJfY29udGV4dChtb2NrLnBhdGNoKCdjb2RlLnN5cy5zdGRlcnInKSkKKyAgICAgICAgcHJlcGF0Y2ggPSBtb2NrLnBhdGNoKCdjb2RlLnN5cycsIHdyYXBzPWNvZGUuc3lzLCBzcGVjPWNvZGUuc3lzKQorICAgICAgICBzZWxmLnN5c21vZCA9IHN0YWNrLmVudGVyX2NvbnRleHQocHJlcGF0Y2gpCisgICAgICAgIGlmIHN5cy5leGNlcHRob29rIGlzIHN5cy5fX2V4Y2VwdGhvb2tfXzoKKyAgICAgICAgICAgIHNlbGYuc3lzbW9kLmV4Y2VwdGhvb2sgPSBzZWxmLnN5c21vZC5fX2V4Y2VwdGhvb2tfXworCisgICAgZGVmIHRlc3RfcHMxKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zeXNtb2QucHMxLCAnPj4+ICcpCisKKyAgICBkZWYgdGVzdF9wczIoc2VsZik6CisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN5c21vZC5wczIsICcuLi4gJykKKworICAgIGRlZiB0ZXN0X2NvbnNvbGVfc3RkZXJyKHNlbGYpOgorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IFsiJ2FudGlvY2gnIiwgIiIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBsaXN0KHNlbGYuc3Rkb3V0Lm1ldGhvZF9jYWxscyk6CisgICAgICAgICAgICBpZiAnYW50aW9jaCcgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIm5vIGNvbnNvbGUgc3Rkb3V0IikKKworICAgIGRlZiB0ZXN0X3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInVuZGVmaW5lZCIsIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoKQorICAgICAgICBmb3IgY2FsbCBpbiBzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHM6CisgICAgICAgICAgICBpZiAnTmFtZUVycm9yOicgaW4gJycuam9pbihjYWxsWzFdKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIk5vIHN5bnRheCBlcnJvciBmcm9tIGNvbnNvbGUiKQorCisgICAgZGVmIHRlc3Rfc3lzZXhjZXB0aG9vayhzZWxmKToKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBbInJhaXNlIFZhbHVlRXJyb3IoJycpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQorICAgICAgICBob29rID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5zeXNtb2QuZXhjZXB0aG9vayA9IGhvb2sKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvb2suY2FsbGVkKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0SW50ZXJhY3RpdmVDb25zb2xlKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKaW5kZXggZTY1NmQyZi4uODFiZjgwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CkBAIC0xLDUgKzEsMTggQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0Ci1pbXBvcnQgc3lzLCBjb2RlY3MsIGh0bWwuZW50aXRpZXMsIHVuaWNvZGVkYXRhCitpbXBvcnQgY29kZWNzCitpbXBvcnQgaHRtbC5lbnRpdGllcworaW1wb3J0IHN5cworaW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHVuaWNvZGVkYXRhCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCit0cnk6CisgICAgaW1wb3J0IGN0eXBlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGN0eXBlcyA9IE5vbmUKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IC0xCitlbHNlOgorICAgIFNJWkVPRl9XQ0hBUl9UID0gY3R5cGVzLnNpemVvZihjdHlwZXMuY193Y2hhcikKIAogY2xhc3MgUG9zUmV0dXJuOgogICAgICMgdGhpcyBjYW4gYmUgdXNlZCBmb3IgY29uZmlndXJhYmxlIGNhbGxiYWNrcwpAQCAtMTM1LDIyICsxNDgsMTQgQEAKICAgICBkZWYgdGVzdF9iYWNrc2xhc2hlc2NhcGUoc2VsZik6CiAgICAgICAgICMgRG9lcyB0aGUgc2FtZSBhcyB0aGUgInVuaWNvZGUtZXNjYXBlIiBlbmNvZGluZywgYnV0IHdpdGggZGlmZmVyZW50CiAgICAgICAgICMgYmFzZSBlbmNvZGluZ3MuCi0gICAgICAgIHNpbiA9ICJhXHhhY1x1MTIzNFx1MjBhY1x1ODAwMCIKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPiAweGZmZmY6Ci0gICAgICAgICAgICBzaW4gKz0gY2hyKHN5cy5tYXh1bmljb2RlKQotICAgICAgICBzb3V0ID0gYiJhXFx4YWNcXHUxMjM0XFx1MjBhY1xcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc2luID0gImFceGFjXHUxMjM0XHUyMGFjXHU4MDAwXFUwMDEwZmZmZiIKKyAgICAgICAgc291dCA9IGIiYVxceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgiYXNjaWkiLCAiYmFja3NsYXNocmVwbGFjZSIpLCBzb3V0KQogCi0gICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwIgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHNvdXQgKz0gYnl0ZXMoIlxcVSUwOHgiICUgc3lzLm1heHVuaWNvZGUsICJhc2NpaSIpCisgICAgICAgIHNvdXQgPSBiImFceGFjXFx1MTIzNFxcdTIwYWNcXHU4MDAwXFxVMDAxMGZmZmYiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2luLmVuY29kZSgibGF0aW4tMSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKLSAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDAiCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgc291dCArPSBieXRlcygiXFxVJTA4eCIgJSBzeXMubWF4dW5pY29kZSwgImFzY2lpIikKKyAgICAgICAgc291dCA9IGIiYVx4YWNcXHUxMjM0XHhhNFxcdTgwMDBcXFUwMDEwZmZmZiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW4uZW5jb2RlKCJpc28tODg1OS0xNSIsICJiYWNrc2xhc2hyZXBsYWNlIiksIHNvdXQpCiAKICAgICBkZWYgdGVzdF9kZWNvZGluZ19jYWxsYmFja3Moc2VsZik6CkBAIC0yMDAsMzMgKzIwNSwzNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvZGVjcy5jaGFybWFwX2VuY29kZSwgc2luLCAicmVwbGFjZSIsIGNoYXJtYXApCiAKICAgICBkZWYgdGVzdF9kZWNvZGV1bmljb2RlaW50ZXJuYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgVW5pY29kZURlY29kZUVycm9yLAotICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlLAotICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAotICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUsCisgICAgICAgICAgICAgICAgInVuaWNvZGUtaW50ZXJuYWwiLAorICAgICAgICAgICAgKQorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgZGVmIGhhbmRsZXJfdW5pY29kZWludGVybmFsKGV4Yyk6CiAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZXhjLCBVbmljb2RlRGVjb2RlRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRvbid0IGtub3cgaG93IHRvIGhhbmRsZSAlciIgJSBleGMpCiAgICAgICAgICAgICAgICAgcmV0dXJuICgiXHgwMSIsIDEpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDAiCi0gICAgICAgICAgICApCisgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAiXHUwMDAwIgorICAgICAgICAgICAgICAgICkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICJcdTAwMDBcdWZmZmQiCi0gICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1ZmZmZCIKKyAgICAgICAgICAgICAgICApCiAKLSAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC5odWkiLCBoYW5kbGVyX3VuaWNvZGVpbnRlcm5hbCkKKyAgICAgICAgICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QuaHVpIiwgaGFuZGxlcl91bmljb2RlaW50ZXJuYWwpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIuZGVjb2RlKCJ1bmljb2RlLWludGVybmFsIiwgInRlc3QuaHVpIiksCi0gICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKLSAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIi5kZWNvZGUoInVuaWNvZGUtaW50ZXJuYWwiLCAidGVzdC5odWkiKSwKKyAgICAgICAgICAgICAgICAgICAgIlx1MDAwMFx1MDAwMVx1MDAwMCIKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgIGRlZiBoYW5kbGVyMShleGMpOgpAQCAtMzU1LDcgKzM2NCw3IEBACiAgICAgICAgICAgICBbImFzY2lpIiwgIlx1ZmZmZngiLCAwLCAxLCAib3VjaCJdLAogICAgICAgICAgICAgIidhc2NpaScgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciAnXFx1ZmZmZicgaW4gcG9zaXRpb24gMDogb3VjaCIKICAgICAgICAgKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgaWYgU0laRU9GX1dDSEFSX1QgPT0gNDoKICAgICAgICAgICAgIHNlbGYuY2hlY2tfZXhjZXB0aW9ub2JqZWN0YXJncygKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IsCiAgICAgICAgICAgICAgICAgWyJhc2NpaSIsICJcVTAwMDEwMDAweCIsIDAsIDEsICJvdWNoIl0sCkBAIC0zOTAsNyArMzk5LDcgQEAKICAgICAgICAgICAgIFsiZ1x1ZmZmZnJrIiwgMSwgMiwgIm91Y2giXSwKICAgICAgICAgICAgICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHVmZmZmJyBpbiBwb3NpdGlvbiAxOiBvdWNoIgogICAgICAgICApCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgc2VsZi5jaGVja19leGNlcHRpb25vYmplY3RhcmdzKAogICAgICAgICAgICAgICAgIFVuaWNvZGVUcmFuc2xhdGVFcnJvciwKICAgICAgICAgICAgICAgICBbImdcVTAwMDEwMDAwcmsiLCAxLCAyLCAib3VjaCJdLApAQCAtNTc3LDMxICs1ODYsMzAgQEAKICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZmZmZiIsIDAsIDEsICJvdWNoIikpLAogICAgICAgICAgICAgKCJcXHVmZmZmIiwgMSkKICAgICAgICAgKQotICAgICAgICAjIDEgb24gVUNTLTQgYnVpbGRzLCAyIG9uIFVDUy0yCi0gICAgICAgIGxlbl93aWRlID0gbGVuKCJcVTAwMDEwMDAwIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMDEwMDAwIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAxMGZmZmYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBsZW5fd2lkZSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcVTAwMTBmZmZmIiwgbGVuX3dpZGUpCi0gICAgICAgICkKLSAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKLSAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAotICAgICAgICAgICAgKCJcXHVkODAwIiwgMSkKLSAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAotICAgICAgICAgICAgICAgIFVuaWNvZGVFbmNvZGVFcnJvcigiYXNjaWkiLCAiXHVkZmZmIiwgMCwgMSwgIm91Y2giKSksCi0gICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQotICAgICAgICApCisgICAgICAgIGlmIFNJWkVPRl9XQ0hBUl9UID4gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlxVMDAwMTAwMDAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgIm91Y2giKSksCisgICAgICAgICAgICAgICAgKCJcXFUwMDAxMDAwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcVTAwMTBmZmZmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFxVMDAxMGZmZmYiLCAxKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgIyBMb25lIHN1cnJvZ2F0ZXMgKHJlZ2FyZGxlc3Mgb2YgdW5pY29kZSB3aWR0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgY29kZWNzLmJhY2tzbGFzaHJlcGxhY2VfZXJyb3JzKAorICAgICAgICAgICAgICAgICAgICBVbmljb2RlRW5jb2RlRXJyb3IoImFzY2lpIiwgIlx1ZDgwMCIsIDAsIDEsICJvdWNoIikpLAorICAgICAgICAgICAgICAgICgiXFx1ZDgwMCIsIDEpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIGNvZGVjcy5iYWNrc2xhc2hyZXBsYWNlX2Vycm9ycygKKyAgICAgICAgICAgICAgICAgICAgVW5pY29kZUVuY29kZUVycm9yKCJhc2NpaSIsICJcdWRmZmYiLCAwLCAxLCAib3VjaCIpKSwKKyAgICAgICAgICAgICAgICAoIlxcdWRmZmYiLCAxKQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3RfYmFkaGFuZGxlcnJlc3VsdHMoc2VsZik6CiAgICAgICAgIHJlc3VsdHMgPSAoIDQyLCAiZm9vIiwgKDEsMiwzKSwgKCJmb28iLCAxLCAzKSwgKCJmb28iLCBOb25lKSwgKCJmb28iLCksICgiZm9vIiwgMSwgMyksICgiZm9vIiwgTm9uZSksICgiZm9vIiwpICkKQEAgLTYyMiwxMiArNjMwLDE0IEBACiAgICAgICAgICAgICAgICAgKCJ1dGYtNyIsIGIiK3gtIiksCiAgICAgICAgICAgICAgICAgKCJ1bmljb2RlLWludGVybmFsIiwgYiJceDAwIiksCiAgICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKLSAgICAgICAgICAgICAgICAgICAgZW5jLAotICAgICAgICAgICAgICAgICAgICAidGVzdC5iYWRoYW5kbGVyIgotICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB3aXRoIHRlc3Quc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLmRlY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0LmJhZGhhbmRsZXIiCisgICAgICAgICAgICAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2xvb2t1cChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3Muc3RyaWN0X2Vycm9ycywgY29kZWNzLmxvb2t1cF9lcnJvcigic3RyaWN0IikpCkBAIC02NzksNyArNjg5LDcgQEAKICAgICAgICAgIyBQeXRob24vY29kZWNzLmM6OlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMoKQogICAgICAgICAjIGFuZCBpbmxpbmUgaW1wbGVtZW50YXRpb25zCiAgICAgICAgIHYgPSAoMSwgNSwgMTAsIDUwLCAxMDAsIDUwMCwgMTAwMCwgNTAwMCwgMTAwMDAsIDUwMDAwKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZT49MTAwMDAwOgorICAgICAgICBpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0OgogICAgICAgICAgICAgdiArPSAoMTAwMDAwLCA1MDAwMDAsIDEwMDAwMDApCiAgICAgICAgIHMgPSAiIi5qb2luKFtjaHIoeCkgZm9yIHggaW4gdl0pCiAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigidGVzdC54bWxjaGFycmVmcmVwbGFjZSIsIGNvZGVjcy54bWxjaGFycmVmcmVwbGFjZV9lcnJvcnMpCkBAIC03NDQsNyArNzU0LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IE5vbmV9KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCBEKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4ZmYiLCAic3RyaWN0IiwgezB4ZmY6IDB4MTEwMDAwfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2RlY3MuY2hhcm1hcF9kZWNvZGUsIGIiXHhmZiIsICJzdHJpY3QiLCB7MHhmZjogc3lzLm1heHVuaWNvZGUrMX0pCiAKICAgICBkZWYgdGVzdF9lbmNvZGVoZWxwZXIoc2VsZik6CiAgICAgICAgICMgZW5oYW5jZSBjb3ZlcmFnZSBvZjoKQEAgLTg0Myw4ICs4NTMsMTIgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgJXIiICUgZXhjKQogICAgICAgICBjb2RlY3MucmVnaXN0ZXJfZXJyb3IoInRlc3QucmVwbGFjaW5nIiwgcmVwbGFjaW5nKQotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5kZWNvZGUoZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCiAKICAgICAgICAgZGVmIG11dGF0aW5nKGV4Yyk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4YywgVW5pY29kZURlY29kZUVycm9yKToKQEAgLTg1NSw4ICs4NjksMTEgQEAKICAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJ0ZXN0Lm11dGF0aW5nIiwgbXV0YXRpbmcpCiAgICAgICAgICMgSWYgdGhlIGRlY29kZXIgZG9lc24ndCBwaWNrIHVwIHRoZSBtb2RpZmllZCBpbnB1dCB0aGUgZm9sbG93aW5nCiAgICAgICAgICMgd2lsbCBsZWFkIHRvIGFuIGVuZGxlc3MgbG9vcAotICAgICAgICBmb3IgKGVuY29kaW5nLCBkYXRhKSBpbiBiYWRkYXRhOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkYXRhLmRlY29kZSwgZW5jb2RpbmcsICJ0ZXN0LnJlcGxhY2luZyIpCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgZm9yIChlbmNvZGluZywgZGF0YSkgaW4gYmFkZGF0YToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGRhdGEuZGVjb2RlKGVuY29kaW5nLCAidGVzdC5yZXBsYWNpbmciKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChDb2RlY0NhbGxiYWNrVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CmluZGV4IGRjYTlmMTAuLmIwOGM1ZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQpAQCAtNSw1NCArNSw1NyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0dCMjMxMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IyMzEyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diMjMxMicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjIzMTInKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDgxXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGFcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4ODFceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YSIpLAorICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1ODA0YVx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgxXHg4MVx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHU4MDRhIiksCiAgICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAogICAgICkKIAotY2xhc3MgVGVzdF9HQksodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0dCSyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYmsnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2JrJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAogICAgICAgICAoYiJceDgzXHgzNFx4ODNceDMxIiwgInN0cmljdCIsIE5vbmUpLAogICAgICAgICAoIlx1MzBmYiIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0IxODAzMCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IxODAzMChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IxODAzMCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU4MDRhXHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTgwNGFcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1ODA0YSIpLAotICAgICAgICAoYiJhYmNceDg0XHgzOVx4ODRceDM5XHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKGIiYWJjXHg4NFx4MzlceDg0XHgzOVx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkOVx1ZmZmZDlcdTgwNGEiKSwKICAgICAgICAgKCJcdTMwZmIiLCAic3RyaWN0IiwgYiJceDgxOVx4YTc5IiksCisgICAgICAgIChiImFiY1x4ODRceDMyXHg4MFx4ODBkZWYiLCAicmVwbGFjZSIsICdhYmNcdWZmZmQyXHVmZmZkXHVmZmZkZGVmJyksCisgICAgICAgIChiImFiY1x4ODFceDMwXHg4MVx4MzBkZWYiLCAic3RyaWN0IiwgJ2FiY1x4ODBkZWYnKSwKKyAgICAgICAgKGIiYWJjXHg4Nlx4MzBceDgxXHgzMGRlZiIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZDBcdWZmZmQwZGVmJyksCiAgICAgKQogICAgIGhhc19pc28xMDY0NiA9IFRydWUKIAotY2xhc3MgVGVzdF9IWih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSFoobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2h6JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdoeicpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyB0ZXN0ICd+XG4nICgzIGxpbmVzKQogICAgICAgICAoYidUaGlzIHNlbnRlbmNlIGlzIGluIEFTQ0lJLlxuJwpAQCAtNzQsOSArNzcsMTEgQEAKICAgICAgICAgICdcdTVkZjFcdTYyNDBcdTRlMGRcdTZiMzJcdWZmMGNcdTUyZmZcdTY1YmRcdTY1YmNcdTRlYmFcdTMwMDInCiAgICAgICAgICAnQnllLlxuJyksCiAgICAgICAgICMgaW52YWxpZCBieXRlcwotICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEZCcpLAorICAgICAgICAoYidhYn5jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEY2QnKSwKICAgICAgICAgKGInYWJceGZmY2QnLCAncmVwbGFjZScsICdhYlx1RkZGRGNkJyksCiAgICAgICAgIChiJ2FifntceDgxXHg4MVx4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHVGRkZEXHVGRkZEXHU4MDRBY2QnKSwKKyAgICAgICAgKGInYWJ+e1x4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgJ2FiXHU4MDRBY2QnKSwKKyAgICAgICAgKGIiYWJ+e1x4NzlceDc5XHg0MVx4NDR+fWNkIiwgInJlcGxhY2UiLCAiYWJcdWZmZmRcdWZmZmRcdTgwNGFjZCIpLAogICAgICkKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggY2NkYzBiNC4uMzEzNjNmNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC01LDE4ICs1LDE4IEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNUhLU0NTKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9CaWc1SEtTQ1MobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzVoa3NjcycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQppbmRleCA4YzZlOGE1Li5lNGMxODM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgSVNPIDIwMjIgZW5jb2RpbmdzLgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBDT01NT05fQ09ERUNfVEVTVFMgPSAoCkBAIC0xMywyMyArMTMsMjMgQEAKICAgICAgICAgKGInYWJceDFCJGRlZicsICdyZXBsYWNlJywgJ2FiXHVGRkZEJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfSlAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCiAKLWNsYXNzIFRlc3RfSVNPMjAyMl9KUDIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfSlAyKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdpc28yMDIyX2pwXzInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiZGVmJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfa3InKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgJ2FiXHgxQk5kZWYnKSwKICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQppbmRleCBmNTZhMzczLi4zMGM5ZTE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKQEAgLTUsNjAgKzUsNjcgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDkzMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5MzIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTMyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgxXHgwMFx4ODJceDg0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODFceDAwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmNDRcdWZmZmQiKSwKLSAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHgwMFx1ZmY0NCIpLAorICAgICAgICAoYiJhYmNceDgxXHgwMFx4ODJceDg0XHg4OCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx4MDBcdWZmNDRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MVx4MDBceDgyXHg4NCIsICJpZ25vcmUiLCAgImFiY1x4MDBcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJceEVCeHkiLCAicmVwbGFjZSIsICJhYlx1RkZGRHh5IiksCisgICAgICAgIChiImFiXHhGMFx4Mzl4eSIsICJyZXBsYWNlIiwgImFiXHVGRkZEOXh5IiksCisgICAgICAgIChiImFiXHhFQVx4RjB4eSIsICJyZXBsYWNlIiwgJ2FiXHVmZmZkXHVlMDM4eScpLAogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXFxceDdlIiksCiAgICAgICAgIChiIlx4ODFceDVmXHg4MVx4NjFceDgxXHg3YyIsICJyZXBsYWNlIiwgIlx1ZmYzY1x1MjIyNVx1ZmYwZCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSklTWDAyMTModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorZXVjX2NvbW1vbnRlc3RzID0gKAorICAgICMgaW52YWxpZCBieXRlcworICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdTc5NTYiKSwKKyAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAorICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKKyAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKKyAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmZmQiKSwKKyAgICAoYiJceDgyXHhGQ3h5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkeHkiKSwKKyAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKKyAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCisgICAgKGIiXHhhMVx4YzBcXCIsICJzdHJpY3QiLCAiXHVmZjNjXFwiKSwKKyAgICAoYiJceDhlWFkiLCAicmVwbGFjZSIsICJcdWZmZmRYWSIpLAorKQorCitjbGFzcyBUZXN0X0VVQ19KSVNfMjAwNChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGVuY29kaW5nID0gJ2V1Y19qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHU3OTU2XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAgICAgKGIiYWJjXHg4Zlx4ODNceDgzIiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkIiksCi0gICAgICAgIChiIlx4YzFceDY0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGExXHhjMCIsICJzdHJpY3QiLCAiXHVmZjNjIiksCi0gICAgKQorICAgIGVuY29kaW5nID0gJ2V1Y19qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qaXN4MDIxMycpCisgICAgY29kZWN0ZXN0cyA9IGV1Y19jb21tb250ZXN0cwogICAgIHhtbGNoYXJuYW1ldGVzdCA9ICgKICAgICAgICAgIlx4YWJcdTIxMWNceGJiID0gXHUyMzI5XHUxMjM0XHUyMzJhIiwKICAgICAgICAgYiJceGE5XHhhOCZyZWFsO1x4YTlceGIyID0gJmxhbmc7JiM0NjYwOyZyYW5nOyIKICAgICApCiAKLWV1Y2pwX2NvbW1vbnRlc3RzID0gKAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdTc5NTYiKSwKLSAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Nzk1Nlx1ZmZmZCIpLAotICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdTc5NTYiKSwKLSAgICAoYiJhYmNceDhmXHg4M1x4ODMiLCAicmVwbGFjZSIsICJhYmNcdWZmZmQiKSwKLSAgICAoYiJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKLSkKK2NsYXNzIFRlc3RfRVVDX0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJworICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzCisgICAgeG1sY2hhcm5hbWV0ZXN0ID0gKAorICAgICAgICAiXHhhYlx1MjExY1x4YmIgPSBcdTIzMjlcdTEyMzRcdTIzMmEiLAorICAgICAgICBiIlx4YTlceGE4JnJlYWw7XHhhOVx4YjIgPSAmbGFuZzsmIzQ2NjA7JnJhbmc7IgorICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKK2NsYXNzIFRlc3RfRVVDX0pQX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qcCcpCi0gICAgY29kZWN0ZXN0cyA9IGV1Y2pwX2NvbW1vbnRlc3RzICsgKAotICAgICAgICAoYiJceGExXHhjMFxcIiwgInN0cmljdCIsICJcdWZmM2NcXCIpLAorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZXVjX2pwJykKKyAgICBjb2RlY3Rlc3RzID0gZXVjX2NvbW1vbnRlc3RzICsgKAogICAgICAgICAoIlx4YTUiLCAic3RyaWN0IiwgYiJceDVjIiksCiAgICAgICAgICgiXHUyMDNlIiwgInN0cmljdCIsIGIiXHg3ZSIpLAogICAgICkKQEAgLTY2LDI5ICs3Myw0OCBAQAogc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgPSAoCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgKGIiYWJjXHhmOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmY0NCIpLAotICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCiAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NGRlZiIsICJpZ25vcmUiLCAgImFiY1x1ZmY0NGRlZiIpLAogKQogCi1jbGFzcyBUZXN0X1NKSVNfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlxcXHg3ZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAic3RyaWN0IiwgIlx1ZmYzY1x1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceDgxXHgzOSIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmQ5IiksCisgICAgICAgIChiImFiY1x4RUFceEZDIiwgInJlcGxhY2UiLCAgImFiY1x1ZmZmZFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceEZGXHg1OCIsICJyZXBsYWNlIiwgICJhYmNcdWZmZmRYIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X1NKSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfU0pJU18yMDA0KG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXNfMjAwNCcKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppcycpCisgICAgY29kZWN0ZXN0cyA9IHNoaWZ0amlzX2NvbW1vbmVuY3Rlc3RzICsgKAorICAgICAgICAoYiJcXFx4N2UiLCAic3RyaWN0IiwgIlx4YTVcdTIwM2UiKSwKKyAgICAgICAgKGIiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInN0cmljdCIsICJcXFx1MjAxNlx1MjIxMiIpLAorICAgICAgICAoYiJhYmNceEVBXHhGQyIsICJzdHJpY3QiLCAgImFiY1x1NjRiZiIpLAorICAgICAgICAoYiJceDgxXHgzOXh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZDl4eSIpLAorICAgICAgICAoYiJceEZGXHg1OHh5IiwgInJlcGxhY2UiLCAgIlx1ZmZmZFh4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0eHkiLCAicmVwbGFjZSIsICJcdWZmZmRcdWZmZmRcdWZmNDR4eSIpLAorICAgICAgICAoYiJceDgwXHg4MFx4ODJceDg0XHg4OHh5IiwgInJlcGxhY2UiLCAiXHVmZmZkXHVmZmZkXHVmZjQ0XHU1ODY0eSIpLAorICAgICAgICAoYiJceEZDXHhGQnh5IiwgInJlcGxhY2UiLCAnXHVmZmZkXHU5NWI0eScpLAorICAgICkKKyAgICB4bWxjaGFybmFtZXRlc3QgPSAoCisgICAgICAgICJceGFiXHUyMTFjXHhiYiA9IFx1MjMyOVx1MTIzNFx1MjMyYSIsCisgICAgICAgIGIiXHg4NUcmcmVhbDtceDg1USA9ICZsYW5nOyYjNDY2MDsmcmFuZzsiCisgICAgKQorCitjbGFzcyBUZXN0X1NKSVNYMDIxMyhtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKLSAgICBjb2RlY3Rlc3RzID0gKAotICAgICAgICAjIGludmFsaWQgYnl0ZXMKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ZjgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4ODJceDg0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRceDg4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZjQ0XHVmZmZkIiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODRkZWYiLCAiaWdub3JlIiwgICJhYmNcdWZmNDRkZWYiKSwKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ3NoaWZ0X2ppc3gwMjEzJykKKyAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCisgICAgICAgIChiImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceDgyXHg4NFx4ODgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWZmNDRcdWZmZmQiKSwKKwogICAgICAgICAjIHNqaXMgdnMgY3A5MzIKICAgICAgICAgKGIiXFxceDdlIiwgInJlcGxhY2UiLCAiXHhhNVx1MjAzZSIpLAogICAgICAgICAoYiJceDgxXHg1Zlx4ODFceDYxXHg4MVx4N2MiLCAicmVwbGFjZSIsICJceDVjXHUyMDE2XHUyMjEyIiksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQppbmRleCBkZTRkYTdmLi40ZGQ2MDQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKQEAgLTUsMzAgKzUsMzAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDk0OSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5NDkobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0IiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHVjODk0XHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfRVVDS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0VVQ0tSKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfa3InKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKICAgICAgICAgKGIiYWJjXHhjOCIsICJzdHJpY3QiLCAgTm9uZSksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTQiKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWM4OTRcdWZmZmQiKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgJ2FiY1x1ZmZmZFx1ZmZmZFx1Yzg5NCcpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1ZmZmZFx1Yzg5NFx1ZmZmZCIpLAogICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgImlnbm9yZSIsICAiYWJjXHVjODk0IiksCiAKICAgICAgICAgIyBjb21wb3NlZCBtYWtlLXVwIHNlcXVlbmNlIGVycm9ycwpAQCAtNDAsMjYgKzQwLDMxIEBACiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTRceGQ0IiwgInN0cmljdCIsICJcdWM0ZDQiKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTRceGQwXHhhNFx4ZDR4IiwgInN0cmljdCIsICJcdWM0ZDR4IiksCi0gICAgICAgIChiImFceGE0XHhkNFx4YTRceGI2XHhhNCIsICJyZXBsYWNlIiwgImFcdWZmZmQiKSwKKyAgICAgICAgKGIiYVx4YTRceGQ0XHhhNFx4YjZceGE0IiwgInJlcGxhY2UiLCAnYVx1ZmZmZCcpLAogICAgICAgICAoYiJceGE0XHhkNFx4YTNceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJzdHJpY3QiLCBOb25lKSwKICAgICAgICAgKGIiXHhhNFx4ZDRceGE0XHhiNlx4YTNceGQwXHhhNFx4ZDQiLCAic3RyaWN0IiwgTm9uZSksCiAgICAgICAgIChiIlx4YTRceGQ0XHhhNFx4YjZceGE0XHhkMFx4YTNceGQ0IiwgInN0cmljdCIsIE5vbmUpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAotICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgIlx1ZmZmZCIpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGZmXHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1ZmZmZFx1MzE2MFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZmZceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1ZmZmZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhmZiIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1NmUyMVx1YjU0NFx1NTcyZFx1ZmZmZCcpLAorICAgICAgICAoYiJceGE0XHhkNFx4ZmZceGE0XHhkNFx4YTRceGI2XHhhNFx4ZDBceGE0XHhkNCIsICJyZXBsYWNlIiwgJ1x1ZmZmZFx1ZmZmZFx1ZmZmZFx1YzRkNCcpLAogICAgICAgICAoYiJceGMxXHhjNCIsICJzdHJpY3QiLCAiXHVjODk0IiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0pPSEFCKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9KT0hBQihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnam9oYWInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCiAgICAgICAgIChiImFiY1x4YzgiLCAic3RyaWN0IiwgIE5vbmUpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3IiksCi0gICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVjZDI3XHVmZmZkIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjciKSwKKyAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNFx4YzgiLCAicmVwbGFjZSIsICJhYmNcdWZmZmRcdWZmZmRcdWNkMjdcdWZmZmQiKSwKICAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgImFiY1x1Y2QyNyIpLAorICAgICAgICAoYiJceEQ4YWJjIiwgInJlcGxhY2UiLCAgIlx1RkZGRGFiYyIpLAorICAgICAgICAoYiJceEQ4XHhGRmFiYyIsICJyZXBsYWNlIiwgICJcdUZGRkRcdUZGRkRhYmMiKSwKKyAgICAgICAgKGIiXHg4NGJ4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRieHkiKSwKKyAgICAgICAgKGIiXHg4Q0J4eSIsICJyZXBsYWNlIiwgICJcdUZGRkRCeHkiKSwKICAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDEyZDNjOWYuLjk2MjQ1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtNSwxOCArNSwxOCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0X0JpZzUodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0JpZzUobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzUnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzUnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLAogICAgICAgICAoYiJhYmNceGM4IiwgInN0cmljdCIsICBOb25lKSwKLSAgICAgICAgKGIiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMCIpLAotICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0XHhjOCIsICJyZXBsYWNlIiwgImFiY1x1ZmZmZFx1OGIxMFx1ZmZmZCIpLAorICAgICAgICAoYiJhYmNceDgwXHg4MFx4YzFceGM0IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwIiksCisgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzRceGM4IiwgInJlcGxhY2UiLCAiYWJjXHVmZmZkXHVmZmZkXHU4YjEwXHVmZmZkIiksCiAgICAgICAgIChiImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgICJhYmNcdThiMTAiKSwKICAgICApCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggMDYzOTE5ZC4uMWE3NjFjZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTUsMjEgKzUsMjEgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdEdCMjMxMk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RHQjIzMTJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdnYjIzMTInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1DTi5UWFQnCiAKLWNsYXNzIFRlc3RHQktNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0JLTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2JrJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy8nIFwKICAgICAgICAgICAgICAgICAgJ01JQ1NGVC9XSU5ET1dTL0NQOTM2LlRYVCcKIAotY2xhc3MgVGVzdEdCMTgwMzBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0R0IxODAzME1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQppbmRleCBiYmUxZjJmLi41ZjRlN2M3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weQpAQCAtNSwxMCArNSwxMCBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QmlnNUhLU0NTTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEJpZzVIS1NDU01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1aGtzY3MnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0JJRzVIS1NDUy0yMDA0LlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNjUyYmQ4MS4uMWZkYmY2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTUsMTAgKzUsMTAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdENQOTMyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTMyTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5MzInCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTI0LDE0ICsyNCwxNCBAQAogICAgICAgICBzdXBtYXBzLmFwcGVuZCgoYnl0ZXMoW2ldKSwgY2hyKGkrMHhmZWMwKSkpCiAKIAotY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2pwJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KUC5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KUC5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNDT01QQVRNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0U0pJU0NPTVBBVE1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwogICAgIG1hcGZpbGVuYW1lID0gJ1NISUZUSklTLlRYVCcKQEAgLTQ2LDE0ICs0NiwxNCBAQAogICAgICAgICAoYidceDgxXycsICdcXCcpLAogICAgIF0KIAotY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pJU1gwMjEzTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2ppc3gwMjEzJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KSVNYMDIxMy5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vcGVvcGxlLmZyZWVic2Qub3JnL35wZXJreS9pMThuL0VVQy1KSVNYMDIxMy5UWFQnCiAKIAotY2xhc3MgVGVzdFNKSVNYMDIxM01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRfSklTWDAyMTMuVFhUJwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCBkOTA5YzhiLi4wMzU2NDAyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtNSwxNyArNSwxNyBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5NDlNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NDlNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk0OScKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvTUlDU0ZUJyBcCiAgICAgICAgICAgICAgICAgICcvV0lORE9XUy9DUDk0OS5UWFQnCiAKIAotY2xhc3MgVGVzdEVVQ0tSTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0tSTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2tyJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3Blb3BsZS5mcmVlYnNkLm9yZy9+cGVya3kvaTE4bi9FVUMtS1IuVFhUJwpAQCAtMjUsNyArMjUsNyBAQAogICAgIHBhc3NfZGVjdGVzdCA9IFsoYidceGE0XHhkNCcsICdcdTMxNjQnKV0KIAogCi1jbGFzcyBUZXN0Sk9IQUJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Sk9IQUJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdqb2hhYicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBLycgXApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCA2ZGI1MDkxLi40NDQ2N2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtNSwxNiArNSwxNiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QklHNU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCSUc1TWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvT0JTT0xFVEUvJyBcCiAgICAgICAgICAgICAgICAgICdFQVNUQVNJQS9PVEhFUi9CSUc1LlRYVCcKIAotY2xhc3MgVGVzdENQOTUwTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdENQOTUwTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnY3A5NTAnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC8nIFwKQEAgLTIzLDYgKzIzLDkgQEAKICAgICAgICAgKGInXHhhMlx4Y2MnLCAnXHU1MzQxJyksCiAgICAgICAgIChiJ1x4YTJceGNlJywgJ1x1NTM0NScpLAogICAgIF0KKyAgICBjb2RlY3Rlc3RzID0gKAorICAgICAgICAoYiJceEZGeHkiLCAicmVwbGFjZSIsICAiXHVmZmZkeHkiKSwKKyAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKaW5kZXggNDJkMGRhMy4uOTM2NjBmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkKQEAgLTEsOCArMSwyNSBAQAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBfdGVzdGNhcGkKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBpbwogaW1wb3J0IGxvY2FsZQotaW1wb3J0IHN5cywgX3Rlc3RjYXBpLCBpbworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCitlbHNlOgorICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCisgICAgU0laRU9GX1dDSEFSX1QgPSAtMQorZWxzZToKKyAgICBTSVpFT0ZfV0NIQVJfVCA9IGN0eXBlcy5zaXplb2YoY3R5cGVzLmNfd2NoYXIpCiAKIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgIiIiCkBAIC02NDQsMTAgKzY2MSwxMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNcdWQ4MDBkZWYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvcik6CiAgICAgICAgICAgICBiImFiY1x4ZWRceGEwIi5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywKKyAgICAgICAgICAgICAgICAgICAgICdjcDY1MDAxIGlzIGEgV2luZG93cy1vbmx5IGNvZGVjJykKK2NsYXNzIENQNjUwMDFUZXN0KFJlYWRUZXN0KToKKyAgICBlbmNvZGluZyA9ICJjcDY1MDAxIgorCisgICAgZGVmIHRlc3RfZW5jb2RlKHNlbGYpOgorICAgICAgICB0ZXN0cyA9IFsKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInXHhjM1x4YTlceGUyXHg4Mlx4YWMnKSwKKyAgICAgICAgICAgICgnXFUwMDEwZmZmZicsICdzdHJpY3QnLCBiJ1x4ZjRceDhmXHhiZlx4YmYnKSwKKyAgICAgICAgXQorICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKKyAgICAgICAgICAgIHRlc3RzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnaWdub3JlJywgYicnKSwKKyAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdyZXBsYWNlJywgYic/JyksCisgICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnYmFja3NsYXNocmVwbGFjZScsIGInXFx1ZGM4MCcpLAorICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAorICAgICAgICAgICAgKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRlc3RzLmFwcGVuZCgoJ1x1ZGM4MCcsICdzdHJpY3QnLCBiJ1x4ZWRceGIyXHg4MCcpKQorICAgICAgICBmb3IgdGV4dCwgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RlZCA9IHRleHQuZW5jb2RlKCdjcDY1MDAxJywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBlbmNvZGUgJWEgdG8gY3A2NTAwMSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcnM9JXI6ICVzJyAlICh0ZXh0LCBlcnJvcnMsIGVycikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVkLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgJyVhLmVuY29kZSgiY3A2NTAwMSIsICVyKT0lYSAhPSAlYScKKyAgICAgICAgICAgICAgICAgICAgJSAodGV4dCwgZXJyb3JzLCBlbmNvZGVkLCBleHBlY3RlZCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5lbmNvZGUsICJjcDY1MDAxIiwgZXJyb3JzKQorCisgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgorICAgICAgICB0ZXN0cyA9IFsKKyAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCisgICAgICAgICAgICAoYidceGMzXHhhOVx4ZTJceDgyXHhhYycsICdzdHJpY3QnLCAnXHhlOVx1MjBhYycpLAorICAgICAgICAgICAgKGInXHhmNFx4OGZceGJmXHhiZicsICdzdHJpY3QnLCAnXFUwMDEwZmZmZicpLAorICAgICAgICAgICAgKGInXHhlZlx4YmZceGJkJywgJ3N0cmljdCcsICdcdWZmZmQnKSwKKyAgICAgICAgICAgIChiJ1tceGMzXHhhOV0nLCAnc3RyaWN0JywgJ1tceGU5XScpLAorICAgICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICBdCisgICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdpZ25vcmUnLCAnW10nKSwKKyAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRcdWZmZmRdJyksCisgICAgICAgICAgICApKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKKyAgICAgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdzdHJpY3QnLCAnW1x1ZGM4MF0nKSwKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciByYXcsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CisgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGRlY29kZWQgPSByYXcuZGVjb2RlKCdjcDY1MDAxJywgZXJyb3JzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuYWJsZSB0byBkZWNvZGUgJWEgZnJvbSBjcDY1MDAxIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHJhdywgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5kZWNvZGUoImNwNjUwMDEiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHJhdywgZXJyb3JzLCBkZWNvZGVkLCBleHBlY3RlZCkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgcmF3LmRlY29kZSwgJ2NwNjUwMDEnLCBlcnJvcnMpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhWSVNUQV9PUl9MQVRFUiwgJ3JlcXVpcmUgV2luZG93cyBWaXN0YSBvciBsYXRlcicpCisgICAgZGVmIHRlc3RfbG9uZV9zdXJyb2dhdGVzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsICJcdWQ4MDAiLmVuY29kZSwgImNwNjUwMDEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIiXHhlZFx4YTBceDgwIi5kZWNvZGUsICJjcDY1MDAxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJiYWNrc2xhc2hyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbXFx1ZGM4MF0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInhtbGNoYXJyZWZyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbJiM1NjQ0ODtdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1tceDgwXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAiaWdub3JlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidbXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoImNwNjUwMDEiLCAicmVwbGFjZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInWz9dJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFZJU1RBX09SX0xBVEVSLCAncmVxdWlyZSBXaW5kb3dzIFZpc3RhIG9yIGxhdGVyJykKKyAgICBkZWYgdGVzdF9zdXJyb2dhdGVwYXNzX2hhbmRsZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImFiY1x1ZDgwMGRlZiIuZW5jb2RlKCJjcDY1MDAxIiwgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgImFiY1x1ZDgwMGRlZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxVMDAwMTBmZmZcdUQ4MDAiLmVuY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiLmRlY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlxVMDAwMTBmZmZcdUQ4MDAiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29kZWNzLmxvb2t1cF9lcnJvcigic3Vycm9nYXRlcGFzcyIpKQorCisKKwogY2xhc3MgVVRGN1Rlc3QoUmVhZFRlc3QpOgogICAgIGVuY29kaW5nID0gInV0Zi03IgogCkBAIC05MDgsNjEgKzEwMzAsODAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBwdW55LmRlY29kZSgicHVueWNvZGUiKSkKIAogY2xhc3MgVW5pY29kZUludGVybmFsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU0laRU9GX1dDSEFSX1QgPT0gNCwgJ3NwZWNpZmljIHRvIDMyLWJpdCB3Y2hhcl90JykKICAgICBkZWYgdGVzdF9idWcxMjUxMzAwKHNlbGYpOgogICAgICAgICAjIERlY29kaW5nIHdpdGggdW5pY29kZV9pbnRlcm5hbCB1c2VkIHRvIG5vdCBjb3JyZWN0bHkgaGFuZGxlICJjb2RlCiAgICAgICAgICMgcG9pbnRzIiBhYm92ZSAweDEwZmZmZiBvbiBVQ1MtNCBidWlsZHMuCi0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID4gMHhmZmZmOgotICAgICAgICAgICAgb2sgPSBbCi0gICAgICAgICAgICAgICAgKGIiXHgwMFx4MTBceGZmXHhmZiIsICJcVTAwMTBmZmZmIiksCi0gICAgICAgICAgICAgICAgKGIiXHgwMFx4MDBceDAxXHgwMSIsICJcVTAwMDAwMTAxIiksCi0gICAgICAgICAgICAgICAgKGIiIiwgIiIpLAotICAgICAgICAgICAgXQotICAgICAgICAgICAgbm90X29rID0gWwotICAgICAgICAgICAgICAgIGIiXHg3Zlx4ZmZceGZmXHhmZiIsCi0gICAgICAgICAgICAgICAgYiJceDgwXHgwMFx4MDBceDAwIiwKLSAgICAgICAgICAgICAgICBiIlx4ODFceDAwXHgwMFx4MDAiLAotICAgICAgICAgICAgICAgIGIiXHgwMCIsCi0gICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMCIsCi0gICAgICAgICAgICBdCi0gICAgICAgICAgICBmb3IgaW50ZXJuYWwsIHVuaSBpbiBvazoKLSAgICAgICAgICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgb2sgPSBbCisgICAgICAgICAgICAoYiJceDAwXHgxMFx4ZmZceGZmIiwgIlxVMDAxMGZmZmYiKSwKKyAgICAgICAgICAgIChiIlx4MDBceDAwXHgwMVx4MDEiLCAiXFUwMDAwMDEwMSIpLAorICAgICAgICAgICAgKGIiIiwgIiIpLAorICAgICAgICBdCisgICAgICAgIG5vdF9vayA9IFsKKyAgICAgICAgICAgIGIiXHg3Zlx4ZmZceGZmXHhmZiIsCisgICAgICAgICAgICBiIlx4ODBceDAwXHgwMFx4MDAiLAorICAgICAgICAgICAgYiJceDgxXHgwMFx4MDBceDAwIiwKKyAgICAgICAgICAgIGIiXHgwMCIsCisgICAgICAgICAgICBiIlx4MDBceDAwXHgwMFx4MDBceDAwIiwKKyAgICAgICAgXQorICAgICAgICBmb3IgaW50ZXJuYWwsIHVuaSBpbiBvazoKKyAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6CisgICAgICAgICAgICAgICAgaW50ZXJuYWwgPSBieXRlcyhyZXZlcnNlZChpbnRlcm5hbCkpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaSwgaW50ZXJuYWwuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIikpCi0gICAgICAgICAgICBmb3IgaW50ZXJuYWwgaW4gbm90X29rOgotICAgICAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gImxpdHRsZSI6Ci0gICAgICAgICAgICAgICAgICAgIGludGVybmFsID0gYnl0ZXMocmV2ZXJzZWQoaW50ZXJuYWwpKQorICAgICAgICBmb3IgaW50ZXJuYWwgaW4gbm90X29rOgorICAgICAgICAgICAgaWYgc3lzLmJ5dGVvcmRlciA9PSAibGl0dGxlIjoKKyAgICAgICAgICAgICAgICBpbnRlcm5hbCA9IGJ5dGVzKHJldmVyc2VkKGludGVybmFsKSkKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwcmVjYXRlZCcsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgaW50ZXJuYWwuZGVjb2RlLAotICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiKQorICAgICAgICBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgorICAgICAgICAgICAgaW52YWxpZCA9IGIiXHgwMFx4MDBceDExXHgwMCIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGludmFsaWQgPSBiIlx4MDBceDExXHgwMFx4MDAiCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZC5kZWNvZGUsICJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludmFsaWQuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIiwgInJlcGxhY2UiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1x1ZmZmZCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcl9hdHRyaWJ1dGVzKHNlbGYpOgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIHRyeToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgndW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICAgICAgYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MTFceDExXHgwMCIuZGVjb2RlKCJ1bmljb2RlX2ludGVybmFsIikKLSAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidW5pY29kZV9pbnRlcm5hbCIsIGV4LmVuY29kaW5nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceDAwXHgwMFx4MDBceDAwXHgwMFx4MTFceDExXHgwMCIsIGV4Lm9iamVjdCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGV4LnN0YXJ0KQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgZXguZW5kKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQorICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGV4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidW5pY29kZV9pbnRlcm5hbCIsIGV4LmVuY29kaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIlx4MDBceDAwXHgwMFx4MDBceDAwXHgxMVx4MTFceDAwIiwgZXgub2JqZWN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0LCBleC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOCwgZXguZW5kKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFNJWkVPRl9XQ0hBUl9UID09IDQsICdzcGVjaWZpYyB0byAzMi1iaXQgd2NoYXJfdCcpCiAgICAgZGVmIHRlc3RfZGVjb2RlX2NhbGxiYWNrKHNlbGYpOgotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKLSAgICAgICAgICAgIGNvZGVjcy5yZWdpc3Rlcl9lcnJvcigiVW5pY29kZUludGVybmFsVGVzdCIsIGNvZGVjcy5pZ25vcmVfZXJyb3JzKQotICAgICAgICAgICAgZGVjb2RlciA9IGNvZGVjcy5nZXRkZWNvZGVyKCJ1bmljb2RlX2ludGVybmFsIikKKyAgICAgICAgY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCJVbmljb2RlSW50ZXJuYWxUZXN0IiwgY29kZWNzLmlnbm9yZV9lcnJvcnMpCisgICAgICAgIGRlY29kZXIgPSBjb2RlY3MuZ2V0ZGVjb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBhYiA9ICJhYiIuZW5jb2RlKCJ1bmljb2RlX2ludGVybmFsIikuZGVjb2RlKCkKICAgICAgICAgICAgIGlnbm9yZWQgPSBkZWNvZGVyKGJ5dGVzKCIlc1x4MjJceDIyXHgyMlx4MjIlcyIgJSAoYWJbOjRdLCBhYls0Ol0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFzY2lpIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZUludGVybmFsVGVzdCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgiYWIiLCAxMiksIGlnbm9yZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJhYiIsIDEyKSwgaWdub3JlZCkKIAogICAgIGRlZiB0ZXN0X2VuY29kZV9sZW5ndGgoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgMzczOQotICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGVuY29kZXIoInVuaWNvZGVfaW50ZXJuYWwiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoImEiKVsxXSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmNvZGVyKCJceGU5XHUwMTQyIilbMV0sIDIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJ3VuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAjIElzc3VlIDM3MzkKKyAgICAgICAgICAgIGVuY29kZXIgPSBjb2RlY3MuZ2V0ZW5jb2RlcigidW5pY29kZV9pbnRlcm5hbCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIoImEiKVsxXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlcigiXHhlOVx1MDE0MiIpWzFdLCAyKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLmVzY2FwZV9lbmNvZGUoYnInXHgwMCcpWzFdLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MuZXNjYXBlX2VuY29kZShicidceDAwJylbMV0sIDQpCiAKICMgRnJvbSBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuL2RyYWZ0LWpvc2Vmc3Nvbi1pZG4tdGVzdC12ZWN0b3JzLmh0bWwKIG5hbWVwcmVwX3Rlc3RzID0gWwpAQCAtMTI4Niw3ICsxNDI3LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlZi5yZWFkKCksIGInXFxceGQ1XG5ceDAwXHgwMFx4YWUnKQogCiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLSAgICAgICAgZWYgPSBjb2RlY3MuRW5jb2RlZEZpbGUoZiwgJ3V0Zi04JywgJ2xhdGluMScpCisgICAgICAgIGVmID0gY29kZWNzLkVuY29kZWRGaWxlKGYsICd1dGYtOCcsICdsYXRpbi0xJykKICAgICAgICAgZWYud3JpdGUoYidceGMzXHhiYycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpLCBiJ1x4ZmMnKQogCkBAIC0xNDE4LDEwICsxNTU5LDEzIEBACiAgICAgICAgICAgICBlbGlmIGVuY29kaW5nID09ICJsYXRpbl8xIjoKICAgICAgICAgICAgICAgICBuYW1lID0gImxhdGluXzEiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kaW5nLnJlcGxhY2UoIl8iLCAiLSIpLCBuYW1lLnJlcGxhY2UoIl8iLCAiLSIpKQotICAgICAgICAgICAgKGIsIHNpemUpID0gY29kZWNzLmdldGVuY29kZXIoZW5jb2RpbmcpKHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIGxlbihzKSwgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKHNpemUsIGxlbihzKSwgZW5jb2RpbmcpKQotICAgICAgICAgICAgKGNoYXJzLCBzaXplKSA9IGNvZGVjcy5nZXRkZWNvZGVyKGVuY29kaW5nKShiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFycywgcywgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKGNoYXJzLCBzLCBlbmNvZGluZykpCisKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICMgdW5pY29kZS1pbnRlcm5hbCBoYXMgYmVlbiBkZXByZWNhdGVkCisgICAgICAgICAgICAgICAgKGIsIHNpemUpID0gY29kZWNzLmdldGVuY29kZXIoZW5jb2RpbmcpKHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBsZW4ocyksICIlciAhPSAlciAoZW5jb2Rpbmc9JXIpIiAlIChzaXplLCBsZW4ocyksIGVuY29kaW5nKSkKKyAgICAgICAgICAgICAgICAoY2hhcnMsIHNpemUpID0gY29kZWNzLmdldGRlY29kZXIoZW5jb2RpbmcpKGIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFycywgcywgIiVyICE9ICVyIChlbmNvZGluZz0lcikiICUgKGNoYXJzLCBzLCBlbmNvZGluZykpCiAKICAgICAgICAgICAgIGlmIGVuY29kaW5nIG5vdCBpbiBicm9rZW5fdW5pY29kZV93aXRoX3N0cmVhbXM6CiAgICAgICAgICAgICAgICAgIyBjaGVjayBzdHJlYW0gcmVhZGVyL3dyaXRlcgpAQCAtMTUyNSw3ICsxNjY5LDkgQEAKICAgICBkZWYgdGVzdF9iYWRfZW5jb2RlX2FyZ3Moc2VsZik6CiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBhbGxfdW5pY29kZV9lbmNvZGluZ3M6CiAgICAgICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGVuY29kZXIoZW5jb2RpbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVuY29kZXIpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZW5jb2RlcikKIAogICAgIGRlZiB0ZXN0X2VuY29kaW5nX21hcF90eXBlX2luaXRpYWxpemVkKHNlbGYpOgogICAgICAgICBmcm9tIGVuY29kaW5ncyBpbXBvcnQgY3AxMTQwCkBAIC0xNTQ4LDYgKzE2OTQsMTEgQEAKICAgICAgICAgICAgICgiYWJjIiwgMykKICAgICAgICAgKQogCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBjb2RlY3MuY2hhcm1hcF9kZWNvZGUoYiJceDAwXHgwMVx4MDIiLCAic3RyaWN0IiwgIlxVMDAxMEZGRkZiYyIpLAorICAgICAgICAgICAgKCJcVTAwMTBGRkZGYmMiLCAzKQorICAgICAgICApCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yLAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLCAiYWIiCiAgICAgICAgICkKQEAgLTE2NTYsOSArMTgwNywxNSBAQAogICAgICAgICAgICAgKCJcVTAwMTBGRkZGYmMiLCAzKQogICAgICAgICApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvZGVjcy5jaGFybWFwX2RlY29kZShiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBzeXMubWF4dW5pY29kZSwgMTogYiwgMjogY30pLAorICAgICAgICAgICAgKGNocihzeXMubWF4dW5pY29kZSkgKyAiYmMiLCAzKQorICAgICAgICApCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAogICAgICAgICAgICAgY29kZWNzLmNoYXJtYXBfZGVjb2RlLCBiIlx4MDBceDAxXHgwMiIsICJzdHJpY3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MDogMHgxMTAwMDAsIDE6IGIsIDI6IGN9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHswOiBzeXMubWF4dW5pY29kZSArIDEsIDE6IGIsIDI6IGN9CiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCkBAIC0xNzIyLDYgKzE4NzksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlx1MTIzNCIpLCAoIlx1MTIzNCIsIDYpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlKGJyIlx1MTIzNCIpLCAoIlx1MTIzNCIsIDYpKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwgY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZSwgYnIiXFUwMDExMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWNzLnVuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGNvZGVjcy5yYXdfdW5pY29kZV9lc2NhcGVfZGVjb2RlLCBiciJcVTAwMTEwMDAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlY3MucmF3X3VuaWNvZGVfZXNjYXBlX2RlY29kZShyIlxVMDAxMTAwMDAiLCAicmVwbGFjZSIpLCAoIlx1ZmZmZCIsIDEwKSkKKwogY2xhc3MgU3Vycm9nYXRlRXNjYXBlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF91dGY4KHNlbGYpOgpAQCAtMTc1Miw3ICsxOTE1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2xhdGluMShzZWxmKToKICAgICAgICAgIyBJc3N1ZTYzNzMKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXHVkY2U0XHVkY2ViXHVkY2VmXHVkY2Y2XHVkY2ZjIi5lbmNvZGUoImxhdGluMSIsICJzdXJyb2dhdGVlc2NhcGUiKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiXHVkY2U0XHVkY2ViXHVkY2VmXHVkY2Y2XHVkY2ZjIi5lbmNvZGUoImxhdGluLTEiLCAic3Vycm9nYXRlZXNjYXBlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYiJceGU0XHhlYlx4ZWZceGY2XHhmYyIpCiAKIApAQCAtMTg2MSw2ICsyMDI0LDE1NSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3V0LCBiIlx4ODAiKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ2NvZGUgcGFnZXMgYXJlIHNwZWNpZmljIHRvIFdpbmRvd3MnKQorY2xhc3MgQ29kZVBhZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIENQX1VURjggaXMgYWxyZWFkeSB0ZXN0ZWQgYnkgQ1A2NTAwMVRlc3QKKyAgICBDUF9VVEY4ID0gNjUwMDEKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY29kZV9wYWdlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgLTEsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIC0xLCBiJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhXaW5kb3dzRXJyb3IsIGNvZGVjcy5jb2RlX3BhZ2VfZW5jb2RlLCAxMjMsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoV2luZG93c0Vycm9yLCBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSwgMTIzLCBiJ2EnKQorCisgICAgZGVmIHRlc3RfY29kZV9wYWdlX25hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVW5pY29kZUVuY29kZUVycm9yLCAnY3A5MzInLAorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUsIDkzMiwgJ1x4ZmYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVEZWNvZGVFcnJvciwgJ2NwOTMyJywKKyAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCA5MzIsIGInXHg4MVx4MDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFVuaWNvZGVEZWNvZGVFcnJvciwgJ0NQX1VURjgnLAorICAgICAgICAgICAgY29kZWNzLmNvZGVfcGFnZV9kZWNvZGUsIHNlbGYuQ1BfVVRGOCwgYidceGZmJykKKworICAgIGRlZiBjaGVja19kZWNvZGUoc2VsZiwgY3AsIHRlc3RzKToKKyAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKGNwLCByYXcsIGVycm9ycykKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZGVjb2RlICVhIGZyb20gImNwJXMiIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vycm9ycz0lcjogJXMnICUgKHJhdywgY3AsIGVycm9ycywgZXJyKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWRbMF0sIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAnJWEuZGVjb2RlKCJjcCVzIiwgJXIpPSVhICE9ICVhJworICAgICAgICAgICAgICAgICAgICAlIChyYXcsIGNwLCBlcnJvcnMsIGRlY29kZWRbMF0sIGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICAjIGFzc2VydCAwIDw9IGRlY29kZWRbMV0gPD0gbGVuKHJhdykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChkZWNvZGVkWzFdLCAwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29kZWRbMV0sIGxlbihyYXcpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlLCBjcCwgcmF3LCBlcnJvcnMpCisKKyAgICBkZWYgY2hlY2tfZW5jb2RlKHNlbGYsIGNwLCB0ZXN0cyk6CisgICAgICAgIGZvciB0ZXh0LCBlcnJvcnMsIGV4cGVjdGVkIGluIHRlc3RzOgorICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBlbmNvZGVkID0gY29kZWNzLmNvZGVfcGFnZV9lbmNvZGUoY3AsIHRleHQsIGVycm9ycykKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZW5jb2RlICVhIHRvICJjcCVzIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcnM9JXI6ICVzJyAlICh0ZXh0LCBjcCwgZXJyb3JzLCBlcnIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZFswXSwgZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAgICclYS5lbmNvZGUoImNwJXMiLCAlcik9JWEgIT0gJWEnCisgICAgICAgICAgICAgICAgICAgICUgKHRleHQsIGNwLCBlcnJvcnMsIGVuY29kZWRbMF0sIGV4cGVjdGVkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZWRbMV0sIGxlbih0ZXh0KSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICBjb2RlY3MuY29kZV9wYWdlX2VuY29kZSwgY3AsIHRleHQsIGVycm9ycykKKworICAgIGRlZiB0ZXN0X2NwOTMyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2VuY29kZSg5MzIsICgKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x1ZmY0NFx1OWEzZScsICdzdHJpY3QnLCBiJ1x4ODJceDg0XHhlOVx4ODAnKSwKKyAgICAgICAgICAgICMgdGVzdCBlcnJvciBoYW5kbGVycworICAgICAgICAgICAgKCdceGZmJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKCdbXHhmZl0nLCAnaWdub3JlJywgYidbXScpLAorICAgICAgICAgICAgKCdbXHhmZl0nLCAncmVwbGFjZScsIGInW3ldJyksCisgICAgICAgICAgICAoJ1tcdTIwYWNdJywgJ3JlcGxhY2UnLCBiJ1s/XScpLAorICAgICAgICAgICAgKCdbXHhmZl0nLCAnYmFja3NsYXNocmVwbGFjZScsIGInW1xceGZmXScpLAorICAgICAgICAgICAgKCdbXHhmZl0nLCAneG1sY2hhcnJlZnJlcGxhY2UnLCBiJ1smIzI1NTtdJyksCisgICAgICAgICkpCisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKDkzMiwgKAorICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4ODJceDg0XHhlOVx4ODAnLCAnc3RyaWN0JywgJ1x1ZmY0NFx1OWEzZScpLAorICAgICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHhmZl0nLCAncmVwbGFjZScsICdbXHVmZmZkXScpLAorICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoYidceDgxXHgwMGFiYycsICdpZ25vcmUnLCAnXHgwMGFiYycpLAorICAgICAgICAgICAgKGInXHg4MVx4MDBhYmMnLCAncmVwbGFjZScsICdcdWZmZmRceDAwYWJjJyksCisgICAgICAgICkpCisKKyAgICBkZWYgdGVzdF9jcDEyNTIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKDEyNTIsICgKKyAgICAgICAgICAgICgnYWJjJywgJ3N0cmljdCcsIGInYWJjJyksCisgICAgICAgICAgICAoJ1x4ZTlcdTIwYWMnLCAnc3RyaWN0JywgIGInXHhlOVx4ODAnKSwKKyAgICAgICAgICAgICgnXHhmZicsICdzdHJpY3QnLCBiJ1x4ZmYnKSwKKyAgICAgICAgICAgICgnXHUwMTQxJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKCdcdTAxNDEnLCAnaWdub3JlJywgYicnKSwKKyAgICAgICAgICAgICgnXHUwMTQxJywgJ3JlcGxhY2UnLCBiJ0wnKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoMTI1MiwgKAorICAgICAgICAgICAgKGInYWJjJywgJ3N0cmljdCcsICdhYmMnKSwKKyAgICAgICAgICAgIChiJ1x4ZTlceDgwJywgJ3N0cmljdCcsICdceGU5XHUyMGFjJyksCisgICAgICAgICAgICAoYidceGZmJywgJ3N0cmljdCcsICdceGZmJyksCisgICAgICAgICkpCisKKyAgICBkZWYgdGVzdF9jcF91dGY3KHNlbGYpOgorICAgICAgICBjcCA9IDY1MDAwCisgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKGNwLCAoCisgICAgICAgICAgICAoJ2FiYycsICdzdHJpY3QnLCBiJ2FiYycpLAorICAgICAgICAgICAgKCdceGU5XHUyMGFjJywgJ3N0cmljdCcsICBiJytBT2tnckEtJyksCisgICAgICAgICAgICAoJ1xVMDAxMGZmZmYnLCAnc3RyaWN0JywgIGInKzIvL2Yvdy0nKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3N0cmljdCcsIGInKzNJQS0nKSwKKyAgICAgICAgICAgICgnXHVmZmZkJywgJ3N0cmljdCcsIGInKy8vMC0nKSwKKyAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19kZWNvZGUoY3AsICgKKyAgICAgICAgICAgIChiJ2FiYycsICdzdHJpY3QnLCAnYWJjJyksCisgICAgICAgICAgICAoYicrQU9rZ3JBLScsICdzdHJpY3QnLCAnXHhlOVx1MjBhYycpLAorICAgICAgICAgICAgKGInKzIvL2Yvdy0nLCAnc3RyaWN0JywgJ1xVMDAxMGZmZmYnKSwKKyAgICAgICAgICAgIChiJyszSUEtJywgJ3N0cmljdCcsICdcdWRjODAnKSwKKyAgICAgICAgICAgIChiJysvLzAtJywgJ3N0cmljdCcsICdcdWZmZmQnKSwKKyAgICAgICAgICAgICMgaW52YWxpZCBieXRlcworICAgICAgICAgICAgKGInWysvXScsICdzdHJpY3QnLCAnW10nKSwKKyAgICAgICAgICAgIChiJ1tceGZmXScsICdzdHJpY3QnLCAnW1x4ZmZdJyksCisgICAgICAgICkpCisKKyAgICBkZWYgdGVzdF9tdWx0aWJ5dGVfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZGVjb2RlKDkzMiwgKAorICAgICAgICAgICAgKGInXHg4NFx4ZTlceDgwJywgJ2lnbm9yZScsICdcdTlhM2UnKSwKKyAgICAgICAgICAgIChiJ1x4ODRceGU5XHg4MCcsICdyZXBsYWNlJywgJ1x1ZmZmZFx1OWEzZScpLAorICAgICAgICApKQorICAgICAgICBzZWxmLmNoZWNrX2RlY29kZShzZWxmLkNQX1VURjgsICgKKyAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ2lnbm9yZScsICdcVTAwMTBmZmZmJyksCisgICAgICAgICAgICAoYidceGZmXHhmNFx4OGZceGJmXHhiZicsICdyZXBsYWNlJywgJ1x1ZmZmZFxVMDAxMGZmZmYnKSwKKyAgICAgICAgKSkKKyAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2VuY29kZShzZWxmLkNQX1VURjgsICgKKyAgICAgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdpZ25vcmUnLCBiJ1tceGY0XHg4Zlx4YmZceGJmXScpLAorICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ3JlcGxhY2UnLCBiJ1tceGY0XHg4Zlx4YmZceGJmP10nKSwKKyAgICAgICAgICAgICkpCisKKyAgICBkZWYgdGVzdF9pbmNyZW1lbnRhbChzZWxmKToKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwgYidceDgyJywgJ3N0cmljdCcsIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnJywgMCkpCisKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhlOVx4ODBceGU5JywgJ3N0cmljdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJ1x1OWEzZScsIDIpKQorCisgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg5MzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZTlceDgwXHhlOVx4ODAnLCAnc3RyaWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZWQsICgnXHU5YTNlXHU5YTNlJywgNCkpCisKKyAgICAgICAgZGVjb2RlZCA9IGNvZGVjcy5jb2RlX3BhZ2VfZGVjb2RlKDkzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInYWJjJywgJ3N0cmljdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCAoJ2FiYycsIDMpKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVVRGMzJUZXN0LApAQCAtMTg3MSw2ICsyMTgzLDcgQEAKICAgICAgICAgVVRGMTZCRVRlc3QsCiAgICAgICAgIFVURjhUZXN0LAogICAgICAgICBVVEY4U2lnVGVzdCwKKyAgICAgICAgQ1A2NTAwMVRlc3QsCiAgICAgICAgIFVURjdUZXN0LAogICAgICAgICBVVEYxNkV4VGVzdCwKICAgICAgICAgUmVhZEJ1ZmZlclRlc3QsCkBAIC0xODg5LDYgKzIyMDIsNyBAQAogICAgICAgICBTdXJyb2dhdGVFc2NhcGVUZXN0LAogICAgICAgICBCb21UZXN0LAogICAgICAgICBUcmFuc2Zvcm1Db2RlY1Rlc3QsCisgICAgICAgIENvZGVQYWdlVGVzdCwKICAgICApCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGluZy5weQppbmRleCBmOWRiMGI0Li5kZmQ1NDMxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGluZy5weQpAQCAtMSw3ICsxLDYgQEAKLQogaW1wb3J0IHRlc3Quc3VwcG9ydCwgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHVubGluaywgdW5sb2FkCi1pbXBvcnQgb3MsIHN5cworaW1wb3J0IGltcG9ydGxpYiwgb3MsIHN5cwogCiBjbGFzcyBDb2RpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9iYWRfY29kaW5nKHNlbGYpOgpAQCAtNDAsNiArMzksNyBAQAogICAgICAgICAgICAgZi53cml0ZSgiJ0EgdmVyeSBsb25nIHN0cmluZyAlcydcbiIgJSAoIlgiICogMTAwMCkpCiAgICAgICAgICAgICBmLmNsb3NlKCkKIAorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQppbmRleCA4ZGM1NTU5Li44OGMzMTI5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKQEAgLTEsNiArMSw3IEBACiAiIiJVbml0IHRlc3RzIGZvciBjb2xsZWN0aW9ucy5weS4iIiIKIAogaW1wb3J0IHVuaXR0ZXN0LCBkb2N0ZXN0LCBvcGVyYXRvcgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgZm9yZ2V0LCB1bmxpbmsKIGltcG9ydCBpbnNwZWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIENvdW50ZXIsIE9yZGVyZWREaWN0LCBfY291bnRfZWxlbWVudHMKQEAgLTEwLDIxICsxMSwyMCBAQAogaW1wb3J0IGtleXdvcmQKIGltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgX0NoYWluTWFwCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2V0LCBNdXRhYmxlU2V0Ci1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldywgVXNlckRpY3QKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFNlcXVlbmNlLCBNdXRhYmxlU2VxdWVuY2UKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IEJ5dGVTdHJpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJEaWN0Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IKK2Zyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNldCwgTXV0YWJsZVNldAorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3Citmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQorZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEJ5dGVTdHJpbmcKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyMjIF9DaGFpbk1hcCAoaGVscGVyIGNsYXNzIGZvciBjb25maWdwYXJzZXIpCisjIyMgQ2hhaW5NYXAgKGhlbHBlciBjbGFzcyBmb3IgY29uZmlncGFyc2VyIGFuZCB0aGUgc3RyaW5nIG1vZHVsZSkKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUNoYWluTWFwID0gX0NoYWluTWFwICAjIHJlbmFtZSB0byBrZWVwIHRlc3QgY29kZSBpbiBzeW5jIHdpdGggMy4zIHZlcnNpb24KLQogY2xhc3MgVGVzdENoYWluTWFwKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2Jhc2ljcyhzZWxmKToKQEAgLTEyOCw2ICsxMjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9fbW9kdWxlX18sIF9fbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvaW50Ll9fZ2V0aXRlbV9fLCB0dXBsZS5fX2dldGl0ZW1fXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb2ludC5fZmllbGRzLCAoJ3gnLCAneScpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdjbGFzcyBQb2ludCh0dXBsZSknLCBQb2ludC5fc291cmNlKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5hbWVkdHVwbGUsICdhYmMlJywgJ2VmZyBnaGknKSAgICAgICAjIHR5cGUgaGFzIG5vbi1hbHBoYSBjaGFyCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5hbWVkdHVwbGUsICdjbGFzcycsICdlZmcgZ2hpJykgICAgICAjIHR5cGUgaGFzIGtleXdvcmQKQEAgLTMyNyw2ICszMjgsMTcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKEIoMSkpLCAnQih4PTEpJykKIAorICAgIGRlZiB0ZXN0X3NvdXJjZShzZWxmKToKKyAgICAgICAgIyB2ZXJpZnkgdGhhdCBfc291cmNlIGNhbiBiZSBydW4gdGhyb3VnaCBleGVjKCkKKyAgICAgICAgdG1wID0gbmFtZWR0dXBsZSgnTlRDb2xvcicsICdyZWQgZ3JlZW4gYmx1ZScpCisgICAgICAgIGdsb2JhbHMoKS5wb3AoJ05UQ29sb3InLCBOb25lKSAgICAgICAgICAjIHJlbW92ZSBhcnRpZmFjdHMgZnJvbSBvdGhlciB0ZXN0cworICAgICAgICBleGVjKHRtcC5fc291cmNlLCBnbG9iYWxzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05UQ29sb3InLCBnbG9iYWxzKCkpCisgICAgICAgIGMgPSBOVENvbG9yKDEwLCAyMCwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGMucmVkLCBjLmdyZWVuLCBjLmJsdWUpLCAoMTAsIDIwLCAzMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlRDb2xvci5fZmllbGRzLCAoJ3JlZCcsICdncmVlbicsICdibHVlJykpCisgICAgICAgIGdsb2JhbHMoKS5wb3AoJ05UQ29sb3InLCBOb25lKSAgICAgICAgICAjIGNsZWFuLXVwIGFmdGVyIHRoaXMgdGVzdAorCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyMgQWJzdHJhY3QgQmFzZSBDbGFzc2VzCkBAIC03MjksNiArNzQxLDQ0IEBACiAgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhNdXRhYmxlU2VxdWVuY2UsICdfX2NvbnRhaW5zX18nLCAnX19pdGVyX18nLAogICAgICAgICAgICAgJ19fbGVuX18nLCAnX19nZXRpdGVtX18nLCAnX19zZXRpdGVtX18nLCAnX19kZWxpdGVtX18nLCAnaW5zZXJ0JykKIAorICAgIGRlZiB0ZXN0X011dGFibGVTZXF1ZW5jZV9taXhpbnMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgbWl4aW5zIG9mIE11dGFibGVTZXF1ZW5jZSBieSBjcmVhdGluZyBhIG1pbWluYWwgY29uY3JldGUKKyAgICAgICAgIyBjbGFzcyBpbmhlcml0ZWQgZnJvbSBpdC4KKyAgICAgICAgY2xhc3MgTXV0YWJsZVNlcXVlbmNlU3ViY2xhc3MoTXV0YWJsZVNlcXVlbmNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmxzdCA9IFtdCisKKyAgICAgICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0W2luZGV4XSA9IHZhbHVlCisKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubHN0W2luZGV4XQorCisgICAgICAgICAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuKHNlbGYubHN0KQorCisgICAgICAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgaW5kZXgpOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmxzdFtpbmRleF0KKworICAgICAgICAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYubHN0Lmluc2VydChpbmRleCwgdmFsdWUpCisKKyAgICAgICAgbXNzID0gTXV0YWJsZVNlcXVlbmNlU3ViY2xhc3MoKQorICAgICAgICBtc3MuYXBwZW5kKDApCisgICAgICAgIG1zcy5leHRlbmQoKDEsIDIsIDMsIDQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zc1szXSwgMykKKyAgICAgICAgbXNzLnJldmVyc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zc1szXSwgMSkKKyAgICAgICAgbXNzLnBvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zcyksIDQpCisgICAgICAgIG1zcy5yZW1vdmUoMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNzKSwgMykKKyAgICAgICAgbXNzICs9ICgxMCwgMjAsIDMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCA2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zc1stMV0sIDMwKQorICAgICAgICBtc3MuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc3MpLCAwKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMjIENvdW50ZXIKQEAgLTg4Miw2ICs5MzIsMjcgQEAKICAgICAgICAgICAgICAgICBzZXRfcmVzdWx0ID0gc2V0b3Aoc2V0KHAuZWxlbWVudHMoKSksIHNldChxLmVsZW1lbnRzKCkpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY291bnRlcl9yZXN1bHQsIGRpY3QuZnJvbWtleXMoc2V0X3Jlc3VsdCwgMSkpCiAKKyAgICBkZWYgdGVzdF9pbnBsYWNlX29wZXJhdGlvbnMoc2VsZik6CisgICAgICAgIGVsZW1lbnRzID0gJ2FiY2QnCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgIyB0ZXN0IHJhbmRvbSBwYWlycyBvZiBtdWx0aXNldHMKKyAgICAgICAgICAgIHAgPSBDb3VudGVyKGRpY3QoKGVsZW0sIHJhbmRyYW5nZSgtMiw0KSkgZm9yIGVsZW0gaW4gZWxlbWVudHMpKQorICAgICAgICAgICAgcC51cGRhdGUoZT0xLCBmPS0xLCBnPTApCisgICAgICAgICAgICBxID0gQ291bnRlcihkaWN0KChlbGVtLCByYW5kcmFuZ2UoLTIsNCkpIGZvciBlbGVtIGluIGVsZW1lbnRzKSkKKyAgICAgICAgICAgIHEudXBkYXRlKGg9MSwgaT0tMSwgaj0wKQorICAgICAgICAgICAgZm9yIGlucGxhY2Vfb3AsIHJlZ3VsYXJfb3AgaW4gWworICAgICAgICAgICAgICAgIChDb3VudGVyLl9faWFkZF9fLCBDb3VudGVyLl9fYWRkX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faXN1Yl9fLCBDb3VudGVyLl9fc3ViX18pLAorICAgICAgICAgICAgICAgIChDb3VudGVyLl9faW9yX18sIENvdW50ZXIuX19vcl9fKSwKKyAgICAgICAgICAgICAgICAoQ291bnRlci5fX2lhbmRfXywgQ291bnRlci5fX2FuZF9fKSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICAgICAgYyA9IHAuY29weSgpCisgICAgICAgICAgICAgICAgY19pZCA9IGlkKGMpCisgICAgICAgICAgICAgICAgcmVndWxhcl9yZXN1bHQgPSByZWd1bGFyX29wKGMsIHEpCisgICAgICAgICAgICAgICAgaW5wbGFjZV9yZXN1bHQgPSBpbnBsYWNlX29wKGMsIHEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnBsYWNlX3Jlc3VsdCwgcmVndWxhcl9yZXN1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpZChpbnBsYWNlX3Jlc3VsdCksIGNfaWQpCisKICAgICBkZWYgdGVzdF9zdWJ0cmFjdChzZWxmKToKICAgICAgICAgYyA9IENvdW50ZXIoYT0tNSwgYj0wLCBjPTUsIGQ9MTAsIGU9MTUsZz00MCkKICAgICAgICAgYy5zdWJ0cmFjdChhPTEsIGI9MiwgYz0tMywgZD0xMCwgZT0yMCwgZj0zMCwgaD0tNTApCkBAIC04OTMsNiArOTY0LDExIEBACiAgICAgICAgIGMuc3VidHJhY3QoJ2FhYWFiYmNjZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgQ291bnRlcihhPS0xLCBiPTAsIGM9LTEsIGQ9MSwgZT0tMSkpCiAKKyAgICBkZWYgdGVzdF91bmFyeShzZWxmKToKKyAgICAgICAgYyA9IENvdW50ZXIoYT0tNSwgYj0wLCBjPTUsIGQ9MTAsIGU9MTUsZz00MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWN0KCtjKSwgZGljdChjPTUsIGQ9MTAsIGU9MTUsIGc9NDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpY3QoLWMpLCBkaWN0KGE9NSkpCisKICAgICBkZWYgdGVzdF9yZXByX25vbnNvcnRhYmxlKHNlbGYpOgogICAgICAgICBjID0gQ291bnRlcihhPTIsIGI9Tm9uZSkKICAgICAgICAgciA9IHJlcHIoYykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQppbmRleCA1OGVmMjk3Li43MjM0MmY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CkBAIC0xLDEwICsxLDE3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBfYXN0CitpbXBvcnQgdHlwZXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBjbGFzcyBUZXN0U3BlY2lmaWNzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiBjb21waWxlX3NpbmdsZShzZWxmLCBzb3VyY2UpOgorICAgICAgICBjb21waWxlKHNvdXJjZSwgIjxzaW5nbGU+IiwgInNpbmdsZSIpCisKKyAgICBkZWYgYXNzZXJ0SW52YWxpZFNpbmdsZShzZWxmLCBzb3VyY2UpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgc2VsZi5jb21waWxlX3NpbmdsZSwgc291cmNlKQorCiAgICAgZGVmIHRlc3Rfbm9fZW5kaW5nX25ld2xpbmUoc2VsZik6CiAgICAgICAgIGNvbXBpbGUoImhpIiwgIjx0ZXN0PiIsICJleGVjIikKICAgICAgICAgY29tcGlsZSgiaGlcciIsICI8dGVzdD4iLCAiZXhlYyIpCkBAIC00MzMsNiArNDQwLDM5IEBACiAgICAgICAgIGFzdC5ib2R5ID0gW19hc3QuQm9vbE9wKCldCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgYXN0LCAnPGFzdD4nLCAnZXhlYycpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zYW1lX2ZpbGVuYW1lX3VzZWQoc2VsZik6CisgICAgICAgIHMgPSAiIiJkZWYgZigpOiBwYXNzXG5kZWYgZygpOiBwYXNzIiIiCisgICAgICAgIGMgPSBjb21waWxlKHMsICJteWZpbGUiLCAiZXhlYyIpCisgICAgICAgIGZvciBvYmogaW4gYy5jb19jb25zdHM6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZXMuQ29kZVR5cGUpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob2JqLmNvX2ZpbGVuYW1lLCBjLmNvX2ZpbGVuYW1lKQorCisgICAgZGVmIHRlc3Rfc2luZ2xlX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDIiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJcbjEgKyAyIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcbiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIjEgKyAyXG5cbiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIjEgKyAyXHRcdFxuIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMSArIDJcdFx0XG4gICAgICAgICIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoIjEgKyAyICMgb25lIHBsdXMgdHdvIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiMTsgMiIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImltcG9ydCBzeXM7IHN5cyIpCisgICAgICAgIHNlbGYuY29tcGlsZV9zaW5nbGUoImRlZiBmKCk6XG4gICBwYXNzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgid2hpbGUgRmFsc2U6XG4gICBwYXNzIikKKyAgICAgICAgc2VsZi5jb21waWxlX3NpbmdsZSgiaWYgeDpcbiAgIGYoeCkiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJpZiB4OlxuICAgZih4KVxuZWxzZTpcbiAgIGcoeCkiKQorICAgICAgICBzZWxmLmNvbXBpbGVfc2luZ2xlKCJjbGFzcyBUOlxuICAgcGFzcyIpCisKKyAgICBkZWYgdGVzdF9iYWRfc2luZ2xlX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCcxXG4yJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdkZWYgZigpOiBwYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbnZhbGlkU2luZ2xlKCdhID0gMTNcbmIgPSAxODcnKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2RlbCB4XG5kZWwgeScpCisgICAgICAgIHNlbGYuYXNzZXJ0SW52YWxpZFNpbmdsZSgnZigpXG5nKCknKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2YoKVxuIyBibGFoXG5ibGFoKCknKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ2YoKVxueHkgIyBibGFoXG5ibGFoKCknKQorICAgICAgICBzZWxmLmFzc2VydEludmFsaWRTaW5nbGUoJ3ggPSA1ICMgY29tbWVudFxueCA9IDZcbicpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U3BlY2lmaWNzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCAyYWZhOTM4Li42YWU0NTBkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtMTksNyArMTksNyBAQAogZnJvbSBjb25jdXJyZW50IGltcG9ydCBmdXR1cmVzCiBmcm9tIGNvbmN1cnJlbnQuZnV0dXJlcy5fYmFzZSBpbXBvcnQgKAogICAgIFBFTkRJTkcsIFJVTk5JTkcsIENBTkNFTExFRCwgQ0FOQ0VMTEVEX0FORF9OT1RJRklFRCwgRklOSVNIRUQsIEZ1dHVyZSkKLWltcG9ydCBjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcworZnJvbSBjb25jdXJyZW50LmZ1dHVyZXMucHJvY2VzcyBpbXBvcnQgQnJva2VuUHJvY2Vzc1Bvb2wKIAogCiBkZWYgY3JlYXRlX2Z1dHVyZShzdGF0ZT1QRU5ESU5HLCBleGNlcHRpb249Tm9uZSwgcmVzdWx0PU5vbmUpOgpAQCAtMzQsNyArMzQsNyBAQAogUlVOTklOR19GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPVJVTk5JTkcpCiBDQU5DRUxMRURfRlVUVVJFID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1DQU5DRUxMRUQpCiBDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9Q0FOQ0VMTEVEX0FORF9OT1RJRklFRCkKLUVYQ0VQVElPTl9GVVRVUkUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249SU9FcnJvcigpKQorRVhDRVBUSU9OX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIGV4Y2VwdGlvbj1PU0Vycm9yKCkpCiBTVUNDRVNTRlVMX0ZVVFVSRSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIHJlc3VsdD00MikKIAogCkBAIC0xNjAsNyArMTYwLDcgQEAKICAgICAgICAgcHJvY2Vzc2VzID0gc2VsZi5leGVjdXRvci5fcHJvY2Vzc2VzCiAgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24oKQogCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9zaHV0ZG93bihzZWxmKToKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGUubWFwKGFicywgcmFuZ2UoLTUsIDUpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFs1LCA0LCAzLCAyLCAxLCAwLCAxLCAyLCAzLCA0XSkKIAotICAgICAgICBmb3IgcCBpbiBwcm9jZXNzZXM6CisgICAgICAgIGZvciBwIGluIHByb2Nlc3Nlcy52YWx1ZXMoKToKICAgICAgICAgICAgIHAuam9pbigpCiAKICAgICBkZWYgdGVzdF9kZWxfc2h1dGRvd24oc2VsZik6CkBAIC0xODAsNyArMTgwLDcgQEAKICAgICAgICAgZGVsIGV4ZWN1dG9yCiAKICAgICAgICAgcXVldWVfbWFuYWdlbWVudF90aHJlYWQuam9pbigpCi0gICAgICAgIGZvciBwIGluIHByb2Nlc3NlczoKKyAgICAgICAgZm9yIHAgaW4gcHJvY2Vzc2VzLnZhbHVlcygpOgogICAgICAgICAgICAgcC5qb2luKCkKIAogCkBAIC0yNjgsMTQgKzI2OCwxNCBAQAogCiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKICAgICAgICAgZnV0dXJlMSA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KG11bCwgNiwgNykKLSAgICAgICAgZnV0dXJlMiA9IHNlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDMpCisgICAgICAgIGZ1dHVyZTIgPSBzZWxmLmV4ZWN1dG9yLnN1Ym1pdCh0aW1lLnNsZWVwLCA2KQogCiAgICAgICAgIGZpbmlzaGVkLCBwZW5kaW5nID0gZnV0dXJlcy53YWl0KAogICAgICAgICAgICAgICAgIFtDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgRVhDRVBUSU9OX0ZVVFVSRSwKICAgICAgICAgICAgICAgICAgU1VDQ0VTU0ZVTF9GVVRVUkUsCiAgICAgICAgICAgICAgICAgIGZ1dHVyZTEsIGZ1dHVyZTJdLAotICAgICAgICAgICAgICAgIHRpbWVvdXQ9MS41LAorICAgICAgICAgICAgICAgIHRpbWVvdXQ9NSwKICAgICAgICAgICAgICAgICByZXR1cm5fd2hlbj1mdXR1cmVzLkFMTF9DT01QTEVURUQpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoW0NBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLApAQCAtMzc5LDggKzM3OSw4IEBACiAgICAgICAgIHJlc3VsdHMgPSBbXQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmb3IgaSBpbiBzZWxmLmV4ZWN1dG9yLm1hcCh0aW1lLnNsZWVwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xLjUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDAsIDZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD01KToKICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChpKQogICAgICAgICBleGNlcHQgZnV0dXJlcy5UaW1lb3V0RXJyb3I6CiAgICAgICAgICAgICBwYXNzCkBAIC0zODksMTMgKzM4OSwzOCBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW05vbmUsIE5vbmVdLCByZXN1bHRzKQogCisgICAgZGVmIHRlc3Rfc2h1dGRvd25fcmFjZV9pc3N1ZTEyNDU2KHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMjQ1NjogcmFjZSBjb25kaXRpb24gYXQgc2h1dGRvd24gd2hlcmUgdHJ5aW5nIHRvIHBvc3QgYQorICAgICAgICAjIHNlbnRpbmVsIGluIHRoZSBjYWxsIHF1ZXVlIGJsb2NrcyAodGhlIHF1ZXVlIGlzIGZ1bGwgd2hpbGUgcHJvY2Vzc2VzCisgICAgICAgICMgaGF2ZSBleGl0ZWQpLgorICAgICAgICBzZWxmLmV4ZWN1dG9yLm1hcChzdHIsIFsyXSAqIChzZWxmLndvcmtlcl9jb3VudCArIDEpKQorICAgICAgICBzZWxmLmV4ZWN1dG9yLnNodXRkb3duKCkKKwogCiBjbGFzcyBUaHJlYWRQb29sRXhlY3V0b3JUZXN0KFRocmVhZFBvb2xNaXhpbiwgRXhlY3V0b3JUZXN0KToKLSAgICBwYXNzCisgICAgZGVmIHRlc3RfbWFwX3N1Ym1pdHNfd2l0aG91dF9pdGVyYXRpb24oc2VsZik6CisgICAgICAgICIiIlRlc3RzIHZlcmlmeWluZyBpc3N1ZSAxMTc3Ny4iIiIKKyAgICAgICAgZmluaXNoZWQgPSBbXQorICAgICAgICBkZWYgcmVjb3JkX2ZpbmlzaGVkKG4pOgorICAgICAgICAgICAgZmluaXNoZWQuYXBwZW5kKG4pCisKKyAgICAgICAgc2VsZi5leGVjdXRvci5tYXAocmVjb3JkX2ZpbmlzaGVkLCByYW5nZSgxMCkpCisgICAgICAgIHNlbGYuZXhlY3V0b3Iuc2h1dGRvd24od2FpdD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmluaXNoZWQsIHJhbmdlKDEwKSkKIAogCiBjbGFzcyBQcm9jZXNzUG9vbEV4ZWN1dG9yVGVzdChQcm9jZXNzUG9vbE1peGluLCBFeGVjdXRvclRlc3QpOgotICAgIHBhc3MKKyAgICBkZWYgdGVzdF9raWxsZWRfY2hpbGQoc2VsZik6CisgICAgICAgICMgV2hlbiBhIGNoaWxkIHByb2Nlc3MgaXMgYWJydXB0bHkgdGVybWluYXRlZCwgdGhlIHdob2xlIHBvb2wgZ2V0cworICAgICAgICAjICJicm9rZW4iLgorICAgICAgICBmdXR1cmVzID0gW3NlbGYuZXhlY3V0b3Iuc3VibWl0KHRpbWUuc2xlZXAsIDMpXQorICAgICAgICAjIEdldCBvbmUgb2YgdGhlIHByb2Nlc3NlcywgYW5kIHRlcm1pbmF0ZSAoa2lsbCkgaXQKKyAgICAgICAgcCA9IG5leHQoaXRlcihzZWxmLmV4ZWN1dG9yLl9wcm9jZXNzZXMudmFsdWVzKCkpKQorICAgICAgICBwLnRlcm1pbmF0ZSgpCisgICAgICAgIGZvciBmdXQgaW4gZnV0dXJlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEJyb2tlblByb2Nlc3NQb29sLCBmdXQucmVzdWx0KQorICAgICAgICAjIFN1Ym1pdHRpbmcgb3RoZXIgam9icyBmYWlscyBhcyB3ZWxsLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhCcm9rZW5Qcm9jZXNzUG9vbCwgc2VsZi5leGVjdXRvci5zdWJtaXQsIHBvdywgMiwgOCkKIAogCiBjbGFzcyBGdXR1cmVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00OTgsNyArNTIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1jYW5jZWxsZWQ+JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCgKICAgICAgICAgICAgICAgICByZXByKEVYQ0VQVElPTl9GVVRVUkUpLAotICAgICAgICAgICAgICAgICc8RnV0dXJlIGF0IDB4WzAtOWEtZl0rIHN0YXRlPWZpbmlzaGVkIHJhaXNlZCBJT0Vycm9yPicpCisgICAgICAgICAgICAgICAgJzxGdXR1cmUgYXQgMHhbMC05YS1mXSsgc3RhdGU9ZmluaXNoZWQgcmFpc2VkIE9TRXJyb3I+JykKICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCgKICAgICAgICAgICAgICAgICByZXByKFNVQ0NFU1NGVUxfRlVUVVJFKSwKICAgICAgICAgICAgICAgICAnPEZ1dHVyZSBhdCAweFswLTlhLWZdKyBzdGF0ZT1maW5pc2hlZCByZXR1cm5lZCBpbnQ+JykKQEAgLTUwOSw3ICs1MzQsNyBAQAogICAgICAgICBmMiA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UlVOTklORykKICAgICAgICAgZjMgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRCkKICAgICAgICAgZjQgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUNBTkNFTExFRF9BTkRfTk9USUZJRUQpCi0gICAgICAgIGY1ID0gY3JlYXRlX2Z1dHVyZShzdGF0ZT1GSU5JU0hFRCwgZXhjZXB0aW9uPUlPRXJyb3IoKSkKKyAgICAgICAgZjUgPSBjcmVhdGVfZnV0dXJlKHN0YXRlPUZJTklTSEVELCBleGNlcHRpb249T1NFcnJvcigpKQogICAgICAgICBmNiA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9RklOSVNIRUQsIHJlc3VsdD01KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmMS5jYW5jZWwoKSkKQEAgLTU2Myw3ICs1ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBDQU5DRUxMRURfRlVUVVJFLnJlc3VsdCwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmdXR1cmVzLkNhbmNlbGxlZEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBDQU5DRUxMRURfQU5EX05PVElGSUVEX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgRVhDRVBUSU9OX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgRVhDRVBUSU9OX0ZVVFVSRS5yZXN1bHQsIHRpbWVvdXQ9MCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTVUNDRVNTRlVMX0ZVVFVSRS5yZXN1bHQodGltZW91dD0wKSwgNDIpCiAKICAgICBkZWYgdGVzdF9yZXN1bHRfd2l0aF9zdWNjZXNzKHNlbGYpOgpAQCAtNjAyLDcgKzYyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZ1dHVyZXMuQ2FuY2VsbGVkRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTkNFTExFRF9BTkRfTk9USUZJRURfRlVUVVJFLmV4Y2VwdGlvbiwgdGltZW91dD0wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShFWENFUFRJT05fRlVUVVJFLmV4Y2VwdGlvbih0aW1lb3V0PTApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJT0Vycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1NFcnJvcikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU1VDQ0VTU0ZVTF9GVVRVUkUuZXhjZXB0aW9uKHRpbWVvdXQ9MCksIE5vbmUpCiAKICAgICBkZWYgdGVzdF9leGNlcHRpb25fd2l0aF9zdWNjZXNzKHNlbGYpOgpAQCAtNjExLDE0ICs2MzYsMTQgQEAKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKICAgICAgICAgICAgIHdpdGggZjEuX2NvbmRpdGlvbjoKICAgICAgICAgICAgICAgICBmMS5fc3RhdGUgPSBGSU5JU0hFRAotICAgICAgICAgICAgICAgIGYxLl9leGNlcHRpb24gPSBJT0Vycm9yKCkKKyAgICAgICAgICAgICAgICBmMS5fZXhjZXB0aW9uID0gT1NFcnJvcigpCiAgICAgICAgICAgICAgICAgZjEuX2NvbmRpdGlvbi5ub3RpZnlfYWxsKCkKIAogICAgICAgICBmMSA9IGNyZWF0ZV9mdXR1cmUoc3RhdGU9UEVORElORykKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PW5vdGlmaWNhdGlvbikKICAgICAgICAgdC5zdGFydCgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZjEuZXhjZXB0aW9uKHRpbWVvdXQ9NSksIElPRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShmMS5leGNlcHRpb24odGltZW91dD01KSwgT1NFcnJvcikpCiAKIEB0ZXN0LnN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6CkBAIC02MzEsNyArNjU2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRQb29sQXNDb21wbGV0ZWRUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmVUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9jZXNzUG9vbFNodXRkb3duVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRQb29sU2h1dGRvd25UZXN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFBvb2xTaHV0ZG93blRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHRlc3Quc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jZmdwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmZpZ3BhcnNlci5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X2NmZ3BhcnNlci5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggYTZlOTA1MC4uOGQ4MjE4MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZmdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTE2MTgsNiArMTYxOCw0MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZTEpLCByZXByKGUyKSkKIAogCitjbGFzcyBJbmxpbmVDb21tZW50U3RyaXBwaW5nVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciBpc3N1ZSAjMTQ1OTA6IENvbmZpZ1BhcnNlciBkb2Vzbid0IHN0cmlwIGlubGluZSBjb21tZW50IHdoZW4KKyAgICBkZWxpbWl0ZXIgb2NjdXJzIGVhcmxpZXIgd2l0aG91dCBwcmVjZWRpbmcgc3BhY2UuLiIiIgorCisgICAgZGVmIHRlc3Rfc3RyaXBwaW5nKHNlbGYpOgorICAgICAgICBjZmcgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKGlubGluZV9jb21tZW50X3ByZWZpeGVzPSgnOycsICcjJywKKyAgICAgICAgICAgICAgICAnLy8nKSkKKyAgICAgICAgY2ZnLnJlYWRfc3RyaW5nKCIiIgorICAgICAgICBbc2VjdGlvbl0KKyAgICAgICAgazEgPSB2MTtzdGlsbCB2MQorICAgICAgICBrMiA9IHYyIDthIGNvbW1lbnQKKyAgICAgICAgazMgPSB2MyA7IGFsc28gYSBjb21tZW50CisgICAgICAgIGs0ID0gdjQ7c3RpbGwgdjQgO2EgY29tbWVudAorICAgICAgICBrNSA9IHY1O3N0aWxsIHY1IDsgYWxzbyBhIGNvbW1lbnQKKyAgICAgICAgazYgPSB2NjtzdGlsbCB2NjsgYW5kIHN0aWxsIHY2IDthIGNvbW1lbnQKKyAgICAgICAgazcgPSB2NztzdGlsbCB2NzsgYW5kIHN0aWxsIHY3IDsgYWxzbyBhIGNvbW1lbnQKKworICAgICAgICBbbXVsdGlwcmVmaXhdCisgICAgICAgIGsxID0gdjE7c3RpbGwgdjEgI2EgY29tbWVudCA7IHllYWgsIHByZXR0eSBtdWNoCisgICAgICAgIGsyID0gdjIgLy8gdGhpcyBhbHJlYWR5IGlzIGEgY29tbWVudCA7IGNvbnRpbnVlZAorICAgICAgICBrMyA9IHYzOyMvL3N0aWxsIHYzIyBhbmQgc3RpbGwgdjMgOyBhIGNvbW1lbnQKKyAgICAgICAgIiIiKQorICAgICAgICBzID0gY2ZnWydzZWN0aW9uJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMSddLCAndjE7c3RpbGwgdjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2syJ10sICd2MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazMnXSwgJ3YzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrNCddLCAndjQ7c3RpbGwgdjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s1J10sICd2NTtzdGlsbCB2NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazYnXSwgJ3Y2O3N0aWxsIHY2OyBhbmQgc3RpbGwgdjYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2s3J10sICd2NztzdGlsbCB2NzsgYW5kIHN0aWxsIHY3JykKKyAgICAgICAgcyA9IGNmZ1snbXVsdGlwcmVmaXgnXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNbJ2sxJ10sICd2MTtzdGlsbCB2MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1snazInXSwgJ3YyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzWydrMyddLCAndjM7Iy8vc3RpbGwgdjMjIGFuZCBzdGlsbCB2MycpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBDb25maWdQYXJzZXJUZXN0Q2FzZSwKQEAgLTE2NDAsNCArMTY3Niw1IEBACiAgICAgICAgIFJlYWRGaWxlVGVzdENhc2UsCiAgICAgICAgIENvdmVyYWdlT25lSHVuZHJlZFRlc3RDYXNlLAogICAgICAgICBFeGNlcHRpb25QaWNrbGluZ1Rlc3RDYXNlLAorICAgICAgICBJbmxpbmVDb21tZW50U3RyaXBwaW5nVGVzdENhc2UsCiAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQppbmRleCA2ZTM4MzA1Li5lNTJlZDkxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CkBAIC0zNzAsNiArMzcwLDIzMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlLCBbMSwgJ3NvbWV0aGluZyBlbHNlJywgOTk5XSkKIAogCitjbGFzcyBUZXN0RXhpdFN0YWNrKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X25vX3Jlc291cmNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKToKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgoKSwge30pLAorICAgICAgICAgICAgKCgxLCksIHt9KSwKKyAgICAgICAgICAgICgoMSwyKSwge30pLAorICAgICAgICAgICAgKCgpLCBkaWN0KGV4YW1wbGU9MSkpLAorICAgICAgICAgICAgKCgxLCksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgICAgICAoKDEsMiksIGRpY3QoZXhhbXBsZT0xKSksCisgICAgICAgIF0KKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgZGVmIF9leGl0KCphcmdzLCAqKmt3ZHMpOgorICAgICAgICAgICAgIiIiVGVzdCBtZXRhZGF0YSBwcm9wYWdhdGlvbiIiIgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoYXJncywga3dkcykpCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBmb3IgYXJncywga3dkcyBpbiByZXZlcnNlZChleHBlY3RlZCk6CisgICAgICAgICAgICAgICAgaWYgYXJncyBhbmQga3dkczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqYXJncywgKiprd2RzKQorICAgICAgICAgICAgICAgIGVsaWYgYXJnczoKKyAgICAgICAgICAgICAgICAgICAgZiA9IHN0YWNrLmNhbGxiYWNrKF9leGl0LCAqYXJncykKKyAgICAgICAgICAgICAgICBlbGlmIGt3ZHM6CisgICAgICAgICAgICAgICAgICAgIGYgPSBzdGFjay5jYWxsYmFjayhfZXhpdCwgKiprd2RzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGYgPSBzdGFjay5jYWxsYmFjayhfZXhpdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGYsIF9leGl0KQorICAgICAgICAgICAgZm9yIHdyYXBwZXIgaW4gc3RhY2suX2V4aXRfY2FsbGJhY2tzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX3dyYXBwZWRfXywgX2V4aXQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCBfZXhpdC5fX25hbWVfXykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmFwcGVyLl9fZG9jX18sIF9leGl0Ll9fZG9jX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3B1c2goc2VsZik6CisgICAgICAgIGV4Y19yYWlzZWQgPSBaZXJvRGl2aXNpb25FcnJvcgorICAgICAgICBkZWYgX2V4cGVjdF9leGMoZXhjX3R5cGUsIGV4YywgZXhjX3RiKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXhjX3R5cGUsIGV4Y19yYWlzZWQpCisgICAgICAgIGRlZiBfc3VwcHJlc3NfZXhjKCpleGNfZGV0YWlscyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgX2V4cGVjdF9vayhleGNfdHlwZSwgZXhjLCBleGNfdGIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXhjX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGNfdGIpCisgICAgICAgIGNsYXNzIEV4aXRDTShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoZWNrX2V4Yyk6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19leGMgPSBjaGVja19leGMKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJTaG91bGQgbm90IGJlIGNhbGxlZCEiKQorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja19leGMoKmV4Y19kZXRhaWxzKQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X29rKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfZXhwZWN0X29rKQorICAgICAgICAgICAgY20gPSBFeGl0Q00oX2V4cGVjdF9vaykKKyAgICAgICAgICAgIHN0YWNrLnB1c2goY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgc3RhY2sucHVzaChfc3VwcHJlc3NfZXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLCBfc3VwcHJlc3NfZXhjKQorICAgICAgICAgICAgY20gPSBFeGl0Q00oX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzdGFjay5wdXNoKGNtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzdGFjay5fZXhpdF9jYWxsYmFja3NbLTFdLl9fc2VsZl9fLCBjbSkKKyAgICAgICAgICAgIHN0YWNrLnB1c2goX2V4cGVjdF9leGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIF9leHBlY3RfZXhjKQorICAgICAgICAgICAgc3RhY2sucHVzaChfZXhwZWN0X2V4YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhY2suX2V4aXRfY2FsbGJhY2tzWy0xXSwgX2V4cGVjdF9leGMpCisgICAgICAgICAgICAxLzAKKworICAgIGRlZiB0ZXN0X2VudGVyX2NvbnRleHQoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3RDTShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEpCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDMpCisKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgY20gPSBUZXN0Q00oKQorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgQHN0YWNrLmNhbGxiYWNrICAjIFJlZ2lzdGVyZWQgZmlyc3QgPT4gY2xlYW5lZCB1cCBsYXN0CisgICAgICAgICAgICBkZWYgX2V4aXQoKToKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShfZXhpdCkKKyAgICAgICAgICAgIHN0YWNrLmVudGVyX2NvbnRleHQoY20pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0uX19zZWxmX18sIGNtKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDIsIDMsIDRdKQorCisgICAgZGVmIHRlc3RfY2xvc2Uoc2VsZik6CisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIHdpdGggRXhpdFN0YWNrKCkgYXMgc3RhY2s6CisgICAgICAgICAgICBAc3RhY2suY2FsbGJhY2sKKyAgICAgICAgICAgIGRlZiBfZXhpdCgpOgorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKF9leGl0KQorICAgICAgICAgICAgc3RhY2suY2xvc2UoKQorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfcG9wX2FsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIEBzdGFjay5jYWxsYmFjaworICAgICAgICAgICAgZGVmIF9leGl0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoX2V4aXQpCisgICAgICAgICAgICBuZXdfc3RhY2sgPSBzdGFjay5wb3BfYWxsKCkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSkKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgyKQorICAgICAgICBuZXdfc3RhY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDIsIDNdKQorCisgICAgZGVmIHRlc3RfZXhpdF9yYWlzZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IEZhbHNlKQorICAgICAgICAgICAgICAgIDEvMAorCisgICAgZGVmIHRlc3RfZXhpdF9zdXBwcmVzcyhzZWxmKToKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IFRydWUpCisgICAgICAgICAgICAxLzAKKworICAgIGRlZiB0ZXN0X2V4aXRfZXhjZXB0aW9uX2NoYWluaW5nX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgIyBTYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgRXhpdFN0YWNrIGNoYWluaW5nIG1hdGNoZXMKKyAgICAgICAgIyBhY3R1YWwgbmVzdGVkIHdpdGggc3RhdGVtZW50cworICAgICAgICBjbGFzcyBSYWlzZUV4YzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleGMpOgorICAgICAgICAgICAgICAgIHNlbGYuZXhjID0gZXhjCisgICAgICAgICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmV4YworCisgICAgICAgIGNsYXNzIFJhaXNlRXhjV2l0aENvbnRleHQ6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0ZXIsIGlubmVyKToKKyAgICAgICAgICAgICAgICBzZWxmLm91dGVyID0gb3V0ZXIKKyAgICAgICAgICAgICAgICBzZWxmLmlubmVyID0gaW5uZXIKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5pbm5lcgorICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5vdXRlcgorCisgICAgICAgIGNsYXNzIFN1cHByZXNzRXhjOgorICAgICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfZGV0YWlscyk6CisgICAgICAgICAgICAgICAgdHlwZShzZWxmKS5zYXZlZF9kZXRhaWxzID0gZXhjX2RldGFpbHMKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggUmFpc2VFeGMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICAgICAgd2l0aCBSYWlzZUV4Y1dpdGhDb250ZXh0KEtleUVycm9yLCBBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHdpdGggU3VwcHJlc3NFeGMoKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggUmFpc2VFeGMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgZXhjZXB0IEluZGV4RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXywgS2V5RXJyb3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZXhjLl9fY29udGV4dF9fLl9fY29udGV4dF9fLCBBdHRyaWJ1dGVFcnJvcikKKyAgICAgICAgICAgICMgSW5uZXIgZXhjZXB0aW9ucyB3ZXJlIHN1cHByZXNzZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgSW5kZXhFcnJvciwgYnV0IG5vIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIikKKyAgICAgICAgIyBDaGVjayB0aGUgaW5uZXIgZXhjZXB0aW9ucworICAgICAgICBpbm5lcl9leGMgPSBTdXBwcmVzc0V4Yy5zYXZlZF9kZXRhaWxzWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMsIFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbm5lcl9leGMuX19jb250ZXh0X18sIFplcm9EaXZpc2lvbkVycm9yKQorCisgICAgZGVmIHRlc3RfZXhpdF9leGNlcHRpb25fY2hhaW5pbmcoc2VsZik6CisgICAgICAgICMgRW5zdXJlIGV4Y2VwdGlvbiBjaGFpbmluZyBtYXRjaGVzIHRoZSByZWZlcmVuY2UgYmVoYXZpb3VyCisgICAgICAgIGRlZiByYWlzZV9leGMoZXhjKToKKyAgICAgICAgICAgIHJhaXNlIGV4YworCisgICAgICAgIHNhdmVkX2RldGFpbHMgPSBOb25lCisgICAgICAgIGRlZiBzdXBwcmVzc19leGMoKmV4Y19kZXRhaWxzKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHNhdmVkX2RldGFpbHMKKyAgICAgICAgICAgIHNhdmVkX2RldGFpbHMgPSBleGNfZGV0YWlscworICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgSW5kZXhFcnJvcikKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhyYWlzZV9leGMsIEtleUVycm9yKQorICAgICAgICAgICAgICAgIHN0YWNrLmNhbGxiYWNrKHJhaXNlX2V4YywgQXR0cmlidXRlRXJyb3IpCisgICAgICAgICAgICAgICAgc3RhY2sucHVzaChzdXBwcmVzc19leGMpCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2socmFpc2VfZXhjLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShleGMuX19jb250ZXh0X18sIEtleUVycm9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGV4Yy5fX2NvbnRleHRfXy5fX2NvbnRleHRfXywgQXR0cmlidXRlRXJyb3IpCisgICAgICAgICAgICAjIElubmVyIGV4Y2VwdGlvbnMgd2VyZSBzdXBwcmVzc2VkCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMuX19jb250ZXh0X18uX19jb250ZXh0X18uX19jb250ZXh0X18pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIEluZGV4RXJyb3IsIGJ1dCBubyBleGNlcHRpb24gd2FzIHJhaXNlZCIpCisgICAgICAgICMgQ2hlY2sgdGhlIGlubmVyIGV4Y2VwdGlvbnMKKyAgICAgICAgaW5uZXJfZXhjID0gc2F2ZWRfZGV0YWlsc1sxXQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5uZXJfZXhjLCBWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5uZXJfZXhjLl9fY29udGV4dF9fLCBaZXJvRGl2aXNpb25FcnJvcikKKworICAgIGRlZiB0ZXN0X2V4aXRfZXhjZXB0aW9uX2NoYWluaW5nX3N1cHByZXNzKHNlbGYpOgorICAgICAgICB3aXRoIEV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgc3RhY2sucHVzaChsYW1iZGEgKmV4YzogVHJ1ZSkKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IDEvMCkKKyAgICAgICAgICAgIHN0YWNrLnB1c2gobGFtYmRhICpleGM6IHt9WzFdKQorCisgICAgZGVmIHRlc3RfZXhjZXNzaXZlX25lc3Rpbmcoc2VsZik6CisgICAgICAgICMgVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHdvdWxkIGRpZSB3aXRoIFJlY3Vyc2lvbkVycm9yIGhlcmUKKyAgICAgICAgd2l0aCBFeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDAwKToKKyAgICAgICAgICAgICAgICBzdGFjay5jYWxsYmFjayhpbnQpCisKKyAgICBkZWYgdGVzdF9pbnN0YW5jZV9ieXBhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEV4YW1wbGUob2JqZWN0KTogcGFzcworICAgICAgICBjbSA9IEV4YW1wbGUoKQorICAgICAgICBjbS5fX2V4aXRfXyA9IG9iamVjdCgpCisgICAgICAgIHN0YWNrID0gRXhpdFN0YWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHN0YWNrLmVudGVyX2NvbnRleHQsIGNtKQorICAgICAgICBzdGFjay5wdXNoKGNtKQorICAgICAgICBzZWxmLmFzc2VydElzKHN0YWNrLl9leGl0X2NhbGxiYWNrc1stMV0sIGNtKQorCisKICMgVGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB0aGUgdGVzdCBhY3R1YWxseSBydW4gdW5kZXIgcmVncnRlc3QucHkhCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkgYi9MaWIvdGVzdC90ZXN0X2NvcHkucHkKaW5kZXggYTg0YzEwOS4uYzRiYWFlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQpAQCAtMTcsNyArMTcsNyBAQAogICAgICMgQXR0ZW1wdCBmdWxsIGxpbmUgY292ZXJhZ2Ugb2YgY29weS5weSBmcm9tIHRvcCB0byBib3R0b20KIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb3B5LkVycm9yIGlzIGNvcHkuZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoY29weS5FcnJvciwgY29weS5lcnJvcikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoY29weS5FcnJvciwgRXhjZXB0aW9uKSkKIAogICAgICMgVGhlIGNvcHkoKSBtZXRob2QKQEAgLTU0LDIwICs1NCwyNiBAQAogICAgIGRlZiB0ZXN0X2NvcHlfcmVkdWNlX2V4KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90byk6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgic2hvdWxkbid0IGNhbGwgdGhpcyIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgWzFdKQogCiAgICAgZGVmIHRlc3RfY29weV9yZWR1Y2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGMuYXBwZW5kKDEpCiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgIGMgPSBbXQogICAgICAgICB4ID0gQygpCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfY2FudChzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtOTEsNyArOTcsNyBAQAogICAgICAgICAgICAgICAgICAiaGVsbG8iLCAiaGVsbG9cdTEyMzQiLCBmLl9fY29kZV9fLAogICAgICAgICAgICAgICAgICBOZXdTdHlsZSwgcmFuZ2UoMTApLCBDbGFzc2ljLCBtYXhdCiAgICAgICAgIGZvciB4IGluIHRlc3RzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHkuY29weSh4KSBpcyB4LCByZXByKHgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmNvcHkoeCksIHgpCiAKICAgICBkZWYgdGVzdF9jb3B5X2xpc3Qoc2VsZik6CiAgICAgICAgIHggPSBbMSwgMiwgM10KQEAgLTE4NSw5ICsxOTEsOSBAQAogICAgICAgICB4ID0gW3gsIHhdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdIGlzIG5vdCB4WzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyB5WzFdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeVswXSwgeFswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5WzBdLCB5WzFdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaXNzdWJjbGFzcyhzZWxmKToKICAgICAgICAgIyBYWFggTm90ZTogdGhlcmUncyBubyB3YXkgdG8gdGVzdCB0aGUgVHlwZUVycm9yIGNvbWluZyBvdXQgb2YKQEAgLTIyNywyMCArMjMzLDI2IEBACiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVkdWNlX2V4KHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgX19yZWR1Y2VfZXhfXyhzZWxmLCBwcm90byk6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgic2hvdWxkbid0IGNhbGwgdGhpcyIpCisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaG91bGRuJ3QgY2FsbCB0aGlzIikKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgogICAgICAgICAgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgICAgICAgICAgYy5hcHBlbmQoMSkKICAgICAgICAgICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgYyA9IFtdCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIFsxXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2NhbnQoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTI2NCwxNCArMjc2LDE0IEBACiAgICAgICAgICAgICAgICAgICJoZWxsbyIsICJoZWxsb1x1MTIzNCIsIGYuX19jb2RlX18sCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCByYW5nZSgxMCksIENsYXNzaWMsIG1heF0KICAgICAgICAgZm9yIHggaW4gdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29weS5kZWVwY29weSh4KSBpcyB4LCByZXByKHgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmRlZXBjb3B5KHgpLCB4KQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfbGlzdChzZWxmKToKICAgICAgICAgeCA9IFtbMSwgMl0sIDNdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIG5vdCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV9saXN0KHNlbGYpOgogICAgICAgICB4ID0gW10KQEAgLTI3OSwxNiArMjkxLDI2IEBACiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIGZvciBvcCBpbiBjb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVswXSBpcyB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHksIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeVswXSwgeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oeSksIDEpCiAKKyAgICBkZWYgdGVzdF9kZWVwY29weV9lbXB0eV90dXBsZShzZWxmKToKKyAgICAgICAgeCA9ICgpCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeCwgeSkKKwogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3R1cGxlKHNlbGYpOgogICAgICAgICB4ID0gKFsxLCAyXSwgMykKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4WzBdLCB5WzBdKQorCisgICAgZGVmIHRlc3RfZGVlcGNvcHlfdHVwbGVfb2ZfaW1tdXRhYmxlcyhzZWxmKToKKyAgICAgICAgeCA9ICgoMSwgMiksIDMpCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeCwgeSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3JlZmxleGl2ZV90dXBsZShzZWxmKToKICAgICAgICAgeCA9IChbXSwpCkBAIC0yOTYsMTYgKzMxOCwxNiBAQAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBmb3Igb3AgaW4gY29tcGFyaXNvbnM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIG9wLCB5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHlbMF0gaXMgbm90IHhbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5WzBdWzBdIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5WzBdLCB4WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHlbMF1bMF0sIHkpCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9kaWN0KHNlbGYpOgogICAgICAgICB4ID0geyJmb28iOiBbMSwgMl0sICJiYXIiOiAzfQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgbm90IHlbImZvbyJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFsiZm9vIl0sIHlbImZvbyJdKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfcmVmbGV4aXZlX2RpY3Qoc2VsZik6CiAgICAgICAgIHggPSB7fQpAQCAtMzE1LDE1ICszMzcsMzAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3AsIHksIHgpCiAgICAgICAgIGZvciBvcCBpbiBlcXVhbGl0eV9jb21wYXJpc29uczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgb3AsIHksIHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeVsnZm9vJ10gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHlbJ2ZvbyddLCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih5KSwgMSkKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2tlZXBhbGl2ZShzZWxmKToKICAgICAgICAgbWVtbyA9IHt9Ci0gICAgICAgIHggPSA0MgorICAgICAgICB4ID0gW10KICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCwgbWVtbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1lbW9baWQoeCldIGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWVtb1tpZChtZW1vKV1bMF0sIHgpCisKKyAgICBkZWYgdGVzdF9kZWVwY29weV9kb250X21lbW9faW1tdXRhYmxlKHNlbGYpOgorICAgICAgICBtZW1vID0ge30KKyAgICAgICAgeCA9IFsxLCAyLCAzLCA0XQorICAgICAgICB5ID0gY29weS5kZWVwY29weSh4LCBtZW1vKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCisgICAgICAgICMgVGhlcmUncyB0aGUgZW50cnkgZm9yIHRoZSBuZXcgbGlzdCwgYW5kIHRoZSBrZWVwIGFsaXZlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtZW1vKSwgMikKKworICAgICAgICBtZW1vID0ge30KKyAgICAgICAgeCA9IFsoMSwgMildCisgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgsIG1lbW8pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKKyAgICAgICAgIyBUdXBsZXMgd2l0aCBpbW11dGFibGUgY29udGVudHMgYXJlIGltbXV0YWJsZSBmb3IgZGVlcGNvcHkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1lbW8pLCAyKQogCiAgICAgZGVmIHRlc3RfZGVlcGNvcHlfaW5zdF92YW5pbGxhKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzM0LDcgKzM3MSw3IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2RlZXBjb3B5KHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzQ3LDggKzM4NCw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2dldGluaXRhcmdzKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzYxLDggKzM5OCw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2dldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzc1LDggKzQxMiw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtMzg5LDggKzQyNiw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9pbnN0X2dldHN0YXRlX3NldHN0YXRlKHNlbGYpOgogICAgICAgICBjbGFzcyBDOgpAQCAtNDA1LDggKzQ0Miw4IEBACiAgICAgICAgIHggPSBDKFs0Ml0pCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkgaXMgbm90IHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5LmZvbyBpcyBub3QgeC5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9kZWVwY29weV9yZWZsZXhpdmVfaW5zdChzZWxmKToKICAgICAgICAgY2xhc3MgQzoKQEAgLTQxNCw4ICs0NTEsOCBAQAogICAgICAgICB4ID0gQygpCiAgICAgICAgIHguZm9vID0geAogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LmZvbywgeSkKIAogICAgICMgX3JlY29uc3RydWN0KCkKIApAQCAtNDI1LDkgKzQ2Miw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X25vc3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQzNiw5ICs0NzMsOSBAQAogICAgICAgICB4ID0gQygpCiAgICAgICAgIHguZm9vID0gNDIKICAgICAgICAgeSA9IGNvcHkuY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5fX2NsYXNzX18gaXMgeC5fX2NsYXNzX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5fX2NsYXNzX18sIHguX19jbGFzc19fKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5fX2NsYXNzX18gaXMgeC5fX2NsYXNzX18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeS5fX2NsYXNzX18sIHguX19jbGFzc19fKQogCiAgICAgZGVmIHRlc3RfcmVjb25zdHJ1Y3Rfc3RhdGUoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQ1Miw3ICs0ODksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIHgpCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHkuZm9vIGlzIG5vdCB4LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LmZvbywgeC5mb28pCiAKICAgICBkZWYgdGVzdF9yZWNvbnN0cnVjdF9zdGF0ZV9zZXRzdGF0ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDY4LDcgKzUwNSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgeCkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh5LCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgbm90IHguZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHkuZm9vLCB4LmZvbykKIAogICAgIGRlZiB0ZXN0X3JlY29uc3RydWN0X3JlZmxleGl2ZShzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNDc2LDggKzUxMyw4IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSB4CiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIG5vdCB4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeS5mb28gaXMgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh5LCB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHkuZm9vLCB5KQogCiAgICAgIyBBZGRpdGlvbnMgZm9yIFB5dGhvbiAyLjMgYW5kIHBpY2tsZSBwcm90b2NvbCAyCiAKQEAgLTQ5MSwxMiArNTI4LDEyIEBACiAgICAgICAgIHggPSBDKFtbMSwgMl0sIDNdKQogICAgICAgICB5ID0gY29weS5jb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHggaXMgbm90IHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIHlbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgeSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WzBdLCB5WzBdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCiAKICAgICBkZWYgdGVzdF9yZWR1Y2VfNXR1cGxlKHNlbGYpOgogICAgICAgICBjbGFzcyBDKGRpY3QpOgpAQCAtNTA4LDEyICs1NDUsMTIgQEAKICAgICAgICAgeCA9IEMoWygiZm9vIiwgWzEsIDJdKSwgKCJiYXIiLCAzKV0pCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBub3QgeSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbImZvbyJdIGlzIHlbImZvbyJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeFsiZm9vIl0sIHlbImZvbyJdKQogICAgICAgICB5ID0gY29weS5kZWVwY29weSh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIHkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFsiZm9vIl0gaXMgbm90IHlbImZvbyJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFsiZm9vIl0sIHlbImZvbyJdKQogCiAgICAgZGVmIHRlc3RfY29weV9zbG90cyhzZWxmKToKICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgpAQCAtNTIxLDcgKzU1OCw3IEBACiAgICAgICAgIHggPSBDKCkKICAgICAgICAgeC5mb28gPSBbNDJdCiAgICAgICAgIHkgPSBjb3B5LmNvcHkoeCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguZm9vIGlzIHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzKHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X3Nsb3RzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKG9iamVjdCk6CkBAIC01MzAsNyArNTY3LDcgQEAKICAgICAgICAgeC5mb28gPSBbNDJdCiAgICAgICAgIHkgPSBjb3B5LmRlZXBjb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5mb28sIHkuZm9vKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5mb28gaXMgbm90IHkuZm9vKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2RpY3Rfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEMoZGljdCk6CkBAIC01NDcsNyArNTg0LDcgQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX2tleXMsIHkuX2tleXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHgsIHkpCiAgICAgICAgIHhbJ2JhciddID0gMQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHgsIHkpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoeC5fa2V5cywgeS5fa2V5cykKQEAgLTU2MCw4ICs1OTcsOCBAQAogICAgICAgICB5ID0gY29weS5jb3B5KHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh4KSwgbGlzdCh5KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZvbywgeS5mb28pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4WzBdIGlzIHlbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyB5LmZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh4WzBdLCB5WzBdKQorICAgICAgICBzZWxmLmFzc2VydElzKHguZm9vLCB5LmZvbykKIAogICAgIGRlZiB0ZXN0X2RlZXBjb3B5X2xpc3Rfc3ViY2xhc3Moc2VsZik6CiAgICAgICAgIGNsYXNzIEMobGlzdCk6CkBAIC01NzEsOCArNjA4LDggQEAKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHgpLCBsaXN0KHkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZm9vLCB5LmZvbykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhbMF0gaXMgbm90IHlbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmZvbyBpcyBub3QgeS5mb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeFswXSwgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LmZvbywgeS5mb28pCiAKICAgICBkZWYgdGVzdF9jb3B5X3R1cGxlX3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBDKHR1cGxlKToKQEAgLTU4OSw4ICs2MjYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHgpLCAoWzEsIDJdLCAzKSkKICAgICAgICAgeSA9IGNvcHkuZGVlcGNvcHkoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZSh5KSwgKFsxLCAyXSwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4IGlzIG5vdCB5KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeFswXSBpcyBub3QgeVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCB5KQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHhbMF0sIHlbMF0pCiAKICAgICBkZWYgdGVzdF9nZXRzdGF0ZV9leGMoc2VsZik6CiAgICAgICAgIGNsYXNzIEV2aWxTdGF0ZShvYmplY3QpOgpAQCAtNjE4LDEwICs2NTUsMTAgQEAKICAgICAgICAgb2JqID0gQygpCiAgICAgICAgIHggPSB3ZWFrcmVmLnJlZihvYmopCiAgICAgICAgIHkgPSBfY29weSh4KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyB4KQorICAgICAgICBzZWxmLmFzc2VydElzKHksIHgpCiAgICAgICAgIGRlbCBvYmoKICAgICAgICAgeSA9IF9jb3B5KHgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh5IGlzIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoeSwgeCkKIAogICAgIGRlZiB0ZXN0X2NvcHlfd2Vha3JlZihzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfd2Vha3JlZihjb3B5LmNvcHkpCkBAIC02MzcsNyArNjc0LDcgQEAKICAgICAgICAgdVthXSA9IGIKICAgICAgICAgdVtjXSA9IGQKICAgICAgICAgdiA9IGNvcHkuY29weSh1KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHYgaXMgdSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh2LCB1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlthXSwgYikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2W2NdLCBkKQpAQCAtNjY3LDggKzcwNCw4IEBACiAgICAgICAgIHYgPSBjb3B5LmRlZXBjb3B5KHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodiwgdSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodlthXSBpcyBiKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHZbY10gaXMgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh2W2FdLCBiKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHZbY10sIGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodlthXS5pLCBiLmkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodltjXS5pLCBkLmkpCiAgICAgICAgIGRlbCBjCkBAIC02ODcsMTIgKzcyNCwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHYsIHUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHYpLCAyKQogICAgICAgICAoeCwgeSksICh6LCB0KSA9IHNvcnRlZCh2Lml0ZW1zKCksIGtleT1sYW1iZGEgcGFpcjogcGFpclswXS5pKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHggaXMgYSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh4LCBhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguaSwgYS5pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBiKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHogaXMgYykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCBiKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHosIGMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoei5pLCBjLmkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0IGlzIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModCwgZCkKICAgICAgICAgZGVsIHgsIHksIHosIHQKICAgICAgICAgZGVsIGQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odiksIDEpCkBAIC03MDUsNyArNzQyLDcgQEAKICAgICAgICAgZi5iID0gZi5tCiAgICAgICAgIGcgPSBjb3B5LmRlZXBjb3B5KGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5tLCBnLmIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnLmIuX19zZWxmX18gaXMgZykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhnLmIuX19zZWxmX18sIGcpCiAgICAgICAgIGcuYigpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKaW5kZXggYWUxN2MyYi4uNTY3NjY2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CkBAIC0xOCwxNiArMTgsMTkgQEAKICAgICBkZWYgdGVzdF9iYWRfY291bnRlcl9kdXJpbmdfZGVhbGxvYyhzZWxmKToKICAgICAgICAgaW1wb3J0IF9sc3Byb2YKICAgICAgICAgIyBNdXN0IHVzZSBhIGZpbGUgYXMgU3RyaW5nSU8gZG9lc24ndCB0cmlnZ2VyIHRoZSBidWcuCi0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmlsZToKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBmaWxlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcihsYW1iZGE6IGludCkKLSAgICAgICAgICAgICAgICBvYmouZW5hYmxlKCkKLSAgICAgICAgICAgICAgICBvYmogPSBfbHNwcm9mLlByb2ZpbGVyKDEpCi0gICAgICAgICAgICAgICAgb2JqLmRpc2FibGUoKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc3lzLl9fc3RkZXJyX18KLSAgICAgICAgdW5saW5rKFRFU1RGTikKKyAgICAgICAgb3JpZ19zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyID0gZmlsZQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgb2JqID0gX2xzcHJvZi5Qcm9maWxlcihsYW1iZGE6IGludCkKKyAgICAgICAgICAgICAgICAgICAgb2JqLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgICAgIG9iaiA9IF9sc3Byb2YuUHJvZmlsZXIoMSkKKyAgICAgICAgICAgICAgICAgICAgb2JqLmRpc2FibGUoKQorICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvcmlnX3N0ZGVycgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyYXNoZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzZjY2JlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9jcmFzaGVycy5weQpAQCAtMCwwICsxLDM4IEBACisjIFRlc3RzIHRoYXQgdGhlIGNyYXNoZXJzIGluIHRoZSBMaWIvdGVzdC9jcmFzaGVycyBkaXJlY3RvcnkgYWN0dWFsbHkKKyMgZG8gY3Jhc2ggdGhlIGludGVycHJldGVyIGFzIGV4cGVjdGVkCisjCisjIElmIGEgY3Jhc2hlciBpcyBmaXhlZCwgaXQgc2hvdWxkIGJlIG1vdmVkIGVsc2V3aGVyZSBpbiB0aGUgdGVzdCBzdWl0ZSB0bworIyBlbnN1cmUgaXQgY29udGludWVzIHRvIHdvcmsgY29ycmVjdGx5LgorCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBnbG9iCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHRlc3Quc3VwcG9ydAorZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fZmFpbHVyZQorCitDUkFTSEVSX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiY3Jhc2hlcnMiKQorQ1JBU0hFUl9GSUxFUyA9IG9zLnBhdGguam9pbihDUkFTSEVSX0RJUiwgIioucHkiKQorCitpbmZpbml0ZV9sb29wcyA9IFsiaW5maW5pdGVfbG9vcF9yZS5weSIsICJuYXN0eV9lcV92c19kaWN0LnB5Il0KKworY2xhc3MgQ3Jhc2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHVuaXR0ZXN0LnNraXAoInRoZXNlIHRlc3RzIGFyZSB0b28gZnJhZ2lsZSIpCisgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9jcmFzaGVyc19jcmFzaChzZWxmKToKKyAgICAgICAgZm9yIGZuYW1lIGluIGdsb2IuZ2xvYihDUkFTSEVSX0ZJTEVTKToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZm5hbWUpIGluIGluZmluaXRlX2xvb3BzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAjIFNvbWUgImNyYXNoZXJzIiBvbmx5IHRyaWdnZXIgYW4gZXhjZXB0aW9uIHJhdGhlciB0aGFuIGEKKyAgICAgICAgICAgICMgc2VnZmF1bHQuIENvbnNpZGVyIHRoYXQgYW4gYWNjZXB0YWJsZSBvdXRjb21lLgorICAgICAgICAgICAgaWYgdGVzdC5zdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIkNoZWNraW5nIGNyYXNoZXI6IiwgZm5hbWUpCisgICAgICAgICAgICBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoZm5hbWUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ3Jhc2hlclRlc3QpCisgICAgdGVzdC5zdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQppbmRleCAyYWRiMjhkLi5kYzEwN2Q4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKQEAgLTEwLDYgKzEwLDI1IEBACiAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgIHByaW50KCdUZXN0IGVuY3J5cHRpb246ICcsIGMpCiAKKyAgICBkZWYgdGVzdF9zYWx0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjcnlwdC5fc2FsdGNoYXJzKSwgNjQpCisgICAgICAgIGZvciBtZXRob2QgaW4gY3J5cHQubWV0aG9kczoKKyAgICAgICAgICAgIHNhbHQgPSBjcnlwdC5ta3NhbHQobWV0aG9kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2FsdCksCisgICAgICAgICAgICAgICAgICAgIG1ldGhvZC5zYWx0X2NoYXJzICsgKDMgaWYgbWV0aG9kLmlkZW50IGVsc2UgMCkpCisKKyAgICBkZWYgdGVzdF9zYWx0ZWRjcnlwdChzZWxmKToKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBjcnlwdC5tZXRob2RzOgorICAgICAgICAgICAgcHcgPSBjcnlwdC5jcnlwdCgnYXNzd29yZCcsIG1ldGhvZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHB3KSwgbWV0aG9kLnRvdGFsX3NpemUpCisgICAgICAgICAgICBwdyA9IGNyeXB0LmNyeXB0KCdhc3N3b3JkJywgY3J5cHQubWtzYWx0KG1ldGhvZCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwdyksIG1ldGhvZC50b3RhbF9zaXplKQorCisgICAgZGVmIHRlc3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgIyBHdXJhbnRlZSB0aGF0IE1FVEhPRF9DUllQVCBpcyB0aGUgbGFzdCBtZXRob2QgaW4gY3J5cHQubWV0aG9kcy4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjcnlwdC5tZXRob2RzKSA+PSAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyeXB0Lk1FVEhPRF9DUllQVCwgY3J5cHQubWV0aG9kc1stMV0pCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDcnlwdFRlc3RDYXNlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weSBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CmluZGV4IDU4MTIxNDcuLmU5NTk2MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Vyc2VzLnB5CkBAIC0yNjQsMTEgKzI2NCw1MyBAQAogICAgIGN1cnNlcy51bmdldGNoKDEwMjUpCiAgICAgc3Rkc2NyLmdldGtleSgpCiAKK2RlZiB0ZXN0X3VuZ2V0X3djaChzdGRzY3IpOgorICAgIGlmIG5vdCBoYXNhdHRyKGN1cnNlcywgJ3VuZ2V0X3djaCcpOgorICAgICAgICByZXR1cm4KKyAgICBlbmNvZGluZyA9IHN0ZHNjci5lbmNvZGluZworICAgIGZvciBjaCBpbiAoJ2EnLCAnXHhlOScsICdcdTIwYWMnLCAnXFUwMDEwRkZGRicpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjaC5lbmNvZGUoZW5jb2RpbmcpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjdXJzZXMudW5nZXRfd2NoKGNoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidW5nZXRfd2NoKCVhKSBmYWlsZWQgd2l0aCBlbmNvZGluZyAlczogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoY2gsIHN0ZHNjci5lbmNvZGluZywgZXJyKSkKKyAgICAgICAgcmVhZCA9IHN0ZHNjci5nZXRfd2NoKCkKKyAgICAgICAgaWYgcmVhZCAhPSBjaDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlciAhPSAlciIgJSAocmVhZCwgY2gpKQorCisgICAgICAgIGNvZGUgPSBvcmQoY2gpCisgICAgICAgIGN1cnNlcy51bmdldF93Y2goY29kZSkKKyAgICAgICAgcmVhZCA9IHN0ZHNjci5nZXRfd2NoKCkKKyAgICAgICAgaWYgcmVhZCAhPSBjaDoKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlciAhPSAlciIgJSAocmVhZCwgY2gpKQorCiBkZWYgdGVzdF9pc3N1ZTEwNTcwKCk6CiAgICAgYiA9IGN1cnNlcy50cGFybShjdXJzZXMudGlnZXRzdHIoImN1cCIpLCA1LCAzKQogICAgIGFzc2VydCB0eXBlKGIpIGlzIGJ5dGVzCiAgICAgY3Vyc2VzLnB1dHAoYikKIAorZGVmIHRlc3RfZW5jb2Rpbmcoc3Rkc2NyKToKKyAgICBpbXBvcnQgY29kZWNzCisgICAgZW5jb2RpbmcgPSBzdGRzY3IuZW5jb2RpbmcKKyAgICBjb2RlY3MubG9va3VwKGVuY29kaW5nKQorICAgIHRyeToKKyAgICAgICAgc3Rkc2NyLmVuY29kaW5nID0gMTAKKyAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIlR5cGVFcnJvciBub3QgcmFpc2VkIikKKyAgICBzdGRzY3IuZW5jb2RpbmcgPSBlbmNvZGluZworICAgIHRyeToKKyAgICAgICAgZGVsIHN0ZHNjci5lbmNvZGluZworICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVHlwZUVycm9yIG5vdCByYWlzZWQiKQorCiBkZWYgbWFpbihzdGRzY3IpOgogICAgIGN1cnNlcy5zYXZldHR5KCkKICAgICB0cnk6CkBAIC0yNzcsMTYgKzMxOSwxOCBAQAogICAgICAgICB0ZXN0X3VzZXJwdHJfd2l0aG91dF9zZXQoc3Rkc2NyKQogICAgICAgICB0ZXN0X3Jlc2l6ZV90ZXJtKHN0ZHNjcikKICAgICAgICAgdGVzdF9pc3N1ZTYyNDMoc3Rkc2NyKQorICAgICAgICB0ZXN0X3VuZ2V0X3djaChzdGRzY3IpCiAgICAgICAgIHRlc3RfaXNzdWUxMDU3MCgpCisgICAgICAgIHRlc3RfZW5jb2Rpbmcoc3Rkc2NyKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGN1cnNlcy5yZXNldHR5KCkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGlmIG5vdCBzeXMuc3Rkb3V0LmlzYXR0eSgpOgotICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic3lzLnN0ZG91dCBpcyBub3QgYSB0dHkiKQorICAgIGlmIG5vdCBzeXMuX19zdGRvdXRfXy5pc2F0dHkoKToKKyAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5cy5fX3N0ZG91dF9fIGlzIG5vdCBhIHR0eSIpCiAgICAgIyB0ZXN0aW5nIHNldHVwdGVybSgpIGluc2lkZSBpbml0c2NyL2VuZHdpbgogICAgICMgY2F1c2VzIHRlcm1pbmFsIGJyZWFrYWdlCi0gICAgY3Vyc2VzLnNldHVwdGVybShmZD1zeXMuc3Rkb3V0LmZpbGVubygpKQorICAgIGN1cnNlcy5zZXR1cHRlcm0oZmQ9c3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkpCiAgICAgdHJ5OgogICAgICAgICBzdGRzY3IgPSBjdXJzZXMuaW5pdHNjcigpCiAgICAgICAgIG1haW4oc3Rkc2NyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkgYi9MaWIvdGVzdC90ZXN0X2RibS5weQppbmRleCAyNmQ0YzE0Li4wMmRmN2UzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibS5weQpAQCAtNzEsOCArNzEsOCBAQAogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2FueWRibV9jcmVhdGlvbl9uX2ZpbGVfZXhpc3RzX3dpdGhfaW52YWxpZF9jb250ZW50cyhzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKF9mbmFtZSwgInciKSBhcyB3OgotICAgICAgICAgICAgcGFzcyAjIGNyZWF0ZSBhbiBlbXB0eSBmaWxlCisgICAgICAgICMgY3JlYXRlIGFuIGVtcHR5IGZpbGUKKyAgICAgICAgdGVzdC5zdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKF9mbmFtZSkKIAogICAgICAgICBmID0gZGJtLm9wZW4oX2ZuYW1lLCAnbicpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChmLmNsb3NlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5IGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CmluZGV4IDMwZDM5NzEuLmVjNWRiOWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKQEAgLTE2LDcgKzE2LDcgQEAKIAogQ293bGlzaGF3J3MgdGVzdHMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbToKIAotICAgd3d3Mi5odXJzbGV5LmlibS5jb20vZGVjaW1hbC9kZWN0ZXN0LnppcAorICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY3Rlc3QuemlwCiAKIFRoaXMgdGVzdCBtb2R1bGUgY2FuIGJlIGNhbGxlZCBmcm9tIGNvbW1hbmQgbGluZSB3aXRoIG9uZSBwYXJhbWV0ZXIgKEFyaXRobWV0aWMKIG9yIEJlaGF2aW91cikgdG8gdGVzdCBlYWNoIHBhcnQsIG9yIHdpdGhvdXQgcGFyYW1ldGVyIHRvIHRlc3QgYm90aCBwYXJ0cy4gSWYKQEAgLTMwLDM3ICszMCw3NSBAQAogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgcGlja2xlLCBjb3B5CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gZGVjaW1hbCBpbXBvcnQgKgogaW1wb3J0IG51bWJlcnMKK2ltcG9ydCBsb2NhbGUKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBydW5fZG9jdGVzdCwgaXNfcmVzb3VyY2VfZW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfSUVFRV83NTQpCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfd2FybmluZ3MKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoY2hlY2tfd2FybmluZ3MsIGltcG9ydF9mcmVzaF9tb2R1bGUsIFRlc3RGYWlsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl93aXRoX2xvY2FsZSkKIGltcG9ydCByYW5kb20KK2ltcG9ydCB0aW1lCitpbXBvcnQgd2FybmluZ3MKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQogCi0jIFVzZWZ1bCBUZXN0IENvbnN0YW50Ci1TaWduYWxzID0gdHVwbGUoZ2V0Y29udGV4dCgpLmZsYWdzLmtleXMoKSkKIAorQyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCitQID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGJsb2NrZWQ9WydfZGVjaW1hbCddKQorb3JpZ19zeXNfZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKworIyBmcmFjdGlvbnMgbW9kdWxlIG11c3QgaW1wb3J0IHRoZSBjb3JyZWN0IGRlY2ltYWwgbW9kdWxlLgorY2ZyYWN0aW9ucyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2ZyYWN0aW9ucycsIGZyZXNoPVsnZnJhY3Rpb25zJ10pCitzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorcGZyYWN0aW9ucyA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ2ZyYWN0aW9ucycsIGZyZXNoPVsnZnJhY3Rpb25zJ10pCitzeXMubW9kdWxlc1snZGVjaW1hbCddID0gQworZnJhY3Rpb25zID0ge0M6Y2ZyYWN0aW9ucywgUDpwZnJhY3Rpb25zfQorc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IG9yaWdfc3lzX2RlY2ltYWwKKworCisjIFVzZWZ1bCBUZXN0IENvbnN0YW50CitTaWduYWxzID0geworICBDOiB0dXBsZShDLmdldGNvbnRleHQoKS5mbGFncy5rZXlzKCkpIGlmIEMgZWxzZSBOb25lLAorICBQOiB0dXBsZShQLmdldGNvbnRleHQoKS5mbGFncy5rZXlzKCkpCit9CiAjIFNpZ25hbHMgb3JkZXJlZCB3aXRoIHJlc3BlY3QgdG8gcHJlY2VkZW5jZTogd2hlbiBhbiBvcGVyYXRpb24KICMgcHJvZHVjZXMgbXVsdGlwbGUgc2lnbmFscywgc2lnbmFscyBvY2N1cnJpbmcgbGF0ZXIgaW4gdGhlIGxpc3QKICMgc2hvdWxkIGJlIGhhbmRsZWQgYmVmb3JlIHRob3NlIG9jY3VycmluZyBlYXJsaWVyIGluIHRoZSBsaXN0LgotT3JkZXJlZFNpZ25hbHMgPSAoQ2xhbXBlZCwgUm91bmRlZCwgSW5leGFjdCwgU3Vibm9ybWFsLAotICAgICAgICAgICAgICAgICAgVW5kZXJmbG93LCBPdmVyZmxvdywgRGl2aXNpb25CeVplcm8sIEludmFsaWRPcGVyYXRpb24pCitPcmRlcmVkU2lnbmFscyA9IHsKKyAgQzogW0MuQ2xhbXBlZCwgQy5Sb3VuZGVkLCBDLkluZXhhY3QsIEMuU3Vibm9ybWFsLCBDLlVuZGVyZmxvdywKKyAgICAgIEMuT3ZlcmZsb3csIEMuRGl2aXNpb25CeVplcm8sIEMuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgIEMuRmxvYXRPcGVyYXRpb25dIGlmIEMgZWxzZSBOb25lLAorICBQOiBbUC5DbGFtcGVkLCBQLlJvdW5kZWQsIFAuSW5leGFjdCwgUC5TdWJub3JtYWwsIFAuVW5kZXJmbG93LAorICAgICAgUC5PdmVyZmxvdywgUC5EaXZpc2lvbkJ5WmVybywgUC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgUC5GbG9hdE9wZXJhdGlvbl0KK30KK2RlZiBhc3NlcnRfc2lnbmFscyhjbHMsIGNvbnRleHQsIGF0dHIsIGV4cGVjdGVkKToKKyAgICBkID0gZ2V0YXR0cihjb250ZXh0LCBhdHRyKQorICAgIGNscy5hc3NlcnRUcnVlKGFsbChkW3NdIGlmIHMgaW4gZXhwZWN0ZWQgZWxzZSBub3QgZFtzXSBmb3IgcyBpbiBkKSkKKworUm91bmRpbmdNb2RlcyA9IHsKKyAgQzogKEMuUk9VTkRfVVAsIEMuUk9VTkRfRE9XTiwgQy5ST1VORF9DRUlMSU5HLCBDLlJPVU5EX0ZMT09SLAorICAgICAgQy5ST1VORF9IQUxGX1VQLCBDLlJPVU5EX0hBTEZfRE9XTiwgQy5ST1VORF9IQUxGX0VWRU4sCisgICAgICBDLlJPVU5EXzA1VVApIGlmIEMgZWxzZSBOb25lLAorICBQOiAoUC5ST1VORF9VUCwgUC5ST1VORF9ET1dOLCBQLlJPVU5EX0NFSUxJTkcsIFAuUk9VTkRfRkxPT1IsCisgICAgICBQLlJPVU5EX0hBTEZfVVAsIFAuUk9VTkRfSEFMRl9ET1dOLCBQLlJPVU5EX0hBTEZfRVZFTiwKKyAgICAgIFAuUk9VTkRfMDVVUCkKK30KIAogIyBUZXN0cyBhcmUgYnVpbHQgYXJvdW5kIHRoZXNlIGFzc3VtZWQgY29udGV4dCBkZWZhdWx0cy4KICMgdGVzdF9tYWluKCkgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIGNvbnRleHQuCi1kZWYgaW5pdCgpOgotICAgIGdsb2JhbCBPUklHSU5BTF9DT05URVhUCi0gICAgT1JJR0lOQUxfQ09OVEVYVCA9IGdldGNvbnRleHQoKS5jb3B5KCkKLSAgICBEZWZhdWx0VGVzdENvbnRleHQgPSBDb250ZXh0KAotICAgICAgICBwcmVjID0gOSwKLSAgICAgICAgcm91bmRpbmcgPSBST1VORF9IQUxGX0VWRU4sCi0gICAgICAgIHRyYXBzID0gZGljdC5mcm9ta2V5cyhTaWduYWxzLCAwKQotICAgICAgICApCi0gICAgc2V0Y29udGV4dChEZWZhdWx0VGVzdENvbnRleHQpCitPUklHSU5BTF9DT05URVhUID0geworICBDOiBDLmdldGNvbnRleHQoKS5jb3B5KCkgaWYgQyBlbHNlIE5vbmUsCisgIFA6IFAuZ2V0Y29udGV4dCgpLmNvcHkoKQorfQorZGVmIGluaXQobSk6CisgICAgaWYgbm90IG06IHJldHVybgorICAgIERlZmF1bHRUZXN0Q29udGV4dCA9IG0uQ29udGV4dCgKKyAgICAgICBwcmVjPTksIHJvdW5kaW5nPW0uUk9VTkRfSEFMRl9FVkVOLCB0cmFwcz1kaWN0LmZyb21rZXlzKFNpZ25hbHNbbV0sIDApCisgICAgKQorICAgIG0uc2V0Y29udGV4dChEZWZhdWx0VGVzdENvbnRleHQpCiAKIFRFU1REQVRBRElSID0gJ2RlY2ltYWx0ZXN0ZGF0YScKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CkBAIC03MiwxNDkgKzExMCwxNzUgQEAKIAogc2tpcF9leHBlY3RlZCA9IG5vdCBvcy5wYXRoLmlzZGlyKGRpcmVjdG9yeSkKIAotIyBsaXN0IG9mIGluZGl2aWR1YWwgLmRlY1Rlc3QgdGVzdCBpZHMgdGhhdCBjb3JyZXNwb25kIHRvIHRlc3RzIHRoYXQKLSMgd2UncmUgc2tpcHBpbmcgZm9yIG9uZSByZWFzb24gb3IgYW5vdGhlci4KLXNraXBwZWRfdGVzdF9pZHMgPSBzZXQoWwotICAgICMgU2tpcCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBzY2FsZWIgdGVzdHMuCi0gICAgJ3NjYngxNjQnLAotICAgICdzY2J4MTY1JywKLQotICAgICMgRm9yIHNvbWUgb3BlcmF0aW9ucyAoY3VycmVudGx5IGV4cCwgbG4sIGxvZzEwLCBwb3dlciksIHRoZSBkZWNOdW1iZXIKLSAgICAjIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBpbXBvc2VzIGFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIG9uIHRoZSBjb250ZXh0Ci0gICAgIyBhbmQgb3BlcmFuZHMuICBUaGVzZSByZXN0cmljdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uOwotICAgICMgaG93ZXZlciwgdGhlIGVmZmVjdCBvZiB0aGVzZSByZXN0cmljdGlvbnMgZG9lcyBzaG93IHVwIGluIHNvbWUgb2YgdGhlCi0gICAgIyB0ZXN0Y2FzZXMuICBXZSBza2lwIHRlc3RjYXNlcyB0aGF0IHZpb2xhdGUgdGhlc2UgcmVzdHJpY3Rpb25zLCBzaW5jZQotICAgICMgRGVjaW1hbCBiZWhhdmVzIGRpZmZlcmVudGx5IGZyb20gZGVjTnVtYmVyIGZvciB0aGVzZSB0ZXN0Y2FzZXMgc28gdGhlc2UKLSAgICAjIHRlc3RjYXNlcyB3b3VsZCBvdGhlcndpc2UgZmFpbC4KLSAgICAnZXhweDkwMScsCi0gICAgJ2V4cHg5MDInLAotICAgICdleHB4OTAzJywKLSAgICAnZXhweDkwNScsCi0gICAgJ2xueDkwMScsCi0gICAgJ2xueDkwMicsCi0gICAgJ2xueDkwMycsCi0gICAgJ2xueDkwNScsCi0gICAgJ2xvZ3g5MDEnLAotICAgICdsb2d4OTAyJywKLSAgICAnbG9neDkwMycsCi0gICAgJ2xvZ3g5MDUnLAotICAgICdwb3d4MTE4MycsCi0gICAgJ3Bvd3gxMTg0JywKLSAgICAncG93eDQwMDEnLAotICAgICdwb3d4NDAwMicsCi0gICAgJ3Bvd3g0MDAzJywKLSAgICAncG93eDQwMDUnLAotICAgICdwb3d4NDAwOCcsCi0gICAgJ3Bvd3g0MDEwJywKLSAgICAncG93eDQwMTInLAotICAgICdwb3d4NDAxNCcsCi0gICAgXSkKLQogIyBNYWtlIHN1cmUgaXQgYWN0dWFsbHkgcmFpc2VzIGVycm9ycyB3aGVuIG5vdCBleHBlY3RlZCBhbmQgY2F1Z2h0IGluIGZsYWdzCiAjIFNsb3dlciwgc2luY2UgaXQgcnVucyBzb21lIHRoaW5ncyBzZXZlcmFsIHRpbWVzLgogRVhURU5ERURFUlJPUlRFU1QgPSBGYWxzZQogCi0jTWFwIHRoZSB0ZXN0IGNhc2VzJyBlcnJvciBuYW1lcyB0byB0aGUgYWN0dWFsIGVycm9ycwotRXJyb3JOYW1lcyA9IHsnY2xhbXBlZCcgOiBDbGFtcGVkLAotICAgICAgICAgICAgICAnY29udmVyc2lvbl9zeW50YXgnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2RpdmlzaW9uX2J5X3plcm8nIDogRGl2aXNpb25CeVplcm8sCi0gICAgICAgICAgICAgICdkaXZpc2lvbl9pbXBvc3NpYmxlJyA6IEludmFsaWRPcGVyYXRpb24sCi0gICAgICAgICAgICAgICdkaXZpc2lvbl91bmRlZmluZWQnIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ2luZXhhY3QnIDogSW5leGFjdCwKLSAgICAgICAgICAgICAgJ2ludmFsaWRfY29udGV4dCcgOiBJbnZhbGlkT3BlcmF0aW9uLAotICAgICAgICAgICAgICAnaW52YWxpZF9vcGVyYXRpb24nIDogSW52YWxpZE9wZXJhdGlvbiwKLSAgICAgICAgICAgICAgJ292ZXJmbG93JyA6IE92ZXJmbG93LAotICAgICAgICAgICAgICAncm91bmRlZCcgOiBSb3VuZGVkLAotICAgICAgICAgICAgICAnc3Vibm9ybWFsJyA6IFN1Ym5vcm1hbCwKLSAgICAgICAgICAgICAgJ3VuZGVyZmxvdycgOiBVbmRlcmZsb3d9CisjIFRlc3QgZXh0cmEgZnVuY3Rpb25hbGl0eSBpbiB0aGUgQyB2ZXJzaW9uICgtREVYVFJBX0ZVTkNUSU9OQUxJVFkpLgorRVhUUkFfRlVOQ1RJT05BTElUWSA9IFRydWUgaWYgaGFzYXR0cihDLCAnRGVjQ2xhbXBlZCcpIGVsc2UgRmFsc2UKK3JlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkgPSB1bml0dGVzdC5za2lwVW5sZXNzKAorICBFWFRSQV9GVU5DVElPTkFMSVRZLCAidGVzdCByZXF1aXJlcyBidWlsZCB3aXRoIC1ERVhUUkFfRlVOQ1RJT05BTElUWSIpCitza2lwX2lmX2V4dHJhX2Z1bmN0aW9uYWxpdHkgPSB1bml0dGVzdC5za2lwSWYoCisgIEVYVFJBX0ZVTkNUSU9OQUxJVFksICJ0ZXN0IHJlcXVpcmVzIHJlZ3VsYXIgYnVpbGQiKQogCiAKLWRlZiBOb25mdW5jdGlvbigqYXJncyk6Ci0gICAgIiIiRG9lc24ndCBkbyBhbnl0aGluZy4iIiIKLSAgICByZXR1cm4gTm9uZQorY2xhc3MgSUJNVGVzdENhc2VzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJDbGFzcyB3aGljaCB0ZXN0cyB0aGUgRGVjaW1hbCBjbGFzcyBhZ2FpbnN0IHRoZSBJQk0gdGVzdCBjYXNlcy4iIiIKIAotUm91bmRpbmdEaWN0ID0geydjZWlsaW5nJyA6IFJPVU5EX0NFSUxJTkcsICNNYXBzIHRlc3QtY2FzZSBuYW1lcyB0byByb3VuZGluZ3MuCi0gICAgICAgICAgICAgICAgJ2Rvd24nIDogUk9VTkRfRE9XTiwKLSAgICAgICAgICAgICAgICAnZmxvb3InIDogUk9VTkRfRkxPT1IsCi0gICAgICAgICAgICAgICAgJ2hhbGZfZG93bicgOiBST1VORF9IQUxGX0RPV04sCi0gICAgICAgICAgICAgICAgJ2hhbGZfZXZlbicgOiBST1VORF9IQUxGX0VWRU4sCi0gICAgICAgICAgICAgICAgJ2hhbGZfdXAnIDogUk9VTkRfSEFMRl9VUCwKLSAgICAgICAgICAgICAgICAndXAnIDogUk9VTkRfVVAsCi0gICAgICAgICAgICAgICAgJzA1dXAnIDogUk9VTkRfMDVVUH0KLQotIyBOYW1lIGFkYXB0ZXIgdG8gYmUgYWJsZSB0byBjaGFuZ2UgdGhlIERlY2ltYWwgYW5kIENvbnRleHQKLSMgaW50ZXJmYWNlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHRlc3QgZmlsZXMgZnJvbSBDb3dsaXNoYXcKLW5hbWVBZGFwdGVyID0geydhbmQnOidsb2dpY2FsX2FuZCcsCi0gICAgICAgICAgICAgICAnYXBwbHknOidfYXBwbHknLAotICAgICAgICAgICAgICAgJ2NsYXNzJzonbnVtYmVyX2NsYXNzJywKLSAgICAgICAgICAgICAgICdjb21wYXJlc2lnJzonY29tcGFyZV9zaWduYWwnLAotICAgICAgICAgICAgICAgJ2NvbXBhcmV0b3RhbCc6J2NvbXBhcmVfdG90YWwnLAotICAgICAgICAgICAgICAgJ2NvbXBhcmV0b3RtYWcnOidjb21wYXJlX3RvdGFsX21hZycsCi0gICAgICAgICAgICAgICAnY29weSc6J2NvcHlfZGVjaW1hbCcsCi0gICAgICAgICAgICAgICAnY29weWFicyc6J2NvcHlfYWJzJywKLSAgICAgICAgICAgICAgICdjb3B5bmVnYXRlJzonY29weV9uZWdhdGUnLAotICAgICAgICAgICAgICAgJ2NvcHlzaWduJzonY29weV9zaWduJywKLSAgICAgICAgICAgICAgICdkaXZpZGVpbnQnOidkaXZpZGVfaW50JywKLSAgICAgICAgICAgICAgICdpbnZlcnQnOidsb2dpY2FsX2ludmVydCcsCi0gICAgICAgICAgICAgICAnaXNjYW5vbmljYWwnOidpc19jYW5vbmljYWwnLAotICAgICAgICAgICAgICAgJ2lzZmluaXRlJzonaXNfZmluaXRlJywKLSAgICAgICAgICAgICAgICdpc2luZmluaXRlJzonaXNfaW5maW5pdGUnLAotICAgICAgICAgICAgICAgJ2lzbmFuJzonaXNfbmFuJywKLSAgICAgICAgICAgICAgICdpc25vcm1hbCc6J2lzX25vcm1hbCcsCi0gICAgICAgICAgICAgICAnaXNxbmFuJzonaXNfcW5hbicsCi0gICAgICAgICAgICAgICAnaXNzaWduZWQnOidpc19zaWduZWQnLAotICAgICAgICAgICAgICAgJ2lzc25hbic6J2lzX3NuYW4nLAotICAgICAgICAgICAgICAgJ2lzc3Vibm9ybWFsJzonaXNfc3Vibm9ybWFsJywKLSAgICAgICAgICAgICAgICdpc3plcm8nOidpc196ZXJvJywKLSAgICAgICAgICAgICAgICdtYXhtYWcnOidtYXhfbWFnJywKLSAgICAgICAgICAgICAgICdtaW5tYWcnOidtaW5fbWFnJywKLSAgICAgICAgICAgICAgICduZXh0bWludXMnOiduZXh0X21pbnVzJywKLSAgICAgICAgICAgICAgICduZXh0cGx1cyc6J25leHRfcGx1cycsCi0gICAgICAgICAgICAgICAnbmV4dHRvd2FyZCc6J25leHRfdG93YXJkJywKLSAgICAgICAgICAgICAgICdvcic6J2xvZ2ljYWxfb3InLAotICAgICAgICAgICAgICAgJ3JlZHVjZSc6J25vcm1hbGl6ZScsCi0gICAgICAgICAgICAgICAncmVtYWluZGVybmVhcic6J3JlbWFpbmRlcl9uZWFyJywKLSAgICAgICAgICAgICAgICdzYW1lcXVhbnR1bSc6J3NhbWVfcXVhbnR1bScsCi0gICAgICAgICAgICAgICAnc3F1YXJlcm9vdCc6J3NxcnQnLAotICAgICAgICAgICAgICAgJ3RvZW5nJzondG9fZW5nX3N0cmluZycsCi0gICAgICAgICAgICAgICAndG9pbnRlZ3JhbCc6J3RvX2ludGVncmFsX3ZhbHVlJywKLSAgICAgICAgICAgICAgICd0b2ludGVncmFseCc6J3RvX2ludGVncmFsX2V4YWN0JywKLSAgICAgICAgICAgICAgICd0b3NjaSc6J3RvX3NjaV9zdHJpbmcnLAotICAgICAgICAgICAgICAgJ3hvcic6J2xvZ2ljYWxfeG9yJywKLSAgICAgICAgICAgICAgfQotCi0jIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJldHVybiBUcnVlL0ZhbHNlIHJhdGhlciB0aGFuIGEgRGVjaW1hbCBpbnN0YW5jZQotCi1MT0dJQ0FMX0ZVTkNUSU9OUyA9ICgKLSAgICAnaXNfY2Fub25pY2FsJywKLSAgICAnaXNfZmluaXRlJywKLSAgICAnaXNfaW5maW5pdGUnLAotICAgICdpc19uYW4nLAotICAgICdpc19ub3JtYWwnLAotICAgICdpc19xbmFuJywKLSAgICAnaXNfc2lnbmVkJywKLSAgICAnaXNfc25hbicsCi0gICAgJ2lzX3N1Ym5vcm1hbCcsCi0gICAgJ2lzX3plcm8nLAotICAgICdzYW1lX3F1YW50dW0nLAotICAgICkKLQotY2xhc3MgRGVjaW1hbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkNsYXNzIHdoaWNoIHRlc3RzIHRoZSBEZWNpbWFsIGNsYXNzIGFnYWluc3QgdGhlIHRlc3QgY2FzZXMuCi0KLSAgICBDaGFuZ2VkIGZvciB1bml0dGVzdC4KLSAgICAiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29udGV4dCA9IENvbnRleHQoKQorICAgICAgICBzZWxmLmNvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCisgICAgICAgIHNlbGYucmVhZGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCiAgICAgICAgIHNlbGYuaWdub3JlX2xpc3QgPSBbJyMnXQotICAgICAgICAjIEJhc2ljYWxseSwgYSAjIG1lYW5zIHJldHVybiBOYU4gSW52YWxpZE9wZXJhdGlvbi4KLSAgICAgICAgIyBEaWZmZXJlbnQgZnJvbSBhIHNOYU4gaW4gdHJpbQogCisgICAgICAgICMgTGlzdCBvZiBpbmRpdmlkdWFsIC5kZWNUZXN0IHRlc3QgaWRzIHRoYXQgY29ycmVzcG9uZCB0byB0ZXN0cyB0aGF0CisgICAgICAgICMgd2UncmUgc2tpcHBpbmcgZm9yIG9uZSByZWFzb24gb3IgYW5vdGhlci4KKyAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzID0gc2V0KFsKKyAgICAgICAgICAgICMgU2tpcCBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBzY2FsZWIgdGVzdHMuCisgICAgICAgICAgICAnc2NieDE2NCcsCisgICAgICAgICAgICAnc2NieDE2NScsCisKKyAgICAgICAgICAgICMgRm9yIHNvbWUgb3BlcmF0aW9ucyAoY3VycmVudGx5IGV4cCwgbG4sIGxvZzEwLCBwb3dlciksIHRoZSBkZWNOdW1iZXIKKyAgICAgICAgICAgICMgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIGltcG9zZXMgYWRkaXRpb25hbCByZXN0cmljdGlvbnMgb24gdGhlIGNvbnRleHQKKyAgICAgICAgICAgICMgYW5kIG9wZXJhbmRzLiAgVGhlc2UgcmVzdHJpY3Rpb25zIGFyZSBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbjsKKyAgICAgICAgICAgICMgaG93ZXZlciwgdGhlIGVmZmVjdCBvZiB0aGVzZSByZXN0cmljdGlvbnMgZG9lcyBzaG93IHVwIGluIHNvbWUgb2YgdGhlCisgICAgICAgICAgICAjIHRlc3RjYXNlcy4gIFdlIHNraXAgdGVzdGNhc2VzIHRoYXQgdmlvbGF0ZSB0aGVzZSByZXN0cmljdGlvbnMsIHNpbmNlCisgICAgICAgICAgICAjIERlY2ltYWwgYmVoYXZlcyBkaWZmZXJlbnRseSBmcm9tIGRlY051bWJlciBmb3IgdGhlc2UgdGVzdGNhc2VzIHNvIHRoZXNlCisgICAgICAgICAgICAjIHRlc3RjYXNlcyB3b3VsZCBvdGhlcndpc2UgZmFpbC4KKyAgICAgICAgICAgICdleHB4OTAxJywKKyAgICAgICAgICAgICdleHB4OTAyJywKKyAgICAgICAgICAgICdleHB4OTAzJywKKyAgICAgICAgICAgICdleHB4OTA1JywKKyAgICAgICAgICAgICdsbng5MDEnLAorICAgICAgICAgICAgJ2xueDkwMicsCisgICAgICAgICAgICAnbG54OTAzJywKKyAgICAgICAgICAgICdsbng5MDUnLAorICAgICAgICAgICAgJ2xvZ3g5MDEnLAorICAgICAgICAgICAgJ2xvZ3g5MDInLAorICAgICAgICAgICAgJ2xvZ3g5MDMnLAorICAgICAgICAgICAgJ2xvZ3g5MDUnLAorICAgICAgICAgICAgJ3Bvd3gxMTgzJywKKyAgICAgICAgICAgICdwb3d4MTE4NCcsCisgICAgICAgICAgICAncG93eDQwMDEnLAorICAgICAgICAgICAgJ3Bvd3g0MDAyJywKKyAgICAgICAgICAgICdwb3d4NDAwMycsCisgICAgICAgICAgICAncG93eDQwMDUnLAorICAgICAgICAgICAgJ3Bvd3g0MDA4JywKKyAgICAgICAgICAgICdwb3d4NDAxMCcsCisgICAgICAgICAgICAncG93eDQwMTInLAorICAgICAgICAgICAgJ3Bvd3g0MDE0JywKKyAgICAgICAgICAgIF0pCisKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAjIHN0YXR1cyBoYXMgYWRkaXRpb25hbCBTdWJub3JtYWwsIFVuZGVyZmxvdworICAgICAgICAgICAgc2VsZi5za2lwcGVkX3Rlc3RfaWRzLmFkZCgncHdzeDgwMycpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd3N4ODA1JykKKyAgICAgICAgICAgICMgQ29ycmVjdCByb3VuZGluZyAoc2tpcHBlZCBmb3IgZGVjTnVtYmVyLCB0b28pCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwb3d4NDMwMicpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwb3d4NDMwMycpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwb3d4NDM0MicpCisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwb3d4NDM0MycpCisgICAgICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU3MDQ5CisgICAgICAgICAgICBzZWxmLnNraXBwZWRfdGVzdF9pZHMuYWRkKCdwd214MzI1JykKKyAgICAgICAgICAgIHNlbGYuc2tpcHBlZF90ZXN0X2lkcy5hZGQoJ3B3bXgzMjYnKQorCisgICAgICAgICMgTWFwIHRlc3QgZGlyZWN0aXZlcyB0byBzZXR0ZXIgZnVuY3Rpb25zLgogICAgICAgICBzZWxmLkNoYW5nZURpY3QgPSB7J3ByZWNpc2lvbicgOiBzZWxmLmNoYW5nZV9wcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kaW5nJyA6IHNlbGYuY2hhbmdlX3JvdW5kaW5nX21ldGhvZCwKLSAgICAgICAgICAgICAgICAgICAgICAnbWF4ZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWF4X2V4cG9uZW50LAotICAgICAgICAgICAgICAgICAgICAgICdtaW5leHBvbmVudCcgOiBzZWxmLmNoYW5nZV9taW5fZXhwb25lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgJ2NsYW1wJyA6IHNlbGYuY2hhbmdlX2NsYW1wfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JvdW5kaW5nJyA6IHNlbGYuY2hhbmdlX3JvdW5kaW5nX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhleHBvbmVudCcgOiBzZWxmLmNoYW5nZV9tYXhfZXhwb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWluZXhwb25lbnQnIDogc2VsZi5jaGFuZ2VfbWluX2V4cG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsYW1wJyA6IHNlbGYuY2hhbmdlX2NsYW1wfQorCisgICAgICAgICMgTmFtZSBhZGFwdGVyIHRvIGJlIGFibGUgdG8gY2hhbmdlIHRoZSBEZWNpbWFsIGFuZCBDb250ZXh0CisgICAgICAgICMgaW50ZXJmYWNlIHdpdGhvdXQgY2hhbmdpbmcgdGhlIHRlc3QgZmlsZXMgZnJvbSBDb3dsaXNoYXcuCisgICAgICAgIHNlbGYuTmFtZUFkYXB0ZXIgPSB7J2FuZCc6J2xvZ2ljYWxfYW5kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBwbHknOidfYXBwbHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzcyc6J251bWJlcl9jbGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmVzaWcnOidjb21wYXJlX3NpZ25hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBhcmV0b3RhbCc6J2NvbXBhcmVfdG90YWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb21wYXJldG90bWFnJzonY29tcGFyZV90b3RhbF9tYWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb3B5JzonY29weV9kZWNpbWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weWFicyc6J2NvcHlfYWJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weW5lZ2F0ZSc6J2NvcHlfbmVnYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29weXNpZ24nOidjb3B5X3NpZ24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXZpZGVpbnQnOidkaXZpZGVfaW50JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52ZXJ0JzonbG9naWNhbF9pbnZlcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc2Nhbm9uaWNhbCc6J2lzX2Nhbm9uaWNhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzZmluaXRlJzonaXNfZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNpbmZpbml0ZSc6J2lzX2luZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNuYW4nOidpc19uYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc25vcm1hbCc6J2lzX25vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzcW5hbic6J2lzX3FuYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3NpZ25lZCc6J2lzX3NpZ25lZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzc25hbic6J2lzX3NuYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc3N1Ym5vcm1hbCc6J2lzX3N1Ym5vcm1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzemVybyc6J2lzX3plcm8nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhtYWcnOidtYXhfbWFnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlubWFnJzonbWluX21hZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25leHRtaW51cyc6J25leHRfbWludXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICduZXh0cGx1cyc6J25leHRfcGx1cycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25leHR0b3dhcmQnOiduZXh0X3Rvd2FyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29yJzonbG9naWNhbF9vcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZHVjZSc6J25vcm1hbGl6ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbWFpbmRlcm5lYXInOidyZW1haW5kZXJfbmVhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbWVxdWFudHVtJzonc2FtZV9xdWFudHVtJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3F1YXJlcm9vdCc6J3NxcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2VuZyc6J3RvX2VuZ19zdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2ludGVncmFsJzondG9faW50ZWdyYWxfdmFsdWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b2ludGVncmFseCc6J3RvX2ludGVncmFsX2V4YWN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9zY2knOid0b19zY2lfc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAneG9yJzonbG9naWNhbF94b3InfQorCisgICAgICAgICMgTWFwIHRlc3QtY2FzZSBuYW1lcyB0byByb3VuZGluZ3MuCisgICAgICAgIHNlbGYuUm91bmRpbmdEaWN0ID0geydjZWlsaW5nJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9DRUlMSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG93bicgOiBzZWxmLmRlY2ltYWwuUk9VTkRfRE9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zsb29yJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9GTE9PUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hhbGZfZG93bicgOiBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFsZl9ldmVuJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX0VWRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWxmX3VwJyA6IHNlbGYuZGVjaW1hbC5ST1VORF9IQUxGX1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXAnIDogc2VsZi5kZWNpbWFsLlJPVU5EX1VQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMDV1cCcgOiBzZWxmLmRlY2ltYWwuUk9VTkRfMDVVUH0KKworICAgICAgICAjIE1hcCB0aGUgdGVzdCBjYXNlcycgZXJyb3IgbmFtZXMgdG8gdGhlIGFjdHVhbCBlcnJvcnMuCisgICAgICAgIHNlbGYuRXJyb3JOYW1lcyA9IHsnY2xhbXBlZCcgOiBzZWxmLmRlY2ltYWwuQ2xhbXBlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uX3N5bnRheCcgOiBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXZpc2lvbl9ieV96ZXJvJyA6IHNlbGYuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXZpc2lvbl9pbXBvc3NpYmxlJyA6IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpdmlzaW9uX3VuZGVmaW5lZCcgOiBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmV4YWN0JyA6IHNlbGYuZGVjaW1hbC5JbmV4YWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWRfY29udGV4dCcgOiBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkX29wZXJhdGlvbicgOiBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdmVyZmxvdycgOiBzZWxmLmRlY2ltYWwuT3ZlcmZsb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAncm91bmRlZCcgOiBzZWxmLmRlY2ltYWwuUm91bmRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdWJub3JtYWwnIDogc2VsZi5kZWNpbWFsLlN1Ym5vcm1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcmZsb3cnIDogc2VsZi5kZWNpbWFsLlVuZGVyZmxvd30KKworICAgICAgICAjIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJldHVybiBUcnVlL0ZhbHNlIHJhdGhlciB0aGFuIGEKKyAgICAgICAgIyBEZWNpbWFsIGluc3RhbmNlLgorICAgICAgICBzZWxmLkxvZ2ljYWxGdW5jdGlvbnMgPSAoJ2lzX2Nhbm9uaWNhbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfZmluaXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19pbmZpbml0ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfbmFuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc19ub3JtYWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3FuYW4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzX3NpZ25lZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfc25hbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXNfc3Vibm9ybWFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc196ZXJvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1lX3F1YW50dW0nKQorCisgICAgZGVmIHJlYWRfdW5saW1pdGVkKHNlbGYsIHYsIGNvbnRleHQpOgorICAgICAgICAiIiJXb3JrIGFyb3VuZCB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIDMyLWJpdCBfZGVjaW1hbCB2ZXJzaW9uLiBUaGUKKyAgICAgICAgICAgZ3VhcmFudGVlZCBtYXhpbXVtIHZhbHVlcyBmb3IgcHJlYywgRW1heCBldGMuIGFyZSA0MjUwMDAwMDAsCisgICAgICAgICAgIGJ1dCBoaWdoZXIgdmFsdWVzIHVzdWFsbHkgd29yaywgZXhjZXB0IGZvciByYXJlIGNvcm5lciBjYXNlcy4KKyAgICAgICAgICAgSW4gcGFydGljdWxhciwgYWxsIG9mIHRoZSBJQk0gdGVzdHMgcGFzcyB3aXRoIG1heGltdW0gdmFsdWVzCisgICAgICAgICAgIG9mIDEwNzAwMDAwMDAuIiIiCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBzZWxmLmRlY2ltYWwuTUFYX0VNQVggPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5yZWFkY29udGV4dC5fdW5zYWZlX3NldHByZWMoMTA3MDAwMDAwMCkKKyAgICAgICAgICAgIHNlbGYucmVhZGNvbnRleHQuX3Vuc2FmZV9zZXRlbWF4KDEwNzAwMDAwMDApCisgICAgICAgICAgICBzZWxmLnJlYWRjb250ZXh0Ll91bnNhZmVfc2V0ZW1pbigtMTA3MDAwMDAwMCkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJlYWRjb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsLkRlY2ltYWwodiwgY29udGV4dCkKIAogICAgIGRlZiBldmFsX2ZpbGUoc2VsZiwgZmlsZSk6CiAgICAgICAgIGdsb2JhbCBza2lwX2V4cGVjdGVkCkBAIC0yMjcsNyArMjkxLDcgQEAKICAgICAgICAgICAgICAgICAjcHJpbnQgbGluZQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgdCA9IHNlbGYuZXZhbF9saW5lKGxpbmUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IERlY2ltYWxFeGNlcHRpb24gYXMgZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLmRlY2ltYWwuRGVjaW1hbEV4Y2VwdGlvbiBhcyBleGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgICNFeGNlcHRpb24gcmFpc2VkIHdoZXJlIHRoZXJlIHNob3VsZG4ndCBoYXZlIGJlZW4gb25lLgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0V4Y2VwdGlvbiAiJytleGNlcHRpb24uX19jbGFzc19fLl9fbmFtZV9fICsgJyIgcmFpc2VkIG9uIGxpbmUgJytsaW5lKQogCkBAIC0yNTQsMjMgKzMxOCwyMyBAQAogICAgIGRlZiBldmFsX2RpcmVjdGl2ZShzZWxmLCBzKToKICAgICAgICAgZnVuY3QsIHZhbHVlID0gKHguc3RyaXAoKS5sb3dlcigpIGZvciB4IGluIHMuc3BsaXQoJzonKSkKICAgICAgICAgaWYgZnVuY3QgPT0gJ3JvdW5kaW5nJzoKLSAgICAgICAgICAgIHZhbHVlID0gUm91bmRpbmdEaWN0W3ZhbHVlXQorICAgICAgICAgICAgdmFsdWUgPSBzZWxmLlJvdW5kaW5nRGljdFt2YWx1ZV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludCh2YWx1ZSkKICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBmdW5jdCA9IHNlbGYuQ2hhbmdlRGljdC5nZXQoZnVuY3QsIE5vbmZ1bmN0aW9uKQorICAgICAgICBmdW5jdCA9IHNlbGYuQ2hhbmdlRGljdC5nZXQoZnVuY3QsIChsYW1iZGEgKmFyZ3M6IE5vbmUpKQogICAgICAgICBmdW5jdCh2YWx1ZSkKIAogICAgIGRlZiBldmFsX2VxdWF0aW9uKHNlbGYsIHMpOgotICAgICAgICAjZ2xvYmFsIERFRkFVTFRfUFJFQ0lTSU9OCi0gICAgICAgICNwcmludCBERUZBVUxUX1BSRUNJU0lPTgogCiAgICAgICAgIGlmIG5vdCBURVNUX0FMTCBhbmQgcmFuZG9tLnJhbmRvbSgpIDwgMC45MDoKICAgICAgICAgICAgIHJldHVybgogCisgICAgICAgIHNlbGYuY29udGV4dC5jbGVhcl9mbGFncygpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgU2lkZXMgPSBzLnNwbGl0KCctPicpCiAgICAgICAgICAgICBMID0gU2lkZXNbMF0uc3RyaXAoKS5zcGxpdCgpCkBAIC0yODMsMjYgKzM0NywyNiBAQAogICAgICAgICAgICAgYW5zID0gTFswXQogICAgICAgICAgICAgZXhjZXB0aW9ucyA9IExbMTpdCiAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgSW5kZXhFcnJvcik6Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgICAgICByYWlzZSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgogICAgICAgICBkZWYgRml4UXVvdGVzKHZhbCk6CiAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgiJyciLCAnU2luZ2xlUXVvdGUnKS5yZXBsYWNlKCciIicsICdEb3VibGVRdW90ZScpCiAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgiJyIsICcnKS5yZXBsYWNlKCciJywgJycpCiAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgnU2luZ2xlUXVvdGUnLCAiJyIpLnJlcGxhY2UoJ0RvdWJsZVF1b3RlJywgJyInKQogICAgICAgICAgICAgcmV0dXJuIHZhbAogCi0gICAgICAgIGlmIGlkIGluIHNraXBwZWRfdGVzdF9pZHM6CisgICAgICAgIGlmIGlkIGluIHNlbGYuc2tpcHBlZF90ZXN0X2lkczoKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGZuYW1lID0gbmFtZUFkYXB0ZXIuZ2V0KGZ1bmN0LCBmdW5jdCkKKyAgICAgICAgZm5hbWUgPSBzZWxmLk5hbWVBZGFwdGVyLmdldChmdW5jdCwgZnVuY3QpCiAgICAgICAgIGlmIGZuYW1lID09ICdyZXNjYWxlJzoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBmdW5jdCA9IGdldGF0dHIoc2VsZi5jb250ZXh0LCBmbmFtZSkKICAgICAgICAgdmFscyA9IFtdCiAgICAgICAgIGNvbmdsb21lcmF0ZSA9ICcnCiAgICAgICAgIHF1b3RlID0gMAotICAgICAgICB0aGVpcmV4Y2VwdGlvbnMgPSBbRXJyb3JOYW1lc1t4Lmxvd2VyKCldIGZvciB4IGluIGV4Y2VwdGlvbnNdCisgICAgICAgIHRoZWlyZXhjZXB0aW9ucyA9IFtzZWxmLkVycm9yTmFtZXNbeC5sb3dlcigpXSBmb3IgeCBpbiBleGNlcHRpb25zXQogCi0gICAgICAgIGZvciBleGNlcHRpb24gaW4gU2lnbmFsczoKKyAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiBTaWduYWxzW3NlbGYuZGVjaW1hbF06CiAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXhjZXB0aW9uXSA9IDEgI0NhdGNoIHRoZXNlIGJ1Z3MuLi4KICAgICAgICAgZm9yIGV4Y2VwdGlvbiBpbiB0aGVpcmV4Y2VwdGlvbnM6CiAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXhjZXB0aW9uXSA9IDAKQEAgLTMyNCw3ICszODgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0KHNlbGYuY29udGV4dC5jcmVhdGVfZGVjaW1hbCh2KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFscyBhcyBlOgorICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBhcyBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzIHdoZW4gJXMgZGlzYWJsZWQiICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZSwgcywgZXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTMzMiw3ICszOTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LnRyYXBzW2Vycm9yXSA9IDAKICAgICAgICAgICAgICAgICB2ID0gc2VsZi5jb250ZXh0LmNyZWF0ZV9kZWNpbWFsKHYpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHYgPSBEZWNpbWFsKHYsIHNlbGYuY29udGV4dCkKKyAgICAgICAgICAgICAgICB2ID0gc2VsZi5yZWFkX3VubGltaXRlZCh2LCBzZWxmLmNvbnRleHQpCiAgICAgICAgICAgICB2YWxzLmFwcGVuZCh2KQogCiAgICAgICAgIGFucyA9IEZpeFF1b3RlcyhhbnMpCkBAIC0zNDQsNyArNDA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZnVuY3QoKnZhbHMpCiAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZXhjZXB0IFNpZ25hbHMgYXMgZToKKyAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzIHdoZW4gJXMgZGlzYWJsZWQiICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGUsIHMsIGVycm9yKSkKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzUyLDE0ICs0MTYsMTQgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXJyb3JdID0gMAogCiAgICAgICAgICAgICAjIGFzIGFib3ZlLCBidXQgYWRkIHRyYXBzIGN1bXVsYXRpdmVseSwgdG8gY2hlY2sgcHJlY2VkZW5jZQotICAgICAgICAgICAgb3JkZXJlZF9lcnJvcnMgPSBbZSBmb3IgZSBpbiBPcmRlcmVkU2lnbmFscyBpZiBlIGluIHRoZWlyZXhjZXB0aW9uc10KKyAgICAgICAgICAgIG9yZGVyZWRfZXJyb3JzID0gW2UgZm9yIGUgaW4gT3JkZXJlZFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBpZiBlIGluIHRoZWlyZXhjZXB0aW9uc10KICAgICAgICAgICAgIGZvciBlcnJvciBpbiBvcmRlcmVkX2Vycm9yczoKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQudHJhcHNbZXJyb3JdID0gMQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgZnVuY3QoKnZhbHMpCiAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZXhjZXB0IFNpZ25hbHMgYXMgZToKKyAgICAgICAgICAgICAgICBleGNlcHQgU2lnbmFsc1tzZWxmLmRlY2ltYWxdIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiUmFpc2VkICVzIGluICVzOyBleHBlY3RlZCAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGUoZSksIHMsIGVycm9yKSkKICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzczLDU0ICs0MzcsNjkgQEAKICAgICAgICAgICAgIHByaW50KCItLSIsIHNlbGYuY29udGV4dCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVzdWx0ID0gc3RyKGZ1bmN0KCp2YWxzKSkKLSAgICAgICAgICAgIGlmIGZuYW1lIGluIExPR0lDQUxfRlVOQ1RJT05TOgorICAgICAgICAgICAgaWYgZm5hbWUgaW4gc2VsZi5Mb2dpY2FsRnVuY3Rpb25zOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cihpbnQoZXZhbChyZXN1bHQpKSkgIyAnVHJ1ZScsICdGYWxzZScgLT4gJzEnLCAnMCcKLSAgICAgICAgZXhjZXB0IFNpZ25hbHMgYXMgZXJyb3I6CisgICAgICAgIGV4Y2VwdCBTaWduYWxzW3NlbGYuZGVjaW1hbF0gYXMgZXJyb3I6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlJhaXNlZCAlcyBpbiAlcyIgJSAoZXJyb3IsIHMpKQogICAgICAgICBleGNlcHQ6ICNDYXRjaCBhbnkgZXJyb3IgbG9uZyBlbm91Z2ggdG8gc3RhdGUgdGhlIHRlc3QgY2FzZS4KICAgICAgICAgICAgIHByaW50KCJFUlJPUjoiLCBzKQogICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBteWV4Y2VwdGlvbnMgPSBzZWxmLmdldGV4Y2VwdGlvbnMoKQotICAgICAgICBzZWxmLmNvbnRleHQuY2xlYXJfZmxhZ3MoKQogCiAgICAgICAgIG15ZXhjZXB0aW9ucy5zb3J0KGtleT1yZXByKQogICAgICAgICB0aGVpcmV4Y2VwdGlvbnMuc29ydChrZXk9cmVwcikKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgYW5zLAogICAgICAgICAgICAgICAgICAgICAgICAgICdJbmNvcnJlY3QgYW5zd2VyIGZvciAnICsgcyArICcgLS0gZ290ICcgKyByZXN1bHQpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWV4Y2VwdGlvbnMsIHRoZWlyZXhjZXB0aW9ucywKICAgICAgICAgICAgICAgJ0luY29ycmVjdCBmbGFncyBzZXQgaW4gJyArIHMgKyAnIC0tIGdvdCAnICsgc3RyKG15ZXhjZXB0aW9ucykpCiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIGdldGV4Y2VwdGlvbnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbZSBmb3IgZSBpbiBTaWduYWxzIGlmIHNlbGYuY29udGV4dC5mbGFnc1tlXV0KKyAgICAgICAgcmV0dXJuIFtlIGZvciBlIGluIFNpZ25hbHNbc2VsZi5kZWNpbWFsXSBpZiBzZWxmLmNvbnRleHQuZmxhZ3NbZV1dCiAKICAgICBkZWYgY2hhbmdlX3ByZWNpc2lvbihzZWxmLCBwcmVjKToKLSAgICAgICAgc2VsZi5jb250ZXh0LnByZWMgPSBwcmVjCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBzZWxmLmRlY2ltYWwuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5jb250ZXh0Ll91bnNhZmVfc2V0cHJlYyhwcmVjKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jb250ZXh0LnByZWMgPSBwcmVjCiAgICAgZGVmIGNoYW5nZV9yb3VuZGluZ19tZXRob2Qoc2VsZiwgcm91bmRpbmcpOgogICAgICAgICBzZWxmLmNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZwogICAgIGRlZiBjaGFuZ2VfbWluX2V4cG9uZW50KHNlbGYsIGV4cCk6Ci0gICAgICAgIHNlbGYuY29udGV4dC5FbWluID0gZXhwCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBzZWxmLmRlY2ltYWwuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5jb250ZXh0Ll91bnNhZmVfc2V0ZW1pbihleHApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuRW1pbiA9IGV4cAogICAgIGRlZiBjaGFuZ2VfbWF4X2V4cG9uZW50KHNlbGYsIGV4cCk6Ci0gICAgICAgIHNlbGYuY29udGV4dC5FbWF4ID0gZXhwCisgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDIGFuZCBzZWxmLmRlY2ltYWwuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5jb250ZXh0Ll91bnNhZmVfc2V0ZW1heChleHApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbnRleHQuRW1heCA9IGV4cAogICAgIGRlZiBjaGFuZ2VfY2xhbXAoc2VsZiwgY2xhbXApOgogICAgICAgICBzZWxmLmNvbnRleHQuY2xhbXAgPSBjbGFtcAogCi0KK2NsYXNzIENJQk1UZXN0Q2FzZXMoSUJNVGVzdENhc2VzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlJQk1UZXN0Q2FzZXMoSUJNVGVzdENhc2VzKToKKyAgICBkZWNpbWFsID0gUAogCiAjIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyB0ZXN0IHRoZSBiZWhhdmlvdXIgb2YgRGVjaW1hbCBhY2NvcmRpbmcgdG8gUEVQIDMyNwogCi1jbGFzcyBEZWNpbWFsRXhwbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgRXhwbGljaXQgQ29uc3RydWN0aW9uIGNhc2VzIG9mIERlY2ltYWwuJycnCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9lbXB0eShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgpLCBEZWNpbWFsKCIwIikpCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX05vbmUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX2ludChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3Bvc2l0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKDQ1KQpAQCAtNDM4LDcgKzUxNywxOCBAQAogICAgICAgICBkID0gRGVjaW1hbCgwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJzAnKQogCisgICAgICAgICMgc2luZ2xlIHdvcmQgbG9uZ3MKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMCwgMzIpOgorICAgICAgICAgICAgZm9yIHNpZ24gaW4gKC0xLCAxKToKKyAgICAgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgtNSwgNSk6CisgICAgICAgICAgICAgICAgICAgIGkgPSBzaWduICogKDIqKm4gKyB4KQorICAgICAgICAgICAgICAgICAgICBkID0gRGVjaW1hbChpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgc3RyKGkpKQorCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAogCiAgICAgICAgICNlbXB0eQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcnKSksICdOYU4nKQpAQCAtNDU4LDggKzU0OCwzNSBAQAogICAgICAgICAjbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBwZXJtaXR0ZWQKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgnMS4zRTQgXG4nKSksICcxLjNFKzQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcgIC03Ljg5JykpLCAnLTcuODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIgIDMuNDU2NzkgICIpKSwgJzMuNDU2NzknKQorCisgICAgICAgICMgdW5pY29kZSB3aGl0ZXNwYWNlCisgICAgICAgIGZvciBsZWFkIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgorICAgICAgICAgICAgZm9yIHRyYWlsIGluIFsiIiwgJyAnLCAnXHUwMGEwJywgJ1x1MjA1ZiddOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwobGVhZCArICc5LjMxMUUrMjgnICsgdHJhaWwpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc5LjMxMUUrMjgnKQorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICAjIEludmFsaWQgc3RyaW5nCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAieHl6IikKKyAgICAgICAgICAgICMgVHdvIGFyZ3VtZW50cyBtYXgKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCwgIjEyMzQiLCAieCIsICJ5IikKKworICAgICAgICAgICAgIyBzcGFjZSB3aXRoaW4gdGhlIG51bWVyaWMgcGFydAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIjFcdTAwYTAyXHUwMGEwMyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiXHUwMGEwMVx1MDBhMDJcdTAwYTAiKQorCisgICAgICAgICAgICAjIHVuaWNvZGUgd2hpdGVzcGFjZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgIlx1MDBhMCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiXHUwMGEwXHUwMGEwIikKKworICAgICAgICAgICAgIyBlbWJlZGRlZCBOVUwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxMlx1MDAwMDMiKQorCiAKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX3R1cGxlcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgI3plcm8KICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoMCwpLCAwKSApCkBAIC00NzcsNiArNTk0LDEwIEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDQpLCAtMjUpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQogCisgICAgICAgICNpbmYKKyAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoKSwgIkYiKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnSW5maW5pdHknKQorCiAgICAgICAgICN3cm9uZyBudW1iZXIgb2YgaXRlbXMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCA5LCAxKSkgKQogCkBAIC00OTEsNDUgKzYxMiw2MyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsIDksIDEpLCAnMScpICkKIAogICAgICAgICAjYmFkIGNvZWZmaWNpZW50cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgInh5eiIsIDIpICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRGVjaW1hbCwgKDEsICg0LCAzLCA0LCBOb25lLCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIC0zLCA0LCA5LCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDEwLCA0LCA5LCAxKSwgMikgKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsLCAoMSwgKDQsIDMsIDQsICdhJywgMSksIDIpICkKIAorICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fbGlzdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzAsIFswXSwgMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnMCcpCisKKyAgICAgICAgZCA9IERlY2ltYWwoWzEsIFs0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0XSwgLTI1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICctNC4zNDkxMzUzNEUtMTcnKQorCisgICAgICAgIGQgPSBEZWNpbWFsKFsxLCAoNCwgMywgNCwgOSwgMSwgMywgNSwgMywgNCksIC0yNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnLTQuMzQ5MTM1MzRFLTE3JykKKworICAgICAgICBkID0gRGVjaW1hbCgoMSwgWzQsIDMsIDQsIDksIDEsIDMsIDUsIDMsIDRdLCAtMjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihkKSwgJy00LjM0OTEzNTM0RS0xNycpCisKICAgICBkZWYgdGVzdF9leHBsaWNpdF9mcm9tX2Jvb2woc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYm9vbChEZWNpbWFsKDApKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoYm9vbChEZWNpbWFsKDEpKSwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKEZhbHNlKSwgRGVjaW1hbCgwKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKFRydWUpLCBEZWNpbWFsKDEpKQogCiAgICAgZGVmIHRlc3RfZXhwbGljaXRfZnJvbV9EZWNpbWFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjcG9zaXRpdmUKICAgICAgICAgZCA9IERlY2ltYWwoNDUpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNDUnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjdmVyeSBsYXJnZSBwb3NpdGl2ZQogICAgICAgICBkID0gRGVjaW1hbCg1MDAwMDAxMjMpCiAgICAgICAgIGUgPSBEZWNpbWFsKGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNTAwMDAwMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAKICAgICAgICAgI25lZ2F0aXZlCiAgICAgICAgIGQgPSBEZWNpbWFsKC00NSkKICAgICAgICAgZSA9IERlY2ltYWwoZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICctNDUnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgICAgICAjemVybwogICAgICAgICBkID0gRGVjaW1hbCgwKQogICAgICAgICBlID0gRGVjaW1hbChkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgJzAnKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgciA9IERlY2ltYWwoMC4xKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIERlY2ltYWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHIpLApAQCAtNTUwLDggKzY4OSwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBmbG9hdChEZWNpbWFsKHgpKSkgIyByb3VuZHRyaXAKIAogICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2NvbnRleHRfY3JlYXRlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCiAKLSAgICAgICAgbmMgPSBjb3B5LmNvcHkoZ2V0Y29udGV4dCgpKQorICAgICAgICBuYyA9IGNvcHkuY29weShzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dCgpKQogICAgICAgICBuYy5wcmVjID0gMwogCiAgICAgICAgICMgZW1wdHkKQEAgLTU5Miw3ICs3MzQsNzMgQEAKICAgICAgICAgZCA9IG5jLmNyZWF0ZV9kZWNpbWFsKHByZXZkZWMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGQpLCAnNS4wMEUrOCcpCiAKKyAgICAgICAgIyBtb3JlIGludGVnZXJzCisgICAgICAgIG5jLnByZWMgPSAyOAorICAgICAgICBuYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKworICAgICAgICBmb3IgdiBpbiBbLTIqKjYzLTEsIC0yKio2MywgLTIqKjMxLTEsIC0yKiozMSwgMCwKKyAgICAgICAgICAgICAgICAgICAyKiozMS0xLCAyKiozMSwgMioqNjMtMSwgMioqNjNdOgorICAgICAgICAgICAgZCA9IG5jLmNyZWF0ZV9kZWNpbWFsKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShkLCBEZWNpbWFsKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGQpLCB2KQorCisgICAgICAgIG5jLnByZWMgPSAzCisgICAgICAgIG5jLnRyYXBzW1JvdW5kZWRdID0gVHJ1ZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSb3VuZGVkLCBuYy5jcmVhdGVfZGVjaW1hbCwgMTIzNCkKKworICAgICAgICAjIGZyb20gc3RyaW5nCisgICAgICAgIG5jLnByZWMgPSAyOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnMEUtMDE3JykpLCAnMEUtMTcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnNDUnKSksICc0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctSW5mJykpLCAnLUluZmluaXR5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTjEyMycpKSwgJ05hTjEyMycpCisKKyAgICAgICAgIyBpbnZhbGlkIGFyZ3VtZW50cworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgInh5eiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAoMSwgInh5eiIsIC0yNSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICIxMjM0IiwgIjU2NzgiKQorCisgICAgICAgICMgdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzCisgICAgICAgIG5jLnByZWMgPSAzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIG5jLmNyZWF0ZV9kZWNpbWFsLCAnTmFOMTIzNDUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnTmFOMTIzNDUnKSkKKworICAgICAgICBuYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdOYU4xMjM0NScpKSwgJ05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICBuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKERlY2ltYWwoJ05hTjEyMzQ1JykpKSwgJ05hTicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2NvbnRleHRfY3JlYXRlX2Zyb21fZmxvYXQoc2VsZik6CisKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKKyAgICAgICAgbmMgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCisgICAgICAgIHIgPSBuYy5jcmVhdGVfZGVjaW1hbCgwLjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShyKSwgRGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksICcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ25hbicpKS5pc19xbmFuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLWluZicpKS5pc19pbmZpbml0ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnbmFuJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmMuY3JlYXRlX2RlY2ltYWwoJ05hTicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJ2luZicpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCdJbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobmMuY3JlYXRlX2RlY2ltYWwoZmxvYXQoJy1pbmYnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihuYy5jcmVhdGVfZGVjaW1hbCgnLUluZmluaXR5JykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihuYy5jcmVhdGVfZGVjaW1hbChmbG9hdCgnLTAuMCcpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKG5jLmNyZWF0ZV9kZWNpbWFsKCctMCcpKSkKKyAgICAgICAgbmMucHJlYyA9IDEwMAorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KG5jLmNyZWF0ZV9kZWNpbWFsKHgpKSkgIyByb3VuZHRyaXAKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZGlnaXRzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICB0ZXN0X3ZhbHVlcyA9IHsKICAgICAgICAgICAgICdcdWZmMTEnOiAnMScsCiAgICAgICAgICAgICAnXHUwNjYwLlx1MDY2MFx1MDY2M1x1MDY2N1x1MDY2MmUtXHUwNjYzJyA6ICcwLjAwMDAzNzInLApAQCAtNjAxLDI5ICs4MDksNDEgQEAKICAgICAgICAgZm9yIGlucHV0LCBleHBlY3RlZCBpbiB0ZXN0X3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbChpbnB1dCkpLCBleHBlY3RlZCkKIAorY2xhc3MgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdChFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUV4cGxpY2l0Q29uc3RydWN0aW9uVGVzdChFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLWNsYXNzIERlY2ltYWxJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydVbml0IHRlc3RzIGZvciBJbXBsaWNpdCBDb25zdHJ1Y3Rpb24gY2FzZXMgb2YgRGVjaW1hbC4nJycKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fTm9uZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArIE5vbmUnLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgTm9uZScsIGxvY2FscygpKQogCiAgICAgZGVmIHRlc3RfaW1wbGljaXRfZnJvbV9pbnQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICNub3JtYWwKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCg1KSArIDQ1KSwgJzUwJykKICAgICAgICAgI2V4Y2VlZGluZyBwcmVjaXNpb24KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDUpICsgMTIzNDU2Nzg5MDAwLCBEZWNpbWFsKDEyMzQ1Njc4OTAwMCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX3N0cmluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBldmFsLCAnRGVjaW1hbCg1KSArICIzIicsIGdsb2JhbHMoKSkKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAiMyInLCBsb2NhbHMoKSkKIAogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2Zyb21fZmxvYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZXZhbCwgJ0RlY2ltYWwoNSkgKyAyLjInLCBnbG9iYWxzKCkpCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV2YWwsICdEZWNpbWFsKDUpICsgMi4yJywgbG9jYWxzKCkpCiAKICAgICBkZWYgdGVzdF9pbXBsaWNpdF9mcm9tX0RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNSkgKyBEZWNpbWFsKDQ1KSwgRGVjaW1hbCg1MCkpCiAKICAgICBkZWYgdGVzdF9yb3Aoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgICMgQWxsb3cgb3RoZXIgY2xhc3NlcyB0byBiZSB0cmFpbmVkIHRvIGludGVyYWN0IHdpdGggRGVjaW1hbHMKICAgICAgICAgY2xhc3MgRToKICAgICAgICAgICAgIGRlZiBfX2Rpdm1vZF9fKHNlbGYsIG90aGVyKToKQEAgLTY3MSwxMCArODkxLDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoJ0RlY2ltYWwoMTApJyArIHN5bSArICdFKCknKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzEwJyArIHJvcCArICdzdHInKQogCitjbGFzcyBDSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0KEltcGxpY2l0Q29uc3RydWN0aW9uVGVzdCk6CisgICAgZGVjaW1hbCA9IFAKIAotY2xhc3MgRGVjaW1hbEZvcm1hdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgRm9ybWF0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgdGhlIGZvcm1hdCBmdW5jdGlvbi4nJycKICAgICBkZWYgdGVzdF9mb3JtYXR0aW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICAjIHRyaXBsZXMgZ2l2aW5nIGEgZm9ybWF0LCBhIERlY2ltYWwsIGFuZCB0aGUgZXhwZWN0ZWQgcmVzdWx0CiAgICAgICAgIHRlc3RfdmFsdWVzID0gWwogICAgICAgICAgICAgKCdlJywgJzBFLTE1JywgJzBlLTE1JyksCkBAIC03MzAsNiArOTU2LDcgQEAKICAgICAgICAgICAgICgnZycsICcwRS03JywgJzBlLTcnKSwKICAgICAgICAgICAgICgnZycsICctMEUyJywgJy0wZSsyJyksCiAgICAgICAgICAgICAoJy4wZycsICczLjE0MTU5MjY1JywgJzMnKSwgICMgMCBzaWcgZmlnIC0+IDEgc2lnIGZpZworICAgICAgICAgICAgKCcuMG4nLCAnMy4xNDE1OTI2NScsICczJyksICAjIHNhbWUgZm9yICduJwogICAgICAgICAgICAgKCcuMWcnLCAnMy4xNDE1OTI2NScsICczJyksCiAgICAgICAgICAgICAoJy4yZycsICczLjE0MTU5MjY1JywgJzMuMScpLAogICAgICAgICAgICAgKCcuNWcnLCAnMy4xNDE1OTI2NScsICczLjE0MTYnKSwKQEAgLTgxNCw1NiArMTA0MSw2MCBAQAogCiAgICAgICAgICAgICAjIGlzc3VlIDY4NTAKICAgICAgICAgICAgICgnYT0tNy4wJywgJzAuMTIzNDUnLCAnYWFhYTAuMScpLAotCi0gICAgICAgICAgICAjIElzc3VlIDcwOTQ6IEFsdGVybmF0ZSBmb3JtYXR0aW5nIChzcGVjaWZpZWQgYnkgIykKLSAgICAgICAgICAgICgnLjBlJywgJzEuMCcsICcxZSswJyksCi0gICAgICAgICAgICAoJyMuMGUnLCAnMS4wJywgJzEuZSswJyksCi0gICAgICAgICAgICAoJy4wZicsICcxLjAnLCAnMScpLAotICAgICAgICAgICAgKCcjLjBmJywgJzEuMCcsICcxLicpLAotICAgICAgICAgICAgKCdnJywgJzEuMScsICcxLjEnKSwKLSAgICAgICAgICAgICgnI2cnLCAnMS4xJywgJzEuMScpLAotICAgICAgICAgICAgKCcuMGcnLCAnMScsICcxJyksCi0gICAgICAgICAgICAoJyMuMGcnLCAnMScsICcxLicpLAotICAgICAgICAgICAgKCcuMCUnLCAnMS4wJywgJzEwMCUnKSwKLSAgICAgICAgICAgICgnIy4wJScsICcxLjAnLCAnMTAwLiUnKSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGZtdCwgZCwgcmVzdWx0IGluIHRlc3RfdmFsdWVzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoRGVjaW1hbChkKSwgZm10KSwgcmVzdWx0KQogCisgICAgICAgICMgYnl0ZXMgZm9ybWF0IGFyZ3VtZW50CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRGVjaW1hbCgxKS5fX2Zvcm1hdF9fLCBiJy0wMjAnKQorCiAgICAgZGVmIHRlc3Rfbl9mb3JtYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZyb20gbG9jYWxlIGltcG9ydCBDSEFSX01BWAogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBkZWYgbWFrZV9ncm91cGluZyhsc3QpOgorICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocih4KSBmb3IgeCBpbiBsc3RdKSBpZiBzZWxmLmRlY2ltYWwgPT0gQyBlbHNlIGxzdAorCisgICAgICAgIGRlZiBnZXRfZm10KHgsIG92ZXJyaWRlPU5vbmUsIGZtdD0nbicpOgorICAgICAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICAgICAgcmV0dXJuIERlY2ltYWwoeCkuX19mb3JtYXRfXyhmbXQsIG92ZXJyaWRlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gRGVjaW1hbCh4KS5fX2Zvcm1hdF9fKGZtdCwgX2xvY2FsZWNvbnY9b3ZlcnJpZGUpCisKICAgICAgICAgIyBTZXQgdXAgc29tZSBsb2NhbGVjb252LWxpa2UgZGljdGlvbmFyaWVzCiAgICAgICAgIGVuX1VTID0gewogICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJy4nLAotICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IFszLCAzLCAwXSwKLSAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJzogJywnCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJywnCiAgICAgICAgICAgICB9CiAKICAgICAgICAgZnJfRlIgPSB7CiAgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLCcsCi0gICAgICAgICAgICAnZ3JvdXBpbmcnIDogW0NIQVJfTUFYXSwKKyAgICAgICAgICAgICdncm91cGluZycgOiBtYWtlX2dyb3VwaW5nKFtDSEFSX01BWF0pLAogICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJycKICAgICAgICAgICAgIH0KIAogICAgICAgICBydV9SVSA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcsJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMywgMywgMF0sCisgICAgICAgICAgICAnZ3JvdXBpbmcnOiBtYWtlX2dyb3VwaW5nKFszLCAzLCAwXSksCiAgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnICcKICAgICAgICAgICAgIH0KIAogICAgICAgICBjcmF6eSA9IHsKICAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICcmJywKLSAgICAgICAgICAgICdncm91cGluZycgOiBbMSwgNCwgMiwgQ0hBUl9NQVhdLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMSwgNCwgMiwgQ0hBUl9NQVhdKSwKICAgICAgICAgICAgICd0aG91c2FuZHNfc2VwJyA6ICctJwogICAgICAgICAgICAgfQogCi0KLSAgICAgICAgZGVmIGdldF9mbXQoeCwgbG9jYWxlLCBmbXQ9J24nKToKLSAgICAgICAgICAgIHJldHVybiBEZWNpbWFsLl9fZm9ybWF0X18oRGVjaW1hbCh4KSwgZm10LCBfbG9jYWxlY29udj1sb2NhbGUpCisgICAgICAgIGRvdHNlcF93aWRlID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogYidceGMyXHhiZicuZGVjb2RlKCd1dGYtOCcpLAorICAgICAgICAgICAgJ2dyb3VwaW5nJzogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogYidceGMyXHhiNCcuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICB9CiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJzEyLjcnKSwgZW5fVVMpLCAnMTIuNycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdChEZWNpbWFsKCcxMi43JyksIGZyX0ZSKSwgJzEyLDcnKQpAQCAtOTAyLDExICsxMTMzLDM0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X2ZtdCgxMjM0NTYsIGNyYXp5LCAnMDEybicpLCAnMDAtMDEtMjM0NS02JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KDEyMzQ1NiwgY3JhenksICcwMTNuJyksICcwMDAtMDEtMjM0NS02JykKIAorICAgICAgICAjIHdpZGUgY2hhciBzZXBhcmF0b3IgYW5kIGRlY2ltYWwgcG9pbnQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfZm10KERlY2ltYWwoJy0xLjUnKSwgZG90c2VwX3dpZGUsICcwMjBuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJy0wXHUwMGI0MDAwXHUwMGI0MDAwXHUwMGI0MDAwXHUwMGI0MDAxXHUwMGJmNScpCiAKLWNsYXNzIERlY2ltYWxBcml0aG1ldGljT3BlcmF0b3JzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJ3BzX0FGJykKKyAgICBkZWYgdGVzdF93aWRlX2NoYXJfc2VwYXJhdG9yX2RlY2ltYWxfcG9pbnQoc2VsZik6CisgICAgICAgICMgbG9jYWxlIHdpdGggd2lkZSBjaGFyIHNlcGFyYXRvciBhbmQgZGVjaW1hbCBwb2ludAorICAgICAgICBpbXBvcnQgbG9jYWxlCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGRlY2ltYWxfcG9pbnQgPSBsb2NhbGUubG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KKyAgICAgICAgdGhvdXNhbmRzX3NlcCA9IGxvY2FsZS5sb2NhbGVjb252KClbJ3Rob3VzYW5kc19zZXAnXQorICAgICAgICBpZiBkZWNpbWFsX3BvaW50ICE9ICdcdTA2NmInIG9yIHRob3VzYW5kc19zZXAgIT0gJ1x1MDY2Yyc6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdChEZWNpbWFsKCcxMDAwMDAwMDAuMTIzJyksICduJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEwMFx1MDY2YzAwMFx1MDY2YzAwMFx1MDY2YjEyMycpCisKK2NsYXNzIENGb3JtYXRUZXN0KEZvcm1hdFRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUZvcm1hdFRlc3QoRm9ybWF0VGVzdCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICcnJ1VuaXQgdGVzdHMgZm9yIGFsbCBhcml0aG1ldGljIG9wZXJhdG9ycywgYmluYXJ5IGFuZCB1bmFyeS4nJycKIAogICAgIGRlZiB0ZXN0X2FkZGl0aW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJy0xMS4xJykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyMi4yJykKQEAgLTkzNCw2ICsxMTg4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMTYuMScpKQogCiAgICAgZGVmIHRlc3Rfc3VidHJhY3Rpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTExLjEnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzIyLjInKQpAQCAtOTYxLDYgKzEyMTYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCctMzguMycpKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGljYXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzMnKQpAQCAtOTg4LDYgKzEyNDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCctNzUnKSkKIAogICAgIGRlZiB0ZXN0X2RpdmlzaW9uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJy01JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwMTUsNiArMTI3Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJy0wLjYyNScpKQogCiAgICAgZGVmIHRlc3RfZmxvb3JfZGl2aXNpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNScpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMicpCkBAIC0xMDQyLDYgKzEzMDAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQxLCBEZWNpbWFsKCcxJykpCiAKICAgICBkZWYgdGVzdF9wb3dlcmluZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTEwNjksNiArMTMyOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEsIERlY2ltYWwoJzM5MDYyNScpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICBkMSA9IERlY2ltYWwoJzUnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzInKQpAQCAtMTA5Niw2ICsxMzU2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMSwgRGVjaW1hbCgnMScpKQogCiAgICAgZGVmIHRlc3RfZmxvb3JfZGl2X21vZHVsZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCc1JykKICAgICAgICAgZDIgPSBEZWNpbWFsKCcyJykKQEAgLTExMjIsNiArMTM4Myw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShxKSwgdHlwZShkMSkpCiAKICAgICBkZWYgdGVzdF91bmFyeV9vcGVyYXRvcnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoK0RlY2ltYWwoNDUpLCBEZWNpbWFsKCs0NSkpICAgICAgICAgICAjICArCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLURlY2ltYWwoNDUpLCBEZWNpbWFsKC00NSkpICAgICAgICAgICAjICAtCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWJzKERlY2ltYWwoNDUpKSwgYWJzKERlY2ltYWwoLTQ1KSkpICAjIGFicwpAQCAtMTEzNCw2ICsxMzk3LDkgQEAKIAogICAgICAgICAjIGVxdWFsaXR5IGNvbXBhcmlzb25zICg9PSwgIT0pIGludm9sdmluZyBvbmx5IHF1aWV0IG5hbnMKICAgICAgICAgIyBkb24ndCBzaWduYWwsIGJ1dCByZXR1cm4gRmFsc2Ugb3IgVHJ1ZSByZXNwZWN0aXZlbHkuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAogCiAgICAgICAgIG4gPSBEZWNpbWFsKCdOYU4nKQogICAgICAgICBzID0gRGVjaW1hbCgnc05hTicpCkBAIC0xMTc5LDUzICsxNDQ1LDEyNCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBvcCwgeCwgeSkKIAogICAgIGRlZiB0ZXN0X2NvcHlfc2lnbihzZWxmKToKLSAgICAgICAgZCA9IERlY2ltYWwoMSkuY29weV9zaWduKERlY2ltYWwoLTIpKQorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAorICAgICAgICBkID0gRGVjaW1hbCgxKS5jb3B5X3NpZ24oRGVjaW1hbCgtMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxKS5jb3B5X3NpZ24oLTIpLCBkKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuY29weV9zaWduLCAnLTInKQogCitjbGFzcyBDQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QoQXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0KToKKyAgICBkZWNpbWFsID0gUAorCiAjIFRoZSBmb2xsb3dpbmcgYXJlIHR3byBmdW5jdGlvbnMgdXNlZCB0byB0ZXN0IHRocmVhZGluZyBpbiB0aGUgbmV4dCBjbGFzcwogCiBkZWYgdGhmdW5jMShjbHMpOgorICAgIERlY2ltYWwgPSBjbHMuZGVjaW1hbC5EZWNpbWFsCisgICAgSW52YWxpZE9wZXJhdGlvbiA9IGNscy5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICBEaXZpc2lvbkJ5WmVybyA9IGNscy5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgT3ZlcmZsb3cgPSBjbHMuZGVjaW1hbC5PdmVyZmxvdworICAgIFVuZGVyZmxvdyA9IGNscy5kZWNpbWFsLlVuZGVyZmxvdworICAgIEluZXhhY3QgPSBjbHMuZGVjaW1hbC5JbmV4YWN0CisgICAgZ2V0Y29udGV4dCA9IGNscy5kZWNpbWFsLmdldGNvbnRleHQKKyAgICBsb2NhbGNvbnRleHQgPSBjbHMuZGVjaW1hbC5sb2NhbGNvbnRleHQKKwogICAgIGQxID0gRGVjaW1hbCgxKQogICAgIGQzID0gRGVjaW1hbCgzKQogICAgIHRlc3QxID0gZDEvZDMKLSAgICBjbHMuc3luY2hyby53YWl0KCkKLSAgICB0ZXN0MiA9IGQxL2QzCi0gICAgY2xzLmZpbmlzaDEuc2V0KCkKIAotICAgIGNscy5hc3NlcnRFcXVhbCh0ZXN0MSwgRGVjaW1hbCgnMC4zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuZmluaXNoMS5zZXQoKQorICAgIGNscy5zeW5jaHJvLndhaXQoKQorCisgICAgdGVzdDIgPSBkMS9kMworICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0luZXhhY3RdKQorICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKERpdmlzaW9uQnlaZXJvLCBjMi5kaXZpZGUsIGQxLCAwKQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzM6CisgICAgICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMy5mbGFnc1tJbmV4YWN0XSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0RpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYzMuY29tcGFyZSwgZDEsIERlY2ltYWwoJ3NOYU4nKSkKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgZGVsIGMzCisgICAgICAgIGNscy5hc3NlcnRGYWxzZShjMi5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgZGVsIGMyCisKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCisgICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMycpKQorCisgICAgYzEgPSBnZXRjb250ZXh0KCkKKyAgICBjbHMuYXNzZXJ0VHJ1ZShjMS5mbGFnc1tJbmV4YWN0XSkKKyAgICBmb3Igc2lnIGluIE92ZXJmbG93LCBVbmRlcmZsb3csIERpdmlzaW9uQnlaZXJvLCBJbnZhbGlkT3BlcmF0aW9uOgorICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzEuZmxhZ3Nbc2lnXSkKICAgICByZXR1cm4KIAogZGVmIHRoZnVuYzIoY2xzKToKKyAgICBEZWNpbWFsID0gY2xzLmRlY2ltYWwuRGVjaW1hbAorICAgIEludmFsaWRPcGVyYXRpb24gPSBjbHMuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgRGl2aXNpb25CeVplcm8gPSBjbHMuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgIE92ZXJmbG93ID0gY2xzLmRlY2ltYWwuT3ZlcmZsb3cKKyAgICBVbmRlcmZsb3cgPSBjbHMuZGVjaW1hbC5VbmRlcmZsb3cKKyAgICBJbmV4YWN0ID0gY2xzLmRlY2ltYWwuSW5leGFjdAorICAgIGdldGNvbnRleHQgPSBjbHMuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgbG9jYWxjb250ZXh0ID0gY2xzLmRlY2ltYWwubG9jYWxjb250ZXh0CisKICAgICBkMSA9IERlY2ltYWwoMSkKICAgICBkMyA9IERlY2ltYWwoMykKICAgICB0ZXN0MSA9IGQxL2QzCisKICAgICB0aGlzY29udGV4dCA9IGdldGNvbnRleHQoKQogICAgIHRoaXNjb250ZXh0LnByZWMgPSAxOAogICAgIHRlc3QyID0gZDEvZDMKKworICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgIGNscy5hc3NlcnRUcnVlKGMyLmZsYWdzW0luZXhhY3RdKQorICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKE92ZXJmbG93LCBjMi5tdWx0aXBseSwgRGVjaW1hbCgnMWU0MjUwMDAwMDAnKSwgOTk5KQorICAgICAgICBjbHMuYXNzZXJ0VHJ1ZShjMi5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KHRoaXNjb250ZXh0KSBhcyBjMzoKKyAgICAgICAgICAgIGNscy5hc3NlcnRUcnVlKGMzLmZsYWdzW0luZXhhY3RdKQorICAgICAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMzLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIGMzLnRyYXBzW1VuZGVyZmxvd10gPSBUcnVlCisgICAgICAgICAgICBjbHMuYXNzZXJ0UmFpc2VzKFVuZGVyZmxvdywgYzMuZGl2aWRlLCBEZWNpbWFsKCcxZS00MjUwMDAwMDAnKSwgOTk5KQorICAgICAgICAgICAgY2xzLmFzc2VydFRydWUoYzMuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgICAgIGRlbCBjMworICAgICAgICBjbHMuYXNzZXJ0RmFsc2UoYzIuZmxhZ3NbVW5kZXJmbG93XSkKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKGMyLnRyYXBzW1VuZGVyZmxvd10pCisgICAgICAgIGRlbCBjMgorCiAgICAgY2xzLnN5bmNocm8uc2V0KCkKICAgICBjbHMuZmluaXNoMi5zZXQoKQogCi0gICAgY2xzLmFzc2VydEVxdWFsKHRlc3QxLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMnKSkKKyAgICBjbHMuYXNzZXJ0RXF1YWwodGVzdDEsIERlY2ltYWwoJzAuMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzJykpCiAgICAgY2xzLmFzc2VydEVxdWFsKHRlc3QyLCBEZWNpbWFsKCcwLjMzMzMzMzMzMzMzMzMzMzMzMycpKQorCisgICAgY2xzLmFzc2VydEZhbHNlKHRoaXNjb250ZXh0LnRyYXBzW1VuZGVyZmxvd10pCisgICAgY2xzLmFzc2VydFRydWUodGhpc2NvbnRleHQuZmxhZ3NbSW5leGFjdF0pCisgICAgZm9yIHNpZyBpbiBPdmVyZmxvdywgVW5kZXJmbG93LCBEaXZpc2lvbkJ5WmVybywgSW52YWxpZE9wZXJhdGlvbjoKKyAgICAgICAgY2xzLmFzc2VydEZhbHNlKHRoaXNjb250ZXh0LmZsYWdzW3NpZ10pCiAgICAgcmV0dXJuCiAKLQotY2xhc3MgRGVjaW1hbFVzZU9mQ29udGV4dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICcnJ1VuaXQgdGVzdHMgZm9yIFVzZSBvZiBDb250ZXh0IGNhc2VzIGluIERlY2ltYWwuJycnCi0KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCB0aHJlYWRpbmcKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHRocmVhZGluZyA9IE5vbmUKK2NsYXNzIFRocmVhZGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICcnJ1VuaXQgdGVzdHMgZm9yIHRocmVhZCBsb2NhbCBjb250ZXh0cyBpbiBEZWNpbWFsLicnJwogCiAgICAgIyBUYWtlIGNhcmUgZXhlY3V0aW5nIHRoaXMgdGVzdCBmcm9tIElETEUsIHRoZXJlJ3MgYW4gaXNzdWUgaW4gdGhyZWFkaW5nCiAgICAgIyB0aGF0IGhhbmdzIElETEUgYW5kIEkgY291bGRuJ3QgZmluZCBpdAogCiAgICAgZGVmIHRlc3RfdGhyZWFkaW5nKHNlbGYpOgotICAgICAgICAjVGVzdCB0aGUgInRocmVhZGluZyBpc29sYXRpb24iIG9mIGEgQ29udGV4dC4KKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKworICAgICAgICBpZiBzZWxmLmRlY2ltYWwgPT0gQyBhbmQgbm90IHNlbGYuZGVjaW1hbC5IQVZFX1RIUkVBRFM6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb21waWxlZCB3aXRob3V0IHRocmVhZGluZyIpCisgICAgICAgICMgVGVzdCB0aGUgInRocmVhZGluZyBpc29sYXRpb24iIG9mIGEgQ29udGV4dC4gQWxzbyB0ZXN0IGNoYW5naW5nCisgICAgICAgICMgdGhlIERlZmF1bHRDb250ZXh0LCB3aGljaCBhY3RzIGFzIGEgdGVtcGxhdGUgZm9yIHRoZSB0aHJlYWQtbG9jYWwKKyAgICAgICAgIyBjb250ZXh0cy4KKyAgICAgICAgc2F2ZV9wcmVjID0gRGVmYXVsdENvbnRleHQucHJlYworICAgICAgICBzYXZlX2VtYXggPSBEZWZhdWx0Q29udGV4dC5FbWF4CisgICAgICAgIHNhdmVfZW1pbiA9IERlZmF1bHRDb250ZXh0LkVtaW4KKyAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IDI0CisgICAgICAgIERlZmF1bHRDb250ZXh0LkVtYXggPSA0MjUwMDAwMDAKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1pbiA9IC00MjUwMDAwMDAKIAogICAgICAgICBzZWxmLnN5bmNocm8gPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICBzZWxmLmZpbmlzaDEgPSB0aHJlYWRpbmcuRXZlbnQoKQpAQCAtMTIzOSwxNyArMTU3NiwyOSBAQAogCiAgICAgICAgIHNlbGYuZmluaXNoMS53YWl0KCkKICAgICAgICAgc2VsZi5maW5pc2gyLndhaXQoKQorCisgICAgICAgIGZvciBzaWcgaW4gU2lnbmFsc1tzZWxmLmRlY2ltYWxdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEZWZhdWx0Q29udGV4dC5mbGFnc1tzaWddKQorCisgICAgICAgIERlZmF1bHRDb250ZXh0LnByZWMgPSBzYXZlX3ByZWMKKyAgICAgICAgRGVmYXVsdENvbnRleHQuRW1heCA9IHNhdmVfZW1heAorICAgICAgICBEZWZhdWx0Q29udGV4dC5FbWluID0gc2F2ZV9lbWluCiAgICAgICAgIHJldHVybgogCi0gICAgaWYgdGhyZWFkaW5nIGlzIE5vbmU6Ci0gICAgICAgIGRlbCB0ZXN0X3RocmVhZGluZworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAndGhyZWFkaW5nIHJlcXVpcmVkJykKK2NsYXNzIENUaHJlYWRpbmdUZXN0KFRocmVhZGluZ1Rlc3QpOgorICAgIGRlY2ltYWwgPSBDCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICd0aHJlYWRpbmcgcmVxdWlyZWQnKQorY2xhc3MgUHlUaHJlYWRpbmdUZXN0KFRocmVhZGluZ1Rlc3QpOgorICAgIGRlY2ltYWwgPSBQCiAKLQotY2xhc3MgRGVjaW1hbFVzYWJpbGl0eVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVXNhYmlsaXR5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgJycnVW5pdCB0ZXN0cyBmb3IgVXNhYmlsaXR5IGNhc2VzIG9mIERlY2ltYWwuJycnCiAKICAgICBkZWYgdGVzdF9jb21wYXJpc29uX29wZXJhdG9ycyhzZWxmKToKIAorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkYSA9IERlY2ltYWwoJzIzLjQyJykKICAgICAgICAgZGIgPSBEZWNpbWFsKCcyMy40MicpCiAgICAgICAgIGRjID0gRGVjaW1hbCgnNDUnKQpAQCAtMTI4Myw2ICsxNjMyLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbF9mbG9hdF9jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkYSA9IERlY2ltYWwoJzAuMjUnKQogICAgICAgICBkYiA9IERlY2ltYWwoJzMuMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkYSwgMy4wKQpAQCAtMTI5OSw3ICsxNjUwLDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMy4wLCBkYikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLjEsIERlY2ltYWwoJzAuMScpKQogCisgICAgZGVmIHRlc3RfZGVjaW1hbF9jb21wbGV4X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGRhID0gRGVjaW1hbCgnMC4yNScpCisgICAgICAgIGRiID0gRGVjaW1hbCgnMy4wJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYSwgKDEuNSswaikpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoKDEuNSswaiksIGRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhLCAoMC4yNSswaikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAuMjUrMGopLCBkYSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMy4wKzBqKSwgZGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGIsICgzLjArMGopKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZGIsICgzLjArMWopKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKCgzLjArMWopLCBkYikKKworICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbHRfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhkYi5fX2xlX18oMy4wKzBqKSwgTm90SW1wbGVtZW50ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGIuX19ndF9fKDMuMCswaiksIE5vdEltcGxlbWVudGVkKQorICAgICAgICBzZWxmLmFzc2VydElzKGRiLl9fbGVfXygzLjArMGopLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxfZnJhY3Rpb25fY29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgRCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIEYgPSBmcmFjdGlvbnNbc2VsZi5kZWNpbWFsXS5GcmFjdGlvbgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworCisgICAgICAgIGVtYXggPSBDLk1BWF9FTUFYIGlmIEMgZWxzZSA5OTk5OTk5OTkKKyAgICAgICAgZW1pbiA9IEMuTUlOX0VNSU4gaWYgQyBlbHNlIC05OTk5OTk5OTkKKyAgICAgICAgZXRpbnkgPSBDLk1JTl9FVElOWSBpZiBDIGVsc2UgLTE5OTk5OTk5OTcKKyAgICAgICAgYyA9IENvbnRleHQoRW1heD1lbWF4LCBFbWluPWVtaW4pCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYyk6CisgICAgICAgICAgICBjLnByZWMgPSBlbWF4CisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRCgwKSwgRigxLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEYoLTEsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSksIEQoMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MoRigwLDEpLCBEKCIxZSIgKyBzdHIoZXRpbnkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCItMWUiICsgc3RyKGV0aW55KSksIEYoMCwxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhGKDAsOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OSksIEQoIjFlIiArIHN0cihldGlueSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKEQoIi0xZSIgKyBzdHIoZXRpbnkpKSwgRigwLDk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMSIpLCBGKDEsMTApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGKDEsMTApLCBEKCIwLjEiKSkKKworICAgICAgICAgICAgYy5wcmVjID0gMzAwCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEQoMSkvMywgRigxLDMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChGKDEsMyksIEQoMSkvMykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoRigxMjA5ODQyMzcsIDk5OTk5OTk5OTkpLCBEKCI5ZSIgKyBzdHIoZW1heCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoRCgiOWUiICsgc3RyKGVtYXgpKSwgRigxMjA5ODQyMzcsIDk5OTk5OTk5OTkpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoRCgnaW5mJyksIEYoOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihEKCdpbmYnKSwgRigtOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCctaW5mJyksIEYoOTk5OTk5OTk5OTksMTIzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhEKCctaW5mJyksIEYoLTk5OTk5OTk5OTk5LDEyMykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQoJ25hbicpLl9fZ3RfXywgRigtOSwxMjMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhOb3RJbXBsZW1lbnRlZCwgRigtOSwxMjMpLl9fbHRfXyhEKCduYW4nKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEQoJ25hbicpLCBGKC05LDEyMykpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEYoLTksMTIzKSwgRCgnbmFuJykpCisKICAgICBkZWYgdGVzdF9jb3B5X2FuZF9kZWVwY29weV9tZXRob2RzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKwogICAgICAgICBkID0gRGVjaW1hbCgnNDMuMjQnKQogICAgICAgICBjID0gY29weS5jb3B5KGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoYyksIGlkKGQpKQpAQCAtMTMwNyw2ICsxNzIyLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZGMpLCBpZChkKSkKIAogICAgIGRlZiB0ZXN0X2hhc2hfbWV0aG9kKHNlbGYpOgorCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKICAgICAgICAgZGVmIGhhc2hpdChkKToKICAgICAgICAgICAgIGEgPSBoYXNoKGQpCiAgICAgICAgICAgICBiID0gZC5fX2hhc2hfXygpCkBAIC0xMzY3LDI0ICsxNzg2LDI3IEBACiAgICAgICAgICAgICBkID0gRGVjaW1hbChzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoaXQoZiksIGhhc2hpdChkKSkKIAotICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBoYXNoIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQotICAgICAgICAjIGN1cnJlbnQgY29udGV4dCAoaXNzdWUgIzE3NTcpCi0gICAgICAgIGMgPSBnZXRjb250ZXh0KCkKLSAgICAgICAgb2xkX3ByZWNpc2lvbiA9IGMucHJlYwotICAgICAgICB4ID0gRGVjaW1hbCgiMTIzNDU2Nzg5LjEiKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHZhbHVlIG9mIHRoZSBoYXNoIGRvZXNuJ3QgZGVwZW5kIG9uIHRoZQorICAgICAgICAgICAgIyBjdXJyZW50IGNvbnRleHQgKGlzc3VlICMxNzU3KQorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjEyMzQ1Njc4OS4xIikKIAotICAgICAgICBjLnByZWMgPSA2Ci0gICAgICAgIGgxID0gaGFzaGl0KHgpCi0gICAgICAgIGMucHJlYyA9IDEwCi0gICAgICAgIGgyID0gaGFzaGl0KHgpCi0gICAgICAgIGMucHJlYyA9IDE2Ci0gICAgICAgIGgzID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSA2CisgICAgICAgICAgICBoMSA9IGhhc2hpdCh4KQorICAgICAgICAgICAgYy5wcmVjID0gMTAKKyAgICAgICAgICAgIGgyID0gaGFzaGl0KHgpCisgICAgICAgICAgICBjLnByZWMgPSAxNgorICAgICAgICAgICAgaDMgPSBoYXNoaXQoeCkKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgxLCBoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDMpCi0gICAgICAgIGMucHJlYyA9IG9sZF9wcmVjaXNpb24KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEsIGgyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDMpCisKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgICAgICB4ID0gMTEwMCAqKiAxMjQ4CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hpdChEZWNpbWFsKHgpKSwgaGFzaGl0KHgpKQogCiAgICAgZGVmIHRlc3RfbWluX2FuZF9tYXhfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZDEgPSBEZWNpbWFsKCcxNS4zMicpCiAgICAgICAgIGQyID0gRGVjaW1hbCgnMjguNScpCkBAIC0xNDA0LDYgKzE4MjYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydElzKG1heChkMixsMSksIGQyKQogCiAgICAgZGVmIHRlc3RfYXNfbm9uemVybyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisKICAgICAgICAgI2FzIGZhbHNlCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoRGVjaW1hbCgwKSkKICAgICAgICAgI2FzIHRydWUKQEAgLTE0MTEsNiArMTgzNSw3IEBACiAKICAgICBkZWYgdGVzdF90b3N0cmluZ19tZXRob2RzKHNlbGYpOgogICAgICAgICAjVGVzdCBzdHIgYW5kIHJlcHIgbWV0aG9kcy4KKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCiAKICAgICAgICAgZCA9IERlY2ltYWwoJzE1LjMyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZCksICcxNS4zMicpICAgICAgICAgICAgICAgIyBzdHIKQEAgLTE0MTgsNiArMTg0Myw3IEBACiAKICAgICBkZWYgdGVzdF90b251bV9tZXRob2RzKHNlbGYpOgogICAgICAgICAjVGVzdCBmbG9hdCBhbmQgaW50IG1ldGhvZHMuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnNjYnKQogICAgICAgICBkMiA9IERlY2ltYWwoJzE1LjMyJykKQEAgLTE0NDAsNiArMTg2Niw3IEBACiAgICAgICAgICAgICAoJy0xMS4wJywgLTExKSwKICAgICAgICAgICAgICgnMC4wJywgMCksCiAgICAgICAgICAgICAoJy0wRTMnLCAwKSwKKyAgICAgICAgICAgICgnODk4OTEyMTE3MTIzNzk4MTI3MzYuMScsIDg5ODkxMjExNzEyMzc5ODEyNzM2KSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGQsIGkgaW4gdGVzdF9wYWlyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5mbG9vcihEZWNpbWFsKGQpKSwgaSkKQEAgLTE0NTksNiArMTg4Niw3IEBACiAgICAgICAgICAgICAoJy0xMS4wJywgLTExKSwKICAgICAgICAgICAgICgnMC4wJywgMCksCiAgICAgICAgICAgICAoJy0wRTMnLCAwKSwKKyAgICAgICAgICAgICgnODk4OTEyMTE3MTIzNzk4MTI3MzYuMScsIDg5ODkxMjExNzEyMzc5ODEyNzM3KSwKICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIGQsIGkgaW4gdGVzdF9wYWlyczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5jZWlsKERlY2ltYWwoZCkpLCBpKQpAQCAtMTUxOSwxNiArMTk0NywyMSBAQAogICAgIGRlZiB0ZXN0X25hbl90b19mbG9hdChzZWxmKToKICAgICAgICAgIyBUZXN0IGNvbnZlcnNpb25zIG9mIGRlY2ltYWwgTkFOcyB0byBmbG9hdC4KICAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1NTQ0CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogICAgICAgICBmb3IgcyBpbiAoJ25hbicsICduYW4xMjM0JywgJy1uYW4nLCAnLW5hbjI0NjgnKToKICAgICAgICAgICAgIGYgPSBmbG9hdChEZWNpbWFsKHMpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZikpCisgICAgICAgICAgICBzaWduID0gbWF0aC5jb3B5c2lnbigxLjAsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24sIC0xLjAgaWYgcy5zdGFydHN3aXRoKCctJykgZWxzZSAxLjApCiAKICAgICBkZWYgdGVzdF9zbmFuX3RvX2Zsb2F0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKICAgICAgICAgZm9yIHMgaW4gKCdzbmFuJywgJy1zbmFuJywgJ3NuYW4xMzU3JywgJy1zbmFuMTIzNCcpOgogICAgICAgICAgICAgZCA9IERlY2ltYWwocykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBkKQogCiAgICAgZGVmIHRlc3RfZXZhbF9yb3VuZF90cmlwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKIAogICAgICAgICAjd2l0aCB6ZXJvCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgMCkgKQpAQCAtMTU0Nyw2ICsxOTgwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBldmFsKHJlcHIoZCkpKQogCiAgICAgZGVmIHRlc3RfYXNfdHVwbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAogCiAgICAgICAgICN3aXRoIHplcm8KICAgICAgICAgZCA9IERlY2ltYWwoMCkKQEAgLTE1NjAsNyArMTk5NCw4IEBACiAgICAgICAgIGQgPSBEZWNpbWFsKCItNC4zNDkxMzUzNEUtMTciKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDEsICg0LCAzLCA0LCA5LCAxLCAzLCA1LCAzLCA0KSwgLTI1KSApCiAKLSAgICAgICAgI2luZgorICAgICAgICAjIFRoZSAnMCcgY29lZmZpY2llbnQgaXMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdG8gZGVjaW1hbC5weS4KKyAgICAgICAgIyBJdCBoYXMgbm8gbWVhbmluZyBpbiB0aGUgQy12ZXJzaW9uIGFuZCBpcyBpZ25vcmVkIHRoZXJlLgogICAgICAgICBkID0gRGVjaW1hbCgiSW5maW5pdHkiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykgKQogCkBAIC0xNTgwLDE0ICsyMDE1LDIyMDAgQEAKICAgICAgICAgZCA9IERlY2ltYWwoICgxLCAoKSwgJ24nKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKCksICduJykgKQogCi0gICAgICAgICNjb2VmZmljaWVudCBpbiBpbmZpbml0eSBzaG91bGQgYmUgaWdub3JlZAorICAgICAgICAjIEZvciBpbmZpbml0aWVzLCBkZWNpbWFsLnB5IGhhcyBhbHdheXMgc2lsZW50bHkgYWNjZXB0ZWQgYW55CisgICAgICAgICMgY29lZmZpY2llbnQgdHVwbGUuCisgICAgICAgIGQgPSBEZWNpbWFsKCAoMCwgKDAsKSwgJ0YnKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMCwgKDAsKSwgJ0YnKSkKICAgICAgICAgZCA9IERlY2ltYWwoICgwLCAoNCwgNSwgMywgNCksICdGJykgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuYXNfdHVwbGUoKSwgKDAsICgwLCksICdGJykpCiAgICAgICAgIGQgPSBEZWNpbWFsKCAoMSwgKDAsIDIsIDcsIDEpLCAnRicpICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmFzX3R1cGxlKCksICgxLCAoMCwpLCAnRicpKQogCi0gICAgZGVmIHRlc3RfaW1tdXRhYmlsaXR5X29wZXJhdGlvbnMoc2VsZik6CisgICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBkMSA9IE15RGVjaW1hbCgxKQorICAgICAgICBkMiA9IE15RGVjaW1hbCgyKQorICAgICAgICBkID0gZDEgKyBkMgorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisKKyAgICAgICAgZCA9IGQxLm1heChkMikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGQpLCBEZWNpbWFsKQorCisgICAgICAgIGQgPSBjb3B5LmNvcHkoZDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgTXlEZWNpbWFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGQxKQorCisgICAgICAgIGQgPSBjb3B5LmRlZXBjb3B5KGQxKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIE15RGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkMSkKKworICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICAjIENoZWNrIHJlc3VsdHMgd2hlbiBjb250ZXh0IGdpdmVuIGltcGxpY2l0bHkuICAoSXNzdWUgMjQ3OCkKKyAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKDApLnNxcnQoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGMuc3FydChEZWNpbWFsKDApKSkpCisKKyAgICBkZWYgdGVzdF9jb252ZXJzaW9uc19mcm9tX2ludChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IG1ldGhvZHMgdGFraW5nIGEgc2Vjb25kIERlY2ltYWwgYXJndW1lbnQgd2lsbAorICAgICAgICAjIGFsd2F5cyBhY2NlcHQgYW4gaW50ZWdlciBpbiBwbGFjZSBvZiBhIERlY2ltYWwuCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZShEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfc2lnbmFsKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV90b3RhbChEZWNpbWFsKDMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWxfbWFnKDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF9hbmQoMTAwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF9hbmQoRGVjaW1hbCgxMDAxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF9vcigxMDAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKERlY2ltYWwoMTAwMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfeG9yKDEwMDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfeG9yKERlY2ltYWwoMTAwMSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5tYXgoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWF4KERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heF9tYWcoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWF4X21hZyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5taW4oMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWluKERlY2ltYWwoMTIzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbl9tYWcoMTIzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWluX21hZyhEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5uZXh0X3Rvd2FyZCgxMjMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5uZXh0X3Rvd2FyZChEZWNpbWFsKDEyMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzNCkucXVhbnRpemUoMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnF1YW50aXplKERlY2ltYWwoMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKDEyMzQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNzY4KS5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEyMzQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMykucm90YXRlKDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzKS5yb3RhdGUoRGVjaW1hbCgxKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5zYW1lX3F1YW50dW0oMTAwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjM0KS5zYW1lX3F1YW50dW0oRGVjaW1hbCgxMDAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS4xMjMnKS5zY2FsZWIoLTEwMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnOS4xMjMnKS5zY2FsZWIoRGVjaW1hbCgtMTAwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0NTYpLnNoaWZ0KC0xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQ1Nikuc2hpZnQoRGVjaW1hbCgtMSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgNjcpLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKDQ1LCA2NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIERlY2ltYWwoNjcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCisKK2NsYXNzIENVc2FiaWxpdHlUZXN0KFVzYWJpbGl0eVRlc3QpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVVzYWJpbGl0eVRlc3QoVXNhYmlsaXR5VGVzdCk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgUHl0aG9uQVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWJjKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLk51bWJlcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhEZWNpbWFsLCBudW1iZXJzLlJlYWwpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRGVjaW1hbCgwKSwgbnVtYmVycy5OdW1iZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLlJlYWwpCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNhdmVkZWNpbWFsID0gc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXQorCisgICAgICAgICMgUm91bmQgdHJpcAorICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gc2VsZi5kZWNpbWFsCisgICAgICAgIGQgPSBEZWNpbWFsKCctMy4xNDE1OTAwMDAnKQorICAgICAgICBwID0gcGlja2xlLmR1bXBzKGQpCisgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBlKQorCisgICAgICAgIGlmIEM6CisgICAgICAgICAgICAjIFRlc3QgaW50ZXJjaGFuZ2VhYmlsaXR5CisgICAgICAgICAgICB4ID0gQy5EZWNpbWFsKCctMy4xMjNlODE3MjMnKQorICAgICAgICAgICAgeSA9IFAuRGVjaW1hbCgnLTMuMTIzZTgxNzIzJykKKworICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgIHN4ID0gcGlja2xlLmR1bXBzKHgpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorICAgICAgICAgICAgciA9IHBpY2tsZS5sb2FkcyhzeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBQLkRlY2ltYWwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIsIHkpCisKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBQCisgICAgICAgICAgICBzeSA9IHBpY2tsZS5kdW1wcyh5KQorICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IEMKKyAgICAgICAgICAgIHIgPSBwaWNrbGUubG9hZHMoc3kpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UociwgQy5EZWNpbWFsKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCB4KQorCisgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzYXZlZGVjaW1hbAorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgUk9VTkRfRE9XTiA9IHNlbGYuZGVjaW1hbC5ST1VORF9ET1dOCisKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKKyAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCisgICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKKyAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCisgICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKGludChkKSksIHIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCBEZWNpbWFsKCctbmFuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgRGVjaW1hbCgnc25hbicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJ2luZicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIERlY2ltYWwoJy1pbmYnKSkKKworICAgIGRlZiB0ZXN0X3RydW5jKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgUk9VTkRfRE9XTiA9IHNlbGYuZGVjaW1hbC5ST1VORF9ET1dOCisKKyAgICAgICAgZm9yIHggaW4gcmFuZ2UoLTI1MCwgMjUwKToKKyAgICAgICAgICAgIHMgPSAnJTAuMmYnICUgKHggLyAxMDAuMCkKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsgdGhlIHNhbWUgYXMgZm9yIGZsb2F0cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoRGVjaW1hbChzKSksIGludChmbG9hdChzKSkpCisgICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHRvX2ludGVncmFsIGluIHRoZSBST1VORF9ET1dOIG1vZGUKKyAgICAgICAgICAgIGQgPSBEZWNpbWFsKHMpCisgICAgICAgICAgICByID0gZC50b19pbnRlZ3JhbChST1VORF9ET1dOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKG1hdGgudHJ1bmMoZCkpLCByKQorCisgICAgZGVmIHRlc3RfZnJvbV9mbG9hdChzZWxmKToKKworICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBjbGFzcyBNeURlY2ltYWwoRGVjaW1hbCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTXlEZWNpbWFsLCBEZWNpbWFsKSkKKworICAgICAgICByID0gTXlEZWNpbWFsLmZyb21fZmxvYXQoMC4xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUociksIE15RGVjaW1hbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIociksCisgICAgICAgICAgICAgICAgJzAuMTAwMDAwMDAwMDAwMDAwMDA1NTUxMTE1MTIzMTI1NzgyNzAyMTE4MTU4MzQwNDU0MTAxNTYyNScpCisgICAgICAgIGJpZ2ludCA9IDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTXlEZWNpbWFsLmZyb21fZmxvYXQoYmlnaW50KSwgTXlEZWNpbWFsKGJpZ2ludCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpLmlzX3FuYW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkuaXNfaW5maW5pdGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpLmlzX2luZmluaXRlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCduYW4nKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdOYU4nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCdpbmYnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCdJbmZpbml0eScpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihEZWNpbWFsKCctSW5maW5pdHknKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTXlEZWNpbWFsLmZyb21fZmxvYXQsICdhYmMnKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDApOgorICAgICAgICAgICAgeCA9IHJhbmRvbS5leHBvdmFyaWF0ZSgwLjAxKSAqIChyYW5kb20ucmFuZG9tKCkgKiAyLjAgLSAxLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIGZsb2F0KE15RGVjaW1hbC5mcm9tX2Zsb2F0KHgpKSkgIyByb3VuZHRyaXAKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgUk9VTkRfRE9XTiA9IHNlbGYuZGVjaW1hbC5ST1VORF9ET1dOCisgICAgICAgIFJPVU5EX1VQID0gc2VsZi5kZWNpbWFsLlJPVU5EX1VQCisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNScpCisgICAgICAgICkKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCByb3VuZGluZz1ST1VORF9VUCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdChtYXRoLnBpKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNicpCisgICAgICAgICkKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgSW5leGFjdCwKKyAgICAgICAgICAgIGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwKKyAgICAgICAgICAgIG1hdGgucGkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KC0wLjApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnLTAnKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMS4wKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEnKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoMTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRGVjaW1hbCgnMTAnKSIpCisKKyAgICBkZWYgdGVzdF9xdWFudGl6ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgUk9VTkRfRE9XTiA9IHNlbGYuZGVjaW1hbC5ST1VORF9ET1dOCisKKyAgICAgICAgYyA9IENvbnRleHQoRW1heD05OTk5OSwgRW1pbj0tOTk5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBEZWNpbWFsKCc3LjMzNScpLnF1YW50aXplKERlY2ltYWwoJy4wMScpKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzQnKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBEZWNpbWFsKCc3LjMzNScpLnF1YW50aXplKERlY2ltYWwoJy4wMScpLCByb3VuZGluZz1ST1VORF9ET1dOKSwKKyAgICAgICAgICAgIERlY2ltYWwoJzcuMzMnKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbiwKKyAgICAgICAgICAgIERlY2ltYWwoIjEwZTk5OTk5IikucXVhbnRpemUsIERlY2ltYWwoJzFlMTAwMDAwJyksIGNvbnRleHQ9YworICAgICAgICApCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gRGVjaW1hbCgiMC44NzE4MzFlODAwIikKKyAgICAgICAgeCA9IGQucXVhbnRpemUoY29udGV4dD1jLCBleHA9RGVjaW1hbCgiMWU3OTciKSwgcm91bmRpbmc9Uk9VTkRfRE9XTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCc4LjcxRSs3OTknKSkKKworICAgIGRlZiB0ZXN0X2NvbXBsZXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHggPSBEZWNpbWFsKCI5LjgxODI3MzFlMTgxMjczIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnJlYWwsIHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5pbWFnLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguY29uanVnYXRlKCksIHgpCisKKyAgICAgICAgeCA9IERlY2ltYWwoIjEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgoeCksIGNvbXBsZXgoZmxvYXQoMSkpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCB4LCAncmVhbCcsIDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdpbWFnJywgMTAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgeCwgJ2Nvbmp1Z2F0ZScsIDEwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHgsICdfX2NvbXBsZXhfXycsIDEwMCkKKworICAgIGRlZiB0ZXN0X25hbWVkX3BhcmFtZXRlcnMoc2VsZik6CisgICAgICAgIEQgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgT3ZlcmZsb3cgPSBzZWxmLmRlY2ltYWwuT3ZlcmZsb3cKKworICAgICAgICB4YyA9IENvbnRleHQoKQorICAgICAgICB4Yy5wcmVjID0gMQorICAgICAgICB4Yy5FbWF4ID0gMQorICAgICAgICB4Yy5FbWluID0gLTEKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDksIHhjKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCg5LCBjb250ZXh0PXhjKSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRChjb250ZXh0PXhjLCB2YWx1ZT05KSwgOSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRChjb250ZXh0PXhjKSwgMCkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIEQsICJ4eXoiLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICAgICB4Yy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoMikuZXhwKGNvbnRleHQ9eGMpLCA3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIEQoOCkuZXhwLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tPdmVyZmxvd10pCisKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgyKS5sbihjb250ZXh0PXhjKSwgRCgnMC43JykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEKC0xKS5sbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4Yy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDApLmxvZzEwKGNvbnRleHQ9eGMpLCBEKCctaW5mJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoLTEpLm5leHRfbWludXMoY29udGV4dD14YyksIC0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKC0xKS5uZXh0X3BsdXMoY29udGV4dD14YyksIEQoJy0wLjknKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS43MyIpLm5vcm1hbGl6ZShjb250ZXh0PXhjKSwgRCgnMUUrMScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCI5OTk5IikudG9faW50ZWdyYWwoY29udGV4dD14YyksIDk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIi0yMDAwIikudG9faW50ZWdyYWxfZXhhY3QoY29udGV4dD14YyksIC0yMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIxMjMiKS50b19pbnRlZ3JhbF92YWx1ZShjb250ZXh0PXhjKSwgMTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjA2MjUiKS5zcXJ0KGNvbnRleHQ9eGMpLCBEKCcwLjInKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjA2MjUiKS5jb21wYXJlKGNvbnRleHQ9eGMsIG90aGVyPTMpLCAtMSkKKyAgICAgICAgICAgIHhjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCIwIikuY29tcGFyZV9zaWduYWwsIEQoJ25hbicpLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjAxIikubWF4KEQoJzAuMDEwMScpLCBjb250ZXh0PXhjKSwgRCgnMC4wJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDEiKS5tYXgoRCgnMC4wMTAxJyksIGNvbnRleHQ9eGMpLCBEKCcwLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4yIikubWF4X21hZyhEKCctMC4zJyksIGNvbnRleHQ9eGMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEKCctMC4zJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjAuMDIiKS5taW4oRCgnLTAuMDMnKSwgY29udGV4dD14YyksIEQoJy0wLjAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMC4wMiIpLm1pbl9tYWcoRCgnLTAuMDMnKSwgY29udGV4dD14YyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJzAuMCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCIwLjIiKS5uZXh0X3Rvd2FyZChEKCctMScpLCBjb250ZXh0PXhjKSwgRCgnMC4xJykpCisgICAgICAgICAgICB4Yy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgiMC4yIikucXVhbnRpemUsIEQoJzFlMTAnKSwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4Yy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiOS45OSIpLnJlbWFpbmRlcl9uZWFyKEQoJzEuNScpLCBjb250ZXh0PXhjKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRCgnLTAuNScpKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoIjkuOSIpLmZtYSh0aGlyZD1EKCcwLjknKSwgY29udGV4dD14Yywgb3RoZXI9NyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJzdFKzEnKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX2Nhbm9uaWNhbCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19maW5pdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfaW5maW5pdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfbmFuLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDEpLmlzX3FuYW4sIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfc25hbiwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5pc19zaWduZWQsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkuaXNfemVybywgY29udGV4dD14YykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShEKCIwLjAxIikuaXNfbm9ybWFsKGNvbnRleHQ9eGMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEQoIjAuMDEiKS5pc19zdWJub3JtYWwoY29udGV4dD14YykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5hZGp1c3RlZCwgY29udGV4dD14YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5jb25qdWdhdGUsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoMSkucmFkaXgsIGNvbnRleHQ9eGMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgtMTExKS5sb2diKGNvbnRleHQ9eGMpLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDApLmxvZ2ljYWxfaW52ZXJ0KGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcwLjAxJykubnVtYmVyX2NsYXNzKGNvbnRleHQ9eGMpLCAnK1N1Ym5vcm1hbCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzAuMjEnKS50b19lbmdfc3RyaW5nKGNvbnRleHQ9eGMpLCAnMC4yMScpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMTEnKS5sb2dpY2FsX2FuZChEKCcxMCcpLCBjb250ZXh0PXhjKSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMTEnKS5sb2dpY2FsX29yKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcwMScpLmxvZ2ljYWxfeG9yKEQoJzEwJyksIGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCcyMycpLnJvdGF0ZSgxLCBjb250ZXh0PXhjKSwgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgnMjMnKS5yb3RhdGUoMSwgY29udGV4dD14YyksIDMpCisgICAgICAgICAgICB4Yy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQoJzIzJykuc2NhbGViLCAxLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHhjLmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQoJzIzJykuc2hpZnQoLTEsIGNvbnRleHQ9eGMpLCAwKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQuZnJvbV9mbG9hdCwgMS4xLCBjb250ZXh0PXhjKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKDApLmFzX3R1cGxlLCBjb250ZXh0PXhjKQorCisgICAgICAgICAgICBpZiAoc2VsZi5kZWNpbWFsID09IEMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRCgxKS5jYW5vbmljYWwsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKCItMSIpLmNvcHlfYWJzKGNvbnRleHQ9eGMpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgiMSIpLmNvcHlfbmVnYXRlKGNvbnRleHQ9eGMpLCAtMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDEpLmNhbm9uaWNhbChjb250ZXh0PXhjKSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEQoIi0xIikuY29weV9hYnMsIGNvbnRleHQ9eGMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEKCItMSIpLmNvcHlfbmVnYXRlLCBjb250ZXh0PXhjKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeShzZWxmKToKKworICAgICAgICBkZWNpbWFsID0gc2VsZi5kZWNpbWFsCisgICAgICAgIERlY2ltYWxFeGNlcHRpb24gPSBkZWNpbWFsLkRlY2ltYWxFeGNlcHRpb24KKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IGRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IGRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBkZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gZGVjaW1hbC5PdmVyZmxvdworICAgICAgICBVbmRlcmZsb3cgPSBkZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBTdWJub3JtYWwgPSBkZWNpbWFsLlN1Ym5vcm1hbAorICAgICAgICBJbmV4YWN0ID0gZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBkZWNpbWFsLlJvdW5kZWQKKyAgICAgICAgQ2xhbXBlZCA9IGRlY2ltYWwuQ2xhbXBlZAorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERlY2ltYWxFeGNlcHRpb24sIEFyaXRobWV0aWNFcnJvcikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEZsb2F0T3BlcmF0aW9uLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRmxvYXRPcGVyYXRpb24sIFR5cGVFcnJvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERpdmlzaW9uQnlaZXJvLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGl2aXNpb25CeVplcm8sIFplcm9EaXZpc2lvbkVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoT3ZlcmZsb3csIFJvdW5kZWQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhPdmVyZmxvdywgSW5leGFjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE92ZXJmbG93LCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5kZXJmbG93LCBJbmV4YWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5kZXJmbG93LCBSb3VuZGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoVW5kZXJmbG93LCBTdWJub3JtYWwpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhVbmRlcmZsb3csIERlY2ltYWxFeGNlcHRpb24pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFN1Ym5vcm1hbCwgRGVjaW1hbEV4Y2VwdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEluZXhhY3QsIERlY2ltYWxFeGNlcHRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhSb3VuZGVkLCBEZWNpbWFsRXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoQ2xhbXBlZCwgRGVjaW1hbEV4Y2VwdGlvbikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZGVjaW1hbC5Db252ZXJzaW9uU3ludGF4LCBJbnZhbGlkT3BlcmF0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZGVjaW1hbC5EaXZpc2lvbkltcG9zc2libGUsIEludmFsaWRPcGVyYXRpb24pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkRpdmlzaW9uVW5kZWZpbmVkLCBJbnZhbGlkT3BlcmF0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZGVjaW1hbC5EaXZpc2lvblVuZGVmaW5lZCwgWmVyb0RpdmlzaW9uRXJyb3IpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhkZWNpbWFsLkludmFsaWRDb250ZXh0LCBJbnZhbGlkT3BlcmF0aW9uKSkKKworY2xhc3MgQ1B5dGhvbkFQSXRlc3RzKFB5dGhvbkFQSXRlc3RzKToKKyAgICBkZWNpbWFsID0gQworY2xhc3MgUHlQeXRob25BUEl0ZXN0cyhQeXRob25BUEl0ZXN0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dEFQSXRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKworICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBzYXZlZGVjaW1hbCA9IHN5cy5tb2R1bGVzWydkZWNpbWFsJ10KKworICAgICAgICAjIFJvdW5kIHRyaXAKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNlbGYuZGVjaW1hbAorICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCBlLnByZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCBlLkVtaW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCBlLkVtYXgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3VuZGluZywgZS5yb3VuZGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNhcGl0YWxzLCBlLmNhcGl0YWxzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2xhbXAsIGUuY2xhbXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgZS5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRyYXBzLCBlLnRyYXBzKQorCisgICAgICAgICMgVGVzdCBpbnRlcmNoYW5nZWFiaWxpdHkKKyAgICAgICAgY29tYmluYXRpb25zID0gWyhDLCBQKSwgKFAsIEMpXSBpZiBDIGVsc2UgWyhQLCBQKV0KKyAgICAgICAgZm9yIGR1bXBlciwgbG9hZGVyIGluIGNvbWJpbmF0aW9uczoKKyAgICAgICAgICAgIGZvciByaSwgXyBpbiBlbnVtZXJhdGUoUm91bmRpbmdNb2Rlc1tkdW1wZXJdKToKKyAgICAgICAgICAgICAgICBmb3IgZmksIF8gaW4gZW51bWVyYXRlKE9yZGVyZWRTaWduYWxzW2R1bXBlcl0pOgorICAgICAgICAgICAgICAgICAgICBmb3IgdGksIF8gaW4gZW51bWVyYXRlKE9yZGVyZWRTaWduYWxzW2R1bXBlcl0pOgorCisgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gcmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApCisgICAgICAgICAgICAgICAgICAgICAgICBlbWluID0gcmFuZG9tLnJhbmRyYW5nZSgtMTAwLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZW1heCA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKQorICAgICAgICAgICAgICAgICAgICAgICAgY2FwcyA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorCisgICAgICAgICAgICAgICAgICAgICAgICAjIE9uZSBtb2R1bGUgZHVtcHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBkdW1wZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBkdW1wZXIuQ29udGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWM9cHJlYywgRW1pbj1lbWluLCBFbWF4PWVtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3VuZGluZz1Sb3VuZGluZ01vZGVzW2R1bXBlcl1bcmldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Y2FwcywgY2xhbXA9Y2xhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncz1PcmRlcmVkU2lnbmFsc1tkdW1wZXJdWzpmaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcz1PcmRlcmVkU2lnbmFsc1tkdW1wZXJdWzp0aV0KKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoYykKKworICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGUgb3RoZXIgbW9kdWxlIGxvYWRzCisgICAgICAgICAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gbG9hZGVyCisgICAgICAgICAgICAgICAgICAgICAgICBkID0gcGlja2xlLmxvYWRzKHMpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZCwgbG9hZGVyLkNvbnRleHQpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5wcmVjLCBwcmVjKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLkVtaW4sIGVtaW4pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuRW1heCwgZW1heCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5yb3VuZGluZywgUm91bmRpbmdNb2Rlc1tsb2FkZXJdW3JpXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5jYXBpdGFscywgY2FwcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5jbGFtcCwgY2xhbXApCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBkLCAnZmxhZ3MnLCBPcmRlcmVkU2lnbmFsc1tsb2FkZXJdWzpmaV0pCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRfc2lnbmFscyhzZWxmLCBkLCAndHJhcHMnLCBPcmRlcmVkU2lnbmFsc1tsb2FkZXJdWzp0aV0pCisKKyAgICAgICAgc3lzLm1vZHVsZXNbJ2RlY2ltYWwnXSA9IHNhdmVkZWNpbWFsCisKKyAgICBkZWYgdGVzdF9lcXVhbGl0eV93aXRoX290aGVyX3R5cGVzKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBzZWxmLmFzc2VydEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsIERlY2ltYWwoMTApLCAoMSwyKSwge31dKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKERlY2ltYWwoMTApLCBbJ2EnLCAxLjAsICgxLDIpLCB7fV0pCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICAjIEFsbCBjb3BpZXMgc2hvdWxkIGJlIGRlZXAKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYyksIGlkKGQpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMuZmxhZ3MpLCBpZChkLmZsYWdzKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjLnRyYXBzKSwgaWQoZC50cmFwcykpCisgICAgICAgIGsxID0gc2V0KGMuZmxhZ3Mua2V5cygpKQorICAgICAgICBrMiA9IHNldChkLmZsYWdzLmtleXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrMSwgazIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbGFncywgZC5mbGFncykKKworICAgIGRlZiB0ZXN0X19jbGFtcChzZWxmKToKKyAgICAgICAgIyBJbiBQeXRob24gMy4yLCB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGUgYF9jbGFtcGAgd2FzIG1hZGUKKyAgICAgICAgIyBwdWJsaWMgKGlzc3VlIDg1NDApLCB3aXRoIHRoZSBvbGQgYF9jbGFtcGAgYmVjb21pbmcgYQorICAgICAgICAjIHByb3BlcnR5IHdyYXBwaW5nIGBjbGFtcGAuICBGb3IgdGhlIGR1cmF0aW9uIG9mIFB5dGhvbiAzLjIKKyAgICAgICAgIyBvbmx5LCB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBnZXR0YWJsZS9zZXR0YWJsZSB2aWEgYm90aAorICAgICAgICAjIGBjbGFtcGAgYW5kIGBfY2xhbXBgOyBpbiBQeXRob24gMy4zLCBgX2NsYW1wYCBzaG91bGQgYmUKKyAgICAgICAgIyByZW1vdmVkLgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgYywgJ19jbGFtcCcpCisKKyAgICBkZWYgdGVzdF9hYnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmFicyhEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmFicygtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hYnMsICctMScpCisKKyAgICBkZWYgdGVzdF9hZGQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmFkZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWRkKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWRkKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuYWRkKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWRkLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hZGQsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvbXBhcmUoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZSgxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmUsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfc2lnbmFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV9zaWduYWwsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgxKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsX21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgxKSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZygxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAnMScsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsX21hZywgMSwgJzEnKQorCisgICAgZGVmIHRlc3RfY29weV9hYnMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHlfYWJzKERlY2ltYWwoLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9hYnMoLTEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9hYnMsICctMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X2RlY2ltYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmNvcHlfZGVjaW1hbChEZWNpbWFsKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfZGVjaW1hbCgtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2RlY2ltYWwsICctMScpCisKKyAgICBkZWYgdGVzdF9jb3B5X25lZ2F0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9uZWdhdGUoRGVjaW1hbCgtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X25lZ2F0ZSgtMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X25lZ2F0ZSwgJy0xJykKKworICAgIGRlZiB0ZXN0X2NvcHlfc2lnbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuY29weV9zaWduKERlY2ltYWwoMSksIERlY2ltYWwoLTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKDEsIC0yKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbihEZWNpbWFsKDEpLCAtMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oMSwgRGVjaW1hbCgtMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9zaWduLCAnMScsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29weV9zaWduLCAxLCAnLTInKQorCisgICAgZGVmIHRlc3RfZGl2aWRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5kaXZpZGUoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZShEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9kaXZpZGVfaW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5kaXZpZGVfaW50KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGVfaW50LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGVfaW50LCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9kaXZtb2Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmRpdm1vZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2bW9kKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZtb2QsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X2V4cChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZXhwKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhwKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmV4cCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2ZtYShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuZm1hKERlY2ltYWwoMiksIERlY2ltYWwoMyksIERlY2ltYWwoNCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgMywgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoRGVjaW1hbCgyKSwgMywgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgRGVjaW1hbCgzKSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgMywgRGVjaW1hbCg0KSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsICcyJywgMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgMiwgJzMnLCA0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAzLCAnNCcpCisKKyAgICAgICAgIyBJc3N1ZSAxMjA3OSBmb3IgQ29udGV4dC5mbWEgLi4uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoMCksICJub3QgYSBkZWNpbWFsIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxKSwgRGVjaW1hbCgnc25hbicpLCAxLjIyMikKKyAgICAgICAgIyAuLi4gYW5kIGZvciBEZWNpbWFsLmZtYS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKCdJbmZpbml0eScpLmZtYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgwKSwgIm5vdCBhIGRlY2ltYWwiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuZm1hLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKCdzbmFuJyksIDEuMjIyKQorCisgICAgZGVmIHRlc3RfaXNfZmluaXRlKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19maW5pdGUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19maW5pdGUoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfZmluaXRlLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfaW5maW5pdGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX2luZmluaXRlKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfaW5maW5pdGUoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfaW5maW5pdGUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19uYW4oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX25hbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19uYW4sICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19ub3JtYWwoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX25vcm1hbChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX25vcm1hbCgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19ub3JtYWwsICcxMCcpCisKKyAgICBkZWYgdGVzdF9pc19xbmFuKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19xbmFuKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfcW5hbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19xbmFuLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc2lnbmVkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5pc19zaWduZWQoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zaWduZWQoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc2lnbmVkLCAnMTAnKQorCisgICAgZGVmIHRlc3RfaXNfc25hbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfc25hbihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NuYW4oMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc25hbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3N1Ym5vcm1hbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuaXNfc3Vibm9ybWFsKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfc3Vibm9ybWFsKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3N1Ym5vcm1hbCwgJzEwJykKKworICAgIGRlZiB0ZXN0X2lzX3plcm8oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmlzX3plcm8oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc196ZXJvKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3plcm8sICcxMCcpCisKKyAgICBkZWYgdGVzdF9sbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG4oRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sbigxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sbiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2xvZzEwKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2cxMChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZzEwKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZzEwLCAnMTAnKQorCisgICAgZGVmIHRlc3RfbG9nYihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9nYihEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2IoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9nYiwgJzEwJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfYW5kKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZChEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9hbmQsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9sb2dpY2FsX2ludmVydChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubG9naWNhbF9pbnZlcnQoRGVjaW1hbCgxMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfaW52ZXJ0KDEwMDApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF9pbnZlcnQsICcxMDAwJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfb3Ioc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLmxvZ2ljYWxfb3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIDEpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcigxLCBEZWNpbWFsKDEpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfb3IsIDEsICcxJykKKworICAgIGRlZiB0ZXN0X2xvZ2ljYWxfeG9yKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoMSwgMSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcihEZWNpbWFsKDEpLCAxKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIERlY2ltYWwoMSkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubG9naWNhbF94b3IsICcxJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAxLCAnMScpCisKKyAgICBkZWYgdGVzdF9tYXgoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1heChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4KDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWF4LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXgsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X21heF9tYWcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1heF9tYWcoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZygxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heF9tYWcsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X21pbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWluKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW4oMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW4oRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW4oMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW4sICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWluX21hZyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubWluX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZygxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluX21hZywgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluX21hZywgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbWludXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm1pbnVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWludXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWludXMsICcxMCcpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBseShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubXVsdGlwbHkoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseSgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tdWx0aXBseSwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfbmV4dF9taW51cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubmV4dF9taW51cyhEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfbWludXMoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF9taW51cywgJzEwJykKKworICAgIGRlZiB0ZXN0X25leHRfcGx1cyhzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMubmV4dF9wbHVzKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9wbHVzKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfcGx1cywgJzEwJykKKworICAgIGRlZiB0ZXN0X25leHRfdG93YXJkKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZChEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKDEsIERlY2ltYWwoMikpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfdG93YXJkLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLm5vcm1hbGl6ZShEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5vcm1hbGl6ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5ub3JtYWxpemUsICcxMCcpCisKKyAgICBkZWYgdGVzdF9udW1iZXJfY2xhc3Moc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMTIzKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgxMjMpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm51bWJlcl9jbGFzcygwKSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgwKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoLTQ1KSwgYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgtNDUpKSkKKworICAgIGRlZiB0ZXN0X3BsdXMoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnBsdXMoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wbHVzKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBsdXMsICcxMCcpCisKKyAgICBkZWYgdGVzdF9wb3dlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIDQpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgNCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCBEZWNpbWFsKDQpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKERlY2ltYWwoMSksIERlY2ltYWwoNCkpLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsICcxJywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCAnNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcihtb2R1bG89NSwgYj04LCBhPTIpLCAxKQorCisgICAgZGVmIHRlc3RfcXVhbnRpemUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnF1YW50aXplKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucXVhbnRpemUsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3JlbWFpbmRlcihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucmVtYWluZGVyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXIsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgMSwgJzInKQorCisgICAgZGVmIHRlc3RfcmVtYWluZGVyX25lYXIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXJfbmVhciwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3JvdGF0ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMucm90YXRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yb3RhdGUsICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc3FydChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc3FydChEZWNpbWFsKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNxcnQoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3FydCwgJzEwJykKKworICAgIGRlZiB0ZXN0X3NhbWVfcXVhbnR1bShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc2FtZV9xdWFudHVtKERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sICcxJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc2NhbGViKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy5zY2FsZWIoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYihEZWNpbWFsKDEpLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNjYWxlYigxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2NhbGViLCAxLCAnMicpCisKKyAgICBkZWYgdGVzdF9zaGlmdChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMuc2hpZnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KDEsIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoRGVjaW1hbCgxKSwgMiksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCBEZWNpbWFsKDIpKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNoaWZ0LCAnMScsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgMSwgJzInKQorCisgICAgZGVmIHRlc3Rfc3VidHJhY3Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnN1YnRyYWN0KERlY2ltYWwoMSksIERlY2ltYWwoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCAyKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KERlY2ltYWwoMSksIDIpLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoMSwgRGVjaW1hbCgyKSksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgJzEnLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc3VidHJhY3QsIDEsICcyJykKKworICAgIGRlZiB0ZXN0X3RvX2VuZ19zdHJpbmcoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX2VuZ19zdHJpbmcoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19lbmdfc3RyaW5nKDEwKSwgZCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2VuZ19zdHJpbmcsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19zY2lfc3RyaW5nKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gYy50b19zY2lfc3RyaW5nKERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9fc2NpX3N0cmluZygxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19zY2lfc3RyaW5nLCAnMTAnKQorCisgICAgZGVmIHRlc3RfdG9faW50ZWdyYWxfZXhhY3Qoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGQgPSBjLnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoMTApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfZXhhY3QoMTApLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfZXhhY3QsICcxMCcpCisKKyAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF92YWx1ZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKyAgICAgICAgZCA9IGMudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19pbnRlZ3JhbF92YWx1ZSgxMCksIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy50b19pbnRlZ3JhbF92YWx1ZSwgJzEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX3ZhbHVlLCAxMCwgJ3gnKQorCitjbGFzcyBDQ29udGV4dEFQSXRlc3RzKENvbnRleHRBUEl0ZXN0cyk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dEFQSXRlc3RzKENvbnRleHRBUEl0ZXN0cyk6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dFdpdGhTdGF0ZW1lbnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQ2FuJ3QgZG8gdGhlc2UgYXMgZG9jc3RyaW5ncyB1bnRpbCBQeXRob24gMi42CisgICAgIyBhcyBkb2N0ZXN0IGNhbid0IGhhbmRsZSBfX2Z1dHVyZV9fIHN0YXRlbWVudHMKKworICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dChzZWxmKToKKyAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaW4gdGhlIGJsb2NrCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBlbnRlcl9jdHg6CisgICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisKKyAgICBkZWYgdGVzdF9sb2NhbGNvbnRleHRhcmcoc2VsZik6CisgICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBvcmlnX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChwcmVjPTQyKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBlbnRlcl9jdHg6CisgICAgICAgICAgICBzZXRfY3R4ID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGZpbmFsX2N0eCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfY3R4LCBmaW5hbF9jdHgsICdkaWQgbm90IHJlc3RvcmUgY29udGV4dCBjb3JyZWN0bHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldF9jdHgucHJlYywgbmV3X2N0eC5wcmVjLCAnZGlkIG5vdCBzZXQgY29ycmVjdCBjb250ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuZXdfY3R4LCBzZXRfY3R4LCAnZGlkIG5vdCBjb3B5IHRoZSBjb250ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZXRfY3R4LCBlbnRlcl9jdHgsICdfX2VudGVyX18gcmV0dXJuZWQgd3JvbmcgY29udGV4dCcpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfd2l0aF9zdGF0ZW1lbnRzKHNlbGYpOgorICAgICAgICAjIFVzZSBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQgaW4gdGhlIGJsb2NrCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgQ2xhbXBlZCA9IHNlbGYuZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisKKyAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKKyAgICAgICAgb3JpZ19jdHguY2xlYXJfZmxhZ3MoKQorICAgICAgICBuZXdfY3R4ID0gQ29udGV4dChFbWF4PTM4NCkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzEuZmxhZ3MsIG9yaWdfY3R4LmZsYWdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMS50cmFwcywgb3JpZ19jdHgudHJhcHMpCisgICAgICAgICAgICBjMS50cmFwc1tDbGFtcGVkXSA9IFRydWUKKyAgICAgICAgICAgIGMxLkVtaW4gPSAtMzgzCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9yaWdfY3R4LkVtaW4sIC0zODMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhDbGFtcGVkLCBjMS5jcmVhdGVfZGVjaW1hbCwgJzBlLTk5OScpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYzEuZmxhZ3NbQ2xhbXBlZF0pCisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuZXdfY3R4KSBhcyBjMjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMyLmZsYWdzLCBuZXdfY3R4LmZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzIudHJhcHMsIG5ld19jdHgudHJhcHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMyLnBvd2VyLCBEZWNpbWFsKCczLjRlMjAwJyksIDIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjMi5mbGFnc1tDbGFtcGVkXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYzIuZmxhZ3NbT3ZlcmZsb3ddKQorICAgICAgICAgICAgICAgIGRlbCBjMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjMS5mbGFnc1tPdmVyZmxvd10pCisgICAgICAgICAgICBkZWwgYzEKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcmlnX2N0eC5FbWluLCAtMzgzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9yaWdfY3R4LmZsYWdzW0NsYW1wZWRdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9yaWdfY3R4LmZsYWdzW092ZXJmbG93XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXdfY3R4LmZsYWdzW0NsYW1wZWRdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld19jdHguZmxhZ3NbT3ZlcmZsb3ddKQorCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRzX2djMShzZWxmKToKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzE6CisgICAgICAgICAgICBkZWwgYzEKKyAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzQ6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWwgYzQKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50c19nYzIoc2VsZik6CisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGMxOgorICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoYzEpIGFzIGMyOgorICAgICAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KGMyKSBhcyBjMzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIGMyCisgICAgICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KGMzKSBhcyBjNDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjMworICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGM0CisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudHNfZ2MzKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5zZXRjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjMToKKyAgICAgICAgICAgIGRlbCBjMQorICAgICAgICAgICAgbjEgPSBDb250ZXh0KHByZWM9MSkKKyAgICAgICAgICAgIHNldGNvbnRleHQobjEpCisgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuMSkgYXMgYzI6CisgICAgICAgICAgICAgICAgZGVsIG4xCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjMi5wcmVjLCAxKQorICAgICAgICAgICAgICAgIGRlbCBjMgorICAgICAgICAgICAgICAgIG4yID0gQ29udGV4dChwcmVjPTIpCisgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuMikKKyAgICAgICAgICAgICAgICBkZWwgbjIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGNvbnRleHQoKS5wcmVjLCAyKQorICAgICAgICAgICAgICAgIG4zID0gQ29udGV4dChwcmVjPTMpCisgICAgICAgICAgICAgICAgc2V0Y29udGV4dChuMykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGNvbnRleHQoKS5wcmVjLCAzKQorICAgICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KG4zKSBhcyBjMzoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG4zCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYzMucHJlYywgMykKKyAgICAgICAgICAgICAgICAgICAgZGVsIGMzCisgICAgICAgICAgICAgICAgICAgIG40ID0gQ29udGV4dChwcmVjPTQpCisgICAgICAgICAgICAgICAgICAgIHNldGNvbnRleHQobjQpCisgICAgICAgICAgICAgICAgICAgIGRlbCBuNAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGNvbnRleHQoKS5wcmVjLCA0KQorICAgICAgICAgICAgICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM0OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjNC5wcmVjLCA0KQorICAgICAgICAgICAgICAgICAgICAgICAgZGVsIGM0CisKK2NsYXNzIENDb250ZXh0V2l0aFN0YXRlbWVudChDb250ZXh0V2l0aFN0YXRlbWVudCk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q29udGV4dFdpdGhTdGF0ZW1lbnQoQ29udGV4dFdpdGhTdGF0ZW1lbnQpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIENvbnRleHRGbGFncyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9mbGFnc19pcnJlbGV2YW50KHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIHJlc3VsdCAobnVtZXJpYyByZXN1bHQgKyBmbGFncyByYWlzZWQpIG9mIGFuCisgICAgICAgICMgYXJpdGhtZXRpYyBvcGVyYXRpb24gZG9lc24ndCBkZXBlbmQgb24gdGhlIGN1cnJlbnQgZmxhZ3MKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIENvbnRleHQgPSBzZWxmLmRlY2ltYWwuQ29udGV4dAorICAgICAgICBJbmV4YWN0ID0gc2VsZi5kZWNpbWFsLkluZXhhY3QKKyAgICAgICAgUm91bmRlZCA9IHNlbGYuZGVjaW1hbC5Sb3VuZGVkCisgICAgICAgIFVuZGVyZmxvdyA9IHNlbGYuZGVjaW1hbC5VbmRlcmZsb3cKKyAgICAgICAgQ2xhbXBlZCA9IHNlbGYuZGVjaW1hbC5DbGFtcGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IHNlbGYuZGVjaW1hbC5TdWJub3JtYWwKKyAgICAgICAgUk9VTkRfSEFMRl9FVkVOID0gc2VsZi5kZWNpbWFsLlJPVU5EX0hBTEZfRVZFTgorCisgICAgICAgIGRlZiByYWlzZV9lcnJvcihjb250ZXh0LCBmbGFnKToKKyAgICAgICAgICAgIGlmIHNlbGYuZGVjaW1hbCA9PSBDOgorICAgICAgICAgICAgICAgIGNvbnRleHQuZmxhZ3NbZmxhZ10gPSBUcnVlCisgICAgICAgICAgICAgICAgaWYgY29udGV4dC50cmFwc1tmbGFnXToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZmxhZworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250ZXh0Ll9yYWlzZV9lcnJvcihmbGFnKQorCisgICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9OSwgRW1pbiA9IC00MjUwMDAwMDAsIEVtYXggPSA0MjUwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9W10sIGZsYWdzPVtdKQorCisgICAgICAgICMgb3BlcmF0aW9ucyB0aGF0IHJhaXNlIHZhcmlvdXMgZmxhZ3MsIGluIHRoZSBmb3JtIChmdW5jdGlvbiwgYXJnbGlzdCkKKyAgICAgICAgb3BlcmF0aW9ucyA9IFsKKyAgICAgICAgICAgIChjb250ZXh0Ll9hcHBseSwgW0RlY2ltYWwoIjEwMEUtNDI1MDAwMDEwIildKSwKKyAgICAgICAgICAgIChjb250ZXh0LnNxcnQsIFtEZWNpbWFsKDIpXSksCisgICAgICAgICAgICAoY29udGV4dC5hZGQsIFtEZWNpbWFsKCIxLjIzNDU2Nzg5IiksIERlY2ltYWwoIjkuODc2NTQzMjEiKV0pLAorICAgICAgICAgICAgKGNvbnRleHQubXVsdGlwbHksIFtEZWNpbWFsKCIxLjIzNDU2Nzg5IiksIERlY2ltYWwoIjkuODc2NTQzMjEiKV0pLAorICAgICAgICAgICAgKGNvbnRleHQuc3VidHJhY3QsIFtEZWNpbWFsKCIxLjIzNDU2Nzg5IiksIERlY2ltYWwoIjkuODc2NTQzMjEiKV0pLAorICAgICAgICAgICAgXQorCisgICAgICAgICMgdHJ5IHZhcmlvdXMgZmxhZ3MgaW5kaXZpZHVhbGx5LCB0aGVuIGEgd2hvbGUgbG90IGF0IG9uY2UKKyAgICAgICAgZmxhZ3NldHMgPSBbW0luZXhhY3RdLCBbUm91bmRlZF0sIFtVbmRlcmZsb3ddLCBbQ2xhbXBlZF0sIFtTdWJub3JtYWxdLAorICAgICAgICAgICAgICAgICAgICBbSW5leGFjdCwgUm91bmRlZCwgVW5kZXJmbG93LCBDbGFtcGVkLCBTdWJub3JtYWxdXQorCisgICAgICAgIGZvciBmbiwgYXJncyBpbiBvcGVyYXRpb25zOgorICAgICAgICAgICAgIyBmaW5kIGFuc3dlciBhbmQgZmxhZ3MgcmFpc2VkIHVzaW5nIGEgY2xlYW4gY29udGV4dAorICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBhbnMgPSBmbigqYXJncykKKyAgICAgICAgICAgIGZsYWdzID0gW2sgZm9yIGssIHYgaW4gY29udGV4dC5mbGFncy5pdGVtcygpIGlmIHZdCisKKyAgICAgICAgICAgIGZvciBleHRyYV9mbGFncyBpbiBmbGFnc2V0czoKKyAgICAgICAgICAgICAgICAjIHNldCBmbGFncywgYmVmb3JlIGNhbGxpbmcgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCisgICAgICAgICAgICAgICAgZm9yIGZsYWcgaW4gZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKGNvbnRleHQsIGZsYWcpCisgICAgICAgICAgICAgICAgbmV3X2FucyA9IGZuKCphcmdzKQorCisgICAgICAgICAgICAgICAgIyBmbGFncyB0aGF0IHdlIGV4cGVjdCB0byBiZSBzZXQgYWZ0ZXIgdGhlIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzID0gbGlzdChmbGFncykKKyAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gZXhwZWN0ZWRfZmxhZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5hcHBlbmQoZmxhZykKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5zb3J0KGtleT1pZCkKKworICAgICAgICAgICAgICAgICMgZmxhZ3Mgd2UgYWN0dWFsbHkgZ290CisgICAgICAgICAgICAgICAgbmV3X2ZsYWdzID0gW2sgZm9yIGssdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgICAgICAgICBuZXdfZmxhZ3Muc29ydChrZXk9aWQpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgbmV3X2FucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcHJvZHVjZXMgZGlmZmVyZW50IGFuc3dlcnMgZGVwZW5kaW5nIG9uIGZsYWdzIHNldDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcy4iICUgKGFucywgbmV3X2FucykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZmxhZ3MsIGV4cGVjdGVkX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcmFpc2VzIGRpZmZlcmVudCBmbGFncyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcyIgJSAoZXhwZWN0ZWRfZmxhZ3MsIG5ld19mbGFncykpCisKKyAgICBkZWYgdGVzdF9mbGFnX2NvbXBhcmlzb25zKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgSW5leGFjdCA9IHNlbGYuZGVjaW1hbC5JbmV4YWN0CisgICAgICAgIFJvdW5kZWQgPSBzZWxmLmRlY2ltYWwuUm91bmRlZAorCisgICAgICAgIGMgPSBDb250ZXh0KCkKKworICAgICAgICAjIFZhbGlkIFNpZ25hbERpY3QKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjLmZsYWdzLCBjLnRyYXBzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMudHJhcHMsIGMuZmxhZ3MpCisKKyAgICAgICAgYy5mbGFncyA9IGMudHJhcHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBjLnRyYXBzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudHJhcHMsIGMuZmxhZ3MpCisKKyAgICAgICAgYy5mbGFnc1tSb3VuZGVkXSA9IFRydWUKKyAgICAgICAgYy50cmFwcyA9IGMuZmxhZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBjLnRyYXBzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudHJhcHMsIGMuZmxhZ3MpCisKKyAgICAgICAgZCA9IHt9CisgICAgICAgIGQudXBkYXRlKGMuZmxhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmZsYWdzLCBkKQorCisgICAgICAgIGRbSW5leGFjdF0gPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZCwgYy5mbGFncykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjLmZsYWdzLCBkKQorCisgICAgICAgICMgSW52YWxpZCBTaWduYWxEaWN0CisgICAgICAgIGQgPSB7SW5leGFjdDpGYWxzZX0KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICAgICAgZCA9IFsieHl6Il0KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkLCBjLmZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGMuZmxhZ3MsIGQpCisKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICBkZWYgdGVzdF9mbG9hdF9vcGVyYXRpb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBGbG9hdE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5GbG9hdE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgIyMjIyMgdHJhcCBpcyBvZmYgYnkgZGVmYXVsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyBpbXBsaWNpdCBjb252ZXJzaW9uIHNldHMgdGhlIGZsYWcKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDcuNSksIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY3JlYXRlX2RlY2ltYWwoNy41KSwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICAjIGV4cGxpY2l0IGNvbnZlcnNpb24gZG9lcyBub3Qgc2V0IHRoZSBmbGFnCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBEZWNpbWFsLmZyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKyAgICAgICAgICAgICMgY29tcGFyaXNvbiBzZXRzIHRoZSBmbGFnCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICB4ID0gYy5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDcuNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgIyMjIyMgc2V0IHRoZSB0cmFwCisgICAgICAgICAgICBjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKworICAgICAgICAgICAgIyBpbXBsaWNpdCBjb252ZXJzaW9uIHJhaXNlcworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGbG9hdE9wZXJhdGlvbiwgRGVjaW1hbCwgNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZsb2F0T3BlcmF0aW9uLCBjLmNyZWF0ZV9kZWNpbWFsLCA3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgICMgZXhwbGljaXQgY29udmVyc2lvbiBpcyBzaWxlbnQKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgeCA9IERlY2ltYWwuZnJvbV9mbG9hdCg3LjUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHggPSBjLmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoNy41KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuRmxvYXRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIGRlZiBhc3NlcnRfYXR0cihhLCBiLCBhdHRyLCBjb250ZXh0LCBzaWduYWw9Tm9uZSk6CisgICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGYgPSBnZXRhdHRyKGEsIGF0dHIpCisgICAgICAgICAgICBpZiBzaWduYWwgPT0gRmxvYXRPcGVyYXRpb246CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2lnbmFsLCBmLCBiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGYoYiksIFRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGV4dC5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgc21hbGxfZCA9IERlY2ltYWwoJzAuMjUnKQorICAgICAgICBiaWdfZCA9IERlY2ltYWwoJzMuMCcpCisgICAgICAgIHNtYWxsX2YgPSAwLjI1CisgICAgICAgIGJpZ19mID0gMy4wCisKKyAgICAgICAgemVyb19kID0gRGVjaW1hbCgnMC4wJykKKyAgICAgICAgbmVnX3plcm9fZCA9IERlY2ltYWwoJy0wLjAnKQorICAgICAgICB6ZXJvX2YgPSAwLjAKKyAgICAgICAgbmVnX3plcm9fZiA9IC0wLjAKKworICAgICAgICBpbmZfZCA9IERlY2ltYWwoJ0luZmluaXR5JykKKyAgICAgICAgbmVnX2luZl9kID0gRGVjaW1hbCgnLUluZmluaXR5JykKKyAgICAgICAgaW5mX2YgPSBmbG9hdCgnaW5mJykKKyAgICAgICAgbmVnX2luZl9mID0gZmxvYXQoJy1pbmYnKQorCisgICAgICAgIGRlZiBkb2l0KGMsIHNpZ25hbD1Ob25lKToKKyAgICAgICAgICAgICMgT3JkZXIKKyAgICAgICAgICAgIGZvciBhdHRyIGluICdfX2x0X18nLCAnX19sZV9fJzoKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXR0cihzbWFsbF9kLCBiaWdfZiwgYXR0ciwgYywgc2lnbmFsKQorCisgICAgICAgICAgICBmb3IgYXR0ciBpbiAnX19ndF9fJywgJ19fZ2VfXyc6CisgICAgICAgICAgICAgICAgYXNzZXJ0X2F0dHIoYmlnX2QsIHNtYWxsX2YsIGF0dHIsIGMsIHNpZ25hbCkKKworICAgICAgICAgICAgIyBFcXVhbGl0eQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoc21hbGxfZCwgc21hbGxfZiwgJ19fZXFfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKG5lZ196ZXJvX2QsIG5lZ196ZXJvX2YsICdfX2VxX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX3plcm9fZCwgemVyb19mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIoemVyb19kLCBuZWdfemVyb19mLCAnX19lcV9fJywgYywgTm9uZSkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKHplcm9fZCwgemVyb19mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgYXNzZXJ0X2F0dHIobmVnX2luZl9kLCBuZWdfaW5mX2YsICdfX2VxX18nLCBjLCBOb25lKQorICAgICAgICAgICAgYXNzZXJ0X2F0dHIoaW5mX2QsIGluZl9mLCAnX19lcV9fJywgYywgTm9uZSkKKworICAgICAgICAgICAgIyBJbmVxdWFsaXR5CisgICAgICAgICAgICBhc3NlcnRfYXR0cihzbWFsbF9kLCBiaWdfZiwgJ19fbmVfXycsIGMsIE5vbmUpCisKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKERlY2ltYWwoJzAuMScpLCAwLjEsICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihuZWdfaW5mX2QsIGluZl9mLCAnX19uZV9fJywgYywgTm9uZSkKKyAgICAgICAgICAgIGFzc2VydF9hdHRyKGluZl9kLCBuZWdfaW5mX2YsICdfX25lX18nLCBjLCBOb25lKQorCisgICAgICAgICAgICBhc3NlcnRfYXR0cihEZWNpbWFsKCdOYU4nKSwgZmxvYXQoJ25hbicpLCAnX19uZV9fJywgYywgTm9uZSkKKworICAgICAgICBkZWYgdGVzdF9jb250YWluZXJzKGMsIHNpZ25hbD1Ob25lKToKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcyA9IHNldChbMTAwLjAsIERlY2ltYWwoJzEwMC4wJyldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tGbG9hdE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgaWYgc2lnbmFsOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNpZ25hbCwgc29ydGVkLCBbMS4wLCBEZWNpbWFsKCcxMC4wJyldKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzID0gc29ydGVkKFsxMC4wLCBEZWNpbWFsKCcxMC4wJyldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIGIgPSAxMC4wIGluIFtEZWNpbWFsKCcxMC4wJyksIDEuMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBiID0gMTAuMCBpbiB7RGVjaW1hbCgnMTAuMCcpOidhJywgMS4wOidiJ30KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0Zsb2F0T3BlcmF0aW9uXSkKKworICAgICAgICBuYyA9IENvbnRleHQoKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dChuYykgYXMgYzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy50cmFwc1tGbG9hdE9wZXJhdGlvbl0pCisgICAgICAgICAgICBkb2l0KGMsIHNpZ25hbD1Ob25lKQorICAgICAgICAgICAgdGVzdF9jb250YWluZXJzKGMsIHNpZ25hbD1Ob25lKQorCisgICAgICAgICAgICBjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIGRvaXQoYywgc2lnbmFsPUZsb2F0T3BlcmF0aW9uKQorICAgICAgICAgICAgdGVzdF9jb250YWluZXJzKGMsIHNpZ25hbD1GbG9hdE9wZXJhdGlvbikKKworICAgIGRlZiB0ZXN0X2Zsb2F0X29wZXJhdGlvbl9kZWZhdWx0KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5Db250ZXh0CisgICAgICAgIEluZXhhY3QgPSBzZWxmLmRlY2ltYWwuSW5leGFjdAorICAgICAgICBGbG9hdE9wZXJhdGlvbj0gc2VsZi5kZWNpbWFsLkZsb2F0T3BlcmF0aW9uCisKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbnRleHQuZmxhZ3NbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGNvbnRleHQudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorCisgICAgICAgIGNvbnRleHQuY2xlYXJfdHJhcHMoKQorICAgICAgICBjb250ZXh0LnRyYXBzW0luZXhhY3RdID0gVHJ1ZQorICAgICAgICBjb250ZXh0LnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbnRleHQudHJhcHNbRmxvYXRPcGVyYXRpb25dKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY29udGV4dC50cmFwc1tJbmV4YWN0XSkKKworY2xhc3MgQ0NvbnRleHRGbGFncyhDb250ZXh0RmxhZ3MpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvbnRleHRGbGFncyhDb250ZXh0RmxhZ3MpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIFNwZWNpYWxDb250ZXh0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGUgY29udGV4dCB0ZW1wbGF0ZXMuIiIiCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X3RlbXBsYXRlcyhzZWxmKToKKyAgICAgICAgQmFzaWNDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkJhc2ljQ29udGV4dAorICAgICAgICBFeHRlbmRlZENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRXh0ZW5kZWRDb250ZXh0CisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLnNldGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFVuZGVyZmxvdyA9IHNlbGYuZGVjaW1hbC5VbmRlcmZsb3cKKyAgICAgICAgQ2xhbXBlZCA9IHNlbGYuZGVjaW1hbC5DbGFtcGVkCisKKyAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgQmFzaWNDb250ZXh0LCAndHJhcHMnLAorICAgICAgICAgICAgW0ludmFsaWRPcGVyYXRpb24sIERpdmlzaW9uQnlaZXJvLCBPdmVyZmxvdywgVW5kZXJmbG93LCBDbGFtcGVkXQorICAgICAgICApCisKKyAgICAgICAgc2F2ZWNvbnRleHQgPSBnZXRjb250ZXh0KCkuY29weSgpCisgICAgICAgIGJhc2ljX2NvbnRleHRfcHJlYyA9IEJhc2ljQ29udGV4dC5wcmVjCisgICAgICAgIGV4dGVuZGVkX2NvbnRleHRfcHJlYyA9IEV4dGVuZGVkQ29udGV4dC5wcmVjCisKKyAgICAgICAgZXggPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIEJhc2ljQ29udGV4dC5wcmVjID0gRXh0ZW5kZWRDb250ZXh0LnByZWMgPSA0NDEKKyAgICAgICAgICAgIGZvciB0ZW1wbGF0ZSBpbiBCYXNpY0NvbnRleHQsIEV4dGVuZGVkQ29udGV4dDoKKyAgICAgICAgICAgICAgICBzZXRjb250ZXh0KHRlbXBsYXRlKQorICAgICAgICAgICAgICAgIGMgPSBnZXRjb250ZXh0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGMsIHRlbXBsYXRlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCA0NDEpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIGV4ID0gZS5fX2NsYXNzX18KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIEJhc2ljQ29udGV4dC5wcmVjID0gYmFzaWNfY29udGV4dF9wcmVjCisgICAgICAgICAgICBFeHRlbmRlZENvbnRleHQucHJlYyA9IGV4dGVuZGVkX2NvbnRleHRfcHJlYworICAgICAgICAgICAgc2V0Y29udGV4dChzYXZlY29udGV4dCkKKyAgICAgICAgICAgIGlmIGV4OgorICAgICAgICAgICAgICAgIHJhaXNlIGV4CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbnRleHQoc2VsZik6CisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkRlZmF1bHRDb250ZXh0CisgICAgICAgIEJhc2ljQ29udGV4dCA9IHNlbGYuZGVjaW1hbC5CYXNpY0NvbnRleHQKKyAgICAgICAgRXh0ZW5kZWRDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkV4dGVuZGVkQ29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKyAgICAgICAgc2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5zZXRjb250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBzZWxmLmRlY2ltYWwuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IHNlbGYuZGVjaW1hbC5EaXZpc2lvbkJ5WmVybworICAgICAgICBPdmVyZmxvdyA9IHNlbGYuZGVjaW1hbC5PdmVyZmxvdworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFzaWNDb250ZXh0LnByZWMsIDkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRXh0ZW5kZWRDb250ZXh0LnByZWMsIDkpCisKKyAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgRGVmYXVsdENvbnRleHQsICd0cmFwcycsCisgICAgICAgICAgICBbSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIE92ZXJmbG93XQorICAgICAgICApCisKKyAgICAgICAgc2F2ZWNvbnRleHQgPSBnZXRjb250ZXh0KCkuY29weSgpCisgICAgICAgIGRlZmF1bHRfY29udGV4dF9wcmVjID0gRGVmYXVsdENvbnRleHQucHJlYworCisgICAgICAgIGV4ID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBzYXZlcHJlYyA9IGMucHJlYworCisgICAgICAgICAgICBEZWZhdWx0Q29udGV4dC5wcmVjID0gOTYxCisgICAgICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgc2F2ZXByZWMpCisKKyAgICAgICAgICAgIHNldGNvbnRleHQoRGVmYXVsdENvbnRleHQpCisgICAgICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KGMsIERlZmF1bHRDb250ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDk2MSkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgZXggPSBlLl9fY2xhc3NfXworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgRGVmYXVsdENvbnRleHQucHJlYyA9IGRlZmF1bHRfY29udGV4dF9wcmVjCisgICAgICAgICAgICBzZXRjb250ZXh0KHNhdmVjb250ZXh0KQorICAgICAgICAgICAgaWYgZXg6CisgICAgICAgICAgICAgICAgcmFpc2UgZXgKKworY2xhc3MgQ1NwZWNpYWxDb250ZXh0cyhTcGVjaWFsQ29udGV4dHMpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeVNwZWNpYWxDb250ZXh0cyhTcGVjaWFsQ29udGV4dHMpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIENvbnRleHRJbnB1dFZhbGlkYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb250ZXh0KHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgIyBwcmVjLCBFbWF4CisgICAgICAgIGZvciBhdHRyIGluIFsncHJlYycsICdFbWF4J106CisgICAgICAgICAgICBzZXRhdHRyKGMsIGF0dHIsIDk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihjLCBhdHRyKSwgOTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsICd4eXonKQorCisgICAgICAgICMgRW1pbgorICAgICAgICBzZXRhdHRyKGMsICdFbWluJywgLTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKGMsICdFbWluJyksIC05OTk5OTkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdFbWluJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnRW1pbicsICgxLDIsMykpCisKKyAgICAgICAgIyByb3VuZGluZzogYWx3YXlzIHJhaXNlIFR5cGVFcnJvciBpbiBvcmRlciB0byBnZXQgY29uc2lzdGVudAorICAgICAgICAjIGV4Y2VwdGlvbnMgYWNyb3NzIGltcGxlbWVudGF0aW9ucy4gSW4gZGVjaW1hbCwgcm91bmRpbmcKKyAgICAgICAgIyBtb2RlcyBhcmUgc3RyaW5ncywgaW4gX2RlY2ltYWwgdGhleSBhcmUgaW50ZWdlcnMuIFRoZSBpZGVhCisgICAgICAgICMgaXMgdG8gdmlldyByb3VuZGluZyBhcyBhbiBhYnN0cmFjdCB0eXBlIGFuZCBub3QgbWluZCB0aGUKKyAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgorICAgICAgICAjIEhlbmNlLCBhIHVzZXIgc2hvdWxkIHZpZXcgdGhlIHJvdW5kaW5nIG1vZGVzIGFzIGlmIHRoZXkKKyAgICAgICAgIyBoYWQgYmVlbiBkZWZpbmVkIGluIGEgbGFuZ3VhZ2UgdGhhdCBzdXBwb3J0cyBhYnN0cmFjdAorICAgICAgICAjIGRhdGEgdHlwZXMsIGUuZy4gb2NhbWw6CisgICAgICAgICMKKyAgICAgICAgIyAgIHR5cGUgcm91bmRpbmcgPSBST1VORF9ET1dOIHwgUk9VTkRfSEFMRl9VUCB8IC4uLiA7OworICAgICAgICAjCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAncm91bmRpbmcnLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ3JvdW5kaW5nJywgJ3h5eicpCisKKyAgICAgICAgIyBjYXBpdGFscywgY2xhbXAKKyAgICAgICAgZm9yIGF0dHIgaW4gWydjYXBpdGFscycsICdjbGFtcCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBbMSwyLDNdKQorCisgICAgICAgICMgSW52YWxpZCBhdHRyaWJ1dGUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIGMsICdlbWF4JywgMTAwKQorCisgICAgICAgICMgSW52YWxpZCBzaWduYWwgZGljdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywge30pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAndHJhcHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB7J0ludmFsaWRPcGVyYXRpb24nOjB9KQorCisgICAgICAgICMgQXR0cmlidXRlcyBjYW5ub3QgYmUgZGVsZXRlZAorICAgICAgICBmb3IgYXR0ciBpbiBbJ3ByZWMnLCAnRW1heCcsICdFbWluJywgJ3JvdW5kaW5nJywgJ2NhcGl0YWxzJywgJ2NsYW1wJywKKyAgICAgICAgICAgICAgICAgICAgICdmbGFncycsICd0cmFwcyddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGMuX19kZWxhdHRyX18sIGF0dHIpCisKKyAgICAgICAgIyBJbnZhbGlkIGF0dHJpYnV0ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhdHRyLCBjLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIDkpCisKKyAgICAgICAgIyBJbnZhbGlkIHZhbHVlcyBpbiBjb25zdHJ1Y3RvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIENvbnRleHQsIHJvdW5kaW5nPTk5OTk5OSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDb250ZXh0LCByb3VuZGluZz0neHl6JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgY2xhbXA9MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgQ29udGV4dCwgY2FwaXRhbHM9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBDb250ZXh0LCBmbGFncz1bIlAiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIENvbnRleHQsIHRyYXBzPVsiUSJdKQorCisgICAgICAgICMgVHlwZSBlcnJvciBpbiBjb252ZXJzaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgZmxhZ3M9KDAsMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQ29udGV4dCwgdHJhcHM9KDEsMCkpCisKK2NsYXNzIENDb250ZXh0SW5wdXRWYWxpZGF0aW9uKENvbnRleHRJbnB1dFZhbGlkYXRpb24pOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvbnRleHRJbnB1dFZhbGlkYXRpb24oQ29udGV4dElucHV0VmFsaWRhdGlvbik6CisgICAgZGVjaW1hbCA9IFAKKworY2xhc3MgQ29udGV4dFN1YmNsYXNzaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGRlY2ltYWwgPSBzZWxmLmRlY2ltYWwKKyAgICAgICAgRGVjaW1hbCA9IGRlY2ltYWwuRGVjaW1hbAorICAgICAgICBDb250ZXh0ID0gZGVjaW1hbC5Db250ZXh0CisgICAgICAgIFJPVU5EX0hBTEZfRVZFTiA9IGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOCisgICAgICAgIFJPVU5EX0RPV04gPSBkZWNpbWFsLlJPVU5EX0RPV04KKyAgICAgICAgQ2xhbXBlZCA9IGRlY2ltYWwuQ2xhbXBlZAorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IGRlY2ltYWwuRGl2aXNpb25CeVplcm8KKyAgICAgICAgSW5leGFjdCA9IGRlY2ltYWwuSW5leGFjdAorICAgICAgICBPdmVyZmxvdyA9IGRlY2ltYWwuT3ZlcmZsb3cKKyAgICAgICAgUm91bmRlZCA9IGRlY2ltYWwuUm91bmRlZAorICAgICAgICBTdWJub3JtYWwgPSBkZWNpbWFsLlN1Ym5vcm1hbAorICAgICAgICBVbmRlcmZsb3cgPSBkZWNpbWFsLlVuZGVyZmxvdworICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisKKyAgICAgICAgY2xhc3MgTXlDb250ZXh0KENvbnRleHQpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZWM9Tm9uZSwgcm91bmRpbmc9Tm9uZSwgRW1pbj1Ob25lLCBFbWF4PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FwaXRhbHM9Tm9uZSwgY2xhbXA9Tm9uZSwgZmxhZ3M9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFwcz1Ob25lKToKKyAgICAgICAgICAgICAgICBDb250ZXh0Ll9faW5pdF9fKHNlbGYpCisgICAgICAgICAgICAgICAgaWYgcHJlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmVjID0gcHJlYworICAgICAgICAgICAgICAgIGlmIHJvdW5kaW5nIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnJvdW5kaW5nID0gcm91bmRpbmcKKyAgICAgICAgICAgICAgICBpZiBFbWluIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLkVtaW4gPSBFbWluCisgICAgICAgICAgICAgICAgaWYgRW1heCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5FbWF4ID0gRW1heAorICAgICAgICAgICAgICAgIGlmIGNhcGl0YWxzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcGl0YWxzID0gY2FwaXRhbHMKKyAgICAgICAgICAgICAgICBpZiBjbGFtcCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFtcCA9IGNsYW1wCisgICAgICAgICAgICAgICAgaWYgZmxhZ3MgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmxhZ3MsIGxpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSB7djoodiBpbiBmbGFncykgZm9yIHYgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF0gKyBmbGFnc30KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mbGFncyA9IGZsYWdzCisgICAgICAgICAgICAgICAgaWYgdHJhcHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodHJhcHMsIGxpc3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJhcHMgPSB7djoodiBpbiB0cmFwcykgZm9yIHYgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF0gKyB0cmFwc30KKyAgICAgICAgICAgICAgICAgICAgc2VsZi50cmFwcyA9IHRyYXBzCisKKyAgICAgICAgYyA9IENvbnRleHQoKQorICAgICAgICBkID0gTXlDb250ZXh0KCkKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdwcmVjJywgJ3JvdW5kaW5nJywgJ0VtaW4nLCAnRW1heCcsICdjYXBpdGFscycsICdjbGFtcCcsCisgICAgICAgICAgICAgICAgICAgICAnZmxhZ3MnLCAndHJhcHMnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihjLCBhdHRyKSwgZ2V0YXR0cihkLCBhdHRyKSkKKworICAgICAgICAjIHByZWMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsncHJlYyc6LTF9KQorICAgICAgICBjID0gTXlDb250ZXh0KHByZWM9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIGMucXVhbnRpemUsIERlY2ltYWwoJzllMicpLCAwKQorCisgICAgICAgICMgcm91bmRpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeUNvbnRleHQsICoqeydyb3VuZGluZyc6J1hZWid9KQorICAgICAgICBjID0gTXlDb250ZXh0KHJvdW5kaW5nPVJPVU5EX0RPV04sIHByZWM9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCBST1VORF9ET1dOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucGx1cyhEZWNpbWFsKCc5LjknKSksIDkpCisKKyAgICAgICAgIyBFbWluCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J0VtaW4nOjV9KQorICAgICAgICBjID0gTXlDb250ZXh0KEVtaW49LTEsIHByZWM9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC0xKQorICAgICAgICB4ID0gYy5hZGQoRGVjaW1hbCgnMWUtOTknKSwgRGVjaW1hbCgnMi4yMzRlLTIwMDAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcwLjAnKSkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiAoSW5leGFjdCwgVW5kZXJmbG93LCBTdWJub3JtYWwsIFJvdW5kZWQsIENsYW1wZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3Nbc2lnbmFsXSkKKworICAgICAgICAjIEVtYXgKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTXlDb250ZXh0LCAqKnsnRW1heCc6LTF9KQorICAgICAgICBjID0gTXlDb250ZXh0KEVtYXg9MSwgcHJlYz0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMuYWRkLCBEZWNpbWFsKCcxZTk5JyksIERlY2ltYWwoJzIuMjM0ZTIwMDAnKSkKKyAgICAgICAgaWYgc2VsZi5kZWNpbWFsID09IEM6CisgICAgICAgICAgICBmb3Igc2lnbmFsIGluIChJbmV4YWN0LCBPdmVyZmxvdywgUm91bmRlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3Nbc2lnbmFsXSkKKworICAgICAgICAjIGNhcGl0YWxzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIE15Q29udGV4dCwgKip7J2NhcGl0YWxzJzotMX0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoY2FwaXRhbHM9MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNhcGl0YWxzLCAwKQorICAgICAgICB4ID0gYy5jcmVhdGVfZGVjaW1hbCgnMUUyMjInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9fc2NpX3N0cmluZyh4KSwgJzFlKzIyMicpCisKKyAgICAgICAgIyBjbGFtcAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBNeUNvbnRleHQsICoqeydjbGFtcCc6Mn0pCisgICAgICAgIGMgPSBNeUNvbnRleHQoY2xhbXA9MSwgRW1heD05OSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNsYW1wLCAxKQorICAgICAgICB4ID0gYy5wbHVzKERlY2ltYWwoJzFlOTknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoeCksICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEUrOTknKQorCisgICAgICAgICMgZmxhZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBNeUNvbnRleHQsICoqeydmbGFncyc6J1hZWid9KQorICAgICAgICBjID0gTXlDb250ZXh0KGZsYWdzPVtSb3VuZGVkLCBEaXZpc2lvbkJ5WmVyb10pCisgICAgICAgIGZvciBzaWduYWwgaW4gKFJvdW5kZWQsIERpdmlzaW9uQnlaZXJvKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW3NpZ25hbF0pCisgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICBmb3Igc2lnbmFsIGluIE9yZGVyZWRTaWduYWxzW2RlY2ltYWxdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjLmZsYWdzW3NpZ25hbF0pCisKKyAgICAgICAgIyB0cmFwcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15Q29udGV4dCwgKip7J3RyYXBzJzonWFlaJ30pCisgICAgICAgIGMgPSBNeUNvbnRleHQodHJhcHM9W1JvdW5kZWQsIERpdmlzaW9uQnlaZXJvXSkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiAoUm91bmRlZCwgRGl2aXNpb25CeVplcm8pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMudHJhcHNbc2lnbmFsXSkKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBzaWduYWwgaW4gT3JkZXJlZFNpZ25hbHNbZGVjaW1hbF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMudHJhcHNbc2lnbmFsXSkKKworY2xhc3MgQ0NvbnRleHRTdWJjbGFzc2luZyhDb250ZXh0U3ViY2xhc3NpbmcpOgorICAgIGRlY2ltYWwgPSBDCitjbGFzcyBQeUNvbnRleHRTdWJjbGFzc2luZyhDb250ZXh0U3ViY2xhc3NpbmcpOgorICAgIGRlY2ltYWwgPSBQCisKK0Bza2lwX2lmX2V4dHJhX2Z1bmN0aW9uYWxpdHkKK2NsYXNzIENoZWNrQXR0cmlidXRlcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9tb2R1bGVfYXR0cmlidXRlcyhzZWxmKToKKworICAgICAgICAjIEFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgY29udGV4dCBsaW1pdHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1BWF9QUkVDLCBQLk1BWF9QUkVDKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuTUFYX0VNQVgsIFAuTUFYX0VNQVgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5NSU5fRU1JTiwgUC5NSU5fRU1JTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLk1JTl9FVElOWSwgUC5NSU5fRVRJTlkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEMuSEFWRV9USFJFQURTIGlzIFRydWUgb3IgQy5IQVZFX1RIUkVBRFMgaXMgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShQLkhBVkVfVEhSRUFEUyBpcyBUcnVlIG9yIFAuSEFWRV9USFJFQURTIGlzIEZhbHNlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX3ZlcnNpb25fXywgUC5fX3ZlcnNpb25fXykKKworICAgICAgICB4ID0gZGlyKEMpCisgICAgICAgIHkgPSBbcyBmb3IgcyBpbiBkaXIoUCkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoeCkgLSBzZXQoeSksIHNldCgpKQorCisgICAgZGVmIHRlc3RfY29udGV4dF9hdHRyaWJ1dGVzKHNlbGYpOgorCisgICAgICAgIHggPSBbcyBmb3IgcyBpbiBkaXIoQy5Db250ZXh0KCkpIGlmICdfXycgaW4gcyBvciBub3Qgcy5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIHkgPSBbcyBmb3IgcyBpbiBkaXIoUC5Db250ZXh0KCkpIGlmICdfXycgaW4gcyBvciBub3Qgcy5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHgpIC0gc2V0KHkpLCBzZXQoKSkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxfYXR0cmlidXRlcyhzZWxmKToKKworICAgICAgICB4ID0gW3MgZm9yIHMgaW4gZGlyKEMuRGVjaW1hbCg5KSkgaWYgJ19fJyBpbiBzIG9yIG5vdCBzLnN0YXJ0c3dpdGgoJ18nKV0KKyAgICAgICAgeSA9IFtzIGZvciBzIGluIGRpcihDLkRlY2ltYWwoOSkpIGlmICdfXycgaW4gcyBvciBub3Qgcy5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHgpIC0gc2V0KHkpLCBzZXQoKSkKKworY2xhc3MgQ292ZXJhZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWRqdXN0ZWQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnMTIzNGU5OTk5JykuYWRqdXN0ZWQoKSwgMTAwMDIpCisgICAgICAgICMgWFhYIHJhaXNlPworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJ25hbicpLmFkanVzdGVkKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnaW5mJykuYWRqdXN0ZWQoKSwgMCkKKworICAgIGRlZiB0ZXN0X2Nhbm9uaWNhbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGdldGNvbnRleHQgPSBzZWxmLmRlY2ltYWwuZ2V0Y29udGV4dAorCisgICAgICAgIHggPSBEZWNpbWFsKDkpLmNhbm9uaWNhbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgOSkKKworICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIHggPSBjLmNhbm9uaWNhbChEZWNpbWFsKDkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDkpCisKKyAgICBkZWYgdGVzdF9jb250ZXh0X3JlcHIoc2VsZik6CisgICAgICAgIGMgPSBzZWxmLmRlY2ltYWwuRGVmYXVsdENvbnRleHQuY29weSgpCisKKyAgICAgICAgYy5wcmVjID0gNDI1MDAwMDAwCisgICAgICAgIGMuRW1heCA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtaW4gPSAtNDI1MDAwMDAwCisgICAgICAgIGMucm91bmRpbmcgPSBzZWxmLmRlY2ltYWwuUk9VTkRfSEFMRl9ET1dOCisgICAgICAgIGMuY2FwaXRhbHMgPSAwCisgICAgICAgIGMuY2xhbXAgPSAxCisgICAgICAgIGZvciBzaWcgaW4gT3JkZXJlZFNpZ25hbHNbc2VsZi5kZWNpbWFsXToKKyAgICAgICAgICAgIGMuZmxhZ3Nbc2lnXSA9IEZhbHNlCisgICAgICAgICAgICBjLnRyYXBzW3NpZ10gPSBGYWxzZQorCisgICAgICAgIHMgPSBjLl9fcmVwcl9fKCkKKyAgICAgICAgdCA9ICJDb250ZXh0KHByZWM9NDI1MDAwMDAwLCByb3VuZGluZz1ST1VORF9IQUxGX0RPV04sICIgXAorICAgICAgICAgICAgIkVtaW49LTQyNTAwMDAwMCwgRW1heD00MjUwMDAwMDAsIGNhcGl0YWxzPTAsIGNsYW1wPTEsICIgXAorICAgICAgICAgICAgImZsYWdzPVtdLCB0cmFwcz1bXSkiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgdCkKKworICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2NvbnRleHQoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gMQorICAgICAgICAgICAgYy5FbWF4ID0gMQorICAgICAgICAgICAgYy5FbWluID0gLTEKKworICAgICAgICAgICAgIyBhYnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWJzKERlY2ltYWwoIi0xMCIpKSwgMTApCisgICAgICAgICAgICAjIGFkZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCI3IikgKyAxLCA4KQorICAgICAgICAgICAgIyBkaXZpZGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAvIDUsIDIpCisgICAgICAgICAgICAjIGRpdmlkZV9pbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKSAvLyA3LCAxKQorICAgICAgICAgICAgIyBmbWEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMS4yIikuZm1hKERlY2ltYWwoIjAuMDEiKSwgMSksIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKERlY2ltYWwoIk5hTiIpLmZtYSg3LCAxKS5pc19uYW4oKSwgVHJ1ZSkKKyAgICAgICAgICAgICMgdGhyZWUgYXJnIHBvd2VyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvdyhEZWNpbWFsKDEwKSwgMiwgNyksIDIpCisgICAgICAgICAgICAjIGV4cAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjAxIikuZXhwKCksIDMpCisgICAgICAgICAgICAjIGlzX25vcm1hbAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhEZWNpbWFsKCIwLjAxIikuaXNfbm9ybWFsKCksIEZhbHNlKQorICAgICAgICAgICAgIyBpc19zdWJub3JtYWwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRGVjaW1hbCgiMC4wMSIpLmlzX3N1Ym5vcm1hbCgpLCBUcnVlKQorICAgICAgICAgICAgIyBsbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIyMCIpLmxuKCksIDMpCisgICAgICAgICAgICAjIGxvZzEwCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjIwIikubG9nMTAoKSwgMSkKKyAgICAgICAgICAgICMgbG9nYgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCI1ODAiKS5sb2diKCksIDIpCisgICAgICAgICAgICAjIGxvZ2ljYWxfaW52ZXJ0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubG9naWNhbF9pbnZlcnQoKSwgMSkKKyAgICAgICAgICAgICMgbWludXMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLURlY2ltYWwoIi0xMCIpLCAxMCkKKyAgICAgICAgICAgICMgbXVsdGlwbHkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMiIpICogNCwgOCkKKyAgICAgICAgICAgICMgbmV4dF9taW51cworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpLm5leHRfbWludXMoKSwgOSkKKyAgICAgICAgICAgICMgbmV4dF9wbHVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikubmV4dF9wbHVzKCksIERlY2ltYWwoJzJFKzEnKSkKKyAgICAgICAgICAgICMgbm9ybWFsaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIi0xMCIpLm5vcm1hbGl6ZSgpLCBEZWNpbWFsKCctMUUrMScpKQorICAgICAgICAgICAgIyBudW1iZXJfY2xhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMTAiKS5udW1iZXJfY2xhc3MoKSwgJytOb3JtYWwnKQorICAgICAgICAgICAgIyBwbHVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCtEZWNpbWFsKCItMSIpLCAtMSkKKyAgICAgICAgICAgICMgcmVtYWluZGVyCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEwIikgJSA3LCAzKQorICAgICAgICAgICAgIyBzdWJ0cmFjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxMCIpIC0gNywgMykKKyAgICAgICAgICAgICMgdG9faW50ZWdyYWxfZXhhY3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgiMS4xMjM0NSIpLnRvX2ludGVncmFsX2V4YWN0KCksIDEpCisKKyAgICAgICAgICAgICMgQm9vbGVhbiBmdW5jdGlvbnMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIxIikuaXNfY2Fub25pY2FsKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMSIpLmlzX2Zpbml0ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIjEiKS5pc19maW5pdGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCJzbmFuIikuaXNfc25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKERlY2ltYWwoIi0xIikuaXNfc2lnbmVkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoRGVjaW1hbCgiMCIpLmlzX3plcm8oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShEZWNpbWFsKCIwIikuaXNfemVybygpKQorCisgICAgICAgICMgQ29weQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxMDAwMAorICAgICAgICAgICAgeCA9IDEyMjggKiogMTUyMworICAgICAgICAgICAgeSA9IC1EZWNpbWFsKHgpCisKKyAgICAgICAgICAgIHogPSB5LmNvcHlfYWJzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeiwgeCkKKworICAgICAgICAgICAgeiA9IHkuY29weV9uZWdhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6LCB4KQorCisgICAgICAgICAgICB6ID0geS5jb3B5X3NpZ24oRGVjaW1hbCgxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeiwgeCkKKworICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IHNlbGYuZGVjaW1hbC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IHNlbGYuZGVjaW1hbC5sb2NhbGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IHNlbGYuZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIERpdmlzaW9uQnlaZXJvID0gc2VsZi5kZWNpbWFsLkRpdmlzaW9uQnlaZXJvCisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCIxMDkxMjgzNzEyOSIpLCAxMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBEZWNpbWFsKCcxMDkwMTkzNScpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLCBEZWNpbWFsKCcxOTQnKSkKKworICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKCJOYU4iKSwgNykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShxLmlzX25hbigpIGFuZCByLmlzX25hbigpKQorCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gRmFsc2UKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiTmFOIiksIDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19uYW4oKSBhbmQgci5pc19uYW4oKSkKKworICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgICAgICBjLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgICAgIHEsIHIgPSBkaXZtb2QoRGVjaW1hbCgiaW5mIiksIERlY2ltYWwoImluZiIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoImluZiIpLCAxMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5pc19pbmZpbml0ZSgpIGFuZCByLmlzX25hbigpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCisKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgcSwgciA9IGRpdm1vZChEZWNpbWFsKDApLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfbmFuKCkgYW5kIHIuaXNfbmFuKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSkKKworICAgICAgICAgICAgYy50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSBGYWxzZQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBxLCByID0gZGl2bW9kKERlY2ltYWwoMTEpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHEuaXNfaW5maW5pdGUoKSBhbmQgci5pc19uYW4oKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuZmxhZ3NbRGl2aXNpb25CeVplcm9dKQorCisgICAgZGVmIHRlc3RfcG93ZXIoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBzZWxmLmRlY2ltYWwubG9jYWxjb250ZXh0CisgICAgICAgIE92ZXJmbG93ID0gc2VsZi5kZWNpbWFsLk92ZXJmbG93CisgICAgICAgIFJvdW5kZWQgPSBzZWxmLmRlY2ltYWwuUm91bmRlZAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDMKKyAgICAgICAgICAgIGMuY2xlYXJfZmxhZ3MoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKCIxLjAiKSAqKiAxMDAsIERlY2ltYWwoJzEuMDAnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW1JvdW5kZWRdKQorCisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBjLnRyYXBzW092ZXJmbG93XSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAwMDApICoqIERlY2ltYWwoIjAuNSIpLCBEZWNpbWFsKCdpbmYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLmZsYWdzW092ZXJmbG93XSkKKworICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gc2VsZi5kZWNpbWFsLkludmFsaWRPcGVyYXRpb24KKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IEZhbHNlCisgICAgICAgICAgICB4ID0gRGVjaW1hbCg5OSkucXVhbnRpemUoRGVjaW1hbCgiMWUxIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoeC5pc19uYW4oKSkKKworICAgIGRlZiB0ZXN0X3JhZGl4KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgZ2V0Y29udGV4dCA9IHNlbGYuZGVjaW1hbC5nZXRjb250ZXh0CisKKyAgICAgICAgYyA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoIjEiKS5yYWRpeCgpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJhZGl4KCksIDEwKQorCisgICAgZGVmIHRlc3Rfcm9wKHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKworICAgICAgICBmb3IgYXR0ciBpbiAoJ19fcmFkZF9fJywgJ19fcnN1Yl9fJywgJ19fcm11bF9fJywgJ19fcnRydWVkaXZfXycsCisgICAgICAgICAgICAgICAgICAgICAnX19yZGl2bW9kX18nLCAnX19ybW9kX18nLCAnX19yZmxvb3JkaXZfXycsICdfX3Jwb3dfXycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnZXRhdHRyKERlY2ltYWwoIjEiKSwgYXR0cikoInh5eiIpLCBOb3RJbXBsZW1lbnRlZCkKKworICAgIGRlZiB0ZXN0X3JvdW5kKHNlbGYpOgorICAgICAgICAjIFB5dGhvbjMgYmVoYXZpb3I6IHJvdW5kKCkgcmV0dXJucyBEZWNpbWFsCisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorICAgICAgICBnZXRjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmdldGNvbnRleHQKKworICAgICAgICBjID0gZ2V0Y29udGV4dCgpCisgICAgICAgIGMucHJlYyA9IDI4CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiOS45OSIpLl9fcm91bmRfXygpKSwgIjEwIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRGVjaW1hbCgiOS45OWUtNSIpLl9fcm91bmRfXygpKSwgIjAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIxLjIzNDU2Nzg5IikuX19yb3VuZF9fKDUpKSwgIjEuMjM0NTciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCIxLjIzNDUiKS5fX3JvdW5kX18oMTApKSwgIjEuMjM0NTAwMDAwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIjEuMjM0NSIpLl9fcm91bmRfXygtMTApKSwgIjBFKzEwIikKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sICI1IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLCA1LCA4KQorCisgICAgZGVmIHRlc3RfY3JlYXRlX2RlY2ltYWwoc2VsZik6CisgICAgICAgIGMgPSBzZWxmLmRlY2ltYWwuQ29udGV4dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMuY3JlYXRlX2RlY2ltYWwsIFsiJSJdKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gc2VsZi5kZWNpbWFsLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDk5OTkKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDEyMjEqKjEyNzEpIC8gMTAqKjM5MjMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHgpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsKCksIDIpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gc2VsZi5kZWNpbWFsLkNvbnRleHQKKworICAgICAgICBjID0gQ29udGV4dCgpCisgICAgICAgIGMucHJlYyA9IDEwMDAwCisgICAgICAgIHggPSAtKDExNzIgKiogMTcxMikKKworICAgICAgICB5ID0gYy5jb3B5X2Ficyh4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHksIC14KQorCisgICAgICAgIHkgPSBjLmNvcHlfbmVnYXRlKHgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKKyAgICAgICAgeSA9IGMuY29weV9zaWduKHgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgLXgpCisKK2NsYXNzIENDb3ZlcmFnZShDb3ZlcmFnZSk6CisgICAgZGVjaW1hbCA9IEMKK2NsYXNzIFB5Q292ZXJhZ2UoQ292ZXJhZ2UpOgorICAgIGRlY2ltYWwgPSBQCisKK2NsYXNzIFB5RnVuY3Rpb25hbGl0eSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiRXh0cmEgZnVuY3Rpb25hbGl0eSBpbiBkZWNpbWFsLnB5IiIiCisKKyAgICBkZWYgdGVzdF9weV9xdWFudGl6ZV93YXRjaGV4cChzZWxmKToKKyAgICAgICAgIyB3YXRjaGV4cCBmdW5jdGlvbmFsaXR5CisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gUC5sb2NhbGNvbnRleHQKKworICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICBjLkVtYXggPSAxCisgICAgICAgICAgICBjLkVtaW4gPSAtMQorICAgICAgICAgICAgeCA9IERlY2ltYWwoOTk5OTkpLnF1YW50aXplKERlY2ltYWwoIjFlMyIpLCB3YXRjaGV4cD1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMS4wMEUrNScpKQorCisgICAgZGVmIHRlc3RfcHlfYWx0ZXJuYXRlX2Zvcm1hdHRpbmcoc2VsZik6CisgICAgICAgICMgdHJpcGxlcyBnaXZpbmcgYSBmb3JtYXQsIGEgRGVjaW1hbCwgYW5kIHRoZSBleHBlY3RlZCByZXN1bHQKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAorCisgICAgICAgIHRlc3RfdmFsdWVzID0gWworICAgICAgICAgICAgIyBJc3N1ZSA3MDk0OiBBbHRlcm5hdGUgZm9ybWF0dGluZyAoc3BlY2lmaWVkIGJ5ICMpCisgICAgICAgICAgICAoJy4wZScsICcxLjAnLCAnMWUrMCcpLAorICAgICAgICAgICAgKCcjLjBlJywgJzEuMCcsICcxLmUrMCcpLAorICAgICAgICAgICAgKCcuMGYnLCAnMS4wJywgJzEnKSwKKyAgICAgICAgICAgICgnIy4wZicsICcxLjAnLCAnMS4nKSwKKyAgICAgICAgICAgICgnZycsICcxLjEnLCAnMS4xJyksCisgICAgICAgICAgICAoJyNnJywgJzEuMScsICcxLjEnKSwKKyAgICAgICAgICAgICgnLjBnJywgJzEnLCAnMScpLAorICAgICAgICAgICAgKCcjLjBnJywgJzEnLCAnMS4nKSwKKyAgICAgICAgICAgICgnLjAlJywgJzEuMCcsICcxMDAlJyksCisgICAgICAgICAgICAoJyMuMCUnLCAnMS4wJywgJzEwMC4lJyksCisgICAgICAgICAgICBdCisgICAgICAgIGZvciBmbXQsIGQsIHJlc3VsdCBpbiB0ZXN0X3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KERlY2ltYWwoZCksIGZtdCksIHJlc3VsdCkKKworY2xhc3MgUHlXaGl0ZWJveCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiV2hpdGUgYm94IHRlc3RpbmcgZm9yIGRlY2ltYWwucHkiIiIKKworICAgIGRlZiB0ZXN0X3B5X2V4YWN0X3Bvd2VyKHNlbGYpOgorICAgICAgICAjIFJhcmVseSBleGVyY2lzZWQgbGluZXMgaW4gX3Bvd2VyX2V4YWN0LgorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIGxvY2FsY29udGV4dCA9IFAubG9jYWxjb250ZXh0CisKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgYy5wcmVjID0gOAorICAgICAgICAgICAgeCA9IERlY2ltYWwoMioqMTYpICoqIERlY2ltYWwoIi0wLjUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcwLjAwMzkwNjI1JykpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDIqKjE2KSAqKiBEZWNpbWFsKCItMC42IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMC4wMDEyODg1ODE5JykpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKCIyNTZlNyIpICoqIERlY2ltYWwoIi0wLjUiKQorCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgxNTI1ODc4OTA2MjUpICoqIERlY2ltYWwoJy0wLjA2MjUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCIwLjIiKSkKKworICAgICAgICAgICAgeCA9IERlY2ltYWwoIjE1MjU4Nzg5MDYyNWU3IikgKiogRGVjaW1hbCgnLTAuMDYyNScpCisKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDUqKjI2NTkpICoqIERlY2ltYWwoJy0wLjA2MjUnKQorCisgICAgICAgICAgICBjLnByZWMgPSAxCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiMTUyNTg3ODkwNjI1IikgKiogRGVjaW1hbCgnLTAuNScpCisgICAgICAgICAgICBjLnByZWMgPSAyMDEKKyAgICAgICAgICAgIHggPSBEZWNpbWFsKDIqKjU3OCkgKiogRGVjaW1hbCgiLTAuNSIpCisKKyAgICBkZWYgdGVzdF9weV9pbW11dGFiaWxpdHlfb3BlcmF0aW9ucyhzZWxmKToKICAgICAgICAgIyBEbyBvcGVyYXRpb25zIGFuZCBjaGVjayB0aGF0IGl0IGRpZG4ndCBjaGFuZ2UgY2hhbmdlIGludGVybmFsIG9iamVjdHMuCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgRGVmYXVsdENvbnRleHQgPSBQLkRlZmF1bHRDb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBQLnNldGNvbnRleHQKKworICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisgICAgICAgIGMudHJhcHMgPSBkaWN0KChzLCAwKSBmb3IgcyBpbiBPcmRlcmVkU2lnbmFsc1tQXSkKKyAgICAgICAgc2V0Y29udGV4dChjKQogCiAgICAgICAgIGQxID0gRGVjaW1hbCgnLTI1ZTU1JykKICAgICAgICAgYjEgPSBEZWNpbWFsKCctMjVlNTUnKQpAQCAtMTY1OSw3MTMgKzQyODAsNzk5IEBACiAgICAgICAgIGNoZWNrU2FtZURlYygidG9fZW5nX3N0cmluZyIpCiAgICAgICAgIGNoZWNrU2FtZURlYygidG9faW50ZWdyYWwiKQogCi0gICAgZGVmIHRlc3Rfc3ViY2xhc3Npbmcoc2VsZik6Ci0gICAgICAgICMgRGlmZmVyZW50IGJlaGF2aW91cnMgd2hlbiBzdWJjbGFzc2luZyBEZWNpbWFsCisgICAgZGVmIHRlc3RfcHlfZGVjaW1hbF9pZChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IFAuRGVjaW1hbAogCi0gICAgICAgIGNsYXNzIE15RGVjaW1hbChEZWNpbWFsKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZCA9IERlY2ltYWwoNDUpCisgICAgICAgIGUgPSBEZWNpbWFsKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAnNDUnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKIAotICAgICAgICBkMSA9IE15RGVjaW1hbCgxKQotICAgICAgICBkMiA9IE15RGVjaW1hbCgyKQotICAgICAgICBkID0gZDEgKyBkMgotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZCksIERlY2ltYWwpCisgICAgZGVmIHRlc3RfcHlfcmVzY2FsZShzZWxmKToKKyAgICAgICAgIyBDb3ZlcmFnZQorICAgICAgICBEZWNpbWFsID0gUC5EZWNpbWFsCisgICAgICAgIFJPVU5EX1VQID0gUC5ST1VORF9VUAorICAgICAgICBsb2NhbGNvbnRleHQgPSBQLmxvY2FsY29udGV4dAogCi0gICAgICAgIGQgPSBkMS5tYXgoZDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShkKSwgRGVjaW1hbCkKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgeCA9IERlY2ltYWwoIk5hTiIpLl9yZXNjYWxlKDMsIFJPVU5EX1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHguaXNfbmFuKCkpCiAKLSAgICBkZWYgdGVzdF9pbXBsaWNpdF9jb250ZXh0KHNlbGYpOgotICAgICAgICAjIENoZWNrIHJlc3VsdHMgd2hlbiBjb250ZXh0IGdpdmVuIGltcGxpY2l0bHkuICAoSXNzdWUgMjQ3OCkKLSAgICAgICAgYyA9IGdldGNvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKDApLnNxcnQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGMuc3FydChEZWNpbWFsKDApKSkpCisgICAgZGVmIHRlc3RfcHlfX3JvdW5kKHNlbGYpOgorICAgICAgICAjIENvdmVyYWdlCisgICAgICAgIERlY2ltYWwgPSBQLkRlY2ltYWwKKyAgICAgICAgUk9VTkRfVVAgPSBQLlJPVU5EX1VQCiAKLSAgICBkZWYgdGVzdF9jb252ZXJzaW9uc19mcm9tX2ludChzZWxmKToKLSAgICAgICAgIyBDaGVjayB0aGF0IG1ldGhvZHMgdGFraW5nIGEgc2Vjb25kIERlY2ltYWwgYXJndW1lbnQgd2lsbAotICAgICAgICAjIGFsd2F5cyBhY2NlcHQgYW4gaW50ZWdlciBpbiBwbGFjZSBvZiBhIERlY2ltYWwuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZShEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfc2lnbmFsKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0KS5jb21wYXJlX3RvdGFsKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV90b3RhbChEZWNpbWFsKDMpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDQpLmNvbXBhcmVfdG90YWxfbWFnKDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNCkuY29tcGFyZV90b3RhbF9tYWcoRGVjaW1hbCgzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF9hbmQoMTAwMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMDEwMSkubG9naWNhbF9hbmQoRGVjaW1hbCgxMDAxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMDEwMSkubG9naWNhbF9vcigxMDAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEwMTAxKS5sb2dpY2FsX29yKERlY2ltYWwoMTAwMSkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfeG9yKDEwMDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTAxMDEpLmxvZ2ljYWxfeG9yKERlY2ltYWwoMTAwMSkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5tYXgoMTIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWF4KERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1heF9tYWcoMTIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWF4X21hZyhEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5taW4oMTIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWluKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg1NjcpLm1pbl9tYWcoMTIzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDU2NykubWluX21hZyhEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoNTY3KS5uZXh0X3Rvd2FyZCgxMjMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNTY3KS5uZXh0X3Rvd2FyZChEZWNpbWFsKDEyMykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoMTIzNCkucXVhbnRpemUoMTAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDEyMzQpLnF1YW50aXplKERlY2ltYWwoMTAwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg3NjgpLnJlbWFpbmRlcl9uZWFyKDEyMzQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoNzY4KS5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEyMzQpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKDEyMykucm90YXRlKDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoMTIzKS5yb3RhdGUoRGVjaW1hbCgxKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgxMjM0KS5zYW1lX3F1YW50dW0oMTAwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgxMjM0KS5zYW1lX3F1YW50dW0oRGVjaW1hbCgxMDAwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgnOS4xMjMnKS5zY2FsZWIoLTEwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgnOS4xMjMnKS5zY2FsZWIoRGVjaW1hbCgtMTAwKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCg0NTYpLnNoaWZ0KC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKDQ1Nikuc2hpZnQoRGVjaW1hbCgtMSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBEZWNpbWFsKCIzLjEyMzQiKS5fcm91bmQsIDAsIFJPVU5EX1VQKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgNjcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoLTEyKS5mbWEoRGVjaW1hbCg0NSksIERlY2ltYWwoNjcpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKC0xMikuZm1hKDQ1LCA2NyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCgtMTIpLmZtYShEZWNpbWFsKDQ1KSwgRGVjaW1hbCg2NykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoLTEyKS5mbWEoNDUsIERlY2ltYWwoNjcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsKC0xMikuZm1hKERlY2ltYWwoNDUpLCBEZWNpbWFsKDY3KSkpCitjbGFzcyBDRnVuY3Rpb25hbGl0eSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiRXh0cmEgZnVuY3Rpb25hbGl0eSBpbiBfZGVjaW1hbCIiIgogCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX2llZWVfY29udGV4dChzZWxmKToKKyAgICAgICAgIyBpc3N1ZSA4Nzg2OiBBZGQgc3VwcG9ydCBmb3IgSUVFRSA3NTQgY29udGV4dHMgdG8gZGVjaW1hbCBtb2R1bGUuCisgICAgICAgIElFRUVDb250ZXh0ID0gQy5JRUVFQ29udGV4dAorICAgICAgICBERUNJTUFMMzIgPSBDLkRFQ0lNQUwzMgorICAgICAgICBERUNJTUFMNjQgPSBDLkRFQ0lNQUw2NAorICAgICAgICBERUNJTUFMMTI4ID0gQy5ERUNJTUFMMTI4CiAKLWNsYXNzIERlY2ltYWxQeXRob25BUEl0ZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgIGRlZiBhc3NlcnRfcmVzdChzZWxmLCBjb250ZXh0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5jbGFtcCwgMSkKKyAgICAgICAgICAgIGFzc2VydF9zaWduYWxzKHNlbGYsIGNvbnRleHQsICd0cmFwcycsIFtdKQorICAgICAgICAgICAgYXNzZXJ0X3NpZ25hbHMoc2VsZiwgY29udGV4dCwgJ2ZsYWdzJywgW10pCiAKLSAgICBkZWYgdGVzdF9hYmMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuTnVtYmVyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKERlY2ltYWwsIG51bWJlcnMuUmVhbCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShEZWNpbWFsKDApLCBudW1iZXJzLk51bWJlcikKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKERlY2ltYWwoMCksIG51bWJlcnMuUmVhbCkKKyAgICAgICAgYyA9IElFRUVDb250ZXh0KERFQ0lNQUwzMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCA5NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC05NSkKKyAgICAgICAgYXNzZXJ0X3Jlc3Qoc2VsZiwgYykKIAotICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAgICAgZCA9IERlY2ltYWwoJy0zLjE0MTU5MDAwMCcpCi0gICAgICAgIHAgPSBwaWNrbGUuZHVtcHMoZCkKLSAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGUpCisgICAgICAgIGMgPSBJRUVFQ29udGV4dChERUNJTUFMNjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCAxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDM4NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC0zODMpCisgICAgICAgIGFzc2VydF9yZXN0KHNlbGYsIGMpCiAKLSAgICBkZWYgdGVzdF9pbnQoc2VsZik6Ci0gICAgICAgIGZvciB4IGluIHJhbmdlKC0yNTAsIDI1MCk6Ci0gICAgICAgICAgICBzID0gJyUwLjJmJyAlICh4IC8gMTAwLjApCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIGZvciBmbG9hdHMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KERlY2ltYWwocykpLCBpbnQoZmxvYXQocykpKQotICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyB0b19pbnRlZ3JhbCBpbiB0aGUgUk9VTkRfRE9XTiBtb2RlCi0gICAgICAgICAgICBkID0gRGVjaW1hbChzKQotICAgICAgICAgICAgciA9IGQudG9faW50ZWdyYWwoUk9VTkRfRE9XTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChpbnQoZCkpLCByKQorICAgICAgICBjID0gSUVFRUNvbnRleHQoREVDSU1BTDEyOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnByZWMsIDM0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1heCwgNjE0NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIC02MTQzKQorICAgICAgICBhc3NlcnRfcmVzdChzZWxmLCBjKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgRGVjaW1hbCgnLW5hbicpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsIERlY2ltYWwoJ3NuYW4nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgaW50LCBEZWNpbWFsKCdpbmYnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgaW50LCBEZWNpbWFsKCctaW5mJykpCisgICAgICAgICMgSW52YWxpZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgSUVFRUNvbnRleHQsIDIqKjYzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBJRUVFQ29udGV4dCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIElFRUVDb250ZXh0LCAxMDI0KQogCi0gICAgZGVmIHRlc3RfdHJ1bmMoc2VsZik6Ci0gICAgICAgIGZvciB4IGluIHJhbmdlKC0yNTAsIDI1MCk6Ci0gICAgICAgICAgICBzID0gJyUwLjJmJyAlICh4IC8gMTAwLjApCi0gICAgICAgICAgICAjIHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIGZvciBmbG9hdHMKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KERlY2ltYWwocykpLCBpbnQoZmxvYXQocykpKQotICAgICAgICAgICAgIyBzaG91bGQgd29yayB0aGUgc2FtZSBhcyB0b19pbnRlZ3JhbCBpbiB0aGUgUk9VTkRfRE9XTiBtb2RlCi0gICAgICAgICAgICBkID0gRGVjaW1hbChzKQotICAgICAgICAgICAgciA9IGQudG9faW50ZWdyYWwoUk9VTkRfRE9XTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRGVjaW1hbChtYXRoLnRydW5jKGQpKSwgcikKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfY29udGV4dChzZWxmKToKKyAgICAgICAgQ29udGV4dCA9IEMuQ29udGV4dAogCi0gICAgZGVmIHRlc3RfZnJvbV9mbG9hdChzZWxmKToKKyAgICAgICAgYyA9IENvbnRleHQoZmxhZ3M9Qy5EZWNDbGFtcGVkLCB0cmFwcz1DLkRlY1JvdW5kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fZmxhZ3MsIEMuRGVjQ2xhbXBlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl90cmFwcywgQy5EZWNSb3VuZGVkKQogCi0gICAgICAgIGNsYXNzICBNeURlY2ltYWwoRGVjaW1hbCk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgciA9IE15RGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHIpLCBNeURlY2ltYWwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHIpLAotICAgICAgICAgICAgICAgICcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKQotICAgICAgICBiaWdpbnQgPSAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGJpZ2ludCksIE15RGVjaW1hbChiaWdpbnQpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoTXlEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKS5pc19xbmFuKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpLmlzX2luZmluaXRlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnLWluZicpKS5pc19pbmZpbml0ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnbmFuJykpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoRGVjaW1hbCgnTmFOJykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihNeURlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoRGVjaW1hbCgnSW5maW5pdHknKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE15RGVjaW1hbC5mcm9tX2Zsb2F0KGZsb2F0KCctaW5mJykpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoRGVjaW1hbCgnLUluZmluaXR5JykpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE15RGVjaW1hbC5mcm9tX2Zsb2F0LCAnYWJjJykKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjAwKToKLSAgICAgICAgICAgIHggPSByYW5kb20uZXhwb3ZhcmlhdGUoMC4wMSkgKiAocmFuZG9tLnJhbmRvbSgpICogMi4wIC0gMS4wKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBmbG9hdChNeURlY2ltYWwuZnJvbV9mbG9hdCh4KSkpICMgcm91bmR0cmlwCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KHNlbGYpOgotICAgICAgICBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQobWF0aC5waSksCi0gICAgICAgICAgICBEZWNpbWFsKCczLjE0MTUnKQorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY29uc3RhbnRzKHNlbGYpOgorICAgICAgICAjIENvbmRpdGlvbiBmbGFncworICAgICAgICBjb25kID0gKAorICAgICAgICAgICAgQy5EZWNDbGFtcGVkLCBDLkRlY0NvbnZlcnNpb25TeW50YXgsIEMuRGVjRGl2aXNpb25CeVplcm8sCisgICAgICAgICAgICBDLkRlY0RpdmlzaW9uSW1wb3NzaWJsZSwgQy5EZWNEaXZpc2lvblVuZGVmaW5lZCwKKyAgICAgICAgICAgIEMuRGVjRnB1RXJyb3IsIEMuRGVjSW5leGFjdCwgQy5EZWNJbnZhbGlkQ29udGV4dCwKKyAgICAgICAgICAgIEMuRGVjSW52YWxpZE9wZXJhdGlvbiwgQy5EZWNNYWxsb2NFcnJvciwKKyAgICAgICAgICAgIEMuRGVjRmxvYXRPcGVyYXRpb24sIEMuRGVjT3ZlcmZsb3csIEMuRGVjUm91bmRlZCwKKyAgICAgICAgICAgIEMuRGVjU3Vibm9ybWFsLCBDLkRlY1VuZGVyZmxvdwogICAgICAgICApCi0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgcm91bmRpbmc9Uk9VTkRfVVApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQobWF0aC5waSksCi0gICAgICAgICAgICBEZWNpbWFsKCczLjE0MTYnKQotICAgICAgICApCi0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9NSwgdHJhcHM9W0luZXhhY3RdKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAgIEluZXhhY3QsCi0gICAgICAgICAgICBjb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQsCi0gICAgICAgICAgICBtYXRoLnBpCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgtMC4wKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJy0wJykiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDEuMCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJEZWNpbWFsKCcxJykiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KDEwKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkRlY2ltYWwoJzEwJykiKQogCi1jbGFzcyBDb250ZXh0QVBJdGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAjIElFRUVDb250ZXh0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5ERUNJTUFMMzIsIDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuREVDSU1BTDY0LCA2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRFQ0lNQUwxMjgsIDEyOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLklFRUVfQ09OVEVYVF9NQVhfQklUUywgNTEyKQogCi0gICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICAjIFJvdW5kaW5nIG1vZGVzCisgICAgICAgIGZvciBpLCB2IGluIGVudW1lcmF0ZShSb3VuZGluZ01vZGVzW0NdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgaSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLlJPVU5EX1RSVU5DLCA4KQorCisgICAgICAgICMgQ29uZGl0aW9ucworICAgICAgICBmb3IgaSwgdiBpbiBlbnVtZXJhdGUoY29uZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDE8PGkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjQ29udmVyc2lvblN5bnRheHwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uSW1wb3NzaWJsZXwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0RpdmlzaW9uVW5kZWZpbmVkfAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjRnB1RXJyb3J8CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNJbnZhbGlkQ29udGV4dHwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDLkRlY0ludmFsaWRPcGVyYXRpb258CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNNYWxsb2NFcnJvcikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjRXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb258CisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNEaXZpc2lvbkJ5WmVybykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuRGVjVHJhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgQy5EZWNFcnJvcnN8Qy5EZWNPdmVyZmxvd3xDLkRlY1VuZGVyZmxvdykKKworY2xhc3MgQ1doaXRlYm94KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJXaGl0ZWJveCB0ZXN0aW5nIGZvciBfZGVjaW1hbCIiIgorCisgICAgZGVmIHRlc3RfYmlnbnVtKHNlbGYpOgorICAgICAgICAjIE5vdCBleGFjdGx5IHdoaXRlYm94LCBidXQgdG9vIHNsb3cgd2l0aCBweWRlY2ltYWwuCisKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorCisgICAgICAgIGIxID0gMTAqKjM1CisgICAgICAgIGIyID0gMTAqKjM2CisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMucHJlYyA9IDEwMDAwMDAKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgICAgIGEgPSByYW5kb20ucmFuZHJhbmdlKGIxLCBiMikKKyAgICAgICAgICAgICAgICBiID0gcmFuZG9tLnJhbmRyYW5nZSgxMDAwLCAxMjAwKQorICAgICAgICAgICAgICAgIHggPSBhICoqIGIKKyAgICAgICAgICAgICAgICB5ID0gRGVjaW1hbChhKSAqKiBEZWNpbWFsKGIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jb25zdHJ1Y3Rpb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQy5EZWNpbWFsLCA5LCAieHl6IikKKworICAgIGRlZiB0ZXN0X2NfaW5wdXRfcmVzdHJpY3Rpb24oc2VsZik6CisgICAgICAgICMgVG9vIGxhcmdlIGZvciBfZGVjaW1hbCB0byBiZSBjb252ZXJ0ZWQgZXhhY3RseQorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgQ29udGV4dCA9IEMuQ29udGV4dAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KENvbnRleHQoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFlOTk5OTk5OTk5OTk5OTk5OTk5OSIpCisKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfcmVwcihzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3QgaXMgX2RlY2ltYWwtb25seSBiZWNhdXNlIGZsYWdzIGFyZSBub3QgcHJpbnRlZAorICAgICAgICAjIGluIHRoZSBzYW1lIG9yZGVyLgorICAgICAgICBEZWZhdWx0Q29udGV4dCA9IEMuRGVmYXVsdENvbnRleHQKKyAgICAgICAgRmxvYXRPcGVyYXRpb24gPSBDLkZsb2F0T3BlcmF0aW9uCisgICAgICAgIFJPVU5EX0hBTEZfRE9XTiA9IEMuUk9VTkRfSEFMRl9ET1dOCisKKyAgICAgICAgYyA9IERlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgIGMucHJlYyA9IDQyNTAwMDAwMAorICAgICAgICBjLkVtYXggPSA0MjUwMDAwMDAKKyAgICAgICAgYy5FbWluID0gLTQyNTAwMDAwMAorICAgICAgICBjLnJvdW5kaW5nID0gUk9VTkRfSEFMRl9ET1dOCisgICAgICAgIGMuY2FwaXRhbHMgPSAwCisgICAgICAgIGMuY2xhbXAgPSAxCisgICAgICAgIGZvciBzaWcgaW4gT3JkZXJlZFNpZ25hbHNbQ106CisgICAgICAgICAgICBjLmZsYWdzW3NpZ10gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW3NpZ10gPSBUcnVlCisgICAgICAgIGMuZmxhZ3NbRmxvYXRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICBjLnRyYXBzW0Zsb2F0T3BlcmF0aW9uXSA9IFRydWUKKworICAgICAgICBzID0gYy5fX3JlcHJfXygpCisgICAgICAgIHQgPSAiQ29udGV4dChwcmVjPTQyNTAwMDAwMCwgcm91bmRpbmc9Uk9VTkRfSEFMRl9ET1dOLCAiIFwKKyAgICAgICAgICAgICJFbWluPS00MjUwMDAwMDAsIEVtYXg9NDI1MDAwMDAwLCBjYXBpdGFscz0wLCBjbGFtcD0xLCAiIFwKKyAgICAgICAgICAgICJmbGFncz1bQ2xhbXBlZCwgSW52YWxpZE9wZXJhdGlvbiwgRGl2aXNpb25CeVplcm8sIEluZXhhY3QsICIgXAorICAgICAgICAgICAgICAgICAgICJGbG9hdE9wZXJhdGlvbiwgT3ZlcmZsb3csIFJvdW5kZWQsIFN1Ym5vcm1hbCwgVW5kZXJmbG93XSwgIiBcCisgICAgICAgICAgICAidHJhcHM9W0NsYW1wZWQsIEludmFsaWRPcGVyYXRpb24sIERpdmlzaW9uQnlaZXJvLCBJbmV4YWN0LCAiIFwKKyAgICAgICAgICAgICAgICAgICAiRmxvYXRPcGVyYXRpb24sIE92ZXJmbG93LCBSb3VuZGVkLCBTdWJub3JtYWwsIFVuZGVyZmxvd10pIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHQpCisKKyAgICBkZWYgdGVzdF9jX2NvbnRleHRfZXJyb3JzKHNlbGYpOgorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgT3ZlcmZsb3cgPSBDLk92ZXJmbG93CisgICAgICAgIEZsb2F0T3BlcmF0aW9uID0gQy5GbG9hdE9wZXJhdGlvbgorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBnZXRjb250ZXh0ID0gQy5nZXRjb250ZXh0CisgICAgICAgIHNldGNvbnRleHQgPSBDLnNldGNvbnRleHQKKyAgICAgICAgSEFWRV9DT05GSUdfNjQgPSAoQy5NQVhfUFJFQyA+IDQyNTAwMDAwMCkKKwogICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGUgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKQotICAgICAgICBmb3IgayBpbiB2YXJzKGMpOgotICAgICAgICAgICAgdjEgPSB2YXJzKGMpW2tdCi0gICAgICAgICAgICB2MiA9IHZhcnMoZSlba10KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjEsIHYyKQogCi0gICAgZGVmIHRlc3RfZXF1YWxpdHlfd2l0aF9vdGhlcl90eXBlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJbihEZWNpbWFsKDEwKSwgWydhJywgMS4wLCBEZWNpbWFsKDEwKSwgKDEsMiksIHt9XSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RJbihEZWNpbWFsKDEwKSwgWydhJywgMS4wLCAoMSwyKSwge31dKQorICAgICAgICAjIFNpZ25hbERpY3Q6IGlucHV0IHZhbGlkYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGMuZmxhZ3MuX19zZXRpdGVtX18sIDgwMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGMudHJhcHMuX19zZXRpdGVtX18sIDgwMSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgYy5mbGFncy5fX2RlbGl0ZW1fXywgT3ZlcmZsb3cpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGMudHJhcHMuX19kZWxpdGVtX18sIEludmFsaWRPcGVyYXRpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgJ2ZsYWdzJywgWyd4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywndHJhcHMnLCBbJ3knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNldGF0dHIsIGMsICdmbGFncycsIHswOjF9KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ3RyYXBzJywgezA6MX0pCiAKLSAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgotICAgICAgICAjIEFsbCBjb3BpZXMgc2hvdWxkIGJlIGRlZXAKKyAgICAgICAgIyBUZXN0IGFzc2lnbm1lbnQgZnJvbSBhIHNpZ25hbCBkaWN0IHdpdGggdGhlIGNvcnJlY3QgbGVuZ3RoIGJ1dAorICAgICAgICAjIG9uZSBpbnZhbGlkIGtleS4KKyAgICAgICAgZCA9IGMuZmxhZ3MuY29weSgpCisgICAgICAgIGRlbCBkW0Zsb2F0T3BlcmF0aW9uXQorICAgICAgICBkWyJYWVoiXSA9IDkxMjgzNzE5CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBzZXRhdHRyLCBjLCAnZmxhZ3MnLCBkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgc2V0YXR0ciwgYywgJ3RyYXBzJywgZCkKKworICAgICAgICAjIElucHV0IGNvcm5lciBjYXNlcworICAgICAgICBpbnRfbWF4ID0gMioqNjMtMSBpZiBIQVZFX0NPTkZJR182NCBlbHNlIDIqKjMxLTEKKyAgICAgICAgZ3RfbWF4X2VtYXggPSAxMCoqMTggaWYgSEFWRV9DT05GSUdfNjQgZWxzZSAxMCoqOQorCisgICAgICAgICMgcHJlYywgRW1heCwgRW1pbgorICAgICAgICBmb3IgYXR0ciBpbiBbJ3ByZWMnLCAnRW1heCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgZ3RfbWF4X2VtYXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGF0dHIsIGMsICdFbWluJywgLWd0X21heF9lbWF4KQorCisgICAgICAgICMgcHJlYywgRW1heCwgRW1pbiBpbiBjb250ZXh0IGNvbnN0cnVjdG9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIENvbnRleHQsIHByZWM9Z3RfbWF4X2VtYXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIENvbnRleHQsIEVtYXg9Z3RfbWF4X2VtYXgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIENvbnRleHQsIEVtaW49LWd0X21heF9lbWF4KQorCisgICAgICAgICMgT3ZlcmZsb3cgaW4gY29udmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBwcmVjPWludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgRW1heD1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIEVtaW49LWludF9tYXgtMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgQ29udGV4dCwgcm91bmRpbmc9aW50X21heCsxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBDb250ZXh0LCBjbGFtcD1pbnRfbWF4KzEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIENvbnRleHQsIGNhcGl0YWxzPWludF9tYXgrMSkKKworICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVmFsdWVFcnJvcgorICAgICAgICBmb3IgYXR0ciBpbiAoJ3ByZWMnLCAnRW1pbicsICdFbWF4JywgJ2NhcGl0YWxzJywgJ2NsYW1wJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0yKQorICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvciwgZ2VuZXJhbCBUeXBlRXJyb3IKKyAgICAgICAgZm9yIGF0dHIgaW4gKCdyb3VuZGluZycsKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgrMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIGludF9tYXgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAtaW50X21heC0xKQorCisgICAgICAgICMgT3ZlcmZsb3dFcnJvcjogX3Vuc2FmZV9zZXRwcmVjLCBfdW5zYWZlX3NldGVtaW4sIF91bnNhZmVfc2V0ZW1heAorICAgICAgICBpZiBDLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGF0dHIoYywgJ191bnNhZmVfc2V0cHJlYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRlbWF4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbnRfbWF4LTIpCisKKyAgICAgICAgIyBWYWx1ZUVycm9yOiBfdW5zYWZlX3NldHByZWMsIF91bnNhZmVfc2V0ZW1pbiwgX3Vuc2FmZV9zZXRlbWF4CisgICAgICAgIGlmIEMuTUFYX1BSRUMgPT0gNDI1MDAwMDAwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRwcmVjJyksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldHByZWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwNzAwMDAwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRhdHRyKGMsICdfdW5zYWZlX3NldGVtaW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xMDcwMDAwMDAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0YXR0cihjLCAnX3Vuc2FmZV9zZXRlbWluJyksIDEpCisKKyAgICAgICAgIyBjYXBpdGFscywgY2xhbXAKKyAgICAgICAgZm9yIGF0dHIgaW4gWydjYXBpdGFscycsICdjbGFtcCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLTEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCBbMSwyLDNdKQorICAgICAgICAgICAgaWYgSEFWRV9DT05GSUdfNjQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMioqMzIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgMioqMzIrMSkKKworICAgICAgICAjIEludmFsaWQgbG9jYWwgY29udGV4dAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGV4ZWMsICd3aXRoIGxvY2FsY29udGV4dCgieHl6Iik6IHBhc3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKworICAgICAgICAjIHNldGNvbnRleHQKKyAgICAgICAgc2F2ZWRfY29udGV4dCA9IGdldGNvbnRleHQoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGNvbnRleHQsICJ4eXoiKQorICAgICAgICBzZXRjb250ZXh0KHNhdmVkX2NvbnRleHQpCisKKyAgICBAcmVxdWlyZXNfZXh0cmFfZnVuY3Rpb25hbGl0eQorICAgIGRlZiB0ZXN0X2NfY29udGV4dF9lcnJvcnNfZXh0cmEoc2VsZik6CisgICAgICAgIENvbnRleHQgPSBDLkNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgZ2V0Y29udGV4dCA9IEMuZ2V0Y29udGV4dAorICAgICAgICBzZXRjb250ZXh0ID0gQy5zZXRjb250ZXh0CisgICAgICAgIEhBVkVfQ09ORklHXzY0ID0gKEMuTUFYX1BSRUMgPiA0MjUwMDAwMDApCisKICAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5KCkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChjKSwgaWQoZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoYy5mbGFncyksIGlkKGQuZmxhZ3MpKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGMudHJhcHMpLCBpZChkLnRyYXBzKSkKIAotICAgIGRlZiB0ZXN0X19jbGFtcChzZWxmKToKLSAgICAgICAgIyBJbiBQeXRob24gMy4yLCB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGUgYF9jbGFtcGAgd2FzIG1hZGUKLSAgICAgICAgIyBwdWJsaWMgKGlzc3VlIDg1NDApLCB3aXRoIHRoZSBvbGQgYF9jbGFtcGAgYmVjb21pbmcgYQotICAgICAgICAjIHByb3BlcnR5IHdyYXBwaW5nIGBjbGFtcGAuICBGb3IgdGhlIGR1cmF0aW9uIG9mIFB5dGhvbiAzLjIKLSAgICAgICAgIyBvbmx5LCB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBnZXR0YWJsZS9zZXR0YWJsZSB2aWEgYm90aAotICAgICAgICAjIGBjbGFtcGAgYW5kIGBfY2xhbXBgOyBpbiBQeXRob24gMy4zLCBgX2NsYW1wYCBzaG91bGQgYmUKLSAgICAgICAgIyByZW1vdmVkLgotICAgICAgICBjID0gQ29udGV4dChjbGFtcCA9IDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgMCkKKyAgICAgICAgIyBJbnB1dCBjb3JuZXIgY2FzZXMKKyAgICAgICAgaW50X21heCA9IDIqKjYzLTEgaWYgSEFWRV9DT05GSUdfNjQgZWxzZSAyKiozMS0xCiAKLSAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICAgICAgYy5fY2xhbXAgPSAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgMSkKLSAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9jbGFtcCwgMSkKKyAgICAgICAgIyBPdmVyZmxvd0Vycm9yLCBnZW5lcmFsIFZhbHVlRXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIGludF9tYXgrMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIC1pbnRfbWF4LTIpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIGludF9tYXgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgLWludF9tYXgtMSkKKworICAgICAgICAjIE92ZXJmbG93RXJyb3IsIGdlbmVyYWwgVHlwZUVycm9yCisgICAgICAgIGZvciBhdHRyIGluICgnX2ZsYWdzJywgJ190cmFwcycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCsxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgLWludF9tYXgtMikKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0YXR0ciwgYywgYXR0ciwgaW50X21heCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsIC1pbnRfbWF4LTEpCisKKyAgICAgICAgIyBfYWxsY3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0YXR0ciwgYywgJ19hbGxjcicsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgWzEsMiwzXSkKKyAgICAgICAgaWYgSEFWRV9DT05GSUdfNjQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgMioqMzIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRhdHRyLCBjLCAnX2FsbGNyJywgMioqMzIrMSkKKworICAgICAgICAjIF9mbGFncywgX3RyYXBzCisgICAgICAgIGZvciBhdHRyIGluIFsnX2ZsYWdzJywgJ190cmFwcyddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRhdHRyLCBjLCBhdHRyLCA5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGF0dHIsIGMsIGF0dHIsICd4JykKKworICAgIGRlZiB0ZXN0X2NfdmFsaWRfY29udGV4dChzZWxmKToKKyAgICAgICAgIyBUaGVzZSB0ZXN0cyBhcmUgZm9yIGNvZGUgY292ZXJhZ2UgaW4gX2RlY2ltYWwuCisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAorICAgICAgICBST1VORF9IQUxGX1VQID0gQy5ST1VORF9IQUxGX1VQCisgICAgICAgIENsYW1wZWQgPSBDLkNsYW1wZWQKKyAgICAgICAgVW5kZXJmbG93ID0gQy5VbmRlcmZsb3cKKyAgICAgICAgSW5leGFjdCA9IEMuSW5leGFjdAorICAgICAgICBSb3VuZGVkID0gQy5Sb3VuZGVkCisgICAgICAgIFN1Ym5vcm1hbCA9IEMuU3Vibm9ybWFsCisKKyAgICAgICAgYyA9IERlZmF1bHRDb250ZXh0LmNvcHkoKQorCisgICAgICAgICMgRXhlcmNpc2UgYWxsIGdldHRlcnMgYW5kIHNldHRlcnMKKyAgICAgICAgYy5wcmVjID0gMzQKKyAgICAgICAgYy5yb3VuZGluZyA9IFJPVU5EX0hBTEZfVVAKKyAgICAgICAgYy5FbWF4ID0gMzAwMAorICAgICAgICBjLkVtaW4gPSAtMzAwMAorICAgICAgICBjLmNhcGl0YWxzID0gMQogICAgICAgICBjLmNsYW1wID0gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wcmVjLCAzNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCBST1VORF9IQUxGX1VQKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRW1pbiwgLTMwMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCAzMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgMCkKLSAgICAgICAgd2l0aCBjaGVja193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9jbGFtcCwgMCkKIAotICAgIGRlZiB0ZXN0X2FicyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5hYnMoRGVjaW1hbCgtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hYnMoLTEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuYWJzLCAnLTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuRXRpbnkoKSwgLTMwMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FdG9wKCksIDI5NjcpCiAKLSAgICBkZWYgdGVzdF9hZGQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuYWRkKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoRGVjaW1hbCgxKSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5hZGQoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5hZGQsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmFkZCwgMSwgJzEnKQorICAgICAgICAjIEV4ZXJjaXNlIGFsbCB1bnNhZmUgc2V0dGVycworICAgICAgICBpZiBDLk1BWF9QUkVDID09IDQyNTAwMDAwMDoKKyAgICAgICAgICAgIGMuX3Vuc2FmZV9zZXRwcmVjKDk5OTk5OTk5OSkKKyAgICAgICAgICAgIGMuX3Vuc2FmZV9zZXRlbWF4KDk5OTk5OTk5OSkKKyAgICAgICAgICAgIGMuX3Vuc2FmZV9zZXRlbWluKC05OTk5OTk5OTkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgOTk5OTk5OTk5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtYXgsIDk5OTk5OTk5OSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWluLCAtOTk5OTk5OTk5KQogCi0gICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZShEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmUoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlLCAxLCAnMScpCisgICAgQHJlcXVpcmVzX2V4dHJhX2Z1bmN0aW9uYWxpdHkKKyAgICBkZWYgdGVzdF9jX3ZhbGlkX2NvbnRleHRfZXh0cmEoc2VsZik6CisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAogCi0gICAgZGVmIHRlc3RfY29tcGFyZV9zaWduYWwoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfc2lnbmFsKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgxKSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3NpZ25hbCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfc2lnbmFsLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3NpZ25hbCwgMSwgJzEnKQorICAgICAgICBjID0gRGVmYXVsdENvbnRleHQuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fYWxsY3IsIDEpCisgICAgICAgIGMuX2FsbGNyID0gMAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuX2FsbGNyLCAwKQogCi0gICAgZGVmIHRlc3RfY29tcGFyZV90b3RhbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb21wYXJlX3RvdGFsLCAxLCAnMScpCisgICAgZGVmIHRlc3RfY19yb3VuZChzZWxmKToKKyAgICAgICAgIyBSZXN0cmljdGVkIGlucHV0LgorICAgICAgICBEZWNpbWFsID0gQy5EZWNpbWFsCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgTUFYX0VNQVggPSBDLk1BWF9FTUFYCisgICAgICAgIE1JTl9FVElOWSA9IEMuTUlOX0VUSU5ZCisgICAgICAgIGludF9tYXggPSAyKio2My0xIGlmIEMuTUFYX1BSRUMgPiA0MjUwMDAwMDAgZWxzZSAyKiozMS0xCiAKLSAgICBkZWYgdGVzdF9jb21wYXJlX3RvdGFsX21hZyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29tcGFyZV90b3RhbF9tYWcoMSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb21wYXJlX3RvdGFsX21hZyhEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvbXBhcmVfdG90YWxfbWFnKDEsIERlY2ltYWwoMSkpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuY29tcGFyZV90b3RhbF9tYWcsICcxJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvbXBhcmVfdG90YWxfbWFnLCAxLCAnMScpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWludF9tYXgtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwoIjEuMjMiKS5fX3JvdW5kX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfbWF4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMSIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChNQVhfRU1BWCsxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEMuSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMSIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbnQoTUlOX0VUSU5ZLTEpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCgiMS4yMyIpLl9fcm91bmRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1pbnRfbWF4LTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBEZWNpbWFsKCIxLjIzIikuX19yb3VuZF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X21heCsxKQogCi0gICAgZGVmIHRlc3RfY29weV9hYnMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29weV9hYnMoRGVjaW1hbCgtMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X2FicygtMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X2FicywgJy0xJykKKyAgICBkZWYgdGVzdF9jX2Zvcm1hdChzZWxmKToKKyAgICAgICAgIyBSZXN0cmljdGVkIGlucHV0CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBSb3VuZGVkID0gQy5Sb3VuZGVkCisgICAgICAgIGxvY2FsY29udGV4dCA9IEMubG9jYWxjb250ZXh0CisgICAgICAgIEhBVkVfQ09ORklHXzY0ID0gKEMuTUFYX1BSRUMgPiA0MjUwMDAwMDApCiAKLSAgICBkZWYgdGVzdF9jb3B5X2RlY2ltYWwoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuY29weV9kZWNpbWFsKERlY2ltYWwoLTEpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9kZWNpbWFsKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfZGVjaW1hbCwgJy0xJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sICI9MTAuMTAiLCBbXSwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDEpLl9fZm9ybWF0X18sICI9MTAuMTAiLCA5KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgW10pCiAKLSAgICBkZWYgdGVzdF9jb3B5X25lZ2F0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X25lZ2F0ZShEZWNpbWFsKC0xKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfbmVnYXRlKC0xKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNvcHlfbmVnYXRlLCAnLTEnKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgYy50cmFwc1tSb3VuZGVkXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIERlY2ltYWwoMSkuX19mb3JtYXRfXywgIjw+PTEwLjEwIikKKyAgICAgICAgICAgIG1heHNpemUgPSAyKio2My0xIGlmIEhBVkVfQ09ORklHXzY0IGVsc2UgMioqMzEtMQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLl9fZm9ybWF0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPSVkLjEiICUgbWF4c2l6ZSkKIAotICAgIGRlZiB0ZXN0X2NvcHlfc2lnbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5jb3B5X3NpZ24oRGVjaW1hbCgxKSwgRGVjaW1hbCgtMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jb3B5X3NpZ24oMSwgLTIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY29weV9zaWduKERlY2ltYWwoMSksIC0yKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sICcxJywgLTIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIDEsICctMicpCisgICAgZGVmIHRlc3RfY19pbnRlZ3JhbChzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBJbmV4YWN0ID0gQy5JbmV4YWN0CisgICAgICAgIFJPVU5EX1VQID0gQy5ST1VORF9VUAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAogCi0gICAgZGVmIHRlc3RfZGl2aWRlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmRpdmlkZShEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2aWRlLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5kaXZpZGUsIDEsICcyJykKKyAgICAgICAgeCA9IERlY2ltYWwoMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19pbnRlZ3JhbCgpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsLCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWwsIDEwLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbCwgMTApCiAKLSAgICBkZWYgdGVzdF9kaXZpZGVfaW50KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmRpdmlkZV9pbnQoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdmlkZV9pbnQoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5kaXZpZGVfaW50KERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZGl2aWRlX2ludCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdmlkZV9pbnQsIDEsICcyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2ludGVncmFsX3ZhbHVlKCksIDEwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfdmFsdWUsICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF92YWx1ZSwgMTAsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX3ZhbHVlLCAxMCkKIAotICAgIGRlZiB0ZXN0X2Rpdm1vZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5kaXZtb2QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZChEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmRpdm1vZCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZGl2bW9kLCAxLCAnMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC50b19pbnRlZ3JhbF9leGFjdCgpLCAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHgudG9faW50ZWdyYWxfZXhhY3QsIDEwLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeC50b19pbnRlZ3JhbF9leGFjdCwgMTApCiAKLSAgICBkZWYgdGVzdF9leHAoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZXhwKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZXhwKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmV4cCwgJzEwJykKKyAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoKSBhcyBjOgorICAgICAgICAgICAgeCA9IERlY2ltYWwoIjk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5LjkiKS50b19pbnRlZ3JhbF92YWx1ZShST1VORF9VUCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgRGVjaW1hbCgnMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJykpCiAKLSAgICBkZWYgdGVzdF9mbWEoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuZm1hKERlY2ltYWwoMiksIERlY2ltYWwoMyksIERlY2ltYWwoNCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgMywgNCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoRGVjaW1hbCgyKSwgMywgNCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgRGVjaW1hbCgzKSwgNCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoMiwgMywgRGVjaW1hbCg0KSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5mbWEoRGVjaW1hbCgyKSwgRGVjaW1hbCgzKSwgNCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5mbWEsICcyJywgMywgNCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmZtYSwgMiwgJzMnLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZm1hLCAyLCAzLCAnNCcpCisgICAgICAgICAgICB4ID0gRGVjaW1hbCgiOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkuOSIpLnRvX2ludGVncmFsX2V4YWN0KFJPVU5EX1VQKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBEZWNpbWFsKCcxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnKSkKIAotICAgIGRlZiB0ZXN0X2lzX2Zpbml0ZShzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19maW5pdGUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19maW5pdGUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfZmluaXRlLCAnMTAnKQorICAgICAgICAgICAgYy50cmFwc1tJbmV4YWN0XSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZXhhY3QsIERlY2ltYWwoIjk5OS45IikudG9faW50ZWdyYWxfZXhhY3QsIFJPVU5EX1VQKQogCi0gICAgZGVmIHRlc3RfaXNfaW5maW5pdGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfaW5maW5pdGUoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19pbmZpbml0ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc19pbmZpbml0ZSwgJzEwJykKKyAgICBkZWYgdGVzdF9jX2Z1bmNzKHNlbGYpOgorICAgICAgICAjIEludmFsaWQgYXJndW1lbnRzCisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBEaXZpc2lvbkJ5WmVybyA9IEMuRGl2aXNpb25CeVplcm8KKyAgICAgICAgUk9VTkRfVVAgPSBDLlJPVU5EX1VQCisgICAgICAgIGdldGNvbnRleHQgPSBDLmdldGNvbnRleHQKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKIAotICAgIGRlZiB0ZXN0X2lzX25hbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19uYW4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19uYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfbmFuLCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERlY2ltYWwoJzkuOTllMTAnKS50b19lbmdfc3RyaW5nKCksICc5OS45RSs5JykKIAotICAgIGRlZiB0ZXN0X2lzX25vcm1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19ub3JtYWwoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19ub3JtYWwoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfbm9ybWFsLCAnMTAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvdywgRGVjaW1hbCgxKSwgMiwgIjMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIERlY2ltYWwoOSkubnVtYmVyX2NsYXNzLCAieCIsICJ5IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBEZWNpbWFsKDkpLnNhbWVfcXVhbnR1bSwgMywgIngiLCAieSIpCiAKLSAgICBkZWYgdGVzdF9pc19xbmFuKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmlzX3FuYW4oRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19xbmFuKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX3FuYW4sICcxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgW10KKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUtMTAwMDAwJyksIGdldGNvbnRleHQoKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgVHlwZUVycm9yLAorICAgICAgICAgICAgRGVjaW1hbCgiMS4yMzQ1Njc4OSIpLnF1YW50aXplLCBEZWNpbWFsKCcxZS0xMDAwMDAnKSwgMTAKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFR5cGVFcnJvciwKKyAgICAgICAgICAgIERlY2ltYWwoIjEuMjM0NTY3ODkiKS5xdWFudGl6ZSwgRGVjaW1hbCgnMWUtMTAwMDAwJyksIFJPVU5EX1VQLCAxMDAwCisgICAgICAgICkKIAotICAgIGRlZiB0ZXN0X2lzX3NpZ25lZChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zaWduZWQoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zaWduZWQoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc2lnbmVkLCAnMTAnKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CisgICAgICAgICAgICBjLmNsZWFyX3RyYXBzKCkKIAotICAgIGRlZiB0ZXN0X2lzX3NuYW4oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuaXNfc25hbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmlzX3NuYW4oMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc25hbiwgJzEwJykKKyAgICAgICAgICAgICMgSW52YWxpZCBhcmd1bWVudHMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5jb3B5X3NpZ24sIERlY2ltYWwoMSksICJ4IiwgInkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmNhbm9uaWNhbCwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmlzX2Nhbm9uaWNhbCwgMjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmRpdm1vZCwgOSwgOCwgIngiLCAieSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2FtZV9xdWFudHVtLCA5LCAzLCAieCIsICJ5IikKIAotICAgIGRlZiB0ZXN0X2lzX3N1Ym5vcm1hbChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc19zdWJub3JtYWwoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5pc19zdWJub3JtYWwoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuaXNfc3Vibm9ybWFsLCAnMTAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jYW5vbmljYWwoRGVjaW1hbCgyMDApKSksICcyMDAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJhZGl4KCksIDEwKQogCi0gICAgZGVmIHRlc3RfaXNfemVybyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5pc196ZXJvKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuaXNfemVybygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5pc196ZXJvLCAnMTAnKQorICAgICAgICAgICAgYy50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSBUcnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEaXZpc2lvbkJ5WmVybywgRGVjaW1hbCg5KS5fX2Rpdm1vZF9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGl2aXNpb25CeVplcm8sIGMuZGl2bW9kLCA5LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0pCiAKLSAgICBkZWYgdGVzdF9sbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sbihEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxuKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxuLCAnMTAnKQorICAgICAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgICAgICBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCg5KS5fX2Rpdm1vZF9fLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgYy5kaXZtb2QsIDksIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tEaXZpc2lvbkJ5WmVyb10pCiAKLSAgICBkZWYgdGVzdF9sb2cxMChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2cxMChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZzEwKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZzEwLCAnMTAnKQorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKKyAgICAgICAgICAgIGMucHJlYyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIHBvdywgRGVjaW1hbCgxMDAwKSwgMSwgNTAxKQogCi0gICAgZGVmIHRlc3RfbG9nYihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2diKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9nYigxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2diLCAnMTAnKQorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19jb250ZXh0X3RlbXBsYXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEMuQmFzaWNDb250ZXh0Ll90cmFwcywKKyAgICAgICAgICAgIEMuRGVjSUVFRUludmFsaWRPcGVyYXRpb258Qy5EZWNEaXZpc2lvbkJ5WmVyb3xDLkRlY092ZXJmbG93fAorICAgICAgICAgICAgQy5EZWNVbmRlcmZsb3d8Qy5EZWNDbGFtcGVkCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEMuRGVmYXVsdENvbnRleHQuX3RyYXBzLAorICAgICAgICAgICAgQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbnxDLkRlY0RpdmlzaW9uQnlaZXJvfEMuRGVjT3ZlcmZsb3cKKyAgICAgICAgKQogCi0gICAgZGVmIHRlc3RfbG9naWNhbF9hbmQoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG9naWNhbF9hbmQoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfYW5kKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9hbmQoRGVjaW1hbCgxKSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2FuZCgxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfYW5kLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX2FuZCwgMSwgJzEnKQorICAgIEByZXF1aXJlc19leHRyYV9mdW5jdGlvbmFsaXR5CisgICAgZGVmIHRlc3RfY19zaWduYWxfZGljdChzZWxmKToKIAotICAgIGRlZiB0ZXN0X2xvZ2ljYWxfaW52ZXJ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLmxvZ2ljYWxfaW52ZXJ0KERlY2ltYWwoMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX2ludmVydCgxMDAwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfaW52ZXJ0LCAnMTAwMCcpCisgICAgICAgICMgU2lnbmFsRGljdCBjb3ZlcmFnZQorICAgICAgICBDb250ZXh0ID0gQy5Db250ZXh0CisgICAgICAgIERlZmF1bHRDb250ZXh0ID0gQy5EZWZhdWx0Q29udGV4dAogCi0gICAgZGVmIHRlc3RfbG9naWNhbF9vcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5sb2dpY2FsX29yKERlY2ltYWwoMSksIERlY2ltYWwoMSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX29yKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF9vcihEZWNpbWFsKDEpLCAxKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfb3IoMSwgRGVjaW1hbCgxKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX29yLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX29yLCAxLCAnMScpCisgICAgICAgIEludmFsaWRPcGVyYXRpb24gPSBDLkludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGl2aXNpb25CeVplcm8gPSBDLkRpdmlzaW9uQnlaZXJvCisgICAgICAgIE92ZXJmbG93ID0gQy5PdmVyZmxvdworICAgICAgICBTdWJub3JtYWwgPSBDLlN1Ym5vcm1hbAorICAgICAgICBVbmRlcmZsb3cgPSBDLlVuZGVyZmxvdworICAgICAgICBSb3VuZGVkID0gQy5Sb3VuZGVkCisgICAgICAgIEluZXhhY3QgPSBDLkluZXhhY3QKKyAgICAgICAgQ2xhbXBlZCA9IEMuQ2xhbXBlZAogCi0gICAgZGVmIHRlc3RfbG9naWNhbF94b3Ioc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubG9naWNhbF94b3IoRGVjaW1hbCgxKSwgRGVjaW1hbCgxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLmxvZ2ljYWxfeG9yKDEsIDEpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubG9naWNhbF94b3IoRGVjaW1hbCgxKSwgMSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5sb2dpY2FsX3hvcigxLCBEZWNpbWFsKDEpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLmxvZ2ljYWxfeG9yLCAnMScsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5sb2dpY2FsX3hvciwgMSwgJzEnKQorICAgICAgICBEZWNDbGFtcGVkID0gQy5EZWNDbGFtcGVkCisgICAgICAgIERlY0ludmFsaWRPcGVyYXRpb24gPSBDLkRlY0ludmFsaWRPcGVyYXRpb24KKyAgICAgICAgRGVjSUVFRUludmFsaWRPcGVyYXRpb24gPSBDLkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uCiAKLSAgICBkZWYgdGVzdF9tYXgoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubWF4KERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXgoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXgsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1heCwgMSwgJzInKQorICAgICAgICBkZWYgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChzaWduYWwsIHNpZ25hbF9kaWN0KToKKyAgICAgICAgICAgIGZvciBzaWcgaW4gc2lnbmFsX2RpY3Q6CisgICAgICAgICAgICAgICAgaWYgc2lnID09IHNpZ25hbDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpZ25hbF9kaWN0W3NpZ10pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaWduYWxfZGljdFtzaWddKQogCi0gICAgZGVmIHRlc3RfbWF4X21hZyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5tYXhfbWFnKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tYXhfbWFnKDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWF4X21hZyhEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1heF9tYWcoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXhfbWFnLCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tYXhfbWFnLCAxLCAnMicpCisgICAgICAgIGMgPSBEZWZhdWx0Q29udGV4dC5jb3B5KCkKKworICAgICAgICAjIFNpZ25hbCBkaWN0IG1ldGhvZHMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE92ZXJmbG93IGluIGMudHJhcHMpCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBmb3IgayBpbiBjLnRyYXBzLmtleXMoKToKKyAgICAgICAgICAgIGMudHJhcHNba10gPSBUcnVlCisgICAgICAgIGZvciB2IGluIGMudHJhcHMudmFsdWVzKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodikKKyAgICAgICAgYy5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBrLCB2IGluIGMudHJhcHMuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMuZmxhZ3MuZ2V0KE92ZXJmbG93KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhjLmZsYWdzLmdldCgieCIpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuZmxhZ3MuZ2V0KCJ4IiwgInkiKSwgInkiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuZmxhZ3MuZ2V0LCAieCIsICJ5IiwgInoiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGMuZmxhZ3MpLCBsZW4oYy50cmFwcykpCisgICAgICAgIHMgPSBzeXMuZ2V0c2l6ZW9mKGMuZmxhZ3MpCisgICAgICAgIHMgPSBzeXMuZ2V0c2l6ZW9mKGMudHJhcHMpCisgICAgICAgIHMgPSBjLmZsYWdzLl9fcmVwcl9fKCkKKworICAgICAgICAjIFNldCBmbGFncy90cmFwcy4KKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGMuX2ZsYWdzID0gRGVjQ2xhbXBlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoYy5mbGFnc1tDbGFtcGVkXSkKKworICAgICAgICBjLmNsZWFyX3RyYXBzKCkKKyAgICAgICAgYy5fdHJhcHMgPSBEZWNJbnZhbGlkT3BlcmF0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dKQorCisgICAgICAgICMgU2V0IGZsYWdzL3RyYXBzIGZyb20gZGljdGlvbmFyeS4KKyAgICAgICAgYy5jbGVhcl9mbGFncygpCisgICAgICAgIGQgPSBjLmZsYWdzLmNvcHkoKQorICAgICAgICBkW0RpdmlzaW9uQnlaZXJvXSA9IFRydWUKKyAgICAgICAgYy5mbGFncyA9IGQKKyAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChEaXZpc2lvbkJ5WmVybywgYy5mbGFncykKIAotICAgIGRlZiB0ZXN0X21pbihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5taW4oRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbigxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm1pbiwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluLCAxLCAnMicpCisgICAgICAgIGMuY2xlYXJfdHJhcHMoKQorICAgICAgICBkID0gYy50cmFwcy5jb3B5KCkKKyAgICAgICAgZFtVbmRlcmZsb3ddID0gVHJ1ZQorICAgICAgICBjLnRyYXBzID0gZAorICAgICAgICBhc3NlcnRJc0V4Y2x1c2l2ZWx5U2V0KFVuZGVyZmxvdywgYy50cmFwcykKIAotICAgIGRlZiB0ZXN0X21pbl9tYWcoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubWluX21hZyhEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubWluX21hZygxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm1pbl9tYWcoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW5fbWFnKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluX21hZywgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubWluX21hZywgMSwgJzInKQorICAgICAgICAjIFJhbmRvbSBjb25zdHJ1Y3RvcnMKKyAgICAgICAgSW50U2lnbmFscyA9IHsKKyAgICAgICAgICBDbGFtcGVkOiBDLkRlY0NsYW1wZWQsCisgICAgICAgICAgUm91bmRlZDogQy5EZWNSb3VuZGVkLAorICAgICAgICAgIEluZXhhY3Q6IEMuRGVjSW5leGFjdCwKKyAgICAgICAgICBTdWJub3JtYWw6IEMuRGVjU3Vibm9ybWFsLAorICAgICAgICAgIFVuZGVyZmxvdzogQy5EZWNVbmRlcmZsb3csCisgICAgICAgICAgT3ZlcmZsb3c6IEMuRGVjT3ZlcmZsb3csCisgICAgICAgICAgRGl2aXNpb25CeVplcm86IEMuRGVjRGl2aXNpb25CeVplcm8sCisgICAgICAgICAgSW52YWxpZE9wZXJhdGlvbjogQy5EZWNJRUVFSW52YWxpZE9wZXJhdGlvbgorICAgICAgICB9CisgICAgICAgIEludENvbmQgPSBbCisgICAgICAgICAgQy5EZWNEaXZpc2lvbkltcG9zc2libGUsIEMuRGVjRGl2aXNpb25VbmRlZmluZWQsIEMuRGVjRnB1RXJyb3IsCisgICAgICAgICAgQy5EZWNJbnZhbGlkQ29udGV4dCwgQy5EZWNJbnZhbGlkT3BlcmF0aW9uLCBDLkRlY01hbGxvY0Vycm9yLAorICAgICAgICAgIEMuRGVjQ29udmVyc2lvblN5bnRheCwKKyAgICAgICAgXQogCi0gICAgZGVmIHRlc3RfbWludXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubWludXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5taW51cygxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5taW51cywgJzEwJykKKyAgICAgICAgbGltID0gbGVuKE9yZGVyZWRTaWduYWxzW0NdKQorICAgICAgICBmb3IgciBpbiByYW5nZShsaW0pOgorICAgICAgICAgICAgZm9yIHQgaW4gcmFuZ2UobGltKToKKyAgICAgICAgICAgICAgICBmb3Igcm91bmQgaW4gUm91bmRpbmdNb2Rlc1tDXToKKyAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByYW5kb20uc2FtcGxlKE9yZGVyZWRTaWduYWxzW0NdLCByKQorICAgICAgICAgICAgICAgICAgICB0cmFwcyA9IHJhbmRvbS5zYW1wbGUoT3JkZXJlZFNpZ25hbHNbQ10sIHQpCisgICAgICAgICAgICAgICAgICAgIHByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIDEwMDAwKQorICAgICAgICAgICAgICAgICAgICBlbWluID0gcmFuZG9tLnJhbmRyYW5nZSgtMTAwMDAsIDApCisgICAgICAgICAgICAgICAgICAgIGVtYXggPSByYW5kb20ucmFuZHJhbmdlKDAsIDEwMDAwKQorICAgICAgICAgICAgICAgICAgICBjbGFtcCA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMikKKyAgICAgICAgICAgICAgICAgICAgY2FwcyA9IHJhbmRvbS5yYW5kcmFuZ2UoMCwgMikKKyAgICAgICAgICAgICAgICAgICAgY3IgPSByYW5kb20ucmFuZHJhbmdlKDAsIDIpCisgICAgICAgICAgICAgICAgICAgIGMgPSBDb250ZXh0KHByZWM9cHJlYywgcm91bmRpbmc9cm91bmQsIEVtaW49ZW1pbiwgRW1heD1lbWF4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBpdGFscz1jYXBzLCBjbGFtcD1jbGFtcCwgZmxhZ3M9bGlzdChmbGFncyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBzPWxpc3QodHJhcHMpKQogCi0gICAgZGVmIHRlc3RfbXVsdGlwbHkoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubXVsdGlwbHkoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm11bHRpcGx5KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubXVsdGlwbHkoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5tdWx0aXBseSgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm11bHRpcGx5LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5tdWx0aXBseSwgMSwgJzInKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucHJlYywgcHJlYykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJvdW5kaW5nLCByb3VuZCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLkVtaW4sIGVtaW4pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5FbWF4LCBlbWF4KQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuY2FwaXRhbHMsIGNhcHMpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5jbGFtcCwgY2xhbXApCiAKLSAgICBkZWYgdGVzdF9uZXh0X21pbnVzKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5leHRfbWludXMoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X21pbnVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfbWludXMsICcxMCcpCisgICAgICAgICAgICAgICAgICAgIGYgPSAwCisgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgICAgZiB8PSBJbnRTaWduYWxzW3hdCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5fZmxhZ3MsIGYpCiAKLSAgICBkZWYgdGVzdF9uZXh0X3BsdXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMubmV4dF9wbHVzKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF9wbHVzKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLm5leHRfcGx1cywgJzEwJykKKyAgICAgICAgICAgICAgICAgICAgZiA9IDAKKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gdHJhcHM6CisgICAgICAgICAgICAgICAgICAgICAgICBmIHw9IEludFNpZ25hbHNbeF0KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl90cmFwcywgZikKIAotICAgIGRlZiB0ZXN0X25leHRfdG93YXJkKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5uZXh0X3Rvd2FyZCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5leHRfdG93YXJkKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubmV4dF90b3dhcmQoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5uZXh0X3Rvd2FyZCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMubmV4dF90b3dhcmQsIDEsICcyJykKKyAgICAgICAgZm9yIGNvbmQgaW4gSW50Q29uZDoKKyAgICAgICAgICAgIGMuX2ZsYWdzID0gY29uZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMuX2ZsYWdzJkRlY0lFRUVJbnZhbGlkT3BlcmF0aW9uKQorICAgICAgICAgICAgYXNzZXJ0SXNFeGNsdXNpdmVseVNldChJbnZhbGlkT3BlcmF0aW9uLCBjLmZsYWdzKQogCi0gICAgZGVmIHRlc3Rfbm9ybWFsaXplKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLm5vcm1hbGl6ZShEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLm5vcm1hbGl6ZSgxMCksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5ub3JtYWxpemUsICcxMCcpCisgICAgICAgIGZvciBjb25kIGluIEludENvbmQ6CisgICAgICAgICAgICBjLl90cmFwcyA9IGNvbmQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjLl90cmFwcyZEZWNJRUVFSW52YWxpZE9wZXJhdGlvbikKKyAgICAgICAgICAgIGFzc2VydElzRXhjbHVzaXZlbHlTZXQoSW52YWxpZE9wZXJhdGlvbiwgYy50cmFwcykKIAotICAgIGRlZiB0ZXN0X251bWJlcl9jbGFzcyhzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKDEyMyksIGMubnVtYmVyX2NsYXNzKERlY2ltYWwoMTIzKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5udW1iZXJfY2xhc3MoMCksIGMubnVtYmVyX2NsYXNzKERlY2ltYWwoMCkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMubnVtYmVyX2NsYXNzKC00NSksIGMubnVtYmVyX2NsYXNzKERlY2ltYWwoLTQ1KSkpCisgICAgZGVmIHRlc3RfaW52YWxpZF9vdmVycmlkZShzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAogCi0gICAgZGVmIHRlc3RfcG93ZXIoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIDQsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgNCwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5wb3dlcigxLCBEZWNpbWFsKDQpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBvd2VyKDEsIDQsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucG93ZXIoRGVjaW1hbCgxKSwgRGVjaW1hbCg0KSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5wb3dlciwgJzEnLCA0LCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucG93ZXIsIDEsICc0JywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnBvd2VyLCAxLCA0LCAnMicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gbG9jYWxlIGltcG9ydCBDSEFSX01BWAorICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICByZXR1cm4KIAotICAgIGRlZiB0ZXN0X3BsdXMoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucGx1cyhEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnBsdXMoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucGx1cywgJzEwJykKKyAgICAgICAgZGVmIG1ha2VfZ3JvdXBpbmcobHN0KToKKyAgICAgICAgICAgIHJldHVybiAnJy5qb2luKFtjaHIoeCkgZm9yIHggaW4gbHN0XSkKIAotICAgIGRlZiB0ZXN0X3F1YW50aXplKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnF1YW50aXplKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5xdWFudGl6ZSgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnF1YW50aXplKERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucXVhbnRpemUoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5xdWFudGl6ZSwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucXVhbnRpemUsIDEsICcyJykKKyAgICAgICAgZGVmIGdldF9mbXQoeCwgb3ZlcnJpZGU9Tm9uZSwgZm10PSduJyk6CisgICAgICAgICAgICByZXR1cm4gRGVjaW1hbCh4KS5fX2Zvcm1hdF9fKGZtdCwgb3ZlcnJpZGUpCiAKLSAgICBkZWYgdGVzdF9yZW1haW5kZXIoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucmVtYWluZGVyKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yZW1haW5kZXIsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlciwgMSwgJzInKQorICAgICAgICBpbnZhbGlkX2dyb3VwaW5nID0geworICAgICAgICAgICAgJ2RlY2ltYWxfcG9pbnQnIDogJywnLAorICAgICAgICAgICAgJ2dyb3VwaW5nJyA6IG1ha2VfZ3JvdXBpbmcoWzI1NSwgMjU1LCAwXSksCisgICAgICAgICAgICAndGhvdXNhbmRzX3NlcCcgOiAnLCcKKyAgICAgICAgfQorICAgICAgICBpbnZhbGlkX2RvdCA9IHsKKyAgICAgICAgICAgICdkZWNpbWFsX3BvaW50JyA6ICd4eHh4eCcsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJywnCisgICAgICAgIH0KKyAgICAgICAgaW52YWxpZF9zZXAgPSB7CisgICAgICAgICAgICAnZGVjaW1hbF9wb2ludCcgOiAnLicsCisgICAgICAgICAgICAnZ3JvdXBpbmcnIDogbWFrZV9ncm91cGluZyhbMywgMywgMF0pLAorICAgICAgICAgICAgJ3Rob3VzYW5kc19zZXAnIDogJ3l5eXl5JworICAgICAgICB9CiAKLSAgICBkZWYgdGVzdF9yZW1haW5kZXJfbmVhcihzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEpLCBEZWNpbWFsKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMucmVtYWluZGVyX25lYXIoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yZW1haW5kZXJfbmVhcihEZWNpbWFsKDEpLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnJlbWFpbmRlcl9uZWFyKDEsIERlY2ltYWwoMikpLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMucmVtYWluZGVyX25lYXIsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJlbWFpbmRlcl9uZWFyLCAxLCAnMicpCisgICAgICAgIGlmIENIQVJfTUFYID09IDEyNzogIyBuZWdhdGl2ZSBncm91cGluZyBpbiBvdmVycmlkZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2ZtdCwgMTIzNDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZhbGlkX2dyb3VwaW5nLCAnZycpCiAKLSAgICBkZWYgdGVzdF9yb3RhdGUoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMucm90YXRlKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5yb3RhdGUoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5yb3RhdGUsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnJvdGF0ZSwgMSwgJzInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBnZXRfZm10LCAxMjM0NSwgaW52YWxpZF9kb3QsICdnJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZ2V0X2ZtdCwgMTIzNDUsIGludmFsaWRfc2VwLCAnZycpCiAKLSAgICBkZWYgdGVzdF9zcXJ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnNxcnQoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zcXJ0KDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNxcnQsICcxMCcpCisgICAgZGVmIHRlc3RfZXhhY3RfY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgRGVjaW1hbCA9IEMuRGVjaW1hbAorICAgICAgICBsb2NhbGNvbnRleHQgPSBDLmxvY2FsY29udGV4dAorICAgICAgICBJbnZhbGlkT3BlcmF0aW9uID0gQy5JbnZhbGlkT3BlcmF0aW9uCiAKLSAgICBkZWYgdGVzdF9zYW1lX3F1YW50dW0oc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2FtZV9xdWFudHVtKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zYW1lX3F1YW50dW0oMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zYW1lX3F1YW50dW0sICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNhbWVfcXVhbnR1bSwgMSwgJzInKQorICAgICAgICB3aXRoIGxvY2FsY29udGV4dCgpIGFzIGM6CiAKLSAgICBkZWYgdGVzdF9zY2FsZWIoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc2NhbGViKERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zY2FsZWIoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zY2FsZWIsICcxJywgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnNjYWxlYiwgMSwgJzInKQorICAgICAgICAgICAgYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IFRydWUKIAotICAgIGRlZiB0ZXN0X3NoaWZ0KHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnNoaWZ0KERlY2ltYWwoMSksIERlY2ltYWwoMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zaGlmdCgxLCAyKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnNoaWZ0KERlY2ltYWwoMSksIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc2hpZnQoMSwgRGVjaW1hbCgyKSksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zaGlmdCwgJzEnLCAyKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMuc2hpZnQsIDEsICcyJykKKyAgICAgICAgICAgICMgQ2xhbXBlZAorICAgICAgICAgICAgeCA9ICIwZSVkIiAlIHN5cy5tYXhzaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgZGVmIHRlc3Rfc3VidHJhY3Qoc2VsZik6Ci0gICAgICAgIGMgPSBDb250ZXh0KCkKLSAgICAgICAgZCA9IGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgRGVjaW1hbCgyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnN1YnRyYWN0KDEsIDIpLCBkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMuc3VidHJhY3QoRGVjaW1hbCgxKSwgMiksIGQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5zdWJ0cmFjdCgxLCBEZWNpbWFsKDIpKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnN1YnRyYWN0LCAnMScsIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYy5zdWJ0cmFjdCwgMSwgJzInKQorICAgICAgICAgICAgeCA9ICIwZSVkIiAlICgtc3lzLm1heHNpemUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19lbmdfc3RyaW5nKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2VuZ19zdHJpbmcoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19lbmdfc3RyaW5nKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2VuZ19zdHJpbmcsICcxMCcpCisgICAgICAgICAgICAjIE92ZXJmbG93CisgICAgICAgICAgICB4ID0gIjFlJWQiICUgc3lzLm1heHNpemUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19zY2lfc3RyaW5nKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX3NjaV9zdHJpbmcoRGVjaW1hbCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy50b19zY2lfc3RyaW5nKDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX3NjaV9zdHJpbmcsICcxMCcpCisgICAgICAgICAgICAjIFVuZGVyZmxvdworICAgICAgICAgICAgeCA9ICIxZSVkIiAlICgtc3lzLm1heHNpemUtMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF90b19pbnRlZ3JhbF9leGFjdChzZWxmKToKLSAgICAgICAgYyA9IENvbnRleHQoKQotICAgICAgICBkID0gYy50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLnRvX2ludGVncmFsX2V4YWN0KDEwKSwgZCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLnRvX2ludGVncmFsX2V4YWN0LCAnMTAnKQorICAgIGRlZiB0ZXN0X2Zyb21fdHVwbGUoc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBDLkRlY2ltYWwKKyAgICAgICAgbG9jYWxjb250ZXh0ID0gQy5sb2NhbGNvbnRleHQKKyAgICAgICAgSW52YWxpZE9wZXJhdGlvbiA9IEMuSW52YWxpZE9wZXJhdGlvbgorICAgICAgICBPdmVyZmxvdyA9IEMuT3ZlcmZsb3cKKyAgICAgICAgVW5kZXJmbG93ID0gQy5VbmRlcmZsb3cKIAotICAgIGRlZiB0ZXN0X3RvX2ludGVncmFsX3ZhbHVlKHNlbGYpOgotICAgICAgICBjID0gQ29udGV4dCgpCi0gICAgICAgIGQgPSBjLnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMudG9faW50ZWdyYWxfdmFsdWUoMTApLCBkKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGMudG9faW50ZWdyYWxfdmFsdWUsICcxMCcpCisgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgYzoKIAotY2xhc3MgV2l0aFN0YXRlbWVudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgQ2FuJ3QgZG8gdGhlc2UgYXMgZG9jc3RyaW5ncyB1bnRpbCBQeXRob24gMi42Ci0gICAgIyBhcyBkb2N0ZXN0IGNhbid0IGhhbmRsZSBfX2Z1dHVyZV9fIHN0YXRlbWVudHMKKyAgICAgICAgICAgIGMudHJhcHNbSW52YWxpZE9wZXJhdGlvbl0gPSBUcnVlCisgICAgICAgICAgICBjLnRyYXBzW092ZXJmbG93XSA9IFRydWUKKyAgICAgICAgICAgIGMudHJhcHNbVW5kZXJmbG93XSA9IFRydWUKIAotICAgIGRlZiB0ZXN0X2xvY2FsY29udGV4dChzZWxmKToKLSAgICAgICAgIyBVc2UgYSBjb3B5IG9mIHRoZSBjdXJyZW50IGNvbnRleHQgaW4gdGhlIGJsb2NrCi0gICAgICAgIG9yaWdfY3R4ID0gZ2V0Y29udGV4dCgpCi0gICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgZW50ZXJfY3R4OgotICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdChvcmlnX2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorICAgICAgICAgICAgIyBTU0laRV9NQVgKKyAgICAgICAgICAgIHggPSAoMSwgKCksIHN5cy5tYXhzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jcmVhdGVfZGVjaW1hbCh4KSksICctMEUrOTk5OTk5JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsIHgpCiAKLSAgICBkZWYgdGVzdF9sb2NhbGNvbnRleHRhcmcoc2VsZik6Ci0gICAgICAgICMgVXNlIGEgY29weSBvZiB0aGUgc3VwcGxpZWQgY29udGV4dCBpbiB0aGUgYmxvY2sKLSAgICAgICAgb3JpZ19jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgbmV3X2N0eCA9IENvbnRleHQocHJlYz00MikKLSAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQobmV3X2N0eCkgYXMgZW50ZXJfY3R4OgotICAgICAgICAgICAgc2V0X2N0eCA9IGdldGNvbnRleHQoKQotICAgICAgICBmaW5hbF9jdHggPSBnZXRjb250ZXh0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhvcmlnX2N0eCwgZmluYWxfY3R4LCAnZGlkIG5vdCByZXN0b3JlIGNvbnRleHQgY29ycmVjdGx5JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXRfY3R4LnByZWMsIG5ld19jdHgucHJlYywgJ2RpZCBub3Qgc2V0IGNvcnJlY3QgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmV3X2N0eCwgc2V0X2N0eCwgJ2RpZCBub3QgY29weSB0aGUgY29udGV4dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2V0X2N0eCwgZW50ZXJfY3R4LCAnX19lbnRlcl9fIHJldHVybmVkIHdyb25nIGNvbnRleHQnKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSwgMiksIHN5cy5tYXhzaXplKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3csIGMuY3JlYXRlX2RlY2ltYWwsIHgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi1jbGFzcyBDb250ZXh0RmxhZ3ModW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ZsYWdzX2lycmVsZXZhbnQoc2VsZik6Ci0gICAgICAgICMgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IChudW1lcmljIHJlc3VsdCArIGZsYWdzIHJhaXNlZCkgb2YgYW4KLSAgICAgICAgIyBhcml0aG1ldGljIG9wZXJhdGlvbiBkb2Vzbid0IGRlcGVuZCBvbiB0aGUgY3VycmVudCBmbGFncworICAgICAgICAgICAgIyBTU0laRV9NSU4KKyAgICAgICAgICAgIHggPSAoMSwgKCksIC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYy5jcmVhdGVfZGVjaW1hbCh4KSksICctMEUtMTAwMDAyNicpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCB4KQogCi0gICAgICAgIGNvbnRleHQgPSBDb250ZXh0KHByZWM9OSwgRW1pbiA9IC05OTk5OTk5OTksIEVtYXggPSA5OTk5OTk5OTksCi0gICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nPVJPVU5EX0hBTEZfRVZFTiwgdHJhcHM9W10sIGZsYWdzPVtdKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwgMSwgMiksIC1zeXMubWF4c2l6ZS0xKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5kZXJmbG93LCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgRGVjaW1hbCwgeCkKIAotICAgICAgICAjIG9wZXJhdGlvbnMgdGhhdCByYWlzZSB2YXJpb3VzIGZsYWdzLCBpbiB0aGUgZm9ybSAoZnVuY3Rpb24sIGFyZ2xpc3QpCi0gICAgICAgIG9wZXJhdGlvbnMgPSBbCi0gICAgICAgICAgICAoY29udGV4dC5fYXBwbHksIFtEZWNpbWFsKCIxMDBFLTEwMDAwMDAwMDkiKV0pLAotICAgICAgICAgICAgKGNvbnRleHQuc3FydCwgW0RlY2ltYWwoMildKSwKLSAgICAgICAgICAgIChjb250ZXh0LmFkZCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5tdWx0aXBseSwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICAoY29udGV4dC5zdWJ0cmFjdCwgW0RlY2ltYWwoIjEuMjM0NTY3ODkiKSwgRGVjaW1hbCgiOS44NzY1NDMyMSIpXSksCi0gICAgICAgICAgICBdCisgICAgICAgICAgICAjIE92ZXJmbG93RXJyb3IKKyAgICAgICAgICAgIHggPSAoMSwgKCksIHN5cy5tYXhzaXplKzEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjLmNyZWF0ZV9kZWNpbWFsLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgRGVjaW1hbCwgeCkKIAotICAgICAgICAjIHRyeSB2YXJpb3VzIGZsYWdzIGluZGl2aWR1YWxseSwgdGhlbiBhIHdob2xlIGxvdCBhdCBvbmNlCi0gICAgICAgIGZsYWdzZXRzID0gW1tJbmV4YWN0XSwgW1JvdW5kZWRdLCBbVW5kZXJmbG93XSwgW0NsYW1wZWRdLCBbU3Vibm9ybWFsXSwKLSAgICAgICAgICAgICAgICAgICAgW0luZXhhY3QsIFJvdW5kZWQsIFVuZGVyZmxvdywgQ2xhbXBlZCwgU3Vibm9ybWFsXV0KKyAgICAgICAgICAgIHggPSAoMSwgKCksIC1zeXMubWF4c2l6ZS0yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgYy5jcmVhdGVfZGVjaW1hbCwgeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIERlY2ltYWwsIHgpCiAKLSAgICAgICAgZm9yIGZuLCBhcmdzIGluIG9wZXJhdGlvbnM6Ci0gICAgICAgICAgICAjIGZpbmQgYW5zd2VyIGFuZCBmbGFncyByYWlzZWQgdXNpbmcgYSBjbGVhbiBjb250ZXh0Ci0gICAgICAgICAgICBjb250ZXh0LmNsZWFyX2ZsYWdzKCkKLSAgICAgICAgICAgIGFucyA9IGZuKCphcmdzKQotICAgICAgICAgICAgZmxhZ3MgPSBbayBmb3IgaywgdiBpbiBjb250ZXh0LmZsYWdzLml0ZW1zKCkgaWYgdl0KKyAgICAgICAgICAgICMgU3BlY2lhbHMKKyAgICAgICAgICAgIHggPSAoMSwgKCksICJOIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoeCkpLCAnLXNOYU4nKQorICAgICAgICAgICAgeCA9ICgxLCAoMCwpLCAiTiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHgpKSwgJy1zTmFOJykKKyAgICAgICAgICAgIHggPSAoMSwgKDAsIDEpLCAiTiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKHgpKSwgJy1zTmFOMScpCiAKLSAgICAgICAgICAgIGZvciBleHRyYV9mbGFncyBpbiBmbGFnc2V0czoKLSAgICAgICAgICAgICAgICAjIHNldCBmbGFncywgYmVmb3JlIGNhbGxpbmcgb3BlcmF0aW9uCi0gICAgICAgICAgICAgICAgY29udGV4dC5jbGVhcl9mbGFncygpCi0gICAgICAgICAgICAgICAgZm9yIGZsYWcgaW4gZXh0cmFfZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuX3JhaXNlX2Vycm9yKGZsYWcpCi0gICAgICAgICAgICAgICAgbmV3X2FucyA9IGZuKCphcmdzKQogCi0gICAgICAgICAgICAgICAgIyBmbGFncyB0aGF0IHdlIGV4cGVjdCB0byBiZSBzZXQgYWZ0ZXIgdGhlIG9wZXJhdGlvbgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX2ZsYWdzID0gbGlzdChmbGFncykKLSAgICAgICAgICAgICAgICBmb3IgZmxhZyBpbiBleHRyYV9mbGFnczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gZXhwZWN0ZWRfZmxhZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5hcHBlbmQoZmxhZykKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9mbGFncy5zb3J0KGtleT1pZCkKK2FsbF90ZXN0cyA9IFsKKyAgQ0V4cGxpY2l0Q29uc3RydWN0aW9uVGVzdCwgUHlFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCisgIENJbXBsaWNpdENvbnN0cnVjdGlvblRlc3QsIFB5SW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LAorICBDRm9ybWF0VGVzdCwgICAgICAgICAgICAgICBQeUZvcm1hdFRlc3QsCisgIENBcml0aG1ldGljT3BlcmF0b3JzVGVzdCwgIFB5QXJpdGhtZXRpY09wZXJhdG9yc1Rlc3QsCisgIENUaHJlYWRpbmdUZXN0LCAgICAgICAgICAgIFB5VGhyZWFkaW5nVGVzdCwKKyAgQ1VzYWJpbGl0eVRlc3QsICAgICAgICAgICAgUHlVc2FiaWxpdHlUZXN0LAorICBDUHl0aG9uQVBJdGVzdHMsICAgICAgICAgICBQeVB5dGhvbkFQSXRlc3RzLAorICBDQ29udGV4dEFQSXRlc3RzLCAgICAgICAgICBQeUNvbnRleHRBUEl0ZXN0cywKKyAgQ0NvbnRleHRXaXRoU3RhdGVtZW50LCAgICAgUHlDb250ZXh0V2l0aFN0YXRlbWVudCwKKyAgQ0NvbnRleHRGbGFncywgICAgICAgICAgICAgUHlDb250ZXh0RmxhZ3MsCisgIENTcGVjaWFsQ29udGV4dHMsICAgICAgICAgIFB5U3BlY2lhbENvbnRleHRzLAorICBDQ29udGV4dElucHV0VmFsaWRhdGlvbiwgICBQeUNvbnRleHRJbnB1dFZhbGlkYXRpb24sCisgIENDb250ZXh0U3ViY2xhc3NpbmcsICAgICAgIFB5Q29udGV4dFN1YmNsYXNzaW5nLAorICBDQ292ZXJhZ2UsICAgICAgICAgICAgICAgICBQeUNvdmVyYWdlLAorICBDRnVuY3Rpb25hbGl0eSwgICAgICAgICAgICBQeUZ1bmN0aW9uYWxpdHksCisgIENXaGl0ZWJveCwgICAgICAgICAgICAgICAgIFB5V2hpdGVib3gsCisgIENJQk1UZXN0Q2FzZXMsICAgICAgICAgICAgIFB5SUJNVGVzdENhc2VzLAorXQogCi0gICAgICAgICAgICAgICAgIyBmbGFncyB3ZSBhY3R1YWxseSBnb3QKLSAgICAgICAgICAgICAgICBuZXdfZmxhZ3MgPSBbayBmb3Igayx2IGluIGNvbnRleHQuZmxhZ3MuaXRlbXMoKSBpZiB2XQotICAgICAgICAgICAgICAgIG5ld19mbGFncy5zb3J0KGtleT1pZCkKKyMgRGVsZXRlIEMgdGVzdHMgaWYgX2RlY2ltYWwuc28gaXMgbm90IHByZXNlbnQuCitpZiBub3QgQzoKKyAgICBhbGxfdGVzdHMgPSBhbGxfdGVzdHNbMTo6Ml0KK2Vsc2U6CisgICAgYWxsX3Rlc3RzLmluc2VydCgwLCBDaGVja0F0dHJpYnV0ZXMpCiAKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgbmV3X2FucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcHJvZHVjZXMgZGlmZmVyZW50IGFuc3dlcnMgZGVwZW5kaW5nIG9uIGZsYWdzIHNldDogIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcy4iICUgKGFucywgbmV3X2FucykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfZmxhZ3MsIGV4cGVjdGVkX2ZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gcmFpc2VzIGRpZmZlcmVudCBmbGFncyBkZXBlbmRpbmcgb24gZmxhZ3Mgc2V0OiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJXMsIGdvdCAlcyIgJSAoZXhwZWN0ZWRfZmxhZ3MsIG5ld19mbGFncykpCiAKIGRlZiB0ZXN0X21haW4oYXJpdGg9RmFsc2UsIHZlcmJvc2U9Tm9uZSwgdG9kb190ZXN0cz1Ob25lLCBkZWJ1Zz1Ob25lKToKICAgICAiIiIgRXhlY3V0ZSB0aGUgdGVzdHMuCkBAIC0yMzc0LDI3ICs1MDgxLDE2IEBACiAgICAgaXMgZW5hYmxlZCBpbiByZWdydGVzdC5weQogICAgICIiIgogCi0gICAgaW5pdCgpCisgICAgaW5pdChDKQorICAgIGluaXQoUCkKICAgICBnbG9iYWwgVEVTVF9BTEwsIERFQlVHCiAgICAgVEVTVF9BTEwgPSBhcml0aCBvciBpc19yZXNvdXJjZV9lbmFibGVkKCdkZWNpbWFsJykKICAgICBERUJVRyA9IGRlYnVnCiAKICAgICBpZiB0b2RvX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgIHRlc3RfY2xhc3NlcyA9IFsKLSAgICAgICAgICAgIERlY2ltYWxFeHBsaWNpdENvbnN0cnVjdGlvblRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsSW1wbGljaXRDb25zdHJ1Y3Rpb25UZXN0LAotICAgICAgICAgICAgRGVjaW1hbEFyaXRobWV0aWNPcGVyYXRvcnNUZXN0LAotICAgICAgICAgICAgRGVjaW1hbEZvcm1hdFRlc3QsCi0gICAgICAgICAgICBEZWNpbWFsVXNlT2ZDb250ZXh0VGVzdCwKLSAgICAgICAgICAgIERlY2ltYWxVc2FiaWxpdHlUZXN0LAotICAgICAgICAgICAgRGVjaW1hbFB5dGhvbkFQSXRlc3RzLAotICAgICAgICAgICAgQ29udGV4dEFQSXRlc3RzLAotICAgICAgICAgICAgRGVjaW1hbFRlc3QsCi0gICAgICAgICAgICBXaXRoU3RhdGVtZW50VGVzdCwKLSAgICAgICAgICAgIENvbnRleHRGbGFncwotICAgICAgICBdCisgICAgICAgIHRlc3RfY2xhc3NlcyA9IGFsbF90ZXN0cwogICAgIGVsc2U6Ci0gICAgICAgIHRlc3RfY2xhc3NlcyA9IFtEZWNpbWFsVGVzdF0KKyAgICAgICAgdGVzdF9jbGFzc2VzID0gW0NJQk1UZXN0Q2FzZXMsIFB5SUJNVGVzdENhc2VzXQogCiAgICAgIyBEeW5hbWljYWxseSBidWlsZCBjdXN0b20gdGVzdCBkZWZpbml0aW9uIGZvciBlYWNoIGZpbGUgaW4gdGhlIHRlc3QKICAgICAjIGRpcmVjdG9yeSBhbmQgYWRkIHRoZSBkZWZpbml0aW9ucyB0byB0aGUgRGVjaW1hbFRlc3QgY2xhc3MuICBUaGlzCkBAIC0yNDA2LDE3ICs1MTAyLDMyIEBACiAgICAgICAgIGlmIHRvZG9fdGVzdHMgaXMgbm90IE5vbmUgYW5kIGhlYWQgbm90IGluIHRvZG9fdGVzdHM6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0ZXN0ZXIgPSBsYW1iZGEgc2VsZiwgZj1maWxlbmFtZTogc2VsZi5ldmFsX2ZpbGUoZGlyZWN0b3J5ICsgZikKLSAgICAgICAgc2V0YXR0cihEZWNpbWFsVGVzdCwgJ3Rlc3RfJyArIGhlYWQsIHRlc3RlcikKKyAgICAgICAgc2V0YXR0cihDSUJNVGVzdENhc2VzLCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQorICAgICAgICBzZXRhdHRyKFB5SUJNVGVzdENhc2VzLCAndGVzdF8nICsgaGVhZCwgdGVzdGVyKQogICAgICAgICBkZWwgZmlsZW5hbWUsIGhlYWQsIHRhaWwsIHRlc3RlcgogCiAKICAgICB0cnk6CiAgICAgICAgIHJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQogICAgICAgICBpZiB0b2RvX3Rlc3RzIGlzIE5vbmU6Ci0gICAgICAgICAgICBpbXBvcnQgZGVjaW1hbCBhcyBEZWNpbWFsTW9kdWxlCi0gICAgICAgICAgICBydW5fZG9jdGVzdChEZWNpbWFsTW9kdWxlLCB2ZXJib3NlKQorICAgICAgICAgICAgZnJvbSBkb2N0ZXN0IGltcG9ydCBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTAorICAgICAgICAgICAgc2F2ZWRlY2ltYWwgPSBzeXMubW9kdWxlc1snZGVjaW1hbCddCisgICAgICAgICAgICBpZiBDOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBDCisgICAgICAgICAgICAgICAgcnVuX2RvY3Rlc3QoQywgdmVyYm9zZSwgb3B0aW9uZmxhZ3M9SUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwpCisgICAgICAgICAgICBzeXMubW9kdWxlc1snZGVjaW1hbCddID0gUAorICAgICAgICAgICAgcnVuX2RvY3Rlc3QoUCwgdmVyYm9zZSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzWydkZWNpbWFsJ10gPSBzYXZlZGVjaW1hbAogICAgIGZpbmFsbHk6Ci0gICAgICAgIHNldGNvbnRleHQoT1JJR0lOQUxfQ09OVEVYVCkKKyAgICAgICAgaWYgQzogQy5zZXRjb250ZXh0KE9SSUdJTkFMX0NPTlRFWFRbQ10pCisgICAgICAgIFAuc2V0Y29udGV4dChPUklHSU5BTF9DT05URVhUW1BdKQorICAgICAgICBpZiBub3QgQzoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ0MgdGVzdHMgc2tpcHBlZDogbm8gbW9kdWxlIG5hbWVkIF9kZWNpbWFsLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nKQorICAgICAgICBpZiBub3Qgb3JpZ19zeXNfZGVjaW1hbCBpcyBzeXMubW9kdWxlc1snZGVjaW1hbCddOgorICAgICAgICAgICAgcmFpc2UgVGVzdEZhaWxlZCgiSW50ZXJuYWwgZXJyb3I6IHVuYmFsYW5jZWQgbnVtYmVyIG9mIGNoYW5nZXMgdG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXNbJ2RlY2ltYWwnXS4iKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IG9wdHBhcnNlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQppbmRleCBmMGFmZTFkLi5hODQ4N2QyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKQEAgLTQ3Miw2ICs0NzIsMTkgQEAKICMjICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCiAjIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVbLTFdKSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKKyAgICAgICAgZGF0YSA9IGRlcXVlKHJhbmdlKDIwMCkpCisgICAgICAgIGl0ID0gaXRvcmcgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGxpc3QoZGF0YSlbMTpdKQorCiAgICAgZGVmIHRlc3RfZGVlcGNvcHkoc2VsZik6CiAgICAgICAgIG11dCA9IFsxMF0KICAgICAgICAgZCA9IGRlcXVlKFttdXRdKQpAQCAtNTI0LDcgKzUzNyw3IEBACiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CiAgICAgZGVmIHRlc3Rfc2l6ZW9mKHNlbGYpOgogICAgICAgICBCTE9DS0xFTiA9IDYyCi0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnMlA0UGxQJykKKyAgICAgICAgYmFzZXNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCcyUDRubFAnKQogICAgICAgICBibG9ja3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoJzJQJWRQJyAlIEJMT0NLTEVOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iamVjdC5fX3NpemVvZl9fKGRlcXVlKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX3NpemVvZgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKaW5kZXggY2RhZjdkMi4uMDc5ZjYwYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CkBAIC02NTQsMTkgKzY1NCwxOSBAQAogICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1BTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQihtZXRhY2xhc3M9Qk1ldGEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEJNZXRhLl9fbmV3X18gY2FsbHMgQU1ldGEuX19uZXdfXyB3aXRoIHN1cGVyOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk1ldGEnLCAnQU1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEMoQSwgQik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgICMgVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgQk1ldGE6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgICMgQk1ldGEuX19wcmVwYXJlX18gc2hvdWxkJ3ZlIGJlZW4gY2FsbGVkOgogICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMuX19kaWN0X18pCiAKQEAgLTY3NCwyMCArNjc0LDIwIEBACiAgICAgICAgIGNsYXNzIEMyKEIsIEEpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk1ldGEnLCAnQU1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMyLl9fZGljdF9fKQogCiAgICAgICAgICMgQ2hlY2sgY29ycmVjdCBtZXRhY2xhc3MgY2FsY3VsYXRpb24gd2hlbiBhIG1ldGFjbGFzcyBpcyBkZWNsYXJlZDoKICAgICAgICAgY2xhc3MgRChDLCBtZXRhY2xhc3M9dHlwZSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRC5fX2RpY3RfXykKIAogICAgICAgICBjbGFzcyBFKEMsIG1ldGFjbGFzcz1BTWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTWV0YScsICdBTWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRS5fX2RpY3RfXykKIAogICAgICAgICAjIFNwZWNpYWwgY2FzZTogdGhlIGdpdmVuIG1ldGFjbGFzcyBpc24ndCBhIGNsYXNzLApAQCAtNzI5LDMzICs3MjksMzMgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhBTm90TWV0YSwgdHlwZShBKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBCKG1ldGFjbGFzcz1CTm90TWV0YSk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAKICAgICAgICAgY2xhc3MgQyhBLCBCKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIG5ld19jYWxscykKLSAgICAgICAgbmV3X2NhbGxzWzpdID0gW10KKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10sIHByZXBhcmVfY2FsbHMpCi0gICAgICAgIHByZXBhcmVfY2FsbHNbOl0gPSBbXQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKIAogICAgICAgICBjbGFzcyBDMihCLCBBKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShDMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgIyBUaGlzIGlzIGEgVHlwZUVycm9yLCBiZWNhdXNlIG9mIGEgbWV0YWNsYXNzIGNvbmZsaWN0OgogICAgICAgICAjIEJOb3RNZXRhIGlzIG5laXRoZXIgYSBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiB0eXBlCkBAIC03NjcsMjUgKzc2NywyNSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEYob2JqZWN0KCksIEMpOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgbmV3X2NhbGxzKQotICAgICAgICBuZXdfY2FsbHNbOl0gPSBbXQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSwgcHJlcGFyZV9jYWxscykKLSAgICAgICAgcHJlcGFyZV9jYWxsc1s6XSA9IFtdCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQogCiAgICAgICAgIGNsYXNzIEYyKEMsIG9iamVjdCgpKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShGMikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBuZXdfY2FsbHMpCi0gICAgICAgIG5ld19jYWxsc1s6XSA9IFtdCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydCTm90TWV0YScsICdBTm90TWV0YSddLCBwcmVwYXJlX2NhbGxzKQotICAgICAgICBwcmVwYXJlX2NhbGxzWzpdID0gW10KKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCiAKICAgICAgICAgIyBUeXBlRXJyb3I6IEJOb3RNZXRhIGlzIG5laXRoZXIgYQogICAgICAgICAjIHN1YmNsYXNzLCBub3IgYSBzdXBlcmNsYXNzIG9mIGludApAQCAtMTQ0NCw2ICsxNDQ0LDE0IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImNsYXNzbWV0aG9kIHNob3VsZG4ndCBhY2NlcHQga2V5d29yZCBhcmdzIikKIAorICAgICAgICBjbSA9IGNsYXNzbWV0aG9kKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uX19kaWN0X18sIHt9KQorICAgICAgICBjbS54ID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS54LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5fX2RpY3RfXywgeyJ4IiA6IDQyfSkKKyAgICAgICAgZGVsIGNtLngKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKGNtLCAieCIpKQorCiAgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInRoZSBtb2R1bGUgJ3h4c3VidHlwZScgaXMgaW50ZXJuYWwiKQogICAgIGRlZiB0ZXN0X2NsYXNzbWV0aG9kc19pbl9jKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgQy1iYXNlZCBjbGFzcyBtZXRob2RzLi4uCkBAIC0xNDkxLDYgKzE0OTksMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmdvbygxKSwgKDEsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLmZvbygxKSwgKGQsIDEpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEQuZm9vKGQsIDEpLCAoZCwgMSkpCisgICAgICAgIHNtID0gc3RhdGljbWV0aG9kKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc20uX19kaWN0X18sIHt9KQorICAgICAgICBzbS54ID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS54LCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbS5fX2RpY3RfXywgeyJ4IiA6IDQyfSkKKyAgICAgICAgZGVsIHNtLngKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHNtLCAieCIpKQogCiAgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInRoZSBtb2R1bGUgJ3h4c3VidHlwZScgaXMgaW50ZXJuYWwiKQogICAgIGRlZiB0ZXN0X3N0YXRpY21ldGhvZHNfaW5fYyhzZWxmKToKQEAgLTE3NzEsNiArMTc4Niw3IEBACiAgICAgICAgICAgICAoIl9fZm9ybWF0X18iLCBmb3JtYXQsIGZvcm1hdF9pbXBsLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2Zsb29yX18iLCBtYXRoLmZsb29yLCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX3RydW5jX18iLCBtYXRoLnRydW5jLCB6ZXJvLCBzZXQoKSwge30pLAorICAgICAgICAgICAgKCJfX3RydW5jX18iLCBpbnQsIHplcm8sIHNldCgpLCB7fSksCiAgICAgICAgICAgICAoIl9fY2VpbF9fIiwgbWF0aC5jZWlsLCB6ZXJvLCBzZXQoKSwge30pLAogICAgICAgICAgICAgKCJfX2Rpcl9fIiwgZGlyLCBlbXB0eV9zZXEsIHNldCgpLCB7fSksCiAgICAgICAgICAgICBdCkBAIC0xODE2LDEyICsxODMyLDcgQEAKICAgICAgICAgICAgIGZvciBhdHRyLCBvYmogaW4gZW52Lml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgc2V0YXR0cihYLCBhdHRyLCBvYmopCiAgICAgICAgICAgICBzZXRhdHRyKFgsIG5hbWUsIEVyckRlc2NyKCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcnVubmVyKFgoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBNeUV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiezAhcn0gZGlkbid0IHJhaXNlIi5mb3JtYXQobmFtZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhNeUV4Y2VwdGlvbiwgcnVubmVyLCBYKCkpCiAKICAgICBkZWYgdGVzdF9zcGVjaWFscyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHNwZWNpYWwgb3BlcmF0b3JzLi4uCkBAIC0yMjU4LDkgKzIyNjksNiBAQAogICAgICAgICAjIFR3byBlc3NlbnRpYWxseSBmZWF0dXJlbGVzcyBvYmplY3RzLCBqdXN0IGluaGVyaXRpbmcgc3R1ZmYgZnJvbQogICAgICAgICAjIG9iamVjdC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIoTm90SW1wbGVtZW50ZWQpLCBkaXIoRWxsaXBzaXMpKQotICAgICAgICBpZiBzdXBwb3J0LmNoZWNrX2ltcGxfZGV0YWlsKCk6Ci0gICAgICAgICAgICAjIE5vbmUgZGlmZmVycyBpbiBQeVB5OiBpdCBoYXMgYSBfX25vbnplcm9fXwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIoTm9uZSksIGRpcihFbGxpcHNpcykpCiAKICAgICAgICAgIyBOYXN0eSB0ZXN0IGNhc2UgZm9yIHByb3hpZWQgb2JqZWN0cwogICAgICAgICBjbGFzcyBXcmFwcGVyKG9iamVjdCk6CkBAIC00NDU2LDYgKzQ0NjQsNTQgQEAKICAgICAgICAgeC55ID0gNDIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4WyJ5Il0sIDQyKQogCisgICAgZGVmIHRlc3Rfc2xvdF9zaGFkb3dzX2NsYXNzX3ZhcmlhYmxlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgICAgICBfX3Nsb3RzX18gPSBbImZvbyJdCisgICAgICAgICAgICAgICAgZm9vID0gTm9uZQorICAgICAgICBtID0gc3RyKGNtLmV4Y2VwdGlvbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJ2ZvbycgaW4gX19zbG90c19fIGNvbmZsaWN0cyB3aXRoIGNsYXNzIHZhcmlhYmxlIiwgbSkKKworICAgIGRlZiB0ZXN0X3NldF9kb2Moc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICAiZWxlcGhhbnQiCisgICAgICAgIFguX19kb2NfXyA9ICJiYW5hbmEiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5fX2RvY19fLCAiYmFuYW5hIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgdHlwZShsaXN0KS5fX2RpY3RfX1siX19kb2NfXyJdLl9fc2V0X18obGlzdCwgImJsYWgiKQorICAgICAgICBzZWxmLmFzc2VydEluKCJjYW4ndCBzZXQgbGlzdC5fX2RvY19fIiwgc3RyKGNtLmV4Y2VwdGlvbikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHR5cGUoWCkuX19kaWN0X19bIl9fZG9jX18iXS5fX2RlbGV0ZV9fKFgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhbid0IGRlbGV0ZSBYLl9fZG9jX18iLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLl9fZG9jX18sICJiYW5hbmEiKQorCisgICAgZGVmIHRlc3RfcXVhbG5hbWUoc2VsZik6CisgICAgICAgIGRlc2NyaXB0b3JzID0gW3N0ci5sb3dlciwgY29tcGxleC5yZWFsLCBmbG9hdC5yZWFsLCBpbnQuX19hZGRfX10KKyAgICAgICAgdHlwZXMgPSBbJ21ldGhvZCcsICdtZW1iZXInLCAnZ2V0c2V0JywgJ3dyYXBwZXInXQorCisgICAgICAgICMgbWFrZSBzdXJlIHdlIGhhdmUgYW4gZXhhbXBsZSBvZiBlYWNoIHR5cGUgb2YgZGVzY3JpcHRvcgorICAgICAgICBmb3IgZCwgbiBpbiB6aXAoZGVzY3JpcHRvcnMsIHR5cGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShkKS5fX25hbWVfXywgbiArICdfZGVzY3JpcHRvcicpCisKKyAgICAgICAgZm9yIGQgaW4gZGVzY3JpcHRvcnM6CisgICAgICAgICAgICBxdWFsbmFtZSA9IGQuX19vYmpjbGFzc19fLl9fcXVhbG5hbWVfXyArICcuJyArIGQuX19uYW1lX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5fX3F1YWxuYW1lX18sIHF1YWxuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyLmxvd2VyLl9fcXVhbG5hbWVfXywgJ3N0ci5sb3dlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleC5yZWFsLl9fcXVhbG5hbWVfXywgJ2NvbXBsZXgucmVhbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQucmVhbC5fX3F1YWxuYW1lX18sICdmbG9hdC5yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQuX19hZGRfXy5fX3F1YWxuYW1lX18sICdpbnQuX19hZGRfXycpCisKKyAgICBkZWYgdGVzdF9xdWFsbmFtZV9kaWN0KHNlbGYpOgorICAgICAgICBucyA9IHsnX19xdWFsbmFtZV9fJzogJ3NvbWUubmFtZSd9CisgICAgICAgIHRwID0gdHlwZSgnRm9vJywgKCksIG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLl9fcXVhbG5hbWVfXywgJ3NvbWUubmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHAuX19kaWN0X19bJ19fcXVhbG5hbWVfXyddLCAnc29tZS5uYW1lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucywgeydfX3F1YWxuYW1lX18nOiAnc29tZS5uYW1lJ30pCisKKyAgICAgICAgbnMgPSB7J19fcXVhbG5hbWVfXyc6IDF9CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdHlwZSwgJ0ZvbycsICgpLCBucykKKwogICAgIGRlZiB0ZXN0X2N5Y2xlX3Rocm91Z2hfZGljdChzZWxmKToKICAgICAgICAgIyBTZWUgYnVnICMxNDY5NjI5CiAgICAgICAgIGNsYXNzIFgoZGljdCk6CkBAIC00NDcxLDYgKzQ1MjcsMjcgQEAKICAgICAgICAgZm9yIG8gaW4gZ2MuZ2V0X29iamVjdHMoKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodHlwZShvKSwgWCkKIAorICAgIGRlZiB0ZXN0X29iamVjdF9uZXdfYW5kX2luaXRfd2l0aF9wYXJhbWV0ZXJzKHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMTY4MzM2OAorICAgICAgICBjbGFzcyBPdmVycmlkZU5laXRoZXI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3ZlcnJpZGVOZWl0aGVyLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE92ZXJyaWRlTmVpdGhlciwga3c9MSkKKyAgICAgICAgY2xhc3MgT3ZlcnJpZGVOZXc6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIGZvbywga3c9MCwgKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX25ld19fKGNscywgKmFyZ3MsICoqa3dkcykKKyAgICAgICAgY2xhc3MgT3ZlcnJpZGVJbml0OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbywga3c9MCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgY2xhc3MgT3ZlcnJpZGVCb3RoKE92ZXJyaWRlTmV3LCBPdmVycmlkZUluaXQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBmb3IgY2FzZSBpbiBPdmVycmlkZU5ldywgT3ZlcnJpZGVJbml0LCBPdmVycmlkZUJvdGg6CisgICAgICAgICAgICBjYXNlKDEpCisgICAgICAgICAgICBjYXNlKDEsIGt3PTIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNhc2UsIDEsIDIsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNhc2UsIDEsIDIsIGZvbz0zKQorCisKIGNsYXNzIERpY3RQcm94eVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKQEAgLTQ0NzgsNiArNDU1NSw4IEBACiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLkMgPSBDCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2FsX18nKQogICAgIGRlZiB0ZXN0X2l0ZXJfa2V5cyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIGRpY3QtcHJveHkga2V5cy4uLgogICAgICAgICBpdCA9IHNlbGYuQy5fX2RpY3RfXy5rZXlzKCkKQEAgLTQ0ODUsMTUgKzQ1NjQsMTkgQEAKICAgICAgICAga2V5cyA9IGxpc3QoaXQpCiAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywgWydfX2RpY3RfXycsICdfX2RvY19fJywgJ19fbW9kdWxlX18nLAotICAgICAgICAgICAgJ19fd2Vha3JlZl9fJywgJ21ldGgnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcXVhbG5hbWVfXycsICdfX3dlYWtyZWZfXycsICdtZXRoJ10pCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAndHJhY2UgZnVuY3Rpb24gaW50cm9kdWNlcyBfX2xvY2FsX18nKQogICAgIGRlZiB0ZXN0X2l0ZXJfdmFsdWVzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgZGljdC1wcm94eSB2YWx1ZXMuLi4KICAgICAgICAgaXQgPSBzZWxmLkMuX19kaWN0X18udmFsdWVzKCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGl0LCBsaXN0KQogICAgICAgICB2YWx1ZXMgPSBsaXN0KGl0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2YWx1ZXMpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2YWx1ZXMpLCA2KQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbF9fJykKICAgICBkZWYgdGVzdF9pdGVyX2l0ZW1zKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgZGljdC1wcm94eSBpdGVyaXRlbXMuLi4KICAgICAgICAgaXQgPSBzZWxmLkMuX19kaWN0X18uaXRlbXMoKQpAQCAtNDUwMSw3ICs0NTg0LDcgQEAKICAgICAgICAga2V5cyA9IFtpdGVtWzBdIGZvciBpdGVtIGluIGl0XQogICAgICAgICBrZXlzLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGtleXMsIFsnX19kaWN0X18nLCAnX19kb2NfXycsICdfX21vZHVsZV9fJywKLSAgICAgICAgICAgICdfX3dlYWtyZWZfXycsICdtZXRoJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3F1YWxuYW1lX18nLCAnX193ZWFrcmVmX18nLCAnbWV0aCddKQogCiAgICAgZGVmIHRlc3RfZGljdF90eXBlX3dpdGhfbWV0YWNsYXNzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgdHlwZSBvZiBfX2RpY3RfXyB3aGVuIG1ldGFjbGFzcyBzZXQuLi4KQEAgLTQ1MTUsMTkgKzQ1OTgsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKEMuX19kaWN0X18pLCB0eXBlKEIuX19kaWN0X18pKQogCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKLSAgICAgICAgIyBUZXN0aW5nIGRpY3RfcHJveHkuX19yZXByX18KLSAgICAgICAgZGVmIHNvcnRlZF9kaWN0X3JlcHIocmVwcl8pOgotICAgICAgICAgICAgIyBHaXZlbiB0aGUgcmVwciBvZiBhIGRpY3QsIHNvcnQgdGhlIGtleXMKLSAgICAgICAgICAgIGFzc2VydCByZXByXy5zdGFydHN3aXRoKCd7JykKLSAgICAgICAgICAgIGFzc2VydCByZXByXy5lbmRzd2l0aCgnfScpCi0gICAgICAgICAgICBrdnMgPSByZXByX1sxOi0xXS5zcGxpdCgnLCAnKQotICAgICAgICAgICAgcmV0dXJuICd7JyArICcsICcuam9pbihzb3J0ZWQoa3ZzKSkgKyAnfScKLSAgICAgICAgZGljdF8gPSB7azogdiBmb3IgaywgdiBpbiBzZWxmLkMuX19kaWN0X18uaXRlbXMoKX0KLSAgICAgICAgcmVwcl8gPSByZXByKHNlbGYuQy5fX2RpY3RfXykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHJfLnN0YXJ0c3dpdGgoJ2RpY3RfcHJveHkoJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByXy5lbmRzd2l0aCgnKScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZF9kaWN0X3JlcHIocmVwcl9bbGVuKCdkaWN0X3Byb3h5KCcpOi1sZW4oJyknKV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZF9kaWN0X3JlcHIoJ3shcn0nLmZvcm1hdChkaWN0XykpKQorICAgICAgICAjIFRlc3RpbmcgbWFwcGluZ3Byb3h5Ll9fcmVwcl9fLgorICAgICAgICAjIFdlIGNhbid0IGJsaW5kbHkgY29tcGFyZSB3aXRoIHRoZSByZXByIG9mIGFub3RoZXIgZGljdCBhcyBvcmRlcmluZworICAgICAgICAjIG9mIGtleXMgYW5kIHZhbHVlcyBpcyBhcmJpdHJhcnkgYW5kIG1heSBkaWZmZXIuCisgICAgICAgIHIgPSByZXByKHNlbGYuQy5fX2RpY3RfXykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnbWFwcGluZ3Byb3h5KCcpLCByKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoci5lbmRzd2l0aCgnKScpLCByKQorICAgICAgICBmb3IgaywgdiBpbiBzZWxmLkMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3shcn06IHshcn0nLmZvcm1hdChrLCB2KSwgcikKIAogCiBjbGFzcyBQVHlwZXNMb25nSW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDU1MiwxMCArNDYzMCwzOCBAQAogICAgICAgICB0eXBlLm1ybyh0dXBsZSkKIAogCitjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3R5cGVfbG9va3VwX21yb19yZWZlcmVuY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE0MTk5OiBfUHlUeXBlX0xvb2t1cCgpIGhhcyB0byBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0bworICAgICAgICAjIHRoZSB0eXBlIE1STyBiZWNhdXNlIGl0IG1heSBiZSBtb2RpZmllZCBkdXJpbmcgdGhlIGxvb2t1cCwgaWYKKyAgICAgICAgIyBfX2Jhc2VzX18gaXMgc2V0IGR1cmluZyB0aGUgbG9va3VwIGZvciBleGFtcGxlLgorICAgICAgICBjbGFzcyBNeUtleShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBoYXNoKCdteWtleScpCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIFguX19iYXNlc19fID0gKEJhc2UyLCkKKworICAgICAgICBjbGFzcyBCYXNlKG9iamVjdCk6CisgICAgICAgICAgICBteWtleSA9ICdmcm9tIEJhc2UnCisgICAgICAgICAgICBteWtleTIgPSAnZnJvbSBCYXNlJworCisgICAgICAgIGNsYXNzIEJhc2UyKG9iamVjdCk6CisgICAgICAgICAgICBteWtleSA9ICdmcm9tIEJhc2UyJworICAgICAgICAgICAgbXlrZXkyID0gJ2Zyb20gQmFzZTInCisKKyAgICAgICAgWCA9IHR5cGUoJ1gnLCAoQmFzZSwpLCB7TXlLZXkoKTogNX0pCisgICAgICAgICMgbXlrZXkgaXMgcmVhZCBmcm9tIEJhc2UKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChYLm15a2V5LCAnZnJvbSBCYXNlJykKKyAgICAgICAgIyBteWtleTIgaXMgcmVhZCBmcm9tIEJhc2UyIGJlY2F1c2UgTXlLZXkuX19lcV9fIGhhcyBzZXQgX19iYXNlc19fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWC5teWtleTIsICdmcm9tIEJhc2UyJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgIyBSdW4gYWxsIGxvY2FsIHRlc3QgY2FzZXMsIHdpdGggUFR5cGVzTG9uZ0luaXRUZXN0IGZpcnN0LgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBUeXBlc0xvbmdJbml0VGVzdCwgT3BlcmF0b3JzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzUHJvcGVydGllc0FuZE1ldGhvZHMsIERpY3RQcm94eVRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzUHJvcGVydGllc0FuZE1ldGhvZHMsIERpY3RQcm94eVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NUZXN0cykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKaW5kZXggMmRiM2QzMy4uZjQ5NWUxOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CkBAIC0xNzAsNiArMTcwLDcgQEAKICAgICAgJ19fY29udGFpbnNfXycsCiAgICAgICdfX2RlbGF0dHJfXycsCiAgICAgICdfX2RlbGl0ZW1fXycsCisgICAgICdfX2Rpcl9fJywKICAgICAgJ19fZG9jX18nLAogICAgICAnX19lcV9fJywKICAgICAgJ19fZm9ybWF0X18nLApAQCAtMTk5LDYgKzIwMCw4IEBACiAgICAgICdfX3N0cl9fJywKICAgICAgJ19fc3ViY2xhc3Nob29rX18nLAogICAgICAnYXBwZW5kJywKKyAgICAgJ2NsZWFyJywKKyAgICAgJ2NvcHknLAogICAgICAnY291bnQnLAogICAgICAnZXh0ZW5kJywKICAgICAgJ2luZGV4JywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWY0ZTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CkBAIC0wLDAgKzEsOTQgQEAKKyMgVGVzdCBjYXNlIGZvciB0aGUgc2VsZWN0LmRldnBvbGwoKSBmdW5jdGlvbgorCisjIEluaXRpYWwgdGVzdHMgYXJlIGNvcGllZCBhcyBpcyBmcm9tICJ0ZXN0X3BvbGwucHkiCisKK2ltcG9ydCBvcywgc2VsZWN0LCByYW5kb20sIHVuaXR0ZXN0LCBzeXMKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorCit0cnk6CisgICAgc2VsZWN0LmRldnBvbGwKK2V4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgic2VsZWN0LmRldnBvbGwgbm90IGRlZmluZWQgLS0gc2tpcHBpbmcgdGVzdF9kZXZwb2xsIikKKworCitkZWYgZmluZF9yZWFkeV9tYXRjaGluZyhyZWFkeSwgZmxhZyk6CisgICAgbWF0Y2ggPSBbXQorICAgIGZvciBmZCwgbW9kZSBpbiByZWFkeToKKyAgICAgICAgaWYgbW9kZSAmIGZsYWc6CisgICAgICAgICAgICBtYXRjaC5hcHBlbmQoZmQpCisgICAgcmV0dXJuIG1hdGNoCisKK2NsYXNzIERldlBvbGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZXZwb2xsMShzZWxmKToKKyAgICAgICAgIyBCYXNpYyBmdW5jdGlvbmFsIHRlc3Qgb2YgcG9sbCBvYmplY3QKKyAgICAgICAgIyBDcmVhdGUgYSBidW5jaCBvZiBwaXBlIGFuZCB0ZXN0IHRoYXQgcG9sbCB3b3JrcyB3aXRoIHRoZW0uCisKKyAgICAgICAgcCA9IHNlbGVjdC5kZXZwb2xsKCkKKworICAgICAgICBOVU1fUElQRVMgPSAxMgorICAgICAgICBNU0cgPSBiIiBUaGlzIGlzIGEgdGVzdC4iCisgICAgICAgIE1TR19MRU4gPSBsZW4oTVNHKQorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgd3JpdGVycyA9IFtdCisgICAgICAgIHIydyA9IHt9CisgICAgICAgIHcyciA9IHt9CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNX1BJUEVTKToKKyAgICAgICAgICAgIHJkLCB3ciA9IG9zLnBpcGUoKQorICAgICAgICAgICAgcC5yZWdpc3RlcihyZCkKKyAgICAgICAgICAgIHAubW9kaWZ5KHJkLCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgcC5yZWdpc3Rlcih3ciwgc2VsZWN0LlBPTExPVVQpCisgICAgICAgICAgICByZWFkZXJzLmFwcGVuZChyZCkKKyAgICAgICAgICAgIHdyaXRlcnMuYXBwZW5kKHdyKQorICAgICAgICAgICAgcjJ3W3JkXSA9IHdyCisgICAgICAgICAgICB3MnJbd3JdID0gcmQKKworICAgICAgICBidWZzID0gW10KKworICAgICAgICB3aGlsZSB3cml0ZXJzOgorICAgICAgICAgICAgcmVhZHkgPSBwLnBvbGwoKQorICAgICAgICAgICAgcmVhZHlfd3JpdGVycyA9IGZpbmRfcmVhZHlfbWF0Y2hpbmcocmVhZHksIHNlbGVjdC5QT0xMT1VUKQorICAgICAgICAgICAgaWYgbm90IHJlYWR5X3dyaXRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBwaXBlcyByZWFkeSBmb3Igd3JpdGluZyIpCisgICAgICAgICAgICB3ciA9IHJhbmRvbS5jaG9pY2UocmVhZHlfd3JpdGVycykKKyAgICAgICAgICAgIG9zLndyaXRlKHdyLCBNU0cpCisKKyAgICAgICAgICAgIHJlYWR5ID0gcC5wb2xsKCkKKyAgICAgICAgICAgIHJlYWR5X3JlYWRlcnMgPSBmaW5kX3JlYWR5X21hdGNoaW5nKHJlYWR5LCBzZWxlY3QuUE9MTElOKQorICAgICAgICAgICAgaWYgbm90IHJlYWR5X3JlYWRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyBwaXBlcyByZWFkeSBmb3IgcmVhZGluZyIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFt3MnJbd3JdXSwgcmVhZHlfcmVhZGVycykKKyAgICAgICAgICAgIHJkID0gcmVhZHlfcmVhZGVyc1swXQorICAgICAgICAgICAgYnVmID0gb3MucmVhZChyZCwgTVNHX0xFTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGJ1ZiksIE1TR19MRU4pCisgICAgICAgICAgICBidWZzLmFwcGVuZChidWYpCisgICAgICAgICAgICBvcy5jbG9zZShyMndbcmRdKSA7IG9zLmNsb3NlKHJkKQorICAgICAgICAgICAgcC51bnJlZ2lzdGVyKHIyd1tyZF0pCisgICAgICAgICAgICBwLnVucmVnaXN0ZXIocmQpCisgICAgICAgICAgICB3cml0ZXJzLnJlbW92ZShyMndbcmRdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmcywgW01TR10gKiBOVU1fUElQRVMpCisKKyAgICBkZWYgdGVzdF90aW1lb3V0X292ZXJmbG93KHNlbGYpOgorICAgICAgICBwb2xsc3RlciA9IHNlbGVjdC5kZXZwb2xsKCkKKyAgICAgICAgdywgciA9IG9zLnBpcGUoKQorICAgICAgICBwb2xsc3Rlci5yZWdpc3Rlcih3KQorCisgICAgICAgIHBvbGxzdGVyLnBvbGwoLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHBvbGxzdGVyLnBvbGwsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb2xsc3Rlci5wb2xsLCAtMSA8PCAzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgLTEgPDwgNjQpCisKKyAgICAgICAgcG9sbHN0ZXIucG9sbCgwKQorICAgICAgICBwb2xsc3Rlci5wb2xsKDEpCisgICAgICAgIHBvbGxzdGVyLnBvbGwoMSA8PCAzMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCAzMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCA2MykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9sbHN0ZXIucG9sbCwgMSA8PCA2NCkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChEZXZQb2xsVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQppbmRleCBkMjc0MGEzLi5kZDRkNTUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CkBAIC0yLDcgKzIsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGltcG9ydCBjb2xsZWN0aW9ucywgcmFuZG9tLCBzdHJpbmcKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBnYywgd2Vha3JlZgoraW1wb3J0IHBpY2tsZQogCiAKIGNsYXNzIERpY3RUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMxOSw2ICszMjEsMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQyLmhhc2hfY291bnQsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMS5lcV9jb3VudCArIGhhc2hlZDIuZXFfY291bnQsIDEpCiAKKyAgICBkZWYgdGVzdF9zZXRpdGVtX2F0b21pY19hdF9yZXNpemUoc2VsZik6CisgICAgICAgIGNsYXNzIEhhc2hlZChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaGFzaF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBzZWxmLmVxX2NvdW50ID0gMAorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuaGFzaF9jb3VudCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBzZWxmLmVxX2NvdW50ICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gaWQoc2VsZikgPT0gaWQob3RoZXIpCisgICAgICAgIGhhc2hlZDEgPSBIYXNoZWQoKQorICAgICAgICAjIDUgaXRlbXMKKyAgICAgICAgeSA9IHtoYXNoZWQxOiA1LCAwOiAwLCAxOiAxLCAyOiAyLCAzOiAzfQorICAgICAgICBoYXNoZWQyID0gSGFzaGVkKCkKKyAgICAgICAgIyA2dGggaXRlbSBmb3JjZXMgYSByZXNpemUKKyAgICAgICAgeVtoYXNoZWQyXSA9IFtdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaGVkMS5oYXNoX2NvdW50LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hlZDIuaGFzaF9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoZWQxLmVxX2NvdW50ICsgaGFzaGVkMi5lcV9jb3VudCwgMSkKKwogICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CiAgICAgICAgICMgZGljdC5wb3BpdGVtKCkKICAgICAgICAgZm9yIGNvcHltb2RlIGluIC0xLCArMToKQEAgLTM3OSw3ICs0MDIsNyBAQAogICAgICAgICB4LmZhaWwgPSBUcnVlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4YywgZC5wb3AsIHgpCiAKLSAgICBkZWYgdGVzdF9tdXRhdGluZ2l0ZXJhdGlvbihzZWxmKToKKyAgICBkZWYgdGVzdF9tdXRhdGluZ19pdGVyYXRpb24oc2VsZik6CiAgICAgICAgICMgY2hhbmdpbmcgZGljdCBzaXplIGR1cmluZyBpdGVyYXRpb24KICAgICAgICAgZCA9IHt9CiAgICAgICAgIGRbMV0gPSAxCkBAIC0zODcsNiArNDEwLDMyIEBACiAgICAgICAgICAgICBmb3IgaSBpbiBkOgogICAgICAgICAgICAgICAgIGRbaSsxXSA9IDEKIAorICAgIGRlZiB0ZXN0X211dGF0aW5nX2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBjaGFuZ2luZyBkaWN0IGR1cmluZyBhIGxvb2t1cCAoaXNzdWUgIzE0NDE3KQorICAgICAgICBjbGFzcyBOYXN0eUtleToKKyAgICAgICAgICAgIG11dGF0ZV9kaWN0ID0gTm9uZQorCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHNlbGYudmFsdWUgPSB2YWx1ZQorCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgIyBoYXNoIGNvbGxpc2lvbiEKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBpZiBOYXN0eUtleS5tdXRhdGVfZGljdDoKKyAgICAgICAgICAgICAgICAgICAgbXlkaWN0LCBrZXkgPSBOYXN0eUtleS5tdXRhdGVfZGljdAorICAgICAgICAgICAgICAgICAgICBOYXN0eUtleS5tdXRhdGVfZGljdCA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgZGVsIG15ZGljdFtrZXldCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUgPT0gb3RoZXIudmFsdWUKKworICAgICAgICBrZXkxID0gTmFzdHlLZXkoMSkKKyAgICAgICAga2V5MiA9IE5hc3R5S2V5KDIpCisgICAgICAgIGQgPSB7a2V5MTogMX0KKyAgICAgICAgTmFzdHlLZXkubXV0YXRlX2RpY3QgPSAoZCwga2V5MSkKKyAgICAgICAgZFtrZXkyXSA9IDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCB7a2V5MjogMn0pCisKICAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgogICAgICAgICBkID0ge30KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGQpLCAne30nKQpAQCAtNzc2LDYgKzgyNSw3NSBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl90cmFja2VkKE15RGljdCgpKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CisgICAgICAgIGRhdGEgPSB7MToiYSIsIDI6ImIiLCAzOiJjIn0KKyAgICAgICAgaXQgPSBpdGVyKGRhdGEpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgc29ydGVkKGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyb3AgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBkZWwgZGF0YVtkcm9wXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChpdCksIHNvcnRlZChkYXRhKSkKKworICAgIGRlZiB0ZXN0X2l0ZW1pdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICAjIGRpY3R2aWV3cyBhcmVuJ3QgcGlja2xhYmxlLCBvbmx5IHRoZWlyIGl0ZXJhdG9ycworICAgICAgICBpdG9yZyA9IGl0ZXIoZGF0YS5pdGVtcygpKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAjIG5vdGUgdGhhdCB0aGUgdHlwZSBvZiB0eXBlIG9mIHRoZSB1bnBpY2tsZWQgaXRlcmF0b3IKKyAgICAgICAgIyBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsLiAgSXQgaXMKKyAgICAgICAgIyBtZXJlbHkgYW4gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGl0ZXJhdG9yIHByb3RvY29sLCB5aWVsZGluZworICAgICAgICAjIHRoZSBzYW1lIG9iamVjdHMgYXMgdGhlIG9yaWdpbmFsIG9uZS4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChpdCksIGRhdGEpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIGRlbCBkYXRhW2Ryb3BbMF1dCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdChpdCksIGRhdGEpCisKKyAgICBkZWYgdGVzdF92YWx1ZXNpdGVyYXRvcl9waWNrbGluZyhzZWxmKToKKyAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQorICAgICAgICAjIGRhdGEudmFsdWVzKCkgaXNuJ3QgcGlja2xhYmxlLCBvbmx5IGl0cyBpdGVyYXRvcgorICAgICAgICBpdCA9IGl0ZXIoZGF0YS52YWx1ZXMoKSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChpdCkpLCBzb3J0ZWQobGlzdChkYXRhLnZhbHVlcygpKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgZHJvcCA9IG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHZhbHVlcyA9IGxpc3QoaXQpICsgW2Ryb3BdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHZhbHVlcyksIHNvcnRlZChsaXN0KGRhdGEudmFsdWVzKCkpKSkKKworICAgIGRlZiB0ZXN0X2luc3RhbmNlX2RpY3RfZ2V0YXR0cl9zdHJfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtc2cpOgorICAgICAgICAgICAgICAgIHNlbGYubXNnID0gbXNnCisgICAgICAgIGYgPSBGb28oJzEyMycpCisgICAgICAgIGNsYXNzIF9zdHIoc3RyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLm1zZywgZ2V0YXR0cihmLCBfc3RyKCdtc2cnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5tc2csIGYuX19kaWN0X19bX3N0cignbXNnJyldKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3NldF9pdGVtX3NpbmdsZV9pbnN0YW5jZV9ub25fc3RyX2tleShzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vOiBwYXNzCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLl9fZGljdF9fWzFdID0gMQorICAgICAgICBmLmEgPSAnYScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9fZGljdF9fLCB7MToxLCAnYSc6J2EnfSkKIAogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKaW5kZXggNWM1OWVhYS4uMWJjZDY5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaXMucHkKQEAgLTEsMTEgKzEsMzUgQEAKICMgTWluaW1hbCB0ZXN0cyBmb3IgZGlzIG1vZHVsZQogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjYXB0dXJlZF9zdGRvdXQKK2ltcG9ydCBkaWZmbGliCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBkaXMKIGltcG9ydCBpbwogCitjbGFzcyBfQzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHNlbGYueCA9IHggPT0gMQorCitkaXNfY19pbnN0YW5jZV9tZXRob2QgPSAiIiJcCisgJS00ZCAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCisgICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChzZWxmKQorICAgICAgICAgICAgIDEyIFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgIDE1IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorIiIiICUgKF9DLl9faW5pdF9fLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwpCisKK2Rpc19jX2luc3RhbmNlX21ldGhvZF9ieXRlcyA9ICIiIlwKKyAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgMSAoMSkKKyAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgOSBMT0FEX0ZBU1QgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgIDAgKDApCisgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgIDAgKDApCisgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyIiIgogCiBkZWYgX2YoYSk6CiAgICAgcHJpbnQoYSkKQEAgLTE0LDcgKzM4LDcgQEAKIGRpc19mID0gIiIiXAogICUtNGQgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChwcmludCkKICAgICAgICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoYSkKLSAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQogICAgICAgICAgICAgICA5IFBPUF9UT1AKIAogICUtNGQgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQpAQCAtMjMsNiArNDcsMTYgQEAKICAgICAgICBfZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIpCiAKIAorZGlzX2ZfY29fY29kZSA9ICIiIlwKKyAgICAgICAgICAwIExPQURfR0xPQkFMICAgICAgICAgMCAoMCkKKyAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgMCAoMCkKKyAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgMSAoMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcikKKyAgICAgICAgICA5IFBPUF9UT1AKKyAgICAgICAgIDEwIExPQURfQ09OU1QgICAgICAgICAgMSAoMSkKKyAgICAgICAgIDEzIFJFVFVSTl9WQUxVRQorIiIiCisKKwogZGVmIGJ1ZzcwODkwMSgpOgogICAgIGZvciByZXMgaW4gcmFuZ2UoMSwKICAgICAgICAgICAgICAgICAgICAgIDEwKToKQEAgLTM0LDcgKzY4LDcgQEAKICAgICAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKIAogICUtNGQgICAgICAgICA5IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgxMCkKLSAgICAgICAgICAgICAxMiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMgorICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyICgyIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQogICAgICAgICAgICAgIDE1IEdFVF9JVEVSCiAgICAgICAgID4+ICAgMTYgRk9SX0lURVIgICAgICAgICAgICAgICAgIDYgKHRvIDI1KQogICAgICAgICAgICAgIDE5IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChyZXMpCkBAIC0xMzgsMTggKzE3MiwyNyBAQAogIiIiCiAKIGNsYXNzIERpc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgZG9fZGlzYXNzZW1ibHlfdGVzdChzZWxmLCBmdW5jLCBleHBlY3RlZCk6CisKKyAgICBkZWYgZ2V0X2Rpc2Fzc2VtYmx5KHNlbGYsIGZ1bmMsIGxhc3RpPS0xLCB3cmFwcGVyPVRydWUpOgogICAgICAgICBzID0gaW8uU3RyaW5nSU8oKQogICAgICAgICBzYXZlX3N0ZG91dCA9IHN5cy5zdGRvdXQKICAgICAgICAgc3lzLnN0ZG91dCA9IHMKLSAgICAgICAgZGlzLmRpcyhmdW5jKQotICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZV9zdGRvdXQKLSAgICAgICAgZ290ID0gcy5nZXR2YWx1ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHdyYXBwZXI6CisgICAgICAgICAgICAgICAgZGlzLmRpcyhmdW5jKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXMuZGlzYXNzZW1ibGUoZnVuYywgbGFzdGkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZV9zdGRvdXQKICAgICAgICAgIyBUcmltIHRyYWlsaW5nIGJsYW5rcyAoaWYgYW55KS4KLSAgICAgICAgbGluZXMgPSBnb3Quc3BsaXQoJ1xuJykKLSAgICAgICAgbGluZXMgPSBbbGluZS5yc3RyaXAoKSBmb3IgbGluZSBpbiBsaW5lc10KLSAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZC5zcGxpdCgiXG4iKQotICAgICAgICBpbXBvcnQgZGlmZmxpYgorICAgICAgICByZXR1cm4gW2xpbmUucnN0cmlwKCkgZm9yIGxpbmUgaW4gcy5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKV0KKworICAgIGRlZiBnZXRfZGlzYXNzZW1ibGVfYXNfc3RyaW5nKHNlbGYsIGZ1bmMsIGxhc3RpPS0xKToKKyAgICAgICAgcmV0dXJuICdcbicuam9pbihzZWxmLmdldF9kaXNhc3NlbWJseShmdW5jLCBsYXN0aSwgRmFsc2UpKQorCisgICAgZGVmIGRvX2Rpc2Fzc2VtYmx5X3Rlc3Qoc2VsZiwgZnVuYywgZXhwZWN0ZWQpOgorICAgICAgICBsaW5lcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KGZ1bmMpCisgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuc3BsaXRsaW5lcygpCiAgICAgICAgIGlmIGV4cGVjdGVkICE9IGxpbmVzOgogICAgICAgICAgICAgc2VsZi5mYWlsKAogICAgICAgICAgICAgICAgICJldmVudHMgZGlkIG5vdCBtYXRjaCBleHBlY3RhdGlvbjpcbiIgKwpAQCAtMTU3LDcgKzIwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMpKSkKIAogICAgIGRlZiB0ZXN0X29wbWFwKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcy5vcG1hcFsiU1RPUF9DT0RFIl0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzLm9wbWFwWyJOT1AiXSwgOSkKICAgICAgICAgc2VsZi5hc3NlcnRJbihkaXMub3BtYXBbIkxPQURfQ09OU1QiXSwgZGlzLmhhc2NvbnN0KQogICAgICAgICBzZWxmLmFzc2VydEluKGRpcy5vcG1hcFsiU1RPUkVfTkFNRSJdLCBkaXMuaGFzbmFtZSkKIApAQCAtMjExLDYgKzI1NCw0NCBAQAogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3Qoc2ltcGxlX3N0bXRfc3RyLCBkaXNfc2ltcGxlX3N0bXRfc3RyKQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoY29tcG91bmRfc3RtdF9zdHIsIGRpc19jb21wb3VuZF9zdG10X3N0cikKIAorICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX2J5dGVzKHNlbGYpOgorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoX2YuX19jb2RlX18uY29fY29kZSwgZGlzX2ZfY29fY29kZSkKKworICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KF9DKDEpLl9faW5pdF9fLCBkaXNfY19pbnN0YW5jZV9tZXRob2QpCisKKyAgICBkZWYgdGVzdF9kaXNhc3NlbWJsZV9tZXRob2RfYnl0ZXMoc2VsZik6CisgICAgICAgIG1ldGhvZF9ieXRlY29kZSA9IF9DKDEpLl9faW5pdF9fLl9fY29kZV9fLmNvX2NvZGUKKyAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KG1ldGhvZF9ieXRlY29kZSwgZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzKQorCisgICAgZGVmIHRlc3RfZGlzX25vbmUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRlbCBzeXMubGFzdF90cmFjZWJhY2sKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIGRpcy5kaXMsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9kaXNfb2JqZWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGRpcy5kaXMsIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfZGlzX3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjaworICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS8wCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSB0YgorCisgICAgICAgIHRiX2RpcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmxlX2FzX3N0cmluZyh0Yi50Yl9mcmFtZS5mX2NvZGUsIHRiLnRiX2xhc3RpKQorICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoTm9uZSwgdGJfZGlzKQorCisgICAgZGVmIHRlc3RfZGlzX29iamVjdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkaXMuZGlzLCBvYmplY3QoKSkKKwogY29kZV9pbmZvX2NvZGVfaW5mbyA9ICIiIlwKIE5hbWU6ICAgICAgICAgICAgICBjb2RlX2luZm8KIEZpbGVuYW1lOiAgICAgICAgICAoLiopCkBAIC0yNTgsNiArMzM5LDcgQEAKIENvbnN0YW50czoKICAgIDA6IE5vbmUKICAgIDE6IDxjb2RlIG9iamVjdCBmIGF0ICguKiksIGZpbGUgIiguKikiLCBsaW5lICguKik+CisgICAyOiAndHJpY2t5Ljxsb2NhbHM+LmYnCiBWYXJpYWJsZSBuYW1lczoKICAgIDA6IHgKICAgIDE6IHkKQEAgLTM2NCw2ICs0NDYsMTMgQEAKICAgICAgICAgICAgICAgICBkaXMuc2hvd19jb2RlKHgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dC5nZXR2YWx1ZSgpLCBleHBlY3RlZCsiXG4iKQogCisgICAgZGVmIHRlc3RfY29kZV9pbmZvX29iamVjdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkaXMuY29kZV9pbmZvLCBvYmplY3QoKSkKKworICAgIGRlZiB0ZXN0X3ByZXR0eV9mbGFnc19ub19mbGFncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXMucHJldHR5X2ZsYWdzKDApLCAnMHgwJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KERpc1Rlc3RzLCBDb2RlSW5mb1Rlc3RzKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKaW5kZXggYTZjMTdjYy4uOGY4YzdjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQpAQCAtNSw2ICs1LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCBvcworaW1wb3J0IHN5cwogCiAKICMgTk9URTogVGhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB0ZXN0cyByZWxhdGluZyB0byBpbnRlcmFjdGlvbiB3aXRoCkBAIC00MzIsNyArNDMzLDcgQEAKICAgICA+Pj4gdGVzdHMgPSBmaW5kZXIuZmluZChzYW1wbGVfZnVuYykKIAogICAgID4+PiBwcmludCh0ZXN0cykgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgWzxEb2NUZXN0IHNhbXBsZV9mdW5jIGZyb20gLi4uOjE3ICgxIGV4YW1wbGUpPl0KKyAgICBbPERvY1Rlc3Qgc2FtcGxlX2Z1bmMgZnJvbSAuLi46MTggKDEgZXhhbXBsZSk+XQogCiBUaGUgZXhhY3QgbmFtZSBkZXBlbmRzIG9uIGhvdyB0ZXN0X2RvY3Rlc3Qgd2FzIGludm9rZWQsIHNvIGFsbG93IGZvcgogbGVhZGluZyBwYXRoIGNvbXBvbmVudHMuCkBAIC0xNzQ1LDIyNiArMTc0NiwyMjcgQEAKIAogIiIiCiAKLWRlZiB0ZXN0X3BkYl9zZXRfdHJhY2UoKToKLSAgICAiIiJVc2luZyBwZGIuc2V0X3RyYWNlIGZyb20gYSBkb2N0ZXN0LgoraWYgbm90IGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBvciBub3Qgc3lzLmdldHRyYWNlKCk6CisgICAgZGVmIHRlc3RfcGRiX3NldF90cmFjZSgpOgorICAgICAgICAiIiJVc2luZyBwZGIuc2V0X3RyYWNlIGZyb20gYSBkb2N0ZXN0LgogCi0gICAgWW91IGNhbiB1c2UgcGRiLnNldF90cmFjZSBmcm9tIGEgZG9jdGVzdC4gIFRvIGRvIHNvLCB5b3UgbXVzdAotICAgIHJldHJpZXZlIHRoZSBzZXRfdHJhY2UgZnVuY3Rpb24gZnJvbSB0aGUgcGRiIG1vZHVsZSBhdCB0aGUgdGltZQotICAgIHlvdSB1c2UgaXQuICBUaGUgZG9jdGVzdCBtb2R1bGUgY2hhbmdlcyBzeXMuc3Rkb3V0IHNvIHRoYXQgaXQgY2FuCi0gICAgY2FwdHVyZSBwcm9ncmFtIG91dHB1dC4gIEl0IGFsc28gdGVtcG9yYXJpbHkgcmVwbGFjZXMgcGRiLnNldF90cmFjZQotICAgIHdpdGggYSB2ZXJzaW9uIHRoYXQgcmVzdG9yZXMgc3Rkb3V0LiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIHlvdSB0bwotICAgIHNlZSBkZWJ1Z2dlciBvdXRwdXQuCisgICAgICAgIFlvdSBjYW4gdXNlIHBkYi5zZXRfdHJhY2UgZnJvbSBhIGRvY3Rlc3QuICBUbyBkbyBzbywgeW91IG11c3QKKyAgICAgICAgcmV0cmlldmUgdGhlIHNldF90cmFjZSBmdW5jdGlvbiBmcm9tIHRoZSBwZGIgbW9kdWxlIGF0IHRoZSB0aW1lCisgICAgICAgIHlvdSB1c2UgaXQuICBUaGUgZG9jdGVzdCBtb2R1bGUgY2hhbmdlcyBzeXMuc3Rkb3V0IHNvIHRoYXQgaXQgY2FuCisgICAgICAgIGNhcHR1cmUgcHJvZ3JhbSBvdXRwdXQuICBJdCBhbHNvIHRlbXBvcmFyaWx5IHJlcGxhY2VzIHBkYi5zZXRfdHJhY2UKKyAgICAgICAgd2l0aCBhIHZlcnNpb24gdGhhdCByZXN0b3JlcyBzdGRvdXQuICBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgeW91IHRvCisgICAgICAgIHNlZSBkZWJ1Z2dlciBvdXRwdXQuCiAKLSAgICAgID4+PiBkb2MgPSAnJycKLSAgICAgIC4uLiA+Pj4geCA9IDQyCi0gICAgICAuLi4gPj4+IHJhaXNlIEV4Y2VwdGlvbignY2zDqScpCi0gICAgICAuLi4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgLi4uIEV4Y2VwdGlvbjogY2zDqQotICAgICAgLi4uID4+PiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIC4uLiAnJycKLSAgICAgID4+PiBwYXJzZXIgPSBkb2N0ZXN0LkRvY1Rlc3RQYXJzZXIoKQotICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCB7fSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKLSAgICAgID4+PiBydW5uZXIgPSBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSkKKyAgICAgICAgICA+Pj4gZG9jID0gJycnCisgICAgICAgICAgLi4uID4+PiB4ID0gNDIKKyAgICAgICAgICAuLi4gPj4+IHJhaXNlIEV4Y2VwdGlvbignY2zDqScpCisgICAgICAgICAgLi4uIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgICAgICAuLi4gRXhjZXB0aW9uOiBjbMOpCisgICAgICAgICAgLi4uID4+PiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICAuLi4gJycnCisgICAgICAgICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCisgICAgICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCB7fSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKKyAgICAgICAgICA+Pj4gcnVubmVyID0gZG9jdGVzdC5Eb2NUZXN0UnVubmVyKHZlcmJvc2U9RmFsc2UpCiAKLSAgICBUbyBkZW1vbnN0cmF0ZSB0aGlzLCB3ZSdsbCBjcmVhdGUgYSBmYWtlIHN0YW5kYXJkIGlucHV0IHRoYXQKLSAgICBjYXB0dXJlcyBvdXIgZGVidWdnZXIgaW5wdXQ6CisgICAgICAgIFRvIGRlbW9uc3RyYXRlIHRoaXMsIHdlJ2xsIGNyZWF0ZSBhIGZha2Ugc3RhbmRhcmQgaW5wdXQgdGhhdAorICAgICAgICBjYXB0dXJlcyBvdXIgZGVidWdnZXIgaW5wdXQ6CiAKLSAgICAgID4+PiBpbXBvcnQgdGVtcGZpbGUKLSAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCi0gICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCi0gICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgICAgLi4uICAgICcnXSkKKyAgICAgICAgICA+Pj4gaW1wb3J0IHRlbXBmaWxlCisgICAgICAgICAgPj4+IHJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCisgICAgICAgICAgLi4uICAgICdwcmludCh4KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBieSB0aGUgZXhhbXBsZQorICAgICAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCisgICAgICAgICAgLi4uICAgICcnXSkKIAotICAgICAgPj4+IHRyeTogcnVubmVyLnJ1bih0ZXN0KQotICAgICAgLi4uIGZpbmFsbHk6IHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQotICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICAoUGRiKSBwcmludCh4KQotICAgICAgNDIKLSAgICAgIChQZGIpIGNvbnRpbnVlCi0gICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTMpCisgICAgICAgICAgPj4+IHRyeTogcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAgIC4uLiBmaW5hbGx5OiBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQorICAgICAgICAgIC0+IGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIChQZGIpIHByaW50KHgpCisgICAgICAgICAgNDIKKyAgICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9MykKIAotICAgICAgWW91IGNhbiBhbHNvIHB1dCBwZGIuc2V0X3RyYWNlIGluIGEgZnVuY3Rpb24gY2FsbGVkIGZyb20gYSB0ZXN0OgorICAgICAgICAgIFlvdSBjYW4gYWxzbyBwdXQgcGRiLnNldF90cmFjZSBpbiBhIGZ1bmN0aW9uIGNhbGxlZCBmcm9tIGEgdGVzdDoKIAotICAgICAgPj4+IGRlZiBjYWxsc19zZXRfdHJhY2UoKToKLSAgICAgIC4uLiAgICB5PTIKLSAgICAgIC4uLiAgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICA+Pj4gZGVmIGNhbGxzX3NldF90cmFjZSgpOgorICAgICAgICAgIC4uLiAgICB5PTIKKyAgICAgICAgICAuLi4gICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCiAKLSAgICAgID4+PiBkb2MgPSAnJycKLSAgICAgIC4uLiA+Pj4geD0xCi0gICAgICAuLi4gPj4+IGNhbGxzX3NldF90cmFjZSgpCi0gICAgICAuLi4gJycnCi0gICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKLSAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCi0gICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgICAuLi4gICAgJ3ByaW50KHkpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGluIHRoZSBmdW5jdGlvbgotICAgICAgLi4uICAgICd1cCcsICAgICAgICMgb3V0IG9mIGZ1bmN0aW9uCi0gICAgICAuLi4gICAgJ3ByaW50KHgpJywgICMgcHJpbnQgZGF0YSBkZWZpbmVkIGJ5IHRoZSBleGFtcGxlCi0gICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgICAgLi4uICAgICcnXSkKKyAgICAgICAgICA+Pj4gZG9jID0gJycnCisgICAgICAgICAgLi4uID4+PiB4PTEKKyAgICAgICAgICAuLi4gPj4+IGNhbGxzX3NldF90cmFjZSgpCisgICAgICAgICAgLi4uICcnJworICAgICAgICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQorICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWworICAgICAgICAgIC4uLiAgICAncHJpbnQoeSknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uCisgICAgICAgICAgLi4uICAgICd1cCcsICAgICAgICMgb3V0IG9mIGZ1bmN0aW9uCisgICAgICAgICAgLi4uICAgICdwcmludCh4KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBieSB0aGUgZXhhbXBsZQorICAgICAgICAgIC4uLiAgICAnY29udGludWUnLCAjIHN0b3AgZGVidWdnaW5nCisgICAgICAgICAgLi4uICAgICcnXSkKIAotICAgICAgPj4+IHRyeToKLSAgICAgIC4uLiAgICAgcnVubmVyLnJ1bih0ZXN0KQotICAgICAgLi4uIGZpbmFsbHk6Ci0gICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlWzhdPigzKWNhbGxzX3NldF90cmFjZSgpLT5Ob25lCi0gICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKLSAgICAgIChQZGIpIHByaW50KHkpCi0gICAgICAyCi0gICAgICAoUGRiKSB1cAotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCi0gICAgICAtPiBjYWxsc19zZXRfdHJhY2UoKQotICAgICAgKFBkYikgcHJpbnQoeCkKLSAgICAgIDEKLSAgICAgIChQZGIpIGNvbnRpbnVlCi0gICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCisgICAgICAgICAgPj4+IHRyeToKKyAgICAgICAgICAuLi4gICAgIHJ1bm5lci5ydW4odGVzdCkKKyAgICAgICAgICAuLi4gZmluYWxseToKKyAgICAgICAgICAuLi4gICAgIHN5cy5zdGRpbiA9IHJlYWxfc3RkaW4KKyAgICAgICAgICAtLVJldHVybi0tCisgICAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbOF0+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKKyAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKKyAgICAgICAgICAoUGRiKSBwcmludCh5KQorICAgICAgICAgIDIKKyAgICAgICAgICAoUGRiKSB1cAorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMV0+KDEpPG1vZHVsZT4oKQorICAgICAgICAgIC0+IGNhbGxzX3NldF90cmFjZSgpCisgICAgICAgICAgKFBkYikgcHJpbnQoeCkKKyAgICAgICAgICAxCisgICAgICAgICAgKFBkYikgY29udGludWUKKyAgICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCiAKLSAgICBEdXJpbmcgaW50ZXJhY3RpdmUgZGVidWdnaW5nLCBzb3VyY2UgY29kZSBpcyBzaG93biwgZXZlbiBmb3IKLSAgICBkb2N0ZXN0IGV4YW1wbGVzOgorICAgICAgICBEdXJpbmcgaW50ZXJhY3RpdmUgZGVidWdnaW5nLCBzb3VyY2UgY29kZSBpcyBzaG93biwgZXZlbiBmb3IKKyAgICAgICAgZG9jdGVzdCBleGFtcGxlczoKIAotICAgICAgPj4+IGRvYyA9ICcnJwotICAgICAgLi4uID4+PiBkZWYgZih4KToKLSAgICAgIC4uLiAuLi4gICAgIGcoeCoyKQotICAgICAgLi4uID4+PiBkZWYgZyh4KToKLSAgICAgIC4uLiAuLi4gICAgIHByaW50KHgrMykKLSAgICAgIC4uLiAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQotICAgICAgLi4uID4+PiBmKDMpCi0gICAgICAuLi4gJycnCi0gICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKLSAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCi0gICAgICA+Pj4gc3lzLnN0ZGluID0gX0Zha2VJbnB1dChbCi0gICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMgotICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZygpCi0gICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMQotICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZigpCi0gICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMwotICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKLSAgICAgIC4uLiAgICAnJ10pCi0gICAgICA+Pj4gdHJ5OiBydW5uZXIucnVuKHRlc3QpCi0gICAgICAuLi4gZmluYWxseTogc3lzLnN0ZGluID0gcmVhbF9zdGRpbgotICAgICAgLi4uICMgZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFCi0gICAgICAtLVJldHVybi0tCi0gICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzFdPigzKWcoKS0+Tm9uZQotICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICAoUGRiKSBsaXN0Ci0gICAgICAgIDEgICAgIGRlZiBnKHgpOgotICAgICAgICAyICAgICAgICAgcHJpbnQoeCszKQotICAgICAgICAzICAtPiAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgICBbRU9GXQotICAgICAgKFBkYikgbmV4dAotICAgICAgLS1SZXR1cm4tLQotICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelswXT4oMilmKCktPk5vbmUKLSAgICAgIC0+IGcoeCoyKQotICAgICAgKFBkYikgbGlzdAotICAgICAgICAxICAgICBkZWYgZih4KToKLSAgICAgICAgMiAgLT4gICAgIGcoeCoyKQotICAgICAgW0VPRl0KLSAgICAgIChQZGIpIG5leHQKLSAgICAgIC0tUmV0dXJuLS0KLSAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMl0+KDEpPG1vZHVsZT4oKS0+Tm9uZQotICAgICAgLT4gZigzKQotICAgICAgKFBkYikgbGlzdAotICAgICAgICAxICAtPiBmKDMpCi0gICAgICBbRU9GXQotICAgICAgKFBkYikgY29udGludWUKLSAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICAgIEZpbGUgImZvby1iYXJAYmF6LnB5IiwgbGluZSA3LCBpbiBmb28tYmFyQGJhegotICAgICAgRmFpbGVkIGV4YW1wbGU6Ci0gICAgICAgICAgZigzKQotICAgICAgRXhwZWN0ZWQgbm90aGluZwotICAgICAgR290OgotICAgICAgICAgIDkKLSAgICAgIFRlc3RSZXN1bHRzKGZhaWxlZD0xLCBhdHRlbXB0ZWQ9MykKLSAgICAgICIiIgorICAgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgICAuLi4gPj4+IGRlZiBmKHgpOgorICAgICAgICAgIC4uLiAuLi4gICAgIGcoeCoyKQorICAgICAgICAgIC4uLiA+Pj4gZGVmIGcoeCk6CisgICAgICAgICAgLi4uIC4uLiAgICAgcHJpbnQoeCszKQorICAgICAgICAgIC4uLiAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIC4uLiA+Pj4gZigzKQorICAgICAgICAgIC4uLiAnJycKKyAgICAgICAgICA+Pj4gdGVzdCA9IHBhcnNlci5nZXRfZG9jdGVzdChkb2MsIGdsb2JhbHMoKSwgImZvby1iYXJAYmF6IiwgImZvby1iYXJAYmF6LnB5IiwgMCkKKyAgICAgICAgICA+Pj4gcmVhbF9zdGRpbiA9IHN5cy5zdGRpbgorICAgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKKyAgICAgICAgICAuLi4gICAgJ2xpc3QnLCAgICAgIyBsaXN0IHNvdXJjZSBmcm9tIGV4YW1wbGUgMgorICAgICAgICAgIC4uLiAgICAnbmV4dCcsICAgICAjIHJldHVybiBmcm9tIGcoKQorICAgICAgICAgIC4uLiAgICAnbGlzdCcsICAgICAjIGxpc3Qgc291cmNlIGZyb20gZXhhbXBsZSAxCisgICAgICAgICAgLi4uICAgICduZXh0JywgICAgICMgcmV0dXJuIGZyb20gZigpCisgICAgICAgICAgLi4uICAgICdsaXN0JywgICAgICMgbGlzdCBzb3VyY2UgZnJvbSBleGFtcGxlIDMKKyAgICAgICAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZworICAgICAgICAgIC4uLiAgICAnJ10pCisgICAgICAgICAgPj4+IHRyeTogcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAgIC4uLiBmaW5hbGx5OiBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCisgICAgICAgICAgLi4uICMgZG9jdGVzdDogK05PUk1BTElaRV9XSElURVNQQUNFCisgICAgICAgICAgLS1SZXR1cm4tLQorICAgICAgICAgID4gPGRvY3Rlc3QgZm9vLWJhckBiYXpbMV0+KDMpZygpLT5Ob25lCisgICAgICAgICAgLT4gaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCisgICAgICAgICAgKFBkYikgbGlzdAorICAgICAgICAgICAgMSAgICAgZGVmIGcoeCk6CisgICAgICAgICAgICAyICAgICAgICAgcHJpbnQoeCszKQorICAgICAgICAgICAgMyAgLT4gICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAgIFtFT0ZdCisgICAgICAgICAgKFBkYikgbmV4dAorICAgICAgICAgIC0tUmV0dXJuLS0KKyAgICAgICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzBdPigyKWYoKS0+Tm9uZQorICAgICAgICAgIC0+IGcoeCoyKQorICAgICAgICAgIChQZGIpIGxpc3QKKyAgICAgICAgICAgIDEgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgMiAgLT4gICAgIGcoeCoyKQorICAgICAgICAgIFtFT0ZdCisgICAgICAgICAgKFBkYikgbmV4dAorICAgICAgICAgIC0tUmV0dXJuLS0KKyAgICAgICAgICA+IDxkb2N0ZXN0IGZvby1iYXJAYmF6WzJdPigxKTxtb2R1bGU+KCktPk5vbmUKKyAgICAgICAgICAtPiBmKDMpCisgICAgICAgICAgKFBkYikgbGlzdAorICAgICAgICAgICAgMSAgLT4gZigzKQorICAgICAgICAgIFtFT0ZdCisgICAgICAgICAgKFBkYikgY29udGludWUKKyAgICAgICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgICAgRmlsZSAiZm9vLWJhckBiYXoucHkiLCBsaW5lIDcsIGluIGZvby1iYXJAYmF6CisgICAgICAgICAgRmFpbGVkIGV4YW1wbGU6CisgICAgICAgICAgICAgIGYoMykKKyAgICAgICAgICBFeHBlY3RlZCBub3RoaW5nCisgICAgICAgICAgR290OgorICAgICAgICAgICAgICA5CisgICAgICAgICAgVGVzdFJlc3VsdHMoZmFpbGVkPTEsIGF0dGVtcHRlZD0zKQorICAgICAgICAgICIiIgogCi1kZWYgdGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZCgpOgotICAgICIiIlRoaXMgaWxsdXN0cmF0ZXMgbW9yZS1kZW1hbmRpbmcgdXNlIG9mIHNldF90cmFjZSB3aXRoIG5lc3RlZCBmdW5jdGlvbnMuCisgICAgZGVmIHRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWQoKToKKyAgICAgICAgIiIiVGhpcyBpbGx1c3RyYXRlcyBtb3JlLWRlbWFuZGluZyB1c2Ugb2Ygc2V0X3RyYWNlIHdpdGggbmVzdGVkIGZ1bmN0aW9ucy4KIAotICAgID4+PiBjbGFzcyBDKG9iamVjdCk6Ci0gICAgLi4uICAgICBkZWYgY2FsbHNfc2V0X3RyYWNlKHNlbGYpOgotICAgIC4uLiAgICAgICAgIHkgPSAxCi0gICAgLi4uICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpCi0gICAgLi4uICAgICAgICAgc2VsZi5mMSgpCi0gICAgLi4uICAgICAgICAgeSA9IDIKLSAgICAuLi4gICAgIGRlZiBmMShzZWxmKToKLSAgICAuLi4gICAgICAgICB4ID0gMQotICAgIC4uLiAgICAgICAgIHNlbGYuZjIoKQotICAgIC4uLiAgICAgICAgIHggPSAyCi0gICAgLi4uICAgICBkZWYgZjIoc2VsZik6Ci0gICAgLi4uICAgICAgICAgeiA9IDEKLSAgICAuLi4gICAgICAgICB6ID0gMgorICAgICAgICA+Pj4gY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAuLi4gICAgIGRlZiBjYWxsc19zZXRfdHJhY2Uoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHkgPSAxCisgICAgICAgIC4uLiAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKQorICAgICAgICAuLi4gICAgICAgICBzZWxmLmYxKCkKKyAgICAgICAgLi4uICAgICAgICAgeSA9IDIKKyAgICAgICAgLi4uICAgICBkZWYgZjEoc2VsZik6CisgICAgICAgIC4uLiAgICAgICAgIHggPSAxCisgICAgICAgIC4uLiAgICAgICAgIHNlbGYuZjIoKQorICAgICAgICAuLi4gICAgICAgICB4ID0gMgorICAgICAgICAuLi4gICAgIGRlZiBmMihzZWxmKToKKyAgICAgICAgLi4uICAgICAgICAgeiA9IDEKKyAgICAgICAgLi4uICAgICAgICAgeiA9IDIKIAotICAgID4+PiBjYWxsc19zZXRfdHJhY2UgPSBDKCkuY2FsbHNfc2V0X3RyYWNlCisgICAgICAgID4+PiBjYWxsc19zZXRfdHJhY2UgPSBDKCkuY2FsbHNfc2V0X3RyYWNlCiAKLSAgICA+Pj4gZG9jID0gJycnCi0gICAgLi4uID4+PiBhID0gMQotICAgIC4uLiA+Pj4gY2FsbHNfc2V0X3RyYWNlKCkKLSAgICAuLi4gJycnCi0gICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0gICAgPj4+IHJ1bm5lciA9IGRvY3Rlc3QuRG9jVGVzdFJ1bm5lcih2ZXJib3NlPUZhbHNlKQotICAgID4+PiB0ZXN0ID0gcGFyc2VyLmdldF9kb2N0ZXN0KGRvYywgZ2xvYmFscygpLCAiZm9vLWJhckBiYXoiLCAiZm9vLWJhckBiYXoucHkiLCAwKQotICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCi0gICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWwotICAgIC4uLiAgICAncHJpbnQoeSknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uCi0gICAgLi4uICAgICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdwcmludCh6KScsCi0gICAgLi4uICAgICd1cCcsICdwcmludCh4KScsCi0gICAgLi4uICAgICd1cCcsICdwcmludCh5KScsCi0gICAgLi4uICAgICd1cCcsICdwcmludChmb28pJywKLSAgICAuLi4gICAgJ2NvbnRpbnVlJywgIyBzdG9wIGRlYnVnZ2luZwotICAgIC4uLiAgICAnJ10pCisgICAgICAgID4+PiBkb2MgPSAnJycKKyAgICAgICAgLi4uID4+PiBhID0gMQorICAgICAgICAuLi4gPj4+IGNhbGxzX3NldF90cmFjZSgpCisgICAgICAgIC4uLiAnJycKKyAgICAgICAgPj4+IHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCisgICAgICAgID4+PiBydW5uZXIgPSBkb2N0ZXN0LkRvY1Rlc3RSdW5uZXIodmVyYm9zZT1GYWxzZSkKKyAgICAgICAgPj4+IHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QoZG9jLCBnbG9iYWxzKCksICJmb28tYmFyQGJheiIsICJmb28tYmFyQGJhei5weSIsIDApCisgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCisgICAgICAgID4+PiBzeXMuc3RkaW4gPSBfRmFrZUlucHV0KFsKKyAgICAgICAgLi4uICAgICdwcmludCh5KScsICAjIHByaW50IGRhdGEgZGVmaW5lZCBpbiB0aGUgZnVuY3Rpb24KKyAgICAgICAgLi4uICAgICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdzdGVwJywgJ3N0ZXAnLCAnc3RlcCcsICdwcmludCh6KScsCisgICAgICAgIC4uLiAgICAndXAnLCAncHJpbnQoeCknLAorICAgICAgICAuLi4gICAgJ3VwJywgJ3ByaW50KHkpJywKKyAgICAgICAgLi4uICAgICd1cCcsICdwcmludChmb28pJywKKyAgICAgICAgLi4uICAgICdjb250aW51ZScsICMgc3RvcCBkZWJ1Z2dpbmcKKyAgICAgICAgLi4uICAgICcnXSkKIAotICAgID4+PiB0cnk6Ci0gICAgLi4uICAgICBydW5uZXIucnVuKHRlc3QpCi0gICAgLi4uIGZpbmFsbHk6Ci0gICAgLi4uICAgICBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCi0gICAgLi4uICMgZG9jdGVzdDogK1JFUE9SVF9ORElGRgotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNSljYWxsc19zZXRfdHJhY2UoKQotICAgIC0+IHNlbGYuZjEoKQotICAgIChQZGIpIHByaW50KHkpCi0gICAgMQotICAgIChQZGIpIHN0ZXAKLSAgICAtLUNhbGwtLQotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNylmMSgpCi0gICAgLT4gZGVmIGYxKHNlbGYpOgotICAgIChQZGIpIHN0ZXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDgpZjEoKQotICAgIC0+IHggPSAxCi0gICAgKFBkYikgc3RlcAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOSlmMSgpCi0gICAgLT4gc2VsZi5mMigpCi0gICAgKFBkYikgc3RlcAotICAgIC0tQ2FsbC0tCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPigxMSlmMigpCi0gICAgLT4gZGVmIGYyKHNlbGYpOgotICAgIChQZGIpIHN0ZXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDEyKWYyKCkKLSAgICAtPiB6ID0gMQotICAgIChQZGIpIHN0ZXAKLSAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDEzKWYyKCkKLSAgICAtPiB6ID0gMgotICAgIChQZGIpIHByaW50KHopCi0gICAgMQotICAgIChQZGIpIHVwCi0gICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig5KWYxKCkKLSAgICAtPiBzZWxmLmYyKCkKLSAgICAoUGRiKSBwcmludCh4KQotICAgIDEKLSAgICAoUGRiKSB1cAotICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oNSljYWxsc19zZXRfdHJhY2UoKQotICAgIC0+IHNlbGYuZjEoKQotICAgIChQZGIpIHByaW50KHkpCi0gICAgMQotICAgIChQZGIpIHVwCi0gICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCi0gICAgLT4gY2FsbHNfc2V0X3RyYWNlKCkKLSAgICAoUGRiKSBwcmludChmb28pCi0gICAgKioqIE5hbWVFcnJvcjogbmFtZSAnZm9vJyBpcyBub3QgZGVmaW5lZAotICAgIChQZGIpIGNvbnRpbnVlCi0gICAgVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD0yKQotIiIiCisgICAgICAgID4+PiB0cnk6CisgICAgICAgIC4uLiAgICAgcnVubmVyLnJ1bih0ZXN0KQorICAgICAgICAuLi4gZmluYWxseToKKyAgICAgICAgLi4uICAgICBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCisgICAgICAgIC4uLiAjIGRvY3Rlc3Q6ICtSRVBPUlRfTkRJRkYKKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig1KWNhbGxzX3NldF90cmFjZSgpCisgICAgICAgIC0+IHNlbGYuZjEoKQorICAgICAgICAoUGRiKSBwcmludCh5KQorICAgICAgICAxCisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgLS1DYWxsLS0KKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig3KWYxKCkKKyAgICAgICAgLT4gZGVmIGYxKHNlbGYpOgorICAgICAgICAoUGRiKSBzdGVwCisgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlX25lc3RlZFswXT4oOClmMSgpCisgICAgICAgIC0+IHggPSAxCisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPig5KWYxKCkKKyAgICAgICAgLT4gc2VsZi5mMigpCisgICAgICAgIChQZGIpIHN0ZXAKKyAgICAgICAgLS1DYWxsLS0KKyAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VfbmVzdGVkWzBdPigxMSlmMigpCisgICAgICAgIC0+IGRlZiBmMihzZWxmKToKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDEyKWYyKCkKKyAgICAgICAgLT4geiA9IDEKKyAgICAgICAgKFBkYikgc3RlcAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDEzKWYyKCkKKyAgICAgICAgLT4geiA9IDIKKyAgICAgICAgKFBkYikgcHJpbnQoeikKKyAgICAgICAgMQorICAgICAgICAoUGRiKSB1cAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDkpZjEoKQorICAgICAgICAtPiBzZWxmLmYyKCkKKyAgICAgICAgKFBkYikgcHJpbnQoeCkKKyAgICAgICAgMQorICAgICAgICAoUGRiKSB1cAorICAgICAgICA+IDxkb2N0ZXN0IHRlc3QudGVzdF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWRbMF0+KDUpY2FsbHNfc2V0X3RyYWNlKCkKKyAgICAgICAgLT4gc2VsZi5mMSgpCisgICAgICAgIChQZGIpIHByaW50KHkpCisgICAgICAgIDEKKyAgICAgICAgKFBkYikgdXAKKyAgICAgICAgPiA8ZG9jdGVzdCBmb28tYmFyQGJhelsxXT4oMSk8bW9kdWxlPigpCisgICAgICAgIC0+IGNhbGxzX3NldF90cmFjZSgpCisgICAgICAgIChQZGIpIHByaW50KGZvbykKKyAgICAgICAgKioqIE5hbWVFcnJvcjogbmFtZSAnZm9vJyBpcyBub3QgZGVmaW5lZAorICAgICAgICAoUGRiKSBjb250aW51ZQorICAgICAgICBUZXN0UmVzdWx0cyhmYWlsZWQ9MCwgYXR0ZW1wdGVkPTIpCisgICAgIiIiCiAKIGRlZiB0ZXN0X0RvY1Rlc3RTdWl0ZSgpOgogICAgICIiIkRvY1Rlc3RTdWl0ZSBjcmVhdGVzIGEgdW5pdHRlc3QgdGVzdCBzdWl0ZSBmcm9tIGEgZG9jdGVzdC4KQEAgLTI1NjYsNyArMjU2OCw3IEBACiAKIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQotICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5wcmVmaXgsIHN5cy5leGVjX3ByZWZpeCxdLAorICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQogICAgIHRyYWNlci5ydW4oJ3Rlc3RfbWFpbigpJykKICAgICByID0gdHJhY2VyLnJlc3VsdHMoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kdW1teV90aHJlYWQucHkgYi9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weQppbmRleCBjNjEwNzhkLi4yZmFmZTFkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2R1bW15X3RocmVhZC5weQpAQCAtMzUsOCArMzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIkxvY2sgb2JqZWN0IGRpZCBub3QgcmVsZWFzZSBwcm9wZXJseS4iKQogCiAgICAgZGVmIHRlc3RfaW1wcm9wZXJfcmVsZWFzZShzZWxmKToKLSAgICAgICAgI01ha2Ugc3VyZSByZWxlYXNlIG9mIGFuIHVubG9ja2VkIHRocmVhZCByYWlzZXMgX3RocmVhZC5lcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhfdGhyZWFkLmVycm9yLCBzZWxmLmxvY2sucmVsZWFzZSkKKyAgICAgICAgI01ha2Ugc3VyZSByZWxlYXNlIG9mIGFuIHVubG9ja2VkIHRocmVhZCByYWlzZXMgUnVudGltZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgc2VsZi5sb2NrLnJlbGVhc2UpCiAKICAgICBkZWYgdGVzdF9jb25kX2FjcXVpcmVfc3VjY2VzcyhzZWxmKToKICAgICAgICAgI01ha2Ugc3VyZSB0aGUgY29uZGl0aW9uYWwgYWNxdWlyaW5nIG9mIHRoZSBsb2NrIHdvcmtzLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZWJiYTUuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24KLSMgZW1haWwgcGFja2FnZSB1bml0IHRlc3RzCi0KLSMgVGhlIHNwZWNpZmljIHRlc3RzIG5vdyBsaXZlIGluIExpYi9lbWFpbC90ZXN0Ci1mcm9tIGVtYWlsLnRlc3QudGVzdF9lbWFpbCBpbXBvcnQgc3VpdGUKLWZyb20gZW1haWwudGVzdC50ZXN0X2VtYWlsX2NvZGVjcyBpbXBvcnQgc3VpdGUgYXMgY29kZWNzX3N1aXRlCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KHN1aXRlKCkpCi0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoY29kZWNzX3N1aXRlKCkpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyMDZhY2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTUwIEBACitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IGVtYWlsCitmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IGNvbXBhdDMyCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgX19maWxlX18gYXMgbGFuZG1hcmsKKworIyBSdW4gYWxsIHRlc3RzIGluIHBhY2thZ2UgZm9yICctbSB1bml0dGVzdCB0ZXN0LnRlc3RfZW1haWwnCitkZWYgbG9hZF90ZXN0cyhsb2FkZXIsIHN0YW5kYXJkX3Rlc3RzLCBwYXR0ZXJuKToKKyAgICB0aGlzX2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICBpZiBwYXR0ZXJuIGlzIE5vbmU6CisgICAgICAgIHBhdHRlcm4gPSAidGVzdCoiCisgICAgcGFja2FnZV90ZXN0cyA9IGxvYWRlci5kaXNjb3ZlcihzdGFydF9kaXI9dGhpc19kaXIsIHBhdHRlcm49cGF0dGVybikKKyAgICBzdGFuZGFyZF90ZXN0cy5hZGRUZXN0cyhwYWNrYWdlX3Rlc3RzKQorICAgIHJldHVybiBzdGFuZGFyZF90ZXN0cworCisKKyMgdXNlZCBieSByZWdydGVzdCBhbmQgX19tYWluX18uCitkZWYgdGVzdF9tYWluKCk6CisgICAgaGVyZSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICAjIFVuaXR0ZXN0IG11Y2tzIHdpdGggdGhlIHBhdGgsIHNvIHdlIGhhdmUgdG8gc2F2ZSBhbmQgcmVzdG9yZQorICAgICMgaXQgdG8ga2VlcCByZWdydGVzdCBoYXBweS4KKyAgICBzYXZlcGF0aCA9IHN5cy5wYXRoWzpdCisgICAgdGVzdC5zdXBwb3J0Ll9ydW5fc3VpdGUodW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXIuZGlzY292ZXIoaGVyZSkpCisgICAgc3lzLnBhdGhbOl0gPSBzYXZlcGF0aAorCisKKyMgaGVscGVyIGNvZGUgdXNlZCBieSBhIG51bWJlciBvZiB0ZXN0IG1vZHVsZXMuCisKK2RlZiBvcGVuZmlsZShmaWxlbmFtZSwgKmFyZ3MsICoqa3dzKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShsYW5kbWFyayksICdkYXRhJywgZmlsZW5hbWUpCisgICAgcmV0dXJuIG9wZW4ocGF0aCwgKmFyZ3MsICoqa3dzKQorCisKKyMgQmFzZSB0ZXN0IGNsYXNzCitjbGFzcyBUZXN0RW1haWxCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIG1heERpZmYgPSBOb25lCisgICAgIyBDdXJyZW50bHkgdGhlIGRlZmF1bHQgcG9saWN5IGlzIGNvbXBhdDMyLiAgQnkgc2V0dGluZyB0aGF0IGFzIHRoZSBkZWZhdWx0CisgICAgIyBoZXJlIHdlIG1ha2UgbWluaW1hbCBjaGFuZ2VzIGluIHRoZSB0ZXN0X2VtYWlsIHRlc3RzIGNvbXBhcmVkIHRvIHRoZWlyCisgICAgIyBwcmUtMy4zIHN0YXRlLgorICAgIHBvbGljeSA9IGNvbXBhdDMyCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLmFkZFR5cGVFcXVhbGl0eUZ1bmMoYnl0ZXMsIHNlbGYuYXNzZXJ0Qnl0ZXNFcXVhbCkKKworICAgICMgQmFja3dhcmQgY29tcGF0aWJpbGl0eSB0byBtaW5pbWl6ZSB0ZXN0X2VtYWlsIHRlc3QgY2hhbmdlcy4KKyAgICBuZGlmZkFzc2VydEVxdWFsID0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0RXF1YWwKKworICAgIGRlZiBfbXNnb2JqKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAgd2l0aCBvcGVuZmlsZShmaWxlbmFtZSkgYXMgZnA6CisgICAgICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZnAsIHBvbGljeT1zZWxmLnBvbGljeSkKKworICAgIGRlZiBfc3RyX21zZyhzZWxmLCBzdHJpbmcsIG1lc3NhZ2U9TWVzc2FnZSwgcG9saWN5PU5vbmUpOgorICAgICAgICBpZiBwb2xpY3kgaXMgTm9uZToKKyAgICAgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5CisgICAgICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKHN0cmluZywgbWVzc2FnZSwgcG9saWN5PXBvbGljeSkKKworICAgIGRlZiBfYnl0ZXNfcmVwcihzZWxmLCBiKToKKyAgICAgICAgcmV0dXJuIFtyZXByKHgpIGZvciB4IGluIGIuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKV0KKworICAgIGRlZiBhc3NlcnRCeXRlc0VxdWFsKHNlbGYsIGZpcnN0LCBzZWNvbmQsIG1zZyk6CisgICAgICAgICIiIk91ciBieXRlIHN0cmluZ3MgYXJlIHJlYWxseSBlbmNvZGVkIHN0cmluZ3M7IGltcHJvdmUgZGlmZiBvdXRwdXQiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ieXRlc19yZXByKGZpcnN0KSwgc2VsZi5fYnl0ZXNfcmVwcihzZWNvbmQpKQorCisgICAgZGVmIGFzc2VydERlZmVjdHNFcXVhbChzZWxmLCBhY3R1YWwsIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWN0dWFsKSwgbGVuKGV4cGVjdGVkKSwgYWN0dWFsKQorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oYWN0dWFsKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYWN0dWFsW2ldLCBleHBlY3RlZFtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpdGVtIHt9Jy5mb3JtYXQoaSkpCisKKworZGVmIHBhcmFtZXRlcml6ZShjbHMpOgorICAgICIiIkEgdGVzdCBtZXRob2QgcGFyYW1ldGVyaXphdGlvbiBjbGFzcyBkZWNvcmF0b3IuCisKKyAgICBQYXJhbWV0ZXJzIGFyZSBzcGVjaWZpZWQgYXMgdGhlIHZhbHVlIG9mIGEgY2xhc3MgYXR0cmlidXRlIHRoYXQgZW5kcyB3aXRoCisgICAgdGhlIHN0cmluZyAnX3BhcmFtcycuICBDYWxsIHRoZSBwb3J0aW9uIGJlZm9yZSAnX3BhcmFtcycgdGhlIHByZWZpeC4gIFRoZW4KKyAgICBhIG1ldGhvZCB0byBiZSBwYXJhbWV0ZXJpemVkIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmVmaXgsIHRoZSBzdHJpbmcKKyAgICAnX2FzXycsIGFuZCBhbiBhcmJpdHJhcnkgc3VmZml4LgorCisgICAgVGhlIHZhbHVlIG9mIHRoZSBfcGFyYW1zIGF0dHJpYnV0ZSBtYXkgYmUgZWl0aGVyIGEgZGljdGlvbmFyeSBvciBhIGxpc3QuCisgICAgVGhlIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSBhbmQgdGhlIGVsZW1lbnRzIG9mIHRoZSBsaXN0IG1heSBlaXRoZXIgYmUKKyAgICBzaW5nbGUgdmFsdWVzLCBvciBhIGxpc3QuICBJZiBzaW5nbGUgdmFsdWVzLCB0aGV5IGFyZSB0dXJuZWQgaW50byBzaW5nbGUKKyAgICBlbGVtZW50IHR1cGxlcy4gIEhvd2V2ZXIgZGVyaXZlZCwgdGhlIHJlc3VsdGluZyBzZXF1ZW5jZSBpcyBwYXNzZWQgdmlhCisgICAgKmFyZ3MgdG8gdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBmdW5jdGlvbi4KKworICAgIEluIGEgX3BhcmFtcyBkaWN0aW9hbnJ5LCB0aGUga2V5cyBiZWNvbWUgcGFydCBvZiB0aGUgbmFtZSBvZiB0aGUgZ2VuZXJhdGVkCisgICAgdGVzdHMuICBJbiBhIF9wYXJhbXMgbGlzdCwgdGhlIHZhbHVlcyBpbiB0aGUgbGlzdCBhcmUgY29udmVydGVkIGludG8gYQorICAgIHN0cmluZyBieSBqb2luaW5nIHRoZSBzdHJpbmcgdmFsdWVzIG9mIHRoZSBlbGVtZW50cyBvZiB0aGUgdHVwbGUgYnkgJ18nIGFuZAorICAgIGNvbnZlcnRpbmcgYW55IGJsYW5rcyBpbnRvICdfJ3MsIGFuZCB0aGlzIGJlY29tZSBwYXJ0IG9mIHRoZSBuYW1lLgorICAgIFRoZSAgZnVsbCBuYW1lIG9mIGEgZ2VuZXJhdGVkIHRlc3QgaXMgYSAndGVzdF8nIHByZWZpeCwgdGhlIHBvcnRpb24gb2YgdGhlCisgICAgdGVzdCBmdW5jdGlvbiBuYW1lIGFmdGVyIHRoZSAgJ19hc18nIHNlcGFyYXRvciwgcGx1cyBhbiAnXycsIHBsdXMgdGhlIG5hbWUKKyAgICBkZXJpdmVkIGFzIGV4cGxhaW5lZCBhYm92ZS4KKworICAgIEZvciBleGFtcGxlLCBpZiB3ZSBoYXZlOgorCisgICAgICAgIGNvdW50X3BhcmFtcyA9IHJhbmdlKDIpCisKKyAgICAgICAgZGVmIGNvdW50X2FzX2Zvb19hcmcoc2VsZiwgZm9vKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKzEsIG15ZnVuYyhmb28pKQorCisgICAgd2Ugd2lsbCBnZXQgcGFyYW1ldGVyaXplZCB0ZXN0IG1ldGhvZHMgbmFtZWQ6CisgICAgICAgIHRlc3RfZm9vX2FyZ18wCisgICAgICAgIHRlc3RfZm9vX2FyZ18xCisgICAgICAgIHRlc3RfZm9vX2FyZ18yCisKKyAgICBPciB3ZSBjb3VsZCBoYXZlOgorCisgICAgICAgIGV4YW1wbGVfcGFyYW1zID0geydmb28nOiAoJ2JhcicsIDEpLCAnYmluZyc6ICgnYmFuZycsIDIpfQorCisgICAgICAgIGRlZiBleGFtcGxlX2FzX215ZnVuY19pbnB1dChzZWxmLCBuYW1lLCBjb3VudCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUrc3RyKGNvdW50KSwgbXlmdW5jKG5hbWUsIGNvdW50KSkKKworICAgIGFuZCBnZXQ6CisgICAgICAgIHRlc3RfbXlmdW5jX2lucHV0X2ZvbworICAgICAgICB0ZXN0X215ZnVuY19pbnB1dF9iaW5nCisKKyAgICBOb3RlOiBpZiBhbmQgb25seSBpZiB0aGUgZ2VuZXJhdGVkIHRlc3QgbmFtZSBpcyBhIHZhbGlkIGlkZW50aWZpZXIgY2FuIGl0CisgICAgYmUgdXNlZCB0byBzZWxlY3QgdGhlIHRlc3QgaW5kaXZpZHVhbGx5IGZyb20gdGhlIHVuaXR0ZXN0IGNvbW1hbmQgbGluZS4KKworICAgICIiIgorICAgIHBhcmFtZGljdHMgPSB7fQorICAgIGZvciBuYW1lLCBhdHRyIGluIGNscy5fX2RpY3RfXy5pdGVtcygpOgorICAgICAgICBpZiBuYW1lLmVuZHN3aXRoKCdfcGFyYW1zJyk6CisgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihhdHRyLCAna2V5cycpOgorICAgICAgICAgICAgICAgIGQgPSB7fQorICAgICAgICAgICAgICAgIGZvciB4IGluIGF0dHI6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHgsICdfX2l0ZXJfXycpOgorICAgICAgICAgICAgICAgICAgICAgICAgeCA9ICh4LCkKKyAgICAgICAgICAgICAgICAgICAgbiA9ICdfJy5qb2luKHN0cih2KSBmb3IgdiBpbiB4KS5yZXBsYWNlKCcgJywgJ18nKQorICAgICAgICAgICAgICAgICAgICBkW25dID0geAorICAgICAgICAgICAgICAgIGF0dHIgPSBkCisgICAgICAgICAgICBwYXJhbWRpY3RzW25hbWVbOi03XSArICdfYXNfJ10gPSBhdHRyCisgICAgdGVzdGZ1bmNzID0ge30KKyAgICBmb3IgbmFtZSwgYXR0ciBpbiBjbHMuX19kaWN0X18uaXRlbXMoKToKKyAgICAgICAgZm9yIHBhcmFtc25hbWUsIHBhcmFtc2RpY3QgaW4gcGFyYW1kaWN0cy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKHBhcmFtc25hbWUpOgorICAgICAgICAgICAgICAgIHRlc3RuYW1lcm9vdCA9ICd0ZXN0XycgKyBuYW1lW2xlbihwYXJhbXNuYW1lKTpdCisgICAgICAgICAgICAgICAgZm9yIHBhcmFtbmFtZSwgcGFyYW1zIGluIHBhcmFtc2RpY3QuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgdGVzdCA9IChsYW1iZGEgc2VsZiwgbmFtZT1uYW1lLCBwYXJhbXM9cGFyYW1zOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCBuYW1lKSgqcGFyYW1zKSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdG5hbWUgPSB0ZXN0bmFtZXJvb3QgKyAnXycgKyBwYXJhbW5hbWUKKyAgICAgICAgICAgICAgICAgICAgdGVzdC5fX25hbWVfXyA9IHRlc3RuYW1lCisgICAgICAgICAgICAgICAgICAgIHRlc3RmdW5jc1t0ZXN0bmFtZV0gPSB0ZXN0CisgICAgZm9yIGtleSwgdmFsdWUgaW4gdGVzdGZ1bmNzLml0ZW1zKCk6CisgICAgICAgIHNldGF0dHIoY2xzLCBrZXksIHZhbHVlKQorICAgIHJldHVybiBjbHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19tYWluX18ucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YWY5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19fbWFpbl9fLnB5CkBAIC0wLDAgKzEsMyBAQAorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IHRlc3RfbWFpbgorCit0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9QeUJhbm5lcjA0OC5naWYgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvUHlCYW5uZXIwNDguZ2lmCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL1B5QmFubmVyMDQ4LmdpZgpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL1B5QmFubmVyMDQ4LmdpZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL2F1ZGlvdGVzdC5hdSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9hdWRpb3Rlc3QuYXUKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvYXVkaW90ZXN0LmF1CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvYXVkaW90ZXN0LmF1CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wMi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzAyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzAzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMDcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18wOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzA4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMDkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzA5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18wOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzExLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzExLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEyYS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzEyYS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEyYS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTJhLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzEzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xMy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xNi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE3LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTcudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xNy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMTcudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18xOC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE4LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTgudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE4LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMTkudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xOS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzE5LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18xOS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIwLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjAudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjAudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIxLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjEudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzIxLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjIudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMi50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIyLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yMi50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzIzLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjMudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yMy50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjMudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI0LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjQudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI0LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjUudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI1LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yNS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI2LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjYudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yNy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI3LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjcudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzI3LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjgudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI4LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18yOC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzI5LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjkudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18yOS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMjkudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMC50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMwLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzAudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMwLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzEudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMS50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMxLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zMS50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzMyLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzIudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMi50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzIudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zMy50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMzLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzMudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzMzLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzQudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM0LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM1LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzUudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzUudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zNi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM2LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzYudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM2LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzcudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNy50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM3LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ18zNy50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzM4LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzgudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfMzgudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ18zOS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM5LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMzkudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzM5LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDAudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MC50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQwLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180MC50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQxLnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDEudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180MS50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDEudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180Mi50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQyLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDIudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQyLnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDMudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180My50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQzLnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180My50eHQKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ0LnR4dCBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDQudHh0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NC50eHQKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvZGF0YS9tc2dfNDQudHh0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC9kYXRhL21zZ180NS50eHQgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ1LnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDUudHh0CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzQ1LnR4dApkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfNDYudHh0IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180Ni50eHQKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9lbWFpbC90ZXN0L2RhdGEvbXNnXzQ2LnR4dApyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9lbWFpbC9kYXRhL21zZ180Ni50eHQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9fZW5jb2RlZF93b3Jkcy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9fZW5jb2RlZF93b3Jkcy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDM5NWZlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19lbmNvZGVkX3dvcmRzLnB5CkBAIC0wLDAgKzEsMTg3IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IF9lbmNvZGVkX3dvcmRzIGFzIF9ldworZnJvbSBlbWFpbCBpbXBvcnQgZXJyb3JzCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorCisKK2NsYXNzIFRlc3REZWNvZGVRKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIF90ZXN0KHNlbGYsIHNvdXJjZSwgZXhfcmVzdWx0LCBleF9kZWZlY3RzPVtdKToKKyAgICAgICAgcmVzdWx0LCBkZWZlY3RzID0gX2V3LmRlY29kZV9xKHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGV4X3Jlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoZGVmZWN0cywgZXhfZGVmZWN0cykKKworICAgIGRlZiB0ZXN0X25vX2VuY29kZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb29iYXInLCBiJ2Zvb2JhcicpCisKKyAgICBkZWYgdGVzdF9zcGFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb289MjBiYXI9MjAnLCBiJ2ZvbyBiYXIgJykKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvb19iYXJfJywgYidmb28gYmFyICcpCisKKyAgICBkZWYgdGVzdF9ydW5fb2ZfZW5jb2RlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2Zvbz0yMD0yMD0yMT0yQ2JhcicsIGInZm9vICAhLGJhcicpCisKKworY2xhc3MgVGVzdERlY29kZUIoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCBleF9yZXN1bHQsIGV4X2RlZmVjdHM9W10pOgorICAgICAgICByZXN1bHQsIGRlZmVjdHMgPSBfZXcuZGVjb2RlX2Ioc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhfcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChkZWZlY3RzLCBleF9kZWZlY3RzKQorCisgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInWm05dicsIGInZm9vJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2RtaycsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcmFjdGVyKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZG1ceDAxaz09PScsIGIndmknLCBbZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcmFjdGVyX2FuZF9iYWRfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2RtXHgwMWsnLCBiJ3ZpJywgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKworY2xhc3MgVGVzdERlY29kZShUZXN0RW1haWxCYXNlKToKKworICAgIGRlZiB0ZXN0X3dyb25nX2Zvcm1hdF9pbnB1dF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfZXcuZGVjb2RlKCc9P2JhZG9uZT89JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJz0/JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9ldy5kZWNvZGUoJycpCisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc291cmNlLCByZXN1bHQsIGNoYXJzZXQ9J3VzLWFzY2lpJywgbGFuZz0nJywgZGVmZWN0cz1bXSk6CisgICAgICAgIHJlcywgY2hhciwgbCwgZCA9IF9ldy5kZWNvZGUoc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgcmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoYXIsIGNoYXJzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobCwgbGFuZykKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoZCwgZGVmZWN0cykKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9xKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P3VzLWFzY2lpP3E/Zm9vPz0nLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9iKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P3VzLWFzY2lpP2I/ZG1rPT89JywgJ3ZpJykKKworICAgIGRlZiB0ZXN0X3FfY2FzZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P3VzLWFzY2lpP1E/Zm9vPz0nLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2JfY2FzZV9pZ25vcmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P3VzLWFzY2lpP0I/ZG1rPT89JywgJ3ZpJykKKworICAgIGRlZiB0ZXN0X25vbl90cml2aWFsX3Eoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/bGF0aW4tMT9xPz0yMEY9ZmNyPTIwRWxpc2U9MjA/PScsICcgRsO8ciBFbGlzZSAnLCAnbGF0aW4tMScpCisKKyAgICBkZWYgdGVzdF9xX2VzY3BhZWRfYnl0ZXNfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInPT91cy1hc2NpaT9xPz0yMFx4QUNmb28/PScuZGVjb2RlKCd1cy1hc2NpaScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgICAgICAgICcgXHVEQ0FDZm9vJywKKyAgICAgICAgICAgICAgICAgICBkZWZlY3RzID0gW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JfdW5kZWNvZGFibGVfYnl0ZXNfaWdub3JlZF93aXRoX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJz0/dXMtYXNjaWk/Yj9kbVx4QUNrPz0nLmRlY29kZSgndXMtYXNjaWknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZWVzY2FwZScpLAorICAgICAgICAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0LAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl9pbnZhbGlkX2J5dGVzX2lnbm9yZWRfd2l0aF9kZWZlY3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbVx4MDFrPT09Pz0nLAorICAgICAgICAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdKQorCisgICAgZGVmIHRlc3RfYl9pbnZhbGlkX2J5dGVzX2luY29ycmVjdF9wYWRkaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P3VzLWFzY2lpP2I/ZG1ceDAxaz89JywKKyAgICAgICAgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgPSBbCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X2JfcGFkZGluZ19kZWZlY3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dXMtYXNjaWk/Yj9kbWs/PScsCisgICAgICAgICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3RdKQorCisgICAgZGVmIHRlc3Rfbm9ubnVsbF9sYW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P3VzLWFzY2lpKmppdmU/cT90ZXN0Pz0nLCAndGVzdCcsIGxhbmc9J2ppdmUnKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl84Yml0X2NoYXJzZXQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJz0/dW5rbm93bi04Yml0P3E/Zm9vPUFDYmFyPz0nLAorICAgICAgICAgICAgICAgICAgIGInZm9vXHhhY2JhcicuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gJ3Vua25vd24tOGJpdCcsCisgICAgICAgICAgICAgICAgICAgZGVmZWN0cyA9IFtdKQorCisgICAgZGVmIHRlc3RfdW5rbm93bl9jaGFyc2V0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCc9P2Zvb2Jhcj9xP2Zvbz1BQ2Jhcj89JywKKyAgICAgICAgICAgICAgICAgICBiJ2Zvb1x4YWNiYXInLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAgICAgICAgY2hhcnNldCA9ICdmb29iYXInLAorICAgICAgICAgICAgICAgICAgICMgWFhYIFNob3VsZCB0aGlzIGJlIGEgbmV3IERlZmVjdCBpbnN0ZWFkPworICAgICAgICAgICAgICAgICAgIGRlZmVjdHMgPSBbZXJyb3JzLkNoYXJzZXRFcnJvcl0pCisKKworY2xhc3MgVGVzdEVuY29kZVEoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3Qoc2VsZiwgc3JjLCBleHBlY3RlZCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZV9xKHNyYyksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfYWxsX3NhZmUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoYidmb29iYXInLCAnZm9vYmFyJykKKworICAgIGRlZiB0ZXN0X3NwYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChiJ2ZvbyBiYXIgJywgJ2Zvb19iYXJfJykKKworICAgIGRlZiB0ZXN0X3J1bl9vZl9lbmNvZGFibGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KGInZm9vICAsLGJhcicsICdmb29fXz0yQz0yQ2JhcicpCisKKworY2xhc3MgVGVzdEVuY29kZUIoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZV9iKGInZm9vJyksICdabTl2JykKKworICAgIGRlZiB0ZXN0X3BhZGRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZV9iKGIndmknKSwgJ2Rtaz0nKQorCisKK2NsYXNzIFRlc3RFbmNvZGUoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgdGVzdF9xKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycsICd1dGYtOCcsICdxJyksICc9P3V0Zi04P3E/Zm9vPz0nKQorCisgICAgZGVmIHRlc3RfYihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb28nLCAndXRmLTgnLCAnYicpLCAnPT91dGYtOD9iP1ptOXY/PScpCisKKyAgICBkZWYgdGVzdF9hdXRvX3Eoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnZm9vJywgJ3V0Zi04JyksICc9P3V0Zi04P3E/Zm9vPz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19xX2lmX3Nob3J0X21vc3RseV9zYWZlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ3ZpLicsICd1dGYtOCcpLCAnPT91dGYtOD9xP3ZpPTJFPz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19iX2lmX2Vub3VnaF91bnNhZmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgnLi4uLi4nLCAndXRmLTgnKSwgJz0/dXRmLTg/Yj9MaTR1TGk0PT89JykKKworICAgIGRlZiB0ZXN0X2F1dG9fYl9pZl9sb25nX3Vuc2FmZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCd2aS52aS52aS52aS52aS4nLCAndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91dGYtOD9iP2Rta3VkbWt1ZG1rdWRta3VkbWt1Pz0nKQorCisgICAgZGVmIHRlc3RfYXV0b19xX2lmX2xvbmdfbW9zdGx5X3NhZmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V3LmVuY29kZSgndmkgdmkgdmkudmkgJywgJ3V0Zi04JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXRmLTg/cT92aV92aV92aT0yRXZpXz89JykKKworICAgIGRlZiB0ZXN0X3V0ZjhfZGVmYXVsdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb28nKSwgJz0/dXRmLTg/cT9mb28/PScpCisKKyAgICBkZWYgdGVzdF9sYW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ldy5lbmNvZGUoJ2ZvbycsIGxhbmc9J2ppdmUnKSwgJz0/dXRmLTgqaml2ZT9xP2Zvbz89JykKKworICAgIGRlZiB0ZXN0X3Vua25vd25fOGJpdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXcuZW5jb2RlKCdmb29cdURDQUNiYXInLCBjaGFyc2V0PSd1bmtub3duLThiaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91bmtub3duLThiaXQ/cT9mb289QUNiYXI/PScpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTAxZTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CkBAIC0wLDAgKzEsMjU1MiBAQAoraW1wb3J0IHN0cmluZworaW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsIGltcG9ydCBfaGVhZGVyX3ZhbHVlX3BhcnNlciBhcyBwYXJzZXIKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZSwgcGFyYW1ldGVyaXplCisKK2NsYXNzIFRlc3RUb2tlbnMoVGVzdEVtYWlsQmFzZSk6CisKKyAgICAjIEVXV2hpdGVTcGFjZVRlcm1pbmFsCisKKyAgICBkZWYgdGVzdF9FV1doaXRlU3BhY2VUZXJtaW5hbChzZWxmKToKKyAgICAgICAgeCA9IHBhcnNlci5FV1doaXRlU3BhY2VUZXJtaW5hbCgnIFx0JywgJ2Z3cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgJyBcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHgpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnZhbHVlLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmVuY29kZWQsICcgXHQnKQorCisgICAgIyBVbnN0cnVjdHVyZWRUb2tlbkxpc3QKKworICAgIGRlZiB0ZXN0X3VuZGVjb2RhYmxlX2J5dGVzX2Vycm9yX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgYmFkc3RyID0gYiJsZSBwb3VmIGNceGFmbGVicmUiLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJykKKyAgICAgICAgdW5zdCA9IHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKGJhZHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwodW5zdC5hbGxfZGVmZWN0cywgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSkKKyAgICAgICAgcGFydHMgPSBsaXN0KHVuc3QucGFydHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHBhcnRzWzBdLmFsbF9kZWZlY3RzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwocGFydHNbMV0uYWxsX2RlZmVjdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChwYXJ0c1syXS5hbGxfZGVmZWN0cywgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSkKKworCitjbGFzcyBUZXN0UGFyc2VyTWl4aW46CisKKyAgICBkZWYgX2Fzc2VydF9yZXN1bHRzKHNlbGYsIHRsLCByZXN0LCBzdHJpbmcsIHZhbHVlLCBkZWZlY3RzLCByZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cz1Ob25lKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodGwpLCBzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGwudmFsdWUsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbCh0bC5hbGxfZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN0LCByZW1haW5kZXIpCisgICAgICAgIGlmIGNvbW1lbnRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bC5jb21tZW50cywgY29tbWVudHMpCisKKyAgICBkZWYgX3Rlc3RfZ2V0X3goc2VsZiwgbWV0aG9kLCBzb3VyY2UsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlciwgY29tbWVudHM9Tm9uZSk6CisgICAgICAgIHRsLCByZXN0ID0gbWV0aG9kKHNvdXJjZSkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3Jlc3VsdHModGwsIHJlc3QsIHN0cmluZywgdmFsdWUsIGRlZmVjdHMsIHJlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudHM9Tm9uZSkKKyAgICAgICAgcmV0dXJuIHRsCisKKyAgICBkZWYgX3Rlc3RfcGFyc2VfeChzZWxmLCBtZXRob2QsIGlucHV0LCBzdHJpbmcsIHZhbHVlLCBkZWZlY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50cz1Ob25lKToKKyAgICAgICAgdGwgPSBtZXRob2QoaW5wdXQpCisgICAgICAgIHNlbGYuX2Fzc2VydF9yZXN1bHRzKHRsLCAnJywgc3RyaW5nLCB2YWx1ZSwgZGVmZWN0cywgJycsIGNvbW1lbnRzKQorICAgICAgICByZXR1cm4gdGwKKworCitjbGFzcyBUZXN0UGFyc2VyKFRlc3RQYXJzZXJNaXhpbiwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICAjIF93c3Bfc3BsaXR0ZXIKKworICAgIHJmY19wcmludGFibGVfYXNjaWkgPSBieXRlcyhyYW5nZSgzMywgMTI3KSkuZGVjb2RlKCdhc2NpaScpCisgICAgcmZjX2F0ZXh0X2NoYXJzID0gKHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArCisgICAgICAgICAgICAgICAgICAgICAgICAiISMkJSZcJyorLS89P15fYHt9fH4iKQorICAgIHJmY19kdGV4dF9jaGFycyA9IHJmY19wcmludGFibGVfYXNjaWkudHJhbnNsYXRlKHN0ci5tYWtldHJhbnMoJycsJycscidcW10nKSkKKworICAgIGRlZiB0ZXN0X193c3Bfc3BsaXR0ZXJfb25lX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLl93c3Bfc3BsaXR0ZXIoJ2ZvbycsIDEpLCBbJ2ZvbyddKQorCisgICAgZGVmIHRlc3RfX3dzcF9zcGxpdHRlcl90d29fd29yZHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLl93c3Bfc3BsaXR0ZXIoJ2ZvbyBkZWYnLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydmb28nLCAnICcsICdkZWYnXSkKKworICAgIGRlZiB0ZXN0X193c3Bfc3BsaXR0ZXJfd3NfcnVucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuX3dzcF9zcGxpdHRlcignZm9vIFx0IGRlZiBqaWsnLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2ZvbycsICcgXHQgJywgJ2RlZiBqaWsnXSkKKworCisgICAgIyBnZXRfZndzCisKKyAgICBkZWYgdGVzdF9nZXRfZndzX29ubHkoc2VsZik6CisgICAgICAgIGZ3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9md3MsICcgXHQgICcsICcgXHQgICcsICcgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ3cy50b2tlbl90eXBlLCAnZndzJykKKworICAgIGRlZiB0ZXN0X2dldF9md3Nfc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9md3MsICcgZm9vJywgJyAnLCAnICcsIFtdLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2dldF9md3Nfd3NfcnVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZndzLCAnIFx0IGZvbyAnLCAnIFx0ICcsICcgJywgW10sICdmb28gJykKKworICAgICMgZ2V0X2VuY29kZWRfd29yZAorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9taXNzaW5nX3N0YXJ0X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCgnYWJjJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfbWlzc2luZ19lbmRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZW5jb2RlZF93b3JkKCc9P2FiYycpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX21pc3NpbmdfbWlkZGxlX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCgnPT9hYmM/PScpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX3ZhbGlkX2V3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZW5jb2RlZF93b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICc9P3VzLWFzY2lpP3E/dGhpc19pc19hX3Rlc3Q/PSAgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgYSB0ZXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBhIHRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgIGJpcmQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9pbnRlcm5hbF9zcGFjZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXMtYXNjaWk/cT90aGlzIGlzIGEgdGVzdD89ICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBhIHRlc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlzIGlzIGEgdGVzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBiaXJkJykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfZ2V0c19maXJzdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP2ZpcnN0Pz0gID0/dXRmLTg/cT9zZWNvbmQ/PScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICcgID0/dXRmLTg/cT9zZWNvbmQ/PScpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2dldHNfZmlyc3RfZXZlbl9pZl9ub19zcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP2ZpcnN0Pz09P3V0Zi04P3E/c2Vjb25kPz0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91dGYtOD9xP3NlY29uZD89JykKKworICAgIGRlZiB0ZXN0X2dldF9lbmNvZGVkX3dvcmRfc2V0c19leHRyYV9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBldyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgJz0/dXMtYXNjaWkqaml2ZT9xP2ZpcnN0X3NlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2Vjb25kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2Vjb25kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5lbmNvZGVkLCAnPT91cy1hc2NpaSpqaXZlP3E/Zmlyc3Rfc2Vjb25kPz0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmNoYXJzZXQsICd1cy1hc2NpaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXcubGFuZywgJ2ppdmUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9sYW5nX2RlZmF1bHRfaXNfYmxhbmsoc2VsZik6CisgICAgICAgIGV3ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP2ZpcnN0X3NlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2Vjb25kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3Qgc2Vjb25kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5lbmNvZGVkLCAnPT91cy1hc2NpaT9xP2ZpcnN0X3NlY29uZD89JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldy5jaGFyc2V0LCAndXMtYXNjaWknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3LmxhbmcsICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2VuY29kZWRfd29yZF9ub25fcHJpbnRhYmxlX2RlZmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2VuY29kZWRfd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xP2ZpcnN0XHgwMnNlY29uZD89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3RceDAyc2Vjb25kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlyc3RceDAyc2Vjb25kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZW5jb2RlZF93b3JkX2xlYWRpbmdfaW50ZXJuYWxfc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9lbmNvZGVkX3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAnPT91cy1hc2NpaT9xPz0yMGZvbz89JywKKyAgICAgICAgICAgICAgICAgICAgICAgICcgZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICcgZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICAjIGdldF91bnN0cnVjdHVyZWQKKworICAgIGRlZiBfZ2V0X3Vuc3Qoc2VsZiwgdmFsdWUpOgorICAgICAgICB0b2tlbiA9IHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKHZhbHVlKQorICAgICAgICByZXR1cm4gdG9rZW4sICcnCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX251bGwoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICcnLCAnJywgJycsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfb25lX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICdmb28nLCAnZm9vJywgJ2ZvbycsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbm9ybWFsX3BocmFzZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ub3JtYWxfcGhyYXNlX3dpdGhfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbyBcdCBiYXIgICAgICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdCBiYXIgICAgICBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBiYXIgYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbGVhZGluZ193aGl0ZXNwYWNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LCAnICBmb28gYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgZm9vIGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZm9vIGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyICAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2xlYWRpbmdfYW5kX3RyYWlsaW5nX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICcgIGZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgIGZvbyBiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZm9vIGJhciAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX29uZV92YWxpZF9ld19ub193cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJz0/dXMtYXNjaWk/cT9iYXI/PScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9vbmVfZXdfdHJhaWxpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsICc9P3VzLWFzY2lpP3E/YmFyPz0gICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXIgICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXIgJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9vbmVfdmFsaWRfZXdfdHJhaWxpbmdfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJz0/dXMtYXNjaWk/cT9iYXI/PSBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF9ld19pbl9taWRkbGVfb2ZfdGV4dChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwgJ2ZvbyA9P3VzLWFzY2lpP3E/YmFyPz0gYmlyZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyIGJpcmQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhciBiaXJkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF90d29fZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnZm9vID0/dXMtYXNjaWk/cT9iYXI/PSA9P3VzLWFzY2lpP3E/YmlyZD89JywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfcGhyYXNlX3dpdGhfdHdvX2V3X3RyYWlsaW5nX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJ2ZvbyA9P3VzLWFzY2lpP3E/YmFyPz0gPT91cy1hc2NpaT9xP2JpcmQ/PSAgICcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQgICAnLAorICAgICAgICAgICAgJ2ZvbyBiYXJiaXJkICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9waHJhc2Vfd2l0aF9ld193aXRoX2xlYWRpbmdfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnICA9P3VzLWFzY2lpP3E/YmFyPz0nLAorICAgICAgICAgICAgJyAgYmFyJywKKyAgICAgICAgICAgICcgYmFyJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX3BocmFzZV93aXRoX3R3b19ld19leHRyYV93cyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICdmb28gPT91cy1hc2NpaT9xP2Jhcj89IFx0ICA9P3VzLWFzY2lpP3E/YmlyZD89JywKKyAgICAgICAgICAgICdmb28gYmFyYmlyZCcsCisgICAgICAgICAgICAnZm9vIGJhcmJpcmQnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfdHdvX2V3X2V4dHJhX3dzX3RyYWlsaW5nX3RleHQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91cy1hc2NpaT9xP3Rlc3Q/PSAgID0/dXMtYXNjaWk/cT9mb28/PSAgdmFsJywKKyAgICAgICAgICAgICd0ZXN0Zm9vICB2YWwnLAorICAgICAgICAgICAgJ3Rlc3Rmb28gdmFsJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2V3X3dpdGhfaW50ZXJuYWxfd3Moc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT9pc28tODg1OS0xP3E/aGVsbG89MjB3b3JsZD89JywKKyAgICAgICAgICAgICdoZWxsbyB3b3JsZCcsCisgICAgICAgICAgICAnaGVsbG8gd29ybGQnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfZXdfd2l0aF9pbnRlcm5hbF9sZWFkaW5nX3dzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJyAgID0/dXMtYXNjaWk/cT89MjB0ZXN0Pz0gICA9P3VzLWFzY2lpP3E/PTIwZm9vPz0gIHZhbCcsCisgICAgICAgICAgICAnICAgIHRlc3QgZm9vICB2YWwnLAorICAgICAgICAgICAgJyAgdGVzdCBmb28gdmFsJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2ludmFpbGRfZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT90ZXN0IHZhbCcsCisgICAgICAgICAgICAnPT90ZXN0IHZhbCcsCisgICAgICAgICAgICAnPT90ZXN0IHZhbCcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF91bmRlY29kYWJsZV9ieXRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgIGIndGVzdCBceEFDZm9vICB2YWwnLmRlY29kZSgnYXNjaWknLCAnc3Vycm9nYXRlZXNjYXBlJyksCisgICAgICAgICAgICAndGVzdCBcdURDQUNmb28gIHZhbCcsCisgICAgICAgICAgICAndGVzdCBcdURDQUNmb28gdmFsJywKKyAgICAgICAgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0sCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfdW5kZWNvZGFibGVfYnl0ZXNfaW5fRVcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAoYic9P3VzLWFzY2lpP3E/PTIwdGVzdD89ICAgPT91cy1hc2NpaT9xPz0yMFx4QUNmb28/PScKKyAgICAgICAgICAgICAgICBiJyAgdmFsJykuZGVjb2RlKCdhc2NpaScsICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgICAgICcgdGVzdCBcdURDQUNmb28gIHZhbCcsCisgICAgICAgICAgICAnIHRlc3QgXHVEQ0FDZm9vIHZhbCcsCisgICAgICAgICAgICBbZXJyb3JzLlVuZGVjb2RhYmxlQnl0ZXNEZWZlY3RdKjIsCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2dldF91bnN0cnVjdHVyZWRfbWlzc2luZ19iYXNlNjRfcGFkZGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChzZWxmLl9nZXRfdW5zdCwKKyAgICAgICAgICAgICc9P3V0Zi04P2I/ZG1rPz0nLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgICd2aScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9pbnZhbGlkX2Jhc2U2NF9jaGFyYWN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91dGYtOD9iP2RtXHgwMWs9PT0/PScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3RdLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfdW5zdHJ1Y3R1cmVkX2ludmFsaWRfYmFzZTY0X2NoYXJhY3Rlcl9hbmRfYmFkX3BhZGRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3goc2VsZi5fZ2V0X3Vuc3QsCisgICAgICAgICAgICAnPT91dGYtOD9iP2RtXHgwMWs/PScsCisgICAgICAgICAgICAndmknLAorICAgICAgICAgICAgJ3ZpJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QsCisgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X3Vuc3RydWN0dXJlZF9ub193aGl0ZXNwYWNlX2JldHdlZW5fZXdzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHNlbGYuX2dldF91bnN0LAorICAgICAgICAgICAgJz0/dXRmLTg/cT9mb28/PT0/dXRmLTg/cT9iYXI/PScsCisgICAgICAgICAgICAnZm9vYmFyJywKKyAgICAgICAgICAgICdmb29iYXInLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorCisgICAgIyBnZXRfcXBfY3RleHQKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9vbmx5KHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcicsICdmb29iYXInLCAnICcsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdGV4dC50b2tlbl90eXBlLCAncHRleHQnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X2FsbF9wcmludGFibGVzKHNlbGYpOgorICAgICAgICB3aXRoX3FwID0gc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKQorICAgICAgICB3aXRoX3FwID0gd2l0aF9xcC4gIHJlcGxhY2UoJygnLCByJ1woJykKKyAgICAgICAgd2l0aF9xcCA9IHdpdGhfcXAucmVwbGFjZSgnKScsIHInXCknKQorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfcXAsIHNlbGYucmZjX3ByaW50YWJsZV9hc2NpaSwgJyAnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gZGUnLCAnZm9vJywgJyAnLCBbXSwgJyBkZScpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfZm9sbG93aW5nX3dzcF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gXHRcdGRlJywgJ2ZvbycsICcgJywgW10sICcgXHRcdGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF91cF90b19jbG9zZV9wYXJlbl9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXBfY3RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vKScsICdmb28nLCAnICcsIFtdLCAnKScpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfd3NwX2JlZm9yZV9jbG9zZV9wYXJlbl9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gICknLCAnZm9vJywgJyAnLCBbXSwgJyAgKScpCisKKyAgICBkZWYgdGVzdF9nZXRfcXBfY3RleHRfY2xvc2VfcGFyZW5fbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28pYmFyJywgJ2ZvbycsICcgJywgW10sICcpYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF91cF90b19vcGVuX3BhcmVuX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28oJywgJ2ZvbycsICcgJywgW10sICcoJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF93c3BfYmVmb3JlX29wZW5fcGFyZW5fcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXBfY3RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vICAoJywgJ2ZvbycsICcgJywgW10sICcgICgnKQorCisgICAgZGVmIHRlc3RfZ2V0X3FwX2N0ZXh0X29wZW5fcGFyZW5fbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xcF9jdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28oYmFyJywgJ2ZvbycsICcgJywgW10sICcoYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9xcF9jdGV4dF9ub25fcHJpbnRhYmxlcyhzZWxmKToKKyAgICAgICAgcHRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXBfY3RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29ceDAwYmFyKScsICdmb29ceDAwYmFyJywgJyAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdGV4dC5kZWZlY3RzWzBdLm5vbl9wcmludGFibGVzWzBdLCAnXHgwMCcpCisKKyAgICAjIGdldF9xY29udGVudAorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X29ubHkoc2VsZik6CisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vYmFyJywgJ2Zvb2JhcicsICdmb29iYXInLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHRleHQudG9rZW5fdHlwZSwgJ3B0ZXh0JykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF9hbGxfcHJpbnRhYmxlcyhzZWxmKToKKyAgICAgICAgd2l0aF9xcCA9IHNlbGYucmZjX3ByaW50YWJsZV9hc2NpaS5yZXBsYWNlKCdcXCcsICdcXFxcJykKKyAgICAgICAgd2l0aF9xcCA9IHdpdGhfcXAuICByZXBsYWNlKCciJywgcidcIicpCisgICAgICAgIHB0ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LCB3aXRoX3FwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfcHJpbnRhYmxlX2FzY2lpLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gZGUnLCAnZm9vJywgJ2ZvbycsIFtdLCAnIGRlJykKKworICAgIGRlZiB0ZXN0X2dldF9xY29udGVudF9mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3Fjb250ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdFx0ZGUnLCAnZm9vJywgJ2ZvbycsIFtdLCAnIFx0XHRkZScpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfdXBfdG9fZHF1b3RlX29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28iJywgJ2ZvbycsICdmb28nLCBbXSwgJyInKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X3dzcF9iZWZvcmVfY2xvc2VfcGFyZW5fcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcWNvbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vICAiJywgJ2ZvbycsICdmb28nLCBbXSwgJyAgIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcWNvbnRlbnRfY2xvc2VfcGFyZW5fbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28iYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyJiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X3Fjb250ZW50X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xY29udGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBmZyInLCAnZm9vXHgwMGZnJywgJ2Zvb1x4MDBmZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJyInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgICMgZ2V0X2F0ZXh0CisKKyAgICBkZWYgdGVzdF9nZXRfYXRleHRfb25seShzZWxmKToKKyAgICAgICAgYXRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29iYXInLCAnZm9vYmFyJywgJ2Zvb2JhcicsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdGV4dC50b2tlbl90eXBlLCAnYXRleHQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X2FsbF9hdGV4dChzZWxmKToKKyAgICAgICAgYXRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsIHNlbGYucmZjX2F0ZXh0X2NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZmNfYXRleHRfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19hdGV4dF9jaGFycywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0ZXh0X3R3b193b3Jkc19nZXRzX2ZpcnN0KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhcicsICdmb28nLCAnZm9vJywgW10sICcgYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF9mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyBcdFx0YmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyBcdFx0YmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF91cF90b19zcGVjaWFsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vQGJhcicsICdmb28nLCAnZm9vJywgW10sICdAYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9hdGV4dF9ub25fcHJpbnRhYmxlcyhzZWxmKToKKyAgICAgICAgYXRleHQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb29ceDAwYmFyKCcsICdmb29ceDAwYmFyJywgJ2Zvb1x4MDBiYXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdGV4dC5kZWZlY3RzWzBdLm5vbl9wcmludGFibGVzWzBdLCAnXHgwMCcpCisKKyAgICAjIGdldF9iYXJlX3F1b3RlZF9zdHJpbmcKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfb25seShzZWxmKToKKyAgICAgICAgYnFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnImZvbyInLCAnImZvbyInLCAnZm9vJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJxcy50b2tlbl90eXBlLCAnYmFyZS1xdW90ZWQtc3RyaW5nJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfbXVzdF9zdGFydF93aXRoX2RxdW90ZShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZygnZm9vIicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcoJyAgImZvbyInKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19mb2xsb3dpbmdfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyJcdCBiYXInLCAnImZvbyInLCAnZm9vJywgW10sICdcdCBiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19tdWx0aXBsZV93b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImZvbyBiYXIgbW9vIicsICciZm9vIGJhciBtb28iJywgJ2ZvbyBiYXIgbW9vJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19tdWx0aXBsZV93b3Jkc193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciIGZvbyAgbW9vXHQiJywgJyIgZm9vICBtb29cdCInLCAnIGZvbyAgbW9vXHQnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYmFyZV9xdW90ZWRfc3RyaW5nX2VuZF9kcXVvdGVfbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyJmb28iYmFyJywgJyJmb28iJywgJ2ZvbycsIFtdLCAnYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfcXVvdGVkX2RxdW90ZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICByJyJmb29cImluImEnLCByJyJmb29cImluIicsICdmb28iaW4nLCBbXSwgJ2EnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19ub25fcHJpbnRhYmxlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2JhcmVfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICAnImFceDAxYSInLCAnImFceDAxYSInLCAnYVx4MDFhJywKKyAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2JhcmVfcXVvdGVkX3N0cmluZ19ub19lbmRfZHF1b3RlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgICciZm9vJywgJyJmb28iJywgJ2ZvbycsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9iYXJlX3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAgJyJmb28gJywgJyJmb28gIicsICdmb28gJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9iYXJlX3F1b3RlZF9zdHJpbmdfZW1wdHlfcXVvdGVzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYmFyZV9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyIiJywgJyIiJywgJycsIFtdLCAnJykKKworICAgICMgZ2V0X2NvbW1lbnQKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X29ubHkoc2VsZik6CisgICAgICAgIGNvbW1lbnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoY29tbWVudCknLCAnKGNvbW1lbnQpJywgJyAnLCBbXSwgJycsIFsnY29tbWVudCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1lbnQudG9rZW5fdHlwZSwgJ2NvbW1lbnQnKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbXVzdF9zdGFydF93aXRoX3BhcmVuKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfY29tbWVudCgnZm9vIicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9jb21tZW50KCcgIChmb28iJykKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoY29tbWVudCkgIFx0JywgJyhjb21tZW50KScsICcgJywgW10sICcgIFx0JywgWydjb21tZW50J10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9tdWx0aXBsZV93b3JkcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyBiYXIpICBcdCcsICcoZm9vIGJhciknLCAnICcsIFtdLCAnICBcdCcsIFsnZm9vIGJhciddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbXVsdGlwbGVfd29yZHNfd3NwX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKCBmb28gIGJhclx0ICkgIFx0JywgJyggZm9vICBiYXJcdCApJywgJyAnLCBbXSwgJyAgXHQnLAorICAgICAgICAgICAgICAgIFsnIGZvbyAgYmFyXHQgJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9lbmRfcGFyZW5fbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb28pYmFyJywgJyhmb28pJywgJyAnLCBbXSwgJ2JhcicsIFsnZm9vJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xdW90ZWRfcGFyZW5zKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vXCkgXChcKWJhciknLCAnKGZvb1wpIFwoXCliYXIpJywgJyAnLCBbXSwgJycsIFsnZm9vKSAoKWJhciddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbm9uX3ByaW50YWJsZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvb1x4N0ZiYXIpJywgJyhmb29ceDdGYmFyKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycsIFsnZm9vXHg3RmJhciddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbm9fZW5kX3BhcmVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoZm9vIGJhcicsICcoZm9vIGJhciknLCAnICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJywgWydmb28gYmFyJ10pCisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJyhmb28gYmFyICAnLCAnKGZvbyBiYXIgICknLCAnICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJywgWydmb28gYmFyICAnXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X25lc3RlZF9jb21tZW50KHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyhiYXIpKScsICcoZm9vKGJhcikpJywgJyAnLCBbXSwgJycsIFsnZm9vKGJhciknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzFdLmNvbnRlbnQsICdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbmVzdGVkX2NvbW1lbnRfd3NwKHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyAoIGJhciApICknLCAnKGZvbyAoIGJhciApICknLCAnICcsIFtdLCAnJywgWydmb28gKCBiYXIgKSAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzJdLmNvbnRlbnQsICcgYmFyICcpCisKKyAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9lbXB0eV9jb21tZW50KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKKyAgICAgICAgICAgICcoKScsICcoKScsICcgJywgW10sICcnLCBbJyddKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbXVsdGlwbGVfbmVzdGluZyhzZWxmKToKKyAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAorICAgICAgICAgICAgJygoKCgoZm9vKSkpKSknLCAnKCgoKChmb28pKSkpKScsICcgJywgW10sICcnLCBbJygoKChmb28pKSkpJ10pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQsIDAsIC0xKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWVudFswXS5jb250ZW50LCAnKCcqKGktMSkrJ2ZvbycrJyknKihpLTEpKQorICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50LmNvbnRlbnQsICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2NvbW1lbnRfbWlzc2luZ19lbmRfb2ZfbmVzdGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKCgoKChmb28pKSknLCAnKCgoKChmb28pKSkpKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwgJycsIFsnKCgoKGZvbykpKSknXSkKKworICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X3FzX2luX25lc3RlZF9jb21tZW50KHNlbGYpOgorICAgICAgICBjb21tZW50ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2NvbW1lbnQsCisgICAgICAgICAgICAnKGZvbyAoYlwpKSknLCAnKGZvbyAoYlwpKSknLCAnICcsIFtdLCAnJywgWydmb28gKGJcKSknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzJdLmNvbnRlbnQsICdiKScpCisKKyAgICAjIGdldF9jZndzCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19vbmx5X3dzKHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnICBcdCBcdCcsICcgIFx0IFx0JywgJyAnLCBbXSwgJycsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3MudG9rZW5fdHlwZSwgJ2Nmd3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3Nfb25seV9jb21tZW50KHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnKGZvbyknLCAnKGZvbyknLCAnICcsIFtdLCAnJywgWydmb28nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbnRlbnQsICdmb28nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Nmd3Nfb25seV9taXhlZChzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyAoZm9vICkgICggYmFyKSAnLCAnIChmb28gKSAgKCBiYXIpICcsICcgJywgW10sICcnLAorICAgICAgICAgICAgICAgIFsnZm9vICcsICcgYmFyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1sxXS5jb250ZW50LCAnZm9vICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1szXS5jb250ZW50LCAnIGJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19lbmRzX2F0X25vbl9sZWFkZXIoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcoZm9vKSBiYXInLCAnKGZvbykgJywgJyAnLCBbXSwgJ2JhcicsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1swXS5jb250ZW50LCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX2VuZHNfYXRfbm9uX3ByaW50YWJsZShzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28pIFx4MDcnLCAnKGZvbykgJywgJyAnLCBbXSwgJ1x4MDcnLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNmd3NbMF0uY29udGVudCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19ub25fcHJpbnRhYmxlX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGNmd3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY2Z3cywKKyAgICAgICAgICAgICcoZm9vIFx4MDcpICJ0ZXN0IicsICcoZm9vIFx4MDcpICcsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJyJ0ZXN0IicsIFsnZm9vIFx4MDcnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzBdLmNvbnRlbnQsICdmb28gXHgwNycpCisKKyAgICBkZWYgdGVzdF9nZXRfY2Z3c19oZWFkZXJfZW5kc19pbl9jb21tZW50KHNlbGYpOgorICAgICAgICBjZndzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Nmd3MsCisgICAgICAgICAgICAnICAoZm9vICcsICcgIChmb28gKScsICcgJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnLCBbJ2ZvbyAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzFdLmNvbnRlbnQsICdmb28gJykKKworICAgIGRlZiB0ZXN0X2dldF9jZndzX211bHRpcGxlX25lc3RlZF9jb21tZW50cyhzZWxmKToKKyAgICAgICAgY2Z3cyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jZndzLAorICAgICAgICAgICAgJyhmb28gKGJhcikpICgoYSkoYSkpJywgJyhmb28gKGJhcikpICgoYSkoYSkpJywgJyAnLCBbXSwKKyAgICAgICAgICAgICAgICAnJywgWydmb28gKGJhciknLCAnKGEpKGEpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Z3c1swXS5jb21tZW50cywgWydmb28gKGJhciknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZndzWzJdLmNvbW1lbnRzLCBbJyhhKShhKSddKQorCisgICAgIyBnZXRfcXVvdGVkX3N0cmluZworCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfb25seShzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICciYm9iIicsICciYm9iIicsICdib2InLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMudG9rZW5fdHlwZSwgJ3F1b3RlZC1zdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyJib2IiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX3dpdGhfd3NwKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJ1x0ICJib2IiICAnLCAnXHQgImJvYiIgICcsICcgYm9iICcsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX3dpdGhfY29tbWVudHNfYW5kX3dzcChzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKGZvbykgImJvYiIoYmFyKScsICcgKGZvbykgImJvYiIoYmFyKScsICcgYm9iICcsIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXVsxXS5jb250ZW50LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1syXVswXS5jb250ZW50LCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYm9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5xdW90ZWRfdmFsdWUsICcgImJvYiIgJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX3dpdGhfbXVsdGlwbGVfY29tbWVudHMoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChmb28pIChiYXIpICJib2IiKGJpcmQpJywgJyAoZm9vKSAoYmFyKSAiYm9iIihiaXJkKScsICcgYm9iICcsCisgICAgICAgICAgICAgICAgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2ZvbycsICdiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1syXS5jb21tZW50cywgWydiaXJkJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiICcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19ub25fcHJpbnRhYmxlX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIHFzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3F1b3RlZF9zdHJpbmcsCisgICAgICAgICAgICAnIChceDBBKSAiYm9iIicsICcgKFx4MEEpICJib2IiJywgJyBib2InLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnXHgwQSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdib2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYm9iIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19ub25fcHJpbnRhYmxlX2luX3Fjb250ZW50KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImFceDBCIicsICcgKGEpICJhXHgwQiInLCAnIGFceDBCJywKKyAgICAgICAgICAgICAgICBbZXJyb3JzLk5vblByaW50YWJsZURlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxcy5jb250ZW50LCAnYVx4MEInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiYVx4MEIiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX2ludGVybmFsX3dzKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImZvbyAgYmFyICInLCAnIChhKSAiZm9vICBiYXIgIicsICcgZm9vICBiYXIgJywKKyAgICAgICAgICAgICAgICBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXNbMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLmNvbnRlbnQsICdmb28gIGJhciAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzLnF1b3RlZF92YWx1ZSwgJyAiZm9vICBiYXIgIicpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19oZWFkZXJfZW5kc19pbl9jb21tZW50KHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJyAoYSkgImJvYiIgKGEnLCAnIChhKSAiYm9iIiAoYSknLCAnIGJvYiAnLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHFzWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1syXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiICcpCisKKyAgICBkZWYgdGVzdF9nZXRfcXVvdGVkX3N0cmluZ19oZWFkZXJfZW5kc19pbl9xY29udGVudChzZWxmKToKKyAgICAgICAgcXMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcXVvdGVkX3N0cmluZywKKyAgICAgICAgICAgICcgKGEpICJib2InLCAnIChhKSAiYm9iIicsICcgYm9iJywKKyAgICAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxc1swXS5jb21tZW50cywgWydhJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiJykKKworICAgIGRlZiB0ZXN0X2dldF9xdW90ZWRfc3RyaW5nX25vX3F1b3RlZF9zdHJpbmcoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nKCcgKGFiKSB4eXonKQorCisgICAgZGVmIHRlc3RfZ2V0X3F1b3RlZF9zdHJpbmdfcXNfZW5kc19hdF9ub25jZndzKHNlbGYpOgorICAgICAgICBxcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9xdW90ZWRfc3RyaW5nLAorICAgICAgICAgICAgJ1x0ICJib2IiIGZlZScsICdcdCAiYm9iIiAnLCAnIGJvYiAnLCBbXSwgJ2ZlZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMuY29udGVudCwgJ2JvYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocXMucXVvdGVkX3ZhbHVlLCAnICJib2IiICcpCisKKyAgICAjIGdldF9hdG9tCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9vbmx5KHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnYm9iJywgJ2JvYicsICdib2InLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbS50b2tlbl90eXBlLCAnYXRvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV93aXRoX3dzcChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnXHQgYm9iICAnLCAnXHQgYm9iICAnLCAnIGJvYiAnLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV93aXRoX2NvbW1lbnRzX2FuZF93c3Aoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGZvbykgYm9iKGJhciknLCAnIChmb28pIGJvYihiYXIpJywgJyBib2IgJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF1bMV0uY29udGVudCwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVsyXVswXS5jb250ZW50LCAnYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX3dpdGhfbXVsdGlwbGVfY29tbWVudHMoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGZvbykgKGJhcikgYm9iKGJpcmQpJywgJyAoZm9vKSAoYmFyKSBib2IoYmlyZCknLCAnIGJvYiAnLAorICAgICAgICAgICAgICAgIFtdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ2ZvbycsICdiYXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzJdLmNvbW1lbnRzLCBbJ2JpcmQnXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX25vbl9wcmludGFibGVfaW5fY29tbWVudChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoXHgwQSkgYm9iJywgJyAoXHgwQSkgYm9iJywgJyBib2InLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXRvbVswXS5jb21tZW50cywgWydceDBBJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9ub25fcHJpbnRhYmxlX2luX2F0ZXh0KHNlbGYpOgorICAgICAgICBhdG9tID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2F0b20sCisgICAgICAgICAgICAnIChhKSBhXHgwQicsICcgKGEpIGFceDBCJywgJyBhXHgwQicsCisgICAgICAgICAgICAgICAgW2Vycm9ycy5Ob25QcmludGFibGVEZWZlY3RdLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ2EnXSkKKworICAgIGRlZiB0ZXN0X2dldF9hdG9tX2hlYWRlcl9lbmRzX2luX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGF0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYXRvbSwKKyAgICAgICAgICAgICcgKGEpIGJvYiAoYScsICcgKGEpIGJvYiAoYSknLCAnIGJvYiAnLAorICAgICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMF0uY29tbWVudHMsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMl0uY29tbWVudHMsIFsnYSddKQorCisgICAgZGVmIHRlc3RfZ2V0X2F0b21fbm9fYXRvbShzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2F0b20oJyAoYWIpICcpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9ub19hdG9tX2JlZm9yZV9zcGVjaWFsKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYXRvbSgnIChhYikgQCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9hdG9tX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJyAoZm9vKSBib2IoYmFyKSAgQGJhbmcnLCAnIChmb28pIGJvYihiYXIpICAnLCAnIGJvYiAnLCBbXSwgJ0BiYW5nJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdG9tWzBdLmNvbW1lbnRzLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0b21bMl0uY29tbWVudHMsIFsnYmFyJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfYXRvbV9hdG9tX2VuZHNfYXRfbm9uY2Z3cyhzZWxmKToKKyAgICAgICAgYXRvbSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hdG9tLAorICAgICAgICAgICAgJ2JvYiAgZnJlZCcsICdib2IgICcsICdib2IgJywgW10sICdmcmVkJykKKworICAgICMgZ2V0X2RvdF9hdG9tX3RleHQKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0KHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vLmJhci5iYW5nJywgJ2Zvby5iYXIuYmFuZycsICdmb28uYmFyLmJhbmcnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG90X2F0b21fdGV4dC50b2tlbl90eXBlLCAnZG90LWF0b20tdGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRvdF9hdG9tX3RleHQpLCA1KQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfbG9uZV9hdG9tX2lzX3ZhbGlkKHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vJywgJ2ZvbycsICdmb28nLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9yYWlzZXNfb25fbGVhZGluZ19kb3Qoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0KCcuZm9vLmJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdGV4dF9yYWlzZXNfb25fdHJhaWxpbmdfZG90KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCgnZm9vLmJhci4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3RleHRfcmFpc2VzX29uX2xlYWRpbmdfbm9uX2F0ZXh0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCgnIGZvby5iYXInKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCgnQGZvby5iYXInKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b21fdGV4dCgnImZvby5iYXIiJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3RyYWlsaW5nX3RleHRfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBkb3RfYXRvbV90ZXh0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvdF9hdG9tX3RleHQsCisgICAgICAgICAgICAnZm9vQGJhcicsICdmb28nLCAnZm9vJywgW10sICdAYmFyJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV90ZXh0X3RyYWlsaW5nX3dzX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgZG90X2F0b21fdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbV90ZXh0LAorICAgICAgICAgICAgJ2ZvbyAuYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyAuYmFyJykKKworICAgICMgZ2V0X2RvdF9hdG9tCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fb25seShzZWxmKToKKyAgICAgICAgZG90X2F0b20gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b20sCisgICAgICAgICAgICAnZm9vLmJhci5iaW5nJywgJ2Zvby5iYXIuYmluZycsICdmb28uYmFyLmJpbmcnLCBbXSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG90X2F0b20udG9rZW5fdHlwZSwgJ2RvdC1hdG9tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG90X2F0b20pLCAxKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3dpdGhfd3NwKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG90X2F0b20sCisgICAgICAgICAgICAnXHQgIGZvby5iYXIuYmluZyAgJywgJ1x0ICBmb28uYmFyLmJpbmcgICcsICcgZm9vLmJhci5iaW5nICcsIFtdLCAnJykKKworICAgIGRlZiB0ZXN0X2dldF9kb3RfYXRvbV93aXRoX2NvbW1lbnRzX2FuZF93c3Aoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICcgKHNpbmcpICBmb28uYmFyLmJpbmcgKGhlcmUpICcsICcgKHNpbmcpICBmb28uYmFyLmJpbmcgKGhlcmUpICcsCisgICAgICAgICAgICAgICAgJyBmb28uYmFyLmJpbmcgJywgW10sICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX3NwYWNlX2VuZHNfZG90X2F0b20oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb3RfYXRvbSwKKyAgICAgICAgICAgICcgKHNpbmcpICBmb28uYmFyIC5iaW5nIChoZXJlKSAnLCAnIChzaW5nKSAgZm9vLmJhciAnLAorICAgICAgICAgICAgICAgICcgZm9vLmJhciAnLCBbXSwgJy5iaW5nIChoZXJlKSAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX25vX2F0b21fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJyAoZm9vKSAnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvdF9hdG9tX2xlYWRpbmdfZG90X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvdF9hdG9tKCcgKGZvbykgLmJhcicpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdHdvX2RvdHNfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG90X2F0b20oJ2Jhci4uYmFuZycpCisKKyAgICBkZWYgdGVzdF9nZXRfZG90X2F0b21fdHJhaWxpbmdfZG90X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvdF9hdG9tKCcgKGZvbykgYmFyLmJhbmcuIGZvbycpCisKKyAgICAjIGdldF93b3JkIChpZiB0aGlzIHdlcmUgYmxhY2sgYm94IHdlJ2QgcmVwZWF0IGFsbCB0aGUgcXMvYXRvbSB0ZXN0cykKKworICAgIGRlZiB0ZXN0X2dldF93b3JkX2F0b21feWllbGRzX2F0b20oc2VsZik6CisgICAgICAgIHdvcmQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfd29yZCwKKyAgICAgICAgICAgICcgKGZvbykgYmFyIChiYW5nKSA6YWgnLCAnIChmb28pIGJhciAoYmFuZykgJywgJyBiYXIgJywgW10sICc6YWgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmQudG9rZW5fdHlwZSwgJ2F0b20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmRbMF0udG9rZW5fdHlwZSwgJ2Nmd3MnKQorCisgICAgZGVmIHRlc3RfZ2V0X3dvcmRfcXNfeWllbGRzX3FzKHNlbGYpOgorICAgICAgICB3b3JkID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3dvcmQsCisgICAgICAgICAgICAnImJhciAiIChiYW5nKSBhaCcsICciYmFyICIgKGJhbmcpICcsICdiYXIgICcsIFtdLCAnYWgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmQudG9rZW5fdHlwZSwgJ3F1b3RlZC1zdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmRbMF0udG9rZW5fdHlwZSwgJ2JhcmUtcXVvdGVkLXN0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod29yZFswXS52YWx1ZSwgJ2JhciAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdvcmQuY29udGVudCwgJ2JhciAnKQorCisgICAgZGVmIHRlc3RfZ2V0X3dvcmRfZW5kc19hdF9kb3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF93b3JkLAorICAgICAgICAgICAgJ2Zvby4nLCAnZm9vJywgJ2ZvbycsIFtdLCAnLicpCisKKyAgICAjIGdldF9waHJhc2UKKworICAgIGRlZiB0ZXN0X2dldF9waHJhc2Vfc2ltcGxlKHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJyJGcmVkIEEuIEpvaG5zb24iIGlzIGhpcyBuYW1lLCBvaC4nLAorICAgICAgICAgICAgJyJGcmVkIEEuIEpvaG5zb24iIGlzIGhpcyBuYW1lJywKKyAgICAgICAgICAgICdGcmVkIEEuIEpvaG5zb24gaXMgaGlzIG5hbWUnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCBvaC4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZS50b2tlbl90eXBlLCAncGhyYXNlJykKKworICAgIGRlZiB0ZXN0X2dldF9waHJhc2VfY29tcGxleChzZWxmKToKKyAgICAgICAgcGhyYXNlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3BocmFzZSwKKyAgICAgICAgICAgICcgKEEpIGJpcmQgKGluIChteXx5b3VyKSkgImhhbmQgICIgaXMgbWVzc3lcdDw+XHQnLAorICAgICAgICAgICAgJyAoQSkgYmlyZCAoaW4gKG15fHlvdXIpKSAiaGFuZCAgIiBpcyBtZXNzeVx0JywKKyAgICAgICAgICAgICcgYmlyZCBoYW5kICAgaXMgbWVzc3kgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJzw+XHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVswXVswXS5jb21tZW50cywgWydBJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGhyYXNlWzBdWzJdLmNvbW1lbnRzLCBbJ2luIChteXx5b3VyKSddKQorCisgICAgZGVmIHRlc3RfZ2V0X3BocmFzZV9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgcGhyYXNlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X3BocmFzZSwKKyAgICAgICAgICAgICdGcmVkIEEuKHdlaXJkKS5PIEpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBLiAuTyBKb2huc29uJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGhyYXNlKSwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaHJhc2VbM10uY29tbWVudHMsIFsnd2VpcmQnXSkKKworICAgIGRlZiB0ZXN0X2dldF9waHJhc2VfcGhhcnNlX211c3Rfc3RhcnRfd2l0aF93b3JkKHNlbGYpOgorICAgICAgICBwaHJhc2UgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfcGhyYXNlLAorICAgICAgICAgICAgJyhldmVuIHdlaXJkZXIpLm5hbWUnLAorICAgICAgICAgICAgJyhldmVuIHdlaXJkZXIpLm5hbWUnLAorICAgICAgICAgICAgJyAubmFtZScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdICsgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaHJhc2UpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVswXS5jb21tZW50cywgWydldmVuIHdlaXJkZXInXSkKKworICAgIGRlZiB0ZXN0X2dldF9waHJhc2VfZW5kaW5nX3dpdGhfb2Jzb2xldGUoc2VsZik6CisgICAgICAgIHBocmFzZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9waHJhc2UsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KTpib28nLAorICAgICAgICAgICAgJ3NpbXBsZSBwaHJhc2UuKHdpdGggdHJhaWxpbmcgY29tbWVudCknLAorICAgICAgICAgICAgJ3NpbXBsZSBwaHJhc2UuICcsCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJzpib28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihwaHJhc2UpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBocmFzZVszXS5jb21tZW50cywgWyd3aXRoIHRyYWlsaW5nIGNvbW1lbnQnXSkKKworICAgIGRlZiBnZXRfcGhyYXNlX2Nmd3Nfb25seV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9waHJhc2UoJyAoZm9vKSAnKQorCisgICAgIyBnZXRfbG9jYWxfcGFydAorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfc2ltcGxlKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnZGluc2RhbGVAcHl0aG9uLm9yZycsICdkaW5zZGFsZScsICdkaW5zZGFsZScsIFtdLCAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQudG9rZW5fdHlwZSwgJ2xvY2FsLXBhcnQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3dpdGhfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnRnJlZC5BLkpvaG5zb25AcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnRnJlZC5BLkpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQuQS5Kb2huc29uJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbicpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF93aXRoX3doaXRlc3BhY2Uoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gIEBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgRnJlZC5BLkpvaG5zb24gICcsCisgICAgICAgICAgICAnIEZyZWQuQS5Kb2huc29uICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnIChmb28pIEZyZWQuQS5Kb2huc29uIChiYXIgKGJpcmQpKSAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vKSBGcmVkLkEuSm9obnNvbiAoYmFyIChiaXJkKSkgICcsCisgICAgICAgICAgICAnIEZyZWQuQS5Kb2huc29uICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnRbMF1bMF0uY29tbWVudHMsIFsnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydFswXVsyXS5jb21tZW50cywgWydiYXIgKGJpcmQpJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zaW1wbGVfcXVvdGVkKHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnImRpbnNkYWxlIkBweXRob24ub3JnJywgJyJkaW5zZGFsZSInLCAnImRpbnNkYWxlIicsIFtdLCAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQudG9rZW5fdHlwZSwgJ2xvY2FsLXBhcnQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3dpdGhfcXVvdGVkX2RvdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyJGcmVkLkEuSm9obnNvbiJAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIkZyZWQuQS5Kb2huc29uIicsCisgICAgICAgICAgICAnIkZyZWQuQS5Kb2huc29uIicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfcXVvdGVkX3dpdGhfd2hpdGVzcGFjZShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyAiRnJlZCBBLiBKb2huc29uIiAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAiRnJlZCBBLiBKb2huc29uIiAgJywKKyAgICAgICAgICAgICcgIkZyZWQgQS4gSm9obnNvbiIgJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkIEEuIEpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfcXVvdGVkX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyAoZm9vKSAiIEZyZWQgQS4gSm9obnNvbiAiIChiYXIgKGJpcmQpKSAgQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vKSAiIEZyZWQgQS4gSm9obnNvbiAiIChiYXIgKGJpcmQpKSAgJywKKyAgICAgICAgICAgICcgIiBGcmVkIEEuIEpvaG5zb24gIiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJyBGcmVkIEEuIEpvaG5zb24gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0WzBdWzBdLmNvbW1lbnRzLCBbJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnRbMF1bMl0uY29tbWVudHMsIFsnYmFyIChiaXJkKSddKQorCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zaW1wbGVfb2Jzb2xldGUoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdGcmVkLiBBLkpvaG5zb25AcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnRnJlZC4gQS5Kb2huc29uJywKKyAgICAgICAgICAgICdGcmVkLiBBLkpvaG5zb24nLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ0ZyZWQuQS5Kb2huc29uJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2NvbXBsZXhfb2Jzb2xldGVfMShzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uLiJhbmQgIGRvZ3MgIkBweXRob24ub3JnJywKKyAgICAgICAgICAgICcgKGZvbyApRnJlZCAoYmFyKS4oYmlyZCkgQS4oc2hlZXApSm9obnNvbi4iYW5kICBkb2dzICInLAorICAgICAgICAgICAgJyBGcmVkIC4gQS4gSm9obnNvbi5hbmQgIGRvZ3MgJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdGcmVkLkEuSm9obnNvbi5hbmQgIGRvZ3MgJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2NvbXBsZXhfb2Jzb2xldGVfaW52YWxpZChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uICJhbmQgIGRvZ3MiQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAoZm9vIClGcmVkIChiYXIpLihiaXJkKSBBLihzaGVlcClKb2huc29uICJhbmQgIGRvZ3MiJywKKyAgICAgICAgICAgICcgRnJlZCAuIEEuIEpvaG5zb24gYW5kICBkb2dzJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnRnJlZC5BLkpvaG5zb24gYW5kICBkb2dzJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X25vX3BhcnRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbG9jYWxfcGFydCgnIChmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9zcGVjaWFsX2luc3RlYWRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbG9jYWxfcGFydCgnIChmb28pIEBweXRob24ub3JnJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3RyYWlsaW5nX2RvdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyBib3JyaXMuQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyBib3JyaXMuJywKKyAgICAgICAgICAgICcgYm9ycmlzLicsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2JvcnJpcy4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdHJhaWxpbmdfZG90X3dpdGhfd3Moc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgYm9ycmlzLiBAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIGJvcnJpcy4gJywKKyAgICAgICAgICAgICcgYm9ycmlzLiAnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSoyLAorICAgICAgICAgICAgJ0BweXRob24ub3JnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2NhbF9wYXJ0LmxvY2FsX3BhcnQsICdib3JyaXMuJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X2xlYWRpbmdfZG90KHNlbGYpOgorICAgICAgICBsb2NhbF9wYXJ0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2xvY2FsX3BhcnQsCisgICAgICAgICAgICAnLmJvcnJpc0BweXRob24ub3JnJywKKyAgICAgICAgICAgICcuYm9ycmlzJywKKyAgICAgICAgICAgICcuYm9ycmlzJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICdAcHl0aG9uLm9yZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnLmJvcnJpcycpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9sZWFkaW5nX2RvdF9hZnRlcl93cyhzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgJyAuYm9ycmlzQHB5dGhvbi5vcmcnLAorICAgICAgICAgICAgJyAuYm9ycmlzJywKKyAgICAgICAgICAgICcgLmJvcnJpcycsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJy5ib3JyaXMnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfZG91YmxlX2RvdF9yYWlzZXMoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICcgYm9ycmlzLihmb28pLm5hdGFzaGFAcHl0aG9uLm9yZycsCisgICAgICAgICAgICAnIGJvcnJpcy4oZm9vKS5uYXRhc2hhJywKKyAgICAgICAgICAgICcgYm9ycmlzLiAubmF0YXNoYScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnQHB5dGhvbi5vcmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgJ2JvcnJpcy4ubmF0YXNoYScpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9jYWxfcGFydF9xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiJywKKyAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGUnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKworICAgIGRlZiB0ZXN0X2dldF9sb2NhbF9wYXJ0X3ZhbGlkX2FuZF9pbnZhbGlkX3FwX2luX2F0b21fbGlzdChzZWxmKToKKyAgICAgICAgbG9jYWxfcGFydCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9sb2NhbF9wYXJ0LAorICAgICAgICAgICAgciciXFwiZXhhbXBsZVxcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICByJyJcXCJleGFtcGxlXFwiIGV4YW1wbGUiJywKKyAgICAgICAgICAgIHInXGV4YW1wbGVcXCBleGFtcGxlJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qNSwKKyAgICAgICAgICAgICdAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhcnQubG9jYWxfcGFydCwgcidcZXhhbXBsZVxcIGV4YW1wbGUnKQorCisgICAgZGVmIHRlc3RfZ2V0X2xvY2FsX3BhcnRfdW5pY29kZV9kZWZlY3Qoc2VsZik6CisgICAgICAgICMgQ3VycmVudGx5IHRoaXMgb25seSBoYXBwZW5zIHdoZW4gcGFyc2luZyB1bmljb2RlLCBub3Qgd2hlbiBwYXJzaW5nCisgICAgICAgICMgc3R1ZmYgdGhhdCB3YXMgb3JpZ2luYWxseSBiaW5hcnkuCisgICAgICAgIGxvY2FsX3BhcnQgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbG9jYWxfcGFydCwKKyAgICAgICAgICAgICdleMOhbXBsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZXjDoW1wbGUnLAorICAgICAgICAgICAgJ2V4w6FtcGxlJywKKyAgICAgICAgICAgIFtlcnJvcnMuTm9uQVNDSUlMb2NhbFBhcnREZWZlY3RdLAorICAgICAgICAgICAgJ0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9jYWxfcGFydC5sb2NhbF9wYXJ0LCAnZXjDoW1wbGUnKQorCisgICAgIyBnZXRfZHRleHQKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF9vbmx5KHNlbGYpOgorICAgICAgICBkdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcicsICdmb29iYXInLCAnZm9vYmFyJywgW10sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0ZXh0LnRva2VuX3R5cGUsICdwdGV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfYWxsX2R0ZXh0KHNlbGYpOgorICAgICAgICBkdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwgc2VsZi5yZmNfZHRleHRfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJmY19kdGV4dF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmZjX2R0ZXh0X2NoYXJzLCBbXSwgJycpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfdHdvX3dvcmRzX2dldHNfZmlyc3Qoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJyBiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X2ZvbGxvd2luZ193c3BfcHJlc2VydmVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIFx0XHRiYXInLCAnZm9vJywgJ2ZvbycsIFtdLCAnIFx0XHRiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X25vbl9wcmludGFibGVzKHNlbGYpOgorICAgICAgICBkdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb1x4MDBiYXJdJywgJ2Zvb1x4MDBiYXInLCAnZm9vXHgwMGJhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuTm9uUHJpbnRhYmxlRGVmZWN0XSwgJ10nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0ZXh0LmRlZmVjdHNbMF0ubm9uX3ByaW50YWJsZXNbMF0sICdceDAwJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF93aXRoX3FwKHNlbGYpOgorICAgICAgICBwdGV4dCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInZm9vXF1cW1xcYmFyXGJcZVxsXGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidmb29dW1xiYXJiZWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInZm9vXVtcYmFyYmVsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3VwX3RvX2Nsb3NlX2JyYWNrZXRfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb10nLCAnZm9vJywgJ2ZvbycsIFtdLCAnXScpCisKKyAgICBkZWYgdGVzdF9nZXRfZHRleHRfd3NwX2JlZm9yZV9jbG9zZV9icmFja2V0X3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2R0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbyAgXScsICdmb28nLCAnZm9vJywgW10sICcgIF0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X2Nsb3NlX2JyYWNrZXRfbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29dYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ11iYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2R0ZXh0X3VwX3RvX29wZW5fYnJhY2tldF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZm9vWycsICdmb28nLCAnZm9vJywgW10sICdbJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF93c3BfYmVmb3JlX29wZW5fYnJhY2tldF9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb28gIFsnLCAnZm9vJywgJ2ZvbycsIFtdLCAnICBbJykKKworICAgIGRlZiB0ZXN0X2dldF9kdGV4dF9vcGVuX2JyYWNrZXRfbWlkX3dvcmQoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdmb29bYmFyJywgJ2ZvbycsICdmb28nLCBbXSwgJ1tiYXInKQorCisgICAgIyBnZXRfZG9tYWluX2xpdGVyYWwKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF9vbmx5KHNlbGYpOgorICAgICAgICBkb21haW5fbGl0ZXJhbCA9IGRvbWFpbl9saXRlcmFsID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwudG9rZW5fdHlwZSwgJ2RvbWFpbi1saXRlcmFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuaXAsICcxMjcuMC4wLjEnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX3dpdGhfaW50ZXJuYWxfd3Moc2VsZik6CisgICAgICAgIGRvbWFpbl9saXRlcmFsID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyAgMTI3LjAuMC4xXHQgXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbICAxMjcuMC4wLjFcdCBdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sgMTI3LjAuMC4xIF0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbl9saXRlcmFsLmlwLCAnMTI3LjAuMC4xJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbGl0ZXJhbF93aXRoX3N1cnJvdW5kaW5nX2Nmd3Moc2VsZik6CisgICAgICAgIGRvbWFpbl9saXRlcmFsID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbl9saXRlcmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbICAxMjcuMC4wLjFdIChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pWyAgMTI3LjAuMC4xXSAoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgWyAxMjcuMC4wLjFdICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW5fbGl0ZXJhbC5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluX2xpdGVyYWwuaXAsICcxMjcuMC4wLjEnKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9saXRlcmFsX25vX3N0YXJ0X2NoYXJfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwoJyhmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfbm9fc3RhcnRfY2hhcl9iZWZvcmVfc3BlY2lhbF9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9kb21haW5fbGl0ZXJhbCgnKGZvbykgQCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2xpdGVyYWxfYmFkX2R0ZXh0X2NoYXJfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluX2xpdGVyYWwoJyhmb28pIFthYmNbQCcpCisKKyAgICAjIGdldF9kb21haW4KKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fcmVndWxhcl9kb21haW5fb25seShzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4udG9rZW5fdHlwZSwgJ2RvbWFpbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fZG9tYWluX2xpdGVyYWxfb25seShzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1sxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4udG9rZW5fdHlwZSwgJ2RvbWFpbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ1sxMjcuMC4wLjFdJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBkb21haW4gPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlLmNvbShiYXIpXHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlLmNvbShiYXIpXHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9kb21haW5fbGl0ZXJhbF93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGRvbWFpbiA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pWzEyNy4wLjAuMV1cdChiYXIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgWzEyNy4wLjAuMV0gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9kb21haW5fd2l0aF9jZndzX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylleGFtcGxlLmNvbVx0KGJhciksIG5leHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKWV4YW1wbGUuY29tXHQoYmFyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleGFtcGxlLmNvbSAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvbWFpbi5kb21haW4sICdleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfZG9tYWluX2RvbWFpbl9saXRlcmFsX3dpdGhfY2Z3c19lbmRzX2F0X3NwZWNpYWwoc2VsZik6CisgICAgICAgIGRvbWFpbiA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhmb28pWzEyNy4wLjAuMV1cdChiYXIpLCBuZXh0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbylbMTI3LjAuMC4xXVx0KGJhciknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgWzEyNy4wLjAuMV0gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCBuZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb21haW4uZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgZG9tYWluID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2RvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGZvbykgZXhhbXBsZSAuIChiaXJkKWNvbShiYXIpXHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vKSBleGFtcGxlIC4gKGJpcmQpY29tKGJhcilcdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBleGFtcGxlIC4gY29tICcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG9tYWluLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9kb21haW5fbm9fbm9uX2Nmd3NfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfZG9tYWluKCIgIChmb28pXHQiKQorCisgICAgZGVmIHRlc3RfZ2V0X2RvbWFpbl9ub19hdG9tX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2RvbWFpbigiICAoZm9vKVx0LCBicm9rZW4iKQorCisKKyAgICAjIGdldF9hZGRyX3NwZWMKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyX3NwZWNfbm9ybWFsKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMudG9rZW5fdHlwZSwgJ2FkZHItc3BlYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY193aXRoX2RvYW1pbl9saXRlcmFsKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQFsxMjcuMC4wLjFdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBbMTI3LjAuMC4xXScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAWzEyNy4wLjAuMV0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuZG9tYWluLCAnWzEyNy4wLjAuMV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5hZGRyX3NwZWMsICdkaW5zZGFsZUBbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcl9zcGVjX3dpdGhfY2Z3cyhzZWxmKToKKyAgICAgICAgYWRkcl9zcGVjID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAnKGZvbykgZGluc2RhbGUoYmFyKUAgKGJpcmQpIGV4YW1wbGUuY29tIChib2cpJywKKyAgICAgICAgICAgICAgICAnKGZvbykgZGluc2RhbGUoYmFyKUAgKGJpcmQpIGV4YW1wbGUuY29tIChib2cpJywKKyAgICAgICAgICAgICAgICAnIGRpbnNkYWxlQGV4YW1wbGUuY29tICcsCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY193aXRoX3FvdW90ZWRfc3RyaW5nX2FuZF9jZndzKHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICcoZm9vKSAicm95IGEgYnVnIihiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcoZm9vKSAicm95IGEgYnVnIihiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZyknLAorICAgICAgICAgICAgICAgICcgInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20gJywKKyAgICAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ3JveSBhIGJ1ZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnInJveSBhIGJ1ZyJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19lbmRzX2F0X3NwZWNpYWwoc2VsZik6CisgICAgICAgIGFkZHJfc3BlYyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgJyhmb28pICJyb3kgYSBidWciKGJhcilAIChiaXJkKSBleGFtcGxlLmNvbSAoYm9nKSAsIG5leHQnLAorICAgICAgICAgICAgICAgICcoZm9vKSAicm95IGEgYnVnIihiYXIpQCAoYmlyZCkgZXhhbXBsZS5jb20gKGJvZykgJywKKyAgICAgICAgICAgICAgICAnICJyb3kgYSBidWciQGV4YW1wbGUuY29tICcsCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmxvY2FsX3BhcnQsICdyb3kgYSBidWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfc3BlYy5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmFkZHJfc3BlYywgJyJyb3kgYSBidWciQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyX3NwZWNfcXVvdGVkX3N0cmluZ3NfaW5fYXRvbV9saXN0KHNlbGYpOgorICAgICAgICBhZGRyX3NwZWMgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcl9zcGVjLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyIiZXhhbXBsZSIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2V4YW1wbGUgZXhhbXBsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMubG9jYWxfcGFydCwgJ2V4YW1wbGUgZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJfc3BlY19kb3RfYXRvbShzZWxmKToKKyAgICAgICAgYWRkcl9zcGVjID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJfc3BlYywKKyAgICAgICAgICAgICdzdGFyLmEuc3RhckBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnc3Rhci5hLnN0YXJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ3N0YXIuYS5zdGFyQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmxvY2FsX3BhcnQsICdzdGFyLmEuc3RhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcl9zcGVjLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyX3NwZWMuYWRkcl9zcGVjLCAnc3Rhci5hLnN0YXJAZXhhbXBsZS5jb20nKQorCisgICAgIyBnZXRfb2JzX3JvdXRlCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX3NpbXBsZShzZWxmKToKKyAgICAgICAgb2JzX3JvdXRlID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X29ic19yb3V0ZSwKKyAgICAgICAgICAgICdAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206JywKKyAgICAgICAgICAgICdAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206JywKKyAgICAgICAgICAgICdAZXhhbXBsZS5jb20sIEB0d28uZXhhbXBsZS5jb206JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzX3JvdXRlLnRva2VuX3R5cGUsICdvYnMtcm91dGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic19yb3V0ZS5kb21haW5zLCBbJ2V4YW1wbGUuY29tJywgJ3R3by5leGFtcGxlLmNvbSddKQorCisgICAgZGVmIHRlc3RfZ2V0X29ic19yb3V0ZV9jb21wbGV4KHNlbGYpOgorICAgICAgICBvYnNfcm91dGUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfb2JzX3JvdXRlLAorICAgICAgICAgICAgJyhmb28pLCwgKGJsdWUpQGV4YW1wbGUuY29tIChiYXIpLEB0d28uKGZvbykgZXhhbXBsZS5jb20gKGJpcmQpOicsCisgICAgICAgICAgICAnKGZvbyksLCAoYmx1ZSlAZXhhbXBsZS5jb20gKGJhciksQHR3by4oZm9vKSBleGFtcGxlLmNvbSAoYmlyZCk6JywKKyAgICAgICAgICAgICcgLCwgQGV4YW1wbGUuY29tICxAdHdvLiBleGFtcGxlLmNvbSA6JywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLCAgIyBUaGlzIGlzIHRoZSBvYnMtZG9tYWluCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYnNfcm91dGUudG9rZW5fdHlwZSwgJ29icy1yb3V0ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JzX3JvdXRlLmRvbWFpbnMsIFsnZXhhbXBsZS5jb20nLCAndHdvLmV4YW1wbGUuY29tJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfb2JzX3JvdXRlX25vX3JvdXRlX2JlZm9yZV9lbmRfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfb2JzX3JvdXRlKCcoZm9vKSBAZXhhbXBsZS5jb20sJykKKworICAgIGRlZiB0ZXN0X2dldF9vYnNfcm91dGVfbm9fcm91dGVfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfb2JzX3JvdXRlKCcoZm9vKSBbYWJjXSwnKQorCisgICAgZGVmIHRlc3RfZ2V0X29ic19yb3V0ZV9ub19yb3V0ZV9iZWZvcmVfc3BlY2lhbF9yYWlzZXMyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfb2JzX3JvdXRlKCcoZm9vKSBAZXhhbXBsZS5jb20gW2FiY10sJykKKworICAgICMgZ2V0X2FuZ2xlX2FkZHIKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX3NpbXBsZShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLnRva2VuX3R5cGUsICdhbmdsZS1hZGRyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9lbXB0eShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICc8PicsCisgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIudG9rZW5fdHlwZSwgJ2FuZ2xlLWFkZHInKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLmxvY2FsX3BhcnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIuZG9tYWluKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnPD4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfd2l0aF9jZndzKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnIChmb28pIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4oYmFyKScsCisgICAgICAgICAgICAnIChmb28pIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4oYmFyKScsCisgICAgICAgICAgICAnIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci50b2tlbl90eXBlLCAnYW5nbGUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhbmdsZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfcXNfYW5kX2RvbWFpbl9saXRlcmFsKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPCJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdPicsCisgICAgICAgICAgICAnPCJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdPicsCisgICAgICAgICAgICAnPCJGcmVkIFBlcmZlY3QiQFsxMjcuMC4wLjFdPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ0ZyZWQgUGVyZmVjdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdbMTI3LjAuMC4xXScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICciRnJlZCBQZXJmZWN0IkBbMTI3LjAuMC4xXScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9pbnRlcm5hbF9jZndzKHNlbGYpOgorICAgICAgICBhbmdsZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIsCisgICAgICAgICAgICAnPChmb28pIGRpbnNkYWxlQGV4YW1wbGUuY29tKGJhcik+JywKKyAgICAgICAgICAgICc8KGZvbykgZGluc2RhbGVAZXhhbXBsZS5jb20oYmFyKT4nLAorICAgICAgICAgICAgJzwgZGluc2RhbGVAZXhhbXBsZS5jb20gPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX29ic19yb3V0ZShzZWxmKToKKyAgICAgICAgYW5nbGVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hbmdsZV9hZGRyLAorICAgICAgICAgICAgJyhmb28pPEBleGFtcGxlLmNvbSwgKGJpcmQpIEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmFyKSAnLAorICAgICAgICAgICAgJyhmb28pPEBleGFtcGxlLmNvbSwgKGJpcmQpIEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmFyKSAnLAorICAgICAgICAgICAgJyA8QGV4YW1wbGUuY29tLCBAdHdvLmV4YW1wbGUuY29tOiBkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIucm91dGUsIFsnZXhhbXBsZS5jb20nLCAndHdvLmV4YW1wbGUuY29tJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9taXNzaW5nX2Nsb3NpbmdfYW5nbGUoc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8ZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX21pc3NpbmdfY2xvc2luZ19hbmdsZV93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8ZGluc2RhbGVAZXhhbXBsZS5jb20gKGZvbyknLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbSAoZm9vKT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbSA+JywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFuZ2xlX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5nbGVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9lbmRzX2F0X3NwZWNpYWwoc2VsZik6CisgICAgICAgIGFuZ2xlX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYW5nbGVfYWRkciwKKyAgICAgICAgICAgICc8ZGluc2RhbGVAZXhhbXBsZS5jb20+IChmb28pLCBuZXh0JywKKyAgICAgICAgICAgICc8ZGluc2RhbGVAZXhhbXBsZS5jb20+IChmb28pJywKKyAgICAgICAgICAgICc8ZGluc2RhbGVAZXhhbXBsZS5jb20+ICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuZ2xlX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYW5nbGVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmdsZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX25vX2FuZ2xlX3JhaXNlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfYW5nbGVfYWRkcignKGZvbykgJykKKworICAgIGRlZiB0ZXN0X2dldF9hbmdsZV9hZGRyX25vX2FuZ2xlX2JlZm9yZV9zcGVjaWFsX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X2FuZ2xlX2FkZHIoJyhmb28pICwgbmV4dCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYW5nbGVfYWRkcl9ub19hbmdsZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hbmdsZV9hZGRyKCdiYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2FuZ2xlX2FkZHJfc3BlY2lhbF9hZnRlcl9hbmdsZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9hbmdsZV9hZGRyKCcoZm9vKSA8LCBiYXInKQorCisgICAgIyBnZXRfZGlzcGxheV9uYW1lICBUaGlzIGlzIHBocmFzZSBidXQgd2l0aCBhIGRpZmZlcmVudCB2YWx1ZS4KKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfc2ltcGxlKHNlbGYpOgorICAgICAgICBkaXNwbGF5X25hbWUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJ0ZyZWQgQSBKb2huc29uJywKKyAgICAgICAgICAgICdGcmVkIEEgSm9obnNvbicsCisgICAgICAgICAgICAnRnJlZCBBIEpvaG5zb24nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUudG9rZW5fdHlwZSwgJ2Rpc3BsYXktbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ0ZyZWQgQSBKb2huc29uJykKKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfY29tcGxleDEoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUsIG9oLicsCisgICAgICAgICAgICAnIkZyZWQgQS4gSm9obnNvbiIgaXMgaGlzIG5hbWUnLAorICAgICAgICAgICAgJyJGcmVkIEEuIEpvaG5zb24gaXMgaGlzIG5hbWUiJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgb2guJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUudG9rZW5fdHlwZSwgJ2Rpc3BsYXktbmFtZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJ0ZyZWQgQS4gSm9obnNvbiBpcyBoaXMgbmFtZScpCisKKyAgICBkZWYgdGVzdF9nZXRfZGlzcGxheV9uYW1lX2NvbXBsZXgyKHNlbGYpOgorICAgICAgICBkaXNwbGF5X25hbWUgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgJyAoQSkgYmlyZCAoaW4gKG15fHlvdXIpKSAiaGFuZCAgIiBpcyBtZXNzeVx0PD5cdCcsCisgICAgICAgICAgICAnIChBKSBiaXJkIChpbiAobXl8eW91cikpICJoYW5kICAiIGlzIG1lc3N5XHQnLAorICAgICAgICAgICAgJyAiYmlyZCBoYW5kICAgaXMgbWVzc3kiICcsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICc8Plx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWVbMF1bMF0uY29tbWVudHMsIFsnQSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVswXVsyXS5jb21tZW50cywgWydpbiAobXl8eW91ciknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWUuZGlzcGxheV9uYW1lLCAnYmlyZCBoYW5kICAgaXMgbWVzc3knKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9vYnNvbGV0ZShzZWxmKToKKyAgICAgICAgZGlzcGxheV9uYW1lID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2Rpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdGcmVkIEEuKHdlaXJkKS5PIEpvaG5zb24nLAorICAgICAgICAgICAgJ0ZyZWQgQS4od2VpcmQpLk8gSm9obnNvbicsCisgICAgICAgICAgICAnIkZyZWQgQS4gLk8gSm9obnNvbiInLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXNwbGF5X25hbWUpLCA3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZVszXS5jb21tZW50cywgWyd3ZWlyZCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS5kaXNwbGF5X25hbWUsICdGcmVkIEEuIC5PIEpvaG5zb24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2Rpc3BsYXlfbmFtZV9waGFyc2VfbXVzdF9zdGFydF93aXRoX3dvcmQoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnKGV2ZW4gd2VpcmRlcikubmFtZScsCisgICAgICAgICAgICAnICIubmFtZSInLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSArIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlzcGxheV9uYW1lKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXNwbGF5X25hbWVbMF0uY29tbWVudHMsIFsnZXZlbiB3ZWlyZGVyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lLmRpc3BsYXlfbmFtZSwgJy5uYW1lJykKKworICAgIGRlZiB0ZXN0X2dldF9kaXNwbGF5X25hbWVfZW5kaW5nX3dpdGhfb2Jzb2xldGUoc2VsZik6CisgICAgICAgIGRpc3BsYXlfbmFtZSA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAnc2ltcGxlIHBocmFzZS4od2l0aCB0cmFpbGluZyBjb21tZW50KTpib28nLAorICAgICAgICAgICAgJ3NpbXBsZSBwaHJhc2UuKHdpdGggdHJhaWxpbmcgY29tbWVudCknLAorICAgICAgICAgICAgJyJzaW1wbGUgcGhyYXNlLiIgJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnOmJvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpc3BsYXlfbmFtZSksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlzcGxheV9uYW1lWzNdLmNvbW1lbnRzLCBbJ3dpdGggdHJhaWxpbmcgY29tbWVudCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpc3BsYXlfbmFtZS5kaXNwbGF5X25hbWUsICdzaW1wbGUgcGhyYXNlLicpCisKKyAgICAjIGdldF9uYW1lX2FkZHIKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfYW5nbGVfYWRkcl9vbmx5KHNlbGYpOgorICAgICAgICBuYW1lX2FkZHIgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbmFtZV9hZGRyLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIudG9rZW5fdHlwZSwgJ25hbWUtYWRkcicpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX2F0b21fbmFtZShzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICdEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdEaW5zZGFsZSA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLnRva2VuX3R5cGUsICduYW1lLWFkZHInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdEaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX2F0b21fbmFtZV93aXRoX2Nmd3Moc2VsZik6CisgICAgICAgIG5hbWVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9uYW1lX2FkZHIsCisgICAgICAgICAgICAnKGZvbykgRGluc2RhbGUgKGJhcikgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAoYmlyZCknLAorICAgICAgICAgICAgJyhmb28pIERpbnNkYWxlIChiYXIpIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGJpcmQpJywKKyAgICAgICAgICAgICcgRGluc2RhbGUgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnRGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl9uYW1lX3dpdGhfY2Z3c19hbmRfZG90cyhzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICcoZm9vKSBSb3kuQS5CZWFyIChiYXIpIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGJpcmQpJywKKyAgICAgICAgICAgICcoZm9vKSBSb3kuQS5CZWFyIChiYXIpIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gKGJpcmQpJywKKyAgICAgICAgICAgICcgIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4gJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZGlzcGxheV9uYW1lLCAnUm95LkEuQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobmFtZV9hZGRyLnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX3FzX25hbWUoc2VsZik6CisgICAgICAgIG5hbWVfYWRkciA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9uYW1lX2FkZHIsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kaXNwbGF5X25hbWUsICdSb3kuQS5CZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShuYW1lX2FkZHIucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9uYW1lX2FkZHJfd2l0aF9yb3V0ZShzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPEB0d28uZXhhbXBsZS5jb206IGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxAdHdvLmV4YW1wbGUuY29tOiBkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8QHR3by5leGFtcGxlLmNvbTogZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ1JveS5BLkJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLnJvdXRlLCBbJ3R3by5leGFtcGxlLmNvbSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgbmFtZV9hZGRyID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X25hbWVfYWRkciwKKyAgICAgICAgICAgICciUm95LkEuQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgbmV4dCcsCisgICAgICAgICAgICAnIlJveS5BLkJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kuQS5CZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZV9hZGRyLmRpc3BsYXlfbmFtZSwgJ1JveS5BLkJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWVfYWRkci5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5hbWVfYWRkci5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lX2FkZHIuYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X25hbWVfYWRkcl9ub19jb250ZW50X3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSGVhZGVyUGFyc2VFcnJvcik6CisgICAgICAgICAgICBwYXJzZXIuZ2V0X25hbWVfYWRkcignIChmb28pICcpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25vX2NvbnRlbnRfYmVmb3JlX3NwZWNpYWxfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5IZWFkZXJQYXJzZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5nZXRfbmFtZV9hZGRyKCcgKGZvbykgLCcpCisKKyAgICBkZWYgdGVzdF9nZXRfbmFtZV9hZGRyX25vX2FuZ2xlX2FmdGVyX2Rpc3BsYXlfbmFtZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkhlYWRlclBhcnNlRXJyb3IpOgorICAgICAgICAgICAgcGFyc2VyLmdldF9uYW1lX2FkZHIoJ2ZvbyBiYXInKQorCisgICAgIyBnZXRfbWFpbGJveAorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfYWRkcl9zcGVjX29ubHkoc2VsZik6CisgICAgICAgIG1haWxib3ggPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC50b2tlbl90eXBlLCAnbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3guZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2FuZ2xlX2FkZHJfb25seShzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJzxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbmFtZV9hZGRyKHNlbGYpOgorICAgICAgICBtYWlsYm94ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3gsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gudG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZGlzcGxheV9uYW1lLCAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3gubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5yb3V0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2VuZHNfYXRfc3BlY2lhbChzZWxmKToKKyAgICAgICAgbWFpbGJveCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9tYWlsYm94LAorICAgICAgICAgICAgJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgcmVzdCcsCisgICAgICAgICAgICAnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnLCByZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRpc3BsYXlfbmFtZSwgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmxvY2FsX3BhcnQsICdkaW5zZGFsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5kb21haW4sICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3gucm91dGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5hZGRyX3NwZWMsICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9xdW90ZWRfc3RyaW5nc19pbl9hdG9tX2xpc3Qoc2VsZik6CisgICAgICAgIG1haWxib3ggPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveCwKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSozLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94LmFkZHJfc3BlYywgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJykKKworICAgICMgZ2V0X21haWxib3hfbGlzdAorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF9zaW5nbGVfYWRkcihzZWxmKToKKyAgICAgICAgbWFpbGJveF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3hfbGlzdCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LnRva2VuX3R5cGUsICdtYWlsYm94LWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgbWFpbGJveCA9IG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveC5kaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveC5sb2NhbF9wYXJ0LCAnZGluc2RhbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtYWlsYm94LnJvdXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3guYWRkcl9zcGVjLCAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X3R3b19zaW1wbGVfYWRkcihzZWxmKToKKyAgICAgICAgbWFpbGJveF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3hfbGlzdCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbSwgZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20sIGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tLCBkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LnRva2VuX3R5cGUsICdtYWlsYm94LWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfdHdvX25hbWVfYWRkcihzZWxmKToKKyAgICAgICAgbWFpbGJveF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3hfbGlzdCwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X21haWxib3hfbGlzdF90d29fY29tcGxleChzZWxmKToKKyAgICAgICAgbWFpbGJveF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3hfbGlzdCwKKyAgICAgICAgICAgICgnKGZvbykgIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+KGJhciksJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuKGJpcmQpZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyhmb28pICJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPihiYXIpLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LihiaXJkKWV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCcgIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+ICwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4gZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnUm95IEEuIEJlYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMV0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMV0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgRmxpbnRzdG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QuYWxsX21haWxib3hlcykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfdW5wYXJzZWFibGVfbWFpbGJveF9udWxsKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiW10gZGluc2RhbGVAZXhhbXBsZS5jb20sJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuKGJpcmQpZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciJbXSBkaW5zZGFsZUBleGFtcGxlLmNvbSwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC4oYmlyZClleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIltdIGRpbnNkYWxlQGV4YW1wbGUuY29tLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LiBleGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCwgICAjIHRoZSAnZXh0cmEnIHRleHQgYWZ0ZXIgdGhlIGxvY2FsIHBhcnQKKyAgICAgICAgICAgICBlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCwgICAjIHRoZSBsb2NhbCBwYXJ0IHdpdGggbm8gYW5nbGUtYWRkcgorICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCwgICMgcGVyaW9kIGluIGV4dHJhIHRleHQgKGV4YW1wbGUuY29tKQorICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICMgKGJpcmQpIGluIHZhbGlkIGFkZHJlc3MuCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQtbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZG9tYWluKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICciUm95IEEuIEJlYXIiJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1sxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3RfanVua19hZnRlcl92YWxpZF9hZGRyZXNzKHNlbGYpOgorICAgICAgICBtYWlsYm94X2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfbWFpbGJveF9saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT5AQCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+QEAsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPkBALCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtYWlsYm94X2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ1JveSBBLiBCZWFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2ludmFsaWQtbWFpbGJveCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94X2xpc3QubWFpbGJveGVzWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uYWRkcl9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5tYWlsYm94ZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgRmxpbnRzdG9uZScpCisKKyAgICBkZWYgdGVzdF9nZXRfbWFpbGJveF9saXN0X2VtcHR5X2xpc3RfZWxlbWVudChzZWxmKToKKyAgICAgICAgbWFpbGJveF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3hfbGlzdCwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAoYmlyZCksLCcKKyAgICAgICAgICAgICAgICAnICJGcmVkIEZsaW50c3RvbmUiIDxkaW5zZGFsZUB0ZXN0LmV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sIChiaXJkKSwsJworICAgICAgICAgICAgICAgICcgIkZyZWQgRmxpbnRzdG9uZSIgPGRpbnNkYWxlQHRlc3QuZXhhbXBsZS5jb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgLCwnCisgICAgICAgICAgICAgICAgJyAiRnJlZCBGbGludHN0b25lIiA8ZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbT4nKSwKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0Lm1haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsYm94X2xpc3QuYWxsX21haWxib3hlc1swXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxib3hfbGlzdC5hbGxfbWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdSb3kgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5hZGRyX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAdGVzdC5leGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAnRnJlZCBGbGludHN0b25lJykKKworICAgIGRlZiB0ZXN0X2dldF9tYWlsYm94X2xpc3Rfb25seV9lbXB0eV9lbGVtZW50cyhzZWxmKToKKyAgICAgICAgbWFpbGJveF9saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X21haWxib3hfbGlzdCwKKyAgICAgICAgICAgICcoZm9vKSwsIChiYXIpJywKKyAgICAgICAgICAgICcoZm9vKSwsIChiYXIpJywKKyAgICAgICAgICAgICcgLCwgJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obWFpbGJveF9saXN0Lm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFpbGJveF9saXN0LmFsbF9tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveF9saXN0Lm1haWxib3hlcykKKworICAgICMgZ2V0X2dyb3VwX2xpc3QKKworICAgIGRlZiB0ZXN0X2dldF9ncm91cF9saXN0X2Nmd3Nfb25seShzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJyhoaWRkZW4pOycsCisgICAgICAgICAgICAnKGhpZGRlbiknLAorICAgICAgICAgICAgJyAnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnOycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBfbGlzdC50b2tlbl90eXBlLCAnZ3JvdXAtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbGlzdF9tYWlsYm94X2xpc3Qoc2VsZik6CisgICAgICAgIGdyb3VwX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXBfbGlzdCwKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLm9yZywgIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUub3JnPicsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5vcmcsICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLm9yZz4nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUub3JnLCAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5vcmc+JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBfbGlzdC50b2tlbl90eXBlLCAnZ3JvdXAtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwX2xpc3QubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBfbGlzdC5tYWlsYm94ZXNbMV0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdGcmVkIEEuIEJlYXInKQorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2xpc3Rfb2JzX2dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGdyb3VwX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXBfbGlzdCwKKyAgICAgICAgICAgICcsIChmb28pLCwoYmFyKScsCisgICAgICAgICAgICAnLCAoZm9vKSwsKGJhciknLAorICAgICAgICAgICAgJywgLCwgJywKKyAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBfbGlzdC50b2tlbl90eXBlLCAnZ3JvdXAtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfbGlzdF9jb21tZW50X29ubHlfaW52YWxpZChzZWxmKToKKyAgICAgICAgZ3JvdXBfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cF9saXN0LAorICAgICAgICAgICAgJyhiYXIpJywKKyAgICAgICAgICAgICcoYmFyKScsCisgICAgICAgICAgICAnICcsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXBfbGlzdC50b2tlbl90eXBlLCAnZ3JvdXAtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwX2xpc3QubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cF9saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9saXN0LmFsbF9tYWlsYm94ZXMpCisKKyAgICAjIGdldF9ncm91cAorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2VtcHR5KHNlbGYpOgorICAgICAgICBncm91cCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAudG9rZW5fdHlwZSwgJ2dyb3VwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5kaXNwbGF5X25hbWUsICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihncm91cC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5hbGxfbWFpbGJveGVzKQorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX251bGxfYWRkcl9zcGVjKHNlbGYpOgorICAgICAgICBncm91cCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9ncm91cCwKKyAgICAgICAgICAgICdmb286IDw+OycsCisgICAgICAgICAgICAnZm9vOiA8PjsnLAorICAgICAgICAgICAgJ2ZvbzogPD47JywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihncm91cC5tYWlsYm94ZXMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihncm91cC5hbGxfbWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5hbGxfbWFpbGJveGVzWzBdLnZhbHVlLCAnPD4nKQorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX2Nmd3Nfb25seShzZWxmKToKKyAgICAgICAgZ3JvdXAgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfZ3JvdXAsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiAoaGlkZGVuKTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogKGhpZGRlbik7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IDsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfc2luZ2xlX21haWxib3goc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPjsnLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzBdLmFkZHJfc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2dyb3VwX21peGVkX2xpc3Qoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcoZm9vKSBSb2dlciA8cGluZ0BleGFtcGVsZS5jb20+LCB4QHRlc3QuZXhhbXBsZS5jb207JyksCisgICAgICAgICAgICAoJ01vbnR5IFB5dGhvbjogIkZyZWQgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwnCisgICAgICAgICAgICAgICAgJyhmb28pIFJvZ2VyIDxwaW5nQGV4YW1wZWxlLmNvbT4sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgICgnTW9udHkgUHl0aG9uOiAiRnJlZCBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnIFJvZ2VyIDxwaW5nQGV4YW1wZWxlLmNvbT4sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAudG9rZW5fdHlwZSwgJ2dyb3VwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC5kaXNwbGF5X25hbWUsICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihncm91cC5tYWlsYm94ZXMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBncm91cC5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzFdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnUm9nZXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLm1haWxib3hlc1syXS5sb2NhbF9wYXJ0LCAneCcpCisKKyAgICBkZWYgdGVzdF9nZXRfZ3JvdXBfb25lX2ludmFsaWQoc2VsZik6CisgICAgICAgIGdyb3VwID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2dyb3VwLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcoZm9vKSBSb2dlciBwaW5nQGV4YW1wZWxlLmNvbSwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcoZm9vKSBSb2dlciBwaW5nQGV4YW1wZWxlLmNvbSwgeEB0ZXN0LmV4YW1wbGUuY29tOycpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246ICJGcmVkIEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICcgUm9nZXIgcGluZ0BleGFtcGVsZS5jb20sIHhAdGVzdC5leGFtcGxlLmNvbTsnKSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCwgICAjIG5vbi1hbmdsZSBhZGRyIG1ha2VzIGxvY2FsIHBhcnQgaW52YWxpZAorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwgICAjIGFuZCBpdHMgbm90IG9icy1sb2NhbCBlaXRoZXI6IG5vIGRvdHMuCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChncm91cC50b2tlbl90eXBlLCAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLmRpc3BsYXlfbmFtZSwgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLm1haWxib3hlcyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyb3VwLmFsbF9tYWlsYm94ZXMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdyb3VwLm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ3JvdXAubWFpbGJveGVzWzFdLmxvY2FsX3BhcnQsICd4JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ3JvdXAuYWxsX21haWxib3hlc1sxXS5kaXNwbGF5X25hbWUpCisKKyAgICAjIGdldF9hZGRyZXNzCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19zaW1wbGUoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2NvbXBsZXgoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICcoZm9vKSAiRnJlZCBBLiBCZWFyIiA8KGJpcmQpZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICcoZm9vKSAiRnJlZCBBLiBCZWFyIiA8KGJpcmQpZGluc2RhbGVAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICcgIkZyZWQgQS4gQmVhciIgPCBkaW5zZGFsZUBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzcy5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZyZWQgQS4gQmVhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlsYm94JykKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2VtcHR5X2dyb3VwKHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOjsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjo7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246OycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MudG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcy5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NbMF0udG9rZW5fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb250eSBQeXRob24nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfZ3JvdXAoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IHhAZXhhbXBsZS5jb20sIHlAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IHhAZXhhbXBsZS5jb20sIHlAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IHhAZXhhbXBsZS5jb20sIHlAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICdncm91cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS5kaXNwbGF5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ01vbnR5IFB5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfcXVvdGVkX2xvY2FsX3BhcnQoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICciZm9vIGJhciJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJyJmb28gYmFyIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnImZvbyBiYXIiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vIGJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLCAnbWFpbGJveCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19lbmRzX2F0X3NwZWNpYWwoc2VsZik6CisgICAgICAgIGFkZHJlc3MgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzcywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbSwgbmV4dCcsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJywgbmV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzLmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5tYWlsYm94ZXNbMF0uZG9tYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc1swXS50b2tlbl90eXBlLCAnbWFpbGJveCcpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19pbnZhbGlkX21haWxib3hfaW52YWxpZChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzLAorICAgICAgICAgICAgJ3BpbmcgZXhhbXBsZS5jb20sIG5leHQnLAorICAgICAgICAgICAgJ3BpbmcgZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ3BpbmcgZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICAjIGFkZHItc3BlYyB3aXRoIG5vIGRvbWFpbgorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICAjIGludmFsaWQgbG9jYWwtcGFydAorICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICAjIG1pc3NpbmcgLnMgaW4gbG9jYWwtcGFydAorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICcsIG5leHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MudG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3MuYWxsX21haWxib3hlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5kb21haW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcy5hbGxfbWFpbGJveGVzWzBdLmxvY2FsX3BhcnQsICdwaW5nIGV4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzWzBdLnRva2VuX3R5cGUsICdpbnZhbGlkLW1haWxib3gnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfcXVvdGVkX3N0cmluZ3NfaW5fYXRvbV9saXN0KHNlbGYpOgorICAgICAgICBhZGRyZXNzID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3MsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnIiJleGFtcGxlIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZXhhbXBsZSBleGFtcGxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnZXhhbXBsZSBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzLmFsbF9tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MuYWxsX21haWxib3hlc1swXS5hZGRyX3NwZWMsICciZXhhbXBsZSBleGFtcGxlIkBleGFtcGxlLmNvbScpCisKKworICAgICMgZ2V0X2FkZHJlc3NfbGlzdAorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9tYWlsYm94ZXNfc2ltcGxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgJ2RpbnNkYWxlQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdkaW5zZGFsZUBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnZGluc2RhbGVAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3N0cih4KSBmb3IgeCBpbiBhZGRyZXNzX2xpc3QubWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdFswXS50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGFkZHJlc3NfbGlzdFswXS5kaXNwbGF5X25hbWUpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc190d29fc2ltcGxlKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgJ2Zvb0BleGFtcGxlLmNvbSwgIkZyZWQgQS4gQmFyIiA8YmFyQGV4YW1wbGUuY29tPicsCisgICAgICAgICAgICAnZm9vQGV4YW1wbGUuY29tLCAiRnJlZCBBLiBCYXIiIDxiYXJAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICdmb29AZXhhbXBsZS5jb20sICJGcmVkIEEuIEJhciIgPGJhckBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3N0cih4KSBmb3IgeCBpbiBhZGRyZXNzX2xpc3QubWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlc1sxXS5kaXNwbGF5X25hbWUsICJGcmVkIEEuIEJhciIpCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X21haWxib3hlc19jb21wbGV4KHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnKHBpbmcpIEZvbyA8eEBleGFtcGxlLmNvbT4sJworICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwgPHlAKGJpcmQpZXhhbXBsZS4oYmFkKWNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyhwaW5nKSBGb28gPHhAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnTm9ib2R5IElzLiBTcGVjaWFsIDx5QChiaXJkKWV4YW1wbGUuKGJhZCljb20+JyksCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICdGb28gPHhAZXhhbXBsZS5jb20+LCcKKyAgICAgICAgICAgICAgICAnIk5vYm9keSBJcy4gU3BlY2lhbCIgPHlAZXhhbXBsZS4gY29tPicpLAorICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdCwgIyBwZXJpb2QgaW4gSXMuCisgICAgICAgICAgICBlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLCAjIGNmd3MgaW4gZG9tYWluCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3N0cih4KSBmb3IgeCBpbiBhZGRyZXNzX2xpc3QubWFpbGJveGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyKHgpIGZvciB4IGluIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0udG9rZW5fdHlwZSwgJ21haWxib3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0udG9rZW5fdHlwZSwgJ2FkZHJlc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMV0ubG9jYWxfcGFydCwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMl0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdOb2JvZHkgSXMuIFNwZWNpYWwnKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9tYWlsYm94ZXNfaW52YWxpZF9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAoJyJSb3kgQS4gQmVhciIgPGRpbnNkYWxlQGV4YW1wbGUuY29tPiwgJworICAgICAgICAgICAgICAgICcocGluZykgRm9vIHhAZXhhbXBsZS5jb21bXSwnCisgICAgICAgICAgICAgICAgJ05vYm9keSBJcy4gU3BlY2lhbCA8KGJpcmQpZXhhbXBsZS4oYmFkKWNvbT4nKSwKKyAgICAgICAgICAgICgnIlJveSBBLiBCZWFyIiA8ZGluc2RhbGVAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyhwaW5nKSBGb28geEBleGFtcGxlLmNvbVtdLCcKKyAgICAgICAgICAgICAgICAnTm9ib2R5IElzLiBTcGVjaWFsIDwoYmlyZClleGFtcGxlLihiYWQpY29tPicpLAorICAgICAgICAgICAgKCciUm95IEEuIEJlYXIiIDxkaW5zZGFsZUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnRm9vIHhAZXhhbXBsZS5jb21bXSwnCisgICAgICAgICAgICAgICAgJyJOb2JvZHkgSXMuIFNwZWNpYWwiIDwgZXhhbXBsZS4gY29tPicpLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdCwgICAjIGludmFsaWQgYWRkcmVzcyBpbiBsaXN0CisgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgJ0ZvbyB4JyBsb2NhbCBwYXJ0IGludmFsaWQuCisgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgTWlzc2luZyAuIGluICdGb28geCcgbG9jYWwgcGFydAorICAgICAgICAgICAgICBlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3QsICAjIHBlcmlvZCBpbiAnSXMuJyBkaXNwLW5hbWUgcGhyYXNlCisgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0LCAgICMgbm8gZG9tYWluIHBhcnQgaW4gYWRkci1zcGVjCisgICAgICAgICAgICAgIGVycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sICMgYWRkci1zcGVjIGhhcyBjb21tZW50IGluIGl0CisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcyksIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3N0cih4KSBmb3IgeCBpbiBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlc10sCisgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cih4KSBmb3IgeCBpbiBhZGRyZXNzX2xpc3QuYWRkcmVzc2VzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzWzBdLmRvbWFpbiwgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzWzBdLnRva2VuX3R5cGUsICdtYWlsYm94JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzFdLnRva2VuX3R5cGUsICdhZGRyZXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5tYWlsYm94ZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzFdLm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0ubWFpbGJveGVzKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0uYWxsX21haWxib3hlc1swXS5sb2NhbF9wYXJ0LCAnRm9vIHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgYWRkcmVzc19saXN0LmFkZHJlc3Nlc1syXS5hbGxfbWFpbGJveGVzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAiTm9ib2R5IElzLiBTcGVjaWFsIikKKworICAgIGRlZiB0ZXN0X2dldF9hZGRyZXNzX2xpc3RfZ3JvdXBfZW1wdHkoc2VsZik6CisgICAgICAgIGFkZHJlc3NfbGlzdCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiA7JywKKyAgICAgICAgICAgICdNb250eSBQeXRob246IDsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogOycsCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC50b2tlbl90eXBlLCAnYWRkcmVzcy1saXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0Lm1haWxib3hlcyksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0Lm1haWxib3hlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzX2xpc3QuYWxsX21haWxib3hlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYWRkcmVzc19saXN0LmFkZHJlc3NlcyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS50b2tlbl90eXBlLCAnYWRkcmVzcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1swXS5kaXNwbGF5X25hbWUsICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlcyksIDApCisKKyAgICBkZWYgdGVzdF9nZXRfYWRkcmVzc19saXN0X2dyb3VwX3NpbXBsZShzZWxmKToKKyAgICAgICAgYWRkcmVzc19saXN0ID0gc2VsZi5fdGVzdF9nZXRfeChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCwKKyAgICAgICAgICAgICdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tOycsCisgICAgICAgICAgICAnTW9udHkgUHl0aG9uOiBkaW5zZGFsZUBleGFtcGxlLmNvbTsnLAorICAgICAgICAgICAgJ01vbnR5IFB5dGhvbjogZGluc2RhbGVAZXhhbXBsZS5jb207JywKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LnRva2VuX3R5cGUsICdhZGRyZXNzLWxpc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhZGRyZXNzX2xpc3QubWFpbGJveGVzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QubWFpbGJveGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGlzdC5hbGxfbWFpbGJveGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0uZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICdNb250eSBQeXRob24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMF0ubWFpbGJveGVzWzBdLmRvbWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZS5jb20nKQorCisgICAgZGVmIHRlc3RfZ2V0X2FkZHJlc3NfbGlzdF9ncm91cF9hbmRfbWFpbGJveGVzKHNlbGYpOgorICAgICAgICBhZGRyZXNzX2xpc3QgPSBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfYWRkcmVzc19saXN0LAorICAgICAgICAgICAgKCdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tLCAiRnJlZCIgPGZsaW50QGV4YW1wbGUuY29tPjssICcKKyAgICAgICAgICAgICAgICAnQWJlIDx4QGV4YW1wbGUuY29tPiwgQmVlIDx5QGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tLCAiRnJlZCIgPGZsaW50QGV4YW1wbGUuY29tPjssICcKKyAgICAgICAgICAgICAgICAnQWJlIDx4QGV4YW1wbGUuY29tPiwgQmVlIDx5QGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgKCdNb250eSBQeXRob246IGRpbnNkYWxlQGV4YW1wbGUuY29tLCAiRnJlZCIgPGZsaW50QGV4YW1wbGUuY29tPjssICcKKyAgICAgICAgICAgICAgICAnQWJlIDx4QGV4YW1wbGUuY29tPiwgQmVlIDx5QGV4YW1wbGUuY29tPicpLAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QudG9rZW5fdHlwZSwgJ2FkZHJlc3MtbGlzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMpLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzc19saXN0LmFsbF9tYWlsYm94ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3NfbGlzdC5tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwgJ2RpbnNkYWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnTW9udHkgUHl0aG9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlc1swXS5kb21haW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzX2xpc3QuYWRkcmVzc2VzWzBdLm1haWxib3hlc1sxXS5sb2NhbF9wYXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICdmbGludCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1sxXS5tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzc19saXN0LmFkZHJlc3Nlc1syXS5tYWlsYm94ZXNbMF0ubG9jYWxfcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAneScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGFkZHJlc3NfbGlzdC5hZGRyZXNzZXNbMV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihhZGRyZXNzX2xpc3QubWFpbGJveGVzWzJdKSkKKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0X3BhcnNlX21pbWVfdmVyc2lvbihUZXN0UGFyc2VyTWl4aW4sIFRlc3RFbWFpbEJhc2UpOgorCisgICAgZGVmIG1pbWVfdmVyc2lvbl9hc192YWx1ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bF9zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bF92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ham9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZlY3RzKToKKyAgICAgICAgbWltZV92ZXJzaW9uID0gc2VsZi5fdGVzdF9wYXJzZV94KHBhcnNlci5wYXJzZV9taW1lX3ZlcnNpb24sCisgICAgICAgICAgICB2YWx1ZSwgdGxfc3RyLCB0bF92YWx1ZSwgZGVmZWN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW1lX3ZlcnNpb24ubWFqb3IsIG1ham9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1pbWVfdmVyc2lvbi5taW5vciwgbWlub3IpCisKKyAgICBtaW1lX3ZlcnNpb25fcGFyYW1zID0geworCisgICAgICAgICdyZmNfMjA0NV8xJzogKAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzInOiAoCisgICAgICAgICAgICAnMS4wIChwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KScsCisgICAgICAgICAgICAnMS4wIChwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KScsCisgICAgICAgICAgICAnMS4wICcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfMyc6ICgKKyAgICAgICAgICAgICcocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkgMS4wJywKKyAgICAgICAgICAgICcocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkgMS4wJywKKyAgICAgICAgICAgICcgMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV80JzogKAorICAgICAgICAgICAgJzEuKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpMCcsCisgICAgICAgICAgICAnMS4ocHJvZHVjZWQgYnkgTWV0YVNlbmQgVngueCkwJywKKyAgICAgICAgICAgICcxLiAwJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdlbXB0eSc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0pLAorCisgICAgICAgIH0KKworCisKK2NsYXNzIFRlc3RGb2xkaW5nKFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gcG9saWN5LmRlZmF1bHQKKworICAgIGRlZiBfdGVzdChzZWxmLCB0bCwgZm9sZGVkLCBwb2xpY3k9cG9saWN5KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0bC5mb2xkKHBvbGljeT1wb2xpY3kpLCBmb2xkZWQsIHRsLnBwc3RyKCkpCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfdW5zdHJ1Y3R1cmVkX25vX2ZvbGRzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJUaGlzIGlzIGEgdGVzdCIpLAorICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGEgdGVzdFxuIikKKworICAgIGRlZiB0ZXN0X3NpbXBsZV91bnN0cnVjdHVyZWRfZm9sZGVkKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfdW5zdHJ1Y3R1cmVkKCJUaGlzIGlzIGFsc28gYSB0ZXN0LCBidXQgdGhpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZSB0aGVyZSBhcmUgZW5vdWdoIHdvcmRzIChhbmQgZXZlbiBzb21lICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzeW1ib2xzKSB0byBtYWtlIGl0IHdyYXA7IGF0IGxlYXN0IGluIHRoZW9yeS4iKSwKKyAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyBhbHNvIGEgdGVzdCwgYnV0IHRoaXMgdGltZSB0aGVyZSBhcmUgZW5vdWdoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3b3JkcyAoYW5kIGV2ZW4gc29tZVxuIgorICAgICAgICAgICAgICAgICAgICIgc3ltYm9scykgdG8gbWFrZSBpdCB3cmFwOyBhdCBsZWFzdCBpbiB0aGVvcnkuXG4iKQorCisgICAgZGVmIHRlc3RfdW5zdHJ1Y3R1cmVkX3dpdGhfdW5pY29kZV9ub19mb2xkcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgiaMO8YnNjaCBrbGVpbmVyIGJlacOfdCIpLAorICAgICAgICAgICAgICAgICAgICI9P3V0Zi04P3E/aD1DMz1CQ2JzY2hfa2xlaW5lcl9iZWk9QzM9OUZ0Pz1cbiIpCisKKyAgICBkZWYgdGVzdF9vbmVfZXdfb25fZWFjaF9vZl90d29fd3JhcHBlZF9saW5lcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgiTWVpbiBrbGVpbmVyIEtha3R1cyBpc3Qgc2VociAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImjDvGJzY2guICBFcyBoYXQgdmllbGUgU3RhY2hlbG4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmQgb2Z0IGJlacOfdCBtaWNoLiIpLAorICAgICAgICAgICAgICAgICAgICJNZWluIGtsZWluZXIgS2FrdHVzIGlzdCBzZWhyID0/dXRmLTg/cT9oPUMzPUJDYnNjaD0yRT89ICAiCisgICAgICAgICAgICAgICAgICAgICAgICAiRXMgaGF0IHZpZWxlIFN0YWNoZWxuXG4iCisgICAgICAgICAgICAgICAgICAgIiB1bmQgb2Z0ID0/dXRmLTg/cT9iZWk9QzM9OUZ0Pz0gbWljaC5cbiIpCisKKyAgICBkZWYgdGVzdF9ld3NfY29tYmluZWRfYmVmb3JlX3dyYXAoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF91bnN0cnVjdHVyZWQoIk1laW4gS2FrdHVzIGlzdCBow7xic2NoLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcyBiZWnDn3QgbWljaC4gICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW5kIHRoYXQncyBhbGwgSSdtIHNheWluLiIpLAorICAgICAgICAgICAgICAgICAgICJNZWluIEtha3R1cyBpc3QgPT91dGYtOD9xP2g9QzM9QkNic2NoPTJFX19Fc19iZWk9QzM9OUZ0Pz0gIgorICAgICAgICAgICAgICAgICAgICAgICAgIm1pY2guICBBbmQgdGhhdCdzXG4iCisgICAgICAgICAgICAgICAgICAgIiBhbGwgSSdtIHNheWluLlxuIikKKworICAgICMgWFhYIE5lZWQgdGVzdCBvZiBhbiBlbmNvZGVkIHdvcmQgc28gbG9uZyB0aGF0IGl0IG5lZWRzIHRvIGJlIHdyYXBwZWQKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9hZGRyZXNzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfYWRkcmVzc19saXN0KCJhYmMgPHh5ekBleGFtcGxlLmNvbT4iKVswXSwKKyAgICAgICAgICAgICAgICAgICAiYWJjIDx4eXpAZXhhbXBsZS5jb20+XG4iKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19saXN0X2ZvbGRpbmdfYXRfY29tbWFzKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KHBhcnNlci5nZXRfYWRkcmVzc19saXN0KCdhYmMgPHh5ekBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJGcmVkIEJsdW50IiA8c2hhcnBAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciSi5QLkNvb2wiIDxob3RAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICciSzw+eSIgPGtleUBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpcmVzYWxlIDxjaGVhcEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxlbmRAZXhhbXBsZS5jb20+JylbMF0sCisgICAgICAgICAgICAgICAgICAgICdhYmMgPHh5ekBleGFtcGxlLmNvbT4sICJGcmVkIEJsdW50IiA8c2hhcnBAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICAgICAnICJKLlAuQ29vbCIgPGhvdEBleGFtcGxlLmNvbT4sICJLPD55IiA8a2V5QGV4YW1wbGUuY29tPixcbicKKyAgICAgICAgICAgICAgICAgICAgJyBGaXJlc2FsZSA8Y2hlYXBAZXhhbXBsZS5jb20+LCA8ZW5kQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfbGlzdF93aXRoX3VuaWNvZGVfbmFtZXMoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QocGFyc2VyLmdldF9hZGRyZXNzX2xpc3QoCisgICAgICAgICAgICAnSMO8YnNjaCBLYWt0dXMgPGJlYXV0aWZ1bEBleGFtcGxlLmNvbT4sICcKKyAgICAgICAgICAgICAgICAnYmVpw590IGJlacOfdCA8Yml0ZXJAZXhhbXBsZS5jb20+JylbMF0sCisgICAgICAgICAgICAnPT91dGYtOD9xP0g9QzM9QkNic2NoPz0gS2FrdHVzIDxiZWF1dGlmdWxAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICcgPT91dGYtOD9xP2JlaT1DMz05RnRfYmVpPUMzPTlGdD89IDxiaXRlckBleGFtcGxlLmNvbT5cbicpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX2xpc3Rfd2l0aF91bmljb2RlX25hbWVzX2luX3F1b3RlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X2FkZHJlc3NfbGlzdCgKKyAgICAgICAgICAgICciSMO8YnNjaCBLYWt0dXMiIDxiZWF1dGlmdWxAZXhhbXBsZS5jb20+LCAnCisgICAgICAgICAgICAgICAgJyJiZWnDn3QiIGJlacOfdCA8Yml0ZXJAZXhhbXBsZS5jb20+JylbMF0sCisgICAgICAgICAgICAnPT91dGYtOD9xP0g9QzM9QkNic2NoPz0gS2FrdHVzIDxiZWF1dGlmdWxAZXhhbXBsZS5jb20+LFxuJworICAgICAgICAgICAgICAgICcgPT91dGYtOD9xP2JlaT1DMz05RnRfYmVpPUMzPTlGdD89IDxiaXRlckBleGFtcGxlLmNvbT5cbicpCisKKyAgICAjIFhYWCBOZWVkIHRlc3RzIHdpdGggY29tbWVudHMgb24gdmFyaW91cyBzaWRlcyBvZiBhIHVuaWNvZGUgdG9rZW4sCisgICAgIyBhbmQgd2l0aCB1bmljb2RlIHRva2VucyBpbiB0aGUgY29tbWVudHMuICBTcGFjZXMgaW5zaWRlIHRoZSBxdW90ZXMKKyAgICAjIGN1cnJlbnRseSBkb24ndCBkbyB0aGUgcmlnaHQgdGhpbmcuCisKKyAgICBkZWYgdGVzdF9pbml0aWFsX3doaXRlc3BhY2Vfc3BsaXR0aW5nKHNlbGYpOgorICAgICAgICBib2R5ID0gcGFyc2VyLmdldF91bnN0cnVjdHVyZWQoJyAgICcgKyAneCcqNzcpCisgICAgICAgIGhlYWRlciA9IHBhcnNlci5IZWFkZXIoWworICAgICAgICAgICAgcGFyc2VyLkhlYWRlckxhYmVsKFtwYXJzZXIuVmFsdWVUZXJtaW5hbCgndGVzdDonLCAnYXRleHQnKV0pLAorICAgICAgICAgICAgcGFyc2VyLkNGV1NMaXN0KFtwYXJzZXIuV2hpdGVTcGFjZVRlcm1pbmFsKCcgJywgJ2Z3cycpXSksIGJvZHldKQorICAgICAgICBzZWxmLl90ZXN0KGhlYWRlciwgJ3Rlc3Q6ICAgXG4gJyArICd4Jyo3NyArICdcbicpCisKKyAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX3NwbGl0dGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdChwYXJzZXIuZ2V0X3Vuc3RydWN0dXJlZCgneHh4ICAgJyArICd5Jyo3NyksCisgICAgICAgICAgICAgICAgICAgJ3h4eCAgXG4gJyArICd5Jyo3NyArICdcbicpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF9jb2RlY3MucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKaW5kZXggY2E4NWY1Ny4uMDg5MjY5ZiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbF9jb2RlY3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQpAQCAtNSw3ICs1LDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCi1mcm9tIGVtYWlsLnRlc3QudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQorZnJvbSB0ZXN0LnRlc3RfZW1haWwudGVzdF9lbWFpbCBpbXBvcnQgVGVzdEVtYWlsQmFzZQogZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CiBmcm9tIGVtYWlsLmhlYWRlciBpbXBvcnQgSGVhZGVyLCBkZWNvZGVfaGVhZGVyCiBmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKQEAgLTQxLDcgKzQxLDcgQEAKIEhlbGxvIFdvcmxkISA9P2lzby0yMDIyLWpwP2I/R3lSQ0pVOGxiU0U4Slc4aFBDVnJKVWtoS2hzb1FnPT0/PQogID0/aXNvLTg4NTktMT9xP0dyPUZDPURGX0dvdHQhPz0iIiIpCiAgICAgICAgIGVxKGRlY29kZV9oZWFkZXIoaC5lbmNvZGUoKSksCi0gICAgICAgICAgIFsoYidIZWxsbyBXb3JsZCEnLCBOb25lKSwKKyAgICAgICAgICAgWyhiJ0hlbGxvIFdvcmxkISAnLCBOb25lKSwKICAgICAgICAgICAgIChiJ1x4MWIkQiVPJW0hPCVvITwlayVJISpceDFiKEInLCAnaXNvLTIwMjItanAnKSwKICAgICAgICAgICAgIChiJ0dyXHhmY1x4ZGYgR290dCEnLCBnY29kZSldKQogICAgICAgICBzdWJqZWN0X2J5dGVzID0gKGIndGVzdC1qYSBceGE0XHhkOFx4YzVceGVhXHhiOVx4YzZceGE0XHhiNScKQEAgLTc4LDE2ICs3OCw1IEBACiAKIAogDAotZGVmIHN1aXRlKCk6Ci0gICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQotICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QubWFrZVN1aXRlKFRlc3RFbWFpbEFzaWFuQ29kZWNzKSkKLSAgICByZXR1cm4gc3VpdGUKLQotCi1kZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRlc3RFbWFpbEFzaWFuQ29kZWNzKQotCi0KLQwKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVzdD0nc3VpdGUnKQorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2RlZmVjdF9oYW5kbGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9kZWZlY3RfaGFuZGxpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzA1NDMyZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9kZWZlY3RfaGFuZGxpbmcucHkKQEAgLTAsMCArMSwzMjAgQEAKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgY29udGV4dGxpYgorZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdERlZmVjdHNCYXNlOgorCisgICAgcG9saWN5ID0gcG9saWN5LmRlZmF1bHQKKyAgICByYWlzZV9leHBlY3RlZCA9IEZhbHNlCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBfcmFpc2VfcG9pbnQoc2VsZiwgZGVmZWN0KToKKyAgICAgICAgeWllbGQKKworICAgIGRlZiB0ZXN0X3NhbWVfYm91bmRhcnlfaW5uZXJfb3V0ZXIoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBTdWJqZWN0OiBYWAorICAgICAgICAgICAgRnJvbTogeHhAeHguZGsKKyAgICAgICAgICAgIFRvOiBYWAorICAgICAgICAgICAgTWltZS12ZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogbXVsdGlwYXJ0L21peGVkOworICAgICAgICAgICAgICAgYm91bmRhcnk9Ik1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQiCisKKyAgICAgICAgICAgIC0tTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydAorICAgICAgICAgICAgQ29udGVudC10eXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisgICAgICAgICAgICAgICBib3VuZGFyeT0iTVNfTWFjX09FXzMwNzE0Nzc4NDdfNzIwMjUyX01JTUVfUGFydCIKKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0CisgICAgICAgICAgICBDb250ZW50LXR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9IklTTy04ODU5LTEiCisgICAgICAgICAgICBDb250ZW50LXRyYW5zZmVyLWVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCisKKyAgICAgICAgICAgIHRleHQKKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0CisgICAgICAgICAgICBDb250ZW50LXR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD0iSVNPLTg4NTktMSIKKyAgICAgICAgICAgIENvbnRlbnQtdHJhbnNmZXItZW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKKworICAgICAgICAgICAgPEhUTUw+PC9IVE1MPgorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQtLQorCisgICAgICAgICAgICAtLU1TX01hY19PRV8zMDcxNDc3ODQ3XzcyMDI1Ml9NSU1FX1BhcnQKKyAgICAgICAgICAgIENvbnRlbnQtdHlwZTogaW1hZ2UvZ2lmOyBuYW1lPSJ4eC5naWYiOworICAgICAgICAgICAgQ29udGVudC1kaXNwb3NpdGlvbjogYXR0YWNobWVudAorICAgICAgICAgICAgQ29udGVudC10cmFuc2Zlci1lbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgICAgIFNvbWUgcmVtb3ZlZCBiYXNlNjQgZW5jb2RlZCBjaGFycy4KKworICAgICAgICAgICAgLS1NU19NYWNfT0VfMzA3MTQ3Nzg0N183MjAyNTJfTUlNRV9QYXJ0LS0KKworICAgICAgICAgICAgIiIiKQorICAgICAgICAjIFhYWCBiZXR0ZXIgd291bGQgYmUgdG8gYWN0dWFsbHkgZGV0ZWN0IHRoZSBkdXBsaWNhdGUuCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIGlubmVyID0gbXNnLmdldF9wYXlsb2FkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGlubmVyLCAnZGVmZWN0cycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmdldF9kZWZlY3RzKGlubmVyKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNlbGYuZ2V0X2RlZmVjdHMoaW5uZXIpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X211bHRpcGFydF9ub19ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIERhdGU6IEZyaSwgNiBBcHIgMjAwMSAwOToyMzowNiAtMDgwMCAoR01ULTA4MDApCisgICAgICAgICAgICBGcm9tOiBmb29iYXIKKyAgICAgICAgICAgIFN1YmplY3Q6IGJyb2tlbiBtYWlsCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVwb3J0OyByZXBvcnQtdHlwZT1kZWxpdmVyeS1zdGF0dXM7CisKKyAgICAgICAgICAgIC0tSkFCMDMyMjUuOTg2NTc3Nzg2L3ppbmZhbmRlbC5sYWNpdGEuY29tCisKKyAgICAgICAgICAgIE9uZSBwYXJ0CisKKyAgICAgICAgICAgIC0tSkFCMDMyMjUuOTg2NTc3Nzg2L3ppbmZhbmRlbC5sYWNpdGEuY29tCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG1lc3NhZ2UvZGVsaXZlcnktc3RhdHVzCisKKyAgICAgICAgICAgIEhlYWRlcjogQW5vdGhlciBwYXJ0CisKKyAgICAgICAgICAgIC0tSkFCMDMyMjUuOTg2NTc3Nzg2L3ppbmZhbmRlbC5sYWNpdGEuY29tLS0KKyAgICAgICAgICAgICIiIikKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc291cmNlKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKCksIHN0cikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNlbGYuZ2V0X2RlZmVjdHMobXNnKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNlbGYuZ2V0X2RlZmVjdHMobXNnKVsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCkpCisKKyAgICBtdWx0aXBhcnRfbXNnID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgRGF0ZTogV2VkLCAxNCBOb3YgMjAwNyAxMjo1NjoyMyBHTVQKKyAgICAgICAgRnJvbTogZm9vQGJhci5pbnZhbGlkCisgICAgICAgIFRvOiBmb29AYmFyLmludmFsaWQKKyAgICAgICAgU3ViamVjdDogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0IGFuZCBtdWx0aXBhcnQKKyAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7CisgICAgICAgICAgICBib3VuZGFyeT0iPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09Int9CisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluCisKKyAgICAgICAgVGVzdCBtZXNzYWdlCisKKyAgICAgICAgLS09PT09PT09PT09PT09PT0zMzQ0NDM4Nzg0NDU4MTE5ODYxPT0KKyAgICAgICAgQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KKyAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgWVdKagorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09LS0KKyAgICAgICAgIiIiKQorCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X2ludmFsaWRfY3RlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KAorICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NCIpKQorICAgICAgICBpZiBzZWxmLnJhaXNlX2V4cGVjdGVkOiByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYuZ2V0X2RlZmVjdHMobXNnKVswXSwKKyAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfbm9fY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSksIDApCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfdmFsaWRfY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIGZvciBjdGUgaW4gKCc3Yml0JywgJzhiaXQnLCAnQklOYXJ5Jyk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKAorICAgICAgICAgICAgICAgIHNlbGYubXVsdGlwYXJ0X21zZy5mb3JtYXQoIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogIitjdGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMCwgImN0ZT0iK2N0ZSkKKworICAgIGRlZiB0ZXN0X2x5aW5nX211bHRpcGFydChzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIEZyb206ICJBbGxpc29uIER1bmxhcCIgPHh4eEBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgIFRvOiB5eXlAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IDY0NDIzCisgICAgICAgICAgICBEYXRlOiBTdW4sIDExIEp1bCAyMDA0IDE2OjA5OjI3IC0wMzAwCisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvYWx0ZXJuYXRpdmU7CisKKyAgICAgICAgICAgIEJsYWggYmxhaCBibGFoCisgICAgICAgICAgICAiIiIpCisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCk6CisgICAgICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1zZywgJ2RlZmVjdHMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5nZXRfZGVmZWN0cyhtc2cpKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2Uoc2VsZi5nZXRfZGVmZWN0cyhtc2cpWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTXVsdGlwYXJ0SW52YXJpYW50VmlvbGF0aW9uRGVmZWN0KSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmdfc3RhcnRfYm91bmRhcnkoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9IkFBQSIKKyAgICAgICAgICAgIEZyb206IE1haWwgRGVsaXZlcnkgU3Vic3lzdGVtIDx4eHhAZXhhbXBsZS5jb20+CisgICAgICAgICAgICBUbzogeXl5QGV4YW1wbGUuY29tCisKKyAgICAgICAgICAgIC0tQUFBCisKKyAgICAgICAgICAgIFN0dWZmCisKKyAgICAgICAgICAgIC0tQUFBCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG1lc3NhZ2UvcmZjODIyCisKKyAgICAgICAgICAgIEZyb206IHdlYm1hc3RlckBweXRob24ub3JnCisgICAgICAgICAgICBUbzogenp6QGV4YW1wbGUuY29tCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDsgYm91bmRhcnk9IkJCQiIKKworICAgICAgICAgICAgLS1CQkItLQorCisgICAgICAgICAgICAtLUFBQS0tCisKKyAgICAgICAgICAgICIiIikKKyAgICAgICAgIyBUaGUgbWVzc2FnZSBzdHJ1Y3R1cmUgaXM6CisgICAgICAgICMKKyAgICAgICAgIyBtdWx0aXBhcnQvbWl4ZWQKKyAgICAgICAgIyAgICB0ZXh0L3BsYWluCisgICAgICAgICMgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgIyAgICAgICAgbXVsdGlwYXJ0L21peGVkIFsqXQorICAgICAgICAjCisgICAgICAgICMgWypdIFRoaXMgbWVzc2FnZSBpcyBtaXNzaW5nIGl0cyBzdGFydCBib3VuZGFyeQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpOgorICAgICAgICAgICAgb3V0ZXIgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIGJhZCA9IG91dGVyLmdldF9wYXlsb2FkKDEpLmdldF9wYXlsb2FkKDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMoYmFkKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNlbGYuZ2V0X2RlZmVjdHMoYmFkKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLlN0YXJ0Qm91bmRhcnlOb3RGb3VuZERlZmVjdCkpCisKKyAgICBkZWYgdGVzdF9maXJzdF9saW5lX2lzX2NvbnRpbnVhdGlvbl9oZWFkZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5fcmFpc2VfcG9pbnQoZXJyb3JzLkZpcnN0SGVhZGVyTGluZUlzQ29udGludWF0aW9uRGVmZWN0KToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coJyBMaW5lIDFcblN1YmplY3Q6IHRlc3RcblxuYm9keScpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5rZXlzKCksIFsnU3ViamVjdCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAnYm9keScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKVswXS5saW5lLCAnIExpbmUgMVxuJykKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfaGVhZGVyX2JvZHlfc2VwYXJhdG9yKHNlbGYpOgorICAgICAgICAjIE91ciBoZXVyaXN0aWMgaWYgd2Ugc2VlIGEgbGluZSB0aGF0IGRvZXNuJ3QgbG9vayBsaWtlIGEgaGVhZGVyIChubworICAgICAgICAjIGxlYWRpbmcgd2hpdGVzcGFjZSBidXQgbm8gJzonKSBpcyB0byBhc3N1bWUgdGhhdCB0aGUgYmxhbmsgbGluZSB0aGF0CisgICAgICAgICMgc2VwYXJhdGVzIHRoZSBoZWFkZXIgZnJvbSB0aGUgYm9keSBpcyBtaXNzaW5nLCBhbmQgdG8gc3RvcCBwYXJzaW5nCisgICAgICAgICMgaGVhZGVycyBhbmQgc3RhcnQgcGFyc2luZyB0aGUgYm9keS4KKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuTWlzc2luZ0hlYWRlckJvZHlTZXBhcmF0b3JEZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogdGVzdFxubm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5rZXlzKCksIFsnU3ViamVjdCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAnbm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5NaXNzaW5nSGVhZGVyQm9keVNlcGFyYXRvckRlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9iYWRfcGFkZGluZ19pbl9iYXNlNjRfcGF5bG9hZChzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFN1YmplY3Q6IHRlc3QKKyAgICAgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0CisKKyAgICAgICAgICAgIGRtaworICAgICAgICAgICAgIiIiKQorICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuSW52YWxpZEJhc2U2NFBhZGRpbmdEZWZlY3QpOgorICAgICAgICAgICAgcGF5bG9hZCA9IG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgYid2aScpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0UGFkZGluZ0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2NoYXJzX2luX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogdGVzdAorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworICAgICAgICAgICAgZG1ceDAxaz09PQorICAgICAgICAgICAgIiIiKQorICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKHNvdXJjZSkKKyAgICAgICAgd2l0aCBzZWxmLl9yYWlzZV9wb2ludChlcnJvcnMuSW52YWxpZEJhc2U2NENoYXJhY3RlcnNEZWZlY3QpOgorICAgICAgICAgICAgcGF5bG9hZCA9IG1zZy5nZXRfcGF5bG9hZChkZWNvZGU9VHJ1ZSkKKyAgICAgICAgaWYgc2VsZi5yYWlzZV9leHBlY3RlZDogcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgYid2aScpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKHNlbGYuZ2V0X2RlZmVjdHMobXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdF0pCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2VuZGluZ19ib3VuZGFyeShzZWxmKToKKyAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiAxQGhhcnJ5ZG9tYWluNC5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IEZ3ZDogMQorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOworICAgICAgICAgICAgIGJvdW5kYXJ5PSItLS0tLS0tLS0tLS0wMDAxMDEwMjAyMDEwODA5MDAwNDAzMDEiCisKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tMDAwMTAxMDIwMjAxMDgwOTAwMDQwMzAxCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMQorICAgICAgICAgICAgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAorCisgICAgICAgICAgICBBbHRlcm5hdGl2ZSAxCisKKyAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tMDAwMTAxMDIwMjAxMDgwOTAwMDQwMzAxCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CisKKyAgICAgICAgICAgIEFsdGVybmF0aXZlIDIKKworICAgICAgICAgICAgIiIiKQorICAgICAgICB3aXRoIHNlbGYuX3JhaXNlX3BvaW50KGVycm9ycy5DbG9zZUJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpOgorICAgICAgICAgICAgbXNnID0gc2VsZi5fc3RyX21zZyhzb3VyY2UpCisgICAgICAgIGlmIHNlbGYucmFpc2VfZXhwZWN0ZWQ6IHJldHVybgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZ2V0X3BheWxvYWQoKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKDEpLmdldF9wYXlsb2FkKCksICdBbHRlcm5hdGl2ZSAyXG4nKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChzZWxmLmdldF9kZWZlY3RzKG1zZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuQ2xvc2VCb3VuZGFyeU5vdEZvdW5kRGVmZWN0XSkKKworCitjbGFzcyBUZXN0RGVmZWN0RGV0ZWN0aW9uKFRlc3REZWZlY3RzQmFzZSwgVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgZ2V0X2RlZmVjdHMoc2VsZiwgb2JqKToKKyAgICAgICAgcmV0dXJuIG9iai5kZWZlY3RzCisKKworY2xhc3MgVGVzdERlZmVjdENhcHR1cmUoVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIGNsYXNzIENhcHR1cmVQb2xpY3kocG9saWN5LkVtYWlsUG9saWN5KToKKyAgICAgICAgY2FwdHVyZWQgPSBOb25lCisgICAgICAgIGRlZiByZWdpc3Rlcl9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgorICAgICAgICAgICAgc2VsZi5jYXB0dXJlZC5hcHBlbmQoZGVmZWN0KQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnBvbGljeSA9IHNlbGYuQ2FwdHVyZVBvbGljeShjYXB0dXJlZD1saXN0KCkpCisKKyAgICBkZWYgZ2V0X2RlZmVjdHMoc2VsZiwgb2JqKToKKyAgICAgICAgcmV0dXJuIHNlbGYucG9saWN5LmNhcHR1cmVkCisKKworY2xhc3MgVGVzdERlZmVjdFJhaXNpbmcoVGVzdERlZmVjdHNCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIHBvbGljeSA9IFRlc3REZWZlY3RzQmFzZS5wb2xpY3kKKyAgICBwb2xpY3kgPSBwb2xpY3kuY2xvbmUocmFpc2Vfb25fZGVmZWN0PVRydWUpCisgICAgcmFpc2VfZXhwZWN0ZWQgPSBUcnVlCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBfcmFpc2VfcG9pbnQoc2VsZiwgZGVmZWN0KToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhkZWZlY3QpOgorICAgICAgICAgICAgeWllbGQKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKaW5kZXggMzUyYjliMS4uMzZjMzQ0ZiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL3Rlc3QvdGVzdF9lbWFpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKQEAgLTE2LDYgKzE2LDcgQEAKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgogCiBpbXBvcnQgZW1haWwKK2ltcG9ydCBlbWFpbC5wb2xpY3kKIAogZnJvbSBlbWFpbC5jaGFyc2V0IGltcG9ydCBDaGFyc2V0CiBmcm9tIGVtYWlsLmhlYWRlciBpbXBvcnQgSGVhZGVyLCBkZWNvZGVfaGVhZGVyLCBtYWtlX2hlYWRlcgpAQCAtMzYsNDAgKzM3LDE0IEBACiBmcm9tIGVtYWlsIGltcG9ydCBiYXNlNjRtaW1lCiBmcm9tIGVtYWlsIGltcG9ydCBxdW9wcmltaW1lCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBmaW5kZmlsZSwgcnVuX3VuaXR0ZXN0LCB1bmxpbmsKLWZyb20gZW1haWwudGVzdCBpbXBvcnQgX19maWxlX18gYXMgbGFuZG1hcmsKLQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdW5saW5rCitmcm9tIHRlc3QudGVzdF9lbWFpbCBpbXBvcnQgb3BlbmZpbGUsIFRlc3RFbWFpbEJhc2UKIAogTkwgPSAnXG4nCiBFTVBUWVNUUklORyA9ICcnCiBTUEFDRSA9ICcgJwogCiAKLQotZGVmIG9wZW5maWxlKGZpbGVuYW1lLCAqYXJncywgKiprd3MpOgotICAgIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCBmaWxlbmFtZSkKLSAgICByZXR1cm4gb3BlbihwYXRoLCAqYXJncywgKiprd3MpCi0KLQotCi0jIEJhc2UgdGVzdCBjbGFzcwotY2xhc3MgVGVzdEVtYWlsQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIG5kaWZmQXNzZXJ0RXF1YWwoc2VsZiwgZmlyc3QsIHNlY29uZCk6Ci0gICAgICAgICIiIkxpa2UgYXNzZXJ0RXF1YWwgZXhjZXB0IHVzZSBuZGlmZiBmb3IgcmVhZGFibGUgb3V0cHV0LiIiIgotICAgICAgICBpZiBmaXJzdCAhPSBzZWNvbmQ6Ci0gICAgICAgICAgICBzZmlyc3QgPSBzdHIoZmlyc3QpCi0gICAgICAgICAgICBzc2Vjb25kID0gc3RyKHNlY29uZCkKLSAgICAgICAgICAgIHJmaXJzdCA9IFtyZXByKGxpbmUpIGZvciBsaW5lIGluIHNmaXJzdC5zcGxpdGxpbmVzKCldCi0gICAgICAgICAgICByc2Vjb25kID0gW3JlcHIobGluZSkgZm9yIGxpbmUgaW4gc3NlY29uZC5zcGxpdGxpbmVzKCldCi0gICAgICAgICAgICBkaWZmID0gZGlmZmxpYi5uZGlmZihyZmlyc3QsIHJzZWNvbmQpCi0gICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oTkwgKyBOTC5qb2luKGRpZmYpKQotCi0gICAgZGVmIF9tc2dvYmooc2VsZiwgZmlsZW5hbWUpOgotICAgICAgICB3aXRoIG9wZW5maWxlKGZpbmRmaWxlKGZpbGVuYW1lKSkgYXMgZnA6Ci0gICAgICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZnApCi0KLQotCiAjIFRlc3QgdmFyaW91cyBhc3BlY3RzIG9mIHRoZSBNZXNzYWdlIGNsYXNzJ3MgQVBJCiBjbGFzcyBUZXN0TWVzc2FnZUFQSShUZXN0RW1haWxCYXNlKToKICAgICBkZWYgdGVzdF9nZXRfYWxsKHNlbGYpOgpAQCAtMTk0LDcgKzE2OSw3IEBACiAgICAgZGVmIHRlc3RfbWVzc2FnZV9yZmM4MjJfb25seShzZWxmKToKICAgICAgICAgIyBJc3N1ZSA3OTcwOiBtZXNzYWdlL3JmYzgyMiBub3QgaW4gbXVsdGlwYXJ0IHBhcnNlZCBieQogICAgICAgICAjIEhlYWRlclBhcnNlciBjYXVzZWQgYW4gZXhjZXB0aW9uIHdoZW4gZmxhdHRlbmVkLgotICAgICAgICB3aXRoIG9wZW5maWxlKGZpbmRmaWxlKCdtc2dfNDYudHh0JykpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW5maWxlKCdtc2dfNDYudHh0JykgYXMgZnA6CiAgICAgICAgICAgICBtc2dkYXRhID0gZnAucmVhZCgpCiAgICAgICAgIHBhcnNlciA9IEhlYWRlclBhcnNlcigpCiAgICAgICAgIG1zZyA9IHBhcnNlci5wYXJzZXN0cihtc2dkYXRhKQpAQCAtMjAzLDYgKzE3OCwxNyBAQAogICAgICAgICBnZW4uZmxhdHRlbihtc2csIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5nZXR2YWx1ZSgpLCBtc2dkYXRhKQogCisgICAgZGVmIHRlc3RfYnl0ZV9tZXNzYWdlX3JmYzgyMl9vbmx5KHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBuZXcgYnl0ZXMgaGVhZGVyIHBhcnNlciBhbHNvIHBhc3NlcyB0aGlzLgorICAgICAgICB3aXRoIG9wZW5maWxlKCdtc2dfNDYudHh0JywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBtc2dkYXRhID0gZnAucmVhZCgpCisgICAgICAgIHBhcnNlciA9IGVtYWlsLnBhcnNlci5CeXRlc0hlYWRlclBhcnNlcigpCisgICAgICAgIG1zZyA9IHBhcnNlci5wYXJzZWJ5dGVzKG1zZ2RhdGEpCisgICAgICAgIG91dCA9IEJ5dGVzSU8oKQorICAgICAgICBnZW4gPSBlbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3Iob3V0KQorICAgICAgICBnZW4uZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCksIG1zZ2RhdGEpCisKICAgICBkZWYgdGVzdF9nZXRfZGVjb2RlZF9wYXlsb2FkKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMTAudHh0JykKQEAgLTI3Myw2ICsyNTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMF0uc3RhcnRzd2l0aCgnRnJvbSAnKSkKICAgICAgICAgZXEodGV4dCwgTkwuam9pbihsaW5lc1sxOl0pKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5iYWRfcGFyYW1zCiAgICAgZGVmIHRlc3RfYmFkX3BhcmFtKHNlbGYpOgogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJDb250ZW50LVR5cGU6IGJsYXJnOyBiYXo7IGJvb1xuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BhcmFtKCdiYXonKSwgJycpCkBAIC0zMDYsNiArMjkzLDcgQEAKICAgICAgICAgZXEobXNnLmdldF9wYXJhbXMoaGVhZGVyPSd4LWhlYWRlcicpLAogICAgICAgICAgICBbKCdmb28nLCAnJyksICgnYmFyJywgJ29uZScpLCAoJ2JheicsICd0d28nKV0pCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnNwYWNlc19hcm91bmRfcGFyYW1fZXF1YWxzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX2xpYmVyYWwoc2VsZik6CiAgICAgICAgIG1zZyA9IE1lc3NhZ2UoKQogICAgICAgICBtc2dbJ0NvbnRlbnQtVHlwZSddID0gJ0NvbnRlbnQtVHlwZTogTXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeSA9ICJDUElNU1NNVFBDMDZwNWYzdEciJwpAQCAtMzI4LDEwICszMTYsMTIgQEAKICAgICAgICAgIyBtc2cuZ2V0X3BhcmFtKCJ3ZWlyZCIpCiAgICAgICAgICMgeWV0LgogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5zcGFjZXNfYXJvdW5kX3NlbWlzCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtX2Z1bmt5X2NvbnRpbnVhdGlvbl9saW5lcyhzZWxmKToKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfMjIudHh0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoMSkuZ2V0X3BhcmFtKCduYW1lJyksICd3aWJibGUuSlBHJykKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIuc2VtaXNfaW5zaWRlX3F1b3RlcwogICAgIGRlZiB0ZXN0X2dldF9wYXJhbV93aXRoX3NlbWlzX2luX3F1b3RlcyhzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZygKICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGltYWdlL3BqcGVnOyBuYW1lPSJKaW0mYW1wOyZhbXA7SmlsbCJcbicpCkBAIC0zMzksNiArMzI5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BhcmFtKCduYW1lJywgdW5xdW90ZT1GYWxzZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJyJKaW0mYW1wOyZhbXA7SmlsbCInKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5xdW90ZXNfaW5zaWRlX3JmYzIyMzFfdmFsdWUKICAgICBkZWYgdGVzdF9nZXRfcGFyYW1fd2l0aF9xdW90ZXMoc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoCiAgICAgICAgICAgICAnQ29udGVudC1UeXBlOiBmb287IGJhciowPSJiYXpcXCJmb29iYXIiOyBiYXIqMT0iXFwiYmF6IicpCkBAIC01MjcsNiArNTE4LDcgQEAKICAgICAgICAgZXEobXNnLnZhbHVlcygpLCBbJ09uZSBIdW5kcmVkJywgJ1R3ZW50eScsICdUaHJlZScsICdFbGV2ZW4nXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1zZy5yZXBsYWNlX2hlYWRlciwgJ0ZvdXJ0aCcsICdNaXNzaW5nJykKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmc6dGVzdF9pbnZhbGlkX2NoYXJzX2luX2Jhc2U2NF9wYXlsb2FkCiAgICAgZGVmIHRlc3RfYnJva2VuX2Jhc2U2NF9wYXlsb2FkKHNlbGYpOgogICAgICAgICB4ID0gJ0F3RHAwUDcvL3k2THdLRUFjUGEvNlE9OScKICAgICAgICAgbXNnID0gTWVzc2FnZSgpCkBAIC01MzQsNyArNTI2LDEwIEBACiAgICAgICAgIG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddID0gJ2Jhc2U2NCcKICAgICAgICAgbXNnLnNldF9wYXlsb2FkKHgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcyh4LCAncmF3LXVuaWNvZGUtZXNjYXBlJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgKGInXHgwM1x4MDBceGU5XHhkMFx4ZmVceGZmXHhmZi5ceDhiXHhjMCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidceGExXHgwMHBceGY2XHhiZlx4ZTlceDBmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkQmFzZTY0Q2hhcmFjdGVyc0RlZmVjdCkKIAogICAgIGRlZiB0ZXN0X2Jyb2tlbl91bmljb2RlX3BheWxvYWQoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGltcHJvdmVzIGNvdmVyYWdlIGJ1dCBpcyBub3QgYSBjb21wbGlhbmNlIHRlc3QuCkBAIC02MzIsNiArNjI3LDE4IEBACiAgICAgICAgICAgICBhYmMKICAgICAgICAgICAgICIiIikpCiAKKyAgICBkZWYgdGVzdF91bmljb2RlX2JvZHlfZGVmYXVsdHNfdG9fdXRmOF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNDI5MQorICAgICAgICBtID0gTUlNRVRleHQoJ8OJIHRlc3RhYmNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG0pLHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9InV0Zi04IgorICAgICAgICAgICAgTUlNRS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgICAgICB3NGtnZEdWemRHRmlZd289CisgICAgICAgICAgICAiIiIpKQorCisKICMgVGVzdCB0aGUgZW1haWwuZW5jb2RlcnMgbW9kdWxlCiBjbGFzcyBUZXN0RW5jb2RlcnModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02NTcsNyArNjY0LDcgQEAKICAgICAgICAgZXEobXNnWydjb250ZW50LXRyYW5zZmVyLWVuY29kaW5nJ10sICc3Yml0JykKICAgICAgICAgIyBTaW1pbGFyLCBidXQgd2l0aCA4Yml0IGRhdGEKICAgICAgICAgbXNnID0gTUlNRVRleHQoJ2hlbGxvIFx4Zjggd29ybGQnKQotICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJzhiaXQnKQorICAgICAgICBlcShtc2dbJ2NvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmcnXSwgJ2Jhc2U2NCcpCiAgICAgICAgICMgQW5kIG5vdyB3aXRoIGEgZGlmZmVyZW50IGNoYXJzZXQKICAgICAgICAgbXNnID0gTUlNRVRleHQoJ2hlbGxvIFx4Zjggd29ybGQnLCBfY2hhcnNldD0naXNvLTg4NTktMScpCiAgICAgICAgIGVxKG1zZ1snY29udGVudC10cmFuc2Zlci1lbmNvZGluZyddLCAncXVvdGVkLXByaW50YWJsZScpCkBAIC0xMjQzLDYgKzEyNTAsNyBAQAogICAgICAgICAgICAgID0/dXRmLTg/cT9fZm9sZGluZ193aGl0ZV9zcGFjZV93b3Jrcz89IiIiKSsnXG4nKQogCiAKKwogIyBUZXN0IG1hbmdsaW5nIG9mICJGcm9tICIgbGluZXMgaW4gdGhlIGJvZHkgb2YgYSBtZXNzYWdlCiBjbGFzcyBUZXN0RnJvbU1hbmdsaW5nKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC0xMzE2LDEzICsxMzI0LDcgQEAKICMgVGVzdCB0aGUgYmFzaWMgTUlNRUF1ZGlvIGNsYXNzCiBjbGFzcyBUZXN0TUlNRUF1ZGlvKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgICMgTWFrZSBzdXJlIHdlIHBpY2sgdXAgdGhlIGF1ZGlvdGVzdC5hdSB0aGF0IGxpdmVzIGluIGVtYWlsL3Rlc3QvZGF0YS4KLSAgICAgICAgIyBJbiBQeXRob24sIHRoZXJlJ3MgYW4gYXVkaW90ZXN0LmF1IGxpdmluZyBpbiBMaWIvdGVzdCBidXQgdGhhdCBpc24ndAotICAgICAgICAjIGluY2x1ZGVkIGluIHNvbWUgYmluYXJ5IGRpc3Ryb3MgdGhhdCBkb24ndCBpbmNsdWRlIHRoZSB0ZXN0Ci0gICAgICAgICMgcGFja2FnZS4gIFRoZSB0cmFpbGluZyBlbXB0eSBzdHJpbmcgb24gdGhlIC5qb2luKCkgaXMgc2lnbmlmaWNhbnQKLSAgICAgICAgIyBzaW5jZSBmaW5kZmlsZSgpIHdpbGwgZG8gYSBkaXJuYW1lKCkuCi0gICAgICAgIGRhdGFkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGxhbmRtYXJrKSwgJ2RhdGEnLCAnJykKLSAgICAgICAgd2l0aCBvcGVuKGZpbmRmaWxlKCdhdWRpb3Rlc3QuYXUnLCBkYXRhZGlyKSwgJ3JiJykgYXMgZnA6CisgICAgICAgIHdpdGggb3BlbmZpbGUoJ2F1ZGlvdGVzdC5hdScsICdyYicpIGFzIGZwOgogICAgICAgICAgICAgc2VsZi5fYXVkaW9kYXRhID0gZnAucmVhZCgpCiAgICAgICAgIHNlbGYuX2F1ID0gTUlNRUF1ZGlvKHNlbGYuX2F1ZGlvZGF0YSkKIApAQCAtMTg1MCw2ICsxODUyLDcgQEAKIAogIyBUZXN0IHNvbWUgYmFkbHkgZm9ybWF0dGVkIG1lc3NhZ2VzCiBjbGFzcyBUZXN0Tm9uQ29uZm9ybWFudChUZXN0RW1haWxCYXNlKToKKwogICAgIGRlZiB0ZXN0X3BhcnNlX21pc3NpbmdfbWlub3JfdHlwZShzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG1zZyA9IHNlbGYuX21zZ29iaignbXNnXzE0LnR4dCcpCkBAIC0xODU3LDYgKzE4NjAsNyBAQAogICAgICAgICBlcShtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSwgJ3RleHQnKQogICAgICAgICBlcShtc2cuZ2V0X2NvbnRlbnRfc3VidHlwZSgpLCAncGxhaW4nKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X3NhbWVfYm91bmRhcnlfaW5uZXJfb3V0ZXIoc2VsZik6CiAgICAgICAgIHVubGVzcyA9IHNlbGYuYXNzZXJ0VHJ1ZQogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18xNS50eHQnKQpAQCAtMTg2NywxNSArMTg3MSw2MiBAQAogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShpbm5lci5kZWZlY3RzWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuU3RhcnRCb3VuZGFyeU5vdEZvdW5kRGVmZWN0KSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKICAgICBkZWYgdGVzdF9tdWx0aXBhcnRfbm9fYm91bmRhcnkoc2VsZik6CiAgICAgICAgIHVubGVzcyA9IHNlbGYuYXNzZXJ0VHJ1ZQogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18yNS50eHQnKQogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoKSwgc3RyKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNnLmRlZmVjdHMpLCAyKQotICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1swXSwgZXJyb3JzLk5vQm91bmRhcnlJbk11bHRpcGFydERlZmVjdCkpCisgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKICAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5NdWx0aXBhcnRJbnZhcmlhbnRWaW9sYXRpb25EZWZlY3QpKQogCisgICAgbXVsdGlwYXJ0X21zZyA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgIERhdGU6IFdlZCwgMTQgTm92IDIwMDcgMTI6NTY6MjMgR01UCisgICAgICAgIEZyb206IGZvb0BiYXIuaW52YWxpZAorICAgICAgICBUbzogZm9vQGJhci5pbnZhbGlkCisgICAgICAgIFN1YmplY3Q6IENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NCBhbmQgbXVsdGlwYXJ0CisgICAgICAgIE1JTUUtVmVyc2lvbjogMS4wCisgICAgICAgIENvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOworICAgICAgICAgICAgYm91bmRhcnk9Ij09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PSJ7fQorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09CisgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCisgICAgICAgIFRlc3QgbWVzc2FnZQorCisgICAgICAgIC0tPT09PT09PT09PT09PT09MzM0NDQzODc4NDQ1ODExOTg2MT09CisgICAgICAgIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCisgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCisgICAgICAgIFlXSmoKKworICAgICAgICAtLT09PT09PT09PT09PT09PTMzNDQ0Mzg3ODQ0NTgxMTk4NjE9PS0tCisgICAgICAgICIiIikKKworICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfaW52YWxpZF9jdGUoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICBzZWxmLm11bHRpcGFydF9tc2cuZm9ybWF0KCJcbkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NCIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtc2cuZGVmZWN0c1swXSwKKyAgICAgICAgICAgIGVycm9ycy5JbnZhbGlkTXVsdGlwYXJ0Q29udGVudFRyYW5zZmVyRW5jb2RpbmdEZWZlY3QpCisKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCisgICAgZGVmIHRlc3RfbXVsdGlwYXJ0X25vX2N0ZV9ub19kZWZlY3Qoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMCkKKworICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfdmFsaWRfY3RlX25vX2RlZmVjdChzZWxmKToKKyAgICAgICAgZm9yIGN0ZSBpbiAoJzdiaXQnLCAnOGJpdCcsICdCSU5hcnknKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coCisgICAgICAgICAgICAgICAgc2VsZi5tdWx0aXBhcnRfbXNnLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgIlxuQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzoge30iLmZvcm1hdChjdGUpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZy5kZWZlY3RzKSwgMCkKKworICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5b3BlSGVhZGVyIGludmFsaWRfMSBhbmQgaW52YWxpZF8yLgogICAgIGRlZiB0ZXN0X2ludmFsaWRfY29udGVudF90eXBlKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbmVxID0gc2VsZi5uZGlmZkFzc2VydEVxdWFsCkBAIC0xOTI1LDE1ICsxOTc2LDE4IEBACiBjb3VudGVyIHRvIFJGQyAyODIyLCB0aGVyZSdzIG5vIHNlcGFyYXRpbmcgbmV3bGluZSBoZXJlCiAiIiIpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfbHlpbmdfbXVsdGlwYXJ0KHNlbGYpOgogICAgICAgICB1bmxlc3MgPSBzZWxmLmFzc2VydFRydWUKICAgICAgICAgbXNnID0gc2VsZi5fbXNnb2JqKCdtc2dfNDEudHh0JykKICAgICAgICAgdW5sZXNzKGhhc2F0dHIobXNnLCAnZGVmZWN0cycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtc2cuZGVmZWN0cyksIDIpCi0gICAgICAgIHVubGVzcyhpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLCBlcnJvcnMuTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0KSkKKyAgICAgICAgdW5sZXNzKGlzaW5zdGFuY2UobXNnLmRlZmVjdHNbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5Ob0JvdW5kYXJ5SW5NdWx0aXBhcnREZWZlY3QpKQogICAgICAgICB1bmxlc3MoaXNpbnN0YW5jZShtc2cuZGVmZWN0c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLk11bHRpcGFydEludmFyaWFudFZpb2xhdGlvbkRlZmVjdCkpCiAKKyAgICAjIHRlc3RfZGVmZWN0X2hhbmRsaW5nCiAgICAgZGVmIHRlc3RfbWlzc2luZ19zdGFydF9ib3VuZGFyeShzZWxmKToKICAgICAgICAgb3V0ZXIgPSBzZWxmLl9tc2dvYmooJ21zZ180Mi50eHQnKQogICAgICAgICAjIFRoZSBtZXNzYWdlIHN0cnVjdHVyZSBpczoKQEAgLTE5NDksMTcgKzIwMDMsMjkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoYmFkLmRlZmVjdHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5TdGFydEJvdW5kYXJ5Tm90Rm91bmREZWZlY3QpKQogCisgICAgIyB0ZXN0X2RlZmVjdF9oYW5kbGluZwogICAgIGRlZiB0ZXN0X2ZpcnN0X2xpbmVfaXNfY29udGludWF0aW9uX2hlYWRlcihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIG0gPSAnIExpbmUgMVxuTGluZSAyXG5MaW5lIDMnCisgICAgICAgIG0gPSAnIExpbmUgMVxuU3ViamVjdDogdGVzdFxuXG5ib2R5JwogICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG0pCi0gICAgICAgIGVxKG1zZy5rZXlzKCksIFtdKQotICAgICAgICBlcShtc2cuZ2V0X3BheWxvYWQoKSwgJ0xpbmUgMlxuTGluZSAzJykKKyAgICAgICAgZXEobXNnLmtleXMoKSwgWydTdWJqZWN0J10pCisgICAgICAgIGVxKG1zZy5nZXRfcGF5bG9hZCgpLCAnYm9keScpCiAgICAgICAgIGVxKGxlbihtc2cuZGVmZWN0cyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3QpKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChtc2cuZGVmZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlcnJvcnMuRmlyc3RIZWFkZXJMaW5lSXNDb250aW51YXRpb25EZWZlY3RdKQogICAgICAgICBlcShtc2cuZGVmZWN0c1swXS5saW5lLCAnIExpbmUgMVxuJykKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmcKKyAgICBkZWYgdGVzdF9taXNzaW5nX2hlYWRlcl9ib2R5X3NlcGFyYXRvcihzZWxmKToKKyAgICAgICAgIyBPdXIgaGV1cmlzdGljIGlmIHdlIHNlZSBhIGxpbmUgdGhhdCBkb2Vzbid0IGxvb2sgbGlrZSBhIGhlYWRlciAobm8KKyAgICAgICAgIyBsZWFkaW5nIHdoaXRlc3BhY2UgYnV0IG5vICc6JykgaXMgdG8gYXNzdW1lIHRoYXQgdGhlIGJsYW5rIGxpbmUgdGhhdAorICAgICAgICAjIHNlcGFyYXRlcyB0aGUgaGVhZGVyIGZyb20gdGhlIGJvZHkgaXMgbWlzc2luZywgYW5kIHRvIHN0b3AgcGFyc2luZworICAgICAgICAjIGhlYWRlcnMgYW5kIHN0YXJ0IHBhcnNpbmcgdGhlIGJvZHkuCisgICAgICAgIG1zZyA9IHNlbGYuX3N0cl9tc2coJ1N1YmplY3Q6IHRlc3Rcbm5vdCBhIGhlYWRlclxuVG86IGFiY1xuXG5iXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5rZXlzKCksIFsnU3ViamVjdCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfcGF5bG9hZCgpLCAnbm90IGEgaGVhZGVyXG5UbzogYWJjXG5cbmJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKG1zZy5kZWZlY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JzLk1pc3NpbmdIZWFkZXJCb2R5U2VwYXJhdG9yRGVmZWN0XSkKIAogCiAjIFRlc3QgUkZDIDIwNDcgaGVhZGVyIGVuY29kaW5nIGFuZCBkZWNvZGluZwpAQCAtMTk3MCw5ICsyMDM2LDkgQEAKICBmb28gYmFyID0/bWFjLWljZWxhbmQ/cT9yPThBa3NtPTlBcmc9OENzPz0iIiIKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCiAgICAgICAgIGVxKGRoLCBbCi0gICAgICAgICAgICAoYidSZTonLCBOb25lKSwKKyAgICAgICAgICAgIChiJ1JlOiAnLCBOb25lKSwKICAgICAgICAgICAgIChiJ3JceDhha3NtXHg5YXJnXHg4Y3MnLCAnbWFjLWljZWxhbmQnKSwKLSAgICAgICAgICAgIChiJ2JheiBmb28gYmFyJywgTm9uZSksCisgICAgICAgICAgICAoYicgYmF6IGZvbyBiYXIgJywgTm9uZSksCiAgICAgICAgICAgICAoYidyXHg4YWtzbVx4OWFyZ1x4OGNzJywgJ21hYy1pY2VsYW5kJyldKQogICAgICAgICBoZWFkZXIgPSBtYWtlX2hlYWRlcihkaCkKICAgICAgICAgZXEoc3RyKGhlYWRlciksCkBAIC0xOTgxLDM1ICsyMDQ3LDM3IEBACiBSZTogPT9tYWMtaWNlbGFuZD9xP3I9OEFrc209OUFyZz04Q3M/PSBiYXogZm9vIGJhciA9P21hYy1pY2VsYW5kP3E/cj04QWtzbT89CiAgPT9tYWMtaWNlbGFuZD9xPz05QXJnPThDcz89IiIiKQogCi0gICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9lYXRlcl91bmljb2RlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3doaXRlc3BhY2Vfa2VlcGVyX3VuaWNvZGUoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gJz0/SVNPLTg4NTktMT9RP0FuZHI9RTk/PSBQaXJhcmQgPHBpcmFyZEBkb20uYWluPicKICAgICAgICAgZGggPSBkZWNvZGVfaGVhZGVyKHMpCiAgICAgICAgIGVxKGRoLCBbKGInQW5kclx4ZTknLCAnaXNvLTg4NTktMScpLAotICAgICAgICAgICAgICAgIChiJ1BpcmFyZCA8cGlyYXJkQGRvbS5haW4+JywgTm9uZSldKQorICAgICAgICAgICAgICAgIChiJyBQaXJhcmQgPHBpcmFyZEBkb20uYWluPicsIE5vbmUpXSkKICAgICAgICAgaGVhZGVyID0gc3RyKG1ha2VfaGVhZGVyKGRoKSkKICAgICAgICAgZXEoaGVhZGVyLCAnQW5kclx4ZTkgUGlyYXJkIDxwaXJhcmRAZG9tLmFpbj4nKQogCi0gICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9lYXRlcl91bmljb2RlXzIoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9rZWVwZXJfdW5pY29kZV8yKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgcyA9ICdUaGUgPT9pc28tODg1OS0xP2I/Y1hWcFkyc2dZbkp2ZDI0Z1ptOTQ/PSBqdW1wZWQgb3ZlciB0aGUgPT9pc28tODg1OS0xP2I/YkdGNmVTQmtiMmM9Pz0nCiAgICAgICAgIGRoID0gZGVjb2RlX2hlYWRlcihzKQotICAgICAgICBlcShkaCwgWyhiJ1RoZScsIE5vbmUpLCAoYidxdWljayBicm93biBmb3gnLCAnaXNvLTg4NTktMScpLAotICAgICAgICAgICAgICAgIChiJ2p1bXBlZCBvdmVyIHRoZScsIE5vbmUpLCAoYidsYXp5IGRvZycsICdpc28tODg1OS0xJyldKQorICAgICAgICBlcShkaCwgWyhiJ1RoZSAnLCBOb25lKSwgKGIncXVpY2sgYnJvd24gZm94JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAoYicganVtcGVkIG92ZXIgdGhlICcsIE5vbmUpLCAoYidsYXp5IGRvZycsICdpc28tODg1OS0xJyldKQogICAgICAgICBodSA9IHN0cihtYWtlX2hlYWRlcihkaCkpCiAgICAgICAgIGVxKGh1LCAnVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cnKQogCiAgICAgZGVmIHRlc3RfcmZjMjA0N19taXNzaW5nX3doaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIHMgPSAnU209P0lTTy04ODU5LTE/Qj85Zz09Pz1yZz0/SVNPLTg4NTktMT9CPzVRPT0/PXNib3JkJwogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaCwgWyhzLCBOb25lKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGgsIFsoYidTbScsIE5vbmUpLCAoYidceGY2JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJ3JnJywgTm9uZSksIChiJ1x4ZTUnLCAnaXNvLTg4NTktMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGInc2JvcmQnLCBOb25lKV0pCiAKICAgICBkZWYgdGVzdF9yZmMyMDQ3X3dpdGhfd2hpdGVzcGFjZShzZWxmKToKICAgICAgICAgcyA9ICdTbSA9P0lTTy04ODU5LTE/Qj85Zz09Pz0gcmcgPT9JU08tODg1OS0xP0I/NVE9PT89IHNib3JkJwogICAgICAgICBkaCA9IGRlY29kZV9oZWFkZXIocykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaCwgWyhiJ1NtJywgTm9uZSksIChiJ1x4ZjYnLCAnaXNvLTg4NTktMScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIncmcnLCBOb25lKSwgKGInXHhlNScsICdpc28tODg1OS0xJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYidzYm9yZCcsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaCwgWyhiJ1NtICcsIE5vbmUpLCAoYidceGY2JywgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiJyByZyAnLCBOb25lKSwgKGInXHhlNScsICdpc28tODg1OS0xJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYicgc2JvcmQnLCBOb25lKV0pCiAKICAgICBkZWYgdGVzdF9yZmMyMDQ3X0JfYmFkX3BhZGRpbmcoc2VsZik6CiAgICAgICAgIHMgPSAnPT9pc28tODg1OS0xP0I/JXM/PScKQEAgLTIwMjcsNiArMjA5NSw2NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCiAgICAgICAgICAgICAgICAgICAgICAgICBbKGInYW5kclx4ZTk9enonLCAnaXNvLTg2NTktMScpXSkKIAorICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N18xKHNlbGYpOgorICAgICAgICAjIDFzdCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N18yKHNlbGYpOgorICAgICAgICAjIDJuZCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gYiknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EnLCAnaXNvLTg4NTktMScpLCAoYicgYiknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfMyhzZWxmKToKKyAgICAgICAgIyAzcmQgdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcKKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89ID0/SVNPLTg4NTktMT9RP2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2FiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N180KHNlbGYpOgorICAgICAgICAjIDR0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hPz0gID0/SVNPLTg4NTktMT9RP2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2FiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N181YShzZWxmKToKKyAgICAgICAgIyA1dGggdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcgbmV3bGluZSBpcyBcclxuCisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PVxyXG4gICAgPT9JU08tODg1OS0xP1E/Yj89KScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJygnLCBOb25lKSwgKGInYWInLCAnaXNvLTg4NTktMScpLCAoYicpJywgTm9uZSldKQorCisgICAgZGVmIHRlc3RfcmZjMjA0N19yZmMyMDQ3XzViKHNlbGYpOgorICAgICAgICAjIDV0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NyBuZXdsaW5lIGlzIFxuCisgICAgICAgIHMgPSAnKD0/SVNPLTg4NTktMT9RP2E/PVxuICAgID0/SVNPLTg4NTktMT9RP2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2FiJywgJ2lzby04ODU5LTEnKSwgKGInKScsIE5vbmUpXSkKKworICAgIGRlZiB0ZXN0X3JmYzIwNDdfcmZjMjA0N182KHNlbGYpOgorICAgICAgICAjIDZ0aCB0ZXN0Y2FzZSBhdCBlbmQgb2YgcmZjMjA0NworICAgICAgICBzID0gJyg9P0lTTy04ODU5LTE/UT9hX2I/PSknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlX2hlYWRlcihzKSwKKyAgICAgICAgICAgIFsoYicoJywgTm9uZSksIChiJ2EgYicsICdpc28tODg1OS0xJyksIChiJyknLCBOb25lKV0pCisKKyAgICBkZWYgdGVzdF9yZmMyMDQ3X3JmYzIwNDdfNyhzZWxmKToKKyAgICAgICAgIyA3dGggdGVzdGNhc2UgYXQgZW5kIG9mIHJmYzIwNDcKKyAgICAgICAgcyA9ICcoPT9JU08tODg1OS0xP1E/YT89ID0/SVNPLTg4NTktMj9RP19iPz0pJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZV9oZWFkZXIocyksCisgICAgICAgICAgICBbKGInKCcsIE5vbmUpLCAoYidhJywgJ2lzby04ODU5LTEnKSwgKGInIGInLCAnaXNvLTg4NTktMicpLAorICAgICAgICAgICAgIChiJyknLCBOb25lKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihzKSkuZW5jb2RlKCksIHMubG93ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihzKSkpLCAnKGEgYiknKQorCisgICAgZGVmIHRlc3RfbXVsdGlsaW5lX2hlYWRlcihzZWxmKToKKyAgICAgICAgcyA9ICc9P3dpbmRvd3MtMTI1Mj9xPz0yMk09RkNsbGVyX1Q9MjI/PVxyXG4gPFQuTXVlbGxlckB4eHguY29tPicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVfaGVhZGVyKHMpLAorICAgICAgICAgICAgWyhiJyJNXHhmY2xsZXIgVCInLCAnd2luZG93cy0xMjUyJyksCisgICAgICAgICAgICAgKGInPFQuTXVlbGxlckB4eHguY29tPicsIE5vbmUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWtlX2hlYWRlcihkZWNvZGVfaGVhZGVyKHMpKS5lbmNvZGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJy5qb2luKHMuc3BsaXRsaW5lcygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICciTcO8bGxlciBUIiA8VC5NdWVsbGVyQHh4eC5jb20+JykKKwogCiAjIFRlc3QgdGhlIE1JTUVNZXNzYWdlIGNsYXNzCiBjbGFzcyBUZXN0TUlNRU1lc3NhZ2UoVGVzdEVtYWlsQmFzZSk6CkBAIC0yNTUyLDYgKzI2ODEsMTMgQEAKICAgICAgICAgZm9yIHN1YnBhcnQgaW4gbXNnLndhbGsoKToKICAgICAgICAgICAgIHVubGVzcyhpc2luc3RhbmNlKHN1YnBhcnQsIE15TWVzc2FnZSkpCiAKKyAgICBkZWYgdGVzdF9jdXN0b21fbWVzc2FnZV9kb2VzX25vdF9yZXF1aXJlX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlNZXNzYWdlKE1lc3NhZ2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorICAgICAgICBtc2cgPSBzZWxmLl9zdHJfbXNnKCJTdWJqZWN0OiB0ZXN0XG5cbnRlc3QiLCBNeU1lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZywgTXlNZXNzYWdlKSkKKwogICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKICAgICAgICAgbW9kdWxlID0gX19pbXBvcnRfXygnZW1haWwnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChtb2R1bGUuX19hbGxfXyksIFsKQEAgLTI1ODIsOCArMjcxOCwxNyBAQAogICAgICAgICAgICAgdXRpbHMuZm9ybWF0ZGF0ZShub3csIGxvY2FsdGltZT1GYWxzZSwgdXNlZ210PVRydWUpLAogICAgICAgICAgICAgdGltZS5zdHJmdGltZSgnJWEsICVkICViICVZICVIOiVNOiVTIEdNVCcsIHRpbWUuZ210aW1lKG5vdykpKQogCi0gICAgZGVmIHRlc3RfcGFyc2VkYXRlX25vbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VkYXRlKCcnKSwgTm9uZSkKKyAgICAjIHBhcnNlZGF0ZSBhbmQgcGFyc2VkYXRlX3R6IHdpbGwgYmVjb21lIGRlcHJlY2F0ZWQgaW50ZXJmYWNlcyBzb21lZGF5CisgICAgZGVmIHRlc3RfcGFyc2VkYXRlX3JldHVybnNfTm9uZV9mb3JfaW52YWxpZF9zdHJpbmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGUoJycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGVfdHooJycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGUoJzAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodXRpbHMucGFyc2VkYXRlX3R6KCcwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZSgnQSBDb21wbGV0ZSBXYXN0ZSBvZiBUaW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZV90eignQSBDb21wbGV0ZSBXYXN0ZSBvZiBUaW1lJykpCisgICAgICAgICMgTm90IGEgcGFydCBvZiB0aGUgc3BlYyBidXQsIGJ1dCB0aGlzIGhhcyBoaXN0b3JpY2FsbHkgd29ya2VkOgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh1dGlscy5wYXJzZWRhdGUoTm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHV0aWxzLnBhcnNlZGF0ZV90eihOb25lKSkKIAogICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9jb21wYWN0KHNlbGYpOgogICAgICAgICAjIFRoZSBGV1MgYWZ0ZXIgdGhlIGNvbW1hIGlzIG9wdGlvbmFsCkBAIC0yNjEwLDYgKzI3NTUsMTMgQEAKICAgICAgICAgICAgKDIwMDIsIDQsIDMsIDE0LCA1OCwgMjYsIDAsIDEsIC0xLCAtMjg4MDApKQogCiAKKyAgICBkZWYgdGVzdF9wYXJzZWRhdGVfYWNjZXB0c190aW1lX3dpdGhfZG90cyhzZWxmKToKKyAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGVxKHV0aWxzLnBhcnNlZGF0ZV90eignNSBGZWIgMjAwMyAxMy40Ny4yNiAtMDgwMCcpLAorICAgICAgICAgICAoMjAwMywgMiwgNSwgMTMsIDQ3LCAyNiwgMCwgMSwgLTEsIC0yODgwMCkpCisgICAgICAgIGVxKHV0aWxzLnBhcnNlZGF0ZV90eignNSBGZWIgMjAwMyAxMy40NyAtMDgwMCcpLAorICAgICAgICAgICAoMjAwMywgMiwgNSwgMTMsIDQ3LCAwLCAwLCAxLCAtMSwgLTI4ODAwKSkKKwogICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV9hY2NlcHRhYmxlX3RvX3RpbWVfZnVuY3Rpb25zKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgdGltZXR1cCA9IHV0aWxzLnBhcnNlZGF0ZSgnNSBGZWIgMjAwMyAxMzo0NzoyNiAtMDgwMCcpCkBAIC0yNjUyLDcgKzI4MDQsMTAgQEAKICAgICBkZWYgdGVzdF9lc2NhcGVfZHVtcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgIHV0aWxzLmZvcm1hdGFkZHIoKCdBIChWZXJ5KSBTaWxseSBQZXJzb24nLCAncGVyc29uQGRvbS5haW4nKSksCi0gICAgICAgICAgICByJyJBIFwoVmVyeVwpIFNpbGx5IFBlcnNvbiIgPHBlcnNvbkBkb20uYWluPicpCisgICAgICAgICAgICByJyJBIChWZXJ5KSBTaWxseSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgdXRpbHMucGFyc2VhZGRyKHInIkEgXChWZXJ5XCkgU2lsbHkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JyksCisgICAgICAgICAgICAoJ0EgKFZlcnkpIFNpbGx5IFBlcnNvbicsICdwZXJzb25AZG9tLmFpbicpKQogICAgICAgICBhID0gcidBIFwoU3BlY2lhbFwpIFBlcnNvbicKICAgICAgICAgYiA9ICdwZXJzb25AZG9tLmFpbicKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5wYXJzZWFkZHIodXRpbHMuZm9ybWF0YWRkcigoYSwgYikpKSwgKGEsIGIpKQpAQCAtMjY2NSw2ICsyODIwLDQ2IEBACiAgICAgICAgIGIgPSAncGVyc29uQGRvbS5haW4nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMucGFyc2VhZGRyKHV0aWxzLmZvcm1hdGFkZHIoKGEsIGIpKSksIChhLCBiKSkKIAorICAgIGRlZiB0ZXN0X3F1b3Rlc191bmljb2RlX25hbWVzKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE2OTA2MDguICBlbWFpbC51dGlscy5mb3JtYXRhZGRyKCkgc2hvdWxkIGJlIHJmYzIwNDcgYXdhcmUuCisgICAgICAgIG5hbWUgPSAiSFx1MDBlNG5zIFdcdTAwZmNyc3QiCisgICAgICAgIGFkZHIgPSAncGVyc29uQGRvbS5haW4nCisgICAgICAgIHV0ZjhfYmFzZTY0ID0gIj0/dXRmLTg/Yj9TTU9rYm5NZ1Y4Tzhjbk4wPz0gPHBlcnNvbkBkb20uYWluPiIKKyAgICAgICAgbGF0aW4xX3F1b3ByaSA9ICI9P2lzby04ODU5LTE/cT9IPUU0bnNfVz1GQ3JzdD89IDxwZXJzb25AZG9tLmFpbj4iCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkcikpLCB1dGY4X2Jhc2U2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKChuYW1lLCBhZGRyKSwgJ2lzby04ODU5LTEnKSwKKyAgICAgICAgICAgIGxhdGluMV9xdW9wcmkpCisKKyAgICBkZWYgdGVzdF9hY2NlcHRzX2FueV9jaGFyc2V0X2xpa2Vfb2JqZWN0KHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE2OTA2MDguICBlbWFpbC51dGlscy5mb3JtYXRhZGRyKCkgc2hvdWxkIGJlIHJmYzIwNDcgYXdhcmUuCisgICAgICAgIG5hbWUgPSAiSFx1MDBlNG5zIFdcdTAwZmNyc3QiCisgICAgICAgIGFkZHIgPSAncGVyc29uQGRvbS5haW4nCisgICAgICAgIHV0ZjhfYmFzZTY0ID0gIj0/dXRmLTg/Yj9TTU9rYm5NZ1Y4Tzhjbk4wPz0gPHBlcnNvbkBkb20uYWluPiIKKyAgICAgICAgZm9vYmFyID0gIkZPT0JBUiIKKyAgICAgICAgY2xhc3MgQ2hhcnNldE1vY2s6CisgICAgICAgICAgICBkZWYgaGVhZGVyX2VuY29kZShzZWxmLCBzdHJpbmcpOgorICAgICAgICAgICAgICAgIHJldHVybiBmb29iYXIKKyAgICAgICAgbW9jayA9IENoYXJzZXRNb2NrKCkKKyAgICAgICAgbW9ja19leHBlY3RlZCA9ICIlcyA8JXM+IiAlIChmb29iYXIsIGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0YWRkcigobmFtZSwgYWRkciksIG1vY2spLCBtb2NrX2V4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdGFkZHIoKG5hbWUsIGFkZHIpLCBDaGFyc2V0KCd1dGYtOCcpKSwKKyAgICAgICAgICAgIHV0ZjhfYmFzZTY0KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyc2V0X2xpa2Vfb2JqZWN0X3JhaXNlc19lcnJvcihzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNjkwNjA4LiAgZW1haWwudXRpbHMuZm9ybWF0YWRkcigpIHNob3VsZCBiZSByZmMyMDQ3IGF3YXJlLgorICAgICAgICBuYW1lID0gIkhcdTAwZTRucyBXXHUwMGZjcnN0IgorICAgICAgICBhZGRyID0gJ3BlcnNvbkBkb20uYWluJworICAgICAgICAjIEEgb2JqZWN0IHdpdGhvdXQgYSBoZWFkZXJfZW5jb2RlIG1ldGhvZDoKKyAgICAgICAgYmFkX2NoYXJzZXQgPSBvYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdXRpbHMuZm9ybWF0YWRkciwgKG5hbWUsIGFkZHIpLAorICAgICAgICAgICAgYmFkX2NoYXJzZXQpCisKKyAgICBkZWYgdGVzdF91bmljb2RlX2FkZHJlc3NfcmFpc2VzX2Vycm9yKHNlbGYpOgorICAgICAgICAjIGlzc3VlIDE2OTA2MDguICBlbWFpbC51dGlscy5mb3JtYXRhZGRyKCkgc2hvdWxkIGJlIHJmYzIwNDcgYXdhcmUuCisgICAgICAgIGFkZHIgPSAncGVyc1x1MDBmNm5AZG9tLmluJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRXJyb3IsIHV0aWxzLmZvcm1hdGFkZHIsIChOb25lLCBhZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLCB1dGlscy5mb3JtYXRhZGRyLCAoIk5hbWUiLCBhZGRyKSkKKwogICAgIGRlZiB0ZXN0X25hbWVfd2l0aF9kb3Qoc2VsZik6CiAgICAgICAgIHggPSAnSm9obiBYLiBEb2UgPGp4ZEBleGFtcGxlLmNvbT4nCiAgICAgICAgIHkgPSAnIkpvaG4gWC4gRG9lIiA8anhkQGV4YW1wbGUuY29tPicKQEAgLTI3MTAsNiArMjkwNSwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnJywgJ21lcndvay53b2sud29rQHhhbXBsZS5jb20nKSwKICAgICAgICAgICAgIHV0aWxzLnBhcnNlYWRkcignbWVyd29rLiB3b2sgLiAgd29rQHhhbXBsZS5jb20nKSkKIAorICAgIGRlZiB0ZXN0X2Zvcm1hdGFkZHJfZG9lc19ub3RfcXVvdGVfcGFyZW5zX2luX3F1b3RlZF9zdHJpbmcoc2VsZik6CisgICAgICAgIGFkZHIgPSAoIidmb29AZXhhbXBsZS5jb20nIChmb29AZXhhbXBsZS5jb20pIiwKKyAgICAgICAgICAgICAgICAnZm9vQGV4YW1wbGUuY29tJykKKyAgICAgICAgYWRkcnN0ciA9ICgnIlwnZm9vQGV4YW1wbGUuY29tXCcgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoZm9vQGV4YW1wbGUuY29tKSIgPGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLnBhcnNlYWRkcihhZGRyc3RyKSwgYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRhZGRyKGFkZHIpLCBhZGRyc3RyKQorCisKICAgICBkZWYgdGVzdF9tdWx0aWxpbmVfZnJvbV9jb21tZW50KHNlbGYpOgogICAgICAgICB4ID0gIiIiXAogRm9vCkBAIC0yOTQ1LDYgKzMxNDksNyBAQAogCiAKIGNsYXNzIFRlc3RQYXJzZXJzKFRlc3RFbWFpbEJhc2UpOgorCiAgICAgZGVmIHRlc3RfaGVhZGVyX3BhcnNlcihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgICMgUGFyc2Ugb25seSB0aGUgaGVhZGVycyBvZiBhIGNvbXBsZXggbXVsdGlwYXJ0IE1JTUUgZG9jdW1lbnQKQEAgLTI5NTYsNiArMzE2MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1zZy5pc19tdWx0aXBhcnQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLmdldF9wYXlsb2FkKCksIHN0cikpCiAKKyAgICBkZWYgdGVzdF9ieXRlc19oZWFkZXJfcGFyc2VyKHNlbGYpOgorICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKKyAgICAgICAgIyBQYXJzZSBvbmx5IHRoZSBoZWFkZXJzIG9mIGEgY29tcGxleCBtdWx0aXBhcnQgTUlNRSBkb2N1bWVudAorICAgICAgICB3aXRoIG9wZW5maWxlKCdtc2dfMDIudHh0JywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBtc2cgPSBlbWFpbC5wYXJzZXIuQnl0ZXNIZWFkZXJQYXJzZXIoKS5wYXJzZShmcCkKKyAgICAgICAgZXEobXNnWydmcm9tJ10sICdwcHAtcmVxdWVzdEB6enoub3JnJykKKyAgICAgICAgZXEobXNnWyd0byddLCAncHBwQHp6ei5vcmcnKQorICAgICAgICBlcShtc2cuZ2V0X2NvbnRlbnRfdHlwZSgpLCAnbXVsdGlwYXJ0L21peGVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtc2cuaXNfbXVsdGlwYXJ0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1zZy5nZXRfcGF5bG9hZCgpLCBzdHIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLCBieXRlcykpCisKICAgICBkZWYgdGVzdF93aGl0ZXNwYWNlX2NvbnRpbnVhdGlvbihzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgICMgVGhpcyBtZXNzYWdlIGNvbnRhaW5zIGEgbGluZSBhZnRlciB0aGUgU3ViamVjdDogaGVhZGVyIHRoYXQgaGFzIG9ubHkKQEAgLTMxNzgsMTUgKzMzOTUsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoZGVjb2RlPVRydWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ3DDtnN0w6FsXG4nLmVuY29kZSgndXRmLTgnKSkKIAorICAgICMgdGVzdF9kZWZlY3RfaGFuZGxpbmc6dGVzdF9pbnZhbGlkX2NoYXJzX2luX2Jhc2U2NF9wYXlsb2FkCiAgICAgZGVmIHRlc3RfOGJpdF9pbl9iYXNlNjRfYm9keShzZWxmKToKLSAgICAgICAgIyBTdGlja2luZyBhbiA4Yml0IGJ5dGUgaW4gYSBiYXNlNjQgYmxvY2sgbWFrZXMgaXQgdW5kZWNvZGFibGUgYnkKLSAgICAgICAgIyBub3JtYWwgbWVhbnMsIHNvIHRoZSBibG9jayBpcyByZXR1cm5lZCB1bmRlY29kZWQsIGJ1dCBhcyBieXRlcy4KKyAgICAgICAgIyBJZiB3ZSBnZXQgOGJpdCBieXRlcyBpbiBhIGJhc2U2NCBib2R5LCB3ZSBjYW4ganVzdCBpZ25vcmUgdGhlbQorICAgICAgICAjIGFzIGJlaW5nIG91dHNpZGUgdGhlIGJhc2U2NCBhbHBoYWJldCBhbmQgZGVjb2RlIGFueXdheS4gIEJ1dAorICAgICAgICAjIHdlIHJlZ2lzdGVyIGEgZGVmZWN0LgogICAgICAgICBtID0gc2VsZi5ib2R5dGVzdF9tc2cuZm9ybWF0KGNoYXJzZXQ9J3V0Zi04JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGU9J2Jhc2U2NCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keWxpbmU9J2NNTzJjM1JoYkHDoT0nKS5lbmNvZGUoJ3V0Zi04JykKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKG0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKGRlY29kZT1UcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnY01PMmMzUmhiQcOhPVxuJy5lbmNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3DDtnN0YWwnLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZy5kZWZlY3RzWzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0KQogCiAgICAgZGVmIHRlc3RfOGJpdF9pbl91dWVuY29kZV9ib2R5KHNlbGYpOgogICAgICAgICAjIFN0aWNraW5nIGFuIDhiaXQgYnl0ZSBpbiBhIHV1ZW5jb2RlIGJsb2NrIG1ha2VzIGl0IHVuZGVjb2RhYmxlIGJ5CkBAIC0zMjY3LDYgKzM0ODgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpLCAidGV4dCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X3N1YnR5cGUoKSwgInBsXHVGRkZEaW4iKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5ub25fYXNjaWlfaW5fcGFyYW1zCiAgICAgZGVmIHRlc3RfZ2V0X3BhcmFtc193aXRoXzhiaXQoc2VsZik6CiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcygKICAgICAgICAgICAgICdYLUhlYWRlcjogZm9vPVx4YTduZTsgYlx4YTdyPXR3bzsgYmF6PXRocmVlXG4nLmVuY29kZSgnbGF0aW4tMScpKQpAQCAtMzI3Niw2ICszNDk4LDcgQEAKICAgICAgICAgIyBYWFg6IHNvbWVkYXkgeW91IG1pZ2h0IGJlIGFibGUgdG8gZ2V0ICdiXHhhN3InLCBmb3Igbm93IHlvdSBjYW4ndC4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BhcmFtKCdiXHhhN3InLCBoZWFkZXI9J3gtaGVhZGVyJyksIE5vbmUpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLm5vbl9hc2NpaV9pbl9yZmMyMjMxX3ZhbHVlCiAgICAgZGVmIHRlc3RfZ2V0X3JmYzIyMzFfcGFyYW1zX3dpdGhfOGJpdChzZWxmKToKICAgICAgICAgbXNnID0gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKHRleHR3cmFwLmRlZGVudCgiIiJcCiAgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7CkBAIC0zNTIxLDEyICszNzQ0LDcgQEAKICAgICAgICAgYiA9IEJ5dGVzSU8oKQogICAgICAgICBnID0gZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yKGIsIG1heGhlYWRlcmxlbj0wKQogICAgICAgICBnLmZsYXR0ZW4obXNnLCB1bml4ZnJvbT11bml4ZnJvbSwgbGluZXNlcD1zZWxmLmxpbmVzZXApCi0gICAgICAgIHNlbGYuYXNzZXJ0Qnl0ZVN0cmluZ3NFcXVhbChkYXRhLCBiLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgYXNzZXJ0Qnl0ZVN0cmluZ3NFcXVhbChzZWxmLCBzdHIxLCBzdHIyKToKLSAgICAgICAgIyBOb3QgdXNpbmcgc2VsZi5ibGluZXNlcCBoZXJlIGlzIGludGVudGlvbmFsLiAgVGhpcyB3YXkgdGhlIG91dHB1dAotICAgICAgICAjIGlzIG1vcmUgdXNlZnVsIHdoZW4gdGhlIGZhaWx1cmUgcmVzdWx0cyBpbiBtaXhlZCBsaW5lIGVuZGluZ3MuCi0gICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKHN0cjEuc3BsaXQoYidcbicpLCBzdHIyLnNwbGl0KGInXG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiLmdldHZhbHVlKCkpCiAKIAogY2xhc3MgVGVzdEJ5dGVzR2VuZXJhdG9ySWRlbXBvdGVudE5MKEJhc2VUZXN0Qnl0ZXNHZW5lcmF0b3JJZGVtcG90ZW50LApAQCAtNDI5MiwxMSArNDUxMCwxMSBAQAogICAgICAgICBoID0gbWFrZV9oZWFkZXIoZGVjb2RlX2hlYWRlcihzKSkKICAgICAgICAgZXEoaC5lbmNvZGUoKSwgcykKIAotICAgIGRlZiB0ZXN0X3doaXRlc3BhY2VfZWF0ZXIoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpdGVzcGFjZV9rZWVwZXIoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBzID0gJ1N1YmplY3Q6ID0/a29pOC1yP2I/OE5MUDE4WFN5OEVnenNFZ3hzbk93Y3pZenRrPT89ID0/a29pOC1yP3E/PUNBPz0genouJwogICAgICAgICBwYXJ0cyA9IGRlY29kZV9oZWFkZXIocykKLSAgICAgICAgZXEocGFydHMsIFsoYidTdWJqZWN0OicsIE5vbmUpLCAoYidceGYwXHhkMlx4Y2ZceGQ3XHhjNVx4ZDJceGNiXHhjMSBceGNlXHhjMSBceGM2XHhjOVx4Y2VceGMxXHhjY1x4ZDhceGNlXHhkOVx4Y2EnLCAna29pOC1yJyksIChiJ3p6LicsIE5vbmUpXSkKKyAgICAgICAgZXEocGFydHMsIFsoYidTdWJqZWN0OiAnLCBOb25lKSwgKGInXHhmMFx4ZDJceGNmXHhkN1x4YzVceGQyXHhjYlx4YzEgXHhjZVx4YzEgXHhjNlx4YzlceGNlXHhjMVx4Y2NceGQ4XHhjZVx4ZDlceGNhJywgJ2tvaTgtcicpLCAoYicgenouJywgTm9uZSldKQogICAgICAgICBoZHIgPSBtYWtlX2hlYWRlcihwYXJ0cykKICAgICAgICAgZXEoaGRyLmVuY29kZSgpLAogICAgICAgICAgICAnU3ViamVjdDogPT9rb2k4LXI/Yj84TkxQMThYU3k4RWd6c0VneHNuT3djell6dG5LPz0genouJykKQEAgLTQzMjYsNiArNDU0NCw5IEBACiAKICMgVGVzdCBSRkMgMjIzMSBoZWFkZXIgcGFyYW1ldGVycyAoZW4vZGUpY29kaW5nCiBjbGFzcyBUZXN0UkZDMjIzMShUZXN0RW1haWxCYXNlKToKKworICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX3dpdGhfZG91YmxlX3F1b3RlcworICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5zaWRlX2RvdWJsZV9xdW90ZXMKICAgICBkZWYgdGVzdF9nZXRfcGFyYW0oc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18yOS50eHQnKQpAQCAtNDQxMSwxMSArNDYzMiwxNSBAQAogLU1lCiAiIiIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF9jaGFyc2V0CisgICAgIyBJIGNoYW5nZWQgdGhlIGNoYXJzZXQgbmFtZSwgdGhvdWdoLCBiZWNhdXNlIHRoZSBvbmUgaW4gdGhlIGZpbGUgaXNuJ3QKKyAgICAjIGEgbGVnYWwgY2hhcnNldCBuYW1lLiAgU2hvdWxkIGFkZCBhIHRlc3QgZm9yIGFuIGlsbGVnYWwgY2hhcnNldC4KICAgICBkZWYgdGVzdF9yZmMyMjMxX2dldF9jb250ZW50X2NoYXJzZXQoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtc2cgPSBzZWxmLl9tc2dvYmooJ21zZ18zMi50eHQnKQogICAgICAgICBlcShtc2cuZ2V0X2NvbnRlbnRfY2hhcnNldCgpLCAndXMtYXNjaWknKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX2VuY29kZWRfbm9fZG91YmxlX3F1b3RlcwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfcGFyc2VfcmZjX3F1b3Rpbmcoc2VsZik6CiAgICAgICAgIG0gPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAogICAgICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDQyOSw2ICs0NjU0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG1zZy5hc19zdHJpbmcoKSkKIAorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9lbmNvZGVkX3dpdGhfZG91YmxlX3F1b3RlcwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfcGFyc2VfZXh0cmFfcXVvdGluZyhzZWxmKToKICAgICAgICAgbSA9IHRleHR3cmFwLmRlZGVudCgnJydcCiAgICAgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDQyLDYgKzQ2NjgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQgbm90LnBkZicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgbXNnLmFzX3N0cmluZygpKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXQKKyAgICAjIGJ1dCBuZXcgdGVzdCB1c2VzICowKiBiZWNhdXNlIG90aGVyd2lzZSBsYW5nL2NoYXJzZXQgaXMgbm90IHZhbGlkLgorICAgICMgdGVzdF9oZWFkZXJyZWdpc3RyeS5UZXN0Q29udGVudFR5cGVIZWFkZXIucmZjMjIzMV9zZWdtZW50ZWRfbm9ybWFsX3ZhbHVlcwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfbm9fbGFuZ3VhZ2Vfb3JfY2hhcnNldChzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKQEAgLTQ0NTYsNiArNDY4NSw3IEBACiAgICAgICAgICAgICBwYXJhbSwKICAgICAgICAgICAgICdmaWxlX19fX0NfX0RPQ1VNRU5UU18yMEFORF8yMFNFVFRJTkdTX0ZBQklFTl9MT0NBTF8yMFNFVFRJTkdTX1RFTVBfbnNtYWlsLmh0bScpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF9ub19jaGFyc2V0CiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0X2luX2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBtID0gJycnXAogQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lOwpAQCAtNDQ2OCw2ICs0Njk4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X2ZpbGVuYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJykKIAorICAgICMgRHVwbGljYXRlIG9mIHByZXZpb3VzIHRlc3Q/CiAgICAgZGVmIHRlc3RfcmZjMjIzMV9ub19sYW5ndWFnZV9vcl9jaGFyc2V0X2luX2ZpbGVuYW1lX2VuY29kZWQoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NDgwLDYgKzQ3MTEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZy5nZXRfZmlsZW5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3BhcnRseV9lbmNvZGVkLAorICAgICMgYnV0IHRoZSB0ZXN0IGJlbG93IGlzIHdyb25nICh0aGUgZmlyc3QgcGFydCBzaG91bGQgYmUgZGVjb2RlZCkuCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9wYXJ0bHlfZW5jb2RlZChzZWxmKToKICAgICAgICAgbSA9ICcnJ1wKIENvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsKQEAgLTQ1MzEsNiArNDc2NCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9jb250ZW50X2NoYXJzZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3Vua25vd25fY2hhcnNldF90cmVhdGVkX2FzX2FzY2lpCiAgICAgZGVmIHRlc3RfcmZjMjIzMV9iYWRfZW5jb2RpbmdfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIG0gPSAnJydcCiBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7CkBAIC00NTk3LDYgKzQ4MzEsNyBAQAogICAgICAgICBlcShsYW5ndWFnZSwgTm9uZSkKICAgICAgICAgZXEocywgIkZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbnNpZGVfZG91YmxlX3F1b3RlcwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfc2luZ2xlX3RpY2tfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIG0gPSAiIiJcCiBDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vOyBuYW1lKjA9XCJGcmFuaydzXCI7IG5hbWUqMT1cIiBEb2N1bWVudFwiCkBAIC00NjA3LDYgKzQ4NDIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UocGFyYW0sIHR1cGxlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbSwgIkZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZV9pbl92YWx1ZV93aXRoX2NoYXJzZXRfYW5kX2xhbmcKICAgICBkZWYgdGVzdF9yZmMyMjMxX3RpY2tfYXR0YWNrX2V4dGVuZGVkKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ2MjAsNiArNDg1Niw3IEBACiAgICAgICAgIGVxKGxhbmd1YWdlLCAnZW4tdXMnKQogICAgICAgICBlcShzLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfc2luZ2xlX3F1b3RlX2luX25vbl9lbmNvZGVkX3ZhbHVlCiAgICAgZGVmIHRlc3RfcmZjMjIzMV90aWNrX2F0dGFjayhzZWxmKToKICAgICAgICAgbSA9ICIiIlwKIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287CkBAIC00NjMxLDYgKzQ4NjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UocGFyYW0sIHR1cGxlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbSwgInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3MgRG9jdW1lbnQiKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3NpbmdsZV9xdW90ZXNfaW5zaWRlX3F1b3RlcwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfbm9fZXh0ZW5kZWRfdmFsdWVzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgbSA9ICIiIlwKQEAgLTQ2NDAsNiArNDg3OCw3IEBACiAgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcobSkKICAgICAgICAgZXEobXNnLmdldF9wYXJhbSgnbmFtZScpLCAiRnJhbmsncyBEb2N1bWVudCIpCiAKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfZW5jb2RlZF90aGVuX3VuZW5jb2RlZF9zZWdtZW50cwogICAgIGRlZiB0ZXN0X3JmYzIyMzFfZW5jb2RlZF90aGVuX3VuZW5jb2RlZF9zZWdtZW50cyhzZWxmKToKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIG0gPSAiIiJcCkBAIC00NjU1LDYgKzQ4OTQsOCBAQAogICAgICAgICBlcShsYW5ndWFnZSwgJ2VuLXVzJykKICAgICAgICAgZXEocywgJ015IERvY3VtZW50IEZvciBZb3UnKQogCisgICAgIyB0ZXN0X2hlYWRlcnJlZ2lzdHJ5LlRlc3RDb250ZW50VHlwZUhlYWRlci5yZmMyMjMxX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMKKyAgICAjIHRlc3RfaGVhZGVycmVnaXN0cnkuVGVzdENvbnRlbnRUeXBlSGVhZGVyLnJmYzIyMzFfcXVvdGVkX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMKICAgICBkZWYgdGVzdF9yZmMyMjMxX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMoc2VsZik6CiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbAogICAgICAgICBtID0gIiIiXApAQCAtNDY3OCw3ICs0OTE5LDcgQEAKIGNsYXNzIFRlc3RTaWduZWQoVGVzdEVtYWlsQmFzZSk6CiAKICAgICBkZWYgX21zZ19hbmRfb2JqKHNlbGYsIGZpbGVuYW1lKToKLSAgICAgICAgd2l0aCBvcGVuZmlsZShmaW5kZmlsZShmaWxlbmFtZSkpIGFzIGZwOgorICAgICAgICB3aXRoIG9wZW5maWxlKGZpbGVuYW1lKSBhcyBmcDoKICAgICAgICAgICAgIG9yaWdpbmFsID0gZnAucmVhZCgpCiAgICAgICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKG9yaWdpbmFsKQogICAgICAgICByZXR1cm4gb3JpZ2luYWwsIG1zZwpAQCAtNDcxMCwyMyArNDk1MSw1IEBACiAKIAogCi1kZWYgX3Rlc3RjbGFzc2VzKCk6Ci0gICAgbW9kID0gc3lzLm1vZHVsZXNbX19uYW1lX19dCi0gICAgcmV0dXJuIFtnZXRhdHRyKG1vZCwgbmFtZSkgZm9yIG5hbWUgaW4gZGlyKG1vZCkgaWYgbmFtZS5zdGFydHN3aXRoKCdUZXN0JyldCi0KLQotZGVmIHN1aXRlKCk6Ci0gICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQotICAgIGZvciB0ZXN0Y2xhc3MgaW4gX3Rlc3RjbGFzc2VzKCk6Ci0gICAgICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QubWFrZVN1aXRlKHRlc3RjbGFzcykpCi0gICAgcmV0dXJuIHN1aXRlCi0KLQotZGVmIHRlc3RfbWFpbigpOgotICAgIGZvciB0ZXN0Y2xhc3MgaW4gX3Rlc3RjbGFzc2VzKCk6Ci0gICAgICAgIHJ1bl91bml0dGVzdCh0ZXN0Y2xhc3MpCi0KLQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oZGVmYXVsdFRlc3Q9J3N1aXRlJykKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MTc0MDgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0wLDAgKzEsMTk5IEBACitpbXBvcnQgaW8KK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsIGltcG9ydCBtZXNzYWdlX2Zyb21fc3RyaW5nLCBtZXNzYWdlX2Zyb21fYnl0ZXMKK2Zyb20gZW1haWwuZ2VuZXJhdG9yIGltcG9ydCBHZW5lcmF0b3IsIEJ5dGVzR2VuZXJhdG9yCitmcm9tIGVtYWlsIGltcG9ydCBwb2xpY3kKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0R2VuZXJhdG9yQmFzZToKKworICAgIHBvbGljeSA9IHBvbGljeS5kZWZhdWx0CisKKyAgICBkZWYgbXNnbWFrZXIoc2VsZiwgbXNnLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIHBvbGljeSA9IHNlbGYucG9saWN5IGlmIHBvbGljeSBpcyBOb25lIGVsc2UgcG9saWN5CisgICAgICAgIHJldHVybiBzZWxmLm1zZ2Z1bmMobXNnLCBwb2xpY3k9cG9saWN5KQorCisgICAgcmVmb2xkX2xvbmdfZXhwZWN0ZWQgPSB7CisgICAgICAgIDA6IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogd2hvbV9pdF9tYXlfY29uY2VybkBleGFtcGxlLmNvbQorICAgICAgICAgICAgRnJvbTogbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb20KKyAgICAgICAgICAgIFN1YmplY3Q6IFdlIHRoZSB3aWxsaW5nIGxlZCBieSB0aGUgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUKKyAgICAgICAgICAgICBpbXBvc3NpYmxlIGZvciB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZSBkb25lIHNvIG11Y2ggZm9yIHNvIGxvbmcgd2l0aCBzbyBsaXR0bGUKKyAgICAgICAgICAgICB3ZSBhcmUgbm93IHF1YWxpZmllZCB0byBkbyBhbnl0aGluZyB3aXRoIG5vdGhpbmcuCisKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgICAgICIiIiksCisgICAgICAgICMgRnJvbSBpcyB3cmFwcGVkIGJlY2F1c2Ugd3JhcHBlZCBpdCBmaXRzIGluIDQwLgorICAgICAgICA0MDogdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tCisgICAgICAgICAgICBGcm9tOgorICAgICAgICAgICAgIG5vYm9keV95b3Vfd2FudF90b19rbm93QGV4YW1wbGUuY29tCisgICAgICAgICAgICBTdWJqZWN0OiBXZSB0aGUgd2lsbGluZyBsZWQgYnkgdGhlCisgICAgICAgICAgICAgdW5rbm93aW5nIGFyZSBkb2luZyB0aGUgaW1wb3NzaWJsZSBmb3IKKyAgICAgICAgICAgICB0aGUgdW5ncmF0ZWZ1bC4gV2UgaGF2ZSBkb25lIHNvIG11Y2gKKyAgICAgICAgICAgICBmb3Igc28gbG9uZyB3aXRoIHNvIGxpdHRsZSB3ZSBhcmUgbm93CisgICAgICAgICAgICAgcXVhbGlmaWVkIHRvIGRvIGFueXRoaW5nIHdpdGggbm90aGluZy4KKworICAgICAgICAgICAgTm9uZQorICAgICAgICAgICAgIiIiKSwKKyAgICAgICAgIyBOZWl0aGVyIHRvIG5vciBmcm9tIGZpdCBldmVuIGlmIHB1dCBvbiBhIG5ldyBsaW5lLAorICAgICAgICAjIHNvIHdlIGxlYXZlIHRoZW0gc3RpY2tpbmcgb3V0IG9uIHRoZSBmaXJzdCBsaW5lLgorICAgICAgICAyMDogdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgIFRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tCisgICAgICAgICAgICBGcm9tOiBub2JvZHlfeW91X3dhbnRfdG9fa25vd0BleGFtcGxlLmNvbQorICAgICAgICAgICAgU3ViamVjdDogV2UgdGhlCisgICAgICAgICAgICAgd2lsbGluZyBsZWQgYnkgdGhlCisgICAgICAgICAgICAgdW5rbm93aW5nIGFyZSBkb2luZworICAgICAgICAgICAgIHRoZSBpbXBvc3NpYmxlIGZvcgorICAgICAgICAgICAgIHRoZSB1bmdyYXRlZnVsLiBXZQorICAgICAgICAgICAgIGhhdmUgZG9uZSBzbyBtdWNoCisgICAgICAgICAgICAgZm9yIHNvIGxvbmcgd2l0aCBzbworICAgICAgICAgICAgIGxpdHRsZSB3ZSBhcmUgbm93CisgICAgICAgICAgICAgcXVhbGlmaWVkIHRvIGRvCisgICAgICAgICAgICAgYW55dGhpbmcgd2l0aAorICAgICAgICAgICAgIG5vdGhpbmcuCisKKyAgICAgICAgICAgIE5vbmUKKyAgICAgICAgICAgICIiIiksCisgICAgICAgIH0KKyAgICByZWZvbGRfbG9uZ19leHBlY3RlZFsxMDBdID0gcmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0KKworICAgIHJlZm9sZF9hbGxfZXhwZWN0ZWQgPSByZWZvbGRfbG9uZ19leHBlY3RlZC5jb3B5KCkKKyAgICByZWZvbGRfYWxsX2V4cGVjdGVkWzBdID0gKAorICAgICAgICAgICAgIlRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tXG4iCisgICAgICAgICAgICAiRnJvbTogbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJTdWJqZWN0OiBXZSB0aGUgd2lsbGluZyBsZWQgYnkgdGhlIHVua25vd2luZyBhcmUgZG9pbmcgdGhlICIKKyAgICAgICAgICAgICAgImltcG9zc2libGUgZm9yIHRoZSB1bmdyYXRlZnVsLiBXZSBoYXZlIGRvbmUgc28gbXVjaCBmb3IgIgorICAgICAgICAgICAgICAic28gbG9uZyB3aXRoIHNvIGxpdHRsZSB3ZSBhcmUgbm93IHF1YWxpZmllZCB0byBkbyBhbnl0aGluZyAiCisgICAgICAgICAgICAgICJ3aXRoIG5vdGhpbmcuXG4iCisgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgIk5vbmVcbiIpCisgICAgcmVmb2xkX2FsbF9leHBlY3RlZFsxMDBdID0gKAorICAgICAgICAgICAgIlRvOiB3aG9tX2l0X21heV9jb25jZXJuQGV4YW1wbGUuY29tXG4iCisgICAgICAgICAgICAiRnJvbTogbm9ib2R5X3lvdV93YW50X3RvX2tub3dAZXhhbXBsZS5jb21cbiIKKyAgICAgICAgICAgICJTdWJqZWN0OiBXZSB0aGUgd2lsbGluZyBsZWQgYnkgdGhlIHVua25vd2luZyBhcmUgZG9pbmcgdGhlICIKKyAgICAgICAgICAgICAgICAiaW1wb3NzaWJsZSBmb3IgdGhlIHVuZ3JhdGVmdWwuIFdlIGhhdmVcbiIKKyAgICAgICAgICAgICAgIiBkb25lIHNvIG11Y2ggZm9yIHNvIGxvbmcgd2l0aCBzbyBsaXR0bGUgd2UgYXJlIG5vdyBxdWFsaWZpZWQgIgorICAgICAgICAgICAgICAgICJ0byBkbyBhbnl0aGluZyB3aXRoIG5vdGhpbmcuXG4iCisgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgIk5vbmVcbiIpCisKKyAgICBsZW5ndGhfcGFyYW1zID0gW24gZm9yIG4gaW4gcmVmb2xkX2xvbmdfZXhwZWN0ZWRdCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heGhlYWRlcmxlbl9wYXJhbWV0ZXIoc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBtYXhoZWFkZXJsZW49biwgcG9saWN5PXNlbGYucG9saWN5KQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heF9saW5lX2xlbmd0aF9wb2xpY3koc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPW4pKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFtuXSkpCisKKyAgICBkZWYgbGVuZ3RoX2FzX21heGhlYWRlcmxlbl9wYXJtX292ZXJyaWRlc19wb2xpY3koc2VsZiwgbik6CisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc2VsZi5yZWZvbGRfbG9uZ19leHBlY3RlZFswXSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBtYXhoZWFkZXJsZW49biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKG1heF9saW5lX2xlbmd0aD0xMCkpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkW25dKSkKKworICAgIGRlZiBsZW5ndGhfYXNfbWF4X2xpbmVfbGVuZ3RoX3dpdGhfcmVmb2xkX25vbmVfZG9lc19ub3RfZm9sZChzZWxmLCBuKToKKyAgICAgICAgbXNnID0gc2VsZi5tc2dtYWtlcihzZWxmLnR5cChzZWxmLnJlZm9sZF9sb25nX2V4cGVjdGVkWzBdKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShyZWZvbGRfc291cmNlPSdub25lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9saW5lX2xlbmd0aD1uKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorCisgICAgZGVmIGxlbmd0aF9hc19tYXhfbGluZV9sZW5ndGhfd2l0aF9yZWZvbGRfYWxsX2ZvbGRzKHNlbGYsIG4pOgorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNlbGYucmVmb2xkX2xvbmdfZXhwZWN0ZWRbMF0pKQorICAgICAgICBzID0gc2VsZi5pb2NsYXNzKCkKKyAgICAgICAgZyA9IHNlbGYuZ2VuY2xhc3MocywgcG9saWN5PXNlbGYucG9saWN5LmNsb25lKHJlZm9sZF9zb3VyY2U9J2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfbGluZV9sZW5ndGg9bikpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChzZWxmLnJlZm9sZF9hbGxfZXhwZWN0ZWRbbl0pKQorCisgICAgZGVmIHRlc3RfY3JsZl9jb250cm9sX3ZpYV9wb2xpY3koc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICJTdWJqZWN0OiB0ZXN0XHJcblxyXG50ZXN0IGJvZHlcclxuIgorICAgICAgICBleHBlY3RlZCA9IHNvdXJjZQorICAgICAgICBtc2cgPSBzZWxmLm1zZ21ha2VyKHNlbGYudHlwKHNvdXJjZSkpCisgICAgICAgIHMgPSBzZWxmLmlvY2xhc3MoKQorICAgICAgICBnID0gc2VsZi5nZW5jbGFzcyhzLCBwb2xpY3k9cG9saWN5LlNNVFApCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCBzZWxmLnR5cChleHBlY3RlZCkpCisKKyAgICBkZWYgdGVzdF9mbGF0dGVuX2xpbmVzZXBfb3ZlcnJpZGVzX3BvbGljeShzZWxmKToKKyAgICAgICAgc291cmNlID0gIlN1YmplY3Q6IHRlc3RcblxudGVzdCBib2R5XG4iCisgICAgICAgIGV4cGVjdGVkID0gc291cmNlCisgICAgICAgIG1zZyA9IHNlbGYubXNnbWFrZXIoc2VsZi50eXAoc291cmNlKSkKKyAgICAgICAgcyA9IHNlbGYuaW9jbGFzcygpCisgICAgICAgIGcgPSBzZWxmLmdlbmNsYXNzKHMsIHBvbGljeT1wb2xpY3kuU01UUCkKKyAgICAgICAgZy5mbGF0dGVuKG1zZywgbGluZXNlcD0nXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgc2VsZi50eXAoZXhwZWN0ZWQpKQorCisKK2NsYXNzIFRlc3RHZW5lcmF0b3IoVGVzdEdlbmVyYXRvckJhc2UsIFRlc3RFbWFpbEJhc2UpOgorCisgICAgbXNnZnVuYyA9IHN0YXRpY21ldGhvZChtZXNzYWdlX2Zyb21fc3RyaW5nKQorICAgIGdlbmNsYXNzID0gR2VuZXJhdG9yCisgICAgaW9jbGFzcyA9IGlvLlN0cmluZ0lPCisgICAgdHlwID0gc3RyCisKKworY2xhc3MgVGVzdEJ5dGVzR2VuZXJhdG9yKFRlc3RHZW5lcmF0b3JCYXNlLCBUZXN0RW1haWxCYXNlKToKKworICAgIG1zZ2Z1bmMgPSBzdGF0aWNtZXRob2QobWVzc2FnZV9mcm9tX2J5dGVzKQorICAgIGdlbmNsYXNzID0gQnl0ZXNHZW5lcmF0b3IKKyAgICBpb2NsYXNzID0gaW8uQnl0ZXNJTworICAgIHR5cCA9IGxhbWJkYSBzZWxmLCB4OiB4LmVuY29kZSgnYXNjaWknKQorCisgICAgZGVmIHRlc3RfY3RlX3R5cGVfN2JpdF9oYW5kbGVzX3Vua25vd25fOGJpdChzZWxmKToKKyAgICAgICAgc291cmNlID0gKCJTdWJqZWN0OiBNYWludGVuYW50IGplIHZvdXMgcHLDqXNlbnRlIG1vbiAiCisgICAgICAgICAgICAgICAgICJjb2xsw6hndWVcblxuIikuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIGV4cGVjdGVkID0gKCdTdWJqZWN0OiBNYWludGVuYW50IGplIHZvdXMgPT91bmtub3duLThiaXQ/cT8nCisgICAgICAgICAgICAgICAgICAgICdwcj1DMz1BOXNlbnRlX21vbl9jb2xsPUMzPUE4Z3VlPz1cblxuJykuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIG1zZyA9IG1lc3NhZ2VfZnJvbV9ieXRlcyhzb3VyY2UpCisgICAgICAgIHMgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShjdGVfdHlwZT0nN2JpdCcpKQorICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9jdGVfdHlwZV83Yml0X3RyYW5zZm9ybXNfOGJpdF9jdGUoc2VsZik6CisgICAgICAgIHNvdXJjZSA9IHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBGcm9tOiBmb29AYmFyLmNvbQorICAgICAgICAgICAgVG86IERpbnNkYWxlCisgICAgICAgICAgICBTdWJqZWN0OiBOdWRnZSBudWRnZSwgd2luaywgd2luaworICAgICAgICAgICAgTWltZS1WZXJzaW9uOiAxLjAKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0ibGF0aW4tMSIKKyAgICAgICAgICAgIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworICAgICAgICAgICAgb2ggbMOgIGzDoCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8KKyAgICAgICAgICAgICIiIikuZW5jb2RlKCdsYXRpbjEnKQorICAgICAgICBtc2cgPSBtZXNzYWdlX2Zyb21fYnl0ZXMoc291cmNlKQorICAgICAgICBleHBlY3RlZCA9ICB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgRnJvbTogZm9vQGJhci5jb20KKyAgICAgICAgICAgIFRvOiBEaW5zZGFsZQorICAgICAgICAgICAgU3ViamVjdDogTnVkZ2UgbnVkZ2UsIHdpbmssIHdpbmsKKyAgICAgICAgICAgIE1pbWUtVmVyc2lvbjogMS4wCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Imlzby04ODU5LTEiCisgICAgICAgICAgICBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCisKKyAgICAgICAgICAgIG9oIGw9RTAgbD1FMCwga25vdyB3aGF0IEkgbWVhbiwga25vdyB3aGF0IEkgbWVhbj8KKyAgICAgICAgICAgICIiIikuZW5jb2RlKCdhc2NpaScpCisgICAgICAgIHMgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKHMsIHBvbGljeT1zZWxmLnBvbGljeS5jbG9uZShjdGVfdHlwZT0nN2JpdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNlcD0nXG4nKSkKKyAgICAgICAgZy5mbGF0dGVuKG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhODFmMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQpAQCAtMCwwICsxLDE1MTUgQEAKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IGVycm9ycworZnJvbSBlbWFpbCBpbXBvcnQgcG9saWN5Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKK2Zyb20gZW1haWwgaW1wb3J0IGhlYWRlcnJlZ2lzdHJ5Citmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzLCBHcm91cAorCisKK0RJVFRPID0gb2JqZWN0KCkKKworCitjbGFzcyBUZXN0SGVhZGVyUmVnaXN0cnkoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgdGVzdF9hcmJpdHJhcnlfbmFtZV91bnN0cnVjdHVyZWQoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSgpCisgICAgICAgIGggPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgZGVmIHRlc3RfbmFtZV9jYXNlX2lnbm9yZWQoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSgpCisgICAgICAgICMgV2hpdGVib3ggY2hlY2sgdGhhdCB0ZXN0IGlzIHZhbGlkCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ1N1YmplY3QnLCBmYWN0b3J5LnJlZ2lzdHJ5KQorICAgICAgICBoID0gZmFjdG9yeSgnU3ViamVjdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBjbGFzcyBGb29CYXNlOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVmYXVsdF9iYXNlX2NsYXNzKHNlbGYpOgorICAgICAgICBmYWN0b3J5ID0gaGVhZGVycmVnaXN0cnkuSGVhZGVyUmVnaXN0cnkoYmFzZV9jbGFzcz1zZWxmLkZvb0Jhc2UpCisgICAgICAgIGggPSBmYWN0b3J5KCdmb29iYXInLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvb0Jhc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBjbGFzcyBGb29EZWZhdWx0OgorICAgICAgICBwYXJzZSA9IGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlci5wYXJzZQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVmYXVsdF9jbGFzcyhzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KGRlZmF1bHRfY2xhc3M9c2VsZi5Gb29EZWZhdWx0KQorICAgICAgICBoID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHNlbGYuRm9vRGVmYXVsdCkKKworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2RlZmF1bHRfY2xhc3Nfb25seV9vdmVycmlkZXNfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KGRlZmF1bHRfY2xhc3M9c2VsZi5Gb29EZWZhdWx0KQorICAgICAgICBoID0gZmFjdG9yeSgnc3ViamVjdCcsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIpCisKKyAgICBkZWYgdGVzdF9kb250X3VzZV9kZWZhdWx0X21hcChzZWxmKToKKyAgICAgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KHVzZV9kZWZhdWx0X21hcD1GYWxzZSkKKyAgICAgICAgaCA9IGZhY3RvcnkoJ3N1YmplY3QnLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5CYXNlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgZGVmIHRlc3RfbWFwX3RvX3R5cGUoc2VsZik6CisgICAgICAgIGZhY3RvcnkgPSBoZWFkZXJyZWdpc3RyeS5IZWFkZXJSZWdpc3RyeSgpCisgICAgICAgIGgxID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBmYWN0b3J5Lm1hcF90b190eXBlKCdmb29iYXInLCBoZWFkZXJyZWdpc3RyeS5VbmlxdWVVbnN0cnVjdHVyZWRIZWFkZXIpCisgICAgICAgIGgyID0gZmFjdG9yeSgnZm9vYmFyJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaDEsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMSwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaDIsIGhlYWRlcnJlZ2lzdHJ5LkJhc2VIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoMiwgaGVhZGVycmVnaXN0cnkuVW5pcXVlVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisKK2NsYXNzIFRlc3RIZWFkZXJCYXNlKFRlc3RFbWFpbEJhc2UpOgorCisgICAgZmFjdG9yeSA9IGhlYWRlcnJlZ2lzdHJ5LkhlYWRlclJlZ2lzdHJ5KCkKKworICAgIGRlZiBtYWtlX2hlYWRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIHJldHVybiBzZWxmLmZhY3RvcnkobmFtZSwgdmFsdWUpCisKKworY2xhc3MgVGVzdEJhc2VIZWFkZXJGZWF0dXJlcyhUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIHN0cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoKSwgJ3RoaXMgaXMgYSB0ZXN0JykKKworICAgIGRlZiB0ZXN0X3N1YnN0cihzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhbNTo3XSwgJ2lzJykKKworICAgIGRlZiB0ZXN0X2hhc19uYW1lKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignc3ViamVjdCcsICd0aGlzIGlzIGEgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5uYW1lLCAnc3ViamVjdCcpCisKKyAgICBkZWYgX3Rlc3RfYXR0cl9ybyhzZWxmLCBhdHRyKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHNldGF0dHIoaCwgYXR0ciwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9uYW1lX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9hdHRyX3JvKCduYW1lJykKKworICAgIGRlZiB0ZXN0X2RlZmVjdHNfcmVhZF9vbmx5KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oJ2RlZmVjdHMnKQorCisgICAgZGVmIHRlc3RfZGVmZWN0c19pc190dXBsZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmRlZmVjdHMpLCAwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kZWZlY3RzLCB0dXBsZSkKKyAgICAgICAgIyBNYWtlIHN1cmUgaXQgaXMgc3RpbGwgdHJ1ZSB3aGVuIHRoZXJlIGFyZSBkZWZlY3RzLgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmRlZmVjdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kZWZlY3RzLCB0dXBsZSkKKworICAgICMgWFhYOiBGSVhNRQorICAgICNkZWYgdGVzdF9DUl9pbl92YWx1ZShzZWxmKToKKyAgICAjICAgICMgWFhYOiB0aGlzIGFsc28gcmUtcmFpc2VzIHRoZSBpc3N1ZSBvZiBlbWJlZGRlZCBoZWFkZXJzLAorICAgICMgICAgIyBuZWVkIHRlc3QgYW5kIHNvbHV0aW9uIGZvciB0aGF0LgorICAgICMgICAgdmFsdWUgPSAnXHInLmpvaW4oWyd0aGlzIGlzJywgJyBhIHRlc3QnXSkKKyAgICAjICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgdmFsdWUpCisgICAgIyAgICBzZWxmLmFzc2VydEVxdWFsKGgsIHZhbHVlKQorICAgICMgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBbZXJyb3JzLk9ic29sZXRlSGVhZGVyRGVmZWN0XSkKKworICAgIGRlZiB0ZXN0X1JGQzIwNDdfdmFsdWVfZGVjb2RlZChzZWxmKToKKyAgICAgICAgdmFsdWUgPSAnPT91dGYtOD9xP3RoaXNfaXNfYV90ZXN0Pz0nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgJ3RoaXMgaXMgYSB0ZXN0JykKKworCitjbGFzcyBUZXN0RGF0ZUhlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkYXRlc3RyaW5nID0gJ1N1biwgMjMgU2VwIDIwMDEgMjA6MTA6NTUgLTA3MDAnCisgICAgdXRjb2Zmc2V0ID0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPS03KQorICAgIHR6ID0gZGF0ZXRpbWUudGltZXpvbmUodXRjb2Zmc2V0KQorICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwMSwgOSwgMjMsIDIwLCAxMCwgNTUsIHR6aW5mbz10eikKKworICAgIGRlZiB0ZXN0X3BhcnNlX2RhdGUoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgc2VsZi5kYXRlc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRhdGV0aW1lLCBzZWxmLmR0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGF0ZXRpbWUudXRjb2Zmc2V0KCksIHNlbGYudXRjb2Zmc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGVmZWN0cywgKCkpCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9kYXRldGltZShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmR0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmRhdGV0aW1lLCBzZWxmLmR0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGVmZWN0cywgKCkpCisKKyAgICBkZWYgdGVzdF9kYXRlX2hlYWRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignZGF0ZScsIHNlbGYuZGF0ZXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuaXF1ZURhdGVIZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYXhfY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5kZWZlY3RzLCAoKSkKKworICAgIGRlZiB0ZXN0X3Jlc2VudF9kYXRlX2hlYWRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigncmVzZW50LWRhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBoZWFkZXJyZWdpc3RyeS5EYXRlSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubWF4X2NvdW50LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGVmZWN0cywgKCkpCisKKyAgICBkZWYgdGVzdF9ub192YWx1ZV9pc19kZWZlY3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdkYXRlJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZGVmZWN0cyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRlZmVjdHNbMF0sIGVycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZSkKKworICAgIGRlZiB0ZXN0X2RhdGV0aW1lX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ2RhdGUnLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5kYXRldGltZSA9ICdmb28nCisKKyAgICBkZWYgdGVzdF9zZXRfZGF0ZV9oZWFkZXJfZnJvbV9kYXRldGltZShzZWxmKToKKyAgICAgICAgbSA9IE1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KQorICAgICAgICBtWydEYXRlJ10gPSBzZWxmLmR0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnRGF0ZSddLCBzZWxmLmRhdGVzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnRGF0ZSddLmRhdGV0aW1lLCBzZWxmLmR0KQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RDb250ZW50VHlwZUhlYWRlcihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgY29udGVudF90eXBlX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWludHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYXJncyk6CisgICAgICAgIGwgPSBsZW4oYXJncykKKyAgICAgICAgcGFybWRpY3QgPSBhcmdzWzBdIGlmIGw+MCBlbHNlIHt9CisgICAgICAgIGRlZmVjdHMgPSAgYXJnc1sxXSBpZiBsPjEgZWxzZSBbXQorICAgICAgICBkZWNvZGVkID0gIGFyZ3NbMl0gaWYgbD4yIGFuZCBhcmdzWzJdIGlzIG5vdCBESVRUTyBlbHNlIHNvdXJjZQorICAgICAgICBoZWFkZXIgPSAnQ29udGVudC1UeXBlOicgKyAnICcgaWYgc291cmNlIGVsc2UgJycKKyAgICAgICAgZm9sZGVkID0gYXJnc1szXSBpZiBsPjMgZWxzZSBoZWFkZXIgKyBzb3VyY2UgKyAnXG4nCisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdDb250ZW50LVR5cGUnLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5jb250ZW50X3R5cGUsIGNvbnRlbnRfdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm1haW50eXBlLCBtYWludHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnN1YnR5cGUsIHN1YnR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5wYXJhbXMsIHBhcm1kaWN0KQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgZm9sZGVkKQorCisgICAgY29udGVudF90eXBlX3BhcmFtcyA9IHsKKworICAgICAgICAjIEV4YW1wbGVzIGZyb20gUkZDIDIwNDUuCisKKyAgICAgICAgJ1JGQ18yMDQ1XzEnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaSAoUGxhaW4gdGV4dCknLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaSd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiJyksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzInOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD11cy1hc2NpaScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJ30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInKSwKKworICAgICAgICAnUkZDXzIwNDVfMyc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaSd9KSwKKworICAgICAgICAjIFJGQyAyMDQ1IDUuMiBzYXlzIHN5bnRhY3RpY2FsbHkgaW52YWxpZCB2YWx1ZXMgYXJlIHRvIGJlIHRyZWF0ZWQgYXMKKyAgICAgICAgIyB0ZXh0L3BsYWluLgorCisgICAgICAgICdub19zdWJ0eXBlX2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICd0ZXh0LycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnbm9fc2xhc2hfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ2ZvbycsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAge30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnanVua190ZXh0X2luX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICc8Y3JhenkgInN0dWZmIj4nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICAgICAgJ3Rvb19tYW55X3NsYXNoZXNfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcvZm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICMgQnV0IHVua25vd24gbmFtZXMgYXJlIE9LLiAgV2UgY291bGQgbWFrZSBub24tSUFOQSBuYW1lcyBhIGRlZmVjdCwgYnV0CisgICAgICAgICMgYnkgbm90IGRvaW5nIHNvIHdlIG1ha2Ugb3Vyc2VsdmVzIGZ1dHVyZSBwcm9vZi4gIFRoZSBmYWN0IHRoYXQgdGhleQorICAgICAgICAjIGFyZSB1bmtub3duIHdpbGwgYmUgZGV0ZWN0YWJsZSBieSB0aGUgZmFjdCB0aGF0IHRoZXkgZG9uJ3QgYXBwZWFyIGluCisgICAgICAgICMgdGhlIG1pbWVfcmVnaXN0cnkuLi5hbmQgdGhlIGFwcGxpY2F0aW9uIGlzIGZyZWUgdG8gZXh0ZW5kIHRoYXQgbGlzdAorICAgICAgICAjIHRvIGhhbmRsZSB0aGVtIGV2ZW4gaWYgdGhlIGNvcmUgbGlicmFyeSBkb2Vzbid0LgorCisgICAgICAgICd1bmtub3duX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICdiYWQvbmFtZXMnLAorICAgICAgICAgICAgJ2JhZC9uYW1lcycsCisgICAgICAgICAgICAnYmFkJywKKyAgICAgICAgICAgICduYW1lcycpLAorCisgICAgICAgICMgVGhlIGNvbnRlbnQgdHlwZSBpcyBjYXNlIGluc2Vuc2l0aXZlLCBhbmQgQ0ZXUyBpcyBpZ25vcmVkLgorCisgICAgICAgICdtaXhlZF9jYXNlX2NvbnRlbnRfdHlwZSc6ICgKKyAgICAgICAgICAgICdJbUFnZS9KUGVnJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycpLAorCisgICAgICAgICdzcGFjZXNfaW5fY29udGVudF90eXBlJzogKAorICAgICAgICAgICAgJyAgdGV4dCAgLyAgcGxhaW4gICcsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nKSwKKworICAgICAgICAnY2Z3c19pbl9jb250ZW50X3R5cGUnOiAoCisgICAgICAgICAgICAnKGZvbykgdGV4dCAoYmFyKS8oYmF6KXBsYWluKHN0dWZmKScsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nKSwKKworICAgICAgICAjIHRlc3Qgc29tZSBwYXJhbWV0ZXJzIChtb3JlIHRlc3RzIGNvdWxkIGJlIGFkZGVkIGZvciBwYXJhbWV0ZXJzCisgICAgICAgICMgYXNzb2NpYXRlZCB3aXRoIG90aGVyIGNvbnRlbnQgdHlwZXMsIGJ1dCBzaW5jZSBwYXJhbWV0ZXIgcGFyc2luZyBpcworICAgICAgICAjIGdlbmVyaWMgdGhleSB3b3VsZCBiZSByZWR1bmRhbnQgZm9yIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uKS4KKworICAgICAgICAnY2hhcnNldF9wYXJhbSc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1dGYtOCd9KSwKKworICAgICAgICAnY2FwaXRhbGl6ZWRfY2hhcnNldCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJVUy1BU0NJSSInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICdVUy1BU0NJSSd9KSwKKworICAgICAgICAndW5rbm93bl9jaGFyc2V0JzogKAorICAgICAgICAgICAgJ3RleHQvcGxhaW47IGNoYXJzZXQ9ImZPbyInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICdmT28nfSksCisKKyAgICAgICAgJ2NhcGl0YWxpemVkX2NoYXJzZXRfcGFyYW1fbmFtZV9hbmRfY29tbWVudCc6ICgKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyAoaW50ZXJqZWN0aW9uKSBDaGFyc2V0PSJ1dGYtOCInLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1dGYtOCd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAjIFNob3VsZCB0aGUgcGFyYW1ldGVyIG5hbWUgYmUgbG93ZXJjYXNlZCBoZXJlPworICAgICAgICAgICAgJ3RleHQvcGxhaW47IENoYXJzZXQ9InV0Zi04IicpLAorCisgICAgICAgICMgU2luY2UgdGhpcyBpcyBwcmV0dHkgbXVjaCB0aGUgdXItbWltZWhlYWRlciwgd2UnbGwgcHV0IGFsbCB0aGUgdGVzdHMKKyAgICAgICAgIyB0aGF0IGV4ZXJjaXNlIHRoZSBwYXJhbWV0ZXIgcGFyc2luZyBhbmQgZm9ybWF0dGluZyBoZXJlLgorICAgICAgICAjCisgICAgICAgICMgWFhYOiBxdWVzdGlvbjogaXMgbWluaW1hbCBxdW90aW5nIHByZWZlcnJlZD8KKworICAgICAgICAndW5xdW90ZWRfcGFyYW1fdmFsdWUnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgdGl0bGU9Zm9vJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J3RpdGxlJzogJ2Zvbyd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgdGl0bGU9ImZvbyInKSwKKworICAgICAgICAncGFyYW1fdmFsdWVfd2l0aF90c3BlY2lhbHMnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgdGl0bGU9IihiYXIpZm9vIGJsdWUiJywKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J3RpdGxlJzogJyhiYXIpZm9vIGJsdWUnfSksCisKKyAgICAgICAgJ3BhcmFtX3dpdGhfZXh0cmFfcXVvdGVkX3doaXRlc3BhY2UnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgdGl0bGU9IiAgYSAgICAgbG9vbmcgIHdheSBcdCBob21lICAgIicsCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyd0aXRsZSc6ICcgIGEgICAgIGxvb25nICB3YXkgXHQgaG9tZSAgICd9KSwKKworICAgICAgICAnYmFkX3BhcmFtcyc6ICgKKyAgICAgICAgICAgICdibGFyZzsgYmF6OyBib28nLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnYmF6JzogJycsICdib28nOiAnJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMpLAorCisgICAgICAgICdzcGFjZXNfYXJvdW5kX3BhcmFtX2VxdWFscyc6ICgKKyAgICAgICAgICAgICdNdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5ID0gIkNQSU1TU01UUEMwNnA1ZjN0RyInLAorICAgICAgICAgICAgJ211bHRpcGFydC9taXhlZCcsCisgICAgICAgICAgICAnbXVsdGlwYXJ0JywKKyAgICAgICAgICAgICdtaXhlZCcsCisgICAgICAgICAgICB7J2JvdW5kYXJ5JzogJ0NQSU1TU01UUEMwNnA1ZjN0Ryd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAnTXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT0iQ1BJTVNTTVRQQzA2cDVmM3RHIicpLAorCisgICAgICAgICdzcGFjZXNfYXJvdW5kX3NlbWlzJzogKAorICAgICAgICAgICAgKCdpbWFnZS9qcGVnOyBuYW1lPSJ3aWJibGUuSlBHIiA7IHgtbWFjLXR5cGU9IjRBNTA0NTQ3IiA7ICcKKyAgICAgICAgICAgICAgICAneC1tYWMtY3JlYXRvcj0iNDc0QjRGNEUiJyksCisgICAgICAgICAgICAnaW1hZ2UvanBlZycsCisgICAgICAgICAgICAnaW1hZ2UnLAorICAgICAgICAgICAgJ2pwZWcnLAorICAgICAgICAgICAgeyduYW1lJzogJ3dpYmJsZS5KUEcnLAorICAgICAgICAgICAgICd4LW1hYy10eXBlJzogJzRBNTA0NTQ3JywKKyAgICAgICAgICAgICAneC1tYWMtY3JlYXRvcic6ICc0NzRCNEY0RSd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAoJ2ltYWdlL2pwZWc7IG5hbWU9IndpYmJsZS5KUEciOyB4LW1hYy10eXBlPSI0QTUwNDU0NyI7ICcKKyAgICAgICAgICAgICAgICAneC1tYWMtY3JlYXRvcj0iNDc0QjRGNEUiJyksCisgICAgICAgICAgICAjIFhYWDogaXQgY291bGQgYmUgdGhhdCB3ZSB3aWxsIGV2ZW50dWFsbHkgcHJlZmVyIHRvIGZvbGQgc3RhcnRpbmcKKyAgICAgICAgICAgICMgZnJvbSB0aGUgZGVjb2RlZCB2YWx1ZSwgaW4gd2hpY2ggY2FzZSB0aGVzZSBzcGFjZXMgYW5kIHNpbWlsYXIKKyAgICAgICAgICAgICMgc3BhY2VzIGluIG90aGVyIHRlc3RzIHdpbGwgYmUgd3JvbmcuCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogaW1hZ2UvanBlZzsgbmFtZT0id2liYmxlLkpQRyIgOyAnCisgICAgICAgICAgICAgICAgJ3gtbWFjLXR5cGU9IjRBNTA0NTQ3IiA7XG4nCisgICAgICAgICAgICAgJyB4LW1hYy1jcmVhdG9yPSI0NzRCNEY0RSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAnc2VtaXNfaW5zaWRlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICdpbWFnZS9qcGVnOyBuYW1lPSJKaW0mYW1wOyZhbXA7SmlsbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdKaW0mYW1wOyZhbXA7SmlsbCd9KSwKKworICAgICAgICAnc2luZ2xlX3F1b3Rlc19pbnNpZGVfcXVvdGVzJzogKAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSBcJ0JvYlwnIEppbGwiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAiSmltICdCb2InIEppbGwifSksCisKKyAgICAgICAgJ2RvdWJsZV9xdW90ZXNfaW5zaWRlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgbmFtZT0iSmltIFwiQm9iXCIgSmlsbCInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdKaW0gIkJvYiIgSmlsbCd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICByJ2ltYWdlL2pwZWc7IG5hbWU9IkppbSBcIkJvYlwiIEppbGwiJyksCisKKyAgICAgICAgIyBYWFg6IFRoaXMgdGVzdCB3b3JrcyBleGNlcHQgZm9yIHRoZSByZWZvbGRpbmcgb2YgdGhlIGhlYWRlci4gIEknbGwKKyAgICAgICAgIyBkZWFsIHdpdGggdGhhdCBidWcgd2hlbiBJIGRlYWwgd2l0aCB0aGUgb3RoZXIgZm9sZGluZyBidWdzLgorICAgICAgICAjJ25vbl9hc2NpaV9pbl9wYXJhbXMnOiAoCisgICAgICAgICMgICAgKCdmb29ceGE3L2JhcjsgYlx4YTdyPXR3bzsgJworICAgICAgICAjICAgICAgICAnYmF6PXRoclx4YTdlJy5lbmNvZGUoJ2xhdGluLTEnKS5kZWNvZGUoJ3VzLWFzY2lpJywKKyAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdXJyb2dhdGVlc2NhcGUnKSksCisgICAgICAgICMgICAgJ2Zvb1x1RkZGRC9iYXInLAorICAgICAgICAjICAgICdmb29cdUZGRkQnLAorICAgICAgICAjICAgICdiYXInLAorICAgICAgICAjICAgIHsnYlx1RkZGRHInOiAndHdvJywgJ2Jheic6ICd0aHJcdUZGRkRlJ30sCisgICAgICAgICMgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSozLAorICAgICAgICAjICAgICdmb2/vv70vYmFyOyBi77+9cj0idHdvIjsgYmF6PSJ0aHLvv71lIicsCisgICAgICAgICMgICAgKSwKKworICAgICAgICAjIFJGQyAyMjMxIHBhcmFtZXRlciB0ZXN0cy4KKworICAgICAgICAncmZjMjIzMV9zZWdtZW50ZWRfbm9ybWFsX3ZhbHVlcyc6ICgKKyAgICAgICAgICAgICdpbWFnZS9qcGVnOyBuYW1lKjA9ImFiYyI7IG5hbWUqMT0iLmh0bWwiJywKKyAgICAgICAgICAgICdpbWFnZS9qcGVnJywKKyAgICAgICAgICAgICdpbWFnZScsCisgICAgICAgICAgICAnanBlZycsCisgICAgICAgICAgICB7J25hbWUnOiAiYWJjLmh0bWwifSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWc7IG5hbWU9ImFiYy5odG1sIicpLAorCisgICAgICAgICdxdW90ZXNfaW5zaWRlX3JmYzIyMzFfdmFsdWUnOiAoCisgICAgICAgICAgICByJ2ltYWdlL2pwZWc7IGJhciowPSJiYXpcImZvb2JhciI7IGJhcioxPSJcImJheiInLAorICAgICAgICAgICAgJ2ltYWdlL2pwZWcnLAorICAgICAgICAgICAgJ2ltYWdlJywKKyAgICAgICAgICAgICdqcGVnJywKKyAgICAgICAgICAgIHsnYmFyJzogJ2JheiJmb29iYXIiYmF6J30sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgIHInaW1hZ2UvanBlZzsgYmFyPSJiYXpcImZvb2JhclwiYmF6IicpLAorCisgICAgICAgICMgWFhYOiBUaGlzIHRlc3Qgd29ya3MgZXhjZXB0IGZvciB0aGUgcmVmb2xkaW5nIG9mIHRoZSBoZWFkZXIuICBJJ2xsCisgICAgICAgICMgZGVhbCB3aXRoIHRoYXQgYnVnIHdoZW4gSSBkZWFsIHdpdGggdGhlIG90aGVyIGZvbGRpbmcgYnVncy4KKyAgICAgICAgIydub25fYXNjaWlfcmZjMjIzMV92YWx1ZSc6ICgKKyAgICAgICAgIyAgICAoJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7ICcKKyAgICAgICAgIyAgICAgInRpdGxlKj11cy1hc2NpaSdlbidUaGlzJTIwaXMlMjAiCisgICAgICAgICMgICAgICdub3QlMjBmXHhhN24nKS5lbmNvZGUoJ2xhdGluLTEnKS5kZWNvZGUoJ3VzLWFzY2lpJywKKyAgICAgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdXJyb2dhdGVlc2NhcGUnKSwKKyAgICAgICAgIyAgICAndGV4dC9wbGFpbicsCisgICAgICAgICMgICAgJ3RleHQnLAorICAgICAgICAjICAgICdwbGFpbicsCisgICAgICAgICMgICAgeydjaGFyc2V0JzogJ3VzLWFzY2lpJywgJ3RpdGxlJzogJ1RoaXMgaXMgbm90IGZcdUZGRkRuJ30sCisgICAgICAgICMgICAgIFtlcnJvcnMuVW5kZWNvZGFibGVCeXRlc0RlZmVjdF0sCisgICAgICAgICMgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1cy1hc2NpaSI7IHRpdGxlPSJUaGlzIGlzIG5vdCBm77+9biInKSwKKworICAgICAgICAncmZjMjIzMV9lbmNvZGVkX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldCo9YW5zaS14My40LTE5NjhcJ1wndXMtYXNjaWknLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaSd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiJyksCisKKyAgICAgICAgIyBUaGlzIGZvbGxvd3MgdGhlIFJGQzogbm8gZG91YmxlIHF1b3RlcyBhcm91bmQgZW5jb2RlZCB2YWx1ZXMuCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfbm9fZG91YmxlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgIlx0bmFtZSowKj0nJ1RoaXMlMjBpcyUyMDsiCisgICAgICAgICAgICAgICAgIlx0bmFtZSoxKj0lMkElMkElMkFmdW4lMkElMkElMkElMjA7IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiInKSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluJywKKyAgICAgICAgICAgICd0ZXh0JywKKyAgICAgICAgICAgICdwbGFpbicsCisgICAgICAgICAgICB7J25hbWUnOiAnVGhpcyBpcyAqKipmdW4qKiogaXMgaXQgbm90LnBkZid9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyAqKipmdW4qKiogaXMgaXQgbm90LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHRuYW1lKjAqPVwnXCdUaGlzJTIwaXMlMjA7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0lMkElMkElMkFmdW4lMkElMkElMkElMjA7XHRuYW1lKjI9ImlzIGl0IG5vdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgYWxzbyBoYW5kbGUgaXQgaWYgdGhlcmUgYXJlIHNwdXJyaW91cyBkb3VibGUgcW91dGVzLgorICAgICAgICAncmZjMjIzMV9lbmNvZGVkX3dpdGhfZG91YmxlX3F1b3Rlcyc6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0idXMtYXNjaWlcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjI9ImlzIGl0IG5vdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdCBub3QucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0IG5vdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJ1cy1hc2NpaVwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdG5hbWUqMj0iaXMgaXQgbm90LnBkZiJcbicpLAorICAgICAgICAgICAgKSwKKworICAgICAgICAncmZjMjIzMV9zaW5nbGVfcXVvdGVfaW5zaWRlX2RvdWJsZV9xdW90ZXMnOiAoCisgICAgICAgICAgICAoJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWk7JworICAgICAgICAgICAgICAgJ1x0dGl0bGUqMCo9InVzLWFzY2lpXCdlblwnVGhpcyUyMGlzJTIwcmVhbGx5JTIwIjsnCisgICAgICAgICAgICAgICAnXHR0aXRsZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAnXHR0aXRsZSoyPSJpc25cJ3QgaXQhIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1cy1hc2NpaScsICd0aXRsZSc6ICJUaGlzIGlzIHJlYWxseSAqKipmdW4qKiogaXNuJ3QgaXQhIn0sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAoJ3RleHQvcGxhaW47IGNoYXJzZXQ9InVzLWFzY2lpIjsgJworICAgICAgICAgICAgICAgJ3RpdGxlPSJUaGlzIGlzIHJlYWxseSAqKipmdW4qKiogaXNuXCd0IGl0ISInKSwKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpO1xuJworICAgICAgICAgICAgICdcdHRpdGxlKjAqPSJ1cy1hc2NpaVwnZW5cJ1RoaXMlMjBpcyUyMHJlYWxseSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0dGl0bGUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7XHR0aXRsZSoyPSJpc25cJ3QgaXQhIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3NpbmdsZV9xdW90ZV9pbl92YWx1ZV93aXRoX2NoYXJzZXRfYW5kX2xhbmcnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAiXHRuYW1lKjAqPVwidXMtYXNjaWknZW4tdXMnRnJhbmsnc1wiOyBuYW1lKjEqPVwiIERvY3VtZW50XCIiKSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbycsCisgICAgICAgICAgICAnYXBwbGljYXRpb24nLAorICAgICAgICAgICAgJ3gtZm9vJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJGcmFuaydzIERvY3VtZW50In0sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9IkZyYW5rXCdzIERvY3VtZW50IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9InVzLWFzY2lpXCdlbi11c1wnRnJhbmtcJ3MiO1xuJworICAgICAgICAgICAgICcgbmFtZSoxKj0iIERvY3VtZW50IlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3NpbmdsZV9xdW90ZV9pbl9ub25fZW5jb2RlZF92YWx1ZSc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICJcdG5hbWUqMD1cInVzLWFzY2lpJ2VuLXVzJ0ZyYW5rJ3NcIjsgbmFtZSoxPVwiIERvY3VtZW50XCIiKSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbycsCisgICAgICAgICAgICAnYXBwbGljYXRpb24nLAorICAgICAgICAgICAgJ3gtZm9vJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJ1cy1hc2NpaSdlbi11cydGcmFuaydzIERvY3VtZW50In0sCisgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbzsgbmFtZT0idXMtYXNjaWlcJ2VuLXVzXCdGcmFua1wncyBEb2N1bWVudCInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjA9InVzLWFzY2lpXCdlbi11c1wnRnJhbmtcJ3MiO1xuJworICAgICAgICAgICAgICcgbmFtZSoxPSIgRG9jdW1lbnQiXG4nKSwKKyAgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX25vX2xhbmd1YWdlX29yX2NoYXJzZXQnOiAoCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgTkFNRSowKj1lbmdsaXNoX2lzX3RoZV9kZWZhdWx0Lmh0bWwnLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdlbmdsaXNoX2lzX3RoZV9kZWZhdWx0Lmh0bWwnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgTkFNRT0iZW5nbGlzaF9pc190aGVfZGVmYXVsdC5odG1sIicpLAorCisgICAgICAgICdyZmMyMjMxX2VuY29kZWRfbm9fY2hhcnNldCc6ICgKKyAgICAgICAgICAgICgidGV4dC9wbGFpbjsiCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgZXZlbiBtb3JlICoqKmZ1bioqKiBpcyBpdC5wZGYnfSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmIicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjtcdCcKKyAgICAgICAgICAgICAgICAnbmFtZSowKj0iXCdcJ1RoaXMlMjBpcyUyMGV2ZW4lMjBtb3JlJTIwIjtcbicKKyAgICAgICAgICAgICAnXHRuYW1lKjEqPSIlMkElMkElMkFmdW4lMkElMkElMkElMjAiO1x0bmFtZSoyPSJpcyBpdC5wZGYiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgIyBYWFg6IHNlZSBiZWxvdy4uLnRoZSBmaXJzdCBuYW1lIGxpbmUgaGVyZSBzaG91bGQgYmUgKjAgbm90ICowKi4KKyAgICAgICAgJ3JmYzIyMzFfcGFydGx5X2VuY29kZWQnOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMSo9IiUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMj0iaXMgaXQucGRmIicpLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdUaGlzIGlzIGV2ZW4gbW9yZSAqKipmdW4qKiogaXMgaXQucGRmJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iVGhpcyBpcyBldmVuIG1vcmUgKioqZnVuKioqIGlzIGl0LnBkZiInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW47XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7XG4nCisgICAgICAgICAgICAgJ1x0bmFtZSoxKj0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdG5hbWUqMj0iaXMgaXQucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3BhcnRseV9lbmNvZGVkXzInOiAoCisgICAgICAgICAgICAoInRleHQvcGxhaW47IgorICAgICAgICAgICAgICAgICdcdG5hbWUqMCo9IlwnXCdUaGlzJTIwaXMlMjBldmVuJTIwbW9yZSUyMCI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMT0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSJpcyBpdC5wZGYiJyksCisgICAgICAgICAgICAndGV4dC9wbGFpbicsCisgICAgICAgICAgICAndGV4dCcsCisgICAgICAgICAgICAncGxhaW4nLAorICAgICAgICAgICAgeyduYW1lJzogJ1RoaXMgaXMgZXZlbiBtb3JlICUyQSUyQSUyQWZ1biUyQSUyQSUyQSUyMGlzIGl0LnBkZid9LAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBuYW1lPSJUaGlzIGlzIGV2ZW4gbW9yZSAlMkElMkElMkFmdW4lMkElMkElMkElMjBpcyBpdC5wZGYiJywKKyAgICAgICAgICAgICgnQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1x0JworICAgICAgICAgICAgICAgICduYW1lKjAqPSJcJ1wnVGhpcyUyMGlzJTIwZXZlbiUyMG1vcmUlMjAiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMT0iJTJBJTJBJTJBZnVuJTJBJTJBJTJBJTIwIjtcdG5hbWUqMj0iaXMgaXQucGRmIlxuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdyZmMyMjMxX3Vua25vd25fY2hhcnNldF90cmVhdGVkX2FzX2FzY2lpJzogKAorICAgICAgICAgICAgInRleHQvcGxhaW47IG5hbWUqMCo9Ym9ndXMneHgnYXNjaWlfaXNfdGhlX2RlZmF1bHQiLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdhc2NpaV9pc190aGVfZGVmYXVsdCd9LAorICAgICAgICAgICAgW10sCisgICAgICAgICAgICAndGV4dC9wbGFpbjsgbmFtZT0iYXNjaWlfaXNfdGhlX2RlZmF1bHQiJyksCisKKyAgICAgICAgJ3JmYzIyMzFfYmFkX2NoYXJhY3Rlcl9pbl9jaGFyc2V0X3BhcmFtZXRlcl92YWx1ZSc6ICgKKyAgICAgICAgICAgICJ0ZXh0L3BsYWluOyBjaGFyc2V0Kj1hc2NpaScndXRmLTglRTIlODAlOUQiLAorICAgICAgICAgICAgJ3RleHQvcGxhaW4nLAorICAgICAgICAgICAgJ3RleHQnLAorICAgICAgICAgICAgJ3BsYWluJywKKyAgICAgICAgICAgIHsnY2hhcnNldCc6ICd1dGYtOFx1RkZGRFx1RkZGRFx1RkZGRCd9LAorICAgICAgICAgICAgW2Vycm9ycy5VbmRlY29kYWJsZUJ5dGVzRGVmZWN0XSwKKyAgICAgICAgICAgICd0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOFx1RkZGRFx1RkZGRFx1RkZGRCInKSwKKworICAgICAgICAncmZjMjIzMV9lbmNvZGVkX3RoZW5fdW5lbmNvZGVkX3NlZ21lbnRzJzogKAorICAgICAgICAgICAgKCdhcHBsaWNhdGlvbi94LWZvbzsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSowKj0idXMtYXNjaWlcJ2VuLXVzXCdNeSI7JworICAgICAgICAgICAgICAgICdcdG5hbWUqMT0iIERvY3VtZW50IjsnCisgICAgICAgICAgICAgICAgJ1x0bmFtZSoyPSIgRm9yIFlvdSInKSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbycsCisgICAgICAgICAgICAnYXBwbGljYXRpb24nLAorICAgICAgICAgICAgJ3gtZm9vJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdNeSBEb2N1bWVudCBGb3IgWW91J30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgJ2FwcGxpY2F0aW9uL3gtZm9vOyBuYW1lPSJNeSBEb2N1bWVudCBGb3IgWW91IicsCisgICAgICAgICAgICAoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC1mb287XHQnCisgICAgICAgICAgICAgICAgJ25hbWUqMCo9InVzLWFzY2lpXCdlbi11c1wnTXkiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMT0iIERvY3VtZW50IjtcdG5hbWUqMj0iIEZvciBZb3UiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgIyBNeSByZWFkaW5nIG9mIHRoZSBSRkMgaXMgdGhhdCB0aGlzIGlzIGFuIGludmFsaWQgaGVhZGVyLiAgVGhlIFJGQworICAgICAgICAjIHNheXMgdGhhdCBpZiBjaGFyc2V0IGFuZCBsYW5ndWFnZSBpbmZvcm1hdGlvbiBpcyBnaXZlbiwgdGhlIGZpcnN0CisgICAgICAgICMgc2VnbWVudCAqbXVzdCogYmUgZW5jb2RlZC4KKyAgICAgICAgJ3JmYzIyMzFfdW5lbmNvZGVkX3RoZW5fZW5jb2RlZF9zZWdtZW50cyc6ICgKKyAgICAgICAgICAgICgnYXBwbGljYXRpb24veC1mb287JworICAgICAgICAgICAgICAgICdcdG5hbWUqMD11cy1hc2NpaVwnZW4tdXNcJ015OycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIgRG9jdW1lbnQiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjIqPSIgRm9yIFlvdSInKSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbycsCisgICAgICAgICAgICAnYXBwbGljYXRpb24nLAorICAgICAgICAgICAgJ3gtZm9vJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICdNeSBEb2N1bWVudCBGb3IgWW91J30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9Ik15IERvY3VtZW50IEZvciBZb3UiJywKKyAgICAgICAgICAgICgiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LWZvbztcdG5hbWUqMD11cy1hc2NpaSdlbi11cydNeTtcdCIKKyAgICAgICAgICAgICAgICAjIFhYWDogdGhlIG5ld2xpbmUgaXMgaW4gdGhlIHdyb25nIHBsYWNlLCBjb21lIGJhY2sgYW5kIGZpeAorICAgICAgICAgICAgICAgICMgdGhpcyB3aGVuIHRoZSByZXN0IG9mIHRlc3RzIHBhc3MuCisgICAgICAgICAgICAgICAgJ25hbWUqMSo9IiBEb2N1bWVudCJcbjsnCisgICAgICAgICAgICAgJ1x0bmFtZSoyKj0iIEZvciBZb3UiXG4nKSwKKyAgICAgICAgICAgICksCisKKyAgICAgICAgIyBYWFg6IEkgd291bGQgc2F5IHRoaXMgb25lIHNob3VsZCBkZWZhdWx0IHRvIGFzY2lpL2VuIGZvciB0aGUKKyAgICAgICAgIyAiZW5jb2RlZCIgc2VnbWVudCwgc2luY2UgdGhlIHRoZSBmaXJzdCBzZWdtZW50IGlzIG5vdCBlbmNvZGVkIGFuZCBpcworICAgICAgICAjIGluIGRvdWJsZSBxdW90ZXMsIG1ha2luZyB0aGUgdmFsdWUgYSB2YWxpZCBub24tZW5jb2RlZCBzdHJpbmcuICBUaGUKKyAgICAgICAgIyBvbGQgcGFyc2VyIGRlY29kZXMgdGhpcyBqdXN0IGxpa2UgdGhlIHByZXZpb3VzIGNhc2UsIHdoaWNoIG1heSBiZSB0aGUKKyAgICAgICAgIyBiZXR0ZXIgUG9zdGVsIHJ1bGUsIGJ1dCBjb3VsZCBlcXVhbGx5IHJlc3VsdCBpbiBib3JraW5nIGhlYWRlcnMgdGhhdAorICAgICAgICAjIGludGVudGlhbGx5IGhhdmUgcXVvdGVkIHF1b3RlcyBpbiB0aGVtLiAgV2UgY291bGQgZ2V0IHRoaXMgOTglIHJpZ2h0CisgICAgICAgICMgaWYgd2UgdHJlYXQgaXQgYXMgYSBxdW90ZWQgc3RyaW5nICp1bmxlc3MqIGl0IG1hdGNoZXMgdGhlCisgICAgICAgICMgY2hhcnNldCdsYW5nJ3ZhbHVlIHBhdHRlcm4gZXhhY3RseSAqYW5kKiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUKKyAgICAgICAgIyBlbmNvZGVkIHNlZ21lbnQuICBJbXBsZW1lbnRpbmcgdGhhdCBhbGdvcml0aG0gd2lsbCByZXF1aXJlIHNvbWUKKyAgICAgICAgIyByZWZhY3RvcmluZywgc28gSSBoYXZlbid0IGRvbmUgaXQgKHlldCkuCisKKyAgICAgICAgJ3JmYzIyMzFfcW91dGVkX3VuZW5jb2RlZF90aGVuX2VuY29kZWRfc2VnbWVudHMnOiAoCisgICAgICAgICAgICAoJ2FwcGxpY2F0aW9uL3gtZm9vOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjA9InVzLWFzY2lpXCdlbi11c1wnTXkiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjEqPSIgRG9jdW1lbnQiOycKKyAgICAgICAgICAgICAgICAnXHRuYW1lKjIqPSIgRm9yIFlvdSInKSwKKyAgICAgICAgICAgICdhcHBsaWNhdGlvbi94LWZvbycsCisgICAgICAgICAgICAnYXBwbGljYXRpb24nLAorICAgICAgICAgICAgJ3gtZm9vJywKKyAgICAgICAgICAgIHsnbmFtZSc6ICJ1cy1hc2NpaSdlbi11cydNeSBEb2N1bWVudCBGb3IgWW91In0sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjIsCisgICAgICAgICAgICAnYXBwbGljYXRpb24veC1mb287IG5hbWU9InVzLWFzY2lpXCdlbi11c1wnTXkgRG9jdW1lbnQgRm9yIFlvdSInLAorICAgICAgICAgICAgKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtZm9vO1x0JworICAgICAgICAgICAgICAgICduYW1lKjA9InVzLWFzY2lpXCdlbi11c1wnTXkiO1xuJworICAgICAgICAgICAgICdcdG5hbWUqMSo9IiBEb2N1bWVudCI7XHRuYW1lKjIqPSIgRm9yIFlvdSJcbicpLAorICAgICAgICAgICAgKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0Q29udGVudFRyYW5zZmVyRW5jb2RpbmcoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIGN0ZV9hc192YWx1ZShzZWxmLAorICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgY3RlLAorICAgICAgICAgICAgICAgICAgICAgKmFyZ3MpOgorICAgICAgICBsID0gbGVuKGFyZ3MpCisgICAgICAgIGRlZmVjdHMgPSAgYXJnc1swXSBpZiBsPjAgZWxzZSBbXQorICAgICAgICBkZWNvZGVkID0gIGFyZ3NbMV0gaWYgbD4xIGFuZCBhcmdzWzFdIGlzIG5vdCBESVRUTyBlbHNlIHNvdXJjZQorICAgICAgICBoZWFkZXIgPSAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzonICsgJyAnIGlmIHNvdXJjZSBlbHNlICcnCisgICAgICAgIGZvbGRlZCA9IGFyZ3NbMl0gaWYgbD4yIGVsc2UgaGVhZGVyICsgc291cmNlICsgJ1xuJworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZycsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmN0ZSwgY3RlKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwgZm9sZGVkKQorCisgICAgY3RlX3BhcmFtcyA9IHsKKworICAgICAgICAnUkZDXzIxODNfMSc6ICgKKyAgICAgICAgICAgICdiYXNlNjQnLAorICAgICAgICAgICAgJ2Jhc2U2NCcsKSwKKworICAgICAgICAnbm9fdmFsdWUnOiAoCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICc3Yml0JywKKyAgICAgICAgICAgIFtlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWVdLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzpcbicsCisgICAgICAgICAgICApLAorCisgICAgICAgICdqdW5rX2FmdGVyX2N0ZSc6ICgKKyAgICAgICAgICAgICc3Yml0IGFuZCBhIGJ1bmNoIG1vcmUnLAorICAgICAgICAgICAgJzdiaXQnLAorICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSksCisKKyAgICB9CisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdENvbnRlbnREaXNwb3NpdGlvbihUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgY29udGVudF9kaXNwX2FzX3ZhbHVlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X2Rpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFyZ3MpOgorICAgICAgICBsID0gbGVuKGFyZ3MpCisgICAgICAgIHBhcm1kaWN0ID0gYXJnc1swXSBpZiBsPjAgZWxzZSB7fQorICAgICAgICBkZWZlY3RzID0gIGFyZ3NbMV0gaWYgbD4xIGVsc2UgW10KKyAgICAgICAgZGVjb2RlZCA9ICBhcmdzWzJdIGlmIGw+MiBhbmQgYXJnc1syXSBpcyBub3QgRElUVE8gZWxzZSBzb3VyY2UKKyAgICAgICAgaGVhZGVyID0gJ0NvbnRlbnQtRGlzcG9zaXRpb246JyArICcgJyBpZiBzb3VyY2UgZWxzZSAnJworICAgICAgICBmb2xkZWQgPSBhcmdzWzNdIGlmIGw+MyBlbHNlIGhlYWRlciArIHNvdXJjZSArICdcbicKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5jb250ZW50X2Rpc3Bvc2l0aW9uLCBjb250ZW50X2Rpc3Bvc2l0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgucGFyYW1zLCBwYXJtZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnREZWZlY3RzRXF1YWwoaC5kZWZlY3RzLCBkZWZlY3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIGZvbGRlZCkKKworICAgIGNvbnRlbnRfZGlzcF9wYXJhbXMgPSB7CisKKyAgICAgICAgIyBFeGFtcGxlcyBmcm9tIFJGQyAyMTgzLgorCisgICAgICAgICdSRkNfMjE4M18xJzogKAorICAgICAgICAgICAgJ2lubGluZScsCisgICAgICAgICAgICAnaW5saW5lJywpLAorCisgICAgICAgICdSRkNfMjE4M18yJzogKAorICAgICAgICAgICAgKCdhdHRhY2htZW50OyBmaWxlbmFtZT1nZW5vbWUuanBlZzsnCisgICAgICAgICAgICAgJyAgbW9kaWZpY2F0aW9uLWRhdGU9IldlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAiOycpLAorICAgICAgICAgICAgJ2F0dGFjaG1lbnQnLAorICAgICAgICAgICAgeydmaWxlbmFtZSc6ICdnZW5vbWUuanBlZycsCisgICAgICAgICAgICAgJ21vZGlmaWNhdGlvbi1kYXRlJzogJ1dlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAnfSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgKCdhdHRhY2htZW50OyBmaWxlbmFtZT0iZ2Vub21lLmpwZWciOyAnCisgICAgICAgICAgICAgICAgICdtb2RpZmljYXRpb24tZGF0ZT0iV2VkLCAxMiBGZWIgMTk5NyAxNjoyOTo1MSAtMDUwMCInKSwKKyAgICAgICAgICAgICgnQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Z2Vub21lLmpwZWc7XG4nCisgICAgICAgICAgICAgJyAgbW9kaWZpY2F0aW9uLWRhdGU9IldlZCwgMTIgRmViIDE5OTcgMTY6Mjk6NTEgLTA1MDAiO1xuJyksCisgICAgICAgICAgICApLAorCisgICAgICAgICdub192YWx1ZSc6ICgKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgW2Vycm9ycy5IZWFkZXJNaXNzaW5nUmVxdWlyZWRWYWx1ZV0sCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdDb250ZW50LURpc3Bvc2l0aW9uOlxuJyksCisKKyAgICAgICAgJ2ludmFsaWRfdmFsdWUnOiAoCisgICAgICAgICAgICAnYWIuL2snLAorICAgICAgICAgICAgJ2FiLicsCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdpbnZhbGlkX3ZhbHVlX3dpdGhfcGFyYW1zJzogKAorICAgICAgICAgICAgJ2FiLi9rOyBmaWxlbmFtZT0iZm9vIicsCisgICAgICAgICAgICAnYWIuJywKKyAgICAgICAgICAgIHsnZmlsZW5hbWUnOiAnZm9vJ30sCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgIH0KKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0TUlNRVZlcnNpb25IZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZGVmIHZlcnNpb25fc3RyaW5nX2FzX01JTUVfVmVyc2lvbihzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmZWN0cyk6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdNSU1FLVZlcnNpb24nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaCwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnZlcnNpb24sIHZlcnNpb24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5tYWpvciwgbWFqb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5taW5vciwgbWlub3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RGVmZWN0c0VxdWFsKGguZGVmZWN0cywgZGVmZWN0cykKKyAgICAgICAgaWYgc291cmNlOgorICAgICAgICAgICAgc291cmNlID0gJyAnICsgc291cmNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnTUlNRS1WZXJzaW9uOicgKyBzb3VyY2UgKyAnXG4nKQorCisgICAgdmVyc2lvbl9zdHJpbmdfcGFyYW1zID0geworCisgICAgICAgICMgRXhhbXBsZXMgZnJvbSB0aGUgUkZDLgorCisgICAgICAgICdSRkNfMjA0NV8xJzogKAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ1JGQ18yMDQ1XzInOiAoCisgICAgICAgICAgICAnMS4wIChwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KScsCisgICAgICAgICAgICAnMS4wIChwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KScsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdSRkNfMjA0NV8zJzogKAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJyhwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KSAxLjAnLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnUkZDXzIwNDVfNCc6ICgKKyAgICAgICAgICAgICcxLihwcm9kdWNlZCBieSBNZXRhU2VuZCBWeC54KTAnLAorICAgICAgICAgICAgJzEuKHByb2R1Y2VkIGJ5IE1ldGFTZW5kIFZ4LngpMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICMgT3RoZXIgdmFsaWQgdmFsdWVzLgorCisgICAgICAgICcxXzEnOiAoCisgICAgICAgICAgICAnMS4xJywKKyAgICAgICAgICAgICcxLjEnLAorICAgICAgICAgICAgJzEuMScsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIFtdKSwKKworICAgICAgICAnMl8xJzogKAorICAgICAgICAgICAgJzIuMScsCisgICAgICAgICAgICAnMi4xJywKKyAgICAgICAgICAgICcyLjEnLAorICAgICAgICAgICAgMiwKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgJ3doaXRlc3BhY2UnOiAoCisgICAgICAgICAgICAnMSAuMCcsCisgICAgICAgICAgICAnMSAuMCcsCisgICAgICAgICAgICAnMS4wJywKKyAgICAgICAgICAgIDEsCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgW10pLAorCisgICAgICAgICdsZWFkaW5nX3RyYWlsaW5nX3doaXRlc3BhY2VfaWdub3JlZCc6ICgKKyAgICAgICAgICAgICcgIDEuMCAgJywKKyAgICAgICAgICAgICcgIDEuMCAgJywKKyAgICAgICAgICAgICcxLjAnLAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICBbXSksCisKKyAgICAgICAgIyBSZWNvdmVyYWJsZSBpbnZhbGlkIHZhbHVlcy4gIFdlIGNhbiByZWNvdmVyIGhlcmUgb25seSBiZWNhdXNlIHdlCisgICAgICAgICMgYWxyZWFkeSBoYXZlIGEgdmFsaWQgdmFsdWUgYnkgdGhlIHRpbWUgd2UgZW5jb3VudGVyIHRoZSBnYXJiYWdlLgorICAgICAgICAjIEFueXdoZXJlIGVsc2UsIGFuZCB3ZSBkb24ndCBrbm93IHdoZXJlIHRoZSBnYXJiYWdlIGVuZHMuCisKKyAgICAgICAgJ25vbl9jb21tZW50X2dhcmJhZ2VfYWZ0ZXInOiAoCisgICAgICAgICAgICAnMS4wIDxhYmM+JywKKyAgICAgICAgICAgICcxLjAgPGFiYz4nLAorICAgICAgICAgICAgJzEuMCcsCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICMgVW5yZWNvdmVyYWJsZSBpbnZhbGlkIHZhbHVlcy4gIFdlICpjb3VsZCogYXBwbHkgbW9yZSBoZXVyaXN0aWNzIHRvCisgICAgICAgICMgZ2V0IHNvbWVpbmcgb3V0IG9mIHRoZSBmaXJzdCB0d28sIGJ1dCBkb2luZyBzbyBpcyBub3Qgd29ydGggdGhlCisgICAgICAgICMgZWZmb3J0LgorCisgICAgICAgICdub25fY29tbWVudF9nYXJiYWdlX2JlZm9yZSc6ICgKKyAgICAgICAgICAgICc8YWJjPiAxLjAnLAorICAgICAgICAgICAgJzxhYmM+IDEuMCcsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnbm9uX2NvbW1lbnRfZ2FyYmFnZV9pbnNpZGUnOiAoCisgICAgICAgICAgICAnMS48YWJjPjAnLAorICAgICAgICAgICAgJzEuPGFiYz4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICd0d29fcGVyaW9kcyc6ICgKKyAgICAgICAgICAgICcxLi4wJywKKyAgICAgICAgICAgICcxLi4wJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICcyX3gnOiAoCisgICAgICAgICAgICAnMi54JywKKyAgICAgICAgICAgICcyLngnLAorICAgICAgICAgICAgTm9uZSwgICMgVGhpcyBjb3VsZCBiZSAyLCBidXQgaXQgc2VlbXMgc2FmZXIgdG8gbWFrZSBpdCBOb25lLgorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKSwKKworICAgICAgICAnZm9vJzogKAorICAgICAgICAgICAgJ2ZvbycsCisgICAgICAgICAgICAnZm9vJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0pLAorCisgICAgICAgICdtaXNzaW5nJzogKAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBOb25lLAorICAgICAgICAgICAgTm9uZSwKKyAgICAgICAgICAgIFtlcnJvcnMuSGVhZGVyTWlzc2luZ1JlcXVpcmVkVmFsdWVdKSwKKworICAgICAgICB9CisKKworQHBhcmFtZXRlcml6ZQorY2xhc3MgVGVzdEFkZHJlc3NIZWFkZXIoVGVzdEhlYWRlckJhc2UpOgorCisgICAgZXhhbXBsZV9wYXJhbXMgPSB7CisKKyAgICAgICAgJ2VtcHR5JzoKKyAgICAgICAgICAgICgnPD4nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJzw+JywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnPD4nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdhZGRyZXNzX29ubHknOgorICAgICAgICAgICAgKCd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgJ3ppcHB5QHBpbmhlYWQuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnemlwcHlAcGluaGVhZC5jb20nLAorICAgICAgICAgICAgICd6aXBweScsCisgICAgICAgICAgICAgJ3BpbmhlYWQuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnbmFtZV9hbmRfYWRkcmVzcyc6CisgICAgICAgICAgICAoJ1phcGhyb2QgQmVibGVicnV4IDx6aXBweUBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCA8emlwcHlAcGluaGVhZC5jb20+JywKKyAgICAgICAgICAgICAnWmFwaHJvZCBCZWJsZWJydXgnLAorICAgICAgICAgICAgICd6aXBweUBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ3ppcHB5JywKKyAgICAgICAgICAgICAncGluaGVhZC5jb20nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdxdW90ZWRfbG9jYWxfcGFydCc6CisgICAgICAgICAgICAoJ1phcGhyb2QgQmVibGVicnV4IDwiZm9vIGJhciJAcGluaGVhZC5jb20+JywKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAgICAnWmFwaHJvZCBCZWJsZWJydXggPCJmb28gYmFyIkBwaW5oZWFkLmNvbT4nLAorICAgICAgICAgICAgICdaYXBocm9kIEJlYmxlYnJ1eCcsCisgICAgICAgICAgICAgJyJmb28gYmFyIkBwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgJ2ZvbyBiYXInLAorICAgICAgICAgICAgICdwaW5oZWFkLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9wYXJlbnNfaW5fbmFtZSc6CisgICAgICAgICAgICAociciQSBcKFNwZWNpYWxcKSBQZXJzb24iIDxwZXJzb25AZG9tLmFpbj4nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgICciQSAoU3BlY2lhbCkgUGVyc29uIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICAnQSAoU3BlY2lhbCkgUGVyc29uJywKKyAgICAgICAgICAgICAncGVyc29uQGRvbS5haW4nLAorICAgICAgICAgICAgICdwZXJzb24nLAorICAgICAgICAgICAgICdkb20uYWluJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAncXVvdGVkX2JhY2tzbGFzaGVzX2luX25hbWUnOgorICAgICAgICAgICAgKHInIkFydGh1ciBcXEJhY2tzbGFzaFxcIEZvb2JhciIgPHBlcnNvbkBkb20uYWluPicsCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgciciQXJ0aHVyIFxcQmFja3NsYXNoXFwgRm9vYmFyIiA8cGVyc29uQGRvbS5haW4+JywKKyAgICAgICAgICAgICByJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLAorICAgICAgICAgICAgICdwZXJzb25AZG9tLmFpbicsCisgICAgICAgICAgICAgJ3BlcnNvbicsCisgICAgICAgICAgICAgJ2RvbS5haW4nLAorICAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICduYW1lX3dpdGhfZG90JzoKKyAgICAgICAgICAgICgnSm9obiBYLiBEb2UgPGp4ZEBleGFtcGxlLmNvbT4nLAorICAgICAgICAgICAgIFtlcnJvcnMuT2Jzb2xldGVIZWFkZXJEZWZlY3RdLAorICAgICAgICAgICAgICciSm9obiBYLiBEb2UiIDxqeGRAZXhhbXBsZS5jb20+JywKKyAgICAgICAgICAgICAnSm9obiBYLiBEb2UnLAorICAgICAgICAgICAgICdqeGRAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdqeGQnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3F1b3RlZF9zdHJpbmdzX2luX2xvY2FsX3BhcnQnOgorICAgICAgICAgICAgKCciImV4YW1wbGUiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBbZXJyb3JzLkludmFsaWRIZWFkZXJEZWZlY3RdKjMsCisgICAgICAgICAgICAgJyJleGFtcGxlIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnImV4YW1wbGUgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdleGFtcGxlIGV4YW1wbGUnLAorICAgICAgICAgICAgICdleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ2VzY2FwZWRfcXVvdGVkX3N0cmluZ3NfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAociciXCJleGFtcGxlXCIgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgIHInIlwiZXhhbXBsZVwiIGV4YW1wbGUiQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICByJyJcImV4YW1wbGVcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgciciZXhhbXBsZSIgZXhhbXBsZScsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgIE5vbmUpLAorCisgICAgICAgICdlc2NhcGVkX2VzY2FwZXNfaW5fbG9jYWxfcGFydCc6CisgICAgICAgICAgICAociciXFwiZXhhbXBsZVxcIiBleGFtcGxlIkBleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5JbnZhbGlkSGVhZGVyRGVmZWN0XSo1LAorICAgICAgICAgICAgIHInIlxcZXhhbXBsZVxcXFwgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgIHInIlxcZXhhbXBsZVxcXFwgZXhhbXBsZSJAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIHInXGV4YW1wbGVcXCBleGFtcGxlJywKKyAgICAgICAgICAgICAnZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgTm9uZSksCisKKyAgICAgICAgJ3NwYWNlc19pbl91bnF1b3RlZF9sb2NhbF9wYXJ0X2NvbGxhcHNlZCc6CisgICAgICAgICAgICAoJ21lcndvayAgd29rICBAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgIFtlcnJvcnMuSW52YWxpZEhlYWRlckRlZmVjdF0qMiwKKyAgICAgICAgICAgICAnIm1lcndvayB3b2siQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnIm1lcndvayB3b2siQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnbWVyd29rIHdvaycsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICAnc3BhY2VzX2Fyb3VuZF9kb3RzX2luX2xvY2FsX3BhcnRfcmVtb3ZlZCc6CisgICAgICAgICAgICAoJ21lcndvay4gd29rIC4gIHdva0BleGFtcGxlLmNvbScsCisgICAgICAgICAgICAgW2Vycm9ycy5PYnNvbGV0ZUhlYWRlckRlZmVjdF0sCisgICAgICAgICAgICAgJ21lcndvay53b2sud29rQGV4YW1wbGUuY29tJywKKyAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAnbWVyd29rLndvay53b2tAZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgICdtZXJ3b2sud29rLndvaycsCisgICAgICAgICAgICAgJ2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICBOb25lKSwKKworICAgICAgICB9CisKKyAgICAgICAgIyBYWFg6IE5lZWQgbWFueSBtb3JlIGV4YW1wbGVzLCBhbmQgaW4gcGFydGljdWxhciBzb21lIHdpdGggbmFtZXMgaW4KKyAgICAgICAgIyB0cmFpbGluZyBjb21tZW50cywgd2hpY2ggYXJlbid0IGN1cnJlbnRseSBoYW5kbGVkLiAgY29tbWVudHMgaW4KKyAgICAgICAgIyBnZW5lcmFsIGFyZSBub3QgaGFuZGxlZCB5ZXQuCisKKyAgICBkZWYgZXhhbXBsZV9hc19hZGRyZXNzKHNlbGYsIHNvdXJjZSwgZGVmZWN0cywgZGVjb2RlZCwgZGlzcGxheV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9zcGVjLCB1c2VybmFtZSwgZG9tYWluLCBjb21tZW50KToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsIHNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCBkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIGEgPSBoLmFkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksIGRlY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZ3JvdXBzKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYV0sIGxpc3QoaC5ncm91cHNbMF0uYWRkcmVzc2VzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYV0sIGxpc3QoaC5hZGRyZXNzZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCBkaXNwbGF5X25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5hZGRyX3NwZWMsIGFkZHJfc3BlYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCB1c2VybmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRvbWFpbiwgZG9tYWluKQorICAgICAgICAjIFhYWDogd2UgaGF2ZSBubyBjb21tZW50IHN1cHBvcnQgeWV0LgorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbChhLmNvbW1lbnQsIGNvbW1lbnQpCisKKyAgICBkZWYgZXhhbXBsZV9hc19ncm91cChzZWxmLCBzb3VyY2UsIGRlZmVjdHMsIGRlY29kZWQsIGRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3NwZWMsIHVzZXJuYW1lLCBkb21haW4sIGNvbW1lbnQpOgorICAgICAgICBzb3VyY2UgPSAnZm9vOiB7fTsnLmZvcm1hdChzb3VyY2UpCisgICAgICAgIGdkZWNvZGVkID0gJ2Zvbzoge307Jy5mb3JtYXQoZGVjb2RlZCkgaWYgZGVjb2RlZCBlbHNlICdmb286OycKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3RvJywgc291cmNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGdkZWNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydERlZmVjdHNFcXVhbChoLmRlZmVjdHMsIGRlZmVjdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5ncm91cHNbMF0uYWRkcmVzc2VzLCBoLmFkZHJlc3NlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmFkZHJlc3NlcyksIDEpCisgICAgICAgIGEgPSBoLmFkZHJlc3Nlc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgZGVjb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgZGlzcGxheV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCBhZGRyX3NwZWMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgdXNlcm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sIGRvbWFpbikKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9hZGRyZXNzX2xpc3Qoc2VsZik6CisgICAgICAgIHZhbHVlID0gKCdGcmVkIDxkaW5zZGFsZUBweXRob24ub3JnPiwgZm9vQGV4YW1wbGUuY29tLCAnCisgICAgICAgICAgICAgICAgICAgICciSGFycnkgVy4gSGFzdGluZ3MiIDxoYXN0eUBleGFtcGxlLmNvbT4nKQorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaC5ncm91cHMpLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmFkZHJlc3NlcyksIDMpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1tpXS5hZGRyZXNzZXNbMF0sIGguYWRkcmVzc2VzW2ldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmFkZHJlc3Nlc1swXSksICdGcmVkIDxkaW5zZGFsZUBweXRob24ub3JnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzFdKSwgJ2Zvb0BleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzWzJdKSwKKyAgICAgICAgICAgICciSGFycnkgVy4gSGFzdGluZ3MiIDxoYXN0eUBleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguYWRkcmVzc2VzWzJdLmRpc3BsYXlfbmFtZSwKKyAgICAgICAgICAgICdIYXJyeSBXLiBIYXN0aW5ncycpCisKKyAgICBkZWYgdGVzdF9jb21wbGV4X2FkZHJlc3NfbGlzdChzZWxmKToKKyAgICAgICAgZXhhbXBsZXMgPSBsaXN0KHNlbGYuZXhhbXBsZV9wYXJhbXMudmFsdWVzKCkpCisgICAgICAgIHNvdXJjZSA9ICgnZHVtbXkgbGlzdDo7LCBhbm90aGVyOiAoZW1wdHkpOywnICsKKyAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzBdIGZvciB4IGluIGV4YW1wbGVzWzo0XV0pICsgJywgJyArCisgICAgICAgICAgICAgICAgIHInIkEgXCJsaXN0XCIiOiAnICsKKyAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKFt4WzBdIGZvciB4IGluIGV4YW1wbGVzWzQ6Nl1dKSArICc7LCcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMF0gZm9yIHggaW4gZXhhbXBsZXNbNjpdXSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyBYWFg6IHRoZSBmYWN0IHRoYXQgKGVtcHR5KSBkaXNhcHBlYXJzIGhlcmUgaXMgYSBwb3RlbnRpYWwgQVBJIGRlc2lnbgorICAgICAgICAjIGJ1Zy4gIFdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGEgd2F5IHRvIHByZXNlcnZlIGNvbW1lbnRzLgorICAgICAgICBleHBlY3RlZCA9ICgnZHVtbXkgbGlzdDo7LCBhbm90aGVyOjssICcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMl0gZm9yIHggaW4gZXhhbXBsZXNbOjRdXSkgKyAnLCAnICsKKyAgICAgICAgICAgICAgICAgciciQSBcImxpc3RcIiI6ICcgKworICAgICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMl0gZm9yIHggaW4gZXhhbXBsZXNbNDo2XV0pICsgJzssICcgKworICAgICAgICAgICAgICAgICAnLCAnLmpvaW4oW3hbMl0gZm9yIHggaW4gZXhhbXBsZXNbNjpdXSkKKyAgICAgICAgICAgICkKKworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5zcGxpdCgnLCcpLCBleHBlY3RlZC5zcGxpdCgnLCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLmdyb3VwcyksIDcgKyBsZW4oZXhhbXBsZXMpIC0gNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1swXS5kaXNwbGF5X25hbWUsICdkdW1teSBsaXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1sxXS5kaXNwbGF5X25hbWUsICdhbm90aGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmdyb3Vwc1s2XS5kaXNwbGF5X25hbWUsICdBICJsaXN0IicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguYWRkcmVzc2VzKSwgbGVuKGV4YW1wbGVzKSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShoLmdyb3Vwc1tpKzJdLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguZ3JvdXBzW2krMl0uYWRkcmVzc2VzWzBdKSwgZXhhbXBsZXNbaV1bMl0pCisgICAgICAgIGZvciBpIGluIHJhbmdlKDcsIDcgKyBsZW4oZXhhbXBsZXMpIC0gNik6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShoLmdyb3Vwc1tpXS5kaXNwbGF5X25hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihoLmdyb3Vwc1tpXS5hZGRyZXNzZXNbMF0pLCBleGFtcGxlc1tpLTFdWzJdKQorICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4oZXhhbXBsZXMpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGguYWRkcmVzc2VzW2ldKSwgZXhhbXBsZXNbaV1bMl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguYWRkcmVzc2VzW2ldLmFkZHJfc3BlYywgZXhhbXBsZXNbaV1bNF0pCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3JlYWRfb25seShzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ3NlbmRlcicsICdhYmNAeHl6LmNvbScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgaC5hZGRyZXNzID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X2FkZHJlc3Nlc19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzZW5kZXInLCAnYWJjQHh5ei5jb20nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguYWRkcmVzc2VzID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X2dyb3Vwc19yZWFkX29ubHkoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzZW5kZXInLCAnYWJjQHh5ei5jb20nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGguZ3JvdXBzID0gJ2ZvbycKKworICAgIGRlZiB0ZXN0X2FkZHJlc3Nlc190eXBlcyhzZWxmKToKKyAgICAgICAgc291cmNlID0gJ21lIDx3aG9AZXhhbXBsZS5jb20+JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmFkZHJlc3NlcywgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmFkZHJlc3Nlc1swXSwgQWRkcmVzcykKKworICAgIGRlZiB0ZXN0X2dyb3Vwc190eXBlcyhzZWxmKToKKyAgICAgICAgc291cmNlID0gJ21lIDx3aG9AZXhhbXBsZS5jb20+JworICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmdyb3VwcywgdHVwbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmdyb3Vwc1swXSwgR3JvdXApCisKKyAgICBkZWYgdGVzdF9zZXRfZnJvbV9BZGRyZXNzKHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAnbWUgPGZvb0BleGFtcGxlLmNvbT4nKQorCisgICAgZGVmIHRlc3Rfc2V0X2Zyb21fQWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcigndG8nLCBbQWRkcmVzcygnbWUnLCAnZm9vJywgJ2V4YW1wbGUuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd5b3UnLCAnYmFyJywgJ2V4YW1wbGUuY29tJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPiwgeW91IDxiYXJAZXhhbXBsZS5jb20+JykKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0FkZHJlc3NfYW5kX0dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtBZGRyZXNzKCdtZScsICdmb28nLCAnZXhhbXBsZS5jb20nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwKCdiaW5nJywgW0FkZHJlc3MoJ2ZpeicsICd6JywgJ2IuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd6aWYnLCAnZicsICdjLmNvbScpXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzKCd5b3UnLCAnYmFyJywgJ2V4YW1wbGUuY29tJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgsICdtZSA8Zm9vQGV4YW1wbGUuY29tPiwgYmluZzogZml6IDx6QGIuY29tPiwgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aWYgPGZAYy5jb20+OywgeW91IDxiYXJAZXhhbXBsZS5jb20+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD00MCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3RvOiBtZSA8Zm9vQGV4YW1wbGUuY29tPixcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgYmluZzogZml6IDx6QGIuY29tPiwgemlmIDxmQGMuY29tPjssXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAnIHlvdSA8YmFyQGV4YW1wbGUuY29tPlxuJykKKworICAgIGRlZiB0ZXN0X3NldF9mcm9tX0dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCd0bycsIFtHcm91cCgnYmluZycsIFtBZGRyZXNzKCdmaXonLCAneicsICdiLmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcygnemlmJywgJ2YnLCAnYy5jb20nKV0pXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLCAnYmluZzogZml6IDx6QGIuY29tPiwgemlmIDxmQGMuY29tPjsnKQorCisKK2NsYXNzIFRlc3RBZGRyZXNzQW5kR3JvdXAoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBkZWYgX3Rlc3RfYXR0cl9ybyhzZWxmLCBvYmosIGF0dHIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBhdHRyLCAnZm9vJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZGlzcGxheV9uYW1lX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKSwgJ2Rpc3BsYXlfbmFtZScpCisKKyAgICBkZWYgdGVzdF9hZGRyZXNzX3VzZXJuYW1lX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKSwgJ3VzZXJuYW1lJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZG9tYWluX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oQWRkcmVzcygnZm9vJywgJ2JhcicsICdiYXonKSwgJ2RvbWFpbicpCisKKyAgICBkZWYgdGVzdF9ncm91cF9kaXNwbGF5X25hbWVfcm8oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfYXR0cl9ybyhHcm91cCgnZm9vJyksICdkaXNwbGF5X25hbWUnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfYWRkcmVzc2VzX3JvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2F0dHJfcm8oR3JvdXAoJ2ZvbycpLCAnYWRkcmVzc2VzJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZnJvbV91c2VybmFtZV9kb21haW4oc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCdmb28nLCAnYmFyJywgJ2JheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2ZvbyA8YmFyQGJhej4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19mcm9tX2FkZHJfc3BlYyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEudXNlcm5hbWUsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ2JhckBiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2ZvbyA8YmFyQGJhej4nKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc193aXRoX25vX2Rpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoYWRkcl9zcGVjPSdiYXJAYmF6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYmFyQGJheicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9udWxsX2FkZHJlc3Moc2VsZik6CisgICAgICAgIGEgPSBBZGRyZXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnPD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJzw+JykKKworICAgIGRlZiB0ZXN0X2RvbWFpbl9vbmx5KHNlbGYpOgorICAgICAgICAjIFRoaXMgaXNuJ3QgcmVhbGx5IGEgdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgYSA9IEFkZHJlc3MoZG9tYWluPSdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmRpc3BsYXlfbmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLmFkZHJfc3BlYywgJ0BidXp6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYSksICdAYnV6eicpCisKKyAgICBkZWYgdGVzdF91c2VybmFtZV9vbmx5KHNlbGYpOgorICAgICAgICAjIFRoaXMgaXNuJ3QgcmVhbGx5IGEgdmFsaWQgYWRkcmVzcy4KKyAgICAgICAgYSA9IEFkZHJlc3ModXNlcm5hbWU9J2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnYnV6eicpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfb25seShzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2J1enonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZGlzcGxheV9uYW1lLCAnYnV6eicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnPD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihhKSwgJ2J1enogPD4nKQorCisgICAgZGVmIHRlc3RfcXVvdGluZyhzZWxmKToKKyAgICAgICAgIyBJZGVhbGx5IHdlJ2QgY2hlY2sgZXZlcnkgc3BlY2lhbCBpbmRpdmlkdWFsbHksIGJ1dCBJJ20gbm90IHVwIGZvcgorICAgICAgICAjIHdyaXRpbmcgdGhhdCBtYW55IHRlc3RzLgorICAgICAgICBhID0gQWRkcmVzcygnU2FyYSBKLicsICdiYWQgbmFtZScsICdleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICdTYXJhIEouJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnVzZXJuYW1lLCAnYmFkIG5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuZG9tYWluLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnImJhZCBuYW1lIkBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnIlNhcmEgSi4iIDwiYmFkIG5hbWUiQGV4YW1wbGUuY29tPicpCisKKyAgICBkZWYgdGVzdF9pbDhuKHNlbGYpOgorICAgICAgICBhID0gQWRkcmVzcygnw4lyaWMnLCAnd29rJywgJ2V4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kaXNwbGF5X25hbWUsICfDiXJpYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS51c2VybmFtZSwgJ3dvaycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5kb21haW4sICdleMOgbXBsZS5jb20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuYWRkcl9zcGVjLCAnd29rQGV4w6BtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGEpLCAnw4lyaWMgPHdva0BleMOgbXBsZS5jb20+JykKKworICAgICMgWFhYOiB0aGVyZSBpcyBhbiBBUEkgZGVzaWduIGlzc3VlIHRoYXQgbmVlZHMgdG8gYmUgc29sdmVkIGhlcmUuCisgICAgI2RlZiB0ZXN0X25vbl9hc2NpaV91c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgIyAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICMgICAgICAgIEFkZHJlc3MoJ2ZvbycsICd3xZFrJywgJ2V4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X25vbl9hc2NpaV91c2VybmFtZV9pbl9hZGRyX3NwZWNfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSd3xZFrQGV4YW1wbGUuY29tJykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfYWRkcl9zcGVjX2FuZF91c2VybmFtZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIHVzZXJuYW1lPSdiaW5nJywgYWRkcl9zcGVjPSdiYXJAYmF6JykKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfYWRkcl9zcGVjX2FuZF9kb21haW5fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCBkb21haW49J2JpbmcnLCBhZGRyX3NwZWM9J2JhckBiYXonKQorCisgICAgZGVmIHRlc3RfYWRkcmVzc19hZGRyX3NwZWNfYW5kX3VzZXJuYW1lX2FuZF9kb21haW5fcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBBZGRyZXNzKCdmb28nLCB1c2VybmFtZT0nYm9uZycsIGRvbWFpbj0nYmluZycsIGFkZHJfc3BlYz0nYmFyQGJheicpCisKKyAgICBkZWYgdGVzdF9zcGFjZV9pbl9hZGRyX3NwZWNfdXNlcm5hbWVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgQWRkcmVzcygnZm9vJywgYWRkcl9zcGVjPSJiYWQgbmFtZUBleGFtcGxlLmNvbSIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcl9zZXBjX3JhaXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIEFkZHJlc3MoJ2ZvbycsIGFkZHJfc3BlYz0ibmFtZUBleFtdYW1wbGUuY29tIikKKworICAgIGRlZiB0ZXN0X2VtcHR5X2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuYWRkcmVzc2VzLCB0dXBsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2Zvbzo7JykKKworICAgIGRlZiB0ZXN0X2VtcHR5X2dyb3VwX2xpc3Qoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vJywgYWRkcmVzc2VzPVtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuZGlzcGxheV9uYW1lLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb286OycpCisKKyAgICBkZWYgdGVzdF9udWxsX2dyb3VwKHNlbGYpOgorICAgICAgICBnID0gR3JvdXAoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdOb25lOjsnKQorCisgICAgZGVmIHRlc3RfZ3JvdXBfd2l0aF9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgIGFkZHJzID0gW0FkZHJlc3MoJ2InLCAnYicsICdjJyksIEFkZHJlc3MoJ2EnLCAnYicsJ2MnKV0KKyAgICAgICAgZyA9IEdyb3VwKCdmb28nLCBhZGRycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmRpc3BsYXlfbmFtZSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5hZGRyZXNzZXMsIHR1cGxlKGFkZHJzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb286IGIgPGJAYz4sIGEgPGJAYz47JykKKworICAgIGRlZiB0ZXN0X2dyb3VwX3dpdGhfYWRkcmVzc2VzX25vX2Rpc3BsYXlfbmFtZShzZWxmKToKKyAgICAgICAgYWRkcnMgPSBbQWRkcmVzcygnYicsICdiJywgJ2MnKSwgQWRkcmVzcygnYScsICdiJywnYycpXQorICAgICAgICBnID0gR3JvdXAoYWRkcmVzc2VzPWFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ05vbmU6IGIgPGJAYz4sIGEgPGJAYz47JykKKworICAgIGRlZiB0ZXN0X2dyb3VwX3dpdGhfb25lX2FkZHJlc3Nfbm9fZGlzcGxheV9uYW1lKHNlbGYpOgorICAgICAgICBhZGRycyA9IFtBZGRyZXNzKCdiJywgJ2InLCAnYycpXQorICAgICAgICBnID0gR3JvdXAoYWRkcmVzc2VzPWFkZHJzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmRpc3BsYXlfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoYWRkcnMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihnKSwgJ2IgPGJAYz4nKQorCisgICAgZGVmIHRlc3RfZGlzcGxheV9uYW1lX3F1b3Rpbmcoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vLmJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28uYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICciZm9vLmJhciI6OycpCisKKyAgICBkZWYgdGVzdF9kaXNwbGF5X25hbWVfYmxhbmtzX25vdF9xdW90ZWQoc2VsZik6CisgICAgICAgIGcgPSBHcm91cCgnZm9vIGJhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5kaXNwbGF5X25hbWUsICdmb28gYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmFkZHJlc3NlcywgdHVwbGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZyksICdmb28gYmFyOjsnKQorCisgICAgZGVmIHRlc3Rfc2V0X21lc3NhZ2VfaGVhZGVyX2Zyb21fYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYSA9IEFkZHJlc3MoJ2ZvbycsICdiYXInLCAnZXhhbXBsZS5jb20nKQorICAgICAgICBtID0gTWVzc2FnZShwb2xpY3k9cG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1bJ1RvJ10gPSBhCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXSwgJ2ZvbyA8YmFyQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsndG8nXS5hZGRyZXNzZXMsIChhLCkpCisKKyAgICBkZWYgdGVzdF9zZXRfbWVzc2FnZV9oZWFkZXJfZnJvbV9ncm91cChzZWxmKToKKyAgICAgICAgZyA9IEdyb3VwKCdmb28gYmFyJykKKyAgICAgICAgbSA9IE1lc3NhZ2UocG9saWN5PXBvbGljeS5kZWZhdWx0KQorICAgICAgICBtWydUbyddID0gZworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ3RvJ10sICdmb28gYmFyOjsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ3RvJ10uYWRkcmVzc2VzLCBnLmFkZHJlc3NlcykKKworCitjbGFzcyBUZXN0Rm9sZGluZyhUZXN0SGVhZGVyQmFzZSk6CisKKyAgICBkZWYgdGVzdF9zaG9ydF91bnN0cnVjdHVyZWQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdzdWJqZWN0JywgJ3RoaXMgaXMgYSB0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3ViamVjdDogdGhpcyBpcyBhIHRlc3RcbicpCisKKyAgICBkZWYgdGVzdF9sb25nX3Vuc3RydWN0dXJlZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAnVGhpcyBpcyBhIGxvbmcgaGVhZGVyICcKKyAgICAgICAgICAgICdsaW5lIHRoYXQgd2lsbCBuZWVkIHRvIGJlIGZvbGRlZCBpbnRvIHR3byBsaW5lcyAnCisgICAgICAgICAgICAnYW5kIHdpbGwgZGVtb25zdHJhdGUgYmFzaWMgZm9sZGluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnU3ViamVjdDogVGhpcyBpcyBhIGxvbmcgaGVhZGVyIGxpbmUgdGhhdCB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0byBiZSBmb2xkZWQgaW50byB0d28gbGluZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgYW5kIHdpbGwgZGVtb25zdHJhdGUgYmFzaWMgZm9sZGluZ1xuJykKKworICAgIGRlZiB0ZXN0X3Vuc3RydWN0dXJlZF9zaG9ydF9tYXhfbGluZV9sZW5ndGgoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXMgaXMgYSBzaG9ydCBoZWFkZXIgJworICAgICAgICAgICAgJ3RoYXQgd2lsbCBiZSBmb2xkZWQgYW55d2F5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgICAgIFN1YmplY3Q6IHRoaXMgaXMgYQorICAgICAgICAgICAgICAgICBzaG9ydCBoZWFkZXIgdGhhdAorICAgICAgICAgICAgICAgICB3aWxsIGJlIGZvbGRlZAorICAgICAgICAgICAgICAgICBhbnl3YXkKKyAgICAgICAgICAgICAgICAiIiIpKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfc2luZ2xlX3dvcmQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQpLCAnU3ViamVjdDogdGVzdFxuJykKKworICAgIGRlZiB0ZXN0X2ZvbGRfdW5zdHJ1Y3R1cmVkX3Nob3J0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICd0ZXN0IHRlc3QgdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnU3ViamVjdDogdGVzdCB0ZXN0IHRlc3RcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX292ZXJsb25nX3dvcmQoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2ZhJworICAgICAgICAgICAgJ3NpbmdsZXdvcmR0aGF0d29udGZpdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0yMCkpLAorICAgICAgICAgICAgJ1N1YmplY3Q6IHRoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2Zhc2luZ2xld29yZHRoYXR3b250Zml0XG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfd2l0aF90d29fb3Zlcmxvbmdfd29yZHMoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdTdWJqZWN0JywgJ3RoaXNpc2F2ZXJ5bG9uZ2xpbmVjb25zaXN0aW5nb2ZhJworICAgICAgICAgICAgJ3NpbmdsZXdvcmR0aGF0d29udGZpdCBwbHVzYW5vdGhlcnZlcnlsb25nd29yZHRoYXR3b250Zml0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGguZm9sZChwb2xpY3k9cG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTIwKSksCisgICAgICAgICAgICAnU3ViamVjdDogdGhpc2lzYXZlcnlsb25nbGluZWNvbnNpc3RpbmdvZmFzaW5nbGV3b3JkdGhhdHdvbnRmaXRcbicKKyAgICAgICAgICAgICAgICAnIHBsdXNhbm90aGVydmVyeWxvbmd3b3JkdGhhdHdvbnRmaXRcbicpCisKKyAgICBkZWYgdGVzdF9mb2xkX3Vuc3RydWN0dXJlZF93aXRoX3NsaWdodGx5X2xvbmdfd29yZChzZWxmKToKKyAgICAgICAgaCA9IHNlbGYubWFrZV9oZWFkZXIoJ1N1YmplY3QnLCAndGhpc2xvbmd3b3JkaXNsZXNzdGhhbm1heGxpbmVsZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdC5jbG9uZShtYXhfbGluZV9sZW5ndGg9MzUpKSwKKyAgICAgICAgICAgICdTdWJqZWN0OlxuIHRoaXNsb25nd29yZGlzbGVzc3RoYW5tYXhsaW5lbGVuXG4nKQorCisgICAgZGVmIHRlc3RfZm9sZF91bnN0cnVjdHVyZWRfd2l0aF9jb21tYXMoc2VsZik6CisgICAgICAgICMgVGhlIG9sZCB3cmFwcGVyIHdvdWxkIGZvbGQgdGhpcyBhdCB0aGUgY29tbWFzLgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignU3ViamVjdCcsICJUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byAiCisgICAgICAgICAgICAiZGVtb25zdHJhdGUsIGluIGEgZmFpcmx5IHN1c2luY3Qgd2F5LCB0aGF0IHdlIG5vdyBkbyAiCisgICAgICAgICAgICAibm90IGdpdmUgYSAsIHNwZWNpYWwgdHJlYXRtZW50IGluIHVuc3RydWN0dXJlZCBoZWFkZXJzLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBoLmZvbGQocG9saWN5PXBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD02MCkpLAorICAgICAgICAgICAgdGV4dHdyYXAuZGVkZW50KCIiIlwKKyAgICAgICAgICAgICAgICBTdWJqZWN0OiBUaGlzIGhlYWRlciBpcyBpbnRlbmRlZCB0byBkZW1vbnN0cmF0ZSwgaW4gYSBmYWlybHkKKyAgICAgICAgICAgICAgICAgc3VzaW5jdCB3YXksIHRoYXQgd2Ugbm93IGRvIG5vdCBnaXZlIGEgLCBzcGVjaWFsIHRyZWF0bWVudAorICAgICAgICAgICAgICAgICBpbiB1bnN0cnVjdHVyZWQgaGVhZGVycy4KKyAgICAgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRfYWRkcmVzc19saXN0KHNlbGYpOgorICAgICAgICBoID0gc2VsZi5tYWtlX2hlYWRlcignVG8nLCAnIlRoZW9kb3JlIEguIFBlcmZlY3QiIDx5ZXNAbWFuLmNvbT4sICcKKyAgICAgICAgICAgICciTXkgYWRkcmVzcyBpcyB2ZXJ5IGxvbmcgYmVjYXVzZSBteSBuYW1lIGlzIGxvbmciIDxmb29AYmFyLmNvbT4sICcKKyAgICAgICAgICAgICciT25seSBBLiBGcmllbmQiIDxub0B5ZXMuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgICAgICBUbzogIlRoZW9kb3JlIEguIFBlcmZlY3QiIDx5ZXNAbWFuLmNvbT4sCisgICAgICAgICAgICAgIk15IGFkZHJlc3MgaXMgdmVyeSBsb25nIGJlY2F1c2UgbXkgbmFtZSBpcyBsb25nIiA8Zm9vQGJhci5jb20+LAorICAgICAgICAgICAgICJPbmx5IEEuIEZyaWVuZCIgPG5vQHllcy5jb20+CisgICAgICAgICAgICAgIiIiKSkKKworICAgIGRlZiB0ZXN0X2ZvbGRfZGF0ZV9oZWFkZXIoc2VsZik6CisgICAgICAgIGggPSBzZWxmLm1ha2VfaGVhZGVyKCdEYXRlJywgJ1NhdCwgMiBGZWIgMjAwMiAxNzowMDowNiAtMDgwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaC5mb2xkKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZTogU2F0LCAwMiBGZWIgMjAwMiAxNzowMDowNiAtMDgwMFxuJykKKworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYzNmODAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weQpAQCAtMCwwICsxLDE4IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKKworCitjbGFzcyBUZXN0KFRlc3RFbWFpbEJhc2UpOgorCisgICAgcG9saWN5ID0gcG9saWN5LmRlZmF1bHQKKworICAgIGRlZiB0ZXN0X2Vycm9yX29uX3NldGl0ZW1faWZfbWF4X2NvdW50X2V4Y2VlZGVkKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygiIikKKyAgICAgICAgbVsnVG8nXSA9ICdhYmNAeHl6JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbVsnVG8nXSA9ICd4eXpAYWJjJworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWJkMTFhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BhcnNlci5weQpAQCAtMCwwICsxLDM2IEBACitpbXBvcnQgaW8KK2ltcG9ydCBlbWFpbAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCisKKworY2xhc3MgVGVzdEN1c3RvbU1lc3NhZ2UoVGVzdEVtYWlsQmFzZSk6CisKKyAgICBjbGFzcyBNeU1lc3NhZ2UoTWVzc2FnZSk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb2xpY3kpOgorICAgICAgICAgICAgc2VsZi5jaGVja19wb2xpY3kgPSBwb2xpY3kKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisgICAgTXlQb2xpY3kgPSBUZXN0RW1haWxCYXNlLnBvbGljeS5jbG9uZShsaW5lc2VwPSdib28nKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX21lc3NhZ2VfZ2V0c19wb2xpY3lfaWZfcG9zc2libGVfZnJvbV9zdHJpbmcoc2VsZik6CisgICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IGJvZ3VzXG5cbm1zZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLk15TWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UobXNnLCBzZWxmLk15TWVzc2FnZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobXNnLmNoZWNrX3BvbGljeSwgc2VsZi5NeVBvbGljeSkKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2dldHNfcG9saWN5X2lmX3Bvc3NpYmxlX2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgc291cmNlX2ZpbGUgPSBpby5TdHJpbmdJTygiU3ViamVjdDogYm9ndXNcblxubXNnXG4iKQorICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShzb3VyY2VfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5NeU1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtc2csIHNlbGYuTXlNZXNzYWdlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtc2cuY2hlY2tfcG9saWN5LCBzZWxmLk15UG9saWN5KQorCisgICAgIyBYWFggYWRkIHRlc3RzIGZvciBvdGhlciBmdW5jdGlvbnMgdGhhdCB0YWtlIE1lc3NhZ2UgYXJnLgorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGlja2xlYWJsZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9waWNrbGVhYmxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhYThkMjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGlja2xlYWJsZS5weQpAQCAtMCwwICsxLDc0IEBACitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IGNvcHkKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBlbWFpbAoraW1wb3J0IGVtYWlsLm1lc3NhZ2UKK2Zyb20gZW1haWwgaW1wb3J0IHBvbGljeQorZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgSGVhZGVyUmVnaXN0cnkKK2Zyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlLCBwYXJhbWV0ZXJpemUKKworCitAcGFyYW1ldGVyaXplCitjbGFzcyBUZXN0UGlja2xlQ29weUhlYWRlcihUZXN0RW1haWxCYXNlKToKKworICAgIGhlYWRlcl9mYWN0b3J5ID0gSGVhZGVyUmVnaXN0cnkoKQorCisgICAgdW5zdHJ1Y3R1cmVkID0gaGVhZGVyX2ZhY3RvcnkoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKQorCisgICAgaGVhZGVyX3BhcmFtcyA9IHsKKyAgICAgICAgJ3N1YmplY3QnOiAoJ3N1YmplY3QnLCAndGhpcyBpcyBhIHRlc3QnKSwKKyAgICAgICAgJ2Zyb20nOiAgICAoJ2Zyb20nLCAgICAnZnJvZG9AbW9yZG9yLm5ldCcpLAorICAgICAgICAndG8nOiAgICAgICgndG8nLCAgICAgICdhOiBrQGIuY29tLCB5QHouY29tOywgakBmLmNvbScpLAorICAgICAgICAnZGF0ZSc6ICAgICgnZGF0ZScsICAgICdUdWUsIDI5IE1heSAyMDEyIDA5OjI0OjI2ICsxMDAwJyksCisgICAgICAgIH0KKworICAgIGRlZiBoZWFkZXJfYXNfZGVlcGNvcHkoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBoZWFkZXIgPSBzZWxmLmhlYWRlcl9mYWN0b3J5KG5hbWUsIHZhbHVlKQorICAgICAgICBoID0gY29weS5kZWVwY29weShoZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGgpLCBzdHIoaGVhZGVyKSkKKworICAgIGRlZiBoZWFkZXJfYXNfcGlja2xlKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgaGVhZGVyID0gc2VsZi5oZWFkZXJfZmFjdG9yeShuYW1lLCB2YWx1ZSkKKyAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhoZWFkZXIpCisgICAgICAgIGggPSBwaWNrbGUubG9hZHMocCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaCksIHN0cihoZWFkZXIpKQorCisKK0BwYXJhbWV0ZXJpemUKK2NsYXNzIFRlc3RQaWNrbGVDb3B5TWVzc2FnZShUZXN0RW1haWxCYXNlKToKKworICAgICMgTWVzc2FnZSBvYmplY3RzIGFyZSBhIHNlcXVlbmNlLCBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhlbSBhIG9uZS10dXBsZSBpbgorICAgICMgbXNnX3BhcmFtcyBzbyB0aGV5IGdldCBwYXNzZWQgdG8gdGhlIHBhcmFtZXRlcml6ZWQgdGVzdCBtZXRob2QgYXMgYQorICAgICMgc2luZ2xlIGFyZ3VtZW50IGluc3RlYWQgb2YgYXMgYSBsaXN0IG9mIGhlYWRlcnMuCisgICAgbXNnX3BhcmFtcyA9IHt9CisKKyAgICAjIE5vdGU6IHRoZXJlIHdpbGwgYmUgbm8gY3VzdG9tIGhlYWRlciBvYmplY3RzIGluIHRoZSBwYXJzZWQgbWVzc2FnZS4KKyAgICBtc2dfcGFyYW1zWydwYXJzZWQnXSA9IChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgIERhdGU6IFR1ZSwgMjkgTWF5IDIwMTIgMDk6MjQ6MjYgKzEwMDAKKyAgICAgICAgRnJvbTogZnJvZG9AbW9yZG9yLm5ldAorICAgICAgICBUbzogYmlsYm9AdW5kZXJoaWxsLm9yZworICAgICAgICBTdWJqZWN0OiBoZWxwCisKKyAgICAgICAgSSB0aGluayBJIGZvcmdvdCB0aGUgcmluZy4KKyAgICAgICAgIiIiKSwgcG9saWN5PXBvbGljeS5kZWZhdWx0KSwpCisKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ10gPSAoZW1haWwubWVzc2FnZS5NZXNzYWdlKHBvbGljeT1wb2xpY3kuZGVmYXVsdCksKQorICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXVsnRGF0ZSddID0gJ1R1ZSwgMjkgTWF5IDIwMTIgMDk6MjQ6MjYgKzEwMDAnCisgICAgbXNnX3BhcmFtc1snY3JlYXRlZCddWzBdWydGcm9tJ10gPSAnZnJvZG9AbW9yZG9yLm5ldCcKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ1RvJ10gPSAnYmlsYm9AdW5kZXJoaWxsLm9yZycKKyAgICBtc2dfcGFyYW1zWydjcmVhdGVkJ11bMF1bJ1N1YmplY3QnXSA9ICdoZWxwJworICAgIG1zZ19wYXJhbXNbJ2NyZWF0ZWQnXVswXS5zZXRfcGF5bG9hZCgnSSB0aGluayBJIGZvcmdvdCB0aGUgcmluZy4nKQorCisgICAgZGVmIG1zZ19hc19kZWVwY29weShzZWxmLCBtc2cpOgorICAgICAgICBtc2cyID0gY29weS5kZWVwY29weShtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnMi5hc19zdHJpbmcoKSwgbXNnLmFzX3N0cmluZygpKQorCisgICAgZGVmIG1zZ19hc19waWNrbGUoc2VsZiwgbXNnKToKKyAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhtc2cpCisgICAgICAgIG1zZzIgPSBwaWNrbGUubG9hZHMocCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cyLmFzX3N0cmluZygpLCBtc2cuYXNfc3RyaW5nKCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4M2JkNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CkBAIC0wLDAgKzEsMzIyIEBACitpbXBvcnQgaW8KK2ltcG9ydCB0eXBlcworaW1wb3J0IHRleHR3cmFwCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBlbWFpbC5wb2xpY3kKK2ltcG9ydCBlbWFpbC5wYXJzZXIKK2ltcG9ydCBlbWFpbC5nZW5lcmF0b3IKK2Zyb20gZW1haWwgaW1wb3J0IGhlYWRlcnJlZ2lzdHJ5CisKK2RlZiBtYWtlX2RlZmF1bHRzKGJhc2VfZGVmYXVsdHMsIGRpZmZlcmVuY2VzKToKKyAgICBkZWZhdWx0cyA9IGJhc2VfZGVmYXVsdHMuY29weSgpCisgICAgZGVmYXVsdHMudXBkYXRlKGRpZmZlcmVuY2VzKQorICAgIHJldHVybiBkZWZhdWx0cworCitjbGFzcyBQb2xpY3lBUElUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBsb25nTWVzc2FnZSA9IFRydWUKKworICAgICMgQmFzZSBkZWZhdWx0IHZhbHVlcy4KKyAgICBjb21wYXQzMl9kZWZhdWx0cyA9IHsKKyAgICAgICAgJ21heF9saW5lX2xlbmd0aCc6ICAgICAgICAgIDc4LAorICAgICAgICAnbGluZXNlcCc6ICAgICAgICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgJ2N0ZV90eXBlJzogICAgICAgICAgICAgICAgICc4Yml0JywKKyAgICAgICAgJ3JhaXNlX29uX2RlZmVjdCc6ICAgICAgICAgIEZhbHNlLAorICAgICAgICB9CisgICAgIyBUaGVzZSBkZWZhdWx0IHZhbHVlcyBhcmUgdGhlIG9uZXMgc2V0IG9uIGVtYWlsLnBvbGljeS5kZWZhdWx0LgorICAgICMgSWYgYW55IG9mIHRoZXNlIGRlZmF1bHRzIGNoYW5nZSwgdGhlIGRvY3MgbXVzdCBiZSB1cGRhdGVkLgorICAgIHBvbGljeV9kZWZhdWx0cyA9IGNvbXBhdDMyX2RlZmF1bHRzLmNvcHkoKQorICAgIHBvbGljeV9kZWZhdWx0cy51cGRhdGUoeworICAgICAgICAncmFpc2Vfb25fZGVmZWN0JzogICAgICAgICAgRmFsc2UsCisgICAgICAgICdoZWFkZXJfZmFjdG9yeSc6ICAgICAgICAgICBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnksCisgICAgICAgICdyZWZvbGRfc291cmNlJzogICAgICAgICAgICAnbG9uZycsCisgICAgICAgIH0pCisKKyAgICAjIEZvciBlYWNoIHBvbGljeSB1bmRlciB0ZXN0LCB3ZSBnaXZlIGhlcmUgd2hhdCB3ZSBleHBlY3QgdGhlIGRlZmF1bHRzIHRvCisgICAgIyBiZSBmb3IgdGhhdCBwb2xpY3kuICBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIG1ha2UgZGVmYXVsdHMgaXMgdGhlCisgICAgIyBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGJhc2UgZGVmYXVsdHMgYW5kIHRoYXQgZm9yIHRoZSBwYXJ0aWN1bGFyIHBvbGljeS4KKyAgICBuZXdfcG9saWN5ID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICBwb2xpY2llcyA9IHsKKyAgICAgICAgZW1haWwucG9saWN5LmNvbXBhdDMyOiBtYWtlX2RlZmF1bHRzKGNvbXBhdDMyX2RlZmF1bHRzLCB7fSksCisgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywge30pLAorICAgICAgICBlbWFpbC5wb2xpY3kuU01UUDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJ30pLAorICAgICAgICBlbWFpbC5wb2xpY3kuSFRUUDogbWFrZV9kZWZhdWx0cyhwb2xpY3lfZGVmYXVsdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnbGluZXNlcCc6ICdcclxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYXhfbGluZV9sZW5ndGgnOiBOb25lfSksCisgICAgICAgIGVtYWlsLnBvbGljeS5zdHJpY3Q6IG1ha2VfZGVmYXVsdHMocG9saWN5X2RlZmF1bHRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsncmFpc2Vfb25fZGVmZWN0JzogVHJ1ZX0pLAorICAgICAgICBuZXdfcG9saWN5OiBtYWtlX2RlZmF1bHRzKHBvbGljeV9kZWZhdWx0cywge30pLAorICAgICAgICB9CisgICAgIyBDcmVhdGluZyBhIG5ldyBwb2xpY3kgY3JlYXRlcyBhIG5ldyBoZWFkZXIgZmFjdG9yeS4gIFRoZXJlIGlzIGEgdGVzdAorICAgICMgbGF0ZXIgdGhhdCBwcm92ZXMgdGhpcy4KKyAgICBwb2xpY2llc1tuZXdfcG9saWN5XVsnaGVhZGVyX2ZhY3RvcnknXSA9IG5ld19wb2xpY3kuaGVhZGVyX2ZhY3RvcnkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICBmb3IgcG9saWN5LCBleHBlY3RlZCBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIocG9saWN5LCBhdHRyKSwgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiY2hhbmdlIHt9IGRvY3MvZG9jc3RyaW5ncyBpZiBkZWZhdWx0cyBoYXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiKS5mb3JtYXQocG9saWN5KSkKKworICAgIGRlZiB0ZXN0X2FsbF9hdHRyaWJ1dGVzX2NvdmVyZWQoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihwb2xpY3kpOgorICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5GdW5jdGlvblR5cGUpKToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIGV4cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCisKKyAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGVtYWlsLnBvbGljeS5Qb2xpY3koKQorICAgICAgICBtc2cgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBhYnN0cmFjdF9tZXRob2RzID0gKCdmb2xkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9sZF9iaW5hcnknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJfZmV0Y2hfcGFyc2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXJfc291cmNlX3BhcnNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhZGVyX3N0b3JlX3BhcnNlJykKKyAgICAgICAgZm9yIG1ldGhvZCBpbiBhYnN0cmFjdF9tZXRob2RzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihtZXRob2QsIG1zZykKKworICAgIGRlZiB0ZXN0X3BvbGljeV9pc19pbW11dGFibGUoc2VsZik6CisgICAgICAgIGZvciBwb2xpY3ksIGRlZmF1bHRzIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGZvciBhdHRyIGluIGRlZmF1bHRzOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwgYXR0cisiLipyZWFkLW9ubHkiKToKKyAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihwb2xpY3ksIGF0dHIsIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXR0cmlidXRlRXJyb3IsICdubyBhdHRyaWJ1dGUuKmZvbycpOgorICAgICAgICAgICAgICAgIHBvbGljeS5mb28gPSBOb25lCisKKyAgICBkZWYgdGVzdF9zZXRfcG9saWN5X2F0dHJzX3doZW5fY2xvbmVkKHNlbGYpOgorICAgICAgICAjIE5vbmUgb2YgdGhlIGF0dHJpYnV0ZXMgaGFzIGEgZGVmYXVsdCB2YWx1ZSBvZiBOb25lLCBzbyB3ZSBzZXQgdGhlbQorICAgICAgICAjIGFsbCB0byBOb25lIGluIHRoZSBjbG9uZSBjYWxsIGFuZCBjaGVjayB0aGF0IGl0IHdvcmtlZC4KKyAgICAgICAgZm9yIHBvbGljeWNsYXNzLCBkZWZhdWx0cyBpbiBzZWxmLnBvbGljaWVzLml0ZW1zKCk6CisgICAgICAgICAgICB0ZXN0YXR0cmRpY3QgPSB7YXR0cjogTm9uZSBmb3IgYXR0ciBpbiBkZWZhdWx0c30KKyAgICAgICAgICAgIHBvbGljeSA9IHBvbGljeWNsYXNzLmNsb25lKCoqdGVzdGF0dHJkaWN0KQorICAgICAgICAgICAgZm9yIGF0dHIgaW4gZGVmYXVsdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZ2V0YXR0cihwb2xpY3ksIGF0dHIpKQorCisgICAgZGVmIHRlc3RfcmVqZWN0X25vbl9wb2xpY3lfa2V5d29yZF93aGVuX2NhbGxlZChzZWxmKToKKyAgICAgICAgZm9yIHBvbGljeWNsYXNzIGluIHNlbGYucG9saWNpZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgcG9saWN5Y2xhc3ModGhpc19rZXl3b3JkX3Nob3VsZF9ub3RfYmVfdmFsaWQ9Tm9uZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBwb2xpY3ljbGFzcyhuZXd0bGluZT1Ob25lKQorCisgICAgZGVmIHRlc3RfcG9saWN5X2FkZGl0aW9uKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9IHNlbGYucG9saWN5X2RlZmF1bHRzLmNvcHkoKQorICAgICAgICBwMSA9IGVtYWlsLnBvbGljeS5kZWZhdWx0LmNsb25lKG1heF9saW5lX2xlbmd0aD0xMDApCisgICAgICAgIHAyID0gZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUobWF4X2xpbmVfbGVuZ3RoPTUwKQorICAgICAgICBhZGRlZCA9IHAxICsgcDIKKyAgICAgICAgZXhwZWN0ZWQudXBkYXRlKG1heF9saW5lX2xlbmd0aD01MCkKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYWRkZWQsIGF0dHIpLCB2YWx1ZSkKKyAgICAgICAgYWRkZWQgPSBwMiArIHAxCisgICAgICAgIGV4cGVjdGVkLnVwZGF0ZShtYXhfbGluZV9sZW5ndGg9MTAwKQorICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gZXhwZWN0ZWQuaXRlbXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihhZGRlZCwgYXR0ciksIHZhbHVlKQorICAgICAgICBhZGRlZCA9IGFkZGVkICsgZW1haWwucG9saWN5LmRlZmF1bHQKKyAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIoYWRkZWQsIGF0dHIpLCB2YWx1ZSkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX2RlZmVjdChzZWxmKToKKyAgICAgICAgY2xhc3MgRHVtbXk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5kZWZlY3RzID0gW10KKyAgICAgICAgb2JqID0gRHVtbXkoKQorICAgICAgICBkZWZlY3QgPSBvYmplY3QoKQorICAgICAgICBwb2xpY3kgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kucmVnaXN0ZXJfZGVmZWN0KG9iaiwgZGVmZWN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5kZWZlY3RzLCBbZGVmZWN0XSkKKyAgICAgICAgZGVmZWN0MiA9IG9iamVjdCgpCisgICAgICAgIHBvbGljeS5yZWdpc3Rlcl9kZWZlY3Qob2JqLCBkZWZlY3QyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iai5kZWZlY3RzLCBbZGVmZWN0LCBkZWZlY3QyXSkKKworICAgIGNsYXNzIE15T2JqOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzZWxmLmRlZmVjdHMgPSBbXQorCisgICAgY2xhc3MgTXlEZWZlY3QoRXhjZXB0aW9uKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaGFuZGxlX2RlZmVjdF9yYWlzZXNfb25fc3RyaWN0KHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0ID0gc2VsZi5NeURlZmVjdCgidGhlIHRlbGx5IGlzIGJyb2tlbiIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzZWxmLk15RGVmZWN0LCAidGhlIHRlbGx5IGlzIGJyb2tlbiIpOgorICAgICAgICAgICAgZW1haWwucG9saWN5LnN0cmljdC5oYW5kbGVfZGVmZWN0KGZvbywgZGVmZWN0KQorCisgICAgZGVmIHRlc3RfaGFuZGxlX2RlZmVjdF9yZWdpc3RlcnNfZGVmZWN0KHNlbGYpOgorICAgICAgICBmb28gPSBzZWxmLk15T2JqKCkKKyAgICAgICAgZGVmZWN0MSA9IHNlbGYuTXlEZWZlY3QoIm9uZSIpCisgICAgICAgIGVtYWlsLnBvbGljeS5kZWZhdWx0LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5kZWZlY3RzLCBbZGVmZWN0MV0pCisgICAgICAgIGRlZmVjdDIgPSBzZWxmLk15RGVmZWN0KCJ0d28iKQorICAgICAgICBlbWFpbC5wb2xpY3kuZGVmYXVsdC5oYW5kbGVfZGVmZWN0KGZvbywgZGVmZWN0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZGVmZWN0cywgW2RlZmVjdDEsIGRlZmVjdDJdKQorCisgICAgY2xhc3MgTXlQb2xpY3koZW1haWwucG9saWN5LkVtYWlsUG9saWN5KToKKyAgICAgICAgZGVmZWN0cyA9IE5vbmUKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18oKmFyZ3MsIGRlZmVjdHM9W10sICoqa3cpCisgICAgICAgIGRlZiByZWdpc3Rlcl9kZWZlY3Qoc2VsZiwgb2JqLCBkZWZlY3QpOgorICAgICAgICAgICAgc2VsZi5kZWZlY3RzLmFwcGVuZChkZWZlY3QpCisKKyAgICBkZWYgdGVzdF9vdmVycmlkZGVuX3JlZ2lzdGVyX2RlZmVjdF9zdGlsbF9yYWlzZXMoc2VsZik6CisgICAgICAgIGZvbyA9IHNlbGYuTXlPYmooKQorICAgICAgICBkZWZlY3QgPSBzZWxmLk15RGVmZWN0KCJ0aGUgdGVsbHkgaXMgYnJva2VuIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNlbGYuTXlEZWZlY3QsICJ0aGUgdGVsbHkgaXMgYnJva2VuIik6CisgICAgICAgICAgICBzZWxmLk15UG9saWN5KHJhaXNlX29uX2RlZmVjdD1UcnVlKS5oYW5kbGVfZGVmZWN0KGZvbywgZGVmZWN0KQorCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVuX3JlZ2lzdGVyX2RlZmVjdF93b3JrcyhzZWxmKToKKyAgICAgICAgZm9vID0gc2VsZi5NeU9iaigpCisgICAgICAgIGRlZmVjdDEgPSBzZWxmLk15RGVmZWN0KCJvbmUiKQorICAgICAgICBteV9wb2xpY3kgPSBzZWxmLk15UG9saWN5KCkKKyAgICAgICAgbXlfcG9saWN5LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X3BvbGljeS5kZWZlY3RzLCBbZGVmZWN0MV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtdKQorICAgICAgICBkZWZlY3QyID0gc2VsZi5NeURlZmVjdCgidHdvIikKKyAgICAgICAgbXlfcG9saWN5LmhhbmRsZV9kZWZlY3QoZm9vLCBkZWZlY3QyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15X3BvbGljeS5kZWZlY3RzLCBbZGVmZWN0MSwgZGVmZWN0Ml0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmRlZmVjdHMsIFtdKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9oZWFkZXJfZmFjdG9yeShzZWxmKToKKyAgICAgICAgaCA9IGVtYWlsLnBvbGljeS5kZWZhdWx0LmhlYWRlcl9mYWN0b3J5KCdUZXN0JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ1Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcikKKworICAgIGNsYXNzIEZvbzoKKyAgICAgICAgcGFyc2UgPSBoZWFkZXJyZWdpc3RyeS5VbnN0cnVjdHVyZWRIZWFkZXIucGFyc2UKKworICAgIGRlZiB0ZXN0X2VhY2hfUG9saWN5X2dldHNfdW5pcXVlX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIHBvbGljeTEgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kyID0gZW1haWwucG9saWN5LkVtYWlsUG9saWN5KCkKKyAgICAgICAgcG9saWN5MS5oZWFkZXJfZmFjdG9yeS5tYXBfdG9fdHlwZSgnZm9vJywgc2VsZi5Gb28pCisgICAgICAgIGggPSBwb2xpY3kxLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGgsIGhlYWRlcnJlZ2lzdHJ5LlVuc3RydWN0dXJlZEhlYWRlcikKKyAgICAgICAgaCA9IHBvbGljeTIuaGVhZGVyX2ZhY3RvcnkoJ2ZvbycsICd0ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKGgsIHNlbGYuRm9vKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgaGVhZGVycmVnaXN0cnkuVW5zdHJ1Y3R1cmVkSGVhZGVyKQorCisgICAgZGVmIHRlc3RfY2xvbmVfY29waWVzX2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIHBvbGljeTEgPSBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3koKQorICAgICAgICBwb2xpY3kyID0gcG9saWN5MS5jbG9uZSgpCisgICAgICAgIHBvbGljeTEuaGVhZGVyX2ZhY3RvcnkubWFwX3RvX3R5cGUoJ2ZvbycsIHNlbGYuRm9vKQorICAgICAgICBoID0gcG9saWN5MS5oZWFkZXJfZmFjdG9yeSgnZm9vJywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaCwgc2VsZi5Gb28pCisgICAgICAgIGggPSBwb2xpY3kyLmhlYWRlcl9mYWN0b3J5KCdmb28nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLCBzZWxmLkZvbykKKworICAgIGRlZiB0ZXN0X25ld19mYWN0b3J5X292ZXJyaWRlc19kZWZhdWx0KHNlbGYpOgorICAgICAgICBteXBvbGljeSA9IGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSgpCisgICAgICAgIG15ZmFjdG9yeSA9IG15cG9saWN5LmhlYWRlcl9mYWN0b3J5CisgICAgICAgIG5ld3BvbGljeSA9IG15cG9saWN5ICsgZW1haWwucG9saWN5LnN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5oZWFkZXJfZmFjdG9yeSwgbXlmYWN0b3J5KQorICAgICAgICBuZXdwb2xpY3kgPSBlbWFpbC5wb2xpY3kuc3RyaWN0ICsgbXlwb2xpY3kKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdwb2xpY3kuaGVhZGVyX2ZhY3RvcnksIG15ZmFjdG9yeSkKKworICAgIGRlZiB0ZXN0X2FkZGluZ19kZWZhdWx0X3BvbGljaWVzX3ByZXNlcnZlc19kZWZhdWx0X2ZhY3Rvcnkoc2VsZik6CisgICAgICAgIG5ld3BvbGljeSA9IGVtYWlsLnBvbGljeS5kZWZhdWx0ICsgZW1haWwucG9saWN5LnN0cmljdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3BvbGljeS5oZWFkZXJfZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kuaGVhZGVyX2ZhY3RvcnkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cG9saWN5Ll9fZGljdF9fLCB7J3JhaXNlX29uX2RlZmVjdCc6IFRydWV9KQorCisgICAgIyBYWFg6IE5lZWQgc3ViY2xhc3NpbmcgdGVzdHMuCisgICAgIyBGb3IgYWRkaW5nIHN1YmNsYXNzZWQgb2JqZWN0cywgbWFrZSBzdXJlIHRoZSB1c3VhbCBydWxlcyBhcHBseSAoc3ViY2xhc3MKKyAgICAjIHdpbnMpLCBidXQgdGhhdCB0aGUgb3JkZXIgc3RpbGwgd29ya3MgKHJpZ2h0IG92ZXJyaWRlcyBsZWZ0KS4KKworCitjbGFzcyBUZXN0UG9saWN5UHJvcGFnYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUaGUgYWJzdHJhY3QgbWV0aG9kcyBhcmUgdXNlZCBieSB0aGUgcGFyc2VyIGJ1dCBub3QgYnkgdGhlIHdyYXBwZXIKKyAgICAjIGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQsIHNvIGlmIHRoZSBleGNlcHRpb24gZ2V0cyByYWlzZWQgd2Uga25vdyB0aGF0IHRoZQorICAgICMgcG9saWN5IHdhcyBhY3R1YWxseSBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IHRvIGZlZWRwYXJzZXIuCisgICAgY2xhc3MgTXlQb2xpY3koZW1haWwucG9saWN5LlBvbGljeSk6CisgICAgICAgIGRlZiBiYWRtZXRob2Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ0ZXN0IikKKyAgICAgICAgZm9sZCA9IGZvbGRfYmluYXJ5ID0gaGVhZGVyX2ZldGNoX3BhcnNlciA9IGJhZG1ldGhvZAorICAgICAgICBoZWFkZXJfc291cmNlX3BhcnNlID0gaGVhZGVyX3N0b3JlX3BhcnNlID0gYmFkbWV0aG9kCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fc3RyaW5nKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nKCJTdWJqZWN0OiB0ZXN0XG5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1zZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2J5dGVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYnl0ZXMoYiJTdWJqZWN0OiB0ZXN0XG5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCisKKyAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgZiA9IGlvLlN0cmluZ0lPKCdTdWJqZWN0OiB0ZXN0XG5cbicpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKHNlbGYpOgorICAgICAgICBmID0gaW8uQnl0ZXNJTyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsIHBvbGljeT1zZWxmLk15UG9saWN5KQorCisgICAgIyBUaGVzZSBhcmUgcmVkdW5kYW50LCBidXQgd2UgbmVlZCB0aGVtIGZvciBibGFjay1ib3ggY29tcGxldGVuZXNzLgorCisgICAgZGVmIHRlc3RfcGFyc2VyKHNlbGYpOgorICAgICAgICBwID0gZW1haWwucGFyc2VyLlBhcnNlcihwb2xpY3k9c2VsZi5NeVBvbGljeSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICAgICAgcC5wYXJzZXN0cignU3ViamVjdDogdGVzdFxuXG4nKQorCisgICAgZGVmIHRlc3RfYnl0ZXNfcGFyc2VyKHNlbGYpOgorICAgICAgICBwID0gZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgICAgICBwLnBhcnNlYnl0ZXMoYidTdWJqZWN0OiB0ZXN0XG5cbicpCisKKyAgICAjIE5vdyB0aGF0IHdlJ3ZlIGVzdGFibGlzaGVkIHRoYXQgYWxsIHRoZSBwYXJzZSBtZXRob2RzIGdldCB0aGUKKyAgICAjIHBvbGljeSBpbiB0byBmZWVkcGFyc2VyLCB3ZSBjYW4gdXNlIG1lc3NhZ2VfZnJvbV9zdHJpbmcgZm9yCisgICAgIyB0aGUgcmVzdCBvZiB0aGUgcHJvcGFnYXRpb24gdGVzdHMuCisKKyAgICBkZWYgX21ha2VfbXNnKHNlbGYsIHNvdXJjZT0nU3ViamVjdDogdGVzdFxuXG4nLCBwb2xpY3k9Tm9uZSk6CisgICAgICAgIHNlbGYucG9saWN5ID0gZW1haWwucG9saWN5LmRlZmF1bHQuY2xvbmUoKSBpZiBwb2xpY3kgaXMgTm9uZSBlbHNlIHBvbGljeQorICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhzb3VyY2UsIHBvbGljeT1zZWxmLnBvbGljeSkKKworICAgIGRlZiB0ZXN0X3BhcnNlcl9wcm9wYWdhdGVzX3BvbGljeV90b19tZXNzYWdlKHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9tYWtlX21zZygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobXNnLnBvbGljeSwgc2VsZi5wb2xpY3kpCisKKyAgICBkZWYgdGVzdF9wYXJzZXJfcHJvcGFnYXRlc19wb2xpY3lfdG9fc3ViX21lc3NhZ2VzKHNlbGYpOgorICAgICAgICBtc2cgPSBzZWxmLl9tYWtlX21zZyh0ZXh0d3JhcC5kZWRlbnQoIiIiXAorICAgICAgICAgICAgU3ViamVjdDogbWltZSB0ZXN0CisgICAgICAgICAgICBNSU1FLVZlcnNpb246IDEuMAorICAgICAgICAgICAgQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQsIGJvdW5kYXJ5PSJYWFgiCisKKyAgICAgICAgICAgIC0tWFhYCisgICAgICAgICAgICBDb250ZW50LVR5cGU6IHRleHQvcGxhaW4KKworICAgICAgICAgICAgdGVzdAorICAgICAgICAgICAgLS1YWFgKKyAgICAgICAgICAgIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgorCisgICAgICAgICAgICB0ZXN0MgorICAgICAgICAgICAgLS1YWFgtLQorICAgICAgICAgICAgIiIiKSkKKyAgICAgICAgZm9yIHBhcnQgaW4gbXNnLndhbGsoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMocGFydC5wb2xpY3ksIHNlbGYucG9saWN5KQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9wb2xpY3lfcHJvcGFnYXRlc190b19nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKCJTdWJqZWN0OiB0ZXN0XG5UbzogZm9vXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdYJykpCisgICAgICAgIHMgPSBpby5TdHJpbmdJTygpCisgICAgICAgIGcgPSBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yKHMpCisgICAgICAgIGcuZmxhdHRlbihtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiU3ViamVjdDogdGVzdFhUbzogZm9vWFgiKQorCisgICAgZGVmIHRlc3RfbWVzc2FnZV9wb2xpY3lfdXNlZF9ieV9hc19zdHJpbmcoc2VsZik6CisgICAgICAgIG1zZyA9IHNlbGYuX21ha2VfbXNnKCJTdWJqZWN0OiB0ZXN0XG5UbzogZm9vXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdC5jbG9uZShsaW5lc2VwPSdYJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmFzX3N0cmluZygpLCAiU3ViamVjdDogdGVzdFhUbzogZm9vWFgiKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfdXRpbHMucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFkZTc3MAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF91dGlscy5weQpAQCAtMCwwICsxLDEzNiBAQAoraW1wb3J0IGRhdGV0aW1lCitmcm9tIGVtYWlsIGltcG9ydCB1dGlscworaW1wb3J0IHRlc3Quc3VwcG9ydAoraW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworCitjbGFzcyBEYXRlVGltZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRhdGVzdHJpbmcgPSAnU3VuLCAyMyBTZXAgMjAwMSAyMDoxMDo1NScKKyAgICBkYXRlYXJncyA9ICgyMDAxLCA5LCAyMywgMjAsIDEwLCA1NSkKKyAgICBvZmZzZXRzdHJpbmcgPSAnIC0wNzAwJworICAgIHV0Y29mZnNldCA9IGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0tNykKKyAgICB0eiA9IGRhdGV0aW1lLnRpbWV6b25lKHV0Y29mZnNldCkKKyAgICBuYWl2ZV9kdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCpkYXRlYXJncykKKyAgICBhd2FyZV9kdCA9IGRhdGV0aW1lLmRhdGV0aW1lKCpkYXRlYXJncywgdHppbmZvPXR6KQorCisgICAgZGVmIHRlc3RfbmFpdmVfZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2RhdGV0aW1lKHNlbGYubmFpdmVfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0ZXN0cmluZyArICcgLTAwMDAnKQorCisgICAgZGVmIHRlc3RfYXdhcmVfZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2RhdGV0aW1lKHNlbGYuYXdhcmVfZHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0ZXN0cmluZyArIHNlbGYub2Zmc2V0c3RyaW5nKQorCisgICAgZGVmIHRlc3RfdXNlZ210KHNlbGYpOgorICAgICAgICB1dGNfZHQgPSBkYXRldGltZS5kYXRldGltZSgqc2VsZi5kYXRlYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZGF0ZXRpbWUodXRjX2R0LCB1c2VnbXQ9VHJ1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRlc3RyaW5nICsgJyBHTVQnKQorCisgICAgZGVmIHRlc3RfdXNlZ210X3dpdGhfbmFpdmVfZGF0ZXRpbWVfcmFpc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbHMuZm9ybWF0X2RhdGV0aW1lKHNlbGYubmFpdmVfZHQsIHVzZWdtdD1UcnVlKQorCisgICAgZGVmIHRlc3RfdXNlZ210X3dpdGhfbm9uX3V0Y19kYXRldGltZV9yYWlzZXMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB1dGlscy5mb3JtYXRfZGF0ZXRpbWUoc2VsZi5hd2FyZV9kdCwgdXNlZ210PVRydWUpCisKKyAgICBkZWYgdGVzdF9wYXJzZWRhdGVfdG9fZGF0ZXRpbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB1dGlscy5wYXJzZWRhdGVfdG9fZGF0ZXRpbWUoc2VsZi5kYXRlc3RyaW5nICsgc2VsZi5vZmZzZXRzdHJpbmcpLAorICAgICAgICAgICAgc2VsZi5hd2FyZV9kdCkKKworICAgIGRlZiB0ZXN0X3BhcnNlZGF0ZV90b19kYXRldGltZV9uYWl2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHV0aWxzLnBhcnNlZGF0ZV90b19kYXRldGltZShzZWxmLmRhdGVzdHJpbmcgKyAnIC0wMDAwJyksCisgICAgICAgICAgICBzZWxmLm5haXZlX2R0KQorCisKK2NsYXNzIExvY2FsdGltZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9pc190el9hd2FyZV9kYXlsaWdodF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdCA9IHV0aWxzLmxvY2FsdGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodC50emluZm8sIE5vbmUpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfaXNfdHpfYXdhcmVfZGF5bGlnaHRfZmFsc2Uoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBGYWxzZSkKKyAgICAgICAgdCA9IHV0aWxzLmxvY2FsdGltZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QodC50emluZm8sIE5vbmUpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZGF5bGlnaHRfdHJ1ZV9kc3RfZmFsc2Uoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBUcnVlKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMTIsIDMsIDEyLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCwgaXNkc3Q9LTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9kYXlsaWdodF9mYWxzZV9kc3RfZmFsc2Uoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBGYWxzZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PS0xKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZGF5bGlnaHRfdHJ1ZV9kc3RfdHJ1ZShzZWxmKToKKyAgICAgICAgdGVzdC5zdXBwb3J0LnBhdGNoKHNlbGYsIHRpbWUsICdkYXlsaWdodCcsIFRydWUpCisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMiwgMywgMTIsIDEsIDEpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwLCBpc2RzdD0xKQorICAgICAgICB0MiA9IHV0aWxzLmxvY2FsdGltZSh0MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZGF5bGlnaHRfZmFsc2VfZHN0X3RydWUoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBGYWxzZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgyMDEyLCAzLCAxMiwgMSwgMSkKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDAsIGlzZHN0PTEpCisgICAgICAgIHQyID0gdXRpbHMubG9jYWx0aW1lKHQxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLCB0MikKKworICAgIEB0ZXN0LnN1cHBvcnQucnVuX3dpdGhfdHooJ0VTVCswNUVEVCxNMy4yLjAsTTExLjEuMCcpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX3V0Y19kYXlsaWdodF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm8gPSBkYXRldGltZS50aW1lem9uZS51dGMpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHQwIC0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPTUpCisgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm8gPSBkYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoaG91cnM9LTUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBAdGVzdC5zdXBwb3J0LnJ1bl93aXRoX3R6KCdFU1QrMDVFRFQsTTMuMi4wLE0xMS4xLjAnKQorICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9lcG9jaF91dGNfZGF5bGlnaHRfZmFsc2Uoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBGYWxzZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTcwLCAxLCAxLCB0emluZm8gPSBkYXRldGltZS50aW1lem9uZS51dGMpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICB0MiA9IHQwIC0gZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPTUpCisgICAgICAgIHQyID0gdDIucmVwbGFjZSh0emluZm8gPSBkYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoaG91cnM9LTUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0MSwgdDIpCisKKyAgICBkZWYgdGVzdF9sb2NhbHRpbWVfZXBvY2hfbm90el9kYXlsaWdodF90cnVlKHNlbGYpOgorICAgICAgICB0ZXN0LnN1cHBvcnQucGF0Y2goc2VsZiwgdGltZSwgJ2RheWxpZ2h0JywgVHJ1ZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTcwLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDAucmVwbGFjZSh0emluZm89Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX2Vwb2NoX25vdHpfZGF5bGlnaHRfZmFsc2Uoc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC5wYXRjaChzZWxmLCB0aW1lLCAnZGF5bGlnaHQnLCBGYWxzZSkKKyAgICAgICAgdDAgPSBkYXRldGltZS5kYXRldGltZSgxOTcwLCAxLCAxKQorICAgICAgICB0MSA9IHV0aWxzLmxvY2FsdGltZSh0MCkKKyAgICAgICAgdDIgPSB1dGlscy5sb2NhbHRpbWUodDAucmVwbGFjZSh0emluZm89Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEsIHQyKQorCisgICAgIyBYWFg6IE5lZWQgYSBtb3JlIHJvYnVzdCB0ZXN0IGZvciBPbHNvbidzIHR6ZGF0YQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLAorICAgICAgICAgICAgICAgICAgICAgIldpbmRvd3MgZG9lcyBub3QgdXNlIE9sc29uJ3MgVFogZGF0YWJhc2UiKQorICAgIEB0ZXN0LnN1cHBvcnQucnVuX3dpdGhfdHooJ0V1cm9wZS9LaWV2JykKKyAgICBkZWYgdGVzdF92YXJpYWJsZV90em5hbWUoc2VsZik6CisgICAgICAgIHQwID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMTk4NCwgMSwgMSwgdHppbmZvPWRhdGV0aW1lLnRpbWV6b25lLnV0YykKKyAgICAgICAgdDEgPSB1dGlscy5sb2NhbHRpbWUodDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDEudHpuYW1lKCksICdNU0snKQorICAgICAgICB0MCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTQsIDEsIDEsIHR6aW5mbz1kYXRldGltZS50aW1lem9uZS51dGMpCisgICAgICAgIHQxID0gdXRpbHMubG9jYWx0aW1lKHQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQxLnR6bmFtZSgpLCAnRUVUJykKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC90ZXN0L3Rlc3RfZW1haWxfdG9ydHVyZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdG9ydHVyZV90ZXN0LnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvZW1haWwvdGVzdC90ZXN0X2VtYWlsX3RvcnR1cmUucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfZW1haWwvdG9ydHVyZV90ZXN0LnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VudW1lcmF0ZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CmluZGV4IDA5NTgyMGIuLjJlOTA0Y2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgcGlja2xlCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCkBAIC02MSw3ICs2MiwyNSBAQAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKIAotY2xhc3MgRW51bWVyYXRlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgUGlja2xlVGVzdDoKKyAgICAjIEhlbHBlciB0byBjaGVjayBwaWNrbGFiaWxpdHkKKyAgICBkZWYgY2hlY2tfcGlja2xlKHNlbGYsIGl0b3JnLCBzZXEpOgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgc2VxKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZXFbMTpdKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcVsxOl0pCisKK2NsYXNzIEVudW1lcmF0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlLCBQaWNrbGVUZXN0KToKIAogICAgIGVudW0gPSBlbnVtZXJhdGUKICAgICBzZXEsIHJlcyA9ICdhYmMnLCBbKDAsJ2EnKSwgKDEsJ2InKSwgKDIsJ2MnKV0KQEAgLTczLDYgKzkyLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuZW51bShzZWxmLnNlcSkpLCBzZWxmLnJlcykKICAgICAgICAgc2VsZi5lbnVtLl9fZG9jX18KIAorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19waWNrbGUoc2VsZi5lbnVtKHNlbGYuc2VxKSwgc2VsZi5yZXMpCisKICAgICBkZWYgdGVzdF9nZXRpdGVtc2VxbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuZW51bShHKHNlbGYuc2VxKSkpLCBzZWxmLnJlcykKICAgICAgICAgZSA9IHNlbGYuZW51bShHKCcnKSkKQEAgLTEyNiw3ICsxNDgsNyBAQAogICAgIHNlcSA9IHJhbmdlKDEwLDIwMDAwLDIpCiAgICAgcmVzID0gbGlzdCh6aXAocmFuZ2UoMjAwMDApLCBzZXEpKQogCi1jbGFzcyBUZXN0UmV2ZXJzZWQodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdFJldmVyc2VkKHVuaXR0ZXN0LlRlc3RDYXNlLCBQaWNrbGVUZXN0KToKIAogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKICAgICAgICAgY2xhc3MgQToKQEAgLTIxMiw2ICsyMzQsMTAgQEAKICAgICAgICAgbmdpID0gTm9HZXRJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmdpKQogCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBmb3IgZGF0YSBpbiAnYWJjJywgcmFuZ2UoNSksIHR1cGxlKGVudW1lcmF0ZSgnYWJjJykpLCByYW5nZSgxLDE3LDUpOgorICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUocmV2ZXJzZWQoZGF0YSksIGxpc3QoZGF0YSlbOjotMV0pCisKIAogY2xhc3MgRW51bWVyYXRlU3RhcnRUZXN0Q2FzZShFbnVtZXJhdGVUZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CmluZGV4IDA4M2ZkN2YuLjdmOTU0N2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQpAQCAtNzUsNiArNzUsOSBAQAogICAgICAgICBlcC5jbG9zZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcC5jbG9zZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGVwLmZpbGVubykKKyAgICAgICAgaWYgaGFzYXR0cihzZWxlY3QsICJFUE9MTF9DTE9FWEVDIik6CisgICAgICAgICAgICBzZWxlY3QuZXBvbGwoc2VsZWN0LkVQT0xMX0NMT0VYRUMpLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGVjdC5lcG9sbCwgZmxhZ3M9MTIzNTYpCiAKICAgICBkZWYgdGVzdF9iYWRjcmVhdGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZWN0LmVwb2xsLCAxLCAyLCAzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CmluZGV4IDdhMmRkMGMuLjQxM2Y0ZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKQEAgLTgsNyArOCwxNiBAQAogaW1wb3J0IGVycm5vCiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoVEVTVEZOLCB1bmxpbmssIHJ1bl91bml0dGVzdCwgY2FwdHVyZWRfb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBnY19jb2xsZWN0LCBjcHl0aG9uX29ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdjX2NvbGxlY3QsIGNweXRob25fb25seSwgbm9fdHJhY2luZykKKworY2xhc3MgTmFpdmVFeGNlcHRpb24oRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgIHNlbGYueCA9IHgKKworY2xhc3MgU2xvdHRlZE5haXZlRXhjZXB0aW9uKEV4Y2VwdGlvbik6CisgICAgX19zbG90c19fID0gKCd4JywpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgpOgorICAgICAgICBzZWxmLnggPSB4CiAKICMgWFhYIFRoaXMgaXMgbm90IHJlYWxseSBlbm91Z2gsIGVhY2ggKm9wZXJhdGlvbiogc2hvdWxkIGJlIHRlc3RlZCEKIApAQCAtNDYsOCArNTUsOCBAQAogICAgICAgICAgICAgZnAuY2xvc2UoKQogICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAotICAgICAgICBzZWxmLnJhaXNlX2NhdGNoKElPRXJyb3IsICJJT0Vycm9yIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgb3BlbiwgJ3RoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCcsICdyJykKKyAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChPU0Vycm9yLCAiT1NFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9wZW4sICd0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3QnLCAncicpCiAKICAgICAgICAgc2VsZi5yYWlzZV9jYXRjaChJbXBvcnRFcnJvciwgIkltcG9ydEVycm9yIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IsIF9faW1wb3J0X18sICJ1bmRlZmluZWRfbW9kdWxlIikKQEAgLTE5MiwxMSArMjAxLDM1IEBACiAgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihXaW5kb3dzRXJyb3IoMTAwMSkpLCAiMTAwMSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihXaW5kb3dzRXJyb3IoMTAwMSwgIm1lc3NhZ2UiKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbRXJyb3IgMTAwMV0gbWVzc2FnZSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFdpbmRvd3NFcnJvcigxMDAxLCAibWVzc2FnZSIpLmVycm5vLCAyMikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoV2luZG93c0Vycm9yKDEwMDEsICJtZXNzYWdlIikud2luZXJyb3IsIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFdpbmRvd3NFcnJvciwgT1NFcnJvcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9TRXJyb3IoMTAwMSkpLCAiMTAwMSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPU0Vycm9yKDEwMDEsICJtZXNzYWdlIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiW0Vycm5vIDEwMDFdIG1lc3NhZ2UiKQorICAgICAgICAgICAgIyBQT1NJWCBlcnJubyAoOSBha2EgRUJBREYpIGlzIHVudHJhbnNsYXRlZAorICAgICAgICAgICAgdyA9IE9TRXJyb3IoOSwgJ2ZvbycsICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCA5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LndpbmVycm9yLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodyksICJbRXJybm8gOV0gZm9vOiAnYmFyJyIpCisgICAgICAgICAgICAjIEVSUk9SX1BBVEhfTk9UX0ZPVU5EICh3aW4gZXJyb3IgMykgYmVjb21lcyBFTk9FTlQgKDIpCisgICAgICAgICAgICB3ID0gT1NFcnJvcigwLCAnZm9vJywgJ2JhcicsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZXJybm8sIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuc3RyZXJyb3IsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmZpbGVuYW1lLCAnYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHcpLCAiW1dpbkVycm9yIDNdIGZvbzogJ2JhciciKQorICAgICAgICAgICAgIyBVbmtub3duIHdpbiBlcnJvciBiZWNvbWVzIEVJTlZBTCAoMjIpCisgICAgICAgICAgICB3ID0gT1NFcnJvcigwLCAnZm9vJywgTm9uZSwgMTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5lcnJubywgMjIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcud2luZXJyb3IsIDEwMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuc3RyZXJyb3IsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmZpbGVuYW1lLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodyksICJbV2luRXJyb3IgMTAwMV0gZm9vIikKKyAgICAgICAgICAgICMgTm9uLW51bWVyaWMgImVycm5vIgorICAgICAgICAgICAgdyA9IE9TRXJyb3IoJ2JhcicsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3LmVycm5vLCAnYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody53aW5lcnJvciwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwody5zdHJlcnJvciwgJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHcuZmlsZW5hbWUsIE5vbmUpCiAKICAgICBkZWYgdGVzdEF0dHJpYnV0ZXMoc2VsZik6CiAgICAgICAgICMgdGVzdCB0aGF0IGV4Y2VwdGlvbiBhdHRyaWJ1dGVzIGFyZSBoYXBweQpAQCAtMjcyLDEzICszMDUsMTggQEAKICAgICAgICAgICAgICAgICB7J2FyZ3MnIDogKCdcdTMwNDInLCAwLCAxLCAnb3VjaCcpLAogICAgICAgICAgICAgICAgICAnb2JqZWN0JyA6ICdcdTMwNDInLCAncmVhc29uJyA6ICdvdWNoJywKICAgICAgICAgICAgICAgICAgJ3N0YXJ0JyA6IDAsICdlbmQnIDogMX0pLAorICAgICAgICAgICAgKE5haXZlRXhjZXB0aW9uLCAoJ2ZvbycsKSwKKyAgICAgICAgICAgICAgICB7J2FyZ3MnOiAoJ2ZvbycsKSwgJ3gnOiAnZm9vJ30pLAorICAgICAgICAgICAgKFNsb3R0ZWROYWl2ZUV4Y2VwdGlvbiwgKCdmb28nLCksCisgICAgICAgICAgICAgICAgeydhcmdzJzogKCdmb28nLCksICd4JzogJ2Zvbyd9KSwKICAgICAgICAgXQogICAgICAgICB0cnk6CisgICAgICAgICAgICAjIE1vcmUgdGVzdHMgYXJlIGluIHRlc3RfV2luZG93c0Vycm9yCiAgICAgICAgICAgICBleGNlcHRpb25MaXN0LmFwcGVuZCgKICAgICAgICAgICAgICAgICAoV2luZG93c0Vycm9yLCAoMSwgJ3N0ckVycm9yU3RyJywgJ2ZpbGVuYW1lU3RyJyksCiAgICAgICAgICAgICAgICAgICAgIHsnYXJncycgOiAoMSwgJ3N0ckVycm9yU3RyJyksCi0gICAgICAgICAgICAgICAgICAgICAnc3RyZXJyb3InIDogJ3N0ckVycm9yU3RyJywgJ3dpbmVycm9yJyA6IDEsCi0gICAgICAgICAgICAgICAgICAgICAnZXJybm8nIDogMjIsICdmaWxlbmFtZScgOiAnZmlsZW5hbWVTdHInfSkKKyAgICAgICAgICAgICAgICAgICAgICdzdHJlcnJvcicgOiAnc3RyRXJyb3JTdHInLCAnd2luZXJyb3InIDogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICdlcnJubycgOiAxLCAnZmlsZW5hbWUnIDogJ2ZpbGVuYW1lU3RyJ30pCiAgICAgICAgICAgICApCiAgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CiAgICAgICAgICAgICBwYXNzCkBAIC0yOTEsNyArMzI5LDggQEAKICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFZlcmlmeSBtb2R1bGUgbmFtZQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlKS5fX21vZHVsZV9fLCAnYnVpbHRpbnMnKQorICAgICAgICAgICAgICAgIGlmIG5vdCB0eXBlKGUpLl9fbmFtZV9fLmVuZHN3aXRoKCdOYWl2ZUV4Y2VwdGlvbicpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZSkuX19tb2R1bGVfXywgJ2J1aWx0aW5zJykKICAgICAgICAgICAgICAgICAjIFZlcmlmeSBubyByZWYgbGVha3MgaW4gRXhjX3N0cigpCiAgICAgICAgICAgICAgICAgcyA9IHN0cihlKQogICAgICAgICAgICAgICAgIGZvciBjaGVja0FyZ05hbWUgaW4gZXhwZWN0ZWQ6CkBAIC0zNjIsMTkgKzQwMSwzNyBAQAogCiAgICAgZGVmIHRlc3RDaGFpbmluZ0F0dHJzKHNlbGYpOgogICAgICAgICBlID0gRXhjZXB0aW9uKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY29udGV4dF9fLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jYXVzZV9fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKIAogICAgICAgICBlID0gVHlwZUVycm9yKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLl9fY29udGV4dF9fLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jYXVzZV9fLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKIAogICAgICAgICBjbGFzcyBNeUV4Y2VwdGlvbihFbnZpcm9ubWVudEVycm9yKToKICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBlID0gTXlFeGNlcHRpb24oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuX19jb250ZXh0X18sIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5fX2NhdXNlX18sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jb250ZXh0X18pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorCisgICAgZGVmIHRlc3RDaGFpbmluZ0Rlc2NyaXB0b3JzKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIGUgPSBleGMKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY29udGV4dF9fKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShlLl9fY2F1c2VfXykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLl9fc3VwcHJlc3NfY29udGV4dF9fKQorCisgICAgICAgIGUuX19jb250ZXh0X18gPSBOYW1lRXJyb3IoKQorICAgICAgICBlLl9fY2F1c2VfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIE5hbWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLl9fc3VwcHJlc3NfY29udGV4dF9fKQorICAgICAgICBlLl9fc3VwcHJlc3NfY29udGV4dF9fID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlLl9fc3VwcHJlc3NfY29udGV4dF9fKQogCiAgICAgZGVmIHRlc3RLZXl3b3JkQXJncyhzZWxmKToKICAgICAgICAgIyB0ZXN0IHRoYXQgYnVpbHRpbiBleGNlcHRpb24gZG9uJ3QgdGFrZSBrZXl3b3JkIGFyZ3MsCkBAIC0zODksNiArNDQ2LDcgQEAKICAgICAgICAgeCA9IERlcml2ZWRFeGNlcHRpb24oZmFuY3lfYXJnPTQyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmFuY3lfYXJnLCA0MikKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RJbmZpbml0ZVJlY3Vyc2lvbihzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHJldHVybiBmKCkKQEAgLTcyMSw2ICs3NzksNyBAQAogICAgICAgICB1LnN0YXJ0ID0gMTAwMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1KSwgImNhbid0IHRyYW5zbGF0ZSBjaGFyYWN0ZXJzIGluIHBvc2l0aW9uIDEwMDAtNDogOTY1MjMwOTUxNDQzNjg1NzI0OTk3IikKIAorICAgIEBub190cmFjaW5nCiAgICAgZGVmIHRlc3RfYmFkaXNpbnN0YW5jZShzZWxmKToKICAgICAgICAgIyBCdWcgIzI1NDI6IGlmIGlzc3ViY2xhc3MoZSwgTXlFeGNlcHRpb24pIHJhaXNlcyBhbiBleGNlcHRpb24sCiAgICAgICAgICMgaXQgc2hvdWxkIGJlIGlnbm9yZWQKQEAgLTgzMSw2ICs4OTAsNyBAQAogICAgICAgICAgICAgc2VsZi5mYWlsKCJNZW1vcnlFcnJvciBub3QgcmFpc2VkIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cigpLCBOb25lKQogCisgICAgQG5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9yZWN1cnNpb25fZXJyb3JfY2xlYW51cChzZWxmKToKICAgICAgICAgIyBTYW1lIHRlc3QgYXMgYWJvdmUsIGJ1dCB3aXRoICJyZWN1cnNpb24gZXhjZWVkZWQiIGVycm9ycwogICAgICAgICBjbGFzcyBDOgpAQCAtODU3LDggKzkxNywzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PVERJUiwgY20uZXhjZXB0aW9uKQogCiAKK2NsYXNzIEltcG9ydEVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgIyBTZXR0aW5nICduYW1lJyBhbmQgJ3BhdGgnIHNob3VsZCBub3QgYmUgYSBwcm9ibGVtLgorICAgICAgICBleGMgPSBJbXBvcnRFcnJvcigndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5uYW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMucGF0aCkKKworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcigndGVzdCcsIG5hbWU9J3NvbWVtb2R1bGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5uYW1lLCAnc29tZW1vZHVsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5wYXRoKQorCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKCd0ZXN0JywgcGF0aD0nc29tZXBhdGgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5wYXRoLCAnc29tZXBhdGgnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShleGMubmFtZSkKKworICAgICAgICBleGMgPSBJbXBvcnRFcnJvcigndGVzdCcsIHBhdGg9J3NvbWVwYXRoJywgbmFtZT0nc29tZW5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5uYW1lLCAnc29tZW5hbWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5wYXRoLCAnc29tZXBhdGgnKQorCisgICAgZGVmIHRlc3Rfbm9uX3N0cl9hcmd1bWVudChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTU3NzgKKyAgICAgICAgYXJnID0gYidhYmMnCisgICAgICAgIGV4YyA9IEltcG9ydEVycm9yKGFyZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYXJnKSwgc3RyKGV4YykpCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChFeGNlcHRpb25UZXN0cykKKyAgICBydW5fdW5pdHRlc3QoRXhjZXB0aW9uVGVzdHMsIEltcG9ydEVycm9yVGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKaW5kZXggMWY3ZjYzMC4uNmI2YzEyZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQpAQCAtNjYsMTcgKzY2LDE3IEBACiAgICAgPj4+IGcoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZygpIHRha2VzIGF0IGxlYXN0IDEgYXJndW1lbnQgKDAgZ2l2ZW4pCisgICAgVHlwZUVycm9yOiBnKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICd4JwogCiAgICAgPj4+IGcoKigpKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZygpIHRha2VzIGF0IGxlYXN0IDEgYXJndW1lbnQgKDAgZ2l2ZW4pCisgICAgVHlwZUVycm9yOiBnKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICd4JwogCiAgICAgPj4+IGcoKigpLCAqKnt9KQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZygpIHRha2VzIGF0IGxlYXN0IDEgYXJndW1lbnQgKDAgZ2l2ZW4pCisgICAgVHlwZUVycm9yOiBnKCkgbWlzc2luZyAxIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICd4JwogCiAgICAgPj4+IGcoMSkKICAgICAxICgpIHt9CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICA+Pj4gZygxLCAyLCAzLCAqKnsneCc6IDQsICd5JzogNX0pCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgLi4uCi0gICAgVHlwZUVycm9yOiBnKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCAneCcKKyAgICBUeXBlRXJyb3I6IGcoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAneCcKIAogICAgID4+PiBmKCoqezE6Mn0pCiAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgpAQCAtMjYzLDI5ICsyNjMsODAgQEAKICAgICA+Pj4gZigqKngpCiAgICAgMSAyCiAKLUEgb2JzY3VyZSBtZXNzYWdlOgorVG9vIG1hbnkgYXJndW1lbnRzOgogCi0gICAgPj4+IGRlZiBmKGEsIGIpOgotICAgIC4uLiAgICBwYXNzCi0gICAgPj4+IGYoYj0xKQorICAgID4+PiBkZWYgZigpOiBwYXNzCisgICAgPj4+IGYoMSkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgICAuLi4KLSAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyBleGFjdGx5IDIgYXJndW1lbnRzICgxIGdpdmVuKQotCi1UaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgaW4gaW5jbHVkZXMga2V5d29yZHM6Ci0KLSAgICA+Pj4gZGVmIGYoYSk6Ci0gICAgLi4uICAgIHBhc3MKLSAgICA+Pj4gZig2LCBhPTQsICooMSwgMiwgMykpCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMSB3YXMgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoYSk6IHBhc3MKKyAgICA+Pj4gZigxLCAyKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGV4YWN0bHkgMSBwb3NpdGlvbmFsIGFyZ3VtZW50ICg1IGdpdmVuKQotICAgID4+PiBkZWYgZihhLCAqLCBrdyk6Ci0gICAgLi4uICAgIHBhc3MKLSAgICA+Pj4gZig2LCA0LCBrdz00KQorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIDEgcG9zaXRpb25hbCBhcmd1bWVudCBidXQgMiB3ZXJlIGdpdmVuCisgICAgPj4+IGRlZiBmKGEsIGI9MSk6IHBhc3MKKyAgICA+Pj4gZigxLCAyLCAzKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgotICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGV4YWN0bHkgMSBwb3NpdGlvbmFsIGFyZ3VtZW50ICgzIGdpdmVuKQorICAgIFR5cGVFcnJvcjogZigpIHRha2VzIGZyb20gMSB0byAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAzIHdlcmUgZ2l2ZW4KKyAgICA+Pj4gZGVmIGYoKiwga3cpOiBwYXNzCisgICAgPj4+IGYoMSwga3c9MykKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSB0YWtlcyAwIHBvc2l0aW9uYWwgYXJndW1lbnRzIGJ1dCAxIHBvc2l0aW9uYWwgYXJndW1lbnQgKGFuZCAxIGtleXdvcmQtb25seSBhcmd1bWVudCkgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZigqLCBrdywgYik6IHBhc3MKKyAgICA+Pj4gZigxLCAyLCAzLCBiPTMsIGt3PTMpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgMCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoYW5kIDIga2V5d29yZC1vbmx5IGFyZ3VtZW50cykgd2VyZSBnaXZlbgorICAgID4+PiBkZWYgZihhLCBiPTIsICosIGt3KTogcGFzcworICAgID4+PiBmKDIsIDMsIDQsIGt3PTQpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgdGFrZXMgZnJvbSAxIHRvIDIgcG9zaXRpb25hbCBhcmd1bWVudHMgYnV0IDMgcG9zaXRpb25hbCBhcmd1bWVudHMgKGFuZCAxIGtleXdvcmQtb25seSBhcmd1bWVudCkgd2VyZSBnaXZlbgorCitUb28gZmV3IGFuZCBtaXNzaW5nIGFyZ3VtZW50czoKKworICAgID4+PiBkZWYgZihhKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2EnCisgICAgPj4+IGRlZiBmKGEsIGIpOiBwYXNzCisgICAgPj4+IGYoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogZigpIG1pc3NpbmcgMiByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50czogJ2EnIGFuZCAnYicKKyAgICA+Pj4gZGVmIGYoYSwgYiwgYyk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyAzIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnRzOiAnYScsICdiJywgYW5kICdjJworICAgID4+PiBkZWYgZihhLCBiLCBjLCBkLCBlKTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDUgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICdhJywgJ2InLCAnYycsICdkJywgYW5kICdlJworICAgID4+PiBkZWYgZihhLCBiPTQsIGM9NSwgZD01KTogcGFzcworICAgID4+PiBmKGM9MTIsIGI9OSkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJ2EnCisKK1NhbWUgd2l0aCBrZXl3b3JkIG9ubHkgYXJnczoKKworICAgID4+PiBkZWYgZigqLCB3KTogcGFzcworICAgID4+PiBmKCkKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgICAuLi4KKyAgICBUeXBlRXJyb3I6IGYoKSBtaXNzaW5nIDEgcmVxdWlyZWQga2V5d29yZC1vbmx5IGFyZ3VtZW50OiAndycKKyAgICA+Pj4gZGVmIGYoKiwgYSwgYiwgYywgZCwgZSk6IHBhc3MKKyAgICA+Pj4gZigpCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiBmKCkgbWlzc2luZyA1IHJlcXVpcmVkIGtleXdvcmQtb25seSBhcmd1bWVudHM6ICdhJywgJ2InLCAnYycsICdkJywgYW5kICdlJworCiAiIiIKIAogaW1wb3J0IHN5cwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODFiMzRkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkKQEAgLTAsMCArMSw1OTMgQEAKK2Zyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGZhdWx0aGFuZGxlcgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNjcmlwdF9oZWxwZXIKK2Zyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB1bml0dGVzdAorCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworICAgIEhBVkVfVEhSRUFEUyA9IFRydWUKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBIQVZFX1RIUkVBRFMgPSBGYWxzZQorCitUSU1FT1VUID0gMC41CisKK3RyeToKKyAgICBmcm9tIHJlc291cmNlIGltcG9ydCBzZXRybGltaXQsIFJMSU1JVF9DT1JFLCBlcnJvciBhcyByZXNvdXJjZV9lcnJvcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHByZXBhcmVfc3VicHJvY2VzcyA9IE5vbmUKK2Vsc2U6CisgICAgZGVmIHByZXBhcmVfc3VicHJvY2VzcygpOgorICAgICAgICAjIGRvbid0IGNyZWF0ZSBjb3JlIGZpbGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2V0cmxpbWl0KFJMSU1JVF9DT1JFLCAoMCwgMCkpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgcmVzb3VyY2VfZXJyb3IpOgorICAgICAgICAgICAgcGFzcworCitkZWYgZXhwZWN0ZWRfdHJhY2ViYWNrKGxpbmVubzEsIGxpbmVubzIsIGhlYWRlciwgbWluX2NvdW50PTEpOgorICAgIHJlZ2V4ID0gaGVhZGVyCisgICAgcmVnZXggKz0gJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lICVzIGluIGZ1bmNcbicgJSBsaW5lbm8xCisgICAgcmVnZXggKz0gJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lICVzIGluIDxtb2R1bGU+JyAlIGxpbmVubzIKKyAgICBpZiAxIDwgbWluX2NvdW50OgorICAgICAgICByZXR1cm4gJ14nICsgKHJlZ2V4ICsgJ1xuJykgKiAobWluX2NvdW50IC0gMSkgKyByZWdleAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAnXicgKyByZWdleCArICckJworCitAY29udGV4dG1hbmFnZXIKK2RlZiB0ZW1wb3JhcnlfZmlsZW5hbWUoKToKKyAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1rdGVtcCgpCisgICAgdHJ5OgorICAgICAgICB5aWVsZCBmaWxlbmFtZQorICAgIGZpbmFsbHk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKGZpbGVuYW1lKQorCitjbGFzcyBGYXVsdEhhbmRsZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGdldF9vdXRwdXQoc2VsZiwgY29kZSwgZmlsZW5hbWU9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBSdW4gdGhlIHNwZWNpZmllZCBjb2RlIGluIFB5dGhvbiAoaW4gYSBuZXcgY2hpbGQgcHJvY2VzcykgYW5kIHJlYWQgdGhlCisgICAgICAgIG91dHB1dCBmcm9tIHRoZSBzdGFuZGFyZCBlcnJvciBvciBmcm9tIGEgZmlsZSAoaWYgZmlsZW5hbWUgaXMgc2V0KS4KKyAgICAgICAgUmV0dXJuIHRoZSBvdXRwdXQgbGluZXMgYXMgYSBsaXN0LgorCisgICAgICAgIFN0cmlwIHRoZSByZWZlcmVuY2UgY291bnQgZnJvbSB0aGUgc3RhbmRhcmQgZXJyb3IgZm9yIFB5dGhvbiBkZWJ1ZworICAgICAgICBidWlsZCwgYW5kIHJlcGxhY2UgIkN1cnJlbnQgdGhyZWFkIDB4MDAwMDdmOGQ4ZmJkOTcwMCIgYnkgIkN1cnJlbnQKKyAgICAgICAgdGhyZWFkIFhYWCIuCisgICAgICAgICIiIgorICAgICAgICBvcHRpb25zID0ge30KKyAgICAgICAgaWYgcHJlcGFyZV9zdWJwcm9jZXNzOgorICAgICAgICAgICAgb3B0aW9uc1sncHJlZXhlY19mbiddID0gcHJlcGFyZV9zdWJwcm9jZXNzCisgICAgICAgIHByb2Nlc3MgPSBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLWMnLCBjb2RlLCAqKm9wdGlvbnMpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgIGV4aXRjb2RlID0gcHJvY2Vzcy53YWl0KCkKKyAgICAgICAgb3V0cHV0ID0gc3VwcG9ydC5zdHJpcF9weXRob25fc3RkZXJyKHN0ZG91dCkKKyAgICAgICAgb3V0cHV0ID0gb3V0cHV0LmRlY29kZSgnYXNjaWknLCAnYmFja3NsYXNocmVwbGFjZScpCisgICAgICAgIGlmIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsICcnKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dC5kZWNvZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQorICAgICAgICBvdXRwdXQgPSByZS5zdWIoJ0N1cnJlbnQgdGhyZWFkIDB4WzAtOWEtZl0rJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdDdXJyZW50IHRocmVhZCBYWFgnLAorICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0KQorICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0bGluZXMoKSwgZXhpdGNvZGUKKworICAgIGRlZiBjaGVja19mYXRhbF9lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgbmFtZV9yZWdleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Tm9uZSwgYWxsX3RocmVhZHM9VHJ1ZSwgb3RoZXJfcmVnZXg9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IHRoZSBmYXVsdCBoYW5kbGVyIGZvciBmYXRhbCBlcnJvcnMgaXMgZW5hYmxlZCBhbmQgY2hlY2sgdGhlCisgICAgICAgIHRyYWNlYmFjayBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzIG91dHB1dC4KKworICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGFsbF90aHJlYWRzOgorICAgICAgICAgICAgaGVhZGVyID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCcKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGhlYWRlciA9ICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpJworICAgICAgICByZWdleCA9ICIiIgorXkZhdGFsIFB5dGhvbiBlcnJvcjoge25hbWV9CisKK3toZWFkZXJ9OgorICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gPG1vZHVsZT4KKyIiIi5zdHJpcCgpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KAorICAgICAgICAgICAgbGluZW5vPWxpbmVfbnVtYmVyLAorICAgICAgICAgICAgbmFtZT1uYW1lX3JlZ2V4LAorICAgICAgICAgICAgaGVhZGVyPXJlLmVzY2FwZShoZWFkZXIpKQorICAgICAgICBpZiBvdGhlcl9yZWdleDoKKyAgICAgICAgICAgIHJlZ2V4ICs9ICd8JyArIG90aGVyX3JlZ2V4CisgICAgICAgIG91dHB1dCwgZXhpdGNvZGUgPSBzZWxmLmdldF9vdXRwdXQoY29kZSwgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCA9ICdcbicuam9pbihvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X3JlYWRfbnVsbChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgIyBJc3N1ZSAjMTI3MDA6IFJlYWQgTlVMTCByYWlzZXMgU0lHSUxMIG9uIE1hYyBPUyBYIExpb24KKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKworICAgIGRlZiB0ZXN0X3NpZ3NlZ3Yoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnc2VndigpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnU2VnbWVudGF0aW9uIGZhdWx0JykKKworICAgIGRlZiB0ZXN0X3NpZ2FicnQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuZW5hYmxlKCkKK2ZhdWx0aGFuZGxlci5fc2lnYWJydCgpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnQWJvcnRlZCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgIlNJR0ZQRSBjYW5ub3QgYmUgY2F1Z2h0IG9uIFdpbmRvd3MiKQorICAgIGRlZiB0ZXN0X3NpZ2ZwZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdmcGUoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGV4Y2VwdGlvbicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdidXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnYnVzKCkiKQorICAgIGRlZiB0ZXN0X3NpZ2J1cyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdidXMoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0J1cyBlcnJvcicpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zaWdpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICJuZWVkIGZhdWx0aGFuZGxlci5fc2lnaWxsKCkiKQorICAgIGRlZiB0ZXN0X3NpZ2lsbChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zaWdpbGwoKQorIiIiLnN0cmlwKCksCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ0lsbGVnYWwgaW5zdHJ1Y3Rpb24nKQorCisgICAgZGVmIHRlc3RfZmF0YWxfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitmYXVsdGhhbmRsZXIuX2ZhdGFsX2Vycm9yKGIneHl6JykKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMiwKKyAgICAgICAgICAgICd4eXonKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3BlbmJzZCcpIGFuZCBIQVZFX1RIUkVBRFMsCisgICAgICAgICAgICAgICAgICAgICAiSXNzdWUgIzEyODY4OiBzaWdhbHRzdGFjaygpIGRvZXNuJ3Qgd29yayBvbiAiCisgICAgICAgICAgICAgICAgICAgICAiT3BlbkJTRCBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBwdGhyZWFkIikKKyAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGZhdWx0aGFuZGxlciwgJ19zdGFja19vdmVyZmxvdycpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgZmF1bHRoYW5kbGVyLl9zdGFja19vdmVyZmxvdygpJykKKyAgICBkZWYgdGVzdF9zdGFja19vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9zdGFja19vdmVyZmxvdygpCisiIiIuc3RyaXAoKSwKKyAgICAgICAgICAgIDMsCisgICAgICAgICAgICAnKD86U2VnbWVudGF0aW9uIGZhdWx0fEJ1cyBlcnJvciknLAorICAgICAgICAgICAgb3RoZXJfcmVnZXg9J3VuYWJsZSB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93JykKKworICAgIGRlZiB0ZXN0X2dpbF9yZWxlYXNlZChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ZhdWx0aGFuZGxlci5lbmFibGUoKQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoVHJ1ZSkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKworICAgIGRlZiB0ZXN0X2VuYWJsZV9maWxlKHNlbGYpOgorICAgICAgICB3aXRoIHRlbXBvcmFyeV9maWxlbmFtZSgpIGFzIGZpbGVuYW1lOgorICAgICAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK291dHB1dCA9IG9wZW4oe2ZpbGVuYW1lfSwgJ3diJykKK2ZhdWx0aGFuZGxlci5lbmFibGUob3V0cHV0KQorZmF1bHRoYW5kbGVyLl9yZWFkX251bGwoKQorIiIiLnN0cmlwKCkuZm9ybWF0KGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpKSwKKyAgICAgICAgICAgICAgICA0LAorICAgICAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJywKKyAgICAgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X2VuYWJsZV9zaW5nbGVfdGhyZWFkKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZShhbGxfdGhyZWFkcz1GYWxzZSkKK2ZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyIiIi5zdHJpcCgpLAorICAgICAgICAgICAgMywKKyAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHR8QnVzIGVycm9yfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJywKKyAgICAgICAgICAgIGFsbF90aHJlYWRzPUZhbHNlKQorCisgICAgZGVmIHRlc3RfZGlzYWJsZShzZWxmKToKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZmF1bHRoYW5kbGVyLmVuYWJsZSgpCitmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCitmYXVsdGhhbmRsZXIuX3JlYWRfbnVsbCgpCisiIiIuc3RyaXAoKQorICAgICAgICBub3RfZXhwZWN0ZWQgPSAnRmF0YWwgUHl0aG9uIGVycm9yJworICAgICAgICBzdGRlcnIsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUpCisgICAgICAgIHN0ZGVyID0gJ1xuJy5qb2luKHN0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdF9leHBlY3RlZCBub3QgaW4gc3RkZXJyLAorICAgICAgICAgICAgICAgICAgICAgIiVyIGlzIHByZXNlbnQgaW4gJXIiICUgKG5vdF9leHBlY3RlZCwgc3RkZXJyKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWQoc2VsZik6CisgICAgICAgIG9yaWdfc3RkZXJyID0gc3lzLnN0ZGVycgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHJlZ3J0ZXN0IG1heSByZXBsYWNlIHN5cy5zdGRlcnIgYnkgaW8uU3RyaW5nSU8gb2JqZWN0LCBidXQKKyAgICAgICAgICAgICMgZmF1bHRoYW5kbGVyLmVuYWJsZSgpIHJlcXVpcmVzIHRoYXQgc3lzLnN0ZGVyciBoYXMgYSBmaWxlbm8oKQorICAgICAgICAgICAgIyBtZXRob2QKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzeXMuX19zdGRlcnJfXworCisgICAgICAgICAgICB3YXNfZW5hYmxlZCA9IGZhdWx0aGFuZGxlci5pc19lbmFibGVkKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICBmYXVsdGhhbmRsZXIuZGlzYWJsZSgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmYXVsdGhhbmRsZXIuaXNfZW5hYmxlZCgpKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiB3YXNfZW5hYmxlZDoKKyAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmVuYWJsZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmRpc2FibGUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnN0ZGVyciA9IG9yaWdfc3RkZXJyCisKKyAgICBkZWYgdGVzdF9kaXNhYmxlZF9ieV9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIEJ5IGRlZmF1bHQsIHRoZSBtb2R1bGUgc2hvdWxkIGJlIGRpc2FibGVkCisgICAgICAgIGNvZGUgPSAiaW1wb3J0IGZhdWx0aGFuZGxlcjsgcHJpbnQoZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKSkiCisgICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soIi1jIiwgY29kZSkKKyAgICAgICAgc3Rkb3V0ID0gKHN0ZG91dCArIHN0ZGVycikuc3RyaXAoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJGYWxzZSIpCisKKyAgICBkZWYgdGVzdF9zeXNfeG9wdGlvbnMoc2VsZik6CisgICAgICAgICMgVGVzdCBweXRob24gLVggZmF1bHRoYW5kbGVyCisgICAgICAgIGNvZGUgPSAiaW1wb3J0IGZhdWx0aGFuZGxlcjsgcHJpbnQoZmF1bHRoYW5kbGVyLmlzX2VuYWJsZWQoKSkiCisgICAgICAgIHJjLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soIi1YIiwgImZhdWx0aGFuZGxlciIsICItYyIsIGNvZGUpCisgICAgICAgIHN0ZG91dCA9IChzdGRvdXQgKyBzdGRlcnIpLnN0cmlwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsIGIiVHJ1ZSIpCisKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2soc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICAiIiIKKyAgICAgICAgRXhwbGljaXRseSBjYWxsIGR1bXBfdHJhY2ViYWNrKCkgZnVuY3Rpb24gYW5kIGNoZWNrIGl0cyBvdXRwdXQuCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorCitkZWYgZnVuY0IoKToKKyAgICBpZiB7aGFzX2ZpbGVuYW1lfToKKyAgICAgICAgd2l0aCBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGZwLCBhbGxfdGhyZWFkcz1GYWxzZSkKKyAgICBlbHNlOgorICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soYWxsX3RocmVhZHM9RmFsc2UpCisKK2RlZiBmdW5jQSgpOgorICAgIGZ1bmNCKCkKKworZnVuY0EoKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgZmlsZW5hbWU9cmVwcihmaWxlbmFtZSksCisgICAgICAgICAgICBoYXNfZmlsZW5hbWU9Ym9vbChmaWxlbmFtZSksCisgICAgICAgICkKKyAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBsaW5lbm8gPSA2CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsaW5lbm8gPSA4CisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6JywKKyAgICAgICAgICAgICcgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAlcyBpbiBmdW5jQicgJSBsaW5lbm8sCisgICAgICAgICAgICAnICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMTEgaW4gZnVuY0EnLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDEzIGluIDxtb2R1bGU+JworICAgICAgICBdCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFjayhOb25lKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2soZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF90cnVuY2F0ZShzZWxmKToKKyAgICAgICAgbWF4bGVuID0gNTAwCisgICAgICAgIGZ1bmNfbmFtZSA9ICd4JyAqIChtYXhsZW4gKyA1MCkKKyAgICAgICAgdHJ1bmNhdGVkID0gJ3gnICogbWF4bGVuICsgJy4uLicKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorCitkZWYge2Z1bmNfbmFtZX0oKToKKyAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2soYWxsX3RocmVhZHM9RmFsc2UpCisKK3tmdW5jX25hbWV9KCkKKyIiIi5zdHJpcCgpCisgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKKyAgICAgICAgICAgIGZ1bmNfbmFtZT1mdW5jX25hbWUsCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTonLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDQgaW4gJXMnICUgdHJ1bmNhdGVkLAorICAgICAgICAgICAgJyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDYgaW4gPG1vZHVsZT4nCisgICAgICAgIF0KKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgSEFWRV9USFJFQURTLCAnbmVlZCB0aHJlYWRzJykKKyAgICBkZWYgY2hlY2tfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgICIiIgorICAgICAgICBDYWxsIGV4cGxpY2l0bHkgZHVtcF90cmFjZWJhY2soYWxsX3RocmVhZHM9VHJ1ZSkgYW5kIGNoZWNrIHRoZSBvdXRwdXQuCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBvdXRwdXQgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgY29kZSA9ICIiIgoraW1wb3J0IGZhdWx0aGFuZGxlcgorZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZCwgRXZlbnQKK2ltcG9ydCB0aW1lCisKK2RlZiBkdW1wKCk6CisgICAgaWYge2ZpbGVuYW1lfToKKyAgICAgICAgd2l0aCBvcGVuKHtmaWxlbmFtZX0sICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrKGZwLCBhbGxfdGhyZWFkcz1UcnVlKQorICAgIGVsc2U6CisgICAgICAgIGZhdWx0aGFuZGxlci5kdW1wX3RyYWNlYmFjayhhbGxfdGhyZWFkcz1UcnVlKQorCitjbGFzcyBXYWl0ZXIoVGhyZWFkKToKKyAgICAjIGF2b2lkIGJsb2NraW5nIGlmIHRoZSBtYWluIHRocmVhZCByYWlzZXMgYW4gZXhjZXB0aW9uLgorICAgIGRhZW1vbiA9IFRydWUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYucnVubmluZyA9IEV2ZW50KCkKKyAgICAgICAgc2VsZi5zdG9wID0gRXZlbnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgc2VsZi5ydW5uaW5nLnNldCgpCisgICAgICAgIHNlbGYuc3RvcC53YWl0KCkKKword2FpdGVyID0gV2FpdGVyKCkKK3dhaXRlci5zdGFydCgpCit3YWl0ZXIucnVubmluZy53YWl0KCkKK2R1bXAoKQord2FpdGVyLnN0b3Auc2V0KCkKK3dhaXRlci5qb2luKCkKKyIiIi5zdHJpcCgpCisgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdChmaWxlbmFtZT1yZXByKGZpbGVuYW1lKSkKKyAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0ID0gJ1xuJy5qb2luKG91dHB1dCkKKyAgICAgICAgaWYgZmlsZW5hbWU6CisgICAgICAgICAgICBsaW5lbm8gPSA4CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsaW5lbm8gPSAxMAorICAgICAgICByZWdleCA9ICIiIgorXlRocmVhZCAweFswLTlhLWZdKzoKKyg/OiAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBbX2Etel0rCispe3sxLDN9fSAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDIzIGluIHJ1bgorICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXBfaW5uZXIKKyAgRmlsZSAiLip0aHJlYWRpbmcucHkiLCBsaW5lIFswLTldKyBpbiBfYm9vdHN0cmFwCisKK0N1cnJlbnQgdGhyZWFkIFhYWDoKKyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIHtsaW5lbm99IGluIGR1bXAKKyAgRmlsZSAiPHN0cmluZz4iLCBsaW5lIDI4IGluIDxtb2R1bGU+JAorIiIiLnN0cmlwKCkKKyAgICAgICAgcmVnZXggPSByZWdleC5mb3JtYXQobGluZW5vPWxpbmVubykKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXRwdXQsIHJlZ2V4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfdGhyZWFkcyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja190aHJlYWRzKE5vbmUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja190aHJlYWRzX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggdGVtcG9yYXJ5X2ZpbGVuYW1lKCkgYXMgZmlsZW5hbWU6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX3RocmVhZHMoZmlsZW5hbWUpCisKKyAgICBkZWYgX2NoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHNlbGYsIHJlcGVhdCwgY2FuY2VsLCBmaWxlbmFtZSwgbG9vcHMpOgorICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgaG93IG1hbnkgdGltZXMgdGhlIHRyYWNlYmFjayBpcyB3cml0dGVuIGluIHRpbWVvdXQgeCAyLjUgc2Vjb25kcywKKyAgICAgICAgb3IgdGltZW91dCB4IDMuNSBzZWNvbmRzIGlmIGNhbmNlbCBpcyBUcnVlOiAxLCAyIG9yIDMgdGltZXMgZGVwZW5kaW5nCisgICAgICAgIG9uIHJlcGVhdCBhbmQgY2FuY2VsIG9wdGlvbnMuCisKKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3QgZm9ybWF0LgorICAgICAgICAiIiIKKyAgICAgICAgdGltZW91dF9zdHIgPSBzdHIoZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9VElNRU9VVCkpCisgICAgICAgIGNvZGUgPSAiIiIKK2ltcG9ydCBmYXVsdGhhbmRsZXIKK2ltcG9ydCB0aW1lCisKK2RlZiBmdW5jKHRpbWVvdXQsIHJlcGVhdCwgY2FuY2VsLCBmaWxlLCBsb29wcyk6CisgICAgZm9yIGxvb3AgaW4gcmFuZ2UobG9vcHMpOgorICAgICAgICBmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIodGltZW91dCwgcmVwZWF0PXJlcGVhdCwgZmlsZT1maWxlKQorICAgICAgICBpZiBjYW5jZWw6CisgICAgICAgICAgICBmYXVsdGhhbmRsZXIuY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCkKKyAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0ICogNSkKKyAgICAgICAgZmF1bHRoYW5kbGVyLmNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpCisKK3RpbWVvdXQgPSB7dGltZW91dH0KK3JlcGVhdCA9IHtyZXBlYXR9CitjYW5jZWwgPSB7Y2FuY2VsfQorbG9vcHMgPSB7bG9vcHN9CitpZiB7aGFzX2ZpbGVuYW1lfToKKyAgICBmaWxlID0gb3Blbih7ZmlsZW5hbWV9LCAid2IiKQorZWxzZToKKyAgICBmaWxlID0gTm9uZQorZnVuYyh0aW1lb3V0LCByZXBlYXQsIGNhbmNlbCwgZmlsZSwgbG9vcHMpCitpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgIGZpbGUuY2xvc2UoKQorIiIiLnN0cmlwKCkKKyAgICAgICAgY29kZSA9IGNvZGUuZm9ybWF0KAorICAgICAgICAgICAgdGltZW91dD1USU1FT1VULAorICAgICAgICAgICAgcmVwZWF0PXJlcGVhdCwKKyAgICAgICAgICAgIGNhbmNlbD1jYW5jZWwsCisgICAgICAgICAgICBsb29wcz1sb29wcywKKyAgICAgICAgICAgIGhhc19maWxlbmFtZT1ib29sKGZpbGVuYW1lKSwKKyAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAorICAgICAgICApCisgICAgICAgIHRyYWNlLCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZSkKKyAgICAgICAgdHJhY2UgPSAnXG4nLmpvaW4odHJhY2UpCisKKyAgICAgICAgaWYgbm90IGNhbmNlbDoKKyAgICAgICAgICAgIGNvdW50ID0gbG9vcHMKKyAgICAgICAgICAgIGlmIHJlcGVhdDoKKyAgICAgICAgICAgICAgICBjb3VudCAqPSAyCisgICAgICAgICAgICBoZWFkZXIgPSByJ1RpbWVvdXQgXCglc1wpIVxuVGhyZWFkIDB4WzAtOWEtZl0rOlxuJyAlIHRpbWVvdXRfc3RyCisgICAgICAgICAgICByZWdleCA9IGV4cGVjdGVkX3RyYWNlYmFjayg5LCAyMCwgaGVhZGVyLCBtaW5fY291bnQ9Y291bnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHRyYWNlLCByZWdleCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpLAorICAgICAgICAgICAgICAgICAgICAgJ25lZWQgZmF1bHRoYW5kbGVyLmR1bXBfdHJhY2ViYWNrX2xhdGVyKCknKQorICAgIGRlZiBjaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihzZWxmLCByZXBlYXQ9RmFsc2UsIGNhbmNlbD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU9RmFsc2UsIHR3aWNlPUZhbHNlKToKKyAgICAgICAgaWYgdHdpY2U6CisgICAgICAgICAgICBsb29wcyA9IDIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvb3BzID0gMQorICAgICAgICBpZiBmaWxlOgorICAgICAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICBzZWxmLl9jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihyZXBlYXQsIGNhbmNlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxvb3BzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIocmVwZWF0LCBjYW5jZWwsIE5vbmUsIGxvb3BzKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfcmVwZWF0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHJlcGVhdD1UcnVlKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfY2FuY2VsKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2R1bXBfdHJhY2ViYWNrX2xhdGVyKGNhbmNlbD1UcnVlKQorCisgICAgZGVmIHRlc3RfZHVtcF90cmFjZWJhY2tfbGF0ZXJfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcihmaWxlPVRydWUpCisKKyAgICBkZWYgdGVzdF9kdW1wX3RyYWNlYmFja19sYXRlcl90d2ljZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19kdW1wX3RyYWNlYmFja19sYXRlcih0d2ljZT1UcnVlKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cihmYXVsdGhhbmRsZXIsICJyZWdpc3RlciIpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgZmF1bHRoYW5kbGVyLnJlZ2lzdGVyIikKKyAgICBkZWYgY2hlY2tfcmVnaXN0ZXIoc2VsZiwgZmlsZW5hbWU9RmFsc2UsIGFsbF90aHJlYWRzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyPUZhbHNlLCBjaGFpbj1GYWxzZSk6CisgICAgICAgICIiIgorICAgICAgICBSZWdpc3RlciBhIGhhbmRsZXIgZGlzcGxheWluZyB0aGUgdHJhY2ViYWNrIG9uIGEgdXNlciBzaWduYWwuIFJhaXNlIHRoZQorICAgICAgICBzaWduYWwgYW5kIGNoZWNrIHRoZSB3cml0dGVuIHRyYWNlYmFjay4KKworICAgICAgICBJZiBjaGFpbiBpcyBUcnVlLCBjaGVjayB0aGF0IHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlciBpcyBjYWxsZWQuCisKKyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIG91dHB1dCBkb2Vzbid0IG1hdGNoIHRoZSBleHBlY3RlZCBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHVVNSMQorICAgICAgICBjb2RlID0gIiIiCitpbXBvcnQgZmF1bHRoYW5kbGVyCitpbXBvcnQgb3MKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzeXMKKworZGVmIGZ1bmMoc2lnbnVtKToKKyAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisKK2RlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgIGhhbmRsZXIuY2FsbGVkID0gVHJ1ZQoraGFuZGxlci5jYWxsZWQgPSBGYWxzZQorCitleGl0Y29kZSA9IDAKK3NpZ251bSA9IHtzaWdudW19Cit1bnJlZ2lzdGVyID0ge3VucmVnaXN0ZXJ9CitjaGFpbiA9IHtjaGFpbn0KKworaWYge2hhc19maWxlbmFtZX06CisgICAgZmlsZSA9IG9wZW4oe2ZpbGVuYW1lfSwgIndiIikKK2Vsc2U6CisgICAgZmlsZSA9IE5vbmUKK2lmIGNoYWluOgorICAgIHNpZ25hbC5zaWduYWwoc2lnbnVtLCBoYW5kbGVyKQorZmF1bHRoYW5kbGVyLnJlZ2lzdGVyKHNpZ251bSwgZmlsZT1maWxlLAorICAgICAgICAgICAgICAgICAgICAgIGFsbF90aHJlYWRzPXthbGxfdGhyZWFkc30sIGNoYWluPXtjaGFpbn0pCitpZiB1bnJlZ2lzdGVyOgorICAgIGZhdWx0aGFuZGxlci51bnJlZ2lzdGVyKHNpZ251bSkKK2Z1bmMoc2lnbnVtKQoraWYgY2hhaW4gYW5kIG5vdCBoYW5kbGVyLmNhbGxlZDoKKyAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICBvdXRwdXQgPSBmaWxlCisgICAgZWxzZToKKyAgICAgICAgb3V0cHV0ID0gc3lzLnN0ZGVycgorICAgIHByaW50KCJFcnJvcjogc2lnbmFsIGhhbmRsZXIgbm90IGNhbGxlZCEiLCBmaWxlPW91dHB1dCkKKyAgICBleGl0Y29kZSA9IDEKK2lmIGZpbGUgaXMgbm90IE5vbmU6CisgICAgZmlsZS5jbG9zZSgpCitzeXMuZXhpdChleGl0Y29kZSkKKyIiIi5zdHJpcCgpCisgICAgICAgIGNvZGUgPSBjb2RlLmZvcm1hdCgKKyAgICAgICAgICAgIGZpbGVuYW1lPXJlcHIoZmlsZW5hbWUpLAorICAgICAgICAgICAgaGFzX2ZpbGVuYW1lPWJvb2woZmlsZW5hbWUpLAorICAgICAgICAgICAgYWxsX3RocmVhZHM9YWxsX3RocmVhZHMsCisgICAgICAgICAgICBzaWdudW09c2lnbnVtLAorICAgICAgICAgICAgdW5yZWdpc3Rlcj11bnJlZ2lzdGVyLAorICAgICAgICAgICAgY2hhaW49Y2hhaW4sCisgICAgICAgICkKKyAgICAgICAgdHJhY2UsIGV4aXRjb2RlID0gc2VsZi5nZXRfb3V0cHV0KGNvZGUsIGZpbGVuYW1lKQorICAgICAgICB0cmFjZSA9ICdcbicuam9pbih0cmFjZSkKKyAgICAgICAgaWYgbm90IHVucmVnaXN0ZXI6CisgICAgICAgICAgICBpZiBhbGxfdGhyZWFkczoKKyAgICAgICAgICAgICAgICByZWdleCA9ICdDdXJyZW50IHRocmVhZCBYWFg6XG4nCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ1RyYWNlYmFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKKyAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDcsIDI4LCByZWdleCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodHJhY2UsIHJlZ2V4KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgJycpCisgICAgICAgIGlmIHVucmVnaXN0ZXI6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4aXRjb2RlLCAwKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIGRlZiB0ZXN0X3JlZ2lzdGVyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKCkKKworICAgIGRlZiB0ZXN0X3VucmVnaXN0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIodW5yZWdpc3Rlcj1UcnVlKQorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJfZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wb3JhcnlfZmlsZW5hbWUoKSBhcyBmaWxlbmFtZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcmVnaXN0ZXIoZmlsZW5hbWU9ZmlsZW5hbWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl90aHJlYWRzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlZ2lzdGVyKGFsbF90aHJlYWRzPVRydWUpCisKKyAgICBkZWYgdGVzdF9yZWdpc3Rlcl9jaGFpbihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWdpc3RlcihjaGFpbj1UcnVlKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGYXVsdEhhbmRsZXJUZXN0cykKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQppbmRleCBmMzEyODgyLi4xZTcwNjQxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZpbGVpbnB1dC5weQpAQCAtMiwxOCArMiwzMyBAQAogVGVzdHMgZm9yIGZpbGVpbnB1dCBtb2R1bGUuCiBOaWNrIE1hdGhld3NvbgogJycnCi0KK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHJlCitpbXBvcnQgZmlsZWlucHV0CitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBidWlsdGlucwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBydW5fdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bmxpbmsgYXMgc2FmZV91bmxpbmsKLWltcG9ydCBzeXMsIHJlCisKK3RyeToKKyAgICBpbXBvcnQgYnoyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgYnoyID0gTm9uZQordHJ5OgorICAgIGltcG9ydCBnemlwCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZ3ppcCA9IE5vbmUKKwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gZmlsZWlucHV0IGltcG9ydCBGaWxlSW5wdXQsIGhvb2tfZW5jb2RlZAogCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgVEVTVEZOLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bmxpbmsgYXMgc2FmZV91bmxpbmsKKworCiAjIFRoZSBmaWxlaW5wdXQgbW9kdWxlIGhhcyAyIGludGVyZmFjZXM6IHRoZSBGaWxlSW5wdXQgY2xhc3Mgd2hpY2ggZG9lcwogIyBhbGwgdGhlIHdvcmssIGFuZCBhIGZldyBmdW5jdGlvbnMgKGlucHV0LCBldGMuKSB0aGF0IHVzZSBhIGdsb2JhbCBfc3RhdGUKLSMgdmFyaWFibGUuICBXZSBvbmx5IHRlc3QgdGhlIEZpbGVJbnB1dCBjbGFzcywgc2luY2UgdGhlIG90aGVyIGZ1bmN0aW9ucwotIyBvbmx5IHByb3ZpZGUgYSB0aGluIGZhY2FkZSBvdmVyIEZpbGVJbnB1dC4KKyMgdmFyaWFibGUuCiAKICMgV3JpdGUgbGluZXMgKGEgbGlzdCBvZiBsaW5lcykgdG8gdGVtcCBmaWxlIG51bWJlciBpLCBhbmQgcmV0dXJuIHRoZQogIyB0ZW1wIGZpbGUncyBuYW1lLgpAQCAtMTIxLDcgKzEzNiwxNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobS5ncm91cCgxKSksIGZpLmZpbGVsaW5lbm8oKSkKICAgICAgICAgZmkuY2xvc2UoKQogCitjbGFzcyBVbmNvbmRpdGlvbmFsbHlSYWlzZToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjZXB0aW9uX3R5cGUpOgorICAgICAgICBzZWxmLmV4Y2VwdGlvbl90eXBlID0gZXhjZXB0aW9uX3R5cGUKKyAgICAgICAgc2VsZi5pbnZva2VkID0gRmFsc2UKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5pbnZva2VkID0gVHJ1ZQorICAgICAgICByYWlzZSBzZWxmLmV4Y2VwdGlvbl90eXBlKCkKKwogY2xhc3MgRmlsZUlucHV0VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCiAgICAgZGVmIHRlc3RfemVyb19ieXRlX2ZpbGVzKHNlbGYpOgogICAgICAgICB0MSA9IHQyID0gdDMgPSB0NCA9IE5vbmUKICAgICAgICAgdHJ5OgpAQCAtMjE5LDE3ICsyNDMsMjAgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRmlsZUlucHV0IHNob3VsZCBjaGVjayBvcGVuaG9vayBmb3IgYmVpbmcgY2FsbGFibGUiKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgIyBYWFggVGhlIHJvdDEzIGNvZGVjIHdhcyByZW1vdmVkLgotICAgICAgICAjICAgICBTbyB0aGlzIHRlc3QgbmVlZHMgdG8gYmUgY2hhbmdlZCB0byB1c2Ugc29tZXRoaW5nIGVsc2UuCi0gICAgICAgICMgICAgIChPciBwZXJoYXBzIHRoZSBBUEkgbmVlZHMgdG8gY2hhbmdlIHNvIHdlIGNhbiBqdXN0IHBhc3MKLSAgICAgICAgIyAgICAgYW4gZW5jb2RpbmcgcmF0aGVyIHRoYW4gdXNpbmcgYSBob29rPykKLSMjICAgICAgICAgdHJ5OgotIyMgICAgICAgICAgICAgdDEgPSB3cml0ZVRtcCgxLCBbIkFcbkIiXSwgbW9kZT0id2IiKQotIyMgICAgICAgICAgICAgZmkgPSBGaWxlSW5wdXQoZmlsZXM9dDEsIG9wZW5ob29rPWhvb2tfZW5jb2RlZCgicm90MTMiKSkKLSMjICAgICAgICAgICAgIGxpbmVzID0gbGlzdChmaSkKLSMjICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIFsiTlxuIiwgIk8iXSkKLSMjICAgICAgICAgZmluYWxseToKLSMjICAgICAgICAgICAgIHJlbW92ZV90ZW1wZmlsZXModDEpCisKKyAgICAgICAgY2xhc3MgQ3VzdG9tT3Blbkhvb2s6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pbnZva2VkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5pbnZva2VkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiBvcGVuKCphcmdzKQorCisgICAgICAgIHQgPSB3cml0ZVRtcCgxLCBbIlxuIl0pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICBjdXN0b21fb3Blbl9ob29rID0gQ3VzdG9tT3Blbkhvb2soKQorICAgICAgICB3aXRoIEZpbGVJbnB1dChbdF0sIG9wZW5ob29rPWN1c3RvbV9vcGVuX2hvb2spIGFzIGZpOgorICAgICAgICAgICAgZmkucmVhZGxpbmUoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3VzdG9tX29wZW5faG9vay5pbnZva2VkLCAib3Blbmhvb2sgbm90IGludm9rZWQiKQogCiAgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgogICAgICAgICB0cnk6CkBAIC0yNTQsOSArMjgxLDU3NiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgcmVtb3ZlX3RlbXBmaWxlcyh0MSkKIAorICAgIGRlZiB0ZXN0X2VtcHR5X2ZpbGVzX2xpc3Rfc3BlY2lmaWVkX3RvX2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bXSkgYXMgZmk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpLl9maWxlcywgKCctJywpKQorCisgICAgZGVmIHRlc3RfX2dldGl0ZW1fXyhzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Ll9fZ2V0aXRlbV9fKCkgd2l0aCB0aGUgY3VycmVudAorICAgICAgICAgICBsaW5lIG51bWJlciIiIgorICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJsaW5lMVxuIiwgImxpbmUyXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICByZXR2YWwxID0gZmlbMF0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0dmFsMSwgImxpbmUxXG4iKQorICAgICAgICAgICAgcmV0dmFsMiA9IGZpWzFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHZhbDIsICJsaW5lMlxuIikKKworICAgIGRlZiB0ZXN0X19nZXRpdGVtX19pbnZhbGlkX2tleShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Ll9fZ2V0aXRlbV9fKCkgd2l0aCBhbiBpbmRleCB1bmVxdWFsIHRvCisgICAgICAgICAgIHRoZSBsaW5lIG51bWJlciIiIgorICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJsaW5lMVxuIiwgImxpbmUyXG4iXSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlbW92ZV90ZW1wZmlsZXMsIHQpCisgICAgICAgIHdpdGggRmlsZUlucHV0KGZpbGVzPVt0XSkgYXMgZmk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgZmlbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uYXJncywgKCJhY2Nlc3NpbmcgbGluZXMgb3V0IG9mIG9yZGVyIiwpKQorCisgICAgZGVmIHRlc3RfX2dldGl0ZW1fX2VvZihzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgaW52b2tpbmcgRmlsZUlucHV0Ll9fZ2V0aXRlbV9fKCkgd2l0aCB0aGUgbGluZSBudW1iZXIgYnV0IGF0CisgICAgICAgICAgIGVuZC1vZi1pbnB1dCIiIgorICAgICAgICB0ID0gd3JpdGVUbXAoMSwgW10pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1bdF0pIGFzIGZpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmaVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5hcmdzLCAoImVuZCBvZiBpbnB1dCByZWFjaGVkIiwpKQorCisgICAgZGVmIHRlc3RfbmV4dGZpbGVfb3NlcnJvcl9kZWxldGluZ19iYWNrdXAoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIEZpbGVJbnB1dC5uZXh0ZmlsZSgpIHdoZW4gdGhlIGF0dGVtcHQgdG8gZGVsZXRlCisgICAgICAgICAgIHRoZSBiYWNrdXAgZmlsZSB3b3VsZCByYWlzZSBPU0Vycm9yLiAgVGhpcyBlcnJvciBpcyBleHBlY3RlZCB0byBiZQorICAgICAgICAgICBzaWxlbnRseSBpZ25vcmVkIiIiCisKKyAgICAgICAgb3NfdW5saW5rX29yaWcgPSBvcy51bmxpbmsKKyAgICAgICAgb3NfdW5saW5rX3JlcGxhY2VtZW50ID0gVW5jb25kaXRpb25hbGx5UmFpc2UoT1NFcnJvcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdLCBpbnBsYWNlPVRydWUpIGFzIGZpOgorICAgICAgICAgICAgICAgIG5leHQoZmkpICMgbWFrZSBzdXJlIHRoZSBmaWxlIGlzIG9wZW5lZAorICAgICAgICAgICAgICAgIG9zLnVubGluayA9IG9zX3VubGlua19yZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGZpLm5leHRmaWxlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayA9IG9zX3VubGlua19vcmlnCisKKyAgICAgICAgIyBzYW5pdHkgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgb3VyIHRlc3Qgc2NlbmFyaW8gd2FzIGFjdHVhbGx5IGhpdAorICAgICAgICBzZWxmLmFzc2VydFRydWUob3NfdW5saW5rX3JlcGxhY2VtZW50Lmludm9rZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAib3MudW5saW5rKCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgIGRlZiB0ZXN0X3JlYWRsaW5lX29zX2ZzdGF0X3JhaXNlc19PU0Vycm9yKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQucmVhZGxpbmUoKSB3aGVuIG9zLmZzdGF0KCkgcmFpc2VzIE9TRXJyb3IuCisgICAgICAgICAgIFRoaXMgZXhjZXB0aW9uIHNob3VsZCBiZSBzaWxlbnRseSBkaXNjYXJkZWQuIiIiCisKKyAgICAgICAgb3NfZnN0YXRfb3JpZyA9IG9zLmZzdGF0CisgICAgICAgIG9zX2ZzdGF0X3JlcGxhY2VtZW50ID0gVW5jb25kaXRpb25hbGx5UmFpc2UoT1NFcnJvcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdLCBpbnBsYWNlPVRydWUpIGFzIGZpOgorICAgICAgICAgICAgICAgIG9zLmZzdGF0ID0gb3NfZnN0YXRfcmVwbGFjZW1lbnQKKyAgICAgICAgICAgICAgICBmaS5yZWFkbGluZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5mc3RhdCA9IG9zX2ZzdGF0X29yaWcKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvc19mc3RhdF9yZXBsYWNlbWVudC5pbnZva2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9zLmZzdGF0KCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIob3MsICJjaG1vZCIpLCAib3MuY2htb2QgZG9lcyBub3QgZXhpc3QiKQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX29zX2NobW9kX3JhaXNlc19PU0Vycm9yKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBGaWxlSW5wdXQucmVhZGxpbmUoKSB3aGVuIG9zLmNobW9kKCkgcmFpc2VzIE9TRXJyb3IuCisgICAgICAgICAgIFRoaXMgZXhjZXB0aW9uIHNob3VsZCBiZSBzaWxlbnRseSBkaXNjYXJkZWQuIiIiCisKKyAgICAgICAgb3NfY2htb2Rfb3JpZyA9IG9zLmNobW9kCisgICAgICAgIG9zX2NobW9kX3JlcGxhY2VtZW50ID0gVW5jb25kaXRpb25hbGx5UmFpc2UoT1NFcnJvcikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdCA9IHdyaXRlVG1wKDEsIFsiXG4iXSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChyZW1vdmVfdGVtcGZpbGVzLCB0KQorICAgICAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdLCBpbnBsYWNlPVRydWUpIGFzIGZpOgorICAgICAgICAgICAgICAgIG9zLmNobW9kID0gb3NfY2htb2RfcmVwbGFjZW1lbnQKKyAgICAgICAgICAgICAgICBmaS5yZWFkbGluZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaG1vZCA9IG9zX2NobW9kX29yaWcKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvc19jaG1vZF9yZXBsYWNlbWVudC5pbnZva2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIm9zLmZzdGF0KCkgd2FzIG5vdCBpbnZva2VkIikKKworICAgIGRlZiB0ZXN0X2ZpbGVub193aGVuX1ZhbHVlRXJyb3JfcmFpc2VkKHNlbGYpOgorICAgICAgICBjbGFzcyBGaWxlbm9SYWlzZXNWYWx1ZUVycm9yKFVuY29uZGl0aW9uYWxseVJhaXNlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBVbmNvbmRpdGlvbmFsbHlSYWlzZS5fX2luaXRfXyhzZWxmLCBWYWx1ZUVycm9yKQorICAgICAgICAgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9fY2FsbF9fKCkKKworICAgICAgICB1bmNvbmRpdGlvbmFsbHlfcmFpc2VfVmFsdWVFcnJvciA9IEZpbGVub1JhaXNlc1ZhbHVlRXJyb3IoKQorICAgICAgICB0ID0gd3JpdGVUbXAoMSwgWyJcbiJdKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocmVtb3ZlX3RlbXBmaWxlcywgdCkKKyAgICAgICAgd2l0aCBGaWxlSW5wdXQoZmlsZXM9W3RdKSBhcyBmaToKKyAgICAgICAgICAgIGZpbGVfYmFja3VwID0gZmkuX2ZpbGUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaS5fZmlsZSA9IHVuY29uZGl0aW9uYWxseV9yYWlzZV9WYWx1ZUVycm9yCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmkuZmlsZW5vKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgZmkuX2ZpbGUgPSBmaWxlX2JhY2t1cCAjIG1ha2Ugc3VyZSB0aGUgZmlsZSBnZXRzIGNsZWFuZWQgdXAKKworICAgICAgICAjIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgdGVzdCBzY2VuYXJpbyB3YXMgYWN0dWFsbHkgaGl0CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1bmNvbmRpdGlvbmFsbHlfcmFpc2VfVmFsdWVFcnJvci5pbnZva2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9maWxlLmZpbGVubygpIHdhcyBub3QgaW52b2tlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIC0xLCAiZmlsZW5vKCkgc2hvdWxkIHJldHVybiAtMSIpCisKK2NsYXNzIE1vY2tGaWxlSW5wdXQ6CisgICAgIiIiQSBjbGFzcyB0aGF0IG1vY2tzIG91dCBmaWxlaW5wdXQuRmlsZUlucHV0IGZvciB1c2UgZHVyaW5nIHVuaXQgdGVzdHMiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlcz1Ob25lLCBpbnBsYWNlPUZhbHNlLCBiYWNrdXA9IiIsIGJ1ZnNpemU9MCwKKyAgICAgICAgICAgICAgICAgbW9kZT0iciIsIG9wZW5ob29rPU5vbmUpOgorICAgICAgICBzZWxmLmZpbGVzID0gZmlsZXMKKyAgICAgICAgc2VsZi5pbnBsYWNlID0gaW5wbGFjZQorICAgICAgICBzZWxmLmJhY2t1cCA9IGJhY2t1cAorICAgICAgICBzZWxmLmJ1ZnNpemUgPSBidWZzaXplCisgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKKyAgICAgICAgc2VsZi5vcGVuaG9vayA9IG9wZW5ob29rCisgICAgICAgIHNlbGYuX2ZpbGUgPSBOb25lCisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHMgPSBjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdChsYW1iZGE6IDApCisgICAgICAgIHNlbGYucmV0dXJuX3ZhbHVlcyA9IHt9CisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImNsb3NlIl0gKz0gMQorCisgICAgZGVmIG5leHRmaWxlKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJuZXh0ZmlsZSJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1sibmV4dGZpbGUiXQorCisgICAgZGVmIGZpbGVuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJmaWxlbmFtZSJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siZmlsZW5hbWUiXQorCisgICAgZGVmIGxpbmVubyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1sibGluZW5vIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJsaW5lbm8iXQorCisgICAgZGVmIGZpbGVsaW5lbm8oc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImZpbGVsaW5lbm8iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImZpbGVsaW5lbm8iXQorCisgICAgZGVmIGZpbGVubyhzZWxmKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50c1siZmlsZW5vIl0gKz0gMQorICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsdWVzWyJmaWxlbm8iXQorCisgICAgZGVmIGlzZmlyc3RsaW5lKHNlbGYpOgorICAgICAgICBzZWxmLmludm9jYXRpb25fY291bnRzWyJpc2ZpcnN0bGluZSJdICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYucmV0dXJuX3ZhbHVlc1siaXNmaXJzdGxpbmUiXQorCisgICAgZGVmIGlzc3RkaW4oc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudHNbImlzc3RkaW4iXSArPSAxCisgICAgICAgIHJldHVybiBzZWxmLnJldHVybl92YWx1ZXNbImlzc3RkaW4iXQorCitjbGFzcyBCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIHVuaXQgdGVzdHMgZm9yIHRoZSBnbG9iYWwgZnVuY3Rpb24gb2YKKyAgICAgICB0aGUgZmlsZWlucHV0IG1vZHVsZS4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5fb3JpZ19zdGF0ZSA9IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgc2VsZi5fb3JpZ19GaWxlSW5wdXQgPSBmaWxlaW5wdXQuRmlsZUlucHV0CisgICAgICAgIGZpbGVpbnB1dC5GaWxlSW5wdXQgPSBNb2NrRmlsZUlucHV0CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGZpbGVpbnB1dC5GaWxlSW5wdXQgPSBzZWxmLl9vcmlnX0ZpbGVJbnB1dAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gc2VsZi5fb3JpZ19zdGF0ZQorCisgICAgZGVmIGFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKHNlbGYsIG1vY2tfZmlsZV9pbnB1dCwgbWV0aG9kX25hbWUpOgorICAgICAgICAjIGFzc2VydCB0aGF0IHRoZSBtZXRob2Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZSB3YXMgaW52b2tlZCBvbmNlCisgICAgICAgIGFjdHVhbF9jb3VudCA9IG1vY2tfZmlsZV9pbnB1dC5pbnZvY2F0aW9uX2NvdW50c1ttZXRob2RfbmFtZV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfY291bnQsIDEsIG1ldGhvZF9uYW1lKQorICAgICAgICAjIGFzc2VydCB0aGF0IG5vIG90aGVyIHVuZXhwZWN0ZWQgbWV0aG9kcyB3ZXJlIGludm9rZWQKKyAgICAgICAgYWN0dWFsX3RvdGFsX2NvdW50ID0gbGVuKG1vY2tfZmlsZV9pbnB1dC5pbnZvY2F0aW9uX2NvdW50cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfdG90YWxfY291bnQsIDEpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2lucHV0KEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmlucHV0KCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lX2FuZF9zdGF0ZV9maWxlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBmaWxlaW5wdXQuaW5wdXQoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgYW5kIGl0cyBfZmlsZSBhdHRyaWJ1dGUgaXMgYWxzbyBub3QgTm9uZS4gIEV4cGVjdCBSdW50aW1lRXJyb3IgdG8KKyAgICAgICAgICAgYmUgcmFpc2VkIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UgYW5kIGZvciBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvICpub3QqIGJlIG1vZGlmaWVkLiIiIgorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5fZmlsZSA9IG9iamVjdCgpCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuaW5wdXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgiaW5wdXQoKSBhbHJlYWR5IGFjdGl2ZSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW5zdGFuY2UsIGZpbGVpbnB1dC5fc3RhdGUsICJmaWxlaW5wdXQuX3N0YXRlIikKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lX2FuZF9zdGF0ZV9maWxlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGludm9raW5nIGZpbGVpbnB1dC5pbnB1dCgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZQorICAgICAgICAgICBidXQgaXRzIF9maWxlIGF0dHJpYnV0ZSAqaXMqIE5vbmUuICBFeHBlY3QgaXQgdG8gY3JlYXRlIGFuZCByZXR1cm4KKyAgICAgICAgICAgYSBuZXcgZmlsZWlucHV0LkZpbGVJbnB1dCBvYmplY3Qgd2l0aCBhbGwgbWV0aG9kIHBhcmFtZXRlcnMgcGFzc2VkCisgICAgICAgICAgIGV4cGxpY2l0bHkgdG8gdGhlIF9faW5pdF9fKCkgbWV0aG9kOyBhbHNvIGVuc3VyZSB0aGF0CisgICAgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgaXMgc2V0IHRvIHRoZSByZXR1cm5lZCBpbnN0YW5jZS4iIiIKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UuX2ZpbGUgPSBOb25lCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICBzZWxmLmRvX3Rlc3RfY2FsbF9pbnB1dCgpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBpbnZva2luZyBmaWxlaW5wdXQuaW5wdXQoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZQorICAgICAgICAgICBFeHBlY3QgaXQgdG8gY3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgZmlsZWlucHV0LkZpbGVJbnB1dCBvYmplY3QKKyAgICAgICAgICAgd2l0aCBhbGwgbWV0aG9kIHBhcmFtZXRlcnMgcGFzc2VkIGV4cGxpY2l0bHkgdG8gdGhlIF9faW5pdF9fKCkKKyAgICAgICAgICAgbWV0aG9kOyBhbHNvIGVuc3VyZSB0aGF0IGZpbGVpbnB1dC5fc3RhdGUgaXMgc2V0IHRvIHRoZSByZXR1cm5lZAorICAgICAgICAgICBpbnN0YW5jZS4iIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgc2VsZi5kb190ZXN0X2NhbGxfaW5wdXQoKQorCisgICAgZGVmIGRvX3Rlc3RfY2FsbF9pbnB1dChzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgdGhhdCBmaWxlaW5wdXQuaW5wdXQoKSBjcmVhdGVzIGEgbmV3IGZpbGVpbnB1dC5GaWxlSW5wdXQKKyAgICAgICAgICAgb2JqZWN0LCBwYXNzaW5nIHRoZSBnaXZlbiBwYXJhbWV0ZXJzIHVubW9kaWZpZWQgdG8KKyAgICAgICAgICAgZmlsZWlucHV0LkZpbGVJbnB1dC5fX2luaXRfXygpLiAgTm90ZSB0aGF0IHRoaXMgdGVzdCBkZXBlbmRzIG9uIHRoZQorICAgICAgICAgICBtb25rZXkgcGF0Y2hpbmcgb2YgZmlsZWlucHV0LkZpbGVJbnB1dCBkb25lIGJ5IHNldFVwKCkuIiIiCisgICAgICAgIGZpbGVzID0gb2JqZWN0KCkKKyAgICAgICAgaW5wbGFjZSA9IG9iamVjdCgpCisgICAgICAgIGJhY2t1cCA9IG9iamVjdCgpCisgICAgICAgIGJ1ZnNpemUgPSBvYmplY3QoKQorICAgICAgICBtb2RlID0gb2JqZWN0KCkKKyAgICAgICAgb3Blbmhvb2sgPSBvYmplY3QoKQorCisgICAgICAgICMgY2FsbCBmaWxlaW5wdXQuaW5wdXQoKSB3aXRoIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGVhY2ggYXJndW1lbnQKKyAgICAgICAgcmVzdWx0ID0gZmlsZWlucHV0LmlucHV0KGZpbGVzPWZpbGVzLCBpbnBsYWNlPWlucGxhY2UsIGJhY2t1cD1iYWNrdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplPWJ1ZnNpemUsCisgICAgICAgICAgICBtb2RlPW1vZGUsIG9wZW5ob29rPW9wZW5ob29rKQorCisgICAgICAgICMgZW5zdXJlIGZpbGVpbnB1dC5fc3RhdGUgd2FzIHNldCB0byB0aGUgcmV0dXJuZWQgb2JqZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmVzdWx0LCBmaWxlaW5wdXQuX3N0YXRlLCAiZmlsZWlucHV0Ll9zdGF0ZSIpCisKKyAgICAgICAgIyBlbnN1cmUgdGhlIHBhcmFtZXRlcnMgdG8gZmlsZWlucHV0LmlucHV0KCkgd2VyZSBwYXNzZWQgZGlyZWN0bHkKKyAgICAgICAgIyB0byBGaWxlSW5wdXQuX19pbml0X18oKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVzLCByZXN1bHQuZmlsZXMsICJmaWxlcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW5wbGFjZSwgcmVzdWx0LmlucGxhY2UsICJpbnBsYWNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhiYWNrdXAsIHJlc3VsdC5iYWNrdXAsICJiYWNrdXAiKQorICAgICAgICBzZWxmLmFzc2VydElzKGJ1ZnNpemUsIHJlc3VsdC5idWZzaXplLCAiYnVmc2l6ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kZSwgcmVzdWx0Lm1vZGUsICJtb2RlIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhvcGVuaG9vaywgcmVzdWx0Lm9wZW5ob29rLCAib3Blbmhvb2siKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9jbG9zZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5jbG9zZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVpbnB1dC5jbG9zZSgpIGRvZXMgbm90aGluZyBpZiBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIGlzIE5vbmUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgZmlsZWlucHV0LmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVpbnB1dC5jbG9zZSgpIGludm9rZXMgY2xvc2UoKSBvbiBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIGFuZCBzZXRzIF9zdGF0ZT1Ob25lIiIiCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICBmaWxlaW5wdXQuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiY2xvc2UiKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9uZXh0ZmlsZShCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5uZXh0ZmlsZSgpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubmV4dGZpbGUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQubmV4dGZpbGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5uZXh0ZmlsZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLm5leHRmaWxlKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIG5leHRmaWxlX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbIm5leHRmaWxlIl0gPSBuZXh0ZmlsZV9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5uZXh0ZmlsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJuZXh0ZmlsZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBuZXh0ZmlsZV9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2ZpbGVuYW1lKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmZpbGVuYW1lKCkiIiIKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5maWxlbmFtZSgpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5maWxlbmFtZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVuYW1lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIG5vdCBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCBpbnZva2VzIGZpbGVpbnB1dC5fc3RhdGUuZmlsZW5hbWUoKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgZmlsZW5hbWVfcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siZmlsZW5hbWUiXSA9IGZpbGVuYW1lX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmZpbGVuYW1lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImZpbGVuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIGZpbGVuYW1lX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfbGluZW5vKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmxpbmVubygpIiIiCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQubGluZW5vKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmxpbmVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmxpbmVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBub3QgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgaW52b2tlcyBmaWxlaW5wdXQuX3N0YXRlLmxpbmVubygpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBsaW5lbm9fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1sibGluZW5vIl0gPSBsaW5lbm9fcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQubGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImxpbmVubyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCBsaW5lbm9fcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9maWxlbGluZW5vKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0LmZpbGVsaW5lbm8oKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVsaW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuZmlsZWxpbmVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVsaW5lbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5maWxlbGluZW5vKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGZpbGVsaW5lbm9fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siZmlsZWxpbmVubyJdID0gZmlsZWxpbmVub19yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5maWxlbGluZW5vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImZpbGVsaW5lbm8iKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgZmlsZWxpbmVub19yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIFRlc3RfZmlsZWlucHV0X2ZpbGVubyhCYXNlRmlsZUlucHV0R2xvYmFsTWV0aG9kc1Rlc3QpOgorICAgICIiIlVuaXQgdGVzdHMgZm9yIGZpbGVpbnB1dC5maWxlbm8oKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmZpbGVubygpIHdoZW4gZmlsZWlucHV0Ll9zdGF0ZSBpcyBOb25lLgorICAgICAgICAgICBFbnN1cmUgdGhhdCBpdCByYWlzZXMgUnVudGltZUVycm9yIHdpdGggYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgICAgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlIiIiCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBOb25lCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGZpbGVpbnB1dC5maWxlbm8oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgibm8gYWN0aXZlIGlucHV0KCkiLCksIGNtLmV4Y2VwdGlvbi5hcmdzKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmaWxlaW5wdXQuX3N0YXRlKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfbm90X05vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3RzIGZpbGVpbnB1dC5maWxlbm8oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5maWxlbm8oKSBleGFjdGx5IG9uY2UsCisgICAgICAgICAgIHJldHVybnMgd2hhdGV2ZXIgaXQgcmV0dXJucywgYW5kIGRvZXMgbm90IG1vZGlmeSBmaWxlaW5wdXQuX3N0YXRlCisgICAgICAgICAgIHRvIHBvaW50IHRvIGEgZGlmZmVyZW50IG9iamVjdC4iIiIKKyAgICAgICAgZmlsZW5vX3JldHZhbCA9IG9iamVjdCgpCisgICAgICAgIGluc3RhbmNlID0gTW9ja0ZpbGVJbnB1dCgpCisgICAgICAgIGluc3RhbmNlLnJldHVybl92YWx1ZXNbImZpbGVubyJdID0gZmlsZW5vX3JldHZhbAorICAgICAgICBpbnN0YW5jZS5maWxlbm9fcmV0dmFsID0gZmlsZW5vX3JldHZhbAorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gaW5zdGFuY2UKKyAgICAgICAgcmV0dmFsID0gZmlsZWlucHV0LmZpbGVubygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RseU9uZUludm9jYXRpb24oaW5zdGFuY2UsICJmaWxlbm8iKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgZmlsZW5vX3JldHZhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhmaWxlaW5wdXQuX3N0YXRlLCBpbnN0YW5jZSkKKworY2xhc3MgVGVzdF9maWxlaW5wdXRfaXNmaXJzdGxpbmUoQmFzZUZpbGVJbnB1dEdsb2JhbE1ldGhvZHNUZXN0KToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0LmlzZmlyc3RsaW5lKCkgd2hlbiBmaWxlaW5wdXQuX3N0YXRlIGlzIE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IHJhaXNlcyBSdW50aW1lRXJyb3Igd2l0aCBhIG1lYW5pbmdmdWwgZXJyb3IgbWVzc2FnZQorICAgICAgICAgICBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUiIiIKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IE5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZmlsZWlucHV0LmlzZmlyc3RsaW5lKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoIm5vIGFjdGl2ZSBpbnB1dCgpIiwpLCBjbS5leGNlcHRpb24uYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmlsZWlucHV0Ll9zdGF0ZSkKKworICAgIGRlZiB0ZXN0X3N0YXRlX2lzX25vdF9Ob25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0cyBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5pc2ZpcnN0bGluZSgpIGV4YWN0bHkgb25jZSwKKyAgICAgICAgICAgcmV0dXJucyB3aGF0ZXZlciBpdCByZXR1cm5zLCBhbmQgZG9lcyBub3QgbW9kaWZ5IGZpbGVpbnB1dC5fc3RhdGUKKyAgICAgICAgICAgdG8gcG9pbnQgdG8gYSBkaWZmZXJlbnQgb2JqZWN0LiIiIgorICAgICAgICBpc2ZpcnN0bGluZV9yZXR2YWwgPSBvYmplY3QoKQorICAgICAgICBpbnN0YW5jZSA9IE1vY2tGaWxlSW5wdXQoKQorICAgICAgICBpbnN0YW5jZS5yZXR1cm5fdmFsdWVzWyJpc2ZpcnN0bGluZSJdID0gaXNmaXJzdGxpbmVfcmV0dmFsCisgICAgICAgIGZpbGVpbnB1dC5fc3RhdGUgPSBpbnN0YW5jZQorICAgICAgICByZXR2YWwgPSBmaWxlaW5wdXQuaXNmaXJzdGxpbmUoKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0bHlPbmVJbnZvY2F0aW9uKGluc3RhbmNlLCAiaXNmaXJzdGxpbmUiKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgaXNmaXJzdGxpbmVfcmV0dmFsKQorICAgICAgICBzZWxmLmFzc2VydElzKGZpbGVpbnB1dC5fc3RhdGUsIGluc3RhbmNlKQorCitjbGFzcyBUZXN0X2ZpbGVpbnB1dF9pc3N0ZGluKEJhc2VGaWxlSW5wdXRHbG9iYWxNZXRob2RzVGVzdCk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lmlzc3RkaW4oKSIiIgorCisgICAgZGVmIHRlc3Rfc3RhdGVfaXNfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lmlzc3RkaW4oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgTm9uZS4KKyAgICAgICAgICAgRW5zdXJlIHRoYXQgaXQgcmFpc2VzIFJ1bnRpbWVFcnJvciB3aXRoIGEgbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlCisgICAgICAgICAgIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZSIiIgorICAgICAgICBmaWxlaW5wdXQuX3N0YXRlID0gTm9uZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBmaWxlaW5wdXQuaXNzdGRpbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCJubyBhY3RpdmUgaW5wdXQoKSIsKSwgY20uZXhjZXB0aW9uLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZpbGVpbnB1dC5fc3RhdGUpCisKKyAgICBkZWYgdGVzdF9zdGF0ZV9pc19ub3RfTm9uZShzZWxmKToKKyAgICAgICAgIiIiVGVzdHMgZmlsZWlucHV0Lmlzc3RkaW4oKSB3aGVuIGZpbGVpbnB1dC5fc3RhdGUgaXMgbm90IE5vbmUuCisgICAgICAgICAgIEVuc3VyZSB0aGF0IGl0IGludm9rZXMgZmlsZWlucHV0Ll9zdGF0ZS5pc3N0ZGluKCkgZXhhY3RseSBvbmNlLAorICAgICAgICAgICByZXR1cm5zIHdoYXRldmVyIGl0IHJldHVybnMsIGFuZCBkb2VzIG5vdCBtb2RpZnkgZmlsZWlucHV0Ll9zdGF0ZQorICAgICAgICAgICB0byBwb2ludCB0byBhIGRpZmZlcmVudCBvYmplY3QuIiIiCisgICAgICAgIGlzc3RkaW5fcmV0dmFsID0gb2JqZWN0KCkKKyAgICAgICAgaW5zdGFuY2UgPSBNb2NrRmlsZUlucHV0KCkKKyAgICAgICAgaW5zdGFuY2UucmV0dXJuX3ZhbHVlc1siaXNzdGRpbiJdID0gaXNzdGRpbl9yZXR2YWwKKyAgICAgICAgZmlsZWlucHV0Ll9zdGF0ZSA9IGluc3RhbmNlCisgICAgICAgIHJldHZhbCA9IGZpbGVpbnB1dC5pc3N0ZGluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdGx5T25lSW52b2NhdGlvbihpbnN0YW5jZSwgImlzc3RkaW4iKQorICAgICAgICBzZWxmLmFzc2VydElzKHJldHZhbCwgaXNzdGRpbl9yZXR2YWwpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZmlsZWlucHV0Ll9zdGF0ZSwgaW5zdGFuY2UpCisKK2NsYXNzIEludm9jYXRpb25SZWNvcmRlcjoKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuaW52b2NhdGlvbl9jb3VudCA9IDAKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2NvdW50ICs9IDEKKyAgICAgICAgc2VsZi5sYXN0X2ludm9jYXRpb24gPSAoYXJncywga3dhcmdzKQorCitjbGFzcyBUZXN0X2hvb2tfY29tcHJlc3NlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgZmlsZWlucHV0Lmhvb2tfY29tcHJlc3NlZCgpIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZmFrZV9vcGVuID0gSW52b2NhdGlvblJlY29yZGVyKCkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oIiIsIDEpCisKKyAgICBkZWYgdGVzdF9ub19leHQoc2VsZik6CisgICAgICAgIHNlbGYuZG9fdGVzdF91c2VfYnVpbHRpbl9vcGVuKCJhYmNkIiwgMikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGd6aXAsICJSZXF1aXJlcyBnemlwIGFuZCB6bGliIikKKyAgICBkZWYgdGVzdF9nel9leHRfZmFrZShzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGd6aXAub3BlbgorICAgICAgICBnemlwLm9wZW4gPSBzZWxmLmZha2Vfb3BlbgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKCJ0ZXN0Lmd6IiwgMykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGd6aXAub3BlbiA9IG9yaWdpbmFsX29wZW4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4ubGFzdF9pbnZvY2F0aW9uLCAoKCJ0ZXN0Lmd6IiwgMyksIHt9KSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGJ6MiwgIlJlcXVpcmVzIGJ6MiIpCisgICAgZGVmIHRlc3RfYnoyX2V4dF9mYWtlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9vcGVuID0gYnoyLkJaMkZpbGUKKyAgICAgICAgYnoyLkJaMkZpbGUgPSBzZWxmLmZha2Vfb3BlbgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKCJ0ZXN0LmJ6MiIsIDQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBiejIuQloyRmlsZSA9IG9yaWdpbmFsX29wZW4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmFrZV9vcGVuLmludm9jYXRpb25fY291bnQsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4ubGFzdF9pbnZvY2F0aW9uLCAoKCJ0ZXN0LmJ6MiIsIDQpLCB7fSkpCisKKyAgICBkZWYgdGVzdF9ibGFoX2V4dChzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QuYmxhaCIsIDUpCisKKyAgICBkZWYgdGVzdF9nel9leHRfYnVpbHRpbihzZWxmKToKKyAgICAgICAgc2VsZi5kb190ZXN0X3VzZV9idWlsdGluX29wZW4oImFiY2QuR3oiLCA2KQorCisgICAgZGVmIHRlc3RfYnoyX2V4dF9idWlsdGluKHNlbGYpOgorICAgICAgICBzZWxmLmRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbigiYWJjZC5CejIiLCA3KQorCisgICAgZGVmIGRvX3Rlc3RfdXNlX2J1aWx0aW5fb3BlbihzZWxmLCBmaWxlbmFtZSwgbW9kZSk6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBzZWxmLnJlcGxhY2VfYnVpbHRpbl9vcGVuKHNlbGYuZmFrZV9vcGVuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBmaWxlaW5wdXQuaG9va19jb21wcmVzc2VkKGZpbGVuYW1lLCBtb2RlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5yZXBsYWNlX2J1aWx0aW5fb3BlbihvcmlnaW5hbF9vcGVuKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mYWtlX29wZW4uaW52b2NhdGlvbl9jb3VudCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgKChmaWxlbmFtZSwgbW9kZSksIHt9KSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgcmVwbGFjZV9idWlsdGluX29wZW4obmV3X29wZW5fZnVuYyk6CisgICAgICAgIG9yaWdpbmFsX29wZW4gPSBidWlsdGlucy5vcGVuCisgICAgICAgIGJ1aWx0aW5zLm9wZW4gPSBuZXdfb3Blbl9mdW5jCisgICAgICAgIHJldHVybiBvcmlnaW5hbF9vcGVuCisKK2NsYXNzIFRlc3RfaG9va19lbmNvZGVkKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJVbml0IHRlc3RzIGZvciBmaWxlaW5wdXQuaG9va19lbmNvZGVkKCkiIiIKKworICAgIGRlZiB0ZXN0KHNlbGYpOgorICAgICAgICBlbmNvZGluZyA9IG9iamVjdCgpCisgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcpCisKKyAgICAgICAgZmFrZV9vcGVuID0gSW52b2NhdGlvblJlY29yZGVyKCkKKyAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KKyAgICAgICAgYnVpbHRpbnMub3BlbiA9IGZha2Vfb3BlbgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9iamVjdCgpCisgICAgICAgICAgICBtb2RlID0gb2JqZWN0KCkKKyAgICAgICAgICAgIG9wZW5fcmVzdWx0ID0gcmVzdWx0KGZpbGVuYW1lLCBtb2RlKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnVpbHRpbnMub3BlbiA9IG9yaWdpbmFsX29wZW4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZha2Vfb3Blbi5pbnZvY2F0aW9uX2NvdW50LCAxKQorCisgICAgICAgIGFyZ3MsIGt3YXJncyA9IGZha2Vfb3Blbi5sYXN0X2ludm9jYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzBdLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBtb2RlKQorICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2VuY29kaW5nJyksIGVuY29kaW5nKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGt3YXJncykKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHJ1bl91bml0dGVzdChCdWZmZXJTaXplc1Rlc3RzLCBGaWxlSW5wdXRUZXN0cykKKyAgICBydW5fdW5pdHRlc3QoCisgICAgICAgIEJ1ZmZlclNpemVzVGVzdHMsCisgICAgICAgIEZpbGVJbnB1dFRlc3RzLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9pbnB1dCwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfY2xvc2UsCisgICAgICAgIFRlc3RfZmlsZWlucHV0X25leHRmaWxlLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9maWxlbmFtZSwKKyAgICAgICAgVGVzdF9maWxlaW5wdXRfbGluZW5vLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9maWxlbGluZW5vLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9maWxlbm8sCisgICAgICAgIFRlc3RfZmlsZWlucHV0X2lzZmlyc3RsaW5lLAorICAgICAgICBUZXN0X2ZpbGVpbnB1dF9pc3N0ZGluLAorICAgICAgICBUZXN0X2hvb2tfY29tcHJlc3NlZCwKKyAgICAgICAgVGVzdF9ob29rX2VuY29kZWQsCisgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGVpby5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5CmluZGV4IGI1YmQ4ZDQuLjA4NDc5NjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZWlvLnB5CkBAIC0yLDYgKzIsNyBAQAogCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKK2ltcG9ydCBpbwogaW1wb3J0IGVycm5vCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gYXJyYXkgaW1wb3J0IGFycmF5CkBAIC0zNjksMTAgKzM3MCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAxMCkKICAgICAgICAgZi50cnVuY2F0ZSg1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnNlZWsoMCwgb3MuU0VFS19FTkQpLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuc2VlaygwLCBpby5TRUVLX0VORCksIDUpCiAgICAgICAgIGYudHJ1bmNhdGUoMTUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIDUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIG9zLlNFRUtfRU5EKSwgMTUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5zZWVrKDAsIGlvLlNFRUtfRU5EKSwgMTUpCiAgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RUcnVuY2F0ZU9uV2luZG93cyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CmluZGV4IDRkN2JiYmEuLjUwMjI5MmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQpAQCAtODgsNyArODgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgIiAgLTB4My5wLTEgICIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAiICArMHgzLnAtMSAgIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdCgiICAyNS5lLTEgICIpLCAyLjUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcG9ydC5mY21wKGZsb2F0KCIgIC4yNWUtMSAgIiksIC4wMjUpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KCIgIC4yNWUtMSAgIiksIC4wMjUpCiAKICAgICBkZWYgdGVzdF9mbG9hdGNvbnZlcnNpb24oc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgY2FsbHMgdG8gX19mbG9hdF9fKCkgd29yayBwcm9wZXJseQpAQCAtODYwLDE1ICs4NjAsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoMWUzMDAgKiAxZTMwMCAqIDApLCAibmFuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoLTFlMzAwICogMWUzMDAgKiAwKSwgIm5hbiIpCiAKLSAgICBkZWYgbm90ZXN0X2Zsb2F0X25hbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKE5BTi5pc19uYW4oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShJTkYuaXNfbmFuKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoKDAuKS5pc19uYW4oKSkKKyAgICBkZWYgdGVzdF9pbmZfc2lnbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weXNpZ24oMS4wLCBmbG9hdCgnaW5mJykpLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weXNpZ24oMS4wLCBmbG9hdCgnLWluZicpKSwgLTEuMCkKIAotICAgIGRlZiBub3Rlc3RfZmxvYXRfaW5mKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoSU5GLmlzX2luZigpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKE5BTi5pc19pbmYoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgoMC4pLmlzX2luZigpKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGdldGF0dHIoc3lzLCAnZmxvYXRfcmVwcl9zdHlsZScsICcnKSA9PSAnc2hvcnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhcHBsaWVzIG9ubHkgd2hlbiB1c2luZyBzaG9ydCBmbG9hdCByZXByIHN0eWxlIikKKyAgICBkZWYgdGVzdF9uYW5fc2lnbnMoc2VsZik6CisgICAgICAgICMgV2hlbiB1c2luZyB0aGUgZHRvYS5jIGNvZGUsIHRoZSBzaWduIG9mIGZsb2F0KCduYW4nKSBzaG91bGQKKyAgICAgICAgIyBiZSBwcmVkaWN0YWJsZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCduYW4nKSksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5c2lnbigxLjAsIGZsb2F0KCctbmFuJykpLCAtMS4wKQorCiAKIGZyb21IZXggPSBmbG9hdC5mcm9taGV4CiB0b0hleCA9IGZsb2F0LmhleApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQppbmRleCA3ZmE5NTBkLi5iNmUyNTQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQpAQCAtMSw0ICsxLDUgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBUZXN0RmFpbGVkCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVzdC5zdXBwb3J0IGFzIHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdApAQCAtMjYzLDYgKzI2NCw1MSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCciJSpkIiUobWF4c2l6ZSwgLTEyNykgc2hvdWxkIGZhaWwnKQogCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpKHNlbGYpOgorICAgICAgICB0ZXN0Zm9ybWF0KCJcdTIwYWM9JWYiLCAoMS4wLCksICJcdTIwYWM9MS4wMDAwMDAiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KCJhYmMiLCAiXHUyMDA3PDUiKSwgImFiY1x1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMywgIlx1MjAwNzw1IiksICIxMjNcdTIwMDdcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMi4zLCAiXHUyMDA3PDYiKSwgIjEyLjNcdTIwMDdcdTIwMDciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgwaiwgIlx1MjAwNzw0IiksICIwalx1MjAwN1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDErMmosICJcdTIwMDc8OCIpLCAiKDErMmopXHUyMDA3XHUyMDA3IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgiYWJjIiwgIlx1MjAwNz41IiksICJcdTIwMDdcdTIwMDdhYmMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjMsICJcdTIwMDc+NSIpLCAiXHUyMDA3XHUyMDA3MTIzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIuMywgIlx1MjAwNz42IiksICJcdTIwMDdcdTIwMDcxMi4zIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMSsyaiwgIlx1MjAwNz44IiksICJcdTIwMDdcdTIwMDcoMSsyaikiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgwaiwgIlx1MjAwNz40IiksICJcdTIwMDdcdTIwMDcwaiIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoImFiYyIsICJcdTIwMDdeNSIpLCAiXHUyMDA3YWJjXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzLCAiXHUyMDA3XjUiKSwgIlx1MjAwNzEyM1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyLjMsICJcdTIwMDdeNiIpLCAiXHUyMDA3MTIuM1x1MjAwNyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDErMmosICJcdTIwMDdeOCIpLCAiXHUyMDA3KDErMmopXHUyMDA3IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMGosICJcdTIwMDdeNCIpLCAiXHUyMDA3MGpcdTIwMDciKQorCisgICAgZGVmIHRlc3RfbG9jYWxlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvbGRsb2MgPSBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwpCisgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19BTEwsICcnKQorICAgICAgICBleGNlcHQgbG9jYWxlLkVycm9yIGFzIGVycjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNhbm5vdCBzZXQgbG9jYWxlOiB7fSIuZm9ybWF0KGVycikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvY2FsZWNvbnYgPSBsb2NhbGUubG9jYWxlY29udigpCisgICAgICAgICAgICBzZXAgPSBsb2NhbGVjb252Wyd0aG91c2FuZHNfc2VwJ10KKyAgICAgICAgICAgIHBvaW50ID0gbG9jYWxlY29udlsnZGVjaW1hbF9wb2ludCddCisKKyAgICAgICAgICAgIHRleHQgPSBmb3JtYXQoMTIzNDU2Nzg5LCAibiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlcCwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5yZXBsYWNlKHNlcCwgJycpLCAnMTIzNDU2Nzg5JykKKworICAgICAgICAgICAgdGV4dCA9IGZvcm1hdCgxMjM0LjUsICJuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VwLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwb2ludCwgdGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGV4dC5yZXBsYWNlKHNlcCwgJycpLCAnMTIzNCcgKyBwb2ludCArICc1JykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgb2xkbG9jKQorCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZvcm1hdFRlc3QpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnJhY3Rpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKaW5kZXggMDg0YWUwYy4uMWZhZDkyMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkKQEAgLTQwMSwxNCArNDAxLDEwIEBACiAKICAgICBkZWYgdGVzdE1peGluZ1dpdGhEZWNpbWFsKHNlbGYpOgogICAgICAgICAjIERlY2ltYWwgcmVmdXNlcyBtaXhlZCBhcml0aG1ldGljIChidXQgbm90IG1peGVkIGNvbXBhcmlzb25zKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBUeXBlRXJyb3IsCi0gICAgICAgICAgICAidW5zdXBwb3J0ZWQgb3BlcmFuZCB0eXBlKHMpIGZvciArOiAnRnJhY3Rpb24nIGFuZCAnRGVjaW1hbCciLAotICAgICAgICAgICAgb3BlcmF0b3IuYWRkLCBGKDMsMTEpLCBEZWNpbWFsKCczLjE0MTU5MjYnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgVHlwZUVycm9yLAotICAgICAgICAgICAgInVuc3VwcG9ydGVkIG9wZXJhbmQgdHlwZShzKSBmb3IgKzogJ0RlY2ltYWwnIGFuZCAnRnJhY3Rpb24nIiwKLSAgICAgICAgICAgIG9wZXJhdG9yLmFkZCwgRGVjaW1hbCgnMy4xNDE1OTI2JyksIEYoMywxMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWRkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBGKDMsMTEpLCBEZWNpbWFsKCczLjE0MTU5MjYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwoJzMuMTQxNTkyNicpLCBGKDMsMTEpKQogCiAgICAgZGVmIHRlc3RDb21wYXJpc29ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEYoMSwgMikgPCBGKDIsIDMpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcm96ZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weQppbmRleCA1MjQzZWJiLi5mZDY3NjFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zyb3plbi5weQpAQCAtNSw2ICs1LDEyIEBACiBpbXBvcnQgc3lzCiAKIGNsYXNzIEZyb3plblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIG1vZHVsZV9hdHRycyA9IGZyb3plbnNldChbJ19fYnVpbHRpbnNfXycsICdfX2NhY2hlZF9fJywgJ19fZG9jX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJ10pCisgICAgcGFja2FnZV9hdHRycyA9IGZyb3plbnNldChsaXN0KG1vZHVsZV9hdHRycykgKyBbJ19fcGF0aF9fJ10pCisKICAgICBkZWYgdGVzdF9mcm96ZW4oc2VsZik6CiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgdHJ5OgpAQCAtMTIsNyArMTgsOSBAQAogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIHg6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJpbXBvcnQgX19oZWxsb19fIGZhaWxlZDoiICsgc3RyKHgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfX2hlbGxvX18uaW5pdGlhbGl6ZWQsIFRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoX19oZWxsb19fKSksIDcsIGRpcihfX2hlbGxvX18pKQorICAgICAgICAgICAgZXhwZWN0ID0gc2V0KHNlbGYubW9kdWxlX2F0dHJzKQorICAgICAgICAgICAgZXhwZWN0LmFkZCgnaW5pdGlhbGl6ZWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9faGVsbG9fXykpLCBleHBlY3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQogCiAgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgpAQCAtMjEsMTAgKzI5LDEzIEBACiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgeDoKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImltcG9ydCBfX3BoZWxsb19fIGZhaWxlZDoiICsgc3RyKHgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfX3BoZWxsb19fLmluaXRpYWxpemVkLCBUcnVlKQorICAgICAgICAgICAgZXhwZWN0ID0gc2V0KHNlbGYucGFja2FnZV9hdHRycykKKyAgICAgICAgICAgIGV4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKICAgICAgICAgICAgIGlmIG5vdCAiX19waGVsbG9fXy5zcGFtIiBpbiBzeXMubW9kdWxlczoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoX19waGVsbG9fXykpLCA4LCBkaXIoX19waGVsbG9fXykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18pKSwgZXhwZWN0KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoX19waGVsbG9fXykpLCA5LCBkaXIoX19waGVsbG9fXykpCisgICAgICAgICAgICAgICAgZXhwZWN0LmFkZCgnc3BhbScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoZGlyKF9fcGhlbGxvX18pKSwgZXhwZWN0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfX3BoZWxsb19fLl9fcGF0aF9fLCBbX19waGVsbG9fXy5fX25hbWVfX10pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQogCkBAIC0zNCw4ICs0NSwxMyBAQAogICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIHg6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJpbXBvcnQgX19waGVsbG9fXy5zcGFtIGZhaWxlZDoiICsgc3RyKHgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfX3BoZWxsb19fLnNwYW0uaW5pdGlhbGl6ZWQsIFRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoX19waGVsbG9fXy5zcGFtKSksIDcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXIoX19waGVsbG9fXykpLCA5KQorICAgICAgICAgICAgc3BhbV9leHBlY3QgPSBzZXQoc2VsZi5tb2R1bGVfYXR0cnMpCisgICAgICAgICAgICBzcGFtX2V4cGVjdC5hZGQoJ2luaXRpYWxpemVkJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGRpcihfX3BoZWxsb19fLnNwYW0pKSwgc3BhbV9leHBlY3QpCisgICAgICAgICAgICBwaGVsbG9fZXhwZWN0ID0gc2V0KHNlbGYucGFja2FnZV9hdHRycykKKyAgICAgICAgICAgIHBoZWxsb19leHBlY3QuYWRkKCdpbml0aWFsaXplZCcpCisgICAgICAgICAgICBwaGVsbG9fZXhwZWN0LmFkZCgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChkaXIoX19waGVsbG9fXykpLCBwaGVsbG9fZXhwZWN0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwgJ0hlbGxvIHdvcmxkIVxuJykKIAogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IDcxYmMyM2UuLjI5OWExNDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC0yMiwxMCArMjIsMjUgQEAKIHRocmVhZGluZyA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKIAogIyB0aGUgZHVtbXkgZGF0YSByZXR1cm5lZCBieSBzZXJ2ZXIgb3ZlciB0aGUgZGF0YSBjaGFubmVsIHdoZW4KLSMgUkVUUiwgTElTVCBhbmQgTkxTVCBjb21tYW5kcyBhcmUgaXNzdWVkCisjIFJFVFIsIExJU1QsIE5MU1QsIE1MU0QgY29tbWFuZHMgYXJlIGlzc3VlZAogUkVUUl9EQVRBID0gJ2FiY2RlMTIzNDVcclxuJyAqIDEwMDAKIExJU1RfREFUQSA9ICdmb29cclxuYmFyXHJcbicKIE5MU1RfREFUQSA9ICdmb29cclxuYmFyXHJcbicKK01MU0RfREFUQSA9ICgidHlwZT1jZGlyO3Blcm09ZWw7dW5pcXVlPT1rZVZPMStaRjQ7IHRlc3RcclxuIgorICAgICAgICAgICAgICJ0eXBlPXBkaXI7cGVybT1lO3VuaXF1ZT09a2VWTzErZD8zOyAuLlxyXG4iCisgICAgICAgICAgICAgInR5cGU9T1MudW5peD1zbGluazovZm9vYmFyO3Blcm09O3VuaXF1ZT09a2VWTzErNEc0OyBmb29iYXJcclxuIgorICAgICAgICAgICAgICJ0eXBlPU9TLnVuaXg9Y2hyLTEzLzI5O3Blcm09O3VuaXF1ZT09a2VWTzErNUc0OyBkZXZpY2VcclxuIgorICAgICAgICAgICAgICJ0eXBlPU9TLnVuaXg9YmxrLTExLzEwODtwZXJtPTt1bmlxdWU9PWtlVk8xKzZHNDsgYmxvY2tcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1hd3I7dW5pcXVlPT1rZVZPMSs4RzQ7IHdyaXRhYmxlXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1kaXI7cGVybT1jcG1lbDt1bmlxdWU9PWtlVk8xKzdHNDsgcHJvbWlzY3VvdXNcclxuIgorICAgICAgICAgICAgICJ0eXBlPWRpcjtwZXJtPTt1bmlxdWU9PWtlVk8xKzF0Mjsgbm8tZXhlY1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMStFRzQ7IHR3byB3b3Jkc1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMStJSDQ7ICBsZWFkaW5nIHNwYWNlXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTFcclxuIgorICAgICAgICAgICAgICJ0eXBlPWRpcjtwZXJtPWNwbWVsO3VuaXF1ZT09a2VWTzErN0c0OyBpbmNvbWluZ1xyXG4iCisgICAgICAgICAgICAgInR5cGU9ZmlsZTtwZXJtPXI7dW5pcXVlPT1rZVZPMSsxRzQ7IGZpbGUyXHJcbiIKKyAgICAgICAgICAgICAidHlwZT1maWxlO3Blcm09cjt1bmlxdWU9PWtlVk8xKzFHNDsgZmlsZTNcclxuIgorICAgICAgICAgICAgICJ0eXBlPWZpbGU7cGVybT1yO3VuaXF1ZT09a2VWTzErMUc0OyBmaWxlNFxyXG4iKQogCiAKIGNsYXNzIER1bW15RFRQSGFuZGxlcihhc3luY2hhdC5hc3luY19jaGF0KToKQEAgLTQ5LDYgKzY0LDExIEBACiAgICAgICAgICAgICBzZWxmLmR0cF9jb25uX2Nsb3NlZCA9IFRydWUKIAogICAgIGRlZiBwdXNoKHNlbGYsIHdoYXQpOgorICAgICAgICBpZiBzZWxmLmJhc2VjbGFzcy5uZXh0X2RhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3aGF0ID0gc2VsZi5iYXNlY2xhc3MubmV4dF9kYXRhCisgICAgICAgICAgICBzZWxmLmJhc2VjbGFzcy5uZXh0X2RhdGEgPSBOb25lCisgICAgICAgIGlmIG5vdCB3aGF0OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKICAgICAgICAgc3VwZXIoRHVtbXlEVFBIYW5kbGVyLCBzZWxmKS5wdXNoKHdoYXQuZW5jb2RlKCdhc2NpaScpKQogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKQEAgLTY5LDYgKzg5LDcgQEAKICAgICAgICAgc2VsZi5sYXN0X3JlY2VpdmVkX2NtZCA9IE5vbmUKICAgICAgICAgc2VsZi5sYXN0X3JlY2VpdmVkX2RhdGEgPSAnJwogICAgICAgICBzZWxmLm5leHRfcmVzcG9uc2UgPSAnJworICAgICAgICBzZWxmLm5leHRfZGF0YSA9IE5vbmUKICAgICAgICAgc2VsZi5yZXN0ID0gTm9uZQogICAgICAgICBzZWxmLnB1c2goJzIyMCB3ZWxjb21lJykKIApAQCAtMTA0LDcgKzEyNSw3IEBACiAgICAgICAgIGFkZHIgPSBsaXN0KG1hcChpbnQsIGFyZy5zcGxpdCgnLCcpKSkKICAgICAgICAgaXAgPSAnJWQuJWQuJWQuJWQnICV0dXBsZShhZGRyWzo0XSkKICAgICAgICAgcG9ydCA9IChhZGRyWzRdICogMjU2KSArIGFkZHJbNV0KLSAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaXAsIHBvcnQpLCB0aW1lb3V0PTEwKQorICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5kdHAgPSBzZWxmLmR0cF9oYW5kbGVyKHMsIGJhc2VjbGFzcz1zZWxmKQogICAgICAgICBzZWxmLnB1c2goJzIwMCBhY3RpdmUgZGF0YSBjb25uZWN0aW9uIGVzdGFibGlzaGVkJykKIApAQCAtMTIyLDcgKzE0Myw3IEBACiAgICAgZGVmIGNtZF9lcHJ0KHNlbGYsIGFyZyk6CiAgICAgICAgIGFmLCBpcCwgcG9ydCA9IGFyZy5zcGxpdChhcmdbMF0pWzE6LTFdCiAgICAgICAgIHBvcnQgPSBpbnQocG9ydCkKLSAgICAgICAgcyA9IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigoaXAsIHBvcnQpLCB0aW1lb3V0PTEwKQorICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChpcCwgcG9ydCksIHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5kdHAgPSBzZWxmLmR0cF9oYW5kbGVyKHMsIGJhc2VjbGFzcz1zZWxmKQogICAgICAgICBzZWxmLnB1c2goJzIwMCBhY3RpdmUgZGF0YSBjb25uZWN0aW9uIGVzdGFibGlzaGVkJykKIApAQCAtMjEzLDYgKzIzNCwxNCBAQAogICAgICAgICBzZWxmLmR0cC5wdXNoKE5MU1RfREFUQSkKICAgICAgICAgc2VsZi5kdHAuY2xvc2Vfd2hlbl9kb25lKCkKIAorICAgIGRlZiBjbWRfb3B0cyhzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJzIwMCBvcHRzIG9rJykKKworICAgIGRlZiBjbWRfbWxzZChzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJzEyNSBtbHNkIG9rJykKKyAgICAgICAgc2VsZi5kdHAucHVzaChNTFNEX0RBVEEpCisgICAgICAgIHNlbGYuZHRwLmNsb3NlX3doZW5fZG9uZSgpCisKIAogY2xhc3MgRHVtbXlGVFBTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CiAKQEAgLTI3NCwxMSArMzAzLDExIEBACiAgICAgICAgIF9zc2xfY2xvc2luZyA9IEZhbHNlCiAKICAgICAgICAgZGVmIHNlY3VyZV9jb25uZWN0aW9uKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5kZWxfY2hhbm5lbCgpCiAgICAgICAgICAgICBzb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLCBzZXJ2ZXJfc2lkZT1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgIHNlbGYuc2V0X3NvY2tldChzb2NrZXQpCiAgICAgICAgICAgICBzZWxmLl9zc2xfYWNjZXB0aW5nID0gVHJ1ZQogCkBAIC0zMTMsNyArMzQyLDEwIEBACiAgICAgICAgICAgICAgICAgIyBodHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vb3BlbnNzbC11c2Vyc0BvcGVuc3NsLm9yZy9tc2c2MDcxMC5odG1sCiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5fc3NsX2Nsb3NpbmcgPSBGYWxzZQotICAgICAgICAgICAgc3VwZXIoU1NMQ29ubmVjdGlvbiwgc2VsZikuY2xvc2UoKQorICAgICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnX2NjYycsIEZhbHNlKSBpcyBGYWxzZToKKyAgICAgICAgICAgICAgICBzdXBlcihTU0xDb25uZWN0aW9uLCBzZWxmKS5jbG9zZSgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBhc3MKIAogICAgICAgICBkZWYgaGFuZGxlX3JlYWRfZXZlbnQoc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zc2xfYWNjZXB0aW5nOgpAQCAtMzgxLDEyICs0MTMsMTggQEAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm4pOgogICAgICAgICAgICAgRHVtbXlGVFBIYW5kbGVyLl9faW5pdF9fKHNlbGYsIGNvbm4pCiAgICAgICAgICAgICBzZWxmLnNlY3VyZV9kYXRhX2NoYW5uZWwgPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fY2NjID0gRmFsc2UKIAogICAgICAgICBkZWYgY21kX2F1dGgoc2VsZiwgbGluZSk6CiAgICAgICAgICAgICAiIiJTZXQgdXAgc2VjdXJlIGNvbnRyb2wgY2hhbm5lbC4iIiIKICAgICAgICAgICAgIHNlbGYucHVzaCgnMjM0IEFVVEggVExTIHN1Y2Nlc3NmdWwnKQogICAgICAgICAgICAgc2VsZi5zZWN1cmVfY29ubmVjdGlvbigpCiAKKyAgICAgICAgZGVmIGNtZF9jY2Moc2VsZiwgbGluZSk6CisgICAgICAgICAgICBzZWxmLnB1c2goJzIyMCBSZXZlcnRpbmcgYmFjayB0byBjbGVhci10ZXh0JykKKyAgICAgICAgICAgIHNlbGYuX2NjYyA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX2RvX3NzbF9zaHV0ZG93bigpCisKICAgICAgICAgZGVmIGNtZF9wYnN6KHNlbGYsIGxpbmUpOgogICAgICAgICAgICAgIiIiTmVnb3RpYXRlIHNpemUgb2YgYnVmZmVyIGZvciBzZWN1cmUgZGF0YSB0cmFuc2Zlci4KICAgICAgICAgICAgIEZvciBUTFMvU1NMIHRoZSBvbmx5IHZhbGlkIHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyIGlzICcwJy4KQEAgLTQxNiwxMyArNDU0LDE3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15RlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFAodGltZW91dD0xMCkKKyAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQKHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQogCisgICAgZGVmIGNoZWNrX2RhdGEoc2VsZiwgcmVjZWl2ZWQsIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjZWl2ZWQpLCBsZW4oZXhwZWN0ZWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X2dldHdlbGNvbWUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGllbnQuZ2V0d2VsY29tZSgpLCAnMjIwIHdlbGNvbWUnKQogCkBAIC01MDQsNyArNTQ2LDcgQEAKICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChkYXRhLmRlY29kZSgnYXNjaWknKSkKICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICBzZWxmLmNsaWVudC5yZXRyYmluYXJ5KCdyZXRyJywgY2FsbGJhY2spCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihyZWNlaXZlZCksIFJFVFJfREFUQSkKKyAgICAgICAgc2VsZi5jaGVja19kYXRhKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEpCiAKICAgICBkZWYgdGVzdF9yZXRyYmluYXJ5X3Jlc3Qoc2VsZik6CiAgICAgICAgIGRlZiBjYWxsYmFjayhkYXRhKToKQEAgLTUxMiwyMCArNTU0LDE3IEBACiAgICAgICAgIGZvciByZXN0IGluICgwLCAxMCwgMjApOgogICAgICAgICAgICAgcmVjZWl2ZWQgPSBbXQogICAgICAgICAgICAgc2VsZi5jbGllbnQucmV0cmJpbmFyeSgncmV0cicsIGNhbGxiYWNrLCByZXN0PXJlc3QpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEFbcmVzdDpdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J3Jlc3QgdGVzdCBjYXNlICVkICVkICVkJyAlIChyZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oJycuam9pbihyZWNlaXZlZCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oUkVUUl9EQVRBW3Jlc3Q6XSkpKQorICAgICAgICAgICAgc2VsZi5jaGVja19kYXRhKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEFbcmVzdDpdKQogCiAgICAgZGVmIHRlc3RfcmV0cmxpbmVzKHNlbGYpOgogICAgICAgICByZWNlaXZlZCA9IFtdCiAgICAgICAgIHNlbGYuY2xpZW50LnJldHJsaW5lcygncmV0cicsIHJlY2VpdmVkLmFwcGVuZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnJykpCisgICAgICAgIHNlbGYuY2hlY2tfZGF0YSgnJy5qb2luKHJlY2VpdmVkKSwgUkVUUl9EQVRBLnJlcGxhY2UoJ1xyXG4nLCAnJykpCiAKICAgICBkZWYgdGVzdF9zdG9yYmluYXJ5KHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTyhSRVRSX0RBVEEuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzZWxmLmNsaWVudC5zdG9yYmluYXJ5KCdzdG9yJywgZikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5sYXN0X3JlY2VpdmVkX2RhdGEsIFJFVFJfREFUQSkKICAgICAgICAgIyB0ZXN0IG5ldyBjYWxsYmFjayBhcmcKICAgICAgICAgZmxhZyA9IFtdCiAgICAgICAgIGYuc2VlaygwKQpAQCAtNTQyLDcgKzU4MSw3IEBACiAgICAgZGVmIHRlc3Rfc3RvcmxpbmVzKHNlbGYpOgogICAgICAgICBmID0gaW8uQnl0ZXNJTyhSRVRSX0RBVEEucmVwbGFjZSgnXHJcbicsICdcbicpLmVuY29kZSgnYXNjaWknKSkKICAgICAgICAgc2VsZi5jbGllbnQuc3RvcmxpbmVzKCdzdG9yJywgZikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfZGF0YSwgUkVUUl9EQVRBKQorICAgICAgICBzZWxmLmNoZWNrX2RhdGEoc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5sYXN0X3JlY2VpdmVkX2RhdGEsIFJFVFJfREFUQSkKICAgICAgICAgIyB0ZXN0IG5ldyBjYWxsYmFjayBhcmcKICAgICAgICAgZmxhZyA9IFtdCiAgICAgICAgIGYuc2VlaygwKQpAQCAtNTU4LDYgKzU5Nyw2NCBAQAogICAgICAgICBzZWxmLmNsaWVudC5kaXIobGFtYmRhIHg6IGwuYXBwZW5kKHgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4obCksIExJU1RfREFUQS5yZXBsYWNlKCdcclxuJywgJycpKQogCisgICAgZGVmIHRlc3RfbWxzZChzZWxmKToKKyAgICAgICAgbGlzdChzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIGxpc3Qoc2VsZi5jbGllbnQubWxzZChwYXRoPScvJykpCisgICAgICAgIGxpc3Qoc2VsZi5jbGllbnQubWxzZChwYXRoPScvJywgZmFjdHM9WydzaXplJywgJ3R5cGUnXSkpCisKKyAgICAgICAgbHMgPSBsaXN0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgZm9yIG5hbWUsIGZhY3RzIGluIGxzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG5hbWUsIHN0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmYWN0cywgZGljdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndHlwZScsIGZhY3RzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGVybScsIGZhY3RzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndW5pcXVlJywgZmFjdHMpCisKKyAgICAgICAgZGVmIHNldF9kYXRhKGRhdGEpOgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuaGFuZGxlcl9pbnN0YW5jZS5uZXh0X2RhdGEgPSBkYXRhCisKKyAgICAgICAgZGVmIHRlc3RfZW50cnkobGluZSwgdHlwZT1Ob25lLCBwZXJtPU5vbmUsIHVuaXF1ZT1Ob25lLCBuYW1lPU5vbmUpOgorICAgICAgICAgICAgdHlwZSA9ICd0eXBlJyBpZiB0eXBlIGlzIE5vbmUgZWxzZSB0eXBlCisgICAgICAgICAgICBwZXJtID0gJ3Blcm0nIGlmIHBlcm0gaXMgTm9uZSBlbHNlIHBlcm0KKyAgICAgICAgICAgIHVuaXF1ZSA9ICd1bmlxdWUnIGlmIHVuaXF1ZSBpcyBOb25lIGVsc2UgdW5pcXVlCisgICAgICAgICAgICBuYW1lID0gJ25hbWUnIGlmIG5hbWUgaXMgTm9uZSBlbHNlIG5hbWUKKyAgICAgICAgICAgIHNldF9kYXRhKGxpbmUpCisgICAgICAgICAgICBfbmFtZSwgZmFjdHMgPSBuZXh0KHNlbGYuY2xpZW50Lm1sc2QoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX25hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhY3RzWyd0eXBlJ10sIHR5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhY3RzWydwZXJtJ10sIHBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhY3RzWyd1bmlxdWUnXSwgdW5pcXVlKQorCisgICAgICAgICMgcGxhaW4KKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYW1lXHJcbicpCisgICAgICAgICMgIj0iIGluIGZhY3QgdmFsdWUKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eT1wZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSJ0eT1wZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9PXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJywgdHlwZT0iPXR5cGUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXQ9eT1wZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZVxyXG4nLCB0eXBlPSJ0PXk9cGUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPT09PT07cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IG5hbWVcclxuJywgdHlwZT0iPT09PSIpCisgICAgICAgICMgc3BhY2VzIGluIG5hbWUKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuYSBtZVxyXG4nLCBuYW1lPSJuYSBtZSIpCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmFtZSBcclxuJywgbmFtZT0ibmFtZSAiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7ICBuYW1lXHJcbicsIG5hbWU9IiBuYW1lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyBuIGFtICBlXHJcbicsIG5hbWU9Im4gYW0gIGUiKQorICAgICAgICAjICI7IiBpbiBuYW1lCisgICAgICAgIHRlc3RfZW50cnkoJ3R5cGU9dHlwZTtwZXJtPXBlcm07dW5pcXVlPXVuaXF1ZTsgbmE7bWVcclxuJywgbmFtZT0ibmE7bWUiKQorICAgICAgICB0ZXN0X2VudHJ5KCd0eXBlPXR5cGU7cGVybT1wZXJtO3VuaXF1ZT11bmlxdWU7IDtuYW1lXHJcbicsIG5hbWU9IjtuYW1lIikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyA7bmFtZTtcclxuJywgbmFtZT0iO25hbWU7IikKKyAgICAgICAgdGVzdF9lbnRyeSgndHlwZT10eXBlO3Blcm09cGVybTt1bmlxdWU9dW5pcXVlOyA7Ozs7XHJcbicsIG5hbWU9Ijs7OzsiKQorICAgICAgICAjIGNhc2Ugc2Vuc2l0aXZlbmVzcworICAgICAgICBzZXRfZGF0YSgnVHlwZT10eXBlO1R5UGU9cGVybTtVTklRVUU9dW5pcXVlOyBuYW1lXHJcbicpCisgICAgICAgIF9uYW1lLCBmYWN0cyA9IG5leHQoc2VsZi5jbGllbnQubWxzZCgpKQorICAgICAgICBmb3IgeCBpbiBmYWN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmlzbG93ZXIoKSkKKyAgICAgICAgIyBubyBkYXRhIChkaXJlY3RvcnkgZW1wdHkpCisgICAgICAgIHNldF9kYXRhKCcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBzZWxmLmNsaWVudC5tbHNkKCkpCisgICAgICAgIHNldF9kYXRhKCcnKQorICAgICAgICBmb3IgeCBpbiBzZWxmLmNsaWVudC5tbHNkKCk6CisgICAgICAgICAgICBzZWxmLmZhaWwoInVuZXhwZWN0ZWQgZGF0YSAlcyIgJSBkYXRhKQorCiAgICAgZGVmIHRlc3RfbWFrZXBvcnQoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5jbGllbnQubWFrZXBvcnQoKToKICAgICAgICAgICAgICMgSVB2NCBpcyBpbiB1c2UsIGp1c3QgbWFrZSBzdXJlIHNlbmRfZXBydCBoYXMgbm90IGJlZW4gdXNlZApAQCAtNTg0LDcgKzY4MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICMgYmFzZSB0ZXN0Ci0gICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PTEwKSBhcyBzZWxmLmNsaWVudDoKKyAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MikgYXMgc2VsZi5jbGllbnQ6CiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5zZW5kY21kKCdub29wJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19jbGllbnRfY29ubmVjdGVkKCkpCkBAIC01OTIsNyArNjg5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jbGllbnRfY29ubmVjdGVkKCkpCiAKICAgICAgICAgIyBRVUlUIHNlbnQgaW5zaWRlIHRoZSB3aXRoIGJsb2NrCi0gICAgICAgIHdpdGggZnRwbGliLkZUUCh0aW1lb3V0PTEwKSBhcyBzZWxmLmNsaWVudDoKKyAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MikgYXMgc2VsZi5jbGllbnQ6CiAgICAgICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAgICAgICAgICAgICBzZWxmLmNsaWVudC5zZW5kY21kKCdub29wJykKICAgICAgICAgICAgIHNlbGYuY2xpZW50LnF1aXQoKQpAQCAtNjAyLDcgKzY5OSw3IEBACiAgICAgICAgICMgZm9yY2UgYSB3cm9uZyByZXNwb25zZSBjb2RlIHRvIGJlIHNlbnQgb24gUVVJVDogZXJyb3JfcGVybQogICAgICAgICAjIGlzIGV4cGVjdGVkIGFuZCB0aGUgY29ubmVjdGlvbiBpcyBzdXBwb3NlZCB0byBiZSBjbG9zZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MTApIGFzIHNlbGYuY2xpZW50OgorICAgICAgICAgICAgd2l0aCBmdHBsaWIuRlRQKHRpbWVvdXQ9MikgYXMgc2VsZi5jbGllbnQ6CiAgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICAgICAgICAgIHNlbGYuY2xpZW50LnNlbmRjbWQoJ25vb3AnKQogICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UubmV4dF9yZXNwb25zZSA9ICc1NTAgZXJyb3Igb24gcXVpdCcKQEAgLTYxNiw2ICs3MTMsMzAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmxhc3RfcmVjZWl2ZWRfY21kLCAncXVpdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY2xpZW50X2Nvbm5lY3RlZCgpKQogCisgICAgZGVmIHRlc3Rfc291cmNlX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuY2xpZW50LnF1aXQoKQorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz0oSE9TVCwgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnNvY2suZ2V0c29ja25hbWUoKVsxXSwgcG9ydCkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50LnF1aXQoKQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUREUklOVVNFOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvdWxkbid0IGJpbmQgdG8gcG9ydCAlZCIgJSBwb3J0KQorICAgICAgICAgICAgcmFpc2UKKworICAgIGRlZiB0ZXN0X3NvdXJjZV9hZGRyZXNzX3Bhc3NpdmVfY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCisgICAgICAgIHNlbGYuY2xpZW50LnNvdXJjZV9hZGRyZXNzID0gKEhPU1QsIHBvcnQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5jbGllbnQudHJhbnNmZXJjbWQoJ2xpc3QnKSBhcyBzb2NrOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5nZXRzb2NrbmFtZSgpWzFdLCBwb3J0KQorICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FQUREUklOVVNFOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNvdWxkbid0IGJpbmQgdG8gcG9ydCAlZCIgJSBwb3J0KQorICAgICAgICAgICAgcmFpc2UKKwogICAgIGRlZiB0ZXN0X3BhcnNlMjU3KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cGxpYi5wYXJzZTI1NygnMjU3ICIvZm9vL2JhciInKSwgJy9mb28vYmFyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdHBsaWIucGFyc2UyNTcoJzI1NyAiL2Zvby9iYXIiIGNyZWF0ZWQnKSwgJy9mb28vYmFyJykKQEAgLTYzMiw3ICs3NTMsNyBAQAogY2xhc3MgVGVzdElQdjZFbnZpcm9ubWVudChUZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKEhPU1QsIDApLCBhZj1zb2NrZXQuQUZfSU5FVDYpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlGVFBTZXJ2ZXIoKCc6OjEnLCAwKSwgYWY9c29ja2V0LkFGX0lORVQ2KQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCiAgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUCgpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKQEAgLTY2MSw2ICs3ODIsNyBAQAogICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChkYXRhLmRlY29kZSgnYXNjaWknKSkKICAgICAgICAgICAgIHJlY2VpdmVkID0gW10KICAgICAgICAgICAgIHNlbGYuY2xpZW50LnJldHJiaW5hcnkoJ3JldHInLCBjYWxsYmFjaykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKCcnLmpvaW4ocmVjZWl2ZWQpKSwgbGVuKFJFVFJfREFUQSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4ocmVjZWl2ZWQpLCBSRVRSX0RBVEEpCiAgICAgICAgIHNlbGYuY2xpZW50LnNldF9wYXN2KFRydWUpCiAgICAgICAgIHJldHIoKQpAQCAtNjc2LDcgKzc5OCw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15VExTX0ZUUFNlcnZlcigoSE9TVCwgMCkpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBmdHBsaWIuRlRQX1RMUyh0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MikKICAgICAgICAgc2VsZi5jbGllbnQuY29ubmVjdChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICAjIGVuYWJsZSBUTFMKICAgICAgICAgc2VsZi5jbGllbnQuYXV0aCgpCkBAIC02ODksNyArODExLDcgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlUTFNfRlRQU2VydmVyKChIT1NULCAwKSkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKHRpbWVvdXQ9MTApCisgICAgICAgIHNlbGYuY2xpZW50ID0gZnRwbGliLkZUUF9UTFModGltZW91dD0yKQogICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CkBAIC03NDksNyArODcxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnRwbGliLkZUUF9UTFMsIGNlcnRmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPUNFUlRGSUxFLCBjb250ZXh0PWN0eCkKIAotICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKGNvbnRleHQ9Y3R4LCB0aW1lb3V0PTEwKQorICAgICAgICBzZWxmLmNsaWVudCA9IGZ0cGxpYi5GVFBfVExTKGNvbnRleHQ9Y3R4LCB0aW1lb3V0PTIpCiAgICAgICAgIHNlbGYuY2xpZW50LmNvbm5lY3Qoc2VsZi5zZXJ2ZXIuaG9zdCwgc2VsZi5zZXJ2ZXIucG9ydCkKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNlbGYuY2xpZW50LnNvY2ssIHNzbC5TU0xTb2NrZXQpCiAgICAgICAgIHNlbGYuY2xpZW50LmF1dGgoKQpAQCAtNzYxLDYgKzg4MywxMyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrLmNvbnRleHQsIGN0eCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzb2NrLCBzc2wuU1NMU29ja2V0KQogCisgICAgZGVmIHRlc3RfY2NjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5jY2MpCisgICAgICAgIHNlbGYuY2xpZW50LmxvZ2luKHNlY3VyZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2VsZi5jbGllbnQuc29jaywgc3NsLlNTTFNvY2tldCkKKyAgICAgICAgc2VsZi5jbGllbnQuY2NjKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5jbGllbnQuc29jay51bndyYXApCisKIAogY2xhc3MgVGVzdFRpbWVvdXRzKFRlc3RDYXNlKToKIApAQCAtODU3LDEzICs5ODYsOCBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdHMgPSBbVGVzdEZUUENsYXNzLCBUZXN0VGltZW91dHNdCi0gICAgaWYgc29ja2V0Lmhhc19pcHY2OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBEdW1teUZUUFNlcnZlcigoSE9TVCwgMCksIGFmPXNvY2tldC5BRl9JTkVUNikKLSAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0SVB2NkVudmlyb25tZW50KQorICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgorICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdElQdjZFbnZpcm9ubWVudCkKIAogICAgIGlmIHNzbCBpcyBub3QgTm9uZToKICAgICAgICAgdGVzdHMuZXh0ZW5kKFtUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3NdKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdW5jYXR0cnMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weQppbmRleCA0ZDE5MzY4Li5jOGVkODMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmNhdHRycy5weQpAQCAtMiw2ICsyLDE1IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCisKK2RlZiBnbG9iYWxfZnVuY3Rpb24oKToKKyAgICBkZWYgaW5uZXJfZnVuY3Rpb24oKToKKyAgICAgICAgY2xhc3MgTG9jYWxDbGFzczoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIExvY2FsQ2xhc3MKKyAgICByZXR1cm4gbGFtYmRhOiBpbm5lcl9mdW5jdGlvbgorCisKIGNsYXNzIEZ1bmNBdHRyc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgY2xhc3MgRjoKQEAgLTk2LDYgKzEwNSwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZmkuYS5fX25hbWVfXywgJ2EnKQogICAgICAgICBzZWxmLmNhbm5vdF9zZXRfYXR0cihzZWxmLmZpLmEsICJfX25hbWVfXyIsICdhJywgQXR0cmlidXRlRXJyb3IpCiAKKyAgICBkZWYgdGVzdF9fX3F1YWxuYW1lX18oc2VsZik6CisgICAgICAgICMgUEVQIDMxNTUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmIuX19xdWFsbmFtZV9fLCAnRnVuY0F0dHJzVGVzdC5zZXRVcC48bG9jYWxzPi5iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGdW5jQXR0cnNUZXN0LnNldFVwLl9fcXVhbG5hbWVfXywgJ0Z1bmNBdHRyc1Rlc3Quc2V0VXAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbi5fX3F1YWxuYW1lX18sICdnbG9iYWxfZnVuY3Rpb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2JhbF9mdW5jdGlvbigpLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsX2Z1bmN0aW9uLjxsb2NhbHM+LjxsYW1iZGE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfZnVuY3Rpb24oKSgpLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xvYmFsX2Z1bmN0aW9uLjxsb2NhbHM+LmlubmVyX2Z1bmN0aW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnbG9iYWxfZnVuY3Rpb24oKSgpKCkuX19xdWFsbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWxfZnVuY3Rpb24uPGxvY2Fscz4uaW5uZXJfZnVuY3Rpb24uPGxvY2Fscz4uTG9jYWxDbGFzcycpCisgICAgICAgIHNlbGYuYi5fX3F1YWxuYW1lX18gPSAnYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmIuX19xdWFsbmFtZV9fLCAnYycpCisgICAgICAgIHNlbGYuYi5fX3F1YWxuYW1lX18gPSAnZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmIuX19xdWFsbmFtZV9fLCAnZCcpCisgICAgICAgICMgX19xdWFsbmFtZV9fIG11c3QgYmUgYSBzdHJpbmcKKyAgICAgICAgc2VsZi5jYW5ub3Rfc2V0X2F0dHIoc2VsZi5iLCAnX19xdWFsbmFtZV9fJywgNywgVHlwZUVycm9yKQorCiAgICAgZGVmIHRlc3RfX19jb2RlX18oc2VsZik6CiAgICAgICAgIG51bV9vbmUsIG51bV90d28gPSA3LCA4CiAgICAgICAgIGRlZiBhKCk6IHBhc3MKQEAgLTMxNSwxMSArMzQyLDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLl9fZnVuY19fIGlzIGYpCiAKIAorY2xhc3MgQnVpbHRpbkZ1bmN0aW9uUHJvcGVydGllc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgWFhYIE5vdCBzdXJlIHdoZXJlIHRoaXMgc2hvdWxkIHJlYWxseSBnbyBzaW5jZSBJIGNhbid0IGZpbmQgYQorICAgICMgdGVzdCBtb2R1bGUgc3BlY2lmaWNhbGx5IGZvciBidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZC4KKworICAgIGRlZiB0ZXN0X2J1aWx0aW5fX3F1YWxuYW1lX18oc2VsZik6CisgICAgICAgIGltcG9ydCB0aW1lCisKKyAgICAgICAgIyBidWlsdGluIGZ1bmN0aW9uOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbi5fX3F1YWxuYW1lX18sICdsZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUudGltZS5fX3F1YWxuYW1lX18sICd0aW1lJykKKworICAgICAgICAjIGJ1aWx0aW4gY2xhc3NtZXRob2Q6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGljdC5mcm9ta2V5cy5fX3F1YWxuYW1lX18sICdkaWN0LmZyb21rZXlzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdC5fX2dldGZvcm1hdF9fLl9fcXVhbG5hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmxvYXQuX19nZXRmb3JtYXRfXycpCisKKyAgICAgICAgIyBidWlsdGluIHN0YXRpY21ldGhvZDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIubWFrZXRyYW5zLl9fcXVhbG5hbWVfXywgJ3N0ci5tYWtldHJhbnMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzLm1ha2V0cmFucy5fX3F1YWxuYW1lX18sICdieXRlcy5tYWtldHJhbnMnKQorCisgICAgICAgICMgYnVpbHRpbiBib3VuZCBpbnN0YW5jZSBtZXRob2Q6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzEsIDIsIDNdLmFwcGVuZC5fX3F1YWxuYW1lX18sICdsaXN0LmFwcGVuZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydmb28nOiAnYmFyJ30ucG9wLl9fcXVhbG5hbWVfXywgJ2RpY3QucG9wJykKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoRnVuY3Rpb25Qcm9wZXJ0aWVzVGVzdCwgSW5zdGFuY2VtZXRob2RBdHRyVGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyYml0cmFyeUZ1bmN0aW9uQXR0clRlc3QsIEZ1bmN0aW9uRGljdHNUZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25Eb2NzdHJpbmdUZXN0LCBDZWxsVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01ldGhvZEF0dHJzVGVzdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01ldGhvZEF0dHJzVGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWx0aW5GdW5jdGlvblByb3BlcnRpZXNUZXN0KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CmluZGV4IDI3MGNhYjAuLmM0OTEwYTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5CkBAIC0yMjYsNiArMjI2LDcgQEAKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3JhcHBlci5fX3dyYXBwZWRfXywgZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYWxzbyBhIHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19hbm5vdGF0aW9uc19fWydhJ10sICdUaGlzIGlzIGEgbmV3IGFubm90YXRpb24nKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdiJywgd3JhcHBlci5fX2Fubm90YXRpb25zX18pCkBAIC0yNDYsNiArMjQ3LDcgQEAKICAgICAgICAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fYW5ub3RhdGlvbnNfXywge30pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cih3cmFwcGVyLCAnYXR0cicpKQpAQCAtMjYzLDYgKzI2NSw3IEBACiAgICAgICAgIGZ1bmN0b29scy51cGRhdGVfd3JhcHBlcih3cmFwcGVyLCBmLCBhc3NpZ24sIHVwZGF0ZSkKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsIGFzc2lnbiwgdXBkYXRlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19uYW1lX18sICd3cmFwcGVyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh3cmFwcGVyLl9fcXVhbG5hbWVfXywgZi5fX3F1YWxuYW1lX18pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX2RvY19fLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYSBkaWZmZXJlbnQgdGVzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5kaWN0X2F0dHIsIGYuZGljdF9hdHRyKQpAQCAtMzA5LDE3ICszMTIsMTggQEAKICAgICAgICAgZGVmIHdyYXBwZXIoKToKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYpCi0gICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgICAgIHJldHVybiB3cmFwcGVyLCBmCiAKICAgICBkZWYgdGVzdF9kZWZhdWx0X3VwZGF0ZShzZWxmKToKLSAgICAgICAgd3JhcHBlciA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKKyAgICAgICAgd3JhcHBlciwgZiA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuYXR0ciwgJ1RoaXMgaXMgYWxzbyBhIHRlc3QnKQogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihub3Qgc3lzLmZsYWdzLm9wdGltaXplIDw9IDEsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUiKQogICAgIGRlZiB0ZXN0X2RlZmF1bHRfdXBkYXRlX2RvYyhzZWxmKToKLSAgICAgICAgd3JhcHBlciA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKKyAgICAgICAgd3JhcHBlciwgXyA9IHNlbGYuX2RlZmF1bHRfdXBkYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sICdUaGlzIGlzIGEgdGVzdCcpCiAKICAgICBkZWYgdGVzdF9ub191cGRhdGUoc2VsZik6CkBAIC0zMzIsNiArMzM2LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5jaGVja193cmFwcGVyKHdyYXBwZXIsIGYsICgpLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fbmFtZV9fLCAnd3JhcHBlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwod3JhcHBlci5fX3F1YWxuYW1lX18sIGYuX19xdWFsbmFtZV9fKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuX19kb2NfXywgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHdyYXBwZXIsICdhdHRyJykpCiAKQEAgLTM1MSw2ICszNTYsNyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmNoZWNrX3dyYXBwZXIod3JhcHBlciwgZiwgYXNzaWduLCB1cGRhdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5fX25hbWVfXywgJ3dyYXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHdyYXBwZXIuX19xdWFsbmFtZV9fLCBmLl9fcXVhbG5hbWVfXykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLl9fZG9jX18sIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlci5hdHRyLCAnVGhpcyBpcyBhIGRpZmZlcmVudCB0ZXN0JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmRpY3RfYXR0ciwgZi5kaWN0X2F0dHIpCkBAIC00MzYsMTkgKzQ0Miw4MiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhhZGQsIGQpLCAiIi5qb2luKGQua2V5cygpKSkKIAogY2xhc3MgVGVzdENtcFRvS2V5KHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X2NtcF90b19rZXkoc2VsZik6CisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDMpLCBrZXkoMykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihrZXkoMyksIGtleSgxKSkKKyAgICAgICAgZGVmIGNtcDIoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gaW50KHgpIC0gaW50KHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KGNtcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDQuMCksIGtleSgnNCcpKQorICAgICAgICBzZWxmLmFzc2VydExlc3Moa2V5KDIpLCBrZXkoJzM1JykpCisKKyAgICBkZWYgdGVzdF9jbXBfdG9fa2V5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByZXR1cm4gKHggPiB5KSAtICh4IDwgeSkKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkobXljbXA9Y21wMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrZXkob2JqPTMpLCBrZXkob2JqPTMpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoa2V5KG9iaj0zKSwga2V5KG9iaj0xKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVHlwZUVycm9yLCBBdHRyaWJ1dGVFcnJvcikpOgorICAgICAgICAgICAga2V5KDMpID4gMSAgICAjIHJocyBpcyBub3QgYSBLIG9iamVjdAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yKSk6CisgICAgICAgICAgICAxIDwga2V5KDMpICAgICMgbGhzIGlzIG5vdCBhIEsgb2JqZWN0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KCkgICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSwgTm9uZSkgICAjIHRvbyBtYW55IGFyZ3MKKyAgICAgICAga2V5ID0gZnVuY3Rvb2xzLmNtcF90b19rZXkoY21wMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAga2V5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRvbyBmZXcgYXJncworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBrZXkoTm9uZSwgTm9uZSkgICAgICAgICAgICAgICAgICAgICAgICAgICMgdG9vIG1hbnkgYXJncworCisgICAgZGVmIHRlc3RfYmFkX2NtcChzZWxmKToKKyAgICAgICAgZGVmIGNtcDEoeCwgeSk6CisgICAgICAgICAgICByYWlzZSBaZXJvRGl2aXNpb25FcnJvcgorICAgICAgICBrZXkgPSBmdW5jdG9vbHMuY21wX3RvX2tleShjbXAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIGtleSgzKSA+IGtleSgxKQorCisgICAgICAgIGNsYXNzIEJhZENtcDoKKyAgICAgICAgICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFplcm9EaXZpc2lvbkVycm9yCisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuIEJhZENtcCgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAga2V5KDMpID4ga2V5KDEpCisKKyAgICBkZWYgdGVzdF9vYmpfZmllbGQoc2VsZik6CisgICAgICAgIGRlZiBjbXAxKHgsIHkpOgorICAgICAgICAgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wPWNtcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5KDUwKS5vYmosIDUwKQorCisgICAgZGVmIHRlc3Rfc29ydF9pbnQoc2VsZik6CiAgICAgICAgIGRlZiBteWNtcCh4LCB5KToKICAgICAgICAgICAgIHJldHVybiB5IC0geAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChyYW5nZSg1KSwga2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzQsIDMsIDIsIDEsIDBdKQogCisgICAgZGVmIHRlc3Rfc29ydF9pbnRfc3RyKHNlbGYpOgorICAgICAgICBkZWYgbXljbXAoeCwgeSk6CisgICAgICAgICAgICB4LCB5ID0gaW50KHgpLCBpbnQoeSkKKyAgICAgICAgICAgIHJldHVybiAoeCA+IHkpIC0gKHggPCB5KQorICAgICAgICB2YWx1ZXMgPSBbNSwgJzMnLCA3LCAyLCAnMCcsICcxJywgNCwgJzEwJywgMV0KKyAgICAgICAgdmFsdWVzID0gc29ydGVkKHZhbHVlcywga2V5PWZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaW50KHZhbHVlKSBmb3IgdmFsdWUgaW4gdmFsdWVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMSwgMSwgMiwgMywgNCwgNSwgNywgMTBdKQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZGVmIG15Y21wKHgsIHkpOgogICAgICAgICAgICAgcmV0dXJuIHkgLSB4CiAgICAgICAgIGtleSA9IGZ1bmN0b29scy5jbXBfdG9fa2V5KG15Y21wKQogICAgICAgICBrID0ga2V5KDEwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhhc2gsIGspCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShrLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShrLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkKIAogY2xhc3MgVGVzdFRvdGFsT3JkZXJpbmcodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02NzEsNiArNzQwLDIyIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IpOgogICAgICAgICAgICAgICAgIGZ1bmMoMTUpCiAKKyAgICBkZWYgdGVzdF9scnVfd2l0aF90eXBlcyhzZWxmKToKKyAgICAgICAgZm9yIG1heHNpemUgaW4gKE5vbmUsIDEwMCk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLmxydV9jYWNoZShtYXhzaXplPW1heHNpemUsIHR5cGVkPVRydWUpCisgICAgICAgICAgICBkZWYgc3F1YXJlKHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICogeAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoMyksIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKDMpKSwgdHlwZSg5KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKDMuMCksIDkuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShzcXVhcmUoMy4wKSksIHR5cGUoOS4wKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlKHg9MyksIDkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKHg9MykpLCB0eXBlKDkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUoeD0zLjApLCA5LjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3F1YXJlKHg9My4wKSksIHR5cGUoOS4wKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3F1YXJlLmNhY2hlX2luZm8oKS5oaXRzLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcXVhcmUuY2FjaGVfaW5mbygpLm1pc3NlcywgNCkKKwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgogICAgIHRlc3RfY2xhc3NlcyA9ICgKICAgICAgICAgVGVzdFBhcnRpYWwsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z1dHVyZS5weSBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CmluZGV4IGM2Njg5YTEuLjNhMjVlYjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5CkBAIC0xMywxNCArMTMsMTQgQEAKIGNsYXNzIEZ1dHVyZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZnV0dXJlMShzZWxmKToKLSAgICAgICAgc3VwcG9ydC51bmxvYWQoJ3Rlc3RfZnV0dXJlMScpCi0gICAgICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9mdXR1cmUxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9mdXR1cmUxLnJlc3VsdCwgNikKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoJ2Z1dHVyZV90ZXN0MScpCisgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgZnV0dXJlX3Rlc3QxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnV0dXJlX3Rlc3QxLnJlc3VsdCwgNikKIAogICAgIGRlZiB0ZXN0X2Z1dHVyZTIoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQudW5sb2FkKCd0ZXN0X2Z1dHVyZTInKQotICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZnV0dXJlMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfZnV0dXJlMi5yZXN1bHQsIDYpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCdmdXR1cmVfdGVzdDInKQorICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IGZ1dHVyZV90ZXN0MgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1dHVyZV90ZXN0Mi5yZXN1bHQsIDYpCiAKICAgICBkZWYgdGVzdF9mdXR1cmUzKHNlbGYpOgogICAgICAgICBzdXBwb3J0LnVubG9hZCgndGVzdF9mdXR1cmUzJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGUxYzEyNGQuLmM1OWI3MmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgc3RyaXBfcHl0aG9uX3N0ZGVycgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICh2ZXJib3NlLCByZWZjb3VudF90ZXN0LCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBfcHl0aG9uX3N0ZGVycikKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgZ2MKQEAgLTM3LDYgKzM4LDIwIEBACiAgICAgICAgICMgZ2MgY29sbGVjdHMgaXQuCiAgICAgICAgIHNlbGYud3IgPSB3ZWFrcmVmLnJlZihDMTA1NTgyMCg2NjYpLCBpdF9oYXBwZW5lZCkKIAorY2xhc3MgVW5jb2xsZWN0YWJsZShvYmplY3QpOgorICAgICIiIkNyZWF0ZSBhIHJlZmVyZW5jZSBjeWNsZSB3aXRoIG11bHRpcGxlIF9fZGVsX18gbWV0aG9kcy4KKworICAgIEFuIG9iamVjdCBpbiBhIHJlZmVyZW5jZSBjeWNsZSB3aWxsIG5ldmVyIGhhdmUgemVybyByZWZlcmVuY2VzLAorICAgIGFuZCBzbyBtdXN0IGJlIGdhcmJhZ2UgY29sbGVjdGVkLiAgSWYgb25lIG9yIG1vcmUgb2JqZWN0cyBpbiB0aGUKKyAgICBjeWNsZSBoYXZlIF9fZGVsX18gbWV0aG9kcywgdGhlIGdjIHJlZnVzZXMgdG8gZ3Vlc3MgYW4gb3JkZXIsCisgICAgYW5kIGxlYXZlcyB0aGUgY3ljbGUgdW5jb2xsZWN0ZWQuIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnRuZXI9Tm9uZSk6CisgICAgICAgIGlmIHBhcnRuZXIgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYucGFydG5lciA9IFVuY29sbGVjdGFibGUocGFydG5lcj1zZWxmKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wYXJ0bmVyID0gcGFydG5lcgorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBwYXNzCiAKICMjIyBUZXN0cwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMTgxLDYgKzE5Niw3IEBACiAgICAgICAgIGRlbCBkCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2MuY29sbGVjdCgpLCAyKQogCisgICAgQHJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9mcmFtZShzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpCkBAIC0yNDgsNiArMjY0LDcgQEAKICAgICAjIEZvciBleGFtcGxlLCBkaXNwb3NlZCB0dXBsZXMgYXJlIG5vdCBmcmVlZCwgYnV0IHJldXNlZC4KICAgICAjIFRvIG1pbmltaXplIHZhcmlhdGlvbnMsIHRob3VnaCwgd2UgZmlyc3Qgc3RvcmUgdGhlIGdldF9jb3VudCgpIHJlc3VsdHMKICAgICAjIGFuZCBjaGVjayB0aGVtIGF0IHRoZSBlbmQuCisgICAgQHJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9nZXRfY291bnQoc2VsZik6CiAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICBhLCBiLCBjID0gZ2MuZ2V0X2NvdW50KCkKQEAgLTI2MSw2ICsyNzgsNyBAQAogICAgICAgICAjIGNyZWF0ZWQgKHRoZSBsaXN0KS4KICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGQsIGEpCiAKKyAgICBAcmVmY291bnRfdGVzdAogICAgIGRlZiB0ZXN0X2NvbGxlY3RfZ2VuZXJhdGlvbnMoc2VsZik6CiAgICAgICAgIGdjLmNvbGxlY3QoKQogICAgICAgICAjIFRoaXMgb2JqZWN0IHdpbGwgInRyaWNrbGUiIGludG8gZ2VuZXJhdGlvbiBOICsgMSBhZnRlcgpAQCAtNTkzLDYgKzYxMSwxMjcgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiInVuY29sbGVjdGFibGUgb2JqZWN0cyBhdCBzaHV0ZG93biIsIHN0ZGVycikKIAogCitjbGFzcyBHQ0NhbGxiYWNrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBTYXZlIGdjIHN0YXRlIGFuZCBkaXNhYmxlIGl0LgorICAgICAgICBzZWxmLmVuYWJsZWQgPSBnYy5pc2VuYWJsZWQoKQorICAgICAgICBnYy5kaXNhYmxlKCkKKyAgICAgICAgc2VsZi5kZWJ1ZyA9IGdjLmdldF9kZWJ1ZygpCisgICAgICAgIGdjLnNldF9kZWJ1ZygwKQorICAgICAgICBnYy5jYWxsYmFja3MuYXBwZW5kKHNlbGYuY2IxKQorICAgICAgICBnYy5jYWxsYmFja3MuYXBwZW5kKHNlbGYuY2IyKQorICAgICAgICBzZWxmLm90aGVyZ2FyYmFnZSA9IFtdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgUmVzdG9yZSBnYyBzdGF0ZQorICAgICAgICBkZWwgc2VsZi52aXNpdAorICAgICAgICBnYy5jYWxsYmFja3MucmVtb3ZlKHNlbGYuY2IxKQorICAgICAgICBnYy5jYWxsYmFja3MucmVtb3ZlKHNlbGYuY2IyKQorICAgICAgICBnYy5zZXRfZGVidWcoc2VsZi5kZWJ1ZykKKyAgICAgICAgaWYgc2VsZi5lbmFibGVkOgorICAgICAgICAgICAgZ2MuZW5hYmxlKCkKKyAgICAgICAgIyBkZXN0cm95IGFueSB1bmNvbGxlY3RhYmxlcworICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIG9iaiBpbiBnYy5nYXJiYWdlOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIFVuY29sbGVjdGFibGUpOgorICAgICAgICAgICAgICAgIG9iai5wYXJ0bmVyID0gTm9uZQorICAgICAgICBkZWwgZ2MuZ2FyYmFnZVs6XQorICAgICAgICBkZWwgc2VsZi5vdGhlcmdhcmJhZ2UKKyAgICAgICAgZ2MuY29sbGVjdCgpCisKKyAgICBkZWYgcHJlY2xlYW4oc2VsZik6CisgICAgICAgICMgUmVtb3ZlIGFsbCBmbHVmZiBmcm9tIHRoZSBzeXN0ZW0uICBJbnZva2UgdGhpcyBmdW5jdGlvbgorICAgICAgICAjIG1hbnVhbGx5IHJhdGhlciB0aGFuIHRocm91Z2ggc2VsZi5zZXRVcCgpIGZvciBtYXhpbXVtCisgICAgICAgICMgc2FmZXR5LgorICAgICAgICBzZWxmLnZpc2l0ID0gW10KKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIGdhcmJhZ2UsIGdjLmdhcmJhZ2VbOl0gPSBnYy5nYXJiYWdlWzpdLCBbXQorICAgICAgICBzZWxmLm90aGVyZ2FyYmFnZS5hcHBlbmQoZ2FyYmFnZSkKKyAgICAgICAgc2VsZi52aXNpdCA9IFtdCisKKyAgICBkZWYgY2IxKHNlbGYsIHBoYXNlLCBpbmZvKToKKyAgICAgICAgc2VsZi52aXNpdC5hcHBlbmQoKDEsIHBoYXNlLCBkaWN0KGluZm8pKSkKKworICAgIGRlZiBjYjIoc2VsZiwgcGhhc2UsIGluZm8pOgorICAgICAgICBzZWxmLnZpc2l0LmFwcGVuZCgoMiwgcGhhc2UsIGRpY3QoaW5mbykpKQorICAgICAgICBpZiBwaGFzZSA9PSAic3RvcCIgYW5kIGhhc2F0dHIoc2VsZiwgImNsZWFudXAiKToKKyAgICAgICAgICAgICMgQ2xlYW4gVW5jb2xsZWN0YWJsZSBmcm9tIGdhcmJhZ2UKKyAgICAgICAgICAgIHVjID0gW2UgZm9yIGUgaW4gZ2MuZ2FyYmFnZSBpZiBpc2luc3RhbmNlKGUsIFVuY29sbGVjdGFibGUpXQorICAgICAgICAgICAgZ2MuZ2FyYmFnZVs6XSA9IFtlIGZvciBlIGluIGdjLmdhcmJhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgVW5jb2xsZWN0YWJsZSldCisgICAgICAgICAgICBmb3IgZSBpbiB1YzoKKyAgICAgICAgICAgICAgICBlLnBhcnRuZXIgPSBOb25lCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0KHNlbGYpOgorICAgICAgICBzZWxmLnByZWNsZWFuKCkKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgICMgQWxnb3JpdGhtaWNhbGx5IHZlcmlmeSB0aGUgY29udGVudHMgb2Ygc2VsZi52aXNpdAorICAgICAgICAjIGJlY2F1c2UgaXQgaXMgbG9uZyBhbmQgdG9ydHVvdXMuCisKKyAgICAgICAgIyBDb3VudCB0aGUgbnVtYmVyIG9mIHZpc2l0cyB0byBlYWNoIGNhbGxiYWNrCisgICAgICAgIG4gPSBbdlswXSBmb3IgdiBpbiBzZWxmLnZpc2l0XQorICAgICAgICBuMSA9IFtpIGZvciBpIGluIG4gaWYgaSA9PSAxXQorICAgICAgICBuMiA9IFtpIGZvciBpIGluIG4gaWYgaSA9PSAyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4xLCBbMV0qMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMiwgWzJdKjIpCisKKyAgICAgICAgIyBDb3VudCB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgbnVtYmVyIG9mIHN0YXJ0IGFuZCBzdG9wIGNhbGxiYWNrcy4KKyAgICAgICAgbiA9IFt2WzFdIGZvciB2IGluIHNlbGYudmlzaXRdCisgICAgICAgIG4xID0gW2kgZm9yIGkgaW4gbiBpZiBpID09ICJzdGFydCJdCisgICAgICAgIG4yID0gW2kgZm9yIGkgaW4gbiBpZiBpID09ICJzdG9wIl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuMSwgWyJzdGFydCJdKjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobjIsIFsic3RvcCJdKjIpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHdlIGdvdCB0aGUgcmlnaHQgaW5mbyBkaWN0IGZvciBhbGwgY2FsbGJhY2tzCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJnZW5lcmF0aW9uIiBpbiBpbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJjb2xsZWN0ZWQiIGluIGluZm8pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoInVuY29sbGVjdGFibGUiIGluIGluZm8pCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X2dlbmVyYXRpb24oc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICBnYy5jb2xsZWN0KDIpCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJnZW5lcmF0aW9uIl0sIDIpCisKKyAgICBkZWYgdGVzdF9jb2xsZWN0X2dhcmJhZ2Uoc2VsZik6CisgICAgICAgIHNlbGYucHJlY2xlYW4oKQorICAgICAgICAjIEVhY2ggb2YgdGhlc2UgY2F1c2UgZm91ciBvYmplY3RzIHRvIGJlIGdhcmJhZ2U6IFR3bworICAgICAgICAjIFVuY29sZWN0YWJsZXMgYW5kIHRoZWlyIGluc3RhbmNlIGRpY3RzLgorICAgICAgICBVbmNvbGxlY3RhYmxlKCkKKyAgICAgICAgVW5jb2xsZWN0YWJsZSgpCisgICAgICAgIEMxMDU1ODIwKDY2NikKKyAgICAgICAgZ2MuY29sbGVjdCgpCisgICAgICAgIGZvciB2IGluIHNlbGYudmlzaXQ6CisgICAgICAgICAgICBpZiB2WzFdICE9ICJzdG9wIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaW5mbyA9IHZbMl0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1siY29sbGVjdGVkIl0sIDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9bInVuY29sbGVjdGFibGUiXSwgOCkKKworICAgICAgICAjIFdlIHNob3VsZCBub3cgaGF2ZSB0aGUgVW5jb2xsZWN0YWJsZXMgaW4gZ2MuZ2FyYmFnZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihnYy5nYXJiYWdlKSwgNCkKKyAgICAgICAgZm9yIGUgaW4gZ2MuZ2FyYmFnZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLCBVbmNvbGxlY3RhYmxlKQorCisgICAgICAgICMgTm93LCBsZXQgb3VyIGNhbGxiYWNrIGhhbmRsZSB0aGUgVW5jb2xsZWN0YWJsZSBpbnN0YW5jZXMKKyAgICAgICAgc2VsZi5jbGVhbnVwPVRydWUKKyAgICAgICAgc2VsZi52aXNpdCA9IFtdCisgICAgICAgIGdjLmdhcmJhZ2VbOl0gPSBbXQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgZm9yIHYgaW4gc2VsZi52aXNpdDoKKyAgICAgICAgICAgIGlmIHZbMV0gIT0gInN0b3AiOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpbmZvID0gdlsyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvWyJjb2xsZWN0ZWQiXSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb1sidW5jb2xsZWN0YWJsZSJdLCA0KQorCisgICAgICAgICMgVW5jb2xsZWN0YWJsZXMgc2hvdWxkIGJlIGdvbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZ2MuZ2FyYmFnZSksIDApCisKKwogY2xhc3MgR0NUb2dnbGluZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIGdjLmVuYWJsZSgpCkBAIC03NDYsNyArODg1LDcgQEAKIAogICAgIHRyeToKICAgICAgICAgZ2MuY29sbGVjdCgpICMgRGVsZXRlIDJuZCBnZW5lcmF0aW9uIGdhcmJhZ2UKLSAgICAgICAgcnVuX3VuaXR0ZXN0KEdDVGVzdHMsIEdDVG9nZ2xpbmdUZXN0cykKKyAgICAgICAgcnVuX3VuaXR0ZXN0KEdDVGVzdHMsIEdDVG9nZ2xpbmdUZXN0cywgR0NDYWxsYmFja1Rlc3RzKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGdjLnNldF9kZWJ1ZyhkZWJ1ZykKICAgICAgICAgIyB0ZXN0IGdjLmVuYWJsZSgpIGV2ZW4gaWYgR0MgaXMgZGlzYWJsZWQgYnkgZGVmYXVsdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCBmYjgyNjFiLi5hODcyZTY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtNyw5ICs3LDE2IEBACiBpbXBvcnQgcmUKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBsb2NhbGUKIAorIyBJcyB0aGlzIFB5dGhvbiBjb25maWd1cmVkIHRvIHN1cHBvcnQgdGhyZWFkcz8KK3RyeToKKyAgICBpbXBvcnQgX3RocmVhZAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90aHJlYWQgPSBOb25lCisKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCBweXRob25faXNfb3B0aW1pemVkCiAKIHRyeToKQEAgLTI0LDYgKzMxLDkgQEAKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2RiIHZlcnNpb25zIGJlZm9yZSA3LjAgZGlkbid0IHN1cHBvcnQgcHl0aG9uIGVtYmVkZGluZyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIFNhdzpcbiIgKyBnZGJfdmVyc2lvbi5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKSkKIAoraWYgbm90IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdF9nZGIgb25seSB3b3JrcyBvbiBzb3VyY2UgYnVpbGRzIGF0IHRoZSBtb21lbnQuIikKKwogIyBWZXJpZnkgdGhhdCAiZ2RiIiB3YXMgYnVpbHQgd2l0aCB0aGUgZW1iZWRkZWQgcHl0aG9uIHN1cHBvcnQgZW5hYmxlZDoKIGNtZCA9ICItLWV2YWwtY29tbWFuZD1weXRob24gaW1wb3J0IHN5czsgcHJpbnQgc3lzLnZlcnNpb25faW5mbyIKIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsiZ2RiIiwgIi0tYmF0Y2giLCBjbWRdLApAQCAtMTUyLDcgKzE2Miw2IEBACiAKICAgICAgICAgIyBFbnN1cmUgbm8gdW5leHBlY3RlZCBlcnJvciBtZXNzYWdlczoKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsICcnKQotCiAgICAgICAgIHJldHVybiBvdXQKIAogICAgIGRlZiBnZXRfZ2RiX3JlcHIoc2VsZiwgc291cmNlLApAQCAtMTczLDcgKzE4Miw3IEBACiAgICAgICAgICMgZ2RiIGNhbiBpbnNlcnQgYWRkaXRpb25hbCAnXG4nIGFuZCBzcGFjZSBjaGFyYWN0ZXJzIGluIHZhcmlvdXMgcGxhY2VzCiAgICAgICAgICMgaW4gaXRzIG91dHB1dCwgZGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBvZiB0aGUgdGVybWluYWwgaXQncyBjb25uZWN0ZWQKICAgICAgICAgIyB0byAodXNpbmcgaXRzICJ3cmFwX2hlcmUiIGZ1bmN0aW9uKQotICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1B5dGhvbi9ibHRpbm1vZHVsZS5jLionLAorICAgICAgICBtID0gcmUubWF0Y2goJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAogICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwgcmUuRE9UQUxMKQogICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBnZGIgb3V0cHV0OiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtMzM1LDcgKzM0NCw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCBuZXctc3R5bGUgY2xhc3MgcmVuZGVyaW5nICVyJyAlIGdkYl9yZXByKQogCkBAIC0zNDgsNyArMzU3LDcgQEAKIGZvbyArPSBbMSwgMiwgM10KIGZvby5hbl9pbnQgPSA0MgogaWQoZm9vKScnJykKLSAgICAgICAgbSA9IHJlLm1hdGNoKHInPEZvb1woYW5faW50PTQyXCkgYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicsIGdkYl9yZXByKQorICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLCBnZGJfcmVwcikKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCBuZXctc3R5bGUgY2xhc3MgcmVuZGVyaW5nICVyJyAlIGdkYl9yZXByKQpAQCAtMzYzLDcgKzM3Miw3IEBACiBmb28gPSBGb28oKDEsIDIsIDMpKQogZm9vLmFuX2ludCA9IDQyCiBpZChmb28pJycnKQotICAgICAgICBtID0gcmUubWF0Y2gocic8Rm9vXChhbl9pbnQ9NDJcKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxGb29cKGFuX2ludD00MlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdVbmV4cGVjdGVkIG5ldy1zdHlsZSBjbGFzcyByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCkBAIC0zOTAsNyArMzk5LDcgQEAKIAogICAgICAgICAjIE1hdGNoIGFueXRoaW5nIGZvciB0aGUgdHlwZSBuYW1lOyAweERFQURCRUVGIGNvdWxkIHBvaW50IHRvCiAgICAgICAgICMgc29tZXRoaW5nIGFyYml0cmFyeSAoc2VlICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODMzMCkKLSAgICAgICAgcGF0dGVybiA9ICc8LiogYXQgcmVtb3RlIDB4WzAtOWEtZl0rPicKKyAgICAgICAgcGF0dGVybiA9ICc8LiogYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JwogCiAgICAgICAgIG0gPSByZS5tYXRjaChwYXR0ZXJuLCBnZGJfcmVwcikKICAgICAgICAgaWYgbm90IG06CkBAIC00MzYsNyArNDQ1LDcgQEAKICAgICAgICAgIyAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTgwMzIjbXNnMTAwNTM3ICkKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaWQoX19idWlsdGluc19fLmhlbHApJywgaW1wb3J0X3NpdGU9VHJ1ZSkKIAotICAgICAgICBtID0gcmUubWF0Y2gocic8X0hlbHBlciBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywgZ2RiX3JlcHIpCisgICAgICAgIG0gPSByZS5tYXRjaChyJzxfSGVscGVyIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsIGdkYl9yZXByKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nVW5leHBlY3RlZCByZW5kZXJpbmcgJXInICUgZ2RiX3JlcHIpCiAKQEAgLTQ2Nyw3ICs0NzYsNyBAQAogZm9vID0gRm9vKCkKIGZvby5hbl9hdHRyID0gZm9vCiBpZChmb28pJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNDgwLDcgKzQ4OSw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz4nLAorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC00OTQsNyArNTAzLDcgQEAKIGEuYW5fYXR0ciA9IGIKIGIuYW5fYXR0ciA9IGEKIGlkKGEpJycnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxGb29cKGFuX2F0dHI9PEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweFswLTlhLWZdKz5cKSBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01MjksNyArNTM4LDcgQEAKIAogICAgIGRlZiB0ZXN0X2J1aWx0aW5fbWV0aG9kKHNlbGYpOgogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpbXBvcnQgc3lzOyBpZChzeXMuc3Rkb3V0LnJlYWRsaW5lcyknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJzxidWlsdC1pbiBtZXRob2QgcmVhZGxpbmVzIG9mIF9pby5UZXh0SU9XcmFwcGVyIG9iamVjdCBhdCByZW1vdGUgMHhbMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTQ0LDcgKzU1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSdidWlsdGluX2lkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3ByaW50IChQeUZyYW1lT2JqZWN0KikoKChQeUNvZGVPYmplY3QqKXYpLT5jb196b21iaWVmcmFtZSknXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJy4qXHMrXCQxID1ccytGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnLipccytcJDEgPVxzK0ZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIDxzdHJpbmc+LCBsaW5lIDMsIGluIGZvbyBcKFwpXHMrLionLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlLkRPVEFMTCksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSAoZ2RiX291dHB1dCwgZ2RiX291dHB1dCkpCkBAIC02MDEsNyArNjEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydweS11cCddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJycnXi4qCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXpcKGEsIGIsIGNcKQogJCcnJykKIApAQCAtNjMwLDkgKzYzOSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktdXAnLCAncHktZG93biddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJycnXi4qCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXpcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEwLCBpbiBiYXogXChhcmdzPVwoMSwgMiwgM1wpXCkKKyNbMC05XSsgRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDEwLCBpbiBiYXogXChhcmdzPVwoMSwgMiwgM1wpXCkKICAgICBpZFwoNDJcKQogJCcnJykKIApAQCAtNjY0LDE0ICs2NzMsMTA2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpbGluZU1hdGNoZXMoYnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJycnXi4qCi0jWzAtOV0rIEZyYW1lIDB4WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNywgaW4gYmFyIFwoYT0xLCBiPTIsIGM9M1wpCisjWzAtOV0rIEZyYW1lIDB4LT9bMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSA3LCBpbiBiYXIgXChhPTEsIGI9MiwgYz0zXCkKICAgICBiYXpcKGEsIGIsIGNcKQotI1swLTldKyBGcmFtZSAweFswLTlhLWZdKywgZm9yIGZpbGUgLipnZGJfc2FtcGxlLnB5LCBsaW5lIDQsIGluIGZvbyBcKGE9MSwgYj0yLCBjPTNcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgNCwgaW4gZm9vIFwoYT0xLCBiPTIsIGM9M1wpCiAgICAgYmFyXChhLCBiLCBjXCkKLSNbMC05XSsgRnJhbWUgMHhbMC05YS1mXSssIGZvciBmaWxlIC4qZ2RiX3NhbXBsZS5weSwgbGluZSAxMiwgaW4gPG1vZHVsZT4gXChcKQorI1swLTldKyBGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSAuKmdkYl9zYW1wbGUucHksIGxpbmUgMTIsIGluIDxtb2R1bGU+IFwoXCkKICAgICBmb29cKDEsIDIsIDNcKQogJycnKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZCBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF90aHJlYWRzKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBpbmRpY2F0ZXMgdGhyZWFkcyB0aGF0IGFyZSB3YWl0aW5nIGZvciB0aGUgR0lMJworICAgICAgICBjbWQgPSAnJycKK2Zyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQKKworY2xhc3MgVGVzdFRocmVhZChUaHJlYWQpOgorICAgICMgVGhlc2UgdGhyZWFkcyB3b3VsZCBydW4gZm9yZXZlciwgYnV0IHdlJ2xsIGludGVycnVwdCB0aGluZ3Mgd2l0aCB0aGUKKyAgICAjIGRlYnVnZ2VyCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgaSA9IDAKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICBpICs9IDEKKwordCA9IHt9Citmb3IgaSBpbiByYW5nZSg0KToKKyAgIHRbaV0gPSBUZXN0VGhyZWFkKCkKKyAgIHRbaV0uc3RhcnQoKQorCisjIFRyaWdnZXIgYSBicmVha3BvaW50IG9uIHRoZSBtYWluIHRocmVhZAoraWQoNDIpCisKKycnJworICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9Wyd0aHJlYWQgYXBwbHkgYWxsIHB5LWJ0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dhaXRpbmcgZm9yIHRoZSBHSUwnLCBnZGJfb3V0cHV0KQorCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0LWZ1bGwiOgorICAgICAgICBnZGJfb3V0cHV0ID0gc2VsZi5nZXRfc3RhY2tfdHJhY2UoY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsndGhyZWFkIGFwcGx5IGFsbCBweS1idC1mdWxsJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dhaXRpbmcgZm9yIHRoZSBHSUwnLCBnZGJfb3V0cHV0KQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihweXRob25faXNfb3B0aW1pemVkKCksCisgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIG9wdGltaXphdGlvbnMiKQorICAgICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBnZGIgd2lsbCBmYWlsIHdpdGgKKyAgICAjICAiQ2Fubm90IGZpbmQgbmV3IHRocmVhZHM6IGdlbmVyaWMgZXJyb3IiCisgICAgIyB1bmxlc3Mgd2UgYWRkIExEX1BSRUxPQUQ9UEFUSC1UTy1saWJwdGhyZWFkLnNvLjEgYXMgYSB3b3JrYXJvdW5kCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHdhcyBjb21waWxlZCB3aXRob3V0IHRocmVhZCBzdXBwb3J0IikKKyAgICBkZWYgdGVzdF9nYyhzZWxmKToKKyAgICAgICAgJ1ZlcmlmeSB0aGF0ICJweS1idCIgaW5kaWNhdGVzIGlmIGEgdGhyZWFkIGlzIGdhcmJhZ2UtY29sbGVjdGluZycKKyAgICAgICAgY21kID0gKCdmcm9tIGdjIGltcG9ydCBjb2xsZWN0XG4nCisgICAgICAgICAgICAgICAnaWQoNDIpXG4nCisgICAgICAgICAgICAgICAnZGVmIGZvbygpOlxuJworICAgICAgICAgICAgICAgJyAgICBjb2xsZWN0KClcbicKKyAgICAgICAgICAgICAgICdkZWYgYmFyKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGZvbygpXG4nCisgICAgICAgICAgICAgICAnYmFyKClcbicpCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ2JyZWFrIHVwZGF0ZV9yZWZzJywgJ2NvbnRpbnVlJywgJ3B5LWJ0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0dhcmJhZ2UtY29sbGVjdGluZycsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydicmVhayB1cGRhdGVfcmVmcycsICdjb250aW51ZScsICdweS1idC1mdWxsJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0dhcmJhZ2UtY29sbGVjdGluZycsIGdkYl9vdXRwdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCisgICAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIGdkYiB3aWxsIGZhaWwgd2l0aAorICAgICMgICJDYW5ub3QgZmluZCBuZXcgdGhyZWFkczogZ2VuZXJpYyBlcnJvciIKKyAgICAjIHVubGVzcyB3ZSBhZGQgTERfUFJFTE9BRD1QQVRILVRPLWxpYnB0aHJlYWQuc28uMSBhcyBhIHdvcmthcm91bmQKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhfdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3B5Y2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICAnVmVyaWZ5IHRoYXQgInB5LWJ0IiBkaXNwbGF5cyBpbnZvY2F0aW9ucyBvZiBQeUNGdW5jdGlvbiBpbnN0YW5jZXMnCisgICAgICAgIGNtZCA9ICgnZnJvbSB0aW1lIGltcG9ydCBzbGVlcFxuJworICAgICAgICAgICAgICAgJ2RlZiBmb28oKTpcbicKKyAgICAgICAgICAgICAgICcgICAgc2xlZXAoMSlcbicKKyAgICAgICAgICAgICAgICdkZWYgYmFyKCk6XG4nCisgICAgICAgICAgICAgICAnICAgIGZvbygpXG4nCisgICAgICAgICAgICAgICAnYmFyKClcbicpCisgICAgICAgICMgVmVyaWZ5IHdpdGggInB5LWJ0IjoKKyAgICAgICAgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ9J3RpbWVfc2xlZXAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsnYnQnLCAncHktYnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignPGJ1aWx0LWluIG1ldGhvZCBzbGVlcCcsIGdkYl9vdXRwdXQpCisKKyAgICAgICAgIyBWZXJpZnkgd2l0aCAicHktYnQtZnVsbCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50PSd0aW1lX3NsZWVwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZHNfYWZ0ZXJfYnJlYWtwb2ludD1bJ3B5LWJ0LWZ1bGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIzAgPGJ1aWx0LWluIG1ldGhvZCBzbGVlcCcsIGdkYl9vdXRwdXQpCisKKwogY2xhc3MgUHlQcmludFRlc3RzKERlYnVnZ2VyVGVzdHMpOgogICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLAogICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiB3YXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zIikKQEAgLTcwNSw3ICs4MDYsNyBAQAogICAgICAgICBidCA9IHNlbGYuZ2V0X3N0YWNrX3RyYWNlKHNjcmlwdD1zZWxmLmdldF9zYW1wbGVfc2NyaXB0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktcHJpbnQgbGVuJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlsaW5lTWF0Y2hlcyhidCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiLipcbmJ1aWx0aW4gJ2xlbicgPSA8YnVpbHQtaW4gbWV0aG9kIGxlbiBvZiBtb2R1bGUgb2JqZWN0IGF0IHJlbW90ZSAweFswLTlhLWZdKz5cbi4qIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiLipcbmJ1aWx0aW4gJ2xlbicgPSA8YnVpbHQtaW4gbWV0aG9kIGxlbiBvZiBtb2R1bGUgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPlxuLioiKQogCiBjbGFzcyBQeUxvY2Fsc1Rlc3RzKERlYnVnZ2VyVGVzdHMpOgogICAgIEB1bml0dGVzdC5za2lwSWYocHl0aG9uX2lzX29wdGltaXplZCgpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CmluZGV4IDVmNDdiM2UuLjA2ZjY3YzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKQEAgLTcyOCwyOSArNzI4LDYgQEAKIAogc3ludGF4X3Rlc3RzID0gIiIiCiAKLT4+PiBkZWYgZigpOgotLi4uICAgICByZXR1cm4gMjIKLS4uLiAgICAgeWllbGQgMQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAuLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCi0+Pj4gZGVmIGYoKToKLS4uLiAgICAgeWllbGQgMQotLi4uICAgICByZXR1cm4gMjIKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgLi4KLVN5bnRheEVycm9yOiAncmV0dXJuJyB3aXRoIGFyZ3VtZW50IGluc2lkZSBnZW5lcmF0b3IKLQotInJldHVybiBOb25lIiBpcyBub3QgdGhlIHNhbWUgYXMgInJldHVybiIgaW4gYSBnZW5lcmF0b3I6Ci0KLT4+PiBkZWYgZigpOgotLi4uICAgICB5aWVsZCAxCi0uLi4gICAgIHJldHVybiBOb25lCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yCi0KIFRoZXNlIGFyZSBmaW5lOgogCiA+Pj4gZGVmIGYoKToKQEAgLTg2NiwyMCArODQzLDYgQEAKID4+PiB0eXBlKGYoKSkKIDxjbGFzcyAnZ2VuZXJhdG9yJz4KIAotCi0+Pj4gZGVmIGYoKToKLS4uLiAgICAgaWYgMDoKLS4uLiAgICAgICAgIGxhbWJkYSB4OiAgeCAgICAgICAgIyBzaG91bGRuJ3QgdHJpZ2dlciBoZXJlCi0uLi4gICAgICAgICByZXR1cm4gICAgICAgICAgICAgICMgb3IgaGVyZQotLi4uICAgICAgICAgZGVmIGYoaSk6Ci0uLi4gICAgICAgICAgICAgcmV0dXJuIDIqaSAgICAgICMgb3IgaGVyZQotLi4uICAgICAgICAgaWYgMDoKLS4uLiAgICAgICAgICAgICByZXR1cm4gMyAgICAgICAgIyBidXQgKnRoaXMqIHN1Y2tzIChsaW5lIDgpCi0uLi4gICAgIGlmIDA6Ci0uLi4gICAgICAgICB5aWVsZCAyICAgICAgICAgICAgICMgYmVjYXVzZSBpdCdzIGEgZ2VuZXJhdG9yIChsaW5lIDEwKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCiBUaGlzIG9uZSBjYXVzZWQgYSBjcmFzaCAoc2VlIFNGIGJ1ZyA1Njc1MzgpOgogCiA+Pj4gZGVmIGYoKToKQEAgLTE1NjYsMTEgKzE1MjksNiBAQAogICAuLi4KIFN5bnRheEVycm9yOiAneWllbGQnIG91dHNpZGUgZnVuY3Rpb24KIAotPj4+IGRlZiBmKCk6IHJldHVybiBsYW1iZGEgeD0oeWllbGQpOiAxCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIC4uLgotU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvcgotCiA+Pj4gZGVmIGYoKTogeCA9IHlpZWxkID0geQogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAuLi4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CmluZGV4IDUwNjM4YTEuLjNlYWRkNTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQpAQCAtMiwxMSArMiwxMiBAQAogVGVzdHMgY29tbW9uIHRvIGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGggYW5kIHBvc2l4cGF0aAogIiIiCiAKLWltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgb3MKIGltcG9ydCBnZW5lcmljcGF0aAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogZGVmIHNhZmVfcm1kaXIoZGlybmFtZSk6CkBAIC0xNDUsNiArMTQ2LDE2IEBACiAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCiAgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQorICAgIGRlZiB0ZXN0X2V4aXN0c19mZChzZWxmKToKKyAgICAgICAgciwgdyA9IG9zLnBpcGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICBvcy5jbG9zZSh3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5leGlzdHMocikpCisKICAgICBkZWYgdGVzdF9pc2RpcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoc3VwcG9ydC5URVNURk4pLCBGYWxzZSkKICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCkBAIC0yNTgsMTUgKzI2OSwyMSBAQAogCiAgICAgZGVmIHRlc3RfYWJzcGF0aChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKLSAgICAgICAgZm9yIHBhdGggaW4gKGInJywgYidmb28nLCBiJ2ZceGYyXHhmMicsIGInL2ZvbycsIGInQzpcXCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbGYucGF0aG1vZHVsZS5hYnNwYXRoKHBhdGgpLCBieXRlcykKIAogICAgIGRlZiB0ZXN0X3JlYWxwYXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEluKCJmb28iLCBzZWxmLnBhdGhtb2R1bGUucmVhbHBhdGgoImZvbyIpKQotICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLnJlYWxwYXRoKGIiZm9vIikpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiImZvbyIsIHNlbGYucGF0aG1vZHVsZS5yZWFscGF0aChiImZvbyIpKQogCiAgICAgZGVmIHRlc3Rfbm9ybXBhdGhfaXNzdWU1ODI3KHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBub3JtcGF0aCBwcmVzZXJ2ZXMgdW5pY29kZQpAQCAtMjgyLDggKzI5OSw3IEBACiAKICAgICAgICAgdW5pY3dkID0gJ1x4ZTd3XHhmMCcKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnNlbmNvZGluZyA9IHN1cHBvcnQuVEVTVEZOX0VOQ09ESU5HIG9yICJhc2NpaSIKLSAgICAgICAgICAgIHVuaWN3ZC5lbmNvZGUoZnNlbmNvZGluZykKKyAgICAgICAgICAgIG9zLmZzZW5jb2RlKHVuaWN3ZCkKICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVW5pY29kZUVuY29kZUVycm9yKToKICAgICAgICAgICAgICMgRlMgZW5jb2RpbmcgaXMgcHJvYmFibHkgQVNDSUkKICAgICAgICAgICAgIHBhc3MKQEAgLTI5NSw5ICszMTEsMjAgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJywKICAgICAgICAgIk1hYyBPUyBYIGRlbmllcyB0aGUgY3JlYXRpb24gb2YgYSBkaXJlY3Rvcnkgd2l0aCBhbiBpbnZhbGlkIHV0ZjggbmFtZSIpCiAgICAgZGVmIHRlc3Rfbm9uYXNjaWlfYWJzcGF0aChzZWxmKToKKyAgICAgICAgbmFtZSA9IGInXHhlN3dceGYwJworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5mc2RlY29kZShuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0aGUgZmlsZW5hbWUgJWEgaXMgbm90IGRlY29kYWJsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSB0aGUgQU5TSSBjb2RlIHBhZ2UgJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorCiAgICAgICAgICMgVGVzdCBub24tQVNDSUksIG5vbi1VVEY4IGJ5dGVzIGluIHRoZSBwYXRoLgotICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoYidceGU3d1x4ZjAnKToKLSAgICAgICAgICAgIHNlbGYudGVzdF9hYnNwYXRoKCkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi50ZXN0X2Fic3BhdGgoKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weSBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXhwcy5weQppbmRleCAxZjQ2YWYxLi40MTMwNDNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmV4cHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZW5leHBzLnB5CkBAIC0yNTcsMTEgKzI1NywxNSBAQAogCiAiIiIKIAoraW1wb3J0IHN5cwogCi1fX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CisjIFRyYWNlIGZ1bmN0aW9uIGNhbiB0aHJvdyBvZmYgdGhlIHR1cGxlIHJldXNlIHRlc3QuCitpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpOgorICAgIF9fdGVzdF9fID0ge30KK2Vsc2U6CisgICAgX190ZXN0X18gPSB7J2RvY3Rlc3RzJyA6IGRvY3Rlc3RzfQogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgaW1wb3J0IHN5cwogICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9nZW5leHBzCiAgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X2dlbmV4cHMsIHZlcmJvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCAzZDljMDZhLi40OGNhOTRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMKK2Zyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2tleXdvcmRzLCBnZXRhcmdzX2tleXdvcmRfb25seQogCiAiIiIKID4gSG93IGFib3V0IHRoZSBmb2xsb3dpbmcgY291bnRlcnByb3Bvc2FsLiBUaGlzIGFsc28gY2hhbmdlcyBzb21lIG9mCkBAIC0yMTQsNiArMjE0LDM2IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChWRVJZX0xBUkdFICYgVUxMT05HX01BWCwgZ2V0YXJnc19LKFZFUllfTEFSR0UpKQogCitjbGFzcyBQYXJhZG94OgorICAgICJUaGlzIHN0YXRlbWVudCBpcyBmYWxzZS4iCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKK2NsYXNzIEJvb2xlYW5fVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3Aoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3AKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcChOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDAuMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKDBqKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3AoJycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGdldGFyZ3NfcCgoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgZ2V0YXJnc19wKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBnZXRhcmdzX3Aoe30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZ2V0YXJnc19wKFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMS4wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoMWopKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgneCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCgoMSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoWzFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBnZXRhcmdzX3AoezE6Mn0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGdldGFyZ3NfcCh1bml0dGVzdC5UZXN0Q2FzZSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgZ2V0YXJnc19wLCBQYXJhZG94KCkpCisKIAogY2xhc3MgVHVwbGVfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3R1cGxlKHNlbGYpOgpAQCAtMjkzLDcgKzMyMyw4NyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdUeXBlRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQnKQogCitjbGFzcyBLZXl3b3JkT25seV9UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIpLAorICAgICAgICAgICAgKDEsIDIsIC0xKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfbWl4ZWRfYXJncyhzZWxmKToKKyAgICAgICAgIyBwb3NpdGlvbmFsIGFuZCBrZXl3b3JkIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIGtleXdvcmRfb25seT0zKSwKKyAgICAgICAgICAgICgxLCAyLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICAjIGFsbCBrZXl3b3JkcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwgb3B0aW9uYWw9Miwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIDIsIDMpCisgICAgICAgICAgICApCisKKyAgICBkZWYgdGVzdF9vcHRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIG1pc3Npbmcgb3B0aW9uYWwga2V5d29yZCBhcmdzLCBza2lwcGluZyB0dXBsZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEsIG9wdGlvbmFsPTIpLAorICAgICAgICAgICAgKDEsIDIsIC0xKQorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkocmVxdWlyZWQ9MSwga2V5d29yZF9vbmx5PTMpLAorICAgICAgICAgICAgKDEsIC0xLCAzKQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEpLAorICAgICAgICAgICAgKDEsIC0xLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KHJlcXVpcmVkPTEpLAorICAgICAgICAgICAgKDEsIC0xLCAtMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkob3B0aW9uYWw9MikKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoa2V5d29yZF9vbmx5PTMpCisKKyAgICBkZWYgdGVzdF90b29fbWFueV9hcmdzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KDEsIDIsIDMsIGtleXdvcmRfb25seT01KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9rZXl3b3JkKHNlbGYpOgorICAgICAgICAjIGV4dHJhbmVvdXMga2V5d29yZCBhcmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInbW9uc3RlcicgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIik6CisgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCBtb25zdGVyPTY2NikKKworICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZV9rZXl3b3JkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgIidcdWRjODAnIGlzIGFuIGludmFsaWQga2V5d29yZCBhcmd1bWVudCBmb3IgdGhpcyBmdW5jdGlvbiIpOgorICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgKip7J1x1REM4MCc6IDEwfSkKKwogY2xhc3MgQnl0ZXNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Moc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX2MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIGInYWJjJykgICMgbGVuID4gMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfYyhiJ2EnKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2MoYnl0ZWFycmF5KGInYScpKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2MsIG1lbW9yeXZpZXcoYidhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCAncycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19jLCBOb25lKQorCiAgICAgZGVmIHRlc3RfcyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfcygnYWJjXHhlOScpLCBiJ2FiY1x4YzNceGE5JykKQEAgLTQzMCw4ICs1NDAsMTAgQEAKICAgICB0ZXN0cyA9IFsKICAgICAgICAgU2lnbmVkX1Rlc3RDYXNlLAogICAgICAgICBVbnNpZ25lZF9UZXN0Q2FzZSwKKyAgICAgICAgQm9vbGVhbl9UZXN0Q2FzZSwKICAgICAgICAgVHVwbGVfVGVzdENhc2UsCiAgICAgICAgIEtleXdvcmRzX1Rlc3RDYXNlLAorICAgICAgICBLZXl3b3JkT25seV9UZXN0Q2FzZSwKICAgICAgICAgQnl0ZXNfVGVzdENhc2UsCiAgICAgICAgIFVuaWNvZGVfVGVzdENhc2UsCiAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5IGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CmluZGV4IDE1NjBhNmIuLjZlZTA4ZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIFRFU1RGTiwgc2tpcF91bmxlc3Nfc3ltbGluaywgY2FuX3N5bWxpbmsKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAocnVuX3VuaXR0ZXN0LCBURVNURk4sIHNraXBfdW5sZXNzX3N5bWxpbmssCisgICAgY2FuX3N5bWxpbmssIGNyZWF0ZV9lbXB0eV9maWxlKQogaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbApAQCAtMTQsOCArMTUsNyBAQAogICAgICAgICBiYXNlLCBmaWxlID0gb3MucGF0aC5zcGxpdChmaWxlbmFtZSkKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJhc2UpOgogICAgICAgICAgICAgb3MubWFrZWRpcnMoYmFzZSkKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKGZpbGVuYW1lKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnRlbXBkaXIgPSBURVNURk4rIl9kaXIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMjY4YTYzMy4uNmIzMjZiZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtMTAsNyArMTAsNyBAQAogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZXN0QmFja3NsYXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2JhY2tzbGFzaChzZWxmKToKICAgICAgICAgIyBCYWNrc2xhc2ggbWVhbnMgbGluZSBjb250aW51YXRpb246CiAgICAgICAgIHggPSAxIFwKICAgICAgICAgKyAxCkBAIC0yMCw3ICsyMCw3IEBACiAgICAgICAgIHggPSAwCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMCwgJ2JhY2tzbGFzaCBlbmRpbmcgY29tbWVudCcpCiAKLSAgICBkZWYgdGVzdFBsYWluSW50ZWdlcnMoc2VsZik6CisgICAgZGVmIHRlc3RfcGxhaW5faW50ZWdlcnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZSgwMDApLCB0eXBlKDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4ZmYsIDI1NSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwbzM3NywgMjU1KQpAQCAtNTYsNyArNTYsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdXZWlyZCBtYXhzaXplIHZhbHVlICVyJyAlIG1heHNpemUpCiAKLSAgICBkZWYgdGVzdExvbmdJbnRlZ2VycyhzZWxmKToKKyAgICBkZWYgdGVzdF9sb25nX2ludGVnZXJzKHNlbGYpOgogICAgICAgICB4ID0gMAogICAgICAgICB4ID0gMHhmZmZmZmZmZmZmZmZmZmZmCiAgICAgICAgIHggPSAwWGZmZmZmZmZmZmZmZmZmZmYKQEAgLTY2LDcgKzY2LDcgQEAKICAgICAgICAgeCA9IDBiMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICAgICAgIHggPSAwQjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMQogCi0gICAgZGVmIHRlc3RGbG9hdHMoc2VsZik6CisgICAgZGVmIHRlc3RfZmxvYXRzKHNlbGYpOgogICAgICAgICB4ID0gMy4xNAogICAgICAgICB4ID0gMzE0LgogICAgICAgICB4ID0gMC4zMTQKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAgICAgeCA9IC4zZTE0CiAgICAgICAgIHggPSAzLjFlNAogCi0gICAgZGVmIHRlc3RTdHJpbmdMaXRlcmFscyhzZWxmKToKKyAgICBkZWYgdGVzdF9zdHJpbmdfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIHggPSAnJzsgeSA9ICIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDAgYW5kIHggPT0geSkKICAgICAgICAgeCA9ICdcJyc7IHkgPSAiJyI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzkpCiAgICAgICAgIHggPSAnIic7IHkgPSAiXCIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDEgYW5kIHggPT0geSBhbmQgb3JkKHgpID09IDM0KQpAQCAtMTIwLDExICsxMjAsMTggQEAKICcKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCB5KQogCi0gICAgZGVmIHRlc3RFbGxpcHNpcyhzZWxmKToKKyAgICBkZWYgdGVzdF9lbGxpcHNpcyhzZWxmKToKICAgICAgICAgeCA9IC4uLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoeCBpcyBFbGxpcHNpcykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIuLiAuIikKIAorICAgIGRlZiB0ZXN0X2VvZl9lcnJvcihzZWxmKToKKyAgICAgICAgc2FtcGxlcyA9ICgiZGVmIGZvbygiLCAiXG5kZWYgZm9vKCIsICJkZWYgZm9vKFxuIikKKyAgICAgICAgZm9yIHMgaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNvbXBpbGUocywgIjx0ZXN0PiIsICJleGVjIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVuZXhwZWN0ZWQgRU9GIiwgc3RyKGNtLmV4Y2VwdGlvbikpCisKIGNsYXNzIEdyYW1tYXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAjIHNpbmdsZV9pbnB1dDogTkVXTElORSB8IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdCBORVdMSU5FCkBAIC0xMzYsMTEgKzE0MywxMSBAQAogICAgICMgZXhwcl9pbnB1dDogdGVzdGxpc3QgTkVXTElORQogICAgICMgWFhYIEhhcmQgdG8gdGVzdCAtLSB1c2VkIG9ubHkgaW4gY2FsbHMgdG8gaW5wdXQoKQogCi0gICAgZGVmIHRlc3RFdmFsSW5wdXQoc2VsZik6CisgICAgZGVmIHRlc3RfZXZhbF9pbnB1dChzZWxmKToKICAgICAgICAgIyB0ZXN0bGlzdCBFTkRNQVJLRVIKICAgICAgICAgeCA9IGV2YWwoJzEsIDAgb3IgMScpCiAKLSAgICBkZWYgdGVzdEZ1bmNkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfZnVuY2RlZihzZWxmKToKICAgICAgICAgIyMjIFtkZWNvcmF0b3JzXSAnZGVmJyBOQU1FIHBhcmFtZXRlcnMgWyctPicgdGVzdF0gJzonIHN1aXRlCiAgICAgICAgICMjIyBkZWNvcmF0b3I6ICdAJyBkb3R0ZWRfbmFtZSBbICcoJyBbYXJnbGlzdF0gJyknIF0gTkVXTElORQogICAgICAgICAjIyMgZGVjb3JhdG9yczogZGVjb3JhdG9yKwpAQCAtMzI0LDcgKzMzMSw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCi0gICAgZGVmIHRlc3RMYW1iZGVmKHNlbGYpOgorICAgIGRlZiB0ZXN0X2xhbWJkZWYoc2VsZik6CiAgICAgICAgICMjIyBsYW1iZGVmOiAnbGFtYmRhJyBbdmFyYXJnc2xpc3RdICc6JyB0ZXN0CiAgICAgICAgIGwxID0gbGFtYmRhIDogMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwxKCksIDApCkBAIC0zNDYsNyArMzUzLDcgQEAKICAgICAjIyMgc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0U2ltcGxlU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9zaW1wbGVfc3RtdChzZWxmKToKICAgICAgICAgIyMjIHNpbXBsZV9zdG10OiBzbWFsbF9zdG10ICgnOycgc21hbGxfc3RtdCkqIFsnOyddCiAgICAgICAgIHggPSAxOyBwYXNzOyBkZWwgeAogICAgICAgICBkZWYgZm9vKCk6CkBAIC0zNTcsNyArMzY0LDcgQEAKICAgICAjIyMgc21hbGxfc3RtdDogZXhwcl9zdG10IHwgcGFzc19zdG10IHwgZGVsX3N0bXQgfCBmbG93X3N0bXQgfCBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgYWNjZXNzX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RFeHByU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9leHByX3N0bXQoc2VsZik6CiAgICAgICAgICMgKGV4cHJsaXN0ICc9JykqIGV4cHJsaXN0CiAgICAgICAgIDEKICAgICAgICAgMSwgMiwgMwpAQCAtMzcwLDcgKzM3Nyw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieCArIDEgPSAxIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJhICsgMSA9IGIgKyAyIikKIAotICAgIGRlZiB0ZXN0RGVsU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9kZWxfc3RtdChzZWxmKToKICAgICAgICAgIyAnZGVsJyBleHBybGlzdAogICAgICAgICBhYmMgPSBbMSwyLDNdCiAgICAgICAgIHgsIHksIHogPSBhYmMKQEAgLTM3OSwxOCArMzg2LDE4IEBACiAgICAgICAgIGRlbCBhYmMKICAgICAgICAgZGVsIHgsIHksICh6LCB4eXopCiAKLSAgICBkZWYgdGVzdFBhc3NTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Bhc3Nfc3RtdChzZWxmKToKICAgICAgICAgIyAncGFzcycKICAgICAgICAgcGFzcwogCiAgICAgIyBmbG93X3N0bXQ6IGJyZWFrX3N0bXQgfCBjb250aW51ZV9zdG10IHwgcmV0dXJuX3N0bXQgfCByYWlzZV9zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0QnJlYWtTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2JyZWFrX3N0bXQoc2VsZik6CiAgICAgICAgICMgJ2JyZWFrJwogICAgICAgICB3aGlsZSAxOiBicmVhawogCi0gICAgZGVmIHRlc3RDb250aW51ZVN0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfY29udGludWVfc3RtdChzZWxmKToKICAgICAgICAgIyAnY29udGludWUnCiAgICAgICAgIGkgPSAxCiAgICAgICAgIHdoaWxlIGk6IGkgPSAwOyBjb250aW51ZQpAQCAtNDQyLDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJjb250aW51ZSB0aGVuIGJyZWFrIGluIHRyeS9leGNlcHQgaW4gbG9vcCBicm9rZW4hIikKICAgICAgICAgdGVzdF9pbm5lcigpCiAKLSAgICBkZWYgdGVzdFJldHVybihzZWxmKToKKyAgICBkZWYgdGVzdF9yZXR1cm4oc2VsZik6CiAgICAgICAgICMgJ3JldHVybicgW3Rlc3RsaXN0XQogICAgICAgICBkZWYgZzEoKTogcmV0dXJuCiAgICAgICAgIGRlZiBnMigpOiByZXR1cm4gMQpAQCAtNDUwLDE3ICs0NTcsNDkgQEAKICAgICAgICAgeCA9IGcyKCkKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJjbGFzcyBmb286cmV0dXJuIDEiKQogCi0gICAgZGVmIHRlc3RZaWVsZChzZWxmKToKKyAgICBkZWYgdGVzdF95aWVsZChzZWxmKToKKyAgICAgICAgIyBBbGxvd2VkIGFzIHN0YW5kYWxvbmUgc3RhdGVtZW50CisgICAgICAgIGRlZiBnKCk6IHlpZWxkIDEKKyAgICAgICAgZGVmIGcoKTogeWllbGQgZnJvbSAoKQorICAgICAgICAjIEFsbG93ZWQgYXMgUkhTIG9mIGFzc2lnbm1lbnQKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIDEKKyAgICAgICAgZGVmIGcoKTogeCA9IHlpZWxkIGZyb20gKCkKKyAgICAgICAgIyBPcmRpbmFyeSB5aWVsZCBhY2NlcHRzIGltcGxpY2l0IHR1cGxlcworICAgICAgICBkZWYgZygpOiB5aWVsZCAxLCAxCisgICAgICAgIGRlZiBnKCk6IHggPSB5aWVsZCAxLCAxCisgICAgICAgICMgJ3lpZWxkIGZyb20nIGRvZXMgbm90CisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogeWllbGQgZnJvbSAoKSwgMSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogeCA9IHlpZWxkIGZyb20gKCksIDEiKQorICAgICAgICAjIFJlcXVpcmVzIHBhcmVudGhlc2VzIGFzIHN1YmV4cHJlc3Npb24KKyAgICAgICAgZGVmIGcoKTogMSwgKHlpZWxkIDEpCisgICAgICAgIGRlZiBnKCk6IDEsICh5aWVsZCBmcm9tICgpKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IDEsIHlpZWxkIDEiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKCk6IDEsIHlpZWxkIGZyb20gKCkiKQorICAgICAgICAjIFJlcXVpcmVzIHBhcmVudGhlc2VzIGFzIGNhbGwgYXJndW1lbnQKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgMSkpCisgICAgICAgIGRlZiBnKCk6IGYoKHlpZWxkIDEpLCAxKQorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCBmcm9tICgpKSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgZnJvbSAoKSksIDEpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCAxKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCAxLCAxKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCBmcm9tICgpKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCBmcm9tICgpLCAxKSIpCisgICAgICAgICMgTm90IGFsbG93ZWQgYXQgdG9wIGxldmVsCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieWllbGQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgInlpZWxkIGZyb20iKQorICAgICAgICAjIE5vdCBhbGxvd2VkIGF0IGNsYXNzIHNjb3BlCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIDEiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImNsYXNzIGZvbzp5aWVsZCBmcm9tICgpIikKIAotICAgIGRlZiB0ZXN0UmFpc2Uoc2VsZik6CisKKyAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKICAgICAgICAgIyAncmFpc2UnIHRlc3QgWycsJyB0ZXN0XQogICAgICAgICB0cnk6IHJhaXNlIFJ1bnRpbWVFcnJvcignanVzdCB0ZXN0aW5nJykKICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjogcGFzcwogICAgICAgICB0cnk6IHJhaXNlIEtleWJvYXJkSW50ZXJydXB0CiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDogcGFzcwogCi0gICAgZGVmIHRlc3RJbXBvcnQoc2VsZik6CisgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgogICAgICAgICAjICdpbXBvcnQnIGRvdHRlZF9hc19uYW1lcwogICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGltcG9ydCB0aW1lLCBzeXMKQEAgLTQ3MywxMyArNTEyLDEzIEBACiAgICAgICAgIGZyb20gc3lzIGltcG9ydCAocGF0aCwgYXJndikKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IChwYXRoLCBhcmd2LCkKIAotICAgIGRlZiB0ZXN0R2xvYmFsKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKICAgICAgICAgIyAnZ2xvYmFsJyBOQU1FICgnLCcgTkFNRSkqCiAgICAgICAgIGdsb2JhbCBhCiAgICAgICAgIGdsb2JhbCBhLCBiCiAgICAgICAgIGdsb2JhbCBvbmUsIHR3bywgdGhyZWUsIGZvdXIsIGZpdmUsIHNpeCwgc2V2ZW4sIGVpZ2h0LCBuaW5lLCB0ZW4KIAotICAgIGRlZiB0ZXN0Tm9ubG9jYWwoc2VsZik6CisgICAgZGVmIHRlc3Rfbm9ubG9jYWwoc2VsZik6CiAgICAgICAgICMgJ25vbmxvY2FsJyBOQU1FICgnLCcgTkFNRSkqCiAgICAgICAgIHggPSAwCiAgICAgICAgIHkgPSAwCkBAIC00ODcsNyArNTI2LDcgQEAKICAgICAgICAgICAgIG5vbmxvY2FsIHgKICAgICAgICAgICAgIG5vbmxvY2FsIHgsIHkKIAotICAgIGRlZiB0ZXN0QXNzZXJ0KHNlbGYpOgorICAgIGRlZiB0ZXN0X2Fzc2VydChzZWxmKToKICAgICAgICAgIyBhc3NlcnRUcnVlc3RtdDogJ2Fzc2VydCcgdGVzdCBbJywnIHRlc3RdCiAgICAgICAgIGFzc2VydCAxCiAgICAgICAgIGFzc2VydCAxLCAxCkBAIC01MjYsNyArNTY1LDcgQEAKICAgICAjIyMgY29tcG91bmRfc3RtdDogaWZfc3RtdCB8IHdoaWxlX3N0bXQgfCBmb3Jfc3RtdCB8IHRyeV9zdG10IHwgZnVuY2RlZiB8IGNsYXNzZGVmCiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0SWYoc2VsZik6CisgICAgZGVmIHRlc3RfaWYoc2VsZik6CiAgICAgICAgICMgJ2lmJyB0ZXN0ICc6JyBzdWl0ZSAoJ2VsaWYnIHRlc3QgJzonIHN1aXRlKSogWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgIGlmIDE6IHBhc3MKICAgICAgICAgaWYgMTogcGFzcwpAQCAtNTM5LDcgKzU3OCw3IEBACiAgICAgICAgIGVsaWYgMDogcGFzcwogICAgICAgICBlbHNlOiBwYXNzCiAKLSAgICBkZWYgdGVzdFdoaWxlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3doaWxlKHNlbGYpOgogICAgICAgICAjICd3aGlsZScgdGVzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgIHdoaWxlIDA6IHBhc3MKICAgICAgICAgd2hpbGUgMDogcGFzcwpAQCAtNTU0LDcgKzU5Myw3IEBACiAgICAgICAgICAgICB4ID0gMgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHgsIDIpCiAKLSAgICBkZWYgdGVzdEZvcihzZWxmKToKKyAgICBkZWYgdGVzdF9mb3Ioc2VsZik6CiAgICAgICAgICMgJ2ZvcicgZXhwcmxpc3QgJ2luJyBleHBybGlzdCAnOicgc3VpdGUgWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgIGZvciBpIGluIDEsIDIsIDM6IHBhc3MKICAgICAgICAgZm9yIGksIGosIGsgaW4gKCk6IHBhc3MKQEAgLTU4MSw3ICs2MjAsNyBAQAogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgWzEsIDIsIDNdKQogCi0gICAgZGVmIHRlc3RUcnkoc2VsZik6CisgICAgZGVmIHRlc3RfdHJ5KHNlbGYpOgogICAgICAgICAjIyMgdHJ5X3N0bXQ6ICd0cnknICc6JyBzdWl0ZSAoZXhjZXB0X2NsYXVzZSAnOicgc3VpdGUpKyBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgIyMjICAgICAgICAgfCAndHJ5JyAnOicgc3VpdGUgJ2ZpbmFsbHknICc6JyBzdWl0ZQogICAgICAgICAjIyMgZXhjZXB0X2NsYXVzZTogJ2V4Y2VwdCcgW2V4cHIgWydhcycgZXhwcl1dCkBAIC02MDQsNyArNjQzLDcgQEAKICAgICAgICAgdHJ5OiBwYXNzCiAgICAgICAgIGZpbmFsbHk6IHBhc3MKIAotICAgIGRlZiB0ZXN0U3VpdGUoc2VsZik6CisgICAgZGVmIHRlc3Rfc3VpdGUoc2VsZik6CiAgICAgICAgICMgc2ltcGxlX3N0bXQgfCBORVdMSU5FIElOREVOVCBORVdMSU5FKiAoc3RtdCBORVdMSU5FKikrIERFREVOVAogICAgICAgICBpZiAxOiBwYXNzCiAgICAgICAgIGlmIDE6CkBAIC02MTksNyArNjU4LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICMKIAotICAgIGRlZiB0ZXN0VGVzdChzZWxmKToKKyAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgogICAgICAgICAjIyMgYW5kX3Rlc3QgKCdvcicgYW5kX3Rlc3QpKgogICAgICAgICAjIyMgYW5kX3Rlc3Q6IG5vdF90ZXN0ICgnYW5kJyBub3RfdGVzdCkqCiAgICAgICAgICMjIyBub3RfdGVzdDogJ25vdCcgbm90X3Rlc3QgfCBjb21wYXJpc29uCkBAIC02MzAsNyArNjY5LDcgQEAKICAgICAgICAgaWYgbm90IDEgYW5kIDEgYW5kIDE6IHBhc3MKICAgICAgICAgaWYgMSBhbmQgMSBvciAxIGFuZCAxIGFuZCAxIG9yIG5vdCAxIGFuZCAxOiBwYXNzCiAKLSAgICBkZWYgdGVzdENvbXBhcmlzb24oc2VsZik6CisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKICAgICAgICAgIyMjIGNvbXBhcmlzb246IGV4cHIgKGNvbXBfb3AgZXhwcikqCiAgICAgICAgICMjIyBjb21wX29wOiAnPCd8Jz4nfCc9PSd8Jz49J3wnPD0nfCchPSd8J2luJ3wnbm90JyAnaW4nfCdpcyd8J2lzJyAnbm90JwogICAgICAgICBpZiAxOiBwYXNzCkBAIC02NDcsMzYgKzY4NiwzNiBAQAogICAgICAgICBpZiAxIG5vdCBpbiAoKTogcGFzcwogICAgICAgICBpZiAxIDwgMSA+IDEgPT0gMSA+PSAxIDw9IDEgIT0gMSBpbiAxIG5vdCBpbiAxIGlzIDEgaXMgbm90IDE6IHBhc3MKIAotICAgIGRlZiB0ZXN0QmluYXJ5TWFza09wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9iaW5hcnlfbWFza19vcHMoc2VsZik6CiAgICAgICAgIHggPSAxICYgMQogICAgICAgICB4ID0gMSBeIDEKICAgICAgICAgeCA9IDEgfCAxCiAKLSAgICBkZWYgdGVzdFNoaWZ0T3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NoaWZ0X29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgPDwgMQogICAgICAgICB4ID0gMSA+PiAxCiAgICAgICAgIHggPSAxIDw8IDEgPj4gMQogCi0gICAgZGVmIHRlc3RBZGRpdGl2ZU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9hZGRpdGl2ZV9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxCiAgICAgICAgIHggPSAxICsgMQogICAgICAgICB4ID0gMSAtIDEgLSAxCiAgICAgICAgIHggPSAxIC0gMSArIDEgLSAxICsgMQogCi0gICAgZGVmIHRlc3RNdWx0aXBsaWNhdGl2ZU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGl2ZV9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxICogMQogICAgICAgICB4ID0gMSAvIDEKICAgICAgICAgeCA9IDEgJSAxCiAgICAgICAgIHggPSAxIC8gMSAqIDEgJSAxCiAKLSAgICBkZWYgdGVzdFVuYXJ5T3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3VuYXJ5X29wcyhzZWxmKToKICAgICAgICAgeCA9ICsxCiAgICAgICAgIHggPSAtMQogICAgICAgICB4ID0gfjEKICAgICAgICAgeCA9IH4xIF4gMSAmIDEgfCAxICYgMSBeIC0xCiAgICAgICAgIHggPSAtMSoxLzEgKyAxKjEgLSAtLS0xKjEKIAotICAgIGRlZiB0ZXN0U2VsZWN0b3JzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NlbGVjdG9ycyhzZWxmKToKICAgICAgICAgIyMjIHRyYWlsZXI6ICcoJyBbdGVzdGxpc3RdICcpJyB8ICdbJyBzdWJzY3JpcHQgJ10nIHwgJy4nIE5BTUUKICAgICAgICAgIyMjIHN1YnNjcmlwdDogZXhwciB8IFtleHByXSAnOicgW2V4cHJdCiAKQEAgLTcwNiw3ICs3NDUsNyBAQAogICAgICAgICBMLnNvcnQoa2V5PWxhbWJkYSB4OiB4IGlmIGlzaW5zdGFuY2UoeCwgdHVwbGUpIGVsc2UgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEwpLCAnWzEsICgxLCksICgxLCAyKSwgKDEsIDIsIDMpXScpCiAKLSAgICBkZWYgdGVzdEF0b21zKHNlbGYpOgorICAgIGRlZiB0ZXN0X2F0b21zKHNlbGYpOgogICAgICAgICAjIyMgYXRvbTogJygnIFt0ZXN0bGlzdF0gJyknIHwgJ1snIFt0ZXN0bGlzdF0gJ10nIHwgJ3snIFtkaWN0c2V0bWFrZXJdICd9JyB8IE5BTUUgfCBOVU1CRVIgfCBTVFJJTkcKICAgICAgICAgIyMjIGRpY3RzZXRtYWtlcjogKHRlc3QgJzonIHRlc3QgKCcsJyB0ZXN0ICc6JyB0ZXN0KSogWycsJ10pIHwgKHRlc3QgKCcsJyB0ZXN0KSogWycsJ10pCiAKQEAgLTc0MSw3ICs3ODAsNyBAQAogICAgICMjIyB0ZXN0bGlzdDogdGVzdCAoJywnIHRlc3QpKiBbJywnXQogICAgICMgVGhlc2UgaGF2ZSBiZWVuIGV4ZXJjaXNlZCBlbm91Z2ggYWJvdmUKIAotICAgIGRlZiB0ZXN0Q2xhc3NkZWYoc2VsZik6CisgICAgZGVmIHRlc3RfY2xhc3NkZWYoc2VsZik6CiAgICAgICAgICMgJ2NsYXNzJyBOQU1FIFsnKCcgW3Rlc3RsaXN0XSAnKSddICc6JyBzdWl0ZQogICAgICAgICBjbGFzcyBCOiBwYXNzCiAgICAgICAgIGNsYXNzIEIyKCk6IHBhc3MKQEAgLTc2MCwxNCArNzk5LDE0IEBACiAgICAgICAgIEBjbGFzc19kZWNvcmF0b3IKICAgICAgICAgY2xhc3MgRzogcGFzcwogCi0gICAgZGVmIHRlc3REaWN0Y29tcHMoc2VsZik6CisgICAgZGVmIHRlc3RfZGljdGNvbXBzKHNlbGYpOgogICAgICAgICAjIGRpY3RvcnNldG1ha2VyOiAoICh0ZXN0ICc6JyB0ZXN0IChjb21wX2ZvciB8CiAgICAgICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnLCcgdGVzdCAnOicgdGVzdCkqIFsnLCddKSkgfAogICAgICAgICAjICAgICAgICAgICAgICAgICAgICh0ZXN0IChjb21wX2ZvciB8ICgnLCcgdGVzdCkqIFsnLCddKSkgKQogICAgICAgICBudW1zID0gWzEsIDIsIDNdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe2k6aSsxIGZvciBpIGluIG51bXN9LCB7MTogMiwgMjogMywgMzogNH0pCiAKLSAgICBkZWYgdGVzdExpc3Rjb21wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9saXN0Y29tcHMoc2VsZik6CiAgICAgICAgICMgbGlzdCBjb21wcmVoZW5zaW9uIHRlc3RzCiAgICAgICAgIG51bXMgPSBbMSwgMiwgMywgNCwgNV0KICAgICAgICAgc3RycyA9IFsiQXBwbGUiLCAiQmFuYW5hIiwgIkNvY29udXQiXQpAQCAtODMwLDcgKzg2OSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgWygnQm9laW5nJywgJ0FpcmxpbmVyJyksICgnQm9laW5nJywgJ0VuZ2luZScpLCAoJ0ZvcmQnLCAnRW5naW5lJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnTWFjZG9uYWxkcycsICdDaGVlc2VidXJnZXInKV0pCiAKLSAgICBkZWYgdGVzdEdlbmV4cHMoc2VsZik6CisgICAgZGVmIHRlc3RfZ2VuZXhwcyhzZWxmKToKICAgICAgICAgIyBnZW5lcmF0b3IgZXhwcmVzc2lvbiB0ZXN0cwogICAgICAgICBnID0gKFt4IGZvciB4IGluIHJhbmdlKDEwKV0gZm9yIHggaW4gcmFuZ2UoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnKSwgW3ggZm9yIHggaW4gcmFuZ2UoMTApXSkKQEAgLTg2NSw3ICs5MDQsNyBAQAogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImZvbyh4IGZvciB4IGluIHJhbmdlKDEwKSwgMTAwKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZm9vKDEwMCwgeCBmb3IgeCBpbiByYW5nZSgxMCkpIikKIAotICAgIGRlZiB0ZXN0Q29tcHJlaGVuc2lvblNwZWNpYWxzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbXByZWhlbnNpb25fc3BlY2lhbHMoc2VsZik6CiAgICAgICAgICMgdGVzdCBmb3Igb3V0bW9zdCBpdGVyYWJsZSBwcmVjb21wdXRhdGlvbgogICAgICAgICB4ID0gMTA7IGcgPSAoaSBmb3IgaSBpbiByYW5nZSh4KSk7IHggPSA1CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QoZykpLCAxMCkKQEAgLTkwNCw3ICs5NDMsNyBAQAogICAgICAgICB3aXRoIG1hbmFnZXIoKSBhcyB4LCBtYW5hZ2VyKCk6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgdGVzdElmRWxzZUV4cHIoc2VsZik6CisgICAgZGVmIHRlc3RfaWZfZWxzZV9leHByKHNlbGYpOgogICAgICAgICAjIFRlc3QgaWZlbHNlIGV4cHJlc3Npb25zIGluIHZhcmlvdXMgY2FzZXMKICAgICAgICAgZGVmIF9jaGVja2V2YWwobXNnLCByZXQpOgogICAgICAgICAgICAgImhlbHBlciB0byBjaGVjayB0aGF0IGV2YWx1YXRpb24gb2YgZXhwcmVzc2lvbnMgaXMgZG9uZSBjb3JyZWN0bHkiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKaW5kZXggY2VkMjI2Zi4uYWY3Mzk1MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQpAQCAtMzMsNyArMzMsNyBAQAogICAgICAgICByYWlzZSBpby5VbnN1cHBvcnRlZE9wZXJhdGlvbgogCiAKLWNsYXNzIFRlc3RHemlwKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00Myw2ICs0Myw3IEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKHNlbGYuZmlsZW5hbWUpCiAKIAorY2xhc3MgVGVzdEd6aXAoQmFzZVRlc3QpOgogICAgIGRlZiB0ZXN0X3dyaXRlKHNlbGYpOgogICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoZGF0YTEgKiA1MCkKQEAgLTY0LDYgKzY1LDIxIEBACiAgICAgICAgICAgICBkID0gZi5yZWFkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkYXRhMSo1MCkKIAorICAgIGRlZiB0ZXN0X3JlYWQxKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQorICAgICAgICBibG9ja3MgPSBbXQorICAgICAgICBucmVhZCA9IDAKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKHNlbGYuZmlsZW5hbWUsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgZCA9IGYucmVhZDEoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQoZCkKKyAgICAgICAgICAgICAgICBucmVhZCArPSBsZW4oZCkKKyAgICAgICAgICAgICAgICAjIENoZWNrIHRoYXQgcG9zaXRpb24gd2FzIHVwZGF0ZWQgY29ycmVjdGx5IChzZWUgaXNzdWUxMDc5MSkuCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnRlbGwoKSwgbnJlYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYicnLmpvaW4oYmxvY2tzKSwgZGF0YTEgKiA1MCkKKwogICAgIGRlZiB0ZXN0X2lvX29uX2Nsb3NlZF9vYmplY3Qoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0IEkvTyBvcGVyYXRpb25zIG9uIGNsb3NlZCBHemlwRmlsZSBvYmplY3RzIHJhaXNlIGEKICAgICAgICAgIyBWYWx1ZUVycm9yLCBqdXN0IGxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgZnVuY3Rpb25zIG9uIGZpbGUgb2JqZWN0cy4KQEAgLTEwMCwxNCArMTE2LDE0IEBACiAgICAgICAgICMgQnVnICMxMDc0MjYxIHdhcyB0cmlnZ2VyZWQgd2hlbiByZWFkaW5nIGEgZmlsZSB0aGF0IGNvbnRhaW5lZAogICAgICAgICAjIG1hbnksIG1hbnkgbWVtYmVycy4gIENyZWF0ZSBzdWNoIGEgZmlsZSBhbmQgdmVyaWZ5IHRoYXQgcmVhZGluZyBpdAogICAgICAgICAjIHdvcmtzLgotICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAnd2InLCA5KSBhcyBmOgorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3diJywgOSkgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoYidhJykKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMjAwKToKLSAgICAgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhYiIsIDkpIGFzIGY6ICMgYXBwZW5kCisgICAgICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgImFiIiwgOSkgYXMgZjogIyBhcHBlbmQKICAgICAgICAgICAgICAgICBmLndyaXRlKGInYScpCiAKICAgICAgICAgIyBUcnkgcmVhZGluZyB0aGUgZmlsZQotICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyB6Z2ZpbGU6CisgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyB6Z2ZpbGU6CiAgICAgICAgICAgICBjb250ZW50cyA9IGIiIgogICAgICAgICAgICAgd2hpbGUgMToKICAgICAgICAgICAgICAgICB6dHh0ID0gemdmaWxlLnJlYWQoODE5MikKQEAgLTEyNCw3ICsxNDAsNyBAQAogICAgICAgICAgICAgd2l0aCBpby5CdWZmZXJlZFJlYWRlcihmKSBhcyByOgogICAgICAgICAgICAgICAgIGxpbmVzID0gW2xpbmUgZm9yIGxpbmUgaW4gcl0KIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCA1MCAqIGRhdGExLnNwbGl0bGluZXMoVHJ1ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXMsIDUwICogZGF0YTEuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKSkKIAogICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgogICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQpAQCAtMzIzLDYgKzMzOSwxNCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMTAwKSwgYicnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucmVhZCwgbGVuKHVuY29tcHJlc3NlZCkpCiAKKyAgICBkZWYgdGVzdF90ZXh0aW9fcmVhZGxpbmVzKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMDc5MTogVGV4dElPV3JhcHBlci5yZWFkbGluZXMoKSBmYWlscyB3aGVuIHdyYXBwaW5nIEd6aXBGaWxlLgorICAgICAgICBsaW5lcyA9IChkYXRhMSAqIDUwKS5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICBzZWxmLnRlc3Rfd3JpdGUoKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoc2VsZi5maWxlbmFtZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgd2l0aCBpby5UZXh0SU9XcmFwcGVyKGYsIGVuY29kaW5nPSJhc2NpaSIpIGFzIHQ6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnJlYWRsaW5lcygpLCBsaW5lcykKKwogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfZnJvbV9mZG9wZW4oc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzEzNzgxOiBPcGVuaW5nIGEgR3ppcEZpbGUgZm9yIHdyaXRpbmcgZmFpbHMgd2hlbiB1c2luZyBhCiAgICAgICAgICMgZmlsZW9iaiBjcmVhdGVkIHdpdGggb3MuZmRvcGVuKCkuCkBAIC0zNjUsOCArMzg5LDEwOSBAQAogICAgICAgICAgICAgZGF0YWMgPSBnemlwLmNvbXByZXNzKGRhdGEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGd6aXAuZGVjb21wcmVzcyhkYXRhYyksIGRhdGEpCiAKKworY2xhc3MgVGVzdE9wZW4oQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2JpbmFyeV9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MAorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQgKiAyKQorCisgICAgZGVmIHRlc3RfaW1wbGljaXRfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wbGljaXQgYmluYXJ5IG1vZGVzIChubyAiYiIgb3IgInQiIGluIG1vZGUgc3RyaW5nKS4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEgKiA1MAorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAiciIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGd6aXAuZGVjb21wcmVzcyhmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWQgKiAyKQorCisgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gZGF0YTEuZGVjb2RlKCJhc2NpaSIpICogNTAKKyAgICAgICAgdW5jb21wcmVzc2VkX3JhdyA9IHVuY29tcHJlc3NlZC5yZXBsYWNlKCJcbiIsIG9zLmxpbmVzZXApCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3dCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCB1bmNvbXByZXNzZWQpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJhdCIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW9iaihzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkX2J5dGVzID0gZGF0YTEgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfc3RyID0gdW5jb21wcmVzc2VkX2J5dGVzLmRlY29kZSgiYXNjaWkiKQorICAgICAgICBjb21wcmVzc2VkID0gZ3ppcC5jb21wcmVzcyh1bmNvbXByZXNzZWRfYnl0ZXMpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGlvLkJ5dGVzSU8oY29tcHJlc3NlZCksICJyIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZF9ieXRlcykKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oaW8uQnl0ZXNJTyhjb21wcmVzc2VkKSwgInJ0IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZF9zdHIpCisKKyAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgorICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBnemlwLm9wZW4oMTIzLjQ1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid2J0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIsIGVycm9ycz0iaWdub3JlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicmIiLCBuZXdsaW5lPSJcbiIpCisKKyAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG5vbi1kZWZhdWx0IGVuY29kaW5nLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB1bmNvbXByZXNzZWRfcmF3ID0gdW5jb21wcmVzc2VkLnJlcGxhY2UoIlxuIiwgb3MubGluZXNlcCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInd0IiwgZW5jb2Rpbmc9InV0Zi0xNiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBmaWxlX2RhdGEgPSBnemlwLmRlY29tcHJlc3MoZi5yZWFkKCkpLmRlY29kZSgidXRmLTE2IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9kYXRhLCB1bmNvbXByZXNzZWRfcmF3KQorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAicnQiLCBlbmNvZGluZz0idXRmLTE2IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRoIG5vbi1kZWZhdWx0IGVuY29kaW5nIGVycm9yIGhhbmRsZXIuCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIiZm9vXHhmZmJhciIpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKHNlbGYuZmlsZW5hbWUsICJydCIsIGVuY29kaW5nPSJhc2NpaSIsIGVycm9ycz0iaWdub3JlIikgXAorICAgICAgICAgICAgICAgIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZm9vYmFyIikKKworICAgIGRlZiB0ZXN0X25ld2xpbmUoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRoIGV4cGxpY2l0IG5ld2xpbmUgKHVuaXZlcnNhbCBuZXdsaW5lIG1vZGUgZGlzYWJsZWQpLgorICAgICAgICB1bmNvbXByZXNzZWQgPSBkYXRhMS5kZWNvZGUoImFzY2lpIikgKiA1MAorICAgICAgICB3aXRoIGd6aXAub3BlbihzZWxmLmZpbGVuYW1lLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHVuY29tcHJlc3NlZCkKKyAgICAgICAgd2l0aCBnemlwLm9wZW4oc2VsZi5maWxlbmFtZSwgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbdW5jb21wcmVzc2VkXSkKKwogZGVmIHRlc3RfbWFpbih2ZXJib3NlPU5vbmUpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RHemlwKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RHemlwLCBUZXN0T3BlbikKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4odmVyYm9zZT1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNoLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNoLnB5CmluZGV4IGMwZGQzNGQuLjA3NzY3NzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2gucHkKQEAgLTExMyw4ICsxMTMsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5zZXFbaW5kZXhdCiAKIGNsYXNzIEhhc2hCdWlsdGluc1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBoYXNoZXNfdG9fY2hlY2sgPSBbcmFuZ2UoMTApLAotICAgICAgICAgICAgICAgICAgICAgICBlbnVtZXJhdGUocmFuZ2UoMTApKSwKKyAgICBoYXNoZXNfdG9fY2hlY2sgPSBbZW51bWVyYXRlKHJhbmdlKDEwKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIoRGVmYXVsdEl0ZXJTZXEoKSksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXIobGFtYmRhOiAwLCAwKSwKICAgICAgICAgICAgICAgICAgICAgICBdCkBAIC0xNjAsOCArMTU5LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGtub3duX2hhc2hfb2Zfb2JqID0gLTE2MDA5MjU1MzMKIAotICAgICAgICAjIFJhbmRvbWl6YXRpb24gaXMgZGlzYWJsZWQgYnkgZGVmYXVsdDoKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKKyAgICAgICAgIyBSYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdDoKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8pLCBrbm93bl9oYXNoX29mX29iaikKIAogICAgICAgICAjIEl0IGNhbiBhbHNvIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIHNlZWQgdG8gMDoKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldF9oYXNoKHNlbGYucmVwcl8sIHNlZWQ9MCksIGtub3duX2hhc2hfb2Zfb2JqKQpAQCAtMTkzLDYgKzE5MiwxMiBAQAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGIiIiksIDApCiAKK2NsYXNzIE1lbW9yeXZpZXdIYXNoUmFuZG9taXphdGlvblRlc3RzKFN0cmluZ2xpa2VIYXNoUmFuZG9taXphdGlvblRlc3RzKToKKyAgICByZXByXyA9ICJtZW1vcnl2aWV3KGInYWJjJykiCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtZW1vcnl2aWV3KGIiIikpLCAwKQorCiBjbGFzcyBEYXRldGltZVRlc3RzKEhhc2hSYW5kb21pemF0aW9uVGVzdHMpOgogICAgIGRlZiBnZXRfaGFzaF9jb21tYW5kKHNlbGYsIHJlcHJfKToKICAgICAgICAgcmV0dXJuICdpbXBvcnQgZGF0ZXRpbWU7IHByaW50KGhhc2goJXMpKScgJSByZXByXwpAQCAtMjEzLDYgKzIxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaEJ1aWx0aW5zVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgU3RySGFzaFJhbmRvbWl6YXRpb25UZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlc0hhc2hSYW5kb21pemF0aW9uVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5dmlld0hhc2hSYW5kb21pemF0aW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVEYXRlVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZXRpbWVEYXRldGltZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgIERhdGV0aW1lVGltZVRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IDI5ZDNhMWMuLjMyZjg1ZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgYXJyYXkKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgb3MKIGltcG9ydCBzeXMKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0zNyw3ICszOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEyMjQnLCAnU0hBMjI0JywgJ3NoYTI1NicsICdTSEEyNTYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJyApCiAKLSAgICBfd2Fybl9vbl9leHRlbnNpb25faW1wb3J0ID0gQ09NUElMRURfV0lUSF9QWURFQlVHCisgICAgIyBJc3N1ZSAjMTQ2OTM6IGZhbGxiYWNrIG1vZHVsZXMgYXJlIGFsd2F5cyBjb21waWxlZCB1bmRlciBQT1NJWAorICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBvcy5uYW1lID09ICdwb3NpeCcgb3IgQ09NUElMRURfV0lUSF9QWURFQlVHCiAKICAgICBkZWYgX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoc2VsZiwgbW9kdWxlX25hbWUpOgogICAgICAgICAiIiJJbXBvcnQgYSBtb2R1bGUgYW5kIHJldHVybiBhIHJlZmVyZW5jZSB0byBpdCBvciBOb25lIG9uIGZhaWx1cmUuIiIiCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2htYWMucHkgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKaW5kZXggNGRlMDYyMC4uNGNhN2NlYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQpAQCAtMjM0LDYgKzIzNCwxOCBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlN0YW5kYXJkIGNvbnN0cnVjdG9yIGNhbGwgcmFpc2VkIGV4Y2VwdGlvbi4iKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zdHJfa2V5KHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBrZXkgb2YgdHlwZSBzdHIsIHdoaWNoIGlzIGFuIGVycm9yLCBiZWNhdXNlIGl0IGV4cGVjdHMgYSBrZXkKKyAgICAgICAgIyBvZiB0eXBlIGJ5dGVzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGggPSBobWFjLkhNQUMoImtleSIpCisKKyAgICBkZWYgdGVzdF9kb3RfbmV3X3dpdGhfc3RyX2tleShzZWxmKToKKyAgICAgICAgIyBQYXNzIGEga2V5IG9mIHR5cGUgc3RyLCB3aGljaCBpcyBhbiBlcnJvciwgYmVjYXVzZSBpdCBleHBlY3RzIGEga2V5CisgICAgICAgICMgb2YgdHlwZSBieXRlcworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoID0gaG1hYy5uZXcoImtleSIpCisKICAgICBkZWYgdGVzdF93aXRodGV4dChzZWxmKToKICAgICAgICAgIyBDb25zdHJ1Y3RvciBjYWxsIHdpdGggdGV4dC4KICAgICAgICAgdHJ5OgpAQCAtMzAyLDEyICszMTQsMTIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaDEuaGV4ZGlnZXN0KCksIGgyLmhleGRpZ2VzdCgpLAogICAgICAgICAgICAgIkhleGRpZ2VzdCBvZiBjb3B5IGRvZXNuJ3QgbWF0Y2ggb3JpZ2luYWwgaGV4ZGlnZXN0LiIpCiAKK2NsYXNzIENvbXBhcmVEaWdlc3RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jb21wYXJlX2RpZ2VzdChzZWxmKToKKyAgICAgICAgIyBUZXN0aW5nIGlucHV0IHR5cGUgZXhjZXB0aW9uIGhhbmRsaW5nCisgICAgICAgIGEsIGIgPSAxMDAsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAxMDAsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIDIwMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSAiZm9vYmFyIiwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaG1hYy5jb21wYXJlX2RpZ2VzdCwgYSwgYikKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBkaWZmZXJlbnQgbGVuZ3RocworICAgICAgICBhLCBiID0gYiJmb29iYXIiLCBiImZvbyIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gYiJceGRlXHhhZFx4YmVceGVmIiwgYiJceGRlXHhhZCIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGIiZm9vYmFyIiwgYiJmb29iYXoiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IGIiXHhkZVx4YWRceGJlXHhlZiIsIGIiXHhhYlx4YWRceDFkXHhlYSIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlcyBvZiBzYW1lIGxlbmd0aHMsIHNhbWUgdmFsdWVzCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IGIiXHhkZVx4YWRceGJlXHhlZiIsIGIiXHhkZVx4YWRceGJlXHhlZiIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2Ygc2FtZSBsZW5ndGhzLCBzYW1lIHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGJ5dGVhcnJheShiImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlYXJyYXlzIG9mIGRpZmZlZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBieXRlYXJyYXkoYiJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVhcnJheXMgb2Ygc2FtZSBsZW5ndGhzLCBkaWZmZXJlbnQgdmFsdWVzCisgICAgICAgIGEsIGIgPSBieXRlYXJyYXkoYiJmb29iYXIiKSwgYnl0ZWFycmF5KGIiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisgICAgICAgICMgVGVzdGluZyBieXRlIGFuZCBieXRlYXJyYXkgb2Ygc2FtZSBsZW5ndGhzLCBzYW1lIHZhbHVlcworICAgICAgICBhLCBiID0gYnl0ZWFycmF5KGIiZm9vYmFyIiksIGIiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhtYWMuY29tcGFyZV9kaWdlc3QoYiwgYSkpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYnl0ZWFycmF5IG9mIGRpZmZlZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBiImZvbyIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYiwgYSkpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGUgYW5kIGJ5dGVhcnJheSBvZiBzYW1lIGxlbmd0aHMsIGRpZmZlcmVudCB2YWx1ZXMKKyAgICAgICAgYSwgYiA9IGJ5dGVhcnJheShiImZvb2JhciIpLCBiImZvb2JheiIKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYiwgYSkpCisKKyAgICAgICAgIyBUZXN0aW5nIHN0ciBvZiBzYW1lIGxlbmd0aHMKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3Rpbmcgc3RyIG9mIGRpZmZlZW50IGxlbmd0aHMKKyAgICAgICAgYSwgYiA9ICJmb28iLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhtYWMuY29tcGFyZV9kaWdlc3QoYSwgYikpCisKKyAgICAgICAgIyBUZXN0aW5nIGJ5dGVzIG9mIHNhbWUgbGVuZ3RocywgZGlmZmVyZW50IHZhbHVlcworICAgICAgICBhLCBiID0gImZvb2JhciIsICJmb29iYXoiCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICAjIFRlc3RpbmcgZXJyb3IgY2FzZXMKKyAgICAgICAgYSwgYiA9ICJmb29iYXIiLCBiImZvb2JhciIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gYiJmb29iYXIiLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisgICAgICAgIGEsIGIgPSBiImZvb2JhciIsIDEKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gMTAwLCAyMDAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBobWFjLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBhLCBiID0gImZvb8OkIiwgImZvb8OkIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGhtYWMuY29tcGFyZV9kaWdlc3QsIGEsIGIpCisKKyAgICAgICAgIyBzdWJjbGFzc2VzIGFyZSBzdXBwb3J0ZWQgYnkgaWdub3JlIF9fZXFfXworICAgICAgICBjbGFzcyBteXN0cihzdHIpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgYSwgYiA9IG15c3RyKCJmb29iYXIiKSwgbXlzdHIoImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlzdHIoImZvb2JhciIpLCAiZm9vYmFyIgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IG15c3RyKCJmb29iYXIiKSwgbXlzdHIoImZvb2JheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKworICAgICAgICBjbGFzcyBteWJ5dGVzKGJ5dGVzKToKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGEsIGIgPSBteWJ5dGVzKGIiZm9vYmFyIiksIG15Ynl0ZXMoYiJmb29iYXIiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaG1hYy5jb21wYXJlX2RpZ2VzdChhLCBiKSkKKyAgICAgICAgYSwgYiA9IG15Ynl0ZXMoYiJmb29iYXIiKSwgYiJmb29iYXIiCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICBhLCBiID0gbXlieXRlcyhiImZvb2JhciIpLCBteWJ5dGVzKGIiZm9vYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShobWFjLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFZlY3RvcnNUZXN0Q2FzZSwKICAgICAgICAgQ29uc3RydWN0b3JUZXN0Q2FzZSwKICAgICAgICAgU2FuaXR5VGVzdENhc2UsCi0gICAgICAgIENvcHlUZXN0Q2FzZQorICAgICAgICBDb3B5VGVzdENhc2UsCisgICAgICAgIENvbXBhcmVEaWdlc3RUZXN0Q2FzZQogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQppbmRleCBjNGY4MGNjLi5jNWQ4NzhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CkBAIC0xMDIsNyArMTAyLDggQEAKIGNsYXNzIEhUTUxQYXJzZXJTdHJpY3RUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgogCiAgICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgorICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc2luZ19pbnN0cnVjdGlvbl9vbmx5KHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soIjw/cHJvY2Vzc2luZyBpbnN0cnVjdGlvbj4iLCBbCkBAIC00NTUsNyArNDU2LDcgQEAKICAgICAgICAgc2VsZi5fcnVuX2NoZWNrKCc8Zm9ybSBhY3Rpb249Ii94eHgucGhwP2E9MSZhbXA7Yj0yJmFtcCIsICcKICAgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2Q9InBvc3QiPicsIFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3N0YXJ0dGFnJywgJ2Zvcm0nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhY3Rpb24nLCAnL3h4eC5waHA/YT0xJmI9MiZhbXAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYWN0aW9uJywgJy94eHgucGhwP2E9MSZiPTImJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJywnLCBOb25lKSwgKCdtZXRob2QnLCAncG9zdCcpXSldKQogCiAgICAgZGVmIHRlc3Rfd2VpcmRfY2hhcnNfaW5fdW5xdW90ZWRfYXR0cmlidXRlX3ZhbHVlcyhzZWxmKToKQEAgLTU0MCw2ICs1NDEsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmIzAwMzg7JyksJyYnKQogICAgICAgICAjIHNlZSAjMTI4ODgKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnVuZXNjYXBlKCcmIzEyMzsgJyAqIDEwNTApLCAneyAnICogMTA1MCkKKyAgICAgICAgIyBzZWUgIzE1MTU2CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC51bmVzY2FwZSgnJkVhY3V0ZXJpYyZFYWN1dGU7cmljJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyZhbHBoYWNlbnRhdXJpJmFscGhhO2NlbnRhdXJpJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnw4lyaWPDiXJpYyZhbHBoYWNlbnRhdXJpzrFjZW50YXVyaScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC51bmVzY2FwZSgnJmNvOycpLCAnJmNvOycpCiAKICAgICBkZWYgdGVzdF9icm9rZW5fY29tbWVudHMoc2VsZik6CiAgICAgICAgIGh0bWwgPSAoJzwhIG5vdCByZWFsbHkgYSBjb21tZW50ID4nCkBAIC01OTQsNyArNjAwLDggQEAKIGNsYXNzIEF0dHJpYnV0ZXNTdHJpY3RUZXN0Q2FzZShUZXN0Q2FzZUJhc2UpOgogCiAgICAgZGVmIGdldF9jb2xsZWN0b3Ioc2VsZik6Ci0gICAgICAgIHJldHVybiBFdmVudENvbGxlY3RvcihzdHJpY3Q9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpdGU9RmFsc2UpOgorICAgICAgICAgICAgcmV0dXJuIEV2ZW50Q29sbGVjdG9yKHN0cmljdD1UcnVlKQogCiAgICAgZGVmIHRlc3RfYXR0cl9zeW50YXgoc2VsZik6CiAgICAgICAgIG91dHB1dCA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CmluZGV4IDQxZTBkZmQuLmEzNWVjOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQpAQCAtMjQ4LDE4ICsyNDgsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLl9jb29raWVzWyJ3d3cuYWNtZS5jb20iXVsiLyJdWyJib28iXS52YWx1ZSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X2JhZF9tYWdpYyhzZWxmKToKLSAgICAgICAgIyBJT0Vycm9ycyAoZWcuIGZpbGUgZG9lc24ndCBleGlzdCkgYXJlIGFsbG93ZWQgdG8gcHJvcGFnYXRlCisgICAgICAgICMgT1NFcnJvcnMgKGVnLiBmaWxlIGRvZXNuJ3QgZXhpc3QpIGFyZSBhbGxvd2VkIHRvIHByb3BhZ2F0ZQogICAgICAgICBmaWxlbmFtZSA9IHRlc3Quc3VwcG9ydC5URVNURk4KICAgICAgICAgZm9yIGNvb2tpZWphcl9jbGFzcyBpbiBMV1BDb29raWVKYXIsIE1vemlsbGFDb29raWVKYXI6CiAgICAgICAgICAgICBjID0gY29va2llamFyX2NsYXNzKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBjLmxvYWQoZmlsZW5hbWU9ImZvciB0aGlzIHRlc3QgdG8gd29yaywgYSBmaWxlIHdpdGggdGhpcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlbmFtZSBzaG91bGQgbm90IGV4aXN0IikKLSAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICAjIGV4YWN0bHkgSU9FcnJvciwgbm90IExvYWRFcnJvcgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXhjLl9fY2xhc3NfXywgSU9FcnJvcikKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAjIGFuIE9TRXJyb3Igc3ViY2xhc3MgKGxpa2VseSBGaWxlTm90Rm91bmRFcnJvciksIGJ1dCBub3QKKyAgICAgICAgICAgICAgICAjIExvYWRFcnJvcgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoZXhjLl9fY2xhc3NfXywgTG9hZEVycm9yKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIElPRXJyb3IgZm9yIGludmFsaWQgZmlsZW5hbWUiKQorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgT1NFcnJvciBmb3IgaW52YWxpZCBmaWxlbmFtZSIpCiAgICAgICAgICMgSW52YWxpZCBjb250ZW50cyBvZiBjb29raWVzIGZpbGUgKGVnLiBiYWQgbWFnaWMgc3RyaW5nKQogICAgICAgICAjIGNhdXNlcyBhIExvYWRFcnJvci4KICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZXMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQppbmRleCAxZjFjYTU4Li5lODMyN2U1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llcy5weQpAQCAtMzQsNiArMzQsMTUgQEAKICAgICAgICAgICAgICAnZGljdCc6IHsna2VlYmxlcicgOiAnRT1tYzInfSwKICAgICAgICAgICAgICAncmVwcic6ICI8U2ltcGxlQ29va2llOiBrZWVibGVyPSdFPW1jMic+IiwKICAgICAgICAgICAgICAnb3V0cHV0JzogJ1NldC1Db29raWU6IGtlZWJsZXI9RT1tYzInfSwKKworICAgICAgICAgICAgIyBDb29raWVzIHdpdGggJzonIGNoYXJhY3RlciBpbiB0aGVpciBuYW1lLiBUaG91Z2ggbm90IG1lbnRpb25lZCBpbgorICAgICAgICAgICAgIyBSRkMsIHNlcnZlcnMgLyBicm93c2VycyBhbGxvdyBpdC4KKworICAgICAgICAgICAgIHsnZGF0YSc6ICdrZXk6dGVybT12YWx1ZTp0ZXJtJywKKyAgICAgICAgICAgICAnZGljdCc6IHsna2V5OnRlcm0nIDogJ3ZhbHVlOnRlcm0nfSwKKyAgICAgICAgICAgICAncmVwcic6ICI8U2ltcGxlQ29va2llOiBrZXk6dGVybT0ndmFsdWU6dGVybSc+IiwKKyAgICAgICAgICAgICAnb3V0cHV0JzogJ1NldC1Db29raWU6IGtleTp0ZXJtPXZhbHVlOnRlcm0nfSwKKwogICAgICAgICBdCiAKICAgICAgICAgZm9yIGNhc2UgaW4gY2FzZXM6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKaW5kZXggMjRjNzJmZi4uY2Y2MTU1MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQpAQCAtMTg2LDYgKzE4NiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgyKSwgYid4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3JlYWRpbnRvcyhzZWxmKToKKyAgICAgICAgIyBpZiB3ZSBoYXZlIGEgbGVuZ2h0LCB0aGUgc3lzdGVtIGtub3dzIHdoZW4gdG8gY2xvc2UgaXRzZWxmCisgICAgICAgICMgc2FtZSBiZWhhdmlvdXIgdGhhbiB3aGVuIHdlIHJlYWQgdGhlIHdob2xlIHRoaW5nIHdpdGggcmVhZCgpCisgICAgICAgIGJvZHkgPSAiSFRUUC8xLjEgMjAwIE9rXHJcbkNvbnRlbnQtTGVuZ3RoOiA0XHJcblxyXG5UZXh0IgorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChib2R5KQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrKQorICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgYiA9IGJ5dGVhcnJheSgyKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYiksIGInVGUnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3AuaXNjbG9zZWQoKSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ3h0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKKwogICAgIGRlZiB0ZXN0X2hvc3RfcG9ydChzZWxmKToKICAgICAgICAgIyBDaGVjayBpbnZhbGlkIGhvc3RfcG9ydAogCkBAIC0yMzQsNiArMjUxLDIxIEBACiAgICAgICAgIGlmIHJlc3AucmVhZCgpOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJEaWQgbm90IGV4cGVjdCByZXNwb25zZSBmcm9tIEhFQUQgcmVxdWVzdCIpCiAKKyAgICBkZWYgdGVzdF9yZWFkaW50b19oZWFkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUgbGlicmFyeSBkb2Vzbid0IGF0dGVtcHQgdG8gcmVhZCBhbnkgZGF0YQorICAgICAgICAjIGZyb20gYSBIRUFEIHJlcXVlc3QuICAoVGlja2xlcyBTRiBidWcgIzYyMjA0Mi4pCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KAorICAgICAgICAgICAgJ0hUVFAvMS4xIDIwMCBPS1xyXG4nCisgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDE0NDMyXHJcbicKKyAgICAgICAgICAgICdcclxuJywKKyAgICAgICAgICAgIE5vRU9GU3RyaW5nSU8pCisgICAgICAgIHJlc3AgPSBjbGllbnQuSFRUUFJlc3BvbnNlKHNvY2ssIG1ldGhvZD0iSEVBRCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBiID0gYnl0ZWFycmF5KDUpCisgICAgICAgIGlmIHJlc3AucmVhZGludG8oYikgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiRGlkIG5vdCBleHBlY3QgcmVzcG9uc2UgZnJvbSBIRUFEIHJlcXVlc3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ1x4MDAnKjUpCisKICAgICBkZWYgdGVzdF9zZW5kX2ZpbGUoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkID0gKGInR0VUIC9mb28gSFRUUC8xLjFcclxuSG9zdDogZXhhbXBsZS5jb21cclxuJwogICAgICAgICAgICAgICAgICAgICBiJ0FjY2VwdC1FbmNvZGluZzogaWRlbnRpdHlcclxuQ29udGVudC1MZW5ndGg6JykKQEAgLTI4OSwxNSArMzIxLDI4IEBACiAgICAgICAgICAgICAnVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRcclxuXHJcbicKICAgICAgICAgICAgICdhXHJcbicKICAgICAgICAgICAgICdoZWxsbyB3b3JsXHJcbicKLSAgICAgICAgICAgICcxXHJcbicKLSAgICAgICAgICAgICdkXHJcbicKKyAgICAgICAgICAgICczXHJcbicKKyAgICAgICAgICAgICdkISBcclxuJworICAgICAgICAgICAgJzhcclxuJworICAgICAgICAgICAgJ2FuZCBub3cgXHJcbicKKyAgICAgICAgICAgICcyMlxyXG4nCisgICAgICAgICAgICAnZm9yIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudFxyXG4nCiAgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSBiJ2hlbGxvIHdvcmxkISBhbmQgbm93IGZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnQnCiAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQogICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCiAgICAgICAgIHJlc3AuYmVnaW4oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBiJ2hlbGxvIHdvcmxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgZXhwZWN0ZWQpCiAgICAgICAgIHJlc3AuY2xvc2UoKQogCisgICAgICAgICMgVmFyaW91cyByZWFkIHNpemVzCisgICAgICAgIGZvciBuIGluIHJhbmdlKDEsIDEyKToKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZChuKSArIHJlc3AucmVhZChuKSArIHJlc3AucmVhZCgpLCBleHBlY3RlZCkKKyAgICAgICAgICAgIHJlc3AuY2xvc2UoKQorCiAgICAgICAgIGZvciB4IGluICgnJywgJ2Zvb1xyXG4nKToKICAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyB4KQogICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQpAQCAtMzA1LDkgKzM1MCw2NCBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3AucmVhZCgpCiAgICAgICAgICAgICBleGNlcHQgY2xpZW50LkluY29tcGxldGVSZWFkIGFzIGk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLnBhcnRpYWwsIGInaGVsbG8gd29ybGQnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihpKSwnSW5jb21wbGV0ZVJlYWQoMTEgYnl0ZXMgcmVhZCknKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCdJbmNvbXBsZXRlUmVhZCgxMSBieXRlcyByZWFkKScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpLnBhcnRpYWwsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAnSW5jb21wbGV0ZVJlYWQoJWQgYnl0ZXMgcmVhZCknICUgbGVuKGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihpKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdJbmNvbXBsZXRlUmVhZCBleHBlY3RlZCcpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfcmVhZGludG9fY2h1bmtlZChzZWxmKToKKyAgICAgICAgY2h1bmtlZF9zdGFydCA9ICgKKyAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuJworICAgICAgICAgICAgJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcblxyXG4nCisgICAgICAgICAgICAnYVxyXG4nCisgICAgICAgICAgICAnaGVsbG8gd29ybFxyXG4nCisgICAgICAgICAgICAnM1xyXG4nCisgICAgICAgICAgICAnZCEgXHJcbicKKyAgICAgICAgICAgICc4XHJcbicKKyAgICAgICAgICAgICdhbmQgbm93IFxyXG4nCisgICAgICAgICAgICAnMjJcclxuJworICAgICAgICAgICAgJ2ZvciBzb21ldGhpbmcgY29tcGxldGVseSBkaWZmZXJlbnRcclxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gYidoZWxsbyB3b3JsZCEgYW5kIG5vdyBmb3Igc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50JworICAgICAgICBuZXhwZWN0ZWQgPSBsZW4oZXhwZWN0ZWQpCisgICAgICAgIGIgPSBieXRlYXJyYXkoMTI4KQorCisgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyAnMFxyXG4nKQorICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgIHJlc3AuYmVnaW4oKQorICAgICAgICBuID0gcmVzcC5yZWFkaW50byhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJbOm5leHBlY3RlZF0sIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIG5leHBlY3RlZCkKKyAgICAgICAgcmVzcC5jbG9zZSgpCisKKyAgICAgICAgIyBWYXJpb3VzIHJlYWQgc2l6ZXMKKyAgICAgICAgZm9yIG4gaW4gcmFuZ2UoMSwgMTIpOgorICAgICAgICAgICAgc29jayA9IEZha2VTb2NrZXQoY2h1bmtlZF9zdGFydCArICcwXHJcbicpCisgICAgICAgICAgICByZXNwID0gY2xpZW50LkhUVFBSZXNwb25zZShzb2NrLCBtZXRob2Q9IkdFVCIpCisgICAgICAgICAgICByZXNwLmJlZ2luKCkKKyAgICAgICAgICAgIG0gPSBtZW1vcnl2aWV3KGIpCisgICAgICAgICAgICBpID0gcmVzcC5yZWFkaW50byhtWzA6bl0pCisgICAgICAgICAgICBpICs9IHJlc3AucmVhZGludG8obVtpOm4gKyBpXSkKKyAgICAgICAgICAgIGkgKz0gcmVzcC5yZWFkaW50byhtW2k6XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYls6bmV4cGVjdGVkXSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGksIG5leHBlY3RlZCkKKyAgICAgICAgICAgIHJlc3AuY2xvc2UoKQorCisgICAgICAgIGZvciB4IGluICgnJywgJ2Zvb1xyXG4nKToKKyAgICAgICAgICAgIHNvY2sgPSBGYWtlU29ja2V0KGNodW5rZWRfc3RhcnQgKyB4KQorICAgICAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJHRVQiKQorICAgICAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgICAgIGV4Y2VwdCBjbGllbnQuSW5jb21wbGV0ZVJlYWQgYXMgaToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkucGFydGlhbCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICdJbmNvbXBsZXRlUmVhZCglZCBieXRlcyByZWFkKScgJSBsZW4oZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGkpLCBleHBlY3RlZF9tZXNzYWdlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGkpLCBleHBlY3RlZF9tZXNzYWdlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0luY29tcGxldGVSZWFkIGV4cGVjdGVkJykKICAgICAgICAgICAgIGZpbmFsbHk6CkBAIC0zMzAsNiArNDMwLDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFzb24sICdPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwLmlzY2xvc2VkKCkpCiAKKyAgICBkZWYgdGVzdF9yZWFkaW50b19jaHVua2VkX2hlYWQoc2VsZik6CisgICAgICAgIGNodW5rZWRfc3RhcnQgPSAoCisgICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKKyAgICAgICAgICAgICdUcmFuc2Zlci1FbmNvZGluZzogY2h1bmtlZFxyXG5cclxuJworICAgICAgICAgICAgJ2FcclxuJworICAgICAgICAgICAgJ2hlbGxvIHdvcmxkXHJcbicKKyAgICAgICAgICAgICcxXHJcbicKKyAgICAgICAgICAgICdkXHJcbicKKyAgICAgICAgKQorICAgICAgICBzb2NrID0gRmFrZVNvY2tldChjaHVua2VkX3N0YXJ0ICsgJzBcclxuJykKKyAgICAgICAgcmVzcCA9IGNsaWVudC5IVFRQUmVzcG9uc2Uoc29jaywgbWV0aG9kPSJIRUFEIikKKyAgICAgICAgcmVzcC5iZWdpbigpCisgICAgICAgIGIgPSBieXRlYXJyYXkoNSkKKyAgICAgICAgbiA9IHJlc3AucmVhZGludG8oYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGIpLCBiJ1x4MDAnKjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5zdGF0dXMsIDIwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYXNvbiwgJ09LJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3AuaXNjbG9zZWQoKSkKKwogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2NvbnRlbnRfbGVuZ3RoKHNlbGYpOgogICAgICAgICBzb2NrID0gRmFrZVNvY2tldCgKICAgICAgICAgICAgICdIVFRQLzEuMSAyMDAgT0tcclxuQ29udGVudC1MZW5ndGg6IC0xXHJcblxyXG5IZWxsb1xyXG4nKQpAQCAtNTQ1LDggKzY2NSw3IEBACiAgICAgZGVmIHRlc3RfbG9jYWxfZ29vZF9ob3N0bmFtZShzZWxmKToKICAgICAgICAgIyBUaGUgKHZhbGlkKSBjZXJ0IHZhbGlkYXRlcyB0aGUgSFRUUCBob3N0bmFtZQogICAgICAgICBpbXBvcnQgc3NsCi0gICAgICAgIGZyb20gdGVzdC5zc2xfc2VydmVycyBpbXBvcnQgbWFrZV9odHRwc19zZXJ2ZXIKLSAgICAgICAgc2VydmVyID0gbWFrZV9odHRwc19zZXJ2ZXIoc2VsZiwgQ0VSVF9sb2NhbGhvc3QpCisgICAgICAgIHNlcnZlciA9IHNlbGYubWFrZV9zZXJ2ZXIoQ0VSVF9sb2NhbGhvc3QpCiAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJUX2xvY2FsaG9zdCkKQEAgLTU1NCwxMiArNjczLDEyIEBACiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgNDA0KQorICAgICAgICBkZWwgc2VydmVyCiAKICAgICBkZWYgdGVzdF9sb2NhbF9iYWRfaG9zdG5hbWUoc2VsZik6CiAgICAgICAgICMgVGhlICh2YWxpZCkgY2VydCBkb2Vzbid0IHZhbGlkYXRlIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKLSAgICAgICAgZnJvbSB0ZXN0LnNzbF9zZXJ2ZXJzIGltcG9ydCBtYWtlX2h0dHBzX3NlcnZlcgotICAgICAgICBzZXJ2ZXIgPSBtYWtlX2h0dHBzX3NlcnZlcihzZWxmLCBDRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2Zha2Vob3N0bmFtZSkKICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRfZmFrZWhvc3RuYW1lKQpAQCAtNTc3LDYgKzY5Niw3IEBACiAgICAgICAgIGgucmVxdWVzdCgnR0VUJywgJy9ub25leGlzdGVudCcpCiAgICAgICAgIHJlc3AgPSBoLmdldHJlc3BvbnNlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnN0YXR1cywgNDA0KQorICAgICAgICBkZWwgc2VydmVyCiAKICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBoYXNhdHRyKGNsaWVudCwgJ0hUVFBTQ29ubmVjdGlvbicpLAogICAgICAgICAgICAgICAgICAgICAgJ2h0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiBub3QgYXZhaWxhYmxlJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IGQ5ZTQwNjMuLjc1MTMzYzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtNDcxLDYgKzQ3MSwyMyBAQAogICAgICAgICBzZWxmLnNlbmRfZXJyb3IoNDE3KQogICAgICAgICByZXR1cm4gRmFsc2UKIAorCitjbGFzcyBBdWRpdGFibGVCeXRlc0lPOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGFzID0gW10KKworICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5kYXRhcy5hcHBlbmQoZGF0YSkKKworICAgIGRlZiBnZXREYXRhKHNlbGYpOgorICAgICAgICByZXR1cm4gYicnLmpvaW4oc2VsZi5kYXRhcykKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBudW1Xcml0ZXMoc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5kYXRhcykKKworCiBjbGFzcyBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEJhc2VIVFRQU2VydmVyLgogCkBAIC01MzcsMjcgKzU1NCw0OSBAQAogICAgICAgICBzZWxmLnZlcmlmeV9nZXRfY2FsbGVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRbLTFdLCBiJzxodG1sPjxib2R5PkRhdGE8L2JvZHk+PC9odG1sPlxyXG4nKQogCi0gICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZyhzZWxmKToKLQotICAgICAgICBkZWYgX3JlYWRBbmRSZXNlZWsoZik6Ci0gICAgICAgICAgICBwb3MgPSBmLnRlbGwoKQotICAgICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuc2Vlayhwb3MpCi0gICAgICAgICAgICByZXR1cm4gZGF0YQorICAgIGRlZiB0ZXN0X2hlYWRlcl9idWZmZXJpbmdfb2Zfc2VuZF9lcnJvcihzZWxmKToKIAogICAgICAgICBpbnB1dCA9IEJ5dGVzSU8oYidHRVQgLyBIVFRQLzEuMVxyXG5cclxuJykKLSAgICAgICAgb3V0cHV0ID0gQnl0ZXNJTygpCi0gICAgICAgIHNlbGYuaGFuZGxlci5yZmlsZSA9IGlucHV0Ci0gICAgICAgIHNlbGYuaGFuZGxlci53ZmlsZSA9IG91dHB1dAotICAgICAgICBzZWxmLmhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworICAgICAgICBvdXRwdXQgPSBBdWRpdGFibGVCeXRlc0lPKCkKKyAgICAgICAgaGFuZGxlciA9IFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcigpCisgICAgICAgIGhhbmRsZXIucmZpbGUgPSBpbnB1dAorICAgICAgICBoYW5kbGVyLndmaWxlID0gb3V0cHV0CisgICAgICAgIGhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworICAgICAgICBoYW5kbGVyLnJlcXVlc3RsaW5lID0gJycKKyAgICAgICAgaGFuZGxlci5jb21tYW5kID0gTm9uZQogCi0gICAgICAgIHNlbGYuaGFuZGxlci5zZW5kX2hlYWRlcignRm9vJywgJ2ZvbycpCi0gICAgICAgIHNlbGYuaGFuZGxlci5zZW5kX2hlYWRlcignYmFyJywgJ2JhcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3JlYWRBbmRSZXNlZWsob3V0cHV0KSwgYicnKQotICAgICAgICBzZWxmLmhhbmRsZXIuZW5kX2hlYWRlcnMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9yZWFkQW5kUmVzZWVrKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYidGb286IGZvb1xyXG5iYXI6IGJhclxyXG5cclxuJykKKyAgICAgICAgaGFuZGxlci5zZW5kX2Vycm9yKDQxOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAyKQorCisgICAgZGVmIHRlc3RfaGVhZGVyX2J1ZmZlcmluZ19vZl9zZW5kX3Jlc3BvbnNlX29ubHkoc2VsZik6CisKKyAgICAgICAgaW5wdXQgPSBCeXRlc0lPKGInR0VUIC8gSFRUUC8xLjFcclxuXHJcbicpCisgICAgICAgIG91dHB1dCA9IEF1ZGl0YWJsZUJ5dGVzSU8oKQorICAgICAgICBoYW5kbGVyID0gU29ja2V0bGVzc1JlcXVlc3RIYW5kbGVyKCkKKyAgICAgICAgaGFuZGxlci5yZmlsZSA9IGlucHV0CisgICAgICAgIGhhbmRsZXIud2ZpbGUgPSBvdXRwdXQKKyAgICAgICAgaGFuZGxlci5yZXF1ZXN0X3ZlcnNpb24gPSAnSFRUUC8xLjEnCisKKyAgICAgICAgaGFuZGxlci5zZW5kX3Jlc3BvbnNlX29ubHkoNDE4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDApCisgICAgICAgIGhhbmRsZXIuZW5kX2hlYWRlcnMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDEpCisKKyAgICBkZWYgdGVzdF9oZWFkZXJfYnVmZmVyaW5nX29mX3NlbmRfaGVhZGVyKHNlbGYpOgorCisgICAgICAgIGlucHV0ID0gQnl0ZXNJTyhiJ0dFVCAvIEhUVFAvMS4xXHJcblxyXG4nKQorICAgICAgICBvdXRwdXQgPSBBdWRpdGFibGVCeXRlc0lPKCkKKyAgICAgICAgaGFuZGxlciA9IFNvY2tldGxlc3NSZXF1ZXN0SGFuZGxlcigpCisgICAgICAgIGhhbmRsZXIucmZpbGUgPSBpbnB1dAorICAgICAgICBoYW5kbGVyLndmaWxlID0gb3V0cHV0CisgICAgICAgIGhhbmRsZXIucmVxdWVzdF92ZXJzaW9uID0gJ0hUVFAvMS4xJworCisgICAgICAgIGhhbmRsZXIuc2VuZF9oZWFkZXIoJ0ZvbycsICdmb28nKQorICAgICAgICBoYW5kbGVyLnNlbmRfaGVhZGVyKCdiYXInLCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQubnVtV3JpdGVzLCAwKQorICAgICAgICBoYW5kbGVyLmVuZF9oZWFkZXJzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuZ2V0RGF0YSgpLCBiJ0ZvbzogZm9vXHJcbmJhcjogYmFyXHJcblxyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5udW1Xcml0ZXMsIDEpCiAKICAgICBkZWYgdGVzdF9oZWFkZXJfdW5idWZmZXJlZF93aGVuX2NvbnRpbnVlKHNlbGYpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKaW5kZXggNWM5OWE1OC4uNTEyYmJhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQpAQCAtMTEsOSArMTEsOSBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBjYWxlbmRhcgogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF90aHJlYWRzLCB2ZXJib3NlLCB0cmFuc2llbnRfaW50ZXJuZXQsIHJ1bl93aXRoX3R6Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVhcF90aHJlYWRzLCB2ZXJib3NlLCB0cmFuc2llbnRfaW50ZXJuZXQsIHJ1bl93aXRoX3R6LCBydW5fd2l0aF9sb2NhbGUKIGltcG9ydCB1bml0dGVzdAotCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUsIHRpbWVkZWx0YQogdHJ5OgogICAgIGltcG9ydCBzc2wKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTQzLDE0ICs0MywzMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYXBsaWIuSW50ZXJuYWxkYXRlMnR1cGxlKAogICAgICAgICAgICAgYicyNSAoSU5URVJOQUxEQVRFICIwMi1BcHItMjAwMCAwMzozMDowMCArMDAwMCIpJykpCiAKLSAgICBkZWYgdGVzdF90aGF0X1RpbWUySW50ZXJuYWxkYXRlX3JldHVybnNfYV9yZXN1bHQoc2VsZik6Ci0gICAgICAgICMgV2UgY2FuIGNoZWNrIG9ubHkgdGhhdCBpdCBzdWNjZXNzZnVsbHkgcHJvZHVjZXMgYSByZXN1bHQsCi0gICAgICAgICMgbm90IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcmVzdWx0IGl0c2VsZiwgc2luY2UgdGhlIHJlc3VsdAotICAgICAgICAjIGRlcGVuZHMgb24gdGhlIHRpbWV6b25lIHRoZSBtYWNoaW5lIGlzIGluLgotICAgICAgICB0aW1ldmFsdWVzID0gWzIwMDAwMDAwMDAsIDIwMDAwMDAwMDAuMCwgdGltZS5sb2NhbHRpbWUoMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgICAgICAgJyIxOC1NYXktMjAzMyAwNTozMzoyMCArMDIwMCInXQogCi0gICAgICAgIGZvciB0IGluIHRpbWV2YWx1ZXM6CisKKyAgICBkZWYgdGltZXZhbHVlcyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFsyMDAwMDAwMDAwLCAyMDAwMDAwMDAwLjAsIHRpbWUubG9jYWx0aW1lKDIwMDAwMDAwMDApLAorICAgICAgICAgICAgICAgICgyMDMzLCA1LCAxOCwgNSwgMzMsIDIwLCAtMSwgLTEsIC0xKSwKKyAgICAgICAgICAgICAgICAoMjAzMywgNSwgMTgsIDUsIDMzLCAyMCwgLTEsIC0xLCAxKSwKKyAgICAgICAgICAgICAgICBkYXRldGltZS5mcm9tdGltZXN0YW1wKDIwMDAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZSh0aW1lZGVsdGEoMCwgMio2MCo2MCkpKSwKKyAgICAgICAgICAgICAgICAnIjE4LU1heS0yMDMzIDA1OjMzOjIwICswMjAwIiddCisKKyAgICBAcnVuX3dpdGhfbG9jYWxlKCdMQ19BTEwnLCAnZGVfREUnLCAnZnJfRlInKQorICAgIEBydW5fd2l0aF90eignU1RELTFEU1QnKQorICAgIGRlZiB0ZXN0X1RpbWUySW50ZXJuYWxkYXRlKHNlbGYpOgorICAgICAgICBleHBlY3RlZCA9ICciMTgtTWF5LTIwMzMgMDU6MzM6MjAgKzAyMDAiJworCisgICAgICAgIGZvciB0IGluIHNlbGYudGltZXZhbHVlcygpOgorICAgICAgICAgICAgaW50ZXJuYWwgPSBpbWFwbGliLlRpbWUySW50ZXJuYWxkYXRlKHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludGVybmFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3RoYXRfVGltZTJJbnRlcm5hbGRhdGVfcmV0dXJuc19hX3Jlc3VsdChzZWxmKToKKyAgICAgICAgIyBXaXRob3V0IHR6c2V0LCB3ZSBjYW4gY2hlY2sgb25seSB0aGF0IGl0IHN1Y2Nlc3NmdWxseQorICAgICAgICAjIHByb2R1Y2VzIGEgcmVzdWx0LCBub3QgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSByZXN1bHQgaXRzZWxmLAorICAgICAgICAjIHNpbmNlIHRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgdGltZXpvbmUgdGhlIG1hY2hpbmUgaXMgaW4uCisgICAgICAgIGZvciB0IGluIHNlbGYudGltZXZhbHVlcygpOgogICAgICAgICAgICAgaW1hcGxpYi5UaW1lMkludGVybmFsZGF0ZSh0KQogCiAKQEAgLTI2NSwxMSArMjgxLDU4IEBACiAgICAgcG9ydCA9IDk5MwogICAgIGltYXBfY2xhc3MgPSBJTUFQNF9TU0wKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgY3JlYXRlX3NzbF9jb250ZXh0KHNlbGYpOgorICAgICAgICBzc2xfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHNzbF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgcmV0dXJuIHNzbF9jb250ZXh0CisKKyAgICBkZWYgY2hlY2tfbG9naW5jYXBhKHNlbGYsIHNlcnZlcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBjYXAgaW4gc2VydmVyLmNhcGFiaWxpdGllczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdMT0dJTkRJU0FCTEVEJywgc2VydmVyLmNhcGFiaWxpdGllcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FVVEg9UExBSU4nLCBzZXJ2ZXIuY2FwYWJpbGl0aWVzKQorICAgICAgICAgICAgcnMgPSBzZXJ2ZXIubG9naW4oc2VsZi51c2VybmFtZSwgc2VsZi5wYXNzd29yZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnNbMF0sICdPSycpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZXJ2ZXIubG9nb3V0KCkKKwogICAgIGRlZiB0ZXN0X2xvZ2luY2FwYShzZWxmKToKLSAgICAgICAgZm9yIGNhcCBpbiBzZWxmLnNlcnZlci5jYXBhYmlsaXRpZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwLCBzdHIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0xPR0lORElTQUJMRUQnLCBzZWxmLnNlcnZlci5jYXBhYmlsaXRpZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0FVVEg9UExBSU4nLCBzZWxmLnNlcnZlci5jYXBhYmlsaXRpZXMpCisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBfc2VydmVyID0gc2VsZi5pbWFwX2NsYXNzKHNlbGYuaG9zdCwgc2VsZi5wb3J0KQorICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKworICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9jZXJ0ZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgc2VsZi5jaGVja19sb2dpbmNhcGEoX3NlcnZlcikKKworICAgIGRlZiB0ZXN0X2xvZ2luY2FwYV93aXRoX2NsaWVudF9zc2xfY29udGV4dChzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIF9zZXJ2ZXIgPSBzZWxmLmltYXBfY2xhc3Moc2VsZi5ob3N0LCBzZWxmLnBvcnQsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorCisgICAgZGVmIHRlc3RfbG9nb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgorICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCkKKyAgICAgICAgICAgIHJzID0gX3NlcnZlci5sb2dvdXQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyc1swXSwgJ0JZRScpCisKKyAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9jZXJ0ZmlsZV9leGNsdXNpdmUoc2VsZik6CisgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmltYXBfY2xhc3MsIHNlbGYuaG9zdCwgc2VsZi5wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNzbF9jb250ZXh0PXNlbGYuY3JlYXRlX3NzbF9jb250ZXh0KCkpCisKKyAgICBkZWYgdGVzdF9zc2xfY29udGV4dF9rZXlmaWxlX2V4Y2x1c2l2ZShzZWxmKToKKyAgICAgICAgd2l0aCB0cmFuc2llbnRfaW50ZXJuZXQoc2VsZi5ob3N0KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuaW1hcF9jbGFzcywgc2VsZi5ob3N0LCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlPUNFUlRGSUxFLCBzc2xfY29udGV4dD1zZWxmLmNyZWF0ZV9zc2xfY29udGV4dCgpKQogCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKaW5kZXggNTUxYWQxYi4uNjVjOWYyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXAucHkKQEAgLTEsMTEgKzEsMTIgQEAKIGltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1pbXBvcnQgaW1wb3J0bGliCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogCiBjbGFzcyBMb2NrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01OCw2ICs1OSwxMCBAQAogICAgICAgICAgICAgd2l0aCBpbXAuZmluZF9tb2R1bGUoJ21vZHVsZV8nICsgbW9kLCBzZWxmLnRlc3RfcGF0aClbMF0gYXMgZmQ6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmZC5lbmNvZGluZywgZW5jb2RpbmcpCiAKKyAgICAgICAgcGF0aCA9IFtvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGltcC5maW5kX21vZHVsZSgnYmFkc3ludGF4X3BlcDMxMjAnLCBwYXRoKQorCiAgICAgZGVmIHRlc3RfaXNzdWUxMjY3KHNlbGYpOgogICAgICAgICBmb3IgbW9kLCBlbmNvZGluZywgXyBpbiBzZWxmLnRlc3Rfc3RyaW5nczoKICAgICAgICAgICAgIGZwLCBmaWxlbmFtZSwgaW5mbyAgPSBpbXAuZmluZF9tb2R1bGUoJ21vZHVsZV8nICsgbW9kLApAQCAtMTUwLDE4ICsxNTUsMjQgQEAKICAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9tb2R1bGUodGVtcF9tb2RfbmFtZSwgZmlsZSwgZmlsZW5hbWUsIGluZm8pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuYSwgMSkKIAotICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfc291cmNlKHRlbXBfbW9kX25hbWUsIHRlbXBfbW9kX25hbWUgKyAnLnB5JykKKyAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScpCisgICAgICAgICAgICAgICAgbW9kID0gaW1wLmxvYWRfc291cmNlKHRlbXBfbW9kX25hbWUsIHRlbXBfbW9kX25hbWUgKyAnLnB5JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLmEsIDEpCiAKLSAgICAgICAgICAgIG1vZCA9IGltcC5sb2FkX2NvbXBpbGVkKAotICAgICAgICAgICAgICAgIHRlbXBfbW9kX25hbWUsIGltcC5jYWNoZV9mcm9tX3NvdXJjZSh0ZW1wX21vZF9uYW1lICsgJy5weScpKQorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKKyAgICAgICAgICAgICAgICBtb2QgPSBpbXAubG9hZF9jb21waWxlZCgKKyAgICAgICAgICAgICAgICAgICAgdGVtcF9tb2RfbmFtZSwgaW1wLmNhY2hlX2Zyb21fc291cmNlKHRlbXBfbW9kX25hbWUgKyAnLnB5JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5hLCAxKQogCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModGVzdF9wYWNrYWdlX25hbWUpOgogICAgICAgICAgICAgICAgIG9zLm1rZGlyKHRlc3RfcGFja2FnZV9uYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGluaXRfZmlsZV9uYW1lLCAndycpIGFzIGZpbGU6CiAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSgnYiA9IDJcbicpCi0gICAgICAgICAgICBwYWNrYWdlID0gaW1wLmxvYWRfcGFja2FnZSh0ZXN0X3BhY2thZ2VfbmFtZSwgdGVzdF9wYWNrYWdlX25hbWUpCisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnKQorICAgICAgICAgICAgICAgIHBhY2thZ2UgPSBpbXAubG9hZF9wYWNrYWdlKHRlc3RfcGFja2FnZV9uYW1lLCB0ZXN0X3BhY2thZ2VfbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFja2FnZS5iLCAyKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCkBAIC0xNzUsNiArMTg2LDQ4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbXAuZmluZF9tb2R1bGUsICJiYWRzeW50YXhfcGVwMzEyMCIsIFtwYXRoXSkKIAorICAgIGRlZiB0ZXN0X2xvYWRfZnJvbV9zb3VyY2Uoc2VsZik6CisgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcworICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0CisgICAgICAgICMgaGVyZSwgYnV0IHRoYXQgYnJlYWtzIGJlY2F1c2UgdGhlIG9zIG1vZHVsZSByZWdpc3RlcnMgc29tZQorICAgICAgICAjIGhhbmRsZXJzIGluIGNvcHlfcmVnIG9uIGltcG9ydC4gU2luY2UgQ2xlYW5JbXBvcnQgZG9lc24ndAorICAgICAgICAjIHJldmVydCB0aGF0IHJlZ2lzdHJhdGlvbiwgdGhlIG1vZHVsZSBpcyBsZWZ0IGluIGEgYnJva2VuCisgICAgICAgICMgc3RhdGUgYWZ0ZXIgcmV2ZXJzaW9uLiBSZWluaXRpYWxpc2luZyB0aGUgbW9kdWxlIGNvbnRlbnRzCisgICAgICAgICMgYW5kIGp1c3QgcmV2ZXJ0aW5nIG9zLmVudmlyb24gdG8gaXRzIHByZXZpb3VzIHN0YXRlIGlzIGFuIE9LCisgICAgICAgICMgd29ya2Fyb3VuZAorICAgICAgICBvcmlnX3BhdGggPSBvcy5wYXRoCisgICAgICAgIG9yaWdfZ2V0ZW52ID0gb3MuZ2V0ZW52CisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCk6CisgICAgICAgICAgICB4ID0gaW1wLmZpbmRfbW9kdWxlKCJvcyIpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoeFswXS5jbG9zZSkKKyAgICAgICAgICAgIG5ld19vcyA9IGltcC5sb2FkX21vZHVsZSgib3MiLCAqeCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MsIG5ld19vcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMob3JpZ19wYXRoLCBuZXdfb3MucGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3Qob3JpZ19nZXRlbnYsIG5ld19vcy5nZXRlbnYpCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9pc3N1ZTE1ODI4X2xvYWRfZXh0ZW5zaW9ucyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAxNTgyOCBwaWNrZWQgdXAgdGhhdCB0aGUgYWRhcHRlciBiZXR3ZWVuIHRoZSBvbGQgaW1wIEFQSQorICAgICAgICAjIGFuZCBpbXBvcnRsaWIgY291bGRuJ3QgaGFuZGxlIEMgZXh0ZW5zaW9ucworICAgICAgICBleGFtcGxlID0gIl9oZWFwcSIKKyAgICAgICAgeCA9IGltcC5maW5kX21vZHVsZShleGFtcGxlKQorICAgICAgICBmaWxlXyA9IHhbMF0KKyAgICAgICAgaWYgZmlsZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoZmlsZV8uY2xvc2UpCisgICAgICAgIG1vZCA9IGltcC5sb2FkX21vZHVsZShleGFtcGxlLCAqeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sIGV4YW1wbGUpCisKKyAgICBkZWYgdGVzdF9sb2FkX2R5bmFtaWNfSW1wb3J0RXJyb3JfcGF0aChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTU1OTU0OSBhZGRlZCBgbmFtZWAgYW5kIGBwYXRoYCBhdHRyaWJ1dGVzIHRvIEltcG9ydEVycm9yCisgICAgICAgICMgaW4gb3JkZXIgdG8gcHJvdmlkZSBiZXR0ZXIgZGV0YWlsLiBJc3N1ZSAjMTA4NTQgaW1wbGVtZW50ZWQgdGhvc2UKKyAgICAgICAgIyBhdHRyaWJ1dGVzIG9uIGltcG9ydCBmYWlsdXJlcyBvZiBleHRlbnNpb25zIG9uIFdpbmRvd3MuCisgICAgICAgIHBhdGggPSAnYm9ndXMgZmlsZSBwYXRoJworICAgICAgICBuYW1lID0gJ2V4dGVuc2lvbicKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgZXJyOgorICAgICAgICAgICAgaW1wLmxvYWRfZHluYW1pYyhuYW1lLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIGVyci5leGNlcHRpb24ucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBlcnIuZXhjZXB0aW9uLm5hbWUpCisKIAogY2xhc3MgUmVsb2FkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0yMDksNzIgKzI2Miw4MyBAQAogCiAgICAgdGFnID0gaW1wLmdldF90YWcoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBub3QgYmUgTm9uZScpCiAgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwogICAgICAgICAjIGRlZmluZWQgLnB5YyBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6L3F1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJy9mb28vYmFyL2Jhei9fX3B5Y2FjaGVfXy9xdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5jYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBUcnVlKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfY2FjaGVfZnJvbV9zb3VyY2Vfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIE5vbiBjYWNoZSB0YWcgbWVhbnMgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvcik6CisgICAgICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCd3aGF0ZXZlci5weScpCisKKyAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9ub19kb3Qoc2VsZik6CisgICAgICAgICMgRGlyZWN0b3J5IHdpdGggYSBkb3QsIGZpbGVuYW1lIHdpdGhvdXQgZG90LgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28uYmFyJywgJ2ZpbGUnKQorICAgICAgICBleHBlY3QgPSBvcy5wYXRoLmpvaW4oJ2Zvby5iYXInLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGV7fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIFRydWUpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9vcHRpbWl6ZWQoc2VsZik6CiAgICAgICAgICMgR2l2ZW4gdGhlIHBhdGggdG8gYSAucHkgZmlsZSwgcmV0dXJuIHRoZSBwYXRoIHRvIGl0cyBQRVAgMzE0NwogICAgICAgICAjIGRlZmluZWQgLnB5byBmaWxlIChpLmUuIHVuZGVyIF9fcHljYWNoZV9fKS4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6L3F1eC5weScsIEZhbHNlKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAncXV4LnB5JykKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdfX3B5Y2FjaGVfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5bycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgRmFsc2UpLCBleHBlY3QpCiAKICAgICBkZWYgdGVzdF9jYWNoZV9mcm9tX3NvdXJjZV9jd2Qoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wLmNhY2hlX2Zyb21fc291cmNlKCdmb28ucHknLCBUcnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zZXAuam9pbigoJ19fcHljYWNoZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpKSkKKyAgICAgICAgcGF0aCA9ICdmb28ucHknCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignX19weWNhY2hlX18nLCAnZm9vLnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgVHJ1ZSksIGV4cGVjdCkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2Zyb21fc291cmNlX292ZXJyaWRlKHNlbGYpOgogICAgICAgICAjIFdoZW4gZGVidWdfb3ZlcnJpZGUgaXMgbm90IE5vbmUsIGl0IGNhbiBiZSBhbnkgdHJ1ZS1pc2ggb3IgZmFsc2UtaXNoCiAgICAgICAgICMgdmFsdWUuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJy9mb28vYmFyL2Jhei5weScsIFtdKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXoue30ucHlvJy5mb3JtYXQoc2VsZi50YWcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW1wLmNhY2hlX2Zyb21fc291cmNlKCcvZm9vL2Jhci9iYXoucHknLCBbMTddKSwKLSAgICAgICAgICAgICcvZm9vL2Jhci9fX3B5Y2FjaGVfXy9iYXoue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2Jhei5weScpCisgICAgICAgIHBhcnRpYWxfZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhei57fS5weScuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgW10pLCBwYXJ0aWFsX2V4cGVjdCArICdvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCwgWzE3XSksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbF9leHBlY3QgKyAnYycpCiAgICAgICAgICMgSG93ZXZlciBpZiB0aGUgYm9vbC1pc2huZXNzIGNhbid0IGJlIGRldGVybWluZWQsIHRoZSBleGNlcHRpb24KICAgICAgICAgIyBwcm9wYWdhdGVzLgogICAgICAgICBjbGFzcyBCZWFyaXNoOgogICAgICAgICAgICAgZGVmIF9fYm9vbF9fKHNlbGYpOiByYWlzZSBSdW50aW1lRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICBSdW50aW1lRXJyb3IsCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UsICcvZm9vL2Jhci9iYXoucHknLCBCZWFyaXNoKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnL2Zvby9iYXIvYmF6LnB5JywgQmVhcmlzaCgpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5hbHRzZXAgaXMgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG1lYW5pbmdmdWwgb25seSB3aGVyZSBvcy5hbHRzZXAgaXMgZGVmaW5lZCcpCi0gICAgZGVmIHRlc3RfYWx0c2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhelxccXV4LnB5JywgVHJ1ZSksCi0gICAgICAgICAgICAnXFxmb29cXGJhclxcYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQotICAgIGRlZiB0ZXN0X2FsdHNlcF9hbmRfc2VwX2NhY2hlX2Zyb21fc291cmNlKHNlbGYpOgotICAgICAgICAjIFdpbmRvd3MgcGF0aCBhbmQgUEVQIDMxNDcgd2hlcmUgYWx0c2VwIGlzIHJpZ2h0IG9mIHNlcC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGltcC5jYWNoZV9mcm9tX3NvdXJjZSgnXFxmb29cXGJhci9iYXpcXHF1eC5weScsIFRydWUpLAotICAgICAgICAgICAgJ1xcZm9vXFxiYXIvYmF6XFxfX3B5Y2FjaGVfX1xccXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKLQotICAgIEB1bml0dGVzdC5za2lwSWYob3MuYWx0c2VwIGlzIE5vbmUsCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3Muc2VwID09ICdcXCcgYW5kIG9zLmFsdHNlcCA9PSAnLycsCiAgICAgICAgICAgICAgICAgICAgICAndGVzdCBtZWFuaW5nZnVsIG9ubHkgd2hlcmUgb3MuYWx0c2VwIGlzIGRlZmluZWQnKQogICAgIGRlZiB0ZXN0X3NlcF9hbHRzZXBfYW5kX3NlcF9jYWNoZV9mcm9tX3NvdXJjZShzZWxmKToKICAgICAgICAgIyBXaW5kb3dzIHBhdGggYW5kIFBFUCAzMTQ3IHdoZXJlIHNlcCBpcyByaWdodCBvZiBhbHRzZXAuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICBpbXAuY2FjaGVfZnJvbV9zb3VyY2UoJ1xcZm9vXFxiYXJcXGJhei9xdXgucHknLCBUcnVlKSwKLSAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZShzZWxmKToKICAgICAgICAgIyBHaXZlbiB0aGUgcGF0aCB0byBhIFBFUCAzMTQ3IGRlZmluZWQgLnB5YyBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8KICAgICAgICAgIyBpdHMgc291cmNlLiAgVGhpcyB0ZXN0cyB0aGUgZ29vZCBwYXRoLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZSgKLSAgICAgICAgICAgICcvZm9vL2Jhci9iYXovX19weWNhY2hlX18vcXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSksCi0gICAgICAgICAgICAnL2Zvby9iYXIvYmF6L3F1eC5weScpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oJ2ZvbycsICdiYXInLCAnYmF6JywgJ19fcHljYWNoZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltcC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfbm9fY2FjaGVfdGFnKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZSwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignYmxhaCcsICdfX3B5Y2FjaGVfXycsICd3aGF0ZXZlci5weWMnKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ2NhY2hlX3RhZycsIE5vbmUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKToKKyAgICAgICAgICAgICAgICBpbXAuc291cmNlX2Zyb21fY2FjaGUocGF0aCkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9mcm9tX2NhY2hlX2JhZF9wYXRoKHNlbGYpOgogICAgICAgICAjIFdoZW4gdGhlIHBhdGggdG8gYSBweWMgZmlsZSBpcyBub3QgaW4gUEVQIDMxNDcgZm9ybWF0LCBhIFZhbHVlRXJyb3IKQEAgLTMwNSw2ICszNjksMTIgQEAKICAgICAgICAgICAgICcvZm9vL2Jhci9mb28uY3B5dGhvbi0zMi5mb28ucHljJykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2VfX19maWxlX18oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJwZXAzMTQ3IG1vZHVsZSBhbHJlYWR5IGV4aXN0czogJXIiICUgKG0sKSkKICAgICAgICAgIyBUZXN0IHRoYXQgYSBwYWNrYWdlJ3MgX19maWxlX18gcG9pbnRzIHRvIHRoZSByaWdodCBzb3VyY2UgZGlyZWN0b3J5LgogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCkBAIC0zMTQsMTQgKzM4NCwxNiBAQAogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSgncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weSBmaWxlLgotICAgICAgICB3aXRoIG9wZW4oJ3BlcDMxNDcvX19pbml0X18ucHknLCAndycpOgotICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LmNyZWF0ZV9lbXB0eV9maWxlKCdwZXAzMTQ3L19faW5pdF9fLnB5JykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgZXhwZWN0ZWRfX19maWxlX18gPSBvcy5zZXAuam9pbigoJy4nLCAncGVwMzE0NycsICdfX2luaXRfXy5weScpKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQogICAgICAgICAjIEVuc3VyZSB3ZSBsb2FkIHRoZSBweWMgZmlsZS4KLSAgICAgICAgc3VwcG9ydC5mb3JnZXQoJ3BlcDMxNDcnKQorICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9fZmlsZV9fLAotICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnNlcC5qb2luKCgnLicsICdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JykpKQorICAgICAgICBzdXBwb3J0LnVubG9hZCgncGVwMzE0NycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fX2ZpbGVfXywgZXhwZWN0ZWRfX19maWxlX18sIChtLl9fZmlsZV9fLCBtLl9fcGF0aF9fLCBzeXMucGF0aCwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpKQogCiAKIGNsYXNzIE51bGxJbXBvcnRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKaW5kZXggYjEwZjM1MC4uYjBlNWE5NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkKQEAgLTEsNyArMSw4IEBACisjIFdlIGltcG9ydCBpbXBvcnRsaWIgKkFTQVAqIGluIG9yZGVyIHRvIHRlc3QgIzE1Mzg2CitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBpbXAKLWZyb20gaW1wb3J0bGliLnRlc3QuaW1wb3J0XyBpbXBvcnQgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzCi1mcm9tIGltcG9ydGxpYi50ZXN0LmltcG9ydF8gaW1wb3J0IHV0aWwgYXMgaW1wb3J0bGliX3V0aWwKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYi5pbXBvcnRfIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl91dGlsCiBpbXBvcnQgbWFyc2hhbAogaW1wb3J0IG9zCiBpbXBvcnQgcGxhdGZvcm0KQEAgLTEyLDM5ICsxMyw1MCBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCBlcnJubworaW1wb3J0IHNodXRpbAoraW1wb3J0IGNvbnRleHRsaWIKIAoraW1wb3J0IHRlc3Quc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKICAgICBFbnZpcm9ubWVudFZhckd1YXJkLCBURVNURk4sIGNoZWNrX3dhcm5pbmdzLCBmb3JnZXQsIGlzX2p5dGhvbiwKICAgICBtYWtlX2xlZ2FjeV9weWMsIHJtdHJlZSwgcnVuX3VuaXR0ZXN0LCBzd2FwX2F0dHIsIHN3YXBfaXRlbSwgdGVtcF91bWFzaywKLSAgICB1bmxpbmssIHVubG9hZCkKKyAgICB1bmxpbmssIHVubG9hZCwgY3JlYXRlX2VtcHR5X2ZpbGUsIGNweXRob25fb25seSkKIGZyb20gdGVzdCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogCiAKLWRlZiBfZmlsZXMobmFtZSk6Ci0gICAgcmV0dXJuIChuYW1lICsgb3MuZXh0c2VwICsgInB5IiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHljIiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHlvIiwKLSAgICAgICAgICAgIG5hbWUgKyBvcy5leHRzZXAgKyAicHl3IiwKLSAgICAgICAgICAgIG5hbWUgKyAiJHB5LmNsYXNzIikKLQotZGVmIGNobW9kX2ZpbGVzKG5hbWUpOgotICAgIGZvciBmIGluIF9maWxlcyhuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MuY2htb2QoZiwgMG82MDApCi0gICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKLSAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9FTlQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQogZGVmIHJlbW92ZV9maWxlcyhuYW1lKToKLSAgICBmb3IgZiBpbiBfZmlsZXMobmFtZSk6CisgICAgZm9yIGYgaW4gKG5hbWUgKyAiLnB5IiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHljIiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHlvIiwKKyAgICAgICAgICAgICAgbmFtZSArICIucHl3IiwKKyAgICAgICAgICAgICAgbmFtZSArICIkcHkuY2xhc3MiKToKICAgICAgICAgdW5saW5rKGYpCiAgICAgcm10cmVlKCdfX3B5Y2FjaGVfXycpCiAKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBfcmVhZHlfdG9faW1wb3J0KG5hbWU9Tm9uZSwgc291cmNlPSIiKToKKyAgICAjIHNldHMgdXAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFuZCByZW1vdmVzIGl0CisgICAgIyBjcmVhdGVzIHRoZSBtb2R1bGUgZmlsZQorICAgICMgdGVtcG9yYXJpbHkgY2xlYXJzIHRoZSBtb2R1bGUgZnJvbSBzeXMubW9kdWxlcyAoaWYgYW55KQorICAgIG5hbWUgPSBuYW1lIG9yICJzcGFtIgorICAgIHdpdGggc2NyaXB0X2hlbHBlci50ZW1wX2RpcigpIGFzIHRlbXBkaXI6CisgICAgICAgIHBhdGggPSBzY3JpcHRfaGVscGVyLm1ha2Vfc2NyaXB0KHRlbXBkaXIsIG5hbWUsIHNvdXJjZSkKKyAgICAgICAgb2xkX21vZHVsZSA9IHN5cy5tb2R1bGVzLnBvcChuYW1lLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdGVtcGRpcikKKyAgICAgICAgICAgIHlpZWxkIG5hbWUsIHBhdGgKKyAgICAgICAgICAgIHN5cy5wYXRoLnJlbW92ZSh0ZW1wZGlyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgb2xkX21vZHVsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG9sZF9tb2R1bGUKKworCiBjbGFzcyBJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHJlbW92ZV9maWxlcyhURVNURk4pCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubG9hZChURVNURk4pCkBAIC04Miw2ICs5NCw3IEBACiAKICAgICAgICAgICAgIGlmIFRFU1RGTiBpbiBzeXMubW9kdWxlczoKICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbVEVTVEZOXQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oVEVTVEZOKQpAQCAtMTA3LDkwICsxMjAsNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdwb3NpeCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbWVhbmluZ2Z1bCBvbmx5IG9uIHBvc2l4IHN5c3RlbXMiKQotICAgIGRlZiB0ZXN0X2V4ZWN1dGVfYml0X25vdF9jb3BpZWQoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgNjA3MDogdW5kZXIgcG9zaXggLnB5YyBmaWxlcyBnb3QgdGhlaXIgZXhlY3V0ZSBiaXQgc2V0IGlmCi0gICAgICAgICMgdGhlIC5weSBmaWxlIGhhZCB0aGUgZXhlY3V0ZSBiaXQgc2V0LCBidXQgdGhleSBhcmVuJ3QgZXhlY3V0YWJsZS4KLSAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKToKLSAgICAgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZm5hbWUgPSBURVNURk4gKyBvcy5leHRzZXAgKyAicHkiCi0gICAgICAgICAgICAgICAgb3BlbihmbmFtZSwgJ3cnKS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgb3MuY2htb2QoZm5hbWUsIChzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVJPVEggfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdC5TX0lYVVNSIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lYT1RIKSkKLSAgICAgICAgICAgICAgICBmbiA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShmbmFtZSkKLSAgICAgICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgICAgICAgICAgX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZuKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJfX2ltcG9ydF9fIGRpZCBub3QgcmVzdWx0IGluIGNyZWF0aW9uIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCi0gICAgICAgICAgICAgICAgcyA9IG9zLnN0YXQoZm4pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0LlNfSU1PREUocy5zdF9tb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXQuU19JUlVTUiB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JUk9USCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKLSAgICAgICAgICAgICAgICB1bmxvYWQoVEVTVEZOKQotCi0gICAgZGVmIHRlc3RfcmV3cml0ZV9weWNfd2l0aF9yZWFkX29ubHlfc291cmNlKHNlbGYpOgotICAgICAgICAjIElzc3VlIDYwNzQ6IGEgbG9uZyB0aW1lIGFnbyBvbiBwb3NpeCwgYW5kIG1vcmUgcmVjZW50bHkgb24gV2luZG93cywKLSAgICAgICAgIyBhIHJlYWQgb25seSBzb3VyY2UgZmlsZSByZXN1bHRlZCBpbiBhIHJlYWQgb25seSBweWMgZmlsZSwgd2hpY2gKLSAgICAgICAgIyBsZWQgdG8gcHJvYmxlbXMgd2l0aCB1cGRhdGluZyBpdCBsYXRlcgotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQotICAgICAgICBmbmFtZSA9IFRFU1RGTiArIG9zLmV4dHNlcCArICJweSIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBXcml0ZSBhIFB5dGhvbiBmaWxlLCBtYWtlIGl0IHJlYWQtb25seSBhbmQgaW1wb3J0IGl0Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICd3JykgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJ4ID0gJ29yaWdpbmFsJ1xuIikKLSAgICAgICAgICAgICMgVHdlYWsgdGhlIG10aW1lIG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHB5YyBnZXRzIHVwZGF0ZWQgbGF0ZXIKLSAgICAgICAgICAgIHMgPSBvcy5zdGF0KGZuYW1lKQotICAgICAgICAgICAgb3MudXRpbWUoZm5hbWUsIChzLnN0X2F0aW1lLCBzLnN0X210aW1lLTEwMDAwMDAwMCkpCi0gICAgICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG80MDApCi0gICAgICAgICAgICBtMSA9IF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS54LCAnb3JpZ2luYWwnKQotICAgICAgICAgICAgIyBDaGFuZ2UgdGhlIGZpbGUgYW5kIHRoZW4gcmVpbXBvcnQgaXQKLSAgICAgICAgICAgIG9zLmNobW9kKGZuYW1lLCAwbzYwMCkKLSAgICAgICAgICAgIHdpdGggb3BlbihmbmFtZSwgJ3cnKSBhcyBmOgotICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAncmV3cml0dGVuJ1xuIikKLSAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0gICAgICAgICAgICBtMiA9IF9faW1wb3J0X18oVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMi54LCAncmV3cml0dGVuJykKLSAgICAgICAgICAgICMgTm93IGRlbGV0ZSB0aGUgc291cmNlIGZpbGUgYW5kIGNoZWNrIHRoZSBweWMgd2FzIHJld3JpdHRlbgotICAgICAgICAgICAgdW5saW5rKGZuYW1lKQotICAgICAgICAgICAgdW5sb2FkKFRFU1RGTikKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBieXRlY29kZV9uYW1lID0gZm5hbWUgKyAiYyIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnl0ZWNvZGVfbmFtZSA9IGZuYW1lICsgIm8iCi0gICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKGZuYW1lKSwgYnl0ZWNvZGVfbmFtZSkKLSAgICAgICAgICAgIG0zID0gX19pbXBvcnRfXyhURVNURk4pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0zLngsICdyZXdyaXR0ZW4nKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY2htb2RfZmlsZXMoVEVTVEZOKQotICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKLSAgICAgICAgICAgIHVubG9hZChURVNURk4pCi0gICAgICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLQotICAgIGRlZiB0ZXN0X2ltcF9tb2R1bGUoc2VsZik6Ci0gICAgICAgICMgVmVyaWZ5IHRoYXQgdGhlIGltcCBtb2R1bGUgY2FuIGNvcnJlY3RseSBsb2FkIGFuZCBmaW5kIC5weSBmaWxlcwotICAgICAgICAjIFhYWCAobmNvZ2hsYW4pOiBJdCB3b3VsZCBiZSBuaWNlIHRvIHVzZSBzdXBwb3J0LkNsZWFuSW1wb3J0Ci0gICAgICAgICMgaGVyZSwgYnV0IHRoYXQgYnJlYWtzIGJlY2F1c2UgdGhlIG9zIG1vZHVsZSByZWdpc3RlcnMgc29tZQotICAgICAgICAjIGhhbmRsZXJzIGluIGNvcHlfcmVnIG9uIGltcG9ydC4gU2luY2UgQ2xlYW5JbXBvcnQgZG9lc24ndAotICAgICAgICAjIHJldmVydCB0aGF0IHJlZ2lzdHJhdGlvbiwgdGhlIG1vZHVsZSBpcyBsZWZ0IGluIGEgYnJva2VuCi0gICAgICAgICMgc3RhdGUgYWZ0ZXIgcmV2ZXJzaW9uLiBSZWluaXRpYWxpc2luZyB0aGUgbW9kdWxlIGNvbnRlbnRzCi0gICAgICAgICMgYW5kIGp1c3QgcmV2ZXJ0aW5nIG9zLmVudmlyb24gdG8gaXRzIHByZXZpb3VzIHN0YXRlIGlzIGFuIE9LCi0gICAgICAgICMgd29ya2Fyb3VuZAotICAgICAgICBvcmlnX3BhdGggPSBvcy5wYXRoCi0gICAgICAgIG9yaWdfZ2V0ZW52ID0gb3MuZ2V0ZW52Ci0gICAgICAgIHdpdGggRW52aXJvbm1lbnRWYXJHdWFyZCgpOgotICAgICAgICAgICAgeCA9IGltcC5maW5kX21vZHVsZSgib3MiKQotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHhbMF0uY2xvc2UpCi0gICAgICAgICAgICBuZXdfb3MgPSBpbXAubG9hZF9tb2R1bGUoIm9zIiwgKngpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLCBuZXdfb3MpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKG9yaWdfcGF0aCwgbmV3X29zLnBhdGgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzTm90KG9yaWdfZ2V0ZW52LCBuZXdfb3MuZ2V0ZW52KQotCiAgICAgZGVmIHRlc3RfYnVnNzczMihzZWxmKToKICAgICAgICAgc291cmNlID0gVEVTVEZOICsgJy5weScKICAgICAgICAgb3MubWtkaXIoc291cmNlKQpAQCAtMjIwLDYgKzE0OSw3IEBACiAKICAgICAgICAgIyBOZWVkIHRvIGJlIGFibGUgdG8gbG9hZCBmcm9tIGN1cnJlbnQgZGlyLgogICAgICAgICBzeXMucGF0aC5hcHBlbmQoJycpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKGZpbGVuYW1lKQpAQCAtMjM5LDYgKzE2OSw3IEBACiAgICAgICAgICMgTmV3IGluIDIuNCwgd2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gaW1wb3J0IHRoYXQgbm8gbWF0dGVyIGhvdyBvZnRlbgogICAgICAgICAjIHdlIHRyeS4KICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgaWYgVEVTVEZOIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgdHJ5OgpAQCAtMzEyLDYgKzI0Myw3IEBACiAgICAgICAgICAgICBvcy5yZW1vdmUoc291cmNlKQogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW1RFU1RGTl0KICAgICAgICAgICAgIG1ha2VfbGVnYWN5X3B5Yyhzb3VyY2UpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG1vZC5fX2ZpbGVfXykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXh0LCAoJy5weWMnLCAnLnB5bycpKQpAQCAtMzMyLDEyICsyNjQsNiBAQAogICAgICAgICBpbXBvcnQgdGVzdC5zdXBwb3J0IGFzIHkKICAgICAgICAgc2VsZi5hc3NlcnRJcyh5LCB0ZXN0LnN1cHBvcnQsIHkuX19uYW1lX18pCiAKLSAgICBkZWYgdGVzdF9pbXBvcnRfaW5pdGxlc3NfZGlyZWN0b3J5X3dhcm5pbmcoc2VsZik6Ci0gICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKCcnLCBJbXBvcnRXYXJuaW5nKSk6Ci0gICAgICAgICAgICAjIEp1c3QgYSByYW5kb20gbm9uLXBhY2thZ2UgZGlyZWN0b3J5IHdlIGFsd2F5cyBleHBlY3QgdG8gYmUKLSAgICAgICAgICAgICMgc29tZXdoZXJlIGluIHN5cy5wYXRoLi4uCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvciwgX19pbXBvcnRfXywgInNpdGUtcGFja2FnZXMiKQotCiAgICAgZGVmIHRlc3RfaW1wb3J0X2J5X2ZpbGVuYW1lKHNlbGYpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKFRFU1RGTikKICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKQEAgLTM0Nyw4ICsyNzMsNiBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncGF0aCBpcyBub3QgZW5jb2RhYmxlIHRvIHt9Jy5mb3JtYXQoZW5jb2RpbmcpKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjOgogICAgICAgICAgICAgX19pbXBvcnRfXyhwYXRoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJbXBvcnQgYnkgZmlsZW5hbWUgaXMgbm90IHN1cHBvcnRlZC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIGMuZXhjZXB0aW9uLmFyZ3NbMF0pCiAKICAgICBkZWYgdGVzdF9pbXBvcnRfaW5fZGVsX2RvZXNfbm90X2NyYXNoKHNlbGYpOgogICAgICAgICAjIElzc3VlIDQyMzYKQEAgLTM4NSw2ICszMDksOTggQEAKICAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQogICAgICAgICAgICAgcmVtb3ZlX2ZpbGVzKFRFU1RGTikKIAorICAgIGRlZiB0ZXN0X2JvZ3VzX2Zyb21saXN0KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBfX2ltcG9ydF9fKCdodHRwJywgZnJvbWxpc3Q9WydibGFoJ10pCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiZnJvbWxpc3QgbXVzdCBhbGxvdyBib2d1cyBuYW1lcyIpCisKKworY2xhc3MgRmlsZVBlcm1pc3Npb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0ZXN0cyBmb3IgZmlsZSBtb2RlIG9uIGNhY2hlZCAucHljLy5weW8gZmlsZXMKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCisgICAgZGVmIHRlc3RfY3JlYXRpb25fbW9kZShzZWxmKToKKyAgICAgICAgbWFzayA9IDBvMDIyCisgICAgICAgIHdpdGggdGVtcF91bWFzayhtYXNrKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBtb2R1bGUgPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgdW1hc2sgaXMgcmVzcGVjdGVkLCBhbmQgdGhlIGV4ZWN1dGFibGUgYml0cworICAgICAgICAjIGFyZW4ndCBzZXQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2N0KHN0YXQuU19JTU9ERShzdGF0X2luZm8uc3RfbW9kZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9jdCgwbzY2NiAmIH5tYXNrKSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCBtZWFuaW5nZnVsIG9ubHkgb24gcG9zaXggc3lzdGVtcyIpCisgICAgZGVmIHRlc3RfY2FjaGVkX21vZGVfaXNzdWVfMjA1MShzZWxmKToKKyAgICAgICAgIyBwZXJtaXNzaW9ucyBvZiAucHljIHNob3VsZCBtYXRjaCB0aG9zZSBvZiAucHksIHJlZ2FyZGxlc3Mgb2YgbWFzaworICAgICAgICBtb2RlID0gMG82MDAKKyAgICAgICAgd2l0aCB0ZW1wX3VtYXNrKDBvMDIyKSwgX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIGNhY2hlZF9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpCisgICAgICAgICAgICBvcy5jaG1vZChwYXRoLCBtb2RlKQorICAgICAgICAgICAgX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGNhY2hlZF9wYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIl9faW1wb3J0X18gZGlkIG5vdCByZXN1bHQgaW4gY3JlYXRpb24gb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIGEgLnB5YyBvciAucHlvIGZpbGUiKQorICAgICAgICAgICAgc3RhdF9pbmZvID0gb3Muc3RhdChjYWNoZWRfcGF0aCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUoc3RhdF9pbmZvLnN0X21vZGUpKSwgb2N0KG1vZGUpKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG1lYW5pbmdmdWwgb25seSBvbiBwb3NpeCBzeXN0ZW1zIikKKyAgICBkZWYgdGVzdF9jYWNoZWRfcmVhZG9ubHkoc2VsZik6CisgICAgICAgIG1vZGUgPSAwbzQwMAorICAgICAgICB3aXRoIHRlbXBfdW1hc2soMG8wMjIpLCBfcmVhZHlfdG9faW1wb3J0KCkgYXMgKG5hbWUsIHBhdGgpOgorICAgICAgICAgICAgY2FjaGVkX3BhdGggPSBpbXAuY2FjaGVfZnJvbV9zb3VyY2UocGF0aCkKKyAgICAgICAgICAgIG9zLmNobW9kKHBhdGgsIG1vZGUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY2FjaGVkX3BhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiX19pbXBvcnRfXyBkaWQgbm90IHJlc3VsdCBpbiBjcmVhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgYSAucHljIG9yIC5weW8gZmlsZSIpCisgICAgICAgICAgICBzdGF0X2luZm8gPSBvcy5zdGF0KGNhY2hlZF9wYXRoKQorCisgICAgICAgIGV4cGVjdGVkID0gbW9kZSB8IDBvMjAwICMgQWNjb3VudCBmb3IgZml4IGZvciBpc3N1ZSAjNjA3NAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9jdChzdGF0LlNfSU1PREUoc3RhdF9pbmZvLnN0X21vZGUpKSwgb2N0KGV4cGVjdGVkKSkKKworICAgIGRlZiB0ZXN0X3B5Y19hbHdheXNfd3JpdGFibGUoc2VsZik6CisgICAgICAgICMgSW5pdGlhbGx5IHJlYWQtb25seSAucHljIGZpbGVzIG9uIFdpbmRvd3MgdXNlZCB0byBjYXVzZSBwcm9ibGVtcworICAgICAgICAjIHdpdGggbGF0ZXIgdXBkYXRlcywgc2VlIGlzc3VlICM2MDc0IGZvciBkZXRhaWxzCisgICAgICAgIHdpdGggX3JlYWR5X3RvX2ltcG9ydCgpIGFzIChuYW1lLCBwYXRoKToKKyAgICAgICAgICAgICMgV3JpdGUgYSBQeXRob24gZmlsZSwgbWFrZSBpdCByZWFkLW9ubHkgYW5kIGltcG9ydCBpdAorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJ4ID0gJ29yaWdpbmFsJ1xuIikKKyAgICAgICAgICAgICMgVHdlYWsgdGhlIG10aW1lIG9mIHRoZSBzb3VyY2UgdG8gZW5zdXJlIHB5YyBnZXRzIHVwZGF0ZWQgbGF0ZXIKKyAgICAgICAgICAgIHMgPSBvcy5zdGF0KHBhdGgpCisgICAgICAgICAgICBvcy51dGltZShwYXRoLCAocy5zdF9hdGltZSwgcy5zdF9tdGltZS0xMDAwMDAwMDApKQorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG80MDApCisgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLngsICdvcmlnaW5hbCcpCisgICAgICAgICAgICAjIENoYW5nZSB0aGUgZmlsZSBhbmQgdGhlbiByZWltcG9ydCBpdAorICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG82MDApCisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoInggPSAncmV3cml0dGVuJ1xuIikKKyAgICAgICAgICAgIHVubG9hZChuYW1lKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgICAgIG0gPSBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ueCwgJ3Jld3JpdHRlbicpCisgICAgICAgICAgICAjIE5vdyBkZWxldGUgdGhlIHNvdXJjZSBmaWxlIGFuZCBjaGVjayB0aGUgcHljIHdhcyByZXdyaXR0ZW4KKyAgICAgICAgICAgIHVubGluayhwYXRoKQorICAgICAgICAgICAgdW5sb2FkKG5hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgImMiCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJ5dGVjb2RlX29ubHkgPSBwYXRoICsgIm8iCisgICAgICAgICAgICBvcy5yZW5hbWUoaW1wLmNhY2hlX2Zyb21fc291cmNlKHBhdGgpLCBieXRlY29kZV9vbmx5KQorICAgICAgICAgICAgbSA9IF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCAncmV3cml0dGVuJykKKwogCiBjbGFzcyBQeWNSZXdyaXRpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUZXN0IHRoYXQgdGhlIGBjb19maWxlbmFtZWAgYXR0cmlidXRlIG9uIGNvZGUgb2JqZWN0cyBhbHdheXMgcG9pbnRzCkBAIC00MTIsNiArNDI4LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKHNlbGYubW9kdWxlX3NvdXJjZSkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIHNlbGYuZGlyX25hbWUpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aApAQCAtNDUxLDYgKzQ2OCw3IEBACiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSwgZGZpbGU9dGFyZ2V0KQogICAgICAgICBvcy5yZW1vdmUoc2VsZi5maWxlX25hbWUpCiAgICAgICAgIHB5Y19maWxlID0gbWFrZV9sZWdhY3lfcHljKHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtb2QgPSBzZWxmLmltcG9ydF9tb2R1bGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5tb2R1bGVfZmlsZW5hbWUsIHB5Y19maWxlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5jb2RlX2ZpbGVuYW1lLCB0YXJnZXQpCkBAIC00NTksNyArNDc3LDcgQEAKICAgICBkZWYgdGVzdF9mb3JlaWduX2NvZGUoc2VsZik6CiAgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShzZWxmLmZpbGVfbmFtZSkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29tcGlsZWRfbmFtZSwgInJiIikgYXMgZjoKLSAgICAgICAgICAgIGhlYWRlciA9IGYucmVhZCg4KQorICAgICAgICAgICAgaGVhZGVyID0gZi5yZWFkKDEyKQogICAgICAgICAgICAgY29kZSA9IG1hcnNoYWwubG9hZChmKQogICAgICAgICBjb25zdGFudHMgPSBsaXN0KGNvZGUuY29fY29uc3RzKQogICAgICAgICBmb3JlaWduX2NvZGUgPSB0ZXN0X21haW4uX19jb2RlX18KQEAgLTUwMSw5ICs1MTksMTEgQEAKICAgICAgICAgdW5sb2FkKCJ0ZXN0X3RyYWlsaW5nX3NsYXNoIikKIAogICAgICMgUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzY3Ny4KLSAgICBkZWYgX3Rlc3RfVU5DX3BhdGgoc2VsZik6Ci0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAndGVzdF90cmFpbGluZ19zbGFzaC5weScpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJ0ZXN0ZGF0YSA9ICd0ZXN0X3RyYWlsaW5nX3NsYXNoJyIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzLXNwZWNpZmljJykKKyAgICBkZWYgdGVzdF9VTkNfcGF0aChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhdGgsICd0ZXN0X3VuY19wYXRoLnB5JyksICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoInRlc3RkYXRhID0gJ3Rlc3RfdW5jX3BhdGgnIikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgIyBDcmVhdGUgdGhlIFVOQyBwYXRoLCBsaWtlIFxcbXlob3N0XGMkXGZvb1xiYXIuCiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc2VsZi5wYXRoKQogICAgICAgICBpbXBvcnQgc29ja2V0CkBAIC01MTgsMTMgKzUzOCwxNSBAQAogICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlICMxNTMzOAogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBhY2Nlc3MgYWRtaW5pc3RyYXRpdmUgc2hhcmUgJXIiICUgKHVuYywpKQogICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgc3lzLnBhdGguYXBwZW5kKHBhdGgpCi0gICAgICAgIG1vZCA9IF9faW1wb3J0X18oInRlc3RfdHJhaWxpbmdfc2xhc2giKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC50ZXN0ZGF0YSwgJ3Rlc3RfdHJhaWxpbmdfc2xhc2gnKQotICAgICAgICB1bmxvYWQoInRlc3RfdHJhaWxpbmdfc2xhc2giKQotCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgICAgIHRlc3RfVU5DX3BhdGggPSBfdGVzdF9VTkNfcGF0aAorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgdW5jKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKCJ0ZXN0X3VuY19wYXRoIikKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmZhaWwoImNvdWxkIG5vdCBpbXBvcnQgJ3Rlc3RfdW5jX3BhdGgnIGZyb20gJXI6ICVyIgorICAgICAgICAgICAgICAgICAgICAgICUgKHVuYywgZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLnRlc3RkYXRhLCAndGVzdF91bmNfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2QuX19maWxlX18uc3RhcnRzd2l0aCh1bmMpLCBtb2QuX19maWxlX18pCisgICAgICAgIHVubG9hZCgidGVzdF91bmNfcGF0aCIpCiAKIAogY2xhc3MgUmVsYXRpdmVJbXBvcnRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC01NjUsNyArNTg3LDcgQEAKIAogICAgICAgICAjIENoZWNrIHJlbGF0aXZlIGltcG9ydCBmYWlscyB3aXRoIHBhY2thZ2Ugc2V0IHRvIGEgbm9uLXN0cmluZwogICAgICAgICBucyA9IGRpY3QoX19wYWNrYWdlX189b2JqZWN0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNoZWNrX3JlbGF0aXZlKQogCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhvdXRfZnV0dXJlKHNlbGYpOgogICAgICAgICAjIElmIGV4cGxpY2l0IHJlbGF0aXZlIGltcG9ydCBzeW50YXggaXMgdXNlZCwgdGhlbiBkbyBub3QgdHJ5CkBAIC02MTMsNiArNjM1LDcgQEAKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuc291cmNlLCAndycpIGFzIGZwOgogICAgICAgICAgICAgcHJpbnQoJyMgVGhpcyBpcyBhIHRlc3QgZmlsZSB3cml0dGVuIGJ5IHRlc3RfaW1wb3J0LnB5JywgZmlsZT1mcCkKICAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYXNzZXJ0IHN5cy5wYXRoWzBdID09IG9zLmN1cmRpciwgJ1VuZXhwZWN0ZWQgc3lzLnBhdGhbMF0nCkBAIC02NjAsNiArNjgzLDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19maWxlX18sCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG9zLmN1cmRpciwgb3MucGF0aC5yZWxwYXRoKHB5Y19maWxlKSkpCkBAIC02ODAsNiArNzA0LDcgQEAKICAgICAgICAgcHljX2ZpbGUgPSBtYWtlX2xlZ2FjeV9weWMoc2VsZi5zb3VyY2UpCiAgICAgICAgIG9zLnJlbW92ZShzZWxmLnNvdXJjZSkKICAgICAgICAgdW5sb2FkKFRFU1RGTikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgbSA9IF9faW1wb3J0X18oVEVTVEZOKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBvcy5wYXRoLnJlbHBhdGgocHljX2ZpbGUpKSkKQEAgLTY4OCw2ICs3MTMsOCBAQAogICAgICAgICAjIExpa2UgdGVzdF9fX2NhY2hlZF9fIGJ1dCBmb3IgcGFja2FnZXMuCiAgICAgICAgIGRlZiBjbGVhbnVwKCk6CiAgICAgICAgICAgICBybXRyZWUoJ3BlcDMxNDcnKQorICAgICAgICAgICAgdW5sb2FkKCdwZXAzMTQ3LmZvbycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICBvcy5ta2RpcigncGVwMzE0NycpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQpAQCAtNjk1LDggKzcyMiw3IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNzEwLDE4ICs3MzYsMjAgQEAKICAgICAgICAgIyBQRVAgMzE0NyBweWMgZmlsZS4KICAgICAgICAgZGVmIGNsZWFudXAoKToKICAgICAgICAgICAgIHJtdHJlZSgncGVwMzE0NycpCisgICAgICAgICAgICB1bmxvYWQoJ3BlcDMxNDcuZm9vJykKKyAgICAgICAgICAgIHVubG9hZCgncGVwMzE0NycpCiAgICAgICAgIG9zLm1rZGlyKCdwZXAzMTQ3JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXApCi0gICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQotICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQogICAgICAgICAjIFRvdWNoIHRoZSBfX2luaXRfXy5weQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdwZXAzMTQ3JywgJ19faW5pdF9fLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ3BlcDMxNDcnLCAnZm9vLnB5JyksICd3Jyk6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgIG0gPSBfX2ltcG9ydF9fKCdwZXAzMTQ3LmZvbycpCiAgICAgICAgIHVubG9hZCgncGVwMzE0Ny5mb28nKQogICAgICAgICB1bmxvYWQoJ3BlcDMxNDcnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBtID0gX19pbXBvcnRfXygncGVwMzE0Ny5mb28nKQogICAgICAgICBpbml0X3B5YyA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgKICAgICAgICAgICAgIG9zLnBhdGguam9pbigncGVwMzE0NycsICdfX2luaXRfXy5weScpKQpAQCAtNzMwLDIyICs3NTgsMjU2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLm1vZHVsZXNbJ3BlcDMxNDcuZm9vJ10uX19jYWNoZWRfXywKICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuY3VyZGlyLCBmb29fcHljKSkKIAorICAgIGRlZiB0ZXN0X3JlY29tcHV0ZV9weWNfc2FtZV9zZWNvbmQoc2VsZik6CisgICAgICAgICMgRXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBkb2Vzbid0IGNoYW5nZSB0aW1lc3RhbXAsIGEgY2hhbmdlIGluCisgICAgICAgICMgc291cmNlIHNpemUgaXMgZW5vdWdoIHRvIHRyaWdnZXIgcmVjb21wdXRhdGlvbiBvZiB0aGUgcHljIGZpbGUuCisgICAgICAgIF9faW1wb3J0X18oVEVTVEZOKQorICAgICAgICB1bmxvYWQoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5zb3VyY2UsICdhJykgYXMgZnA6CisgICAgICAgICAgICBwcmludCgieCA9IDUiLCBmaWxlPWZwKQorICAgICAgICBtID0gX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS54LCA1KQogCi1jbGFzcyBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cyh0ZXN0X3JlbGF0aXZlX2ltcG9ydHMuUmVsYXRpdmVJbXBvcnRzKToKKworY2xhc3MgVGVzdFN5bWJvbGljYWxseUxpbmtlZFBhY2thZ2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHBhY2thZ2VfbmFtZSA9ICdzYW1wbGUnCisgICAgdGFnZ2VkID0gcGFja2FnZV9uYW1lICsgJy10YWdnZWQnCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuX2ltcG9ydGxpYl91dGlsX2ZsYWcgPSBpbXBvcnRsaWJfdXRpbC51c2luZ19fX2ltcG9ydF9fCi0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBUcnVlCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi50YWdnZWQpCisgICAgICAgIHRlc3Quc3VwcG9ydC5ybXRyZWUoc2VsZi5wYWNrYWdlX25hbWUpCisgICAgICAgIHNlbGYub3JpZ19zeXNfcGF0aCA9IHN5cy5wYXRoWzpdCisKKyAgICAgICAgIyBjcmVhdGUgYSBzYW1wbGUgcGFja2FnZTsgaW1hZ2luZSB5b3UgaGF2ZSBhIHBhY2thZ2Ugd2l0aCBhIHRhZyBhbmQKKyAgICAgICAgIyAgeW91IHdhbnQgdG8gc3ltYm9saWNhbGx5IGxpbmsgaXQgZnJvbSBpdHMgdW50YWdnZWQgbmFtZS4KKyAgICAgICAgb3MubWtkaXIoc2VsZi50YWdnZWQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0LnN1cHBvcnQucm10cmVlLCBzZWxmLnRhZ2dlZCkKKyAgICAgICAgaW5pdF9maWxlID0gb3MucGF0aC5qb2luKHNlbGYudGFnZ2VkLCAnX19pbml0X18ucHknKQorICAgICAgICB0ZXN0LnN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoaW5pdF9maWxlKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoaW5pdF9maWxlKQorCisgICAgICAgICMgbm93IGNyZWF0ZSBhIHN5bWxpbmsgdG8gdGhlIHRhZ2dlZCBwYWNrYWdlCisgICAgICAgICMgc2FtcGxlIC0+IHNhbXBsZS10YWdnZWQKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnRhZ2dlZCwgc2VsZi5wYWNrYWdlX25hbWUsIHRhcmdldF9pc19kaXJlY3Rvcnk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRlc3Quc3VwcG9ydC51bmxpbmssIHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5pc2RpcihzZWxmLnBhY2thZ2VfbmFtZSksIFRydWUpCisKKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfbmFtZSwgJ19faW5pdF9fLnB5JykpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGltcG9ydGxpYl91dGlsLnVzaW5nX19faW1wb3J0X18gPSBzZWxmLl9pbXBvcnRsaWJfdXRpbF9mbGFnCisgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5vcmlnX3N5c19wYXRoCisKKyAgICAjIHJlZ3Jlc3Npb24gdGVzdCBmb3IgaXNzdWU2NzI3CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgIG5vdCBoYXNhdHRyKHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJykKKyAgICAgICAgb3Igc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgPj0gKDYsIDApLAorICAgICAgICAiV2luZG93cyBWaXN0YSBvciBsYXRlciByZXF1aXJlZCIpCisgICAgQHRlc3Quc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGlua2VkX2Rpcl9pbXBvcnRhYmxlKHNlbGYpOgorICAgICAgICAjIG1ha2Ugc3VyZSBzYW1wbGUgY2FuIG9ubHkgYmUgaW1wb3J0ZWQgZnJvbSB0aGUgY3VycmVudCBkaXJlY3RvcnkuCisgICAgICAgIHN5cy5wYXRoWzpdID0gWycuJ10KKyAgICAgICAgYXNzZXJ0IG9zLnBhdGguZXhpc3RzKHNlbGYucGFja2FnZV9uYW1lKQorICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYucGFja2FnZV9uYW1lLCAnX19pbml0X18ucHknKSkKKworICAgICAgICAjIFRyeSB0byBpbXBvcnQgdGhlIHBhY2thZ2UKKyAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoc2VsZi5wYWNrYWdlX25hbWUpCisKKworQGNweXRob25fb25seQorY2xhc3MgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCBpbXBvcnRsaWIgaXMgYm9vdHN0cmFwcGVkLgorCisgICAgZGVmIHRlc3RfZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZCkKKworICAgIGRlZiB0ZXN0X2Zyb3plbl9pbXBvcnRsaWJfaXNfYm9vdHN0cmFwKHNlbGYpOgorICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1snX2Zyb3plbl9pbXBvcnRsaWInXQorICAgICAgICBzZWxmLmFzc2VydElzKG1vZCwgX2Jvb3RzdHJhcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdpbXBvcnRsaWIuX2Jvb3RzdHJhcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fcGFja2FnZV9fLCAnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZC5fX2ZpbGVfXy5lbmRzd2l0aCgnX2Jvb3RzdHJhcC5weScpLCBtb2QuX19maWxlX18pCisKKyAgICBkZWYgdGVzdF90aGVyZV9jYW5fYmVfb25seV9vbmUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE1Mzg2IHJldmVhbGVkIGEgdHJpY2t5IGxvb3Bob2xlIGluIHRoZSBib290c3RyYXBwaW5nCisgICAgICAgICMgVGhpcyB0ZXN0IGlzIHRlY2huaWNhbGx5IHJlZHVuZGFudCwgc2luY2UgdGhlIGJ1ZyBjYXVzZWQgaW1wb3J0aW5nCisgICAgICAgICMgdGhpcyB0ZXN0IG1vZHVsZSB0byBjcmFzaCBjb21wbGV0ZWx5LCBidXQgaXQgaGVscHMgcHJvdmUgdGhlIHBvaW50CisgICAgICAgIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKKyAgICAgICAgbW9kID0gc3lzLm1vZHVsZXNbJ19mcm96ZW5faW1wb3J0bGliJ10KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYWNoaW5lcnkuRmlsZUZpbmRlciwgbW9kLkZpbGVGaW5kZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaW1wLm5ld19tb2R1bGUsIG1vZC5uZXdfbW9kdWxlKQorCisKK2NsYXNzIEltcG9ydFRyYWNlYmFja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICBzZWxmLm9sZF9wYXRoID0gc3lzLnBhdGhbOl0KKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIFRFU1RGTikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLm9sZF9wYXRoCisgICAgICAgIHJtdHJlZShURVNURk4pCisKKyAgICBkZWYgY3JlYXRlX21vZHVsZShzZWxmLCBtb2QsIGNvbnRlbnRzLCBleHQ9Ii5weSIpOgorICAgICAgICBmbmFtZSA9IG9zLnBhdGguam9pbihURVNURk4sIG1vZCArIGV4dCkKKyAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnRzKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5sb2FkLCBtb2QpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBmbmFtZQorCisgICAgZGVmIGFzc2VydF90cmFjZWJhY2soc2VsZiwgdGIsIGZpbGVzKToKKyAgICAgICAgZGVkdXBlZF9maWxlcyA9IFtdCisgICAgICAgIHdoaWxlIHRiOgorICAgICAgICAgICAgY29kZSA9IHRiLnRiX2ZyYW1lLmZfY29kZQorICAgICAgICAgICAgZm4gPSBjb2RlLmNvX2ZpbGVuYW1lCisgICAgICAgICAgICBpZiBub3QgZGVkdXBlZF9maWxlcyBvciBmbiAhPSBkZWR1cGVkX2ZpbGVzWy0xXToKKyAgICAgICAgICAgICAgICBkZWR1cGVkX2ZpbGVzLmFwcGVuZChmbikKKyAgICAgICAgICAgIHRiID0gdGIudGJfbmV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkZWR1cGVkX2ZpbGVzKSwgbGVuKGZpbGVzKSwgZGVkdXBlZF9maWxlcykKKyAgICAgICAgZm9yIGZuLCBwYXQgaW4gemlwKGRlZHVwZWRfZmlsZXMsIGZpbGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocGF0LCBmbikKKworICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X21vZHVsZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBhc3NlcnRSYWlzZXMoKSBjbGVhcnMgX190cmFjZWJhY2tfXworICAgICAgICAgICAgaW1wb3J0IG5vbmV4aXN0ZW50X3h5enp5CisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfX10pCisKKyAgICBkZWYgdGVzdF9ub25leGlzdGVudF9tb2R1bGVfbmVzdGVkKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbXBvcnQgbm9uZXhpc3RlbnRfeHl6enkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiSW1wb3J0RXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgJ2Zvby5weSddKQorCisgICAgZGVmIHRlc3RfZXhlY19mYWlsdXJlX25lc3RlZChzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfbW9kdWxlKCJmb28iLCAiaW1wb3J0IGJhciIpCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiYmFyIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCAnZm9vLnB5JywgJ2Jhci5weSddKQorCisgICAgIyBBIGZldyBtb3JlIGV4YW1wbGVzIGZyb20gaXNzdWUgIzE1NDI1CisgICAgZGVmIHRlc3Rfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9tb2R1bGUoImZvbyIsICJpbnZhbGlkIHN5bnRheCBpcyBpbnZhbGlkIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IGZvbworICAgICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIlN5bnRheEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX19dKQorCisgICAgZGVmIF9zZXR1cF9icm9rZW5fcGFja2FnZShzZWxmLCBwYXJlbnQsIGNoaWxkKToKKyAgICAgICAgcGtnX25hbWUgPSAiX3BhcmVudF9mb28iCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxvYWQsIHBrZ19uYW1lKQorICAgICAgICBwa2dfcGF0aCA9IG9zLnBhdGguam9pbihURVNURk4sIHBrZ19uYW1lKQorICAgICAgICBvcy5ta2Rpcihwa2dfcGF0aCkKKyAgICAgICAgIyBUb3VjaCB0aGUgX19pbml0X18ucHkKKyAgICAgICAgaW5pdF9wYXRoID0gb3MucGF0aC5qb2luKHBrZ19wYXRoLCAnX19pbml0X18ucHknKQorICAgICAgICB3aXRoIG9wZW4oaW5pdF9wYXRoLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHBhcmVudCkKKyAgICAgICAgYmFyX3BhdGggPSBvcy5wYXRoLmpvaW4ocGtnX3BhdGgsICdiYXIucHknKQorICAgICAgICB3aXRoIG9wZW4oYmFyX3BhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoY2hpbGQpCisgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCisgICAgICAgIHJldHVybiBpbml0X3BhdGgsIGJhcl9wYXRoCisKKyAgICBkZWYgdGVzdF9icm9rZW5fc3VibW9kdWxlKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIiIsICIxLzAiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbXBvcnQgX3BhcmVudF9mb28uYmFyCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgdGIgPSBlLl9fdHJhY2ViYWNrX18KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICBzZWxmLmFzc2VydF90cmFjZWJhY2sodGIsIFtfX2ZpbGVfXywgYmFyX3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2Zyb20oc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiIiwgIjEvMCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyb20gX3BhcmVudF9mb28gaW1wb3J0IGJhcgorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIkltcG9ydEVycm9yIHNob3VsZCBoYXZlIGJlZW4gcmFpc2VkIikKKyAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sIGJhcl9wYXRoXSkKKworICAgIGRlZiB0ZXN0X2Jyb2tlbl9wYXJlbnQoc2VsZik6CisgICAgICAgIGluaXRfcGF0aCwgYmFyX3BhdGggPSBzZWxmLl9zZXR1cF9icm9rZW5fcGFja2FnZSgiMS8wIiwgIiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfcGFyZW50X2Zvby5iYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX3BhcmVudF9mcm9tKHNlbGYpOgorICAgICAgICBpbml0X3BhdGgsIGJhcl9wYXRoID0gc2VsZi5fc2V0dXBfYnJva2VuX3BhY2thZ2UoIjEvMCIsICIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIF9wYXJlbnRfZm9vIGltcG9ydCBiYXIKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yIGFzIGU6CisgICAgICAgICAgICB0YiA9IGUuX190cmFjZWJhY2tfXworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJaZXJvRGl2aXNpb25FcnJvciBzaG91bGQgaGF2ZSBiZWVuIHJhaXNlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0X3RyYWNlYmFjayh0YiwgW19fZmlsZV9fLCBpbml0X3BhdGhdKQorCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2ltcG9ydF9idWcoc2VsZik6CisgICAgICAgICMgV2Ugc2ltdWxhdGUgYSBidWcgaW4gaW1wb3J0bGliIGFuZCBjaGVjayB0aGF0IGl0J3Mgbm90IHN0cmlwcGVkCisgICAgICAgICMgYXdheSBmcm9tIHRoZSB0cmFjZWJhY2suCisgICAgICAgIHNlbGYuY3JlYXRlX21vZHVsZSgiZm9vIiwgIiIpCisgICAgICAgIGltcG9ydGxpYiA9IHN5cy5tb2R1bGVzWydfZnJvemVuX2ltcG9ydGxpYiddCisgICAgICAgIG9sZF9sb2FkX21vZHVsZSA9IGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVmIGxvYWRfbW9kdWxlKCphcmdzKToKKyAgICAgICAgICAgICAgICAxLzAKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBsb2FkX21vZHVsZQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBmb28KKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgICAgIHRiID0gZS5fX3RyYWNlYmFja19fCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiWmVyb0RpdmlzaW9uRXJyb3Igc2hvdWxkIGhhdmUgYmVlbiByYWlzZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRfdHJhY2ViYWNrKHRiLCBbX19maWxlX18sICc8ZnJvemVuIGltcG9ydGxpYicsIF9fZmlsZV9fXSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGltcG9ydGxpYi5Tb3VyY2VMb2FkZXIubG9hZF9tb2R1bGUgPSBvbGRfbG9hZF9tb2R1bGUKIAogCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6Ci0gICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsCisgICAgcnVuX3VuaXR0ZXN0KEltcG9ydFRlc3RzLCBQeWNhY2hlVGVzdHMsIEZpbGVQZXJtaXNzaW9uVGVzdHMsCiAgICAgICAgICAgICAgICAgIFB5Y1Jld3JpdGluZ1Rlc3RzLCBQYXRoc1Rlc3RzLCBSZWxhdGl2ZUltcG9ydFRlc3RzLAogICAgICAgICAgICAgICAgICBPdmVycmlkaW5nSW1wb3J0QnVpbHRpblRlc3RzLAotICAgICAgICAgICAgICAgICBSZWxhdGl2ZUltcG9ydEZyb21JbXBvcnRsaWJUZXN0cykKKyAgICAgICAgICAgICAgICAgSW1wb3J0bGliQm9vdHN0cmFwVGVzdHMsCisgICAgICAgICAgICAgICAgIFRlc3RTeW1ib2xpY2FsbHlMaW5rZWRQYWNrYWdlLAorICAgICAgICAgICAgICAgICBJbXBvcnRUcmFjZWJhY2tUZXN0cykKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0aG9va3MucHkKaW5kZXggZWM2NzMwZS4uMmEyMmQxYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRob29rcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGhvb2tzLnB5CkBAIC01MSw3ICs1MSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aD10ZXN0X3BhdGgpOgogICAgICAgICBpZiBwYXRoICE9IHRlc3RfcGF0aDoKLSAgICAgICAgICAgICMgaWYgb3V0IGNsYXNzIGlzIG9uIHN5cy5wYXRoX2hvb2tzLCB3ZSBtdXN0IHJhaXNlCisgICAgICAgICAgICAjIGlmIG91ciBjbGFzcyBpcyBvbiBzeXMucGF0aF9ob29rcywgd2UgbXVzdCByYWlzZQogICAgICAgICAgICAgIyBJbXBvcnRFcnJvciBmb3IgYW55IHBhdGggaXRlbSB0aGF0IHdlIGNhbid0IGhhbmRsZS4KICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCiAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKQEAgLTIxNSw3ICsyMTUsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdEltcG9ydHMoaSkKIAogICAgIGRlZiB0ZXN0UGF0aEhvb2soc2VsZik6Ci0gICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChQYXRoSW1wb3J0ZXIpCisgICAgICAgIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCBQYXRoSW1wb3J0ZXIpCiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZCh0ZXN0X3BhdGgpCiAgICAgICAgIHNlbGYuZG9UZXN0SW1wb3J0cygpCiAKQEAgLTIyOCw4ICsyMjgsMTAgQEAKICAgICBkZWYgdGVzdEltcFdyYXBwZXIoc2VsZik6CiAgICAgICAgIGkgPSBJbXBXcmFwcGVyKCkKICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaSkKLSAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKEltcFdyYXBwZXIpCi0gICAgICAgIG1uYW1lcyA9ICgiY29sb3JzeXMiLCAidXJsbGliLnBhcnNlIiwgImRpc3R1dGlscy5jb3JlIikKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuaW5zZXJ0KDAsIEltcFdyYXBwZXIpCisgICAgICAgIG1uYW1lcyA9ICgKKyAgICAgICAgICAgICJjb2xvcnN5cyIsICJ1cmxsaWIucGFyc2UiLCAiZGlzdHV0aWxzLmNvcmUiLCAic3lzIiwKKyAgICAgICAgKQogICAgICAgICBmb3IgbW5hbWUgaW4gbW5hbWVzOgogICAgICAgICAgICAgcGFyZW50ID0gbW5hbWUuc3BsaXQoIi4iKVswXQogICAgICAgICAgICAgZm9yIG4gaW4gbGlzdChzeXMubW9kdWxlcyk6CkBAIC0yMzcsNyArMjM5LDggQEAKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25dCiAgICAgICAgIGZvciBtbmFtZSBpbiBtbmFtZXM6CiAgICAgICAgICAgICBtID0gX19pbXBvcnRfXyhtbmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWyJfX2R1bW15X18iXSkKLSAgICAgICAgICAgIG0uX19sb2FkZXJfXyAgIyB0byBtYWtlIHN1cmUgd2UgYWN0dWFsbHkgaGFuZGxlZCB0aGUgaW1wb3J0CisgICAgICAgICAgICAjIHRvIG1ha2Ugc3VyZSB3ZSBhY3R1YWxseSBoYW5kbGVkIHRoZSBpbXBvcnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG0sICJfX2xvYWRlcl9fIikpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVkMDU4NS4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi5weQorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotZnJvbSBpbXBvcnRsaWIudGVzdC5fX21haW5fXyBpbXBvcnQgdGVzdF9tYWluCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTM0NWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvX19pbml0X18ucHkKQEAgLTAsMCArMSwzMyBAQAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCB1bml0dGVzdAorCitkZWYgdGVzdF9zdWl0ZShwYWNrYWdlPV9fcGFja2FnZV9fLCBkaXJlY3Rvcnk9b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSk6CisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCgnLicsICdfXycpKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBuYW1lKQorICAgICAgICBpZiAob3MucGF0aC5pc2ZpbGUocGF0aCkgYW5kIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQKKyAgICAgICAgICAgICAgICBuYW1lLmVuZHN3aXRoKCcucHknKSk6CisgICAgICAgICAgICBzdWJtb2R1bGVfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQobmFtZSlbMF0KKyAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gInswfS57MX0iLmZvcm1hdChwYWNrYWdlLCBzdWJtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUsIGxldmVsPTApCisgICAgICAgICAgICBtb2R1bGVfdGVzdHMgPSB1bml0dGVzdC5maW5kVGVzdENhc2VzKHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXSkKKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobW9kdWxlX3Rlc3RzKQorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIocGF0aCk6CisgICAgICAgICAgICBwYWNrYWdlX25hbWUgPSAiezB9LnsxfSIuZm9ybWF0KHBhY2thZ2UsIG5hbWUpCisgICAgICAgICAgICBfX2ltcG9ydF9fKHBhY2thZ2VfbmFtZSwgbGV2ZWw9MCkKKyAgICAgICAgICAgIHBhY2thZ2VfdGVzdHMgPSBnZXRhdHRyKHN5cy5tb2R1bGVzW3BhY2thZ2VfbmFtZV0sICd0ZXN0X3N1aXRlJykoKQorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChwYWNrYWdlX3Rlc3RzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29udGludWUKKyAgICByZXR1cm4gc3VpdGUKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3RhcnRfZGlyID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgIHRvcF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHN0YXJ0X2RpcikpCisgICAgdGVzdF9sb2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0X2xvYWRlci5kaXNjb3ZlcihzdGFydF9kaXIsIHRvcF9sZXZlbF9kaXI9dG9wX2RpcikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOTcxMjgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9fX21haW5fXy5weQpAQCAtMCwwICsxLDIwIEBACisiIiJSdW4gaW1wb3J0bGliJ3MgdGVzdCBzdWl0ZS4KKworU3BlY2lmeWluZyB0aGUgYGAtLWJ1aWx0aW5gYCBmbGFnIHdpbGwgcnVuIHRlc3RzLCB3aGVyZSBhcHBsaWNhYmxlLCB3aXRoCitidWlsdGlucy5fX2ltcG9ydF9fIGluc3RlYWQgb2YgaW1wb3J0bGliLl9faW1wb3J0X18uCisKKyIiIgorZnJvbSAuIGltcG9ydCB0ZXN0X21haW4KKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0V4ZWN1dGUgdGhlIGltcG9ydGxpYiB0ZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1aXRlJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYicsICctLWJ1aWx0aW4nLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndXNlIGJ1aWx0aW5zLl9faW1wb3J0X18oKSBpbnN0ZWFkIG9mIGltcG9ydGxpYicpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBhcmdzLmJ1aWx0aW46CisgICAgICAgIHV0aWwudXNpbmdfX19pbXBvcnRfXyA9IFRydWUKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2FiYy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2FiYy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYWJjLnB5CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vX19pbml0X18ucHkKaW5kZXggMzFhM2I1Zi4uMTVjMGFkZSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi9fX2luaXRfXy5weQpAQCAtMSwxMCArMSwxMCBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuYnVpbHRpbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3Rlc3RfZmluZGVyLnB5CmluZGV4IDQwZjY5MGUuLjE0NjUzOGQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9maW5kZXIucHkKQEAgLTM1LDE0ICszNSwxNCBAQAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIGFzc2VydCAnaW1wb3J0bGliJyBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCiAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIuZmluZF9tb2R1bGUoJ2ltcG9ydGxpYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfaWdub3JlX3BhdGgoc2VsZik6CiAgICAgICAgICMgVGhlIHZhbHVlIGZvciAncGF0aCcgc2hvdWxkIGFsd2F5cyB0cmlnZ2VyIGEgZmFpbGVkIGltcG9ydC4KICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoYnVpbHRpbl91dGlsLk5BTUUpOgogICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5maW5kX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsncGtnJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShsb2FkZXIpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvYnVpbHRpbi90ZXN0X2xvYWRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKaW5kZXggMWE4NTM5Yi4uOGUxODZlNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2J1aWx0aW4vdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvYnVpbHRpbi90ZXN0X2xvYWRlci5weQpAQCAtMTgsMTAgKzE4LDEwIEBACiAKICAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBtb2R1bGUgbWF0Y2hlcyBhZ2FpbnN0IHdoYXQgaXQgc2hvdWxkIGhhdmUuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUsIHR5cGVzLk1vZHVsZVR5cGUpCiAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiBzZWxmLnZlcmlmaWNhdGlvbi5pdGVtcygpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlLl9fbmFtZV9fIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZS5fX25hbWVfXywgc3lzLm1vZHVsZXMpCiAKICAgICBsb2FkX21vZHVsZSA9IHN0YXRpY21ldGhvZChsYW1iZGEgbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJ1aWx0aW5JbXBvcnRlci5sb2FkX21vZHVsZShuYW1lKSkKQEAgLTQ5LDIwICs0OSwyMiBAQAogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShidWlsdGluX3V0aWwuTkFNRSk6CiAgICAgICAgICAgICBtb2R1bGUxID0gc2VsZi5sb2FkX21vZHVsZShidWlsdGluX3V0aWwuTkFNRSkKICAgICAgICAgICAgIG1vZHVsZTIgPSBzZWxmLmxvYWRfbW9kdWxlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZTEgaXMgbW9kdWxlMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlMSwgbW9kdWxlMikKIAogICAgIGRlZiB0ZXN0X3VubG9hZGFibGUoc2VsZik6CiAgICAgICAgIG5hbWUgPSAnZHNzZHNkZmZmJwogICAgICAgICBhc3NlcnQgbmFtZSBub3QgaW4gc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X2FscmVhZHlfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgICMgVXNpbmcgdGhlIG5hbWUgb2YgYSBtb2R1bGUgYWxyZWFkeSBpbXBvcnRlZCBidXQgbm90IGEgYnVpbHQtaW4gc2hvdWxkCiAgICAgICAgICMgc3RpbGwgZmFpbC4KICAgICAgICAgYXNzZXJ0IGhhc2F0dHIoaW1wb3J0bGliLCAnX19maWxlX18nKSAgIyBOb3QgYSBidWlsdC1pbi4KLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkX21vZHVsZSgnaW1wb3J0bGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ2ltcG9ydGxpYicpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTcyLDEyICs3NCwxMiBAQAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFRoZXJlIGlzIG5vIGNvZGUgb2JqZWN0LgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9jb2RlKGJ1aWx0aW5fdXRpbC5OQU1FKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2dldF9zb3VyY2Uoc2VsZik6CiAgICAgICAgICMgVGhlcmUgaXMgbm8gc291cmNlLgogICAgICAgICByZXN1bHQgPSBtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLmdldF9zb3VyY2UoYnVpbHRpbl91dGlsLk5BTUUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQgaXMgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCiAgICAgZGVmIHRlc3RfaXNfcGFja2FnZShzZWxmKToKICAgICAgICAgIyBDYW5ub3QgYmUgYSBwYWNrYWdlLgpAQCAtODgsOCArOTAsOSBAQAogICAgICAgICAjIE1vZHVsZXMgbm90IGJ1aWx0LWluIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KICAgICAgICAgZm9yIG1ldGhfbmFtZSBpbiAoJ2dldF9jb2RlJywgJ2dldF9zb3VyY2UnLCAnaXNfcGFja2FnZScpOgogICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihtYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtZXRoX25hbWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1ldGhvZChidWlsdGluX3V0aWwuQkFEX05BTUUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGJ1aWx0aW5fdXRpbC5CQURfTkFNRSkKIAogCiAKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluL3V0aWwucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9idWlsdGluL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2J1aWx0aW4vdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQppbmRleCA4ZDdjNDlkLi5jMDMzOTIzIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi9fX2luaXRfXy5weQpAQCAtMSwxMSArMSwxMSBAQAotaW1wb3J0IGltcG9ydGxpYi50ZXN0Citmcm9tIC4uIGltcG9ydCB0ZXN0X3N1aXRlCiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVuaXR0ZXN0CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCi0gICAgcmV0dXJuIGltcG9ydGxpYi50ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKKyAgICByZXR1cm4gdGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3QuZXh0ZW5zaW9uJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKc2ltaWxhcml0eSBpbmRleCA2NCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggZTA2MmZiNi4uNzZjNTNlNCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSwzICsxLDQgQEAKK2ltcG9ydCBpbXAKIGltcG9ydCBzeXMKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMywxOSArMTQsMjYgQEAKICAgICAgICAgZ29vZF9uYW1lID0gZXh0X3V0aWwuTkFNRQogICAgICAgICBiYWRfbmFtZSA9IGdvb2RfbmFtZS51cHBlcigpCiAgICAgICAgIGFzc2VydCBnb29kX25hbWUgIT0gYmFkX25hbWUKLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcihleHRfdXRpbC5QQVRILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ib290c3RyYXAuX0V4dGVuc2lvbkZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5GaWxlRmluZGVyKGV4dF91dGlsLlBBVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF9ib290c3RyYXAuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5FWFRFTlNJT05fU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKGJhZF9uYW1lKQogCiAgICAgZGVmIHRlc3RfY2FzZV9zZW5zaXRpdmUoc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnVuc2V0KCdQWVRIT05DQVNFT0snKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIGluIF9ib290c3RyYXAuX29zLmVudmlyb246CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnb3MuZW52aXJvbiBjaGFuZ2VzIG5vdCByZWZsZWN0ZWQgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19vcy5lbnZpcm9uJykKICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuZmluZF9tb2R1bGUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfY2FzZV9pbnNlbnNpdGl2aXR5KHNlbGYpOgogICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi5zZXQoJ1BZVEhPTkNBU0VPSycsICcxJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBub3QgaW4gX2Jvb3RzdHJhcC5fb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdvcy5lbnZpcm9uIGNoYW5nZXMgbm90IHJlZmxlY3RlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX29zLmVudmlyb24nKQogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5maW5kX21vZHVsZSgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsb2FkZXIsICdsb2FkX21vZHVsZScpKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNjQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQppbmRleCBlYTk3NDgzLi5hNjNjZmRiIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpAQCAtMSw0ICsxLDQgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbAogCkBAIC05LDE1ICs5LDE2IEBACiAgICAgIiIiVGVzdCB0aGUgZmluZGVyIGZvciBleHRlbnNpb24gbW9kdWxlcy4iIiIKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6Ci0gICAgICAgIGltcG9ydGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcih1dGlsLlBBVEgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9FeHRlbnNpb25GaW5kZXJEZXRhaWxzKCkpCisgICAgICAgIGltcG9ydGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIodXRpbC5QQVRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUykpCiAgICAgICAgIHJldHVybiBpbXBvcnRlci5maW5kX21vZHVsZShmdWxsbmFtZSkKIAogICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmluZF9tb2R1bGUodXRpbC5OQU1FKSkKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9pbl9wYWNrYWdlKHNlbGYpOgpAQCAtMjUsNyArMjYsNyBAQAogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlX2luX3BhY2thZ2Uoc2VsZik6Ci0gICAgICAgICMgRXh0ZW5zaW9uIG1vZHVsZXMgY2Fubm90IGJlIGFuIF9faW5pdF9fIGZvciBhIHBhY2thZ2UuCisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBhbiBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfb3Zlcl9tb2R1bGUoc2VsZik6CkBAIC0zMyw5ICszNCw3IEBACiAgICAgICAgIHBhc3MKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZpbmRfbW9kdWxlKCdhc2RmamtsOycpIGlzIE5vbmUpCi0KLSAgICAjIFhYWCBSYWlzZSBhbiBleGNlcHRpb24gaWYgc29tZW9uZSB0cmllcyB0byB1c2UgdGhlICdwYXRoJyBhcmd1bWVudD8KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kX21vZHVsZSgnYXNkZmprbDsnKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9sb2FkZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E1YWYyMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2xvYWRlci5weQpAQCAtMCwwICsxLDc5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4gaW1wb3J0IHV0aWwgYXMgZXh0X3V0aWwKK2Zyb20gLi4gaW1wb3J0IGFiYworZnJvbSAuLiBpbXBvcnQgdXRpbAorCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTG9hZGVyVGVzdHMoYWJjLkxvYWRlclRlc3RzKToKKworICAgICIiIlRlc3QgbG9hZF9tb2R1bGUoKSBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMuIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9hZGVyID0gbWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIoZXh0X3V0aWwuTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0X3V0aWwuRklMRVBBVEgpCisKKyAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoZnVsbG5hbWUpCisKKyAgICBkZWYgdGVzdF9sb2FkX21vZHVsZV9BUEkoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgZGVmYXVsdCBhcmd1bWVudCBmb3IgbG9hZF9tb2R1bGUoKS4KKyAgICAgICAgc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBzZWxmLmxvYWRlci5sb2FkX21vZHVsZShOb25lKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUoJ1hYWCcpCisKKworICAgIGRlZiB0ZXN0X21vZHVsZShzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoZXh0X3V0aWwuTkFNRSk6CisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gWygnX19uYW1lX18nLCBleHRfdXRpbC5OQU1FKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX2ZpbGVfXycsIGV4dF91dGlsLkZJTEVQQVRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdfX3BhY2thZ2VfXycsICcnKV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKG1vZHVsZSwgYXR0ciksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihleHRfdXRpbC5OQU1FLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcikKKworICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgTm8gZXh0ZW5zaW9uIG1vZHVsZSBhcyBfX2luaXRfXyBhdmFpbGFibGUgZm9yIHRlc3RpbmcuCisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2xhY2tpbmdfcGFyZW50KHNlbGYpOgorICAgICAgICAjIE5vIGV4dGVuc2lvbiBtb2R1bGUgaW4gYSBwYWNrYWdlIGF2YWlsYWJsZSBmb3IgdGVzdGluZy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbW9kdWxlX3JldXNlKHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShleHRfdXRpbC5OQU1FKToKKyAgICAgICAgICAgIG1vZHVsZTEgPSBzZWxmLmxvYWRfbW9kdWxlKGV4dF91dGlsLk5BTUUpCisgICAgICAgICAgICBtb2R1bGUyID0gc2VsZi5sb2FkX21vZHVsZShleHRfdXRpbC5OQU1FKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQorCisgICAgZGVmIHRlc3Rfc3RhdGVfYWZ0ZXJfZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBObyBlYXN5IHdheSB0byB0cmlnZ2VyIGEgZmFpbHVyZSBhZnRlciBhIHN1Y2Nlc3NmdWwgaW1wb3J0LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ2FzZGZqa2w7JworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYubG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKworICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShleHRfdXRpbC5OQU1FKSkKKyAgICAgICAgZm9yIHN1ZmZpeCBpbiBtYWNoaW5lcnkuRVhURU5TSU9OX1NVRkZJWEVTOgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbignc29tZScsICdwYXRoJywgJ3BrZycsICdfX2luaXRfXycgKyBzdWZmaXgpCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcigncGtnJywgcGF0aCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsb2FkZXIuaXNfcGFja2FnZSgncGtnJykpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoTG9hZGVyVGVzdHMpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpzaW1pbGFyaXR5IGluZGV4IDgwJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggNDYxMDQyMC4uMWQ5NjlhMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQogZnJvbSAuIGltcG9ydCB1dGlsCiAKIGltcG9ydCBjb2xsZWN0aW9ucwpAQCAtMTQsNyArMTQsOCBAQAogICAgICMgWFhYIFNob3VsZCBpdCBvbmx5IHdvcmsgZm9yIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgYW4gZXh0ZW5zaW9uIG1vZHVsZT8KIAogICAgIGRlZiBob29rKHNlbGYsIGVudHJ5KToKLSAgICAgICAgcmV0dXJuIF9ib290c3RyYXAuX2ZpbGVfcGF0aF9ob29rKGVudHJ5KQorICAgICAgICByZXR1cm4gbWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKChtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5FWFRFTlNJT05fU1VGRklYRVMpKShlbnRyeSkKIAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgICMgUGF0aCBob29rIHNob3VsZCBoYW5kbGUgYSBkaXJlY3Rvcnkgd2hlcmUgYSBrbm93biBleHRlbnNpb24gbW9kdWxlCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDc2JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi91dGlsLnB5CmluZGV4IGQxNDkxNjkuLmEyNjZkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9leHRlbnNpb24vdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdXRpbC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBpbXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogCkBAIC02LDEwICs3LDkgQEAKIEVYVCA9IE5vbmUKIEZJTEVOQU1FID0gTm9uZQogTkFNRSA9ICdfdGVzdGNhcGknCi1fZmlsZV9leHRzID0gW3hbMF0gZm9yIHggaW4gaW1wLmdldF9zdWZmaXhlcygpIGlmIHhbMl0gPT0gaW1wLkNfRVhURU5TSU9OXQogdHJ5OgogICAgIGZvciBQQVRIIGluIHN5cy5wYXRoOgotICAgICAgICBmb3IgRVhUIGluIF9maWxlX2V4dHM6CisgICAgICAgIGZvciBFWFQgaW4gbWFjaGluZXJ5LkVYVEVOU0lPTl9TVUZGSVhFUzoKICAgICAgICAgICAgIEZJTEVOQU1FID0gTkFNRSArIEVYVAogICAgICAgICAgICAgRklMRVBBVEggPSBvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpCiAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oUEFUSCwgRklMRU5BTUUpKToKQEAgLTE4LDQgKzE4LDMgQEAKICAgICAgICAgUEFUSCA9IEVYVCA9IEZJTEVOQU1FID0gRklMRVBBVEggPSBOb25lCiBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKICAgICBwYXNzCi1kZWwgX2ZpbGVfZXh0cwpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uOWVmMTAzYiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vX19pbml0X18ucHkKQEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBpbXBvcnRsaWIudGVzdAorZnJvbSAuLiBpbXBvcnQgdGVzdF9zdWl0ZQogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgZGlyZWN0b3J5ID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQotICAgIHJldHVybiBpbXBvcnRsaWIudGVzdC50ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5zb3VyY2UnLCBkaXJlY3RvcnkpCisgICAgcmV0dXJuIHRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LmZyb3plbicsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKaW5kZXggZGI4ODM3OS4uZmEwYzJhMCAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2Zyb3plbi90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9maW5kZXIucHkKQEAgLTEsNCArMSw0IEBACi1mcm9tIC4uLiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBmcm9tIC4uIGltcG9ydCBhYmMKIAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zNSw3ICszNSw3IEBACiAKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBsb2FkZXIgPSBzZWxmLmZpbmQoJzxub3QgcmVhbD4nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVyIGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGxvYWRlcikKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggNzMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9mcm96ZW4vdGVzdF9sb2FkZXIucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQppbmRleCBiNjg1ZWY1Li40YjhlYzE1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtMTAsNTUgKzEwLDcwIEBACiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19oZWxsb19fJyksIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHN0ZG91dDoKICAgICAgICAgICAgIG1vZHVsZSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX2hlbGxvX18nLCAnX19maWxlX18nOiAnPGZyb3plbj4nLAotICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnJywgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXJ9CisgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19oZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJycsCisgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIobW9kdWxlLCBhdHRyKSwgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgnX19waGVsbG9fXycpLCAgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmxvYWRfbW9kdWxlKCdfX3BoZWxsb19fJykKLSAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKLSAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywgJ19fcGF0aF9fJzogWydfX3BoZWxsb19fJ10sCi0gICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcn0KKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfX3BoZWxsb19fJywKKyAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXyc6IFsnX19waGVsbG9fXyddLAorICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nOiBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCisgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKICAgICAgICAgICAgICAgICBhdHRyX3ZhbHVlID0gZ2V0YXR0cihtb2R1bGUsIGF0dHIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhdHRyX3ZhbHVlLCB2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3IgX19waGVsbG9fXy4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9sYWNraW5nX3BhcmVudChzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ19fcGhlbGxvX18nLCAnX19waGVsbG9fXy5zcGFtJyksIFwKICAgICAgICAgICAgICBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19fcGhlbGxvX18uc3BhbScpCi0gICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX19waGVsbG9fXy5zcGFtJywgJ19fZmlsZV9fJzogJzxmcm96ZW4+JywKKyAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfX3BoZWxsb19fLnNwYW0nLAogICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX19waGVsbG9fXycsCi0gICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJzogbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyfQorICAgICAgICAgICAgICAgICAgICAnX19sb2FkZXJfXyc6IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGNoZWNrLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgYXR0cl92YWx1ZSA9IGdldGF0dHIobW9kdWxlLCBhdHRyKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cl92YWx1ZSwgdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9yIF9fcGhlbGxvX18uc3BhbS4lcywgJXIgIT0gJXIiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhdHRyLCBhdHRyX3ZhbHVlLCB2YWx1ZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnSGVsbG8gd29ybGQhXG4nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vZHVsZSwgJ19fZmlsZV9fJykpCiAKICAgICBkZWYgdGVzdF9tb2R1bGVfcmV1c2Uoc2VsZik6CiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgogICAgICAgICAgICAgbW9kdWxlMSA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX19oZWxsb19fJykKICAgICAgICAgICAgIG1vZHVsZTIgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobW9kdWxlMSBpcyBtb2R1bGUyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtb2R1bGUxLCBtb2R1bGUyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQuZ2V0dmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hlbGxvIHdvcmxkIVxuSGVsbG8gd29ybGQhXG4nKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHIoc2VsZik6CisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKCdfX2hlbGxvX18nKSwgY2FwdHVyZWRfc3Rkb3V0KCk6CisgICAgICAgICAgICBtb2R1bGUgPSBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIubG9hZF9tb2R1bGUoJ19faGVsbG9fXycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9kdWxlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxtb2R1bGUgJ19faGVsbG9fXycgKGZyb3plbik+IikKKwogICAgIGRlZiB0ZXN0X3N0YXRlX2FmdGVyX2ZhaWx1cmUoc2VsZik6CiAgICAgICAgICMgTm8gd2F5IHRvIHRyaWdnZXIgYW4gZXJyb3IgaW4gYSBmcm96ZW4gbW9kdWxlLgogICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF91bmxvYWRhYmxlKHNlbGYpOgogICAgICAgICBhc3NlcnQgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmZpbmRfbW9kdWxlKCdfbm90X3JlYWwnKSBpcyBOb25lCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5sb2FkX21vZHVsZSgnX25vdF9yZWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ19ub3RfcmVhbCcpCiAKIAogY2xhc3MgSW5zcGVjdExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTc4LDcgKzkzLDcgQEAKICAgICBkZWYgdGVzdF9nZXRfc291cmNlKHNlbGYpOgogICAgICAgICAjIFNob3VsZCBhbHdheXMgcmV0dXJuIE5vbmUuCiAgICAgICAgIHJlc3VsdCA9IG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlci5nZXRfc291cmNlKCdfX2hlbGxvX18nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzdWx0IGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gdGVsbCB3aGF0IGlzIGEgcGFja2FnZS4KQEAgLTg2LDE0ICsxMDEsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgKCdfX3BoZWxsb19fLnNwYW0nLCBGYWxzZSkpCiAgICAgICAgIGZvciBuYW1lLCBpc19wYWNrYWdlIGluIHRlc3RfZm9yOgogICAgICAgICAgICAgcmVzdWx0ID0gbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLmlzX3BhY2thZ2UobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKHJlc3VsdCkgPT0gaXNfcGFja2FnZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChyZXN1bHQpLCBpc19wYWNrYWdlKQogCiAgICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgIyBSYWlzZSBJbXBvcnRFcnJvciBmb3IgbW9kdWxlcyB0aGF0IGFyZSBub3QgZnJvemVuLgogICAgICAgICBmb3IgbWV0aF9uYW1lIGluICgnZ2V0X2NvZGUnLCAnZ2V0X3NvdXJjZScsICdpc19wYWNrYWdlJyk6CiAgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlciwgbWV0aF9uYW1lKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBtZXRob2QoJ2ltcG9ydGxpYicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAnaW1wb3J0bGliJykKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy9fX2luaXRfXy5weQpzaW1pbGFyaXR5IGluZGV4IDY3JQpjb3B5IGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQpjb3B5IHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vX19pbml0X18ucHkKaW5kZXggOGQ3YzQ5ZC4uMzY2ZTUzMSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0X3N1aXRlKCdpbXBvcnRsaWIudGVzdC5pbXBvcnRfJywgZGlyZWN0b3J5KQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQppbmRleCA1MDU2YWU1Li43ODNjZGUxIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQpAQCAtNjcsNyArNjcsNyBAQAogCiAgICAgZGVmIHRlc3RfYnVua19fcGFja2FnZV9fKHNlbGYpOgogICAgICAgICBnbG9iYWxzID0geydfX3BhY2thZ2VfXyc6IDQyfQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDRjZDk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpAQCAtMCwwICsxLDY3IEBACitmcm9tIC4uIGltcG9ydCB1dGlsIGFzIGltcG9ydGxpYl90ZXN0X3V0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgQmFkTG9hZGVyRmluZGVyOgorICAgIGJhZCA9ICdmaW5lLmJvZ3VzJworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmaW5kX21vZHVsZShjbHMsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgaWYgZnVsbG5hbWUgPT0gY2xzLmJhZDoKKyAgICAgICAgICAgIHJldHVybiBjbHMKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbG9hZF9tb2R1bGUoY2xzLCBmdWxsbmFtZSk6CisgICAgICAgIGlmIGZ1bGxuYW1lID09IGNscy5iYWQ6CisgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcignSSBjYW5ub3QgYmUgbG9hZGVkIScpCisKKworY2xhc3MgQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0CisgICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCisKKyAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKKyAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB1dGlsLmltcG9ydF8oNDIpCisKKyAgICBkZWYgdGVzdF9uZWdhdGl2ZV9sZXZlbChzZWxmKToKKyAgICAgICAgIyBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSBsZXZlbCBpcyBzcGVjaWZpZWQuCisgICAgICAgICMgUEVQIDMyOCBkaWQgYXdheSB3aXRoIHN5cy5tb2R1bGUgTm9uZSBlbnRyaWVzIGFuZCB0aGUgYW1iaWd1aXR5IG9mCisgICAgICAgICMgYWJzb2x1dGUvcmVsYXRpdmUgaW1wb3J0cy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwuaW1wb3J0Xygnb3MnLCBnbG9iYWxzKCksIGxldmVsPS0xKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZnJvbWxpc3RfZW50cnkoc2VsZik6CisgICAgICAgICMgSWYgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXNuJ3QgZXhpc3QsIHRoYXQncyBva2F5LgorICAgICAgICAjIGlzc3VlMTU3MTUKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHV0aWwuaW1wb3J0XygnZmluZScsIGZyb21saXN0PVsnbm90IGhlcmUnXSkKKworICAgIGRlZiB0ZXN0X2Zyb21saXN0X2xvYWRfZXJyb3JfcHJvcGFnYXRlcyhzZWxmKToKKyAgICAgICAgIyBJZiBzb21ldGhpbmcgaW4gZnJvbWxpc3QgdHJpZ2dlcnMgYW4gZXhjZXB0aW9uIG5vdCByZWxhdGVkIHRvIG5vdAorICAgICAgICAjIGV4aXN0aW5nLCBsZXQgdGhhdCBleGNlcHRpb24gcHJvcGFnYXRlLgorICAgICAgICAjIGlzc3VlMTUzMTYKKyAgICAgICAgbW9kID0gaW1wLm5ld19tb2R1bGUoJ2ZpbmUnKQorICAgICAgICBtb2QuX19wYXRoX18gPSBbJ1hYWCddCisgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtCYWRMb2FkZXJGaW5kZXJdKToKKyAgICAgICAgICAgIHdpdGggaW1wb3J0bGliX3Rlc3RfdXRpbC51bmNhY2hlKCdmaW5lJyk6CisgICAgICAgICAgICAgICAgc3lzLm1vZHVsZXNbJ2ZpbmUnXSA9IG1vZAorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB1dGlsLmltcG9ydF8oJ2ZpbmUnLCBmcm9tbGlzdD1bJ2JvZ3VzJ10pCisKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdChBUElUZXN0KQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfY2FjaGluZy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2NhY2hpbmcucHkKaW5kZXggNDhkYzY0My4uYmY2ODAyNyAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9jYWNoaW5nLnB5CkBAIC0zNCw4ICszNCw5IEBACiAgICAgICAgIG5hbWUgPSAndXNpbmdfTm9uZScKICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IE5vbmUKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CiAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XyhuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfbW9jayhzZWxmLCAqbmFtZXMsIHJldHVybl89Tm9uZSk6CiAgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygqbmFtZXMpCkBAIC02NCw3ICs2NSw4IEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdtb2R1bGUnKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaWQobW9kdWxlLm1vZHVsZSksIGlkKHN5cy5tb2R1bGVzWydwa2cubW9kdWxlJ10pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQobW9kdWxlLm1vZHVsZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzeXMubW9kdWxlc1sncGtnLm1vZHVsZSddKSkKIAogICAgICMgU2VlIHRlc3RfdXNpbmdfY2FjaGVfYWZ0ZXJfbG9hZGVyKCkgZm9yIHJlYXNvbmluZy4KICAgICBAaW1wb3J0X3V0aWwuaW1wb3J0bGliX29ubHkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CmluZGV4IGI5MDNlOGUuLjI3YjIyNzAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CkBAIC0xLDYgKzEsNyBAQAogIiIiVGVzdCB0aGF0IHRoZSBzZW1hbnRpY3MgcmVsYXRpbmcgdG8gdGhlICdmcm9tbGlzdCcgYXJndW1lbnQgYXJlIGNvcnJlY3QuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBSZXR1cm5WYWx1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zOCwxMSArMzksOSBAQAogICAgIFtvYmplY3QgY2FzZV0uIFRoaXMgaXMgZXZlbiB0cnVlIGlmIHRoZSBvYmplY3QgZG9lcyBub3QgZXhpc3QgW2JhZCBvYmplY3RdLgogCiAgICAgSWYgYSBwYWNrYWdlIGlzIGJlaW5nIGltcG9ydGVkLCB0aGVuIHdoYXQgaXMgbGlzdGVkIGluIGZyb21saXN0IG1heSBiZQotICAgIHRyZWF0ZWQgYXMgYSBtb2R1bGUgdG8gYmUgaW1wb3J0ZWQgW21vZHVsZV0uIEJ1dCBvbmNlIGFnYWluLCBldmVuIGlmCi0gICAgc29tZXRoaW5nIGluIGZyb21saXN0IGRvZXMgbm90IGV4aXN0IGFzIGEgbW9kdWxlLCBubyBlcnJvciBpcyB0aHJvd24KLSAgICBbbm8gbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzIGNvbnRhaW5lZCBpbiBfX2FsbF9fIHdoZW4gJyonIGlzCi0gICAgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQgdG8gYmUgdGhlIG9ubHkgbmFtZSBpbiB0aGUKLSAgICBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCisgICAgdHJlYXRlZCBhcyBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBbbW9kdWxlXS4gQW5kIHRoaXMgZXh0ZW5kcyB0byB3aGF0IGlzCisgICAgY29udGFpbmVkIGluIF9fYWxsX18gd2hlbiAnKicgaXMgaW1wb3J0ZWQgW3VzaW5nICpdLiBBbmQgJyonIGRvZXMgbm90IG5lZWQKKyAgICB0byBiZSB0aGUgb25seSBuYW1lIGluIHRoZSBmcm9tbGlzdCBbdXNpbmcgKiB3aXRoIG90aGVyc10uCiAKICAgICAiIiIKIApAQCAtNTMsNyArNTIsNyBAQAogICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ21vZHVsZScsIGZyb21saXN0PVsnYXR0ciddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAnbW9kdWxlJykKIAotICAgIGRlZiB0ZXN0X3VuZXhpc3RlbnRfb2JqZWN0KHNlbGYpOgorICAgIGRlZiB0ZXN0X25vbmV4aXN0ZW50X29iamVjdChzZWxmKToKICAgICAgICAgIyBbYmFkIG9iamVjdF0KICAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygnbW9kdWxlJykgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKQEAgLTcwLDEzICs2OSwxOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ21vZHVsZScpKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLm1vZHVsZS5fX25hbWVfXywgJ3BrZy5tb2R1bGUnKQogCi0gICAgZGVmIHRlc3Rfbm9fbW9kdWxlX2Zyb21fcGFja2FnZShzZWxmKToKLSAgICAgICAgIyBbbm8gbW9kdWxlXQotICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nKSBhcyBpbXBvcnRlcjoKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX0ltcG9ydEVycm9yKHNlbGYpOgorICAgICAgICAjIElmIGEgc3VibW9kdWxlIGNhdXNlcyBhbiBJbXBvcnRFcnJvciBiZWNhdXNlIGl0IHRyaWVzIHRvIGltcG9ydAorICAgICAgICAjIGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUgSW1wb3J0RXJyb3IKKyAgICAgICAgIyBwcm9wYWdhdGUuCisgICAgICAgIGRlZiBtb2R1bGVfY29kZSgpOgorICAgICAgICAgICAgaW1wb3J0IGlfZG9fbm90X2V4aXN0CisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J3BrZy5tb2QnOiBtb2R1bGVfY29kZX0pIGFzIGltcG9ydGVyOgogICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W2ltcG9ydGVyXSk6Ci0gICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnJywgZnJvbWxpc3Q9J25vbl9leGlzdGVudCcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cihtb2R1bGUsICdub25fZXhpc3RlbnQnKSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycsIGZyb21saXN0PVsnbW9kJ10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2lfZG9fbm90X2V4aXN0JywgZXhjLmV4Y2VwdGlvbi5uYW1lKQogCiAgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgogICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZCcpIGFzIGltcG9ydGVyOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CmluZGV4IDNiMTMwYzkuLjRkODVmODAgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfbWV0YV9wYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9tZXRhX3BhdGgucHkKQEAgLTEsNyArMSwxMCBAQAogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIGltcG9ydF91dGlsCitpbXBvcnQgaW1wb3J0bGliLl9ib290c3RyYXAKK2ltcG9ydCBzeXMKIGZyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiAKIAogY2xhc3MgQ2FsbGluZ09yZGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTMzLDYgKzM2LDIxIEBACiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bZmlyc3QsIHNlY29uZF0pOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1wb3J0X3V0aWwuaW1wb3J0Xyhtb2RfbmFtZSksIDQyKQogCisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgICMgUmFpc2UgYW4gSW1wb3J0V2FybmluZyBpZiBzeXMubWV0YV9wYXRoIGlzIGVtcHR5LgorICAgICAgICBtb2R1bGVfbmFtZSA9ICdub3RoaW5nJworICAgICAgICB0cnk6CisgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W10pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0bGliLl9ib290c3RyYXAuX2ZpbmRfbW9kdWxlKCdub3RoaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCiAKIGNsYXNzIENhbGxTaWduYXR1cmUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC02NCw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYXJncyksIDIpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oa3dhcmdzKSwgMCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIG1vZF9uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIE5vbmUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXJnc1sxXSkKIAogICAgIGRlZiB0ZXN0X3dpdGhfcGF0aChzZWxmKToKICAgICAgICAgIyBbcGF0aCBzZXRdCkBAIC04NCw3ICsxMDIsNyBAQAogICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgYWxsIGFyZ3VtZW50cyBhcmUgcG9zaXRpb25hbC4KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGt3YXJncykKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIG1vZF9uYW1lKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIHBhdGgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBwYXRoKQogCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTE4ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKQEAgLTAsMCArMSwxMTIgQEAKK2Zyb20gLi4gaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyBpbXBvcnRfdXRpbAoraW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgaW1wb3J0bGliCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitjbGFzcyBQYXJlbnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJJbXBvcnRpbmcgYSBzdWJtb2R1bGUgc2hvdWxkIGltcG9ydCB0aGUgcGFyZW50IG1vZHVsZXMuIiIiCisKKyAgICBkZWYgdGVzdF9pbXBvcnRfcGFyZW50KHNlbGYpOgorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZHVsZScpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmVudChzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcygncGtnLm1vZHVsZScpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3JhaXNpbmdfcGFyZW50X2FmdGVyX2ltcG9ydGluZ19jaGlsZChzZWxmKToKKyAgICAgICAgZGVmIF9faW5pdF9fKCk6CisgICAgICAgICAgICBpbXBvcnQgcGtnLm1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5tb2R1bGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cnOiBfX2luaXRfX30pCisgICAgICAgIHdpdGggbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigncGtnJywgc3lzLm1vZHVsZXMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9yZWxhdGl2ZV9pbXBvcnRpbmdfY2hpbGQoc2VsZik6CisgICAgICAgIGRlZiBfX2luaXRfXygpOgorICAgICAgICAgICAgZnJvbSAuIGltcG9ydCBtb2R1bGUKKyAgICAgICAgICAgIDEvMAorICAgICAgICBtb2NrID0gdXRpbC5tb2NrX21vZHVsZXMoJ3BrZy5fX2luaXRfXycsICdwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnJzogX19pbml0X199KQorICAgICAgICB3aXRoIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgcmFpc2VzIEltcG9ydEVycm9yIG9uIHRoZSAiZnJvbSAuIGltcG9ydCBtb2R1bGUiCisgICAgICAgICAgICAgICAgICAgICMgbGluZSwgbm90IHN1cmUgd2h5LgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZycsIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFplcm9EaXZpc2lvbkVycm9yLCBJbXBvcnRFcnJvcikpOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdwa2cubW9kdWxlJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICAjIFhYWCBGYWxzZQorICAgICAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCdwa2cubW9kdWxlJywgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX3BhcmVudF9hZnRlcl9kb3VibGVfcmVsYXRpdmVfaW1wb3J0aW5nX2NoaWxkKHNlbGYpOgorICAgICAgICBkZWYgX19pbml0X18oKToKKyAgICAgICAgICAgIGZyb20gLi5zdWJwa2cgaW1wb3J0IG1vZHVsZQorICAgICAgICAgICAgMS8wCisgICAgICAgIG1vY2sgPSB1dGlsLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5zdWJwa2cuX19pbml0X18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BrZy5zdWJwa2cubW9kdWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9jb2RlPXsncGtnLnN1YnBrZyc6IF9faW5pdF9ffSkKKyAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHJhaXNlcyBJbXBvcnRFcnJvciBvbiB0aGUgImZyb20gLi5zdWJwa2cgaW1wb3J0IG1vZHVsZSIKKyAgICAgICAgICAgICAgICAgICAgIyBsaW5lLCBub3Qgc3VyZSB3aHkuCisgICAgICAgICAgICAgICAgICAgIGltcG9ydF91dGlsLmltcG9ydF8oJ3BrZy5zdWJwa2cnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZy5zdWJwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChaZXJvRGl2aXNpb25FcnJvciwgSW1wb3J0RXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygncGtnLnN1YnBrZy5tb2R1bGUnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3BrZy5zdWJwa2cnLCBzeXMubW9kdWxlcykKKyAgICAgICAgICAgICAgICAjIFhYWCBGYWxzZQorICAgICAgICAgICAgICAgICNzZWxmLmFzc2VydEluKCdwa2cuc3VicGtnLm1vZHVsZScsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG5vbi1wYWNrYWdlIHNob3VsZCByYWlzZSBJbXBvcnRFcnJvci4KKyAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHN5cywgJ19fcGF0aF9fJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcikgYXMgY206CisgICAgICAgICAgICBpbXBvcnRfdXRpbC5pbXBvcnRfKCdzeXMubm9fc3VibW9kdWxlc19oZXJlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ3N5cy5ub19zdWJtb2R1bGVzX2hlcmUnKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX25vdF9wYWNrYWdlX2J1dF9zaWRlX2VmZmVjdHMoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgaW5qZWN0cyBzb21ldGhpbmcgaW50byBzeXMubW9kdWxlcyBhcyBhIHNpZGUtZWZmZWN0LCB0aGVuCisgICAgICAgICMgcGljayB1cCBvbiB0aGF0IGZhY3QuCisgICAgICAgIG5hbWUgPSAnbW9kJworICAgICAgICBzdWJuYW1lID0gbmFtZSArICcuYicKKyAgICAgICAgZGVmIG1vZHVsZV9pbmplY3Rpb24oKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW3N1Ym5hbWVdID0gJ3RvdGFsIGJ1bmsnCisgICAgICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzKCdtb2QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGVfY29kZT17J21vZCc6IG1vZHVsZV9pbmplY3Rpb259KQorICAgICAgICB3aXRoIG1vY2tfbW9kdWxlcyBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN1Ym1vZHVsZSA9IGltcG9ydF91dGlsLmltcG9ydF8oc3VibmFtZSkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChzdWJuYW1lKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KFBhcmVudE1vZHVsZVRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMwODZjZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYXRoLnB5CkBAIC0wLDAgKzEsOTggQEAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5Citmcm9tIC4uIGltcG9ydCB1dGlsCitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgaW1wb3J0X3V0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdHlwZXMgaW1wb3J0IE1ldGhvZFR5cGUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCisKKworY2xhc3MgRmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIFBhdGhGaW5kZXIuIiIiCisKKyAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgZmluZGVyLgorICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKSkKKworICAgIGRlZiB0ZXN0X3N5c19wYXRoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aCBpcyB1c2VkIHdoZW4gJ3BhdGgnIGlzIE5vbmUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorCisgICAgZGVmIHRlc3RfcGF0aChzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgJ3BhdGgnIGlzIHVzZWQgd2hlbiBzZXQuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHVzZWQuCisgICAgICAgIG1vZHVsZSA9ICc8dGVzdCBtb2R1bGU+JworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9saXN0KHNlbGYpOgorICAgICAgICAjIEFuIGVtcHR5IGxpc3Qgc2hvdWxkIG5vdCBjb3VudCBhcyBhc2tpbmcgZm9yIHN5cy5wYXRoLgorICAgICAgICBtb2R1bGUgPSAnbW9kdWxlJworICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JworICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19tb2R1bGVzKG1vZHVsZSkKKyAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ21vZHVsZScsIFtdKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaG9va3Moc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2hvb2tzIGlzIHVzZWQuCisgICAgICAgICMgVGVzdCB0aGF0IHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGlzIHNldC4KKyAgICAgICAgbW9kdWxlID0gJzx0ZXN0IG1vZHVsZT4nCisgICAgICAgIHBhdGggPSAnPHRlc3QgcGF0aD4nCisgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX21vZHVsZXMobW9kdWxlKQorICAgICAgICBob29rID0gaW1wb3J0X3V0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlLCBbcGF0aF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSwgaW1wb3J0ZXIpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9wYXRoX2hvb2tzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBpZiBzeXMucGF0aF9ob29rcyBpcyBlbXB0eSBhIHdhcm5pbmcgaXMgcmFpc2VkLAorICAgICAgICAjIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIGdldHMgTm9uZSBzZXQsIGFuZCBQYXRoRmluZGVyIHJldHVybnMgTm9uZS4KKyAgICAgICAgcGF0aF9lbnRyeSA9ICdib2d1c19wYXRoJworICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGhfaW1wb3J0ZXJfY2FjaGU9e30sIHBhdGhfaG9va3M9W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF9lbnRyeV0pOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUoJ29zJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVbcGF0aF9lbnRyeV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odyksIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3Mod1stMV0uY2F0ZWdvcnksIEltcG9ydFdhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfcGF0aF9pbXBvcnRlcl9jYWNoZV9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyBzaG91bGQgY3JlYXRlIGEgZmluZGVyIHVzaW5nIHRoZSBjd2QuCisgICAgICAgIHBhdGggPSAnJworICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKKyAgICAgICAgaW1wb3J0ZXIgPSB1dGlsLm1vY2tfbW9kdWxlcyhtb2R1bGUpCisgICAgICAgIGhvb2sgPSBpbXBvcnRfdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5jdXJkaXIsIGltcG9ydGVyPWltcG9ydGVyKQorICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W3BhdGhdLCBwYXRoX2hvb2tzPVtob29rXSk6CisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9zLmN1cmRpciwgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoRmluZGVyVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkKaW5kZXggYTBmNmIyZC4uNDU2OWMyNiAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9yZWxhdGl2ZV9pbXBvcnRzLnB5CkBAIC0xOTMsNiArMTkzLDIwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ19fcnVucHlfcGtnX18udW5jbGUuY291c2luJykKICAgICAgICAgc2VsZi5yZWxhdGl2ZV9pbXBvcnRfdGVzdChjcmVhdGUsIGdsb2JhbHNfLCBjYWxsYmFjaykKIAorICAgIGRlZiB0ZXN0X2ltcG9ydF9yZWxhdGl2ZV9pbXBvcnRfbm9fZnJvbWxpc3Qoc2VsZik6CisgICAgICAgICMgSW1wb3J0IGEgcmVsYXRpdmUgbW9kdWxlIHcvIG5vIGZyb21saXN0LgorICAgICAgICBjcmVhdGUgPSBbJ2NyYXNoLl9faW5pdF9fJywgJ2NyYXNoLm1vZCddCisgICAgICAgIGdsb2JhbHNfID0gW3snX19wYWNrYWdlX18nOiAnY3Jhc2gnLCAnX19uYW1lX18nOiAnY3Jhc2gnfV0KKyAgICAgICAgZGVmIGNhbGxiYWNrKGdsb2JhbF8pOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0XygnY3Jhc2gnKQorICAgICAgICAgICAgbW9kID0gaW1wb3J0X3V0aWwuaW1wb3J0XygnbW9kJywgZ2xvYmFsXywge30sIFtdLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QuX19uYW1lX18sICdjcmFzaC5tb2QnKQorICAgICAgICBzZWxmLnJlbGF0aXZlX2ltcG9ydF90ZXN0KGNyZWF0ZSwgZ2xvYmFsc18sIGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX2dsb2JhbHMoc2VsZik6CisgICAgICAgICMgTm8gZ2xvYmFscyBmb3IgYSByZWxhdGl2ZSBpbXBvcnQgaXMgYW4gZXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0X3V0aWwuaW1wb3J0Xygnc3lzJywgbGV2ZWw9MSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9pbXBvcnRfL3V0aWwucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQppbmRleCA2NDljNWVkLi44NmFjMDY1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvaW1wb3J0Xy91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdXRpbC5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBpbXBvcnRsaWIuX2Jvb3RzdHJhcAogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWJlMTFmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkKQEAgLTAsMCArMSwxNyBAQAorIiIiUnVuIFB5dGhvbidzIHN0YW5kYXJkIHRlc3Qgc3VpdGUgdXNpbmcgaW1wb3J0bGliLl9faW1wb3J0X18uCisKK1Rlc3RzIGtub3duIHRvIGZhaWwgYmVjYXVzZSBvZiBhc3N1bXB0aW9ucyB0aGF0IGltcG9ydGxpYiAocHJvcGVybHkpCitpbnZhbGlkYXRlcyBhcmUgYXV0b21hdGljYWxseSBza2lwcGVkIGlmIHRoZSBlbnRpcmUgdGVzdCBzdWl0ZSBpcyBydW4uCitPdGhlcndpc2UgYWxsIGNvbW1hbmQtbGluZSBvcHRpb25zIHZhbGlkIGZvciB0ZXN0LnJlZ3J0ZXN0IGFyZSBhbHNvIHZhbGlkIGZvcgordGhpcyBzY3JpcHQuCisKKyIiIgoraW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCByZWdydGVzdAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIF9fYnVpbHRpbnNfXy5fX2ltcG9ydF9fID0gaW1wb3J0bGliLl9faW1wb3J0X18KKyAgICBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5jbGVhcigpCisKKyAgICByZWdydGVzdC5tYWluKHF1aWV0PVRydWUsIHZlcmJvc2UyPVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CnNpbWlsYXJpdHkgaW5kZXggNjclCmNvcHkgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL19faW5pdF9fLnB5CmNvcHkgdG8gTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CmluZGV4IDhkN2M0OWQuLjNlZjk3ZjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvX19pbml0X18ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL19faW5pdF9fLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgaW1wb3J0bGliLnRlc3QKK2Zyb20gLi4gaW1wb3J0IHRlc3Rfc3VpdGUKIGltcG9ydCBvcy5wYXRoCiBpbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgogICAgIGRpcmVjdG9yeSA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLSAgICByZXR1cm4gaW1wb3J0bGliLnRlc3QudGVzdF9zdWl0ZSgnaW1wb3J0bGliLnRlc3Quc291cmNlJywgZGlyZWN0b3J5KQorICAgIHJldHVybiB0ZXN0LnRlc3Rfc3VpdGUoJ2ltcG9ydGxpYi50ZXN0LnNvdXJjZScsIGRpcmVjdG9yeSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CmluZGV4IDMyNDU5MDcuLjBkOTEyYjYgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9hYmNfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2FiY19sb2FkZXIucHkKQEAgLTMyLDYgKzMyLDkgQEAKICAgICBkZWYgZ2V0X2ZpbGVuYW1lKHNlbGYsIGZ1bGxuYW1lKToKICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6CisgICAgICAgIHJldHVybiAnPG1vZHVsZT4nCisKIAogY2xhc3MgU291cmNlTG9hZGVyTW9jayhTb3VyY2VPbmx5TG9hZGVyTW9jayk6CiAKQEAgLTQwLDggKzQzLDEwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIG1hZ2ljPWltcC5nZXRfbWFnaWMoKSk6CiAgICAgICAgIHN1cGVyKCkuX19pbml0X18ocGF0aCkKICAgICAgICAgc2VsZi5ieXRlY29kZV9wYXRoID0gaW1wLmNhY2hlX2Zyb21fc291cmNlKHNlbGYucGF0aCkKKyAgICAgICAgc2VsZi5zb3VyY2Vfc2l6ZSA9IGxlbihzZWxmLnNvdXJjZSkKICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShtYWdpYykKLSAgICAgICAgZGF0YS5leHRlbmQobWFyc2hhbC5fd19sb25nKHNlbGYuc291cmNlX210aW1lKSkKKyAgICAgICAgZGF0YS5leHRlbmQoaW1wb3J0bGliLl93X2xvbmcoc2VsZi5zb3VyY2VfbXRpbWUpKQorICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLnNvdXJjZV9zaXplKSkKICAgICAgICAgY29kZV9vYmplY3QgPSBjb21waWxlKHNlbGYuc291cmNlLCBzZWxmLnBhdGgsICdleGVjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PVRydWUpCiAgICAgICAgIGRhdGEuZXh0ZW5kKG1hcnNoYWwuZHVtcHMoY29kZV9vYmplY3QpKQpAQCAtNTYsOSArNjEsOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogCi0gICAgZGVmIHBhdGhfbXRpbWUoc2VsZiwgcGF0aCk6CisgICAgZGVmIHBhdGhfc3RhdHMoc2VsZiwgcGF0aCk6CiAgICAgICAgIGFzc2VydCBwYXRoID09IHNlbGYucGF0aAotICAgICAgICByZXR1cm4gc2VsZi5zb3VyY2VfbXRpbWUKKyAgICAgICAgcmV0dXJuIHsnbXRpbWUnOiBzZWxmLnNvdXJjZV9tdGltZSwgJ3NpemUnOiBzZWxmLnNvdXJjZV9zaXplfQogCiAgICAgZGVmIHNldF9kYXRhKHNlbGYsIHBhdGgsIGRhdGEpOgogICAgICAgICBzZWxmLndyaXR0ZW5bcGF0aF0gPSBieXRlcyhkYXRhKQpAQCAtMTAyLDkgKzEwNywxMiBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJhbHdheXMiKQogICAgICAgICAgICAgcGF0aCA9IHN1cGVyKCkuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgICBhc3NlcnQgbGVuKHcpID09IDEKLSAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBhc3NlcnQgaXNzdWJjbGFzcyh3WzBdLmNhdGVnb3J5LCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICByZXR1cm4gcGF0aAogCisgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxtb2R1bGU+JworCiAKIGNsYXNzIFB5TG9hZGVyQ29tcGF0TW9jayhQeUxvYWRlck1vY2spOgogCkBAIC0xNDYsMTEgKzE1NCwxMiBAQAogICAgICAgICAgICAgc2VsZi5ieXRlY29kZV90b19wYXRoW25hbWVdID0gZGF0YVsncGF0aCddCiAgICAgICAgICAgICBtYWdpYyA9IGRhdGEuZ2V0KCdtYWdpYycsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl93X2xvbmcoZGF0YS5nZXQoJ210aW1lJywgc2VsZi5kZWZhdWx0X210aW1lKSkKKyAgICAgICAgICAgIHNvdXJjZV9zaXplID0gaW1wb3J0bGliLl93X2xvbmcobGVuKHNlbGYuc291cmNlKSAmIDB4RkZGRkZGRkYpCiAgICAgICAgICAgICBpZiAnYmMnIGluIGRhdGE6CiAgICAgICAgICAgICAgICAgYmMgPSBkYXRhWydiYyddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGJjID0gc2VsZi5jb21waWxlX2JjKG5hbWUpCi0gICAgICAgICAgICBzZWxmLm1vZHVsZV9ieXRlY29kZVtuYW1lXSA9IG1hZ2ljICsgbXRpbWUgKyBiYworICAgICAgICAgICAgc2VsZi5tb2R1bGVfYnl0ZWNvZGVbbmFtZV0gPSBtYWdpYyArIG10aW1lICsgc291cmNlX3NpemUgKyBiYwogCiAgICAgZGVmIGNvbXBpbGVfYmMoc2VsZiwgbmFtZSk6CiAgICAgICAgIHNvdXJjZV9wYXRoID0gc2VsZi5tb2R1bGVfcGF0aHMuZ2V0KG5hbWUsICc8dGVzdD4nKSBvciAnPHRlc3Q+JwpAQCAtMTk4LDcgKzIwNyw3IEBACiAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImFsd2F5cyIpCiAgICAgICAgICAgICBjb2RlX29iamVjdCA9IHN1cGVyKCkuZ2V0X2NvZGUobmFtZSkKICAgICAgICAgICAgIGFzc2VydCBsZW4odykgPT0gMQotICAgICAgICAgICAgYXNzZXJ0IGlzc3ViY2xhc3Mod1swXS5jYXRlZ29yeSwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHJldHVybiBjb2RlX29iamVjdAogCiBjbGFzcyBQeUxvYWRlclRlc3RzKHRlc3RpbmdfYWJjLkxvYWRlclRlc3RzKToKQEAgLTIxOSw3ICsyMjgsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsIF9fcGFja2FnZV9fPScnLAogICAgICAgICAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKSkKQEAgLTIzMSw3ICsyNDAsNyBAQAogICAgICAgICBtb2NrID0gc2VsZi5tb2NrZXIoe25hbWU6IHBhdGh9KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vZHVsZSA9IG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgc2VsZi5lcV9hdHRycyhtb2R1bGUsIF9fbmFtZV9fPW5hbWUsIF9fZmlsZV9fPXBhdGgsCiAgICAgICAgICAgICAgICAgX19wYXRoX189W29zLnBhdGguZGlybmFtZShwYXRoKV0sIF9fcGFja2FnZV9fPW5hbWUsCiAgICAgICAgICAgICAgICAgX19sb2FkZXJfXz1tb2NrKQpAQCAtMjU3LDggKzI2Niw4IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKICAgICAgICAgICAgIGxvYWRlZF9tb2R1bGUgPSBtb2NrLmxvYWRfbW9kdWxlKG5hbWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobG9hZGVkX21vZHVsZSBpcyBtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3lzLm1vZHVsZXNbbmFtZV0gaXMgbW9kdWxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZWRfbW9kdWxlLCBtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHN5cy5tb2R1bGVzW25hbWVdLCBtb2R1bGUpCiAgICAgICAgIHJldHVybiBtb2NrLCBuYW1lCiAKICAgICBkZWYgdGVzdF9zdGF0ZV9hZnRlcl9mYWlsdXJlKHNlbGYpOgpAQCAtMjcxLDcgKzI4MCw3IEBACiAgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5tb2R1bGVzW25hbWVdIGlzIG1vZHVsZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3lzLm1vZHVsZXNbbmFtZV0sIG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vZHVsZSwgJ2JsYWgnKSkKICAgICAgICAgcmV0dXJuIG1vY2sKIApAQCAtMjgyLDcgKzI5MSw3IEBACiAgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CiAgICAgICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgbm90IGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBzeXMubW9kdWxlcykKICAgICAgICAgcmV0dXJuIG1vY2sKIAogCkBAIC0zNDIsNyArMzUxLDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKICAgICAgICAgbXRpbWUgPSBpbXBvcnRsaWIuX3JfbG9uZyhtb2NrLm1vZHVsZV9ieXRlY29kZVtuYW1lXVs0OjhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG10aW1lLCAxKQotICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6XQorICAgICAgICBzb3VyY2Vfc2l6ZSA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzg6MTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vY2suc291cmNlKSAmIDB4RkZGRkZGRkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLl9yX2xvbmcoc291cmNlX3NpemUpKQorICAgICAgICBiYyA9IG1vY2subW9kdWxlX2J5dGVjb2RlW25hbWVdWzEyOl0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYywgbW9jay5jb21waWxlX2JjKG5hbWUpKQogCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgpAQCAtNDEyLDggKzQyNCw3IEBACiAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gZG9udF93cml0ZV9ieXRlY29kZQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChuYW1lIGluIG1vY2subW9kdWxlX2J5dGVjb2RlKSBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfd3JpdGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmFtZSBpbiBtb2NrLm1vZHVsZV9ieXRlY29kZSwgZG9udF93cml0ZV9ieXRlY29kZSkKIAogICAgIGRlZiB0ZXN0X25vX2J5dGVjb2RlX3dyaXR0ZW4oc2VsZik6CiAgICAgICAgIHNlbGYucnVuX3Rlc3QoVHJ1ZSkKQEAgLTQzOCw3ICs0NDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWdpYyc6IGJhZF9tYWdpY319KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG1hZ2ljID0gbW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bOjRdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFnaWMsIGltcC5nZXRfbWFnaWMoKSkKIApAQCAtNDUxLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAge25hbWU6IHsncGF0aCc6ICdwYXRoL3RvL21vZC5ieXRlY29kZScsICdtdGltZSc6IG9sZF9tdGltZX19KQogICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5hbWUgaW4gbW9jay5tb2R1bGVfYnl0ZWNvZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgbW9jay5tb2R1bGVfYnl0ZWNvZGUpCiAgICAgICAgIG10aW1lID0gaW1wb3J0bGliLl9yX2xvbmcobW9jay5tb2R1bGVfYnl0ZWNvZGVbbmFtZV1bNDo4XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdGltZSwgUHlQeWNMb2FkZXJNb2NrLmRlZmF1bHRfbXRpbWUpCiAKQEAgLTQ2OSw4ICs0ODAsOSBAQAogICAgICAgICAgICAgICAgIHsncGF0aCc6IG9zLnBhdGguam9pbigncGF0aCcsICd0bycsICdtb2QnKSwKICAgICAgICAgICAgICAgICAgJ21hZ2ljJzogYmFkX21hZ2ljfX0KICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogTm9uZX0sIGJjKQotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5uYW1lLCBuYW1lKQogCiAgICAgZGVmIHRlc3Rfbm9fYnl0ZWNvZGUoc2VsZik6CiAgICAgICAgICMgTWlzc2luZyBjb2RlIG9iamVjdCBieXRlY29kZSBzaG91bGQgbGVhZCB0byBhbiBFT0ZFcnJvci4KQEAgLTUxNCw4ICs1MjYsOSBAQAogICAgICAgICAjIElmIGFsbCAqX3BhdGggbWV0aG9kcyByZXR1cm4gTm9uZSwgcmFpc2UgSW1wb3J0RXJyb3IuCiAgICAgICAgIG5hbWUgPSAnbW9kJwogICAgICAgICBtb2NrID0gUHlQeWNMb2FkZXJNb2NrKHtuYW1lOiBOb25lfSkKLSAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSksIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgIG1vY2subG9hZF9tb2R1bGUobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKIAogICAgIGRlZiB0ZXN0X3NvdXJjZV9wYXRoX0ltcG9ydEVycm9yKHNlbGYpOgogICAgICAgICAjIEFuIEltcG9ydEVycm9yIGZyb20gc291cmNlX3BhdGggc2hvdWxkIHRyaWdnZXIgYW4gSW1wb3J0RXJyb3IuCkBAIC01MzEsNyArNTQ0LDcgQEAKICAgICAgICAgbW9jayA9IFB5UHljTG9hZGVyTW9jayh7bmFtZTogb3MucGF0aC5qb2luKCdwYXRoJywgJ3RvJywgJ21vZCcpfSkKICAgICAgICAgYmFkX21ldGggPSB0eXBlcy5NZXRob2RUeXBlKHJhaXNlX0ltcG9ydEVycm9yLCBtb2NrKQogICAgICAgICBtb2NrLmJ5dGVjb2RlX3BhdGggPSBiYWRfbWV0aAotICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICB3aXRoIHV0aWwudW5jYWNoZShuYW1lKSwgc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgbW9jay5sb2FkX21vZHVsZShuYW1lKQogCiAKQEAgLTU5MiwxNSArNjA1LDE3IEBACiAgICAgICAgIGRlZiByYWlzZV9JT0Vycm9yKHBhdGgpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcgogICAgICAgICBzZWxmLmxvYWRlci5nZXRfZGF0YSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2VsZi5sb2FkZXIuZ2V0X3NvdXJjZShzZWxmLm5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIHNlbGYubmFtZSkKIAogICAgIGRlZiB0ZXN0X2lzX3BhY2thZ2Uoc2VsZik6CiAgICAgICAgICMgUHJvcGVybHkgZGV0ZWN0IHdoZW4gbG9hZGluZyBhIHBhY2thZ2UuCi0gICAgICAgIHNlbGYuc2V0VXAoaXNfcGFja2FnZT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQogICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2FkZXIuaXNfcGFja2FnZShzZWxmLm5hbWUpKQorICAgICAgICBzZWxmLnNldFVwKGlzX3BhY2thZ2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9hZGVyLmlzX3BhY2thZ2Uoc2VsZi5uYW1lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmxvYWRlci5pc19wYWNrYWdlKHNlbGYubmFtZSArICcuX19pbml0X18nKSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb2RlKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSB0aGUgY29kZSBvYmplY3QgaXMgY3JlYXRlZC4KQEAgLTYxNSw3ICs2MzAsNyBAQAogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi5sb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5uYW1lKQogICAgICAgICAgICAgc2VsZi52ZXJpZnlfbW9kdWxlKG1vZHVsZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGF0aF9fLCBbb3MucGF0aC5kaXJuYW1lKHNlbGYucGF0aCldKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubmFtZSBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Vfc2V0dGluZ3Moc2VsZik6CiAgICAgICAgICMgX19wYWNrYWdlX18gbmVlZHMgdG8gYmUgc2V0LCB3aGlsZSBfX3BhdGhfXyBpcyBzZXQgb24gaWYgdGhlIG1vZHVsZQpAQCAtNjU2LDcgKzY3MSw4IEBACiAgICAgICAgIGlmIGJ5dGVjb2RlX3dyaXR0ZW46CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuY2FjaGVkLCBzZWxmLmxvYWRlci53cml0dGVuKQogICAgICAgICAgICAgZGF0YSA9IGJ5dGVhcnJheShpbXAuZ2V0X21hZ2ljKCkpCi0gICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLl93X2xvbmcoc2VsZi5sb2FkZXIuc291cmNlX210aW1lKSkKKyAgICAgICAgICAgIGRhdGEuZXh0ZW5kKGltcG9ydGxpYi5fd19sb25nKHNlbGYubG9hZGVyLnNvdXJjZV9tdGltZSkpCisgICAgICAgICAgICBkYXRhLmV4dGVuZChpbXBvcnRsaWIuX3dfbG9uZyhzZWxmLmxvYWRlci5zb3VyY2Vfc2l6ZSkpCiAgICAgICAgICAgICBkYXRhLmV4dGVuZChtYXJzaGFsLmR1bXBzKGNvZGVfb2JqZWN0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2FkZXIud3JpdHRlbltzZWxmLmNhY2hlZF0sIGJ5dGVzKGRhdGEpKQogCkBAIC03NjIsMTcgKzc3OCwzMSBAQAogICAgICAgICBleHBlY3QgPSBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyKE5vbmUsIFRydWUpLmRlY29kZShzb3VyY2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5nZXRfc291cmNlKG5hbWUpLCBleHBlY3QpCiAKKwogY2xhc3MgQWJzdHJhY3RNZXRob2RJbXBsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGUgY29uY3JldGUgYWJzdHJhY3RtZXRob2QgaW1wbGVtZW50YXRpb25zLiIiIgogCisgICAgY2xhc3MgTWV0YVBhdGhGaW5kZXIoYWJjLk1ldGFQYXRoRmluZGVyKToKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIGZ1bGxuYW1lLCBwYXRoKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoZnVsbG5hbWUsIHBhdGgpCisKKyAgICBjbGFzcyBQYXRoRW50cnlGaW5kZXIoYWJjLlBhdGhFbnRyeUZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBfKToKKyAgICAgICAgICAgIHN1cGVyKCkuZmluZF9tb2R1bGUoXykKKworICAgICAgICBkZWYgZmluZF9sb2FkZXIoc2VsZiwgXyk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbG9hZGVyKF8pCisKKyAgICBjbGFzcyBGaW5kZXIoYWJjLkZpbmRlcik6CisgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBmdWxsbmFtZSwgcGF0aCk6CisgICAgICAgICAgICBzdXBlcigpLmZpbmRfbW9kdWxlKGZ1bGxuYW1lLCBwYXRoKQorCiAgICAgY2xhc3MgTG9hZGVyKGFiYy5Mb2FkZXIpOgogICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgZnVsbG5hbWUpOgogICAgICAgICAgICAgc3VwZXIoKS5sb2FkX21vZHVsZShmdWxsbmFtZSkKLQotICAgIGNsYXNzIEZpbmRlcihhYmMuRmluZGVyKToKLSAgICAgICAgZGVmIGZpbmRfbW9kdWxlKHNlbGYsIF8pOgotICAgICAgICAgICAgc3VwZXIoKS5maW5kX21vZHVsZShfKQorICAgICAgICBkZWYgbW9kdWxlX3JlcHIoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgIHN1cGVyKCkubW9kdWxlX3JlcHIobW9kdWxlKQogCiAgICAgY2xhc3MgUmVzb3VyY2VMb2FkZXIoTG9hZGVyLCBhYmMuUmVzb3VyY2VMb2FkZXIpOgogICAgICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgXyk6CkBAIC04NDcsNyArODc3LDcgQEAKICAgICAgICAgIyBSZXF1aXJlZCBhYnN0cmFjdG1ldGhvZHMuCiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCAnZ2V0X2ZpbGVuYW1lJywgJ2dldF9kYXRhJykKICAgICAgICAgIyBPcHRpb25hbCBhYnN0cmFjdG1ldGhvZHMuCi0gICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3IoaW5zLCdwYXRoX210aW1lJywgJ3NldF9kYXRhJykKKyAgICAgICAgc2VsZi5yYWlzZXNfTm90SW1wbGVtZW50ZWRFcnJvcihpbnMsJ3BhdGhfc3RhdHMnLCAnc2V0X2RhdGEnKQogCiAgICAgZGVmIHRlc3RfUHlMb2FkZXIoc2VsZik6CiAgICAgICAgIHNlbGYucmFpc2VzX05vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5QeUxvYWRlcigpLCAnc291cmNlX3BhdGgnLApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IDczNzc3ZGUuLjI0MTE3M2YgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKQEAgLTEsNyArMSw5IEBACiAiIiJUZXN0IGNhc2Utc2Vuc2l0aXZpdHkgKFBFUCAyMzUpLiIiIgogZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGltcAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQgYXMgdGVzdF9zdXBwb3J0CkBAIC0xOSw5ICsyMSwxMSBAQAogICAgIGFzc2VydCBuYW1lICE9IG5hbWUubG93ZXIoKQogCiAgICAgZGVmIGZpbmQoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIocGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuQllURUNPREVfU1VGRklYRVMpKQogICAgICAgICByZXR1cm4gZmluZGVyLmZpbmRfbW9kdWxlKHNlbGYubmFtZSkKIAogICAgIGRlZiBzZW5zaXRpdml0eV90ZXN0KHNlbGYpOgpAQCAtMzcsNiArNDEsOSBAQAogICAgIGRlZiB0ZXN0X3NlbnNpdGl2ZShzZWxmKToKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKICAgICAgICAgICAgIGVudi51bnNldCgnUFlUSE9OQ0FTRU9LJykKKyAgICAgICAgICAgIGlmIGInUFlUSE9OQ0FTRU9LJyBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpAQCAtNDUsNiArNTIsOSBAQAogICAgIGRlZiB0ZXN0X2luc2Vuc2l0aXZlKHNlbGYpOgogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgogICAgICAgICAgICAgZW52LnNldCgnUFlUSE9OQ0FTRU9LJywgJzEnKQorICAgICAgICAgICAgaWYgYidQWVRIT05DQVNFT0snIG5vdCBpbiBfYm9vdHN0cmFwLl9vcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ29zLmVudmlyb24gY2hhbmdlcyBub3QgcmVmbGVjdGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfb3MuZW52aXJvbicpCiAgICAgICAgICAgICBzZW5zaXRpdmUsIGluc2Vuc2l0aXZlID0gc2VsZi5zZW5zaXRpdml0eV90ZXN0KCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbnNpdGl2ZSwgJ2xvYWRfbW9kdWxlJykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYubmFtZSwgc2Vuc2l0aXZlLmdldF9maWxlbmFtZShzZWxmLm5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbGVfbG9hZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCBjN2E3ZDhmLi45MGY5ZDMwIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkKQEAgLTEsNSArMSw2IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgbWFjaGluZXJ5CiBpbXBvcnQgaW1wb3J0bGliCi1mcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IGltcG9ydGxpYi5hYmMKIGZyb20gLi4gaW1wb3J0IGFiYwogZnJvbSAuLiBpbXBvcnQgdXRpbAogZnJvbSAuIGltcG9ydCB1dGlsIGFzIHNvdXJjZV91dGlsCkBAIC0yNCwxMiArMjUsNDggQEAKIAogICAgICIiIgogCisgICAgZGVmIHRlc3RfbG9hZF9tb2R1bGVfQVBJKHNlbGYpOgorICAgICAgICAjIElmIGZ1bGxuYW1lIGlzIG5vdCBzcGVjaWZpZWQgdGhhdCBhc3N1bWUgc2VsZi5uYW1lIGlzIGRlc2lyZWQuCisgICAgICAgIGNsYXNzIFRlc3Rlck1peGluKGltcG9ydGxpYi5hYmMuTG9hZGVyKToKKyAgICAgICAgICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6IHJldHVybiBmdWxsbmFtZQorICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIG1vZHVsZSk6IHJldHVybiAnPG1vZHVsZT4nCisKKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlciwgVGVzdGVyTWl4aW4pOgorICAgICAgICAgICAgZGVmIGdldF9jb2RlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIGlzX3BhY2thZ2Uoc2VsZiwgXyk6IHBhc3MKKworICAgICAgICBuYW1lID0gJ21vZF9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgJ3NvbWVfcGF0aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZSwgbG9hZGVyLmxvYWRfbW9kdWxlKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIGxvYWRlci5sb2FkX21vZHVsZShuYW1lKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUobG9hZGVyLm5hbWUgKyAnWFhYJykKKworICAgIGRlZiB0ZXN0X2dldF9maWxlbmFtZV9BUEkoc2VsZik6CisgICAgICAgICMgSWYgZnVsbG5hbWUgaXMgbm90IHNldCB0aGVuIGFzc3VtZSBzZWxmLnBhdGggaXMgZGVzaXJlZC4KKyAgICAgICAgY2xhc3MgVGVzdGVyKGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlcik6CisgICAgICAgICAgICBkZWYgZ2V0X2NvZGUoc2VsZiwgXyk6IHBhc3MKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIF8pOiBwYXNzCisgICAgICAgICAgICBkZWYgaXNfcGFja2FnZShzZWxmLCBfKTogcGFzcworICAgICAgICAgICAgZGVmIG1vZHVsZV9yZXByKHNlbGYsIF8pOiBwYXNzCisKKyAgICAgICAgcGF0aCA9ICdzb21lX3BhdGgnCisgICAgICAgIG5hbWUgPSAnc29tZV9uYW1lJworICAgICAgICBsb2FkZXIgPSBUZXN0ZXIobmFtZSwgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGxvYWRlci5nZXRfZmlsZW5hbWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCBsb2FkZXIuZ2V0X2ZpbGVuYW1lKE5vbmUpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGxvYWRlci5nZXRfZmlsZW5hbWUobmFtZSArICdYWFgnKQorCiAgICAgIyBbYmFzaWNdCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ190ZW1wJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAgICAgICAgICAgICBjaGVjayA9IHsnX19uYW1lX18nOiAnX3RlbXAnLCAnX19maWxlX18nOiBtYXBwaW5nWydfdGVtcCddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJzogJyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTM3LDEwICs3NCwxMCBAQAogCiAgICAgZGVmIHRlc3RfcGFja2FnZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3BrZy5fX2luaXRfXycpIGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdfcGtnJyBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19wa2cnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnJywgJ19fZmlsZV9fJzogbWFwcGluZ1snX3BrZy5fX2luaXRfXyddLAogICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogW29zLnBhdGguZGlybmFtZShtYXBwaW5nWydfcGtnLl9faW5pdF9fJ10pXSwKICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXyc6ICdfcGtnJ30KQEAgLTUwLDEwICs4NywxMCBAQAogCiAgICAgZGVmIHRlc3RfbGFja2luZ19wYXJlbnQoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ19wa2cuX19pbml0X18nLCAnX3BrZy5tb2QnKWFzIG1hcHBpbmc6Ci0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfcGtnLm1vZCcsCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3BrZy5tb2QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbJ19wa2cubW9kJ10pCiAgICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ19wa2cubW9kJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3BrZy5tb2QnIGluIHN5cy5tb2R1bGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignX3BrZy5tb2QnLCBzeXMubW9kdWxlcykKICAgICAgICAgICAgIGNoZWNrID0geydfX25hbWVfXyc6ICdfcGtnLm1vZCcsICdfX2ZpbGVfXyc6IG1hcHBpbmdbJ19wa2cubW9kJ10sCiAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nOiAnX3BrZyd9CiAgICAgICAgICAgICBmb3IgYXR0ciwgdmFsdWUgaW4gY2hlY2suaXRlbXMoKToKQEAgLTY1LDE5ICsxMDIsMTQgQEAKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXVzZShzZWxmKToKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgotICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQorICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKICAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgbW9kdWxlX2lkID0gaWQobW9kdWxlKQogICAgICAgICAgICAgbW9kdWxlX2RpY3RfaWQgPSBpZChtb2R1bGUuX19kaWN0X18pCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1snX3RlbXAnXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoInRlc3RpbmdfdmFyID0gNDJcbiIpCi0gICAgICAgICAgICAjIEZvciBmaWxlc3lzdGVtcyB3aGVyZSB0aGUgbXRpbWUgaXMgb25seSB0byBhIHNlY29uZCBncmFudWxhcml0eSwKLSAgICAgICAgICAgICMgZXZlcnl0aGluZyB0aGF0IGhhcyBoYXBwZW5lZCBhYm92ZSBjYW4gYmUgdG9vIGZhc3Q7Ci0gICAgICAgICAgICAjIGZvcmNlIGFuIG10aW1lIG9uIHRoZSBzb3VyY2UgdGhhdCBpcyBndWFyYW50ZWVkIHRvIGJlIGRpZmZlcmVudAotICAgICAgICAgICAgIyB0aGFuIHRoZSBvcmlnaW5hbCBtdGltZS4KLSAgICAgICAgICAgIGxvYWRlci5wYXRoX210aW1lID0gc2VsZi5mYWtlX210aW1lKGxvYWRlci5wYXRoX210aW1lKQogICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RpbmdfdmFyJyBpbiBtb2R1bGUuX19kaWN0X18sCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0ZXN0aW5nX3ZhcicsIG1vZHVsZS5fX2RpY3RfXywKICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RpbmdfdmFyJyBub3QgaW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7MH0iLmZvcm1hdChsaXN0KG1vZHVsZS5fX2RpY3RfXy5rZXlzKCkpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLCBzeXMubW9kdWxlc1snX3RlbXAnXSkKQEAgLTk1LDcgKzEyNyw3IEBACiAgICAgICAgICAgICAgICAgc2V0YXR0cihvcmlnX21vZHVsZSwgYXR0ciwgdmFsdWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tuYW1lXSwgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGZpbGUud3JpdGUoJysrKyBiYWQgc3ludGF4ICsrKycpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCiAgICAgICAgICAgICBmb3IgYXR0ciBpbiBhdHRyaWJ1dGVzOgpAQCAtMTA2LDEwICsxMzgsMTAgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcygnX3RlbXAnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgd2l0aCBvcGVuKG1hcHBpbmdbJ190ZW1wJ10sICd3JykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKCc9JykKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgbWFwcGluZ1snX3RlbXAnXSkKKyAgICAgICAgICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnX3RlbXAnIG5vdCBpbiBzeXMubW9kdWxlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ190ZW1wJywgc3lzLm1vZHVsZXMpCiAKICAgICBkZWYgdGVzdF9maWxlX2Zyb21fZW1wdHlfc3RyaW5nX2RpcihzZWxmKToKICAgICAgICAgIyBMb2FkaW5nIGEgbW9kdWxlIGZvdW5kIGZyb20gYW4gZW1wdHkgc3RyaW5nIGVudHJ5IG9uIHN5cy5wYXRoIHNob3VsZApAQCAtMTE5LDcgKzE1MSw3IEBACiAgICAgICAgICAgICBmaWxlLndyaXRlKCIjIHRlc3QgZmlsZSBmb3IgaW1wb3J0bGliIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoJ190ZW1wJyk6Ci0gICAgICAgICAgICAgICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBmaWxlX3BhdGgpCisgICAgICAgICAgICAgICAgbG9hZGVyID0gbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIoJ190ZW1wJywgZmlsZV9wYXRoKQogICAgICAgICAgICAgICAgIG1vZCA9IGxvYWRlci5sb2FkX21vZHVsZSgnX3RlbXAnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsZV9wYXRoLCBtb2QuX19maWxlX18pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbXAuY2FjaGVfZnJvbV9zb3VyY2UoZmlsZV9wYXRoKSwKQEAgLTE0NSw3ICsxNzcsNyBAQAogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZ2V0YXR0cihlcnJubywgJ0VPVkVSRkxPVycsIE5vbmUpOgogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBzZXQgbW9kaWZpY2F0aW9uIHRpbWUgdG8gbGFyZ2UgaW50ZWdlciAoe30pIi5mb3JtYXQoZSkpCi0gICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VGaWxlTG9hZGVyKCdfdGVtcCcsIG1hcHBpbmdbJ190ZW1wJ10pCisgICAgICAgICAgICBsb2FkZXIgPSBtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignX3RlbXAnLCBtYXBwaW5nWydfdGVtcCddKQogICAgICAgICAgICAgbW9kID0gbG9hZGVyLmxvYWRfbW9kdWxlKCdfdGVtcCcpCiAgICAgICAgICAgICAjIFNhbml0eSBjaGVja3MuCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZC5fX2NhY2hlZF9fLCBjb21waWxlZCkKQEAgLTE1OSw3ICsxOTEsNyBAQAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKICAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIobW9kdWxlX25hbWUsIGZpbGUpCiAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShtb2R1bGVfbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKIAogICAgIGRlZiBtYW5pcHVsYXRlX2J5dGVjb2RlKHNlbGYsIG5hbWUsIG1hcHBpbmcsIG1hbmlwdWxhdG9yLCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9RmFsc2UpOgpAQCAtMjE1LDEwICsyNDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKIAorICAgIGRlZiBfdGVzdF9wYXJ0aWFsX3NpemUoc2VsZiwgdGVzdCwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGJjX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKKyAgICAgICAgICAgIHRlc3QoJ190ZW1wJywgbWFwcGluZywgYmNfcGF0aCkKKwogICAgIGRlZiBfdGVzdF9ub19tYXJzaGFsKHNlbGYsICosIGRlbF9zb3VyY2U9RmFsc2UpOgogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdfdGVtcCcpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBiY19wYXRoID0gc2VsZi5tYW5pcHVsYXRlX2J5dGVjb2RlKCdfdGVtcCcsIG1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgYmM6IGJjWzo4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbF9zb3VyY2U9ZGVsX3NvdXJjZSkKICAgICAgICAgICAgIGZpbGVfcGF0aCA9IG1hcHBpbmdbJ190ZW1wJ10gaWYgbm90IGRlbF9zb3VyY2UgZWxzZSBiY19wYXRoCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yKToKQEAgLTIyNywxNiArMjY2LDE4IEBACiAgICAgZGVmIF90ZXN0X25vbl9jb2RlX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgbWFyc2hhbC5kdW1wcyhiJ2FiY2QnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjEyXSArIG1hcnNoYWwuZHVtcHMoYidhYmNkJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxfc291cmNlPWRlbF9zb3VyY2UpCiAgICAgICAgICAgICBmaWxlX3BhdGggPSBtYXBwaW5nWydfdGVtcCddIGlmIG5vdCBkZWxfc291cmNlIGVsc2UgYnl0ZWNvZGVfcGF0aAotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oZmlsZV9wYXRoLCAnX3RlbXAnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgJ190ZW1wJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICBkZWYgX3Rlc3RfYmFkX21hcnNoYWwoc2VsZiwgKiwgZGVsX3NvdXJjZT1GYWxzZSk6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ190ZW1wJykgYXMgbWFwcGluZzoKICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGggPSBzZWxmLm1hbmlwdWxhdGVfYnl0ZWNvZGUoJ190ZW1wJywgbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBiYzogYmNbOjhdICsgYic8dGVzdD4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIGJjOiBiY1s6MTJdICsgYic8dGVzdD4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1kZWxfc291cmNlKQogICAgICAgICAgICAgZmlsZV9wYXRoID0gbWFwcGluZ1snX3RlbXAnXSBpZiBub3QgZGVsX3NvdXJjZSBlbHNlIGJ5dGVjb2RlX3BhdGgKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRU9GRXJyb3IpOgpAQCAtMjUxLDcgKzI5Miw3IEBACiAKIGNsYXNzIFNvdXJjZUxvYWRlckJhZEJ5dGVjb2RlVGVzdChCYWRCeXRlY29kZVRlc3QpOgogCi0gICAgbG9hZGVyID0gX2Jvb3RzdHJhcC5fU291cmNlRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyCiAKICAgICBAc291cmNlX3V0aWwud3JpdGVzX2J5dGVjb2RlX2ZpbGVzCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKQEAgLTI2MCw3ICszMDEsNyBAQAogICAgICAgICBkZWYgdGVzdChuYW1lLCBtYXBwaW5nLCBieXRlY29kZV9wYXRoKToKICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhtYXBwaW5nW25hbWVdLCBuYW1lKQogICAgICAgICAgICAgd2l0aCBvcGVuKGJ5dGVjb2RlX3BhdGgsICdyYicpIGFzIGZpbGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihmaWxlLnJlYWQoKSksIDEyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfZW1wdHlfZmlsZSh0ZXN0KQogCkBAIC0yNjgsNyArMzA5LDcgQEAKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKICAgICAgICAgICAgIHdpdGggb3BlbihieXRlY29kZV9wYXRoLCAncmInKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCA4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKIAogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCkKIApAQCAtMjc5LDcgKzMyMCw3IEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYnl0ZWNvZGVfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9tYWdpY19vbmx5KHRlc3QpCiAKQEAgLTMwMSwxMSArMzQyLDIyIEBACiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJjX3BhdGgpOgogICAgICAgICAgICAgc2VsZi5pbXBvcnRfKG1hcHBpbmdbbmFtZV0sIG5hbWUpCiAgICAgICAgICAgICB3aXRoIG9wZW4oYmNfcGF0aCwgJ3JiJykgYXMgZmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgOCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKGZpbGUucmVhZCgpKSwgMTIpCiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0KQogCiAgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcworICAgIGRlZiB0ZXN0X3BhcnRpYWxfc2l6ZShzZWxmKToKKyAgICAgICAgIyBXaGVuIHRoZSBzaXplIGlzIHBhcnRpYWwsIHJlZ2VuZXJhdGUgdGhlIC5weWMsIGVsc2UKKyAgICAgICAgIyByYWlzZSBFT0ZFcnJvci4KKyAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYmNfcGF0aCk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF8obWFwcGluZ1tuYW1lXSwgbmFtZSkKKyAgICAgICAgICAgIHdpdGggb3BlbihiY19wYXRoLCAncmInKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oZmlsZS5yZWFkKCkpLCAxMikKKworICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfc2l6ZSh0ZXN0KQorCisgICAgQHNvdXJjZV91dGlsLndyaXRlc19ieXRlY29kZV9maWxlcwogICAgIGRlZiB0ZXN0X25vX21hcnNoYWwoc2VsZik6CiAgICAgICAgICMgV2hlbiB0aGVyZSBpcyBvbmx5IHRoZSBtYWdpYyBudW1iZXIgYW5kIHRpbWVzdGFtcCwgcmFpc2UgRU9GRXJyb3IuCiAgICAgICAgIHNlbGYuX3Rlc3Rfbm9fbWFyc2hhbCgpCkBAIC0zNjQsMTkgKzQxNiwyMyBAQAogCiBjbGFzcyBTb3VyY2VsZXNzTG9hZGVyQmFkQnl0ZWNvZGVUZXN0KEJhZEJ5dGVjb2RlVGVzdCk6CiAKLSAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLl9Tb3VyY2VsZXNzRmlsZUxvYWRlcgorICAgIGxvYWRlciA9IG1hY2hpbmVyeS5Tb3VyY2VsZXNzRmlsZUxvYWRlcgogCiAgICAgZGVmIHRlc3RfZW1wdHlfZmlsZShzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9lbXB0eV9maWxlKHRlc3QsIGRlbF9zb3VyY2U9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3BhcnRpYWxfbWFnaWMoc2VsZik6CiAgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICBzZWxmLmltcG9ydF8oYnl0ZWNvZGVfcGF0aCwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLm5hbWUsIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5wYXRoLCBieXRlY29kZV9wYXRoKQogICAgICAgICBzZWxmLl90ZXN0X3BhcnRpYWxfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCiAgICAgZGVmIHRlc3RfbWFnaWNfb25seShzZWxmKToKQEAgLTM4OCw4ICs0NDQsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2JhZF9tYWdpYyhzZWxmKToKICAgICAgICAgZGVmIHRlc3QobmFtZSwgbWFwcGluZywgYnl0ZWNvZGVfcGF0aCk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0XyhieXRlY29kZV9wYXRoLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ubmFtZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLnBhdGgsIGJ5dGVjb2RlX3BhdGgpCiAKICAgICAgICAgc2VsZi5fdGVzdF9iYWRfbWFnaWModGVzdCwgZGVsX3NvdXJjZT1UcnVlKQogCkBAIC00MDAsNiArNDU4LDEzIEBACiAKICAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3RpbWVzdGFtcCh0ZXN0LCBkZWxfc291cmNlPVRydWUpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aWFsX3NpemUoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KG5hbWUsIG1hcHBpbmcsIGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFT0ZFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5pbXBvcnRfKGJ5dGVjb2RlX3BhdGgsIG5hbWUpCisKKyAgICAgICAgc2VsZi5fdGVzdF9wYXJ0aWFsX3NpemUodGVzdCwgZGVsX3NvdXJjZT1UcnVlKQorCiAgICAgZGVmIHRlc3Rfbm9fbWFyc2hhbChzZWxmKToKICAgICAgICAgc2VsZi5fdGVzdF9ub19tYXJzaGFsKGRlbF9zb3VyY2U9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2ZpbmRlci5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3RfZmluZGVyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKaW5kZXggN2I5MDg4ZC4uOGJjMTZhNSAxMDA2NDQKLS0tIGEvTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS90ZXN0X2ZpbmRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maW5kZXIucHkKQEAgLTEsMTAgKzEsMTIgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4uIGltcG9ydCBhYmMKIGZyb20gLiBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwotaW1wb3J0IG9zCisKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIGltcG9ydCBlcnJubworaW1wb3J0IGltcAoraW1wb3J0IG9zCiBpbXBvcnQgcHlfY29tcGlsZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IG1ha2VfbGVnYWN5X3B5YwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIApAQCAtMzMsMTEgKzM1LDE1IEBACiAKICAgICAiIiIKIAorICAgIGRlZiBnZXRfZmluZGVyKHNlbGYsIHJvb3QpOgorICAgICAgICBsb2FkZXJfZGV0YWlscyA9IFsobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWNoaW5lcnkuU291cmNlbGVzc0ZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkJZVEVDT0RFX1NVRkZJWEVTKV0KKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyKHJvb3QsICpsb2FkZXJfZGV0YWlscykKKwogICAgIGRlZiBpbXBvcnRfKHNlbGYsIHJvb3QsIG1vZHVsZSk6Ci0gICAgICAgIGZpbmRlciA9IF9ib290c3RyYXAuX0ZpbGVGaW5kZXIocm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl9Tb3VyY2VGaW5kZXJEZXRhaWxzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fU291cmNlbGVzc0ZpbmRlckRldGFpbHMoKSkKLSAgICAgICAgcmV0dXJuIGZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9maW5kZXIocm9vdCkuZmluZF9tb2R1bGUobW9kdWxlKQogCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHRlc3QsIGNyZWF0ZT1Ob25lLCAqLCBjb21waWxlXz1Ob25lLCB1bmxpbms9Tm9uZSk6CiAgICAgICAgICIiIlRlc3QgdGhlIGZpbmRpbmcgb2YgJ3Rlc3QnIHdpdGggdGhlIGNyZWF0aW9uIG9mIG1vZHVsZXMgbGlzdGVkIGluCkBAIC0xMDIsMzkgKzEwOCwyMSBAQAogICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5pbXBvcnRfKHBrZ19kaXIsICdwa2cuc3ViJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGxvYWRlciwgJ2xvYWRfbW9kdWxlJykpCiAKLSAgICAjIFtzdWIgZW1wdHldCi0gICAgZGVmIHRlc3RfZW1wdHlfc3ViX2RpcmVjdG9yeShzZWxmKToKLSAgICAgICAgY29udGV4dCA9IHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLnN1Yi5fX2luaXRfXycpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiLCBJbXBvcnRXYXJuaW5nKQotICAgICAgICAgICAgd2l0aCBjb250ZXh0IGFzIG1hcHBpbmc6Ci0gICAgICAgICAgICAgICAgb3MudW5saW5rKG1hcHBpbmdbJ3BrZy5zdWIuX19pbml0X18nXSkKLSAgICAgICAgICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5kaXJuYW1lKG1hcHBpbmdbJ3BrZy5fX2luaXRfXyddKQotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0V2FybmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW1wb3J0Xyhwa2dfZGlyLCAncGtnLnN1YicpCi0KICAgICAjIFtwYWNrYWdlIG92ZXIgbW9kdWxlc10KICAgICBkZWYgdGVzdF9wYWNrYWdlX292ZXJfbW9kdWxlKHNlbGYpOgogICAgICAgICBuYW1lID0gJ190ZW1wJwogICAgICAgICBsb2FkZXIgPSBzZWxmLnJ1bl90ZXN0KG5hbWUsIHsnezB9Ll9faW5pdF9fJy5mb3JtYXQobmFtZSksIG5hbWV9KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ19faW5pdF9fJyBpbiBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpKQotCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ19faW5pdF9fJywgbG9hZGVyLmdldF9maWxlbmFtZShuYW1lKSkKIAogICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2JsYWgnKSBhcyBtYXBwaW5nOgogICAgICAgICAgICAgbm90aGluZyA9IHNlbGYuaW1wb3J0XyhtYXBwaW5nWycucm9vdCddLCAnc2Rmc2Fkc2FkZicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90aGluZyBpcyBOb25lKQotCi0gICAgIyBbZW1wdHkgZGlyXQotICAgIGRlZiB0ZXN0X2VtcHR5X2RpcihzZWxmKToKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIEltcG9ydFdhcm5pbmcpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydFdhcm5pbmcpOgotICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoJ3BrZycsIHsncGtnLl9faW5pdF9fJ30sIHVubGluaz17J3BrZy5fX2luaXRfXyd9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobm90aGluZykKIAogICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZ19mb3JfZGlyKHNlbGYpOgogICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgZnJvbSBzeXMucGF0aCBtZWFucyB0byBzZWFyY2ggaW4gdGhlIGN3ZC4KLSAgICAgICAgZmluZGVyID0gX2Jvb3RzdHJhcC5fRmlsZUZpbmRlcignJywgX2Jvb3RzdHJhcC5fU291cmNlRmluZGVyRGV0YWlscygpKQorICAgICAgICBmaW5kZXIgPSBtYWNoaW5lcnkuRmlsZUZpbmRlcignJywgKG1hY2hpbmVyeS5Tb3VyY2VGaWxlTG9hZGVyLAorICAgICAgICAgICAgbWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUykpCiAgICAgICAgIHdpdGggb3BlbignbW9kLnB5JywgJ3cnKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0ZSgiIyB0ZXN0IGZpbGUgZm9yIGltcG9ydGxpYiIpCiAgICAgICAgIHRyeToKQEAgLTE0Myw2ICsxMzEsMjEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnVubGluaygnbW9kLnB5JykKIAorICAgIGRlZiB0ZXN0X2ludmFsaWRhdGVfY2FjaGVzKHNlbGYpOgorICAgICAgICAjIGludmFsaWRhdGVfY2FjaGVzKCkgc2hvdWxkIHJlc2V0IHRoZSBtdGltZS4KKyAgICAgICAgZmluZGVyID0gbWFjaGluZXJ5LkZpbGVGaW5kZXIoJycsIChtYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgIG1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpKQorICAgICAgICBmaW5kZXIuX3BhdGhfbXRpbWUgPSA0MgorICAgICAgICBmaW5kZXIuaW52YWxpZGF0ZV9jYWNoZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbmRlci5fcGF0aF9tdGltZSwgLTEpCisKKyAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE0ODQ2CisgICAgZGVmIHRlc3RfZGlyX3JlbW92YWxfaGFuZGxpbmcoc2VsZik6CisgICAgICAgIG1vZCA9ICdtb2QnCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobW9kKSBhcyBtYXBwaW5nOgorICAgICAgICAgICAgZmluZGVyID0gc2VsZi5nZXRfZmluZGVyKG1hcHBpbmdbJy5yb290J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kZXIuZmluZF9tb2R1bGUobW9kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmluZGVyLmZpbmRfbW9kdWxlKG1vZCkpCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE3ODc5MgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpAQCAtMCwwICsxLDMyIEBACitmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKKworZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IGltcAoraW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgUGF0aEhvb2tUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3QgdGhlIHBhdGggaG9vayBmb3Igc291cmNlLiIiIgorCisgICAgZGVmIHBhdGhfaG9vayhzZWxmKToKKyAgICAgICAgcmV0dXJuIG1hY2hpbmVyeS5GaWxlRmluZGVyLnBhdGhfaG9vaygobWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICBtYWNoaW5lcnkuU09VUkNFX1NVRkZJWEVTKSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMoJ2R1bW15JykgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkobWFwcGluZ1snLnJvb3QnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9tb2R1bGUnKSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgIyBUaGUgZW1wdHkgc3RyaW5nIHJlcHJlc2VudHMgdGhlIGN3ZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc2VsZi5wYXRoX2hvb2soKSgnJyksICdmaW5kX21vZHVsZScpKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KFBhdGhIb29rVGVzdCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQppbmRleCA3OTRhM2RmLi4wY2E1MTk1IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQpAQCAtMSw2ICsxLDYgQEAKLWZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwCiBmcm9tIC4gaW1wb3J0IHV0aWwgYXMgc291cmNlX3V0aWwKIAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IF9ib290c3RyYXAKIGltcG9ydCBjb2RlY3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMzUsOCArMzUsOCBAQAogICAgICAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKHNlbGYubW9kdWxlX25hbWUpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICB3aXRoIG9wZW4obWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbc2VsZi5tb2R1bGVfbmFtZV0pCisgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIoc2VsZi5tb2R1bGVfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tzZWxmLm1vZHVsZV9uYW1lXSkKICAgICAgICAgICAgIHJldHVybiBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKIAogICAgIGRlZiBjcmVhdGVfc291cmNlKHNlbGYsIGVuY29kaW5nKToKQEAgLTk3LDcgKzk3LDcgQEAKICAgICAgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhtb2R1bGVfbmFtZSkgYXMgbWFwcGluZzoKICAgICAgICAgICAgIHdpdGggb3BlbihtYXBwaW5nW21vZHVsZV9uYW1lXSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKHNvdXJjZSkKLSAgICAgICAgICAgIGxvYWRlciA9IF9ib290c3RyYXAuX1NvdXJjZUZpbGVMb2FkZXIobW9kdWxlX25hbWUsCisgICAgICAgICAgICBsb2FkZXIgPSBfYm9vdHN0cmFwLlNvdXJjZUZpbGVMb2FkZXIobW9kdWxlX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1ttb2R1bGVfbmFtZV0pCiAgICAgICAgICAgICByZXR1cm4gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvaW1wb3J0bGliL3Rlc3Qvc291cmNlL3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3NvdXJjZS91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdXRpbC5weQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gTGliL2ltcG9ydGxpYi90ZXN0L3Rlc3RfYWJjLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weQppbmRleCAwZWNiZTM5Li5jNjIwYzM3IDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hYmMucHkKQEAgLTMwLDEwICszMCwxNyBAQAogICAgICAgICAgICAgICAgInswfSBpcyBub3QgYSBzdXBlcmNsYXNzIG9mIHsxfSIuZm9ybWF0KHN1cGVyY2xhc3MsIHNlbGYuX190ZXN0KSkKIAogCi1jbGFzcyBGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgTWV0YVBhdGhGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5GaW5kZXJdCiAgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuQnVpbHRpbkltcG9ydGVyLCBtYWNoaW5lcnkuRnJvemVuSW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5QYXRoRmluZGVyXQorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lcnkuUGF0aEZpbmRlciwgbWFjaGluZXJ5LldpbmRvd3NSZWdpc3RyeUZpbmRlcl0KKworCitjbGFzcyBQYXRoRW50cnlGaW5kZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5GaW5kZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuRmlsZUZpbmRlcl0KIAogCiBjbGFzcyBMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTAsNyArNTcsNyBAQAogCiAgICAgc3VwZXJjbGFzc2VzID0gW2FiYy5Mb2FkZXJdCiAgICAgc3ViY2xhc3NlcyA9IFthYmMuUHlMb2FkZXIsIG1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcl0KKyAgICAgICAgICAgICAgICAgICAgbWFjaGluZXJ5LkZyb3plbkltcG9ydGVyLCBtYWNoaW5lcnkuRXh0ZW5zaW9uRmlsZUxvYWRlcl0KIAogCiBjbGFzcyBFeGVjdXRpb25Mb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTksOSArNjYsMTYgQEAKICAgICBzdWJjbGFzc2VzID0gW2FiYy5QeUxvYWRlcl0KIAogCitjbGFzcyBGaWxlTG9hZGVyKEluaGVyaXRhbmNlVGVzdHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIHN1cGVyY2xhc3NlcyA9IFthYmMuUmVzb3VyY2VMb2FkZXIsIGFiYy5FeGVjdXRpb25Mb2FkZXJdCisgICAgc3ViY2xhc3NlcyA9IFttYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwgbWFjaGluZXJ5LlNvdXJjZWxlc3NGaWxlTG9hZGVyXQorCisKIGNsYXNzIFNvdXJjZUxvYWRlcihJbmhlcml0YW5jZVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdXBlcmNsYXNzZXMgPSBbYWJjLlJlc291cmNlTG9hZGVyLCBhYmMuRXhlY3V0aW9uTG9hZGVyXQorICAgIHN1YmNsYXNzZXMgPSBbbWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXJdCiAKIAogY2xhc3MgUHlMb2FkZXIoSW5oZXJpdGFuY2VUZXN0cywgdW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjY2MjlhCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkKQEAgLTAsMCArMSwxODcgQEAKK2Zyb20gLiBpbXBvcnQgdXRpbAoraW1wb3J0IGltcAoraW1wb3J0IGltcG9ydGxpYgorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IG1hY2hpbmVyeQoraW1wb3J0IHN5cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBJbXBvcnRNb2R1bGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlLiIiIgorCisgICAgZGVmIHRlc3RfbW9kdWxlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIHRvcC1sZXZlbCBtb2R1bGUuCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoJ3RvcF9sZXZlbCcpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCd0b3BfbGV2ZWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAndG9wX2xldmVsJykKKworICAgIGRlZiB0ZXN0X2Fic29sdXRlX3BhY2thZ2VfaW1wb3J0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSBwYWNrYWdlIHdpdGggYW4gYWJzb2x1dGUgbmFtZS4KKyAgICAgICAgcGtnX25hbWUgPSAncGtnJworICAgICAgICBwa2dfbG9uZ19uYW1lID0gJ3swfS5fX2luaXRfXycuZm9ybWF0KHBrZ19uYW1lKQorICAgICAgICBuYW1lID0gJ3swfS5tb2QnLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBuYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShuYW1lKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCBuYW1lKQorCisgICAgZGVmIHRlc3Rfc2hhbGxvd19yZWxhdGl2ZV9wYWNrYWdlX2ltcG9ydChzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB0aHJvdWdoIGEgcmVsYXRpdmUgaW1wb3J0LgorICAgICAgICBwa2dfbmFtZSA9ICdwa2cnCisgICAgICAgIHBrZ19sb25nX25hbWUgPSAnezB9Ll9faW5pdF9fJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ21vZCcKKyAgICAgICAgYWJzb2x1dGVfbmFtZSA9ICd7MH0uezF9Jy5mb3JtYXQocGtnX25hbWUsIG1vZHVsZV9uYW1lKQorICAgICAgICByZWxhdGl2ZV9uYW1lID0gJy57MH0nLmZvcm1hdChtb2R1bGVfbmFtZSkKKyAgICAgICAgd2l0aCB1dGlsLm1vY2tfbW9kdWxlcyhwa2dfbG9uZ19uYW1lLCBhYnNvbHV0ZV9uYW1lKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZShyZWxhdGl2ZV9uYW1lLCBwa2dfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgYWJzb2x1dGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X2RlZXBfcmVsYXRpdmVfcGFja2FnZV9pbXBvcnQoc2VsZik6CisgICAgICAgIG1vZHVsZXMgPSBbJ2EuX19pbml0X18nLCAnYS5iLl9faW5pdF9fJywgJ2EuYyddCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMoKm1vZHVsZXMpIGFzIG1vY2s6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bbW9ja10pOgorICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCdhJykKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLi5jJywgJ2EuYicpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdhLmMnKQorCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0X3dpdGhfcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSB3aXRoIGFuIGFic29sdXRlIG5hbWUgd2l0aAorICAgICAgICAjIHRoZSAncGFja2FnZScgYXJndW1lbnQgZ2l2ZW4uCisgICAgICAgIHBrZ19uYW1lID0gJ3BrZycKKyAgICAgICAgcGtnX2xvbmdfbmFtZSA9ICd7MH0uX19pbml0X18nLmZvcm1hdChwa2dfbmFtZSkKKyAgICAgICAgbmFtZSA9ICd7MH0ubW9kJy5mb3JtYXQocGtnX25hbWUpCisgICAgICAgIHdpdGggdXRpbC5tb2NrX21vZHVsZXMocGtnX2xvbmdfbmFtZSwgbmFtZSkgYXMgbW9jazoKKyAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVttb2NrXSk6CisgICAgICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUocGtnX25hbWUpCisgICAgICAgICAgICAgICAgbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSwgcGtnX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRfd29fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyBSZWxhdGl2ZSBpbXBvcnRzIGNhbm5vdCBoYXBwZW4gd2l0aG91dCB0aGUgJ3BhY2thZ2UnIGFyZ3VtZW50IGJlaW5nCisgICAgICAgICMgc2V0LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnLnN1cHBvcnQnKQorCisKKyAgICBkZWYgdGVzdF9sb2FkZWRfb25jZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTM1OTE6IE1vZHVsZXMgc2hvdWxkIG9ubHkgYmUgbG9hZGVkIG9uY2Ugd2hlbgorICAgICAgICAjIGluaXRpYWxpemluZyB0aGUgcGFyZW50IHBhY2thZ2UgYXR0ZW1wdHMgdG8gaW1wb3J0IHRoZQorICAgICAgICAjIG1vZHVsZSBjdXJyZW50bHkgYmVpbmcgaW1wb3J0ZWQuCisgICAgICAgIGJfbG9hZF9jb3VudCA9IDAKKyAgICAgICAgZGVmIGxvYWRfYSgpOgorICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJ2EuYicpCisgICAgICAgIGRlZiBsb2FkX2IoKToKKyAgICAgICAgICAgIG5vbmxvY2FsIGJfbG9hZF9jb3VudAorICAgICAgICAgICAgYl9sb2FkX2NvdW50ICs9IDEKKyAgICAgICAgY29kZSA9IHsnYSc6IGxvYWRfYSwgJ2EuYic6IGxvYWRfYn0KKyAgICAgICAgbW9kdWxlcyA9IFsnYS5fX2luaXRfXycsICdhLmInXQorICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCptb2R1bGVzLCBtb2R1bGVfY29kZT1jb2RlKSBhcyBtb2NrOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W21vY2tdKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnYS5iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiX2xvYWRfY291bnQsIDEpCisKKworY2xhc3MgRmluZExvYWRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGNsYXNzIEZha2VNZXRhRmluZGVyOgorICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgIGRlZiBmaW5kX21vZHVsZShuYW1lLCBwYXRoPU5vbmUpOiByZXR1cm4gbmFtZSwgcGF0aAorCisgICAgZGVmIHRlc3Rfc3lzX21vZHVsZXMoc2VsZik6CisgICAgICAgICMgSWYgYSBtb2R1bGUgd2l0aCBfX2xvYWRlcl9fIGlzIGluIHN5cy5tb2R1bGVzLCB0aGVuIHJldHVybiBpdC4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbG9hZGVyID0gJ2EgbG9hZGVyIScKKyAgICAgICAgICAgIG1vZHVsZS5fX2xvYWRlcl9fID0gbG9hZGVyCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgZm91bmQgPSBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLCBmb3VuZCkKKworICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzX2xvYWRlcl9pc19Ob25lKHNlbGYpOgorICAgICAgICAjIElmIHN5cy5tb2R1bGVzW25hbWVdLl9fbG9hZGVyX18gaXMgTm9uZSwgcmFpc2UgVmFsdWVFcnJvci4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZShuYW1lKQorICAgICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBOb25lCisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkKKworICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6CisgICAgICAgICMgUmV0dXJuIHRoZSBsb2FkZXIgZm91bmQgb24gc3lzLm1ldGFfcGF0aC4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1bc2VsZi5GYWtlTWV0YUZpbmRlcl0pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKG5hbWUsIE5vbmUpLCBpbXBvcnRsaWIuZmluZF9sb2FkZXIobmFtZSkpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzX3BhdGgoc2VsZik6CisgICAgICAgICMgU2VhcmNoaW5nIG9uIGEgcGF0aCBzaG91bGQgd29yay4KKyAgICAgICAgbmFtZSA9ICdzb21lX21vZCcKKyAgICAgICAgcGF0aCA9ICdwYXRoIHRvIHNvbWUgcGxhY2UnCisgICAgICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShtZXRhX3BhdGg9W3NlbGYuRmFrZU1ldGFGaW5kZXJdKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChuYW1lLCBwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGxpYi5maW5kX2xvYWRlcihuYW1lLCBwYXRoKSkKKworICAgIGRlZiB0ZXN0X25vdGhpbmcoc2VsZik6CisgICAgICAgICMgTm9uZSBpcyByZXR1cm5lZCB1cG9uIGZhaWx1cmUgdG8gZmluZCBhIGxvYWRlci4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoaW1wb3J0bGliLmZpbmRfbG9hZGVyKCduZXZlcmdvaW5ndG9maW5kdGhpc21vZHVsZScpKQorCisKK2NsYXNzIEludmFsaWRhdGVDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsZWQoc2VsZik6CisgICAgICAgICMgSWYgZGVmaW5lZCB0aGUgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQuCisgICAgICAgIGNsYXNzIEludmFsaWRhdGluZ051bGxGaW5kZXI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKmlnbm9yZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCAqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgICAgIGRlZiBpbnZhbGlkYXRlX2NhY2hlcyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKworICAgICAgICBrZXkgPSAnZ29ibGVkZWVnb29rJworICAgICAgICBtZXRhX2lucyA9IEludmFsaWRhdGluZ051bGxGaW5kZXIoKQorICAgICAgICBwYXRoX2lucyA9IEludmFsaWRhdGluZ051bGxGaW5kZXIoKQorICAgICAgICBzeXMubWV0YV9wYXRoLmluc2VydCgwLCBtZXRhX2lucykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxhbWJkYTogc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuX19kZWxpdGVtX18oa2V5KSkKKyAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGVba2V5XSA9IHBhdGhfaW5zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsYW1iZGE6IHN5cy5tZXRhX3BhdGgucmVtb3ZlKG1ldGFfaW5zKSkKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ldGFfaW5zLmNhbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGhfaW5zLmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X21ldGhvZF9sYWNraW5nKHNlbGYpOgorICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSBubyBpc3N1ZXMgaWYgdGhlIG1ldGhvZCBpcyBub3QgZGVmaW5lZC4KKyAgICAgICAga2V5ID0gJ2dvYmJsZWRlZWdvb2snCisgICAgICAgIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlW2tleV0gPSBpbXAuTnVsbEltcG9ydGVyKCdhYmMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAobGFtYmRhOiBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZS5fX2RlbGl0ZW1fXyhrZXkpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSAgIyBTaG91bGRuJ3QgdHJpZ2dlciBhbiBleGNlcHRpb24uCisKKworY2xhc3MgRnJvemVuSW1wb3J0bGliVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fZnJvemVuX2ltcG9ydGxpYihzZWxmKToKKyAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byBpbXBvcnQgdy9vIF9mcm96ZW5faW1wb3J0bGliIGJlaW5nIGRlZmluZWQuCisgICAgICAgIG1vZHVsZSA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnaW1wb3J0bGliJywgYmxvY2tlZD1bJ19mcm96ZW5faW1wb3J0bGliJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShtb2R1bGUuX19sb2FkZXJfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVyeS5Gcm96ZW5JbXBvcnRlcikpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKKyAgICBydW5fdW5pdHRlc3QoSW1wb3J0TW9kdWxlVGVzdHMsCisgICAgICAgICAgICAgICAgIEZpbmRMb2FkZXJUZXN0cywKKyAgICAgICAgICAgICAgICAgSW52YWxpZGF0ZUNhY2hlVGVzdHMsCisgICAgICAgICAgICAgICAgIEZyb3plbkltcG9ydGxpYlRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNzNiMTEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CkBAIC0wLDAgKzEsMTI5IEBACitmcm9tIGltcG9ydGxpYiBpbXBvcnQgX2Jvb3RzdHJhcAoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKKworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorZWxzZToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IGxvY2tfdGVzdHMKKworCitMb2NrVHlwZSA9IF9ib290c3RyYXAuX01vZHVsZUxvY2sKK0RlYWRsb2NrRXJyb3IgPSBfYm9vdHN0cmFwLl9EZWFkbG9ja0Vycm9yCisKKworaWYgdGhyZWFkaW5nIGlzIG5vdCBOb25lOgorICAgIGNsYXNzIE1vZHVsZUxvY2tBc1JMb2NrVGVzdHMobG9ja190ZXN0cy5STG9ja1Rlc3RzKToKKyAgICAgICAgbG9ja3R5cGUgPSBzdGF0aWNtZXRob2QobGFtYmRhOiBMb2NrVHlwZSgic29tZV9sb2NrIikpCisKKyAgICAgICAgIyBfaXNfb3duZWQoKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X19pc19vd25lZCA9IE5vbmUKKyAgICAgICAgIyBhY3F1aXJlKGJsb2NraW5nPUZhbHNlKSB1bnN1cHBvcnRlZAorICAgICAgICB0ZXN0X3RyeV9hY3F1aXJlID0gTm9uZQorICAgICAgICB0ZXN0X3RyeV9hY3F1aXJlX2NvbnRlbmRlZCA9IE5vbmUKKyAgICAgICAgIyBgd2l0aGAgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF93aXRoID0gTm9uZQorICAgICAgICAjIGFjcXVpcmUodGltZW91dD0uLi4pIHVuc3VwcG9ydGVkCisgICAgICAgIHRlc3RfdGltZW91dCA9IE5vbmUKKyAgICAgICAgIyBfcmVsZWFzZV9zYXZlKCkgdW5zdXBwb3J0ZWQKKyAgICAgICAgdGVzdF9yZWxlYXNlX3NhdmVfdW5hY3F1aXJlZCA9IE5vbmUKKworZWxzZToKKyAgICBjbGFzcyBNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgcGFzcworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgInRocmVhZHMgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQorY2xhc3MgRGVhZGxvY2tBdm9pZGFuY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYub2xkX3N3aXRjaGludGVydmFsID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgICAgIHN5cy5zZXRzd2l0Y2hpbnRlcnZhbCgwLjAwMDAwMSkKKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgc2VsZi5vbGRfc3dpdGNoaW50ZXJ2YWwgPSBOb25lCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYub2xkX3N3aXRjaGludGVydmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKHNlbGYub2xkX3N3aXRjaGludGVydmFsKQorCisgICAgZGVmIHJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChzZWxmLCBjcmVhdGVfZGVhZGxvY2spOgorICAgICAgICBOTE9DS1MgPSAxMAorICAgICAgICBsb2NrcyA9IFtMb2NrVHlwZShzdHIoaSkpIGZvciBpIGluIHJhbmdlKE5MT0NLUyldCisgICAgICAgIHBhaXJzID0gWyhsb2Nrc1tpXSwgbG9ja3NbKGkrMSklTkxPQ0tTXSkgZm9yIGkgaW4gcmFuZ2UoTkxPQ0tTKV0KKyAgICAgICAgaWYgY3JlYXRlX2RlYWRsb2NrOgorICAgICAgICAgICAgTlRIUkVBRFMgPSBOTE9DS1MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIE5USFJFQURTID0gTkxPQ0tTIC0gMQorICAgICAgICBiYXJyaWVyID0gdGhyZWFkaW5nLkJhcnJpZXIoTlRIUkVBRFMpCisgICAgICAgIHJlc3VsdHMgPSBbXQorICAgICAgICBkZWYgX2FjcXVpcmUobG9jayk6CisgICAgICAgICAgICAiIiJUcnkgdG8gYWNxdWlyZSB0aGUgbG9jay4gUmV0dXJuIFRydWUgb24gc3VjY2VzcywgRmFsc2Ugb24gZGVhZGxvY2suIiIiCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbG9jay5hY3F1aXJlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBEZWFkbG9ja0Vycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgYSwgYiA9IHBhaXJzLnBvcCgpCisgICAgICAgICAgICByYSA9IF9hY3F1aXJlKGEpCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmIgPSBfYWNxdWlyZShiKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHJhLCByYikpCisgICAgICAgICAgICBpZiByYjoKKyAgICAgICAgICAgICAgICBiLnJlbGVhc2UoKQorICAgICAgICAgICAgaWYgcmE6CisgICAgICAgICAgICAgICAgYS5yZWxlYXNlKCkKKyAgICAgICAgbG9ja190ZXN0cy5CdW5jaChmLCBOVEhSRUFEUykud2FpdF9mb3JfZmluaXNoZWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgTlRIUkVBRFMpCisgICAgICAgIHJldHVybiByZXN1bHRzCisKKyAgICBkZWYgdGVzdF9kZWFkbG9jayhzZWxmKToKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYucnVuX2RlYWRsb2NrX2F2b2lkYW5jZV90ZXN0KFRydWUpCisgICAgICAgICMgQXQgbGVhc3Qgb25lIG9mIHRoZSB0aHJlYWRzIGRldGVjdGVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIG9uIGl0cworICAgICAgICAjIHNlY29uZCBhY3F1aXJlKCkgY2FsbC4gIEl0IG1heSBiZSBzZXZlcmFsIG9mIHRoZW0sIGJlY2F1c2UgdGhlCisgICAgICAgICMgZGVhZGxvY2sgYXZvaWRhbmNlIG1lY2hhbmlzbSBpcyBjb25zZXJ2YXRpdmUuCisgICAgICAgIG5iX2RlYWRsb2NrcyA9IHJlc3VsdHMuY291bnQoKFRydWUsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobmJfZGVhZGxvY2tzLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpIC0gbmJfZGVhZGxvY2tzKQorCisgICAgZGVmIHRlc3Rfbm9fZGVhZGxvY2soc2VsZik6CisgICAgICAgIHJlc3VsdHMgPSBzZWxmLnJ1bl9kZWFkbG9ja19hdm9pZGFuY2VfdGVzdChGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KChUcnVlLCBGYWxzZSkpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMuY291bnQoKFRydWUsIFRydWUpKSwgbGVuKHJlc3VsdHMpKQorCisKK2NsYXNzIExpZmV0aW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbG9ja19saWZldGltZShzZWxmKToKKyAgICAgICAgbmFtZSA9ICJ4eXp6eSIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIGxvY2sgPSBfYm9vdHN0cmFwLl9nZXRfbW9kdWxlX2xvY2sobmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobG9jaykKKyAgICAgICAgZGVsIGxvY2sKKyAgICAgICAgc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihuYW1lLCBfYm9vdHN0cmFwLl9tb2R1bGVfbG9ja3MpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyKCkpCisKKyAgICBkZWYgdGVzdF9hbGxfbG9ja3Moc2VsZik6CisgICAgICAgIHN1cHBvcnQuZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKF9ib290c3RyYXAuX21vZHVsZV9sb2NrcyksIF9ib290c3RyYXAuX21vZHVsZV9sb2NrcykKKworCitAc3VwcG9ydC5yZWFwX3RocmVhZHMKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChNb2R1bGVMb2NrQXNSTG9ja1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgIERlYWRsb2NrQXZvaWRhbmNlVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTGlmZXRpbWVUZXN0cykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZjODk3NwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQpAQCAtMCwwICsxLDIwOCBAQAorZnJvbSBpbXBvcnRsaWIgaW1wb3J0IHV0aWwKK2Zyb20gLiBpbXBvcnQgdXRpbCBhcyB0ZXN0X3V0aWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xhc3MgTW9kdWxlRm9yTG9hZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgZm9yIGltcG9ydGxpYi51dGlsLm1vZHVsZV9mb3JfbG9hZGVyLiIiIgorCisgICAgZGVmIHJldHVybl9tb2R1bGUoc2VsZiwgbmFtZSk6CisgICAgICAgIGZ4biA9IHV0aWwubW9kdWxlX2Zvcl9sb2FkZXIobGFtYmRhIHNlbGYsIG1vZHVsZTogbW9kdWxlKQorICAgICAgICByZXR1cm4gZnhuKHNlbGYsIG5hbWUpCisKKyAgICBkZWYgcmFpc2VfZXhjZXB0aW9uKHNlbGYsIG5hbWUpOgorICAgICAgICBkZWYgdG9fd3JhcChzZWxmLCBtb2R1bGUpOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IKKyAgICAgICAgZnhuID0gdXRpbC5tb2R1bGVfZm9yX2xvYWRlcih0b193cmFwKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmeG4oc2VsZiwgbmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfbmV3X21vZHVsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgd2hlbiBubyBtb2R1bGUgZXhpc3RzIGluIHN5cy5tb2R1bGVzIGEgbmV3IG1vZHVsZSBpcworICAgICAgICAjIGNyZWF0ZWQuCisgICAgICAgIG1vZHVsZV9uYW1lID0gJ2EuYi5jJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG1vZHVsZV9uYW1lKToKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlX25hbWUsIHN5cy5tb2R1bGVzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlLCB0eXBlcy5Nb2R1bGVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbW9kdWxlX25hbWUpCisKKyAgICBkZWYgdGVzdF9yZWxvYWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgbW9kdWxlIGlzIHJldXNlZCBpZiBhbHJlYWR5IGluIHN5cy5tb2R1bGVzLgorICAgICAgICBuYW1lID0gJ2EuYi5jJworICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgnYS5iLmMnKQorICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIHJldHVybmVkX21vZHVsZSA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR1cm5lZF9tb2R1bGUsIHN5cy5tb2R1bGVzW25hbWVdKQorCisgICAgZGVmIHRlc3RfbmV3X21vZHVsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIG1vZHVsZSBpcyByZW1vdmVkIGZyb20gc3lzLm1vZHVsZXMgaWYgYWRkZWQgYnV0IGFuCisgICAgICAgICMgZXhjZXB0aW9uIGlzIHJhaXNlZC4KKyAgICAgICAgbmFtZSA9ICdhLmIuYycKKyAgICAgICAgd2l0aCB0ZXN0X3V0aWwudW5jYWNoZShuYW1lKToKKyAgICAgICAgICAgIHNlbGYucmFpc2VfZXhjZXB0aW9uKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG5hbWUsIHN5cy5tb2R1bGVzKQorCisgICAgZGVmIHRlc3RfcmVsb2FkX2ZhaWx1cmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZmFpbHVyZSBvbiByZWxvYWQgbGVhdmVzIHRoZSBtb2R1bGUgaW4tcGxhY2UuCisgICAgICAgIG5hbWUgPSAnYS5iLmMnCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICAgICAgc2VsZi5yYWlzZV9leGNlcHRpb24obmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLCBzeXMubW9kdWxlc1tuYW1lXSkKKworICAgIGRlZiB0ZXN0X2RlY29yYXRvcl9hdHRycyhzZWxmKToKKyAgICAgICAgZGVmIGZ4bihzZWxmLCBtb2R1bGUpOiBwYXNzCisgICAgICAgIHdyYXBwZWQgPSB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyKGZ4bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVkLl9fbmFtZV9fLCBmeG4uX19uYW1lX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX3F1YWxuYW1lX18sIGZ4bi5fX3F1YWxuYW1lX18pCisKKyAgICBkZWYgdGVzdF9mYWxzZV9tb2R1bGUoc2VsZik6CisgICAgICAgICMgSWYgZm9yIHNvbWUgb2RkIHJlYXNvbiBhIG1vZHVsZSBpcyBjb25zaWRlcmVkIGZhbHNlLCBzdGlsbCByZXR1cm4gaXQKKyAgICAgICAgIyBmcm9tIHN5cy5tb2R1bGVzLgorICAgICAgICBjbGFzcyBGYWxzZU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKTogcmV0dXJuIEZhbHNlCisKKyAgICAgICAgbmFtZSA9ICdtb2QnCisgICAgICAgIG1vZHVsZSA9IEZhbHNlTW9kdWxlKG5hbWUpCisgICAgICAgIHdpdGggdGVzdF91dGlsLnVuY2FjaGUobmFtZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZSkKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzW25hbWVdID0gbW9kdWxlCisgICAgICAgICAgICBnaXZlbiA9IHNlbGYucmV0dXJuX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhnaXZlbiwgbW9kdWxlKQorCisgICAgZGVmIHRlc3RfYXR0cmlidXRlc19zZXQoc2VsZik6CisgICAgICAgICMgX19uYW1lX18sIF9fbG9hZGVyX18sIGFuZCBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0ICh3aGVuCisgICAgICAgICMgaXNfcGFja2FnZSgpIGlzIGRlZmluZWQ7IHVuZGVmaW5lZCBpbXBsaWNpdGx5IHRlc3RlZCBlbHNld2hlcmUpLgorICAgICAgICBjbGFzcyBGYWtlTG9hZGVyOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGlzX3BhY2thZ2UpOgorICAgICAgICAgICAgICAgIHNlbGYuX3BrZyA9IGlzX3BhY2thZ2UKKyAgICAgICAgICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wa2cKKyAgICAgICAgICAgIEB1dGlsLm1vZHVsZV9mb3JfbG9hZGVyCisgICAgICAgICAgICBkZWYgbG9hZF9tb2R1bGUoc2VsZiwgbW9kdWxlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbW9kdWxlCisKKyAgICAgICAgbmFtZSA9ICdwa2cubW9kJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihGYWxzZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IGxvYWRlci5sb2FkX21vZHVsZShuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG1vZHVsZS5fX2xvYWRlcl9fLCBsb2FkZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX3BhY2thZ2VfXywgJ3BrZycpCisKKyAgICAgICAgbmFtZSA9ICdwa2cuc3ViJworICAgICAgICB3aXRoIHRlc3RfdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICAgICAgbG9hZGVyID0gRmFrZUxvYWRlcihUcnVlKQorICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9kdWxlLl9fbG9hZGVyX18sIGxvYWRlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fcGFja2FnZV9fLCBuYW1lKQorCisKK2NsYXNzIFNldFBhY2thZ2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBmb3IgaW1wb3J0bGliLnV0aWwuc2V0X3BhY2thZ2UuIiIiCisKKyAgICBkZWYgdmVyaWZ5KHNlbGYsIG1vZHVsZSwgZXhwZWN0KToKKyAgICAgICAgIiIiVmVyaWZ5IHRoZSBtb2R1bGUgaGFzIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgX19wYWNrYWdlX18gYWZ0ZXIKKyAgICAgICAgcGFzc2luZyB0aHJvdWdoIHNldF9wYWNrYWdlLiIiIgorICAgICAgICBmeG4gPSBsYW1iZGE6IG1vZHVsZQorICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCisgICAgICAgIHdyYXBwZWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2R1bGUsICdfX3BhY2thZ2VfXycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgbW9kdWxlLl9fcGFja2FnZV9fKQorCisgICAgZGVmIHRlc3RfdG9wX2xldmVsKHNlbGYpOgorICAgICAgICAjIF9fcGFja2FnZV9fIHNob3VsZCBiZSBzZXQgdG8gdGhlIGVtcHR5IHN0cmluZyBpZiBhIHRvcC1sZXZlbCBtb2R1bGUuCisgICAgICAgICMgSW1wbGljaXRseSB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgc2V0IHRvIE5vbmUuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2R1bGUnKQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJycpCisKKyAgICBkZWYgdGVzdF9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2V0dGluZyBfX3BhY2thZ2VfXyBmb3IgYSBwYWNrYWdlLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnJykKKyAgICAgICAgbW9kdWxlLl9fcGF0aF9fID0gWyc8cGF0aD4nXQorICAgICAgICBtb2R1bGUuX19wYWNrYWdlX18gPSBOb25lCisgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgJ3BrZycpCisKKyAgICBkZWYgdGVzdF9zdWJtb2R1bGUoc2VsZik6CisgICAgICAgICMgVGVzdCBfX3BhY2thZ2VfXyBmb3IgYSBtb2R1bGUgaW4gYSBwYWNrYWdlLgorICAgICAgICBtb2R1bGUgPSBpbXAubmV3X21vZHVsZSgncGtnLm1vZCcpCisgICAgICAgIG1vZHVsZS5fX3BhY2thZ2VfXyA9IE5vbmUKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfaWZfbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBfX3BhY2thZ2VfXyBzaG91bGQgYmUgc2V0IGlmIGl0IGlzIG1pc3NpbmcuCisgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQorICAgICAgICBpZiBoYXNhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJyk6CisgICAgICAgICAgICBkZWxhdHRyKG1vZHVsZSwgJ19fcGFja2FnZV9fJykKKyAgICAgICAgc2VsZi52ZXJpZnkobW9kdWxlLCAnJykKKworICAgIGRlZiB0ZXN0X2xlYXZpbmdfYWxvbmUoc2VsZik6CisgICAgICAgICMgSWYgX19wYWNrYWdlX18gaXMgc2V0IGFuZCBub3QgTm9uZSB0aGVuIGxlYXZlIGl0IGFsb25lLgorICAgICAgICBmb3IgdmFsdWUgaW4gKFRydWUsIEZhbHNlKToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKCdtb2QnKQorICAgICAgICAgICAgbW9kdWxlLl9fcGFja2FnZV9fID0gdmFsdWUKKyAgICAgICAgICAgIHNlbGYudmVyaWZ5KG1vZHVsZSwgdmFsdWUpCisKKyAgICBkZWYgdGVzdF9kZWNvcmF0b3JfYXR0cnMoc2VsZik6CisgICAgICAgIGRlZiBmeG4obW9kdWxlKTogcGFzcworICAgICAgICB3cmFwcGVkID0gdXRpbC5zZXRfcGFja2FnZShmeG4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JhcHBlZC5fX25hbWVfXywgZnhuLl9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZWQuX19xdWFsbmFtZV9fLCBmeG4uX19xdWFsbmFtZV9fKQorCisKK2NsYXNzIFJlc29sdmVOYW1lVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgaW1wb3J0bGliLnV0aWwucmVzb2x2ZV9uYW1lKCkuIiIiCisKKyAgICBkZWYgdGVzdF9hYnNvbHV0ZShzZWxmKToKKyAgICAgICAgIyBiYWNvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYWNvbicsIHV0aWwucmVzb2x2ZV9uYW1lKCdiYWNvbicsIE5vbmUpKQorCisgICAgZGVmIHRlc3RfYWJvc2x1dGVfd2l0aGluX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgYmFjb24gaW4gc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYWNvbicsIHV0aWwucmVzb2x2ZV9uYW1lKCdiYWNvbicsICdzcGFtJykpCisKKyAgICBkZWYgdGVzdF9ub19wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC5iYWNvbiBpbiAnJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdXRpbC5yZXNvbHZlX25hbWUoJy5iYWNvbicsICcnKQorCisgICAgZGVmIHRlc3RfaW5fcGFja2FnZShzZWxmKToKKyAgICAgICAgIyAuYmFjb24gaW4gc3BhbQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzcGFtLmVnZ3MuYmFjb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuYmFjb24nLCAnc3BhbS5lZ2dzJykpCisKKyAgICBkZWYgdGVzdF9vdGhlcl9wYWNrYWdlKHNlbGYpOgorICAgICAgICAjIC4uYmFjb24gaW4gc3BhbS5iYWNvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzcGFtLmJhY29uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLnJlc29sdmVfbmFtZSgnLi5iYWNvbicsICdzcGFtLmVnZ3MnKSkKKworICAgIGRlZiB0ZXN0X2VzY2FwZShzZWxmKToKKyAgICAgICAgIyAuLmJhY29uIGluIHNwYW0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHV0aWwucmVzb2x2ZV9uYW1lKCcuLmJhY29uJywgJ3NwYW0nKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgICAgIE1vZHVsZUZvckxvYWRlclRlc3RzLAorICAgICAgICAgICAgU2V0UGFja2FnZVRlc3RzLAorICAgICAgICAgICAgUmVzb2x2ZU5hbWVUZXN0cworICAgICAgICApCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi90ZXN0L3V0aWwucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IDkzYjdjZDIuLmVmMzJmN2QgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdGVzdC91dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3V0aWwucHkKQEAgLTM1LDcgKzM1LDcgQEAKICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgaWYgbmFtZSBpbiAoJ3N5cycsICdtYXJzaGFsJywgJ2ltcCcpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAiY2Fubm90IHVuY2FjaGUgezB9IGFzIGl0IHdpbGwgYnJlYWsgX2ltcG9ydGxpYiIuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgICAgICJjYW5ub3QgdW5jYWNoZSB7MH0iLmZvcm1hdChuYW1lKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTEyNCw3ICsxMjQsMTEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN5cy5tb2R1bGVzW2Z1bGxuYW1lXSA9IHNlbGYubW9kdWxlc1tmdWxsbmFtZV0KICAgICAgICAgICAgIGlmIGZ1bGxuYW1lIGluIHNlbGYubW9kdWxlX2NvZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfY29kZVtmdWxsbmFtZV0oKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGVfY29kZVtmdWxsbmFtZV0oKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1tmdWxsbmFtZV0KKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLm1vZHVsZXNbZnVsbG5hbWVdCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CmluZGV4IDRiN2VlNGUuLjgwZGIwM2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKQEAgLTQxLDExICs0MSw2IEBACiAKIGltcG9ydCBidWlsdGlucwogCi10cnk6Ci0gICAgMS8wCi1leGNlcHQ6Ci0gICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQotCiBnaXQgPSBtb2QuU3R1cGlkR2l0KCkKIAogY2xhc3MgSXNUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC03OSwyMyArNzQsMzEgQEAKIAogCiAgICAgZGVmIHRlc3RfZXhjbHVkaW5nX3ByZWRpY2F0ZXMoc2VsZik6CisgICAgICAgIGdsb2JhbCB0YgogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYnVpbHRpbiwgJ3N5cy5leGl0JykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2J1aWx0aW4sICdbXS5hcHBlbmQnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzY29kZSwgJ21vZC5zcGFtLl9fY29kZV9fJykKLSAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2ZyYW1lLCAndGIudGJfZnJhbWUnKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAxLzAKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdGIgPSBzeXMuZXhjX2luZm8oKVsyXQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2ZyYW1lLCAndGIudGJfZnJhbWUnKQorICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc3RyYWNlYmFjaywgJ3RiJykKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgorICAgICAgICAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZXRzZXRkZXNjcmlwdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscycpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IodHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBDbGVhciB0cmFjZWJhY2sgYW5kIGFsbCB0aGUgZnJhbWVzIGFuZCBsb2NhbCB2YXJpYWJsZXMgaGFuZ2luZyB0byBpdC4KKyAgICAgICAgICAgIHRiID0gTm9uZQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZnVuY3Rpb24sICdtb2Quc3BhbScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNmdW5jdGlvbiwgJ21vZC5TdHVwaWRHaXQuYWJ1c2UnKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzbWV0aG9kLCAnZ2l0LmFyZ3VlJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21vZHVsZSwgJ21vZCcpCi0gICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXN0cmFjZWJhY2ssICd0YicpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNkYXRhZGVzY3JpcHRvciwgJ2NvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeScpCiAgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNnZW5lcmF0b3IsICcoeCBmb3IgeCBpbiByYW5nZSgyKSknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sICdnZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZScpCi0gICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdHZXRTZXREZXNjcmlwdG9yVHlwZScpOgotICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dldHNldGRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAndHlwZSh0Yi50Yl9mcmFtZSkuZl9sb2NhbHMnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbnNwZWN0LmlzZ2V0c2V0ZGVzY3JpcHRvcih0eXBlKHRiLnRiX2ZyYW1lKS5mX2xvY2FscykpCiAgICAgICAgIGlmIGhhc2F0dHIodHlwZXMsICdNZW1iZXJEZXNjcmlwdG9yVHlwZScpOgogICAgICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc21lbWJlcmRlc2NyaXB0b3IsICdkYXRldGltZS50aW1lZGVsdGEuZGF5cycpCiAgICAgICAgIGVsc2U6CkBAIC0yODIsNyArMjg1LDEwIEBACiAgICAgICAgIGNvID0gY29tcGlsZSgiTm9uZSIsIGZuLCAiZXhlYyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2VmaWxlKGNvKSwgTm9uZSkKICAgICAgICAgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXSA9ICgxLCBOb25lLCAiTm9uZSIsIGNvLmNvX2ZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1jYXNlKGluc3BlY3QuZ2V0c291cmNlZmlsZShjbykpLCBmbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub3JtY2FzZShpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pKSwgZm4pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXQogCiAgICAgZGVmIHRlc3RfZ2V0ZmlsZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGZpbGUobW9kLlN0dXBpZEdpdCksIG1vZC5fX2ZpbGVfXykKQEAgLTMwNCw3ICszMTAsNyBAQAogICAgICAgICBnZXRsaW5lcyA9IGxpbmVjYWNoZS5nZXRsaW5lcwogICAgICAgICBkZWYgbW9ua2V5KGZpbGVuYW1lLCBtb2R1bGVfZ2xvYmFscz1Ob25lKToKICAgICAgICAgICAgIGlmIGZpbGVuYW1lID09IGZuOgotICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2Uuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0bGluZXMoZmlsZW5hbWUsIG1vZHVsZV9nbG9iYWxzKQogICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZXMgPSBtb25rZXkKQEAgLTQwNCw4ICs0MTAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5maW5kc291cmNlLCBjbykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgaW5zcGVjdC5nZXRzb3VyY2UsIGNvKQogICAgICAgICBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdID0gKDEsIE5vbmUsIGxpbmVzLCBjby5jb19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmZpbmRzb3VyY2UoY28pLCAobGluZXMsMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2UoY28pLCBsaW5lc1swXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmZpbmRzb3VyY2UoY28pLCAobGluZXMsMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0c291cmNlKGNvKSwgbGluZXNbMF0pCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgbGluZWNhY2hlLmNhY2hlW2NvLmNvX2ZpbGVuYW1lXQogCiBjbGFzcyBUZXN0Tm9FT0woR2V0U291cmNlQmFzZSk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CkBAIC02NjIsNiArNjcxLDEyOSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCgnZicsIGIuZiksIGluc3BlY3QuZ2V0bWVtYmVycyhiLCBpbnNwZWN0LmlzbWV0aG9kKSkKIAogCitfZ2xvYmFsX3JlZiA9IG9iamVjdCgpCitjbGFzcyBUZXN0R2V0Q2xvc3VyZVZhcnModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfbmFtZV9yZXNvbHV0aW9uKHNlbGYpOgorICAgICAgICAjIEJhc2ljIHRlc3Qgb2YgdGhlIDQgZGlmZmVyZW50IHJlc29sdXRpb24gbWVjaGFuaXNtcworICAgICAgICBkZWYgZihub25sb2NhbF9yZWYpOgorICAgICAgICAgICAgZGVmIGcobG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgcmV0dXJuIGcKKyAgICAgICAgX2FyZyA9IG9iamVjdCgpCisgICAgICAgIG5vbmxvY2FsX3ZhcnMgPSB7Im5vbmxvY2FsX3JlZiI6IF9hcmd9CisgICAgICAgIGdsb2JhbF92YXJzID0geyJfZ2xvYmFsX3JlZiI6IF9nbG9iYWxfcmVmfQorICAgICAgICBidWlsdGluX3ZhcnMgPSB7InByaW50IjogcHJpbnR9CisgICAgICAgIHVuYm91bmRfbmFtZXMgPSB7InVuYm91bmRfcmVmIn0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKG5vbmxvY2FsX3ZhcnMsIGdsb2JhbF92YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbl92YXJzLCB1bmJvdW5kX25hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZihfYXJnKSksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX2Nsb3N1cmUoc2VsZik6CisgICAgICAgIGRlZiBmKG5vbmxvY2FsX3JlZik6CisgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgIHByaW50KGxvY2FsX3JlZiwgbm9ubG9jYWxfcmVmLCBfZ2xvYmFsX3JlZiwgdW5ib3VuZF9yZWYpCisgICAgICAgICAgICAgICAgeWllbGQKKyAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYoX2FyZykpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jbG9zdXJlKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGYoc2VsZiwgbm9ubG9jYWxfcmVmKToKKyAgICAgICAgICAgICAgICBkZWYgZyhsb2NhbF9yZWYpOgorICAgICAgICAgICAgICAgICAgICBwcmludChsb2NhbF9yZWYsIG5vbmxvY2FsX3JlZiwgX2dsb2JhbF9yZWYsIHVuYm91bmRfcmVmKQorICAgICAgICAgICAgICAgIHJldHVybiBnCisgICAgICAgIF9hcmcgPSBvYmplY3QoKQorICAgICAgICBub25sb2NhbF92YXJzID0geyJub25sb2NhbF9yZWYiOiBfYXJnfQorICAgICAgICBnbG9iYWxfdmFycyA9IHsiX2dsb2JhbF9yZWYiOiBfZ2xvYmFsX3JlZn0KKyAgICAgICAgYnVpbHRpbl92YXJzID0geyJwcmludCI6IHByaW50fQorICAgICAgICB1bmJvdW5kX25hbWVzID0geyJ1bmJvdW5kX3JlZiJ9CisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyhub25sb2NhbF92YXJzLCBnbG9iYWxfdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5fdmFycywgdW5ib3VuZF9uYW1lcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKEMoKS5mKF9hcmcpKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9ub25sb2NhbF92YXJzKHNlbGYpOgorICAgICAgICAjIE1vcmUgY29tcGxleCB0ZXN0cyBvZiBub25sb2NhbCByZXNvbHV0aW9uCisgICAgICAgIGRlZiBfbm9ubG9jYWxfdmFycyhmKToKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLm5vbmxvY2FscworCisgICAgICAgIGRlZiBtYWtlX2FkZGVyKHgpOgorICAgICAgICAgICAgZGVmIGFkZCh5KToKKyAgICAgICAgICAgICAgICByZXR1cm4geCArIHkKKyAgICAgICAgICAgIHJldHVybiBhZGQKKworICAgICAgICBkZWYgY3VycnkoZnVuYywgYXJnMSk6CisgICAgICAgICAgICByZXR1cm4gbGFtYmRhIGFyZzI6IGZ1bmMoYXJnMSwgYXJnMikKKworICAgICAgICBkZWYgbGVzc190aGFuKGEsIGIpOgorICAgICAgICAgICAgcmV0dXJuIGEgPCBiCisKKyAgICAgICAgIyBUaGUgaW5mYW1vdXMgWSBjb21iaW5hdG9yLgorICAgICAgICBkZWYgWShsZSk6CisgICAgICAgICAgICBkZWYgZyhmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGUobGFtYmRhIHg6IGYoZikoeCkpCisgICAgICAgICAgICBZLmdfcmVmID0gZworICAgICAgICAgICAgcmV0dXJuIGcoZykKKworICAgICAgICBkZWYgY2hlY2tfeV9jb21iaW5hdG9yKGZ1bmMpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhmdW5jKSwgeydmJzogWS5nX3JlZn0pCisKKyAgICAgICAgaW5jID0gbWFrZV9hZGRlcigxKQorICAgICAgICBhZGRfdHdvID0gbWFrZV9hZGRlcigyKQorICAgICAgICBncmVhdGVyX3RoYW5fZml2ZSA9IGN1cnJ5KGxlc3NfdGhhbiwgNSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGluYyksIHsneCc6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKGFkZF90d28pLCB7J3gnOiAyfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfbm9ubG9jYWxfdmFycyhncmVhdGVyX3RoYW5fZml2ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhcmcxJzogNSwgJ2Z1bmMnOiBsZXNzX3RoYW59KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9ub25sb2NhbF92YXJzKChsYW1iZGEgeDogbGFtYmRhIHk6IHggKyB5KSgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeyd4JzogM30pCisgICAgICAgIFkoY2hlY2tfeV9jb21iaW5hdG9yKQorCisgICAgZGVmIHRlc3RfZ2V0Y2xvc3VyZXZhcnNfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oKTogcGFzcworICAgICAgICBfZW1wdHkgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwge30sIHNldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMobGFtYmRhOiBUcnVlKSwgX2VtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZm9vKSwgX2VtcHR5KQorCisgICAgZGVmIHRlc3RfZ2V0Y2xvc3VyZXZhcnNfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIFQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMsIGxpc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRjbG9zdXJldmFycywge30pCisKKyAgICBkZWYgX3ByaXZhdGVfZ2xvYmFscyhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImRlZiBmKCk6IHByaW50KHBhdGgpIiIiCisgICAgICAgIG5zID0ge30KKyAgICAgICAgZXhlYyhjb2RlLCBucykKKyAgICAgICAgcmV0dXJuIG5zWyJmIl0sIG5zCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19mYWxsYmFjayhzZWxmKToKKyAgICAgICAgZiwgbnMgPSBzZWxmLl9wcml2YXRlX2dsb2JhbHMoKQorICAgICAgICBucy5wb3AoIl9fYnVpbHRpbnNfXyIsIE5vbmUpCisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicHJpbnQiOnByaW50fSwgeyJwYXRoIn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRjbG9zdXJldmFycyhmKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9idWlsdGluc19hc19kaWN0KHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zWyJfX2J1aWx0aW5zX18iXSA9IHsicGF0aCI6MX0KKyAgICAgICAgZXhwZWN0ZWQgPSBpbnNwZWN0LkNsb3N1cmVWYXJzKHt9LCB7fSwgeyJwYXRoIjoxfSwgeyJwcmludCJ9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Y2xvc3VyZXZhcnMoZiksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbnNfYXNfbW9kdWxlKHNlbGYpOgorICAgICAgICBmLCBucyA9IHNlbGYuX3ByaXZhdGVfZ2xvYmFscygpCisgICAgICAgIG5zWyJfX2J1aWx0aW5zX18iXSA9IG9zCisgICAgICAgIGV4cGVjdGVkID0gaW5zcGVjdC5DbG9zdXJlVmFycyh7fSwge30sIHsicGF0aCI6b3MucGF0aH0sIHsicHJpbnQifSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGNsb3N1cmV2YXJzKGYpLCBleHBlY3RlZCkKKworCiBjbGFzcyBUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIGFzc2VydEVxdWFsQ2FsbEFyZ3Moc2VsZiwgZnVuYywgY2FsbF9wYXJhbXNfc3RyaW5nLCBsb2NzPU5vbmUpOgpAQCAtMTE2OSw2ICsxMzAxLDk3MiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCByZXByKHN0YXRlKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgc3RyKHN0YXRlKSkKIAorICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2FscyhzZWxmKToKKyAgICAgICAgZGVmIGVhY2gobHN0LCBhPU5vbmUpOgorICAgICAgICAgICAgYj0oMSwgMiwgMykKKyAgICAgICAgICAgIGZvciB2IGluIGxzdDoKKyAgICAgICAgICAgICAgICBpZiB2ID09IDM6CisgICAgICAgICAgICAgICAgICAgIGMgPSAxMgorICAgICAgICAgICAgICAgIHlpZWxkIHYKKworICAgICAgICBudW1iZXJzID0gZWFjaChbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXX0pCisgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhudW1iZXJzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7J2EnOiBOb25lLCAnbHN0JzogWzEsIDIsIDNdLCAndic6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdiJzogKDEsIDIsIDMpfSkKKyAgICAgICAgbmV4dChudW1iZXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzKG51bWJlcnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnYSc6IE5vbmUsICdsc3QnOiBbMSwgMiwgM10sICd2JzogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2InOiAoMSwgMiwgMyl9KQorICAgICAgICBuZXh0KG51bWJlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksCisgICAgICAgICAgICAgICAgICAgICAgICAgeydhJzogTm9uZSwgJ2xzdCc6IFsxLCAyLCAzXSwgJ3YnOiAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnYic6ICgxLCAyLCAzKSwgJ2MnOiAxMn0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQobnVtYmVycykKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMobnVtYmVycyksIHt9KQorCisgICAgZGVmIHRlc3RfZ2V0Z2VuZXJhdG9ybG9jYWxzX2VtcHR5KHNlbGYpOgorICAgICAgICBkZWYgeWllbGRfb25lKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgIG9uZSA9IHlpZWxkX29uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMob25lKSwge30pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5leHQob25lKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscyhvbmUpLCB7fSkKKworICAgIGRlZiB0ZXN0X2dldGdlbmVyYXRvcmxvY2Fsc19lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgbGFtYmRhIHg6IFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zcGVjdC5nZXRnZW5lcmF0b3Jsb2NhbHMsIHNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnNwZWN0LmdldGdlbmVyYXRvcmxvY2FscywgKDIsMykpCisKKworY2xhc3MgVGVzdFNpZ25hdHVyZU9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBzaWduYXR1cmUoZnVuYyk6CisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKGZ1bmMpCisgICAgICAgIHJldHVybiAodHVwbGUoKHBhcmFtLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICguLi4gaWYgcGFyYW0uZGVmYXVsdCBpcyBwYXJhbS5lbXB0eSBlbHNlIHBhcmFtLmRlZmF1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAoLi4uIGlmIHBhcmFtLmFubm90YXRpb24gaXMgcGFyYW0uZW1wdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBwYXJhbS5hbm5vdGF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBhcmFtLmtpbmQpLmxvd2VyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcGFyYW0gaW4gc2lnLnBhcmFtZXRlcnMudmFsdWVzKCkpLAorICAgICAgICAgICAgICAgICguLi4gaWYgc2lnLnJldHVybl9hbm5vdGF0aW9uIGlzIHNpZy5lbXB0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNpZy5yZXR1cm5fYW5ub3RhdGlvbikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb2JqZWN0KHNlbGYpOgorICAgICAgICBTID0gaW5zcGVjdC5TaWduYXR1cmUKKyAgICAgICAgUCA9IGluc3BlY3QuUGFyYW1ldGVyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUygpKSwgJygpJykKKworICAgICAgICBkZWYgdGVzdChwbywgcGssICphcmdzLCBrbywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBwbyA9IHNpZy5wYXJhbWV0ZXJzWydwbyddLnJlcGxhY2Uoa2luZD1QLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgcGsgPSBzaWcucGFyYW1ldGVyc1sncGsnXQorICAgICAgICBhcmdzID0gc2lnLnBhcmFtZXRlcnNbJ2FyZ3MnXQorICAgICAgICBrbyA9IHNpZy5wYXJhbWV0ZXJzWydrbyddCisgICAgICAgIGt3YXJncyA9IHNpZy5wYXJhbWV0ZXJzWydrd2FyZ3MnXQorCisgICAgICAgIFMoKHBvLCBwaywgYXJncywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBrLCBwbywgYXJncywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBvLCBhcmdzLCBwaywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKGFyZ3MsIHBvLCBwaywga28sIGt3YXJncykpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICd3cm9uZyBwYXJhbWV0ZXIgb3JkZXInKToKKyAgICAgICAgICAgIFMoKHBvLCBwaywgYXJncywga3dhcmdzLCBrbykpCisKKyAgICAgICAga3dhcmdzMiA9IGt3YXJncy5yZXBsYWNlKG5hbWU9J2FyZ3MnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2R1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgUygocG8sIHBrLCBhcmdzLCBrd2FyZ3MyLCBrbykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfaW1tdXRhYmlsaXR5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIHNpZy5mb28gPSAnYmFyJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNpZy5wYXJhbWV0ZXJzWydhJ10gPSBOb25lCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fbm9hcmcoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUodGVzdCksICgoKSwgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl93YXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYjonZm9vJykgLT4gMTIzOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgJ2ZvbycsICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIDEyMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fd2t3b25seShzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKiwgYTpmbG9hdCwgYjpzdHIpIC0+IGludDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZSh0ZXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgZmxvYXQsICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgc3RyLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jb21wbGV4X2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGI6J2Zvbyc9MTAsICphcmdzOidiYXInLCBzcGFtOidiYXonLCBoYW09MTIzLCAqKmt3YXJnczppbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHRlc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDEwLCAnZm9vJywgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmdzJywgLi4uLCAnYmFyJywgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3NwYW0nLCAuLi4sICdiYXonLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hhbScsIDEyMywgLi4uLCAia2V5d29yZF9vbmx5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2t3YXJncycsIC4uLiwgaW50LCAidmFyX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUodHlwZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnd3JhcHBlcl9kZXNjcmlwdG9yJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUodHlwZS5fX2NhbGxfXykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZScpOgorICAgICAgICAgICAgIyBzdXBwb3J0IGZvciAnbWV0aG9kLXdyYXBwZXInCisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShtaW4uX19jYWxsX18pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdubyBzaWduYXR1cmUgZm91bmQgZm9yIGJ1aWx0aW4gZnVuY3Rpb24nKToKKyAgICAgICAgICAgICMgc3VwcG9ydCBmb3IgJ21ldGhvZC13cmFwcGVyJworICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUobWluKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX25vbl9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIGNhbGxhYmxlIG9iamVjdCcpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoNDIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2lzIG5vdCBhIFB5dGhvbiBmdW5jdGlvbicpOgorICAgICAgICAgICAgaW5zcGVjdC5TaWduYXR1cmUuZnJvbV9mdW5jdGlvbig0MikKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9tZXRob2Qoc2VsZik6CisgICAgICAgIGNsYXNzIFRlc3Q6CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYsIGFyZzEsIGFyZzI9MSkgLT4gaW50OgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NsYXNzbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0OgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZm9vKGNscywgYXJnMSwgKiwgYXJnMj0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWV0aCA9IFRlc3QoKS5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJnMScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZzInLCAxLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgbWV0aCA9IFRlc3QuZm9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUobWV0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZzEnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcyJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX3N0YXRpY21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmb28oY2xzLCAqLCBhcmcpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtZXRoID0gVGVzdCgpLmZvbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKG1ldGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdjbHMnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhcmcnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBtZXRoID0gVGVzdC5mb28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShtZXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnY2xzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYXJnJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fcGFydGlhbChzZWxmKToKKyAgICAgICAgZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKKworICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0KSksICgoKSwgLi4uKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiaGFzIGluY29ycmVjdCBhcmd1bWVudHMiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYT0xKSkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCAqLCBjLCBkKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIDIsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIGI9MSwgYz0yKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAwLCBiPTEsIGM9MikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgMSwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAyLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsIC4uLiwgLi4uLCAia2V5d29yZF9vbmx5IiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBkZWYgdGVzdChhLCAqYXJncywgYiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCAxLCAyLCAzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAuLi4sIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHRlc3QsIDEsIDIsIDMsIHRlc3Q9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhcmdzJywgLi4uLCAuLi4sICJ2YXJfcG9zaXRpb25hbCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgMSwgMiwgMywgdGVzdD0xLCBiPTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYXJncycsIC4uLiwgLi4uLCAidmFyX3Bvc2l0aW9uYWwiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIDAsIC4uLiwgImtleXdvcmRfb25seSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdrd2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUocGFydGlhbCh0ZXN0LCBiPTApKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwodGVzdCwgYj0wLCB0ZXN0PTEpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2FyZ3MnLCAuLi4sIC4uLiwgInZhcl9wb3NpdGlvbmFsIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAwLCAuLi4sICJrZXl3b3JkX29ubHkiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgLi4uLCAuLi4sICJ2YXJfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBkZWYgdGVzdChhLCBiLCBjOmludCkgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2lnID0gdGVzdC5fX3NpZ25hdHVyZV9fID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKHBhcnRpYWwocGFydGlhbCh0ZXN0LCAxKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYycsIC4uLiwgaW50LCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICA0MikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSksIDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYycsIC4uLiwgaW50LCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgNDIpKQorCisgICAgICAgIHBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShwYXJ0aWFsKHBhcnRpYWwodGVzdCwgMSksIDIpKQorCisgICAgICAgIGRlZiBmb28oYSk6CisgICAgICAgICAgICByZXR1cm4gYQorICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgYT0xMCksIGE9MjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAyMCwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgIyBjaGVjayB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHNpZGUtZWZmZWN0cyBpbiBzaWduYXR1cmUoKSwKKyAgICAgICAgIyBhbmQgdGhlIHBhcnRpYWwgb2JqZWN0IGlzIHN0aWxsIGZ1bmN0aW9uaW5nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygpLCAyMCkKKworICAgICAgICBkZWYgZm9vKGEsIGIsIGMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgX2ZvbyA9IHBhcnRpYWwocGFydGlhbChmb28sIDEsIGI9MjApLCBiPTMwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKF9mb28pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgMzAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbyhjPTEwKSwgKDEsIDMwLCAxMCkpCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKF9mb28sIDIpICMgbm93ICdiJyBoYXMgdHdvIHZhbHVlcyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImhhcyBpbmNvcnJlY3QgYXJndW1lbnRzIik6CisgICAgICAgICAgICBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKQorCisgICAgICAgIGRlZiBmb28oYSwgYiwgYywgKiwgZCk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywgZAorICAgICAgICBfZm9vID0gcGFydGlhbChwYXJ0aWFsKGZvbywgZD0yMCwgYz0yMCksIGI9MTAsIGQ9MzApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoX2ZvbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgMTAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdjJywgMjAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgMzAsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKGE9MjAwLCBiPTExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDIwMCwgMTEsIDIwLCAzMCkpCisKKyAgICAgICAgZGVmIGZvbyhhPTEsIGI9MiwgYz0zKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKGZvbywgYT0xMCwgYz0xMykKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKDExKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9mb28oKmJhLmFyZ3MsICoqYmEua3dhcmdzKSwgKDExLCAyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSwgMTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTEsIDEyLCAxMykpCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMSwgYj0xMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZm9vKCpiYS5hcmdzLCAqKmJhLmt3YXJncyksICgxMSwgMTIsIDEzKSkKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShfZm9vKS5iaW5kKGI9MTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTAsIDEyLCAxMykpCisgICAgICAgIF9mb28gPSBwYXJ0aWFsKF9mb28sIGI9MTApCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoX2ZvbykuYmluZCgxMiwgMTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2ZvbygqYmEuYXJncywgKipiYS5rd2FyZ3MpLCAoMTIsIDE0LCAxMykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfb25fZGVjb3JhdGVkKHNlbGYpOgorICAgICAgICBpbXBvcnQgZnVuY3Rvb2xzCisKKyAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICAgICAgICAgIGRlZiB3cmFwcGVyKCphcmdzLCAqKmt3YXJncykgLT4gaW50OgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHJldHVybiB3cmFwcGVyCisKKyAgICAgICAgY2xhc3MgRm9vOgorICAgICAgICAgICAgQGRlY29yYXRvcgorICAgICAgICAgICAgZGVmIGJhcihzZWxmLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28uYmFyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnc2VsZicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28oKS5iYXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgICMgVGVzdCB0aGF0IHdlIGhhbmRsZSBtZXRob2Qgd3JhcHBlcnMgY29ycmVjdGx5CisgICAgICAgIGRlZiBkZWNvcmF0b3IoZnVuYyk6CisgICAgICAgICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCisgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpIC0+IGludDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuYyg0MiwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUoZnVuYykKKyAgICAgICAgICAgIG5ld19wYXJhbXMgPSB0dXBsZShzaWcucGFyYW1ldGVycy52YWx1ZXMoKSlbMTpdCisgICAgICAgICAgICB3cmFwcGVyLl9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisgICAgICAgICAgICByZXR1cm4gd3JhcHBlcgorCisgICAgICAgIGNsYXNzIEZvbzoKKyAgICAgICAgICAgIEBkZWNvcmF0b3IKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBhLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShGb28uX19jYWxsX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkuX19jYWxsX18pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX29uX2NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKGNscywgYSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2EnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgY2xhc3MgQ00odHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBmb289MSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2InLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDEsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBDTU0odHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBmb289MSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKGNscywgbm0sIGJzLCBkdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUobm0sIGJzLCBkdCkKKyAgICAgICAgY2xhc3MgQ00odHlwZSwgbWV0YWNsYXNzPUNNTSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0LCAqLCBiYXI9Mik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhtY2xzLCBuYW1lLCBiYXNlcywgZGN0KQorICAgICAgICBjbGFzcyBDKG1ldGFjbGFzcz1DTSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ01NKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnbmFtZScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhc2VzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZGN0JywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywgMSwgLi4uLCAia2V5d29yZF9vbmx5IikpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoQ00pLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdubScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JzJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZHQnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdiJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIENNKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGRjdCwgKiwgYmFyPTIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBkY3QpCisgICAgICAgIGNsYXNzIEMobWV0YWNsYXNzPUNNKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShDTSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ25hbWUnLCAuLi4sIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiYXNlcycsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RjdCcsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2JhcicsIDIsIC4uLiwgImtleXdvcmRfb25seSIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9jYWxsYWJsZV9vYmplY3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zaWduYXR1cmUoRm9vKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgLi4uLCAuLi4sICJwb3NpdGlvbmFsX29yX2tleXdvcmQiKSwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pKQorCisgICAgICAgIGNsYXNzIFNwYW06CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJpcyBub3QgYSBjYWxsYWJsZSBvYmplY3QiKToKKyAgICAgICAgICAgIGluc3BlY3Quc2lnbmF0dXJlKFNwYW0oKSkKKworICAgICAgICBjbGFzcyBCYXIoU3BhbSwgRm9vKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKEJhcigpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgICAgICBjbGFzcyBUb0ZhaWw6CisgICAgICAgICAgICBfX2NhbGxfXyA9IHR5cGUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJub3Qgc3VwcG9ydGVkIGJ5IHNpZ25hdHVyZSIpOgorICAgICAgICAgICAgaW5zcGVjdC5zaWduYXR1cmUoVG9GYWlsKCkpCisKKworICAgICAgICBjbGFzcyBXcmFwcGVkOgorICAgICAgICAgICAgcGFzcworICAgICAgICBXcmFwcGVkLl9fd3JhcHBlZF9fID0gbGFtYmRhIGE6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNpZ25hdHVyZShXcmFwcGVkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCgnYScsIC4uLiwgLi4uLCAicG9zaXRpb25hbF9vcl9rZXl3b3JkIiksKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9vbl9sYW1iZGFzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2lnbmF0dXJlKChsYW1iZGEgYT0xMDogYSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoKCdhJywgMTAsIC4uLiwgInBvc2l0aW9uYWxfb3Jfa2V5d29yZCIpLCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgKiwgYjppbnQpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgNDIpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCkgLT4gZmxvYXQ6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQpIC0+IGludDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGJhcihhLCAqLCBiOmludCk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBiYXIoYSwgKiwgYjppbnQ9NDIpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsICosIGMpIC0+IGZsb2F0OiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSwgaW5zcGVjdC5zaWduYXR1cmUoYmFyKSkKKworICAgICAgICBkZWYgYmFyKGEsIGI6aW50KSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisgICAgICAgIGRlZiBzcGFtKGI6aW50LCBhKSAtPiBmbG9hdDogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKHNwYW0pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28oKiwgYSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcigqLCBjLCBiLCBhKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbygqLCBhPTEsIGIsIGMpOiBwYXNzCisgICAgICAgIGRlZiBiYXIoKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICosIGE9MSwgYiwgYyk6IHBhc3MKKyAgICAgICAgZGVmIGJhcihwb3MsICosIGMsIGIsIGE9MSk6IHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LnNpZ25hdHVyZShmb28pLCBpbnNwZWN0LnNpZ25hdHVyZShiYXIpKQorCisgICAgICAgIGRlZiBmb28ocG9zLCAqLCBhLCBiLCBjKTogcGFzcworICAgICAgICBkZWYgYmFyKHBvcywgKiwgYywgYiwgYT0xKTogcGFzcworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICAgICAgZGVmIGZvbyhwb3MsICphcmdzLCBhPTQyLCBiLCBjLCAqKmt3YXJnczppbnQpOiBwYXNzCisgICAgICAgIGRlZiBiYXIocG9zLCAqYXJncywgYywgYiwgYT00MiwgKiprd2FyZ3M6aW50KTogcGFzcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluc3BlY3Quc2lnbmF0dXJlKGZvbyksIGluc3BlY3Quc2lnbmF0dXJlKGJhcikpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfdW5oYXNoYWJsZShzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhKTogcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2goc2lnKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cihzZWxmKToKKyAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUoZm9vKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhhOmludD0xLCAqLCBiLCBjPU5vbmUsICoqa3dhcmdzKSAtPiA0MicpCisKKyAgICAgICAgZGVmIGZvbyhhOmludD0xLCAqYXJncywgYiwgYz1Ob25lLCAqKmt3YXJncykgLT4gNDI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoYTppbnQ9MSwgKmFyZ3MsIGIsIGM9Tm9uZSwgKiprd2FyZ3MpIC0+IDQyJykKKworICAgICAgICBkZWYgZm9vKCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGluc3BlY3Quc2lnbmF0dXJlKGZvbykpLCAnKCknKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX3N0cl9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIGRlZiB0ZXN0KGFfcG8sICosIGIsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhX3BvLCBrd2FyZ3MKKworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBuZXdfcGFyYW1zID0gbGlzdChzaWcucGFyYW1ldGVycy52YWx1ZXMoKSkKKyAgICAgICAgbmV3X3BhcmFtc1swXSA9IG5ld19wYXJhbXNbMF0ucmVwbGFjZShraW5kPVAuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICB0ZXN0Ll9fc2lnbmF0dXJlX18gPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaW5zcGVjdC5zaWduYXR1cmUodGVzdCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcoPGFfcG8+LCAqLCBiLCAqKmt3YXJncyknKQorCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIG5ld19wYXJhbXMgPSBsaXN0KHNpZy5wYXJhbWV0ZXJzLnZhbHVlcygpKQorICAgICAgICBuZXdfcGFyYW1zWzBdID0gbmV3X3BhcmFtc1swXS5yZXBsYWNlKG5hbWU9Tm9uZSkKKyAgICAgICAgdGVzdC5fX3NpZ25hdHVyZV9fID0gc2lnLnJlcGxhY2UocGFyYW1ldGVycz1uZXdfcGFyYW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJyg8MD4sICosIGIsICoqa3dhcmdzKScpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcmVwbGFjZV9hbm5vKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgpIC0+IDQyOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNpZyA9IGluc3BlY3Quc2lnbmF0dXJlKHRlc3QpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2lnLnJldHVybl9hbm5vdGF0aW9uLCBOb25lKQorICAgICAgICBzaWcgPSBzaWcucmVwbGFjZShyZXR1cm5fYW5ub3RhdGlvbj1zaWcuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2lnLnJldHVybl9hbm5vdGF0aW9uLCBzaWcuZW1wdHkpCisgICAgICAgIHNpZyA9IHNpZy5yZXBsYWNlKHJldHVybl9hbm5vdGF0aW9uPTQyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZy5yZXR1cm5fYW5ub3RhdGlvbiwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnLCBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KSkKKworCitjbGFzcyBUZXN0UGFyYW1ldGVyT2JqZWN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2tpbmRzKHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFAuUE9TSVRJT05BTF9PTkxZIDwgUC5QT1NJVElPTkFMX09SX0tFWVdPUkQgPCBcCisgICAgICAgICAgICAgICAgICAgICAgICBQLlZBUl9QT1NJVElPTkFMIDwgUC5LRVlXT1JEX09OTFkgPCBQLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFAuUE9TSVRJT05BTF9PTkxZKSwgJ1BPU0lUSU9OQUxfT05MWScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnUE9TSVRJT05BTF9PTkxZJyBpbiByZXByKFAuUE9TSVRJT05BTF9PTkxZKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfb2JqZWN0KHNlbGYpOgorICAgICAgICBwID0gaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9MTAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5hbWUsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZGVmYXVsdCwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocC5hbm5vdGF0aW9uLCBwLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAua2luZCwgaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnaW52YWxpZCB2YWx1ZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2ZvbycsIGRlZmF1bHQ9MTAsIGtpbmQ9JzEyMycpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJzEnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub24tcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcicpOgorICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoTm9uZSwga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignYScsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlZBUl9LRVlXT1JEKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnY2Fubm90IGhhdmUgZGVmYXVsdCB2YWx1ZXMnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX1BPU0lUSU9OQUwpCisKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdhJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2Nhbm5vdCBoYXZlIGRlZmF1bHQgdmFsdWVzJyk6CisgICAgICAgICAgICBwLnJlcGxhY2Uoa2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfUE9TSVRJT05BTCkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihwKS5zdGFydHN3aXRoKCc8UGFyYW1ldGVyJykpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBQID0gaW5zcGVjdC5QYXJhbWV0ZXIKKyAgICAgICAgcCA9IFAoJ2ZvbycsIGRlZmF1bHQ9NDIsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwLCA0MikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIFAoJ2ZvbycsIGRlZmF1bHQ9NDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kPWluc3BlY3QuUGFyYW1ldGVyLktFWVdPUkRfT05MWSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3VuaGFzaGFibGUoc2VsZik6CisgICAgICAgIHAgPSBpbnNwZWN0LlBhcmFtZXRlcignZm9vJywgZGVmYXVsdD00MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuS0VZV09SRF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd1bmhhc2hhYmxlIHR5cGUnKToKKyAgICAgICAgICAgIGhhc2gocCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9wYXJhbWV0ZXJfcmVwbGFjZShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdmb28nLCBkZWZhdWx0PTQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChwLCBwLnJlcGxhY2UoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLCBwLnJlcGxhY2UoKSkKKworICAgICAgICBwMiA9IHAucmVwbGFjZShhbm5vdGF0aW9uPTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIuYW5ub3RhdGlvbiwgMSkKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGFubm90YXRpb249cDIuZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocCwgcDIpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIubmFtZSwgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocDIsIHApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScpOgorICAgICAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9cDIuZW1wdHkpCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKG5hbWU9J2ZvbycsIGRlZmF1bHQ9Tm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhwMi5kZWZhdWx0LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHAyLCBwKQorCisgICAgICAgIHAyID0gcDIucmVwbGFjZShuYW1lPSdmb28nLCBkZWZhdWx0PXAyLmVtcHR5KQorICAgICAgICBzZWxmLmFzc2VydElzKHAyLmRlZmF1bHQsIHAyLmVtcHR5KQorCisKKyAgICAgICAgcDIgPSBwMi5yZXBsYWNlKGRlZmF1bHQ9NDIsIGtpbmQ9cDIuUE9TSVRJT05BTF9PUl9LRVlXT1JEKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLmtpbmQsIHAyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChwMiwgcCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ2ludmFsaWQgdmFsdWUgZm9yJyk6CisgICAgICAgICAgICBwMiA9IHAyLnJlcGxhY2Uoa2luZD1wMi5lbXB0eSkKKworICAgICAgICBwMiA9IHAyLnJlcGxhY2Uoa2luZD1wMi5LRVlXT1JEX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocDIsIHApCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX3Bvc2l0aW9uYWxfb25seShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJzw+JykKKworICAgICAgICBwID0gcC5yZXBsYWNlKG5hbWU9JzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihwKSwgJzwxPicpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2ltbXV0YWJpbGl0eShzZWxmKToKKyAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKE5vbmUsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5mb28gPSAnYmFyJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgcC5raW5kID0gMTIzCisKKworY2xhc3MgVGVzdFNpZ25hdHVyZUJpbmQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgY2FsbChmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZShmdW5jKQorICAgICAgICBiYSA9IHNpZy5iaW5kKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIGZ1bmMoKmJhLmFyZ3MsICoqYmEua3dhcmdzKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfZW1wdHkoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgNDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIHNwYW09MTApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBrZXl3b3JkIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIHNwYW09MSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcihzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhcmdzLCBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0KSwgKCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEpLCAoKDEsKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKCgxLCAyKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289J2JhcicpLCAoKCksIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgZm9vPSdiYXInKSwgKCgxLCksIHsnZm9vJzogJ2Jhcid9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgYXJncz0xMCksICgoKSwgeydhcmdzJzogMTB9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgZm9vPSdiYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKDEsIDIpLCB7J2Zvbyc6ICdiYXInfSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9qdXN0X2FyZ3Moc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGMpOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgIidiJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0Iik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAiJ2EnIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0KQorCisgICAgICAgIGRlZiB0ZXN0KGEsIGIsIGM9MTApOgorICAgICAgICAgICAgcmV0dXJuIGEsIGIsIGMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgMyksICgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAxMCkpCisKKyAgICAgICAgZGVmIHRlc3QoYT0xLCBiPTIsIGM9Myk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEwLCBjPTEzKSwgKDEwLCAyLCAxMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGE9MTApLCAoMTAsIDIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTEwKSwgKDEsIDEwLCAzKSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX3ZhcmFyZ3Nfb3JkZXIoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KCphcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCAzKSwgKDEsIDIsIDMpKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJnc19hbmRfdmFyYXJncyhzZWxmKToKKyAgICAgICAgZGVmIHRlc3QoYSwgYiwgYz0zLCAqYXJncyk6CisgICAgICAgICAgICByZXR1cm4gYSwgYiwgYywgYXJncworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIDQsIDUpLCAoMSwgMiwgMywgKDQsIDUpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiksICgxLCAyLCAzLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGI9MSwgYT0yKSwgKDIsIDEsIDMsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yKSwgKDEsIDIsIDMsICgpKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICdjJyIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIDMsIGM9NCkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2p1c3Rfa3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqKmt3YXJncyk6CisgICAgICAgICAgICByZXR1cm4ga3dhcmdzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289J2JhcicsIHNwYW09J2hhbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfYXJnc19hbmRfa3dhcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChhLCBiLCBjPTMsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhLCBiLCBjLCBrd2FyZ3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyKSwgKDEsIDIsIDMsIHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiPTIsIGE9MSwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBhPTEsIGI9MiwgZm9vPSdiYXInLCBzcGFtPSdoYW0nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgMywgeydmb28nOiAnYmFyJywgJ3NwYW0nOiAnaGFtJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiPTIsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDMsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYj0yLCBjPTQsIGZvbz0nYmFyJywgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIHsnZm9vJzogJ2JhcicsICdzcGFtJzogJ2hhbSd9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgMiwgNCwgZm9vPSdiYXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgNCwgeydmb28nOiAnYmFyJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBjPTUsIGE9NCwgYj0zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoNCwgMywgNSwge30pKQorCisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JpbmRfa3dvbmx5KHNlbGYpOgorICAgICAgICBkZWYgdGVzdCgqLCBmb28pOgorICAgICAgICAgICAgcmV0dXJuIGZvbworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b28gbWFueSBwb3NpdGlvbmFsIGFyZ3VtZW50cycpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIGZvbz0xKSwgMSkKKworICAgICAgICBkZWYgdGVzdChhLCAqLCBmb289MSwgYmFyKToKKyAgICAgICAgICAgIHJldHVybiBmb28KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JhcicgcGFyYW1ldGVyIGxhY2tpbmcgZGVmYXVsdCB2YWx1ZSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEpCisKKyAgICAgICAgZGVmIHRlc3QoZm9vLCAqLCBiYXIpOgorICAgICAgICAgICAgcmV0dXJuIGZvbywgYmFyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIDEsIGJhcj0yKSwgKDEsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEpLCAoMSwgMikpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBiYXI9MiwgZm9vPTEsIHNwYW09MTApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCAyKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvbyBtYW55IHBvc2l0aW9uYWwgYXJndW1lbnRzJyk6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSwgMiwgYmFyPTIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vIG1hbnkga2V5d29yZCBhcmd1bWVudHMnKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInYmFyJyBwYXJhbWV0ZXIgbGFja2luZyBkZWZhdWx0IHZhbHVlIik6CisgICAgICAgICAgICBzZWxmLmNhbGwodGVzdCwgMSkKKworICAgICAgICBkZWYgdGVzdChmb28sICosIGJhciwgKipiaW4pOgorICAgICAgICAgICAgcmV0dXJuIGZvbywgYmFyLCBiaW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIpLCAoMSwgMiwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCBmb289MSwgYmFyPTIpLCAoMSwgMiwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCBiYXI9Miwgc3BhbT0naGFtJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jYWxsKHRlc3QsIHNwYW09J2hhbScsIGZvbz0xLCBiYXI9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIHsnc3BhbSc6ICdoYW0nfSkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidmb28nIHBhcmFtZXRlciBsYWNraW5nIGRlZmF1bHQgdmFsdWUiKToKKyAgICAgICAgICAgIHNlbGYuY2FsbCh0ZXN0LCBzcGFtPSdoYW0nLCBiYXI9MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwodGVzdCwgMSwgYmFyPTIsIGJpbj0xLCBzcGFtPTEwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoMSwgMiwgeydiaW4nOiAxLCAnc3BhbSc6IDEwfSkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGRlZiB0ZXN0KGEsICphcmdzLCBiLCB6PTEwMCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzaWcgPSBpbnNwZWN0LnNpZ25hdHVyZSh0ZXN0KQorICAgICAgICBiYSA9IHNpZy5iaW5kKDEwLCAyMCwgYj0zMCwgYz00MCwgYXJncz01MCwga3dhcmdzPTYwKQorICAgICAgICAjIHdlIHdvbid0IGhhdmUgJ3onIGFyZ3VtZW50IGluIHRoZSBib3VuZCBhcmd1bWVudHMgb2JqZWN0LCBhcyB3ZSBkaWRuJ3QKKyAgICAgICAgIyBwYXNzIGl0IHRvIHRoZSAnYmluZCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShiYS5hcmd1bWVudHMuaXRlbXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgnYScsIDEwKSwgKCdhcmdzJywgKDIwLCkpLCAoJ2InLCAzMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgna3dhcmdzJywgeydjJzogNDAsICdhcmdzJzogNTAsICdrd2FyZ3MnOiA2MH0pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYS5rd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgeydiJzogMzAsICdjJzogNDAsICdhcmdzJzogNTAsICdrd2FyZ3MnOiA2MH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEuYXJncywgKDEwLCAyMCkpCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfYmluZF9wb3NpdGlvbmFsX29ubHkoc2VsZik6CisgICAgICAgIFAgPSBpbnNwZWN0LlBhcmFtZXRlcgorCisgICAgICAgIGRlZiB0ZXN0KGFfcG8sIGJfcG8sIGNfcG89MywgZm9vPTQyLCAqLCBiYXI9NTAsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBhX3BvLCBiX3BvLCBjX3BvLCBmb28sIGJhciwga3dhcmdzCisKKyAgICAgICAgc2lnID0gaW5zcGVjdC5zaWduYXR1cmUodGVzdCkKKyAgICAgICAgbmV3X3BhcmFtcyA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KHR1cGxlKHNpZy5wYXJhbWV0ZXJzLml0ZW1zKCkpKQorICAgICAgICBmb3IgbmFtZSBpbiAoJ2FfcG8nLCAnYl9wbycsICdjX3BvJyk6CisgICAgICAgICAgICBuZXdfcGFyYW1zW25hbWVdID0gbmV3X3BhcmFtc1tuYW1lXS5yZXBsYWNlKGtpbmQ9UC5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIG5ld19zaWcgPSBzaWcucmVwbGFjZShwYXJhbWV0ZXJzPW5ld19wYXJhbXMudmFsdWVzKCkpCisgICAgICAgIHRlc3QuX19zaWduYXR1cmVfXyA9IG5ld19zaWcKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2FsbCh0ZXN0LCAxLCAyLCA0LCA1LCBiYXI9NiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDIsIDQsIDUsIDYsIHt9KSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIDEsIDIsIGNfcG89NCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAicGFyYW1ldGVyIGlzIHBvc2l0aW9uYWwgb25seSIpOgorICAgICAgICAgICAgc2VsZi5jYWxsKHRlc3QsIGFfcG89MSwgYl9wbz0yKQorCisKK2NsYXNzIFRlc3RCb3VuZEFyZ3VtZW50cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc2lnbmF0dXJlX2JvdW5kX2FyZ3VtZW50c191bmhhc2hhYmxlKHNlbGYpOgorICAgICAgICBkZWYgZm9vKGEpOiBwYXNzCisgICAgICAgIGJhID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScpOgorICAgICAgICAgICAgaGFzaChiYSkKKworICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9ib3VuZF9hcmd1bWVudHNfZXF1YWxpdHkoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSk6IHBhc3MKKyAgICAgICAgYmEgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYSwgYmEpCisKKyAgICAgICAgYmEyID0gaW5zcGVjdC5zaWduYXR1cmUoZm9vKS5iaW5kKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMikKKworICAgICAgICBiYTMgPSBpbnNwZWN0LnNpZ25hdHVyZShmb28pLmJpbmQoMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChiYSwgYmEzKQorICAgICAgICBiYTMuYXJndW1lbnRzWydhJ10gPSAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmEsIGJhMykKKworICAgICAgICBkZWYgYmFyKGIpOiBwYXNzCisgICAgICAgIGJhNCA9IGluc3BlY3Quc2lnbmF0dXJlKGJhcikuYmluZCgxKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGJhLCBiYTQpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdCgKQEAgLTExNzYsNyArMjI3NCw4IEBACiAgICAgICAgIFRlc3RJbnRlcnByZXRlclN0YWNrLCBUZXN0Q2xhc3Nlc0FuZEZ1bmN0aW9ucywgVGVzdFByZWRpY2F0ZXMsCiAgICAgICAgIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucywgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywKICAgICAgICAgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsIFRlc3RHZXRhdHRyU3RhdGljLCBUZXN0R2V0R2VuZXJhdG9yU3RhdGUsCi0gICAgICAgIFRlc3ROb0VPTAorICAgICAgICBUZXN0Tm9FT0wsIFRlc3RTaWduYXR1cmVPYmplY3QsIFRlc3RTaWduYXR1cmVCaW5kLCBUZXN0UGFyYW1ldGVyT2JqZWN0LAorICAgICAgICBUZXN0Qm91bmRBcmd1bWVudHMsIFRlc3RHZXRDbG9zdXJlVmFycwogICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggNDM3ZTMyMy4uMjI3NzU5ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTMwNSw2ICszMDUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJGYWlsZWQgdG8gcmFpc2UgVHlwZUVycm9yIHdpdGggJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoYmFzZSwgdHJ1bmNfcmVzdWx0X2Jhc2UpLCkpCiAKKyAgICAgICAgICAgICAgICAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgYnVncy5weXRob24ub3JnL2lzc3VlMTYwNjAuCisgICAgICAgICAgICAgICAgY2xhc3MgQmFkSW50KHRydW5jX3Jlc3VsdF9iYXNlKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIF9faW50X18oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDIuMAorCisgICAgICAgICAgICAgICAgY2xhc3MgVHJ1bmNSZXR1cm5zQmFkSW50KGJhc2UpOgorICAgICAgICAgICAgICAgICAgICBkZWYgX190cnVuY19fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJhZEludCgpCisKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGludChUcnVuY1JldHVybnNCYWRJbnQoKSkKKwogICAgIGRlZiB0ZXN0X2Vycm9yX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgIHRlc3RsaXN0ID0gKCdceGJkJywgJzEyM1x4YmQnLCAnICAxMjMgNDU2ICAnKQogICAgICAgICBmb3IgcyBpbiB0ZXN0bGlzdDoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CmluZGV4IDU2YWMyYzguLjU1NWFkNzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pby5weQpAQCAtMTksMjAgKzE5LDIxIEBACiAjIHRlc3QgYm90aCBpbXBsZW1lbnRhdGlvbnMuIFRoaXMgZmlsZSBoYXMgbG90cyBvZiBleGFtcGxlcy4KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBhYmMKK2ltcG9ydCBhcnJheQoraW1wb3J0IGVycm5vCitpbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1pbXBvcnQgYXJyYXkKLWltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdlYWtyZWYKLWltcG9ydCBhYmMKLWltcG9ydCBzaWduYWwKLWltcG9ydCBlcnJubwogaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgcGlja2xlCi1mcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CitpbXBvcnQgd2Vha3JlZgogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUsIFVzZXJMaXN0Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY3ljbGUsIGNvdW50CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogaW1wb3J0IGNvZGVjcwpAQCAtNDksNyArNTAsNyBAQAogCiBkZWYgX2RlZmF1bHRfY2h1bmtfc2l6ZSgpOgogICAgICIiIkdldCB0aGUgZGVmYXVsdCBUZXh0SU9XcmFwcGVyIGNodW5rIHNpemUiIiIKLSAgICB3aXRoIG9wZW4oX19maWxlX18sICJyIiwgZW5jb2Rpbmc9ImxhdGluMSIpIGFzIGY6CisgICAgd2l0aCBvcGVuKF9fZmlsZV9fLCAiciIsIGVuY29kaW5nPSJsYXRpbi0xIikgYXMgZjoKICAgICAgICAgcmV0dXJuIGYuX0NIVU5LX1NJWkUKIAogCkBAIC02MzQsNiArNjM1LDE1IEBACiAgICAgICAgIGZvciBvYmogaW4gdGVzdDoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9iaiwgIl9fZGljdF9fIikpCiAKKyAgICBkZWYgdGVzdF9vcGVuZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJlZ2dcbiIpCisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRE9OTFkpCisgICAgICAgIGRlZiBvcGVuZXIocGF0aCwgZmxhZ3MpOgorICAgICAgICAgICAgcmV0dXJuIGZkCisgICAgICAgIHdpdGggc2VsZi5vcGVuKCJub24tZXhpc3RlbnQiLCAiciIsIG9wZW5lcj1vcGVuZXIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAiZWdnXG4iKQorCiAgICAgZGVmIHRlc3RfZmlsZWlvX2Nsb3NlZmQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzQ4NDEKICAgICAgICAgd2l0aCBzZWxmLm9wZW4oX19maWxlX18sICdyYicpIGFzIGYxLCBcCkBAIC02OTYsNyArNzA2LDcgQEAKICAgICAgICAgYnVmaW8gPSBzZWxmLnRwKHJhd2lvKQogICAgICAgICAjIEludmFsaWQgd2hlbmNlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGJ1ZmlvLnNlZWssIDAsIC0xKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBidWZpby5zZWVrLCAwLCA5KQogCiAgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfZGVzdHJ1Y3RvcihzZWxmKToKICAgICAgICAgdHAgPSBzZWxmLnRwCkBAIC04NjIsNiArODcyLDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJnZiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmaW8ucmVhZGludG8oYiksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYiJnZiIpCisgICAgICAgIHJhd2lvID0gc2VsZi5Nb2NrUmF3SU8oKGIiYWJjIiwgTm9uZSkpCisgICAgICAgIGJ1ZmlvID0gc2VsZi50cChyYXdpbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50byhiKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImFiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZpby5yZWFkaW50byhiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiImNiIikKIAogICAgIGRlZiB0ZXN0X3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgZGVmIGJ1ZmlvKCk6CkBAIC0xMjc2LDkgKzEyOTIsOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby50ZWxsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBidWZpby53cml0ZSwgYiJhYmNkZWYiKQogCi0gICAgZGVmIHRlc3RfbWF4X2J1ZmZlcl9zaXplX2RlcHJlY2F0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCJtYXhfYnVmZmVyX3NpemUgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgZGVmIHRlc3RfbWF4X2J1ZmZlcl9zaXplX3JlbW92YWwoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgOCwgMTIpCiAKIApAQCAtMTMzNCw5ICsxMzQ5LDggQEAKICAgICAgICAgcGFpciA9IHNlbGYudHAoc2VsZi5Nb2NrUmF3SU8oKSwgc2VsZi5Nb2NrUmF3SU8oKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2VsZi5VbnN1cHBvcnRlZE9wZXJhdGlvbiwgcGFpci5kZXRhY2gpCiAKLSAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9tYXhfYnVmZmVyX3NpemVfZGVwcmVjYXRpb24oc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Rvcl9tYXhfYnVmZmVyX3NpemVfcmVtb3ZhbChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgc2VsZi50cChzZWxmLk1vY2tSYXdJTygpLCBzZWxmLk1vY2tSYXdJTygpLCA4LCAxMikKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX3dpdGhfbm90X3JlYWRhYmxlKHNlbGYpOgpAQCAtMTg1MiwxMSArMTg2NiwxMSBAQAogICAgICAgICByID0gc2VsZi5CeXRlc0lPKGIiXHhjM1x4YTlcblxuIikKICAgICAgICAgYiA9IHNlbGYuQnVmZmVyZWRSZWFkZXIociwgMTAwMCkKICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQotICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJsYXRpbjEiLCBuZXdsaW5lPSJcclxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCAibGF0aW4xIikKKyAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0ibGF0aW4tMSIsIG5ld2xpbmU9IlxyXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuZW5jb2RpbmcsICJsYXRpbi0xIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmxpbmVfYnVmZmVyaW5nLCBGYWxzZSkKLSAgICAgICAgdC5fX2luaXRfXyhiLCBlbmNvZGluZz0idXRmOCIsIGxpbmVfYnVmZmVyaW5nPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0ZjgiKQorICAgICAgICB0Ll9faW5pdF9fKGIsIGVuY29kaW5nPSJ1dGYtOCIsIGxpbmVfYnVmZmVyaW5nPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0Zi04IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmxpbmVfYnVmZmVyaW5nLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJceGU5XG4iLCB0LnJlYWRsaW5lKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdC5fX2luaXRfXywgYiwgbmV3bGluZT00MikKQEAgLTE5MDMsMTEgKzE5MTcsMjkgQEAKICAgICAgICAgdC53cml0ZSgiQVxyQiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5nZXR2YWx1ZSgpLCBiIlhZXG5aQVxyQiIpCiAKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBvbGRfZW52aXJvbiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gZ2V0IGEgdXNlciBwcmVmZXJyZWQgZW5jb2RpbmcgZGlmZmVyZW50IHRoYW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIHRvIGNoZWNrIHRoYXQgVGV4dElPV3JhcHBlcigpIHVzZXMgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICMgbG9jYWxlIGVuY29kaW5nIGFuZCBub3QgdGhlIHVzZXIgcHJlZmVycmVkIGVuY29kaW5nCisgICAgICAgICAgICBmb3Iga2V5IGluICgnTENfQUxMJywgJ0xBTkcnLCAnTENfQ1RZUEUnKToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorCisgICAgICAgICAgICBjdXJyZW50X2xvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkKKyAgICAgICAgICAgIGIgPSBzZWxmLkJ5dGVzSU8oKQorICAgICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmVuY29kaW5nLCBjdXJyZW50X2xvY2FsZV9lbmNvZGluZykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQorICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUob2xkX2Vudmlyb24pCisKICAgICBkZWYgdGVzdF9lbmNvZGluZyhzZWxmKToKICAgICAgICAgIyBDaGVjayB0aGUgZW5jb2RpbmcgYXR0cmlidXRlIGlzIGFsd2F5cyBzZXQsIGFuZCB2YWxpZAogICAgICAgICBiID0gc2VsZi5CeXRlc0lPKCkKLSAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0ZjgiKQorICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKGIsIGVuY29kaW5nPSJ1dGYtOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5lbmNvZGluZywgInV0Zi04IikKICAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodC5lbmNvZGluZyBpcyBub3QgTm9uZSkKICAgICAgICAgY29kZWNzLmxvb2t1cCh0LmVuY29kaW5nKQpAQCAtMjAwMCw4ICsyMDMyLDggQEAKICAgICAgICAgdGVzdGRhdGEgPSBiIkFBQVxuQkJceDAwQlxuQ0NDXHJERERcckVFRVxyXG5GRkZcclxuR0dHIgogICAgICAgICBub3JtYWxpemVkID0gdGVzdGRhdGEucmVwbGFjZShiIlxyXG4iLCBiIlxuIikucmVwbGFjZShiIlxyIiwgYiJcbiIpCiAgICAgICAgIGZvciBuZXdsaW5lLCBleHBlY3RlZCBpbiBbCi0gICAgICAgICAgICAoTm9uZSwgbm9ybWFsaXplZC5kZWNvZGUoImFzY2lpIikuc3BsaXRsaW5lcyhUcnVlKSksCi0gICAgICAgICAgICAoIiIsIHRlc3RkYXRhLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKFRydWUpKSwKKyAgICAgICAgICAgIChOb25lLCBub3JtYWxpemVkLmRlY29kZSgiYXNjaWkiKS5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKSwKKyAgICAgICAgICAgICgiIiwgdGVzdGRhdGEuZGVjb2RlKCJhc2NpaSIpLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkpLAogICAgICAgICAgICAgKCJcbiIsIFsiQUFBXG4iLCAiQkJceDAwQlxuIiwgIkNDQ1xyREREXHJFRUVcclxuIiwgIkZGRlxyXG4iLCAiR0dHIl0pLAogICAgICAgICAgICAgKCJcclxuIiwgWyJBQUFcbkJCXHgwMEJcbkNDQ1xyREREXHJFRUVcclxuIiwgIkZGRlxyXG4iLCAiR0dHIl0pLAogICAgICAgICAgICAgKCJcciIsICBbIkFBQVxuQkJceDAwQlxuQ0NDXHIiLCAiREREXHIiLCAiRUVFXHIiLCAiXG5GRkZcciIsICJcbkdHRyJdKSwKQEAgLTIwODYsNyArMjExOCw3IEBACiAKICAgICBkZWYgdGVzdF9iYXNpY19pbyhzZWxmKToKICAgICAgICAgZm9yIGNodW5rc2l6ZSBpbiAoMSwgMiwgMywgNCwgNSwgMTUsIDE2LCAxNywgMzEsIDMyLCAzMywgNjMsIDY0LCA2NSk6Ci0gICAgICAgICAgICBmb3IgZW5jIGluICJhc2NpaSIsICJsYXRpbjEiLCAidXRmOCIgOiMgLCAidXRmLTE2LWJlIiwgInV0Zi0xNi1sZSI6CisgICAgICAgICAgICBmb3IgZW5jIGluICJhc2NpaSIsICJsYXRpbi0xIiwgInV0Zi04IiA6IyAsICJ1dGYtMTYtYmUiLCAidXRmLTE2LWxlIjoKICAgICAgICAgICAgICAgICBmID0gc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidysiLCBlbmNvZGluZz1lbmMpCiAgICAgICAgICAgICAgICAgZi5fQ0hVTktfU0laRSA9IGNodW5rc2l6ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi53cml0ZSgiYWJjIiksIDMpCkBAIC0yMTM2LDcgKzIxNjgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJsaW5lcywgd2xpbmVzKQogCiAgICAgZGVmIHRlc3RfdGVsbGluZyhzZWxmKToKLSAgICAgICAgZiA9IHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIncrIiwgZW5jb2Rpbmc9InV0ZjgiKQorICAgICAgICBmID0gc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidysiLCBlbmNvZGluZz0idXRmLTgiKQogICAgICAgICBwMCA9IGYudGVsbCgpCiAgICAgICAgIGYud3JpdGUoIlx4ZmZcbiIpCiAgICAgICAgIHAxID0gZi50ZWxsKCkKQEAgLTI0MDQsNiArMjQzNiw3IEBACiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIsIGVycm9ycz0icmVwbGFjZSIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZXJyb3JzLCAicmVwbGFjZSIpCiAKKyAgICBAc3VwcG9ydC5ub190cmFjaW5nCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF90aHJlYWRzX3dyaXRlKHNlbGYpOgogICAgICAgICAjIElzc3VlNjc1MDogY29uY3VycmVudCB3cml0ZXMgY291bGQgZHVwbGljYXRlIGRhdGEKQEAgLTI3MjEsMTIgKzI3NTQsNiBAQAogCiAgICAgZGVmIHRlc3RfYmxvY2tpbmdpb2Vycm9yKHNlbGYpOgogICAgICAgICAjIFZhcmlvdXMgQmxvY2tpbmdJT0Vycm9yIGlzc3VlcwotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxLCAyLCAzLCA0KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuQmxvY2tpbmdJT0Vycm9yLCAxLCAiIiwgTm9uZSkKLSAgICAgICAgYiA9IHNlbGYuQmxvY2tpbmdJT0Vycm9yKDEsICIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuY2hhcmFjdGVyc193cml0dGVuLCAwKQogICAgICAgICBjbGFzcyBDKHN0cik6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGMgPSBDKCIiKQpAQCAtMjg2OCw2ICsyODk1LDcgQEAKIAogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkJsb2NraW5nSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUFHQUlOKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1syXSwgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgIHNlbnRbLTFdID0gc2VudFstMV1bOmUuY2hhcmFjdGVyc193cml0dGVuXQogICAgICAgICAgICAgICAgICAgICByZWNlaXZlZC5hcHBlbmQocmYucmVhZCgpKQogICAgICAgICAgICAgICAgICAgICBtc2cgPSBiJ0JMT0NLRUQnCkBAIC0yODgwLDYgKzI5MDgsNyBAQAogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLkJsb2NraW5nSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgZXJybm8uRUFHQUlOKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1syXSwgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDApCiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkLmFwcGVuZChyZi5yZWFkKCkpCiAKQEAgLTI4OTAsNiArMjkxOSwyNCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUod2YuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmYuY2xvc2VkKQogCisgICAgZGVmIHRlc3RfY3JlYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgJ3gnIG1vZGUgZmFpbHMgaWYgZmlsZSBpcyBleGlzdGluZworICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZUV4aXN0c0Vycm9yLCBzZWxmLm9wZW4sIHN1cHBvcnQuVEVTVEZOLCAneCcpCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfd3JpdGVzKHNlbGYpOgorICAgICAgICAjICd4JyBtb2RlIG9wZW5zIGZvciB3cml0aW5nCisgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAneGInKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiInNwYW0iKQorICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJzcGFtIiwgZi5yZWFkKCkpCisKKyAgICBkZWYgdGVzdF9vcGVuX2FsbGFyZ3Moc2VsZik6CisgICAgICAgICMgdGhlcmUgdXNlZCB0byBiZSBhIGJ1ZmZlciBvdmVyZmxvdyBpbiB0aGUgcGFyc2VyIGZvciByYXdtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3Blbiwgc3VwcG9ydC5URVNURk4sICdyd2F4KycpCisKKwogY2xhc3MgQ01pc2NJT1Rlc3QoTWlzY0lPVGVzdCk6CiAgICAgaW8gPSBpbwogCkBAIC0yOTEwLDE0ICsyOTU3LDE0IEBACiAgICAgICAgIDEvMAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JyksCi0gICAgICAgICAgICAgICAgICAgICAnaXNzdWUgIzEyNDI5OiBza2lwIHRlc3Qgb24gRnJlZUJTRCA8PSA3JykKICAgICBkZWYgY2hlY2tfaW50ZXJydXB0ZWRfd3JpdGUoc2VsZiwgaXRlbSwgYnl0ZXMsICoqZmRvcGVuX2t3YXJncyk6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYSBwYXJ0aWFsIHdyaXRlLCB3aGVuIGl0IGdldHMgaW50ZXJydXB0ZWQsIHByb3Blcmx5CiAgICAgICAgIGludm9rZXMgdGhlIHNpZ25hbCBoYW5kbGVyLCBhbmQgYnViYmxlcyB1cCB0aGUgZXhjZXB0aW9uIHJhaXNlZAogICAgICAgICBpbiB0aGUgbGF0dGVyLiIiIgogICAgICAgICByZWFkX3Jlc3VsdHMgPSBbXQogICAgICAgICBkZWYgX3JlYWQoKToKKyAgICAgICAgICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbmFsLlNJR0FMUk1dKQogICAgICAgICAgICAgcyA9IG9zLnJlYWQociwgMSkKICAgICAgICAgICAgIHJlYWRfcmVzdWx0cy5hcHBlbmQocykKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9yZWFkKQpAQCAtMjkzNSw3ICsyOTgyLDcgQEAKICAgICAgICAgICAgICMgVGhlIGJ1ZmZlcmVkIElPIGxheWVyIG11c3QgY2hlY2sgZm9yIHBlbmRpbmcgc2lnbmFsCiAgICAgICAgICAgICAjIGhhbmRsZXJzLCB3aGljaCBpbiB0aGlzIGNhc2Ugd2lsbCBpbnZva2UgYWxhcm1faW50ZXJydXB0KCkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpby53cml0ZSwgaXRlbSAqICgxMDI0ICogMTAyNCkpCisgICAgICAgICAgICAgICAgICAgICAgICB3aW8ud3JpdGUsIGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSkpCiAgICAgICAgICAgICB0LmpvaW4oKQogICAgICAgICAgICAgIyBXZSBnb3Qgb25lIGJ5dGUsIGdldCBhbm90aGVyIG9uZSBhbmQgY2hlY2sgdGhhdCBpdCBpc24ndCBhCiAgICAgICAgICAgICAjIHJlcGVhdCBvZiB0aGUgZmlyc3Qgb25lLgpAQCAtMjk2Miw2ICszMDA5LDcgQEAKICAgICBkZWYgdGVzdF9pbnRlcnJ1cHRlZF93cml0ZV90ZXh0KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ludGVycnVwdGVkX3dyaXRlKCJ4eSIsIGIieHkiLCBtb2RlPSJ3IiwgZW5jb2Rpbmc9ImFzY2lpIikKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgY2hlY2tfcmVlbnRyYW50X3dyaXRlKHNlbGYsIGRhdGEsICoqZmRvcGVuX2t3YXJncyk6CiAgICAgICAgIGRlZiBvbl9hbGFybSgqYXJncyk6CiAgICAgICAgICAgICAjIFdpbGwgYmUgY2FsbGVkIHJlZW50cmFudGx5IGZyb20gdGhlIHNhbWUgdGhyZWFkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weSBiL0xpYi90ZXN0L3Rlc3RfaXBhZGRyZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5YzU0ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpAQCAtMCwwICsxLDE2NDkgQEAKKyMgQ29weXJpZ2h0IDIwMDcgR29vZ2xlIEluYy4KKyMgIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KKworIiIiVW5pdHRlc3QgZm9yIGlwYWRkcmVzcyBtb2R1bGUuIiIiCisKKworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgcmUKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgb3BlcmF0b3IKK2ltcG9ydCBpcGFkZHJlc3MKKworY2xhc3MgQmFzZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIE9uZSBiaWcgY2hhbmdlIGluIGlwYWRkcmVzcyBvdmVyIHRoZSBvcmlnaW5hbCBpcGFkZHIgbW9kdWxlIGlzCisgICAgIyBlcnJvciByZXBvcnRpbmcgdGhhdCB0cmllcyB0byBhc3N1bWUgdXNlcnMgKmRvbid0IGtub3cgdGhlIHJ1bGVzKgorICAgICMgZm9yIHdoYXQgY29uc3RpdHV0ZXMgYW4gUkZDIGNvbXBsaWFudCBJUCBhZGRyZXNzCisKKyAgICAjIEVuc3VyaW5nIHRoZXNlIGVycm9ycyBhcmUgZW1pdHRlZCBjb3JyZWN0bHkgaW4gYWxsIHJlbGV2YW50IGNhc2VzCisgICAgIyBtZWFudCBtb3ZpbmcgdG8gYSBtb3JlIHN5c3RlbWF0aWMgdGVzdCBzdHJ1Y3R1cmUgdGhhdCBhbGxvd3MgdGhlCisgICAgIyB0ZXN0IHN0cnVjdHVyZSB0byBtYXAgbW9yZSBkaXJlY3RseSB0byB0aGUgbW9kdWxlIHN0cnVjdHVyZQorCisgICAgIyBOb3RlIHRoYXQgaWYgdGhlIGNvbnN0cnVjdG9ycyBhcmUgcmVmYWN0b3JlZCBzbyB0aGF0IGFkZHJlc3NlcyB3aXRoCisgICAgIyBtdWx0aXBsZSBwcm9ibGVtcyBnZXQgY2xhc3NpZmllZCBkaWZmZXJlbnRseSwgdGhhdCdzIE9LIC0ganVzdAorICAgICMgbW92ZSB0aGUgYWZmZWN0ZWQgZXhhbXBsZXMgdG8gdGhlIG5ld2x5IGFwcHJvcHJpYXRlIHRlc3QgY2FzZS4KKworICAgICMgVGhlcmUgaXMgc29tZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZSBvcmlnaW5hbCByZWxhdGl2ZWx5IGFkIGhvYworICAgICMgdGVzdCBzdWl0ZSBhbmQgdGhlIG5ldyBzeXN0ZW1hdGljIHRlc3RzLiBXaGlsZSBzb21lIHJlZHVuZGFuY3kgaW4KKyAgICAjIHRlc3RpbmcgaXMgY29uc2lkZXJlZCBwcmVmZXJhYmxlIHRvIGFjY2lkZW50YWxseSBkZWxldGluZyBhIHZhbGlkCisgICAgIyB0ZXN0LCB0aGUgb3JpZ2luYWwgdGVzdCBzdWl0ZSB3aWxsIGxpa2VseSBiZSByZWR1Y2VkIG92ZXIgdGltZSBhcworICAgICMgcmVkdW5kYW50IHRlc3RzIGFyZSBpZGVudGlmaWVkLgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZhY3Rvcnkoc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGFzc2VydENsZWFuRXJyb3Ioc2VsZiwgZXhjX3R5cGUsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIEVuc3VyZSBleGNlcHRpb24gZG9lcyBub3QgZGlzcGxheSBhIGNvbnRleHQgYnkgZGVmYXVsdAorCisgICAgICAgIFdyYXBzIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFJhaXNlc1JlZ2V4CisgICAgICAgICIiIgorICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgZGV0YWlscyA9IGRldGFpbHMgJSBhcmdzCisgICAgICAgIGNtID0gc2VsZi5hc3NlcnRSYWlzZXNSZWdleChleGNfdHlwZSwgZGV0YWlscykKKyAgICAgICAgd2l0aCBjbSBhcyBleGM6CisgICAgICAgICAgICB5aWVsZCBleGMKKyAgICAgICAgIyBFbnN1cmUgd2UgcHJvZHVjZSBjbGVhbiB0cmFjZWJhY2tzIG9uIGZhaWx1cmUKKyAgICAgICAgaWYgZXhjLmV4Y2VwdGlvbi5fX2NvbnRleHRfXyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleGMuZXhjZXB0aW9uLl9fc3VwcHJlc3NfY29udGV4dF9fKQorCisgICAgZGVmIGFzc2VydEFkZHJlc3NFcnJvcihzZWxmLCBkZXRhaWxzLCAqYXJncyk6CisgICAgICAgICIiIkVuc3VyZSBhIGNsZWFuIEFkZHJlc3NWYWx1ZUVycm9yIiIiCisgICAgICAgIHJldHVybiBzZWxmLmFzc2VydENsZWFuRXJyb3IoaXBhZGRyZXNzLkFkZHJlc3NWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlscywgKmFyZ3MpCisKKyAgICBkZWYgYXNzZXJ0TmV0bWFza0Vycm9yKHNlbGYsIGRldGFpbHMsICphcmdzKToKKyAgICAgICAgIiIiRW5zdXJlIGEgY2xlYW4gTmV0bWFza1ZhbHVlRXJyb3IiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuYXNzZXJ0Q2xlYW5FcnJvcihpcGFkZHJlc3MuTmV0bWFza1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbHMsICphcmdzKQorCisgICAgZGVmIGFzc2VydEluc3RhbmNlc0VxdWFsKHNlbGYsIGxocywgcmhzKToKKyAgICAgICAgIiIiQ2hlY2sgY29uc3RydWN0b3IgYXJndW1lbnRzIHByb2R1Y2UgZXF1aXZhbGVudCBpbnN0YW5jZXMiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZhY3RvcnkobGhzKSwgc2VsZi5mYWN0b3J5KHJocykpCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbjoKKworICAgIGRlZiB0ZXN0X2VtcHR5X2FkZHJlc3Moc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5Iik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiIpCisKKyAgICBkZWYgdGVzdF9mbG9hdHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKHJlcHIoIjEuMCIpKSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMS4wKQorCisgICAgZGVmIHRlc3Rfbm90X2FuX2luZGV4X2lzc3VlMTU1NTkoc2VsZik6CisgICAgICAgICMgSW1wbGVtZW50aW5nIF9faW5kZXhfXyBtYWtlcyBmb3IgYSB2ZXJ5IG5hc3R5IGludGVyYWN0aW9uIHdpdGggdGhlCisgICAgICAgICMgYnl0ZXMgY29uc3RydWN0b3IuIFRodXMsIHdlIGRpc2FsbG93IGltcGxpY2l0IHVzZSBhcyBhbiBpbnRlZ2VyCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXgsIHNlbGYuZmFjdG9yeSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBoZXgsIHNlbGYuZmFjdG9yeSgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgc2VsZi5mYWN0b3J5KDEpKQorCisKK2NsYXNzIENvbW1vblRlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW4pOgorCisgICAgZGVmIHRlc3RfbGVhZGluZ196ZXJvcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgiMDAwLjAwMC4wMDAuMDAwIiwgIjAuMC4wLjAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIxOTIuMTY4LjAwMC4wMDEiLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfaW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKDAsICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGJ5dGVzLmZyb21oZXgoIjAwMDAwMDAwIiksICIwLjAuMC4wIikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpLCAiMTkyLjE2OC4wLjEiKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIi0xICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgtMSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqMzIpIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NCBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAyKiozMikpOgorICAgICAgICAgICAgc2VsZi5mYWN0b3J5KDIqKjMyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKKyAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSA0KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjQgYWRkcmVzcyIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDMpCisgICAgICAgIGFzc2VydEJhZExlbmd0aCg1KQorCitjbGFzcyBDb21tb25UZXN0TWl4aW5fdjYoQ29tbW9uVGVzdE1peGluKToKKworICAgIGRlZiB0ZXN0X2xlYWRpbmdfemVyb3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoIjAwMDA6OjAwMDAiLCAiOjoiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKCIwMDA6OmMwYTg6MDAwMSIsICI6OmMwYTg6MSIpCisKKyAgICBkZWYgdGVzdF9pbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoMCwgIjo6IikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiOjpjMGE4OjEiKQorCisgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgorICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQorICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OiIpCisgICAgICAgIGFkZHIgPSBieXRlcygxMikgKyBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6YzBhODoxIikKKyAgICAgICAgYWRkciA9IGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikgKyBieXRlcygxMikKKyAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiYzBhODoxOjoiKQorCisgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKKyAgICAgICAgbXNnID0gIi0xICg8IDApIGlzIG5vdCBwZXJtaXR0ZWQgYXMgYW4gSVB2NiBhZGRyZXNzIgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgtMSkKKworICAgIGRlZiB0ZXN0X2xhcmdlX2ludHNfcmVqZWN0ZWQoc2VsZik6CisgICAgICAgIG1zZyA9ICIlZCAoPj0gMioqMTI4KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgMioqMTI4KSk6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoMioqMTI4KQorCisgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKKyAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBtc2cgPSAiJXIgKGxlbiAlZCAhPSAxNikgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY2IGFkZHJlc3MiCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQorCisgICAgICAgIGFzc2VydEJhZExlbmd0aCgxNSkKKyAgICAgICAgYXNzZXJ0QmFkTGVuZ3RoKDE3KQorCisKK2NsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92NCk6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcworCisgICAgZGVmIHRlc3RfbmV0d29ya19wYXNzZWRfYXNfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYWRkciA9ICIxMjcuMC4wLjEvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJFeHBlY3RlZCA0IG9jdGV0cyBpbiAlciIsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMjcuMC4xIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjQyLi40Mi40Mi40MiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI0Mi40Mi40Mi40Mi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNDIuNDIuNDIuNDIuLi4iKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIi4uLjQyLjQyLjQyLjQyIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNi4wMTYuMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAxNi4wMTYiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjAwMCIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhLjB4MGEuMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIweDBhLjB4MGEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMHgwYSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIuIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoImJvZ3VzIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoImJvZ3VzLmNvbSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwMDAwMDAwMDAwMDAwMDAiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMTkyLjE2OC4wLjEuY29tIikKKworICAgIGRlZiB0ZXN0X2VtcHR5X29jdGV0KHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkcik6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKCJFbXB0eSBvY3RldCBub3QgcGVybWl0dGVkIGluICVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCI0Mi4uNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiLi4uIikKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfY2hhcmFjdGVycyhzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZE9jdGV0KGFkZHIsIG9jdGV0KToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGRlY2ltYWwgZGlnaXRzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIgJSAob2N0ZXQsIGFkZHIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMHgwYS4weDBhLjB4MGEuMHgwYSIsICIweDBhIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjB4YS4weDBhLjB4MGEuMHgwYSIsICIweGEiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuLTAiLCAiLTAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuKzAiLCAiKzAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiNDIuNDIuNDIuLTQyIiwgIi00MiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIrMS4rMi4rMy40IiwgIisxIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEuMi4zLjRlMCIsICI0ZTAiKQorICAgICAgICBhc3NlcnRCYWRPY3RldCgiMS4yLjMuNDo6IiwgIjQ6OiIpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxLmEuMi4zIiwgImEiKQorCisgICAgZGVmIHRlc3Rfb2N0YWxfZGVjaW1hbF9hbWJpZ3VpdHkoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiQW1iaWd1b3VzIChvY3RhbC9kZWNpbWFsKSB2YWx1ZSBpbiAlciBub3QgcGVybWl0dGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnICUgKG9jdGV0LCBhZGRyKSkpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIwMTYuMDE2LjAxNi4wMTYiLCAiMDE2IikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjAwMS4wMDAuMDA4LjAxNiIsICIwMDgiKQorCisgICAgZGVmIHRlc3Rfb2N0ZXRfbGVuZ3RoKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkT2N0ZXQoYWRkciwgb2N0ZXQpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgMyBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChvY3RldCwgYWRkcikpKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRPY3RldCgiMDAwMC4wMDAuMDAwLjAwMCIsICIwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkT2N0ZXQoIjEyMzQ1LjY3ODk5Li01NDMyMS4tOTg3NjUiLCAiMTIzNDUiKQorCisgICAgZGVmIHRlc3Rfb2N0ZXRfbGltaXQoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRPY3RldChhZGRyLCBvY3RldCk6CisgICAgICAgICAgICBtc2cgPSAiT2N0ZXQgJWQgKD4gMjU1KSBub3QgcGVybWl0dGVkIGluICVyIiAlIChvY3RldCwgYWRkcikKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZykpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIyNTcuMC4wLjAiLCAyNTcpCisgICAgICAgIGFzc2VydEJhZE9jdGV0KCIxOTIuMTY4LjAuOTk5IiwgOTk5KQorCisKK2NsYXNzIEFkZHJlc3NUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIENvbW1vblRlc3RNaXhpbl92Nik6CisgICAgZmFjdG9yeSA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcworCisgICAgZGVmIHRlc3RfbmV0d29ya19wYXNzZWRfYXNfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgYWRkciA9ICI6OjEvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIlVuZXhwZWN0ZWQgJy8nIGluICVyIiwgYWRkcik6CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X25vdF9lbm91Z2hfcGFydHMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBsZWFzdCAzIHBhcnRzIGV4cGVjdGVkIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIkZFREM6OTg3OCIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl90b29fbWFueV9jb2xvbnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IDggY29sb25zIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOTo4Ojc6Njo1OjQ6Mzo6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwOjk6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6ODo3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjg6Nzo2OjU6NDozOjI6MTo6IikKKyAgICAgICAgIyBBIHRyYWlsaW5nIElQdjQgYWRkcmVzcyBpcyB0d28gcGFydHMKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjEwOjk6ODo3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdG9vX21hbnlfcGFydHMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJFeGFjdGx5IDggcGFydHMgZXhwZWN0ZWQgd2l0aG91dCAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIzZmZlOjA6MDowOjA6MDowOjA6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI5Ojg6Nzo2OjU6NDozOjI6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI3OjY6NTo0OjM6MjoxIikKKyAgICAgICAgIyBBIHRyYWlsaW5nIElQdjQgYWRkcmVzcyBpcyB0d28gcGFydHMKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjk6ODo3OjY6NTo0OjM6NDIuNDIuNDIuNDIiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiNzo2OjU6NDozOjQyLjQyLjQyLjQyIikKKworICAgIGRlZiB0ZXN0X2JhZF9hZGRyZXNzX3NwbGl0X3Y2X3Rvb19tYW55X3BhcnRzX3dpdGhfZG91YmxlX2NvbG9uKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkU3BsaXQoYWRkcik6CisgICAgICAgICAgICBtc2cgPSAiRXhwZWN0ZWQgYXQgbW9zdCA3IG90aGVyIHBhcnRzIHdpdGggJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMToyOjM6NDo6NTo2Ojc6OCIpCisKKyAgICBkZWYgdGVzdF9iYWRfYWRkcmVzc19zcGxpdF92Nl9yZXBlYXRlZF9kb3VibGVfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJBdCBtb3N0IG9uZSAnOjonIHBlcm1pdHRlZCBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6MSIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIxOjoyOjozOjo0OjUiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMjAwMTo6ZGI6OjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjNmZmU6OjE6OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6OjNmZmU6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjNmZmU6OjE6OjEiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiM2ZmZTo6MTo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjNmZmU6OjE6OjE6IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjo6OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCcyMDAxOmRiODo6OjEnKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfbGVhZGluZ19jb2xvbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZFNwbGl0KGFkZHIpOgorICAgICAgICAgICAgbXNnID0gIkxlYWRpbmcgJzonIG9ubHkgcGVybWl0dGVkIGFzIHBhcnQgb2YgJzo6JyBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjIwMDE6ZGI4OjoxIikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxOjI6Mzo0OjU6Njo3IikKKyAgICAgICAgYXNzZXJ0QmFkU3BsaXQoIjoxOjI6Mzo0OjU6NjoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjY6NTo0OjM6MjoxOjoiKQorCisgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Nfc3BsaXRfdjZfdHJhaWxpbmdfY29sb24oc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRTcGxpdChhZGRyKToKKyAgICAgICAgICAgIG1zZyA9ICJUcmFpbGluZyAnOicgb25seSBwZXJtaXR0ZWQgYXMgcGFydCBvZiAnOjonIGluICVyIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihtc2csIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCIyMDAxOmRiODo6MToiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiMToyOjM6NDo1OjY6NzoiKQorICAgICAgICBhc3NlcnRCYWRTcGxpdCgiOjoxLjIuMy40OiIpCisgICAgICAgIGFzc2VydEJhZFNwbGl0KCI6Ojc6Njo1OjQ6MzoyOiIpCisKKyAgICBkZWYgdGVzdF9iYWRfdjRfcGFydF9pbihzZWxmKToKKyAgICAgICAgZGVmIGFzc2VydEJhZEFkZHJlc3NQYXJ0KGFkZHIsIHY0X2Vycm9yKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIiVzIGluICVyIiwgdjRfZXJyb3IsIGFkZHIpOgorICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcyhhZGRyKQorCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxLm5ldCIsICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS5uZXQnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjNmZmU6OjEyNy4wLjEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEyNy4wLjEnIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzc1BhcnQoIjo6MS4yLjMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgNCBvY3RldHMgaW4gJzEuMi4zJyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCI6OjEuMi4zLjQuNSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCA0IG9jdGV0cyBpbiAnMS4yLjMuNC41JyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3NQYXJ0KCIzZmZlOjoxLjEuMS5uZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBkZWNpbWFsIGRpZ2l0cyBwZXJtaXR0ZWQgaW4gJ25ldCcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gJzEuMS4xLm5ldCciKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9jaGFyYWN0ZXJzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkUGFydChhZGRyLCBwYXJ0KToKKyAgICAgICAgICAgIG1zZyA9ICJPbmx5IGhleCBkaWdpdHMgcGVybWl0dGVkIGluICVyIGluICVyIiAlIChwYXJ0LCBhZGRyKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydEFkZHJlc3NFcnJvcihyZS5lc2NhcGUobXNnKSk6CisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6Z29vZyIsICJnb29nIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6LTAiLCAiLTAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIzZmZlOjorMCIsICIrMCIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoIjNmZmU6Oi0xIiwgIi0xIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiMS4yLjMuNDo6IiwgIjEuMi4zLjQiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCcxMjM0OmF4eTo6YicsICJheHkiKQorCisgICAgZGVmIHRlc3RfcGFydF9sZW5ndGgoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWRQYXJ0KGFkZHIsIHBhcnQpOgorICAgICAgICAgICAgbXNnID0gIkF0IG1vc3QgNCBjaGFyYWN0ZXJzIHBlcm1pdHRlZCBpbiAlciBpbiAlciIKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IobXNnLCBwYXJ0LCBhZGRyKToKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoYWRkcikKKworICAgICAgICBhc3NlcnRCYWRQYXJ0KCI6OjAwMDAwIiwgIjAwMDAwIikKKyAgICAgICAgYXNzZXJ0QmFkUGFydCgiM2ZmZTo6MTAwMDAiLCAiMTAwMDAiKQorICAgICAgICBhc3NlcnRCYWRQYXJ0KCIwMjAwMTpkYjg6OiIsICIwMjAwMSIpCisgICAgICAgIGFzc2VydEJhZFBhcnQoJzIwMDE6ODg4ODg4OjoxJywgIjg4ODg4OCIpCisKKworY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NChDb21tb25UZXN0TWl4aW5fdjQpOgorICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCisKKyAgICBkZWYgdGVzdF9zcGxpdF9uZXRtYXNrKHNlbGYpOgorICAgICAgICBhZGRyID0gIjEuMi4zLjQvMzIvMjQiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIk9ubHkgb25lICcvJyBwZXJtaXR0ZWQgaW4gJXIiICUgYWRkcik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzcyhhZGRyLCBkZXRhaWxzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLyIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi84IiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiYm9ndXMiLCAiRXhwZWN0ZWQgNCBvY3RldHMiKQorICAgICAgICBhc3NlcnRCYWRBZGRyZXNzKCJnb29nbGUuY29tIiwgIkV4cGVjdGVkIDQgb2N0ZXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTAvOCIsICJFeHBlY3RlZCA0IG9jdGV0cyIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIjo6MS4yLjMuNCIsICJPbmx5IGRlY2ltYWwgZGlnaXRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMS4yLjMuMjU2IiwgcmUuZXNjYXBlKCIyNTYgKD4gMjU1KSIpKQorCisgICAgZGVmIHRlc3RfbmV0bWFza19lcnJvcnMoc2VsZik6CisgICAgICAgIGRlZiBhc3NlcnRCYWROZXRtYXNrKGFkZHIsIG5ldG1hc2spOgorICAgICAgICAgICAgbXNnID0gIiVyIGlzIG5vdCBhIHZhbGlkIG5ldG1hc2siCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0TmV0bWFza0Vycm9yKG1zZyAlIG5ldG1hc2spOgorICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeSgiJXMvJXMiICUgKGFkZHIsIG5ldG1hc2spKQorCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4yLjMuNCIsICIzMyIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMi4zLjQiLCAiMjU0LjI1NC4yNTUuMjU2IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiMS4xLjEuMSIsICIyNTQueHl6LjIuMyIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjEuMS4xLjEiLCAiMjQwLjI1NS4wLjAiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCIxLjEuMS4xIiwgInB1ZGRpbmciKQorCitjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NChCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjQpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZQorCitjbGFzcyBOZXR3b3JrVGVzdENhc2VfdjQoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y0KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjROZXR3b3JrCisKKworY2xhc3MgTmV0bWFza1Rlc3RNaXhpbl92NihDb21tb25UZXN0TWl4aW5fdjYpOgorICAgICIiIklucHV0IHZhbGlkYXRpb24gb24gaW50ZXJmYWNlcyBhbmQgbmV0d29ya3MgaXMgdmVyeSBzaW1pbGFyIiIiCisKKyAgICBkZWYgdGVzdF9zcGxpdF9uZXRtYXNrKHNlbGYpOgorICAgICAgICBhZGRyID0gImNhZmU6Y2FmZTo6LzEyOC8xOTAiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoIk9ubHkgb25lICcvJyBwZXJtaXR0ZWQgaW4gJXIiICUgYWRkcik6CisgICAgICAgICAgICBzZWxmLmZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2FkZHJlc3NfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkQWRkcmVzcyhhZGRyLCBkZXRhaWxzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IoZGV0YWlscyk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCisKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiLyIsICJBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eSIpCisgICAgICAgIGFzc2VydEJhZEFkZHJlc3MoIi84IiwgIkFkZHJlc3MgY2Fubm90IGJlIGVtcHR5IikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiZ29vZ2xlLmNvbSIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMS4yLjMuNCIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTAvOCIsICJBdCBsZWFzdCAzIHBhcnRzIikKKyAgICAgICAgYXNzZXJ0QmFkQWRkcmVzcygiMTIzNDpheHk6OmIiLCAiT25seSBoZXggZGlnaXRzIikKKworICAgIGRlZiB0ZXN0X25ldG1hc2tfZXJyb3JzKHNlbGYpOgorICAgICAgICBkZWYgYXNzZXJ0QmFkTmV0bWFzayhhZGRyLCBuZXRtYXNrKToKKyAgICAgICAgICAgIG1zZyA9ICIlciBpcyBub3QgYSB2YWxpZCBuZXRtYXNrIgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydE5ldG1hc2tFcnJvcihtc2cgJSBuZXRtYXNrKToKKyAgICAgICAgICAgICAgICBzZWxmLmZhY3RvcnkoIiVzLyVzIiAlIChhZGRyLCBuZXRtYXNrKSkKKworICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiIikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgIjo6MSIpCisgICAgICAgIGFzc2VydEJhZE5ldG1hc2soIjo6MSIsICIxOjoiKQorICAgICAgICBhc3NlcnRCYWROZXRtYXNrKCI6OjEiLCAiMTI5IikKKyAgICAgICAgYXNzZXJ0QmFkTmV0bWFzaygiOjoxIiwgInB1ZGRpbmciKQorCitjbGFzcyBJbnRlcmZhY2VUZXN0Q2FzZV92NihCYXNlVGVzdENhc2UsIE5ldG1hc2tUZXN0TWl4aW5fdjYpOgorICAgIGZhY3RvcnkgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZQorCitjbGFzcyBOZXR3b3JrVGVzdENhc2VfdjYoQmFzZVRlc3RDYXNlLCBOZXRtYXNrVGVzdE1peGluX3Y2KToKKyAgICBmYWN0b3J5ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrCisKKworY2xhc3MgRmFjdG9yeUZ1bmN0aW9uRXJyb3JzKEJhc2VUZXN0Q2FzZSk6CisKKyAgICBkZWYgYXNzZXJ0RmFjdG9yeUVycm9yKHNlbGYsIGZhY3RvcnksIGtpbmQpOgorICAgICAgICAiIiJFbnN1cmUgYSBjbGVhbiBWYWx1ZUVycm9yIHdpdGggdGhlIGV4cGVjdGVkIG1lc3NhZ2UiIiIKKyAgICAgICAgYWRkciA9ICJjYW1lbG90IgorICAgICAgICBtc2cgPSAnJXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGFuIElQdjQgb3IgSVB2NiAlcycKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydENsZWFuRXJyb3IoVmFsdWVFcnJvciwgbXNnLCBhZGRyLCBraW5kKToKKyAgICAgICAgICAgIGZhY3RvcnkoYWRkcikKKworICAgIGRlZiB0ZXN0X2lwX2FkZHJlc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9hZGRyZXNzLCAiYWRkcmVzcyIpCisKKyAgICBkZWYgdGVzdF9pcF9pbnRlcmZhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFjdG9yeUVycm9yKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UsICJpbnRlcmZhY2UiKQorCisgICAgZGVmIHRlc3RfaXBfbmV0d29yayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWN0b3J5RXJyb3IoaXBhZGRyZXNzLmlwX25ldHdvcmssICJuZXR3b3JrIikKKworCitjbGFzcyBDb21wYXJpc29uVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgdjRhZGRyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDEpCisgICAgdjRuZXQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoMSkKKyAgICB2NGludGYgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgxKQorICAgIHY2YWRkciA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygxKQorICAgIHY2bmV0ID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKDEpCisgICAgdjZpbnRmID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoMSkKKworICAgIHY0X2FkZHJlc3NlcyA9IFt2NGFkZHIsIHY0aW50Zl0KKyAgICB2NF9vYmplY3RzID0gdjRfYWRkcmVzc2VzICsgW3Y0bmV0XQorICAgIHY2X2FkZHJlc3NlcyA9IFt2NmFkZHIsIHY2aW50Zl0KKyAgICB2Nl9vYmplY3RzID0gdjZfYWRkcmVzc2VzICsgW3Y2bmV0XQorICAgIG9iamVjdHMgPSB2NF9vYmplY3RzICsgdjZfb2JqZWN0cworCisgICAgZGVmIHRlc3RfZm9yZWlnbl90eXBlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICAjIF9fZXFfXyBzaG91bGQgbmV2ZXIgcmFpc2UgVHlwZUVycm9yIGRpcmVjdGx5CisgICAgICAgIG90aGVyID0gb2JqZWN0KCkKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9iaiwgb3RoZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9iaiA9PSBvdGhlcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLl9fZXFfXyhvdGhlciksIE5vdEltcGxlbWVudGVkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmouX19uZV9fKG90aGVyKSwgTm90SW1wbGVtZW50ZWQpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICAjIEVuc3VyZSBub25lIG9mIHRoZSBpbnRlcm5hbCBvYmplY3RzIGFjY2lkZW50YWxseQorICAgICAgICAjIGV4cG9zZSB0aGUgcmlnaHQgc2V0IG9mIGF0dHJpYnV0ZXMgdG8gYmVjb21lICJlcXVhbCIKKyAgICAgICAgZm9yIGxocyBpbiBzZWxmLm9iamVjdHM6CisgICAgICAgICAgICBmb3IgcmhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgICAgICBpZiBsaHMgaXMgcmhzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGhzLCByaHMpCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgZm9yIG9iaiBpbiBzZWxmLnY0X2FkZHJlc3NlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ob2JqLCBzZWxmLnY0bmV0KQorICAgICAgICBmb3Igb2JqIGluIHNlbGYudjZfYWRkcmVzc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihvYmosIHNlbGYudjZuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52NF9vYmplY3RzICsgW3NlbGYudjZuZXRdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmosIHNlbGYudjZuZXQpCisgICAgICAgIGZvciBvYmogaW4gc2VsZi52Nl9vYmplY3RzICsgW3NlbGYudjRuZXRdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmosIHNlbGYudjRuZXQpCisKKyAgICBkZWYgdGVzdF9taXhlZF90eXBlX29yZGVyaW5nKHNlbGYpOgorICAgICAgICBmb3IgbGhzIGluIHNlbGYub2JqZWN0czoKKyAgICAgICAgICAgIGZvciByaHMgaW4gc2VsZi5vYmplY3RzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGhzLCB0eXBlKHJocykpIG9yIGlzaW5zdGFuY2UocmhzLCB0eXBlKGxocykpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaHMgPCByaHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGxocyA+IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzIDw9IHJocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbGhzID49IHJocykKKworICAgIGRlZiB0ZXN0X21peGVkX3R5cGVfa2V5KHNlbGYpOgorICAgICAgICAjIHdpdGggZ2V0X21peGVkX3R5cGVfa2V5LCB5b3UgY2FuIHNvcnQgYWRkcmVzc2VzIGFuZCBuZXR3b3JrLgorICAgICAgICB2NF9vcmRlcmVkID0gW3NlbGYudjRhZGRyLCBzZWxmLnY0bmV0LCBzZWxmLnY0aW50Zl0KKyAgICAgICAgdjZfb3JkZXJlZCA9IFtzZWxmLnY2YWRkciwgc2VsZi52Nm5ldCwgc2VsZi52NmludGZdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjRfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi52NF9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjZfb3JkZXJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoc2VsZi52Nl9vYmplY3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk9aXBhZGRyZXNzLmdldF9taXhlZF90eXBlX2tleSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodjRfb3JkZXJlZCArIHY2X29yZGVyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYub2JqZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PWlwYWRkcmVzcy5nZXRfbWl4ZWRfdHlwZV9rZXkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vdEltcGxlbWVudGVkLCBpcGFkZHJlc3MuZ2V0X21peGVkX3R5cGVfa2V5KG9iamVjdCkpCisKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfdmVyc2lvbnMoc2VsZik6CisgICAgICAgICMgVGhlc2Ugc2hvdWxkIGFsd2F5cyByYWlzZSBUeXBlRXJyb3IKKyAgICAgICAgdjRhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKQorICAgICAgICB2NG5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykKKyAgICAgICAgdjZhZGRyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpCisgICAgICAgIHY2bmV0ID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NGFkZHIuX19sdF9fLCB2NmFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRhZGRyLl9fZ3RfXywgdjZhZGRyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY0bmV0Ll9fbHRfXywgdjZuZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjRuZXQuX19ndF9fLCB2Nm5ldCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHY2YWRkci5fX2x0X18sIHY0YWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2NmFkZHIuX19ndF9fLCB2NGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdjZuZXQuX19sdF9fLCB2NG5ldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB2Nm5ldC5fX2d0X18sIHY0bmV0KQorCisKKworY2xhc3MgSXBhZGRyVW5pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmlwdjRfYWRkcmVzcyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNCcpCisgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpCisgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrID0gaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjIuMy4wLzI0JykKKyAgICAgICAgI3NlbGYuaXB2NF9ob3N0bWFzayA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxMC4wLjAuMS8wLjI1NS4yNTUuMjU1JykKKyAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6MDowOjEnKQorICAgICAgICBzZWxmLmlwdjZfaW50ZXJmYWNlID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoCisgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxLzY0JykKKyAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6NjU4OjIyYTpjYWZlOjovNjQnKQorCisgICAgZGVmIHRlc3RSZXByKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJJUHY0SW50ZXJmYWNlKCcxLjIuMy40LzMyJykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxJykpKQorCisgICAgIyBpc3N1ZTU3CisgICAgZGVmIHRlc3RBZGRyZXNzSW50TWF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKSArIDI1NSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4yLjAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4xLjEnKSAtIDI1NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMS4wLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6MScpICsgKDIqKjE2IC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZicpIC0gKDIqKjE2IC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCc6OjEnKSkKKworICAgIGRlZiB0ZXN0SW52YWxpZEludFRvQnl0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52NF9pbnRfdG9fcGFja2VkLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY0X2ludF90b19wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogaXBhZGRyZXNzLklQVjRMRU5HVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy52Nl9pbnRfdG9fcGFja2VkLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLnY2X2ludF90b19wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogaXBhZGRyZXNzLklQVjZMRU5HVEgpCisKKyAgICBkZWYgdGVzdEludGVybmFscyhzZWxmKToKKyAgICAgICAgZmlyc3QsIGxhc3QgPSBpcGFkZHJlc3MuX2ZpbmRfYWRkcmVzc19yYW5nZShbCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEwJyksCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEwLjEwLjEwLjEyJyldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpcnN0LCBsYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyOCwgaXBhZGRyZXNzLl9jb3VudF9yaWdodGhhbmRfemVyb19iaXRzKDAsIDEyOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIklQdjROZXR3b3JrKCcxLjIuMy4wLzI0JykiLCByZXByKHNlbGYuaXB2NF9uZXR3b3JrKSkKKworICAgIGRlZiB0ZXN0TWlzc2luZ0FkZHJlc3NWZXJzaW9uKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlQWRkcmVzcyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKnZlcnNpb24iKToKKyAgICAgICAgICAgIGJyb2tlbi52ZXJzaW9uCisKKyAgICBkZWYgdGVzdE1pc3NpbmdOZXR3b3JrVmVyc2lvbihzZWxmKToKKyAgICAgICAgY2xhc3MgQnJva2VuKGlwYWRkcmVzcy5fQmFzZU5ldHdvcmspOgorICAgICAgICAgICAgcGFzcworICAgICAgICBicm9rZW4gPSBCcm9rZW4oJzEyNy4wLjAuMScpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChOb3RJbXBsZW1lbnRlZEVycm9yLCAiQnJva2VuLip2ZXJzaW9uIik6CisgICAgICAgICAgICBicm9rZW4udmVyc2lvbgorCisgICAgZGVmIHRlc3RNaXNzaW5nQWRkcmVzc0NsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBCcm9rZW4oaXBhZGRyZXNzLl9CYXNlTmV0d29yayk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGJyb2tlbiA9IEJyb2tlbignMTI3LjAuMC4xJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KE5vdEltcGxlbWVudGVkRXJyb3IsICJCcm9rZW4uKmFkZHJlc3MiKToKKyAgICAgICAgICAgIGJyb2tlbi5fYWRkcmVzc19jbGFzcworCisgICAgZGVmIHRlc3RHZXROZXR3b3JrKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjRfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MpLCAxNjkwOTA1NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzKSwgJzEuMi4zLjAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0MzM0MDM2NDcyOTQwMjIwOTA3NTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfbmV0d29yay5ob3N0bWFzayksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdElwRnJvbUludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLl9pcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgxNjkwOTA2MCkuX2lwKQorCisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4yLjMuNCcpCisgICAgICAgIGlwdjYgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjA6MDoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0LCBpcGFkZHJlc3MuaXBfbmV0d29yayhpbnQoaXB2NC5uZXR3b3JrX2FkZHJlc3MpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY2LCBpcGFkZHJlc3MuaXBfbmV0d29yayhpbnQoaXB2Ni5uZXR3b3JrX2FkZHJlc3MpKSkKKworICAgICAgICB2Nl9pbnQgPSA0MjU0MDYxNjgyOTE4MjQ2OTQzMzU0Nzc2MjQ4MjA5Nzk0NjYyNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UuX2lwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKHY2X2ludCkuX2lwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoc2VsZi5pcHY0X2FkZHJlc3MuX2lwKS52ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX25ldHdvcmsoc2VsZi5pcHY2X2FkZHJlc3MuX2lwKS52ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIDYpCisKKyAgICBkZWYgdGVzdElwRnJvbVBhY2tlZChzZWxmKToKKyAgICAgICAgYWRkcmVzcyA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS5faXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZShiJ1x4MDFceDAyXHgwM1x4MDQnKS5faXApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcmVzcygnMjU1LjI1NC4yNTMuMjUyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4ZmZceGZlXHhmZFx4ZmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLmlwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgIGInXHgyMFx4MDFceDA2XHg1OFx4MDJceDJhXHhjYVx4ZmUnCisgICAgICAgICAgICAgICAgICAgIGInXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnKS5pcCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyZXNzKCdmZmZmOjI6Mzo0OmZmZmY6OicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3MoYidceGZmXHhmZlx4MDBceDAyXHgwMFx4MDNceDAwXHgwNCcgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGInXHhmZlx4ZmYnICsgYidceDAwJyAqIDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJlc3MoJzo6JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyhiJ1x4MDAnICogMTYpKQorCisgICAgZGVmIHRlc3RHZXRJcChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X2ludGVyZmFjZS5pcCksIDE2OTA5MDYwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfaW50ZXJmYWNlLmlwKSwgJzEuMi4zLjQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9pbnRlcmZhY2UuaXApLAorICAgICAgICAgICAgICAgICAgICAgICAgIDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjZfaW50ZXJmYWNlLmlwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxJykKKworICAgIGRlZiB0ZXN0R2V0TmV0bWFzayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsubmV0bWFzayksIDQyOTQ5NjcwNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLm5ldG1hc2spLCAnMjU1LjI1NS4yNTUuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHNlbGYuaXB2Nl9uZXR3b3JrLm5ldG1hc2spLAorICAgICAgICAgICAgICAgICAgICAgICAgIDM0MDI4MjM2NjkyMDkzODQ2MzQ0NDkyNzg2MzM1ODA1ODY1OTg0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5wcmVmaXhsZW4sIDY0KQorCisgICAgZGVmIHRlc3RaZXJvTmV0bWFzayhzZWxmKToKKyAgICAgICAgaXB2NF96ZXJvX25ldG1hc2sgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoaXB2NF96ZXJvX25ldG1hc2submV0d29yay5uZXRtYXNrKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLm5ldHdvcmsuX2lzX3ZhbGlkX25ldG1hc2soCisgICAgICAgICAgICAgICAgc3RyKDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCcwJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcHY0X3plcm9fbmV0bWFzay5faXNfdmFsaWRfbmV0bWFzaygnMC4wLjAuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwdjRfemVyb19uZXRtYXNrLl9pc192YWxpZF9uZXRtYXNrKCdpbnZhbGlkJykpCisKKyAgICAgICAgaXB2Nl96ZXJvX25ldG1hc2sgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxLzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChpcHY2X3plcm9fbmV0bWFzay5uZXR3b3JrLm5ldG1hc2spLCAwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXB2Nl96ZXJvX25ldG1hc2submV0d29yay5faXNfdmFsaWRfbmV0bWFzaygKKyAgICAgICAgICAgICAgICBzdHIoMCkpKQorCisgICAgZGVmIHRlc3RJUHY0TmV0QW5kSG9zdG1hc2tzKHNlbGYpOgorICAgICAgICBuZXQgPSBzZWxmLmlwdjRfbmV0d29yaworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnaW52YWxpZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc192YWxpZF9uZXRtYXNrKCcxMjguMTI4LjEyOC4xMjgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzEyOC4xMjguMTI4LjEyNycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ldC5faXNfdmFsaWRfbmV0bWFzaygnMTI4LjEyOC4xMjguMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXQuX2lzX3ZhbGlkX25ldG1hc2soJzI1NS4xMjguMTI4LjEyOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnaW52YWxpZCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobmV0Ll9pc19ob3N0bWFzaygnMTI4LjI1NS4yNTUuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnMjU1LjI1NS4yNTUuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV0Ll9pc19ob3N0bWFzaygnMS4yLjMuNCcpKQorCisgICAgICAgIG5ldCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMTI3LjAuMC4wLzAuMC4wLjI1NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjQsIG5ldC5wcmVmaXhsZW4pCisKKyAgICBkZWYgdGVzdEdldEJyb2FkY2FzdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLCAxNjkwOTMxMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MpLCAnMS4yLjMuMjU1JykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChzZWxmLmlwdjZfbmV0d29yay5icm9hZGNhc3RfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgNDI1NDA2MTY4MjkxODI0Njk0NTE4NTAzOTEzNjc3MzE2NDIzNjcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpCisKKyAgICBkZWYgdGVzdEdldFByZWZpeGxlbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsucHJlZml4bGVuLCAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLm5ldHdvcmsucHJlZml4bGVuLCA2NCkKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQoKS5wcmVmaXhsZW4sIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzZWxmLmlwdjRfbmV0d29yay5zdXBlcm5ldCgpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4yLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzAuMC4wLjAvMCcpLm5ldHdvcmsuc3VwZXJuZXQoKSwKKyAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMC4wLjAuMC8wJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLnByZWZpeGxlbiwgNjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrLnN1cGVybmV0KCkubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MC8wJykubmV0d29yay5zdXBlcm5ldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnOjowLzAnKSkKKworICAgIGRlZiB0ZXN0R2V0U3VwZXJuZXQzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KDMpLnByZWZpeGxlbiwgMjEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KDMpLm5ldHdvcmtfYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4wLjAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoMykucHJlZml4bGVuLCA2MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQoMykubmV0d29ya19hZGRyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZjg6OicpCisKKyAgICBkZWYgdGVzdEdldFN1cGVybmV0NChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmPTIsIG5ld19wcmVmaXg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9MjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VwZXJuZXQobmV3X3ByZWZpeD0yMikpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGxlbl9kaWZmPTIsIG5ld19wcmVmaXg9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19wcmVmaXg9NjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQocHJlZml4bGVuX2RpZmY9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuc3VwZXJuZXQobmV3X3ByZWZpeD02MikpCisKKyAgICBkZWYgdGVzdEhvc3RzKHNlbGYpOgorICAgICAgICBob3N0cyA9IGxpc3Qoc2VsZi5pcHY0X25ldHdvcmsuaG9zdHMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyNTQsIGxlbihob3N0cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjIuMy4xJyksIGhvc3RzWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMjU0JyksIGhvc3RzWy0xXSkKKworICAgICAgICAjIHNwZWNpYWwgY2FzZSB3aGVyZSBvbmx5IDEgYml0IGlzIGxlZnQgZm9yIGFkZHJlc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcyLjAuMC4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMi4wLjAuMScpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcyLjAuMC4wLzMxJykuaG9zdHMoKSkpCisKKyAgICBkZWYgdGVzdEZhbmN5U3VibmV0dGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj0zKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD0yNykpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9MjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTI3KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoc2VsZi5pcHY2X25ldHdvcmsuc3VibmV0cyhwcmVmaXhsZW5fZGlmZj00KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKHNlbGYuaXB2Nl9uZXR3b3JrLnN1Ym5ldHMobmV3X3ByZWZpeD02OCkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKG5ld19wcmVmaXg9NjMpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKHByZWZpeGxlbl9kaWZmPTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHJlZml4PTY4KSkKKworICAgIGRlZiB0ZXN0R2V0U3VibmV0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoKSlbMF0ucHJlZml4bGVuLCAyNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobGlzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVswXS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobGlzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cygpKVsxXS5uZXR3b3JrX2FkZHJlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxLjIuMy4xMjgnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKCkpWzBdLnByZWZpeGxlbiwgNjUpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldEZvclNpbmdsZTMyKHNlbGYpOgorICAgICAgICBpcCA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuNC8zMicpCisgICAgICAgIHN1Ym5ldHMxID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKCldCisgICAgICAgIHN1Ym5ldHMyID0gW3N0cih4KSBmb3IgeCBpbiBpcC5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1Ym5ldHMxLCBbJzEuMi4zLjQvMzInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgc3VibmV0czIpCisKKyAgICBkZWYgdGVzdEdldFN1Ym5ldEZvclNpbmdsZTEyOChzZWxmKToKKyAgICAgICAgaXAgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzo6MS8xMjgnKQorICAgICAgICBzdWJuZXRzMSA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygpXQorICAgICAgICBzdWJuZXRzMiA9IFtzdHIoeCkgZm9yIHggaW4gaXAuc3VibmV0cygyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJuZXRzMSwgWyc6OjEvMTI4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VibmV0czEsIHN1Ym5ldHMyKQorCisgICAgZGVmIHRlc3RTdWJuZXQyKHNlbGYpOgorICAgICAgICBpcHMgPSBbc3RyKHgpIGZvciB4IGluIHNlbGYuaXB2NF9uZXR3b3JrLnN1Ym5ldHMoMildCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBpcHMsCisgICAgICAgICAgICBbJzEuMi4zLjAvMjYnLCAnMS4yLjMuNjQvMjYnLCAnMS4yLjMuMTI4LzI2JywgJzEuMi4zLjE5Mi8yNiddKQorCisgICAgICAgIGlwc3Y2ID0gW3N0cih4KSBmb3IgeCBpbiBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgaXBzdjYsCisgICAgICAgICAgICBbJzIwMDE6NjU4OjIyYTpjYWZlOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo0MDAwOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo4MDAwOjovNjYnLAorICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTpjMDAwOjovNjYnXSkKKworICAgIGRlZiB0ZXN0U3VibmV0RmFpbHNGb3JMYXJnZUNpZHJEaWZmKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfaW50ZXJmYWNlLm5ldHdvcmsuc3VibmV0cyg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmsuc3VibmV0cyg5KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoNjUpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKDY1KSkKKworICAgIGRlZiB0ZXN0U3VwZXJuZXRGYWlsc0ZvckxhcmdlQ2lkckRpZmYoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9pbnRlcmZhY2UubmV0d29yay5zdXBlcm5ldCwgMjUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9pbnRlcmZhY2UubmV0d29yay5zdXBlcm5ldCwgNjUpCisKKyAgICBkZWYgdGVzdFN1Ym5ldEZhaWxzRm9yTmVnYXRpdmVDaWRyRGlmZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLnN1Ym5ldHMoLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKC0xKSkKKworICAgIGRlZiB0ZXN0R2V0TnVtX0FkZHJlc3NlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfbmV0d29yay5udW1fYWRkcmVzc2VzLCAyNTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjRfbmV0d29yay5zdWJuZXRzKCkpWzBdLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMTI4KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLnN1cGVybmV0KCkubnVtX2FkZHJlc3NlcywgNTEyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X25ldHdvcmsubnVtX2FkZHJlc3NlcywgMTg0NDY3NDQwNzM3MDk1NTE2MTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlwdjZfbmV0d29yay5zdWJuZXRzKCkpWzBdLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgOTIyMzM3MjAzNjg1NDc3NTgwOCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5zdXBlcm5ldCgpLm51bV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgMzY4OTM0ODgxNDc0MTkxMDMyMzIpCisKKyAgICBkZWYgdGVzdENvbnRhaW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjEyOC8yNScpIGluCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlwdjRfbmV0d29yaykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjQuMS8yNCcpIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcHY0X25ldHdvcmspCisgICAgICAgICMgV2UgY2FuIHRlc3QgYWRkcmVzc2VzIGFuZCBzdHJpbmcgYXMgd2VsbC4KKyAgICAgICAgYWRkcjEgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjM3JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFkZHIxIGluIHNlbGYuaXB2NF9uZXR3b3JrKQorICAgICAgICAjIGlzc3VlIDYxLCBiYWQgbmV0d29yayBjb21wYXJpc29uIG9uIGxpa2UtaXAnZCBuZXR3b3JrIG9iamVjdHMKKyAgICAgICAgIyB3aXRoIGlkZW50aWNhbCBicm9hZGNhc3QgYWRkcmVzc2VzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8xNicpLl9fY29udGFpbnNfXygKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMC4wLjAvMTUnKSkpCisKKyAgICBkZWYgdGVzdE50aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY0X25ldHdvcmtbNV0pLCAnMS4yLjMuNScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuaXB2NF9uZXR3b3JrLl9fZ2V0aXRlbV9fLCAyNTYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2VsZi5pcHY2X25ldHdvcmtbNV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6NScpCisKKyAgICBkZWYgdGVzdEdldGl0ZW0oc2VsZik6CisgICAgICAgICMgaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2lwYWRkci1weS9pc3N1ZXMvZGV0YWlsP2lkPTE1CisgICAgICAgIGFkZHIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzE3Mi4zMS4yNTUuMTI4LzI1NS4yNTUuMjU1LjI0MCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjgsIGFkZHIucHJlZml4bGVuKQorICAgICAgICBhZGRyX2xpc3QgPSBsaXN0KGFkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTI4Jywgc3RyKGFkZHJfbGlzdFswXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzE3Mi4zMS4yNTUuMTI4Jywgc3RyKGFkZHJbMF0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxNzIuMzEuMjU1LjE0MycsIHN0cihhZGRyX2xpc3RbLTFdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTcyLjMxLjI1NS4xNDMnLCBzdHIoYWRkclstMV0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJfbGlzdFstMV0sIGFkZHJbLTFdKQorCisgICAgZGVmIHRlc3RFcXVhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzI0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjIuMy40LzIzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjRfaW50ZXJmYWNlID09ICcnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgPT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY0X2ludGVyZmFjZSA9PSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlID09CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PQorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS82MycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgPT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5pcHY2X2ludGVyZmFjZSA9PSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlID09IDIpCisKKyAgICBkZWYgdGVzdE5vdEVxdWFsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMjMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCc6OjEuMi4zLjQvMjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9pbnRlcmZhY2UgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfaW50ZXJmYWNlICE9IFtdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2ludGVyZmFjZSAhPSAyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPQorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuNScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X2FkZHJlc3MgIT0gJycpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyAhPSBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2NF9hZGRyZXNzICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzYzJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yMycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2ludGVyZmFjZSAhPSAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9pbnRlcmZhY2UgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfaW50ZXJmYWNlICE9IDIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzEuMi4zLjQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuaXB2Nl9hZGRyZXNzICE9ICcnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY2X2FkZHJlc3MgIT0gW10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjZfYWRkcmVzcyAhPSAyKQorCisgICAgZGVmIHRlc3RTbGFzaDMyQ29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAnMS4yLjMuNC8yNTUuMjU1LjI1NS4yNTUnKSksICcxLjIuMy40LzMyJykKKworICAgIGRlZiB0ZXN0U2xhc2gxMjhDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzo6MS8xMjgnKQorCisgICAgZGVmIHRlc3RTbGFzaDBDb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzEuMi4zLjQvMC4wLjAuMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJzEuMi4zLjQvMCcpCisKKyAgICBkZWYgdGVzdENvbGxhcHNpbmcoc2VsZik6CisgICAgICAgICMgdGVzdCBvbmx5IElQIGFkZHJlc3NlcyBpbmNsdWRpbmcgc29tZSBkdXBsaWNhdGVzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMicpCisgICAgICAgIGlwNCA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMycpCisgICAgICAgIGlwNSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuNCcpCisgICAgICAgIGlwNiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMCcpCisgICAgICAgICMgY2hlY2sgdGhhdCBhZGRyZXNlcyBhcmUgc3Vic3VtZWQgcHJvcGVybHkuCisgICAgICAgIGNvbGxhcHNlZCA9IGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICBbaXAxLCBpcDIsIGlwMywgaXA0LCBpcDUsIGlwNl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLAorICAgICAgICAgICAgICAgIFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMzAnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMS40LzMyJyldKQorCisgICAgICAgICMgdGVzdCBhIG1peCBvZiBJUCBhZGRyZXNzZXMgYW5kIG5ldHdvcmtzIGluY2x1ZGluZyBzb21lIGR1cGxpY2F0ZXMKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4yJykKKyAgICAgICAgaXA0ID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4zJykKKyAgICAgICAgI2lwNSA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjEuMS40LzMwJykKKyAgICAgICAgI2lwNiA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKCcxLjEuMS40LzMwJykKKyAgICAgICAgIyBjaGVjayB0aGF0IGFkZHJlc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwMywgaXA0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMCcpXSkKKworICAgICAgICAjIHRlc3Qgb25seSBJUCBuZXR3b3JrcworICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjQnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjAvMjQnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4yLjAvMjQnKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4zLjAvMjQnKQorICAgICAgICBpcDUgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS40LjAvMjQnKQorICAgICAgICAjIHN0b3JlZCBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIGIvYyB3ZSB3YW50IENvbGxhcHNlQWRkciB0byBjYWxsCisgICAgICAgICMgW10uc29ydAorICAgICAgICBpcDYgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4wLjAvMjInKQorICAgICAgICAjIGNoZWNrIHRoYXQgYWRkcmVzZXMgYXJlIHN1YnN1bWVkIHByb3Blcmx5LgorICAgICAgICBjb2xsYXBzZWQgPSBpcGFkZHJlc3MuY29sbGFwc2VfYWRkcmVzc2VzKFtpcDEsIGlwMiwgaXAzLCBpcDQsIGlwNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxhcHNlZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjAuMC8yMicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS40LjAvMjQnKV0pCisKKyAgICAgICAgIyB0ZXN0IHRoYXQgdHdvIGFkZHJlc3NlcyBhcmUgc3VwZXJuZXQnZWQgcHJvcGVybHkKKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGFwc2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzIzJyldKQorCisgICAgICAgICMgdGVzdCBzYW1lIElQIG5ldHdvcmtzCisgICAgICAgIGlwX3NhbWUxID0gaXBfc2FtZTIgPSBpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzEuMS4xLjEvMzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcygKKyAgICAgICAgICAgICAgICAgICAgW2lwX3NhbWUxLCBpcF9zYW1lMl0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBfc2FtZTFdKQorCisgICAgICAgICMgdGVzdCBzYW1lIElQIGFkZHJlc3NlcworICAgICAgICBpcF9zYW1lMSA9IGlwX3NhbWUyID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxLjEuMS4xJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMoCisgICAgICAgICAgICAgICAgICAgIFtpcF9zYW1lMSwgaXBfc2FtZTJdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xLzMyJyldKQorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMDAnKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi8xMjAnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6Oi85NicpCisgICAgICAgICMgdGVzdCB0aGF0IGlwdjYgYWRkcmVzc2VzIGFyZSBzdWJzdW1lZCBwcm9wZXJseS4KKyAgICAgICAgY29sbGFwc2VkID0gaXBhZGRyZXNzLmNvbGxhcHNlX2FkZHJlc3NlcyhbaXAxLCBpcDIsIGlwM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb2xsYXBzZWQpLCBbaXAzXSkKKworICAgICAgICAjIHRoZSB0b2VqYW0gdGVzdAorICAgICAgICBhZGRyX3R1cGxlcyA9IFsKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjEnKSwKKyAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpKSwKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzI0JyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyMCcpKSwKKyAgICAgICAgICAgICAgICAoaXBhZGRyZXNzLklQdjROZXR3b3JrKCcxLjEuMC4wLzMyJyksCisgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6LzEyOCcpKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgaXAxLCBpcDIgaW4gYWRkcl90dXBsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwYWRkcmVzcy5jb2xsYXBzZV9hZGRyZXNzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXAxLCBpcDJdKQorCisgICAgZGVmIHRlc3RTdW1tYXJpemluZyhzZWxmKToKKyAgICAgICAgI2lwID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MKKyAgICAgICAgI2lwbmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsKKyAgICAgICAgc3VtbWFyaXplID0gaXBhZGRyZXNzLnN1bW1hcml6ZV9hZGRyZXNzX3JhbmdlCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjI1NScpCisKKyAgICAgICAgIyBzdW1tYXJpemUgd29ya3Mgb25seSBmb3IgSVB2NCAmIElQdjYKKyAgICAgICAgY2xhc3MgSVB2N0FkZHJlc3MoaXBhZGRyZXNzLklQdjZBZGRyZXNzKToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIHZlcnNpb24oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDcKKyAgICAgICAgaXBfaW52YWxpZDEgPSBJUHY3QWRkcmVzcygnOjoxJykKKyAgICAgICAgaXBfaW52YWxpZDIgPSBJUHY3QWRkcmVzcygnOjoxJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwX2ludmFsaWQxLCBpcF9pbnZhbGlkMikpCisgICAgICAgICMgdGVzdCB0aGF0IGEgc3VtbWFyeSBvdmVyIGlwNCAmIGlwNiBmYWlscworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcDEsIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjoxJykpKQorICAgICAgICAjIHRlc3QgYSAvMjQgaXMgc3VtbWFyaXplZCBwcm9wZXJseQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjAvMjQnKSkKKyAgICAgICAgIyB0ZXN0IGFuICBJUHY0IHJhbmdlIHRoYXQgaXNuJ3Qgb24gYSBuZXR3b3JrIGJ5dGUgYm91bmRhcnkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4xLjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc3VtbWFyaXplKGlwMSwgaXAyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wLzI5JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS44JyldKQorICAgICAgICAjIGFsbCEKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjRBZGRyZXNzKDApCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcyhpcGFkZHJlc3MuSVB2NEFkZHJlc3MuX0FMTF9PTkVTKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpcGFkZHJlc3MuSVB2NE5ldHdvcmsoJzAuMC4wLjAvMCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHN1bW1hcml6ZShpcDEsIGlwMikpKQorCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOjonKQorICAgICAgICBpcDIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTpmZmZmOmZmZmY6ZmZmZjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykKKyAgICAgICAgIyB0ZXN0IGEgSVB2NiBpcyBzdW1hbXJpemVkIHByb3Blcmx5CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTo6LzE2JykpCisgICAgICAgICMgdGVzdCBhbiBJUHY2IHJhbmdlIHRoYXQgaXNuJ3Qgb24gYSBuZXR3b3JrIGJ5dGUgYm91bmRhcnkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI6OicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzdW1tYXJpemUoaXAxLCBpcDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE6Oi8xNicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjo6LzEyOCcpXSkKKworICAgICAgICAjIHRlc3QgZXhjZXB0aW9uIHJhaXNlZCB3aGVuIGZpcnN0IGlzIGdyZWF0ZXIgdGhhbiBsYXN0CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEuMS4wLjAnKSkpCisgICAgICAgICMgdGVzdCBleGNlcHRpb24gcmFpc2VkIHdoZW4gZmlyc3QgYW5kIGxhc3QgYXJlbid0IElQIGFkZHJlc3NlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjEuMCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4wLjAnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWFyaXplKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4wJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnMS4xLjAuMCcpKSkKKyAgICAgICAgIyB0ZXN0IGV4Y2VwdGlvbiByYWlzZWQgd2hlbiBmaXJzdCBhbmQgbGFzdCBhcmUgbm90IHNhbWUgdmVyc2lvbgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1bW1hcml6ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMC4wJykpKQorCisgICAgZGVmIHRlc3RBZGRyZXNzQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjEuMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4xLjEuMicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjInKSkKKworICAgIGRlZiB0ZXN0SW50ZXJmYWNlQ29tcGFyaXNvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMS4xLjEuMScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoxJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnOjoyJykpCisKKyAgICBkZWYgdGVzdE5ldHdvcmtDb21wYXJpc29uKHNlbGYpOgorICAgICAgICAjIGlwMSBhbmQgaXAyIGhhdmUgdGhlIHNhbWUgbmV0d29yayBhZGRyZXNzCisgICAgICAgIGlwMSA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8yNCcpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjEuMC8zMicpCisgICAgICAgIGlwMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4xLjIuMC8yNCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMyA+IGlwMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwMS5jb21wYXJlX25ldHdvcmtzKGlwMSksIDApCisKKyAgICAgICAgIyBpZiBhZGRyZXNzZXMgYXJlIHRoZSBzYW1lLCBzb3J0IGJ5IG5ldG1hc2sKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDEuY29tcGFyZV9uZXR3b3JrcyhpcDIpLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcDIuY29tcGFyZV9uZXR3b3JrcyhpcDEpLCAxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAzKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAzLmNvbXBhcmVfbmV0d29ya3MoaXAxKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMS5fZ2V0X25ldHdvcmtzX2tleSgpIDwgaXAzLl9nZXRfbmV0d29ya3Nfa2V5KCkpCisKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLklQdjZOZXR3b3JrKCcyMDAxOjIwMDA6Oi85NicpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMToyMDAxOjovOTYnKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuSVB2Nk5ldHdvcmsoJzIwMDE6ZmZmZjoyMDAwOjovOTYnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEgPCBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXAxLmNvbXBhcmVfbmV0d29ya3MoaXAzKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDEuX2dldF9uZXR3b3Jrc19rZXkoKSA8IGlwMy5fZ2V0X25ldHdvcmtzX2tleSgpKQorCisgICAgICAgICMgVGVzdCBjb21wYXJpbmcgZGlmZmVyZW50IHByb3RvY29scy4KKyAgICAgICAgIyBTaG91bGQgYWx3YXlzIHJhaXNlIGEgVHlwZUVycm9yLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2NF9uZXR3b3JrLmNvbXBhcmVfbmV0d29ya3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9uZXR3b3JrKQorICAgICAgICBpcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6LzAnKQorICAgICAgICBpcHY0ID0gaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzAuMC4wLjAvMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2NC5fX2x0X18sIGlwdjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2NC5fX2d0X18sIGlwdjYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2Ni5fX2x0X18sIGlwdjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXB2Ni5fX2d0X18sIGlwdjQpCisKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDE5LgorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4yLjEyOC8yNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxIDwgaXAxKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMSA+IGlwMSkKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMy4wLzI0JykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMSA8IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDIgPCBpcDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXAxID4gaXAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyID4gaXAxKQorICAgICAgICBpcDMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMS4zLjAvMjUnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXAyIDwgaXAzKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlwMyA8IGlwMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcDIgPiBpcDMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpcDMgPiBpcDIpCisKKyAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDI4LgorICAgICAgICBpcDEgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMC8zMScpCisgICAgICAgIGlwMiA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xMC4xMC4wJykKKyAgICAgICAgaXAzID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEwLjEwLjIvMzEnKQorICAgICAgICBpcDQgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMTAuMTAuMicpCisgICAgICAgIHNvcnRlZCA9IFtpcDEsIGlwMiwgaXAzLCBpcDRdCisgICAgICAgIHVuc29ydGVkID0gW2lwMiwgaXA0LCBpcDEsIGlwM10KKyAgICAgICAgdW5zb3J0ZWQuc29ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkLCB1bnNvcnRlZCkKKyAgICAgICAgdW5zb3J0ZWQgPSBbaXA0LCBpcDEsIGlwMywgaXAyXQorICAgICAgICB1bnNvcnRlZC5zb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQsIHVuc29ydGVkKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlwMS5fX2x0X18sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xMC4xMC4wJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXAyLl9fbHRfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEwLjEwLjAnKSkKKworICAgICAgICAjIDw9LCA+PQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4xJykgPD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxLjEuMS4yJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjInKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMS4xLjEnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEnKSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MicpIDw9CisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzo6MScpKQorCisgICAgZGVmIHRlc3RTdHJpY3ROZXR3b3JrcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXBhZGRyZXNzLmlwX25ldHdvcmssICcxOTIuMTY4LjEuMS8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlwYWRkcmVzcy5pcF9uZXR3b3JrLCAnOjoxLzEyMCcpCisKKyAgICBkZWYgdGVzdE92ZXJsYXBzKHNlbGYpOgorICAgICAgICBvdGhlciA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjMuMC8zMCcpCisgICAgICAgIG90aGVyMiA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjIuMC8yNCcpCisgICAgICAgIG90aGVyMyA9IGlwYWRkcmVzcy5JUHY0TmV0d29yaygnMS4yLjIuNjQvMjYnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5pcHY0X25ldHdvcmsub3ZlcmxhcHMob3RoZXIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuaXB2NF9uZXR3b3JrLm92ZXJsYXBzKG90aGVyMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdGhlcjIub3ZlcmxhcHMob3RoZXIzKSkKKworICAgIGRlZiB0ZXN0RW1iZWRkZWRJcHY0KHNlbGYpOgorICAgICAgICBpcHY0X3N0cmluZyA9ICcxOTIuMTY4LjAuMScKKyAgICAgICAgaXB2NCA9IGlwYWRkcmVzcy5JUHY0SW50ZXJmYWNlKGlwdjRfc3RyaW5nKQorICAgICAgICB2NGNvbXBhdF9pcHY2ID0gaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6JXMnICUgaXB2NF9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KHY0Y29tcGF0X2lwdjYuaXApLCBpbnQoaXB2NC5pcCkpCisgICAgICAgIHY0bWFwcGVkX2lwdjYgPSBpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjpmZmZmOiVzJyAlIGlwdjRfc3RyaW5nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHY0bWFwcGVkX2lwdjYuaXAsIGlwdjQuaXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGlwYWRkcmVzcy5BZGRyZXNzVmFsdWVFcnJvciwgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjEuMS4xLjE6MS4xLjEuMScpCisKKyAgICAjIElzc3VlIDY3OiBJUHY2IHdpdGggZW1iZWRkZWQgSVB2NCBhZGRyZXNzIG5vdCByZWNvZ25pemVkLgorICAgIGRlZiB0ZXN0SVB2NkFkZHJlc3NUb29MYXJnZShzZWxmKToKKyAgICAgICAgIyBSRkM0MjkxIDIuNS41LjIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpGRkZGOjE5Mi4wLjIuMScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpGRkZGOmMwMDA6MjAxJykpCisgICAgICAgICMgUkZDNDI5MSAyLjIgKHBhcnQgMykgeDo6ZC5kLmQuZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdGRkZGOjoxOTIuMC4yLjEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ0ZGRkY6OmMwMDA6MjAxJykpCisKKyAgICBkZWYgdGVzdElQVmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfYWRkcmVzcy52ZXJzaW9uLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9hZGRyZXNzLnZlcnNpb24sIDYpCisKKyAgICBkZWYgdGVzdE1heFByZWZpeExlbmd0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLm1heF9wcmVmaXhsZW4sIDMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2UubWF4X3ByZWZpeGxlbiwgMTI4KQorCisgICAgZGVmIHRlc3RQYWNrZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2FkZHJlc3MucGFja2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMVx4MDJceDAzXHgwNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRJbnRlcmZhY2UoJzI1NS4yNTQuMjUzLjI1MicpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZlXHhmZFx4ZmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9hZGRyZXNzLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4MjBceDAxXHgwNlx4NThceDAyXHgyYVx4Y2FceGZlJworICAgICAgICAgICAgICAgICAgICAgICAgIGInXHgwMlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCdmZmZmOjI6Mzo0OmZmZmY6OicpLnBhY2tlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZmZceGZmXHgwMFx4MDJceDAwXHgwM1x4MDBceDA0XHhmZlx4ZmYnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBiJ1x4MDAnICogNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgnOjoxOjA6MDowOjAnKS5wYWNrZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYidceDAwJyAqIDYgKyBiJ1x4MDBceDAxJyArIGInXHgwMCcgKiA4KQorCisgICAgZGVmIHRlc3RJcFN0ckZyb21QcmVmaXhsZW4oc2VsZik6CisgICAgICAgIGlwdjQgPSBpcGFkZHJlc3MuSVB2NEludGVyZmFjZSgnMS4yLjMuNC8yNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXB2NC5faXBfc3RyaW5nX2Zyb21fcHJlZml4KCksICcyNTUuMjU1LjI1NS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcHY0Ll9pcF9zdHJpbmdfZnJvbV9wcmVmaXgoMjgpLCAnMjU1LjI1NS4yNTUuMjQwJykKKworICAgIGRlZiB0ZXN0SXBUeXBlKHNlbGYpOgorICAgICAgICBpcHY0bmV0ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEuMi4zLjQnKQorICAgICAgICBpcHY0YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykKKyAgICAgICAgaXB2Nm5ldCA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OjEuMi4zLjQnKQorICAgICAgICBpcHY2YWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCc6OjEuMi4zLjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY0TmV0d29yaywgdHlwZShpcHY0bmV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NEFkZHJlc3MsIHR5cGUoaXB2NGFkZHIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaywgdHlwZShpcHY2bmV0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuSVB2NkFkZHJlc3MsIHR5cGUoaXB2NmFkZHIpKQorCisgICAgZGVmIHRlc3RSZXNlcnZlZElwdjQoc2VsZik6CisgICAgICAgICMgdGVzdCBuZXR3b3JrcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgJzIyNC4xLjEuMS8zMScpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzI0MC4wLjAuMCcpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMjQwLjAuMC4wJykuaXNfcmVzZXJ2ZWQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICcxOTIuMTY4LjEuMS8xNycpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxOTIuMTY5LjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzEwLjI1NS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzExLjAuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzExLjAuMC4wJykuaXNfcmVzZXJ2ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzE3Mi4zMS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE3Mi4zMi4wLjAnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzE2OS4yNTQuMS4wLzI0JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTY5LjI1NC4xMDAuMjAwLzI0JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcxNjkuMjU1LjEwMC4yMDAvMjQnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMTI3LjEwMC4yMDAuMjU0LzMyJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJzEyNy40Mi4wLjAvMTYnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEyOC4wLjAuMCcpLmlzX2xvb3BiYWNrKQorCisgICAgICAgICMgdGVzdCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMC4wLjAuMCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMjQuMS4xLjEnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyNDAuMC4wLjAnKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzI0MC4wLjAuMScpLmlzX3Jlc2VydmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMzkuMjU1LjI1NS4yNTUnKS5pc19yZXNlcnZlZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY4LjEuMScpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxOTIuMTY5LjAuMCcpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJzEwLjI1NS4yNTUuMjU1JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzExLjAuMC4wJykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnMTcyLjMxLjI1NS4yNTUnKS5pc19wcml2YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTcyLjMyLjAuMCcpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNjkuMjU0LjEwMC4yMDAnKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxNjkuMjU1LjEwMC4yMDAnKS5pc19saW5rX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEyNy4xMDAuMjAwLjI1NCcpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjcuNDIuMC4wJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMjguMC4wLjAnKS5pc19sb29wYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMC4wLjAuMCcpLmlzX3Vuc3BlY2lmaWVkKQorCisgICAgZGVmIHRlc3RSZXNlcnZlZElwdjYoc2VsZik6CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmZmZjo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKDIqKjEyOCAtIDEpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmYwMDo6JykuaXNfbXVsdGljYXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmRmZjo6JykuaXNfbXVsdGljYXN0KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlY2Y6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoCisgICAgICAgICAgICAgICAgJ2ZlZmY6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKAorICAgICAgICAgICAgICAgICdmYmY6ZmZmZjo6JykuaXNfc2l0ZV9sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZmMDA6OicpLmlzX3NpdGVfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmMwMDo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmMwMDpmZmZmOmZmZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZiZmY6ZmZmZjo6JykuaXNfcHJpdmF0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX25ldHdvcmsoJ2ZlMDA6OicpLmlzX3ByaXZhdGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVhMDo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmViZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygKKyAgICAgICAgICAgICAgICAnZmU3ZjpmZmZmOjonKS5pc19saW5rX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnZmVjMDo6JykuaXNfbGlua19sb2NhbCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9pbnRlcmZhY2UoJzA6MDo6MDowMScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCc6OjEvMTI3JykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6OicpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoyJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnMDo6MCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnOjoxJykuaXNfdW5zcGVjaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9uZXR3b3JrKCc6Oi8xMjcnKS5pc191bnNwZWNpZmllZCkKKworICAgICAgICAjIHRlc3QgYWRkcmVzc2VzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmZmY6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygyKioxMjggLSAxKS5pc19tdWx0aWNhc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZmMDA6OicpLmlzX211bHRpY2FzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZkZmY6OicpLmlzX211bHRpY2FzdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZWNmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKAorICAgICAgICAgICAgICAgICdmZWZmOmZmZmY6ZmZmZjpmZmZmOjonKS5pc19zaXRlX2xvY2FsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygKKyAgICAgICAgICAgICAgICAnZmJmOmZmZmY6OicpLmlzX3NpdGVfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZjAwOjonKS5pc19zaXRlX2xvY2FsKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZjMDA6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZjMDA6ZmZmZjpmZmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmYmZmOmZmZmY6OicpLmlzX3ByaXZhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIGlwYWRkcmVzcy5pcF9hZGRyZXNzKCdmZTAwOjonKS5pc19wcml2YXRlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlYTA6OicpLmlzX2xpbmtfbG9jYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlYmY6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgJ2ZlN2Y6ZmZmZjo6JykuaXNfbGlua19sb2NhbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJ2ZlYzA6OicpLmlzX2xpbmtfbG9jYWwpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMDowOjowOjAxJykuaXNfbG9vcGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6MScpLmlzX2xvb3BiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoyJykuaXNfbG9vcGJhY2spCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMDo6MCcpLmlzX3Vuc3BlY2lmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjoxJykuaXNfdW5zcGVjaWZpZWQpCisKKyAgICAgICAgIyBzb21lIGdlbmVyaWMgSUVURiByZXNlcnZlZCBhZGRyZXNzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMTAwOjonKS5pc19yZXNlcnZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBpcGFkZHJlc3MuaXBfbmV0d29yaygnNDAwMDo6MS8xMjgnKS5pc19yZXNlcnZlZCkKKworICAgIGRlZiB0ZXN0SXB2NE1hcHBlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpmZmZmOjE5Mi4xNjguMS4xJykuaXB2NF9tYXBwZWQsCisgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzo6YzBhODoxMDEnKS5pcHY0X21hcHBlZCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfYWRkcmVzcygnOjpmZmZmOmMwYTg6MTAxJykuaXB2NF9tYXBwZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE5Mi4xNjguMS4xJykpCisKKyAgICBkZWYgdGVzdEFkZHJFeGNsdWRlKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4wLzI2JykKKyAgICAgICAgYWRkcjMgPSBpcGFkZHJlc3MuaXBfbmV0d29yaygnMTAuMi4xLjAvMjQnKQorICAgICAgICBhZGRyNCA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpCisgICAgICAgIGFkZHI1ID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoJzIwMDE6ZGI4OjowLzMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobGlzdChhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjIpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2lwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuNjQvMjYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLmlwX25ldHdvcmsoJzEwLjEuMS4xMjgvMjUnKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxpc3QsIGFkZHIxLmFkZHJlc3NfZXhjbHVkZShhZGRyMykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHI0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhZGRyMS5hZGRyZXNzX2V4Y2x1ZGUoYWRkcjUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWRkcjEuYWRkcmVzc19leGNsdWRlKGFkZHIxKSksIFtdKQorCisgICAgZGVmIHRlc3RIYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2goaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMTAuMS4xLjAvMjQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzaChpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKCcxMC4xLjEuMC8yNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxMC4xLjEuMCcpKSkKKyAgICAgICAgIyBpNzAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcxLjIuMy40JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2goaXBhZGRyZXNzLmlwX2FkZHJlc3MoCisgICAgICAgICAgICAgICAgICAgIGludChpcGFkZHJlc3MuaXBfYWRkcmVzcygnMS4yLjMuNCcpLl9pcCkpKSkKKyAgICAgICAgaXAxID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzEwLjEuMS4wJykKKyAgICAgICAgaXAyID0gaXBhZGRyZXNzLmlwX2FkZHJlc3MoJzE6OicpCisgICAgICAgIGR1bW15ID0ge30KKyAgICAgICAgZHVtbXlbc2VsZi5pcHY0X2FkZHJlc3NdID0gTm9uZQorICAgICAgICBkdW1teVtzZWxmLmlwdjZfYWRkcmVzc10gPSBOb25lCisgICAgICAgIGR1bW15W2lwMV0gPSBOb25lCisgICAgICAgIGR1bW15W2lwMl0gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmlwdjRfYWRkcmVzcyBpbiBkdW1teSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlwMiBpbiBkdW1teSkKKworICAgIGRlZiB0ZXN0SVBCYXNlcyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY0X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMS4yLjMuMC8yNCcsIG5ldC5jb21wcmVzc2VkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIG5ldC5faXBfaW50X2Zyb21fcHJlZml4KDI0KSwKKyAgICAgICAgICAgICAgICBuZXQuX2lwX2ludF9mcm9tX3ByZWZpeChOb25lKSkKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY2X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV0Ll9zdHJpbmdfZnJvbV9pcF9pbnQsIDIqKjEyOCArIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc2VsZi5pcHY2X2FkZHJlc3MuX3N0cmluZ19mcm9tX2lwX2ludChzZWxmLmlwdjZfYWRkcmVzcy5faXApLAorICAgICAgICAgICAgICAgIHNlbGYuaXB2Nl9hZGRyZXNzLl9zdHJpbmdfZnJvbV9pcF9pbnQoTm9uZSkpCisKKyAgICBkZWYgdGVzdElQdjZOZXR3b3JrSGVscGVycyhzZWxmKToKKyAgICAgICAgbmV0ID0gc2VsZi5pcHY2X25ldHdvcmsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcsIG5ldC53aXRoX3ByZWZpeGxlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi9mZmZmOmZmZmY6ZmZmZjpmZmZmOjonLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldC53aXRoX25ldG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzIwMDE6NjU4OjIyYTpjYWZlOjovOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXQud2l0aF9ob3N0bWFzaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwMTo2NTg6MjJhOmNhZmU6Oi82NCcsIHN0cihuZXQpKQorCisgICAgZGVmIHRlc3RJUHY0TmV0d29ya0hlbHBlcnMoc2VsZik6CisgICAgICAgIG5ldCA9IHNlbGYuaXB2NF9uZXR3b3JrCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBuZXQud2l0aF9wcmVmaXhsZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjU1LjI1NS4yNTUuMCcsIG5ldC53aXRoX25ldG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMC4wLjAuMjU1JywgbmV0LndpdGhfaG9zdG1hc2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEuMi4zLjAvMjQnLCBzdHIobmV0KSkKKworICAgIGRlZiB0ZXN0Q29weUNvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5pcF9uZXR3b3JrKCcxMC4xLjEuMC8yNCcpCisgICAgICAgIGFkZHIyID0gaXBhZGRyZXNzLmlwX25ldHdvcmsoYWRkcjEpCisgICAgICAgIGFkZHIzID0gaXBhZGRyZXNzLmlwX2ludGVyZmFjZSgnMjAwMTo2NTg6MjJhOmNhZmU6MjAwOjoxLzY0JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuaXBfaW50ZXJmYWNlKGFkZHIzKQorICAgICAgICBhZGRyNSA9IGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4xLjEuMScpCisgICAgICAgIGFkZHI2ID0gaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRkcjEsIGFkZHIyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIzLCBhZGRyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyNSwgaXBhZGRyZXNzLklQdjRBZGRyZXNzKGFkZHI1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhZGRyNiwgaXBhZGRyZXNzLklQdjZBZGRyZXNzKGFkZHI2KSkKKworICAgIGRlZiB0ZXN0Q29tcHJlc3NJUHY2QWRkcmVzcyhzZWxmKToKKyAgICAgICAgdGVzdF9hZGRyZXNzZXMgPSB7CisgICAgICAgICAgICAnMToyOjM6NDo1OjY6Nzo4JzogJzE6MjozOjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDowOjQ6MDowOjA6OCc6ICcyMDAxOjA6MDo0Ojo4LzEyOCcsCisgICAgICAgICAgICAnMjAwMTowOjA6NDo1OjY6Nzo4JzogJzIwMDE6OjQ6NTo2Ojc6OC8xMjgnLAorICAgICAgICAgICAgJzIwMDE6MDozOjQ6NTo2Ojc6OCc6ICcyMDAxOjA6Mzo0OjU6Njo3OjgvMTI4JywKKyAgICAgICAgICAgICcyMDAxOjA6Mzo0OjU6Njo3OjgnOiAnMjAwMTowOjM6NDo1OjY6Nzo4LzEyOCcsCisgICAgICAgICAgICAnMDowOjM6MDowOjA6MDpmZmZmJzogJzA6MDozOjpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMDowOjA6NDowOjA6MDpmZmZmJzogJzo6NDowOjA6MDpmZmZmLzEyOCcsCisgICAgICAgICAgICAnMDowOjA6MDo1OjA6MDpmZmZmJzogJzo6NTowOjA6ZmZmZi8xMjgnLAorICAgICAgICAgICAgJzE6MDowOjQ6MDowOjc6OCc6ICcxOjo0OjA6MDo3OjgvMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjAnOiAnOjovMTI4JywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjAvMCc6ICc6Oi8wJywKKyAgICAgICAgICAgICcwOjA6MDowOjA6MDowOjEnOiAnOjoxLzEyOCcsCisgICAgICAgICAgICAnMjAwMTowNjU4OjAyMmE6Y2FmZTowMDAwOjAwMDA6MDAwMDowMDAwLzY2JzoKKyAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZTo6LzY2JywKKyAgICAgICAgICAgICc6OjEuMi4zLjQnOiAnOjoxMDI6MzA0LzEyOCcsCisgICAgICAgICAgICAnMToyOjM6NDo1OmZmZmY6MS4yLjMuNCc6ICcxOjI6Mzo0OjU6ZmZmZjoxMDI6MzA0LzEyOCcsCisgICAgICAgICAgICAnOjo3OjY6NTo0OjM6MjoxJzogJzA6Nzo2OjU6NDozOjI6MS8xMjgnLAorICAgICAgICAgICAgJzo6Nzo2OjU6NDozOjI6MCc6ICcwOjc6Njo1OjQ6MzoyOjAvMTI4JywKKyAgICAgICAgICAgICc3OjY6NTo0OjM6MjoxOjonOiAnNzo2OjU6NDozOjI6MTowLzEyOCcsCisgICAgICAgICAgICAnMDo2OjU6NDozOjI6MTo6JzogJzA6Njo1OjQ6MzoyOjE6MC8xMjgnLAorICAgICAgICAgICAgfQorICAgICAgICBmb3IgdW5jb21wcmVzc2VkLCBjb21wcmVzc2VkIGluIGxpc3QodGVzdF9hZGRyZXNzZXMuaXRlbXMoKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWQsIHN0cihpcGFkZHJlc3MuSVB2NkludGVyZmFjZSgKKyAgICAgICAgICAgICAgICB1bmNvbXByZXNzZWQpKSkKKworICAgIGRlZiB0ZXN0RXhwbG9kZVNob3J0SGFuZElwU3RyKHNlbGYpOgorICAgICAgICBhZGRyMSA9IGlwYWRkcmVzcy5JUHY2SW50ZXJmYWNlKCcyMDAxOjoxJykKKyAgICAgICAgYWRkcjIgPSBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6MDo1ZWY1Ojc5ZmQ6MDo1OWQ6YTBlNTpiYTEnKQorICAgICAgICBhZGRyMyA9IGlwYWRkcmVzcy5JUHY2TmV0d29yaygnMjAwMTo6Lzk2JykKKyAgICAgICAgYWRkcjQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4xNjguMTc4LjEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDEvMTI4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMS5leHBsb2RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAxLzEyOCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZJbnRlcmZhY2UoJzo6MS8xMjgnKS5leHBsb2RlZCkKKyAgICAgICAgIyBpc3N1ZSA3NworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6NWVmNTo3OWZkOjAwMDA6MDU5ZDphMGU1OjBiYTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIyLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAxOjAwMDA6MDAwMDowMDAwOjAwMDA6MDAwMDowMDAwOjAwMDAvOTYnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHIzLmV4cGxvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTIuMTY4LjE3OC4xJywgYWRkcjQuZXhwbG9kZWQpCisKKyAgICBkZWYgdGVzdEludFJlcHJlc2VudGF0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDE2OTA5MDYwLCBpbnQoc2VsZi5pcHY0X2FkZHJlc3MpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQyNTQwNjE2ODI5MTgyNDY5NDMzNTQ3NzYyNDgyMDk3OTQ2NjI1LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLmlwdjZfYWRkcmVzcykpCisKKyAgICBkZWYgdGVzdEZvcmNlVmVyc2lvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpcGFkZHJlc3MuaXBfbmV0d29yaygxKS52ZXJzaW9uLCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlwYWRkcmVzcy5JUHY2TmV0d29yaygxKS52ZXJzaW9uLCA2KQorCisgICAgZGVmIHRlc3RXaXRoU3RhcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjRfaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuLCAiMS4yLjMuNC8yNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX25ldG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIjEuMi4zLjQvMjU1LjI1NS4yNTUuMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X2ludGVyZmFjZS53aXRoX2hvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICIxLjIuMy40LzAuMC4wLjI1NSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfcHJlZml4bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvNjQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2Nl9pbnRlcmZhY2Uud2l0aF9uZXRtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyMDAxOjY1ODoyMmE6Y2FmZToyMDA6OjEvZmZmZjpmZmZmOmZmZmY6ZmZmZjo6JykKKyAgICAgICAgIyB0aGlzIHByb2JhYmx5IGRvbid0IG1ha2UgbXVjaCBzZW5zZSwgYnV0IGl0J3MgaW5jbHVkZWQgZm9yCisgICAgICAgICMgY29tcGF0aWJpbGl0eSB3aXRoIGlwdjQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfaW50ZXJmYWNlLndpdGhfaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDE6NjU4OjIyYTpjYWZlOjIwMDo6MS86OmZmZmY6ZmZmZjpmZmZmOmZmZmYnKQorCisgICAgZGVmIHRlc3ROZXR3b3JrRWxlbWVudENhY2hpbmcoc2VsZik6CisgICAgICAgICMgVjQgLSBtYWtlIHN1cmUgd2UncmUgZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnbmV0d29ya19hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ2hvc3RtYXNrJyBpbiBzZWxmLmlwdjRfbmV0d29yay5fY2FjaGUpCisKKyAgICAgICAgIyBWNCAtIHBvcHVsYXRlIGFuZCB0ZXN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsubmV0d29ya19hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaXB2NF9uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnMS4yLjMuMjU1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY0X25ldHdvcmsuaG9zdG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcwLjAuMC4yNTUnKSkKKworICAgICAgICAjIFY0IC0gY2hlY2sgd2UncmUgY2FjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2NF9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY0X25ldHdvcmsuX2NhY2hlKQorCisgICAgICAgICMgVjYgLSBtYWtlIHN1cmUgd2UncmUgZW1wdHkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnYnJvYWRjYXN0X2FkZHJlc3MnIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKworICAgICAgICAjIFY2IC0gcG9wdWxhdGUgYW5kIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5uZXR3b3JrX2FkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTo6JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLm5ldHdvcmtfYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOjonKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5pcHY2X25ldHdvcmsuYnJvYWRjYXN0X2FkZHJlc3MsCisgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzIwMDE6NjU4OjIyYTpjYWZlOmZmZmY6ZmZmZjpmZmZmOmZmZmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmlwdjZfbmV0d29yay5ob3N0bWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuSVB2NkFkZHJlc3MoJzo6ZmZmZjpmZmZmOmZmZmY6ZmZmZicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLmJyb2FkY2FzdF9hZGRyZXNzLAorICAgICAgICAgICAgaXBhZGRyZXNzLklQdjZBZGRyZXNzKCcyMDAxOjY1ODoyMmE6Y2FmZTpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLmhvc3RtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnOjpmZmZmOmZmZmY6ZmZmZjpmZmZmJykpCisKKyAgICAgICAgIyBWNiAtIGNoZWNrIHdlJ3JlIGNhY2hlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2Jyb2FkY2FzdF9hZGRyZXNzJyBpbiBzZWxmLmlwdjZfbmV0d29yay5fY2FjaGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnaG9zdG1hc2snIGluIHNlbGYuaXB2Nl9uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAorICAgICAgICAgICAgICAgICdicm9hZGNhc3RfYWRkcmVzcycgaW4gc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLl9jYWNoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdob3N0bWFzaycgaW4gc2VsZi5pcHY2X2ludGVyZmFjZS5uZXR3b3JrLl9jYWNoZSkKKworICAgIGRlZiB0ZXN0VGVyZWRvKHNlbGYpOgorICAgICAgICAjIHN0b2xlbiBmcm9tIHdpa2lwZWRpYQorICAgICAgICBzZXJ2ZXIgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzY1LjU0LjIyNy4xMjAnKQorICAgICAgICBjbGllbnQgPSBpcGFkZHJlc3MuSVB2NEFkZHJlc3MoJzE5Mi4wLjIuNDUnKQorICAgICAgICB0ZXJlZG9fYWRkciA9ICcyMDAxOjAwMDA6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHNlcnZlciwgY2xpZW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpcGFkZHJlc3MuaXBfYWRkcmVzcyh0ZXJlZG9fYWRkcikudGVyZWRvKQorICAgICAgICBiYWRfYWRkciA9ICcyMDAwOjo0MTM2OmUzNzg6ODAwMDo2M2JmOjNmZmY6ZmRkMicKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpcGFkZHJlc3MuaXBfYWRkcmVzcyhiYWRfYWRkcikudGVyZWRvKQorICAgICAgICBiYWRfYWRkciA9ICcyMDAxOjAwMDE6NDEzNjplMzc4OjgwMDA6NjNiZjozZmZmOmZkZDInCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXBhZGRyZXNzLmlwX2FkZHJlc3MoYmFkX2FkZHIpLnRlcmVkbykKKworICAgICAgICAjIGk3NworICAgICAgICB0ZXJlZG9fYWRkciA9IGlwYWRkcmVzcy5JUHY2QWRkcmVzcygnMjAwMTowOjVlZjU6NzlmZDowOjU5ZDphMGU1OmJhMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGlwYWRkcmVzcy5JUHY0QWRkcmVzcygnOTQuMjQ1LjEyMS4yNTMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaXBhZGRyZXNzLklQdjRBZGRyZXNzKCc5NS4yNi4yNDQuOTQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVyZWRvX2FkZHIudGVyZWRvKQorCisgICAgZGVmIHRlc3RzaXh0b2ZvdXIoc2VsZik6CisgICAgICAgIHNpeHRvZm91cmFkZHIgPSBpcGFkZHJlc3MuaXBfYWRkcmVzcygnMjAwMjphYzFkOjJkNjQ6OjEnKQorICAgICAgICBiYWRfYWRkciA9IGlwYWRkcmVzcy5pcF9hZGRyZXNzKCcyMDAwOmFjMWQ6MmQ2NDo6MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXBhZGRyZXNzLklQdjRBZGRyZXNzKCcxNzIuMjkuNDUuMTAwJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l4dG9mb3VyYWRkci5zaXh0b2ZvdXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYmFkX2FkZHIuc2l4dG9mb3VyKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKaW5kZXggZTQyNDMwMy4uYjJmM2U2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQpAQCAtMiw2ICsyLDggQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHVubGluaywgY3B5dGhvbl9vbmx5CitpbXBvcnQgcGlja2xlCitpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiAKICMgVGVzdCByZXN1bHQgb2YgdHJpcGxlIGxvb3AgKHRvbyBiaWcgdG8gaW5saW5lKQogVFJJUExFVFMgPSBbKDAsIDAsIDApLCAoMCwgMCwgMSksICgwLCAwLCAyKSwKQEAgLTI4LDYgKzMwLDggQEAKICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgc2VsZi5pID0gcmVzICsgMQogICAgICAgICByZXR1cm4gcmVzCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZgogCiBjbGFzcyBJdGVyYXRpbmdTZXF1ZW5jZUNsYXNzOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuKToKQEAgLTQ5LDcgKzUzLDkgQEAKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgSGVscGVyIHRvIGNoZWNrIHRoYXQgYW4gaXRlcmF0b3IgcmV0dXJucyBhIGdpdmVuIHNlcXVlbmNlCi0gICAgZGVmIGNoZWNrX2l0ZXJhdG9yKHNlbGYsIGl0LCBzZXEpOgorICAgIGRlZiBjaGVja19pdGVyYXRvcihzZWxmLCBpdCwgc2VxLCBwaWNrbGU9VHJ1ZSk6CisgICAgICAgIGlmIHBpY2tsZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfcGlja2xlKGl0LCBzZXEpCiAgICAgICAgIHJlcyA9IFtdCiAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICB0cnk6CkBAIC02MCwxMiArNjYsMzMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlcSkKIAogICAgICMgSGVscGVyIHRvIGNoZWNrIHRoYXQgYSBmb3IgbG9vcCBnZW5lcmF0ZXMgYSBnaXZlbiBzZXF1ZW5jZQotICAgIGRlZiBjaGVja19mb3JfbG9vcChzZWxmLCBleHByLCBzZXEpOgorICAgIGRlZiBjaGVja19mb3JfbG9vcChzZWxmLCBleHByLCBzZXEsIHBpY2tsZT1UcnVlKToKKyAgICAgICAgaWYgcGlja2xlOgorICAgICAgICAgICAgc2VsZi5jaGVja19waWNrbGUoaXRlcihleHByKSwgc2VxKQogICAgICAgICByZXMgPSBbXQogICAgICAgICBmb3IgdmFsIGluIGV4cHI6CiAgICAgICAgICAgICByZXMuYXBwZW5kKHZhbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIHNlcSkKIAorICAgICMgSGVscGVyIHRvIGNoZWNrIHBpY2tsYWJpbGl0eQorICAgIGRlZiBjaGVja19waWNrbGUoc2VsZiwgaXRvcmcsIHNlcSk6CisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXRvcmcpCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgICMgQ2Fubm90IGFzc2VydCB0eXBlIGVxdWFsaXR5IGJlY2F1c2UgZGljdCBpdGVyYXRvcnMgdW5waWNrbGUgYXMgbGlzdAorICAgICAgICAjIGl0ZXJhdG9ycy4KKyAgICAgICAgIyBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoaXQsIGNvbGxlY3Rpb25zLmFiYy5JdGVyYXRvcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIHNlcSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBzZXFbMTpdKQorCiAgICAgIyBUZXN0IGJhc2ljIHVzZSBvZiBpdGVyKCkgZnVuY3Rpb24KICAgICBkZWYgdGVzdF9pdGVyX2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIocmFuZ2UoMTApKSwgbGlzdChyYW5nZSgxMCkpKQpAQCAtMTM4LDcgKzE2NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaSA+IDEwMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvciAjIEVtZXJnZW5jeSBzdG9wCiAgICAgICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKEMoKSwgMTApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihDKCksIDEwKSwgbGlzdChyYW5nZSgxMCkpLCBwaWNrbGU9RmFsc2UpCiAKICAgICAjIFRlc3QgdHdvLWFyZ3VtZW50IGl0ZXIoKSB3aXRoIGZ1bmN0aW9uCiAgICAgZGVmIHRlc3RfaXRlcl9mdW5jdGlvbihzZWxmKToKQEAgLTE0Niw3ICsxNzMsNyBAQAogICAgICAgICAgICAgaSA9IHN0YXRlWzBdCiAgICAgICAgICAgICBzdGF0ZVswXSA9IGkrMQogICAgICAgICAgICAgcmV0dXJuIGkKLSAgICAgICAgc2VsZi5jaGVja19pdGVyYXRvcihpdGVyKHNwYW0sIDEwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMTApLCBsaXN0KHJhbmdlKDEwKSksIHBpY2tsZT1GYWxzZSkKIAogICAgICMgVGVzdCB0d28tYXJndW1lbnQgaXRlcigpIHdpdGggZnVuY3Rpb24gdGhhdCByYWlzZXMgU3RvcEl0ZXJhdGlvbgogICAgIGRlZiB0ZXN0X2l0ZXJfZnVuY3Rpb25fc3RvcChzZWxmKToKQEAgLTE1Niw3ICsxODMsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICAgICAgICAgICAgIHN0YXRlWzBdID0gaSsxCiAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBzZWxmLmNoZWNrX2l0ZXJhdG9yKGl0ZXIoc3BhbSwgMjApLCBsaXN0KHJhbmdlKDEwKSkpCisgICAgICAgIHNlbGYuY2hlY2tfaXRlcmF0b3IoaXRlcihzcGFtLCAyMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IGV4Y2VwdGlvbiBwcm9wYWdhdGlvbiB0aHJvdWdoIGZ1bmN0aW9uIGl0ZXJhdG9yCiAgICAgZGVmIHRlc3RfZXhjZXB0aW9uX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTk4LDcgKzIyNSw3IEBACiAgICAgICAgICAgICAgICAgaWYgaSA9PSAxMDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgogICAgICAgICAgICAgICAgIHJldHVybiBTZXF1ZW5jZUNsYXNzLl9fZ2V0aXRlbV9fKHNlbGYsIGkpCi0gICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoTXlTZXF1ZW5jZUNsYXNzKDIwKSwgbGlzdChyYW5nZSgxMCkpKQorICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKE15U2VxdWVuY2VDbGFzcygyMCksIGxpc3QocmFuZ2UoMTApKSwgcGlja2xlPUZhbHNlKQogCiAgICAgIyBUZXN0IGEgYmlnIHJhbmdlCiAgICAgZGVmIHRlc3RfaXRlcl9iaWdfcmFuZ2Uoc2VsZik6CkBAIC0yMzcsOCArMjY0LDggQEAKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICBmID0gb3BlbihURVNURk4sICJyIikKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5jaGVja19mb3JfbG9vcChmLCBbIjBcbiIsICIxXG4iLCAiMlxuIiwgIjNcbiIsICI0XG4iXSkKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZm9yX2xvb3AoZiwgW10pCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFsiMFxuIiwgIjFcbiIsICIyXG4iLCAiM1xuIiwgIjRcbiJdLCBwaWNrbGU9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zvcl9sb29wKGYsIFtdLCBwaWNrbGU9RmFsc2UpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggOGNkYzU5Ny4uOTBlODVhOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTM3LDYgKzM3LDEzIEBACiAgICAgJ1Rlc3QgcHJlZGljYXRlJwogICAgIHJldHVybiB4JTI9PTEKIAorZGVmIHR1cGxlaXplKCphcmdzKToKKyAgICByZXR1cm4gYXJncworCitkZWYgaXJhbmdlKG4pOgorICAgIGZvciBpIGluIHJhbmdlKG4pOgorICAgICAgICB5aWVsZCBpCisKIGNsYXNzIFN0b3BOb3c6CiAgICAgJ0NsYXNzIGVtdWxhdGluZyBhbiBlbXB0eSBpdGVyYWJsZS4nCiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgpAQCAtNTUsOCArNjIsNTkgQEAKICAgICAnRmFjdG9yaWFsJwogICAgIHJldHVybiBwcm9kKHJhbmdlKDEsIG4rMSkpCiAKKyMgcm9vdCBsZXZlbCBtZXRob2RzIGZvciBwaWNrbGluZyBhYmlsaXR5CitkZWYgdGVzdFIocik6CisgICAgcmV0dXJuIHJbMF0KKworZGVmIHRlc3RSMihyKToKKyAgICByZXR1cm4gclsyXQorCitkZWYgdW5kZXJ0ZW4oeCk6CisgICAgcmV0dXJuIHg8MTAKKwogY2xhc3MgVGVzdEJhc2ljT3BzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiBwaWNrbGV0ZXN0KHNlbGYsIGl0LCBzdG9wPTQsIHRha2U9MSwgY29tcGFyZT1Ob25lKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGFuIGl0ZXJhdG9yIGlzIHRoZSBzYW1lIGFmdGVyIHBpY2tsaW5nLCBhbHNvIHdoZW4gcGFydC1jb25zdW1lZCIiIgorICAgICAgICBkZWYgZXhwYW5kKGl0LCBpPTApOgorICAgICAgICAgICAgIyBSZWN1cnNpdmVseSBleHBhbmQgaXRlcmFibGVzLCB3aXRoaW4gc2Vuc2libGUgYm91bmRzCisgICAgICAgICAgICBpZiBpID4gMTA6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJpbmZpbml0ZSByZWN1cnNpb24gZW5jb3VudGVyZWQiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdCwgc3RyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsID0gbGlzdChpc2xpY2UoaXQsIHN0b3ApKQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gaXQgIyBjYW4ndCBleHBhbmQgaXQKKyAgICAgICAgICAgIHJldHVybiBbZXhwYW5kKGUsIGkrMSkgZm9yIGUgaW4gbF0KKworICAgICAgICAjIFRlc3QgdGhlIGluaXRpYWwgY29weSBhZ2FpbnN0IHRoZSBvcmlnaW5hbAorICAgICAgICBkdW1wID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpMiA9IHBpY2tsZS5sb2FkcyhkdW1wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXQpLCB0eXBlKGkyKSkKKyAgICAgICAgYSwgYiA9IGV4cGFuZChpdCksIGV4cGFuZChpMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBiKQorICAgICAgICBpZiBjb21wYXJlOgorICAgICAgICAgICAgYyA9IGV4cGFuZChjb21wYXJlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBjKQorCisgICAgICAgICMgVGFrZSBmcm9tIHRoZSBjb3B5LCBhbmQgY3JlYXRlIGFub3RoZXIgY29weSBhbmQgY29tcGFyZSB0aGVtLgorICAgICAgICBpMyA9IHBpY2tsZS5sb2FkcyhkdW1wKQorICAgICAgICB0b29rID0gMAorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSh0YWtlKToKKyAgICAgICAgICAgICAgICBuZXh0KGkzKQorICAgICAgICAgICAgICAgIHRvb2sgKz0gMQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHBhc3MgI2luIGNhc2UgdGhlcmUgaXMgbGVzcyBkYXRhIHRoYW4gJ3Rha2UnCisgICAgICAgIGR1bXAgPSBwaWNrbGUuZHVtcHMoaTMpCisgICAgICAgIGk0ID0gcGlja2xlLmxvYWRzKGR1bXApCisgICAgICAgIGEsIGIgPSBleHBhbmQoaTMpLCBleHBhbmQoaTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKyAgICAgICAgaWYgY29tcGFyZToKKyAgICAgICAgICAgIGMgPSBleHBhbmQoY29tcGFyZVt0b29rOl0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIGMpOworCiAgICAgZGVmIHRlc3RfYWNjdW11bGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocmFuZ2UoMTApKSksICAgICAgICAgICAgICAgIyBvbmUgcG9zaXRpb25hbCBhcmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIDEsIDMsIDYsIDEwLCAxNSwgMjEsIDI4LCAzNiwgNDVdKQpAQCAtNjksMTEgKzEyNywyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZSgnYWJjJykpLCBbJ2EnLCAnYWInLCAnYWJjJ10pICAgIyB3b3JrcyB3aXRoIG5vbi1udW1lcmljCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKFtdKSksIFtdKSAgICAgICAgICAgICAgICAgICMgZW1wdHkgaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUoWzddKSksIFs3XSkgICAgICAgICAgICAgICAgIyBpdGVyYWJsZSBvZiBsZW5ndGggb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYWNjdW11bGF0ZSwgcmFuZ2UoMTApLCA1KSAgICAgICMgdG9vIG1hbnkgYXJncworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGFjY3VtdWxhdGUsIHJhbmdlKDEwKSwgNSwgNikgICAjIHRvbyBtYW55IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlKSAgICAgICAgICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBhY2N1bXVsYXRlLCB4PXJhbmdlKDEwKSkgICAgICAgIyB1bmV4cGVjdGVkIGt3ZCBhcmcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBhY2N1bXVsYXRlKFsxLCBbXV0pKSAgICAgIyBhcmdzIHRoYXQgZG9uJ3QgYWRkCiAKKyAgICAgICAgcyA9IFsyLCA4LCA5LCA1LCA3LCAwLCAzLCA0LCAxLCA2XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShzLCBtaW4pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbMiwgMiwgMiwgMiwgMiwgMCwgMCwgMCwgMCwgMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhY2N1bXVsYXRlKHMsIG1heCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsyLCA4LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGFjY3VtdWxhdGUocywgb3BlcmF0b3IubXVsKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWzIsIDE2LCAxNDQsIDcyMCwgNTA0MCwgMCwgMCwgMCwgMCwgMF0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGxpc3QoYWNjdW11bGF0ZShzLCBjaHIpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB1bmFyeS1vcGVyYXRpb24KKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGFjY3VtdWxhdGUocmFuZ2UoMTApKSkgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKICAgICBkZWYgdGVzdF9jaGFpbihzZWxmKToKIAogICAgICAgICBkZWYgY2hhaW4yKCppdGVyYWJsZXMpOgpAQCAtOTYsMTQgKzE2NSw0MyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoNCwgY2hhaW4uZnJvbV9pdGVyYWJsZShbJ2FiYycsICdkZWYnXSkpLCBsaXN0KCdhYmNkJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdCwgY2hhaW4uZnJvbV9pdGVyYWJsZShbMiwgM10pKQogCisgICAgZGVmIHRlc3RfY2hhaW5fcmVkdWNpYmxlKHNlbGYpOgorICAgICAgICBvcGVyYXRvcnMgPSBbY29weS5kZWVwY29weSwKKyAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzOiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHMpKV0KKyAgICAgICAgZm9yIG9wZXIgaW4gb3BlcmF0b3JzOgorICAgICAgICAgICAgaXQgPSBjaGFpbignYWJjJywgJ2RlZicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3BlcihpdCkpLCBsaXN0KCdhYmNkZWYnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICdhJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcGVyKGl0KSksIGxpc3QoJ2JjZGVmJykpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcGVyKGNoYWluKCcnKSkpLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSg0LCBvcGVyKGNoYWluKCdhYmMnLCAnZGVmJykpKSwgbGlzdCgnYWJjZCcpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsaXN0LCBvcGVyKGNoYWluKDIsIDMpKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNoYWluKCdhYmMnLCAnZGVmJyksIGNvbXBhcmU9bGlzdCgnYWJjZGVmJykpCisKICAgICBkZWYgdGVzdF9jb21iaW5hdGlvbnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tYmluYXRpb25zLCAnYWJjJykgICAgICAgIyBtaXNzaW5nIHIgYXJndW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21iaW5hdGlvbnMsICdhYmMnLCAyLCAxKSAjIHRvbyBtYW55IGFyZ3VtZW50cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbWJpbmF0aW9ucywgTm9uZSkgICAgICAgICMgcG9vbCBpcyBub3QgaXRlcmFibGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29tYmluYXRpb25zLCAnYWJjJywgLTIpICAjIHIgaXMgbmVnYXRpdmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbWJpbmF0aW9ucygnYWJjJywgMzIpKSwgW10pICAgICAjIHIgPiBuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKDAsMSwyKSwgKDAsMSwzKSwgKDAsMiwzKSwgKDEsMiwzKV0pCisKKyAgICAgICAgZm9yIG9wIGluIChsYW1iZGEgYTphLCBsYW1iZGEgYTpwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGEpKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tYmluYXRpb25zKCdhYmMnLCAzMikpKSwgW10pICAgICAjIHIgPiBuCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21iaW5hdGlvbnMoJ0FCQ0QnLCAyKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQScsJ0QnKSwgKCdCJywnQycpLCAoJ0InLCdEJyksICgnQycsJ0QnKV0pCisgICAgICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gY29tYmluYXRpb25zKCdBQkNEJywgMikKKyAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdDJyksICgnQScsJ0QnKSwgKCdCJywnQycpLCAoJ0InLCdEJyksICgnQycsJ0QnKV0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoMCwxLDIpLCAoMCwxLDMpLCAoMCwyLDMpLCAoMSwyLDMpXSkKKyAgICAgICAgICAgIHRlc3RJbnRlcm1lZGlhdGUgPSBjb21iaW5hdGlvbnMocmFuZ2UoNCksIDMpCisgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AodGVzdEludGVybWVkaWF0ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKDAsMSwzKSwgKDAsMiwzKSwgKDEsMiwzKV0pCisKIAogICAgICAgICBkZWYgY29tYmluYXRpb25zMShpdGVyYWJsZSwgcik6CiAgICAgICAgICAgICAnUHVyZSBweXRob24gdmVyc2lvbiBzaG93biBpbiB0aGUgZG9jcycKQEAgLTE1OCw3ICsyNTYsMTEgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjb21iaW5hdGlvbnMyKHZhbHVlcywgcikpKSAjIG1hdGNoZXMgc2Vjb25kIHB1cmUgcHl0aG9uIHZlcnNpb24KICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjb21iaW5hdGlvbnMzKHZhbHVlcywgcikpKSAjIG1hdGNoZXMgc2Vjb25kIHB1cmUgcHl0aG9uIHZlcnNpb24KIAorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjb21iaW5hdGlvbnModmFsdWVzLCByKSkgICAgICAgICAgICAgICAgICMgdGVzdCBwaWNrbGluZworCiAgICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfY29tYmluYXRpb25zX3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBjb21iaW5hdGlvbnMoJ2FiY2RlJywgMykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QoY29tYmluYXRpb25zKCdhYmNkZScsIDMpKSkpKSwgMSkKIApAQCAtMTY4LDggKzI3MCwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN3ciwgJ2FiYycsIDIsIDEpICMgdG9vIG1hbnkgYXJndW1lbnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3dyLCBOb25lKSAgICAgICAgIyBwb29sIGlzIG5vdCBpdGVyYWJsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjd3IsICdhYmMnLCAtMikgICMgciBpcyBuZWdhdGl2ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3dyKCdBQkMnLCAyKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0EnKSwgKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJyldKQorCisgICAgICAgIGZvciBvcCBpbiAobGFtYmRhIGE6YSwgbGFtYmRhIGE6cGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhhKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG9wKGN3cignQUJDJywgMikpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygnQScsJ0EnKSwgKCdBJywnQicpLCAoJ0EnLCdDJyksICgnQicsJ0InKSwgKCdCJywnQycpLCAoJ0MnLCdDJyldKQorICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGN3cignQUJDJywgMikKKyAgICAgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0EnLCdCJyksICgnQScsJ0MnKSwgKCdCJywnQicpLCAoJ0InLCdDJyksICgnQycsJ0MnKV0pCisKIAogICAgICAgICBkZWYgY3dyMShpdGVyYWJsZSwgcik6CiAgICAgICAgICAgICAnUHVyZSBweXRob24gdmVyc2lvbiBzaG93biBpbiB0aGUgZG9jcycKQEAgLTIyOCw3ICszMzcsMTMgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChjd3IxKHZhbHVlcywgcikpKSAgICAgICAgICMgbWF0Y2hlcyBmaXJzdCBwdXJlIHB5dGhvbiB2ZXJzaW9uCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QoY3dyMih2YWx1ZXMsIHIpKSkgICAgICAgICAjIG1hdGNoZXMgc2Vjb25kIHB1cmUgcHl0aG9uIHZlcnNpb24KIAorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChjd3IodmFsdWVzLHIpKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKICAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X2NvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50X3R1cGxlX3JldXNlKHNlbGYpOgorICAgICAgICBjd3IgPSBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQobWFwKGlkLCBjd3IoJ2FiY2RlJywgMykpKSksIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHNldChtYXAoaWQsIGxpc3QoY3dyKCdhYmNkZScsIDMpKSkpKSwgMSkKIApAQCAtMjkyLDcgKzQwNywxMCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgbGlzdChwZXJtdXRhdGlvbnModmFsdWVzLCBOb25lKSkpICMgdGVzdCByIGFzIE5vbmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGxpc3QocGVybXV0YXRpb25zKHZhbHVlcykpKSAgICAgICAjIHRlc3QgZGVmYXVsdCByCiAKLSAgICAgICAgIyBUZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbDogIHR1cGxlIHJlLXVzZQorICAgICAgICAgICAgICAgIHNlbGYucGlja2xldGVzdChwZXJtdXRhdGlvbnModmFsdWVzLCByKSkgICAgICAgICAgICAgICAgIyB0ZXN0IHBpY2tsaW5nCisKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmVzdXNlIGlzIENQeXRob24gc3BlY2lmaWMiKQorICAgIGRlZiB0ZXN0X3Blcm11dGF0aW9uc190dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgcGVybXV0YXRpb25zKCdhYmNkZScsIDMpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KHBlcm11dGF0aW9ucygnYWJjZGUnLCAzKSkpKSksIDEpCiAKQEAgLTM0NSw2ICs0NjMsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wcmVzcywgcmFuZ2UoNikpICAgICAgICAgICAgIyB0b28gZmV3IGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb21wcmVzcywgcmFuZ2UoNiksIE5vbmUpICAgICAgIyB0b28gbWFueSBhcmdzCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGZvciBvcCBpbiAobGFtYmRhIGE6Y29weS5jb3B5KGEpLCBsYW1iZGEgYTpjb3B5LmRlZXBjb3B5KGEpLCBsYW1iZGEgYTpwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGEpKSk6CisgICAgICAgICAgICBmb3IgZGF0YSwgc2VsZWN0b3JzLCByZXN1bHQxLCByZXN1bHQyIGluIFsKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFsxLDAsMSwwLDEsMV0sICdBQ0VGJywgJ0NFRicpLAorICAgICAgICAgICAgICAgICgnQUJDREVGJywgWzAsMCwwLDAsMCwwXSwgJycsICcnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFsxLDEsMSwxLDEsMV0sICdBQkNERUYnLCAnQkNERUYnKSwKKyAgICAgICAgICAgICAgICAoJ0FCQ0RFRicsIFsxLDAsMV0sICdBQycsICdDJyksCisgICAgICAgICAgICAgICAgKCdBQkMnLCBbMCwxLDEsMSwxLDFdLCAnQkMnLCAnQycpLAorICAgICAgICAgICAgICAgIF06CisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qob3AoY29tcHJlc3MoZGF0YT1kYXRhLCBzZWxlY3RvcnM9c2VsZWN0b3JzKSkpLCBsaXN0KHJlc3VsdDEpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcChjb21wcmVzcyhkYXRhLCBzZWxlY3RvcnMpKSksIGxpc3QocmVzdWx0MSkpCisgICAgICAgICAgICAgICAgdGVzdEludGVybWVkaWF0ZSA9IGNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykKKyAgICAgICAgICAgICAgICBpZiByZXN1bHQxOgorICAgICAgICAgICAgICAgICAgICBuZXh0KHRlc3RJbnRlcm1lZGlhdGUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChvcCh0ZXN0SW50ZXJtZWRpYXRlKSksIGxpc3QocmVzdWx0MikpCisKKwogICAgIGRlZiB0ZXN0X2NvdW50KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6aXAoJ2FiYycsY291bnQoKSksIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsemlwKCdhYmMnLGNvdW50KDMpKSwgWygnYScsIDMpLCAoJ2InLCA0KSwgKCdjJywgNSldKQpAQCAtMzc5LDcgKzUxNSw3IEBACiAgICAgICAgICAgICBjID0gY291bnQodmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoY29weS5jb3B5KGMpKSwgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoY29weS5kZWVwY29weShjKSksIHZhbHVlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY291bnQodmFsdWUpKQogCiAgICAgICAgICNjaGVjayBwcm9wZXIgaW50ZXJuYWwgZXJyb3IgaGFuZGxpbmcgZm9yIGxhcmdlICJzdGVwJyBzaXplcwogICAgICAgICBjb3VudCgxLCBtYXhzaXplKzUpOyBzeXMuZXhjX2luZm8oKQpAQCAtNDI2LDYgKzU2Miw3IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcjIgPSAoJ2NvdW50KCVyLCAlciknICUgKGksIGopKS5yZXBsYWNlKCdMJywgJycpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyMSwgcjIpCisgICAgICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGNvdW50KGksIGopKQogCiAgICAgZGVmIHRlc3RfY3ljbGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgY3ljbGUoJ2FiYycpKSwgbGlzdCgnYWJjYWJjYWJjYScpKQpAQCAtNDM0LDYgKzU3MSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlLCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGN5Y2xlKGdlbjMoKSksMTApKSwgWzAsMSwyLDAsMSwyLDAsMSwyLDBdKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBjID0gY3ljbGUoJ2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjKSwgJ2EnKQorICAgICAgICAjc2ltcGxlIGNvcHkgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQsIGJlY2F1c2UgX19yZWR1Y2VfXyByZXR1cm5zCisgICAgICAgICNhbiBpbnRlcm5hbCBpdGVyYXRvcgorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBjb3B5LmNvcHkoYykpLCBsaXN0KCdiY2FiY2FiY2FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgxMCwgY29weS5kZWVwY29weShjKSksIGxpc3QoJ2JjYWJjYWJjYWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDEwLCBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGxpc3QoJ2JjYWJjYWJjYWInKSkKKyAgICAgICAgbmV4dChjKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMTAsIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgbGlzdCgnY2FiY2FiY2FiYycpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoY3ljbGUoJ2FiYycpKQorCiAgICAgZGVmIHRlc3RfZ3JvdXBieShzZWxmKToKICAgICAgICAgIyBDaGVjayB3aGV0aGVyIGl0IGFjY2VwdHMgYXJndW1lbnRzIGNvcnJlY3RseQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBsaXN0KGdyb3VwYnkoW10pKSkKQEAgLTQ1MiwxOCArNjAxLDM3IEBACiAgICAgICAgICAgICAgICAgZHVwLmFwcGVuZChlbGVtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGR1cCkKIAorICAgICAgICAjIENoZWNrIG5vcm1hbCBwaWNrbGVkCisgICAgICAgIGR1cCA9IFtdCisgICAgICAgIGZvciBrLCBnIGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZ3JvdXBieShzLCB0ZXN0UikpKToKKyAgICAgICAgICAgIGZvciBlbGVtIGluIGc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrLCBlbGVtWzBdKQorICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCisKICAgICAgICAgIyBDaGVjayBuZXN0ZWQgY2FzZQogICAgICAgICBkdXAgPSBbXQotICAgICAgICBmb3IgaywgZyBpbiBncm91cGJ5KHMsIGxhbWJkYSByOnJbMF0pOgotICAgICAgICAgICAgZm9yIGlrLCBpZyBpbiBncm91cGJ5KGcsIGxhbWJkYSByOnJbMl0pOgorICAgICAgICBmb3IgaywgZyBpbiBncm91cGJ5KHMsIHRlc3RSKToKKyAgICAgICAgICAgIGZvciBpaywgaWcgaW4gZ3JvdXBieShnLCB0ZXN0UjIpOgogICAgICAgICAgICAgICAgIGZvciBlbGVtIGluIGlnOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIGVsZW1bMF0pCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWssIGVsZW1bMl0pCiAgICAgICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCiAKKyAgICAgICAgIyBDaGVjayBuZXN0ZWQgYW5kIHBpY2tsZWQKKyAgICAgICAgZHVwID0gW10KKyAgICAgICAgZm9yIGssIGcgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhncm91cGJ5KHMsIHRlc3RSKSkpOgorICAgICAgICAgICAgZm9yIGlrLCBpZyBpbiBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGdyb3VwYnkoZywgdGVzdFIyKSkpOgorICAgICAgICAgICAgICAgIGZvciBlbGVtIGluIGlnOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGssIGVsZW1bMF0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWssIGVsZW1bMl0pCisgICAgICAgICAgICAgICAgICAgIGR1cC5hcHBlbmQoZWxlbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBkdXApCisKKwogICAgICAgICAjIENoZWNrIGNhc2Ugd2hlcmUgaW5uZXIgaXRlcmF0b3IgaXMgbm90IHVzZWQKLSAgICAgICAga2V5cyA9IFtrIGZvciBrLCBnIGluIGdyb3VwYnkocywgbGFtYmRhIHI6clswXSldCisgICAgICAgIGtleXMgPSBbayBmb3IgaywgZyBpbiBncm91cGJ5KHMsIHRlc3RSKV0KICAgICAgICAgZXhwZWN0ZWRrZXlzID0gc2V0KFtyWzBdIGZvciByIGluIHNdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChrZXlzKSwgZXhwZWN0ZWRrZXlzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihrZXlzKSwgbGVuKGV4cGVjdGVka2V5cykpCkBAIC01MzQsNiArNzAyLDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmlsdGVyLCBpc0V2ZW4sIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmV4dCwgZmlsdGVyKHJhbmdlKDYpLCByYW5nZSg2KSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFswLDIsNF0KKworICAgICAgICBjID0gZmlsdGVyKGlzRXZlbiwgcmFuZ2UoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYykpLCBhbnMpCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYykpLCBhbnMpCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoYykpKSwgYW5zKQorICAgICAgICBuZXh0KGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGMpKSksIGFuc1sxOl0pCisgICAgICAgIGMgPSBmaWx0ZXIoaXNFdmVuLCByYW5nZSg2KSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGMpCisKICAgICBkZWYgdGVzdF9maWx0ZXJmYWxzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGZpbHRlcmZhbHNlKGlzRXZlbiwgcmFuZ2UoNikpKSwgWzEsMyw1XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGZpbHRlcmZhbHNlKE5vbmUsIFswLDEsMCwyLDBdKSksIFswLDAsMF0pCkBAIC01NDQsNiArNzI2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmaWx0ZXJmYWxzZSwgbGFtYmRhIHg6eCwgcmFuZ2UoNiksIDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZmlsdGVyZmFsc2UsIGlzRXZlbiwgMykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBmaWx0ZXJmYWxzZShyYW5nZSg2KSwgcmFuZ2UoNikpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoZmlsdGVyZmFsc2UoaXNFdmVuLCByYW5nZSg2KSkpCiAKICAgICBkZWYgdGVzdF96aXAoc2VsZik6CiAgICAgICAgICMgWFhYIFRoaXMgaXMgcmF0aGVyIHNpbGx5IG5vdyB0aGF0IGJ1aWx0aW4gemlwKCkgY2FsbHMgemlwKCkuLi4KQEAgLTU1NiwxNiArNzM5LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh6aXAoKSksIGx6aXAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB6aXAsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgemlwLCByYW5nZSgzKSwgMykKLSAgICAgICAgIyBDaGVjayB0dXBsZSByZS11c2UgKGltcGxlbWVudGF0aW9uIGRldGFpbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbdHVwbGUobGlzdChwYWlyKSkgZm9yIHBhaXIgaW4gemlwKCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGx6aXAoJ2FiYycsICdkZWYnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbcGFpciBmb3IgcGFpciBpbiB6aXAoJ2FiYycsICdkZWYnKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgbHppcCgnYWJjJywgJ2RlZicpKQorCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X3ppcF90dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgaWRzID0gbGlzdChtYXAoaWQsIHppcCgnYWJjJywgJ2RlZicpKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtaW4oaWRzKSwgbWF4KGlkcykpCiAgICAgICAgIGlkcyA9IGxpc3QobWFwKGlkLCBsaXN0KHppcCgnYWJjJywgJ2RlZicpKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QuZnJvbWtleXMoaWRzKSksIGxlbihpZHMpKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gY29weS5jb3B5KHppcCgnYWJjJyxjb3VudCgpKSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5zLCBbKCdhJywgMCksICgnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIGNvcHkuZGVlcGNvcHkoemlwKCdhYmMnLGNvdW50KCkpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICBhbnMgPSBbKHgseSkgZm9yIHgsIHkgaW4gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyh6aXAoJ2FiYycsY291bnQoKSkpKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbnMsIFsoJ2EnLCAwKSwgKCdiJywgMSksICgnYycsIDIpXSkKKworICAgICAgICB0ZXN0SW50ZXJtZWRpYXRlID0gemlwKCdhYmMnLGNvdW50KCkpCisgICAgICAgIG5leHQodGVzdEludGVybWVkaWF0ZSkKKyAgICAgICAgYW5zID0gWyh4LHkpIGZvciB4LCB5IGluIHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHModGVzdEludGVybWVkaWF0ZSkpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFucywgWygnYicsIDEpLCAoJ2MnLCAyKV0pCisKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcCgnYWJjJywgY291bnQoKSkpCisKICAgICBkZWYgdGVzdF96aXBsb25nZXN0KHNlbGYpOgogICAgICAgICBmb3IgYXJncyBpbiBbCiAgICAgICAgICAgICAgICAgWydhYmMnLCByYW5nZSg2KV0sCkBAIC02MDMsMTYgKzgwNSwyNCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ0RpZCBub3QgcmFpc2UgVHlwZSBpbjogICcgKyBzdG10KQogCi0gICAgICAgICMgQ2hlY2sgdHVwbGUgcmUtdXNlIChpbXBsZW1lbnRhdGlvbiBkZXRhaWwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3R1cGxlKGxpc3QocGFpcikpIGZvciBwYWlyIGluIHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoemlwKCdhYmMnLCAnZGVmJykpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtwYWlyIGZvciBwYWlyIGluIHppcF9sb25nZXN0KCdhYmMnLCAnZGVmJyldLAogICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoemlwKCdhYmMnLCAnZGVmJykpKQorCisgICAgQHN1cHBvcnQuaW1wbF9kZXRhaWwoInR1cGxlIHJldXNlIGlzIHNwZWNpZmljIHRvIENQeXRob24iKQorICAgIGRlZiB0ZXN0X3ppcF9sb25nZXN0X3R1cGxlX3JldXNlKHNlbGYpOgogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgemlwX2xvbmdlc3QoJ2FiYycsICdkZWYnKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWluKGlkcyksIG1heChpZHMpKQogICAgICAgICBpZHMgPSBsaXN0KG1hcChpZCwgbGlzdCh6aXBfbG9uZ2VzdCgnYWJjJywgJ2RlZicpKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QuZnJvbWtleXMoaWRzKSksIGxlbihpZHMpKQogCisgICAgZGVmIHRlc3RfemlwX2xvbmdlc3RfcGlja2xpbmcoc2VsZik6CisgICAgICAgIHNlbGYucGlja2xldGVzdCh6aXBfbG9uZ2VzdCgiYWJjIiwgImRlZiIpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoImFiYyIsICJkZWZnaCIpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoemlwX2xvbmdlc3QoImFiYyIsICJkZWZnaCIsIGZpbGx2YWx1ZT0xKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHppcF9sb25nZXN0KCIiLCAiZGVmZ2giKSkKKwogICAgIGRlZiB0ZXN0X2J1Z183MjQ0KHNlbGYpOgogCiAgICAgICAgIGNsYXNzIFJlcGVhdGVyOgpAQCAtNzExLDEwICs5MjEsMjUgQEAKICAgICAgICAgICAgIGFyZ3MgPSBtYXAoaXRlciwgYXJncykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpc3QocHJvZHVjdCgqYXJncykpKSwgZXhwZWN0ZWRfbGVuKQogCi0gICAgICAgICMgVGVzdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6ICB0dXBsZSByZS11c2UKKyAgICBAc3VwcG9ydC5pbXBsX2RldGFpbCgidHVwbGUgcmV1c2UgaXMgc3BlY2lmaWMgdG8gQ1B5dGhvbiIpCisgICAgZGVmIHRlc3RfcHJvZHVjdF90dXBsZV9yZXVzZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2V0KG1hcChpZCwgcHJvZHVjdCgnYWJjJywgJ2RlZicpKSkpLCAxKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGxlbihzZXQobWFwKGlkLCBsaXN0KHByb2R1Y3QoJ2FiYycsICdkZWYnKSkpKSksIDEpCiAKKyAgICBkZWYgdGVzdF9wcm9kdWN0X3BpY2tsaW5nKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZm9yIGFyZ3MsIHJlc3VsdCBpbiBbCisgICAgICAgICAgICAoW10sIFsoKV0pLCAgICAgICAgICAgICAgICAgICAgICMgemVybyBpdGVyYWJsZXMKKyAgICAgICAgICAgIChbJ2FiJ10sIFsoJ2EnLCksICgnYicsKV0pLCAgICAgIyBvbmUgaXRlcmFibGUKKyAgICAgICAgICAgIChbcmFuZ2UoMiksIHJhbmdlKDMpXSwgWygwLDApLCAoMCwxKSwgKDAsMiksICgxLDApLCAoMSwxKSwgKDEsMildKSwgICAgICMgdHdvIGl0ZXJhYmxlcworICAgICAgICAgICAgKFtyYW5nZSgwKSwgcmFuZ2UoMiksIHJhbmdlKDMpXSwgW10pLCAgICAgICAgICAgIyBmaXJzdCBpdGVyYWJsZSB3aXRoIHplcm8gbGVuZ3RoCisgICAgICAgICAgICAoW3JhbmdlKDIpLCByYW5nZSgwKSwgcmFuZ2UoMyldLCBbXSksICAgICAgICAgICAjIG1pZGRsZSBpdGVyYWJsZSB3aXRoIHplcm8gbGVuZ3RoCisgICAgICAgICAgICAoW3JhbmdlKDIpLCByYW5nZSgzKSwgcmFuZ2UoMCldLCBbXSksICAgICAgICAgICAjIGxhc3QgaXRlcmFibGUgd2l0aCB6ZXJvIGxlbmd0aAorICAgICAgICAgICAgXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkocHJvZHVjdCgqYXJncykpKSwgcmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkocHJvZHVjdCgqYXJncykpKSwgcmVzdWx0KQorICAgICAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHByb2R1Y3QoKmFyZ3MpKQorCiAgICAgZGVmIHRlc3RfcmVwZWF0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocmVwZWF0KG9iamVjdD0nYScsIHRpbWVzPTMpKSwgWydhJywgJ2EnLCAnYSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6aXAocmFuZ2UoMykscmVwZWF0KCdhJykpLApAQCAtNzMzLDExICs5NTgsMTYgQEAKICAgICAgICAgbGlzdChyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIociksICdyZXBlYXQoKDErMGopLCAwKScpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGMgPSByZXBlYXQob2JqZWN0PSdhJywgdGltZXM9MTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChjKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMiwgY29weS5jb3B5KGMpKSwgbGlzdCgnYScgKiAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIsIGNvcHkuZGVlcGNvcHkoYykpLCBsaXN0KCdhJyAqIDIpKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QocmVwZWF0KG9iamVjdD0nYScsIHRpbWVzPTEwKSkKKwogICAgIGRlZiB0ZXN0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcChvcGVyYXRvci5wb3csIHJhbmdlKDMpLCByYW5nZSgxLDcpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzAqKjEsIDEqKjIsIDIqKjNdKQotICAgICAgICBkZWYgdHVwbGVpemUoKmFyZ3MpOgotICAgICAgICAgICAgcmV0dXJuIGFyZ3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcCh0dXBsZWl6ZSwgJ2FiYycsIHJhbmdlKDUpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWygnYScsMCksKCdiJywxKSwoJ2MnLDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpKSwKQEAgLTc1Miw2ICs5ODIsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgbWFwKGVycmZ1bmMsIFs0XSwgWzVdKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBtYXAob25lYXJnLCBbNF0sIFs1XSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFsoJ2EnLDApLCgnYicsMSksKCdjJywyKV0KKworICAgICAgICBjID0gbWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShjKSksIGFucykKKworICAgICAgICBjID0gbWFwKHR1cGxlaXplLCAnYWJjJywgY291bnQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYykpLCBhbnMpCisKKyAgICAgICAgYyA9IG1hcCh0dXBsZWl6ZSwgJ2FiYycsIGNvdW50KCkpCisgICAgICAgIHNlbGYucGlja2xldGVzdChjKQorCiAgICAgZGVmIHRlc3Rfc3Rhcm1hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHN0YXJtYXAob3BlcmF0b3IucG93LCB6aXAocmFuZ2UoMyksIHJhbmdlKDEsNykpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWzAqKjEsIDEqKjIsIDIqKjNdKQpAQCAtNzY2LDYgKzEwMDgsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbmV4dCwgc3Rhcm1hcChlcnJmdW5jLCBbKDQsNSldKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBzdGFybWFwKG9uZWFyZywgWyg0LDUpXSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIGFucyA9IFswKioxLCAxKioyLCAyKiozXQorCisgICAgICAgIGMgPSBzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShjKSksIGFucykKKworICAgICAgICBjID0gc3Rhcm1hcChvcGVyYXRvci5wb3csIHppcChyYW5nZSgzKSwgcmFuZ2UoMSw3KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGMpKSwgYW5zKQorCisgICAgICAgIGMgPSBzdGFybWFwKG9wZXJhdG9yLnBvdywgemlwKHJhbmdlKDMpLCByYW5nZSgxLDcpKSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGMpCisKICAgICBkZWYgdGVzdF9pc2xpY2Uoc2VsZik6CiAgICAgICAgIGZvciBhcmdzIGluIFsgICAgICAgICAgIyBpc2xpY2UoYXJncykgc2hvdWxkIGFncmVlIHdpdGggcmFuZ2UoYXJncykKICAgICAgICAgICAgICAgICAoMTAsIDIwLCAzKSwKQEAgLTc5OCwxNyArMTA1MiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBsaXN0KHJhbmdlKDMsIDEwKSkpCiAKICAgICAgICAgIyBUZXN0IGludmFsaWQgYXJndW1lbnRzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsIDIsIDMsIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAtNSwgMTAsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAtNSwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAxMCwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmFuZ2UoMTApLCAxLCAxMCwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksICdhJywgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksICdhJywgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYW5nZSgxMCksIDEsICdhJywgMSkKKyAgICAgICAgcmEgPSByYW5nZSgxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHJhKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgcmEsIDEsIDIsIDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIC01LCAxMCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgLTUsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAxLCAxMCwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsIDEwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsICdhJywgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaXNsaWNlLCByYSwgMSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpc2xpY2UsIHJhLCAnYScsIDEsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGlzbGljZSwgcmEsIDEsICdhJywgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGlzdChpc2xpY2UoY291bnQoKSwgMSwgMTAsIG1heHNpemUpKSksIDEpCiAKICAgICAgICAgIyBJc3N1ZSAjMTAzMjM6ICBMZXNzIGlzbGljZSBpbiBhIHByZWRpY3RhYmxlIHN0YXRlCkBAIC04MTYsOSArMTA3MSwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGMsIDEsIDMsIDUwKSksIFsxXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGMpLCAzKQogCisgICAgICAgICMgY2hlY2sgY29weSwgZGVlcGNvcHksIHBpY2tsZQorICAgICAgICBmb3IgYXJncyBpbiBbICAgICAgICAgICMgaXNsaWNlKGFyZ3MpIHNob3VsZCBhZ3JlZSB3aXRoIHJhbmdlKGFyZ3MpCisgICAgICAgICAgICAgICAgKDEwLCAyMCwgMyksCisgICAgICAgICAgICAgICAgKDEwLCAzLCAyMCksCisgICAgICAgICAgICAgICAgKDEwLCAyMCksCisgICAgICAgICAgICAgICAgKDEwLCAzKSwKKyAgICAgICAgICAgICAgICAoMjAsKQorICAgICAgICAgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGlzbGljZShyYW5nZSgxMDApLCAqYXJncykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyYW5nZSgqYXJncykpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoaXNsaWNlKHJhbmdlKDEwMCksICphcmdzKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKCphcmdzKSkpCisgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QoaXNsaWNlKHJhbmdlKDEwMCksICphcmdzKSkKKwogICAgIGRlZiB0ZXN0X3Rha2V3aGlsZShzZWxmKToKICAgICAgICAgZGF0YSA9IFsxLCAzLCA1LCAyMCwgMiwgNCwgNiwgOF0KLSAgICAgICAgdW5kZXJ0ZW4gPSBsYW1iZGEgeDogeDwxMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSksIFsxLCAzLCA1XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRha2V3aGlsZSh1bmRlcnRlbiwgW10pKSwgW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGFrZXdoaWxlKQpAQCAtODMwLDkgKzEwOTgsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHQpLCBbMSwgMSwgMV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIHQpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkodGFrZXdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLCBbMSwgMywgNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsxLCAzLCA1XSkKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KHRha2V3aGlsZSh1bmRlcnRlbiwgZGF0YSkpCisKICAgICBkZWYgdGVzdF9kcm9wd2hpbGUoc2VsZik6CiAgICAgICAgIGRhdGEgPSBbMSwgMywgNSwgMjAsIDIsIDQsIDYsIDhdCi0gICAgICAgIHVuZGVydGVuID0gbGFtYmRhIHg6IHg8MTAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGRyb3B3aGlsZSh1bmRlcnRlbiwgZGF0YSkpLCBbMjAsIDIsIDQsIDYsIDhdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZHJvcHdoaWxlKHVuZGVydGVuLCBbXSkpLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBkcm9wd2hpbGUpCkBAIC04NDEsMTEgKzExMTQsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBuZXh0LCBkcm9wd2hpbGUoMTAsIFsoNCw1KV0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBuZXh0LCBkcm9wd2hpbGUoZXJyZnVuYywgWyg0LDUpXSkpCiAKKyAgICAgICAgIyBjaGVjayBjb3B5LCBkZWVwY29weSwgcGlja2xlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSkpLCBbMjAsIDIsIDQsIDYsIDhdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShkcm9wd2hpbGUodW5kZXJ0ZW4sIGRhdGEpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBbMjAsIDIsIDQsIDYsIDhdKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoZHJvcHdoaWxlKHVuZGVydGVuLCBkYXRhKSkKKwogICAgIGRlZiB0ZXN0X3RlZShzZWxmKToKICAgICAgICAgbiA9IDIwMAotICAgICAgICBkZWYgaXJhbmdlKG4pOgotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6Ci0gICAgICAgICAgICAgICAgeWllbGQgaQogCiAgICAgICAgIGEsIGIgPSB0ZWUoW10pICAgICAgICAjIHRlc3QgZW1wdHkgaXRlcmF0b3IKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbXSkKQEAgLTkzMCw2ICsxMjA2LDY3IEBACiAgICAgICAgIGRlbCBhCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJlZmVyZW5jZUVycm9yLCBnZXRhdHRyLCBwLCAnX19jbGFzc19fJykKIAorICAgICAgICBhbnMgPSBsaXN0KCdhYmMnKQorICAgICAgICBsb25nX2FucyA9IGxpc3QocmFuZ2UoMTAwMDApKQorCisgICAgICAgICMgY2hlY2sgY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgYW5zKQorICAgICAgICBhLCBiID0gdGVlKGxpc3QocmFuZ2UoMTAwMDApKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGxvbmdfYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGIpKSwgbG9uZ19hbnMpCisKKyAgICAgICAgIyBjaGVjayBwYXJ0aWFsbHkgY29uc3VtZWQgY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICB0YWtlKDIsIGEpCisgICAgICAgIHRha2UoMSwgYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuY29weShhKSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBhbnNbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgYW5zWzE6XSkKKyAgICAgICAgYSwgYiA9IHRlZShyYW5nZSgxMDAwMCkpCisgICAgICAgIHRha2UoMTAwLCBhKQorICAgICAgICB0YWtlKDYwLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGEpKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmNvcHkoYikpLCBsb25nX2Fuc1s2MDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGxvbmdfYW5zWzYwOl0pCisKKyAgICAgICAgIyBjaGVjayBkZWVwY29weQorICAgICAgICBhLCBiID0gdGVlKCdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGFucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBhbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgYW5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIGFucykKKyAgICAgICAgYSwgYiA9IHRlZShyYW5nZSgxMDAwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGIpKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbG9uZ19hbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgbG9uZ19hbnMpCisKKyAgICAgICAgIyBjaGVjayBwYXJ0aWFsbHkgY29uc3VtZWQgZGVlcGNvcHkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgdGFrZSgyLCBhKQorICAgICAgICB0YWtlKDEsIGIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjb3B5LmRlZXBjb3B5KGEpKSwgYW5zWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoYikpLCBhbnNbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIGFuc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgYW5zWzE6XSkKKyAgICAgICAgYSwgYiA9IHRlZShyYW5nZSgxMDAwMCkpCisgICAgICAgIHRha2UoMTAwLCBhKQorICAgICAgICB0YWtlKDYwLCBiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShhKSksIGxvbmdfYW5zWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5kZWVwY29weShiKSksIGxvbmdfYW5zWzYwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgbG9uZ19hbnNbMTAwOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgbG9uZ19hbnNbNjA6XSkKKworICAgICAgICAjIGNoZWNrIHBpY2tsZQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoaXRlcih0ZWUoJ2FiYycpKSkKKyAgICAgICAgYSwgYiA9IHRlZSgnYWJjJykKKyAgICAgICAgc2VsZi5waWNrbGV0ZXN0KGEsIGNvbXBhcmU9YW5zKQorICAgICAgICBzZWxmLnBpY2tsZXRlc3QoYiwgY29tcGFyZT1hbnMpCisKICAgICBkZWYgdGVzdF9TdG9wSXRlcmF0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCB6aXAoKSkKIApAQCAtOTU1LDkgKzEyOTIsMjEgQEAKIAogY2xhc3MgVGVzdEV4YW1wbGVzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZXN0X2FjY3VtbGF0ZShzZWxmKToKKyAgICBkZWYgdGVzdF9hY2N1bXVsYXRlKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYWNjdW11bGF0ZShbMSwyLDMsNCw1XSkpLCBbMSwgMywgNiwgMTAsIDE1XSkKIAorICAgIGRlZiB0ZXN0X2FjY3VtdWxhdGVfcmVkdWNpYmxlKHNlbGYpOgorICAgICAgICAjIGNoZWNrIGNvcHksIGRlZXBjb3B5LCBwaWNrbGUKKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzLCA0LCA1XQorICAgICAgICBhY2N1bXVsYXRlZCA9IFsxLCAzLCA2LCAxMCwgMTVdCisgICAgICAgIGl0ID0gYWNjdW11bGF0ZShkYXRhKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGl0KSkpLCBhY2N1bXVsYXRlZFs6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoaXQpKSksIGFjY3VtdWxhdGVkWzE6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvcHkuZGVlcGNvcHkoaXQpKSwgYWNjdW11bGF0ZWRbMTpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29weS5jb3B5KGl0KSksIGFjY3VtdWxhdGVkWzE6XSkKKwogICAgIGRlZiB0ZXN0X2NoYWluKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oY2hhaW4oJ0FCQycsICdERUYnKSksICdBQkNERUYnKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5IGIvTGliL3Rlc3QvdGVzdF9rZXl3b3Jkb25seWFyZy5weQppbmRleCAxMDhlZDE4Li4wNTAzYTdmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2tleXdvcmRvbmx5YXJnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa2V5d29yZG9ubHlhcmcucHkKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGV4YzoKICAgICAgICAgICAgIGYoMSwgMiwgMykKLSAgICAgICAgZXhwZWN0ZWQgPSAiZigpIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoMyBnaXZlbikiCisgICAgICAgIGV4cGVjdGVkID0gImYoKSB0YWtlcyBmcm9tIDEgdG8gMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBidXQgMyB3ZXJlIGdpdmVuIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihleGMuZXhjZXB0aW9uKSwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdFN5bnRheEVycm9yRm9yRnVuY3Rpb25DYWxsKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5IGIvTGliL3Rlc3QvdGVzdF9saWIydG8zLnB5CmluZGV4IDFhZmFmNzAuLmRmNGMzN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGliMnRvMy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpYjJ0bzMucHkKQEAgLTksOCArOSw4IEBACiBkZWYgc3VpdGUoKToKICAgICB0ZXN0cyA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCiAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgZm9yIG0gaW4gKHRlc3RfZml4ZXJzLCB0ZXN0X3B5dHJlZSx0ZXN0X3V0aWwsIHRlc3RfcmVmYWN0b3IsCi0gICAgICAgICAgICAgIHRlc3RfcGFyc2VyLCB0ZXN0X21haW5fKToKKyAgICBmb3IgbSBpbiAodGVzdF9maXhlcnMsIHRlc3RfcHl0cmVlLCB0ZXN0X3V0aWwsIHRlc3RfcmVmYWN0b3IsIHRlc3RfcGFyc2VyLAorICAgICAgICAgICAgICB0ZXN0X21haW5fKToKICAgICAgICAgdGVzdHMuYWRkVGVzdHMobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobSkpCiAgICAgcmV0dXJuIHRlc3RzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQppbmRleCA4NGI4YWZlLi41ZGYyN2QzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitpbXBvcnQgcGlja2xlCiAKIGNsYXNzIExpc3RUZXN0KGxpc3RfdGVzdHMuQ29tbW9uVGVzdCk6CiAgICAgdHlwZTJ0ZXN0ID0gbGlzdApAQCAtNjksNiArNzAsMzMgQEAKICAgICAgICAgY2hlY2soMTApICAgICAgICMgY2hlY2sgb3VyIGNoZWNraW5nIGNvZGUKICAgICAgICAgY2hlY2soMTAwMDAwMCkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsZShzZWxmKToKKyAgICAgICAgIyBVc2VybGlzdCBpdGVyYXRvcnMgZG9uJ3Qgc3VwcG9ydCBwaWNrbGluZyB5ZXQgc2luY2UKKyAgICAgICAgIyB0aGV5IGFyZSBiYXNlZCBvbiBnZW5lcmF0b3JzLgorICAgICAgICBkYXRhID0gc2VsZi50eXBlMnRlc3QoWzQsIDUsIDYsIDddKQorICAgICAgICBpdCA9IGl0b3JnID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKVsxOl0pCisKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0ID0gaXRvcmcgPSByZXZlcnNlZChkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKSkKKworICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBuZXh0KGl0KQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGl0KSwgc2VsZi50eXBlMnRlc3QocmV2ZXJzZWQoZGF0YSkpWzE6XSkKIAogICAgIGRlZiB0ZXN0X25vX2NvbWRhdF9mb2xkaW5nKHNlbGYpOgogICAgICAgICAjIElzc3VlIDg4NDc6IEluIHRoZSBQR08gYnVpbGQsIHRoZSBNU1ZDIGxpbmtlcidzIENPTURBVCBmb2xkaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weSBiL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CmluZGV4IDhmNzU3NGIuLjUxYTdiY2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9jYWxlLnB5CkBAIC0xMSw3ICsxMSw3IEBACiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgdGxvY3MgPSAoImVuX1VTLlVURi04IiwgImVuX1VTLklTTzg4NTktMSIsICJlbl9VUyIpCi0gICAgICAgIGlmIGludChvcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pIDwgMTA6CisgICAgICAgIGlmIGludChvcy51bmFtZSgpLnJlbGVhc2Uuc3BsaXQoJy4nKVswXSkgPCAxMDoKICAgICAgICAgICAgICMgVGhlIGxvY2FsZSB0ZXN0IHdvcmsgZmluZSBvbiBPU1ggMTAuNiwgSSAocm9uYWxkb3Vzc29yZW4pCiAgICAgICAgICAgICAjIGhhdmVuJ3QgaGFkIHRpbWUgeWV0IHRvIHZlcmlmeSBpZiB0ZXN0cyB3b3JrIG9uIE9TWCAxMC41CiAgICAgICAgICAgICAjICgxMC40IGlzIGtub3duIHRvIGJlIGJhZCkKQEAgLTQwMSw2ICs0MDEsOCBAQAogICAgICAgICAgICAgIyBVbnN1cHBvcnRlZCBsb2NhbGUgb24gdGhpcyBzeXN0ZW0KICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3Rlc3QgbmVlZHMgVHVya2lzaCBsb2NhbGUnKQogICAgICAgICBsb2MgPSBsb2NhbGUuZ2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSkKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIHByaW50KCdnb3QgbG9jYWxlICVhJyAlIChsb2MsKSkKICAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsIGxvYykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2MsIGxvY2FsZS5nZXRsb2NhbGUobG9jYWxlLkxDX0NUWVBFKSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CmluZGV4IDJkMjY0ZjguLmNiOTA4ZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKQEAgLTM3LDEyICszNywxMSBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc2VsZWN0CiBpbXBvcnQgc29ja2V0Ci1mcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nVENQU2VydmVyLCBTdHJlYW1SZXF1ZXN0SGFuZGxlcgogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fd2l0aF9sb2NhbGUsIHJ1bl91bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRlc3RIYW5kbGVyLCBNYXRjaGVyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgcnVuX3dpdGhfbG9jYWxlLCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGNoLCByZXF1aXJlc196bGliLCBUZXN0SGFuZGxlciwgTWF0Y2hlcikKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtNTAsOCArNDksMzEgQEAKIGltcG9ydCB3ZWFrcmVmCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZworICAgICMgVGhlIGZvbGxvd2luZyBpbXBvcnRzIGFyZSBuZWVkZWQgb25seSBmb3IgdGVzdHMgd2hpY2gKKyAgICAjIHJlcXVpcmUgdGhyZWFkaW5nCisgICAgaW1wb3J0IGFzeW5jaGF0CisgICAgaW1wb3J0IGFzeW5jb3JlCisgICAgaW1wb3J0IGVycm5vCisgICAgZnJvbSBodHRwLnNlcnZlciBpbXBvcnQgSFRUUFNlcnZlciwgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcgorICAgIGltcG9ydCBzbXRwZAorICAgIGZyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgcGFyc2VfcXMKKyAgICBmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgKFRocmVhZGluZ1VEUFNlcnZlciwgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlciwgU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgdGhyZWFkaW5nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCB3aW4zMmV2dGxvZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHdpbjMyZXZ0bG9nID0gTm9uZQordHJ5OgorICAgIGltcG9ydCB3aW4zMmV2dGxvZ3V0aWwKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICB3aW4zMmV2dGxvZ3V0aWwgPSBOb25lCisgICAgd2luMzJldnRsb2cgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IHpsaWIKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCiAKIAogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNzksOSArMTAxLDcgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxvZ2dpbmcuX3JlbGVhc2VMb2NrKCkKIAotICAgICAgICAjIFNldCB0d28gdW51c2VkIGxvZ2dlcnM6IG9uZSBub24tQVNDSUkgYW5kIG9uZSBVbmljb2RlLgotICAgICAgICAjIFRoaXMgaXMgdG8gdGVzdCBjb3JyZWN0IG9wZXJhdGlvbiB3aGVuIHNvcnRpbmcgZXhpc3RpbmcKLSAgICAgICAgIyBsb2dnZXJzIGluIHRoZSBjb25maWd1cmF0aW9uIGNvZGUuIFNlZSBpc3N1ZSA4MjAxLgorICAgICAgICAjIFNldCB0d28gdW51c2VkIGxvZ2dlcnMKICAgICAgICAgc2VsZi5sb2dnZXIxID0gbG9nZ2luZy5nZXRMb2dnZXIoIlx4YWJceGQ3XHhiYiIpCiAgICAgICAgIHNlbGYubG9nZ2VyMiA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJcdTAxM2ZcdTAwZDZcdTAwNDciKQogCkBAIC0xNDIsOCArMTYyLDcgQEAKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgIyBTdHJpbmdJTy5TdHJpbmdJTyBsYWNrcyBhIHJlc2V0KCkgbWV0aG9kLgogICAgICAgICAgICAgYWN0dWFsX2xpbmVzID0gc3RyZWFtLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFjdHVhbF9saW5lcyksIGxlbihleHBlY3RlZF92YWx1ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMgdnMuICVzJyAlIChhY3R1YWxfbGluZXMsIGV4cGVjdGVkX3ZhbHVlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFjdHVhbF9saW5lcyksIGxlbihleHBlY3RlZF92YWx1ZXMpKQogICAgICAgICBmb3IgYWN0dWFsLCBleHBlY3RlZCBpbiB6aXAoYWN0dWFsX2xpbmVzLCBleHBlY3RlZF92YWx1ZXMpOgogICAgICAgICAgICAgbWF0Y2ggPSBwYXQuc2VhcmNoKGFjdHVhbCkKICAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKQEAgLTE4MSwxNyArMjAwLDE3IEBACiAKICAgICAgICAgSU5GLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIElORi5lcnJvcihtKCkpCi0gICAgICAgIElORi53YXJuKG0oKSkKKyAgICAgICAgSU5GLndhcm5pbmcobSgpKQogICAgICAgICBJTkYuaW5mbyhtKCkpCiAKICAgICAgICAgREVCLmxvZyhsb2dnaW5nLkNSSVRJQ0FMLCBtKCkpCiAgICAgICAgIERFQi5lcnJvcihtKCkpCi0gICAgICAgIERFQi53YXJuIChtKCkpCi0gICAgICAgIERFQi5pbmZvIChtKCkpCisgICAgICAgIERFQi53YXJuaW5nKG0oKSkKKyAgICAgICAgREVCLmluZm8obSgpKQogICAgICAgICBERUIuZGVidWcobSgpKQogCiAgICAgICAgICMgVGhlc2Ugc2hvdWxkIG5vdCBsb2cuCi0gICAgICAgIEVSUi53YXJuKG0oKSkKKyAgICAgICAgRVJSLndhcm5pbmcobSgpKQogICAgICAgICBFUlIuaW5mbyhtKCkpCiAgICAgICAgIEVSUi5kZWJ1ZyhtKCkpCiAKQEAgLTIyNSw3ICsyNDQsNyBAQAogICAgICAgICBJTkZfRVJSLmVycm9yKG0oKSkKIAogICAgICAgICAjIFRoZXNlIHNob3VsZCBub3QgbG9nLgotICAgICAgICBJTkZfRVJSLndhcm4obSgpKQorICAgICAgICBJTkZfRVJSLndhcm5pbmcobSgpKQogICAgICAgICBJTkZfRVJSLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSLmRlYnVnKG0oKSkKIApAQCAtMjQ5LDE0ICsyNjgsMTQgQEAKICAgICAgICAgIyBUaGVzZSBzaG91bGQgbG9nLgogICAgICAgICBJTkZfVU5ERUYubG9nKGxvZ2dpbmcuQ1JJVElDQUwsIG0oKSkKICAgICAgICAgSU5GX1VOREVGLmVycm9yKG0oKSkKLSAgICAgICAgSU5GX1VOREVGLndhcm4obSgpKQorICAgICAgICBJTkZfVU5ERUYud2FybmluZyhtKCkpCiAgICAgICAgIElORl9VTkRFRi5pbmZvKG0oKSkKICAgICAgICAgSU5GX0VSUl9VTkRFRi5sb2cobG9nZ2luZy5DUklUSUNBTCwgbSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmVycm9yKG0oKSkKIAogICAgICAgICAjIFRoZXNlIHNob3VsZCBub3QgbG9nLgogICAgICAgICBJTkZfVU5ERUYuZGVidWcobSgpKQotICAgICAgICBJTkZfRVJSX1VOREVGLndhcm4obSgpKQorICAgICAgICBJTkZfRVJSX1VOREVGLndhcm5pbmcobSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmluZm8obSgpKQogICAgICAgICBJTkZfRVJSX1VOREVGLmRlYnVnKG0oKSkKIApAQCAtMjk1LDggKzMxNCw2IEBACiAgICAgICAgICAgICAoJ0lORi5CQURQQVJFTlQnLCAnSU5GTycsICc0JyksCiAgICAgICAgIF0pCiAKLSAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbG9nZ2luZy5nZXRMb2dnZXIsIGFueSkKIAogY2xhc3MgQmFzaWNGaWx0ZXJUZXN0KEJhc2VUZXN0KToKIApAQCAtMzU1LDYgKzM3MiwxMCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgaGFuZGxlci5yZW1vdmVGaWx0ZXIoZmlsdGVyZnVuYykKIAorICAgIGRlZiB0ZXN0X2VtcHR5X2ZpbHRlcihzZWxmKToKKyAgICAgICAgZiA9IGxvZ2dpbmcuRmlsdGVyKCkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J25hbWUnOiAnc3BhbS5lZ2dzJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmZpbHRlcihyKSkKIAogIwogIyAgIEZpcnN0LCB3ZSBkZWZpbmUgb3VyIGxldmVscy4gVGhlcmUgY2FuIGJlIGFzIG1hbnkgYXMgeW91IHdhbnQgLSB0aGUgb25seQpAQCAtNDk4LDYgKzUxOSw0NzggQEAKICAgICAgICAgICAgIGhhbmRsZXIucmVtb3ZlRmlsdGVyKGdhcnIpCiAKIAorY2xhc3MgSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X25hbWUoc2VsZik6CisgICAgICAgIGggPSBsb2dnaW5nLkhhbmRsZXIoKQorICAgICAgICBoLm5hbWUgPSAnZ2VuZXJpYycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLm5hbWUsICdnZW5lcmljJykKKyAgICAgICAgaC5uYW1lID0gJ2Fub3RoZXJnZW5lcmljJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgJ2Fub3RoZXJnZW5lcmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgaC5lbWl0LCBOb25lKQorCisgICAgZGVmIHRlc3RfYnVpbHRpbl9oYW5kbGVycyhzZWxmKToKKyAgICAgICAgIyBXZSBjYW4ndCBhY3R1YWxseSAqdXNlKiB0b28gbWFueSBoYW5kbGVycyBpbiB0aGUgdGVzdHMsCisgICAgICAgICMgYnV0IHdlIGNhbiB0cnkgaW5zdGFudGlhdGluZyB0aGVtIHdpdGggdmFyaW91cyBvcHRpb25zCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2xpbnV4JywgJ2RhcndpbicpOgorICAgICAgICAgICAgZm9yIGV4aXN0aW5nIGluIChUcnVlLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgICAgaWYgbm90IGV4aXN0aW5nOgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCisgICAgICAgICAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyKGZuLCBkZWxheT1UcnVlKQorICAgICAgICAgICAgICAgIGlmIGV4aXN0aW5nOgorICAgICAgICAgICAgICAgICAgICBkZXYsIGlubyA9IGguZGV2LCBoLmlubworICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRldiwgLTEpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5vLCAtMSkKKyAgICAgICAgICAgICAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICdUZXN0J30pCisgICAgICAgICAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICAgICAgICAgICMgTm93IHJlbW92ZSB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgICAgICAgICAgIyBUaGUgbmV4dCBjYWxsIHNob3VsZCByZWNyZWF0ZSB0aGUgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZGV2LCAtMSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmlubywgLTEpCisgICAgICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICBzb2NrbmFtZSA9ICcvdmFyL3J1bi9zeXNsb2cnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNvY2tuYW1lID0gJy9kZXYvbG9nJworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLlN5c0xvZ0hhbmRsZXIoc29ja25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmZhY2lsaXR5LCBoLkxPR19VU0VSKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoLnVuaXhzb2NrZXQpCisgICAgICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOiAjIHN5c2xvZ2QgbWlnaHQgbm90IGJlIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ0dFVCcsICdQT1NUJywgJ1BVVCcpOgorICAgICAgICAgICAgaWYgbWV0aG9kID09ICdQVVQnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuSFRUUEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCcsICcvbG9nJywgbWV0aG9kKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5IVFRQSGFuZGxlcignbG9jYWxob3N0JywgJy9sb2cnLCBtZXRob2QpCisgICAgICAgICAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLkJ1ZmZlcmluZ0hhbmRsZXIoMCkKKyAgICAgICAgciA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGguc2hvdWxkRmx1c2gocikpCisgICAgICAgIGguY2xvc2UoKQorICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5CdWZmZXJpbmdIYW5kbGVyKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaC5zaG91bGRGbHVzaChyKSkKKyAgICAgICAgaC5jbG9zZSgpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKG9zLm5hbWUgPT0gJ250JywgJ1dhdGNoZWRGaWxlSGFuZGxlciBub3QgYXBwcm9wcmlhdGUgZm9yIFdpbmRvd3MuJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0X3JhY2Uoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzE0NjMyIHJlZmVycy4KKyAgICAgICAgZGVmIHJlbW92ZV9sb29wKGZuYW1lLCB0cmllcyk6CisgICAgICAgICAgICBmb3IgXyBpbiByYW5nZSh0cmllcyk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDA0ICogcmFuZG9tLnJhbmRpbnQoMCwgNCkpCisKKyAgICAgICAgZGVsX2NvdW50ID0gNTAwCisgICAgICAgIGxvZ19jb3VudCA9IDUwMAorCisgICAgICAgIGZvciBkZWxheSBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgZmQsIGZuID0gdGVtcGZpbGUubWtzdGVtcCgnLmxvZycsICd0ZXN0X2xvZ2dpbmctMy0nKQorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICByZW1vdmVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cmVtb3ZlX2xvb3AsIGFyZ3M9KGZuLCBkZWxfY291bnQpKQorICAgICAgICAgICAgcmVtb3Zlci5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICByZW1vdmVyLnN0YXJ0KCkKKyAgICAgICAgICAgIGggPSBsb2dnaW5nLmhhbmRsZXJzLldhdGNoZWRGaWxlSGFuZGxlcihmbiwgZGVsYXk9ZGVsYXkpCisgICAgICAgICAgICBmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUoYXNjdGltZSlzOiAlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcycpCisgICAgICAgICAgICBoLnNldEZvcm1hdHRlcihmKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBfIGluIHJhbmdlKGxvZ19jb3VudCk6CisgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMDUpCisgICAgICAgICAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZycgfSkKKyAgICAgICAgICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcmVtb3Zlci5qb2luKCkKKyAgICAgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmbikKKworCitjbGFzcyBCYWRTdHJlYW0ob2JqZWN0KToKKyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignZGVsaWJlcmF0ZSBtaXN0YWtlJykKKworY2xhc3MgVGVzdFN0cmVhbUhhbmRsZXIobG9nZ2luZy5TdHJlYW1IYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlRXJyb3Ioc2VsZiwgcmVjb3JkKToKKyAgICAgICAgc2VsZi5lcnJvcl9yZWNvcmQgPSByZWNvcmQKKworY2xhc3MgU3RyZWFtSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2Vycm9yX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICBoID0gVGVzdFN0cmVhbUhhbmRsZXIoQmFkU3RyZWFtKCkpCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIG9sZF9zdGRlcnIgPSBzeXMuc3RkZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGguZXJyb3JfcmVjb3JkLCByKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihCYWRTdHJlYW0oKSkKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzaW8gPSBpby5TdHJpbmdJTygpCisgICAgICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignXG5SdW50aW1lRXJyb3I6IGRlbGliZXJhdGUgbWlzdGFrZVxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2lvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCisgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgaC5oYW5kbGUocikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNpby5nZXR2YWx1ZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBvbGRfcmFpc2UKKyAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBvbGRfc3RkZXJyCisKKyMgLS0gVGhlIGZvbGxvd2luZyBzZWN0aW9uIGNvdWxkIGJlIG1vdmVkIGludG8gYSBzZXJ2ZXJfaGVscGVyLnB5IG1vZHVsZQorIyAtLSBpZiBpdCBwcm92ZXMgdG8gYmUgb2Ygd2lkZXIgdXRpbGl0eSB0aGFuIGp1c3QgdGVzdF9sb2dnaW5nCisKK2lmIHRocmVhZGluZzoKKyAgICBjbGFzcyBUZXN0U01UUENoYW5uZWwoc210cGQuU01UUENoYW5uZWwpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBkZXJpdmVkIGNsYXNzIGhhcyBoYWQgdG8gYmUgY3JlYXRlZCBiZWNhdXNlIHNtdHBkIGRvZXMgbm90CisgICAgICAgIHN1cHBvcnQgdXNlIG9mIGN1c3RvbSBjaGFubmVsIG1hcHMsIGFsdGhvdWdoIHRoZXkgYXJlIGFsbG93ZWQgYnkKKyAgICAgICAgYXN5bmNvcmUncyBkZXNpZ24uIElzc3VlICMxMTk1OSBoYXMgYmVlbiByYWlzZWQgdG8gYWRkcmVzcyB0aGlzLAorICAgICAgICBhbmQgaWYgcmVzb2x2ZWQgc2F0aXNmYWN0b3JpbHksIHNvbWUgb2YgdGhpcyBjb2RlIGNhbiBiZSByZW1vdmVkLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlciwgY29ubiwgYWRkciwgc29ja21hcCk6CisgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4sIHNvY2ttYXApCisgICAgICAgICAgICBzZWxmLnNtdHBfc2VydmVyID0gc2VydmVyCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBjb25uCisgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyCisgICAgICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucmVjZWl2ZWRfbGluZXMgPSBbXQorICAgICAgICAgICAgc2VsZi5zbXRwX3N0YXRlID0gc2VsZi5DT01NQU5ECisgICAgICAgICAgICBzZWxmLnNlZW5fZ3JlZXRpbmcgPSAnJworICAgICAgICAgICAgc2VsZi5tYWlsZnJvbSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucmNwdHRvcyA9IFtdCisgICAgICAgICAgICBzZWxmLnJlY2VpdmVkX2RhdGEgPSAnJworICAgICAgICAgICAgc2VsZi5mcWRuID0gc29ja2V0LmdldGZxZG4oKQorICAgICAgICAgICAgc2VsZi5udW1fYnl0ZXMgPSAwCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5wZWVyID0gY29ubi5nZXRwZWVybmFtZSgpCisgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICAjIGEgcmFjZSBjb25kaXRpb24gIG1heSBvY2N1ciBpZiB0aGUgb3RoZXIgZW5kIGlzIGNsb3NpbmcKKyAgICAgICAgICAgICAgICAjIGJlZm9yZSB3ZSBjYW4gZ2V0IHRoZSBwZWVybmFtZQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdICE9IGVycm5vLkVOT1RDT05OOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5wdXNoKCcyMjAgJXMgJXMnICUgKHNlbGYuZnFkbiwgc210cGQuX192ZXJzaW9uX18pKQorICAgICAgICAgICAgc2VsZi5zZXRfdGVybWluYXRvcihiJ1xyXG4nKQorICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKworCisgICAgY2xhc3MgVGVzdFNNVFBTZXJ2ZXIoc210cGQuU01UUFNlcnZlcik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSB0ZXN0IFNNVFAgc2VydmVyLgorCisgICAgICAgIDpwYXJhbSBhZGRyOiBBIChob3N0LCBwb3J0KSB0dXBsZSB3aGljaCB0aGUgc2VydmVyIGxpc3RlbnMgb24uCisgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHNwZWNpZnkgYSBwb3J0IHZhbHVlIG9mIHplcm86IHRoZSBzZXJ2ZXIncworICAgICAgICAgICAgICAgICAgICAgKnBvcnQqIGF0dHJpYnV0ZSB3aWxsIGhvbGQgdGhlIGFjdHVhbCBwb3J0IG51bWJlcgorICAgICAgICAgICAgICAgICAgICAgdXNlZCwgd2hpY2ggY2FuIGJlIHVzZWQgaW4gY2xpZW50IGNvbm5lY3Rpb25zLgorICAgICAgICA6cGFyYW0gaGFuZGxlcjogQSBjYWxsYWJsZSB3aGljaCB3aWxsIGJlIGNhbGxlZCB0byBwcm9jZXNzCisgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyBtZXNzYWdlcy4gVGhlIGhhbmRsZXIgd2lsbCBiZSBwYXNzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBjbGllbnQgYWRkcmVzcyB0dXBsZSwgd2hvIHRoZSBtZXNzYWdlIGlzIGZyb20sCisgICAgICAgICAgICAgICAgICAgICAgICBhIGxpc3Qgb2YgcmVjaXBpZW50cyBhbmQgdGhlIG1lc3NhZ2UgZGF0YS4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBpbnRlcnZhbCwgaW4gc2Vjb25kcywgdXNlZCBpbiB0aGUgdW5kZXJseWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YHNlbGVjdGAgb3IgOmZ1bmM6YHBvbGxgIGNhbGwgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpmdW5jOmBhc3luY29yZS5sb29wYC4KKyAgICAgICAgOnBhcmFtIHNvY2ttYXA6IEEgZGljdGlvbmFyeSB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaG9sZAorICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBhc3luY29yZS5kaXNwYXRjaGVyYCBpbnN0YW5jZXMgdXNlZCBieQorICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YGFzeW5jb3JlLmxvb3BgLiBUaGlzIGF2b2lkcyBjaGFuZ2luZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDptb2Q6YGFzeW5jb3JlYCBtb2R1bGUncyBnbG9iYWwgc3RhdGUuCisgICAgICAgICIiIgorICAgICAgICBjaGFubmVsX2NsYXNzID0gVGVzdFNNVFBDaGFubmVsCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwsIHNvY2ttYXApOgorICAgICAgICAgICAgc2VsZi5fbG9jYWxhZGRyID0gYWRkcgorICAgICAgICAgICAgc2VsZi5fcmVtb3RlYWRkciA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuZGF0YV9zaXplX2xpbWl0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5zb2NrbWFwID0gc29ja21hcAorICAgICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBtYXA9c29ja21hcCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgICAgIHNvY2suc2V0YmxvY2tpbmcoMCkKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQoc29jaywgbWFwPXNvY2ttYXApCisgICAgICAgICAgICAgICAgIyB0cnkgdG8gcmUtdXNlIGEgc2VydmVyIHBvcnQgaWYgcG9zc2libGUKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9yZXVzZV9hZGRyKCkKKyAgICAgICAgICAgICAgICBzZWxmLmJpbmQoYWRkcikKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KKyAgICAgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5wb2xsX2ludGVydmFsID0gcG9sbF9pbnRlcnZhbAorCisgICAgICAgIGRlZiBoYW5kbGVfYWNjZXB0ZWQoc2VsZiwgY29ubiwgYWRkcik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFJlZGVmaW5lZCBvbmx5IGJlY2F1c2UgdGhlIGJhc2UgY2xhc3MgZG9lcyBub3QgcGFzcyBpbiBhCisgICAgICAgICAgICBtYXAsIGZvcmNpbmcgdXNlIG9mIGEgZ2xvYmFsIGluIDptb2Q6YGFzeW5jb3JlYC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgY2hhbm5lbCA9IHNlbGYuY2hhbm5lbF9jbGFzcyhzZWxmLCBjb25uLCBhZGRyLCBzZWxmLnNvY2ttYXApCisKKyAgICAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIERlbGVnYXRlcyB0byB0aGUgaGFuZGxlciBwYXNzZWQgaW4gdG8gdGhlIHNlcnZlcidzIGNvbnN0cnVjdG9yLgorCisgICAgICAgICAgICBUeXBpY2FsbHksIHRoaXMgd2lsbCBiZSBhIHRlc3QgY2FzZSBtZXRob2QuCisgICAgICAgICAgICA6cGFyYW0gcGVlcjogVGhlIGNsaWVudCAoaG9zdCwgcG9ydCkgdHVwbGUuCisgICAgICAgICAgICA6cGFyYW0gbWFpbGZyb206IFRoZSBhZGRyZXNzIG9mIHRoZSBzZW5kZXIuCisgICAgICAgICAgICA6cGFyYW0gcmNwdHRvczogVGhlIGFkZHJlc3NlcyBvZiB0aGUgcmVjaXBpZW50cy4KKyAgICAgICAgICAgIDpwYXJhbSBkYXRhOiBUaGUgbWVzc2FnZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5faGFuZGxlcihwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSkKKworICAgICAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFN0YXJ0IHRoZSBzZXJ2ZXIgcnVubmluZyBvbiBhIHNlcGFyYXRlIGRhZW1vbiB0aHJlYWQuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLnNlcnZlX2ZvcmV2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZWxmLnBvbGxfaW50ZXJ2YWwsKSkKKyAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKworICAgICAgICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgUnVuIHRoZSA6bW9kOmBhc3luY29yZWAgbG9vcCB1bnRpbCBub3JtYWwgdGVybWluYXRpb24KKyAgICAgICAgICAgIGNvbmRpdGlvbnMgYXJpc2UuCisgICAgICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIGludGVydmFsLCBpbiBzZWNvbmRzLCB1c2VkIGluIHRoZSB1bmRlcmx5aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZ1bmM6YHNlbGVjdGAgb3IgOmZ1bmM6YHBvbGxgIGNhbGwgYnkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ZnVuYzpgYXN5bmNvcmUubG9vcGAuCisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhc3luY29yZS5sb29wKHBvbGxfaW50ZXJ2YWwsIG1hcD1zZWxmLnNvY2ttYXApCisgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yOgorICAgICAgICAgICAgICAgICMgT24gRnJlZUJTRCA4LCBjbG9zaW5nIHRoZSBzZXJ2ZXIgcmVwZWF0YWJseQorICAgICAgICAgICAgICAgICMgcmFpc2VzIHRoaXMgZXJyb3IuIFdlIHN3YWxsb3cgaXQgaWYgdGhlCisgICAgICAgICAgICAgICAgIyBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29ubmVjdGVkIG9yIHNlbGYuYWNjZXB0aW5nOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYsIHRpbWVvdXQ9Tm9uZSk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFN0b3AgdGhlIHRocmVhZCBieSBjbG9zaW5nIHRoZSBzZXJ2ZXIgaW5zdGFuY2UuCisgICAgICAgICAgICBXYWl0IGZvciB0aGUgc2VydmVyIHRocmVhZCB0byB0ZXJtaW5hdGUuCisKKyAgICAgICAgICAgIDpwYXJhbSB0aW1lb3V0OiBIb3cgbG9uZyB0byB3YWl0IGZvciB0aGUgc2VydmVyIHRocmVhZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRlcm1pbmF0ZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbih0aW1lb3V0KQorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorCisgICAgY2xhc3MgQ29udHJvbE1peGluKG9iamVjdCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIG1peGluIGlzIHVzZWQgdG8gc3RhcnQgYSBzZXJ2ZXIgb24gYSBzZXBhcmF0ZSB0aHJlYWQsIGFuZAorICAgICAgICBzaHV0IGl0IGRvd24gcHJvZ3JhbW1hdGljYWxseS4gUmVxdWVzdCBoYW5kbGluZyBpcyBzaW1wbGlmaWVkIC0gaW5zdGVhZAorICAgICAgICBvZiBuZWVkaW5nIHRvIGRlcml2ZSBhIHN1aXRhYmxlIFJlcXVlc3RIYW5kbGVyIHN1YmNsYXNzLCB5b3UganVzdAorICAgICAgICBwcm92aWRlIGEgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBwYXNzZWQgZWFjaCByZWNlaXZlZCByZXF1ZXN0IHRvIGJlCisgICAgICAgIHByb2Nlc3NlZC4KKworICAgICAgICA6cGFyYW0gaGFuZGxlcjogQSBoYW5kbGVyIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIHBhcmFtZXRlciAtIHRoZSByZXF1ZXN0IC0gaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhlIHJlcXVlc3QuIFRoaXMgaGFuZGxlciBpcyBjYWxsZWQgb24gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgdGhyZWFkLCBlZmZlY3RpdmVseSBtZWFuaW5nIHRoYXQgcmVxdWVzdHMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgc2VyaWFsbHkuIFdoaWxlIG5vdCBxdWl0ZSBXZWIgc2NhbGUgOy0pLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBzaG91bGQgYmUgZmluZSBmb3IgdGVzdGluZyBhcHBsaWNhdGlvbnMuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBpbiBzZWNvbmRzLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWwpOgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5wb2xsX2ludGVydmFsID0gcG9sbF9pbnRlcnZhbAorICAgICAgICAgICAgc2VsZi5faGFuZGxlciA9IGhhbmRsZXIKKyAgICAgICAgICAgIHNlbGYucmVhZHkgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgQ3JlYXRlIGEgZGFlbW9uIHRocmVhZCB0byBydW4gdGhlIHNlcnZlciwgYW5kIHN0YXJ0IGl0LgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5zZXJ2ZV9mb3JldmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5wb2xsX2ludGVydmFsLCkpCisgICAgICAgICAgICB0LnNldERhZW1vbihUcnVlKQorICAgICAgICAgICAgdC5zdGFydCgpCisKKyAgICAgICAgZGVmIHNlcnZlX2ZvcmV2ZXIoc2VsZiwgcG9sbF9pbnRlcnZhbCk6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIFJ1biB0aGUgc2VydmVyLiBTZXQgdGhlIHJlYWR5IGZsYWcgYmVmb3JlIGVudGVyaW5nIHRoZQorICAgICAgICAgICAgc2VydmljZSBsb29wLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnJlYWR5LnNldCgpCisgICAgICAgICAgICBzdXBlcihDb250cm9sTWl4aW4sIHNlbGYpLnNlcnZlX2ZvcmV2ZXIocG9sbF9pbnRlcnZhbCkKKworICAgICAgICBkZWYgc3RvcChzZWxmLCB0aW1lb3V0PU5vbmUpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBUZWxsIHRoZSBzZXJ2ZXIgdGhyZWFkIHRvIHN0b3AsIGFuZCB3YWl0IGZvciBpdCB0byBkbyBzby4KKworICAgICAgICAgICAgOnBhcmFtIHRpbWVvdXQ6IEhvdyBsb25nIHRvIHdhaXQgZm9yIHRoZSBzZXJ2ZXIgdGhyZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGVybWluYXRlLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLnNodXRkb3duKCkKKyAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWQuam9pbih0aW1lb3V0KQorICAgICAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgICAgIHNlbGYucmVhZHkuY2xlYXIoKQorCisgICAgY2xhc3MgVGVzdEhUVFBTZXJ2ZXIoQ29udHJvbE1peGluLCBIVFRQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIEFuIEhUVFAgc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgICAgICAgICBzaW5nbGUgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0bworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcyB0aGUgcmVxdWVzdC4KKyAgICAgICAgOnBhcmFtIHBvbGxfaW50ZXJ2YWw6IFRoZSBwb2xsaW5nIGludGVydmFsIGluIHNlY29uZHMuCisgICAgICAgIDpwYXJhbSBsb2c6IFBhc3MgYGBUcnVlYGAgdG8gZW5hYmxlIGxvZyBtZXNzYWdlcy4KKyAgICAgICAgIiIiCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsPTAuNSwKKyAgICAgICAgICAgICAgICAgICAgIGxvZz1GYWxzZSwgc3NsY3R4PU5vbmUpOgorICAgICAgICAgICAgY2xhc3MgRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdkb18nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnByb2Nlc3NfcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorCisgICAgICAgICAgICAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuX2hhbmRsZXIoc2VsZikKKworICAgICAgICAgICAgICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCBmb3JtYXQsICphcmdzKToKKyAgICAgICAgICAgICAgICAgICAgaWYgbG9nOgorICAgICAgICAgICAgICAgICAgICAgICAgc3VwZXIoRGVsZWdhdGluZ0hUVFBSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpLmxvZ19tZXNzYWdlKGZvcm1hdCwgKmFyZ3MpCisgICAgICAgICAgICBIVFRQU2VydmVyLl9faW5pdF9fKHNlbGYsIGFkZHIsIERlbGVnYXRpbmdIVFRQUmVxdWVzdEhhbmRsZXIpCisgICAgICAgICAgICBDb250cm9sTWl4aW4uX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCkKKyAgICAgICAgICAgIHNlbGYuc3NsY3R4ID0gc3NsY3R4CisKKyAgICAgICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNvY2ssIGFkZHIgPSBzZWxmLnNvY2tldC5hY2NlcHQoKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuc3NsY3R4OgorICAgICAgICAgICAgICAgICAgICBzb2NrID0gc2VsZi5zc2xjdHgud3JhcF9zb2NrZXQoc29jaywgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIHNvY2tldCBlcnJvcnMgYXJlIHNpbGVuY2VkIGJ5IHRoZSBjYWxsZXIsIHByaW50IHRoZW0gaGVyZQorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIkdvdCBhbiBlcnJvcjpcbiVzXG4iICUgZSkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgcmV0dXJuIHNvY2ssIGFkZHIKKworICAgIGNsYXNzIFRlc3RUQ1BTZXJ2ZXIoQ29udHJvbE1peGluLCBUaHJlYWRpbmdUQ1BTZXJ2ZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQSBUQ1Agc2VydmVyIHdoaWNoIGlzIGNvbnRyb2xsYWJsZSB1c2luZyA6Y2xhc3M6YENvbnRyb2xNaXhpbmAuCisKKyAgICAgICAgOnBhcmFtIGFkZHI6IEEgdHVwbGUgd2l0aCB0aGUgSVAgYWRkcmVzcyBhbmQgcG9ydCB0byBsaXN0ZW4gb24uCisgICAgICAgIDpwYXJhbSBoYW5kbGVyOiBBIGhhbmRsZXIgY2FsbGFibGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2l0aCBhIHNpbmdsZQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIC0gdGhlIHJlcXVlc3QgLSBpbiBvcmRlciB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LgorICAgICAgICA6cGFyYW0gcG9sbF9pbnRlcnZhbDogVGhlIHBvbGxpbmcgaW50ZXJ2YWwgaW4gc2Vjb25kcy4KKyAgICAgICAgOmJpbmRfYW5kX2FjdGl2YXRlOiBJZiBUcnVlICh0aGUgZGVmYXVsdCksIGJpbmRzIHRoZSBzZXJ2ZXIgYW5kIHN0YXJ0cyBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmluZy4gSWYgRmFsc2UsIHlvdSBuZWVkIHRvIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWV0aDpgc2VydmVyX2JpbmRgIGFuZCA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvbWUgbGF0ZXIgdGltZSBiZWZvcmUgY2FsbGluZyA6bWV0aDpgc3RhcnRgLCBzbyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNlcnZlciB3aWxsIHNldCB1cCB0aGUgc29ja2V0IGFuZCBsaXN0ZW4gb24gaXQuCisgICAgICAgICIiIgorCisgICAgICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSBUcnVlCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nVENQUmVxdWVzdEhhbmRsZXIoU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgorCisgICAgICAgICAgICAgICAgZGVmIGhhbmRsZShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuX2hhbmRsZXIoc2VsZikKKyAgICAgICAgICAgIFRocmVhZGluZ1RDUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCBEZWxlZ2F0aW5nVENQUmVxdWVzdEhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGUpCisgICAgICAgICAgICBDb250cm9sTWl4aW4uX19pbml0X18oc2VsZiwgaGFuZGxlciwgcG9sbF9pbnRlcnZhbCkKKworICAgICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CisgICAgICAgICAgICBzdXBlcihUZXN0VENQU2VydmVyLCBzZWxmKS5zZXJ2ZXJfYmluZCgpCisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCisKKyAgICBjbGFzcyBUZXN0VURQU2VydmVyKENvbnRyb2xNaXhpbiwgVGhyZWFkaW5nVURQU2VydmVyKToKKyAgICAgICAgIiIiCisgICAgICAgIEEgVURQIHNlcnZlciB3aGljaCBpcyBjb250cm9sbGFibGUgdXNpbmcgOmNsYXNzOmBDb250cm9sTWl4aW5gLgorCisgICAgICAgIDpwYXJhbSBhZGRyOiBBIHR1cGxlIHdpdGggdGhlIElQIGFkZHJlc3MgYW5kIHBvcnQgdG8gbGlzdGVuIG9uLgorICAgICAgICA6cGFyYW0gaGFuZGxlcjogQSBoYW5kbGVyIGNhbGxhYmxlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdpdGggYQorICAgICAgICAgICAgICAgICAgICAgICAgc2luZ2xlIHBhcmFtZXRlciAtIHRoZSByZXF1ZXN0IC0gaW4gb3JkZXIgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3MgdGhlIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSBwb2xsX2ludGVydmFsOiBUaGUgcG9sbGluZyBpbnRlcnZhbCBmb3Igc2h1dGRvd24gcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzZWNvbmRzLgorICAgICAgICA6YmluZF9hbmRfYWN0aXZhdGU6IElmIFRydWUgKHRoZSBkZWZhdWx0KSwgYmluZHMgdGhlIHNlcnZlciBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydHMgaXQgbGlzdGVuaW5nLiBJZiBGYWxzZSwgeW91IG5lZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsIDptZXRoOmBzZXJ2ZXJfYmluZGAgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOm1ldGg6YHNlcnZlcl9hY3RpdmF0ZWAgYXQgc29tZSBsYXRlciB0aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIGNhbGxpbmcgOm1ldGg6YHN0YXJ0YCwgc28gdGhhdCB0aGUgc2VydmVyIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgdXAgdGhlIHNvY2tldCBhbmQgbGlzdGVuIG9uIGl0LgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFkZHIsIGhhbmRsZXIsIHBvbGxfaW50ZXJ2YWw9MC41LAorICAgICAgICAgICAgICAgICAgICAgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICBjbGFzcyBEZWxlZ2F0aW5nVURQUmVxdWVzdEhhbmRsZXIoRGF0YWdyYW1SZXF1ZXN0SGFuZGxlcik6CisKKyAgICAgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5faGFuZGxlcihzZWxmKQorCisgICAgICAgICAgICAgICAgZGVmIGZpbmlzaChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYud2ZpbGUuZ2V0dmFsdWUoKQorICAgICAgICAgICAgICAgICAgICBpZiBkYXRhOgorICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cGVyKERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlciwgc2VsZikuZmluaXNoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyLl9jbG9zZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgIFRocmVhZGluZ1VEUFNlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlbGVnYXRpbmdVRFBSZXF1ZXN0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZSkKKyAgICAgICAgICAgIENvbnRyb2xNaXhpbi5fX2luaXRfXyhzZWxmLCBoYW5kbGVyLCBwb2xsX2ludGVydmFsKQorICAgICAgICAgICAgc2VsZi5fY2xvc2VkID0gRmFsc2UKKworICAgICAgICBkZWYgc2VydmVyX2JpbmQoc2VsZik6CisgICAgICAgICAgICBzdXBlcihUZXN0VURQU2VydmVyLCBzZWxmKS5zZXJ2ZXJfYmluZCgpCisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzFdCisKKyAgICAgICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToKKyAgICAgICAgICAgIHN1cGVyKFRlc3RVRFBTZXJ2ZXIsIHNlbGYpLnNlcnZlcl9jbG9zZSgpCisgICAgICAgICAgICBzZWxmLl9jbG9zZWQgPSBUcnVlCisKKyMgLSBlbmQgb2Ygc2VydmVyX2hlbHBlciBzZWN0aW9uCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTTVRQSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBzb2NrbWFwID0ge30KKyAgICAgICAgc2VydmVyID0gVGVzdFNNVFBTZXJ2ZXIoKCdsb2NhbGhvc3QnLCAwKSwgc2VsZi5wcm9jZXNzX21lc3NhZ2UsIDAuMDAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbWFwKQorICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorICAgICAgICBhZGRyID0gKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuU01UUEhhbmRsZXIoYWRkciwgJ21lJywgJ3lvdScsICdMb2cnLCB0aW1lb3V0PTUuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnRvYWRkcnMsIFsneW91J10pCisgICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ0hlbGxvJ30pCisgICAgICAgIHNlbGYuaGFuZGxlZCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIGguaGFuZGxlKHIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KDUuMCkgICMgMTQzMTQ6IGRvbid0IHdhaXQgZm9yZXZlcgorICAgICAgICBzZXJ2ZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmhhbmRsZWQuaXNfc2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYubWVzc2FnZXMpLCAxKQorICAgICAgICBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSA9IHNlbGYubWVzc2FnZXNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsZnJvbSwgJ21lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyY3B0dG9zLCBbJ3lvdSddKQorICAgICAgICBzZWxmLmFzc2VydEluKCdcblN1YmplY3Q6IExvZ1xuJywgZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRhdGEuZW5kc3dpdGgoJ1xuXG5IZWxsbycpKQorICAgICAgICBoLmNsb3NlKCkKKworICAgIGRlZiBwcm9jZXNzX21lc3NhZ2Uoc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZChhcmdzKQorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKwogY2xhc3MgTWVtb3J5SGFuZGxlclRlc3QoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdHMgZm9yIHRoZSBNZW1vcnlIYW5kbGVyLiIiIgpAQCAtNTI1LDcgKzEwMTgsNyBAQAogICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAgICAgICAgICMgVGhpcyB3aWxsIGZsdXNoIGJlY2F1c2UgdGhlIGxldmVsIGlzID49IGxvZ2dpbmcuV0FSTklORwotICAgICAgICBzZWxmLm1lbV9sb2dnZXIud2FybihzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIud2FybmluZyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBsaW5lcyA9IFsKICAgICAgICAgICAgICgnREVCVUcnLCAnMScpLAogICAgICAgICAgICAgKCdJTkZPJywgJzInKSwKQEAgLTg3MCw2OCArMTM2Myw2IEBACiAgICAgICAgICAgICAjIE9yaWdpbmFsIGxvZ2dlciBvdXRwdXQgaXMgZW1wdHkuCiAgICAgICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCiAKLWNsYXNzIExvZ1JlY29yZFN0cmVhbUhhbmRsZXIoU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgotCi0gICAgIiIiSGFuZGxlciBmb3IgYSBzdHJlYW1pbmcgbG9nZ2luZyByZXF1ZXN0LiBJdCBzYXZlcyB0aGUgbG9nIG1lc3NhZ2UgaW4gdGhlCi0gICAgVENQIHNlcnZlcidzICdsb2dfb3V0cHV0JyBhdHRyaWJ1dGUuIiIiCi0KLSAgICBUQ1BfTE9HX0VORCA9ICIhISFFTkQhISEiCi0KLSAgICBkZWYgaGFuZGxlKHNlbGYpOgotICAgICAgICAiIiJIYW5kbGUgbXVsdGlwbGUgcmVxdWVzdHMgLSBlYWNoIGV4cGVjdGVkIHRvIGJlIG9mIDQtYnl0ZSBsZW5ndGgsCi0gICAgICAgIGZvbGxvd2VkIGJ5IHRoZSBMb2dSZWNvcmQgaW4gcGlja2xlIGZvcm1hdC4gTG9ncyB0aGUgcmVjb3JkCi0gICAgICAgIGFjY29yZGluZyB0byB3aGF0ZXZlciBwb2xpY3kgaXMgY29uZmlndXJlZCBsb2NhbGx5LiIiIgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2h1bmsgPSBzZWxmLmNvbm5lY3Rpb24ucmVjdig0KQotICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA8IDQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHNsZW4gPSBzdHJ1Y3QudW5wYWNrKCI+TCIsIGNodW5rKVswXQotICAgICAgICAgICAgY2h1bmsgPSBzZWxmLmNvbm5lY3Rpb24ucmVjdihzbGVuKQotICAgICAgICAgICAgd2hpbGUgbGVuKGNodW5rKSA8IHNsZW46Ci0gICAgICAgICAgICAgICAgY2h1bmsgPSBjaHVuayArIHNlbGYuY29ubmVjdGlvbi5yZWN2KHNsZW4gLSBsZW4oY2h1bmspKQotICAgICAgICAgICAgb2JqID0gc2VsZi51bnBpY2tsZShjaHVuaykKLSAgICAgICAgICAgIHJlY29yZCA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZChvYmopCi0gICAgICAgICAgICBzZWxmLmhhbmRsZV9sb2dfcmVjb3JkKHJlY29yZCkKLQotICAgIGRlZiB1bnBpY2tsZShzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHBpY2tsZS5sb2FkcyhkYXRhKQotCi0gICAgZGVmIGhhbmRsZV9sb2dfcmVjb3JkKHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICMgSWYgdGhlIGVuZC1vZi1tZXNzYWdlcyBzZW50aW5lbCBpcyBzZWVuLCB0ZWxsIHRoZSBzZXJ2ZXIgdG8KLSAgICAgICAgIyAgdGVybWluYXRlLgotICAgICAgICBpZiBzZWxmLlRDUF9MT0dfRU5EIGluIHJlY29yZC5tc2c6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5hYm9ydCA9IDEKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnNlcnZlci5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAiXG4iCi0KLQotY2xhc3MgTG9nUmVjb3JkU29ja2V0UmVjZWl2ZXIoVGhyZWFkaW5nVENQU2VydmVyKToKLQotICAgICIiIkEgc2ltcGxlLW1pbmRlZCBUQ1Agc29ja2V0LWJhc2VkIGxvZ2dpbmcgcmVjZWl2ZXIgc3VpdGFibGUgZm9yIHRlc3QKLSAgICBwdXJwb3Nlcy4iIiIKLQotICAgIGFsbG93X3JldXNlX2FkZHJlc3MgPSAxCi0gICAgbG9nX291dHB1dCA9ICIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdD0nbG9jYWxob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydD1sb2dnaW5nLmhhbmRsZXJzLkRFRkFVTFRfVENQX0xPR0dJTkdfUE9SVCwKLSAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI9TG9nUmVjb3JkU3RyZWFtSGFuZGxlcik6Ci0gICAgICAgIFRocmVhZGluZ1RDUFNlcnZlci5fX2luaXRfXyhzZWxmLCAoaG9zdCwgcG9ydCksIGhhbmRsZXIpCi0gICAgICAgIHNlbGYuYWJvcnQgPSBGYWxzZQotICAgICAgICBzZWxmLnRpbWVvdXQgPSAwLjEKLSAgICAgICAgc2VsZi5maW5pc2hlZCA9IHRocmVhZGluZy5FdmVudCgpCi0KLSAgICBkZWYgc2VydmVfdW50aWxfc3RvcHBlZChzZWxmKToKLSAgICAgICAgd2hpbGUgbm90IHNlbGYuYWJvcnQ6Ci0gICAgICAgICAgICByZCwgd3IsIGV4ID0gc2VsZWN0LnNlbGVjdChbc2VsZi5zb2NrZXQuZmlsZW5vKCldLCBbXSwgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRpbWVvdXQpCi0gICAgICAgICAgICBpZiByZDoKLSAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9yZXF1ZXN0KCkKLSAgICAgICAgIyBOb3RpZnkgdGhlIG1haW4gdGhyZWFkIHRoYXQgd2UncmUgYWJvdXQgdG8gZXhpdAotICAgICAgICBzZWxmLmZpbmlzaGVkLnNldCgpCi0gICAgICAgICMgY2xvc2UgdGhlIGxpc3RlbiBzb2NrZXQKLSAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2UoKQotCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBTb2NrZXRIYW5kbGVyVGVzdChCYXNlVGVzdCk6CkBAIC05NDIsNDQgKzEzNzMsMjcwIEBACiAgICAgICAgICIiIlNldCB1cCBhIFRDUCBzZXJ2ZXIgdG8gcmVjZWl2ZSBsb2cgbWVzc2FnZXMsIGFuZCBhIFNvY2tldEhhbmRsZXIKICAgICAgICAgcG9pbnRpbmcgdG8gdGhhdCBzZXJ2ZXIncyBhZGRyZXNzIGFuZCBwb3J0LiIiIgogICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQotICAgICAgICBzZWxmLnRjcHNlcnZlciA9IExvZ1JlY29yZFNvY2tldFJlY2VpdmVyKHBvcnQ9MCkKLSAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi50Y3BzZXJ2ZXIuc29ja2V0LmdldHNvY2tuYW1lKClbMV0KLSAgICAgICAgc2VsZi50aHJlYWRzID0gWwotICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYudGNwc2VydmVyLnNlcnZlX3VudGlsX3N0b3BwZWQpXQotICAgICAgICBmb3IgdGhyZWFkIGluIHNlbGYudGhyZWFkczoKLSAgICAgICAgICAgIHRocmVhZC5zdGFydCgpCi0KLSAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLlNvY2tldEhhbmRsZXIoJ2xvY2FsaG9zdCcsIHNlbGYucG9ydCkKLSAgICAgICAgc2VsZi5zb2NrX2hkbHIuc2V0Rm9ybWF0dGVyKHNlbGYucm9vdF9mb3JtYXR0ZXIpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFRDUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjAxKQorICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorICAgICAgICBzZXJ2ZXIucmVhZHkud2FpdCgpCisgICAgICAgIHNlbGYuc29ja19oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5Tb2NrZXRIYW5kbGVyKCdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCiAgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNvY2tfaGRscikKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLlNlbWFwaG9yZSgwKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAiIiJTaHV0ZG93biB0aGUgVENQIHNlcnZlci4iIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi50Y3BzZXJ2ZXIuYWJvcnQgPSBUcnVlCi0gICAgICAgICAgICBkZWwgc2VsZi50Y3BzZXJ2ZXIKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQogICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuc29ja19oZGxyKQogICAgICAgICAgICAgc2VsZi5zb2NrX2hkbHIuY2xvc2UoKQotICAgICAgICAgICAgZm9yIHRocmVhZCBpbiBzZWxmLnRocmVhZHM6Ci0gICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oMi4wKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKIAotICAgIGRlZiBnZXRfb3V0cHV0KHNlbGYpOgotICAgICAgICAiIiJHZXQgdGhlIGxvZyBvdXRwdXQgYXMgcmVjZWl2ZWQgYnkgdGhlIFRDUCBzZXJ2ZXIuIiIiCi0gICAgICAgICMgU2lnbmFsIHRoZSBUQ1AgcmVjZWl2ZXIgYW5kIHdhaXQgZm9yIGl0IHRvIHRlcm1pbmF0ZS4KLSAgICAgICAgc2VsZi5yb290X2xvZ2dlci5jcml0aWNhbChMb2dSZWNvcmRTdHJlYW1IYW5kbGVyLlRDUF9MT0dfRU5EKQotICAgICAgICBzZWxmLnRjcHNlcnZlci5maW5pc2hlZC53YWl0KDIuMCkKLSAgICAgICAgcmV0dXJuIHNlbGYudGNwc2VydmVyLmxvZ19vdXRwdXQKKyAgICBkZWYgaGFuZGxlX3NvY2tldChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgY29ubiA9IHJlcXVlc3QuY29ubmVjdGlvbgorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgY2h1bmsgPSBjb25uLnJlY3YoNCkKKyAgICAgICAgICAgIGlmIGxlbihjaHVuaykgPCA0OgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzbGVuID0gc3RydWN0LnVucGFjaygiPkwiLCBjaHVuaylbMF0KKyAgICAgICAgICAgIGNodW5rID0gY29ubi5yZWN2KHNsZW4pCisgICAgICAgICAgICB3aGlsZSBsZW4oY2h1bmspIDwgc2xlbjoKKyAgICAgICAgICAgICAgICBjaHVuayA9IGNodW5rICsgY29ubi5yZWN2KHNsZW4gLSBsZW4oY2h1bmspKQorICAgICAgICAgICAgb2JqID0gcGlja2xlLmxvYWRzKGNodW5rKQorICAgICAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKKyAgICAgICAgICAgIHNlbGYubG9nX291dHB1dCArPSByZWNvcmQubXNnICsgJ1xuJworICAgICAgICAgICAgc2VsZi5oYW5kbGVkLnJlbGVhc2UoKQogCiAgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgogICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBTb2NrZXRIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgogICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidGNwIikKICAgICAgICAgbG9nZ2VyLmVycm9yKCJzcGFtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLmFjcXVpcmUoKQogICAgICAgICBsb2dnZXIuZGVidWcoImVnZ3MiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X291dHB1dCgpLCAic3BhbVxuZWdnc1xuIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLmFjcXVpcmUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgInNwYW1cbmVnZ3NcbiIpCiAKKyAgICBkZWYgdGVzdF9ub3NlcnZlcihzZWxmKToKKyAgICAgICAgIyBLaWxsIHRoZSBzZXJ2ZXIKKyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICNUaGUgbG9nZ2luZyBjYWxsIHNob3VsZCB0cnkgdG8gY29ubmVjdCwgd2hpY2ggc2hvdWxkIGZhaWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdEZWxpYmVyYXRlIG1pc3Rha2UnKQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5leGNlcHRpb24oJ05ldmVyIHNlbnQnKQorICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmVycm9yKCdOZXZlciBzZW50LCBlaXRoZXInKQorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5zb2NrX2hkbHIucmV0cnlUaW1lID4gbm93KQorICAgICAgICB0aW1lLnNsZWVwKHNlbGYuc29ja19oZGxyLnJldHJ5VGltZSAtIG5vdyArIDAuMDAxKQorICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmVycm9yKCdOb3IgdGhpcycpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIERhdGFncmFtSGFuZGxlclRlc3QoQmFzZVRlc3QpOgorCisgICAgIiIiVGVzdCBmb3IgRGF0YWdyYW1IYW5kbGVyLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJTZXQgdXAgYSBVRFAgc2VydmVyIHRvIHJlY2VpdmUgbG9nIG1lc3NhZ2VzLCBhbmQgYSBEYXRhZ3JhbUhhbmRsZXIKKyAgICAgICAgcG9pbnRpbmcgdG8gdGhhdCBzZXJ2ZXIncyBhZGRyZXNzIGFuZCBwb3J0LiIiIgorICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBhZGRyID0gKCdsb2NhbGhvc3QnLCAwKQorICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlciA9IFRlc3RVRFBTZXJ2ZXIoYWRkciwgc2VsZi5oYW5kbGVfZGF0YWdyYW0sIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zb2NrX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLkRhdGFncmFtSGFuZGxlcignbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ID0gJycKKyAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnNvY2tfaGRscikKKyAgICAgICAgc2VsZi5oYW5kbGVkID0gdGhyZWFkaW5nLkV2ZW50KCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiU2h1dGRvd24gdGhlIFVEUCBzZXJ2ZXIuIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQorICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuc29ja19oZGxyKQorICAgICAgICAgICAgc2VsZi5zb2NrX2hkbHIuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgQmFzZVRlc3QudGVhckRvd24oc2VsZikKKworICAgIGRlZiBoYW5kbGVfZGF0YWdyYW0oc2VsZiwgcmVxdWVzdCk6CisgICAgICAgIHNsZW4gPSBzdHJ1Y3QucGFjaygnPkwnLCAwKSAjIGxlbmd0aCBvZiBwcmVmaXgKKyAgICAgICAgcGFja2V0ID0gcmVxdWVzdC5wYWNrZXRbbGVuKHNsZW4pOl0KKyAgICAgICAgb2JqID0gcGlja2xlLmxvYWRzKHBhY2tldCkKKyAgICAgICAgcmVjb3JkID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKG9iaikKKyAgICAgICAgc2VsZi5sb2dfb3V0cHV0ICs9IHJlY29yZC5tc2cgKyAnXG4nCisgICAgICAgIHNlbGYuaGFuZGxlZC5zZXQoKQorCisgICAgZGVmIHRlc3Rfb3V0cHV0KHNlbGYpOgorICAgICAgICAjIFRoZSBsb2cgbWVzc2FnZSBzZW50IHRvIHRoZSBEYXRhZ3JhbUhhbmRsZXIgaXMgcHJvcGVybHkgcmVjZWl2ZWQuCisgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ1ZHAiKQorICAgICAgICBsb2dnZXIuZXJyb3IoInNwYW0iKQorICAgICAgICBzZWxmLmhhbmRsZWQud2FpdCgpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIGxvZ2dlci5lcnJvcigiZWdncyIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvZ19vdXRwdXQsICJzcGFtXG5lZ2dzXG4iKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTeXNMb2dIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisKKyAgICAiIiJUZXN0IGZvciBTeXNMb2dIYW5kbGVyIHVzaW5nIFVEUC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiU2V0IHVwIGEgVURQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgU3lzTG9nSGFuZGxlcgorICAgICAgICBwb2ludGluZyB0byB0aGF0IHNlcnZlcidzIGFkZHJlc3MgYW5kIHBvcnQuIiIiCisgICAgICAgIEJhc2VUZXN0LnNldFVwKHNlbGYpCisgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VydmVyID0gVGVzdFVEUFNlcnZlcihhZGRyLCBzZWxmLmhhbmRsZV9kYXRhZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMDEpCisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgIHNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5zbF9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5TeXNMb2dIYW5kbGVyKCgnbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucG9ydCkpCisgICAgICAgIHNlbGYubG9nX291dHB1dCA9ICcnCisgICAgICAgIHNlbGYucm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLnJvb3RfbG9nZ2VyLmhhbmRsZXJzWzBdKQorICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5zbF9oZGxyKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAiIiJTaHV0ZG93biB0aGUgVURQIHNlcnZlci4iIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgyLjApCisgICAgICAgICAgICBzZWxmLnJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5zbF9oZGxyKQorICAgICAgICAgICAgc2VsZi5zbF9oZGxyLmNsb3NlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIEJhc2VUZXN0LnRlYXJEb3duKHNlbGYpCisKKyAgICBkZWYgaGFuZGxlX2RhdGFncmFtKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBzZWxmLmxvZ19vdXRwdXQgPSByZXF1ZXN0LnBhY2tldAorICAgICAgICBzZWxmLmhhbmRsZWQuc2V0KCkKKworICAgIGRlZiB0ZXN0X291dHB1dChzZWxmKToKKyAgICAgICAgIyBUaGUgbG9nIG1lc3NhZ2Ugc2VudCB0byB0aGUgU3lzTG9nSGFuZGxlciBpcyBwcm9wZXJseSByZWNlaXZlZC4KKyAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInNsaCIpCisgICAgICAgIGxvZ2dlci5lcnJvcigic3BceGU0bSIpCisgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvZ19vdXRwdXQsIGInPDExPnNwXHhjM1x4YTRtXHgwMCcpCisgICAgICAgIHNlbGYuaGFuZGxlZC5jbGVhcigpCisgICAgICAgIHNlbGYuc2xfaGRsci5hcHBlbmRfbnVsID0gRmFsc2UKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+c3BceGMzXHhhNG0nKQorICAgICAgICBzZWxmLmhhbmRsZWQuY2xlYXIoKQorICAgICAgICBzZWxmLnNsX2hkbHIuaWRlbnQgPSAiaFx4ZTRtLSIKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJzcFx4ZTRtIikKKyAgICAgICAgc2VsZi5oYW5kbGVkLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX291dHB1dCwgYic8MTE+aFx4YzNceGE0bS1zcFx4YzNceGE0bScpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIEhUVFBIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgIiIiVGVzdCBmb3IgSFRUUEhhbmRsZXIuIiIiCisKKyAgICBQRU1GSUxFID0gIiIiLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorTUlJQ1hRSUJBQUtCZ1FER1Q0eFM1cjkxcmJMSlFLMm5VRGVuQmhCRzZxRmsrYlZPanVBR0MvTFNIbEFvQm52RworelFHM2FnT0crZTdjNXoyWFQ4bTJrdE9STHFHM0U0bVltYnhneWhEcnpQNmVpMkFuYytwc3ptbnhQb0szUHVoNQorYVhWK1hLdDBiVTBDMW0yK0FDbUdHSjB0M1A0MDhhcnQ4Mm5PeEJ3OFpIZ0lnOUR0cDZ4SVVDeU9xd0lEQVFBQgorQW9HQkFKRlRuRmJvYUtoNWVVckl6am1OcktzRzQ0akV5eSt2V3ZITi9GZ1NDNGwxMDNIeGhtV2l1TDVMdjNmNworMHRNcDF0WDdENnh2SHdJRzlWV3Z5S2IvQ3E5ckpzRGlibURWSU9zbG5PV2VRaEcrWHdKeWl0UjBwcS9LbEpJQgorNUxqT1JjQnc3OTVvS1dPQWk2UmNPYjFPTjU5dHlzRUZZaEFHUU85azZWTDYyMWdSQWtFQS9HYitZWFVMTHBicworcGlYTjNxNHpjSHplYVZBTm82OXRVWjZUamFRcU1lVHhFNHRPWU0wRzBab1NlSEVkYVA1OUFPWkdLWFhOR1NReQorMnovTWRkY1lHUUpCQU1rakxTWUlwT0xKWTExamE4T3d3c3dGRzJoRXpIZTBjUzliem8rK1IvamMxYkhBNVIwWQoraTZ2QTVpUGkrd29wUEZ2cHl0ZEJvbDdVdUVCZTV4WnJ4V01DUVFDV3hFTFJIaVAyeVdwRWVMSjNnR0R6b1hNTgorUHlkV2poUmp1N0J4M0F6a1R0ZitENmxhd3oxK2VHVHVFc3M1aTBKS0JrTUV3dnduTjJzMWNlK0V1RjRKQWtCYgorRTk2aDFsQXprVlc1T0FmWU9QWThSQ1BBOTBaTy9ob3lnN1BwU3hSMEVDdURyZ0VSUjhnWEllWVVZZmVqQmtFYQorcmFiNENmUm9WSktLTTI4WXEveFpBa0J2dXE2NzBKUkN3T2dmVVRkd3c3V3BkT1FCWVBrelFjY3NLTkNzbFFXOAorL0R5VzZ5MDZvUXVzU0VOVXZ5blQ2ZHIzTEp4dC9OZ1pQaFpYMitrMWVZRFYKKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUNHekNDQVlTZ0F3SUJBZ0lKQUlxODRhMlEvT3ZsTUEwR0NTcUdTSWIzRFFFQkJRVUFNQlF4RWpBUUJnTlYKK0JBTVRDV3h2WTJGc2FHOXpkREFlRncweE1UQTFNakV4TURJek16TmFGdzAzTlRBek1qRXdNelUxTVRkYU1CUXgKK0VqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUEKK3hrK01VdWEvZGEyeXlVQ3RwMUEzcHdZUVJ1cWhaUG0xVG83Z0JndnkwaDVRS0FaN3hzMEJ0Mm9EaHZudTNPYzkKK2wwL0p0cExUa1M2aHR4T0ptSm04WU1vUTY4eitub3RnSjNQcWJNNXA4VDZDdHo3b2VXbDFmbHlyZEcxTkF0WnQKK3ZnQXBoaGlkTGR6K05QR3E3Zk5wenNRY1BHUjRDSVBRN2Flc1NGQXNqcXNDQXdFQUFhTjFNSE13SFFZRFZSME8KK0JCWUVGTFdhVVBPNk43ZWZHaXVvUzlpM0RWWWNVd24wTUVRR0ExVWRJd1E5TUR1QUZMV2FVUE82TjdlZkdpdW8KK1M5aTNEVlljVXduMG9SaWtGakFVTVJJd0VBWURWUVFERXdsc2IyTmhiR2h2YzNTQ0NRQ0t2T0d0a1B6cjVUQU0KK0JnTlZIUk1FQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBTUs1d2hQakxOUUsxSXZ2azg4b3FKcXEKKzRmODg5T3dpa0dQMGVVaE9CaGJGbHNacytqcTVZWkMyVXpIeitldnpLQmxnQVAxdTRsUC9jQjg1Q25qdldxTSsKKzFjL2x5d0ZIUTZIT2REZVExTDcydFNZTXJOT0c0WE5tTG4waDdyeDZHb1RVN2RjRlJmc2VhaEJDcThtdjBJRHQKK0lSYlRwdmxIV1Bqc1N2SHowWk9ICistLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIlNldCB1cCBhbiBIVFRQIHNlcnZlciB0byByZWNlaXZlIGxvZyBtZXNzYWdlcywgYW5kIGEgSFRUUEhhbmRsZXIKKyAgICAgICAgcG9pbnRpbmcgdG8gdGhhdCBzZXJ2ZXIncyBhZGRyZXNzIGFuZCBwb3J0LiIiIgorICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQorICAgICAgICBzZWxmLmhhbmRsZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorCisgICAgZGVmIGhhbmRsZV9yZXF1ZXN0KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICBzZWxmLmNvbW1hbmQgPSByZXF1ZXN0LmNvbW1hbmQKKyAgICAgICAgc2VsZi5sb2dfZGF0YSA9IHVybHBhcnNlKHJlcXVlc3QucGF0aCkKKyAgICAgICAgaWYgc2VsZi5jb21tYW5kID09ICdQT1NUJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBybGVuID0gaW50KHJlcXVlc3QuaGVhZGVyc1snQ29udGVudC1MZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBzZWxmLnBvc3RfZGF0YSA9IHJlcXVlc3QucmZpbGUucmVhZChybGVuKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHNlbGYucG9zdF9kYXRhID0gTm9uZQorICAgICAgICByZXF1ZXN0LnNlbmRfcmVzcG9uc2UoMjAwKQorICAgICAgICByZXF1ZXN0LmVuZF9oZWFkZXJzKCkKKyAgICAgICAgc2VsZi5oYW5kbGVkLnNldCgpCisKKyAgICBkZWYgdGVzdF9vdXRwdXQoc2VsZik6CisgICAgICAgICMgVGhlIGxvZyBtZXNzYWdlIHNlbnQgdG8gdGhlIEhUVFBIYW5kbGVyIGlzIHByb3Blcmx5IHJlY2VpdmVkLgorICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaHR0cCIpCisgICAgICAgIHJvb3RfbG9nZ2VyID0gc2VsZi5yb290X2xvZ2dlcgorICAgICAgICByb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYucm9vdF9sb2dnZXIuaGFuZGxlcnNbMF0pCisgICAgICAgIGZvciBzZWN1cmUgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGFkZHIgPSAoJ2xvY2FsaG9zdCcsIDApCisgICAgICAgICAgICBpZiBzZWN1cmU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgc3NsCisgICAgICAgICAgICAgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICAgICAgICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuUEVNRklMRSkKKyAgICAgICAgICAgICAgICAgICAgc3NsY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgICAgICAgICAgc3NsY3R4LmxvYWRfY2VydF9jaGFpbihmbikKKyAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc3NsY3R4ID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzc2xjdHggPSBOb25lCisgICAgICAgICAgICBzZWxmLnNlcnZlciA9IHNlcnZlciA9IFRlc3RIVFRQU2VydmVyKGFkZHIsIHNlbGYuaGFuZGxlX3JlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wMSwgc3NsY3R4PXNzbGN0eCkKKyAgICAgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgICAgICAgICBzZXJ2ZXIucmVhZHkud2FpdCgpCisgICAgICAgICAgICBob3N0ID0gJ2xvY2FsaG9zdDolZCcgJSBzZXJ2ZXIuc2VydmVyX3BvcnQKKyAgICAgICAgICAgIHNlY3VyZV9jbGllbnQgPSBzZWN1cmUgYW5kIHNzbGN0eAorICAgICAgICAgICAgc2VsZi5oX2hkbHIgPSBsb2dnaW5nLmhhbmRsZXJzLkhUVFBIYW5kbGVyKGhvc3QsICcvZnJvYicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJlPXNlY3VyZV9jbGllbnQpCisgICAgICAgICAgICBzZWxmLmxvZ19kYXRhID0gTm9uZQorICAgICAgICAgICAgcm9vdF9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLmhfaGRscikKKworICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ0dFVCcsICdQT1NUJyk6CisgICAgICAgICAgICAgICAgc2VsZi5oX2hkbHIubWV0aG9kID0gbWV0aG9kCisgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVkLmNsZWFyKCkKKyAgICAgICAgICAgICAgICBtc2cgPSAic3BceGU0bSIKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IobXNnKQorICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlZC53YWl0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9nX2RhdGEucGF0aCwgJy9mcm9iJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tbWFuZCwgbWV0aG9kKQorICAgICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAnR0VUJzoKKyAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlX3FzKHNlbGYubG9nX2RhdGEucXVlcnkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZCA9IHBhcnNlX3FzKHNlbGYucG9zdF9kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbJ25hbWUnXSwgWydodHRwJ10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydmdW5jTmFtZSddLCBbJ3Rlc3Rfb3V0cHV0J10pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWydtc2cnXSwgW21zZ10pCisKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoMi4wKQorICAgICAgICAgICAgc2VsZi5yb290X2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuaF9oZGxyKQorICAgICAgICAgICAgc2VsZi5oX2hkbHIuY2xvc2UoKQogCiBjbGFzcyBNZW1vcnlUZXN0KEJhc2VUZXN0KToKIApAQCAtMTA4NywyOCArMTc0NCwzOSBAQAogICAgIGRlZiB0ZXN0X3dhcm5pbmdzKHNlbGYpOgogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICBsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncyhUcnVlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJhbHdheXMiLCBjYXRlZ29yeT1Vc2VyV2FybmluZykKLSAgICAgICAgICAgICAgICBmaWxlID0gaW8uU3RyaW5nSU8oKQotICAgICAgICAgICAgICAgIGggPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoZmlsZSkKLSAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicHkud2FybmluZ3MiKQotICAgICAgICAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGgpCi0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiSSdtIHdhcm5pbmcgeW91Li4uIikKLSAgICAgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoKQotICAgICAgICAgICAgICAgIHMgPSBmaWxlLmdldHZhbHVlKCkKLSAgICAgICAgICAgICAgICBoLmNsb3NlKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5maW5kKCJVc2VyV2FybmluZzogSSdtIHdhcm5pbmcgeW91Li4uXG4iKSA+IDApCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5jYXB0dXJlV2FybmluZ3MsIEZhbHNlKQorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQorICAgICAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgaCA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW0pCisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicHkud2FybmluZ3MiKQorICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaCkKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkknbSB3YXJuaW5nIHlvdS4uLiIpCisgICAgICAgICAgICBsb2dnZXIucmVtb3ZlSGFuZGxlcihoKQorICAgICAgICAgICAgcyA9IHN0cmVhbS5nZXR2YWx1ZSgpCisgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmZpbmQoIlVzZXJXYXJuaW5nOiBJJ20gd2FybmluZyB5b3UuLi5cbiIpID4gMCkKIAotICAgICAgICAgICAgICAgICNTZWUgaWYgYW4gZXhwbGljaXQgZmlsZSB1c2VzIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbgotICAgICAgICAgICAgICAgIGZpbGUgPSBpby5TdHJpbmdJTygpCi0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2hvd3dhcm5pbmcoIkV4cGxpY2l0IiwgVXNlcldhcm5pbmcsICJkdW1teS5weSIsIDQyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsICJEdW1teSBsaW5lIikKLSAgICAgICAgICAgICAgICBzID0gZmlsZS5nZXR2YWx1ZSgpCi0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAotICAgICAgICAgICAgICAgICAgICAgICAgImR1bW15LnB5OjQyOiBVc2VyV2FybmluZzogRXhwbGljaXRcbiAgRHVtbXkgbGluZVxuIikKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5jYXB0dXJlV2FybmluZ3MoRmFsc2UpCisgICAgICAgICAgICAjU2VlIGlmIGFuIGV4cGxpY2l0IGZpbGUgdXNlcyB0aGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgIGFfZmlsZSA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgICAgIHdhcm5pbmdzLnNob3d3YXJuaW5nKCJFeHBsaWNpdCIsIFVzZXJXYXJuaW5nLCAiZHVtbXkucHkiLCA0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfZmlsZSwgIkR1bW15IGxpbmUiKQorICAgICAgICAgICAgcyA9IGFfZmlsZS5nZXR2YWx1ZSgpCisgICAgICAgICAgICBhX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLAorICAgICAgICAgICAgICAgICJkdW1teS5weTo0MjogVXNlcldhcm5pbmc6IEV4cGxpY2l0XG4gIER1bW15IGxpbmVcbiIpCisKKyAgICBkZWYgdGVzdF93YXJuaW5nc19ub19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgbG9nZ2luZy5jYXB0dXJlV2FybmluZ3MoVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmNhcHR1cmVXYXJuaW5ncywgRmFsc2UpCisKKyAgICAgICAgICAgICMgY29uZmlybSBvdXIgYXNzdW1wdGlvbjogbm8gbG9nZ2VycyBhcmUgc2V0CisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigicHkud2FybmluZ3MiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnZXIuaGFuZGxlcnMsIFtdKQorCisgICAgICAgICAgICB3YXJuaW5ncy5zaG93d2FybmluZygiRXhwbGljaXQiLCBVc2VyV2FybmluZywgImR1bW15LnB5IiwgNDIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnZXIuaGFuZGxlcnMpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGxvZ2dlci5oYW5kbGVyc1swXSwgbG9nZ2luZy5OdWxsSGFuZGxlcikKIAogCiBkZWYgZm9ybWF0RnVuYyhmb3JtYXQsIGRhdGVmbXQ9Tm9uZSk6CkBAIC0xOTYxLDYgKzI2MjksNyBAQAogICAgICAgICAgICAgbG9nZ2luZy5jb25maWcuc3RvcExpc3RlbmluZygpCiAgICAgICAgICAgICB0LmpvaW4oMi4wKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9saXN0ZW5fY29uZmlnXzEwX29rKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKGpzb24uZHVtcHMoc2VsZi5jb25maWcxMCkpCkBAIC0xOTgwLDYgKzI2NDksNyBAQAogICAgICAgICAgICAgICAgICgnRVJST1InLCAnNCcpLAogICAgICAgICAgICAgXSwgc3RyZWFtPW91dHB1dCkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfbGlzdGVuX2NvbmZpZ18xX29rKHNlbGYpOgogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdmlhX2xpc3RlbmVyKHRleHR3cmFwLmRlZGVudChDb25maWdGaWxlVGVzdC5jb25maWcxKSkKQEAgLTE5OTQsNiArMjY2NCwyNyBAQAogICAgICAgICAgICAgIyBPcmlnaW5hbCBsb2dnZXIgb3V0cHV0IGlzIGVtcHR5LgogICAgICAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKFtdKQogCisgICAgZGVmIHRlc3RfYmFzZWNvbmZpZyhzZWxmKToKKyAgICAgICAgZCA9IHsKKyAgICAgICAgICAgICdhdHVwbGUnOiAoMSwgMiwgMyksCisgICAgICAgICAgICAnYWxpc3QnOiBbJ2EnLCAnYicsICdjJ10sCisgICAgICAgICAgICAnYWRpY3QnOiB7J2QnOiAnZScsICdmJzogMyB9LAorICAgICAgICAgICAgJ25lc3QxJzogKCdnJywgKCdoJywgJ2knKSwgJ2onKSwKKyAgICAgICAgICAgICduZXN0Mic6IFsnaycsIFsnbCcsICdtJ10sICduJ10sCisgICAgICAgICAgICAnbmVzdDMnOiBbJ28nLCAnY2ZnOi8vYWxpc3QnLCAncCddLAorICAgICAgICB9CisgICAgICAgIGJjID0gbG9nZ2luZy5jb25maWcuQmFzZUNvbmZpZ3VyYXRvcihkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2F0dXBsZVsxXScpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2FsaXN0WzFdJyksICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MVsxXVswXScpLCAnaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmMuY29udmVydCgnY2ZnOi8vbmVzdDJbMV1bMV0nKSwgJ20nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2FkaWN0LmQnKSwgJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJjLmNvbnZlcnQoJ2NmZzovL2FkaWN0W2ZdJyksIDMpCisgICAgICAgIHYgPSBiYy5jb252ZXJ0KCdjZmc6Ly9uZXN0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5wb3AoMSksIFsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIGJjLmNvbnZlcnQsICdjZmc6Ly9ub3N1Y2gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBiYy5jb252ZXJ0LCAnY2ZnOi8vIScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBiYy5jb252ZXJ0LCAnY2ZnOi8vYWRpY3RbMl0nKQogCiBjbGFzcyBNYW5hZ2VyVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfbWFuYWdlcl9sb2dnZXJjbGFzcyhzZWxmKToKQEAgLTIwMTIsNiArMjcwMywxMSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2VkLCBbJ3Nob3VsZCBhcHBlYXIgaW4gbG9nZ2VkJ10pCiAKKyAgICBkZWYgdGVzdF9zZXRfbG9nX3JlY29yZF9mYWN0b3J5KHNlbGYpOgorICAgICAgICBtYW4gPSBsb2dnaW5nLk1hbmFnZXIoTm9uZSkKKyAgICAgICAgZXhwZWN0ZWQgPSBvYmplY3QoKQorICAgICAgICBtYW4uc2V0TG9nUmVjb3JkRmFjdG9yeShleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW4ubG9nUmVjb3JkRmFjdG9yeSwgZXhwZWN0ZWQpCiAKIGNsYXNzIENoaWxkTG9nZ2VyVGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfY2hpbGRfbG9nZ2VycyhzZWxmKToKQEAgLTIxMTMsNiArMjgwOSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5FUlJPUiwgbWVzc2FnZT0nMicpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFuZGxlci5tYXRjaGVzKGxldmVsbm89bG9nZ2luZy5DUklUSUNBTCwgbWVzc2FnZT0nMycpKQogCitaRVJPID0gZGF0ZXRpbWUudGltZWRlbHRhKDApCisKK2NsYXNzIFVUQyhkYXRldGltZS50emluZm8pOgorICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgorICAgICAgICByZXR1cm4gWkVSTworCisgICAgZHN0ID0gdXRjb2Zmc2V0CisKKyAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKKyAgICAgICAgcmV0dXJuICdVVEMnCisKK3V0YyA9IFVUQygpCiAKIGNsYXNzIEZvcm1hdHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTIxODYsNiArMjg5NCw3MSBAQAogICAgICAgICBmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJ2FzY3RpbWUnLCBzdHlsZT0nJCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi51c2VzVGltZSgpKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF9zdHlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5Gb3JtYXR0ZXIsIE5vbmUsIE5vbmUsICd4JykKKworICAgIGRlZiB0ZXN0X3RpbWUoc2VsZik6CisgICAgICAgIHIgPSBzZWxmLmdldF9yZWNvcmQoKQorICAgICAgICBkdCA9IGRhdGV0aW1lLmRhdGV0aW1lKDE5OTMsIDQsIDIxLCA4LCAzLCAwLCAwLCB1dGMpCisgICAgICAgICMgV2UgdXNlIE5vbmUgdG8gaW5kaWNhdGUgd2Ugd2FudCB0aGUgbG9jYWwgdGltZXpvbmUKKyAgICAgICAgIyBXZSdyZSBlc3NlbnRpYWxseSBjb252ZXJ0aW5nIGEgVVRDIHRpbWUgdG8gbG9jYWwgdGltZQorICAgICAgICByLmNyZWF0ZWQgPSB0aW1lLm1rdGltZShkdC5hc3RpbWV6b25lKE5vbmUpLnRpbWV0dXBsZSgpKQorICAgICAgICByLm1zZWNzID0gMTIzCisgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgJShtZXNzYWdlKXMnKQorICAgICAgICBmLmNvbnZlcnRlciA9IHRpbWUuZ210aW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mb3JtYXRUaW1lKHIpLCAnMTk5My0wNC0yMSAwODowMzowMCwxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZm9ybWF0VGltZShyLCAnJVk6JWQnKSwgJzE5OTM6MjEnKQorICAgICAgICBmLmZvcm1hdChyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIuYXNjdGltZSwgJzE5OTMtMDQtMjEgMDg6MDM6MDAsMTIzJykKKworY2xhc3MgVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcihsb2dnaW5nLkJ1ZmZlcmluZ0Zvcm1hdHRlcik6CisgICAgZGVmIGZvcm1hdEhlYWRlcihzZWxmLCByZWNvcmRzKToKKyAgICAgICAgcmV0dXJuICdbKCVkKScgJSBsZW4ocmVjb3JkcykKKworICAgIGRlZiBmb3JtYXRGb290ZXIoc2VsZiwgcmVjb3Jkcyk6CisgICAgICAgIHJldHVybiAnKCVkKV0nICUgbGVuKHJlY29yZHMpCisKK2NsYXNzIEJ1ZmZlcmluZ0Zvcm1hdHRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZWNvcmRzID0gWworICAgICAgICAgICAgbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ29uZSd9KSwKKyAgICAgICAgICAgIGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0d28nfSksCisgICAgICAgIF0KKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIGYgPSBsb2dnaW5nLkJ1ZmZlcmluZ0Zvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGYuZm9ybWF0KFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnb25ldHdvJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKworICAgIGRlZiB0ZXN0X2N1c3RvbShzZWxmKToKKyAgICAgICAgZiA9IFRlc3RCdWZmZXJpbmdGb3JtYXR0ZXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdbKDIpb25ldHdvKDIpXScsIGYuZm9ybWF0KHNlbGYucmVjb3JkcykpCisgICAgICAgIGxmID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJzwlKG1lc3NhZ2Upcz4nKQorICAgICAgICBmID0gVGVzdEJ1ZmZlcmluZ0Zvcm1hdHRlcihsZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWygyKTxvbmU+PHR3bz4oMildJywgZi5mb3JtYXQoc2VsZi5yZWNvcmRzKSkKKworY2xhc3MgRXhjZXB0aW9uVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfZm9ybWF0dGluZyhzZWxmKToKKyAgICAgICAgciA9IHNlbGYucm9vdF9sb2dnZXIKKyAgICAgICAgaCA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICByLmFkZEhhbmRsZXIoaCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdkZWxpYmVyYXRlIG1pc3Rha2UnKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBsb2dnaW5nLmV4Y2VwdGlvbignZmFpbGVkJywgc3RhY2tfaW5mbz1UcnVlKQorICAgICAgICByLnJlbW92ZUhhbmRsZXIoaCkKKyAgICAgICAgaC5jbG9zZSgpCisgICAgICAgIHIgPSBoLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuZXhjX3RleHQuc3RhcnRzd2l0aCgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwgbGFzdCk6XG4nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuZXhjX3RleHQuZW5kc3dpdGgoJ1xuUnVudGltZUVycm9yOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxpYmVyYXRlIG1pc3Rha2UnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhY2tfaW5mby5zdGFydHN3aXRoKCdTdGFjayAobW9zdCByZWNlbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYWxsIGxhc3QpOlxuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YWNrX2luZm8uZW5kc3dpdGgoJ2xvZ2dpbmcuZXhjZXB0aW9uKFwnZmFpbGVkXCcsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YWNrX2luZm89VHJ1ZSknKSkKKworCiBjbGFzcyBMYXN0UmVzb3J0VGVzdChCYXNlVGVzdCk6CiAgICAgZGVmIHRlc3RfbGFzdF9yZXNvcnQoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGUgbGFzdCByZXNvcnQgaGFuZGxlcgpAQCAtMjE5Niw2ICsyOTY5LDggQEAKICAgICAgICAgb2xkX3JhaXNlX2V4Y2VwdGlvbnMgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucwogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzeXMuc3RkZXJyID0gc2lvID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgICAgcm9vdC5kZWJ1ZygnVGhpcyBzaG91bGQgbm90IGFwcGVhcicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpby5nZXR2YWx1ZSgpLCAnJykKICAgICAgICAgICAgIHJvb3Qud2FybmluZygnVGhpcyBpcyB5b3VyIGZpbmFsIGNoYW5jZSEnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaW8uZ2V0dmFsdWUoKSwgJ1RoaXMgaXMgeW91ciBmaW5hbCBjaGFuY2UhXG4nKQogICAgICAgICAgICAgI05vIGhhbmRsZXJzIGFuZCBubyBsYXN0IHJlc29ydCwgc28gJ05vIGhhbmRsZXJzJyBtZXNzYWdlCkBAIC0yMjIwLDYgKzI5OTUsNTg2IEBACiAgICAgICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IG9sZF9yYWlzZV9leGNlcHRpb25zCiAKIAorY2xhc3MgRmFrZUhhbmRsZXI6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaWRlbnRpZmllciwgY2FsbGVkKToKKyAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ2FjcXVpcmUnLCAnZmx1c2gnLCAnY2xvc2UnLCAncmVsZWFzZScpOgorICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBtZXRob2QsIHNlbGYucmVjb3JkX2NhbGwoaWRlbnRpZmllciwgbWV0aG9kLCBjYWxsZWQpKQorCisgICAgZGVmIHJlY29yZF9jYWxsKHNlbGYsIGlkZW50aWZpZXIsIG1ldGhvZF9uYW1lLCBjYWxsZWQpOgorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIGNhbGxlZC5hcHBlbmQoJ3t9IC0ge30nLmZvcm1hdChpZGVudGlmaWVyLCBtZXRob2RfbmFtZSkpCisgICAgICAgIHJldHVybiBpbm5lcgorCisKK2NsYXNzIFJlY29yZGluZ0hhbmRsZXIobG9nZ2luZy5OdWxsSGFuZGxlcik6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoUmVjb3JkaW5nSGFuZGxlciwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzZWxmLnJlY29yZHMgPSBbXQorCisgICAgZGVmIGhhbmRsZShzZWxmLCByZWNvcmQpOgorICAgICAgICAiIiJLZWVwIHRyYWNrIG9mIGFsbCB0aGUgZW1pdHRlZCByZWNvcmRzLiIiIgorICAgICAgICBzZWxmLnJlY29yZHMuYXBwZW5kKHJlY29yZCkKKworCitjbGFzcyBTaHV0ZG93blRlc3QoQmFzZVRlc3QpOgorCisgICAgIiIiVGVzdCBzdWl0ZSBmb3IgdGhlIHNodXRkb3duIG1ldGhvZC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoU2h1dGRvd25UZXN0LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYuY2FsbGVkID0gW10KKworICAgICAgICByYWlzZV9leGNlcHRpb25zID0gbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIGxvZ2dpbmcsICdyYWlzZUV4Y2VwdGlvbnMnLCByYWlzZV9leGNlcHRpb25zKQorCisgICAgZGVmIHJhaXNlX2Vycm9yKHNlbGYsIGVycm9yKToKKyAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICByYWlzZSBlcnJvcigpCisgICAgICAgIHJldHVybiBpbm5lcgorCisgICAgZGVmIHRlc3Rfbm9fZmFpbHVyZShzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgc29tZSBmYWtlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXIwID0gRmFrZUhhbmRsZXIoMCwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIxID0gRmFrZUhhbmRsZXIoMSwgc2VsZi5jYWxsZWQpCisgICAgICAgIGhhbmRsZXIyID0gRmFrZUhhbmRsZXIoMiwgc2VsZi5jYWxsZWQpCisKKyAgICAgICAgIyBjcmVhdGUgbGl2ZSB3ZWFrcmVmIHRvIHRob3NlIGhhbmRsZXJzCisgICAgICAgIGhhbmRsZXJzID0gbWFwKGxvZ2dpbmcud2Vha3JlZi5yZWYsIFtoYW5kbGVyMCwgaGFuZGxlcjEsIGhhbmRsZXIyXSkKKworICAgICAgICBsb2dnaW5nLnNodXRkb3duKGhhbmRsZXJMaXN0PWxpc3QoaGFuZGxlcnMpKQorCisgICAgICAgIGV4cGVjdGVkID0gWycyIC0gYWNxdWlyZScsICcyIC0gZmx1c2gnLCAnMiAtIGNsb3NlJywgJzIgLSByZWxlYXNlJywKKyAgICAgICAgICAgICAgICAgICAgJzEgLSBhY3F1aXJlJywgJzEgLSBmbHVzaCcsICcxIC0gY2xvc2UnLCAnMSAtIHJlbGVhc2UnLAorICAgICAgICAgICAgICAgICAgICAnMCAtIGFjcXVpcmUnLCAnMCAtIGZsdXNoJywgJzAgLSBjbG9zZScsICcwIC0gcmVsZWFzZSddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHNlbGYuY2FsbGVkKQorCisgICAgZGVmIF90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2Qoc2VsZiwgbWV0aG9kLCBlcnJvcik6CisgICAgICAgIGhhbmRsZXIgPSBGYWtlSGFuZGxlcigwLCBzZWxmLmNhbGxlZCkKKyAgICAgICAgc2V0YXR0cihoYW5kbGVyLCBtZXRob2QsIHNlbGYucmFpc2VfZXJyb3IoZXJyb3IpKQorICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLndlYWtyZWYucmVmKGhhbmRsZXIpXQorCisgICAgICAgIGxvZ2dpbmcuc2h1dGRvd24oaGFuZGxlckxpc3Q9bGlzdChoYW5kbGVycykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMCAtIHJlbGVhc2UnLCBzZWxmLmNhbGxlZFstMV0pCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fYWNxdWlyZShzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdhY3F1aXJlJywgSU9FcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfaW9lcnJvcl9pbl9mbHVzaChzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIElPRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX2lvZXJyb3JfaW5fY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnY2xvc2UnLCBJT0Vycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2FjcXVpcmUoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIFZhbHVlRXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX3ZhbHVlZXJyb3JfaW5fZmx1c2goc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnZmx1c2gnLCBWYWx1ZUVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF92YWx1ZWVycm9yX2luX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X3dpdGhfZmFpbHVyZV9pbl9tZXRob2QoJ2Nsb3NlJywgVmFsdWVFcnJvcikKKworICAgIGRlZiB0ZXN0X3dpdGhfb3RoZXJfZXJyb3JfaW5fYWNxdWlyZV93aXRob3V0X3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IEZhbHNlCisgICAgICAgIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCgnYWNxdWlyZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2ZsdXNoX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdmbHVzaCcsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2Nsb3NlX3dpdGhvdXRfcmFpc2Uoc2VsZik6CisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kKCdjbG9zZScsIEluZGV4RXJyb3IpCisKKyAgICBkZWYgdGVzdF93aXRoX290aGVyX2Vycm9yX2luX2FjcXVpcmVfd2l0aF9yYWlzZShzZWxmKToKKyAgICAgICAgbG9nZ2luZy5yYWlzZUV4Y2VwdGlvbnMgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIHNlbGYuX3Rlc3Rfd2l0aF9mYWlsdXJlX2luX21ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjcXVpcmUnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9mbHVzaF93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnZmx1c2gnLCBJbmRleEVycm9yKQorCisgICAgZGVmIHRlc3Rfd2l0aF9vdGhlcl9lcnJvcl9pbl9jbG9zZV93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgc2VsZi5fdGVzdF93aXRoX2ZhaWx1cmVfaW5fbWV0aG9kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnY2xvc2UnLCBJbmRleEVycm9yKQorCisKK2NsYXNzIE1vZHVsZUxldmVsTWlzY1Rlc3QoQmFzZVRlc3QpOgorCisgICAgIiIiVGVzdCBzdWl0ZSBmb3Igc29tZSBtb2R1bGUgbGV2ZWwgbWV0aG9kcy4iIiIKKworICAgIGRlZiB0ZXN0X2Rpc2FibGUoc2VsZik6CisgICAgICAgIG9sZF9kaXNhYmxlID0gbG9nZ2luZy5yb290Lm1hbmFnZXIuZGlzYWJsZQorICAgICAgICAjIGNvbmZpcm0gb3VyIGFzc3VtcHRpb25zIGFyZSBjb3JyZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2xkX2Rpc2FibGUsIDApCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLmRpc2FibGUsIG9sZF9kaXNhYmxlKQorCisgICAgICAgIGxvZ2dpbmcuZGlzYWJsZSg4MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubWFuYWdlci5kaXNhYmxlLCA4MykKKworICAgIGRlZiBfdGVzdF9sb2coc2VsZiwgbWV0aG9kLCBsZXZlbD1Ob25lKToKKyAgICAgICAgY2FsbGVkID0gW10KKyAgICAgICAgcGF0Y2goc2VsZiwgbG9nZ2luZywgJ2Jhc2ljQ29uZmlnJywKKyAgICAgICAgICAgICAgbGFtYmRhICphLCAqKmt3OiBjYWxsZWQuYXBwZW5kKChhLCBrdykpKQorCisgICAgICAgIHJlY29yZGluZyA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICBsb2dnaW5nLnJvb3QuYWRkSGFuZGxlcihyZWNvcmRpbmcpCisKKyAgICAgICAgbG9nX21ldGhvZCA9IGdldGF0dHIobG9nZ2luZywgbWV0aG9kKQorICAgICAgICBpZiBsZXZlbCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvZ19tZXRob2QobGV2ZWwsICJ0ZXN0IG1lOiAlciIsIHJlY29yZGluZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvZ19tZXRob2QoInRlc3QgbWU6ICVyIiwgcmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gcmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuZ2V0TWVzc2FnZSgpLCAidGVzdCBtZTogJXIiICUgcmVjb3JkaW5nKQorCisgICAgICAgIGV4cGVjdGVkX2xldmVsID0gbGV2ZWwgaWYgbGV2ZWwgaXMgbm90IE5vbmUgZWxzZSBnZXRhdHRyKGxvZ2dpbmcsIG1ldGhvZC51cHBlcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBleHBlY3RlZF9sZXZlbCkKKworICAgICAgICAjIGJhc2ljQ29uZmlnIHdhcyBub3QgY2FsbGVkIQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGxlZCwgW10pCisKKyAgICBkZWYgdGVzdF9sb2coc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdsb2cnLCBsb2dnaW5nLkVSUk9SKQorCisgICAgZGVmIHRlc3RfZGVidWcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdkZWJ1ZycpCisKKyAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnaW5mbycpCisKKyAgICBkZWYgdGVzdF93YXJuaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnd2FybmluZycpCisKKyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2Vycm9yJykKKworICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnY3JpdGljYWwnKQorCisgICAgZGVmIHRlc3Rfc2V0X2xvZ2dlcl9jbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLnNldExvZ2dlckNsYXNzLCBvYmplY3QpCisKKyAgICAgICAgY2xhc3MgTXlMb2dnZXIobG9nZ2luZy5Mb2dnZXIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGxvZ2dpbmcuc2V0TG9nZ2VyQ2xhc3MoTXlMb2dnZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMb2dnZXJDbGFzcygpLCBNeUxvZ2dlcikKKworICAgICAgICBsb2dnaW5nLnNldExvZ2dlckNsYXNzKGxvZ2dpbmcuTG9nZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcuZ2V0TG9nZ2VyQ2xhc3MoKSwgbG9nZ2luZy5Mb2dnZXIpCisKK2NsYXNzIExvZ1JlY29yZFRlc3QoQmFzZVRlc3QpOgorICAgIGRlZiB0ZXN0X3N0cl9yZXAoc2VsZik6CisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgIHMgPSBzdHIocikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuc3RhcnRzd2l0aCgnPExvZ1JlY29yZDogJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmVuZHN3aXRoKCc+JykpCisKKyAgICBkZWYgdGVzdF9kaWN0X2FyZyhzZWxmKToKKyAgICAgICAgaCA9IFJlY29yZGluZ0hhbmRsZXIoKQorICAgICAgICByID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAgICAgICByLmFkZEhhbmRsZXIoaCkKKyAgICAgICAgZCA9IHsnbGVzcycgOiAnbW9yZScgfQorICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ2xlc3MgaXMgJShsZXNzKXMnLCBkKQorICAgICAgICBzZWxmLmFzc2VydElzKGgucmVjb3Jkc1swXS5hcmdzLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgucmVjb3Jkc1swXS5tZXNzYWdlLCAnbGVzcyBpcyBtb3JlJykKKyAgICAgICAgci5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgIGguY2xvc2UoKQorCisgICAgZGVmIHRlc3RfbXVsdGlwcm9jZXNzaW5nKHNlbGYpOgorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucHJvY2Vzc05hbWUsICdNYWluUHJvY2VzcycpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcgYXMgbXAKKyAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHIucHJvY2Vzc05hbWUsIG1wLmN1cnJlbnRfcHJvY2VzcygpLm5hbWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsKHNlbGYpOgorICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KQorICAgICAgICBOT1RfTk9ORSA9IHNlbGYuYXNzZXJ0SXNOb3ROb25lCisgICAgICAgIGlmIHRocmVhZGluZzoKKyAgICAgICAgICAgIE5PVF9OT05FKHIudGhyZWFkKQorICAgICAgICAgICAgTk9UX05PTkUoci50aHJlYWROYW1lKQorICAgICAgICBOT1RfTk9ORShyLnByb2Nlc3MpCisgICAgICAgIE5PVF9OT05FKHIucHJvY2Vzc05hbWUpCisgICAgICAgIGxvZ190aHJlYWRzID0gbG9nZ2luZy5sb2dUaHJlYWRzCisgICAgICAgIGxvZ19wcm9jZXNzZXMgPSBsb2dnaW5nLmxvZ1Byb2Nlc3NlcworICAgICAgICBsb2dfbXVsdGlwcm9jZXNzaW5nID0gbG9nZ2luZy5sb2dNdWx0aXByb2Nlc3NpbmcKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9nZ2luZy5sb2dUaHJlYWRzID0gRmFsc2UKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nUHJvY2Vzc2VzID0gRmFsc2UKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nTXVsdGlwcm9jZXNzaW5nID0gRmFsc2UKKyAgICAgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoe30pCisgICAgICAgICAgICBOT05FID0gc2VsZi5hc3NlcnRJc05vbmUKKyAgICAgICAgICAgIE5PTkUoci50aHJlYWQpCisgICAgICAgICAgICBOT05FKHIudGhyZWFkTmFtZSkKKyAgICAgICAgICAgIE5PTkUoci5wcm9jZXNzKQorICAgICAgICAgICAgTk9ORShyLnByb2Nlc3NOYW1lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgbG9nZ2luZy5sb2dUaHJlYWRzID0gbG9nX3RocmVhZHMKKyAgICAgICAgICAgIGxvZ2dpbmcubG9nUHJvY2Vzc2VzID0gbG9nX3Byb2Nlc3NlcworICAgICAgICAgICAgbG9nZ2luZy5sb2dNdWx0aXByb2Nlc3NpbmcgPSBsb2dfbXVsdGlwcm9jZXNzaW5nCisKK2NsYXNzIEJhc2ljQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHN1aXRlIGZvciBsb2dnaW5nLmJhc2ljQ29uZmlnLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihCYXNpY0NvbmZpZ1Rlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5oYW5kbGVycyA9IGxvZ2dpbmcucm9vdC5oYW5kbGVycworICAgICAgICBzZWxmLnNhdmVkX2hhbmRsZXJzID0gbG9nZ2luZy5faGFuZGxlcnMuY29weSgpCisgICAgICAgIHNlbGYuc2F2ZWRfaGFuZGxlcl9saXN0ID0gbG9nZ2luZy5faGFuZGxlckxpc3RbOl0KKyAgICAgICAgc2VsZi5vcmlnaW5hbF9sb2dnaW5nX2xldmVsID0gbG9nZ2luZy5yb290LmxldmVsCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmNsZWFudXApCisgICAgICAgIGxvZ2dpbmcucm9vdC5oYW5kbGVycyA9IFtdCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGZvciBoIGluIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1s6XToKKyAgICAgICAgICAgIGxvZ2dpbmcucm9vdC5yZW1vdmVIYW5kbGVyKGgpCisgICAgICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgc3VwZXIoQmFzaWNDb25maWdUZXN0LCBzZWxmKS50ZWFyRG93bigpCisKKyAgICBkZWYgY2xlYW51cChzZWxmKToKKyAgICAgICAgc2V0YXR0cihsb2dnaW5nLnJvb3QsICdoYW5kbGVycycsIHNlbGYuaGFuZGxlcnMpCisgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJzLmNsZWFyKCkKKyAgICAgICAgbG9nZ2luZy5faGFuZGxlcnMudXBkYXRlKHNlbGYuc2F2ZWRfaGFuZGxlcnMpCisgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdID0gc2VsZi5zYXZlZF9oYW5kbGVyX2xpc3QKKyAgICAgICAgbG9nZ2luZy5yb290LmxldmVsID0gc2VsZi5vcmlnaW5hbF9sb2dnaW5nX2xldmVsCisKKyAgICBkZWYgdGVzdF9ub19rd2FyZ3Moc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoKQorCisgICAgICAgICMgaGFuZGxlciBkZWZhdWx0cyB0byBhIFN0cmVhbUhhbmRsZXIgdG8gc3lzLnN0ZGVycgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQorICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0sIHN5cy5zdGRlcnIpCisKKyAgICAgICAgZm9ybWF0dGVyID0gaGFuZGxlci5mb3JtYXR0ZXIKKyAgICAgICAgIyBmb3JtYXQgZGVmYXVsdHMgdG8gbG9nZ2luZy5CQVNJQ19GT1JNQVQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXR0ZXIuX3N0eWxlLl9mbXQsIGxvZ2dpbmcuQkFTSUNfRk9STUFUKQorICAgICAgICAjIGRhdGVmbXQgZGVmYXVsdHMgdG8gTm9uZQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShmb3JtYXR0ZXIuZGF0ZWZtdCkKKyAgICAgICAgIyBzdHlsZSBkZWZhdWx0cyB0byAlCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmb3JtYXR0ZXIuX3N0eWxlLCBsb2dnaW5nLlBlcmNlbnRTdHlsZSkKKworICAgICAgICAjIGxldmVsIGlzIG5vdCBleHBsaWNpdGx5IHNldAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5sZXZlbCwgc2VsZi5vcmlnaW5hbF9sb2dnaW5nX2xldmVsKQorCisgICAgZGVmIHRlc3RfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoZmlsZW5hbWU9J3Rlc3QubG9nJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQorICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLkZpbGVIYW5kbGVyKQorCisgICAgICAgIGV4cGVjdGVkID0gbG9nZ2luZy5GaWxlSGFuZGxlcigndGVzdC5sb2cnLCAnYScpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChleHBlY3RlZC5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbS5tb2RlLCBleHBlY3RlZC5zdHJlYW0ubW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnN0cmVhbS5uYW1lLCBleHBlY3RlZC5zdHJlYW0ubmFtZSkKKworICAgIGRlZiB0ZXN0X2ZpbGVtb2RlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGZpbGVuYW1lPSd0ZXN0LmxvZycsIGZpbGVtb2RlPSd3YicpCisKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcucm9vdC5oYW5kbGVyc1swXQorICAgICAgICBleHBlY3RlZCA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoJ3Rlc3QubG9nJywgJ3diJykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGV4cGVjdGVkLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuc3RyZWFtLm1vZGUsIGV4cGVjdGVkLnN0cmVhbS5tb2RlKQorCisgICAgZGVmIHRlc3Rfc3RyZWFtKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdHJlYW0uY2xvc2UpCisgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcoc3RyZWFtPXN0cmVhbSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsb2dnaW5nLnJvb3QuaGFuZGxlcnMpLCAxKQorICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5zdHJlYW0sIHN0cmVhbSkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdChzZWxmKToKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhmb3JtYXQ9J2ZvbycpCisKKyAgICAgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdLmZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlci5fc3R5bGUuX2ZtdCwgJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9kYXRlZm10KHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGRhdGVmbXQ9J2JhcicpCisKKyAgICAgICAgZm9ybWF0dGVyID0gbG9nZ2luZy5yb290LmhhbmRsZXJzWzBdLmZvcm1hdHRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdHRlci5kYXRlZm10LCAnYmFyJykKKworICAgIGRlZiB0ZXN0X3N0eWxlKHNlbGYpOgorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKHN0eWxlPSckJykKKworICAgICAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0uZm9ybWF0dGVyCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmb3JtYXR0ZXIuX3N0eWxlLCBsb2dnaW5nLlN0cmluZ1RlbXBsYXRlU3R5bGUpCisKKyAgICBkZWYgdGVzdF9sZXZlbChzZWxmKToKKyAgICAgICAgb2xkX2xldmVsID0gbG9nZ2luZy5yb290LmxldmVsCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnJvb3Quc2V0TGV2ZWwsIG9sZF9sZXZlbCkKKworICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPTU3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dpbmcucm9vdC5sZXZlbCwgNTcpCisgICAgICAgICMgVGVzdCB0aGF0IHNlY29uZCBjYWxsIGhhcyBubyBlZmZlY3QKKyAgICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD01OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLnJvb3QubGV2ZWwsIDU3KQorCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlKHNlbGYpOgorICAgICAgICBhc3NlcnRSYWlzZXMgPSBzZWxmLmFzc2VydFJhaXNlcworICAgICAgICBoYW5kbGVycyA9IFtsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKV0KKyAgICAgICAgc3RyZWFtID0gc3lzLnN0ZGVycgorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgZmlsZW5hbWU9J3Rlc3QubG9nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtPXN0cmVhbSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuYmFzaWNDb25maWcsIGZpbGVuYW1lPSd0ZXN0LmxvZycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzPWhhbmRsZXJzKQorICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5iYXNpY0NvbmZpZywgc3RyZWFtPXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9aGFuZGxlcnMpCisKKyAgICBkZWYgdGVzdF9oYW5kbGVycyhzZWxmKToKKyAgICAgICAgaGFuZGxlcnMgPSBbCisgICAgICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKSwKKyAgICAgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KSwKKyAgICAgICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlcigpLAorICAgICAgICBdCisgICAgICAgIGYgPSBsb2dnaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGhhbmRsZXJzWzJdLnNldEZvcm1hdHRlcihmKQorICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGhhbmRsZXJzPWhhbmRsZXJzKQorICAgICAgICBzZWxmLmFzc2VydElzKGhhbmRsZXJzWzBdLCBsb2dnaW5nLnJvb3QuaGFuZGxlcnNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMV0sIGxvZ2dpbmcucm9vdC5oYW5kbGVyc1sxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1syXSwgbG9nZ2luZy5yb290LmhhbmRsZXJzWzJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShoYW5kbGVyc1swXS5mb3JtYXR0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhhbmRsZXJzWzFdLmZvcm1hdHRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhoYW5kbGVyc1syXS5mb3JtYXR0ZXIsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaGFuZGxlcnNbMF0uZm9ybWF0dGVyLCBoYW5kbGVyc1sxXS5mb3JtYXR0ZXIpCisKKyAgICBkZWYgX3Rlc3RfbG9nKHNlbGYsIG1ldGhvZCwgbGV2ZWw9Tm9uZSk6CisgICAgICAgICMgbG9nZ2luZy5yb290IGhhcyBubyBoYW5kbGVycyBzbyBiYXNpY0NvbmZpZyBzaG91bGQgYmUgY2FsbGVkCisgICAgICAgIGNhbGxlZCA9IFtdCisKKyAgICAgICAgb2xkX2Jhc2ljX2NvbmZpZyA9IGxvZ2dpbmcuYmFzaWNDb25maWcKKyAgICAgICAgZGVmIG15X2Jhc2ljX2NvbmZpZygqYSwgKiprdyk6CisgICAgICAgICAgICBvbGRfYmFzaWNfY29uZmlnKCkKKyAgICAgICAgICAgIG9sZF9sZXZlbCA9IGxvZ2dpbmcucm9vdC5sZXZlbAorICAgICAgICAgICAgbG9nZ2luZy5yb290LnNldExldmVsKDEwMCkgICMgYXZvaWQgaGF2aW5nIG1lc3NhZ2VzIGluIHN0ZGVycgorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGxvZ2dpbmcucm9vdC5zZXRMZXZlbCwgb2xkX2xldmVsKQorICAgICAgICAgICAgY2FsbGVkLmFwcGVuZCgoYSwga3cpKQorCisgICAgICAgIHBhdGNoKHNlbGYsIGxvZ2dpbmcsICdiYXNpY0NvbmZpZycsIG15X2Jhc2ljX2NvbmZpZykKKworICAgICAgICBsb2dfbWV0aG9kID0gZ2V0YXR0cihsb2dnaW5nLCBtZXRob2QpCisgICAgICAgIGlmIGxldmVsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9nX21ldGhvZChsZXZlbCwgInRlc3QgbWUiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nX21ldGhvZCgidGVzdCBtZSIpCisKKyAgICAgICAgIyBiYXNpY0NvbmZpZyB3YXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbGVkLCBbKCgpLCB7fSldKQorCisgICAgZGVmIHRlc3RfbG9nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnbG9nJywgbG9nZ2luZy5XQVJOSU5HKQorCisgICAgZGVmIHRlc3RfZGVidWcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3RfbG9nKCdkZWJ1ZycpCisKKyAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnaW5mbycpCisKKyAgICBkZWYgdGVzdF93YXJuaW5nKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnd2FybmluZycpCisKKyAgICBkZWYgdGVzdF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9sb2coJ2Vycm9yJykKKworICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2xvZygnY3JpdGljYWwnKQorCisKK2NsYXNzIExvZ2dlckFkYXB0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoTG9nZ2VyQWRhcHRlclRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgb2xkX2hhbmRsZXJfbGlzdCA9IGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdCisKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLnJvb3QKKyAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnJlY29yZGluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIsIHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5yZWNvcmRpbmcuY2xvc2UpCisKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIGxvZ2dpbmcuX2hhbmRsZXJMaXN0WzpdID0gb2xkX2hhbmRsZXJfbGlzdAorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChjbGVhbnVwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAobG9nZ2luZy5zaHV0ZG93bikKKyAgICAgICAgc2VsZi5hZGFwdGVyID0gbG9nZ2luZy5Mb2dnZXJBZGFwdGVyKGxvZ2dlcj1zZWxmLmxvZ2dlciwgZXh0cmE9Tm9uZSkKKworICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgbXNnID0gJ3Rlc3RpbmcgZXhjZXB0aW9uOiAlcicKKyAgICAgICAgZXhjID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICAxIC8gMAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGV4YyA9IGUKKyAgICAgICAgICAgIHNlbGYuYWRhcHRlci5leGNlcHRpb24obXNnLCBzZWxmLnJlY29yZGluZykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnJlY29yZGluZy5yZWNvcmRzKSwgMSkKKyAgICAgICAgcmVjb3JkID0gc2VsZi5yZWNvcmRpbmcucmVjb3Jkc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5sZXZlbG5vLCBsb2dnaW5nLkVSUk9SKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5tc2csIG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQuYXJncywgKHNlbGYucmVjb3JkaW5nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmV4Y19pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgIChleGMuX19jbGFzc19fLCBleGMsIGV4Yy5fX3RyYWNlYmFja19fKSkKKworICAgIGRlZiB0ZXN0X2NyaXRpY2FsKHNlbGYpOgorICAgICAgICBtc2cgPSAnY3JpdGljYWwgdGVzdCEgJXInCisgICAgICAgIHNlbGYuYWRhcHRlci5jcml0aWNhbChtc2csIHNlbGYucmVjb3JkaW5nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYucmVjb3JkaW5nLnJlY29yZHMpLCAxKQorICAgICAgICByZWNvcmQgPSBzZWxmLnJlY29yZGluZy5yZWNvcmRzWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmxldmVsbm8sIGxvZ2dpbmcuQ1JJVElDQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLm1zZywgbXNnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5hcmdzLCAoc2VsZi5yZWNvcmRpbmcsKSkKKworICAgIGRlZiB0ZXN0X2lzX2VuYWJsZWRfZm9yKHNlbGYpOgorICAgICAgICBvbGRfZGlzYWJsZSA9IHNlbGYuYWRhcHRlci5sb2dnZXIubWFuYWdlci5kaXNhYmxlCisgICAgICAgIHNlbGYuYWRhcHRlci5sb2dnZXIubWFuYWdlci5kaXNhYmxlID0gMzMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIHNlbGYuYWRhcHRlci5sb2dnZXIubWFuYWdlciwgJ2Rpc2FibGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgb2xkX2Rpc2FibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hZGFwdGVyLmlzRW5hYmxlZEZvcigzMikpCisKKyAgICBkZWYgdGVzdF9oYXNfaGFuZGxlcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmFkYXB0ZXIuaGFzSGFuZGxlcnMoKSkKKworICAgICAgICBmb3IgaGFuZGxlciBpbiBzZWxmLmxvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYubG9nZ2VyLmhhc0hhbmRsZXJzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hZGFwdGVyLmhhc0hhbmRsZXJzKCkpCisKKworY2xhc3MgTG9nZ2VyVGVzdChCYXNlVGVzdCk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKExvZ2dlclRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi5yZWNvcmRpbmcgPSBSZWNvcmRpbmdIYW5kbGVyKCkKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLkxvZ2dlcihuYW1lPSdibGFoJykKKyAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihzZWxmLnJlY29yZGluZykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYubG9nZ2VyLnJlbW92ZUhhbmRsZXIsIHNlbGYucmVjb3JkaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5yZWNvcmRpbmcuY2xvc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChsb2dnaW5nLnNodXRkb3duKQorCisgICAgZGVmIHRlc3Rfc2V0X2ludmFsaWRfbGV2ZWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2dnZXIuc2V0TGV2ZWwsIG9iamVjdCgpKQorCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBtc2cgPSAndGVzdGluZyBleGNlcHRpb246ICVyJworICAgICAgICBleGMgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEgLyAwCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjID0gZQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXhjZXB0aW9uKG1zZywgc2VsZi5yZWNvcmRpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5yZWNvcmRpbmcucmVjb3JkcyksIDEpCisgICAgICAgIHJlY29yZCA9IHNlbGYucmVjb3JkaW5nLnJlY29yZHNbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubGV2ZWxubywgbG9nZ2luZy5FUlJPUikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWNvcmQubXNnLCBtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3JkLmFyZ3MsIChzZWxmLnJlY29yZGluZywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY29yZC5leGNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZXhjLl9fY2xhc3NfXywgZXhjLCBleGMuX190cmFjZWJhY2tfXykpCisKKyAgICBkZWYgdGVzdF9sb2dfaW52YWxpZF9sZXZlbF93aXRoX3JhaXNlKHNlbGYpOgorICAgICAgICBvbGRfcmFpc2UgPSBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucworICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0YXR0ciwgbG9nZ2luZywgJ3JhaXNlRXhlY3B0aW9ucycsIG9sZF9yYWlzZSkKKworICAgICAgICBsb2dnaW5nLnJhaXNlRXhjZXB0aW9ucyA9IFRydWUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvZ2dlci5sb2csICcxMCcsICd0ZXN0IG1lc3NhZ2UnKQorCisgICAgZGVmIHRlc3RfbG9nX2ludmFsaWRfbGV2ZWxfbm9fcmFpc2Uoc2VsZik6CisgICAgICAgIG9sZF9yYWlzZSA9IGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXRhdHRyLCBsb2dnaW5nLCAncmFpc2VFeGVjcHRpb25zJywgb2xkX3JhaXNlKQorCisgICAgICAgIGxvZ2dpbmcucmFpc2VFeGNlcHRpb25zID0gRmFsc2UKKyAgICAgICAgc2VsZi5sb2dnZXIubG9nKCcxMCcsICd0ZXN0IG1lc3NhZ2UnKSAgIyBubyBleGNlcHRpb24gaGFwcGVucworCisgICAgZGVmIHRlc3RfZmluZF9jYWxsZXJfd2l0aF9zdGFja19pbmZvKHNlbGYpOgorICAgICAgICBjYWxsZWQgPSBbXQorICAgICAgICBwYXRjaChzZWxmLCBsb2dnaW5nLnRyYWNlYmFjaywgJ3ByaW50X3N0YWNrJywKKyAgICAgICAgICAgICAgbGFtYmRhIGYsIGZpbGU6IGNhbGxlZC5hcHBlbmQoZmlsZS5nZXR2YWx1ZSgpKSkKKworICAgICAgICBzZWxmLmxvZ2dlci5maW5kQ2FsbGVyKHN0YWNrX2luZm89VHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYWxsZWQpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdTdGFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicsIGNhbGxlZFswXSkKKworICAgIGRlZiB0ZXN0X21ha2VfcmVjb3JkX3dpdGhfZXh0cmFfb3ZlcndyaXRlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ215IHJlY29yZCcKKyAgICAgICAgbGV2ZWwgPSAxMworICAgICAgICBmbiA9IGxubyA9IG1zZyA9IGFyZ3MgPSBleGNfaW5mbyA9IGZ1bmMgPSBzaW5mbyA9IE5vbmUKKyAgICAgICAgcnYgPSBsb2dnaW5nLl9sb2dSZWNvcmRGYWN0b3J5KG5hbWUsIGxldmVsLCBmbiwgbG5vLCBtc2csIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfaW5mbywgZnVuYywgc2luZm8pCisKKyAgICAgICAgZm9yIGtleSBpbiAoJ21lc3NhZ2UnLCAnYXNjdGltZScpICsgdHVwbGUocnYuX19kaWN0X18ua2V5cygpKToKKyAgICAgICAgICAgIGV4dHJhID0ge2tleTogJ3NvbWUgdmFsdWUnfQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHNlbGYubG9nZ2VyLm1ha2VSZWNvcmQsIG5hbWUsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4sIGxubywgbXNnLCBhcmdzLCBleGNfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBzaW5mbz1zaW5mbykKKworICAgIGRlZiB0ZXN0X21ha2VfcmVjb3JkX3dpdGhfZXh0cmFfbm9fb3ZlcndyaXRlKHNlbGYpOgorICAgICAgICBuYW1lID0gJ215IHJlY29yZCcKKyAgICAgICAgbGV2ZWwgPSAxMworICAgICAgICBmbiA9IGxubyA9IG1zZyA9IGFyZ3MgPSBleGNfaW5mbyA9IGZ1bmMgPSBzaW5mbyA9IE5vbmUKKyAgICAgICAgZXh0cmEgPSB7J3ZhbGlkX2tleSc6ICdzb21lIHZhbHVlJ30KKyAgICAgICAgcmVzdWx0ID0gc2VsZi5sb2dnZXIubWFrZVJlY29yZChuYW1lLCBsZXZlbCwgZm4sIGxubywgbXNnLCBhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y19pbmZvLCBleHRyYT1leHRyYSwgc2luZm89c2luZm8pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3ZhbGlkX2tleScsIHJlc3VsdC5fX2RpY3RfXykKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubG9nZ2VyLmhhc0hhbmRsZXJzKCkpCisKKyAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5yZW1vdmVIYW5kbGVyKGhhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaGFzSGFuZGxlcnMoKSkKKworICAgIGRlZiB0ZXN0X2hhc19oYW5kbGVyc19ub19wcm9wYWdhdGUoc2VsZik6CisgICAgICAgIGNoaWxkX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdibGFoLmNoaWxkJykKKyAgICAgICAgY2hpbGRfbG9nZ2VyLnByb3BhZ2F0ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2hpbGRfbG9nZ2VyLmhhc0hhbmRsZXJzKCkpCisKKyAgICBkZWYgdGVzdF9pc19lbmFibGVkX2ZvcihzZWxmKToKKyAgICAgICAgb2xkX2Rpc2FibGUgPSBzZWxmLmxvZ2dlci5tYW5hZ2VyLmRpc2FibGUKKyAgICAgICAgc2VsZi5sb2dnZXIubWFuYWdlci5kaXNhYmxlID0gMjMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNldGF0dHIsIHNlbGYubG9nZ2VyLm1hbmFnZXIsICdkaXNhYmxlJywgb2xkX2Rpc2FibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5sb2dnZXIuaXNFbmFibGVkRm9yKDIyKSkKKworICAgIGRlZiB0ZXN0X3Jvb3RfbG9nZ2VyX2FsaWFzZXMoc2VsZik6CisgICAgICAgIHJvb3QgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5yb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydElzKHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vJykucm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LCBsb2dnaW5nLmdldExvZ2dlcignZm9vLmJhcicpLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocm9vdCwgbG9nZ2luZy5nZXRMb2dnZXIoJ2ZvbycpLnBhcmVudCkKKworICAgICAgICBzZWxmLmFzc2VydElzTm90KHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdcMCcpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90KHJvb3QsIGxvZ2dpbmcuZ2V0TG9nZ2VyKCdmb28uYmFyJykucGFyZW50KQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9uYW1lcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsb2dnaW5nLmdldExvZ2dlciwgYW55KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxvZ2dpbmcuZ2V0TG9nZ2VyLCBiJ2ZvbycpCisKKwogY2xhc3MgQmFzZUZpbGVUZXN0KEJhc2VUZXN0KToKICAgICAiQmFzZSBjbGFzcyBmb3IgaGFuZGxlciB0ZXN0cyB0aGF0IHdyaXRlIGxvZyBmaWxlcyIKIApAQCAtMjIzOSwxMCArMzU5NCwyMSBAQAogICAgIGRlZiBhc3NlcnRMb2dGaWxlKHNlbGYsIGZpbGVuYW1lKToKICAgICAgICAgIkFzc2VydCBhIGxvZyBmaWxlIGlzIHRoZXJlIGFuZCByZWdpc3RlciBpdCBmb3IgZGVsZXRpb24iCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICBtc2c9IkxvZyBmaWxlICVyIGRvZXMgbm90IGV4aXN0IikKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iTG9nIGZpbGUgJXIgZG9lcyBub3QgZXhpc3QiICUgZmlsZW5hbWUpCiAgICAgICAgIHNlbGYucm1maWxlcy5hcHBlbmQoZmlsZW5hbWUpCiAKIAorY2xhc3MgRmlsZUhhbmRsZXJUZXN0KEJhc2VGaWxlVGVzdCk6CisgICAgZGVmIHRlc3RfZGVsYXkoc2VsZik6CisgICAgICAgIG9zLnVubGluayhzZWxmLmZuKQorICAgICAgICBmaCA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoc2VsZi5mbiwgZGVsYXk9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmguc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHNlbGYuZm4pKQorICAgICAgICBmaC5oYW5kbGUobG9nZ2luZy5tYWtlTG9nUmVjb3JkKHt9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZmguc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc2VsZi5mbikpCisgICAgICAgIGZoLmNsb3NlKCkKKwogY2xhc3MgUm90YXRpbmdGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKICAgICBkZWYgbmV4dF9yZWMoc2VsZik6CiAgICAgICAgIHJldHVybiBsb2dnaW5nLkxvZ1JlY29yZCgnbicsIGxvZ2dpbmcuREVCVUcsICdwJywgMSwKQEAgLTIyNjgsMjAgKzM2MzQsMTE3IEBACiAgICAgICAgIHJoLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X3JvbGxvdmVyX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLnRlc3QiCiAgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAogICAgICAgICAgICAgc2VsZi5mbiwgYmFja3VwQ291bnQ9MiwgbWF4Qnl0ZXM9MSkKKyAgICAgICAgcmgubmFtZXIgPSBuYW1lcgogICAgICAgICByaC5lbWl0KHNlbGYubmV4dF9yZWMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKHNlbGYuZm4pCiAgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQotICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbiArICIuMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nRmlsZShuYW1lcihzZWxmLmZuICsgIi4xIikpCiAgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQotICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbiArICIuMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoc2VsZi5mbiArICIuMyIpKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUobmFtZXIoc2VsZi5mbiArICIuMiIpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWVyKHNlbGYuZm4gKyAiLjMiKSkpCisgICAgICAgIHJoLmNsb3NlKCkKKworICAgIEByZXF1aXJlc196bGliCisgICAgZGVmIHRlc3Rfcm90YXRvcihzZWxmKToKKyAgICAgICAgZGVmIG5hbWVyKG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUgKyAiLmd6IgorCisgICAgICAgIGRlZiByb3RhdG9yKHNvdXJjZSwgZGVzdCk6CisgICAgICAgICAgICB3aXRoIG9wZW4oc291cmNlLCAicmIiKSBhcyBzZjoKKyAgICAgICAgICAgICAgICBkYXRhID0gc2YucmVhZCgpCisgICAgICAgICAgICAgICAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MoZGF0YSwgOSkKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGVzdCwgIndiIikgYXMgZGY6CisgICAgICAgICAgICAgICAgICAgIGRmLndyaXRlKGNvbXByZXNzZWQpCisgICAgICAgICAgICBvcy5yZW1vdmUoc291cmNlKQorCisgICAgICAgIHJoID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAorICAgICAgICAgICAgc2VsZi5mbiwgYmFja3VwQ291bnQ9MiwgbWF4Qnl0ZXM9MSkKKyAgICAgICAgcmgucm90YXRvciA9IHJvdGF0b3IKKyAgICAgICAgcmgubmFtZXIgPSBuYW1lcgorICAgICAgICBtMSA9IHNlbGYubmV4dF9yZWMoKQorICAgICAgICByaC5lbWl0KG0xKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKKyAgICAgICAgbTIgPSBzZWxmLm5leHRfcmVjKCkKKyAgICAgICAgcmguZW1pdChtMikKKyAgICAgICAgZm4gPSBuYW1lcihzZWxmLmZuICsgIi4xIikKKyAgICAgICAgc2VsZi5hc3NlcnRMb2dGaWxlKGZuKQorICAgICAgICBuZXdsaW5lID0gb3MubGluZXNlcAorICAgICAgICB3aXRoIG9wZW4oZm4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICBjb21wcmVzc2VkID0gZi5yZWFkKCkKKyAgICAgICAgICAgIGRhdGEgPSB6bGliLmRlY29tcHJlc3MoY29tcHJlc3NlZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoImFzY2lpIiksIG0xLm1zZyArIG5ld2xpbmUpCisgICAgICAgIHJoLmVtaXQoc2VsZi5uZXh0X3JlYygpKQorICAgICAgICBmbiA9IG5hbWVyKHNlbGYuZm4gKyAiLjIiKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoZm4pCisgICAgICAgIHdpdGggb3BlbihmbiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgiYXNjaWkiKSwgbTEubXNnICsgbmV3bGluZSkKKyAgICAgICAgcmguZW1pdChzZWxmLm5leHRfcmVjKCkpCisgICAgICAgIGZuID0gbmFtZXIoc2VsZi5mbiArICIuMiIpCisgICAgICAgIHdpdGggb3BlbihmbiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgIGNvbXByZXNzZWQgPSBmLnJlYWQoKQorICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhjb21wcmVzc2VkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgiYXNjaWkiKSwgbTIubXNnICsgbmV3bGluZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhuYW1lcihzZWxmLmZuICsgIi4zIikpKQogICAgICAgICByaC5jbG9zZSgpCiAKIGNsYXNzIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QoQmFzZUZpbGVUZXN0KToKLSAgICAjIHRlc3QgbWV0aG9kcyBhZGRlZCBiZWxvdwotICAgIHBhc3MKKyAgICAjIG90aGVyIHRlc3QgbWV0aG9kcyBhZGRlZCBiZWxvdworICAgIGRlZiB0ZXN0X3JvbGxvdmVyKHNlbGYpOgorICAgICAgICBmaCA9IGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyKHNlbGYuZm4sICdTJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrdXBDb3VudD0xKQorICAgICAgICBmbXQgPSBsb2dnaW5nLkZvcm1hdHRlcignJShhc2N0aW1lKXMgJShtZXNzYWdlKXMnKQorICAgICAgICBmaC5zZXRGb3JtYXR0ZXIoZm10KQorICAgICAgICByMSA9IGxvZ2dpbmcubWFrZUxvZ1JlY29yZCh7J21zZyc6ICd0ZXN0aW5nIC0gaW5pdGlhbCd9KQorICAgICAgICBmaC5lbWl0KHIxKQorICAgICAgICBzZWxmLmFzc2VydExvZ0ZpbGUoc2VsZi5mbikKKyAgICAgICAgdGltZS5zbGVlcCgxLjEpICAgICMgYSBsaXR0bGUgb3ZlciBhIHNlY29uZCAuLi4KKyAgICAgICAgcjIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAndGVzdGluZyAtIGFmdGVyIGRlbGF5J30pCisgICAgICAgIGZoLmVtaXQocjIpCisgICAgICAgIGZoLmNsb3NlKCkKKyAgICAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBzaG91bGQgaGF2ZSBhIHJlY2VudCByb3RhdGVkIGZpbGUgd2hpY2ggd2UKKyAgICAgICAgIyBjYW4gdGVzdCBmb3IgdGhlIGV4aXN0ZW5jZSBvZi4gSG93ZXZlciwgaW4gcHJhY3RpY2UsIG9uIHNvbWUKKyAgICAgICAgIyBtYWNoaW5lcyB3aGljaCBydW4gcmVhbGx5IHNsb3dseSwgd2UgZG9uJ3Qga25vdyBob3cgZmFyIGJhY2sKKyAgICAgICAgIyBpbiB0aW1lIHRvIGdvIHRvIGxvb2sgZm9yIHRoZSBsb2cgZmlsZS4gU28sIHdlIGdvIGJhY2sgYSBmYWlyCisgICAgICAgICMgYml0LCBhbmQgc3RvcCBhcyBzb29uIGFzIHdlIHNlZSBhIHJvdGF0ZWQgZmlsZS4gSW4gdGhlb3J5IHRoaXMKKyAgICAgICAgIyBjb3VsZCBvZiBjb3Vyc2Ugc3RpbGwgZmFpbCwgYnV0IHRoZSBjaGFuY2VzIGFyZSBsb3dlci4KKyAgICAgICAgZm91bmQgPSBGYWxzZQorICAgICAgICBub3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coKQorICAgICAgICBHT19CQUNLID0gNSAqIDYwICMgc2Vjb25kcworICAgICAgICBmb3Igc2VjcyBpbiByYW5nZShHT19CQUNLKToKKyAgICAgICAgICAgIHByZXYgPSBub3cgLSBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1zZWNzKQorICAgICAgICAgICAgZm4gPSBzZWxmLmZuICsgcHJldi5zdHJmdGltZSgiLiVZLSVtLSVkXyVILSVNLSVTIikKKyAgICAgICAgICAgIGZvdW5kID0gb3MucGF0aC5leGlzdHMoZm4pCisgICAgICAgICAgICBpZiBmb3VuZDoKKyAgICAgICAgICAgICAgICBzZWxmLnJtZmlsZXMuYXBwZW5kKGZuKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIG1zZyA9ICdObyByb3RhdGVkIGZpbGVzIGZvdW5kLCB3ZW50IGJhY2sgJWQgc2Vjb25kcycgJSBHT19CQUNLCisgICAgICAgIGlmIG5vdCBmb3VuZDoKKyAgICAgICAgICAgICNwcmludCBhZGRpdGlvbmFsIGRpYWdub3N0aWNzCisgICAgICAgICAgICBkbiwgZm4gPSBvcy5wYXRoLnNwbGl0KHNlbGYuZm4pCisgICAgICAgICAgICBmaWxlcyA9IFtmIGZvciBmIGluIG9zLmxpc3RkaXIoZG4pIGlmIGYuc3RhcnRzd2l0aChmbildCisgICAgICAgICAgICBwcmludCgnVGVzdCB0aW1lOiAlcycgJSBub3cuc3RyZnRpbWUoIiVZLSVtLSVkICVILSVNLSVTIiksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHByaW50KCdUaGUgb25seSBtYXRjaGluZyBmaWxlcyBhcmU6ICVzJyAlIGZpbGVzLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBwcmludCgnQ29udGVudHMgb2YgJXM6JyAlIGYpCisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkbiwgZikKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3InKSBhcyB0ZjoKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQodGYucmVhZCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIG1zZz1tc2cpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgorICAgICAgICBhc3NlcnRSYWlzZXMgPSBzZWxmLmFzc2VydFJhaXNlcworICAgICAgICBhc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmZuLCAnWCcsIGRlbGF5PVRydWUpCisgICAgICAgIGFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsb2dnaW5nLmhhbmRsZXJzLlRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZm4sICdXJywgZGVsYXk9VHJ1ZSkKKyAgICAgICAgYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGxvZ2dpbmcuaGFuZGxlcnMuVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5mbiwgJ1c3JywgZGVsYXk9VHJ1ZSkKIAogZGVmIHNlY3MoKiprdyk6CiAgICAgcmV0dXJuIGRhdGV0aW1lLnRpbWVkZWx0YSgqKmt3KSAvLyBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz0xKQpAQCAtMjMyOSw0MyArMzc5MiwzNCBAQAogICAgICAgICByaC5jbG9zZSgpCiAgICAgc2V0YXR0cihUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LCAidGVzdF9jb21wdXRlX3JvbGxvdmVyXyVzIiAlIHdoZW4sIHRlc3RfY29tcHV0ZV9yb2xsb3ZlcikKIAotY2xhc3MgSGFuZGxlclRlc3QoQmFzZVRlc3QpOgogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKLSAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgotICAgICAgICAjIElzc3VlICMxNDYzMiByZWZlcnMuCi0gICAgICAgIGRlZiByZW1vdmVfbG9vcChmbmFtZSwgdHJpZXMpOgotICAgICAgICAgICAgZm9yIF8gaW4gcmFuZ2UodHJpZXMpOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwNCAqIHJhbmRvbS5yYW5kaW50KDAsIDQpKQotCi0gICAgICAgIGRlbF9jb3VudCA9IDUwMAotICAgICAgICBsb2dfY291bnQgPSA1MDAKLQotICAgICAgICBmb3IgZGVsYXkgaW4gKEZhbHNlLCBUcnVlKToKLSAgICAgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoJy5sb2cnLCAndGVzdF9sb2dnaW5nLTMtJykKLSAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgcmVtb3ZlciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJlbW92ZV9sb29wLCBhcmdzPShmbiwgZGVsX2NvdW50KSkKLSAgICAgICAgICAgIHJlbW92ZXIuZGFlbW9uID0gVHJ1ZQotICAgICAgICAgICAgcmVtb3Zlci5zdGFydCgpCi0gICAgICAgICAgICBoID0gbG9nZ2luZy5oYW5kbGVycy5XYXRjaGVkRmlsZUhhbmRsZXIoZm4sIGRlbGF5PWRlbGF5KQotICAgICAgICAgICAgZiA9IGxvZ2dpbmcuRm9ybWF0dGVyKCclKGFzY3RpbWUpczogJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMnKQotICAgICAgICAgICAgaC5zZXRGb3JtYXR0ZXIoZikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShsb2dfY291bnQpOgotICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDA1KQotICAgICAgICAgICAgICAgICAgICByID0gbG9nZ2luZy5tYWtlTG9nUmVjb3JkKHsnbXNnJzogJ3Rlc3RpbmcnIH0pCi0gICAgICAgICAgICAgICAgICAgIGguaGFuZGxlKHIpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHJlbW92ZXIuam9pbigpCi0gICAgICAgICAgICAgICAgaC5jbG9zZSgpCi0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZm4pOgotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZm4pCi0KK0B1bml0dGVzdC5za2lwVW5sZXNzKHdpbjMyZXZ0bG9nLCAnd2luMzJldnRsb2cvd2luMzJldnRsb2d1dGlsIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIE5URXZlbnRMb2dIYW5kbGVyVGVzdChCYXNlVGVzdCk6CisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIGxvZ3R5cGUgPSAnQXBwbGljYXRpb24nCisgICAgICAgIGVsaCA9IHdpbjMyZXZ0bG9nLk9wZW5FdmVudExvZyhOb25lLCBsb2d0eXBlKQorICAgICAgICBudW1fcmVjcyA9IHdpbjMyZXZ0bG9nLkdldE51bWJlck9mRXZlbnRMb2dSZWNvcmRzKGVsaCkKKyAgICAgICAgaCA9IGxvZ2dpbmcuaGFuZGxlcnMuTlRFdmVudExvZ0hhbmRsZXIoJ3Rlc3RfbG9nZ2luZycpCisgICAgICAgIHIgPSBsb2dnaW5nLm1ha2VMb2dSZWNvcmQoeydtc2cnOiAnVGVzdCBMb2cgTWVzc2FnZSd9KQorICAgICAgICBoLmhhbmRsZShyKQorICAgICAgICBoLmNsb3NlKCkKKyAgICAgICAgIyBOb3cgc2VlIGlmIHRoZSBldmVudCBpcyByZWNvcmRlZAorICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtX3JlY3MgPCB3aW4zMmV2dGxvZy5HZXROdW1iZXJPZkV2ZW50TG9nUmVjb3JkcyhlbGgpKQorICAgICAgICBmbGFncyA9IHdpbjMyZXZ0bG9nLkVWRU5UTE9HX0JBQ0tXQVJEU19SRUFEIHwgXAorICAgICAgICAgICAgICAgIHdpbjMyZXZ0bG9nLkVWRU5UTE9HX1NFUVVFTlRJQUxfUkVBRAorICAgICAgICBmb3VuZCA9IEZhbHNlCisgICAgICAgIEdPX0JBQ0sgPSAxMDAKKyAgICAgICAgZXZlbnRzID0gd2luMzJldnRsb2cuUmVhZEV2ZW50TG9nKGVsaCwgZmxhZ3MsIEdPX0JBQ0spCisgICAgICAgIGZvciBlIGluIGV2ZW50czoKKyAgICAgICAgICAgIGlmIGUuU291cmNlTmFtZSAhPSAndGVzdF9sb2dnaW5nJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbXNnID0gd2luMzJldnRsb2d1dGlsLlNhZmVGb3JtYXRNZXNzYWdlKGUsIGxvZ3R5cGUpCisgICAgICAgICAgICBpZiBtc2cgIT0gJ1Rlc3QgTG9nIE1lc3NhZ2VcclxuJzoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZm91bmQgPSBUcnVlCisgICAgICAgICAgICBicmVhaworICAgICAgICBtc2cgPSAnUmVjb3JkIG5vdCBmb3VuZCBpbiBldmVudCBsb2csIHdlbnQgYmFjayAlZCByZWNvcmRzJyAlIEdPX0JBQ0sKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQogCiAjIFNldCB0aGUgbG9jYWxlIHRvIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdC4gIEkgaGF2ZSBubyBpZGVhCiAjIHdoeSB0aGUgdGVzdCBkb2VzIHRoaXMsIGJ1dCBpbiBhbnkgY2FzZSB3ZSBzYXZlIHRoZSBjdXJyZW50IGxvY2FsZQpAQCAtMjM3MywxNCArMzgyNywxNyBAQAogQHJ1bl93aXRoX2xvY2FsZSgnTENfQUxMJywgJycpCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KEJ1aWx0aW5MZXZlbHNUZXN0LCBCYXNpY0ZpbHRlclRlc3QsCi0gICAgICAgICAgICAgICAgIEN1c3RvbUxldmVsc0FuZEZpbHRlcnNUZXN0LCBNZW1vcnlIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgQ29uZmlnRmlsZVRlc3QsIFNvY2tldEhhbmRsZXJUZXN0LCBNZW1vcnlUZXN0LAotICAgICAgICAgICAgICAgICBFbmNvZGluZ1Rlc3QsIFdhcm5pbmdzVGVzdCwgQ29uZmlnRGljdFRlc3QsIE1hbmFnZXJUZXN0LAotICAgICAgICAgICAgICAgICBGb3JtYXR0ZXJUZXN0LAotICAgICAgICAgICAgICAgICBMb2dSZWNvcmRGYWN0b3J5VGVzdCwgQ2hpbGRMb2dnZXJUZXN0LCBRdWV1ZUhhbmRsZXJUZXN0LAotICAgICAgICAgICAgICAgICBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgTGFzdFJlc29ydFRlc3QsCi0gICAgICAgICAgICAgICAgIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlclRlc3QsIEhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBDdXN0b21MZXZlbHNBbmRGaWx0ZXJzVGVzdCwgSGFuZGxlclRlc3QsIE1lbW9yeUhhbmRsZXJUZXN0LAorICAgICAgICAgICAgICAgICBDb25maWdGaWxlVGVzdCwgU29ja2V0SGFuZGxlclRlc3QsIERhdGFncmFtSGFuZGxlclRlc3QsCisgICAgICAgICAgICAgICAgIE1lbW9yeVRlc3QsIEVuY29kaW5nVGVzdCwgV2FybmluZ3NUZXN0LCBDb25maWdEaWN0VGVzdCwKKyAgICAgICAgICAgICAgICAgTWFuYWdlclRlc3QsIEZvcm1hdHRlclRlc3QsIEJ1ZmZlcmluZ0Zvcm1hdHRlclRlc3QsCisgICAgICAgICAgICAgICAgIFN0cmVhbUhhbmRsZXJUZXN0LCBMb2dSZWNvcmRGYWN0b3J5VGVzdCwgQ2hpbGRMb2dnZXJUZXN0LAorICAgICAgICAgICAgICAgICBRdWV1ZUhhbmRsZXJUZXN0LCBTaHV0ZG93blRlc3QsIE1vZHVsZUxldmVsTWlzY1Rlc3QsCisgICAgICAgICAgICAgICAgIEJhc2ljQ29uZmlnVGVzdCwgTG9nZ2VyQWRhcHRlclRlc3QsIExvZ2dlclRlc3QsCisgICAgICAgICAgICAgICAgIFNNVFBIYW5kbGVyVGVzdCwgRmlsZUhhbmRsZXJUZXN0LCBSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgTGFzdFJlc29ydFRlc3QsIExvZ1JlY29yZFRlc3QsIEV4Y2VwdGlvblRlc3QsCisgICAgICAgICAgICAgICAgIFN5c0xvZ0hhbmRsZXJUZXN0LCBIVFRQSGFuZGxlclRlc3QsIE5URXZlbnRMb2dIYW5kbGVyVGVzdCwKKyAgICAgICAgICAgICAgICAgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyVGVzdAogICAgICAgICAgICAgICAgICkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCAzZWJjMWY3Li5iNDE3YmVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC00Myw2ICs0Myw1MyBAQAogREJMX01BTlRfRElHID0gc3lzLmZsb2F0X2luZm8ubWFudF9kaWcKIERCTF9NSU5fT1ZFUkZMT1cgPSAyKipEQkxfTUFYX0VYUCAtIDIqKihEQkxfTUFYX0VYUCAtIERCTF9NQU5UX0RJRyAtIDEpCiAKKworIyBQdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIGNvcnJlY3RseS1yb3VuZGVkIGludGVnZXItdG8tZmxvYXQgY29udmVyc2lvbi4KK2RlZiBpbnRfdG9fZmxvYXQobik6CisgICAgIiIiCisgICAgQ29ycmVjdGx5LXJvdW5kZWQgaW50ZWdlci10by1mbG9hdCBjb252ZXJzaW9uLgorCisgICAgIiIiCisgICAgIyBDb25zdGFudHMsIGRlcGVuZGluZyBvbmx5IG9uIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgaW4gdXNlLgorICAgICMgV2UgdXNlIGFuIGV4dHJhIDIgYml0cyBvZiBwcmVjaXNpb24gZm9yIHJvdW5kaW5nIHB1cnBvc2VzLgorICAgIFBSRUNJU0lPTiA9IHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnICsgMgorICAgIFNISUZUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heF9leHAgLSBQUkVDSVNJT04KKyAgICBRX01BWCA9IDEgPDwgUFJFQ0lTSU9OCisgICAgUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT04gPSBbMCwgLTEsIC0yLCAxLCAwLCAtMSwgMiwgMV0KKworICAgICMgUmVkdWNlIHRvIHRoZSBjYXNlIHdoZXJlIG4gaXMgcG9zaXRpdmUuCisgICAgaWYgbiA9PSAwOgorICAgICAgICByZXR1cm4gMC4wCisgICAgZWxpZiBuIDwgMDoKKyAgICAgICAgcmV0dXJuIC1pbnRfdG9fZmxvYXQoLW4pCisKKyAgICAjIENvbnZlcnQgbiB0byBhICdmbG9hdGluZy1wb2ludCcgbnVtYmVyIHEgKiAyKipzaGlmdCwgd2hlcmUgcSBpcyBhbgorICAgICMgaW50ZWdlciB3aXRoICdQUkVDSVNJT04nIHNpZ25pZmljYW50IGJpdHMuICBXaGVuIHNoaWZ0aW5nIG4gdG8gY3JlYXRlIHEsCisgICAgIyB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgdHJlYXRlZCBhcyAnc3RpY2t5Jy4gIFRoYXQgaXMsIHRoZQorICAgICMgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IG9mIHEgaXMgc2V0IGlmIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBiaXQgb2YgbgorICAgICMgd2FzIGFscmVhZHkgc2V0LCBvciBhbnkgb25lIG9mIHRoZSBiaXRzIG9mIG4gbG9zdCBpbiB0aGUgc2hpZnQgd2FzIHNldC4KKyAgICBzaGlmdCA9IG4uYml0X2xlbmd0aCgpIC0gUFJFQ0lTSU9OCisgICAgcSA9IG4gPDwgLXNoaWZ0IGlmIHNoaWZ0IDwgMCBlbHNlIChuID4+IHNoaWZ0KSB8IGJvb2wobiAmIH4oLTEgPDwgc2hpZnQpKQorCisgICAgIyBSb3VuZCBoYWxmIHRvIGV2ZW4gKGFjdHVhbGx5IHJvdW5kcyB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiA0LAorICAgICMgcm91bmRpbmcgdGllcyB0byBhIG11bHRpcGxlIG9mIDgpLgorICAgIHEgKz0gUk9VTkRfSEFMRl9UT19FVkVOX0NPUlJFQ1RJT05bcSAmIDddCisKKyAgICAjIERldGVjdCBvdmVyZmxvdy4KKyAgICBpZiBzaGlmdCArIChxID09IFFfTUFYKSA+IFNISUZUX01BWDoKKyAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiaW50ZWdlciB0b28gbGFyZ2UgdG8gY29udmVydCB0byBmbG9hdCIpCisKKyAgICAjIENoZWNrczogcSBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUsIGFuZCBxKioyKipzaGlmdCBkb2Vzbid0IG92ZXJmbG93LgorICAgIGFzc2VydCBxICUgNCA9PSAwIGFuZCBxIC8vIDQgPD0gMioqKHN5cy5mbG9hdF9pbmZvLm1hbnRfZGlnKQorICAgIGFzc2VydCBxICogMioqc2hpZnQgPD0gc3lzLmZsb2F0X2luZm8ubWF4CisKKyAgICAjIFNvbWUgY2lyY3VsYXJpdHkgaGVyZSwgc2luY2UgZmxvYXQocSkgaXMgZG9pbmcgYW4gaW50LXRvLWZsb2F0CisgICAgIyBjb252ZXJzaW9uLiAgQnV0IGhlcmUgcSBpcyBvZiBib3VuZGVkIHNpemUsIGFuZCBpcyBleGFjdGx5IHJlcHJlc2VudGFibGUKKyAgICAjIGFzIGEgZmxvYXQuICBJbiBhIGxvdy1sZXZlbCBDLWxpa2UgbGFuZ3VhZ2UsIHRoaXMgb3BlcmF0aW9uIHdvdWxkIGJlIGEKKyAgICAjIHNpbXBsZSBjYXN0IChlLmcuLCBmcm9tIHVuc2lnbmVkIGxvbmcgbG9uZyB0byBkb3VibGUpLgorICAgIHJldHVybiBtYXRoLmxkZXhwKGZsb2F0KHEpLCBzaGlmdCkKKworCiAjIHB1cmUgUHl0aG9uIHZlcnNpb24gb2YgY29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbgogZGVmIHRydWVkaXYoYSwgYik6CiAgICAgIiIiQ29ycmVjdGx5LXJvdW5kZWQgdHJ1ZSBkaXZpc2lvbiBmb3IgaW50ZWdlcnMuIiIiCkBAIC0zNjcsNiArNDE0LDIzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE3MjkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoTG9uZ1RydW5jKCkpLCAxNzI5KQogCisgICAgZGVmIGNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oc2VsZiwgbik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnQgLT4gZmxvYXQgY29udmVyc2lvbiBiZWhhdmlvdXIgbWF0Y2hlcworICAgICAgICAjIHRoYXQgb2YgdGhlIHB1cmUgUHl0aG9uIHZlcnNpb24gYWJvdmUuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFjdHVhbCA9IGZsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgYWN0dWFsID0gJ292ZXJmbG93JworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gaW50X3RvX2Zsb2F0KG4pCisgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnb3ZlcmZsb3cnCisKKyAgICAgICAgbXNnID0gKCJFcnJvciBpbiBjb252ZXJzaW9uIG9mIGludGVnZXIge30gdG8gZmxvYXQuICAiCisgICAgICAgICAgICAgICAiR290IHt9LCBleHBlY3RlZCB7fS4iLmZvcm1hdChuLCBhY3R1YWwsIGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCisKICAgICBAc3VwcG9ydC5yZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnZlcnNpb24oc2VsZik6CiAKQEAgLTQyMSw2ICs0ODUsMjIgQEAKICAgICAgICAgICAgIHkgPSAyKipwICogMioqNTMKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGZsb2F0KHgpKSwgeSkKIAorICAgICAgICAjIENvbXBhcmUgYnVpbHRpbiBmbG9hdCBjb252ZXJzaW9uIHdpdGggcHVyZSBQeXRob24gaW50X3RvX2Zsb2F0CisgICAgICAgICMgZnVuY3Rpb24gYWJvdmUuCisgICAgICAgIHRlc3RfdmFsdWVzID0gWworICAgICAgICAgICAgaW50X2RibF9tYXgtMSwgaW50X2RibF9tYXgsIGludF9kYmxfbWF4KzEsCisgICAgICAgICAgICBoYWxmd2F5LTEsIGhhbGZ3YXksIGhhbGZ3YXkgKyAxLAorICAgICAgICAgICAgdG9wX3Bvd2VyLTEsIHRvcF9wb3dlciwgdG9wX3Bvd2VyKzEsCisgICAgICAgICAgICAyKnRvcF9wb3dlci0xLCAyKnRvcF9wb3dlciwgdG9wX3Bvd2VyKnRvcF9wb3dlciwKKyAgICAgICAgXQorICAgICAgICB0ZXN0X3ZhbHVlcy5leHRlbmQoZXhhY3RfdmFsdWVzKQorICAgICAgICBmb3IgcCBpbiByYW5nZSgtNCwgOCk6CisgICAgICAgICAgICBmb3IgeCBpbiByYW5nZSgtMTI4LCAxMjgpOgorICAgICAgICAgICAgICAgIHRlc3RfdmFsdWVzLmFwcGVuZCgyKioocCs1MykgKyB4KQorICAgICAgICBmb3IgdmFsdWUgaW4gdGVzdF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24odmFsdWUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X2NvbnZlcnNpb24oLXZhbHVlKQorCiAgICAgZGVmIHRlc3RfZmxvYXRfb3ZlcmZsb3coc2VsZik6CiAgICAgICAgIGZvciB4IGluIC0yLjAsIC0xLjAsIDAuMCwgMS4wLCAyLjA6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KGludCh4KSksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkgYi9MaWIvdGVzdC90ZXN0X2x6bWEucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzY2YzYgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQpAQCAtMCwwICsxLDE1MTcgQEAKK2Zyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uCitpbXBvcnQgb3MKK2ltcG9ydCByYW5kb20KK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKAorICAgIF80RywgVEVTVEZOLCBpbXBvcnRfbW9kdWxlLCBiaWdtZW10ZXN0LCBydW5fdW5pdHRlc3QsIHVubGluaworKQorCitsem1hID0gaW1wb3J0X21vZHVsZSgibHptYSIpCitmcm9tIGx6bWEgaW1wb3J0IExaTUFDb21wcmVzc29yLCBMWk1BRGVjb21wcmVzc29yLCBMWk1BRXJyb3IsIExaTUFGaWxlCisKKworY2xhc3MgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICMgVGVzdCBlcnJvciBjYXNlcy4KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD0zLjQ1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIExaTUFDb21wcmVzc29yLCBjaGVjaz0iIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgcHJlc2V0PSJhc2RmIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz0zKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgRk9STUFUX0FVVE8gd2hlbiBjb21wcmVzc2luZy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgTFpNQUNvbXByZXNzb3IsIGZvcm1hdD1sem1hLkZPUk1BVF9BVVRPKQorICAgICAgICAjIENhbid0IHNwZWNpZnkgYSBwcmVzZXQgYW5kIGEgY3VzdG9tIGZpbHRlciBjaGFpbiBhdCB0aGUgc2FtZSB0aW1lLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUNvbXByZXNzb3IocHJlc2V0PTcsIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9MWk1BMn1dKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgTFpNQURlY29tcHJlc3NvciwgbWVtbGltaXQ9YiJxdyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPSJ6enoiKQorICAgICAgICAjIENhbm5vdCBzcGVjaWZ5IGEgbWVtb3J5IGxpbWl0IHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBtZW1saW1pdD0weDEwMDAwMDApCisgICAgICAgICMgQ2FuIG9ubHkgc3BlY2lmeSBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gd2l0aCBGSUxURVJfUkFXLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BRGVjb21wcmVzc29yLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQURlY29tcHJlc3Nvcihmb3JtYXQ9bHptYS5GT1JNQVRfQUxPTkUsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKworICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJmb28iLCBiImJhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHpjLmZsdXNoLCBiImJsYWgiKQorICAgICAgICBlbXB0eSA9IGx6Yy5mbHVzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGx6Yy5jb21wcmVzcywgYiJxdXV4IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbHpjLmZsdXNoKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBiImZvbyIsIGIiYmFyIikKKyAgICAgICAgbHpkLmRlY29tcHJlc3MoZW1wdHkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJxdXV4IikKKworICAgIGRlZiB0ZXN0X2JhZF9maWx0ZXJfc3BlYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1bYiJ3b2JzaXRlIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIExaTUFDb21wcmVzc29yLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBMWk1BQ29tcHJlc3NvciwgZmlsdGVycz1beyJpZCI6IDk4NzY1fV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfREVMVEEsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BQ29tcHJlc3NvcihmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfWDg2LCAiZm9vIjogMH1dKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2FmdGVyX2VvZihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBsemQuZGVjb21wcmVzcywgYiJueWFuIikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9tZW1saW1pdChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcihtZW1saW1pdD0xMDI0KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORSkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiBfdGVzdF9kZWNvbXByZXNzb3Ioc2VsZiwgbHpkLCBkYXRhLCBjaGVjaywgdW51c2VkX2RhdGE9YiIiKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsemQuZW9mKQorICAgICAgICBvdXQgPSBsemQuZGVjb21wcmVzcyhkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgSU5QVVQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLmNoZWNrLCBjaGVjaykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCB1bnVzZWRfZGF0YSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9hdXRvKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl94eihzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9YWikKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1haLCBsem1hLkNIRUNLX0NSQzY0KQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX2Fsb25lKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfQUxPTkUsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfMShzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV18xLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfcmF3XzIoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc29yX3Jhd18zKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuQ0hFQ0tfTk9ORSkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9yYXdfNChzZWxmKToKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBDT01QUkVTU0VEX1JBV180LCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfY2h1bmtzKHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgb3V0ID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKENPTVBSRVNTRURfWFopLCAxMCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6ZC5lb2YpCisgICAgICAgICAgICBvdXQuYXBwZW5kKGx6ZC5kZWNvbXByZXNzKENPTVBSRVNTRURfWFpbaTppKzEwXSkpCisgICAgICAgIG91dCA9IGIiIi5qb2luKG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIElOUFVUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGx6ZC5jaGVjaywgbHptYS5DSEVDS19DUkM2NCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6ZC5lb2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHpkLnVudXNlZF9kYXRhLCBiIiIpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfdW51c2VkX2RhdGEoc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBleHRyYSA9IGIiZm9vYmxpYmFyIgorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBleHRyYSwgbHptYS5DSEVDS19DUkM2NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51c2VkX2RhdGE9ZXh0cmEpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9SQVdfMSkKKworICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKGx6bWEuRk9STUFUX1haKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6ZC5kZWNvbXByZXNzLCBDT01QUkVTU0VEX0FMT05FKQorCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHpkLmRlY29tcHJlc3MsIENPTVBSRVNTRURfWFopCisKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsemQuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9YWikKKworICAgICMgVGVzdCB0aGF0IExaTUFDb21wcmVzc29yLT5MWk1BRGVjb21wcmVzc29yIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF94eihzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IGx6Yy5jb21wcmVzcyhJTlBVVCkgKyBsemMuZmx1c2goKQorICAgICAgICBsemQgPSBMWk1BRGVjb21wcmVzc29yKCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19DUkM2NCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9hbG9uZShzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IobHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGNkYXRhID0gbHpjLmNvbXByZXNzKElOUFVUKSArIGx6Yy5mbHVzaCgpCisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIGNkYXRhLCBsem1hLkNIRUNLX05PTkUpCisKKyAgICBkZWYgdGVzdF9yb3VuZHRyaXBfcmF3KHNlbGYpOgorICAgICAgICBsemMgPSBMWk1BQ29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoSU5QVVQpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3Nvcihsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5fdGVzdF9kZWNvbXByZXNzb3IobHpkLCBjZGF0YSwgbHptYS5DSEVDS19OT05FKQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX2NodW5rcyhzZWxmKToKKyAgICAgICAgbHpjID0gTFpNQUNvbXByZXNzb3IoKQorICAgICAgICBjZGF0YSA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihJTlBVVCksIDEwKToKKyAgICAgICAgICAgIGNkYXRhLmFwcGVuZChsemMuY29tcHJlc3MoSU5QVVRbaTppKzEwXSkpCisgICAgICAgIGNkYXRhLmFwcGVuZChsemMuZmx1c2goKSkKKyAgICAgICAgY2RhdGEgPSBiIiIuam9pbihjZGF0YSkKKyAgICAgICAgbHpkID0gTFpNQURlY29tcHJlc3NvcigpCisgICAgICAgIHNlbGYuX3Rlc3RfZGVjb21wcmVzc29yKGx6ZCwgY2RhdGEsIGx6bWEuQ0hFQ0tfQ1JDNjQpCisKKyAgICAjIExaTUFEZWNvbXByZXNzb3IgaW50ZW50aW9uYWxseSBkb2VzIG5vdCBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzb3JfbXVsdGlzdHJlYW0oc2VsZik6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBzZWxmLl90ZXN0X2RlY29tcHJlc3NvcihsemQsIENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsem1hLkNIRUNLX0NSQzY0LCB1bnVzZWRfZGF0YT1DT01QUkVTU0VEX0FMT05FKQorCisgICAgIyBUZXN0IHdpdGggaW5wdXRzIGxhcmdlciB0aGFuIDRHaUIuCisKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTIpCisgICAgZGVmIHRlc3RfY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6YyA9IExaTUFDb21wcmVzc29yKCkKKyAgICAgICAgY2RhdGEgPSBsemMuY29tcHJlc3MoYiJ4IiAqIHNpemUpICsgbHpjLmZsdXNoKCkKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhKSwgc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRkYXRhLnN0cmlwKGIieCIpKSwgMCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRkYXRhID0gTm9uZQorCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0zKQorICAgIGRlZiB0ZXN0X2RlY29tcHJlc3Nvcl9iaWdtZW0oc2VsZiwgc2l6ZSk6CisgICAgICAgIGx6ZCA9IExaTUFEZWNvbXByZXNzb3IoKQorICAgICAgICBibG9ja3NpemUgPSAxMCAqIDEwMjQgKiAxMDI0CisgICAgICAgIGJsb2NrID0gcmFuZG9tLmdldHJhbmRiaXRzKGJsb2Nrc2l6ZSAqIDgpLnRvX2J5dGVzKGJsb2Nrc2l6ZSwgImxpdHRsZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlucHV0ID0gYmxvY2sgKiAoc2l6ZSAvLyBibG9ja3NpemUgKyAxKQorICAgICAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKGlucHV0KQorICAgICAgICAgICAgZGRhdGEgPSBsemQuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIGlucHV0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaW5wdXQgPSBjZGF0YSA9IGRkYXRhID0gTm9uZQorCisKK2NsYXNzIENvbXByZXNzRGVjb21wcmVzc0Z1bmN0aW9uVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIyBUZXN0IGVycm9yIGNhc2VzOgorCisgICAgZGVmIHRlc3RfYmFkX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5jb21wcmVzcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZvcm1hdD0ieHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgY2hlY2s9Im5vbmUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGx6bWEuY29tcHJlc3MsIGIiIiwgcHJlc2V0PSJibGFoIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmNvbXByZXNzLCBiIiIsIGZpbHRlcnM9MTAyNCkKKyAgICAgICAgIyBDYW4ndCBzcGVjaWZ5IGEgcHJlc2V0IGFuZCBhIGN1c3RvbSBmaWx0ZXIgY2hhaW4gYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuY29tcHJlc3MoYiIiLCBwcmVzZXQ9MywgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbHptYS5kZWNvbXByZXNzLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgZm9ybWF0PSJsem1hIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsem1hLmRlY29tcHJlc3MsIGIiIiwgbWVtbGltaXQ9Ny4zZTkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9e30pCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBtZW1vcnkgbGltaXQgd2l0aCBGSUxURVJfUkFXLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKGIiIiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgbWVtbGltaXQ9MHgxMDAwMDAwKQorICAgICAgICAjIENhbiBvbmx5IHNwZWNpZnkgYSBjdXN0b20gZmlsdGVyIGNoYWluIHdpdGggRklMVEVSX1JBVy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcyhiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWiwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgICAgICBiIiIsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19tZW1saW1pdChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIG1lbWxpbWl0PTEwMjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9YWiwgZm9ybWF0PWx6bWEuRk9STUFUX1haLCBtZW1saW1pdD0xMDI0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgICAgIENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSwgbWVtbGltaXQ9MTAyNCkKKworICAgICMgVGVzdCBMWk1BRGVjb21wcmVzc29yIG9uIGtub3duLWdvb2QgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZ29vZF9pbnB1dChzZWxmKToKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9YWiwgbHptYS5GT1JNQVRfWFopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGx6bWEuRk9STUFUX0FMT05FKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV18xLCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoCisgICAgICAgICAgICAgICAgQ09NUFJFU1NFRF9SQVdfMiwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKAorICAgICAgICAgICAgICAgIENPTVBSRVNTRURfUkFXXzMsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcygKKyAgICAgICAgICAgICAgICBDT01QUkVTU0VEX1JBV180LCBsem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfaW5wdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvciwgbHptYS5kZWNvbXByZXNzLCBDT01QUkVTU0VEX1haWzoxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IsIGx6bWEuZGVjb21wcmVzcywgQ09NUFJFU1NFRF9BTE9ORVs6MTI4XSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzFbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzJbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzNbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yLCBsem1hLmRlY29tcHJlc3MsIENPTVBSRVNTRURfUkFXXzRbOjEyOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfNCkKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfYmFkX2lucHV0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLmRlY29tcHJlc3MoQ09NUFJFU1NFRF9SQVdfMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfQUxPTkUsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5kZWNvbXByZXNzKENPTVBSRVNTRURfWFosIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1GSUxURVJTX1JBV18xKQorCisgICAgIyBUZXN0IHRoYXQgY29tcHJlc3MoKS0+ZGVjb21wcmVzcygpIHByZXNlcnZlcyB0aGUgaW5wdXQgZGF0YS4KKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcChzZWxmKToKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQpCisKKyAgICAgICAgY2RhdGEgPSBsem1hLmNvbXByZXNzKElOUFVULCBsem1hLkZPUk1BVF9YWikKKyAgICAgICAgZGRhdGEgPSBsem1hLmRlY29tcHJlc3MoY2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgICAgIGNkYXRhID0gbHptYS5jb21wcmVzcyhJTlBVVCwgbHptYS5GT1JNQVRfQUxPTkUpCisgICAgICAgIGRkYXRhID0gbHptYS5kZWNvbXByZXNzKGNkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRkYXRhLCBJTlBVVCkKKworICAgICAgICBjZGF0YSA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV180KQorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhjZGF0YSwgbHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGRhdGEsIElOUFVUKQorCisgICAgIyBVbmxpa2UgTFpNQURlY29tcHJlc3NvciwgZGVjb21wcmVzcygpICpkb2VzKiBoYW5kbGUgY29uY2F0ZW5hdGVkIHN0cmVhbXMuCisKKyAgICBkZWYgdGVzdF9kZWNvbXByZXNzX211bHRpc3RyZWFtKHNlbGYpOgorICAgICAgICBkZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhDT01QUkVTU0VEX1haICsgQ09NUFJFU1NFRF9BTE9ORSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZGF0YSwgSU5QVVQgKiAyKQorCisKK2NsYXNzIFRlbXBGaWxlOgorICAgICIiIkNvbnRleHQgbWFuYWdlciAtIGNyZWF0ZXMgYSBmaWxlLCBhbmQgZGVsZXRlcyBpdCBvbiBfX2V4aXRfXy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZGF0YT1iIiIpOgorICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKKyAgICAgICAgc2VsZi5kYXRhID0gZGF0YQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKHNlbGYuZGF0YSkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6CisgICAgICAgIHVubGluayhzZWxmLmZpbGVuYW1lKQorCisKK2NsYXNzIEZpbGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTygpLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAiciIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAicmIiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgIndiIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhIik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4sICJhYiIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX21vZGUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAoMywgIngiKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInJ0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJyKyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCAid3QiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgIncrIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksICJydyIpCisKKyAgICBkZWYgdGVzdF9pbml0X2JhZF9jaGVjayhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGNoZWNrPWIiYXNkIikKKyAgICAgICAgIyBDSEVDS19VTktOT1dOIGFuZCBhbnl0aGluZyBhYm92ZSBDSEVDS19JRF9NQVggc2hvdWxkIGJlIGludmFsaWQuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX1VOS05PV04pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTFpNQUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBjaGVjaz1sem1hLkNIRUNLX0lEX01BWCArIDMpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBjaGVjayB3aXRoIG1vZGU9InIiLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19OT05FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgY2hlY2s9bHptYS5DSEVDS19DUkMzMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfQ1JDNjQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBjaGVjaz1sem1hLkNIRUNLX1NIQTI1NikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGNoZWNrPWx6bWEuQ0hFQ0tfVU5LTk9XTikKKworICAgIGRlZiB0ZXN0X2luaXRfYmFkX3ByZXNldChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD00LjM5KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTEwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExaTUFFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgcHJlc2V0PTIzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIHByZXNldD0tMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9LTcpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBwcmVzZXQ9ImZvbyIpCisgICAgICAgICMgQ2Fubm90IHNwZWNpZnkgYSBwcmVzZXQgd2l0aCBtb2RlPSJyIi4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIHByZXNldD0zKQorCisgICAgZGVmIHRlc3RfaW5pdF9iYWRfZmlsdGVyX3NwZWMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVtiIndvYnNpdGUiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLCBmaWx0ZXJzPVt7Inh5enp5IjogM31dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsIGZpbHRlcnM9W3siaWQiOiA5ODc2NX1dKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIsCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPVt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJmb28iOiAwfV0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwKKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM9W3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImZvbyI6IDB9XSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciLAorICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1beyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgImZvbyI6IDB9XSkKKworICAgIGRlZiB0ZXN0X2luaXRfd2l0aF9wcmVzZXRfYW5kX2ZpbHRlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBMWk1BRmlsZShCeXRlc0lPKCksICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgIHByZXNldD02LCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpCisKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKENPTVBSRVNTRURfWFopIGFzIHNyYzoKKyAgICAgICAgICAgIGYgPSBMWk1BRmlsZShzcmMpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICMgTFpNQUZpbGUuY2xvc2UoKSBzaG91bGQgbm90IGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorICAgICAgICAgICAgIyBUcnkgY2xvc2luZyBhbiBhbHJlYWR5LWNsb3NlZCBMWk1BRmlsZS4KKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzcmMuY2xvc2VkKQorCisgICAgICAgICMgVGVzdCB3aXRoIGEgcmVhbCBmaWxlIG9uIGRpc2ssIG9wZW5lZCBkaXJlY3RseSBieSBMWk1BRmlsZS4KKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIGZwID0gZi5fZnAKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgIyBIZXJlLCBMWk1BRmlsZS5jbG9zZSgpICpzaG91bGQqIGNsb3NlIHRoZSB1bmRlcmx5aW5nIGZpbGUgb2JqZWN0LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZwLmNsb3NlZCkKKyAgICAgICAgICAgICMgVHJ5IGNsb3NpbmcgYW4gYWxyZWFkeS1jbG9zZWQgTFpNQUZpbGUuCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2Nsb3NlZChzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgICAgICBmLnJlYWQoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5jbG9zZWQpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLmNsb3NlZCkKKworICAgIGRlZiB0ZXN0X2ZpbGVubyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBmLmZpbGVubykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgZiA9IExaTUFGaWxlKFRFU1RGTikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuZmlsZW5vKCksIGYuX2ZwLmZpbGVubygpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLmZpbGVubygpLCBpbnQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLmZpbGVubykKKworICAgIGRlZiB0ZXN0X3NlZWthYmxlKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5zZWVrYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2Vla2FibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgICAgIHNyYyA9IEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikKKyAgICAgICAgc3JjLnNlZWthYmxlID0gbGFtYmRhOiBGYWxzZQorICAgICAgICBmID0gTFpNQUZpbGUoc3JjKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuc2Vla2FibGUoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnNlZWthYmxlKQorCisgICAgZGVmIHRlc3RfcmVhZGFibGUoc2VsZik6CisgICAgICAgIGYgPSBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShmLnJlYWRhYmxlKCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkYWJsZSkKKworICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGFibGUpCisKKyAgICBkZWYgdGVzdF93cml0YWJsZShzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgZi5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYud3JpdGFibGUpCisKKyAgICBkZWYgdGVzdF9yZWFkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgZm9ybWF0PWx6bWEuRk9STUFUX1haKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV18xKSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzEpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzIpLAorICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdD1sem1hLkZPUk1BVF9SQVcsIGZpbHRlcnM9RklMVEVSU19SQVdfMikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMyksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18zKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1JBV180KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzQpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiIikKKworICAgIGRlZiB0ZXN0X3JlYWRfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfQUxPTkUpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksIGIiIikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopLCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgwKSwgYiIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkXzEwKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBjaHVua3MgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTApCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4ocmVzdWx0KSwgMTApCisgICAgICAgICAgICAgICAgY2h1bmtzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGNodW5rcyksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcmVhZF9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogNSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKyBDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUICogMikKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfUkFXXzMgKiA0KSwKKyAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPUZJTFRFUlNfUkFXXzMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDQpCisKKyAgICBkZWYgdGVzdF9yZWFkX211bHRpc3RyZWFtX2J1ZmZlcl9zaXplX2FsaWduZWQoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGUgY2FzZSB3aGVyZSBhIHN0cmVhbSBib3VuZGFyeSBjb2luY2lkZXMgd2l0aCB0aGUgZW5kCisgICAgICAgICMgb2YgdGhlIHJhdyByZWFkIGJ1ZmZlci4KKyAgICAgICAgc2F2ZWRfYnVmZmVyX3NpemUgPSBsem1hLl9CVUZGRVJfU0laRQorICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IGxlbihDT01QUkVTU0VEX1haKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqICA1KSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBsem1hLl9CVUZGRVJfU0laRSA9IHNhdmVkX2J1ZmZlcl9zaXplCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShURVNURk4pIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX2ZpbGVfd2l0aF9ieXRlc19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBURVNURk4uZW5jb2RlKCJhc2NpaSIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJUZW1wb3JhcnkgZmlsZSBuYW1lIG5lZWRzIHRvIGJlIEFTQ0lJIikKKyAgICAgICAgd2l0aCBUZW1wRmlsZShURVNURk4sIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShieXRlc19maWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkX2luY29tcGxldGUoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haWzoxMjhdKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVPRkVycm9yLCBmLnJlYWQpCisKKyAgICBkZWYgdGVzdF9yZWFkX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yZWFkMShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgpCisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBibG9ja3MuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oYmxvY2tzKSwgSU5QVVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZDEoKSwgYiIiKQorCisgICAgZGVmIHRlc3RfcmVhZDFfMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQxKDApLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV8xMChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgYmxvY2tzID0gW10KKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkMSgxMCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGJsb2Nrcy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiIiIuam9pbihibG9ja3MpLCBJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9tdWx0aXN0cmVhbShzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFogKiA1KSkgYXMgZjoKKyAgICAgICAgICAgIGJsb2NrcyA9IFtdCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYucmVhZDEoKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiIi5qb2luKGJsb2NrcyksIElOUFVUICogNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkMSgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9yZWFkMV9iYWRfYXJncyhzZWxmKToKKyAgICAgICAgZiA9IExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWQxKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5yZWFkMSkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnJlYWQxLCBOb25lKQorCisgICAgZGVmIHRlc3RfcGVlayhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5wZWVrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4ocmVzdWx0KSwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJTlBVVC5zdGFydHN3aXRoKHJlc3VsdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5wZWVrKDEwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxlbihyZXN1bHQpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKElOUFVULnN0YXJ0c3dpdGgocmVzdWx0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorCisgICAgZGVmIHRlc3RfcGVla19iYWRfYXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucGVlaykKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9yKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX0FMT05FKSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiksIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9BTE9ORSksIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGxpc3QoaXRlcihmKSksIGxpbmVzKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9SQVdfMiksCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1GSUxURVJTX1JBV18yKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwobGlzdChpdGVyKGYpKSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKElOUFVUKSBhcyBmOgorICAgICAgICAgICAgbGluZXMgPSBmLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZSgpLCBsaW5lKQorCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oSU5QVVQpIGFzIGY6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZi5yZWFkbGluZXMoKSwgbGluZXMpCisKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGRzdDoKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZHN0LCAidyIsIGZvcm1hdD1sem1hLkZPUk1BVF9YWikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVULCBmb3JtYXQ9bHptYS5GT1JNQVRfWFopCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgZHN0OgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShkc3QsICJ3IiwgZm9ybWF0PWx6bWEuRk9STUFUX0FMT05FKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBleHBlY3RlZCA9IGx6bWEuY29tcHJlc3MoSU5QVVQsIGZvcm1hdD1sem1hLkZPUk1BVF9BTE9ORSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciLCBmb3JtYXQ9bHptYS5GT1JNQVRfUkFXLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCwgZm9ybWF0PWx6bWEuRk9STUFUX1JBVywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzPUZJTFRFUlNfUkFXXzIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlXzEwKHNlbGYpOgorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBzdGFydCBpbiByYW5nZSgwLCBsZW4oSU5QVVQpLCAxMCk6CisgICAgICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVRbc3RhcnQ6c3RhcnQrMTBdKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBsem1hLmNvbXByZXNzKElOUFVUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3QuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF93cml0ZV9hcHBlbmQoc2VsZik6CisgICAgICAgIHBhcnQxID0gSU5QVVRbOjEwMjRdCisgICAgICAgIHBhcnQyID0gSU5QVVRbMTAyNDoxNTM2XQorICAgICAgICBwYXJ0MyA9IElOUFVUWzE1MzY6XQorICAgICAgICBleHBlY3RlZCA9IGIiIi5qb2luKGx6bWEuY29tcHJlc3MoeCkgZm9yIHggaW4gKHBhcnQxLCBwYXJ0MiwgcGFydDMpKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDEpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDIpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdC5nZXR2YWx1ZSgpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2ZpbGUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZV93aXRoX2J5dGVzX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IFRFU1RGTi5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRlbXBvcmFyeSBmaWxlIG5hbWUgbmVlZHMgdG8gYmUgQVNDSUkiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGJ5dGVzX2ZpbGVuYW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZXhwZWN0ZWQpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfYXBwZW5kX3RvX2ZpbGUoc2VsZik6CisgICAgICAgIHBhcnQxID0gSU5QVVRbOjEwMjRdCisgICAgICAgIHBhcnQyID0gSU5QVVRbMTAyNDoxNTM2XQorICAgICAgICBwYXJ0MyA9IElOUFVUWzE1MzY6XQorICAgICAgICBleHBlY3RlZCA9IGIiIi5qb2luKGx6bWEuY29tcHJlc3MoeCkgZm9yIHggaW4gKHBhcnQxLCBwYXJ0MiwgcGFydDMpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDEpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDIpCisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKFRFU1RGTiwgImEiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUocGFydDMpCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGV4cGVjdGVkKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X3dyaXRlX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTygpLCAidyIpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLndyaXRlLCBiImZvbyIpCisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi53cml0ZSwgYiJiYXIiKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLndyaXRlLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLndyaXRlLCAidGV4dCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYud3JpdGUsIDc4OSkKKworICAgIGRlZiB0ZXN0X3dyaXRlbGluZXMoc2VsZik6CisgICAgICAgIHdpdGggQnl0ZXNJTyhJTlBVVCkgYXMgZjoKKyAgICAgICAgICAgIGxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBkc3Q6CisgICAgICAgICAgICB3aXRoIExaTUFGaWxlKGRzdCwgInciKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGVsaW5lcyhsaW5lcykKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbHptYS5jb21wcmVzcyhJTlBVVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHN0LmdldHZhbHVlKCksIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsoNTU1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbNTU1Ol0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2ZvcndhcmRfYWNyb3NzX3N0cmVhbXMoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haICogMikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsobGVuKElOUFVUKSArIDEyMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWzEyMzpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19mb3J3YXJkX3JlbGF0aXZlX3RvX2N1cnJlbnQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYucmVhZCgxMDApCisgICAgICAgICAgICBmLnNlZWsoMTIzNiwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWzEzMzY6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfZm9yd2FyZF9yZWxhdGl2ZV90b19lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtNTU1LCAyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbLTU1NTpdKQorCisgICAgZGVmIHRlc3Rfc2Vla19iYWNrd2FyZChzZWxmKToKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKDEwMDEpCisgICAgICAgICAgICBmLnNlZWsoMjExKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbMjExOl0pCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhY2t3YXJkX2Fjcm9zc19zdHJlYW1zKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWiAqIDIpKSBhcyBmOgorICAgICAgICAgICAgZi5yZWFkKGxlbihJTlBVVCkgKyAzMzMpCisgICAgICAgICAgICBmLnNlZWsoNzM3KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVRbNzM3Ol0gKyBJTlBVVCkKKworICAgIGRlZiB0ZXN0X3NlZWtfYmFja3dhcmRfcmVsYXRpdmVfdG9fZW5kKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBmLnNlZWsoLTE1MCwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUWy0xNTA6XSkKKworICAgIGRlZiB0ZXN0X3NlZWtfcGFzdF9lbmQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhsZW4oSU5QVVQpICsgOTAwMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCisKKyAgICBkZWYgdGVzdF9zZWVrX3Bhc3Rfc3RhcnQoc2VsZik6CisgICAgICAgIHdpdGggTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlaygtODgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKKyAgICBkZWYgdGVzdF9zZWVrX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKCksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYuc2VlaywgMCkKKyAgICAgICAgd2l0aCBMWk1BRmlsZShCeXRlc0lPKENPTVBSRVNTRURfWFopKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCA5LCAoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5zZWVrLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBmLnNlZWssIGIiZGVycCIpCisKKyAgICBkZWYgdGVzdF90ZWxsKHNlbGYpOgorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oQ09NUFJFU1NFRF9YWikpIGFzIGY6CisgICAgICAgICAgICBwb3MgPSAwCisgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHBvcykKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmLnJlYWQoMTgzKQorICAgICAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgcG9zICs9IGxlbihyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYudGVsbCgpLCBsZW4oSU5QVVQpKQorICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgInciKSBhcyBmOgorICAgICAgICAgICAgZm9yIHBvcyBpbiByYW5nZSgwLCBsZW4oSU5QVVQpLCAxNDQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIHBvcykKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUW3Bvczpwb3MrMTQ0XSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi50ZWxsKCksIGxlbihJTlBVVCkpCisKKyAgICBkZWYgdGVzdF90ZWxsX2JhZF9hcmdzKHNlbGYpOgorICAgICAgICBmID0gTFpNQUZpbGUoQnl0ZXNJTyhDT01QUkVTU0VEX1haKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYudGVsbCkKKworCitjbGFzcyBPcGVuVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmluYXJ5X21vZGVzKHNlbGYpOgorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisgICAgICAgIHdpdGggQnl0ZXNJTygpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgSU5QVVQgKiAyKQorCisgICAgZGVmIHRlc3RfdGV4dF9tb2RlcyhzZWxmKToKKyAgICAgICAgdW5jb21wcmVzc2VkID0gSU5QVVQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfWFopLCAicnQiKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgdW5jb21wcmVzc2VkKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJhdCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh1bmNvbXByZXNzZWQpCisgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoYmlvLmdldHZhbHVlKCkpLmRlY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZF9yYXcgKiAyKQorCisgICAgZGVmIHRlc3RfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOKToKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgIndiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oVEVTVEZOLCAiYWIiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUoSU5QVVQpCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihURVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQgKiAyKQorCisgICAgZGVmIHRlc3RfYmFkX3BhcmFtcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGludmFsaWQgcGFyYW1ldGVyIGNvbWJpbmF0aW9ucy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEub3BlbihURVNURk4sICIiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgIngiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJidCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBsem1hLm9wZW4oVEVTVEZOLCAicmIiLCBlbmNvZGluZz0idXRmLTgiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJiIiwgZXJyb3JzPSJpZ25vcmUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5vcGVuKFRFU1RGTiwgInJiIiwgbmV3bGluZT0iXG4iKQorCisgICAgZGVmIHRlc3RfZm9ybWF0X2FuZF9maWx0ZXJzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgbm9uLWRlZmF1bHQgZm9ybWF0IGFuZCBmaWx0ZXIgY2hhaW4uCisgICAgICAgIG9wdGlvbnMgPSB7ImZvcm1hdCI6IGx6bWEuRk9STUFUX1JBVywgImZpbHRlcnMiOiBGSUxURVJTX1JBV18xfQorICAgICAgICB3aXRoIGx6bWEub3BlbihCeXRlc0lPKENPTVBSRVNTRURfUkFXXzEpLCAicmIiLCAqKm9wdGlvbnMpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid2IiLCAqKm9wdGlvbnMpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIGZpbGVfZGF0YSA9IGx6bWEuZGVjb21wcmVzcyhiaW8uZ2V0dmFsdWUoKSwgKipvcHRpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBub24tZGVmYXVsdCBlbmNvZGluZy4KKyAgICAgICAgdW5jb21wcmVzc2VkID0gSU5QVVQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIHVuY29tcHJlc3NlZF9yYXcgPSB1bmNvbXByZXNzZWQucmVwbGFjZSgiXG4iLCBvcy5saW5lc2VwKQorICAgICAgICB3aXRoIEJ5dGVzSU8oKSBhcyBiaW86CisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJ3dCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgICAgIGYud3JpdGUodW5jb21wcmVzc2VkKQorICAgICAgICAgICAgZmlsZV9kYXRhID0gbHptYS5kZWNvbXByZXNzKGJpby5nZXR2YWx1ZSgpKS5kZWNvZGUoInV0Zi0xNi1sZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVfZGF0YSwgdW5jb21wcmVzc2VkX3JhdykKKyAgICAgICAgICAgIGJpby5zZWVrKDApCisgICAgICAgICAgICB3aXRoIGx6bWEub3BlbihiaW8sICJydCIsIGVuY29kaW5nPSJ1dGYtMTYtbGUiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHVuY29tcHJlc3NlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgVGVzdCB3aWggbm9uLWRlZmF1bHQgZW5jb2RpbmcgZXJyb3IgaGFuZGxlci4KKyAgICAgICAgd2l0aCBCeXRlc0lPKGx6bWEuY29tcHJlc3MoYiJmb29ceGZmYmFyIikpIGFzIGJpbzoKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgZW5jb2Rpbmc9ImFzY2lpIiwgZXJyb3JzPSJpZ25vcmUiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICJmb29iYXIiKQorCisgICAgZGVmIHRlc3RfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHdpdGggZXhwbGljaXQgbmV3bGluZSAodW5pdmVyc2FsIG5ld2xpbmUgbW9kZSBkaXNhYmxlZCkuCisgICAgICAgIHRleHQgPSBJTlBVVC5kZWNvZGUoImFzY2lpIikKKyAgICAgICAgd2l0aCBCeXRlc0lPKCkgYXMgYmlvOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oYmlvLCAid3QiLCBuZXdsaW5lPSJcbiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSh0ZXh0KQorICAgICAgICAgICAgYmlvLnNlZWsoMCkKKyAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKGJpbywgInJ0IiwgbmV3bGluZT0iXHIiKSBhcyBmOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW3RleHRdKQorCisKK2NsYXNzIE1pc2NlbGxhbmVvdXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9pc19jaGVja19zdXBwb3J0ZWQoc2VsZik6CisgICAgICAgICMgQ0hFQ0tfTk9ORSBhbmQgQ0hFQ0tfQ1JDMzIgc2hvdWxkIGFsd2F5cyBiZSBzdXBwb3J0ZWQsCisgICAgICAgICMgcmVnYXJkbGVzcyBvZiB0aGUgb3B0aW9ucyBsaWJsem1hIHdhcyBjb21waWxlZCB3aXRoLgorICAgICAgICBzZWxmLmFzc2VydFRydWUobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19OT05FKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGx6bWEuaXNfY2hlY2tfc3VwcG9ydGVkKGx6bWEuQ0hFQ0tfQ1JDMzIpKQorCisgICAgICAgICMgVGhlIC54eiBmb3JtYXQgc3BlYyBjYW5ub3Qgc3RvcmUgY2hlY2sgSURzIGFib3ZlIHRoaXMgdmFsdWUuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobHptYS5pc19jaGVja19zdXBwb3J0ZWQobHptYS5DSEVDS19JRF9NQVggKyAxKSkKKworICAgICAgICAjIFRoaXMgdmFsdWUgc2hvdWxkIG5vdCBiZSBhIHZhbGlkIGNoZWNrIElELgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGx6bWEuaXNfY2hlY2tfc3VwcG9ydGVkKGx6bWEuQ0hFQ0tfVU5LTk9XTikpCisKKyAgICBkZWYgdGVzdF9fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoYiJub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGx6bWEuX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyh7ImlkIjogMHgxMDB9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiBsem1hLkZJTFRFUl9MWk1BMiwgImp1bmsiOiAxMn0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMobHptYS5MWk1BRXJyb3IpOgorICAgICAgICAgICAgbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsiaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlzdCI6IDkwMDF9KQorCisgICAgICAgICMgVGVzdCB3aXRoIHBhcmFtZXRlcnMgdXNlZCBieSB6aXBmaWxlIG1vZHVsZS4KKyAgICAgICAgcHJvcHMgPSBsem1hLl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoeworICAgICAgICAgICAgICAgICJpZCI6IGx6bWEuRklMVEVSX0xaTUExLAorICAgICAgICAgICAgICAgICJwYiI6IDIsCisgICAgICAgICAgICAgICAgImxwIjogMCwKKyAgICAgICAgICAgICAgICAibGMiOiAzLAorICAgICAgICAgICAgICAgICJkaWN0X3NpemUiOiA4IDw8IDIwLAorICAgICAgICAgICAgfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm9wcywgYiJdXHgwMFx4MDBceDgwXHgwMCIpCisKKyAgICBkZWYgdGVzdF9fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfWDg2LCB7InNob3VsZCBiZSI6IGJ5dGVzfSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhsem1hLkxaTUFFcnJvcik6CisgICAgICAgICAgICBsem1hLl9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMobHptYS5GSUxURVJfREVMVEEsIGIidG9vIGxvbmciKQorCisgICAgICAgICMgVGVzdCB3aXRoIHBhcmFtZXRlcnMgdXNlZCBieSB6aXBmaWxlIG1vZHVsZS4KKyAgICAgICAgZmlsdGVyc3BlYyA9IGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcygKKyAgICAgICAgICAgICAgICBsem1hLkZJTFRFUl9MWk1BMSwgYiJdXHgwMFx4MDBceDgwXHgwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1siaWQiXSwgbHptYS5GSUxURVJfTFpNQTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1sicGIiXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXJzcGVjWyJscCJdLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcnNwZWNbImxjIl0sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyc3BlY1siZGljdF9zaXplIl0sIDggPDwgMjApCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfcHJvcGVydGllc19yb3VuZHRyaXAoc2VsZik6CisgICAgICAgIHNwZWMxID0gbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKAorICAgICAgICAgICAgICAgIGx6bWEuRklMVEVSX0xaTUExLCBiIl1ceDAwXHgwMFx4ODBceDAwIikKKyAgICAgICAgcmVlbmNvZGVkID0gbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHNwZWMxKQorICAgICAgICBzcGVjMiA9IGx6bWEuX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhsem1hLkZJTFRFUl9MWk1BMSwgcmVlbmNvZGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwZWMxLCBzcGVjMikKKworCisjIFRlc3QgZGF0YToKKworSU5QVVQgPSBiIiIiCitMQUVSVEVTCisKKyAgICAgICBPLCBmZWFyIG1lIG5vdC4KKyAgICAgICBJIHN0YXkgdG9vIGxvbmc6IGJ1dCBoZXJlIG15IGZhdGhlciBjb21lcy4KKworICAgICAgIEVudGVyIFBPTE9OSVVTCisKKyAgICAgICBBIGRvdWJsZSBibGVzc2luZyBpcyBhIGRvdWJsZSBncmFjZSwKKyAgICAgICBPY2Nhc2lvbiBzbWlsZXMgdXBvbiBhIHNlY29uZCBsZWF2ZS4KKworTE9SRCBQT0xPTklVUworCisgICAgICAgWWV0IGhlcmUsIExhZXJ0ZXMhIGFib2FyZCwgYWJvYXJkLCBmb3Igc2hhbWUhCisgICAgICAgVGhlIHdpbmQgc2l0cyBpbiB0aGUgc2hvdWxkZXIgb2YgeW91ciBzYWlsLAorICAgICAgIEFuZCB5b3UgYXJlIHN0YXknZCBmb3IuIFRoZXJlOyBteSBibGVzc2luZyB3aXRoIHRoZWUhCisgICAgICAgQW5kIHRoZXNlIGZldyBwcmVjZXB0cyBpbiB0aHkgbWVtb3J5CisgICAgICAgU2VlIHRob3UgY2hhcmFjdGVyLiBHaXZlIHRoeSB0aG91Z2h0cyBubyB0b25ndWUsCisgICAgICAgTm9yIGFueSB1bnByb3BvcnRpb25lZCB0aG91Z2h0IGhpcyBhY3QuCisgICAgICAgQmUgdGhvdSBmYW1pbGlhciwgYnV0IGJ5IG5vIG1lYW5zIHZ1bGdhci4KKyAgICAgICBUaG9zZSBmcmllbmRzIHRob3UgaGFzdCwgYW5kIHRoZWlyIGFkb3B0aW9uIHRyaWVkLAorICAgICAgIEdyYXBwbGUgdGhlbSB0byB0aHkgc291bCB3aXRoIGhvb3BzIG9mIHN0ZWVsOworICAgICAgIEJ1dCBkbyBub3QgZHVsbCB0aHkgcGFsbSB3aXRoIGVudGVydGFpbm1lbnQKKyAgICAgICBPZiBlYWNoIG5ldy1oYXRjaCdkLCB1bmZsZWRnZWQgY29tcmFkZS4gQmV3YXJlCisgICAgICAgT2YgZW50cmFuY2UgdG8gYSBxdWFycmVsLCBidXQgYmVpbmcgaW4sCisgICAgICAgQmVhcid0IHRoYXQgdGhlIG9wcG9zZWQgbWF5IGJld2FyZSBvZiB0aGVlLgorICAgICAgIEdpdmUgZXZlcnkgbWFuIHRoeSBlYXIsIGJ1dCBmZXcgdGh5IHZvaWNlOworICAgICAgIFRha2UgZWFjaCBtYW4ncyBjZW5zdXJlLCBidXQgcmVzZXJ2ZSB0aHkganVkZ21lbnQuCisgICAgICAgQ29zdGx5IHRoeSBoYWJpdCBhcyB0aHkgcHVyc2UgY2FuIGJ1eSwKKyAgICAgICBCdXQgbm90IGV4cHJlc3MnZCBpbiBmYW5jeTsgcmljaCwgbm90IGdhdWR5OworICAgICAgIEZvciB0aGUgYXBwYXJlbCBvZnQgcHJvY2xhaW1zIHRoZSBtYW4sCisgICAgICAgQW5kIHRoZXkgaW4gRnJhbmNlIG9mIHRoZSBiZXN0IHJhbmsgYW5kIHN0YXRpb24KKyAgICAgICBBcmUgb2YgYSBtb3N0IHNlbGVjdCBhbmQgZ2VuZXJvdXMgY2hpZWYgaW4gdGhhdC4KKyAgICAgICBOZWl0aGVyIGEgYm9ycm93ZXIgbm9yIGEgbGVuZGVyIGJlOworICAgICAgIEZvciBsb2FuIG9mdCBsb3NlcyBib3RoIGl0c2VsZiBhbmQgZnJpZW5kLAorICAgICAgIEFuZCBib3Jyb3dpbmcgZHVsbHMgdGhlIGVkZ2Ugb2YgaHVzYmFuZHJ5LgorICAgICAgIFRoaXMgYWJvdmUgYWxsOiB0byB0aGluZSBvd25zZWxmIGJlIHRydWUsCisgICAgICAgQW5kIGl0IG11c3QgZm9sbG93LCBhcyB0aGUgbmlnaHQgdGhlIGRheSwKKyAgICAgICBUaG91IGNhbnN0IG5vdCB0aGVuIGJlIGZhbHNlIHRvIGFueSBtYW4uCisgICAgICAgRmFyZXdlbGw6IG15IGJsZXNzaW5nIHNlYXNvbiB0aGlzIGluIHRoZWUhCisKK0xBRVJURVMKKworICAgICAgIE1vc3QgaHVtYmx5IGRvIEkgdGFrZSBteSBsZWF2ZSwgbXkgbG9yZC4KKworTE9SRCBQT0xPTklVUworCisgICAgICAgVGhlIHRpbWUgaW52aXRlcyB5b3U7IGdvOyB5b3VyIHNlcnZhbnRzIHRlbmQuCisKK0xBRVJURVMKKworICAgICAgIEZhcmV3ZWxsLCBPcGhlbGlhOyBhbmQgcmVtZW1iZXIgd2VsbAorICAgICAgIFdoYXQgSSBoYXZlIHNhaWQgdG8geW91LgorCitPUEhFTElBCisKKyAgICAgICAnVGlzIGluIG15IG1lbW9yeSBsb2NrJ2QsCisgICAgICAgQW5kIHlvdSB5b3Vyc2VsZiBzaGFsbCBrZWVwIHRoZSBrZXkgb2YgaXQuCisKK0xBRVJURVMKKworICAgICAgIEZhcmV3ZWxsLgorIiIiCisKK0NPTVBSRVNTRURfWFogPSAoCisgICAgYiJceGZkN3pYWlx4MDBceDAwXHgwNFx4ZTZceGQ2XHhiNEZceDAyXHgwMCFceDAxXHgxNlx4MDBceDAwXHgwMHQvXHhlNVx4YTMiCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhkZl1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5OFx4MTVceGU0XHhiNFx4OWQiCisgICAgYiJvXHgxZFx4YzRceGU1XG5ceDAzXHhjYzJoXHhjN1xcXHg4Nlx4ZmZceGY4XHhlMlx4ZmNceGU3XHhkOVx4ZmU2XHhiOCgiCisgICAgYiJceGE4d2RceGMyXCJ1Lm5ceDFlXHhjM1x4ZjJceDhlXHg4ZFx4OGZceDAyXHgxNy9ceGE2PVx4ZjBceGEyXHhkZi9NXHg4OSIKKyAgICBiIlx4YmVceGRlXHhhN1x4MWN6XHgxOC1dXHhkNVx4ZWZceDEzXHg4ZnJaXHgxNVx4ODBceDhjXHhmOFx4OGRvXHhmYVx4MTIiCisgICAgYiJceDliI3ovXHhlZlx4ZjBceGZhRlx4MDFceDgyXHhhM01ceDhlXHhhMXRceGNhNiBCRiRceGU1UVx4YTRceDk4XHhlZVx4ZGUiCisgICAgYiJsXHhlOFx4N2ZceGYwXHg5ZCxiblx4MGJceDEzXHhkNFx4YThceDgxXHhlNE5ceGM4XHg4Nlx4MTUzXHhmNXgyXHhhMk8iCisgICAgYiJceDEzQFFceGExXHgwMC9ceGE1XHhkME9ceDk3XHhkY29ceGFlXHhmN3pceGM0XHhjZFNceGI2dDxceDE2XHhmMlx4OWNJIyIKKyAgICBiIlx4ODl1ZFx4YzY2WVx4ZDlceGVlXHhlNlx4Y2VceDEyXVx4ZTVceGYwXHhhYVx4OTYtUGVceGFkZTpceDA0XHRceDFiXHhmNyIKKyAgICBiIlx4ZGI3XG5ceDg2XHgxZnBceGM4Slx4YmFceGY0XHhmMFZceGE5XHhkY1x4ZjBceDAyJUdceGY5XHhkZj0/XHgxNVx4MWIiCisgICAgYiJceGUxKFx4Y2VceDgyPVx4ZDZJXHhhYzNceDEyXHgwY1JceGI3XHhhZVxyXHhiMWlceDAzXHg5NVx4MDFceGJkXHhiZVx4ZmEiCisgICAgYiJceDAyc1x4MDFQXHg5ZFx4OTZYXHhiMTJqXHhjOExceGE4XHg4NGJceGY2XHhjM1x4ZDRjLUhceDkzb0psXHhkMGlRXHhlNGsiCisgICAgYiJceDg0XHgwYlx4YzFceGI3XHhiY1x4YjFceDE3XHg4OFx4YjFceGNhP0BceGY2XHgwN1x4ZWFceGU2eFx4ZjFIMTJQXHgwZiIKKyAgICBiIlx4OGFceGM5XHhlYXV3XHhlM1x4YmVceGFhaVx4YTlXXHhkMFx4ODBceGNkI2NiNVx4OTlceGQ4XVx4YTlkXHgwY1x4YmQiCisgICAgYiJceGEyXHhkY1dsXHhlZFVHXHhiZlx4ODl5Rlx4Zjc3XHg4MXZceGJkNVx4OThceGJlaDhceDE4V1x4MDhceGYwXHgxYlx4OTkiCisgICAgYiI1Olx4MWE/ckRceDk2XHhhMVx4MDRceDBmXHhhZVx4YmFceDg1XHhlYlx4OWQ1QFx4ZjVceDgzXHhkMzdceDgzXHg4YWMiCisgICAgYiJceDA2XHhkNFx4OTdpXHhjZHRceDE2U1x4ODJrXHhmNktceDAxdnlceDg4XHg5MVx4OWI2VFx4ZGFlXHJceGZkXTprXHhiYWwiCisgICAgYiJceGE5XHhiYmFceGMzNFx4ZjlyXHhlYn1yXHhkYlx4YzdceGRiKlx4OGZceDAzelx4ZGM4aFx4Y2NceGM5XHhkM1x4YmNsIgorICAgIGIiXHhhNS1ceGNiXHhlYUtceGEyXHhjNVx4MTVceGMwXHhlM1x4YzFceDg2Wlx4ZmJceGViTFx4ZTEzXHhjZlx4OWNceGUzIgorICAgIGIiXHgxZFx4YzlceGVkXHhjMlx4MDZceGNjXHhjZSFceDkyXHhlNVx4ZmVceDljXlx4YTU5dyBceDliUFx4YTNQS1x4MDhkIgorICAgIGIiXHhmOVx4ZTJafVx4YTdceGJmXHhlZFx4ZWIlJFx4MGNceDgyXHhiOC9ceGIwXHgwMVx4YTkmLFx4ZjdxaHtRXHg5NilceGYyIgorICAgIGIicVx4OTZceGMzXHg4MFx4YjRceDEyXHhiMFx4YmFceGU2b1x4ZjQhXHhiNFtceGQ0XHg4YXdceDEwXHhmN3RceDBjXHhiMyIKKyAgICBiIlx4ZDlceGQ1XHhjM2BeXHg4MVx4MTE/P1xcXHhhNFx4OTlceDg1Ulx4ZDRceDhlXHg4M1x4YzlceDFlWFx4YmZhXHhmMSIKKyAgICBiIlx4YWNceGIwXHhlYVx4ZWFceGQ3XHhkMFx4YWJceDE4XHhlMlx4ZjJceGVkXHhlMVx4YjdceGM5XHgxOFx4Y2JTXHhlND4iCisgICAgYiJceGM5XHg5NUhceGU4XHhjYlx0XHIlXHhlYlx4YzckLm9ceGYxXHhmM1JceDE3XHgxZGJceGJiXHhkOFVceGE1Xlx4Y2NTIgorICAgIGIiXHgxNlx4MDFceDg3XHhmMy9ceDkzXHhkMVx4ZjB2XHhjMHJceGQ3XHhjY1x4YTJHa3pceGNhXHg4MFx4MGVceGZkXHhkMCIKKyAgICBiIlx4OGJceGJiXHhkMkl4XHhiM1x4MWV5XHhjYS0wXHhlM3peXHhkNlx4ZDZceDhmX1x4ZjFceDlkUFx4OWZpXHhhN1x4ZDEiCisgICAgYiJceGU4XHg5MFx4ODRceGRjXHhiZlx4Y2RreVx4OGVceGRjXHg4MVx4N2ZceGEzXHhiMitceGJmXHgwNFx4ZWZceGQ4XFwiCisgICAgYiJceGM0XHhkZlx4ZTFceGIwXHgwMVx4ZTlceDkzXHhlM1lceGYxXHgxZFlceGU4aFx4ODFceGNmXHhmMXdceGNjXHhiNFx4ZWYiCisgICAgYiIgXHg4YnxceDA0XHhlYVx4ODNlalx4YmVceDFmXHhkNHpceDljYFx4ZDNceDFhXHg5MkFceDA2XHhlNVx4OGZceGE5XHgxMyIKKyAgICBiIlx0XHg5ZT1ceGZhXHgxY1x4ZTVfXHg5ZiV2XHgxYm9ceDExWk9ceGQ4XHhmNFx0XHhkZE1ceDE2LVx4MDRceGZjXHgxODxcIiIKKyAgICBiIkNNXHhkZGd+Ylx4ZjZceGVmXHg4ZVx4MGNceGQwXHhkZXxceGEwJ1x4OGFceDBjXHhkNnhceGFlIUpceGE2Rlx4ODhceDE1dSIKKyAgICBiIlx4MDA4XHgxN1x4YmM3eVx4YjNceGQ4dVx4YWNfXHg4NVx4OGRceGU3XHhjMUBceDljXHhlY3FjXHhhMyNceGFkXHhmMSIKKyAgICBiIlx4OTM1XHhiNSlfXHJceGVjM11ceDBmb101XHhkMG15XHgwN1x4OWJceGVlXHg4MVx4YjVceDBmXHhjZksrXHgwMFx4YzAiCisgICAgYiJceGU0Ylx4MTBceGU0XHgwY1x4MWEgXHg5Ylx4ZTBceDk3dFx4ZjZceGExXHg5ZVx4ODUwXHhiYVx4MGNceDlhXHg4ZFx4YzgiCisgICAgYiJceDhmXHgwN1x4ZDdceGFlXHhjOFx4ZjkraVx4ZGNceGI5a1x4YjA+Zlx4MTlceGI4XHJceGE4XHhmOFx4MWYkXHhhNXtwIgorICAgIGIiXHhjNlx4ODgwXHhjZVx4ZGJceGNmXHhjYV9ceDg2XHhhY1x4ODhoNlx4OGJaJSdceGQwXG5ceGJmXHgwZlx4OWNcIlx4YmEiCisgICAgYiJceGU1XHg4Nlx4OWZceDBmN1g9bU5YW1x4Y2NceDE5RlVceGM5XHg4NjBceGJjXHg5MGErKiBceGFlXyRceDAzXHgxZVx4ZDMiCisgICAgYiJceGNkX1x4YTBceDljXHhkZVx4YWY0NnFceGE1XHhjOVx4OTJceGQ3XHhjYVx4ZTNgXHg5ZFx4ODV9XHhiNFx4ZmZceGIzIgorICAgIGIiXHg4M1x4ZmJceGI2XHhjYVx4YWVgXHgwYndceDdmXHhmY1x4ZDhceGFjVmVceDE5XHhjOFx4MTdceDBiWlx4YWRceDg4IgorICAgIGIiXHhlYiNceDk3XHgwM1x4MTNceGIxZFx4MGZ7XHgwY1x4MDR3XHgwN1xyXHg5N1x4YmRceGQ2XHhjMVx4YzNCOlx4OTVceDA4IgorICAgIGIiXlx4MTBWXHhhZWFIXHgwMlx4ZDlceGUzXG5cXFx4MDFYXHhmNlx4OWNceDhhXHgwNnUjJVx4YmUqXHhhMVx4MTh2XHg4NSIKKyAgICBiIlx4ZWMhXHQ0XHgwMFx4MDBceDAwXHgwMFZqP3VMVVx4ZjNceGE2XHgwMFx4MDFceGZiXHgwN1x4ODFceDBmXHgwMFx4MDB0dyIKKyAgICBiIlx4OTlQXHhiMVx4YzRnXHhmYlx4MDJceDAwXHgwMFx4MDBceDAwXHgwNFlaIgorKQorCitDT01QUkVTU0VEX0FMT05FID0gKAorICAgIGIiXVx4MDBceDAwXHg4MFx4MDBceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4MDBceDA1XHgxNFx4MDdiWFx4MTkiCisgICAgYiJceGNkXHhkZG5ceDk4XHgxNVx4ZTRceGI0XHg5ZG9ceDFkXHhjNFx4ZTVcblx4MDNceGNjMmhceGM3XFxceDg2XHhmZlx4ZjgiCisgICAgYiJceGUyXHhmY1x4ZTdceGQ5XHhmZTZceGI4KFx4YTh3ZFx4YzJcInUublx4MWVceGMzXHhmMlx4OGVceDhkXHg4Zlx4MDIiCisgICAgYiJceDE3L1x4YTY9XHhmMFx4YTJceGRmL01ceDg5XHhiZVx4ZGVceGE3XHgxY3pceDE4LV1ceGQ1XHhlZlx4MTNceDhmcloiCisgICAgYiJceDE1XHg4MFx4OGNceGY4XHg4ZG9ceGZhXHgxMlx4OWIjei9ceGVmXHhmMFx4ZmFGXHgwMVx4ODJceGEzTVx4OGVceGExdCIKKyAgICBiIlx4Y2E2IEJGJFx4ZTVRXHhhNFx4OThceGVlXHhkZWxceGU4XHg3Zlx4ZjBceDlkLGJuXHgwYlx4MTNceGQ0XHhhOFx4ODEiCisgICAgYiJceGU0Tlx4YzhceDg2XHgxNTNceGY1eDJceGEyT1x4MTNAUVx4YTFceDAwL1x4YTVceGQwT1x4OTdceGRjb1x4YWVceGY3eiIKKyAgICBiIlx4YzRceGNkU1x4YjZ0PFx4MTZceGYyXHg5Y0kjXHg4OXVkXHhjNjZZXHhkOVx4ZWVceGU2XHhjZVx4MTJdXHhlNVx4ZjAiCisgICAgYiJceGFhXHg5Ni1QZVx4YWRlOlx4MDRcdFx4MWJceGY3XHhkYjdcblx4ODZceDFmcFx4YzhKXHhiYVx4ZjRceGYwVlx4YTkiCisgICAgYiJceGRjXHhmMFx4MDIlR1x4ZjlceGRmPT9ceDE1XHgxYlx4ZTEoXHhjZVx4ODI9XHhkNklceGFjM1x4MTJceDBjUlx4YjciCisgICAgYiJceGFlXHJceGIxaVx4MDNceDk1XHgwMVx4YmRceGJlXHhmYVx4MDJzXHgwMVBceDlkXHg5NlhceGIxMmpceGM4TFx4YTgiCisgICAgYiJceDg0Ylx4ZjhceDFlcGxceGVhanJceGQxPVx0XHgwM1x4ZGRceDEzXHgxYjMhRVx4Zjl2Vlx4ZGFGXHhmM1x4ZDdceGI0IgorICAgIGIiXHgwY1x4YTlQflx4ZWNceGRlRVx4ZTM3XHhmNlx4MWRceGM2XHhiYlx4ZGRjJVx4YjZceDBmSVx4MDdceGYwO1x4YWZceGU3IgorICAgIGIiXHhhMFx4OGJceGE3Wlx4OTkoXHhlOVx4ZTJceGYwb1x4MTg+YFx4ZTFceGFhXHhhOFx4ZDlceGExXHhiMn1ceGU3XHg4ZCIKKyAgICBiIlx4ODM0VFx4YjZceGVmXHhjMVx4ZGVceGUzXHg5OFx4YmNEXHgwM01BQFx4ZDhceGVkXHhkY1x4YzhceDkzXHgwM1x4MWEiCisgICAgYiJceDkzXHgwYlx4N2ZceDk0XHgxMlx4MGJceDAyU2FceDE4XHhjOVx4YzVceDliVEpFfVx4ZjZceGM4Z1x4MTcjWlZceDAxIgorICAgIGIiXHhjOVx4OWRjXHg4M1x4MGU+MFx4MTZceDkwU1x4YjgvXHgwM3lfXHgxOFx4ZmEoXHhkN1x4MGJyXHhhMlx4YjBceGJhPyIKKyAgICBiIlx4OGNceGU2XHg4M0BceDg0XHhkZlx4MDI6XHhjNXpceDllXHhhNlx4ODRceGM5XHhmNUJleVhceDgzXHgxYVx4ZjEgOlx0IgorICAgIGIiXHhmN1x4MTlceGZleERcXCZHXHhmM1x4ODVZXHhhMkpceGY5XHgwYnZ7XHg4OVx4ZjZceGU3KUFceGFmXHgwNG9ceDAwIgorICAgIGIiXHgwNzVceGQzXHhlMFx4N2ZceDk3XHg5OEZceDBmP3ZceDkzXHhlZFZ0VGZceGI1XHg5N1x4ODNceGVkXHgxOVx4ZDdceDFhIgorICAgIGIiJ2tceGQ3XHhkOVx4YzVcXFlceGQxXHhkY1x4MDdceDE1fHdceGJjXHhhY2RceDg3XHgwOGRceGVjXHhhN1x4ZjZceDgyIgorICAgIGIiXHhmY1x4YjNceDkzXHhlYlx4YjkgXHg4ZFx4YmMgLFx4YjNYXHhiMFx4ZDJzXHhkN1x4ZDFceGZmdlx4MDVceGRmfVx4YTIiCisgICAgYiJceDk2XHhmYiVcblx4ZGZceGEyXHg3Zlx4MDguXHhhMTZcblx4ZTBceDE5XHg5M1x4N2ZoXG5ceDFjXHg4Y1x4MGYgXHgxMSIKKyAgICBiIlx4YzZCbFx4OTVceDE5VX1ceGU0c1x4YjVceDEwSFx4ZWFceDg2cEJceGU4OFx4OTVceGJlXHg4Y1pceGRiXHhlNFx4OTRBIgorICAgIGIiXHg5Mlx4Yjk7elx4YWFceGE3e1x4MWM1IVx4YzBceGFmXHhjMUFceGY5XHhkYVx4ZjAkXHhiMFx4MDJxZ1x4YzhceGM3L3wiCisgICAgYiJceGFmclx4OTleXHg5MVx4ODhceGJmXHgwM1x4ZDk9XHhkN25ceGRhNns+OFxuXHhjNzpceGE5J1x4YmEuXHgwYlx4ZTIiCisgICAgYiJceGI1XHgxZFx4MGVcblx4OWFceDhlXHgwNlx4OGY6XHhkZFx4ODInW1x4YzNcIndEJFx4YTd3XHhlY3FceDhjLDFceDkzIgorICAgIGIiXHhkMCxceGFlMndceDkzXHgxMiRKZFx4MTltZ1x4MDJceDkzXHg5Y0FceDk1XHg5ZCZceGNhOGlceDljXHhiMDtceGU3TlEiCisgICAgYiJceDFmcmhceDhiZUw7XHhiMG1ceGVlXHgwN1FceDliXHhjNlx4ZDhceDAzXHhiNVx4ZGVOXHhkNFx4ZmVceDk4XHhkMFx4ZGMiCisgICAgYiJceDFhW1x4MDRceGRlXHgxYVx4ZjZceDkxalx4ZjhFT2xpXHg4ZUJeXHgxZFx4ODJceDA3XHhiMlx4YjVSXVx4YjdceGQ3IgorICAgIGIiXHhlOVx4YTZceGMzLlx4ZmJceGYwLVx4YjRlXHg5Ylx4ZGVceDAzXHg4OFx4YzZceGMxaU5ceDBlXHg4NHdiUVx4ZGZ+IgorICAgIGIiXHhlOVx4YTRceDg4NFx4OTZrTVx4YmMpVFx4ZjNceDg5XHg5N1x4MGZceDE0M1x4ZTcpXHhhMFx4YjNCXHgwMFx4YThceGFmIgorICAgIGIiXHg4Ml5ceGNiXHhjNy4uXHhkYlx4YzdcdFx4OWRIXHhlZTVceGU5I1x4ZTZOVlx4OTRceGNiJEtrXHhlM1x4N2Zcclx4ZTN0IgorICAgIGIiXHgxMlx4Y2YnXHhlZlJceDhiXHhmNDJceGNmLUxIXHhhY1x4ZTVceDFmMH4/U09ceGViXHhjMUVceDFhXHgxY11ceGYyIgorICAgIGIiXHhjNDxceDExXHgwMlx4MTBaMGEqP1x4ZTRyXHhmZlx4ZmJceGZmXHhmNlx4MTRuR1x4ZWFkXlx4ZDZceGVmOFx4YjZ1RUkiCisgICAgYiJceDk5XG5WXHhlMlx4YjNceDk1XHg4ZVx4ODNceGY2aSFceGI1JjFGXHhiMURQXHhmNCBTTzNEIXdceDk5X0dceDdmK1x4OTAiCisgICAgYiIuXHhhYlx4YmJdXHg5MT5ceGM5I2g7XHgwZjVKXHg5MUtceGY0Xi1bXHg5ZVx4OGFcXFx4OTRceGNhXHhhZlx4ZjZceDE5IgorICAgIGIiXHhkNFx4YTFceDliXHhjNFx4YjhwXHhhMVx4YWVceDE1XHhlOXJceDg0XHhlMFx4Y2FyLmwgW11ceDhiXHhhZiswXHhmMmciCisgICAgYiJceDAxYUtZXHhkZklceGNmLFxuXHhlOFx4ZjBceGU3Vlx4ODBfI1x4YjJceGYyXHhhOVx4MDZceDhjPndceGUyVyxceGY0IgorICAgIGIiXHg4Y1xyXHhmOTYzXHhmNUpceGNjMlx4MDU9a1RceGVhVXRpXHhlNV9ceGNlXHgxYlx4ZmFceDhkbFx4MDJoXHhlZlx4YTgiCisgICAgYiJceGZiZlx4N2ZceGZmXHhmMFx4MTlceGVheCIKKykKKworRklMVEVSU19SQVdfMSA9IFt7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiAzfV0KK0NPTVBSRVNTRURfUkFXXzEgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhmZF1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5NmN5cVx4YTFceGRkXHhlZSIKKyAgICBiIlx4ZjhceGZhbVx4ZTMnXHg4OFx4ZDNceGZmXHhlNFx4OWUgXHhjZVFceDkxXHhhNFx4MTRJXHhmNlx4YjlceDlkVkw4XHgxNSIKKyAgICBiIl9ceDBlXHgxMlx4YzNceGViXHhiY1x4YTVceGNkXG5XXHgxZCQ9UjtceDFkXHhmOGs4XHRceGIxe1x4ZDRceGM1K1x4OWQiCisgICAgYiJceDg3Y1x4ZTVceGVmXHg5OFx4YjRceGQ3UzNceGNkXHhjY1x4ZDJceGVkXHhhNFx4MGVtXHhlNVx4ZjRceGRkXHhkMGIiCisgICAgYiJceGJlNCpceGFhXHgwYlx4YzVceDA4XHgxMFx4ODUrXHg4MS5ceDE3XHhhZjlceGM5Ylx4ZWFackFceGUyMFx4N2ZzXCJyIgorICAgIGIiXHhkYUdceDgxXHhkZVx4OTBjdVx4YTVceGRiXHhhOS5BXHgwOGxceGIwPFx4ZjZceDAzXHhkZE9pXHhkMFx4YzVceGI0IgorICAgIGIiXHhlY1x4ZWNnNHQ2XCJceGE2XHhiOG9ceGI1P1x4MThefVx4YjZ9XHgwM1s6XHhlYlx4MDNceGE5XG5bXHg4OWxceDE5ZyIKKyAgICBiIlx4MTZceGM4Mlx4ZWRceDBiXHhmYlx4ODZuXHhhMlx4ODU3QFx4OTNceGNkNlRceGMzdVx4YjBcdFx4ZjlceDFiXHg5MTgiCisgICAgYiJceGZjW1x4MWJceDFlNFx4YjNceDE0XHgwNlBDVlx4YThcIlx4ZjVceDgxeH5ceGU5XHhiNU5ceDljS1x4OWZceGM2XHhjMyUiCisgICAgYiJceGM4azp7Nlx4ZTdceGY3XHhiZFx4MDVceDAyXHhiNFx4YzRceGMzXHhkM1x4ZmRceGMzXHhhOFxcXHhmY0BceGIxRl8iCisgICAgYiJceGM4XHg5MFx4ZDlzVVx4OThceGFkOFx4MDVceDA3XHhkZTdKXHg4Yk1ceGQwXHhiMztYXHhlY1x4ODdceGVmXHhhZVx4YjMiCisgICAgYiJlTyxceGIxeixkXHgxMXlceGVlamxCXHgwMlx4MWRceGYyOFx4MWYjXHg4OTZceGNlXHgwYlx4ZjBceGY1XHhhOVBLXHgwZiIKKyAgICBiIlx4YjNceDEzUFx4ZDhceDg4XHhkMlx4YTFceDA4XHgwNEM/XHhkYlx4OTRfXHg5YVwiXHhlOVx4ZTNlXHgxZFx4ZGVceDliIgorICAgIGIiXHhhMVx4ZTg+SFx4OThceDEwO1x4YzVceDAzI1x4YjVceDlkNFx4MDFceGU3XHhjNVx4YmEldlx4YTQ5XHg5N0FceGUwXCIiCisgICAgYiJceDhjXHhjMjJceGUzaVx4YzFceDlkXHhhYjNceGRmXHhiZVx4ZmREbTdceDFiXHg5ZFx4YWJceGI1XHgxNW86Slx4OTIiCisgICAgYiJceGRiXHg4MTZceDE3XHhjMk9ceDk5XHgxYlx4MGVceDhkXHhmM1x0UVx4ZWRceDhlXHg5NVMvXHgxNk1ceGIyU1x4MDQiCisgICAgYiJceDBmXHhjM0pceGM2XHhjN1x4ZTRceGNiXHhjNVx4ZjRceGU3ZFx4MTRceGU0PV5CXHhmYlx4ZDNFXHhkM1x4MWVceGNkIgorICAgIGIiXHg5MVx4YTVceGQwR1x4OGYuXHhmNlx4ZjlceDBiYiZceGQ5XHg5Zlx4YzJceGZkalx4YTJceDllXHhjNFxcXHgwZVx4MWRDIgorICAgIGIidlx4ZThceGQyXHg4YT9eSFx4ZWNceGFlXHhlYj5ceGZlXHhiOFx4YWJceGQ0SXFZXHg4Y1x4ZDRLN1x4MTFceGY0RFx4ZDBXIgorICAgIGIiXHhhNVx4YmVceGVhT1x4YmZceGQwXHgwNFx4ZmRsXHgxMFx4YWU1XHhkNFVceDE5XHgwNlx4Zjl7XHhhYVx4ZTBceDgxIgorICAgIGIiXHgwZlx4Y2ZceGEza3tceDk1XHhiZFx4MTlceGEyXHhmOFx4ZTRceGEzXHgwOE8qXHhmMVx4ZjFCLVx4YzcoXHgwZVJceGZkIgorICAgIGIiQEVceDlmXHhkM1x4MWU6XHhmZFZceGI3XHgwNFlceDk0XHhlYl1ceDgzXHhjNFx4YTVceGQ3XHhjMGdYXHg5OFx4Y2ZceDBmIgorICAgIGIiXHhjZDNceDAwXW5ceDE3XHhlY1x4YmRceGEzWVx4ODZceGM1XHhmM3VceGY2Klx4YmRUXHhlZEEkQVx4ZDlBXHhlN1x4OTgiCisgICAgYiJceGVmXHgxNFx4MDJceDlhXHhmZGl3XHhlY1x4YTBceDg3XHgxMVx4ZDklXHhjNVx4ZWJceDhhPVx4YWVceGMwXHhjNFx4YzYiCisgICAgYiJEXHg4MFx4OGZceGE4XHhkMVx4YmJxXHhiMlx4YzBceGEwXHhmNUNxcFx4ZWVMXHhlM1x4ZTVceGRjIFx4ODRcIlx4ZTkiCisgICAgYiJceDgwdFx4ODNceDA1XHhiYVx4ZjFceGM1flx4OTNceGM5XHhmMFx4MDFjXHhjZWl4XHg5ZFx4ZWRceGM1KWxceDE2KVx4ZDEiCisgICAgYiJceDAzQGxceDA0XHg3Zlx4ODdceGE1eW5ceDFiXHgwMURceGFhOlx4ZDJceDk2XHhiNFx4YjM/XHhiMFx4ZjlceGNlXHgwNyIKKyAgICBiIlx4ZWJceDgxXHgwMFx4ZTRceGMzXHhmNSVfXHhhZVx4ZDRceGY5XHhlYlx4ZTJccmhceGIyI1x4ZDY3UVx4MTZEXHg4MmhuIgorICAgIGIiXHhkMVx4YTNfP3FceGYwXHhlMlx4YWNceGYzMTdceDllXHhkMF9ceDgzfFx4ZjFceGNhXHhiN1x4OTVTXHhhYldceDEyIgorICAgIGIiXHhmZlx4ZGR0XHhmNjlMXHgwMVx4ZjJ8XHhkYVdceGRhXHhlZXNceDk4TFx4MThceGI4X1x4ZTgkXHg4Mlx4ZWFceGQ2IgorICAgIGIiXHhkMUZceGQ0XHgwYlx4Y2RrXHgwMXZmXHg4OGhceGMzXHhhZVx4YjkxXHhjN1FceDlmXHhhNUdceGQ5XHhjY1x4MWZceGUzIgorICAgIGIiNVx4YjFceGRjeVx4N2ZJXHg4YmN3XHg4ZVx4MTBySXBceDAyOlx4MTlwX1x4Yzh2XHhjZWFcIlx4YzFceGQ5XHg5MVx4MDMiCisgICAgYiJceGJmZVx4YmVceGE2XHhiM1x4YThceDE0XHgxOFx4YzNceGFiSCptfVx4YzJceGMxXHg5YX0+bCVceGNlXHg4NFx4OTkiCisgICAgYiJceGIzZFx4YWZceGQzXHg4Mlx4MTVceGRmXHhjMVx4ZmM1Zk9nXHg5Ylx4ZmNceDhlXiZcdEBceGNlXHg5Zlx4MDZKXHhiOCIKKyAgICBiIlx4YjVceDg2XHgxZFx4ZGF7XHg5Zlx4YWVceGIwXHhmZlx4MDJceDgxclx4OTJ6XHg4Y01ceGI3aG9ceGM5Xlx4OWNceGI2IgorICAgIGIiXHg5Y1x4YWVceGQxXHhjOVx4ZjRceGRmVTdceGQ2XFwhXHhlYVx4MGJceDk0a1x4YjlVZH5ceDk4XHhlN1x4ODZceDhheiIKKyAgICBiIlx4MTA7XHhlM1x4MWRceGU1UEdceGY4XHhhNFx4MTJceDA1d1x4OTheXHhjNFx4YjFceGJiXHhmYlx4Y2ZceGUwXHg3ZiIKKyAgICBiIlx4MDMzU2ZceDBjIFx4YjFceGY2QFx4OTRceGU1XHhhM1x4YjJceGE3XHgxMFx4OWFceGMwXHgxNFx4YzNzXHhiNXhSRCIKKyAgICBiIlx4ZjRgV1x4ZDlceGU1XHhkM1x4Y2ZceDkxXHJUWi1YXHhiZVx4YmZceGI1XHhlMlx4ZWV8XHgxYVx4YmZceGZiXHgwOCIKKyAgICBiIlx4OTFceGUxXHhmY1x4OWFceDE4XHhhM1x4OGJceGQ2Xlx4ODlceGY1W1x4ZWZceDg3XHhkMVx4MDZceDFjN1x4ZDZceGEyIgorICAgIGIiXHRcdFE1L0BTXHhjMDVceGQyVmhBS1x4MDNWQ1xyXHg5Ylx4OTNceGQ2TVx4ZjF4T1x4YWFPXHhlZFx4Yjk8XHgwY1x4ZGFlIgorICAgIGIiKlx4ZDBceDA3SGs2XHg5ZkcrXHhhMSlceGNkXHg5Y2xceDg3XHhkYlx4ZTFceGU3XHhlZkt9XHg4NzVceGFiXHhhMFx4MTl1IgorICAgIGIiXHhmNipGXHhiMzJceDAwXHgwMFx4MDAiCispCisKK0ZJTFRFUlNfUkFXXzIgPSBbeyJpZCI6IGx6bWEuRklMVEVSX0RFTFRBLCAiZGlzdCI6IDJ9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsCisgICAgICAgICAgICAgICAgICAicHJlc2V0IjogbHptYS5QUkVTRVRfREVGQVVMVCB8IGx6bWEuUFJFU0VUX0VYVFJFTUV9XQorQ09NUFJFU1NFRF9SQVdfMiA9ICgKKyAgICBiIlx4ZTBceDA3XHg4MFx4MDVceDkxXVx4MDBceDA1XHgxNFx4MDYtXHhkNFx4YThkP1x4ZWZceGJlXHhhZkhceGVlXHgwNDIiCisgICAgYiJceGNiLlx4YjVnXHg4Zlx4ZmJceDE0XHhhYlx4YTVceDlmXHgwMjV6XHhhNFx4ZGRceGQ4XHRbfVdceGY4XHgwY1x4MWRtSCIKKyAgICBiIlx4ZmFceDA1XHhmY2dceGJhXHhlNVx4MDFRXHgwYlx4ODNSXHhiNkFceDg4NVx4YzBceGJhXHhlZVxuXHgxY3Z+XHhkZTpvIgorICAgIGIiXHgwNjpKXHhhN1x4MTFDY1x4ZWFceGY3XHhlNSpvXHhmN1x4ODNcXGxceGJkRVx4MTlceDFmXHJceGE4XHgxMFx4YjQyIgorICAgIGIiXHgwY2FVe1x4ZDdceGI4d1x4ZGNceGJlXHgxYlx4ZmM4XHhiNFx4Y2NceGQzOFxcXHhmNlx4MTNceGY2XHhlN1x4OThceGZhIgorICAgIGIiXHhjN1tceDE3XzlceDg2JVx4YThceGY4XHhhYVx4YjhceDhkZnMjXHgxZT1ceGVkPFx4OTJceDEwXFx0XHhmZlx4ODZceGZiIgorICAgIGIiPVx4OWU3XHgxOFx4MWRmdFxcXHhiNVx4MDFceDk1UVx4YzVceDE5XHhiMzhceGUwXHhkNFx4YWFceDA3XHhjM1x4N2ZceGQ4IgorICAgIGIiXHhhMlx4MDA+LVx4ZDNceDhlXHhhMSNceGZhXHg4M0FyQW1ceGRiSn5ceDkzXHhhM0JceDgyXHhlMFx4YzdceGNjKFx4MDhgIgorICAgIGIiV0tceGFkXHgxYlx4OTRrYWpceDA0IFx4ZGVceGZjXHhlMVx4ZWRceGIwXHg4Mlx4OTFceGVmU1x4ODQlXHg4Nlx4ZmJpIgorICAgIGIiXHg5OVhceGYxQlx4ZTdceDkwO0VceGZkZVx4OThceGRhXHhjYVx4ZDZUXHhiNGJnXHhhNFxuXHg5YWpceGQxXHg4M1x4OWVdIgorICAgIGIiXCJceDdmTVx4YjVceDBmclx4ZDJcXFx4YTVqflBceDEwR0hceGJmTipaXHgxMC5ceDgxXHRwRVx4OGFceDA4XHhiZTFceGJkIgorICAgIGIiXHhjZFx4YTlceGUxXHg4ZFx4MWZceDA0XHhmOVx4MGVIXHhiOVx4YWVceGQ2XHhjM1x4YzFceGE1XHhhOVx4OTVQXHhkY34iCisgICAgYiJceGZmXHgwMVx4OTMwXHhhOVx4MDRceGY2XHgwM1x4ZmVceGI1SktceGMzXVx4ZGQ5XHhiMVx4ZDNceGQ3Rlx4ZjVceGQxIgorICAgIGIiXHgxZVx4YTBceDFjX1x4ZWRbXHgwY1x4YWVceGQ0XHg4Ylx4OTQ2XHhlYlx4YmZceGJiXHhlMyRrU3tceGI1XHg4MCxmOlNqIgorICAgIGIiXHgwZlx4MDh6XHgxY1x4ZjVceGU4XHhlNlx4YWVceDk4XHhiMFF+clx4MGZceGIwXHgwNT9ceGI2XHg5MFx4MTlceDAyJiIKKyAgICBiIlx4Y2JceDgwXHRceGM0XHhlYVx4OWN8eFx4Y2VceDEwXHg5Y1x4YzV8XHhjYmRoaCtceDBjJ1x4YzVceDgxXHhjMzNceGI1IgorICAgIGIiXHgxNHFceGQ2XHhjNVx4ZTNgWiNceGRjXHg4YVx4YWJceGRkXHhlYVx4MDhceGMySVx4ZTdceDAybHtceGVjXHgxOTZceDA2IgorICAgIGIiXHg5MVx4OGRceGRjXHhkNVx4YjN4XHhlMWh6JVx4ZDFceGY4XHhhNVx4ZGRceDk4IVx4OGNceDFjXHhjMVx4MTdSVWFceGJiIgorICAgIGIiXHg5NVx4MGZceGU0WFx4ZWExXHgwY1x4ZjE9Ulx4YmVceGM2MFx4ZTNceGE0XHg5YVx4OTBiZFx4OTckXUJceDAxXHhkZCIKKyAgICBiIlx4MWZceGUzaDJjXHgxZVx4YTBMYDRceGM2eFx4YTNaXHg4YVxyXHgxNF1UXlx4ZDhceDg5XHgxYlx4OTJccjtceGVkWSIKKyAgICBiIlx4MGNceGVmXHg4ZDl6XHhmM29ceGI2KWZceGE5XSRuXHJwXHg5M1x4ZDBceDEwXHhhNFx4MDhceGI4XHhiMlx4OGJceGI2IgorICAgIGIiXHg4Zlx4ODBceGFlO1x4ZGNRXHhmMVx4ZmFceDlhXHgwNlx4OGVceGE1XHgwZVx4OGNLXHg5YyBAXHhhYTpVY1hcbiFceGM2IgorICAgIGIiXHgwMlx4MTJceGNiXHgxYlwiPVx4MTYuXHgxZlx4MTc2XHhmMmc9XHhlMVduXHhlOVx4ZTFceGQ0XHhmMU9ceGFkXHgxNSIKKyAgICBiIlx4ODZceGU5XHhhM1RceGFmXHhhOVx4ZDdEXHhiNVx4ZDFXM3BudFx4MTFceGM3Vk9qXHhiN01ceGM0aVx4YTFceGYxJDMiCisgICAgYiJceGJiXHhkY1x4OGFmXHhiMFx4YzVZXHJceGQxXHhmYlx4ZjJceGU3S1x4ZTZceGM1aHdPXHhmZVx4OGMyXiZceDA3XHhkNSIKKyAgICBiIlx4MWZWXHgxOVx4ZmRcclx4MTRceGQyaT15Wlx4ZTZvXHhhZlx4YzZceGI2XHg5Mlx4OWRceGM0XHJceGIzXHhhZndceGFjJSIKKyAgICBiIlx4Y2ZjXHgxYVx4ZjFgXVx4ZjJceDFhXHg5ZVx4ODA4XHhlZG1ceGVkUVx4YjJceGZlXHhlNGhgW3FceGFlXHhlMFx4MGYiCisgICAgYiJceGJhMGdceGI2XCJOXHhjM1x4ZmJceGNmUlx4MTFceGM1XHgxOCkoXHhjNDBcXFx4YTNceDAyXHhkOUchXHhjZVx4MWIiCisgICAgYiJceGMxXHg5NnhceGI1XHhjOHpceDFmXHgwMVx4YjRceGFmXHhkZVx4YzJceGNkXHgwN1x4ZTdIXHhiM3lceGE4TVxuXFxBXHQiCisgICAgYiJhclx4ZGRNXHg4Ylx4OWFceGVhXHg4NFx4OWIhXHhmMVx4OGRceGIxXHhmMX5ceDFlXHJceGE1SFx4YmFceGYxXHg4NG8iCisgICAgYiJceGRhXHg4N1x4MDFoXHhlOVx4YTJceGJlXHhiZXFOXHg5ZFx4ODRceDBiIVdHXHhkYVx4YTFceGE1QVx4YjdceGM3YGoiCisgICAgYiJceDE1XHhmMlx4ZTlceGRkP1x4MDE1Qlx4ZDJ+RVx4MDZceDExXHhlMFx4OTEhXHgwNV5ceDgwXHhkZFx4YTh5XHgxNX0iCisgICAgYiJceGExKVx4YjEpXHg4MVx4MThceGY0XHhmNFx4ZjhceGMwXHhlZkRceGUzXHhkYjJmXHgxZVx4MTJceGFidVx4YzlceDk3IgorICAgIGIiXHhjZFx4MWVceGE3XHgwY1x4MDJ4NF82XHgwM1x4YzQkdFx4ZjM5XHg5NFx4MWQ9XHhjYlx4YmZ2XFxceGY1XHhhM1x4MWQiCisgICAgYiJceDlkOGprXHg5NVx4MTMpZmZceGY5blx4YzRceGE5XHhlM1x4MDFceGI4XHhkYVx4ZmJceGFiXHhkZk1ceDk5XHhmYlx4MDUiCisgICAgYiJceGUwXHhlOVx4YjBJXHhmNEVceGFiXHhlMlx4MTVceGEzXHgwMzVceGU3XHhkZVRceGVlXHg4MnBceGI0XHg4OFx4ZDMiCisgICAgYiJceDg5M1x4OWMvXHhjMFx4ZDZceDhmb3U7XHhmNlx4OTVQUlx4YTlceGIyXHhjMVx4ZWZGalx4ZTJceGE3JFx4ZjdoXHhmMSIKKyAgICBiIlx4ZGZLKFx4YzljXHhiYTdceGU4XHhlMylceGRkXHhiMixceDgzXHhmYlx4ODRceDE4LnlceDE4UWlceDg4XHhmOGBoLSIKKyAgICBiIlx4ZWZceGQ1XHhlZFx4OGNcdFx4ZDhceGMzXlx4MGZceDAwXHhiN1x4ZDBbIVx4YWZNXHg5Ylx4ZDcuXHgwN1x4ZDhceGZiIgorICAgIGIiXHhkOVx4ZTItUytceGFhOCxceGEwXHgwM1x4MWIgXHhlYVx4YThceDAwXHhjM1x4YWJ+XHhkMCRlXHhhNVx4N2ZceGY3IgorICAgIGIiXHg5NVBdXHgxMlx4MTlpXHhkOVx4N2ZvXHgwY1x4ZDhnXlxyRVx4YTVceDgwXHgxOFx4YzVceDAxXHg4MFx4YWVrYFx4ZmZ+IgorICAgIGIiXHhiNnlceGU3K1x4ZTVceDExXkRceGE3XHg4NVx4MThcIiFceGQ2XHhkMlx4YTdceGY0XHgxZVRceGRiXHgwMlx4ZTE1IgorICAgIGIiXHgwMllceGJjXHgxNzRaXHhlN1x4OWNIXHgxY1x4YmZceDBmXHhjNlx4ZTlmXVx4Y2ZceDhjeFx4YmNceGU1XHgxNVx4OTQiCisgICAgYiJceGZjM1x4YmNceGE3VFVIXHhmMVx4ODRceDFiXHhmN1x4YTl5XHhjMDdceDg0XHhmOFhceGQ4XHhlZlx4ZmMgXHgxY1x4ZDgiCisgICAgYiIoIC9ceGYyXHhiN1x4ZWNceGMxXFxceDhjXHhmNlx4OTVceGExXHgwM0pceDgzdlA4XHhlMVx4ZTNceGJiflx4YzI0a0EiCisgICAgYiJceDk4eVx4YTFceGYyUFx4ZTlceDlkXHhjOUpceGY4Tlx4OTlceGI0XHhjZWFPXHhkZVx4MTZceDFlXHhjMlx4MTlceGE3IgorICAgIGIiXHgwM1x4ZDJceGUwXHg4ZjpceDE1XHhmM1x4ODRceDllXHhlZVx4ZTZlXHhiOFx4MDJxXHhjN0FDXHgxZW13XHhmZFx0IgorICAgIGIiXHg5YVx4MWV1XHhjMVx4YTlceGNhQ3dVUFx4MDBceGE1XHhmNzhMNHchXHg5MUwyIFx4ODdceGQwXHhmMlx4MDZceDgxaiIKKyAgICBiIlx4ODA7XHgwM1ZceDA2XHg4N1x4OTJceGNiXHg5MGx2QEVceDhkXHg4ZFx4YTVceGE2XHhlN1pbXHhkZlx4ZDZFXHgwM2A+IgorICAgIGIiXHg4Zlx4ZGVceGExYlpceDg0XHhkMFx4YTlgXHgwNVx4MGV7XHg4MDtceGUzXHhiZWZceDhkXHgxZFx4ZWJrMS5ceGUzIgorICAgIGIiXHhlOU5ceDE1XHhmN1x4ZDQoXHhmYVx4YmJceDE1XHhiZHVceGY3XHg3Zlx4ODZceGFlIVx4MDNMXHgxZFx4YjVceGMxIgorICAgIGIiXHhiOVx4MTFceGRiXHhkMFx4OTNceGU0XHgwMlx4ZTFceGQyXHhjYkJqY19ceGU4fWRceGRiXHhjM1x4YTBZXHhiZVx4YzkvIgorICAgIGIiXHg5NVx4MDFceGEzLFx4ZTZibEBceDAxXHhkYnBceGMyXHhjZVx4MTRceDE2OFx4YzJxXHhlM3VIXHg4OVhceGE0XHhhOSIKKyAgICBiIlx4MTlceDFkXHhjMX1ceDdmT1hceDE5XHg5Zlx4ZGRceGJlXHg4NVx4ODNceGZmXHg5Nlx4MWVlXHg4Mk9gQ0Y9S1x4ZWIkSSIKKyAgICBiIlx4MTdfXHhlZlhceDhiSid2XHhkZVx4MWYrXHhkOS52XHhmOFR2XHgxN1x4ZjJceDlmNVx4MTlceGUxXHhiOVx4OTFceGE4UyIKKyAgICBiIlx4ODZceGJkXHgxYVwiKFx4YTV4XHg4ZENceDAzWFx4ODFceDkxXHhhOFx4MTFceGM0cFNceDEzXHhiY1x4ZjInSlx4YWUhIgorICAgIGIiXHhlZlx4ZWZceDg0R1x0XHg4ZFx4YzRceDEwXHgxMzJceDAwb1NceDllXHhlMFx4ZTRkXHg4Zlx4Yjh5XHhhY1x4YTZceDlmIgorICAgIGIiLFx4YjhmXHg4N1xyXHhkZlx4OWVFXHgwZlx4ZTFceGQwXFxMXHgwMFx4YjJceGUxaFx4ODRceGVmfVx4OThceGE4XHgxMSIKKyAgICBiIlx4Y2NXI1xcXHg4M1x4N2ZvXHhiYnpceDhmXHgwMCIKKykKKworRklMVEVSU19SQVdfMyA9IFt7ImlkIjogbHptYS5GSUxURVJfSUE2NCwgInN0YXJ0X29mZnNldCI6IDB4MTAwfSwKKyAgICAgICAgICAgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX0xaTUEyfV0KK0NPTVBSRVNTRURfUkFXXzMgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDAzXHhkZl1ceDAwXHgwNVx4MTRceDA3YlhceDE5XHhjZFx4ZGRuXHg5OFx4MTVceGU0XHhiNFx4OWQiCisgICAgYiJvXHgxZFx4YzRceGU1XG5ceDAzXHhjYzJoXHhjN1xcXHg4Nlx4ZmZceGY4XHhlMlx4ZmNceGU3XHhkOVx4ZmU2XHhiOCgiCisgICAgYiJceGE4d2RceGMyXCJ1Lm5ceDFlXHhjM1x4ZjJceDhlXHg4ZFx4OGZceDAyXHgxNy9ceGE2PVx4ZjBceGEyXHhkZi9NXHg4OSIKKyAgICBiIlx4YmVceGRlXHhhN1x4MWN6XHgxOC1dXHhkNVx4ZWZceDEzXHg4ZnJaXHgxNVx4ODBceDhjXHhmOFx4OGRvXHhmYVx4MTIiCisgICAgYiJceDliI3ovXHhlZlx4ZjBceGZhRlx4MDFceDgyXHhhM01ceDhlXHhhMXRceGNhNiBCRiRceGU1UVx4YTRceDk4XHhlZVx4ZGUiCisgICAgYiJsXHhlOFx4N2ZceGYwXHg5ZCxiblx4MGJceDEzXHhkNFx4YThceDgxXHhlNE5ceGM4XHg4Nlx4MTUzXHhmNXgyXHhhMk8iCisgICAgYiJceDEzQFFceGExXHgwMC9ceGE1XHhkME9ceDk3XHhkY29ceGFlXHhmN3pceGM0XHhjZFNceGI2dDxceDE2XHhmMlx4OWNJIyIKKyAgICBiIlx4ODl1ZFx4YzY2WVx4ZDlceGVlXHhlNlx4Y2VceDEyXVx4ZTVceGYwXHhhYVx4OTYtUGVceGFkZTpceDA0XHRceDFiXHhmNyIKKyAgICBiIlx4ZGI3XG5ceDg2XHgxZnBceGM4Slx4YmFceGY0XHhmMFZceGE5XHhkY1x4ZjBceDAyJUdceGY5XHhkZj0/XHgxNVx4MWIiCisgICAgYiJceGUxKFx4Y2VceDgyPVx4ZDZJXHhhYzNceDEyXHgwY1JceGI3XHhhZVxyXHhiMWlceDAzXHg5NVx4MDFceGJkXHhiZVx4ZmEiCisgICAgYiJceDAyc1x4MDFQXHg5ZFx4OTZYXHhiMTJqXHhjOExceGE4XHg4NGJceGY2XHhjM1x4ZDRjLUhceDkzb0psXHhkMGlRXHhlNGsiCisgICAgYiJceDg0XHgwYlx4YzFceGI3XHhiY1x4YjFceDE3XHg4OFx4YjFceGNhP0BceGY2XHgwN1x4ZWFceGU2eFx4ZjFIMTJQXHgwZiIKKyAgICBiIlx4OGFceGM5XHhlYXV3XHhlM1x4YmVceGFhaVx4YTlXXHhkMFx4ODBceGNkI2NiNVx4OTlceGQ4XVx4YTlkXHgwY1x4YmQiCisgICAgYiJceGEyXHhkY1dsXHhlZFVHXHhiZlx4ODl5Rlx4Zjc3XHg4MXZceGJkNVx4OThceGJlaDhceDE4V1x4MDhceGYwXHgxYlx4OTkiCisgICAgYiI1Olx4MWE/ckRceDk2XHhhMVx4MDRceDBmXHhhZVx4YmFceDg1XHhlYlx4OWQ1QFx4ZjVceDgzXHhkMzdceDgzXHg4YWMiCisgICAgYiJceDA2XHhkNFx4OTdpXHhjZHRceDE2U1x4ODJrXHhmNktceDAxdnlceDg4XHg5MVx4OWI2VFx4ZGFlXHJceGZkXTprXHhiYWwiCisgICAgYiJceGE5XHhiYmFceGMzNFx4ZjlyXHhlYn1yXHhkYlx4YzdceGRiKlx4OGZceDAzelx4ZGM4aFx4Y2NceGM5XHhkM1x4YmNsIgorICAgIGIiXHhhNS1ceGNiXHhlYUtceGEyXHhjNVx4MTVceGMwXHhlM1x4YzFceDg2Wlx4ZmJceGViTFx4ZTEzXHhjZlx4OWNceGUzIgorICAgIGIiXHgxZFx4YzlceGVkXHhjMlx4MDZceGNjXHhjZSFceDkyXHhlNVx4ZmVceDljXlx4YTU5dyBceDliUFx4YTNQS1x4MDhkIgorICAgIGIiXHhmOVx4ZTJafVx4YTdceGJmXHhlZFx4ZWIlJFx4MGNceDgyXHhiOC9ceGIwXHgwMVx4YTkmLFx4ZjdxaHtRXHg5NilceGYyIgorICAgIGIicVx4OTZceGMzXHg4MFx4YjRceDEyXHhiMFx4YmFceGU2b1x4ZjQhXHhiNFtceGQ0XHg4YXdceDEwXHhmN3RceDBjXHhiMyIKKyAgICBiIlx4ZDlceGQ1XHhjM2BeXHg4MVx4MTE/P1xcXHhhNFx4OTlceDg1Ulx4ZDRceDhlXHg4M1x4YzlceDFlWFx4YmZhXHhmMSIKKyAgICBiIlx4YWNceGIwXHhlYVx4ZWFceGQ3XHhkMFx4YWJceDE4XHhlMlx4ZjJceGVkXHhlMVx4YjdceGM5XHgxOFx4Y2JTXHhlND4iCisgICAgYiJceGM5XHg5NUhceGU4XHhjYlx0XHIlXHhlYlx4YzckLm9ceGYxXHhmM1JceDE3XHgxZGJceGJiXHhkOFVceGE1Xlx4Y2NTIgorICAgIGIiXHgxNlx4MDFceDg3XHhmMy9ceDkzXHhkMVx4ZjB2XHhjMHJceGQ3XHhjY1x4YTJHa3pceGNhXHg4MFx4MGVceGZkXHhkMCIKKyAgICBiIlx4OGJceGJiXHhkMkl4XHhiM1x4MWV5XHhjYS0wXHhlM3peXHhkNlx4ZDZceDhmX1x4ZjFceDlkUFx4OWZpXHhhN1x4ZDEiCisgICAgYiJceGU4XHg5MFx4ODRceGRjXHhiZlx4Y2RreVx4OGVceGRjXHg4MVx4N2ZceGEzXHhiMitceGJmXHgwNFx4ZWZceGQ4XFwiCisgICAgYiJceGM0XHhkZlx4ZTFceGIwXHgwMVx4ZTlceDkzXHhlM1lceGYxXHgxZFlceGU4aFx4ODFceGNmXHhmMXdceGNjXHhiNFx4ZWYiCisgICAgYiIgXHg4YnxceDA0XHhlYVx4ODNlalx4YmVceDFmXHhkNHpceDljYFx4ZDNceDFhXHg5MkFceDA2XHhlNVx4OGZceGE5XHgxMyIKKyAgICBiIlx0XHg5ZT1ceGZhXHgxY1x4ZTVfXHg5ZiV2XHgxYm9ceDExWk9ceGQ4XHhmNFx0XHhkZE1ceDE2LVx4MDRceGZjXHgxODxcIiIKKyAgICBiIkNNXHhkZGd+Ylx4ZjZceGVmXHg4ZVx4MGNceGQwXHhkZXxceGEwJ1x4OGFceDBjXHhkNnhceGFlIUpceGE2Rlx4ODhceDE1dSIKKyAgICBiIlx4MDA4XHgxN1x4YmM3eVx4YjNceGQ4dVx4YWNfXHg4NVx4OGRceGU3XHhjMUBceDljXHhlY3FjXHhhMyNceGFkXHhmMSIKKyAgICBiIlx4OTM1XHhiNSlfXHJceGVjM11ceDBmb101XHhkMG15XHgwN1x4OWJceGVlXHg4MVx4YjVceDBmXHhjZksrXHgwMFx4YzAiCisgICAgYiJceGU0Ylx4MTBceGU0XHgwY1x4MWEgXHg5Ylx4ZTBceDk3dFx4ZjZceGExXHg5ZVx4ODUwXHhiYVx4MGNceDlhXHg4ZFx4YzgiCisgICAgYiJceDhmXHgwN1x4ZDdceGFlXHhjOFx4ZjkraVx4ZGNceGI5a1x4YjA+Zlx4MTlceGI4XHJceGE4XHhmOFx4MWYkXHhhNXtwIgorICAgIGIiXHhjNlx4ODgwXHhjZVx4ZGJceGNmXHhjYV9ceDg2XHhhY1x4ODhoNlx4OGJaJSdceGQwXG5ceGJmXHgwZlx4OWNcIlx4YmEiCisgICAgYiJceGU1XHg4Nlx4OWZceDBmN1g9bU5YW1x4Y2NceDE5RlVceGM5XHg4NjBceGJjXHg5MGErKiBceGFlXyRceDAzXHgxZVx4ZDMiCisgICAgYiJceGNkX1x4YTBceDljXHhkZVx4YWY0NnFceGE1XHhjOVx4OTJceGQ3XHhjYVx4ZTNgXHg5ZFx4ODV9XHhiNFx4ZmZceGIzIgorICAgIGIiXHg4M1x4ZmJceGI2XHhjYVx4YWVgXHgwYndceDdmXHhmY1x4ZDhceGFjVmVceDE5XHhjOFx4MTdceDBiWlx4YWRceDg4IgorICAgIGIiXHhlYiNceDk3XHgwM1x4MTNceGIxZFx4MGZ7XHgwY1x4MDR3XHgwN1xyXHg5N1x4YmRceGQ2XHhjMVx4YzNCOlx4OTVceDA4IgorICAgIGIiXlx4MTBWXHhhZWFIXHgwMlx4ZDlceGUzXG5cXFx4MDFYXHhmNlx4OWNceDhhXHgwNnUjJVx4YmUqXHhhMVx4MTh2XHg4NSIKKyAgICBiIlx4ZWMhXHQ0XHgwMFx4MDBceDAwIgorKQorCitGSUxURVJTX1JBV180ID0gW3siaWQiOiBsem1hLkZJTFRFUl9ERUxUQSwgImRpc3QiOiA0fSwKKyAgICAgICAgICAgICAgICAgeyJpZCI6IGx6bWEuRklMVEVSX1g4NiwgInN0YXJ0X29mZnNldCI6IDB4NDB9LAorICAgICAgICAgICAgICAgICB7ImlkIjogbHptYS5GSUxURVJfTFpNQTIsICJwcmVzZXQiOiA0LCAibGMiOiAyfV0KK0NPTVBSRVNTRURfUkFXXzQgPSAoCisgICAgYiJceGUwXHgwN1x4ODBceDA2XHgwZVxcXHgwMFx4MDVceDE0XHgwN2JXXHhhYWhceGRkXHgxMFx4ZGMnXHhkNlx4OTAsXHhjNnYiCisgICAgYiJKcSBceDE0bFx4YjdceDgzeEJceDBiXHg5N2Y9JmZ4XHhiYVxuPlRuXHhiZlx4OGZceGZiXHgxZEZceGNhXHhjM3ZfXHhjYT8iCisgICAgYiJceGZiVjxceDkyI1x4ZDR3XHhhNlx4OGFceGViXHhmNlx4MDNceGMwXHgwMVx4OTRceGQ4XHg5ZVx4MTNceDEyXHg5OFx4ZDEiCisgICAgYiIqXHhmYV1jXHhlOFx4MWV+XHhhZlx4YjVdRWdceGZiXHg5ZVx4MDFcIjhceGIyXHg5MFx4MDY9flx4ZTlceDkxV1x4Y2QiCisgICAgYiJceGVjRFx4MTJceGM3XHhmYVx4ZTFceDkxXHgwNlx4YzdceDk5XHhiOVx4ZTNceDkwMVx4ODdceDE5dVx4MGZceDg2OVx4ZmYiCisgICAgYiJceGMxXHhiMGh3fFx4YjBceGRjbFx4Y2NrXHhiMTZvN1x4ODVceGVle1lfYlx4YmZceGJjJFx4ZjM9XHg4ZFx4OGJ3XHhlNVoiCisgICAgYiJceDA4QFx4YzRrbUVceGFkXHhmYlx4ZjYqXHhkOFx4YWRceGExXHhmYlx4YzV7XHhkZWosKVx4MWVtQlx4MWY8XHhhZWNhIgorICAgIGIiXHg4MChceGVlXHgwNyBceGRmXHhlOVx4ZjhceGViXHgwZS1ceDk3XHg4Nlx4OTBjXHhmOVx4ZWEnQlx4ZjdgXHhkN1x4YjAiCisgICAgYiJceDkyXHhiZFx4YTBceDgyXVx4YmRceDBlXHgwZUJceDE5XHhkY1x4OTZceGM2XHgxOVx4ZDg2RFx4ZjBceGQ1XHg4MzEiCisgICAgYiJceDAzXHhiN1x4MWNceGY3JjVceDFhXHg4ZiBQWiZqXHhmOFx4OThceDFib1x4Y2NceDg2XHg5YlNceGQzXHhhNVx4Y2R1IgorICAgIGIiXHhmOSRceGNjXHg5N29ceGU1Vn5ceGZiXHg5N1x4YjVceDBiXHgxN1x4OWNceGZkeFdceDEwXHhmZXA0XHg4MFx4ZGFIRFkiCisgICAgYiJceGZhKVx4ZmV0XHhiNVwiXHhkNFx4ZDNGXHg4MVx4ZjRceDEzXHgxZlx4ZWNceGRmXHhhNVx4MTNceGZjXCJceDkxeFx4YjciCisgICAgYiJceDk5XHhjZVx4YzhceDkyXG5ceGViW1x4MTBsKllceGQ4XHhiMUBceDA2XHhjOG9ceDhkN3JceGVidVx4ZmQ1XHgwZVx4N2YiCisgICAgYiJceGYxJFV7XHR9XHgxZlFceGNmeE5ceDlkXHg5ZlhYXHhlOWBceDgzXHhjMVx4MDZceGY0XHg4N3YtZlx4MTFceGRiL1xcIgorICAgIGIiXHgwNlx4ZmZceGQ3KUJceGYzZ1x4MDZceDg4IzJceDFlQjI0NFx4N2Y0cVx0XHhjODkzP21QWFx4OTVceGE2YVx4ZmIpZCIKKyAgICBiIlx4OWJceGZjXHg5OFx4OWFqXHgwNFx4YWVceDliXHg5ZFx4MTl3XHhiYVx4ZjkyXHhmYUFceDExXFxceDE3XHg5N0MzXHhhNCIKKyAgICBiIlx4YmMhXHg4OFx4Y2RvW1x4ZWM6XHgwMzBceDkxLlx4ODVceGUwQFxcNFx4MTZceDEyXHg5ZFx4Y2FKdlx4OTdceGIwNCIKKyAgICBiIlx4YWNrXHhjYmtmXHhhM3NzXHhmY1x4MTZeXHg4Y2VceDg1YVx4YTU9Jlx4ZWNyXHhiM3BceGQxRVx4ZDVceDgweVx4YzciCisgICAgYiJceGRhXHhmNlx4ZmVrXHhiY1RceGJmSFx4ZWVceDE1b1x4YzVceDhjXHg4MzBceGVjXHgxZFx4MDFceGFlXHgwYy1lXFwiCisgICAgYiJceDkxXHg5MFx4OTRceGIyXHhmOFx4ODhceDkxXHhlOFx4MGJceGFlXHhhNz5ceDk4XHhmNlx4OWNrXHhkMlx4YzZceDA4IgorICAgIGIiXHhlNlx4YWJcdFx4OThceGYyIVx4YTBceDhjXlx4YWNxQVx4OTk8XHgxY0VHXHg5N1x4YzhceGYxXHhiNlx4YjlceDgyIgorICAgIGIiXHg4ZFx4ZjdceDA4c1x4OThhXHhmZlx4ZTNceGNjXHg5Mlx4MGVceGQyXHhiNlVceGQ3XHhkOVx4ODZceDdmYVx4ZTVceDFjIgorICAgIGIiXHg4ZFRHQFx0XHgxZVx4MGU3Klx4ZmNceGRlXHhiY102Tlx4ZjdceGYxXHg4NFx4OWVceDlmXHhjZlx4ZTlceDFlXHhiNSciCisgICAgYiJceGY0PFx4ZGZceDk5c3FceGQwXHg5ZFx4YmRceDk5XHgwYlx4YjQlcDRceGJme1x4YmJceDhhXHhkMlx4MGJceGJjPU0iCisgICAgYiJceDk0SDpceGY1XHhhOFx4ZDZceGE0XHhjOTBceGMyRFx4YjlceGQzXHhhOFx4YjBTXHg4NyBgXHhhMlx4ZWJceGYzV1x4Y2UiCisgICAgYiIgN1x4ZjlOI1xyXHhlNlx4YmVcdFx4OWRceGU3XHg4MTFceGY5XHgxMFx4YzFceGMyXHgxNFx4ZjZceGZjXHhjYmFceGI3IgorICAgIGIiXHhiMVx4N2ZceDk1bFx4ZTRcdGpBXHhlYzpceDEwXHhlNVx4ZmVceGMyXFw9RFx4ZTJceDBjXHgwYjNdXHhmN1x4YzFceGY3IgorICAgIGIiXHhiY2VaXHhiMUFceGVhXHgxNlx4ZTVceGZkZGdGUVx4ZWRceGFmXHgwNFx4YTNceGQzXHhmOFx4YTJxXHgxOUJceGQ0ciIKKyAgICBiIlx4YzVceDBjXHg5YVx4MTRceDk0XHhlYVx4OTFceGM0b1x4ZTRceGJiXHhiNFx4OTlceGY0QFx4ZDFceGU2XHgwY1x4ZTMiCisgICAgYiJceGM2ZFx4YTBRXG5ceGYyL1x4ZDhceGI4UzVceDhhXHgxODpceGI1Z1x4YWNceDk1RFx4Y2VceDE3XHgwN1x4ZDR6XHhkYSIKKyAgICBiIlx4OTBceGU2NVx4MDdceDE5SCFcdFx4ZmR1XHgxNlx4OGVceDBlUlx4MTlceGY0XHg4Y2xceDBjXHhmOVFceGYxXHg4MCIKKyAgICBiIlx4ZTNceGJmXHhkN09ceGY4XHg4Y1x4MThceDBiXHg5Y1x4ZjFceDFmYlx4ZTFcdFJceGIyXHhmMVx4ZTFBXHhlYSBceGNmLSIKKyAgICBiIklHRVx4ZjFceDE0XHg5OCRceDgzXHgxNVx4YzlceGQ4alx4YmZceDE5XHgwZlx4ZDVceGQxXHhhYVx4YjNceGYzXHhhNUkycyIKKyAgICBiIlx4OGRceDE0NVx4Y2FceGQ1XHhkOTNceDljXHhiOEQwXHhlNlx4YWElXHhkMFx4YzBQfUpPXmhceDhlXHgwOFx4YWRsVi4iCisgICAgYiJceDE4XHg4OFx4MTNceDA1b1x4YjBceDA3XHhlYXdceGUwXHhiNlx4YTRceGQ1Klx4ZTRyXHhlZlx4MDdHK1x4YzFceGJlaVsiCisgICAgYiJ3XHhlOFx4YWJAX1x4ZWZceDE1eVx4ZTVceDEyXHhjOVdceDFiLlx4YWRceDg1LVx4YzJceGY3XHhlM21VNmdceDhlU0EiCisgICAgYiJceDAxKFx4ZDNceGRiXHgxNlx4MTM9XHhkZVx4OTJceGY5LERceGI4XHg4YVx4YjJceGI0XHhjOVx4YzNceGVmbkVceGU4XFwiCisgICAgYiJceGE2XHhlMllceGQyXHhjZlx4Y2JceDhjXHhiNlx4ZDVceGU5XHgxZFx4MWVceDlhXHg4Yn5ceGUyXHhhNlxyRVx4ODR1ViIKKyAgICBiIlx4ZWRceGM2XHg5OVx4ZGRtPFx4MTBbXHgwZnVceDFmXHhjMVx4MWQxXG5ceGNmd1x4YjIlIVx4ZjBbXHhjZVx4ODdceDgzQiIKKyAgICBiIlx4MDhceGFhLFx4MDglZFx4Y2VmXHg5NFwiXHhkOWcuXHhjODNceGNiWFkrNFx4ZWNceDg1cUFcblx4MWQ9OVx4ZjAqXHhiMSIKKyAgICBiIlx4MWYvXHhmM3NceGQ2MWJceDdmQFx4ZmJceDlkXHhlM0ZRXFxceGJkXHg4Mlx4MWVceDAwXHhmM1x4Y2VceGQzXHhlMSIKKyAgICBiIlx4Y2EsRVx4ZmQ3W1x4YWJceGI2XHhiN1x4YWMhbUF9XHhiZFx4OWQzUjVceDljRlx4YWJIXHhlYlx4OTIpY2NceDEzXHhkMCIKKyAgICBiIlx4YmRceGVlXHhlOW57XHgxZElKQlx4YTVceGViXHgxMVx4ZThgdyZgXHg4Yn1AT3hlXHRceDhhXHgwN1x4MDJceDk1XHhmMiIKKyAgICBiIlx4ZWRceGRhfFx4YjFlXHhiZVx4YWFceGJiZ1x4MTlAXHhlMVlceDg3OFx4ODRceDBmXHg4Y1x4ZTNceGM5OFx4ZjJceDllIgorICAgIGIiXHhkNU5ceGI1Slx4ZWZceGFiIVx4ZTJceDhkcVx4ZTFceGU1cVx4YzVceGVlXHgxMVdceGI3XHhlNGsqXHgwMjdceGEwIgorICAgIGIiXHhhM0pceGY0XHhkOG1ceGQwcVx4OTRceGNiXHgwN1xuOlx4YjZgLlx4ZTRceDljXHgxNStceGMwKVx4ZGVceDgwWFx4ZDQiCisgICAgYiJceGNmUW1ceDAxXHhjMmNQXHgxY0FceDg1J1x4YzlceGFjXHg4Ylx4ZTZceGIyKVx4ZTZceDg0dFx4MWNceDkyXHhlNFoiCisgICAgYiJceDFjUlx4YjBceDllXHg5Nlx4ZDFceGZiXHgxY1x4YTZceDhiXHhjYmBceDEwXHgxMl1ceGYyZ1JceDliRlRceGUwXHhjOEgiCisgICAgYiJTXHhmYlx4YWM8XHgwNFx4YzdceGMxXHhlOFx4ZWRQXHhmNFx4MTZceGRiXHhjMFx4ZDdlXHhjMlx4MTdKXlx4MWZceGFiIgorICAgIGIiXHhmZltceDA4XHgxOVx4YjRceGY1XHhmYlx4MTlceGI0XHgwNFx4ZTVjfiddXHhjYlx4YzJBXHhlY1x4OTBceGQwXHhlZCIKKyAgICBiIlx4MDYsXHhjNUt7XHg4Nlx4MDNceGIxXHhjZE14XHhkZVFceDhjM1x4ZjlceDhhXHhlYT1ceDg5XHhhYmFceGQyXHhjODlhIgorICAgIGIiXHhkNzJceGYwXHhjM1x4MTlceDhhXHhkZnNceGQ0XHhmZFx4YmJceDgxYlx4ZWFFXCJceGQ4XHhmNGRceDBjRFx4ZjdJSiEiCisgICAgYiJceGU1ZFx4YmJHXHhlOVx4Y2FtXHhhYVx4MGZfclx4OTVceDkxTkJxXHhjYVBceGNlXHhhN1x4YTlceGI1XHgxMFx4OTRlUCEiCisgICAgYiJ8XHg4NTZceGNkXHhiZklpclx4YjhlXHg5YmpQXHg5N3FceGFid1M3XHgxYVx4MGVoTVx4ZTdceGNhXHg4Nj9ceGRlUH15fiIKKyAgICBiIlx4MGZceDk1SVx4ZmNceDEzXHhlMTxRXHgxYlx4ODY4XHgxZFx4MTFceGRmXHg5NFx4ZjRceDgyPnJceGE5a1x4ODhceGNiIgorICAgIGIiXHhmZFx4YzN2XHhlMlx4YjlceDhhXHgwMlx4OGVxXHg5MklceGY4XHhmNlx4ZjFceDAzc1x4OWJceGI4XHhlM1wiXHhlMyIKKyAgICBiIlx4YTlceGE1PkRceGI4XHg5NjtceGU3XHg5Mlx4ZDEzM1x4ZThceGRkJ2VceGM5Llx4ZGM7XHgxN1x4MWZceGY1SFx4MTNxIgorICAgIGIiXHhhNFdceDBjXHhkYn5ceDk4XHgwMVx4ZWJceGRmXHhlMzJceDEzXHgwZlx4ZGR4XG42XHhhMFx0XHgxMFx4YjZceGJiIgorICAgIGIiXHhiMFx4YzNceDE4XHhiNjtceDlmaltceGQ5XHhkNVx4YzlceDA2XHg4YVx4ODdceGNkXHhlNVx4ZWVceGZjXHg5Yy0lQCIKKyAgICBiIlx4ZWVceGUwXHhlYlx4ZDJceGUzXHhlOFx4ZmJceGMwXHgxMjJcXFx4YzdceGFmXHhjMlx4YTFPdGhceGIzXHg4Zlx4ODIiCisgICAgYiJceGIzXHgxOFx4YThceDA3XHhkNVx4ZWVfXHhiZVx4ZTBceDFjQVx4MWVfXHJceDlhXHhiMFx4MTdXJlx4YTJEXHg5MVx4OTQiCisgICAgYiJceDFhXHhiMlx4ZWZceGYyXHhkY1x4ODU7WFx4YjAsXHhlYj4tN1NceGU1XHhjYVx4MDcpXHgxZnBceDdmXHhjYVFCTFx4Y2EiCisgICAgYiJceGYzXHhiOWRceGZjXHhiNXN1XHhiMFx4YzhceDk1XHg5MFx4ZWIqKVx4YTB2XHhlNFx4OWF7RldceGY0bFx4ZGVceGNkaiIKKyAgICBiIlx4MDAiCispCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdCgKKyAgICAgICAgQ29tcHJlc3NvckRlY29tcHJlc3NvclRlc3RDYXNlLAorICAgICAgICBDb21wcmVzc0RlY29tcHJlc3NGdW5jdGlvblRlc3RDYXNlLAorICAgICAgICBGaWxlVGVzdENhc2UsCisgICAgICAgIE9wZW5UZXN0Q2FzZSwKKyAgICAgICAgTWlzY2VsbGFuZW91c1Rlc3RDYXNlLAorICAgICkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CmluZGV4IGM3MmViMWMuLjZiMWU5MzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKQEAgLTIyLDYgKzIyLDEwIEBACiAKIGNsYXNzIFRlc3RCYXNlOgogCisgICAgYWxsX21haWxib3hfdHlwZXMgPSAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKQorCiAgICAgZGVmIF9jaGVja19zYW1wbGUoc2VsZiwgbXNnKToKICAgICAgICAgIyBJbnNwZWN0IGEgbWFpbGJveC5NZXNzYWdlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzYW1wbGUgbWVzc2FnZQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobXNnLCBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCkBAIC05MSwxNCArOTUsMTQgQEAKICAgICAgICAgICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2FkZF9pbnZhbGlkXzhiaXRfYnl0ZXNfaGVhZGVyKHNlbGYpOgotICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluMScpKQorICAgICAgICBrZXkgPSBzZWxmLl9ib3guYWRkKHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc2VsZi5fYm94KSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ib3guZ2V0X2J5dGVzKGtleSksCi0gICAgICAgICAgICBzZWxmLl9ub25hc2NpaV9tc2cuZW5jb2RlKCdsYXRpbjEnKSkKKyAgICAgICAgICAgIHNlbGYuX25vbmFzY2lpX21zZy5lbmNvZGUoJ2xhdGluLTEnKSkKIAogICAgIGRlZiB0ZXN0X2ludmFsaWRfbm9uYXNjaWlfaGVhZGVyX2FzX3N0cmluZyhzZWxmKToKICAgICAgICAgc3ViaiA9IHNlbGYuX25vbmFzY2lpX21zZy5zcGxpdGxpbmVzKClbMV0KLSAgICAgICAga2V5ID0gc2VsZi5fYm94LmFkZChzdWJqLmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgIGtleSA9IHNlbGYuX2JveC5hZGQoc3Viai5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9ib3guZ2V0X3N0cmluZyhrZXkpLAogICAgICAgICAgICAgJ1N1YmplY3Q6ID0/dW5rbm93bi04Yml0P2I/Um1Gc2FXNWhjSFRoY2lCbzRYcG9iM3B6ZXVGc2JPMTA0WE56JwogICAgICAgICAgICAgJ1lXd3VJRTNoY2lCeVpXNWtaV3gwNld3Lz89XG5cbicpCkBAIC05MzAsOCArOTM0LDcgQEAKICAgICAgICAgIyB0aGUgbXRpbWUgYW5kIHNob3VsZCBjYXVzZSBhIHJlLXJlYWQuIE5vdGUgdGhhdCAic2xlZXAKICAgICAgICAgIyBlbXVsYXRpb24iIGlzIHN0aWxsIGluIGVmZmVjdCwgYXMgc2tld2ZhY3RvciBpcyAtMy4KICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5fcGF0aCwgJ2N1cicsICdzdHJheS1maWxlJykKLSAgICAgICAgZiA9IG9wZW4oZmlsZW5hbWUsICd3JykKLSAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZSkKICAgICAgICAgc2VsZi5fYm94Ll9yZWZyZXNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlZnJlc2hlZCgpKQpAQCAtMTM5Nyw2ICsxNDAwLDE0IEBACiAgICAgICAgICMgSW5pdGlhbGl6ZSB3aXRoIGludmFsaWQgYXJndW1lbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IHNlbGYuX2ZhY3Rvcnkob2JqZWN0KCkpKQogCisgICAgZGVmIHRlc3RfYWxsX2VNTV9hdHRyaWJ1ZXNfZXhpc3Qoc2VsZik6CisgICAgICAgICMgSXNzdWUgMTI1MzcKKyAgICAgICAgZU1NID0gZW1haWwubWVzc2FnZV9mcm9tX3N0cmluZyhfc2FtcGxlX21lc3NhZ2UpCisgICAgICAgIG1zZyA9IHNlbGYuX2ZhY3RvcnkoX3NhbXBsZV9tZXNzYWdlKQorICAgICAgICBmb3IgYXR0ciBpbiBlTU0uX19kaWN0X186CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0ciBpbiBtc2cuX19kaWN0X18sCisgICAgICAgICAgICAgICAgJ3t9IGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCcuZm9ybWF0KGF0dHIpKQorCiAgICAgZGVmIHRlc3RfYmVjb21lX21lc3NhZ2Uoc2VsZik6CiAgICAgICAgICMgVGFrZSBvbiB0aGUgc3RhdGUgb2YgYW5vdGhlciBtZXNzYWdlCiAgICAgICAgIGVNTSA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoX3NhbXBsZV9tZXNzYWdlKQpAQCAtMTQwOCw5ICsxNDE5LDcgQEAKICAgICAgICAgIyBDb3B5IHNlbGYncyBmb3JtYXQtc3BlY2lmaWMgZGF0YSB0byBvdGhlciBtZXNzYWdlIGZvcm1hdHMuCiAgICAgICAgICMgVGhpcyB0ZXN0IGlzIHN1cGVyZmljaWFsOyBiZXR0ZXIgb25lcyBhcmUgaW4gVGVzdE1lc3NhZ2VDb252ZXJzaW9uLgogICAgICAgICBtc2cgPSBzZWxmLl9mYWN0b3J5KCkKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBvdGhlcl9tc2cgPSBjbGFzc18oKQogICAgICAgICAgICAgbXNnLl9leHBsYWluX3RvKG90aGVyX21zZykKICAgICAgICAgb3RoZXJfbXNnID0gZW1haWwubWVzc2FnZS5NZXNzYWdlKCkKQEAgLTE2NDIsMzcgKzE2NTEsNDQgQEAKIAogICAgIGRlZiB0ZXN0X3BsYWluX3RvX3goc2VsZik6CiAgICAgICAgICMgQ29udmVydCBNZXNzYWdlIHRvIGFsbCBmb3JtYXRzCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnX3BsYWluID0gbWFpbGJveC5NZXNzYWdlKF9zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIG1zZyA9IGNsYXNzXyhtc2dfcGxhaW4pCiAgICAgICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUobXNnKQogCiAgICAgZGVmIHRlc3RfeF90b19wbGFpbihzZWxmKToKICAgICAgICAgIyBDb252ZXJ0IGFsbCBmb3JtYXRzIHRvIE1lc3NhZ2UKLSAgICAgICAgZm9yIGNsYXNzXyBpbiAobWFpbGJveC5NZXNzYWdlLCBtYWlsYm94Lk1haWxkaXJNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94Lm1ib3hNZXNzYWdlLCBtYWlsYm94Lk1ITWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5CYWJ5bE1lc3NhZ2UsIG1haWxib3guTU1ERk1lc3NhZ2UpOgorICAgICAgICBmb3IgY2xhc3NfIGluIHNlbGYuYWxsX21haWxib3hfdHlwZXM6CiAgICAgICAgICAgICBtc2cgPSBjbGFzc18oX3NhbXBsZV9tZXNzYWdlKQogICAgICAgICAgICAgbXNnX3BsYWluID0gbWFpbGJveC5NZXNzYWdlKG1zZykKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2dfcGxhaW4pCiAKICAgICBkZWYgdGVzdF94X2Zyb21fYnl0ZXMoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBNZXNzYWdlCi0gICAgICAgIGZvciBjbGFzc18gaW4gKG1haWxib3guTWVzc2FnZSwgbWFpbGJveC5NYWlsZGlyTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFpbGJveC5tYm94TWVzc2FnZSwgbWFpbGJveC5NSE1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3guQmFieWxNZXNzYWdlLCBtYWlsYm94Lk1NREZNZXNzYWdlKToKKyAgICAgICAgZm9yIGNsYXNzXyBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgogICAgICAgICAgICAgbXNnID0gY2xhc3NfKF9ieXRlc19zYW1wbGVfbWVzc2FnZSkKICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZShtc2cpCiAKICAgICBkZWYgdGVzdF94X3RvX2ludmFsaWQoc2VsZik6CiAgICAgICAgICMgQ29udmVydCBhbGwgZm9ybWF0cyB0byBhbiBpbnZhbGlkIGZvcm1hdAotICAgICAgICBmb3IgY2xhc3NfIGluIChtYWlsYm94Lk1lc3NhZ2UsIG1haWxib3guTWFpbGRpck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIG1haWxib3gubWJveE1lc3NhZ2UsIG1haWxib3guTUhNZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBtYWlsYm94LkJhYnlsTWVzc2FnZSwgbWFpbGJveC5NTURGTWVzc2FnZSk6CisgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBjbGFzc18oRmFsc2UpKQogCisgICAgZGVmIHRlc3RfdHlwZV9zcGVjaWZpY19hdHRyaWJ1dGVzX3JlbW92ZWRfb25fY29udmVyc2lvbihzZWxmKToKKyAgICAgICAgcmVmZXJlbmNlID0ge2NsYXNzXzogY2xhc3NfKF9zYW1wbGVfbWVzc2FnZSkuX19kaWN0X18KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjbGFzc18gaW4gc2VsZi5hbGxfbWFpbGJveF90eXBlc30KKyAgICAgICAgZm9yIGNsYXNzMSBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgorICAgICAgICAgICAgZm9yIGNsYXNzMiBpbiBzZWxmLmFsbF9tYWlsYm94X3R5cGVzOgorICAgICAgICAgICAgICAgIGlmIGNsYXNzMSBpcyBjbGFzczI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgc291cmNlID0gY2xhc3MxKF9zYW1wbGVfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBjbGFzczIoc291cmNlKQorICAgICAgICAgICAgICAgIHR5cGVfc3BlY2lmaWMgPSBbYSBmb3IgYSBpbiByZWZlcmVuY2VbY2xhc3MxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhIG5vdCBpbiByZWZlcmVuY2VbY2xhc3MyXV0KKyAgICAgICAgICAgICAgICBmb3IgYXR0ciBpbiB0eXBlX3NwZWNpZmljOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKGF0dHIsIHRhcmdldC5fX2RpY3RfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aGlsZSBjb252ZXJ0aW5nIHt9IHRvIHt9Ii5mb3JtYXQoY2xhc3MxLCBjbGFzczIpKQorCiAgICAgZGVmIHRlc3RfbWFpbGRpcl90b19tYWlsZGlyKHNlbGYpOgogICAgICAgICAjIENvbnZlcnQgTWFpbGRpck1lc3NhZ2UgdG8gTWFpbGRpck1lc3NhZ2UKICAgICAgICAgbXNnX21haWxkaXIgPSBtYWlsYm94Lk1haWxkaXJNZXNzYWdlKF9zYW1wbGVfbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGNkMDljCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CkBAIC0wLDAgKzEsMjIxIEBACitpbXBvcnQgbWFpbGNhcAoraW1wb3J0IG9zCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVzdC5zdXBwb3J0CitpbXBvcnQgdW5pdHRlc3QKKworIyBMb2NhdGlvbiBvZiBtYWlsY2FwIGZpbGUKK01BSUxDQVBGSUxFID0gdGVzdC5zdXBwb3J0LmZpbmRmaWxlKCJtYWlsY2FwLnR4dCIpCisKKyMgRGljdCB0byBhY3QgYXMgbW9jayBtYWlsY2FwIGVudHJ5IGZvciB0aGlzIHRlc3QKKyMgVGhlIGtleXMgYW5kIHZhbHVlcyBzaG91bGQgbWF0Y2ggdGhlIGNvbnRlbnRzIG9mIE1BSUxDQVBGSUxFCitNQUlMQ0FQRElDVCA9IHsKKyAgICAnYXBwbGljYXRpb24veC1tb3ZpZSc6CisgICAgICAgIFt7J2NvbXBvc2UnOiAnbW92aWVtYWtlciAlcycsCisgICAgICAgICAgJ3gxMS1iaXRtYXAnOiAnIi91c3IvbGliL1ptYWlsL2JpdG1hcHMvbW92aWUueGJtIicsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJNb3ZpZSInLAorICAgICAgICAgICd2aWV3JzogJ21vdmllcGxheWVyICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi8qJzoKKyAgICAgICAgW3snY29waW91c291dHB1dCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ2VjaG8gIlRoaXMgaXMgXFwiJXRcXCIgYnV0ICAgICAgICBpcyA1MCBcXCUgR3JlZWsgdG8gbWUiIFxcOyBjYXQgJXMnfV0sCisgICAgJ2F1ZGlvL2Jhc2ljJzoKKyAgICAgICAgW3snZWRpdCc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dhdWRpbyAlcyd9XSwKKyAgICAndmlkZW8vbXBlZyc6CisgICAgICAgIFt7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ31dLAorICAgICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JzoKKyAgICAgICAgW3snbmVlZHN0ZXJtaW5hbCc6ICcnLCAndmlldyc6ICdwcy10by10ZXJtaW5hbCAlcyd9LAorICAgICAgICAgeydjb21wb3NlJzogJ2lkcmF3ICVzJywgJ3ZpZXcnOiAncHMtdG8tdGVybWluYWwgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL3gtZHZpJzoKKyAgICAgICAgW3sndmlldyc6ICd4ZHZpICVzJ31dLAorICAgICdtZXNzYWdlL2V4dGVybmFsLWJvZHknOgorICAgICAgICBbeydjb21wb3NldHlwZWQnOiAnZXh0Y29tcG9zZSAlcycsCisgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBIHJlZmVyZW5jZSB0byBkYXRhIHN0b3JlZCBpbiBhbiBleHRlcm5hbCBsb2NhdGlvbiInLAorICAgICAgICAgICduZWVkc3Rlcm1pbmFsJzogJycsCisgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2V4dGVybmFsICVzICV7YWNjZXNzLXR5cGV9ICV7bmFtZX0gJXtzaXRlfSAgICAgJXtkaXJlY3Rvcnl9ICV7bW9kZX0gJXtzZXJ2ZXJ9J31dLAorICAgICd0ZXh0L3JpY2h0ZXh0JzoKKyAgICAgICAgW3sndGVzdCc6ICd0ZXN0ICJgZWNobyAgICAgJXtjaGFyc2V0fSB8IHRyIFwnW0EtWl1cJyBcJ1thLXpdXCdgIiAgPSBpc28tODg1OS04JywKKyAgICAgICAgICAnY29waW91c291dHB1dCc6ICcnLAorICAgICAgICAgICd2aWV3JzogJ3Nob3dub25hc2NpaSBpc28tODg1OS04IC1lIHJpY2h0ZXh0IC1wICVzJ31dLAorICAgICdpbWFnZS94LXh3aW5kb3dkdW1wJzoKKyAgICAgICAgW3sndmlldyc6ICdkaXNwbGF5ICVzJ31dLAorICAgICdhdWRpby8qJzoKKyAgICAgICAgW3sndmlldyc6ICcvdXNyL2xvY2FsL2Jpbi9zaG93YXVkaW8gJXQnfV0sCisgICAgJ3ZpZGVvLyonOgorICAgICAgICBbeyd2aWV3JzogJ2FuaW1hdGUgJXMnfV0sCisgICAgJ2FwcGxpY2F0aW9uL2ZyYW1lJzoKKyAgICAgICAgW3sncHJpbnQnOiAnImNhdCAlcyB8IGxwIicsICd2aWV3JzogJ3Nob3dmcmFtZSAlcyd9XSwKKyAgICAnaW1hZ2UvcmdiJzoKKyAgICAgICAgW3sndmlldyc6ICdkaXNwbGF5ICVzJ31dCit9CisKKworY2xhc3MgSGVscGVyRnVuY3Rpb25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xpc3RtYWlsY2FwZmlsZXMoc2VsZik6CisgICAgICAgICMgVGhlIHJldHVybiB2YWx1ZSBmb3IgbGlzdG1haWxjYXBmaWxlcygpIHdpbGwgdmFyeSBieSBzeXN0ZW0uCisgICAgICAgICMgU28gdmVyaWZ5IHRoYXQgbGlzdG1haWxjYXBmaWxlcygpIHJldHVybnMgYSBsaXN0IG9mIHN0cmluZ3MgdGhhdCBpcyBvZgorICAgICAgICAjIG5vbi16ZXJvIGxlbmd0aC4KKyAgICAgICAgbWNmaWxlcyA9IG1haWxjYXAubGlzdG1haWxjYXBmaWxlcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtY2ZpbGVzLCBsaXN0KQorICAgICAgICBmb3IgbSBpbiBtY2ZpbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG0sIHN0cikKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICMgQWNjb3JkaW5nIHRvIFJGQyAxNTI0LCBpZiBNQUlMQ0FQUyBlbnYgdmFyaWFibGUgZXhpc3RzLCB1c2UgdGhhdAorICAgICAgICAgICAgIyBhbmQgb25seSB0aGF0LgorICAgICAgICAgICAgaWYgIk1BSUxDQVBTIiBpbiBlbnY6CisgICAgICAgICAgICAgICAgZW52X21haWxjYXBzID0gZW52WyJNQUlMQ0FQUyJdLnNwbGl0KG9zLnBhdGhzZXApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGVudl9tYWlsY2FwcyA9IFsiL3Rlc3RkaXIxLy5tYWlsY2FwIiwgIi90ZXN0ZGlyMi9tYWlsY2FwIl0KKyAgICAgICAgICAgICAgICBlbnZbIk1BSUxDQVBTIl0gPSBvcy5wYXRoc2VwLmpvaW4oZW52X21haWxjYXBzKQorICAgICAgICAgICAgICAgIG1jZmlsZXMgPSBtYWlsY2FwLmxpc3RtYWlsY2FwZmlsZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudl9tYWlsY2FwcywgbWNmaWxlcykKKworICAgIGRlZiB0ZXN0X3JlYWRtYWlsY2FwZmlsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlYWRtYWlsY2FwZmlsZSgpIHVzaW5nIHRlc3QgZmlsZS4gSXQgc2hvdWxkIG1hdGNoIE1BSUxDQVBESUNULgorICAgICAgICB3aXRoIG9wZW4oTUFJTENBUEZJTEUsICdyJykgYXMgbWNmOgorICAgICAgICAgICAgZCA9IG1haWxjYXAucmVhZG1haWxjYXBmaWxlKG1jZikKKyAgICAgICAgc2VsZi5hc3NlcnREaWN0RXF1YWwoZCwgTUFJTENBUERJQ1QpCisKKyAgICBkZWYgdGVzdF9sb29rdXAoc2VsZik6CisgICAgICAgICMgVGVzdCB3aXRob3V0IGtleQorICAgICAgICBleHBlY3RlZCA9IFt7J3ZpZXcnOiAnbXBlZ19wbGF5ICVzJ30sIHsndmlldyc6ICdhbmltYXRlICVzJ31dCisgICAgICAgIGFjdHVhbCA9IG1haWxjYXAubG9va3VwKE1BSUxDQVBESUNULCAndmlkZW8vbXBlZycpCisgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICAgICAgIyBUZXN0IHdpdGgga2V5CisgICAgICAgIGtleSA9ICdjb21wb3NlJworICAgICAgICBleHBlY3RlZCA9IFt7J2VkaXQnOiAnYXVkaW9jb21wb3NlICVzJywKKyAgICAgICAgICAgICAgICAgICAgICdjb21wb3NlJzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiAnIkFuIGF1ZGlvIGZyYWdtZW50IicsCisgICAgICAgICAgICAgICAgICAgICAndmlldyc6ICdzaG93YXVkaW8gJXMnfV0KKyAgICAgICAgYWN0dWFsID0gbWFpbGNhcC5sb29rdXAoTUFJTENBUERJQ1QsICdhdWRpby9iYXNpYycsIGtleSkKKyAgICAgICAgc2VsZi5hc3NlcnRMaXN0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworICAgIGRlZiB0ZXN0X3N1YnN0KHNlbGYpOgorICAgICAgICBwbGlzdCA9IFsnaWQ9MScsICdudW1iZXI9MicsICd0b3RhbD0zJ10KKyAgICAgICAgIyB0ZXN0IGNhc2U6IChbZmllbGQsIE1JTUV0eXBlLCBmaWxlbmFtZSwgcGxpc3Q9W11dLCA8ZXhwZWN0ZWQgc3RyaW5nPikKKyAgICAgICAgdGVzdF9jYXNlcyA9IFsKKyAgICAgICAgICAgIChbIiIsICJhdWRpby8qIiwgImZvby50eHQiXSwgIiIpLAorICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvbyIpLAorICAgICAgICAgICAgKFsiZWNobyAlcyIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gZm9vLnR4dCIpLAorICAgICAgICAgICAgKFsiZWNobyAldCIsICJhdWRpby8qIiwgImZvby50eHQiXSwgImVjaG8gYXVkaW8vKiIpLAorICAgICAgICAgICAgKFsiZWNobyBcJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvICV0IiksCisgICAgICAgICAgICAoWyJlY2hvIGZvbyIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIGZvbyIpLAorICAgICAgICAgICAgKFsiZWNobyAle3RvdGFsfSIsICJhdWRpby8qIiwgImZvby50eHQiLCBwbGlzdF0sICJlY2hvIDMiKQorICAgICAgICBdCisgICAgICAgIGZvciB0YyBpbiB0ZXN0X2Nhc2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYWlsY2FwLnN1YnN0KCp0Y1swXSksIHRjWzFdKQorCisKK2NsYXNzIEdldGNhcHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vY2tfZ2V0Y2FwcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IG1haWxjYXAuZ2V0Y2FwcygpIHVzaW5nIG1vY2sgbWFpbGNhcCBmaWxlIGluIHRoaXMgZGlyLgorICAgICAgICAjIFRlbXBvcmFyaWx5IG92ZXJyaWRlIGFueSBleGlzdGluZyBzeXN0ZW0gbWFpbGNhcCBmaWxlIGJ5IHBvaW50aW5nIHRoZQorICAgICAgICAjIE1BSUxDQVBTIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG91ciBtb2NrIGZpbGUuCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbIk1BSUxDQVBTIl0gPSBNQUlMQ0FQRklMRQorICAgICAgICAgICAgY2FwcyA9IG1haWxjYXAuZ2V0Y2FwcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChjYXBzLCBNQUlMQ0FQRElDVCkKKworICAgIGRlZiB0ZXN0X3N5c3RlbV9tYWlsY2FwKHNlbGYpOgorICAgICAgICAjIFRlc3QgbWFpbGNhcC5nZXRjYXBzKCkgd2l0aCBtYWlsY2FwIGZpbGUocykgb24gc3lzdGVtLCBpZiBhbnkuCisgICAgICAgIGNhcHMgPSBtYWlsY2FwLmdldGNhcHMoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2FwcywgZGljdCkKKyAgICAgICAgbWFpbGNhcGZpbGVzID0gbWFpbGNhcC5saXN0bWFpbGNhcGZpbGVzKCkKKyAgICAgICAgZXhpc3RpbmdtY2ZpbGVzID0gW21jZiBmb3IgbWNmIGluIG1haWxjYXBmaWxlcyBpZiBvcy5wYXRoLmV4aXN0cyhtY2YpXQorICAgICAgICBpZiBleGlzdGluZ21jZmlsZXM6CisgICAgICAgICAgICAjIEF0IGxlYXN0IDEgbWFpbGNhcCBmaWxlIGV4aXN0cywgc28gdGVzdCB0aGF0LgorICAgICAgICAgICAgZm9yIChrLCB2KSBpbiBjYXBzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGssIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodiwgbGlzdCkKKyAgICAgICAgICAgICAgICBmb3IgZSBpbiB2OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgZGljdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgTm8gbWFpbGNhcCBmaWxlcyBvbiBzeXN0ZW0uIGdldGNhcHMoKSBzaG91bGQgcmV0dXJuIGVtcHR5IGRpY3QuCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBjYXBzKQorCisKK2NsYXNzIEZpbmRtYXRjaFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZmluZG1hdGNoKHNlbGYpOgorCisgICAgICAgICMgZGVmYXVsdCBmaW5kbWF0Y2ggYXJndW1lbnRzCisgICAgICAgIGMgPSBNQUlMQ0FQRElDVAorICAgICAgICBmbmFtZSA9ICJmb28udHh0IgorICAgICAgICBwbGlzdCA9IFsiYWNjZXNzLXR5cGU9ZGVmYXVsdCIsICJuYW1lPWpvaG4iLCAic2l0ZT1weXRob24ub3JnIiwKKyAgICAgICAgICAgICAgICAgImRpcmVjdG9yeT0vdG1wIiwgIm1vZGU9Zm9vIiwgInNlcnZlcj1iYXIiXQorICAgICAgICBhdWRpb19iYXNpY19lbnRyeSA9IHsKKyAgICAgICAgICAgICdlZGl0JzogJ2F1ZGlvY29tcG9zZSAlcycsCisgICAgICAgICAgICAnY29tcG9zZSc6ICdhdWRpb2NvbXBvc2UgJXMnLAorICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJyJBbiBhdWRpbyBmcmFnbWVudCInLAorICAgICAgICAgICAgJ3ZpZXcnOiAnc2hvd2F1ZGlvICVzJworICAgICAgICB9CisgICAgICAgIGF1ZGlvX2VudHJ5ID0geyJ2aWV3IjogIi91c3IvbG9jYWwvYmluL3Nob3dhdWRpbyAldCJ9CisgICAgICAgIHZpZGVvX2VudHJ5ID0geyd2aWV3JzogJ2FuaW1hdGUgJXMnfQorICAgICAgICBtZXNzYWdlX2VudHJ5ID0geworICAgICAgICAgICAgJ2NvbXBvc2V0eXBlZCc6ICdleHRjb21wb3NlICVzJywKKyAgICAgICAgICAgICdkZXNjcmlwdGlvbic6ICciQSByZWZlcmVuY2UgdG8gZGF0YSBzdG9yZWQgaW4gYW4gZXh0ZXJuYWwgbG9jYXRpb24iJywgJ25lZWRzdGVybWluYWwnOiAnJywKKyAgICAgICAgICAgICd2aWV3JzogJ3Nob3dleHRlcm5hbCAlcyAle2FjY2Vzcy10eXBlfSAle25hbWV9ICV7c2l0ZX0gICAgICV7ZGlyZWN0b3J5fSAle21vZGV9ICV7c2VydmVyfScKKyAgICAgICAgfQorCisgICAgICAgICMgdGVzdCBjYXNlOiAoZmluZG1hdGNoIGFyZ3MsIGZpbmRtYXRjaCBrZXl3b3JkIGFyZ3MsIGV4cGVjdGVkIG91dHB1dCkKKyAgICAgICAgIyAgIHBvc2l0aW9uYWwgYXJnczogY2FwcywgTUlNRXR5cGUKKyAgICAgICAgIyAgIGtleXdvcmQgYXJnczoga2V5PSJ2aWV3IiwgZmlsZW5hbWU9Ii9kZXYvbnVsbCIsIHBsaXN0PVtdCisgICAgICAgICMgICBvdXRwdXQ6IChjb21tYW5kIGxpbmUsIG1haWxjYXAgZW50cnkpCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgKFt7fSwgInZpZGVvL21wZWciXSwge30sIChOb25lLCBOb25lKSksCisgICAgICAgICAgICAoW2MsICJmb28vYmFyIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAidmlkZW8vbXBlZyJdLCB7fSwgKCdtcGVnX3BsYXkgL2Rldi9udWxsJywgeyd2aWV3JzogJ21wZWdfcGxheSAlcyd9KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJlZGl0Il0sIHt9LCAoImF1ZGlvY29tcG9zZSAvZGV2L251bGwiLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiY29tcG9zZSJdLCB7fSwgKCJhdWRpb2NvbXBvc2UgL2Rldi9udWxsIiwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIiwgImRlc2NyaXB0aW9uIl0sIHt9LCAoJyJBbiBhdWRpbyBmcmFnbWVudCInLCBhdWRpb19iYXNpY19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAiYXVkaW8vYmFzaWMiLCAiZm9vYmFyIl0sIHt9LCAoTm9uZSwgTm9uZSkpLAorICAgICAgICAgICAgKFtjLCAidmlkZW8vKiJdLCB7ImZpbGVuYW1lIjogZm5hbWV9LCAoImFuaW1hdGUgJXMiICUgZm5hbWUsIHZpZGVvX2VudHJ5KSksCisgICAgICAgICAgICAoW2MsICJhdWRpby9iYXNpYyIsICJjb21wb3NlIl0sCisgICAgICAgICAgICAgeyJmaWxlbmFtZSI6IGZuYW1lfSwKKyAgICAgICAgICAgICAoImF1ZGlvY29tcG9zZSAlcyIgJSBmbmFtZSwgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvL2Jhc2ljIl0sCisgICAgICAgICAgICAgeyJrZXkiOiAiZGVzY3JpcHRpb24iLCAiZmlsZW5hbWUiOiBmbmFtZX0sCisgICAgICAgICAgICAgKCciQW4gYXVkaW8gZnJhZ21lbnQiJywgYXVkaW9fYmFzaWNfZW50cnkpKSwKKyAgICAgICAgICAgIChbYywgImF1ZGlvLyoiXSwKKyAgICAgICAgICAgICB7ImZpbGVuYW1lIjogZm5hbWV9LAorICAgICAgICAgICAgICgiL3Vzci9sb2NhbC9iaW4vc2hvd2F1ZGlvIGF1ZGlvLyoiLCBhdWRpb19lbnRyeSkpLAorICAgICAgICAgICAgKFtjLCAibWVzc2FnZS9leHRlcm5hbC1ib2R5Il0sCisgICAgICAgICAgICAgeyJwbGlzdCI6IHBsaXN0fSwKKyAgICAgICAgICAgICAoInNob3dleHRlcm5hbCAvZGV2L251bGwgZGVmYXVsdCBqb2huIHB5dGhvbi5vcmcgICAgIC90bXAgZm9vIGJhciIsIG1lc3NhZ2VfZW50cnkpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3J1bl9jYXNlcyhjYXNlcykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gInBvc2l4IiwgIlJlcXVpcmVzICd0ZXN0JyBjb21tYW5kIG9uIHN5c3RlbSIpCisgICAgZGVmIHRlc3RfdGVzdChzZWxmKToKKyAgICAgICAgIyBmaW5kbWF0Y2goKSB3aWxsIGF1dG9tYXRpY2FsbHkgY2hlY2sgYW55ICJ0ZXN0IiBjb25kaXRpb25zIGFuZCBza2lwCisgICAgICAgICMgdGhlIGVudHJ5IGlmIHRoZSBjaGVjayBmYWlscy4KKyAgICAgICAgY2FwcyA9IHsidGVzdC9wYXNzIjogW3sidGVzdCI6ICJ0ZXN0IDEgLWVxIDEifV0sCisgICAgICAgICAgICAgICAgInRlc3QvZmFpbCI6IFt7InRlc3QiOiAidGVzdCAxIC1lcSAwIn1dfQorICAgICAgICAjIHRlc3QgY2FzZTogKGZpbmRtYXRjaCBhcmdzLCBmaW5kbWF0Y2gga2V5d29yZCBhcmdzLCBleHBlY3RlZCBvdXRwdXQpCisgICAgICAgICMgICBwb3NpdGlvbmFsIGFyZ3M6IGNhcHMsIE1JTUV0eXBlLCBrZXkgKCJ0ZXN0IikKKyAgICAgICAgIyAgIGtleXdvcmQgYXJnczogTi9BCisgICAgICAgICMgICBvdXRwdXQ6IChjb21tYW5kIGxpbmUsIG1haWxjYXAgZW50cnkpCisgICAgICAgIGNhc2VzID0gWworICAgICAgICAgICAgIyBmaW5kbWF0Y2ggd2lsbCByZXR1cm4gdGhlIG1haWxjYXAgZW50cnkgZm9yIHRlc3QvcGFzcyBiZWNhdXNlIGl0IGV2YWx1YXRlcyB0byB0cnVlCisgICAgICAgICAgICAoW2NhcHMsICJ0ZXN0L3Bhc3MiLCAidGVzdCJdLCB7fSwgKCJ0ZXN0IDEgLWVxIDEiLCB7InRlc3QiOiAidGVzdCAxIC1lcSAxIn0pKSwKKyAgICAgICAgICAgICMgZmluZG1hdGNoIHdpbGwgcmV0dXJuIE5vbmUgYmVjYXVzZSB0ZXN0L2ZhaWwgZXZhbHVhdGVzIHRvIGZhbHNlCisgICAgICAgICAgICAoW2NhcHMsICJ0ZXN0L2ZhaWwiLCAidGVzdCJdLCB7fSwgKE5vbmUsIE5vbmUpKQorICAgICAgICBdCisgICAgICAgIHNlbGYuX3J1bl9jYXNlcyhjYXNlcykKKworICAgIGRlZiBfcnVuX2Nhc2VzKHNlbGYsIGNhc2VzKToKKyAgICAgICAgZm9yIGMgaW4gY2FzZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1haWxjYXAuZmluZG1hdGNoKCpjWzBdLCAqKmNbMV0pLCBjWzJdKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KEhlbHBlckZ1bmN0aW9uVGVzdCwgR2V0Y2Fwc1Rlc3QsIEZpbmRtYXRjaFRlc3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IDk2YTcwZWMuLjgzYzM0OGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHR5cGVzCiAKIGNsYXNzIEhlbHBlck1peGluOgogICAgIGRlZiBoZWxwZXIoc2VsZiwgc2FtcGxlLCAqZXh0cmEpOgpAQCAtMTE0LDYgKzExNSwyMiBAQAogICAgICAgICBjb2RlcyA9IChFeGNlcHRpb25UZXN0Q2FzZS50ZXN0X2V4Y2VwdGlvbnMuX19jb2RlX18sKSAqIGNvdW50CiAgICAgICAgIG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhjb2RlcykpCiAKKyAgICBkZWYgdGVzdF9kaWZmZXJlbnRfZmlsZW5hbWVzKHNlbGYpOgorICAgICAgICBjbzEgPSBjb21waWxlKCJ4IiwgImYxIiwgImV4ZWMiKQorICAgICAgICBjbzIgPSBjb21waWxlKCJ5IiwgImYyIiwgImV4ZWMiKQorICAgICAgICBjbzEsIGNvMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcygoY28xLCBjbzIpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbzEuY29fZmlsZW5hbWUsICJmMSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY28yLmNvX2ZpbGVuYW1lLCAiZjIiKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2FtZV9maWxlbmFtZV91c2VkKHNlbGYpOgorICAgICAgICBzID0gIiIiZGVmIGYoKTogcGFzc1xuZGVmIGcoKTogcGFzcyIiIgorICAgICAgICBjbyA9IGNvbXBpbGUocywgIm15ZmlsZSIsICJleGVjIikKKyAgICAgICAgY28gPSBtYXJzaGFsLmxvYWRzKG1hcnNoYWwuZHVtcHMoY28pKQorICAgICAgICBmb3Igb2JqIGluIGNvLmNvX2NvbnN0czoKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5Db2RlVHlwZSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjby5jb19maWxlbmFtZSwgb2JqLmNvX2ZpbGVuYW1lKQorCiBjbGFzcyBDb250YWluZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogICAgIGQgPSB7J2FzdHJpbmcnOiAnZm9vQGJhci5iYXouc3BhbScsCiAgICAgICAgICAnYWZsb2F0JzogNzI4My40MywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQppbmRleCBkZGRjODg5Li43MTUwMDNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21hdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CkBAIC0yLDExICsyLDEyIEBACiAjIFhYWFggU2hvdWxkIG5vdCBkbyB0ZXN0cyBhcm91bmQgemVybyBvbmx5CiAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIHZlcmJvc2UsIHJlcXVpcmVzX0lFRUVfNzU0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG1hdGgKIGltcG9ydCBvcworaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3lzCi1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3RydWN0CiBpbXBvcnQgc3lzY29uZmlnCiAKQEAgLTQ1NywxMiArNDU4LDEyIEBACiAKICAgICBkZWYgdGVzdEZtb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5mbW9kKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDEpJywgbWF0aC5mbW9kKDEwLDEpLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLDAuNSknLCBtYXRoLmZtb2QoMTAsMC41KSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgxMCwxLjUpJywgbWF0aC5mbW9kKDEwLDEuNSksIDEpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLDEpJywgbWF0aC5mbW9kKC0xMCwxKSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMC41KScsIG1hdGguZm1vZCgtMTAsMC41KSwgMCkKLSAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsMS41KScsIG1hdGguZm1vZCgtMTAsMS41KSwgLTEpCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDEpJywgbWF0aC5mbW9kKDEwLCAxKSwgMC4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdmbW9kKDEwLCAwLjUpJywgbWF0aC5mbW9kKDEwLCAwLjUpLCAwLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoMTAsIDEuNSknLCBtYXRoLmZtb2QoMTAsIDEuNSksIDEuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDEpJywgbWF0aC5mbW9kKC0xMCwgMSksIC0wLjApCisgICAgICAgIHNlbGYuZnRlc3QoJ2Ztb2QoLTEwLCAwLjUpJywgbWF0aC5mbW9kKC0xMCwgMC41KSwgLTAuMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnZm1vZCgtMTAsIDEuNSknLCBtYXRoLmZtb2QoLTEwLCAxLjUpLCAtMS4wKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmZtb2QoTkFOLCAxLikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmZtb2QoMS4sIE5BTikpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmZtb2QoTkFOLCBOQU4pKSkKQEAgLTY1MCw2ICs2NTEsMzMgQEAKICAgICAgICAgbj0gMioqOTAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChtYXRoLmxvZzFwKG4pLCBtYXRoLmxvZzFwKGZsb2F0KG4pKSkKIAorICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0TG9nMihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzIpCisKKyAgICAgICAgIyBDaGVjayBzb21lIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDEpLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDIpLCAxLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5sb2cyKDQpLCAyLjApCisKKyAgICAgICAgIyBMYXJnZSBpbnRlZ2VyIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKioxMDIzKSwgMTAyMy4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKioxMDI0KSwgMTAyNC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgubG9nMigyKioyMDAwKSwgMjAwMC4wKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGgubG9nMiwgLTEuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5sb2cyLCBOSU5GKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmxvZzIoTkFOKSkpCisKKyAgICBAcmVxdWlyZXNfSUVFRV83NTQKKyAgICAjIGxvZzIoKSBpcyBub3QgYWNjdXJhdGUgZW5vdWdoIG9uIE1hYyBPUyBYIFRpZ2VyICgxMC40KQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX21hY192ZXIoMTAsIDUpCisgICAgZGVmIHRlc3RMb2cyRXhhY3Qoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBnZXQgZXhhY3QgZXF1YWxpdHkgZm9yIGxvZzIgb2YgcG93ZXJzIG9mIDIuCisgICAgICAgIGFjdHVhbCA9IFttYXRoLmxvZzIobWF0aC5sZGV4cCgxLjAsIG4pKSBmb3IgbiBpbiByYW5nZSgtMTA3NCwgMTAyNCldCisgICAgICAgIGV4cGVjdGVkID0gW2Zsb2F0KG4pIGZvciBuIGluIHJhbmdlKC0xMDc0LCAxMDI0KV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCiAgICAgZGVmIHRlc3RMb2cxMChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzEwKQogICAgICAgICBzZWxmLmZ0ZXN0KCdsb2cxMCgwLjEpJywgbWF0aC5sb2cxMCgwLjEpLCAtMSkKQEAgLTEwMTAsNyArMTAzOCw2IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9tdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIEFMTE9XRURfRVJST1IgPSAyMCAgIyBwZXJtaXR0ZWQgZXJyb3IsIGluIHVscHMKICAgICAgICAgZmFpbF9mbXQgPSAie306e30oeyFyfSk6IGV4cGVjdGVkIHshcn0sIGdvdCB7IXJ9IgogCiAgICAgICAgIGZhaWx1cmVzID0gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CmluZGV4IDdjMGM4NGYuLmU1ZGI5NDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQpAQCAtNjU4LDcgKzY1OCw3IEBACiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zaXplb2Yoc2VsZik6Ci0gICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnUDJQUDJQUCcpCisgICAgICAgIGJhc2VzaXplID0gc3VwcG9ydC5jYWxjb2Jqc2l6ZSgnUDJuTjJQbicpCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmplY3QuX19zaXplb2ZfXyhpby5CeXRlc0lPKCkpLCBiYXNlc2l6ZSkKICAgICAgICAgY2hlY2soaW8uQnl0ZXNJTygpLCBiYXNlc2l6ZSApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKaW5kZXggMGJmZGRkOS4uZWU2YjE1YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQpAQCAtMSw2ICsxLDcgQEAKICIiIlVuaXQgdGVzdHMgZm9yIHRoZSBtZW1vcnl2aWV3CiAKLVhYWCBXZSBuZWVkIG1vcmUgdGVzdHMhIFNvbWUgdGVzdHMgYXJlIGluIHRlc3RfYnl0ZXMKKyAgIFNvbWUgdGVzdHMgYXJlIGluIHRlc3RfYnl0ZXMuIE1hbnkgdGVzdHMgdGhhdCByZXF1aXJlIF90ZXN0YnVmZmVyLm5kYXJyYXkKKyAgIGFyZSBpbiB0ZXN0X2J1ZmZlci4KICIiIgogCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI0LDE1ICsyNSwxNCBAQAogICAgICAgICByZXR1cm4gZmlsdGVyKE5vbmUsIFtzZWxmLnJvX3R5cGUsIHNlbGYucndfdHlwZV0pCiAKICAgICBkZWYgY2hlY2tfZ2V0aXRlbV93aXRoX3R5cGUoc2VsZiwgdHApOgotICAgICAgICBpdGVtID0gc2VsZi5nZXRpdGVtX3R5cGUKICAgICAgICAgYiA9IHRwKHNlbGYuX3NvdXJjZSkKICAgICAgICAgb2xkcmVmY291bnQgPSBzeXMuZ2V0cmVmY291bnQoYikKICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBpdGVtKGIiYSIpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobVswXSwgYnl0ZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs1XSwgaXRlbShiImYiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy0xXSwgaXRlbShiImYiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWy02XSwgaXRlbShiImEiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCBvcmQoYiJhIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtWzBdLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVs1XSwgb3JkKGIiZiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bLTFdLCBvcmQoYiJmIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVstNl0sIG9yZChiImEiKSkKICAgICAgICAgIyBCb3VuZHMgY2hlY2tpbmcKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbGFtYmRhOiBtWzZdKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IG1bLTddKQpAQCAtNzYsNyArNzYsOSBAQAogICAgICAgICBiID0gc2VsZi5yd190eXBlKHNlbGYuX3NvdXJjZSkKICAgICAgICAgb2xkcmVmY291bnQgPSBzeXMuZ2V0cmVmY291bnQoYikKICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKLSAgICAgICAgbVswXSA9IHRwKGIiMCIpCisgICAgICAgIG1bMF0gPSBvcmQoYicxJykKKyAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMWJjZGVmIikKKyAgICAgICAgbVswOjFdID0gdHAoYiIwIikKICAgICAgICAgc2VsZi5fY2hlY2tfY29udGVudHModHAsIGIsIGIiMGJjZGVmIikKICAgICAgICAgbVsxOjNdID0gdHAoYiIxMiIpCiAgICAgICAgIHNlbGYuX2NoZWNrX2NvbnRlbnRzKHRwLCBiLCBiIjAxMmRlZiIpCkBAIC0xMDIsMTAgKzEwNCwxNyBAQAogICAgICAgICAjIFdyb25nIGluZGV4L3NsaWNlIHR5cGVzCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgMC4wLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNldGl0ZW0sICgwLCksIGIiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKHNsaWNlKDAsMSwxKSwgMCksIGIiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsIHNsaWNlKDAsMSwxKSksIGIiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2V0aXRlbSwgKDAsKSwgYiJhIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZXRpdGVtLCAiYSIsIGIiYSIpCisgICAgICAgICMgTm90IGltcGxlbWVudGVkOiBtdWx0aWRpbWVuc2lvbmFsIHNsaWNlcworICAgICAgICBzbGljZXMgPSAoc2xpY2UoMCwxLDEpLCBzbGljZSgwLDEsMikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHNldGl0ZW0sIHNsaWNlcywgYiJhIikKICAgICAgICAgIyBUcnlpbmcgdG8gcmVzaXplIHRoZSBtZW1vcnkgb2JqZWN0Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNldGl0ZW0sIDAsIGIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2V0aXRlbSwgMCwgYiJhYiIpCisgICAgICAgIGV4YyA9IFZhbHVlRXJyb3IgaWYgbS5mb3JtYXQgPT0gJ2MnIGVsc2UgVHlwZUVycm9yCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGV4Yywgc2V0aXRlbSwgMCwgYiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhleGMsIHNldGl0ZW0sIDAsIGIiYWIiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCBzbGljZSgxLDEpLCBiImEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZXRpdGVtLCBzbGljZSgwLDIpLCBiImEiKQogCkBAIC0xNzUsNyArMTg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnNoYXBlLCAoNiwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtKSwgNikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnN0cmlkZXMsIChzZWxmLml0ZW1zaXplLCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5zdWJvZmZzZXRzLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3Vib2Zmc2V0cywgKCkpCiAgICAgICAgIHJldHVybiBtCiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3JlYWRvbmx5KHNlbGYpOgpAQCAtMjA5LDEyICsyMTgsMTYgQEAKICAgICAgICAgICAgICAgICAjIElmIHRwIGlzIGEgZmFjdG9yeSByYXRoZXIgdGhhbiBhIHBsYWluIHR5cGUsIHNraXAKICAgICAgICAgICAgICAgICBjb250aW51ZQogCisgICAgICAgICAgICBjbGFzcyBNeVZpZXcoKToKKyAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYmFzZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubSA9IG1lbW9yeXZpZXcoYmFzZSkKICAgICAgICAgICAgIGNsYXNzIE15U291cmNlKHRwKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBjbGFzcyBNeU9iamVjdDoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggYSBtZW1vcnl2aWV3IG9iamVjdAorICAgICAgICAgICAgIyBDcmVhdGUgYSByZWZlcmVuY2UgY3ljbGUgdGhyb3VnaCBhIG1lbW9yeXZpZXcgb2JqZWN0LgorICAgICAgICAgICAgIyBUaGlzIGV4ZXJjaXNlcyBtYnVmX2NsZWFyKCkuCiAgICAgICAgICAgICBiID0gTXlTb3VyY2UodHAoYidhYmMnKSkKICAgICAgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCiAgICAgICAgICAgICBvID0gTXlPYmplY3QoKQpAQCAtMjI2LDYgKzIzOSwxNyBAQAogICAgICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUod3IoKSBpcyBOb25lLCB3cigpKQogCisgICAgICAgICAgICAjIFRoaXMgZXhlcmNpc2VzIG1lbW9yeV9jbGVhcigpLgorICAgICAgICAgICAgbSA9IE15Vmlldyh0cChiJ2FiYycpKQorICAgICAgICAgICAgbyA9IE15T2JqZWN0KCkKKyAgICAgICAgICAgIG0ueCA9IG0KKyAgICAgICAgICAgIG0ubyA9IG8KKyAgICAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYobykKKyAgICAgICAgICAgIG0gPSBvID0gTm9uZQorICAgICAgICAgICAgIyBUaGUgY3ljbGUgbXVzdCBiZSBicm9rZW4KKyAgICAgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdyKCkgaXMgTm9uZSwgd3IoKSkKKwogICAgIGRlZiBfY2hlY2tfcmVsZWFzZWQoc2VsZiwgbSwgdHApOgogICAgICAgICBjaGVjayA9IHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgInJlbGVhc2VkIikKICAgICAgICAgd2l0aCBjaGVjazogYnl0ZXMobSkKQEAgLTI4Myw2ICszMDcsNTEgQEAKICAgICAgICAgaSA9IGlvLkJ5dGVzSU8oYidaWlpaJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpLnJlYWRpbnRvLCBtKQogCisgICAgZGVmIHRlc3RfZ2V0YnVmX2ZhaWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5fdmlldywge30pCisKKyAgICBkZWYgdGVzdF9oYXNoKHNlbGYpOgorICAgICAgICAjIE1lbW9yeXZpZXdzIG9mIHJlYWRvbmx5IChoYXNoYWJsZSkgdHlwZXMgYXJlIGhhc2hhYmxlLCBhbmQgdGhleQorICAgICAgICAjIGhhc2ggYXMgaGFzaChvYmoudG9ieXRlcygpKS4KKyAgICAgICAgdHAgPSBzZWxmLnJvX3R5cGUKKyAgICAgICAgaWYgdHAgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIHJlYWQtb25seSB0eXBlIHRvIHRlc3QiKQorICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQorICAgICAgICBtID0gc2VsZi5fdmlldyhiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goYiJhYmNkZWYiKSkKKyAgICAgICAgIyBSZWxlYXNpbmcgdGhlIG1lbW9yeXZpZXcga2VlcHMgdGhlIHN0b3JlZCBoYXNoIHZhbHVlIChhcyB3aXRoIHdlYWtyZWZzKQorICAgICAgICBtLnJlbGVhc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobSksIGhhc2goYiJhYmNkZWYiKSkKKyAgICAgICAgIyBIYXNoaW5nIGEgbWVtb3J5dmlldyBmb3IgdGhlIGZpcnN0IHRpbWUgYWZ0ZXIgaXQgaXMgcmVsZWFzZWQKKyAgICAgICAgIyByZXN1bHRzIGluIGFuIGVycm9yIChhcyB3aXRoIHdlYWtyZWZzKS4KKyAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgbS5yZWxlYXNlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaGFzaCwgbSkKKworICAgIGRlZiB0ZXN0X2hhc2hfd3JpdGFibGUoc2VsZik6CisgICAgICAgICMgTWVtb3J5dmlld3Mgb2Ygd3JpdGFibGUgdHlwZXMgYXJlIHVuaGFzaGFibGUKKyAgICAgICAgdHAgPSBzZWxmLnJ3X3R5cGUKKyAgICAgICAgaWYgdHAgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vIHdyaXRhYmxlIHR5cGUgdG8gdGVzdCIpCisgICAgICAgIGIgPSB0cChzZWxmLl9zb3VyY2UpCisgICAgICAgIG0gPSBzZWxmLl92aWV3KGIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGhhc2gsIG0pCisKKyAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgorICAgICAgICAjIENoZWNrIG1lbW9yeXZpZXdzIGFyZSB3ZWFrcmVmYWJsZQorICAgICAgICBmb3IgdHAgaW4gc2VsZi5fdHlwZXM6CisgICAgICAgICAgICBiID0gdHAoc2VsZi5fc291cmNlKQorICAgICAgICAgICAgbSA9IHNlbGYuX3ZpZXcoYikKKyAgICAgICAgICAgIEwgPSBbXQorICAgICAgICAgICAgZGVmIGNhbGxiYWNrKHdyLCBiPWIpOgorICAgICAgICAgICAgICAgIEwuYXBwZW5kKGIpCisgICAgICAgICAgICB3ciA9IHdlYWtyZWYucmVmKG0sIGNhbGxiYWNrKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh3cigpLCBtKQorICAgICAgICAgICAgZGVsIG0KKyAgICAgICAgICAgIHRlc3Quc3VwcG9ydC5nY19jb2xsZWN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod3IoKSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoTFswXSwgYikKKwogIyBWYXJpYXRpb25zIG9uIHNvdXJjZSBvYmplY3RzIGZvciB0aGUgYnVmZmVyOiBieXRlcy1saWtlIG9iamVjdHMsIHRoZW4gYXJyYXlzCiAjIHdpdGggaXRlbXNpemUgPiAxLgogIyBOT1RFOiBzdXBwb3J0IGZvciBtdWx0aS1kaW1lbnNpb25hbCBvYmplY3RzIGlzIHVuaW1wbGVtZW50ZWQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21ldGFjbGFzcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5CmluZGV4IDIxOWFiOTkuLmU2ZmUyMGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWV0YWNsYXNzLnB5CkBAIC0xNTksNiArMTU5LDcgQEAKICAgICAuLi4gICAgIGJhciA9IDEyMwogICAgIC4uLgogICAgIGRbJ19fbW9kdWxlX18nXSA9ICd0ZXN0LnRlc3RfbWV0YWNsYXNzJworICAgIGRbJ19fcXVhbG5hbWVfXyddID0gJ0MnCiAgICAgZFsnZm9vJ10gPSA0CiAgICAgZFsnZm9vJ10gPSA0MgogICAgIGRbJ2JhciddID0gMTIzCkBAIC0xNzcsMTIgKzE3OCwxMiBAQAogICAgIC4uLiAgICAgYiA9IDI0CiAgICAgLi4uCiAgICAgbWV0YTogQyAoKQotICAgIG5zOiBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdhJywgNDIpLCAoJ2InLCAyNCldCisgICAgbnM6IFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ19fcXVhbG5hbWVfXycsICdDJyksICgnYScsIDQyKSwgKCdiJywgMjQpXQogICAgIGt3OiBbXQogICAgID4+PiB0eXBlKEMpIGlzIGRpY3QKICAgICBUcnVlCiAgICAgPj4+IHByaW50KHNvcnRlZChDLml0ZW1zKCkpKQotICAgIFsoJ19fbW9kdWxlX18nLCAndGVzdC50ZXN0X21ldGFjbGFzcycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KKyAgICBbKCdfX21vZHVsZV9fJywgJ3Rlc3QudGVzdF9tZXRhY2xhc3MnKSwgKCdfX3F1YWxuYW1lX18nLCAnQycpLCAoJ2EnLCA0MiksICgnYicsIDI0KV0KICAgICA+Pj4KIAogQW5kIGFnYWluLCB3aXRoIGEgX19wcmVwYXJlX18gYXR0cmlidXRlLgpAQCAtMTk5LDExICsyMDAsMTIgQEAKICAgICAuLi4KICAgICBwcmVwYXJlOiBDICgpIFsoJ290aGVyJywgJ2Jvb2gnKV0KICAgICBkWydfX21vZHVsZV9fJ10gPSAndGVzdC50ZXN0X21ldGFjbGFzcycKKyAgICBkWydfX3F1YWxuYW1lX18nXSA9ICdDJwogICAgIGRbJ2EnXSA9IDEKICAgICBkWydhJ10gPSAyCiAgICAgZFsnYiddID0gMwogICAgIG1ldGE6IEMgKCkKLSAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnYScsIDIpLCAoJ2InLCAzKV0KKyAgICBuczogWygnX19tb2R1bGVfXycsICd0ZXN0LnRlc3RfbWV0YWNsYXNzJyksICgnX19xdWFsbmFtZV9fJywgJ0MnKSwgKCdhJywgMiksICgnYicsIDMpXQogICAgIGt3OiBbKCdvdGhlcicsICdib29oJyldCiAgICAgPj4+CiAKQEAgLTI0Niw3ICsyNDgsMTMgQEAKIAogIiIiCiAKLV9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KK2ltcG9ydCBzeXMKKworIyBUcmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxzX18gd2hpY2ggY2F1c2VzIHZhcmlvdXMgdGVzdHMgdG8gZmFpbC4KK2lmIGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCk6CisgICAgX190ZXN0X18gPSB7fQorZWxzZToKKyAgICBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CiAKIGRlZiB0ZXN0X21haW4odmVyYm9zZT1GYWxzZSk6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkgYi9MaWIvdGVzdC90ZXN0X21pbmlkb20ucHkKaW5kZXggNGE2OWIwMC4uMDQyN2JhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9taW5pZG9tLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWluaWRvbS5weQpAQCAtNCw5ICs0LDcgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHhtbC5kb20KIGltcG9ydCB4bWwuZG9tLm1pbmlkb20KLWltcG9ydCB4bWwucGFyc2Vycy5leHBhdAogCiBmcm9tIHhtbC5kb20ubWluaWRvbSBpbXBvcnQgcGFyc2UsIE5vZGUsIERvY3VtZW50LCBwYXJzZVN0cmluZwogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IGdldERPTUltcGxlbWVudGF0aW9uCkBAIC0xNCw3ICsxMiw2IEBACiAKIHRzdGZpbGUgPSBmaW5kZmlsZSgidGVzdC54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIAotCiAjIFRoZSB0ZXN0cyBvZiBEb2N1bWVudFR5cGUgaW1wb3J0aW5nIHVzZSB0aGVzZSBoZWxwZXJzIHRvIGNvbnN0cnVjdAogIyB0aGUgZG9jdW1lbnRzIHRvIHdvcmsgd2l0aCwgc2luY2Ugbm90IGFsbCBET00gYnVpbGRlcnMgYWN0dWFsbHkKICMgY3JlYXRlIHRoZSBEb2N1bWVudFR5cGUgbm9kZXMuCkBAIC01MCw3ICs0Nyw3IEBACiAKICAgICBkZWYgY2hlY2tXaG9sZVRleHQoc2VsZiwgbm9kZSwgcyk6CiAgICAgICAgIHQgPSBub2RlLndob2xlVGV4dAotICAgICAgICBzZWxmLmNvbmZpcm0odCA9PSBzLCAibG9va2luZyBmb3IgJXMsIGZvdW5kICVzIiAlIChyZXByKHMpLCByZXByKHQpKSkKKyAgICAgICAgc2VsZi5jb25maXJtKHQgPT0gcywgImxvb2tpbmcgZm9yICVyLCBmb3VuZCAlciIgJSAocywgdCkpCiAKICAgICBkZWYgdGVzdFBhcnNlRnJvbUZpbGUoc2VsZik6CiAgICAgICAgIHdpdGggb3Blbih0c3RmaWxlKSBhcyBmaWxlOgpAQCAtMjgyLDYgKzI3OSw3IEBACiAKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCJkZWYiLCAiZ2hpIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh4bWwuZG9tLk5vdEZvdW5kRXJyLCBjaGlsZC5yZW1vdmVBdHRyaWJ1dGUsICJmb28iKQogICAgICAgICBjaGlsZC5yZW1vdmVBdHRyaWJ1dGUoImRlZiIpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMCkKICAgICAgICAgZG9tLnVubGluaygpCkBAIC0yOTMsNiArMjkxLDggQEAKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cudzMub3JnIiwgInhtbG5zOnB5dGhvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5weXRob24ub3JnIikKICAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlTlMoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIsICJweXRob246YWJjYXR0ciIsICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh4bWwuZG9tLk5vdEZvdW5kRXJyLCBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOUywKKyAgICAgICAgICAgICJmb28iLCAiaHR0cDovL3d3dy5weXRob24ub3JnIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAyKQogICAgICAgICBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy5weXRob24ub3JnIiwgImFiY2F0dHIiKQogICAgICAgICBzZWxmLmNvbmZpcm0obGVuKGNoaWxkLmF0dHJpYnV0ZXMpID09IDEpCkBAIC0zMDQsMTEgKzMwNCwyMyBAQAogICAgICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoInNwYW0iLCAiamFtIikKICAgICAgICAgc2VsZi5jb25maXJtKGxlbihjaGlsZC5hdHRyaWJ1dGVzKSA9PSAxKQogICAgICAgICBub2RlID0gY2hpbGQuZ2V0QXR0cmlidXRlTm9kZSgic3BhbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUsCisgICAgICAgICAgICBOb25lKQogICAgICAgICBjaGlsZC5yZW1vdmVBdHRyaWJ1dGVOb2RlKG5vZGUpCiAgICAgICAgIHNlbGYuY29uZmlybShsZW4oY2hpbGQuYXR0cmlidXRlcykgPT0gMAogICAgICAgICAgICAgICAgIGFuZCBjaGlsZC5nZXRBdHRyaWJ1dGVOb2RlKCJzcGFtIikgaXMgTm9uZSkKKyAgICAgICAgZG9tMiA9IERvY3VtZW50KCkKKyAgICAgICAgY2hpbGQyID0gZG9tMi5hcHBlbmRDaGlsZChkb20uY3JlYXRlRWxlbWVudCgiZm9vIikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHhtbC5kb20uTm90Rm91bmRFcnIsIGNoaWxkLnJlbW92ZUF0dHJpYnV0ZU5vZGUsCisgICAgICAgICAgICBub2RlKQogICAgICAgICBkb20udW5saW5rKCkKIAorICAgIGRlZiB0ZXN0SGFzQXR0cmlidXRlKHNlbGYpOgorICAgICAgICBkb20gPSBEb2N1bWVudCgpCisgICAgICAgIGNoaWxkID0gZG9tLmFwcGVuZENoaWxkKGRvbS5jcmVhdGVFbGVtZW50KCJmb28iKSkKKyAgICAgICAgY2hpbGQuc2V0QXR0cmlidXRlKCJzcGFtIiwgImphbSIpCisgICAgICAgIHNlbGYuY29uZmlybShjaGlsZC5oYXNBdHRyaWJ1dGUoInNwYW0iKSkKKwogICAgIGRlZiB0ZXN0Q2hhbmdlQXR0cihzZWxmKToKICAgICAgICAgZG9tID0gcGFyc2VTdHJpbmcoIjxhYmMvPiIpCiAgICAgICAgIGVsID0gZG9tLmRvY3VtZW50RWxlbWVudApAQCAtNTkyLDcgKzYwNCwxMyBAQAogCiAgICAgZGVmIHRlc3RGaXJzdENoaWxkKHNlbGYpOiBwYXNzCiAKLSAgICBkZWYgdGVzdEhhc0NoaWxkTm9kZXMoc2VsZik6IHBhc3MKKyAgICBkZWYgdGVzdEhhc0NoaWxkTm9kZXMoc2VsZik6CisgICAgICAgIGRvbSA9IHBhcnNlU3RyaW5nKCI8ZG9jPjxmb28vPjwvZG9jPiIpCisgICAgICAgIGRvYyA9IGRvbS5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRvbS5oYXNDaGlsZE5vZGVzKCkpCisgICAgICAgIGRvbTIgPSBwYXJzZVN0cmluZygiPGRvYy8+IikKKyAgICAgICAgZG9jMiA9IGRvbTIuZG9jdW1lbnRFbGVtZW50CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZG9jMi5oYXNDaGlsZE5vZGVzKCkpCiAKICAgICBkZWYgX3Rlc3RDbG9uZUVsZW1lbnRDb3BpZXNBdHRyaWJ1dGVzKHNlbGYsIGUxLCBlMiwgdGVzdCk6CiAgICAgICAgIGF0dHJzMSA9IGUxLmF0dHJpYnV0ZXMKQEAgLTEwNDEsNDEgKzEwNTksNiBAQAogICAgICAgICAgICAgICAgICJ0ZXN0IE5vZGVMaXN0Lml0ZW0oKSIpCiAgICAgICAgIGRvYy51bmxpbmsoKQogCi0gICAgZGVmIHRlc3RTQVgyRE9NKHNlbGYpOgotICAgICAgICBmcm9tIHhtbC5kb20gaW1wb3J0IHB1bGxkb20KLQotICAgICAgICBzYXgyZG9tID0gcHVsbGRvbS5TQVgyRE9NKCkKLSAgICAgICAgc2F4MmRvbS5zdGFydERvY3VtZW50KCkKLSAgICAgICAgc2F4MmRvbS5zdGFydEVsZW1lbnQoImRvYyIsIHt9KQotICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQotICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgic3ViZWxtIiwge30pCi0gICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCi0gICAgICAgIHNheDJkb20uZW5kRWxlbWVudCgic3ViZWxtIikKLSAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKLSAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJkb2MiKQotICAgICAgICBzYXgyZG9tLmVuZERvY3VtZW50KCkKLQotICAgICAgICBkb2MgPSBzYXgyZG9tLmRvY3VtZW50Ci0gICAgICAgIHJvb3QgPSBkb2MuZG9jdW1lbnRFbGVtZW50Ci0gICAgICAgICh0ZXh0MSwgZWxtMSwgdGV4dDIpID0gcm9vdC5jaGlsZE5vZGVzCi0gICAgICAgIHRleHQzID0gZWxtMS5jaGlsZE5vZGVzWzBdCi0KLSAgICAgICAgc2VsZi5jb25maXJtKHRleHQxLnByZXZpb3VzU2libGluZyBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIHRleHQxLm5leHRTaWJsaW5nIGlzIGVsbTEgYW5kCi0gICAgICAgICAgICAgICAgZWxtMS5wcmV2aW91c1NpYmxpbmcgaXMgdGV4dDEgYW5kCi0gICAgICAgICAgICAgICAgZWxtMS5uZXh0U2libGluZyBpcyB0ZXh0MiBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5wcmV2aW91c1NpYmxpbmcgaXMgZWxtMSBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0Mi5uZXh0U2libGluZyBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIHRleHQzLnByZXZpb3VzU2libGluZyBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAgIHRleHQzLm5leHRTaWJsaW5nIGlzIE5vbmUsICJ0ZXN0U0FYMkRPTSAtIHNpYmxpbmdzIikKLQotICAgICAgICBzZWxmLmNvbmZpcm0ocm9vdC5wYXJlbnROb2RlIGlzIGRvYyBhbmQKLSAgICAgICAgICAgICAgICB0ZXh0MS5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgZWxtMS5wYXJlbnROb2RlIGlzIHJvb3QgYW5kCi0gICAgICAgICAgICAgICAgdGV4dDIucGFyZW50Tm9kZSBpcyByb290IGFuZAotICAgICAgICAgICAgICAgIHRleHQzLnBhcmVudE5vZGUgaXMgZWxtMSwgInRlc3RTQVgyRE9NIC0gcGFyZW50cyIpCi0gICAgICAgIGRvYy51bmxpbmsoKQotCiAgICAgZGVmIHRlc3RFbmNvZGluZ3Moc2VsZik6CiAgICAgICAgIGRvYyA9IHBhcnNlU3RyaW5nKCc8Zm9vPiYjeDIwYWM7PC9mb28+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoKSwKQEAgLTEwODQsNiArMTA2NywxMSBAQAogICAgICAgICAgICAgYic8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Pjxmb28+XHhlMlx4ODJceGFjPC9mb28+JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoJ2lzby04ODU5LTE1JyksCiAgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTE1Ij8+PGZvbz5ceGE0PC9mb28+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoJ3VzLWFzY2lpJyksCisgICAgICAgICAgICBiJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InVzLWFzY2lpIj8+PGZvbz4mIzgzNjQ7PC9mb28+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkb2MudG94bWwoJ3V0Zi0xNicpLAorICAgICAgICAgICAgJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi0xNiI/PicKKyAgICAgICAgICAgICc8Zm9vPlx1MjBhYzwvZm9vPicuZW5jb2RlKCd1dGYtMTYnKSkKIAogICAgICAgICAjIFZlcmlmeSB0aGF0IGNoYXJhY3RlciBkZWNvZGluZyBlcnJvcnMgdGhyb3cgZXhjZXB0aW9ucyBpbnN0ZWFkCiAgICAgICAgICMgb2YgY3Jhc2hpbmcKQEAgLTE1MjIsMTIgKzE1MTAsMjEgQEAKICAgICAgICAgZG9jLmFwcGVuZENoaWxkKGRvYy5jcmVhdGVDb21tZW50KCJmb28tLWJhciIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkb2MudG94bWwpCiAKKwogICAgIGRlZiB0ZXN0RW1wdHlYTUxOU1ZhbHVlKHNlbGYpOgogICAgICAgICBkb2MgPSBwYXJzZVN0cmluZygiPGVsZW1lbnQgeG1sbnM9Jyc+XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Zm9vLz5cbjwvZWxlbWVudD4iKQogICAgICAgICBkb2MyID0gcGFyc2VTdHJpbmcoZG9jLnRveG1sKCkpCiAgICAgICAgIHNlbGYuY29uZmlybShkb2MyLm5hbWVzcGFjZVVSSSA9PSB4bWwuZG9tLkVNUFRZX05BTUVTUEFDRSkKIAorICAgIGRlZiB0ZXN0RG9jUmVtb3ZlQ2hpbGQoc2VsZik6CisgICAgICAgIGRvYyA9IHBhcnNlKHRzdGZpbGUpCisgICAgICAgIHRpdGxlX3RhZyA9IGRvYy5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIlRJVExFIilbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoIHhtbC5kb20uTm90Rm91bmRFcnIsIGRvYy5yZW1vdmVDaGlsZCwgdGl0bGVfdGFnKQorICAgICAgICBudW1fY2hpbGRyZW5fYmVmb3JlID0gbGVuKGRvYy5jaGlsZE5vZGVzKQorICAgICAgICBkb2MucmVtb3ZlQ2hpbGQoZG9jLmNoaWxkTm9kZXNbMF0pCisgICAgICAgIG51bV9jaGlsZHJlbl9hZnRlciA9IGxlbihkb2MuY2hpbGROb2RlcykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG51bV9jaGlsZHJlbl9hZnRlciA9PSBudW1fY2hpbGRyZW5fYmVmb3JlIC0gMSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChNaW5pZG9tVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weSBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQppbmRleCAyOGI1MmE5Li5hM2RlMzk4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21tYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CkBAIC00MTcsNiArNDE3LDM1IEBACiAgICAgICAgICAgICBtW3hdID0gYgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtW3hdLCBiKQogCisgICAgZGVmIHRlc3RfcmVhZF9hbGwoc2VsZik6CisgICAgICAgIG0gPSBtbWFwLm1tYXAoLTEsIDE2KQorICAgICAgICBzZWxmLmFkZENsZWFudXAobS5jbG9zZSkKKworICAgICAgICAjIFdpdGggbm8gcGFyYW1ldGVycywgb3IgTm9uZSBvciBhIG5lZ2F0aXZlIGFyZ3VtZW50LCByZWFkcyBhbGwKKyAgICAgICAgbS53cml0ZShieXRlcyhyYW5nZSgxNikpKQorICAgICAgICBtLnNlZWsoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYnl0ZXMocmFuZ2UoMTYpKSkKKyAgICAgICAgbS5zZWVrKDgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5yZWFkKCksIGJ5dGVzKHJhbmdlKDgsIDE2KSkpCisgICAgICAgIG0uc2VlaygxNikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoKSwgYicnKQorICAgICAgICBtLnNlZWsoMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLnJlYWQoTm9uZSksIGJ5dGVzKHJhbmdlKDMsIDE2KSkpCisgICAgICAgIG0uc2Vlayg0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgtMSksIGJ5dGVzKHJhbmdlKDQsIDE2KSkpCisgICAgICAgIG0uc2Vlayg1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgtMiksIGJ5dGVzKHJhbmdlKDUsIDE2KSkpCisgICAgICAgIG0uc2Vlayg5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ucmVhZCgtNDIpLCBieXRlcyhyYW5nZSg5LCAxNikpKQorCisgICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlkX2FyZyhzZWxmKToKKyAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChtLmNsb3NlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbS5yZWFkLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsIDUuNSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtLnJlYWQsIFsxLCAyLCAzXSkKKwogICAgIGRlZiB0ZXN0X2V4dGVuZGVkX2dldHNsaWNlKHNlbGYpOgogICAgICAgICAjIFRlc3QgZXh0ZW5kZWQgc2xpY2luZyBieSBjb21wYXJpbmcgd2l0aCBsaXN0IHNsaWNpbmcuCiAgICAgICAgIHMgPSBieXRlcyhyZXZlcnNlZChyYW5nZSgyNTYpKSkKQEAgLTU0Myw4ICs1NzIsNyBAQAogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhtbWFwLmVycm9yLCBFbnZpcm9ubWVudEVycm9yKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigibW1hcC5lcnJvciIsIHN0cihtbWFwLmVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtbWFwLmVycm9yLCBPU0Vycm9yKQogCiAgICAgZGVmIHRlc3RfaW9fbWV0aG9kcyhzZWxmKToKICAgICAgICAgZGF0YSA9IGIiMDEyMzQ1Njc4OSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKaW5kZXggMTU4MzZjYS4uZTVhMjUyNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tb2R1bGUucHkKQEAgLTUsNiArNSwxNSBAQAogaW1wb3J0IHN5cwogTW9kdWxlVHlwZSA9IHR5cGUoc3lzKQogCitjbGFzcyBGdWxsTG9hZGVyOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBtb2R1bGVfcmVwcihjbHMsIG0pOgorICAgICAgICByZXR1cm4gIjxtb2R1bGUgJ3t9JyAoY3JhZnRlZCk+Ii5mb3JtYXQobS5fX25hbWVfXykKKworY2xhc3MgQmFyZUxvYWRlcjoKKyAgICBwYXNzCisKKwogY2xhc3MgTW9kdWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3VuaW5pdGlhbGl6ZWQoc2VsZik6CiAgICAgICAgICMgQW4gdW5pbml0aWFsaXplZCBtb2R1bGUgaGFzIG5vIF9fZGljdF9fIG9yIF9fbmFtZV9fLApAQCAtNzAsMTYgKzc5LDEwMCBAQAogICAgICAgICBtID0gTW9kdWxlVHlwZSgiZm9vIikKICAgICAgICAgbS5kZXN0cm95ZWQgPSBkZXN0cm95ZWQKICAgICAgICAgcyA9ICIiImNsYXNzIEE6Ci0gICAgZGVmIF9fZGVsX18oc2VsZiwgZGVzdHJveWVkPWRlc3Ryb3llZCk6Ci0gICAgICAgIGRlc3Ryb3llZC5hcHBlbmQoMSkKLWEgPSBBKCkiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbCk6CisgICAgICAgIHNlbGYubCA9IGwKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5sLmFwcGVuZCgxKQorYSA9IEEoZGVzdHJveWVkKSIiIgogICAgICAgICBleGVjKHMsIG0uX19kaWN0X18pCiAgICAgICAgIGRlbCBtCiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlc3Ryb3llZCwgWzFdKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfbWluaW1hbChzZWxmKToKKyAgICAgICAgIyByZXBycyB3aGVuIG1vZHVsZXMgaGF2ZSBubyBfX2ZpbGVfXywgX19uYW1lX18sIG9yIF9fbG9hZGVyX18KKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJz8nPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX25hbWUoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX25hbWVfYW5kX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgbS5fX2ZpbGVfXyA9ICcvdG1wL2Zvby5weScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCAiPG1vZHVsZSAnZm9vJyBmcm9tICcvdG1wL2Zvby5weSc+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZmlsZW5hbWVfb25seShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgIG0uX19maWxlX18gPSAnL3RtcC9mb28ucHknCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtKSwgIjxtb2R1bGUgJz8nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9iYXJlX2xvYWRlcl9idXRfbm9fbmFtZShzZWxmKToKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgIGRlbCBtLl9fbmFtZV9fCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gQmFyZUxvYWRlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcmVwcihtKSwgIjxtb2R1bGUgJz8nICg8Y2xhc3MgJ3Rlc3QudGVzdF9tb2R1bGUuQmFyZUxvYWRlcic+KT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcl9idXRfbm9fbmFtZShzZWxmKToKKyAgICAgICAgIyBtLl9fbG9hZGVyX18ubW9kdWxlX3JlcHIoKSB3aWxsIGZhaWwgYmVjYXVzZSB0aGUgbW9kdWxlIGhhcyBubworICAgICAgICAjIG0uX19uYW1lX18uICBUaGlzIGV4Y2VwdGlvbiB3aWxsIGdldCBzdXBwcmVzc2VkIGFuZCBpbnN0ZWFkIHRoZQorICAgICAgICAjIGxvYWRlcidzIHJlcHIgd2lsbCBiZSB1c2VkLgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgZGVsIG0uX19uYW1lX18KKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBGdWxsTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnPycgKDxjbGFzcyAndGVzdC50ZXN0X21vZHVsZS5GdWxsTG9hZGVyJz4pPiIpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfcmVwcl93aXRoX2JhcmVfbG9hZGVyKHNlbGYpOgorICAgICAgICBtID0gTW9kdWxlVHlwZSgnZm9vJykKKyAgICAgICAgIyBZZXMsIGEgY2xhc3Mgbm90IGFuIGluc3RhbmNlLgorICAgICAgICBtLl9fbG9hZGVyX18gPSBCYXJlTG9hZGVyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKG0pLCAiPG1vZHVsZSAnZm9vJyAoPGNsYXNzICd0ZXN0LnRlc3RfbW9kdWxlLkJhcmVMb2FkZXInPik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3dpdGhfZnVsbF9sb2FkZXIoc2VsZik6CisgICAgICAgIG0gPSBNb2R1bGVUeXBlKCdmb28nKQorICAgICAgICAjIFllcywgYSBjbGFzcyBub3QgYW4gaW5zdGFuY2UuCisgICAgICAgIG0uX19sb2FkZXJfXyA9IEZ1bGxMb2FkZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJlcHIobSksICI8bW9kdWxlICdmb28nIChjcmFmdGVkKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9iYXJlX2xvYWRlcl9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgICMgQmVjYXVzZSB0aGUgbG9hZGVyIGhhcyBubyBtb2R1bGVfcmVwcigpLCB1c2UgdGhlIGZpbGUgbmFtZS4KKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gQmFyZUxvYWRlcgorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIGZyb20gJy90bXAvZm9vLnB5Jz4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfd2l0aF9mdWxsX2xvYWRlcl9hbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgICMgRXZlbiB0aG91Z2ggdGhlIG1vZHVsZSBoYXMgYW4gX19maWxlX18sIHVzZSBfX2xvYWRlcl9fLm1vZHVsZV9yZXByKCkKKyAgICAgICAgbSA9IE1vZHVsZVR5cGUoJ2ZvbycpCisgICAgICAgICMgWWVzLCBhIGNsYXNzIG5vdCBhbiBpbnN0YW5jZS4KKyAgICAgICAgbS5fX2xvYWRlcl9fID0gRnVsbExvYWRlcgorICAgICAgICBtLl9fZmlsZV9fID0gJy90bXAvZm9vLnB5JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8bW9kdWxlICdmb28nIChjcmFmdGVkKT4iKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlcHJfYnVpbHRpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByX3NvdXJjZShzZWxmKToKKyAgICAgICAgciA9IHJlcHIodW5pdHRlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocls6MjVdLCAiPG1vZHVsZSAndW5pdHRlc3QnIGZyb20gJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoclstMTM6XSwgIl9faW5pdF9fLnB5Jz4iKQorCisgICAgIyBmcm96ZW4gYW5kIG5hbWVzcGFjZSBtb2R1bGUgcmVwcnMgYXJlIHRlc3RlZCBpbiBpbXBvcnRsaWIuCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChNb2R1bGVUZXN0cykKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21vZHVsZWZpbmRlci5weSBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5CmluZGV4IGExODQyMTcuLmM1ZmMzMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW9kdWxlZmluZGVyLnB5CkBAIC0xLDcgKzEsNyBAQAotaW1wb3J0IF9fZnV0dXJlX18KIGltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBkaXN0dXRpbHMuZGlyX3V0aWwKIGltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTksNyArOSw3IEBACiBpbXBvcnQgbW9kdWxlZmluZGVyCiAKIFRFU1RfRElSID0gdGVtcGZpbGUubWtkdGVtcCgpCi1URVNUX1BBVEggPSBbVEVTVF9ESVIsIG9zLnBhdGguZGlybmFtZShfX2Z1dHVyZV9fLl9fZmlsZV9fKV0KK1RFU1RfUEFUSCA9IFtURVNUX0RJUiwgb3MucGF0aC5kaXJuYW1lKHRlbXBmaWxlLl9fZmlsZV9fKV0KIAogIyBFYWNoIHRlc3QgZGVzY3JpcHRpb24gaXMgYSBsaXN0IG9mIDUgaXRlbXM6CiAjCkBAIC0xOTYsMTIgKzE5NiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIC4gaW1wb3J0IGJhcgogIiIiXQogCisKIGRlZiBvcGVuX2ZpbGUocGF0aCk6Ci0gICAgIyNwcmludCAiIyIsIG9zLnBhdGguYWJzcGF0aChwYXRoKQogICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUocGF0aCkKLSAgICBkaXN0dXRpbHMuZGlyX3V0aWwubWtwYXRoKGRpcm5hbWUpCisgICAgdHJ5OgorICAgICAgICBvcy5tYWtlZGlycyhkaXJuYW1lKQorICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUVYSVNUOgorICAgICAgICAgICAgcmFpc2UKICAgICByZXR1cm4gb3BlbihwYXRoLCAidyIpCiAKKwogZGVmIGNyZWF0ZV9wYWNrYWdlKHNvdXJjZSk6CiAgICAgb2ZpID0gTm9uZQogICAgIHRyeToKQEAgLTIxNiw2ICsyMjEsNyBAQAogICAgICAgICBpZiBvZmk6CiAgICAgICAgICAgICBvZmkuY2xvc2UoKQogCisKIGNsYXNzIE1vZHVsZUZpbmRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBfZG9fdGVzdChzZWxmLCBpbmZvLCByZXBvcnQ9RmFsc2UpOgogICAgICAgICBpbXBvcnRfdGhpcywgbW9kdWxlcywgbWlzc2luZywgbWF5YmVfbWlzc2luZywgc291cmNlID0gaW5mbwpAQCAtMjM0LDE5ICsyNDAsMTcgQEAKICMjICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrOyB0cmFjZWJhY2sucHJpbnRfZXhjKCkKICMjICAgICAgICAgICAgICAgIHN5cy5wYXRoID0gb3BhdGgKICMjICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgbW9kdWxlcyA9IHNldChtb2R1bGVzKQotICAgICAgICAgICAgZm91bmQgPSBzZXQobWYubW9kdWxlcy5rZXlzKCkpCi0gICAgICAgICAgICBtb3JlID0gbGlzdChmb3VuZCAtIG1vZHVsZXMpCi0gICAgICAgICAgICBsZXNzID0gbGlzdChtb2R1bGVzIC0gZm91bmQpCisgICAgICAgICAgICBtb2R1bGVzID0gc29ydGVkKHNldChtb2R1bGVzKSkKKyAgICAgICAgICAgIGZvdW5kID0gc29ydGVkKG1mLm1vZHVsZXMpCiAgICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGZvdW5kIHdoYXQgd2UgZXhwZWN0ZWQsIG5vdCBtb3JlLCBub3QgbGVzcwotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgobW9yZSwgbGVzcyksIChbXSwgW10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgbW9kdWxlcykKIAogICAgICAgICAgICAgIyBjaGVjayBmb3IgbWlzc2luZyBhbmQgbWF5YmUgbWlzc2luZyBtb2R1bGVzCiAgICAgICAgICAgICBiYWQsIG1heWJlID0gbWYuYW55X21pc3NpbmdfbWF5YmUoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYWQsIG1pc3NpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1heWJlLCBtYXliZV9taXNzaW5nKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZGlzdHV0aWxzLmRpcl91dGlsLnJlbW92ZV90cmVlKFRFU1RfRElSKQorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNUX0RJUikKIAogICAgIGRlZiB0ZXN0X3BhY2thZ2Uoc2VsZik6CiAgICAgICAgIHNlbGYuX2RvX3Rlc3QocGFja2FnZV90ZXN0KQpAQCAtMjU0LDI1ICsyNTgsMjMgQEAKICAgICBkZWYgdGVzdF9tYXliZShzZWxmKToKICAgICAgICAgc2VsZi5fZG9fdGVzdChtYXliZV90ZXN0KQogCi0gICAgaWYgZ2V0YXR0cihfX2Z1dHVyZV9fLCAiYWJzb2x1dGVfaW1wb3J0IiwgTm9uZSk6CisgICAgZGVmIHRlc3RfbWF5YmVfbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KG1heWJlX3Rlc3RfbmV3KQogCi0gICAgICAgIGRlZiB0ZXN0X21heWJlX25ldyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QobWF5YmVfdGVzdF9uZXcpCisgICAgZGVmIHRlc3RfYWJzb2x1dGVfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChhYnNvbHV0ZV9pbXBvcnRfdGVzdCkKIAotICAgICAgICBkZWYgdGVzdF9hYnNvbHV0ZV9pbXBvcnRzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5fZG9fdGVzdChhYnNvbHV0ZV9pbXBvcnRfdGVzdCkKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0KQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0KQorICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMihzZWxmKToKKyAgICAgICAgc2VsZi5fZG9fdGVzdChyZWxhdGl2ZV9pbXBvcnRfdGVzdF8yKQogCi0gICAgICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydHNfMihzZWxmKToKLSAgICAgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMikKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzMoc2VsZik6CisgICAgICAgIHNlbGYuX2RvX3Rlc3QocmVsYXRpdmVfaW1wb3J0X3Rlc3RfMykKIAotICAgICAgICBkZWYgdGVzdF9yZWxhdGl2ZV9pbXBvcnRzXzMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLl9kb190ZXN0KHJlbGF0aXZlX2ltcG9ydF90ZXN0XzMpCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBkaXN0dXRpbHMubG9nLnNldF90aHJlc2hvbGQoZGlzdHV0aWxzLmxvZy5XQVJOKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1vZHVsZUZpbmRlclRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQppbmRleCA4NmM2OGRjLi5mZWI3YmQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKQEAgLTI0NywyMCArMjQ3LDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGFueSh4ID4gMHg4MCBmb3IgeCBpbiBlKSkKIAogICAgIGRlZiB0ZXN0X2J1ZzE1NzI4MzIoc2VsZik6Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID49IDB4MTAwMDA6Ci0gICAgICAgICAgICBteXVuaWNociA9IGNocgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXl1bmljaHIgPSBsYW1iZGEgeDogY2hyKDB4RDdDMCsoeD4+MTApKSArIGNocigweERDMDArKHgmMHgzRkYpKQotCiAgICAgICAgIGZvciB4IGluIHJhbmdlKDB4MTAwMDAsIDB4MTEwMDAwKToKICAgICAgICAgICAgICMgQW55IElTTyAyMDIyIGNvZGVjIHdpbGwgY2F1c2UgdGhlIHNlZ2ZhdWx0Ci0gICAgICAgICAgICBteXVuaWNocih4KS5lbmNvZGUoJ2lzb18yMDIyX2pwJywgJ2lnbm9yZScpCisgICAgICAgICAgICBjaHIoeCkuZW5jb2RlKCdpc29fMjAyMl9qcCcsICdpZ25vcmUnKQogCiBjbGFzcyBUZXN0U3RhdGVmdWwodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIHRleHQgPSAnXHU0RTE2XHU0RTE2JwogICAgIGVuY29kaW5nID0gJ2lzby0yMDIyLWpwJwogICAgIGV4cGVjdGVkID0gYidceDFiJEJAJEAkJwotICAgIGV4cGVjdGVkX3Jlc2V0ID0gYidceDFiJEJAJEAkXHgxYihCJworICAgIHJlc2V0ID0gYidceDFiKEInCisgICAgZXhwZWN0ZWRfcmVzZXQgPSBleHBlY3RlZCArIHJlc2V0CiAKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZXh0LmVuY29kZShzZWxmLmVuY29kaW5nKSwgc2VsZi5leHBlY3RlZF9yZXNldCkKQEAgLTI3MSw2ICsyNjcsOCBAQAogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2hhcikKICAgICAgICAgICAgIGZvciBjaGFyIGluIHNlbGYudGV4dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHNlbGYuZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBzZWxmLnJlc2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVuY29kZXIuZW5jb2RlKCcnLCBmaW5hbD1UcnVlKSwgYicnKQogCiAgICAgZGVmIHRlc3RfaW5jcmVtZW50YWxlbmNvZGVyX2ZpbmFsKHNlbGYpOgogICAgICAgICBlbmNvZGVyID0gY29kZWNzLmdldGluY3JlbWVudGFsZW5jb2RlcihzZWxmLmVuY29kaW5nKSgpCkBAIC0yNzksMTIgKzI3NywxNCBAQAogICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGUoY2hhciwgaW5kZXggPT0gbGFzdF9pbmRleCkKICAgICAgICAgICAgIGZvciBpbmRleCwgY2hhciBpbiBlbnVtZXJhdGUoc2VsZi50ZXh0KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQsIHNlbGYuZXhwZWN0ZWRfcmVzZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rlci5lbmNvZGUoJycsIGZpbmFsPVRydWUpLCBiJycpCiAKIGNsYXNzIFRlc3RIWlN0YXRlZnVsKFRlc3RTdGF0ZWZ1bCk6CiAgICAgdGV4dCA9ICdcdTgwNGFcdTgwNGEnCiAgICAgZW5jb2RpbmcgPSAnaHonCiAgICAgZXhwZWN0ZWQgPSBiJ357QURBRCcKLSAgICBleHBlY3RlZF9yZXNldCA9IGInfntBREFEfn0nCisgICAgcmVzZXQgPSBiJ359JworICAgIGV4cGVjdGVkX3Jlc2V0ID0gZXhwZWN0ZWQgKyByZXNldAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IGFiNmQzNmEuLmUzMTNkZDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC04LDYgKzgsNyBAQAogaW1wb3J0IHF1ZXVlIGFzIHB5cXVldWUKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW8KK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IGdjCkBAIC0xNyw2ICsxOCw3IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHN0cnVjdAogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHRlc3Quc2NyaXB0X2hlbHBlcgogCkBAIC04NCw2ICs4NiwxMyBAQAogCiBXSU4zMiA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAorZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCitkZWYgd2FpdF9mb3JfaGFuZGxlKGhhbmRsZSwgdGltZW91dCk6CisgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZSBhbmQgdGltZW91dCA8IDAuMDoKKyAgICAgICAgdGltZW91dCA9IE5vbmUKKyAgICByZXR1cm4gd2FpdChbaGFuZGxlXSwgdGltZW91dCkKKwogdHJ5OgogICAgIE1BWEZEID0gb3Muc3lzY29uZigiU0NfT1BFTl9NQVgiKQogZXhjZXB0OgpAQCAtMTk3LDYgKzIwNiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJlbnQuaWRlbnQsIG9zLmdldHBpZCgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN1cnJlbnQuZXhpdGNvZGUsIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9kYWVtb25fYXJndW1lbnQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuVFlQRSA9PSAidGhyZWFkcyI6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIEJ5IGRlZmF1bHQgdXNlcyB0aGUgY3VycmVudCBwcm9jZXNzJ3MgZGFlbW9uIGZsYWcuCisgICAgICAgIHByb2MwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb2MwLmRhZW1vbiwgc2VsZi5jdXJyZW50X3Byb2Nlc3MoKS5kYWVtb24pCisgICAgICAgIHByb2MxID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0LCBkYWVtb249VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2MxLmRhZW1vbikKKyAgICAgICAgcHJvYzIgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3QsIGRhZW1vbj1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShwcm9jMi5kYWVtb24pCisKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX3Rlc3QoY2xzLCBxLCAqYXJncywgKiprd2RzKToKICAgICAgICAgY3VycmVudCA9IGNscy5jdXJyZW50X3Byb2Nlc3MoKQpAQCAtMjYyLDkgKzI4MywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHAsIHNlbGYuYWN0aXZlX2NoaWxkcmVuKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5leGl0Y29kZSwgTm9uZSkKIAorICAgICAgICBqb2luID0gVGltaW5nV3JhcHBlcihwLmpvaW4pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqb2luKDApLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuaXNfYWxpdmUoKSwgVHJ1ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oLTEpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKGpvaW4uZWxhcHNlZCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuaXNfYWxpdmUoKSwgVHJ1ZSkKKwogICAgICAgICBwLnRlcm1pbmF0ZSgpCiAKLSAgICAgICAgam9pbiA9IFRpbWluZ1dyYXBwZXIocC5qb2luKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGpvaW4oKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChqb2luLmVsYXBzZWQsIDAuMCkKIApAQCAtMzI5LDYgKzM1OSwyNiBAQAogICAgICAgICAgICAgXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCiAKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfc2VudGluZWwoY2xzLCBldmVudCk6CisgICAgICAgIGV2ZW50LndhaXQoMTAuMCkKKworICAgIGRlZiB0ZXN0X3NlbnRpbmVsKHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gInRocmVhZHMiOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGV2ZW50ID0gc2VsZi5FdmVudCgpCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfc2VudGluZWwsIGFyZ3M9KGV2ZW50LCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwLnNlbnRpbmVsCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorICAgICAgICBzZW50aW5lbCA9IHAuc2VudGluZWwKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlbnRpbmVsLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uod2FpdF9mb3JfaGFuZGxlKHNlbnRpbmVsLCB0aW1lb3V0PTAuMCkpCisgICAgICAgIGV2ZW50LnNldCgpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YWl0X2Zvcl9oYW5kbGUoc2VudGluZWwsIHRpbWVvdXQ9REVMVEEpKQorCiAjCiAjCiAjCkBAIC04NjgsNiArOTE4LDEwNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwod2FpdC5lbGFwc2VkLCBUSU1FT1VUMSkKIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0Zm9yX2YoY2xzLCBjb25kLCBzdGF0ZSk6CisgICAgICAgIHdpdGggY29uZDoKKyAgICAgICAgICAgIHN0YXRlLnZhbHVlID0gMAorICAgICAgICAgICAgY29uZC5ub3RpZnkoKQorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09NCkKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHQgb3Igc3RhdGUudmFsdWUgIT0gNDoKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFTX1NIQVJFRENUWVBFUywgJ25lZWRzIHNoYXJlZGN0eXBlcycpCisgICAgZGVmIHRlc3Rfd2FpdGZvcihzZWxmKToKKyAgICAgICAgIyBiYXNlZCBvbiB0ZXN0IGluIHRlc3QvbG9ja190ZXN0cy5weQorICAgICAgICBjb25kID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICBzdGF0ZSA9IHNlbGYuVmFsdWUoJ2knLCAtMSkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRmb3JfZiwgYXJncz0oY29uZCwgc3RhdGUpKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09MCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlLnZhbHVlLCAwKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgd2l0aCBjb25kOgorICAgICAgICAgICAgICAgIHN0YXRlLnZhbHVlICs9IDEKKyAgICAgICAgICAgICAgICBjb25kLm5vdGlmeSgpCisKKyAgICAgICAgcC5qb2luKDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocC5pc19hbGl2ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhpdGNvZGUsIDApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdGZvcl90aW1lb3V0X2YoY2xzLCBjb25kLCBzdGF0ZSwgc3VjY2Vzcywgc2VtKToKKyAgICAgICAgc2VtLnJlbGVhc2UoKQorICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICBleHBlY3RlZCA9IDAuMQorICAgICAgICAgICAgZHQgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgcmVzdWx0ID0gY29uZC53YWl0X2ZvcihsYW1iZGEgOiBzdGF0ZS52YWx1ZT09NCwgdGltZW91dD1leHBlY3RlZCkKKyAgICAgICAgICAgIGR0ID0gdGltZS50aW1lKCkgLSBkdAorICAgICAgICAgICAgIyBib3Jyb3cgbG9naWMgaW4gYXNzZXJ0VGltZW91dCgpIGZyb20gdGVzdC9sb2NrX3Rlc3RzLnB5CisgICAgICAgICAgICBpZiBub3QgcmVzdWx0IGFuZCBleHBlY3RlZCAqIDAuNiA8IGR0IDwgZXhwZWN0ZWQgKiAxMC4wOgorICAgICAgICAgICAgICAgIHN1Y2Nlc3MudmFsdWUgPSBUcnVlCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfU0hBUkVEQ1RZUEVTLCAnbmVlZHMgc2hhcmVkY3R5cGVzJykKKyAgICBkZWYgdGVzdF93YWl0Zm9yX3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgYmFzZWQgb24gdGVzdCBpbiB0ZXN0L2xvY2tfdGVzdHMucHkKKyAgICAgICAgY29uZCA9IHNlbGYuQ29uZGl0aW9uKCkKKyAgICAgICAgc3RhdGUgPSBzZWxmLlZhbHVlKCdpJywgMCkKKyAgICAgICAgc3VjY2VzcyA9IHNlbGYuVmFsdWUoJ2knLCBGYWxzZSkKKyAgICAgICAgc2VtID0gc2VsZi5TZW1hcGhvcmUoMCkKKworICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl90ZXN0X3dhaXRmb3JfdGltZW91dF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KGNvbmQsIHN0YXRlLCBzdWNjZXNzLCBzZW0pKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW0uYWNxdWlyZSh0aW1lb3V0PTEwKSkKKworICAgICAgICAjIE9ubHkgaW5jcmVtZW50IDMgdGltZXMsIHNvIHN0YXRlID09IDQgaXMgbmV2ZXIgcmVhY2hlZC4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICB3aXRoIGNvbmQ6CisgICAgICAgICAgICAgICAgc3RhdGUudmFsdWUgKz0gMQorICAgICAgICAgICAgICAgIGNvbmQubm90aWZ5KCkKKworICAgICAgICBwLmpvaW4oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1Y2Nlc3MudmFsdWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3Rfd2FpdF9yZXN1bHQoY2xzLCBjLCBwaWQpOgorICAgICAgICB3aXRoIGM6CisgICAgICAgICAgICBjLm5vdGlmeSgpCisgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgaWYgcGlkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgb3Mua2lsbChwaWQsIHNpZ25hbC5TSUdJTlQpCisKKyAgICBkZWYgdGVzdF93YWl0X3Jlc3VsdChzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLCBQcm9jZXNzZXNNaXhpbikgYW5kIHN5cy5wbGF0Zm9ybSAhPSAnd2luMzInOgorICAgICAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBpZCA9IE5vbmUKKworICAgICAgICBjID0gc2VsZi5Db25kaXRpb24oKQorICAgICAgICB3aXRoIGM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGMud2FpdCgwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYy53YWl0KDAuMSkpCisKKyAgICAgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3Rlc3Rfd2FpdF9yZXN1bHQsIGFyZ3M9KGMsIHBpZCkpCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGMud2FpdCgxMCkpCisgICAgICAgICAgICBpZiBwaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIGMud2FpdCwgMTApCisKKyAgICAgICAgICAgIHAuam9pbigpCisKIAogY2xhc3MgX1Rlc3RFdmVudChCYXNlVGVzdENhc2UpOgogCkBAIC05MTEsNiArMTA1OSwzNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3YWl0KCksIFRydWUpCiAKICMKKyMgVGVzdHMgZm9yIEJhcnJpZXIgLSBhZGFwdGVkIGZyb20gdGVzdHMgaW4gdGVzdC9sb2NrX3Rlc3RzLnB5CisjCisKKyMgTWFueSBvZiB0aGUgdGVzdHMgZm9yIHRocmVhZGluZy5CYXJyaWVyIHVzZSBhIGxpc3QgYXMgYW4gYXRvbWljCisjIGNvdW50ZXI6IGEgdmFsdWUgaXMgYXBwZW5kZWQgdG8gaW5jcmVtZW50IHRoZSBjb3VudGVyLCBhbmQgdGhlCisjIGxlbmd0aCBvZiB0aGUgbGlzdCBnaXZlcyB0aGUgdmFsdWUuICBXZSB1c2UgdGhlIGNsYXNzIER1bW15TGlzdAorIyBmb3IgdGhlIHNhbWUgcHVycG9zZS4KKworY2xhc3MgX0R1bW15TGlzdChvYmplY3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICB3cmFwcGVyID0gbXVsdGlwcm9jZXNzaW5nLmhlYXAuQnVmZmVyV3JhcHBlcihzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKKyAgICAgICAgbG9jayA9IG11bHRpcHJvY2Vzc2luZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5fX3NldHN0YXRlX18oKHdyYXBwZXIsIGxvY2spKQorICAgICAgICBzZWxmLl9sZW5ndGhidWZbMF0gPSAwCisKKyAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKKyAgICAgICAgKHNlbGYuX3dyYXBwZXIsIHNlbGYuX2xvY2spID0gc3RhdGUKKyAgICAgICAgc2VsZi5fbGVuZ3RoYnVmID0gc2VsZi5fd3JhcHBlci5jcmVhdGVfbWVtb3J5dmlldygpLmNhc3QoJ2knKQorCisgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl93cmFwcGVyLCBzZWxmLl9sb2NrKQorCisgICAgZGVmIGFwcGVuZChzZWxmLCBfKToKKyAgICAgICAgd2l0aCBzZWxmLl9sb2NrOgorICAgICAgICAgICAgc2VsZi5fbGVuZ3RoYnVmWzBdICs9IDEKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuX2xvY2s6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbGVuZ3RoYnVmWzBdCisKK2RlZiBfd2FpdCgpOgorICAgICMgQSBjcnVkZSB3YWl0L3lpZWxkIGZ1bmN0aW9uIG5vdCByZWx5aW5nIG9uIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzLgorICAgIHRpbWUuc2xlZXAoMC4wMSkKKworCitjbGFzcyBCdW5jaChvYmplY3QpOgorICAgICIiIgorICAgIEEgYnVuY2ggb2YgdGhyZWFkcy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZXNwYWNlLCBmLCBhcmdzLCBuLCB3YWl0X2JlZm9yZV9leGl0PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnN0cnVjdCBhIGJ1bmNoIG9mIGBuYCB0aHJlYWRzIHJ1bm5pbmcgdGhlIHNhbWUgZnVuY3Rpb24gYGZgLgorICAgICAgICBJZiBgd2FpdF9iZWZvcmVfZXhpdGAgaXMgVHJ1ZSwgdGhlIHRocmVhZHMgd29uJ3QgdGVybWluYXRlIHVudGlsCisgICAgICAgIGRvX2ZpbmlzaCgpIGlzIGNhbGxlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZiA9IGYKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLm4gPSBuCisgICAgICAgIHNlbGYuc3RhcnRlZCA9IG5hbWVzcGFjZS5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLmZpbmlzaGVkID0gbmFtZXNwYWNlLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYuX2Nhbl9leGl0ID0gbmFtZXNwYWNlLkV2ZW50KCkKKyAgICAgICAgaWYgbm90IHdhaXRfYmVmb3JlX2V4aXQ6CisgICAgICAgICAgICBzZWxmLl9jYW5fZXhpdC5zZXQoKQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIHAgPSBuYW1lc3BhY2UuUHJvY2Vzcyh0YXJnZXQ9c2VsZi50YXNrKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKworICAgIGRlZiB0YXNrKHNlbGYpOgorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgICAgICBzZWxmLnN0YXJ0ZWQuYXBwZW5kKHBpZCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5mKCpzZWxmLmFyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmZpbmlzaGVkLmFwcGVuZChwaWQpCisgICAgICAgICAgICBzZWxmLl9jYW5fZXhpdC53YWl0KDMwKQorICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2Nhbl9leGl0LmlzX3NldCgpCisKKyAgICBkZWYgd2FpdF9mb3Jfc3RhcnRlZChzZWxmKToKKyAgICAgICAgd2hpbGUgbGVuKHNlbGYuc3RhcnRlZCkgPCBzZWxmLm46CisgICAgICAgICAgICBfd2FpdCgpCisKKyAgICBkZWYgd2FpdF9mb3JfZmluaXNoZWQoc2VsZik6CisgICAgICAgIHdoaWxlIGxlbihzZWxmLmZpbmlzaGVkKSA8IHNlbGYubjoKKyAgICAgICAgICAgIF93YWl0KCkKKworICAgIGRlZiBkb19maW5pc2goc2VsZik6CisgICAgICAgIHNlbGYuX2Nhbl9leGl0LnNldCgpCisKKworY2xhc3MgQXBwZW5kVHJ1ZShvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLm9iaiA9IG9iagorICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgc2VsZi5vYmouYXBwZW5kKFRydWUpCisKKworY2xhc3MgX1Rlc3RCYXJyaWVyKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdHMgZm9yIEJhcnJpZXIgb2JqZWN0cy4KKyAgICAiIiIKKyAgICBOID0gNQorICAgIGRlZmF1bHRUaW1lb3V0ID0gMzAuMCAgIyBYWFggU2xvdyBXaW5kb3dzIGJ1aWxkYm90cyBuZWVkIGdlbmVyb3VzIHRpbWVvdXQKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5iYXJyaWVyID0gc2VsZi5CYXJyaWVyKHNlbGYuTiwgdGltZW91dD1zZWxmLmRlZmF1bHRUaW1lb3V0KQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmJhcnJpZXIuYWJvcnQoKQorICAgICAgICBzZWxmLmJhcnJpZXIgPSBOb25lCisKKyAgICBkZWYgRHVtbXlMaXN0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3RocmVhZHMnOgorICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAgIGVsaWYgc2VsZi5UWVBFID09ICdtYW5hZ2VyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIubGlzdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gX0R1bW15TGlzdCgpCisKKyAgICBkZWYgcnVuX3RocmVhZHMoc2VsZiwgZiwgYXJncyk6CisgICAgICAgIGIgPSBCdW5jaChzZWxmLCBmLCBhcmdzLCBzZWxmLk4tMSkKKyAgICAgICAgZigqYXJncykKKyAgICAgICAgYi53YWl0X2Zvcl9maW5pc2hlZCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbXVsdGlwYXNzKGNscywgYmFycmllciwgcmVzdWx0cywgbik6CisgICAgICAgIG0gPSBiYXJyaWVyLnBhcnRpZXMKKyAgICAgICAgYXNzZXJ0IG0gPT0gY2xzLk4KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICByZXN1bHRzWzBdLmFwcGVuZChUcnVlKQorICAgICAgICAgICAgYXNzZXJ0IGxlbihyZXN1bHRzWzFdKSA9PSBpICogbQorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIHJlc3VsdHNbMV0uYXBwZW5kKFRydWUpCisgICAgICAgICAgICBhc3NlcnQgbGVuKHJlc3VsdHNbMF0pID09IChpICsgMSkgKiBtCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBhc3NlcnQgYmFycmllci5uX3dhaXRpbmcgPT0gMAorICAgICAgICBleGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgYXNzZXJ0IG5vdCBiYXJyaWVyLmJyb2tlbgorCisgICAgZGVmIHRlc3RfYmFycmllcihzZWxmLCBwYXNzZXM9MSk6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYSBiYXJyaWVyIGlzIHBhc3NlZCBpbiBsb2Nrc3RlcAorICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IFtzZWxmLkR1bW15TGlzdCgpLCBzZWxmLkR1bW15TGlzdCgpXQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYubXVsdGlwYXNzLCAoc2VsZi5iYXJyaWVyLCByZXN1bHRzLCBwYXNzZXMpKQorCisgICAgZGVmIHRlc3RfYmFycmllcl8xMChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgd29ya3MgZm9yIDEwIGNvbnNlY3V0aXZlIHJ1bnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBzZWxmLnRlc3RfYmFycmllcigxMCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF93YWl0X3JldHVybl9mKGNscywgYmFycmllciwgcXVldWUpOgorICAgICAgICByZXMgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBxdWV1ZS5wdXQocmVzKQorCisgICAgZGVmIHRlc3Rfd2FpdF9yZXR1cm4oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICB0ZXN0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBiYXJyaWVyLndhaXQKKyAgICAgICAgIiIiCisgICAgICAgIHF1ZXVlID0gc2VsZi5RdWV1ZSgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF93YWl0X3JldHVybl9mLCAoc2VsZi5iYXJyaWVyLCBxdWV1ZSkpCisgICAgICAgIHJlc3VsdHMgPSBbcXVldWUuZ2V0KCkgZm9yIGkgaW4gcmFuZ2Uoc2VsZi5OKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzLmNvdW50KDApLCAxKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2FjdGlvbl9mKGNscywgYmFycmllciwgcmVzdWx0cyk6CisgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgIGlmIGxlbihyZXN1bHRzKSAhPSAxOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICBkZWYgdGVzdF9hY3Rpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoZSAnYWN0aW9uJyBjYWxsYmFjaworICAgICAgICAiIiIKKyAgICAgICAgcmVzdWx0cyA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIGFjdGlvbj1BcHBlbmRUcnVlKHJlc3VsdHMpKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWN0aW9uX2YsIChiYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIDEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfYWJvcnRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICByZXN1bHRzMS5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgIGJhcnJpZXIuYWJvcnQoKQorCisgICAgZGVmIHRlc3RfYWJvcnQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgYW4gYWJvcnQgd2lsbCBwdXQgdGhlIGJhcnJpZXIgaW4gYSBicm9rZW4gc3RhdGUKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgc2VsZi5ydW5fdGhyZWFkcyhzZWxmLl90ZXN0X2Fib3J0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0czEpLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMiksIHNlbGYuTi0xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5iYXJyaWVyLmJyb2tlbikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF9yZXNldF9mKGNscywgYmFycmllciwgcmVzdWx0czEsIHJlc3VsdHMyLCByZXN1bHRzMyk6CisgICAgICAgIGkgPSBiYXJyaWVyLndhaXQoKQorICAgICAgICBpZiBpID09IGNscy5OLy8yOgorICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBvdGhlciB0aHJlYWRzIGFyZSBhbGwgaW4gdGhlIGJhcnJpZXIuCisgICAgICAgICAgICB3aGlsZSBiYXJyaWVyLm5fd2FpdGluZyA8IGNscy5OLTE6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKKyAgICAgICAgICAgIGJhcnJpZXIucmVzZXQoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgICAgICBleGNlcHQgdGhyZWFkaW5nLkJyb2tlbkJhcnJpZXJFcnJvcjoKKyAgICAgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgIyBOb3csIHBhc3MgdGhlIGJhcnJpZXIgYWdhaW4KKyAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgcmVzdWx0czMuYXBwZW5kKFRydWUpCisKKyAgICBkZWYgdGVzdF9yZXNldChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhICdyZXNldCcgb24gYSBiYXJyaWVyIGZyZWVzIHRoZSB3YWl0aW5nIHRocmVhZHMKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF9yZXNldF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMzKSwgc2VsZi5OKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X2Fib3J0X2FuZF9yZXNldF9mKGNscywgYmFycmllciwgYmFycmllcjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0czIuYXBwZW5kKFRydWUpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAgICAgICBiYXJyaWVyLmFib3J0KCkKKyAgICAgICAgIyBTeW5jaHJvbml6ZSBhbmQgcmVzZXQgdGhlIGJhcnJpZXIuICBNdXN0IHN5bmNocm9uaXplIGZpcnN0IHNvCisgICAgICAgICMgdGhhdCBldmVyeW9uZSBoYXMgbGVmdCBpdCB3aGVuIHdlIHJlc2V0LCBhbmQgYWZ0ZXIgc28gdGhhdCBubworICAgICAgICAjIG9uZSBlbnRlcnMgaXQgYmVmb3JlIHRoZSByZXNldC4KKyAgICAgICAgaWYgYmFycmllcjIud2FpdCgpID09IGNscy5OLy8yOgorICAgICAgICAgICAgYmFycmllci5yZXNldCgpCisgICAgICAgIGJhcnJpZXIyLndhaXQoKQorICAgICAgICBiYXJyaWVyLndhaXQoKQorICAgICAgICByZXN1bHRzMy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X2Fib3J0X2FuZF9yZXNldChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCBhIGJhcnJpZXIgY2FuIGJlIHJlc2V0IGFmdGVyIGJlaW5nIGJyb2tlbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMxID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICByZXN1bHRzMiA9IHNlbGYuRHVtbXlMaXN0KCkKKyAgICAgICAgcmVzdWx0czMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIGJhcnJpZXIyID0gc2VsZi5CYXJyaWVyKHNlbGYuTikKKworICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfYWJvcnRfYW5kX3Jlc2V0X2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuYmFycmllciwgYmFycmllcjIsIHJlc3VsdHMxLCByZXN1bHRzMiwgcmVzdWx0czMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMyKSwgc2VsZi5OLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHMzKSwgc2VsZi5OKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF90ZXN0X3RpbWVvdXRfZihjbHMsIGJhcnJpZXIsIHJlc3VsdHMpOgorICAgICAgICBpID0gYmFycmllci53YWl0KCkKKyAgICAgICAgaWYgaSA9PSBjbHMuTi8vMjoKKyAgICAgICAgICAgICMgT25lIHRocmVhZCBpcyBsYXRlIQorICAgICAgICAgICAgdGltZS5zbGVlcCgxLjApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgwLjUpCisgICAgICAgIGV4Y2VwdCB0aHJlYWRpbmcuQnJva2VuQmFycmllckVycm9yOgorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RpbWVvdXQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHdhaXQodGltZW91dCkKKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdHMgPSBzZWxmLkR1bW15TGlzdCgpCisgICAgICAgIHNlbGYucnVuX3RocmVhZHMoc2VsZi5fdGVzdF90aW1lb3V0X2YsIChzZWxmLmJhcnJpZXIsIHJlc3VsdHMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXN1bHRzKSwgc2VsZi5iYXJyaWVyLnBhcnRpZXMpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX3Rlc3RfZGVmYXVsdF90aW1lb3V0X2YoY2xzLCBiYXJyaWVyLCByZXN1bHRzKToKKyAgICAgICAgaSA9IGJhcnJpZXIud2FpdChjbHMuZGVmYXVsdFRpbWVvdXQpCisgICAgICAgIGlmIGkgPT0gY2xzLk4vLzI6CisgICAgICAgICAgICAjIE9uZSB0aHJlYWQgaXMgbGF0ZXIgdGhhbiB0aGUgZGVmYXVsdCB0aW1lb3V0CisgICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYmFycmllci53YWl0KCkKKyAgICAgICAgZXhjZXB0IHRocmVhZGluZy5Ccm9rZW5CYXJyaWVyRXJyb3I6CisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChUcnVlKQorCisgICAgZGVmIHRlc3RfZGVmYXVsdF90aW1lb3V0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGUgYmFycmllcidzIGRlZmF1bHQgdGltZW91dAorICAgICAgICAiIiIKKyAgICAgICAgYmFycmllciA9IHNlbGYuQmFycmllcihzZWxmLk4sIHRpbWVvdXQ9MC41KQorICAgICAgICByZXN1bHRzID0gc2VsZi5EdW1teUxpc3QoKQorICAgICAgICBzZWxmLnJ1bl90aHJlYWRzKHNlbGYuX3Rlc3RfZGVmYXVsdF90aW1lb3V0X2YsIChiYXJyaWVyLCByZXN1bHRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0cyksIGJhcnJpZXIucGFydGllcykKKworICAgIGRlZiB0ZXN0X3NpbmdsZV90aHJlYWQoc2VsZik6CisgICAgICAgIGIgPSBzZWxmLkJhcnJpZXIoMSkKKyAgICAgICAgYi53YWl0KCkKKyAgICAgICAgYi53YWl0KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfdGVzdF90aG91c2FuZF9mKGNscywgYmFycmllciwgcGFzc2VzLCBjb25uLCBsb2NrKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFzc2VzKToKKyAgICAgICAgICAgIGJhcnJpZXIud2FpdCgpCisgICAgICAgICAgICB3aXRoIGxvY2s6CisgICAgICAgICAgICAgICAgY29ubi5zZW5kKGkpCisKKyAgICBkZWYgdGVzdF90aG91c2FuZChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICdtYW5hZ2VyJzoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBwYXNzZXMgPSAxMDAwCisgICAgICAgIGxvY2sgPSBzZWxmLkxvY2soKQorICAgICAgICBjb25uLCBjaGlsZF9jb25uID0gc2VsZi5QaXBlKEZhbHNlKQorICAgICAgICBmb3IgaiBpbiByYW5nZShzZWxmLk4pOgorICAgICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF90aG91c2FuZF9mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oc2VsZi5iYXJyaWVyLCBwYXNzZXMsIGNoaWxkX2Nvbm4sIGxvY2spKQorICAgICAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGFzc2VzKToKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKHNlbGYuTik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3YoKSwgaSkKKworIwogIwogIwogCkBAIC0xMTMwLDYgKzE2MTIsOSBAQAogICAgIHRpbWUuc2xlZXAod2FpdCkKICAgICByZXR1cm4geCp4CiAKK2RlZiBtdWwoeCwgeSk6CisgICAgcmV0dXJuIHgqeQorCiBjbGFzcyBfVGVzdFBvb2woQmFzZVRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2FwcGx5KHNlbGYpOgpAQCAtMTE0Myw2ICsxNjI4LDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG1hcChzcXIsIGxpc3QocmFuZ2UoMTAwKSksIGNodW5rc2l6ZT0yMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChtYXAoc3FyLCBsaXN0KHJhbmdlKDEwMCkpKSkpCiAKKyAgICBkZWYgdGVzdF9zdGFybWFwKHNlbGYpOgorICAgICAgICBwc21hcCA9IHNlbGYucG9vbC5zdGFybWFwCisgICAgICAgIHR1cGxlcyA9IGxpc3QoemlwKHJhbmdlKDEwKSwgcmFuZ2UoOSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwc21hcChtdWwsIHR1cGxlcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMDApLCByYW5nZSg5OSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwc21hcChtdWwsIHR1cGxlcywgY2h1bmtzaXplPTIwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KGl0ZXJ0b29scy5zdGFybWFwKG11bCwgdHVwbGVzKSkpCisKKyAgICBkZWYgdGVzdF9zdGFybWFwX2FzeW5jKHNlbGYpOgorICAgICAgICB0dXBsZXMgPSBsaXN0KHppcChyYW5nZSgxMDApLCByYW5nZSg5OSwtMSwgLTEpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBvb2wuc3Rhcm1hcF9hc3luYyhtdWwsIHR1cGxlcykuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChpdGVydG9vbHMuc3Rhcm1hcChtdWwsIHR1cGxlcykpKQorCiAgICAgZGVmIHRlc3RfbWFwX2NodW5rc2l6ZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5wb29sLm1hcF9hc3luYyhzcXIsIFtdLCBjaHVua3NpemU9MSkuZ2V0KHRpbWVvdXQ9VElNRU9VVDEpCkBAIC0xMjIxLDYgKzE3MjAsMTYgQEAKICAgICAgICAgcC5jbG9zZSgpCiAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0KHNlbGYpOgorICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBMID0gbGlzdChyYW5nZSgxMCkpCisgICAgICAgICAgICBleHBlY3RlZCA9IFtzcXIoaSkgZm9yIGkgaW4gTF0KKyAgICAgICAgICAgIHdpdGggbXVsdGlwcm9jZXNzaW5nLlBvb2woMikgYXMgcDoKKyAgICAgICAgICAgICAgICByID0gcC5tYXBfYXN5bmMoc3FyLCBMKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5nZXQoKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICBwcmludChwLl9zdGF0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHAubWFwX2FzeW5jLCBzcXIsIEwpCisKIGRlZiByYWlzaW5nKCk6CiAgICAgcmFpc2UgS2V5RXJyb3IoImtleSIpCiAKQEAgLTEzMjIsNiArMTgzMSwxMSBAQAogICAgICMgcnVuIGFmdGVyIGFsbCB0aGUgb3RoZXIgdGVzdHMgZm9yIHRoZSBtYW5hZ2VyLiAgSXQgdGVzdHMgdGhhdAogICAgICMgdGhlcmUgaGF2ZSBiZWVuIG5vICJyZWZlcmVuY2UgbGVha3MiIGZvciB0aGUgbWFuYWdlcidzIHNoYXJlZAogICAgICMgb2JqZWN0cy4gIE5vdGUgdGhlIGNvbW1lbnQgaW4gX1Rlc3RQb29sLnRlc3RfdGVybWluYXRlKCkuCisKKyAgICAjIElmIHNvbWUgb3RoZXIgdGVzdCB1c2luZyBNYW5hZ2VyTWl4aW4ubWFuYWdlciBmYWlscywgdGhlbiB0aGUKKyAgICAjIHJhaXNlZCBleGNlcHRpb24gbWF5IGtlZXAgYWxpdmUgYSBmcmFtZSB3aGljaCBob2xkcyBhIHJlZmVyZW5jZQorICAgICMgdG8gYSBtYW5hZ2VkIG9iamVjdC4gIFRoaXMgd2lsbCBjYXVzZSB0ZXN0X251bWJlcl9vZl9vYmplY3RzIHRvCisgICAgIyBhbHNvIGZhaWwuCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgnbWFuYWdlcicsKQogCiAgICAgZGVmIHRlc3RfbnVtYmVyX29mX29iamVjdHMoc2VsZik6CkBAIC0xMzc2LDcgKzE4OTAsMjcgQEAKICAgICBkZWYgdGVzdF9teW1hbmFnZXIoc2VsZik6CiAgICAgICAgIG1hbmFnZXIgPSBNeU1hbmFnZXIoKQogICAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5jb21tb24obWFuYWdlcikKKyAgICAgICAgbWFuYWdlci5zaHV0ZG93bigpCiAKKyAgICAgICAgIyBJZiB0aGUgbWFuYWdlciBwcm9jZXNzIGV4aXRlZCBjbGVhbmx5IHRoZW4gdGhlIGV4aXRjb2RlCisgICAgICAgICMgd2lsbCBiZSB6ZXJvLiAgT3RoZXJ3aXNlIChhZnRlciBhIHNob3J0IHRpbWVvdXQpCisgICAgICAgICMgdGVybWluYXRlKCkgaXMgdXNlZCwgcmVzdWx0aW5nIGluIGFuIGV4aXRjb2RlIG9mIC1TSUdURVJNLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgdGVzdF9teW1hbmFnZXJfY29udGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBNeU1hbmFnZXIoKSBhcyBtYW5hZ2VyOgorICAgICAgICAgICAgc2VsZi5jb21tb24obWFuYWdlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLl9wcm9jZXNzLmV4aXRjb2RlLCAwKQorCisgICAgZGVmIHRlc3RfbXltYW5hZ2VyX2NvbnRleHRfcHJlc3RhcnRlZChzZWxmKToKKyAgICAgICAgbWFuYWdlciA9IE15TWFuYWdlcigpCisgICAgICAgIG1hbmFnZXIuc3RhcnQoKQorICAgICAgICB3aXRoIG1hbmFnZXI6CisgICAgICAgICAgICBzZWxmLmNvbW1vbihtYW5hZ2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hbmFnZXIuX3Byb2Nlc3MuZXhpdGNvZGUsIDApCisKKyAgICBkZWYgY29tbW9uKHNlbGYsIG1hbmFnZXIpOgogICAgICAgICBmb28gPSBtYW5hZ2VyLkZvbygpCiAgICAgICAgIGJhciA9IG1hbmFnZXIuQmFyKCkKICAgICAgICAgYmF6ID0gbWFuYWdlci5iYXooKQpAQCAtMTM5OSw3ICsxOTMzLDYgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYmF6KSwgW2kqaSBmb3IgaSBpbiByYW5nZSgxMCldKQogCi0gICAgICAgIG1hbmFnZXIuc2h1dGRvd24oKQogCiAjCiAjIFRlc3Qgb2YgY29ubmVjdGluZyB0byBhIHJlbW90ZSBzZXJ2ZXIgYW5kIHVzaW5nIHhtbHJwY2xpYiBmb3Igc2VyaWFsaXphdGlvbgpAQCAtMTU3MCw2ICsyMTAzLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb2xsKCksIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydFRpbWluZ0FsbW9zdEVxdWFsKHBvbGwuZWxhcHNlZCwgMCkKIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvbGwoLTEpLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUaW1pbmdBbG1vc3RFcXVhbChwb2xsLmVsYXBzZWQsIDApCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb2xsKFRJTUVPVVQxKSwgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VGltaW5nQWxtb3N0RXF1YWwocG9sbC5lbGFwc2VkLCBUSU1FT1VUMSkKIApAQCAtMTc1NSw2ICsyMjkxLDQzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVkdWN0aW9uLnJlY3ZfaGFuZGxlLCBjb25uKQogICAgICAgICBwLmpvaW4oKQogCisgICAgZGVmIHRlc3RfY29udGV4dChzZWxmKToKKyAgICAgICAgYSwgYiA9IHNlbGYuUGlwZSgpCisKKyAgICAgICAgd2l0aCBhLCBiOgorICAgICAgICAgICAgYS5zZW5kKDE3MjkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmVjdigpLCAxNzI5KQorICAgICAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYS5jbG9zZWQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShiLmNsb3NlZCkKKworICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYS5jbG9zZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYi5jbG9zZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBhLnJlY3YpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBiLnJlY3YpCisKK2NsYXNzIF9UZXN0TGlzdGVuZXIoQmFzZVRlc3RDYXNlKToKKworICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfYmluZChzZWxmKToKKyAgICAgICAgZm9yIGZhbWlseSBpbiBzZWxmLmNvbm5lY3Rpb24uZmFtaWxpZXM6CisgICAgICAgICAgICBsID0gc2VsZi5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW1pbHkpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAobC5jbG9zZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwuYWRkcmVzcywgZmFtaWx5KQorCisgICAgZGVmIHRlc3RfY29udGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNvbm5lY3Rpb24uTGlzdGVuZXIoKSBhcyBsOgorICAgICAgICAgICAgd2l0aCBzZWxmLmNvbm5lY3Rpb24uQ2xpZW50KGwuYWRkcmVzcykgYXMgYzoKKyAgICAgICAgICAgICAgICB3aXRoIGwuYWNjZXB0KCkgYXMgZDoKKyAgICAgICAgICAgICAgICAgICAgYy5zZW5kKDE3MjkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5yZWN2KCksIDE3MjkpCisKKyAgICAgICAgaWYgc2VsZi5UWVBFID09ICdwcm9jZXNzZXMnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvciwgbC5hY2NlcHQpCisKIGNsYXNzIF9UZXN0TGlzdGVuZXJDbGllbnQoQmFzZVRlc3RDYXNlKToKIAogICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsICd0aHJlYWRzJykKQEAgLTE3OTIsNTIgKzIzNjUsMTM1IEBACiAgICAgICAgIHAuam9pbigpCiAgICAgICAgIGwuY2xvc2UoKQogCitjbGFzcyBfVGVzdFBvbGwodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywgJ3RocmVhZHMnKQorCisgICAgZGVmIHRlc3RfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoKSwgRmFsc2UpCisgICAgICAgIGIuc2VuZF9ieXRlcyhiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKCksIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKCksIFRydWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX3N0cmluZ3MoY2xzLCBjb25uLCBzdHJpbmdzKToKKyAgICAgICAgZm9yIHMgaW4gc3RyaW5nczoKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQorICAgICAgICAgICAgY29ubi5zZW5kX2J5dGVzKHMpCisgICAgICAgIGNvbm4uY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfc3RyaW5ncyhzZWxmKToKKyAgICAgICAgc3RyaW5ncyA9IChiJ2hlbGxvJywgYicnLCBiJ2EnLCBiJ2InLCBiJycsIGInYnllJywgYicnLCBiJ2xvcCcpCisgICAgICAgIGEsIGIgPSBzZWxmLlBpcGUoKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF9zdHJpbmdzLCBhcmdzPShiLCBzdHJpbmdzKSkKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgZm9yIHMgaW4gc3RyaW5nczoKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIwMCk6CisgICAgICAgICAgICAgICAgaWYgYS5wb2xsKDAuMDEpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgeCA9IGEucmVjdl9ieXRlcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHgpCisKKyAgICAgICAgcC5qb2luKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfYm91bmRhcmllcyhjbHMsIHIpOgorICAgICAgICAjIFBvbGxpbmcgbWF5ICJwdWxsIiBhIG1lc3NhZ2UgaW4gdG8gdGhlIGNoaWxkIHByb2Nlc3MsIGJ1dCB3ZQorICAgICAgICAjIGRvbid0IHdhbnQgaXQgdG8gcHVsbCBvbmx5IHBhcnQgb2YgYSBtZXNzYWdlLCBhcyB0aGF0IHdvdWxkCisgICAgICAgICMgY29ycnVwdCB0aGUgcGlwZSBmb3IgYW55IG90aGVyIHByb2Nlc3NlcyB3aGljaCBtaWdodCBsYXRlcgorICAgICAgICAjIHJlYWQgZnJvbSBpdC4KKyAgICAgICAgci5wb2xsKDUpCisKKyAgICBkZWYgdGVzdF9ib3VuZGFyaWVzKHNlbGYpOgorICAgICAgICByLCB3ID0gc2VsZi5QaXBlKEZhbHNlKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF9ib3VuZGFyaWVzLCBhcmdzPShyLCkpCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICB0aW1lLnNsZWVwKDIpCisgICAgICAgIEwgPSBbYiJmaXJzdCIsIGIic2Vjb25kIl0KKyAgICAgICAgZm9yIG9iaiBpbiBMOgorICAgICAgICAgICAgdy5zZW5kX2J5dGVzKG9iaikKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIHAuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oci5yZWN2X2J5dGVzKCksIEwpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX2RvbnRfbWVyZ2UoY2xzLCBiKToKKyAgICAgICAgYi5zZW5kX2J5dGVzKGInYScpCisgICAgICAgIGIuc2VuZF9ieXRlcyhiJ2InKQorICAgICAgICBiLnNlbmRfYnl0ZXMoYidjZCcpCisKKyAgICBkZWYgdGVzdF9kb250X21lcmdlKHNlbGYpOgorICAgICAgICBhLCBiID0gc2VsZi5QaXBlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMC4wKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5wb2xsKDAuMSksIEZhbHNlKQorCisgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX2RvbnRfbWVyZ2UsIGFyZ3M9KGIsKSkKKyAgICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnJlY3ZfYnl0ZXMoKSwgYidhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnJlY3ZfYnl0ZXMoKSwgYidiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMS4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnBvbGwoMC4wKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnJlY3ZfYnl0ZXMoKSwgYidjZCcpCisKKyAgICAgICAgcC5qb2luKCkKKwogIwogIyBUZXN0IG9mIHNlbmRpbmcgY29ubmVjdGlvbiBhbmQgc29ja2V0IG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMKICMKLSIiIgorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfUkVEVUNUSU9OLCAidGVzdCBuZWVkcyBtdWx0aXByb2Nlc3NpbmcucmVkdWN0aW9uIikKIGNsYXNzIF9UZXN0UGlja2xpbmdDb25uZWN0aW9ucyhCYXNlVGVzdENhc2UpOgogCiAgICAgQUxMT1dFRF9UWVBFUyA9ICgncHJvY2Vzc2VzJywpCiAKLSAgICBkZWYgX2xpc3RlbmVyKHNlbGYsIGNvbm4sIGZhbWlsaWVzKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5yZWR1Y3Rpb24gaW1wb3J0IHJlc291cmNlX3NoYXJlcgorICAgICAgICByZXNvdXJjZV9zaGFyZXIuc3RvcCh0aW1lb3V0PTUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2xpc3RlbmVyKGNscywgY29ubiwgZmFtaWxpZXMpOgogICAgICAgICBmb3IgZmFtIGluIGZhbWlsaWVzOgotICAgICAgICAgICAgbCA9IHNlbGYuY29ubmVjdGlvbi5MaXN0ZW5lcihmYW1pbHk9ZmFtKQorICAgICAgICAgICAgbCA9IGNscy5jb25uZWN0aW9uLkxpc3RlbmVyKGZhbWlseT1mYW0pCiAgICAgICAgICAgICBjb25uLnNlbmQobC5hZGRyZXNzKQogICAgICAgICAgICAgbmV3X2Nvbm4gPSBsLmFjY2VwdCgpCiAgICAgICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCisgICAgICAgICAgICBuZXdfY29ubi5jbG9zZSgpCisgICAgICAgICAgICBsLmNsb3NlKCkKIAotICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6Ci0gICAgICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgICAgICBsLmJpbmQoKCdsb2NhbGhvc3QnLCAwKSkKLSAgICAgICAgICAgIGNvbm4uc2VuZChsLmdldHNvY2tuYW1lKCkpCi0gICAgICAgICAgICBsLmxpc3RlbigxKQotICAgICAgICAgICAgbmV3X2Nvbm4sIGFkZHIgPSBsLmFjY2VwdCgpCi0gICAgICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCisgICAgICAgIGwgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgbC5iaW5kKCgnbG9jYWxob3N0JywgMCkpCisgICAgICAgIGwubGlzdGVuKDEpCisgICAgICAgIGNvbm4uc2VuZChsLmdldHNvY2tuYW1lKCkpCisgICAgICAgIG5ld19jb25uLCBhZGRyID0gbC5hY2NlcHQoKQorICAgICAgICBjb25uLnNlbmQobmV3X2Nvbm4pCisgICAgICAgIG5ld19jb25uLmNsb3NlKCkKKyAgICAgICAgbC5jbG9zZSgpCiAKICAgICAgICAgY29ubi5yZWN2KCkKIAotICAgIGRlZiBfcmVtb3RlKHNlbGYsIGNvbm4pOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfcmVtb3RlKGNscywgY29ubik6CiAgICAgICAgIGZvciAoYWRkcmVzcywgbXNnKSBpbiBpdGVyKGNvbm4ucmVjdiwgTm9uZSk6Ci0gICAgICAgICAgICBjbGllbnQgPSBzZWxmLmNvbm5lY3Rpb24uQ2xpZW50KGFkZHJlc3MpCisgICAgICAgICAgICBjbGllbnQgPSBjbHMuY29ubmVjdGlvbi5DbGllbnQoYWRkcmVzcykKICAgICAgICAgICAgIGNsaWVudC5zZW5kKG1zZy51cHBlcigpKQogICAgICAgICAgICAgY2xpZW50LmNsb3NlKCkKIAotICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6Ci0gICAgICAgICAgICBhZGRyZXNzLCBtc2cgPSBjb25uLnJlY3YoKQotICAgICAgICAgICAgY2xpZW50ID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgICAgICBjbGllbnQuY29ubmVjdChhZGRyZXNzKQotICAgICAgICAgICAgY2xpZW50LnNlbmRhbGwobXNnLnVwcGVyKCkpCi0gICAgICAgICAgICBjbGllbnQuY2xvc2UoKQorICAgICAgICBhZGRyZXNzLCBtc2cgPSBjb25uLnJlY3YoKQorICAgICAgICBjbGllbnQgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoYWRkcmVzcykKKyAgICAgICAgY2xpZW50LnNlbmRhbGwobXNnLnVwcGVyKCkpCisgICAgICAgIGNsaWVudC5jbG9zZSgpCiAKICAgICAgICAgY29ubi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9waWNrbGluZyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbXVsdGlwcm9jZXNzaW5nLmFsbG93X2Nvbm5lY3Rpb25fcGlja2xpbmcoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBmYW1pbGllcyA9IHNlbGYuY29ubmVjdGlvbi5mYW1pbGllcwogCiAgICAgICAgIGxjb25uLCBsY29ubjAgPSBzZWxmLlBpcGUoKQpAQCAtMTg2MSwxNiArMjUxNywxOSBAQAogCiAgICAgICAgIHJjb25uLnNlbmQoTm9uZSkKIAotICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3Byb2Nlc3Nlcyc6Ci0gICAgICAgICAgICBtc2cgPSBsYXRpbignVGhpcyBjb25uZWN0aW9uIHVzZXMgYSBub3JtYWwgc29ja2V0JykKLSAgICAgICAgICAgIGFkZHJlc3MgPSBsY29ubi5yZWN2KCkKLSAgICAgICAgICAgIHJjb25uLnNlbmQoKGFkZHJlc3MsIG1zZykpCi0gICAgICAgICAgICBpZiBoYXNhdHRyKHNvY2tldCwgJ2Zyb21mZCcpOgotICAgICAgICAgICAgICAgIG5ld19jb25uID0gbGNvbm4ucmVjdigpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY29ubi5yZWN2KDEwMCksIG1zZy51cHBlcigpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFhYWCBPbiBXaW5kb3dzIHdpdGggUHkyLjYgbmVlZCB0byBiYWNrcG9ydCBmcm9tZmQoKQotICAgICAgICAgICAgICAgIGRpc2NhcmQgPSBsY29ubi5yZWN2X2J5dGVzKCkKKyAgICAgICAgbXNnID0gbGF0aW4oJ1RoaXMgY29ubmVjdGlvbiB1c2VzIGEgbm9ybWFsIHNvY2tldCcpCisgICAgICAgIGFkZHJlc3MgPSBsY29ubi5yZWN2KCkKKyAgICAgICAgcmNvbm4uc2VuZCgoYWRkcmVzcywgbXNnKSkKKyAgICAgICAgbmV3X2Nvbm4gPSBsY29ubi5yZWN2KCkKKyAgICAgICAgYnVmID0gW10KKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHMgPSBuZXdfY29ubi5yZWN2KDEwMCkKKyAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBidWYuYXBwZW5kKHMpCisgICAgICAgIGJ1ZiA9IGInJy5qb2luKGJ1ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIG1zZy51cHBlcigpKQorICAgICAgICBuZXdfY29ubi5jbG9zZSgpCiAKICAgICAgICAgbGNvbm4uc2VuZChOb25lKQogCkBAIC0xODc5LDcgKzI1MzgsNDYgQEAKIAogICAgICAgICBscC5qb2luKCkKICAgICAgICAgcnAuam9pbigpCi0iIiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBjaGlsZF9hY2Nlc3MoY2xzLCBjb25uKToKKyAgICAgICAgdyA9IGNvbm4ucmVjdigpCisgICAgICAgIHcuc2VuZCgnYWxsIGlzIHdlbGwnKQorICAgICAgICB3LmNsb3NlKCkKKworICAgICAgICByID0gY29ubi5yZWN2KCkKKyAgICAgICAgbXNnID0gci5yZWN2KCkKKyAgICAgICAgY29ubi5zZW5kKG1zZyoyKQorCisgICAgICAgIGNvbm4uY2xvc2UoKQorCisgICAgZGVmIHRlc3RfYWNjZXNzKHNlbGYpOgorICAgICAgICAjIE9uIFdpbmRvd3MsIGlmIHdlIGRvIG5vdCBzcGVjaWZ5IGEgZGVzdGluYXRpb24gcGlkIHdoZW4KKyAgICAgICAgIyB1c2luZyBEdXBIYW5kbGUgdGhlbiB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgdG8gdXNlIHRoZQorICAgICAgICAjIGNvcnJlY3QgYWNjZXNzIGZsYWdzIGZvciBEdXBsaWNhdGVIYW5kbGUoKSwgb3IgZWxzZQorICAgICAgICAjIER1cEhhbmRsZS5kZXRhY2goKSB3aWxsIHJhaXNlIFBlcm1pc3Npb25FcnJvci4gIEZvciBleGFtcGxlLAorICAgICAgICAjIGZvciBhIHJlYWQgb25seSBwaXBlIGhhbmRsZSB3ZSBzaG91bGQgdXNlCisgICAgICAgICMgYWNjZXNzPUZJTEVfR0VORVJJQ19SRUFELiAgKFVuZm9ydHVuYXRlbHkKKyAgICAgICAgIyBEVVBMSUNBVEVfU0FNRV9BQ0NFU1MgZG9lcyBub3Qgd29yay4pCisgICAgICAgIGNvbm4sIGNoaWxkX2Nvbm4gPSBzZWxmLlBpcGUoKQorICAgICAgICBwID0gc2VsZi5Qcm9jZXNzKHRhcmdldD1zZWxmLmNoaWxkX2FjY2VzcywgYXJncz0oY2hpbGRfY29ubiwpKQorICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgcC5zdGFydCgpCisgICAgICAgIGNoaWxkX2Nvbm4uY2xvc2UoKQorCisgICAgICAgIHIsIHcgPSBzZWxmLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICBjb25uLnNlbmQodykKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoci5yZWN2KCksICdhbGwgaXMgd2VsbCcpCisgICAgICAgIHIuY2xvc2UoKQorCisgICAgICAgIHIsIHcgPSBzZWxmLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICBjb25uLnNlbmQocikKKyAgICAgICAgci5jbG9zZSgpCisgICAgICAgIHcuc2VuZCgnZm9vYmFyJykKKyAgICAgICAgdy5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29ubi5yZWN2KCksICdmb29iYXInKjIpCisKICMKICMKICMKQEAgLTIxNzQsOSArMjg3MiwxNSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihXSU4zMiwgInNraXBwZWQgb24gV2luZG93cyIpCiAgICAgZGVmIHRlc3RfaW52YWxpZF9oYW5kbGVzKHNlbGYpOgotICAgICAgICBjb25uID0gX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKDQ0OTc3NjA4KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBjb25uLnBvbGwpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IsIF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbiwgLTEpCisgICAgICAgIGNvbm4gPSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5Db25uZWN0aW9uKDQ0OTc3NjA4KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgSU9FcnJvciksIGNvbm4ucG9sbCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgSGFjayBwcml2YXRlIGF0dHJpYnV0ZSBfaGFuZGxlIHRvIGF2b2lkIHByaW50aW5nIGFuIGVycm9yCisgICAgICAgICAgICAjIGluIGNvbm4uX19kZWxfXworICAgICAgICAgICAgY29ubi5faGFuZGxlID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgSU9FcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uLkNvbm5lY3Rpb24sIC0xKQogCiAjCiAjIEZ1bmN0aW9ucyB1c2VkIHRvIGNyZWF0ZSB0ZXN0IGNhc2VzIGZyb20gdGhlIGJhc2Ugb25lcyBpbiB0aGlzIG1vZHVsZQpAQCAtMjE5NSwxMCArMjg5OSwxMiBAQAogICAgIHJlc3VsdCA9IHt9CiAgICAgZ2xvYiA9IGdsb2JhbHMoKQogICAgIFR5cGUgPSB0eXBlLmNhcGl0YWxpemUoKQorICAgIEFMTF9UWVBFUyA9IHsncHJvY2Vzc2VzJywgJ3RocmVhZHMnLCAnbWFuYWdlcid9CiAKICAgICBmb3IgbmFtZSBpbiBsaXN0KGdsb2Iua2V5cygpKToKICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCdfVGVzdCcpOgogICAgICAgICAgICAgYmFzZSA9IGdsb2JbbmFtZV0KKyAgICAgICAgICAgIGFzc2VydCBzZXQoYmFzZS5BTExPV0VEX1RZUEVTKSA8PSBBTExfVFlQRVMsIHNldChiYXNlLkFMTE9XRURfVFlQRVMpCiAgICAgICAgICAgICBpZiB0eXBlIGluIGJhc2UuQUxMT1dFRF9UWVBFUzoKICAgICAgICAgICAgICAgICBuZXduYW1lID0gJ1dpdGgnICsgVHlwZSArIG5hbWVbMTpdCiAgICAgICAgICAgICAgICAgY2xhc3MgVGVtcChiYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSwgTWl4aW4pOgpAQCAtMjIxNyw3ICsyOTIzLDcgQEAKICAgICBQcm9jZXNzID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MKICAgICBsb2NhbHMoKS51cGRhdGUoZ2V0X2F0dHJpYnV0ZXMobXVsdGlwcm9jZXNzaW5nLCAoCiAgICAgICAgICdRdWV1ZScsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywKLSAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsCisgICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnQmFycmllcicsICdWYWx1ZScsICdBcnJheScsICdSYXdWYWx1ZScsCiAgICAgICAgICdSYXdBcnJheScsICdjdXJyZW50X3Byb2Nlc3MnLCAnYWN0aXZlX2NoaWxkcmVuJywgJ1BpcGUnLAogICAgICAgICAnY29ubmVjdGlvbicsICdKb2luYWJsZVF1ZXVlJywgJ1Bvb2wnCiAgICAgICAgICkpKQpAQCAtMjIzMiw3ICsyOTM4LDcgQEAKICAgICBtYW5hZ2VyID0gb2JqZWN0Ll9fbmV3X18obXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzLlN5bmNNYW5hZ2VyKQogICAgIGxvY2FscygpLnVwZGF0ZShnZXRfYXR0cmlidXRlcyhtYW5hZ2VyLCAoCiAgICAgICAgICdRdWV1ZScsICdMb2NrJywgJ1JMb2NrJywgJ1NlbWFwaG9yZScsICdCb3VuZGVkU2VtYXBob3JlJywKLSAgICAgICAnQ29uZGl0aW9uJywgJ0V2ZW50JywgJ1ZhbHVlJywgJ0FycmF5JywgJ2xpc3QnLCAnZGljdCcsCisgICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnQmFycmllcicsICdWYWx1ZScsICdBcnJheScsICdsaXN0JywgJ2RpY3QnLAogICAgICAgICAnTmFtZXNwYWNlJywgJ0pvaW5hYmxlUXVldWUnLCAnUG9vbCcKICAgICAgICAgKSkpCiAKQEAgLTIyNDUsNyArMjk1MSw3IEBACiAgICAgUHJvY2VzcyA9IG11bHRpcHJvY2Vzc2luZy5kdW1teS5Qcm9jZXNzCiAgICAgbG9jYWxzKCkudXBkYXRlKGdldF9hdHRyaWJ1dGVzKG11bHRpcHJvY2Vzc2luZy5kdW1teSwgKAogICAgICAgICAnUXVldWUnLCAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsCi0gICAgICAgICdDb25kaXRpb24nLCAnRXZlbnQnLCAnVmFsdWUnLCAnQXJyYXknLCAnY3VycmVudF9wcm9jZXNzJywKKyAgICAgICAgJ0NvbmRpdGlvbicsICdFdmVudCcsICdCYXJyaWVyJywgJ1ZhbHVlJywgJ0FycmF5JywgJ2N1cnJlbnRfcHJvY2VzcycsCiAgICAgICAgICdhY3RpdmVfY2hpbGRyZW4nLCAnUGlwZScsICdjb25uZWN0aW9uJywgJ2RpY3QnLCAnbGlzdCcsCiAgICAgICAgICdOYW1lc3BhY2UnLCAnSm9pbmFibGVRdWV1ZScsICdQb29sJwogICAgICAgICApKSkKQEAgLTIyOTcsNiArMzAwMyw3IEBACiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYubWdyLnNodXRkb3duKCkKKyAgICAgICAgc2VsZi5tZ3Iuam9pbigpCiAKICAgICBkZWYgdGVzdF9tYW5hZ2VyX2luaXRpYWxpemVyKHNlbGYpOgogICAgICAgICBtID0gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXJzLlN5bmNNYW5hZ2VyKCkKQEAgLTIzMDQsNiArMzAxMSw3IEBACiAgICAgICAgIG0uc3RhcnQoaW5pdGlhbGl6ZXIsIChzZWxmLm5zLCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5ucy50ZXN0LCAxKQogICAgICAgICBtLnNodXRkb3duKCkKKyAgICAgICAgbS5qb2luKCkKIAogICAgIGRlZiB0ZXN0X3Bvb2xfaW5pdGlhbGl6ZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbXVsdGlwcm9jZXNzaW5nLlBvb2wsIGluaXRpYWxpemVyPTEpCkBAIC0yMzM2LDYgKzMwNDQsOCBAQAogZGVmIHBvb2xfaW5fcHJvY2VzcygpOgogICAgIHBvb2wgPSBtdWx0aXByb2Nlc3NpbmcuUG9vbChwcm9jZXNzZXM9NCkKICAgICB4ID0gcG9vbC5tYXAoX2FmdW5jLCBbMSwgMiwgMywgNCwgNSwgNiwgN10pCisgICAgcG9vbC5jbG9zZSgpCisgICAgcG9vbC5qb2luKCkKIAogY2xhc3MgX2ZpbGVfbGlrZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWxlZ2F0ZSk6CkBAIC0yMzgwLDYgKzMwOTAsMTgwIEBACiAgICAgICAgIGFzc2VydCBzaW8uZ2V0dmFsdWUoKSA9PSAnZm9vJwogCiAKK2NsYXNzIFRlc3RXYWl0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY2hpbGRfdGVzdF93YWl0KGNscywgdywgc2xvdyk6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIGlmIHNsb3c6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcChyYW5kb20ucmFuZG9tKCkqMC4xKQorICAgICAgICAgICAgdy5zZW5kKChpLCBvcy5nZXRwaWQoKSkpCisgICAgICAgIHcuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfd2FpdChzZWxmLCBzbG93PUZhbHNlKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICByZWFkZXJzID0gW10KKyAgICAgICAgcHJvY3MgPSBbXQorICAgICAgICBtZXNzYWdlcyA9IFtdCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICByLCB3ID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoZHVwbGV4PUZhbHNlKQorICAgICAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLl9jaGlsZF90ZXN0X3dhaXQsIGFyZ3M9KHcsIHNsb3cpKQorICAgICAgICAgICAgcC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHcuY2xvc2UoKQorICAgICAgICAgICAgcmVhZGVycy5hcHBlbmQocikKKyAgICAgICAgICAgIHByb2NzLmFwcGVuZChwKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuam9pbikKKworICAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICAgZm9yIHIgaW4gd2FpdChyZWFkZXJzKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IHIucmVjdigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEVPRkVycm9yOgorICAgICAgICAgICAgICAgICAgICByZWFkZXJzLnJlbW92ZShyKQorICAgICAgICAgICAgICAgICAgICByLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQobXNnKQorCisgICAgICAgIG1lc3NhZ2VzLnNvcnQoKQorICAgICAgICBleHBlY3RlZCA9IHNvcnRlZCgoaSwgcC5waWQpIGZvciBpIGluIHJhbmdlKDEwKSBmb3IgcCBpbiBwcm9jcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXNzYWdlcywgZXhwZWN0ZWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NoaWxkX3Rlc3Rfd2FpdF9zb2NrZXQoY2xzLCBhZGRyZXNzLCBzbG93KToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmNvbm5lY3QoYWRkcmVzcykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgaWYgc2xvdzoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHJhbmRvbS5yYW5kb20oKSowLjEpCisgICAgICAgICAgICBzLnNlbmRhbGwoKCclc1xuJyAlIGkpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdF93YWl0X3NvY2tldChzZWxmLCBzbG93PUZhbHNlKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorICAgICAgICBsID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIGwuYmluZCgoJycsIDApKQorICAgICAgICBsLmxpc3Rlbig0KQorICAgICAgICBhZGRyID0gKCdsb2NhbGhvc3QnLCBsLmdldHNvY2tuYW1lKClbMV0pCisgICAgICAgIHJlYWRlcnMgPSBbXQorICAgICAgICBwcm9jcyA9IFtdCisgICAgICAgIGRpYyA9IHt9CisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNCk6CisgICAgICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYuX2NoaWxkX3Rlc3Rfd2FpdF9zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz0oYWRkciwgc2xvdykpCisgICAgICAgICAgICBwLmRhZW1vbiA9IFRydWUKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgcHJvY3MuYXBwZW5kKHApCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5qb2luKQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDQpOgorICAgICAgICAgICAgciwgXyA9IGwuYWNjZXB0KCkKKyAgICAgICAgICAgIHJlYWRlcnMuYXBwZW5kKHIpCisgICAgICAgICAgICBkaWNbcl0gPSBbXQorICAgICAgICBsLmNsb3NlKCkKKworICAgICAgICB3aGlsZSByZWFkZXJzOgorICAgICAgICAgICAgZm9yIHIgaW4gd2FpdChyZWFkZXJzKToKKyAgICAgICAgICAgICAgICBtc2cgPSByLnJlY3YoMzIpCisgICAgICAgICAgICAgICAgaWYgbm90IG1zZzoKKyAgICAgICAgICAgICAgICAgICAgcmVhZGVycy5yZW1vdmUocikKKyAgICAgICAgICAgICAgICAgICAgci5jbG9zZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGljW3JdLmFwcGVuZChtc2cpCisKKyAgICAgICAgZXhwZWN0ZWQgPSAnJy5qb2luKCclc1xuJyAlIGkgZm9yIGkgaW4gcmFuZ2UoMTApKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgZm9yIHYgaW4gZGljLnZhbHVlcygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycuam9pbih2KSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF93YWl0X3Nsb3coc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWl0KFRydWUpCisKKyAgICBkZWYgdGVzdF93YWl0X3NvY2tldF9zbG93KHNlbGYpOgorICAgICAgICBzZWxmLnRlc3Rfd2FpdF9zb2NrZXQoVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3dhaXRfdGltZW91dChzZWxmKToKKyAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbiBpbXBvcnQgd2FpdAorCisgICAgICAgIGV4cGVjdGVkID0gNQorICAgICAgICBhLCBiID0gbXVsdGlwcm9jZXNzaW5nLlBpcGUoKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgYl0sIGV4cGVjdGVkKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgZXhwZWN0ZWQgKiAyKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVsdGEsIGV4cGVjdGVkICogMC41KQorCisgICAgICAgIGIuc2VuZChOb25lKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgYl0sIDIwKQorICAgICAgICBkZWx0YSA9IHRpbWUudGltZSgpIC0gc3RhcnQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW2FdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoZGVsdGEsIDAuNCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzaWduYWxfYW5kX3NsZWVwKGNscywgc2VtLCBwZXJpb2QpOgorICAgICAgICBzZW0ucmVsZWFzZSgpCisgICAgICAgIHRpbWUuc2xlZXAocGVyaW9kKQorCisgICAgZGVmIHRlc3Rfd2FpdF9pbnRlZ2VyKHNlbGYpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisKKyAgICAgICAgZXhwZWN0ZWQgPSAzCisgICAgICAgIHNlbSA9IG11bHRpcHJvY2Vzc2luZy5TZW1hcGhvcmUoMCkKKyAgICAgICAgYSwgYiA9IG11bHRpcHJvY2Vzc2luZy5QaXBlKCkKKyAgICAgICAgcCA9IG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zZWxmLnNpZ25hbF9hbmRfc2xlZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShzZW0sIGV4cGVjdGVkKSkKKworICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAuc2VudGluZWwsIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbS5hY3F1aXJlKHRpbWVvdXQ9MjApKQorCisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgcmVzID0gd2FpdChbYSwgcC5zZW50aW5lbCwgYl0sIGV4cGVjdGVkICsgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbcC5zZW50aW5lbF0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgZXhwZWN0ZWQgKyAyKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVsdGEsIGV4cGVjdGVkIC0gMikKKworICAgICAgICBhLnNlbmQoTm9uZSkKKworICAgICAgICBzdGFydCA9IHRpbWUudGltZSgpCisgICAgICAgIHJlcyA9IHdhaXQoW2EsIHAuc2VudGluZWwsIGJdLCAyMCkKKyAgICAgICAgZGVsdGEgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFtwLnNlbnRpbmVsLCBiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGRlbHRhLCAwLjQpCisKKyAgICAgICAgYi5zZW5kKE5vbmUpCisKKyAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthLCBwLnNlbnRpbmVsLCBiXSwgMjApCisgICAgICAgIGRlbHRhID0gdGltZS50aW1lKCkgLSBzdGFydAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbYSwgcC5zZW50aW5lbCwgYl0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhkZWx0YSwgMC40KQorCisgICAgICAgIHAudGVybWluYXRlKCkKKyAgICAgICAgcC5qb2luKCkKKworICAgIGRlZiB0ZXN0X25lZ190aW1lb3V0KHNlbGYpOgorICAgICAgICBmcm9tIG11bHRpcHJvY2Vzc2luZy5jb25uZWN0aW9uIGltcG9ydCB3YWl0CisgICAgICAgIGEsIGIgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZSgpCisgICAgICAgIHQgPSB0aW1lLnRpbWUoKQorICAgICAgICByZXMgPSB3YWl0KFthXSwgdGltZW91dD0tMSkKKyAgICAgICAgdCA9IHRpbWUudGltZSgpIC0gdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh0LCAxKQorICAgICAgICBhLmNsb3NlKCkKKyAgICAgICAgYi5jbG9zZSgpCisKICMKICMgSXNzdWUgMTQxNTE6IFRlc3QgaW52YWxpZCBmYW1pbHkgb24gaW52YWxpZCBlbnZpcm9ubWVudAogIwpAQCAtMjM5Nyw2ICszMjgxLDM4IEBACiAgICAgICAgICAgICBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi5MaXN0ZW5lcignL3Zhci90ZXN0LnBpcGUnKQogCiAjCisjIElzc3VlIDEyMDk4OiBjaGVjayBzeXMuZmxhZ3Mgb2YgY2hpbGQgbWF0Y2hlcyB0aGF0IGZvciBwYXJlbnQKKyMKKworY2xhc3MgVGVzdEZsYWdzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX2luX2dyYW5kY2hpbGQoY2xzLCBjb25uKToKKyAgICAgICAgY29ubi5zZW5kKHR1cGxlKHN5cy5mbGFncykpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcnVuX2luX2NoaWxkKGNscyk6CisgICAgICAgIGltcG9ydCBqc29uCisgICAgICAgIHIsIHcgPSBtdWx0aXByb2Nlc3NpbmcuUGlwZShkdXBsZXg9RmFsc2UpCisgICAgICAgIHAgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9Y2xzLnJ1bl9pbl9ncmFuZGNoaWxkLCBhcmdzPSh3LCkpCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBncmFuZGNoaWxkX2ZsYWdzID0gci5yZWN2KCkKKyAgICAgICAgcC5qb2luKCkKKyAgICAgICAgci5jbG9zZSgpCisgICAgICAgIHcuY2xvc2UoKQorICAgICAgICBmbGFncyA9ICh0dXBsZShzeXMuZmxhZ3MpLCBncmFuZGNoaWxkX2ZsYWdzKQorICAgICAgICBwcmludChqc29uLmR1bXBzKGZsYWdzKSkKKworICAgIGRlZiB0ZXN0X2ZsYWdzKHNlbGYpOgorICAgICAgICBpbXBvcnQganNvbiwgc3VicHJvY2VzcworICAgICAgICAjIHN0YXJ0IGNoaWxkIHByb2Nlc3MgdXNpbmcgdW51c3VhbCBmbGFncworICAgICAgICBwcm9nID0gKCdmcm9tIHRlc3QudGVzdF9tdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFRlc3RGbGFnczsgJyArCisgICAgICAgICAgICAgICAgJ1Rlc3RGbGFncy5ydW5faW5fY2hpbGQoKScpCisgICAgICAgIGRhdGEgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKyAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgJy1FJywgJy1TJywgJy1PJywgJy1jJywgcHJvZ10pCisgICAgICAgIGNoaWxkX2ZsYWdzLCBncmFuZGNoaWxkX2ZsYWdzID0ganNvbi5sb2FkcyhkYXRhLmRlY29kZSgnYXNjaWknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZF9mbGFncywgZ3JhbmRjaGlsZF9mbGFncykKKworIwogIyBUZXN0IGludGVyYWN0aW9uIHdpdGggc29ja2V0IHRpbWVvdXRzIC0gc2VlIElzc3VlICM2MDU2CiAjCiAKQEAgLTI0NTEsOCArMzM2Nyw4IEBACiAjCiAKIHRlc3RjYXNlc19vdGhlciA9IFtPdGhlclRlc3QsIFRlc3RJbnZhbGlkSGFuZGxlLCBUZXN0SW5pdGlhbGl6ZXJzLAotICAgICAgICAgICAgICAgICAgIFRlc3RTdGRpbkJhZGZpbGVkZXNjcmlwdG9yLCBUZXN0SW52YWxpZEZhbWlseSwKLSAgICAgICAgICAgICAgICAgICBUZXN0VGltZW91dHMsIFRlc3ROb0ZvcmtCb21iXQorICAgICAgICAgICAgICAgICAgIFRlc3RTdGRpbkJhZGZpbGVkZXNjcmlwdG9yLCBUZXN0V2FpdCwgVGVzdEludmFsaWRGYW1pbHksCisgICAgICAgICAgICAgICAgICAgVGVzdEZsYWdzLCBUZXN0VGltZW91dHMsIFRlc3ROb0ZvcmtCb21iXQogCiAjCiAjCkBAIC0yNDg5LDE0ICszNDA1LDE4IEBACiAKICAgICBsb2FkVGVzdHNGcm9tVGVzdENhc2UgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5sb2FkVGVzdHNGcm9tVGVzdENhc2UKICAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZShsb2FkVGVzdHNGcm9tVGVzdENhc2UodGMpIGZvciB0YyBpbiB0ZXN0Y2FzZXMpCi0gICAgcnVuKHN1aXRlKQotCi0gICAgVGhyZWFkc01peGluLnBvb2wudGVybWluYXRlKCkKLSAgICBQcm9jZXNzZXNNaXhpbi5wb29sLnRlcm1pbmF0ZSgpCi0gICAgTWFuYWdlck1peGluLnBvb2wudGVybWluYXRlKCkKLSAgICBNYW5hZ2VyTWl4aW4ubWFuYWdlci5zaHV0ZG93bigpCi0KLSAgICBkZWwgUHJvY2Vzc2VzTWl4aW4ucG9vbCwgVGhyZWFkc01peGluLnBvb2wsIE1hbmFnZXJNaXhpbi5wb29sCisgICAgdHJ5OgorICAgICAgICBydW4oc3VpdGUpCisgICAgZmluYWxseToKKyAgICAgICAgVGhyZWFkc01peGluLnBvb2wudGVybWluYXRlKCkKKyAgICAgICAgUHJvY2Vzc2VzTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQorICAgICAgICBNYW5hZ2VyTWl4aW4ucG9vbC50ZXJtaW5hdGUoKQorICAgICAgICBNYW5hZ2VyTWl4aW4ucG9vbC5qb2luKCkKKyAgICAgICAgTWFuYWdlck1peGluLm1hbmFnZXIuc2h1dGRvd24oKQorICAgICAgICBNYW5hZ2VyTWl4aW4ubWFuYWdlci5qb2luKCkKKyAgICAgICAgVGhyZWFkc01peGluLnBvb2wuam9pbigpCisgICAgICAgIFByb2Nlc3Nlc01peGluLnBvb2wuam9pbigpCisgICAgICAgIGRlbCBQcm9jZXNzZXNNaXhpbi5wb29sLCBUaHJlYWRzTWl4aW4ucG9vbCwgTWFuYWdlck1peGluLnBvb2wKIAogZGVmIG1haW4oKToKICAgICB0ZXN0X21haW4odW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIodmVyYm9zaXR5PTIpLnJ1bikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXV0YW50cy5weSBiL0xpYi90ZXN0L3Rlc3RfbXV0YW50cy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQzZmE0Ny4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X211dGFudHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTEgKzAsMCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTgotaW1wb3J0IHJhbmRvbQotaW1wb3J0IG9zCi0KLSMgRnJvbSBTRiBidWcgIzQyMjEyMTogIEluc2VjdXJpdGllcyBpbiBkaWN0IGNvbXBhcmlzb24uCi0KLSMgU2FmZXR5IG9mIGNvZGUgZG9pbmcgY29tcGFyaXNvbnMgaGFzIGJlZW4gYW4gaGlzdG9yaWNhbCBQeXRob24gd2VhayBzcG90LgotIyBUaGUgcHJvYmxlbSBpcyB0aGF0IGNvbXBhcmlzb24gb2Ygc3RydWN0dXJlcyB3cml0dGVuIGluIEMgKm5hdHVyYWxseSoKLSMgd2FudHMgdG8gaG9sZCBvbiB0byB0aGluZ3MgbGlrZSB0aGUgc2l6ZSBvZiB0aGUgY29udGFpbmVyLCBvciAidGhlCi0jIGJpZ2dlc3QiIGNvbnRhaW5lZSBzbyBmYXIsIGFjcm9zcyBhIHRyYXZlcnNhbCBvZiB0aGUgY29udGFpbmVyOyBidXQKLSMgY29kZSB0byBkbyBjb250YWluZWUgY29tcGFyaXNvbnMgY2FuIGNhbGwgYmFjayBpbnRvIFB5dGhvbiBhbmQgbXV0YXRlCi0jIHRoZSBjb250YWluZXIgaW4gYXJiaXRyYXJ5IHdheXMgd2hpbGUgdGhlIEMgbG9vcCBpcyBpbiBtaWRzdHJlYW0uICBJZiB0aGUKLSMgQyBjb2RlIGlzbid0IGV4dHJlbWVseSBwYXJhbm9pZCBhYm91dCBkaWdnaW5nIHRoaW5ncyBvdXQgb2YgbWVtb3J5IG9uCi0jIGVhY2ggdHJpcCwgYW5kIGFydGlmaWNpYWxseSBib29zdGluZyByZWZjb3VudHMgZm9yIHRoZSBkdXJhdGlvbiwgYW55dGhpbmcKLSMgZnJvbSBpbmZpbml0ZSBsb29wcyB0byBPUyBjcmFzaGVzIGNhbiByZXN1bHQgKHllcywgSSB1c2UgV2luZG93cyA8d2luaz4pLgotIwotIyBUaGUgb3RoZXIgcHJvYmxlbSBpcyB0aGF0IGNvZGUgZGVzaWduZWQgdG8gcHJvdm9rZSBhIHdlYWtuZXNzIGlzIHVzdWFsbHkKLSMgd2hpdGUtYm94IGNvZGUsIGFuZCBzbyBjYXRjaGVzIG9ubHkgdGhlIHBhcnRpY3VsYXIgdnVsbmVyYWJpbGl0aWVzIHRoZQotIyBhdXRob3Iga25ldyB0byBwcm90ZWN0IGFnYWluc3QuICBGb3IgZXhhbXBsZSwgUHl0aG9uJ3MgbGlzdC5zb3J0KCkgY29kZQotIyB3ZW50IHRocnUgbWFueSBpdGVyYXRpb25zIGFzIG9uZSAibmV3IiB2dWxuZXJhYmlsaXR5IGFmdGVyIGFub3RoZXIgd2FzCi0jIGRpc2NvdmVyZWQuCi0jCi0jIFNvIHRoZSBkaWN0IGNvbXBhcmlzb24gdGVzdCBoZXJlIHVzZXMgYSBibGFjay1ib3ggYXBwcm9hY2ggaW5zdGVhZCwKLSMgZ2VuZXJhdGluZyBkaWN0cyBvZiB2YXJpb3VzIHNpemVzIGF0IHJhbmRvbSwgYW5kIHBlcmZvcm1pbmcgcmFuZG9tCi0jIG11dGF0aW9ucyBvbiB0aGVtIGF0IHJhbmRvbSB0aW1lcy4gIFRoaXMgcHJvdmVkIHZlcnkgZWZmZWN0aXZlLAotIyB0cmlnZ2VyaW5nIGF0IGxlYXN0IHNpeCBkaXN0aW5jdCBmYWlsdXJlIG1vZGVzIHRoZSBmaXJzdCAyMCB0aW1lcyBJCi0jIHJhbiBpdC4gIEluZGVlZCwgYXQgdGhlIHN0YXJ0LCB0aGUgZHJpdmVyIG5ldmVyIGdvdCBiZXlvbmQgNiBpdGVyYXRpb25zCi0jIGJlZm9yZSB0aGUgdGVzdCBkaWVkLgotCi0jIFRoZSBkaWN0cyBhcmUgZ2xvYmFsIHRvIG1ha2UgaXQgZWFzeSB0byBtdXRhdGUgdGhhbSBmcm9tIHdpdGhpbiBmdW5jdGlvbnMuCi1kaWN0MSA9IHt9Ci1kaWN0MiA9IHt9Ci0KLSMgVGhlIGN1cnJlbnQgc2V0IG9mIGtleXMgaW4gZGljdDEgYW5kIGRpY3QyLiAgVGhlc2UgYXJlIG1hdGVyaWFsaXplZCBhcwotIyBsaXN0cyB0byBtYWtlIGl0IGVhc3kgdG8gcGljayBhIGRpY3Qga2V5IGF0IHJhbmRvbS4KLWRpY3Qxa2V5cyA9IFtdCi1kaWN0MmtleXMgPSBbXQotCi0jIEdsb2JhbCBmbGFnIHRlbGxpbmcgbWF5YmVfbXV0YXRlKCkgd2hldGhlciB0byAqY29uc2lkZXIqIG11dGF0aW5nLgotbXV0YXRlID0gMAotCi0jIElmIGdsb2JhbCBtdXRhdGUgaXMgdHJ1ZSwgY29uc2lkZXIgbXV0YXRpbmcgYSBkaWN0LiAgTWF5IG9yIG1heSBub3QKLSMgbXV0YXRlIGEgZGljdCBldmVuIGlmIG11dGF0ZSBpcyB0cnVlLiAgSWYgaXQgZG9lcyBkZWNpZGUgdG8gbXV0YXRlIGEKLSMgZGljdCwgaXQgcGlja3Mgb25lIG9mIHtkaWN0MSwgZGljdDJ9IGF0IHJhbmRvbSwgYW5kIGRlbGV0ZXMgYSByYW5kb20KLSMgZW50cnkgZnJvbSBpdDsgb3IsIG1vcmUgcmFyZWx5LCBhZGRzIGEgcmFuZG9tIGVsZW1lbnQuCi0KLWRlZiBtYXliZV9tdXRhdGUoKToKLSAgICBnbG9iYWwgbXV0YXRlCi0gICAgaWYgbm90IG11dGF0ZToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgcmFuZG9tLnJhbmRvbSgpIDwgMC41OgotICAgICAgICByZXR1cm4KLQotICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IDAuNToKLSAgICAgICAgdGFyZ2V0LCBrZXlzID0gZGljdDEsIGRpY3Qxa2V5cwotICAgIGVsc2U6Ci0gICAgICAgIHRhcmdldCwga2V5cyA9IGRpY3QyLCBkaWN0MmtleXMKLQotICAgIGlmIHJhbmRvbS5yYW5kb20oKSA8IDAuMjoKLSAgICAgICAgIyBJbnNlcnQgYSBuZXcga2V5LgotICAgICAgICBtdXRhdGUgPSAwICAgIyBkaXNhYmxlIG11dGF0aW9uIHVudGlsIGtleSBpbnNlcnRlZAotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgbmV3a2V5ID0gSG9ycmlkKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKLSAgICAgICAgICAgIGlmIG5ld2tleSBub3QgaW4gdGFyZ2V0OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHRhcmdldFtuZXdrZXldID0gSG9ycmlkKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKLSAgICAgICAga2V5cy5hcHBlbmQobmV3a2V5KQotICAgICAgICBtdXRhdGUgPSAxCi0KLSAgICBlbGlmIGtleXM6Ci0gICAgICAgICMgRGVsZXRlIGEga2V5IGF0IHJhbmRvbS4KLSAgICAgICAgbXV0YXRlID0gMCAgICMgZGlzYWJsZSBtdXRhdGlvbiB1bnRpbCBrZXkgZGVsZXRlZAotICAgICAgICBpID0gcmFuZG9tLnJhbmRyYW5nZShsZW4oa2V5cykpCi0gICAgICAgIGtleSA9IGtleXNbaV0KLSAgICAgICAgZGVsIHRhcmdldFtrZXldCi0gICAgICAgIGRlbCBrZXlzW2ldCi0gICAgICAgIG11dGF0ZSA9IDEKLQotIyBBIGhvcnJpZCBjbGFzcyB0aGF0IHRyaWdnZXJzIHJhbmRvbSBtdXRhdGlvbnMgb2YgZGljdDEgYW5kIGRpY3QyIHdoZW4KLSMgaW5zdGFuY2VzIGFyZSBjb21wYXJlZC4KLQotY2xhc3MgSG9ycmlkOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpKToKLSAgICAgICAgIyBDb21wYXJpc29uIG91dGNvbWVzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiBpLgotICAgICAgICBzZWxmLmkgPSBpCi0KLSAgICAgICAgIyBBbiBhcnRpZmljaWFsIGhhc2hjb2RlIGlzIHNlbGVjdGVkIGF0IHJhbmRvbSBzbyB0aGF0IHdlIGRvbid0Ci0gICAgICAgICMgaGF2ZSBhbnkgc3lzdGVtYXRpYyByZWxhdGlvbnNoaXAgYmV0d2VlbiBjb21wYXJpc29uIG91dGNvbWVzCi0gICAgICAgICMgKGJhc2VkIG9uIHNlbGYuaSBhbmQgb3RoZXIuaSkgYW5kIHJlbGF0aXZlIHBvc2l0aW9uIHdpdGhpbiB0aGUKLSAgICAgICAgIyBoYXNoIHZlY3RvciAoYmFzZWQgb24gaGFzaGNvZGUpLgotICAgICAgICAjIFhYWCBUaGlzIGlzIG5vIGxvbmdlciBlZmZlY3RpdmUuCi0gICAgICAgICMjc2VsZi5oYXNoY29kZSA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDAwMCkKLQotICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDQyCi0gICAgICAgIHJldHVybiBzZWxmLmhhc2hjb2RlCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgbWF5YmVfbXV0YXRlKCkgICAjIFRoZSBwb2ludCBvZiB0aGUgdGVzdC4KLSAgICAgICAgcmV0dXJuIHNlbGYuaSA9PSBvdGhlci5pCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJJIGRpZG4ndCBleHBlY3Qgc29tZSBraW5kIG9mIFNwYW5pc2ggaW5xdWlzaXRpb24hIikKLQotICAgIF9fbHRfXyA9IF9fbGVfXyA9IF9fZ3RfXyA9IF9fZ2VfXyA9IF9fbmVfXwotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIkhvcnJpZCglZCkiICUgc2VsZi5pCi0KLSMgRmlsbCBkaWN0IGQgd2l0aCBudW1lbnRyaWVzIChIb3JyaWQoaSksIEhvcnJpZChqKSkga2V5LXZhbHVlIHBhaXJzLAotIyB3aGVyZSBpIGFuZCBqIGFyZSBzZWxlY3RlZCBhdCByYW5kb20gZnJvbSB0aGUgY2FuZGlkYXRlcyBsaXN0LgotIyBSZXR1cm4gZC5rZXlzKCkgYWZ0ZXIgZmlsbGluZy4KLQotZGVmIGZpbGxfZGljdChkLCBjYW5kaWRhdGVzLCBudW1lbnRyaWVzKToKLSAgICBkLmNsZWFyKCkKLSAgICBmb3IgaSBpbiByYW5nZShudW1lbnRyaWVzKToKLSAgICAgICAgZFtIb3JyaWQocmFuZG9tLmNob2ljZShjYW5kaWRhdGVzKSldID0gXAotICAgICAgICAgICAgSG9ycmlkKHJhbmRvbS5jaG9pY2UoY2FuZGlkYXRlcykpCi0gICAgcmV0dXJuIGxpc3QoZC5rZXlzKCkpCi0KLSMgVGVzdCBvbmUgcGFpciBvZiByYW5kb21seSBnZW5lcmF0ZWQgZGljdHMsIGVhY2ggd2l0aCBuIGVudHJpZXMuCi0jIE5vdGUgdGhhdCBkaWN0IGNvbXBhcmlzb24gaXMgdHJpdmlhbCBpZiB0aGV5IGRvbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyCi0jIG9mIGVudGlyZXMgKHRoZW4gdGhlICJzaG9ydGVyIiBkaWN0IGlzIGluc3RhbnRseSBjb25zaWRlcmVkIHRvIGJlIHRoZQotIyBzbWFsbGVyIG9uZSwgd2l0aG91dCBldmVuIGxvb2tpbmcgYXQgdGhlIGVudHJpZXMpLgotCi1kZWYgdGVzdF9vbmUobik6Ci0gICAgZ2xvYmFsIG11dGF0ZSwgZGljdDEsIGRpY3QyLCBkaWN0MWtleXMsIGRpY3Qya2V5cwotCi0gICAgIyBGaWxsIHRoZSBkaWN0cyB3aXRob3V0IG11dGF0aW5nIHRoZW0uCi0gICAgbXV0YXRlID0gMAotICAgIGRpY3Qxa2V5cyA9IGZpbGxfZGljdChkaWN0MSwgcmFuZ2UobiksIG4pCi0gICAgZGljdDJrZXlzID0gZmlsbF9kaWN0KGRpY3QyLCByYW5nZShuKSwgbikKLQotICAgICMgRW5hYmxlIG11dGF0aW9uLCB0aGVuIGNvbXBhcmUgdGhlIGRpY3RzIHNvIGxvbmcgYXMgdGhleSBoYXZlIHRoZQotICAgICMgc2FtZSBzaXplLgotICAgIG11dGF0ZSA9IDEKLSAgICBpZiB2ZXJib3NlOgotICAgICAgICBwcmludCgidHJ5aW5nIHcvIGxlbmd0aHMiLCBsZW4oZGljdDEpLCBsZW4oZGljdDIpLCBlbmQ9JyAnKQotICAgIHdoaWxlIGRpY3QxIGFuZCBsZW4oZGljdDEpID09IGxlbihkaWN0Mik6Ci0gICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiLiIsIGVuZD0nICcpCi0gICAgICAgIGMgPSBkaWN0MSA9PSBkaWN0MgotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHByaW50KCkKLQotIyBSdW4gdGVzdF9vbmUgbiB0aW1lcy4gIEF0IHRoZSBzdGFydCAoYmVmb3JlIHRoZSBidWdzIHdlcmUgZml4ZWQpLCAyMAotIyBjb25zZWN1dGl2ZSBydW5zIG9mIHRoaXMgdGVzdCBlYWNoIGJsZXcgdXAgb24gb3IgYmVmb3JlIHRoZSBzaXh0aCB0aW1lCi0jIHRlc3Rfb25lIHdhcyBydW4uICBTbyBuIGRvZXNuJ3QgaGF2ZSB0byBiZSBsYXJnZSB0byBnZXQgYW4gaW50ZXJlc3RpbmcKLSMgdGVzdC4KLSMgT1RPSCwgY2FsbGluZyB3aXRoIGxhcmdlIG4gaXMgYWxzbyBpbnRlcmVzdGluZywgdG8gZW5zdXJlIHRoYXQgdGhlIGZpeGVkCi0jIGNvZGUgZG9lc24ndCBob2xkIG9uIHRvIHJlZmNvdW50cyAqdG9vKiBsb25nIChpbiB3aGljaCBjYXNlIG1lbW9yeSB3b3VsZAotIyBsZWFrKS4KLQotZGVmIHRlc3Qobik6Ci0gICAgZm9yIGkgaW4gcmFuZ2Uobik6Ci0gICAgICAgIHRlc3Rfb25lKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKLQotIyBTZWUgbGFzdCBjb21tZW50IGJsb2NrIGZvciBjbHVlcyBhYm91dCBnb29kIHZhbHVlcyBmb3Igbi4KLXRlc3QoMTAwKQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbm90aGVyIHNlZ2ZhdWx0IGJ1ZywgZGlzdGlsbGVkIGJ5IE1pY2hhZWwgSHVkc29uIGZyb20gYSBjLmwucHkgcG9zdC4KLQotY2xhc3MgQ2hpbGQ6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgIHNlbGYuX19kaWN0X19bJ3BhcmVudCddID0gcGFyZW50Ci0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICBzZWxmLnBhcmVudC5hID0gMQotICAgICAgICBzZWxmLnBhcmVudC5iID0gMQotICAgICAgICBzZWxmLnBhcmVudC5jID0gMQotICAgICAgICBzZWxmLnBhcmVudC5kID0gMQotICAgICAgICBzZWxmLnBhcmVudC5lID0gMQotICAgICAgICBzZWxmLnBhcmVudC5mID0gMQotICAgICAgICBzZWxmLnBhcmVudC5nID0gMQotICAgICAgICBzZWxmLnBhcmVudC5oID0gMQotICAgICAgICBzZWxmLnBhcmVudC5pID0gMQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnBhcmVudCwgYXR0cikKLQotY2xhc3MgUGFyZW50OgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5hID0gQ2hpbGQoc2VsZikKLQotIyBIYXJkIHRvIHNheSB3aGF0IHRoaXMgd2lsbCBwcmludCEgIE1heSB2YXJ5IGZyb20gdGltZSB0byB0aW1lLiAgQnV0Ci0jIHdlJ3JlIHNwZWNpZmljYWxseSB0cnlpbmcgdG8gdGVzdCB0aGUgdHBfcHJpbnQgc2xvdCBoZXJlLCBhbmQgdGhpcyBpcwotIyB0aGUgY2xlYXJlc3Qgd2F5IHRvIGRvIGl0LiAgV2UgcHJpbnQgdGhlIHJlc3VsdCB0byBhIHRlbXAgZmlsZSBzbyB0aGF0Ci0jIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBkb2Vzbid0IG5lZWQgdG8gY2hhbmdlLgotCi1mID0gb3BlbihURVNURk4sICJ3IikKLXByaW50KFBhcmVudCgpLl9fZGljdF9fLCBmaWxlPWYpCi1mLmNsb3NlKCkKLW9zLnVubGluayhURVNURk4pCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIEFuZCBhbm90aGVyIGNvcmUtZHVtcGVyIGZyb20gTWljaGFlbCBIdWRzb24uCi0KLWRpY3QgPSB7fQotCi0jIEZvcmNlIGRpY3QgdG8gbWFsbG9jIGl0cyB0YWJsZS4KLWZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICBkaWN0W2ldID0gaQotCi1mID0gb3BlbihURVNURk4sICJ3IikKLQotY2xhc3MgTWFjaGlhdmVsbGk6Ci0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBkaWN0LmNsZWFyKCkKLQotICAgICAgICAjIE1pY2hhZWwgc2V6OiAgImRvZXNuJ3QgY3Jhc2ggd2l0aG91dCB0aGlzLiAgZG9uJ3Qga25vdyB3aHkuIgotICAgICAgICAjIFRpbSBzZXo6ICAibHVjayBvZiB0aGUgZHJhdzsgY3Jhc2hlcyB3aXRoIG9yIHdpdGhvdXQgZm9yIG1lLiIKLSAgICAgICAgcHJpbnQoZmlsZT1mKQotCi0gICAgICAgIHJldHVybiByZXByKCJtYWNoaWF2ZWxsaSIpCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAwCi0KLWRpY3RbTWFjaGlhdmVsbGkoKV0gPSBNYWNoaWF2ZWxsaSgpCi0KLXByaW50KHN0cihkaWN0KSwgZmlsZT1mKQotZi5jbG9zZSgpCi1vcy51bmxpbmsoVEVTVEZOKQotZGVsIGYsIGRpY3QKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBBbmQgYW5vdGhlciBjb3JlLWR1bXBlciBmcm9tIE1pY2hhZWwgSHVkc29uLgotCi1kaWN0ID0ge30KLQotIyBsZXQncyBmb3JjZSBkaWN0IHRvIG1hbGxvYyBpdHMgdGFibGUKLWZvciBpIGluIHJhbmdlKDEsIDEwKToKLSAgICBkaWN0W2ldID0gaQotCi1jbGFzcyBNYWNoaWF2ZWxsaTI6Ci0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGRpY3QuY2xlYXIoKQotICAgICAgICByZXR1cm4gMQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gMAotCi1kaWN0W01hY2hpYXZlbGxpMigpXSA9IE1hY2hpYXZlbGxpMigpCi0KLXRyeToKLSAgICBkaWN0W01hY2hpYXZlbGxpMigpXQotZXhjZXB0IEtleUVycm9yOgotICAgIHBhc3MKLQotZGVsIGRpY3QKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQW5kIGFub3RoZXIgY29yZS1kdW1wZXIgZnJvbSBNaWNoYWVsIEh1ZHNvbi4KLQotZGljdCA9IHt9Ci0KLSMgbGV0J3MgZm9yY2UgZGljdCB0byBtYWxsb2MgaXRzIHRhYmxlCi1mb3IgaSBpbiByYW5nZSgxLCAxMCk6Ci0gICAgZGljdFtpXSA9IGkKLQotY2xhc3MgTWFjaGlhdmVsbGkzOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZCk6Ci0gICAgICAgIHNlbGYuaWQgPSBpZAotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIHNlbGYuaWQgPT0gb3RoZXIuaWQ6Ci0gICAgICAgICAgICBkaWN0LmNsZWFyKCkKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzKCVzKSIlKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBzZWxmLmlkKQotCi0gICAgZGVmIF9faGFzaF9fKHNlbGYpOgotICAgICAgICByZXR1cm4gMAotCi1kaWN0W01hY2hpYXZlbGxpMygxKV0gPSBNYWNoaWF2ZWxsaTMoMCkKLWRpY3RbTWFjaGlhdmVsbGkzKDIpXSA9IE1hY2hpYXZlbGxpMygwKQotCi1mID0gb3BlbihURVNURk4sICJ3IikKLXRyeToKLSAgICB0cnk6Ci0gICAgICAgIHByaW50KGRpY3RbTWFjaGlhdmVsbGkzKDIpXSwgZmlsZT1mKQotICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgcGFzcwotZmluYWxseToKLSAgICBmLmNsb3NlKCkKLSAgICBvcy51bmxpbmsoVEVTVEZOKQotCi1kZWwgZGljdAotZGVsIGRpY3QxLCBkaWN0MiwgZGljdDFrZXlzLCBkaWN0MmtleXMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkgYi9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNjdiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CkBAIC0wLDAgKzEsMjk0IEBACitpbXBvcnQgc3lzCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKKworZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliIGltcG9ydCB1dGlsCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisKKyMgbmVlZGVkIHRlc3RzOgorIworIyBuZWVkIHRvIHRlc3Qgd2hlbiBuZXN0ZWQsIHNvIHRoYXQgdGhlIHRvcC1sZXZlbCBwYXRoIGlzbid0IHN5cy5wYXRoCisjIG5lZWQgdG8gdGVzdCBkeW5hbWljIHBhdGggZGV0ZWN0aW9uLCBib3RoIGF0IHRvcC1sZXZlbCBhbmQgbmVzdGVkCisjIHdpdGggZHluYW1pYyBwYXRoLCBjaGVjayB3aGVuIGEgbG9hZGVyIGlzIHJldHVybmVkIG9uIHBhdGggcmVsb2FkICh0aGF0IGlzLAorIyAgdHJ5aW5nIHRvIHN3aXRjaCBmcm9tIGEgbmFtZXNwYWNlIHBhY2thZ2UgdG8gYSByZWd1bGFyIHBhY2thZ2UpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBzeXNfbW9kdWxlc19jb250ZXh0KCk6CisgICAgIiIiCisgICAgTWFrZSBzdXJlIHN5cy5tb2R1bGVzIGlzIHRoZSBzYW1lIG9iamVjdCBhbmQgaGFzIHRoZSBzYW1lIGNvbnRlbnQKKyAgICB3aGVuIGV4aXRpbmcgdGhlIGNvbnRleHQgYXMgd2hlbiBlbnRlcmluZy4KKworICAgIFNpbWlsYXIgdG8gaW1wb3J0bGliLnRlc3QudXRpbC51bmNhY2hlLCBidXQgZG9lc24ndCByZXF1aXJlIGV4cGxpY2l0CisgICAgbmFtZXMuCisgICAgIiIiCisgICAgc3lzX21vZHVsZXNfc2F2ZWQgPSBzeXMubW9kdWxlcworICAgIHN5c19tb2R1bGVzX2NvcHkgPSBzeXMubW9kdWxlcy5jb3B5KCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1vZHVsZXMgPSBzeXNfbW9kdWxlc19zYXZlZAorICAgICAgICBzeXMubW9kdWxlcy5jbGVhcigpCisgICAgICAgIHN5cy5tb2R1bGVzLnVwZGF0ZShzeXNfbW9kdWxlc19jb3B5KQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgbmFtZXNwYWNlX3RyZWVfY29udGV4dCgqKmt3YXJncyk6CisgICAgIiIiCisgICAgU2F2ZSBpbXBvcnQgc3RhdGUgYW5kIHN5cy5tb2R1bGVzIGNhY2hlIGFuZCByZXN0b3JlIGl0IG9uIGV4aXQuCisgICAgVHlwaWNhbCB1c2FnZToKKworICAgID4+PiB3aXRoIG5hbWVzcGFjZV90cmVlX2NvbnRleHQocGF0aD1bJy90bXAveHh5eS9wb3J0aW9uMScsCisgICAgLi4uICAgICAgICAgJy90bXAveHh5eS9wb3J0aW9uMiddKToKKyAgICAuLi4gICAgIHBhc3MKKyAgICAiIiIKKyAgICAjIHVzZSBkZWZhdWx0IG1ldGFfcGF0aCBhbmQgcGF0aF9ob29rcyB1bmxlc3Mgc3BlY2lmaWVkIG90aGVyd2lzZQorICAgIGt3YXJncy5zZXRkZWZhdWx0KCdtZXRhX3BhdGgnLCBzeXMubWV0YV9wYXRoKQorICAgIGt3YXJncy5zZXRkZWZhdWx0KCdwYXRoX2hvb2tzJywgc3lzLnBhdGhfaG9va3MpCisgICAgaW1wb3J0X2NvbnRleHQgPSB1dGlsLmltcG9ydF9zdGF0ZSgqKmt3YXJncykKKyAgICB3aXRoIGltcG9ydF9jb250ZXh0LCBzeXNfbW9kdWxlc19jb250ZXh0KCk6CisgICAgICAgIHlpZWxkCisKK2NsYXNzIE5hbWVzcGFjZVBhY2thZ2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBTdWJjbGFzc2VzIHNob3VsZCBkZWZpbmUgc2VsZi5yb290IGFuZCBzZWxmLnBhdGhzICh1bmRlciB0aGF0IHJvb3QpCisgICAgdG8gYmUgYWRkZWQgdG8gc3lzLnBhdGguCisgICAgIiIiCisgICAgcm9vdCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnbmFtZXNwYWNlX3BrZ3MnKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnJlc29sdmVkX3BhdGhzID0gWworICAgICAgICAgICAgb3MucGF0aC5qb2luKHNlbGYucm9vdCwgcGF0aCkgZm9yIHBhdGggaW4gc2VsZi5wYXRocworICAgICAgICBdCisgICAgICAgIHNlbGYuY3R4ID0gbmFtZXNwYWNlX3RyZWVfY29udGV4dChwYXRoPXNlbGYucmVzb2x2ZWRfcGF0aHMpCisgICAgICAgIHNlbGYuY3R4Ll9fZW50ZXJfXygpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICMgVE9ETzogd2lsbCB3ZSBldmVyIHdhbnQgdG8gcGFzcyBleGNfaW5mbyB0byBfX2V4aXRfXz8KKyAgICAgICAgc2VsZi5jdHguX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKKworY2xhc3MgU2luZ2xlTmFtZXNwYWNlUGFja2FnZShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5vbmUuYXR0ciwgJ3BvcnRpb24xIGZvbyBvbmUnKQorCisgICAgZGVmIHRlc3RfY2FudF9pbXBvcnRfb3RoZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgIGRlZiB0ZXN0X21vZHVsZV9yZXByKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZm9vKSwgIjxtb2R1bGUgJ2ZvbycgKG5hbWVzcGFjZSk+IikKKworCitjbGFzcyBEeW5hbWljUGF0aGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3RfZHluYW1pY19wYXRoKHNlbGYpOgorICAgICAgICAjIE1ha2Ugc3VyZSBvbmx5ICdmb28ub25lJyBjYW4gYmUgaW1wb3J0ZWQKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKyAgICAgICAgIyBOb3cgbW9kaWZ5IHN5cy5wYXRoCisgICAgICAgIHN5cy5wYXRoLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5yb290LCAncG9ydGlvbjInKSkKKworICAgICAgICAjIEFuZCBtYWtlIHN1cmUgZm9vLnR3byBpcyBub3cgaW1wb3J0YWJsZQorICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50d28uYXR0ciwgJ3BvcnRpb24yIGZvbyB0d28nKQorCisKK2NsYXNzIENvbWJpbmVkTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydib3RoX3BvcnRpb25zJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisKK2NsYXNzIFNlcGFyYXRlZE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnLCAncG9ydGlvbjInXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKworCitjbGFzcyBTZXBhcmF0ZWRPdmVybGFwcGluZ05hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsncG9ydGlvbjEnLCAnYm90aF9wb3J0aW9ucyddCisKKyAgICBkZWYgdGVzdF9maXJzdF9wYXRoX3dpbnMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworICAgIGRlZiB0ZXN0X2ZpcnN0X3BhdGhfd2luc19hZ2FpbihzZWxmKToKKyAgICAgICAgc3lzLnBhdGgucmV2ZXJzZSgpCisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdib3RoX3BvcnRpb25zIGZvbyB0d28nKQorCisgICAgZGVmIHRlc3RfZmlyc3RfcGF0aF93aW5zX2ltcG9ydGluZ19zZWNvbmRfZmlyc3Qoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAnYm90aF9wb3J0aW9ucyBmb28gdHdvJykKKworCitjbGFzcyBTaW5nbGVaaXBOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsndG9wX2xldmVsX3BvcnRpb24xLnppcCddCisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcGFja2FnZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBmb28udHdvCisKKworY2xhc3MgU2VwYXJhdGVkWmlwTmFtZXNwYWNlUGFja2FnZXMoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWyd0b3BfbGV2ZWxfcG9ydGlvbjEuemlwJywgJ3BvcnRpb24yJ10KKworICAgIGRlZiB0ZXN0X2ltcG9ydHMoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3RvcF9sZXZlbF9wb3J0aW9uMS56aXAnLCBmb28ub25lLl9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCcuemlwJywgZm9vLnR3by5fX2ZpbGVfXykKKworCitjbGFzcyBTaW5nbGVOZXN0ZWRaaXBOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbmVzdGVkX3BvcnRpb24xLnppcC9uZXN0ZWRfcG9ydGlvbjEnXQorCisgICAgZGVmIHRlc3Rfc2ltcGxlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIGltcG9ydCBmb28ub25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLm9uZS5hdHRyLCAncG9ydGlvbjEgZm9vIG9uZScpCisKKyAgICBkZWYgdGVzdF9jYW50X2ltcG9ydF9vdGhlcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisKK2NsYXNzIFNlcGFyYXRlZE5lc3RlZFppcE5hbWVzcGFjZVBhY2thZ2VzKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKKyAgICBwYXRocyA9IFsnbmVzdGVkX3BvcnRpb24xLnppcC9uZXN0ZWRfcG9ydGlvbjEnLCAncG9ydGlvbjInXQorCisgICAgZGVmIHRlc3RfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28udHdvLmF0dHIsICdwb3J0aW9uMiBmb28gdHdvJykKKyAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oJ25lc3RlZF9wb3J0aW9uMS56aXAnLCAnbmVzdGVkX3BvcnRpb24xJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihmbiwgZm9vLm9uZS5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignLnppcCcsIGZvby50d28uX19maWxlX18pCisKKworY2xhc3MgTGVnYWN5U3VwcG9ydChOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ25vdF9hX25hbWVzcGFjZV9wa2cnLCAncG9ydGlvbjEnLCAncG9ydGlvbjInLCAnYm90aF9wb3J0aW9ucyddCisKKyAgICBkZWYgdGVzdF9ub25fbmFtZXNwYWNlX3BhY2thZ2VfdGFrZXNfcHJlY2VkZW5jZShzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworICAgICAgICBzZWxmLmFzc2VydEluKCdfX2luaXRfXycsIGZvby5fX2ZpbGVfXykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignbmFtZXNwYWNlJywgc3RyKGZvby5fX2xvYWRlcl9fKS5sb3dlcigpKQorCisKK2NsYXNzIER5bmFtaWNQYXRoQ2FsY3VsYXRpb24oTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydwcm9qZWN0MScsICdwcm9qZWN0MiddCisKKyAgICBkZWYgdGVzdF9wcm9qZWN0M19mYWlscyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC5vbmUuYXR0ciwgJ3BhcmVudCBjaGlsZCBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC50d28uYXR0ciwgJ3BhcmVudCBjaGlsZCB0d28nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50aHJlZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5fX3BhdGhfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHBhcmVudC5jaGlsZC5fX3BhdGhfXyksIDIpCisKKyAgICBkZWYgdGVzdF9wcm9qZWN0M19zdWNjZWVkcyhzZWxmKToKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKyAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50d28KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC5vbmUuYXR0ciwgJ3BhcmVudCBjaGlsZCBvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC50d28uYXR0ciwgJ3BhcmVudCBjaGlsZCB0d28nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IHBhcmVudC5jaGlsZC50aHJlZQorCisgICAgICAgICMgbm93IGFkZCBwcm9qZWN0MworICAgICAgICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucm9vdCwgJ3Byb2plY3QzJykpCisgICAgICAgIGltcG9ydCBwYXJlbnQuY2hpbGQudGhyZWUKKworICAgICAgICAjIHRoZSBwYXRocyBkeW5hbWljYWxseSBnZXQgbG9uZ2VyLCB0byBpbmNsdWRlIHRoZSBuZXcgZGlyZWN0b3JpZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50Ll9fcGF0aF9fKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocGFyZW50LmNoaWxkLl9fcGF0aF9fKSwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcmVudC5jaGlsZC50aHJlZS5hdHRyLCAncGFyZW50IGNoaWxkIHRocmVlJykKKworCitjbGFzcyBaaXBXaXRoTWlzc2luZ0RpcmVjdG9yeShOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ21pc3NpbmdfZGlyZWN0b3J5LnppcCddCisKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfbWlzc2luZ19kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICMgVGhpcyB3aWxsIGZhaWwgYmVjYXVzZSBtaXNzaW5nX2RpcmVjdG9yeS56aXAgY29udGFpbnM6CisgICAgICAgICMgICBMZW5ndGggICAgICBEYXRlICAgIFRpbWUgICAgTmFtZQorICAgICAgICAjIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAtLS0tLSAgIC0tLS0KKyAgICAgICAgIyAgICAgICAgMjkgIDIwMTItMDUtMDMgMTg6MTMgICBmb28vb25lLnB5CisgICAgICAgICMgICAgICAgICAwICAyMDEyLTA1LTAzIDIwOjU3ICAgYmFyLworICAgICAgICAjICAgICAgICAzOCAgMjAxMi0wNS0wMyAyMDo1NyAgIGJhci90d28ucHkKKyAgICAgICAgIyAtLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAtLS0tLS0tCisgICAgICAgICMgICAgICAgIDY3ICAgICAgICAgICAgICAgICAgICAgMyBmaWxlcworCisgICAgICAgICMgQmVjYXVzZSB0aGVyZSBpcyBubyAnZm9vLycsIHRoZSB6aXBpbXBvcnRlciBjdXJyZW50bHkgZG9lc24ndAorICAgICAgICAjICBrbm93IHRoYXQgZm9vIGlzIGEgbmFtZXNwYWNlIHBhY2thZ2UKKworICAgICAgICBpbXBvcnQgZm9vLm9uZQorCisgICAgZGVmIHRlc3RfcHJlc2VudF9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICMgVGhpcyBzdWNjZWVkcyBiZWNhdXNlIHRoZXJlIGlzIGEgImJhci8iIGluIHRoZSB6aXAgZmlsZQorICAgICAgICBpbXBvcnQgYmFyLnR3bworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhci50d28uYXR0ciwgJ21pc3NpbmdfZGlyZWN0b3J5IGZvbyB0d28nKQorCisKK2NsYXNzIE1vZHVsZUFuZE5hbWVzcGFjZVBhY2thZ2VJblNhbWVEaXIoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorICAgIHBhdGhzID0gWydtb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlJ10KKworICAgIGRlZiB0ZXN0X21vZHVsZV9iZWZvcmVfbmFtZXNwYWNlX3BhY2thZ2Uoc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHdlIGZpbmQgdGhlIG1vZHVsZSBpbiBwcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICAjICBuYW1lc3BhY2UgcGFja2FnZS4KKyAgICAgICAgaW1wb3J0IGFfdGVzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFfdGVzdC5hdHRyLCAnaW4gbW9kdWxlJykKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KCpOYW1lc3BhY2VQYWNrYWdlVGVzdC5fX3N1YmNsYXNzZXNfXygpKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQppbmRleCA3MzM1YjIzLi4xOWZiMTBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CkBAIC0xLDQgKzEsNSBAQAogaW1wb3J0IGlvCitpbXBvcnQgc29ja2V0CiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0yNTcsNiArMjU4LDI2IEBACiAgICAgICAgICAgICAjIHZhbHVlCiAgICAgICAgICAgICBzZXRhdHRyKGNscywgbmFtZSwgd3JhcF9tZXRoKG1ldGgpKQogCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnQoc2VsZik6CisgICAgICAgIGRlZiBpc19jb25uZWN0ZWQoKToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlcnZlciwgJ2ZpbGUnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuaGVscCgpCisgICAgICAgICAgICBleGNlcHQgKHNvY2tldC5lcnJvciwgRU9GRXJyb3IpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB3aXRoIHNlbGYuTk5UUF9DTEFTUyhzZWxmLk5OVFBfSE9TVCwgdGltZW91dD1USU1FT1VULCB1c2VuZXRyYz1GYWxzZSkgYXMgc2VydmVyOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2Nvbm5lY3RlZCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5oZWxwKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfY29ubmVjdGVkKCkpCisKKyAgICAgICAgd2l0aCBzZWxmLk5OVFBfQ0xBU1Moc2VsZi5OTlRQX0hPU1QsIHRpbWVvdXQ9VElNRU9VVCwgdXNlbmV0cmM9RmFsc2UpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19jb25uZWN0ZWQoKSkKKworCiBOZXR3b3JrZWROTlRQVGVzdHNNaXhpbi53cmFwX21ldGhvZHMoKQogCiAKQEAgLTg5NCw3ICs5MTUsNyBAQAogCiAgICAgZGVmIF9jaGVja19hcnRpY2xlX2JvZHkoc2VsZiwgbGluZXMpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTFdLmRlY29kZSgndXRmOCcpLCAiLS0gU2lnbmVkIGJ5IEFuZHLDqS4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzWy0xXS5kZWNvZGUoJ3V0Zi04JyksICItLSBTaWduZWQgYnkgQW5kcsOpLiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTJdLCBiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZXNbLTNdLCBiIi5IZXJlIGlzIGEgZG90LXN0YXJ0aW5nIGxpbmUuIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lc1stNF0sIGIiVGhpcyBpcyBqdXN0IGEgdGVzdCBhcnRpY2xlLiIpCkBAIC0xMTMzLDEyICsxMTU0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgc3VjY2Vzc19yZXNwKQogICAgICAgICAjIFdpdGggYW4gaXRlcmFibGUgb2YgdGVybWluYXRlZCBsaW5lcwogICAgICAgICBkZWYgaXRlcmxpbmVzKGIpOgotICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKFRydWUpKQorICAgICAgICAgICAgcmV0dXJuIGl0ZXIoYi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKQogICAgICAgICByZXNwID0gc2VsZi5fY2hlY2tfcG9zdF9paGF2ZV9zdWIoZnVuYywgKmFyZ3MsIGZpbGVfZmFjdG9yeT1pdGVybGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgc3VjY2Vzc19yZXNwKQogICAgICAgICAjIFdpdGggYW4gaXRlcmFibGUgb2Ygbm9uLXRlcm1pbmF0ZWQgbGluZXMKICAgICAgICAgZGVmIGl0ZXJsaW5lcyhiKToKLSAgICAgICAgICAgIHJldHVybiBpdGVyKGIuc3BsaXRsaW5lcyhGYWxzZSkpCisgICAgICAgICAgICByZXR1cm4gaXRlcihiLnNwbGl0bGluZXMoa2VlcGVuZHM9RmFsc2UpKQogICAgICAgICByZXNwID0gc2VsZi5fY2hlY2tfcG9zdF9paGF2ZV9zdWIoZnVuYywgKmFyZ3MsIGZpbGVfZmFjdG9yeT1pdGVybGluZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcCwgc3VjY2Vzc19yZXNwKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CmluZGV4IDY0NjQ5NTAuLjJjOWRhYjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbnRwYXRoLnB5CkBAIC0xLDEwICsxLDExIEBACiBpbXBvcnQgbnRwYXRoCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVGVzdEZhaWxlZAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCi1pbXBvcnQgdW5pdHRlc3QKIAogCiBkZWYgdGVzdGVyKGZuLCB3YW50UmVzdWx0KToKQEAgLTIxLDcgKzIyLDkgQEAKICAgICBmbiA9IGZuLnJlcGxhY2UoJ1siJywgJ1tiIicpCiAgICAgZm4gPSBmbi5yZXBsYWNlKCIsICciLCAiLCBiJyIpCiAgICAgZm4gPSBmbi5yZXBsYWNlKCcsICInLCAnLCBiIicpCi0gICAgZ290UmVzdWx0ID0gZXZhbChmbikKKyAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICBnb3RSZXN1bHQgPSBldmFsKGZuKQogICAgIGlmIGlzaW5zdGFuY2Uod2FudFJlc3VsdCwgc3RyKToKICAgICAgICAgd2FudFJlc3VsdCA9IHdhbnRSZXN1bHQuZW5jb2RlKCdhc2NpaScpCiAgICAgZWxpZiBpc2luc3RhbmNlKHdhbnRSZXN1bHQsIHR1cGxlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weSBiL0xpYi90ZXN0L3Rlc3RfbnVtZXJpY190b3dlci5weQppbmRleCBiZWYzZDRjLi4zNDIzZDRlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X251bWVyaWNfdG93ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9udW1lcmljX3Rvd2VyLnB5CkBAIC0xNTAsNyArMTUwLDcgQEAKICAgICAgICAgIyBpbnQsIGZsb2F0LCBGcmFjdGlvbiwgRGVjaW1hbAogICAgICAgICB0ZXN0X3ZhbHVlcyA9IFsKICAgICAgICAgICAgIGZsb2F0KCctaW5mJyksCi0gICAgICAgICAgICBEKCctMWU5OTk5OTk5OTknKSwKKyAgICAgICAgICAgIEQoJy0xZTQyNTAwMDAwMCcpLAogICAgICAgICAgICAgLTFlMzA4LAogICAgICAgICAgICAgRigtMjIsIDcpLAogICAgICAgICAgICAgLTMuMTQsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQppbmRleCA3Yjk1NjEyLi43OGRlMjc4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKQEAgLTMxOCw2ICszMTgsMjIgQEAKICAgICAgICAgICAgIFsiLWIiXSwgeydhY3Rpb24nOiAnc3RvcmUnLAogICAgICAgICAgICAgICAgICAgICAgJ2NhbGxiYWNrX2t3YXJncyc6ICdmb28nfSkKIAorICAgIGRlZiB0ZXN0X25vX3NpbmdsZV9kYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE9wdGlvbkVycm9yKAorICAgICAgICAgICAgImludmFsaWQgbG9uZyBvcHRpb24gc3RyaW5nICctZGVidWcnOiAiCisgICAgICAgICAgICAibXVzdCBzdGFydCB3aXRoIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIsCisgICAgICAgICAgICBbIi1kZWJ1ZyJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0T3B0aW9uRXJyb3IoCisgICAgICAgICAgICAib3B0aW9uIC1kOiBpbnZhbGlkIGxvbmcgb3B0aW9uIHN0cmluZyAnLWRlYnVnJzogbXVzdCBzdGFydCB3aXRoIgorICAgICAgICAgICAgIiAtLSwgZm9sbG93ZWQgYnkgbm9uLWRhc2giLAorICAgICAgICAgICAgWyItZCIsICItZGVidWciXSkKKworICAgICAgICBzZWxmLmFzc2VydE9wdGlvbkVycm9yKAorICAgICAgICAgICAgImludmFsaWQgbG9uZyBvcHRpb24gc3RyaW5nICctZGVidWcnOiAiCisgICAgICAgICAgICAibXVzdCBzdGFydCB3aXRoIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIsCisgICAgICAgICAgICBbIi1kZWJ1ZyIsICItLWRlYnVnIl0pCisKIGNsYXNzIFRlc3RPcHRpb25QYXJzZXIoQmFzZVRlc3QpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5wYXJzZXIgPSBPcHRpb25QYXJzZXIoKQpAQCAtNjMxLDcgKzY0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbl9saXN0PW9wdGlvbnMpCiAKICAgICBkZWYgdGVzdF9yZXF1aXJlZF92YWx1ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRQYXJzZUZhaWwoWyItYSJdLCAiLWEgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IikKKyAgICAgICAgc2VsZi5hc3NlcnRQYXJzZUZhaWwoWyItYSJdLCAiLWEgb3B0aW9uIHJlcXVpcmVzIDEgYXJndW1lbnQiKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9pbnRlZ2VyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFBhcnNlRmFpbChbIi1iIiwgIjV4Il0sCkBAIC0xMDIzLDcgKzEwMzksNyBAQAogICAgICAgICBUWVBFX0NIRUNLRVJbImZpbGUiXSA9IGNoZWNrX2ZpbGUKIAogICAgIGRlZiB0ZXN0X2ZpbGV0eXBlX29rKHNlbGYpOgotICAgICAgICBvcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpLmNsb3NlKCkKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKICAgICAgICAgc2VsZi5hc3NlcnRQYXJzZU9LKFsiLS1maWxlIiwgc3VwcG9ydC5URVNURk4sICItYWZvbyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeydmaWxlJzogc3VwcG9ydC5URVNURk4sICdhJzogJ2Zvbyd9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zLnB5IGIvTGliL3Rlc3QvdGVzdF9vcy5weQppbmRleCBlZjE0NzMzLi43ZDZiMzc3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3MucHkKQEAgLTE0LDIwICsxNCw0MCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IG1tYXAKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHJlCiBpbXBvcnQgdXVpZAoraW1wb3J0IGFzeW5jb3JlCitpbXBvcnQgYXN5bmNoYXQKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBzdGF0CitpbXBvcnQgbG9jYWxlCitpbXBvcnQgY29kZWNzCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCiAKK3dpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICBvcy5zdGF0X2Zsb2F0X3RpbWVzKFRydWUpCitzdCA9IG9zLnN0YXQoX19maWxlX18pCitzdGF0X3N1cHBvcnRzX3N1YnNlY29uZCA9ICgKKyAgICAjIGNoZWNrIGlmIGZsb2F0IGFuZCBpbnQgdGltZXN0YW1wcyBhcmUgZGlmZmVyZW50CisgICAgKHN0LnN0X2F0aW1lICE9IHN0WzddKQorICAgIG9yIChzdC5zdF9tdGltZSAhPSBzdFs4XSkKKyAgICBvciAoc3Quc3RfY3RpbWUgIT0gc3RbOV0pKQorCiAjIERldGVjdCB3aGV0aGVyIHdlJ3JlIG9uIGEgTGludXggc3lzdGVtIHRoYXQgdXNlcyB0aGUgKG5vdyBvdXRkYXRlZAogIyBhbmQgdW5tYWludGFpbmVkKSBsaW51eHRocmVhZHMgdGhyZWFkaW5nIGxpYnJhcnkuICBUaGVyZSdzIGFuIGlzc3VlCiAjIHdoZW4gY29tYmluaW5nIGxpbnV4dGhyZWFkcyB3aXRoIGEgZmFpbGVkIGV4ZWN2IGNhbGw6IHNlZQogIyBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNDk3MC4KLWlmIChoYXNhdHRyKG9zLCAiY29uZnN0cl9uYW1lcyIpIGFuZAotICAgICJDU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OIiBpbiBvcy5jb25mc3RyX25hbWVzKToKLSAgICBsaWJwdGhyZWFkID0gb3MuY29uZnN0cigiQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiIpCi0gICAgVVNJTkdfTElOVVhUSFJFQURTPSBsaWJwdGhyZWFkLnN0YXJ0c3dpdGgoImxpbnV4dGhyZWFkcyIpCitpZiBoYXNhdHRyKHN5cywgJ3RocmVhZF9pbmZvJykgYW5kIHN5cy50aHJlYWRfaW5mby52ZXJzaW9uOgorICAgIFVTSU5HX0xJTlVYVEhSRUFEUyA9IHN5cy50aHJlYWRfaW5mby52ZXJzaW9uLnN0YXJ0c3dpdGgoImxpbnV4dGhyZWFkcyIpCiBlbHNlOgotICAgIFVTSU5HX0xJTlVYVEhSRUFEUz0gRmFsc2UKKyAgICBVU0lOR19MSU5VWFRIUkVBRFMgPSBGYWxzZQogCiAjIFRlc3RzIGNyZWF0aW5nIFRFU1RGTgogY2xhc3MgRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyNCw2ICsxNDQsMTggQEAKICAgICAgICAgc2VsZi5mZG9wZW5faGVscGVyKCdyJykKICAgICAgICAgc2VsZi5mZG9wZW5faGVscGVyKCdyJywgMTAwKQogCisgICAgZGVmIHRlc3RfcmVwbGFjZShzZWxmKToKKyAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIi4yIgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoIjEiKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiMiIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIFRFU1RGTjIpCisgICAgICAgIG9zLnJlcGxhY2Uoc3VwcG9ydC5URVNURk4sIFRFU1RGTjIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEZpbGVOb3RGb3VuZEVycm9yLCBvcy5zdGF0LCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICIxIikKKwogCiAjIFRlc3QgYXR0cmlidXRlcyBvbiByZXR1cm4gdmFsdWVzIGZyb20gb3MuKnN0YXQqIGZhbWlseS4KIGNsYXNzIFN0YXRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xNDIsNyArMTc0LDYgQEAKICAgICAgICAgaWYgbm90IGhhc2F0dHIob3MsICJzdGF0Iik6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpbXBvcnQgc3RhdAogICAgICAgICByZXN1bHQgPSBvcy5zdGF0KGZuYW1lKQogCiAgICAgICAgICMgTWFrZSBzdXJlIGRpcmVjdCBhY2Nlc3Mgd29ya3MKQEAgLTE2Miw2ICsxOTMsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRbZ2V0YXR0cihzdGF0LCBuYW1lKV0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBtZW1iZXJzKQogCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIHN0Xz90aW1lIGFuZCBzdF8/dGltZV9ucyBmaWVsZHMgcm91Z2hseSBhZ3JlZQorICAgICAgICAjICh0aGV5IHNob3VsZCBhbHdheXMgYWdyZWUgdXAgdG8gYXJvdW5kIHRlbnMtb2YtbWljcm9zZWNvbmRzKQorICAgICAgICBmb3IgbmFtZSBpbiAnc3RfYXRpbWUgc3RfbXRpbWUgc3RfY3RpbWUnLnNwbGl0KCk6CisgICAgICAgICAgICBmbG9hdHkgPSBpbnQoZ2V0YXR0cihyZXN1bHQsIG5hbWUpICogMTAwMDAwKQorICAgICAgICAgICAgbmFub3NlY29uZHkgPSBnZXRhdHRyKHJlc3VsdCwgbmFtZSArICJfbnMiKSAvLyAxMDAwMAorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdHksIG5hbm9zZWNvbmR5LCBkZWx0YT0yKQorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdFsyMDBdCiAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIGV4Y2VwdGlvbiB0aHJvd24iKQpAQCAtMjA4LDcgKzI0Niw5IEBACiAgICAgICAgICAgICBmbmFtZSA9IHNlbGYuZm5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBlbmNvZGUgJWEgZm9yIHRoZSBmaWxlc3lzdGVtIiAlIHNlbGYuZm5hbWUpCi0gICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQogCiAgICAgZGVmIHRlc3Rfc3RhdHZmc19hdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgInN0YXR2ZnMiKToKQEAgLTI2NSw2ICszMDUsMTQzIEBACiAgICAgICAgIHN0MiA9IG9zLnN0YXQoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3QyLnN0X210aW1lLCBpbnQoc3Quc3RfbXRpbWUtZGVsdGEpKQogCisgICAgZGVmIF90ZXN0X3V0aW1lKHNlbGYsIGZpbGVuYW1lLCBhdHRyLCB1dGltZSwgZGVsdGEpOgorICAgICAgICAjIElzc3VlICMxMzMyNyByZW1vdmVkIHRoZSByZXF1aXJlbWVudCB0byBwYXNzIE5vbmUgYXMgdGhlCisgICAgICAgICMgc2Vjb25kIGFyZ3VtZW50LiBDaGVjayB0aGF0IHRoZSBwcmV2aW91cyBtZXRob2RzIG9mIHBhc3NpbmcKKyAgICAgICAgIyBhIHRpbWUgdHVwbGUgb3IgTm9uZSB3b3JrIGluIGFkZGl0aW9uIHRvIG5vIGFyZ3VtZW50LgorICAgICAgICBzdDAgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICAjIERvZXNuJ3Qgc2V0IGFueXRoaW5nIG5ldywgYnV0IHNldHMgdGhlIHRpbWUgdHVwbGUgd2F5CisgICAgICAgIHV0aW1lKGZpbGVuYW1lLCAoYXR0cihzdDAsICJzdF9hdGltZSIpLCBhdHRyKHN0MCwgInN0X210aW1lIikpKQorICAgICAgICAjIFNldHRpbmcgdGhlIHRpbWUgdG8gdGhlIHRpbWUgeW91IGp1c3QgcmVhZCwgdGhlbiByZWFkaW5nIGFnYWluLAorICAgICAgICAjIHNob3VsZCBhbHdheXMgcmV0dXJuIGV4YWN0bHkgdGhlIHNhbWUgdGltZXMuCisgICAgICAgIHN0MSA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cihzdDAsICJzdF9tdGltZSIpLCBhdHRyKHN0MSwgInN0X210aW1lIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cihzdDAsICJzdF9hdGltZSIpLCBhdHRyKHN0MSwgInN0X2F0aW1lIikpCisgICAgICAgICMgU2V0IHRvIHRoZSBjdXJyZW50IHRpbWUgaW4gdGhlIG9sZCBleHBsaWNpdCB3YXkuCisgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lLCBOb25lKQorICAgICAgICBzdDIgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAjIFNldCB0byB0aGUgY3VycmVudCB0aW1lIGluIHRoZSBuZXcgd2F5CisgICAgICAgIG9zLnV0aW1lKGZpbGVuYW1lKQorICAgICAgICBzdDMgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGF0dHIoc3QyLCAic3RfbXRpbWUiKSwgYXR0cihzdDMsICJzdF9tdGltZSIpLCBkZWx0YT1kZWx0YSkKKworICAgIGRlZiB0ZXN0X3V0aW1lKHNlbGYpOgorICAgICAgICBkZWYgdXRpbWUoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgcmV0dXJuIG9zLnV0aW1lKGZpbGUsIHRpbWVzKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lKHNlbGYuZm5hbWUsIGdldGF0dHIsIHV0aW1lLCAxMCkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZShzdXBwb3J0LlRFU1RGTiwgZ2V0YXR0ciwgdXRpbWUsIDEwKQorCisKKyAgICBkZWYgX3Rlc3RfdXRpbWVfbnMoc2VsZiwgc2V0X3RpbWVzX25zLCB0ZXN0X2Rpcj1UcnVlKToKKyAgICAgICAgZGVmIGdldGF0dHJfbnMobywgYXR0cik6CisgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihvLCBhdHRyICsgIl9ucyIpCisgICAgICAgIHRlbl9zID0gMTAgKiAxMDAwICogMTAwMCAqIDEwMDAKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZShzZWxmLmZuYW1lLCBnZXRhdHRyX25zLCBzZXRfdGltZXNfbnMsIHRlbl9zKQorICAgICAgICBpZiB0ZXN0X2RpcjoKKyAgICAgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWUoc3VwcG9ydC5URVNURk4sIGdldGF0dHJfbnMsIHNldF90aW1lc19ucywgdGVuX3MpCisKKyAgICBkZWYgdGVzdF91dGltZV9ucyhzZWxmKToKKyAgICAgICAgZGVmIHV0aW1lX25zKGZpbGUsIHRpbWVzKToKKyAgICAgICAgICAgIHJldHVybiBvcy51dGltZShmaWxlLCBucz10aW1lcykKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyh1dGltZV9ucykKKworICAgIHJlcXVpcmVzX3V0aW1lX2Rpcl9mZCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisgICAgcmVxdWlyZXNfdXRpbWVfZmQgPSB1bml0dGVzdC5za2lwVW5sZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZkIHN1cHBvcnQgZm9yIHV0aW1lIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuIikKKyAgICByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyBzdXBwb3J0IGZvciB1dGltZSByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LiIpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MKKyAgICBkZWYgdGVzdF9sdXRpbWVzX25zKHNlbGYpOgorICAgICAgICBkZWYgbHV0aW1lc19ucyhmaWxlLCB0aW1lcyk6CisgICAgICAgICAgICByZXR1cm4gb3MudXRpbWUoZmlsZSwgbnM9dGltZXMsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9ucyhsdXRpbWVzX25zKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lc19ucyhzZWxmKToKKyAgICAgICAgZGVmIGZ1dGltZXNfbnMoZmlsZSwgdGltZXMpOgorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgb3MudXRpbWUoZi5maWxlbm8oKSwgbnM9dGltZXMpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfbnMoZnV0aW1lc19ucywgdGVzdF9kaXI9RmFsc2UpCisKKyAgICBkZWYgX3V0aW1lX2ludmFsaWRfYXJndW1lbnRzKHNlbGYsIG5hbWUsIGFyZyk6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBnZXRhdHRyKG9zLCBuYW1lKShhcmcsICg1LCA1KSwgbnM9KDUsIDUpKQorCisgICAgZGVmIHRlc3RfdXRpbWVfaW52YWxpZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIHNlbGYuX3V0aW1lX2ludmFsaWRfYXJndW1lbnRzKCd1dGltZScsIHNlbGYuZm5hbWUpCisKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN0YXRfc3VwcG9ydHNfc3Vic2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICJvcy5zdGF0KCkgZG9lc24ndCBoYXMgYSBzdWJzZWNvbmQgcmVzb2x1dGlvbiIpCisgICAgZGVmIF90ZXN0X3V0aW1lX3N1YnNlY29uZChzZWxmLCBzZXRfdGltZV9mdW5jKToKKyAgICAgICAgYXNlYywgYW1zZWMgPSAxLCA5MDEKKyAgICAgICAgYXRpbWUgPSBhc2VjICsgYW1zZWMgKiAxZS0zCisgICAgICAgIG1zZWMsIG1tc2VjID0gMiwgOTAxCisgICAgICAgIG10aW1lID0gbXNlYyArIG1tc2VjICogMWUtMworICAgICAgICBmaWxlbmFtZSA9IHNlbGYuZm5hbWUKKyAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsICgwLCAwKSkKKyAgICAgICAgc2V0X3RpbWVfZnVuYyhmaWxlbmFtZSwgYXRpbWUsIG10aW1lKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIG9zLnN0YXRfZmxvYXRfdGltZXMoVHJ1ZSkKKyAgICAgICAgc3QgPSBvcy5zdGF0KGZpbGVuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKHN0LnN0X2F0aW1lLCBhdGltZSwgcGxhY2VzPTMpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc3Quc3RfbXRpbWUsIG10aW1lLCBwbGFjZXM9MykKKworICAgIGRlZiB0ZXN0X3V0aW1lX3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgb3MudXRpbWUoZmlsZW5hbWUsIChhdGltZSwgbXRpbWUpKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9mZAorICAgIGRlZiB0ZXN0X2Z1dGltZXNfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgb3MudXRpbWUoZi5maWxlbm8oKSwgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2ZkCisgICAgZGVmIHRlc3RfZnV0aW1lbnNfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgb3MudXRpbWUoZi5maWxlbm8oKSwgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCisgICAgQHJlcXVpcmVzX3V0aW1lX2Rpcl9mZAorICAgIGRlZiB0ZXN0X2Z1dGltZXNhdF9zdWJzZWNvbmQoc2VsZik6CisgICAgICAgIGRlZiBzZXRfdGltZShmaWxlbmFtZSwgYXRpbWUsIG10aW1lKToKKyAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUoZmlsZW5hbWUpCisgICAgICAgICAgICBkaXJmZCA9IG9zLm9wZW4oZGlybmFtZSwgb3MuT19SRE9OTFkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MudXRpbWUob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSksIGRpcl9mZD1kaXJmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXM9KGF0aW1lLCBtdGltZSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG9zLmNsb3NlKGRpcmZkKQorICAgICAgICBzZWxmLl90ZXN0X3V0aW1lX3N1YnNlY29uZChzZXRfdGltZSkKKworICAgIEByZXF1aXJlc191dGltZV9ub2ZvbGxvd19zeW1saW5rcworICAgIGRlZiB0ZXN0X2x1dGltZXNfc3Vic2Vjb25kKHNlbGYpOgorICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIGF0aW1lLCBtdGltZSk6CisgICAgICAgICAgICBvcy51dGltZShmaWxlbmFtZSwgKGF0aW1lLCBtdGltZSksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5fdGVzdF91dGltZV9zdWJzZWNvbmQoc2V0X3RpbWUpCisKKyAgICBAcmVxdWlyZXNfdXRpbWVfZGlyX2ZkCisgICAgZGVmIHRlc3RfdXRpbWVuc2F0X3N1YnNlY29uZChzZWxmKToKKyAgICAgICAgZGVmIHNldF90aW1lKGZpbGVuYW1lLCBhdGltZSwgbXRpbWUpOgorICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGlybmFtZShmaWxlbmFtZSkKKyAgICAgICAgICAgIGRpcmZkID0gb3Mub3BlbihkaXJuYW1lLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy51dGltZShvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKSwgZGlyX2ZkPWRpcmZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcz0oYXRpbWUsIG10aW1lKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2xvc2UoZGlyZmQpCisgICAgICAgIHNlbGYuX3Rlc3RfdXRpbWVfc3Vic2Vjb25kKHNldF90aW1lKQorCiAgICAgIyBSZXN0cmljdCB0ZXN0IHRvIFdpbjMyLCBzaW5jZSB0aGVyZSBpcyBubyBndWFyYW50ZWUgb3RoZXIKICAgICAjIHN5c3RlbXMgc3VwcG9ydCBjZW50aXNlY29uZHMKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKQEAgLTI5Niw2ICs0NzMsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJDb3VsZCBub3Qgc3RhdCBwYWdlZmlsZS5zeXMiKQogCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwaXBlIiksICJyZXF1aXJlcyBvcy5waXBlKCkiKQorICAgICAgICBkZWYgdGVzdF8xNTI2MShzZWxmKToKKyAgICAgICAgICAgICMgVmVyaWZ5IHRoYXQgc3RhdCdpbmcgYSBjbG9zZWQgZmQgZG9lcyBub3QgY2F1c2UgY3Jhc2gKKyAgICAgICAgICAgIHIsIHcgPSBvcy5waXBlKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHIpICAgICAgICAgICMgc2hvdWxkIG5vdCByYWlzZSBlcnJvcgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICAgICAgICAgIG9zLmNsb3NlKHcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGN0eDoKKyAgICAgICAgICAgICAgICBvcy5zdGF0KHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorCiBmcm9tIHRlc3QgaW1wb3J0IG1hcHBpbmdfdGVzdHMKIAogY2xhc3MgRW52aXJvblRlc3RzKG1hcHBpbmdfdGVzdHMuQmFzaWNUZXN0TWFwcGluZ1Byb3RvY29sKToKQEAgLTMyNCwyMyArNTE0LDIzIEBACiAgICAgICAgIHJldHVybiBvcy5lbnZpcm9uCiAKICAgICAjIEJ1ZyAxMTEwNDc4CisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucGF0aC5leGlzdHMoJy9iaW4vc2gnKSwgJ3JlcXVpcmVzIC9iaW4vc2gnKQogICAgIGRlZiB0ZXN0X3VwZGF0ZTIoc2VsZik6CiAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cygiL2Jpbi9zaCIpOgotICAgICAgICAgICAgb3MuZW52aXJvbi51cGRhdGUoSEVMTE89IldvcmxkIikKLSAgICAgICAgICAgIHdpdGggb3MucG9wZW4oIi9iaW4vc2ggLWMgJ2VjaG8gJEhFTExPJyIpIGFzIHBvcGVuOgotICAgICAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCAiV29ybGQiKQorICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQorICAgICAgICB3aXRoIG9zLnBvcGVuKCIvYmluL3NoIC1jICdlY2hvICRIRUxMTyciKSBhcyBwb3BlbjoKKyAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCiAgICAgZGVmIHRlc3Rfb3NfcG9wZW5faXRlcihzZWxmKToKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIi9iaW4vc2giKToKLSAgICAgICAgICAgIHdpdGggb3MucG9wZW4oCi0gICAgICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46Ci0gICAgICAgICAgICAgICAgaXQgPSBpdGVyKHBvcGVuKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChpdCksICJsaW5lMVxuIikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0KSwgImxpbmUzXG4iKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG5leHQsIGl0KQorICAgICAgICB3aXRoIG9zLnBvcGVuKAorICAgICAgICAgICAgIi9iaW4vc2ggLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIikgYXMgcG9wZW46CisgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTFcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTNcbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKIAogICAgICMgVmVyaWZ5IGVudmlyb24ga2V5cyBhbmQgdmFsdWVzIGZyb20gdGhlIE9TIGFyZSBvZiB0aGUKICAgICAjIGNvcnJlY3Qgc3RyIHR5cGUuCkBAIC00MjcsOCArNjE3LDggQEAKIAogICAgICMgT24gRnJlZUJTRCA8IDcgYW5kIE9TIFggPCAxMC42LCB1bnNldGVudigpIGRvZXNuJ3QgcmV0dXJuIGEgdmFsdWUgKGlzc3VlCiAgICAgIyAjMTM0MTUpLgotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdmcmVlYnNkJywgJ2RhcndpbicpKSwKLSAgICAgICAgICAgICAgICAgICAgICJkdWUgdG8ga25vd24gT1MgYnVnOiBzZWUgaXNzdWUgIzEzNDE1IikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19mcmVlYnNkX3ZlcnNpb24oNykKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19tYWNfdmVyKDEwLCA2KQogICAgIGRlZiB0ZXN0X3Vuc2V0X2Vycm9yKHNlbGYpOgogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICAgICAgICAgICMgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbGltaXRlZCB0byAzMiw3NjcgY2hhcmFjdGVycwpAQCAtNDQyLDcgKzYzMiw3IEBACiBjbGFzcyBXYWxrVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3RzIGZvciBvcy53YWxrKCkuIiIiCiAKLSAgICBkZWYgdGVzdF90cmF2ZXJzYWwoc2VsZik6CisgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgZnJvbSBvcy5wYXRoIGltcG9ydCBqb2luCiAKQEAgLTQ1Niw2ICs2NDYsNyBAQAogICAgICAgICAjICAgICAgICAgU1VCMi8gICAgICAgICAgICAgYSBmaWxlIGtpZCBhbmQgYSBkaXJzeW1saW5rIGtpZAogICAgICAgICAjICAgICAgICAgICB0bXAzCiAgICAgICAgICMgICAgICAgICAgIGxpbmsvICAgICAgICAgICBhIHN5bWxpbmsgdG8gVEVTVEZOLjIKKyAgICAgICAgIyAgICAgICAgICAgYnJva2VuX2xpbmsKICAgICAgICAgIyAgICAgICBURVNUMi8KICAgICAgICAgIyAgICAgICAgIHRtcDQgICAgICAgICAgICAgIGEgbG9uZSBmaWxlCiAgICAgICAgIHdhbGtfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMSIpCkBAIC00NjgsNiArNjU5LDggQEAKICAgICAgICAgbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKICAgICAgICAgdDJfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIpCiAgICAgICAgIHRtcDRfcGF0aCA9IGpvaW4oc3VwcG9ydC5URVNURk4sICJURVNUMiIsICJ0bXA0IikKKyAgICAgICAgbGlua19wYXRoID0gam9pbihzdWIyX3BhdGgsICJsaW5rIikKKyAgICAgICAgYnJva2VuX2xpbmtfcGF0aCA9IGpvaW4oc3ViMl9wYXRoLCAiYnJva2VuX2xpbmsiKQogCiAgICAgICAgICMgQ3JlYXRlIHN0dWZmLgogICAgICAgICBvcy5tYWtlZGlycyhzdWIxMV9wYXRoKQpAQCAtNDg0LDcgKzY3Nyw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHN5bWxpbmtfdG9fZGlyID0gb3Muc3ltbGluawogICAgICAgICAgICAgc3ltbGlua190b19kaXIob3MucGF0aC5hYnNwYXRoKHQyX3BhdGgpLCBsaW5rX3BhdGgpCi0gICAgICAgICAgICBzdWIyX3RyZWUgPSAoc3ViMl9wYXRoLCBbImxpbmsiXSwgWyJ0bXAzIl0pCisgICAgICAgICAgICBzeW1saW5rX3RvX2RpcignYnJva2VuJywgYnJva2VuX2xpbmtfcGF0aCkKKyAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFsibGluayJdLCBbImJyb2tlbl9saW5rIiwgInRtcDMiXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHN1YjJfdHJlZSA9IChzdWIyX3BhdGgsIFtdLCBbInRtcDMiXSkKIApAQCAtNDk2LDYgKzY5MCw3IEBACiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBURVNURk4sIFNVQjIsIFNVQjEsIFNVQjExCiAgICAgICAgIGZsaXBwZWQgPSBhbGxbMF1bMV1bMF0gIT0gIlNVQjEiCiAgICAgICAgIGFsbFswXVsxXS5zb3J0KCkKKyAgICAgICAgYWxsWzMgLSAyICogZmxpcHBlZF1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwgKHdhbGtfcGF0aCwgWyJTVUIxIiwgIlNVQjIiXSwgWyJ0bXAxIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsxICsgZmxpcHBlZF0sIChzdWIxX3BhdGgsIFsiU1VCMTEiXSwgWyJ0bXAyIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsyICsgZmxpcHBlZF0sIChzdWIxMV9wYXRoLCBbXSwgW10pKQpAQCAtNTExLDYgKzcwNiw3IEBACiAgICAgICAgICAgICAgICAgZGlycy5yZW1vdmUoJ1NVQjEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbGwpLCAyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFswXSwgKHdhbGtfcGF0aCwgWyJTVUIyIl0sIFsidG1wMSJdKSkKKyAgICAgICAgYWxsWzFdWy0xXS5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMV0sIHN1YjJfdHJlZSkKIAogICAgICAgICAjIFdhbGsgYm90dG9tLXVwLgpAQCAtNTIxLDYgKzcxNyw3IEBACiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBTVUIyLCBTVUIxMSwgU1VCMSwgVEVTVEZOCiAgICAgICAgIGZsaXBwZWQgPSBhbGxbM11bMV1bMF0gIT0gIlNVQjEiCiAgICAgICAgIGFsbFszXVsxXS5zb3J0KCkKKyAgICAgICAgYWxsWzIgLSAyICogZmxpcHBlZF1bLTFdLnNvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFszXSwgKHdhbGtfcGF0aCwgWyJTVUIxIiwgIlNVQjIiXSwgWyJ0bXAxIl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFtmbGlwcGVkXSwgKHN1YjExX3BhdGgsIFtdLCBbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsW2ZsaXBwZWQgKyAxXSwgKHN1YjFfcGF0aCwgWyJTVUIxMSJdLCBbInRtcDIiXSkpCkBAIC01NTIsNiArNzQ5LDgyIEBACiAgICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkaXJuYW1lKQogICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKIAorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZndhbGsnKSwgIlRlc3QgbmVlZHMgb3MuZndhbGsoKSIpCitjbGFzcyBGd2Fsa1Rlc3RzKFdhbGtUZXN0cyk6CisgICAgIiIiVGVzdHMgZm9yIG9zLmZ3YWxrKCkuIiIiCisKKyAgICBkZWYgX2NvbXBhcmVfdG9fd2FsayhzZWxmLCB3YWxrX2t3YXJncywgZndhbGtfa3dhcmdzKToKKyAgICAgICAgIiIiCisgICAgICAgIGNvbXBhcmUgd2l0aCB3YWxrKCkgcmVzdWx0cy4KKyAgICAgICAgIiIiCisgICAgICAgIHdhbGtfa3dhcmdzID0gd2Fsa19rd2FyZ3MuY29weSgpCisgICAgICAgIGZ3YWxrX2t3YXJncyA9IGZ3YWxrX2t3YXJncy5jb3B5KCkKKyAgICAgICAgZm9yIHRvcGRvd24sIGZvbGxvd19zeW1saW5rcyBpbiBpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCByZXBlYXQ9Mik6CisgICAgICAgICAgICB3YWxrX2t3YXJncy51cGRhdGUodG9wZG93bj10b3Bkb3duLCBmb2xsb3dsaW5rcz1mb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBmd2Fsa19rd2FyZ3MudXBkYXRlKHRvcGRvd249dG9wZG93biwgZm9sbG93X3N5bWxpbmtzPWZvbGxvd19zeW1saW5rcykKKworICAgICAgICAgICAgZXhwZWN0ZWQgPSB7fQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoKip3YWxrX2t3YXJncyk6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRbcm9vdF0gPSAoc2V0KGRpcnMpLCBzZXQoZmlsZXMpKQorCisgICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMsIHJvb3RmZCBpbiBvcy5md2FsaygqKmZ3YWxrX2t3YXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyb290LCBleHBlY3RlZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkW3Jvb3RdLCAoc2V0KGRpcnMpLCBzZXQoZmlsZXMpKSkKKworICAgIGRlZiB0ZXN0X2NvbXBhcmVfdG9fd2FsayhzZWxmKToKKyAgICAgICAga3dhcmdzID0geyd0b3AnOiBzdXBwb3J0LlRFU1RGTn0KKyAgICAgICAgc2VsZi5fY29tcGFyZV90b193YWxrKGt3YXJncywga3dhcmdzKQorCisgICAgZGVmIHRlc3RfZGlyX2ZkKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmZCA9IG9zLm9wZW4oIi4iLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHdhbGtfa3dhcmdzID0geyd0b3AnOiBzdXBwb3J0LlRFU1RGTn0KKyAgICAgICAgICAgIGZ3YWxrX2t3YXJncyA9IHdhbGtfa3dhcmdzLmNvcHkoKQorICAgICAgICAgICAgZndhbGtfa3dhcmdzWydkaXJfZmQnXSA9IGZkCisgICAgICAgICAgICBzZWxmLl9jb21wYXJlX3RvX3dhbGsod2Fsa19rd2FyZ3MsIGZ3YWxrX2t3YXJncykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIHRlc3RfeWllbGRzX2NvcnJlY3RfZGlyX2ZkKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHJldHVybmVkIGZpbGUgZGVzY3JpcHRvcnMKKyAgICAgICAgZm9yIHRvcGRvd24sIGZvbGxvd19zeW1saW5rcyBpbiBpdGVydG9vbHMucHJvZHVjdCgoVHJ1ZSwgRmFsc2UpLCByZXBlYXQ9Mik6CisgICAgICAgICAgICBhcmdzID0gc3VwcG9ydC5URVNURk4sIHRvcGRvd24sIE5vbmUKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKCphcmdzLCBmb2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRoYXQgdGhlIEZEIGlzIHZhbGlkCisgICAgICAgICAgICAgICAgb3MuZnN0YXQocm9vdGZkKQorICAgICAgICAgICAgICAgICMgcmVkdW5kYW50IGNoZWNrCisgICAgICAgICAgICAgICAgb3Muc3RhdChyb290ZmQpCisgICAgICAgICAgICAgICAgIyBjaGVjayB0aGF0IGxpc3RkaXIoKSByZXR1cm5zIGNvbnNpc3RlbnQgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChvcy5saXN0ZGlyKHJvb3RmZCkpLCBzZXQoZGlycykgfCBzZXQoZmlsZXMpKQorCisgICAgZGVmIHRlc3RfZmRfbGVhayhzZWxmKToKKyAgICAgICAgIyBTaW5jZSB3ZSdyZSBvcGVuaW5nIGEgbG90IG9mIEZEcywgd2UgbXVzdCBiZSBjYXJlZnVsIHRvIGF2b2lkIGxlYWtzOgorICAgICAgICAjIHdlIGJvdGggY2hlY2sgdGhhdCBjYWxsaW5nIGZ3YWxrKCkgYSBsYXJnZSBudW1iZXIgb2YgdGltZXMgZG9lc24ndAorICAgICAgICAjIHlpZWxkIEVNRklMRSwgYW5kIHRoYXQgdGhlIG1pbmltdW0gYWxsb2NhdGVkIEZEIGhhc24ndCBjaGFuZ2VkLgorICAgICAgICBtaW5mZCA9IG9zLmR1cCgxKQorICAgICAgICBvcy5jbG9zZShtaW5mZCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMjU2KToKKyAgICAgICAgICAgIGZvciB4IGluIG9zLmZ3YWxrKHN1cHBvcnQuVEVTVEZOKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIG5ld2ZkID0gb3MuZHVwKDEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgbmV3ZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZmQsIG1pbmZkKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzLCByb290ZmQgaW4gb3MuZndhbGsoc3VwcG9ydC5URVNURk4sIHRvcGRvd249RmFsc2UpOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKG5hbWUsIGRpcl9mZD1yb290ZmQpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBkaXJzOgorICAgICAgICAgICAgICAgIHN0ID0gb3Muc3RhdChuYW1lLCBkaXJfZmQ9cm9vdGZkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgICAgICAgICAgaWYgc3RhdC5TX0lTRElSKHN0LnN0X21vZGUpOgorICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQorICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKKworCiBjbGFzcyBNYWtlZGlyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgb3MubWtkaXIoc3VwcG9ydC5URVNURk4pCkBAIC01NzUsMTQgKzg0OCwxMiBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCAnZGlyMScpCiAgICAgICAgIG1vZGUgPSAwbzc3NwogICAgICAgICBvbGRfbWFzayA9IG9zLnVtYXNrKDBvMDIyKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgbW9kZSwgZXhpc3Rfb2s9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5tYWtlZGlycywgcGF0aCwgMG83NzYsIGV4aXN0X29rPVRydWUpCi0gICAgICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlPW1vZGUsIGV4aXN0X29rPVRydWUpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy51bWFzayhvbGRfbWFzaykKKyAgICAgICAgb3MubWFrZWRpcnMocGF0aCwgbW9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIG1vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1ha2VkaXJzLCBwYXRoLCBtb2RlLCBleGlzdF9vaz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubWFrZWRpcnMsIHBhdGgsIDBvNzc2LCBleGlzdF9vaz1UcnVlKQorICAgICAgICBvcy5tYWtlZGlycyhwYXRoLCBtb2RlPW1vZGUsIGV4aXN0X29rPVRydWUpCisgICAgICAgIG9zLnVtYXNrKG9sZF9tYXNrKQogCiAgICAgZGVmIHRlc3RfZXhpc3Rfb2tfc19pc2dpZF9kaXJlY3Rvcnkoc2VsZik6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oc3VwcG9ydC5URVNURk4sICdkaXIxJykKQEAgLTU5NCw3ICs4NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICBvcy5sc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfbW9kZSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5jaG1vZChzdXBwb3J0LlRFU1RGTiwgZXhpc3RpbmdfdGVzdGZuX21vZGUgfCBTX0lTR0lEKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdDYW5ub3Qgc2V0IFNfSVNHSUQgZm9yIGRpci4nKQogICAgICAgICAgICAgaWYgKG9zLmxzdGF0KHN1cHBvcnQuVEVTVEZOKS5zdF9tb2RlICYgU19JU0dJRCAhPSBTX0lTR0lEKToKICAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnTm8gc3VwcG9ydCBmb3IgU19JU0dJRCBkaXIgbW9kZS4nKQpAQCAtODQ5LDEwICsxMTIwLDEyIEBACiAKICAgICBkZWYgdGVzdF9mcGF0aGNvbmYoc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIob3MsICJmcGF0aGNvbmYiKToKKyAgICAgICAgICAgIHNlbGYuY2hlY2sob3MucGF0aGNvbmYsICJQQ19OQU1FX01BWCIpCiAgICAgICAgICAgICBzZWxmLmNoZWNrKG9zLmZwYXRoY29uZiwgIlBDX05BTUVfTUFYIikKIAogICAgIGRlZiB0ZXN0X2Z0cnVuY2F0ZShzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihvcywgImZ0cnVuY2F0ZSIpOgorICAgICAgICAgICAgc2VsZi5jaGVjayhvcy50cnVuY2F0ZSwgMCkKICAgICAgICAgICAgIHNlbGYuY2hlY2sob3MuZnRydW5jYXRlLCAwKQogCiAgICAgZGVmIHRlc3RfbHNlZWsoc2VsZik6CkBAIC04ODYsNyArMTE1OSw5IEBACiAgICAgICAgIHdpdGggb3BlbihmaWxlMSwgInciKSBhcyBmMToKICAgICAgICAgICAgIGYxLndyaXRlKCJ0ZXN0IikKIAotICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAiciIpIGFzIGYxLCBvcGVuKGZpbGUyLCAiciIpIGFzIGYyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZW9wZW5maWxlKGYxLmZpbGVubygpLCBmMi5maWxlbm8oKSkpCiAKQEAgLTk4OSw4ICsxMjY0LDcgQEAKICAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuZGlyKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGZvciBmbiBpbiBieXRlc2ZuOgotICAgICAgICAgICAgICAgICAgICBmID0gb3Blbihvcy5wYXRoLmpvaW4oc2VsZi5iZGlyLCBmbiksICJ3IikKLSAgICAgICAgICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuYmRpciwgZm4pKQogICAgICAgICAgICAgICAgICAgICBmbiA9IG9zLmZzZGVjb2RlKGZuKQogICAgICAgICAgICAgICAgICAgICBpZiBmbiBpbiBzZWxmLnVuaWNvZGVmbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSBmaWxlbmFtZSIpCkBAIC0xMDA2LDYgKzEyODAsMTMgQEAKICAgICAgICAgICAgIGV4cGVjdGVkID0gc2VsZi51bmljb2RlZm4KICAgICAgICAgICAgIGZvdW5kID0gc2V0KG9zLmxpc3RkaXIoc2VsZi5kaXIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3VuZCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAjIHRlc3QgbGlzdGRpciB3aXRob3V0IGFyZ3VtZW50cworICAgICAgICAgICAgY3VycmVudF9kaXJlY3RvcnkgPSBvcy5nZXRjd2QoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9zLnNlcCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChvcy5saXN0ZGlyKCkpLCBzZXQob3MubGlzdGRpcihvcy5zZXApKSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3MuY2hkaXIoY3VycmVudF9kaXJlY3RvcnkpCiAKICAgICAgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKICAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLnVuaWNvZGVmbjoKQEAgLTEyMDksOCArMTQ5MCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGxpbmspLCBvcy5zdGF0KGxpbmspKQogCiAgICAgICAgIGJ5dGVzX2xpbmsgPSBvcy5mc2VuY29kZShsaW5rKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKLSAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQodGFyZ2V0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCiAKICAgICBkZWYgdGVzdF8xMjA4NChzZWxmKToKICAgICAgICAgbGV2ZWwxID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQpAQCAtMTI2OSw2ICsxNTUyLDIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmZzZGVjb2RlKGJ5dGVzZm4pLCBmbikKIAogCisKK2NsYXNzIERldmljZUVuY29kaW5nVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYmFkX2ZkKHNlbGYpOgorICAgICAgICAjIFJldHVybiBOb25lIHdoZW4gYW4gZmQgZG9lc24ndCBhY3R1YWxseSBleGlzdC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob3MuZGV2aWNlX2VuY29kaW5nKDEyMzQ1NikpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5pc2F0dHkoMCkgYW5kIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3IKKyAgICAgICAgICAgIChoYXNhdHRyKGxvY2FsZSwgJ25sX2xhbmdpbmZvJykgYW5kIGhhc2F0dHIobG9jYWxlLCAnQ09ERVNFVCcpKSksCisgICAgICAgICAgICAndGVzdCByZXF1aXJlcyBhIHR0eSBhbmQgZWl0aGVyIFdpbmRvd3Mgb3IgbmxfbGFuZ2luZm8oQ09ERVNFVCknKQorICAgIGRlZiB0ZXN0X2RldmljZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgZW5jb2RpbmcgPSBvcy5kZXZpY2VfZW5jb2RpbmcoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZW5jb2RpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2RlY3MubG9va3VwKGVuY29kaW5nKSkKKworCiBjbGFzcyBQaWRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHBwaWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0cHBpZCIpCiAgICAgZGVmIHRlc3RfZ2V0cHBpZChzZWxmKToKQEAgLTEyOTAsMTIgKzE1ODksNDcxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobGVuKHVzZXJfbmFtZSksIDApCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHByaW9yaXR5JykgYW5kIGhhc2F0dHIob3MsICdzZXRwcmlvcml0eScpLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWRzIG9zLmdldHByaW9yaXR5IGFuZCBvcy5zZXRwcmlvcml0eSIpCitjbGFzcyBQcm9ncmFtUHJpb3JpdHlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkuIiIiCisKKyAgICBkZWYgdGVzdF9zZXRfZ2V0X3ByaW9yaXR5KHNlbGYpOgorCisgICAgICAgIGJhc2UgPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQorICAgICAgICBvcy5zZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpLCBiYXNlICsgMSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbmV3X3ByaW8gPSBvcy5nZXRwcmlvcml0eShvcy5QUklPX1BST0NFU1MsIG9zLmdldHBpZCgpKQorICAgICAgICAgICAgaWYgYmFzZSA+PSAxOSBhbmQgbmV3X3ByaW8gPD0gMTk6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoCisgICAgICAidW5hYmxlIHRvIHJlbGlhYmx5IHRlc3Qgc2V0cHJpb3JpdHkgYXQgY3VycmVudCBuaWNlIGxldmVsIG9mICVzIiAlIGJhc2UpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X3ByaW8sIGJhc2UgKyAxKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnNldHByaW9yaXR5KG9zLlBSSU9fUFJPQ0VTUywgb3MuZ2V0cGlkKCksIGJhc2UpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVBQ0NFUzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworCitpZiB0aHJlYWRpbmcgaXMgbm90IE5vbmU6CisgICAgY2xhc3MgU2VuZGZpbGVUZXN0U2VydmVyKGFzeW5jb3JlLmRpc3BhdGNoZXIsIHRocmVhZGluZy5UaHJlYWQpOgorCisgICAgICAgIGNsYXNzIEhhbmRsZXIoYXN5bmNoYXQuYXN5bmNfY2hhdCk6CisKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uKToKKyAgICAgICAgICAgICAgICBhc3luY2hhdC5hc3luY19jaGF0Ll9faW5pdF9fKHNlbGYsIGNvbm4pCisgICAgICAgICAgICAgICAgc2VsZi5pbl9idWZmZXIgPSBbXQorICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2goYiIyMjAgcmVhZHlcclxuIikKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9yZWFkKHNlbGYpOgorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlY3YoNDA5NikKKyAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZlci5hcHBlbmQoZGF0YSkKKworICAgICAgICAgICAgZGVmIGdldF9kYXRhKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBiJycuam9pbihzZWxmLmluX2J1ZmZlcikKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlZCA9IFRydWUKKworICAgICAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyZXNzKToKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlX3NvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQorICAgICAgICAgICAgc2VsZi5iaW5kKGFkZHJlc3MpCisgICAgICAgICAgICBzZWxmLmxpc3Rlbig1KQorICAgICAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICAgICAgc2VsZi5oYW5kbGVyX2luc3RhbmNlID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2ZV9sb2NrID0gdGhyZWFkaW5nLkxvY2soKQorCisgICAgICAgICMgLS0tIHB1YmxpYyBBUEkKKworICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgZGVmIHJ1bm5pbmcoc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlCisKKyAgICAgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLnJ1bm5pbmcKKyAgICAgICAgICAgIHNlbGYuX19mbGFnID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuc3RhcnQoc2VsZikKKyAgICAgICAgICAgIHNlbGYuX19mbGFnLndhaXQoKQorCisgICAgICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAgICAgYXNzZXJ0IHNlbGYucnVubmluZworICAgICAgICAgICAgc2VsZi5fYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuam9pbigpCisKKyAgICAgICAgZGVmIHdhaXQoc2VsZik6CisgICAgICAgICAgICAjIHdhaXQgZm9yIGhhbmRsZXIgY29ubmVjdGlvbiB0byBiZSBjbG9zZWQsIHRoZW4gc3RvcCB0aGUgc2VydmVyCisgICAgICAgICAgICB3aGlsZSBub3QgZ2V0YXR0cihzZWxmLmhhbmRsZXJfaW5zdGFuY2UsICJjbG9zZWQiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAwMSkKKyAgICAgICAgICAgIHNlbGYuc3RvcCgpCisKKyAgICAgICAgIyAtLS0gaW50ZXJuYWxzCisKKyAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgIHNlbGYuX2FjdGl2ZSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuX19mbGFnLnNldCgpCisgICAgICAgICAgICB3aGlsZSBzZWxmLl9hY3RpdmUgYW5kIGFzeW5jb3JlLnNvY2tldF9tYXA6CisgICAgICAgICAgICAgICAgc2VsZi5fYWN0aXZlX2xvY2suYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMDAxLCBjb3VudD0xKQorICAgICAgICAgICAgICAgIHNlbGYuX2FjdGl2ZV9sb2NrLnJlbGVhc2UoKQorICAgICAgICAgICAgYXN5bmNvcmUuY2xvc2VfYWxsKCkKKworICAgICAgICBkZWYgaGFuZGxlX2FjY2VwdChzZWxmKToKKyAgICAgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLmFjY2VwdCgpCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBzZWxmLkhhbmRsZXIoY29ubikKKworICAgICAgICBkZWYgaGFuZGxlX2Nvbm5lY3Qoc2VsZik6CisgICAgICAgICAgICBzZWxmLmNsb3NlKCkKKyAgICAgICAgaGFuZGxlX3JlYWQgPSBoYW5kbGVfY29ubmVjdAorCisgICAgICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgIHJhaXNlCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nIGlzIG5vdCBOb25lLCAidGVzdCBuZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdzZW5kZmlsZScpLCAidGVzdCBuZWVkcyBvcy5zZW5kZmlsZSgpIikKK2NsYXNzIFRlc3RTZW5kZmlsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBEQVRBID0gYiIxMjM0NWFiY2RlIiAqIDE2ICogMTAyNCAgIyAxNjAgS0IKKyAgICBTVVBQT1JUX0hFQURFUlNfVFJBSUxFUlMgPSBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImxpbnV4IikgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInNvbGFyaXMiKSBhbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgic3Vub3MiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShjbHMuREFUQSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlciA9IFNlbmRmaWxlVGVzdFNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSkKKyAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmNsaWVudCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLmNsaWVudC5jb25uZWN0KChzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KSkKKyAgICAgICAgc2VsZi5jbGllbnQuc2V0dGltZW91dCgxKQorICAgICAgICAjIHN5bmNocm9uaXplIGJ5IHdhaXRpbmcgZm9yICIyMjAgcmVhZHkiIHJlc3BvbnNlCisgICAgICAgIHNlbGYuY2xpZW50LnJlY3YoMTAyNCkKKyAgICAgICAgc2VsZi5zb2Nrbm8gPSBzZWxmLmNsaWVudC5maWxlbm8oKQorICAgICAgICBzZWxmLmZpbGUgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAncmInKQorICAgICAgICBzZWxmLmZpbGVubyA9IHNlbGYuZmlsZS5maWxlbm8oKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGUuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaWVudC5jbG9zZSgpCisgICAgICAgIGlmIHNlbGYuc2VydmVyLnJ1bm5pbmc6CisgICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKworICAgIGRlZiBzZW5kZmlsZV93cmFwcGVyKHNlbGYsIHNvY2ssIGZpbGUsIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPVtdLCB0cmFpbGVycz1bXSk6CisgICAgICAgICIiIkEgaGlnaGVyIGxldmVsIHdyYXBwZXIgcmVwcmVzZW50aW5nIGhvdyBhbiBhcHBsaWNhdGlvbiBpcworICAgICAgICBzdXBwb3NlZCB0byB1c2Ugc2VuZGZpbGUoKS4KKyAgICAgICAgIiIiCisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5TVVBQT1JUX0hFQURFUlNfVFJBSUxFUlM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5zZW5kZmlsZShzb2NrLCBmaWxlLCBvZmZzZXQsIG5ieXRlcywgaGVhZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcy5zZW5kZmlsZShzb2NrLCBmaWxlLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gPT0gZXJybm8uRUNPTk5SRVNFVDoKKyAgICAgICAgICAgICAgICAgICAgIyBkaXNjb25uZWN0ZWQKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBlbGlmIGVyci5lcnJubyBpbiAoZXJybm8uRUFHQUlOLCBlcnJuby5FQlVTWSk6CisgICAgICAgICAgICAgICAgICAgICMgd2UgaGF2ZSB0byByZXRyeSBzZW5kIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3Rfc2VuZF93aG9sZV9maWxlKHNlbGYpOgorICAgICAgICAjIG5vcm1hbCBzZW5kCisgICAgICAgIHRvdGFsX3NlbnQgPSAwCisgICAgICAgIG9mZnNldCA9IDAKKyAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICB3aGlsZSB0b3RhbF9zZW50IDwgbGVuKHNlbGYuREFUQSk6CisgICAgICAgICAgICBzZW50ID0gc2VsZi5zZW5kZmlsZV93cmFwcGVyKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICBpZiBzZW50ID09IDA6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisgICAgICAgICAgICB0b3RhbF9zZW50ICs9IHNlbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZW50IDw9IG5ieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2Zmc2V0LCB0b3RhbF9zZW50KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKHNlbGYuREFUQSkpCisgICAgICAgIHNlbGYuY2xpZW50LnNodXRkb3duKHNvY2tldC5TSFVUX1JEV1IpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGxlbihzZWxmLkRBVEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIHNlbGYuREFUQSkKKworICAgIGRlZiB0ZXN0X3NlbmRfYXRfY2VydGFpbl9vZmZzZXQoc2VsZik6CisgICAgICAgICMgc3RhcnQgc2VuZGluZyBhIGZpbGUgYXQgYSBjZXJ0YWluIG9mZnNldAorICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICBvZmZzZXQgPSBsZW4oc2VsZi5EQVRBKSAvLyAyCisgICAgICAgIG11c3Rfc2VuZCA9IGxlbihzZWxmLkRBVEEpIC0gb2Zmc2V0CisgICAgICAgIG5ieXRlcyA9IDQwOTYKKyAgICAgICAgd2hpbGUgdG90YWxfc2VudCA8IG11c3Rfc2VuZDoKKyAgICAgICAgICAgIHNlbnQgPSBzZWxmLnNlbmRmaWxlX3dyYXBwZXIoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCBvZmZzZXQsIG5ieXRlcykKKyAgICAgICAgICAgIGlmIHNlbnQgPT0gMDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgb2Zmc2V0ICs9IHNlbnQKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbnQgPD0gbmJ5dGVzKQorCisgICAgICAgIHNlbGYuY2xpZW50LnNodXRkb3duKHNvY2tldC5TSFVUX1JEV1IpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIud2FpdCgpCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLkRBVEFbbGVuKHNlbGYuREFUQSkgLy8gMjpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG90YWxfc2VudCwgbGVuKGV4cGVjdGVkKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIGxlbihleHBlY3RlZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9vZmZzZXRfb3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgc3BlY2lmeSBhbiBvZmZzZXQgPiBmaWxlIHNpemUKKyAgICAgICAgb2Zmc2V0ID0gbGVuKHNlbGYuREFUQSkgKyA0MDk2CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbnQgPSBvcy5zZW5kZmlsZShzZWxmLnNvY2tubywgc2VsZi5maWxlbm8sIG9mZnNldCwgNDA5NikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgU29sYXJpcyBjYW4gcmFpc2UgRUlOVkFMIGlmIG9mZnNldCA+PSBmaWxlIGxlbmd0aCwgaWdub3JlLgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5WQUw6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudCwgMCkKKyAgICAgICAgc2VsZi5jbGllbnQuc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKKyAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcnZlci53YWl0KCkKKyAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGInJykKKworICAgIGRlZiB0ZXN0X2ludmFsaWRfb2Zmc2V0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgb3Muc2VuZGZpbGUoc2VsZi5zb2Nrbm8sIHNlbGYuZmlsZW5vLCAtMSwgNDA5NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVJTlZBTCkKKworICAgICMgLS0tIGhlYWRlcnMgLyB0cmFpbGVycyB0ZXN0cworCisgICAgaWYgU1VQUE9SVF9IRUFERVJTX1RSQUlMRVJTOgorCisgICAgICAgIGRlZiB0ZXN0X2hlYWRlcnMoc2VsZik6CisgICAgICAgICAgICB0b3RhbF9zZW50ID0gMAorICAgICAgICAgICAgc2VudCA9IG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgMCwgNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPVtiIngiICogNTEyXSkKKyAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgb2Zmc2V0ID0gNDA5NgorICAgICAgICAgICAgbmJ5dGVzID0gNDA5NgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBzZW50ID0gc2VsZi5zZW5kZmlsZV93cmFwcGVyKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBuYnl0ZXMpCisgICAgICAgICAgICAgICAgaWYgc2VudCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHRvdGFsX3NlbnQgKz0gc2VudAorICAgICAgICAgICAgICAgIG9mZnNldCArPSBzZW50CisKKyAgICAgICAgICAgIGV4cGVjdGVkX2RhdGEgPSBiIngiICogNTEyICsgc2VsZi5EQVRBCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRvdGFsX3NlbnQsIGxlbihleHBlY3RlZF9kYXRhKSkKKyAgICAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuc2VydmVyLmhhbmRsZXJfaW5zdGFuY2UuZ2V0X2RhdGEoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKGRhdGEpLCBoYXNoKGV4cGVjdGVkX2RhdGEpKQorCisgICAgICAgIGRlZiB0ZXN0X3RyYWlsZXJzKHNlbGYpOgorICAgICAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKGIiYWJjZGUiKQorICAgICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICdyYicpYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MucmVtb3ZlLCBURVNURk4yKQorICAgICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBmLmZpbGVubygpLCAwLCA0MDk2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzPVtiIjEyMzQ1Il0pCisgICAgICAgICAgICAgICAgc2VsZi5jbGllbnQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLndhaXQoKQorICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnNlcnZlci5oYW5kbGVyX2luc3RhbmNlLmdldF9kYXRhKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIiYWJjZGUxMjM0NSIpCisKKyAgICAgICAgaWYgaGFzYXR0cihvcywgIlNGX05PRElTS0lPIik6CisgICAgICAgICAgICBkZWYgdGVzdF9mbGFncyhzZWxmKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBzZWxmLmZpbGVubywgMCwgNDA5NiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M9b3MuU0ZfTk9ESVNLSU8pCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBpZiBlcnIuZXJybm8gbm90IGluIChlcnJuby5FQlVTWSwgZXJybm8uRUFHQUlOKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKworZGVmIHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKToKKyAgICBpZiBub3QgaGFzYXR0cihvcywgInNldHhhdHRyIik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCisgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KKyAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQorICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQorICAgIHJldHVybiBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydHNfZXh0ZW5kZWRfYXR0cmlidXRlcygpLAorICAgICAgICAgICAgICAgICAgICAgIm5vIG5vbi1icm9rZW4gZXh0ZW5kZWQgYXR0cmlidXRlIHN1cHBvcnQiKQorY2xhc3MgRXh0ZW5kZWRBdHRyaWJ1dGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgZGVmIF9jaGVja194YXR0cnNfc3RyKHNlbGYsIHMsIGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0ciwgKiprd2FyZ3MpOgorICAgICAgICBmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIG9wZW4oZm4sICJ3YiIpLmNsb3NlKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorICAgICAgICBpbml0X3hhdHRyID0gbGlzdHhhdHRyKGZuKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5pdF94YXR0ciwgbGlzdCkKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiIiIsICoqa3dhcmdzKQorICAgICAgICB4YXR0ciA9IHNldChpbml0X3hhdHRyKQorICAgICAgICB4YXR0ci5hZGQoInVzZXIudGVzdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiIikKKyAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImhlbGxvIiwgb3MuWEFUVFJfUkVQTEFDRSwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiImhlbGxvIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QiKSwgYiJieWUiLCBvcy5YQVRUUl9DUkVBVEUsICoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdDIiKSwgYiJieWUiLCBvcy5YQVRUUl9SRVBMQUNFLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksIGIiZm9vIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKKyAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QyIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0RBVEEpCisgICAgICAgIHhhdHRyLnJlbW92ZSgidXNlci50ZXN0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksICoqa3dhcmdzKSwgYiJmb28iKQorICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiYSIqMTAyNCwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncyksIGIiYSIqMTAyNCkKKyAgICAgICAgcmVtb3ZleGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCAqKmt3YXJncykKKyAgICAgICAgbWFueSA9IHNvcnRlZCgidXNlci50ZXN0e30iLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgxMDApKQorICAgICAgICBmb3IgdGhpbmcgaW4gbWFueToKKyAgICAgICAgICAgIHNldHhhdHRyKGZuLCB0aGluZywgYiJ4IiwgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCBzZXQoaW5pdF94YXR0cikgfCBzZXQobWFueSkpCisKKyAgICBkZWYgX2NoZWNrX3hhdHRycyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBkZWYgbWFrZV9ieXRlcyhzKToKKyAgICAgICAgICAgIHJldHVybiBieXRlcyhzLCAiYXNjaWkiKQorICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKHN0ciwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzX3N0cihtYWtlX2J5dGVzLCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgdGVzdF9zaW1wbGUoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdHhhdHRyKQorCisgICAgZGVmIHRlc3RfbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhvcy5nZXR4YXR0ciwgb3Muc2V0eGF0dHIsIG9zLnJlbW92ZXhhdHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MubGlzdHhhdHRyLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBkZWYgdGVzdF9mZHMoc2VsZik6CisgICAgICAgIGRlZiBnZXR4YXR0cihwYXRoLCAqYXJncyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9zLmdldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgZGVmIHNldHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCisgICAgICAgIGRlZiByZW1vdmV4YXR0cihwYXRoLCAqYXJncyk6CisgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgIndiIikgYXMgZnA6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZleGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQorICAgICAgICBkZWYgbGlzdHhhdHRyKHBhdGgsICphcmdzKToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKKyAgICAgICAgICAgICAgICByZXR1cm4gb3MubGlzdHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKKyAgICAgICAgc2VsZi5fY2hlY2tfeGF0dHJzKGdldHhhdHRyLCBzZXR4YXR0ciwgcmVtb3ZleGF0dHIsIGxpc3R4YXR0cikKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIldpbjMyIHNwZWNpZmljIHRlc3RzIikKK2NsYXNzIFdpbjMyRGVwcmVjYXRlZEJ5dGVzQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICBpbXBvcnQgbnQKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGZvciBmdW5jLCAqYXJncyBpbiAoCisgICAgICAgICAgICAgICAgKG50Ll9nZXRmdWxscGF0aG5hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAobnQuX2lzZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmFjY2VzcywgZmlsZW5hbWUsIG9zLlJfT0spLAorICAgICAgICAgICAgICAgIChvcy5jaGRpciwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5jaG1vZCwgZmlsZW5hbWUsIDBvNzc3KSwKKyAgICAgICAgICAgICAgICAob3MuZ2V0Y3dkYiwpLAorICAgICAgICAgICAgICAgIChvcy5saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpLAorICAgICAgICAgICAgICAgIChvcy5saXN0ZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLmxzdGF0LCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLm1rZGlyLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLm9wZW4sIGZpbGVuYW1lLCBvcy5PX1JET05MWSksCisgICAgICAgICAgICAgICAgKG9zLnJlbmFtZSwgZmlsZW5hbWUsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Mucm1kaXIsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3Muc3RhcnRmaWxlLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLnN0YXQsIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgICAob3MudW5saW5rLCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICAgKG9zLnV0aW1lLCBmaWxlbmFtZSksCisgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywgZnVuYywgKmFyZ3MpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfc3ltbGluayhzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmssIGZpbGVuYW1lLCBmaWxlbmFtZSkKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0X3Rlcm1pbmFsX3NpemUnKSwgInJlcXVpcmVzIG9zLmdldF90ZXJtaW5hbF9zaXplIikKK2NsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBnZXRfdGVybWluYWxfc2l6ZSgpIHJldHVybnMgYSBtZWFuaW5nZnVsIHZhbHVlLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gZWFzeSBwb3J0YWJsZSB3YXkgdG8gYWN0dWFsbHkgY2hlY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIHRlcm1pbmFsLCBzbyBsZXQncyBjaGVjayBpZiBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5zaWJsZSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IG9zLmdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIG9yIGUuZXJybm8gaW4gKGVycm5vLkVJTlZBTCwgZXJybm8uRU5PVFRZKToKKyAgICAgICAgICAgICAgICAjIFVuZGVyIHdpbjMyIGEgZ2VuZXJpYyBPU0Vycm9yIGNhbiBiZSB0aHJvd24gaWYgdGhlCisgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZhaWxlZCB0byBxdWVyeSB0ZXJtaW5hbCBzaXplIikKKyAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5jb2x1bW5zLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzaXplLmxpbmVzLCAwKQorCisgICAgZGVmIHRlc3Rfc3R0eV9tYXRjaChzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgaWYgc3R0eSByZXR1cm5zIHRoZSBzYW1lIHJlc3VsdHMKKworICAgICAgICBzdHR5IGFjdHVhbGx5IHRlc3RzIHN0ZGluLCBzbyBnZXRfdGVybWluYWxfc2l6ZSBpcyBpbnZva2VkIG9uCisgICAgICAgIHN0ZGluIGV4cGxpY2l0bHkuIElmIHN0dHkgc3VjY2VlZGVkLCB0aGVuIGdldF90ZXJtaW5hbF9zaXplKCkKKyAgICAgICAgc2hvdWxkIHdvcmsgdG9vLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2l6ZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc3R0eScsICdzaXplJ10pLmRlY29kZSgpLnNwbGl0KCkKKyAgICAgICAgZXhjZXB0IChGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3R0eSBpbnZvY2F0aW9uIGZhaWxlZCIpCisgICAgICAgIGV4cGVjdGVkID0gKGludChzaXplWzFdKSwgaW50KHNpemVbMF0pKSAjIHJldmVyc2VkIG9yZGVyCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWN0dWFsID0gb3MuZ2V0X3Rlcm1pbmFsX3NpemUoc3lzLl9fc3RkaW5fXy5maWxlbm8oKSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiIG9yIGUuZXJybm8gaW4gKGVycm5vLkVJTlZBTCwgZXJybm8uRU5PVFRZKToKKyAgICAgICAgICAgICAgICAjIFVuZGVyIHdpbjMyIGEgZ2VuZXJpYyBPU0Vycm9yIGNhbiBiZSB0aHJvd24gaWYgdGhlCisgICAgICAgICAgICAgICAgIyBoYW5kbGUgY2Fubm90IGJlIHJldHJpZXZlZAorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZhaWxlZCB0byBxdWVyeSB0ZXJtaW5hbCBzaXplIikKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKKworCitAc3VwcG9ydC5yZWFwX3RocmVhZHMKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgRmlsZVRlc3RzLAogICAgICAgICBTdGF0QXR0cmlidXRlVGVzdHMsCiAgICAgICAgIEVudmlyb25UZXN0cywKICAgICAgICAgV2Fsa1Rlc3RzLAorICAgICAgICBGd2Fsa1Rlc3RzLAogICAgICAgICBNYWtlZGlyVGVzdHMsCiAgICAgICAgIERldk51bGxUZXN0cywKICAgICAgICAgVVJhbmRvbVRlc3RzLApAQCAtMTMwNyw5ICsyMDY1LDE1IEBACiAgICAgICAgIFdpbjMyS2lsbFRlc3RzLAogICAgICAgICBXaW4zMlN5bWxpbmtUZXN0cywKICAgICAgICAgRlNFbmNvZGluZ1Rlc3RzLAorICAgICAgICBEZXZpY2VFbmNvZGluZ1Rlc3RzLAogICAgICAgICBQaWRUZXN0cywKICAgICAgICAgTG9naW5UZXN0cywKICAgICAgICAgTGlua1Rlc3RzLAorICAgICAgICBUZXN0U2VuZGZpbGUsCisgICAgICAgIFByb2dyYW1Qcmlvcml0eVRlc3RzLAorICAgICAgICBFeHRlbmRlZEF0dHJpYnV0ZVRlc3RzLAorICAgICAgICBXaW4zMkRlcHJlY2F0ZWRCeXRlc0FQSSwKKyAgICAgICAgVGVybXNpemVUZXN0cywKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5IGIvTGliL3Rlc3QvdGVzdF9vc3NhdWRpb2Rldi5weQppbmRleCA5Y2I4OWQ2Li4zOTA4YTA1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zc2F1ZGlvZGV2LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3NzYXVkaW9kZXYucHkKQEAgLTE3MCw2ICsxNzAsMjIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRzcC5jbG9zZWQpCiAKKyAgICBkZWYgdGVzdF9vbl9jbG9zZWQoc2VsZik6CisgICAgICAgIGRzcCA9IG9zc2F1ZGlvZGV2Lm9wZW4oJ3cnKQorICAgICAgICBkc3AuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AuZmlsZW5vKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3AucmVhZCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZHNwLndyaXRlLCBiJ3gnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aud3JpdGVhbGwsIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmNvdW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmNvdW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBkc3Aub2J1ZmZyZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRzcC5nZXRwdHIpCisKKyAgICAgICAgbWl4ZXIgPSBvc3NhdWRpb2Rldi5vcGVubWl4ZXIoKQorICAgICAgICBtaXhlci5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1peGVyLmZpbGVubykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRyeToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weSBiL0xpYi90ZXN0L3Rlc3Rfb3N4X2Vudi5weQppbmRleCA4YjNkZjM3Li4yNGVjMmI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29zeF9lbnYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vc3hfZW52LnB5CkBAIC01LDYgKzUsNyBAQAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IEVudmlyb25tZW50VmFyR3VhcmQsIHJ1bl91bml0dGVzdAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBPU1hFbnZpcm9ubWVudFZhcmlhYmxlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjcsOCArMjgsNiBAQAogICAgICAgICBzZWxmLl9jaGVja19zeXMoJ1BZVEhPTkVYRUNVVEFCTEUnLCAnPT0nLCAnc3lzLmV4ZWN1dGFibGUnKQogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwotCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfTkVYVF9GUkFNRVdPUksnKToKICAgICAgICAgcnVuX3VuaXR0ZXN0KE9TWEVudmlyb25tZW50VmFyaWFibGVUZXN0Q2FzZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQppbmRleCA3MGViOWMwLi5jOTNhMmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQpAQCAtNTEsNiArNTEsMTAgQEAKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogKHlpZWxkIDEpKjIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiByZXR1cm47IHlpZWxkIDEiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCAxOyByZXR1cm4iKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCBmcm9tIDEiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB4ID0geWllbGQgZnJvbSAxIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTogZigoeWllbGQgZnJvbSAxKSkiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkZWYgZigpOiB5aWVsZCAxOyByZXR1cm4gMSIpCiAgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoImRlZiBmKCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmb3IgeCBpbiByYW5nZSgzMCk6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgeWllbGQgeFxuIikKQEAgLTcxNyw2ICs3MjEsMTIgQEAKIAogICAgICMgWFhYIHRlc3RzIGZvciBwaWNrbGluZyBhbmQgdW5waWNrbGluZyBvZiBTVCBvYmplY3RzIHNob3VsZCBnbyBoZXJlCiAKK2NsYXNzIE90aGVyUGFyc2VyQ2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF90d29fYXJnc190b19leHByKHNlbGYpOgorICAgICAgICAjIFNlZSBidWcgIzEyMjY0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHBhcnNlci5leHByKCJhIiwgImIiKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCkBAIC03MjUsNiArNzM1LDcgQEAKICAgICAgICAgQ29tcGlsZVRlc3RDYXNlLAogICAgICAgICBQYXJzZXJTdGFja0xpbWl0VGVzdENhc2UsCiAgICAgICAgIFNUT2JqZWN0VGVzdENhc2UsCisgICAgICAgIE90aGVyUGFyc2VyQ2FzZSwKICAgICApCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZGIucHkgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQppbmRleCBkMjhiMDQyLi4wZjdhOTg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BkYi5weQpAQCAtMjEsOSArMjEsMTIgQEAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBzZWxmLnJlYWxfc3RkaW4gPSBzeXMuc3RkaW4KICAgICAgICAgc3lzLnN0ZGluID0gX0Zha2VJbnB1dChzZWxmLmlucHV0KQorICAgICAgICBzZWxmLm9yaWdfdHJhY2UgPSBzeXMuZ2V0dHJhY2UoKSBpZiBoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgZWxzZSBOb25lCiAKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Yyk6CiAgICAgICAgIHN5cy5zdGRpbiA9IHNlbGYucmVhbF9zdGRpbgorICAgICAgICBpZiBzZWxmLm9yaWdfdHJhY2U6CisgICAgICAgICAgICBzeXMuc2V0dHJhY2Uoc2VsZi5vcmlnX3RyYWNlKQogCiAKIGRlZiB0ZXN0X3BkYl9kaXNwbGF5aG9vaygpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZWVwaG9sZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQppbmRleCA1MzcxOWQzLi4xZTc4MmNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weQpAQCAtMywxMyArMywxNiBAQAogaW1wb3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCB1bml0dGVzdAorZnJvbSBtYXRoIGltcG9ydCBjb3B5c2lnbgogCiBkZWYgZGlzYXNzZW1ibGUoZnVuYyk6CiAgICAgZiA9IFN0cmluZ0lPKCkKICAgICB0bXAgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGYKLSAgICBkaXMuZGlzKGZ1bmMpCi0gICAgc3lzLnN0ZG91dCA9IHRtcAorICAgIHRyeToKKyAgICAgICAgZGlzLmRpcyhmdW5jKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5zdGRvdXQgPSB0bXAKICAgICByZXN1bHQgPSBmLmdldHZhbHVlKCkKICAgICBmLmNsb3NlKCkKICAgICByZXR1cm4gcmVzdWx0CkBAIC0xNyw2ICsyMCw3IEBACiBkZWYgZGlzX3NpbmdsZShsaW5lKToKICAgICByZXR1cm4gZGlzYXNzZW1ibGUoY29tcGlsZShsaW5lLCAnJywgJ3NpbmdsZScpKQogCisKIGNsYXNzIFRlc3RUcmFuZm9ybXModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfdW5vdChzZWxmKToKQEAgLTk5LDYgKzEwMywxMiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBhc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCVUlMRF9UVVBMRScsIGFzbSkKIAorICAgICAgICAjIExvbmcgdHVwbGVzIHNob3VsZCBiZSBmb2xkZWQgdG9vLgorICAgICAgICBhc20gPSBkaXNfc2luZ2xlKHJlcHIodHVwbGUocmFuZ2UoMTAwMDApKSkpCisgICAgICAgICMgT25lIExPQURfQ09OU1QgZm9yIHRoZSB0dXBsZSwgb25lIGZvciB0aGUgTm9uZSByZXR1cm4gdmFsdWUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc20uY291bnQoJ0xPQURfQ09OU1QnKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQlVJTERfVFVQTEUnLCBhc20pCisKICAgICAgICAgIyBCdWcgMTA1MzgxOTogIFR1cGxlIG9mIGNvbnN0YW50cyBtaXNpZGVudGlmaWVkIHdoZW4gcHJlc2VudGVkIHdpdGg6CiAgICAgICAgICMgLiAuIC4gb3Bjb2RlX3dpdGhfYXJnIDEwMCAgIHVuYXJ5X29wY29kZSAgIEJVSUxEX1RVUExFIDEgIC4gLiAuCiAgICAgICAgICMgVGhlIGZvbGxvd2luZyB3b3VsZCBzZWdmYXVsdCB1cG9uIGNvbXBpbGF0aW9uCkBAIC0yMDgsMTQgKzIxOCwxMyBAQAogICAgICAgICAjIG91dCBvZiByYW5nZQogICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCciZnV1IlsxMF0nKQogICAgICAgICBzZWxmLmFzc2VydEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQotICAgICAgICAjIG5vbi1CTVAgY2hhciAoc2VlICM1MDU3KQotICAgICAgICBhc20gPSBkaXNfc2luZ2xlKCciXFUwMDAxMjM0NSJbMF0nKQotICAgICAgICBzZWxmLmFzc2VydEluKCdCSU5BUllfU1VCU0NSJywgYXNtKQotCiAKICAgICBkZWYgdGVzdF9mb2xkaW5nX29mX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhzZWxmKToKICAgICAgICAgZm9yIGxpbmUsIGVsZW0gaW4gKAogICAgICAgICAgICAgKCctMC41JywgJygtMC41KScpLCAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgbmVnYXRpdmUKKyAgICAgICAgICAgICgnLTAuMCcsICcoLTAuMCknKSwgICAgICAgICAgICAgICAgICAgICAjIC0wLjAKKyAgICAgICAgICAgICgnLSgxLjAtMS4wKScsJygtMC4wKScpLCAgICAgICAgICAgICAgICAjIC0wLjAgYWZ0ZXIgZm9sZGluZworICAgICAgICAgICAgKCctMCcsICcoMCknKSwgICAgICAgICAgICAgICAgICAgICAgICAgICMgLTAKICAgICAgICAgICAgICgnfi0yJywgJygxKScpLCAgICAgICAgICAgICAgICAgICAgICAgICAjIHVuYXJ5IGludmVydAogICAgICAgICAgICAgKCcrMScsICcoMSknKSwgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5hcnkgcG9zaXRpdmUKICAgICAgICAgKToKQEAgLTIyMyw2ICsyMzIsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZWxlbSwgYXNtLCBhc20pCiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBhc20pCiAKKyAgICAgICAgIyBDaGVjayB0aGF0IC0wLjAgd29ya3MgYWZ0ZXIgbWFyc2hhbGluZworICAgICAgICBkZWYgbmVnemVybygpOgorICAgICAgICAgICAgcmV0dXJuIC0oMS4wLTEuMCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdVTkFSWV8nLCBkaXNhc3NlbWJsZShuZWd6ZXJvKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvcHlzaWduKDEuMCwgbmVnemVybygpKSA8IDApCisKICAgICAgICAgIyBWZXJpZnkgdGhhdCB1bmZvbGRhYmxlcyBhcmUgc2tpcHBlZAogICAgICAgICBmb3IgbGluZSwgZWxlbSBpbiAoCiAgICAgICAgICAgICAoJy0iYWJjIicsICIoJ2FiYycpIiksICAgICAgICAgICAgICAgICAgIyB1bmFyeSBuZWdhdGl2ZQpAQCAtMjg1LDYgKzMwMSwyNSBAQAogICAgICAgICBhc20gPSBkaXNhc3NlbWJsZShmKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdCSU5BUllfQUREJywgYXNtKQogCisgICAgZGVmIHRlc3RfY29uc3RhbnRfZm9sZGluZyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTEyNDQ6IGFnZ3Jlc3NpdmUgY29uc3RhbnQgZm9sZGluZy4KKyAgICAgICAgZXhwcnMgPSBbCisgICAgICAgICAgICAiMyAqIC01IiwKKyAgICAgICAgICAgICItMyAqIDUiLAorICAgICAgICAgICAgIjIgKiAoMyAqIDQpIiwKKyAgICAgICAgICAgICIoMiAqIDMpICogNCIsCisgICAgICAgICAgICAiKC0xLCAyLCAzKSIsCisgICAgICAgICAgICAiKDEsIC0yLCAzKSIsCisgICAgICAgICAgICAiKDEsIDIsIC0zKSIsCisgICAgICAgICAgICAiKDEsIDIsIC0zKSAqIDYiLAorICAgICAgICAgICAgImxhbWJkYSB4OiB4IGluIHsoMyAqIC01KSArICgtMSAtIDYpLCAoMSwgLTIsIDMpICogMiwgTm9uZX0iLAorICAgICAgICBdCisgICAgICAgIGZvciBlIGluIGV4cHJzOgorICAgICAgICAgICAgYXNtID0gZGlzX3NpbmdsZShlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignVU5BUllfJywgYXNtLCBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQklOQVJZXycsIGFzbSwgZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0JVSUxEXycsIGFzbSwgZSkKKwogY2xhc3MgVGVzdEJ1Z2xldHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfYnVnXzExNTEwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkgYi9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQppbmRleCA2ZDg5MWU1Li40YjE2Y2JiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDI3Ny5weQpAQCAtMSw2ICsxLDkgQEAKICMgVGVzdCB0aGUgVW5pY29kZSB2ZXJzaW9ucyBvZiBub3JtYWwgZmlsZSBmdW5jdGlvbnMKICMgb3Blbiwgb3Mub3Blbiwgb3Muc3RhdC4gb3MubGlzdGRpciwgb3MucmVuYW1lLCBvcy5yZW1vdmUsIG9zLm1rZGlyLCBvcy5jaGRpciwgb3Mucm1kaXIKLWltcG9ydCBzeXMsIG9zLCB1bml0dGVzdAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSB1bmljb2RlZGF0YSBpbXBvcnQgbm9ybWFsaXplCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApAQCAtMzgsOCArNDEsOCBAQAogICAgICAgICAnMTdfXHUyMDAxXHUyMDAxXHUyMDAxQScsCiAgICAgICAgICcxOF9cdTIwMDNcdTIwMDNcdTIwMDNBJywgICMgPT0gTkZDKCdcdTIwMDFcdTIwMDFcdTIwMDFBJykKICAgICAgICAgJzE5X1x1MDAyMFx1MDAyMFx1MDAyMEEnLCAgIyAnXHUwMDIwJyA9PSAnICcgPT0gTkZLQygnXHUyMDAwJykgPT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgTkZLQygnXHUyMDAxJykgPT0gTkZLQygnXHUyMDAzJykKLV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIE5GS0MoJ1x1MjAwMScpID09IE5GS0MoJ1x1MjAwMycpCisgICAgXSkKIAogCiAjIElzIGl0IFVuaWNvZGUtZnJpZW5kbHk/CkBAIC03MSw3ICs3NCw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGV4Y2VwdCBGaWxlRXhpc3RzRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGZpbGVzID0gc2V0KCkKICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5maWxlczoKQEAgLTkwLDE1ICs5MywxNyBAQAogICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShzZWxmLm5vcm1hbF9mb3JtLCBzKQogICAgICAgICByZXR1cm4gcwogCi0gICAgZGVmIF9hcHBseV9mYWlsdXJlKHNlbGYsIGZuLCBmaWxlbmFtZSwgZXhwZWN0ZWRfZXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICBjaGVja19mbl9pbl9leGNlcHRpb24gPSBUcnVlKToKKyAgICBkZWYgX2FwcGx5X2ZhaWx1cmUoc2VsZiwgZm4sIGZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGNlcHRpb249RmlsZU5vdEZvdW5kRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2ZpbGVuYW1lPVRydWUpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGV4cGVjdGVkX2V4Y2VwdGlvbikgYXMgYzoKICAgICAgICAgICAgIGZuKGZpbGVuYW1lKQogICAgICAgICBleGNfZmlsZW5hbWUgPSBjLmV4Y2VwdGlvbi5maWxlbmFtZQotICAgICAgICAjIHRoZSAiZmlsZW5hbWUiIGV4Y2VwdGlvbiBhdHRyaWJ1dGUgbWF5IGJlIGVuY29kZWQKLSAgICAgICAgaWYgaXNpbnN0YW5jZShleGNfZmlsZW5hbWUsIGJ5dGVzKToKLSAgICAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKLSAgICAgICAgaWYgY2hlY2tfZm5faW5fZXhjZXB0aW9uOgorICAgICAgICAjIGxpc3RkaXIgbWF5IGFwcGVuZCBhIHdpbGRjYXJkIHRvIHRoZSBmaWxlbmFtZQorICAgICAgICBpZiBmbiBpcyBvcy5saXN0ZGlyIGFuZCBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgIGV4Y19maWxlbmFtZSwgXywgd2lsZGNhcmQgPSBleGNfZmlsZW5hbWUucnBhcnRpdGlvbihvcy5zZXApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdpbGRjYXJkLCAnKi4qJykKKyAgICAgICAgaWYgY2hlY2tfZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Y19maWxlbmFtZSwgZmlsZW5hbWUsICJGdW5jdGlvbiAnJXMoJWEpIGZhaWxlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIGJhZCBmaWxlbmFtZSBpbiB0aGUgZXhjZXB0aW9uOiAlYSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm4uX19uYW1lX18sIGZpbGVuYW1lLCBleGNfZmlsZW5hbWUpKQpAQCAtMTA3LDEzICsxMTIsMTggQEAKICAgICAgICAgIyBQYXNzIG5vbi1leGlzdGluZyBVbmljb2RlIGZpbGVuYW1lcyBhbGwgb3ZlciB0aGUgcGxhY2UuCiAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZmlsZXM6CiAgICAgICAgICAgICBuYW1lID0gIm5vdF8iICsgbmFtZQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lLCBJT0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lLCBzbyBkb250IGNoZWNrCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUsIE9TRXJyb3IsIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSkKKworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIFdpbmRvd3MgaXMgbHVuYXRpYy4gSXNzdWUgIzEzMzY2LgorICAgICAgICBfbGlzdGRpcl9mYWlsdXJlID0gTm90QURpcmVjdG9yeUVycm9yLCBGaWxlTm90Rm91bmRFcnJvcgorICAgIGVsc2U6CisgICAgICAgIF9saXN0ZGlyX2ZhaWx1cmUgPSBOb3RBRGlyZWN0b3J5RXJyb3IKIAogICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluIHNlbGYuZmlsZXM6CkBAIC0xMjEsMTIgKzEzMSwxMyBAQAogICAgICAgICAgICAgZi53cml0ZSgobmFtZSsnXG4nKS5lbmNvZGUoInV0Zi04IikpCiAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIG9zLnN0YXQobmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSwgc2VsZi5fbGlzdGRpcl9mYWlsdXJlKQogCiAgICAgIyBTa2lwIHRoZSB0ZXN0IG9uIGRhcndpbiwgYmVjYXVzZSBkYXJ3aW4gZG9lcyBub3JtYWxpemUgdGhlIGZpbGVuYW1lIHRvCiAgICAgIyBORkQgKGEgdmFyaWFudCBvZiBVbmljb2RlIE5GRCBmb3JtKS4gTm9ybWFsaXplIHRoZSBmaWxlbmFtZSB0byBORkMsIE5GS0MsCiAgICAgIyBORktEIGluIFB5dGhvbiBpcyB1c2VsZXNzLCBiZWNhdXNlIGRhcndpbiB3aWxsIG5vcm1hbGl6ZSBpdCBsYXRlciBhbmQgc28KICAgICAjIG9wZW4oKSwgb3Muc3RhdCgpLCBldGMuIGRvbid0IHJhaXNlIGFueSBleGNlcHRpb24uCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJldmVsYW50IHRlc3Qgb24gTWFjIE9TIFgnKQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnaXJyZWxldmFudCB0ZXN0IG9uIE1hYyBPUyBYJykKICAgICBkZWYgdGVzdF9ub3JtYWxpemUoc2VsZik6CiAgICAgICAgIGZpbGVzID0gc2V0KHNlbGYuZmlsZXMpCiAgICAgICAgIG90aGVycyA9IHNldCgpCkBAIC0xMzQsMjEgKzE0NSwyMiBAQAogICAgICAgICAgICAgb3RoZXJzIHw9IHNldChub3JtYWxpemUobmYsIGZpbGUpIGZvciBmaWxlIGluIGZpbGVzKQogICAgICAgICBvdGhlcnMgLT0gZmlsZXMKICAgICAgICAgZm9yIG5hbWUgaW4gb3RoZXJzOgotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lLCBJT0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lLCBPU0Vycm9yKQotICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUsIE9TRXJyb3IpCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSwgT1NFcnJvcikKLSAgICAgICAgICAgICMgbGlzdGRpciBtYXkgYXBwZW5kIGEgd2lsZGNhcmQgdG8gdGhlIGZpbGVuYW1lLCBzbyBkb250IGNoZWNrCi0gICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLmxpc3RkaXIsIG5hbWUsIE9TRXJyb3IsIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcGVuLCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5zdGF0LCBuYW1lKQorICAgICAgICAgICAgc2VsZi5fYXBwbHlfZmFpbHVyZShvcy5jaGRpciwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3Mucm1kaXIsIG5hbWUpCisgICAgICAgICAgICBzZWxmLl9hcHBseV9mYWlsdXJlKG9zLnJlbW92ZSwgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2FwcGx5X2ZhaWx1cmUob3MubGlzdGRpciwgbmFtZSkKIAogICAgICMgU2tpcCB0aGUgdGVzdCBvbiBkYXJ3aW4sIGJlY2F1c2UgZGFyd2luIHVzZXMgYSBub3JtYWxpemF0aW9uIGRpZmZlcmVudAogICAgICMgdGhhbiBQeXRob24gTkZEIG5vcm1hbGl6YXRpb246IGZpbGVuYW1lcyBhcmUgZGlmZmVyZW50IGV2ZW4gaWYgd2UgdXNlCiAgICAgIyBQeXRob24gTkZEIG5vcm1hbGl6YXRpb24uCi0gICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICdpcnJldmVsYW50IHRlc3Qgb24gTWFjIE9TIFgnKQorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nLCAnaXJyZWxldmFudCB0ZXN0IG9uIE1hYyBPUyBYJykKICAgICBkZWYgdGVzdF9saXN0ZGlyKHNlbGYpOgogICAgICAgICBzZjAgPSBzZXQoc2VsZi5maWxlcykKLSAgICAgICAgZjEgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGYxID0gb3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTi5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKSkKICAgICAgICAgZjIgPSBvcy5saXN0ZGlyKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBzZjIgPSBzZXQob3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCBmKSBmb3IgZiBpbiBmMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZjAsIHNmMiwgIiVhICE9ICVhIiAlIChzZjAsIHNmMikpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDI5Mi5weSBiL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CmluZGV4IDExOWM3ZWEuLjZkYThkMmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMjkyLnB5CkBAIC00MiwxOSArNDIsNiBAQAogICAgICAgICBzID0gVGVtcGxhdGUoJyR3aG8gbGlrZXMgJCQnKQogICAgICAgICBlcShzLnN1YnN0aXR1dGUoZGljdCh3aG89J3RpbScsIHdoYXQ9J2hhbScpKSwgJ3RpbSBsaWtlcyAkJykKIAotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIGNsYXNzIE15UGF0dGVybihUZW1wbGF0ZSk6Ci0gICAgICAgICAgICBwYXR0ZXJuID0gciIiIgotICAgICAgICAgICAgKD86Ci0gICAgICAgICAgICAoP1A8aW52YWxpZD4pICAgICAgICAgICAgfAotICAgICAgICAgICAgKD9QPGVzY2FwZWQ+JShkZWxpbSlzKSAgIHwKLSAgICAgICAgICAgIEAoP1A8bmFtZWQ+JShpZClzKSAgICAgICB8Ci0gICAgICAgICAgICBAeyg/UDxicmFjZWQ+JShpZClzKX0gICAgCi0gICAgICAgICAgICApCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgcyA9IE15UGF0dGVybignJCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHMuc3Vic3RpdHV0ZSwgZGljdCgpKSAKLQogICAgIGRlZiB0ZXN0X3BlcmNlbnRzKHNlbGYpOgogICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKICAgICAgICAgcyA9IFRlbXBsYXRlKCclKGZvbylzICRmb28gJHtmb299JykKQEAgLTE3Miw2ICsxNTksMjYgQEAKICAgICAgICAgdmFsID0gdC5zYWZlX3N1YnN0aXR1dGUoeydsb2NhdGlvbic6ICdDbGV2ZWxhbmQnfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWwsICdQeUNvbiBpbiBDbGV2ZWxhbmQnKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF93aXRoX25vX2xpbmVzKHNlbGYpOgorICAgICAgICAjIFRoZSBlcnJvciBmb3JtYXR0aW5nIGZvciBpbnZhbGlkIHRlbXBsYXRlcworICAgICAgICAjIGhhcyBhIHNwZWNpYWwgY2FzZSBmb3Igbm8gZGF0YSB0aGF0IHRoZSBkZWZhdWx0CisgICAgICAgICMgcGF0dGVybiBjYW4ndCB0cmlnZ2VyIChhbHdheXMgaGFzIGF0IGxlYXN0ICckJykKKyAgICAgICAgIyBTbyB3ZSBjcmFmdCBhIHBhdHRlcm4gdGhhdCBpcyBhbHdheXMgaW52YWxpZAorICAgICAgICAjIHdpdGggbm8gbGVhZGluZyBkYXRhLgorICAgICAgICBjbGFzcyBNeVRlbXBsYXRlKFRlbXBsYXRlKToKKyAgICAgICAgICAgIHBhdHRlcm4gPSByIiIiCisgICAgICAgICAgICAgICg/UDxpbnZhbGlkPikgfAorICAgICAgICAgICAgICB1bnJlYWNoYWJsZSgKKyAgICAgICAgICAgICAgICAoP1A8bmFtZWQ+KSAgIHwKKyAgICAgICAgICAgICAgICAoP1A8YnJhY2VkPikgIHwKKyAgICAgICAgICAgICAgICAoP1A8ZXNjYXBlZD4pCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICIiIgorICAgICAgICBzID0gTXlUZW1wbGF0ZSgnJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlcnI6CisgICAgICAgICAgICBzLnN1YnN0aXR1dGUoe30pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xpbmUgMSwgY29sIDEnLCBzdHIoZXJyLmV4Y2VwdGlvbikpCisKICAgICBkZWYgdGVzdF91bmljb2RlX3ZhbHVlcyhzZWxmKToKICAgICAgICAgcyA9IFRlbXBsYXRlKCckd2hvIGxpa2VzICR3aGF0JykKICAgICAgICAgZCA9IGRpY3Qod2hvPSd0XHhmZm0nLCB3aGF0PSdmXHhmZVxmZWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CmluZGV4IGRmMGY2NGQuLjJlNmI5MGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxMzEucHkKQEAgLTE3LDEyICsxNyw3IEBACiAKICAgICBkZWYgdGVzdF9ub25fYm1wX25vcm1hbGl6ZWQoc2VsZik6CiAgICAgICAgIPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgPSAxCi0gICAgICAgICMgT24gd2lkZSBidWlsZHMsIHRoaXMgaXMgbm9ybWFsaXplZCwgYnV0IG9uIG5hcnJvdyBvbmVzIGl0IGlzIG5vdC4gU2VlCi0gICAgICAgICMgIzEyNzQ2LgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEluKCLwnZSY8J2Uq/CdlKbwnZSg8J2UrPCdlKHwnZSiIiwgZGlyKCkpCi0gICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LmNhc2UuX0V4cGVjdGVkRmFpbHVyZShzeXMuZXhjX2luZm8oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiVW5pY29kZSIsIGRpcigpKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZChzZWxmKToKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3OTJjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkKQEAgLTAsMCArMSwyMTEgQEAKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IG9zCitpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBlcnJubworZnJvbSBlcnJubyBpbXBvcnQgRUVYSVNUCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitjbGFzcyBTdWJPU0Vycm9yKE9TRXJyb3IpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvcldpdGhJbml0KE9TRXJyb3IpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXNzYWdlLCBiYXIpOgorICAgICAgICBzZWxmLmJhciA9IGJhcgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKG1lc3NhZ2UpCisKK2NsYXNzIFN1Yk9TRXJyb3JXaXRoTmV3KE9TRXJyb3IpOgorICAgIGRlZiBfX25ld19fKGNscywgbWVzc2FnZSwgYmF6KToKKyAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG1lc3NhZ2UpCisgICAgICAgIHNlbGYuYmF6ID0gYmF6CisgICAgICAgIHJldHVybiBzZWxmCisKK2NsYXNzIFN1Yk9TRXJyb3JDb21iaW5lZEluaXRGaXJzdChTdWJPU0Vycm9yV2l0aEluaXQsIFN1Yk9TRXJyb3JXaXRoTmV3KToKKyAgICBwYXNzCisKK2NsYXNzIFN1Yk9TRXJyb3JDb21iaW5lZE5ld0ZpcnN0KFN1Yk9TRXJyb3JXaXRoTmV3LCBTdWJPU0Vycm9yV2l0aEluaXQpOgorICAgIHBhc3MKKworY2xhc3MgU3ViT1NFcnJvcldpdGhTdGFuZGFsb25lSW5pdChPU0Vycm9yKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBIaWVyYXJjaHlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2J1aWx0aW5fZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9TRXJyb3IuX19uYW1lX18sICdPU0Vycm9yJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhJT0Vycm9yLCBPU0Vycm9yKQorICAgICAgICBzZWxmLmFzc2VydElzKEVudmlyb25tZW50RXJyb3IsIE9TRXJyb3IpCisKKyAgICBkZWYgdGVzdF9zb2NrZXRfZXJyb3JzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzKHNvY2tldC5lcnJvciwgSU9FcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQuZ2FpZXJyb3IuX19iYXNlX18sIE9TRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29ja2V0LmhlcnJvci5fX2Jhc2VfXywgT1NFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb2NrZXQudGltZW91dC5fX2Jhc2VfXywgT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X3NlbGVjdF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxlY3QuZXJyb3IsIE9TRXJyb3IpCisKKyAgICAjIG1tYXAuZXJyb3IgaXMgdGVzdGVkIGluIHRlc3RfbW1hcAorCisgICAgX3BlcF9tYXAgPSAiIiIKKyAgICAgICAgKy0tIEJsb2NraW5nSU9FcnJvciAgICAgICAgRUFHQUlOLCBFQUxSRUFEWSwgRVdPVUxEQkxPQ0ssIEVJTlBST0dSRVNTCisgICAgICAgICstLSBDaGlsZFByb2Nlc3NFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDSElMRAorICAgICAgICArLS0gQ29ubmVjdGlvbkVycm9yCisgICAgICAgICAgICArLS0gQnJva2VuUGlwZUVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVBJUEUsIEVTSFVURE9XTgorICAgICAgICAgICAgKy0tIENvbm5lY3Rpb25BYm9ydGVkRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICBFQ09OTkFCT1JURUQKKyAgICAgICAgICAgICstLSBDb25uZWN0aW9uUmVmdXNlZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNPTk5SRUZVU0VECisgICAgICAgICAgICArLS0gQ29ubmVjdGlvblJlc2V0RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUNPTk5SRVNFVAorICAgICAgICArLS0gRmlsZUV4aXN0c0Vycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRVhJU1QKKyAgICAgICAgKy0tIEZpbGVOb3RGb3VuZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU5PRU5UCisgICAgICAgICstLSBJbnRlcnJ1cHRlZEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFSU5UUgorICAgICAgICArLS0gSXNBRGlyZWN0b3J5RXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFSVNESVIKKyAgICAgICAgKy0tIE5vdEFEaXJlY3RvcnlFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTk9URElSCisgICAgICAgICstLSBQZXJtaXNzaW9uRXJyb3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUFDQ0VTLCBFUEVSTQorICAgICAgICArLS0gUHJvY2Vzc0xvb2t1cEVycm9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNSQ0gKKyAgICAgICAgKy0tIFRpbWVvdXRFcnJvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVRJTUVET1VUCisgICAgIiIiCisgICAgZGVmIF9tYWtlX21hcChzKToKKyAgICAgICAgX21hcCA9IHt9CisgICAgICAgIGZvciBsaW5lIGluIHMuc3BsaXRsaW5lcygpOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoJystICcpCisgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZXhjbmFtZSwgXywgZXJybmFtZXMgPSBsaW5lLnBhcnRpdGlvbignICcpCisgICAgICAgICAgICBmb3IgZXJybmFtZSBpbiBmaWx0ZXIoTm9uZSwgZXJybmFtZXMuc3RyaXAoKS5zcGxpdCgnLCAnKSk6CisgICAgICAgICAgICAgICAgX21hcFtnZXRhdHRyKGVycm5vLCBlcnJuYW1lKV0gPSBnZXRhdHRyKGJ1aWx0aW5zLCBleGNuYW1lKQorICAgICAgICByZXR1cm4gX21hcAorICAgIF9tYXAgPSBfbWFrZV9tYXAoX3BlcF9tYXApCisKKyAgICBkZWYgdGVzdF9lcnJub19tYXBwaW5nKHNlbGYpOgorICAgICAgICAjIFRoZSBPU0Vycm9yIGNvbnN0cnVjdG9yIG1hcHMgZXJybm9zIHRvIHN1YmNsYXNzZXMKKyAgICAgICAgIyBBIHNhbXBsZSB0ZXN0IGZvciB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eQorICAgICAgICBlID0gT1NFcnJvcihFRVhJU1QsICJCYWQgZmlsZSBkZXNjcmlwdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBGaWxlRXhpc3RzRXJyb3IpCisgICAgICAgICMgRXhoYXVzdGl2ZSB0ZXN0aW5nCisgICAgICAgIGZvciBlcnJjb2RlLCBleGMgaW4gc2VsZi5fbWFwLml0ZW1zKCk6CisgICAgICAgICAgICBlID0gT1NFcnJvcihlcnJjb2RlLCAiU29tZSBtZXNzYWdlIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgZXhjKQorICAgICAgICBvdGhlcmNvZGVzID0gc2V0KGVycm5vLmVycm9yY29kZSkgLSBzZXQoc2VsZi5fbWFwKQorICAgICAgICBmb3IgZXJyY29kZSBpbiBvdGhlcmNvZGVzOgorICAgICAgICAgICAgZSA9IE9TRXJyb3IoZXJyY29kZSwgIlNvbWUgbWVzc2FnZSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIE9TRXJyb3IpCisKKyAgICBkZWYgdGVzdF90cnlfZXhjZXB0KHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9ICJzb21lX2hvcGVmdWxseV9ub25fZXhpc3RpbmdfZmlsZSIKKworICAgICAgICAjIFRoaXMgY2hlY2tzIHRoYXQgdHJ5IC4uIGV4Y2VwdCBjaGVja3MgdGhlIGNvbmNyZXRlIGV4Y2VwdGlvbgorICAgICAgICAjIChGaWxlTm90Rm91bmRFcnJvcikgYW5kIG5vdCB0aGUgYmFzZSB0eXBlIHNwZWNpZmllZCB3aGVuCisgICAgICAgICMgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0IHdhcyBjYWxsZWQuCisgICAgICAgICMgKGl0IGlzIHRoZXJlZm9yZSBkZWxpYmVyYXRlIHRoYXQgaXQgZG9lc24ndCB1c2UgYXNzZXJ0UmFpc2VzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcGVuKGZpbGVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZCBoYXZlIHJhaXNlZCBhIEZpbGVOb3RGb3VuZEVycm9yIikKKworICAgICAgICAjIEFub3RoZXIgdGVzdCBmb3IgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MudW5saW5rKGZpbGVuYW1lKQorICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInNob3VsZCBoYXZlIHJhaXNlZCBhIEZpbGVOb3RGb3VuZEVycm9yIikKKworCitjbGFzcyBBdHRyaWJ1dGVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF93aW5kb3dzX2Vycm9yKHNlbGYpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd3aW5lcnJvcicsIGRpcihPU0Vycm9yKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3dpbmVycm9yJywgZGlyKE9TRXJyb3IpKQorCisgICAgZGVmIHRlc3RfcG9zaXhfZXJyb3Ioc2VsZik6CisgICAgICAgIGUgPSBPU0Vycm9yKEVFWElTVCwgIkZpbGUgYWxyZWFkeSBleGlzdHMiLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5lcnJubywgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgRUVYSVNUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuc3RyZXJyb3IsICJGaWxlIGFscmVhZHkgZXhpc3RzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbGVuYW1lLCAiZm9vLnR4dCIpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gIm50IjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgTm9uZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwgIldpbmRvd3Mtc3BlY2lmaWMgdGVzdCIpCisgICAgZGVmIHRlc3RfZXJybm9fdHJhbnNsYXRpb24oc2VsZik6CisgICAgICAgICMgRVJST1JfQUxSRUFEWV9FWElTVFMgKDE4MykgLT4gRUVYSVNUCisgICAgICAgIGUgPSBPU0Vycm9yKDAsICJGaWxlIGFscmVhZHkgZXhpc3RzIiwgImZvby50eHQiLCAxODMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS53aW5lcnJvciwgMTgzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIEVFWElTVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sIEVFWElTVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnN0cmVycm9yLCAiRmlsZSBhbHJlYWR5IGV4aXN0cyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maWxlbmFtZSwgImZvby50eHQiKQorCisgICAgZGVmIHRlc3RfYmxvY2tpbmdpb2Vycm9yKHNlbGYpOgorICAgICAgICBhcmdzID0gKCJhIiwgImIiLCAiYyIsICJkIiwgImUiKQorICAgICAgICBmb3IgbiBpbiByYW5nZSg2KToKKyAgICAgICAgICAgIGUgPSBCbG9ja2luZ0lPRXJyb3IoKmFyZ3NbOm5dKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICAgICAgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4KKyAgICAgICAgZSA9IEJsb2NraW5nSU9FcnJvcigiYSIsICJiIiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmNoYXJhY3RlcnNfd3JpdHRlbiwgMykKKyAgICAgICAgZS5jaGFyYWN0ZXJzX3dyaXR0ZW4gPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5jaGFyYWN0ZXJzX3dyaXR0ZW4sIDUpCisKKyAgICAjIFhYWCBWTVNFcnJvciBub3QgdGVzdGVkCisKKworY2xhc3MgRXhwbGljaXRTdWJjbGFzc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfZXJybm9fbWFwcGluZyhzZWxmKToKKyAgICAgICAgIyBXaGVuIGNvbnN0cnVjdGluZyBhbiBPU0Vycm9yIHN1YmNsYXNzLCBlcnJubyBtYXBwaW5nIGlzbid0IGRvbmUKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3IoRUVYSVNULCAiQmFkIGZpbGUgZGVzY3JpcHRvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgU3ViT1NFcnJvcikKKworICAgIGRlZiB0ZXN0X2luaXRfb3ZlcnJpZGVuKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhJbml0KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJhciwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X2luaXRfa3dkYXJncyhzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoSW5pdCgic29tZSBtZXNzYWdlIiwgYmFyPSJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorCisgICAgZGVmIHRlc3RfbmV3X292ZXJyaWRlbihzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JXaXRoTmV3KCJzb21lIG1lc3NhZ2UiLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X25ld19rd2RhcmdzKHNlbGYpOgorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhOZXcoInNvbWUgbWVzc2FnZSIsIGJhej0iYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X2luaXRfbmV3X292ZXJyaWRlbihzZWxmKToKKyAgICAgICAgZSA9IFN1Yk9TRXJyb3JDb21iaW5lZEluaXRGaXJzdCgic29tZSBtZXNzYWdlIiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5iYXIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmF6LCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3MsICgic29tZSBtZXNzYWdlIiwpKQorICAgICAgICBlID0gU3ViT1NFcnJvckNvbWJpbmVkTmV3Rmlyc3QoInNvbWUgbWVzc2FnZSIsICJiYXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYmFyLCAiYmF6IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmJheiwgImJheiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoInNvbWUgbWVzc2FnZSIsKSkKKworICAgIGRlZiB0ZXN0X2luaXRfc3RhbmRhbG9uZShzZWxmKToKKyAgICAgICAgIyBfX2luaXRfXyBkb2Vzbid0IHByb3BhZ2F0ZSB0byBPU0Vycm9yLl9faW5pdF9fIChzZWUgaXNzdWUgIzE1MjI5KQorICAgICAgICBlID0gU3ViT1NFcnJvcldpdGhTdGFuZGFsb25lSW5pdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICcnKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKworaWYgX19uYW1lX189PSJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAzODAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU2OWUxMAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5CkBAIC0wLDAgKzEsOTY1IEBACisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorCisiIiIKK1Rlc3Qgc3VpdGUgZm9yIFBFUCAzODAgaW1wbGVtZW50YXRpb24KKworYWRhcHRlZCBmcm9tIG9yaWdpbmFsIHRlc3RzIHdyaXR0ZW4gYnkgR3JlZyBFd2luZworc2VlIDxodHRwOi8vd3d3LmNvc2MuY2FudGVyYnVyeS5hYy5uei9ncmVnLmV3aW5nL3B5dGhvbi95aWVsZC1mcm9tL1lpZWxkRnJvbS1QeXRob24zLjEuMi1yZXY1LnppcD4KKyIiIgorCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbworaW1wb3J0IHN5cworaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBwYXJzZXIKKworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX3N0ZGVycgorCitjbGFzcyBUZXN0UEVQMzgwT3BlcmF0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IHNlbWFudGljcy4KKyAgICAiIiIKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfaW5pdGlhbF9uZXh0X3RvX3N1YmdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGlvbiBvZiBpbml0aWFsIG5leHQoKSBjYWxsIHRvIHN1YmdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCA0MgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCA0MiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfcmFpc2luZ19leGNlcHRpb25faW5faW5pdGlhbF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJhaXNpbmcgZXhjZXB0aW9uIGluIGluaXRpYWwgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3BhbmlzaCBpbnF1aXNpdGlvbiBvY2N1cnJlZCIpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIHggaW4gZzEoKToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAic3BhbmlzaCBpbnF1aXNpdGlvbiBvY2N1cnJlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9uZXh0X2NhbGxfdG9fc3ViZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIG5leHQoKSBjYWxsIHRvIHN1YmdlbmVyYXRvcgorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIGZvciB4IGluIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yYWlzaW5nX2V4Y2VwdGlvbl9pbl9kZWxlZ2F0ZWRfbmV4dF9jYWxsKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCByYWlzaW5nIGV4Y2VwdGlvbiBpbiBkZWxlZ2F0ZWQgbmV4dCgpIGNhbGwKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGlvbl9vZl9zZW5kKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIHNlbmQoKQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeCA9IHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzEgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICBnID0gZzEoKQorICAgICAgICB5ID0gbmV4dChnKQorICAgICAgICB4ID0gMQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHkgPSBnLnNlbmQoeCkKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHksKSkKKyAgICAgICAgICAgICAgICB4ICs9IDEKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJnMSByZWNlaXZlZCAxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiZzIgcmVjZWl2ZWQgMyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGVnZ3MiLAorICAgICAgICAgICAgImcxIHJlY2VpdmVkIDQiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9oYW5kbGluZ19leGNlcHRpb25fd2hpbGVfZGVsZWdhdGluZ19zZW5kKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBoYW5kbGluZyBleGNlcHRpb24gd2hpbGUgZGVsZWdhdGluZyAnc2VuZCcKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgIHggPSB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSByZWNlaXZlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICB4ID0geWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICB4ID0geWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHJlY2VpdmVkICVzIiAlICh4LCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJob3ZlcmNyYWZ0IGlzIGZ1bGwgb2YgZWVscyIpCisgICAgICAgICAgICB4ID0geWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZzIgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIHkgPSBuZXh0KGcpCisgICAgICAgICAgICB4ID0gMQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICAgICAgICAgIHkgPSBnLnNlbmQoeCkKKyAgICAgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh5LCkpCisgICAgICAgICAgICAgICAgICAgIHggKz0gMQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdG9wSXRlcmF0aW9uIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixydW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJnMSByZWNlaXZlZCAxIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJnMiByZWNlaXZlZCAyIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfY2xvc2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpbmcgJ2Nsb3NlJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgICAgICB4ID0gbmV4dChnKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIGcuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIgorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfaGFuZGluZ19leGNlcHRpb25fd2hpbGVfZGVsZWdhdGluZ19jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgaGFuZGxpbmcgZXhjZXB0aW9uIHdoaWxlIGRlbGVnYXRpbmcgJ2Nsb3NlJworICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcxIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgaGFtIgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBlZ2dzIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMSIpCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBzcGFtIgorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBtb3JlIHNwYW0iCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcyIikKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJueWJibGVzIGhhdmUgZXhwbG9kZWQgd2l0aCBkZWxpZ2h0IikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZyA9IGcxKCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBnLmNsb3NlKCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAibnliYmxlcyBoYXZlIGV4cGxvZGVkIHdpdGggZGVsaWdodCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZS5fX2NvbnRleHRfXywgR2VuZXJhdG9yRXhpdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBWYWx1ZUVycm9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RhcnRpbmcgZzEiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgaGFtIiwKKyAgICAgICAgICAgICJTdGFydGluZyBnMiIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBzcGFtIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzIiLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW5nX3Rocm93KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW5nICd0aHJvdycKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMSIpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzEiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGcyIikKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgc3BhbSIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkZpbmlzaGluZyBnMiIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGcgPSBnMSgpCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgICAgICB4ID0gbmV4dChnKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICAgICAgZSA9IFZhbHVlRXJyb3IoInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgICAgIGcudGhyb3coZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCAidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIFZhbHVlRXJyb3IiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJTdGFydGluZyBnMSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBoYW0iLAorICAgICAgICAgICAgIlN0YXJ0aW5nIGcyIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcyIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3ZhbHVlX2F0dHJpYnV0ZV9vZl9TdG9wSXRlcmF0aW9uX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgJ3ZhbHVlJyBhdHRyaWJ1dGUgb2YgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIHBleChlKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiJXM6ICVzIiAlIChlLl9fY2xhc3NfXy5fX25hbWVfXywgZSkpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInZhbHVlID0gJXMiICUgKGUudmFsdWUsKSkKKyAgICAgICAgZSA9IFN0b3BJdGVyYXRpb24oKQorICAgICAgICBwZXgoZSkKKyAgICAgICAgZSA9IFN0b3BJdGVyYXRpb24oInNwYW0iKQorICAgICAgICBwZXgoZSkKKyAgICAgICAgZS52YWx1ZSA9ICJlZ2dzIgorICAgICAgICBwZXgoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogIiwKKyAgICAgICAgICAgICJ2YWx1ZSA9IE5vbmUiLAorICAgICAgICAgICAgIlN0b3BJdGVyYXRpb246IHNwYW0iLAorICAgICAgICAgICAgInZhbHVlID0gc3BhbSIsCisgICAgICAgICAgICAiU3RvcEl0ZXJhdGlvbjogc3BhbSIsCisgICAgICAgICAgICAidmFsdWUgPSBlZ2dzIiwKKyAgICAgICAgXSkKKworCisgICAgZGVmIHRlc3RfZXhjZXB0aW9uX3ZhbHVlX2NyYXNoKHNlbGYpOgorICAgICAgICAjIFRoZXJlIHVzZWQgdG8gYmUgYSByZWZjb3VudCBlcnJvciB3aGVuIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgIyBzdG9yZWQgaW4gdGhlIFN0b3BJdGVyYXRpb24gaGFzIGEgcmVmY291bnQgb2YgMS4KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGcyKCkKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB5aWVsZCAiZzIiCisgICAgICAgICAgICByZXR1cm4gWzQyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZzEoKSksIFsiZzIiXSkKKworCisgICAgZGVmIHRlc3RfZ2VuZXJhdG9yX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZ2VuZXJhdG9yIHJldHVybiB2YWx1ZQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgeWllbGQgImcxIGhhbSIKKyAgICAgICAgICAgIHJldCA9IHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlcyIgJSAocmV0LCkpCisgICAgICAgICAgICByZXQgPSB5aWVsZCBmcm9tIGcyKDQyKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMiByZXR1cm5lZCAlcyIgJSAocmV0LCkpCisgICAgICAgICAgICB5aWVsZCAiZzEgZWdncyIKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKHYgPSBOb25lKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzIiKQorICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICB5aWVsZCAiZzIgbW9yZSBzcGFtIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJGaW5pc2hpbmcgZzIiKQorICAgICAgICAgICAgaWYgdjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdgorICAgICAgICBmb3IgeCBpbiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiZzIgcmV0dXJuZWQgTm9uZSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMiBtb3JlIHNwYW0iLAorICAgICAgICAgICAgIkZpbmlzaGluZyBnMiIsCisgICAgICAgICAgICAiZzIgcmV0dXJuZWQgNDIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzEgZWdncyIsCisgICAgICAgICAgICAiRmluaXNoaW5nIGcxIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpb25fb2ZfbmV4dF90b19ub25fZ2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBkZWxlZ2F0aW9uIG9mIG5leHQoKSB0byBub24tZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgIGZvciB4IGluIGcoKToKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZCAlcyIgJSAoeCwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJZaWVsZGVkIDAiLAorICAgICAgICAgICAgIllpZWxkZWQgMSIsCisgICAgICAgICAgICAiWWllbGRlZCAyIiwKKyAgICAgICAgXSkKKworCisgICAgZGVmIHRlc3RfY29udmVyc2lvbl9vZl9zZW5kTm9uZV90b19uZXh0KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCBjb252ZXJzaW9uIG9mIHNlbmQoTm9uZSkgdG8gbmV4dCgpCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgIGdpID0gZygpCisgICAgICAgIGZvciB4IGluIHJhbmdlKDMpOgorICAgICAgICAgICAgeSA9IGdpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiWWllbGRlZDogJXMiICUgKHksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiWWllbGRlZDogMCIsCisgICAgICAgICAgICAiWWllbGRlZDogMSIsCisgICAgICAgICAgICAiWWllbGRlZDogMiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kZWxlZ2F0aW9uX29mX2Nsb3NlX3RvX25vbl9nZW5lcmF0b3Ioc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGRlbGVnYXRpb24gb2YgY2xvc2UoKSB0byBub24tZ2VuZXJhdG9yCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJzdGFydGluZyBnIikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHJhbmdlKDMpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZmluaXNoaW5nIGciKQorICAgICAgICBnaSA9IGcoKQorICAgICAgICBuZXh0KGdpKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIGdpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuZ2V0dmFsdWUoKSwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgInN0YXJ0aW5nIGciLAorICAgICAgICAgICAgImZpbmlzaGluZyBnIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRpbmdfdGhyb3dfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgZGVsZWdhdGluZyAndGhyb3cnIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIlN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMTApCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGciKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICAgICAgeCA9IG5leHQoZ2kpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgICAgICBlID0gVmFsdWVFcnJvcigidG9tYXRvIGVqZWN0ZWQiKQorICAgICAgICAgICAgZ2kudGhyb3coZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5hcmdzWzBdLCJ0b21hdG8gZWplY3RlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGciLAorICAgICAgICAgICAgIllpZWxkZWQgMCIsCisgICAgICAgICAgICAiWWllbGRlZCAxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIDIiLAorICAgICAgICAgICAgIllpZWxkZWQgMyIsCisgICAgICAgICAgICAiWWllbGRlZCA0IiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZyIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9hdHRlbXB0aW5nX3RvX3NlbmRfdG9fbm9uX2dlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgYXR0ZW1wdGluZyB0byBzZW5kIHRvIG5vbi1nZW5lcmF0b3IKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoInN0YXJ0aW5nIGciKQorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gcmFuZ2UoMykKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc2hvdWxkIG5vdCBiZSBoZXJlIikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmaW5pc2hpbmcgZyIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZygpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgZm9yIHggaW4gcmFuZ2UoMyk6CisgICAgICAgICAgICAgICAgeSA9IGdpLnNlbmQoNDIpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTaG91bGQgbm90IGhhdmUgeWllbGRlZDoiLCB5KQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNlbmQiLCBlLmFyZ3NbMF0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoIndhcyBhYmxlIHRvIHNlbmQgaW50byBub24tZ2VuZXJhdG9yIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAic3RhcnRpbmcgZyIsCisgICAgICAgICAgICAiZmluaXNoaW5nIGciLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYnJva2VuX2dldGF0dHJfaGFuZGxpbmcoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHN1Yml0ZXJhdG9yIHdpdGggYSBicm9rZW4gZ2V0YXR0ciBpbXBsZW1lbnRhdGlvbgorICAgICAgICAiIiIKKyAgICAgICAgY2xhc3MgQnJva2VuOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgICAgICAgICAxLzAKKworICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeWllbGQgZnJvbSBCcm9rZW4oKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnaSksIDEpCisgICAgICAgICAgICBnaS5zZW5kKDEpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBnaSA9IGcoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGdpKSwgMSkKKyAgICAgICAgICAgIGdpLnRocm93KEF0dHJpYnV0ZUVycm9yKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChnaSksIDEpCisgICAgICAgICAgICBnaS5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1plcm9EaXZpc2lvbkVycm9yJywgb3V0cHV0LmdldHZhbHVlKCkpCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25faW5faW5pdGlhbF9uZXh0X2NhbGwoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGV4Y2VwdGlvbiBpbiBpbml0aWFsIG5leHQoKSBjYWxsCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBhYm91dCB0byB5aWVsZCBmcm9tIGcyIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBzaG91bGQgbm90IGJlIGhlcmUiKQorICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHlpZWxkIDEvMAorICAgICAgICBkZWYgcnVuKCk6CisgICAgICAgICAgICBnaSA9IGcxKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLHJ1bikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZzEgYWJvdXQgdG8geWllbGQgZnJvbSBnMiIKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2F0dGVtcHRlZF95aWVsZF9mcm9tX2xvb3Aoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGF0dGVtcHRlZCB5aWVsZC1mcm9tIGxvb3AKKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGcxKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxOiBzdGFydGluZyIpCisgICAgICAgICAgICB5aWVsZCAieTEiCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcxOiBhYm91dCB0byB5aWVsZCBmcm9tIGcyIikKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZzIoKQorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMSBzaG91bGQgbm90IGJlIGhlcmUiKQorCisgICAgICAgIGRlZiBnMigpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMjogc3RhcnRpbmciKQorICAgICAgICAgICAgeWllbGQgInkyIgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnMjogYWJvdXQgdG8geWllbGQgZnJvbSBnMSIpCisgICAgICAgICAgICB5aWVsZCBmcm9tIGdpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcyIHNob3VsZCBub3QgYmUgaGVyZSIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGdpID0gZzEoKQorICAgICAgICAgICAgZm9yIHkgaW4gZ2k6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkOiAlcyIgJSAoeSwpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBkaWRuJ3QgcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgImcxOiBzdGFydGluZyIsCisgICAgICAgICAgICAiWWllbGRlZDogeTEiLAorICAgICAgICAgICAgImcxOiBhYm91dCB0byB5aWVsZCBmcm9tIGcyIiwKKyAgICAgICAgICAgICJnMjogc3RhcnRpbmciLAorICAgICAgICAgICAgIllpZWxkZWQ6IHkyIiwKKyAgICAgICAgICAgICJnMjogYWJvdXQgdG8geWllbGQgZnJvbSBnMSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9yZXR1cm5pbmdfdmFsdWVfZnJvbV9kZWxlZ2F0ZWRfdGhyb3coc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHJldHVybmluZyB2YWx1ZSBmcm9tIGRlbGVnYXRlZCAndGhyb3cnCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBnMSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiU3RhcnRpbmcgZzEiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMSBoYW0iCisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMigpCisgICAgICAgICAgICAgICAgeWllbGQgImcxIGVnZ3MiCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRmluaXNoaW5nIGcxIikKKyAgICAgICAgZGVmIGcyKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJTdGFydGluZyBnMiIpCisgICAgICAgICAgICAgICAgeWllbGQgImcyIHNwYW0iCisgICAgICAgICAgICAgICAgeWllbGQgImcyIG1vcmUgc3BhbSIKKyAgICAgICAgICAgIGV4Y2VwdCBMdW5jaEVycm9yOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiQ2F1Z2h0IEx1bmNoRXJyb3IgaW4gZzIiKQorICAgICAgICAgICAgICAgIHlpZWxkICJnMiBsdW5jaCBzYXZlZCIKKyAgICAgICAgICAgICAgICB5aWVsZCAiZzIgeWV0IG1vcmUgc3BhbSIKKyAgICAgICAgY2xhc3MgTHVuY2hFcnJvcihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBnID0gZzEoKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHggPSBuZXh0KGcpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIllpZWxkZWQgJXMiICUgKHgsKSkKKyAgICAgICAgZSA9IEx1bmNoRXJyb3IoInRvbWF0byBlamVjdGVkIikKKyAgICAgICAgZy50aHJvdyhlKQorICAgICAgICBmb3IgeCBpbiBnOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJZaWVsZGVkICVzIiAlICh4LCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIlN0YXJ0aW5nIGcxIiwKKyAgICAgICAgICAgICJZaWVsZGVkIGcxIGhhbSIsCisgICAgICAgICAgICAiU3RhcnRpbmcgZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgc3BhbSIsCisgICAgICAgICAgICAiQ2F1Z2h0IEx1bmNoRXJyb3IgaW4gZzIiLAorICAgICAgICAgICAgIllpZWxkZWQgZzIgeWV0IG1vcmUgc3BhbSIsCisgICAgICAgICAgICAiWWllbGRlZCBnMSBlZ2dzIiwKKyAgICAgICAgICAgICJGaW5pc2hpbmcgZzEiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbmV4dF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IG5leHQgYW5kIHJldHVybiB3aXRoIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKHIpOgorICAgICAgICAgICAgZ2kgPSBnKHIpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiByZXN1bWluZyBnIikKKyAgICAgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBTSE9VTEQgTk9UIEJFIEhFUkUiKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImYgY2F1Z2h0ICVzIiAlIChyZXByKGUpLCkpCisgICAgICAgIGRlZiBnKHIpOgorICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJnIHN0YXJ0aW5nIikKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmV0dXJuaW5nICVzIiAlIChyLCkpCisgICAgICAgICAgICByZXR1cm4gcgorICAgICAgICBmKE5vbmUpCisgICAgICAgIGYoNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgcmVzdW1pbmcgZyIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgTm9uZSIsCisgICAgICAgICAgICAiZiBjYXVnaHQgU3RvcEl0ZXJhdGlvbigpIiwKKyAgICAgICAgICAgICJnIHN0YXJ0aW5nIiwKKyAgICAgICAgICAgICJmIHJlc3VtaW5nIGciLAorICAgICAgICAgICAgImcgcmV0dXJuaW5nIDQyIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKDQyLCkiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfc2VuZF9hbmRfcmV0dXJuX3dpdGhfdmFsdWUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHNlbmQgYW5kIHJldHVybiB3aXRoIHZhbHVlCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKHIpOgorICAgICAgICAgICAgZ2kgPSBnKHIpCisgICAgICAgICAgICBuZXh0KGdpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBzZW5kaW5nIHNwYW0gdG8gZyIpCisgICAgICAgICAgICAgICAgZ2kuc2VuZCgic3BhbSIpCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJmIFNIT1VMRCBOT1QgQkUgSEVSRSIpCisgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZiBjYXVnaHQgJXIiICUgKGUsKSkKKyAgICAgICAgZGVmIGcocik6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgc3RhcnRpbmciKQorICAgICAgICAgICAgeCA9IHlpZWxkCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImcgcmVjZWl2ZWQgJXMiICUgKHgsKSkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiZyByZXR1cm5pbmcgJXMiICUgKHIsKSkKKyAgICAgICAgICAgIHJldHVybiByCisgICAgICAgIGYoTm9uZSkKKyAgICAgICAgZig0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiZyBzdGFydGluZyIsCisgICAgICAgICAgICAiZiBzZW5kaW5nIHNwYW0gdG8gZyIsCisgICAgICAgICAgICAiZyByZWNlaXZlZCBzcGFtIiwKKyAgICAgICAgICAgICJnIHJldHVybmluZyBOb25lIiwKKyAgICAgICAgICAgICJmIGNhdWdodCBTdG9wSXRlcmF0aW9uKCkiLAorICAgICAgICAgICAgImcgc3RhcnRpbmciLAorICAgICAgICAgICAgImYgc2VuZGluZyBzcGFtIHRvIGciLAorICAgICAgICAgICAgImcgcmVjZWl2ZWQgc3BhbSIsCisgICAgICAgICAgICAiZyByZXR1cm5pbmcgNDIiLAorICAgICAgICAgICAgImYgY2F1Z2h0IFN0b3BJdGVyYXRpb24oNDIsKSIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9jYXRjaGluZ19leGNlcHRpb25fZnJvbV9zdWJnZW5fYW5kX3JldHVybmluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHRocm93biBpbnRvIGEKKyAgICAgICAgc3ViZ2VuZXJhdG9yIGFuZCByZXR1cm5pbmcgYSB2YWx1ZQorICAgICAgICAiIiIKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWYgaW5uZXIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIikKKyAgICAgICAgICAgIHJldHVybiAyCisKKyAgICAgICAgZGVmIG91dGVyKCk6CisgICAgICAgICAgICB2ID0geWllbGQgZnJvbSBpbm5lcigpCisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoImlubmVyIHJldHVybmVkICVyIHRvIG91dGVyIiAlIHYpCisgICAgICAgICAgICB5aWVsZCB2CisgICAgICAgIGcgPSBvdXRlcigpCisgICAgICAgIHRyYWNlLmFwcGVuZChuZXh0KGcpKQorICAgICAgICB0cmFjZS5hcHBlbmQoZy50aHJvdyhWYWx1ZUVycm9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgImlubmVyIGNhdWdodCBWYWx1ZUVycm9yIiwKKyAgICAgICAgICAgICJpbm5lciByZXR1cm5lZCAyIHRvIG91dGVyIiwKKyAgICAgICAgICAgIDIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuX3RoYXRfcmV0dXJucyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhyb3dpbmcgR2VuZXJhdG9yRXhpdCBpbnRvIGEgc3ViZ2VuZXJhdG9yIHRoYXQKKyAgICAgICAgY2F0Y2hlcyBpdCBhbmQgcmV0dXJucyBub3JtYWxseS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGYiKQorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFeGl0IGYiKQorICAgICAgICAgICAgZXhjZXB0IEdlbmVyYXRvckV4aXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgR2VuZXJhdG9yRXhpdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgic3ViZ2VuZXJhdG9yIGZhaWxlZCB0byByYWlzZSBHZW5lcmF0b3JFeGl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSxbCisgICAgICAgICAgICAiRW50ZXIgZyIsCisgICAgICAgICAgICAiRW50ZXIgZiIsCisgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF90aHJvd2luZ19HZW5lcmF0b3JFeGl0X2ludG9fc3ViZ2VuZXJhdG9yX3RoYXRfeWllbGRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aHJvd2luZyBHZW5lcmF0b3JFeGl0IGludG8gYSBzdWJnZW5lcmF0b3IgdGhhdAorICAgICAgICBjYXRjaGVzIGl0IGFuZCB5aWVsZHMuCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFbnRlciBmIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBmIikKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXJnc1swXSwgImdlbmVyYXRvciBpZ25vcmVkIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJzdWJnZW5lcmF0b3IgZmFpbGVkIHRvIHJhaXNlIEdlbmVyYXRvckV4aXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLFsKKyAgICAgICAgICAgICJFbnRlciBnIiwKKyAgICAgICAgICAgICJFbnRlciBmIiwKKyAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3Rocm93aW5nX0dlbmVyYXRvckV4aXRfaW50b19zdWJnZW5fdGhhdF9yYWlzZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRocm93aW5nIEdlbmVyYXRvckV4aXQgaW50byBhIHN1YmdlbmVyYXRvciB0aGF0CisgICAgICAgIGNhdGNoZXMgaXQgYW5kIHJhaXNlcyBhIGRpZmZlcmVudCBleGNlcHRpb24uCisgICAgICAgICIiIgorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJhY2UuYXBwZW5kKCJFbnRlciBmIikKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBmIikKKyAgICAgICAgICAgIGV4Y2VwdCBHZW5lcmF0b3JFeGl0OgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlZvcnBhbCBidW5ueSBlbmNvdW50ZXJlZCIpCisgICAgICAgIGRlZiBnKCk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoIkVudGVyIGciKQorICAgICAgICAgICAgeWllbGQgZnJvbSBmKCkKKyAgICAgICAgICAgIHRyYWNlLmFwcGVuZCgiRXhpdCBnIikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZ2kgPSBnKCkKKyAgICAgICAgICAgIG5leHQoZ2kpCisgICAgICAgICAgICBnaS50aHJvdyhHZW5lcmF0b3JFeGl0KQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmFyZ3NbMF0sICJWb3JwYWwgYnVubnkgZW5jb3VudGVyZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIEdlbmVyYXRvckV4aXQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoInN1YmdlbmVyYXRvciBmYWlsZWQgdG8gcmFpc2UgVmFsdWVFcnJvciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsWworICAgICAgICAgICAgIkVudGVyIGciLAorICAgICAgICAgICAgIkVudGVyIGYiLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfeWllbGRfZnJvbV9lbXB0eShzZWxmKToKKyAgICAgICAgZGVmIGcoKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgZygpKQorCisgICAgZGVmIHRlc3RfZGVsZWdhdGluZ19nZW5lcmF0b3JzX2NsYWltX3RvX2JlX3J1bm5pbmcoc2VsZik6CisgICAgICAgICMgQ2hlY2sgd2l0aCBiYXNpYyBpdGVyYXRpb24KKyAgICAgICAgZGVmIG9uZSgpOgorICAgICAgICAgICAgeWllbGQgMAorICAgICAgICAgICAgeWllbGQgZnJvbSB0d28oKQorICAgICAgICAgICAgeWllbGQgMworICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBnMQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgeWllbGQgMgorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnMSksIFswLCAxLCAyLCAzXSkKKyAgICAgICAgIyBDaGVjayB3aXRoIHNlbmQKKyAgICAgICAgZzEgPSBvbmUoKQorICAgICAgICByZXMgPSBbbmV4dChnMSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnMS5zZW5kKDQyKSkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBbMCwgMSwgMiwgM10pCisgICAgICAgICMgQ2hlY2sgd2l0aCB0aHJvdworICAgICAgICBjbGFzcyBNeUVycihFeGNlcHRpb24pOgorICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMAorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHlpZWxkIGZyb20gdHdvKCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgICAgICBleGNlcHQgTXlFcnI6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBkZWYgdHdvKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIGcxCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZXhjZXB0IE15RXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZzEgPSBvbmUoKQorICAgICAgICByZXMgPSBbbmV4dChnMSldCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChnMS50aHJvdyhNeUVycikpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgcGFzcworICAgICAgICAjIENoZWNrIHdpdGggY2xvc2UKKyAgICAgICAgY2xhc3MgTXlJdChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgICAgICBkZWYgX19uZXh0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZl8pOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnMS5naV9ydW5uaW5nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5leHQsIGcxKQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIE15SXQoKQorICAgICAgICBnMSA9IG9uZSgpCisgICAgICAgIG5leHQoZzEpCisgICAgICAgIGcxLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2RlbGVnYXRvcl9pc192aXNpYmxlX3RvX2RlYnVnZ2VyKHNlbGYpOgorICAgICAgICBkZWYgY2FsbF9zdGFjaygpOgorICAgICAgICAgICAgcmV0dXJuIFtmWzNdIGZvciBmIGluIGluc3BlY3Quc3RhY2soKV0KKworICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCBjYWxsX3N0YWNrKCkKKyAgICAgICAgICAgIHlpZWxkIGNhbGxfc3RhY2soKQorICAgICAgICAgICAgeWllbGQgY2FsbF9zdGFjaygpCisKKyAgICAgICAgZGVmIHNwYW0oZyk6CisgICAgICAgICAgICB5aWVsZCBmcm9tIGcKKworICAgICAgICBkZWYgZWdncyhnKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gZworCisgICAgICAgIGZvciBzdGFjayBpbiBzcGFtKGdlbigpKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnc3BhbScgaW4gc3RhY2spCisKKyAgICAgICAgZm9yIHN0YWNrIGluIHNwYW0oZWdncyhnZW4oKSkpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzcGFtJyBpbiBzdGFjayBhbmQgJ2VnZ3MnIGluIHN0YWNrKQorCisgICAgZGVmIHRlc3RfY3VzdG9tX2l0ZXJhdG9yX3JldHVybihzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgIzE1NTY4CisgICAgICAgIGNsYXNzIE15SXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICAgICAgZGVmIF9fbmV4dF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24oNDIpCisgICAgICAgIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIHJldAorICAgICAgICAgICAgcmV0ID0geWllbGQgZnJvbSBNeUl0ZXIoKQorICAgICAgICByZXQgPSBOb25lCisgICAgICAgIGxpc3QoZ2VuKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0LCA0MikKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisgICAgdGVzdF9jbGFzc2VzID0gW1Rlc3RQRVAzODBPcGVyYXRpb25dCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RfY2xhc3NlcykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IDlkYTJjYWUuLmY1MmQ0YmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGlvCitpbXBvcnQgY29sbGVjdGlvbnMKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTcsNiArOCw3IEBACiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzCiBmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdFBlcnNpc3RlbnRQaWNrbGVyVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlclVucGlja2xlck9iamVjdFRlc3RzCitmcm9tIHRlc3QucGlja2xldGVzdGVyIGltcG9ydCBBYnN0cmFjdERpc3BhdGNoVGFibGVUZXN0cwogZnJvbSB0ZXN0LnBpY2tsZXRlc3RlciBpbXBvcnQgQmlnbWVtUGlja2xlVGVzdHMKIAogdHJ5OgpAQCAtODAsNiArODIsMTggQEAKICAgICB1bnBpY2tsZXJfY2xhc3MgPSBwaWNrbGUuX1VucGlja2xlcgogCiAKK2NsYXNzIFB5RGlzcGF0Y2hUYWJsZVRlc3RzKEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKToKKyAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLl9QaWNrbGVyCisgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHBpY2tsZS5kaXNwYXRjaF90YWJsZS5jb3B5KCkKKworCitjbGFzcyBQeUNoYWluRGlzcGF0Y2hUYWJsZVRlc3RzKEFic3RyYWN0RGlzcGF0Y2hUYWJsZVRlc3RzKToKKyAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLl9QaWNrbGVyCisgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb25zLkNoYWluTWFwKHt9LCBwaWNrbGUuZGlzcGF0Y2hfdGFibGUpCisKKwogaWYgaGFzX2NfaW1wbGVtZW50YXRpb246CiAgICAgY2xhc3MgQ1BpY2tsZXJUZXN0cyhQeVBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHBpY2tsZXIgPSBfcGlja2xlLlBpY2tsZXIKQEAgLTEwMSwxNCArMTE1LDI2IEBACiAgICAgICAgIHBpY2tsZXJfY2xhc3MgPSBfcGlja2xlLlBpY2tsZXIKICAgICAgICAgdW5waWNrbGVyX2NsYXNzID0gX3BpY2tsZS5VbnBpY2tsZXIKIAorICAgIGNsYXNzIENEaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgICAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLlBpY2tsZXIKKyAgICAgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBwaWNrbGUuZGlzcGF0Y2hfdGFibGUuY29weSgpCisKKyAgICBjbGFzcyBDQ2hhaW5EaXNwYXRjaFRhYmxlVGVzdHMoQWJzdHJhY3REaXNwYXRjaFRhYmxlVGVzdHMpOgorICAgICAgICBwaWNrbGVyX2NsYXNzID0gcGlja2xlLlBpY2tsZXIKKyAgICAgICAgZGVmIGdldF9kaXNwYXRjaF90YWJsZShzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5DaGFpbk1hcCh7fSwgcGlja2xlLmRpc3BhdGNoX3RhYmxlKQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICB0ZXN0cyA9IFtQaWNrbGVUZXN0cywgUHlQaWNrbGVyVGVzdHMsIFB5UGVyc1BpY2tsZXJUZXN0c10KKyAgICB0ZXN0cyA9IFtQaWNrbGVUZXN0cywgUHlQaWNrbGVyVGVzdHMsIFB5UGVyc1BpY2tsZXJUZXN0cywKKyAgICAgICAgICAgICBQeURpc3BhdGNoVGFibGVUZXN0cywgUHlDaGFpbkRpc3BhdGNoVGFibGVUZXN0c10KICAgICBpZiBoYXNfY19pbXBsZW1lbnRhdGlvbjoKICAgICAgICAgdGVzdHMuZXh0ZW5kKFtDUGlja2xlclRlc3RzLCBDUGVyc1BpY2tsZXJUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICBDRHVtcFBpY2tsZV9Mb2FkUGlja2xlLCBEdW1wUGlja2xlX0NMb2FkUGlja2xlLAogICAgICAgICAgICAgICAgICAgICAgIFB5UGlja2xlclVucGlja2xlck9iamVjdFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIENQaWNrbGVyVW5waWNrbGVyT2JqZWN0VGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgQ0Rpc3BhdGNoVGFibGVUZXN0cywgQ0NoYWluRGlzcGF0Y2hUYWJsZVRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgIEluTWVtb3J5UGlja2xlVGVzdHNdKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHBpY2tsZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CmluZGV4IGQ1Yjg4NmYuLjZhN2I0NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9waXBlcy5weQpAQCAtNzksMjEgKzc5LDYgQEAKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGQpCiAKLSAgICBkZWYgdGVzdFF1b3Rpbmcoc2VsZik6Ci0gICAgICAgIHNhZmV1bnF1b3RlZCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJwotICAgICAgICB1bmljb2RlX3NhbXBsZSA9ICdceGU5XHhlMFx4ZGYnICAjIGUgKyBhY3V0ZSBhY2NlbnQsIGEgKyBncmF2ZSwgc2hhcnAgcwotICAgICAgICB1bnNhZmUgPSAnImAkXFwhJyArIHVuaWNvZGVfc2FtcGxlCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwaXBlcy5xdW90ZSgnJyksICInJyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoc2FmZXVucXVvdGVkKSwgc2FmZXVucXVvdGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpcGVzLnF1b3RlKCd0ZXN0IGZpbGUgbmFtZScpLCAiJ3Rlc3QgZmlsZSBuYW1lJyIpCi0gICAgICAgIGZvciB1IGluIHVuc2FmZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoJ3Rlc3Qlc25hbWUnICUgdSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3Qlc25hbWUnIiAlIHUpCi0gICAgICAgIGZvciB1IGluIHVuc2FmZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGlwZXMucXVvdGUoInRlc3QlcyduYW1lJyIgJSB1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIid0ZXN0JXMnXCInXCInbmFtZSdcIidcIicnIiAlIHUpCi0KICAgICBkZWYgdGVzdFJlcHIoc2VsZik6CiAgICAgICAgIHQgPSBwaXBlcy5UZW1wbGF0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih0KSwgIjxUZW1wbGF0ZSBpbnN0YW5jZSwgc3RlcHM9W10+IikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtnLnB5IGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKaW5kZXggYTRkZGIxNS4uMzU1ZWZlNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wa2cucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2cucHkKQEAgLTIzLDYgKzIzLDggQEAKIGRlZiBmaXhkaXIobHN0KToKICAgICBpZiAiX19idWlsdGluc19fIiBpbiBsc3Q6CiAgICAgICAgIGxzdC5yZW1vdmUoIl9fYnVpbHRpbnNfXyIpCisgICAgaWYgIl9faW5pdGlhbGl6aW5nX18iIGluIGxzdDoKKyAgICAgICAgbHN0LnJlbW92ZSgiX19pbml0aWFsaXppbmdfXyIpCiAgICAgcmV0dXJuIGxzdAogCiAKQEAgLTE5NiwxNCArMTk4LDE1IEBACiAKICAgICAgICAgaW1wb3J0IHQ1CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJywgJ2ZvbycsICdzdHJpbmcnLCAndDUnXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJywgJ2ZvbycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcnLCAndDUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHQ1LmZvbykpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ3N0cmluZyddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnc3RyaW5nJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NS5zdHJpbmcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX25hbWVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhY2thZ2VfXycsICdzcGFtJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdzcGFtJ10pCiAKICAgICBkZWYgdGVzdF82KHNlbGYpOgogICAgICAgICBoaWVyID0gWwpAQCAtMjE5LDE0ICsyMjIsMTQgQEAKICAgICAgICAgaW1wb3J0IHQ2CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZml4ZGlyKGRpcih0NikpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19hbGxfXycsICdfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbG9hZGVyX18nLCAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKICAgICAgICAgcyA9ICIiIgogICAgICAgICAgICAgaW1wb3J0IHQ2CiAgICAgICAgICAgICBmcm9tIHQ2IGltcG9ydCAqCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodDYpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2FsbF9fJywgJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VnZ3MnLCAnaGFtJywgJ3NwYW0nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2xvYWRlcl9fJywgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3BhdGhfXycsICdlZ2dzJywgJ2hhbScsICdzcGFtJ10pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcigpLCBbJ2VnZ3MnLCAnaGFtJywgJ3NlbGYnLCAnc3BhbScsICd0NiddKQogICAgICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYucnVuX2NvZGUocykKQEAgLTI1MiwxOSArMjU1LDE5IEBACiAgICAgICAgIHQ3LCBzdWIsIHN1YnN1YiA9IE5vbmUsIE5vbmUsIE5vbmUKICAgICAgICAgaW1wb3J0IHQ3IGFzIHRhcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpeGRpcihkaXIodGFzKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19uYW1lX18nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ19fY2FjaGVkX18nLCAnX19kb2NfXycsICdfX2ZpbGVfXycsICdfX2xvYWRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJywgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodDcpCiAgICAgICAgIGZyb20gdDcgaW1wb3J0IHN1YiBhcyBzdWJwYXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHN1YnBhcikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGFja2FnZV9fJywgJ19fcGF0aF9fJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgWydfX2NhY2hlZF9fJywgJ19fZG9jX18nLCAnX19maWxlX18nLCAnX19sb2FkZXJfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdfX25hbWVfXycsICdfX3BhY2thZ2VfXycsICdfX3BhdGhfXyddKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQ3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YikKICAgICAgICAgZnJvbSB0Ny5zdWIgaW1wb3J0IHN1YnN1YiBhcyBzdWJzdWJzdWIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaXhkaXIoZGlyKHN1YnN1YnN1YikpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbmFtZV9fJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnc3BhbSddKQorICAgICAgICAgICAgICAgICAgICAgICAgIFsnX19jYWNoZWRfXycsICdfX2RvY19fJywgJ19fZmlsZV9fJywgJ19fbG9hZGVyX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX19uYW1lX18nLCAnX19wYWNrYWdlX18nLCAnX19wYXRoX18nLCAnc3BhbSddKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQ3KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1YikKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdWJzdWIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BrZ2ltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CmluZGV4IGMzN2U5MzYuLmE4NDI2YjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGtnaW1wb3J0LnB5CkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gaW1wIGltcG9ydCBjYWNoZV9mcm9tX3NvdXJjZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3JlYXRlX2VtcHR5X2ZpbGUKIAogY2xhc3MgVGVzdEltcG9ydCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI5LDcgKzI5LDcgQEAKICAgICAgICAgc2VsZi5wYWNrYWdlX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RfZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFja2FnZV9uYW1lKQogICAgICAgICBvcy5ta2RpcihzZWxmLnBhY2thZ2VfZGlyKQotICAgICAgICBvcGVuKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnX19pbml0X18ucHknKSwgJ3cnKS5jbG9zZSgpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnX19pbml0X18ucHknKSkKICAgICAgICAgc2VsZi5tb2R1bGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhY2thZ2VfZGlyLCAnZm9vLnB5JykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCAzYjcyZjA2Li44OGUyZDMzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdW5sb2FkCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIGNoZWNrX3dhcm5pbmdzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBpbXAKQEAgLTksNyArOSwxMSBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHppcGZpbGUKIAotCisjIE5vdGU6IHBrZ3V0aWwud2Fsa19wYWNrYWdlcyBpcyBjdXJyZW50bHkgdGVzdGVkIGluIHRlc3RfcnVucHkuIFRoaXMgaXMKKyMgYSBoYWNrIHRvIGdldCBhIG1ham9yIGlzc3VlIHJlc29sdmVkIGZvciAzLjNiMi4gTG9uZ2VyIHRlcm0sIGl0IHNob3VsZAorIyBiZSBtb3ZlZCBiYWNrIGhlcmUsIHBlcmhhcHMgYnkgZmFjdG9yaW5nIG91dCB0aGUgaGVscGVyIGNvZGUgZm9yCisjIGNyZWF0aW5nIGludGVyZXN0aW5nIHBhY2thZ2UgbGF5b3V0cyB0byBhIHNlcGFyYXRlIG1vZHVsZS4KKyMgSXNzdWUgIzE1MzQ4IGRlY2xhcmVzIHRoaXMgaXMgaW5kZWVkIGEgZG9kZ3kgaGFjayA7KQogCiBjbGFzcyBQa2d1dGlsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMzgsMTAgKzE0MiwxMSBAQAogICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2ZvbyddCiAKIAorIyBUaGVzZSB0ZXN0cywgZXNwZWNpYWxseSB0aGUgc2V0dXAgYW5kIGNsZWFudXAsIGFyZSBoaWRlb3VzLiBUaGV5CisjIG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBvbmNlIGlzc3VlIDE0NzE1IGlzIGFkZHJlc3NlZC4KIGNsYXNzIEV4dGVuZFBhdGhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIGNyZWF0ZV9pbml0KHNlbGYsIHBrZ25hbWUpOgogICAgICAgICBkaXJuYW1lID0gdGVtcGZpbGUubWtkdGVtcCgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBkaXJuYW1lKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgZGlybmFtZSkKIAogICAgICAgICBwa2dkaXIgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgcGtnbmFtZSkKQEAgLTE1NiwyMiArMTYxLDEyIEBACiAgICAgICAgIHdpdGggb3Blbihtb2R1bGVfbmFtZSwgJ3cnKSBhcyBmbDoKICAgICAgICAgICAgIHByaW50KCd2YWx1ZT17fScuZm9ybWF0KHZhbHVlKSwgZmlsZT1mbCkKIAotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIyBDcmVhdGUgMiBkaXJlY3RvcmllcyBvbiBzeXMucGF0aAotICAgICAgICBzZWxmLnBrZ25hbWUgPSAnZm9vJwotICAgICAgICBzZWxmLmRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQoc2VsZi5wa2duYW1lKQotICAgICAgICBzZWxmLmRpcm5hbWVfMSA9IHNlbGYuY3JlYXRlX2luaXQoc2VsZi5wa2duYW1lKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBkZWwgc3lzLnBhdGhbMF0KLSAgICAgICAgZGVsIHN5cy5wYXRoWzBdCi0gICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KLSAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KLQogICAgIGRlZiB0ZXN0X3NpbXBsZShzZWxmKToKLSAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKHNlbGYuZGlybmFtZV8wLCBzZWxmLnBrZ25hbWUsICdiYXInLCAwKQotICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoc2VsZi5kaXJuYW1lXzEsIHNlbGYucGtnbmFtZSwgJ2JheicsIDEpCisgICAgICAgIHBrZ25hbWUgPSAnZm9vJworICAgICAgICBkaXJuYW1lXzAgPSBzZWxmLmNyZWF0ZV9pbml0KHBrZ25hbWUpCisgICAgICAgIGRpcm5hbWVfMSA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgc2VsZi5jcmVhdGVfc3VibW9kdWxlKGRpcm5hbWVfMCwgcGtnbmFtZSwgJ2JhcicsIDApCisgICAgICAgIHNlbGYuY3JlYXRlX3N1Ym1vZHVsZShkaXJuYW1lXzEsIHBrZ25hbWUsICdiYXonLCAxKQogICAgICAgICBpbXBvcnQgZm9vLmJhcgogICAgICAgICBpbXBvcnQgZm9vLmJhegogICAgICAgICAjIEVuc3VyZSB3ZSByZWFkIHRoZSBleHBlY3RlZCB2YWx1ZXMKQEAgLTE4MCw4ICsxNzUsNDUgQEAKIAogICAgICAgICAjIEVuc3VyZSB0aGUgcGF0aCBpcyBzZXQgdXAgY29ycmVjdGx5CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGZvby5fX3BhdGhfXyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkKFtvcy5wYXRoLmpvaW4oc2VsZi5kaXJuYW1lXzAsIHNlbGYucGtnbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kaXJuYW1lXzEsIHNlbGYucGtnbmFtZSldKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRpcm5hbWVfMSwgcGtnbmFtZSldKSkKKworICAgICAgICAjIENsZWFudXAKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzApCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZV8xKQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KKworICAgIGRlZiB0ZXN0X21peGVkX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgcGtnbmFtZSA9ICdmb28nCisgICAgICAgIGRpcm5hbWVfMCA9IHNlbGYuY3JlYXRlX2luaXQocGtnbmFtZSkKKyAgICAgICAgZGlybmFtZV8xID0gc2VsZi5jcmVhdGVfaW5pdChwa2duYW1lKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8wLCBwa2duYW1lLCAnYmFyJywgMCkKKyAgICAgICAgIyBUdXJuIHRoaXMgaW50byBhIFBFUCA0MjAgbmFtZXNwYWNlIHBhY2thZ2UKKyAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUsICdfX2luaXRfXy5weScpKQorICAgICAgICBzZWxmLmNyZWF0ZV9zdWJtb2R1bGUoZGlybmFtZV8xLCBwa2duYW1lLCAnYmF6JywgMSkKKyAgICAgICAgaW1wb3J0IGZvby5iYXIKKyAgICAgICAgaW1wb3J0IGZvby5iYXoKKyAgICAgICAgIyBFbnN1cmUgd2UgcmVhZCB0aGUgZXhwZWN0ZWQgdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhci52YWx1ZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmF6LnZhbHVlLCAxKQorCisgICAgICAgICMgRW5zdXJlIHRoZSBwYXRoIGlzIHNldCB1cCBjb3JyZWN0bHkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoZm9vLl9fcGF0aF9fKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0ZWQoW29zLnBhdGguam9pbihkaXJuYW1lXzAsIHBrZ25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRpcm5hbWVfMSwgcGtnbmFtZSldKSkKKworICAgICAgICAjIENsZWFudXAKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkaXJuYW1lXzApCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZV8xKQorICAgICAgICBkZWwgc3lzLnBhdGhbMF0KKyAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1snZm9vJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmFyJ10KKyAgICAgICAgZGVsIHN5cy5tb2R1bGVzWydmb28uYmF6J10KIAogICAgICMgWFhYOiB0ZXN0IC5wa2cgZmlsZXMKIApAQCAtMjI3LDEyICsyNTksNTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCAyKQogCiAKK2NsYXNzIEltcG9ydGxpYk1pZ3JhdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFdpdGggZnVsbCBQRVAgMzAyIHN1cHBvcnQgaW4gdGhlIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnksIHRoZQorICAgICMgUEVQIDMwMiBlbXVsYXRpb24gaW4gdGhpcyBtb2R1bGUgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcKKyAgICAjIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGltcG9ydGxpYiBwcm9wZXIKKworICAgIGRlZiBjaGVja19kZXByZWNhdGVkKHNlbGYpOgorICAgICAgICByZXR1cm4gY2hlY2tfd2FybmluZ3MoCisgICAgICAgICAgICAoIlRoaXMgZW11bGF0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSAnaW1wb3J0bGliJyBpbnN0ZWFkIiwKKyAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKQorCisgICAgZGVmIHRlc3RfaW1wb3J0ZXJfZGVwcmVjYXRlZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX2RlcHJlY2F0ZWQoKToKKyAgICAgICAgICAgIHggPSBwa2d1dGlsLkltcEltcG9ydGVyKCIiKQorCisgICAgZGVmIHRlc3RfbG9hZGVyX2RlcHJlY2F0ZWQoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5jaGVja19kZXByZWNhdGVkKCk6CisgICAgICAgICAgICB4ID0gcGtndXRpbC5JbXBMb2FkZXIoIiIsICIiLCAiIiwgIiIpCisKKyAgICBkZWYgdGVzdF9nZXRfbG9hZGVyX2F2b2lkc19lbXVsYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJzeXMiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigib3MiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHBrZ3V0aWwuZ2V0X2xvYWRlcigidGVzdC5zdXBwb3J0IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3Lndhcm5pbmdzKSwgMCkKKworICAgIGRlZiB0ZXN0X2dldF9pbXBvcnRlcl9hdm9pZHNfZW11bGF0aW9uKHNlbGYpOgorICAgICAgICAjIFdlIHVzZSBhbiBpbGxlZ2FsIHBhdGggc28gKm5vbmUqIG9mIHRoZSBwYXRoIGhvb2tzIHNob3VsZCBmaXJlCisgICAgICAgIHdpdGggY2hlY2tfd2FybmluZ3MoKSBhcyB3OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGtndXRpbC5nZXRfaW1wb3J0ZXIoIio/PyIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ody53YXJuaW5ncyksIDApCisKKyAgICBkZWYgdGVzdF9pdGVyX2ltcG9ydGVyc19hdm9pZHNfZW11bGF0aW9uKHNlbGYpOgorICAgICAgICB3aXRoIGNoZWNrX3dhcm5pbmdzKCkgYXMgdzoKKyAgICAgICAgICAgIGZvciBpbXBvcnRlciBpbiBwa2d1dGlsLml0ZXJfaW1wb3J0ZXJzKCk6IHBhc3MKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoUGtndXRpbFRlc3RzLCBQa2d1dGlsUEVQMzAyVGVzdHMsIEV4dGVuZFBhdGhUZXN0cywKLSAgICAgICAgICAgICAgICAgTmVzdGVkTmFtZXNwYWNlUGFja2FnZVRlc3QpCisgICAgICAgICAgICAgICAgIE5lc3RlZE5hbWVzcGFjZVBhY2thZ2VUZXN0LCBJbXBvcnRsaWJNaWdyYXRpb25UZXN0cykKICAgICAjIHRoaXMgaXMgbmVjZXNzYXJ5IGlmIHRlc3QgaXMgcnVuIHJlcGVhdGVkIChsaWtlIHdoZW4gZmluZGluZyBsZWFrcykKICAgICBpbXBvcnQgemlwaW1wb3J0CisgICAgaW1wb3J0IGltcG9ydGxpYgogICAgIHppcGltcG9ydC5femlwX2RpcmVjdG9yeV9jYWNoZS5jbGVhcigpCisgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCA4NzUxYWE4Li42YWJmNDQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTEsOCArMSw5IEBACi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTU2LDEzICs1NywxMSBAQAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNhdmVfdmVyc2lvbiA9IHN5cy52ZXJzaW9uCi0gICAgICAgIHNlbGYuc2F2ZV9zdWJ2ZXJzaW9uID0gc3lzLnN1YnZlcnNpb24KICAgICAgICAgc2VsZi5zYXZlX21lcmN1cmlhbCA9IHN5cy5fbWVyY3VyaWFsCiAgICAgICAgIHNlbGYuc2F2ZV9wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzeXMudmVyc2lvbiA9IHNlbGYuc2F2ZV92ZXJzaW9uCi0gICAgICAgIHN5cy5zdWJ2ZXJzaW9uID0gc2VsZi5zYXZlX3N1YnZlcnNpb24KICAgICAgICAgc3lzLl9tZXJjdXJpYWwgPSBzZWxmLnNhdmVfbWVyY3VyaWFsCiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYuc2F2ZV9wbGF0Zm9ybQogCkBAIC03Nyw3ICs3Niw3IEBACiAgICAgICAgICAgICAgKCdJcm9uUHl0aG9uJywgJzEuMC4wJywgJycsICcnLCAnJywgJycsICcuTkVUIDIuMC41MDcyNy40MicpKSwKICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAjIGJyYW5jaCBhbmQgcmV2aXNpb24gYXJlIG5vdCAicGFyc2VkIiwgYnV0IGZldGNoZWQKLSAgICAgICAgICAgICMgZnJvbSBzeXMuc3VidmVyc2lvbi4gIElnbm9yZSB0aGVtCisgICAgICAgICAgICAjIGZyb20gc3lzLl9tZXJjdXJpYWwuICBJZ25vcmUgdGhlbQogICAgICAgICAgICAgKG5hbWUsIHZlcnNpb24sIGJyYW5jaCwgcmV2aXNpb24sIGJ1aWxkbm8sIGJ1aWxkZGF0ZSwgY29tcGlsZXIpIFwKICAgICAgICAgICAgICAgICAgICA9IHBsYXRmb3JtLl9zeXNfdmVyc2lvbihpbnB1dCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0xMTMsOCArMTEyLDYgQEAKICAgICAgICAgICAgIGlmIHN1YnZlcnNpb24gaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHN5cywgIl9tZXJjdXJpYWwiKToKICAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5fbWVyY3VyaWFsCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzeXMsICJzdWJ2ZXJzaW9uIik6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBzeXMuc3VidmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuX21lcmN1cmlhbCA9IHN1YnZlcnNpb24KICAgICAgICAgICAgIGlmIHN5c19wbGF0Zm9ybSBpcyBub3QgTm9uZToKQEAgLTEzNiw2ICsxMzMsMTIgQEAKICAgICBkZWYgdGVzdF91bmFtZShzZWxmKToKICAgICAgICAgcmVzID0gcGxhdGZvcm0udW5hbWUoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KHJlcykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzBdLCByZXMuc3lzdGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1sxXSwgcmVzLm5vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzJdLCByZXMucmVsZWFzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNbM10sIHJlcy52ZXJzaW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc1s0XSwgcmVzLm1hY2hpbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzWzVdLCByZXMucHJvY2Vzc29yKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLCAid2luZG93cyBvbmx5IHRlc3QiKQogICAgIGRlZiB0ZXN0X3VuYW1lX3dpbjMyX0FSQ0hJVEVXNjQzMihzZWxmKToKQEAgLTE2OSw3ICsxNzIsNyBAQAogICAgIGRlZiB0ZXN0X21hY192ZXIoc2VsZik6CiAgICAgICAgIHJlcyA9IHBsYXRmb3JtLm1hY192ZXIoKQogCi0gICAgICAgIGlmIHBsYXRmb3JtLnVuYW1lKClbMF0gPT0gJ0Rhcndpbic6CisgICAgICAgIGlmIHBsYXRmb3JtLnVuYW1lKCkuc3lzdGVtID09ICdEYXJ3aW4nOgogICAgICAgICAgICAgIyBXZSdyZSBvbiBhIE1hY09TWCBzeXN0ZW0sIGNoZWNrIHRoYXQKICAgICAgICAgICAgICMgdGhlIHJpZ2h0IHZlcnNpb24gaW5mb3JtYXRpb24gaXMgcmV0dXJuZWQKICAgICAgICAgICAgIGZkID0gb3MucG9wZW4oJ3N3X3ZlcnMnLCAncicpCkBAIC0yNDcsNiArMjUwLDM4IEBACiAgICAgICAgICAgICApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybS5fcGFyc2VfcmVsZWFzZV9maWxlKGlucHV0KSwgb3V0cHV0KQogCisgICAgZGVmIHRlc3RfcG9wZW4oc2VsZik6CisgICAgICAgIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKKworICAgICAgICBpZiBtc3dpbmRvd3M6CisgICAgICAgICAgICBjb21tYW5kID0gJyJ7fSIgLWMgInByaW50KFwnSGVsbG9cJykiJy5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb21tYW5kID0gIid7fScgLWMgJ3ByaW50KFwiSGVsbG9cIiknIi5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBwbGF0Zm9ybS5wb3Blbihjb21tYW5kKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICAgICAgaGVsbG8gPSBzdGRvdXQucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzdGRvdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVsbG8sICJIZWxsbyIpCisKKyAgICAgICAgZGF0YSA9ICdwbG9wJworICAgICAgICBpZiBtc3dpbmRvd3M6CisgICAgICAgICAgICBjb21tYW5kID0gJyJ7fSIgLWMgImltcG9ydCBzeXM7IGRhdGE9c3lzLnN0ZGluLnJlYWQoKTsgZXhpdChsZW4oZGF0YSkpIicKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiJ3t9JyAtYyAnaW1wb3J0IHN5czsgZGF0YT1zeXMuc3RkaW4ucmVhZCgpOyBleGl0KGxlbihkYXRhKSknIgorICAgICAgICBjb21tYW5kID0gY29tbWFuZC5mb3JtYXQoc3lzLmV4ZWN1dGFibGUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgd2l0aCBwbGF0Zm9ybS5wb3Blbihjb21tYW5kLCAndycpIGFzIHN0ZGluOgorICAgICAgICAgICAgICAgIHN0ZG91dCA9IHN0ZGluLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgcmV0ID0gc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJldCkKKyAgICAgICAgICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAgICAgICAgIHJldHVybmNvZGUgPSByZXQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm5jb2RlID0gcmV0ID4+IDgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmNvZGUsIGxlbihkYXRhKSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQppbmRleCA1Zjk4MGQwLi5hOWUzNDNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKQEAgLTU1LDYgKzU1LDEwIEBACiAgICAgICAgIDwvYXJyYXk+CiAgICAgICAgIDxrZXk+YVN0cmluZzwva2V5PgogICAgICAgICA8c3RyaW5nPkRvb2RhaDwvc3RyaW5nPgorICAgICAgICA8a2V5PmFuRW1wdHlEaWN0PC9rZXk+CisgICAgICAgIDxkaWN0Lz4KKyAgICAgICAgPGtleT5hbkVtcHR5TGlzdDwva2V5PgorICAgICAgICA8YXJyYXkvPgogICAgICAgICA8a2V5PmFuSW50PC9rZXk+CiAgICAgICAgIDxpbnRlZ2VyPjcyODwvaW50ZWdlcj4KICAgICAgICAgPGtleT5uZXN0ZWREYXRhPC9rZXk+CkBAIC0xMTIsNiArMTE2LDggQEAKICAgICAgICAgICAgIHNvbWVNb3JlRGF0YSA9IHBsaXN0bGliLkRhdGEoYiI8bG90cyBvZiBiaW5hcnkgZ3Vuaz5cMFwxXDJcMyIgKiAxMCksCiAgICAgICAgICAgICBuZXN0ZWREYXRhID0gW3BsaXN0bGliLkRhdGEoYiI8bG90cyBvZiBiaW5hcnkgZ3Vuaz5cMFwxXDJcMyIgKiAxMCldLAogICAgICAgICAgICAgYURhdGUgPSBkYXRldGltZS5kYXRldGltZSgyMDA0LCAxMCwgMjYsIDEwLCAzMywgMzMpLAorICAgICAgICAgICAgYW5FbXB0eURpY3QgPSBkaWN0KCksCisgICAgICAgICAgICBhbkVtcHR5TGlzdCA9IGxpc3QoKQogICAgICAgICApCiAgICAgICAgIHBsWydceGM1YmVucmFhJ10gPSAiVGhhdCB3YXMgYSB1bmljb2RlIGtleS4iCiAgICAgICAgIHJldHVybiBwbApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCBlMzkwMWI4Li5jMDkyOWEwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtMTA4LDYgKzEwOCwxMCBAQAogICAgIGRlZiBjbWRfYXBvcChzZWxmLCBhcmcpOgogICAgICAgICBzZWxmLnB1c2goJytPSyBkb25lIG5vdGhpbmcuJykKIAorICAgIGRlZiBjbWRfcXVpdChzZWxmLCBhcmcpOgorICAgICAgICBzZWxmLnB1c2goJytPSyBjbG9zaW5nLicpCisgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKKwogCiBjbGFzcyBEdW1teVBPUDNTZXJ2ZXIoYXN5bmNvcmUuZGlzcGF0Y2hlciwgdGhyZWFkaW5nLlRocmVhZCk6CiAKQEAgLTE2NSwxMCArMTY5LDEwIEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnNlcnZlciA9IER1bW15UE9QM1NlcnZlcigoSE9TVCwgUE9SVCkpCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKLSAgICAgICAgc2VsZi5jbGllbnQgPSBwb3BsaWIuUE9QMyhzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQorICAgICAgICBzZWxmLmNsaWVudCA9IHBvcGxpYi5QT1AzKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQsIHRpbWVvdXQ9MykKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCisgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCiAKICAgICBkZWYgdGVzdF9nZXR3ZWxjb21lKHNlbGYpOgpAQCAtMjI4LDYgKzIzMiwxMiBAQAogICAgICAgICBzZWxmLmNsaWVudC51aWRsKCkKICAgICAgICAgc2VsZi5jbGllbnQudWlkbCgnZm9vJykKIAorICAgIGRlZiB0ZXN0X3F1aXQoc2VsZik6CisgICAgICAgIHJlc3AgPSBzZWxmLmNsaWVudC5xdWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3ApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuY2xpZW50LnNvY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuY2xpZW50LmZpbGUpCisKIAogU1VQUE9SVFNfU1NMID0gRmFsc2UKIGlmIGhhc2F0dHIocG9wbGliLCAnUE9QM19TU0wnKToKQEAgLTI3NCw2ICsyODQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBEdW1teVBPUDNIYW5kbGVyLmhhbmRsZV9yZWFkKHNlbGYpCiAKKwogICAgIGNsYXNzIFRlc3RQT1AzX1NTTENsYXNzKFRlc3RQT1AzQ2xhc3MpOgogICAgICAgICAjIHJlcGVhdCBwcmV2aW91cyB0ZXN0cyBieSB1c2luZyBwb3BsaWIuUE9QM19TU0wKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggYjkzNmRkYS4uZjU5NjA3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBvcworaW1wb3J0IGZjbnRsCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBwd2QKIGltcG9ydCBzaHV0aWwKQEAgLTQzLDcgKzQ0LDcgQEAKICAgICAgICAgTk9fQVJHX0ZVTkNUSU9OUyA9IFsgImN0ZXJtaWQiLCAiZ2V0Y3dkIiwgImdldGN3ZGIiLCAidW5hbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXMiLCAiZ2V0bG9hZGF2ZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRlZ2lkIiwgImdldGV1aWQiLCAiZ2V0Z2lkIiwgImdldGdyb3VwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRwaWQiLCAiZ2V0cGdycCIsICJnZXRwcGlkIiwgImdldHVpZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRwaWQiLCAiZ2V0cGdycCIsICJnZXRwcGlkIiwgImdldHVpZCIsICJzeW5jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KIAogICAgICAgICBmb3IgbmFtZSBpbiBOT19BUkdfRlVOQ1RJT05TOgpAQCAtMTI4LDYgKzEyOSw3IEBACiAgICAgICAgICAgICBmcCA9IG9wZW4oc3VwcG9ydC5URVNURk4pCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LmZzdGF0dmZzKGZwLmZpbGVubygpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdHZmcyhmcC5maWxlbm8oKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGZwLmNsb3NlKCkKIApAQCAtMTQyLDYgKzE0NCwxNTEgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3RydW5jYXRlJyksICJ0ZXN0IG5lZWRzIHBvc2l4LnRydW5jYXRlKCkiKQorICAgIGRlZiB0ZXN0X3RydW5jYXRlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3JykgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZSgndGVzdCcpCisgICAgICAgICAgICBmcC5mbHVzaCgpCisgICAgICAgIHBvc2l4LnRydW5jYXRlKHN1cHBvcnQuVEVTVEZOLCAwKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZ2V0YXR0cihvcywgJ2V4ZWN2ZScsIE5vbmUpIGluIG9zLnN1cHBvcnRzX2ZkLCAidGVzdCBuZWVkcyBleGVjdmUoKSB0byBzdXBwb3J0IHRoZSBmZCBwYXJhbWV0ZXIiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksICJ0ZXN0IG5lZWRzIG9zLmZvcmsoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3dhaXRwaWQnKSwgInRlc3QgbmVlZHMgb3Mud2FpdHBpZCgpIikKKyAgICBkZWYgdGVzdF9mZXhlY3ZlKHNlbGYpOgorICAgICAgICBmcCA9IG9zLm9wZW4oc3lzLmV4ZWN1dGFibGUsIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9zLnBhdGguc3BsaXQoc3lzLmV4ZWN1dGFibGUpWzBdKQorICAgICAgICAgICAgICAgIHBvc2l4LmV4ZWN2ZShmcCwgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddLCBvcy5lbnZpcm9uKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLndhaXRwaWQocGlkLCAwKSwgKHBpZCwgMCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmcCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICd3YWl0aWQnKSwgInRlc3QgbmVlZHMgcG9zaXgud2FpdGlkKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksICJ0ZXN0IG5lZWRzIG9zLmZvcmsoKSIpCisgICAgZGVmIHRlc3Rfd2FpdGlkKHNlbGYpOgorICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgaWYgcGlkID09IDA6CisgICAgICAgICAgICBvcy5jaGRpcihvcy5wYXRoLnNwbGl0KHN5cy5leGVjdXRhYmxlKVswXSkKKyAgICAgICAgICAgIHBvc2l4LmV4ZWN2ZShzeXMuZXhlY3V0YWJsZSwgW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddLCBvcy5lbnZpcm9uKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzID0gcG9zaXgud2FpdGlkKHBvc2l4LlBfUElELCBwaWQsIHBvc2l4LldFWElURUQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBpZCwgcmVzLnNpX3BpZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdsb2NrZicpLCAidGVzdCBuZWVkcyBwb3NpeC5sb2NrZigpIikKKyAgICBkZWYgdGVzdF9sb2NrZihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiJ3Rlc3QnKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgcG9zaXgubG9ja2YoZmQsIHBvc2l4LkZfTE9DSywgNCkKKyAgICAgICAgICAgICMgc2VjdGlvbiBpcyBsb2NrZWQKKyAgICAgICAgICAgIHBvc2l4LmxvY2tmKGZkLCBwb3NpeC5GX1VMT0NLLCA0KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncHJlYWQnKSwgInRlc3QgbmVlZHMgcG9zaXgucHJlYWQoKSIpCisgICAgZGVmIHRlc3RfcHJlYWQoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIndGVzdCcpCisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInZXMnLCBwb3NpeC5wcmVhZChmZCwgMiwgMSkpCisgICAgICAgICAgICAjIHRoZSBmaXJzdCBwcmVhZCgpIHNob3VsZG4ndCBkaXN0dXJiIHRoZSBmaWxlIG9mZnNldAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ3RlJywgcG9zaXgucmVhZChmZCwgMikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdwd3JpdGUnKSwgInRlc3QgbmVlZHMgcG9zaXgucHdyaXRlKCkiKQorICAgIGRlZiB0ZXN0X3B3cml0ZShzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0JykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIHBvc2l4LnB3cml0ZShmZCwgYid4eCcsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIndHh4dCcsIHBvc2l4LnJlYWQoZmQsIDQpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAncG9zaXhfZmFsbG9jYXRlJyksCisgICAgICAgICJ0ZXN0IG5lZWRzIHBvc2l4LnBvc2l4X2ZhbGxvY2F0ZSgpIikKKyAgICBkZWYgdGVzdF9wb3NpeF9mYWxsb2NhdGUoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19XUk9OTFkgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5wb3NpeF9mYWxsb2NhdGUoZmQsIDAsIDEwKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBpbnN0OgorICAgICAgICAgICAgIyBpc3N1ZTEwODEyLCBaRlMgZG9lc24ndCBhcHBlYXIgdG8gc3VwcG9ydCBwb3NpeF9mYWxsb2NhdGUsCisgICAgICAgICAgICAjIHNvIHNraXAgU29sYXJpcy1iYXNlZCBzaW5jZSB0aGV5IGFyZSBsaWtlbHkgdG8gaGF2ZSBaRlMuCisgICAgICAgICAgICBpZiBpbnN0LmVycm5vICE9IGVycm5vLkVJTlZBTCBvciBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInN1bm9zIik6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3Bvc2l4X2ZhZHZpc2UnKSwKKyAgICAgICAgInRlc3QgbmVlZHMgcG9zaXgucG9zaXhfZmFkdmlzZSgpIikKKyAgICBkZWYgdGVzdF9wb3NpeF9mYWR2aXNlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5wb3NpeF9mYWR2aXNlKGZkLCAwLCAwLCBwb3NpeC5QT1NJWF9GQURWX1dJTExORUVEKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mZCwgInRlc3QgbmVlZHMgZmQgc3VwcG9ydCBpbiBvcy51dGltZSIpCisgICAgZGVmIHRlc3RfdXRpbWVfd2l0aF9mZChzZWxmKToKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgudXRpbWUoZmQpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIGZkLCAoTm9uZSwgTm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKG5vdywgTm9uZSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKE5vbmUsIG5vdykpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgKGludChub3cpLCBpbnQobm93KSkpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgKG5vdywgbm93KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKG5vdywgbm93KSwgbnM9KG5vdywgbm93KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKG5vdywgMCksIG5zPShOb25lLCBOb25lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnV0aW1lLCBmZCwgKE5vbmUsIE5vbmUpLCBucz0obm93LCAwKSkKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKGZkLCAoaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSkpCisgICAgICAgICAgICBwb3NpeC51dGltZShmZCwgbnM9KGludChub3cpLCBpbnQoKG5vdyAtIGludChub3cpKSAqIDFlOSkpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcywgInRlc3QgbmVlZHMgZm9sbG93X3N5bWxpbmtzIHN1cHBvcnQgaW4gb3MudXRpbWUiKQorICAgIGRlZiB0ZXN0X3V0aW1lX25vZm9sbG93X3N5bWxpbmtzKHNlbGYpOgorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICBwb3NpeC51dGltZShzdXBwb3J0LlRFU1RGTiwgTm9uZSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIE5vbmUpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCBOb25lKSwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIG5vdyksIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnd3JpdGV2JyksICJ0ZXN0IG5lZWRzIHBvc2l4LndyaXRldigpIikKKyAgICBkZWYgdGVzdF93cml0ZXYoc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzdXBwb3J0LlRFU1RGTiwgb3MuT19SRFdSIHwgb3MuT19DUkVBVCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGV2KGZkLCAoYid0ZXN0MScsIGIndHQyJywgYid0MycpKQorICAgICAgICAgICAgb3MubHNlZWsoZmQsIDAsIG9zLlNFRUtfU0VUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ3Rlc3QxdHQydDMnLCBwb3NpeC5yZWFkKGZkLCAxMCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jbG9zZShmZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdyZWFkdicpLCAidGVzdCBuZWVkcyBwb3NpeC5yZWFkdigpIikKKyAgICBkZWYgdGVzdF9yZWFkdihzZWxmKToKKyAgICAgICAgZmQgPSBvcy5vcGVuKHN1cHBvcnQuVEVTVEZOLCBvcy5PX1JEV1IgfCBvcy5PX0NSRUFUKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy53cml0ZShmZCwgYid0ZXN0MXR0MnQzJykKKyAgICAgICAgICAgIG9zLmxzZWVrKGZkLCAwLCBvcy5TRUVLX1NFVCkKKyAgICAgICAgICAgIGJ1ZiA9IFtieXRlYXJyYXkoaSkgZm9yIGkgaW4gWzUsIDMsIDJdXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5yZWFkdihmZCwgYnVmKSwgMTApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiJ3Rlc3QxJywgYid0dDInLCBiJ3QzJ10sIFtieXRlcyhpKSBmb3IgaSBpbiBidWZdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisKICAgICBkZWYgdGVzdF9kdXAoc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdkdXAnKToKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKQEAgLTE2Nyw2ICszMTQsMTMgQEAKICAgICAgICAgICAgICAgICBmcDEuY2xvc2UoKQogICAgICAgICAgICAgICAgIGZwMi5jbG9zZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnT19DTE9FWEVDJyksICJuZWVkcyBvcy5PX0NMT0VYRUMiKQorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjMpCisgICAgZGVmIHRlc3Rfb3NjbG9leGVjKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sIG9zLk9fUkRPTkxZfG9zLk9fQ0xPRVhFQykKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZjbnRsLmZjbnRsKGZkLCBmY250bC5GX0dFVEZEKSAmIGZjbnRsLkZEX0NMT0VYRUMpCisKICAgICBkZWYgdGVzdF9vc2V4bG9jayhzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgIk9fRVhMT0NLIik6CiAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oc3VwcG9ydC5URVNURk4sCkBAIC0yMDMsNiArMzU3LDcgQEAKICAgICAgICAgICAgIGZwID0gb3BlbihzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguZnN0YXQoZnAuZmlsZW5vKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGZwLmZpbGVubygpKSkKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQogCkBAIC0yNjUsNyArNDIwLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguY2hvd24sIHN1cHBvcnQuVEVTVEZOLCAtMSwgLTEpCiAKICAgICAgICAgIyByZS1jcmVhdGUgdGhlIGZpbGUKLSAgICAgICAgb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuX3Rlc3RfYWxsX2Nob3duX2NvbW1vbihwb3NpeC5jaG93biwgc3VwcG9ydC5URVNURk4pCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnZmNob3duJyksICJ0ZXN0IG5lZWRzIG9zLmZjaG93bigpIikKQEAgLTI5MywxMyArNDQ4LDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5jaGRpciwgc3VwcG9ydC5URVNURk4pCiAKICAgICBkZWYgdGVzdF9saXN0ZGlyKHNlbGYpOgotICAgICAgICBpZiBoYXNhdHRyKHBvc2l4LCAnbGlzdGRpcicpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIob3MuY3VyZGlyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIob3MuY3VyZGlyKSkKIAogICAgIGRlZiB0ZXN0X2xpc3RkaXJfZGVmYXVsdChzZWxmKToKLSAgICAgICAgIyBXaGVuIGxpc3RkaXIgaXMgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnQsIGl0J3MgdGhlIHNhbWUgYXMgbGlzdGRpcihvcy5jdXJkaXIpCi0gICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdsaXN0ZGlyJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5URVNURk4gaW4gcG9zaXgubGlzdGRpcigpKQorICAgICAgICAjIFdoZW4gbGlzdGRpciBpcyBjYWxsZWQgd2l0aG91dCBhcmd1bWVudCwKKyAgICAgICAgIyBpdCdzIHRoZSBzYW1lIGFzIGxpc3RkaXIob3MuY3VyZGlyKS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQuVEVTVEZOIGluIHBvc2l4Lmxpc3RkaXIoKSkKKworICAgIGRlZiB0ZXN0X2xpc3RkaXJfYnl0ZXMoc2VsZik6CisgICAgICAgICMgV2hlbiBsaXN0ZGlyIGlzIGNhbGxlZCB3aXRoIGEgYnl0ZXMgb2JqZWN0LAorICAgICAgICAjIHRoZSByZXR1cm5lZCBzdHJpbmdzIGFyZSBvZiB0eXBlIGJ5dGVzLgorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pIGluIHBvc2l4Lmxpc3RkaXIoYicuJykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhwb3NpeC5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IG5lZWRzIGZkIHN1cHBvcnQgZm9yIHBvc2l4Lmxpc3RkaXIoKSIpCisgICAgZGVmIHRlc3RfbGlzdGRpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocG9zaXguY2xvc2UsIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzb3J0ZWQocG9zaXgubGlzdGRpcignLicpKSwKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKGYpKQorICAgICAgICAgICAgKQorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGZkIG9mZnNldCB3YXMgcmVzZXQgKGlzc3VlICMxMzczOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNvcnRlZChwb3NpeC5saXN0ZGlyKCcuJykpLAorICAgICAgICAgICAgc29ydGVkKHBvc2l4Lmxpc3RkaXIoZikpCisgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9hY2Nlc3Moc2VsZik6CiAgICAgICAgIGlmIGhhc2F0dHIocG9zaXgsICdhY2Nlc3MnKToKQEAgLTMyMSw2ICs0OTUsMzIgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKHJlYWRlcikKICAgICAgICAgICAgIG9zLmNsb3NlKHdyaXRlcikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdwaXBlMicpLCAidGVzdCBuZWVkcyBvcy5waXBlMigpIikKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDI3KQorICAgIGRlZiB0ZXN0X3BpcGUyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnBpcGUyLCAnREVBREJFRUYnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9zLnBpcGUyLCAwLCAwKQorCisgICAgICAgICMgdHJ5IGNhbGxpbmcgd2l0aCBmbGFncyA9IDAsIGxpa2Ugb3MucGlwZSgpCisgICAgICAgIHIsIHcgPSBvcy5waXBlMigwKQorICAgICAgICBvcy5jbG9zZShyKQorICAgICAgICBvcy5jbG9zZSh3KQorCisgICAgICAgICMgdGVzdCBmbGFncworICAgICAgICByLCB3ID0gb3MucGlwZTIob3MuT19DTE9FWEVDfG9zLk9fTk9OQkxPQ0spCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCB3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwociwgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZmNudGwuZmNudGwodywgZmNudGwuRl9HRVRGRCkgJiBmY250bC5GRF9DTE9FWEVDKQorICAgICAgICAjIHRyeSByZWFkaW5nIGZyb20gYW4gZW1wdHkgcGlwZTogdGhpcyBzaG91bGQgZmFpbCwgbm90IGJsb2NrCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnJlYWQsIHIsIDEpCisgICAgICAgICMgdHJ5IGEgd3JpdGUgYmlnIGVub3VnaCB0byBmaWxsLXVwIHRoZSBwaXBlOiB0aGlzIHNob3VsZCBlaXRoZXIKKyAgICAgICAgIyBmYWlsIG9yIHBlcmZvcm0gYSBwYXJ0aWFsIHdyaXRlLCBub3QgYmxvY2sKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Mud3JpdGUodywgYid4JyAqIHN1cHBvcnQuUElQRV9NQVhfU0laRSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKICAgICBkZWYgdGVzdF91dGltZShzZWxmKToKICAgICAgICAgaWYgaGFzYXR0cihwb3NpeCwgJ3V0aW1lJyk6CiAgICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQpAQCAtMzMxLDEzICs1MzEsMTQgQEAKICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAoaW50KG5vdyksIGludChub3cpKSkKICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpKQogCi0gICAgZGVmIF90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYsIGNoZmxhZ3NfZnVuYywgdGFyZ2V0X2ZpbGUpOgorICAgIGRlZiBfdGVzdF9jaGZsYWdzX3JlZ3VsYXJfZmlsZShzZWxmLCBjaGZsYWdzX2Z1bmMsIHRhcmdldF9maWxlLCAqKmt3YXJncyk6CiAgICAgICAgIHN0ID0gb3Muc3RhdCh0YXJnZXRfZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3QsICdzdF9mbGFncycpKQogCiAgICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgorICAgICAgICBmbGFncyA9IHN0LnN0X2ZsYWdzIHwgc3RhdC5VRl9JTU1VVEFCTEUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hmbGFnc19mdW5jKHRhcmdldF9maWxlLCBzdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFKQorICAgICAgICAgICAgY2hmbGFnc19mdW5jKHRhcmdldF9maWxlLCBmbGFncywgKiprd2FyZ3MpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FT1BOT1RTVVBQOgogICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0zNjEsNiArNTYyLDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAnbGNoZmxhZ3MnKSwgJ3Rlc3QgbmVlZHMgb3MubGNoZmxhZ3MoKScpCiAgICAgZGVmIHRlc3RfbGNoZmxhZ3NfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2NoZmxhZ3NfcmVndWxhcl9maWxlKHBvc2l4LmxjaGZsYWdzLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5fdGVzdF9jaGZsYWdzX3JlZ3VsYXJfZmlsZShwb3NpeC5jaGZsYWdzLCBzdXBwb3J0LlRFU1RGTiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2xjaGZsYWdzJyksICd0ZXN0IG5lZWRzIG9zLmxjaGZsYWdzKCknKQogICAgIGRlZiB0ZXN0X2xjaGZsYWdzX3N5bWxpbmsoc2VsZik6CkBAIC0zNzIsMjUgKzU3NCwyOCBAQAogICAgICAgICBzZWxmLnRlYXJkb3duX2ZpbGVzLmFwcGVuZChfRFVNTVlfU1lNTElOSykKICAgICAgICAgZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQogCi0gICAgICAgICMgWkZTIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IGZsYWcgVUZfSU1NVVRBQkxFLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwb3NpeC5sY2hmbGFncyhfRFVNTVlfU1lNTElOSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MgfCBzdGF0LlVGX0lNTVVUQUJMRSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgaWYgZXJyLmVycm5vICE9IGVycm5vLkVPUE5PVFNVUFA6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIG1zZyA9ICdjaGZsYWcgVUZfSU1NVVRBQkxFIG5vdCBzdXBwb3J0ZWQgYnkgdW5kZXJseWluZyBmcycKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QobXNnKQorICAgICAgICBkZWYgY2hmbGFnc19ub2ZvbGxvdyhwYXRoLCBmbGFncyk6CisgICAgICAgICAgICByZXR1cm4gcG9zaXguY2hmbGFncyhwYXRoLCBmbGFncywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5ld190ZXN0Zm5fc3QgPSBvcy5zdGF0KHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgbmV3X2R1bW15X3N5bWxpbmtfc3QgPSBvcy5sc3RhdChfRFVNTVlfU1lNTElOSykKKyAgICAgICAgZm9yIGZuIGluIChwb3NpeC5sY2hmbGFncywgY2hmbGFnc19ub2ZvbGxvdyk6CisgICAgICAgICAgICAjIFpGUyByZXR1cm5zIEVPUE5PVFNVUFAgd2hlbiBhdHRlbXB0aW5nIHRvIHNldCBmbGFnIFVGX0lNTVVUQUJMRS4KKyAgICAgICAgICAgIGZsYWdzID0gZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm4oX0RVTU1ZX1NZTUxJTkssIGZsYWdzKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGlmIGVyci5lcnJubyAhPSBlcnJuby5FT1BOT1RTVVBQOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgICAgIG1zZyA9ICdjaGZsYWcgVUZfSU1NVVRBQkxFIG5vdCBzdXBwb3J0ZWQgYnkgdW5kZXJseWluZyBmcycKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KG1zZykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXdfdGVzdGZuX3N0ID0gb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdCA9IG9zLmxzdGF0KF9EVU1NWV9TWU1MSU5LKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rmbl9zdC5zdF9mbGFncywgbmV3X3Rlc3Rmbl9zdC5zdF9mbGFncykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHBvc2l4LmxjaGZsYWdzKF9EVU1NWV9TWU1MSU5LLCBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdGZuX3N0LnN0X2ZsYWdzLCBuZXdfdGVzdGZuX3N0LnN0X2ZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncyB8IHN0YXQuVUZfSU1NVVRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2R1bW15X3N5bWxpbmtfc3Quc3RfZmxhZ3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGZuKF9EVU1NWV9TWU1MSU5LLCBkdW1teV9zeW1saW5rX3N0LnN0X2ZsYWdzKQogCiAgICAgZGVmIHRlc3RfZW52aXJvbihzZWxmKToKICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtNDM4LDEzICs2NDMsMjkgQEAKICAgICAgICAgICAgICAgICBvcy5jaGRpcihjdXJkaXIpCiAgICAgICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoYmFzZV9wYXRoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ2dldGdyb3VwbGlzdCcpLCAidGVzdCBuZWVkcyBwb3NpeC5nZXRncm91cGxpc3QoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwd2QsICdnZXRwd3VpZCcpLCAidGVzdCBuZWVkcyBwd2QuZ2V0cHd1aWQoKSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldHVpZCcpLCAidGVzdCBuZWVkcyBvcy5nZXR1aWQoKSIpCisgICAgZGVmIHRlc3RfZ2V0Z3JvdXBsaXN0KHNlbGYpOgorICAgICAgICB3aXRoIG9zLnBvcGVuKCdpZCAtRycpIGFzIGlkZzoKKyAgICAgICAgICAgIGdyb3VwcyA9IGlkZy5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgcmV0ID0gaWRnLmNsb3NlKCkKKworICAgICAgICBpZiByZXQgaXMgbm90IE5vbmUgb3Igbm90IGdyb3VwczoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJuZWVkIHdvcmtpbmcgJ2lkIC1HJyIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNldChbaW50KHgpIGZvciB4IGluIGdyb3Vwcy5zcGxpdCgpXSksCisgICAgICAgICAgICBzZXQocG9zaXguZ2V0Z3JvdXBsaXN0KHB3ZC5nZXRwd3VpZChvcy5nZXR1aWQoKSlbMF0sCisgICAgICAgICAgICAgICAgcHdkLmdldHB3dWlkKG9zLmdldHVpZCgpKVszXSkpKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGVnaWQnKSwgInRlc3QgbmVlZHMgb3MuZ2V0ZWdpZCgpIikKICAgICBkZWYgdGVzdF9nZXRncm91cHMoc2VsZik6CiAgICAgICAgIHdpdGggb3MucG9wZW4oJ2lkIC1HJykgYXMgaWRnOgogICAgICAgICAgICAgZ3JvdXBzID0gaWRnLnJlYWQoKS5zdHJpcCgpCiAgICAgICAgICAgICByZXQgPSBpZGcuY2xvc2UoKQogCi0gICAgICAgIGlmIHJldCAhPSBOb25lIG9yIG5vdCBncm91cHM6CisgICAgICAgIGlmIHJldCBpcyBub3QgTm9uZSBvciBub3QgZ3JvdXBzOgogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm5lZWQgd29ya2luZyAnaWQgLUcnIikKIAogICAgICAgICAjICdpZCAtRycgYW5kICdvcy5nZXRncm91cHMoKScgc2hvdWxkIHJldHVybiB0aGUgc2FtZQpAQCAtNDU1LDYgKzY3NiwzNDAgQEAKICAgICAgICAgICAgICAgICBzZXQoW2ludCh4KSBmb3IgeCBpbiBncm91cHMuc3BsaXQoKV0pLAogICAgICAgICAgICAgICAgIHNldChwb3NpeC5nZXRncm91cHMoKSArIFtwb3NpeC5nZXRlZ2lkKCldKSkKIAorICAgICMgdGVzdHMgZm9yIHRoZSBwb3NpeCAqYXQgZnVuY3Rpb25zIGZvbGxvdworCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuYWNjZXNzIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgZm9yIG9zLmFjY2VzcygpIikKKyAgICBkZWYgdGVzdF9hY2Nlc3NfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5hY2Nlc3Moc3VwcG9ydC5URVNURk4sIG9zLlJfT0ssIGRpcl9mZD1mKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5jaG1vZCBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLmNobW9kKCkiKQorICAgIGRlZiB0ZXN0X2NobW9kX2Rpcl9mZChzZWxmKToKKyAgICAgICAgb3MuY2htb2Qoc3VwcG9ydC5URVNURk4sIHN0YXQuU19JUlVTUikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNobW9kKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IsIGRpcl9mZD1mKQorCisgICAgICAgICAgICBzID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc1swXSAmIHN0YXQuU19JUldYVSwgc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLmNob3duIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MuY2hvd24oKSIpCisgICAgZGVmIHRlc3RfY2hvd25fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzdXBwb3J0LlRFU1RGTikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LmNob3duKHN1cHBvcnQuVEVTVEZOLCBvcy5nZXR1aWQoKSwgb3MuZ2V0Z2lkKCksIGRpcl9mZD1mKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnN0YXQgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5zdGF0KCkiKQorICAgIGRlZiB0ZXN0X3N0YXRfZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIG91dGZpbGU6CisgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCJ0ZXN0bGluZVxuIikKKworICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMxID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgICAgIHMyID0gcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMxLCBzMikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy51dGltZSBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnV0aW1lKCkiKQorICAgIGRlZiB0ZXN0X3V0aW1lX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIE5vbmUsIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIG5vdywgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIE5vbmUpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgudXRpbWUsIHN1cHBvcnQuVEVTVEZOLCAobm93LCBOb25lKSwgZGlyX2ZkPWYpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBvc2l4LnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgKE5vbmUsIG5vdyksIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC51dGltZSwgc3VwcG9ydC5URVNURk4sIChub3csICJ4IiksIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIChpbnQobm93KSwgaW50KG5vdykpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCAobm93LCBub3cpLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLAorICAgICAgICAgICAgICAgICAgICAoaW50KG5vdyksIGludCgobm93IC0gaW50KG5vdykpICogMWU5KSksIGRpcl9mZD1mKQorICAgICAgICAgICAgcG9zaXgudXRpbWUoc3VwcG9ydC5URVNURk4sIGRpcl9mZD1mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzPShpbnQobm93KSwgaW50KChub3cgLSBpbnQobm93KSkgKiAxZTkpKSkKKworICAgICAgICAgICAgIyB0cnkgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIKKyAgICAgICAgICAgIGlmIG9zLnV0aW1lIGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rczoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHBvc2l4LnV0aW1lKHN1cHBvcnQuVEVTVEZOLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UsIGRpcl9mZD1mKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHdob29wcyEgIHVzaW5nIGJvdGggdG9nZXRoZXIgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5saW5rIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCwgInRlc3QgbmVlZHMgZGlyX2ZkIHN1cHBvcnQgaW4gb3MubGluaygpIikKKyAgICBkZWYgdGVzdF9saW5rX2Rpcl9mZChzZWxmKToKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5saW5rKHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJywgc3JjX2Rpcl9mZD1mLCBkc3RfZGlyX2ZkPWYpCisgICAgICAgICAgICAjIHNob3VsZCBoYXZlIHNhbWUgaW5vZGVzCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pWzFdLAorICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4gKyAnbGluaycpWzFdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKyAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubWtkaXIgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5ta2RpcigpIikKKyAgICBkZWYgdGVzdF9ta2Rpcl9kaXJfZmQoc2VsZik6CisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubWtkaXIoc3VwcG9ydC5URVNURk4gKyAnZGlyJywgZGlyX2ZkPWYpCisgICAgICAgICAgICBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOICsgJ2RpcicpICMgc2hvdWxkIG5vdCByYWlzZSBleGNlcHRpb24KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShzdXBwb3J0LlRFU1RGTiArICdkaXInKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoKG9zLm1rbm9kIGluIG9zLnN1cHBvcnRzX2Rpcl9mZCkgYW5kIGhhc2F0dHIoc3RhdCwgJ1NfSUZJRk8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCByZXF1aXJlcyBib3RoIHN0YXQuU19JRklGTyBhbmQgZGlyX2ZkIHN1cHBvcnQgZm9yIG9zLm1rbm9kKCkiKQorICAgIGRlZiB0ZXN0X21rbm9kX2Rpcl9mZChzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIG1rbm9kYXQoKSB0byBjcmVhdGUgYSBGSUZPICh0aGUgb25seSB1c2Ugc3BlY2lmaWVkCisgICAgICAgICMgYnkgUE9TSVgpLgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgbW9kZSA9IHN0YXQuU19JRklGTyB8IHN0YXQuU19JUlVTUiB8IHN0YXQuU19JV1VTUgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4Lm1rbm9kKHN1cHBvcnQuVEVTVEZOLCBtb2RlLCAwLCBkaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgU29tZSBvbGQgc3lzdGVtcyBkb24ndCBhbGxvdyB1bnByaXZpbGVnZWQgdXNlcnMgdG8gdXNlCisgICAgICAgICAgICAjIG1rbm9kKCksIG9yIG9ubHkgc3VwcG9ydCBjcmVhdGluZyBkZXZpY2Ugbm9kZXMuCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUuZXJybm8sIChlcnJuby5FUEVSTSwgZXJybm8uRUlOVkFMKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGF0LlNfSVNGSUZPKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pLnN0X21vZGUpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm9wZW4gaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5vcGVuKCkiKQorICAgIGRlZiB0ZXN0X29wZW5fZGlyX2ZkKHNlbGYpOgorICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIG91dGZpbGU6CisgICAgICAgICAgICBvdXRmaWxlLndyaXRlKCJ0ZXN0bGluZVxuIikKKyAgICAgICAgYSA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICBiID0gcG9zaXgub3BlbihzdXBwb3J0LlRFU1RGTiwgcG9zaXguT19SRE9OTFksIGRpcl9mZD1hKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXMgPSBwb3NpeC5yZWFkKGIsIDkpLmRlY29kZShlbmNvZGluZz0idXRmLTgiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdGxpbmVcbiIsIHJlcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGEpCisgICAgICAgICAgICBwb3NpeC5jbG9zZShiKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MucmVhZGxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5yZWFkbGluaygpIikKKyAgICBkZWYgdGVzdF9yZWFkbGlua19kaXJfZmQoc2VsZik6CisgICAgICAgIG9zLnN5bWxpbmsoc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnKQorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXgucmVhZGxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpLAorICAgICAgICAgICAgICAgIHBvc2l4LnJlYWRsaW5rKHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnLCBkaXJfZmQ9ZikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5yZW5hbWUgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5yZW5hbWUoKSIpCisgICAgZGVmIHRlc3RfcmVuYW1lX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4gKyAncmVuJykKKyAgICAgICAgZiA9IHBvc2l4Lm9wZW4ocG9zaXguZ2V0Y3dkKCksIHBvc2l4Lk9fUkRPTkxZKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwb3NpeC5yZW5hbWUoc3VwcG9ydC5URVNURk4gKyAncmVuJywgc3VwcG9ydC5URVNURk4sIHNyY19kaXJfZmQ9ZiwgZHN0X2Rpcl9mZD1mKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwb3NpeC5yZW5hbWUoc3VwcG9ydC5URVNURk4gKyAncmVuJywgc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikgIyBzaG91bGQgbm90IHRocm93IGV4Y2VwdGlvbgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcG9zaXguY2xvc2UoZikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnN5bWxpbmsgaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5zeW1saW5rKCkiKQorICAgIGRlZiB0ZXN0X3N5bWxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnN5bWxpbmsoc3VwcG9ydC5URVNURk4sIHN1cHBvcnQuVEVTVEZOICsgJ2xpbmsnLCBkaXJfZmQ9ZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXgucmVhZGxpbmsoc3VwcG9ydC5URVNURk4gKyAnbGluaycpLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLnVubGluayBpbiBvcy5zdXBwb3J0c19kaXJfZmQsICJ0ZXN0IG5lZWRzIGRpcl9mZCBzdXBwb3J0IGluIG9zLnVubGluaygpIikKKyAgICBkZWYgdGVzdF91bmxpbmtfZGlyX2ZkKHNlbGYpOgorICAgICAgICBmID0gcG9zaXgub3Blbihwb3NpeC5nZXRjd2QoKSwgcG9zaXguT19SRE9OTFkpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoc3VwcG9ydC5URVNURk4gKyAnZGVsJykKKyAgICAgICAgcG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTiArICdkZWwnKSAjIHNob3VsZCBub3QgdGhyb3cgZXhjZXB0aW9uCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBvc2l4LnVubGluayhzdXBwb3J0LlRFU1RGTiArICdkZWwnLCBkaXJfZmQ9ZikKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4gKyAnZGVsJykKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiArICdsaW5rJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBvc2l4LmNsb3NlKGYpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5ta2ZpZm8gaW4gb3Muc3VwcG9ydHNfZGlyX2ZkLCAidGVzdCBuZWVkcyBkaXJfZmQgc3VwcG9ydCBpbiBvcy5ta2ZpZm8oKSIpCisgICAgZGVmIHRlc3RfbWtmaWZvX2Rpcl9mZChzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIGYgPSBwb3NpeC5vcGVuKHBvc2l4LmdldGN3ZCgpLCBwb3NpeC5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXgubWtmaWZvKHN1cHBvcnQuVEVTVEZOLCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IsIGRpcl9mZD1mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXQuU19JU0ZJRk8ocG9zaXguc3RhdChzdXBwb3J0LlRFU1RGTikuc3RfbW9kZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwb3NpeC5jbG9zZShmKQorCisgICAgcmVxdWlyZXNfc2NoZWRfaCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX3lpZWxkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvbid0IGhhdmUgc2NoZWR1bGluZyBzdXBwb3J0IikKKyAgICByZXF1aXJlc19zY2hlZF9hZmZpbml0eSA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX3NldGFmZmluaXR5JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkb24ndCBoYXZlIHNjaGVkIGFmZmluaXR5IHN1cHBvcnQiKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2gKKyAgICBkZWYgdGVzdF9zY2hlZF95aWVsZChzZWxmKToKKyAgICAgICAgIyBUaGlzIGhhcyBubyBlcnJvciBjb25kaXRpb25zIChhdCBsZWFzdCBvbiBMaW51eCkuCisgICAgICAgIHBvc2l4LnNjaGVkX3lpZWxkKCkKKworICAgIEByZXF1aXJlc19zY2hlZF9oCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX2dldF9wcmlvcml0eV9tYXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCgpIikKKyAgICBkZWYgdGVzdF9zY2hlZF9wcmlvcml0eShzZWxmKToKKyAgICAgICAgIyBSb3VuZC1yb2JpbiB1c3VhbGx5IGhhcyBpbnRlcmVzdGluZyBwcmlvcml0aWVzLgorICAgICAgICBwb2wgPSBwb3NpeC5TQ0hFRF9SUgorICAgICAgICBsbyA9IHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9taW4ocG9sKQorICAgICAgICBoaSA9IHBvc2l4LnNjaGVkX2dldF9wcmlvcml0eV9tYXgocG9sKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobG8sIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGhpLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGhpLCBsbykKKyAgICAgICAgIyBPU1ggZXZpZGVudGx5IGp1c3QgcmV0dXJucyAxNSB3aXRob3V0IGNoZWNraW5nIHRoZSBhcmd1bWVudC4KKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJkYXJ3aW4iOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgLTIzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgLTIzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ3NjaGVkX3NldHNjaGVkdWxlcicpLCAiY2FuJ3QgY2hhbmdlIHNjaGVkdWxlciIpCisgICAgZGVmIHRlc3RfZ2V0X2FuZF9zZXRfc2NoZWR1bGVyX2FuZF9wYXJhbShzZWxmKToKKyAgICAgICAgcG9zc2libGVfc2NoZWR1bGVycyA9IFtzY2hlZCBmb3IgbmFtZSwgc2NoZWQgaW4gcG9zaXguX19kaWN0X18uaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgiU0NIRURfIildCisgICAgICAgIG1pbmUgPSBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihtaW5lLCBwb3NzaWJsZV9zY2hlZHVsZXJzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwYXJlbnQgPSBwb3NpeC5zY2hlZF9nZXRzY2hlZHVsZXIob3MuZ2V0cHBpZCgpKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihwYXJlbnQsIHBvc3NpYmxlX3NjaGVkdWxlcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldHNjaGVkdWxlciwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldHBhcmFtLCAtMSkKKyAgICAgICAgcGFyYW0gPSBwb3NpeC5zY2hlZF9nZXRwYXJhbSgwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocGFyYW0uc2NoZWRfcHJpb3JpdHksIGludCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcG9zaXguc2NoZWRfc2V0c2NoZWR1bGVyKDAsIG1pbmUsIHBhcmFtKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgICAgICMgUE9TSVggc3RhdGVzIHRoYXQgY2FsbGluZyBzY2hlZF9zZXRwYXJhbSgpIG9uIGEgcHJvY2VzcyB3aXRoIGEKKyAgICAgICAgIyBzY2hlZHVsaW5nIHBvbGljeSBvdGhlciB0aGFuIFNDSEVEX0ZJRk8gb3IgU0NIRURfUlIgaXMKKyAgICAgICAgIyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkOiBGcmVlQlNEIHJldHVybnMgRUlOVkFMLgorICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKToKKyAgICAgICAgICAgIHBvc2l4LnNjaGVkX3NldHBhcmFtKDAsIHBhcmFtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIC0xLCBwYXJhbSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIC0xLCBtaW5lLCBwYXJhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwb3NpeC5zY2hlZF9zZXRzY2hlZHVsZXIsIDAsIG1pbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIDQzKQorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXguc2NoZWRfc2V0cGFyYW0sIDAsIHBhcmFtKQorICAgICAgICBsYXJnZSA9IDIxNDc0ODM2NDcwMAorICAgICAgICBwYXJhbSA9IHBvc2l4LnNjaGVkX3BhcmFtKGxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisgICAgICAgIHBhcmFtID0gcG9zaXguc2NoZWRfcGFyYW0oc2NoZWRfcHJpb3JpdHk9LWxhcmdlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRwYXJhbSwgMCwgcGFyYW0pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHBvc2l4LCAic2NoZWRfcnJfZ2V0X2ludGVydmFsIiksICJubyBmdW5jdGlvbiIpCisgICAgZGVmIHRlc3Rfc2NoZWRfcnJfZ2V0X2ludGVydmFsKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBpbnRlcnZhbCA9IHBvc2l4LnNjaGVkX3JyX2dldF9pbnRlcnZhbCgwKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgIyBUaGlzIGxpa2VseSBtZWFucyB0aGF0IHNjaGVkX3JyX2dldF9pbnRlcnZhbCBpcyBvbmx5IHZhbGlkIGZvcgorICAgICAgICAgICAgIyBwcm9jZXNzZXMgd2l0aCB0aGUgU0NIRURfUlIgc2NoZWR1bGVyIGluIGVmZmVjdC4KKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUlOVkFMOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJvbmx5IHdvcmtzIG9uIFNDSEVEX1JSIHByb2Nlc3NlcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbnRlcnZhbCwgZmxvYXQpCisgICAgICAgICMgUmVhc29uYWJsZSBjb25zdHJhaW50cywgSSB0aGluay4KKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoaW50ZXJ2YWwsIDAuKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoaW50ZXJ2YWwsIDEuKQorCisgICAgQHJlcXVpcmVzX3NjaGVkX2FmZmluaXR5CisgICAgZGVmIHRlc3Rfc2NoZWRfZ2V0YWZmaW5pdHkoc2VsZik6CisgICAgICAgIG1hc2sgPSBwb3NpeC5zY2hlZF9nZXRhZmZpbml0eSgwKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobWFzaywgc2V0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChsZW4obWFzayksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHBvc2l4LnNjaGVkX2dldGFmZmluaXR5LCAtMSkKKyAgICAgICAgZm9yIGNwdSBpbiBtYXNrOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNwdSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoY3B1LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGNwdSwgMSA8PCAzMikKKworICAgIEByZXF1aXJlc19zY2hlZF9hZmZpbml0eQorICAgIGRlZiB0ZXN0X3NjaGVkX3NldGFmZmluaXR5KHNlbGYpOgorICAgICAgICBtYXNrID0gcG9zaXguc2NoZWRfZ2V0YWZmaW5pdHkoMCkKKyAgICAgICAgaWYgbGVuKG1hc2spID4gMToKKyAgICAgICAgICAgICMgRW1wdHkgbWFza3MgYXJlIGZvcmJpZGRlbgorICAgICAgICAgICAgbWFzay5wb3AoKQorICAgICAgICBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSgwLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4LnNjaGVkX2dldGFmZmluaXR5KDApLCBtYXNrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgMCwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBvc2l4LnNjaGVkX3NldGFmZmluaXR5LCAwLCBbLTEwXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcG9zaXguc2NoZWRfc2V0YWZmaW5pdHksIDAsIFsxPDwxMjhdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBwb3NpeC5zY2hlZF9zZXRhZmZpbml0eSwgLTEsIG1hc2spCisKKyAgICBkZWYgdGVzdF9ydGxkX2NvbnN0YW50cyhzZWxmKToKKyAgICAgICAgIyBjaGVjayBwcmVzZW5jZSBvZiBtYWpvciBSVExEXyogY29uc3RhbnRzCisgICAgICAgIHBvc2l4LlJUTERfTEFaWQorICAgICAgICBwb3NpeC5SVExEX05PVworICAgICAgICBwb3NpeC5SVExEX0dMT0JBTAorICAgICAgICBwb3NpeC5SVExEX0xPQ0FMCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnU0VFS19IT0xFJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgbmVlZHMgYW4gT1MgdGhhdCByZXBvcnRzIGZpbGUgaG9sZXMiKQorICAgIGRlZiB0ZXN0X2ZzX2hvbGVzKHNlbGYpOgorICAgICAgICAjIEV2ZW4gaWYgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCByZXBvcnQgaG9sZXMsCisgICAgICAgICMgaWYgdGhlIE9TIHN1cHBvcnRzIGl0IHRoZSBTRUVLXyogY29uc3RhbnRzCisgICAgICAgICMgd2lsbCBiZSBkZWZpbmVkIGFuZCB3aWxsIGhhdmUgYSBjb25zaXN0ZW50CisgICAgICAgICMgYmVoYXZpb3VyOgorICAgICAgICAjIG9zLlNFRUtfREFUQSA9IGN1cnJlbnQgcG9zaXRpb24KKyAgICAgICAgIyBvcy5TRUVLX0hPTEUgPSBlbmQgb2YgZmlsZSBwb3NpdGlvbgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICdyK2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKGIiaGVsbG8iKQorICAgICAgICAgICAgZnAuZmx1c2goKQorICAgICAgICAgICAgc2l6ZSA9IGZwLnRlbGwoKQorICAgICAgICAgICAgZm5vID0gZnAuZmlsZW5vKCkKKyAgICAgICAgICAgIHRyeSA6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc2l6ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSwgb3MubHNlZWsoZm5vLCBpLCBvcy5TRUVLX0RBVEEpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChzaXplLCBvcy5sc2Vlayhmbm8sIGksIG9zLlNFRUtfSE9MRSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MubHNlZWssIGZubywgc2l6ZSwgb3MuU0VFS19EQVRBKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmxzZWVrLCBmbm8sIHNpemUsIG9zLlNFRUtfSE9MRSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIDoKKyAgICAgICAgICAgICAgICAjIFNvbWUgT1NzIGNsYWltIHRvIHN1cHBvcnQgU0VFS19IT0xFL1NFRUtfREFUQQorICAgICAgICAgICAgICAgICMgYnV0IGl0IGlzIG5vdCB0cnVlLgorICAgICAgICAgICAgICAgICMgRm9yIGluc3RhbmNlOgorICAgICAgICAgICAgICAgICMgaHR0cDovL2xpc3RzLmZyZWVic2Qub3JnL3BpcGVybWFpbC9mcmVlYnNkLWFtZDY0LzIwMTItSmFudWFyeS8wMTQzMzIuaHRtbAorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJPU0Vycm9yIHJhaXNlZCEiKQorCiBjbGFzcyBQb3NpeEdyb3Vwc1Rlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC00OTAsOSArMTA0NSwxMSBAQAogICAgICAgICAgICAgcG9zaXguc2V0Z3JvdXBzKGdyb3VwcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGlzdEVxdWFsKGdyb3VwcywgcG9zaXguZ2V0Z3JvdXBzKCkpCiAKLQogZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICB0cnk6CisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdGVyLCBQb3NpeEdyb3Vwc1Rlc3RlcikKKyAgICBmaW5hbGx5OgorICAgICAgICBzdXBwb3J0LnJlYXBfY2hpbGRyZW4oKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Bvc2l4cGF0aC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CmluZGV4IDU5OWM4NWEuLjdhY2E4N2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5CkBAIC0xLDExICsxLDExIEBACi1pbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgdGVzdF9nZW5lcmljcGF0aAotCiBpbXBvcnQgaXRlcnRvb2xzCi1pbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgb3MKK2ltcG9ydCBwb3NpeHBhdGgKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdhcm5pbmdzCiBmcm9tIHBvc2l4cGF0aCBpbXBvcnQgcmVhbHBhdGgsIGFic3BhdGgsIGRpcm5hbWUsIGJhc2VuYW1lCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHRlc3RfZ2VuZXJpY3BhdGgKIAogdHJ5OgogICAgIGltcG9ydCBwb3NpeApAQCAtMjQ1LDcgKzI0NSw5IEBACiAKICAgICBkZWYgdGVzdF9pc21vdW50KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzKHBvc2l4cGF0aC5pc21vdW50KCIvIiksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMocG9zaXhwYXRoLmlzbW91bnQoYiIvIiksIFRydWUpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwb3NpeHBhdGguaXNtb3VudChiIi8iKSwgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2lzbW91bnRfbm9uX2V4aXN0ZW50KHNlbGYpOgogICAgICAgICAjIE5vbi1leGlzdGVudCBtb3VudHBvaW50LgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQppbmRleCAwYzkzZDBlLi5kNDkyZDc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BwcmludC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BwcmludC5weQpAQCAtMjE5LDYgKzIxOSw4IEBACiAgb3RoZXJzLnNob3VsZC5ub3QuYmU6IGxpa2UudGhpc30iIiIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEb3R0ZWRQcmV0dHlQcmludGVyKCkucGZvcm1hdChvKSwgZXhwKQogCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgICNTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzOTA3CiAgICAgQHRlc3Quc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zZXRfcmVwcnMoc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0IGNyZWF0ZXMgYSBjb21wbGV4IGFycmFuZ2VtZW50IG9mIGZyb3plbnNldHMgYW5kCkBAIC0yNDEsMTAgKzI0MywxMiBAQAogICAgICAgICAjIENvbnNlcXVlbnRseSwgdGhpcyB0ZXN0IGlzIGZyYWdpbGUgYW5kCiAgICAgICAgICMgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiAgU21hbGwgY2hhbmdlcyB0byBQeXRob24ncyBzb3J0CiAgICAgICAgICMgYWxnb3JpdGhtIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwgd2hlbiBpdCBzaG91bGQgcGFzcy4KKyAgICAgICAgIyBYWFggT3IgY2hhbmdlcyB0byB0aGUgZGljdGlvbmFyeSBpbXBsbWVudGF0aW9uLi4uCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcHJpbnQucGZvcm1hdChzZXQoKSksICdzZXQoKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHByaW50LnBmb3JtYXQoc2V0KHJhbmdlKDMpKSksICd7MCwgMSwgMn0nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldCgpKSwgJ2Zyb3plbnNldCgpJykKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBwcmludC5wZm9ybWF0KGZyb3plbnNldChyYW5nZSgzKSkpLCAnZnJvemVuc2V0KHswLCAxLCAyfSknKQogICAgICAgICBjdWJlX3JlcHJfdGd0ID0gIiIiXAoge2Zyb3plbnNldCgpOiBmcm96ZW5zZXQoe2Zyb3plbnNldCh7Mn0pLCBmcm96ZW5zZXQoezB9KSwgZnJvemVuc2V0KHsxfSl9KSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkgYi9MaWIvdGVzdC90ZXN0X3ByaW50LnB5CmluZGV4IDhkMzdiYmMuLjlkNmRiZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHJpbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wcmludC5weQpAQCAtMTExLDYgKzExMSwzMiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHByaW50LCAnJywgZW5kPTMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwcmludCwgJycsIGZpbGU9JycpCiAKKyAgICBkZWYgdGVzdF9wcmludF9mbHVzaChzZWxmKToKKyAgICAgICAgIyBvcGVyYXRpb24gb2YgdGhlIGZsdXNoIGZsYWcKKyAgICAgICAgY2xhc3MgZmlsZWxpa2UoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLndyaXR0ZW4gPSAnJworICAgICAgICAgICAgICAgIHNlbGYuZmx1c2hlZCA9IDAKKyAgICAgICAgICAgIGRlZiB3cml0ZShzZWxmLCBzdHIpOgorICAgICAgICAgICAgICAgIHNlbGYud3JpdHRlbiArPSBzdHIKKyAgICAgICAgICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoZWQgKz0gMQorCisgICAgICAgIGYgPSBmaWxlbGlrZSgpCisgICAgICAgIHByaW50KDEsIGZpbGU9ZiwgZW5kPScnLCBmbHVzaD1UcnVlKQorICAgICAgICBwcmludCgyLCBmaWxlPWYsIGVuZD0nJywgZmx1c2g9VHJ1ZSkKKyAgICAgICAgcHJpbnQoMywgZmlsZT1mLCBmbHVzaD1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLndyaXR0ZW4sICcxMjNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5mbHVzaGVkLCAyKQorCisgICAgICAgICMgZW5zdXJlIGV4Y2VwdGlvbnMgZnJvbSBmbHVzaCBhcmUgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgY2xhc3Mgbm9mbHVzaCgpOgorICAgICAgICAgICAgZGVmIHdyaXRlKHNlbGYsIHN0cik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHByaW50LCAxLCBmaWxlPW5vZmx1c2goKSwgZmx1c2g9VHJ1ZSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQcmludCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weSBiL0xpYi90ZXN0L3Rlc3RfcHJvcGVydHkucHkKaW5kZXggY2M2YTg3Mi4uNzI2ZDZmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wcm9wZXJ0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Byb3BlcnR5LnB5CkBAIC0xMjgsNiArMTI4LDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLnNwYW0sIDgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3Z2V0dGVyLl9fY2xhc3NfXy5zcGFtLl9fZG9jX18sICJuZXcgZG9jc3RyaW5nIikKIAorICAgIGRlZiB0ZXN0X3Byb3BlcnR5X19faXNhYnN0cmFjdG1ldGhvZF9fZGVzY3JpcHRvcihzZWxmKToKKyAgICAgICAgZm9yIHZhbCBpbiAoVHJ1ZSwgRmFsc2UsIFtdLCBbMV0sICcnLCAnMScpOgorICAgICAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBmb28uX19pc2Fic3RyYWN0bWV0aG9kX18gPSB2YWwKKyAgICAgICAgICAgICAgICBmb28gPSBwcm9wZXJ0eShmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEMuZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fLCBib29sKHZhbCkpCisKKyAgICAgICAgIyBjaGVjayB0aGF0IHRoZSBwcm9wZXJ0eSdzIF9faXNhYnN0cmFjdG1ldGhvZF9fIGRlc2NyaXB0b3IgZG9lcyB0aGUKKyAgICAgICAgIyByaWdodCB0aGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEgdmFsdWUgdGhhdCBmYWlscyB0cnV0aCB0ZXN0aW5nOgorICAgICAgICBjbGFzcyBOb3RCb29sKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpCisgICAgICAgICAgICBfX2xlbl9fID0gX19ub256ZXJvX18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZm9vLl9faXNhYnN0cmFjdG1ldGhvZF9fID0gTm90Qm9vbCgpCisgICAgICAgICAgICAgICAgZm9vID0gcHJvcGVydHkoZm9vKQorICAgICAgICAgICAgQy5mb28uX19pc2Fic3RyYWN0bWV0aG9kX18KKwogCiAjIElzc3VlIDU4OTA6IHN1YmNsYXNzZXMgb2YgcHJvcGVydHkgZG8gbm90IHByZXNlcnZlIG1ldGhvZCBfX2RvY19fIHN0cmluZ3MKIGNsYXNzIFByb3BlcnR5U3ViKHByb3BlcnR5KToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggNGYxMjUxYy4uZWY5NTI2OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTIwNSw2ICsyMDUsNyBAQAogICAgICAgICBzZWxmLm9yaWdfc3Rkb3V0X2ZpbGVubyA9IHB0eS5TVERPVVRfRklMRU5PCiAgICAgICAgIHNlbGYub3JpZ19wdHlfc2VsZWN0ID0gcHR5LnNlbGVjdAogICAgICAgICBzZWxmLmZkcyA9IFtdICAjIEEgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzIHRvIGNsb3NlLgorICAgICAgICBzZWxmLmZpbGVzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19sZW5ndGhzID0gW10KICAgICAgICAgc2VsZi5zZWxlY3RfcmZkc19yZXN1bHRzID0gW10KIApAQCAtMjEyLDEwICsyMTMsMTUgQEAKICAgICAgICAgcHR5LlNURElOX0ZJTEVOTyA9IHNlbGYub3JpZ19zdGRpbl9maWxlbm8KICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBzZWxmLm9yaWdfc3Rkb3V0X2ZpbGVubwogICAgICAgICBwdHkuc2VsZWN0ID0gc2VsZi5vcmlnX3B0eV9zZWxlY3QKKyAgICAgICAgZm9yIGZpbGUgaW4gc2VsZi5maWxlczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZm9yIGZkIGluIHNlbGYuZmRzOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQotICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogCiAgICAgZGVmIF9waXBlKHNlbGYpOgpAQCAtMjIzLDYgKzIyOSwxMSBAQAogICAgICAgICBzZWxmLmZkcy5leHRlbmQocGlwZV9mZHMpCiAgICAgICAgIHJldHVybiBwaXBlX2ZkcwogCisgICAgZGVmIF9zb2NrZXRwYWlyKHNlbGYpOgorICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICBzZWxmLmZpbGVzLmV4dGVuZChzb2NrZXRwYWlyKQorICAgICAgICByZXR1cm4gc29ja2V0cGFpcgorCiAgICAgZGVmIF9tb2NrX3NlbGVjdChzZWxmLCByZmRzLCB3ZmRzLCB4ZmRzKToKICAgICAgICAgIyBUaGlzIHdpbGwgcmFpc2UgSW5kZXhFcnJvciB3aGVuIG5vIG1vcmUgZXhwZWN0ZWQgY2FsbHMgZXhpc3QuCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZWxlY3RfcmZkc19sZW5ndGhzLnBvcCgwKSwgbGVuKHJmZHMpKQpAQCAtMjM0LDkgKzI0NSw4IEBACiAgICAgICAgIHB0eS5TVERPVVRfRklMRU5PID0gbW9ja19zdGRvdXRfZmQKICAgICAgICAgbW9ja19zdGRpbl9mZCwgd3JpdGVfdG9fc3RkaW5fZmQgPSBzZWxmLl9waXBlKCkKICAgICAgICAgcHR5LlNURElOX0ZJTEVOTyA9IG1vY2tfc3RkaW5fZmQKLSAgICAgICAgc29ja2V0cGFpciA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgc29ja2V0cGFpciA9IHNlbGYuX3NvY2tldHBhaXIoKQogICAgICAgICBtYXN0ZXJzID0gW3MuZmlsZW5vKCkgZm9yIHMgaW4gc29ja2V0cGFpcl0KLSAgICAgICAgc2VsZi5mZHMuZXh0ZW5kKG1hc3RlcnMpCiAKICAgICAgICAgIyBGZWVkIGRhdGEuICBTbWFsbGVyIHRoYW4gUElQRUJVRi4gIFRoZXNlIHdyaXRlcyB3aWxsIG5vdCBibG9jay4KICAgICAgICAgb3Mud3JpdGUobWFzdGVyc1sxXSwgYidmcm9tIG1hc3RlcicpCkBAIC0yNjMsOSArMjczLDggQEAKICAgICAgICAgcHR5LlNURE9VVF9GSUxFTk8gPSBtb2NrX3N0ZG91dF9mZAogICAgICAgICBtb2NrX3N0ZGluX2ZkLCB3cml0ZV90b19zdGRpbl9mZCA9IHNlbGYuX3BpcGUoKQogICAgICAgICBwdHkuU1RESU5fRklMRU5PID0gbW9ja19zdGRpbl9mZAotICAgICAgICBzb2NrZXRwYWlyID0gc29ja2V0LnNvY2tldHBhaXIoKQorICAgICAgICBzb2NrZXRwYWlyID0gc2VsZi5fc29ja2V0cGFpcigpCiAgICAgICAgIG1hc3RlcnMgPSBbcy5maWxlbm8oKSBmb3IgcyBpbiBzb2NrZXRwYWlyXQotICAgICAgICBzZWxmLmZkcy5leHRlbmQobWFzdGVycykKIAogICAgICAgICBvcy5jbG9zZShtYXN0ZXJzWzFdKQogICAgICAgICBzb2NrZXRwYWlyWzFdLmNsb3NlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weSBiL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODFhNTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CkBAIC0wLDAgKzEsMzQ3IEBACitpbXBvcnQgaW8KK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworaW1wb3J0IHhtbC5zYXgKKworZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKK2Zyb20geG1sLmRvbSBpbXBvcnQgcHVsbGRvbQorCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZQorCisKK3RzdGZpbGUgPSBmaW5kZmlsZSgidGVzdC54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKKworIyBBIGhhbmR5IFhNTCBzbmlwcGV0LCBjb250YWluaW5nIGF0dHJpYnV0ZXMsIGEgbmFtZXNwYWNlIHByZWZpeCwgYW5kIGEKKyMgc2VsZi1jbG9zaW5nIHRhZzoKK1NNQUxMX1NBTVBMRSA9ICIiIjw/eG1sIHZlcnNpb249IjEuMCI/PgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOnhkYz0iaHR0cDovL3d3dy54bWwuY29tL2Jvb2tzIj4KKzwhLS0gQSBjb21tZW50IC0tPgorPHRpdGxlPkludHJvZHVjdGlvbiB0byBYU0w8L3RpdGxlPgorPGhyLz4KKzxwPjx4ZGM6YXV0aG9yIHhkYzphdHRyaWI9InByZWZpeGVkIGF0dHJpYnV0ZSIgYXR0cmliPSJvdGhlciBhdHRyaWIiPkEuIE5hbWVzcGFjZTwveGRjOmF1dGhvcj48L3A+Cis8L2h0bWw+IiIiCisKKworY2xhc3MgUHVsbERPTVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3BhcnNlKHNlbGYpOgorICAgICAgICAiIiJNaW5pbWFsIHRlc3Qgb2YgRE9NRXZlbnRTdHJlYW0ucGFyc2UoKSIiIgorCisgICAgICAgICMgVGhpcyBqdXN0IHRlc3RzIHRoYXQgcGFyc2luZyBmcm9tIGEgc3RyZWFtIHdvcmtzLiBBY3R1YWwgcGFyc2VyCisgICAgICAgICMgc2VtYW50aWNzIGFyZSB0ZXN0ZWQgdXNpbmcgcGFyc2VTdHJpbmcgd2l0aCBhIG1vcmUgZm9jdXNlZCBYTUwKKyAgICAgICAgIyBmcmFnbWVudC4KKworICAgICAgICAjIFRlc3Qgd2l0aCBhIGZpbGVuYW1lOgorICAgICAgICBoYW5kbGVyID0gcHVsbGRvbS5wYXJzZSh0c3RmaWxlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoaGFuZGxlci5zdHJlYW0uY2xvc2UpCisgICAgICAgIGxpc3QoaGFuZGxlcikKKworICAgICAgICAjIFRlc3Qgd2l0aCBhIGZpbGUgb2JqZWN0OgorICAgICAgICB3aXRoIG9wZW4odHN0ZmlsZSwgInJiIikgYXMgZmluOgorICAgICAgICAgICAgbGlzdChwdWxsZG9tLnBhcnNlKGZpbikpCisKKyAgICBkZWYgdGVzdF9wYXJzZV9zZW1hbnRpY3Moc2VsZik6CisgICAgICAgICIiIlRlc3QgRE9NRXZlbnRTdHJlYW0gcGFyc2luZyBzZW1hbnRpY3MuIiIiCisKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBub2RlIGlzIGEgRG9jdW1lbnQ6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG5vZGUsICJjcmVhdGVFbGVtZW50IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9ET0NVTUVOVCwgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodG1sIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihub2RlLmF0dHJpYnV0ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oInhtbG5zOnhkYyIpLnZhbHVlLAorICAgICAgICAgICAgICAiaHR0cDovL3d3dy54bWwuY29tL2Jvb2tzIikKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkgIyBMaW5lIGJyZWFrCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICMgWFhYIC0gQSBjb21tZW50IHNob3VsZCBiZSByZXBvcnRlZCBoZXJlIQorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DT01NRU5ULCBldnQpCisgICAgICAgICMgTGluZSBicmVhayBhZnRlciBzd2FsbG93ZWQgY29tbWVudDoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGl0bGUiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIHRpdGxlX25vZGUgPSBub2RlCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkludHJvZHVjdGlvbiB0byBYU0wiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0aXRsZSIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpdGxlX25vZGUgaXMgbm9kZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHIiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJociIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgicCIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLlNUQVJUX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieGRjOmF1dGhvciIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNIQVJBQ1RFUlMsIGV2dCkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChpdGVtcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInhkYzphdXRob3IiLCBub2RlLnRhZ05hbWUpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uQ0hBUkFDVEVSUywgZXZ0KQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgIyBYWFggTm8gRU5EX0RPQ1VNRU5UIGl0ZW0gaXMgZXZlciBvYnRhaW5lZDoKKyAgICAgICAgI2V2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisKKyAgICBkZWYgdGVzdF9leHBhbmRJdGVtKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgZXhwYW5kSXRlbSB3b3JrcyBhcyBleHBlY3RlZC4iIiIKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgIyBMb29wIHRocm91Z2ggdGhlIG5vZGVzIHVudGlsIHdlIGdldCB0byBhICJ0aXRsZSIgc3RhcnQgdGFnOgorICAgICAgICBmb3IgZXZ0LCBpdGVtIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uU1RBUlRfRUxFTUVOVCBhbmQgaXRlbS50YWdOYW1lID09ICJ0aXRsZSI6CisgICAgICAgICAgICAgICAgaXRlbXMuZXhwYW5kTm9kZShpdGVtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGl0ZW0uY2hpbGROb2RlcykpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gXCJ0aXRsZVwiIGVsZW1lbnQgZGV0ZWN0ZWQgaW4gU01BTExfU0FNUExFISIpCisgICAgICAgICMgTG9vcCB1bnRpbCB3ZSBnZXQgdG8gdGhlIG5leHQgc3RhcnQtZWxlbWVudDoKKyAgICAgICAgZm9yIGV2dCwgbm9kZSBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLlNUQVJUX0VMRU1FTlQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHIiLCBub2RlLnRhZ05hbWUsCisgICAgICAgICAgICAiZXhwYW5kTm9kZSBkaWQgbm90IGxlYXZlIERPTUV2ZW50U3RyZWFtIGluIHRoZSBjb3JyZWN0IHN0YXRlLiIpCisgICAgICAgICMgQXR0ZW1wdCB0byBleHBhbmQgYSBzdGFuZGFsb25lIGVsZW1lbnQ6CisgICAgICAgIGl0ZW1zLmV4cGFuZE5vZGUobm9kZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZW1zKVswXSwgcHVsbGRvbS5DSEFSQUNURVJTKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUudGFnTmFtZSwgInAiKQorICAgICAgICBpdGVtcy5leHBhbmROb2RlKG5vZGUpCisgICAgICAgIG5leHQoaXRlbXMpICMgU2tpcCBjaGFyYWN0ZXIgZGF0YQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KGl0ZW1zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUudGFnTmFtZSwgImh0bWwiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgbmV4dChpdGVtcykKKyAgICAgICAgaXRlbXMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShpdGVtcy5wYXJzZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGl0ZW1zLnN0cmVhbSkKKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9jb21tZW50KHNlbGYpOgorICAgICAgICAiIiJQdWxsRE9NIGRvZXMgbm90IHJlY2VpdmUgImNvbW1lbnQiIGV2ZW50cy4iIiIKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgZm9yIGV2dCwgXyBpbiBpdGVtczoKKyAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLkNPTU1FTlQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gY29tbWVudCB3YXMgZW5jb3VudGVyZWQiKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X2VuZF9kb2N1bWVudChzZWxmKToKKyAgICAgICAgIiIiUHVsbERPTSBkb2VzIG5vdCByZWNlaXZlICJlbmQtZG9jdW1lbnQiIGV2ZW50cy4iIiIKKyAgICAgICAgaXRlbXMgPSBwdWxsZG9tLnBhcnNlU3RyaW5nKFNNQUxMX1NBTVBMRSkKKyAgICAgICAgIyBSZWFkIGFsbCBvZiB0aGUgbm9kZXMgdXAgdG8gYW5kIGluY2x1ZGluZyA8L2h0bWw+OgorICAgICAgICBmb3IgZXZ0LCBub2RlIGluIGl0ZW1zOgorICAgICAgICAgICAgaWYgZXZ0ID09IHB1bGxkb20uRU5EX0VMRU1FTlQgYW5kIG5vZGUudGFnTmFtZSA9PSAiaHRtbCI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBBc3NlcnQgdGhhdCB0aGUgbmV4dCBub2RlIGlzIEVORF9ET0NVTUVOVDoKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQoaXRlbXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0RPQ1VNRU5ULCBldnQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgc2VsZi5mYWlsKAorICAgICAgICAgICAgICAgICJSYW4gb3V0IG9mIGV2ZW50cywgYnV0IHNob3VsZCBoYXZlIHJlY2VpdmVkIEVORF9ET0NVTUVOVCIpCisKKworY2xhc3MgVGhvcm91Z2hUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiBwdWxsZG9tLiIiIgorCisgICAgZGVmIHRlc3RfdGhvcm91Z2hfcGFyc2Uoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc29tZSBvZiB0aGUgaGFyZC10by1yZWFjaCBwYXJ0cyBvZiBQdWxsRE9NLiIiIgorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHB1bGxkb20ucGFyc2UoTm9uZSwgcGFyc2VyPVNBWEV4ZXJjaXNlcigpKSkKKworICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9zYXgyZG9tX2ZhaWwoc2VsZik6CisgICAgICAgICIiIlNBWDJET00gY2FuInQgaGFuZGxlIGEgUEkgYmVmb3JlIHRoZSByb290IGVsZW1lbnQuIiIiCisgICAgICAgIHBkID0gU0FYMkRPTVRlc3RIZWxwZXIoTm9uZSwgU0FYRXhlcmNpc2VyKCksIDEyKQorICAgICAgICBzZWxmLl90ZXN0X3Rob3JvdWdoKHBkKQorCisgICAgZGVmIHRlc3RfdGhvcm91Z2hfc2F4MmRvbShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzb21lIG9mIHRoZSBoYXJkLXRvLXJlYWNoIHBhcnRzIG9mIFNBWDJET00uIiIiCisgICAgICAgIHBkID0gU0FYMkRPTVRlc3RIZWxwZXIoTm9uZSwgU0FYMkRPTUV4ZXJjaXNlcigpLCAxMikKKyAgICAgICAgc2VsZi5fdGVzdF90aG9yb3VnaChwZCwgRmFsc2UpCisKKyAgICBkZWYgX3Rlc3RfdGhvcm91Z2goc2VsZiwgcGQsIGJlZm9yZV9yb290PVRydWUpOgorICAgICAgICAiIiJUZXN0IHNvbWUgb2YgdGhlIGhhcmQtdG8tcmVhY2ggcGFydHMgb2YgdGhlIHBhcnNlciwgdXNpbmcgYSBtb2NrCisgICAgICAgIHBhcnNlci4iIiIKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRE9DVU1FTlQsIGV2dCkKKyAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBub2RlIGlzIGEgRG9jdW1lbnQ6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG5vZGUsICJjcmVhdGVFbGVtZW50IikpCisKKyAgICAgICAgaWYgYmVmb3JlX3Jvb3Q6CisgICAgICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImEgY29tbWVudCIsIG5vZGUuZGF0YSkKKyAgICAgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uUFJPQ0VTU0lOR19JTlNUUlVDVElPTiwgZXZ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGFyZ2V0Iiwgbm9kZS50YXJnZXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJkYXRhIiwgbm9kZS5kYXRhKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5TVEFSVF9FTEVNRU5ULCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImh0bWwiLCBub2RlLnRhZ05hbWUpCisKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkNPTU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYSBjb21tZW50Iiwgbm9kZS5kYXRhKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uUFJPQ0VTU0lOR19JTlNUUlVDVElPTiwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0YXJnZXQiLCBub2RlLnRhcmdldCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiZGF0YSIsIG5vZGUuZGF0YSkKKworICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uU1RBUlRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5DSEFSQUNURVJTLCBldnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQiLCBub2RlLmRhdGEpCisgICAgICAgIGV2dCwgbm9kZSA9IG5leHQocGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHVsbGRvbS5FTkRfRUxFTUVOVCwgZXZ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJwIiwgbm9kZS50YWdOYW1lKQorICAgICAgICBldnQsIG5vZGUgPSBuZXh0KHBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHB1bGxkb20uRU5EX0VMRU1FTlQsIGV2dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHRtbCIsIG5vZGUudGFnTmFtZSkKKyAgICAgICAgZXZ0LCBub2RlID0gbmV4dChwZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwdWxsZG9tLkVORF9ET0NVTUVOVCwgZXZ0KQorCisKK2NsYXNzIFNBWEV4ZXJjaXNlcihvYmplY3QpOgorICAgICIiIkEgZmFrZSBzYXggcGFyc2VyIHRoYXQgY2FsbHMgc29tZSBvZiB0aGUgaGFyZGVyLXRvLXJlYWNoIHNheCBtZXRob2RzIHRvCisgICAgZW5zdXJlIGl0IGVtaXRzIHRoZSBjb3JyZWN0IGV2ZW50cyIiIgorCisgICAgZGVmIHNldENvbnRlbnRIYW5kbGVyKHNlbGYsIGhhbmRsZXIpOgorICAgICAgICBzZWxmLl9oYW5kbGVyID0gaGFuZGxlcgorCisgICAgZGVmIHBhcnNlKHNlbGYsIF8pOgorICAgICAgICBoID0gc2VsZi5faGFuZGxlcgorICAgICAgICBoLnN0YXJ0RG9jdW1lbnQoKQorCisgICAgICAgICMgVGhlIG5leHQgdHdvIGl0ZW1zIGVuc3VyZSB0aGF0IGl0ZW1zIHByZWNlZGluZyB0aGUgZmlyc3QKKyAgICAgICAgIyBzdGFydF9lbGVtZW50IGFyZSBwcm9wZXJseSBzdG9yZWQgYW5kIGVtaXR0ZWQ6CisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKworICAgICAgICBoLnN0YXJ0RWxlbWVudCgiaHRtbCIsIEF0dHJpYnV0ZXNJbXBsKHt9KSkKKworICAgICAgICBoLmNvbW1lbnQoImEgY29tbWVudCIpCisgICAgICAgIGgucHJvY2Vzc2luZ0luc3RydWN0aW9uKCJ0YXJnZXQiLCAiZGF0YSIpCisKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoInAiLCBBdHRyaWJ1dGVzSW1wbCh7ImNsYXNzIjogInBhcmFjbGFzcyJ9KSkKKyAgICAgICAgaC5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJwIikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJodG1sIikKKyAgICAgICAgaC5lbmREb2N1bWVudCgpCisKKyAgICBkZWYgc3R1YihzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJTdHViIG1ldGhvZC4gRG9lcyBub3RoaW5nLiIiIgorICAgICAgICBwYXNzCisgICAgc2V0UHJvcGVydHkgPSBzdHViCisgICAgc2V0RmVhdHVyZSA9IHN0dWIKKworCitjbGFzcyBTQVgyRE9NRXhlcmNpc2VyKFNBWEV4ZXJjaXNlcik6CisgICAgIiIiVGhlIHNhbWUgYXMgU0FYRXhlcmNpc2VyLCBidXQgd2l0aG91dCB0aGUgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBhbmQKKyAgICBjb21tZW50IGJlZm9yZSB0aGUgcm9vdCBlbGVtZW50LCBiZWNhdXNlIFMyRCBjYW4idCBoYW5kbGUgaXQiIiIKKworICAgIGRlZiBwYXJzZShzZWxmLCBfKToKKyAgICAgICAgaCA9IHNlbGYuX2hhbmRsZXIKKyAgICAgICAgaC5zdGFydERvY3VtZW50KCkKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoImh0bWwiLCBBdHRyaWJ1dGVzSW1wbCh7fSkpCisgICAgICAgIGguY29tbWVudCgiYSBjb21tZW50IikKKyAgICAgICAgaC5wcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oInRhcmdldCIsICJkYXRhIikKKyAgICAgICAgaC5zdGFydEVsZW1lbnQoInAiLCBBdHRyaWJ1dGVzSW1wbCh7ImNsYXNzIjogInBhcmFjbGFzcyJ9KSkKKyAgICAgICAgaC5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJwIikKKyAgICAgICAgaC5lbmRFbGVtZW50KCJodG1sIikKKyAgICAgICAgaC5lbmREb2N1bWVudCgpCisKKworY2xhc3MgU0FYMkRPTVRlc3RIZWxwZXIocHVsbGRvbS5ET01FdmVudFN0cmVhbSk6CisgICAgIiIiQWxsb3dzIHVzIHRvIGRyaXZlIFNBWDJET00gZnJvbSBhIERPTUV2ZW50U3RyZWFtLiIiIgorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLnB1bGxkb20gPSBwdWxsZG9tLlNBWDJET00oKQorICAgICAgICAjIFRoaXMgY29udGVudCBoYW5kbGVyIHJlbGllcyBvbiBuYW1lc3BhY2Ugc3VwcG9ydAorICAgICAgICBzZWxmLnBhcnNlci5zZXRGZWF0dXJlKHhtbC5zYXguaGFuZGxlci5mZWF0dXJlX25hbWVzcGFjZXMsIDEpCisgICAgICAgIHNlbGYucGFyc2VyLnNldENvbnRlbnRIYW5kbGVyKHNlbGYucHVsbGRvbSkKKworCitjbGFzcyBTQVgyRE9NVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIGNvbmZpcm0oc2VsZiwgdGVzdCwgdGVzdG5hbWU9IlRlc3QiKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRlc3QsIHRlc3RuYW1lKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBTQVgyRE9NIGNhbiBwYXJzZSBmcm9tIGEgc3RyZWFtLiIiIgorICAgICAgICB3aXRoIGlvLlN0cmluZ0lPKFNNQUxMX1NBTVBMRSkgYXMgZmluOgorICAgICAgICAgICAgc2QgPSBTQVgyRE9NVGVzdEhlbHBlcihmaW4sIHhtbC5zYXgubWFrZV9wYXJzZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKFNNQUxMX1NBTVBMRSkpCisgICAgICAgICAgICBmb3IgZXZ0LCBub2RlIGluIHNkOgorICAgICAgICAgICAgICAgIGlmIGV2dCA9PSBwdWxsZG9tLlNUQVJUX0VMRU1FTlQgYW5kIG5vZGUudGFnTmFtZSA9PSAiaHRtbCI6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAjIEJlY2F1c2UgdGhlIGJ1ZmZlciBpcyB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIFhNTCwgYWxsIHRoZQorICAgICAgICAgICAgIyBub2RlcyBzaG91bGQgaGF2ZSBiZWVuIHBhcnNlZCBhbmQgYWRkZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIobGVuKG5vZGUuY2hpbGROb2RlcyksIDApCisKKyAgICBkZWYgdGVzdFNBWDJET00oc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBTQVgyRE9NIGV4cGFuZHMgbm9kZXMgYXMgZXhwZWN0ZWQuIiIiCisgICAgICAgIHNheDJkb20gPSBwdWxsZG9tLlNBWDJET00oKQorICAgICAgICBzYXgyZG9tLnN0YXJ0RG9jdW1lbnQoKQorICAgICAgICBzYXgyZG9tLnN0YXJ0RWxlbWVudCgiZG9jIiwge30pCisgICAgICAgIHNheDJkb20uY2hhcmFjdGVycygidGV4dCIpCisgICAgICAgIHNheDJkb20uc3RhcnRFbGVtZW50KCJzdWJlbG0iLCB7fSkKKyAgICAgICAgc2F4MmRvbS5jaGFyYWN0ZXJzKCJ0ZXh0IikKKyAgICAgICAgc2F4MmRvbS5lbmRFbGVtZW50KCJzdWJlbG0iKQorICAgICAgICBzYXgyZG9tLmNoYXJhY3RlcnMoInRleHQiKQorICAgICAgICBzYXgyZG9tLmVuZEVsZW1lbnQoImRvYyIpCisgICAgICAgIHNheDJkb20uZW5kRG9jdW1lbnQoKQorCisgICAgICAgIGRvYyA9IHNheDJkb20uZG9jdW1lbnQKKyAgICAgICAgcm9vdCA9IGRvYy5kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgKHRleHQxLCBlbG0xLCB0ZXh0MikgPSByb290LmNoaWxkTm9kZXMKKyAgICAgICAgdGV4dDMgPSBlbG0xLmNoaWxkTm9kZXNbMF0KKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh0ZXh0MS5wcmV2aW91c1NpYmxpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGV4dDEubmV4dFNpYmxpbmcsIGVsbTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZWxtMS5wcmV2aW91c1NpYmxpbmcsIHRleHQxKQorICAgICAgICBzZWxmLmFzc2VydElzKGVsbTEubmV4dFNpYmxpbmcsIHRleHQyKQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQyLnByZXZpb3VzU2libGluZywgZWxtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDIubmV4dFNpYmxpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRleHQzLnByZXZpb3VzU2libGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodGV4dDMubmV4dFNpYmxpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyb290LnBhcmVudE5vZGUsIGRvYykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0MS5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKGVsbTEucGFyZW50Tm9kZSwgcm9vdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0ZXh0Mi5wYXJlbnROb2RlLCByb290KQorICAgICAgICBzZWxmLmFzc2VydElzKHRleHQzLnBhcmVudE5vZGUsIGVsbTEpCisgICAgICAgIGRvYy51bmxpbmsoKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoUHVsbERPTVRlc3RDYXNlLCBUaG9yb3VnaFRlc3RDYXNlLCBTQVgyRE9NVGVzdENhc2UpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weSBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKaW5kZXggYzVhOGU5OC4uOGUyMDAxYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWRvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CkBAIC0xOTgsNyArMTk4LDcgQEAKIG1pc3NpbmdfcGF0dGVybiA9ICJubyBQeXRob24gZG9jdW1lbnRhdGlvbiBmb3VuZCBmb3IgJyVzJyIKIAogIyBvdXRwdXQgcGF0dGVybiBmb3IgbW9kdWxlIHdpdGggYmFkIGltcG9ydHMKLWJhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBJbXBvcnRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICVzIgorYmFkaW1wb3J0X3BhdHRlcm4gPSAicHJvYmxlbSBpbiAlcyAtIEltcG9ydEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCiAKIGRlZiBydW5fcHlkb2MobW9kdWxlX25hbWUsICphcmdzLCAqKmVudik6CiAgICAgIiIiCkBAIC0yMzYsOCArMjM2LDggQEAKIGRlZiBwcmludF9kaWZmcyh0ZXh0MSwgdGV4dDIpOgogICAgICJQcmludHMgdW5pZmllZCBkaWZmcyBmb3IgdHdvIHRleHRzIgogICAgICMgWFhYIG5vdyBvYnNvbGV0ZSwgdXNlIHVuaXR0ZXN0IGJ1aWx0LWluIHN1cHBvcnQKLSAgICBsaW5lczEgPSB0ZXh0MS5zcGxpdGxpbmVzKFRydWUpCi0gICAgbGluZXMyID0gdGV4dDIuc3BsaXRsaW5lcyhUcnVlKQorICAgIGxpbmVzMSA9IHRleHQxLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkKKyAgICBsaW5lczIgPSB0ZXh0Mi5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpCiAgICAgZGlmZnMgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihsaW5lczEsIGxpbmVzMiwgbj0wLCBmcm9tZmlsZT0nZXhwZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9maWxlPSdnb3QnKQogICAgIHByaW50KCdcbicgKyAnJy5qb2luKGRpZmZzKSkKQEAgLTI1NCw2ICsyNTQsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X2h0bWxfZG9jKHNlbGYpOgogICAgICAgICByZXN1bHQsIGRvY19sb2MgPSBnZXRfcHlkb2NfaHRtbChweWRvY19tb2QpCiAgICAgICAgIG1vZF9maWxlID0gaW5zcGVjdC5nZXRhYnNmaWxlKHB5ZG9jX21vZCkKQEAgLTI2OSw2ICsyNzEsOCBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZmxhZ3Mub3B0aW1pemUgPj0gMiwKICAgICAgICAgICAgICAgICAgICAgICJEb2NzdHJpbmdzIGFyZSBvbWl0dGVkIHdpdGggLU8yIGFuZCBhYm92ZSIpCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3RyYWNlIGZ1bmN0aW9uIGludHJvZHVjZXMgX19sb2NhbHNfXyB1bmV4cGVjdGVkbHknKQogICAgIGRlZiB0ZXN0X3RleHRfZG9jKHNlbGYpOgogICAgICAgICByZXN1bHQsIGRvY19sb2MgPSBnZXRfcHlkb2NfdGV4dChweWRvY19tb2QpCiAgICAgICAgIGV4cGVjdGVkX3RleHQgPSBleHBlY3RlZF90ZXh0X3BhdHRlcm4gJSBcCkBAIC0zMjEsNiArMzI1LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAnRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PMiBhbmQgYWJvdmUnKQorICAgIEB1bml0dGVzdC5za2lwSWYoaGFzYXR0cihzeXMsICdnZXR0cmFjZScpIGFuZCBzeXMuZ2V0dHJhY2UoKSwKKyAgICAgICAgICAgICAgICAgICAgICd0cmFjZSBmdW5jdGlvbiBpbnRyb2R1Y2VzIF9fbG9jYWxzX18gdW5leHBlY3RlZGx5JykKICAgICBkZWYgdGVzdF9oZWxwX291dHB1dF9yZWRpcmVjdChzZWxmKToKICAgICAgICAgIyBpc3N1ZSA5NDAyODYsIGlmIG91dHB1dCBpcyBzZXQgaW4gSGVscGVyLCB0aGVuIGFsbCBvdXRwdXQgZnJvbQogICAgICAgICAjIEhlbHBlci5oZWxwIHNob3VsZCBiZSByZWRpcmVjdGVkCkBAIC0zODgsMTEgKzM5NCwxMCBAQAogICAgICAgICBtb2RuYW1lID0gJ3Rlc3Rtb2RfeHl6enknCiAgICAgICAgIHRlc3RwYWlycyA9ICgKICAgICAgICAgICAgICgnaV9hbV9ub3RfaGVyZScsICdpX2FtX25vdF9oZXJlJyksCi0gICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZV9laXRoZXInLCAnaV9hbV9ub3RfaGVyZV9laXRoZXInKSwKLSAgICAgICAgICAgICgndGVzdC5pX2FtX25vdF9oZXJlLm5laXRoZXJfYW1faScsICdpX2FtX25vdF9oZXJlLm5laXRoZXJfYW1faScpLAotICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlLnt9Jy5mb3JtYXQobW9kbmFtZSksCi0gICAgICAgICAgICAgJ2lfYW1fbm90X2hlcmUue30nLmZvcm1hdChtb2RuYW1lKSksCi0gICAgICAgICAgICAoJ3Rlc3Que30nLmZvcm1hdChtb2RuYW1lKSwgbW9kbmFtZSksCisgICAgICAgICAgICAoJ3Rlc3QuaV9hbV9ub3RfaGVyZV9laXRoZXInLCAndGVzdC5pX2FtX25vdF9oZXJlX2VpdGhlcicpLAorICAgICAgICAgICAgKCd0ZXN0LmlfYW1fbm90X2hlcmUubmVpdGhlcl9hbV9pJywgJ3Rlc3QuaV9hbV9ub3RfaGVyZScpLAorICAgICAgICAgICAgKCdpX2FtX25vdF9oZXJlLnt9Jy5mb3JtYXQobW9kbmFtZSksICdpX2FtX25vdF9oZXJlJyksCisgICAgICAgICAgICAoJ3Rlc3Que30nLmZvcm1hdChtb2RuYW1lKSwgJ3Rlc3Que30nLmZvcm1hdChtb2RuYW1lKSksCiAgICAgICAgICAgICApCiAKICAgICAgICAgc291cmNlZm4gPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCBtb2RuYW1lKSArIG9zLmV4dHNlcCArICJweSIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkgYi9MaWIvdGVzdC90ZXN0X3JhaXNlLnB5CmluZGV4IGUwMmMxYWYuLmJlNWMxYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmFpc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYWlzZS5weQpAQCAtNCw2ICs0LDcgQEAKICIiIlRlc3RzIGZvciB0aGUgcmFpc2Ugc3RhdGVtZW50LiIiIgogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCByZQogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTc3LDYgKzc4LDE2IEBACiAgICAgICAgICAgICAgICAgbmVzdGVkX3JlcmFpc2UoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJlcmFpc2UpCiAKKyAgICBkZWYgdGVzdF9yYWlzZV9mcm9tX05vbmUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZvbyIpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigpIGZyb20gTm9uZQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZS5fX2NvbnRleHRfXywgVHlwZUVycm9yKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGUuX19jYXVzZV9fKQorCiAgICAgZGVmIHRlc3Rfd2l0aF9yZXJhaXNlMShzZWxmKToKICAgICAgICAgZGVmIHJlcmFpc2UoKToKICAgICAgICAgICAgIHRyeToKQEAgLTEzMCw4ICsxNDEsMzUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgcmFpc2UgTXlFeGNlcHRpb24KIAorICAgIGRlZiB0ZXN0X2Fzc2VydF93aXRoX3R1cGxlX2FyZyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAoMywpCisgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICIoMywpIikKKworCiAKIGNsYXNzIFRlc3RDYXVzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdENhdXNlU3ludGF4KHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yIGZyb20gTm9uZQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGV4Yy5fX2NhdXNlX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV4Yy5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgICAgICAgICBleGMuX19zdXBwcmVzc19jb250ZXh0X18gPSBGYWxzZQorICAgICAgICAgICAgICAgIHJhaXNlIGV4YworICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBleGM6CisgICAgICAgICAgICBlID0gZXhjCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5fX2NhdXNlX18pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZS5fX3N1cHByZXNzX2NvbnRleHRfXykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuX19jb250ZXh0X18sIFR5cGVFcnJvcikKKwogICAgIGRlZiB0ZXN0X2ludmFsaWRfY2F1c2Uoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IgZnJvbSA1CkBAIC0xNzEsNiArMjA5LDcgQEAKIAogCiBjbGFzcyBUZXN0VHJhY2ViYWNrKHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIGRlZiB0ZXN0X3NldHNfdHJhY2ViYWNrKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggNzc2ZDBjNC4uYjU5MzFiYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTM0LDggKzM0LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZHNlcSwgc2VsZi5yYW5kb21saXN0KE4pKQogCiAgICAgZGVmIHRlc3Rfc2VlZGFyZ3Moc2VsZik6CisgICAgICAgICMgU2VlZCB2YWx1ZSB3aXRoIGEgbmVnYXRpdmUgaGFzaC4KKyAgICAgICAgY2xhc3MgTXlTZWVkKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xNzI5CiAgICAgICAgIGZvciBhcmcgaW4gW05vbmUsIDAsIDAsIDEsIDEsIC0xLCAtMSwgMTAqKjIwLCAtKDEwKioyMCksCi0gICAgICAgICAgICAgICAgICAgIDMuMTQsIDErMmosICdhJywgdHVwbGUoJ2FiYycpXToKKyAgICAgICAgICAgICAgICAgICAgMy4xNCwgMSsyaiwgJ2EnLCB0dXBsZSgnYWJjJyksIE15U2VlZCgpXToKICAgICAgICAgICAgIHNlbGYuZ2VuLnNlZWQoYXJnKQogICAgICAgICBmb3IgYXJnIGluIFtsaXN0KHJhbmdlKDMpKSwgZGljdChvbmU9MSldOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmdlbi5zZWVkLCBhcmcpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCBlZGUwNzkxLi5mMTgwNDZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTM0MSwxMyArMzQxLDM1IEBACiAKICAgICBkZWYgdGVzdF9waWNrbGluZyhzZWxmKToKICAgICAgICAgdGVzdGNhc2VzID0gWygxMywpLCAoMCwgMTEpLCAoLTIyLCAxMCksICgyMCwgMywgLTEpLAotICAgICAgICAgICAgICAgICAgICAgKDEzLCAyMSwgMyksICgtMiwgMiwgMildCisgICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKSwgKDIqKjY1LCAyKio2NSsyKV0KICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3IgdCBpbiB0ZXN0Y2FzZXM6CiAgICAgICAgICAgICAgICAgciA9IHJhbmdlKCp0KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHIsIHByb3RvKSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChyKSkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICB0ZXN0Y2FzZXMgPSBbKDEzLCksICgwLCAxMSksICgtMjIsIDEwKSwgKDIwLCAzLCAtMSksCisgICAgICAgICAgICAgICAgICAgICAoMTMsIDIxLCAzKSwgKC0yLCAyLCAyKSwgKDIqKjY1LCAyKio2NSsyKV0KKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICBmb3IgdCBpbiB0ZXN0Y2FzZXM6CisgICAgICAgICAgICAgICAgaXQgPSBpdG9yZyA9IGl0ZXIocmFuZ2UoKnQpKQorICAgICAgICAgICAgICAgIGRhdGEgPSBsaXN0KHJhbmdlKCp0KSkKKworICAgICAgICAgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCBkYXRhKQorCisgICAgICAgICAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdCksIGRhdGFbMTpdKQorCiAgICAgZGVmIHRlc3Rfb2RkX2J1ZyhzZWxmKToKICAgICAgICAgIyBUaGlzIHVzZWQgdG8gcmFpc2UgYSAiU3lzdGVtRXJyb3I6IE5VTEwgcmVzdWx0IHdpdGhvdXQgZXJyb3IiCiAgICAgICAgICMgYmVjYXVzZSB0aGUgcmFuZ2UgdmFsaWRhdGlvbiBzdGVwIHdhcyBlYXRpbmcgdGhlIGV4Y2VwdGlvbgpAQCAtNTA3LDYgKzUyOSw4NyBAQAogICAgICAgICAgICAgICAgIGZvciBrIGluIHZhbHVlcyAtIHswfToKICAgICAgICAgICAgICAgICAgICAgcltpOmo6a10KIAorICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIHRlc3RfcmFuZ2VzID0gW3JhbmdlKDApLCByYW5nZSgwLCAtMSksIHJhbmdlKDEsIDEsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgxKSwgcmFuZ2UoNSwgNiksIHJhbmdlKDUsIDYsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICByYW5nZSg1LCA3LCAyKSwgcmFuZ2UoMiksIHJhbmdlKDAsIDQsIDIpLAorICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgwLCA1LCAyKSwgcmFuZ2UoMCwgNiwgMildCisgICAgICAgIHRlc3RfdHVwbGVzID0gbGlzdChtYXAodHVwbGUsIHRlc3RfcmFuZ2VzKSkKKworICAgICAgICAjIENoZWNrIHRoYXQgZXF1YWxpdHkgb2YgcmFuZ2VzIG1hdGNoZXMgZXF1YWxpdHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgIyB0dXBsZXMgZm9yIGVhY2ggcGFpciBmcm9tIHRoZSB0ZXN0IGxpc3RzIGFib3ZlLgorICAgICAgICByYW5nZXNfZXEgPSBbYSA9PSBiIGZvciBhIGluIHRlc3RfcmFuZ2VzIGZvciBiIGluIHRlc3RfcmFuZ2VzXQorICAgICAgICB0dXBsZXNfZXEgPSBbYSA9PSBiIGZvciBhIGluIHRlc3RfdHVwbGVzIGZvciBiIGluIHRlc3RfdHVwbGVzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlc19lcSwgdHVwbGVzX2VxKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCAhPSBjb3JyZWN0bHkgZ2l2ZXMgdGhlIGxvZ2ljYWwgbmVnYXRpb24gb2YgPT0KKyAgICAgICAgcmFuZ2VzX25lID0gW2EgIT0gYiBmb3IgYSBpbiB0ZXN0X3JhbmdlcyBmb3IgYiBpbiB0ZXN0X3Jhbmdlc10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZXNfbmUsIFtub3QgeCBmb3IgeCBpbiByYW5nZXNfZXFdKQorCisgICAgICAgICMgRXF1YWwgcmFuZ2VzIHNob3VsZCBoYXZlIGVxdWFsIGhhc2hlcy4KKyAgICAgICAgZm9yIGEgaW4gdGVzdF9yYW5nZXM6CisgICAgICAgICAgICBmb3IgYiBpbiB0ZXN0X3JhbmdlczoKKyAgICAgICAgICAgICAgICBpZiBhID09IGI6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChhKSwgaGFzaChiKSkKKworICAgICAgICAjIFJhbmdlcyBhcmUgdW5lcXVhbCB0byBvdGhlciB0eXBlcyAoZXZlbiBzZXF1ZW5jZSB0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyYW5nZSgwKSA9PSAoKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKCkgPT0gcmFuZ2UoMCksIEZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydElzKHJhbmdlKDIpID09IFswLCAxXSwgRmFsc2UpCisKKyAgICAgICAgIyBIdWdlIGludGVnZXJzIGFyZW4ndCBhIHByb2JsZW0uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2UoMCwgMioqMTAwIC0gMSwgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMCwgMioqMTAwLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHJhbmdlKDAsIDIqKjEwMCAtIDEsIDIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoKHJhbmdlKDAsIDIqKjEwMCwgMikpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJhbmdlKDAsIDIqKjEwMCwgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UoMCwgMioqMTAwICsgMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZ2UoMioqMjAwLCAyKioyMDEgLSAyKio5OSwgMioqMTAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSgyKioyMDAsIDIqKjIwMSwgMioqMTAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHJhbmdlKDIqKjIwMCwgMioqMjAxIC0gMioqOTksIDIqKjEwMCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2gocmFuZ2UoMioqMjAwLCAyKioyMDEsIDIqKjEwMCkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJhbmdlKDIqKjIwMCwgMioqMjAxLCAyKioxMDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlKDIqKjIwMCwgMioqMjAxICsgMSwgMioqMTAwKSkKKworICAgICAgICAjIE9yZGVyIGNvbXBhcmlzb25zIGFyZSBub3QgaW1wbGVtZW50ZWQgZm9yIHJhbmdlcy4KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgcmFuZ2UoMCkgPCByYW5nZSgwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICByYW5nZSgwKSA+IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApIDw9IHJhbmdlKDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHJhbmdlKDApID49IHJhbmdlKDApCisKKworICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgICMgdGVzdCB0aGUgc3RhcnQsIHN0b3AgYW5kIHN0ZXAgYXR0cmlidXRlcyBvZiByYW5nZSBvYmplY3RzCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDApLCAwLCAwLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgxMCksIDAsIDEwLCAxKQorICAgICAgICBzZWxmLmFzc2VydF9hdHRycyhyYW5nZSgtMTApLCAwLCAtMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDAsIDEwLCAxKSwgMCwgMTAsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDAsIDEwLCAzKSwgMCwgMTAsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0X2F0dHJzKHJhbmdlKDEwLCAwLCAtMSksIDEwLCAwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYXR0cnMocmFuZ2UoMTAsIDAsIC0zKSwgMTAsIDAsIC0zKQorCisgICAgZGVmIGFzc2VydF9hdHRycyhzZWxmLCByYW5nZW9iaiwgc3RhcnQsIHN0b3AsIHN0ZXApOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0YXJ0LCBzdGFydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYW5nZW9iai5zdG9wLCBzdG9wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmdlb2JqLnN0ZXAsIHN0ZXApCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICByYW5nZW9iai5zdGFydCA9IDAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICByYW5nZW9iai5zdG9wID0gMTAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICByYW5nZW9iai5zdGVwID0gMQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0YXJ0CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgZGVsIHJhbmdlb2JqLnN0b3AKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgcmFuZ2VvYmouc3RlcAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdC5zdXBwb3J0LnJ1bl91bml0dGVzdChSYW5nZVRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCA5NDBiYTM5Li45YjBhYTc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTQ2Niw3ICs0NjYsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3BhbigpLCBzcGFuKQogCiAgICAgZGVmIHRlc3RfcmVfZXNjYXBlKHNlbGYpOgotICAgICAgICBhbG51bV9jaGFycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgICAgICBhbG51bV9jaGFycyA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdfJwogICAgICAgICBwID0gJycuam9pbihjaHIoaSkgZm9yIGkgaW4gcmFuZ2UoMjU2KSkKICAgICAgICAgZm9yIGMgaW4gcDoKICAgICAgICAgICAgIGlmIGMgaW4gYWxudW1fY2hhcnM6CkBAIC00NzksNyArNDc5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRNYXRjaChyZS5lc2NhcGUocCksIHApCiAKICAgICBkZWYgdGVzdF9yZV9lc2NhcGVfYnl0ZShzZWxmKToKLSAgICAgICAgYWxudW1fY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgYWxudW1fY2hhcnMgPSAoc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgJ18nKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgcCA9IGJ5dGVzKHJhbmdlKDI1NikpCiAgICAgICAgIGZvciBpIGluIHA6CiAgICAgICAgICAgICBiID0gYnl0ZXMoW2ldKQpAQCAtNTI2LDI0ICs1MjYsOTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUuY29tcGlsZSgnXnBhdHRlcm4kJywgZmxhZyksIE5vbmUpCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2xpdGVyYWxzKHNlbGYpOgotICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM28iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJcJTAzbzAiICUgaSwgY2hyKGkpKyIwIiksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXCUwM284IiAlIGksIGNocihpKSsiOCIpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeCIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIlx4JTAyeDAiICUgaSwgY2hyKGkpKyIwIiksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiXHglMDJ4eiIgJSBpLCBjaHIoaSkrInoiKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCAiXDkxMSIsICIiKQorICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKKyAgICAgICAgICAgIGlmIGkgPCAyNTY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcJTAzbyIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM28wIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXCUwM284IiAlIGksIGNocihpKSsiOCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4IiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJceCUwMngwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHglMDJ4eiIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgICAgIGlmIGkgPCAweDEwMDAwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4IiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJcdSUwNHgwIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXHUlMDR4eiIgJSBpLCBjaHIoaSkrInoiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXFUlMDh4IiAlIGksIGNocihpKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eDAiICUgaSwgY2hyKGkpKyIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlxVJTA4eHoiICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDAiLCAiXDAwMCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwOCIsICJcMDAwOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlwwMSIsICJcMDAxIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiXDAxOCIsICJcMDAxOCIpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIlw1NjciLCBjaHIoMG8xNjcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlw5MTEiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx4MSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHgxeiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXHUxMjMiLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIlx1MTIzeiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiXFUwMDAxMjM0IiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMDEyMzR6IiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJcVTAwMTEwMDAwIiwgIiIpCiAKICAgICBkZWYgdGVzdF9zcmVfY2hhcmFjdGVyX2NsYXNzX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NSwgMjU2LCAweEZGRkYsIDB4MTAwMDAsIDB4MTBGRkZGXToKKyAgICAgICAgICAgIGlmIGkgPCAyNTY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCVvXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlbzhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCUwM29dIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXCUwM28wXSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1wlMDNvOF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltceCUwMnhdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHglMDJ4MF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChyIltceCUwMnh6XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgaWYgaSA8IDB4MTAwMDA6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHUlMDR4XSIgJSBpLCBjaHIoaSkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1x1JTA0eDBdIiAlIGksIGNocihpKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXHUlMDR4el0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eF0iICUgaSwgY2hyKGkpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKHIiW1xVJTA4eDBdIiAlIGksIGNocihpKSsiMCIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2gociJbXFUlMDh4el0iICUgaSwgY2hyKGkpKyJ6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgciJbXDkxMV0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltceDF6XSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1x1MTIzel0iLCAiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCByIltcVTAwMDEyMzR6XSIsICIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUubWF0Y2gsIHIiW1xVMDAxMTAwMDBdIiwgIiIpCisKKyAgICBkZWYgdGVzdF9zcmVfYnl0ZV9saXRlcmFscyhzZWxmKToKICAgICAgICAgZm9yIGkgaW4gWzAsIDgsIDE2LCAzMiwgNjQsIDEyNywgMTI4LCAyNTVdOgotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltcJTAzb10iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXCUwM28wXSIgJSBpLCBjaHIoaSkpLCBOb25lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChyZS5tYXRjaChyIltcJTAzbzhdIiAlIGksIGNocihpKSksIE5vbmUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlLm1hdGNoKHIiW1x4JTAyeF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXHglMDJ4MF0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocmUubWF0Y2gociJbXHglMDJ4el0iICUgaSwgY2hyKGkpKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCAiW1w5MTFdIiwgIiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJcJTAzbyIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJcJTAzbzAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJcJTAzbzgiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiI4IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiXHglMDJ4MCIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiIjAiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKChyIlx4JTAyeHoiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiJ6IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlx1IiwgYid1JykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlxVIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwOCIsIGIiXDAwMDgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiXDAxIiwgYiJcMDAxIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlwwMTgiLCBiIlwwMDE4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLm1hdGNoKGJyIlw1NjciLCBieXRlcyhbMG8xNjddKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXDkxMSIsIGIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLm1hdGNoLCBiciJceDEiLCBiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiXHgxeiIsIGIiIikKKworICAgIGRlZiB0ZXN0X3NyZV9ieXRlX2NsYXNzX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgaSBpbiBbMCwgOCwgMTYsIDMyLCA2NCwgMTI3LCAxMjgsIDI1NV06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCVvXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCVvOF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1wlMDNvXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCUwM28wXSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXCUwM284XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXHglMDJ4XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaCgociJbXHglMDJ4MF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goKHIiW1x4JTAyeHpdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUubWF0Y2goYnIiW1x1XSIsIGIndScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5tYXRjaChiciJbXFVdIiwgYidVJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1w5MTFdIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5tYXRjaCwgYnIiW1x4MXpdIiwgIiIpCiAKICAgICBkZWYgdGVzdF9idWdfMTEzMjU0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKGEpfChiKScsICdiJykuc3RhcnQoMSksIC0xKQpAQCAtNjUyLDYgKzcyMCwyNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKIAorICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgMSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW2l0ZW0uZ3JvdXAoMCkgZm9yIGl0ZW0gaW4gaXRlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyI6IiwgIjo6IiwgIjo6OiJdKQorCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUociI6KyIpCisgICAgICAgIGl0ZXIgPSBwYXQuZmluZGl0ZXIoImE6Yjo6Yzo6OmQiLCBwb3M9MSwgZW5kcG9zPTEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtpdGVtLmdyb3VwKDApIGZvciBpdGVtIGluIGl0ZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsiOiIsICI6OiIsICI6OjoiXSkKKworICAgICAgICBwYXQgPSByZS5jb21waWxlKHIiOisiKQorICAgICAgICBpdGVyID0gcGF0LmZpbmRpdGVyKCJhOmI6OmM6OjpkIiwgZW5kcG9zPTEwLCBwb3M9MSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjoiLCAiOjoiLCAiOjo6Il0pCisKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyIjorIikKKyAgICAgICAgaXRlciA9IHBhdC5maW5kaXRlcigiYTpiOjpjOjo6ZCIsIHBvcz0zLCBlbmRwb3M9OCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbaXRlbS5ncm91cCgwKSBmb3IgaXRlbSBpbiBpdGVyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbIjo6IiwgIjo6Il0pCisKICAgICBkZWYgdGVzdF9idWdfOTI2MDc1KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuY29tcGlsZSgnYnVnXzkyNjA3NScpIGlzIG5vdAogICAgICAgICAgICAgICAgICAgICAgcmUuY29tcGlsZShiJ2J1Z185MjYwNzUnKSkKQEAgLTgxOCw2ICs5MDYsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgX3NyZS5jb21waWxlLCAiYWJjIiwgMCwgW2xvbmdfb3ZlcmZsb3ddKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zcmUuY29tcGlsZSwge30sIDAsIFtdKQogCisgICAgZGVmIHRlc3Rfc2VhcmNoX2RvdF91bmljb2RlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZS5zZWFyY2goIjEyMy4qLSIsICcxMjNhYmMtJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1x4ZTktJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJlLnNlYXJjaCgiMTIzLiotIiwgJzEyM1x1MjBhYy0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXFUwMDEwZmZmZi0nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocmUuc2VhcmNoKCIxMjMuKi0iLCAnMTIzXHhlOVx1MjBhY1xVMDAxMGZmZmYtJykpCisKICAgICBkZWYgdGVzdF9jb21waWxlKHNlbGYpOgogICAgICAgICAjIFRlc3QgcmV0dXJuIHZhbHVlIHdoZW4gZ2l2ZW4gc3RyaW5nIGFuZCBwYXR0ZXJuIGFzIHBhcmFtZXRlcgogICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgncmFuZG9tIHBhdHRlcm4nKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5IGIvTGliL3Rlc3QvdGVzdF9yZXBybGliLnB5CmluZGV4IGIwZGM0ZDcuLjU4OWVjZGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmVwcmxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlcHJsaWIucHkKQEAgLTMsMTIgKzMsMTQgQEAKICAgTmljayBNYXRoZXdzb24KICIiIgogCitpbXBvcnQgaW1wCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBzaHV0aWwKK2ltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBjcmVhdGVfZW1wdHlfZmlsZSwgdmVyYm9zZQogZnJvbSByZXBybGliIGltcG9ydCByZXByIGFzIHIgIyBEb24ndCBzaGFkb3cgYnVpbHRpbiByZXByCiBmcm9tIHJlcHJsaWIgaW1wb3J0IFJlcHIKIGZyb20gcmVwcmxpYiBpbXBvcnQgcmVjdXJzaXZlX3JlcHIKQEAgLTEyOSw4ICsxMzEsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEluKHMuZmluZCgiLi4uIiksIFsxMiwgMTNdKQogCiAgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUocmVwcihsYW1iZGEgeDogeCkuc3RhcnRzd2l0aCgKLSAgICAgICAgICAgICI8ZnVuY3Rpb24gPGxhbWJkYSIpKQorICAgICAgICByID0gcmVwcihsYW1iZGEgeDogeCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgiPGZ1bmN0aW9uIFJlcHJUZXN0cy50ZXN0X2xhbWJkYS48bG9jYWxzPi48bGFtYmRhIiksIHIpCiAgICAgICAgICMgWFhYIGFub255bW91cyBmdW5jdGlvbnM/ICBzZWUgZnVuY19yZXByCiAKICAgICBkZWYgdGVzdF9idWlsdGluX2Z1bmN0aW9uKHNlbGYpOgpAQCAtMTkzLDI2ICsxOTUsMjkgQEAKICAgICAgICAgcih5KQogICAgICAgICByKHopCiAKLWRlZiB0b3VjaChwYXRoLCB0ZXh0PScnKToKLSAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgIGZwLndyaXRlKHRleHQpCi0gICAgZnAuY2xvc2UoKQorZGVmIHdyaXRlX2ZpbGUocGF0aCwgdGV4dCk6CisgICAgd2l0aCBvcGVuKHBhdGgsICd3JywgZW5jb2Rpbmc9J0FTQ0lJJykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKHRleHQpCiAKIGNsYXNzIExvbmdSZXByVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbG9uZ25hbWUgPSAnYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uJworCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBsb25nbmFtZSA9ICdhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24nCi0gICAgICAgIHNlbGYucGtnbmFtZSA9IG9zLnBhdGguam9pbihsb25nbmFtZSkKLSAgICAgICAgc2VsZi5zdWJwa2duYW1lID0gb3MucGF0aC5qb2luKGxvbmduYW1lLCBsb25nbmFtZSkKKyAgICAgICAgc2VsZi5wa2duYW1lID0gb3MucGF0aC5qb2luKHNlbGYubG9uZ25hbWUpCisgICAgICAgIHNlbGYuc3VicGtnbmFtZSA9IG9zLnBhdGguam9pbihzZWxmLmxvbmduYW1lLCBzZWxmLmxvbmduYW1lKQogICAgICAgICAjIE1ha2UgdGhlIHBhY2thZ2UgYW5kIHN1YnBhY2thZ2UKICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLnBrZ25hbWUsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgb3MubWtkaXIoc2VsZi5wa2duYW1lKQotICAgICAgICB0b3VjaChvcy5wYXRoLmpvaW4oc2VsZi5wa2duYW1lLCAnX19pbml0X18ucHknKSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYucGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5zdWJwa2duYW1lLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAgICAgICAgIG9zLm1rZGlyKHNlbGYuc3VicGtnbmFtZSkKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ19faW5pdF9fLnB5JykpCisgICAgICAgIGNyZWF0ZV9lbXB0eV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdfX2luaXRfXy5weScpKQogICAgICAgICAjIFJlbWVtYmVyIHdoZXJlIHdlIGFyZQogICAgICAgICBzZWxmLmhlcmUgPSBvcy5nZXRjd2QoKQogICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc2VsZi5oZXJlKQorICAgICAgICAjIFdoZW4gcmVncnRlc3QgaXMgcnVuIHdpdGggaXRzIC1qIG9wdGlvbiwgdGhpcyBjb21tYW5kIGFsb25lIGlzIG5vdAorICAgICAgICAjIGVub3VnaC4KKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgYWN0aW9ucyA9IFtdCkBAIC0yMjksMjAgKzIzNCw0MCBAQAogICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwKQogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KIAorICAgIGRlZiBfY2hlY2tfcGF0aF9saW1pdGF0aW9ucyhzZWxmLCBtb2R1bGVfbmFtZSk6CisgICAgICAgICMgYmFzZSBkaXJlY3RvcnkKKyAgICAgICAgc291cmNlX3BhdGhfbGVuID0gbGVuKHNlbGYuaGVyZSkKKyAgICAgICAgIyBhIHBhdGggc2VwYXJhdG9yICsgYGxvbmduYW1lYCAodHdpY2UpCisgICAgICAgIHNvdXJjZV9wYXRoX2xlbiArPSAyICogKGxlbihzZWxmLmxvbmduYW1lKSArIDEpCisgICAgICAgICMgYSBwYXRoIHNlcGFyYXRvciArIGBtb2R1bGVfbmFtZWAgKyAiLnB5IgorICAgICAgICBzb3VyY2VfcGF0aF9sZW4gKz0gbGVuKG1vZHVsZV9uYW1lKSArIDEgKyBsZW4oIi5weSIpCisgICAgICAgIGNhY2hlZF9wYXRoX2xlbiA9IHNvdXJjZV9wYXRoX2xlbiArIGxlbihpbXAuY2FjaGVfZnJvbV9zb3VyY2UoIngucHkiKSkgLSBsZW4oIngucHkiKQorICAgICAgICBpZiBvcy5uYW1lID09ICdudCcgYW5kIGNhY2hlZF9wYXRoX2xlbiA+PSAyNTg6CisgICAgICAgICAgICAjIFVuZGVyIFdpbmRvd3MsIHRoZSBtYXggcGF0aCBsZW4gaXMgMjYwIGluY2x1ZGluZyBDJ3MgdGVybWluYXRpbmcKKyAgICAgICAgICAgICMgTlVMIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICMgKHNlZSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3JTI4dj12cy44NSUyOS5hc3B4I21heHBhdGgpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHBhdGhzIHRvbyBsb25nICglZCBjaGFyYWN0ZXJzKSBmb3IgV2luZG93cycgMjYwIGNoYXJhY3RlciBsaW1pdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJSBjYWNoZWRfcGF0aF9sZW4pCisgICAgICAgIGVsaWYgb3MubmFtZSA9PSAnbnQnIGFuZCB2ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoImNhY2hlZF9wYXRoX2xlbiA9IiwgY2FjaGVkX3BhdGhfbGVuKQorCiAgICAgZGVmIHRlc3RfbW9kdWxlKHNlbGYpOgotICAgICAgICBlcSA9IHNlbGYuYXNzZXJ0RXF1YWwKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKHNlbGYucGtnbmFtZSkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgc2VsZi5wa2duYW1lICsgJy5weScpKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbgotICAgICAgICBlcShyZXByKGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbiksCi0gICAgICAgICAgICI8bW9kdWxlICclcycgZnJvbSAnJXMnPiIgJSAoYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uLl9fbmFtZV9fLCBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uX19maWxlX18pKQotICAgICAgICBlcShyZXByKHN5cyksICI8bW9kdWxlICdzeXMnIChidWlsdC1pbik+IikKKyAgICAgICAgbW9kdWxlID0gYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihtb2R1bGUpLCAiPG1vZHVsZSAlciBmcm9tICVyPiIgJSAobW9kdWxlLl9fbmFtZV9fLCBtb2R1bGUuX19maWxlX18pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoc3lzKSwgIjxtb2R1bGUgJ3N5cycgKGJ1aWx0LWluKT4iKQogCiAgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygnZm9vJykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdmb28ucHknKSwgJycnXAogY2xhc3MgZm9vKG9iamVjdCk6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGZvbwogICAgICAgICBlcShyZXByKGZvby5mb28pLAogICAgICAgICAgICAgICAgIjxjbGFzcyAnJXMuZm9vJz4iICUgZm9vLl9fbmFtZV9fKQpAQCAtMjUzLDM5ICsyNzgsNDYgQEAKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRlc3RfY2xhc3Moc2VsZik6Ci0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAorICAgICAgICBzZWxmLl9jaGVja19wYXRoX2xpbWl0YXRpb25zKCdiYXInKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdiYXIucHknKSwgJycnXAogY2xhc3MgYmFyOgogICAgIHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBiYXIKICAgICAgICAgIyBNb2R1bGUgbmFtZSBtYXkgYmUgcHJlZml4ZWQgd2l0aCAidGVzdC4iLCBkZXBlbmRpbmcgb24gaG93IHJ1bi4KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGJhci5iYXIpLCAiPGNsYXNzICclcy5iYXInPiIgJSBiYXIuX19uYW1lX18pCiAKICAgICBkZWYgdGVzdF9pbnN0YW5jZShzZWxmKToKLSAgICAgICAgdG91Y2gob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCisgICAgICAgIHNlbGYuX2NoZWNrX3BhdGhfbGltaXRhdGlvbnMoJ2JheicpCisgICAgICAgIHdyaXRlX2ZpbGUob3MucGF0aC5qb2luKHNlbGYuc3VicGtnbmFtZSwgJ2Jhei5weScpLCAnJydcCiBjbGFzcyBiYXo6CiAgICAgcGFzcwogJycnKQorICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICBmcm9tIGFyZWFsbHlsb25ncGFja2FnZWFuZG1vZHVsZW5hbWV0b3Rlc3RyZXBydHJ1bmNhdGlvbi5hcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24gaW1wb3J0IGJhegogICAgICAgICBpYmF6ID0gYmF6LmJheigpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXByKGliYXopLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAiPCVzLmJheiBvYmplY3QgYXQgMHgiICUgYmF6Ll9fbmFtZV9fKSkKIAogICAgIGRlZiB0ZXN0X21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5fY2hlY2tfcGF0aF9saW1pdGF0aW9ucygncXV4JykKICAgICAgICAgZXEgPSBzZWxmLmFzc2VydEVxdWFsCi0gICAgICAgIHRvdWNoKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbihzZWxmLnN1YnBrZ25hbWUsICdxdXgucHknKSwgJycnXAogY2xhc3MgYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWE6CiAgICAgZGVmIGFtZXRob2Qoc2VsZik6IHBhc3MKICcnJykKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgZnJvbSBhcmVhbGx5bG9uZ3BhY2thZ2VhbmRtb2R1bGVuYW1ldG90ZXN0cmVwcnRydW5jYXRpb24uYXJlYWxseWxvbmdwYWNrYWdlYW5kbW9kdWxlbmFtZXRvdGVzdHJlcHJ0cnVuY2F0aW9uIGltcG9ydCBxdXgKICAgICAgICAgIyBVbmJvdW5kIG1ldGhvZHMgZmlyc3QKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIocXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QpLnN0YXJ0c3dpdGgoCi0gICAgICAgICc8ZnVuY3Rpb24gYW1ldGhvZCcpKQorICAgICAgICByID0gcmVwcihxdXguYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEuYW1ldGhvZCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIuc3RhcnRzd2l0aCgnPGZ1bmN0aW9uIGFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhLmFtZXRob2QnKSwgcikKICAgICAgICAgIyBCb3VuZCBtZXRob2QgbmV4dAogICAgICAgICBpcXV4ID0gcXV4LmFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcHIoaXF1eC5hbWV0aG9kKS5zdGFydHN3aXRoKAorICAgICAgICByID0gcmVwcihpcXV4LmFtZXRob2QpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLnN0YXJ0c3dpdGgoCiAgICAgICAgICAgICAnPGJvdW5kIG1ldGhvZCBhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS5hbWV0aG9kIG9mIDwlcy5hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYSBvYmplY3QgYXQgMHgnIFwKLSAgICAgICAgICAgICUgKHF1eC5fX25hbWVfXywpICkpCisgICAgICAgICAgICAlIChxdXguX19uYW1lX18sKSApLCByKQogCiAgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbihzZWxmKToKICAgICAgICAgIyBYWFggdGVzdCBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2l0aCByZWFsbHkgbG9uZyBuYW1lcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5IGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CmluZGV4IGY4ZjM3MTcuLjBiNjI5ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKQEAgLTIyMCw2ICsyMjAsNyBAQAogICAgICAgICBmb3IgZnVuYyBpbiAoZG8sIG9wZXJhdG9yLm5vdF8pOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCBmdW5jLCBCYWQoKSkKIAorICAgIEBzdXBwb3J0Lm5vX3RyYWNpbmcKICAgICBkZWYgdGVzdF9yZWN1cnNpb24oc2VsZik6CiAgICAgICAgICMgQ2hlY2sgdGhhdCBjb21wYXJpc29uIGZvciByZWN1cnNpdmUgb2JqZWN0cyBmYWlscyBncmFjZWZ1bGx5CiAgICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJMaXN0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5IGIvTGliL3Rlc3QvdGVzdF9ydW5weS5weQppbmRleCA5NmQyYmViLi5mZWZlZmM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKQEAgLTUsMTEgKzUsMTUgQEAKIGltcG9ydCBzeXMKIGltcG9ydCByZQogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgcHlfY29tcGlsZQotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZvcmdldCwgbWFrZV9sZWdhY3lfcHljLCBydW5fdW5pdHRlc3QsIHVubG9hZCwgdmVyYm9zZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0ICgKKyAgICBmb3JnZXQsIG1ha2VfbGVnYWN5X3B5YywgcnVuX3VuaXR0ZXN0LCB1bmxvYWQsIHZlcmJvc2UsIG5vX3RyYWNpbmcsCisgICAgY3JlYXRlX2VtcHR5X2ZpbGUpCiBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbXBvcnQgKAogICAgIG1ha2VfcGtnLCBtYWtlX3NjcmlwdCwgbWFrZV96aXBfcGtnLCBtYWtlX3ppcF9zY3JpcHQsIHRlbXBfZGlyKQogCisKIGltcG9ydCBydW5weQogZnJvbSBydW5weSBpbXBvcnQgX3J1bl9jb2RlLCBfcnVuX21vZHVsZV9jb2RlLCBydW5fbW9kdWxlLCBydW5fcGF0aAogIyBOb3RlOiBUaGlzIG1vZHVsZSBjYW4ndCBzYWZlbHkgdGVzdCBfcnVuX21vZHVsZV9hc19tYWluIGFzIGl0CkBAIC0xNDUsNyArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF9wYWNrYWdlKQogICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCiAKLQorIyBUT0RPOiBVc2Ugc2VsZi5hZGRDbGVhbnVwIHRvIGdldCByaWQgb2YgYSBsb3Qgb2YgdHJ5LWZpbmFsbHkgYmxvY2tzCiBjbGFzcyBSdW5Nb2R1bGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgQ29kZUV4ZWN1dGlvbk1peGluKToKICAgICAiIiJVbml0IHRlc3RzIGZvciBydW5weS5ydW5fbW9kdWxlIiIiCiAKQEAgLTE3NSw4ICsxNzksNyBAQAogICAgIGRlZiBfYWRkX3BrZ19kaXIoc2VsZiwgcGtnX2Rpcik6CiAgICAgICAgIG9zLm1rZGlyKHBrZ19kaXIpCiAgICAgICAgIHBrZ19mbmFtZSA9IG9zLnBhdGguam9pbihwa2dfZGlyLCAiX19pbml0X18ucHkiKQotICAgICAgICBwa2dfZmlsZSA9IG9wZW4ocGtnX2ZuYW1lLCAidyIpCi0gICAgICAgIHBrZ19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUocGtnX2ZuYW1lKQogICAgICAgICByZXR1cm4gcGtnX2ZuYW1lCiAKICAgICBkZWYgX21ha2VfcGtnKHNlbGYsIHNvdXJjZSwgZGVwdGgsIG1vZF9iYXNlPSJydW5weV90ZXN0Iik6CkBAIC0yNTIsMTAgKzI1NSwxMiBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBzb3VyY2U6IiwgbW9kX25hbWUpCiAgICAgICAgICAgICBzZWxmLmNoZWNrX2NvZGVfZXhlY3V0aW9uKGNyZWF0ZV9ucywgZXhwZWN0ZWRfbnMpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RfbmFtZSkKICAgICAgICAgICAgIG9zLnJlbW92ZShtb2RfZm5hbWUpCiAgICAgICAgICAgICBtYWtlX2xlZ2FjeV9weWMobW9kX2ZuYW1lKQogICAgICAgICAgICAgdW5sb2FkKG1vZF9uYW1lKSAgIyBJbiBjYXNlIGxvYWRlciBjYWNoZXMgcGF0aHMKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBtb2RfbmFtZSkKICAgICAgICAgICAgIHNlbGYuX2ZpeF9uc19mb3JfbGVnYWN5X3B5YyhleHBlY3RlZF9ucywgYWx0ZXJfc3lzKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQpAQCAtMjg1LDExICsyOTAsMTMgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gc291cmNlOiIsIHBrZ19uYW1lKQogICAgICAgICAgICAgc2VsZi5jaGVja19jb2RlX2V4ZWN1dGlvbihjcmVhdGVfbnMsIGV4cGVjdGVkX25zKQorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSBsb2FkZXIgY2FjaGVzIHBhdGhzCiAgICAgICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIlJ1bm5pbmcgZnJvbSBjb21waWxlZDoiLCBwa2dfbmFtZSkKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCiAgICAgICAgICAgICBzZWxmLl9maXhfbnNfZm9yX2xlZ2FjeV9weWMoZXhwZWN0ZWRfbnMsIGFsdGVyX3N5cykKICAgICAgICAgICAgIHNlbGYuY2hlY2tfY29kZV9leGVjdXRpb24oY3JlYXRlX25zLCBleHBlY3RlZF9ucykKICAgICAgICAgZmluYWxseToKQEAgLTMwNiw4ICszMTMsNyBAQAogICAgICAgICAgICAgbW9kdWxlX2RpciA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyLCBwa2dfbmFtZSkKICAgICAgICAgIyBBZGQgc2libGluZyBtb2R1bGUKICAgICAgICAgc2libGluZ19mbmFtZSA9IG9zLnBhdGguam9pbihtb2R1bGVfZGlyLCAic2libGluZy5weSIpCi0gICAgICAgIHNpYmxpbmdfZmlsZSA9IG9wZW4oc2libGluZ19mbmFtZSwgInciKQotICAgICAgICBzaWJsaW5nX2ZpbGUuY2xvc2UoKQorICAgICAgICBjcmVhdGVfZW1wdHlfZmlsZShzaWJsaW5nX2ZuYW1lKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgc2libGluZyBtb2R1bGU6Iiwgc2libGluZ19mbmFtZSkKICAgICAgICAgIyBBZGQgbmVwaGV3IG1vZHVsZQogICAgICAgICB1bmNsZV9kaXIgPSBvcy5wYXRoLmpvaW4ocGFyZW50X2RpciwgInVuY2xlIikKQEAgLTMxNyw4ICszMjMsNyBAQAogICAgICAgICBzZWxmLl9hZGRfcGtnX2Rpcihjb3VzaW5fZGlyKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgY291c2luIHBhY2thZ2U6IiwgY291c2luX2RpcikKICAgICAgICAgbmVwaGV3X2ZuYW1lID0gb3MucGF0aC5qb2luKGNvdXNpbl9kaXIsICJuZXBoZXcucHkiKQotICAgICAgICBuZXBoZXdfZmlsZSA9IG9wZW4obmVwaGV3X2ZuYW1lLCAidyIpCi0gICAgICAgIG5lcGhld19maWxlLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUobmVwaGV3X2ZuYW1lKQogICAgICAgICBpZiB2ZXJib3NlID4gMTogcHJpbnQoIiAgQWRkZWQgbmVwaGV3IG1vZHVsZToiLCBuZXBoZXdfZm5hbWUpCiAKICAgICBkZWYgX2NoZWNrX3JlbGF0aXZlX2ltcG9ydHMoc2VsZiwgZGVwdGgsIHJ1bl9uYW1lPU5vbmUpOgpAQCAtMzQzLDExICszNDgsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNpYmxpbmciLCBkMSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5lcGhldyIsIGQxKQogICAgICAgICAgICAgZGVsIGQxICMgRW5zdXJlIF9fbG9hZGVyX18gZW50cnkgZG9lc24ndCBrZWVwIGZpbGUgb3BlbgorICAgICAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kX25hbWUpCiAgICAgICAgICAgICBvcy5yZW1vdmUobW9kX2ZuYW1lKQogICAgICAgICAgICAgbWFrZV9sZWdhY3lfcHljKG1vZF9mbmFtZSkKICAgICAgICAgICAgIHVubG9hZChtb2RfbmFtZSkgICMgSW4gY2FzZSB0aGUgbG9hZGVyIGNhY2hlcyBwYXRocwogICAgICAgICAgICAgaWYgdmVyYm9zZSA+IDE6IHByaW50KCJSdW5uaW5nIGZyb20gY29tcGlsZWQ6IiwgbW9kX25hbWUpCisgICAgICAgICAgICBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKQogICAgICAgICAgICAgZDIgPSBydW5fbW9kdWxlKG1vZF9uYW1lLCBydW5fbmFtZT1ydW5fbmFtZSkgIyBSZWFkIGZyb20gYnl0ZWNvZGUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDJbIl9fbmFtZV9fIl0sIGV4cGVjdGVkX25hbWUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyWyJfX3BhY2thZ2VfXyJdLCBwa2dfbmFtZSkKQEAgLTQwNyw2ICs0MTQsNDAgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuX2RlbF9wa2cocGtnX2RpciwgZGVwdGgsIG1vZF9uYW1lKQogCisgICAgZGVmIHRlc3RfcGtndXRpbF93YWxrX3BhY2thZ2VzKHNlbGYpOgorICAgICAgICAjIFRoaXMgaXMgYSBkb2RneSBoYWNrIHRvIHVzZSB0aGUgdGVzdF9ydW5weSBpbmZyYXN0cnVjdHVyZSB0byB0ZXN0CisgICAgICAgICMgaXNzdWUgIzE1MzQzLiBJc3N1ZSAjMTUzNDggZGVjbGFyZXMgdGhpcyBpcyBpbmRlZWQgYSBkb2RneSBoYWNrIDspCisgICAgICAgIGltcG9ydCBwa2d1dGlsCisgICAgICAgIG1heF9kZXB0aCA9IDQKKyAgICAgICAgYmFzZV9uYW1lID0gIl9fcnVucHlfcGtnX18iCisgICAgICAgIHBhY2thZ2Vfc3VmZml4ZXMgPSBbInVuY2xlIiwgInVuY2xlLmNvdXNpbiJdCisgICAgICAgIG1vZHVsZV9zdWZmaXhlcyA9IFsidW5jbGUuY291c2luLm5lcGhldyIsIGJhc2VfbmFtZSArICIuc2libGluZyJdCisgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzID0gc2V0KCkKKyAgICAgICAgZXhwZWN0ZWRfbW9kdWxlcyA9IHNldCgpCisgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgxLCBtYXhfZGVwdGgpOgorICAgICAgICAgICAgcGtnX25hbWUgPSAiLiIuam9pbihbYmFzZV9uYW1lXSAqIGRlcHRoKQorICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lKQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gcGFja2FnZV9zdWZmaXhlczoKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5hZGQocGtnX25hbWUgKyAiLiIgKyBuYW1lKQorICAgICAgICAgICAgZm9yIG5hbWUgaW4gbW9kdWxlX3N1ZmZpeGVzOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMuYWRkKHBrZ19uYW1lICsgIi4iICsgbmFtZSkKKyAgICAgICAgcGtnX25hbWUgPSAiLiIuam9pbihbYmFzZV9uYW1lXSAqIG1heF9kZXB0aCkKKyAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMuYWRkKHBrZ19uYW1lKQorICAgICAgICBleHBlY3RlZF9tb2R1bGVzLmFkZChwa2dfbmFtZSArICIucnVucHlfdGVzdCIpCisgICAgICAgIHBrZ19kaXIsIG1vZF9mbmFtZSwgbW9kX25hbWUgPSAoCisgICAgICAgICAgICAgICBzZWxmLl9tYWtlX3BrZygiIiwgbWF4X2RlcHRoKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuX2RlbF9wa2csIHBrZ19kaXIsIG1heF9kZXB0aCwgbW9kX25hbWUpCisgICAgICAgIGZvciBkZXB0aCBpbiByYW5nZSgyLCBtYXhfZGVwdGgrMSk6CisgICAgICAgICAgICBzZWxmLl9hZGRfcmVsYXRpdmVfbW9kdWxlcyhwa2dfZGlyLCAiIiwgZGVwdGgpCisgICAgICAgIGZvciBmaW5kZXIsIG1vZF9uYW1lLCBpc3BrZyBpbiBwa2d1dGlsLndhbGtfcGFja2FnZXMoW3BrZ19kaXJdKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyKQorICAgICAgICAgICAgaWYgaXNwa2c6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGFja2FnZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBleHBlY3RlZF9tb2R1bGVzLnJlbW92ZShtb2RfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfcGFja2FnZXMpLCAwLCBleHBlY3RlZF9wYWNrYWdlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbW9kdWxlcyksIDAsIGV4cGVjdGVkX21vZHVsZXMpCiAKIGNsYXNzIFJ1blBhdGhUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgQ29kZUV4ZWN1dGlvbk1peGluKToKICAgICAiIiJVbml0IHRlc3RzIGZvciBydW5weS5ydW5fcGF0aCIiIgpAQCAtNTA3LDYgKzU0OCw3IEBACiAgICAgICAgICAgICBtc2cgPSAiY2FuJ3QgZmluZCAnX19tYWluX18nIG1vZHVsZSBpbiAlciIgJSB6aXBfbmFtZQogICAgICAgICAgICAgc2VsZi5fY2hlY2tfaW1wb3J0X2Vycm9yKHppcF9uYW1lLCBtc2cpCiAKKyAgICBAbm9fdHJhY2luZwogICAgIGRlZiB0ZXN0X21haW5fcmVjdXJzaW9uX2Vycm9yKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBfZGlyKCkgYXMgc2NyaXB0X2RpciwgdGVtcF9kaXIoKSBhcyBkdW1teV9kaXI6CiAgICAgICAgICAgICBtb2RfbmFtZSA9ICdfX21haW5fXycKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5IGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKaW5kZXggMTIyNWQ2ZS4uOGUwMDg4OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zYXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zYXgucHkKQEAgLTIwLDggKzIwLDggQEAKIFRFU1RfWE1MRklMRSA9IGZpbmRmaWxlKCJ0ZXN0LnhtbCIsIHN1YmRpcj0ieG1sdGVzdGRhdGEiKQogVEVTVF9YTUxGSUxFX09VVCA9IGZpbmRmaWxlKCJ0ZXN0LnhtbC5vdXQiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIHRyeToKLSAgICBURVNUX1hNTEZJTEUuZW5jb2RlKCJ1dGY4IikKLSAgICBURVNUX1hNTEZJTEVfT1VULmVuY29kZSgidXRmOCIpCisgICAgVEVTVF9YTUxGSUxFLmVuY29kZSgidXRmLTgiKQorICAgIFRFU1RfWE1MRklMRV9PVVQuZW5jb2RlKCJ1dGYtOCIpCiBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJmaWxlbmFtZSBpcyBub3QgZW5jb2RhYmxlIHRvIHV0ZjgiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5IGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQppbmRleCA5MWI4ZjBjLi41MGFkYTUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKQEAgLTYzLDE1ICs2MywzOSBAQAogCiAgICAgZGVmIHRlc3RfcXVldWUoc2VsZik6CiAgICAgICAgIGwgPSBbXQotICAgICAgICBldmVudHMgPSBbXQogICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKICAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLCBbXSkKLSAgICAgICAgZm9yIHggaW4gWzAuMDUsIDAuMDQsIDAuMDMsIDAuMDIsIDAuMDFdOgotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChzY2hlZHVsZXIuZW50ZXJhYnMoeCwgMSwgZnVuLCAoeCwpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2hlZHVsZXIuX3F1ZXVlLnNvcnQoKSwgZXZlbnRzLnNvcnQoKSkKKyAgICAgICAgbm93ID0gdGltZS50aW1lKCkKKyAgICAgICAgZTUgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wNSwgMSwgZnVuKQorICAgICAgICBlMSA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAxLCAxLCBmdW4pCisgICAgICAgIGUyID0gc2NoZWR1bGVyLmVudGVyYWJzKG5vdyArIDAuMDIsIDEsIGZ1bikKKyAgICAgICAgZTQgPSBzY2hlZHVsZXIuZW50ZXJhYnMobm93ICsgMC4wNCwgMSwgZnVuKQorICAgICAgICBlMyA9IHNjaGVkdWxlci5lbnRlcmFicyhub3cgKyAwLjAzLCAxLCBmdW4pCisgICAgICAgICMgcXVldWUgcHJvcGVydHkgaXMgc3VwcG9zZWQgdG8gcmV0dXJuIGFuIG9yZGVyIGxpc3Qgb2YKKyAgICAgICAgIyB1cGNvbWluZyBldmVudHMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNjaGVkdWxlci5xdWV1ZSksIFtlMSwgZTIsIGUzLCBlNCwgZTVdKQorCisgICAgZGVmIHRlc3RfYXJnc19rd2FyZ3Moc2VsZik6CisgICAgICAgIGZsYWcgPSBbXQorCisgICAgICAgIGRlZiBmdW4oKmEsICoqYik6CisgICAgICAgICAgICBmbGFnLmFwcGVuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCAoMSwyLDMpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCB7ImZvbyI6MX0pCisKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKKyAgICAgICAgeiA9IHNjaGVkdWxlci5lbnRlcmFicygwLjAxLCAxLCBmdW4sIGFyZ3VtZW50PSgxLDIsMyksIGt3YXJncz17ImZvbyI6MX0pCiAgICAgICAgIHNjaGVkdWxlci5ydW4oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVkdWxlci5fcXVldWUsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIFtOb25lXSkKKworICAgIGRlZiB0ZXN0X3J1bl9ub25fYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGwgPSBbXQorICAgICAgICBmdW4gPSBsYW1iZGEgeDogbC5hcHBlbmQoeCkKKyAgICAgICAgc2NoZWR1bGVyID0gc2NoZWQuc2NoZWR1bGVyKHRpbWUudGltZSwgdGltZS5zbGVlcCkKKyAgICAgICAgZm9yIHggaW4gWzEwLCA5LCA4LCA3LCA2XToKKyAgICAgICAgICAgIHNjaGVkdWxlci5lbnRlcih4LCAxLCBmdW4sICh4LCkpCisgICAgICAgIHNjaGVkdWxlci5ydW4oYmxvY2tpbmc9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobCwgW10pCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2NvcGUucHkKaW5kZXggZmJjODdhYS4uMTI5YTE4YSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zY29wZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Njb3BlLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2hlY2tfc3ludGF4X2Vycm9yLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjaGVja19zeW50YXhfZXJyb3IsIGNweXRob25fb25seSwgcnVuX3VuaXR0ZXN0CiAKIAogY2xhc3MgU2NvcGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00OTYsMjMgKzQ5NiwyMiBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJ4IiwgdmFybmFtZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInkiLCB2YXJuYW1lcykKIAorICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdExvY2Fsc0NsYXNzX1dpdGhUcmFjZShzZWxmKToKICAgICAgICAgIyBJc3N1ZTIzNzI4OiBhZnRlciB0aGUgdHJhY2UgZnVuY3Rpb24gcmV0dXJucywgdGhlIGxvY2FscygpCiAgICAgICAgICMgZGljdGlvbmFyeSBpcyB1c2VkIHRvIHVwZGF0ZSBhbGwgdmFyaWFibGVzLCB0aGlzIHVzZWQgdG8KICAgICAgICAgIyBpbmNsdWRlIGZyZWUgdmFyaWFibGVzLiBCdXQgaW4gY2xhc3Mgc3RhdGVtZW50cywgZnJlZQogICAgICAgICAjIHZhcmlhYmxlcyBhcmUgbm90IGluc2VydGVkLi4uCiAgICAgICAgIGltcG9ydCBzeXMKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHN5cy5zZXR0cmFjZShsYW1iZGEgYSxiLGM6Tm9uZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeCA9IDEyCisgICAgICAgIHggPSAxMgogCi0gICAgICAgICAgICBjbGFzcyBDOgotICAgICAgICAgICAgICAgIGRlZiBmKHNlbGYpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4geAorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxMikgIyBVc2VkIHRvIHJhaXNlIFVuYm91bmRMb2NhbEVycm9yCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxMikgIyBVc2VkIHRvIHJhaXNlIFVuYm91bmRMb2NhbEVycm9yCiAKICAgICBkZWYgdGVzdEJvdW5kQW5kRnJlZShzZWxmKToKICAgICAgICAgIyB2YXIgaXMgYm91bmQgYW5kIGZyZWUgaW4gY2xhc3MKQEAgLTUyNyw2ICs1MjYsNyBAQAogICAgICAgICBpbnN0ID0gZigzKSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zdC5hLCBpbnN0Lm0oKSkKIAorICAgIEBjcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdEludGVyYWN0aW9uV2l0aFRyYWNlRnVuYyhzZWxmKToKIAogICAgICAgICBpbXBvcnQgc3lzCkBAIC01NDMsNiArNTQzLDcgQEAKICAgICAgICAgY2xhc3MgVGVzdENsYXNzOgogICAgICAgICAgICAgcGFzcwogCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogICAgICAgICBzeXMuc2V0dHJhY2UodHJhY2VyKQogICAgICAgICBhZGFwdGdldHRlcigiZm9vIiwgVGVzdENsYXNzLCAoMSwgIiIpKQogICAgICAgICBzeXMuc2V0dHJhY2UoTm9uZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2VsZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKaW5kZXggZmU5MmY0NS4uMzE0NGM1NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZWxlY3QucHkKQEAgLTEsOCArMSw5IEBACi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHNlbGVjdAoraW1wb3J0IGVycm5vCiBpbXBvcnQgb3MKK2ltcG9ydCBzZWxlY3QKIGltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtWzozXSBpbiAoJ3dpbicsICdvczInLCAncmlzY29zJyksCiAgICAgICAgICAgICAgICAgICJjYW4ndCBlYXNpbHkgdGVzdCBvbiB0aGlzIHN5c3RlbSIpCkBAIC0yMCw2ICsyMSwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGVjdC5zZWxlY3QsIFtzZWxmLk5vcGUoKV0sIFtdLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbc2VsZi5BbG1vc3QoKV0sIFtdLCBbXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxlY3Quc2VsZWN0LCBbXSwgW10sIFtdLCAibm90IGEgbnVtYmVyIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZWN0LnNlbGVjdCwgW10sIFtdLCBbXSwgLTEpCisKKyAgICAjIElzc3VlICMxMjM2NzogaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvcXVlcnktcHIuY2dpP3ByPWtlcm4vMTU1NjA2CisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnZnJlZWJzZCcpLAorICAgICAgICAgICAgICAgICAgICAgJ3NraXAgYmVjYXVzZSBvZiBhIEZyZWVCU0QgYnVnOiBrZXJuLzE1NTYwNicpCisgICAgZGVmIHRlc3RfZXJybm8oc2VsZik6CisgICAgICAgIHdpdGggb3BlbihfX2ZpbGVfXywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBmZCA9IGZwLmZpbGVubygpCisgICAgICAgICAgICBmcC5jbG9zZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbZmRdLCBbXSwgW10sIDApCisgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5lcnJubywgZXJybm8uRUJBREYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhjZXB0aW9uIG5vdCByYWlzZWQiKQogCiAgICAgZGVmIHRlc3RfcmV0dXJuZWRfbGlzdF9pZGVudGl0eShzZWxmKToKICAgICAgICAgIyBTZWUgaXNzdWUgIzgzMjkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggNjY0MjQ0MC4uOGU5ZTU4NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTksNiArOSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGNvbGxlY3Rpb25zLmFiYwogCiBjbGFzcyBQYXNzVGhydShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTIzNCw2ICsyMzUsMjYgQEAKICAgICAgICAgICAgICAgICBkdXAgPSBwaWNrbGUubG9hZHMocCkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucy54LCBkdXAueCkKIAorICAgIGRlZiB0ZXN0X2l0ZXJhdG9yX3BpY2tsaW5nKHNlbGYpOgorICAgICAgICBpdG9yZyA9IGl0ZXIoc2VsZi5zKQorICAgICAgICBkYXRhID0gc2VsZi50aGV0eXBlKHNlbGYucykKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgIyBTZXQgaXRlcmF0b3JzIHVucGlja2xlIGFzIGxpc3QgaXRlcmF0b3JzIGR1ZSB0byB0aGUKKyAgICAgICAgIyB1bmRlZmluZWQgb3JkZXIgb2Ygc2V0IGl0ZW1zLgorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShpdG9yZyksIHR5cGUoaXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShpdCwgY29sbGVjdGlvbnMuYWJjLkl0ZXJhdG9yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRoZXR5cGUoaXQpLCBkYXRhKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRyb3AgPSBuZXh0KGl0KQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0KQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGhldHlwZShpdCksIGRhdGEgLSBzZWxmLnRoZXR5cGUoKGRyb3AsKSkpCisKICAgICBkZWYgdGVzdF9kZWVwY29weShzZWxmKToKICAgICAgICAgY2xhc3MgVHJhY2VyOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hlbHZlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKaW5kZXggM2U3M2Y1Mi4uMTNjMTI2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGVsdmUucHkKQEAgLTIsNyArMiw3IEBACiBpbXBvcnQgc2hlbHZlCiBpbXBvcnQgZ2xvYgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNdXRhYmxlTWFwcGluZworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE11dGFibGVNYXBwaW5nCiBmcm9tIHRlc3QudGVzdF9kYm0gaW1wb3J0IGRibV9pdGVyYXRvcgogCiBkZWYgTDEocyk6CkBAIC0xMjksOCArMTI5LDggQEAKICAgICAgICAgc2hlbHZlLlNoZWxmKGQpW2tleV0gPSBbMV0KICAgICAgICAgc2VsZi5hc3NlcnRJbihrZXkuZW5jb2RlKCd1dGYtOCcpLCBkKQogICAgICAgICAjIGJ1dCBhIGRpZmZlcmVudCBvbmUgY2FuIGJlIGdpdmVuCi0gICAgICAgIHNoZWx2ZS5TaGVsZihkLCBrZXllbmNvZGluZz0nbGF0aW4xJylba2V5XSA9IFsxXQotICAgICAgICBzZWxmLmFzc2VydEluKGtleS5lbmNvZGUoJ2xhdGluMScpLCBkKQorICAgICAgICBzaGVsdmUuU2hlbGYoZCwga2V5ZW5jb2Rpbmc9J2xhdGluLTEnKVtrZXldID0gWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LmVuY29kZSgnbGF0aW4tMScpLCBkKQogICAgICAgICAjIHdpdGggYWxsIGNvbnNlcXVlbmNlcwogICAgICAgICBzID0gc2hlbHZlLlNoZWxmKGQsIGtleWVuY29kaW5nPSdhc2NpaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwgcy5fX3NldGl0ZW1fXywga2V5LCBbMV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NobGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQppbmRleCAyNWU0YjZkLi5kNDQ2M2YzMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CkBAIC0xLDYgKzEsNyBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgb3MsIHN5cywgaW8KK2ltcG9ydCBpbwogaW1wb3J0IHNobGV4CitpbXBvcnQgc3RyaW5nCitpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKQEAgLTE3Myw2ICsxNzQsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiAlcyAhPSAlcyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5kYXRhW2ldWzBdLCBsLCBzZWxmLmRhdGFbaV1bMTpdKSkKIAorICAgIGRlZiB0ZXN0UXVvdGUoc2VsZik6CisgICAgICAgIHNhZmV1bnF1b3RlZCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICdAJV8tKz06LC4vJworICAgICAgICB1bmljb2RlX3NhbXBsZSA9ICdceGU5XHhlMFx4ZGYnICAjIGUgKyBhY3V0ZSBhY2NlbnQsIGEgKyBncmF2ZSwgc2hhcnAgcworICAgICAgICB1bnNhZmUgPSAnImAkXFwhJyArIHVuaWNvZGVfc2FtcGxlCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgnJyksICInJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoc2FmZXVucXVvdGVkKSwgc2FmZXVucXVvdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNobGV4LnF1b3RlKCd0ZXN0IGZpbGUgbmFtZScpLCAiJ3Rlc3QgZmlsZSBuYW1lJyIpCisgICAgICAgIGZvciB1IGluIHVuc2FmZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hsZXgucXVvdGUoJ3Rlc3Qlc25hbWUnICUgdSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGVzdCVzbmFtZSciICUgdSkKKyAgICAgICAgZm9yIHUgaW4gdW5zYWZlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaGxleC5xdW90ZSgidGVzdCVzJ25hbWUnIiAlIHUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3QlcydcIidcIiduYW1lJ1wiJ1wiJyciICUgdSkKKworCiAjIEFsbG93IHRoaXMgdGVzdCB0byBiZSB1c2VkIHdpdGggb2xkIHNobGV4LnB5CiBpZiBub3QgZ2V0YXR0cihzaGxleCwgInNwbGl0IiwgTm9uZSk6CiAgICAgZm9yIG1ldGhuYW1lIGluIGRpcihTaGxleFRlc3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQppbmRleCAxYTAxNmI5Li5lYjBlOWE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NodXRpbC5weQpAQCAtNyw4ICs3LDkgQEAKIGltcG9ydCBzdGF0CiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgZXJybm8KK2ltcG9ydCBmdW5jdG9vbHMKK2ltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4KIGZyb20gb3MucGF0aCBpbXBvcnQgc3BsaXRkcml2ZQpAQCAtMjIsNyArMjMsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgY2hlY2tfd2FybmluZ3MsIGNhcHR1cmVkX3N0ZG91dCwgcmVxdWlyZXNfemxpYgogCiB0cnk6CiAgICAgaW1wb3J0IGJ6MgpAQCAtNDAsMTEgKzQxLDYgQEAKICAgICBVSURfR0lEX1NVUFBPUlQgPSBGYWxzZQogCiB0cnk6Ci0gICAgaW1wb3J0IHpsaWIKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB6bGliID0gTm9uZQotCi10cnk6CiAgICAgaW1wb3J0IHppcGZpbGUKICAgICBaSVBfU1VQUE9SVCA9IFRydWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTUyLDcgKzQ4LDcgQEAKIAogZGVmIF9mYWtlX3JlbmFtZSgqYXJncywgKiprd2FyZ3MpOgogICAgICMgUHJldGVuZCB0aGUgZGVzdGluYXRpb24gcGF0aCBpcyBvbiBhIGRpZmZlcmVudCBmaWxlc3lzdGVtLgotICAgIHJhaXNlIE9TRXJyb3IoKQorICAgIHJhaXNlIE9TRXJyb3IoZ2V0YXR0cihlcnJubywgJ0VYREVWJywgMTgpLCAiSW52YWxpZCBjcm9zcy1kZXZpY2UgbGluayIpCiAKIGRlZiBtb2NrX3JlbmFtZShmdW5jKToKICAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCkBAIC02NSw2ICs2MSwzMSBAQAogICAgICAgICAgICAgb3MucmVuYW1lID0gYnVpbHRpbl9yZW5hbWUKICAgICByZXR1cm4gd3JhcAogCitkZWYgd3JpdGVfZmlsZShwYXRoLCBjb250ZW50LCBiaW5hcnk9RmFsc2UpOgorICAgICIiIldyaXRlICpjb250ZW50KiB0byBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAnd2InIGlmIGJpbmFyeSBlbHNlICd3JykgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCisKK2RlZiByZWFkX2ZpbGUocGF0aCwgYmluYXJ5PUZhbHNlKToKKyAgICAiIiJSZXR1cm4gY29udGVudHMgZnJvbSBhIGZpbGUgbG9jYXRlZCBhdCAqcGF0aCouCisKKyAgICBJZiAqcGF0aCogaXMgYSB0dXBsZSBpbnN0ZWFkIG9mIGEgc3RyaW5nLCBvcy5wYXRoLmpvaW4gd2lsbCBiZSB1c2VkIHRvCisgICAgbWFrZSBhIHBhdGguICBJZiAqYmluYXJ5KiBpcyB0cnVlLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBpbiBiaW5hcnkKKyAgICBtb2RlLgorICAgICIiIgorICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgdHVwbGUpOgorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoKQorICAgIHdpdGggb3BlbihwYXRoLCAncmInIGlmIGJpbmFyeSBlbHNlICdyJykgYXMgZnA6CisgICAgICAgIHJldHVybiBmcC5yZWFkKCkKKworCiBjbGFzcyBUZXN0U2h1dGlsKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTc3LDE5ICs5OCw2IEBACiAgICAgICAgICAgICBkID0gc2VsZi50ZW1wZGlycy5wb3AoKQogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkLCBvcy5uYW1lIGluICgnbnQnLCAnY3lnd2luJykpCiAKLSAgICBkZWYgd3JpdGVfZmlsZShzZWxmLCBwYXRoLCBjb250ZW50PSd4eHgnKToKLSAgICAgICAgIiIiV3JpdGVzIGEgZmlsZSBpbiB0aGUgZ2l2ZW4gcGF0aC4KLQotCi0gICAgICAgIHBhdGggY2FuIGJlIGEgc3RyaW5nIG9yIGEgc2VxdWVuY2UuCi0gICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIChsaXN0LCB0dXBsZSkpOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aCkKLSAgICAgICAgZiA9IG9wZW4ocGF0aCwgJ3cnKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGNvbnRlbnQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBta2R0ZW1wKHNlbGYpOgogICAgICAgICAiIiJDcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoYXQgd2lsbCBiZSBjbGVhbmVkIHVwLgpAQCAtMTAwLDYgKzEwOCw0NyBAQAogICAgICAgICBzZWxmLnRlbXBkaXJzLmFwcGVuZChkKQogICAgICAgICByZXR1cm4gZAogCisgICAgZGVmIHRlc3Rfcm10cmVlX3dvcmtzX29uX2J5dGVzKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICB2aWN0aW0gPSBvcy5wYXRoLmpvaW4odG1wLCAna2lsbG1lJykKKyAgICAgICAgb3MubWtkaXIodmljdGltKQorICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbih2aWN0aW0sICdzb21lZmlsZScpLCAnZm9vJykKKyAgICAgICAgdmljdGltID0gb3MuZnNlbmNvZGUodmljdGltKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmljdGltLCBieXRlcykKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfcm10cmVlX2ZhaWxzX29uX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRpcl8gPSBvcy5wYXRoLmpvaW4odG1wLCAnZGlyJykKKyAgICAgICAgb3MubWtkaXIoZGlyXykKKyAgICAgICAgbGluayA9IG9zLnBhdGguam9pbih0bXAsICdsaW5rJykKKyAgICAgICAgb3Muc3ltbGluayhkaXJfLCBsaW5rKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwucm10cmVlLCBsaW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZGlyXykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3Rfcm10cmVlX3dvcmtzX29uX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXAgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkaXIxID0gb3MucGF0aC5qb2luKHRtcCwgJ2RpcjEnKQorICAgICAgICBkaXIyID0gb3MucGF0aC5qb2luKGRpcjEsICdkaXIyJykKKyAgICAgICAgZGlyMyA9IG9zLnBhdGguam9pbih0bXAsICdkaXIzJykKKyAgICAgICAgZm9yIGQgaW4gZGlyMSwgZGlyMiwgZGlyMzoKKyAgICAgICAgICAgIG9zLm1rZGlyKGQpCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcCwgJ2ZpbGUxJykKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlMSwgJ2ZvbycpCisgICAgICAgIGxpbmsxID0gb3MucGF0aC5qb2luKGRpcjEsICdsaW5rMScpCisgICAgICAgIG9zLnN5bWxpbmsoZGlyMiwgbGluazEpCisgICAgICAgIGxpbmsyID0gb3MucGF0aC5qb2luKGRpcjEsICdsaW5rMicpCisgICAgICAgIG9zLnN5bWxpbmsoZGlyMywgbGluazIpCisgICAgICAgIGxpbmszID0gb3MucGF0aC5qb2luKGRpcjEsICdsaW5rMycpCisgICAgICAgIG9zLnN5bWxpbmsoZmlsZTEsIGxpbmszKQorICAgICAgICAjIG1ha2Ugc3VyZSBzeW1saW5rcyBhcmUgcmVtb3ZlZCBidXQgbm90IGZvbGxvd2VkCisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhkaXIxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcjMpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZTEpKQorCiAgICAgZGVmIHRlc3Rfcm10cmVlX2Vycm9ycyhzZWxmKToKICAgICAgICAgIyBmaWxlbmFtZSBpcyBndWFyYW50ZWVkIG5vdCB0byBleGlzdAogICAgICAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1rdGVtcCgpCkBAIC0xMTIsMzAgKzE2MSwzNCBAQAogICAgICAgICBkZWYgdGVzdF9vbl9lcnJvcihzZWxmKToKICAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDAKICAgICAgICAgICAgIG9zLm1rZGlyKFRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuY2hpbGRwYXRoID0gb3MucGF0aC5qb2luKFRFU1RGTiwgJ2EnKQotICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi5jaGlsZHBhdGgsICd3JykKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIFRFU1RGTikKKworICAgICAgICAgICAgc2VsZi5jaGlsZF9maWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oVEVTVEZOLCAnYScpCisgICAgICAgICAgICBzZWxmLmNoaWxkX2Rpcl9wYXRoID0gb3MucGF0aC5qb2luKFRFU1RGTiwgJ2InKQorICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShzZWxmLmNoaWxkX2ZpbGVfcGF0aCkKKyAgICAgICAgICAgIG9zLm1rZGlyKHNlbGYuY2hpbGRfZGlyX3BhdGgpCiAgICAgICAgICAgICBvbGRfZGlyX21vZGUgPSBvcy5zdGF0KFRFU1RGTikuc3RfbW9kZQotICAgICAgICAgICAgb2xkX2NoaWxkX21vZGUgPSBvcy5zdGF0KHNlbGYuY2hpbGRwYXRoKS5zdF9tb2RlCisgICAgICAgICAgICBvbGRfY2hpbGRfZmlsZV9tb2RlID0gb3Muc3RhdChzZWxmLmNoaWxkX2ZpbGVfcGF0aCkuc3RfbW9kZQorICAgICAgICAgICAgb2xkX2NoaWxkX2Rpcl9tb2RlID0gb3Muc3RhdChzZWxmLmNoaWxkX2Rpcl9wYXRoKS5zdF9tb2RlCiAgICAgICAgICAgICAjIE1ha2UgdW53cml0YWJsZS4KLSAgICAgICAgICAgIG9zLmNobW9kKHNlbGYuY2hpbGRwYXRoLCBzdGF0LlNfSVJFQUQpCi0gICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIHN0YXQuU19JUkVBRCkKKyAgICAgICAgICAgIG5ld19tb2RlID0gc3RhdC5TX0lSRUFEfHN0YXQuU19JRVhFQworICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZF9maWxlX3BhdGgsIG5ld19tb2RlKQorICAgICAgICAgICAgb3MuY2htb2Qoc2VsZi5jaGlsZF9kaXJfcGF0aCwgbmV3X21vZGUpCisgICAgICAgICAgICBvcy5jaG1vZChURVNURk4sIG5ld19tb2RlKQorCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2htb2QsIFRFU1RGTiwgb2xkX2Rpcl9tb2RlKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNobW9kLCBzZWxmLmNoaWxkX2ZpbGVfcGF0aCwgb2xkX2NoaWxkX2ZpbGVfbW9kZSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jaG1vZCwgc2VsZi5jaGlsZF9kaXJfcGF0aCwgb2xkX2NoaWxkX2Rpcl9tb2RlKQogCiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTiwgb25lcnJvcj1zZWxmLmNoZWNrX2FyZ3NfdG9fb25lcnJvcikKICAgICAgICAgICAgICMgVGVzdCB3aGV0aGVyIG9uZXJyb3IgaGFzIGFjdHVhbGx5IGJlZW4gY2FsbGVkLgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVycm9yU3RhdGUsIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCBjYWxsIHRvIG9uZXJyb3IgZnVuY3Rpb24gZGlkIG5vdCBoYXBwZW4uIikKLQotICAgICAgICAgICAgIyBNYWtlIHdyaXRhYmxlIGFnYWluLgotICAgICAgICAgICAgb3MuY2htb2QoVEVTVEZOLCBvbGRfZGlyX21vZGUpCi0gICAgICAgICAgICBvcy5jaG1vZChzZWxmLmNoaWxkcGF0aCwgb2xkX2NoaWxkX21vZGUpCi0KLSAgICAgICAgICAgICMgQ2xlYW4gdXAuCi0gICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lcnJvclN0YXRlLCAzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhwZWN0ZWQgY2FsbCB0byBvbmVycm9yIGZ1bmN0aW9uIGRpZCBub3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGFwcGVuLiIpCiAKICAgICBkZWYgY2hlY2tfYXJnc190b19vbmVycm9yKHNlbGYsIGZ1bmMsIGFyZywgZXhjKToKICAgICAgICAgIyB0ZXN0X3JtdHJlZV9lcnJvcnMgZGVsaWJlcmF0ZWx5IHJ1bnMgcm10cmVlCi0gICAgICAgICMgb24gYSBkaXJlY3RvcnkgdGhhdCBpcyBjaG1vZCA0MDAsIHdoaWNoIHdpbGwgZmFpbC4KKyAgICAgICAgIyBvbiBhIGRpcmVjdG9yeSB0aGF0IGlzIGNobW9kIDUwMCwgd2hpY2ggd2lsbCBmYWlsLgogICAgICAgICAjIFRoaXMgZnVuY3Rpb24gaXMgcnVuIHdoZW4gc2h1dGlsLnJtdHJlZSBmYWlscy4KICAgICAgICAgIyA5OS45JSBvZiB0aGUgdGltZSBpdCBpbml0aWFsbHkgZmFpbHMgdG8gcmVtb3ZlCiAgICAgICAgICMgYSBmaWxlIGluIHRoZSBkaXJlY3RvcnksIHNvIHRoZSBmaXJzdCB0aW1lIHRocm91Z2gKQEAgLTE0NCw5OSArMTk3LDQzNiBAQAogICAgICAgICAjIEZVU0UgZXhwZXJpZW5jZWQgYSBmYWlsdXJlIGVhcmxpZXIgaW4gdGhlIHByb2Nlc3MKICAgICAgICAgIyBhdCBvcy5saXN0ZGlyLiAgVGhlIGZpcnN0IGZhaWx1cmUgbWF5IGxlZ2FsbHkKICAgICAgICAgIyBiZSBlaXRoZXIuCi0gICAgICAgIGlmIHNlbGYuZXJyb3JTdGF0ZSA9PSAwOgotICAgICAgICAgICAgaWYgZnVuYyBpcyBvcy5yZW1vdmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRwYXRoKQorICAgICAgICBpZiBzZWxmLmVycm9yU3RhdGUgPCAyOgorICAgICAgICAgICAgaWYgZnVuYyBpcyBvcy51bmxpbms6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIHNlbGYuY2hpbGRfZmlsZV9wYXRoKQorICAgICAgICAgICAgZWxpZiBmdW5jIGlzIG9zLnJtZGlyOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnLCBzZWxmLmNoaWxkX2Rpcl9wYXRoKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZ1bmMsIG9zLmxpc3RkaXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVuYyBtdXN0IGJlIGVpdGhlciBvcy5yZW1vdmUgb3Igb3MubGlzdGRpciIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIFRFU1RGTikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZ1bmMsIG9zLmxpc3RkaXIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhcmcsIFtURVNURk4sIHNlbGYuY2hpbGRfZGlyX3BhdGhdKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoZXhjWzBdLCBPU0Vycm9yKSkKLSAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSA9IDEKKyAgICAgICAgICAgIHNlbGYuZXJyb3JTdGF0ZSArPSAxCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMsIG9zLnJtZGlyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmcsIFRFU1RGTikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKGV4Y1swXSwgT1NFcnJvcikpCi0gICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgPSAyCisgICAgICAgICAgICBzZWxmLmVycm9yU3RhdGUgPSAzCisKKyAgICBkZWYgdGVzdF9ybXRyZWVfZG9lc19ub3RfY2hva2Vfb25fZmFpbGluZ19sc3RhdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ19sc3RhdCA9IG9zLmxzdGF0CisgICAgICAgICAgICBkZWYgcmFpc2VyKGZuLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIGlmIGZuICE9IFRFU1RGTjoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdfbHN0YXQoZm4pCisgICAgICAgICAgICBvcy5sc3RhdCA9IHJhaXNlcgorCisgICAgICAgICAgICBvcy5ta2RpcihURVNURk4pCisgICAgICAgICAgICB3cml0ZV9maWxlKChURVNURk4sICdmb28nKSwgJ2ZvbycpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKFRFU1RGTikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmxzdGF0ID0gb3JpZ19sc3RhdAorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2NobW9kJyksICdyZXF1aXJlcyBvcy5jaG1vZCcpCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHltb2RlX2ZvbGxvd19zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIG9zLmNobW9kKHNyYywgc3RhdC5TX0lSV1hVfHN0YXQuU19JUldYRykKKyAgICAgICAgIyBmaWxlIHRvIGZpbGUKKyAgICAgICAgb3MuY2htb2QoZHN0LCBzdGF0LlNfSVJXWE8pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGZvbGxvdyBzcmMgbGluaworICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY19saW5rLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGZvbGxvdyBkc3QgbGluaworICAgICAgICBvcy5jaG1vZChkc3QsIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyYywgZHN0X2xpbmspCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIGZvbGxvdyBib3RoIGxpbmtzCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnbGNobW9kJyksICdyZXF1aXJlcyBvcy5sY2htb2QnKQorICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5bW9kZV9zeW1saW5rX3RvX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JheicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXV4JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBzcmNfbGluaykKKyAgICAgICAgb3Muc3ltbGluayhkc3QsIGRzdF9saW5rKQorICAgICAgICBvcy5jaG1vZChzcmMsIHN0YXQuU19JUldYVXxzdGF0LlNfSVJXWEcpCisgICAgICAgIG9zLmNobW9kKGRzdCwgc3RhdC5TX0lSV1hVKQorICAgICAgICBvcy5sY2htb2Qoc3JjX2xpbmssIHN0YXQuU19JUldYT3xzdGF0LlNfSVJXWEcpCisgICAgICAgICMgbGluayB0byBsaW5rCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubHN0YXQoc3JjX2xpbmspLnN0X21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MubHN0YXQoZHN0X2xpbmspLnN0X21vZGUpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3Muc3RhdChzcmMpLnN0X21vZGUsIG9zLnN0YXQoZHN0KS5zdF9tb2RlKQorICAgICAgICAjIHNyYyBsaW5rIC0gdXNlIGNobW9kCisgICAgICAgIG9zLmxjaG1vZChkc3RfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBzaHV0aWwuY29weW1vZGUoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnN0YXQoc3JjKS5zdF9tb2RlLCBvcy5zdGF0KGRzdCkuc3RfbW9kZSkKKyAgICAgICAgIyBkc3QgbGluayAtIHVzZSBjaG1vZAorICAgICAgICBvcy5sY2htb2QoZHN0X2xpbmssIHN0YXQuU19JUldYTykKKyAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyYywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KHNyYykuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIob3MsICdsY2htb2QnKSwgJ3JlcXVpcmVzIG9zLmxjaG1vZCB0byBiZSBtaXNzaW5nJykKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weW1vZGVfc3ltbGlua190b19zeW1saW5rX3dvX2xjaG1vZChzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1dXgnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnZm9vJykKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIHNodXRpbC5jb3B5bW9kZShzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkgICMgc2lsZW50IGZhaWwKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5c3RhdF9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0X2xpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3F1eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5zdGF0KHNyYykKKyAgICAgICAgb3MudXRpbWUoc3JjLCAoc3JjX3N0YXQuc3RfYXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgIHNyY19zdGF0LnN0X210aW1lIC0gNDIuMCkpICAjIGVuc3VyZSBkaWZmZXJlbnQgbXRpbWVzCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5zdGF0KHNyYykuc3RfbXRpbWUsIG9zLnN0YXQoZHN0KS5zdF9tdGltZSkKKyAgICAgICAgb3Muc3ltbGluayhzcmMsIHNyY19saW5rKQorICAgICAgICBvcy5zeW1saW5rKGRzdCwgZHN0X2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hPKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdGF0LCAnVUZfTk9EVU1QJyk6CisgICAgICAgICAgICBvcy5sY2hmbGFncyhzcmNfbGluaywgc3RhdC5VRl9OT0RVTVApCisgICAgICAgIHNyY19saW5rX3N0YXQgPSBvcy5sc3RhdChzcmNfbGluaykKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3RfbGluaywgZm9sbG93X3N5bWxpbmtzPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgb3Muc3RhdChkc3QpLnN0X21vZGUpCisgICAgICAgICMgZG9uJ3QgZm9sbG93CisgICAgICAgIHNodXRpbC5jb3B5c3RhdChzcmNfbGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgZHN0X2xpbmtfc3RhdCA9IG9zLmxzdGF0KGRzdF9saW5rKQorICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiAnc3RfYXRpbWUnLCAnc3RfbXRpbWUnOgorICAgICAgICAgICAgICAgICMgVGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBtYXkgYmUgdHJ1bmNhdGVkIGluIHRoZSBuZXcgZmlsZS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChnZXRhdHRyKHNyY19saW5rX3N0YXQsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZHN0X2xpbmtfc3RhdCwgYXR0cikgKyAxKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY19saW5rX3N0YXQuc3RfbW9kZSwgZHN0X2xpbmtfc3RhdC5zdF9tb2RlKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzcmNfbGlua19zdGF0LCAnc3RfZmxhZ3MnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3JjX2xpbmtfc3RhdC5zdF9mbGFncywgZHN0X2xpbmtfc3RhdC5zdF9mbGFncykKKyAgICAgICAgIyB0ZWxsIHRvIGZvbGxvdyBidXQgZHN0IGlzIG5vdCBhIGxpbmsKKyAgICAgICAgc2h1dGlsLmNvcHlzdGF0KHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFicyhvcy5zdGF0KHNyYykuc3RfbXRpbWUgLSBvcy5zdGF0KGRzdCkuc3RfbXRpbWUpIDwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAwMDAwLjEpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnY2hmbGFncycpIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgIGhhc2F0dHIoZXJybm8sICdFT1BOT1RTVVBQJykgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VOT1RTVVAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgb3MuY2hmbGFncywgRU9QTk9UU1VQUCAmIEVOT1RTVVAiKQorICAgIGRlZiB0ZXN0X2NvcHlzdGF0X2hhbmRsZXNfaGFybWxlc3NfY2hmbGFnc19lcnJvcnMoc2VsZik6CisgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGZpbGUxID0gb3MucGF0aC5qb2luKHRtcGRpciwgJ2ZpbGUxJykKKyAgICAgICAgZmlsZTIgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTInKQorICAgICAgICB3cml0ZV9maWxlKGZpbGUxLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlMiwgJ3h4eCcpCisKKyAgICAgICAgZGVmIG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKToKKyAgICAgICAgICAgIGV4ID0gT1NFcnJvcigpCisKKyAgICAgICAgICAgIGRlZiBfY2hmbGFnc19yYWlzZXIocGF0aCwgZmxhZ3MsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAgICAgICAgICAgICBleC5lcnJubyA9IGVycgorICAgICAgICAgICAgICAgIHJhaXNlIGV4CisgICAgICAgICAgICByZXR1cm4gX2NoZmxhZ3NfcmFpc2VyCisgICAgICAgIG9sZF9jaGZsYWdzID0gb3MuY2hmbGFncworICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgZXJyIGluIGVycm5vLkVPUE5PVFNVUFAsIGVycm5vLkVOT1RTVVA6CisgICAgICAgICAgICAgICAgb3MuY2hmbGFncyA9IG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKQorICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5c3RhdChmaWxlMSwgZmlsZTIpCisgICAgICAgICAgICAjIGFzc2VydCBvdGhlcnMgZXJyb3JzIGJyZWFrIGl0CisgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnJuby5FT1BOT1RTVVBQICsgZXJybm8uRU5PVFNVUCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5jb3B5c3RhdCwgZmlsZTEsIGZpbGUyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hmbGFncyA9IG9sZF9jaGZsYWdzCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc194YXR0cgorICAgIGRlZiB0ZXN0X2NvcHl4YXR0cihzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKworICAgICAgICAjIG5vIHhhdHRyID09IG5vIHByb2JsZW0KKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgICMgY29tbW9uIGNhc2UKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci5mb28nLCBiJzQyJykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci5iYXInLCBiJzQzJykKKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubGlzdHhhdHRyKHNyYyksIG9zLmxpc3R4YXR0cihkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIG9zLmdldHhhdHRyKHNyYywgJ3VzZXIuZm9vJyksCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoZHN0LCAndXNlci5mb28nKSkKKyAgICAgICAgIyBjaGVjayBlcnJvcnMgZG9uJ3QgYWZmZWN0IG90aGVyIGF0dHJzCisgICAgICAgIG9zLnJlbW92ZShkc3QpCisgICAgICAgIHdyaXRlX2ZpbGUoZHN0LCAnYmFyJykKKyAgICAgICAgb3NfZXJyb3IgPSBPU0Vycm9yKGVycm5vLkVQRVJNLCAnRVBFUk0nKQorCisgICAgICAgIGRlZiBfcmFpc2Vfb25fdXNlcl9mb28oZm5hbWUsIGF0dHIsIHZhbCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgaWYgYXR0ciA9PSAndXNlci5mb28nOgorICAgICAgICAgICAgICAgIHJhaXNlIG9zX2Vycm9yCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9yaWdfc2V0eGF0dHIoZm5hbWUsIGF0dHIsIHZhbCwgKiprd2FyZ3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdfc2V0eGF0dHIgPSBvcy5zZXR4YXR0cgorICAgICAgICAgICAgb3Muc2V0eGF0dHIgPSBfcmFpc2Vfb25fdXNlcl9mb28KKyAgICAgICAgICAgIHNodXRpbC5fY29weXhhdHRyKHNyYywgZHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndXNlci5iYXInLCBvcy5saXN0eGF0dHIoZHN0KSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnNldHhhdHRyID0gb3JpZ19zZXR4YXR0cgorCisgICAgICAgICMgdGVzdCB0aGF0IHNodXRpbC5jb3B5c3RhdCBjb3BpZXMgeGF0dHJzCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAndGhlX29yaWdpbmFsJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsIHNyYykKKyAgICAgICAgb3Muc2V0eGF0dHIoc3JjLCAndXNlci50aGVfdmFsdWUnLCBiJ2ZpZGRseScpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAndGhlX2NvcHknKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgZHN0KQorICAgICAgICBzaHV0aWwuY29weXN0YXQoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0eGF0dHIoZHN0LCAndXNlci50aGVfdmFsdWUnKSwgYidmaWRkbHknKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldGV1aWQnKSBhbmQgb3MuZ2V0ZXVpZCgpID09IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3QgcHJpdmlsZWdlcyByZXF1aXJlZCcpCisgICAgZGVmIHRlc3RfY29weXhhdHRyX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICAjIE9uIExpbnV4LCBpdCdzIG9ubHkgcG9zc2libGUgdG8gYWNjZXNzIG5vbi11c2VyIHhhdHRyIGZvciBzeW1saW5rczsKKyAgICAgICAgIyB3aGljaCBpbiB0dXJuIHJlcXVpcmUgcm9vdCBwcml2aWxlZ2VzLiBUaGlzIHRlc3Qgc2hvdWxkIGJlIGV4cGFuZGVkCisgICAgICAgICMgYXMgc29vbiBhcyBvdGhlciBwbGF0Zm9ybXMgZ2FpbiBzdXBwb3J0IGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzLgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIG9zLnNldHhhdHRyKHNyYywgJ3RydXN0ZWQuZm9vJywgYic0MicpCisgICAgICAgIG9zLnNldHhhdHRyKHNyY19saW5rLCAndHJ1c3RlZC5mb28nLCBiJzQzJywgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2JhcicpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdxdXgnKQorICAgICAgICB3cml0ZV9maWxlKGRzdCwgJ2JhcicpCisgICAgICAgIG9zLnN5bWxpbmsoZHN0LCBkc3RfbGluaykKKyAgICAgICAgc2h1dGlsLl9jb3B5eGF0dHIoc3JjX2xpbmssIGRzdF9saW5rLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0eGF0dHIoZHN0X2xpbmssICd0cnVzdGVkLmZvbycsIGZvbGxvd19zeW1saW5rcz1GYWxzZSksIGInNDMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5nZXR4YXR0ciwgZHN0LCAndHJ1c3RlZC5mb28nKQorICAgICAgICBzaHV0aWwuX2NvcHl4YXR0cihzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0eGF0dHIoZHN0LCAndHJ1c3RlZC5mb28nKSwgYic0MycpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgZGVmIHRlc3RfY29weV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weShzcmNfbGluaywgZHN0LCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzbGluayhkc3QpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlYWRfZmlsZShzcmMpLCByZWFkX2ZpbGUoZHN0KSkKKyAgICAgICAgb3MucmVtb3ZlKGRzdCkKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHkoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhkc3QpLCBvcy5yZWFkbGluayhzcmNfbGluaykpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubHN0YXQoc3JjX2xpbmspLnN0X21vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmxzdGF0KGRzdCkuc3RfbW9kZSkKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5Ml9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnZm9vJykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdiYXInKQorICAgICAgICBzcmNfbGluayA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmF6JykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zeW1saW5rKHNyYywgc3JjX2xpbmspCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2htb2QnKToKKyAgICAgICAgICAgIG9zLmxjaG1vZChzcmNfbGluaywgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hPKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNoZmxhZ3MnKSBhbmQgaGFzYXR0cihzdGF0LCAnVUZfTk9EVU1QJyk6CisgICAgICAgICAgICBvcy5sY2hmbGFncyhzcmNfbGluaywgc3RhdC5VRl9OT0RVTVApCisgICAgICAgIHNyY19zdGF0ID0gb3Muc3RhdChzcmMpCisgICAgICAgIHNyY19saW5rX3N0YXQgPSBvcy5sc3RhdChzcmNfbGluaykKKyAgICAgICAgIyBmb2xsb3cKKyAgICAgICAgc2h1dGlsLmNvcHkyKHNyY19saW5rLCBkc3QsIGZvbGxvd19zeW1saW5rcz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVhZF9maWxlKHNyYyksIHJlYWRfZmlsZShkc3QpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weTIoc3JjX2xpbmssIGRzdCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhkc3QpLCBvcy5yZWFkbGluayhzcmNfbGluaykpCisgICAgICAgIGRzdF9zdGF0ID0gb3MubHN0YXQoZHN0KQorICAgICAgICBpZiBvcy51dGltZSBpbiBvcy5zdXBwb3J0c19mb2xsb3dfc3ltbGlua3M6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiAnc3RfYXRpbWUnLCAnc3RfbXRpbWUnOgorICAgICAgICAgICAgICAgICMgVGhlIG1vZGlmaWNhdGlvbiB0aW1lcyBtYXkgYmUgdHJ1bmNhdGVkIGluIHRoZSBuZXcgZmlsZS4KKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChnZXRhdHRyKHNyY19saW5rX3N0YXQsIGF0dHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldGF0dHIoZHN0X3N0YXQsIGF0dHIpICsgMSkKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X21vZGUsIGRzdF9zdGF0LnN0X21vZGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNyY19zdGF0LnN0X21vZGUsIGRzdF9zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHNyY19saW5rX3N0YXQsICdzdF9mbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcmNfbGlua19zdGF0LnN0X2ZsYWdzLCBkc3Rfc3RhdC5zdF9mbGFncykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3hhdHRyCisgICAgZGVmIHRlc3RfY29weTJfeGF0dHIoc2VsZik6CisgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2ZvbycpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYmFyJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmMsICdmb28nKQorICAgICAgICBvcy5zZXR4YXR0cihzcmMsICd1c2VyLmZvbycsIGInNDInKQorICAgICAgICBzaHV0aWwuY29weTIoc3JjLCBkc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgb3MuZ2V0eGF0dHIoc3JjLCAndXNlci5mb28nKSwKKyAgICAgICAgICAgICAgICBvcy5nZXR4YXR0cihkc3QsICd1c2VyLmZvbycpKQorICAgICAgICBvcy5yZW1vdmUoZHN0KQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3N5bWxpbmtzKHNlbGYpOgorICAgICAgICB0bXBfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdzcmMnKQorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdCcpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdkc3RfbGluaycpCisgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2xpbmsnKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBsaW5rKQorICAgICAgICAjIGRvbid0IGZvbGxvdworICAgICAgICBzaHV0aWwuY29weWZpbGUobGluaywgZHN0X2xpbmssIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNsaW5rKGRzdF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5yZWFkbGluayhsaW5rKSwgb3MucmVhZGxpbmsoZHN0X2xpbmspKQorICAgICAgICAjIGZvbGxvdworICAgICAgICBzaHV0aWwuY29weWZpbGUobGluaywgZHN0KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNsaW5rKGRzdCkpCisKKyAgICBkZWYgdGVzdF9ybXRyZWVfdXNlc19zYWZlX2ZkX3ZlcnNpb25faWZfYXZhaWxhYmxlKHNlbGYpOgorICAgICAgICBfdXNlX2ZkX2Z1bmN0aW9ucyA9ICh7b3Mub3Blbiwgb3Muc3RhdCwgb3MudW5saW5rLCBvcy5ybWRpcn0gPD0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3VwcG9ydHNfZGlyX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5saXN0ZGlyIGluIG9zLnN1cHBvcnRzX2ZkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0IGluIG9zLnN1cHBvcnRzX2ZvbGxvd19zeW1saW5rcykKKyAgICAgICAgaWYgX3VzZV9mZF9mdW5jdGlvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2h1dGlsLl91c2VfZmRfZnVuY3Rpb25zKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNodXRpbC5ybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcykKKyAgICAgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICAgICAgZCA9IG9zLnBhdGguam9pbih0bXBfZGlyLCAnYScpCisgICAgICAgICAgICBvcy5ta2RpcihkKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJlYWxfcm10cmVlID0gc2h1dGlsLl9ybXRyZWVfc2FmZV9mZAorICAgICAgICAgICAgICAgIGNsYXNzIENhbGxlZChFeGNlcHRpb24pOiBwYXNzCisgICAgICAgICAgICAgICAgZGVmIF9yYWlzZXIoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgQ2FsbGVkCisgICAgICAgICAgICAgICAgc2h1dGlsLl9ybXRyZWVfc2FmZV9mZCA9IF9yYWlzZXIKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhDYWxsZWQsIHNodXRpbC5ybXRyZWUsIGQpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHNodXRpbC5fcm10cmVlX3NhZmVfZmQgPSByZWFsX3JtdHJlZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaHV0aWwuX3VzZV9mZF9mdW5jdGlvbnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNodXRpbC5ybXRyZWUuYXZvaWRzX3N5bWxpbmtfYXR0YWNrcykKIAogICAgIGRlZiB0ZXN0X3JtdHJlZV9kb250X2RlbGV0ZV9maWxlKHNlbGYpOgogICAgICAgICAjIFdoZW4gY2FsbGVkIG9uIGEgZmlsZSBpbnN0ZWFkIG9mIGEgZGlyZWN0b3J5LCBkb24ndCBkZWxldGUgaXQuCiAgICAgICAgIGhhbmRsZSwgcGF0aCA9IHRlbXBmaWxlLm1rc3RlbXAoKQotICAgICAgICBvcy5mZG9wZW4oaGFuZGxlKS5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHNodXRpbC5ybXRyZWUsIHBhdGgpCisgICAgICAgIG9zLmNsb3NlKGhhbmRsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90QURpcmVjdG9yeUVycm9yLCBzaHV0aWwucm10cmVlLCBwYXRoKQogICAgICAgICBvcy5yZW1vdmUocGF0aCkKIAotICAgIGRlZiBfd3JpdGVfZGF0YShzZWxmLCBwYXRoLCBkYXRhKToKLSAgICAgICAgZiA9IG9wZW4ocGF0aCwgInciKQotICAgICAgICBmLndyaXRlKGRhdGEpCi0gICAgICAgIGYuY2xvc2UoKQotCiAgICAgZGVmIHRlc3RfY29weXRyZWVfc2ltcGxlKHNlbGYpOgotCi0gICAgICAgIGRlZiByZWFkX2RhdGEocGF0aCk6Ci0gICAgICAgICAgICBmID0gb3BlbihwYXRoKQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHJldHVybiBkYXRhCi0KICAgICAgICAgc3JjX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQogICAgICAgICBkc3RfZGlyID0gb3MucGF0aC5qb2luKHRlbXBmaWxlLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YShvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc3JjX2RpcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNodXRpbC5ybXRyZWUsIG9zLnBhdGguZGlybmFtZShkc3RfZGlyKSkKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmNfZGlyLCBkc3RfZGlyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJykpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC50eHQnKSkpCi0gICAgICAgICAgICBhY3R1YWwgPSByZWFkX2RhdGEob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0LnR4dCcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsICcxMjMnKQotICAgICAgICAgICAgYWN0dWFsID0gcmVhZF9kYXRhKG9zLnBhdGguam9pbihkc3RfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnNDU2JykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvciBwYXRoIGluICgKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JyksCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLAotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShwYXRoKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gKHNyY19kaXIsCi0gICAgICAgICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShkc3RfZGlyKQotICAgICAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkKKyAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGRzdF9kaXIsICd0ZXN0X2RpcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QudHh0JykpKQorICAgICAgICBhY3R1YWwgPSByZWFkX2ZpbGUoKGRzdF9kaXIsICd0ZXN0LnR4dCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbCwgJzEyMycpCisgICAgICAgIGFjdHVhbCA9IHJlYWRfZmlsZSgoZHN0X2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCAnNDU2JykKKworICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKKyAgICBkZWYgdGVzdF9jb3B5dHJlZV9zeW1saW5rcyhzZWxmKToKKyAgICAgICAgdG1wX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHNyY19kaXIgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ3NyYycpCisgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4odG1wX2RpciwgJ2RzdCcpCisgICAgICAgIHN1Yl9kaXIgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3N1YicpCisgICAgICAgIG9zLm1rZGlyKHNyY19kaXIpCisgICAgICAgIG9zLm1rZGlyKHN1Yl9kaXIpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICdmaWxlLnR4dCcpLCAnZm9vJykKKyAgICAgICAgc3JjX2xpbmsgPSBvcy5wYXRoLmpvaW4oc3ViX2RpciwgJ2xpbmsnKQorICAgICAgICBkc3RfbGluayA9IG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViL2xpbmsnKQorICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguam9pbihzcmNfZGlyLCAnZmlsZS50eHQnKSwKKyAgICAgICAgICAgICAgICAgICBzcmNfbGluaykKKyAgICAgICAgaWYgaGFzYXR0cihvcywgJ2xjaG1vZCcpOgorICAgICAgICAgICAgb3MubGNobW9kKHNyY19saW5rLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJXWE8pCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpIGFuZCBoYXNhdHRyKHN0YXQsICdVRl9OT0RVTVAnKToKKyAgICAgICAgICAgIG9zLmxjaGZsYWdzKHNyY19saW5rLCBzdGF0LlVGX05PRFVNUCkKKyAgICAgICAgc3JjX3N0YXQgPSBvcy5sc3RhdChzcmNfbGluaykKKyAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIHN5bWxpbmtzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ3N1YicsICdsaW5rJykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWRsaW5rKG9zLnBhdGguam9pbihkc3RfZGlyLCAnc3ViJywgJ2xpbmsnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHNyY19kaXIsICdmaWxlLnR4dCcpKQorICAgICAgICBkc3Rfc3RhdCA9IG9zLmxzdGF0KGRzdF9saW5rKQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnbGNobW9kJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRzdF9zdGF0LnN0X21vZGUsIHNyY19zdGF0LnN0X21vZGUpCisgICAgICAgIGlmIGhhc2F0dHIob3MsICdsY2hmbGFncycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkc3Rfc3RhdC5zdF9mbGFncywgc3JjX3N0YXQuc3RfZmxhZ3MpCiAKICAgICBkZWYgdGVzdF9jb3B5dHJlZV93aXRoX2V4Y2x1ZGUoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJlYWRfZGF0YShwYXRoKToKLSAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQogICAgICAgICAjIGNyZWF0aW5nIGRhdGEKICAgICAgICAgam9pbiA9IG9zLnBhdGguam9pbgogICAgICAgICBleGlzdHMgPSBvcy5wYXRoLmV4aXN0cwogICAgICAgICBzcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRzdF9kaXIgPSBqb2luKHRlbXBmaWxlLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSwgJzEyMycpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3QudG1wJyksICcxMjMnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudG1wJyksICcxMjMnKQogICAgICAgICAgICAgb3MubWtkaXIoam9pbihzcmNfZGlyLCAndGVzdF9kaXInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgICAgICB3cml0ZV9maWxlKChzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCiAgICAgICAgICAgICBvcy5ta2Rpcihqb2luKHNyY19kaXIsICd0ZXN0X2RpcjInKSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEoam9pbihzcmNfZGlyLCAndGVzdF9kaXIyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkKICAgICAgICAgICAgIG9zLm1rZGlyKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInLCAndGVzdC50eHQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzQ1NicpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKGpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJywgJ3Rlc3QucHknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzQ1NicpCi0KKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQorICAgICAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJywgJ3Rlc3QucHknKSwgJzQ1NicpCiAKICAgICAgICAgICAgICMgdGVzdGluZyBnbG9iLWxpa2UgcGF0dGVybnMKICAgICAgICAgICAgIHRyeToKQEAgLTI0NCwyMSArNjM0LDE5IEBACiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIGlnbm9yZT1wYXR0ZXJucykKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudHh0JykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnRtcCcpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhdHRlcm5zID0gc2h1dGlsLmlnbm9yZV9wYXR0ZXJucygnKi50bXAnLCAnc3ViZGlyKicpCiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIGlnbm9yZT1wYXR0ZXJucykKICAgICAgICAgICAgICAgICAjIGNoZWNraW5nIHRoZSByZXN1bHQ6IHNvbWUgZWxlbWVudHMgc2hvdWxkIG5vdCBiZSBjb3BpZWQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0LnRtcCcpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyMicpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGV4aXN0cyhqb2luKGRzdF9kaXIsICd0ZXN0X2RpcjInLCAnc3ViZGlyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3QudG1wJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXIyJykpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCiAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgotICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdF9kaXIpCisgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQogCiAgICAgICAgICAgICAjIHRlc3RpbmcgY2FsbGFibGUtc3R5bGUKICAgICAgICAgICAgIHRyeToKQEAgLTI3NywxMyArNjY1LDEyIEBACiAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIsIGlnbm9yZT1fZmlsdGVyKQogCiAgICAgICAgICAgICAgICAgIyBjaGVja2luZyB0aGUgcmVzdWx0OiBzb21lIGVsZW1lbnRzIHNob3VsZCBub3QgYmUgY29waWVkCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0LnB5JykpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZXhpc3RzKGpvaW4oZHN0X2RpciwgJ3Rlc3RfZGlyMicsICdzdWJkaXInKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcjInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QucHknKSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShleGlzdHMoam9pbihkc3RfZGlyLCAndGVzdF9kaXIyJywgJ3N1YmRpcicpKSkKIAogICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKLSAgICAgICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShkc3RfZGlyKQorICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZHN0X2RpcikKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc3JjX2RpcikKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUob3MucGF0aC5kaXJuYW1lKGRzdF9kaXIpKQpAQCAtMzA4LDM1ICs2OTUsNiBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaGZsYWdzJykgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgaGFzYXR0cihlcnJubywgJ0VPUE5PVFNVUFAnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBoYXNhdHRyKGVycm5vLCAnRU5PVFNVUCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBvcy5jaGZsYWdzLCBFT1BOT1RTVVBQICYgRU5PVFNVUCIpCi0gICAgZGVmIHRlc3RfY29weXN0YXRfaGFuZGxlc19oYXJtbGVzc19jaGZsYWdzX2Vycm9ycyhzZWxmKToKLSAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZmlsZTEnKQotICAgICAgICBmaWxlMiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmaWxlMicpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShmaWxlMSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShmaWxlMiwgJ3h4eCcpCi0KLSAgICAgICAgZGVmIG1ha2VfY2hmbGFnc19yYWlzZXIoZXJyKToKLSAgICAgICAgICAgIGV4ID0gT1NFcnJvcigpCi0KLSAgICAgICAgICAgIGRlZiBfY2hmbGFnc19yYWlzZXIocGF0aCwgZmxhZ3MpOgotICAgICAgICAgICAgICAgIGV4LmVycm5vID0gZXJyCi0gICAgICAgICAgICAgICAgcmFpc2UgZXgKLSAgICAgICAgICAgIHJldHVybiBfY2hmbGFnc19yYWlzZXIKLSAgICAgICAgb2xkX2NoZmxhZ3MgPSBvcy5jaGZsYWdzCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBlcnIgaW4gZXJybm8uRU9QTk9UU1VQUCwgZXJybm8uRU5PVFNVUDoKLSAgICAgICAgICAgICAgICBvcy5jaGZsYWdzID0gbWFrZV9jaGZsYWdzX3JhaXNlcihlcnIpCi0gICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlzdGF0KGZpbGUxLCBmaWxlMikKLSAgICAgICAgICAgICMgYXNzZXJ0IG90aGVycyBlcnJvcnMgYnJlYWsgaXQKLSAgICAgICAgICAgIG9zLmNoZmxhZ3MgPSBtYWtlX2NoZmxhZ3NfcmFpc2VyKGVycm5vLkVPUE5PVFNVUFAgKyBlcnJuby5FTk9UU1VQKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2h1dGlsLmNvcHlzdGF0LCBmaWxlMSwgZmlsZTIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5jaGZsYWdzID0gb2xkX2NoZmxhZ3MKLQogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9kb250X2NvcHlfZmlsZV9vbnRvX3N5bWxpbmtfdG9faXRzZWxmKHNlbGYpOgogICAgICAgICAjIGJ1ZyA4NTExMjMuCkBAIC0zNjcsNiArNzI1LDcgQEAKICAgICAgICAgICAgIG9zLm1rZGlyKHNyYykKICAgICAgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzaHV0aWwucm10cmVlLCBkc3QpCisgICAgICAgICAgICBzaHV0aWwucm10cmVlKGRzdCwgaWdub3JlX2Vycm9ycz1UcnVlKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShURVNURk4sIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKIApAQCAtNDA3LDkgKzc2Niw5IEBACiAKICAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5ta2R0ZW1wKCksICdkZXN0aW5hdGlvbicpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0LnR4dCcpLCAnMTIzJykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3QudHh0JyksICcxMjMnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ3Rlc3RfZGlyJykpCi0gICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKKyAgICAgICAgd3JpdGVfZmlsZSgoc3JjX2RpciwgJ3Rlc3RfZGlyJywgJ3Rlc3QudHh0JyksICc0NTYnKQogCiAgICAgICAgIGNvcGllZCA9IFtdCiAgICAgICAgIGRlZiBfY29weShzcmMsIGRzdCk6CkBAIC00MjYsNyArNzg1LDcgQEAKICAgICAgICAgZHN0X2RpciA9IG9zLnBhdGguam9pbihzZWxmLm1rZHRlbXAoKSwgJ2Rlc3RpbmF0aW9uJykKICAgICAgICAgb3Muc3ltbGluaygnSURPTlRFWElTVCcsIG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdC50eHQnKSkKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHNyY19kaXIsICd0ZXN0X2RpcicpKQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG9zLnBhdGguam9pbihzcmNfZGlyLCAndGVzdF9kaXInLCAndGVzdC50eHQnKSwgJzQ1NicpCisgICAgICAgIHdyaXRlX2ZpbGUoKHNyY19kaXIsICd0ZXN0X2RpcicsICd0ZXN0LnR4dCcpLCAnNDU2JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXJyb3IsIHNodXRpbC5jb3B5dHJlZSwgc3JjX2RpciwgZHN0X2RpcikKIAogICAgICAgICAjIGEgZGFuZ2xpbmcgc3ltbGluayBpcyBpZ25vcmVkIHdpdGggdGhlIHByb3BlciBmbGFnCkBAIC00NDIsNyArODAxLDcgQEAKICAgICBkZWYgX2NvcHlfZmlsZShzZWxmLCBtZXRob2QpOgogICAgICAgICBmbmFtZSA9ICd0ZXN0LnR4dCcKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFt0bXBkaXIsIGZuYW1lXSkKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCBmbmFtZSksICd4eHgnKQogICAgICAgICBmaWxlMSA9IG9zLnBhdGguam9pbih0bXBkaXIsIGZuYW1lKQogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgbWV0aG9kKGZpbGUxLCB0bXBkaXIyKQpAQCAtNDc0LDE0ICs4MzMsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXR0cihmaWxlMV9zdGF0LCAnc3RfZmxhZ3MnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YXR0cihmaWxlMl9zdGF0LCAnc3RfZmxhZ3MnKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X21ha2VfdGFyYmFsbChzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUxJyksICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMicpLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKHRtcGRpciwgJ3N1YicpKQotICAgICAgICBzZWxmLndyaXRlX2ZpbGUoW3RtcGRpciwgJ3N1YicsICdmaWxlMyddLCAneHh4JykKKyAgICAgICAgd3JpdGVfZmlsZSgodG1wZGlyLCAnc3ViJywgJ2ZpbGUzJyksICd4eHgnKQogCiAgICAgICAgIHRtcGRpcjIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICAjIGZvcmNlIHNodXRpbCB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeQpAQCAtNTI4LDE2ICs4ODcsMTYgQEAKICAgICAgICAgdG1wZGlyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgZGlzdCA9IG9zLnBhdGguam9pbih0bXBkaXIsICdkaXN0JykKICAgICAgICAgb3MubWtkaXIoZGlzdCkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbZGlzdCwgJ2ZpbGUyJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKChkaXN0LCAnZmlsZTEnKSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKGRpc3QsICdmaWxlMicpLCAneHh4JykKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKGRpc3QsICdzdWInKSkKLSAgICAgICAgc2VsZi53cml0ZV9maWxlKFtkaXN0LCAnc3ViJywgJ2ZpbGUzJ10sICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKChkaXN0LCAnc3ViJywgJ2ZpbGUzJyksICd4eHgnKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oZGlzdCwgJ3N1YjInKSkKICAgICAgICAgdG1wZGlyMiA9IHNlbGYubWtkdGVtcCgpCiAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguam9pbih0bXBkaXIyLCAnYXJjaGl2ZScpCiAgICAgICAgIHJldHVybiB0bXBkaXIsIHRtcGRpcjIsIGJhc2VfbmFtZQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoZmluZF9leGVjdXRhYmxlKCd0YXInKSBhbmQgZmluZF9leGVjdXRhYmxlKCdnemlwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05lZWQgdGhlIHRhciBjb21tYW5kIHRvIHJ1bicpCiAgICAgZGVmIHRlc3RfdGFyZmlsZV92c190YXIoc2VsZik6CkBAIC01OTIsMTMgKzk1MSwxMyBAQAogICAgICAgICB0YXJiYWxsID0gYmFzZV9uYW1lICsgJy50YXInCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh0YXJiYWxsKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpJUF9TVVBQT1JULCAnTmVlZCB6aXAgc3VwcG9ydCB0byBydW4nKQogICAgIGRlZiB0ZXN0X21ha2VfemlwZmlsZShzZWxmKToKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgdG8gdGFyCiAgICAgICAgIHRtcGRpciA9IHNlbGYubWtkdGVtcCgpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTEnXSwgJ3h4eCcpCi0gICAgICAgIHNlbGYud3JpdGVfZmlsZShbdG1wZGlyLCAnZmlsZTInXSwgJ3h4eCcpCisgICAgICAgIHdyaXRlX2ZpbGUoKHRtcGRpciwgJ2ZpbGUxJyksICd4eHgnKQorICAgICAgICB3cml0ZV9maWxlKCh0bXBkaXIsICdmaWxlMicpLCAneHh4JykKIAogICAgICAgICB0bXBkaXIyID0gc2VsZi5ta2R0ZW1wKCkKICAgICAgICAgIyBmb3JjZSBzaHV0aWwgdG8gY3JlYXRlIHRoZSBkaXJlY3RvcnkKQEAgLTYxNiw3ICs5NzUsNyBAQAogICAgICAgICBiYXNlX25hbWUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnYXJjaGl2ZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1ha2VfYXJjaGl2ZSwgYmFzZV9uYW1lLCAneHh4JykKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X21ha2VfYXJjaGl2ZV9vd25lcl9ncm91cChzZWxmKToKICAgICAgICAgIyB0ZXN0aW5nIG1ha2VfYXJjaGl2ZSB3aXRoIG93bmVyIGFuZCBncm91cCwgd2l0aCB2YXJpb3VzIGNvbWJpbmF0aW9ucwogICAgICAgICAjIHRoaXMgd29ya3MgZXZlbiBpZiB0aGVyZSdzIG5vdCBnaWQvdWlkIHN1cHBvcnQKQEAgLTY0NCw3ICsxMDAzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlcykpCiAKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X3RhcmZpbGVfcm9vdF9vd25lcihzZWxmKToKICAgICAgICAgdG1wZGlyLCB0bXBkaXIyLCBiYXNlX25hbWUgPSAgc2VsZi5fY3JlYXRlX2ZpbGVzKCkKQEAgLTcxMyw3ICsxMDcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGlmZi5hcHBlbmQoZmlsZV8pCiAgICAgICAgIHJldHVybiBkaWZmCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh6bGliLCAiUmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF91bnBhY2tfYXJjaGl2ZShzZWxmKToKICAgICAgICAgZm9ybWF0cyA9IFsndGFyJywgJ2d6dGFyJywgJ3ppcCddCiAgICAgICAgIGlmIEJaMl9TVVBQT1JURUQ6CkBAIC03NjQsNiArMTEyMywxNjIgQEAKICAgICAgICAgdW5yZWdpc3Rlcl91bnBhY2tfZm9ybWF0KCdCb28yJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfdW5wYWNrX2Zvcm1hdHMoKSwgZm9ybWF0cykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2h1dGlsLCAnZGlza191c2FnZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaXNrX3VzYWdlIG5vdCBhdmFpbGFibGUgb24gdGhpcyBwbGF0Zm9ybSIpCisgICAgZGVmIHRlc3RfZGlza191c2FnZShzZWxmKToKKyAgICAgICAgdXNhZ2UgPSBzaHV0aWwuZGlza191c2FnZShvcy5nZXRjd2QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHVzYWdlLnRvdGFsLCAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodXNhZ2UudXNlZCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodXNhZ2UuZnJlZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwodXNhZ2UudG90YWwsIHVzYWdlLnVzZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih1c2FnZS50b3RhbCwgdXNhZ2UuZnJlZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFVJRF9HSURfU1VQUE9SVCwgIlJlcXVpcmVzIGdycCBhbmQgcHdkIHN1cHBvcnQiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdjaG93bicpLCAncmVxdWlyZXMgb3MuY2hvd24nKQorICAgIGRlZiB0ZXN0X2Nob3duKHNlbGYpOgorCisgICAgICAgICMgY2xlYW5lZC11cCBhdXRvbWF0aWNhbGx5IGJ5IFRlc3RTaHV0aWwudGVhckRvd24gbWV0aG9kCisgICAgICAgIGRpcm5hbWUgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBmaWxlbmFtZSA9IHRlbXBmaWxlLm1rdGVtcChkaXI9ZGlybmFtZSkKKyAgICAgICAgd3JpdGVfZmlsZShmaWxlbmFtZSwgJ3Rlc3RpbmcgY2hvd24gZnVuY3Rpb24nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6CisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzaW5nIHVzZXJuYW1lJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzaW5nIGdyb3VwbmFtZScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc2h1dGlsLmNob3duKGZpbGVuYW1lLCBiJ3NwYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgMy4xNCkKKworICAgICAgICB1aWQgPSBvcy5nZXR1aWQoKQorICAgICAgICBnaWQgPSBvcy5nZXRnaWQoKQorCisgICAgICAgIGRlZiBjaGVja19jaG93bihwYXRoLCB1aWQ9Tm9uZSwgZ2lkPU5vbmUpOgorICAgICAgICAgICAgcyA9IG9zLnN0YXQoZmlsZW5hbWUpCisgICAgICAgICAgICBpZiB1aWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1aWQsIHMuc3RfdWlkKQorICAgICAgICAgICAgaWYgZ2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2lkLCBzLnN0X2dpZCkKKworICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9dWlkKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPWdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZmlsZW5hbWUsIGdpZD1naWQpCisKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVpZCwgZ2lkKQorICAgICAgICBjaGVja19jaG93bihkaXJuYW1lLCB1aWQsIGdpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkKQorICAgICAgICBzaHV0aWwuY2hvd24oZGlybmFtZSwgdXNlcj11aWQpCisgICAgICAgIGNoZWNrX2Nob3duKGRpcm5hbWUsIHVpZCkKKyAgICAgICAgc2h1dGlsLmNob3duKGRpcm5hbWUsIGdyb3VwPWdpZCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgZ2lkPWdpZCkKKworICAgICAgICB1c2VyID0gcHdkLmdldHB3dWlkKHVpZClbMF0KKyAgICAgICAgZ3JvdXAgPSBncnAuZ2V0Z3JnaWQoZ2lkKVswXQorICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXIsIGdyb3VwKQorICAgICAgICBjaGVja19jaG93bihmaWxlbmFtZSwgdWlkLCBnaWQpCisgICAgICAgIHNodXRpbC5jaG93bihkaXJuYW1lLCB1c2VyLCBncm91cCkKKyAgICAgICAgY2hlY2tfY2hvd24oZGlybmFtZSwgdWlkLCBnaWQpCisKKyAgICBkZWYgdGVzdF9jb3B5X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5IGFuZCBjb3B5MiBib3RoIHJldHVybiB0aGVpciBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBmb3IgZm4gaW4gKHNodXRpbC5jb3B5LCBzaHV0aWwuY29weTIpOgorICAgICAgICAgICAgc3JjX2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgICAgICBkc3RfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgICAgIHdyaXRlX2ZpbGUoc3JjLCAnZm9vJykKKyAgICAgICAgICAgIHJ2ID0gZm4oc3JjLCBkc3RfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKGRzdF9kaXIsICdmb28nKSkKKyAgICAgICAgICAgIHJ2ID0gZm4oc3JjLCBvcy5wYXRoLmpvaW4oZHN0X2RpciwgJ2JhcicpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKSkKKworICAgIGRlZiB0ZXN0X2NvcHlmaWxlX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgIyBjb3B5dHJlZSByZXR1cm5zIGl0cyBkZXN0aW5hdGlvbiBwYXRoLgorICAgICAgICBzcmNfZGlyID0gc2VsZi5ta2R0ZW1wKCkKKyAgICAgICAgZHN0X2RpciA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIGRzdF9maWxlID0gb3MucGF0aC5qb2luKGRzdF9kaXIsICdiYXInKQorICAgICAgICBzcmNfZmlsZSA9IG9zLnBhdGguam9pbihzcmNfZGlyLCAnZm9vJykKKyAgICAgICAgd3JpdGVfZmlsZShzcmNfZmlsZSwgJ2ZvbycpCisgICAgICAgIHJ2ID0gc2h1dGlsLmNvcHlmaWxlKHNyY19maWxlLCBkc3RfZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJ2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWFkX2ZpbGUoc3JjX2ZpbGUpLCByZWFkX2ZpbGUoZHN0X2ZpbGUpKQorCisgICAgZGVmIHRlc3RfY29weXRyZWVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICAjIGNvcHl0cmVlIHJldHVybnMgaXRzIGRlc3RpbmF0aW9uIHBhdGguCisgICAgICAgIHNyY19kaXIgPSBzZWxmLm1rZHRlbXAoKQorICAgICAgICBkc3RfZGlyID0gc3JjX2RpciArICJkZXN0IgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgZHN0X2RpciwgVHJ1ZSkKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNyY19kaXIsICdmb28nKQorICAgICAgICB3cml0ZV9maWxlKHNyYywgJ2ZvbycpCisgICAgICAgIHJ2ID0gc2h1dGlsLmNvcHl0cmVlKHNyY19kaXIsIGRzdF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydmb28nXSwgb3MubGlzdGRpcihydikpCisKKworY2xhc3MgVGVzdFdoaWNoKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50ZW1wX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2h1dGlsLnJtdHJlZSwgc2VsZi50ZW1wX2RpciwgVHJ1ZSkKKyAgICAgICAgIyBHaXZlIHRoZSB0ZW1wX2ZpbGUgYW4gIi5leGUiIHN1ZmZpeCBmb3IgYWxsLgorICAgICAgICAjIEl0J3MgbmVlZGVkIG9uIFdpbmRvd3MgYW5kIG5vdCBoYXJtZnVsIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgc2VsZi50ZW1wX2ZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPXNlbGYudGVtcF9kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iLmV4ZSIpCisgICAgICAgIG9zLmNobW9kKHNlbGYudGVtcF9maWxlLm5hbWUsIHN0YXQuU19JWFVTUikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYudGVtcF9maWxlLmNsb3NlKQorICAgICAgICBzZWxmLmRpciwgc2VsZi5maWxlID0gb3MucGF0aC5zcGxpdChzZWxmLnRlbXBfZmlsZS5uYW1lKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICMgR2l2ZW4gYW4gRVhFIGluIGEgZGlyZWN0b3J5LCBpdCBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICAgIHJ2ID0gc2h1dGlsLndoaWNoKHNlbGYuZmlsZSwgcGF0aD1zZWxmLmRpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgc2VsZi50ZW1wX2ZpbGUubmFtZSkKKworICAgIGRlZiB0ZXN0X2Z1bGxfcGF0aF9zaG9ydF9jaXJjdWl0KHNlbGYpOgorICAgICAgICAjIFdoZW4gZ2l2ZW4gdGhlIGZ1bGx5IHF1YWxpZmllZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgdGhhdCBleGlzdHMsCisgICAgICAgICMgaXQgc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLnRlbXBfZmlsZS5uYW1lLCBwYXRoPXNlbGYudGVtcF9kaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50ZW1wX2ZpbGUubmFtZSwgcnYpCisKKyAgICBkZWYgdGVzdF9ub25fbWF0Y2hpbmdfbW9kZShzZWxmKToKKyAgICAgICAgIyBTZXQgdGhlIGZpbGUgcmVhZC1vbmx5IGFuZCBhc2sgZm9yIHdyaXRlYWJsZSBmaWxlcy4KKyAgICAgICAgb3MuY2htb2Qoc2VsZi50ZW1wX2ZpbGUubmFtZSwgc3RhdC5TX0lSRUFEKQorICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9c2VsZi5kaXIsIG1vZGU9b3MuV19PSykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocnYpCisKKyAgICBkZWYgdGVzdF9yZWxhdGl2ZShzZWxmKToKKyAgICAgICAgb2xkX2N3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIGJhc2VfZGlyLCB0YWlsX2RpciA9IG9zLnBhdGguc3BsaXQoc2VsZi5kaXIpCisgICAgICAgIG9zLmNoZGlyKGJhc2VfZGlyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBydiA9IHNodXRpbC53aGljaChzZWxmLmZpbGUsIHBhdGg9dGFpbF9kaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBvcy5wYXRoLmpvaW4odGFpbF9kaXIsIHNlbGYuZmlsZSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcihvbGRfY3dkKQorCisgICAgZGVmIHRlc3Rfbm9uZXhpc3RlbnRfZmlsZShzZWxmKToKKyAgICAgICAgIyBSZXR1cm4gTm9uZSB3aGVuIG5vIG1hdGNoaW5nIGV4ZWN1dGFibGUgZmlsZSBpcyBmb3VuZCBvbiB0aGUgcGF0aC4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goImZvby5leGUiLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShydikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRoZXh0IGNoZWNrIGlzIFdpbmRvd3Mtb25seSIpCisgICAgZGVmIHRlc3RfcGF0aGV4dF9jaGVja2luZyhzZWxmKToKKyAgICAgICAgIyBBc2sgZm9yIHRoZSBmaWxlIHdpdGhvdXQgdGhlICIuZXhlIiBleHRlbnNpb24sIHRoZW4gZW5zdXJlIHRoYXQKKyAgICAgICAgIyBpdCBnZXRzIGZvdW5kIHByb3Blcmx5IHdpdGggdGhlIGV4dGVuc2lvbi4KKyAgICAgICAgcnYgPSBzaHV0aWwud2hpY2goc2VsZi50ZW1wX2ZpbGUubmFtZVs6LTRdLCBwYXRoPXNlbGYuZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudGVtcF9maWxlLm5hbWUsIHJ2KQorCiAKIGNsYXNzIFRlc3RNb3ZlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODc3LDYgKzEzOTIsNTggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVEVTVEZOLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9maWxlX3N5bWxpbmsoc2VsZik6CisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5zeW1saW5rKHNlbGYuc3JjX2ZpbGUsIGRzdCkKKyAgICAgICAgc2h1dGlsLm1vdmUoZHN0LCBzZWxmLmRzdF9maWxlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoc2VsZi5kc3RfZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2ZpbGUpKQorCisgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluaworICAgIEBtb2NrX3JlbmFtZQorICAgIGRlZiB0ZXN0X21vdmVfZmlsZV9zeW1saW5rX3RvX2RpcihzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSAiYmFyIgorICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgb3Muc3ltbGluayhzZWxmLnNyY19maWxlLCBkc3QpCisgICAgICAgIHNodXRpbC5tb3ZlKGRzdCwgc2VsZi5kc3RfZGlyKQorICAgICAgICBmaW5hbF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzbGluayhmaW5hbF9saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZWZpbGUoc2VsZi5zcmNfZmlsZSwgZmluYWxfbGluaykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kYW5nbGluZ19zeW1saW5rKHNlbGYpOgorICAgICAgICBzcmMgPSBvcy5wYXRoLmpvaW4oc2VsZi5zcmNfZGlyLCAnYmF6JykKKyAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JhcicpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ3F1dXgnKQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGgucmVhbHBhdGgoc3JjKSwgb3MucGF0aC5yZWFscGF0aChkc3RfbGluaykpCisKKyAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCisgICAgQG1vY2tfcmVuYW1lCisgICAgZGVmIHRlc3RfbW92ZV9kaXJfc3ltbGluayhzZWxmKToKKyAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKHNlbGYuc3JjX2RpciwgJ2JheicpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihzZWxmLnNyY19kaXIsICdiYXInKQorICAgICAgICBvcy5ta2RpcihzcmMpCisgICAgICAgIG9zLnN5bWxpbmsoc3JjLCBkc3QpCisgICAgICAgIGRzdF9saW5rID0gb3MucGF0aC5qb2luKHNlbGYuZHN0X2RpciwgJ3F1dXgnKQorICAgICAgICBzaHV0aWwubW92ZShkc3QsIGRzdF9saW5rKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZHN0X2xpbmspKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5zYW1lZmlsZShzcmMsIGRzdF9saW5rKSkKKworICAgIGRlZiB0ZXN0X21vdmVfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBydiA9IHNodXRpbC5tb3ZlKHNlbGYuc3JjX2ZpbGUsIHNlbGYuZHN0X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHNlbGYuc3JjX2ZpbGUpKSkKKworICAgIGRlZiB0ZXN0X21vdmVfYXNfcmVuYW1lX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcnYgPSBzaHV0aWwubW92ZShzZWxmLnNyY19maWxlLCBvcy5wYXRoLmpvaW4oc2VsZi5kc3RfZGlyLCAnYmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIG9zLnBhdGguam9pbihzZWxmLmRzdF9kaXIsICdiYXInKSkKKwogCiBjbGFzcyBUZXN0Q29weUZpbGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC05ODYsNiArMTU1Myw3IEBACiAgICAgICAgICMgYnV0IGEgZGlmZmVyZW50IGNhc2UuCiAKICAgICAgICAgc2VsZi5zcmNfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaHV0aWwucm10cmVlLCBzZWxmLnNyY19kaXIsIFRydWUpCiAgICAgICAgIGRzdF9kaXIgPSBvcy5wYXRoLmpvaW4oCiAgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHNlbGYuc3JjX2RpciksCiAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShzZWxmLnNyY19kaXIpLnVwcGVyKCkpCkBAIC05OTUsMTMgKzE1NjMsNTcgQEAKICAgICAgICAgICAgIHNodXRpbC5tb3ZlKHNlbGYuc3JjX2RpciwgZHN0X2RpcikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGRzdF9kaXIpKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZHN0X2Rpcik6Ci0gICAgICAgICAgICAgICAgb3Mucm1kaXIoZHN0X2RpcikKKyAgICAgICAgICAgIG9zLnJtZGlyKGRzdF9kaXIpCiAKK2NsYXNzIFRlcm1zaXplVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2RvZXNfbm90X2NyYXNoKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBpZiBnZXRfdGVybWluYWxfc2l6ZSgpIHJldHVybnMgYSBtZWFuaW5nZnVsIHZhbHVlLgorCisgICAgICAgIFRoZXJlJ3Mgbm8gZWFzeSBwb3J0YWJsZSB3YXkgdG8gYWN0dWFsbHkgY2hlY2sgdGhlIHNpemUgb2YgdGhlCisgICAgICAgIHRlcm1pbmFsLCBzbyBsZXQncyBjaGVjayBpZiBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5zaWJsZSBpbnN0ZWFkLgorICAgICAgICAiIiIKKyAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUuY29sdW1ucywgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2l6ZS5saW5lcywgMCkKKworICAgIGRlZiB0ZXN0X29zX2Vudmlyb25fZmlyc3Qoc2VsZik6CisgICAgICAgICJDaGVjayBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaGF2ZSBwcmVjZWRlbmNlIgorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZW52WydDT0xVTU5TJ10gPSAnNzc3JworICAgICAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZS5jb2x1bW5zLCA3NzcpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICBlbnZbJ0xJTkVTJ10gPSAnODg4JworICAgICAgICAgICAgc2l6ZSA9IHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZS5saW5lcywgODg4KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MuaXNhdHR5KHN5cy5fX3N0ZG91dF9fLmZpbGVubygpKSwgIm5vdCBvbiB0dHkiKQorICAgIGRlZiB0ZXN0X3N0dHlfbWF0Y2goc2VsZik6CisgICAgICAgICIiIkNoZWNrIGlmIHN0dHkgcmV0dXJucyB0aGUgc2FtZSByZXN1bHRzIGlnbm9yaW5nIGVudgorCisgICAgICAgIFRoaXMgdGVzdCB3aWxsIGZhaWwgaWYgc3RkaW4gYW5kIHN0ZG91dCBhcmUgY29ubmVjdGVkIHRvCisgICAgICAgIGRpZmZlcmVudCB0ZXJtaW5hbHMgd2l0aCBkaWZmZXJlbnQgc2l6ZXMuIE5ldmVydGhlbGVzcywgc3VjaAorICAgICAgICBzaXR1YXRpb25zIHNob3VsZCBiZSBwcmV0dHkgcmFyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNpemUgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbJ3N0dHknLCAnc2l6ZSddKS5kZWNvZGUoKS5zcGxpdCgpCisgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN0dHkgaW52b2NhdGlvbiBmYWlsZWQiKQorICAgICAgICBleHBlY3RlZCA9IChpbnQoc2l6ZVsxXSksIGludChzaXplWzBdKSkgIyByZXZlcnNlZCBvcmRlcgorCisgICAgICAgIHdpdGggc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkKCkgYXMgZW52OgorICAgICAgICAgICAgZGVsIGVudlsnTElORVMnXQorICAgICAgICAgICAgZGVsIGVudlsnQ09MVU1OUyddCisgICAgICAgICAgICBhY3R1YWwgPSBzaHV0aWwuZ2V0X3Rlcm1pbmFsX3NpemUoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKIAogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFNodXRpbCwgVGVzdE1vdmUsIFRlc3RDb3B5RmlsZSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0U2h1dGlsLCBUZXN0TW92ZSwgVGVzdENvcHlGaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRlcm1zaXplVGVzdHMsIFRlc3RXaGljaCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQppbmRleCA4ZGYxYmYwLi42YmUyNTliIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQpAQCAtMSwxNyArMSwxOSBAQAotaW1wb3J0IGVycm5vCi1pbXBvcnQgZ2MKLWltcG9ydCBvcwotaW1wb3J0IHBpY2tsZQotaW1wb3J0IHNlbGVjdAotaW1wb3J0IHNpZ25hbAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgdHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBjb250ZXh0bGliIGltcG9ydCBjbG9zaW5nCitpbXBvcnQgZ2MKK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBzZWxlY3QKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdHJhY2ViYWNrCitpbXBvcnQgc3lzLCBvcywgdGltZSwgZXJybm8KIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rLCBzcGF3bl9weXRob24KK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQogCiBpZiBzeXMucGxhdGZvcm0gaW4gKCdvczInLCAncmlzY29zJyk6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIkNhbid0IHRlc3Qgc2lnbmFsIG9uICVzIiAlIHN5cy5wbGF0Zm9ybSkKQEAgLTU3LDE1ICs1OSw5IEBACiAKICAgICBkZWYgaGFuZGxlckEoc2VsZiwgc2lnbnVtLCBmcmFtZSk6CiAgICAgICAgIHNlbGYuYV9jYWxsZWQgPSBUcnVlCi0gICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgIHByaW50KCJoYW5kbGVyQSBpbnZva2VkIGZyb20gc2lnbmFsICVzIGF0OlxuJXMiICUgKAotICAgICAgICAgICAgICAgIHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUsIGxpbWl0PTEpKSkKIAogICAgIGRlZiBoYW5kbGVyQihzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgc2VsZi5iX2NhbGxlZCA9IFRydWUKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQgKCJoYW5kbGVyQiBpbnZva2VkIGZyb20gc2lnbmFsICVzIGF0OlxuJXMiICUgKAotICAgICAgICAgICAgICAgIHNpZ251bSwgc2VsZi5mb3JtYXRfZnJhbWUoZnJhbWUsIGxpbWl0PTEpKSkKICAgICAgICAgcmFpc2UgSGFuZGxlckJDYWxsZWQoc2lnbnVtLCBzZWxmLmZvcm1hdF9mcmFtZShmcmFtZSkpCiAKICAgICBkZWYgd2FpdChzZWxmLCBjaGlsZCk6CkBAIC05Miw4ICs4OCw2IEBACiAKICAgICAgICAgIyBMZXQgdGhlIHN1Yi1wcm9jZXNzZXMga25vdyB3aG8gdG8gc2VuZCBzaWduYWxzIHRvLgogICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgidGVzdCBydW5uZXIncyBwaWQgaXMiLCBwaWQpCiAKICAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLUhVUCcsIHN0cihwaWQpXSkKICAgICAgICAgaWYgY2hpbGQ6CkBAIC0xMTcsOCArMTExLDYgQEAKICAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIkhhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBjYXVnaHQiKQogCiAgICAgICAgIGNoaWxkID0gaWdub3JpbmdfZWludHIoc3VicHJvY2Vzcy5Qb3BlbiwgWydraWxsJywgJy1VU1IyJywgc3RyKHBpZCldKQogICAgICAgICBpZiBjaGlsZDoKQEAgLTEzNCw4ICsxMjYsNyBAQAogICAgICAgICAgICAgIyBtYXkgcmV0dXJuIGVhcmx5LgogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIktleWJvYXJkSW50ZXJydXB0ICh0aGUgYWxhcm0oKSB3ZW50IG9mZikiKQorICAgICAgICAgICAgcGFzcwogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlNvbWUgb3RoZXIgZXhjZXB0aW9uIHdva2UgdXMgZnJvbSBwYXVzZTogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQpAQCAtMTkxLDcgKzE4Miw3IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEJhc2ljU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgUG9zaXhUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRyaXZpYWxfc2lnbmFsX2hhbmRsZXIoc2VsZiwgKmFyZ3MpOgogICAgICAgICBwYXNzCiAKQEAgLTIzMywzMSArMjI0LDQ0IEBACiAKIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBXYWtldXBTaWduYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGNoZWNrX3dha2V1cChzZWxmLCB0ZXN0X2JvZHkpOgotICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQgYW5kIHRvIG5vdCBjaGFuZ2Ugc2lnbmFsCi0gICAgICAgICMgaGFuZGxpbmcgb2YgdGhlIHBhcmVudCBwcm9jZXNzCisgICAgZGVmIGNoZWNrX3dha2V1cChzZWxmLCB0ZXN0X2JvZHksICpzaWduYWxzLCBvcmRlcmVkPVRydWUpOgorICAgICAgICAjIHVzZSBhIHN1YnByb2Nlc3MgdG8gaGF2ZSBvbmx5IG9uZSB0aHJlYWQKICAgICAgICAgY29kZSA9ICIiImlmIDE6CiAgICAgICAgIGltcG9ydCBmY250bAogICAgICAgICBpbXBvcnQgb3MKICAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgc3RydWN0CisKKyAgICAgICAgc2lnbmFscyA9IHshcn0KIAogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIHBhc3MKIAorICAgICAgICBkZWYgY2hlY2tfc2lnbnVtKHNpZ25hbHMpOgorICAgICAgICAgICAgZGF0YSA9IG9zLnJlYWQocmVhZCwgbGVuKHNpZ25hbHMpKzEpCisgICAgICAgICAgICByYWlzZWQgPSBzdHJ1Y3QudW5wYWNrKCcldUInICUgbGVuKGRhdGEpLCBkYXRhKQorICAgICAgICAgICAgaWYgbm90IHshcn06CisgICAgICAgICAgICAgICAgcmFpc2VkID0gc2V0KHJhaXNlZCkKKyAgICAgICAgICAgICAgICBzaWduYWxzID0gc2V0KHNpZ25hbHMpCisgICAgICAgICAgICBpZiByYWlzZWQgIT0gc2lnbmFsczoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVyICE9ICVyIiAlIChyYWlzZWQsIHNpZ25hbHMpKQorCiAgICAgICAgIHt9CiAKICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgaGFuZGxlcikKICAgICAgICAgcmVhZCwgd3JpdGUgPSBvcy5waXBlKCkKLSAgICAgICAgZmxhZ3MgPSBmY250bC5mY250bCh3cml0ZSwgZmNudGwuRl9HRVRGTCwgMCkKLSAgICAgICAgZmxhZ3MgPSBmbGFncyB8IG9zLk9fTk9OQkxPQ0sKLSAgICAgICAgZmNudGwuZmNudGwod3JpdGUsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQorICAgICAgICBmb3IgZmQgaW4gKHJlYWQsIHdyaXRlKToKKyAgICAgICAgICAgIGZsYWdzID0gZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfR0VURkwsIDApCisgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgb3MuT19OT05CTE9DSworICAgICAgICAgICAgZmNudGwuZmNudGwoZmQsIGZjbnRsLkZfU0VURkwsIGZsYWdzKQogICAgICAgICBzaWduYWwuc2V0X3dha2V1cF9mZCh3cml0ZSkKIAogICAgICAgICB0ZXN0KCkKKyAgICAgICAgY2hlY2tfc2lnbnVtKHNpZ25hbHMpCiAKICAgICAgICAgb3MuY2xvc2UocmVhZCkKICAgICAgICAgb3MuY2xvc2Uod3JpdGUpCi0gICAgICAgICIiIi5mb3JtYXQodGVzdF9ib2R5KQorICAgICAgICAiIiIuZm9ybWF0KHNpZ25hbHMsIG9yZGVyZWQsIHRlc3RfYm9keSkKIAogICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCctYycsIGNvZGUpCiAKQEAgLTI4Myw3ICsyODcsNyBAQAogICAgICAgICAgICAgZHQgPSBhZnRlcl90aW1lIC0gbWlkX3RpbWUKICAgICAgICAgICAgIGlmIGR0ID49IFRJTUVPVVRfSEFMRjoKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzID49ICVzIiAlIChkdCwgVElNRU9VVF9IQUxGKSkKLSAgICAgICAgIiIiKQorICAgICAgICAiIiIsIHNpZ25hbC5TSUdBTFJNKQogCiAgICAgZGVmIHRlc3Rfd2FrZXVwX2ZkX2R1cmluZyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKQEAgLTMwNiw3ICszMTAsMzIgQEAKICAgICAgICAgICAgIGR0ID0gYWZ0ZXJfdGltZSAtIGJlZm9yZV90aW1lCiAgICAgICAgICAgICBpZiBkdCA+PSBUSU1FT1VUX0hBTEY6CiAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyA+PSAlcyIgJSAoZHQsIFRJTUVPVVRfSEFMRikpCi0gICAgICAgICIiIikKKyAgICAgICAgIiIiLCBzaWduYWwuU0lHQUxSTSkKKworICAgIGRlZiB0ZXN0X3NpZ251bShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja193YWtldXAoIiIiZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdBTFJNKQorICAgICAgICAiIiIsIHNpZ25hbC5TSUdVU1IxLCBzaWduYWwuU0lHQUxSTSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgdGVzdF9wZW5kaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3dha2V1cCgiIiJkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2lnbnVtMSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgICAgICBzaWdudW0yID0gc2lnbmFsLlNJR1VTUjIKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0xLCBoYW5kbGVyKQorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0yLCBoYW5kbGVyKQorCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIChzaWdudW0xLCBzaWdudW0yKSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bTEpCisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0yKQorICAgICAgICAgICAgIyBVbmJsb2NraW5nIHRoZSAyIHNpZ25hbHMgY2FsbHMgdGhlIEMgc2lnbmFsIGhhbmRsZXIgdHdpY2UKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19VTkJMT0NLLCAoc2lnbnVtMSwgc2lnbnVtMikpCisgICAgICAgICIiIiwgIHNpZ25hbC5TSUdVU1IxLCBzaWduYWwuU0lHVVNSMiwgb3JkZXJlZD1GYWxzZSkKKwogCiBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiTm90IHZhbGlkIG9uIFdpbmRvd3MiKQogY2xhc3MgU2lnaW50ZXJydXB0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0zMTYsOSArMzQ1LDYgQEAKICAgICAgICAgcmVhZCBpcyBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsIGFuZCByYWlzZXMgYW4gZXhjZXB0aW9uLiAgUmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIGl0IHJldHVybnMgbm9ybWFsbHkuCiAgICAgICAgICIiIgotICAgICAgICBjbGFzcyBUaW1lb3V0KEV4Y2VwdGlvbik6Ci0gICAgICAgICAgICBwYXNzCi0KICAgICAgICAgIyB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUgb25seSBvbmUgdGhyZWFkLCB0byBoYXZlIGEgdGltZW91dCBvbiB0aGUKICAgICAgICAgIyBibG9ja2luZyByZWFkIGFuZCB0byBub3QgdG91Y2ggc2lnbmFsIGhhbmRsaW5nIGluIHRoaXMgcHJvY2VzcwogICAgICAgICBjb2RlID0gIiIiaWYgMToKQEAgLTM1OSwxOCArMzg1LDggQEAKICAgICAgICAgICAgICAgICAjIHdhaXQgdW50aWwgdGhlIGNoaWxkIHByb2Nlc3MgaXMgbG9hZGVkIGFuZCBoYXMgc3RhcnRlZAogICAgICAgICAgICAgICAgIGZpcnN0X2xpbmUgPSBwcm9jZXNzLnN0ZG91dC5yZWFkbGluZSgpCiAKLSAgICAgICAgICAgICAgICAjIFdhaXQgdGhlIHByb2Nlc3Mgd2l0aCBhIHRpbWVvdXQgb2YgNSBzZWNvbmRzCi0gICAgICAgICAgICAgICAgdGltZW91dCA9IHRpbWUudGltZSgpICsgNS4wCi0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IHRpbWUudGltZSgpOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGltZW91dCgpCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHByb2Nlc3MucG9sbCgpCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0YXR1cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQotCi0gICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgICAgIGV4Y2VwdCBUaW1lb3V0OgorICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSh0aW1lb3V0PTUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkOgogICAgICAgICAgICAgICAgIHByb2Nlc3Mua2lsbCgpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICBlbHNlOgpAQCAtNDE5LDggKzQzNSw2IEBACiAKICAgICBkZWYgc2lnX2Fscm0oc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmhuZGxfY2FsbGVkID0gVHJ1ZQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiU0lHQUxSTSBoYW5kbGVyIGludm9rZWQiLCBhcmdzKQogCiAgICAgZGVmIHNpZ192dGFscm0oc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLmhuZGxfY2FsbGVkID0gVHJ1ZQpAQCAtNDMyLDIxICs0NDYsMTMgQEAKICAgICAgICAgZWxpZiBzZWxmLmhuZGxfY291bnQgPT0gMzoKICAgICAgICAgICAgICMgZGlzYWJsZSBJVElNRVJfVklSVFVBTCwgdGhpcyBmdW5jdGlvbiBzaG91bGRuJ3QgYmUgY2FsbGVkIGFueW1vcmUKICAgICAgICAgICAgIHNpZ25hbC5zZXRpdGltZXIoc2lnbmFsLklUSU1FUl9WSVJUVUFMLCAwKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCJsYXN0IFNJR1ZUQUxSTSBoYW5kbGVyIGNhbGwiKQogCiAgICAgICAgIHNlbGYuaG5kbF9jb3VudCArPSAxCiAKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlNJR1ZUQUxSTSBoYW5kbGVyIGludm9rZWQiLCBhcmdzKQotCiAgICAgZGVmIHNpZ19wcm9mKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5obmRsX2NhbGxlZCA9IFRydWUKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1BST0YsIDApCiAKLSAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgcHJpbnQoIlNJR1BST0YgaGFuZGxlciBpbnZva2VkIiwgYXJncykKLQogICAgIGRlZiB0ZXN0X2l0aW1lcl9leGMoc2VsZik6CiAgICAgICAgICMgWFhYIEknbSBhc3N1bWluZyAtMSBpcyBhbiBpbnZhbGlkIGl0aW1lciwgYnV0IG1heWJlIHNvbWUgcGxhdGZvcm0KICAgICAgICAgIyBkZWZpbmVzIGl0ID8KQEAgLTQ1OSwxMCArNDY1LDcgQEAKICAgICBkZWYgdGVzdF9pdGltZXJfcmVhbChzZWxmKToKICAgICAgICAgc2VsZi5pdGltZXIgPSBzaWduYWwuSVRJTUVSX1JFQUwKICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzZWxmLml0aW1lciwgMS4wKQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCgiXG5jYWxsIHBhdXNlKCkuLi4iKQogICAgICAgICBzaWduYWwucGF1c2UoKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5obmRsX2NhbGxlZCwgVHJ1ZSkKIAogICAgICMgSXNzdWUgMzg2NCwgdW5rbm93biBpZiB0aGlzIGFmZmVjdHMgZWFybGllciB2ZXJzaW9ucyBvZiBmcmVlYnNkIGFsc28KQEAgLTUxMSwxMSArNTE0LDM1OSBAQAogICAgICAgICAjIGFuZCB0aGUgaGFuZGxlciBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaG5kbF9jYWxsZWQsIFRydWUpCiAKKworY2xhc3MgUGVuZGluZ1NpZ25hbHNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCBwdGhyZWFkX3NpZ21hc2soKSwgcHRocmVhZF9raWxsKCksIHNpZ3BlbmRpbmcoKSBhbmQgc2lnd2FpdCgpCisgICAgZnVuY3Rpb25zLgorICAgICIiIgorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lncGVuZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWdwZW5kaW5nKCknKQorICAgIGRlZiB0ZXN0X3NpZ3BlbmRpbmdfZW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmFsLnNpZ3BlbmRpbmcoKSwgc2V0KCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWdwZW5kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnNpZ3BlbmRpbmcoKScpCisgICAgZGVmIHRlc3Rfc2lncGVuZGluZyhzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgMS8wCisKKyAgICAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX0JMT0NLLCBbc2lnbnVtXSkKKyAgICAgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ251bSkKKyAgICAgICAgICAgIHBlbmRpbmcgPSBzaWduYWwuc2lncGVuZGluZygpCisgICAgICAgICAgICBpZiBwZW5kaW5nICE9IHtzaWdudW19OgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignJXMgIT0geyVzfScgJSAocGVuZGluZywgc2lnbnVtKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorICAgICAgICAiIiIKKyAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdwdGhyZWFkX2tpbGwnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwucHRocmVhZF9raWxsKCknKQorICAgIGRlZiB0ZXN0X3B0aHJlYWRfa2lsbChzZWxmKToKKyAgICAgICAgY29kZSA9ICIiImlmIDE6CisgICAgICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisKKyAgICAgICAgICAgIGRlZiBoYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgICAgIDEvMAorCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKKworICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdmcmVlYnNkNic6CisgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTIzOTIgYW5kICMxMjQ2OTogc2VuZCBhIHNpZ25hbCB0byB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgICAgICAgICAjIGRvZXNuJ3Qgd29yayBiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHRoZSBmaXJzdCB0aHJlYWQgb24KKyAgICAgICAgICAgICAgICAjIEZyZWVCU0QgNgorICAgICAgICAgICAgICAgIGRlZiBub29wKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICB0aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ub29wKQorICAgICAgICAgICAgICAgIHRocmVhZC5zdGFydCgpCisgICAgICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorCisgICAgICAgICAgICB0aWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwucHRocmVhZF9raWxsKHRpZCwgc2lnbnVtKQorICAgICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJaZXJvRGl2aXNpb25FcnJvciBub3QgcmFpc2VkIikKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBkZWYgd2FpdF9oZWxwZXIoc2VsZiwgYmxvY2tlZCwgdGVzdCk6CisgICAgICAgICIiIgorICAgICAgICB0ZXN0OiBib2R5IG9mIHRoZSAiZGVmIHRlc3Qoc2lnbnVtKToiIGZ1bmN0aW9uLgorICAgICAgICBibG9ja2VkOiBudW1iZXIgb2YgdGhlIGJsb2NrZWQgc2lnbmFsCisgICAgICAgICIiIgorICAgICAgICBjb2RlID0gJycnaWYgMToKKyAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgc3lzCisKKyAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAxLzAKKworICAgICAgICAlcworCisgICAgICAgIGJsb2NrZWQgPSAlcworICAgICAgICBzaWdudW0gPSBzaWduYWwuU0lHQUxSTQorCisgICAgICAgICMgY2hpbGQ6IGJsb2NrIGFuZCB3YWl0IHRoZSBzaWduYWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtibG9ja2VkXSkKKworICAgICAgICAgICAgIyBEbyB0aGUgdGVzdHMKKyAgICAgICAgICAgIHRlc3Qoc2lnbnVtKQorCisgICAgICAgICAgICAjIFRoZSBoYW5kbGVyIG11c3Qgbm90IGJlIGNhbGxlZCBvbiB1bmJsb2NrCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtibG9ja2VkXSkKKyAgICAgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgidGhlIHNpZ25hbCBoYW5kbGVyIGhhcyBiZWVuIGNhbGxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgICAgIHByaW50KCJlcnJvcjoge30iLmZvcm1hdChlcnIpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICcnJyAlICh0ZXN0LnN0cmlwKCksIGJsb2NrZWQpCisKKyAgICAgICAgIyBzaWcqd2FpdCogbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgc2lnbmFsIGJsb2NrZWQ6IHNpbmNlIHRoZSBjdXJyZW50CisgICAgICAgICMgcHJvY2VzcyBtaWdodCBoYXZlIHNldmVyYWwgdGhyZWFkcyBydW5uaW5nLCB1c2UgYSBzdWJwcm9jZXNzIHRvIGhhdmUKKyAgICAgICAgIyBhIHNpbmdsZSB0aHJlYWQuCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3dhaXQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd3YWl0KFtzaWdudW1dKQorICAgICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigncmVjZWl2ZWQgJXMsIG5vdCAlcycgJSAocmVjZWl2ZWQsIHNpZ251bSkpCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdGluZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lnd2FpdGluZm8oKScpCisgICAgZGVmIHRlc3Rfc2lnd2FpdGluZm8oc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCisgICAgICAgICAgICBpbmZvID0gc2lnbmFsLnNpZ3dhaXRpbmZvKFtzaWdudW1dKQorICAgICAgICAgICAgaWYgaW5mby5zaV9zaWdubyAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJpbmZvLnNpX3NpZ25vICE9ICVzIiAlIHNpZ251bSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHQUxSTSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIGluZm8gPSBzaWduYWwuc2lndGltZWR3YWl0KFtzaWdudW1dLCAxMC4xMDAwKQorICAgICAgICAgICAgaWYgaW5mby5zaV9zaWdubyAhPSBzaWdudW06CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdpbmZvLnNpX3NpZ25vICE9ICVzJyAlIHNpZ251bSkKKyAgICAgICAgJycnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd0aW1lZHdhaXQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBzaWduYWwuc2lndGltZWR3YWl0KCknKQorICAgIGRlZiB0ZXN0X3NpZ3RpbWVkd2FpdF9wb2xsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgcG9sbGluZyB3aXRoIHNpZ3RpbWVkd2FpdCB3b3JrcworICAgICAgICBzZWxmLndhaXRfaGVscGVyKHNpZ25hbC5TSUdBTFJNLCAnJycKKyAgICAgICAgZGVmIHRlc3Qoc2lnbnVtKToKKyAgICAgICAgICAgIGltcG9ydCBvcworICAgICAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbnVtKQorICAgICAgICAgICAgaW5mbyA9IHNpZ25hbC5zaWd0aW1lZHdhaXQoW3NpZ251bV0sIDApCisgICAgICAgICAgICBpZiBpbmZvLnNpX3NpZ25vICE9IHNpZ251bToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2luZm8uc2lfc2lnbm8gIT0gJXMnICUgc2lnbnVtKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYud2FpdF9oZWxwZXIoc2lnbmFsLlNJR0FMUk0sICcnJworICAgICAgICBkZWYgdGVzdChzaWdudW0pOgorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzaWduYWwuc2lndGltZWR3YWl0KFtzaWdudW1dLCAxLjApCisgICAgICAgICAgICBpZiByZWNlaXZlZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInJlY2VpdmVkPSVyIiAlIChyZWNlaXZlZCwpKQorICAgICAgICAnJycpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3NpZ3RpbWVkd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd0aW1lZHdhaXQoKScpCisgICAgZGVmIHRlc3Rfc2lndGltZWR3YWl0X25lZ2F0aXZlX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdBTFJNCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNpZ25hbC5zaWd0aW1lZHdhaXQsIFtzaWdudW1dLCAtMS4wKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdzaWd3YWl0aW5mbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0aW5mbygpJykKKyAgICBkZWYgdGVzdF9zaWd3YWl0aW5mb19pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgc2VsZi53YWl0X2hlbHBlcihzaWduYWwuU0lHVVNSMSwgJycnCisgICAgICAgIGRlZiB0ZXN0KHNpZ251bSk6CisgICAgICAgICAgICBpbXBvcnQgZXJybm8KKworICAgICAgICAgICAgaG5kbF9jYWxsZWQgPSBUcnVlCisgICAgICAgICAgICBkZWYgYWxhcm1faGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgICAgICBobmRsX2NhbGxlZCA9IEZhbHNlCisKKyAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIGFsYXJtX2hhbmRsZXIpCisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwuc2lnd2FpdGluZm8oW3NpZ25hbC5TSUdVU1IxXSkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FSU5UUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhuZGxfY2FsbGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJTSUdBTFJNIGhhbmRsZXIgbm90IGNhbGxlZCIpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFeHBlY3RlZCBFSU5UUiB0byBiZSByYWlzZWQgYnkgc2lnd2FpdGluZm8iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkV4cGVjdGVkIEVJTlRSIHRvIGJlIHJhaXNlZCBieSBzaWd3YWl0aW5mbyIpCisgICAgICAgICcnJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnc2lnd2FpdCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5zaWd3YWl0KCknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAncHRocmVhZF9zaWdtYXNrJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaygpJykKKyAgICBAdW5pdHRlc3Quc2tpcElmKHRocmVhZGluZyBpcyBOb25lLCAidGVzdCBuZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKKyAgICBkZWYgdGVzdF9zaWd3YWl0X3RocmVhZChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGNhbGxpbmcgc2lnd2FpdCgpIGZyb20gYSB0aHJlYWQgZG9lc24ndCBzdXNwZW5kIHRoZSB3aG9sZQorICAgICAgICAjIHByb2Nlc3MuIEEgbmV3IGludGVycHJldGVyIGlzIHNwYXduZWQgdG8gYXZvaWQgcHJvYmxlbXMgd2hlbiBtaXhpbmcKKyAgICAgICAgIyB0aHJlYWRzIGFuZCBmb3JrKCk6IG9ubHkgYXN5bmMtc2FmZSBmdW5jdGlvbnMgYXJlIGFsbG93ZWQgYmV0d2VlbgorICAgICAgICAjIGZvcmsoKSBhbmQgZXhlYygpLgorICAgICAgICBhc3NlcnRfcHl0aG9uX29rKCItYyIsICIiImlmIFRydWU6CisgICAgICAgICAgICBpbXBvcnQgb3MsIHRocmVhZGluZywgc3lzLCB0aW1lLCBzaWduYWwKKworICAgICAgICAgICAgIyB0aGUgZGVmYXVsdCBoYW5kbGVyIHRlcm1pbmF0ZXMgdGhlIHByb2Nlc3MKKyAgICAgICAgICAgIHNpZ251bSA9IHNpZ25hbC5TSUdVU1IxCisKKyAgICAgICAgICAgIGRlZiBraWxsX2xhdGVyKCk6CisgICAgICAgICAgICAgICAgIyB3YWl0IHVudGlsIHRoZSBtYWluIHRocmVhZCBpcyB3YWl0aW5nIGluIHNpZ3dhaXQoKQorICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKyAgICAgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisKKyAgICAgICAgICAgICMgdGhlIHNpZ25hbCBtdXN0IGJlIGJsb2NrZWQgYnkgYWxsIHRoZSB0aHJlYWRzCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAgICAga2lsbGVyID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9a2lsbF9sYXRlcikKKyAgICAgICAgICAgIGtpbGxlci5zdGFydCgpCisgICAgICAgICAgICByZWNlaXZlZCA9IHNpZ25hbC5zaWd3YWl0KFtzaWdudW1dKQorICAgICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gc2lnbnVtOgorICAgICAgICAgICAgICAgIHByaW50KCJzaWd3YWl0KCkgcmVjZWl2ZWQgJXMsIG5vdCAlcyIgJSAocmVjZWl2ZWQsIHNpZ251bSksCisgICAgICAgICAgICAgICAgICAgICAgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICAgICBraWxsZXIuam9pbigpCisgICAgICAgICAgICAjIHVuYmxvY2sgdGhlIHNpZ25hbCwgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBjbGVhcmVkIGJ5IHNpZ3dhaXQoKQorICAgICAgICAgICAgc2lnbmFsLnB0aHJlYWRfc2lnbWFzayhzaWduYWwuU0lHX1VOQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICAiIiIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9zaWdtYXNrX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzaWduYWwucHRocmVhZF9zaWdtYXNrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2ssIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaywgMSwgMiwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc2lnbmFsLnB0aHJlYWRfc2lnbWFzaywgMTcwMCwgW10pCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfc2lnbWFzaycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9zaWdtYXNrKHNlbGYpOgorICAgICAgICBjb2RlID0gIiIiaWYgMToKKyAgICAgICAgaW1wb3J0IHNpZ25hbAorICAgICAgICBpbXBvcnQgb3M7IGltcG9ydCB0aHJlYWRpbmcKKworICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKKyAgICAgICAgICAgIDEvMAorCisgICAgICAgIGRlZiBraWxsKHNpZ251bSk6CisgICAgICAgICAgICBvcy5raWxsKG9zLmdldHBpZCgpLCBzaWdudW0pCisKKyAgICAgICAgZGVmIHJlYWRfc2lnbWFzaygpOgorICAgICAgICAgICAgcmV0dXJuIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soc2lnbmFsLlNJR19CTE9DSywgW10pCisKKyAgICAgICAgc2lnbnVtID0gc2lnbmFsLlNJR1VTUjEKKworICAgICAgICAjIEluc3RhbGwgb3VyIHNpZ25hbCBoYW5kbGVyCisgICAgICAgIG9sZF9oYW5kbGVyID0gc2lnbmFsLnNpZ25hbChzaWdudW0sIGhhbmRsZXIpCisKKyAgICAgICAgIyBVbmJsb2NrIFNJR1VTUjEgKGFuZCBjb3B5IHRoZSBvbGQgbWFzaykgdG8gdGVzdCBvdXIgc2lnbmFsIGhhbmRsZXIKKyAgICAgICAgb2xkX21hc2sgPSBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGtpbGwoc2lnbnVtKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorCisgICAgICAgICMgQmxvY2sgYW5kIHRoZW4gcmFpc2UgU0lHVVNSMS4gVGhlIHNpZ25hbCBpcyBibG9ja2VkOiB0aGUgc2lnbmFsCisgICAgICAgICMgaGFuZGxlciBpcyBub3QgY2FsbGVkLCBhbmQgdGhlIHNpZ25hbCBpcyBub3cgcGVuZGluZworICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfQkxPQ0ssIFtzaWdudW1dKQorICAgICAgICBraWxsKHNpZ251bSkKKworICAgICAgICAjIENoZWNrIHRoZSBuZXcgbWFzaworICAgICAgICBibG9ja2VkID0gcmVhZF9zaWdtYXNrKCkKKyAgICAgICAgaWYgc2lnbnVtIG5vdCBpbiBibG9ja2VkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCIlcyBub3QgaW4gJXMiICUgKHNpZ251bSwgYmxvY2tlZCkpCisgICAgICAgIGlmIG9sZF9tYXNrIF4gYmxvY2tlZCAhPSB7c2lnbnVtfToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiJXMgXiAlcyAhPSB7JXN9IiAlIChvbGRfbWFzaywgYmxvY2tlZCwgc2lnbnVtKSkKKworICAgICAgICAjIFVuYmxvY2sgU0lHVVNSMQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHVuYmxvY2sgdGhlIHBlbmRpbmcgc2lnbmFsIGNhbGxzIGltbWVkaWF0bHkgdGhlIHNpZ25hbCBoYW5kbGVyCisgICAgICAgICAgICBzaWduYWwucHRocmVhZF9zaWdtYXNrKHNpZ25hbC5TSUdfVU5CTE9DSywgW3NpZ251bV0pCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiWmVyb0RpdmlzaW9uRXJyb3Igbm90IHJhaXNlZCIpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGtpbGwoc2lnbnVtKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIlplcm9EaXZpc2lvbkVycm9yIG5vdCByYWlzZWQiKQorCisgICAgICAgICMgQ2hlY2sgdGhlIG5ldyBtYXNrCisgICAgICAgIHVuYmxvY2tlZCA9IHJlYWRfc2lnbWFzaygpCisgICAgICAgIGlmIHNpZ251bSBpbiB1bmJsb2NrZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIGluICVzIiAlIChzaWdudW0sIHVuYmxvY2tlZCkpCisgICAgICAgIGlmIGJsb2NrZWQgXiB1bmJsb2NrZWQgIT0ge3NpZ251bX06CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzIF4gJXMgIT0geyVzfSIgJSAoYmxvY2tlZCwgdW5ibG9ja2VkLCBzaWdudW0pKQorICAgICAgICBpZiBvbGRfbWFzayAhPSB1bmJsb2NrZWQ6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIiVzICE9ICVzIiAlIChvbGRfbWFzaywgdW5ibG9ja2VkKSkKKyAgICAgICAgIiIiCisgICAgICAgIGFzc2VydF9weXRob25fb2soJy1jJywgY29kZSkKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICdmcmVlYnNkNicsCisgICAgICAgICJpc3N1ZSAjMTIzOTI6IHNlbmQgYSBzaWduYWwgdG8gdGhlIG1haW4gdGhyZWFkIGRvZXNuJ3Qgd29yayAiCisgICAgICAgICJiZWZvcmUgdGhlIGNyZWF0aW9uIG9mIHRoZSBmaXJzdCB0aHJlYWQgb24gRnJlZUJTRCA2IikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgJ3B0aHJlYWRfa2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHNpZ25hbC5wdGhyZWFkX2tpbGwoKScpCisgICAgZGVmIHRlc3RfcHRocmVhZF9raWxsX21haW5fdGhyZWFkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBhIHNpZ25hbCBjYW4gYmUgc2VudCB0byB0aGUgbWFpbiB0aHJlYWQgd2l0aCBwdGhyZWFkX2tpbGwoKQorICAgICAgICAjIGJlZm9yZSBhbnkgb3RoZXIgdGhyZWFkIGhhcyBiZWVuIGNyZWF0ZWQgKHNlZSBpc3N1ZSAjMTIzOTIpLgorICAgICAgICBjb2RlID0gIiIiaWYgVHJ1ZToKKyAgICAgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgICAgIGltcG9ydCBzaWduYWwKKyAgICAgICAgICAgIGltcG9ydCBzeXMKKworICAgICAgICAgICAgZGVmIGhhbmRsZXIoc2lnbnVtLCBmcmFtZSk6CisgICAgICAgICAgICAgICAgc3lzLmV4aXQoMykKKworICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVVNSMSwgaGFuZGxlcikKKyAgICAgICAgICAgIHNpZ25hbC5wdGhyZWFkX2tpbGwodGhyZWFkaW5nLmdldF9pZGVudCgpLCBzaWduYWwuU0lHVVNSMSkKKyAgICAgICAgICAgIHN5cy5leGl0KDIpCisgICAgICAgICIiIgorCisgICAgICAgIHdpdGggc3Bhd25fcHl0aG9uKCctYycsIGNvZGUpIGFzIHByb2Nlc3M6CisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgaWYgZXhpdGNvZGUgIT0gMzoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkNoaWxkIGVycm9yIChleGl0IGNvZGUgJXMpOiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhpdGNvZGUsIHN0ZG91dCkpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRyeToKLSAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmFzaWNTaWduYWxUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCisgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFBvc2l4VGVzdHMsIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWtldXBTaWduYWxUZXN0cywgU2lnaW50ZXJydXB0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRpbWVyVGVzdCwgV2luZG93c1NpZ25hbFRlc3RzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGltZXJUZXN0LCBXaW5kb3dzU2lnbmFsVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdTaWduYWxzVGVzdHMpCiAgICAgZmluYWxseToKICAgICAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGJhNDI2NDkuLjI5Mjg2YzcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTM5LDYgKzM5LDcgQEAKICAgICAgICAgc2VsZi5vbGRfYmFzZSA9IHNpdGUuVVNFUl9CQVNFCiAgICAgICAgIHNlbGYub2xkX3NpdGUgPSBzaXRlLlVTRVJfU0lURQogICAgICAgICBzZWxmLm9sZF9wcmVmaXhlcyA9IHNpdGUuUFJFRklYRVMKKyAgICAgICAgc2VsZi5vcmlnaW5hbF92YXJzID0gc3lzY29uZmlnLl9DT05GSUdfVkFSUwogICAgICAgICBzZWxmLm9sZF92YXJzID0gY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtNDcsNyArNDgsOSBAQAogICAgICAgICBzaXRlLlVTRVJfQkFTRSA9IHNlbGYub2xkX2Jhc2UKICAgICAgICAgc2l0ZS5VU0VSX1NJVEUgPSBzZWxmLm9sZF9zaXRlCiAgICAgICAgIHNpdGUuUFJFRklYRVMgPSBzZWxmLm9sZF9wcmVmaXhlcwotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5vbGRfdmFycworICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5vcmlnaW5hbF92YXJzCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMuY2xlYXIoKQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTLnVwZGF0ZShzZWxmLm9sZF92YXJzKQogCiAgICAgZGVmIHRlc3RfbWFrZXBhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCBtYWtlcGF0aCgpIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgaXRzIGZpcnN0IHJldHVybiB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKaW5kZXggNjhjY2MyOS4uOTNmMTRjNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CkBAIC0xLDQgKzEsNCBAQAotZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKK2ltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBtb2NrX3NvY2tldAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGlvCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgIHJhaXNlIER1bW15RGlzcGF0Y2hlckJyb2tlbigpCiAKIAotY2xhc3MgU01UUERTZXJ2ZXJUZXN0KFRlc3RDYXNlKToKK2NsYXNzIFNNVFBEU2VydmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogCkBAIC0zOSw2ICszOSw3IEBACiAgICAgICAgICAgICBjaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCiAgICAgICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKIAorICAgICAgICB3cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgd3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCkBAIC00OSw3ICs1MCw3IEBACiAgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAogCiAKLWNsYXNzIFNNVFBEQ2hhbm5lbFRlc3QoVGVzdENhc2UpOgorY2xhc3MgU01UUERDaGFubmVsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCkBAIC03OCwzMSArNzksOTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGJhZCBzeW50YXhcclxuJykKIAotICAgIGRlZiB0ZXN0X0VITE9fbm90X2ltcGxlbWVudGVkKHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIHRlc3QuZXhhbXBsZScpCisgICAgZGVmIHRlc3RfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIEhFTFBcclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fYmFkX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAyIEVycm9yOiBjb21tYW5kICJFSExPIiBub3QgaW1wbGVtZW50ZWRcclxuJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IEVITE8gaG9zdG5hbWVcclxuJykKKworICAgIGRlZiB0ZXN0X0VITE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCisKKyAgICBkZWYgdGVzdF9FSExPX0hFTE9fZHVwbGljYXRlKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBEdXBsaWNhdGUgSEVMTy9FSExPXHJcbicpCiAKICAgICBkZWYgdGVzdF9IRUxPKHNlbGYpOgogICAgICAgICBuYW1lID0gc210cGQuc29ja2V0LmdldGZxZG4oKQotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICcyNTAge31cclxuJy5mb3JtYXQobmFtZSkuZW5jb2RlKCdhc2NpaScpKQogCisgICAgZGVmIHRlc3RfSEVMT19FSExPX2R1cGxpY2F0ZShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDMgRHVwbGljYXRlIEhFTE8vRUhMT1xyXG4nKQorCisgICAgZGVmIHRlc3RfSEVMUChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMUCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFN1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgUkNQVCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGInREFUQSBSU0VUIE5PT1AgUVVJVCBWUkZZXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxQX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTFAgTUFJTCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInMjUwIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X0hFTFBfY29tbWFuZF91bmtub3duKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxQIFNQQU0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMSBTdXBwb3J0ZWQgY29tbWFuZHM6IEVITE8gSEVMTyBNQUlMIFJDUFQgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ0RBVEEgUlNFVCBOT09QIFFVSVQgVlJGWVxyXG4nKQorCiAgICAgZGVmIHRlc3RfSEVMT19iYWRfc3ludGF4KHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDEgU3ludGF4OiBIRUxPIGhvc3RuYW1lXHJcbicpCiAKICAgICBkZWYgdGVzdF9IRUxPX2R1cGxpY2F0ZShzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyB0ZXN0LmV4YW1wbGUnKQotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIHRlc3QuZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAzIER1cGxpY2F0ZSBIRUxPL0VITE9cclxuJykKIAorICAgIGRlZiB0ZXN0X0hFTE9fcGFyYW1ldGVyX3JlamVjdGVkX3doZW5fZXh0ZW5zaW9uc19ub3RfZW5hYmxlZChzZWxmKToKKyAgICAgICAgc2VsZi5leHRlbmRlZF9zbXRwID0gRmFsc2UKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjxmb29AZXhhbXBsZS5jb20+IFNJWkU9MTIzNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOiA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfYWxsb3dzX3NwYWNlX2FmdGVyX2NvbG9uKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICAgPGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzI1MCBPS1xyXG4nKQorCisgICAgZGVmIHRlc3RfZXh0ZW5kZWRfTUFJTF9hbGxvd3Nfc3BhY2VfYWZ0ZXJfY29sb24oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0VITE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTogICA8Zm9vQGV4YW1wbGUuY29tPiBzaXplPTIwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKwogICAgIGRlZiB0ZXN0X05PT1Aoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9IRUxPX05PT1Aoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ05PT1AnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKIAogICAgIGRlZiB0ZXN0X05PT1BfYmFkX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTk9PUCBoaScpCkBAIC0xMTMsMjYgKzE3Nyw0NyBAQAogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQogCisgICAgZGVmIHRlc3RfSEVMT19RVUlUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidRVUlUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQorCiAgICAgZGVmIHRlc3RfUVVJVF9hcmdfaWdub3JlZChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUVVJVCBieWUgYnllJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjIxIEJ5ZVxyXG4nKQogCiAgICAgZGVmIHRlc3RfYmFkX3N0YXRlKHNlbGYpOgogICAgICAgICBzZWxmLmNoYW5uZWwuc210cF9zdGF0ZSA9ICdCQUQgU1RBVEUnCi0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzQ1MSBJbnRlcm5hbCBjb25mdXNpb25cclxuJykKIAogICAgIGRlZiB0ZXN0X2NvbW1hbmRfdG9vX2xvbmcoc2VsZik6Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSAnICsKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAnICsKICAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiBzZWxmLmNoYW5uZWwuY29tbWFuZF9zaXplX2xpbWl0ICsKICAgICAgICAgICAgICAgICAgICAgICAgIGInQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogbGluZSB0b28gbG9uZ1xyXG4nKQogCi0gICAgZGVmIHRlc3RfZGF0YV90b29fbG9uZyhzZWxmKToKLSAgICAgICAgIyBTbWFsbCBoYWNrLiBTZXR0aW5nIGxpbWl0IHRvIDJLIG9jdGV0cyBoZXJlIHdpbGwgc2F2ZSB1cyBzb21lIHRpbWUuCi0gICAgICAgIHNlbGYuY2hhbm5lbC5kYXRhX3NpemVfbGltaXQgPSAyMDQ4CisgICAgZGVmIHRlc3RfTUFJTF9jb21tYW5kX2xpbWl0X2V4dGVuZGVkX3dpdGhfU0laRShzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgZmlsbF9sZW4gPSBzZWxmLmNoYW5uZWwuY29tbWFuZF9zaXplX2xpbWl0IC0gbGVuKCdNQUlMIGZyb206PEBleGFtcGxlPicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbTo8JyArCisgICAgICAgICAgICAgICAgICAgICAgICBiJ2EnICogZmlsbF9sZW4gKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOjwnICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGInYScgKiAoZmlsbF9sZW4gKyAyNikgKworICAgICAgICAgICAgICAgICAgICAgICAgYidAZXhhbXBsZT4gU0laRT0xMjM0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYic1MDAgRXJyb3I6IGxpbmUgdG9vIGxvbmdcclxuJykKKworICAgIGRlZiB0ZXN0X2RhdGFfbG9uZ2VyX3RoYW5fZGVmYXVsdF9kYXRhX3NpemVfbGltaXQoc2VsZik6CisgICAgICAgICMgSGFjayB0aGUgZGVmYXVsdCBzbyB3ZSBkb24ndCBoYXZlIHRvIGdlbmVyYXRlIHNvIG11Y2ggZGF0YS4KKyAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCkBAIC0xNDEsNjQgKzIyNiwxODMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYic1NTIgRXJyb3I6IFRvbyBtdWNoIG1haWwgZGF0YVxyXG4nKQogCisgICAgZGVmIHRlc3RfTUFJTF9zaXplX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9NTEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfaW52YWxpZF9zaXplX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9aW52YWxpZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX1JDUFRfdW5rbm93bl9wYXJhbWV0ZXJzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4gaGFtPWdyZWVuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzU1NSBNQUlMIEZST00gcGFyYW1ldGVycyBub3QgcmVjb2duaXplZCBvciBub3QgaW1wbGVtZW50ZWRcclxuJykKKworICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZST006PGVnZ3NAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRPOjxlZ2dzQGV4YW1wbGU+IGhhbT1ncmVlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTUgUkNQVCBUTyBwYXJhbWV0ZXJzIG5vdCByZWNvZ25pemVkIG9yIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHRlc3RfTUFJTF9zaXplX3BhcmFtZXRlcl9sYXJnZXJfdGhhbl9kZWZhdWx0X2RhdGFfc2l6ZV9saW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5jaGFubmVsLmRhdGFfc2l6ZV9saW1pdCA9IDEwNDgKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGUk9NOjxlZ2dzQGV4YW1wbGU+IFNJWkU9MjA5NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1NTIgRXJyb3I6IG1lc3NhZ2Ugc2l6ZSBleGNlZWRzIGZpeGVkIG1heGltdW0gbWVzc2FnZSBzaXplXHJcbicpCisKICAgICBkZWYgdGVzdF9uZWVkX01BSUwoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVlZCBNQUlMIGNvbW1hbmRcclxuJykKIAotICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4KHNlbGYpOgorICAgIGRlZiB0ZXN0X01BSUxfc3ludGF4X0hFTE8oc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgZnJvbSBlZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKLSAgICAgICAgICAgIGInNTAxIFN5bnRheDogTUFJTCBGUk9NOjxhZGRyZXNzPlxyXG4nKQorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPlxyXG4nKQogCi0gICAgZGVmIHRlc3RfTUFJTF9taXNzaW5nX2Zyb20oc2VsZik6CisgICAgZGVmIHRlc3RfTUFJTF9zeW50YXhfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006IDxhZGRyZXNzPiBbU1AgPG1haWwtcGFyYW1ldGVycz5dXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX21pc3NpbmdfYWRkcmVzcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAotICAgICAgICAgICAgYic1MDEgU3ludGF4OiBNQUlMIEZST006PGFkZHJlc3M+XHJcbicpCisgICAgICAgICAgICBiJzUwMSBTeW50YXg6IE1BSUwgRlJPTTogPGFkZHJlc3M+XHJcbicpCiAKICAgICBkZWYgdGVzdF9NQUlMX2NoZXZyb25zKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGVnZ3NAZXhhbXBsZT4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICBkZWYgdGVzdF9NQUlMX2VtcHR5X2NoZXZyb25zKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X01BSUxfcXVvdGVkX2xvY2FscGFydChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiA8IkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfbm9fYW5nbGVzKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ICJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfd2l0aF9zaXplKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFSExPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206IDwiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20+IFNJWkU9MTAwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5tYWlsZnJvbSwgJyJGcmVkIEJsb2dzIkBleGFtcGxlLmNvbScpCisKKyAgICBkZWYgdGVzdF9NQUlMX3F1b3RlZF9sb2NhbHBhcnRfd2l0aF9zaXplX25vX2FuZ2xlcyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOiAiRnJlZCBCbG9ncyJAZXhhbXBsZS5jb20gU0laRT0xMDAwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLm1haWxmcm9tLCAnIkZyZWQgQmxvZ3MiQGV4YW1wbGUuY29tJykKIAogICAgIGRlZiB0ZXN0X25lc3RlZF9NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBmcm9tOnNwYW1AZXhhbXBsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYic1MDMgRXJyb3I6IG5lc3RlZCBNQUlMIGNvbW1hbmRcclxuJykKIAorICAgIGRlZiB0ZXN0X1ZSRlkoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1ZSRlkgZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzI1MiBDYW5ub3QgVlJGWSB1c2VyLCBidXQgd2lsbCBhY2NlcHQgbWVzc2FnZSBhbmQgYXR0ZW1wdCAnICsgXAorICAgICAgICAgICAgYidkZWxpdmVyeVxyXG4nKQorCisgICAgZGVmIHRlc3RfVlJGWV9zeW50YXgoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1ZSRlknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInNTAxIFN5bnRheDogVlJGWSA8YWRkcmVzcz5cclxuJykKKworICAgIGRlZiB0ZXN0X0VYUE5fbm90X2ltcGxlbWVudGVkKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidFWFBOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCisgICAgICAgICAgICBiJzUwMiBFWFBOIG5vdCBpbXBsZW1lbnRlZFxyXG4nKQorCisgICAgZGVmIHRlc3Rfbm9fSEVMT19NQUlMKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIGZyb206PGZvb0BleGFtcGxlLmNvbT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9uZWVkX1JDUFQoc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMyBFcnJvcjogbmVlZCBSQ1BUIGNvbW1hbmRcclxuJykKIAotICAgIGRlZiB0ZXN0X1JDUFRfc3ludGF4KHNlbGYpOgotICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICBkZWYgdGVzdF9SQ1BUX3N5bnRheF9IRUxPKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206IGVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgdG8gZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsCiAgICAgICAgICAgICBiJzUwMSBTeW50YXg6IFJDUFQgVE86IDxhZGRyZXNzPlxyXG4nKQogCisgICAgZGVmIHRlc3RfUkNQVF9zeW50YXhfRUhMTyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInRUhMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOiBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIHRvIGVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYic1MDEgU3ludGF4OiBSQ1BUIFRPOiA8YWRkcmVzcz4gW1NQIDxtYWlsLXBhcmFtZXRlcnM+XVxyXG4nKQorCisgICAgZGVmIHRlc3RfUkNQVF9sb3dlcmNhc2VfdG9fT0soc2VsZik6CisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0hFTE8gZXhhbXBsZScpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ01BSUwgRnJvbTogZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0bzogPGVnZ3NAZXhhbXBsZT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKworICAgIGRlZiB0ZXN0X25vX0hFTE9fUkNQVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCB0byBlZ2dzQGV4YW1wbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9kYXRhX2RpYWxvZyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT2tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCiAKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAogICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidkYXRhXHJcbm1vcmVcclxuLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKICAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCiAKICAgICBkZWYgdGVzdF9EQVRBX3N5bnRheChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQSBzcGFtJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInNTAxIFN5bnRheDogREFUQVxyXG4nKQogCisgICAgZGVmIHRlc3Rfbm9fSEVMT19EQVRBKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBIHNwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMyBFcnJvcjogc2VuZCBIRUxPIGZpcnN0XHJcbicpCisKICAgICBkZWYgdGVzdF9kYXRhX3RyYW5zcGFyZW5jeV9zZWN0aW9uXzRfNV8yKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIwNiw2ICs0MTAsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5yZWNlaXZlZF9kYXRhLCAnLicpCiAKICAgICBkZWYgdGVzdF9tdWx0aXBsZV9SQ1BUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOmhhbUBleGFtcGxlJykKQEAgLTIxNiw2ICs0MjEsNyBAQAogCiAgICAgZGVmIHRlc3RfbWFudWFsX3N0YXR1cyhzZWxmKToKICAgICAgICAgIyBjaGVja3MgdGhhdCB0aGUgQ2hhbm5lbCBpcyBhYmxlIHRvIHJldHVybiBhIGN1c3RvbSBzdGF0dXMgbWVzc2FnZQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzpzcGFtQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIyMywxMCArNDI5LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa2lzaFxyXG4nKQogCiAgICAgZGVmIHRlc3RfUlNFVChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCiAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPa1xyXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmZvb0BleGFtcGxlJykKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUkNQVCBUbzplZ2dzQGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidEQVRBJykKQEAgLTIzNCw1OCArNDQxLDExNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyLm1lc3NhZ2VzLAogICAgICAgICAgICAgWygncGVlcicsICdmb29AZXhhbXBsZScsIFsnZWdnc0BleGFtcGxlJ10sICdkYXRhJyldKQogCisgICAgZGVmIHRlc3RfSEVMT19SU0VUKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSU0VUJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKICAgICBkZWYgdGVzdF9SU0VUX3N5bnRheChzZWxmKToKICAgICAgICAgc2VsZi53cml0ZV9saW5lKGInUlNFVCBoaScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzUwMSBTeW50YXg6IFJTRVRcclxuJykKIAorICAgIGRlZiB0ZXN0X3Vua25vd25fY29tbWFuZChzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInVU5LTk9XTl9DTUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzUwMCBFcnJvcjogY29tbWFuZCAiVU5LTk9XTl9DTUQiIG5vdCAnICsgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGIncmVjb2duaXplZFxyXG4nKQorCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlX2RlcHJlY2F0aW9ucyhzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zZXJ2ZXIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX3NlcnZlciA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2xpbmUKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2xpbmUgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19zdGF0ZQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fc3RhdGUgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19ncmVldGluZwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZ3JlZXRpbmcgPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19tYWlsZnJvbQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fbWFpbGZyb20gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19yY3B0dG9zCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19yY3B0dG9zID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZGF0YQotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fZGF0YSA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2ZxZG4KLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2ZxZG4gPSAnc3BhbScKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNwYW0gPSBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19wZWVyCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzZWxmLmNoYW5uZWwuX1NNVFBDaGFubmVsX19wZWVyID0gJ3NwYW0nCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CiAgICAgICAgICAgICBzcGFtID0gc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fY29ubgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fY29ubiA9ICdzcGFtJwotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc3BhbSA9IHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbC5fU01UUENoYW5uZWxfX2FkZHIgPSAnc3BhbScKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFNNVFBEU2VydmVyVGVzdCwgU01UUERDaGFubmVsVGVzdCkKKworY2xhc3MgU01UUERDaGFubmVsV2l0aERhdGFTaXplTGltaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc210cGQuc29ja2V0ID0gYXN5bmNvcmUuc29ja2V0ID0gbW9ja19zb2NrZXQKKyAgICAgICAgc2VsZi5vbGRfZGVidWdzdHJlYW0gPSBzbXRwZC5ERUJVR1NUUkVBTQorICAgICAgICBzZWxmLmRlYnVnID0gc210cGQuREVCVUdTVFJFQU0gPSBpby5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoJ2EnLCAnYicpCisgICAgICAgIGNvbm4sIGFkZHIgPSBzZWxmLnNlcnZlci5hY2NlcHQoKQorICAgICAgICAjIFNldCBEQVRBIHNpemUgbGltaXQgdG8gMzIgYnl0ZXMgZm9yIGVhc3kgdGVzdGluZworICAgICAgICBzZWxmLmNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZWxmLnNlcnZlciwgY29ubiwgYWRkciwgMzIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbCgpCisgICAgICAgIGFzeW5jb3JlLnNvY2tldCA9IHNtdHBkLnNvY2tldCA9IHNvY2tldAorICAgICAgICBzbXRwZC5ERUJVR1NUUkVBTSA9IHNlbGYub2xkX2RlYnVnc3RyZWFtCisKKyAgICBkZWYgd3JpdGVfbGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgc2VsZi5jaGFubmVsLnNvY2tldC5xdWV1ZV9yZWN2KGxpbmUpCisgICAgICAgIHNlbGYuY2hhbm5lbC5oYW5kbGVfcmVhZCgpCisKKyAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZyhzZWxmKToKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInSEVMTyBleGFtcGxlJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInTUFJTCBGcm9tOmVnZ3NAZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidSQ1BUIFRvOnNwYW1AZXhhbXBsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQorCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ0RBVEEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwKKyAgICAgICAgICAgIGInMzU0IEVuZCBkYXRhIHdpdGggPENSPjxMRj4uPENSPjxMRj5cclxuJykKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInZGF0YVxyXG5tb3JlXHJcbi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdCwgYicyNTAgT0tcclxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlci5tZXNzYWdlcywKKyAgICAgICAgICAgIFsoJ3BlZXInLCAnZWdnc0BleGFtcGxlJywgWydzcGFtQGV4YW1wbGUnXSwgJ2RhdGFcbm1vcmUnKV0pCisKKyAgICBkZWYgdGVzdF9kYXRhX2xpbWl0X2RpYWxvZ190b29fbXVjaF9kYXRhKHNlbGYpOgorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidIRUxPIGV4YW1wbGUnKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidNQUlMIEZyb206ZWdnc0BleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ1JDUFQgVG86c3BhbUBleGFtcGxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNoYW5uZWwuc29ja2V0Lmxhc3QsIGInMjUwIE9LXHJcbicpCisKKyAgICAgICAgc2VsZi53cml0ZV9saW5lKGInREFUQScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgYiczNTQgRW5kIGRhdGEgd2l0aCA8Q1I+PExGPi48Q1I+PExGPlxyXG4nKQorICAgICAgICBzZWxmLndyaXRlX2xpbmUoYidUaGlzIG1lc3NhZ2UgaXMgbG9uZ2VyIHRoYW4gMzIgYnl0ZXNcclxuLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jaGFubmVsLnNvY2tldC5sYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGInNTUyIEVycm9yOiBUb28gbXVjaCBtYWlsIGRhdGFcclxuJykKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRlc3RfbWFpbigpCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKaW5kZXggMmNiMGQxYS4uYmVmYzQ5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQpAQCAtOSw2ICs5LDcgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgZXJybm8KIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIG1vY2tfc29ja2V0CkBAIC03Miw2ICs3MywxNCBAQAogICAgICAgICBzbXRwID0gc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgc210cC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdFNvdXJjZUFkZHJlc3Moc2VsZik6CisgICAgICAgIG1vY2tfc29ja2V0LnJlcGx5X3dpdGgoYiIyMjAgSG9sYSBtdW5kbyIpCisgICAgICAgICMgY29ubmVjdHMKKyAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsCisgICAgICAgICAgICAgICAgc291cmNlX2FkZHJlc3M9KCcxMjcuMC4wLjEnLDE5ODc2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnNvdXJjZV9hZGRyZXNzLCAoJzEyNy4wLjAuMScsIDE5ODc2KSkKKyAgICAgICAgc210cC5jbG9zZSgpCisKICAgICBkZWYgdGVzdEJhc2ljMihzZWxmKToKICAgICAgICAgbW9ja19zb2NrZXQucmVwbHlfd2l0aChiIjIyMCBIb2xhIG11bmRvIikKICAgICAgICAgIyBjb25uZWN0cywgaW5jbHVkZSBwb3J0IGluIGhvc3QgbmFtZQpAQCAtMjA0LDE1ICsyMTMsMjkgQEAKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKKyAgICBkZWYgdGVzdFNvdXJjZUFkZHJlc3Moc2VsZik6CisgICAgICAgICMgY29ubmVjdAorICAgICAgICBwb3J0ID0gc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMsIHNvdXJjZV9hZGRyZXNzPSgnMTI3LjAuMC4xJywgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuc291cmNlX2FkZHJlc3MsICgnMTI3LjAuMC4xJywgcG9ydCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubG9jYWxfaG9zdG5hbWUsICdsb2NhbGhvc3QnKQorICAgICAgICAgICAgc210cC5xdWl0KCkKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUFERFJJTlVTRToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjb3VsZG4ndCBiaW5kIHRvIHBvcnQgJWQiICUgcG9ydCkKKyAgICAgICAgICAgIHJhaXNlCisKICAgICBkZWYgdGVzdE5PT1Aoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT2snKQorICAgICAgICBleHBlY3RlZCA9ICgyNTAsIGInT0snKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAubm9vcCgpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIAogICAgIGRlZiB0ZXN0UlNFVChzZWxmKToKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPaycpCisgICAgICAgIGV4cGVjdGVkID0gKDI1MCwgYidPSycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc210cC5yc2V0KCksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQogCkBAIC0yMjMsMTAgKzI0NiwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZWhsbygpLCBleHBlY3RlZCkKICAgICAgICAgc210cC5xdWl0KCkKIAotICAgIGRlZiB0ZXN0VlJGWShzZWxmKToKLSAgICAgICAgIyBWUkZZIGlzbid0IGltcGxlbWVudGVkIGluIERlYnVnZ2luZ1NlcnZlcgorICAgIGRlZiB0ZXN0Tm90SW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgICMgRVhQTiBpc24ndCBpbXBsZW1lbnRlZCBpbiBEZWJ1Z2dpbmdTZXJ2ZXIKICAgICAgICAgc210cCA9IHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQsIGxvY2FsX2hvc3RuYW1lPSdsb2NhbGhvc3QnLCB0aW1lb3V0PTMpCi0gICAgICAgIGV4cGVjdGVkID0gKDUwMiwgYidFcnJvcjogY29tbWFuZCAiVlJGWSIgbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgZXhwZWN0ZWQgPSAoNTAyLCBiJ0VYUE4gbm90IGltcGxlbWVudGVkJykKKyAgICAgICAgc210cC5wdXRjbWQoJ0VYUE4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuZ2V0cmVwbHkoKSwgZXhwZWN0ZWQpCisgICAgICAgIHNtdHAucXVpdCgpCisKKyAgICBkZWYgdGVzdFZSRlkoc2VsZik6CisgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQorICAgICAgICBleHBlY3RlZCA9ICgyNTIsIGInQ2Fubm90IFZSRlkgdXNlciwgYnV0IHdpbGwgYWNjZXB0IG1lc3NhZ2UgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FuZCBhdHRlbXB0IGRlbGl2ZXJ5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZyZnkoJ25vYm9keUBub3doZXJlLmNvbScpLCBleHBlY3RlZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbXRwLnZlcmlmeSgnbm9ib2R5QG5vd2hlcmUuY29tJyksIGV4cGVjdGVkKQogICAgICAgICBzbXRwLnF1aXQoKQpAQCAtMjQyLDcgKzI3Myw4IEBACiAKICAgICBkZWYgdGVzdEhFTFAoc2VsZik6CiAgICAgICAgIHNtdHAgPSBzbXRwbGliLlNNVFAoSE9TVCwgc2VsZi5wb3J0LCBsb2NhbF9ob3N0bmFtZT0nbG9jYWxob3N0JywgdGltZW91dD0zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuaGVscCgpLCBiJ0Vycm9yOiBjb21tYW5kICJIRUxQIiBub3QgaW1wbGVtZW50ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNtdHAuaGVscCgpLCBiJ1N1cHBvcnRlZCBjb21tYW5kczogRUhMTyBIRUxPIE1BSUwgJyArIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYidSQ1BUIERBVEEgUlNFVCBOT09QIFFVSVQgVlJGWScpCiAgICAgICAgIHNtdHAucXVpdCgpCiAKICAgICBkZWYgdGVzdFNlbmQoc2VsZik6CkBAIC01NjAsNiArNTkyLDkgQEAKICMgU2ltdWxhdGVkIFNNVFAgY2hhbm5lbCAmIHNlcnZlcgogY2xhc3MgU2ltU01UUENoYW5uZWwoc210cGQuU01UUENoYW5uZWwpOgogCisgICAgIyBGb3IgdGVzdGluZyBmYWlsdXJlcyBpbiBRVUlUIHdoZW4gdXNpbmcgdGhlIGNvbnRleHQgbWFuYWdlciBBUEkuCisgICAgcXVpdF9yZXNwb25zZSA9IE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHRyYV9mZWF0dXJlcywgKmFyZ3MsICoqa3cpOgogICAgICAgICBzZWxmLl9leHRyYWZlYXR1cmVzID0gJycuam9pbigKICAgICAgICAgICAgIFsgIjI1MC17MH1cclxuIi5mb3JtYXQoeCkgZm9yIHggaW4gZXh0cmFfZmVhdHVyZXMgXSkKQEAgLTYxMCwxOSArNjQ1LDMxIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnB1c2goJzU1MCBObyBhY2Nlc3MgZm9yIHlvdSEnKQogCisgICAgZGVmIHNtdHBfUVVJVChzZWxmLCBhcmcpOgorICAgICAgICAjIGFyZ3MgaXMgaWdub3JlZAorICAgICAgICBpZiBzZWxmLnF1aXRfcmVzcG9uc2UgaXMgTm9uZToKKyAgICAgICAgICAgIHN1cGVyKFNpbVNNVFBDaGFubmVsLCBzZWxmKS5zbXRwX1FVSVQoYXJnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wdXNoKHNlbGYucXVpdF9yZXNwb25zZSkKKyAgICAgICAgICAgIHNlbGYuY2xvc2Vfd2hlbl9kb25lKCkKKwogICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZik6CiAgICAgICAgIHJhaXNlCiAKIAogY2xhc3MgU2ltU01UUFNlcnZlcihzbXRwZC5TTVRQU2VydmVyKToKIAorICAgICMgRm9yIHRlc3RpbmcgZmFpbHVyZXMgaW4gUVVJVCB3aGVuIHVzaW5nIHRoZSBjb250ZXh0IG1hbmFnZXIgQVBJLgorICAgIHF1aXRfcmVzcG9uc2UgPSBOb25lCisKICAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgogICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcyA9IFtdCiAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpCiAKICAgICBkZWYgaGFuZGxlX2FjY2VwdGVkKHNlbGYsIGNvbm4sIGFkZHIpOgotICAgICAgICBzZWxmLl9TTVRQY2hhbm5lbCA9IFNpbVNNVFBDaGFubmVsKHNlbGYuX2V4dHJhX2ZlYXR1cmVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIGNvbm4sIGFkZHIpCisgICAgICAgIHNlbGYuX1NNVFBjaGFubmVsID0gU2ltU01UUENoYW5uZWwoCisgICAgICAgICAgICBzZWxmLl9leHRyYV9mZWF0dXJlcywgc2VsZiwgY29ubiwgYWRkcikKKyAgICAgICAgc2VsZi5fU01UUGNoYW5uZWwucXVpdF9yZXNwb25zZSA9IHNlbGYucXVpdF9yZXNwb25zZQogCiAgICAgZGVmIHByb2Nlc3NfbWVzc2FnZShzZWxmLCBwZWVyLCBtYWlsZnJvbSwgcmNwdHRvcywgZGF0YSk6CiAgICAgICAgIHBhc3MKQEAgLTc1Miw2ICs3OTksMjUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2ltX2F1dGhfY3JlZGVudGlhbHNbJ2NyYW0tbWQ1J10sIHN0cihlcnIpKQogICAgICAgICBzbXRwLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICBjb2RlLCBtZXNzYWdlID0gc210cC5ub29wKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZSwgMjUwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzbXRwbGliLlNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQsIHNtdHAuc2VuZCwgYidmb28nKQorICAgICAgICB3aXRoIHNtdHBsaWIuU01UUChIT1NULCBzZWxmLnBvcnQpIGFzIHNtdHA6CisgICAgICAgICAgICBzbXRwLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc210cGxpYi5TTVRQU2VydmVyRGlzY29ubmVjdGVkLCBzbXRwLnNlbmQsIGInZm9vJykKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X1FVSVRfZmFpbHVyZShzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2LnF1aXRfcmVzcG9uc2UgPSAnNDIxIFFVSVQgRkFJTEVEJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNtdHBsaWIuU01UUFJlc3BvbnNlRXhjZXB0aW9uKSBhcyBlcnJvcjoKKyAgICAgICAgICAgIHdpdGggc210cGxpYi5TTVRQKEhPU1QsIHNlbGYucG9ydCkgYXMgc210cDoKKyAgICAgICAgICAgICAgICBzbXRwLm5vb3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm9yLmV4Y2VwdGlvbi5zbXRwX2NvZGUsIDQyMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvci5leGNlcHRpb24uc210cF9lcnJvciwgYidRVUlUIEZBSUxFRCcpCisgICAgICAgICMgV2UgZG9uJ3QgbmVlZCB0byBjbGVhbiB1cCBzZWxmLnNlcnYucXVpdF9yZXNwb25zZSBiZWNhdXNlIGEgbmV3CisgICAgICAgICMgc2VydmVyIGlzIGFsd2F5cyBpbnN0YW50aWF0ZWQgaW4gdGhlIHNldFVwKCkuCisKICAgICAjVE9ETzogYWRkIHRlc3RzIGZvciBjb3JyZWN0IEFVVEggbWV0aG9kIGZhbGxiYWNrIG5vdyB0aGF0IHRoZQogICAgICN0ZXN0IGluZnJhc3RydWN0dXJlIGNhbiBzdXBwb3J0IGl0LgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NtdHBuZXQucHkKaW5kZXggMDE5OGFiNi4uODYyMjRlZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc210cG5ldC5weQpAQCAtNCwyOCArNCw2MCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc210cGxpYgogCitzc2wgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoInNzbCIpCisKIHN1cHBvcnQucmVxdWlyZXMoIm5ldHdvcmsiKQogCisKK2NsYXNzIFNtdHBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB0ZXN0U2VydmVyID0gJ3NtdHAuZ21haWwuY29tJworICAgIHJlbW90ZVBvcnQgPSAyNQorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorCisgICAgZGVmIHRlc3RfY29ubmVjdF9zdGFydHRscyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuc3RhcnR0bHMoY29udGV4dD1zZWxmLmNvbnRleHQpCisgICAgICAgICAgICBleGNlcHQgc210cGxpYi5TTVRQRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdID09ICdTVEFSVFRMUyBleHRlbnNpb24gbm90IHN1cHBvcnRlZCBieSBzZXJ2ZXIuJzoKKyAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3Quc2tpcChlLmFyZ3NbMF0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKworCiBjbGFzcyBTbXRwU1NMVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgdGVzdFNlcnZlciA9ICdzbXRwLmdtYWlsLmNvbScKICAgICByZW1vdGVQb3J0ID0gNDY1CisgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgogICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoc210cGxpYiwgJ1NNVFBfU1NMJykKICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChzZWxmLnRlc3RTZXJ2ZXIpOgogICAgICAgICAgICAgc2VydmVyID0gc210cGxpYi5TTVRQX1NTTChzZWxmLnRlc3RTZXJ2ZXIsIHNlbGYucmVtb3RlUG9ydCkKLSAgICAgICAgc2VydmVyLmVobG8oKQotICAgICAgICBzZXJ2ZXIucXVpdCgpCisgICAgICAgICAgICBzZXJ2ZXIuZWhsbygpCisgICAgICAgICAgICBzZXJ2ZXIucXVpdCgpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0X2RlZmF1bHRfcG9ydChzZWxmKToKICAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCiAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKICAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyKQotICAgICAgICBzZXJ2ZXIuZWhsbygpCi0gICAgICAgIHNlcnZlci5xdWl0KCkKKyAgICAgICAgICAgIHNlcnZlci5laGxvKCkKKyAgICAgICAgICAgIHNlcnZlci5xdWl0KCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3RfdXNpbmdfc3NsY29udGV4dChzZWxmKToKKyAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNtdHBsaWIsICdTTVRQX1NTTCcpCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoc2VsZi50ZXN0U2VydmVyKToKKyAgICAgICAgICAgIHNlcnZlciA9IHNtdHBsaWIuU01UUF9TU0woc2VsZi50ZXN0U2VydmVyLCBzZWxmLnJlbW90ZVBvcnQsIGNvbnRleHQ9c2VsZi5jb250ZXh0KQorICAgICAgICAgICAgc2VydmVyLmVobG8oKQorICAgICAgICAgICAgc2VydmVyLnF1aXQoKQorCiAKIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwU1NMVGVzdCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChTbXRwVGVzdCwgU210cFNTTFRlc3QpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKaW5kZXggZTQwYjIxZS4uY2IxMDkyMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkKQEAgLTIsMTEgKzIsMTQgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdW5pdHRlc3QuY2FzZSBpbXBvcnQgX0V4cGVjdGVkRmFpbHVyZQogCiBpbXBvcnQgZXJybm8KIGltcG9ydCBpbwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHNlbGVjdAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgX3Rlc3RjYXBpCiBpbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHF1ZXVlCkBAIC0xOCwzNCArMjEsMTkgQEAKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIGltcG9ydCBzaWduYWwKIGltcG9ydCBtYXRoCitpbXBvcnQgcGlja2xlCitpbXBvcnQgc3RydWN0CiB0cnk6CiAgICAgaW1wb3J0IGZjbnRsCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBGYWxzZQotCi1kZWYgdHJ5X2FkZHJlc3MoaG9zdCwgcG9ydD0wLCBmYW1pbHk9c29ja2V0LkFGX0lORVQpOgotICAgICIiIlRyeSB0byBiaW5kIGEgc29ja2V0IG9uIHRoZSBnaXZlbiBob3N0OnBvcnQgYW5kIHJldHVybiBUcnVlCi0gICAgaWYgdGhhdCBoYXMgYmVlbiBwb3NzaWJsZS4iIiIKLSAgICB0cnk6Ci0gICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNKQotICAgICAgICBzb2NrLmJpbmQoKGhvc3QsIHBvcnQpKQotICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBzb2NrZXQuZ2FpZXJyb3IpOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBzb2NrLmNsb3NlKCkKLSAgICAgICAgcmV0dXJuIFRydWUKLQotZGVmIGxpbnV4X3ZlcnNpb24oKToKLSAgICB0cnk6Ci0gICAgICAgICMgcGxhdGZvcm0ucmVsZWFzZSgpIGlzIHNvbWV0aGluZyBsaWtlICcyLjYuMzMuNy1kZXNrdG9wLTJtbmInCi0gICAgICAgIHZlcnNpb25fc3RyaW5nID0gcGxhdGZvcm0ucmVsZWFzZSgpLnNwbGl0KCctJylbMF0KLSAgICAgICAgcmV0dXJuIHR1cGxlKG1hcChpbnQsIHZlcnNpb25fc3RyaW5nLnNwbGl0KCcuJykpKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICByZXR1cm4gMCwgMCwgMAordHJ5OgorICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBtdWx0aXByb2Nlc3NpbmcgPSBGYWxzZQogCiBIT1NUID0gc3VwcG9ydC5IT1NUCi1NU0cgPSAnTWljaGFlbCBHaWxmaXggd2FzIGhlcmVcdTEyMzRcclxuJy5lbmNvZGUoJ3V0ZjgnKSAjIyB0ZXN0IHVuaWNvZGUgc3RyaW5nIGFuZCBjYXJyaWFnZSByZXR1cm4KLVNVUFBPUlRTX0lQVjYgPSBzb2NrZXQuaGFzX2lwdjYgYW5kIHRyeV9hZGRyZXNzKCc6OjEnLCBmYW1pbHk9c29ja2V0LkFGX0lORVQ2KQorTVNHID0gJ01pY2hhZWwgR2lsZml4IHdhcyBoZXJlXHUxMjM0XHJcbicuZW5jb2RlKCd1dGYtOCcpICMjIHRlc3QgdW5pY29kZSBzdHJpbmcgYW5kIGNhcnJpYWdlIHJldHVybgogCiB0cnk6CiAgICAgaW1wb3J0IF90aHJlYWQgYXMgdGhyZWFkCkBAIC01NCw2ICs0MiwzMyBAQAogICAgIHRocmVhZCA9IE5vbmUKICAgICB0aHJlYWRpbmcgPSBOb25lCiAKK2RlZiBfaGF2ZV9zb2NrZXRfY2FuKCk6CisgICAgIiIiQ2hlY2sgd2hldGhlciBDQU4gc29ja2V0cyBhcmUgc3VwcG9ydGVkIG9uIHRoaXMgaG9zdC4iIiIKKyAgICB0cnk6CisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgc29ja2V0LmVycm9yLCBPU0Vycm9yKToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZWxzZToKKyAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIFRydWUKKworZGVmIF9oYXZlX3NvY2tldF9yZHMoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIFJEUyBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQgb24gdGhpcyBob3N0LiIiIgorICAgIHRyeToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBlbHNlOgorICAgICAgICBzLmNsb3NlKCkKKyAgICByZXR1cm4gVHJ1ZQorCitIQVZFX1NPQ0tFVF9DQU4gPSBfaGF2ZV9zb2NrZXRfY2FuKCkKKworSEFWRV9TT0NLRVRfUkRTID0gX2hhdmVfc29ja2V0X3JkcygpCisKKyMgU2l6ZSBpbiBieXRlcyBvZiB0aGUgaW50IHR5cGUKK1NJWkVPRl9JTlQgPSBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplCisKIGNsYXNzIFNvY2tldFRDUFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNzUsNiArOTAsNjMgQEAKICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKICAgICAgICAgc2VsZi5zZXJ2ID0gTm9uZQogCitjbGFzcyBUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJTdWJjbGFzcyBvZiB1bml0dGVzdC5UZXN0Q2FzZSB3aXRoIHRocmVhZC1zYWZlIGNsZWFudXAgbWV0aG9kcy4KKworICAgIFRoaXMgc3ViY2xhc3MgcHJvdGVjdHMgdGhlIGFkZENsZWFudXAoKSBhbmQgZG9DbGVhbnVwcygpIG1ldGhvZHMKKyAgICB3aXRoIGEgcmVjdXJzaXZlIGxvY2suCisgICAgIiIiCisKKyAgICBpZiB0aHJlYWRpbmc6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgICAgICBzZWxmLl9jbGVhbnVwX2xvY2sgPSB0aHJlYWRpbmcuUkxvY2soKQorCisgICAgICAgIGRlZiBhZGRDbGVhbnVwKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuX2NsZWFudXBfbG9jazoKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5hZGRDbGVhbnVwKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICBkZWYgZG9DbGVhbnVwcyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgd2l0aCBzZWxmLl9jbGVhbnVwX2xvY2s6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZG9DbGVhbnVwcygqYXJncywgKiprd2FyZ3MpCisKK2NsYXNzIFNvY2tldENBTlRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVG8gYmUgYWJsZSB0byBydW4gdGhpcyB0ZXN0LCBhIGB2Y2FuMGAgQ0FOIGludGVyZmFjZSBjYW4gYmUgY3JlYXRlZCB3aXRoCisgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kczoKKyAgICAjIG1vZHByb2JlIHZjYW4KKyAgICAjIGlwIGxpbmsgYWRkIGRldiB2Y2FuMCB0eXBlIHZjYW4KKyAgICAjIGlmY29uZmlnIHZjYW4wIHVwCisgICAgIiIiCisgICAgaW50ZXJmYWNlID0gJ3ZjYW4wJworICAgIGJ1ZnNpemUgPSAxMjgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zLmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnMuYmluZCgoc2VsZi5pbnRlcmZhY2UsKSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ25ldHdvcmsgaW50ZXJmYWNlIGAlc2AgZG9lcyBub3QgZXhpc3QnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW50ZXJmYWNlKQorCisKK2NsYXNzIFNvY2tldFJEU1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVG8gYmUgYWJsZSB0byBydW4gdGhpcyB0ZXN0LCB0aGUgYHJkc2Aga2VybmVsIG1vZHVsZSBtdXN0IGJlIGxvYWRlZDoKKyAgICAjIG1vZHByb2JlIHJkcworICAgICIiIgorICAgIGJ1ZnNpemUgPSA4MTkyCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX1JEUywgc29ja2V0LlNPQ0tfU0VRUEFDS0VULCAwKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2LmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNlcnYpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndW5hYmxlIHRvIGJpbmQgUkRTIHNvY2tldCcpCisKKwogY2xhc3MgVGhyZWFkYWJsZVRlc3Q6CiAgICAgIiIiVGhyZWFkYWJsZSBUZXN0IGNsYXNzCiAKQEAgLTEzMiw2ICsyMDQsNyBAQAogICAgICAgICBzZWxmLmNsaWVudF9yZWFkeSA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYuZG9uZSA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZS5RdWV1ZSgxKQorICAgICAgICBzZWxmLnNlcnZlcl9jcmFzaGVkID0gRmFsc2UKIAogICAgICAgICAjIERvIHNvbWUgbXVuZ2luZyB0byBzdGFydCB0aGUgY2xpZW50IHRlc3QuCiAgICAgICAgIG1ldGhvZG5hbWUgPSBzZWxmLmlkKCkKQEAgLTE0MSw4ICsyMTQsMTIgQEAKICAgICAgICAgc2VsZi5jbGllbnRfdGhyZWFkID0gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoCiAgICAgICAgICAgICBzZWxmLmNsaWVudFJ1biwgKHRlc3RfbWV0aG9kLCkpCiAKLSAgICAgICAgc2VsZi5fX3NldFVwKCkKLSAgICAgICAgaWYgbm90IHNlbGYuc2VydmVyX3JlYWR5LmlzX3NldCgpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9fc2V0VXAoKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jcmFzaGVkID0gVHJ1ZQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2VydmVyX3JlYWR5LnNldCgpCiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LndhaXQoKQogCkBAIC0xNTgsMTAgKzIzNSwxNiBAQAogICAgICAgICBzZWxmLnNlcnZlcl9yZWFkeS53YWl0KCkKICAgICAgICAgc2VsZi5jbGllbnRTZXRVcCgpCiAgICAgICAgIHNlbGYuY2xpZW50X3JlYWR5LnNldCgpCisgICAgICAgIGlmIHNlbGYuc2VydmVyX2NyYXNoZWQ6CisgICAgICAgICAgICBzZWxmLmNsaWVudFRlYXJEb3duKCkKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3QgaGFzYXR0cih0ZXN0X2Z1bmMsICdfX2NhbGxfXycpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0ZXN0X2Z1bmMgbXVzdCBiZSBhIGNhbGxhYmxlIGZ1bmN0aW9uIikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdGVzdF9mdW5jKCkKKyAgICAgICAgZXhjZXB0IF9FeHBlY3RlZEZhaWx1cmU6CisgICAgICAgICAgICAjIFdlIGRlbGliZXJhdGVseSBpZ25vcmUgZXhwZWN0ZWQgZmFpbHVyZXMKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYucXVldWUucHV0KGUpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yMDIsNiArMjg1LDQ4IEBACiAgICAgICAgIHNlbGYuY2xpID0gTm9uZQogICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQogCitjbGFzcyBUaHJlYWRlZENBTlNvY2tldFRlc3QoU29ja2V0Q0FOVGVzdCwgVGhyZWFkYWJsZVRlc3QpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9J3J1blRlc3QnKToKKyAgICAgICAgU29ja2V0Q0FOVGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmNsaS5iaW5kKChzZWxmLmludGVyZmFjZSwpKQorICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgorICAgICAgICAgICAgIyBza2lwVGVzdCBzaG91bGQgbm90IGJlIGNhbGxlZCBoZXJlLCBhbmQgd2lsbCBiZSBjYWxsZWQgaW4gdGhlCisgICAgICAgICAgICAjIHNlcnZlciBpbnN0ZWFkCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY2xpLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGkgPSBOb25lCisgICAgICAgIFRocmVhZGFibGVUZXN0LmNsaWVudFRlYXJEb3duKHNlbGYpCisKK2NsYXNzIFRocmVhZGVkUkRTU29ja2V0VGVzdChTb2NrZXRSRFNUZXN0LCBUaHJlYWRhYmxlVGVzdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0aG9kTmFtZT0ncnVuVGVzdCcpOgorICAgICAgICBTb2NrZXRSRFNUZXN0Ll9faW5pdF9fKHNlbGYsIG1ldGhvZE5hbWU9bWV0aG9kTmFtZSkKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuX19pbml0X18oc2VsZikKKworICAgIGRlZiBjbGllbnRTZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5jbGkgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBSRFMgc29ja2V0cyBtdXN0IGJlIGJvdW5kIGV4cGxpY2l0bHkgdG8gc2VuZCBvciByZWNlaXZlIGRhdGEKKyAgICAgICAgICAgIHNlbGYuY2xpLmJpbmQoKEhPU1QsIDApKQorICAgICAgICAgICAgc2VsZi5jbGlfYWRkciA9IHNlbGYuY2xpLmdldHNvY2tuYW1lKCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAjIHNraXBUZXN0IHNob3VsZCBub3QgYmUgY2FsbGVkIGhlcmUsIGFuZCB3aWxsIGJlIGNhbGxlZCBpbiB0aGUKKyAgICAgICAgICAgICMgc2VydmVyIGluc3RlYWQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiBjbGllbnRUZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5jbGkuY2xvc2UoKQorICAgICAgICBzZWxmLmNsaSA9IE5vbmUKKyAgICAgICAgVGhyZWFkYWJsZVRlc3QuY2xpZW50VGVhckRvd24oc2VsZikKKwogY2xhc3MgU29ja2V0Q29ubmVjdGVkVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgogICAgICIiIlNvY2tldCB0ZXN0cyBmb3IgY2xpZW50LXNlcnZlciBjb25uZWN0aW9uLgogCkBAIC0yNTcsNiArMzgyLDI0MyBAQAogICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQogCiAKKyMgVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSB1c2VkIGJ5IHRoZSBzZW5kbXNnKCkvcmVjdm1zZygpIHRlc3RzLgorIyBDb21iaW5pbmcsIGZvciBpbnN0YW5jZSwgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluIGFuZCBUQ1BUZXN0QmFzZQorIyBnaXZlcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIFNvY2tldENvbm5lY3RlZFRlc3QsIGJ1dCBkaWZmZXJlbnQKKyMgYWRkcmVzcyBmYW1pbGllcyBjYW4gYmUgdXNlZCwgYW5kIHRoZSBhdHRyaWJ1dGVzIHNlcnZfYWRkciBhbmQKKyMgY2xpX2FkZHIgd2lsbCBiZSBzZXQgdG8gdGhlIGFkZHJlc3NlcyBvZiB0aGUgZW5kcG9pbnRzLgorCitjbGFzcyBTb2NrZXRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQSBiYXNlIGNsYXNzIGZvciBzb2NrZXQgdGVzdHMuCisKKyAgICBTdWJjbGFzc2VzIG11c3QgcHJvdmlkZSBtZXRob2RzIG5ld1NvY2tldCgpIHRvIHJldHVybiBhIG5ldyBzb2NrZXQKKyAgICBhbmQgYmluZFNvY2soc29jaykgdG8gYmluZCBpdCB0byBhbiB1bnVzZWQgYWRkcmVzcy4KKworICAgIENyZWF0ZXMgYSBzb2NrZXQgc2VsZi5zZXJ2IGFuZCBzZXRzIHNlbGYuc2Vydl9hZGRyIHRvIGl0cyBhZGRyZXNzLgorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnYgPSBzZWxmLm5ld1NvY2tldCgpCisgICAgICAgIHNlbGYuYmluZFNlcnZlcigpCisKKyAgICBkZWYgYmluZFNlcnZlcihzZWxmKToKKyAgICAgICAgIiIiQmluZCBzZXJ2ZXIgc29ja2V0IGFuZCBzZXQgc2VsZi5zZXJ2X2FkZHIgdG8gaXRzIGFkZHJlc3MuIiIiCisgICAgICAgIHNlbGYuYmluZFNvY2soc2VsZi5zZXJ2KQorICAgICAgICBzZWxmLnNlcnZfYWRkciA9IHNlbGYuc2Vydi5nZXRzb2NrbmFtZSgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydi5jbG9zZSgpCisgICAgICAgIHNlbGYuc2VydiA9IE5vbmUKKworCitjbGFzcyBTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4oU29ja2V0VGVzdEJhc2UpOgorICAgICIiIk1peGluIHRvIGxpc3RlbiBvbiB0aGUgc2VydmVyIHNvY2tldC4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydi5saXN0ZW4oMSkKKworCitjbGFzcyBUaHJlYWRlZFNvY2tldFRlc3RNaXhpbihUaHJlYWRTYWZlQ2xlYW51cFRlc3RDYXNlLCBTb2NrZXRUZXN0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGFibGVUZXN0KToKKyAgICAiIiJNaXhpbiB0byBhZGQgY2xpZW50IHNvY2tldCBhbmQgYWxsb3cgY2xpZW50L3NlcnZlciB0ZXN0cy4KKworICAgIENsaWVudCBzb2NrZXQgaXMgc2VsZi5jbGkgYW5kIGl0cyBhZGRyZXNzIGlzIHNlbGYuY2xpX2FkZHIuICBTZWUKKyAgICBUaHJlYWRhYmxlVGVzdCBmb3IgdXNhZ2UgaW5mb3JtYXRpb24uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIFRocmVhZGFibGVUZXN0Ll9faW5pdF9fKHNlbGYpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY2xpID0gc2VsZi5uZXdDbGllbnRTb2NrZXQoKQorICAgICAgICBzZWxmLmJpbmRDbGllbnQoKQorCisgICAgZGVmIG5ld0NsaWVudFNvY2tldChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHNvY2tldCBmb3IgdXNlIGFzIGNsaWVudC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYubmV3U29ja2V0KCkKKworICAgIGRlZiBiaW5kQ2xpZW50KHNlbGYpOgorICAgICAgICAiIiJCaW5kIGNsaWVudCBzb2NrZXQgYW5kIHNldCBzZWxmLmNsaV9hZGRyIHRvIGl0cyBhZGRyZXNzLiIiIgorICAgICAgICBzZWxmLmJpbmRTb2NrKHNlbGYuY2xpKQorICAgICAgICBzZWxmLmNsaV9hZGRyID0gc2VsZi5jbGkuZ2V0c29ja25hbWUoKQorCisgICAgZGVmIGNsaWVudFRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaS5jbG9zZSgpCisgICAgICAgIHNlbGYuY2xpID0gTm9uZQorICAgICAgICBUaHJlYWRhYmxlVGVzdC5jbGllbnRUZWFyRG93bihzZWxmKQorCisKK2NsYXNzIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbihTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkZWRTb2NrZXRUZXN0TWl4aW4pOgorICAgICIiIk1peGluIHRvIGFsbG93IGNsaWVudC9zZXJ2ZXIgc3RyZWFtIHRlc3RzIHdpdGggY29ubmVjdGVkIGNsaWVudC4KKworICAgIFNlcnZlcidzIHNvY2tldCByZXByZXNlbnRpbmcgY29ubmVjdGlvbiB0byBjbGllbnQgaXMgc2VsZi5jbGlfY29ubgorICAgIGFuZCBjbGllbnQncyBjb25uZWN0aW9uIHRvIHNlcnZlciBpcyBzZWxmLnNlcnZfY29ubi4gIChCYXNlZCBvbgorICAgIFNvY2tldENvbm5lY3RlZFRlc3QuKQorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgIyBJbmRpY2F0ZSBleHBsaWNpdGx5IHdlJ3JlIHJlYWR5IGZvciB0aGUgY2xpZW50IHRocmVhZCB0bworICAgICAgICAjIHByb2NlZWQgYW5kIHRoZW4gcGVyZm9ybSB0aGUgYmxvY2tpbmcgY2FsbCB0byBhY2NlcHQKKyAgICAgICAgc2VsZi5zZXJ2ZXJFeHBsaWNpdFJlYWR5KCkKKyAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2Vydi5hY2NlcHQoKQorICAgICAgICBzZWxmLmNsaV9jb25uID0gY29ubgorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLmNsaV9jb25uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5jbGlfY29ubiA9IE5vbmUKKyAgICAgICAgc3VwZXIoKS50ZWFyRG93bigpCisKKyAgICBkZWYgY2xpZW50U2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY2xpZW50U2V0VXAoKQorICAgICAgICBzZWxmLmNsaS5jb25uZWN0KHNlbGYuc2Vydl9hZGRyKQorICAgICAgICBzZWxmLnNlcnZfY29ubiA9IHNlbGYuY2xpCisKKyAgICBkZWYgY2xpZW50VGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2Vydl9jb25uLmNsb3NlKCkKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4gPSBOb25lCisgICAgICAgIHN1cGVyKCkuY2xpZW50VGVhckRvd24oKQorCisKK2NsYXNzIFVuaXhTb2NrZXRUZXN0QmFzZShTb2NrZXRUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVW5peC1kb21haW4gc29ja2V0IHRlc3RzLiIiIgorCisgICAgIyBUaGlzIGNsYXNzIGlzIHVzZWQgZm9yIGZpbGUgZGVzY3JpcHRvciBwYXNzaW5nIHRlc3RzLCBzbyB3ZQorICAgICMgY3JlYXRlIHRoZSBzb2NrZXRzIGluIGEgcHJpdmF0ZSBkaXJlY3Rvcnkgc28gdGhhdCBvdGhlciB1c2VycworICAgICMgY2FuJ3Qgc2VuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHByb2JsZW1hdGljIGZvciBhIHByaXZpbGVnZWQKKyAgICAjIHVzZXIgcnVubmluZyB0aGUgdGVzdHMuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZGlyX3BhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJtZGlyLCBzZWxmLmRpcl9wYXRoKQorICAgICAgICBzdXBlcigpLnNldFVwKCkKKworICAgIGRlZiBiaW5kU29jayhzZWxmLCBzb2NrKToKKyAgICAgICAgcGF0aCA9IHRlbXBmaWxlLm1rdGVtcChkaXI9c2VsZi5kaXJfcGF0aCkKKyAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKworY2xhc3MgVW5peFN0cmVhbUJhc2UoVW5peFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVbml4LWRvbWFpbiBTT0NLX1NUUkVBTSB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisKKworY2xhc3MgSW5ldFRlc3RCYXNlKFNvY2tldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUHY0IHNvY2tldCB0ZXN0cy4iIiIKKworICAgIGhvc3QgPSBIT1NUCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnZfYWRkclsxXQorCisgICAgZGVmIGJpbmRTb2NrKHNlbGYsIHNvY2spOgorICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzb2NrLCBob3N0PXNlbGYuaG9zdCkKKworY2xhc3MgVENQVGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBUQ1Atb3Zlci1JUHY0IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworY2xhc3MgVURQVGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBVRFAtb3Zlci1JUHY0IHRlc3RzLiIiIgorCisgICAgZGVmIG5ld1NvY2tldChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQorCitjbGFzcyBTQ1RQU3RyZWFtQmFzZShJbmV0VGVzdEJhc2UpOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIFNDVFAgdGVzdHMgaW4gb25lLXRvLW9uZSAoU09DS19TVFJFQU0pIG1vZGUuIiIiCisKKyAgICBkZWYgbmV3U29ja2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBQUk9UT19TQ1RQKQorCisKK2NsYXNzIEluZXQ2VGVzdEJhc2UoSW5ldFRlc3RCYXNlKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBJUHY2IHNvY2tldCB0ZXN0cy4iIiIKKworICAgICMgRG9uJ3QgdXNlICJsb2NhbGhvc3QiIGhlcmUgLSBpdCBtYXkgbm90IGhhdmUgYW4gSVB2NiBhZGRyZXNzCisgICAgIyBhc3NpZ25lZCB0byBpdCBieSBkZWZhdWx0IChlLmcuIGluIC9ldGMvaG9zdHMpLCBhbmQgaWYgc29tZW9uZQorICAgICMgaGFzIGFzc2lnbmVkIGl0IGFuIElQdjQtbWFwcGVkIGFkZHJlc3MsIHRoZW4gaXQncyB1bmxpa2VseSB0bworICAgICMgd29yayB3aXRoIHRoZSBmdWxsIElQdjYgQVBJLgorICAgIGhvc3QgPSAiOjoxIgorCitjbGFzcyBVRFA2VGVzdEJhc2UoSW5ldDZUZXN0QmFzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgVURQLW92ZXItSVB2NiB0ZXN0cy4iIiIKKworICAgIGRlZiBuZXdTb2NrZXQoc2VsZik6CisgICAgICAgIHJldHVybiBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNPQ0tfREdSQU0pCisKKworIyBUZXN0LXNraXBwaW5nIGRlY29yYXRvcnMgZm9yIHVzZSB3aXRoIFRocmVhZGFibGVUZXN0LgorCitkZWYgc2tpcFdpdGhDbGllbnRJZihjb25kaXRpb24sIHJlYXNvbik6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBjb25kaXRpb24gaXMgdHJ1ZSwgYWRkIGNsaWVudF9za2lwIGRlY29yYXRvci4KKworICAgIElmIHRoZSBkZWNvcmF0ZWQgb2JqZWN0IGlzIG5vdCBhIGNsYXNzLCBzZXRzIGl0cyBhdHRyaWJ1dGUKKyAgICAiY2xpZW50X3NraXAiIHRvIGEgZGVjb3JhdG9yIHdoaWNoIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGZ1bmN0aW9uCisgICAgaWYgdGhlIHRlc3QgaXMgdG8gYmUgc2tpcHBlZCwgb3IgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGlmIGl0IGlzCisgICAgbm90LiAgVGhpcyBjYW4gYmUgdXNlZCB0byBhdm9pZCBydW5uaW5nIHRoZSBjbGllbnQgcGFydCBvZiBhCisgICAgc2tpcHBlZCB0ZXN0IHdoZW4gdXNpbmcgVGhyZWFkYWJsZVRlc3QuCisgICAgIiIiCisgICAgZGVmIGNsaWVudF9wYXNzKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgc2tpcGRlYyhvYmopOgorICAgICAgICByZXR2YWwgPSB1bml0dGVzdC5za2lwKHJlYXNvbikob2JqKQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAgICAgcmV0dmFsLmNsaWVudF9za2lwID0gbGFtYmRhIGY6IGNsaWVudF9wYXNzCisgICAgICAgIHJldHVybiByZXR2YWwKKyAgICBkZWYgbm9za2lwZGVjKG9iaik6CisgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShvYmosIHR5cGUpIG9yIGhhc2F0dHIob2JqLCAiY2xpZW50X3NraXAiKSk6CisgICAgICAgICAgICBvYmouY2xpZW50X3NraXAgPSBsYW1iZGEgZjogZgorICAgICAgICByZXR1cm4gb2JqCisgICAgcmV0dXJuIHNraXBkZWMgaWYgY29uZGl0aW9uIGVsc2Ugbm9za2lwZGVjCisKKworZGVmIHJlcXVpcmVBdHRycyhvYmosICphdHRyaWJ1dGVzKToKKyAgICAiIiJTa2lwIGRlY29yYXRlZCB0ZXN0IGlmIG9iaiBpcyBtaXNzaW5nIGFueSBvZiB0aGUgZ2l2ZW4gYXR0cmlidXRlcy4KKworICAgIFNldHMgY2xpZW50X3NraXAgYXR0cmlidXRlIGFzIHNraXBXaXRoQ2xpZW50SWYoKSBkb2VzLgorICAgICIiIgorICAgIG1pc3NpbmcgPSBbbmFtZSBmb3IgbmFtZSBpbiBhdHRyaWJ1dGVzIGlmIG5vdCBoYXNhdHRyKG9iaiwgbmFtZSldCisgICAgcmV0dXJuIHNraXBXaXRoQ2xpZW50SWYoCisgICAgICAgIG1pc3NpbmcsICJkb24ndCBoYXZlICIgKyAiLCAiLmpvaW4obmFtZSBmb3IgbmFtZSBpbiBtaXNzaW5nKSkKKworCitkZWYgcmVxdWlyZVNvY2tldCgqYXJncyk6CisgICAgIiIiU2tpcCBkZWNvcmF0ZWQgdGVzdCBpZiBhIHNvY2tldCBjYW5ub3QgYmUgY3JlYXRlZCB3aXRoIGdpdmVuIGFyZ3VtZW50cy4KKworICAgIFdoZW4gYW4gYXJndW1lbnQgaXMgZ2l2ZW4gYXMgYSBzdHJpbmcsIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZiB0aGF0CisgICAgYXR0cmlidXRlIG9mIHRoZSBzb2NrZXQgbW9kdWxlLCBvciBza2lwIHRoZSB0ZXN0IGlmIGl0IGRvZXNuJ3QKKyAgICBleGlzdC4gIFNldHMgY2xpZW50X3NraXAgYXR0cmlidXRlIGFzIHNraXBXaXRoQ2xpZW50SWYoKSBkb2VzLgorICAgICIiIgorICAgIGVyciA9IE5vbmUKKyAgICBtaXNzaW5nID0gW29iaiBmb3Igb2JqIGluIGFyZ3MgaWYKKyAgICAgICAgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBzdHIpIGFuZCBub3QgaGFzYXR0cihzb2NrZXQsIG9iaildCisgICAgaWYgbWlzc2luZzoKKyAgICAgICAgZXJyID0gImRvbid0IGhhdmUgIiArICIsICIuam9pbihuYW1lIGZvciBuYW1lIGluIG1pc3NpbmcpCisgICAgZWxzZToKKyAgICAgICAgY2FsbGFyZ3MgPSBbZ2V0YXR0cihzb2NrZXQsIG9iaikgaWYgaXNpbnN0YW5jZShvYmosIHN0cikgZWxzZSBvYmoKKyAgICAgICAgICAgICAgICAgICAgZm9yIG9iaiBpbiBhcmdzXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgqY2FsbGFyZ3MpCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgZToKKyAgICAgICAgICAgICMgWFhYOiBjaGVjayBlcnJubz8KKyAgICAgICAgICAgIGVyciA9IHN0cihlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcy5jbG9zZSgpCisgICAgcmV0dXJuIHNraXBXaXRoQ2xpZW50SWYoCisgICAgICAgIGVyciBpcyBub3QgTm9uZSwKKyAgICAgICAgImNhbid0IGNyZWF0ZSBzb2NrZXQoezB9KTogezF9Ii5mb3JtYXQoCisgICAgICAgICAgICAiLCAiLmpvaW4oc3RyKG8pIGZvciBvIGluIGFyZ3MpLCBlcnIpKQorCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBCZWdpbiBUZXN0cwogCkBAIC0yODIsMTggKzY0NCwxMyBAQAogCiAgICAgZGVmIHRlc3RTb2NrZXRFcnJvcihzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIHNvY2tldCBtb2R1bGUgZXhjZXB0aW9ucwotICAgICAgICBkZWYgcmFpc2VfZXJyb3IoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgbXNnID0gIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbiAoJXMpLiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIG1zZz1tc2cgJSAnc29ja2V0LmVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuZXJyb3IKLSAgICAgICAgZGVmIHJhaXNlX2hlcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuaGVycm9yJyk6CiAgICAgICAgICAgICByYWlzZSBzb2NrZXQuaGVycm9yCi0gICAgICAgIGRlZiByYWlzZV9nYWllcnJvcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgbXNnPW1zZyAlICdzb2NrZXQuZ2FpZXJyb3InKToKICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5nYWllcnJvcgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHJhaXNpbmcgc29ja2V0IGV4Y2VwdGlvbi4iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHJhaXNlX2hlcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCByYWlzZV9nYWllcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByYWlzaW5nIHNvY2tldCBleGNlcHRpb24uIikKIAogICAgIGRlZiB0ZXN0U2VuZHRvRXJyb3JzKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgdGhhdCBzZW5kdG8gZG9lbnMndCBtYXNrcyBmYWlsdXJlcy4gU2VlICMxMDE2OS4KQEAgLTM2OSw2ICs3MjYsNTIgQEAKICAgICAgICAgaWYgbm90IGZxaG4gaW4gYWxsX2hvc3RfbmFtZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkVycm9yIHRlc3RpbmcgaG9zdCByZXNvbHV0aW9uIG1lY2hhbmlzbXMuIChmcWRuOiAlcywgYWxsOiAlcykiICUgKGZxaG4sIHJlcHIoYWxsX2hvc3RfbmFtZXMpKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnc2V0aG9zdG5hbWUnKSwgInRlc3QgbmVlZHMgc29ja2V0LnNldGhvc3RuYW1lKCkiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnZ2V0aG9zdG5hbWUnKSwgInRlc3QgbmVlZHMgc29ja2V0LmdldGhvc3RuYW1lKCkiKQorICAgIGRlZiB0ZXN0X3NldGhvc3RuYW1lKHNlbGYpOgorICAgICAgICBvbGRobiA9IHNvY2tldC5nZXRob3N0bmFtZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2tldC5zZXRob3N0bmFtZSgnbmV3JykKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUEVSTToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJ0ZXN0IHNob3VsZCBiZSBydW4gYXMgcm9vdCIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgcnVubmluZyB0ZXN0IGFzIHJvb3QhCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvY2tldC5nZXRob3N0bmFtZSgpLCAnbmV3JykKKyAgICAgICAgICAgICMgU2hvdWxkIHdvcmsgd2l0aCBieXRlcyBvYmplY3RzIHRvbworICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKGInYmFyJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ja2V0LmdldGhvc3RuYW1lKCksICdiYXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc29ja2V0LnNldGhvc3RuYW1lKG9sZGhuKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpZl9uYW1laW5kZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKKyAgICBkZWYgdGVzdEludGVyZmFjZU5hbWVJbmRleChzZWxmKToKKyAgICAgICAgaW50ZXJmYWNlcyA9IHNvY2tldC5pZl9uYW1laW5kZXgoKQorICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gaW50ZXJmYWNlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmRleCwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG5hbWUsIHN0cikKKyAgICAgICAgICAgICMgaW50ZXJmYWNlIGluZGljZXMgYXJlIG5vbi16ZXJvIGludGVnZXJzCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoaW5kZXgsIDApCisgICAgICAgICAgICBfaW5kZXggPSBzb2NrZXQuaWZfbmFtZXRvaW5kZXgobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShfaW5kZXgsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZXgsIF9pbmRleCkKKyAgICAgICAgICAgIF9uYW1lID0gc29ja2V0LmlmX2luZGV4dG9uYW1lKGluZGV4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKF9uYW1lLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5hbWUsIF9uYW1lKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICdpZl9uYW1laW5kZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LmlmX25hbWVpbmRleCgpIG5vdCBhdmFpbGFibGUuJykKKyAgICBkZWYgdGVzdEludmFsaWRJbnRlcmZhY2VOYW1lSW5kZXgoc2VsZik6CisgICAgICAgICMgdGVzdCBub25leGlzdGVudCBpbnRlcmZhY2UgaW5kZXgvbmFtZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNvY2tldC5pZl9pbmRleHRvbmFtZSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzb2NrZXQuaWZfbmFtZXRvaW5kZXgsICdfREVBREJFRUYnKQorICAgICAgICAjIHRlc3Qgd2l0aCBpbnZhbGlkIHZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNvY2tldC5pZl9uYW1ldG9pbmRleCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzb2NrZXQuaWZfaW5kZXh0b25hbWUsICdfREVBREJFRUYnKQorCiAgICAgZGVmIHRlc3RSZWZDb3VudEdldE5hbWVJbmZvKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgcmVmZXJlbmNlIGNvdW50IGZvciBnZXRuYW1laW5mbwogICAgICAgICBpZiBoYXNhdHRyKHN5cywgImdldHJlZmNvdW50Iik6CkBAIC00MjEsMTAgKzgyNCw4IEBACiAgICAgICAgICMgRmluZCBvbmUgc2VydmljZSB0aGF0IGV4aXN0cywgdGhlbiBjaGVjayBhbGwgdGhlIHJlbGF0ZWQgaW50ZXJmYWNlcy4KICAgICAgICAgIyBJJ3ZlIG9yZGVyZWQgdGhpcyBieSBwcm90b2NvbHMgdGhhdCBoYXZlIGJvdGggYSB0Y3AgYW5kIHVkcAogICAgICAgICAjIHByb3RvY29sLCBhdCBsZWFzdCBmb3IgbW9kZXJuIExpbnV4ZXMuCi0gICAgICAgIGlmIChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2ZyZWVic2QnKSBvcgotICAgICAgICAgICAgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpIG9yCi0gICAgICAgICAgICBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicpOgorICAgICAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdmcmVlYnNkJywgJ25ldGJzZCcpKQorICAgICAgICAgICAgb3Igc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJykpOgogICAgICAgICAgICAgIyBhdm9pZCB0aGUgJ2VjaG8nIHNlcnZpY2Ugb24gdGhpcyBwbGF0Zm9ybSwgYXMgdGhlcmUgaXMgYW4KICAgICAgICAgICAgICMgYXNzdW1wdGlvbiBicmVha2luZyBub24tc3RhbmRhcmQgcG9ydC9wcm90b2NvbCBlbnRyeQogICAgICAgICAgICAgc2VydmljZXMgPSAoJ2RheXRpbWUnLCAncW90ZCcsICdkb21haW4nKQpAQCAtNzE5LDcgKzExMjAsNyBAQAogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJ2xvY2FsaG9zdCcsIDgwKQogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oJzEyNy4wLjAuMScsIDgwKQogICAgICAgICBzb2NrZXQuZ2V0YWRkcmluZm8oTm9uZSwgODApCi0gICAgICAgIGlmIFNVUFBPUlRTX0lQVjY6CisgICAgICAgIGlmIHN1cHBvcnQuSVBWNl9FTkFCTEVEOgogICAgICAgICAgICAgc29ja2V0LmdldGFkZHJpbmZvKCc6OjEnLCA4MCkKICAgICAgICAgIyBwb3J0IGNhbiBiZSBhIHN0cmluZyBzZXJ2aWNlIG5hbWUgc3VjaCBhcyAiaHR0cCIsIGEgbnVtZXJpYwogICAgICAgICAjIHBvcnQgbnVtYmVyIG9yIE5vbmUKQEAgLTc3Miw3ICsxMTczLDEyIEBACiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25ldHdvcmsgaXMgbm90IGVuYWJsZWQnKQogICAgIGRlZiB0ZXN0X2lkbmEoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICAjIENoZWNrIGZvciBpbnRlcm5ldCBhY2Nlc3MgYmVmb3JlIHJ1bm5pbmcgdGVzdCAoaXNzdWUgIzEyODA0KS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWUoJ3B5dGhvbi5vcmcnKQorICAgICAgICBleGNlcHQgc29ja2V0LmdhaWVycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBlLmVycm5vID09IHNvY2tldC5FQUlfTk9EQVRBOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ2ludGVybmV0IGFjY2VzcyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKICAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIGJlIHN1Y2Nlc3NmdWwKICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWUoJ9C40YHQv9GL0YLQsNC90LjQtS5weXRob24ub3JnJykKICAgICAgICAgc29ja2V0LmdldGhvc3RieW5hbWVfZXgoJ9C40YHQv9GL0YLQsNC90LjQtS5weXRob24ub3JnJykKQEAgLTg1MCwxNCArMTI1NiwyMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnAud3JpdGFibGUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmcC5zZWVrYWJsZSkKIAotICAgIGRlZiB0ZXN0TGlzdGVuQmFja2xvZzAoc2VsZik6CisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgIGZvciBwcm90b2NvbCBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBzb2NrLCBwcm90b2NvbCkKKworICAgIGRlZiB0ZXN0X2xpc3Rlbl9iYWNrbG9nMChzZWxmKToKICAgICAgICAgc3J2ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQogICAgICAgICBzcnYuYmluZCgoSE9TVCwgMCkpCiAgICAgICAgICMgYmFja2xvZyA9IDAKICAgICAgICAgc3J2Lmxpc3RlbigwKQogICAgICAgICBzcnYuY2xvc2UoKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoU1VQUE9SVFNfSVBWNiwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuSVBWNl9FTkFCTEVELCAnSVB2NiByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiAgICAgZGVmIHRlc3RfZmxvd2luZm8oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5nZXRuYW1laW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc6OjEnLDAsIDB4ZmZmZmZmZmYpLCAwKQpAQCAtODY1LDYgKzEyNzcsMjIyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzLmJpbmQsICgnOjoxJywgMCwgLTEwKSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVZFX1NPQ0tFVF9DQU4sICdTb2NrZXRDYW4gcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNDQU5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX0NBTgorICAgICAgICBzb2NrZXQuUEZfQ0FOCisgICAgICAgIHNvY2tldC5DQU5fUkFXCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdEJpbmRBbnkoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgcy5iaW5kKCgnJywgKSkKKworICAgIGRlZiB0ZXN0VG9vTG9uZ0ludGVyZmFjZU5hbWUoc2VsZik6CisgICAgICAgICMgbW9zdCBzeXN0ZW1zIGxpbWl0IElGTkFNU0laIHRvIDE2LCB0YWtlIDEwMjQgdG8gYmUgc3VyZQorICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoc29ja2V0LlBGX0NBTiwgc29ja2V0LlNPQ0tfUkFXLCBzb2NrZXQuQ0FOX1JBVykgYXMgczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc29ja2V0LmVycm9yLCAnaW50ZXJmYWNlIG5hbWUgdG9vIGxvbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmJpbmQsICgneCcgKiAxMDI0LCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNvY2tldCwgIkNBTl9SQVdfTE9PUEJBQ0siKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0sgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0TG9vcGJhY2soc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfQ0FOLCBzb2NrZXQuU09DS19SQVcsIHNvY2tldC5DQU5fUkFXKSBhcyBzOgorICAgICAgICAgICAgZm9yIGxvb3BiYWNrIGluICgwLCAxKToKKyAgICAgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19MT09QQkFDSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9vcGJhY2spCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb29wYmFjaywKKyAgICAgICAgICAgICAgICAgICAgcy5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfQ0FOX1JBVywgc29ja2V0LkNBTl9SQVdfTE9PUEJBQ0spKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzb2NrZXQsICJDQU5fUkFXX0ZJTFRFUiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzb2NrZXQuQ0FOX1JBV19GSUxURVIgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIGRlZiB0ZXN0RmlsdGVyKHNlbGYpOgorICAgICAgICBjYW5faWQsIGNhbl9tYXNrID0gMHgyMDAsIDB4NzAwCisgICAgICAgIGNhbl9maWx0ZXIgPSBzdHJ1Y3QucGFjaygiPUlJIiwgY2FuX2lkLCBjYW5fbWFzaykKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9DQU4sIHNvY2tldC5TT0NLX1JBVywgc29ja2V0LkNBTl9SQVcpIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9DQU5fUkFXLCBzb2NrZXQuQ0FOX1JBV19GSUxURVIsIGNhbl9maWx0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbl9maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgIHMuZ2V0c29ja29wdChzb2NrZXQuU09MX0NBTl9SQVcsIHNvY2tldC5DQU5fUkFXX0ZJTFRFUiwgOCkpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQ0FOLCAnU29ja2V0Q2FuIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBDQU5UZXN0KFRocmVhZGVkQ0FOU29ja2V0VGVzdCk6CisKKyAgICAiIiJUaGUgQ0FOIGZyYW1lIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGluIDxsaW51eC9jYW4uaD46CisKKyAgICBzdHJ1Y3QgY2FuX2ZyYW1lIHsKKyAgICAgICAgY2FuaWRfdCBjYW5faWQ7ICAvKiAzMiBiaXQgQ0FOX0lEICsgRUZGL1JUUi9FUlIgZmxhZ3MgKi8KKyAgICAgICAgX191OCAgICBjYW5fZGxjOyAvKiBkYXRhIGxlbmd0aCBjb2RlOiAwIC4uIDggKi8KKyAgICAgICAgX191OCAgICBkYXRhWzhdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyAgICB9OworICAgICIiIgorICAgIGNhbl9mcmFtZV9mbXQgPSAiPUlCM3g4cyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkQ0FOU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgYnVpbGRfY2FuX2ZyYW1lKGNscywgY2FuX2lkLCBkYXRhKToKKyAgICAgICAgIiIiQnVpbGQgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9kbGMgPSBsZW4oZGF0YSkKKyAgICAgICAgZGF0YSA9IGRhdGEubGp1c3QoOCwgYidceDAwJykKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKGNscy5jYW5fZnJhbWVfZm10LCBjYW5faWQsIGNhbl9kbGMsIGRhdGEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZGlzc2VjdF9jYW5fZnJhbWUoY2xzLCBmcmFtZSk6CisgICAgICAgICIiIkRpc3NlY3QgYSBDQU4gZnJhbWUuIiIiCisgICAgICAgIGNhbl9pZCwgY2FuX2RsYywgZGF0YSA9IHN0cnVjdC51bnBhY2soY2xzLmNhbl9mcmFtZV9mbXQsIGZyYW1lKQorICAgICAgICByZXR1cm4gKGNhbl9pZCwgY2FuX2RsYywgZGF0YVs6Y2FuX2RsY10pCisKKyAgICBkZWYgdGVzdFNlbmRGcmFtZShzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YsIGNmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMF0sIHNlbGYuaW50ZXJmYWNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHJbMV0sIHNvY2tldC5BRl9DQU4pCisKKyAgICBkZWYgX3Rlc3RTZW5kRnJhbWUoc2VsZik6CisgICAgICAgIHNlbGYuY2YgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDAwLCBiJ1x4MDFceDAyXHgwM1x4MDRceDA1JykKKyAgICAgICAgc2VsZi5jbGkuc2VuZChzZWxmLmNmKQorCisgICAgZGVmIHRlc3RTZW5kTWF4RnJhbWUoc2VsZik6CisgICAgICAgIGNmLCBhZGRyID0gc2VsZi5zLnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNmLCBjZikKKworICAgIGRlZiBfdGVzdFNlbmRNYXhGcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5jZiA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDAsIGInXHgwNycgKiA4KQorICAgICAgICBzZWxmLmNsaS5zZW5kKHNlbGYuY2YpCisKKyAgICBkZWYgdGVzdFNlbmRNdWx0aUZyYW1lcyhzZWxmKToKKyAgICAgICAgY2YsIGFkZHIgPSBzZWxmLnMucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2YxLCBjZikKKworICAgICAgICBjZiwgYWRkciA9IHNlbGYucy5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jZjIsIGNmKQorCisgICAgZGVmIF90ZXN0U2VuZE11bHRpRnJhbWVzKHNlbGYpOgorICAgICAgICBzZWxmLmNmMSA9IHNlbGYuYnVpbGRfY2FuX2ZyYW1lKDB4MDcsIGInXHg0NFx4MzNceDIyXHgxMScpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjEpCisKKyAgICAgICAgc2VsZi5jZjIgPSBzZWxmLmJ1aWxkX2Nhbl9mcmFtZSgweDEyLCBiJ1x4OTlceDIyXHgzMycpCisgICAgICAgIHNlbGYuY2xpLnNlbmQoc2VsZi5jZjIpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgQmFzaWNSRFNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0Q3J1Y2lhbENvbnN0YW50cyhzZWxmKToKKyAgICAgICAgc29ja2V0LkFGX1JEUworICAgICAgICBzb2NrZXQuUEZfUkRTCisKKyAgICBkZWYgdGVzdENyZWF0ZVNvY2tldChzZWxmKToKKyAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5QRl9SRFMsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkgYXMgczoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0U29ja2V0QnVmZmVyU2l6ZShzZWxmKToKKyAgICAgICAgYnVmc2l6ZSA9IDE2Mzg0CisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuUEZfUkRTLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApIGFzIHM6CisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SQ1ZCVUYsIGJ1ZnNpemUpCisgICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19TTkRCVUYsIGJ1ZnNpemUpCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfUkRTLCAnUkRTIHNvY2tldHMgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJEU1Rlc3QoVGhyZWFkZWRSRFNTb2NrZXRUZXN0KToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPSdydW5UZXN0Jyk6CisgICAgICAgIFRocmVhZGVkUkRTU29ja2V0VGVzdC5fX2luaXRfXyhzZWxmLCBtZXRob2ROYW1lPW1ldGhvZE5hbWUpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLmV2dCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICBkZWYgdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jbGlfYWRkciwgYWRkcikKKworICAgIGRlZiBfdGVzdFNlbmRBbmRSZWN2KHNlbGYpOgorICAgICAgICBzZWxmLmRhdGEgPSBiJ3NwYW0nCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RQZWVrKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSwgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKyAgICAgICAgZGF0YSwgYWRkciA9IHNlbGYuc2Vydi5yZWN2ZnJvbShzZWxmLmJ1ZnNpemUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYXRhLCBkYXRhKQorCisgICAgZGVmIF90ZXN0UGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzcGFtJworICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgJ3JlY3Ztc2cnKQorICAgIGRlZiB0ZXN0U2VuZEFuZFJlY3ZNc2coc2VsZik6CisgICAgICAgIGRhdGEsIGFuY2RhdGEsIG1zZ19mbGFncywgYWRkciA9IHNlbGYuc2Vydi5yZWN2bXNnKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGEsIGRhdGEpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICdzZW5kbXNnJykKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidoZWxsbyAnICogMTAKKyAgICAgICAgc2VsZi5jbGkuc2VuZG1zZyhbc2VsZi5kYXRhXSwgKCksIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBkYXRhLCBhZGRyID0gc2VsZi5zZXJ2LnJlY3Zmcm9tKHNlbGYuYnVmc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRhdGExLCBkYXRhKQorCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YTIsIGRhdGEpCisKKyAgICBkZWYgX3Rlc3RTZW5kQW5kUmVjdk11bHRpKHNlbGYpOgorICAgICAgICBzZWxmLmRhdGExID0gYidiYWNvbicKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgICAgIHNlbGYuZGF0YTIgPSBiJ2VnZycKKyAgICAgICAgc2VsZi5jbGkuc2VuZHRvKHNlbGYuZGF0YTIsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RTZWxlY3Qoc2VsZik6CisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisgICAgICAgIGRhdGEsIGFkZHIgPSBzZWxmLnNlcnYucmVjdmZyb20oc2VsZi5idWZzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGF0YSwgZGF0YSkKKworICAgIGRlZiBfdGVzdFNlbGVjdChzZWxmKToKKyAgICAgICAgc2VsZi5kYXRhID0gYidzZWxlY3QnCisgICAgICAgIHNlbGYuY2xpLnNlbmR0byhzZWxmLmRhdGEsIDAsIChIT1NULCBzZWxmLnBvcnQpKQorCisgICAgZGVmIHRlc3RDb25nZXN0aW9uKHNlbGYpOgorICAgICAgICAjIHdhaXQgdW50aWwgdGhlIHNlbmRlciBpcyBkb25lCisgICAgICAgIHNlbGYuZXZ0LndhaXQoKQorCisgICAgZGVmIF90ZXN0Q29uZ2VzdGlvbihzZWxmKToKKyAgICAgICAgIyB0ZXN0IHRoZSBiZWhhdmlvciBpbiBjYXNlIG9mIGNvbmdlc3Rpb24KKyAgICAgICAgc2VsZi5kYXRhID0gYidmaWxsJworICAgICAgICBzZWxmLmNsaS5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyB0cnkgdG8gbG93ZXIgdGhlIHJlY2VpdmVyJ3Mgc29ja2V0IGJ1ZmZlciBzaXplCisgICAgICAgICAgICBzZWxmLmNsaS5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkNWQlVGLCAxNjM4NCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBmaWxsIHRoZSByZWNlaXZlcidzIHNvY2tldCBidWZmZXIKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNsaS5zZW5kdG8oc2VsZi5kYXRhLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgIyBzaWduYWwgdGhlIHJlY2VpdmVyIHdlJ3JlIGRvbmUKKyAgICAgICAgICAgICAgICBzZWxmLmV2dC5zZXQoKQorICAgICAgICAjIHNlbmR0bygpIHNob3VsZCBoYXZlIGZhaWxlZCB3aXRoIEVOT0JVRlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0JVRlMpCisgICAgICAgICMgYW5kIHdlIHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29uZ2VzdGlvbiBub3RpZmljYXRpb24gdGhyb3VnaCBwb2xsCisgICAgICAgIHIsIHcsIHggPSBzZWxlY3Quc2VsZWN0KFtzZWxmLnNlcnZdLCBbXSwgW10sIDMuMCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnNlcnYsIHIpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJhc2ljVENQVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKIApAQCAtMTAwNCw2ICsxNjMyLDE4NTIgQEAKICAgICBkZWYgX3Rlc3RSZWN2RnJvbU5lZ2F0aXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNsaS5zZW5kdG8oTVNHLCAwLCAoSE9TVCwgc2VsZi5wb3J0KSkKIAorIyBUZXN0cyBmb3IgdGhlIHNlbmRtc2coKS9yZWN2bXNnKCkgaW50ZXJmYWNlLiAgV2hlcmUgcG9zc2libGUsIHRoZQorIyBzYW1lIHRlc3QgY29kZSBpcyB1c2VkIHdpdGggZGlmZmVyZW50IGZhbWlsaWVzIGFuZCB0eXBlcyBvZiBzb2NrZXQKKyMgKGUuZy4gc3RyZWFtLCBkYXRhZ3JhbSksIGFuZCB0ZXN0cyB1c2luZyByZWN2bXNnKCkgYXJlIHJlcGVhdGVkCisjIHVzaW5nIHJlY3Ztc2dfaW50bygpLgorIworIyBUaGUgZ2VuZXJpYyB0ZXN0IGNsYXNzZXMgc3VjaCBhcyBTZW5kbXNnVGVzdHMgYW5kCisjIFJlY3Ztc2dHZW5lcmljVGVzdHMgaW5oZXJpdCBmcm9tIFNlbmRyZWN2bXNnQmFzZSBhbmQgZXhwZWN0IHRvIGJlCisjIHN1cHBsaWVkIHdpdGggc29ja2V0cyBjbGlfc29jayBhbmQgc2Vydl9zb2NrIHJlcHJlc2VudGluZyB0aGUKKyMgY2xpZW50J3MgYW5kIHRoZSBzZXJ2ZXIncyBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gcmVzcGVjdGl2ZWx5LCBhbmQKKyMgYXR0cmlidXRlcyBjbGlfYWRkciBhbmQgc2Vydl9hZGRyIGhvbGRpbmcgdGhlaXIgKG51bWVyaWMgd2hlcmUKKyMgYXBwcm9wcmlhdGUpIGFkZHJlc3Nlcy4KKyMKKyMgVGhlIGZpbmFsIGNvbmNyZXRlIHRlc3QgY2xhc3NlcyBjb21iaW5lIHRoZXNlIHdpdGggc3ViY2xhc3NlcyBvZgorIyBTb2NrZXRUZXN0QmFzZSB3aGljaCBzZXQgdXAgY2xpZW50IGFuZCBzZXJ2ZXIgc29ja2V0cyBvZiBhIHNwZWNpZmljCisjIHR5cGUsIGFuZCB3aXRoIHN1YmNsYXNzZXMgb2YgU2VuZHJlY3Ztc2dCYXNlIHN1Y2ggYXMKKyMgU2VuZHJlY3Ztc2dEZ3JhbUJhc2UgYW5kIFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSB3aGljaCBtYXAgdGhlc2UKKyMgc29ja2V0cyB0byBjbGlfc29jayBhbmQgc2Vydl9zb2NrIGFuZCBvdmVycmlkZSB0aGUgbWV0aG9kcyBhbmQKKyMgYXR0cmlidXRlcyBvZiBTZW5kcmVjdm1zZ0Jhc2UgdG8gZmlsbCBpbiBkZXN0aW5hdGlvbiBhZGRyZXNzZXMgaWYKKyMgbmVlZGVkIHdoZW4gc2VuZGluZywgY2hlY2sgZm9yIHNwZWNpZmljIGZsYWdzIGluIG1zZ19mbGFncywgZXRjLgorIworIyBSZWN2bXNnSW50b01peGluIHByb3ZpZGVzIGEgdmVyc2lvbiBvZiBkb1JlY3Ztc2coKSBpbXBsZW1lbnRlZCB1c2luZworIyByZWN2bXNnX2ludG8oKS4KKworIyBYWFg6IGxpa2UgdGhlIG90aGVyIGRhdGFncmFtIChVRFApIHRlc3RzIGluIHRoaXMgbW9kdWxlLCB0aGUgY29kZQorIyBoZXJlIGFzc3VtZXMgdGhhdCBkYXRhZ3JhbSBkZWxpdmVyeSBvbiB0aGUgbG9jYWwgbWFjaGluZSB3aWxsIGJlCisjIHJlbGlhYmxlLgorCitjbGFzcyBTZW5kcmVjdm1zZ0Jhc2UoVGhyZWFkU2FmZUNsZWFudXBUZXN0Q2FzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciBzZW5kbXNnKCkvcmVjdm1zZygpIHRlc3RzLgorCisgICAgIyBUaW1lIGluIHNlY29uZHMgdG8gd2FpdCBiZWZvcmUgY29uc2lkZXJpbmcgYSB0ZXN0IGZhaWxlZCwgb3IKKyAgICAjIE5vbmUgZm9yIG5vIHRpbWVvdXQuICBOb3QgYWxsIHRlc3RzIGFjdHVhbGx5IHNldCBhIHRpbWVvdXQuCisgICAgZmFpbF90aW1lb3V0ID0gMy4wCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubWlzY19ldmVudCA9IHRocmVhZGluZy5FdmVudCgpCisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgZGVmIHNlbmRUb1NlcnZlcihzZWxmLCBtc2cpOgorICAgICAgICAjIFNlbmQgbXNnIHRvIHRoZSBzZXJ2ZXIuCisgICAgICAgIHJldHVybiBzZWxmLmNsaV9zb2NrLnNlbmQobXNnKQorCisgICAgIyBUdXBsZSBvZiBhbHRlcm5hdGl2ZSBkZWZhdWx0IGFyZ3VtZW50cyBmb3Igc2VuZG1zZygpIHdoZW4gY2FsbGVkCisgICAgIyB2aWEgc2VuZG1zZ1RvU2VydmVyKCkgKGUuZy4gdG8gaW5jbHVkZSBhIGRlc3RpbmF0aW9uIGFkZHJlc3MpLgorICAgIHNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzID0gKCkKKworICAgIGRlZiBzZW5kbXNnVG9TZXJ2ZXIoc2VsZiwgKmFyZ3MpOgorICAgICAgICAjIENhbGwgc2VuZG1zZygpIG9uIHNlbGYuY2xpX3NvY2sgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLAorICAgICAgICAjIGZpbGxpbmcgaW4gYW55IGFyZ3VtZW50cyB3aGljaCBhcmUgbm90IHN1cHBsaWVkIHdpdGggdGhlCisgICAgICAgICMgY29ycmVzcG9uZGluZyBpdGVtcyBvZiBzZWxmLnNlbmRtc2dfdG9fc2VydmVyX2RlZmF1bHRzLCBpZgorICAgICAgICAjIGFueS4KKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX3NvY2suc2VuZG1zZygKKyAgICAgICAgICAgICooYXJncyArIHNlbGYuc2VuZG1zZ190b19zZXJ2ZXJfZGVmYXVsdHNbbGVuKGFyZ3MpOl0pKQorCisgICAgZGVmIGRvUmVjdm1zZyhzZWxmLCBzb2NrLCBidWZzaXplLCAqYXJncyk6CisgICAgICAgICMgQ2FsbCByZWN2bXNnKCkgb24gc29jayB3aXRoIGdpdmVuIGFyZ3VtZW50cyBhbmQgcmV0dXJuIGl0cworICAgICAgICAjIHJlc3VsdC4gIFNob3VsZCBiZSB1c2VkIGZvciB0ZXN0cyB3aGljaCBjYW4gdXNlIGVpdGhlcgorICAgICAgICAjIHJlY3Ztc2coKSBvciByZWN2bXNnX2ludG8oKSAtIFJlY3Ztc2dJbnRvTWl4aW4gb3ZlcnJpZGVzCisgICAgICAgICMgdGhpcyBtZXRob2Qgd2l0aCBvbmUgd2hpY2ggZW11bGF0ZXMgaXQgdXNpbmcgcmVjdm1zZ19pbnRvKCksCisgICAgICAgICMgdGh1cyBhbGxvd2luZyB0aGUgc2FtZSB0ZXN0IHRvIGJlIHVzZWQgZm9yIGJvdGggbWV0aG9kcy4KKyAgICAgICAgcmVzdWx0ID0gc29jay5yZWN2bXNnKGJ1ZnNpemUsICphcmdzKQorICAgICAgICBzZWxmLnJlZ2lzdGVyUmVjdm1zZ1Jlc3VsdChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiByZWdpc3RlclJlY3Ztc2dSZXN1bHQoc2VsZiwgcmVzdWx0KToKKyAgICAgICAgIyBDYWxsZWQgYnkgZG9SZWN2bXNnKCkgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlY3Ztc2coKSBvcgorICAgICAgICAjIHJlY3Ztc2dfaW50bygpLiAgQ2FuIGJlIG92ZXJyaWRkZW4gdG8gYXJyYW5nZSBjbGVhbnVwIGJhc2VkCisgICAgICAgICMgb24gdGhlIHJldHVybmVkIGFuY2lsbGFyeSBkYXRhLCBmb3IgaW5zdGFuY2UuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBjaGVja1JlY3Ztc2dBZGRyZXNzKHNlbGYsIGFkZHIxLCBhZGRyMik6CisgICAgICAgICMgQ2FsbGVkIHRvIGNvbXBhcmUgdGhlIHJlY2VpdmVkIGFkZHJlc3Mgd2l0aCB0aGUgYWRkcmVzcyBvZgorICAgICAgICAjIHRoZSBwZWVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFkZHIxLCBhZGRyMikKKworICAgICMgRmxhZ3MgdGhhdCBhcmUgbm9ybWFsbHkgdW5zZXQgaW4gbXNnX2ZsYWdzCisgICAgbXNnX2ZsYWdzX2NvbW1vbl91bnNldCA9IDAKKyAgICBmb3IgbmFtZSBpbiAoIk1TR19DVFJVTkMiLCAiTVNHX09PQiIpOgorICAgICAgICBtc2dfZmxhZ3NfY29tbW9uX3Vuc2V0IHw9IGdldGF0dHIoc29ja2V0LCBuYW1lLCAwKQorCisgICAgIyBGbGFncyB0aGF0IGFyZSBub3JtYWxseSBzZXQKKyAgICBtc2dfZmxhZ3NfY29tbW9uX3NldCA9IDAKKworICAgICMgRmxhZ3Mgc2V0IHdoZW4gYSBjb21wbGV0ZSByZWNvcmQgaGFzIGJlZW4gcmVjZWl2ZWQgKGUuZy4gTVNHX0VPUgorICAgICMgZm9yIFNDVFApCisgICAgbXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgPSAwCisKKyAgICAjIEZsYWdzIHNldCB3aGVuIGEgY29tcGxldGUgcmVjb3JkIGhhcyBub3QgYmVlbiByZWNlaXZlZAorICAgICMgKGUuZy4gTVNHX1RSVU5DIGZvciBkYXRhZ3JhbSBzb2NrZXRzKQorICAgIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciA9IDAKKworICAgIGRlZiBjaGVja0ZsYWdzKHNlbGYsIGZsYWdzLCBlb3I9Tm9uZSwgY2hlY2tzZXQ9MCwgY2hlY2t1bnNldD0wLCBpZ25vcmU9MCk6CisgICAgICAgICMgTWV0aG9kIHRvIGNoZWNrIHRoZSB2YWx1ZSBvZiBtc2dfZmxhZ3MgcmV0dXJuZWQgYnkgcmVjdm1zZ1tfaW50b10oKS4KKyAgICAgICAgIworICAgICAgICAjIENoZWNrcyB0aGF0IGFsbCBiaXRzIGluIG1zZ19mbGFnc19jb21tb25fc2V0IGF0dHJpYnV0ZSBhcmUKKyAgICAgICAgIyBzZXQgaW4gImZsYWdzIiBhbmQgYWxsIGJpdHMgaW4gbXNnX2ZsYWdzX2NvbW1vbl91bnNldCBhcmUKKyAgICAgICAgIyB1bnNldC4KKyAgICAgICAgIworICAgICAgICAjIFRoZSAiZW9yIiBhcmd1bWVudCBzcGVjaWZpZXMgd2hldGhlciB0aGUgZmxhZ3Mgc2hvdWxkCisgICAgICAgICMgaW5kaWNhdGUgdGhhdCBhIGZ1bGwgcmVjb3JkIChvciBkYXRhZ3JhbSkgaGFzIGJlZW4gcmVjZWl2ZWQuCisgICAgICAgICMgSWYgImVvciIgaXMgTm9uZSwgbm8gY2hlY2tzIGFyZSBkb25lOyBvdGhlcndpc2UsIGNoZWNrcworICAgICAgICAjIHRoYXQ6CisgICAgICAgICMKKyAgICAgICAgIyAgKiBpZiAiZW9yIiBpcyB0cnVlLCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciBhcmUKKyAgICAgICAgIyAgICBzZXQgYW5kIGFsbCBiaXRzIGluIG1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciBhcmUgdW5zZXQKKyAgICAgICAgIworICAgICAgICAjICAqIGlmICJlb3IiIGlzIGZhbHNlLCBhbGwgYml0cyBpbiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgIyAgICBhcmUgc2V0IGFuZCBhbGwgYml0cyBpbiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvciBhcmUgdW5zZXQKKyAgICAgICAgIworICAgICAgICAjIElmICJjaGVja3NldCIgYW5kL29yICJjaGVja3Vuc2V0IiBhcmUgc3VwcGxpZWQsIHRoZXkgcmVxdWlyZQorICAgICAgICAjIHRoZSBnaXZlbiBiaXRzIHRvIGJlIHNldCBvciB1bnNldCByZXNwZWN0aXZlbHksIG92ZXJyaWRpbmcKKyAgICAgICAgIyB3aGF0IHRoZSBhdHRyaWJ1dGVzIHJlcXVpcmUgZm9yIHRob3NlIGJpdHMuCisgICAgICAgICMKKyAgICAgICAgIyBJZiBhbnkgYml0cyBhcmUgc2V0IGluICJpZ25vcmUiLCB0aGV5IHdpbGwgbm90IGJlIGNoZWNrZWQsCisgICAgICAgICMgcmVnYXJkbGVzcyBvZiB0aGUgb3RoZXIgaW5wdXRzLgorICAgICAgICAjCisgICAgICAgICMgV2lsbCByYWlzZSBFeGNlcHRpb24gaWYgdGhlIGlucHV0cyByZXF1aXJlIGEgYml0IHRvIGJlIGJvdGgKKyAgICAgICAgIyBzZXQgYW5kIHVuc2V0LCBhbmQgaXQgaXMgbm90IGlnbm9yZWQuCisKKyAgICAgICAgZGVmYXVsdHNldCA9IHNlbGYubXNnX2ZsYWdzX2NvbW1vbl9zZXQKKyAgICAgICAgZGVmYXVsdHVuc2V0ID0gc2VsZi5tc2dfZmxhZ3NfY29tbW9uX3Vuc2V0CisKKyAgICAgICAgaWYgZW9yOgorICAgICAgICAgICAgZGVmYXVsdHNldCB8PSBzZWxmLm1zZ19mbGFnc19lb3JfaW5kaWNhdG9yCisgICAgICAgICAgICBkZWZhdWx0dW5zZXQgfD0gc2VsZi5tc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3IKKyAgICAgICAgZWxpZiBlb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkZWZhdWx0c2V0IHw9IHNlbGYubXNnX2ZsYWdzX25vbl9lb3JfaW5kaWNhdG9yCisgICAgICAgICAgICBkZWZhdWx0dW5zZXQgfD0gc2VsZi5tc2dfZmxhZ3NfZW9yX2luZGljYXRvcgorCisgICAgICAgICMgRnVuY3Rpb24gYXJndW1lbnRzIG92ZXJyaWRlIGRlZmF1bHRzCisgICAgICAgIGRlZmF1bHRzZXQgJj0gfmNoZWNrdW5zZXQKKyAgICAgICAgZGVmYXVsdHVuc2V0ICY9IH5jaGVja3NldAorCisgICAgICAgICMgTWVyZ2UgYXJndW1lbnRzIHdpdGggcmVtYWluaW5nIGRlZmF1bHRzLCBhbmQgY2hlY2sgZm9yIGNvbmZsaWN0cworICAgICAgICBjaGVja3NldCB8PSBkZWZhdWx0c2V0CisgICAgICAgIGNoZWNrdW5zZXQgfD0gZGVmYXVsdHVuc2V0CisgICAgICAgIGluYm90aCA9IGNoZWNrc2V0ICYgY2hlY2t1bnNldCAmIH5pZ25vcmUKKyAgICAgICAgaWYgaW5ib3RoOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJjb250cmFkaWN0b3J5IHNldCwgdW5zZXQgcmVxdWlyZW1lbnRzIGZvciBmbGFncyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInswOiN4fSIuZm9ybWF0KGluYm90aCkpCisKKyAgICAgICAgIyBDb21wYXJlIHdpdGggZ2l2ZW4gbXNnX2ZsYWdzIHZhbHVlCisgICAgICAgIG1hc2sgPSAoY2hlY2tzZXQgfCBjaGVja3Vuc2V0KSAmIH5pZ25vcmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFncyAmIG1hc2ssIGNoZWNrc2V0ICYgbWFzaykKKworCitjbGFzcyBSZWN2bXNnSW50b01peGluKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBNaXhpbiB0byBpbXBsZW1lbnQgZG9SZWN2bXNnKCkgdXNpbmcgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgZG9SZWN2bXNnKHNlbGYsIHNvY2ssIGJ1ZnNpemUsICphcmdzKToKKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGJ1ZnNpemUpCisgICAgICAgIHJlc3VsdCA9IHNvY2sucmVjdm1zZ19pbnRvKFtidWZdLCAqYXJncykKKyAgICAgICAgc2VsZi5yZWdpc3RlclJlY3Ztc2dSZXN1bHQocmVzdWx0KQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXN1bHRbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJlc3VsdFswXSwgYnVmc2l6ZSkKKyAgICAgICAgcmV0dXJuIChieXRlcyhidWZbOnJlc3VsdFswXV0pLCkgKyByZXN1bHRbMTpdCisKKworY2xhc3MgU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZShTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgRGVmaW5lcyBmbGFncyB0byBiZSBjaGVja2VkIGluIG1zZ19mbGFncyBmb3IgZGF0YWdyYW0gc29ja2V0cy4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtc2dfZmxhZ3Nfbm9uX2Vvcl9pbmRpY2F0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLm1zZ19mbGFnc19ub25fZW9yX2luZGljYXRvciB8IHNvY2tldC5NU0dfVFJVTkMKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NDVFBGbGFnc0Jhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIERlZmluZXMgZmxhZ3MgdG8gYmUgY2hlY2tlZCBpbiBtc2dfZmxhZ3MgZm9yIFNDVFAgc29ja2V0cy4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBtc2dfZmxhZ3NfZW9yX2luZGljYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHN1cGVyKCkubXNnX2ZsYWdzX2Vvcl9pbmRpY2F0b3IgfCBzb2NrZXQuTVNHX0VPUgorCisKK2NsYXNzIFNlbmRyZWN2bXNnQ29ubmVjdGlvbmxlc3NCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIGZvciB0ZXN0cyBvbiBjb25uZWN0aW9ubGVzcy1tb2RlIHNvY2tldHMuICBVc2VycyBtdXN0CisgICAgIyBzdXBwbHkgc29ja2V0cyBvbiBhdHRyaWJ1dGVzIGNsaSBhbmQgc2VydiB0byBiZSBtYXBwZWQgdG8KKyAgICAjIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNsaV9zb2NrKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZW5kbXNnX3RvX3NlcnZlcl9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIChbXSwgW10sIDAsIHNlbGYuc2Vydl9hZGRyKQorCisgICAgZGVmIHNlbmRUb1NlcnZlcihzZWxmLCBtc2cpOgorICAgICAgICByZXR1cm4gc2VsZi5jbGlfc29jay5zZW5kdG8obXNnLCBzZWxmLnNlcnZfYWRkcikKKworCitjbGFzcyBTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UoU2VuZHJlY3Ztc2dCYXNlKToKKyAgICAjIEJhc2UgY2xhc3MgZm9yIHRlc3RzIG9uIGNvbm5lY3RlZCBzb2NrZXRzLiAgVXNlcnMgbXVzdCBzdXBwbHkKKyAgICAjIHNvY2tldHMgb24gYXR0cmlidXRlcyBzZXJ2X2Nvbm4gYW5kIGNsaV9jb25uIChyZXByZXNlbnRpbmcgdGhlCisgICAgIyBjb25uZWN0aW9ucyAqdG8qIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGllbnQpLCB0byBiZSBtYXBwZWQgdG8KKyAgICAjIGNsaV9zb2NrIGFuZCBzZXJ2X3NvY2sgcmVzcGVjdGl2ZWx5LgorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlcnZfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY2xpX2Nvbm4KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBjbGlfc29jayhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vydl9jb25uCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnQWRkcmVzcyhzZWxmLCBhZGRyMSwgYWRkcjIpOgorICAgICAgICAjIEFkZHJlc3MgaXMgY3VycmVudGx5ICJ1bnNwZWNpZmllZCIgZm9yIGEgY29ubmVjdGVkIHNvY2tldCwKKyAgICAgICAgIyBzbyB3ZSBkb24ndCBleGFtaW5lIGl0CisgICAgICAgIHBhc3MKKworCitjbGFzcyBTZW5kcmVjdm1zZ1NlcnZlclRpbWVvdXRCYXNlKFNlbmRyZWN2bXNnQmFzZSk6CisgICAgIyBCYXNlIGNsYXNzIHRvIHNldCBhIHRpbWVvdXQgb24gc2VydmVyJ3Mgc29ja2V0LgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0dGltZW91dChzZWxmLmZhaWxfdGltZW91dCkKKworCitjbGFzcyBTZW5kbXNnVGVzdHMoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0cyBmb3Igc2VuZG1zZygpIHdoaWNoIGNhbiB1c2UgYW55IHNvY2tldCB0eXBlIGFuZCBkbyBub3QKKyAgICAjIGludm9sdmUgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpLgorCisgICAgZGVmIHRlc3RTZW5kbXNnKHNlbGYpOgorICAgICAgICAjIFNlbmQgYSBzaW1wbGUgbWVzc2FnZSB3aXRoIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSksIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnRGF0YUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBTZW5kIGZyb20gYnVmZmVyIG9idGFpbmVkIGZyb20gYSBnZW5lcmF0b3IgKG5vdCBhIHNlcXVlbmNlKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0RhdGFHZW5lcmF0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoKG8gZm9yIG8gaW4gW01TR10pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiB0ZXN0U2VuZG1zZ0FuY2lsbGFyeUdlbmVyYXRvcihzZWxmKToKKyAgICAgICAgIyBHYXRoZXIgKGVtcHR5KSBhbmNpbGxhcnkgZGF0YSBmcm9tIGEgZ2VuZXJhdG9yLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQW5jaWxsYXJ5R2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCAobyBmb3IgbyBpbiBbXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnQXJyYXkoc2VsZik6CisgICAgICAgICMgU2VuZCBkYXRhIGZyb20gYW4gYXJyYXkgaW5zdGVhZCBvZiB0aGUgdXN1YWwgYnl0ZXMgb2JqZWN0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2Vydl9zb2NrLnJlY3YobGVuKE1TRykpLCBNU0cpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnQXJyYXkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW2FycmF5LmFycmF5KCJCIiwgTVNHKV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RTZW5kbXNnR2F0aGVyKHNlbGYpOgorICAgICAgICAjIFNlbmQgbWVzc2FnZSBkYXRhIGZyb20gbW9yZSB0aGFuIG9uZSBidWZmZXIgKGdhdGhlciB3cml0ZSkuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdihsZW4oTVNHKSksIE1TRykKKworICAgIGRlZiBfdGVzdFNlbmRtc2dHYXRoZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR1s6M10sIE1TR1szOl1dKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIHJlamVjdHMgaW52YWxpZCBhcmd1bWVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYiJub3QgaW4gYW4gaXRlcmFibGUiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TRywgb2JqZWN0KCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbXSwgMCwgb2JqZWN0KCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRDbXNnKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgaW52YWxpZCBhbmNpbGxhcnkgZGF0YSBpdGVtcyBhcmUgcmVqZWN0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRDbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW29iamVjdCgpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsob2JqZWN0KCksIDAsIGIiZGF0YSIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgb2JqZWN0KCksIGIiZGF0YSIpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgb2JqZWN0KCkpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgWygwLCAwLCBiImRhdGEiLCA0MildKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIikKKyAgICBkZWYgdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2coc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBpbnZhbGlkIGFuY2lsbGFyeSBkYXRhIGl0ZW1zIGFyZSByZWplY3RlZCB3aGVuCisgICAgICAgICMgbW9yZSB0aGFuIG9uZSBpdGVtIGlzIHByZXNlbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIEB0ZXN0U2VuZG1zZ0JhZE11bHRpQ21zZy5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlbmRtc2dCYWRNdWx0aUNtc2coc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtNU0ddLCBbMCwgMCwgYiIiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlbmRtc2dUb1NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10sIFsoMCwgMCwgYiIiKSwgb2JqZWN0KCldKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihiImRvbmUiKQorCisgICAgZGVmIHRlc3RTZW5kbXNnRXhjZXNzQ21zZ1JlamVjdChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHNlbmRtc2coKSByZWplY3RzIGV4Y2VzcyBhbmNpbGxhcnkgZGF0YSBpdGVtcworICAgICAgICAjIHdoZW4gdGhlIG51bWJlciB0aGF0IGNhbiBiZSBzZW50IGlzIGxpbWl0ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdigxMDAwKSwgYiJkb25lIikKKworICAgIGRlZiBfdGVzdFNlbmRtc2dFeGNlc3NDbXNnUmVqZWN0KHNlbGYpOgorICAgICAgICBpZiBub3QgaGFzYXR0cihzb2NrZXQsICJDTVNHX1NQQUNFIik6CisgICAgICAgICAgICAjIENhbiBvbmx5IHNlbmQgb25lIGl0ZW0KKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwgWygwLCAwLCBiIiIpLCAoMCwgMCwgYiIiKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjbS5leGNlcHRpb24uZXJybm8pCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiZG9uZSIpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIGZhaWxzIG9uIGEgY2xvc2VkIHNvY2tldC4KKyAgICAgICAgcGFzcworCisgICAgZGVmIF90ZXN0U2VuZG1zZ0FmdGVyQ2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuY2xpX3NvY2suY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuc2VuZG1zZ1RvU2VydmVyLCBbTVNHXSkKKworCitjbGFzcyBTZW5kbXNnU3RyZWFtVGVzdHMoU2VuZG1zZ1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciBzZW5kbXNnKCkgd2hpY2ggcmVxdWlyZSBhIHN0cmVhbSBzb2NrZXQgYW5kIGRvIG5vdAorICAgICMgaW52b2x2ZSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2dFeHBsaWNpdE5vbmVBZGRyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcGVlciBhZGRyZXNzIGNhbiBiZSBzcGVjaWZpZWQgYXMgTm9uZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KGxlbihNU0cpKSwgTVNHKQorCisgICAgZGVmIF90ZXN0U2VuZG1zZ0V4cGxpY2l0Tm9uZUFkZHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sIFtdLCAwLCBOb25lKSwgbGVuKE1TRykpCisKKyAgICBkZWYgdGVzdFNlbmRtc2dUaW1lb3V0KHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGltZW91dCB3b3JrcyB3aXRoIHNlbmRtc2coKS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNlcnZfc29jay5yZWN2KDUxMiksIGIiYSIqNTEyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisKKyAgICBkZWYgX3Rlc3RTZW5kbXNnVGltZW91dChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5jbGlfc29jay5zZXR0aW1lb3V0KDAuMDMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0KToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbYiJhIio1MTJdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisKKyAgICAjIFhYWDogd291bGQgYmUgbmljZSB0byBoYXZlIG1vcmUgdGVzdHMgZm9yIHNlbmRtc2cgZmxhZ3MgYXJndW1lbnQuCisKKyAgICAjIExpbnV4IHN1cHBvcnRzIE1TR19ET05UV0FJVCB3aGVuIHNlbmRpbmcsIGJ1dCBpbiBnZW5lcmFsLCBpdAorICAgICMgb25seSB3b3JrcyB3aGVuIHJlY2VpdmluZy4gIENvdWxkIGFkZCBvdGhlciBwbGF0Zm9ybXMgaWYgdGhleQorICAgICMgc3VwcG9ydCBpdCB0b28uCisgICAgQHNraXBXaXRoQ2xpZW50SWYoc3lzLnBsYXRmb3JtIG5vdCBpbiB7ImxpbnV4MiJ9LAorICAgICAgICAgICAgICAgICAgICAgICJNU0dfRE9OVFdBSVQgbm90IGtub3duIHRvIHdvcmsgb24gdGhpcyBwbGF0Zm9ybSB3aGVuICIKKyAgICAgICAgICAgICAgICAgICAgICAic2VuZGluZyIpCisgICAgZGVmIHRlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBNU0dfRE9OVFdBSVQgaW4gZmxhZ3MgY2F1c2VzIG5vbi1ibG9ja2luZyBiZWhhdmlvdXIuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zZXJ2X3NvY2sucmVjdig1MTIpLCBiImEiKjUxMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorCisgICAgQHRlc3RTZW5kbXNnRG9udFdhaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZW5kbXNnRG9udFdhaXQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbYiJhIio1MTJdLCBbXSwgc29ja2V0Lk1TR19ET05UV0FJVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oY20uZXhjZXB0aW9uLmVycm5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLm1pc2NfZXZlbnQuc2V0KCkKKworCitjbGFzcyBTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cyhTZW5kbXNnVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHNlbmRtc2coKSB3aGljaCByZXF1aXJlIGEgY29ubmVjdGlvbmxlc3MtbW9kZQorICAgICMgKGUuZy4gZGF0YWdyYW0pIHNvY2tldCwgYW5kIGRvIG5vdCBpbnZvbHZlIHJlY3Ztc2coKSBvcgorICAgICMgcmVjdm1zZ19pbnRvKCkuCisKKyAgICBkZWYgdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgc2VuZG1zZygpIGZhaWxzIHdoZW4gbm8gZGVzdGluYXRpb24gYWRkcmVzcyBpcworICAgICAgICAjIGdpdmVuIGZvciB1bmNvbm5lY3RlZCBzb2NrZXQuCisgICAgICAgIHBhc3MKKworICAgIGRlZiBfdGVzdFNlbmRtc2dOb0Rlc3RBZGRyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlbGYuY2xpX3NvY2suc2VuZG1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW01TR10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC5lcnJvciwgc2VsZi5jbGlfc29jay5zZW5kbXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbTVNHXSwgW10sIDAsIE5vbmUpCisKKworY2xhc3MgUmVjdm1zZ0dlbmVyaWNUZXN0cyhTZW5kcmVjdm1zZ0Jhc2UpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2coKSB3aGljaCBjYW4gYWxzbyBiZSBlbXVsYXRlZCB1c2luZworICAgICMgcmVjdm1zZ19pbnRvKCksIGFuZCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZyhzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGEgc2ltcGxlIG1lc3NhZ2Ugd2l0aCByZWN2bXNnW19pbnRvXSgpLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2coc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ0V4cGxpY2l0RGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCByZWN2bXNnW19pbnRvXSgpIHdpdGggZGVmYXVsdCBhcmd1bWVudHMgcHJvdmlkZWQgZXhwbGljaXRseS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0V4cGxpY2l0RGVmYXVsdHMoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIGRlZiB0ZXN0UmVjdm1zZ1Nob3J0ZXIoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIG1lc3NhZ2Ugc21hbGxlciB0aGFuIGJ1ZmZlci4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgKyA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnU2hvcnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBGcmVlQlNEIDwgOCBkb2Vzbid0IGFsd2F5cyBzZXQgdGhlIE1TR19UUlVOQyBmbGFnIHdoZW4gYSB0cnVuY2F0ZWQKKyAgICAjIGRhdGFncmFtIGlzIHJlY2VpdmVkIChpc3N1ZSAjMTMwMDEpLgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2ZyZWVic2RfdmVyc2lvbig4KQorICAgIGRlZiB0ZXN0UmVjdm1zZ1RydW5jKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgcGFydCBvZiBtZXNzYWdlLCBjaGVjayBmb3IgdHJ1bmNhdGlvbiBpbmRpY2F0b3JzLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0dbOi0zXSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPUZhbHNlKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfZnJlZWJzZF92ZXJzaW9uKDgpCisgICAgZGVmIF90ZXN0UmVjdm1zZ1RydW5jKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dTaG9ydEFuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciB0b28gc21hbGwgdG8gaG9sZCBhbnkgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dTaG9ydEFuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnTG9uZ0FuY2lsbGFyeUJ1ZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGxhcmdlIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlci4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dMb25nQW5jaWxsYXJ5QnVmKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dBZnRlckNsb3NlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZ1tfaW50b10oKSBmYWlscyBvbiBhIGNsb3NlZCBzb2NrZXQuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzZWxmLmRvUmVjdm1zZywgc2VsZi5zZXJ2X3NvY2ssIDEwMjQpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnQWZ0ZXJDbG9zZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRpbWVvdXQgd29ya3MuCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHRpbWVvdXQoMC4wMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNvY2tldC50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb1JlY3Ztc2csIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiTVNHX1BFRUsiKQorICAgIGRlZiB0ZXN0UmVjdm1zZ1BlZWsoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBNU0dfUEVFSyBpbiBmbGFncyBlbmFibGVzIGV4YW1pbmF0aW9uIG9mIHBlbmRpbmcKKyAgICAgICAgIyBkYXRhIHdpdGhvdXQgY29uc3VtaW5nIGl0LgorCisgICAgICAgICMgUmVjZWl2ZSBwYXJ0IG9mIGRhdGEgd2l0aCBNU0dfUEVFSy4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRykgLSAzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0Lk1TR19QRUVLKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHWzotM10pCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICAjIElnbm9yaW5nIE1TR19UUlVOQyBoZXJlIChzbyB0aGlzIHRlc3QgaXMgdGhlIHNhbWUgZm9yIHN0cmVhbQorICAgICAgICAjIGFuZCBkYXRhZ3JhbSBzb2NrZXRzKS4gIFNvbWUgd29yZGluZyBpbiBQT1NJWCBzZWVtcyB0bworICAgICAgICAjIHN1Z2dlc3QgdGhhdCBpdCBuZWVkbid0IGJlIHNldCB3aGVuIHBlZWtpbmcsIGJ1dCB0aGF0IG1heQorICAgICAgICAjIGp1c3QgYmUgYSBzbGlwLgorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1nZXRhdHRyKHNvY2tldCwgIk1TR19UUlVOQyIsIDApKQorCisgICAgICAgICMgUmVjZWl2ZSBhbGwgZGF0YSB3aXRoIE1TR19QRUVLLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5NU0dfUEVFSykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBzYW1lIGRhdGEgY2FuIHN0aWxsIGJlIHJlY2VpdmVkIG5vcm1hbGx5LgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIEB0ZXN0UmVjdm1zZ1BlZWsuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2bXNnUGVlayhzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCisgICAgZGVmIHRlc3RSZWN2bXNnRnJvbVNlbmRtc2coc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgd2l0aCByZWN2bXNnW19pbnRvXSgpIHdoZW4gbWVzc2FnZSBpcyBzZW50CisgICAgICAgICMgdXNpbmcgc2VuZG1zZygpLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXR0aW1lb3V0KHNlbGYuZmFpbF90aW1lb3V0KQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIEB0ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdm1zZ0Zyb21TZW5kbXNnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0dbOjNdLCBNU0dbMzpdXSksIGxlbihNU0cpKQorCisKK2NsYXNzIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMoUmVjdm1zZ0dlbmVyaWNUZXN0cyk6CisgICAgIyBUZXN0cyB3aGljaCByZXF1aXJlIGEgc3RyZWFtIHNvY2tldCBhbmQgY2FuIHVzZSBlaXRoZXIgcmVjdm1zZygpCisgICAgIyBvciByZWN2bXNnX2ludG8oKS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0VPRihzZWxmKToKKyAgICAgICAgIyBSZWNlaXZlIGVuZC1vZi1zdHJlYW0gaW5kaWNhdG9yIChiIiIsIHBlZXIgc29ja2V0IGNsb3NlZCkuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgMTAyNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIGIiIikKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPU5vbmUpICMgTWlnaHQgbm90IGhhdmUgZW5kLW9mLXJlY29yZCBtYXJrZXIKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dFT0Yoc2VsZik6CisgICAgICAgIHNlbGYuY2xpX3NvY2suY2xvc2UoKQorCisgICAgZGVmIHRlc3RSZWN2bXNnT3ZlcmZsb3coc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBhIG1lc3NhZ2UgaW4gbW9yZSB0aGFuIG9uZSBjaHVuay4KKyAgICAgICAgc2VnMSwgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSAtIDMpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1GYWxzZSkKKworICAgICAgICBzZWcyLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCAxMDI0KQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgICAgICBtc2cgPSBzZWcxICsgc2VnMgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ092ZXJmbG93KHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworY2xhc3MgUmVjdm1zZ1Rlc3RzKFJlY3Ztc2dHZW5lcmljVGVzdHMpOgorICAgICMgVGVzdHMgZm9yIHJlY3Ztc2coKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0JhZEFyZ3Moc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCByZWN2bXNnKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIC0xLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtieXRlYXJyYXkoMTApXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QoKSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgb2JqZWN0KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDAsIG9iamVjdCgpKQorCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnKGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dCYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKworY2xhc3MgUmVjdm1zZ0ludG9UZXN0cyhSZWN2bXNnSW50b01peGluLCBSZWN2bXNnR2VuZXJpY1Rlc3RzKToKKyAgICAjIFRlc3RzIGZvciByZWN2bXNnX2ludG8oKSB3aGljaCBjYW4gdXNlIGFueSBzb2NrZXQgdHlwZS4KKworICAgIGRlZiB0ZXN0UmVjdm1zZ0ludG9CYWRBcmdzKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgcmVjdm1zZ19pbnRvKCkgcmVqZWN0cyBpbnZhbGlkIGFyZ3VtZW50cy4KKyAgICAgICAgYnVmID0gYnl0ZWFycmF5KGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW29iamVjdCgpXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtiIkknbSBub3Qgd3JpdGFibGUiXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtidWYsIG9iamVjdCgpXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgLTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgb2JqZWN0KCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5zZXJ2X3NvY2sucmVjdm1zZ19pbnRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbYnVmXSwgMCwgb2JqZWN0KCkpCisKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50byhbYnVmXSwgMCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihNU0cpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KE1TRykpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9CYWRBcmdzKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICAjIFJlY2VpdmUgaW50byBidWZmZXIgb2J0YWluZWQgZnJvbSBhIGdlbmVyYXRvciAobm90IGEgc2VxdWVuY2UpLgorICAgICAgICBidWYgPSBieXRlYXJyYXkobGVuKE1TRykpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oCisgICAgICAgICAgICAobyBmb3IgbyBpbiBbYnVmXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShNU0cpKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSkKKworICAgIGRlZiBfdGVzdFJlY3Ztc2dJbnRvR2VuZXJhdG9yKHNlbGYpOgorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBkZWYgdGVzdFJlY3Ztc2dJbnRvQXJyYXkoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIGFuIGFycmF5IHJhdGhlciB0aGFuIHRoZSB1c3VhbCBieXRlYXJyYXkuCisgICAgICAgIGJ1ZiA9IGFycmF5LmFycmF5KCJCIiwgWzBdICogbGVuKE1TRykpCisgICAgICAgIG5ieXRlcywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLnNlcnZfc29jay5yZWN2bXNnX2ludG8oW2J1Zl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4oTVNHKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYudG9ieXRlcygpLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlKQorCisgICAgZGVmIF90ZXN0UmVjdm1zZ0ludG9BcnJheShzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIHRlc3RSZWN2bXNnSW50b1NjYXR0ZXIoc2VsZik6CisgICAgICAgICMgUmVjZWl2ZSBpbnRvIG11bHRpcGxlIGJ1ZmZlcnMgKHNjYXR0ZXIgd3JpdGUpLgorICAgICAgICBiMSA9IGJ5dGVhcnJheShiIi0tLS0iKQorICAgICAgICBiMiA9IGJ5dGVhcnJheShiIjAxMjM0NTY3ODkiKQorICAgICAgICBiMyA9IGJ5dGVhcnJheShiIi0tLS0tLS0tLS0tLS0tIikKKyAgICAgICAgbmJ5dGVzLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuc2Vydl9zb2NrLnJlY3Ztc2dfaW50bygKKyAgICAgICAgICAgIFtiMSwgbWVtb3J5dmlldyhiMilbMjo5XSwgYjNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKGIiTWFyeSBoYWQgYSBsaXR0bGUgbGFtYiIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIxLCBieXRlYXJyYXkoYiJNYXJ5IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYjIsIGJ5dGVhcnJheShiIjAxIGhhZCBhIDkiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiMywgYnl0ZWFycmF5KGIibGl0dGxlIGxhbWItLS0iKSkKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5jZGF0YSwgW10pCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUpCisKKyAgICBkZWYgX3Rlc3RSZWN2bXNnSW50b1NjYXR0ZXIoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKGIiTWFyeSBoYWQgYSBsaXR0bGUgbGFtYiIpCisKKworY2xhc3MgQ21zZ01hY3JvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB0aGUgZnVuY3Rpb25zIENNU0dfTEVOKCkgYW5kIENNU0dfU1BBQ0UoKS4gIFRlc3RzCisgICAgIyBhc3N1bXB0aW9ucyB1c2VkIGJ5IHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSwgd2hpY2ggc2hhcmUKKyAgICAjIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMuCisKKyAgICAjIE1hdGNoIHRoZSBkZWZpbml0aW9uIGluIHNvY2tldG1vZHVsZS5jCisgICAgc29ja2xlbl90X2xpbWl0ID0gbWluKDB4N2ZmZmZmZmYsIF90ZXN0Y2FwaS5JTlRfTUFYKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX0xFTiIpCisgICAgZGVmIHRlc3RDTVNHX0xFTihzZWxmKToKKyAgICAgICAgIyBUZXN0IENNU0dfTEVOKCkgd2l0aCB2YXJpb3VzIHZhbGlkIGFuZCBpbnZhbGlkIHZhbHVlcywKKyAgICAgICAgIyBjaGVja2luZyB0aGUgYXNzdW1wdGlvbnMgdXNlZCBieSByZWN2bXNnKCkgYW5kIHNlbmRtc2coKS4KKyAgICAgICAgdG9vYmlnID0gc2VsZi5zb2NrbGVuX3RfbGltaXQgLSBzb2NrZXQuQ01TR19MRU4oMCkgKyAxCisgICAgICAgIHZhbHVlcyA9IGxpc3QocmFuZ2UoMjU3KSkgKyBsaXN0KHJhbmdlKHRvb2JpZyAtIDI1NywgdG9vYmlnKSkKKworICAgICAgICAjIHN0cnVjdCBjbXNnaGRyIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2Ygd2hpY2ggYXJlIGludHMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNvY2tldC5DTVNHX0xFTigwKSwgYXJyYXkuYXJyYXkoImkiKS5pdGVtc2l6ZSAqIDIpCisgICAgICAgIGZvciBuIGluIHZhbHVlczoKKyAgICAgICAgICAgIHJldCA9IHNvY2tldC5DTVNHX0xFTihuKQorICAgICAgICAgICAgIyBUaGlzIGlzIGhvdyByZWN2bXNnKCkgY2FsY3VsYXRlcyB0aGUgZGF0YSBzaXplCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCAtIHNvY2tldC5DTVNHX0xFTigwKSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJldCwgc2VsZi5zb2NrbGVuX3RfbGltaXQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCAtMSkKKyAgICAgICAgIyBzZW5kbXNnKCkgc2hhcmVzIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGFuZCByZXF1aXJlcworICAgICAgICAjIHRoYXQgaXQgcmVqZWN0IHZhbHVlcyBvdmVyIHRoZSBsaW1pdC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfTEVOLCB0b29iaWcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX0xFTiwgc3lzLm1heHNpemUpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IENNU0dfU1BBQ0UoKSB3aXRoIHZhcmlvdXMgdmFsaWQgYW5kIGludmFsaWQgdmFsdWVzLAorICAgICAgICAjIGNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyB1c2VkIGJ5IHNlbmRtc2coKS4KKyAgICAgICAgdG9vYmlnID0gc2VsZi5zb2NrbGVuX3RfbGltaXQgLSBzb2NrZXQuQ01TR19TUEFDRSgxKSArIDEKKyAgICAgICAgdmFsdWVzID0gbGlzdChyYW5nZSgyNTcpKSArIGxpc3QocmFuZ2UodG9vYmlnIC0gMjU3LCB0b29iaWcpKQorCisgICAgICAgIGxhc3QgPSBzb2NrZXQuQ01TR19TUEFDRSgwKQorICAgICAgICAjIHN0cnVjdCBjbXNnaGRyIGhhcyBhdCBsZWFzdCB0aHJlZSBtZW1iZXJzLCB0d28gb2Ygd2hpY2ggYXJlIGludHMKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGxhc3QsIGFycmF5LmFycmF5KCJpIikuaXRlbXNpemUgKiAyKQorICAgICAgICBmb3IgbiBpbiB2YWx1ZXM6CisgICAgICAgICAgICByZXQgPSBzb2NrZXQuQ01TR19TUEFDRShuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBsYXN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwocmV0LCBzb2NrZXQuQ01TR19MRU4obikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChyZXQsIG4gKyBzb2NrZXQuQ01TR19MRU4oMCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChyZXQsIHNlbGYuc29ja2xlbl90X2xpbWl0KQorICAgICAgICAgICAgbGFzdCA9IHJldAorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNvY2tldC5DTVNHX1NQQUNFLCAtMSkKKyAgICAgICAgIyBzZW5kbXNnKCkgc2hhcmVzIGNvZGUgd2l0aCB0aGVzZSBmdW5jdGlvbnMsIGFuZCByZXF1aXJlcworICAgICAgICAjIHRoYXQgaXQgcmVqZWN0IHZhbHVlcyBvdmVyIHRoZSBsaW1pdC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIHRvb2JpZykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc29ja2V0LkNNU0dfU1BBQ0UsIHN5cy5tYXhzaXplKQorCisKK2NsYXNzIFNDTVJpZ2h0c1Rlc3QoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0cyBmb3IgZmlsZSBkZXNjcmlwdG9yIHBhc3Npbmcgb24gVW5peC1kb21haW4gc29ja2V0cy4KKworICAgICMgSW52YWxpZCBmaWxlIGRlc2NyaXB0b3IgdmFsdWUgdGhhdCdzIHVubGlrZWx5IHRvIGV2YWx1YXRlIHRvIGEKKyAgICAjIHJlYWwgRkQgZXZlbiBpZiBvbmUgb2YgaXRzIGJ5dGVzIGlzIHJlcGxhY2VkIHdpdGggYSBkaWZmZXJlbnQKKyAgICAjIHZhbHVlICh3aGljaCBzaG91bGRuJ3QgYWN0dWFsbHkgaGFwcGVuKS4KKyAgICBiYWRmZCA9IC0weDU1NTUKKworICAgIGRlZiBuZXdGRHMoc2VsZiwgbik6CisgICAgICAgICMgUmV0dXJuIGEgbGlzdCBvZiBuIGZpbGUgZGVzY3JpcHRvcnMgZm9yIG5ld2x5LWNyZWF0ZWQgZmlsZXMKKyAgICAgICAgIyBjb250YWluaW5nIHRoZWlyIGxpc3QgaW5kaWNlcyBhcyBBU0NJSSBudW1iZXJzLgorICAgICAgICBmZHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZShuKToKKyAgICAgICAgICAgIGZkLCBwYXRoID0gdGVtcGZpbGUubWtzdGVtcCgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBwYXRoKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLmNsb3NlLCBmZCkKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBzdHIoaSkuZW5jb2RlKCkpCisgICAgICAgICAgICBmZHMuYXBwZW5kKGZkKQorICAgICAgICByZXR1cm4gZmRzCisKKyAgICBkZWYgY2hlY2tGRHMoc2VsZiwgZmRzKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBmaWxlIGRlc2NyaXB0b3JzIGluIHRoZSBnaXZlbiBsaXN0IGNvbnRhaW4KKyAgICAgICAgIyB0aGVpciBjb3JyZWN0IGxpc3QgaW5kaWNlcyBhcyBBU0NJSSBudW1iZXJzLgorICAgICAgICBmb3IgbiwgZmQgaW4gZW51bWVyYXRlKGZkcyk6CisgICAgICAgICAgICBvcy5sc2VlayhmZCwgMCwgb3MuU0VFS19TRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZmQsIDEwMjQpLCBzdHIobikuZW5jb2RlKCkpCisKKyAgICBkZWYgcmVnaXN0ZXJSZWN2bXNnUmVzdWx0KHNlbGYsIHJlc3VsdCk6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLmNsb3NlUmVjdm1zZ0ZEcywgcmVzdWx0KQorCisgICAgZGVmIGNsb3NlUmVjdm1zZ0ZEcyhzZWxmLCByZWN2bXNnX3Jlc3VsdCk6CisgICAgICAgICMgQ2xvc2UgYWxsIGZpbGUgZGVzY3JpcHRvcnMgc3BlY2lmaWVkIGluIHRoZSBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIG9mIHRoZSBnaXZlbiByZXR1cm4gdmFsdWUgZnJvbSByZWN2bXNnKCkgb3IgcmVjdm1zZ19pbnRvKCkuCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiByZWN2bXNnX3Jlc3VsdFsxXToKKyAgICAgICAgICAgIGlmIChjbXNnX2xldmVsID09IHNvY2tldC5TT0xfU09DS0VUIGFuZAorICAgICAgICAgICAgICAgICAgICBjbXNnX3R5cGUgPT0gc29ja2V0LlNDTV9SSUdIVFMpOgorICAgICAgICAgICAgICAgIGZkcyA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY21zZ19kYXRhKSAtIChsZW4oY21zZ19kYXRhKSAlIGZkcy5pdGVtc2l6ZSldKQorICAgICAgICAgICAgICAgIGZvciBmZCBpbiBmZHM6CisgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKGZkKQorCisgICAgZGVmIGNyZWF0ZUFuZFNlbmRGRHMoc2VsZiwgbik6CisgICAgICAgICMgU2VuZCBuIG5ldyBmaWxlIGRlc2NyaXB0b3JzIGNyZWF0ZWQgYnkgbmV3RkRzKCkgdG8gdGhlCisgICAgICAgICMgc2VydmVyLCB3aXRoIHRoZSBjb25zdGFudCBNU0cgYXMgdGhlIG5vbi1hbmNpbGxhcnkgZGF0YS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgc2VsZi5uZXdGRHMobikpKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgY2hlY2tSZWN2bXNnRkRzKHNlbGYsIG51bWZkcywgcmVzdWx0LCBtYXhjbXNncz0xLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGNvbnN0YW50IE1TRyB3YXMgcmVjZWl2ZWQgd2l0aCBudW1mZHMgZmlsZQorICAgICAgICAjIGRlc2NyaXB0b3JzIGluIGEgbWF4aW11bSBvZiBtYXhjbXNncyBjb250cm9sIG1lc3NhZ2VzICh3aGljaAorICAgICAgICAjIG11c3QgY29udGFpbiBvbmx5IGNvbXBsZXRlIGludGVnZXJzKS4gIEJ5IGRlZmF1bHQsIGNoZWNrCisgICAgICAgICMgdGhhdCBNU0dfQ1RSVU5DIGlzIHVuc2V0LCBidXQgaWdub3JlIGFueSBmbGFncyBpbgorICAgICAgICAjIGlnbm9yZWZsYWdzLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShhbmNkYXRhLCBsaXN0KQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIG1heGNtc2dzKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGZvciBpdGVtIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaXRlbSwgdHVwbGUpCisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGl0ZW0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ19sZXZlbCwgc29ja2V0LlNPTF9TT0NLRVQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY21zZ19kYXRhLCBieXRlcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSkgJSBTSVpFT0ZfSU5ULCAwKQorICAgICAgICAgICAgZmRzLmZyb21ieXRlcyhjbXNnX2RhdGEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZmRzKSwgbnVtZmRzKQorICAgICAgICBzZWxmLmNoZWNrRkRzKGZkcykKKworICAgIGRlZiB0ZXN0RkRQYXNzU2ltcGxlKHNlbGYpOgorICAgICAgICAjIFBhc3MgYSBzaW5nbGUgRkQgKGFycmF5IHJlYWQgZnJvbSBieXRlcyBvYmplY3QpLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygxLCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSkKKworICAgIGRlZiBfdGVzdEZEUGFzc1NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgc2VsZi5uZXdGRHMoMSkpLnRvYnl0ZXMoKSldKSwKKyAgICAgICAgICAgIGxlbihNU0cpKQorCisgICAgZGVmIHRlc3RNdWx0aXBsZUZEUGFzcyhzZWxmKToKKyAgICAgICAgIyBQYXNzIG11bHRpcGxlIEZEcyBpbiBhIHNpbmdsZSBhcnJheS4KKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dGRHMoNCwgc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkpCisKKyAgICBkZWYgX3Rlc3RNdWx0aXBsZUZEUGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDQpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzQ01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHVzaW5nIENNU0dfU1BBQ0UoKSB0byBjYWxjdWxhdGUgYW5jaWxsYXJ5IGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygKKyAgICAgICAgICAgIDQsIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKDQgKiBTSVpFT0ZfSU5UKSkpCisKKyAgICBAdGVzdEZEUGFzc0NNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RGRFBhc3NDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoNCkKKworICAgIGRlZiB0ZXN0RkRQYXNzQ01TR19MRU4oc2VsZik6CisgICAgICAgICMgVGVzdCB1c2luZyBDTVNHX0xFTigpIHRvIGNhbGN1bGF0ZSBhbmNpbGxhcnkgYnVmZmVyIHNpemUuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDQgKiBTSVpFT0ZfSU5UKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUkZDIDM1NDIgc2F5cyBpbXBsZW1lbnRhdGlvbnMgbWF5IHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TR19DVFJVTkMgaWYgdGhlcmUgaXNuJ3QgZW5vdWdoIHNwYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHRyYWlsaW5nIHBhZGRpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgZGVmIF90ZXN0RkRQYXNzQ01TR19MRU4oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBJc3N1ZSAjMTI5NTg6IFRoZSBmb2xsb3dpbmcgdGVzdCBoYXMgcHJvYmxlbXMgb24gTWFjIE9TIFgKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIpCisgICAgZGVmIHRlc3RGRFBhc3NTZXBhcmF0ZShzZWxmKToKKyAgICAgICAgIyBQYXNzIHR3byBGRHMgaW4gdHdvIHNlcGFyYXRlIGFycmF5cy4gIEFycmF5cyBtYXkgYmUgY29tYmluZWQKKyAgICAgICAgIyBpbnRvIGEgc2luZ2xlIGNvbnRyb2wgbWVzc2FnZSBieSB0aGUgT1MuCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnRkRzKDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMTAyNDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjbXNncz0yKQorCisgICAgQHRlc3RGRFBhc3NTZXBhcmF0ZS5jbGllbnRfc2tpcAorICAgIEBzdXBwb3J0LmFudGljaXBhdGVfZmFpbHVyZShzeXMucGxhdGZvcm0gPT0gImRhcndpbiIpCisgICAgZGVmIF90ZXN0RkRQYXNzU2VwYXJhdGUoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDBdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgICMgSXNzdWUgIzEyOTU4OiBUaGUgZm9sbG93aW5nIHRlc3QgaGFzIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzU2VwYXJhdGVNaW5TcGFjZShzZWxmKToKKyAgICAgICAgIyBQYXNzIHR3byBGRHMgaW4gdHdvIHNlcGFyYXRlIGFycmF5cywgcmVjZWl2aW5nIHRoZW0gaW50byB0aGUKKyAgICAgICAgIyBtaW5pbXVtIHNwYWNlIGZvciB0d28gYXJyYXlzLgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y21zZ3M9MiwgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2UuY2xpZW50X3NraXAKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiBfdGVzdEZEUGFzc1NlcGFyYXRlTWluU3BhY2Uoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNlbGYuc2VuZG1zZ1RvU2VydmVyKFtNU0ddLCBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LlNDTV9SSUdIVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDBdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrZXQuU09MX1NPQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSksCisgICAgICAgICAgICBsZW4oTVNHKSkKKworICAgIGRlZiBzZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZShzZWxmLCBtc2csIGFuY2RhdGEpOgorICAgICAgICAjIFRyeSB0byBzZW5kIG1zZyBhbmQgYW5jZGF0YSB0byBzZXJ2ZXIsIGJ1dCBpZiB0aGUgc3lzdGVtCisgICAgICAgICMgY2FsbCBmYWlscywganVzdCBzZW5kIG1zZyB3aXRoIG5vIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSwgYW5jZGF0YSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IGl0IHdhcyB0aGUgc3lzdGVtIGNhbGwgdGhhdCBmYWlsZWQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlLmVycm5vLCBpbnQpCisgICAgICAgICAgICBuYnl0ZXMgPSBzZWxmLnNlbmRtc2dUb1NlcnZlcihbbXNnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYnl0ZXMsIGxlbihtc2cpKQorCisgICAgZGVmIHRlc3RGRFBhc3NFbXB0eShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyBhbiBlbXB0eSBGRCBhcnJheS4gIENhbiByZWNlaXZlIGVpdGhlciBubyBhcnJheQorICAgICAgICAjIG9yIGFuIGVtcHR5IGFycmF5LgorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0ZEcygwLCBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBkZWYgX3Rlc3RGRFBhc3NFbXB0eShzZWxmKToKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZShNU0csIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIiIpXSkKKworICAgIGRlZiB0ZXN0RkRQYXNzUGFydGlhbEludChzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gcGFzcyBhIHRydW5jYXRlZCBGRCBhcnJheS4KKyAgICAgICAgbXNnLCBhbmNkYXRhLCBmbGFncywgYWRkciA9IHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKE1TRyksIDEwMjQwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgaWdub3JlPXNvY2tldC5NU0dfQ1RSVU5DKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oY21zZ19kYXRhKSwgU0laRU9GX0lOVCkKKworICAgIGRlZiBfdGVzdEZEUGFzc1BhcnRpYWxJbnQoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZEFuY2lsbGFyeUlmUG9zc2libGUoCisgICAgICAgICAgICBNU0csCisgICAgICAgICAgICBbKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi5iYWRmZF0pLnRvYnl0ZXMoKVs6LTFdKV0pCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiKQorICAgIGRlZiB0ZXN0RkRQYXNzUGFydGlhbEludEluTWlkZGxlKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBwYXNzIHR3byBGRCBhcnJheXMsIHRoZSBmaXJzdCBvZiB3aGljaCBpcyB0cnVuY2F0ZWQuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAxMDI0MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGlnbm9yZT1zb2NrZXQuTVNHX0NUUlVOQykKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGFuY2RhdGEpLCAyKQorICAgICAgICBmZHMgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgICMgQXJyYXlzIG1heSBoYXZlIGJlZW4gY29tYmluZWQgaW4gYSBzaW5nbGUgY29udHJvbCBtZXNzYWdlCisgICAgICAgIGZvciBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSBpbiBhbmNkYXRhOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuU09MX1NPQ0tFVCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21zZ190eXBlLCBzb2NrZXQuU0NNX1JJR0hUUykKKyAgICAgICAgICAgIGZkcy5mcm9tYnl0ZXMoY21zZ19kYXRhWzoKKyAgICAgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobGVuKGZkcyksIDIpCisgICAgICAgIHNlbGYuY2hlY2tGRHMoZmRzKQorCisgICAgQHRlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RGRFBhc3NQYXJ0aWFsSW50SW5NaWRkbGUoc2VsZik6CisgICAgICAgIGZkMCwgZmQxID0gc2VsZi5uZXdGRHMoMikKKyAgICAgICAgc2VsZi5zZW5kQW5jaWxsYXJ5SWZQb3NzaWJsZSgKKyAgICAgICAgICAgIE1TRywKKyAgICAgICAgICAgIFsoc29ja2V0LlNPTF9TT0NLRVQsCisgICAgICAgICAgICAgIHNvY2tldC5TQ01fUklHSFRTLAorICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtmZDAsIHNlbGYuYmFkZmRdKS50b2J5dGVzKClbOi0xXSksCisgICAgICAgICAgICAgKHNvY2tldC5TT0xfU09DS0VULAorICAgICAgICAgICAgICBzb2NrZXQuU0NNX1JJR0hUUywKKyAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbZmQxXSkpXSkKKworICAgIGRlZiBjaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLCByZXN1bHQsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXRlbXMgYXJlIHJldHVybmVkIHdoZW4gZGF0YSBpcworICAgICAgICAjIHRydW5jYXRlZCBpbnNpZGUgdGhlIGNtc2doZHIgc3RydWN0dXJlLgorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFuY2RhdGEsIFtdKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBubyBidWZmZXIgc2l6ZQorICAgICAgICAjIGlzIHNwZWNpZmllZC4KKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQlNEIHNlZW1zIHRvIHNldCBNU0dfQ1RSVU5DIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGFuIGl0ZW0gaGFzIGJlZW4gcGFydGlhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNlaXZlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY05vQnVmU2l6ZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDEpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZWNlaXZlZCB3aGVuIGJ1ZmZlciBzaXplIGlzIDAuCisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRIZWFkZXIoc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssIGxlbihNU0cpLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIGRlZiBfdGVzdENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlQW5kU2VuZEZEcygxKQorCisgICAgIyBDaGVjayB0aGF0IG5vIGFuY2lsbGFyeSBkYXRhIGlzIHJldHVybmVkIGZvciB2YXJpb3VzIG5vbi16ZXJvCisgICAgIyAoYnV0IHN0aWxsIHRvbyBzbWFsbCkgYnVmZmVyIHNpemVzLgorCisgICAgZGVmIHRlc3RDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwgMSkpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgIyBUaGUgY21zZ2hkciBzdHJ1Y3R1cmUgaGFzIGF0IGxlYXN0IHRocmVlIG1lbWJlcnMsIHR3byBvZgorICAgICAgICAjIHdoaWNoIGFyZSBpbnRzLCBzbyB3ZSBzdGlsbCBzaG91bGRuJ3Qgc2VlIGFueSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkSGVhZGVyKHNlbGYuZG9SZWN2bXNnKHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSVpFT0ZfSU5UICogMikpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZEhlYWRlcihzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LkNNU0dfTEVOKDApIC0gMSkpCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgICMgVGhlIGZvbGxvd2luZyB0ZXN0cyB0cnkgdG8gdHJ1bmNhdGUgdGhlIGNvbnRyb2wgbWVzc2FnZSBpbiB0aGUKKyAgICAjIG1pZGRsZSBvZiB0aGUgRkQgYXJyYXkuCisKKyAgICBkZWYgY2hlY2tUcnVuY2F0ZWRBcnJheShzZWxmLCBhbmNidWYsIG1heGRhdGEsIG1pbmRhdGE9MCk6CisgICAgICAgICMgQ2hlY2sgdGhhdCBmaWxlIGRlc2NyaXB0b3IgZGF0YSBpcyB0cnVuY2F0ZWQgdG8gYmV0d2VlbgorICAgICAgICAjIG1pbmRhdGEgYW5kIG1heGRhdGEgYnl0ZXMgd2hlbiByZWNlaXZlZCB3aXRoIGJ1ZmZlciBzaXplCisgICAgICAgICMgYW5jYnVmLCBhbmQgdGhhdCBhbnkgY29tcGxldGUgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgYXJlCisgICAgICAgICMgdmFsaWQuCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3NldD1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgICAgICBpZiBtaW5kYXRhID09IDAgYW5kIGFuY2RhdGEgPT0gW106CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5TT0xfU09DS0VUKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LlNDTV9SSUdIVFMpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjbXNnX2RhdGEpLCBtaW5kYXRhKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oY21zZ19kYXRhKSwgbWF4ZGF0YSkKKyAgICAgICAgZmRzID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBmZHMuZnJvbWJ5dGVzKGNtc2dfZGF0YVs6CisgICAgICAgICAgICAgICAgbGVuKGNtc2dfZGF0YSkgLSAobGVuKGNtc2dfZGF0YSkgJSBmZHMuaXRlbXNpemUpXSkKKyAgICAgICAgc2VsZi5jaGVja0ZEcyhmZHMpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDApLCBtYXhkYXRhPTApCisKKyAgICBkZWYgX3Rlc3RDbXNnVHJ1bmNMZW4wKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZUFuZFNlbmRGRHMoMSkKKworICAgIGRlZiB0ZXN0Q21zZ1RydW5jTGVuMFBsdXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkQXJyYXkoYW5jYnVmPXNvY2tldC5DTVNHX0xFTigwKSArIDEsIG1heGRhdGE9MSkKKworICAgIGRlZiBfdGVzdENtc2dUcnVuY0xlbjBQbHVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4ZGF0YT1TSVpFT0ZfSU5UKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKyAgICBkZWYgdGVzdENtc2dUcnVuY0xlbjJNaW51czEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tUcnVuY2F0ZWRBcnJheShhbmNidWY9c29ja2V0LkNNU0dfTEVOKDIgKiBTSVpFT0ZfSU5UKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhkYXRhPSgyICogU0laRU9GX0lOVCkgLSAxKQorCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTGVuMk1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVBbmRTZW5kRkRzKDIpCisKKworY2xhc3MgUkZDMzU0MkFuY2lsbGFyeVRlc3QoU2VuZHJlY3Ztc2dTZXJ2ZXJUaW1lb3V0QmFzZSk6CisgICAgIyBUZXN0IHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSB1c2luZyB0aGUgYW5jaWxsYXJ5IGRhdGEKKyAgICAjIGZlYXR1cmVzIG9mIHRoZSBSRkMgMzU0MiBBZHZhbmNlZCBTb2NrZXRzIEFQSSBmb3IgSVB2Ni4KKyAgICAjIEN1cnJlbnRseSB3ZSBjYW4gb25seSBoYW5kbGUgY2VydGFpbiBkYXRhIGl0ZW1zIChlLmcuIHRyYWZmaWMKKyAgICAjIGNsYXNzLCBob3AgbGltaXQsIE1UVSBkaXNjb3ZlcnkgYW5kIGZyYWdtZW50YXRpb24gc2V0dGluZ3MpCisgICAgIyB3aXRob3V0IHJlc29ydGluZyB0byB1bnBvcnRhYmxlIG1lYW5zIHN1Y2ggYXMgdGhlIHN0cnVjdCBtb2R1bGUsCisgICAgIyBidXQgdGhlIHRlc3RzIGhlcmUgYXJlIGFpbWVkIGF0IHRlc3RpbmcgdGhlIGFuY2lsbGFyeSBkYXRhCisgICAgIyBoYW5kbGluZyBpbiBzZW5kbXNnKCkgYW5kIHJlY3Ztc2coKSByYXRoZXIgdGhhbiB0aGUgSVB2NiBBUEkKKyAgICAjIGl0c2VsZi4KKworICAgICMgVGVzdCB2YWx1ZSB0byB1c2Ugd2hlbiBzZXR0aW5nIGhvcCBsaW1pdCBvZiBwYWNrZXQKKyAgICBob3BfbGltaXQgPSAyCisKKyAgICAjIFRlc3QgdmFsdWUgdG8gdXNlIHdoZW4gc2V0dGluZyB0cmFmZmljIGNsYXNzIG9mIHBhY2tldC4KKyAgICAjIC0xIG1lYW5zICJ1c2Uga2VybmVsIGRlZmF1bHQiLgorICAgIHRyYWZmaWNfY2xhc3MgPSAtMQorCisgICAgZGVmIGFuY2lsbGFyeU1hcHBpbmcoc2VsZiwgYW5jZGF0YSk6CisgICAgICAgICMgR2l2ZW4gYW5jaWxsYXJ5IGRhdGEgbGlzdCBhbmNkYXRhLCByZXR1cm4gYSBtYXBwaW5nIGZyb20KKyAgICAgICAgIyBwYWlycyAoY21zZ19sZXZlbCwgY21zZ190eXBlKSB0byBjb3JyZXNwb25kaW5nIGNtc2dfZGF0YS4KKyAgICAgICAgIyBDaGVjayB0aGF0IG5vIChsZXZlbCwgdHlwZSkgcGFpciBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICBkID0ge30KKyAgICAgICAgZm9yIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhIGluIGFuY2RhdGE6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKChjbXNnX2xldmVsLCBjbXNnX3R5cGUpLCBkKQorICAgICAgICAgICAgZFsoY21zZ19sZXZlbCwgY21zZ190eXBlKV0gPSBjbXNnX2RhdGEKKyAgICAgICAgcmV0dXJuIGQKKworICAgIGRlZiBjaGVja0hvcExpbWl0KHNlbGYsIGFuY2J1ZnNpemUsIG1heGhvcD0yNTUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZiBhbmNpbGxhcnkgZGF0YQorICAgICAgICAjIHNwYWNlLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgYW5jaWxsYXJ5IGRhdGEgaXMgbm90CisgICAgICAgICMgdHJ1bmNhdGVkIChidXQgaWdub3JlIGFueSBmbGFncyBpbiBpZ25vcmVmbGFncyksIGFuZCBob3AKKyAgICAgICAgIyBsaW1pdCBpcyBiZXR3ZWVuIDAgYW5kIG1heGhvcCBpbmNsdXNpdmUuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2t1bnNldD1zb2NrZXQuTVNHX0NUUlVOQywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZT1pZ25vcmVmbGFncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGFuY2RhdGFbMF0sIHR1cGxlKQorICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGFbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfdHlwZSwgc29ja2V0LklQVjZfSE9QTElNSVQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjbXNnX2RhdGEsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyhjbXNnX2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIG1heGhvcCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RSZWN2SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdGhlIHBhY2tldCBob3AgbGltaXQgYXMgYW5jaWxsYXJ5IGRhdGEuCisgICAgICAgIHNlbGYuY2hlY2tIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwKQorCisgICAgQHRlc3RSZWN2SG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2SG9wTGltaXQoc2VsZik6CisgICAgICAgICMgTmVlZCB0byB3YWl0IHVudGlsIHNlcnZlciBoYXMgYXNrZWQgdG8gcmVjZWl2ZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhLCBhcyBpbXBsZW1lbnRhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCB0byBidWZmZXIgaXQKKyAgICAgICAgIyBvdGhlcndpc2UuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyBob3AgbGltaXQsIHVzaW5nIENNU0dfU1BBQ0UgdG8gY2FsY3VsYXRlIGJ1ZmZlciBzaXplLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXQoYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSkKKworICAgIEB0ZXN0UmVjdkhvcExpbWl0Q01TR19TUEFDRS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFJlY3ZIb3BMaW1pdENNU0dfU1BBQ0Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgIyBDb3VsZCB0ZXN0IHJlY2VpdmluZyBpbnRvIGJ1ZmZlciBzaXplZCB1c2luZyBDTVNHX0xFTiwgYnV0IFJGQworICAgICMgMzU0MiBzYXlzIHBvcnRhYmxlIGFwcGxpY2F0aW9ucyBtdXN0IHByb3ZpZGUgc3BhY2UgZm9yIHRyYWlsaW5nCisgICAgIyBwYWRkaW5nLiAgSW1wbGVtZW50YXRpb25zIG1heSBzZXQgTVNHX0NUUlVOQyBpZiB0aGVyZSBpc24ndAorICAgICMgZW5vdWdoIHNwYWNlIGZvciB0aGUgcGFkZGluZy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTZXRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgIyBUZXN0IHNldHRpbmcgaG9wIGxpbWl0IG9uIG91dGdvaW5nIHBhY2tldCBhbmQgcmVjZWl2aW5nIGl0CisgICAgICAgICMgYXQgdGhlIG90aGVyIGVuZC4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0KGFuY2J1ZnNpemU9MTAyNDAsIG1heGhvcD1zZWxmLmhvcF9saW1pdCkKKworICAgIEB0ZXN0U2V0SG9wTGltaXQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTZXRIb3BMaW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW01TR10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBkZWYgY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChzZWxmLCBhbmNidWZzaXplLCBtYXhob3A9MjU1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZgorICAgICAgICAjIGFuY2lsbGFyeSBkYXRhIHNwYWNlLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgYW5jaWxsYXJ5CisgICAgICAgICMgZGF0YSBpcyBub3QgdHJ1bmNhdGVkIChidXQgaWdub3JlIGFueSBmbGFncyBpbiBpZ25vcmVmbGFncyksCisgICAgICAgICMgYW5kIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBhcmUgaW4gcmFuZ2UgKGhvcCBsaW1pdCBubworICAgICAgICAjIG1vcmUgdGhhbiBtYXhob3ApLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCBhbmNidWZzaXplKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBNU0cpCisgICAgICAgIHNlbGYuY2hlY2tSZWN2bXNnQWRkcmVzcyhhZGRyLCBzZWxmLmNsaV9hZGRyKQorICAgICAgICBzZWxmLmNoZWNrRmxhZ3MoZmxhZ3MsIGVvcj1UcnVlLCBjaGVja3Vuc2V0PXNvY2tldC5NU0dfQ1RSVU5DLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlPWlnbm9yZWZsYWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhbmNkYXRhKSwgMikKKyAgICAgICAgYW5jbWFwID0gc2VsZi5hbmNpbGxhcnlNYXBwaW5nKGFuY2RhdGEpCisKKyAgICAgICAgdGNkYXRhID0gYW5jbWFwWyhzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9UQ0xBU1MpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0Y2RhdGEpLCBTSVpFT0ZfSU5UKQorICAgICAgICBhID0gYXJyYXkuYXJyYXkoImkiKQorICAgICAgICBhLmZyb21ieXRlcyh0Y2RhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGFbMF0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGFbMF0sIDI1NSkKKworICAgICAgICBobGRhdGEgPSBhbmNtYXBbKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlUKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaGxkYXRhKSwgU0laRU9GX0lOVCkKKyAgICAgICAgYSA9IGFycmF5LmFycmF5KCJpIikKKyAgICAgICAgYS5mcm9tYnl0ZXMoaGxkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChhWzBdLCAwKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhWzBdLCBtYXhob3ApCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCByZWNlaXZpbmcgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGFzIGFuY2lsbGFyeSBkYXRhLgorICAgICAgICBzZWxmLmNoZWNrVHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoYW5jYnVmc2l6ZT0xMDI0MCkKKworICAgIEB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0LmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0UmVjdlRyYWZmaWNDbGFzc0FuZEhvcExpbWl0Q01TR19TUEFDRShzZWxmKToKKyAgICAgICAgIyBUZXN0IHJlY2VpdmluZyB0cmFmZmljIGNsYXNzIGFuZCBob3AgbGltaXQsIHVzaW5nCisgICAgICAgICMgQ01TR19TUEFDRSgpIHRvIGNhbGN1bGF0ZSBidWZmZXIgc2l6ZS4KKyAgICAgICAgc2VsZi5jaGVja1RyYWZmaWNDbGFzc0FuZEhvcExpbWl0KAorICAgICAgICAgICAgYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSAqIDIpCisKKyAgICBAdGVzdFJlY3ZUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdENNU0dfU1BBQ0UuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RSZWN2VHJhZmZpY0NsYXNzQW5kSG9wTGltaXRDTVNHX1NQQUNFKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciKQorICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2V0VHJhZmZpY0NsYXNzQW5kSG9wTGltaXQoc2VsZik6CisgICAgICAgICMgVGVzdCBzZXR0aW5nIHRyYWZmaWMgY2xhc3MgYW5kIGhvcCBsaW1pdCBvbiBvdXRnb2luZyBwYWNrZXQsCisgICAgICAgICMgYW5kIHJlY2VpdmluZyB0aGVtIGF0IHRoZSBvdGhlciBlbmQuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RTZXRUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNldFRyYWZmaWNDbGFzc0FuZEhvcExpbWl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLnNlbmRtc2dUb1NlcnZlcihbTVNHXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLnRyYWZmaWNfY2xhc3NdKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNvY2tldC5JUFBST1RPX0lQVjYsIHNvY2tldC5JUFY2X0hPUExJTUlULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pLAorICAgICAgICAgICAgbGVuKE1TRykpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdE9kZENtc2dTaXplKHNlbGYpOgorICAgICAgICAjIFRyeSB0byBzZW5kIGFuY2lsbGFyeSBkYXRhIHdpdGggZmlyc3QgaXRlbSBvbmUgYnl0ZSB0b28KKyAgICAgICAgIyBsb25nLiAgRmFsbCBiYWNrIHRvIHNlbmRpbmcgd2l0aCBjb3JyZWN0IHNpemUgaWYgdGhpcyBmYWlscywKKyAgICAgICAgIyBhbmQgY2hlY2sgdGhhdCBzZWNvbmQgaXRlbSB3YXMgaGFuZGxlZCBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuY2hlY2tUcmFmZmljQ2xhc3NBbmRIb3BMaW1pdChhbmNidWZzaXplPTEwMjQwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aG9wPXNlbGYuaG9wX2xpbWl0KQorCisgICAgQHRlc3RPZGRDbXNnU2l6ZS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdE9kZENtc2dTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkudG9ieXRlcygpICsgYiJceDAwIiksCisgICAgICAgICAgICAgICAgIChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9IT1BMSU1JVCwKKyAgICAgICAgICAgICAgICAgIGFycmF5LmFycmF5KCJpIiwgW3NlbGYuaG9wX2xpbWl0XSkpXSkKKyAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGUuZXJybm8sIGludCkKKyAgICAgICAgICAgIG5ieXRlcyA9IHNlbGYuc2VuZG1zZ1RvU2VydmVyKAorICAgICAgICAgICAgICAgIFtNU0ddLAorICAgICAgICAgICAgICAgIFsoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfVENMQVNTLAorICAgICAgICAgICAgICAgICAgYXJyYXkuYXJyYXkoImkiLCBbc2VsZi50cmFmZmljX2NsYXNzXSkpLAorICAgICAgICAgICAgICAgICAoc29ja2V0LklQUFJPVE9fSVBWNiwgc29ja2V0LklQVjZfSE9QTElNSVQsCisgICAgICAgICAgICAgICAgICBhcnJheS5hcnJheSgiaSIsIFtzZWxmLmhvcF9saW1pdF0pKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ieXRlcywgbGVuKE1TRykpCisKKyAgICAjIFRlc3RzIGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgdHJ1bmNhdGVkIGFuY2lsbGFyeSBkYXRhCisKKyAgICBkZWYgY2hlY2tIb3BMaW1pdFRydW5jYXRlZEhlYWRlcihzZWxmLCBhbmNidWZzaXplLCBpZ25vcmVmbGFncz0wKToKKyAgICAgICAgIyBSZWNlaXZlIGhvcCBsaW1pdCBpbnRvIGFuY2J1ZnNpemUgYnl0ZXMgb2YgYW5jaWxsYXJ5IGRhdGEKKyAgICAgICAgIyBzcGFjZSwgd2hpY2ggc2hvdWxkIGJlIHRvbyBzbWFsbCB0byBjb250YWluIHRoZSBhbmNpbGxhcnkKKyAgICAgICAgIyBkYXRhIGhlYWRlciAoaWYgYW5jYnVmc2l6ZSBpcyBOb25lLCBwYXNzIG5vIHNlY29uZCBhcmd1bWVudAorICAgICAgICAjIHRvIHJlY3Ztc2coKSkuICBDaGVjayB0aGF0IGRhdGEgaXMgTVNHLCBNU0dfQ1RSVU5DIGlzIHNldAorICAgICAgICAjICh1bmxlc3MgaW5jbHVkZWQgaW4gaWdub3JlZmxhZ3MpLCBhbmQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMKKyAgICAgICAgIyByZXR1cm5lZC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIGFyZ3MgPSAoKSBpZiBhbmNidWZzaXplIGlzIE5vbmUgZWxzZSAoYW5jYnVmc2l6ZSwpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZyhzZWxmLnNlcnZfc29jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihNU0cpLCAqYXJncykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBubyBhbmNpbGxhcnkKKyAgICAgICAgIyBidWZmZXIgc2l6ZSBpcyBwcm92aWRlZC4KKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQlNEIHNlZW1zIHRvIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBNU0dfQ1RSVU5DIG9ubHkgaWYgYW4gaXRlbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBoYXMgYmVlbiBwYXJ0aWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVjZWl2ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0Q21zZ1RydW5jTm9CdWZTaXplLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0Q21zZ1RydW5jTm9CdWZTaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgaXMgcmVjZWl2ZWQgd2hlbiBhbmNpbGxhcnkKKyAgICAgICAgIyBidWZmZXIgc2l6ZSBpcyB6ZXJvLgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlZmxhZ3M9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzAuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMwKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgICMgQ2hlY2sgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSBpcyByZXR1cm5lZCBmb3IgdmFyaW91cyBub24temVybworICAgICMgKGJ1dCBzdGlsbCB0b28gc21hbGwpIGJ1ZmZlciBzaXplcy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT0xKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jMkludChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0hvcExpbWl0VHJ1bmNhdGVkSGVhZGVyKGFuY2J1ZnNpemU9MiAqIFNJWkVPRl9JTlQpCisKKyAgICBAdGVzdFNpbmdsZUNtc2dUcnVuYzJJbnQuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIpCisgICAgZGVmIHRlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSG9wTGltaXRUcnVuY2F0ZWRIZWFkZXIoYW5jYnVmc2l6ZT1zb2NrZXQuQ01TR19MRU4oMCkgLSAxKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmNMZW4wTWludXMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2luZ2xlQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiKQorICAgIGRlZiB0ZXN0U2luZ2xlQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICAjIFRlc3QgdHJ1bmNhdGlvbiBvZiBhIGNvbnRyb2wgbWVzc2FnZSBpbnNpZGUgaXRzIGFzc29jaWF0ZWQKKyAgICAgICAgIyBkYXRhLiAgVGhlIG1lc3NhZ2UgbWF5IGJlIHJldHVybmVkIHdpdGggaXRzIGRhdGEgdHJ1bmNhdGVkLAorICAgICAgICAjIG9yIG5vdCByZXR1cm5lZCBhdCBhbGwuCisgICAgICAgIHNlbGYuc2Vydl9zb2NrLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fSVBWNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBWNl9SRUNWSE9QTElNSVQsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coCisgICAgICAgICAgICBzZWxmLnNlcnZfc29jaywgbGVuKE1TRyksIHNvY2tldC5DTVNHX0xFTihTSVpFT0ZfSU5UKSAtIDEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csIE1TRykKKyAgICAgICAgc2VsZi5jaGVja1JlY3Ztc2dBZGRyZXNzKGFkZHIsIHNlbGYuY2xpX2FkZHIpCisgICAgICAgIHNlbGYuY2hlY2tGbGFncyhmbGFncywgZW9yPVRydWUsIGNoZWNrc2V0PXNvY2tldC5NU0dfQ1RSVU5DKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGxlbihhbmNkYXRhKSwgMSkKKyAgICAgICAgaWYgYW5jZGF0YToKKyAgICAgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX3R5cGUsIHNvY2tldC5JUFY2X0hPUExJTUlUKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGxlbihjbXNnX2RhdGEpLCBTSVpFT0ZfSU5UKQorCisgICAgQHRlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEuY2xpZW50X3NraXAKKyAgICBkZWYgX3Rlc3RTaW5nbGVDbXNnVHJ1bmNJbkRhdGEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgZGVmIGNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNlbGYsIGFuY2J1ZnNpemUsIGlnbm9yZWZsYWdzPTApOgorICAgICAgICAjIFJlY2VpdmUgdHJhZmZpYyBjbGFzcyBhbmQgaG9wIGxpbWl0IGludG8gYW5jYnVmc2l6ZSBieXRlcyBvZgorICAgICAgICAjIGFuY2lsbGFyeSBkYXRhIHNwYWNlLCB3aGljaCBzaG91bGQgYmUgbGFyZ2UgZW5vdWdoIHRvCisgICAgICAgICMgY29udGFpbiB0aGUgZmlyc3QgaXRlbSwgYnV0IHRvbyBzbWFsbCB0byBjb250YWluIHRoZSBoZWFkZXIKKyAgICAgICAgIyBvZiB0aGUgc2Vjb25kLiAgQ2hlY2sgdGhhdCBkYXRhIGlzIE1TRywgTVNHX0NUUlVOQyBpcyBzZXQKKyAgICAgICAgIyAodW5sZXNzIGluY2x1ZGVkIGluIGlnbm9yZWZsYWdzKSwgYW5kIG9ubHkgb25lIGFuY2lsbGFyeQorICAgICAgICAjIGRhdGEgaXRlbSBpcyByZXR1cm5lZC4KKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZIT1BMSU1JVCwgMSkKKyAgICAgICAgc2VsZi5zZXJ2X3NvY2suc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5JUFY2X1JFQ1ZUQ0xBU1MsIDEpCisgICAgICAgIHNlbGYubWlzY19ldmVudC5zZXQoKQorICAgICAgICBtc2csIGFuY2RhdGEsIGZsYWdzLCBhZGRyID0gc2VsZi5kb1JlY3Ztc2coc2VsZi5zZXJ2X3NvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oTVNHKSwgYW5jYnVmc2l6ZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmU9aWdub3JlZmxhZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oYW5jZGF0YSksIDEpCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oY21zZ190eXBlLCB7c29ja2V0LklQVjZfVENMQVNTLCBzb2NrZXQuSVBWNl9IT1BMSU1JVH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgIyBUcnkgdGhlIGFib3ZlIHRlc3Qgd2l0aCB2YXJpb3VzIGJ1ZmZlciBzaXplcy4KKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LCAiQ01TR19TUEFDRSIsICJJUFY2X1JFQ1ZIT1BMSU1JVCIsICJJUFY2X0hPUExJTUlUIiwKKyAgICAgICAgICAgICAgICAgICJJUFY2X1JFQ1ZUQ0xBU1MiLCAiSVBWNl9UQ0xBU1MiKQorICAgIGRlZiB0ZXN0U2Vjb25kQ21zZ1RydW5jMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja1RydW5jYXRlZFNlY29uZEhlYWRlcihzb2NrZXQuQ01TR19TUEFDRShTSVpFT0ZfSU5UKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVmbGFncz1zb2NrZXQuTVNHX0NUUlVOQykKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsgMSkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMS5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmMySW50KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyICogU0laRU9GX0lOVCkKKworICAgIEB0ZXN0U2Vjb25kQ21zZ1RydW5jMkludC5jbGllbnRfc2tpcAorICAgIGRlZiBfdGVzdFNlY29uZENtc2dUcnVuYzJJbnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLm1pc2NfZXZlbnQud2FpdCh0aW1lb3V0PXNlbGYuZmFpbF90aW1lb3V0KSkKKyAgICAgICAgc2VsZi5zZW5kVG9TZXJ2ZXIoTVNHKQorCisgICAgQHJlcXVpcmVBdHRycyhzb2NrZXQsICJDTVNHX1NQQUNFIiwgIklQVjZfUkVDVkhPUExJTUlUIiwgIklQVjZfSE9QTElNSVQiLAorICAgICAgICAgICAgICAgICAgIklQVjZfUkVDVlRDTEFTUyIsICJJUFY2X1RDTEFTUyIpCisgICAgZGVmIHRlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrVHJ1bmNhdGVkU2Vjb25kSGVhZGVyKHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuQ01TR19MRU4oMCkgLSAxKQorCisgICAgQHRlc3RTZWNvbmRDbXNnVHJ1bmNMZW4wTWludXMxLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb25kQ21zZ1RydW5jTGVuME1pbnVzMShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYubWlzY19ldmVudC53YWl0KHRpbWVvdXQ9c2VsZi5mYWlsX3RpbWVvdXQpKQorICAgICAgICBzZWxmLnNlbmRUb1NlcnZlcihNU0cpCisKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkNNU0dfU1BBQ0UiLCAiSVBWNl9SRUNWSE9QTElNSVQiLCAiSVBWNl9IT1BMSU1JVCIsCisgICAgICAgICAgICAgICAgICAiSVBWNl9SRUNWVENMQVNTIiwgIklQVjZfVENMQVNTIikKKyAgICBkZWYgdGVzdFNlY29tZENtc2dUcnVuY0luRGF0YShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRydW5jYXRpb24gb2YgdGhlIHNlY29uZCBvZiB0d28gY29udHJvbCBtZXNzYWdlcyBpbnNpZGUKKyAgICAgICAgIyBpdHMgYXNzb2NpYXRlZCBkYXRhLgorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVkhPUExJTUlULCAxKQorICAgICAgICBzZWxmLnNlcnZfc29jay5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX0lQVjYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2V0LklQVjZfUkVDVlRDTEFTUywgMSkKKyAgICAgICAgc2VsZi5taXNjX2V2ZW50LnNldCgpCisgICAgICAgIG1zZywgYW5jZGF0YSwgZmxhZ3MsIGFkZHIgPSBzZWxmLmRvUmVjdm1zZygKKyAgICAgICAgICAgIHNlbGYuc2Vydl9zb2NrLCBsZW4oTVNHKSwKKyAgICAgICAgICAgIHNvY2tldC5DTVNHX1NQQUNFKFNJWkVPRl9JTlQpICsgc29ja2V0LkNNU0dfTEVOKFNJWkVPRl9JTlQpIC0gMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1zZywgTVNHKQorICAgICAgICBzZWxmLmNoZWNrUmVjdm1zZ0FkZHJlc3MoYWRkciwgc2VsZi5jbGlfYWRkcikKKyAgICAgICAgc2VsZi5jaGVja0ZsYWdzKGZsYWdzLCBlb3I9VHJ1ZSwgY2hlY2tzZXQ9c29ja2V0Lk1TR19DVFJVTkMpCisKKyAgICAgICAgY21zZ190eXBlcyA9IHtzb2NrZXQuSVBWNl9UQ0xBU1MsIHNvY2tldC5JUFY2X0hPUExJTUlUfQorCisgICAgICAgIGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhID0gYW5jZGF0YS5wb3AoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXNnX2xldmVsLCBzb2NrZXQuSVBQUk9UT19JUFY2KQorICAgICAgICBjbXNnX3R5cGVzLnJlbW92ZShjbXNnX3R5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisgICAgICAgIGEgPSBhcnJheS5hcnJheSgiaSIpCisgICAgICAgIGEuZnJvbWJ5dGVzKGNtc2dfZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYVswXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoYVswXSwgMjU1KQorCisgICAgICAgIGlmIGFuY2RhdGE6CisgICAgICAgICAgICBjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSA9IGFuY2RhdGEucG9wKDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtc2dfbGV2ZWwsIHNvY2tldC5JUFBST1RPX0lQVjYpCisgICAgICAgICAgICBjbXNnX3R5cGVzLnJlbW92ZShjbXNnX3R5cGUpCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGNtc2dfZGF0YSksIFNJWkVPRl9JTlQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbmNkYXRhLCBbXSkKKworICAgIEB0ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhLmNsaWVudF9za2lwCisgICAgZGVmIF90ZXN0U2Vjb21kQ21zZ1RydW5jSW5EYXRhKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5taXNjX2V2ZW50LndhaXQodGltZW91dD1zZWxmLmZhaWxfdGltZW91dCkpCisgICAgICAgIHNlbGYuc2VuZFRvU2VydmVyKE1TRykKKworCisjIERlcml2ZSBjb25jcmV0ZSB0ZXN0IGNsYXNzZXMgZm9yIGRpZmZlcmVudCBzb2NrZXQgdHlwZXMuCisKK2NsYXNzIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UoU2VuZHJlY3Ztc2dEZ3JhbUZsYWdzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0aW9ubGVzc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluLCBVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBTZW5kbXNnVURQVGVzdChTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJyZWN2bXNnIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVURQVGVzdChSZWN2bXNnVGVzdHMsIFNlbmRyZWN2bXNnVURQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1VEUFRlc3QoUmVjdm1zZ0ludG9UZXN0cywgU2VuZHJlY3Ztc2dVRFBUZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKFNlbmRyZWN2bXNnRGdyYW1GbGFnc0Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ0Nvbm5lY3Rpb25sZXNzQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZGVkU29ja2V0VGVzdE1peGluLCBVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVRFA2VGVzdChTZW5kbXNnQ29ubmVjdGlvbmxlc3NUZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dVRFA2VGVzdChSZWN2bXNnVGVzdHMsIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVURQNlRlc3QoUmVjdm1zZ0ludG9UZXN0cywgU2VuZHJlY3Ztc2dVRFA2VGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFBST1RPX0lQVjYiKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dSRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QoUkZDMzU0MkFuY2lsbGFyeVRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ0lQdjYgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJJUFBST1RPX0lQVjYiKQorQHJlcXVpcmVTb2NrZXQoIkFGX0lORVQ2IiwgIlNPQ0tfREdSQU0iKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvUkZDMzU0MkFuY2lsbGFyeVVEUDZUZXN0KFJlY3Ztc2dJbnRvTWl4aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRkMzNTQyQW5jaWxsYXJ5VGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVURQNlRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dUQ1BUZXN0QmFzZShTZW5kcmVjdm1zZ0Nvbm5lY3RlZEJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1RDUFRlc3QoU2VuZG1zZ1N0cmVhbVRlc3RzLCBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dUQ1BUZXN0KFJlY3Ztc2dUZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVENQVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnSW50b1RDUFRlc3QoUmVjdm1zZ0ludG9UZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1RDUFRlc3RCYXNlKToKKyAgICBwYXNzCisKKworY2xhc3MgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UoU2VuZHJlY3Ztc2dTQ1RQRmxhZ3NCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dDb25uZWN0ZWRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGVkU3RyZWFtVGVzdE1peGluLCBTQ1RQU3RyZWFtQmFzZSk6CisgICAgcGFzcworCitAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgU2VuZG1zZ1NDVFBTdHJlYW1UZXN0KFNlbmRtc2dTdHJlYW1UZXN0cywgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZyIpCitAcmVxdWlyZVNvY2tldCgiQUZfSU5FVCIsICJTT0NLX1NUUkVBTSIsICJJUFBST1RPX1NDVFAiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dTQ1RQU3RyZWFtVGVzdChSZWN2bXNnVGVzdHMsIFJlY3Ztc2dHZW5lcmljU3RyZWFtVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dTQ1RQU3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlU29ja2V0KCJBRl9JTkVUIiwgIlNPQ0tfU1RSRUFNIiwgIklQUFJPVE9fU0NUUCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdChSZWN2bXNnSW50b1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kcmVjdm1zZ1NDVFBTdHJlYW1UZXN0QmFzZSk6CisgICAgcGFzcworCisKK2NsYXNzIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKFNlbmRyZWN2bXNnQ29ubmVjdGVkQmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3RlZFN0cmVhbVRlc3RNaXhpbiwgVW5peFN0cmVhbUJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFNlbmRtc2dVbml4U3RyZWFtVGVzdChTZW5kbXNnU3RyZWFtVGVzdHMsIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorQHJlcXVpcmVBdHRycyhzb2NrZXQsICJBRl9VTklYIikKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCitjbGFzcyBSZWN2bXNnVW5peFN0cmVhbVRlc3QoUmVjdm1zZ1Rlc3RzLCBSZWN2bXNnR2VuZXJpY1N0cmVhbVRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCitAcmVxdWlyZUF0dHJzKHNvY2tldCwgIkFGX1VOSVgiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvVW5peFN0cmVhbVRlc3QoUmVjdm1zZ0ludG9UZXN0cywgUmVjdm1zZ0dlbmVyaWNTdHJlYW1UZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZHJlY3Ztc2dVbml4U3RyZWFtVGVzdEJhc2UpOgorICAgIHBhc3MKKworQHJlcXVpcmVBdHRycyhzb2NrZXQuc29ja2V0LCAic2VuZG1zZyIsICJyZWN2bXNnIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIsICJTT0xfU09DS0VUIiwgIlNDTV9SSUdIVFMiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dTQ01SaWdodHNTdHJlYW1UZXN0KFNDTVJpZ2h0c1Rlc3QsIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKK0ByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInNlbmRtc2ciLCAicmVjdm1zZ19pbnRvIikKK0ByZXF1aXJlQXR0cnMoc29ja2V0LCAiQUZfVU5JWCIsICJTT0xfU09DS0VUIiwgIlNDTV9SSUdIVFMiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKK2NsYXNzIFJlY3Ztc2dJbnRvU0NNUmlnaHRzU3RyZWFtVGVzdChSZWN2bXNnSW50b01peGluLCBTQ01SaWdodHNUZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRyZWN2bXNnVW5peFN0cmVhbVRlc3RCYXNlKToKKyAgICBwYXNzCisKKworIyBUZXN0IGludGVycnVwdGluZyB0aGUgaW50ZXJydXB0aWJsZSBzZW5kL3JlY2VpdmUgbWV0aG9kcyB3aXRoIGEKKyMgc2lnbmFsIHdoZW4gYSB0aW1lb3V0IGlzIHNldC4gIFRoZXNlIHRlc3RzIGF2b2lkIGhhdmluZyBtdWx0aXBsZQorIyB0aHJlYWRzIGFsaXZlIGR1cmluZyB0aGUgdGVzdCBzbyB0aGF0IHRoZSBPUyBjYW5ub3QgZGVsaXZlciB0aGUKKyMgc2lnbmFsIHRvIHRoZSB3cm9uZyBvbmUuCisKK2NsYXNzIEludGVycnVwdGVkVGltZW91dEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgQmFzZSBjbGFzcyBmb3IgaW50ZXJydXB0ZWQgc2VuZC9yZWNlaXZlIHRlc3RzLiAgSW5zdGFsbHMgYW4KKyAgICAjIGVtcHR5IGhhbmRsZXIgZm9yIFNJR0FMUk0gYW5kIHJlbW92ZXMgaXQgb24gdGVhcmRvd24sIGFsb25nIHdpdGgKKyAgICAjIGFueSBzY2hlZHVsZWQgYWxhcm1zLgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgb3JpZ19hbHJtX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNpZ251bSwgZnJhbWU6IE5vbmUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHQUxSTSwgb3JpZ19hbHJtX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZWxmLnNldEFsYXJtLCAwKQorCisgICAgIyBUaW1lb3V0IGZvciBzb2NrZXQgb3BlcmF0aW9ucworICAgIHRpbWVvdXQgPSA0LjAKKworICAgICMgUHJvdmlkZSBzZXRBbGFybSgpIG1ldGhvZCB0byBzY2hlZHVsZSBkZWxpdmVyeSBvZiBTSUdBTFJNIGFmdGVyCisgICAgIyBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcywgb3IgY2FuY2VsIGl0IGlmIHplcm8sIGFuZCBhbgorICAgICMgYXBwcm9wcmlhdGUgdGltZSB2YWx1ZSB0byB1c2UuICBVc2Ugc2V0aXRpbWVyKCkgaWYgYXZhaWxhYmxlLgorICAgIGlmIGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIik6CisgICAgICAgIGFsYXJtX3RpbWUgPSAwLjA1CisKKyAgICAgICAgZGVmIHNldEFsYXJtKHNlbGYsIHNlY29uZHMpOgorICAgICAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzaWduYWwuSVRJTUVSX1JFQUwsIHNlY29uZHMpCisgICAgZWxzZToKKyAgICAgICAgIyBPbGQgc3lzdGVtcyBtYXkgZGVsaXZlciB0aGUgYWxhcm0gdXAgdG8gb25lIHNlY29uZCBlYXJseQorICAgICAgICBhbGFybV90aW1lID0gMgorCisgICAgICAgIGRlZiBzZXRBbGFybShzZWxmLCBzZWNvbmRzKToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybShzZWNvbmRzKQorCisKKyMgUmVxdWlyZSBzaWdpbnRlcnJ1cHQoKSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBzeXN0ZW0gY2FsbHMgYXJlCisjIGludGVycnVwdGVkIGJ5IGRlZmF1bHQuCitAcmVxdWlyZUF0dHJzKHNpZ25hbCwgInNpZ2ludGVycnVwdCIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHNpZ25hbCwgImFsYXJtIikgb3IgaGFzYXR0cihzaWduYWwsICJzZXRpdGltZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICJEb24ndCBoYXZlIHNpZ25hbC5hbGFybSBvciBzaWduYWwuc2V0aXRpbWVyIikKK2NsYXNzIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0KEludGVycnVwdGVkVGltZW91dEJhc2UsIFVEUFRlc3RCYXNlKToKKyAgICAjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSByZWN2KigpIG1ldGhvZHMgd2l0aCBzaWduYWxzIHdoZW4gYQorICAgICMgdGltZW91dCBpcyBzZXQuCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorICAgICAgICBzZWxmLnNlcnYuc2V0dGltZW91dChzZWxmLnRpbWVvdXQpCisKKyAgICBkZWYgY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZiwgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBDaGVjayB0aGF0IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKSByYWlzZXMgc29ja2V0LmVycm9yIHdpdGggYW4KKyAgICAgICAgIyBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgorICAgICAgICBzZWxmLnNldEFsYXJtKHNlbGYuYWxhcm1fdGltZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdlRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3YsIDEwMjQpCisKKyAgICBkZWYgdGVzdEludGVycnVwdGVkUmVjdkludG9UaW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrSW50ZXJydXB0ZWRSZWN2KHNlbGYuc2Vydi5yZWN2X2ludG8sIGJ5dGVhcnJheSgxMDI0KSkKKworICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2ZnJvbVRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3Zmcm9tLCAxMDI0KQorCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Zmcm9tSW50b1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFJlY3Yoc2VsZi5zZXJ2LnJlY3Zmcm9tX2ludG8sIGJ5dGVhcnJheSgxMDI0KSkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2ciKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRSZWN2bXNnVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdm1zZywgMTAyNCkKKworICAgIEByZXF1aXJlQXR0cnMoc29ja2V0LnNvY2tldCwgInJlY3Ztc2dfaW50byIpCisgICAgZGVmIHRlc3RJbnRlcnJ1cHRlZFJlY3Ztc2dJbnRvVGltZW91dChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkUmVjdihzZWxmLnNlcnYucmVjdm1zZ19pbnRvLCBbYnl0ZWFycmF5KDEwMjQpXSkKKworCisjIFJlcXVpcmUgc2lnaW50ZXJydXB0KCkgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgc3lzdGVtIGNhbGxzIGFyZQorIyBpbnRlcnJ1cHRlZCBieSBkZWZhdWx0LgorQHJlcXVpcmVBdHRycyhzaWduYWwsICJzaWdpbnRlcnJ1cHQiKQorQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICJhbGFybSIpIG9yIGhhc2F0dHIoc2lnbmFsLCAic2V0aXRpbWVyIiksCisgICAgICAgICAgICAgICAgICAgICAiRG9uJ3QgaGF2ZSBzaWduYWwuYWxhcm0gb3Igc2lnbmFsLnNldGl0aW1lciIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorY2xhc3MgSW50ZXJydXB0ZWRTZW5kVGltZW91dFRlc3QoSW50ZXJydXB0ZWRUaW1lb3V0QmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFNhZmVDbGVhbnVwVGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb2NrZXRMaXN0ZW5pbmdUZXN0TWl4aW4sIFRDUFRlc3RCYXNlKToKKyAgICAjIFRlc3QgaW50ZXJydXB0aW5nIHRoZSBpbnRlcnJ1cHRpYmxlIHNlbmQqKCkgbWV0aG9kcyB3aXRoIHNpZ25hbHMKKyAgICAjIHdoZW4gYSB0aW1lb3V0IGlzIHNldC4KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2Vydl9jb25uID0gc2VsZi5uZXdTb2NrZXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2X2Nvbm4uY2xvc2UpCisgICAgICAgICMgVXNlIGEgdGhyZWFkIHRvIGNvbXBsZXRlIHRoZSBjb25uZWN0aW9uLCBidXQgd2FpdCBmb3IgaXQgdG8KKyAgICAgICAgIyB0ZXJtaW5hdGUgYmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHNvIHRoYXQgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgIyB0aHJlYWQgdG8gYWNjZXB0IHRoZSBzaWduYWwuCisgICAgICAgIGNsaV90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLmRvQ29ubmVjdCkKKyAgICAgICAgY2xpX3RocmVhZC5zdGFydCgpCisgICAgICAgIHNlbGYuY2xpX2Nvbm4sIGFkZHIgPSBzZWxmLnNlcnYuYWNjZXB0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuY2xpX2Nvbm4uY2xvc2UpCisgICAgICAgIGNsaV90aHJlYWQuam9pbigpCisgICAgICAgIHNlbGYuc2Vydl9jb25uLnNldHRpbWVvdXQoc2VsZi50aW1lb3V0KQorCisgICAgZGVmIGRvQ29ubmVjdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2X2Nvbm4uY29ubmVjdChzZWxmLnNlcnZfYWRkcikKKworICAgIGRlZiBjaGVja0ludGVycnVwdGVkU2VuZChzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIENoZWNrIHRoYXQgZnVuYygqYXJncywgKiprd2FyZ3MpLCBydW4gaW4gYSBsb29wLCByYWlzZXMKKyAgICAgICAgIyBzb2NrZXQuZXJyb3Igd2l0aCBhbiBlcnJubyBvZiBFSU5UUiB3aGVuIGludGVycnVwdGVkIGJ5IGEKKyAgICAgICAgIyBzaWduYWwuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgc2VsZi5zZXRBbGFybShzZWxmLmFsYXJtX3RpbWUpCisgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShjbS5leGNlcHRpb24sIHNvY2tldC50aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUlOVFIpCisKKyAgICAjIElzc3VlICMxMjk1ODogVGhlIGZvbGxvd2luZyB0ZXN0cyBoYXZlIHByb2JsZW1zIG9uIE1hYyBPUyBYCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkU2VuZFRpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZi5zZXJ2X2Nvbm4uc2VuZCwgYiJhIio1MTIpCisKKyAgICBAc3VwcG9ydC5hbnRpY2lwYXRlX2ZhaWx1cmUoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iKQorICAgIGRlZiB0ZXN0SW50ZXJydXB0ZWRTZW5kdG9UaW1lb3V0KHNlbGYpOgorICAgICAgICAjIFBhc3NpbmcgYW4gYWN0dWFsIGFkZHJlc3MgaGVyZSBhcyBQeXRob24ncyB3cmFwcGVyIGZvcgorICAgICAgICAjIHNlbmR0bygpIGRvZXNuJ3QgYWxsb3cgcGFzc2luZyBhIHplcm8tbGVuZ3RoIG9uZTsgUE9TSVgKKyAgICAgICAgIyByZXF1aXJlcyB0aGF0IHRoZSBhZGRyZXNzIGlzIGlnbm9yZWQgc2luY2UgdGhlIHNvY2tldCBpcworICAgICAgICAjIGNvbm5lY3Rpb24tbW9kZSwgaG93ZXZlci4KKyAgICAgICAgc2VsZi5jaGVja0ludGVycnVwdGVkU2VuZChzZWxmLnNlcnZfY29ubi5zZW5kdG8sIGIiYSIqNTEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Vydl9hZGRyKQorCisgICAgQHN1cHBvcnQuYW50aWNpcGF0ZV9mYWlsdXJlKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIikKKyAgICBAcmVxdWlyZUF0dHJzKHNvY2tldC5zb2NrZXQsICJzZW5kbXNnIikKKyAgICBkZWYgdGVzdEludGVycnVwdGVkU2VuZG1zZ1RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tJbnRlcnJ1cHRlZFNlbmQoc2VsZi5zZXJ2X2Nvbm4uc2VuZG1zZywgW2IiYSIqNTEyXSkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWQsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQogY2xhc3MgVENQQ2xvc2VyVGVzdChUaHJlYWRlZFRDUFNvY2tldFRlc3QpOgogCkBAIC0xMDgwLDExICszNTU0LDggQEAKICAgICAgICAgcGFzcwogCiAgICAgaWYgaGFzYXR0cihzb2NrZXQsICJTT0NLX05PTkJMT0NLIik6CisgICAgICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgICAgIGRlZiB0ZXN0SW5pdE5vbkJsb2NraW5nKHNlbGYpOgotICAgICAgICAgICAgdiA9IGxpbnV4X3ZlcnNpb24oKQotICAgICAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTGludXgga2VybmVsIDIuNi4yOCBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgIi4iLmpvaW4obWFwKHN0ciwgdikpKQogICAgICAgICAgICAgIyByZWluaXQgc2VydmVyIHNvY2tldAogICAgICAgICAgICAgc2VsZi5zZXJ2LmNsb3NlKCkKICAgICAgICAgICAgIHNlbGYuc2VydiA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSB8CkBAIC0xMTg2LDcgKzM2NTcsNyBAQAogICAgICIiIgogCiAgICAgYnVmc2l6ZSA9IC0xICMgVXNlIGRlZmF1bHQgYnVmZmVyIHNpemUKLSAgICBlbmNvZGluZyA9ICd1dGY4JworICAgIGVuY29kaW5nID0gJ3V0Zi04JwogICAgIGVycm9ycyA9ICdzdHJpY3QnCiAgICAgbmV3bGluZSA9IE5vbmUKIApAQCAtMTM2Nyw3ICszODM4LDcgQEAKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBkZWYgX3JhaXNlX2VpbnRyKCk6Ci0gICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcihlcnJuby5FSU5UUikKKyAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKGVycm5vLkVJTlRSLCAiaW50ZXJydXB0ZWQiKQogCiAgICAgZGVmIF90ZXh0aW93cmFwX21vY2tfc29ja2V0KHNlbGYsIG1vY2ssIGJ1ZmZlcmluZz0tMSk6CiAgICAgICAgIHJhdyA9IHNvY2tldC5Tb2NrZXRJTyhtb2NrLCAiciIpCkBAIC0xNDA3LDcgKzM4NzgsNyBAQAogICAgICAgICAgICAgZGF0YSA9IGInJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgICAgICBleHBlY3RpbmcgPSBleHBlY3RpbmcuZGVjb2RlKCd1dGY4JykKKyAgICAgICAgICAgIGV4cGVjdGluZyA9IGV4cGVjdGluZy5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgd2hpbGUgbGVuKGRhdGEpICE9IGxlbihleHBlY3RpbmcpOgogICAgICAgICAgICAgcGFydCA9IGZvLnJlYWQoc2l6ZSkKICAgICAgICAgICAgIGlmIG5vdCBwYXJ0OgpAQCAtMTU2OSw3ICs0MDQwLDcgQEAKICAgICAiIiJUZXN0cyBmb3Igc29ja2V0Lm1ha2VmaWxlKCkgaW4gdGV4dCBtb2RlIChyYXRoZXIgdGhhbiBiaW5hcnkpIiIiCiAKICAgICByZWFkX21vZGUgPSAncicKLSAgICByZWFkX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmLTgnKQogICAgIHdyaXRlX21vZGUgPSAnd2InCiAgICAgd3JpdGVfbXNnID0gTVNHCiAgICAgbmV3bGluZSA9ICcnCkBAIC0xNTgxLDcgKzQwNTIsNyBAQAogICAgIHJlYWRfbW9kZSA9ICdyYicKICAgICByZWFkX21zZyA9IE1TRwogICAgIHdyaXRlX21vZGUgPSAndycKLSAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGY4JykKKyAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgbmV3bGluZSA9ICcnCiAKIApAQCAtMTU4OSw5ICs0MDYwLDkgQEAKICAgICAiIiJUZXN0cyBmb3Igc29ja2V0Lm1ha2VmaWxlKCkgaW4gdGV4dCBtb2RlIChyYXRoZXIgdGhhbiBiaW5hcnkpIiIiCiAKICAgICByZWFkX21vZGUgPSAncicKLSAgICByZWFkX21zZyA9IE1TRy5kZWNvZGUoJ3V0ZjgnKQorICAgIHJlYWRfbXNnID0gTVNHLmRlY29kZSgndXRmLTgnKQogICAgIHdyaXRlX21vZGUgPSAndycKLSAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGY4JykKKyAgICB3cml0ZV9tc2cgPSBNU0cuZGVjb2RlKCd1dGYtOCcpCiAgICAgbmV3bGluZSA9ICcnCiAKIApAQCAtMTg4Miw2ICs0MzUzLDc4IEBACiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LmVycm9yLCBzLmJpbmQsIGFkZHJlc3MpCiAKKyAgICBkZWYgdGVzdFN0ck5hbWUoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBhbiBhYnN0cmFjdCBuYW1lIGNhbiBiZSBwYXNzZWQgYXMgYSBzdHJpbmcuCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHMuYmluZCgiXHgwMHB5dGhvblx4MDB0ZXN0XHgwMCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0c29ja25hbWUoKSwgYiJceDAwcHl0aG9uXHgwMHRlc3RceDAwIikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHMuY2xvc2UoKQorCitjbGFzcyBUZXN0VW5peERvbWFpbih1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX1VOSVgsIHNvY2tldC5TT0NLX1NUUkVBTSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKKworICAgIGRlZiBlbmNvZGVkKHNlbGYsIHBhdGgpOgorICAgICAgICAjIFJldHVybiB0aGUgZ2l2ZW4gcGF0aCBlbmNvZGVkIGluIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZywKKyAgICAgICAgIyBvciBza2lwIHRoZSB0ZXN0IGlmIHRoaXMgaXMgbm90IHBvc3NpYmxlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gb3MuZnNlbmNvZGUocGF0aCkKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgIlBhdGhuYW1lIHswIWF9IGNhbm5vdCBiZSByZXByZXNlbnRlZCBpbiBmaWxlICIKKyAgICAgICAgICAgICAgICAic3lzdGVtIGVuY29kaW5nIHsxIXJ9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHBhdGgsIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkpCisKKyAgICBkZWYgYmluZChzZWxmLCBzb2NrLCBwYXRoKToKKyAgICAgICAgIyBCaW5kIHRoZSBzb2NrZXQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc29jay5iaW5kKHBhdGgpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CisgICAgICAgICAgICBpZiBzdHIoZSkgPT0gIkFGX1VOSVggcGF0aCB0b28gbG9uZyI6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgIlBhdGhuYW1lIHswIWF9IGlzIHRvbyBsb25nIHRvIHNlcnZlIGFzIGEgQUZfVU5JWCBwYXRoIgorICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHBhdGgpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3RTdHJBZGRyKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhbmQgcmV0cmlldmluZyBhIG5vcm1hbCBzdHJpbmcgcGF0aG5hbWUuCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKKworICAgIGRlZiB0ZXN0Qnl0ZXNBZGRyKHNlbGYpOgorICAgICAgICAjIFRlc3QgYmluZGluZyB0byBhIGJ5dGVzIHBhdGhuYW1lLgorICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmJpbmQoc2VsZi5zb2NrLCBzZWxmLmVuY29kZWQocGF0aCkpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKKworICAgIGRlZiB0ZXN0U3Vycm9nYXRlZXNjYXBlQmluZChzZWxmKToKKyAgICAgICAgIyBUZXN0IGJpbmRpbmcgdG8gYSB2YWxpZCBub24tQVNDSUkgcGF0aG5hbWUsIHdpdGggdGhlCisgICAgICAgICMgbm9uLUFTQ0lJIGJ5dGVzIHN1cHBsaWVkIHVzaW5nIHN1cnJvZ2F0ZWVzY2FwZSBlbmNvZGluZy4KKyAgICAgICAgcGF0aCA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTl9VTklDT0RFKQorICAgICAgICBiID0gc2VsZi5lbmNvZGVkKHBhdGgpCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIGIuZGVjb2RlKCJhc2NpaSIsICJzdXJyb2dhdGVlc2NhcGUiKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc29jay5nZXRzb2NrbmFtZSgpLCBwYXRoKQorCisgICAgZGVmIHRlc3RVbmVuY29kYWJsZUFkZHIoc2VsZik6CisgICAgICAgICMgVGVzdCBiaW5kaW5nIHRvIGEgcGF0aG5hbWUgdGhhdCBjYW5ub3QgYmUgZW5jb2RlZCBpbiB0aGUKKyAgICAgICAgIyBmaWxlIHN5c3RlbSBlbmNvZGluZy4KKyAgICAgICAgaWYgc3VwcG9ydC5URVNURk5fVU5FTkNPREFCTEUgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIk5vIHVuZW5jb2RhYmxlIGZpbGVuYW1lIGF2YWlsYWJsZSIpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk5fVU5FTkNPREFCTEUpCisgICAgICAgIHNlbGYuYmluZChzZWxmLnNvY2ssIHBhdGgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNvY2suZ2V0c29ja25hbWUoKSwgcGF0aCkKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIEJ1ZmZlcklPVGVzdChTb2NrZXRDb25uZWN0ZWRUZXN0KToKQEAgLTIwODIsMTEgKzQ2MjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIlNPQ0tfQ0xPRVhFQyBub3QgZGVmaW5lZCIpCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhmY250bCwgIm1vZHVsZSBmY250bCBub3QgYXZhaWxhYmxlIikKIGNsYXNzIENsb2V4ZWNDb25zdGFudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oMiwgNiwgMjgpCiAgICAgZGVmIHRlc3RfU09DS19DTE9FWEVDKHNlbGYpOgotICAgICAgICB2ID0gbGludXhfdmVyc2lvbigpCi0gICAgICAgIGlmIHYgPCAoMiwgNiwgMjgpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTGludXgga2VybmVsIDIuNi4yOCBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJSAiLiIuam9pbihtYXAoc3RyLCB2KSkpCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5TT0NLX1NUUkVBTSB8IHNvY2tldC5TT0NLX0NMT0VYRUMpIGFzIHM6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy50eXBlICYgc29ja2V0LlNPQ0tfQ0xPRVhFQykKQEAgLTIxMDQsMTEgKzQ2NDQsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnR5cGUgJiBzb2NrZXQuU09DS19OT05CTE9DSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR0aW1lb3V0KCksIE5vbmUpCiAKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDIsIDYsIDI4KQogICAgIGRlZiB0ZXN0X1NPQ0tfTk9OQkxPQ0soc2VsZik6Ci0gICAgICAgIHYgPSBsaW51eF92ZXJzaW9uKCkKLSAgICAgICAgaWYgdiA8ICgyLCA2LCAyOCk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJMaW51eCBrZXJuZWwgMi42LjI4IG9yIGhpZ2hlciByZXF1aXJlZCwgbm90ICVzIgotICAgICAgICAgICAgICAgICAgICAgICAgICAlICIuIi5qb2luKG1hcChzdHIsIHYpKSkKICAgICAgICAgIyBhIGxvdCBvZiBpdCBzZWVtcyBzaWxseSBhbmQgcmVkdW5kYW50LCBidXQgSSB3YW50ZWQgdG8gdGVzdCB0aGF0CiAgICAgICAgICMgY2hhbmdpbmcgYmFjayBhbmQgZm9ydGggd29ya2VkIG9rCiAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwKQEAgLTIxNDEsNiArNDY3OCwxMDkgQEAKICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHQpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAibnQiLCAiV2luZG93cyBzcGVjaWZpYyIpCitAdW5pdHRlc3Quc2tpcFVubGVzcyhtdWx0aXByb2Nlc3NpbmcsICJuZWVkIG11bHRpcHJvY2Vzc2luZyIpCitjbGFzcyBUZXN0U29ja2V0U2hhcmluZyhTb2NrZXRUQ1BUZXN0KToKKyAgICAjIFRoaXMgbXVzdCBiZSBjbGFzc21ldGhvZCBhbmQgbm90IHN0YXRpY21ldGhvZCBvciBtdWx0aXByb2Nlc3NpbmcKKyAgICAjIHdvbid0IGJlIGFibGUgdG8gYm9vdHN0cmFwIGl0LgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiByZW1vdGVQcm9jZXNzU2VydmVyKGNscywgcSk6CisgICAgICAgICMgUmVjcmVhdGUgc29ja2V0IGZyb20gc2hhcmVkIGRhdGEKKyAgICAgICAgc2RhdGEgPSBxLmdldCgpCisgICAgICAgIG1lc3NhZ2UgPSBxLmdldCgpCisKKyAgICAgICAgcyA9IHNvY2tldC5mcm9tc2hhcmUoc2RhdGEpCisgICAgICAgIHMyLCBjID0gcy5hY2NlcHQoKQorCisgICAgICAgICMgU2VuZCB0aGUgbWVzc2FnZQorICAgICAgICBzMi5zZW5kYWxsKG1lc3NhZ2UpCisgICAgICAgIHMyLmNsb3NlKCkKKyAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFNoYXJlKHNlbGYpOgorICAgICAgICAjIFRyYW5zZmVyIHRoZSBsaXN0ZW5pbmcgc2VydmVyIHNvY2tldCB0byBhbm90aGVyIHByb2Nlc3MKKyAgICAgICAgIyBhbmQgc2VydmljZSBpdCBmcm9tIHRoZXJlLgorCisgICAgICAgICMgQ3JlYXRlIHByb2Nlc3M6CisgICAgICAgIHEgPSBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKQorICAgICAgICBwID0gbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3ModGFyZ2V0PXNlbGYucmVtb3RlUHJvY2Vzc1NlcnZlciwgYXJncz0ocSwpKQorICAgICAgICBwLnN0YXJ0KCkKKworICAgICAgICAjIEdldCB0aGUgc2hhcmVkIHNvY2tldCBkYXRhCisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnYuc2hhcmUocC5waWQpCisKKyAgICAgICAgIyBQYXNzIHRoZSBzaGFyZWQgc29ja2V0IHRvIHRoZSBvdGhlciBwcm9jZXNzCisgICAgICAgIGFkZHIgPSBzZWxmLnNlcnYuZ2V0c29ja25hbWUoKQorICAgICAgICBzZWxmLnNlcnYuY2xvc2UoKQorICAgICAgICBxLnB1dChkYXRhKQorCisgICAgICAgICMgVGhlIGRhdGEgdGhhdCB0aGUgc2VydmVyIHdpbGwgc2VuZCB1cworICAgICAgICBtZXNzYWdlID0gYiJzbGFwbWFoZnJvIgorICAgICAgICBxLnB1dChtZXNzYWdlKQorCisgICAgICAgICMgQ29ubmVjdAorICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpCisgICAgICAgICMgIGxpc3RlbiBmb3IgdGhlIGRhdGEKKyAgICAgICAgbSA9IFtdCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhID0gcy5yZWN2KDEwMCkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBtLmFwcGVuZChkYXRhKQorICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcmVjZWl2ZWQgPSBiIiIuam9pbihtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlY2VpdmVkLCBtZXNzYWdlKQorICAgICAgICBwLmpvaW4oKQorCisgICAgZGVmIHRlc3RTaGFyZUxlbmd0aChzZWxmKToKKyAgICAgICAgZGF0YSA9IHNlbGYuc2Vydi5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc29ja2V0LmZyb21zaGFyZSwgZGF0YVs6LTFdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzb2NrZXQuZnJvbXNoYXJlLCBkYXRhK2IiZm9vIikKKworICAgIGRlZiBjb21wYXJlU29ja2V0cyhzZWxmLCBvcmcsIG90aGVyKToKKyAgICAgICAgIyBzb2NrZXQgc2hhcmluZyBpcyBleHBlY3RlZCB0byB3b3JrIG9ubHkgZm9yIGJsb2NraW5nIHNvY2tldAorICAgICAgICAjIHNpbmNlIHRoZSBpbnRlcm5hbCBweXRob24gdGltb3V0IHZhbHVlIGlzbid0IHRyYW5zZmVyZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLmdldHRpbWVvdXQoKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZ2V0dGltZW91dCgpLCBvdGhlci5nZXR0aW1lb3V0KCkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmcuZmFtaWx5LCBvdGhlci5mYW1pbHkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3JnLnR5cGUsIG90aGVyLnR5cGUpCisgICAgICAgICMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkICIwIiBmb3IgcHJvdG8sIHRoZW4KKyAgICAgICAgIyBpbnRlcm5hbGx5IHdpbmRvd3Mgd2lsbCBoYXZlIHBpY2tlZCB0aGUgY29ycmVjdCB2YWx1ZS4KKyAgICAgICAgIyBQeXRob24gaW50cm9zcGVjdGlvbiBvbiB0aGUgc29ja2V0IGhvd2V2ZXIgd2lsbCBzdGlsbCByZXR1cm4KKyAgICAgICAgIyAwLiAgRm9yIHRoZSBzaGFyZWQgc29ja2V0LCB0aGUgcHl0aG9uIHZhbHVlIGlzIHJlY3JlYXRlZAorICAgICAgICAjIGZyb20gdGhlIGFjdHVhbCB2YWx1ZSwgc28gaXQgbWF5IG5vdCBjb21wYXJlIGNvcnJlY3RseS4KKyAgICAgICAgaWYgb3JnLnByb3RvICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9yZy5wcm90bywgb3RoZXIucHJvdG8pCisKKyAgICBkZWYgdGVzdFNoYXJlTG9jYWwoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnNlcnYuc2hhcmUob3MuZ2V0cGlkKCkpCisgICAgICAgIHMgPSBzb2NrZXQuZnJvbXNoYXJlKGRhdGEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuY29tcGFyZVNvY2tldHMoc2VsZi5zZXJ2LCBzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcy5jbG9zZSgpCisKKyAgICBkZWYgdGVzdFR5cGVzKHNlbGYpOgorICAgICAgICBmYW1pbGllcyA9IFtzb2NrZXQuQUZfSU5FVCwgc29ja2V0LkFGX0lORVQ2XQorICAgICAgICB0eXBlcyA9IFtzb2NrZXQuU09DS19TVFJFQU0sIHNvY2tldC5TT0NLX0RHUkFNXQorICAgICAgICBmb3IgZiBpbiBmYW1pbGllczoKKyAgICAgICAgICAgIGZvciB0IGluIHR5cGVzOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc291cmNlID0gc29ja2V0LnNvY2tldChmLCB0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAjIFRoaXMgY29tYmluYXRpb24gaXMgbm90IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5zaGFyZShvcy5nZXRwaWQoKSkKKyAgICAgICAgICAgICAgICAgICAgc2hhcmVkID0gc29ja2V0LmZyb21zaGFyZShkYXRhKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbXBhcmVTb2NrZXRzKHNvdXJjZSwgc2hhcmVkKQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuY2xvc2UoKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC0yMTY0LDExICs0ODA0LDQxIEBACiAgICAgXSkKICAgICBpZiBoYXNhdHRyKHNvY2tldCwgInNvY2tldHBhaXIiKToKICAgICAgICAgdGVzdHMuYXBwZW5kKEJhc2ljU29ja2V0UGFpclRlc3QpCi0gICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eDInOgorICAgIGlmIGhhc2F0dHIoc29ja2V0LCAiQUZfVU5JWCIpOgorICAgICAgICB0ZXN0cy5hcHBlbmQoVGVzdFVuaXhEb21haW4pCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICdsaW51eCc6CiAgICAgICAgIHRlc3RzLmFwcGVuZChUZXN0TGludXhBYnN0cmFjdE5hbWVzcGFjZSkKICAgICBpZiBpc1RpcGNBdmFpbGFibGUoKToKICAgICAgICAgdGVzdHMuYXBwZW5kKFRJUENUZXN0KQogICAgICAgICB0ZXN0cy5hcHBlbmQoVElQQ1RocmVhZGFibGVUZXN0KQorICAgIHRlc3RzLmV4dGVuZChbQmFzaWNDQU5UZXN0LCBDQU5UZXN0XSkKKyAgICB0ZXN0cy5leHRlbmQoW0Jhc2ljUkRTVGVzdCwgUkRTVGVzdF0pCisgICAgdGVzdHMuZXh0ZW5kKFsKKyAgICAgICAgQ21zZ01hY3JvVGVzdHMsCisgICAgICAgIFNlbmRtc2dVRFBUZXN0LAorICAgICAgICBSZWN2bXNnVURQVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9VRFBUZXN0LAorICAgICAgICBTZW5kbXNnVURQNlRlc3QsCisgICAgICAgIFJlY3Ztc2dVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ1JGQzM1NDJBbmNpbGxhcnlVRFA2VGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9SRkMzNTQyQW5jaWxsYXJ5VURQNlRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvVURQNlRlc3QsCisgICAgICAgIFNlbmRtc2dUQ1BUZXN0LAorICAgICAgICBSZWN2bXNnVENQVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9UQ1BUZXN0LAorICAgICAgICBTZW5kbXNnU0NUUFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dTQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgUmVjdm1zZ0ludG9TQ1RQU3RyZWFtVGVzdCwKKyAgICAgICAgU2VuZG1zZ1VuaXhTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dJbnRvVW5peFN0cmVhbVRlc3QsCisgICAgICAgIFJlY3Ztc2dTQ01SaWdodHNTdHJlYW1UZXN0LAorICAgICAgICBSZWN2bXNnSW50b1NDTVJpZ2h0c1N0cmVhbVRlc3QsCisgICAgICAgICMgVGhlc2UgYXJlIHNsb3cgd2hlbiBzZXRpdGltZXIoKSBpcyBub3QgYXZhaWxhYmxlCisgICAgICAgIEludGVycnVwdGVkUmVjdlRpbWVvdXRUZXN0LAorICAgICAgICBJbnRlcnJ1cHRlZFNlbmRUaW1lb3V0VGVzdCwKKyAgICAgICAgVGVzdFNvY2tldFNoYXJpbmcsCisgICAgXSkKIAogICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggY2EyMzMwMS4uMzUzZjhmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTI0NCw3ICsyNDQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkICs9IDEKICAgICAgICAgICAgICAgICBpZiBzZWxmLmNhbGxlZCA9PSAxOgogICAgICAgICAgICAgICAgICAgICAjIHJhaXNlIHRoZSBleGNlcHRpb24gb24gZmlyc3QgY2FsbAotICAgICAgICAgICAgICAgICAgICByYWlzZSBzZWxlY3QuZXJyb3IoZXJybm8uRUlOVFIsIG9zLnN0cmVycm9yKGVycm5vLkVJTlRSKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcihlcnJuby5FSU5UUiwgb3Muc3RyZXJyb3IoZXJybm8uRUlOVFIpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgUmV0dXJuIHJlYWwgc2VsZWN0IHZhbHVlIGZvciBjb25zZWN1dGl2ZSBjYWxscwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2xkX3NlbGVjdCgqYXJncykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3NsLnB5IGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKaW5kZXggZDRjNWU2My4uNGNlOThiNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zc2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zc2wucHkKQEAgLTQyLDYgKzQyLDkgQEAKIE9OTFlLRVkgPSBkYXRhX2ZpbGUoInNzbF9rZXkucGVtIikKIEJZVEVTX09OTFlDRVJUID0gb3MuZnNlbmNvZGUoT05MWUNFUlQpCiBCWVRFU19PTkxZS0VZID0gb3MuZnNlbmNvZGUoT05MWUtFWSkKK0NFUlRGSUxFX1BST1RFQ1RFRCA9IGRhdGFfZmlsZSgia2V5Y2VydC5wYXNzd2QucGVtIikKK09OTFlLRVlfUFJPVEVDVEVEID0gZGF0YV9maWxlKCJzc2xfa2V5LnBhc3N3ZC5wZW0iKQorS0VZX1BBU1NXT1JEID0gInNvbWVwYXNzIgogQ0FQQVRIID0gZGF0YV9maWxlKCJjYXBhdGgiKQogQllURVNfQ0FQQVRIID0gb3MuZnNlbmNvZGUoQ0FQQVRIKQogCkBAIC01Myw2ICs1Niw4IEBACiBCQURLRVkgPSBkYXRhX2ZpbGUoImJhZGtleS5wZW0iKQogTk9LSUFDRVJUID0gZGF0YV9maWxlKCJub2tpYS5wZW0iKQogCitESEZJTEUgPSBkYXRhX2ZpbGUoImRoNTEyLnBlbSIpCitCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKIGRlZiBoYW5kbGVfZXJyb3IocHJlZml4KToKICAgICBleGNfZm9ybWF0ID0gJyAnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKnN5cy5leGNfaW5mbygpKSkKQEAgLTk1LDcgKzEwMCwxNCBAQAogICAgICAgICBzc2wuQ0VSVF9OT05FCiAgICAgICAgIHNzbC5DRVJUX09QVElPTkFMCiAgICAgICAgIHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKKyAgICAgICAgc3NsLk9QX1NJTkdMRV9ESF9VU0UKKyAgICAgICAgaWYgc3NsLkhBU19FQ0RIOgorICAgICAgICAgICAgc3NsLk9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDApOgorICAgICAgICAgICAgc3NsLk9QX05PX0NPTVBSRVNTSU9OCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19TTkksIHtUcnVlLCBGYWxzZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19FQ0RILCB7VHJ1ZSwgRmFsc2V9KQogCiAgICAgZGVmIHRlc3RfcmFuZG9tKHNlbGYpOgogICAgICAgICB2ID0gc3NsLlJBTkRfc3RhdHVzKCkKQEAgLTEwMyw2ICsxMTUsMTYgQEAKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIFJBTkRfc3RhdHVzIGlzICVkICglcylcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAodiwgKHYgYW5kICJzdWZmaWNpZW50IHJhbmRvbW5lc3MiKSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdWZmaWNpZW50IHJhbmRvbW5lc3MiKSkKKworICAgICAgICBkYXRhLCBpc19jcnlwdG9ncmFwaGljID0gc3NsLlJBTkRfcHNldWRvX2J5dGVzKDE2KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXNfY3J5cHRvZ3JhcGhpYywgdiA9PSAxKQorICAgICAgICBpZiB2OgorICAgICAgICAgICAgZGF0YSA9IHNzbC5SQU5EX2J5dGVzKDE2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIDE2KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yLCBzc2wuUkFORF9ieXRlcywgMTYpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzc2wuUkFORF9lZ2QsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3NsLlJBTkRfZWdkLCAnZm9vJywgMSkKICAgICAgICAgc3NsLlJBTkRfYWRkKCJ0aGlzIGlzIGEgcmFuZG9tIHN0cmluZyIsIDc1LjApCkBAIC0zMzMsNiArMzU1LDI1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjdHgud3JhcF9zb2NrZXQsIHNvY2ssIFRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNvbWUuaG9zdG5hbWUiKQogCisgICAgZGVmIHRlc3RfdW5rbm93bl9jaGFubmVsX2JpbmRpbmcoc2VsZik6CisgICAgICAgICMgc2hvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIHVua25vd24gdHlwZQorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInVua25vd24tdHlwZSIpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygidGxzLXVuaXF1ZSIgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rscy11bmlxdWUnIGNoYW5uZWwgYmluZGluZyBub3QgYXZhaWxhYmxlIikKKyAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgIyB1bmNvbm5lY3RlZCBzaG91bGQgcmV0dXJuIE5vbmUgZm9yIGtub3duIHR5cGUKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKKyAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNzID0gc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzcy5nZXRfY2hhbm5lbF9iaW5kaW5nKCJ0bHMtdW5pcXVlIikpCisKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBAc2tpcF9pZl9icm9rZW5fdWJ1bnR1X3NzbApAQCAtNDIzLDYgKzQ2NCw2MCBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJrZXkgdmFsdWVzIG1pc21hdGNoIik6CiAgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKFNWTl9QWVRIT05fT1JHX1JPT1RfQ0VSVCwgT05MWUtFWSkKKyAgICAgICAgIyBQYXNzd29yZCBwcm90ZWN0ZWQga2V5IGFuZCBjZXJ0CisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1LRVlfUEFTU1dPUkQpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1LRVlfUEFTU1dPUkQuZW5jb2RlKCkpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPWJ5dGVhcnJheShLRVlfUEFTU1dPUkQuZW5jb2RlKCkpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwgS0VZX1BBU1NXT1JEKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwgS0VZX1BBU1NXT1JELmVuY29kZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKE9OTFlDRVJULCBPTkxZS0VZX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoS0VZX1BBU1NXT1JELmVuY29kZSgpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgInNob3VsZCBiZSBhIHN0cmluZyIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPVRydWUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD0iYmFkcGFzcyIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2Fubm90IGJlIGxvbmdlciIpOgorICAgICAgICAgICAgIyBvcGVuc3NsIGhhcyBhIGZpeGVkIGxpbWl0IG9uIHRoZSBwYXNzd29yZCBidWZmZXIuCisgICAgICAgICAgICAjIFBFTV9CVUZTSVpFIGlzIGdlbmVyYWxseSBzZXQgdG8gMWtiLgorICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgbGFyZ2VyIHRoYW4gdGhpcy4KKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1iJ2EnICogMTAyNDAwKQorICAgICAgICAjIFBhc3N3b3JkIGNhbGxiYWNrCisgICAgICAgIGRlZiBnZXRwYXNzX3VuaWNvZGUoKToKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgZGVmIGdldHBhc3NfYnl0ZXMoKToKKyAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQuZW5jb2RlKCkKKyAgICAgICAgZGVmIGdldHBhc3NfYnl0ZWFycmF5KCk6CisgICAgICAgICAgICByZXR1cm4gYnl0ZWFycmF5KEtFWV9QQVNTV09SRC5lbmNvZGUoKSkKKyAgICAgICAgZGVmIGdldHBhc3NfYmFkcGFzcygpOgorICAgICAgICAgICAgcmV0dXJuICJiYWRwYXNzIgorICAgICAgICBkZWYgZ2V0cGFzc19odWdlKCk6CisgICAgICAgICAgICByZXR1cm4gYidhJyAqICgxMDI0ICogMTAyNCkKKyAgICAgICAgZGVmIGdldHBhc3NfYmFkX3R5cGUoKToKKyAgICAgICAgICAgIHJldHVybiA5CisgICAgICAgIGRlZiBnZXRwYXNzX2V4Y2VwdGlvbigpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdnZXRwYXNzIGVycm9yJykKKyAgICAgICAgY2xhc3MgR2V0UGFzc0NhbGxhYmxlOgorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgICAgIGRlZiBnZXRwYXNzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBLRVlfUEFTU1dPUkQKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfdW5pY29kZSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYnl0ZXMpCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2J5dGVhcnJheSkKKyAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPUdldFBhc3NDYWxsYWJsZSgpKQorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1HZXRQYXNzQ2FsbGFibGUoKS5nZXRwYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19iYWRwYXNzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgImNhbm5vdCBiZSBsb25nZXIiKToKKyAgICAgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEVfUFJPVEVDVEVELCBwYXNzd29yZD1nZXRwYXNzX2h1Z2UpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICJtdXN0IHJldHVybiBhIHN0cmluZyIpOgorICAgICAgICAgICAgY3R4LmxvYWRfY2VydF9jaGFpbihDRVJURklMRV9QUk9URUNURUQsIHBhc3N3b3JkPWdldHBhc3NfYmFkX3R5cGUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJnZXRwYXNzIGVycm9yIik6CisgICAgICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFX1BST1RFQ1RFRCwgcGFzc3dvcmQ9Z2V0cGFzc19leGNlcHRpb24pCisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBwYXNzd29yZCBmdW5jdGlvbiBpc24ndCBjYWxsZWQgaWYgaXQgaXNuJ3QgbmVlZGVkCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUsIHBhc3N3b3JkPWdldHBhc3NfZXhjZXB0aW9uKQogCiAgICAgZGVmIHRlc3RfbG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC00NDMsNiArNTM4LDE5IEBACiAgICAgICAgICMgSXNzdWUgIzEwOTg5OiBjcmFzaCBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IHR5cGUgaXMgaW52YWxpZAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMsIE5vbmUsIFRydWUpCiAKKyAgICBkZWYgdGVzdF9sb2FkX2RoX3BhcmFtcyhzZWxmKToKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoREhGSUxFKQorICAgICAgICBpZiBvcy5uYW1lICE9ICdudCc6CisgICAgICAgICAgICBjdHgubG9hZF9kaF9wYXJhbXMoQllURVNfREhGSUxFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5sb2FkX2RoX3BhcmFtcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHgubG9hZF9kaF9wYXJhbXMsIE5vbmUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKFdST05HQ0VSVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9zZXNzaW9uX3N0YXRzKHNlbGYpOgogICAgICAgICBmb3IgcHJvdG8gaW4gUFJPVE9DT0xTOgpAQCAtNDY3LDYgKzU3NSw1NyBAQAogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgIGN0eC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3NsLkhBU19FQ0RILCAiRUNESCBkaXNhYmxlZCBvbiB0aGlzIE9wZW5TU0wgYnVpbGQiKQorICAgIGRlZiB0ZXN0X3NldF9lY2RoX2N1cnZlKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfZWNkaF9jdXJ2ZSgicHJpbWUyNTZ2MSIpCisgICAgICAgIGN0eC5zZXRfZWNkaF9jdXJ2ZShiInByaW1lMjU2djEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjdHguc2V0X2VjZGhfY3VydmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGN0eC5zZXRfZWNkaF9jdXJ2ZSwgYiJmb28iKQorCisKK2NsYXNzIFNTTEVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICAjIFRoZSBzdHIoKSBvZiBhIFNTTEVycm9yIGRvZXNuJ3QgaW5jbHVkZSB0aGUgZXJybm8KKyAgICAgICAgZSA9IHNzbC5TU0xFcnJvcigxLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIDEpCisgICAgICAgICMgU2FtZSBmb3IgYSBzdWJjbGFzcworICAgICAgICBlID0gc3NsLlNTTFplcm9SZXR1cm5FcnJvcigxLCAiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIDEpCisKKyAgICBkZWYgdGVzdF9saWJfcmVhc29uKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIGxpYnJhcnkgYW5kIHJlYXNvbiBhdHRyaWJ1dGVzCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5saWJyYXJ5LCAnUEVNJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24ucmVhc29uLCAnTk9fU1RBUlRfTElORScpCisgICAgICAgIHMgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocy5zdGFydHN3aXRoKCJbUEVNOiBOT19TVEFSVF9MSU5FXSBubyBzdGFydCBsaW5lIiksIHMpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBhcHByb3ByaWF0ZSBTU0xFcnJvciBzdWJjbGFzcyBpcyByYWlzZWQKKyAgICAgICAgIyAodGhpcyBvbmx5IHRlc3RzIG9uZSBvZiB0aGVtKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIHdpdGggc29ja2V0LnNvY2tldCgpIGFzIHM6CisgICAgICAgICAgICBzLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKKyAgICAgICAgICAgIHMubGlzdGVuKDUpCisgICAgICAgICAgICB3aXRoIHNvY2tldC5zb2NrZXQoKSBhcyBjOgorICAgICAgICAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCisgICAgICAgICAgICAgICAgYy5zZXRibG9ja2luZyhGYWxzZSkKKyAgICAgICAgICAgICAgICBjID0gY3R4LndyYXBfc29ja2V0KGMsIEZhbHNlLCBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xXYW50UmVhZEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgYy5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIHMgPSBzdHIoY20uZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLnN0YXJ0c3dpdGgoIlRoZSBvcGVyYXRpb24gZGlkIG5vdCBjb21wbGV0ZSAocmVhZCkiKSwgcykKKyAgICAgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEKQorCiAKIGNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtNTI5LDEzICs2ODgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgcy5kb19oYW5kc2hha2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9XUklURToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKICAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCiAgICAgICAgICAgICBmaW5hbGx5OgpAQCAtNjU1LDM3ICs4MTEsMzkgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQogICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdID09IHNzbC5TU0xfRVJST1JfV0FOVF9SRUFEOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbc10sIFtdLCBbXSkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRSZWFkRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSkKICAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgic3ZuLnB5dGhvbi5vcmciKToKLSAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKCgic3ZuLnB5dGhvbi5vcmciLCA0NDMpKQotICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiBzdm4ucHl0aG9uLm9yZzo0NDMhIikKKyAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6CisgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCiAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSwgY2FfY2VydHM9Q0VSVEZJTEUpCi0gICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPUNFUlRGSUxFKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgeDoKKyAgICAgICAgICAgICAgICAgICAgI3Nob3VsZCBmYWlsCisgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiVzXG4iICUgeCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yICVzOiVzISIgJSAocGVtLCBob3N0LCBwb3J0KSkKKworICAgICAgICAgICAgICAgIHBlbSA9IHNzbC5nZXRfc2VydmVyX2NlcnRpZmljYXRlKChob3N0LCBwb3J0KSwgY2FfY2VydHM9Y2VydCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiJXNcbiIgJSB4KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIkdvdCBzZXJ2ZXIgY2VydGlmaWNhdGUgJXMgZm9yIHN2bi5weXRob24ub3JnISIgJSBwZW0pCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQogCi0gICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoInN2bi5weXRob24ub3JnIiwgNDQzKSwgY2FfY2VydHM9U1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQotICAgICAgICAgICAgaWYgbm90IHBlbToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiBzdm4ucHl0aG9uLm9yZzo0NDMhIikKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcblZlcmlmaWVkIGNlcnRpZmljYXRlIGZvciBzdm4ucHl0aG9uLm9yZzo0NDMgaXNcbiVzXG4iICUgcGVtKQorICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKCdzdm4ucHl0aG9uLm9yZycsIDQ0MywgU1ZOX1BZVEhPTl9PUkdfUk9PVF9DRVJUKQorICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKKyAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6CiAgICAgICAgIHJlbW90ZSA9ICgic3ZuLnB5dGhvbi5vcmciLCA0NDMpCkBAIC03NjMsNiArOTIxLDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3NsY29ubiA9IHNlbGYuc2VydmVyLmNvbnRleHQud3JhcF9zb2NrZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbGVjdGVkX3Byb3RvY29scy5hcHBlbmQoc2VsZi5zc2xjb25uLnNlbGVjdGVkX25wbl9wcm90b2NvbCgpKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgIyBYWFggVmFyaW91cyBlcnJvcnMgY2FuIGhhdmUgaGFwcGVuZWQgaGVyZSwgZm9yIGV4YW1wbGUKICAgICAgICAgICAgICAgICAgICAgIyBhIG1pc21hdGNoaW5nIHByb3RvY29sIHZlcnNpb24sIGFuIGludmFsaWQgY2VydGlmaWNhdGUsCkBAIC03ODUsNiArOTQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgY2lwaGVyID0gc2VsZi5zc2xjb25uLmNpcGhlcigpCiAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY2hhdHR5OgogICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogY29ubmVjdGlvbiBjaXBoZXIgaXMgbm93ICIgKyBzdHIoY2lwaGVyKSArICJcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgc2VydmVyOiBzZWxlY3RlZCBwcm90b2NvbCBpcyBub3cgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0cihzZWxmLnNzbGNvbm4uc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkpICsgIlxuIikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAgICAgZGVmIHJlYWQoc2VsZik6CkBAIC04MzksNiArMTAwMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3NsY29ubiA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2UgYW5kIHNlbGYuc2VydmVyLmNvbm5lY3Rpb25jaGF0dHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBzZXJ2ZXI6IGNvbm5lY3Rpb24gaXMgbm93IHVuZW5jcnlwdGVkLi4uXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBzdHJpcHBlZCA9PSBiJ0NCIHRscy11bmlxdWUnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZSBhbmQgc2VsZi5zZXJ2ZXIuY29ubmVjdGlvbmNoYXR0eToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIHNlcnZlcjogcmVhZCBDQiB0bHMtdW5pcXVlIGZyb20gY2xpZW50LCBzZW5kaW5nIG91ciBDQiBkYXRhLi4uXG4iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnNzbGNvbm4uZ2V0X2NoYW5uZWxfYmluZGluZygidGxzLXVuaXF1ZSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZShyZXByKGRhdGEpLmVuY29kZSgidXMtYXNjaWkiKSArIGIiXG4iKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VwcG9ydC52ZXJib3NlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5KToKQEAgLTg1OCw3ICsxMDI0LDcgQEAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNlcnRpZmljYXRlPU5vbmUsIHNzbF92ZXJzaW9uPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjZXJ0cmVxcz1Ob25lLCBjYWNlcnRzPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSwgc3RhcnR0bHNfc2VydmVyPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgY2lwaGVycz1Ob25lLCBjb250ZXh0PU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsIGNvbnRleHQ9Tm9uZSk6CiAgICAgICAgICAgICBpZiBjb250ZXh0OgogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQKICAgICAgICAgICAgIGVsc2U6CkBAIC04NzEsNiArMTAzNyw4IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FjZXJ0cykKICAgICAgICAgICAgICAgICBpZiBjZXJ0aWZpY2F0ZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb250ZXh0LmxvYWRfY2VydF9jaGFpbihjZXJ0aWZpY2F0ZSkKKyAgICAgICAgICAgICAgICBpZiBucG5fcHJvdG9jb2xzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X25wbl9wcm90b2NvbHMobnBuX3Byb3RvY29scykKICAgICAgICAgICAgICAgICBpZiBjaXBoZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQuc2V0X2NpcGhlcnMoY2lwaGVycykKICAgICAgICAgICAgIHNlbGYuY2hhdHR5ID0gY2hhdHR5CkBAIC04ODAsNiArMTA0OCw3IEBACiAgICAgICAgICAgICBzZWxmLnBvcnQgPSBzdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNvY2spCiAgICAgICAgICAgICBzZWxmLmZsYWcgPSBOb25lCiAgICAgICAgICAgICBzZWxmLmFjdGl2ZSA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLnNlbGVjdGVkX3Byb3RvY29scyA9IFtdCiAgICAgICAgICAgICBzZWxmLmNvbm5fZXJyb3JzID0gW10KICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKICAgICAgICAgICAgIHNlbGYuZGFlbW9uID0gVHJ1ZQpAQCAtOTQ3LDEyICsxMTE2LDExIEBACiAgICAgICAgICAgICAgICAgZGVmIF9kb19zc2xfaGFuZHNoYWtlKHNlbGYpOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldC5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIGVycjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGVyci5hcmdzWzBdIGluIChzc2wuU1NMX0VSUk9SX1dBTlRfUkVBRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wuU1NMX0VSUk9SX1dBTlRfV1JJVEUpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBlcnIuYXJnc1swXSA9PSBzc2wuU1NMX0VSUk9SX0VPRjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgKHNzbC5TU0xXYW50UmVhZEVycm9yLCBzc2wuU1NMV2FudFdyaXRlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRU9GRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5oYW5kbGVfY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlcnI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlcnIuYXJnc1swXSA9PSBlcnJuby5FQ09OTkFCT1JURUQ6CkBAIC0xMDc1LDYgKzEyNDMsNyBAQAogICAgICAgICBMYXVuY2ggYSBzZXJ2ZXIsIGNvbm5lY3QgYSBjbGllbnQgdG8gaXQgYW5kIHRyeSB2YXJpb3VzIHJlYWRzCiAgICAgICAgIGFuZCB3cml0ZXMuCiAgICAgICAgICIiIgorICAgICAgICBzdGF0cyA9IHt9CiAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihjb250ZXh0PXNlcnZlcl9jb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PWNoYXR0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCkBAIC0xMTAwLDcgKzEyNjksMTQgQEAKICAgICAgICAgICAgICAgICBpZiBjb25uZWN0aW9uY2hhdHR5OgogICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIgY2xpZW50OiAgY2xvc2luZyBjb25uZWN0aW9uLlxuIikKKyAgICAgICAgICAgICAgICBzdGF0cy51cGRhdGUoeworICAgICAgICAgICAgICAgICAgICAnY29tcHJlc3Npb24nOiBzLmNvbXByZXNzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdjaXBoZXInOiBzLmNpcGhlcigpLAorICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCkKKyAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAgICAgc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfcHJvdG9jb2xzCisgICAgICAgIHJldHVybiBzdGF0cwogCiAgICAgZGVmIHRyeV9wcm90b2NvbF9jb21ibyhzZXJ2ZXJfcHJvdG9jb2wsIGNsaWVudF9wcm90b2NvbCwgZXhwZWN0X3N1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0c3JlcXM9Tm9uZSwgc2VydmVyX29wdGlvbnM9MCwgY2xpZW50X29wdGlvbnM9MCk6CkBAIC0xMjUyLDcgKzE0MjgsOCBAQAogICAgICAgICAgICAgICAgIHQuam9pbigpCiAKICAgICAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKLSAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdQUk9UT0NPTF9TU0x2MicpLCAibmVlZCBTU0x2MiIpCisgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3NsLCAnUFJPVE9DT0xfU1NMdjInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5TU0wgaXMgY29tcGlsZWQgd2l0aG91dCBTU0x2MiBzdXBwb3J0IikKICAgICAgICAgZGVmIHRlc3RfcHJvdG9jb2xfc3NsdjIoc2VsZik6CiAgICAgICAgICAgICAiIiJDb25uZWN0aW5nIHRvIGFuIFNTTHYyIHNlcnZlciB3aXRoIHZhcmlvdXMgY2xpZW50IG9wdGlvbnMiIiIKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKQEAgLTE1NTgsNiArMTczNSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICMgY29uc3VtZSBkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlYWQoKQorCisgICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgc2VuZG1zZyBldCBhbCBhcmUgZGlzYWxsb3dlZCB0byBhdm9pZAorICAgICAgICAgICAgICAgICMgaW5hZHZlcnRlbnQgZGlzY2xvc3VyZSBvZiBkYXRhIGFuZC9vciBjb3JydXB0aW9uCisgICAgICAgICAgICAgICAgIyBvZiB0aGUgZW5jcnlwdGVkIGRhdGEgc3RyZWFtCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgcy5zZW5kbXNnLCBbYiJkYXRhIl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgcy5yZWN2bXNnLCAxMDApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLnJlY3Ztc2dfaW50bywgYnl0ZWFycmF5KDEwMCkpCisKICAgICAgICAgICAgICAgICBzLndyaXRlKGIib3ZlclxuIikKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIApAQCAtMTYyNiw2ICsxODEyLDEzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJubyBzaGFyZWQgY2lwaGVyIiwgc3RyKHNlcnZlci5jb25uX2Vycm9yc1swXSkpCiAKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoInRscy11bmlxdWUiIGluIHNzbC5DSEFOTkVMX0JJTkRJTkdfVFlQRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIndGxzLXVuaXF1ZScgY2hhbm5lbCBiaW5kaW5nIG5vdCBhdmFpbGFibGUiKQorICAgICAgICBkZWYgdGVzdF90bHNfdW5pcXVlX2NoYW5uZWxfYmluZGluZyhzZWxmKToKKyAgICAgICAgICAgICIiIlRlc3QgdGxzLXVuaXF1ZSBjaGFubmVsIGJpbmRpbmcuIiIiCisgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG4iKQorCisgICAgICAgICAgICBzZXJ2ZXIgPSBUaHJlYWRlZEVjaG9TZXJ2ZXIoQ0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjZXJ0cz1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Q0VSVEZJTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAjIGdldCB0aGUgZGF0YQorICAgICAgICAgICAgICAgIGNiX2RhdGEgPSBzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGdvdCBjaGFubmVsIGJpbmRpbmcgZGF0YTogezAhcn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGNiX2RhdGEpKQorCisgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBpdCBpcyBzYW5lCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYl9kYXRhKSwgMTIpICMgVHJ1ZSBmb3IgVExTdjEKKworICAgICAgICAgICAgICAgICMgYW5kIGNvbXBhcmUgd2l0aCB0aGUgcGVlcnMgdmVyc2lvbgorICAgICAgICAgICAgICAgIHMud3JpdGUoYiJDQiB0bHMtdW5pcXVlXG4iKQorICAgICAgICAgICAgICAgIHBlZXJfZGF0YV9yZXByID0gcy5yZWFkKCkuc3RyaXAoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGVlcl9kYXRhX3JlcHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKGNiX2RhdGEpLmVuY29kZSgidXMtYXNjaWkiKSkKKyAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKworICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgorICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgbmV3X2NiX2RhdGEgPSBzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGdvdCBhbm90aGVyIGNoYW5uZWwgYmluZGluZyBkYXRhOiB7MCFyfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5mb3JtYXQobmV3X2NiX2RhdGEpKQorICAgICAgICAgICAgICAgICMgaXMgaXQgcmVhbGx5IHVuaXF1ZQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2JfZGF0YSwgbmV3X2NiX2RhdGEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoY2JfZGF0YSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjYl9kYXRhKSwgMTIpICMgVHJ1ZSBmb3IgVExTdjEKKyAgICAgICAgICAgICAgICBzLndyaXRlKGIiQ0IgdGxzLXVuaXF1ZVxuIikKKyAgICAgICAgICAgICAgICBwZWVyX2RhdGFfcmVwciA9IHMucmVhZCgpLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBlZXJfZGF0YV9yZXByLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihuZXdfY2JfZGF0YSkuZW5jb2RlKCJ1cy1hc2NpaSIpKQorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisgICAgICAgIGRlZiB0ZXN0X2NvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY29udGV4dCwgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXR0eT1UcnVlLCBjb25uZWN0aW9uY2hhdHR5PVRydWUpCisgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiIGdvdCBjb21wcmVzc2lvbjogeyFyfVxuIi5mb3JtYXQoc3RhdHNbJ2NvbXByZXNzaW9uJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihzdGF0c1snY29tcHJlc3Npb24nXSwgeyBOb25lLCAnWkxJQicsICdSTEUnIH0pCisKKyAgICAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzc2wsICdPUF9OT19DT01QUkVTU0lPTicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3NsLk9QX05PX0NPTVBSRVNTSU9OIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgZGVmIHRlc3RfY29tcHJlc3Npb25fZGlzYWJsZWQoc2VsZik6CisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBjb250ZXh0Lm9wdGlvbnMgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NvbXByZXNzaW9uJ10sIE5vbmUpCisKKyAgICAgICAgZGVmIHRlc3RfZGhfcGFyYW1zKHNlbGYpOgorICAgICAgICAgICAgIyBDaGVjayB3ZSBjYW4gZ2V0IGEgY29ubmVjdGlvbiB3aXRoIGVwaGVtZXJhbCBEaWZmaWUtSGVsbG1hbgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF9jZXJ0X2NoYWluKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2RoX3BhcmFtcyhESEZJTEUpCisgICAgICAgICAgICBjb250ZXh0LnNldF9jaXBoZXJzKCJrRURIIikKKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgY2lwaGVyID0gc3RhdHNbImNpcGhlciJdWzBdCisgICAgICAgICAgICBwYXJ0cyA9IGNpcGhlci5zcGxpdCgiLSIpCisgICAgICAgICAgICBpZiAiQURIIiBub3QgaW4gcGFydHMgYW5kICJFREgiIG5vdCBpbiBwYXJ0cyBhbmQgIkRIRSIgbm90IGluIHBhcnRzOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm9uLURIIGNpcGhlcjogIiArIGNpcGhlclswXSkKKworICAgICAgICBkZWYgdGVzdF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woc2VsZik6CisgICAgICAgICAgICAjIHNlbGVjdGVkX25wbl9wcm90b2NvbCgpIGlzIE5vbmUgdW5sZXNzIE5QTiBpcyB1c2VkCisgICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisgICAgICAgICAgICBzdGF0cyA9IHNlcnZlcl9wYXJhbXNfdGVzdChjb250ZXh0LCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3RhdHNbJ2NsaWVudF9ucG5fcHJvdG9jb2wnXSwgTm9uZSkKKworICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX05QTiwgIk5QTiBzdXBwb3J0IG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKKyAgICAgICAgZGVmIHRlc3RfbnBuX3Byb3RvY29scyhzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9wcm90b2NvbHMgPSBbJ2h0dHAvMS4xJywgJ3NwZHkvMiddCisgICAgICAgICAgICBwcm90b2NvbF90ZXN0cyA9IFsKKyAgICAgICAgICAgICAgICAoWydodHRwLzEuMScsICdzcGR5LzInXSwgJ2h0dHAvMS4xJyksCisgICAgICAgICAgICAgICAgKFsnc3BkeS8yJywgJ2h0dHAvMS4xJ10sICdodHRwLzEuMScpLAorICAgICAgICAgICAgICAgIChbJ3NwZHkvMicsICd0ZXN0J10sICdzcGR5LzInKSwKKyAgICAgICAgICAgICAgICAoWydhYmMnLCAnZGVmJ10sICdhYmMnKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgZm9yIGNsaWVudF9wcm90b2NvbHMsIGV4cGVjdGVkIGluIHByb3RvY29sX3Rlc3RzOgorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhzZXJ2ZXJfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICBjbGllbnRfY29udGV4dC5zZXRfbnBuX3Byb3RvY29scyhjbGllbnRfcHJvdG9jb2xzKQorICAgICAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorCisgICAgICAgICAgICAgICAgbXNnID0gImZhaWxlZCB0cnlpbmcgJXMgKHMpIGFuZCAlcyAoYykuXG4iIFwKKyAgICAgICAgICAgICAgICAgICAgICAid2FzIGV4cGVjdGluZyAlcywgYnV0IGdvdCAlJXMgZnJvbSB0aGUgJSVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHN0cihzZXJ2ZXJfcHJvdG9jb2xzKSwgc3RyKGNsaWVudF9wcm90b2NvbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZXhwZWN0ZWQpKQorICAgICAgICAgICAgICAgIGNsaWVudF9yZXN1bHQgPSBzdGF0c1snY2xpZW50X25wbl9wcm90b2NvbCddCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbGllbnRfcmVzdWx0LCBleHBlY3RlZCwgbXNnICUgKGNsaWVudF9yZXN1bHQsICJjbGllbnQiKSkKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfcmVzdWx0ID0gc3RhdHNbJ3NlcnZlcl9ucG5fcHJvdG9jb2xzJ11bLTFdIFwKKyAgICAgICAgICAgICAgICAgICAgaWYgbGVuKHN0YXRzWydzZXJ2ZXJfbnBuX3Byb3RvY29scyddKSBlbHNlICdub3RoaW5nJworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyX3Jlc3VsdCwgZXhwZWN0ZWQsIG1zZyAlIChzZXJ2ZXJfcmVzdWx0LCAic2VydmVyIikpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0xNjUzLDcgKzE5NjgsNyBAQAogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJDYW4ndCByZWFkIGNlcnRpZmljYXRlIGZpbGUgJXIiICUgZmlsZW5hbWUpCiAKLSAgICB0ZXN0cyA9IFtDb250ZXh0VGVzdHMsIEJhc2ljU29ja2V0VGVzdHNdCisgICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzXQogCiAgICAgaWYgc3VwcG9ydC5pc19yZXNvdXJjZV9lbmFibGVkKCduZXR3b3JrJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RhdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGQ1ZTM4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGF0LnB5CkBAIC0wLDAgKzEsNjYgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IG9zCitpbXBvcnQgc3RhdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0CisKKworZGVmIGdldF9tb2RlKGZuYW1lPVRFU1RGTik6CisgICAgcmV0dXJuIHN0YXQuZmlsZW1vZGUob3MubHN0YXQoZm5hbWUpLnN0X21vZGUpCisKKworY2xhc3MgVGVzdEZpbGVtb2RlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3Mucm1kaXIoVEVTVEZOKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworICAgIHRlYXJEb3duID0gc2V0VXAKKworICAgIGRlZiB0ZXN0X21vZGUoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3Jyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctcnd4LS0tLS0tJykKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG8wNzApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctLS0tcnd4LS0tJykKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG8wMDcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctLS0tLS0tcnd4JykKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG80NDQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICctci0tci0tci0tJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9zLmNobW9kKFRFU1RGTiwgMG83MDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKClbOjNdLCAnLXJ3JykKKworICAgIGRlZiB0ZXN0X2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVEZOKQorICAgICAgICBvcy5jaG1vZChURVNURk4sIDBvNzAwKQorICAgICAgICBpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9tb2RlKCksICdkcnd4LS0tLS0tJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKVswXSwgJ2QnKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3N5bWxpbmsnKSwgJ29zLnN5bWxpbmsgbm90IGF2YWlsYWJsZScpCisgICAgZGVmIHRlc3RfbGluayhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3ltbGluayhvcy5nZXRjd2QoKSwgVEVTVEZOKQorICAgICAgICBleGNlcHQgKE9TRXJyb3IsIE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KHN0cihlcnIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfbW9kZSgpWzBdLCAnbCcpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnbWtmaWZvJyksICdvcy5ta2ZpZm8gbm90IGF2YWlsYWJsZScpCisgICAgZGVmIHRlc3RfZmlmbyhzZWxmKToKKyAgICAgICAgb3MubWtmaWZvKFRFU1RGTiwgMG83MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0X21vZGUoKSwgJ3Byd3gtLS0tLS0nKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBydW5fdW5pdHRlc3QoVGVzdEZpbGVtb2RlKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmluZy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CmluZGV4IDM0ZDFkY2YuLmMyYmRmZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nLnB5CkBAIC0yNiw2ICsyNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmluZy5jYXB3b3JkcygnXHRhQmNcdERlRlx0JyksICdBYmMgRGVmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJpbmcuY2Fwd29yZHMoJ1x0YUJjXHREZUZcdCcsICdcdCcpLCAnXHRBYmNcdERlZlx0JykKIAorICAgIGRlZiB0ZXN0X2Jhc2ljX2Zvcm1hdHRlcihzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vIiksICJmb28iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoImZvb3swfSIsICJiYXIiKSwgImZvb2JhciIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezF9ezB9LXsxfSIsICJiYXIiLCA2KSwgImZvbzZiYXItNiIpCisKICAgICBkZWYgdGVzdF9jb252ZXJzaW9uX3NwZWNpZmllcnMoc2VsZik6CiAgICAgICAgIGZtdCA9IHN0cmluZy5Gb3JtYXR0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIi17YXJnIXJ9LSIsIGFyZz0ndGVzdCcpLCAiLSd0ZXN0Jy0iKQpAQCAtMzgsMTUgKzQ0LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezAhYX0iLCAgY2hyKDI1NSkpLCAiJ1xceGZmJyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiezAhYX0iLCAgY2hyKDI1NikpLCAiJ1xcdTAxMDAnIikKIAotICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcihzZWxmKToKKyAgICBkZWYgdGVzdF9uYW1lX2xvb2t1cChzZWxmKToKICAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vIiksICJmb28iKQorICAgICAgICBjbGFzcyBBbnlBdHRyOgorICAgICAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICAgICAgICAgIHJldHVybiBhdHRyCisgICAgICAgIHggPSBBbnlBdHRyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MC5sdW1iZXJ9ezAuamFja30iLCB4KSwgJ2x1bWJlcmphY2snKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIGZtdC5mb3JtYXQoInswLmx1bWJlcn17MC5qYWNrfSIsICcnKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgiZm9vezB9IiwgImJhciIpLCAiZm9vYmFyIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJmb297MX17MH0tezF9IiwgImJhciIsIDYpLCAiZm9vNmJhci02IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCIte2FyZyFyfS0iLCBhcmc9J3Rlc3QnKSwgIi0ndGVzdCctIikKKyAgICBkZWYgdGVzdF9pbmRleF9sb29rdXAoc2VsZik6CisgICAgICAgIGZtdCA9IHN0cmluZy5Gb3JtYXR0ZXIoKQorICAgICAgICBsb29rdXAgPSBbImVnZ3MiLCAiYW5kIiwgInNwYW0iXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoInswWzJdfXswWzBdfSIsIGxvb2t1cCksICdzcGFtZWdncycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvcik6CisgICAgICAgICAgICBmbXQuZm9ybWF0KCJ7MFsyXX17MFswXX0iLCBbXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBmbXQuZm9ybWF0KCJ7MFsyXX17MFswXX0iLCB7fSkKIAotICAgICAgICAjIG92ZXJyaWRlIGdldF92YWx1ZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2dldF92YWx1ZShzZWxmKToKICAgICAgICAgY2xhc3MgTmFtZXNwYWNlRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWVzcGFjZT17fSk6CiAgICAgICAgICAgICAgICAgc3RyaW5nLkZvcm1hdHRlci5fX2luaXRfXyhzZWxmKQpAQCAtNjYsNyArODMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdC5mb3JtYXQoIntncmVldGluZ30sIHdvcmxkISIpLCAnaGVsbG8sIHdvcmxkIScpCiAKIAotICAgICAgICAjIG92ZXJyaWRlIGZvcm1hdF9maWVsZCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2Zvcm1hdF9maWVsZChzZWxmKToKICAgICAgICAgY2xhc3MgQ2FsbEZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgIGRlZiBmb3JtYXRfZmllbGQoc2VsZiwgdmFsdWUsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gZm9ybWF0KHZhbHVlKCksIGZvcm1hdF9zcGVjKQpAQCAtNzUsMTggKzkyLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm10LmZvcm1hdCgnKnswfSonLCBsYW1iZGEgOiAncmVzdWx0JyksICcqcmVzdWx0KicpCiAKIAotICAgICAgICAjIG92ZXJyaWRlIGNvbnZlcnRfZmllbGQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiB0ZXN0X292ZXJyaWRlX2NvbnZlcnRfZmllbGQoc2VsZik6CiAgICAgICAgIGNsYXNzIFhGb3JtYXR0ZXIoc3RyaW5nLkZvcm1hdHRlcik6CiAgICAgICAgICAgICBkZWYgY29udmVydF9maWVsZChzZWxmLCB2YWx1ZSwgY29udmVyc2lvbik6CiAgICAgICAgICAgICAgICAgaWYgY29udmVyc2lvbiA9PSAneCc6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKFhGb3JtYXR0ZXIsIHNlbGYpLmNvbnZlcnRfZmllbGQodmFsdWUsIGNvbnZlcnNpb24pCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuY29udmVydF9maWVsZCh2YWx1ZSwgY29udmVyc2lvbikKIAogICAgICAgICBmbXQgPSBYRm9ybWF0dGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCJ7MCFyfTp7MCF4fSIsICdmb28nLCAnZm9vJyksICInZm9vJzpOb25lIikKIAogCi0gICAgICAgICMgb3ZlcnJpZGUgcGFyc2UgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgZGVmIHRlc3Rfb3ZlcnJpZGVfcGFyc2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEJhckZvcm1hdHRlcihzdHJpbmcuRm9ybWF0dGVyKToKICAgICAgICAgICAgICMgcmV0dXJucyBhbiBpdGVyYWJsZSB0aGF0IGNvbnRhaW5zIHR1cGxlcyBvZiB0aGUgZm9ybToKICAgICAgICAgICAgICMgKGxpdGVyYWxfdGV4dCwgZmllbGRfbmFtZSwgZm9ybWF0X3NwZWMsIGNvbnZlcnNpb24pCkBAIC0xMDIsNyArMTE5LDcgQEAKICAgICAgICAgZm10ID0gQmFyRm9ybWF0dGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQuZm9ybWF0KCcqfCswOl4xMHN8KicsICdmb28nKSwgJyogICBmb28gICAgKicpCiAKLSAgICAgICAgIyB0ZXN0IGFsbCBwYXJhbWV0ZXJzIHVzZWQKKyAgICBkZWYgdGVzdF9jaGVja191bnVzZWRfYXJncyhzZWxmKToKICAgICAgICAgY2xhc3MgQ2hlY2tBbGxVc2VkRm9ybWF0dGVyKHN0cmluZy5Gb3JtYXR0ZXIpOgogICAgICAgICAgICAgZGVmIGNoZWNrX3VudXNlZF9hcmdzKHNlbGYsIHVzZWRfYXJncywgYXJncywga3dhcmdzKToKICAgICAgICAgICAgICAgICAjIFRyYWNrIHdoaWNoIGFyZ3VtZW50cyBhY3R1YWxseSBnb3QgdXNlZApAQCAtMTI0LDI4ICsxNDEsMTMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm10LmZvcm1hdCwgInswfSIsIDEwLCAyMCwgaT0xMDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZtdC5mb3JtYXQsICJ7aX0iLCAxMCwgMjAsIGk9MTAwKQogCi0gICAgZGVmIHRlc3RfdmZvcm1hdF9hc3NlcnQoc2VsZik6Ci0gICAgICAgIGNscyA9IHN0cmluZy5Gb3JtYXR0ZXIoKQotICAgICAgICBrd2FyZ3MgPSB7Ci0gICAgICAgICAgICAiaSI6IDEwMAotICAgICAgICB9Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNscy5fdmZvcm1hdCwKLSAgICAgICAgICAgICAgICBjbHMuZm9ybWF0LCAiezB9Iiwga3dhcmdzLCBzZXQoKSwgLTIpCi0KLSAgICBkZWYgdGVzdF9jb252ZXJ0X2ZpZWxkKHNlbGYpOgotICAgICAgICBjbHMgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbHMuZm9ybWF0KCJ7MCFzfSIsICdmb28nKSwgJ2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNscy5mb3JtYXQsICJ7MCFofSIsICdmb28nKQotCi0gICAgZGVmIHRlc3RfZ2V0X2ZpZWxkKHNlbGYpOgotICAgICAgICBjbHMgPSBzdHJpbmcuRm9ybWF0dGVyKCkKLSAgICAgICAgY2xhc3MgTXlDbGFzczoKLSAgICAgICAgICAgIG5hbWUgPSAnbHVtYmVyamFjaycKLSAgICAgICAgeCA9IE15Q2xhc3MoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswLm5hbWV9IiwgeCksICdsdW1iZXJqYWNrJykKLQotICAgICAgICBsb29rdXAgPSBbImVnZ3MiLCAiYW5kIiwgInNwYW0iXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNscy5mb3JtYXQoInswWzJdfSIsIGxvb2t1cCksICdzcGFtJykKKyAgICBkZWYgdGVzdF92Zm9ybWF0X3JlY3Vyc2lvbl9saW1pdChzZWxmKToKKyAgICAgICAgZm10ID0gc3RyaW5nLkZvcm1hdHRlcigpCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBrd2FyZ3MgPSBkaWN0KGk9MTAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGVycjoKKyAgICAgICAgICAgIGZtdC5fdmZvcm1hdCgie2l9IiwgYXJncywga3dhcmdzLCBzZXQoKSwgLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInJlY3Vyc2lvbiIsIHN0cihlcnIuZXhjZXB0aW9uKSkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cmxpdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CmluZGV4IDZiZGM2ZTQuLjA3YmM0ODggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CkBAIC0yLDEwICsyLDEwIEBACiAKIFRoZXJlIGFyZSBmb3VyIHR5cGVzIG9mIHN0cmluZyBsaXRlcmFsczoKIAotICAgICdhYmMnICAgLS0gbm9ybWFsIHN0cgotICAgIHInYWJjJyAgLS0gcmF3IHN0cgotICAgIGIneHl6JyAgLS0gbm9ybWFsIGJ5dGVzCi0gICAgYnIneHl6JyAtLSByYXcgYnl0ZXMKKyAgICAnYWJjJyAgICAgICAgICAgICAtLSBub3JtYWwgc3RyCisgICAgcidhYmMnICAgICAgICAgICAgLS0gcmF3IHN0cgorICAgIGIneHl6JyAgICAgICAgICAgIC0tIG5vcm1hbCBieXRlcworICAgIGJyJ3h5eicgfCByYid4eXonIC0tIHJhdyBieXRlcwogCiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG5vcm1hbCBhbmQgcmF3IHN0cmluZ3MgaXMgb2YgY291cnNlIHRoYXQgaW4gYQogcmF3IHN0cmluZywgXCBlc2NhcGVzICh3aGlsZSBzdGlsbCB1c2VkIHRvIGRldGVybWluZSB0aGUgZW5kIG9mIHRoZQpAQCAtMTAzLDEyICsxMDMsMzQgQEAKIAogICAgIGRlZiB0ZXN0X2V2YWxfYnl0ZXNfcmF3KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGJyJ3gnICIiIiksIGIneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgcmIneCcgIiIiKSwgYid4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHgwMScgIiIiKSwgYidcXCcgKyBiJ3gwMScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIHJiJ1x4MDEnICIiIiksIGInXFwnICsgYid4MDEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoIiIiIGJyJ1x4MDEnICIiIiksIGJ5dGUoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgcmInXHgwMScgIiIiKSwgYnl0ZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYnInXHg4MScgIiIiKSwgYiJcXCIgKyBiIng4MSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIHJiJ1x4ODEnICIiIiksIGIiXFwiICsgYiJ4ODEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJyJ1x4ODEnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiByYidceDgxJyAiIiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1x1MTg4MScgIiIiKSwgYiJcXCIgKyBiInUxODgxIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgcmInXHUxODgxJyAiIiIpLCBiIlxcIiArIGIidTE4ODEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJyJ1x1MTg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiJ1x1MTg4MScgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJiJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJyJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIGJycicnICIiIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiYnInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnJiJycgIiIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIiIiIHJiYicnICIiIikKKworICAgIGRlZiB0ZXN0X2V2YWxfc3RyX3Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgdSd4JyAiIiIpLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgVSdcdTAwZTQnICIiIiksICfDpCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbCgiIiIgdSdcTntMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJU30nICIiIiksICfDpCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgdXInJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgcnUnJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgYnUnJyAiIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiIiIgdWInJyAiIiIpCiAKICAgICBkZWYgY2hlY2tfZW5jb2Rpbmcoc2VsZiwgZW5jb2RpbmcsIGV4dHJhPSIiKToKICAgICAgICAgbW9kbmFtZSA9ICJ4eF8iICsgZW5jb2RpbmcucmVwbGFjZSgiLSIsICJfIikKQEAgLTEzMSw3ICsxNTMsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgc2VsZi5jaGVja19lbmNvZGluZywgInV0Zi04IiwgZXh0cmEpCiAKICAgICBkZWYgdGVzdF9maWxlX3V0Zjgoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoInV0ZjgiKQorICAgICAgICBzZWxmLmNoZWNrX2VuY29kaW5nKCJ1dGYtOCIpCiAKICAgICBkZWYgdGVzdF9maWxlX2lzb184ODU5XzEoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RpbmcoImlzby04ODU5LTEiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQppbmRleCBkY2M3M2FiLi4yMjM3NGQyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cnVjdC5weQpAQCAtOCw5ICs4LDE5IEBACiBJU0JJR0VORElBTiA9IHN5cy5ieXRlb3JkZXIgPT0gImJpZyIKIElTMzJCSVQgPSBzeXMubWF4c2l6ZSA9PSAweDdmZmZmZmZmCiAKLWludGVnZXJfY29kZXMgPSAnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ0knLCAnbCcsICdMJywgJ3EnLCAnUScKK2ludGVnZXJfY29kZXMgPSAnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ0knLCAnbCcsICdMJywgJ3EnLCAnUScsICduJywgJ04nCiBieXRlb3JkZXJzID0gJycsICdAJywgJz0nLCAnPCcsICc+JywgJyEnCiAKK2RlZiBpdGVyX2ludGVnZXJfZm9ybWF0cyhieXRlb3JkZXJzPWJ5dGVvcmRlcnMpOgorICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6CisgICAgICAgIGZvciBieXRlb3JkZXIgaW4gYnl0ZW9yZGVyczoKKyAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCisgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBub3QgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgnbicsICdOJykpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICB5aWVsZCBjb2RlLCBieXRlb3JkZXIKKwogIyBOYXRpdmUgJ3EnIHBhY2tpbmcgaXNuJ3QgYXZhaWxhYmxlIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBDCiAjIGxvbmcgbG9uZyB0eXBlLgogdHJ5OgpAQCAtMzAsNyArNDAsNiBAQAogICAgICAgICByZXR1cm4gc3RyaW5nX3JldmVyc2UodmFsdWUpCiAKIGNsYXNzIFN0cnVjdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCiAgICAgZGVmIHRlc3RfaXNiaWdlbmRpYW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKHN0cnVjdC5wYWNrKCc9aScsIDEpWzBdID09IDApLCBJU0JJR0VORElBTikKIApAQCAtMTQyLDE0ICsxNTEsMTMgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAjIHN0YW5kYXJkIGludGVnZXIgc2l6ZXMKLSAgICAgICAgZm9yIGNvZGUgaW4gaW50ZWdlcl9jb2RlczoKLSAgICAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gJz0nLCAnPCcsICc+JywgJyEnOgotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCi0gICAgICAgICAgICAgICAgc2l6ZSA9IHN0cnVjdC5jYWxjc2l6ZShmb3JtYXQpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQorICAgICAgICBmb3IgY29kZSwgYnl0ZW9yZGVyIGluIGl0ZXJfaW50ZWdlcl9mb3JtYXRzKCgnPScsICc8JywgJz4nLCAnIScpKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCisgICAgICAgICAgICBzaXplID0gc3RydWN0LmNhbGNzaXplKGZvcm1hdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgZXhwZWN0ZWRfc2l6ZVtjb2RlXSkKIAogICAgICAgICAjIG5hdGl2ZSBpbnRlZ2VyIHNpemVzCi0gICAgICAgIG5hdGl2ZV9wYWlycyA9ICdiQicsICdoSCcsICdpSScsICdsTCcKKyAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJwogICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKICAgICAgICAgICAgIG5hdGl2ZV9wYWlycyArPSAncVEnLAogICAgICAgICBmb3IgZm9ybWF0X3BhaXIgaW4gbmF0aXZlX3BhaXJzOgpAQCAtMTY3LDkgKzE3NSwxMSBAQAogICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDgsIHN0cnVjdC5jYWxjc2l6ZSgncScpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSkKIAogICAgIGRlZiB0ZXN0X2ludGVnZXJzKHNlbGYpOgotICAgICAgICAjIEludGVnZXIgdGVzdHMgKGJCaEhpSWxMcVEpLgorICAgICAgICAjIEludGVnZXIgdGVzdHMgKGJCaEhpSWxMcVFuTikuCiAgICAgICAgIGltcG9ydCBiaW5hc2NpaQogCiAgICAgICAgIGNsYXNzIEludFRlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xODMsMTEgKzE5MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnl0ZW9yZGVyKQogICAgICAgICAgICAgICAgIHNlbGYuYnl0ZXNpemUgPSBzdHJ1Y3QuY2FsY3NpemUoZm9ybWF0KQogICAgICAgICAgICAgICAgIHNlbGYuYml0c2l6ZSA9IHNlbGYuYnl0ZXNpemUgKiA4Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdiaGlscScpOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuY29kZSBpbiB0dXBsZSgnYmhpbHFuJyk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lnbmVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbl92YWx1ZSA9IC0oMioqKHNlbGYuYml0c2l6ZS0xKSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfdmFsdWUgPSAyKiooc2VsZi5iaXRzaXplLTEpIC0gMQotICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdCSElMUScpOgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5jb2RlIGluIHR1cGxlKCdCSElMUU4nKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWduZWQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm1pbl92YWx1ZSA9IDAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5tYXhfdmFsdWUgPSAyKipzZWxmLmJpdHNpemUgLSAxCkBAIC0zMTcsMTQgKzMyNywyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QucGFjaywgc2VsZi5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaikKIAotICAgICAgICBmb3IgY29kZSBpbiBpbnRlZ2VyX2NvZGVzOgotICAgICAgICAgICAgZm9yIGJ5dGVvcmRlciBpbiBieXRlb3JkZXJzOgotICAgICAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCi0gICAgICAgICAgICAgICAgICAgIG5vdCBIQVZFX0xPTkdfTE9ORyk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlcitjb2RlCisgICAgICAgICAgICB0ID0gSW50VGVzdGVyKGZvcm1hdCkKKyAgICAgICAgICAgIHQucnVuKCkKKworICAgIGRlZiB0ZXN0X25OX2NvZGUoc2VsZik6CisgICAgICAgICMgbiBhbmQgTiBkb24ndCBleGlzdCBpbiBzdGFuZGFyZCBzaXplcworICAgICAgICBkZWYgYXNzZXJ0U3RydWN0RXJyb3IoZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImJhZCBjaGFyIGluIHN0cnVjdCBmb3JtYXQiLCBzdHIoY20uZXhjZXB0aW9uKSkKKyAgICAgICAgZm9yIGNvZGUgaW4gJ25OJzoKKyAgICAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gKCc9JywgJzwnLCAnPicsICchJyk6CiAgICAgICAgICAgICAgICAgZm9ybWF0ID0gYnl0ZW9yZGVyK2NvZGUKLSAgICAgICAgICAgICAgICB0ID0gSW50VGVzdGVyKGZvcm1hdCkKLSAgICAgICAgICAgICAgICB0LnJ1bigpCisgICAgICAgICAgICAgICAgYXNzZXJ0U3RydWN0RXJyb3Ioc3RydWN0LmNhbGNzaXplLCBmb3JtYXQpCisgICAgICAgICAgICAgICAgYXNzZXJ0U3RydWN0RXJyb3Ioc3RydWN0LnBhY2ssIGZvcm1hdCwgMCkKKyAgICAgICAgICAgICAgICBhc3NlcnRTdHJ1Y3RFcnJvcihzdHJ1Y3QudW5wYWNrLCBmb3JtYXQsIGIiIikKIAogICAgIGRlZiB0ZXN0X3BfY29kZShzZWxmKToKICAgICAgICAgIyBUZXN0IHAgKCJQYXNjYWwgc3RyaW5nIikgY29kZS4KQEAgLTM3OCwxNCArMzk3LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHN0cnVjdC5wYWNrLCAiPmYiLCBiaWcpCiAKICAgICBkZWYgdGVzdF8xNTMwNTU5KHNlbGYpOgotICAgICAgICBmb3IgYnl0ZW9yZGVyIGluICcnLCAnQCcsICc9JywgJzwnLCAnPicsICchJzoKLSAgICAgICAgICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6Ci0gICAgICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBpbiAoJycsICdAJykgYW5kIGNvZGUgaW4gKCdxJywgJ1EnKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBieXRlb3JkZXIgKyBjb2RlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjUpCisgICAgICAgIGZvciBjb2RlLCBieXRlb3JkZXIgaW4gaXRlcl9pbnRlZ2VyX2Zvcm1hdHMoKToKKyAgICAgICAgICAgIGZvcm1hdCA9IGJ5dGVvcmRlciArIGNvZGUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssIGZvcm1hdCwgMS4wKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc3RydWN0LmVycm9yLCBzdHJ1Y3QucGFjaywgZm9ybWF0LCAxLjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN0cnVjdC5lcnJvciwgc3RydWN0LnBhY2ssICdQJywgMS4wKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdHJ1Y3QuZXJyb3IsIHN0cnVjdC5wYWNrLCAnUCcsIDEuNSkKIApAQCAtNTU5LDkgKzU3NCw5IEBACiAKICAgICBkZWYgY2hlY2tfc2l6ZW9mKHNlbGYsIGZvcm1hdF9zdHIsIG51bWJlcl9vZl9jb2Rlcyk6CiAgICAgICAgICMgVGhlIHNpemUgb2YgJ1B5U3RydWN0T2JqZWN0JwotICAgICAgICB0b3RhbHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCisgICAgICAgIHRvdGFsc2l6ZSA9IHN1cHBvcnQuY2FsY29ianNpemUoJzJuM1AnKQogICAgICAgICAjIFRoZSBzaXplIHRha2VuIHVwIGJ5IHRoZSAnZm9ybWF0Y29kZScgZHluYW1pYyBhcnJheQotICAgICAgICB0b3RhbHNpemUgKz0gc3RydWN0LmNhbGNzaXplKCczUCcpICogKG51bWJlcl9vZl9jb2RlcyArIDEpCisgICAgICAgIHRvdGFsc2l6ZSArPSBzdHJ1Y3QuY2FsY3NpemUoJ1AybjBQJykgKiAobnVtYmVyX29mX2NvZGVzICsgMSkKICAgICAgICAgc3VwcG9ydC5jaGVja19zaXplb2Yoc2VsZiwgc3RydWN0LlN0cnVjdChmb3JtYXRfc3RyKSwgdG90YWxzaXplKQogCiAgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0cnVjdHNlcS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CmluZGV4IGQ2YzYzYjcuLmE4OWU5NTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RydWN0c2VxLnB5CkBAIC03OCw4ICs3OCw5IEBACiAKICAgICBkZWYgdGVzdF9maWVsZHMoc2VsZik6CiAgICAgICAgIHQgPSB0aW1lLmdtdGltZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHQpLCB0Lm5fZmllbGRzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQubl9maWVsZHMsIHQubl9zZXF1ZW5jZV9maWVsZHMrdC5uX3VubmFtZWRfZmllbGRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih0KSwgdC5uX3NlcXVlbmNlX2ZpZWxkcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Lm5fdW5uYW1lZF9maWVsZHMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5uX2ZpZWxkcywgdGltZS5fU1RSVUNUX1RNX0lURU1TKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0b3Ioc2VsZik6CiAgICAgICAgIHQgPSB0aW1lLnN0cnVjdF90aW1lCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggMTVmYjQ5OC4uYjI2MGM4MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMTYsNiArMTYsNyBAQAogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNodXRpbAogaW1wb3J0IGdjCitpbXBvcnQgdGV4dHdyYXAKIAogdHJ5OgogICAgIGltcG9ydCByZXNvdXJjZQpAQCAtNjIsNiArNjMsOCBAQAogICAgICAgICAjIHNodXRkb3duIHRpbWUuICBUaGF0IGZydXN0cmF0ZXMgdGVzdHMgdHJ5aW5nIHRvIGNoZWNrIHN0ZGVyciBwcm9kdWNlZAogICAgICAgICAjIGZyb20gYSBzcGF3bmVkIFB5dGhvbiBwcm9jZXNzLgogICAgICAgICBhY3R1YWwgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3RkZXJyKQorICAgICAgICAjIHN0cmlwX3B5dGhvbl9zdGRlcnIgYWxzbyBzdHJpcHMgd2hpdGVzcGFjZSwgc28gd2UgZG8gdG9vLgorICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkLnN0cmlwKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtc2cpCiAKIApAQCAtNzMsNiArNzYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzOyBzeXMuZXhpdCg0NykiXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYywgNDcpCiAKKyAgICBkZWYgdGVzdF9jYWxsX3RpbWVvdXQoc2VsZik6CisgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmd1bWVudDsgd2Ugd2FudCB0byB0ZXN0IHRoYXQgdGhlIGNoaWxkCisgICAgICAgICMgcHJvY2VzcyBnZXRzIGtpbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGV4cGlyZXMuICBJZiB0aGUgY2hpbGQgaXNuJ3QKKyAgICAgICAgIyBraWxsZWQsIHRoaXMgY2FsbCB3aWxsIGRlYWRsb2NrIHNpbmNlIHN1YnByb2Nlc3MuY2FsbCB3YWl0cyBmb3IgdGhlCisgICAgICAgICMgY2hpbGQuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHN1YnByb2Nlc3MuY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAid2hpbGUgVHJ1ZTogcGFzcyJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTAuMSkKKwogICAgIGRlZiB0ZXN0X2NoZWNrX2NhbGxfemVybyhzZWxmKToKICAgICAgICAgIyBjaGVja19jYWxsKCkgZnVuY3Rpb24gd2l0aCB6ZXJvIHJldHVybiBjb2RlCiAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKQEAgLTExNSw2ICsxMjcsMjEgQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXhwZWN0ZWQgVmFsdWVFcnJvciB3aGVuIHN0ZG91dCBhcmcgc3VwcGxpZWQuIikKICAgICAgICAgc2VsZi5hc3NlcnRJbignc3Rkb3V0JywgYy5leGNlcHRpb24uYXJnc1swXSkKIAorICAgIGRlZiB0ZXN0X2NoZWNrX291dHB1dF90aW1lb3V0KHNlbGYpOgorICAgICAgICAjIGNoZWNrX291dHB1dCgpIGZ1bmN0aW9uIHdpdGggdGltZW91dCBhcmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkKSBhcyBjOgorICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoCisgICAgICAgICAgICAgICAgICAgIFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc3lzLCB0aW1lXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC53cml0ZSgnQkRGTCcpXG4iCisgICAgICAgICAgICAgICAgICAgICAic3lzLnN0ZG91dC5mbHVzaCgpXG4iCisgICAgICAgICAgICAgICAgICAgICAidGltZS5zbGVlcCgzNjAwKSJdLAorICAgICAgICAgICAgICAgICAgICAjIFNvbWUgaGVhdmlseSBsb2FkZWQgYnVpbGRib3RzIChzcGFyYyBEZWJpYW4gMy54KSByZXF1aXJlCisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBtdWNoIHRpbWUgdG8gc3RhcnQgYW5kIHByaW50LgorICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMpCisgICAgICAgICAgICBzZWxmLmZhaWwoIkV4cGVjdGVkIFRpbWVvdXRFeHBpcmVkLiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYy5leGNlcHRpb24ub3V0cHV0LCBiJ0JERkwnKQorCiAgICAgZGVmIHRlc3RfY2FsbF9rd2FyZ3Moc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGgga2V5d29yZCBhcmdzCiAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCkBAIC0xNjUsNiArMTkyLDQwIEBACiAgICAgICAgIHAud2FpdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRlcnIsIE5vbmUpCiAKKyAgICBkZWYgX2Fzc2VydF9weXRob24oc2VsZiwgcHJlX2FyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBXZSBpbmNsdWRlIHN5cy5leGl0KCkgdG8gcHJldmVudCB0aGUgdGVzdCBydW5uZXIgZnJvbSBoYW5naW5nCisgICAgICAgICMgd2hlbmV2ZXIgcHl0aG9uIGlzIGZvdW5kLgorICAgICAgICBhcmdzID0gcHJlX2FyZ3MgKyBbImltcG9ydCBzeXM7IHN5cy5leGl0KDQ3KSJdCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsICoqa3dhcmdzKQorICAgICAgICBwLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQ3LCBwLnJldHVybmNvZGUpCisKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnQgd29ya3MuCisgICAgICAgICMKKyAgICAgICAgIyBPbiBVbml4IChub24tTWFjIGFuZCBub24tV2luZG93cyksIFB5dGhvbiBsb29rcyBhdCBhcmdzWzBdIHRvCisgICAgICAgICMgZGV0ZXJtaW5lIHdoZXJlIGl0cyBzdGFuZGFyZCBsaWJyYXJ5IGlzLCBzbyB3ZSBuZWVkIHRoZSBkaXJlY3RvcnkKKyAgICAgICAgIyBvZiBhcmdzWzBdIHRvIGJlIHZhbGlkIGZvciB0aGUgUG9wZW4oKSBjYWxsIHRvIFB5dGhvbiB0byBzdWNjZWVkLgorICAgICAgICAjIFNlZSBhbHNvIGlzc3VlICMxNjE3MCBhbmQgaXNzdWUgIzc3NzQuCisgICAgICAgIGRvZXNub3RleGlzdCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXNub3RleGlzdCIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24oW2RvZXNub3RleGlzdCwgIi1jIl0sIGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUpCisKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlX3Rha2VzX3ByZWNlZGVuY2Uoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYXJnc1swXS4KKyAgICAgICAgIworICAgICAgICAjIFZlcmlmeSBmaXJzdCB0aGF0IHRoZSBjYWxsIHN1Y2NlZWRzIHdpdGhvdXQgdGhlIGV4ZWN1dGFibGUgYXJnLgorICAgICAgICBwcmVfYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIl0KKyAgICAgICAgc2VsZi5fYXNzZXJ0X3B5dGhvbihwcmVfYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHNlbGYuX2Fzc2VydF9weXRob24sIHByZV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPSJkb2Vzbm90ZXhpc3QiKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJleGVjdXRhYmxlIGFyZ3VtZW50IHJlcGxhY2VzIHNoZWxsIikKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlX3JlcGxhY2VzX3NoZWxsKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGV4ZWN1dGFibGUgYXJndW1lbnQgcmVwbGFjZXMgdGhlIGRlZmF1bHQgc2hlbGwKKyAgICAgICAgIyB3aGVuIHNoZWxsPVRydWUuCisgICAgICAgIHNlbGYuX2Fzc2VydF9weXRob24oW10sIGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsIHNoZWxsPVRydWUpCisKICAgICAjIEZvciB1c2UgaW4gdGhlIHRlc3RfY3dkKiB0ZXN0cyBiZWxvdy4KICAgICBkZWYgX25vcm1hbGl6ZV9jd2Qoc2VsZiwgY3dkKToKICAgICAgICAgIyBOb3JtYWxpemUgYW4gZXhwZWN0ZWQgY3dkIChmb3IgVHJ1NjQgc3VwcG9ydCkuCkBAIC0yMTUsOSArMjc2LDkgQEAKICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIHRoZSBjb3JyZWN0IGN3ZCwgY29uZmlybSB0aGF0IHRoZSBjYWxsIGZhaWxzCiAgICAgICAgICAgICAjIHdpdGhvdXQgY3dkIGFuZCB3aXRoIHRoZSB3cm9uZyBjd2QuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0sIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQogICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2N3ZChweXRob25fZGlyLCByZWxfcHl0aG9uLCBjd2Q9cHl0aG9uX2RpcikKQEAgLTIzMiw5ICsyOTMsOSBAQAogICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKSBhcyB3cm9uZ19kaXI6CiAgICAgICAgICAgICAjIEJlZm9yZSBjYWxsaW5nIHdpdGggdGhlIGNvcnJlY3QgY3dkLCBjb25maXJtIHRoYXQgdGhlIGNhbGwgZmFpbHMKICAgICAgICAgICAgICMgd2l0aG91dCBjd2QgYW5kIHdpdGggdGhlIHdyb25nIGN3ZC4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb2VzbnRleGlzdF0sIGV4ZWN1dGFibGU9cmVsX3B5dGhvbikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhGaWxlTm90Rm91bmRFcnJvciwgc3VicHJvY2Vzcy5Qb3BlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkb2VzbnRleGlzdF0sIGV4ZWN1dGFibGU9cmVsX3B5dGhvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQpAQCAtMjUwLDE3ICszMTEsMjEgQEAKICAgICAgICAgd2l0aCBzY3JpcHRfaGVscGVyLnRlbXBfZGlyKCkgYXMgd3JvbmdfZGlyOgogICAgICAgICAgICAgIyBCZWZvcmUgY2FsbGluZyB3aXRoIGFuIGFic29sdXRlIHBhdGgsIGNvbmZpcm0gdGhhdCB1c2luZyBhCiAgICAgICAgICAgICAjIHJlbGF0aXZlIHBhdGggZmFpbHMuCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzdWJwcm9jZXNzLlBvcGVuLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIHN1YnByb2Nlc3MuUG9wZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVsX3B5dGhvbl0sIGN3ZD13cm9uZ19kaXIpCiAgICAgICAgICAgICB3cm9uZ19kaXIgPSBzZWxmLl9ub3JtYWxpemVfY3dkKHdyb25nX2RpcikKICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9jd2Qod3JvbmdfZGlyLCBhYnNfcHl0aG9uLCBjd2Q9d3JvbmdfZGlyKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuYmFzZV9wcmVmaXggIT0gc3lzLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICdUZXN0IGlzIG5vdCB2ZW52LWNvbXBhdGlibGUnKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aF9jd2Qoc2VsZik6CiAgICAgICAgIHB5dGhvbl9kaXIsIHB5dGhvbl9iYXNlID0gc2VsZi5fc3BsaXRfcHl0aG9uX3BhdGgoKQogICAgICAgICBweXRob25fZGlyID0gc2VsZi5fbm9ybWFsaXplX2N3ZChweXRob25fZGlyKQogICAgICAgICBzZWxmLl9hc3NlcnRfY3dkKHB5dGhvbl9kaXIsICJzb21ldGhpbmd5b3Vkb250aGF2ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgY3dkPXB5dGhvbl9kaXIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5iYXNlX3ByZWZpeCAhPSBzeXMucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IHZlbnYtY29tcGF0aWJsZScpCiAgICAgQHVuaXR0ZXN0LnNraXBJZihzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCiAgICAgICAgICAgICAgICAgICAgICAibmVlZCBhbiBpbnN0YWxsZWQgUHl0aG9uLiBTZWUgIzc3NzQiKQogICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfd2l0aG91dF9jd2Qoc2VsZik6CkBAIC0zOTgsNiArNDYzLDMxIEBACiAgICAgICAgIHJjID0gc3VicHJvY2Vzcy5jYWxsKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgY21kXSwgc3Rkb3V0PTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDIpCiAKKyAgICBkZWYgdGVzdF9zdGRvdXRfZGV2bnVsbChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvciBpIGluIHJhbmdlKDEwMjQwKTonCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJpbnQoIngiICogMTAyNCknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zdGRlcnJfZGV2bnVsbChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb3IgaSBpbiByYW5nZSgxMDI0MCk6JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoIngiICogMTAyNCknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLkRFVk5VTEwpCisgICAgICAgIHAud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRlcnIsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9zdGRpbl9kZXZudWxsKHNlbGYpOgorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGluLnJlYWQoMSknXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgcC53YWl0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZGluLCBOb25lKQorCiAgICAgZGVmIHRlc3RfZW52KHNlbGYpOgogICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAib3JhbmdlIgpAQCAtNDY4LDYgKzU1OCw0MSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYiJiYW5hbmEiKQogICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYiJwaW5lYXBwbGUiKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfdGltZW91dChzZWxmKToKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3MsdGltZTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgicGluZWFwcGxlXFxuIik7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRlcnIud3JpdGUoInBlYXJcXG4iKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkLCBwLmNvbW11bmljYXRlLCAiYmFuYW5hIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0wLjMpCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGNhbiBrZWVwIHdhaXRpbmcgZm9yIGl0LCBhbmQgdGhhdCB3ZSBnZXQgdGhlIHdob2xlIG91dHB1dAorICAgICAgICAjIGFmdGVyIGl0IGNvbXBsZXRlcy4KKyAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgImJhbmFuYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwoc3RkZXJyLmVuY29kZSgpLCBiInBpbmVhcHBsZVxucGVhclxuIikKKworICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3RpbWVvdXRfbGFyZ2Vfb3VwdXQoc2VsZik6CisgICAgICAgICMgVGVzdCBhbiBleHBpcmluZyB0aW1lb3V0IHdoaWxlIHRoZSBjaGlsZCBpcyBvdXRwdXR0aW5nIGxvdHMgb2YgZGF0YS4KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3MsdGltZTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuc2xlZXAoMC4yKTsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZSgiYSIgKiAoNjQgKiAxMDI0KSk7J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQsIHAuY29tbXVuaWNhdGUsIHRpbWVvdXQ9MC40KQorICAgICAgICAoc3Rkb3V0LCBfKSA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdGRvdXQpLCA0ICogNjQgKiAxMDI0KQorCiAgICAgIyBUZXN0IGZvciB0aGUgZmQgbGVhayByZXBvcnRlZCBpbiBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc5MS4KICAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV9waXBlX2ZkX2xlYWsoc2VsZik6CiAgICAgICAgIGZvciBzdGRpbl9waXBlIGluIChGYWxzZSwgVHJ1ZSk6CkBAIC01MDQsMjQgKzYyOSwyMSBAQAogICAgICAgICAjIFRoaXMgdGVzdCB3aWxsIHByb2JhYmx5IGRlYWRsb2NrIHJhdGhlciB0aGFuIGZhaWwsIGlmCiAgICAgICAgICMgY29tbXVuaWNhdGUoKSBkb2VzIG5vdCB3b3JrIHByb3Blcmx5LgogICAgICAgICB4LCB5ID0gb3MucGlwZSgpCi0gICAgICAgIGlmIG1zd2luZG93czoKLSAgICAgICAgICAgIHBpcGVfYnVmID0gNTEyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwaXBlX2J1ZiA9IG9zLmZwYXRoY29uZih4LCAiUENfUElQRV9CVUYiKQogICAgICAgICBvcy5jbG9zZSh4KQogICAgICAgICBvcy5jbG9zZSh5KQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5cyxvczsnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCg0NykpOycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXMuc3RkZXJyLndyaXRlKCJ4eXoiKiVkKTsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShzeXMuc3RkaW4ucmVhZCgpKScgJSBwaXBlX2J1Zl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgieCIgKiAlZCk7JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUoc3lzLnN0ZGluLnJlYWQoKSknICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuUElQRV9NQVhfU0laRV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGluLmNsb3NlKQotICAgICAgICBzdHJpbmdfdG9fd3JpdGUgPSBiImFiYyIqcGlwZV9idWYKKyAgICAgICAgc3RyaW5nX3RvX3dyaXRlID0gYiJhIiAqIHN1cHBvcnQuUElQRV9NQVhfU0laRQogICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcC5jb21tdW5pY2F0ZShzdHJpbmdfdG9fd3JpdGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCBzdHJpbmdfdG9fd3JpdGUpCiAKQEAgLTU5Niw4ICs3MTgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCi0gICAgICAgICMgQlVHOiBjYW4ndCBnaXZlIGEgbm9uLWVtcHR5IHN0ZGluIGJlY2F1c2UgaXQgYnJlYWtzIGJvdGggdGhlCi0gICAgICAgICMgc2VsZWN0LSBhbmQgcG9sbC1iYXNlZCBjb21tdW5pY2F0ZSgpIGltcGxlbWVudGF0aW9ucy4KICAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAibGluZTJcbmxpbmU0XG5saW5lNVxubGluZTZcbmxpbmU3XG5saW5lOCIpCkBAIC02MDUsMTIgKzcyNSwxMiBAQAogICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9uZXdsaW5lc19jb21tdW5pY2F0ZV9zdGRpbihzZWxmKToKICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgdGhyb3VnaCBjb21tdW5pY2F0ZSgpLCB3aXRoIG9ubHkgc3RkaW4KICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3M7JyArIFNFVEJJTkFSWSArICcnJ1xuaWYgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTFcXG4iLCByZXByKHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTNcXG4iLCByZXByKHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3M7JyArIFNFVEJJTkFSWSArIHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTFcXG4iLCByZXByKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5yZWFkKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgcyA9PSAibGluZTNcXG4iLCByZXByKHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJycpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9MSkKICAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoImxpbmUxXG5saW5lM1xuIikKQEAgLTYyOCw2ICs3NDgsMzUgQEAKICAgICAgICAgcC5jb21tdW5pY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5yZXR1cm5jb2RlLCAwKQogCisgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlX3N0ZGluX3N0ZG91dF9zdGRlcnIoc2VsZik6CisgICAgICAgICMgdW5pdmVyc2FsIG5ld2xpbmVzIHRocm91Z2ggY29tbXVuaWNhdGUoKSwgd2l0aCBzdGRpbiwgc3Rkb3V0LCBzdGRlcnIKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXMsb3M7JyArIFNFVEJJTkFSWSArIHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gc3lzLnN0ZGluLmJ1ZmZlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiImxpbmUyXFxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lMlxcbiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHN5cy5zdGRpbi5idWZmZXIucmVhZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5idWZmZXIud3JpdGUocykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiImxpbmU0XFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiImxpbmU1XFxyXFxuIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmJ1ZmZlci53cml0ZShiImVsaW5lNlxcciIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5idWZmZXIud3JpdGUoYiJlbGluZTdcXHJcXG56IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKKyAgICAgICAgKHN0ZG91dCwgc3RkZXJyKSA9IHAuY29tbXVuaWNhdGUoImxpbmUxXG5saW5lM1xuIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnJldHVybmNvZGUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImxpbmUxXG5saW5lMlxubGluZTNcbmxpbmU0XG5saW5lNVxuIiwgc3Rkb3V0KQorICAgICAgICAjIFB5dGhvbiBkZWJ1ZyBidWlsZCBwdXNoIHNvbWV0aGluZyBsaWtlICJbNDI0NDIgcmVmc11cbiIKKyAgICAgICAgIyB0byBzdGRlcnIgYXQgZXhpdCBvZiBzdWJwcm9jZXNzLgorICAgICAgICAjIERvbid0IHVzZSBhc3NlcnRTdGRlcnJFcXVhbCBiZWNhdXNlIGl0IHN0cmlwcyBDUiBhbmQgTEYgZnJvbSBvdXRwdXQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdGRlcnIuc3RhcnRzd2l0aCgiZWxpbmUyXG5lbGluZTZcbmVsaW5lN1xuIikpCisKICAgICBkZWYgdGVzdF91bml2ZXJzYWxfbmV3bGluZXNfY29tbXVuaWNhdGVfZW5jb2RpbmdzKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgd29ya3MgZm9yIHZhcmlvdXMgZW5jb2RpbmdzLAogICAgICAgICAjIGluIHBhcnRpY3VsYXIgZm9yIGVuY29kaW5ncyBpbiB0aGUgVVRGLTE2IGFuZCBVVEYtMzIgZmFtaWxpZXMuCkBAIC02NTcsNyArODA2LDYgQEAKICAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKLQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICcxXG4yXG4zXG40JykKIAogICAgIGRlZiB0ZXN0X25vX2xlYWtpbmcoc2VsZik6CkBAIC03MTcsMzAgKzg2NSwzMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1YnByb2Nlc3MubGlzdDJjbWRsaW5lKFsnYWInLCAnJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICdhYiAiIicpCiAKLQogICAgIGRlZiB0ZXN0X3BvbGwoc2VsZik6Ci0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIi1jIiwgImltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDEpIl0pCi0gICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSBwLnBvbGwoKSBpcyBOb25lOgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0gICAgICAgICAgICBjb3VudCArPSAxCi0gICAgICAgICMgV2UgZXhwZWN0IHRoYXQgdGhlIHBvbGwgbG9vcCBwcm9iYWJseSB3ZW50IGFyb3VuZCBhYm91dCAxMCB0aW1lcywKLSAgICAgICAgIyBidXQsIGJhc2VkIG9uIHN5c3RlbSBzY2hlZHVsaW5nIHdlIGNhbid0IGNvbnRyb2wsIGl0J3MgcG9zc2libGUKLSAgICAgICAgIyBwb2xsKCkgbmV2ZXIgcmV0dXJuZWQgTm9uZS4gIEl0ICJzaG91bGQgYmUiIHZlcnkgcmFyZSB0aGF0IGl0Ci0gICAgICAgICMgZGlkbid0IGdvIGFyb3VuZCBhdCBsZWFzdCB0d2ljZS4KLSAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoY291bnQsIDIpCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgb3M7IG9zLnJlYWQoMCwgMSkiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocC5wb2xsKCkpCisgICAgICAgIG9zLndyaXRlKHAuc3RkaW4uZmlsZW5vKCksIGInQScpCisgICAgICAgIHAud2FpdCgpCiAgICAgICAgICMgU3Vic2VxdWVudCBpbnZvY2F0aW9ucyBzaG91bGQganVzdCByZXR1cm4gdGhlIHJldHVybmNvZGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnBvbGwoKSwgMCkKIAotCiAgICAgZGVmIHRlc3Rfd2FpdChzZWxmKToKLSAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiLWMiLCAiaW1wb3J0IHRpbWU7IHRpbWUuc2xlZXAoMikiXSkKKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAicGFzcyJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCgpLCAwKQogICAgICAgICAjIFN1YnNlcXVlbnQgaW52b2NhdGlvbnMgc2hvdWxkIGp1c3QgcmV0dXJuIHRoZSByZXR1cm5jb2RlCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC53YWl0KCksIDApCiAKKyAgICBkZWYgdGVzdF93YWl0X3RpbWVvdXQoc2VsZik6CisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItYyIsICJpbXBvcnQgdGltZTsgdGltZS5zbGVlcCgwLjEpIl0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3VicHJvY2Vzcy5UaW1lb3V0RXhwaXJlZCkgYXMgYzoKKyAgICAgICAgICAgIHAud2FpdCh0aW1lb3V0PTAuMDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIjAuMDEiLCBzdHIoYy5leGNlcHRpb24pKSAgIyBGb3IgY292ZXJhZ2Ugb2YgX19zdHJfXy4KKyAgICAgICAgIyBTb21lIGhlYXZpbHkgbG9hZGVkIGJ1aWxkYm90cyAoc3BhcmMgRGViaWFuIDMueCkgcmVxdWlyZSB0aGlzIG11Y2gKKyAgICAgICAgIyB0aW1lIHRvIHN0YXJ0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAud2FpdCh0aW1lb3V0PTMpLCAwKQogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9idWZzaXplKHNlbGYpOgogICAgICAgICAjIGFuIGludmFsaWQgdHlwZSBvZiB0aGUgYnVmc2l6ZSBhcmd1bWVudCBzaG91bGQgcmFpc2UKQEAgLTgxOSwyNSArOTY5LDI5IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgJ3Bhc3MnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgdGltZS5zbGVlcCgyKQorICAgICAgICBwLndhaXQoKQogICAgICAgICBwLmNvbW11bmljYXRlKGIieCIgKiAyKioyMCkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc2lnbmFsLCAnU0lHQUxSTScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBzaWduYWwuU0lHQUxSTSIpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVpcmVzIHNpZ25hbC5TSUdVU1IxIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAna2lsbCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBvcy5raWxsIikKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cHBpZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJSZXF1aXJlcyBvcy5nZXRwcGlkIikKICAgICBkZWYgdGVzdF9jb21tdW5pY2F0ZV9laW50cihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTI0OTM6IGNvbW11bmljYXRlKCkgc2hvdWxkIGhhbmRsZSBFSU5UUgogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgb2xkX2hhbmRsZXIgPSBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBoYW5kbGVyKQotICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR0FMUk0sIG9sZF9oYW5kbGVyKQorICAgICAgICBvbGRfaGFuZGxlciA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzaWduYWwuc2lnbmFsLCBzaWduYWwuU0lHVVNSMSwgb2xkX2hhbmRsZXIpCiAKLSAgICAgICAgIyB0aGUgcHJvY2VzcyBpcyBydW5uaW5nIGZvciAyIHNlY29uZHMKLSAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwgJ2ltcG9ydCB0aW1lOyB0aW1lLnNsZWVwKDIpJ10KKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAnaW1wb3J0IG9zLCBzaWduYWw7JworICAgICAgICAgICAgICAgICdvcy5raWxsKG9zLmdldHBwaWQoKSwgc2lnbmFsLlNJR1VTUjEpJ10KICAgICAgICAgZm9yIHN0cmVhbSBpbiAoJ3N0ZG91dCcsICdzdGRlcnInKToKICAgICAgICAgICAgIGt3ID0ge3N0cmVhbTogc3VicHJvY2Vzcy5QSVBFfQogICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsICoqa3cpIGFzIHByb2Nlc3M6Ci0gICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAgICAgIyBjb21tdW5pY2F0ZSgpIHdpbGwgYmUgaW50ZXJydXB0ZWQgYnkgU0lHQUxSTQorICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSB3aWxsIGJlIGludGVycnVwdGVkIGJ5IFNJR1VTUjEKICAgICAgICAgICAgICAgICBwcm9jZXNzLmNvbW11bmljYXRlKCkKIAogCkBAIC0xNDAxLDYgKzE1NTUsMTEgQEAKICAgICAgICAgZXhpdGNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoW2Fic19wcm9ncmFtLCAiLWMiLCAicGFzcyJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQogCisgICAgICAgICMgYWJzb2x1dGUgYnl0ZXMgcGF0aCBhcyBhIHN0cmluZworICAgICAgICBjbWQgPSBiIiciICsgYWJzX3Byb2dyYW0gKyBiIicgLWMgcGFzcyIKKyAgICAgICAgZXhpdGNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoY21kLCBzaGVsbD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQorCiAgICAgICAgICMgYnl0ZXMgcHJvZ3JhbSwgdW5pY29kZSBQQVRICiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsiUEFUSCJdID0gcGF0aApAQCAtMTU4NCw3ICsxNzQzLDcgQEAKICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBwLnJldHVybmNvZGUsICJzaWdjaGlsZF9pZ25vcmUucHkgZXhpdGVkIgogICAgICAgICAgICAgICAgICAgICAgICAgICIgbm9uLXplcm8gd2l0aCB0aGlzIGVycm9yOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnIuZGVjb2RlKCd1dGY4JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyLmRlY29kZSgndXRmLTgnKSkKIAogICAgIGRlZiB0ZXN0X3NlbGVjdF91bmJ1ZmZlcmVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTQ1OTogYnVmc2l6ZT0wIHNob3VsZCByZWFsbHkgc2V0IHRoZSBwaXBlcyBhcwpAQCAtMTgzMSwyOCArMTk5MCw2IEBACiAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZS50ZWFyRG93bihzZWxmKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKGdldGF0dHIoc3VicHJvY2VzcywgJ19wb3NpeHN1YnByb2Nlc3MnLCBGYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAiX3Bvc2l4c3VicHJvY2VzcyBleHRlbnNpb24gbW9kdWxlIG5vdCBmb3VuZC4iKQotY2xhc3MgUHJvY2Vzc1Rlc3RDYXNlUE9TSVhQdXJlUHl0aG9uKFByb2Nlc3NUZXN0Q2FzZSwgUE9TSVhQcm9jZXNzVGVzdENhc2UpOgotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Ci0gICAgICAgIGdsb2JhbCBzdWJwcm9jZXNzCi0gICAgICAgIGFzc2VydCBzdWJwcm9jZXNzLl9wb3NpeHN1YnByb2Nlc3MKLSAgICAgICAgIyBSZWltcG9ydCBzdWJwcm9jZXNzIHdoaWxlIGZvcmNpbmcgX3Bvc2l4c3VicHJvY2VzcyB0byBub3QgZXhpc3QuCi0gICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJy4qX3Bvc2l4c3VicHJvY2VzcyAuKiBub3QgYmVpbmcgdXNlZC4qJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykpOgotICAgICAgICAgICAgc3VicHJvY2VzcyA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgKLSAgICAgICAgICAgICAgICAgICAgJ3N1YnByb2Nlc3MnLCBibG9ja2VkPVsnX3Bvc2l4c3VicHJvY2VzcyddKQotICAgICAgICBhc3NlcnQgbm90IHN1YnByb2Nlc3MuX3Bvc2l4c3VicHJvY2VzcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgZ2xvYmFsIHN1YnByb2Nlc3MKLSAgICAgICAgIyBSZWltcG9ydCBzdWJwcm9jZXNzIGFzIGl0IHNob3VsZCBiZSwgcmVzdG9yaW5nIG9yZGVyIHRvIHRoZSB1bml2ZXJzZS4KLSAgICAgICAgc3VicHJvY2VzcyA9IHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgnc3VicHJvY2VzcycpCi0gICAgICAgIGFzc2VydCBzdWJwcm9jZXNzLl9wb3NpeHN1YnByb2Nlc3MKLQotCiBjbGFzcyBIZWxwZXJGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcElmKG1zd2luZG93cywgImVycm5vIGFuZCBFSU5UUiBtYWtlIG5vIHNlbnNlIG9uIHdpbmRvd3MiKQogICAgIGRlZiB0ZXN0X2VpbnRyX3JldHJ5X2NhbGwoc2VsZik6CkBAIC0xOTYxLDcgKzIwOTgsNiBAQAogICAgIHVuaXRfdGVzdHMgPSAoUHJvY2Vzc1Rlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgUE9TSVhQcm9jZXNzVGVzdENhc2UsCiAgICAgICAgICAgICAgICAgICBXaW4zMlByb2Nlc3NUZXN0Q2FzZSwKLSAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZVBPU0lYUHVyZVB5dGhvbiwKICAgICAgICAgICAgICAgICAgIENvbW1hbmRUZXN0cywKICAgICAgICAgICAgICAgICAgIFByb2Nlc3NUZXN0Q2FzZU5vUG9sbCwKICAgICAgICAgICAgICAgICAgIEhlbHBlckZ1bmN0aW9uVGVzdHMsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmRyeS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CmluZGV4IDA3ODAyZDYuLmZjY2NkZjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuZHJ5LnB5CkBAIC05LDcgKzksNiBAQAogICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MocXVpZXQ9VHJ1ZSk6CiAgICAgICAgICAgICBpbXBvcnQgYmRiCiAgICAgICAgICAgICBpbXBvcnQgY2dpdGIKLSAgICAgICAgICAgIGltcG9ydCBjb2RlCiAKICAgICAgICAgICAgIGltcG9ydCBkaXN0dXRpbHMuYmNwcGNvbXBpbGVyCiAgICAgICAgICAgICBpbXBvcnQgZGlzdHV0aWxzLmNjb21waWxlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggOTE0MjE2ZC4uZjY0NjljZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC04MSw2ICs4MSw1NSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRSgpLmYoKSwgJ0FFJykKIAorICAgIEB1bml0dGVzdC5leHBlY3RlZEZhaWx1cmUKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fc2V0KHNlbGYpOgorICAgICAgICAjIFNlZSBpc3N1ZSAjMTIzNzAKKyAgICAgICAgY2xhc3MgWChBKToKKyAgICAgICAgICAgIGRlZiBmKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLmYoKQorICAgICAgICAgICAgX19jbGFzc19fID0gNDEzCisgICAgICAgIHggPSBYKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmYoKSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguX19jbGFzc19fLCA0MTMpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19faW5zdGFuY2VtZXRob2Qoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNDg1NworICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgZGVmIGYoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworICAgICAgICBzZWxmLmFzc2VydElzKFgoKS5mKCksIFgpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzX19fY2xhc3NtZXRob2Qoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNDg1NworICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgZihjbHMpOgorICAgICAgICAgICAgICAgIHJldHVybiBfX2NsYXNzX18KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhYLmYoKSwgWCkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19zdGF0aWNtZXRob2Qoc2VsZik6CisgICAgICAgICMgU2VlIGlzc3VlICMxNDg1NworICAgICAgICBjbGFzcyBYOgorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX19jbGFzc19fCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoWC5mKCksIFgpCisKKyAgICBkZWYgdGVzdF9vYnNjdXJlX3N1cGVyX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHN1cGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBmKQorICAgICAgICBkZWYgZih4KToKKyAgICAgICAgICAgIGRlbCB4CisgICAgICAgICAgICBzdXBlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgZiwgTm9uZSkKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBmKHgpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIF9fY2xhc3NfXworICAgICAgICAgICAgICAgIGRlbCBfX2NsYXNzX18KKyAgICAgICAgICAgICAgICBzdXBlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgWCgpLmYpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RTdXBlcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmVmNWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsMTk5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworaW1wb3J0IGltcG9ydGxpYgoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGVycm5vCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworVEVTVEZOID0gc3VwcG9ydC5URVNURk4KK1RFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQorCisKK2NsYXNzIFRlc3RTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCisgICAgdGVhckRvd24gPSBzZXRVcAorCisgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJmdHBsaWIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1bml0dGVzdC5Ta2lwVGVzdCwgc3VwcG9ydC5pbXBvcnRfbW9kdWxlLCAiZm9vIikKKworICAgIGRlZiB0ZXN0X2ltcG9ydF9mcmVzaF9tb2R1bGUoc2VsZik6CisgICAgICAgIHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiZnRwbGliIikKKworICAgIGRlZiB0ZXN0X2dldF9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNlbGYsICJ0ZXN0X2dldF9hdHRyaWJ1dGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdF9nZXRfYXR0cmlidXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1bml0dGVzdC5Ta2lwVGVzdCwgc3VwcG9ydC5nZXRfYXR0cmlidXRlLCBzZWxmLCAiZm9vIikKKworICAgIEB1bml0dGVzdC5za2lwKCJmYWlsaW5nIGJ1aWxkYm90cyIpCisgICAgZGVmIHRlc3RfZ2V0X29yaWdpbmFsX3N0ZG91dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdXBwb3J0LmdldF9vcmlnaW5hbF9zdGRvdXQoKSwgc3lzLnN0ZG91dCkKKworICAgIGRlZiB0ZXN0X3VubG9hZChzZWxmKToKKyAgICAgICAgaW1wb3J0IHNjaGVkCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInNjaGVkIiwgc3lzLm1vZHVsZXMpCisgICAgICAgIHN1cHBvcnQudW5sb2FkKCJzY2hlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNjaGVkIiwgc3lzLm1vZHVsZXMpCisKKyAgICBkZWYgdGVzdF91bmxpbmsoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IikgYXMgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKFRFU1RGTikpCisgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X3JtdHJlZShzZWxmKToKKyAgICAgICAgb3MubWtkaXIoVEVTVERJUk4pCisgICAgICAgIG9zLm1rZGlyKG9zLnBhdGguam9pbihURVNURElSTiwgVEVTVERJUk4pKQorICAgICAgICBzdXBwb3J0LnJtdHJlZShURVNURElSTikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhURVNURElSTikpCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorCisgICAgZGVmIHRlc3RfZm9yZ2V0KHNlbGYpOgorICAgICAgICBtb2RfZmlsZW5hbWUgPSBURVNURk4gKyAnLnB5JworICAgICAgICB3aXRoIG9wZW4obW9kX2ZpbGVuYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBwcmludCgnZm9vID0gMScsIGZpbGU9ZikKKyAgICAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIG9zLmN1cmRpcikKKyAgICAgICAgaW1wb3J0bGliLmludmFsaWRhdGVfY2FjaGVzKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9kID0gX19pbXBvcnRfXyhURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgc3lzLm1vZHVsZXMpCisKKyAgICAgICAgICAgIHN1cHBvcnQuZm9yZ2V0KFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGRlbCBzeXMucGF0aFswXQorICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsobW9kX2ZpbGVuYW1lKQorCisgICAgZGVmIHRlc3RfSE9TVChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgMCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZmluZF91bnVzZWRfcG9ydChzZWxmKToKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgcy5iaW5kKChzdXBwb3J0LkhPU1QsIHBvcnQpKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2JpbmRfcG9ydChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzKQorICAgICAgICBzLmxpc3RlbigxKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X3RlbXBfY3dkKHNlbGYpOgorICAgICAgICBoZXJlID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKG5hbWU9VEVTVEZOKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksIFRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhURVNURk4pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksIGhlcmUpCisKKyAgICBkZWYgdGVzdF90ZW1wX2N3ZF9fY2hkaXJfd2FybmluZyhzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgdGhlIHdhcm5pbmcgbWVzc2FnZSB3aGVuIG9zLmNoZGlyKCkgZmFpbHMuIiIiCisgICAgICAgIHBhdGggPSBURVNURk4gKyAnX2RvZXNfbm90X2V4aXN0JworICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKSBhcyByZWNvcmRlcjoKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZChwYXRoPXBhdGgsIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIG1lc3NhZ2VzID0gW3N0cih3Lm1lc3NhZ2UpIGZvciB3IGluIHJlY29yZGVyLndhcm5pbmdzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1lc3NhZ2VzLCBbJ3Rlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY2hhbmdlIHRoZSBDV0QgdG8gJyArIHBhdGhdKQorCisgICAgZGVmIHRlc3Rfc29ydGRpY3Qoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcG9ydC5zb3J0ZGljdCh7MzozLCAyOjIsIDE6MX0pLCAiezE6IDEsIDI6IDIsIDM6IDN9IikKKworICAgIGRlZiB0ZXN0X21ha2VfYmFkX2ZkKHNlbGYpOgorICAgICAgICBmZCA9IHN1cHBvcnQubWFrZV9iYWRfZmQoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgb3Mud3JpdGUoZmQsIGIiZm9vIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorCisgICAgZGVmIHRlc3RfY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGNsYXNzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yLCBzZWxmLCAiMSIpCisKKyAgICBkZWYgdGVzdF9DbGVhbkltcG9ydChzZWxmKToKKyAgICAgICAgaW1wb3J0IGltcG9ydGxpYgorICAgICAgICB3aXRoIHN1cHBvcnQuQ2xlYW5JbXBvcnQoImFzeW5jb3JlIik6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgiYXN5bmNvcmUiKQorCisgICAgZGVmIHRlc3RfRGlyc09uU3lzUGF0aChzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LkRpcnNPblN5c1BhdGgoJ2ZvbycsICdiYXInKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oImZvbyIsIHN5cy5wYXRoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYmFyIiwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImZvbyIsIHN5cy5wYXRoKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJiYXIiLCBzeXMucGF0aCkKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVkX3N0ZG91dChzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgICBwcmludCgiaGVsbG8iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3RkZXJyKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkZXJyKCkgYXMgczoKKyAgICAgICAgICAgIHByaW50KCJoZWxsbyIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsb1xuIikKKworICAgIGRlZiB0ZXN0X2NhcHR1cmVkX3N0ZGluKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3RkaW4oKSBhcyBzOgorICAgICAgICAgICAgcHJpbnQoImhlbGxvIiwgZmlsZT1zeXMuc3RkaW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9nY19jb2xsZWN0KHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisgICAgZGVmIHRlc3RfcHl0aG9uX2lzX29wdGltaXplZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1cHBvcnQucHl0aG9uX2lzX29wdGltaXplZCgpLCBib29sKQorCisgICAgZGVmIHRlc3Rfc3dhcF9hdHRyKHNlbGYpOgorICAgICAgICBjbGFzcyBPYmo6CisgICAgICAgICAgICB4ID0gMQorICAgICAgICBvYmogPSBPYmooKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKG9iaiwgIngiLCA1KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLngsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLngsIDEpCisKKyAgICBkZWYgdGVzdF9zd2FwX2l0ZW0oc2VsZik6CisgICAgICAgIEQgPSB7Iml0ZW0iOjF9CisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2l0ZW0oRCwgIml0ZW0iLCA1KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsiaXRlbSJdLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbIml0ZW0iXSwgMSkKKworICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKKyAgICAjIG1ha2VfbGVnYWN5X3B5YworICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZAorICAgICMgcmVxdWlyZXMKKyAgICAjIGZjbXAKKyAgICAjIHVtYWtzCisgICAgIyBmaW5kZmlsZQorICAgICMgY2hlY2tfd2FybmluZ3MKKyAgICAjIEVudmlyb25tZW50VmFyR3VhcmQKKyAgICAjIFRyYW5zaWVudFJlc291cmNlCisgICAgIyB0cmFuc2llbnRfaW50ZXJuZXQKKyAgICAjIHJ1bl93aXRoX2xvY2FsZQorICAgICMgc2V0X21lbWxpbWl0CisgICAgIyBiaWdtZW10ZXN0CisgICAgIyBwcmVjaXNpb25iaWdtZW10ZXN0CisgICAgIyBiaWdhZGRyc3BhY2V0ZXN0CisgICAgIyByZXF1aXJlc19yZXNvdXJjZQorICAgICMgcnVuX2RvY3Rlc3QKKyAgICAjIHRocmVhZGluZ19jbGVhbnVwCisgICAgIyByZWFwX3RocmVhZHMKKyAgICAjIHJlYXBfY2hpbGRyZW4KKyAgICAjIHN0cmlwX3B5dGhvbl9zdGRlcnIKKyAgICAjIGFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncworICAgICMgY2FuX3N5bWxpbmsKKyAgICAjIHNraXBfdW5sZXNzX3N5bWxpbmsKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdHMgPSBbVGVzdFN1cHBvcnRdCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5cy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CmluZGV4IGE1Mjc2N2EuLmU1ZWM4NWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5CkBAIC0zMDMsNiArMzAzLDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldGRsb3BlbmZsYWdzKCksIG9sZGZsYWdzKzEpCiAgICAgICAgICAgICBzeXMuc2V0ZGxvcGVuZmxhZ3Mob2xkZmxhZ3MpCiAKKyAgICBAdGVzdC5zdXBwb3J0LnJlZmNvdW50X3Rlc3QKICAgICBkZWYgdGVzdF9yZWZjb3VudChzZWxmKToKICAgICAgICAgIyBuIGhlcmUgbXVzdCBiZSBhIGdsb2JhbCBpbiBvcmRlciBmb3IgdGhpcyB0ZXN0IHRvIHBhc3Mgd2hpbGUKICAgICAgICAgIyB0cmFjaW5nIHdpdGggYSBweXRob24gZnVuY3Rpb24uICBUcmFjaW5nIGNhbGxzIFB5RnJhbWVfRmFzdFRvTG9jYWxzCkBAIC0zNDIsNyArMzQzLDcgQEAKICAgICAjIFRlc3Qgc3lzLl9jdXJyZW50X2ZyYW1lcygpIGluIGEgV0lUSF9USFJFQURTIGJ1aWxkLgogICAgIEB0ZXN0LnN1cHBvcnQucmVhcF90aHJlYWRzCiAgICAgZGVmIGN1cnJlbnRfZnJhbWVzX3dpdGhfdGhyZWFkcyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHRocmVhZGluZywgX3RocmVhZAorICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKIAogICAgICAgICAjIFNwYXduIGEgdGhyZWFkIHRoYXQgYmxvY2tzIGF0IGEga25vd24gcGxhY2UuICBUaGVuIHRoZSBtYWluCkBAIC0zNTYsNyArMzU3LDcgQEAKICAgICAgICAgICAgIGc0NTYoKQogCiAgICAgICAgIGRlZiBnNDU2KCk6Ci0gICAgICAgICAgICB0aHJlYWRfaW5mby5hcHBlbmQoX3RocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgICAgIHRocmVhZF9pbmZvLmFwcGVuZCh0aHJlYWRpbmcuZ2V0X2lkZW50KCkpCiAgICAgICAgICAgICBlbnRlcmVkX2cuc2V0KCkKICAgICAgICAgICAgIGxlYXZlX2cud2FpdCgpCiAKQEAgLTM3Miw3ICszNzMsNyBAQAogCiAgICAgICAgIGQgPSBzeXMuX2N1cnJlbnRfZnJhbWVzKCkKIAotICAgICAgICBtYWluX2lkID0gX3RocmVhZC5nZXRfaWRlbnQoKQorICAgICAgICBtYWluX2lkID0gdGhyZWFkaW5nLmdldF9pZGVudCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWFpbl9pZCwgZCkKICAgICAgICAgc2VsZi5hc3NlcnRJbih0aHJlYWRfaWQsIGQpCiAKQEAgLTQxOCw2ICs0MTksNyBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzLCB0dXBsZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5jb3B5cmlnaHQsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5leGVjX3ByZWZpeCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmJhc2VfZXhlY19wcmVmaXgsIHN0cikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5leGVjdXRhYmxlLCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN5cy5mbG9hdF9pbmZvKSwgMTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmZsb2F0X2luZm8ucmFkaXgsIDIpCkBAIC00NDYsOCArNDQ4LDEwIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5tYXhzaXplLCBpbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMubWF4dW5pY29kZSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5tYXh1bmljb2RlLCAweDEwRkZGRikKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN5cy5wbGF0Zm9ybSwgc3RyKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLnByZWZpeCwgc3RyKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc3lzLmJhc2VfcHJlZml4LCBzdHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMudmVyc2lvbiwgc3RyKQogICAgICAgICB2aSA9IHN5cy52ZXJzaW9uX2luZm8KICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZpWzpdLCB0dXBsZSkKQEAgLTQ3Myw2ICs0NzcsMTQgQEAKICAgICAgICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzeXMuYWJpZmxhZ3MsIHN0cikKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc3lzLCAndGhyZWFkX2luZm8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRfaW5mbyhzZWxmKToKKyAgICAgICAgaW5mbyA9IHN5cy50aHJlYWRfaW5mbworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpbmZvKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihpbmZvLm5hbWUsICgnbnQnLCAnb3MyJywgJ3B0aHJlYWQnLCAnc29sYXJpcycsIE5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEluKGluZm8ubG9jaywgKCdzZW1hcGhvcmUnLCAnbXV0ZXgrY29uZCcsIE5vbmUpKQorCiAgICAgZGVmIHRlc3RfNDM1ODEoc2VsZik6CiAgICAgICAgICMgQ2FuJ3QgdXNlIHN5cy5zdGRvdXQsIGFzIHRoaXMgaXMgYSBTdHJpbmdJTyBvYmplY3Qgd2hlbgogICAgICAgICAjIHRoZSB0ZXN0IHJ1bnMgdW5kZXIgcmVncnRlc3QuCkBAIC01MDAsNyArNTEyLDcgQEAKIAogICAgIGRlZiB0ZXN0X3N5c19mbGFncyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5cy5mbGFncykKLSAgICAgICAgYXR0cnMgPSAoImRlYnVnIiwgImRpdmlzaW9uX3dhcm5pbmciLAorICAgICAgICBhdHRycyA9ICgiZGVidWciLAogICAgICAgICAgICAgICAgICAiaW5zcGVjdCIsICJpbnRlcmFjdGl2ZSIsICJvcHRpbWl6ZSIsICJkb250X3dyaXRlX2J5dGVjb2RlIiwKICAgICAgICAgICAgICAgICAgIm5vX3VzZXJfc2l0ZSIsICJub19zaXRlIiwgImlnbm9yZV9lbnZpcm9ubWVudCIsICJ2ZXJib3NlIiwKICAgICAgICAgICAgICAgICAgImJ5dGVzX3dhcm5pbmciLCAicXVpZXQiLCAiaGFzaF9yYW5kb21pemF0aW9uIikKQEAgLTUzMiw2ICs1NDQsOCBAQAogICAgICAgICBvdXQgPSBwLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dCwgYic/JykKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAnVGVzdCBpcyBub3QgdmVudi1jb21wYXRpYmxlJykKICAgICBkZWYgdGVzdF9leGVjdXRhYmxlKHNlbGYpOgogICAgICAgICAjIHN5cy5leGVjdXRhYmxlIHNob3VsZCBiZSBhYnNvbHV0ZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aChzeXMuZXhlY3V0YWJsZSksIHN5cy5leGVjdXRhYmxlKQpAQCAtNTY4LDYgKzU4MiwzNCBAQAogICAgICAgICAgICAgZXhwZWN0ZWQgPSBOb25lCiAgICAgICAgIHNlbGYuY2hlY2tfZnNlbmNvZGluZyhmc19lbmNvZGluZywgZXhwZWN0ZWQpCiAKKyAgICBkZWYgdGVzdF9pbXBsZW1lbnRhdGlvbihzZWxmKToKKyAgICAgICAgIyBUaGlzIHRlc3QgYXBwbGllcyB0byBhbGwgaW1wbGVtZW50YXRpb25zIGVxdWFsbHkuCisKKyAgICAgICAgbGV2ZWxzID0geydhbHBoYSc6IDB4QSwgJ2JldGEnOiAweEIsICdjYW5kaWRhdGUnOiAweEMsICdmaW5hbCc6IDB4Rn0KKworICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICduYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHN5cy5pbXBsZW1lbnRhdGlvbiwgJ3ZlcnNpb24nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnaGV4dmVyc2lvbicpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzeXMuaW1wbGVtZW50YXRpb24sICdjYWNoZV90YWcnKSkKKworICAgICAgICB2ZXJzaW9uID0gc3lzLmltcGxlbWVudGF0aW9uLnZlcnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2ZXJzaW9uWzoyXSwgKHZlcnNpb24ubWFqb3IsIHZlcnNpb24ubWlub3IpKQorCisgICAgICAgIGhleHZlcnNpb24gPSAodmVyc2lvbi5tYWpvciA8PCAyNCB8IHZlcnNpb24ubWlub3IgPDwgMTYgfAorICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24ubWljcm8gPDwgOCB8IGxldmVsc1t2ZXJzaW9uLnJlbGVhc2VsZXZlbF0gPDwgNCB8CisgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbi5zZXJpYWwgPDwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuaW1wbGVtZW50YXRpb24uaGV4dmVyc2lvbiwgaGV4dmVyc2lvbikKKworICAgICAgICAjIFBFUCA0MjEgcmVxdWlyZXMgdGhhdCAubmFtZSBiZSBsb3dlciBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5pbXBsZW1lbnRhdGlvbi5uYW1lLmxvd2VyKCkpCisKKyAgICBkZWYgdGVzdF9kZWJ1Z21hbGxvY3N0YXRzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCkKKyAgICAgICAgZnJvbSB0ZXN0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2sKKyAgICAgICAgYXJncyA9IFsnLWMnLCAnaW1wb3J0IHN5czsgc3lzLl9kZWJ1Z21hbGxvY3N0YXRzKCknXQorICAgICAgICByZXQsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqYXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihiImZyZWUgUHlEaWN0T2JqZWN0cyIsIGVycikKIAogY2xhc3MgU2l6ZW9mVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU5MSwxMiArNjMzLDEyIEBACiAgICAgICAgICMgYm9vbCBvYmplY3RzIGFyZSBub3QgZ2MgdHJhY2tlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQogICAgICAgICAjIGJ1dCBsaXN0cyBhcmUKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFtdKSwgdnNpemUoJ1BQJykgKyBnY19oZWFkZXJfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFtdKSwgdnNpemUoJ1BuJykgKyBnY19oZWFkZXJfc2l6ZSkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHZzaXplID0gdGVzdC5zdXBwb3J0LmNhbGN2b2Jqc2l6ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSksIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSwgLTEpLCB2c2l6ZSgnJykgKyBzZWxmLmxvbmdkaWdpdCkKKyAgICAgICAgc2l6ZSA9IHRlc3Quc3VwcG9ydC5jYWxjdm9ianNpemUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKFRydWUpLCBzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5nZXRzaXplb2YoVHJ1ZSwgLTEpLCBzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQogCiAgICAgZGVmIHRlc3Rfb2JqZWN0dHlwZXMoc2VsZik6CiAgICAgICAgICMgY2hlY2sgYWxsIHR5cGVzIGRlZmluZWQgaW4gT2JqZWN0cy8KQEAgLTYxMyw5ICs2NTUsOSBAQAogICAgICAgICBzYW1wbGVzID0gW2InJywgYid1JyoxMDAwMDBdCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIHggPSBieXRlYXJyYXkoc2FtcGxlKQotICAgICAgICAgICAgY2hlY2soeCwgdnNpemUoJ2lQUCcpICsgeC5fX2FsbG9jX18oKSkKKyAgICAgICAgICAgIGNoZWNrKHgsIHZzaXplKCdpblAnKSArIHguX19hbGxvY19fKCkpCiAgICAgICAgICMgYnl0ZWFycmF5X2l0ZXJhdG9yCi0gICAgICAgIGNoZWNrKGl0ZXIoYnl0ZWFycmF5KCkpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhpdGVyKGJ5dGVhcnJheSgpKSwgc2l6ZSgnblAnKSkKICAgICAgICAgIyBjZWxsCiAgICAgICAgIGRlZiBnZXRfY2VsbCgpOgogICAgICAgICAgICAgeCA9IDQyCkBAIC02MjQsMjcgKzY2NiwzMyBAQAogICAgICAgICAgICAgcmV0dXJuIGlubmVyCiAgICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jbG9zdXJlX19bMF0sIHNpemUoJ1AnKSkKICAgICAgICAgIyBjb2RlCi0gICAgICAgIGNoZWNrKGdldF9jZWxsKCkuX19jb2RlX18sIHNpemUoJzVpOFBpM1AnKSkKKyAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBkZWYgZ2V0X2NlbGwyKHgpOgorICAgICAgICAgICAgZGVmIGlubmVyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgICAgIHJldHVybiBpbm5lcgorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzVpOVBpM1AnKSArIDEpCiAgICAgICAgICMgY29tcGxleAogICAgICAgICBjaGVjayhjb21wbGV4KDAsMSksIHNpemUoJzJkJykpCiAgICAgICAgICMgbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQotICAgICAgICBjaGVjayhzdHIubG93ZXIsIHNpemUoJzJQUCcpKQorICAgICAgICBjaGVjayhzdHIubG93ZXIsIHNpemUoJzNQUCcpKQogICAgICAgICAjIGNsYXNzbWV0aG9kX2Rlc2NyaXB0b3IgKGRlc2NyaXB0b3Igb2JqZWN0KQogICAgICAgICAjIFhYWAogICAgICAgICAjIG1lbWJlcl9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgaW1wb3J0IGRhdGV0aW1lCi0gICAgICAgIGNoZWNrKGRhdGV0aW1lLnRpbWVkZWx0YS5kYXlzLCBzaXplKCcyUFAnKSkKKyAgICAgICAgY2hlY2soZGF0ZXRpbWUudGltZWRlbHRhLmRheXMsIHNpemUoJzNQUCcpKQogICAgICAgICAjIGdldHNldF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgaW1wb3J0IGNvbGxlY3Rpb25zCi0gICAgICAgIGNoZWNrKGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeSwgc2l6ZSgnMlBQJykpCisgICAgICAgIGNoZWNrKGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LmRlZmF1bHRfZmFjdG9yeSwgc2l6ZSgnM1BQJykpCiAgICAgICAgICMgd3JhcHBlcl9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKLSAgICAgICAgY2hlY2soaW50Ll9fYWRkX18sIHNpemUoJzJQMlAnKSkKKyAgICAgICAgY2hlY2soaW50Ll9fYWRkX18sIHNpemUoJzNQMlAnKSkKICAgICAgICAgIyBtZXRob2Qtd3JhcHBlciAoZGVzY3JpcHRvciBvYmplY3QpCiAgICAgICAgIGNoZWNrKHt9Ll9faXRlcl9fLCBzaXplKCcyUCcpKQogICAgICAgICAjIGRpY3QKLSAgICAgICAgY2hlY2soe30sIHNpemUoJzNQMlAnICsgOConUDJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduMlAnICsgJzJuUG4nICsgOConbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnM1AyUCcgKyA4KidQMlAnKSArIDE2KnN0cnVjdC5jYWxjc2l6ZSgnUDJQJykpCisgICAgICAgIGNoZWNrKGxvbmdkaWN0LCBzaXplKCduMlAnICsgJzJuUG4nKSArIDE2KnN0cnVjdC5jYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXlpdGVyYXRvcgogICAgICAgICBjaGVjayh7fS5rZXlzKCksIHNpemUoJ1AnKSkKICAgICAgICAgIyBkaWN0aW9uYXJ5LXZhbHVlaXRlcmF0b3IKQEAgLTY1MiwxOCArNzAwLDE4IEBACiAgICAgICAgICMgZGljdGlvbmFyeS1pdGVtaXRlcmF0b3IKICAgICAgICAgY2hlY2soe30uaXRlbXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnkgaXRlcmF0b3IKLSAgICAgICAgY2hlY2soaXRlcih7fSksIHNpemUoJ1AyUFBQJykpCisgICAgICAgIGNoZWNrKGl0ZXIoe30pLCBzaXplKCdQMm5QbicpKQogICAgICAgICAjIGRpY3Rwcm94eQogICAgICAgICBjbGFzcyBDKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2soQy5fX2RpY3RfXywgc2l6ZSgnUCcpKQogICAgICAgICAjIEJhc2VFeGNlcHRpb24KLSAgICAgICAgY2hlY2soQmFzZUV4Y2VwdGlvbigpLCBzaXplKCc1UCcpKQorICAgICAgICBjaGVjayhCYXNlRXhjZXB0aW9uKCksIHNpemUoJzVQaScpKQogICAgICAgICAjIFVuaWNvZGVFbmNvZGVFcnJvcgotICAgICAgICBjaGVjayhVbmljb2RlRW5jb2RlRXJyb3IoIiIsICIiLCAwLCAwLCAiIiksIHNpemUoJzVQIDJQMlBQJykpCisgICAgICAgIGNoZWNrKFVuaWNvZGVFbmNvZGVFcnJvcigiIiwgIiIsIDAsIDAsICIiKSwgc2l6ZSgnNVBpIDJQMm5QJykpCiAgICAgICAgICMgVW5pY29kZURlY29kZUVycm9yCi0gICAgICAgIGNoZWNrKFVuaWNvZGVEZWNvZGVFcnJvcigiIiwgYiIiLCAwLCAwLCAiIiksIHNpemUoJzVQIDJQMlBQJykpCisgICAgICAgIGNoZWNrKFVuaWNvZGVEZWNvZGVFcnJvcigiIiwgYiIiLCAwLCAwLCAiIiksIHNpemUoJzVQaSAyUDJuUCcpKQogICAgICAgICAjIFVuaWNvZGVUcmFuc2xhdGVFcnJvcgotICAgICAgICBjaGVjayhVbmljb2RlVHJhbnNsYXRlRXJyb3IoIiIsIDAsIDEsICIiKSwgc2l6ZSgnNVAgMlAyUFAnKSkKKyAgICAgICAgY2hlY2soVW5pY29kZVRyYW5zbGF0ZUVycm9yKCIiLCAwLCAxLCAiIiksIHNpemUoJzVQaSAyUDJuUCcpKQogICAgICAgICAjIGVsbGlwc2VzCiAgICAgICAgIGNoZWNrKEVsbGlwc2lzLCBzaXplKCcnKSkKICAgICAgICAgIyBFbmNvZGluZ01hcApAQCAtNjcxLDkgKzcxOSw5IEBACiAgICAgICAgIHggPSBjb2RlY3MuY2hhcm1hcF9idWlsZChlbmNvZGluZ3MuaXNvODg1OV8zLmRlY29kaW5nX3RhYmxlKQogICAgICAgICBjaGVjayh4LCBzaXplKCczMkIyaUInKSkKICAgICAgICAgIyBlbnVtZXJhdGUKLSAgICAgICAgY2hlY2soZW51bWVyYXRlKFtdKSwgc2l6ZSgnbDNQJykpCisgICAgICAgIGNoZWNrKGVudW1lcmF0ZShbXSksIHNpemUoJ24zUCcpKQogICAgICAgICAjIHJldmVyc2UKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCdQUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZCgnJyksIHNpemUoJ25QJykpCiAgICAgICAgICMgZmxvYXQKICAgICAgICAgY2hlY2soZmxvYXQoMCksIHNpemUoJ2QnKSkKICAgICAgICAgIyBzeXMuZmxvYXRpbmZvCkBAIC02ODksNyArNzM3LDcgQEAKICAgICAgICAgY2hlY2soeCwgdnNpemUoJzEyUDNpJyArIENPX01BWEJMT0NLUyonM2knICsgJ1AnICsgZXh0cmFzKidQJykpCiAgICAgICAgICMgZnVuY3Rpb24KICAgICAgICAgZGVmIGZ1bmMoKTogcGFzcwotICAgICAgICBjaGVjayhmdW5jLCBzaXplKCcxMVAnKSkKKyAgICAgICAgY2hlY2soZnVuYywgc2l6ZSgnMTJQJykpCiAgICAgICAgIGNsYXNzIGMoKToKICAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKICAgICAgICAgICAgIGRlZiBmb28oKToKQEAgLTY5OCwxMiArNzQ2LDEyIEBACiAgICAgICAgICAgICBkZWYgYmFyKGNscyk6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgIyBzdGF0aWNtZXRob2QKLSAgICAgICAgICAgIGNoZWNrKGZvbywgc2l6ZSgnUCcpKQorICAgICAgICAgICAgY2hlY2soZm9vLCBzaXplKCdQUCcpKQogICAgICAgICAgICAgIyBjbGFzc21ldGhvZAotICAgICAgICAgICAgY2hlY2soYmFyLCBzaXplKCdQJykpCisgICAgICAgICAgICBjaGVjayhiYXIsIHNpemUoJ1BQJykpCiAgICAgICAgICMgZ2VuZXJhdG9yCiAgICAgICAgIGRlZiBnZXRfZ2VuKCk6IHlpZWxkIDEKLSAgICAgICAgY2hlY2soZ2V0X2dlbigpLCBzaXplKCdQaTJQJykpCisgICAgICAgIGNoZWNrKGdldF9nZW4oKSwgc2l6ZSgnUGIyUCcpKQogICAgICAgICAjIGl0ZXJhdG9yCiAgICAgICAgIGNoZWNrKGl0ZXIoJ2FiYycpLCBzaXplKCdsUCcpKQogICAgICAgICAjIGNhbGxhYmxlLWl0ZXJhdG9yCkBAIC03MTIsNyArNzYwLDcgQEAKICAgICAgICAgIyBsaXN0CiAgICAgICAgIHNhbXBsZXMgPSBbW10sIFsxLDIsM10sIFsnMScsICcyJywgJzMnXV0KICAgICAgICAgZm9yIHNhbXBsZSBpbiBzYW1wbGVzOgotICAgICAgICAgICAgY2hlY2soc2FtcGxlLCB2c2l6ZSgnUFAnKSArIGxlbihzYW1wbGUpKnNlbGYuUCkKKyAgICAgICAgICAgIGNoZWNrKHNhbXBsZSwgdnNpemUoJ1BuJykgKyBsZW4oc2FtcGxlKSpzZWxmLlApCiAgICAgICAgICMgc29ydHdyYXBwZXIgKGxpc3QpCiAgICAgICAgICMgWFhYCiAgICAgICAgICMgY21wd3JhcHBlciAobGlzdCkKQEAgLTcyMCw3ICs3NjgsNyBAQAogICAgICAgICAjIGxpc3RpdGVyYXRvciAobGlzdCkKICAgICAgICAgY2hlY2soaXRlcihbXSksIHNpemUoJ2xQJykpCiAgICAgICAgICMgbGlzdHJldmVyc2VpdGVyYXRvciAobGlzdCkKLSAgICAgICAgY2hlY2socmV2ZXJzZWQoW10pLCBzaXplKCdsUCcpKQorICAgICAgICBjaGVjayhyZXZlcnNlZChbXSksIHNpemUoJ25QJykpCiAgICAgICAgICMgbG9uZwogICAgICAgICBjaGVjaygwLCB2c2l6ZSgnJykpCiAgICAgICAgIGNoZWNrKDEsIHZzaXplKCcnKSArIHNlbGYubG9uZ2RpZ2l0KQpAQCAtNzMwLDkgKzc3OCw5IEBACiAgICAgICAgIGNoZWNrKGludChQeUxvbmdfQkFTRSoqMi0xKSwgdnNpemUoJycpICsgMipzZWxmLmxvbmdkaWdpdCkKICAgICAgICAgY2hlY2soaW50KFB5TG9uZ19CQVNFKioyKSwgdnNpemUoJycpICsgMypzZWxmLmxvbmdkaWdpdCkKICAgICAgICAgIyBtZW1vcnl2aWV3Ci0gICAgICAgIGNoZWNrKG1lbW9yeXZpZXcoYicnKSwgc2l6ZSgnUFAyUDJpN1AnKSkKKyAgICAgICAgY2hlY2sobWVtb3J5dmlldyhiJycpLCBzaXplKCdQbmluIDJQMm4yaTVQIDNjUG4nKSkKICAgICAgICAgIyBtb2R1bGUKLSAgICAgICAgY2hlY2sodW5pdHRlc3QsIHNpemUoJzNQJykpCisgICAgICAgIGNoZWNrKHVuaXR0ZXN0LCBzaXplKCdQblAnKSkKICAgICAgICAgIyBOb25lCiAgICAgICAgIGNoZWNrKE5vbmUsIHNpemUoJycpKQogICAgICAgICAjIE5vdEltcGxlbWVudGVkVHlwZQpAQCAtNzUxLDcgKzc5OSw3IEBACiAgICAgICAgICMgcmFuZ2VpdGVyYXRvcgogICAgICAgICBjaGVjayhpdGVyKHJhbmdlKDEpKSwgc2l6ZSgnNGwnKSkKICAgICAgICAgIyByZXZlcnNlCi0gICAgICAgIGNoZWNrKHJldmVyc2VkKCcnKSwgc2l6ZSgnUFAnKSkKKyAgICAgICAgY2hlY2socmV2ZXJzZWQoJycpLCBzaXplKCduUCcpKQogICAgICAgICAjIHJhbmdlCiAgICAgICAgIGNoZWNrKHJhbmdlKDEpLCBzaXplKCc0UCcpKQogICAgICAgICBjaGVjayhyYW5nZSg2NjAwMCksIHNpemUoJzRQJykpCkBAIC03NTksNyArODA3LDcgQEAKICAgICAgICAgIyBmcm96ZW5zZXQKICAgICAgICAgUHlTZXRfTUlOU0laRSA9IDgKICAgICAgICAgc2FtcGxlcyA9IFtbXSwgcmFuZ2UoMTApLCByYW5nZSg1MCldCi0gICAgICAgIHMgPSBzaXplKCczUDJQJyArIFB5U2V0X01JTlNJWkUqJ1BQJyArICdQUCcpCisgICAgICAgIHMgPSBzaXplKCczbjJQJyArIFB5U2V0X01JTlNJWkUqJ25QJyArICduUCcpCiAgICAgICAgIGZvciBzYW1wbGUgaW4gc2FtcGxlczoKICAgICAgICAgICAgIG1pbnVzZWQgPSBsZW4oc2FtcGxlKQogICAgICAgICAgICAgaWYgbWludXNlZCA9PSAwOiB0bXAgPSAxCkBAIC03NzMsMTAgKzgyMSwxMCBAQAogICAgICAgICAgICAgICAgIGNoZWNrKHNldChzYW1wbGUpLCBzKQogICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGVjayhzZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCdsUCcpKQotICAgICAgICAgICAgICAgIGNoZWNrKGZyb3plbnNldChzYW1wbGUpLCBzICsgbmV3c2l6ZSpzdHJ1Y3QuY2FsY3NpemUoJ2xQJykpCisgICAgICAgICAgICAgICAgY2hlY2soc2V0KHNhbXBsZSksIHMgKyBuZXdzaXplKnN0cnVjdC5jYWxjc2l6ZSgnblAnKSkKKyAgICAgICAgICAgICAgICBjaGVjayhmcm96ZW5zZXQoc2FtcGxlKSwgcyArIG5ld3NpemUqc3RydWN0LmNhbGNzaXplKCduUCcpKQogICAgICAgICAjIHNldGl0ZXJhdG9yCi0gICAgICAgIGNoZWNrKGl0ZXIoc2V0KCkpLCBzaXplKCdQM1AnKSkKKyAgICAgICAgY2hlY2soaXRlcihzZXQoKSksIHNpemUoJ1AzbicpKQogICAgICAgICAjIHNsaWNlCiAgICAgICAgIGNoZWNrKHNsaWNlKDApLCBzaXplKCczUCcpKQogICAgICAgICAjIHN1cGVyCkBAIC03ODUsMjggKzgzMyw1NiBAQAogICAgICAgICBjaGVjaygoKSwgdnNpemUoJycpKQogICAgICAgICBjaGVjaygoMSwyLDMpLCB2c2l6ZSgnJykgKyAzKnNlbGYuUCkKICAgICAgICAgIyB0eXBlCi0gICAgICAgICMgKFB5VHlwZU9iamVjdCArIFB5TnVtYmVyTWV0aG9kcyArIFB5TWFwcGluZ01ldGhvZHMgKwotICAgICAgICAjICBQeVNlcXVlbmNlTWV0aG9kcyArIFB5QnVmZmVyUHJvY3MpCi0gICAgICAgIHMgPSB2c2l6ZSgnUDJQMTVQbDRQUDlQUDExUEknKSArIHN0cnVjdC5jYWxjc2l6ZSgnMTZQaTE3UCAzUCAxMFAgMlAgMlAnKQorICAgICAgICAjIHN0YXRpYyB0eXBlOiBQeVR5cGVPYmplY3QKKyAgICAgICAgcyA9IHZzaXplKCdQMm4xNVBsNFBuOVBuMTFQSScpCiAgICAgICAgIGNoZWNrKGludCwgcykKKyAgICAgICAgIyAoUHlUeXBlT2JqZWN0ICsgUHlOdW1iZXJNZXRob2RzICsgUHlNYXBwaW5nTWV0aG9kcyArCisgICAgICAgICMgIFB5U2VxdWVuY2VNZXRob2RzICsgUHlCdWZmZXJQcm9jcyArIDRQKQorICAgICAgICBzID0gdnNpemUoJ1AybjE1UGw0UG45UG4xMVBJJykgKyBzdHJ1Y3QuY2FsY3NpemUoJzM0UCAzUCAxMFAgMlAgNFAnKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggNCBlbnRyaWVzCisgICAgICAgIHMgKz0gc3RydWN0LmNhbGNzaXplKCIyblBuIikgKyA0KnN0cnVjdC5jYWxjc2l6ZSgibjJQIikKICAgICAgICAgIyBjbGFzcwogICAgICAgICBjbGFzcyBuZXdzdHlsZWNsYXNzKG9iamVjdCk6IHBhc3MKICAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcywgcykKKyAgICAgICAgIyBkaWN0IHdpdGggc2hhcmVkIGtleXMKKyAgICAgICAgY2hlY2sobmV3c3R5bGVjbGFzcygpLl9fZGljdF9fLCBzaXplKCduMlAnICsgJzJuUG4nKSkKICAgICAgICAgIyB1bmljb2RlCi0gICAgICAgIHVzaXplID0gbGVuKCdcMCcuZW5jb2RlKCd1bmljb2RlLWludGVybmFsJykpCi0gICAgICAgIHNhbXBsZXMgPSBbJycsICcxJyoxMDBdCi0gICAgICAgICMgd2UgbmVlZCB0byB0ZXN0IGZvciBib3RoIHNpemVzLCBiZWNhdXNlIHdlIGRvbid0IGtub3cgaWYgdGhlIHN0cmluZwotICAgICAgICAjIGhhcyBiZWVuIGNhY2hlZAorICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQorICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgorICAgICAgICAjIHdjaGFyX3Qgb3IgVVRGLTggcmVwcmVzZW50YXRpb25zCisgICAgICAgIHNhbXBsZXMgPSBbJzEnKjEwMCwgJ1x4ZmYnKjUwLAorICAgICAgICAgICAgICAgICAgICdcdTAxMDAnKjQwLCAnXHVmZmZmJyoxMDAsCisgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTAwMDAnKjMwLCAnXFUwMDEwZmZmZicqMTAwXQorICAgICAgICBhc2NpaWZpZWxkcyA9ICJubmlQIgorICAgICAgICBjb21wYWN0ZmllbGRzID0gYXNjaWlmaWVsZHMgKyAiblBuIgorICAgICAgICB1bmljb2RlZmllbGRzID0gY29tcGFjdGZpZWxkcyArICJQIgogICAgICAgICBmb3IgcyBpbiBzYW1wbGVzOgotICAgICAgICAgICAgYmFzaWNzaXplID0gIHNpemUoJ1BQUGlQJykgKyB1c2l6ZSAqIChsZW4ocykgKyAxKQotICAgICAgICAgICAgY2hlY2socywgYmFzaWNzaXplKQorICAgICAgICAgICAgbWF4Y2hhciA9IG9yZChtYXgocykpCisgICAgICAgICAgICBpZiBtYXhjaGFyIDwgMTI4OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGFzY2lpZmllbGRzKSArIGxlbihzKSArIDEKKyAgICAgICAgICAgIGVsaWYgbWF4Y2hhciA8IDI1NjoKKyAgICAgICAgICAgICAgICBMID0gc2l6ZShjb21wYWN0ZmllbGRzKSArIGxlbihzKSArIDEKKyAgICAgICAgICAgIGVsaWYgbWF4Y2hhciA8IDY1NTM2OgorICAgICAgICAgICAgICAgIEwgPSBzaXplKGNvbXBhY3RmaWVsZHMpICsgMioobGVuKHMpICsgMSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgTCA9IHNpemUoY29tcGFjdGZpZWxkcykgKyA0KihsZW4ocykgKyAxKQorICAgICAgICAgICAgY2hlY2socywgTCkKKyAgICAgICAgIyB2ZXJpZnkgdGhhdCB0aGUgVVRGLTggc2l6ZSBpcyBhY2NvdW50ZWQgZm9yCisgICAgICAgIHMgPSBjaHIoMHg0MDAwKSAgICMgNCBieXRlcyBjYW5vbmljYWwgcmVwcmVzZW50YXRpb24KKyAgICAgICAgY2hlY2socywgc2l6ZShjb21wYWN0ZmllbGRzKSArIDQpCisgICAgICAgICMgY29tcGlsZSgpIHdpbGwgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiB0aGUgVVRGLTgKKyAgICAgICAgIyByZXByZXNlbnRhdGlvbiBhcyBhIHNpZGUgZWZmZWN0CisgICAgICAgIGNvbXBpbGUocywgIjxzdGRpbj4iLCAiZXZhbCIpCisgICAgICAgIGNoZWNrKHMsIHNpemUoY29tcGFjdGZpZWxkcykgKyA0ICsgNCkKKyAgICAgICAgIyBUT0RPOiBhZGQgY2hlY2sgdGhhdCBmb3JjZXMgdGhlIHByZXNlbmNlIG9mIHdjaGFyX3QgcmVwcmVzZW50YXRpb24KKyAgICAgICAgIyBUT0RPOiBhZGQgY2hlY2sgdGhhdCBmb3JjZXMgbGF5b3V0IG9mIHVuaWNvZGVmaWVsZHMKICAgICAgICAgIyB3ZWFrcmVmCiAgICAgICAgIGltcG9ydCB3ZWFrcmVmCi0gICAgICAgIGNoZWNrKHdlYWtyZWYucmVmKGludCksIHNpemUoJzJQbDJQJykpCisgICAgICAgIGNoZWNrKHdlYWtyZWYucmVmKGludCksIHNpemUoJzJQbjJQJykpCiAgICAgICAgICMgd2Vha3Byb3h5CiAgICAgICAgICMgWFhYCiAgICAgICAgICMgd2Vha2NhbGxhYmxlcHJveHkKLSAgICAgICAgY2hlY2sod2Vha3JlZi5wcm94eShpbnQpLCBzaXplKCcyUGwyUCcpKQorICAgICAgICBjaGVjayh3ZWFrcmVmLnByb3h5KGludCksIHNpemUoJzJQbjJQJykpCiAKICAgICBkZWYgdGVzdF9weXRob250eXBlcyhzZWxmKToKICAgICAgICAgIyBjaGVjayBhbGwgdHlwZXMgZGVmaW5lZCBpbiBQeXRob24vCkBAIC04MTUsMTYgKzg5MSwxMyBAQAogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfc2l6ZW9mCiAgICAgICAgICMgX2FzdC5BU1QKICAgICAgICAgaW1wb3J0IF9hc3QKLSAgICAgICAgY2hlY2soX2FzdC5BU1QoKSwgc2l6ZSgnJykpCi0gICAgICAgICMgaW1wLk51bGxJbXBvcnRlcgotICAgICAgICBpbXBvcnQgaW1wCi0gICAgICAgIGNoZWNrKGltcC5OdWxsSW1wb3J0ZXIoc2VsZi5maWxlLm5hbWUpLCBzaXplKCcnKSkKKyAgICAgICAgY2hlY2soX2FzdC5BU1QoKSwgc2l6ZSgnUCcpKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IKICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKICAgICAgICAgICAgIHRiID0gc3lzLmV4Y19pbmZvKClbMl0KICAgICAgICAgICAgICMgdHJhY2ViYWNrCi0gICAgICAgICAgICBpZiB0YiAhPSBOb25lOgorICAgICAgICAgICAgaWYgdGIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgY2hlY2sodGIsIHNpemUoJzJQMmknKSkKICAgICAgICAgIyBzeW10YWJsZSBlbnRyeQogICAgICAgICAjIFhYWApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNfc2V0dHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQppbmRleCBlYTJiYjI5Li5mZGY5NThjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weQpAQCAtMjUxLDYgKzI1MSw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnVzaW5nX2djID0gZ2MuaXNlbmFibGVkKCkKICAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBpZiBzZWxmLnVzaW5nX2djOgpAQCAtMzg5LDYgKzM5MCw5IEBACiAKIAogY2xhc3MgUmFpc2luZ1RyYWNlRnVuY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQorCiAgICAgZGVmIHRyYWNlKHNlbGYsIGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICAgIiIiQSB0cmFjZSBmdW5jdGlvbiB0aGF0IHJhaXNlcyBhbiBleGNlcHRpb24gaW4gcmVzcG9uc2UgdG8gYQogICAgICAgICBzcGVjaWZpYyB0cmFjZSBldmVudC4iIiIKQEAgLTY5Niw2ICs3MDAsMTAgQEAKIAogCiBjbGFzcyBKdW1wVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorCiAgICAgZGVmIGNvbXBhcmVfanVtcF9vdXRwdXQoc2VsZiwgZXhwZWN0ZWQsIHJlY2VpdmVkKToKICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoICJPdXRwdXRzIGRvbid0IG1hdGNoOlxuIiArCkBAIC03NDcsNiArNzU1LDggQEAKICAgICBkZWYgdGVzdF8xOF9ub19qdW1wX3RvX25vbl9pbnRlZ2VycyhzZWxmKToKICAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX3RvX25vbl9pbnRlZ2VycykKICAgICBkZWYgdGVzdF8xOV9ub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oc2VsZik6CisgICAgICAgICMgTXVzdCBzZXQgc3lzLnNldHRyYWNlKE5vbmUpIGluIHNldFVwKCksIGVsc2UgY29uZGl0aW9uIGlzIG5vdAorICAgICAgICAjIHRyaWdnZXJlZC4KICAgICAgICAgbm9fanVtcF93aXRob3V0X3RyYWNlX2Z1bmN0aW9uKCkKICAgICBkZWYgdGVzdF9qdW1wX2Fjcm9zc193aXRoKHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQppbmRleCBhYWJiNmZhLi45MjE5MzYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5c2NvbmZpZy5weQpAQCAtMSwxMSArMSw5IEBACi0iIiJUZXN0cyBmb3Igc3lzY29uZmlnLiIiIgotCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzaHV0aWwKLWZyb20gY29weSBpbXBvcnQgY29weSwgZGVlcGNvcHkKK2Zyb20gY29weSBpbXBvcnQgY29weQogCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHJ1bl91bml0dGVzdCwgVEVTVEZOLCB1bmxpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVkX3N0ZG91dCwgc2tpcF91bmxlc3Nfc3ltbGluaykKQEAgLTE1LDExICsxMywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICBnZXRfcGF0aCwgZ2V0X3BhdGhfbmFtZXMsIF9JTlNUQUxMX1NDSEVNRVMsCiAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfZGVmYXVsdF9zY2hlbWUsIF9leHBhbmRfdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3NjaGVtZV9uYW1lcywgZ2V0X2NvbmZpZ192YXIsIF9tYWluKQoraW1wb3J0IF9vc3hfc3VwcG9ydAogCiBjbGFzcyBUZXN0U3lzQ29uZmlnKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgIiIiTWFrZSBhIGNvcHkgb2Ygc3lzLnBhdGgiIiIKICAgICAgICAgc3VwZXIoVGVzdFN5c0NvbmZpZywgc2VsZikuc2V0VXAoKQogICAgICAgICBzZWxmLnN5c19wYXRoID0gc3lzLnBhdGhbOl0KICAgICAgICAgIyBwYXRjaGluZyBvcy51bmFtZQpAQCAtMjgsNyArMjYsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5hbWUgPSBvcy51bmFtZSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnVuYW1lID0gTm9uZQotICAgICAgICAgICAgc2VsZi5fdW5hbWUgPSBOb25lCisgICAgICAgICAgICBzZWxmLl9zZXRfdW5hbWUoKCcnLCkqNSkKICAgICAgICAgb3MudW5hbWUgPSBzZWxmLl9nZXRfdW5hbWUKICAgICAgICAgIyBzYXZpbmcgdGhlIGVudmlyb25tZW50CiAgICAgICAgIHNlbGYubmFtZSA9IG9zLm5hbWUKQEAgLTM4LDExICszNiwxNiBAQAogICAgICAgICBzZWxmLmpvaW4gPSBvcy5wYXRoLmpvaW4KICAgICAgICAgc2VsZi5pc2FicyA9IG9zLnBhdGguaXNhYnMKICAgICAgICAgc2VsZi5zcGxpdGRyaXZlID0gb3MucGF0aC5zcGxpdGRyaXZlCi0gICAgICAgIHNlbGYuX2NvbmZpZ192YXJzID0gY29weShzeXNjb25maWcuX0NPTkZJR19WQVJTKQotICAgICAgICBzZWxmLm9sZF9lbnZpcm9uID0gZGVlcGNvcHkob3MuZW52aXJvbikKKyAgICAgICAgc2VsZi5fY29uZmlnX3ZhcnMgPSBzeXNjb25maWcuX0NPTkZJR19WQVJTLCBjb3B5KHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMpCisgICAgICAgIHNlbGYuX2FkZGVkX2VudnZhcnMgPSBbXQorICAgICAgICBzZWxmLl9jaGFuZ2VkX2VudnZhcnMgPSBbXQorICAgICAgICBmb3IgdmFyIGluICgnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJywgJ1BBVEgnKToKKyAgICAgICAgICAgIGlmIHZhciBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIHNlbGYuX2NoYW5nZWRfZW52dmFycy5hcHBlbmQoKHZhciwgb3MuZW52aXJvblt2YXJdKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5fYWRkZWRfZW52dmFycy5hcHBlbmQodmFyKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAiIiJSZXN0b3JlIHN5cy5wYXRoIiIiCiAgICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5zeXNfcGF0aAogICAgICAgICBzZWxmLl9jbGVhbnVwX3Rlc3RmbigpCiAgICAgICAgIGlmIHNlbGYudW5hbWUgaXMgbm90IE5vbmU6CkBAIC01NiwxOSArNTksMTggQEAKICAgICAgICAgb3MucGF0aC5qb2luID0gc2VsZi5qb2luCiAgICAgICAgIG9zLnBhdGguaXNhYnMgPSBzZWxmLmlzYWJzCiAgICAgICAgIG9zLnBhdGguc3BsaXRkcml2ZSA9IHNlbGYuc3BsaXRkcml2ZQotICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gY29weShzZWxmLl9jb25maWdfdmFycykKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5vbGRfZW52aXJvbi5pdGVtcygpOgotICAgICAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoa2V5KSAhPSB2YWx1ZToKLSAgICAgICAgICAgICAgICBvcy5lbnZpcm9uW2tleV0gPSB2YWx1ZQotCi0gICAgICAgIGZvciBrZXkgaW4gbGlzdChvcy5lbnZpcm9uLmtleXMoKSk6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYub2xkX2Vudmlyb246Ci0gICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25ba2V5XQorICAgICAgICBzeXNjb25maWcuX0NPTkZJR19WQVJTID0gc2VsZi5fY29uZmlnX3ZhcnNbMF0KKyAgICAgICAgc3lzY29uZmlnLl9DT05GSUdfVkFSUy5jbGVhcigpCisgICAgICAgIHN5c2NvbmZpZy5fQ09ORklHX1ZBUlMudXBkYXRlKHNlbGYuX2NvbmZpZ192YXJzWzFdKQorICAgICAgICBmb3IgdmFyLCB2YWx1ZSBpbiBzZWxmLl9jaGFuZ2VkX2VudnZhcnM6CisgICAgICAgICAgICBvcy5lbnZpcm9uW3Zhcl0gPSB2YWx1ZQorICAgICAgICBmb3IgdmFyIGluIHNlbGYuX2FkZGVkX2VudnZhcnM6CisgICAgICAgICAgICBvcy5lbnZpcm9uLnBvcCh2YXIsIE5vbmUpCiAKICAgICAgICAgc3VwZXIoVGVzdFN5c0NvbmZpZywgc2VsZikudGVhckRvd24oKQogCiAgICAgZGVmIF9zZXRfdW5hbWUoc2VsZiwgdW5hbWUpOgotICAgICAgICBzZWxmLl91bmFtZSA9IHVuYW1lCisgICAgICAgIHNlbGYuX3VuYW1lID0gb3MudW5hbWVfcmVzdWx0KHVuYW1lKQogCiAgICAgZGVmIF9nZXRfdW5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl91bmFtZQpAQCAtODcsMjEgKzg5LDE5IEBACiAgICAgICAgIHNjaGVtZSA9IGdldF9wYXRocygpCiAgICAgICAgIGRlZmF1bHRfc2NoZW1lID0gX2dldF9kZWZhdWx0X3NjaGVtZSgpCiAgICAgICAgIHdhbnRlZCA9IF9leHBhbmRfdmFycyhkZWZhdWx0X3NjaGVtZSwgTm9uZSkKLSAgICAgICAgd2FudGVkID0gbGlzdCh3YW50ZWQuaXRlbXMoKSkKLSAgICAgICAgd2FudGVkLnNvcnQoKQotICAgICAgICBzY2hlbWUgPSBsaXN0KHNjaGVtZS5pdGVtcygpKQotICAgICAgICBzY2hlbWUuc29ydCgpCisgICAgICAgIHdhbnRlZCA9IHNvcnRlZCh3YW50ZWQuaXRlbXMoKSkKKyAgICAgICAgc2NoZW1lID0gc29ydGVkKHNjaGVtZS5pdGVtcygpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjaGVtZSwgd2FudGVkKQogCiAgICAgZGVmIHRlc3RfZ2V0X3BhdGgoc2VsZik6Ci0gICAgICAgICMgeHh4IG1ha2UgcmVhbCB0ZXN0cyBoZXJlCisgICAgICAgICMgWFhYIG1ha2UgcmVhbCB0ZXN0cyBoZXJlCiAgICAgICAgIGZvciBzY2hlbWUgaW4gX0lOU1RBTExfU0NIRU1FUzoKICAgICAgICAgICAgIGZvciBuYW1lIGluIF9JTlNUQUxMX1NDSEVNRVNbc2NoZW1lXToKICAgICAgICAgICAgICAgICByZXMgPSBnZXRfcGF0aChuYW1lLCBzY2hlbWUpCiAKICAgICBkZWYgdGVzdF9nZXRfY29uZmlnX3ZhcnMoc2VsZik6CiAgICAgICAgIGN2YXJzID0gZ2V0X2NvbmZpZ192YXJzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoY3ZhcnMsIGRpY3QpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY3ZhcnMsIGRpY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjdmFycykKIAogICAgIGRlZiB0ZXN0X2dldF9wbGF0Zm9ybShzZWxmKToKQEAgLTEzNSw4ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICgnRGFyd2luIEtlcm5lbCBWZXJzaW9uIDguMTEuMTogJwogICAgICAgICAgICAgICAgICAgICAnV2VkIE9jdCAxMCAxODoyMzoyOCBQRFQgMjAwNzsgJwogICAgICAgICAgICAgICAgICAgICAncm9vdDp4bnUtNzkyLjI1LjIwfjEvUkVMRUFTRV9JMzg2JyksICdQb3dlclBDJykpCi0KLQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC4zJwogCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWZuby1zdHJpY3QtYWxpYXNpbmcgLUROREVCVUcgLWcgJwpAQCAtMTUxLDEyICsxNTAsMTEgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5tYXhzaXplID0gbWF4aW50CiAKLQogICAgICAgICBzZWxmLl9zZXRfdW5hbWUoKCdEYXJ3aW4nLCAnbWFjemlhZGUnLCAnOC4xMS4xJywKICAgICAgICAgICAgICAgICAgICAoJ0RhcndpbiBLZXJuZWwgVmVyc2lvbiA4LjExLjE6ICcKICAgICAgICAgICAgICAgICAgICAgJ1dlZCBPY3QgMTAgMTg6MjM6MjggUERUIDIwMDc7ICcKICAgICAgICAgICAgICAgICAgICAgJ3Jvb3Q6eG51LTc5Mi4yNS4yMH4xL1JFTEVBU0VfSTM4NicpLCAnaTM4NicpKQotICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMycKIAogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1ETkRFQlVHIC1nICcKQEAgLTE3MSw2ICsxNjksNyBAQAogICAgICAgICAgICAgc3lzLm1heHNpemUgPSBtYXhpbnQKIAogICAgICAgICAjIG1hY2Jvb2sgd2l0aCBmYXQgYmluYXJpZXMgKGZhdCwgdW5pdmVyc2FsIG9yIGZhdDY0KQorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnXSA9ICcxMC40JwogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwpAQCAtMTc5LDYgKzE3OCw3IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWZhdCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKQEAgLTE4NiwxOCArMTg2LDIxIEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LWludGVsJykKIAorICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgIGdldF9jb25maWdfdmFycygpWydDRkxBR1MnXSA9ICgnLWFyY2ggeDg2XzY0IC1hcmNoIHBwYyAtYXJjaCBpMzg2IC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayAgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tY29tbW9uICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0MycpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCAtYXJjaCBwcGMgLWFyY2ggaTM4NiAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWR5bmFtaWMgLUROREVCVUcgLWcgLU8zJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRfcGxhdGZvcm0oKSwgJ21hY29zeC0xMC40LXVuaXZlcnNhbCcpCiAKKyAgICAgICAgX29zeF9zdXBwb3J0Ll9yZW1vdmVfb3JpZ2luYWxfdmFsdWVzKGdldF9jb25maWdfdmFycygpKQogICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoIHg4Nl82NCAtYXJjaCBwcGM2NCAtaXN5c3Jvb3QgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWNvbW1vbiAnCkBAIC0yMDYsMTIgKzIwOSwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtZmF0NjQnKQogCiAgICAgICAgIGZvciBhcmNoIGluICgncHBjJywgJ2kzODYnLCAneDg2XzY0JywgJ3BwYzY0Jyk6CisgICAgICAgICAgICBfb3N4X3N1cHBvcnQuX3JlbW92ZV9vcmlnaW5hbF92YWx1ZXMoZ2V0X2NvbmZpZ192YXJzKCkpCiAgICAgICAgICAgICBnZXRfY29uZmlnX3ZhcnMoKVsnQ0ZMQUdTJ10gPSAoJy1hcmNoICVzIC1pc3lzcm9vdCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1jb21tb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZHluYW1pYyAtRE5ERUJVRyAtZyAtTzMnJShhcmNoLCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1keW5hbWljIC1ETkRFQlVHIC1nIC1PMycgJSBhcmNoKQogCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtJXMnJShhcmNoLCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldF9wbGF0Zm9ybSgpLCAnbWFjb3N4LTEwLjQtJXMnICUgYXJjaCkKIAogICAgICAgICAjIGxpbnV4IGRlYmlhbiBzYXJnZQogICAgICAgICBvcy5uYW1lID0gJ3Bvc2l4JwpAQCAtMjM5LDggKzI0Myw4IEBACiAgICAgICAgICMgT24gV2luZG93cywgdGhlIEVYRSBuZWVkcyB0byBrbm93IHdoZXJlIHB5dGhvblhZLmRsbCBpcyBhdCBzbyB3ZSBoYXZlCiAgICAgICAgICMgdG8gYWRkIHRoZSBkaXJlY3RvcnkgdG8gdGhlIHBhdGguCiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgb3MuZW52aXJvblsiUGF0aCJdID0gInt9O3t9Ii5mb3JtYXQoCi0gICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgb3MuZW52aXJvblsiUGF0aCJdKQorICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gInt9O3t9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgb3MuZW52aXJvblsiUEFUSCJdKQogCiAgICAgICAgICMgSXNzdWUgNzg4MAogICAgICAgICBkZWYgZ2V0KHB5dGhvbik6CkBAIC0yNjQsMTIgKzI2OCwxNyBAQAogICAgICAgICAjIHRoZSBnbG9iYWwgc2NoZW1lIG1pcnJvcnMgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gcHJlZml4IGFuZAogICAgICAgICAjIGV4ZWMtcHJlZml4IGJ1dCBub3QgdGhlIHVzZXIgc2NoZW1lLCBzbyB3ZSBoYXZlIHRvIGFkYXB0IHRoZSBwYXRocwogICAgICAgICAjIGJlZm9yZSBjb21wYXJpbmcgKGlzc3VlICM5MTAwKQotICAgICAgICBhZGFwdCA9IHN5cy5wcmVmaXggIT0gc3lzLmV4ZWNfcHJlZml4CisgICAgICAgIGFkYXB0ID0gc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5iYXNlX2V4ZWNfcHJlZml4CiAgICAgICAgIGZvciBuYW1lIGluICgnc3RkbGliJywgJ3BsYXRzdGRsaWInLCAncHVyZWxpYicsICdwbGF0bGliJyk6CiAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdldF9wYXRoKG5hbWUsICdwb3NpeF9wcmVmaXgnKQogICAgICAgICAgICAgaWYgYWRhcHQ6Ci0gICAgICAgICAgICAgICAgZ2xvYmFsX3BhdGggPSBnbG9iYWxfcGF0aC5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLnByZWZpeCkKLSAgICAgICAgICAgICAgICBiYXNlID0gYmFzZS5yZXBsYWNlKHN5cy5leGVjX3ByZWZpeCwgc3lzLnByZWZpeCkKKyAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmV4ZWNfcHJlZml4LCBzeXMuYmFzZV9wcmVmaXgpCisgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2UucmVwbGFjZShzeXMuZXhlY19wcmVmaXgsIHN5cy5iYXNlX3ByZWZpeCkKKyAgICAgICAgICAgIGVsaWYgc3lzLmJhc2VfcHJlZml4ICE9IHN5cy5wcmVmaXg6CisgICAgICAgICAgICAgICAgIyB2aXJ0dWFsIGVudmlyb25tZW50PyBMaWtld2lzZSwgd2UgaGF2ZSB0byBhZGFwdCB0aGUgcGF0aHMKKyAgICAgICAgICAgICAgICAjIGJlZm9yZSBjb21wYXJpbmcKKyAgICAgICAgICAgICAgICBnbG9iYWxfcGF0aCA9IGdsb2JhbF9wYXRoLnJlcGxhY2Uoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQorICAgICAgICAgICAgICAgIGJhc2UgPSBiYXNlLnJlcGxhY2Uoc3lzLmJhc2VfcHJlZml4LCBzeXMucHJlZml4KQogICAgICAgICAgICAgdXNlcl9wYXRoID0gZ2V0X3BhdGgobmFtZSwgJ3Bvc2l4X3VzZXInKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1c2VyX3BhdGgsIGdsb2JhbF9wYXRoLnJlcGxhY2UoYmFzZSwgdXNlciwgMSkpCiAKQEAgLTI4Niw3ICsyOTUsNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obGRmbGFncywgbGRzaGFyZWQpCiAKLQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiwgInRlc3Qgb25seSByZWxldmFudCBvbiBNYWNPU1giKQogICAgIGRlZiB0ZXN0X3BsYXRmb3JtX2luX3N1YnByb2Nlc3Moc2VsZik6CiAgICAgICAgIG15X3BsYXRmb3JtID0gc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpCkBAIC0zMTIsMjggKzMyMCw1OCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteV9wbGF0Zm9ybSwgdGVzdF9wbGF0Zm9ybSkKIAotCiAgICAgICAgICMgVGVzdCB3aXRoIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpbiB0aGUgZW52aXJvbm1lbnQsIGFuZAogICAgICAgICAjIHVzaW5nIGEgdmFsdWUgdGhhdCBpcyB1bmxpa2VseSB0byBiZSB0aGUgZGVmYXVsdCBvbmUuCiAgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCiAgICAgICAgIGVudlsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSAnMTAuMScKIAotICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCi0gICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGUsICctYycsCi0gICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXNjb25maWc7IHByaW50KHN5c2NvbmZpZy5nZXRfcGxhdGZvcm0oKSknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICBzdGRlcnI9b3BlbignL2Rldi9udWxsJyksCi0gICAgICAgICAgICBlbnY9ZW52KQotICAgICAgICB0ZXN0X3BsYXRmb3JtID0gcC5jb21tdW5pY2F0ZSgpWzBdLnN0cmlwKCkKLSAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHRlc3RfcGxhdGZvcm0uZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggb3BlbignL2Rldi9udWxsJykgYXMgZGV2X251bGw6CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbCisgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlLCAnLWMnLAorICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5c2NvbmZpZzsgcHJpbnQoc3lzY29uZmlnLmdldF9wbGF0Zm9ybSgpKScsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgIHN0ZGVycj1kZXZfbnVsbCwKKyAgICAgICAgICAgICAgICBlbnY9ZW52KQorICAgICAgICAgICAgdGVzdF9wbGF0Zm9ybSA9IHAuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCisgICAgICAgICAgICB0ZXN0X3BsYXRmb3JtID0gdGVzdF9wbGF0Zm9ybS5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIHN0YXR1cyA9IHAud2FpdCgpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfcGxhdGZvcm0sIHRlc3RfcGxhdGZvcm0pCisKKyAgICBkZWYgdGVzdF9zcmNkaXIoc2VsZik6CisgICAgICAgICMgU2VlIElzc3VlcyAjMTUzMjIsICMxNTM2NC4KKyAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzYWJzKHNyY2RpciksIHNyY2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoc3JjZGlyKSwgc3JjZGlyKQorCisgICAgICAgIGlmIHN5c2NvbmZpZy5fUFlUSE9OX0JVSUxEOgorICAgICAgICAgICAgIyBUaGUgcHl0aG9uIGV4ZWN1dGFibGUgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBzbyBzcmNkaXIKKyAgICAgICAgICAgICMgc2hvdWxkIGJlIGEgZnVsbCBzb3VyY2UgY2hlY2tvdXQuCisgICAgICAgICAgICBQeXRob25faCA9IG9zLnBhdGguam9pbihzcmNkaXIsICdJbmNsdWRlJywgJ1B5dGhvbi5oJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhQeXRob25faCksIFB5dGhvbl9oKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5c2NvbmZpZy5faXNfcHl0aG9uX3NvdXJjZV9kaXIoc3JjZGlyKSkKKyAgICAgICAgZWxpZiBvcy5uYW1lID09ICdwb3NpeCc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguZGlybmFtZShzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkaXIpCisKKyAgICBkZWYgdGVzdF9zcmNkaXJfaW5kZXBlbmRlbnRfb2ZfY3dkKHNlbGYpOgorICAgICAgICAjIHNyY2RpciBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAgIyBTZWUgSXNzdWVzICMxNTMyMiwgIzE1MzY0LgorICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCisgICAgICAgIGN3ZCA9IG9zLmdldGN3ZCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmNoZGlyKCcuLicpCisgICAgICAgICAgICBzcmNkaXIyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2hkaXIoY3dkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNyY2Rpciwgc3JjZGlyMikKIAogCiBjbGFzcyBNYWtlZmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpLAogICAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgaXMgbm90IFdpbmRvd3MgY29tcGF0aWJsZScpCiAgICAgZGVmIHRlc3RfZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGYzMmViOGMuLmM3YmY3NzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIxLDYgKzIxLDEwIEBACiAgICAgaW1wb3J0IGJ6MgogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGJ6MiA9IE5vbmUKK3RyeToKKyAgICBpbXBvcnQgbHptYQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCiAKIGRlZiBtZDVzdW0oZGF0YSk6CiAgICAgcmV0dXJuIG1kNShkYXRhKS5oZXhkaWdlc3QoKQpAQCAtMjksNiArMzMsNyBAQAogdGFybmFtZSA9IHN1cHBvcnQuZmluZGZpbGUoInRlc3R0YXIudGFyIikKIGd6aXBuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci5neiIpCiBiejJuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci5iejIiKQoreHpuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0ZXN0dGFyLnRhci54eiIpCiB0bXBuYW1lID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJ0bXAudGFyIikKIAogbWQ1X3JlZ3R5cGUgPSAiNjVmNDc3YzgxOGFkOWUxNWY3ZmVhYjBjNmQzNzc0MmYiCkBAIC01MSwxMyArNTYsMTAgQEAKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfcmVndWxhcl9maWxlKHNlbGYpOgogICAgICAgICB0YXJpbmZvID0gc2VsZi50YXIuZ2V0bWVtYmVyKCJ1c3Rhci9yZWd0eXBlIikKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgogICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoKGxlbihkYXRhKSwgbWQ1c3VtKGRhdGEpKSA9PSAodGFyaW5mby5zaXplLCBtZDVfcmVndHlwZSksCiAgICAgICAgICAgICAgICAgICAgICJyZWd1bGFyIGZpbGUgZXh0cmFjdGlvbiBmYWlsZWQiKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9iai5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3JlYWRsaW5lcyhzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCkBAIC02NSw4ICs2Nyw3IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oVEVNUERJUiwgInVzdGFyL3JlZ3R5cGUiKSwgInIiKSBhcyBmb2JqMToKICAgICAgICAgICAgIGxpbmVzMSA9IGZvYmoxLnJlYWRsaW5lcygpCiAKLSAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgogICAgICAgICAgICAgZm9iajIgPSBpby5UZXh0SU9XcmFwcGVyKGZvYmopCiAgICAgICAgICAgICBsaW5lczIgPSBmb2JqMi5yZWFkbGluZXMoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzMSA9PSBsaW5lczIsCkBAIC03NiwyMSArNzcsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsaW5lczJbODNdID09CiAgICAgICAgICAgICAgICAgICAgICJJIHdpbGwgZ2xhZGx5IGFkbWl0IHRoYXQgUHl0aG9uIGlzIG5vdCB0aGUgZmFzdGVzdCBydW5uaW5nIHNjcmlwdGluZyBsYW5ndWFnZS5cbiIsCiAgICAgICAgICAgICAgICAgICAgICJmaWxlb2JqLnJlYWRsaW5lcygpIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfaXRlcihzZWxmKToKICAgICAgICAgc2VsZi50YXIuZXh0cmFjdCgidXN0YXIvcmVndHlwZSIsIFRFTVBESVIpCiAgICAgICAgIHRhcmluZm8gPSBzZWxmLnRhci5nZXRtZW1iZXIoInVzdGFyL3JlZ3R5cGUiKQotICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFTVBESVIsICJ1c3Rhci9yZWd0eXBlIiksICJyVSIpIGFzIGZvYmoxOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKFRFTVBESVIsICJ1c3Rhci9yZWd0eXBlIiksICJyIikgYXMgZm9iajE6CiAgICAgICAgICAgICBsaW5lczEgPSBmb2JqMS5yZWFkbGluZXMoKQotICAgICAgICBmb2JqMiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgIHRyeToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqMjoKICAgICAgICAgICAgIGxpbmVzMiA9IGxpc3QoaW8uVGV4dElPV3JhcHBlcihmb2JqMikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXMxID09IGxpbmVzMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW9iai5fX2l0ZXJfXygpIGZhaWxlZCIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmb2JqMi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3NlZWsoc2VsZik6CiAgICAgICAgIHNlbGYudGFyLmV4dHJhY3QoInVzdGFyL3JlZ3R5cGUiLCBURU1QRElSKQpAQCAtMTQyLDE3ICsxMzgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICJyZWFkKCkgYWZ0ZXIgcmVhZGxpbmUoKSBmYWlsZWQiKQogICAgICAgICBmb2JqLmNsb3NlKCkKIAorICAgIGRlZiB0ZXN0X2ZpbGVvYmpfdGV4dChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSgidXN0YXIvcmVndHlwZSIpIGFzIGZvYmo6CisgICAgICAgICAgICBmb2JqID0gaW8uVGV4dElPV3JhcHBlcihmb2JqKQorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpLmVuY29kZSgiaXNvODg1OS0xIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWQ1c3VtKGRhdGEpLCBtZDVfcmVndHlwZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb2JqLnNlZWsoMTAwKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICMgSXNzdWUgIzEzODE1OiBzZWVrKCkgY29tcGxhaW5lZCBhYm91dCBhIG1pc3NpbmcKKyAgICAgICAgICAgICAgICAjIGZsdXNoKCkgbWV0aG9kLgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2Vla2luZyBmYWlsZWQgaW4gdGV4dCBtb2RlIikKKwogICAgICMgVGVzdCBpZiBzeW1ib2xpYyBhbmQgaGFyZCBsaW5rcyBhcmUgcmVzb2x2ZWQgYnkgZXh0cmFjdGZpbGUoKS4gIFRoZQogICAgICMgdGVzdCBsaW5rIG1lbWJlcnMgZWFjaCBwb2ludCB0byBhIHJlZ3VsYXIgbWVtYmVyIHdob3NlIGRhdGEgaXMKICAgICAjIHN1cHBvc2VkIHRvIGJlIGV4cG9ydGVkLgogICAgIGRlZiBfdGVzdF9maWxlb2JqX2xpbmsoc2VsZiwgbG5rdHlwZSwgcmVndHlwZSk6Ci0gICAgICAgIGEgPSBzZWxmLnRhci5leHRyYWN0ZmlsZShsbmt0eXBlKQotICAgICAgICBiID0gc2VsZi50YXIuZXh0cmFjdGZpbGUocmVndHlwZSkKLSAgICAgICAgdHJ5OgorICAgICAgICB3aXRoIHNlbGYudGFyLmV4dHJhY3RmaWxlKGxua3R5cGUpIGFzIGEsIHNlbGYudGFyLmV4dHJhY3RmaWxlKHJlZ3R5cGUpIGFzIGI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEubmFtZSwgYi5uYW1lKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgYS5jbG9zZSgpCi0gICAgICAgICAgICBiLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2ZpbGVvYmpfbGluazEoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZW9ial9saW5rKCJ1c3Rhci9sbmt0eXBlIiwgInVzdGFyL3JlZ3R5cGUiKQpAQCAtMjA0LDEzICsyMDcsMTUgQEAKICAgICAgICAgICAgIF9vcGVuID0gZ3ppcC5HemlwRmlsZQogICAgICAgICBlbGlmIHNlbGYubW9kZS5lbmRzd2l0aCgiOmJ6MiIpOgogICAgICAgICAgICAgX29wZW4gPSBiejIuQloyRmlsZQorICAgICAgICBlbGlmIHNlbGYubW9kZS5lbmRzd2l0aCgiOnh6Iik6CisgICAgICAgICAgICBfb3BlbiA9IGx6bWEuTFpNQUZpbGUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIF9vcGVuID0gb3BlbgorICAgICAgICAgICAgX29wZW4gPSBpby5GaWxlSU8KIAogICAgICAgICBmb3IgY2hhciBpbiAoYidcMCcsIGInYScpOgogICAgICAgICAgICAgIyBUZXN0IGlmIEVPRkhlYWRlckVycm9yICgnXDAnKSBhbmQgSW52YWxpZEhlYWRlckVycm9yICgnYScpCiAgICAgICAgICAgICAjIGFyZSBpZ25vcmVkIGNvcnJlY3RseS4KLSAgICAgICAgICAgIHdpdGggX29wZW4odG1wbmFtZSwgIndiIikgYXMgZm9iajoKKyAgICAgICAgICAgIHdpdGggX29wZW4odG1wbmFtZSwgInciKSBhcyBmb2JqOgogICAgICAgICAgICAgICAgIGZvYmoud3JpdGUoY2hhciAqIDEwMjQpCiAgICAgICAgICAgICAgICAgZm9iai53cml0ZSh0YXJmaWxlLlRhckluZm8oImZvbyIpLnRvYnVmKCkpCiAKQEAgLTIyNSw2ICsyMzAsMTAgQEAKIGNsYXNzIE1pc2NSZWFkVGVzdChDb21tb25SZWFkVGVzdCk6CiAKICAgICBkZWYgdGVzdF9ub19uYW1lX2FyZ3VtZW50KHNlbGYpOgorICAgICAgICBpZiBzZWxmLm1vZGUuZW5kc3dpdGgoKCJiejIiLCAieHoiKSk6CisgICAgICAgICAgICAjIEJaMkZpbGUgYW5kIExaTUFGaWxlIGhhdmUgbm8gbmFtZSBhdHRyaWJ1dGUuCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJubyBuYW1lIGF0dHJpYnV0ZSIpCisKICAgICAgICAgd2l0aCBvcGVuKHNlbGYudGFybmFtZSwgInJiIikgYXMgZm9iajoKICAgICAgICAgICAgIHRhciA9IHRhcmZpbGUub3BlbihmaWxlb2JqPWZvYmosIG1vZGU9c2VsZi5tb2RlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXIubmFtZSwgb3MucGF0aC5hYnNwYXRoKGZvYmoubmFtZSkpCkBAIC0yNTQsOSArMjYzLDggQEAKICAgICAgICAgICAgIHQgPSB0YXIubmV4dCgpCiAgICAgICAgICAgICBuYW1lID0gdC5uYW1lCiAgICAgICAgICAgICBvZmZzZXQgPSB0Lm9mZnNldAotICAgICAgICAgICAgZiA9IHRhci5leHRyYWN0ZmlsZSh0KQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggdGFyLmV4dHJhY3RmaWxlKHQpIGFzIGY6CisgICAgICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICB0YXIuY2xvc2UoKQogCkBAIC0yNjUsMTAgKzI3MywxMiBAQAogICAgICAgICAgICAgX29wZW4gPSBnemlwLkd6aXBGaWxlCiAgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6YnoyIik6CiAgICAgICAgICAgICBfb3BlbiA9IGJ6Mi5CWjJGaWxlCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCI6eHoiKToKKyAgICAgICAgICAgIF9vcGVuID0gbHptYS5MWk1BRmlsZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgX29wZW4gPSBvcGVuCi0gICAgICAgIGZvYmogPSBfb3BlbihzZWxmLnRhcm5hbWUsICJyYiIpCi0gICAgICAgIHRyeToKKyAgICAgICAgICAgIF9vcGVuID0gaW8uRmlsZUlPCisKKyAgICAgICAgd2l0aCBfb3BlbihzZWxmLnRhcm5hbWUpIGFzIGZvYmo6CiAgICAgICAgICAgICBmb2JqLnNlZWsob2Zmc2V0KQogCiAgICAgICAgICAgICAjIFRlc3QgaWYgdGhlIHRhcmZpbGUgc3RhcnRzIHdpdGggdGhlIHNlY29uZCBtZW1iZXIuCkBAIC0yODEsOCArMjkxLDYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFyLmV4dHJhY3RmaWxlKHQpLnJlYWQoKSwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgInNlZWsgYmFjayBkaWQgbm90IHdvcmsiKQogICAgICAgICAgICAgdGFyLmNsb3NlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGZvYmouY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfZmFpbF9jb21wKHNlbGYpOgogICAgICAgICAjIEZvciBHemlwIGFuZCBCejIgVGVzdHM6IGZhaWwgd2l0aCBhIFJlYWRFcnJvciBvbiBhbiB1bmNvbXByZXNzZWQgZmlsZS4KQEAgLTQyOCwyNyArNDM2LDI2IEBACiAgICAgICAgIGZvciB0YXJpbmZvIGluIHNlbGYudGFyOgogICAgICAgICAgICAgaWYgbm90IHRhcmluZm8uaXNyZWcoKToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZm9iaiA9IHNlbGYudGFyLmV4dHJhY3RmaWxlKHRhcmluZm8pCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgYnVmID0gZm9iai5yZWFkKDUxMikKLSAgICAgICAgICAgICAgICBleGNlcHQgdGFyZmlsZS5TdHJlYW1FcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJzaW1wbGUgcmVhZC10aHJvdWdoIHVzaW5nIFRhckZpbGUuZXh0cmFjdGZpbGUoKSBmYWlsZWQiKQotICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBmb2JqLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mbykgYXMgZm9iajoKKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBmb2JqLnJlYWQoNTEyKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgdGFyZmlsZS5TdHJlYW1FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgic2ltcGxlIHJlYWQtdGhyb3VnaCB1c2luZyBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgZmFpbGVkIikKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICBkZWYgdGVzdF9maWxlb2JqX3JlZ3VsYXJfZmlsZShzZWxmKToKICAgICAgICAgdGFyaW5mbyA9IHNlbGYudGFyLm5leHQoKSAjIGdldCAicmVndHlwZSIgKGNhbid0IHVzZSBnZXRtZW1iZXIpCi0gICAgICAgIGZvYmogPSBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKQotICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvKSBhcyBmb2JqOgorICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgobGVuKGRhdGEpLCBtZDVzdW0oZGF0YSkpID09ICh0YXJpbmZvLnNpemUsIG1kNV9yZWd0eXBlKSwKICAgICAgICAgICAgICAgICAicmVndWxhciBmaWxlIGV4dHJhY3Rpb24gZmFpbGVkIikKIAogICAgIGRlZiB0ZXN0X3Byb3Zva2Vfc3RyZWFtX2Vycm9yKHNlbGYpOgogICAgICAgICB0YXJpbmZvcyA9IHNlbGYudGFyLmdldG1lbWJlcnMoKQotICAgICAgICBmID0gc2VsZi50YXIuZXh0cmFjdGZpbGUodGFyaW5mb3NbMF0pICMgcmVhZCB0aGUgZmlyc3QgbWVtYmVyCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuU3RyZWFtRXJyb3IsIGYucmVhZCkKKyAgICAgICAgd2l0aCBzZWxmLnRhci5leHRyYWN0ZmlsZSh0YXJpbmZvc1swXSkgYXMgZjogIyByZWFkIHRoZSBmaXJzdCBtZW1iZXIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuU3RyZWFtRXJyb3IsIGYucmVhZCkKIAogICAgIGRlZiB0ZXN0X2NvbXBhcmVfbWVtYmVycyhzZWxmKToKICAgICAgICAgdGFyMSA9IHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz0iaXNvODg1OS0xIikKQEAgLTUyNiw2ICs1MzMsMTggQEAKICAgICAgICAgICAgIHRlc3RmdW5jKGJ6Mm5hbWUsICJyfCoiKQogICAgICAgICAgICAgdGVzdGZ1bmMoYnoybmFtZSwgInJ8YnoyIikKIAorICAgICAgICBpZiBsem1hOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgdGFybmFtZSwgbW9kZT0icjp4eiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0YXJuYW1lLCBtb2RlPSJyfHh6IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHh6bmFtZSwgbW9kZT0icjoiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGFyZmlsZS5SZWFkRXJyb3IsIHRhcmZpbGUub3BlbiwgeHpuYW1lLCBtb2RlPSJyfCIpCisKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInIiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicjoqIikKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInI6eHoiKQorICAgICAgICAgICAgdGVzdGZ1bmMoeHpuYW1lLCAicnwqIikKKyAgICAgICAgICAgIHRlc3RmdW5jKHh6bmFtZSwgInJ8eHoiKQorCiAgICAgZGVmIHRlc3RfZGV0ZWN0X2ZpbGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfbW9kZXMoc2VsZi5fdGVzdGZ1bmNfZmlsZSkKIApAQCAtNzIzLDcgKzc0Miw3IEBACiAgICAgICAgICMgUmV0dXJuIFRydWUgaWYgdGhlIHBsYXRmb3JtIGtub3dzIHRoZSBzdF9ibG9ja3Mgc3RhdCBhdHRyaWJ1dGUgYW5kCiAgICAgICAgICMgdXNlcyBzdF9ibG9ja3MgdW5pdHMgb2YgNTEyIGJ5dGVzLCBhbmQgaWYgdGhlIGZpbGVzeXN0ZW0gaXMgYWJsZSB0bwogICAgICAgICAjIHN0b3JlIGhvbGVzIGluIGZpbGVzLgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImxpbnV4MiI6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCJsaW51eCIpOgogICAgICAgICAgICAgIyBMaW51eCBldmlkZW50aWFsbHkgaGFzIDUxMiBieXRlIHN0X2Jsb2NrcyB1bml0cy4KICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4oVEVNUERJUiwgInNwYXJzZS10ZXN0IikKICAgICAgICAgICAgIHdpdGggb3BlbihuYW1lLCAid2IiKSBhcyBmb2JqOgpAQCAtOTEzLDcgKzkzMiw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZm9vIiwgImJhciIsICJiYXoiKToKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG5hbWUpCi0gICAgICAgICAgICAgICAgb3BlbihuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShuYW1lKQogCiAgICAgICAgICAgICBleGNsdWRlID0gb3MucGF0aC5pc2ZpbGUKIApAQCAtOTQwLDcgKzk1OSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZvciBuYW1lIGluICgiZm9vIiwgImJhciIsICJiYXoiKToKICAgICAgICAgICAgICAgICBuYW1lID0gb3MucGF0aC5qb2luKHRlbXBkaXIsIG5hbWUpCi0gICAgICAgICAgICAgICAgb3BlbihuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShuYW1lKQogCiAgICAgICAgICAgICBkZWYgZmlsdGVyKHRhcmluZm8pOgogICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUodGFyaW5mby5uYW1lKSA9PSAiYmFyIjoKQEAgLTk3OSw3ICs5OTgsNyBAQAogICAgICAgICAjIGFuZCBjb21wYXJlIHRoZSBzdG9yZWQgbmFtZSB3aXRoIHRoZSBvcmlnaW5hbC4KICAgICAgICAgZm9vID0gb3MucGF0aC5qb2luKFRFTVBESVIsICJmb28iKQogICAgICAgICBpZiBub3QgZGlyOgotICAgICAgICAgICAgb3Blbihmb28sICJ3IikuY2xvc2UoKQorICAgICAgICAgICAgc3VwcG9ydC5jcmVhdGVfZW1wdHlfZmlsZShmb28pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5ta2Rpcihmb28pCiAKQEAgLTEwOTYsNiArMTExNSw5IEBACiAgICAgICAgICAgICBkYXRhID0gZGVjLmRlY29tcHJlc3MoZGF0YSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZGVjLnVudXNlZF9kYXRhKSA9PSAwLAogICAgICAgICAgICAgICAgICAgICAiZm91bmQgdHJhaWxpbmcgZGF0YSIpCisgICAgICAgIGVsaWYgc2VsZi5tb2RlLmVuZHN3aXRoKCJ4eiIpOgorICAgICAgICAgICAgd2l0aCBsem1hLkxaTUFGaWxlKHRtcG5hbWUpIGFzIGZvYmo6CisgICAgICAgICAgICAgICAgZGF0YSA9IGZvYmoucmVhZCgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3aXRoIG9wZW4odG1wbmFtZSwgInJiIikgYXMgZm9iajoKICAgICAgICAgICAgICAgICBkYXRhID0gZm9iai5yZWFkKCkKQEAgLTEzMzksNyArMTM2MSw3IEBACiAgICAgICAgIHNlbGYuX3Rlc3RfdW5pY29kZV9maWxlbmFtZSgidXRmNyIpCiAKICAgICBkZWYgdGVzdF91dGY4X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLl90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoInV0ZjgiKQorICAgICAgICBzZWxmLl90ZXN0X3VuaWNvZGVfZmlsZW5hbWUoInV0Zi04IikKIAogICAgIGRlZiBfdGVzdF91bmljb2RlX2ZpbGVuYW1lKHNlbGYsIGVuY29kaW5nKToKICAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKHRtcG5hbWUsICJ3IiwgZm9ybWF0PXNlbGYuZm9ybWF0LCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPSJzdHJpY3QiKQpAQCAtMTQxOCw3ICsxNDQwLDcgQEAKICAgICBkZWYgdGVzdF9iYWRfcGF4X2hlYWRlcihzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciBpc3N1ZSAjODYzMy4gR05VIHRhciA8PSAxLjIzIGNyZWF0ZXMgcmF3IGJpbmFyeSBmaWVsZHMKICAgICAgICAgIyB3aXRob3V0IGEgaGRyY2hhcnNldD1CSU5BUlkgaGVhZGVyLgotICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmOCIsICJwYXgvYmFkLXBheC1cdWRjZTRcdWRjZjZcdWRjZmMiKSwKKyAgICAgICAgZm9yIGVuY29kaW5nLCBuYW1lIGluICgoInV0Zi04IiwgInBheC9iYWQtcGF4LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAogICAgICAgICAgICAgICAgICgiaXNvODg1OS0xIiwgInBheC9iYWQtcGF4LVx4ZTRceGY2XHhmYyIpLCk6CiAgICAgICAgICAgICB3aXRoIHRhcmZpbGUub3Blbih0YXJuYW1lLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyB0YXI6CiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtMTQzMyw3ICsxNDU1LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JpbmFyeV9oZWFkZXIoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFBPU0lYLjEtMjAwOCBjb21wYXRpYmxlIGhlYWRlciB3aXRoIGEgaGRyY2hhcnNldD1CSU5BUlkgZmllbGQuCi0gICAgICAgIGZvciBlbmNvZGluZywgbmFtZSBpbiAoKCJ1dGY4IiwgInBheC9oZHJjaGFyc2V0LVx1ZGNlNFx1ZGNmNlx1ZGNmYyIpLAorICAgICAgICBmb3IgZW5jb2RpbmcsIG5hbWUgaW4gKCgidXRmLTgiLCAicGF4L2hkcmNoYXJzZXQtXHVkY2U0XHVkY2Y2XHVkY2ZjIiksCiAgICAgICAgICAgICAgICAgKCJpc284ODU5LTEiLCAicGF4L2hkcmNoYXJzZXQtXHhlNFx4ZjZceGZjIiksKToKICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHRhcm5hbWUsIGVuY29kaW5nPWVuY29kaW5nLCBlcnJvcnM9InN1cnJvZ2F0ZWVzY2FwZSIpIGFzIHRhcjoKICAgICAgICAgICAgICAgICB0cnk6CkBAIC0xNDU4LDEyICsxNDgwLDkgQEAKICAgICAgICAgd2l0aCB0YXJmaWxlLm9wZW4odGFybmFtZSwgZW5jb2Rpbmc9Imlzbzg4NTktMSIpIGFzIHNyYzoKICAgICAgICAgICAgIHQgPSBzcmMuZ2V0bWVtYmVyKCJ1c3Rhci9yZWd0eXBlIikKICAgICAgICAgICAgIHQubmFtZSA9ICJmb28iCi0gICAgICAgICAgICBmID0gc3JjLmV4dHJhY3RmaWxlKHQpCi0gICAgICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNyYy5leHRyYWN0ZmlsZSh0KSBhcyBmOgogICAgICAgICAgICAgICAgIHdpdGggdGFyZmlsZS5vcGVuKHNlbGYudGFybmFtZSwgbW9kZSkgYXMgdGFyOgogICAgICAgICAgICAgICAgICAgICB0YXIuYWRkZmlsZSh0LCBmKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiBfdGVzdChzZWxmLCBuYW1lcz1bImJhciJdLCBmaWxlb2JqPU5vbmUpOgogICAgICAgICB3aXRoIHRhcmZpbGUub3BlbihzZWxmLnRhcm5hbWUsIGZpbGVvYmo9ZmlsZW9iaikgYXMgdGFyOgpAQCAtMTUxMCw2ICsxNTI5LDEyIEBACiAgICAgICAgIHNlbGYuX2NyZWF0ZV90ZXN0dGFyKCJ3OmJ6MiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRhcmZpbGUuUmVhZEVycm9yLCB0YXJmaWxlLm9wZW4sIHRtcG5hbWUsICJhIikKIAorICAgIGRlZiB0ZXN0X2FwcGVuZF9sem1hKHNlbGYpOgorICAgICAgICBpZiBsem1hIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJsem1hIG1vZHVsZSBub3QgYXZhaWxhYmxlIikKKyAgICAgICAgc2VsZi5fY3JlYXRlX3Rlc3R0YXIoInc6eHoiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh0YXJmaWxlLlJlYWRFcnJvciwgdGFyZmlsZS5vcGVuLCB0bXBuYW1lLCAiYSIpCisKICAgICAjIEFwcGVuZCBtb2RlIGlzIHN1cHBvc2VkIHRvIGZhaWwgaWYgdGhlIHRhcmZpbGUgdG8gYXBwZW5kIHRvCiAgICAgIyBkb2VzIG5vdCBlbmQgd2l0aCBhIHplcm8gYmxvY2suCiAgICAgZGVmIF90ZXN0X2Vycm9yKHNlbGYsIGRhdGEpOgpAQCAtMTc4OCw2ICsxODEzLDIxIEBACiAgICAgICAgIHNlbGYuX3Rlc3RfcGFydGlhbF9pbnB1dCgicjpiejIiKQogCiAKK2NsYXNzIEx6bWFNaXNjUmVhZFRlc3QoTWlzY1JlYWRUZXN0KToKKyAgICB0YXJuYW1lID0geHpuYW1lCisgICAgbW9kZSA9ICJyOnh6IgorY2xhc3MgTHptYVVzdGFyUmVhZFRlc3QoVXN0YXJSZWFkVGVzdCk6CisgICAgdGFybmFtZSA9IHh6bmFtZQorICAgIG1vZGUgPSAicjp4eiIKK2NsYXNzIEx6bWFTdHJlYW1SZWFkVGVzdChTdHJlYW1SZWFkVGVzdCk6CisgICAgdGFybmFtZSA9IHh6bmFtZQorICAgIG1vZGUgPSAicnx4eiIKK2NsYXNzIEx6bWFXcml0ZVRlc3QoV3JpdGVUZXN0KToKKyAgICBtb2RlID0gInc6eHoiCitjbGFzcyBMem1hU3RyZWFtV3JpdGVUZXN0KFN0cmVhbVdyaXRlVGVzdCk6CisgICAgbW9kZSA9ICJ3fHh6IgorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnVubGluayhURU1QRElSKQogICAgIG9zLm1ha2VkaXJzKFRFTVBESVIpCkBAIC0xODUwLDYgKzE4OTAsMjAgQEAKICAgICAgICAgICAgIEJ6MlBhcnRpYWxSZWFkVGVzdCwKICAgICAgICAgXQogCisgICAgaWYgbHptYToKKyAgICAgICAgIyBDcmVhdGUgdGVzdHRhci50YXIueHogYW5kIGFkZCBsem1hLXNwZWNpZmljIHRlc3RzLgorICAgICAgICBzdXBwb3J0LnVubGluayh4em5hbWUpCisgICAgICAgIHdpdGggbHptYS5MWk1BRmlsZSh4em5hbWUsICJ3IikgYXMgdGFyOgorICAgICAgICAgICAgdGFyLndyaXRlKGRhdGEpCisKKyAgICAgICAgdGVzdHMgKz0gWworICAgICAgICAgICAgTHptYU1pc2NSZWFkVGVzdCwKKyAgICAgICAgICAgIEx6bWFVc3RhclJlYWRUZXN0LAorICAgICAgICAgICAgTHptYVN0cmVhbVJlYWRUZXN0LAorICAgICAgICAgICAgTHptYVdyaXRlVGVzdCwKKyAgICAgICAgICAgIEx6bWFTdHJlYW1Xcml0ZVRlc3QsCisgICAgICAgIF0KKwogICAgIHRyeToKICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQogICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbG5ldGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CmluZGV4IDk1ZWViZjMuLjExZTk1ZTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5CkBAIC0zNiw2ICszNiw3IEBACiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYudGhyZWFkLmpvaW4oKQorICAgICAgICBkZWwgc2VsZi50aHJlYWQgICMgQ2xlYXIgb3V0IGFueSBkYW5nbGluZyBUaHJlYWQgb2JqZWN0cy4KIAogICAgIGRlZiB0ZXN0QmFzaWMoc2VsZik6CiAgICAgICAgICMgY29ubmVjdHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CmluZGV4IDUwY2YzYjQuLmQ3OWYzMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQpAQCAtMjEsNyArMjEsNyBAQAogCiAjIFRFU1RfRklMRVMgbWF5IG5lZWQgdG8gYmUgdHdlYWtlZCBmb3Igc3lzdGVtcyBkZXBlbmRpbmcgb24gdGhlIG1heGltdW0KICMgbnVtYmVyIG9mIGZpbGVzIHRoYXQgY2FuIGJlIG9wZW5lZCBhdCBvbmUgdGltZSAoc2VlIHVsaW1pdCAtbikKLWlmIHN5cy5wbGF0Zm9ybSBpbiAoJ29wZW5ic2QzJywgJ29wZW5ic2Q0Jyk6CitpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnb3BlbmJzZCcpOgogICAgIFRFU1RfRklMRVMgPSA0OAogZWxzZToKICAgICBURVNUX0ZJTEVTID0gMTAwCkBAIC0zMSw3ICszMSw3IEBACiAjIHRocmVhZHMgaXMgbm90IGRvbmUgaGVyZS4KIAogIyBDb21tb24gZnVuY3Rpb25hbGl0eS4KLWNsYXNzIFRDKHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBzdHJfY2hlY2sgPSByZS5jb21waWxlKHIiW2EtekEtWjAtOV8tXXs2fSQiKQogCkBAIC00NSwxMSArNDUsNiBAQAogICAgICAgICBzZWxmLl93YXJuaW5nc19tYW5hZ2VyLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpCiAKIAotICAgIGRlZiBmYWlsT25FeGNlcHRpb24oc2VsZiwgd2hhdCwgZWk9Tm9uZSk6Ci0gICAgICAgIGlmIGVpIGlzIE5vbmU6Ci0gICAgICAgICAgICBlaSA9IHN5cy5leGNfaW5mbygpCi0gICAgICAgIHNlbGYuZmFpbCgiJXMgcmFpc2VkICVzOiAlcyIgJSAod2hhdCwgZWlbMF0sIGVpWzFdKSkKLQogICAgIGRlZiBuYW1lQ2hlY2soc2VsZiwgbmFtZSwgZGlyLCBwcmUsIHN1Zik6CiAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCiAgICAgICAgIG5wcmUgID0gbmJhc2VbOmxlbihwcmUpXQpAQCAtNjgsOSArNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgInJhbmRvbSBzdHJpbmcgJyVzJyBkb2VzIG5vdCBtYXRjaCAvXlthLXpBLVowLTlfLV17Nn0kLyIKICAgICAgICAgICAgICAgICAgICAgICUgbmJhc2UpCiAKLXRlc3RfY2xhc3NlcyA9IFtdCiAKLWNsYXNzIHRlc3RfZXhwb3J0cyhUQyk6CitjbGFzcyBUZXN0RXhwb3J0cyhCYXNlVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2V4cG9ydHMoc2VsZik6CiAgICAgICAgICMgVGhlcmUgYXJlIG5vIHN1cnByaXNpbmcgc3ltYm9scyBpbiB0aGUgdGVtcGZpbGUgbW9kdWxlCiAgICAgICAgIGRpY3QgPSB0ZW1wZmlsZS5fX2RpY3RfXwpAQCAtOTcsMTAgKzkxLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih1bmV4cCkgPT0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGtleXM6ICVzIiAlIHVuZXhwKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZXhwb3J0cykKIAotCi1jbGFzcyB0ZXN0X19SYW5kb21OYW1lU2VxdWVuY2UoVEMpOgorY2xhc3MgVGVzdFJhbmRvbU5hbWVTZXF1ZW5jZShCYXNlVGVzdENhc2UpOgogICAgICIiIlRlc3QgdGhlIGludGVybmFsIGl0ZXJhdG9yIG9iamVjdCBfUmFuZG9tTmFtZVNlcXVlbmNlLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTI4LDEzICsxMjAsMTAgQEAKIAogICAgICAgICBpID0gMAogICAgICAgICByID0gc2VsZi5yCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBzIGluIHI6Ci0gICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAgICAgICAgaWYgaSA9PSAyMDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIml0ZXJhdGlvbiIpCisgICAgICAgIGZvciBzIGluIHI6CisgICAgICAgICAgICBpICs9IDEKKyAgICAgICAgICAgIGlmIGkgPT0gMjA6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdmb3JrJyksCiAgICAgICAgICJvcy5mb3JrIGlzIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QiKQpAQCAtMTY3LDEwICsxNTYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNoaWxkX3ZhbHVlLCBwYXJlbnRfdmFsdWUpCiAKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X19SYW5kb21OYW1lU2VxdWVuY2UpCiAKLQotY2xhc3MgdGVzdF9fY2FuZGlkYXRlX3RlbXBkaXJfbGlzdChUQyk6CitjbGFzcyBUZXN0Q2FuZGlkYXRlVGVtcGRpckxpc3QoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfY2FuZGlkYXRlX3RlbXBkaXJfbGlzdC4iIiIKIAogICAgIGRlZiB0ZXN0X25vbmVtcHR5X2xpc3Qoc2VsZik6CkBAIC0yMDksMTMgKzE5NiwxMSBAQAogICAgICAgICAgICAgIyBOb3QgcHJhY3RpY2FsIHRvIHRyeSB0byB2ZXJpZnkgdGhlIHByZXNlbmNlIG9mIE9TLXNwZWNpZmljCiAgICAgICAgICAgICAjIHBhdGhzIGluIHRoaXMgbGlzdC4KIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X19jYW5kaWRhdGVfdGVtcGRpcl9saXN0KQotCiAKICMgV2UgdGVzdCBfZ2V0X2RlZmF1bHRfdGVtcGRpciBieSB0ZXN0aW5nIGdldHRlbXBkaXIuCiAKIAotY2xhc3MgdGVzdF9fZ2V0X2NhbmRpZGF0ZV9uYW1lcyhUQyk6CitjbGFzcyBUZXN0R2V0Q2FuZGlkYXRlTmFtZXMoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoZSBpbnRlcm5hbCBmdW5jdGlvbiBfZ2V0X2NhbmRpZGF0ZV9uYW1lcy4iIiIKIAogICAgIGRlZiB0ZXN0X3JldHZhbChzZWxmKToKQEAgLTIzMCwxMCArMjE1LDggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX2dldF9jYW5kaWRhdGVfbmFtZXMpCiAKLQotY2xhc3MgdGVzdF9fbWtzdGVtcF9pbm5lcihUQyk6CitjbGFzcyBUZXN0TWtzdGVtcElubmVyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCB0aGUgaW50ZXJuYWwgZnVuY3Rpb24gX21rc3RlbXBfaW5uZXIuIiIiCiAKICAgICBjbGFzcyBta3N0ZW1wZWQ6CkBAIC0yNTgsMTAgKzI0MSw3IEBACiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIGJpbj0xKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIl9ta3N0ZW1wX2lubmVyIikKKyAgICAgICAgZmlsZSA9IHNlbGYubWtzdGVtcGVkKGRpciwgcHJlLCBzdWYsIGJpbikKIAogICAgICAgICBzZWxmLm5hbWVDaGVjayhmaWxlLm5hbWUsIGRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC0zNTMsMTAgKzMzMyw4IEBACiAgICAgICAgIG9zLmxzZWVrKGYuZmQsIDAsIG9zLlNFRUtfU0VUKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoZi5mZCwgMjApLCBiImJsYXQiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfX21rc3RlbXBfaW5uZXIpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wcHJlZml4KFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wUHJlZml4KEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wcHJlZml4KCkuIiIiCiAKICAgICBkZWYgdGVzdF9zYW5lX3RlbXBsYXRlKHNlbGYpOgpAQCAtMzc2LDE5ICszNTQsMTQgQEAKICAgICAgICAgZCA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSIiKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKGQsIHApCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIm9zLm9wZW4iKQorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHAsIG9zLk9fUkRXUiB8IG9zLk9fQ1JFQVQpCiAgICAgICAgICAgICBvcy5jbG9zZShmZCkKICAgICAgICAgICAgIG9zLnVubGluayhwKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZCkKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X2dldHRlbXBwcmVmaXgpCiAKLQotY2xhc3MgdGVzdF9nZXR0ZW1wZGlyKFRDKToKK2NsYXNzIFRlc3RHZXRUZW1wRGlyKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBnZXR0ZW1wZGlyKCkuIiIiCiAKICAgICBkZWYgdGVzdF9kaXJlY3RvcnlfZXhpc3RzKHNlbGYpOgpAQCAtNDA2LDEyICszNzksOSBAQAogICAgICAgICAjIHNuZWFreToganVzdCBpbnN0YW50aWF0ZSBhIE5hbWVkVGVtcG9yYXJ5RmlsZSwgd2hpY2gKICAgICAgICAgIyBkZWZhdWx0cyB0byB3cml0aW5nIGludG8gdGhlIGRpcmVjdG9yeSByZXR1cm5lZCBieQogICAgICAgICAjIGdldHRlbXBkaXIuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQotICAgICAgICAgICAgZmlsZS53cml0ZShiImJsYXQiKQotICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjcmVhdGUgZmlsZSBpbiAlcyIgJSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKQorICAgICAgICBmaWxlLndyaXRlKGIiYmxhdCIpCisgICAgICAgIGZpbGUuY2xvc2UoKQogCiAgICAgZGVmIHRlc3Rfc2FtZV90aGluZyhzZWxmKToKICAgICAgICAgIyBnZXR0ZW1wZGlyIGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lIG9iamVjdApAQCAtNDIwLDIzICszOTAsMTggQEAKIAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYSBpcyBiKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfZ2V0dGVtcGRpcikKIAotCi1jbGFzcyB0ZXN0X21rc3RlbXAoVEMpOgorY2xhc3MgVGVzdE1rc3RlbXAoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IG1rc3RlbXAoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiKToKICAgICAgICAgaWYgZGlyIGlzIE5vbmU6CiAgICAgICAgICAgICBkaXIgPSB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKLSAgICAgICAgICAgIChuZGlyLCBuYmFzZSkgPSBvcy5wYXRoLnNwbGl0KG5hbWUpCi0gICAgICAgICAgICBhZGlyID0gb3MucGF0aC5hYnNwYXRoKGRpcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKLSAgICAgICAgICAgICAgICAiRGlyZWN0b3J5ICclcycgaW5jb3JyZWN0bHkgcmV0dXJuZWQgYXMgJyVzJyIgJSAoYWRpciwgbmRpcikpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3N0ZW1wIikKKyAgICAgICAgKGZkLCBuYW1lKSA9IHRlbXBmaWxlLm1rc3RlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKKyAgICAgICAgKG5kaXIsIG5iYXNlKSA9IG9zLnBhdGguc3BsaXQobmFtZSkKKyAgICAgICAgYWRpciA9IG9zLnBhdGguYWJzcGF0aChkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWRpciwgbmRpciwKKyAgICAgICAgICAgICJEaXJlY3RvcnkgJyVzJyBpbmNvcnJlY3RseSByZXR1cm5lZCBhcyAnJXMnIiAlIChhZGlyLCBuZGlyKSkKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNDYxLDE5ICs0MjYsMTQgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKIAotdGVzdF9jbGFzc2VzLmFwcGVuZCh0ZXN0X21rc3RlbXApCiAKLQotY2xhc3MgdGVzdF9ta2R0ZW1wKFRDKToKK2NsYXNzIFRlc3RNa2R0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta2R0ZW1wKCkuIiIiCiAKICAgICBkZWYgZG9fY3JlYXRlKHNlbGYsIGRpcj1Ob25lLCBwcmU9IiIsIHN1Zj0iIik6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta2R0ZW1wIikKKyAgICAgICAgbmFtZSA9IHRlbXBmaWxlLm1rZHRlbXAoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLm5hbWVDaGVjayhuYW1lLCBkaXIsIHByZSwgc3VmKQpAQCAtNTI4LDEwICs0ODgsOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgb3Mucm1kaXIoZGlyKQogCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfbWtkdGVtcCkKIAotCi1jbGFzcyB0ZXN0X21rdGVtcChUQyk6CitjbGFzcyBUZXN0TWt0ZW1wKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBta3RlbXAoKS4iIiIKIAogICAgICMgRm9yIHNhZmV0eSwgYWxsIHVzZSBvZiBta3RlbXAgbXVzdCBvY2N1ciBpbiBhIHByaXZhdGUgZGlyZWN0b3J5LgpAQCAtNTYwLDEwICs1MTgsNyBAQAogICAgICAgICAgICAgc2VsZi5fdW5saW5rKHNlbGYubmFtZSkKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgcHJlPSIiLCBzdWY9IiIpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJta3RlbXAiKQorICAgICAgICBmaWxlID0gc2VsZi5ta3RlbXBlZChzZWxmLmRpciwgcHJlLCBzdWYpCiAKICAgICAgICAgc2VsZi5uYW1lQ2hlY2soZmlsZS5uYW1lLCBzZWxmLmRpciwgcHJlLCBzdWYpCiAgICAgICAgIHJldHVybiBmaWxlCkBAIC01OTAsMjMgKzU0NSwxOCBAQAogIyMgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lV2FybmluZywKICMjICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGZpbGUubWt0ZW1wLCBkaXI9c2VsZi5kaXIpCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9ta3RlbXApCi0KIAogIyBXZSB0ZXN0IF9UZW1wb3JhcnlGaWxlV3JhcHBlciBieSB0ZXN0aW5nIE5hbWVkVGVtcG9yYXJ5RmlsZS4KIAogCi1jbGFzcyB0ZXN0X05hbWVkVGVtcG9yYXJ5RmlsZShUQyk6CitjbGFzcyBUZXN0TmFtZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBOYW1lZFRlbXBvcmFyeUZpbGUoKS4iIiIKIAogICAgIGRlZiBkb19jcmVhdGUoc2VsZiwgZGlyPU5vbmUsIHByZT0iIiwgc3VmPSIiLCBkZWxldGU9VHJ1ZSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlPWRlbGV0ZSkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oIk5hbWVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGU9ZGVsZXRlKQogCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKGZpbGUubmFtZSwgZGlyLCBwcmUsIHN1ZikKICAgICAgICAgcmV0dXJuIGZpbGUKQEAgLTY1OSwxMSArNjA5LDggQEAKICAgICAgICAgZiA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xvc2UiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQSBOYW1lZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTY3NywxOCArNjI0LDE0IEBACiAKICAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/CiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9OYW1lZFRlbXBvcmFyeUZpbGUpCiAKLWNsYXNzIHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUoVEMpOgorY2xhc3MgVGVzdFNwb29sZWRUZW1wb3JhcnlGaWxlKEJhc2VUZXN0Q2FzZSk6CiAgICAgIiIiVGVzdCBTcG9vbGVkVGVtcG9yYXJ5RmlsZSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBtYXhfc2l6ZT0wLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIpOgogICAgICAgICBpZiBkaXIgaXMgTm9uZToKICAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLmdldHRlbXBkaXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9bWF4X3NpemUsIGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJTcG9vbGVkVGVtcG9yYXJ5RmlsZSIpCisgICAgICAgIGZpbGUgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT1tYXhfc2l6ZSwgZGlyPWRpciwgcHJlZml4PXByZSwgc3VmZml4PXN1ZikKIAogICAgICAgICByZXR1cm4gZmlsZQogCkBAIC03NzYsMTEgKzcxOSw4IEBACiAgICAgICAgIGYud3JpdGUoYidhYmNcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2VfYWZ0ZXJfcm9sbG92ZXIoc2VsZik6CiAgICAgICAgICMgQSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjYW4gYmUgY2xvc2VkIG1hbnkgdGltZXMgd2l0aG91dCBlcnJvcgpAQCAtNzg4LDExICs3MjgsOCBAQAogICAgICAgICBmLndyaXRlKGInYWJjXG4nKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQogICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsT25FeGNlcHRpb24oImNsb3NlIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGYuY2xvc2UoKQogCiAgICAgZGVmIHRlc3RfYm91bmRfbWV0aG9kcyhzZWxmKToKICAgICAgICAgIyBJdCBzaG91bGQgYmUgT0sgdG8gc3RlYWwgYSBib3VuZCBtZXRob2QgZnJvbSBhIFNwb29sZWRUZW1wb3JhcnlGaWxlCkBAIC04NzgsNjYgKzgxNSw3NiBAQAogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdXNlX2Nsb3NlZCkKIAotCi10ZXN0X2NsYXNzZXMuYXBwZW5kKHRlc3RfU3Bvb2xlZFRlbXBvcmFyeUZpbGUpCi0KLQotY2xhc3MgdGVzdF9UZW1wb3JhcnlGaWxlKFRDKToKLSAgICAiIiJUZXN0IFRlbXBvcmFyeUZpbGUoKS4iIiIKLQotICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgotICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcwotICAgICAgICAjIE5vIHBvaW50IGluIHRlc3RpbmcgdGhlIG5hbWUgcGFyYW1zIC0gdGhlIGZpbGUgaGFzIG5vIG5hbWUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RmlsZSIpCi0KLSAgICBkZWYgdGVzdF9oYXNfbm9fbmFtZShzZWxmKToKLSAgICAgICAgIyBUZW1wb3JhcnlGaWxlIGNyZWF0ZXMgZmlsZXMgd2l0aCBubyBuYW1lcyAob24gdGhpcyBzeXN0ZW0pCi0gICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZShkaXI9ZGlyKQotICAgICAgICBmLndyaXRlKGInYmxhdCcpCi0KLSAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKLSAgICAgICAgIyB1cyBmcm9tIHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgaXQgd2FzIGNyZWF0ZWQgaW4uCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgZWkgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJybWRpciIsIGVpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfY2xvc2Uoc2VsZik6Ci0gICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCi0gICAgICAgIGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKLSAgICAgICAgZi53cml0ZShiJ2FiY1xuJykKLSAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHNlbGYuZmFpbE9uRXhjZXB0aW9uKCJjbG9zZSIpCi0KLSAgICAjIEhvdyB0byB0ZXN0IHRoZSBtb2RlIGFuZCBidWZzaXplIHBhcmFtZXRlcnM/Ci0gICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6Ci0KLSAgICAgICAgZGVmIHJvdW5kdHJpcChpbnB1dCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgqYXJncywgKiprd2FyZ3MpIGFzIGZpbGVvYmo6Ci0gICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKLSAgICAgICAgICAgICAgICBmaWxlb2JqLnNlZWsoMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0LCBmaWxlb2JqLnJlYWQoKSkKLQotICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCi0gICAgICAgIHJvdW5kdHJpcCgiYWJkY1xuIiwgIncrIikKLSAgICAgICAgcm91bmR0cmlwKCJcdTAzOUIiLCAidysiLCBlbmNvZGluZz0idXRmLTE2IikKLSAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKKyAgICBkZWYgdGVzdF90cnVuY2F0ZV93aXRoX3NpemVfcGFyYW1ldGVyKHNlbGYpOgorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgY2FuIGJlIHRydW5jYXRlZCB0byB6ZXJvIHNpemUKKyAgICAgICAgZiA9IHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKG1heF9zaXplPTEwKQorICAgICAgICBmLndyaXRlKGInYWJjZGVmZ1xuJykKKyAgICAgICAgZi5zZWVrKDApCisgICAgICAgIGYudHJ1bmNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuX3JvbGxlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9maWxlLmdldHZhbHVlKCksIGInJykKKyAgICAgICAgIyBBIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNhbiBiZSB0cnVuY2F0ZWQgdG8gYSBzcGVjaWZpYyBzaXplCisgICAgICAgIGYgPSB0ZW1wZmlsZS5TcG9vbGVkVGVtcG9yYXJ5RmlsZShtYXhfc2l6ZT0xMCkKKyAgICAgICAgZi53cml0ZShiJ2FiY2RlZmdcbicpCisgICAgICAgIGYudHJ1bmNhdGUoNCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLl9yb2xsZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5fZmlsZS5nZXR2YWx1ZSgpLCBiJ2FiY2QnKQorICAgICAgICAjIEEgU3Bvb2xlZFRlbXBvcmFyeUZpbGUgcm9sbHMgb3ZlciBpZiB0cnVuY2F0ZWQgdG8gbGFyZ2Ugc2l6ZQorICAgICAgICBmID0gdGVtcGZpbGUuU3Bvb2xlZFRlbXBvcmFyeUZpbGUobWF4X3NpemU9MTApCisgICAgICAgIGYud3JpdGUoYidhYmNkZWZnXG4nKQorICAgICAgICBmLnRydW5jYXRlKDIwKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5fcm9sbGVkKQorICAgICAgICBpZiBoYXNfc3RhdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZnN0YXQoZi5maWxlbm8oKSkuc3Rfc2l6ZSwgMjApCiAKIAogaWYgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIGlzIG5vdCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlOgotICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlGaWxlKQorCisgICAgY2xhc3MgVGVzdFRlbXBvcmFyeUZpbGUoQmFzZVRlc3RDYXNlKToKKyAgICAgICAgIiIiVGVzdCBUZW1wb3JhcnlGaWxlKCkuIiIiCisKKyAgICAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY2FuIGNyZWF0ZSBmaWxlcworICAgICAgICAgICAgIyBObyBwb2ludCBpbiB0ZXN0aW5nIHRoZSBuYW1lIHBhcmFtcyAtIHRoZSBmaWxlIGhhcyBubyBuYW1lLgorICAgICAgICAgICAgdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisKKyAgICAgICAgZGVmIHRlc3RfaGFzX25vX25hbWUoc2VsZik6CisgICAgICAgICAgICAjIFRlbXBvcmFyeUZpbGUgY3JlYXRlcyBmaWxlcyB3aXRoIG5vIG5hbWVzIChvbiB0aGlzIHN5c3RlbSkKKyAgICAgICAgICAgIGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICAgICAgZiA9IHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUoZGlyPWRpcikKKyAgICAgICAgICAgIGYud3JpdGUoYidibGF0JykKKworICAgICAgICAgICAgIyBTbmVha3k6IGJlY2F1c2UgdGhpcyBmaWxlIGhhcyBubyBuYW1lLCBpdCBzaG91bGQgbm90IHByZXZlbnQKKyAgICAgICAgICAgICMgdXMgZnJvbSByZW1vdmluZyB0aGUgZGlyZWN0b3J5IGl0IHdhcyBjcmVhdGVkIGluLgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLnJtZGlyKGRpcikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAjIGNsZWFudXAKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICBkZWYgdGVzdF9tdWx0aXBsZV9jbG9zZShzZWxmKToKKyAgICAgICAgICAgICMgQSBUZW1wb3JhcnlGaWxlIGNhbiBiZSBjbG9zZWQgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCisgICAgICAgICAgICBmID0gdGVtcGZpbGUuVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgICAgICBmLndyaXRlKGInYWJjXG4nKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgICMgSG93IHRvIHRlc3QgdGhlIG1vZGUgYW5kIGJ1ZnNpemUgcGFyYW1ldGVycz8KKyAgICAgICAgZGVmIHRlc3RfbW9kZV9hbmRfZW5jb2Rpbmcoc2VsZik6CisKKyAgICAgICAgICAgIGRlZiByb3VuZHRyaXAoaW5wdXQsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCphcmdzLCAqKmt3YXJncykgYXMgZmlsZW9iajoKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai53cml0ZShpbnB1dCkKKyAgICAgICAgICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXQsIGZpbGVvYmoucmVhZCgpKQorCisgICAgICAgICAgICByb3VuZHRyaXAoYiIxMjM0IiwgIncrYiIpCisgICAgICAgICAgICByb3VuZHRyaXAoImFiZGNcbiIsICJ3KyIpCisgICAgICAgICAgICByb3VuZHRyaXAoIlx1MDM5QiIsICJ3KyIsIGVuY29kaW5nPSJ1dGYtMTYiKQorICAgICAgICAgICAgcm91bmR0cmlwKCJmb29cclxuIiwgIncrIiwgbmV3bGluZT0iIikKIAogCiAjIEhlbHBlciBmb3IgdGVzdF9kZWxfb25fc2h1dGRvd24KQEAgLTk1NiwxNiArOTAzLDEzIEBACiAgICAgICAgICAgICBkLmNsZWFyKCkKICAgICAgICAgICAgIGQudXBkYXRlKGMpCiAKLWNsYXNzIHRlc3RfVGVtcG9yYXJ5RGlyZWN0b3J5KFRDKToKK2NsYXNzIFRlc3RUZW1wb3JhcnlEaXJlY3RvcnkoQmFzZVRlc3RDYXNlKToKICAgICAiIiJUZXN0IFRlbXBvcmFyeURpcmVjdG9yeSgpLiIiIgogCiAgICAgZGVmIGRvX2NyZWF0ZShzZWxmLCBkaXI9Tm9uZSwgcHJlPSIiLCBzdWY9IiIsIHJlY3Vyc2U9MSk6CiAgICAgICAgIGlmIGRpciBpcyBOb25lOgogICAgICAgICAgICAgZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRtcCA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShkaXI9ZGlyLCBwcmVmaXg9cHJlLCBzdWZmaXg9c3VmKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiVGVtcG9yYXJ5RGlyZWN0b3J5IikKKyAgICAgICAgdG1wID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KGRpcj1kaXIsIHByZWZpeD1wcmUsIHN1ZmZpeD1zdWYpCiAgICAgICAgIHNlbGYubmFtZUNoZWNrKHRtcC5uYW1lLCBkaXIsIHByZSwgc3VmKQogICAgICAgICAjIENyZWF0ZSBhIHN1YmRpcmVjdG9yeSBhbmQgc29tZSBmaWxlcwogICAgICAgICBpZiByZWN1cnNlOgpAQCAtMTA4OSwxMSArMTAzMyw4IEBACiAgICAgICAgICMgQ2FuIGJlIGNsZWFuZWQtdXAgbWFueSB0aW1lcyB3aXRob3V0IGVycm9yCiAgICAgICAgIGQgPSBzZWxmLmRvX2NyZWF0ZSgpCiAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGQuY2xlYW51cCgpCi0gICAgICAgICAgICBkLmNsZWFudXAoKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBzZWxmLmZhaWxPbkV4Y2VwdGlvbigiY2xlYW51cCIpCisgICAgICAgIGQuY2xlYW51cCgpCisgICAgICAgIGQuY2xlYW51cCgpCiAKICAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CiAgICAgICAgICMgQ2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIKQEAgLTExMDQsMTAgKzEwNDUsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKG5hbWUpKQogCiAKLXRlc3RfY2xhc3Nlcy5hcHBlbmQodGVzdF9UZW1wb3JhcnlEaXJlY3RvcnkpCi0KIGRlZiB0ZXN0X21haW4oKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5IGIvTGliL3Rlc3QvdGVzdF90ZXh0d3JhcC5weQppbmRleCAzOTAxMTIwLi5jODZmNWNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RleHR3cmFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGV4dHdyYXAucHkKQEAgLTExLDcgKzExLDcgQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IFRleHRXcmFwcGVyLCB3cmFwLCBmaWxsLCBkZWRlbnQsIGluZGVudAogCiAKIGNsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMDAsNiArMTAwLDE0IEBACiAgICAgICAgIHJlc3VsdCA9IHdyYXBwZXIuZmlsbCh0ZXh0KQogICAgICAgICBzZWxmLmNoZWNrKHJlc3VsdCwgJ1xuJy5qb2luKGV4cGVjdCkpCiAKKyAgICAgICAgdGV4dCA9ICJcdFRlc3RcdGRlZmF1bHRcdFx0dGFic2l6ZS4iCisgICAgICAgIGV4cGVjdCA9IFsiICAgICAgICBUZXN0ICAgIGRlZmF1bHQgICAgICAgICB0YWJzaXplLiJdCisgICAgICAgIHNlbGYuY2hlY2tfd3JhcCh0ZXh0LCA4MCwgZXhwZWN0KQorCisgICAgICAgIHRleHQgPSAiXHRUZXN0XHRjdXN0b21cdFx0dGFic2l6ZS4iCisgICAgICAgIGV4cGVjdCA9IFsiICAgIFRlc3QgICAgY3VzdG9tICAgICAgdGFic2l6ZS4iXQorICAgICAgICBzZWxmLmNoZWNrX3dyYXAodGV4dCwgODAsIGV4cGVjdCwgdGFic2l6ZT00KQorCiAgICAgZGVmIHRlc3RfZml4X3NlbnRlbmNlX2VuZGluZ3Moc2VsZik6CiAgICAgICAgIHdyYXBwZXIgPSBUZXh0V3JhcHBlcig2MCwgZml4X3NlbnRlbmNlX2VuZGluZ3M9VHJ1ZSkKIApAQCAtNjM0LDExICs2NDIsMTQ3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0LCBkZWRlbnQodGV4dCkpCiAKIAorIyBUZXN0IHRleHR3cmFwLmluZGVudAorY2xhc3MgSW5kZW50VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGhlIGV4YW1wbGVzIHVzZWQgZm9yIHRlc3RzLiBJZiBhbnkgb2YgdGhlc2UgY2hhbmdlLCB0aGUgZXhwZWN0ZWQKKyAgICAjIHJlc3VsdHMgaW4gdGhlIHZhcmlvdXMgdGVzdCBjYXNlcyBtdXN0IGFsc28gYmUgdXBkYXRlZC4KKyAgICAjIFRoZSByb3VuZHRyaXAgY2FzZXMgYXJlIHNlcGFyYXRlLCBiZWNhdXNlIHRleHR3cmFwLmRlZGVudCBkb2Vzbid0CisgICAgIyBoYW5kbGUgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICBST1VORFRSSVBfQ0FTRVMgPSAoCisgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG5UZXN0aW5nLiIsCisgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblxuVGVzdGluZy4iLAorICAgICAgIyBJbmNsdWRlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIGJsYW5rIGxpbmVzCisgICAgICAiXG5IaS5cblRoaXMgaXMgYSB0ZXN0LlxuVGVzdGluZy5cbiIsCisgICAgKQorICAgIENBU0VTID0gUk9VTkRUUklQX0NBU0VTICsgKAorICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICJIaS5cclxuVGhpcyBpcyBhIHRlc3QuXHJcblRlc3RpbmcuXHJcbiIsCisgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAiXG5IaS5cclxuVGhpcyBpcyBhIHRlc3QuXG5cclxuVGVzdGluZy5cclxuXG4iLAorICAgICkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIGluZGVudCBzaG91bGQgZG8gbm90aGluZyBpZiAncHJlZml4JyBpcyBlbXB0eS4KKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcnKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub21hcmdpbl9leHBsaWNpdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICAjIFRoZSBzYW1lIGFzIHRlc3RfaW5kZW50X25vbWFyZ2luLCBidXQgZXhwbGljaXRseSByZXF1ZXN0aW5nCisgICAgICAgICMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIGJ5IHBhc3NpbmcgTm9uZSBhcyB0aGUgcHJlZGljYXRlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJywgTm9uZSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfbm9tYXJnaW5fYWxsX2xpbmVzKHNlbGYpOgorICAgICAgICAjIFRoZSBzYW1lIGFzIHRlc3RfaW5kZW50X25vbWFyZ2luLCBidXQgdXNpbmcgdGhlIG9wdGlvbmFsCisgICAgICAgICMgcHJlZGljYXRlIGFyZ3VtZW50CisgICAgICAgIHByZWRpY2F0ZSA9IGxhbWJkYSBsaW5lOiBUcnVlCisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuQ0FTRVM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCAnJywgcHJlZGljYXRlKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9ub19saW5lcyhzZWxmKToKKyAgICAgICAgIyBFeHBsaWNpdGx5IHNraXAgaW5kZW50aW5nIGFueSBsaW5lcworICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogRmFsc2UKKyAgICAgICAgZm9yIHRleHQgaW4gc2VsZi5DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsICcgICAgJywgcHJlZGljYXRlKSwgdGV4dCkKKworICAgIGRlZiB0ZXN0X3JvdW5kdHJpcF9zcGFjZXMoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICcgICAgJykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX3RhYnMoc2VsZik6CisgICAgICAgICMgQSB3aGl0ZXNwYWNlIHByZWZpeCBzaG91bGQgcm91bmR0cmlwIHdpdGggZGVkZW50CisgICAgICAgIGZvciB0ZXh0IGluIHNlbGYuUk9VTkRUUklQX0NBU0VTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWRlbnQoaW5kZW50KHRleHQsICdcdFx0JykpLCB0ZXh0KQorCisgICAgZGVmIHRlc3Rfcm91bmR0cmlwX21peGVkKHNlbGYpOgorICAgICAgICAjIEEgd2hpdGVzcGFjZSBwcmVmaXggc2hvdWxkIHJvdW5kdHJpcCB3aXRoIGRlZGVudAorICAgICAgICBmb3IgdGV4dCBpbiBzZWxmLlJPVU5EVFJJUF9DQVNFUzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVkZW50KGluZGVudCh0ZXh0LCAnIFx0ICBcdCAnKSksIHRleHQpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHQgaW5kZW50aW5nIG9mIGxpbmVzIHRoYXQgYXJlIG5vdCB3aGl0ZXNwYWNlIG9ubHkKKyAgICAgICAgcHJlZml4ID0gJyAgJworICAgICAgICBleHBlY3RlZCA9ICgKKyAgICAgICAgICAjIEJhc2ljIHRlc3QgY2FzZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBhIGJsYW5rIGxpbmUKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG5cbiAgVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICJcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICJcbiAgSGkuXHJcbiAgVGhpcyBpcyBhIHRlc3QuXG5cclxuICBUZXN0aW5nLlxyXG5cbiIsCisgICAgICAgICkKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4KSwgZXhwZWN0KQorCisgICAgZGVmIHRlc3RfaW5kZW50X2V4cGxpY2l0X2RlZmF1bHQoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0IGluZGVudGluZyBvZiBsaW5lcyB0aGF0IGFyZSBub3Qgd2hpdGVzcGFjZSBvbmx5CisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiICBIaS5cbiAgVGhpcyBpcyBhIHRlc3QuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiXG4gIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgVGVzdGluZy5cbiIsCisgICAgICAgICAgIyBVc2UgV2luZG93cyBsaW5lIGVuZGluZ3MKKyAgICAgICAgICAiICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cclxuICBUZXN0aW5nLlxyXG4iLAorICAgICAgICAgICMgUGF0aG9sb2dpY2FsIGNhc2UKKyAgICAgICAgICAiXG4gIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxuXHJcbiAgVGVzdGluZy5cclxuXG4iLAorICAgICAgICApCisgICAgICAgIGZvciB0ZXh0LCBleHBlY3QgaW4gemlwKHNlbGYuQ0FTRVMsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZW50KHRleHQsIHByZWZpeCwgTm9uZSksIGV4cGVjdCkKKworICAgIGRlZiB0ZXN0X2luZGVudF9hbGxfbGluZXMoc2VsZik6CisgICAgICAgICMgQWRkICdwcmVmaXgnIHRvIGFsbCBsaW5lcywgaW5jbHVkaW5nIHdoaXRlc3BhY2Utb25seSBvbmVzLgorICAgICAgICBwcmVmaXggPSAnICAnCisgICAgICAgIGV4cGVjdGVkID0gKAorICAgICAgICAgICMgQmFzaWMgdGVzdCBjYXNlCisgICAgICAgICAgIiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLiIsCisgICAgICAgICAgIyBJbmNsdWRlIGEgYmxhbmsgbGluZQorICAgICAgICAgICIgIEhpLlxuICBUaGlzIGlzIGEgdGVzdC5cbiAgXG4gIFRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgYmxhbmsgbGluZXMKKyAgICAgICAgICAiICBcbiAgSGkuXG4gIFRoaXMgaXMgYSB0ZXN0LlxuICBUZXN0aW5nLlxuIiwKKyAgICAgICAgICAjIFVzZSBXaW5kb3dzIGxpbmUgZW5kaW5ncworICAgICAgICAgICIgIEhpLlxyXG4gIFRoaXMgaXMgYSB0ZXN0LlxyXG4gIFRlc3RpbmcuXHJcbiIsCisgICAgICAgICAgIyBQYXRob2xvZ2ljYWwgY2FzZQorICAgICAgICAgICIgIFxuICBIaS5cclxuICBUaGlzIGlzIGEgdGVzdC5cbiAgXHJcbiAgVGVzdGluZy5cclxuICBcbiIsCisgICAgICAgICkKKyAgICAgICAgcHJlZGljYXRlID0gbGFtYmRhIGxpbmU6IFRydWUKKyAgICAgICAgZm9yIHRleHQsIGV4cGVjdCBpbiB6aXAoc2VsZi5DQVNFUywgZXhwZWN0ZWQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmRlbnQodGV4dCwgcHJlZml4LCBwcmVkaWNhdGUpLCBleHBlY3QpCisKKyAgICBkZWYgdGVzdF9pbmRlbnRfZW1wdHlfbGluZXMoc2VsZik6CisgICAgICAgICMgQWRkICdwcmVmaXgnIHNvbGVseSB0byB3aGl0ZXNwYWNlLW9ubHkgbGluZXMuCisgICAgICAgIHByZWZpeCA9ICcgICcKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgIyBCYXNpYyB0ZXN0IGNhc2UKKyAgICAgICAgICAiSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuIiwKKyAgICAgICAgICAjIEluY2x1ZGUgYSBibGFuayBsaW5lCisgICAgICAgICAgIkhpLlxuVGhpcyBpcyBhIHRlc3QuXG4gIFxuVGVzdGluZy4iLAorICAgICAgICAgICMgSW5jbHVkZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBibGFuayBsaW5lcworICAgICAgICAgICIgIFxuSGkuXG5UaGlzIGlzIGEgdGVzdC5cblRlc3RpbmcuXG4iLAorICAgICAgICAgICMgVXNlIFdpbmRvd3MgbGluZSBlbmRpbmdzCisgICAgICAgICAgIkhpLlxyXG5UaGlzIGlzIGEgdGVzdC5cclxuVGVzdGluZy5cclxuIiwKKyAgICAgICAgICAjIFBhdGhvbG9naWNhbCBjYXNlCisgICAgICAgICAgIiAgXG5IaS5cclxuVGhpcyBpcyBhIHRlc3QuXG4gIFxyXG5UZXN0aW5nLlxyXG4gIFxuIiwKKyAgICAgICAgKQorICAgICAgICBwcmVkaWNhdGUgPSBsYW1iZGEgbGluZTogbm90IGxpbmUuc3RyaXAoKQorICAgICAgICBmb3IgdGV4dCwgZXhwZWN0IGluIHppcChzZWxmLkNBU0VTLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZGVudCh0ZXh0LCBwcmVmaXgsIHByZWRpY2F0ZSksIGV4cGVjdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoV3JhcFRlc3RDYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9uZ1dvcmRUZXN0Q2FzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGVudFRlc3RDYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZGVudFRlc3RDYXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVkZW50VGVzdENhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRlbnRUZXN0Q2FzZSkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRlZF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQppbmRleCA3NzkxOTM1Li4wNTI4YjEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZGVkX2ltcG9ydC5weQpAQCAtMTEsOCArMTEsOCBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIGltcG9ydF9tb2R1bGUsIHJ1bl91bml0dGVzdCwgVEVTVEZOCi10aHJlYWQgPSBpbXBvcnRfbW9kdWxlKCdfdGhyZWFkJykKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCAoCisgICAgdmVyYm9zZSwgaW1wb3J0X21vZHVsZSwgcnVuX3VuaXR0ZXN0LCBURVNURk4sIHJlYXBfdGhyZWFkcywgZm9yZ2V0LCB1bmxpbmspCiB0aHJlYWRpbmcgPSBpbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiBkZWYgdGFzayhOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMpOgpAQCAtMzAsNyArMzAsNyBAQAogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgZXJyb3JzLmFwcGVuZChlLndpdGhfdHJhY2ViYWNrKE5vbmUpKQogICAgIGZpbmFsbHk6Ci0gICAgICAgIGRvbmVfdGFza3MuYXBwZW5kKHRocmVhZC5nZXRfaWRlbnQoKSkKKyAgICAgICAgZG9uZV90YXNrcy5hcHBlbmQodGhyZWFkaW5nLmdldF9pZGVudCgpKQogICAgICAgICBmaW5pc2hlZCA9IGxlbihkb25lX3Rhc2tzKSA9PSBOCiAgICAgICAgIGlmIGZpbmlzaGVkOgogICAgICAgICAgICAgZG9uZS5zZXQoKQpAQCAtNjIsNyArNjIsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5udW1jYWxscyA9IDAKICAgICAgICAgc2VsZi54ID0gMAotICAgICAgICBzZWxmLmxvY2sgPSB0aHJlYWQuYWxsb2NhdGVfbG9jaygpCisgICAgICAgIHNlbGYubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKIAogICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lLCBwYXRoPU5vbmUpOgogICAgICAgICAjIFNpbXVsYXRlIHNvbWUgdGhyZWFkLXVuc2FmZSBiZWhhdmlvdXIuIElmIGNhbGxzIHRvIGZpbmRfbW9kdWxlKCkKQEAgLTExMyw3ICsxMTMsOSBAQAogICAgICAgICAgICAgZG9uZV90YXNrcyA9IFtdCiAgICAgICAgICAgICBkb25lLmNsZWFyKCkKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKE4pOgotICAgICAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKHRhc2ssIChOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKKyAgICAgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9dGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShOLCBkb25lLCBkb25lX3Rhc2tzLCBlcnJvcnMsKSkKKyAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgICAgIGRvbmUud2FpdCg2MCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZXJyb3JzKQogICAgICAgICAgICAgaWYgdmVyYm9zZToKQEAgLTEyNCw3ICsxMjYsNyBAQAogCiAgICAgZGVmIHRlc3RfcGFyYWxsZWxfbWV0YV9wYXRoKHNlbGYpOgogICAgICAgICBmaW5kZXIgPSBGaW5kZXIoKQotICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChmaW5kZXIpCisgICAgICAgIHN5cy5tZXRhX3BhdGguaW5zZXJ0KDAsIGZpbmRlcikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5jaGVja19wYXJhbGxlbF9tb2R1bGVfaW5pdCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZmluZGVyLm51bWNhbGxzLCAwKQpAQCAtMTQzLDcgKzE0NSw3IEBACiAgICAgICAgIGRlZiBwYXRoX2hvb2socGF0aCk6CiAgICAgICAgICAgICBmaW5kZXIuZmluZF9tb2R1bGUoJycpCiAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcgotICAgICAgICBzeXMucGF0aF9ob29rcy5hcHBlbmQocGF0aF9ob29rKQorICAgICAgICBzeXMucGF0aF9ob29rcy5pbnNlcnQoMCwgcGF0aF9ob29rKQogICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChmbHVzaGluZ19maW5kZXIpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgRmx1c2ggdGhlIGNhY2hlIGEgZmlyc3QgdGltZQpAQCAtMTg1LDcgKzE4Nyw3IEBACiAgICAgICAgICAgICBjb250ZW50cyA9IGNvbnRlbnRzICUgeydkZWxheSc6IGRlbGF5fQogICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihURVNURk4sIG5hbWUgKyAiLnB5IiksICJ3YiIpIGFzIGY6CiAgICAgICAgICAgICAgICAgZi53cml0ZShjb250ZW50cy5lbmNvZGUoJ3V0Zi04JykpCi0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLm1vZHVsZXMucG9wLCBuYW1lLCBOb25lKQorICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZvcmdldCwgbmFtZSkKIAogICAgICAgICByZXN1bHRzID0gW10KICAgICAgICAgZGVmIGltcG9ydF9hYigpOgpAQCAtMjAyLDkgKzIwNCwzNyBAQAogICAgICAgICB0Mi5qb2luKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocmVzdWx0cyksIHsnYScsICdiJ30pCiAKKyAgICBkZWYgdGVzdF9zaWRlX2VmZmVjdF9pbXBvcnQoc2VsZik6CisgICAgICAgIGNvZGUgPSAiIiJpZiAxOgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgZGVmIHRhcmdldCgpOgorICAgICAgICAgICAgICAgIGltcG9ydCByYW5kb20KKyAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD10YXJnZXQpCisgICAgICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgICAgIHQuam9pbigpIiIiCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5jdXJkaXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMucGF0aC5yZW1vdmUsIG9zLmN1cmRpcikKKyAgICAgICAgZmlsZW5hbWUgPSBURVNURk4gKyAiLnB5IgorICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGNvZGUuZW5jb2RlKCd1dGYtOCcpKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZvcmdldCwgVEVTVEZOKQorICAgICAgICBfX2ltcG9ydF9fKFRFU1RGTikKIAorCitAcmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgcnVuX3VuaXR0ZXN0KFRocmVhZGVkSW1wb3J0VGVzdHMpCisgICAgb2xkX3N3aXRjaGludGVydmFsID0gTm9uZQorICAgIHRyeToKKyAgICAgICAgb2xkX3N3aXRjaGludGVydmFsID0gc3lzLmdldHN3aXRjaGludGVydmFsKCkKKyAgICAgICAgc3lzLnNldHN3aXRjaGludGVydmFsKDFlLTUpCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICBwYXNzCisgICAgdHJ5OgorICAgICAgICBydW5fdW5pdHRlc3QoVGhyZWFkZWRJbXBvcnRUZXN0cykKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBvbGRfc3dpdGNoaW50ZXJ2YWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzeXMuc2V0c3dpdGNoaW50ZXJ2YWwob2xkX3N3aXRjaGludGVydmFsKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IDE3YmU4NGIuLmJiOGQ5YjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC0xNzUsNyArMTc1LDcgQEAKICAgICAgICAgZXhjZXB0aW9uID0gY3R5cGVzLnB5X29iamVjdChBc3luY0V4YykKIAogICAgICAgICAjIEZpcnN0IGNoZWNrIGl0IHdvcmtzIHdoZW4gc2V0dGluZyB0aGUgZXhjZXB0aW9uIGZyb20gdGhlIHNhbWUgdGhyZWFkLgotICAgICAgICB0aWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgIHRpZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlc3VsdCA9IHNldF9hc3luY19leGMoY3R5cGVzLmNfbG9uZyh0aWQpLCBleGNlcHRpb24pCkBAIC0yMDQsNyArMjA0LDcgQEAKIAogICAgICAgICBjbGFzcyBXb3JrZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAgICAgICAgIHNlbGYuaWQgPSBfdGhyZWFkLmdldF9pZGVudCgpCisgICAgICAgICAgICAgICAgc2VsZi5pZCA9IHRocmVhZGluZy5nZXRfaWRlbnQoKQogICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAgICAgdHJ5OgpAQCAtNDA5LDYgKzQwOSwxNCBAQAogICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdkYWVtb24nIGluIHJlcHIodCkpCiAKKyAgICBkZWYgdGVzdF9kZWFtb25fcGFyYW0oc2VsZik6CisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh0LmRhZW1vbikKKyAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQoZGFlbW9uPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHQuZGFlbW9uKQorICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChkYWVtb249VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHQuZGFlbW9uKQorCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2ZvcmsnKSwgJ3Rlc3QgbmVlZHMgZm9yaygpJykKICAgICBkZWYgdGVzdF9kdW1teV90aHJlYWRfYWZ0ZXJfZm9yayhzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTQzMDg6IGEgZHVtbXkgdGhyZWFkIGluIHRoZSBhY3RpdmUgbGlzdCBkb2Vzbid0IG1lc3MgdXAKQEAgLTc0Miw2ICs3NTAsMTAgQEAKICAgICAgICAgdGhyZWFkLnN0YXJ0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZXRhdHRyLCB0aHJlYWQsICJkYWVtb24iLCBUcnVlKQogCisgICAgZGVmIHRlc3RfcmVsZWFzaW5nX3VuYWNxdWlyZWRfbG9jayhzZWxmKToKKyAgICAgICAgbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBsb2NrLnJlbGVhc2UpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICd0ZXN0IG1hY29zeCBwcm9ibGVtJykKICAgICBkZWYgdGVzdF9yZWN1cnNpb25fbGltaXQoc2VsZik6CiAgICAgICAgICMgSXNzdWUgOTY3MApAQCAtODAzLDYgKzgxNSw3IEBACiBjbGFzcyBCYXJyaWVyVGVzdHMobG9ja190ZXN0cy5CYXJyaWVyVGVzdHMpOgogICAgIGJhcnJpZXJ0eXBlID0gc3RhdGljbWV0aG9kKHRocmVhZGluZy5CYXJyaWVyKQogCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KExvY2tUZXN0cywgUHlSTG9ja1Rlc3RzLCBDUkxvY2tUZXN0cywgRXZlbnRUZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbkFzUkxvY2tUZXN0cywgQ29uZGl0aW9uVGVzdHMsCkBAIC04MTAsNyArODIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZFRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhyZWFkSm9pbk9uU2h1dGRvd24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJlYWRpbmdFeGNlcHRpb25UZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhcnJpZXJUZXN0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFycmllclRlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CmluZGV4IGUwYWYzMWQuLmY5NzVhNzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKQEAgLTE0LDEwICsxNCw4IEBACiBwcm9jZXNzX3BpZCA9IG9zLmdldHBpZCgpCiBzaWduYWxsZWRfYWxsPXRocmVhZC5hbGxvY2F0ZV9sb2NrKCkKIAotIyBJc3N1ZSAjMTEyMjM6IExvY2tzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIG11dGV4IGFuZCBhIGNvbmRpdGlvbiB2YXJpYWJsZSBvZgotIyB0aGUgcHRocmVhZCBsaWJyYXJ5IG9uIEZyZWVCU0Q2LiBQT1NJWCBjb25kaXRpb24gdmFyaWFibGVzIGNhbm5vdCBiZQotIyBpbnRlcnJ1cHRlZCBieSBzaWduYWxzIChzZWUgcHRocmVhZF9jb25kX3dhaXQgbWFudWFsIHBhZ2UpLgotVVNJTkdfUFRIUkVBRF9DT05EID0gKHN5cy5wbGF0Zm9ybSA9PSAnZnJlZWJzZDYnKQorVVNJTkdfUFRIUkVBRF9DT05EID0gKHN5cy50aHJlYWRfaW5mby5uYW1lID09ICdwdGhyZWFkJworICAgICAgICAgICAgICAgICAgICAgIGFuZCBzeXMudGhyZWFkX2luZm8ubG9jayA9PSAnbXV0ZXgrY29uZCcpCiAKIGRlZiByZWdpc3RlclNpZ25hbHMoZm9yX3VzcjEsIGZvcl91c3IyLCBmb3JfYWxybSk6CiAgICAgdXNyMSA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIGZvcl91c3IxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5IGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CmluZGV4IGNlNTdkODcuLjYzZTE0NTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKQEAgLTQsNyArNCwxNyBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgcGxhdGZvcm0KK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorCisjIE1heCB5ZWFyIGlzIG9ubHkgbGltaXRlZCBieSB0aGUgc2l6ZSBvZiBDIGludC4KK1NJWkVPRl9JTlQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NJWkVPRl9JTlQnKSBvciA0CitUSU1FX01BWFlFQVIgPSAoMSA8PCA4ICogU0laRU9GX0lOVCAtIDEpIC0gMQorVElNRV9NSU5ZRUFSID0gLVRJTUVfTUFYWUVBUiAtIDEKKwogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNyw5ICsyNyw1MyBAQAogICAgICAgICB0aW1lLnRpbWV6b25lCiAgICAgICAgIHRpbWUudHpuYW1lCiAKKyAgICBkZWYgdGVzdF90aW1lKHNlbGYpOgorICAgICAgICB0aW1lLnRpbWUoKQorICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygndGltZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5mby5tb25vdG9uaWMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLmFkanVzdGFibGUpCisKICAgICBkZWYgdGVzdF9jbG9jayhzZWxmKToKICAgICAgICAgdGltZS5jbG9jaygpCiAKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ2Nsb2NrJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8uYWRqdXN0YWJsZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ2Nsb2NrX2dldHRpbWUnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLmNsb2NrX2dldHRpbWUoKScpCisgICAgZGVmIHRlc3RfY2xvY2tfcmVhbHRpbWUoc2VsZik6CisgICAgICAgIHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfZ2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfZ2V0dGltZSgpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdDTE9DS19NT05PVE9OSUMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLkNMT0NLX01PTk9UT05JQycpCisgICAgZGVmIHRlc3RfY2xvY2tfbW9ub3RvbmljKHNlbGYpOgorICAgICAgICBhID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKQorICAgICAgICBiID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfTU9OT1RPTklDKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChhLCBiKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfZ2V0cmVzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGltZS5jbG9ja19nZXRyZXMoKScpCisgICAgZGVmIHRlc3RfY2xvY2tfZ2V0cmVzKHNlbGYpOgorICAgICAgICByZXMgPSB0aW1lLmNsb2NrX2dldHJlcyh0aW1lLkNMT0NLX1JFQUxUSU1FKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIocmVzLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHJlcywgMS4wKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfc2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfc2V0dGltZSgpJykKKyAgICBkZWYgdGVzdF9jbG9ja19zZXR0aW1lKHNlbGYpOgorICAgICAgICB0ID0gdGltZS5jbG9ja19nZXR0aW1lKHRpbWUuQ0xPQ0tfUkVBTFRJTUUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FLCB0KQorICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGlmIGhhc2F0dHIodGltZSwgJ0NMT0NLX01PTk9UT05JQycpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSwgdGltZS5DTE9DS19NT05PVE9OSUMsIDApCisKICAgICBkZWYgdGVzdF9jb252ZXJzaW9ucyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLmN0aW1lKHNlbGYudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZS5hc2N0aW1lKHRpbWUubG9jYWx0aW1lKHNlbGYudCkpKQpAQCAtMjcsNiArODEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLnQpKQogCiAgICAgZGVmIHRlc3Rfc2xlZXAoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuc2xlZXAsIC0yKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB0aW1lLnNsZWVwLCAtMSkKICAgICAgICAgdGltZS5zbGVlcCgxLjIpCiAKICAgICBkZWYgdGVzdF9zdHJmdGltZShzZWxmKToKQEAgLTQ3LDI4ICsxMDMsMzQgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZSgnJWYnKQogCi0gICAgZGVmIF9ib3VuZHNfY2hlY2tpbmcoc2VsZiwgZnVuYz10aW1lLnN0cmZ0aW1lKToKKyAgICBkZWYgX2JvdW5kc19jaGVja2luZyhzZWxmLCBmdW5jKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzdHJmdGltZSgpIGNoZWNrcyB0aGUgYm91bmRzIG9mIHRoZSB2YXJpb3VzIHBhcnRzCi0gICAgICAgICNvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KKyAgICAgICAgIyBvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KIAogICAgICAgICAjIFRoZSB5ZWFyIGZpZWxkIGlzIHRlc3RlZCBieSBvdGhlciB0ZXN0IGNhc2VzIGFib3ZlCiAKICAgICAgICAgIyBDaGVjayBtb250aCBbMSwgMTJdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMTIsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgLTEsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMTMsIDEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDaGVjayBkYXkgb2YgbW9udGggWzEsIDMxXSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAxLCAwLCAwLCAwLCAwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDMxLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIC0xLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDMyLCAwLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgaG91ciBbMCwgMjNdCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDIzLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIC0xLCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDI0LCAwLCAwLCAwLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgbWludXRlIFswLCA1OV0KKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgNTksIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgLTEsIDAsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKQEAgLTc4LDE1ICsxNDAsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgLTEsIDAsIDEsIC0xKSkKICAgICAgICAgIyBDOTkgb25seSByZXF1aXJlcyBhbGxvd2luZyBmb3Igb25lIGxlYXAgc2Vjb25kLCBidXQgUHl0aG9uJ3MgZG9jcyBzYXkKICAgICAgICAgIyBhbGxvdyB0d28gbGVhcCBzZWNvbmRzICgwLi42MSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgNjAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgNjEsIDAsIDEsIC0xKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMCwgMCwgNjIsIDAsIDEsIC0xKSkKICAgICAgICAgIyBObyBjaGVjayBmb3IgdXBwZXItYm91bmQgZGF5IG9mIHdlZWs7CiAgICAgICAgICMgIHZhbHVlIGZvcmNlZCBpbnRvIHJhbmdlIGJ5IGEgYGAlIDdgYCBjYWxjdWxhdGlvbi4KICAgICAgICAgIyBTdGFydCBjaGVjayBhdCAtMiBzaW5jZSBnZXR0bWFyZygpIGluY3JlbWVudHMgdmFsdWUgYmVmb3JlIHRha2luZwogICAgICAgICAjICBtb2R1bG8uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgLTEsIDEsIC0xKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgKzYsIDEsIC0xKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDAsIC0yLCAxLCAtMSkpCiAgICAgICAgICMgQ2hlY2sgZGF5IG9mIHRoZSB5ZWFyIFsxLCAzNjZdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMCwgMCwgMCwgMCwgMzY2LCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIC0xLCAtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCkBAIC05NiwxMiArMTY0LDEzIEBACiAgICAgICAgIHNlbGYuX2JvdW5kc19jaGVja2luZyhsYW1iZGEgdHVwOiB0aW1lLnN0cmZ0aW1lKCcnLCB0dXApKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF92YWx1ZXNfZm9yX3plcm8oc2VsZik6Ci0gICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdXNpbmcgYWxsIHplcm9zIHVzZXMgdGhlIHByb3BlciBkZWZhdWx0IHZhbHVlcy4KLSAgICAgICAgIyBObyB0ZXN0IGZvciBkYXlsaWdodCBzYXZpbmdzIHNpbmNlIHN0cmZ0aW1lKCkgZG9lcyBub3QgY2hhbmdlIG91dHB1dAotICAgICAgICAjIGJhc2VkIG9uIGl0cyB2YWx1ZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB1c2luZyBhbGwgemVyb3MgdXNlcyB0aGUgcHJvcGVyIGRlZmF1bHQKKyAgICAgICAgIyB2YWx1ZXMuICBObyB0ZXN0IGZvciBkYXlsaWdodCBzYXZpbmdzIHNpbmNlIHN0cmZ0aW1lKCkgZG9lcworICAgICAgICAjIG5vdCBjaGFuZ2Ugb3V0cHV0IGJhc2VkIG9uIGl0cyB2YWx1ZSBhbmQgbm8gdGVzdCBmb3IgeWVhcgorICAgICAgICAjIGJlY2F1c2Ugc3lzdGVtcyB2YXJ5IGluIHRoZWlyIHN1cHBvcnQgZm9yIHllYXIgMC4KICAgICAgICAgZXhwZWN0ZWQgPSAiMjAwMCAwMSAwMSAwMCAwMCAwMCAxIDAwMSIKICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICByZXN1bHQgPSB0aW1lLnN0cmZ0aW1lKCIlWSAlbSAlZCAlSCAlTSAlUyAldyAlaiIsICgwLCkqOSkKKyAgICAgICAgICAgIHJlc3VsdCA9IHRpbWUuc3RyZnRpbWUoIiVZICVtICVkICVIICVNICVTICV3ICVqIiwgKDIwMDAsKSsoMCwpKjgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlc3VsdCkKIAogICAgIGRlZiB0ZXN0X3N0cnB0aW1lKHNlbGYpOgpAQCAtMTI4LDExICsxOTcsMTMgQEAKICAgICAgICAgdGltZS5hc2N0aW1lKHRpbWUuZ210aW1lKHNlbGYudCkpCiAKICAgICAgICAgIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCi0gICAgICAgIHNpemVvZl9pbnQgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NJWkVPRl9JTlQnKSBvciA0Ci0gICAgICAgIGJpZ3llYXIgPSAoMSA8PCA4ICogc2l6ZW9mX2ludCAtIDEpIC0gMQotICAgICAgICBhc2MgPSB0aW1lLmFzY3RpbWUoKGJpZ3llYXIsIDYsIDEpICsgKDAsKSo2KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzY1stbGVuKHN0cihiaWd5ZWFyKSk6XSwgc3RyKGJpZ3llYXIpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsIChiaWd5ZWFyICsgMSwpICsgKDAsKSo4KQorICAgICAgICBmb3IgYmlneWVhciBpbiBUSU1FX01BWFlFQVIsIFRJTUVfTUlOWUVBUjoKKyAgICAgICAgICAgIGFzYyA9IHRpbWUuYXNjdGltZSgoYmlneWVhciwgNiwgMSkgKyAoMCwpICogNikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNjWy1sZW4oc3RyKGJpZ3llYXIpKTpdLCBzdHIoYmlneWVhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRpbWUuYXNjdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKFRJTUVfTUFYWUVBUiArIDEsKSArICgwLCkgKiA4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChUSU1FX01JTllFQVIgLSAxLCkgKyAoMCwpICogOCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAoKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsICgwLCkgKiAxMCkKQEAgLTE1NSw4ICsyMjYsOCBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWUuY3RpbWUodGVzdHZhbClbMjA6XSwgc3RyKHllYXIpKQogCi0gICAgQHVuaXR0ZXN0LnNraXBJZihub3QgaGFzYXR0cih0aW1lLCAidHpzZXQiKSwKLSAgICAgICAgInRpbWUgbW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgdHpzZXQiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgInR6c2V0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUgbW9kdWxlIGhhcyBubyBhdHRyaWJ1dGUgdHpzZXQiKQogICAgIGRlZiB0ZXN0X3R6c2V0KHNlbGYpOgogCiAgICAgICAgIGZyb20gb3MgaW1wb3J0IGVudmlyb24KQEAgLTIwOCwxMSArMjc5LDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHRpbWUuZ210aW1lKHhtYXMyMDAyKSwgdGltZS5sb2NhbHRpbWUoeG1hczIwMDIpKQogCiAgICAgICAgICAgICAjIElzc3VlICMxMTg4NjogQXVzdHJhbGlhbiBFYXN0ZXJuIFN0YW5kYXJkIFRpbWUgKFVUQysxMCkgaXMgY2FsbGVkCi0gICAgICAgICAgICAjICJFU1QiIChhcyBFYXN0ZXJuIFN0YW5kYXJkIFRpbWUsIFVUQy01KSBpbnN0ZWFkIG9mICJBRVNUIiBvbiBzb21lCi0gICAgICAgICAgICAjIG9wZXJhdGluZyBzeXN0ZW1zIChlLmcuIEZyZWVCU0QpLCB3aGljaCBpcyB3cm9uZy4gU2VlIGZvciBleGFtcGxlCi0gICAgICAgICAgICAjIHRoaXMgYnVnOiBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTM4MTAKKyAgICAgICAgICAgICMgIkVTVCIgKGFzIEVhc3Rlcm4gU3RhbmRhcmQgVGltZSwgVVRDLTUpIGluc3RlYWQgb2YgIkFFU1QiCisgICAgICAgICAgICAjIChub24tRFNUIHRpbWV6b25lKSwgYW5kICJFRFQiIGluc3RlYWQgb2YgIkFFRFQiIChEU1QgdGltZXpvbmUpLAorICAgICAgICAgICAgIyBvbiBzb21lIG9wZXJhdGluZyBzeXN0ZW1zIChlLmcuIEZyZWVCU0QpLCB3aGljaCBpcyB3cm9uZy4gU2VlIGZvcgorICAgICAgICAgICAgIyBleGFtcGxlIHRoaXMgYnVnOgorICAgICAgICAgICAgIyBodHRwOi8vYnVncy5kZWJpYW4ub3JnL2NnaS1iaW4vYnVncmVwb3J0LmNnaT9idWc9OTM4MTAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGltZS50em5hbWVbMF0sICgnQUVTVCcgJ0VTVCcpLCB0aW1lLnR6bmFtZVswXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lLnR6bmFtZVsxXSA9PSAnQUVEVCcsIHN0cih0aW1lLnR6bmFtZVsxXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodGltZS50em5hbWVbMV0gaW4gKCdBRURUJywgJ0VEVCcpLCBzdHIodGltZS50em5hbWVbMV0pKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odGltZS50em5hbWUpLCAyKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLmRheWxpZ2h0LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLnRpbWV6b25lLCAtMzYwMDApCkBAIC0yMzUsNyArMzA4LDcgQEAKICAgICAgICAgIyByZXN1bHRzISkuCiAgICAgICAgIGZvciBmdW5jIGluIHRpbWUuY3RpbWUsIHRpbWUuZ210aW1lLCB0aW1lLmxvY2FsdGltZToKICAgICAgICAgICAgIGZvciB1bnJlYXNvbmFibGUgaW4gLTFlMjAwLCAxZTIwMDoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLCB1bnJlYXNvbmFibGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgZnVuYywgdW5yZWFzb25hYmxlKQogCiAgICAgZGVmIHRlc3RfY3RpbWVfd2l0aG91dF9hcmcoc2VsZik6CiAgICAgICAgICMgTm90IHN1cmUgaG93IHRvIGNoZWNrIHRoZSB2YWx1ZXMsIHNpbmNlIHRoZSBjbG9jayBjb3VsZCB0aWNrCkBAIC0yNTgsNiArMzMxLDExNyBAQAogICAgICAgICB0MSA9IHRpbWUubWt0aW1lKGx0MSkKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCh0MSwgdDAsIGRlbHRhPTAuMikKIAorICAgIGRlZiB0ZXN0X21rdGltZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTcyNjY4NworICAgICAgICBmb3IgdCBpbiAoLTIsIC0xLCAwLCAxKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKHQpCisgICAgICAgICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLm1rdGltZSh0dCksIHQpCisKKyAgICAjIElzc3VlICMxMzMwOTogcGFzc2luZyBleHRyZW1lIHZhbHVlcyB0byBta3RpbWUoKSBvciBsb2NhbHRpbWUoKQorICAgICMgYm9ya3MgdGhlIGdsaWJjJ3MgaW50ZXJuYWwgdGltZXpvbmUgZGF0YS4KKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhwbGF0Zm9ybS5saWJjX3ZlcigpWzBdICE9ICdnbGliYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpc2FibGVkIGJlY2F1c2Ugb2YgYSBidWcgaW4gZ2xpYmMuIElzc3VlICMxMzMwOSIpCisgICAgZGVmIHRlc3RfbWt0aW1lX2Vycm9yKHNlbGYpOgorICAgICAgICAjIEl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsaWFibHkgbWFrZSBta3RpbWUgcmV0dXJuIGVycm9yCisgICAgICAgICMgb24gYWxsIHBsYXRmb20uICBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgZXhjZXB0aW9uCisgICAgICAgICMgdGhhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZCBmb3IgYW4gZXh0cmVtZSB2YWx1ZS4KKyAgICAgICAgdHQgPSB0aW1lLmdtdGltZShzZWxmLnQpCisgICAgICAgIHR6bmFtZSA9IHRpbWUuc3RyZnRpbWUoJyVaJywgdHQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwodHpuYW1lLCAnTE1UJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGltZS5ta3RpbWUoKC0xLCAxLCAxLCAwLCAwLCAwLCAtMSwgLTEsIC0xKSkKKyAgICAgICAgZXhjZXB0IE92ZXJmbG93RXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGltZS5zdHJmdGltZSgnJVonLCB0dCksIHR6bmFtZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIodGltZSwgJ21vbm90b25pYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUubW9ub3RvbmljJykKKyAgICBkZWYgdGVzdF9tb25vdG9uaWMoc2VsZik6CisgICAgICAgIHQxID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAgICAgdDIgPSB0aW1lLm1vbm90b25pYygpCisgICAgICAgIGR0ID0gdDIgLSB0MQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodDIsIHQxKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGR0LCAwLjEsIGRlbHRhPTAuMikKKworICAgICAgICBpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbygnbW9ub3RvbmljJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluZm8ubW9ub3RvbmljKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluZm8uYWRqdXN0YWJsZSkKKworICAgIGRlZiB0ZXN0X3BlcmZfY291bnRlcihzZWxmKToKKyAgICAgICAgdGltZS5wZXJmX2NvdW50ZXIoKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc190aW1lKHNlbGYpOgorICAgICAgICAjIHByb2Nlc3NfdGltZSgpIHNob3VsZCBub3QgaW5jbHVkZSB0aW1lIHNwZW5kIGR1cmluZyBhIHNsZWVwCisgICAgICAgIHN0YXJ0ID0gdGltZS5wcm9jZXNzX3RpbWUoKQorICAgICAgICB0aW1lLnNsZWVwKDAuMTAwKQorICAgICAgICBzdG9wID0gdGltZS5wcm9jZXNzX3RpbWUoKQorICAgICAgICAjIHVzZSAyMCBtcyBiZWNhdXNlIHByb2Nlc3NfdGltZSgpIGhhcyB1c3VhbGx5IGEgcmVzb2x1dGlvbiBvZiAxNSBtcworICAgICAgICAjIG9uIFdpbmRvd3MKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHN0b3AgLSBzdGFydCwgMC4wMjApCisKKyAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8oJ3Byb2Nlc3NfdGltZScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbmZvLm1vbm90b25pYykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpbmZvLmFkanVzdGFibGUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKHRpbWUsICdtb25vdG9uaWMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCB0aW1lLm1vbm90b25pYycpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cih0aW1lLCAnY2xvY2tfc2V0dGltZScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHRpbWUuY2xvY2tfc2V0dGltZScpCisgICAgZGVmIHRlc3RfbW9ub3RvbmljX3NldHRpbWUoc2VsZik6CisgICAgICAgIHQxID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICByZWFsdGltZSA9IHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FKQorICAgICAgICAjIGp1bXAgYmFja3dhcmQgd2l0aCBhbiBvZmZzZXQgb2YgMSBob3VyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRpbWUuY2xvY2tfc2V0dGltZSh0aW1lLkNMT0NLX1JFQUxUSU1FLCByZWFsdGltZSAtIDM2MDApCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdChlcnIpCisgICAgICAgIHQyID0gdGltZS5tb25vdG9uaWMoKQorICAgICAgICB0aW1lLmNsb2NrX3NldHRpbWUodGltZS5DTE9DS19SRUFMVElNRSwgcmVhbHRpbWUpCisgICAgICAgICMgbW9ub3RvbmljIG11c3Qgbm90IGJlIGFmZmVjdGVkIGJ5IHN5c3RlbSBjbG9jayB1cGRhdGVzCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHQyLCB0MSkKKworICAgIGRlZiB0ZXN0X2xvY2FsdGltZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICAjIElzc3VlICMxMzg0NzogY2hlY2sgZm9yIGxvY2FsdGltZSgpIGZhaWx1cmUKKyAgICAgICAgaW52YWxpZF90aW1lX3QgPSBOb25lCisgICAgICAgIGZvciB0aW1lX3QgaW4gKC0xLCAyKiozMCwgMioqMzMsIDIqKjYwKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0aW1lLmxvY2FsdGltZSh0aW1lX3QpCisgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJuZWVkIDY0LWJpdCB0aW1lX3QiKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgaW52YWxpZF90aW1lX3QgPSB0aW1lX3QKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBpbnZhbGlkX3RpbWVfdCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidW5hYmxlIHRvIGZpbmQgYW4gaW52YWxpZCB0aW1lX3QgdmFsdWUiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHRpbWUubG9jYWx0aW1lLCBpbnZhbGlkX3RpbWVfdCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgdGltZS5jdGltZSwgaW52YWxpZF90aW1lX3QpCisKKyAgICBkZWYgdGVzdF9nZXRfY2xvY2tfaW5mbyhzZWxmKToKKyAgICAgICAgY2xvY2tzID0gWydjbG9jaycsICdwZXJmX2NvdW50ZXInLCAncHJvY2Vzc190aW1lJywgJ3RpbWUnXQorICAgICAgICBpZiBoYXNhdHRyKHRpbWUsICdtb25vdG9uaWMnKToKKyAgICAgICAgICAgIGNsb2Nrcy5hcHBlbmQoJ21vbm90b25pYycpCisKKyAgICAgICAgZm9yIG5hbWUgaW4gY2xvY2tzOgorICAgICAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8obmFtZSkKKyAgICAgICAgICAgICNzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mbywgZGljdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLmltcGxlbWVudGF0aW9uLCBzdHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGluZm8uaW1wbGVtZW50YXRpb24sICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8ubW9ub3RvbmljLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm8ucmVzb2x1dGlvbiwgZmxvYXQpCisgICAgICAgICAgICAjIDAuMCA8IHJlc29sdXRpb24gPD0gMS4wCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoaW5mby5yZXNvbHV0aW9uLCAwLjApCisgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChpbmZvLnJlc29sdXRpb24sIDEuMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvLmFkanVzdGFibGUsIGJvb2wpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgdGltZS5nZXRfY2xvY2tfaW5mbywgJ3h4eCcpCisKKwogY2xhc3MgVGVzdExvY2FsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLm9sZGxvYyA9IGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCkKQEAgLTI3NiwxOSArNDYwLDEyIEBACiAKIAogY2xhc3MgX0Jhc2VZZWFyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgYWNjZXB0MmR5ZWFyID0gTm9uZQotCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLnNhdmVkX2FjY2VwdDJkeWVhciA9IHRpbWUuYWNjZXB0MmR5ZWFyCi0gICAgICAgIHRpbWUuYWNjZXB0MmR5ZWFyID0gc2VsZi5hY2NlcHQyZHllYXIKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgdGltZS5hY2NlcHQyZHllYXIgPSBzZWxmLnNhdmVkX2FjY2VwdDJkeWVhcgotCiAgICAgZGVmIHllYXJzdHIoc2VsZiwgeSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQogCiBjbGFzcyBfVGVzdEFzY3RpbWVZZWFyOgorICAgIF9mb3JtYXQgPSAnJWQnCisKICAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKICAgICAgICAgcmV0dXJuIHRpbWUuYXNjdGltZSgoeSwpICsgKDAsKSAqIDgpLnNwbGl0KClbLTFdCiAKQEAgLTI5OCwxMTQgKzQ3NSwyMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoMTIzNDU2Nzg5KSwgJzEyMzQ1Njc4OScpCiAKIGNsYXNzIF9UZXN0U3RyZnRpbWVZZWFyOgotICAgIGRlZiB5ZWFyc3RyKHNlbGYsIHkpOgotICAgICAgICByZXR1cm4gdGltZS5zdHJmdGltZSgnJVknLCAoeSwpICsgKDAsKSAqIDgpLnNwbGl0KClbLTFdCiAKLSAgICBkZWYgdGVzdF9sYXJnZV95ZWFyKHNlbGYpOgorICAgICMgSXNzdWUgMTMzMDU6ICBGb3IgeWVhcnMgPCAxMDAwLCB0aGUgdmFsdWUgaXMgbm90IGFsd2F5cworICAgICMgcGFkZGVkIHRvIDQgZGlnaXRzIGFjcm9zcyBwbGF0Zm9ybXMuICBUaGUgQyBzdGFuZGFyZAorICAgICMgYXNzdW1lcyB5ZWFyID49IDE5MDAsIHNvIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIG51bWJlcgorICAgICMgb2YgZGlnaXRzLgorCisgICAgaWYgdGltZS5zdHJmdGltZSgnJVknLCAoMSwpICsgKDAsKSAqIDgpID09ICcwMDAxJzoKKyAgICAgICAgX2Zvcm1hdCA9ICclMDRkJworICAgIGVsc2U6CisgICAgICAgIF9mb3JtYXQgPSAnJWQnCisKKyAgICBkZWYgeWVhcnN0cihzZWxmLCB5KToKKyAgICAgICAgcmV0dXJuIHRpbWUuc3RyZnRpbWUoJyVZJywgKHksKSArICgwLCkgKiA4KQorCisgICAgZGVmIHRlc3RfNGR5ZWFyKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgd2UgY2FuIHJldHVybiB0aGUgemVybyBwYWRkZWQgdmFsdWUuCisgICAgICAgIGlmIHNlbGYuX2Zvcm1hdCA9PSAnJTA0ZCc6CisgICAgICAgICAgICBzZWxmLnRlc3RfeWVhcignJTA0ZCcpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWYgeWVhcjRkKHkpOgorICAgICAgICAgICAgICAgIHJldHVybiB0aW1lLnN0cmZ0aW1lKCclNFknLCAoeSwpICsgKDAsKSAqIDgpCisgICAgICAgICAgICBzZWxmLnRlc3RfeWVhcignJTA0ZCcsIGZ1bmM9eWVhcjRkKQorCisgICAgZGVmIHNraXBfaWZfbm90X3N1cHBvcnRlZCh5KToKKyAgICAgICAgbXNnID0gInN0cmZ0aW1lKCkgaXMgbGltaXRlZCB0byBbMTsgOTk5OV0gd2l0aCBWaXN1YWwgU3R1ZGlvIgogICAgICAgICAjIENoZWNrIHRoYXQgaXQgZG9lc24ndCBjcmFzaCBmb3IgeWVhciA+IDk5OTkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGV4dCA9IHNlbGYueWVhcnN0cigxMjM0NSkKKyAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoJyVZJywgKHksKSArICgwLCkgKiA4KQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICMgc3RyZnRpbWUoKSBpcyBsaW1pdGVkIHRvIFsxOyA5OTk5XSB3aXRoIFZpc3VhbCBTdHVkaW8KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICcxMjM0NScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1Njc4OSksICcxMjM0NTY3ODknKQorICAgICAgICAgICAgY29uZCA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25kID0gVHJ1ZQorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyhjb25kLCBtc2cpCiAKLWNsYXNzIF9UZXN0MmRZZWFyKF9CYXNlWWVhclRlc3QpOgotICAgIGFjY2VwdDJkeWVhciA9IDEKKyAgICBAc2tpcF9pZl9ub3Rfc3VwcG9ydGVkKDEwMDAwKQorICAgIGRlZiB0ZXN0X2xhcmdlX3llYXIoc2VsZik6CisgICAgICAgIHJldHVybiBzdXBlcigpLnRlc3RfbGFyZ2VfeWVhcigpCiAKLSAgICBkZWYgdGVzdF95ZWFyKHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDApLCAnMjAwMCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cig2OSksICcxOTY5JykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDY4KSwgJzIwNjgnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoOTkpLCAnMTk5OScpCisgICAgQHNraXBfaWZfbm90X3N1cHBvcnRlZCgwKQorICAgIGRlZiB0ZXN0X25lZ2F0aXZlKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoKS50ZXN0X25lZ2F0aXZlKCkKIAotICAgIGRlZiB0ZXN0X2ludmFsaWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYueWVhcnN0ciwgLTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYueWVhcnN0ciwgMTAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLnllYXJzdHIsIDk5OSkKKyAgICBkZWwgc2tpcF9pZl9ub3Rfc3VwcG9ydGVkCisKIAogY2xhc3MgX1Rlc3Q0ZFllYXIoX0Jhc2VZZWFyVGVzdCk6Ci0gICAgYWNjZXB0MmR5ZWFyID0gMAorICAgIF9mb3JtYXQgPSAnJWQnCiAKLSAgICBkZWYgdGVzdF95ZWFyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cigxKSwgICAgICgnMScsICcwMDAxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDY4KSwgICAoJzY4JywgJzAwNjgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnllYXJzdHIoNjkpLCAgICgnNjknLCAnMDA2OScpKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYueWVhcnN0cig5OSksICAgKCc5OScsICcwMDk5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi55ZWFyc3RyKDk5OSksICgnOTk5JywgJzA5OTknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoOTk5OSksICc5OTk5JykKKyAgICBkZWYgdGVzdF95ZWFyKHNlbGYsIGZtdD1Ob25lLCBmdW5jPU5vbmUpOgorICAgICAgICBmbXQgPSBmbXQgb3Igc2VsZi5fZm9ybWF0CisgICAgICAgIGZ1bmMgPSBmdW5jIG9yIHNlbGYueWVhcnN0cgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoMSksICAgIGZtdCAlIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg2OCksICAgZm10ICUgNjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg2OSksICAgZm10ICUgNjkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg5OSksICAgZm10ICUgOTkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnVuYyg5OTkpLCAgZm10ICUgOTk5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoOTk5OSksIGZtdCAlIDk5OTkpCisKKyAgICBkZWYgdGVzdF9sYXJnZV95ZWFyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigxMjM0NSksICcxMjM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKDEyMzQ1Njc4OSksICcxMjM0NTY3ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cihUSU1FX01BWFlFQVIpLCBzdHIoVElNRV9NQVhZRUFSKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi55ZWFyc3RyLCBUSU1FX01BWFlFQVIgKyAxKQogCiAgICAgZGVmIHRlc3RfbmVnYXRpdmUoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRleHQgPSBzZWxmLnllYXJzdHIoLTEpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgIyBzdHJmdGltZSgpIGlzIGxpbWl0ZWQgdG8gWzE7IDk5OTldIHdpdGggVmlzdWFsIFN0dWRpbwotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgKCctMScsICctMDAxJykpCi0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEpLCBzZWxmLl9mb3JtYXQgJSAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnllYXJzdHIoLTEyMzQpLCAnLTEyMzQnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNDU2KSwgJy0xMjM0NTYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNDU2Nzg5KSwgc3RyKC0xMjM0NTY3ODkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYueWVhcnN0cigtMTIzNDU2Nzg5MCksIHN0cigtMTIzNDU2Nzg5MCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKFRJTUVfTUlOWUVBUiArIDE5MDApLCBzdHIoVElNRV9NSU5ZRUFSICsgMTkwMCkpCisgICAgICAgICMgSXNzdWUgIzEzMzEyOiBpdCBtYXkgcmV0dXJuIHdyb25nIHZhbHVlIGZvciB5ZWFyIDwgVElNRV9NSU5ZRUFSICsgMTkwMAorICAgICAgICAjIFNraXAgdGhlIHZhbHVlIHRlc3QsIGJ1dCBjaGVjayB0aGF0IG5vIGVycm9yIGlzIHJhaXNlZAorICAgICAgICBzZWxmLnllYXJzdHIoVElNRV9NSU5ZRUFSKQorICAgICAgICAjIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi55ZWFyc3RyKFRJTUVfTUlOWUVBUiksIHN0cihUSU1FX01JTllFQVIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLnllYXJzdHIsIFRJTUVfTUlOWUVBUiAtIDEpCiAKIAotICAgIGRlZiB0ZXN0X21rdGltZShzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjMTcyNjY4NwotICAgICAgICBmb3IgdCBpbiAoLTIsIC0xLCAwLCAxKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKHQpCi0gICAgICAgICAgICBleGNlcHQgKE92ZXJmbG93RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lLm1rdGltZSh0dCksIHQpCi0gICAgICAgICMgSXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZWxpYWJseSBtYWtlIG1rdGltZSByZXR1cm4gZXJyb3IKLSAgICAgICAgIyBvbiBhbGwgcGxhdGZvbS4gIFRoaXMgd2lsbCBtYWtlIHN1cmUgdGhhdCBubyBvdGhlciBleGNlcHRpb24KLSAgICAgICAgIyB0aGFuIE92ZXJmbG93RXJyb3IgaXMgcmFpc2VkIGZvciBhbiBleHRyZW1lIHZhbHVlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLm1rdGltZSgoLTEsIDEsIDEsIDAsIDAsIDAsIC0xLCAtMSwgLTEpKQotICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotY2xhc3MgVGVzdEFzY3RpbWVBY2NlcHQyZFllYXIoX1Rlc3RBc2N0aW1lWWVhciwgX1Rlc3QyZFllYXIpOgotICAgIHBhc3MKLQotY2xhc3MgVGVzdFN0cmZ0aW1lQWNjZXB0MmRZZWFyKF9UZXN0U3RyZnRpbWVZZWFyLCBfVGVzdDJkWWVhcik6Ci0gICAgcGFzcwotCiBjbGFzcyBUZXN0QXNjdGltZTRkeWVhcihfVGVzdEFzY3RpbWVZZWFyLCBfVGVzdDRkWWVhcik6CiAgICAgcGFzcwogCiBjbGFzcyBUZXN0U3RyZnRpbWU0ZHllYXIoX1Rlc3RTdHJmdGltZVllYXIsIF9UZXN0NGRZZWFyKToKICAgICBwYXNzCiAKLWNsYXNzIFRlc3QyZHllYXJCb29sKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0MmRZZWFyKToKLSAgICBhY2NlcHQyZHllYXIgPSBUcnVlCiAKLWNsYXNzIFRlc3Q0ZHllYXJCb29sKF9UZXN0QXNjdGltZVllYXIsIF9UZXN0NGRZZWFyKToKLSAgICBhY2NlcHQyZHllYXIgPSBGYWxzZQorY2xhc3MgVGVzdFB5dGltZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmludmFsaWRfdmFsdWVzID0gKAorICAgICAgICAgICAgLSgyICoqIDEwMCksIDIgKiogMTAwLAorICAgICAgICAgICAgLSgyLjAgKiogMTAwLjApLCAyLjAgKiogMTAwLjAsCisgICAgICAgICkKIAotY2xhc3MgVGVzdEFjY2VwdDJZZWFyQmFkKF9UZXN0QXNjdGltZVllYXIsIF9CYXNlWWVhclRlc3QpOgotICAgIGNsYXNzIFg6Ci0gICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignYm9vJykKLSAgICBhY2NlcHQyZHllYXIgPSBYKCkKLSAgICBkZWYgdGVzdF8yZHllYXIoc2VsZik6Ci0gICAgICAgIHBhc3MKLSAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHNlbGYueWVhcnN0ciwgMjAwKQorICAgIGRlZiB0ZXN0X3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisgICAgICAgIGZvciBvYmosIHRpbWVfdCBpbiAoCisgICAgICAgICAgICAoMCwgMCksCisgICAgICAgICAgICAoLTEsIC0xKSwKKyAgICAgICAgICAgICgtMS4wLCAtMSksCisgICAgICAgICAgICAoLTEuOSwgLTEpLAorICAgICAgICAgICAgKDEuMCwgMSksCisgICAgICAgICAgICAoMS45LCAxKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lX3Qob2JqKSwgdGltZV90KQogCisgICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCwgaW52YWxpZCkKKworICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwKKyAgICAgICAgZm9yIG9iaiwgdGltZXZhbCBpbiAoCisgICAgICAgICAgICAoMCwgKDAsIDApKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCAwKSksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSksCisgICAgICAgICAgICAoMWUtNiwgKDAsIDEpKSwKKyAgICAgICAgICAgICgtMWUtNiwgKC0xLCA5OTk5OTkpKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMCkpLAorICAgICAgICAgICAgKDEuMTIzNDU2MCwgKDEsIDEyMzQ1NikpLAorICAgICAgICAgICAgKDEuMTIzNDU2OSwgKDEsIDEyMzQ1NikpLAorICAgICAgICAgICAgKC0xLjEyMzQ1NjAsICgtMiwgODc2NTQ0KSksCisgICAgICAgICAgICAoLTEuMTIzNDU2MSwgKC0yLCA4NzY1NDMpKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1ldmFsKG9iaiksIHRpbWV2YWwpCisKKyAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwgaW52YWxpZCkKKworICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYyBpbiAoCisgICAgICAgICAgICAoMCwgKDAsIDApKSwKKyAgICAgICAgICAgICgtMSwgKC0xLCAwKSksCisgICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSksCisgICAgICAgICAgICAoMWUtOSwgKDAsIDEpKSwKKyAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpKSwKKyAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCkpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSkpLAorICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSkpLAorICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSksCisgICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmopLCB0aW1lc3BlYykKKworICAgICAgICBmb3IgaW52YWxpZCBpbiBzZWxmLmludmFsaWRfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgaW52YWxpZCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCisgICAgZGVmIHRlc3RfbG9jYWx0aW1lX3RpbWV6b25lKHNlbGYpOgorCisgICAgICAgICMgR2V0IHRoZSBsb2NhbHRpbWUgYW5kIGV4YW1pbmUgaXQgZm9yIHRoZSBvZmZzZXQgYW5kIHpvbmUuCisgICAgICAgIGx0ID0gdGltZS5sb2NhbHRpbWUoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsdCwgInRtX2dtdG9mZiIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihsdCwgInRtX3pvbmUiKSkKKworICAgICAgICAjIFNlZSBpZiB0aGUgb2Zmc2V0IGFuZCB6b25lIGFyZSBzaW1pbGFyIHRvIHRoZSBtb2R1bGUKKyAgICAgICAgIyBhdHRyaWJ1dGVzLgorICAgICAgICBpZiBsdC50bV9nbXRvZmYgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgaGFzYXR0cih0aW1lLCAidGltZXpvbmUiKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHQudG1fZ210b2ZmLCAtW3RpbWUudGltZXpvbmUsIHRpbWUuYWx0em9uZV1bbHQudG1faXNkc3RdKQorICAgICAgICBpZiBsdC50bV96b25lIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IGhhc2F0dHIodGltZSwgInR6bmFtZSIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsdC50bV96b25lLCB0aW1lLnR6bmFtZVtsdC50bV9pc2RzdF0pCisKKyAgICAgICAgIyBUcnkgYW5kIG1ha2UgVU5JWCB0aW1lcyBmcm9tIHRoZSBsb2NhbHRpbWUgYW5kIGEgOS10dXBsZQorICAgICAgICAjIGNyZWF0ZWQgZnJvbSB0aGUgbG9jYWx0aW1lLiBUZXN0IHRvIHNlZSB0aGF0IHRoZSB0aW1lcyBhcmUKKyAgICAgICAgIyB0aGUgc2FtZS4KKyAgICAgICAgdCA9IHRpbWUubWt0aW1lKGx0KTsgdDkgPSB0aW1lLm1rdGltZShsdFs6OV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgdDkpCisKKyAgICAgICAgIyBNYWtlIGxvY2FsdGltZXMgZnJvbSB0aGUgVU5JWCB0aW1lcyBhbmQgY29tcGFyZSB0aGVtIHRvCisgICAgICAgICMgdGhlIG9yaWdpbmFsIGxvY2FsdGltZSwgdGh1cyBtYWtpbmcgYSByb3VuZCB0cmlwLgorICAgICAgICBuZXdfbHQgPSB0aW1lLmxvY2FsdGltZSh0KTsgbmV3X2x0OSA9IHRpbWUubG9jYWx0aW1lKHQ5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdCwgbHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2x0LnRtX2dtdG9mZiwgbHQudG1fZ210b2ZmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdC50bV96b25lLCBsdC50bV96b25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdDksIGx0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19sdC50bV9nbXRvZmYsIGx0LnRtX2dtdG9mZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfbHQ5LnRtX3pvbmUsIGx0LnRtX3pvbmUpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQorICAgIGRlZiB0ZXN0X3N0cnB0aW1lX3RpbWV6b25lKHNlbGYpOgorICAgICAgICB0ID0gdGltZS5zdHJwdGltZSgiVVRDIiwgIiVaIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LnRtX3pvbmUsICdVVEMnKQorICAgICAgICB0ID0gdGltZS5zdHJwdGltZSgiKzA1MDAiLCAiJXoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQudG1fZ210b2ZmLCA1ICogMzYwMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRpbWUuX1NUUlVDVF9UTV9JVEVNUyA9PSAxMSwgIm5lZWRzIHRtX3pvbmUgc3VwcG9ydCIpCisgICAgZGVmIHRlc3Rfc2hvcnRfdGltZXMoc2VsZik6CisKKyAgICAgICAgaW1wb3J0IHBpY2tsZQorCisgICAgICAgICMgTG9hZCBhIHNob3J0IHRpbWUgc3RydWN0dXJlIHVzaW5nIHBpY2tsZS4KKyAgICAgICAgc3QgPSBiImN0aW1lXG5zdHJ1Y3RfdGltZVxucDBcbigoSTIwMDdcbkk4XG5JMTFcbkkxXG5JMjRcbkk0OVxuSTVcbkkyMjNcbkkxXG50cDFcbihkcDJcbnRwM1xuUnA0XG4uIgorICAgICAgICBsdCA9IHBpY2tsZS5sb2FkcyhzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhsdC50bV9nbXRvZmYsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobHQudG1fem9uZSwgTm9uZSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBUaW1lVGVzdENhc2UsCiAgICAgICAgIFRlc3RMb2NhbGUsCi0gICAgICAgIFRlc3RBc2N0aW1lQWNjZXB0MmRZZWFyLAotICAgICAgICBUZXN0U3RyZnRpbWVBY2NlcHQyZFllYXIsCiAgICAgICAgIFRlc3RBc2N0aW1lNGR5ZWFyLAogICAgICAgICBUZXN0U3RyZnRpbWU0ZHllYXIsCi0gICAgICAgIFRlc3QyZHllYXJCb29sLAotICAgICAgICBUZXN0NGR5ZWFyQm9vbCwKLSAgICAgICAgVGVzdEFjY2VwdDJZZWFyQmFkKQorICAgICAgICBUZXN0UHl0aW1lKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5IGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQppbmRleCBiNmE5Y2ExLi4yMTNlOWI0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKQEAgLTI4OSw2ICsyODksNjQgQEAKICAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI5KSAoMSwgMzApCiAgICAgU1RSSU5HICAgICAnUiJBQkMiJyAgICAgICgxLCAzMSkgKDEsIDM3KQogCisgICAgPj4+IGR1bXBfdG9rZW5zKCJ1J2FiYycgKyBVJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAidSdhYmMnIiAgICAgICgxLCAwKSAoMSwgNikKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDcpICgxLCA4KQorICAgIFNUUklORyAgICAgIlUnYWJjJyIgICAgICAoMSwgOSkgKDEsIDE1KQorICAgID4+PiBkdW1wX3Rva2VucygndSJhYmMiICsgVSJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ3UiYWJjIicgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICdVImFiYyInICAgICAgKDEsIDkpICgxLCAxNSkKKworICAgID4+PiBkdW1wX3Rva2VucygiYidhYmMnICsgQidhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgImInYWJjJyIgICAgICAoMSwgMCkgKDEsIDYpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA3KSAoMSwgOCkKKyAgICBTVFJJTkcgICAgICJCJ2FiYyciICAgICAgKDEsIDkpICgxLCAxNSkKKyAgICA+Pj4gZHVtcF90b2tlbnMoJ2IiYWJjIiArIEIiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICdiImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgNykgKDEsIDgpCisgICAgU1RSSU5HICAgICAnQiJhYmMiJyAgICAgICgxLCA5KSAoMSwgMTUpCisgICAgPj4+IGR1bXBfdG9rZW5zKCJicidhYmMnICsgYlInYWJjJyArIEJyJ2FiYycgKyBCUidhYmMnIikKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgImJyJ2FiYyciICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICJiUidhYmMnIiAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgIkJyJ2FiYyciICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAiQlInYWJjJyIgICAgICgxLCAzMCkgKDEsIDM3KQorICAgID4+PiBkdW1wX3Rva2VucygnYnIiYWJjIiArIGJSImFiYyIgKyBCciJhYmMiICsgQlIiYWJjIicpCisgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkKKyAgICBTVFJJTkcgICAgICdiciJhYmMiJyAgICAgKDEsIDApICgxLCA3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgOCkgKDEsIDkpCisgICAgU1RSSU5HICAgICAnYlIiYWJjIicgICAgICgxLCAxMCkgKDEsIDE3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMTgpICgxLCAxOSkKKyAgICBTVFJJTkcgICAgICdCciJhYmMiJyAgICAgKDEsIDIwKSAoMSwgMjcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAyOCkgKDEsIDI5KQorICAgIFNUUklORyAgICAgJ0JSImFiYyInICAgICAoMSwgMzApICgxLCAzNykKKyAgICA+Pj4gZHVtcF90b2tlbnMoInJiJ2FiYycgKyByQidhYmMnICsgUmInYWJjJyArIFJCJ2FiYyciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgU1RSSU5HICAgICAicmInYWJjJyIgICAgICgxLCAwKSAoMSwgNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDgpICgxLCA5KQorICAgIFNUUklORyAgICAgInJCJ2FiYyciICAgICAoMSwgMTApICgxLCAxNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDE4KSAoMSwgMTkpCisgICAgU1RSSU5HICAgICAiUmInYWJjJyIgICAgICgxLCAyMCkgKDEsIDI3KQorICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKKyAgICBTVFJJTkcgICAgICJSQidhYmMnIiAgICAgKDEsIDMwKSAoMSwgMzcpCisgICAgPj4+IGR1bXBfdG9rZW5zKCdyYiJhYmMiICsgckIiYWJjIiArIFJiImFiYyIgKyBSQiJhYmMiJykKKyAgICBFTkNPRElORyAgICd1dGYtOCcgICAgICAgKDAsIDApICgwLCAwKQorICAgIFNUUklORyAgICAgJ3JiImFiYyInICAgICAoMSwgMCkgKDEsIDcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCA4KSAoMSwgOSkKKyAgICBTVFJJTkcgICAgICdyQiJhYmMiJyAgICAgKDEsIDEwKSAoMSwgMTcpCisgICAgT1AgICAgICAgICAnKycgICAgICAgICAgICgxLCAxOCkgKDEsIDE5KQorICAgIFNUUklORyAgICAgJ1JiImFiYyInICAgICAoMSwgMjApICgxLCAyNykKKyAgICBPUCAgICAgICAgICcrJyAgICAgICAgICAgKDEsIDI4KSAoMSwgMjkpCisgICAgU1RSSU5HICAgICAnUkIiYWJjIicgICAgICgxLCAzMCkgKDEsIDM3KQorCiBPcGVyYXRvcnMKIAogICAgID4+PiBkdW1wX3Rva2VucygiZGVmIGQyMihhLCBiLCBjPTIsIGQ9MiwgKmspOiBwYXNzIikKQEAgLTU2MywxNSArNjIxLDI4IEBACiAgICAgTkFNRSAgICAgICAnZ3LDvG4nICAgICAgICAoMiwgMCkgKDIsIDQpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgyLCA1KSAoMiwgNikKICAgICBTVFJJTkcgICAgICInZ3JlZW4nIiAgICAgKDIsIDcpICgyLCAxNCkKKworTGVnYWN5IHVuaWNvZGUgbGl0ZXJhbHM6CisKKyAgICA+Pj4gZHVtcF90b2tlbnMoIsOWcnRlciA9IHUncGxhY2VzJ1xcbmdyw7xuID0gVSdncmVlbiciKQorICAgIEVOQ09ESU5HICAgJ3V0Zi04JyAgICAgICAoMCwgMCkgKDAsIDApCisgICAgTkFNRSAgICAgICAnw5ZydGVyJyAgICAgICAoMSwgMCkgKDEsIDUpCisgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCA2KSAoMSwgNykKKyAgICBTVFJJTkcgICAgICJ1J3BsYWNlcyciICAgKDEsIDgpICgxLCAxNykKKyAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxNykgKDEsIDE4KQorICAgIE5BTUUgICAgICAgJ2dyw7xuJyAgICAgICAgKDIsIDApICgyLCA0KQorICAgIE9QICAgICAgICAgJz0nICAgICAgICAgICAoMiwgNSkgKDIsIDYpCisgICAgU1RSSU5HICAgICAiVSdncmVlbiciICAgICgyLCA3KSAoMiwgMTUpCiAiIiIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRva2VuaXplIGltcG9ydCAodG9rZW5pemUsIF90b2tlbml6ZSwgdW50b2tlbml6ZSwgTlVNQkVSLCBOQU1FLCBPUCwKLSAgICAgICAgICAgICAgICAgICAgIFNUUklORywgRU5ETUFSS0VSLCB0b2tfbmFtZSwgZGV0ZWN0X2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCBFTkRNQVJLRVIsIEVOQ09ESU5HLCB0b2tfbmFtZSwgZGV0ZWN0X2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgb3BlbiBhcyB0b2tlbml6ZV9vcGVuKQogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKIGltcG9ydCBvcywgc3lzLCBnbG9iCitpbXBvcnQgdG9rZW4KIAogZGVmIGR1bXBfdG9rZW5zKHMpOgogICAgICIiIlByaW50IG91dCB0aGUgdG9rZW5zIGluIHMgaW4gYSB0YWJsZSBmb3JtYXQuCkBAIC02MDAsNyArNjcxLDcgQEAKICAgICAgICAgZi5jbG9zZSgpCiAgICAgdG9rZW5zMSA9IFt0b2tbOjJdIGZvciB0b2sgaW4gdG9rZW5fbGlzdF0KICAgICBuZXdfYnl0ZXMgPSB1bnRva2VuaXplKHRva2VuczEpCi0gICAgcmVhZGxpbmUgPSAobGluZSBmb3IgbGluZSBpbiBuZXdfYnl0ZXMuc3BsaXRsaW5lcygxKSkuX19uZXh0X18KKyAgICByZWFkbGluZSA9IChsaW5lIGZvciBsaW5lIGluIG5ld19ieXRlcy5zcGxpdGxpbmVzKGtlZXBlbmRzPVRydWUpKS5fX25leHRfXwogICAgIHRva2VuczIgPSBbdG9rWzoyXSBmb3IgdG9rIGluIHRva2VuaXplKHJlYWRsaW5lKV0KICAgICByZXR1cm4gdG9rZW5zMSA9PSB0b2tlbnMyCiAKQEAgLTg5NSw2ICs5NjYsMzUgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZnAuZW5jb2RpbmcsICd1dGYtOC1zaWcnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcC5tb2RlLCAncicpCiAKKyAgICBkZWYgdGVzdF9maWxlbmFtZV9pbl9leGNlcHRpb24oc2VsZik6CisgICAgICAgICMgV2hlbiBwb3NzaWJsZSwgaW5jbHVkZSB0aGUgZmlsZSBuYW1lIGluIHRoZSBleGNlcHRpb24uCisgICAgICAgIHBhdGggPSAnc29tZV9maWxlX3BhdGgnCisgICAgICAgIGxpbmVzID0gKAorICAgICAgICAgICAgYidwcmludCgiXHhkZiIpJywgIyBMYXRpbi0xOiBMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUworICAgICAgICAgICAgKQorICAgICAgICBjbGFzcyBCdW5rOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzLCBwYXRoKToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBwYXRoCisgICAgICAgICAgICAgICAgc2VsZi5fbGluZXMgPSBsaW5lcworICAgICAgICAgICAgICAgIHNlbGYuX2luZGV4ID0gMAorCisgICAgICAgICAgICBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5faW5kZXggPT0gbGVuKGxpbmVzKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lc1tzZWxmLl9pbmRleF0KKyAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGlucyA9IEJ1bmsobGluZXMsIHBhdGgpCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSBsYWNraW5nIGEgbmFtZSBpc24ndCBhbiBpc3N1ZS4KKyAgICAgICAgICAgIGRlbCBpbnMubmFtZQorICAgICAgICAgICAgZGV0ZWN0X2VuY29kaW5nKGlucy5yZWFkbGluZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnLip7fScuZm9ybWF0KHBhdGgpKToKKyAgICAgICAgICAgIGlucyA9IEJ1bmsobGluZXMsIHBhdGgpCisgICAgICAgICAgICBkZXRlY3RfZW5jb2RpbmcoaW5zLnJlYWRsaW5lKQorCisKIGNsYXNzIFRlc3RUb2tlbml6ZShUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF90b2tlbml6ZShzZWxmKToKQEAgLTkzNiw2ICsxMDM2LDc4IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVuY29kaW5nX3VzZWQsIGVuY29kaW5nKQogCisgICAgZGVmIGFzc2VydEV4YWN0VHlwZUVxdWFsKHNlbGYsIG9wc3RyLCAqb3B0eXBlcyk6CisgICAgICAgIHRva2VucyA9IGxpc3QodG9rZW5pemUoQnl0ZXNJTyhvcHN0ci5lbmNvZGUoJ3V0Zi04JykpLnJlYWRsaW5lKSkKKyAgICAgICAgbnVtX29wdHlwZXMgPSBsZW4ob3B0eXBlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4odG9rZW5zKSwgMiArIG51bV9vcHR5cGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLnRva19uYW1lW3Rva2Vuc1swXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi50b2tfbmFtZVtFTkNPRElOR10pCisgICAgICAgIGZvciBpIGluIHJhbmdlKG51bV9vcHR5cGVzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zW2kgKyAxXS5leGFjdF90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbb3B0eXBlc1tpXV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW4udG9rX25hbWVbdG9rZW5zWzEgKyBudW1fb3B0eXBlc10uZXhhY3RfdHlwZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udG9rX25hbWVbdG9rZW4uRU5ETUFSS0VSXSkKKworICAgIGRlZiB0ZXN0X2V4YWN0X3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJygpJywgdG9rZW4uTFBBUiwgdG9rZW4uUlBBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnW10nLCB0b2tlbi5MU1FCLCB0b2tlbi5SU1FCKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc6JywgdG9rZW4uQ09MT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJywnLCB0b2tlbi5DT01NQSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnOycsIHRva2VuLlNFTUkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJysnLCB0b2tlbi5QTFVTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCctJywgdG9rZW4uTUlOVVMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyonLCB0b2tlbi5TVEFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvJywgdG9rZW4uU0xBU0gpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3wnLCB0b2tlbi5WQkFSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcmJywgdG9rZW4uQU1QRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzwnLCB0b2tlbi5MRVNTKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+JywgdG9rZW4uR1JFQVRFUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPScsIHRva2VuLkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcuJywgdG9rZW4uRE9UKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCclJywgdG9rZW4uUEVSQ0VOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgne30nLCB0b2tlbi5MQlJBQ0UsIHRva2VuLlJCUkFDRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPT0nLCB0b2tlbi5FUUVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCchPScsIHRva2VuLk5PVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc8PScsIHRva2VuLkxFU1NFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnPj0nLCB0b2tlbi5HUkVBVEVSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ34nLCB0b2tlbi5USUxERSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXicsIHRva2VuLkNJUkNVTUZMRVgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw8JywgdG9rZW4uTEVGVFNISUZUKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+PicsIHRva2VuLlJJR0hUU0hJRlQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyoqJywgdG9rZW4uRE9VQkxFU1RBUikKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnKz0nLCB0b2tlbi5QTFVTRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJy09JywgdG9rZW4uTUlORVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyo9JywgdG9rZW4uU1RBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcvPScsIHRva2VuLlNMQVNIRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyU9JywgdG9rZW4uUEVSQ0VOVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCcmPScsIHRva2VuLkFNUEVSRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ3w9JywgdG9rZW4uVkJBUkVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCdePScsIHRva2VuLkNJUkNVTUZMRVhFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXj0nLCB0b2tlbi5DSVJDVU1GTEVYRVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJzw8PScsIHRva2VuLkxFRlRTSElGVEVRVUFMKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCc+Pj0nLCB0b2tlbi5SSUdIVFNISUZURVFVQUwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJyoqPScsIHRva2VuLkRPVUJMRVNUQVJFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy8nLCB0b2tlbi5ET1VCTEVTTEFTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnLy89JywgdG9rZW4uRE9VQkxFU0xBU0hFUVVBTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnQCcsIHRva2VuLkFUKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXhhY3RUeXBlRXF1YWwoJ2EqKjIrYioqMj09YyoqMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlBMVVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkVRRVFVQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRSwgdG9rZW4uRE9VQkxFU1RBUiwgTlVNQkVSKQorICAgICAgICBzZWxmLmFzc2VydEV4YWN0VHlwZUVxdWFsKCd7MSwgMiwgM30nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLkxCUkFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5OVU1CRVIsIHRva2VuLkNPTU1BLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5VTUJFUiwgdG9rZW4uQ09NTUEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uTlVNQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLlJCUkFDRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFeGFjdFR5cGVFcXVhbCgnXih4ICYgMHgxKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uQ0lSQ1VNRkxFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5MUEFSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLk5BTUUsIHRva2VuLkFNUEVSLCB0b2tlbi5OVU1CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4uUlBBUikKIAogX190ZXN0X18gPSB7ImRvY3Rlc3RzIiA6IGRvY3Rlc3RzLCAnZGVjaXN0bXQnOiBkZWNpc3RtdH0KIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKaW5kZXggNDI4MTZhMi4uN2EyNTA2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CkBAIC02LDggKzYsOSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00MCw3ICs0MSw3IEBACiAgICAgIyBhZGRlZCBmb3IgYSBzY3JpcHQgaXQgc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSB3aGl0ZWxpc3QgYmVsb3cuCiAKICAgICAjIHNjcmlwdHMgdGhhdCBoYXZlIGluZGVwZW5kZW50IHRlc3RzLgotICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknXQorICAgIHdoaXRlbGlzdCA9IFsncmVpbmRlbnQucHknLCAncGRlcHMucHknLCAnZ3Byb2YyaHRtbCddCiAgICAgIyBzY3JpcHRzIHRoYXQgY2FuJ3QgYmUgaW1wb3J0ZWQgd2l0aG91dCBydW5uaW5nCiAgICAgYmxhY2tsaXN0ID0gWydtYWtlX2N0eXBlLnB5J10KICAgICAjIHNjcmlwdHMgdGhhdCB1c2Ugd2luZG93cy1vbmx5IG1vZHVsZXMKQEAgLTc5LDcgKzgwLDggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzY3JpcHRzZGlyLCAncGRlcHMucHknKQotICAgICAgICBzZWxmLnBkZXBzID0gaW1wLmxvYWRfc291cmNlKCdwZGVwcycsIHBhdGgpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcigncGRlcHMnLCBwYXRoKQorICAgICAgICBzZWxmLnBkZXBzID0gbG9hZGVyLmxvYWRfbW9kdWxlKCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKHNlbGYpOgpAQCAtOTksNiArMTAxLDM1IEBACiAgICAgICAgIHNlbGYucGRlcHMuaW52ZXJzZSh7J2EnOiBbXX0pCiAKIAorY2xhc3MgR3Byb2YyaHRtbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzY3JpcHRzZGlyLCAnZ3Byb2YyaHRtbC5weScpCisgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcignZ3Byb2YyaHRtbCcsIHBhdGgpCisgICAgICAgIHNlbGYuZ3Byb2YgPSBsb2FkZXIubG9hZF9tb2R1bGUoKQorICAgICAgICBvbGRhcmd2ID0gc3lzLmFyZ3YKKyAgICAgICAgZGVmIGZpeHVwKCk6CisgICAgICAgICAgICBzeXMuYXJndiA9IG9sZGFyZ3YKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGZpeHVwKQorICAgICAgICBzeXMuYXJndiA9IFtdCisKKyAgICBkZWYgdGVzdF9ncHJvZihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTQ1MDg6IHRoaXMgdXNlZCB0byBmYWlsIHdpdGggYW4gTmFtZUVycm9yLgorICAgICAgICB3aXRoIG1vY2sucGF0Y2gub2JqZWN0KHNlbGYuZ3Byb2YsICd3ZWJicm93c2VyJykgYXMgd21vY2ssIFwKKyAgICAgICAgICAgICAgICB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0bXBkaXI6CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbih0bXBkaXIsICdhYmMnKQorICAgICAgICAgICAgb3BlbihmbiwgJ3cnKS5jbG9zZSgpCisgICAgICAgICAgICBzeXMuYXJndiA9IFsnZ3Byb2YyaHRtbCcsIGZuXQorICAgICAgICAgICAgc2VsZi5ncHJvZi5tYWluKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdtb2NrLm9wZW4uY2FsbGVkKQorCisKKyMgUnVuIHRoZSB0ZXN0cyBpbiBUb29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5Cit3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aChvcy5wYXRoLmpvaW4oYmFzZXBhdGgsICdwYXJzZXInKSk6CisgICAgZnJvbSB0ZXN0X3VucGFyc2UgaW1wb3J0IFVucGFyc2VUZXN0Q2FzZQorICAgIGZyb20gdGVzdF91bnBhcnNlIGltcG9ydCBEaXJlY3RvcnlUZXN0Q2FzZQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqW29iaiBmb3Igb2JqIGluIGdsb2JhbHMoKS52YWx1ZXMoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlKV0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQppbmRleCA0NjFkMWQ4Li5hYzNhMWEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKQEAgLTEwMiw2ICsxMDIsNyBAQAogY2xhc3MgVGVzdExpbmVDb3VudHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIldoaXRlLWJveCB0ZXN0aW5nIG9mIGxpbmUtY291bnRpbmcsIHZpYSBydW5mdW5jIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0xLCB0cmFjZT0wLCBjb3VudGZ1bmNzPTAsIGNvdW50Y2FsbGVycz0wKQogICAgICAgICBzZWxmLm15X3B5X2ZpbGVuYW1lID0gZml4X2V4dF9weShfX2ZpbGVfXykKIApAQCAtMTkyLDYgKzE5Myw3IEBACiAgICAgIiIiQSBzaW1wbGUgc2FuaXR5IHRlc3Qgb2YgbGluZS1jb3VudGluZywgdmlhIHJ1bmN0eCAoZXhlYykiIiIKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYubXlfcHlfZmlsZW5hbWUgPSBmaXhfZXh0X3B5KF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKIAogICAgIGRlZiB0ZXN0X2V4ZWNfY291bnRzKHNlbGYpOgogICAgICAgICBzZWxmLnRyYWNlciA9IFRyYWNlKGNvdW50PTEsIHRyYWNlPTAsIGNvdW50ZnVuY3M9MCwgY291bnRjYWxsZXJzPTApCkBAIC0yMTgsNiArMjIwLDcgQEAKIGNsYXNzIFRlc3RGdW5jcyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgZnVuY3MgdHJhY2luZyIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCiAgICAgICAgIHNlbGYudHJhY2VyID0gVHJhY2UoY291bnQ9MCwgdHJhY2U9MCwgY291bnRmdW5jcz0xKQogICAgICAgICBzZWxmLmZpbGVtb2QgPSBteV9maWxlX2FuZF9tb2RuYW1lKCkKIApAQCAtMjQyLDYgKzI0NSw4IEBACiAgICAgICAgIH0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRyYWNlci5yZXN1bHRzKCkuY2FsbGVkZnVuY3MsIGV4cGVjdGVkKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldHRyYWNlJykgYW5kIHN5cy5nZXR0cmFjZSgpLAorICAgICAgICAgICAgICAgICAgICAgJ3ByZS1leGlzdGluZyB0cmFjZSBmdW5jdGlvbiB0aHJvd3Mgb2ZmIG1lYXN1cmVtZW50cycpCiAgICAgZGVmIHRlc3RfaW5zdF9tZXRob2RfY2FsbGluZyhzZWxmKToKICAgICAgICAgb2JqID0gVHJhY2VkQ2xhc3MoMjApCiAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmZ1bmMob2JqLmluc3RfbWV0aG9kX2NhbGxpbmcsIDEpCkBAIC0yNTcsOSArMjYyLDEyIEBACiBjbGFzcyBUZXN0Q2FsbGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGUtYm94IHRlc3Rpbmcgb2YgY2FsbGVycyB0cmFjaW5nIiIiCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3lzLnNldHRyYWNlLCBzeXMuZ2V0dHJhY2UoKSkKICAgICAgICAgc2VsZi50cmFjZXIgPSBUcmFjZShjb3VudD0wLCB0cmFjZT0wLCBjb3VudGNhbGxlcnM9MSkKICAgICAgICAgc2VsZi5maWxlbW9kID0gbXlfZmlsZV9hbmRfbW9kbmFtZSgpCiAKKyAgICBAdW5pdHRlc3Quc2tpcElmKGhhc2F0dHIoc3lzLCAnZ2V0dHJhY2UnKSBhbmQgc3lzLmdldHRyYWNlKCksCisgICAgICAgICAgICAgICAgICAgICAncHJlLWV4aXN0aW5nIHRyYWNlIGZ1bmN0aW9uIHRocm93cyBvZmYgbWVhc3VyZW1lbnRzJykKICAgICBkZWYgdGVzdF9sb29wX2NhbGxlcl9pbXBvcnRpbmcoc2VsZik6CiAgICAgICAgIHNlbGYudHJhY2VyLnJ1bmZ1bmModHJhY2VkX2Z1bmNfaW1wb3J0aW5nX2NhbGxlciwgMSkKIApAQCAtMjgwLDYgKzI4OCw5IEBACiAKICMgQ3JlYXRlZCBzZXBhcmF0ZWx5IGZvciBpc3N1ZSAjMzgyMQogY2xhc3MgVGVzdENvdmVyYWdlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMuc2V0dHJhY2UsIHN5cy5nZXR0cmFjZSgpKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBybXRyZWUoVEVTVEZOKQogICAgICAgICB1bmxpbmsoVEVTVEZOKQpAQCAtMzA1LDEzICszMTYsMTMgQEAKICAgICAgICAgIyBJZ25vcmUgYWxsIGZpbGVzLCBub3RoaW5nIHNob3VsZCBiZSB0cmFjZWQgbm9yIHByaW50ZWQKICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKG9zLl9fZmlsZV9fKSkKICAgICAgICAgIyBzeXMucHJlZml4IGRvZXMgbm90IHdvcmsgd2hlbiBydW5uaW5nIGZyb20gYSBjaGVja291dAotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXgsIGxpYnBhdGhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT0wLCBjb3VudD0xKQorICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMuYmFzZV9wcmVmaXgsIHN5cy5iYXNlX2V4ZWNfcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJwYXRoXSwgdHJhY2U9MCwgY291bnQ9MSkKICAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CiAgICAgICAgICAgICBzZWxmLl9jb3ZlcmFnZSh0cmFjZXIpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKFRFU1RGTik6CiAgICAgICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIoVEVTVEZOKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlcywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVzLCBbJ19pbXBvcnRsaWIuY292ZXInXSkgICMgSWdub3JlIF9faW1wb3J0X18KIAogICAgIGRlZiB0ZXN0X2lzc3VlOTkzNihzZWxmKToKICAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9MCwgY291bnQ9MSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2ViYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKaW5kZXggNDc1MmQzNy4uNWJjZTJhZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkKQEAgLTI0Niw2ICsyNDYsMjEgQEAKICAgICAgICAgc2VsZi5jaGVja196ZXJvX2RpdihibG9ja3NbMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2lubmVyX3JhaXNlKCkgIyBNYXJrZXInLCBibG9ja3NbMl0pCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X3N1cHByZXNzaW9uKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmFpc2UgWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBOb25lCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvciBhcyBfOgorICAgICAgICAgICAgZSA9IF8KKyAgICAgICAgbGluZXMgPSBzZWxmLmdldF9yZXBvcnQoZSkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxpbmVzKSwgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVzWzBdLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbMV0uc3RhcnRzd2l0aCgnICBGaWxlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1plcm9EaXZpc2lvbkVycm9yIGZyb20gTm9uZScsIGxpbmVzWzJdKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbM10uc3RhcnRzd2l0aCgnWmVyb0RpdmlzaW9uRXJyb3InKSkKKwogICAgIGRlZiB0ZXN0X2NhdXNlX2FuZF9jb250ZXh0KHNlbGYpOgogICAgICAgICAjIFdoZW4gYm90aCBhIGNhdXNlIGFuZCBhIGNvbnRleHQgYXJlIHNldCwgb25seSB0aGUgY2F1c2Ugc2hvdWxkIGJlCiAgICAgICAgICMgZGlzcGxheWVkIGFuZCB0aGUgY29udGV4dCBzaG91bGQgYmUgbXV0ZWQuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5IGIvTGliL3Rlc3QvdGVzdF90dXBsZS5weQppbmRleCA2ZTkzNGZiLi5lNDE3MTFjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R1cGxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHVwbGUucHkKQEAgLTEsNiArMSw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQsIHNlcV90ZXN0cwogCiBpbXBvcnQgZ2MKK2ltcG9ydCBwaWNrbGUKIAogY2xhc3MgVHVwbGVUZXN0KHNlcV90ZXN0cy5Db21tb25UZXN0KToKICAgICB0eXBlMnRlc3QgPSB0dXBsZQpAQCAtMTY0LDYgKzE2NSwzNCBAQAogICAgICAgICBjaGVjaygxMCkgICAgICAgIyBjaGVjayBvdXIgY2hlY2tpbmcgY29kZQogICAgICAgICBjaGVjaygxMDAwMDAwKQogCisgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xlKHNlbGYpOgorICAgICAgICAjIFVzZXJsaXN0IGl0ZXJhdG9ycyBkb24ndCBzdXBwb3J0IHBpY2tsaW5nIHlldCBzaW5jZQorICAgICAgICAjIHRoZXkgYXJlIGJhc2VkIG9uIGdlbmVyYXRvcnMuCisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0b3JnID0gaXRlcihkYXRhKQorICAgICAgICBkID0gcGlja2xlLmR1bXBzKGl0b3JnKQorICAgICAgICBpdCA9IHBpY2tsZS5sb2FkcyhkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoaXRvcmcpLCB0eXBlKGl0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KGRhdGEpKQorCisgICAgICAgIGl0ID0gcGlja2xlLmxvYWRzKGQpCisgICAgICAgIG5leHQoaXQpCisgICAgICAgIGQgPSBwaWNrbGUuZHVtcHMoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChkYXRhKVsxOl0pCisKKyAgICBkZWYgdGVzdF9yZXZlcnNlZF9waWNrbGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBzZWxmLnR5cGUydGVzdChbNCwgNSwgNiwgN10pCisgICAgICAgIGl0b3JnID0gcmV2ZXJzZWQoZGF0YSkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdG9yZykKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGl0b3JnKSwgdHlwZShpdCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50eXBlMnRlc3QoaXQpLCBzZWxmLnR5cGUydGVzdChyZXZlcnNlZChkYXRhKSkpCisKKyAgICAgICAgaXQgPSBwaWNrbGUubG9hZHMoZCkKKyAgICAgICAgbmV4dChpdCkKKyAgICAgICAgZCA9IHBpY2tsZS5kdW1wcyhpdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR5cGUydGVzdChpdCksIHNlbGYudHlwZTJ0ZXN0KHJldmVyc2VkKGRhdGEpKVsxOl0pCisKICAgICBkZWYgdGVzdF9ub19jb21kYXRfZm9sZGluZyhzZWxmKToKICAgICAgICAgIyBJc3N1ZSA4ODQ3OiBJbiB0aGUgUEdPIGJ1aWxkLCB0aGUgTVNWQyBsaW5rZXIncyBDT01EQVQgZm9sZGluZwogICAgICAgICAjIG9wdGltaXphdGlvbiBjYXVzZXMgZmFpbHVyZXMgaW4gY29kZSB0aGF0IHJlbGllcyBvbiBkaXN0aW5jdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKaW5kZXggOGE5OGEwMy4uM2VlNGM2YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90eXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CkBAIC0xLDkgKzEsMTEgQEAKICMgUHl0aG9uIHRlc3Qgc2V0IC0tIHBhcnQgNiwgYnVpbHQtaW4gdHlwZXMKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgcnVuX3dpdGhfbG9jYWxlCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKK2ltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGxvY2FsZQoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgVHlwZXNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU2OSw4ICs1NzEsNTgzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0dXBsZS5fX2l0ZW1zaXplX18sIDApCiAKIAorY2xhc3MgTWFwcGluZ1Byb3h5VGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIG1hcHBpbmdwcm94eSA9IHR5cGVzLk1hcHBpbmdQcm94eVR5cGUKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyB1c2VyZGljdChkaWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtYXBwaW5nID0geyd4JzogMSwgJ3knOiAyfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubWFwcGluZ3Byb3h5KG1hcHBpbmcpLCBtYXBwaW5nKQorICAgICAgICBtYXBwaW5nID0gdXNlcmRpY3QoeD0xLCB5PTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisgICAgICAgIG1hcHBpbmcgPSBjb2xsZWN0aW9ucy5DaGFpbk1hcCh7J3gnOiAxfSwgeyd5JzogMn0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZyksIG1hcHBpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLm1hcHBpbmdwcm94eSwgMTApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5tYXBwaW5ncHJveHksICgiYSIsICJ0dXBsZSIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubWFwcGluZ3Byb3h5LCBbImEiLCAibGlzdCJdKQorCisgICAgZGVmIHRlc3RfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKHNlbGYubWFwcGluZ3Byb3h5KHt9KSkpIC0gc2V0KGRpcihvYmplY3QoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cnMsIHsKKyAgICAgICAgICAgICAnX19jb250YWluc19fJywKKyAgICAgICAgICAgICAnX19nZXRpdGVtX18nLAorICAgICAgICAgICAgICdfX2l0ZXJfXycsCisgICAgICAgICAgICAgJ19fbGVuX18nLAorICAgICAgICAgICAgICdjb3B5JywKKyAgICAgICAgICAgICAnZ2V0JywKKyAgICAgICAgICAgICAnaXRlbXMnLAorICAgICAgICAgICAgICdrZXlzJywKKyAgICAgICAgICAgICAndmFsdWVzJywKKyAgICAgICAgfSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdmlldyA9IHNlbGYubWFwcGluZ3Byb3h5KHsnYSc6ICdBJywgJ2InOiAnQid9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ2EnXSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ2InXSwgJ0InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgdmlldy5fX2dldGl0ZW1fXywgJ3h4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ2EnKSwgJ0EnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3LmdldCgneHh4JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3h4eCcsIDQyKSwgNDIpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBkaWN0bWlzc2luZyhkaWN0KToKKyAgICAgICAgICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIHJldHVybiAibWlzc2luZz0lcyIgJSBrZXkKKworICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoZGljdG1pc3NpbmcoeD0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3Wyd4J10sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneSddLCAnbWlzc2luZz15JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneCcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd5JyksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3knLCA0MiksIDQyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3gnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3knIGluIHZpZXcpCisKKyAgICBkZWYgdGVzdF9jdXN0b21kaWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBjdXN0b21kaWN0KGRpY3QpOgorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgorICAgICAgICAgICAgICAgIGlmIGtleSA9PSAnbWFnaWMnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaWN0Ll9fY29udGFpbnNfXyhzZWxmLCBrZXkpCisKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcigoJ2l0ZXInLCkpCisKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiA1MDAKKworICAgICAgICAgICAgZGVmIGNvcHkoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjb3B5JworCisgICAgICAgICAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2tleXMnCisKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2l0ZW1zJworCisgICAgICAgICAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAndmFsdWVzJworCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKKyAgICAgICAgICAgICAgICByZXR1cm4gImdldGl0ZW09JXMiICUgZGljdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpCisKKyAgICAgICAgICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZhdWx0PU5vbmUpOgorICAgICAgICAgICAgICAgIHJldHVybiAiZ2V0PSVzIiAlIGRpY3QuZ2V0KHNlbGYsIGtleSwgJ2RlZmF1bHQ9JXInICUgZGVmYXVsdCkKKworICAgICAgICBjdXN0b20gPSBjdXN0b21kaWN0KHsna2V5JzogJ3ZhbHVlJ30pCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShjdXN0b20pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgna2V5JyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ21hZ2ljJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd4eHgnIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sna2V5J10sICdnZXRpdGVtPXZhbHVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHZpZXcuX19nZXRpdGVtX18sICd4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHZpZXcpLCAoJ2l0ZXInLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCA1MDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5jb3B5KCksICdjb3B5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgna2V5JyksICdnZXQ9dmFsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuZ2V0KCd4eHgnKSwgJ2dldD1kZWZhdWx0PU5vbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcuaXRlbXMoKSwgJ2l0ZW1zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmtleXMoKSwgJ2tleXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXcudmFsdWVzKCksICd2YWx1ZXMnKQorCisgICAgZGVmIHRlc3RfY2hhaW5tYXAoc2VsZik6CisgICAgICAgIGQxID0geyd4JzogMX0KKyAgICAgICAgZDIgPSB7J3knOiAyfQorICAgICAgICBtYXBwaW5nID0gY29sbGVjdGlvbnMuQ2hhaW5NYXAoZDEsIGQyKQorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd4JyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3knIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJ3onIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sneCddLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZpZXdbJ3knXSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIHZpZXcuX19nZXRpdGVtX18sICd6JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0dXBsZShzb3J0ZWQodmlldykpLCAoJ3gnLCAneScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2aWV3KSwgMikKKyAgICAgICAgY29weSA9IHZpZXcuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoY29weSwgbWFwcGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNvcHksIGNvbGxlY3Rpb25zLkNoYWluTWFwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHksIG1hcHBpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlldy5nZXQoJ3gnKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2aWV3LmdldCgneScpLCAyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh2aWV3LmdldCgneicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR1cGxlKHNvcnRlZCh2aWV3Lml0ZW1zKCkpKSwgKCgneCcsIDEpLCAoJ3knLCAyKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcua2V5cygpKSksICgneCcsICd5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHVwbGUoc29ydGVkKHZpZXcudmFsdWVzKCkpKSwgKDEsIDIpKQorCisgICAgZGVmIHRlc3RfY29udGFpbnMoc2VsZik6CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0LmZyb21rZXlzKCdhYmMnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdhJyBpbiB2aWV3KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ2InIGluIHZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYycgaW4gdmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgneHh4JyBpbiB2aWV3KQorCisgICAgZGVmIHRlc3Rfdmlld3Moc2VsZik6CisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkobWFwcGluZykKKyAgICAgICAga2V5cyA9IHZpZXcua2V5cygpCisgICAgICAgIHZhbHVlcyA9IHZpZXcudmFsdWVzKCkKKyAgICAgICAgaXRlbXMgPSB2aWV3Lml0ZW1zKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGtleXMpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHZhbHVlcyksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlbXMpLCBbXSkKKyAgICAgICAgbWFwcGluZ1sna2V5J10gPSAndmFsdWUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChrZXlzKSwgWydrZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHZhbHVlcyksIFsndmFsdWUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0ZW1zKSwgWygna2V5JywgJ3ZhbHVlJyldKQorCisgICAgZGVmIHRlc3RfbGVuKHNlbGYpOgorICAgICAgICBmb3IgZXhwZWN0ZWQgaW4gcmFuZ2UoNik6CisgICAgICAgICAgICBkYXRhID0gZGljdC5mcm9ta2V5cygnYWJjZGUnWzpleHBlY3RlZF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkYXRhKSwgZXhwZWN0ZWQpCisgICAgICAgICAgICB2aWV3ID0gc2VsZi5tYXBwaW5ncHJveHkoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZpZXcpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2l0ZXJhdG9ycyhzZWxmKToKKyAgICAgICAga2V5cyA9ICgneCcsICd5JykKKyAgICAgICAgdmFsdWVzID0gKDEsIDIpCisgICAgICAgIGl0ZW1zID0gdHVwbGUoemlwKGtleXMsIHZhbHVlcykpCisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShkaWN0KGl0ZW1zKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldyksIHNldChrZXlzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy5rZXlzKCkpLCBzZXQoa2V5cykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHZpZXcudmFsdWVzKCkpLCBzZXQodmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodmlldy5pdGVtcygpKSwgc2V0KGl0ZW1zKSkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0geydrZXkxJzogMjcsICdrZXkyJzogNTEsICdrZXkzJzogOTN9CisgICAgICAgIHZpZXcgPSBzZWxmLm1hcHBpbmdwcm94eShvcmlnaW5hbCkKKyAgICAgICAgY29weSA9IHZpZXcuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShjb3B5KSwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5LCBvcmlnaW5hbCkKKyAgICAgICAgb3JpZ2luYWxbJ2tleTEnXSA9IDcwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmlld1sna2V5MSddLCA3MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5WydrZXkxJ10sIDI3KQorCisKK2NsYXNzIENsYXNzQ3JlYXRpb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICBkZWYgX19pbml0X18oY2xzLCBuYW1lLCBiYXNlcywgbnMsICoqa3cpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhuYW1lLCBiYXNlcywgbnMpCisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIF9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zLCAqKmt3KToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1jbHMsIG5hbWUsIGJhc2VzLCAqKmt3KToKKyAgICAgICAgICAgIG5zID0gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKyAgICAgICAgICAgIG5zWyJ5Il0gPSAxCisgICAgICAgICAgICBucy51cGRhdGUoa3cpCisgICAgICAgICAgICByZXR1cm4gbnMKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19iYXNpY3Moc2VsZik6CisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICJDIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fYmFzZXNfXywgKG9iamVjdCwpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKCJDIiwgKGludCwpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhDLCBpbnQpKQorCisgICAgZGVmIHRlc3RfbmV3X2NsYXNzX21ldGEoc2VsZik6CisgICAgICAgIE1ldGEgPSBzZWxmLk1ldGEKKyAgICAgICAgc2V0dGluZ3MgPSB7Im1ldGFjbGFzcyI6IE1ldGEsICJ6IjogMn0KKyAgICAgICAgIyBXZSBkbyB0aGlzIHR3aWNlIHRvIG1ha2Ugc3VyZSB0aGUgcGFzc2VkIGluIGRpY3QgaXNuJ3QgbXV0YXRlZAorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiICsgc3RyKGkpLCAoKSwgc2V0dGluZ3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQywgTWV0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy55LCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnosIDIpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfZXhlY19ib2R5KHNlbGYpOgorICAgICAgICBNZXRhID0gc2VsZi5NZXRhCisgICAgICAgIGRlZiBmdW5jKG5zKToKKyAgICAgICAgICAgIG5zWyJ4Il0gPSAwCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoKSwgeyJtZXRhY2xhc3MiOiBNZXRhLCAieiI6IDJ9LCBmdW5jKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoQywgTWV0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLngsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy55LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueiwgMikKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19tZXRhY2xhc3Nfa2V5d29yZHMoc2VsZik6CisgICAgICAgICNUZXN0IHRoYXQga2V5d29yZHMgYXJlIHBhc3NlZCB0byB0aGUgbWV0YWNsYXNzOgorICAgICAgICBkZWYgbWV0YV9mdW5jKG5hbWUsIGJhc2VzLCBucywgKiprdyk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSwgYmFzZXMsIG5zLCBrdworICAgICAgICByZXMgPSB0eXBlcy5uZXdfY2xhc3MoIlgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCwgb2JqZWN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPW1ldGFfZnVuYywgeD0wKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsICgiWCIsIChpbnQsIG9iamVjdCksIHt9LCB7IngiOiAwfSkpCisKKyAgICBkZWYgdGVzdF9uZXdfY2xhc3NfZGVmYXVsdHMoc2VsZik6CisgICAgICAgICMgVGVzdCBkZWZhdWx0cy9rZXl3b3JkczoKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsICgpLCB7fSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fbmFtZV9fLCAiQyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Jhc2VzX18sIChvYmplY3QsKSkKKworICAgIGRlZiB0ZXN0X25ld19jbGFzc19tZXRhX3dpdGhfYmFzZShzZWxmKToKKyAgICAgICAgTWV0YSA9IHNlbGYuTWV0YQorICAgICAgICBkZWYgZnVuYyhucyk6CisgICAgICAgICAgICBuc1sieCJdID0gMAorICAgICAgICBDID0gdHlwZXMubmV3X2NsYXNzKG5hbWU9IkMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VzPShpbnQsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2RzPWRpY3QobWV0YWNsYXNzPU1ldGEsIHo9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY19ib2R5PWZ1bmMpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIGludCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShDLCBNZXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMueCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLnksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy56LCAyKQorCisgICAgIyBNYW55IG9mIHRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIGRlcml2ZWQgZnJvbSB0ZXN0X2Rlc2NyLnB5CisgICAgZGVmIHRlc3RfcHJlcGFyZV9jbGFzcyhzZWxmKToKKyAgICAgICAgIyBCYXNpYyB0ZXN0IG9mIG1ldGFjbGFzcyBkZXJpdmF0aW9uCisgICAgICAgIGV4cGVjdGVkX25zID0ge30KKyAgICAgICAgY2xhc3MgQSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXygqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXygqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX25zCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsIChvYmplY3QsKSkKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChvYmplY3QsKSwgeyJtZXRhY2xhc3MiOiBBfSkKKworICAgICAgICAjIFRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIG9mIEQgaXMgQSByYXRoZXIgdGhhbiB0eXBlLgorICAgICAgICBtZXRhLCBucywga3dkcyA9IHR5cGVzLnByZXBhcmVfY2xhc3MoIkQiLCAoQiwgQyksIHsibWV0YWNsYXNzIjogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWV0YSwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhucywgZXhwZWN0ZWRfbnMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGt3ZHMpLCAwKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX2Rlcml2YXRpb24oc2VsZik6CisgICAgICAgICMgaXNzdWUxMjk0MjMyOiBjb3JyZWN0IG1ldGFjbGFzcyBjYWxjdWxhdGlvbgorICAgICAgICBuZXdfY2FsbHMgPSBbXSAgIyB0byBjaGVjayB0aGUgb3JkZXIgb2YgX19uZXdfXyBjYWxscworICAgICAgICBjbGFzcyBBTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQU1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7fQorCisgICAgICAgIGNsYXNzIEJNZXRhKEFNZXRhKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKG1jbHMsIG5hbWUsIGJhc2VzLCBucyk6CisgICAgICAgICAgICAgICAgbmV3X2NhbGxzLmFwcGVuZCgnQk1ldGEnKQorICAgICAgICAgICAgICAgIHJldHVybiBzdXBlcigpLl9fbmV3X18obWNscywgbmFtZSwgYmFzZXMsIG5zKQorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19wcmVwYXJlX18obWNscywgbmFtZSwgYmFzZXMpOgorICAgICAgICAgICAgICAgIG5zID0gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKyAgICAgICAgICAgICAgICBuc1snQk1ldGFfd2FzX2hlcmUnXSA9IFRydWUKKyAgICAgICAgICAgICAgICByZXR1cm4gbnMKKworICAgICAgICBBID0gdHlwZXMubmV3X2NsYXNzKCJBIiwgKCksIHsibWV0YWNsYXNzIjogQU1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEIgPSB0eXBlcy5uZXdfY2xhc3MoIkIiLCAoKSwgeyJtZXRhY2xhc3MiOiBCTWV0YX0pCisgICAgICAgICMgQk1ldGEuX19uZXdfXyBjYWxscyBBTWV0YS5fX25ld19fIHdpdGggc3VwZXI6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQyA9IHR5cGVzLm5ld19jbGFzcygiQyIsIChBLCBCKSkKKyAgICAgICAgIyBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBCTWV0YToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk1ldGEnLCAnQU1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKyAgICAgICAgIyBCTWV0YS5fX3ByZXBhcmVfXyBzaG91bGQndmUgYmVlbiBjYWxsZWQ6CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgQy5fX2RpY3RfXykKKworICAgICAgICAjIFRoZSBvcmRlciBvZiB0aGUgYmFzZXMgc2hvdWxkbid0IG1hdHRlcjoKKyAgICAgICAgQzIgPSB0eXBlcy5uZXdfY2xhc3MoIkMyIiwgKEIsIEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTWV0YScsICdBTWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEluKCdCTWV0YV93YXNfaGVyZScsIEMyLl9fZGljdF9fKQorCisgICAgICAgICMgQ2hlY2sgY29ycmVjdCBtZXRhY2xhc3MgY2FsY3VsYXRpb24gd2hlbiBhIG1ldGFjbGFzcyBpcyBkZWNsYXJlZDoKKyAgICAgICAgRCA9IHR5cGVzLm5ld19jbGFzcygiRCIsIChDLCksIHsibWV0YWNsYXNzIjogdHlwZX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRC5fX2RpY3RfXykKKworICAgICAgICBFID0gdHlwZXMubmV3X2NsYXNzKCJFIiwgKEMsKSwgeyJtZXRhY2xhc3MiOiBBTWV0YX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JNZXRhJywgJ0FNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JNZXRhX3dhc19oZXJlJywgRS5fX2RpY3RfXykKKworICAgIGRlZiB0ZXN0X21ldGFjbGFzc19vdmVycmlkZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBTcGVjaWFsIGNhc2U6IHRoZSBnaXZlbiBtZXRhY2xhc3MgaXNuJ3QgYSBjbGFzcywKKyAgICAgICAgIyBzbyB0aGVyZSBpcyBubyBtZXRhY2xhc3MgY2FsY3VsYXRpb24uCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPXNlbGYuTWV0YSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbWFya2VyID0gb2JqZWN0KCkKKyAgICAgICAgZGVmIGZ1bmMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHJldHVybiBtYXJrZXIKKworICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIFkgPSB0eXBlcy5uZXdfY2xhc3MoIlkiLCAob2JqZWN0LCksIHsibWV0YWNsYXNzIjogZnVuY30pCisgICAgICAgIFogPSB0eXBlcy5uZXdfY2xhc3MoIloiLCAoQSwpLCB7Im1ldGFjbGFzcyI6IGZ1bmN9KQorICAgICAgICBzZWxmLmFzc2VydElzKG1hcmtlciwgWCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtYXJrZXIsIFkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFya2VyLCBaKQorCisgICAgZGVmIHRlc3RfbWV0YWNsYXNzX292ZXJyaWRlX2NhbGxhYmxlKHNlbGYpOgorICAgICAgICAjIFRoZSBnaXZlbiBtZXRhY2xhc3MgaXMgYSBjbGFzcywKKyAgICAgICAgIyBidXQgbm90IGEgZGVzY2VuZGFudCBvZiB0eXBlLgorICAgICAgICBuZXdfY2FsbHMgPSBbXSAgIyB0byBjaGVjayB0aGUgb3JkZXIgb2YgX19uZXdfXyBjYWxscworICAgICAgICBwcmVwYXJlX2NhbGxzID0gW10gICMgdG8gdHJhY2sgX19wcmVwYXJlX18gY2FsbHMKKyAgICAgICAgY2xhc3MgQU5vdE1ldGE6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19jYWxscy5hcHBlbmQoJ0FOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcHJlcGFyZV9jYWxscy5hcHBlbmQoJ0FOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4ge30KKworICAgICAgICBjbGFzcyBCTm90TWV0YShBTm90TWV0YSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhtY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19jYWxscy5hcHBlbmQoJ0JOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKG1jbHMpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX3ByZXBhcmVfXyhtY2xzLCBuYW1lLCBiYXNlcyk6CisgICAgICAgICAgICAgICAgcHJlcGFyZV9jYWxscy5hcHBlbmQoJ0JOb3RNZXRhJykKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcykKKworICAgICAgICBBID0gdHlwZXMubmV3X2NsYXNzKCJBIiwgKCksIHsibWV0YWNsYXNzIjogQU5vdE1ldGF9KQorICAgICAgICBzZWxmLmFzc2VydElzKEFOb3RNZXRhLCB0eXBlKEEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgQiA9IHR5cGVzLm5ld19jbGFzcygiQiIsICgpLCB7Im1ldGFjbGFzcyI6IEJOb3RNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShCKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEMgPSB0eXBlcy5uZXdfY2xhc3MoIkMiLCAoQSwgQikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICBDMiA9IHR5cGVzLm5ld19jbGFzcygiQzIiLCAoQiwgQSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQk5vdE1ldGEsIHR5cGUoQzIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgIyBUaGlzIGlzIGEgVHlwZUVycm9yLCBiZWNhdXNlIG9mIGEgbWV0YWNsYXNzIGNvbmZsaWN0OgorICAgICAgICAjIEJOb3RNZXRhIGlzIG5laXRoZXIgYSBzdWJjbGFzcywgbm9yIGEgc3VwZXJjbGFzcyBvZiB0eXBlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEQgPSB0eXBlcy5uZXdfY2xhc3MoIkQiLCAoQywpLCB7Im1ldGFjbGFzcyI6IHR5cGV9KQorCisgICAgICAgIEUgPSB0eXBlcy5uZXdfY2xhc3MoIkUiLCAoQywpLCB7Im1ldGFjbGFzcyI6IEFOb3RNZXRhfSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcmVwYXJlX2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIHByZXBhcmVfY2FsbHMuY2xlYXIoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBuZXdfY2FsbHMuY2xlYXIoKQorCisgICAgICAgIEYgPSB0eXBlcy5uZXdfY2xhc3MoIkYiLCAob2JqZWN0KCksIEMpKQorICAgICAgICBzZWxmLmFzc2VydElzKEJOb3RNZXRhLCB0eXBlKEYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByZXBhcmVfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgcHJlcGFyZV9jYWxscy5jbGVhcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2NhbGxzLCBbJ0JOb3RNZXRhJywgJ0FOb3RNZXRhJ10pCisgICAgICAgIG5ld19jYWxscy5jbGVhcigpCisKKyAgICAgICAgRjIgPSB0eXBlcy5uZXdfY2xhc3MoIkYyIiwgKEMsIG9iamVjdCgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCTm90TWV0YSwgdHlwZShGMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJlcGFyZV9jYWxscywgWydCTm90TWV0YScsICdBTm90TWV0YSddKQorICAgICAgICBwcmVwYXJlX2NhbGxzLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY2FsbHMsIFsnQk5vdE1ldGEnLCAnQU5vdE1ldGEnXSkKKyAgICAgICAgbmV3X2NhbGxzLmNsZWFyKCkKKworICAgICAgICAjIFR5cGVFcnJvcjogQk5vdE1ldGEgaXMgbmVpdGhlciBhCisgICAgICAgICMgc3ViY2xhc3MsIG5vciBhIHN1cGVyY2xhc3Mgb2YgaW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoQywgaW50KCkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBYID0gdHlwZXMubmV3X2NsYXNzKCJYIiwgKGludCgpLCBDKSkKKworCitjbGFzcyBTaW1wbGVOYW1lc3BhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKipkaWN0KHg9MSwgeT0yKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoMSwgMiwgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuczEuX19kaWN0X18pLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG5zMi5fX2RpY3RfXyksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhuczIpLCB7J3knOiAyLCAneCc6IDF9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuczMuX19kaWN0X18pLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMzKSwgeyd5JzogMiwgJ3gnOiAxfSkKKworICAgIGRlZiB0ZXN0X3VuYm91bmQoc2VsZik6CisgICAgICAgIG5zMSA9IHZhcnModHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkpCisgICAgICAgIG5zMiA9IHZhcnModHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLCB7J3knOiAyLCAneCc6IDF9KQorCisgICAgZGVmIHRlc3RfdW5kZXJseWluZ19kaWN0KHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIpCisgICAgICAgIG5zMyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShhPVRydWUsIGI9RmFsc2UpCisgICAgICAgIG1hcHBpbmcgPSBuczMuX19kaWN0X18KKyAgICAgICAgZGVsIG5zMworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLl9fZGljdF9fLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczIuX19kaWN0X18sIHsneSc6IDIsICd4JzogMX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZywgZGljdChhPVRydWUsIGI9RmFsc2UpKQorCisgICAgZGVmIHRlc3RfYXR0cmdldChzZWxmKToKKyAgICAgICAgbnMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xLCB5PTIsIHc9MykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLngsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMueSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy53LCAzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yKToKKyAgICAgICAgICAgIG5zLnoKKworICAgIGRlZiB0ZXN0X2F0dHJzZXQoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSh4PTEsIHk9Miwgdz0zKQorICAgICAgICBuczEuYSA9ICdzcGFtJworICAgICAgICBuczEuYiA9ICdoYW0nCisgICAgICAgIG5zMi56ID0gNAorICAgICAgICBuczIudGhldGEgPSBOb25lCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuX19kaWN0X18sIGRpY3QoYT0nc3BhbScsIGI9J2hhbScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5fX2RpY3RfXywgZGljdCh4PTEsIHk9Miwgdz0zLCB6PTQsIHRoZXRhPU5vbmUpKQorCisgICAgZGVmIHRlc3RfYXR0cmRlbChzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgbnMxLnNwYW0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBkZWwgbnMyLnNwYW0KKworICAgICAgICBkZWwgbnMyLnkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIGRpY3Qodz0zLCB4PTEpKQorICAgICAgICBuczIueSA9ICdzcGFtJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdCh3PTMsIHg9MSwgeT0nc3BhbScpKQorICAgICAgICBkZWwgbnMyLnkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMiksIGRpY3Qodz0zLCB4PTEpKQorCisgICAgICAgIG5zMS5zcGFtID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMxKSwgZGljdChzcGFtPTUpKQorICAgICAgICBkZWwgbnMxLnNwYW0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMSksIHt9KQorCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbnMxID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSwgeT0yLCB3PTMpCisgICAgICAgIG5zMiA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZSgpCisgICAgICAgIG5zMi54ID0gInNwYW0iCisgICAgICAgIG5zMi5feSA9IDUKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwgIm5hbWVzcGFjZSh3PTMsIHg9MSwgeT0yKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihuczIpLCAibmFtZXNwYWNlKF95PTUsIHg9J3NwYW0nKSIpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWQoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShhPTEsIGI9MikKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9bnMxKQorICAgICAgICBuczIuc3BhbSA9IG5zMQorICAgICAgICBuczIuaGFtID0gJz8nCisgICAgICAgIG5zMi5zcGFtID0gbnMzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMSksIGRpY3QoYT0xLCBiPTIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhcnMobnMyKSwgZGljdChzcGFtPW5zMywgaGFtPSc/JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0sIG5zMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXJzKG5zMyksIGRpY3QoeD1uczEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMy54LmEsIDEpCisKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmUoc2VsZik6CisgICAgICAgIG5zMSA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShjPSdjb29raWUnKQorICAgICAgICBuczIgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoKQorICAgICAgICBuczMgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoeD0xKQorICAgICAgICBuczEuc3BhbSA9IG5zMQorICAgICAgICBuczIuc3BhbSA9IG5zMworICAgICAgICBuczMuc3BhbSA9IG5zMgorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLnNwYW0sIG5zMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczEuc3BhbS5zcGFtLCBuczEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMxLnNwYW0uc3BhbSwgbnMxLnNwYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMyLnNwYW0sIG5zMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuczMuc3BhbSwgbnMyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zMi5zcGFtLnNwYW0sIG5zMikKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgorICAgICAgICBuczEgPSB0eXBlcy5TaW1wbGVOYW1lc3BhY2UoYz0nY29va2llJykKKyAgICAgICAgbnMyID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKCkKKyAgICAgICAgbnMzID0gdHlwZXMuU2ltcGxlTmFtZXNwYWNlKHg9MSkKKyAgICAgICAgbnMxLnNwYW0gPSBuczEKKyAgICAgICAgbnMyLnNwYW0gPSBuczMKKyAgICAgICAgbnMzLnNwYW0gPSBuczIKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobnMxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZXNwYWNlKGM9J2Nvb2tpZScsIHNwYW09bmFtZXNwYWNlKC4uLikpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG5zMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVzcGFjZShzcGFtPW5hbWVzcGFjZShzcGFtPW5hbWVzcGFjZSguLi4pLCB4PTEpKSIpCisKKyAgICBkZWYgdGVzdF9hc19kaWN0KHNlbGYpOgorICAgICAgICBucyA9IHR5cGVzLlNpbXBsZU5hbWVzcGFjZShzcGFtPSdzcGFtc3BhbXNwYW0nKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGxlbihucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaXRlcihucykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgJ3NwYW0nIGluIG5zCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG5zWydzcGFtJ10KKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBTcGFtKHR5cGVzLlNpbXBsZU5hbWVzcGFjZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc3BhbSA9IFNwYW0oaGFtPTgsIGVnZ3M9OSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoc3BhbSksIFNwYW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFycyhzcGFtKSwgeydoYW0nOiA4LCAnZWdncyc6IDl9KQorCisKIGRlZiB0ZXN0X21haW4oKToKLSAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cykKKyAgICBydW5fdW5pdHRlc3QoVHlwZXNUZXN0cywgTWFwcGluZ1Byb3h5VGVzdHMsIENsYXNzQ3JlYXRpb25UZXN0cywKKyAgICAgICAgICAgICAgICAgU2ltcGxlTmFtZXNwYWNlVGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdWNuLnB5IGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKaW5kZXggZmQ2MjBmMC4uNjhhMzIxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91Y24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91Y24ucHkKQEAgLTgsOCArOCwxMSBAQAogIiIiIyIKIAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pY29kZWRhdGEKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGh0dHAuY2xpZW50IGltcG9ydCBIVFRQRXhjZXB0aW9uCitmcm9tIHRlc3QudGVzdF9ub3JtYWxpemF0aW9uIGltcG9ydCBjaGVja192ZXJzaW9uCiAKIGNsYXNzIFVuaWNvZGVOYW1lc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC01OSw4ICs2Miw2IEBACiAgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2FzY2lpX2xldHRlcnMoc2VsZik6Ci0gICAgICAgIGltcG9ydCB1bmljb2RlZGF0YQotCiAgICAgICAgIGZvciBjaGFyIGluICIiLmpvaW4obWFwKGNociwgcmFuZ2Uob3JkKCJhIiksIG9yZCgieiIpKSkpOgogICAgICAgICAgICAgbmFtZSA9ICJMQVRJTiBTTUFMTCBMRVRURVIgJXMiICUgY2hhci51cHBlcigpCiAgICAgICAgICAgICBjb2RlID0gdW5pY29kZWRhdGEubG9va3VwKG5hbWUpCkBAIC04MSw3ICs4Miw2IEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTkdVTCBTWUxMQUJMRSBIV0VPSyIsICJcdWQ2ZjgiKQogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJIQU5HVUwgU1lMTEFCTEUgSElIIiwgIlx1ZDdhMyIpCiAKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUsICJcdWQ3YTQiKQogCiAgICAgZGVmIHRlc3RfY2prX3VuaWZpZWRfaWRlb2dyYXBocyhzZWxmKToKQEAgLTk3LDE0ICs5NywxMSBAQAogICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKCJDSksgVU5JRklFRCBJREVPR1JBUEgtMkI4MUQiLCAiXFUwMDAyQjgxRCIpCiAKICAgICBkZWYgdGVzdF9ibXBfY2hhcmFjdGVycyhzZWxmKToKLSAgICAgICAgaW1wb3J0IHVuaWNvZGVkYXRhCi0gICAgICAgIGNvdW50ID0gMAogICAgICAgICBmb3IgY29kZSBpbiByYW5nZSgweDEwMDAwKToKICAgICAgICAgICAgIGNoYXIgPSBjaHIoY29kZSkKICAgICAgICAgICAgIG5hbWUgPSB1bmljb2RlZGF0YS5uYW1lKGNoYXIsIE5vbmUpCiAgICAgICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKG5hbWUpLCBjaGFyKQotICAgICAgICAgICAgICAgIGNvdW50ICs9IDEKIAogICAgIGRlZiB0ZXN0X21pc2Nfc3ltYm9scyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja2xldHRlcigiUElMQ1JPVyBTSUdOIiwgIlx1MDBiNiIpCkBAIC0xMTIsOCArMTA5LDg1IEBACiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkhBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLIiwgIlx1RkY5RiIpCiAgICAgICAgIHNlbGYuY2hlY2tsZXR0ZXIoIkZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQSIsICJcdUZGNDEiKQogCisgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBhbGlhc2VzIGRlZmluZWQgaW4gdGhlIE5hbWVBbGlhc2VzLnR4dCBmaWxlIHdvcmsuCisgICAgICAgICMgVGhpcyBzaG91bGQgYmUgdXBkYXRlZCB3aGVuIG5ldyBhbGlhc2VzIGFyZSBhZGRlZCBvciB0aGUgZmlsZQorICAgICAgICAjIHNob3VsZCBiZSBkb3dubG9hZGVkIGFuZCBwYXJzZWQgaW5zdGVhZC4gIFNlZSAjMTI3NTMuCisgICAgICAgIGFsaWFzZXMgPSBbCisgICAgICAgICAgICAoJ0xBVElOIENBUElUQUwgTEVUVEVSIEdIQScsIDB4MDFBMiksCisgICAgICAgICAgICAoJ0xBVElOIFNNQUxMIExFVFRFUiBHSEEnLCAweDAxQTMpLAorICAgICAgICAgICAgKCdLQU5OQURBIExFVFRFUiBMTExBJywgMHgwQ0RFKSwKKyAgICAgICAgICAgICgnTEFPIExFVFRFUiBGTyBGT04nLCAweDBFOUQpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIEZPIEZBWScsIDB4MEU5RiksCisgICAgICAgICAgICAoJ0xBTyBMRVRURVIgUk8nLCAweDBFQTMpLAorICAgICAgICAgICAgKCdMQU8gTEVUVEVSIExPJywgMHgwRUE1KSwKKyAgICAgICAgICAgICgnVElCRVRBTiBNQVJLIEJLQS0gU0hPRyBHSSBNR08gUkdZQU4nLCAweDBGRDApLAorICAgICAgICAgICAgKCdZSSBTWUxMQUJMRSBJVEVSQVRJT04gTUFSSycsIDB4QTAxNSksCisgICAgICAgICAgICAoJ1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQnLCAweEZFMTgpLAorICAgICAgICAgICAgKCdCWVpBTlRJTkUgTVVTSUNBTCBTWU1CT0wgRlRIT1JBIFNLTElST04gQ0hST01BIFZBU0lTJywgMHgxRDBDNSkKKyAgICAgICAgXQorICAgICAgICBmb3IgYWxpYXMsIGNvZGVwb2ludCBpbiBhbGlhc2VzOgorICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihhbGlhcywgY2hyKGNvZGVwb2ludCkpCisgICAgICAgICAgICBuYW1lID0gdW5pY29kZWRhdGEubmFtZShjaHIoY29kZXBvaW50KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobmFtZSwgYWxpYXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVkYXRhLmxvb2t1cChhbGlhcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLmxvb2t1cChuYW1lKSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVjZF8zXzJfMC5sb29rdXAoYWxpYXMpCisKKyAgICBkZWYgdGVzdF9hbGlhc2VzX25hbWVzX2luX3B1YV9yYW5nZShzZWxmKToKKyAgICAgICAgIyBXZSBhcmUgc3RvcmluZyBhbGlhc2VzIGluIHRoZSBQVUEgMTUsIGJ1dCB0aGVpciBuYW1lcyBzaG91bGRuJ3QgbGVhaworICAgICAgICBmb3IgY3AgaW4gcmFuZ2UoMHhmMDAwMCwgMHhmMDEwMCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLm5hbWUoY2hyKGNwKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdubyBzdWNoIG5hbWUnKQorCisgICAgZGVmIHRlc3RfbmFtZWRfc2VxdWVuY2VzX25hbWVzX2luX3B1YV9yYW5nZShzZWxmKToKKyAgICAgICAgIyBXZSBhcmUgc3RvcmluZyBuYW1lZCBzZXEgaW4gdGhlIFBVQSAxNSwgYnV0IHRoZWlyIG5hbWVzIHNob3VsZG4ndCBsZWFrCisgICAgICAgIGZvciBjcCBpbiByYW5nZSgweGYwMTAwLCAweGYwZmZmKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEubmFtZShjaHIoY3ApKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgJ25vIHN1Y2ggbmFtZScpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfc2FtcGxlKHNlbGYpOgorICAgICAgICAjIENoZWNrIGEgZmV3IG5hbWVkIHNlcXVlbmNlcy4gIFNlZSAjMTI3NTMuCisgICAgICAgIHNlcXVlbmNlcyA9IFsKKyAgICAgICAgICAgICgnTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBUSUxERScsICdcdTAwNzJcdTAzMDMnKSwKKyAgICAgICAgICAgICgnVEFNSUwgU1lMTEFCTEUgU0FJJywgJ1x1MEJCOFx1MEJDOCcpLAorICAgICAgICAgICAgKCdUQU1JTCBTWUxMQUJMRSBNT08nLCAnXHUwQkFFXHUwQkNCJyksCisgICAgICAgICAgICAoJ1RBTUlMIFNZTExBQkxFIE5OT08nLCAnXHUwQkEzXHUwQkNCJyksCisgICAgICAgICAgICAoJ1RBTUlMIENPTlNPTkFOVCBLU1MnLCAnXHUwQjk1XHUwQkNEXHUwQkI3XHUwQkNEJyksCisgICAgICAgIF0KKyAgICAgICAgZm9yIHNlcW5hbWUsIGNvZGVwb2ludHMgaW4gc2VxdWVuY2VzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlZGF0YS5sb29rdXAoc2VxbmFtZSksIGNvZGVwb2ludHMpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrbGV0dGVyKHNlcW5hbWUsIE5vbmUpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgICAgICB1bmljb2RlZGF0YS51Y2RfM18yXzAubG9va3VwKHNlcW5hbWUpCisKKyAgICBkZWYgdGVzdF9uYW1lZF9zZXF1ZW5jZXNfZnVsbChzZWxmKToKKyAgICAgICAgIyBDaGVjayBhbGwgdGhlIG5hbWVkIHNlcXVlbmNlcworICAgICAgICB1cmwgPSAoImh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLyVzL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQiICUKKyAgICAgICAgICAgICAgIHVuaWNvZGVkYXRhLnVuaWRhdGFfdmVyc2lvbikKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdGRhdGEgPSBzdXBwb3J0Lm9wZW5fdXJscmVzb3VyY2UodXJsLCBlbmNvZGluZz0idXRmLTgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2s9Y2hlY2tfdmVyc2lvbikKKyAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBIVFRQRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIkNvdWxkIG5vdCByZXRyaWV2ZSAiICsgdXJsKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdGRhdGEuY2xvc2UpCisgICAgICAgIGZvciBsaW5lIGluIHRlc3RkYXRhOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlcW5hbWUsIGNvZGVwb2ludHMgPSBsaW5lLnNwbGl0KCc7JykKKyAgICAgICAgICAgIGNvZGVwb2ludHMgPSAnJy5qb2luKGNocihpbnQoY3AsIDE2KSkgZm9yIGNwIGluIGNvZGVwb2ludHMuc3BsaXQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZWRhdGEubG9va3VwKHNlcW5hbWUpLCBjb2RlcG9pbnRzKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5jaGVja2xldHRlcihzZXFuYW1lLCBOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgdW5pY29kZWRhdGEudWNkXzNfMl8wLmxvb2t1cChzZXFuYW1lKQorCiAgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgotICAgICAgICBpbXBvcnQgdW5pY29kZWRhdGEKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB1bmljb2RlZGF0YS5uYW1lKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHVuaWNvZGVkYXRhLm5hbWUsICd4eCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdW5pY29kZWRhdGEubG9va3VwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDE5YjA2YTAuLmIxM2E5MGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTUsMTcgKzUsMTMgQEAKIChjKSBDb3B5cmlnaHQgQ05SSSwgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gTk8gV0FSUkFOVFkuCiAKICIiIiMiCitpbXBvcnQgX3N0cmluZwogaW1wb3J0IGNvZGVjcwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgc3RyaW5nX3Rlc3RzCi1pbXBvcnQgX3N0cmluZwotCi0jIGRlY29yYXRvciB0byBza2lwIHRlc3RzIG9uIG5hcnJvdyBidWlsZHMKLXJlcXVpcmVzX3dpZGVfYnVpbGQgPSB1bml0dGVzdC5za2lwSWYoc3lzLm1heHVuaWNvZGUgPT0gNjU1MzUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1aXJlcyB3aWRlIGJ1aWxkJykKIAogIyBFcnJvciBoYW5kbGluZyAoYmFkIGRlY29kZXIgcmV0dXJuKQogZGVmIHNlYXJjaF9mdW5jdGlvbihlbmNvZGluZyk6CkBAIC0xNzUsNiArMTcxLDE1IEBACiAKICAgICBkZWYgdGVzdF9maW5kKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuQ29tbW9uVGVzdC50ZXN0X2ZpbmQoc2VsZikKKyAgICAgICAgIyB0ZXN0IGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIG1lbWNociBmYXN0IHBhdGgKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDEwMCwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDEwMicpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDIwMScpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDEyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1x1MDEwMicsICdmaW5kJywgJ1x1MDIyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgxMDAsICdhJyAqIDEwMCArICdcVTAwMTAwMzA0JywgJ2ZpbmQnLCAnXFUwMDEwMDMwNCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ2EnICogMTAwICsgJ1xVMDAxMDAzMDQnLCAnZmluZCcsICdcVTAwMTAwMjA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnYScgKiAxMDAgKyAnXFUwMDEwMDMwNCcsICdmaW5kJywgJ1xVMDAxMDIwMDQnKQorICAgICAgICAjIGNoZWNrIG1peGVkIGFyZ3VtZW50IHR5cGVzCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KDAsICAnYWJjZGVmZ2hpYWJjJywgJ2ZpbmQnLCAnYWJjJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoOSwgICdhYmNkZWZnaGlhYmMnLCAnZmluZCcsICdhYmMnLCAxKQogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCgtMSwgJ2FiY2RlZmdoaWFiYycsICdmaW5kJywgJ2RlZicsIDQpCkBAIC0xODQsNiArMTg5LDE0IEBACiAKICAgICBkZWYgdGVzdF9yZmluZChzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9yZmluZChzZWxmKQorICAgICAgICAjIHRlc3QgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGUgbWVtcmNociBmYXN0IHBhdGgKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKDAsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDEwMicpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgtMSwgJ1x1MDEwMicgKyAnYScgKiAxMDAgLCAncmZpbmQnLCAnXHUwMjAxJykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXHUwMTAyJyArICdhJyAqIDEwMCAsICdyZmluZCcsICdcdTAxMjAnKQorICAgICAgICBzZWxmLmNoZWNrZXF1YWwoLTEsICdcdTAxMDInICsgJ2EnICogMTAwICwgJ3JmaW5kJywgJ1x1MDIyMCcpCisgICAgICAgIHNlbGYuY2hlY2tlcXVhbCgwLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAwMzA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAwMjA0JykKKyAgICAgICAgc2VsZi5jaGVja2VxdWFsKC0xLCAnXFUwMDEwMDMwNCcgKyAnYScgKiAxMDAsICdyZmluZCcsICdcVTAwMTAyMDA0JykKICAgICAgICAgIyBjaGVjayBtaXhlZCBhcmd1bWVudCB0eXBlcwogICAgICAgICBzZWxmLmNoZWNrZXF1YWxub2ZpeCg5LCAgICdhYmNkZWZnaGlhYmMnLCAncmZpbmQnLCAnYWJjJykKICAgICAgICAgc2VsZi5jaGVja2VxdWFsbm9maXgoMTIsICAnYWJjZGVmZ2hpYWJjJywgJ3JmaW5kJywgJycpCkBAIC0yODAsNiArMjkzLDEyIEBACiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KCdvbmVAdHdvIXRocmVlIScsICdvbmUhdHdvIXRocmVlIScsICdyZXBsYWNlJywgJyEnLCAnQCcsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ3JlcGxhY2UnLnJlcGxhY2UsICJyIiwgNDIpCiAKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZXBsYWNlX2lkKHNlbGYpOgorICAgICAgICBwYXR0ZXJuID0gJ2FiYycKKyAgICAgICAgdGV4dCA9ICdhYmMgZGVmJworICAgICAgICBzZWxmLmFzc2VydElzKHRleHQucmVwbGFjZShwYXR0ZXJuLCBwYXR0ZXJuKSwgdGV4dCkKKwogICAgIGRlZiB0ZXN0X2J5dGVzX2NvbXBhcmlzb24oc2VsZik6CiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBCeXRlc1dhcm5pbmcpCkBAIC0zNTAsNiArMzY5LDggQEAKICAgICBkZWYgdGVzdF9pc2xvd2VyKHNlbGYpOgogICAgICAgICBzdHJpbmdfdGVzdHMuTWl4aW5TdHJVbmljb2RlVXNlclN0cmluZ1Rlc3QudGVzdF9pc2xvd2VyKHNlbGYpCiAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KEZhbHNlLCAnXHUxRkZjJywgJ2lzbG93ZXInKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcdTIxNjcnLmlzbG93ZXIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcdTIxNzcnLmlzbG93ZXIoKSkKICAgICAgICAgIyBub24tQk1QLCB1cHBlcmNhc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnXFUwMDAxMDQwMScuaXNsb3dlcigpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcVTAwMDEwNDI3Jy5pc2xvd2VyKCkpCkBAIC0zNjQsNiArMzg1LDggQEAKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfaXN1cHBlcihzZWxmKQogICAgICAgICBpZiBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2phdmEnKToKICAgICAgICAgICAgIHNlbGYuY2hlY2tlcXVhbG5vZml4KEZhbHNlLCAnXHUxRkZjJywgJ2lzdXBwZXInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ1x1MjE2NycuaXN1cHBlcigpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdcdTIxNzcnLmlzdXBwZXIoKSkKICAgICAgICAgIyBub24tQk1QLCB1cHBlcmNhc2UKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdcVTAwMDEwNDAxJy5pc3VwcGVyKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnXFUwMDAxMDQyNycuaXN1cHBlcigpKQpAQCAtNTIwLDcgKzU0Myw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtZXRoKHMpLCAnJWEuJXMoKSBpcyBGYWxzZScgJSAocywgbWV0aF9uYW1lKSkKIAogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF9sb3dlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9sb3dlcihzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDI3Jy5sb3dlcigpLCAnXFUwMDAxMDQ0RicpCkBAIC01MzAsOCArNTUyLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0NEZcVTAwMDEwNDRGJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicubG93ZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAneFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScubG93ZXIoKSwgJ++sgScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcubG93ZXIoKSwgJ1x1MDA2OVx1MDMwNycpCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQSBVKzAzQTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5sb3dlcigpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMzQ1XHUwM2EzJy5sb3dlcigpLCAnXHUwMzQ1XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzYScubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzNhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycubG93ZXIoKSwgJ2FcdTAzNDVcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzXHUwMzQ1Jy5sb3dlcigpLCAnYVx1MDNjMlx1MDM0NScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhM1x1MDM0NSAnLmxvd2VyKCksICdcdTAzYzNcdTAzNDUgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDA4ZmZmZScubG93ZXIoKSwgJ1xVMDAwOGZmZmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIxNzcnLmxvd2VyKCksICdcdTIxNzcnKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKKyAgICBkZWYgdGVzdF9jYXNlZm9sZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmNhc2Vmb2xkKCksICdoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hFTGxvJy5jYXNlZm9sZCgpLCAnaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfDnycuY2FzZWZvbGQoKSwgJ3NzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBJy5jYXNlZm9sZCgpLCAnZmknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTAzYTMnLmNhc2Vmb2xkKCksICdcdTAzYzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzJy5jYXNlZm9sZCgpLCAnYVx1MDNiOVx1MDNjMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDBiNScuY2FzZWZvbGQoKSwgJ1x1MDNiYycpCisKICAgICBkZWYgdGVzdF91cHBlcihzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF91cHBlcihzZWxmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcVTAwMDEwNDRGJy51cHBlcigpLCAnXFUwMDAxMDQyNycpCkBAIC01NDEsOCArNTgzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xVMDAwMTA0MjdcVTAwMDEwNDI3JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicudXBwZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0MjdYXFUwMDAxMDQyNycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ++sgScudXBwZXIoKSwgJ0ZJJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMTMwJy51cHBlcigpLCAnXHUwMTMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy51cHBlcigpLCAnXHUwM2EzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLnVwcGVyKCksICdTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMicudXBwZXIoKSwgJ1x1MDM5OVx1MDMwOFx1MDMwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwOGZmZmUnLnVwcGVyKCksICdcVTAwMDhmZmZlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUyMTc3Jy51cHBlcigpLCAnXHUyMTY3JykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3RfY2FwaXRhbGl6ZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLkNvbW1vblRlc3QudGVzdF9jYXBpdGFsaXplKHNlbGYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTA0NEYnLmNhcGl0YWxpemUoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTU0LDggKzYwMiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLmNhcGl0YWxpemUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hcdTAxMzAnLmNhcGl0YWxpemUoKSwgJ0hcdTAwNjlcdTAzMDcnKQorICAgICAgICBleHAgPSAnXHUwMzk5XHUwMzA4XHUwMzAwXHUwMDY5XHUwMzA3JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTFmZDJcdTAxMzAnLmNhcGl0YWxpemUoKSwgZXhwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIFubmlzaCcuY2FwaXRhbGl6ZSgpLCAnRklubmlzaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FcdTAzNDVcdTAzYTMnLmNhcGl0YWxpemUoKSwgJ0FcdTAzNDVcdTAzYzInKQogCi0gICAgQHJlcXVpcmVzX3dpZGVfYnVpbGQKICAgICBkZWYgdGVzdF90aXRsZShzZWxmKToKICAgICAgICAgc3RyaW5nX3Rlc3RzLk1peGluU3RyVW5pY29kZVVzZXJTdHJpbmdUZXN0LnRlc3RfdGl0bGUoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0RicudGl0bGUoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTY5LDggKzYyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RiBcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYgWFxVMDAwMTA0Mjd4XFUwMDAxMDQ0RicudGl0bGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnWFxVMDAwMTA0NEZ4XFUwMDAxMDQ0RiBYXFUwMDAxMDQ0RnhcVTAwMDEwNDRGJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn76yBTk5JU0gnLnRpdGxlKCksICdGaW5uaXNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDNhMyBcdTFmYTF4eScudGl0bGUoKSwgJ0FcdTAzYzIgXHUxZmE5eHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzQScudGl0bGUoKSwgJ0FcdTAzYzNhJykKIAotICAgIEByZXF1aXJlc193aWRlX2J1aWxkCiAgICAgZGVmIHRlc3Rfc3dhcGNhc2Uoc2VsZik6CiAgICAgICAgIHN0cmluZ190ZXN0cy5Db21tb25UZXN0LnRlc3Rfc3dhcGNhc2Uoc2VsZikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDQ0Ricuc3dhcGNhc2UoKSwgJ1xVMDAwMTA0MjcnKQpAQCAtNTgzLDYgKzYzNywxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICdcVTAwMDEwNDI3XFUwMDAxMDQ0RicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1hcVTAwMDEwNDI3eFxVMDAwMTA0NEYnLnN3YXBjYXNlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3hcVTAwMDEwNDRGWFxVMDAwMTA0MjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCfvrIEnLnN3YXBjYXNlKCksICdGSScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDEzMCcuc3dhcGNhc2UoKSwgJ1x1MDA2OVx1MDMwNycpCisgICAgICAgICMgU3BlY2lhbCBjYXNlIGZvciBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQSBVKzAzQTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwMzQ1XHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwMzk5XHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwMzQ1XHUwM2EzYScuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzNBJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVx1MDM0NVx1MDNhMycuc3dhcGNhc2UoKSwgJ2FcdTAzOTlcdTAzYzInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBXHUwM2EzXHUwMzQ1Jy5zd2FwY2FzZSgpLCAnYVx1MDNjMlx1MDM5OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MDNhM1x1MDM0NSAnLnN3YXBjYXNlKCksICdcdTAzYzNcdTAzOTkgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHUwM2EzJy5zd2FwY2FzZSgpLCAnXHUwM2MzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnw58nLnN3YXBjYXNlKCksICdTUycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1MWZkMicuc3dhcGNhc2UoKSwgJ1x1MDM5OVx1MDMwOFx1MDMwMCcpCiAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIFVuaWNvZGUgY29udGFpbnMgbWV0aG9kCkBAIC03NzYsNyArODQzLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezAhc30nLmZvcm1hdChHKCdkYXRhJykpLCAnc3RyaW5nIGlzIGRhdGEnKQogCiAgICAgICAgIG1zZyA9ICdvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcgaXMgZGVwcmVjYXRlZCcKLSAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6XjEwfScuZm9ybWF0KEUoJ2RhdGEnKSksICcgRShkYXRhKSAgJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3swOl4xMHN9Jy5mb3JtYXQoRSgnZGF0YScpKSwgJyBFKGRhdGEpICAnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnezA6PjE1c30nLmZvcm1hdChHKCdkYXRhJykpLCAnIHN0cmluZyBpcyBkYXRhJykKQEAgLTg1OCw2ICs5MjUsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAnJywgJyMnKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsICcnLCAnIzIwJykKIAorICAgICAgICAjIE5vbi1BU0NJSQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ7MDpzfXsxOnN9Ii5mb3JtYXQoIkFCQyIsICJcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDXHUwNDEwXHUwNDExXHUwNDEyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6LjNzfSIuZm9ybWF0KCJBQkNcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQUJDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiezA6LjBzfSIuZm9ybWF0KCJBQkNcdTA0MTBcdTA0MTFcdTA0MTIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0X21hcCh7fSksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhJy5mb3JtYXRfbWFwKHt9KSwgJ2EnKQpAQCAtOTkwLDYgKzEwNjUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJWYnICUgSU5GLCAnaW5mJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJUYnICUgSU5GLCAnSU5GJykKIAorICAgICAgICAjIFBFUCAzOTMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJS4xcycgJSAiYVx4ZTlcdTIwYWMiLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyUuMnMnICUgImFceGU5XHUyMGFjIiwgJ2FceGU5JykKKwogICAgIGRlZiB0ZXN0X3N0YXJ0c3dpdGhfZW5kc3dpdGhfZXJyb3JzKHNlbGYpOgogICAgICAgICBmb3IgbWV0aCBpbiAoJ2Zvbycuc3RhcnRzd2l0aCwgJ2ZvbycuZW5kc3dpdGgpOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtMTAxNCwxMCArMTA5MywxMyBAQAogICAgICAgICBjbGFzcyBVbmljb2RlU3ViY2xhc3Moc3RyKToKICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgc3RyKFVuaWNvZGVTdWJjbGFzcygndW5pY29kZSBzdWJjbGFzcyBiZWNvbWVzIHVuaWNvZGUnKSksCi0gICAgICAgICAgICAndW5pY29kZSBzdWJjbGFzcyBiZWNvbWVzIHVuaWNvZGUnCi0gICAgICAgICkKKyAgICAgICAgZm9yIHRleHQgaW4gKCdhc2NpaScsICdceGU5JywgJ1x1MjBhYycsICdcVTAwMTBGRkZGJyk6CisgICAgICAgICAgICBzdWJjbGFzcyA9IFVuaWNvZGVTdWJjbGFzcyh0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc3ViY2xhc3MpLCB0ZXh0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3ViY2xhc3MpLCBsZW4odGV4dCkpCisgICAgICAgICAgICBpZiB0ZXh0ID09ICdhc2NpaSc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdWJjbGFzcy5lbmNvZGUoJ2FzY2lpJyksIGInYXNjaWknKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3ViY2xhc3MuZW5jb2RlKCd1dGYtOCcpLCBiJ2FzY2lpJykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgc3RyKCdzdHJpbmdzIGFyZSBjb252ZXJ0ZWQgdG8gdW5pY29kZScpLApAQCAtMTEyMywxNSArMTIwNSwxMiBAQAogICAgIGRlZiB0ZXN0X2NvZGVjc191dGY4KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmVuY29kZSgndXRmLTgnKSwgYicnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTIwYWMnLmVuY29kZSgndXRmLTgnKSwgYidceGUyXHg4Mlx4YWMnKQotICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA9PSA2NTUzNToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZDgwMFx1ZGMwMicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceDkwXHg4MFx4ODInKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHVkODRkXHVkYzU2Jy5lbmNvZGUoJ3V0Zi04JyksIGInXHhmMFx4YTNceDkxXHg5NicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xVMDAwMTAwMDInLmVuY29kZSgndXRmLTgnKSwgYidceGYwXHg5MFx4ODBceDgyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAyMzQ1NicuZW5jb2RlKCd1dGYtOCcpLCBiJ1x4ZjBceGEzXHg5MVx4OTYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdWQ4MDAnLmVuY29kZSgndXRmLTgnLCAnc3Vycm9nYXRlcGFzcycpLCBiJ1x4ZWRceGEwXHg4MCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x1ZGMwMCcuZW5jb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVwYXNzJyksIGInXHhlZFx4YjBceDgwJykKLSAgICAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgICAgICgnXHVkODAwXHVkYzAyJyoxMDAwKS5lbmNvZGUoJ3V0Zi04JyksCi0gICAgICAgICAgICAgICAgYidceGYwXHg5MFx4ODBceDgyJyoxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnXFUwMDAxMDAwMicqMTApLmVuY29kZSgndXRmLTgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ1x4ZjBceDkwXHg4MFx4ODInKjEwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgJ1x1NmI2M1x1NzhiYVx1MzA2Ylx1OGEwMFx1MzA0Nlx1MzA2OFx1N2ZmYlx1OGEzM1x1MzA2ZicKICAgICAgICAgICAgICdcdTMwNTVcdTMwOGNcdTMwNjZcdTMwNDRcdTMwN2VcdTMwNWJcdTMwOTNcdTMwMDJcdTRlMDAnCkBAIC0xMzQ0LDE0ICsxNDIzLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzdHIsIGIiaGVsbG8iLCAidGVzdC51bmljb2RlMiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgImhlbGxvIi5lbmNvZGUsICJ0ZXN0LnVuaWNvZGUxIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAiaGVsbG8iLmVuY29kZSwgInRlc3QudW5pY29kZTIiKQotICAgICAgICAjIGV4ZWN1dGVzIFB5VW5pY29kZV9FbmNvZGUoKQotICAgICAgICBpbXBvcnQgaW1wCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotICAgICAgICAgICAgSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICBpbXAuZmluZF9tb2R1bGUsCi0gICAgICAgICAgICAibm9uLWV4aXN0aW5nIG1vZHVsZSIsCi0gICAgICAgICAgICBbIm5vbi1leGlzdGluZyBkaXIiXQotICAgICAgICApCiAKICAgICAgICAgIyBFcnJvciBoYW5kbGluZyAod3JvbmcgYXJndW1lbnRzKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJoZWxsbyIuZW5jb2RlLCA0MiwgNDIsIDQyKQpAQCAtMTM2OSwxOCArMTQ0MCwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCdhc2NpaScpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTcnKSwgYidoZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi04JyksIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGY4JyksIGInaGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCd1dGYtOCcpLCBiJ2hlbGxvJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLmVuY29kZSgndXRmLTE2LWxlJyksIGInaFwwMDBlXDAwMGxcMDAwbFwwMDBvXDAwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2hlbGxvJy5lbmNvZGUoJ3V0Zi0xNi1iZScpLCBiJ1wwMDBoXDAwMGVcMDAwbFwwMDBsXDAwMG8nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdoZWxsbycuZW5jb2RlKCdsYXRpbi0xJyksIGInaGVsbG8nKQogCisgICAgICAgICMgRGVmYXVsdCBlbmNvZGluZyBpcyB1dGYtOAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdcdTI2MDMnLmVuY29kZSgpLCBiJ1x4ZTJceDk4XHg4MycpCisKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBCTVAgKGp1c3QgdGhlIGZpcnN0IDEwMjQgY2hhcnMpCiAgICAgICAgIGZvciBjIGluIHJhbmdlKDEwMjQpOgogICAgICAgICAgICAgdSA9IGNocihjKQogICAgICAgICAgICAgZm9yIGVuY29kaW5nIGluICgndXRmLTcnLCAndXRmLTgnLCAndXRmLTE2JywgJ3V0Zi0xNi1sZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1dGYtMTYtYmUnLCAncmF3X3VuaWNvZGVfZXNjYXBlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGVfZXNjYXBlJywgJ3VuaWNvZGVfaW50ZXJuYWwnKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorICAgICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICAgICAgIyB1bmljb2RlLWludGVybmFsIGhhcyBiZWVuIGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIAogICAgICAgICAjIFJvdW5kdHJpcCBzYWZldHkgZm9yIEJNUCAoanVzdCB0aGUgZmlyc3QgMjU2IGNoYXJzKQogICAgICAgICBmb3IgYyBpbiByYW5nZSgyNTYpOgpAQCAtMTM5NSwxOCArMTQ3MywyMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHUuZW5jb2RlKGVuY29kaW5nKSxlbmNvZGluZyksIHUpCiAKICAgICAgICAgIyBSb3VuZHRyaXAgc2FmZXR5IGZvciBub24tQk1QIChqdXN0IGEgZmV3IGNoYXJzKQotICAgICAgICB1ID0gJ1xVMDAwMTAwMDFcVTAwMDIwMDAyXFUwMDAzMDAwM1xVMDAwNDAwMDRcVTAwMDUwMDA1JwotICAgICAgICBmb3IgZW5jb2RpbmcgaW4gKCd1dGYtOCcsICd1dGYtMTYnLCAndXRmLTE2LWxlJywgJ3V0Zi0xNi1iZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIydyYXdfdW5pY29kZV9lc2NhcGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih1LmVuY29kZShlbmNvZGluZyksZW5jb2RpbmcpLCB1KQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAjIHVuaWNvZGUtaW50ZXJuYWwgaGFzIGJlZW4gZGVwcmVjYXRlZAorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAKLSAgICAgICAgIyBVVEYtOCBtdXN0IGJlIHJvdW5kdHJpcCBzYWZlIGZvciBhbGwgVUNTLTIgY29kZSBwb2ludHMKLSAgICAgICAgIyBUaGlzIGV4Y2x1ZGVzIHN1cnJvZ2F0ZXM6IGluIHRoZSBmdWxsIHJhbmdlLCB0aGVyZSB3b3VsZCBiZQotICAgICAgICAjIGEgc3Vycm9nYXRlIHBhaXIgKFx1ZGJmZlx1ZGMwMCksIHdoaWNoIGdldHMgY29udmVydGVkIGJhY2sKLSAgICAgICAgIyB0byBhIG5vbi1CTVAgY2hhcmFjdGVyIChcVTAwMTBmYzAwKQotICAgICAgICB1ID0gJycuam9pbihtYXAoY2hyLCBsaXN0KHJhbmdlKDAsMHhkODAwKSkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKDB4ZTAwMCwweDEwMDAwKSkpKQorICAgICAgICAgICAgdSA9ICdcVTAwMDEwMDAxXFUwMDAyMDAwMlxVMDAwMzAwMDNcVTAwMDQwMDA0XFUwMDA1MDAwNScKKyAgICAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywgJ3V0Zi0xNicsICd1dGYtMTYtbGUnLCAndXRmLTE2LWJlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jhd191bmljb2RlX2VzY2FwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmljb2RlX2VzY2FwZScsICd1bmljb2RlX2ludGVybmFsJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKKworICAgICAgICAjIFVURi04IG11c3QgYmUgcm91bmR0cmlwIHNhZmUgZm9yIGFsbCBjb2RlIHBvaW50cworICAgICAgICAjIChleGNlcHQgc3Vycm9nYXRlcywgd2hpY2ggYXJlIGZvcmJpZGRlbikuCisgICAgICAgIHUgPSAnJy5qb2luKG1hcChjaHIsIGxpc3QocmFuZ2UoMCwgMHhkODAwKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJhbmdlKDB4ZTAwMCwgMHgxMTAwMDApKSkpCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiAoJ3V0Zi04JywpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIodS5lbmNvZGUoZW5jb2RpbmcpLGVuY29kaW5nKSwgdSkKIApAQCAtMTU5MSwxNyArMTY3MSwzOSBAQAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsICd0XHR0XHQnLmV4cGFuZHRhYnMsIHN5cy5tYXhzaXplKQogCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZXhwYW5kdGFic19vcHRpbWl6YXRpb24oc2VsZik6CisgICAgICAgIHMgPSAnYWJjJworICAgICAgICBzZWxmLmFzc2VydElzKHMuZXhwYW5kdGFicygpLCBzKQorCiAgICAgZGVmIHRlc3RfcmFpc2VNZW1FcnJvcihzZWxmKToKLSAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgZnJlZWxpc3QgY29udGFpbnMgYSBjb25zaXN0ZW50IG9iamVjdCwgZXZlbgotICAgICAgICAjIHdoZW4gYSBzdHJpbmcgYWxsb2NhdGlvbiBmYWlscyB3aXRoIGEgTWVtb3J5RXJyb3IuCi0gICAgICAgICMgVGhpcyB1c2VkIHRvIGNyYXNoIHRoZSBpbnRlcnByZXRlciwKLSAgICAgICAgIyBvciBsZWFrIHJlZmVyZW5jZXMgd2hlbiB0aGUgbnVtYmVyIHdhcyBzbWFsbGVyLgotICAgICAgICBjaGFyd2lkdGggPSA0IGlmIHN5cy5tYXh1bmljb2RlID49IDB4MTAwMDAgZWxzZSAyCi0gICAgICAgICMgTm90ZTogc3lzLm1heHNpemUgaXMgaGFsZiBvZiB0aGUgYWN0dWFsIG1heCBhbGxvY2F0aW9uIGJlY2F1c2Ugb2YKLSAgICAgICAgIyB0aGUgc2lnbmVkbmVzcyBvZiBQeV9zc2l6ZV90LgotICAgICAgICBhbGxvYyA9IGxhbWJkYTogImEiICogKHN5cy5tYXhzaXplIC8vIGNoYXJ3aWR0aCAqIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE1lbW9yeUVycm9yLCBhbGxvYykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQorICAgICAgICBpZiBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSA9PSA4OgorICAgICAgICAgICAgIyA2NCBiaXRzIHBvaW50ZXJzCisgICAgICAgICAgICBhc2NpaV9zdHJ1Y3Rfc2l6ZSA9IDQ4CisgICAgICAgICAgICBjb21wYWN0X3N0cnVjdF9zaXplID0gNzIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgMzIgYml0cyBwb2ludGVycworICAgICAgICAgICAgYXNjaWlfc3RydWN0X3NpemUgPSAyNAorICAgICAgICAgICAgY29tcGFjdF9zdHJ1Y3Rfc2l6ZSA9IDM2CisKKyAgICAgICAgZm9yIGNoYXIgaW4gKCdhJywgJ1x4ZTknLCAnXHUyMGFjJywgJ1xVMDAxMGZmZmYnKToKKyAgICAgICAgICAgIGNvZGUgPSBvcmQoY2hhcikKKyAgICAgICAgICAgIGlmIGNvZGUgPCAweDEwMDoKKyAgICAgICAgICAgICAgICBjaGFyX3NpemUgPSAxICAjIHNpemVvZihQeV9VQ1MxKQorICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplID0gYXNjaWlfc3RydWN0X3NpemUKKyAgICAgICAgICAgIGVsaWYgY29kZSA8IDB4MTAwMDA6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gMiAgIyBzaXplb2YoUHlfVUNTMikKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGNvbXBhY3Rfc3RydWN0X3NpemUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hhcl9zaXplID0gNCAgIyBzaXplb2YoUHlfVUNTNCkKKyAgICAgICAgICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IGNvbXBhY3Rfc3RydWN0X3NpemUKKyAgICAgICAgICAgICMgTm90ZTogc3lzLm1heHNpemUgaXMgaGFsZiBvZiB0aGUgYWN0dWFsIG1heCBhbGxvY2F0aW9uIGJlY2F1c2Ugb2YKKyAgICAgICAgICAgICMgdGhlIHNpZ25lZG5lc3Mgb2YgUHlfc3NpemVfdC4gU3RyaW5ncyBvZiBtYXhsZW4tMSBzaG91bGQgaW4gcHJpbmNpcGxlCisgICAgICAgICAgICAjIGJlIGFsbG9jYXRhYmxlLCBnaXZlbiBlbm91Z2ggbWVtb3J5LgorICAgICAgICAgICAgbWF4bGVuID0gKChzeXMubWF4c2l6ZSAtIHN0cnVjdF9zaXplKSAvLyBjaGFyX3NpemUpCisgICAgICAgICAgICBhbGxvYyA9IGxhbWJkYTogY2hhciAqIG1heGxlbgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTWVtb3J5RXJyb3IsIGFsbG9jKQogCiAgICAgZGVmIHRlc3RfZm9ybWF0X3N1YmNsYXNzKHNlbGYpOgogICAgICAgICBjbGFzcyBTKHN0cik6CkBAIC0xNjE0LDExICsxNzE2LDEwIEBACiAgICAgIyBUZXN0IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKICAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgcHl0aG9uYXBpLCBweV9vYmplY3QsIGNfaW50Ci0gICAgICAgIGlmIHN5cy5tYXh1bmljb2RlID09IDY1NTM1OgotICAgICAgICAgICAgbmFtZSA9ICJQeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gIlB5VW5pY29kZVVDUzRfRnJvbUZvcm1hdCIKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IChweXRob25hcGksIHB5X29iamVjdCwKKyAgICAgICAgICAgIGNfaW50LCBjX2xvbmcsIGNfbG9uZ2xvbmcsIGNfc3NpemVfdCwKKyAgICAgICAgICAgIGNfdWludCwgY191bG9uZywgY191bG9uZ2xvbmcsIGNfc2l6ZV90KQorICAgICAgICBuYW1lID0gIlB5VW5pY29kZV9Gcm9tRm9ybWF0IgogICAgICAgICBfUHlVbmljb2RlX0Zyb21Gb3JtYXQgPSBnZXRhdHRyKHB5dGhvbmFwaSwgbmFtZSkKICAgICAgICAgX1B5VW5pY29kZV9Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKIApAQCAtMTYzOSwxMyArMTc0MCw0MCBAQAogICAgICAgICAgICAgJ3N0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4ZTkkJywKICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tRm9ybWF0LCBiJ3VuaWNvZGVceGU5PSVzJywgJ2FzY2lpJykKIAorICAgICAgICAjIHRlc3QgIiVjIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWMnLCBjX2ludCgweGFiY2QpKSwgJ1x1YWJjZCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclYycsIGNfaW50KDB4MTBmZmZmKSksICdcVTAwMTBmZmZmJykKIAotICAgICAgICAjIG90aGVyIHRlc3RzCisgICAgICAgICMgdGVzdCAiJSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUnKSwgJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSUnKSwgJyUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSVzJyksICclcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidbJSVdJyksICdbJV0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJSUlcycsIGInYWJjJyksICclYWJjJykKKworICAgICAgICAjIHRlc3QgaW50ZWdlciBmb3JtYXRzICglaSwgJWQsICV1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTAzaScsIGNfaW50KDEwKSksICcwMTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTAuNGknLCBjX2ludCgxMCkpLCAnMDAxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclaScsIGNfaW50KC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxpJywgY19sb25nKC0xMjMpKSwgJy0xMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWxsaScsIGNfbG9uZ2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclemknLCBjX3NzaXplX3QoLTEyMykpLCAnLTEyMycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyVkJywgY19pbnQoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGQnLCBjX2xvbmcoLTEyMykpLCAnLTEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGxkJywgY19sb25nbG9uZygtMTIzKSksICctMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyV6ZCcsIGNfc3NpemVfdCgtMTIzKSksICctMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXUnLCBjX3VpbnQoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJWx1JywgY191bG9uZygxMjMpKSwgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclbGx1JywgY191bG9uZ2xvbmcoMTIzKSksICcxMjMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJXp1JywgY19zaXplX3QoMTIzKSksICcxMjMnKQorCisgICAgICAgICMgdGVzdCAlQQogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYiclJUE6JUEnLCAnYWJjXHhlOVx1YWJjZFxVMDAxMGZmZmYnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsIHIiJUE6J2FiY1x4ZTlcdWFiY2RcVTAwMTBmZmZmJyIpCiAKKyAgICAgICAgIyB0ZXN0ICVWCiAgICAgICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChiJ3JlcHI9JVYnLCAnYWJjJywgYid4eXonKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRleHQsICdyZXByPWFiYycpCiAKQEAgLTE2NTksNiArMTc4NywxMyBAQAogICAgICAgICB0ZXh0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoYidyZXByPSVWJywgTm9uZSwgYidhYmNceGZmJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LCAncmVwcj1hYmNcdWZmZmQnKQogCisgICAgICAgICMgbm90IHN1cHBvcnRlZDogY29weSB0aGUgcmF3IGZvcm1hdCBzdHJpbmcuIHRoZXNlIHRlc3RzIGFyZSBqdXN0IGhlcmUKKyAgICAgICAgIyB0byBjaGVjayBmb3IgY3Jhc2hzIGFuZCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYXMgc3BlY2lmaWNhdGlvbnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUxJXMnLCBiJ2FiYycpLCAnJXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJTFhYmMnKSwgJyUxYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVVuaWNvZGVfRnJvbUZvcm1hdChiJyUraScsIGNfaW50KDEwKSksICclK2knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VW5pY29kZV9Gcm9tRm9ybWF0KGInJS4lcycsIGInYWJjJyksICclLiVzJykKKwogICAgICMgVGVzdCBQeVVuaWNvZGVfQXNXaWRlQ2hhcigpCiAgICAgZGVmIHRlc3RfYXN3aWRlY2hhcihzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfYXN3aWRlY2hhcgpAQCAtMTcxOSw2ICsxODU0LDUxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2l6ZSwgbmNoYXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2NoYXIsIG5vbmJtcCArICdcMCcpCiAKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19hZGQoc2VsZik6CisgICAgICAgIGNsYXNzIFMoc3RyKToKKyAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiAiMyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTKCI0IikgKyBTKCI1IiksICIzIikKKyAgICAgICAgY2xhc3MgUyhzdHIpOgorICAgICAgICAgICAgZGVmIF9faWFkZF9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIHJldHVybiAiMyIKKyAgICAgICAgcyA9IFMoIjEiKQorICAgICAgICBzICs9ICI0IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsICIzIikKKworICAgIGRlZiB0ZXN0X2VuY29kZV9kZWNpbWFsKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgdW5pY29kZV9lbmNvZGVkZWNpbWFsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCcxMjMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCdcdTA2NjMuXHUwNjYxXHUwNjY0JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYiczLjE0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyAzLjE0ICcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9lbmNvZGVkZWNpbWFsLCAiMTIzXHUyMGFjIiwgInN0cmljdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICBWYWx1ZUVycm9yLAorICAgICAgICAgICAgIl4nZGVjaW1hbCcgY29kZWMgY2FuJ3QgZW5jb2RlIGNoYXJhY3RlciIsCisgICAgICAgICAgICB1bmljb2RlX2VuY29kZWRlY2ltYWwsICIxMjNcdTIwYWMiLCAicmVwbGFjZSIpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zvcm1fZGVjaW1hbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWkgYXMgdHJhbnNmb3JtX2RlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzEyMycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMy4xNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyM1x1MjBhYycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxMjNcdTIwYWMnKQorCisgICAgZGVmIHRlc3RfZ2V0bmV3YXJncyhzZWxmKToKKyAgICAgICAgdGV4dCA9ICdhYmMnCisgICAgICAgIGFyZ3MgPSB0ZXh0Ll9fZ2V0bmV3YXJnc19fKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChhcmdzWzBdLCB0ZXh0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sIHRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFyZ3MpLCAxKQorCiAKIGNsYXNzIFN0cmluZ01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcl9wYXJzZXIoc2VsZik6CkBAIC0xNzcwLDQyICsxOTUwLDYgQEAKICAgICAgICAgICAgIF1dKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9zdHJpbmcuZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQsIDEpCiAKLSAgICBkZWYgdGVzdF9lbmNvZGVfZGVjaW1hbChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfZW5jb2RlZGVjaW1hbAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnMTIzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgnXHUwNjYzLlx1MDY2MVx1MDY2NCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMy4xNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCJcTntFTSBTUEFDRX0zLjE0XE57RU4gU1BBQ0V9IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicgMy4xNCAnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGVfZW5jb2RlZGVjaW1hbCwgIjEyM1x1MjBhYyIsICJzdHJpY3QiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjIiwgImlnbm9yZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhYyIsICJ4bWxjaGFycmVmcmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzJiM4MzY0OycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWMiLCAiYmFja3NsYXNocmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzXFx1MjBhYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pY29kZV9lbmNvZGVkZWNpbWFsKCIxMjNcdTIwYWNcTntFTSBTUEFDRX0iLCAicmVwbGFjZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInMTIzPyAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVuaWNvZGVfZW5jb2RlZGVjaW1hbCgiMTIzXHUyMGFjXHUyMGFjIiwgInJlcGxhY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJzEyMz8/JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bmljb2RlX2VuY29kZWRlY2ltYWwoIjEyM1x1MjBhY1x1MDY2MCIsICJyZXBsYWNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgYicxMjM/MCcpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zvcm1fZGVjaW1hbChzZWxmKToKLSAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHVuaWNvZGVfdHJhbnNmb3JtZGVjaW1hbHRvYXNjaWkgYXMgdHJhbnNmb3JtX2RlY2ltYWwKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2Zvcm1fZGVjaW1hbCgnMTIzJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJzEyMycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJ1x1MDY2My5cdTA2NjFcdTA2NjQnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnMy4xNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoIlxOe0VNIFNQQUNFfTMuMTRcTntFTiBTUEFDRX0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiXE57RU0gU1BBQ0V9My4xNFxOe0VOIFNQQUNFfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNmb3JtX2RlY2ltYWwoJzEyM1x1MjBhYycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICcxMjNcdTIwYWMnKQotCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkKaW5kZXggNmMyMDExYS4uZmFhOGRhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlX2ZpbGUucHkKQEAgLTYsNyArNiw3IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChydW5fdW5pdHRlc3QsIHJtdHJlZSwKLSAgICBURVNURk5fRU5DT0RJTkcsIFRFU1RGTl9VTklDT0RFLCBURVNURk5fVU5FTkNPREFCTEUpCisgICAgVEVTVEZOX0VOQ09ESU5HLCBURVNURk5fVU5JQ09ERSwgVEVTVEZOX1VORU5DT0RBQkxFLCBjcmVhdGVfZW1wdHlfZmlsZSkKIAogaWYgbm90IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXM6CiAgICAgdHJ5OgpAQCAtNTYsMTYgKzU2LDIwIEBACiAgICAgICAgICMgU2hvdWxkIGJlIGFibGUgdG8gcmVuYW1lIHRoZSBmaWxlIHVzaW5nIGVpdGhlciBuYW1lLgogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxKSkgIyBtdXN0IGV4aXN0LgogICAgICAgICBvcy5yZW5hbWUoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTErIi5uZXciKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lMSArICIubmV3IiwgZmlsZW5hbWUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShmaWxlbmFtZTIpKQogCiAgICAgICAgIHNodXRpbC5jb3B5KGZpbGVuYW1lMSwgZmlsZW5hbWUyICsgIi5uZXciKQogICAgICAgICBvcy51bmxpbmsoZmlsZW5hbWUxICsgIi5uZXciKSAjIHJlbW92ZSB1c2luZyBlcXVpdiBuYW1lLgogICAgICAgICAjIEFuZCBhIGNvdXBsZSBvZiBtb3Zlcywgb25lIHVzaW5nIGVhY2ggbmFtZS4KICAgICAgICAgc2h1dGlsLm1vdmUoZmlsZW5hbWUxLCBmaWxlbmFtZTIgKyAiLm5ldyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZTIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoZmlsZW5hbWUxICsgJy5uZXcnKSkKICAgICAgICAgc2h1dGlsLm1vdmUoZmlsZW5hbWUxICsgIi5uZXciLCBmaWxlbmFtZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUyICsgJy5uZXcnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lMSkpCiAgICAgICAgICMgTm90ZSAtIGR1ZSB0byB0aGUgaW1wbGVtZW50YXRpb24gb2Ygc2h1dGlsLm1vdmUsCiAgICAgICAgICMgaXQgdHJpZXMgYSByZW5hbWUgZmlyc3QuICBUaGlzIG9ubHkgZmFpbHMgb24gV2luZG93cyB3aGVuIG9uCkBAIC03MywxMCArNzcsMTIgQEAKICAgICAgICAgIyBTbyB3ZSB0ZXN0IHRoZSBzaHV0aWwuY29weTIgZnVuY3Rpb24sIHdoaWNoIGlzIHRoZSB0aGluZyBtb3N0CiAgICAgICAgICMgbGlrZWx5IHRvIGZhaWwuCiAgICAgICAgIHNodXRpbC5jb3B5MihmaWxlbmFtZTEsIGZpbGVuYW1lMiArICIubmV3IikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lMSArICcubmV3JykpCiAgICAgICAgIG9zLnVubGluayhmaWxlbmFtZTEgKyAiLm5ldyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZmlsZW5hbWUyICsgJy5uZXcnKSkKIAogICAgIGRlZiBfZG9fZGlyZWN0b3J5KHNlbGYsIG1ha2VfbmFtZSwgY2hkaXJfbmFtZSk6Ci0gICAgICAgIGN3ZCA9IG9zLmdldGN3ZGIoKQorICAgICAgICBjd2QgPSBvcy5nZXRjd2QoKQogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG1ha2VfbmFtZSk6CiAgICAgICAgICAgICBybXRyZWUobWFrZV9uYW1lKQogICAgICAgICBvcy5ta2RpcihtYWtlX25hbWUpCkBAIC05OSw4ICsxMDUsNyBAQAogICAgICMgdG9wLWxldmVsICd0ZXN0JyBmdW5jdGlvbnMgd291bGQgYmUgaWYgdGhleSBjb3VsZCB0YWtlIHBhcmFtcwogICAgIGRlZiBfdGVzdF9zaW5nbGUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZW1vdmVfaWZfZXhpc3RzKGZpbGVuYW1lKQotICAgICAgICBmID0gb3BlbihmaWxlbmFtZSwgInciKQotICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgY3JlYXRlX2VtcHR5X2ZpbGUoZmlsZW5hbWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX2RvX3NpbmdsZShmaWxlbmFtZSkKICAgICAgICAgZmluYWxseToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CmluZGV4IDk3NDQyNTYuLjk5YWEwMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQpAQCAtMjEsNyArMjEsNyBAQAogY2xhc3MgVW5pY29kZU1ldGhvZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICcyMWI5MGYxYWVkMDAwODFiODFjYTc5NDJiMjIxOTZhZjA5MDAxNWEwJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnYmY3YTc4ZjFhNTMyNDIxYjUwMzM2MDAxMDJlMjNhOTIwNDRkYmJhOScKIAogICAgIGRlZiB0ZXN0X21ldGhvZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC04MCw3ICs4MCw3IEBACiBjbGFzcyBVbmljb2RlRnVuY3Rpb25zVGVzdChVbmljb2RlRGF0YWJhc2VUZXN0KToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICdjMjNkZmMwYjVlYWYzY2EyYWFkMzJkNzMzZGU5NmJiMTgyY2NkYTUwJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnMTdmZTJmMTJiNzg4ZTRmZmY1NDc5YjQ2OWM0NDA0YmI2ZWNmODQxZicKICAgICBkZWYgdGVzdF9mdW5jdGlvbl9jaGVja3N1bShzZWxmKToKICAgICAgICAgZGF0YSA9IFtdCiAgICAgICAgIGggPSBoYXNobGliLnNoYTEoKQpAQCAtMTA4LDYgKzEwOCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXHUyMTViJywgTm9uZSksIE5vbmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXHUyNDY4JyksIDkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kaWdpdCgnXFUwMDAyMDAwMCcsIE5vbmUpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoJ1xVMDAwMUQ3RkQnKSwgNykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGlnaXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kaWdpdCwgJ3h4JykKQEAgLTEyMCw2ICsxMjEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygnXHUyNDY4JyksIDkuMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLm51bWVyaWMoJ1x1YTYyNycpLCA3LjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcVTAwMDIwMDAwJywgTm9uZSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5udW1lcmljKCdcVTAwMDEwMTJBJyksIDkwMDApCiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmRiLm51bWVyaWMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5udW1lcmljLCAneHgnKQpAQCAtMTMxLDYgKzEzMyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5kZWNpbWFsKCdcdTIxNWInLCBOb25lKSwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmRlY2ltYWwoJ1x1MjQ2OCcsIE5vbmUpLCBOb25lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXFUwMDAyMDAwMCcsIE5vbmUpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgnXFUwMDAxRDdGRCcpLCA3KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5kZWNpbWFsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuZGVjaW1hbCwgJ3h4JykKQEAgLTE0MSw2ICsxNDQsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ2EnKSwgJ0xsJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmNhdGVnb3J5KCdBJyksICdMdScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgnXFUwMDAyMDAwMCcpLCAnTG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuY2F0ZWdvcnkoJ1xVMDAwMTAxMkEnKSwgJ05vJykKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZGIuY2F0ZWdvcnkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5kYi5jYXRlZ29yeSwgJ3h4JykKQEAgLTMwOCwxNCArMzEyLDYgQEAKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaW5lcyksIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlx1JS40eCBzaG91bGQgbm90IGJlIGEgbGluZWJyZWFrIiAlIGkpCiAKLSAgICBkZWYgdGVzdF9VQ1M0KHNlbGYpOgotICAgICAgICAjIHVuaWNvZGVkYXRhIHNob3VsZCB3b3JrIHdpdGggY29kZSBwb2ludHMgb3V0c2lkZSB0aGUgQk1QCi0gICAgICAgICMgZXZlbiBvbiBhIG5hcnJvdyBVbmljb2RlIGJ1aWxkCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5jYXRlZ29yeSgiXFUwMDAxMDEyQSIpLCAiTm8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIubnVtZXJpYygiXFUwMDAxMDEyQSIpLCA5MDAwKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGVjaW1hbCgiXFUwMDAxRDdGRCIpLCA3KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGIuZGlnaXQoIlxVMDAwMUQ3RkQiKSwgNykKLQogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Quc3VwcG9ydC5ydW5fdW5pdHRlc3QoCiAgICAgICAgIFVuaWNvZGVNaXNjVGVzdCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKaW5kZXggM2ZjNDk5ZS4uNjIzZWI1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkKQEAgLTI3MCwxMCArMjcwLDkgQEAKIAogICAgIGRlZiB0ZXN0X21pc3NpbmdfbG9jYWxmaWxlKHNlbGYpOgogICAgICAgICAjIFRlc3QgZm9yICMxMDgzNgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgZToKKyAgICAgICAgIyAzLjMgLSBVUkxFcnJvciBpcyBub3QgY2FwdHVyZWQsIGV4cGxpY2l0IElPRXJyb3IgaXMgcmFpc2VkLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKElPRXJyb3IpOgogICAgICAgICAgICAgdXJsb3BlbignZmlsZTovL2xvY2FsaG9zdC9hL2ZpbGUvd2hpY2gvZG9lc25vdC9leGlzdHMucHknKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5leGNlcHRpb24uZmlsZW5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlLmV4Y2VwdGlvbi5yZWFzb24pCiAKICAgICBkZWYgdGVzdF9maWxlX25vdGV4aXN0cyhzZWxmKToKICAgICAgICAgZmQsIHRtcF9maWxlID0gdGVtcGZpbGUubWtzdGVtcCgpCkBAIC0yODYsMjEgKzI4NSwyMCBAQAogICAgICAgICAgICAgb3MuY2xvc2UoZmQpCiAgICAgICAgICAgICBvcy51bmxpbmsodG1wX2ZpbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHModG1wX2ZpbGUpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcik6CisgICAgICAgICMgMy4zIC0gSU9FcnJvciBpbnN0ZWFkIG9mIFVSTEVycm9yCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSU9FcnJvcik6CiAgICAgICAgICAgICB1cmxvcGVuKHRtcF9maWxldXJsKQogCiAgICAgZGVmIHRlc3RfZnRwX25vaG9zdChzZWxmKToKICAgICAgICAgdGVzdF9mdHBfdXJsID0gJ2Z0cDovLy9wYXRoJwotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgZToKKyAgICAgICAgIyAzLjMgLSBJT0Vycm9yIGluc3RlYWQgb2YgVVJMRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHVybG9wZW4odGVzdF9mdHBfdXJsKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuZXhjZXB0aW9uLmZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5leGNlcHRpb24ucmVhc29uKQogCiAgICAgZGVmIHRlc3RfZnRwX25vbmV4aXN0aW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgZToKKyAgICAgICAgIyAzLjMgLSBJT0Vycm9yIGluc3RlYWQgb2YgVVJMRXJyb3IKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKICAgICAgICAgICAgIHVybG9wZW4oJ2Z0cDovL2xvY2FsaG9zdC9hL2ZpbGUvd2hpY2gvZG9lc25vdC9leGlzdHMucHknKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGUuZXhjZXB0aW9uLmZpbGVuYW1lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZS5leGNlcHRpb24ucmVhc29uKQogCiAKICAgICBkZWYgdGVzdF91c2VycGFzc19pbnVybChzZWxmKToKQEAgLTMzMyw2ICszMzEsMTAgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYudW5mYWtlaHR0cCgpCiAKKyAgICBkZWYgdGVzdF9VUkxvcGVuZXJfZGVwcmVjYXRpb24oc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB1cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIoKQorCiBjbGFzcyB1cmxyZXRyaWV2ZV9GaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3QgdXJsbGliLnVybHJldHJpZXZlKCkgb24gbG9jYWwgZmlsZXMiIiIKIApAQCAtMzY2LDcgKzM2OCw3IEBACiAgICAgZGVmIGNvbnN0cnVjdExvY2FsRmlsZVVybChzZWxmLCBmaWxlUGF0aCk6CiAgICAgICAgIGZpbGVQYXRoID0gb3MucGF0aC5hYnNwYXRoKGZpbGVQYXRoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmaWxlUGF0aC5lbmNvZGUoInV0ZjgiKQorICAgICAgICAgICAgZmlsZVBhdGguZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZmlsZVBhdGggaXMgbm90IGVuY29kYWJsZSB0byB1dGY4IikKICAgICAgICAgcmV0dXJuICJmaWxlOi8vJXMiICUgdXJsbGliLnJlcXVlc3QucGF0aG5hbWUydXJsKGZpbGVQYXRoKQpAQCAtNDE5LDExICs0MjEsMTEgQEAKIAogICAgIGRlZiB0ZXN0X3JlcG9ydGhvb2soc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGhlIHJlcG9ydGhvb2sgd29ya3MuCi0gICAgICAgIGRlZiBob29rdGVzdGVyKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplLCBjb3VudF9ob2xkZXI9WzBdKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjb3VudCwgaW50KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGJsb2NrX3NpemUsIGludCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0b3RhbF9zaXplLCBpbnQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCBjb3VudF9ob2xkZXJbMF0pCisgICAgICAgIGRlZiBob29rdGVzdGVyKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSwgY291bnRfaG9sZGVyPVswXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYmxvY2tfY291bnQsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShibG9ja19yZWFkX3NpemUsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaWxlX3NpemUsIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmxvY2tfY291bnQsIGNvdW50X2hvbGRlclswXSkKICAgICAgICAgICAgIGNvdW50X2hvbGRlclswXSA9IGNvdW50X2hvbGRlclswXSArIDEKICAgICAgICAgc2Vjb25kX3RlbXAgPSAiJXMuMiIgJSBzdXBwb3J0LlRFU1RGTgogICAgICAgICBzZWxmLnJlZ2lzdGVyRmlsZUZvckNsZWFuVXAoc2Vjb25kX3RlbXApCkBAIC00MzQsOCArNDM2LDggQEAKICAgICBkZWYgdGVzdF9yZXBvcnRob29rXzBfYnl0ZXMoc2VsZik6CiAgICAgICAgICMgVGVzdCBvbiB6ZXJvIGxlbmd0aCBmaWxlLiBTaG91bGQgY2FsbCByZXBvcnRob29rIG9ubHkgMSB0aW1lLgogICAgICAgICByZXBvcnQgPSBbXQotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgotICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBfcmVwb3J0PXJlcG9ydCk6CisgICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplKSkKICAgICAgICAgc3JjRmlsZU5hbWUgPSBzZWxmLmNyZWF0ZU5ld1RlbXBGaWxlKCkKICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJscmV0cmlldmUoc2VsZi5jb25zdHJ1Y3RMb2NhbEZpbGVVcmwoc3JjRmlsZU5hbWUpLAogICAgICAgICAgICAgc3VwcG9ydC5URVNURk4sIGhvb2t0ZXN0ZXIpCkBAIC00NDUsMzEgKzQ0NywzMSBAQAogICAgIGRlZiB0ZXN0X3JlcG9ydGhvb2tfNV9ieXRlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IG9uIDUgYnl0ZSBmaWxlLiBTaG91bGQgY2FsbCByZXBvcnRob29rIG9ubHkgMiB0aW1lcyAob25jZSB3aGVuCiAgICAgICAgICMgdGhlICJuZXR3b3JrIGNvbm5lY3Rpb24iIGlzIGVzdGFibGlzaGVkIGFuZCBvbmNlIHdoZW4gdGhlIGJsb2NrIGlzCi0gICAgICAgICMgcmVhZCkuIFNpbmNlIHRoZSBibG9jayBzaXplIGlzIDgxOTIgYnl0ZXMsIG9ubHkgb25lIGJsb2NrIHJlYWQgaXMKLSAgICAgICAgIyByZXF1aXJlZCB0byByZWFkIHRoZSBlbnRpcmUgZmlsZS4KKyAgICAgICAgIyByZWFkKS4KICAgICAgICAgcmVwb3J0ID0gW10KLSAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoY291bnQsIGJsb2NrX3NpemUsIHRvdGFsX3NpemUsIF9yZXBvcnQ9cmVwb3J0KToKLSAgICAgICAgICAgIF9yZXBvcnQuYXBwZW5kKChjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSkpCisgICAgICAgIGRlZiBob29rdGVzdGVyKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgorICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGJsb2NrX2NvdW50LCBibG9ja19yZWFkX3NpemUsIGZpbGVfc2l6ZSkpCiAgICAgICAgIHNyY0ZpbGVOYW1lID0gc2VsZi5jcmVhdGVOZXdUZW1wRmlsZShiIngiICogNSkKICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJscmV0cmlldmUoc2VsZi5jb25zdHJ1Y3RMb2NhbEZpbGVVcmwoc3JjRmlsZU5hbWUpLAogICAgICAgICAgICAgc3VwcG9ydC5URVNURk4sIGhvb2t0ZXN0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlcG9ydCksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzFdLCA4MTkyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsyXSwgNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzFdWzFdLCA1KQogCiAgICAgZGVmIHRlc3RfcmVwb3J0aG9va184MTkzX2J5dGVzKHNlbGYpOgogICAgICAgICAjIFRlc3Qgb24gODE5MyBieXRlIGZpbGUuIFNob3VsZCBjYWxsIHJlcG9ydGhvb2sgb25seSAzIHRpbWVzIChvbmNlCiAgICAgICAgICMgd2hlbiB0aGUgIm5ldHdvcmsgY29ubmVjdGlvbiIgaXMgZXN0YWJsaXNoZWQsIG9uY2UgZm9yIHRoZSBuZXh0IDgxOTIKICAgICAgICAgIyBieXRlcywgYW5kIG9uY2UgZm9yIHRoZSBsYXN0IGJ5dGUpLgogICAgICAgICByZXBvcnQgPSBbXQotICAgICAgICBkZWYgaG9va3Rlc3Rlcihjb3VudCwgYmxvY2tfc2l6ZSwgdG90YWxfc2l6ZSwgX3JlcG9ydD1yZXBvcnQpOgotICAgICAgICAgICAgX3JlcG9ydC5hcHBlbmQoKGNvdW50LCBibG9ja19zaXplLCB0b3RhbF9zaXplKSkKKyAgICAgICAgZGVmIGhvb2t0ZXN0ZXIoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplLCBfcmVwb3J0PXJlcG9ydCk6CisgICAgICAgICAgICBfcmVwb3J0LmFwcGVuZCgoYmxvY2tfY291bnQsIGJsb2NrX3JlYWRfc2l6ZSwgZmlsZV9zaXplKSkKICAgICAgICAgc3JjRmlsZU5hbWUgPSBzZWxmLmNyZWF0ZU5ld1RlbXBGaWxlKGIieCIgKiA4MTkzKQogICAgICAgICB1cmxsaWIucmVxdWVzdC51cmxyZXRyaWV2ZShzZWxmLmNvbnN0cnVjdExvY2FsRmlsZVVybChzcmNGaWxlTmFtZSksCiAgICAgICAgICAgICBzdXBwb3J0LlRFU1RGTiwgaG9va3Rlc3RlcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVwb3J0KSwgMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMF1bMV0sIDgxOTIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzBdWzJdLCA4MTkzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9ydFswXVsxXSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvcnRbMV1bMV0sIDgxOTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb3J0WzJdWzFdLCAxKQogCiAKIGNsYXNzIHVybHJldHJpZXZlX0h0dHBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSwgRmFrZUhUVFBNaXhpbik6CkBAIC0xMjgwLDYgKzEyODIsMjggQEAKICMgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ0cC5mdHAuc29jay5nZXR0aW1lb3V0KCksIDMwKQogIyAgICAgICAgIGZ0cC5jbG9zZSgpCiAKK2NsYXNzIFJlcXVlc3RUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgdXJsbGliLnJlcXVlc3QuUmVxdWVzdC4iIiIKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfdmFsdWVzKHNlbGYpOgorICAgICAgICBSZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdAorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ0dFVCcpCisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9tZXRob2QoKSwgJ1BPU1QnKQorCisgICAgZGVmIHRlc3Rfd2l0aF9tZXRob2RfYXJnKHNlbGYpOgorICAgICAgICBSZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdAorICAgICAgICByZXF1ZXN0ID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIiwgbWV0aG9kPSdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0Lm1ldGhvZCwgJ0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnSEVBRCcpCisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCB7fSwgbWV0aG9kPSdIRUFEJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0Lm1ldGhvZCwgJ0hFQUQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnSEVBRCcpCisgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmciLCBtZXRob2Q9J0dFVCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxdWVzdC5nZXRfbWV0aG9kKCksICdHRVQnKQorICAgICAgICByZXF1ZXN0Lm1ldGhvZCA9ICdIRUFEJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3QuZ2V0X21ldGhvZCgpLCAnSEVBRCcpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpAQCAtMTI5Niw2ICsxMzIwLDcgQEAKICAgICAgICAgVXRpbGl0eV9UZXN0cywKICAgICAgICAgVVJMb3BlbmVyX1Rlc3RzLAogICAgICAgICAjRlRQV3JhcHBlclRlc3RzLAorICAgICAgICBSZXF1ZXN0VGVzdHMsCiAgICAgKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCAzYWNlNjZlLi43YWUxNTUzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC01LDYgKzUsNyBAQAogaW1wb3J0IGlvCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgYXJyYXkKK2ltcG9ydCBzeXMKIAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0CiAjIFRoZSBwcm94eSBieXBhc3MgbWV0aG9kIGltcG9ydGVkIGJlbG93IGhhcyBsb2dpYyBzcGVjaWZpYyB0byB0aGUgT1NYCkBAIC0xOCw2ICsxOSwyMiBAQAogIyBwYXJzZV9rZXF2X2xpc3QsIHBhcnNlX2h0dHBfbGlzdCwgSFRUUERpZ2VzdEF1dGhIYW5kbGVyCiAKIGNsYXNzIFRyaXZpYWxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9fX2FsbF9fKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSB3aGljaCBuYW1lcyBhcmUgZXhwb3NlZAorICAgICAgICBmb3IgbW9kdWxlIGluICdyZXF1ZXN0JywgJ3Jlc3BvbnNlJywgJ3BhcnNlJywgJ2Vycm9yJywgJ3JvYm90cGFyc2VyJzoKKyAgICAgICAgICAgIGNvbnRleHQgPSB7fQorICAgICAgICAgICAgZXhlYygnZnJvbSB1cmxsaWIuJXMgaW1wb3J0IConICUgbW9kdWxlLCBjb250ZXh0KQorICAgICAgICAgICAgZGVsIGNvbnRleHRbJ19fYnVpbHRpbnNfXyddCisgICAgICAgICAgICBpZiBtb2R1bGUgPT0gJ3JlcXVlc3QnIGFuZCBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAgICAgdSwgcCA9IGNvbnRleHQucG9wKCd1cmwycGF0aG5hbWUnKSwgY29udGV4dC5wb3AoJ3BhdGhuYW1lMnVybCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1Ll9fbW9kdWxlX18sICdudHVybDJwYXRoJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuX19tb2R1bGVfXywgJ250dXJsMnBhdGgnKQorICAgICAgICAgICAgZm9yIGssIHYgaW4gY29udGV4dC5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodi5fX21vZHVsZV9fLCAndXJsbGliLiVzJyAlIG1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgIiVyIGlzIGV4cG9zZWQgaW4gJ3VybGxpYi4lcycgYnV0IGRlZmluZWQgaW4gJXIiICUKKyAgICAgICAgICAgICAgICAgICAgKGssIG1vZHVsZSwgdi5fX21vZHVsZV9fKSkKKwogICAgIGRlZiB0ZXN0X3RyaXZpYWwoc2VsZik6CiAgICAgICAgICMgQSBjb3VwbGUgdHJpdmlhbCB0ZXN0cwogCkBAIC01MzYsMTAgKzU1Myw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvciwgby5vcGVuLCByZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoby5jYWxscywgWyhoYW5kbGVyc1swXSwgImh0dHBfb3BlbiIsIChyZXEsKSwge30pXSkKIAotIyMgICAgIGRlZiB0ZXN0X2Vycm9yKHNlbGYpOgotIyMgICAgICAgICAjIFhYWCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgc2VlbSB0byBiZSB1c2VkIGluIHN0YW5kYXJkIGxpYnJhcnksCi0jIyAgICAgICAgICMgIGJ1dCBzaG91bGQgcmVhbGx5IGJlIHRlc3RlZCBhbnl3YXkuLi4KLQogICAgIGRlZiB0ZXN0X2h0dHBfZXJyb3Ioc2VsZik6CiAgICAgICAgICMgWFhYIGh0dHBfZXJyb3JfZGVmYXVsdAogICAgICAgICAjIGh0dHAgZXJyb3JzIGFyZSBhIHNwZWNpYWwgY2FzZQpAQCAtNTY3LDYgKzU4MCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChoYW5kbGVyLCBtZXRob2RfbmFtZSksIGdvdFs6Ml0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIGdvdFsyXSkKIAorCiAgICAgZGVmIHRlc3RfcHJvY2Vzc29ycyhzZWxmKToKICAgICAgICAgIyAqX3JlcXVlc3QgLyAqX3Jlc3BvbnNlIG1ldGhvZHMgZ2V0IGNhbGxlZCBhcHByb3ByaWF0ZWx5CiAgICAgICAgIG8gPSBPcGVuZXJEaXJlY3RvcigpCkBAIC02MDIsMTAgKzYxNiwzMCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhcmdzWzFdIGlzIE5vbmUgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShhcmdzWzFdLCBNb2NrUmVzcG9uc2UpKQogCisgICAgZGVmIHRlc3RfbWV0aG9kX2RlcHJlY2F0aW9ucyhzZWxmKToKKyAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuYWRkX2RhdGEoImRhdGEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfZGF0YSgpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgcmVxLmhhc19kYXRhKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X2hvc3QoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfc2VsZWN0b3IoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5pc191bnZlcmlmaWFibGUoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHJlcS5nZXRfb3JpZ2luX3JlcV9ob3N0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICByZXEuZ2V0X3R5cGUoKQorCiAKIGRlZiBzYW5lcGF0aG5hbWUydXJsKHBhdGgpOgogICAgIHRyeToKLSAgICAgICAgcGF0aC5lbmNvZGUoInV0ZjgiKQorICAgICAgICBwYXRoLmVuY29kZSgidXRmLTgiKQogICAgIGV4Y2VwdCBVbmljb2RlRW5jb2RlRXJyb3I6CiAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJwYXRoIGlzIG5vdCBlbmNvZGFibGUgdG8gdXRmOCIpCiAgICAgdXJscGF0aCA9IHVybGxpYi5yZXF1ZXN0LnBhdGhuYW1lMnVybChwYXRoKQpAQCAtOTU3LDggKzk5MSw4IEBACiAgICAgICAgIG5ld3JlcSA9IGguaHR0cF9yZXF1ZXN0KHJlcSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhjai5hY2hfcmVxLCByZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouYWNoX3JlcSwgbmV3cmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfb3JpZ2luX3JlcV9ob3N0KCksICJleGFtcGxlLmNvbSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLmlzX3VudmVyaWZpYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5vcmlnaW5fcmVxX2hvc3QsICJleGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLnVudmVyaWZpYWJsZSkKICAgICAgICAgbmV3ciA9IGguaHR0cF9yZXNwb25zZShyZXEsIHIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouZWNfcmVxLCByZXEpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2ouZWNfciwgcikKQEAgLTk5MCw3ICsxMDI0LDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoby5yZXEuZ2V0X21ldGhvZCgpLCAiR0VUIikKICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoby5yZXEuaGFzX2RhdGEoKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvLnJlcS5kYXRhKQogCiAgICAgICAgICAgICAgICAgIyBub3cgaXQncyBhIEdFVCwgdGhlcmUgc2hvdWxkIG5vdCBiZSBoZWFkZXJzIHJlZ2FyZGluZyBjb250ZW50CiAgICAgICAgICAgICAgICAgIyAocG9zc2libHkgZHJhZ2dlZCBmcm9tIGJlZm9yZSBiZWluZyBhIFBPU1QpCkBAIC0xMTA2LDkgKzExNDAsOSBAQAogICAgICAgICBoYW5kbGVycyA9IGFkZF9vcmRlcmVkX21vY2tfaGFuZGxlcnMobywgbWV0aF9zcGVjKQogCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tLyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJhY21lLmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgImFjbWUuZXhhbXBsZS5jb20iKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGhhbmRsZXJzWzBdLCAiaHR0cF9vcGVuIildLAogICAgICAgICAgICAgICAgICAgICAgICAgIFt0dXBbMDoyXSBmb3IgdHVwIGluIG8uY2FsbHNdKQpAQCAtMTExOSwxMyArMTE1MywxMyBAQAogICAgICAgICBwaCA9IHVybGxpYi5yZXF1ZXN0LlByb3h5SGFuZGxlcihkaWN0KGh0dHA9InByb3h5LmV4YW1wbGUuY29tIikpCiAgICAgICAgIG8uYWRkX2hhbmRsZXIocGgpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucGVybC5vcmcvIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5wZXJsLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucGVybC5vcmciKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInByb3h5LmV4YW1wbGUuY29tIikKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL3d3dy5weXRob24ub3JnIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5weXRob24ub3JnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuaG9zdCwgInd3dy5weXRob24ub3JnIikKICAgICAgICAgciA9IG8ub3BlbihyZXEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydub19wcm94eSddCiAKICAgICBkZWYgdGVzdF9wcm94eV9ub19wcm94eV9hbGwoc2VsZik6CkBAIC0xMTM0LDkgKzExNjgsOSBAQAogICAgICAgICBwaCA9IHVybGxpYi5yZXF1ZXN0LlByb3h5SGFuZGxlcihkaWN0KGh0dHA9InByb3h5LmV4YW1wbGUuY29tIikpCiAgICAgICAgIG8uYWRkX2hhbmRsZXIocGgpCiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly93d3cucHl0aG9uLm9yZyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cucHl0aG9uLm9yZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cucHl0aG9uLm9yZyIpCiAgICAgICAgIHIgPSBvLm9wZW4ocmVxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAid3d3LnB5dGhvbi5vcmciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LnB5dGhvbi5vcmciKQogICAgICAgICBkZWwgb3MuZW52aXJvblsnbm9fcHJveHknXQogCiAKQEAgLTExNTAsOSArMTE4NCw5IEBACiAgICAgICAgIGhhbmRsZXJzID0gYWRkX29yZGVyZWRfbW9ja19oYW5kbGVycyhvLCBtZXRoX3NwZWMpCiAKICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInd3dy5leGFtcGxlLmNvbSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJ3d3cuZXhhbXBsZS5jb20iKQogICAgICAgICByID0gby5vcGVuKHJlcSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hvc3QoKSwgInByb3h5LmV4YW1wbGUuY29tOjMxMjgiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhoYW5kbGVyc1swXSwgImh0dHBzX29wZW4iKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgW3R1cFswOjJdIGZvciB0dXAgaW4gby5jYWxsc10pCiAKQEAgLTExNjUsNyArMTE5OSw3IEBACiAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHBzOi8vd3d3LmV4YW1wbGUuY29tLyIpCiAgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJQcm94eS1BdXRob3JpemF0aW9uIiwiRm9vQmFyIikKICAgICAgICAgcmVxLmFkZF9oZWFkZXIoIlVzZXItQWdlbnQiLCJHcmFpbCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmdldF9ob3N0KCksICJ3d3cuZXhhbXBsZS5jb20iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5ob3N0LCAid3d3LmV4YW1wbGUuY29tIikKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVxLl90dW5uZWxfaG9zdCkKICAgICAgICAgciA9IG8ub3BlbihyZXEpCiAgICAgICAgICMgVmVyaWZ5IFByb3h5LUF1dGhvcml6YXRpb24gZ2V0cyB0dW5uZWxlZCB0byByZXF1ZXN0LgpAQCAtMTE3Niw5ICsxMjEwLDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oKCJVc2VyLUFnZW50IiwiR3JhaWwiKSwKICAgICAgICAgICAgICAgICAgICAgICBodHRwc19oYW5kbGVyLmh0dHBjb25uLnJlcV9oZWFkZXJzKQogICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShyZXEuX3R1bm5lbF9ob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaG9zdCgpLCAicHJveHkuZXhhbXBsZS5jb206MzEyOCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVxLmhvc3QsICJwcm94eS5leGFtcGxlLmNvbTozMTI4IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEuZ2V0X2hlYWRlcigiUHJveHktYXV0aG9yaXphdGlvbiIpLCJGb29CYXIiKQogCisgICAgIyBUT0RPOiBUaGlzIHNob3VsZCBiZSBvbmx5IGZvciBPU1gKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicsICJvbmx5IHJlbGV2YW50IGZvciBPU1giKQogICAgIGRlZiB0ZXN0X29zeF9wcm94eV9ieXBhc3Moc2VsZik6CiAgICAgICAgIGJ5cGFzcyA9IHsKICAgICAgICAgICAgICdleGNsdWRlX3NpbXBsZSc6IEZhbHNlLApAQCAtMTI5OCw2ICsxMzM0LDI2IEBACiAgICAgICAgICMgX3Rlc3RfYmFzaWNfYXV0aCBjYWxsZWQgLm9wZW4oKSB0d2ljZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuZXIucmVjb3JkZWQsIFsiZGlnZXN0IiwgImJhc2ljIl0qMikKIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2F1dGhfZGlnZXN0X2hhbmRsZXIoc2VsZik6CisgICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKyAgICAgICAgIyBXaGlsZSB1c2luZyBEaWdlc3RBdXRoSGFuZGxlcgorICAgICAgICBkaWdlc3RfYXV0aF9oYW5kbGVyID0gdXJsbGliLnJlcXVlc3QuSFRUUERpZ2VzdEF1dGhIYW5kbGVyKE5vbmUpCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKyAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IEtlcmJlcm9zXHJcblxyXG4nKQorICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoZGlnZXN0X2F1dGhfaGFuZGxlcikKKyAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcixvcGVuZXIub3BlbiwiaHR0cDovL3d3dy5leGFtcGxlLmNvbSIpCisKKyAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9hdXRoX2Jhc2ljX2hhbmRsZXIoc2VsZik6CisgICAgICAgICMgV2hpbGUgdXNpbmcgQmFzaWNBdXRoSGFuZGxlcgorICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCisgICAgICAgIGJhc2ljX2F1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY0F1dGhIYW5kbGVyKE5vbmUpCisgICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKyAgICAgICAgICAgIDQwMSwgJ1dXVy1BdXRoZW50aWNhdGU6IE5UTE1cclxuXHJcbicpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihiYXNpY19hdXRoX2hhbmRsZXIpCisgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihodHRwX2hhbmRsZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Isb3BlbmVyLm9wZW4sImh0dHA6Ly93d3cuZXhhbXBsZS5jb20iKQorCiAgICAgZGVmIF90ZXN0X2Jhc2ljX2F1dGgoc2VsZiwgb3BlbmVyLCBhdXRoX2hhbmRsZXIsIGF1dGhfaGVhZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF91cmwsIHByb3RlY3RlZF91cmwpOgpAQCAtMTMzNSw2ICsxMzkxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaHR0cF9oYW5kbGVyLnJlcXVlc3RzKSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodHRwX2hhbmRsZXIucmVxdWVzdHNbMF0uaGFzX2hlYWRlcihhdXRoX2hlYWRlcikpCiAKKwogY2xhc3MgTWlzY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2J1aWxkX29wZW5lcihzZWxmKToKQEAgLTEzOTAsMTEgKzE0NDcsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiUE9TVCIsIHNlbGYucG9zdC5nZXRfbWV0aG9kKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkdFVCIsIHNlbGYuZ2V0LmdldF9tZXRob2QoKSkKIAotICAgIGRlZiB0ZXN0X2FkZF9kYXRhKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZ2V0Lmhhc19kYXRhKCkpCisgICAgZGVmIHRlc3RfZGF0YShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmdldC5kYXRhKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJHRVQiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCi0gICAgICAgIHNlbGYuZ2V0LmFkZF9kYXRhKCJzcGFtIikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0Lmhhc19kYXRhKCkpCisgICAgICAgIHNlbGYuZ2V0LmRhdGEgPSAic3BhbSIKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZ2V0LmRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlBPU1QiLCBzZWxmLmdldC5nZXRfbWV0aG9kKCkpCiAKICAgICBkZWYgdGVzdF9nZXRfZnVsbF91cmwoc2VsZik6CkBAIC0xNDAyLDM2ICsxNDU5LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5nZXQuZ2V0X2Z1bGxfdXJsKCkpCiAKICAgICBkZWYgdGVzdF9zZWxlY3RvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiL35qZXJlbXkvIiwgc2VsZi5nZXQuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIi9+amVyZW15LyIsIHNlbGYuZ2V0LnNlbGVjdG9yKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5zZWxlY3RvcikKIAogICAgIGRlZiB0ZXN0X2dldF90eXBlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJodHRwIiwgc2VsZi5nZXQuZ2V0X3R5cGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaHR0cCIsIHNlbGYuZ2V0LnR5cGUpCiAKICAgICBkZWYgdGVzdF9nZXRfaG9zdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnB5dGhvbi5vcmciLCBzZWxmLmdldC5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0Lmhvc3QpCiAKICAgICBkZWYgdGVzdF9nZXRfaG9zdF91bnF1b3RlKHNlbGYpOgogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LiU3MHl0aG9uLm9yZy8iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5ob3N0KQogCiAgICAgZGVmIHRlc3RfcHJveHkoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5nZXQuaGFzX3Byb3h5KCkpCiAgICAgICAgIHNlbGYuZ2V0LnNldF9wcm94eSgid3d3LnBlcmwub3JnIiwgImh0dHAiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5nZXQuaGFzX3Byb3h5KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInd3dy5weXRob24ub3JnIiwgc2VsZi5nZXQuZ2V0X29yaWdpbl9yZXFfaG9zdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucGVybC5vcmciLCBzZWxmLmdldC5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHNlbGYuZ2V0Lm9yaWdpbl9yZXFfaG9zdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgid3d3LnBlcmwub3JnIiwgc2VsZi5nZXQuaG9zdCkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdXJsKHNlbGYpOgogICAgICAgICByZXEgPSBSZXF1ZXN0KCI8VVJMOmh0dHA6Ly93d3cucHl0aG9uLm9yZz4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5nZXRfaG9zdCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ3d3cucHl0aG9uLm9yZyIsIHJlcS5ob3N0KQogCiAgICAgZGVmIHRlc3RfdXJsX2ZyYWdtZW50KHNlbGYpOgogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvP3FzPXF1ZXJ5I2ZyYWdtZW50PXRydWUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvP3FzPXF1ZXJ5IiwgcmVxLmdldF9zZWxlY3RvcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIvP3FzPXF1ZXJ5IiwgcmVxLnNlbGVjdG9yKQogICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vd3d3LnB5dGhvbi5vcmcvI2Z1bj10cnVlIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5nZXRfc2VsZWN0b3IoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiLyIsIHJlcS5zZWxlY3RvcikKIAogICAgICAgICAjIElzc3VlIDExNzAzOiBnZXR1cmwoKSBvbWl0cyBmcmFnbWVudCBpbiB0aGUgb3JpZ2luYWwgVVJMLgogICAgICAgICB1cmwgPSAnaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3VybGxpYjIuaHRtbCNPSycKQEAgLTE0NDMsNyArMTUwMCw5IEBACiAgICAgSXNzdWUgMTMyMTEgcmV2ZWFscyB0aGF0IEhUVFBFcnJvciBkaWRuJ3QgaW1wbGVtZW50IHRoZSBVUkxFcnJvcgogICAgIGludGVyZmFjZSBldmVuIHRob3VnaCBIVFRQRXJyb3IgaXMgYSBzdWJjbGFzcyBvZiBVUkxFcnJvci4KIAotICAgID4+PiBlcnIgPSB1cmxsaWIuZXJyb3IuSFRUUEVycm9yKG1zZz0nc29tZXRoaW5nIGJhZCBoYXBwZW5lZCcsIHVybD1Ob25lLCBjb2RlPU5vbmUsIGhkcnM9Tm9uZSwgZnA9Tm9uZSkKKyAgICA+Pj4gbXNnID0gJ3NvbWV0aGluZyBiYWQgaGFwcGVuZWQnCisgICAgPj4+IHVybCA9IGNvZGUgPSBoZHJzID0gZnAgPSBOb25lCisgICAgPj4+IGVyciA9IHVybGxpYi5lcnJvci5IVFRQRXJyb3IodXJsLCBjb2RlLCBtc2csIGhkcnMsIGZwKQogICAgID4+PiBhc3NlcnQgaGFzYXR0cihlcnIsICdyZWFzb24nKQogICAgID4+PiBlcnIucmVhc29uCiAgICAgJ3NvbWV0aGluZyBiYWQgaGFwcGVuZWQnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKaW5kZXggOWUxY2U1Yi4uNmVmNDIwMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQpAQCAtNDc0LDYgKzQ3NCwxMyBAQAogICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9odHRwc193aXRoX2NhZGVmYXVsdChzZWxmKToKKyAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAjIFNlbGYtc2lnbmVkIGNlcnQgc2hvdWxkIGZhaWwgdmVyaWZpY2F0aW9uIHdpdGggc3lzdGVtIGNlcnRpZmljYXRlIHN0b3JlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModXJsbGliLmVycm9yLlVSTEVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCisKICAgICBkZWYgdGVzdF9zZW5kaW5nX2hlYWRlcnMoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCiAgICAgICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIGhhbmRsZXIucG9ydCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQppbmRleCA1ZmNiNGNiLi5mYzU1MjdlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CkBAIC04MywxMiArODMsMTMgQEAKICAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKICAgICAgICAgIyBjYWxsaW5nIC5jbG9zZSgpIG9uIHVybGxpYjIncyByZXNwb25zZSBvYmplY3RzIHNob3VsZCBjbG9zZSB0aGUKICAgICAgICAgIyB1bmRlcmx5aW5nIHNvY2tldAotCi0gICAgICAgIHJlc3BvbnNlID0gX3VybG9wZW5fd2l0aF9yZXRyeSgiaHR0cDovL3d3dy5weXRob24ub3JnLyIpCi0gICAgICAgIHNvY2sgPSByZXNwb25zZS5mcAotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNvY2suY2xvc2VkKQotICAgICAgICByZXNwb25zZS5jbG9zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrLmNsb3NlZCkKKyAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8iCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQodXJsKToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gX3VybG9wZW5fd2l0aF9yZXRyeSh1cmwpCisgICAgICAgICAgICBzb2NrID0gcmVzcG9uc2UuZnAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc29jay5jbG9zZWQpCisgICAgICAgICAgICByZXNwb25zZS5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc29jay5jbG9zZWQpCiAKIGNsYXNzIE90aGVyTmV0d29ya1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQppbmRleCA4NjhlZDI0Li42MzgxMDcwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKQEAgLTUyLDYgKzUyLDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0cihrZXkpICsgJyEhIScKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGl0ZXIoVCgoMSwyKSkpKSwgIjAhISEiKQogCisgICAgZGVmIHRlc3RfdXNlcmxpc3RfY29weShzZWxmKToKKyAgICAgICAgdSA9IHNlbGYudHlwZTJ0ZXN0KFs2LCA4LCAxLCA5LCAxXSkKKyAgICAgICAgdiA9IHUuY29weSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSwgdikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHUpLCB0eXBlKHYpKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVXNlckxpc3RUZXN0KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKaW5kZXggN2E4YjkzMi4uZDVkMGM4OSAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQpAQCAtMTcsMTEgKzE3LDExIEBACiAgICAgIyBPdmVyd3JpdGUgdGhlIHRocmVlIHRlc3RpbmcgbWV0aG9kcywgYmVjYXVzZSBVc2VyU3RyaW5nCiAgICAgIyBjYW4ndCBjb3BlIHdpdGggYXJndW1lbnRzIHByb3BhZ2F0ZWQgdG8gVXNlclN0cmluZwogICAgICMgKGFuZCB3ZSBkb24ndCB0ZXN0IHdpdGggc3ViY2xhc3NlcykKLSAgICBkZWYgY2hlY2tlcXVhbChzZWxmLCByZXN1bHQsIG9iamVjdCwgbWV0aG9kbmFtZSwgKmFyZ3MpOgorICAgIGRlZiBjaGVja2VxdWFsKHNlbGYsIHJlc3VsdCwgb2JqZWN0LCBtZXRob2RuYW1lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXN1bHQgPSBzZWxmLmZpeHR5cGUocmVzdWx0KQogICAgICAgICBvYmplY3QgPSBzZWxmLmZpeHR5cGUob2JqZWN0KQogICAgICAgICAjIHdlIGRvbid0IGZpeCB0aGUgYXJndW1lbnRzLCBiZWNhdXNlIFVzZXJTdHJpbmcgY2FuJ3QgY29wZSB3aXRoIGl0Ci0gICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iamVjdCwgbWV0aG9kbmFtZSkoKmFyZ3MpCisgICAgICAgIHJlYWxyZXN1bHQgPSBnZXRhdHRyKG9iamVjdCwgbWV0aG9kbmFtZSkoKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgcmVzdWx0LAogICAgICAgICAgICAgcmVhbHJlc3VsdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5IGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CmluZGV4IDQzZmE2NTYuLjdiYzU5ZWQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKQEAgLTQ3MSwxNCArNDcxLDE0IEBACiAgICAgICAgIGlmIHBpZCA9PSAwOgogICAgICAgICAgICAgb3MuY2xvc2UoZmRzWzBdKQogICAgICAgICAgICAgdmFsdWUgPSB1dWlkLnV1aWQ0KCkKLSAgICAgICAgICAgIG9zLndyaXRlKGZkc1sxXSwgdmFsdWUuaGV4LmVuY29kZSgnbGF0aW4xJykpCisgICAgICAgICAgICBvcy53cml0ZShmZHNbMV0sIHZhbHVlLmhleC5lbmNvZGUoJ2xhdGluLTEnKSkKICAgICAgICAgICAgIG9zLl9leGl0KDApCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG9zLmNsb3NlKGZkc1sxXSkKICAgICAgICAgICAgIHBhcmVudF92YWx1ZSA9IHV1aWQudXVpZDQoKS5oZXgKICAgICAgICAgICAgIG9zLndhaXRwaWQocGlkLCAwKQotICAgICAgICAgICAgY2hpbGRfdmFsdWUgPSBvcy5yZWFkKGZkc1swXSwgMTAwKS5kZWNvZGUoJ2xhdGluMScpCisgICAgICAgICAgICBjaGlsZF92YWx1ZSA9IG9zLnJlYWQoZmRzWzBdLCAxMDApLmRlY29kZSgnbGF0aW4tMScpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocGFyZW50X3ZhbHVlLCBjaGlsZF92YWx1ZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5IGIvTGliL3Rlc3QvdGVzdF92ZW52LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2OTY4NDQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKQEAgLTAsMCArMSwyMDMgQEAKKyIiIgorVGVzdCBoYXJuZXNzIGZvciB0aGUgdmVudiBtb2R1bGUuCisKK0NvcHlyaWdodCAoQykgMjAxMS0yMDEyIFZpbmF5IFNhamlwLgorTGljZW5zZWQgdG8gdGhlIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBmaWxlCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLCBydW5fdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbl9zeW1saW5rKQoraW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdmVudgorCitjbGFzcyBCYXNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgdmVudiB0ZXN0cy4iIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5lbnZfZGlyID0gb3MucGF0aC5yZWFscGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ1NjcmlwdHMnCisgICAgICAgICAgICBzZWxmLnB5ZG9jbmFtZSA9ICdweWRvYy5weScKKyAgICAgICAgICAgIHNlbGYubGliID0gKCdMaWInLCkKKyAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdJbmNsdWRlJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5iaW5kaXIgPSAnYmluJworICAgICAgICAgICAgc2VsZi5weWRvY25hbWUgPSAncHlkb2MnCisgICAgICAgICAgICBzZWxmLmxpYiA9ICgnbGliJywgJ3B5dGhvbiVzJyAlIHN5cy52ZXJzaW9uWzozXSkKKyAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdpbmNsdWRlJworICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHN5cy5leGVjdXRhYmxlCisgICAgICAgIHNlbGYuZXhlID0gb3MucGF0aC5zcGxpdChleGVjdXRhYmxlKVstMV0KKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisKKyAgICBkZWYgcnVuX3dpdGhfY2FwdHVyZShzZWxmLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dHB1dDoKKyAgICAgICAgICAgIHdpdGggY2FwdHVyZWRfc3RkZXJyKCkgYXMgZXJyb3I6CisgICAgICAgICAgICAgICAgZnVuYygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBvdXRwdXQuZ2V0dmFsdWUoKSwgZXJyb3IuZ2V0dmFsdWUoKQorCisgICAgZGVmIGdldF9lbnZfZmlsZShzZWxmLCAqYXJncyk6CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5lbnZfZGlyLCAqYXJncykKKworICAgIGRlZiBnZXRfdGV4dF9maWxlX2NvbnRlbnRzKHNlbGYsICphcmdzKToKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZ2V0X2Vudl9maWxlKCphcmdzKSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgcmVzdWx0ID0gZi5yZWFkKCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCitjbGFzcyBCYXNpY1Rlc3QoQmFzZVRlc3QpOgorICAgICIiIlRlc3QgdmVudiBtb2R1bGUgZnVuY3Rpb25hbGl0eS4iIiIKKworICAgIGRlZiBpc2RpcihzZWxmLCAqYXJncyk6CisgICAgICAgIGZuID0gc2VsZi5nZXRfZW52X2ZpbGUoKmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKGZuKSkKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGUgY3JlYXRlIGZ1bmN0aW9uIHdpdGggZGVmYXVsdCBhcmd1bWVudHMuCisgICAgICAgICIiIgorICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5iaW5kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5pbmNsdWRlKQorICAgICAgICBzZWxmLmlzZGlyKCpzZWxmLmxpYikKKyAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RleHRfZmlsZV9jb250ZW50cygncHl2ZW52LmNmZycpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgKCdfX1BZVkVOVl9MQVVOQ0hFUl9fJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBvcy5lbnZpcm9uKToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSAgb3MuZW52aXJvblsnX19QWVZFTlZfTEFVTkNIRVJfXyddCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguZGlybmFtZShleGVjdXRhYmxlKQorICAgICAgICBzZWxmLmFzc2VydEluKCdob21lID0gJXMnICUgcGF0aCwgZGF0YSkKKyAgICAgICAgZGF0YSA9IHNlbGYuZ2V0X3RleHRfZmlsZV9jb250ZW50cyhzZWxmLmJpbmRpciwgc2VsZi5weWRvY25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkYXRhLnN0YXJ0c3dpdGgoJyMhJXMlcycgJSAoc2VsZi5lbnZfZGlyLCBvcy5zZXApKSkKKyAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmbik6ICAjIGRpYWdub3N0aWNzIGZvciBXaW5kb3dzIGJ1aWxkYm90IGZhaWx1cmVzCisgICAgICAgICAgICBiZCA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyKQorICAgICAgICAgICAgcHJpbnQoJ0NvbnRlbnRzIG9mICVyOicgJSBiZCkKKyAgICAgICAgICAgIHByaW50KCcgICAgJXInICUgb3MubGlzdGRpcihiZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbiksICdGaWxlICVyIHNob3VsZCBleGlzdC4nICUgZm4pCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LCAnVGVzdCBub3QgYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAgICAgJ2luIGEgdmVudicpCisgICAgZGVmIHRlc3RfcHJlZml4ZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHByZWZpeCB2YWx1ZXMgYXJlIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgI2NoZWNrIG91ciBwcmVmaXhlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN5cy5iYXNlX3ByZWZpeCwgc3lzLnByZWZpeCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuYmFzZV9leGVjX3ByZWZpeCwgc3lzLmV4ZWNfcHJlZml4KQorCisgICAgICAgICMgY2hlY2sgYSB2ZW52J3MgcHJlZml4ZXMKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYucnVuX3dpdGhfY2FwdHVyZSh2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBlbnZweSA9IG9zLnBhdGguam9pbihzZWxmLmVudl9kaXIsIHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgY21kID0gW2VudnB5LCAnLWMnLCBOb25lXQorICAgICAgICBmb3IgcHJlZml4LCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ3ByZWZpeCcsIHNlbGYuZW52X2RpciksCisgICAgICAgICAgICAoJ3ByZWZpeCcsIHNlbGYuZW52X2RpciksCisgICAgICAgICAgICAoJ2Jhc2VfcHJlZml4Jywgc3lzLnByZWZpeCksCisgICAgICAgICAgICAoJ2Jhc2VfZXhlY19wcmVmaXgnLCBzeXMuZXhlY19wcmVmaXgpKToKKyAgICAgICAgICAgIGNtZFsyXSA9ICdpbXBvcnQgc3lzOyBwcmludChzeXMuJXMpJyAlIHByZWZpeAorICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBleHBlY3RlZC5lbmNvZGUoKSkKKworICAgIGRlZiB0ZXN0X292ZXJ3cml0ZV9leGlzdGluZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgY29udHJvbCBvZiBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBlbnZpcm9ubWVudCBkaXJlY3RvcnkuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB2ZW52LmNyZWF0ZSwgc2VsZi5lbnZfZGlyKQorICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUpCisgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKworICAgIGRlZiB0ZXN0X3VwZ3JhZGUoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHVwZ3JhZGluZyBhbiBleGlzdGluZyBlbnZpcm9ubWVudCBkaXJlY3RvcnkuCisgICAgICAgICIiIgorICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKHVwZ3JhZGU9VHJ1ZSkKKyAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKGJ1aWxkZXIuY3JlYXRlLCBzZWxmLmVudl9kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5iaW5kaXIpCisgICAgICAgIHNlbGYuaXNkaXIoc2VsZi5pbmNsdWRlKQorICAgICAgICBzZWxmLmlzZGlyKCpzZWxmLmxpYikKKyAgICAgICAgZm4gPSBzZWxmLmdldF9lbnZfZmlsZShzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmbik6ICAjIGRpYWdub3N0aWNzIGZvciBXaW5kb3dzIGJ1aWxkYm90IGZhaWx1cmVzCisgICAgICAgICAgICBiZCA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyKQorICAgICAgICAgICAgcHJpbnQoJ0NvbnRlbnRzIG9mICVyOicgJSBiZCkKKyAgICAgICAgICAgIHByaW50KCcgICAgJXInICUgb3MubGlzdGRpcihiZCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhmbiksICdGaWxlICVyIHNob3VsZCBleGlzdC4nICUgZm4pCisKKyAgICBkZWYgdGVzdF9pc29sYXRpb24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IGlzb2xhdGlvbiBmcm9tIHN5c3RlbSBzaXRlLXBhY2thZ2VzCisgICAgICAgICIiIgorICAgICAgICBmb3Igc3NwLCBzIGluICgoVHJ1ZSwgJ3RydWUnKSwgKEZhbHNlLCAnZmFsc2UnKSk6CisgICAgICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKGNsZWFyPVRydWUsIHN5c3RlbV9zaXRlX3BhY2thZ2VzPXNzcCkKKyAgICAgICAgICAgIGJ1aWxkZXIuY3JlYXRlKHNlbGYuZW52X2RpcikKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLmdldF90ZXh0X2ZpbGVfY29udGVudHMoJ3B5dmVudi5jZmcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignaW5jbHVkZS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcyA9ICVzXG4nICUgcywgZGF0YSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGNhbl9zeW1saW5rKCksICdOZWVkcyBzeW1saW5rcycpCisgICAgZGVmIHRlc3Rfc3ltbGlua2luZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3Qgc3ltbGlua2luZyB3b3JrcyBhcyBleHBlY3RlZAorICAgICAgICAiIiIKKyAgICAgICAgZm9yIHVzbCBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgYnVpbGRlciA9IHZlbnYuRW52QnVpbGRlcihjbGVhcj1UcnVlLCBzeW1saW5rcz11c2wpCisgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShzZWxmLmVudl9kaXIpCisgICAgICAgICAgICBmbiA9IHNlbGYuZ2V0X2Vudl9maWxlKHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgICAgICMgRG9uJ3QgdGVzdCB3aGVuIEZhbHNlLCBiZWNhdXNlIGUuZy4gJ3B5dGhvbicgaXMgYWx3YXlzCisgICAgICAgICAgICAjIHN5bWxpbmtlZCB0byAncHl0aG9uMy4zJyBpbiB0aGUgZW52LCBldmVuIHdoZW4gc3ltbGlua2luZyBpbgorICAgICAgICAgICAgIyBnZW5lcmFsIGlzbid0IHdhbnRlZC4KKyAgICAgICAgICAgIGlmIHVzbDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2xpbmsoZm4pKQorCisgICAgIyBJZiBhIHZlbnYgaXMgY3JlYXRlZCBmcm9tIGEgc291cmNlIGJ1aWxkIGFuZCB0aGF0IHZlbnYgaXMgdXNlZCB0bworICAgICMgcnVuIHRoZSB0ZXN0LCB0aGUgcHl2ZW52LmNmZyBpbiB0aGUgdmVudiBjcmVhdGVkIGluIHRoZSB0ZXN0IHdpbGwKKyAgICAjIHBvaW50IHRvIHRoZSB2ZW52IGJlaW5nIHVzZWQgdG8gcnVuIHRoZSB0ZXN0LCBhbmQgd2UgbG9zZSB0aGUgbGluaworICAgICMgdG8gdGhlIHNvdXJjZSBidWlsZCAtIHNvIFB5dGhvbiBjYW4ndCBpbml0aWFsaXNlIHByb3Blcmx5LgorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnByZWZpeCAhPSBzeXMuYmFzZV9wcmVmaXgsICdUZXN0IG5vdCBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gYSB2ZW52JykKKyAgICBkZWYgdGVzdF9leGVjdXRhYmxlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBzeXMuZXhlY3V0YWJsZSB2YWx1ZSBpcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLnJ1bl93aXRoX2NhcHR1cmUodmVudi5jcmVhdGUsIHNlbGYuZW52X2RpcikKKyAgICAgICAgZW52cHkgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5yZWFscGF0aChzZWxmLmVudl9kaXIpLCBzZWxmLmJpbmRpciwgc2VsZi5leGUpCisgICAgICAgIGNtZCA9IFtlbnZweSwgJy1jJywgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy5leGVjdXRhYmxlKSddCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZW52cHkuZW5jb2RlKCkpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhjYW5fc3ltbGluaygpLCAnTmVlZHMgc3ltbGlua3MnKQorICAgIGRlZiB0ZXN0X2V4ZWN1dGFibGVfc3ltbGlua3Moc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIHN5cy5leGVjdXRhYmxlIHZhbHVlIGlzIGFzIGV4cGVjdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmVudl9kaXIpCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIoY2xlYXI9VHJ1ZSwgc3ltbGlua3M9VHJ1ZSkKKyAgICAgICAgYnVpbGRlci5jcmVhdGUoc2VsZi5lbnZfZGlyKQorICAgICAgICBlbnZweSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnJlYWxwYXRoKHNlbGYuZW52X2RpciksIHNlbGYuYmluZGlyLCBzZWxmLmV4ZSkKKyAgICAgICAgY21kID0gW2VudnB5LCAnLWMnLCAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLmV4ZWN1dGFibGUpJ10KKyAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dC5zdHJpcCgpLCBlbnZweS5lbmNvZGUoKSkKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHJ1bl91bml0dGVzdChCYXNpY1Rlc3QpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkgYi9MaWIvdGVzdC90ZXN0X3dhaXQzLnB5CmluZGV4IDc4NmU2MGIuLmJkMDZjOGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2FpdDMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YWl0My5weQpAQCAtMTksMTMgKzE5LDE2IEBACiAKIGNsYXNzIFdhaXQzVGVzdChGb3JrV2FpdCk6CiAgICAgZGVmIHdhaXRfaW1wbChzZWxmLCBjcGlkKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAjIFRoaXMgbWFueSBpdGVyYXRpb25zIGNhbiBiZSByZXF1aXJlZCwgc2luY2Ugc29tZSBwcmV2aW91c2x5IHJ1bgorICAgICAgICAjIHRlc3RzIChlLmcuIHRlc3RfY3R5cGVzKSBjb3VsZCBoYXZlIHNwYXduZWQgYSBsb3Qgb2YgY2hpbGRyZW4KKyAgICAgICAgIyB2ZXJ5IHF1aWNrbHkuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDMwKToKICAgICAgICAgICAgICMgd2FpdDMoKSBzaG91bGRuJ3QgaGFuZywgYnV0IHNvbWUgb2YgdGhlIGJ1aWxkYm90cyBzZWVtIHRvIGhhbmcKICAgICAgICAgICAgICMgaW4gdGhlIGZvcmtpbmcgdGVzdHMuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4IHRoZSBwcm9ibGVtLgogICAgICAgICAgICAgc3BpZCwgc3RhdHVzLCBydXNhZ2UgPSBvcy53YWl0Myhvcy5XTk9IQU5HKQogICAgICAgICAgICAgaWYgc3BpZCA9PSBjcGlkOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEuMCkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BpZCwgY3BpZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsICJjYXVzZSA9ICVkLCBleGl0ID0gJWQiICUgKHN0YXR1cyYweGZmLCBzdGF0dXM+PjgpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKaW5kZXggNzliZTgzNS4uOTUzYjI4MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CkBAIC01MTIsMTIgKzUxMiwxMSBAQAogICAgIGRlZiB0ZXN0X3Nob3d3YXJuaW5nX25vdF9jYWxsYWJsZShzZWxmKToKICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgogICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQotICAgICAgICAgICAgb2xkX3Nob3d3YXJuaW5nID0gc2VsZi5tb2R1bGUuc2hvd3dhcm5pbmcKKyAgICAgICAgICAgIHNlbGYubW9kdWxlLnNob3d3YXJuaW5nID0gcHJpbnQKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9vdXRwdXQoJ3N0ZG91dCcpOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4oJ1dhcm5pbmchJykKICAgICAgICAgICAgIHNlbGYubW9kdWxlLnNob3d3YXJuaW5nID0gMjMKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubW9kdWxlLndhcm4sICJXYXJuaW5nISIpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLnNob3d3YXJuaW5nID0gb2xkX3Nob3d3YXJuaW5nCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYubW9kdWxlLndhcm4sICJXYXJuaW5nISIpCiAKICAgICBkZWYgdGVzdF9zaG93X3dhcm5pbmdfb3V0cHV0KHNlbGYpOgogICAgICAgICAjIFdpdGggc2hvd2FybmluZygpIG1pc3NpbmcsIG1ha2Ugc3VyZSB0aGF0IG91dHB1dCBpcyBva2F5LgpAQCAtNTQ3LDEwICs1NDYsMTMgQEAKICAgICAgICAgZ2xvYmFsc19kaWN0ID0gZ2xvYmFscygpCiAgICAgICAgIG9sZGZpbGUgPSBnbG9iYWxzX2RpY3RbJ19fZmlsZV9fJ10KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpIGFzIHc6CisgICAgICAgICAgICBjYXRjaCA9IG9yaWdpbmFsX3dhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGU9c2VsZi5tb2R1bGUpCisgICAgICAgICAgICB3aXRoIGNhdGNoIGFzIHc6CiAgICAgICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQogICAgICAgICAgICAgICAgIGdsb2JhbHNfZGljdFsnX19maWxlX18nXSA9IE5vbmUKICAgICAgICAgICAgICAgICBvcmlnaW5hbF93YXJuaW5ncy53YXJuKCd0ZXN0JywgVXNlcldhcm5pbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbih3KSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGdsb2JhbHNfZGljdFsnX19maWxlX18nXSA9IG9sZGZpbGUKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWJicm93c2VyLnB5IGIvTGliL3Rlc3QvdGVzdF93ZWJicm93c2VyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YjkzNjQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3dlYmJyb3dzZXIucHkKQEAgLTAsMCArMSwxOTIgQEAKK2ltcG9ydCB3ZWJicm93c2VyCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzdWJwcm9jZXNzCitmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworCitVUkwgPSAnaHR0cDovL3d3dy5leGFtcGxlLmNvbScKK0NNRF9OQU1FID0gJ3Rlc3QnCisKKworY2xhc3MgUG9wZW5Nb2NrKG1vY2suTWFnaWNNb2NrKToKKworICAgIGRlZiBwb2xsKHNlbGYpOgorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIHdhaXQoc2VsZiwgc2Vjb25kcz1Ob25lKToKKyAgICAgICAgcmV0dXJuIDAKKworCitjbGFzcyBDb21tYW5kVGVzdE1peGluOgorCisgICAgZGVmIF90ZXN0KHNlbGYsIG1ldGgsICosIGFyZ3M9W1VSTF0sIGt3PXt9LCBvcHRpb25zLCBhcmd1bWVudHMpOgorICAgICAgICAiIiJHaXZlbiBhIHdlYiBicm93c2VyIGluc3RhbmNlIG1ldGhvZCBuYW1lIGFsb25nIHdpdGggYXJndW1lbnRzIGFuZAorICAgICAgICBrZXl3b3JkcyBmb3Igc2FtZSAod2hpY2ggZGVmYXVsdHMgdG8gdGhlIHNpbmdsZSBhcmd1bWVudCBVUkwpLCBjcmVhdGVzCisgICAgICAgIGEgYnJvd3NlciBpbnN0YW5jZSBmcm9tIHRoZSBjbGFzcyBwb2ludGVkIHRvIGJ5IHNlbGYuYnJvd3NlciwgY2FsbHMgdGhlCisgICAgICAgIGluZGljYXRlZCBpbnN0YW5jZSBtZXRob2Qgd2l0aCB0aGUgaW5kaWNhdGVkIGFyZ3VtZW50cywgYW5kIGNvbXBhcmVzCisgICAgICAgIHRoZSByZXN1bHRpbmcgb3B0aW9ucyBhbmQgYXJndW1lbnRzIHBhc3NlZCB0byBQb3BlbiBieSB0aGUgYnJvd3NlcgorICAgICAgICBpbnN0YW5jZSBhZ2FpbnN0IHRoZSAnb3B0aW9ucycgYW5kICdhcmdzJyBsaXN0cy4gIE9wdGlvbnMgYXJlIGNvbXBhcmVkCisgICAgICAgIGluIGEgcG9zaXRpb24gaW5kZXBlbmRlbnQgZmFzaGlvbiwgYW5kIHRoZSBhcmd1bWVudHMgYXJlIGNvbXBhcmVkIGluCisgICAgICAgIHNlcXVlbmNlIG9yZGVyIHRvIHdoYXRldmVyIGlzIGxlZnQgb3ZlciBhZnRlciByZW1vdmluZyB0aGUgb3B0aW9ucy4KKworICAgICAgICAiIiIKKyAgICAgICAgcG9wZW4gPSBQb3Blbk1vY2soKQorICAgICAgICBzdXBwb3J0LnBhdGNoKHNlbGYsIHN1YnByb2Nlc3MsICdQb3BlbicsIHBvcGVuKQorICAgICAgICBicm93c2VyID0gc2VsZi5icm93c2VyX2NsYXNzKG5hbWU9Q01EX05BTUUpCisgICAgICAgIGdldGF0dHIoYnJvd3NlciwgbWV0aCkoKmFyZ3MsICoqa3cpCisgICAgICAgIHBvcGVuX2FyZ3MgPSBzdWJwcm9jZXNzLlBvcGVuLmNhbGxfYXJnc1swXVswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcGVuX2FyZ3NbMF0sIENNRF9OQU1FKQorICAgICAgICBwb3Blbl9hcmdzLnBvcCgwKQorICAgICAgICBmb3Igb3B0aW9uIGluIG9wdGlvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9wdGlvbiwgcG9wZW5fYXJncykKKyAgICAgICAgICAgIHBvcGVuX2FyZ3MucG9wKHBvcGVuX2FyZ3MuaW5kZXgob3B0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3Blbl9hcmdzLCBhcmd1bWVudHMpCisKKworY2xhc3MgR2VuZXJpY0Jyb3dzZXJDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5HZW5lcmljQnJvd3NlcgorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgQmFja2dyb3VuZEJyb3dzZXJDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5CYWNrZ3JvdW5kQnJvd3NlcgorCisgICAgZGVmIHRlc3Rfb3BlbihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3BlbicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgQ2hyb21lQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuQ2hyb21lCisKKyAgICBkZWYgdGVzdF9vcGVuKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVtdLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdCgnb3Blbl9uZXcnLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctLW5ldy13aW5kb3cnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKworY2xhc3MgTW96aWxsYUNvbW1hbmRUZXN0KENvbW1hbmRUZXN0TWl4aW4sIHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGJyb3dzZXJfY2xhc3MgPSB3ZWJicm93c2VyLk1vemlsbGEKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmFpc2UnLCAnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30pJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX3dpdGhfYXV0b3JhaXNlX2ZhbHNlKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuJywga3c9ZGljdChhdXRvcmFpc2U9RmFsc2UpLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9Wyctbm9yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yYWlzZScsICctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctd2luZG93KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXdfdGFiKHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmFpc2UnLCAnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXRhYiknLmZvcm1hdChVUkwpXSkKKworCitjbGFzcyBHYWxlb25Db21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5HYWxlb24KKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctbiddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bVVJMXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1ub3JhaXNlJywgJy1uJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXcnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9W1VSTF0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy13J10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVtVUkxdKQorCisKK2NsYXNzIE9wZXJhQ29tbWFuZFRlc3QoQ29tbWFuZFRlc3RNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgYnJvd3Nlcl9jbGFzcyA9IHdlYmJyb3dzZXIuT3BlcmEKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBrdz1kaWN0KGF1dG9yYWlzZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnLCAnLW5vcmFpc2UnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9KScuZm9ybWF0KFVSTCldKQorCisgICAgZGVmIHRlc3Rfb3Blbl9uZXcoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3JywKKyAgICAgICAgICAgICAgICAgICBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cz1bJ29wZW5VUkwoe30sbmV3LXdpbmRvdyknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ld190YWInLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSxuZXctcGFnZSknLmZvcm1hdChVUkwpXSkKKworCitjbGFzcyBFTGlua3NDb21tYW5kVGVzdChDb21tYW5kVGVzdE1peGluLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBicm93c2VyX2NsYXNzID0gd2ViYnJvd3Nlci5FbGlua3MKKworICAgIGRlZiB0ZXN0X29wZW4oc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLCBvcHRpb25zPVsnLXJlbW90ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fd2l0aF9hdXRvcmFpc2VfZmFsc2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW4nLAorICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9WyctcmVtb3RlJ10sCisgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzPVsnb3BlblVSTCh7fSknLmZvcm1hdChVUkwpXSkKKworICAgIGRlZiB0ZXN0X29wZW5fbmV3KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0KCdvcGVuX25ldycsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy13aW5kb3cpJy5mb3JtYXQoVVJMKV0pCisKKyAgICBkZWYgdGVzdF9vcGVuX25ld190YWIoc2VsZik6CisgICAgICAgIHNlbGYuX3Rlc3QoJ29wZW5fbmV3X3RhYicsCisgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1bJy1yZW1vdGUnXSwKKyAgICAgICAgICAgICAgICAgICBhcmd1bWVudHM9WydvcGVuVVJMKHt9LG5ldy10YWIpJy5mb3JtYXQoVVJMKV0pCisKKworaWYgX19uYW1lX189PSdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQppbmRleCAzNGMzZGVhLi5lYjdmNzVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKQEAgLTE2LDE2ICsxNiwxMiBAQAogICAgIHRyeToKICAgICAgICAgIyBBc2sgdGhlIG1peGVyIEFQSSBmb3IgdGhlIG51bWJlciBvZiBkZXZpY2VzIGl0IGtub3dzIGFib3V0LgogICAgICAgICAjIFdoZW4gdGhlcmUgYXJlIG5vIGRldmljZXMsIFBsYXlTb3VuZCB3aWxsIGZhaWwuCi0gICAgICAgIGlmIGN0eXBlcy53aW5kbGwud2lubW0ubWl4ZXJHZXROdW1EZXZzKCkgaXMgMDoKKyAgICAgICAgaWYgY3R5cGVzLndpbmRsbC53aW5tbS5taXhlckdldE51bURldnMoKSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAga2V5ID0gd2lucmVnLk9wZW5LZXlFeCh3aW5yZWcuSEtFWV9DVVJSRU5UX1VTRVIsCiAgICAgICAgICAgICAgICAgIkFwcEV2ZW50c1xTY2hlbWVzXEFwcHNcLkRlZmF1bHRcezB9XC5EZWZhdWx0Ii5mb3JtYXQoc291bmQpKQotICAgICAgICB2YWx1ZSA9IHdpbnJlZy5FbnVtVmFsdWUoa2V5LCAwKVsxXQotICAgICAgICBpZiB2YWx1ZSBpcyBub3QgIiI6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiB3aW5yZWcuRW51bVZhbHVlKGtleSwgMClbMV0gIT0gIiIKICAgICBleGNlcHQgV2luZG93c0Vycm9yOgogICAgICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDA4ZjhkOWEuLjA1YzFmNGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTksNiArOSw4IEBACiBmcm9tIHdzZ2lyZWYuc2ltcGxlX3NlcnZlciBpbXBvcnQgbWFrZV9zZXJ2ZXIKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPLCBCdWZmZXJlZFJlYWRlcgogZnJvbSBzb2NrZXRzZXJ2ZXIgaW1wb3J0IEJhc2VTZXJ2ZXIKK2Zyb20gcGxhdGZvcm0gaW1wb3J0IHB5dGhvbl9pbXBsZW1lbnRhdGlvbgorCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMTAwLDkgKzEwMiwxMSBAQAogY2xhc3MgSW50ZWdyYXRpb25UZXN0cyhUZXN0Q2FzZSk6CiAKICAgICBkZWYgY2hlY2tfaGVsbG8oc2VsZiwgb3V0LCBoYXNfbGVuZ3RoPVRydWUpOgorICAgICAgICBweXZlciA9IChweXRob25faW1wbGVtZW50YXRpb24oKSArICIvIiArCisgICAgICAgICAgICAgICAgc3lzLnZlcnNpb24uc3BsaXQoKVswXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsCiAgICAgICAgICAgICAoIkhUVFAvMS4wIDIwMCBPS1xyXG4iCi0gICAgICAgICAgICAiU2VydmVyOiBXU0dJU2VydmVyLzAuMiBQeXRob24vIitzeXMudmVyc2lvbi5zcGxpdCgpWzBdKyJcclxuIgorICAgICAgICAgICAgIlNlcnZlcjogV1NHSVNlcnZlci8wLjIgIiArIHB5dmVyICsiXHJcbiIKICAgICAgICAgICAgICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cclxuIgogICAgICAgICAgICAgIkRhdGU6IE1vbiwgMDUgSnVuIDIwMDYgMTg6NDk6NTQgR01UXHJcbiIgKwogICAgICAgICAgICAgKGhhc19sZW5ndGggYW5kICAiQ29udGVudC1MZW5ndGg6IDEzXHJcbiIgb3IgIiIpICsKQEAgLTE1Niw5ICsxNjAsMTEgQEAKICAgICAgICAgb3V0LCBlcnIgPSBydW5fYW1vY2sodmFsaWRhdG9yKGFwcCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShlcnIuZW5kc3dpdGgoJyJHRVQgLyBIVFRQLzEuMCIgMjAwIDRcbicpKQogICAgICAgICB2ZXIgPSBzeXMudmVyc2lvbi5zcGxpdCgpWzBdLmVuY29kZSgnYXNjaWknKQorICAgICAgICBweSAgPSBweXRob25faW1wbGVtZW50YXRpb24oKS5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgcHl2ZXIgPSBweSArIGIiLyIgKyB2ZXIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBiIkhUVFAvMS4wIDIwMCBPS1xyXG4iCi0gICAgICAgICAgICAgICAgYiJTZXJ2ZXI6IFdTR0lTZXJ2ZXIvMC4yIFB5dGhvbi8iICsgdmVyICsgYiJcclxuIgorICAgICAgICAgICAgICAgIGIiU2VydmVyOiBXU0dJU2VydmVyLzAuMiAiKyBweXZlciArIGIiXHJcbiIKICAgICAgICAgICAgICAgICBiIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOFxyXG4iCiAgICAgICAgICAgICAgICAgYiJEYXRlOiBXZWQsIDI0IERlYyAyMDA4IDEzOjI5OjMyIEdNVFxyXG4iCiAgICAgICAgICAgICAgICAgYiJcclxuIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCAzMDkyZjNiLi45Y2ViYzNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtMSwyOCArMSwzNCBAQAogIyB4bWwuZXRyZWUgdGVzdC4gIFRoaXMgZmlsZSBjb250YWlucyBlbm91Z2ggdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQKICMgYWxsIGluY2x1ZGVkIGNvbXBvbmVudHMgd29yayBhcyB0aGV5IHNob3VsZC4KICMgTGFyZ2UgcGFydHMgYXJlIGV4dHJhY3RlZCBmcm9tIHRoZSB1cHN0cmVhbSB0ZXN0IHN1aXRlLgotCi0jIElNUE9SVEFOVDogdGhlIHNhbWUgZG9jdGVzdHMgYXJlIHJ1biBmcm9tICJ0ZXN0X3htbF9ldHJlZV9jIiBpbgotIyBvcmRlciB0byBlbnN1cmUgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlCi0jIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KKyMKKyMgUExFQVNFIHdyaXRlIGFsbCBuZXcgdGVzdHMgdXNpbmcgdGhlIHN0YW5kYXJkIHVuaXR0ZXN0IGluZnJhc3RydWN0dXJlIGFuZAorIyBub3QgZG9jdGVzdC4KKyMKKyMgSU1QT1JUQU5UOiB0aGUgc2FtZSB0ZXN0cyBhcmUgcnVuIGZyb20gInRlc3RfeG1sX2V0cmVlX2MiIGluIG9yZGVyCisjIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBDIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgUHl0aG9uCisjIGltcGxlbWVudGF0aW9uLgogIwogIyBGb3IgdGhpcyBwdXJwb3NlLCB0aGUgbW9kdWxlLWxldmVsICJFVCIgc3ltYm9sIGlzIHRlbXBvcmFyaWx5CiAjIG1vbmtleS1wYXRjaGVkIHdoZW4gcnVubmluZyB0aGUgInRlc3RfeG1sX2V0cmVlX2MiIHRlc3Qgc3VpdGUuCiAjIERvbid0IHJlLWltcG9ydCAieG1sLmV0cmVlLkVsZW1lbnRUcmVlIiBtb2R1bGUgaW4gdGhlIGRvY3N0cmluZywKICMgZXhjZXB0IGlmIHRoZSB0ZXN0IGlzIHNwZWNpZmljIHRvIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uCiAKLWltcG9ydCBzeXMKIGltcG9ydCBodG1sCitpbXBvcnQgaW8KK2ltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHdlYWtyZWYKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgZmluZGZpbGUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIGZpbmRmaWxlLCB1bmxpbmssIGltcG9ydF9mcmVzaF9tb2R1bGUsIGdjX2NvbGxlY3QKIAotZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCitweUVUID0gTm9uZQorRVQgPSBOb25lCiAKIFNJTVBMRV9YTUxGSUxFID0gZmluZGZpbGUoInNpbXBsZS54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIHRyeToKLSAgICBTSU1QTEVfWE1MRklMRS5lbmNvZGUoInV0ZjgiKQorICAgIFNJTVBMRV9YTUxGSUxFLmVuY29kZSgidXRmLTgiKQogZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZmlsZW5hbWUgaXMgbm90IGVuY29kYWJsZSB0byB1dGY4IikKIFNJTVBMRV9OU19YTUxGSUxFID0gZmluZGZpbGUoInNpbXBsZS1ucy54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKQEAgLTU3LDYgKzYzLDIyIEBACiA8L2JvZHk+CiAiIiIKIAorU0FNUExFX1hNTF9OU19FTEVNUyA9ICIiIgorPHJvb3Q+Cis8aDp0YWJsZSB4bWxuczpoPSJoZWxsbyI+CisgIDxoOnRyPgorICAgIDxoOnRkPkFwcGxlczwvaDp0ZD4KKyAgICA8aDp0ZD5CYW5hbmFzPC9oOnRkPgorICA8L2g6dHI+Cis8L2g6dGFibGU+CisKKzxmOnRhYmxlIHhtbG5zOmY9ImZvbyI+CisgIDxmOm5hbWU+QWZyaWNhbiBDb2ZmZWUgVGFibGU8L2Y6bmFtZT4KKyAgPGY6d2lkdGg+ODA8L2Y6d2lkdGg+CisgIDxmOmxlbmd0aD4xMjA8L2Y6bGVuZ3RoPgorPC9mOnRhYmxlPgorPC9yb290PgorIiIiCiAKIGRlZiBzYW5pdHkoKToKICAgICAiIiIKQEAgLTE4OCwxMCArMjEwLDggQEAKIAogICAgIFRoZXNlIG1ldGhvZHMgcmV0dXJuIGFuIGl0ZXJhYmxlLiBTZWUgYnVnIDY0NzIuCiAKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcigidGFnIikuX19uZXh0X18pCiAgICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJmaW5kKCJ0YWciKS5fX25leHRfXykKICAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcmZpbmQoIioiKS5fX25leHRfXykKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcigidGFnIikuX19uZXh0X18pCiAgICAgPj4+IGNoZWNrX21ldGhvZCh0cmVlLml0ZXJmaW5kKCJ0YWciKS5fX25leHRfXykKICAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcmZpbmQoIioiKS5fX25leHRfXykKIApAQCAtMjcwLDQyICsyOTAsNiBAQAogICAgICc8dGFnPmhlbGxvPC90YWc+JwogICAgICIiIgogCi0jIE9ubHkgd2l0aCBQeXRob24gaW1wbGVtZW50YXRpb24KLWRlZiBzaW1wbGVmaW5kKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBmaW5kIG1ldGhvZHMgdXNpbmcgdGhlIGVsZW1lbnRwYXRoIGZhbGxiYWNrLgotCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQotCi0gICAgPj4+IEN1cnJlbnRFbGVtZW50UGF0aCA9IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoID0gRWxlbWVudFRyZWUuX1NpbXBsZUVsZW1lbnRQYXRoKCkKLSAgICA+Pj4gZWxlbSA9IEVsZW1lbnRUcmVlLlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBlbGVtLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIpCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInRvZyIsICJkZWZhdWx0IikKLSAgICAnZGVmYXVsdCcKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInRhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnLCAndGFnJ10KLQotICAgIFBhdGggc3ludGF4IGRvZXNuJ3Qgd29yayBpbiB0aGlzIGNhc2UuCi0KLSAgICA+Pj4gZWxlbS5maW5kKCJzZWN0aW9uL3RhZyIpCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uL3RhZyIpKQotICAgIFtdCi0KLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFBhdGggPSBDdXJyZW50RWxlbWVudFBhdGgKLSAgICAiIiIKLQogZGVmIGZpbmQoKToKICAgICAiIiIKICAgICBUZXN0IGZpbmQgbWV0aG9kcyAoaW5jbHVkaW5nIHhwYXRoIHN5bnRheCkuCkBAIC00NjAsMTcgKzQ0NCwxOSBAQAogICAgICIiIgogICAgIENoZWNrIHRoYXQgdGhlIHBhdGggY2FjaGUgYmVoYXZlcyBzYW5lbHkuCiAKKyAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCisKICAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQogICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGNhY2hlX2xlbl8xMCA9IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpCisgICAgPj4+IGNhY2hlX2xlbl8xMCA9IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpCiAgICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPT0gY2FjaGVfbGVuXzEwCisgICAgPj4+IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpID09IGNhY2hlX2xlbl8xMAogICAgIFRydWUKICAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMjApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA+IGNhY2hlX2xlbl8xMAorICAgID4+PiBsZW4oRWxlbWVudFBhdGguX2NhY2hlKSA+IGNhY2hlX2xlbl8xMAogICAgIFRydWUKICAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoNjAwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPCA1MDAKKyAgICA+Pj4gbGVuKEVsZW1lbnRQYXRoLl9jYWNoZSkgPCA1MDAKICAgICBUcnVlCiAgICAgIiIiCiAKQEAgLTkwMiw2NSArODg4LDYgQEAKICAgICAiIiIKICAgICBFVC5YTUwoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+PHhtbCAvPiIgJSBlbmNvZGluZykKIAotZGVmIGVuY29kaW5nKCk6Ci0gICAgciIiIgotICAgIFRlc3QgZW5jb2RpbmcgaXNzdWVzLgotCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiBlbGVtLnRleHQgPSAiYWJjIgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz5hYmM8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgIGInPHRhZz5hYmM8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgIGInPHRhZz5hYmM8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XG48dGFnPmFiYzwvdGFnPiIKLQotICAgID4+PiBlbGVtLnRleHQgPSAiPCZcIlwnPiIKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSAjIGNkYXRhIGNoYXJhY3RlcnMKLSAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICBiJzw/eG1sIHZlcnNpb249XCcxLjBcJyBlbmNvZGluZz1cJ2lzby04ODU5LTFcJz8+XG48dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nCi0KLSAgICA+Pj4gZWxlbS5hdHRyaWJbImtleSJdID0gIjwmXCJcJz4iCi0gICAgPj4+IGVsZW0udGV4dCA9IE5vbmUKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICBiJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICBiJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgIGInPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JwotCi0gICAgPj4+IGVsZW0udGV4dCA9ICdceGU1XHhmNlx4ZjY8PicKLSAgICA+Pj4gZWxlbS5hdHRyaWIuY2xlYXIoKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz5ceGU1XHhmNlx4ZjYmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnPlx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICBiJzx0YWc+JiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XG48dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+IgotCi0gICAgPj4+IGVsZW0uYXR0cmliWyJrZXkiXSA9ICdceGU1XHhmNlx4ZjY8PicKLSAgICA+Pj4gZWxlbS50ZXh0ID0gTm9uZQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZyBrZXk9Ilx4ZTVceGY2XHhmNiZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgYic8dGFnIGtleT0iXHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICBiJzx0YWcga2V5PSImIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgYic8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9Ilx4ZTVceGY2XHhmNiZsdDsmZ3Q7IiAvPicKLSAgICAiIiIKLQogZGVmIG1ldGhvZHMoKToKICAgICByIiIiCiAgICAgVGVzdCBzZXJpYWxpemF0aW9uIG1ldGhvZHMuCkBAIC05NzksMzYgKzkwNiw2IEBACiAgICAgJzEgPCAyXG4nCiAgICAgIiIiCiAKLWRlZiBpdGVyYXRvcnMoKToKLSAgICAiIiIKLSAgICBUZXN0IGl0ZXJhdG9ycy4KLQotICAgID4+PiBlID0gRVQuWE1MKCI8aHRtbD48Ym9keT50aGlzIGlzIGEgPGk+cGFyYWdyYXBoPC9pPi48L2JvZHk+Li48L2h0bWw+IikKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZS5pdGVyKCkpCi0gICAgWydodG1sJywgJ2JvZHknLCAnaSddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGUuZmluZCgiYm9keSIpLml0ZXIoKSkKLSAgICBbJ2JvZHknLCAnaSddCi0gICAgPj4+IHN1bW1hcml6ZShuZXh0KGUuaXRlcigpKSkKLSAgICAnaHRtbCcKLSAgICA+Pj4gIiIuam9pbihlLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguLi4nCi0gICAgPj4+ICIiLmpvaW4oZS5maW5kKCJib2R5IikuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhIHBhcmFncmFwaC4nCi0gICAgPj4+IG5leHQoZS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgJwotCi0gICAgTWV0aG9kIGl0ZXJwYXJzZSBzaG91bGQgcmV0dXJuIGFuIGl0ZXJhdG9yLiBTZWUgYnVnIDY0NzIuCi0KLSAgICA+Pj4gc291cmNlZmlsZSA9IHNlcmlhbGl6ZShlLCB0b19zdHJpbmc9RmFsc2UpCi0gICAgPj4+IG5leHQoRVQuaXRlcnBhcnNlKHNvdXJjZWZpbGUpKSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICAoJ2VuZCcsIDxFbGVtZW50ICdpJyBhdCAweC4uLj4pCi0KLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKE5vbmUpCi0gICAgPj4+IHRyZWUuaXRlcigpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIEF0dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdpdGVyJwotICAgICIiIgotCiBFTlRJVFlfWE1MID0gIiIiXAogPCFET0NUWVBFIHBvaW50cyBbCiA8IUVOVElUWSAlIHVzZXItZW50aXRpZXMgU1lTVEVNICd1c2VyLWVudGl0aWVzLnhtbCc+CkBAIC0xMDQ5LDI2ICs5NDYsNiBAQAogICAgICc8ZG9jdW1lbnQ+dGV4dDwvZG9jdW1lbnQ+JwogICAgICIiIgogCi1kZWYgZXJyb3IoeG1sKToKLSAgICAiIiIKLQotICAgIFRlc3QgZXJyb3IgaGFuZGxpbmcuCi0KLSAgICA+Pj4gaXNzdWJjbGFzcyhFVC5QYXJzZUVycm9yLCBTeW50YXhFcnJvcikKLSAgICBUcnVlCi0gICAgPj4+IGVycm9yKCJmb28iKS5wb3NpdGlvbgotICAgICgxLCAwKQotICAgID4+PiBlcnJvcigiPHRhZz4mZm9vOzwvdGFnPiIpLnBvc2l0aW9uCi0gICAgKDEsIDUpCi0gICAgPj4+IGVycm9yKCJmb29iYXI8IikucG9zaXRpb24KLSAgICAoMSwgNikKLQotICAgICIiIgotICAgIHRyeToKLSAgICAgICAgRVQuWE1MKHhtbCkKLSAgICBleGNlcHQgRVQuUGFyc2VFcnJvcjoKLSAgICAgICAgcmV0dXJuIHN5cy5leGNfaW5mbygpWzFdCi0KIGRlZiBuYW1lc3BhY2UoKToKICAgICAiIiIKICAgICBUZXN0IG5hbWVzcGFjZSBpc3N1ZXMuCkBAIC0xMjU2LDggKzExMzMsOCBAQAogCiAgICAgPj4+IEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJzx0ZXN0aW5nJj4nKSkKICAgICBiJzw/dGVzdCA8dGVzdGluZyY+Pz4nCi0gICAgPj4+IEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJzx0ZXN0aW5nJj5ceGUzJyksICdsYXRpbjEnKQotICAgIGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nbGF0aW4xJz8+XFxuPD90ZXN0IDx0ZXN0aW5nJj5cXHhlMz8+IgorICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICc8dGVzdGluZyY+XHhlMycpLCAnbGF0aW4tMScpCisgICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdsYXRpbi0xJz8+XFxuPD90ZXN0IDx0ZXN0aW5nJj5cXHhlMz8+IgogICAgICIiIgogCiAjCkBAIC0xMzM2LDIxICsxMjEzLDIwIEBACiA8L2RvY3VtZW50PgogIiIiLmZvcm1hdChodG1sLmVzY2FwZShTSU1QTEVfWE1MRklMRSwgVHJ1ZSkpCiAKKwogZGVmIHhpbmNsdWRlX2xvYWRlcihocmVmLCBwYXJzZT0ieG1sIiwgZW5jb2Rpbmc9Tm9uZSk6CiAgICAgdHJ5OgogICAgICAgICBkYXRhID0gWElOQ0xVREVbaHJlZl0KICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IoInJlc291cmNlIG5vdCBmb3VuZCIpCisgICAgICAgIHJhaXNlIE9TRXJyb3IoInJlc291cmNlIG5vdCBmb3VuZCIpCiAgICAgaWYgcGFyc2UgPT0gInhtbCI6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlLkVsZW1lbnRUcmVlIGltcG9ydCBYTUwKLSAgICAgICAgcmV0dXJuIFhNTChkYXRhKQorICAgICAgICBkYXRhID0gRVQuWE1MKGRhdGEpCiAgICAgcmV0dXJuIGRhdGEKIAogZGVmIHhpbmNsdWRlKCk6CiAgICAgciIiIgogICAgIEJhc2ljIGluY2x1c2lvbiBleGFtcGxlIChYSW5jbHVkZSBDLjEpCiAKLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCiAgICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQogCiAgICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDMS54bWwiKQpAQCAtMTQwNSwyNiArMTI4MSwxMCBAQAogICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiQzUueG1sIikKICAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBJT0Vycm9yOiByZXNvdXJjZSBub3QgZm91bmQKKyAgICBPU0Vycm9yOiByZXNvdXJjZSBub3QgZm91bmQKICAgICA+Pj4gIyBwcmludChzZXJpYWxpemUoZG9jdW1lbnQpKSAjIEM1CiAgICAgIiIiCiAKLWRlZiB4aW5jbHVkZV9kZWZhdWx0KCk6Ci0gICAgIiIiCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJkZWZhdWx0LnhtbCIpCi0gICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQpCi0gICAgPj4+IHByaW50KHNlcmlhbGl6ZShkb2N1bWVudCkpICMgZGVmYXVsdAotICAgIDxkb2N1bWVudD4KLSAgICAgIDxwPkV4YW1wbGUuPC9wPgotICAgICAgPHJvb3Q+Ci0gICAgICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD4KLSAgICAgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWwKLSAgICAgICA8ZW1wdHktZWxlbWVudCAvPgotICAgIDwvcm9vdD4KLSAgICA8L2RvY3VtZW50PgotICAgICIiIgogCiAjCiAjIGJhZGx5IGZvcm1hdHRlZCB4aTppbmNsdWRlIHRhZ3MKQEAgLTE2MTIsNyArMTQ3Miw3IEBACiAKIGNsYXNzIEV4Y2VwdGlvbkZpbGU6CiAgICAgZGVmIHJlYWQoc2VsZiwgeCk6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IKKyAgICAgICAgcmFpc2UgT1NFcnJvcgogCiBkZWYgeG1sdG9vbGtpdDYwKCk6CiAgICAgIiIiCkBAIC0xNjIwLDcgKzE0ODAsNyBAQAogICAgIEhhbmRsZSBjcmFzaCBpbiBzdHJlYW0gc291cmNlLgogICAgID4+PiB0cmVlID0gRVQucGFyc2UoRXhjZXB0aW9uRmlsZSgpKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBJT0Vycm9yCisgICAgT1NFcnJvcgogCiAgICAgIiIiCiAKQEAgLTE4NTEsMjUgKzE3MTEsNzA2IEBACiAgICAgPj4+IEVULnJlZ2lzdGVyX25hbWVzcGFjZSgndGVzdDEwNzc3JywgJ2h0dHA6Ly9teXVyaS8nKQogICAgICIiIgogCi1kZWYgY2hlY2tfaHRtbF9lbXB0eV9lbGVtc19zZXJpYWxpemF0aW9uKHNlbGYpOgotICAgICMgaXNzdWUgMTU5NzAKLSAgICAjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwMS9pbmRleC9lbGVtZW50cy5odG1sCi0gICAgIiIiCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSAgICA+Pj4gZW1wdHlfZWxlbXMgPSBbJ0FSRUEnLCAnQkFTRScsICdCQVNFRk9OVCcsICdCUicsICdDT0wnLCAnRlJBTUUnLCAnSFInLAotICAgIC4uLiAgICAgICAgICAgICAgICAnSU1HJywgJ0lOUFVUJywgJ0lTSU5ERVgnLCAnTElOSycsICdNRVRBJywgJ1BBUkFNJ10KLSAgICA+Pj4gZWxlbXMgPSAnJy5qb2luKCc8JXMgLz4nICUgZWxlbSBmb3IgZWxlbSBpbiBlbXB0eV9lbGVtcykKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zKSwgbWV0aG9kPSdodG1sJykKLSAgICAnPGh0bWw+PEFSRUE+PEJBU0U+PEJBU0VGT05UPjxCUj48Q09MPjxGUkFNRT48SFI+PElNRz48SU5QVVQ+PElTSU5ERVg+PExJTks+PE1FVEE+PFBBUkFNPjwvaHRtbD4nCi0gICAgPj4+IHNlcmlhbGl6ZShFVC5YTUwoJzxodG1sPiVzPC9odG1sPicgJSBlbGVtcy5sb3dlcigpKSwgbWV0aG9kPSdodG1sJykKLSAgICAnPGh0bWw+PGFyZWE+PGJhc2U+PGJhc2Vmb250Pjxicj48Y29sPjxmcmFtZT48aHI+PGltZz48aW5wdXQ+PGlzaW5kZXg+PGxpbms+PG1ldGE+PHBhcmFtPjwvaHRtbD4nCi0gICAgPj4+IGVsZW1zID0gJycuam9pbignPCVzPjwvJXM+JyAlIChlbGVtLCBlbGVtKSBmb3IgZWxlbSBpbiBlbXB0eV9lbGVtcykKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zKSwgbWV0aG9kPSdodG1sJykKLSAgICAnPGh0bWw+PEFSRUE+PEJBU0U+PEJBU0VGT05UPjxCUj48Q09MPjxGUkFNRT48SFI+PElNRz48SU5QVVQ+PElTSU5ERVg+PExJTks+PE1FVEE+PFBBUkFNPjwvaHRtbD4nCi0gICAgPj4+IHNlcmlhbGl6ZShFVC5YTUwoJzxodG1sPiVzPC9odG1sPicgJSBlbGVtcy5sb3dlcigpKSwgbWV0aG9kPSdodG1sJykKLSAgICAnPGh0bWw+PGFyZWE+PGJhc2U+PGJhc2Vmb250Pjxicj48Y29sPjxmcmFtZT48aHI+PGltZz48aW5wdXQ+PGlzaW5kZXg+PGxpbms+PG1ldGE+PHBhcmFtPjwvaHRtbD4nCiAKLSAgICAiIiIKK2NsYXNzIEJhc2ljRWxlbWVudFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2F1Z21lbnRhdGlvbl90eXBlX2Vycm9ycyhzZWxmKToKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2pvZScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZS5hcHBlbmQsICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBlLmV4dGVuZCwgW0VULkVsZW1lbnQoJ2JhcicpLCAnZm9vJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZS5pbnNlcnQsIDAsICdmb28nKQorCisgICAgZGVmIHRlc3RfY3ljbGljX2djKHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFRlc3QgdGhlIHNob3J0ZXN0IGN5Y2xlOiBkLT5lbGVtZW50LT5kCisgICAgICAgIGQgPSBEdW1teSgpCisgICAgICAgIGQuZHVtbXlyZWYgPSBFVC5FbGVtZW50KCdqb2UnLCBhdHRyPWQpCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihkKQorICAgICAgICBkZWwgZAorICAgICAgICBnY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3JlZigpKQorCisgICAgICAgICMgQSBsb25nZXIgY3ljbGU6IGQtPmUtPmUyLT5kCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdqb2UnKQorICAgICAgICBkID0gRHVtbXkoKQorICAgICAgICBkLmR1bW15cmVmID0gZQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZCkKKyAgICAgICAgZTIgPSBFVC5TdWJFbGVtZW50KGUsICdmb28nLCBhdHRyPWQpCisgICAgICAgIGRlbCBkLCBlLCBlMgorICAgICAgICBnY19jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUod3JlZigpKQorCisgICAgICAgICMgQSBjeWNsZSBiZXR3ZWVuIEVsZW1lbnQgb2JqZWN0cyBhcyBjaGlsZHJlbiBvZiBvbmUgYW5vdGhlcgorICAgICAgICAjIGUxLT5lMi0+ZTMtPmUxCisgICAgICAgIGUxID0gRVQuRWxlbWVudCgnZTEnKQorICAgICAgICBlMiA9IEVULkVsZW1lbnQoJ2UyJykKKyAgICAgICAgZTMgPSBFVC5FbGVtZW50KCdlMycpCisgICAgICAgIGUxLmFwcGVuZChlMikKKyAgICAgICAgZTIuYXBwZW5kKGUyKQorICAgICAgICBlMy5hcHBlbmQoZTEpCisgICAgICAgIHdyZWYgPSB3ZWFrcmVmLnJlZihlMSkKKyAgICAgICAgZGVsIGUxLCBlMiwgZTMKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKKworICAgIGRlZiB0ZXN0X3dlYWtyZWYoc2VsZik6CisgICAgICAgIGZsYWcgPSBGYWxzZQorICAgICAgICBkZWYgd3JlZl9jYih3KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGZsYWcKKyAgICAgICAgICAgIGZsYWcgPSBUcnVlCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdlJykKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGUsIHdyZWZfY2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JlZigpLnRhZywgJ2UnKQorICAgICAgICBkZWwgZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsYWcsIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3JlZigpLCBOb25lKQorCisKK2NsYXNzIEVsZW1lbnRUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfaXN0eXBlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuUGFyc2VFcnJvciwgdHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlFOYW1lLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuRWxlbWVudFRyZWUsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50LCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuVHJlZUJ1aWxkZXIsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5YTUxQYXJzZXIsIHR5cGUpCisKKyAgICBkZWYgdGVzdF9FbGVtZW50X3N1YmNsYXNzX3RyaXZpYWwoc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBteWUgPSBNeUVsZW1lbnQoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShteWUsIEVULkVsZW1lbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShteWUsIE15RWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUudGFnLCAnZm9vJykKKworICAgICAgICAjIHRlc3QgdGhhdCBhdHRyaWJ1dGUgYXNzaWdubWVudCB3b3JrcyAoaXNzdWUgMTQ4NDkpCisgICAgICAgIG15ZS50ZXh0ID0gImpvZSIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUudGV4dCwgImpvZSIpCisKKyAgICBkZWYgdGVzdF9FbGVtZW50X3N1YmNsYXNzX2NvbnN0cnVjdG9yKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdGFnLCBhdHRyaWI9e30sICoqZXh0cmEpOgorICAgICAgICAgICAgICAgIHN1cGVyKE15RWxlbWVudCwgc2VsZikuX19pbml0X18odGFnICsgJ19fJywgYXR0cmliLCAqKmV4dHJhKQorCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnZm9vJywgeydhJzogMSwgJ2InOiAyfSwgYz0zLCBkPTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXllLnRhZywgJ2Zvb19fJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobXllLml0ZW1zKCkpLAorICAgICAgICAgICAgWygnYScsIDEpLCAoJ2InLCAyKSwgKCdjJywgMyksICgnZCcsIDQpXSkKKworICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfbmV3X21ldGhvZChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgZGVmIG5ld21ldGhvZChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50YWcKKworICAgICAgICBteWUgPSBNeUVsZW1lbnQoJ2pvZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXllLm5ld21ldGhvZCgpLCAnam9lJykKKworICAgIGRlZiB0ZXN0X2h0bWxfZW1wdHlfZWxlbXNfc2VyaWFsaXphdGlvbihzZWxmKToKKyAgICAgICAgIyBpc3N1ZSAxNTk3MAorICAgICAgICAjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQwMS9pbmRleC9lbGVtZW50cy5odG1sCisgICAgICAgIGZvciBlbGVtZW50IGluIFsnQVJFQScsICdCQVNFJywgJ0JBU0VGT05UJywgJ0JSJywgJ0NPTCcsICdGUkFNRScsICdIUicsCisgICAgICAgICAgICAgICAgICAgICAgICAnSU1HJywgJ0lOUFVUJywgJ0lTSU5ERVgnLCAnTElOSycsICdNRVRBJywgJ1BBUkFNJ106CisgICAgICAgICAgICBmb3IgZWxlbSBpbiBbZWxlbWVudCwgZWxlbWVudC5sb3dlcigpXToKKyAgICAgICAgICAgICAgICBleHBlY3RlZCA9ICc8JXM+JyAlIGVsZW0KKyAgICAgICAgICAgICAgICBzZXJpYWxpemVkID0gc2VyaWFsaXplKEVULlhNTCgnPCVzIC8+JyAlIGVsZW0pLCBtZXRob2Q9J2h0bWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplZCwgZXhwZWN0ZWQpCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZShFVC5YTUwoJzwlcz48LyVzPicgJSAoZWxlbSxlbGVtKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9J2h0bWwnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplZCwgZXhwZWN0ZWQpCisKK2NsYXNzIEVsZW1lbnRJdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIF9pbGlzdChzZWxmLCBlbGVtLCB0YWc9Tm9uZSk6CisgICAgICAgIHJldHVybiBzdW1tYXJpemVfbGlzdChlbGVtLml0ZXIodGFnKSkKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRoaXMgaXMgYSA8aT5wYXJhZ3JhcGg8L2k+LjwvYm9keT4uLjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGRvYyksIFsnaHRtbCcsICdib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MuZmluZCgnYm9keScpKSwgWydib2R5JywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVyKCkpLnRhZywgJ2h0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLml0ZXJ0ZXh0KCkpLCAndGhpcyBpcyBhIHBhcmFncmFwaC4uLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuam9pbihkb2MuZmluZCgnYm9keScpLml0ZXJ0ZXh0KCkpLAorICAgICAgICAgICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGRvYy5pdGVydGV4dCgpKSwgJ3RoaXMgaXMgYSAnKQorCisgICAgICAgICMgaXRlcnBhcnNlIHNob3VsZCByZXR1cm4gYW4gaXRlcmF0b3IKKyAgICAgICAgc291cmNlZmlsZSA9IHNlcmlhbGl6ZShkb2MsIHRvX3N0cmluZz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSlbMF0sICdlbmQnKQorCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgdHJlZS5pdGVyKQorCisgICAgZGVmIHRlc3RfY29ybmVycyhzZWxmKToKKyAgICAgICAgIyBzaW5nbGUgcm9vdCwgbm8gc3ViZWxlbWVudHMKKyAgICAgICAgYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnXSkKKworICAgICAgICAjIG9uZSBjaGlsZAorICAgICAgICBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJ10pCisKKyAgICAgICAgIyBvbmUgY2hpbGQgYW5kIG9uZSBncmFuZGNoaWxkCisgICAgICAgIGMgPSBFVC5TdWJFbGVtZW50KGIsICdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2InLCAnYyddKQorCisgICAgICAgICMgdHdvIGNoaWxkcmVuLCBvbmx5IGZpcnN0IHdpdGggZ3JhbmRjaGlsZAorICAgICAgICBkID0gRVQuU3ViRWxlbWVudChhLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJywgJ2MnLCAnZCddKQorCisgICAgICAgICMgcmVwbGFjZSBmaXJzdCBjaGlsZCBieSBzZWNvbmQKKyAgICAgICAgYVswXSA9IGFbMV0KKyAgICAgICAgZGVsIGFbMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJywgJ2QnXSkKKworICAgIGRlZiB0ZXN0X2l0ZXJfYnlfdGFnKHNlbGYpOgorICAgICAgICBkb2MgPSBFVC5YTUwoJycnCisgICAgICAgICAgICA8ZG9jdW1lbnQ+CisgICAgICAgICAgICAgICAgPGhvdXNlPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tMTwvcm9vbT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTI8L3Jvb20+CisgICAgICAgICAgICAgICAgPC9ob3VzZT4KKyAgICAgICAgICAgICAgICA8c2hlZD5ub3RoaW5nIGhlcmUKKyAgICAgICAgICAgICAgICA8L3NoZWQ+CisgICAgICAgICAgICAgICAgPGhvdXNlPgorICAgICAgICAgICAgICAgICAgICA8cm9vbT5iZWRyb29tODwvcm9vbT4KKyAgICAgICAgICAgICAgICA8L2hvdXNlPgorICAgICAgICAgICAgPC9kb2N1bWVudD4nJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICdyb29tJyksIFsncm9vbSddICogMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICdob3VzZScpLCBbJ2hvdXNlJ10gKiAyKQorCisgICAgICAgICMgbWFrZSBzdXJlIGJvdGggdGFnPU5vbmUgYW5kIHRhZz0nKicgcmV0dXJuIGFsbCB0YWdzCisgICAgICAgIGFsbF90YWdzID0gWydkb2N1bWVudCcsICdob3VzZScsICdyb29tJywgJ3Jvb20nLAorICAgICAgICAgICAgICAgICAgICAnc2hlZCcsICdob3VzZScsICdyb29tJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MpLCBhbGxfdGFncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MsICcqJyksIGFsbF90YWdzKQorCisKK2NsYXNzIFRyZWVCdWlsZGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2FtcGxlMSA9ICgnPCFET0NUWVBFIGh0bWwgUFVCTElDJworICAgICAgICAnICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiInCisgICAgICAgICcgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKKyAgICAgICAgJzxodG1sPnRleHQ8ZGl2PnN1YnRleHQ8L2Rpdj50YWlsPC9odG1sPicpCisKKyAgICBzYW1wbGUyID0gJycnPHRvcGxldmVsPnNvbWV0ZXh0PC90b3BsZXZlbD4nJycKKworICAgIGRlZiBfY2hlY2tfc2FtcGxlMV9lbGVtZW50KHNlbGYsIGUpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnaHRtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50ZXh0LCAndGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWlsLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXR0cmliLCB7fSkKKyAgICAgICAgY2hpbGRyZW4gPSBsaXN0KGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNoaWxkcmVuKSwgMSkKKyAgICAgICAgY2hpbGQgPSBjaGlsZHJlblswXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLnRhZywgJ2RpdicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQudGV4dCwgJ3N1YnRleHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLnRhaWwsICd0YWlsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC5hdHRyaWIsIHt9KQorCisgICAgZGVmIHRlc3RfZHVtbXlfYnVpbGRlcihzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZUR1bW15QnVpbGRlcjoKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gNDIKKworICAgICAgICBjbGFzcyBEdW1teUJ1aWxkZXIoQmFzZUR1bW15QnVpbGRlcik6CisgICAgICAgICAgICBkYXRhID0gc3RhcnQgPSBlbmQgPSBsYW1iZGEgKmE6IE5vbmUKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PUR1bW15QnVpbGRlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksIDQyKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9QmFzZUR1bW15QnVpbGRlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksIDQyKQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9b2JqZWN0KCkpCisgICAgICAgIHBhcnNlci5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlUcmVlQnVpbGRlcihFVC5UcmVlQnVpbGRlcik6CisgICAgICAgICAgICBkZWYgZm9vYmFyKHNlbGYsIHgpOgorICAgICAgICAgICAgICAgIHJldHVybiB4ICogMgorCisgICAgICAgIHRiID0gTXlUcmVlQnVpbGRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGIuZm9vYmFyKDEwKSwgMjApCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YikKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUxX2VsZW1lbnQoZSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfZmFjdG9yeShzZWxmKToKKyAgICAgICAgbHN0ID0gW10KKyAgICAgICAgZGVmIG15ZmFjdG9yeSh0YWcsIGF0dHJpYik6CisgICAgICAgICAgICBub25sb2NhbCBsc3QKKyAgICAgICAgICAgIGxzdC5hcHBlbmQodGFnKQorICAgICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQodGFnLCBhdHRyaWIpCisKKyAgICAgICAgdGIgPSBFVC5UcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9bXlmYWN0b3J5KQorICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTIpCisgICAgICAgIHBhcnNlci5jbG9zZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFsndG9wbGV2ZWwnXSkKKworICAgIGRlZiBfY2hlY2tfZWxlbWVudF9mYWN0b3J5X2NsYXNzKHNlbGYsIGNscyk6CisgICAgICAgIHRiID0gRVQuVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PWNscykKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgY2xzKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUxX2VsZW1lbnQoZSkKKworICAgIGRlZiB0ZXN0X2VsZW1lbnRfZmFjdG9yeV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9jaGVja19lbGVtZW50X2ZhY3RvcnlfY2xhc3MoTXlFbGVtZW50KQorCisgICAgZGVmIHRlc3RfZWxlbWVudF9mYWN0b3J5X3B1cmVfcHl0aG9uX3N1YmNsYXNzKHNlbGYpOgorICAgICAgICAjIE1pbWljayBTaW1wbGVUQUwncyBiZWhhdmlvdXIgKGlzc3VlICMxNjA4OSk6IGJvdGggdmVyc2lvbnMgb2YKKyAgICAgICAgIyBUcmVlQnVpbGRlciBzaG91bGQgYmUgYWJsZSB0byBjb3BlIHdpdGggYSBzdWJjbGFzcyBvZiB0aGUKKyAgICAgICAgIyBwdXJlIFB5dGhvbiBFbGVtZW50IGNsYXNzLgorICAgICAgICBiYXNlID0gRVQuX0VsZW1lbnQKKyAgICAgICAgIyBOb3QgZnJvbSBhIEMgZXh0ZW5zaW9uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmFzZS5fX21vZHVsZV9fLCAneG1sLmV0cmVlLkVsZW1lbnRUcmVlJykKKyAgICAgICAgIyBGb3JjZSBzb21lIG11bHRpcGxlIGluaGVyaXRhbmNlIHdpdGggYSBDIGNsYXNzIHRvIG1ha2UgdGhpbmdzCisgICAgICAgICMgbW9yZSBpbnRlcmVzdGluZy4KKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KGJhc2UsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzZWxmLl9jaGVja19lbGVtZW50X2ZhY3RvcnlfY2xhc3MoTXlFbGVtZW50KQorCisgICAgZGVmIHRlc3RfZG9jdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRG9jdHlwZVBhcnNlcjoKKyAgICAgICAgICAgIF9kb2N0eXBlID0gTm9uZQorCisgICAgICAgICAgICBkZWYgZG9jdHlwZShzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gKG5hbWUsIHB1YmlkLCBzeXN0ZW0pCisKKyAgICAgICAgICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZG9jdHlwZQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9RG9jdHlwZVBhcnNlcigpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKSwKKyAgICAgICAgICAgICgnaHRtbCcsICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicsCisgICAgICAgICAgICAgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnKSkKKworCitjbGFzcyBYaW5jbHVkZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfbXlfbG9hZGVyKHNlbGYsIGhyZWYsIHBhcnNlKToKKyAgICAgICAgIyBVc2VkIHRvIGF2b2lkIGEgdGVzdC1kZXBlbmRlbmN5IHByb2JsZW0gd2hlcmUgdGhlIGRlZmF1bHQgbG9hZGVyCisgICAgICAgICMgb2YgRWxlbWVudEluY2x1ZGUgdXNlcyB0aGUgcHlFVCBwYXJzZXIgZm9yIGNFVCB0ZXN0cy4KKyAgICAgICAgaWYgcGFyc2UgPT0gJ3htbCc6CisgICAgICAgICAgICB3aXRoIG9wZW4oaHJlZiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICByZXR1cm4gRVQucGFyc2UoZikuZ2V0cm9vdCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHRlc3RfeGluY2x1ZGVfZGVmYXVsdChzZWxmKToKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRJbmNsdWRlCisgICAgICAgIGRvYyA9IHhpbmNsdWRlX2xvYWRlcignZGVmYXVsdC54bWwnKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvYywgc2VsZi5fbXlfbG9hZGVyKQorICAgICAgICBzID0gc2VyaWFsaXplKGRvYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnN0cmlwKCksICcnJzxkb2N1bWVudD4KKyAgPHA+RXhhbXBsZS48L3A+CisgIDxyb290PgorICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD4KKyAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAorICAgPGVtcHR5LWVsZW1lbnQgLz4KKzwvcm9vdD4KKzwvZG9jdW1lbnQ+JycnKQorCisKK2NsYXNzIFhNTFBhcnNlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHNhbXBsZTEgPSAnPGZpbGU+PGxpbmU+MjI8L2xpbmU+PC9maWxlPicKKyAgICBzYW1wbGUyID0gKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMnCisgICAgICAgICcgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIicKKyAgICAgICAgJyAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+JworICAgICAgICAnPGh0bWw+dGV4dDwvaHRtbD4nKQorCisgICAgZGVmIF9jaGVja19zYW1wbGVfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2ZpbGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMF0udGFnLCAnbGluZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZVswXS50ZXh0LCAnMjInKQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0b3JfYXJncyhzZWxmKToKKyAgICAgICAgIyBQb3NpdGlvbmFsIGFyZ3MuIFRoZSBmaXJzdCAoaHRtbCkgaXMgbm90IHN1cHBvcnRlZCwgYnV0IHNob3VsZCBiZQorICAgICAgICAjIG5ldmVydGhlbGVzcyBjb3JyZWN0bHkgYWNjZXB0ZWQuCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcihOb25lLCBFVC5UcmVlQnVpbGRlcigpLCAndXRmLTgnKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZV9lbGVtZW50KHBhcnNlci5jbG9zZSgpKQorCisgICAgICAgICMgTm93IGFzIGtleXdvcmQgYXJncy4KKyAgICAgICAgcGFyc2VyMiA9IEVULlhNTFBhcnNlcihlbmNvZGluZz0ndXRmLTgnLCBodG1sPVt7fV0sIHRhcmdldD1FVC5UcmVlQnVpbGRlcigpKQorICAgICAgICBwYXJzZXIyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGVfZWxlbWVudChwYXJzZXIyLmNsb3NlKCkpCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlQYXJzZXIoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcGFyc2VyID0gTXlQYXJzZXIoKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZV9lbGVtZW50KHBhcnNlci5jbG9zZSgpKQorCisgICAgZGVmIHRlc3Rfc3ViY2xhc3NfZG9jdHlwZShzZWxmKToKKyAgICAgICAgX2RvY3R5cGUgPSBOb25lCisgICAgICAgIGNsYXNzIE15UGFyc2VyV2l0aERvY3R5cGUoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIF9kb2N0eXBlCisgICAgICAgICAgICAgICAgX2RvY3R5cGUgPSAobmFtZSwgcHViaWQsIHN5c3RlbSkKKworICAgICAgICBwYXJzZXIgPSBNeVBhcnNlcldpdGhEb2N0eXBlKCkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9kb2N0eXBlLAorICAgICAgICAgICAgKCdodG1sJywgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJywKKyAgICAgICAgICAgICAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcpKQorCisKK2NsYXNzIE5hbWVzcGFjZVBhcnNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmluZF93aXRoX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgbnNtYXAgPSB7J2gnOiAnaGVsbG8nLCAnZic6ICdmb28nfQorICAgICAgICBkb2MgPSBFVC5mcm9tc3RyaW5nKFNBTVBMRV9YTUxfTlNfRUxFTVMpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG9jLmZpbmRhbGwoJ3toZWxsb310YWJsZScsIG5zbWFwKSksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRvYy5maW5kYWxsKCcuLy97aGVsbG99dGQnLCBuc21hcCkpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb2MuZmluZGFsbCgnLi8ve2Zvb31uYW1lJywgbnNtYXApKSwgMSkKKworCitjbGFzcyBFbGVtZW50U2xpY2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfZWxlbV90YWdzKHNlbGYsIGVsZW1saXN0KToKKyAgICAgICAgcmV0dXJuIFtlLnRhZyBmb3IgZSBpbiBlbGVtbGlzdF0KKworICAgIGRlZiBfc3ViZWxlbV90YWdzKHNlbGYsIGVsZW0pOgorICAgICAgICByZXR1cm4gc2VsZi5fZWxlbV90YWdzKGxpc3QoZWxlbSkpCisKKyAgICBkZWYgX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKHNlbGYsIG51bWNoaWxkcmVuKToKKyAgICAgICAgIiIiQ3JlYXRlIGFuIEVsZW1lbnQgd2l0aCBhIHRhZyAnYScsIHdpdGggdGhlIGdpdmVuIGFtb3VudCBvZiBjaGlsZHJlbgorICAgICAgICAgICBuYW1lZCAnYTAnLCAnYTEnIC4uLiBhbmQgc28gb24uCisKKyAgICAgICAgIiIiCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtY2hpbGRyZW4pOgorICAgICAgICAgICAgRVQuU3ViRWxlbWVudChlLCAnYSVzJyAlIGkpCisgICAgICAgIHJldHVybiBlCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9zaW5nbGVfaW5kZXgoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbigxMCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMV0udGFnLCAnYTEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbLTJdLnRhZywgJ2E4JykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBsYW1iZGE6IGVbMTJdKQorCisgICAgZGVmIHRlc3RfZ2V0c2xpY2VfcmFuZ2Uoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig2KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzpdKSwgWydhMycsICdhNCcsICdhNSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6Nl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzoxNl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo1XSksIFsnYTMnLCAnYTQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOi0xXSksIFsnYTMnLCAnYTQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Ml0pLCBbJ2EwJywgJ2ExJ10pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDEwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbODoxMDoxXSksIFsnYTgnLCAnYTknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6OjNdKSwgWydhMCcsICdhMycsICdhNicsICdhOSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6OF0pLCBbJ2EwJywgJ2E4J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMTo6OF0pLCBbJ2ExJywgJ2E5J10pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9uZWdhdGl2ZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Oi0xXSksIFsnYTMnLCAnYTInLCAnYTEnLCAnYTAnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs6Oi0yXSksIFsnYTMnLCAnYTEnXSkKKworICAgIGRlZiB0ZXN0X2RlbHNsaWNlKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZGVsIGVbMDoyXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMicsICdhMyddKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVswOl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFtdKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVs6Oi0xXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgW10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzo6LTJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2EyJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzE6OjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2EyJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDIpCisgICAgICAgIGRlbCBlWzo6Ml0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTEnXSkKKworCitjbGFzcyBJT1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdW5saW5rKFRFU1RGTikKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICAjIFRlc3QgZW5jb2RpbmcgaXNzdWVzLgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gImFiYyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZz5hYmM8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+YWJjPC90YWc+JykKKyAgICAgICAgZm9yIGVuYyBpbiAoImlzby04ODU5LTEiLCAidXRmLTE2IiwgInV0Zi0zMiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9ZW5jKSwKKyAgICAgICAgICAgICAgICAgICAgKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIgorICAgICAgICAgICAgICAgICAgICAgIjx0YWc+YWJjPC90YWc+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGVsZW0udGV4dCA9ICI8JlwiXCc+IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgYic8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZz4mbHQ7JmFtcDtcIicmZ3Q7PC90YWc+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGVsZW0uYXR0cmliWyJrZXkiXSA9ICI8JlwiXCc+IgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZyBrZXk9XCImbHQ7JmFtcDsmcXVvdDsnJmd0O1wiIC8+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGVsZW0udGV4dCA9ICdceGU1XHhmNlx4ZjY8PicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnPlx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgYic8dGFnPiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgZm9yIGVuYyBpbiAoImlzby04ODU5LTEiLCAidXRmLTE2IiwgInV0Zi0zMiIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9ZW5jKSwKKyAgICAgICAgICAgICAgICAgICAgKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIgorICAgICAgICAgICAgICAgICAgICAgIjx0YWc+w6XDtsO2Jmx0OyZndDs8L3RhZz4iICUgZW5jKS5lbmNvZGUoZW5jKSkKKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS5hdHRyaWJbImtleSJdID0gJ1x4ZTVceGY2XHhmNjw+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwgJzx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSJceGMzXHhhNVx4YzNceGI2XHhjM1x4YjYmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSImIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBmb3IgZW5jIGluICgiaXNvLTg4NTktMSIsICJ1dGYtMTYiLCAidXRmLTE2bGUiLCAidXRmLTE2YmUiLCAidXRmLTMyIik6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz1lbmMpLAorICAgICAgICAgICAgICAgICAgICAoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9JyVzJz8+XG4iCisgICAgICAgICAgICAgICAgICAgICAiPHRhZyBrZXk9XCLDpcO2w7YmbHQ7Jmd0O1wiIC8+IiAlIGVuYykuZW5jb2RlKGVuYykpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHRyZWUud3JpdGUoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fdGV4dF9maWxlKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnLCBlbmNvZGluZz0ndXRmLTgnKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fYmluYXJ5X2ZpbGUoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGInJyc8c2l0ZSAvPicnJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2JpbmFyeV9maWxlX3dpdGhfYm9tKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgIyB0ZXN0IEJPTSB3cml0aW5nIHRvIGJ1ZmZlcmVkIGZpbGUKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIHRyZWUud3JpdGUoZiwgZW5jb2Rpbmc9J3V0Zi0xNicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgJycnPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTE2Jz8+XG4nJycKKyAgICAgICAgICAgICAgICAgICAgJycnPHNpdGUgLz4nJycuZW5jb2RlKCJ1dGYtMTYiKSkKKyAgICAgICAgIyB0ZXN0IEJPTSB3cml0aW5nIHRvIG5vbi1idWZmZXJlZCBmaWxlCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicsIGJ1ZmZlcmluZz0wKSBhcyBmOgorICAgICAgICAgICAgdHJlZS53cml0ZShmLCBlbmNvZGluZz0ndXRmLTE2JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5jbG9zZWQpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICdyYicpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAnJyc8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtMTYnPz5cbicnJworICAgICAgICAgICAgICAgICAgICAnJyc8c2l0ZSAvPicnJy5lbmNvZGUoInV0Zi0xNiIpKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3N0cmluZ2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygnJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICB0cmVlLnBhcnNlKHN0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3N0cmluZ2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB0cmVlLndyaXRlKHN0cmVhbSwgZW5jb2Rpbmc9J3VuaWNvZGUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLCAnJyc8c2l0ZSAvPicnJykKKworICAgIGRlZiB0ZXN0X3JlYWRfZnJvbV9ieXRlc2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKGInJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICB0cmVlLnBhcnNlKHJhdykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX2J5dGVzaW8oc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgdHJlZS53cml0ZShyYXcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmF3LmdldHZhbHVlKCksIGInJyc8c2l0ZSAvPicnJykKKworICAgIGNsYXNzIGR1bW15OgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9yZWFkX2Zyb21fdXNlcl90ZXh0X3JlYWRlcihzZWxmKToKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oJycnPD94bWwgdmVyc2lvbj0iMS4wIj8+PHNpdGU+PC9zaXRlPicnJykKKyAgICAgICAgcmVhZGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHJlYWRlci5yZWFkID0gc3RyZWFtLnJlYWQKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKCkKKyAgICAgICAgdHJlZS5wYXJzZShyZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5nZXRyb290KCkudGFnLCAnc2l0ZScpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b191c2VyX3RleHRfd3JpdGVyKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgc3RyZWFtID0gaW8uU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgd3JpdGVyLndyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIHRyZWUud3JpdGUod3JpdGVyLCBlbmNvZGluZz0ndW5pY29kZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmdldHZhbHVlKCksICcnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3VzZXJfYmluYXJ5X3JlYWRlcihzZWxmKToKKyAgICAgICAgcmF3ID0gaW8uQnl0ZXNJTyhiJycnPD94bWwgdmVyc2lvbj0iMS4wIj8+PHNpdGU+PC9zaXRlPicnJykKKyAgICAgICAgcmVhZGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHJlYWRlci5yZWFkID0gcmF3LnJlYWQKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKCkKKyAgICAgICAgdHJlZS5wYXJzZShyZWFkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5nZXRyb290KCkudGFnLCAnc2l0ZScpCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZSgpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b191c2VyX2JpbmFyeV93cml0ZXIoc2VsZik6CisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShFVC5YTUwoJycnPHNpdGUgLz4nJycpKQorICAgICAgICByYXcgPSBpby5CeXRlc0lPKCkKKyAgICAgICAgd3JpdGVyID0gc2VsZi5kdW1teSgpCisgICAgICAgIHdyaXRlci53cml0ZSA9IHJhdy53cml0ZQorICAgICAgICB0cmVlLndyaXRlKHdyaXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyYXcuZ2V0dmFsdWUoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fdXNlcl9iaW5hcnlfd3JpdGVyX3dpdGhfYm9tKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgcmF3ID0gaW8uQnl0ZXNJTygpCisgICAgICAgIHdyaXRlciA9IHNlbGYuZHVtbXkoKQorICAgICAgICB3cml0ZXIud3JpdGUgPSByYXcud3JpdGUKKyAgICAgICAgd3JpdGVyLnNlZWthYmxlID0gbGFtYmRhOiBUcnVlCisgICAgICAgIHdyaXRlci50ZWxsID0gcmF3LnRlbGwKKyAgICAgICAgdHJlZS53cml0ZSh3cml0ZXIsIGVuY29kaW5nPSJ1dGYtMTYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhdy5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICcnJzw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi0xNic/PlxuJycnCisgICAgICAgICAgICAgICAgJycnPHNpdGUgLz4nJycuZW5jb2RlKCJ1dGYtMTYiKSkKKworICAgIGRlZiB0ZXN0X3Rvc3RyaW5nbGlzdF9pbnZhcmlhbnQoc2VsZik6CisgICAgICAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKCc8dGFnPmZvbzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBFVC50b3N0cmluZyhyb290LCAndW5pY29kZScpLAorICAgICAgICAgICAgJycuam9pbihFVC50b3N0cmluZ2xpc3Qocm9vdCwgJ3VuaWNvZGUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBFVC50b3N0cmluZyhyb290LCAndXRmLTE2JyksCisgICAgICAgICAgICBiJycuam9pbihFVC50b3N0cmluZ2xpc3Qocm9vdCwgJ3V0Zi0xNicpKSkKKworCitjbGFzcyBQYXJzZUVycm9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yKCksIFN5bnRheEVycm9yKQorCisgICAgZGVmIF9nZXRfZXJyb3Ioc2VsZiwgcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIEVULmZyb21zdHJpbmcocykKKyAgICAgICAgZXhjZXB0IEVULlBhcnNlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHJldHVybiBlCisKKyAgICBkZWYgdGVzdF9lcnJvcl9wb3NpdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2ZvbycpLnBvc2l0aW9uLCAoMSwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZ2V0X2Vycm9yKCc8dGFnPiZmb287PC90YWc+JykucG9zaXRpb24sICgxLCA1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2Zvb2JhcjwnKS5wb3NpdGlvbiwgKDEsIDYpKQorCisgICAgZGVmIHRlc3RfZXJyb3JfY29kZShzZWxmKToKKyAgICAgICAgaW1wb3J0IHhtbC5wYXJzZXJzLmV4cGF0LmVycm9ycyBhcyBFUlJPUlMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJ2ZvbycpLmNvZGUsCisgICAgICAgICAgICAgICAgRVJST1JTLmNvZGVzW0VSUk9SUy5YTUxfRVJST1JfU1lOVEFYXSkKKworCitjbGFzcyBLZXl3b3JkQXJnc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgVGVzdCB2YXJpb3VzIGlzc3VlcyB3aXRoIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCB0byBFVC5FbGVtZW50CisgICAgIyBjb25zdHJ1Y3RvciBhbmQgbWV0aG9kcworICAgIGRlZiB0ZXN0X2lzc3VlMTQ4MTgoc2VsZik6CisgICAgICAgIHggPSBFVC5YTUwoIjxhPmZvbzwvYT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZCgnYScsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZpbmR0ZXh0KCdhJywgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgeC5maW5kdGV4dChwYXRoPSdhJywgZGVmYXVsdD1Ob25lLCBuYW1lc3BhY2VzPU5vbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguZmluZGFsbCgnYScsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZGFsbChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHguaXRlcmZpbmQoJ2EnLCBOb25lKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCh4Lml0ZXJmaW5kKHBhdGg9J2EnLCBuYW1lc3BhY2VzPU5vbmUpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnQoJ2EnKS5hdHRyaWIsIHt9KQorICAgICAgICBlbGVtZW50cyA9IFsKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGF0dHJpYj1kaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGRpY3QoaHJlZj0iIyIpLCBpZD0iZm9vIiksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgaHJlZj0iIyIsIGlkPSJmb28iKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIiksIGhyZWY9IiMiLCBpZD0iZm9vIiksCisgICAgICAgIF0KKyAgICAgICAgZm9yIGUgaW4gZWxlbWVudHM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFnLCAnYScpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuYXR0cmliLCBkaWN0KGhyZWY9IiMiLCBpZD0iZm9vIikpCisKKyAgICAgICAgZTIgPSBFVC5TdWJFbGVtZW50KGVsZW1lbnRzWzBdLCAnZm9vYmFyJywgYXR0cmliPXsna2V5MSc6ICd2YWx1ZTEnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMi5hdHRyaWJbJ2tleTEnXSwgJ3ZhbHVlMScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ211c3QgYmUgZGljdCwgbm90IHN0cicpOgorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsICJJJ20gbm90IGEgZGljdCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtdXN0IGJlIGRpY3QsIG5vdCBzdHInKToKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBhdHRyaWI9IkknbSBub3QgYSBkaWN0IikKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitAdW5pdHRlc3Quc2tpcFVubGVzcyhweUVULCAnb25seSBmb3IgdGhlIFB5dGhvbiB2ZXJzaW9uJykKK2NsYXNzIE5vQWNjZWxlcmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdGhhdCB0aGUgQyBhY2NlbGVyYXRvciB3YXMgbm90IGltcG9ydGVkIGZvciBweUVUCisgICAgZGVmIHRlc3RfY29ycmVjdF9pbXBvcnRfcHlFVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweUVULkVsZW1lbnQuX19tb2R1bGVfXywgJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHlFVC5TdWJFbGVtZW50Ll9fbW9kdWxlX18sICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQogCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTE4OTIsNDQgKzI0MzMsNjkgQEAKICAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gICIKICAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwKICAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2ZXJzaW9ucy4gICIKLSAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyksCi0gICAgICAgICAgICAjIFhNTFBhcnNlci5kb2N0eXBlKCkgaXMgZGVwcmVjYXRlZC4KLSAgICAgICAgICAgICgiVGhpcyBtZXRob2Qgb2YgWE1MUGFyc2VyIGlzIGRlcHJlY2F0ZWQuICBEZWZpbmUgZG9jdHlwZS4uICIKLSAgICAgICAgICAgICAibWV0aG9kIG9uIHRoZSBUcmVlQnVpbGRlciB0YXJnZXQuIiwgRGVwcmVjYXRpb25XYXJuaW5nKSkKKyAgICAgICAgICAgICAiVXNlIC4rIGluc3RlYWQuIiwgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykpCiAgICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncyA9IHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKmRlcHJlY2F0aW9ucywgcXVpZXQ9cXVpZXQpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKLSAgICAgICAgc2VsZi5fbnNtYXAgPSBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcAotICAgICAgICBzZWxmLl9wYXRoX2NhY2hlID0gRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAorICAgICAgICBzZWxmLl9uc21hcCA9IEVULnJlZ2lzdGVyX25hbWVzcGFjZS5fbmFtZXNwYWNlX21hcAogICAgICAgICAjIENvcHkgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG1hcHBpbmcKLSAgICAgICAgRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAgPSBzZWxmLl9uc21hcC5jb3B5KCkKKyAgICAgICAgc2VsZi5fbnNtYXBfY29weSA9IHNlbGYuX25zbWFwLmNvcHkoKQogICAgICAgICAjIENvcHkgdGhlIHBhdGggY2FjaGUgKHNob3VsZCBiZSBlbXB0eSkKLSAgICAgICAgRWxlbWVudFRyZWUuRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5fcGF0aF9jYWNoZS5jb3B5KCkKKyAgICAgICAgc2VsZi5fcGF0aF9jYWNoZSA9IEVsZW1lbnRQYXRoLl9jYWNoZQorICAgICAgICBFbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlLmNvcHkoKQogICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MuX19lbnRlcl9fKCkKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKICAgICAgICAgIyBSZXN0b3JlIG1hcHBpbmcgYW5kIHBhdGggY2FjaGUKLSAgICAgICAgRWxlbWVudFRyZWUuX25hbWVzcGFjZV9tYXAgPSBzZWxmLl9uc21hcAotICAgICAgICBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlCisgICAgICAgIHNlbGYuX25zbWFwLmNsZWFyKCkKKyAgICAgICAgc2VsZi5fbnNtYXAudXBkYXRlKHNlbGYuX25zbWFwX2NvcHkpCisgICAgICAgIEVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKICAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzLl9fZXhpdF9fKCphcmdzKQogCiAKLWRlZiB0ZXN0X21haW4obW9kdWxlX25hbWU9J3htbC5ldHJlZS5FbGVtZW50VHJlZScpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUKK2RlZiB0ZXN0X21haW4obW9kdWxlPU5vbmUpOgorICAgICMgV2hlbiBpbnZva2VkIHdpdGhvdXQgYSBtb2R1bGUsIHJ1bnMgdGhlIFB5dGhvbiBFVCB0ZXN0cyBieSBsb2FkaW5nIHB5RVQuCisgICAgIyBPdGhlcndpc2UsIHVzZXMgdGhlIGdpdmVuIG1vZHVsZSBhcyB0aGUgRVQuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIGdsb2JhbCBweUVUCisgICAgICAgIHB5RVQgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuRWxlbWVudFRyZWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2VkPVsnX2VsZW1lbnR0cmVlJ10pCisgICAgICAgIG1vZHVsZSA9IHB5RVQKIAotICAgIHVzZV9weV9tb2R1bGUgPSAobW9kdWxlX25hbWUgPT0gJ3htbC5ldHJlZS5FbGVtZW50VHJlZScpCisgICAgZ2xvYmFsIEVUCisgICAgRVQgPSBtb2R1bGUKIAotICAgICMgVGhlIHNhbWUgZG9jdGVzdHMgYXJlIHVzZWQgZm9yIGJvdGggdGhlIFB5dGhvbiBhbmQgdGhlIEMgaW1wbGVtZW50YXRpb25zCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdGVzdF9jbGFzc2VzID0gWworICAgICAgICBFbGVtZW50U2xpY2luZ1Rlc3QsCisgICAgICAgIEJhc2ljRWxlbWVudFRlc3QsCisgICAgICAgIElPVGVzdCwKKyAgICAgICAgUGFyc2VFcnJvclRlc3QsCisgICAgICAgIFhpbmNsdWRlVGVzdCwKKyAgICAgICAgRWxlbWVudFRyZWVUZXN0LAorICAgICAgICBFbGVtZW50SXRlclRlc3QsCisgICAgICAgIFRyZWVCdWlsZGVyVGVzdCwKKyAgICAgICAgXQogCi0gICAgIyBYWFggdGhlIEMgbW9kdWxlIHNob3VsZCBnaXZlIHRoZSBzYW1lIHdhcm5pbmdzIGFzIHRoZSBQeXRob24gbW9kdWxlCi0gICAgd2l0aCBDbGVhbkNvbnRleHQocXVpZXQ9bm90IHVzZV9weV9tb2R1bGUpOgotICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlLCB2ZXJib3NpdHk9VHJ1ZSkKKyAgICAjIFRoZXNlIHRlc3RzIHdpbGwgb25seSBydW4gZm9yIHRoZSBwdXJlLVB5dGhvbiB2ZXJzaW9uIHRoYXQgZG9lc24ndCBpbXBvcnQKKyAgICAjIF9lbGVtZW50dHJlZS4gV2UgY2FuJ3QgdXNlIHNraXBVbmxlc3MgaGVyZSwgYmVjYXVzZSBweUVUIGlzIGZpbGxlZCBpbiBvbmx5CisgICAgIyBhZnRlciB0aGUgbW9kdWxlIGlzIGxvYWRlZC4KKyAgICBpZiBweUVUOgorICAgICAgICB0ZXN0X2NsYXNzZXMuZXh0ZW5kKFsKKyAgICAgICAgICAgIE5vQWNjZWxlcmF0b3JUZXN0LAorICAgICAgICAgICAgXSkKIAotICAgICMgVGhlIG1vZHVsZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkgdGhlIHRlc3RzCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorCisgICAgICAgICMgWFhYIHRoZSBDIG1vZHVsZSBzaG91bGQgZ2l2ZSB0aGUgc2FtZSB3YXJuaW5ncyBhcyB0aGUgUHl0aG9uIG1vZHVsZQorICAgICAgICB3aXRoIENsZWFuQ29udGV4dChxdWlldD0obW9kdWxlIGlzIG5vdCBweUVUKSk6CisgICAgICAgICAgICBzdXBwb3J0LnJ1bl9kb2N0ZXN0KHN5cy5tb2R1bGVzW19fbmFtZV9fXSwgdmVyYm9zaXR5PVRydWUpCisgICAgZmluYWxseToKKyAgICAgICAgIyBkb24ndCBpbnRlcmZlcmUgd2l0aCBzdWJzZXF1ZW50IHRlc3RzCisgICAgICAgIEVUID0gcHlFVCA9IE5vbmUKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQppbmRleCAyZmYxMThmLi5lNDRjNmNhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKQEAgLTEsMzYgKzEsMTEgQEAKICMgeG1sLmV0cmVlIHRlc3QgZm9yIGNFbGVtZW50VHJlZQotCitpbXBvcnQgc3lzLCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGJpZ21lbXRlc3QsIF8yRworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB1bml0dGVzdAogCi1jRVQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3htbC5ldHJlZS5jRWxlbWVudFRyZWUnKQotCi0KLSMgY0VsZW1lbnRUcmVlIHNwZWNpZmljIHRlc3RzCi0KLWRlZiBzYW5pdHkoKToKLSAgICByIiIiCi0gICAgSW1wb3J0IHNhbml0eS4KLQotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgY0VsZW1lbnRUcmVlCi0KLSAgICBJc3N1ZSAjNjY5Ny4KLQotICAgID4+PiBlID0gY0VsZW1lbnRUcmVlLkVsZW1lbnQoJ2EnKQotICAgID4+PiBnZXRhdHRyKGUsICdcdUQ4MDAnKSAgICAgICAgICAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICAuLi4KLSAgICBVbmljb2RlRW5jb2RlRXJyb3I6IC4uLgotCi0gICAgPj4+IHAgPSBjRWxlbWVudFRyZWUuWE1MUGFyc2VyKCkKLSAgICA+Pj4gcC52ZXJzaW9uLnNwbGl0KClbMF0KLSAgICAnRXhwYXQnCi0gICAgPj4+IGdldGF0dHIocCwgJ1x1RDgwMCcpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAuLi4KLSAgICBBdHRyaWJ1dGVFcnJvcjogJ1hNTFBhcnNlcicgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ1x1ZDgwMCcKLSAgICAiIiIKK2NFVCA9IGltcG9ydF9mcmVzaF9tb2R1bGUoJ3htbC5ldHJlZS5FbGVtZW50VHJlZScsIGZyZXNoPVsnX2VsZW1lbnR0cmVlJ10pCitjRVRfYWxpYXMgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJywgZnJlc2g9WydfZWxlbWVudHRyZWUnLCAneG1sLmV0cmVlJ10pCiAKIAogY2xhc3MgTWlzY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTQ3LDI3ICsyMiw2NCBAQAogICAgICAgICAgICAgZGF0YSA9IE5vbmUKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorY2xhc3MgVGVzdEFsaWFzV29ya2luZyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoYXQgdGhlIGNFVCBhbGlhcyBtb2R1bGUgaXMgYWxpdmUKKyAgICBkZWYgdGVzdF9hbGlhc193b3JraW5nKHNlbGYpOgorICAgICAgICBlID0gY0VUX2FsaWFzLkVsZW1lbnQoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdmb28nKQorCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCitjbGFzcyBUZXN0QWNjZWxlcmF0b3JJbXBvcnRlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUZXN0IHRoYXQgdGhlIEMgYWNjZWxlcmF0b3Igd2FzIGltcG9ydGVkLCBhcyBleHBlY3RlZAorICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X2NFVChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjRVQuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAnX2VsZW1lbnR0cmVlJykKKworICAgIGRlZiB0ZXN0X2NvcnJlY3RfaW1wb3J0X2NFVF9hbGlhcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjRVRfYWxpYXMuU3ViRWxlbWVudC5fX21vZHVsZV9fLCAnX2VsZW1lbnR0cmVlJykKKworCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjRVQsICdyZXF1aXJlcyBfZWxlbWVudHRyZWUnKQorQHN1cHBvcnQuY3B5dGhvbl9vbmx5CitjbGFzcyBTaXplb2ZUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuZWxlbWVudHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplKCc1UCcpCisgICAgICAgICMgZXh0cmEKKyAgICAgICAgc2VsZi5leHRyYSA9IHN0cnVjdC5jYWxjc2l6ZSgnUGlpUDRQJykKKworICAgIGNoZWNrX3NpemVvZiA9IHN1cHBvcnQuY2hlY2tfc2l6ZW9mCisKKyAgICBkZWYgdGVzdF9lbGVtZW50KHNlbGYpOgorICAgICAgICBlID0gY0VULkVsZW1lbnQoJ2EnKQorICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplKQorCisgICAgZGVmIHRlc3RfZWxlbWVudF93aXRoX2F0dHJpYihzZWxmKToKKyAgICAgICAgZSA9IGNFVC5FbGVtZW50KCdhJywgaHJlZj0nYWJvdXQ6JykKKyAgICAgICAgc2VsZi5jaGVja19zaXplb2YoZSwgc2VsZi5lbGVtZW50c2l6ZSArIHNlbGYuZXh0cmEpCisKKyAgICBkZWYgdGVzdF9lbGVtZW50X3dpdGhfY2hpbGRyZW4oc2VsZik6CisgICAgICAgIGUgPSBjRVQuRWxlbWVudCgnYScpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgY0VULlN1YkVsZW1lbnQoZSwgJ3NwYW4nKQorICAgICAgICAjIHNob3VsZCBoYXZlIHNwYWNlIGZvciA4IGNoaWxkcmVuIG5vdworICAgICAgICBzZWxmLmNoZWNrX3NpemVvZihlLCBzZWxmLmVsZW1lbnRzaXplICsgc2VsZi5leHRyYSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKIAogICAgICMgUnVuIHRoZSB0ZXN0cyBzcGVjaWZpYyB0byB0aGUgQyBpbXBsZW1lbnRhdGlvbgotICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF94bWxfZXRyZWVfYywgdmVyYm9zaXR5PVRydWUpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIE1pc2NUZXN0cywKKyAgICAgICAgVGVzdEFsaWFzV29ya2luZywKKyAgICAgICAgVGVzdEFjY2VsZXJhdG9ySW1wb3J0ZWQsCisgICAgICAgIFNpemVvZlRlc3QsCisgICAgICAgICkKIAotICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KE1pc2NUZXN0cykKKyAgICAjIFJ1biB0aGUgc2FtZSB0ZXN0IHN1aXRlIGFzIHRoZSBQeXRob24gbW9kdWxlCisgICAgdGVzdF94bWxfZXRyZWUudGVzdF9tYWluKG1vZHVsZT1jRVQpCiAKLSAgICAjIEFzc2lnbiB0aGUgQyBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgcnVubmluZyB0aGUgZG9jdGVzdHMKLSAgICAjIFBhdGNoIHRoZSBfX25hbWVfXywgdG8gcHJldmVudCBjb25mdXNpb24gd2l0aCB0aGUgcHVyZSBQeXRob24gdGVzdAotICAgIHB5RVQgPSB0ZXN0X3htbF9ldHJlZS5FVAotICAgIHB5X19uYW1lX18gPSB0ZXN0X3htbF9ldHJlZS5fX25hbWVfXwotICAgIHRlc3RfeG1sX2V0cmVlLkVUID0gY0VUCi0gICAgaWYgX19uYW1lX18gIT0gJ19fbWFpbl9fJzoKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuX19uYW1lX18gPSBfX25hbWVfXwotICAgIHRyeToKLSAgICAgICAgIyBSdW4gdGhlIHNhbWUgdGVzdCBzdWl0ZSBhcyB4bWwuZXRyZWUuRWxlbWVudFRyZWUKLSAgICAgICAgdGVzdF94bWxfZXRyZWUudGVzdF9tYWluKG1vZHVsZV9uYW1lPSd4bWwuZXRyZWUuY0VsZW1lbnRUcmVlJykKLSAgICBmaW5hbGx5OgotICAgICAgICB0ZXN0X3htbF9ldHJlZS5FVCA9IHB5RVQKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuX19uYW1lX18gPSBweV9fbmFtZV9fCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMzgxNDE5MS4uMTZmODVjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTI0LDYgKzI0LDggQEAKICAgICAgICAgICAnYXNob3J0bG9uZyc6IDIsCiAgICAgICAgICAgJ2Fub3RoZXJsaXN0JzogWycuenl4LjQxJ10sCiAgICAgICAgICAgJ2FiYXNlNjQnOiB4bWxycGNsaWIuQmluYXJ5KGIibXkgZG9nIGhhcyBmbGVhcyIpLAorICAgICAgICAgICdiNjRieXRlcyc6IGIibXkgZG9nIGhhcyBmbGVhcyIsCisgICAgICAgICAgJ2I2NGJ5dGVhcnJheSc6IGJ5dGVhcnJheShiIm15IGRvZyBoYXMgZmxlYXMiKSwKICAgICAgICAgICAnYm9vbGVhbic6IEZhbHNlLAogICAgICAgICAgICd1bmljb2RlJzogJ1x1NDAwMFx1NjAwMFx1ODAwMCcsCiAgICAgICAgICAgJ3VrZXlcdTQwMDAnOiAncmVndWxhciB2YWx1ZScsCkBAIC00NCwyNyArNDYsNTQgQEAKICAgICBkZWYgdGVzdF9kdW1wX2JhcmVfZGF0ZXRpbWUoc2VsZik6CiAgICAgICAgICMgVGhpcyBjaGVja3MgdGhhdCBhbiB1bndyYXBwZWQgZGF0ZXRpbWUuZGF0ZSBvYmplY3QgY2FuIGJlIGhhbmRsZWQKICAgICAgICAgIyBieSB0aGUgbWFyc2hhbGxpbmcgY29kZS4gIFRoaXMgY2FuJ3QgYmUgZG9uZSB2aWEgdGVzdF9kdW1wX2xvYWQoKQotICAgICAgICAjIHNpbmNlIHdpdGggdXNlX2RhdGV0aW1lIHNldCB0byAxIHRoZSB1bm1hcnNoYWxsZXIgd291bGQgY3JlYXRlCisgICAgICAgICMgc2luY2Ugd2l0aCB1c2VfYnVpbHRpbl90eXBlcyBzZXQgdG8gMSB0aGUgdW5tYXJzaGFsbGVyIHdvdWxkIGNyZWF0ZQogICAgICAgICAjIGRhdGV0aW1lIG9iamVjdHMgZm9yIHRoZSAnZGF0ZXRpbWVbMTIzXScga2V5cyBhcyB3ZWxsCiAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygoZHQsKSkKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIE5vbmUpCiAKLSAgICAgICAgKG5ld2R0LCksIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2RhdGV0aW1lPTApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIHhtbHJwY2xpYi5EYXRlVGltZSgnMjAwNTAyMTBUMTE6NDE6MjMnKSkKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKworICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgIChuZXdkdCwpID0gcmVzdWx0CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZHQsIGR0KQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobmV3ZHQpLCB4bWxycGNsaWIuRGF0ZVRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT1GYWxzZSkKKyAgICAgICAgKG5ld2R0LCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdkdCwgZHQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXdkdCksIHhtbHJwY2xpYi5EYXRlVGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobSkKKwogCiAgICAgZGVmIHRlc3RfZGF0ZXRpbWVfYmVmb3JlXzE5MDAoc2VsZik6CiAgICAgICAgICMgc2FtZSBhcyBiZWZvcmUgYnV0IHdpdGggYSBkYXRlIGJlZm9yZSAxOTAwCiAgICAgICAgIGR0ID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMSwgIDIsIDEwLCAxMSwgNDEsIDIzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGR0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzAwMDEwMjEwVDExOjQxOjIzJykpCiAgICAgICAgIHMgPSB4bWxycGNsaWIuZHVtcHMoKGR0LCkpCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBOb25lKQogCi0gICAgICAgIChuZXdkdCwpLCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9kYXRldGltZT0wKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCB4bWxycGNsaWIuRGF0ZVRpbWUoJzAwMDEwMjEwVDExOjQxOjIzJykpCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhzLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKKyAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKQorICAgICAgICAobmV3ZHQsKSA9IHJlc3VsdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2R0LCBkdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld2R0KSwgeG1scnBjbGliLkRhdGVUaW1lKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQogCiAgICAgZGVmIHRlc3RfYnVnXzExNjQ5MTIgKHNlbGYpOgogICAgICAgICBkID0geG1scnBjbGliLkRhdGVUaW1lKCkKQEAgLTEyNSw2ICsxNTQsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbS5kdW1wX2ludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1scnBjbGliLk1JTklOVC0xLCBkdW1teV93cml0ZSkKIAorICAgIGRlZiB0ZXN0X2R1bXBfZG91YmxlKHNlbGYpOgorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KDIgKiogMzQpLCkpCisgICAgICAgIHhtbHJwY2xpYi5kdW1wcygoZmxvYXQoeG1scnBjbGliLk1BWElOVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoeG1scnBjbGliLk1JTklOVCkpKQorICAgICAgICB4bWxycGNsaWIuZHVtcHMoKGZsb2F0KHhtbHJwY2xpYi5NQVhJTlQgKyA0MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQoeG1scnBjbGliLk1JTklOVCAtIDQyKSkpCisKKyAgICAgICAgZGVmIGR1bW15X3dyaXRlKHMpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG0gPSB4bWxycGNsaWIuTWFyc2hhbGxlcigpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1BWElOVCwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1JTklOVCwgZHVtbXlfd3JpdGUpCisgICAgICAgIG0uZHVtcF9kb3VibGUoeG1scnBjbGliLk1BWElOVCArIDQyLCBkdW1teV93cml0ZSkKKyAgICAgICAgbS5kdW1wX2RvdWJsZSh4bWxycGNsaWIuTUlOSU5UIC0gNDIsIGR1bW15X3dyaXRlKQorCiAgICAgZGVmIHRlc3RfZHVtcF9ub25lKHNlbGYpOgogICAgICAgICB2YWx1ZSA9IGFsaXN0ICsgW05vbmVdCiAgICAgICAgIGFyZzEgPSAoYWxpc3QgKyBbTm9uZV0sKQpAQCAtMTMzLDYgKzE3OCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxycGNsaWIubG9hZHMoc3RyZylbMF1bMF0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeG1scnBjbGliLmR1bXBzLCAoYXJnMSwpKQogCisgICAgZGVmIHRlc3RfZHVtcF9ieXRlcyhzZWxmKToKKyAgICAgICAgc2FtcGxlID0gYiJteSBkb2cgaGFzIGZsZWFzIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbXBsZSwgeG1scnBjbGliLkJpbmFyeShzYW1wbGUpKQorICAgICAgICBmb3IgdHlwZV8gaW4gYnl0ZXMsIGJ5dGVhcnJheSwgeG1scnBjbGliLkJpbmFyeToKKyAgICAgICAgICAgIHZhbHVlID0gdHlwZV8oc2FtcGxlKQorICAgICAgICAgICAgcyA9IHhtbHJwY2xpYi5kdW1wcygodmFsdWUsKSkKKworICAgICAgICAgICAgcmVzdWx0LCBtID0geG1scnBjbGliLmxvYWRzKHMsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgc2FtcGxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgYnl0ZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgICAgICAgICByZXN1bHQsIG0gPSB4bWxycGNsaWIubG9hZHMocywgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpCisgICAgICAgICAgICAobmV3dmFsdWUsKSA9IHJlc3VsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgc2FtcGxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG5ld3ZhbHVlKSwgeG1scnBjbGliLkJpbmFyeSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG0pCisKICAgICBkZWYgdGVzdF9nZXRfaG9zdF9pbmZvKHNlbGYpOgogICAgICAgICAjIHNlZSBidWcgIzM2MTMsIHRoaXMgcmFpc2VkIGEgVHlwZUVycm9yCiAgICAgICAgIHRyYW5zcCA9IHhtbHJwYy5jbGllbnQuVHJhbnNwb3J0KCkKQEAgLTE0MCw5ICsyMDQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2hvc3QudGxkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgZFhObGNnPT0nKV0sIHt9KSkKIAotICAgIGRlZiB0ZXN0X2R1bXBfYnl0ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgeG1scnBjbGliLmR1bXBzLCAoYiJteSBkb2cgaGFzIGZsZWFzIiwpKQotCiAgICAgZGVmIHRlc3Rfc3NsX3ByZXNlbmNlKHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbXBvcnQgc3NsCkBAIC05ODAsMTAgKzEwNDEsNDQgQEAKICAgICAgICAgICAgIGxlbihjb250ZW50KSkKIAogCitjbGFzcyBVc2VCdWlsdGluVHlwZXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF91c2VfYnVpbHRpbl90eXBlcyhzZWxmKToKKyAgICAgICAgIyBTaW1wbGVYTUxSUENEaXNwYXRjaGVyLl9faW5pdF9fIGFjY2VwdHMgdXNlX2J1aWx0aW5fdHlwZXMsIHdoaWNoCisgICAgICAgICMgbWFrZXMgYWxsIGRpc3BhdGNoIG9mIGJpbmFyeSBkYXRhIGFzIGJ5dGVzIGluc3RhbmNlcywgYW5kIGFsbAorICAgICAgICAjIGRpc3BhdGNoIG9mIGRhdGV0aW1lIGFyZ3VtZW50IGFzIGRhdGV0aW1lLmRhdGV0aW1lIGluc3RhbmNlcy4KKyAgICAgICAgc2VsZi5sb2cgPSBbXQorICAgICAgICBleHBlY3RlZF9ieXRlcyA9IGIibXkgZG9nIGhhcyBmbGVhcyIKKyAgICAgICAgZXhwZWN0ZWRfZGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lKDIwMDgsIDUsIDI2LCAxOCwgMjUsIDEyKQorICAgICAgICBtYXJzaGFsZWQgPSB4bWxycGNsaWIuZHVtcHMoKGV4cGVjdGVkX2J5dGVzLCBleHBlY3RlZF9kYXRlKSwgJ2Zvb2JhcicpCisgICAgICAgIGRlZiBmb29iYXIoKmFyZ3MpOgorICAgICAgICAgICAgc2VsZi5sb2cuZXh0ZW5kKGFyZ3MpCisgICAgICAgIGhhbmRsZXIgPSB4bWxycGMuc2VydmVyLlNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIoCisgICAgICAgICAgICBhbGxvd19ub25lPVRydWUsIGVuY29kaW5nPU5vbmUsIHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIGhhbmRsZXIucmVnaXN0ZXJfZnVuY3Rpb24oZm9vYmFyKQorICAgICAgICBoYW5kbGVyLl9tYXJzaGFsZWRfZGlzcGF0Y2gobWFyc2hhbGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLmxvZyksIDIpCisgICAgICAgIG15Ynl0ZXMsIG15ZGF0ZSA9IHNlbGYubG9nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5sb2csIFtleHBlY3RlZF9ieXRlcywgZXhwZWN0ZWRfZGF0ZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShteWRhdGUpLCBkYXRldGltZS5kYXRldGltZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG15Ynl0ZXMpLCBieXRlcykKKworICAgIGRlZiB0ZXN0X2NnaWhhbmRsZXJfaGFzX3VzZV9idWlsdGluX3R5cGVzX2ZsYWcoc2VsZik6CisgICAgICAgIGhhbmRsZXIgPSB4bWxycGMuc2VydmVyLkNHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKHVzZV9idWlsdGluX3R5cGVzPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLnVzZV9idWlsdGluX3R5cGVzKQorCisgICAgZGVmIHRlc3RfeG1scnBjc2VydmVyX2hhc191c2VfYnVpbHRpbl90eXBlc19mbGFnKHNlbGYpOgorICAgICAgICBzZXJ2ZXIgPSB4bWxycGMuc2VydmVyLlNpbXBsZVhNTFJQQ1NlcnZlcigoImxvY2FsaG9zdCIsIDApLAorICAgICAgICAgICAgdXNlX2J1aWx0aW5fdHlwZXM9VHJ1ZSkKKyAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIudXNlX2J1aWx0aW5fdHlwZXMpCisKKwogQHN1cHBvcnQucmVhcF90aHJlYWRzCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgeG1scnBjX3Rlc3RzID0gW1hNTFJQQ1Rlc3RDYXNlLCBIZWxwZXJUZXN0Q2FzZSwgRGF0ZVRpbWVUZXN0Q2FzZSwKICAgICAgICAgIEJpbmFyeVRlc3RDYXNlLCBGYXVsdFRlc3RDYXNlXQorICAgIHhtbHJwY190ZXN0cy5hcHBlbmQoVXNlQnVpbHRpblR5cGVzVGVzdENhc2UpCiAgICAgeG1scnBjX3Rlc3RzLmFwcGVuZChTaW1wbGVTZXJ2ZXJUZXN0Q2FzZSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKEtlZXBhbGl2ZVNlcnZlclRlc3RDYXNlMSkKICAgICB4bWxycGNfdGVzdHMuYXBwZW5kKEtlZXBhbGl2ZVNlcnZlclRlc3RDYXNlMikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQppbmRleCBkNzJmOGFjLi5kZmI1ZjlhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1pbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBjb2xsZWN0aW9ucy5hYmMKIGltcG9ydCBlcnJubwogaW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwpAQCAtNDksNyArNDksNyBAQAogCiAgICAgICAgICMgUGVyZm9ybSBhIG1pbmltYWwgc2FuaXR5IGNoZWNrIG9uIHRoZSByZXN1bHQsIGp1c3QgdG8gYmUgc3VyZQogICAgICAgICAjIHRoZSByZXF1ZXN0IG1lYW5zIHdoYXQgd2UgdGhpbmsgaXQgbWVhbnMuCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShidWlsZGVycywgY29sbGVjdGlvbnMuU2VxdWVuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShidWlsZGVycywgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoW3ggZm9yIHggaW4gYnVpbGRlcnMgaWYgIjMueCIgaW4geF0sIGJ1aWxkZXJzKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weSBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQppbmRleCA1MWQ4YjQ1Li4yZTUyYzY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CkBAIC0xLDkgKzEsMyBAQAotIyBXZSBjYW4gdGVzdCBwYXJ0IG9mIHRoZSBtb2R1bGUgd2l0aG91dCB6bGliLgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogaW1wb3J0IGlvCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKQEAgLTE5LDcgKzEzLDcgQEAKIGZyb20gcmFuZG9tIGltcG9ydCByYW5kaW50LCByYW5kb20KIGZyb20gdW5pdHRlc3QgaW1wb3J0IHNraXBVbmxlc3MKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBmaW5kZmlsZSwgdW5saW5rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGZpbmRmaWxlLCB1bmxpbmssIHJlcXVpcmVzX3psaWIsIHJlcXVpcmVzX2J6MiwgcmVxdWlyZXNfbHptYQogCiBURVNURk4yID0gVEVTVEZOICsgIjIiCiBURVNURk5ESVIgPSBURVNURk4gKyAiZCIKQEAgLTI2OSw0NCArMjYzLDQ0IEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X29wZW5fZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9pdGVybGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgZm9yIGNhc2VzIHdoZXJlIGNvbXByZXNzZWQgZGF0YSBpcyBsYXJnZXIgdGhhbiBvcmlnaW5hbC4iIiIKICAgICAgICAgIyBDcmVhdGUgdGhlIFpJUCBhcmNoaXZlCkBAIC0zMTksNiArMzEzLDEwMyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzEnKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Blbm9iai5yZWFkKDEpLCBiJzInKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JhbmRvbV9vcGVuX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfcmVhZF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9sb3dfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgICIiIkNoZWNrIGZvciBjYXNlcyB3aGVyZSBjb21wcmVzc2VkIGRhdGEgaXMgbGFyZ2VyIHRoYW4gb3JpZ2luYWwuIiIiCisgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX0JaSVAyKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgJzEyJykKKworICAgICAgICAjIEdldCBhbiBvcGVuIG9iamVjdCBmb3Igc3RyZmlsZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIsIHppcGZpbGUuWklQX0JaSVAyKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbigic3RyZmlsZSIpIGFzIG9wZW5vYmo6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVub2JqLnJlYWQoMSksIGInMicpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzc2MTA6IGNhbGxzIHRvIHJlYWRsaW5lKCkgaW50ZXJsZWF2ZWQgd2l0aCBjYWxscyB0byByZWFkKCkuCisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3JlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX2l0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2xvd19jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICAiIiJDaGVjayBmb3IgY2FzZXMgd2hlcmUgY29tcHJlc3NlZCBkYXRhIGlzIGxhcmdlciB0aGFuIG9yaWdpbmFsLiIiIgorICAgICAgICAjIENyZWF0ZSB0aGUgWklQIGFyY2hpdmUKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciLCB6aXBmaWxlLlpJUF9MWk1BKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHppcGZwLndyaXRlc3RyKCJzdHJmaWxlIiwgJzEyJykKKworICAgICAgICAjIEdldCBhbiBvcGVuIG9iamVjdCBmb3Igc3RyZmlsZQorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAiciIsIHppcGZpbGUuWklQX0xaTUEpIGFzIHppcGZwOgorICAgICAgICAgICAgd2l0aCB6aXBmcC5vcGVuKCJzdHJmaWxlIikgYXMgb3Blbm9iajoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicxJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZW5vYmoucmVhZCgxKSwgYicyJykKKwogICAgIGRlZiB0ZXN0X2Fic29sdXRlX2FyY25hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICIvYWJzb2x1dGUiKQpAQCAtMzc3LDcgKzQ2OCw3IEBACiAgICAgICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAicmIiKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZnAucmVhZChURVNURk4pLCBmLnJlYWQoKSkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3Blcl9maWxlX2NvbXByZXNzaW9uKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGZpbGVzIHdpdGhpbiBhIFppcCBhcmNoaXZlIGNhbiBoYXZlIGRpZmZlcmVudAogICAgICAgICBjb21wcmVzc2lvbiBvcHRpb25zLiIiIgpAQCAtNDQ2LDE5ICs1MzcsMzIgQEAKICAgICAgICAgIyByZW1vdmUgdGhlIHRlc3QgZmlsZSBzdWJkaXJlY3RvcmllcwogICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgJ3ppcHRlc3QyZGlyJykpCiAKLSAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbihzZWxmKToKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9zdG9yZWQoc2VsZik6CiAgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKICAgICAgICAgemlwZnAud3JpdGVzdHIoImEudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9TVE9SRUQpCi0gICAgICAgIGlmIHpsaWI6Ci0gICAgICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQotCiAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdhLnR4dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mby5jb21wcmVzc190eXBlLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICAgICAgaWYgemxpYjoKLSAgICAgICAgICAgIGluZm8gPSB6aXBmcC5nZXRpbmZvKCdiLnR4dCcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCisgICAgQHJlcXVpcmVzX3psaWIKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9kZWZsYXRlZChzZWxmKToKKyAgICAgICAgemlwZnAgPSB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgInciKQorICAgICAgICB6aXBmcC53cml0ZXN0cigiYi50eHQiLCAiaGVsbG8gd29ybGQiLCBjb21wcmVzc190eXBlPXppcGZpbGUuWklQX0RFRkxBVEVEKQorICAgICAgICBpbmZvID0gemlwZnAuZ2V0aW5mbygnYi50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uY29tcHJlc3NfdHlwZSwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3Rfd3JpdGVzdHJfY29tcHJlc3Npb25fYnppcDIoc2VsZik6CisgICAgICAgIHppcGZwID0gemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IikKKyAgICAgICAgemlwZnAud3JpdGVzdHIoImIudHh0IiwgImhlbGxvIHdvcmxkIiwgY29tcHJlc3NfdHlwZT16aXBmaWxlLlpJUF9CWklQMikKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF93cml0ZXN0cl9jb21wcmVzc2lvbl9sem1hKHNlbGYpOgorICAgICAgICB6aXBmcCA9IHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAidyIpCisgICAgICAgIHppcGZwLndyaXRlc3RyKCJiLnR4dCIsICJoZWxsbyB3b3JsZCIsIGNvbXByZXNzX3R5cGU9emlwZmlsZS5aSVBfTFpNQSkKKyAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8oJ2IudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX0xaTUEpCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCkBAIC01MTQsNyArNjE4LDEyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQogCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisKKworCisKKworICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfdW5pY29kZV9maWxlbmFtZXMoc2VsZik6CiAgICAgICAgICMgYnVnICMxMDgwMQogICAgICAgICBmbmFtZSA9IGZpbmRmaWxlKCd6aXBfY3A0MzdfaGVhZGVyLnppcCcpCkBAIC02MjMsMTEgKzczMiwyMSBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHRlc3RfYWJzb2x1dGVfYXJjbmFtZXMoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICJ3IiwgemlwZmlsZS5aSVBfU1RPUkVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd1ppcDY0PVRydWUpIGFzIHppcGZwOgpAQCAtNzU2LDggKzg3NSw0MCBAQAogICAgICAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ODBceDAxXHgwMFx4MDBceDAwJwogICAgICAgICAgICAgYidceDAwYWZpbGVQS1x4MDVceDA2XHgwMFx4MDBceDAwXHgwMFx4MDFceDAwJwogICAgICAgICAgICAgYidceDAxXHgwMDNceDAwXHgwMFx4MDAzXHgwMFx4MDBceDAwXHgwMFx4MDAnKSwKKyAgICAgICAgemlwZmlsZS5aSVBfQlpJUDI6ICgKKyAgICAgICAgICAgIGInUEtceDAzXHgwNFx4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0U4XHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBhZicKKyAgICAgICAgICAgIGInaWxlQlpoOTFBWSZTWVx4ZDRceGE4XHhjYScKKyAgICAgICAgICAgIGInXHg3Zlx4MDBceDAwXHgwZlx4MTFceDgwQFx4MDBceDA2RFx4OTBceDgwIFx4MDAgXHhhNScKKyAgICAgICAgICAgIGInUFx4ZDkhXHgwM1x4MDNceDEzXHgxM1x4MTNceDg5XHhhOVx4YTlceGMydTU6XHg5ZicKKyAgICAgICAgICAgIGInXHg4Ylx4YjkiXHg5YyhIalRlP1x4ODBQS1x4MDFceDAyXHgxNCcKKyAgICAgICAgICAgIGInXHgwM1x4MTRceDAzXHgwMFx4MDBceDBjXHgwMG51XHgwYz1GQUtFOCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbGVQSycKKyAgICAgICAgICAgIGInXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMFx4MDBbXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCcpLAorICAgICAgICB6aXBmaWxlLlpJUF9MWk1BOiAoCisgICAgICAgICAgICBiJ1BLXHgwM1x4MDRceDE0XHgwM1x4MDBceDAwXHgwZVx4MDBudVx4MGM9RkEnCisgICAgICAgICAgICBiJ0tFXHgxYlx4MDBceDAwXHgwMG5ceDAwXHgwMFx4MDBceDA1XHgwMFx4MDBceDAwYWYnCisgICAgICAgICAgICBiJ2lsZVx0XHgwNFx4MDVceDAwXVx4MDBceDAwXHgwMFx4MDRceDAwNFx4MTlJJworICAgICAgICAgICAgYidceGVlXHg4ZFx4ZTlceDE3XHg4OTozYFx0cSEuOFx4MDBQSycKKyAgICAgICAgICAgIGInXHgwMVx4MDJceDE0XHgwM1x4MTRceDAzXHgwMFx4MDBceDBlXHgwMG51XHgwYz1GQScKKyAgICAgICAgICAgIGInS0VceDFiXHgwMFx4MDBceDAwblx4MDBceDAwXHgwMFx4MDVceDAwXHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMCBceDgwXHg4MFx4ODFceDAwXHgwMFx4MDBceDAwYWZpbCcKKyAgICAgICAgICAgIGInZVBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMDNceDAwXHgwMCcKKyAgICAgICAgICAgIGInXHgwMD5ceDAwXHgwMFx4MDBceDAwXHgwMCcpLAogICAgIH0KIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgRmlsZSBoYXMgYW4gZXh0cmFjdF92ZXJzaW9uIG9mIDEyMAorICAgICAgICBkYXRhID0gKGInUEtceDAzXHgwNHhceDAwXHgwMFx4MDBceDAwXHgwMCFwXHhhMUBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwXHgwMHhQS1x4MDFceDAyeFx4MDN4XHgwMFx4MDBceDAwXHgwMCcKKyAgICAgICAgYidceDAwIXBceGExQFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMCcKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDgwXHgwMVx4MDBceDAwXHgwMFx4MDB4UEtceDA1XHgwNicKKyAgICAgICAgYidceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMC9ceDAwXHgwMFx4MDBceDFmXHgwMFx4MDBceDAwXHgwMFx4MDAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB6aXBmaWxlLlppcEZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlvLkJ5dGVzSU8oZGF0YSksICdyJykKKwogICAgIGRlZiB0ZXN0X3VuaWNvZGVfZmlsZW5hbWVzKHNlbGYpOgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4sICJ3IikgYXMgemY6CiAgICAgICAgICAgICB6Zi53cml0ZXN0cigiZm9vLnR4dCIsICJUZXN0IGZvciB1bmljb2RlIGZpbGVuYW1lIikKQEAgLTkyMiw2ICsxMDczLDE3IEBACiAgICAgICAgIGNhdWdodC4iIiIKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKIAorICAgIGRlZiB0ZXN0X3Vuc3VwcG9ydGVkX2NvbXByZXNzaW9uKHNlbGYpOgorICAgICAgICAjIGRhdGEgaXMgZGVjbGFyZWQgYXMgc2hydW5rLCBidXQgYWN0dWFsbHkgZGVmbGF0ZWQKKyAgICAgICAgZGF0YSA9IChiJ1BLXHgwM1x4MDQuXHgwMFx4MDBceDAwXHgwMVx4MDBceGU0Q1x4YTFAXHgwMFx4MDBceDAwJworICAgICAgICBiJ1x4MDBceDAyXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDFceDAwXHgwMFx4MDB4XHgwM1x4MDBQS1x4MDEnCisgICAgICAgIGInXHgwMi5ceDAzLlx4MDBceDAwXHgwMFx4MDFceDAwXHhlNENceGExQFx4MDBceDAwXHgwMFx4MDBceDAyXHgwMFx4MDAnCisgICAgICAgIGInXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAnCisgICAgICAgIGInXHg4MFx4MDFceDAwXHgwMFx4MDBceDAweFBLXHgwNVx4MDZceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAxXHgwMCcKKyAgICAgICAgYicvXHgwMFx4MDBceDAwIVx4MDBceDAwXHgwMFx4MDBceDAwJykKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoaW8uQnl0ZXNJTyhkYXRhKSwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZi5vcGVuLCAneCcpCisKICAgICBkZWYgdGVzdF9udWxsX2J5dGVfaW5fZmlsZW5hbWUoc2VsZik6CiAgICAgICAgICIiIkNoZWNrIHRoYXQgYSBmaWxlbmFtZSBjb250YWluaW5nIGEgbnVsbCBieXRlIGlzIHByb3Blcmx5CiAgICAgICAgIHRlcm1pbmF0ZWQuIiIiCkBAIC0xMDIzLDEwICsxMTg1LDE4IEBACiAgICAgZGVmIHRlc3RfdGVzdHppcF93aXRoX2JhZF9jcmNfc3RvcmVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3Rlc3R6aXBfd2l0aF9iYWRfY3JjX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF90ZXN0emlwX3dpdGhfYmFkX2NyY19sem1hKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3Rlc3R6aXBfd2l0aF9iYWRfY3JjKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgY2hlY2tfcmVhZF93aXRoX2JhZF9jcmMoc2VsZiwgY29tcHJlc3Npb24pOgogICAgICAgICAiIiJUZXN0cyB0aGF0IGZpbGVzIHdpdGggYmFkIENSQ3MgcmFpc2UgYSBCYWRaaXBGaWxlIGV4Y2VwdGlvbiB3aGVuIHJlYWQuIiIiCiAgICAgICAgIHppcGRhdGEgPSBzZWxmLnppcHNfd2l0aF9iYWRfY3JjW2NvbXByZXNzaW9uXQpAQCAtMTA1MSwxMCArMTIyMSwxOCBAQAogICAgIGRlZiB0ZXN0X3JlYWRfd2l0aF9iYWRfY3JjX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19kZWZsYXRlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX3dpdGhfYmFkX2NyY19iemlwMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19sem1hCisgICAgZGVmIHRlc3RfcmVhZF93aXRoX2JhZF9jcmNfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3dpdGhfYmFkX2NyYyh6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIGNoZWNrX3JlYWRfcmV0dXJuX3NpemUoc2VsZiwgY29tcHJlc3Npb24pOgogICAgICAgICAjIElzc3VlICM5ODM3OiBaaXBFeHRGaWxlLnJlYWQoKSBzaG91bGRuJ3QgcmV0dXJuIG1vcmUgYnl0ZXMKICAgICAgICAgIyB0aGFuIHJlcXVlc3RlZC4KQEAgLTEwNzEsMTAgKzEyNDksMTggQEAKICAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX3N0b3JlZChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfcmVhZF9yZXR1cm5fc2l6ZSh6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkX3JldHVybl9zaXplX2J6aXAyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JlYWRfcmV0dXJuX3NpemUoemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRfcmV0dXJuX3NpemVfbHptYShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWFkX3JldHVybl9zaXplKHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgdGVzdF9lbXB0eV96aXBmaWxlKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgY3JlYXRpbmcgYSBmaWxlIGluICd3JyBvciAnYScgbW9kZSBhbmQgY2xvc2luZyB3aXRob3V0CiAgICAgICAgICMgYWRkaW5nIGFueSBmaWxlcyB0byB0aGUgYXJjaGl2ZXMgY3JlYXRlcyBhIHZhbGlkIGVtcHR5IFpJUCBmaWxlCkBAIC0xMTYxLDcgKzEzNDcsNyBAQAogICAgICAgICBzZWxmLnppcDIuc2V0cGFzc3dvcmQoYiJwZXJsIikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBzZWxmLnppcDIucmVhZCwgInplcm8iKQogCi0gICAgQHNraXBVbmxlc3MoemxpYiwgInJlcXVpcmVzIHpsaWIiKQorICAgIEByZXF1aXJlc196bGliCiAgICAgZGVmIHRlc3RfZ29vZF9wYXNzd29yZChzZWxmKToKICAgICAgICAgc2VsZi56aXAuc2V0cGFzc3dvcmQoYiJweXRob24iKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuemlwLnJlYWQoInRlc3QudHh0IiksIHNlbGYucGxhaW4pCkBAIC0xMjExLDExICsxMzk3LDIxIEBACiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX1NUT1JFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAorICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9iemlwMihzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKICAgICBkZWYgemlwX29wZW5fdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6CiAgICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCiAKQEAgLTEyNTEsMTEgKzE0NDcsMjEgQEAKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9vcGVuX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X29wZW5fbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuemlwX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCiAgICAgZGVmIHppcF9yYW5kb21fb3Blbl90ZXN0KHNlbGYsIGYsIGNvbXByZXNzaW9uKToKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKIApAQCAtMTI3OSwxMyArMTQ4NSwyMyBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYuemlwX3JhbmRvbV9vcGVuX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmFuZG9tX29wZW5fYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnppcF9yYW5kb21fb3Blbl90ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQogCi1Ac2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yYW5kb21fb3Blbl9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi56aXBfcmFuZG9tX29wZW5fdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisKK0ByZXF1aXJlc196bGliCiBjbGFzcyBUZXN0c1dpdGhNdWx0aXBsZU9wZW5zKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQpAQCAtMTQ3NywzMiArMTY5Myw4MiBAQAogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2RlZmxhdGVkKHNlbGYpOgogICAgICAgICAjIElzc3VlICM3NjEwOiBjYWxscyB0byByZWFkbGluZSgpIGludGVybGVhdmVkIHdpdGggY2FsbHMgdG8gcmVhZCgpLgogICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgogICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9yZWFkbGluZV9kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfdGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKIAotICAgIEBza2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKKyAgICBAcmVxdWlyZXNfemxpYgogICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19kZWZsYXRlZChzZWxmKToKICAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKICAgICAgICAgICAgIHNlbGYucmVhZGxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKLSAgICBAc2tpcFVubGVzcyh6bGliLCAicmVxdWlyZXMgemxpYiIpCisgICAgQHJlcXVpcmVzX3psaWIKICAgICBkZWYgdGVzdF9pdGVybGluZXNfZGVmbGF0ZWQoc2VsZik6CiAgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CiAgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0RFRkxBVEVEKQogCisgICAgQHJlcXVpcmVzX2J6MgorICAgIGRlZiB0ZXN0X3JlYWRfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV9yZWFkX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgemlwZmlsZS5aSVBfQlpJUDIpCisKKyAgICBAcmVxdWlyZXNfYnoyCisgICAgZGVmIHRlc3RfcmVhZGxpbmVzX2J6aXAyKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9CWklQMikKKworICAgIEByZXF1aXJlc19iejIKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfYnppcDIoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLml0ZXJsaW5lc190ZXN0KGYsIHppcGZpbGUuWklQX0JaSVAyKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9yZWFkX2x6bWEoc2VsZik6CisgICAgICAgIGZvciBmIGluIChURVNURk4yLCBUZW1wb3JhcnlGaWxlKCksIGlvLkJ5dGVzSU8oKSk6CisgICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3JlYWRfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9yZWFkbGluZV9sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZV90ZXN0KGYsIHppcGZpbGUuWklQX0xaTUEpCisKKyAgICBAcmVxdWlyZXNfbHptYQorICAgIGRlZiB0ZXN0X3JlYWRsaW5lc19sem1hKHNlbGYpOgorICAgICAgICBmb3IgZiBpbiAoVEVTVEZOMiwgVGVtcG9yYXJ5RmlsZSgpLCBpby5CeXRlc0lPKCkpOgorICAgICAgICAgICAgc2VsZi5yZWFkbGluZXNfdGVzdChmLCB6aXBmaWxlLlpJUF9MWk1BKQorCisgICAgQHJlcXVpcmVzX2x6bWEKKyAgICBkZWYgdGVzdF9pdGVybGluZXNfbHptYShzZWxmKToKKyAgICAgICAgZm9yIGYgaW4gKFRFU1RGTjIsIFRlbXBvcmFyeUZpbGUoKSwgaW8uQnl0ZXNJTygpKToKKyAgICAgICAgICAgIHNlbGYuaXRlcmxpbmVzX3Rlc3QoZiwgemlwZmlsZS5aSVBfTFpNQSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgogICAgICAgICAgICAgb3MucmVtb3ZlKGZuKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlNjQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQppbmRleCAwZTdkNzNmLi5hOGZiN2FiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGU2NC5weQpAQCAtMTEsMTIgKzExLDYgQEAKICAgICAgICAgJ3Rlc3QgcmVxdWlyZXMgbG9hZHMgb2YgZGlzay1zcGFjZSBieXRlcyBhbmQgYSBsb25nIHRpbWUgdG8gcnVuJwogICAgICkKIAotIyBXZSBjYW4gdGVzdCBwYXJ0IG9mIHRoZSBtb2R1bGUgd2l0aG91dCB6bGliLgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogaW1wb3J0IHppcGZpbGUsIG9zLCB1bml0dGVzdAogaW1wb3J0IHRpbWUKIGltcG9ydCBzeXMKQEAgLTI0LDcgKzE4LDcgQEAKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCiAKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCByZXF1aXJlc196bGliCiAKIFRFU1RGTjIgPSBURVNURk4gKyAiMiIKIApAQCAtODEsMTIgKzc1LDEyIEBACiAgICAgICAgIGZvciBmIGluIFRlbXBvcmFyeUZpbGUoKSwgVEVTVEZOMjoKICAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9TVE9SRUQpCiAKLSAgICBpZiB6bGliOgotICAgICAgICBkZWYgdGVzdERlZmxhdGVkKHNlbGYpOgotICAgICAgICAgICAgIyBUcnkgdGhlIHRlbXAgZmlsZSBmaXJzdC4gIElmIHdlIGRvIFRFU1RGTjIgZmlyc3QsIHRoZW4gaXQgaG9ncwotICAgICAgICAgICAgIyBnaWdhYnl0ZXMgb2YgZGlzayBzcGFjZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgotICAgICAgICAgICAgZm9yIGYgaW4gVGVtcG9yYXJ5RmlsZSgpLCBURVNURk4yOgotICAgICAgICAgICAgICAgIHNlbGYuemlwVGVzdChmLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkKKyAgICBAcmVxdWlyZXNfemxpYgorICAgIGRlZiB0ZXN0RGVmbGF0ZWQoc2VsZik6CisgICAgICAgICMgVHJ5IHRoZSB0ZW1wIGZpbGUgZmlyc3QuICBJZiB3ZSBkbyBURVNURk4yIGZpcnN0LCB0aGVuIGl0IGhvZ3MKKyAgICAgICAgIyBnaWdhYnl0ZXMgb2YgZGlzayBzcGFjZSBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgorICAgICAgICBmb3IgZiBpbiBUZW1wb3JhcnlGaWxlKCksIFRFU1RGTjI6CisgICAgICAgICAgICBzZWxmLnppcFRlc3QoZiwgemlwZmlsZS5aSVBfREVGTEFURUQpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGZvciBmbmFtZSBpbiBURVNURk4sIFRFU1RGTjI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGRmNWZmOWQuLmY3Y2I4YjkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC05LDEyICs5LDYgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnRlc3RfaW1wb3J0aG9va3MgaW1wb3J0IEltcG9ydEhvb2tzQmFzZVRlc3RDYXNlLCB0ZXN0X3NyYywgdGVzdF9jbwogCi0jIHNvbWUgdGVzdHMgY2FuIGJlIHJhbiBldmVuIHdpdGhvdXQgemxpYgotdHJ5OgotICAgIGltcG9ydCB6bGliCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgemxpYiA9IE5vbmUKLQogZnJvbSB6aXBmaWxlIGltcG9ydCBaaXBGaWxlLCBaaXBJbmZvLCBaSVBfU1RPUkVELCBaSVBfREVGTEFURUQKIAogaW1wb3J0IHppcGltcG9ydApAQCAtMjUsNyArMTksNyBAQAogZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGV4dHJhY3RfdGIsIGV4dHJhY3Rfc3RhY2ssIHByaW50X3RiCiByYWlzZV9zcmMgPSAnZGVmIGRvX3JhaXNlKCk6IHJhaXNlIFR5cGVFcnJvclxuJwogCi1kZWYgbWFrZV9weWMoY28sIG10aW1lKToKK2RlZiBtYWtlX3B5YyhjbywgbXRpbWUsIHNpemUpOgogICAgIGRhdGEgPSBtYXJzaGFsLmR1bXBzKGNvKQogICAgIGlmIHR5cGUobXRpbWUpIGlzIHR5cGUoMC4wKToKICAgICAgICAgIyBNYWMgbXRpbWVzIG5lZWQgYSBiaXQgb2Ygc3BlY2lhbCBjYXNpbmcKQEAgLTMzLDE0ICsyNywxNCBAQAogICAgICAgICAgICAgbXRpbWUgPSBpbnQobXRpbWUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtdGltZSA9IGludCgtMHgxMDAwMDAwMDAgKyBpbnQobXRpbWUpKQotICAgIHB5YyA9IGltcC5nZXRfbWFnaWMoKSArIHN0cnVjdC5wYWNrKCI8aSIsIGludChtdGltZSkpICsgZGF0YQorICAgIHB5YyA9IGltcC5nZXRfbWFnaWMoKSArIHN0cnVjdC5wYWNrKCI8aWkiLCBpbnQobXRpbWUpLCBzaXplICYgMHhGRkZGRkZGRikgKyBkYXRhCiAgICAgcmV0dXJuIHB5YwogCiBkZWYgbW9kdWxlX3BhdGhfdG9fZG90dGVkX25hbWUocGF0aCk6CiAgICAgcmV0dXJuIHBhdGgucmVwbGFjZShvcy5zZXAsICcuJykKIAogTk9XID0gdGltZS50aW1lKCkKLXRlc3RfcHljID0gbWFrZV9weWModGVzdF9jbywgTk9XKQordGVzdF9weWMgPSBtYWtlX3B5Yyh0ZXN0X2NvLCBOT1csIGxlbih0ZXN0X3NyYykpCiAKIAogVEVTVE1PRCA9ICJ6aXB0ZXN0bW9kdWxlIgpAQCAtMjExLDYgKzIwNSwxMCBAQAogICAgICAgICAgICAgbW9kID0gemkubG9hZF9tb2R1bGUoVEVTVFBBQ0spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmdldF9maWxlbmFtZShURVNUUEFDSyksIG1vZC5fX2ZpbGVfXykKIAorICAgICAgICAgICAgZXhpc3RpbmdfcGFja19wYXRoID0gX19pbXBvcnRfXyhURVNUUEFDSykuX19wYXRoX19bMF0KKyAgICAgICAgICAgIGV4cGVjdGVkX3BhdGhfcGF0aCA9IG9zLnBhdGguam9pbihURU1QX1pJUCwgVEVTVFBBQ0spCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXN0aW5nX3BhY2tfcGF0aCwgZXhwZWN0ZWRfcGF0aF9wYXRoKQorCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmlzX3BhY2thZ2UocGFja2RpciArICdfX2luaXRfXycpLCBGYWxzZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyICsgVEVTVFBBQ0syKSwgVHJ1ZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuaXNfcGFja2FnZShwYWNrZGlyMiArIFRFU1RNT0QpLCBGYWxzZSkKQEAgLTI5OSw3ICsyOTcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIF9fZmlsZV9fCiAgICAgICAgIGlmIF9fbG9hZGVyX18uZ2V0X2RhdGEoInNvbWUuZGF0YSIpICE9IGIic29tZSBkYXRhIjoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJiYWQgZGF0YSIpXG4iIiIKLSAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZShzcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVykKKyAgICAgICAgcHljID0gbWFrZV9weWMoY29tcGlsZShzcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVywgbGVuKHNyYykpCiAgICAgICAgIGZpbGVzID0ge1RFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCBweWMpLAogICAgICAgICAgICAgICAgICAic29tZS5kYXRhIjogKE5PVywgInNvbWUgZGF0YSIpfQogICAgICAgICBzZWxmLmRvVGVzdChweWNfZXh0LCBmaWxlcywgVEVTVE1PRCkKQEAgLTMxOSw3ICszMTcsNyBAQAogICAgICAgICBzZWxmLmRvVGVzdCgiLnB5IiwgZmlsZXMsIFRFU1RNT0QsIGNhbGw9c2VsZi5hc3NlcnRNb2R1bGVTb3VyY2UpCiAKICAgICBkZWYgdGVzdEdldENvbXBpbGVkU291cmNlKHNlbGYpOgotICAgICAgICBweWMgPSBtYWtlX3B5Yyhjb21waWxlKHRlc3Rfc3JjLCAiPD8/Pz4iLCAiZXhlYyIpLCBOT1cpCisgICAgICAgIHB5YyA9IG1ha2VfcHljKGNvbXBpbGUodGVzdF9zcmMsICI8Pz8/PiIsICJleGVjIiksIE5PVywgbGVuKHRlc3Rfc3JjKSkKICAgICAgICAgZmlsZXMgPSB7VEVTVE1PRCArICIucHkiOiAoTk9XLCB0ZXN0X3NyYyksCiAgICAgICAgICAgICAgICAgIFRFU1RNT0QgKyBweWNfZXh0OiAoTk9XLCBweWMpfQogICAgICAgICBzZWxmLmRvVGVzdChweWNfZXh0LCBmaWxlcywgVEVTVE1PRCwgY2FsbD1zZWxmLmFzc2VydE1vZHVsZVNvdXJjZSkKQEAgLTM5Miw3ICszOTAsNyBAQAogICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQogCiAKLUB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJyZXF1aXJlcyB6bGliIikKK0BzdXBwb3J0LnJlcXVpcmVzX3psaWIKIGNsYXNzIENvbXByZXNzZWRaaXBJbXBvcnRUZXN0Q2FzZShVbmNvbXByZXNzZWRaaXBJbXBvcnRUZXN0Q2FzZSk6CiAgICAgY29tcHJlc3Npb24gPSBaSVBfREVGTEFURUQKIApAQCAtNDE3LDcgKzQxNSw3IEBACiAKICAgICBkZWYgdGVzdEVtcHR5RmlsZShzZWxmKToKICAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVE1PRCkKLSAgICAgICAgb3BlbihURVNUTU9ELCAndysnKS5jbG9zZSgpCisgICAgICAgIHN1cHBvcnQuY3JlYXRlX2VtcHR5X2ZpbGUoVEVTVE1PRCkKICAgICAgICAgc2VsZi5hc3NlcnRaaXBGYWlsdXJlKFRFU1RNT0QpCiAKICAgICBkZWYgdGVzdEZpbGVVbnJlYWRhYmxlKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKaW5kZXggMDYwMTA4Zi4uZjdmMzM5OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CkBAIC0xNjcsMjAgKzE2NywxOSBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfRG9jVGVzdFJ1bm5lci52ZXJib3NlX2ZsYWcsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9FeGFtcGxlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfZGVidWcsCi0gICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlLAotICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfcGRiX3NldF90cmFjZV9uZXN0ZWQsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90ZXN0c291cmNlLAogICAgICAgICAgICAgICAgICAgICB0ZXN0X3ppcHBlZF9kb2N0ZXN0LnRlc3RfdHJhaWxpbmdfc3BhY2VfaW5fdGVzdCwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X0RvY1Rlc3RGaW5kZXIsCiAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICMgVGhlc2UgcmVtYWluaW5nIHRlc3RzIGFyZSB0aGUgb25lcyB3aGljaCBuZWVkIGFjY2VzcworICAgICAgICAgICAgICAgICMgVGhlc2UgdGVzdHMgYXJlIHRoZSBvbmVzIHdoaWNoIG5lZWQgYWNjZXNzCiAgICAgICAgICAgICAgICAgIyB0byB0aGUgZGF0YSBmaWxlcywgc28gd2UgZG9uJ3QgcnVuIHRoZW0KICAgICAgICAgICAgICAgICBmYWlsX2R1ZV90b19taXNzaW5nX2RhdGFfZmlsZXMgPSBbCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF9Eb2NGaWxlU3VpdGUsCiAgICAgICAgICAgICAgICAgICAgIHRlc3RfemlwcGVkX2RvY3Rlc3QudGVzdF90ZXN0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgdGVzdF96aXBwZWRfZG9jdGVzdC50ZXN0X3VuaXR0ZXN0X3JlcG9ydGZsYWdzLAogICAgICAgICAgICAgICAgIF0KKwogICAgICAgICAgICAgICAgIGZvciBvYmogaW4ga25vd25fZ29vZF90ZXN0czoKICAgICAgICAgICAgICAgICAgICAgX3J1bl9vYmplY3RfZG9jdGVzdChvYmosIHRlc3RfemlwcGVkX2RvY3Rlc3QpCiAgICAgICAgICAgICBmaW5hbGx5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF96bGliLnB5IGIvTGliL3Rlc3QvdGVzdF96bGliLnB5CmluZGV4IDYwMDgxZTIuLmQ2MzdjMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKQEAgLTcsMTAgKzcsMTYgQEAKIAogemxpYiA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnemxpYicpCiAKLXRyeToKLSAgICBpbXBvcnQgbW1hcAotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIG1tYXAgPSBOb25lCisKK2NsYXNzIFZlcnNpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9saWJyYXJ5X3ZlcnNpb24oc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBhY3R1YWwgbGlicmFyeSBpbiB1c2UgbWF0Y2hlcyB0aGUKKyAgICAgICAgIyBtYWpvciB2ZXJzaW9uIHRoYXQgd2Ugd2VyZSBjb21waWxlZCBhZ2FpbnN0LiBXZSBjYW4ndCBndWFyYW50ZWUgdGhhdAorICAgICAgICAjIHRoZSBtaW5vciB2ZXJzaW9ucyB3aWxsIG1hdGNoIChldmVuIG9uIHRoZSBtYWNoaW5lIG9uIHdoaWNoIHRoZSBtb2R1bGUKKyAgICAgICAgIyB3YXMgY29tcGlsZWQpLCBhbmQgdGhlIEFQSSBpcyBzdGFibGUgYmV0d2VlbiBtaW5vciB2ZXJzaW9ucywgc28KKyAgICAgICAgIyB0ZXN0aW5nIG9ubHkgdGhlIG1ham9yIHZlcnNpb25zIGF2b2lkcyBzcHVyaW91cyBmYWlsdXJlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLlpMSUJfUlVOVElNRV9WRVJTSU9OWzBdLCB6bGliLlpMSUJfVkVSU0lPTlswXSkKIAogCiBjbGFzcyBDaGVja3N1bVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTE3MywxMCArMTc5LDggQEAKICAgICBkZWYgdGVzdF9iaWdfZGVjb21wcmVzc19idWZmZXIoc2VsZiwgc2l6ZSk6CiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIHpsaWIuZGVjb21wcmVzcykKIAotICAgIEBiaWdtZW10ZXN0KHNpemU9XzRHICsgMTAwLCBtZW11c2U9MSkKKyAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEsIGRyeV9ydW49RmFsc2UpCiAgICAgZGVmIHRlc3RfbGVuZ3RoX292ZXJmbG93KHNlbGYsIHNpemUpOgotICAgICAgICBpZiBzaXplIDwgXzRHICsgMTAwOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibm90IGVub3VnaCBmcmVlIG1lbW9yeSwgbmVlZCBhdCBsZWFzdCA0IEdCIikKICAgICAgICAgZGF0YSA9IGIneCcgKiBzaXplCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHpsaWIuY29tcHJlc3MsIGRhdGEsIDEpCkBAIC00MjEsNiArNDI1LDM1IEBACiAgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGNvLmZsdXNoKCksIGIiIikgIyBSZXR1cm5zIG5vdGhpbmcKIAorICAgIGRlZiB0ZXN0X2RpY3Rpb25hcnkoc2VsZik6CisgICAgICAgIGggPSBIQU1MRVRfU0NFTkUKKyAgICAgICAgIyBCdWlsZCBhIHNpbXVsYXRlZCBkaWN0aW9uYXJ5IG91dCBvZiB0aGUgd29yZHMgaW4gSEFNTEVULgorICAgICAgICB3b3JkcyA9IGguc3BsaXQoKQorICAgICAgICByYW5kb20uc2h1ZmZsZSh3b3JkcykKKyAgICAgICAgemRpY3QgPSBiJycuam9pbih3b3JkcykKKyAgICAgICAgIyBVc2UgaXQgdG8gY29tcHJlc3MgSEFNTEVULgorICAgICAgICBjbyA9IHpsaWIuY29tcHJlc3NvYmooemRpY3Q9emRpY3QpCisgICAgICAgIGNkID0gY28uY29tcHJlc3MoaCkgKyBjby5mbHVzaCgpCisgICAgICAgICMgVmVyaWZ5IHRoYXQgaXQgd2lsbCBkZWNvbXByZXNzIHdpdGggdGhlIGRpY3Rpb25hcnkuCisgICAgICAgIGRjbyA9IHpsaWIuZGVjb21wcmVzc29iaih6ZGljdD16ZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkY28uZGVjb21wcmVzcyhjZCkgKyBkY28uZmx1c2goKSwgaCkKKyAgICAgICAgIyBWZXJpZnkgdGhhdCBpdCBmYWlscyB3aGVuIG5vdCBnaXZlbiB0aGUgZGljdGlvbmFyeS4KKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoemxpYi5lcnJvciwgZGNvLmRlY29tcHJlc3MsIGNkKQorCisgICAgZGVmIHRlc3RfZGljdGlvbmFyeV9zdHJlYW1pbmcoc2VsZik6CisgICAgICAgICMgVGhpcyBzaW11bGF0ZXMgdGhlIHJldXNlIG9mIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nCisgICAgICAgICMgc2V2ZXJhbCBzZXBhcmF0ZSBkYXRhIHN0cmVhbXMuCisgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6ZGljdD1IQU1MRVRfU0NFTkUpCisgICAgICAgIGRvID0gemxpYi5kZWNvbXByZXNzb2JqKHpkaWN0PUhBTUxFVF9TQ0VORSkKKyAgICAgICAgcGllY2UgPSBIQU1MRVRfU0NFTkVbMTAwMDoxNTAwXQorICAgICAgICBkMCA9IGNvLmNvbXByZXNzKHBpZWNlKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBkMSA9IGNvLmNvbXByZXNzKHBpZWNlWzEwMDpdKSArIGNvLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQorICAgICAgICBkMiA9IGNvLmNvbXByZXNzKHBpZWNlWzotMTAwXSkgKyBjby5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkby5kZWNvbXByZXNzKGQwKSwgcGllY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZG8uZGVjb21wcmVzcyhkMSksIHBpZWNlWzEwMDpdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRvLmRlY29tcHJlc3MoZDIpLCBwaWVjZVs6LTEwMF0pCisKICAgICBkZWYgdGVzdF9kZWNvbXByZXNzX2luY29tcGxldGVfc3RyZWFtKHNlbGYpOgogICAgICAgICAjIFRoaXMgaXMgJ2ZvbycsIGRlZmxhdGVkCiAgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJwpAQCAtNDM0LDYgKzQ2NywyNiBAQAogICAgICAgICB5ICs9IGRjby5mbHVzaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeSwgYidmb28nKQogCisgICAgZGVmIHRlc3RfZGVjb21wcmVzc19lb2Yoc2VsZik6CisgICAgICAgIHggPSBiJ3hceDljS1x4Y2JceGNmXHgwN1x4MDBceDAyXHg4Mlx4MDFFJyAgIyAnZm9vJworICAgICAgICBkY28gPSB6bGliLmRlY29tcHJlc3NvYmooKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRjby5lb2YpCisgICAgICAgIGRjby5kZWNvbXByZXNzKHhbOi01XSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4Wy01Ol0pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkY28uZW9mKQorICAgICAgICBkY28uZmx1c2goKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGNvLmVvZikKKworICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfZW9mX2luY29tcGxldGVfc3RyZWFtKHNlbGYpOgorICAgICAgICB4ID0gYid4XHg5Y0tceGNiXHhjZlx4MDdceDAwXHgwMlx4ODJceDAxRScgICMgJ2ZvbycKKyAgICAgICAgZGNvID0gemxpYi5kZWNvbXByZXNzb2JqKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorICAgICAgICBkY28uZGVjb21wcmVzcyh4WzotNV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGNvLmVvZikKKyAgICAgICAgZGNvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkY28uZW9mKQorCiAgICAgaWYgaGFzYXR0cih6bGliLmNvbXByZXNzb2JqKCksICJjb3B5Iik6CiAgICAgICAgIGRlZiB0ZXN0X2NvbXByZXNzY29weShzZWxmKToKICAgICAgICAgICAgICMgVGVzdCBjb3B5aW5nIGEgY29tcHJlc3Npb24gb2JqZWN0CkBAIC01MTAsMTAgKzU2Myw4IEBACiAgICAgICAgIGRlY29tcHJlc3MgPSBsYW1iZGEgczogZC5kZWNvbXByZXNzKHMpICsgZC5mbHVzaCgpCiAgICAgICAgIHNlbGYuY2hlY2tfYmlnX2RlY29tcHJlc3NfYnVmZmVyKHNpemUsIGRlY29tcHJlc3MpCiAKLSAgICBAYmlnbWVtdGVzdChzaXplPV80RyArIDEwMCwgbWVtdXNlPTEpCisgICAgQGJpZ21lbXRlc3Qoc2l6ZT1fNEcgKyAxMDAsIG1lbXVzZT0xLCBkcnlfcnVuPUZhbHNlKQogICAgIGRlZiB0ZXN0X2xlbmd0aF9vdmVyZmxvdyhzZWxmLCBzaXplKToKLSAgICAgICAgaWYgc2l6ZSA8IF80RyArIDEwMDoKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIm5vdCBlbm91Z2ggZnJlZSBtZW1vcnksIG5lZWQgYXQgbGVhc3QgNCBHQiIpCiAgICAgICAgIGRhdGEgPSBiJ3gnICogc2l6ZQogICAgICAgICBjID0gemxpYi5jb21wcmVzc29iaigxKQogICAgICAgICBkID0gemxpYi5kZWNvbXByZXNzb2JqKCkKQEAgLTYxNCw2ICs2NjUsNyBAQAogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoCisgICAgICAgIFZlcnNpb25UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1UZXN0Q2FzZSwKICAgICAgICAgQ2hlY2tzdW1CaWdCdWZmZXJUZXN0Q2FzZSwKICAgICAgICAgRXhjZXB0aW9uVGVzdENhc2UsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0YnoyX2JpZ21lbS5iejIgYi9MaWIvdGVzdC90ZXN0YnoyX2JpZ21lbS5iejIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YTQ2MTYuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdGJ6Ml9iaWdtZW0uYnoyCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGhyZWFkZWRfaW1wb3J0X2hhbmdlcnMucHkgYi9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weQppbmRleCBhZGYwM2UzLi41NDg0ZTYwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weQorKysgYi9MaWIvdGVzdC90aHJlYWRlZF9pbXBvcnRfaGFuZ2Vycy5weQpAQCAtMzUsOCArMzUsMTEgQEAKICAgICAgICAgKCJvcy5wYXRoLmFic3BhdGgiLCBvcy5wYXRoLmFic3BhdGgsICgnLicsKSksCiAgICAgICAgIF06CiAKLSAgICB0ID0gV29ya2VyKGZ1bmMsIGFyZ3MpCi0gICAgdC5zdGFydCgpCi0gICAgdC5qb2luKFRJTUVPVVQpCi0gICAgaWYgdC5pc19hbGl2ZSgpOgotICAgICAgICBlcnJvcnMuYXBwZW5kKCIlcyBhcHBlYXJlZCB0byBoYW5nIiAlIG5hbWUpCisgICAgdHJ5OgorICAgICAgICB0ID0gV29ya2VyKGZ1bmMsIGFyZ3MpCisgICAgICAgIHQuc3RhcnQoKQorICAgICAgICB0LmpvaW4oVElNRU9VVCkKKyAgICAgICAgaWYgdC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiJXMgYXBwZWFyZWQgdG8gaGFuZyIgJSBuYW1lKQorICAgIGZpbmFsbHk6CisgICAgICAgIGRlbCB0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQgYi9MaWIvdGVzdC90b2tlbml6ZV90ZXN0cy50eHQKaW5kZXggMDZjODNiMC4uMmM1ZmIxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdG9rZW5pemVfdGVzdHMudHh0CisrKyBiL0xpYi90ZXN0L3Rva2VuaXplX3Rlc3RzLnR4dApAQCAtMTE0LDggKzExNCwxMiBAQAogeSA9IGIiYWJjIiArIEIiQUJDIgogeCA9IGJyJ2FiYycgKyBCcidBQkMnICsgYlInQUJDJyArIEJSJ0FCQycKIHkgPSBiciJhYmMiICsgQnIiQUJDIiArIGJSIkFCQyIgKyBCUiJBQkMiCit4ID0gcmInYWJjJyArIHJCJ0FCQycgKyBSYidBQkMnICsgUkInQUJDJworeSA9IHJiImFiYyIgKyByQiJBQkMiICsgUmIiQUJDIiArIFJCIkFCQyIKIHggPSBicidcXCcgKyBCUidcXCcKK3ggPSByYidcXCcgKyBSQidcXCcKIHggPSBicidcJycgKyAnJworeCA9IHJiJ1wnJyArICcnCiB5ID0gYnInJycKIGZvbyBiYXIgXFwKIGJheicnJyArIEJSJycnCkBAIC0xMjQsNiArMTI4LDEwIEBACiBiYXIgXFwgYmF6CiAiIiIgKyBiUicnJ3NwYW0KICcnJworeSA9IHJCIiIiZm9vCitiYXIgXFwgYmF6CisiIiIgKyBSYicnJ3NwYW0KKycnJwogCiAjIEluZGVudGF0aW9uCiBpZiAxOgpkaWZmIC0tZ2l0IGEvTGliL3RleHR3cmFwLnB5IGIvTGliL3RleHR3cmFwLnB5CmluZGV4IGRmYjQwMDUuLjcwMjRkNGQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXh0d3JhcC5weQorKysgYi9MaWIvdGV4dHdyYXAucHkKQEAgLTUsOSArNSw5IEBACiAjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4KICMgV3JpdHRlbiBieSBHcmVnIFdhcmQgPGd3YXJkQHB5dGhvbi5uZXQ+CiAKLWltcG9ydCBzdHJpbmcsIHJlCitpbXBvcnQgcmUKIAotX19hbGxfXyA9IFsnVGV4dFdyYXBwZXInLCAnd3JhcCcsICdmaWxsJywgJ2RlZGVudCddCitfX2FsbF9fID0gWydUZXh0V3JhcHBlcicsICd3cmFwJywgJ2ZpbGwnLCAnZGVkZW50JywgJ2luZGVudCddCiAKICMgSGFyZGNvZGUgdGhlIHJlY29nbml6ZWQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHRvIHRoZSBVUy1BU0NJSQogIyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMuICBUaGUgbWFpbiByZWFzb24gZm9yIGRvaW5nIHRoaXMgaXMgdGhhdCBpbgpAQCAtMzksOCArMzksMTEgQEAKICAgICAgICAgb2Ygd3JhcHBlZCBvdXRwdXQ7IGFsc28gY291bnRzIHRvd2FyZHMgZWFjaCBsaW5lJ3Mgd2lkdGguCiAgICAgICBleHBhbmRfdGFicyAoZGVmYXVsdDogdHJ1ZSkKICAgICAgICAgRXhwYW5kIHRhYnMgaW4gaW5wdXQgdGV4dCB0byBzcGFjZXMgYmVmb3JlIGZ1cnRoZXIgcHJvY2Vzc2luZy4KLSAgICAgICAgRWFjaCB0YWIgd2lsbCBiZWNvbWUgMSAuLiA4IHNwYWNlcywgZGVwZW5kaW5nIG9uIGl0cyBwb3NpdGlvbiBpbgotICAgICAgICBpdHMgbGluZS4gIElmIGZhbHNlLCBlYWNoIHRhYiBpcyB0cmVhdGVkIGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4KKyAgICAgICAgRWFjaCB0YWIgd2lsbCBiZWNvbWUgMCAuLiAndGFic2l6ZScgc3BhY2VzLCBkZXBlbmRpbmcgb24gaXRzIHBvc2l0aW9uCisgICAgICAgIGluIGl0cyBsaW5lLiAgSWYgZmFsc2UsIGVhY2ggdGFiIGlzIHRyZWF0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLgorICAgICAgdGFic2l6ZSAoZGVmYXVsdDogOCkKKyAgICAgICAgRXhwYW5kIHRhYnMgaW4gaW5wdXQgdGV4dCB0byAwIC4uICd0YWJzaXplJyBzcGFjZXMsIHVubGVzcworICAgICAgICAnZXhwYW5kX3RhYnMnIGlzIGZhbHNlLgogICAgICAgcmVwbGFjZV93aGl0ZXNwYWNlIChkZWZhdWx0OiB0cnVlKQogICAgICAgICBSZXBsYWNlIGFsbCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHRleHQgYnkgc3BhY2VzCiAgICAgICAgIGFmdGVyIHRhYiBleHBhbnNpb24uICBOb3RlIHRoYXQgaWYgZXhwYW5kX3RhYnMgaXMgZmFsc2UgYW5kCkBAIC0xMDAsNyArMTAzLDggQEAKICAgICAgICAgICAgICAgICAgZml4X3NlbnRlbmNlX2VuZGluZ3M9RmFsc2UsCiAgICAgICAgICAgICAgICAgIGJyZWFrX2xvbmdfd29yZHM9VHJ1ZSwKICAgICAgICAgICAgICAgICAgZHJvcF93aGl0ZXNwYWNlPVRydWUsCi0gICAgICAgICAgICAgICAgIGJyZWFrX29uX2h5cGhlbnM9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGJyZWFrX29uX2h5cGhlbnM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgdGFic2l6ZT04KToKICAgICAgICAgc2VsZi53aWR0aCA9IHdpZHRoCiAgICAgICAgIHNlbGYuaW5pdGlhbF9pbmRlbnQgPSBpbml0aWFsX2luZGVudAogICAgICAgICBzZWxmLnN1YnNlcXVlbnRfaW5kZW50ID0gc3Vic2VxdWVudF9pbmRlbnQKQEAgLTExMCw2ICsxMTQsNyBAQAogICAgICAgICBzZWxmLmJyZWFrX2xvbmdfd29yZHMgPSBicmVha19sb25nX3dvcmRzCiAgICAgICAgIHNlbGYuZHJvcF93aGl0ZXNwYWNlID0gZHJvcF93aGl0ZXNwYWNlCiAgICAgICAgIHNlbGYuYnJlYWtfb25faHlwaGVucyA9IGJyZWFrX29uX2h5cGhlbnMKKyAgICAgICAgc2VsZi50YWJzaXplID0gdGFic2l6ZQogCiAKICAgICAjIC0tIFByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTIzLDcgKzEyOCw3IEBACiAgICAgICAgIGJlY29tZXMgIiBmb28gICAgYmFyICBiYXoiLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5leHBhbmRfdGFiczoKLSAgICAgICAgICAgIHRleHQgPSB0ZXh0LmV4cGFuZHRhYnMoKQorICAgICAgICAgICAgdGV4dCA9IHRleHQuZXhwYW5kdGFicyhzZWxmLnRhYnNpemUpCiAgICAgICAgIGlmIHNlbGYucmVwbGFjZV93aGl0ZXNwYWNlOgogICAgICAgICAgICAgdGV4dCA9IHRleHQudHJhbnNsYXRlKHNlbGYudW5pY29kZV93aGl0ZXNwYWNlX3RyYW5zKQogICAgICAgICByZXR1cm4gdGV4dApAQCAtMzgxLDYgKzM4NiwyNSBAQAogICAgICAgICB0ZXh0ID0gcmUuc3ViKHInKD9tKV4nICsgbWFyZ2luLCAnJywgdGV4dCkKICAgICByZXR1cm4gdGV4dAogCisKK2RlZiBpbmRlbnQodGV4dCwgcHJlZml4LCBwcmVkaWNhdGU9Tm9uZSk6CisgICAgIiIiQWRkcyAncHJlZml4JyB0byB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGVkIGxpbmVzIGluICd0ZXh0Jy4KKworICAgIElmICdwcmVkaWNhdGUnIGlzIHByb3ZpZGVkLCAncHJlZml4JyB3aWxsIG9ubHkgYmUgYWRkZWQgdG8gdGhlIGxpbmVzCisgICAgd2hlcmUgJ3ByZWRpY2F0ZShsaW5lKScgaXMgVHJ1ZS4gSWYgJ3ByZWRpY2F0ZScgaXMgbm90IHByb3ZpZGVkLAorICAgIGl0IHdpbGwgZGVmYXVsdCB0byBhZGRpbmcgJ3ByZWZpeCcgdG8gYWxsIG5vbi1lbXB0eSBsaW5lcyB0aGF0IGRvIG5vdAorICAgIGNvbnNpc3Qgc29sZWx5IG9mIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KKyAgICAiIiIKKyAgICBpZiBwcmVkaWNhdGUgaXMgTm9uZToKKyAgICAgICAgZGVmIHByZWRpY2F0ZShsaW5lKToKKyAgICAgICAgICAgIHJldHVybiBsaW5lLnN0cmlwKCkKKworICAgIGRlZiBwcmVmaXhlZF9saW5lcygpOgorICAgICAgICBmb3IgbGluZSBpbiB0ZXh0LnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgICAgICB5aWVsZCAocHJlZml4ICsgbGluZSBpZiBwcmVkaWNhdGUobGluZSkgZWxzZSBsaW5lKQorICAgIHJldHVybiAnJy5qb2luKHByZWZpeGVkX2xpbmVzKCkpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICAjcHJpbnQgZGVkZW50KCJcdGZvb1xuXHRiYXIiKQogICAgICNwcmludCBkZWRlbnQoIiAgXHRoZWxsbyB0aGVyZVxuICBcdCAgaG93IGFyZSB5b3U/IikKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDU4ZmZhN2UuLjZjMzRkNDkgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMyw3ICszLDExIEBACiBpbXBvcnQgc3lzIGFzIF9zeXMKIGltcG9ydCBfdGhyZWFkCiAKLWZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZSwgc2xlZXAgYXMgX3NsZWVwCitmcm9tIHRpbWUgaW1wb3J0IHNsZWVwIGFzIF9zbGVlcAordHJ5OgorICAgIGZyb20gdGltZSBpbXBvcnQgbW9ub3RvbmljIGFzIF90aW1lCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0aW1lIGltcG9ydCB0aW1lIGFzIF90aW1lCiBmcm9tIHRyYWNlYmFjayBpbXBvcnQgZm9ybWF0X2V4YyBhcyBfZm9ybWF0X2V4YwogZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldAogCkBAIC0xOSwxMiArMjMsMTIgQEAKIAogX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAogICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorICAgICAgICAgICAnVGltZXInLCAnVGhyZWFkRXJyb3InLCAnc2V0cHJvZmlsZScsICdzZXR0cmFjZScsICdsb2NhbCcsICdzdGFja19zaXplJ10KIAogIyBSZW5hbWUgc29tZSBzdHVmZiBzbyAiZnJvbSB0aHJlYWRpbmcgaW1wb3J0ICoiIGlzIHNhZmUKIF9zdGFydF9uZXdfdGhyZWFkID0gX3RocmVhZC5zdGFydF9uZXdfdGhyZWFkCiBfYWxsb2NhdGVfbG9jayA9IF90aHJlYWQuYWxsb2NhdGVfbG9jawotX2dldF9pZGVudCA9IF90aHJlYWQuZ2V0X2lkZW50CitnZXRfaWRlbnQgPSBfdGhyZWFkLmdldF9pZGVudAogVGhyZWFkRXJyb3IgPSBfdGhyZWFkLmVycm9yCiB0cnk6CiAgICAgX0NSTG9jayA9IF90aHJlYWQuUkxvY2sKQEAgLTM0LDQwICszOCw2IEBACiBkZWwgX3RocmVhZAogCiAKLSMgRGVidWcgc3VwcG9ydCAoYWRhcHRlZCBmcm9tIGlob29rcy5weSkuCi0KLV9WRVJCT1NFID0gRmFsc2UKLQotaWYgX19kZWJ1Z19fOgotCi0gICAgY2xhc3MgX1ZlcmJvc2Uob2JqZWN0KToKLQotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgICAgIGlmIHZlcmJvc2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB2ZXJib3NlID0gX1ZFUkJPU0UKLSAgICAgICAgICAgIHNlbGYuX3ZlcmJvc2UgPSB2ZXJib3NlCi0KLSAgICAgICAgZGVmIF9ub3RlKHNlbGYsIGZvcm1hdCwgKmFyZ3MpOgotICAgICAgICAgICAgaWYgc2VsZi5fdmVyYm9zZToKLSAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQgJSBhcmdzCi0gICAgICAgICAgICAgICAgIyBJc3N1ZSAjNDE4ODogY2FsbGluZyBjdXJyZW50X3RocmVhZCgpIGNhbiBpbmN1ciBhbiBpbmZpbml0ZQotICAgICAgICAgICAgICAgICMgcmVjdXJzaW9uIGlmIGl0IGhhcyB0byBjcmVhdGUgYSBEdW1teVRocmVhZCBvbiB0aGUgZmx5LgotICAgICAgICAgICAgICAgIGlkZW50ID0gX2dldF9pZGVudCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gX2FjdGl2ZVtpZGVudF0ubmFtZQotICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICI8T1MgdGhyZWFkICVkPiIgJSBpZGVudAotICAgICAgICAgICAgICAgIGZvcm1hdCA9ICIlczogJXNcbiIgJSAobmFtZSwgZm9ybWF0KQotICAgICAgICAgICAgICAgIF9zeXMuc3RkZXJyLndyaXRlKGZvcm1hdCkKLQotZWxzZToKLSAgICAjIERpc2FibGUgdGhpcyB3aGVuIHVzaW5nICJweXRob24gLU8iCi0gICAgY2xhc3MgX1ZlcmJvc2Uob2JqZWN0KToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9Tm9uZSk6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGRlZiBfbm90ZShzZWxmLCAqYXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KICMgU3VwcG9ydCBmb3IgcHJvZmlsZSBhbmQgdHJhY2UgaG9va3MKIAogX3Byb2ZpbGVfaG9vayA9IE5vbmUKQEAgLTg1LDE3ICs1NSwxNCBAQAogCiBMb2NrID0gX2FsbG9jYXRlX2xvY2sKIAotZGVmIFJMb2NrKHZlcmJvc2U9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICBpZiB2ZXJib3NlIGlzIE5vbmU6Ci0gICAgICAgIHZlcmJvc2UgPSBfVkVSQk9TRQotICAgIGlmIChfX2RlYnVnX18gYW5kIHZlcmJvc2UpIG9yIF9DUkxvY2sgaXMgTm9uZToKLSAgICAgICAgcmV0dXJuIF9QeVJMb2NrKHZlcmJvc2UsICphcmdzLCAqKmt3YXJncykKK2RlZiBSTG9jaygqYXJncywgKiprd2FyZ3MpOgorICAgIGlmIF9DUkxvY2sgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIF9QeVJMb2NrKCphcmdzLCAqKmt3YXJncykKICAgICByZXR1cm4gX0NSTG9jaygqYXJncywgKiprd2FyZ3MpCiAKLWNsYXNzIF9STG9jayhfVmVyYm9zZSk6CitjbGFzcyBfUkxvY2s6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2Jsb2NrID0gX2FsbG9jYXRlX2xvY2soKQogICAgICAgICBzZWxmLl9vd25lciA9IE5vbmUKICAgICAgICAgc2VsZi5fY291bnQgPSAwCkBAIC0xMTAsMzcgKzc3LDI1IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG93bmVyLCBzZWxmLl9jb3VudCkKIAogICAgIGRlZiBhY3F1aXJlKHNlbGYsIGJsb2NraW5nPVRydWUsIHRpbWVvdXQ9LTEpOgotICAgICAgICBtZSA9IF9nZXRfaWRlbnQoKQorICAgICAgICBtZSA9IGdldF9pZGVudCgpCiAgICAgICAgIGlmIHNlbGYuX293bmVyID09IG1lOgogICAgICAgICAgICAgc2VsZi5fY291bnQgPSBzZWxmLl9jb3VudCArIDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogcmVjdXJzaXZlIHN1Y2Nlc3MiLCBzZWxmLCBibG9ja2luZykKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIHJjID0gc2VsZi5fYmxvY2suYWNxdWlyZShibG9ja2luZywgdGltZW91dCkKICAgICAgICAgaWYgcmM6CiAgICAgICAgICAgICBzZWxmLl9vd25lciA9IG1lCiAgICAgICAgICAgICBzZWxmLl9jb3VudCA9IDEKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5hY3F1aXJlKCVzKTogaW5pdGlhbCBzdWNjZXNzIiwgc2VsZiwgYmxvY2tpbmcpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuYWNxdWlyZSglcyk6IGZhaWx1cmUiLCBzZWxmLCBibG9ja2luZykKICAgICAgICAgcmV0dXJuIHJjCiAKICAgICBfX2VudGVyX18gPSBhY3F1aXJlCiAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fb3duZXIgIT0gX2dldF9pZGVudCgpOgorICAgICAgICBpZiBzZWxmLl9vd25lciAhPSBnZXRfaWRlbnQoKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpCiAgICAgICAgIHNlbGYuX2NvdW50ID0gY291bnQgPSBzZWxmLl9jb3VudCAtIDEKICAgICAgICAgaWYgbm90IGNvdW50OgogICAgICAgICAgICAgc2VsZi5fb3duZXIgPSBOb25lCiAgICAgICAgICAgICBzZWxmLl9ibG9jay5yZWxlYXNlKCkKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5yZWxlYXNlKCk6IGZpbmFsIHJlbGVhc2UiLCBzZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLnJlbGVhc2UoKTogbm9uLWZpbmFsIHJlbGVhc2UiLCBzZWxmKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHQsIHYsIHRiKToKICAgICAgICAgc2VsZi5yZWxlYXNlKCkKQEAgLTE1MCwxMiArMTA1LDEwIEBACiAgICAgZGVmIF9hY3F1aXJlX3Jlc3RvcmUoc2VsZiwgc3RhdGUpOgogICAgICAgICBzZWxmLl9ibG9jay5hY3F1aXJlKCkKICAgICAgICAgc2VsZi5fY291bnQsIHNlbGYuX293bmVyID0gc3RhdGUKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2FjcXVpcmVfcmVzdG9yZSgpIiwgc2VsZikKIAogICAgIGRlZiBfcmVsZWFzZV9zYXZlKHNlbGYpOgotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fcmVsZWFzZV9zYXZlKCkiLCBzZWxmKQorICAgICAgICBpZiBzZWxmLl9jb3VudCA9PSAwOgorICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NrIikKICAgICAgICAgY291bnQgPSBzZWxmLl9jb3VudAogICAgICAgICBzZWxmLl9jb3VudCA9IDAKICAgICAgICAgb3duZXIgPSBzZWxmLl9vd25lcgpAQCAtMTY0LDE4ICsxMTcsMTQgQEAKICAgICAgICAgcmV0dXJuIChjb3VudCwgb3duZXIpCiAKICAgICBkZWYgX2lzX293bmVkKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fb3duZXIgPT0gX2dldF9pZGVudCgpCisgICAgICAgIHJldHVybiBzZWxmLl9vd25lciA9PSBnZXRfaWRlbnQoKQogCiBfUHlSTG9jayA9IF9STG9jawogCiAKLWRlZiBDb25kaXRpb24oKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX0NvbmRpdGlvbigqYXJncywgKiprd2FyZ3MpCitjbGFzcyBDb25kaXRpb246CiAKLWNsYXNzIF9Db25kaXRpb24oX1ZlcmJvc2UpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2s9Tm9uZSwgdmVyYm9zZT1Ob25lKToKLSAgICAgICAgX1ZlcmJvc2UuX19pbml0X18oc2VsZiwgdmVyYm9zZSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9jaz1Ob25lKToKICAgICAgICAgaWYgbG9jayBpcyBOb25lOgogICAgICAgICAgICAgbG9jayA9IFJMb2NrKCkKICAgICAgICAgc2VsZi5fbG9jayA9IGxvY2sKQEAgLTIzNCwyMyArMTgzLDE2IEBACiAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgd2FpdGVyLmFjcXVpcmUoKQogICAgICAgICAgICAgICAgIGdvdGl0ID0gVHJ1ZQotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdCgpOiBnb3QgaXQiLCBzZWxmKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID4gMDoKICAgICAgICAgICAgICAgICAgICAgZ290aXQgPSB3YWl0ZXIuYWNxdWlyZShUcnVlLCB0aW1lb3V0KQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGdvdGl0ID0gd2FpdGVyLmFjcXVpcmUoRmFsc2UpCiAgICAgICAgICAgICAgICAgaWYgbm90IGdvdGl0OgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCVzKTogdGltZWQgb3V0Iiwgc2VsZiwgdGltZW91dCkKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2FpdGVycy5yZW1vdmUod2FpdGVyKQogICAgICAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0KCVzKTogZ290IGl0Iiwgc2VsZiwgdGltZW91dCkKICAgICAgICAgICAgIHJldHVybiBnb3RpdAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5fYWNxdWlyZV9yZXN0b3JlKHNhdmVkX3N0YXRlKQpAQCAtMjY2LDE5ICsyMDgsOSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHdhaXR0aW1lID0gZW5kdGltZSAtIF90aW1lKCkKICAgICAgICAgICAgICAgICAgICAgaWYgd2FpdHRpbWUgPD0gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy53YWl0X2ZvciglciwgJXIpOiBUaW1lZCBvdXQuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMud2FpdF9mb3IoJXIsICVyKTogV2FpdGluZyB3aXRoIHRpbWVvdXQ9JXMuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dCwgd2FpdHRpbWUpCiAgICAgICAgICAgICBzZWxmLndhaXQod2FpdHRpbWUpCiAgICAgICAgICAgICByZXN1bHQgPSBwcmVkaWNhdGUoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLndhaXRfZm9yKCVyLCAlcik6IFN1Y2Nlc3MuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHByZWRpY2F0ZSwgdGltZW91dCkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIG5vdGlmeShzZWxmLCBuPTEpOgpAQCAtMjg3LDExICsyMTksNyBAQAogICAgICAgICBfX3dhaXRlcnMgPSBzZWxmLl93YWl0ZXJzCiAgICAgICAgIHdhaXRlcnMgPSBfX3dhaXRlcnNbOm5dCiAgICAgICAgIGlmIG5vdCB3YWl0ZXJzOgotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLm5vdGlmeSgpOiBubyB3YWl0ZXJzIiwgc2VsZikKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl9ub3RlKCIlcy5ub3RpZnkoKTogbm90aWZ5aW5nICVkIHdhaXRlciVzIiwgc2VsZiwgbiwKLSAgICAgICAgICAgICAgICAgICBuIT0xIGFuZCAicyIgb3IgIiIpCiAgICAgICAgIGZvciB3YWl0ZXIgaW4gd2FpdGVyczoKICAgICAgICAgICAgIHdhaXRlci5yZWxlYXNlKCkKICAgICAgICAgICAgIHRyeToKQEAgLTMwNSwxNyArMjMzLDEzIEBACiAgICAgbm90aWZ5QWxsID0gbm90aWZ5X2FsbAogCiAKLWRlZiBTZW1hcGhvcmUoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX1NlbWFwaG9yZSgqYXJncywgKiprd2FyZ3MpCi0KLWNsYXNzIF9TZW1hcGhvcmUoX1ZlcmJvc2UpOgorY2xhc3MgU2VtYXBob3JlOgogCiAgICAgIyBBZnRlciBUaW0gUGV0ZXJzJyBzZW1hcGhvcmUgY2xhc3MsIGJ1dCBub3QgcXVpdGUgdGhlIHNhbWUgKG5vIG1heGltdW0pCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSwgdmVyYm9zZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9MSk6CiAgICAgICAgIGlmIHZhbHVlIDwgMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNlbWFwaG9yZSBpbml0aWFsIHZhbHVlIG11c3QgYmUgPj0gMCIpCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCiAKQEAgLTMyOCw5ICsyNTIsNiBAQAogICAgICAgICB3aGlsZSBzZWxmLl92YWx1ZSA9PSAwOgogICAgICAgICAgICAgaWYgbm90IGJsb2NraW5nOgogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuYWNxdWlyZSglcyk6IGJsb2NrZWQgd2FpdGluZywgdmFsdWU9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgYmxvY2tpbmcsIHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgaWYgdGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBpZiBlbmR0aW1lIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGVuZHRpbWUgPSBfdGltZSgpICsgdGltZW91dApAQCAtMzQxLDkgKzI2Miw2IEBACiAgICAgICAgICAgICBzZWxmLl9jb25kLndhaXQodGltZW91dCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX3ZhbHVlID0gc2VsZi5fdmFsdWUgLSAxCi0gICAgICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuYWNxdWlyZTogc3VjY2VzcywgdmFsdWU9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgc2VsZi5fdmFsdWUpCiAgICAgICAgICAgICByYyA9IFRydWUKICAgICAgICAgc2VsZi5fY29uZC5yZWxlYXNlKCkKICAgICAgICAgcmV0dXJuIHJjCkBAIC0zNTMsOSArMjcxLDYgQEAKICAgICBkZWYgcmVsZWFzZShzZWxmKToKICAgICAgICAgc2VsZi5fY29uZC5hY3F1aXJlKCkKICAgICAgICAgc2VsZi5fdmFsdWUgPSBzZWxmLl92YWx1ZSArIDEKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMucmVsZWFzZTogc3VjY2VzcywgdmFsdWU9JXMiLAotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLl92YWx1ZSkKICAgICAgICAgc2VsZi5fY29uZC5ub3RpZnkoKQogICAgICAgICBzZWxmLl9jb25kLnJlbGVhc2UoKQogCkBAIC0zNjMsMzAgKzI3OCwyMyBAQAogICAgICAgICBzZWxmLnJlbGVhc2UoKQogCiAKLWRlZiBCb3VuZGVkU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIF9Cb3VuZGVkU2VtYXBob3JlKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX0JvdW5kZWRTZW1hcGhvcmUoX1NlbWFwaG9yZSk6CitjbGFzcyBCb3VuZGVkU2VtYXBob3JlKFNlbWFwaG9yZSk6CiAgICAgIiIiU2VtYXBob3JlIHRoYXQgY2hlY2tzIHRoYXQgIyByZWxlYXNlcyBpcyA8PSAjIGFjcXVpcmVzIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTEsIHZlcmJvc2U9Tm9uZSk6Ci0gICAgICAgIF9TZW1hcGhvcmUuX19pbml0X18oc2VsZiwgdmFsdWUsIHZlcmJvc2UpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlPTEpOgorICAgICAgICBTZW1hcGhvcmUuX19pbml0X18oc2VsZiwgdmFsdWUpCiAgICAgICAgIHNlbGYuX2luaXRpYWxfdmFsdWUgPSB2YWx1ZQogCiAgICAgZGVmIHJlbGVhc2Uoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3ZhbHVlID49IHNlbGYuX2luaXRpYWxfdmFsdWU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTZW1hcGhvcmUgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMiKQotICAgICAgICByZXR1cm4gX1NlbWFwaG9yZS5yZWxlYXNlKHNlbGYpCisgICAgICAgIHJldHVybiBTZW1hcGhvcmUucmVsZWFzZShzZWxmKQogCiAKLWRlZiBFdmVudCgqYXJncywgKiprd2FyZ3MpOgotICAgIHJldHVybiBfRXZlbnQoKmFyZ3MsICoqa3dhcmdzKQotCi1jbGFzcyBfRXZlbnQoX1ZlcmJvc2UpOgorY2xhc3MgRXZlbnQ6CiAKICAgICAjIEFmdGVyIFRpbSBQZXRlcnMnIGV2ZW50IGNsYXNzICh3aXRob3V0IGlzX3Bvc3RlZCgpKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZlcmJvc2U9Tm9uZSk6Ci0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9jb25kID0gQ29uZGl0aW9uKExvY2soKSkKICAgICAgICAgc2VsZi5fZmxhZyA9IEZhbHNlCiAKQEAgLTQzNiwxMyArMzQ0LDEzIEBACiAjIHNpbmNlIHRoZSBwcmV2aW91cyBjeWNsZS4gIEluIGFkZGl0aW9uLCBhICdyZXNldHRpbmcnIHN0YXRlIGV4aXN0cyB3aGljaCBpcwogIyBzaW1pbGFyIHRvICdkcmFpbmluZycgZXhjZXB0IHRoYXQgdGhyZWFkcyBsZWF2ZSB3aXRoIGEgQnJva2VuQmFycmllckVycm9yLAogIyBhbmQgYSAnYnJva2VuJyBzdGF0ZSBpbiB3aGljaCBhbGwgdGhyZWFkcyBnZXQgdGhlIGV4Y2VwdGlvbi4KLWNsYXNzIEJhcnJpZXIoX1ZlcmJvc2UpOgorY2xhc3MgQmFycmllcjoKICAgICAiIiIKICAgICBCYXJyaWVyLiAgVXNlZnVsIGZvciBzeW5jaHJvbml6aW5nIGEgZml4ZWQgbnVtYmVyIG9mIHRocmVhZHMKICAgICBhdCBrbm93biBzeW5jaHJvbml6YXRpb24gcG9pbnRzLiAgVGhyZWFkcyBibG9jayBvbiAnd2FpdCgpJyBhbmQgYXJlCiAgICAgc2ltdWx0YW5lb3VzbHkgb25jZSB0aGV5IGhhdmUgYWxsIG1hZGUgdGhhdCBjYWxsLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lLCB2ZXJib3NlPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJ0aWVzLCBhY3Rpb249Tm9uZSwgdGltZW91dD1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIGJhcnJpZXIsIGluaXRpYWxpc2VkIHRvICdwYXJ0aWVzJyB0aHJlYWRzLgogICAgICAgICAnYWN0aW9uJyBpcyBhIGNhbGxhYmxlIHdoaWNoLCB3aGVuIHN1cHBsaWVkLCB3aWxsIGJlIGNhbGxlZApAQCAtNDUxLDcgKzM1OSw2IEBACiAgICAgICAgIElmIGEgJ3RpbWVvdXQnIGlzIHByb3ZpZGVkLCBpdCBpcyB1c2VzIGFzIHRoZSBkZWZhdWx0IGZvcgogICAgICAgICBhbGwgc3Vic2VxdWVudCAnd2FpdCgpJyBjYWxscy4KICAgICAgICAgIiIiCi0gICAgICAgIF9WZXJib3NlLl9faW5pdF9fKHNlbGYsIHZlcmJvc2UpCiAgICAgICAgIHNlbGYuX2NvbmQgPSBDb25kaXRpb24oTG9jaygpKQogICAgICAgICBzZWxmLl9hY3Rpb24gPSBhY3Rpb24KICAgICAgICAgc2VsZi5fdGltZW91dCA9IHRpbWVvdXQKQEAgLTYxMiw3ICs1MTksNyBAQAogCiAjIE1haW4gY2xhc3MgZm9yIHRocmVhZHMKIAotY2xhc3MgVGhyZWFkKF9WZXJib3NlKToKK2NsYXNzIFRocmVhZDoKIAogICAgIF9faW5pdGlhbGl6ZWQgPSBGYWxzZQogICAgICMgTmVlZCB0byBzdG9yZSBhIHJlZmVyZW5jZSB0byBzeXMuZXhjX2luZm8gZm9yIHByaW50aW5nCkBAIC02MjUsMTYgKzUzMiwxOCBAQAogICAgICNYWFggX19leGNfY2xlYXIgPSBfc3lzLmV4Y19jbGVhcgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyb3VwPU5vbmUsIHRhcmdldD1Ob25lLCBuYW1lPU5vbmUsCi0gICAgICAgICAgICAgICAgIGFyZ3M9KCksIGt3YXJncz1Ob25lLCB2ZXJib3NlPU5vbmUpOgorICAgICAgICAgICAgICAgICBhcmdzPSgpLCBrd2FyZ3M9Tm9uZSwgKiwgZGFlbW9uPU5vbmUpOgogICAgICAgICBhc3NlcnQgZ3JvdXAgaXMgTm9uZSwgImdyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93IgotICAgICAgICBfVmVyYm9zZS5fX2luaXRfXyhzZWxmLCB2ZXJib3NlKQogICAgICAgICBpZiBrd2FyZ3MgaXMgTm9uZToKICAgICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgIHNlbGYuX3RhcmdldCA9IHRhcmdldAogICAgICAgICBzZWxmLl9uYW1lID0gc3RyKG5hbWUgb3IgX25ld25hbWUoKSkKICAgICAgICAgc2VsZi5fYXJncyA9IGFyZ3MKICAgICAgICAgc2VsZi5fa3dhcmdzID0ga3dhcmdzCi0gICAgICAgIHNlbGYuX2RhZW1vbmljID0gc2VsZi5fc2V0X2RhZW1vbigpCisgICAgICAgIGlmIGRhZW1vbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2RhZW1vbmljID0gZGFlbW9uCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9kYWVtb25pYyA9IGN1cnJlbnRfdGhyZWFkKCkuZGFlbW9uCiAgICAgICAgIHNlbGYuX2lkZW50ID0gTm9uZQogICAgICAgICBzZWxmLl9zdGFydGVkID0gRXZlbnQoKQogICAgICAgICBzZWxmLl9zdG9wcGVkID0gRmFsc2UKQEAgLTY1MiwxMCArNTYxLDYgQEAKICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLl9faW5pdF9fKCkKICAgICAgICAgc2VsZi5fc3RhcnRlZC5fcmVzZXRfaW50ZXJuYWxfbG9ja3MoKQogCi0gICAgZGVmIF9zZXRfZGFlbW9uKHNlbGYpOgotICAgICAgICAjIE92ZXJyaWRkZW4gaW4gX01haW5UaHJlYWQgYW5kIF9EdW1teVRocmVhZAotICAgICAgICByZXR1cm4gY3VycmVudF90aHJlYWQoKS5kYWVtb24KLQogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgYXNzZXJ0IHNlbGYuX2luaXRpYWxpemVkLCAiVGhyZWFkLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQiCiAgICAgICAgIHN0YXR1cyA9ICJpbml0aWFsIgpAQCAtNjc1LDggKzU4MCw2IEBACiAKICAgICAgICAgaWYgc2VsZi5fc3RhcnRlZC5pc19zZXQoKToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGhyZWFkcyBjYW4gb25seSBiZSBzdGFydGVkIG9uY2UiKQotICAgICAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5zdGFydCgpOiBzdGFydGluZyB0aHJlYWQiLCBzZWxmKQogICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgIF9saW1ib1tzZWxmXSA9IHNlbGYKICAgICAgICAgdHJ5OgpAQCAtNzE3LDcgKzYyMCw3IEBACiAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIF9zZXRfaWRlbnQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2lkZW50ID0gX2dldF9pZGVudCgpCisgICAgICAgIHNlbGYuX2lkZW50ID0gZ2V0X2lkZW50KCkKIAogICAgIGRlZiBfYm9vdHN0cmFwX2lubmVyKHNlbGYpOgogICAgICAgICB0cnk6CkBAIC03MjYsMjQgKzYyOSwxNyBAQAogICAgICAgICAgICAgd2l0aCBfYWN0aXZlX2xpbWJvX2xvY2s6CiAgICAgICAgICAgICAgICAgX2FjdGl2ZVtzZWxmLl9pZGVudF0gPSBzZWxmCiAgICAgICAgICAgICAgICAgZGVsIF9saW1ib1tzZWxmXQotICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogdGhyZWFkIHN0YXJ0ZWQiLCBzZWxmKQogCiAgICAgICAgICAgICBpZiBfdHJhY2VfaG9vazoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5fYm9vdHN0cmFwKCk6IHJlZ2lzdGVyaW5nIHRyYWNlIGhvb2siLCBzZWxmKQogICAgICAgICAgICAgICAgIF9zeXMuc2V0dHJhY2UoX3RyYWNlX2hvb2spCiAgICAgICAgICAgICBpZiBfcHJvZmlsZV9ob29rOgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLl9ib290c3RyYXAoKTogcmVnaXN0ZXJpbmcgcHJvZmlsZSBob29rIiwgc2VsZikKICAgICAgICAgICAgICAgICBfc3lzLnNldHByb2ZpbGUoX3Byb2ZpbGVfaG9vaykKIAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYucnVuKCkKICAgICAgICAgICAgIGV4Y2VwdCBTeXN0ZW1FeGl0OgotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiByYWlzZWQgU3lzdGVtRXhpdCIsIHNlbGYpCisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiB1bmhhbmRsZWQgZXhjZXB0aW9uIiwgc2VsZikKICAgICAgICAgICAgICAgICAjIElmIHN5cy5zdGRlcnIgaXMgbm8gbW9yZSAobW9zdCBsaWtlbHkgZnJvbSBpbnRlcnByZXRlcgogICAgICAgICAgICAgICAgICMgc2h1dGRvd24pIHVzZSBzZWxmLl9zdGRlcnIuICBPdGhlcndpc2Ugc3RpbGwgdXNlIHN5cyAoYXMgaW4KICAgICAgICAgICAgICAgICAjIF9zeXMpIGluIGNhc2Ugc3lzLnN0ZGVyciB3YXMgcmVkZWZpbmVkIHNpbmNlIHRoZSBjcmVhdGlvbiBvZgpAQCAtNzc0LDkgKzY3MCw2IEBACiAgICAgICAgICAgICAgICAgICAgICMgaG9nOyBkZWxldGluZyBldmVyeXRoaW5nIGVsc2UgaXMganVzdCBmb3IgdGhvcm91Z2huZXNzCiAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuX2Jvb3RzdHJhcCgpOiBub3JtYWwgcmV0dXJuIiwgc2VsZikKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgIyBQcmV2ZW50IGEgcmFjZSBpbgogICAgICAgICAgICAgICAgICMgdGVzdF90aHJlYWRpbmcudGVzdF9ub19yZWZjeWNsZV90aHJvdWdoX3RhcmdldCB3aGVuCkBAIC03OTAsNyArNjgzLDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICMgV2UgZG9uJ3QgY2FsbCBzZWxmLl9kZWxldGUoKSBiZWNhdXNlIGl0IGFsc28KICAgICAgICAgICAgICAgICAgICAgIyBncmFicyBfYWN0aXZlX2xpbWJvX2xvY2suCi0gICAgICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgICAgICAgICAgICAgZGVsIF9hY3RpdmVbZ2V0X2lkZW50KCldCiAgICAgICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAKQEAgLTgyNiw3ICs3MTksNyBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggX2FjdGl2ZV9saW1ib19sb2NrOgotICAgICAgICAgICAgICAgIGRlbCBfYWN0aXZlW19nZXRfaWRlbnQoKV0KKyAgICAgICAgICAgICAgICBkZWwgX2FjdGl2ZVtnZXRfaWRlbnQoKV0KICAgICAgICAgICAgICAgICAjIFRoZXJlIG11c3Qgbm90IGJlIGFueSBweXRob24gY29kZSBiZXR3ZWVuIHRoZSBwcmV2aW91cyBsaW5lCiAgICAgICAgICAgICAgICAgIyBhbmQgYWZ0ZXIgdGhlIGxvY2sgaXMgcmVsZWFzZWQuICBPdGhlcndpc2UgYSB0cmFjaW5nIGZ1bmN0aW9uCiAgICAgICAgICAgICAgICAgIyBjb3VsZCB0cnkgdG8gYWNxdWlyZSB0aGUgbG9jayBhZ2FpbiBpbiB0aGUgc2FtZSB0aHJlYWQsIChpbgpAQCAtODQzLDI5ICs3MzYsMTggQEAKICAgICAgICAgaWYgc2VsZiBpcyBjdXJyZW50X3RocmVhZCgpOgogICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjYW5ub3Qgam9pbiBjdXJyZW50IHRocmVhZCIpCiAKLSAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX3N0b3BwZWQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB3YWl0aW5nIHVudGlsIHRocmVhZCBzdG9wcyIsIHNlbGYpCi0KICAgICAgICAgc2VsZi5fYmxvY2suYWNxdWlyZSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcHBlZDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYmxvY2sud2FpdCgpCi0gICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlcy5qb2luKCk6IHRocmVhZCBzdG9wcGVkIiwgc2VsZikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGVhZGxpbmUgPSBfdGltZSgpICsgdGltZW91dAogICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wcGVkOgogICAgICAgICAgICAgICAgICAgICBkZWxheSA9IGRlYWRsaW5lIC0gX3RpbWUoKQogICAgICAgICAgICAgICAgICAgICBpZiBkZWxheSA8PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzLmpvaW4oKTogdGltZWQgb3V0Iiwgc2VsZikKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Jsb2NrLndhaXQoZGVsYXkpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaWYgX19kZWJ1Z19fOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm90ZSgiJXMuam9pbigpOiB0aHJlYWQgc3RvcHBlZCIsIHNlbGYpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzZWxmLl9ibG9jay5yZWxlYXNlKCkKIApAQCAtOTE3LDEwICs3OTksNyBAQAogCiAjIFRoZSB0aW1lciBjbGFzcyB3YXMgY29udHJpYnV0ZWQgYnkgSXRhbWFyIFNodHVsbC1UcmF1cmluZwogCi1kZWYgVGltZXIoKmFyZ3MsICoqa3dhcmdzKToKLSAgICByZXR1cm4gX1RpbWVyKCphcmdzLCAqKmt3YXJncykKLQotY2xhc3MgX1RpbWVyKFRocmVhZCk6CitjbGFzcyBUaW1lcihUaHJlYWQpOgogICAgICIiIkNhbGwgYSBmdW5jdGlvbiBhZnRlciBhIHNwZWNpZmllZCBudW1iZXIgb2Ygc2Vjb25kczoKIAogICAgIHQgPSBUaW1lcigzMC4wLCBmLCBhcmdzPVtdLCBrd2FyZ3M9e30pCkBAIC05NTIsMjYgKzgzMSwxOCBAQAogY2xhc3MgX01haW5UaHJlYWQoVGhyZWFkKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9Ik1haW5UaHJlYWQiKQorICAgICAgICBUaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iTWFpblRocmVhZCIsIGRhZW1vbj1GYWxzZSkKICAgICAgICAgc2VsZi5fc3RhcnRlZC5zZXQoKQogICAgICAgICBzZWxmLl9zZXRfaWRlbnQoKQogICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgIF9hY3RpdmVbc2VsZi5faWRlbnRdID0gc2VsZgogCi0gICAgZGVmIF9zZXRfZGFlbW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gRmFsc2UKLQogICAgIGRlZiBfZXhpdGZ1bmMoc2VsZik6CiAgICAgICAgIHNlbGYuX3N0b3AoKQogICAgICAgICB0ID0gX3BpY2tTb21lTm9uRGFlbW9uVGhyZWFkKCkKLSAgICAgICAgaWYgdDoKLSAgICAgICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgICAgICBzZWxmLl9ub3RlKCIlczogd2FpdGluZyBmb3Igb3RoZXIgdGhyZWFkcyIsIHNlbGYpCiAgICAgICAgIHdoaWxlIHQ6CiAgICAgICAgICAgICB0LmpvaW4oKQogICAgICAgICAgICAgdCA9IF9waWNrU29tZU5vbkRhZW1vblRocmVhZCgpCi0gICAgICAgIGlmIF9fZGVidWdfXzoKLSAgICAgICAgICAgIHNlbGYuX25vdGUoIiVzOiBleGl0aW5nIiwgc2VsZikKICAgICAgICAgc2VsZi5fZGVsZXRlKCkKIAogZGVmIF9waWNrU29tZU5vbkRhZW1vblRocmVhZCgpOgpAQCAtOTkyLDcgKzg2Myw3IEBACiBjbGFzcyBfRHVtbXlUaHJlYWQoVGhyZWFkKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgVGhyZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9X25ld25hbWUoIkR1bW15LSVkIikpCisgICAgICAgIFRocmVhZC5fX2luaXRfXyhzZWxmLCBuYW1lPV9uZXduYW1lKCJEdW1teS0lZCIpLCBkYWVtb249VHJ1ZSkKIAogICAgICAgICAjIFRocmVhZC5fYmxvY2sgY29uc3VtZXMgYW4gT1MtbGV2ZWwgbG9ja2luZyBwcmltaXRpdmUsIHdoaWNoCiAgICAgICAgICMgY2FuIG5ldmVyIGJlIHVzZWQgYnkgYSBfRHVtbXlUaHJlYWQuICBTaW5jZSBhIF9EdW1teVRocmVhZApAQCAtMTAwNCw5ICs4NzUsNiBAQAogICAgICAgICB3aXRoIF9hY3RpdmVfbGltYm9fbG9jazoKICAgICAgICAgICAgIF9hY3RpdmVbc2VsZi5faWRlbnRdID0gc2VsZgogCi0gICAgZGVmIF9zZXRfZGFlbW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCiAgICAgZGVmIF9zdG9wKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAgLTEwMTgsOSArODg2LDggQEAKIAogZGVmIGN1cnJlbnRfdGhyZWFkKCk6CiAgICAgdHJ5OgotICAgICAgICByZXR1cm4gX2FjdGl2ZVtfZ2V0X2lkZW50KCldCisgICAgICAgIHJldHVybiBfYWN0aXZlW2dldF9pZGVudCgpXQogICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgIyNwcmludCAiY3VycmVudF90aHJlYWQoKTogbm8gY3VycmVudCB0aHJlYWQgZm9yIiwgX2dldF9pZGVudCgpCiAgICAgICAgIHJldHVybiBfRHVtbXlUaHJlYWQoKQogCiBjdXJyZW50VGhyZWFkID0gY3VycmVudF90aHJlYWQKQEAgLTEwNzcsNyArOTQ0LDcgQEAKICAgICAgICAgICAgIGlmIHRocmVhZCBpcyBjdXJyZW50OgogICAgICAgICAgICAgICAgICMgVGhlcmUgaXMgb25seSBvbmUgYWN0aXZlIHRocmVhZC4gV2UgcmVzZXQgdGhlIGlkZW50IHRvCiAgICAgICAgICAgICAgICAgIyBpdHMgbmV3IHZhbHVlIHNpbmNlIGl0IGNhbiBoYXZlIGNoYW5nZWQuCi0gICAgICAgICAgICAgICAgaWRlbnQgPSBfZ2V0X2lkZW50KCkKKyAgICAgICAgICAgICAgICBpZGVudCA9IGdldF9pZGVudCgpCiAgICAgICAgICAgICAgICAgdGhyZWFkLl9pZGVudCA9IGlkZW50CiAgICAgICAgICAgICAgICAgbmV3X2FjdGl2ZVtpZGVudF0gPSB0aHJlYWQKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvdGltZWl0LnB5IGIvTGliL3RpbWVpdC5weQppbmRleCAxYWU1OWUwLi40ZjdkMjhmIDEwMDY0NAotLS0gYS9MaWIvdGltZWl0LnB5CisrKyBiL0xpYi90aW1laXQucHkKQEAgLTksMTQgKzksMTUgQEAKIExpYnJhcnkgdXNhZ2U6IHNlZSB0aGUgVGltZXIgY2xhc3MuCiAKIENvbW1hbmQgbGluZSB1c2FnZToKLSAgICBweXRob24gdGltZWl0LnB5IFstbiBOXSBbLXIgTl0gWy1zIFNdIFstdF0gWy1jXSBbLWhdIFstLV0gW3N0YXRlbWVudF0KKyAgICBweXRob24gdGltZWl0LnB5IFstbiBOXSBbLXIgTl0gWy1zIFNdIFstdF0gWy1jXSBbLXBdIFstaF0gWy0tXSBbc3RhdGVtZW50XQogCiBPcHRpb25zOgogICAtbi8tLW51bWJlciBOOiBob3cgbWFueSB0aW1lcyB0byBleGVjdXRlICdzdGF0ZW1lbnQnIChkZWZhdWx0OiBzZWUgYmVsb3cpCiAgIC1yLy0tcmVwZWF0IE46IGhvdyBtYW55IHRpbWVzIHRvIHJlcGVhdCB0aGUgdGltZXIgKGRlZmF1bHQgMykKICAgLXMvLS1zZXR1cCBTOiBzdGF0ZW1lbnQgdG8gYmUgZXhlY3V0ZWQgb25jZSBpbml0aWFsbHkgKGRlZmF1bHQgJ3Bhc3MnKQotICAtdC8tLXRpbWU6IHVzZSB0aW1lLnRpbWUoKSAoZGVmYXVsdCBvbiBVbml4KQotICAtYy8tLWNsb2NrOiB1c2UgdGltZS5jbG9jaygpIChkZWZhdWx0IG9uIFdpbmRvd3MpCisgIC1wLy0tcHJvY2VzczogdXNlIHRpbWUucHJvY2Vzc190aW1lKCkgKGRlZmF1bHQgaXMgdGltZS5wZXJmX2NvdW50ZXIoKSkKKyAgLXQvLS10aW1lOiB1c2UgdGltZS50aW1lKCkgKGRlcHJlY2F0ZWQpCisgIC1jLy0tY2xvY2s6IHVzZSB0aW1lLmNsb2NrKCkgKGRlcHJlY2F0ZWQpCiAgIC12Ly0tdmVyYm9zZTogcHJpbnQgcmF3IHRpbWluZyByZXN1bHRzOyByZXBlYXQgZm9yIG1vcmUgZGlnaXRzIHByZWNpc2lvbgogICAtaC8tLWhlbHA6IHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdAogICAtLTogc2VwYXJhdGUgb3B0aW9ucyBmcm9tIHN0YXRlbWVudCwgdXNlIHdoZW4gc3RhdGVtZW50IHN0YXJ0cyB3aXRoIC0KQEAgLTY2LDIzICs2NywxNyBAQAogZHVtbXlfc3JjX25hbWUgPSAiPHRpbWVpdC1zcmM+IgogZGVmYXVsdF9udW1iZXIgPSAxMDAwMDAwCiBkZWZhdWx0X3JlcGVhdCA9IDMKLQotaWYgc3lzLnBsYXRmb3JtID09ICJ3aW4zMiI6Ci0gICAgIyBPbiBXaW5kb3dzLCB0aGUgYmVzdCB0aW1lciBpcyB0aW1lLmNsb2NrKCkKLSAgICBkZWZhdWx0X3RpbWVyID0gdGltZS5jbG9jawotZWxzZToKLSAgICAjIE9uIG1vc3Qgb3RoZXIgcGxhdGZvcm1zIHRoZSBiZXN0IHRpbWVyIGlzIHRpbWUudGltZSgpCi0gICAgZGVmYXVsdF90aW1lciA9IHRpbWUudGltZQorZGVmYXVsdF90aW1lciA9IHRpbWUucGVyZl9jb3VudGVyCiAKICMgRG9uJ3QgY2hhbmdlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgdGVtcGxhdGU7IHRoZSByZWluZGVudCgpIGNhbGxzCiAjIGluIFRpbWVyLl9faW5pdF9fKCkgZGVwZW5kIG9uIHNldHVwIGJlaW5nIGluZGVudGVkIDQgc3BhY2VzIGFuZCBzdG10CiAjIGJlaW5nIGluZGVudGVkIDggc3BhY2VzLgogdGVtcGxhdGUgPSAiIiIKIGRlZiBpbm5lcihfaXQsIF90aW1lcik6Ci0gICAgJShzZXR1cClzCisgICAge3NldHVwfQogICAgIF90MCA9IF90aW1lcigpCiAgICAgZm9yIF9pIGluIF9pdDoKLSAgICAgICAgJShzdG10KXMKKyAgICAgICAge3N0bXR9CiAgICAgX3QxID0gX3RpbWVyKCkKICAgICByZXR1cm4gX3QxIC0gX3QwCiAiIiIKQEAgLTEyNiw5ICsxMjEsOSBAQAogICAgICAgICAgICAgc3RtdCA9IHJlaW5kZW50KHN0bXQsIDgpCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNldHVwLCBzdHIpOgogICAgICAgICAgICAgICAgIHNldHVwID0gcmVpbmRlbnQoc2V0dXAsIDQpCi0gICAgICAgICAgICAgICAgc3JjID0gdGVtcGxhdGUgJSB7J3N0bXQnOiBzdG10LCAnc2V0dXAnOiBzZXR1cH0KKyAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD1zZXR1cCkKICAgICAgICAgICAgIGVsaWYgY2FsbGFibGUoc2V0dXApOgotICAgICAgICAgICAgICAgIHNyYyA9IHRlbXBsYXRlICUgeydzdG10Jzogc3RtdCwgJ3NldHVwJzogJ19zZXR1cCgpJ30KKyAgICAgICAgICAgICAgICBzcmMgPSB0ZW1wbGF0ZS5mb3JtYXQoc3RtdD1zdG10LCBzZXR1cD0nX3NldHVwKCknKQogICAgICAgICAgICAgICAgIG5zWydfc2V0dXAnXSA9IHNldHVwCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInNldHVwIGlzIG5laXRoZXIgYSBzdHJpbmcgbm9yIGNhbGxhYmxlIikKQEAgLTI1NSw5ICsyNTAsMTAgQEAKICAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQogICAgIGltcG9ydCBnZXRvcHQKICAgICB0cnk6Ci0gICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KGFyZ3MsICJuOnM6cjp0Y3ZoIiwKKyAgICAgICAgb3B0cywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJncywgIm46czpyOnRjcHZoIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJudW1iZXI9IiwgInNldHVwPSIsICJyZXBlYXQ9IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lIiwgImNsb2NrIiwgInZlcmJvc2UiLCAiaGVscCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWUiLCAiY2xvY2siLCAicHJvY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVyYm9zZSIsICJoZWxwIl0pCiAgICAgZXhjZXB0IGdldG9wdC5lcnJvciBhcyBlcnI6CiAgICAgICAgIHByaW50KGVycikKICAgICAgICAgcHJpbnQoInVzZSAtaC8tLWhlbHAgZm9yIGNvbW1hbmQgbGluZSBoZWxwIikKQEAgLTI4Miw2ICsyNzgsOCBAQAogICAgICAgICAgICAgdGltZXIgPSB0aW1lLnRpbWUKICAgICAgICAgaWYgbyBpbiAoIi1jIiwgIi0tY2xvY2siKToKICAgICAgICAgICAgIHRpbWVyID0gdGltZS5jbG9jaworICAgICAgICBpZiBvIGluICgiLXAiLCAiLS1wcm9jZXNzIik6CisgICAgICAgICAgICB0aW1lciA9IHRpbWUucHJvY2Vzc190aW1lCiAgICAgICAgIGlmIG8gaW4gKCItdiIsICItLXZlcmJvc2UiKToKICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgcHJlY2lzaW9uICs9IDEKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggZGU4NWJmOS4uODA2M2RkNiAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDE2ICszMCwxOCBAQAogdGsubWFpbmxvb3AoKQogIiIiCiAKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbiQiCi0KIGltcG9ydCBzeXMKIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiOgogICAgICMgQXR0ZW1wdCB0byBjb25maWd1cmUgVGNsL1RrIHdpdGhvdXQgcmVxdWlyaW5nIFBBVEgKICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IF9maXgKKworaW1wb3J0IHdhcm5pbmdzCisKIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogVGNsRXJyb3IgPSBfdGtpbnRlci5UY2xFcnJvcgogZnJvbSB0a2ludGVyLmNvbnN0YW50cyBpbXBvcnQgKgogCisKIHdhbnRvYmplY3RzID0gMQogCiBUa1ZlcnNpb24gPSBmbG9hdChfdGtpbnRlci5US19WRVJTSU9OKQpAQCAtMTU3LDYgKzE1OSw3IEBACiAgICAgU3ViY2xhc3NlcyBTdHJpbmdWYXIsIEludFZhciwgRG91YmxlVmFyLCBCb29sZWFuVmFyIGFyZSBzcGVjaWFsaXphdGlvbnMKICAgICB0aGF0IGNvbnN0cmFpbiB0aGUgdHlwZSBvZiB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBnZXQoKS4iIiIKICAgICBfZGVmYXVsdCA9ICIiCisgICAgX3RrID0gTm9uZQogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgdmFsdWU9Tm9uZSwgbmFtZT1Ob25lKToKICAgICAgICAgIiIiQ29uc3RydWN0IGEgdmFyaWFibGUKIApAQCAtMTY3LDYgKzE3MCwxMSBAQAogICAgICAgICBJZiBOQU1FIG1hdGNoZXMgYW4gZXhpc3RpbmcgdmFyaWFibGUgYW5kIFZBTFVFIGlzIG9taXR0ZWQKICAgICAgICAgdGhlbiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgcmV0YWluZWQuCiAgICAgICAgICIiIgorICAgICAgICAjIGNoZWNrIGZvciB0eXBlIG9mIE5BTUUgcGFyYW1ldGVyIHRvIG92ZXJyaWRlIHdlaXJkIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgIyByYWlzZWQgZnJvbSBNb2R1bGVzL190a2ludGVyLmM6U2V0VmFyIGxpa2U6CisgICAgICAgICMgVHlwZUVycm9yOiBzZXR2YXIoKSB0YWtlcyBleGFjdGx5IDMgYXJndW1lbnRzICgyIGdpdmVuKQorICAgICAgICBpZiBuYW1lIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJuYW1lIG11c3QgYmUgYSBzdHJpbmciKQogICAgICAgICBnbG9iYWwgX3Zhcm51bQogICAgICAgICBpZiBub3QgbWFzdGVyOgogICAgICAgICAgICAgbWFzdGVyID0gX2RlZmF1bHRfcm9vdApAQCAtMTc4LDE4ICsxODYsMjEgQEAKICAgICAgICAgICAgIHNlbGYuX25hbWUgPSAnUFlfVkFSJyArIHJlcHIoX3Zhcm51bSkKICAgICAgICAgICAgIF92YXJudW0gKz0gMQogICAgICAgICBpZiB2YWx1ZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2V0KHZhbHVlKQorICAgICAgICAgICAgc2VsZi5pbml0aWFsaXplKHZhbHVlKQogICAgICAgICBlbGlmIG5vdCBzZWxmLl90ay5jYWxsKCJpbmZvIiwgImV4aXN0cyIsIHNlbGYuX25hbWUpOgotICAgICAgICAgICAgc2VsZi5zZXQoc2VsZi5fZGVmYXVsdCkKKyAgICAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZShzZWxmLl9kZWZhdWx0KQogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAiIiJVbnNldCB0aGUgdmFyaWFibGUgaW4gVGNsLiIiIgotICAgICAgICBzZWxmLl90ay5nbG9iYWx1bnNldHZhcihzZWxmLl9uYW1lKQorICAgICAgICBpZiAoc2VsZi5fdGsgaXMgbm90IE5vbmUgYW5kIHNlbGYuX3RrLmNhbGwoImluZm8iLCAiZXhpc3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX25hbWUpKToKKyAgICAgICAgICAgIHNlbGYuX3RrLmdsb2JhbHVuc2V0dmFyKHNlbGYuX25hbWUpCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgdmFyaWFibGUgaW4gVGNsLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQogICAgIGRlZiBzZXQoc2VsZiwgdmFsdWUpOgogICAgICAgICAiIiJTZXQgdGhlIHZhcmlhYmxlIHRvIFZBTFVFLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsc2V0dmFyKHNlbGYuX25hbWUsIHZhbHVlKQorICAgIGluaXRpYWxpemUgPSBzZXQKICAgICBkZWYgZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdmFsdWUgb2YgdmFyaWFibGUuIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkKQEAgLTI2NCwxMiArMjc1LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFZhcmlhYmxlLl9faW5pdF9fKHNlbGYsIG1hc3RlciwgdmFsdWUsIG5hbWUpCiAKLSAgICBkZWYgc2V0KHNlbGYsIHZhbHVlKToKLSAgICAgICAgIiIiU2V0IHRoZSB2YXJpYWJsZSB0byB2YWx1ZSwgY29udmVydGluZyBib29sZWFucyB0byBpbnRlZ2Vycy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYm9vbCk6Ci0gICAgICAgICAgICB2YWx1ZSA9IGludCh2YWx1ZSkKLSAgICAgICAgcmV0dXJuIFZhcmlhYmxlLnNldChzZWxmLCB2YWx1ZSkKLQogICAgIGRlZiBnZXQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIGFzIGFuIGludGVnZXIuIiIiCiAgICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpKQpAQCAtMzEwLDcgKzMxNSwxMCBAQAogCiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgYXMgYSBib29sLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2V0Ym9vbGVhbihzZWxmLl90ay5nbG9iYWxnZXR2YXIoc2VsZi5fbmFtZSkpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl90ay5nZXRib29sZWFuKHNlbGYuX3RrLmdsb2JhbGdldHZhcihzZWxmLl9uYW1lKSkKKyAgICAgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiaW52YWxpZCBsaXRlcmFsIGZvciBnZXRib29sZWFuKCkiKQogCiBkZWYgbWFpbmxvb3Aobj0wKToKICAgICAiIiJSdW4gdGhlIG1haW4gbG9vcCBvZiBUY2wuIiIiCkBAIC0zMjIsNyArMzMwLDEwIEBACiAKIGRlZiBnZXRib29sZWFuKHMpOgogICAgICIiIkNvbnZlcnQgdHJ1ZSBhbmQgZmFsc2UgdG8gaW50ZWdlciB2YWx1ZXMgMSBhbmQgMC4iIiIKLSAgICByZXR1cm4gX2RlZmF1bHRfcm9vdC50ay5nZXRib29sZWFuKHMpCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gX2RlZmF1bHRfcm9vdC50ay5nZXRib29sZWFuKHMpCisgICAgZXhjZXB0IFRjbEVycm9yOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIGxpdGVyYWwgZm9yIGdldGJvb2xlYW4oKSIpCiAKICMgTWV0aG9kcyBkZWZpbmVkIG9uIGJvdGggdG9wbGV2ZWwgYW5kIGludGVyaW9yIHdpZGdldHMKIGNsYXNzIE1pc2M6CkBAIC00MTIsNyArNDIzLDEwIEBACiAgICAgZ2V0ZG91YmxlID0gZmxvYXQKICAgICBkZWYgZ2V0Ym9vbGVhbihzZWxmLCBzKToKICAgICAgICAgIiIiUmV0dXJuIGEgYm9vbGVhbiB2YWx1ZSBmb3IgVGNsIGJvb2xlYW4gdmFsdWVzIHRydWUgYW5kIGZhbHNlIGdpdmVuIGFzIHBhcmFtZXRlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuZ2V0Ym9vbGVhbihzKQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHMpCisgICAgICAgIGV4Y2VwdCBUY2xFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImludmFsaWQgbGl0ZXJhbCBmb3IgZ2V0Ym9vbGVhbigpIikKICAgICBkZWYgZm9jdXNfc2V0KHNlbGYpOgogICAgICAgICAiIiJEaXJlY3QgaW5wdXQgZm9jdXMgdG8gdGhpcyB3aWRnZXQuCiAKQEAgLTExODUsNyArMTE5OSw2IEBACiAgICAgICAgIHJldHVybiAoZSwpCiAgICAgZGVmIF9yZXBvcnRfZXhjZXB0aW9uKHNlbGYpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKLSAgICAgICAgaW1wb3J0IHN5cwogICAgICAgICBleGMsIHZhbCwgdGIgPSBzeXMuZXhjX2luZm8oKQogICAgICAgICByb290ID0gc2VsZi5fcm9vdCgpCiAgICAgICAgIHJvb3QucmVwb3J0X2NhbGxiYWNrX2V4Y2VwdGlvbihleGMsIHZhbCwgdGIpCkBAIC0xMjYwLDYgKzEyNzMsMTMgQEAKICAgICAgICAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoCiAgICAgICAgICAgICAgICAgICAgICAgICdwbGFjZScsICdzbGF2ZXMnLCBzZWxmLl93KSldCiAgICAgIyBHcmlkIG1ldGhvZHMgdGhhdCBhcHBseSB0byB0aGUgbWFzdGVyCisgICAgZGVmIGdyaWRfYW5jaG9yKHNlbGYsIGFuY2hvcj1Ob25lKTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlRoZSBhbmNob3IgdmFsdWUgY29udHJvbHMgaG93IHRvIHBsYWNlIHRoZSBncmlkIHdpdGhpbiB0aGUKKyAgICAgICAgbWFzdGVyIHdoZW4gbm8gcm93L2NvbHVtbiBoYXMgYW55IHdlaWdodC4KKworICAgICAgICBUaGUgZGVmYXVsdCBhbmNob3IgaXMgbncuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbCgnZ3JpZCcsICdhbmNob3InLCBzZWxmLl93LCBhbmNob3IpCisgICAgYW5jaG9yID0gZ3JpZF9hbmNob3IKICAgICBkZWYgZ3JpZF9iYm94KHNlbGYsIGNvbHVtbj1Ob25lLCByb3c9Tm9uZSwgY29sMj1Ob25lLCByb3cyPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gYSB0dXBsZSBvZiBpbnRlZ2VyIGNvb3JkaW5hdGVzIGZvciB0aGUgYm91bmRpbmcKICAgICAgICAgYm94IG9mIHRoaXMgd2lkZ2V0IGNvbnRyb2xsZWQgYnkgdGhlIGdlb21ldHJ5IG1hbmFnZXIgZ3JpZC4KQEAgLTEyNzgsNyArMTI5OCw2IEBACiAgICAgICAgIGlmIGNvbDIgaXMgbm90IE5vbmUgYW5kIHJvdzIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhcmdzID0gYXJncyArIChjb2wyLCByb3cyKQogICAgICAgICByZXR1cm4gc2VsZi5fZ2V0aW50cyhzZWxmLnRrLmNhbGwoKmFyZ3MpKSBvciBOb25lCi0KICAgICBiYm94ID0gZ3JpZF9iYm94CiAgICAgZGVmIF9ncmlkX2NvbmZpZ3VyZShzZWxmLCBjb21tYW5kLCBpbmRleCwgY25mLCBrdyk6CiAgICAgICAgICIiIkludGVybmFsIGZ1bmN0aW9uLiIiIgpAQCAtMTUzNyw2ICsxNTU2LDE0IEBACiAgICAgICAgIHRoZSBmb2N1cy4gUmV0dXJuIGN1cnJlbnQgZm9jdXMgbW9kZWwgaWYgTU9ERUwgaXMgTm9uZS4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd20nLCAnZm9jdXNtb2RlbCcsIHNlbGYuX3csIG1vZGVsKQogICAgIGZvY3VzbW9kZWwgPSB3bV9mb2N1c21vZGVsCisgICAgZGVmIHdtX2ZvcmdldChzZWxmLCB3aW5kb3cpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiVGhlIHdpbmRvdyB3aWxsIGJlIHVubWFwcGVuZCBmcm9tIHRoZSBzY3JlZW4gYW5kIHdpbGwgbm8gbG9uZ2VyCisgICAgICAgIGJlIG1hbmFnZWQgYnkgd20uIHRvcGxldmVsIHdpbmRvd3Mgd2lsbCBiZSB0cmVhdGVkIGxpa2UgZnJhbWUKKyAgICAgICAgd2luZG93cyBvbmNlIHRoZXkgYXJlIG5vIGxvbmdlciBtYW5hZ2VkIGJ5IHdtLCBob3dldmVyLCB0aGUgbWVudQorICAgICAgICBvcHRpb24gY29uZmlndXJhdGlvbiB3aWxsIGJlIHJlbWVtYmVyZWQgYW5kIHRoZSBtZW51cyB3aWxsIHJldHVybgorICAgICAgICBvbmNlIHRoZSB3aWRnZXQgaXMgbWFuYWdlZCBhZ2Fpbi4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdmb3JnZXQnLCB3aW5kb3cpCisgICAgZm9yZ2V0ID0gd21fZm9yZ2V0CiAgICAgZGVmIHdtX2ZyYW1lKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaWRlbnRpZmllciBmb3IgZGVjb3JhdGl2ZSBmcmFtZSBvZiB0aGlzIHdpZGdldCBpZiBwcmVzZW50LiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKCd3bScsICdmcmFtZScsIHNlbGYuX3cpCkBAIC0xNTkwLDYgKzE2MTcsMzEgQEAKICAgICAgICAgTm9uZSBpcyBnaXZlbi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbm5hbWUnLCBzZWxmLl93LCBuZXdOYW1lKQogICAgIGljb25uYW1lID0gd21faWNvbm5hbWUKKyAgICBkZWYgd21faWNvbnBob3RvKHNlbGYsIGRlZmF1bHQ9RmFsc2UsICphcmdzKTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlNldHMgdGhlIHRpdGxlYmFyIGljb24gZm9yIHRoaXMgd2luZG93IGJhc2VkIG9uIHRoZSBuYW1lZCBwaG90bworICAgICAgICBpbWFnZXMgcGFzc2VkIHRocm91Z2ggYXJncy4gSWYgZGVmYXVsdCBpcyBUcnVlLCB0aGlzIGlzIGFwcGxpZWQgdG8KKyAgICAgICAgYWxsIGZ1dHVyZSBjcmVhdGVkIHRvcGxldmVscyBhcyB3ZWxsLgorCisgICAgICAgIFRoZSBkYXRhIGluIHRoZSBpbWFnZXMgaXMgdGFrZW4gYXMgYSBzbmFwc2hvdCBhdCB0aGUgdGltZSBvZgorICAgICAgICBpbnZvY2F0aW9uLiBJZiB0aGUgaW1hZ2VzIGFyZSBsYXRlciBjaGFuZ2VkLCB0aGlzIGlzIG5vdCByZWZsZWN0ZWQKKyAgICAgICAgdG8gdGhlIHRpdGxlYmFyIGljb25zLiBNdWx0aXBsZSBpbWFnZXMgYXJlIGFjY2VwdGVkIHRvIGFsbG93CisgICAgICAgIGRpZmZlcmVudCBpbWFnZXMgc2l6ZXMgdG8gYmUgcHJvdmlkZWQuIFRoZSB3aW5kb3cgbWFuYWdlciBtYXkgc2NhbGUKKyAgICAgICAgcHJvdmlkZWQgaWNvbnMgdG8gYW4gYXBwcm9wcmlhdGUgc2l6ZS4KKworICAgICAgICBPbiBXaW5kb3dzLCB0aGUgaW1hZ2VzIGFyZSBwYWNrZWQgaW50byBhIFdpbmRvd3MgaWNvbiBzdHJ1Y3R1cmUuCisgICAgICAgIFRoaXMgd2lsbCBvdmVycmlkZSBhbiBpY29uIHNwZWNpZmllZCB0byB3bV9pY29uYml0bWFwLCBhbmQgdmljZQorICAgICAgICB2ZXJzYS4KKworICAgICAgICBPbiBYLCB0aGUgaW1hZ2VzIGFyZSBhcnJhbmdlZCBpbnRvIHRoZSBfTkVUX1dNX0lDT04gWCBwcm9wZXJ0eSwKKyAgICAgICAgd2hpY2ggbW9zdCBtb2Rlcm4gd2luZG93IG1hbmFnZXJzIHN1cHBvcnQuIEFuIGljb24gc3BlY2lmaWVkIGJ5CisgICAgICAgIHdtX2ljb25iaXRtYXAgbWF5IGV4aXN0IHNpbXV1bHRhbmVvdXNseS4KKworICAgICAgICBPbiBNYWNpbnRvc2gsIHRoaXMgY3VycmVudGx5IGRvZXMgbm90aGluZy4iIiIKKyAgICAgICAgaWYgZGVmYXVsdDoKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbnBob3RvJywgc2VsZi5fdywgIi1kZWZhdWx0IiwgKmFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dtJywgJ2ljb25waG90bycsIHNlbGYuX3csICphcmdzKQorICAgIGljb25waG90byA9IHdtX2ljb25waG90bwogICAgIGRlZiB3bV9pY29ucG9zaXRpb24oc2VsZiwgeD1Ob25lLCB5PU5vbmUpOgogICAgICAgICAiIiJTZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBpY29uIG9mIHRoaXMgd2lkZ2V0IHRvIFggYW5kIFkuIFJldHVybgogICAgICAgICBhIHR1cGxlIG9mIHRoZSBjdXJyZW50IHZhbHVlcyBvZiBYIGFuZCBYIGlmIE5vbmUgaXMgZ2l2ZW4uIiIiCkBAIC0xNjAxLDYgKzE2NTMsMTIgQEAKICAgICAgICAgdmFsdWUgaWYgTm9uZSBpcyBnaXZlbi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd20nLCAnaWNvbndpbmRvdycsIHNlbGYuX3csIHBhdGhOYW1lKQogICAgIGljb253aW5kb3cgPSB3bV9pY29ud2luZG93CisgICAgZGVmIHdtX21hbmFnZShzZWxmLCB3aWRnZXQpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiVGhlIHdpZGdldCBzcGVjaWZpZWQgd2lsbCBiZWNvbWUgYSBzdGFuZCBhbG9uZSB0b3AtbGV2ZWwgd2luZG93LgorICAgICAgICBUaGUgd2luZG93IHdpbGwgYmUgZGVjb3JhdGVkIHdpdGggdGhlIHdpbmRvdyBtYW5hZ2VycyB0aXRsZSBiYXIsCisgICAgICAgIGV0Yy4iIiIKKyAgICAgICAgc2VsZi50ay5jYWxsKCd3bScsICdtYW5hZ2UnLCB3aWRnZXQpCisgICAgbWFuYWdlID0gd21fbWFuYWdlCiAgICAgZGVmIHdtX21heHNpemUoc2VsZiwgd2lkdGg9Tm9uZSwgaGVpZ2h0PU5vbmUpOgogICAgICAgICAiIiJTZXQgbWF4IFdJRFRIIGFuZCBIRUlHSFQgZm9yIHRoaXMgd2lkZ2V0LiBJZiB0aGUgd2luZG93IGlzIGdyaWRkZWQKICAgICAgICAgdGhlIHZhbHVlcyBhcmUgZ2l2ZW4gaW4gZ3JpZCB1bml0cy4gUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlcyBpZiBOb25lCkBAIC0xNjg5LDcgKzE3NDcsNyBAQAogICAgICAgICAjIGVuc3VyZSB0aGF0IHNlbGYudGsgaXMgYWx3YXlzIF9zb21ldGhpbmdfLgogICAgICAgICBzZWxmLnRrID0gTm9uZQogICAgICAgICBpZiBiYXNlTmFtZSBpcyBOb25lOgotICAgICAgICAgICAgaW1wb3J0IHN5cywgb3MKKyAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgYmFzZU5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5hcmd2WzBdKQogICAgICAgICAgICAgYmFzZU5hbWUsIGV4dCA9IG9zLnBhdGguc3BsaXRleHQoYmFzZU5hbWUpCiAgICAgICAgICAgICBpZiBleHQgbm90IGluICgnLnB5JywgJy5weWMnLCAnLnB5bycpOgpAQCAtMTc2Myw3ICsxODIxLDcgQEAKICAgICAgICAgICAgIGV4ZWMob3BlbihiYXNlX3B5KS5yZWFkKCksIGRpcikKICAgICBkZWYgcmVwb3J0X2NhbGxiYWNrX2V4Y2VwdGlvbihzZWxmLCBleGMsIHZhbCwgdGIpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4gSXQgcmVwb3J0cyBleGNlcHRpb24gb24gc3lzLnN0ZGVyci4iIiIKLSAgICAgICAgaW1wb3J0IHRyYWNlYmFjaywgc3lzCisgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRXhjZXB0aW9uIGluIFRraW50ZXIgY2FsbGJhY2tcbiIpCiAgICAgICAgIHN5cy5sYXN0X3R5cGUgPSBleGMKICAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWwKQEAgLTIwODgsMjUgKzIxNDYsNDUgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2ludm9rZScpCiAKKwogIyBJbmRpY2VzOgogIyBYWFggSSBkb24ndCBsaWtlIHRoZXNlIC0tIHRha2UgdGhlbSBhd2F5CiBkZWYgQXRFbmQoKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0RW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcmV0dXJuICdlbmQnCisKKwogZGVmIEF0SW5zZXJ0KCphcmdzKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0SW5zZXJ0IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcyA9ICdpbnNlcnQnCiAgICAgZm9yIGEgaW4gYXJnczoKICAgICAgICAgaWYgYTogcyA9IHMgKyAoJyAnICsgYSkKICAgICByZXR1cm4gcworCisKIGRlZiBBdFNlbEZpcnN0KCk6CisgICAgd2FybmluZ3Mud2FybigidGtpbnRlci5BdFNlbEZpcnN0IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcmV0dXJuICdzZWwuZmlyc3QnCisKKwogZGVmIEF0U2VsTGFzdCgpOgorICAgIHdhcm5pbmdzLndhcm4oInRraW50ZXIuQXRTZWxMYXN0IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcmV0dXJuICdzZWwubGFzdCcKKworCiBkZWYgQXQoeCwgeT1Ob25lKToKKyAgICB3YXJuaW5ncy53YXJuKCJ0a2ludGVyLkF0IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgaWYgeSBpcyBOb25lOgogICAgICAgICByZXR1cm4gJ0AlcicgJSAoeCwpCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICdAJXIsJXInICUgKHgsIHkpCiAKKwogY2xhc3MgQ2FudmFzKFdpZGdldCwgWFZpZXcsIFlWaWV3KToKICAgICAiIiJDYW52YXMgd2lkZ2V0IHRvIGRpc3BsYXkgZ3JhcGhpY2FsIGVsZW1lbnRzIGxpa2UgbGluZXMgb3IgdGV4dC4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyPU5vbmUsIGNuZj17fSwgKiprdyk6CkBAIC0yNjkyLDYgKzI3NzAsMTAgQEAKICAgICBkZWYgdW5wb3N0KHNlbGYpOgogICAgICAgICAiIiJVbm1hcCBhIG1lbnUuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAndW5wb3N0JykKKyAgICBkZWYgeHBvc2l0aW9uKHNlbGYsIGluZGV4KTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlJldHVybiB0aGUgeC1wb3NpdGlvbiBvZiB0aGUgbGVmdG1vc3QgcGl4ZWwgb2YgdGhlIG1lbnUgaXRlbQorICAgICAgICBhdCBJTkRFWC4iIiIKKyAgICAgICAgcmV0dXJuIGdldGludChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3hwb3NpdGlvbicsIGluZGV4KSkKICAgICBkZWYgeXBvc2l0aW9uKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB5LXBvc2l0aW9uIG9mIHRoZSB0b3Btb3N0IHBpeGVsIG9mIHRoZSBtZW51IGl0ZW0gYXQgSU5ERVguIiIiCiAgICAgICAgIHJldHVybiBnZXRpbnQoc2VsZi50ay5jYWxsKApAQCAtMjg1MSw2ICsyOTMzLDI1IEBACiAgICAgICAgIHJlbGF0aW9uIE9QIGlzIHNhdGlzZmllZC4gT1AgaXMgb25lIG9mIDwsIDw9LCA9PSwgPj0sID4sIG9yICE9LiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRib29sZWFuKHNlbGYudGsuY2FsbCgKICAgICAgICAgICAgIHNlbGYuX3csICdjb21wYXJlJywgaW5kZXgxLCBvcCwgaW5kZXgyKSkKKyAgICBkZWYgY291bnQoc2VsZiwgaW5kZXgxLCBpbmRleDIsICphcmdzKTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIkNvdW50cyB0aGUgbnVtYmVyIG9mIHJlbGV2YW50IHRoaW5ncyBiZXR3ZWVuIHRoZSB0d28gaW5kaWNlcy4KKyAgICAgICAgSWYgaW5kZXgxIGlzIGFmdGVyIGluZGV4MiwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgbmVnYXRpdmUgbnVtYmVyCisgICAgICAgIChhbmQgdGhpcyBob2xkcyBmb3IgZWFjaCBvZiB0aGUgcG9zc2libGUgb3B0aW9ucykuCisKKyAgICAgICAgVGhlIGFjdHVhbCBpdGVtcyB3aGljaCBhcmUgY291bnRlZCBkZXBlbmRzIG9uIHRoZSBvcHRpb25zIGdpdmVuIGJ5CisgICAgICAgIGFyZ3MuIFRoZSByZXN1bHQgaXMgYSBsaXN0IG9mIGludGVnZXJzLCBvbmUgZm9yIHRoZSByZXN1bHQgb2YgZWFjaAorICAgICAgICBjb3VudGluZyBvcHRpb24gZ2l2ZW4uIFZhbGlkIGNvdW50aW5nIG9wdGlvbnMgYXJlICJjaGFycyIsCisgICAgICAgICJkaXNwbGF5Y2hhcnMiLCAiZGlzcGxheWluZGljZXMiLCAiZGlzcGxheWxpbmVzIiwgImluZGljZXMiLAorICAgICAgICAibGluZXMiLCAieHBpeGVscyIgYW5kICJ5cGl4ZWxzIi4gVGhlcmUgaXMgYW4gYWRkaXRpb25hbCBwb3NzaWJsZQorICAgICAgICBvcHRpb24gInVwZGF0ZSIsIHdoaWNoIGlmIGdpdmVuIHRoZW4gYWxsIHN1YnNlcXVlbnQgb3B0aW9ucyBlbnN1cmUKKyAgICAgICAgdGhhdCBhbnkgcG9zc2libGUgb3V0IG9mIGRhdGUgaW5mb3JtYXRpb24gaXMgcmVjYWxjdWxhdGVkLiIiIgorICAgICAgICBhcmdzID0gWyctJXMnICUgYXJnIGZvciBhcmcgaW4gYXJncyBpZiBub3QgYXJnLnN0YXJ0c3dpdGgoJy0nKV0KKyAgICAgICAgYXJncyArPSBbaW5kZXgxLCBpbmRleDJdCisgICAgICAgIHJlcyA9IHNlbGYudGsuY2FsbChzZWxmLl93LCAnY291bnQnLCAqYXJncykgb3IgTm9uZQorICAgICAgICBpZiByZXMgaXMgbm90IE5vbmUgYW5kIGxlbihhcmdzKSA8PSAzOgorICAgICAgICAgICAgcmV0dXJuIChyZXMsICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiByZXMKICAgICBkZWYgZGVidWcoc2VsZiwgYm9vbGVhbj1Ob25lKToKICAgICAgICAgIiIiVHVybiBvbiB0aGUgaW50ZXJuYWwgY29uc2lzdGVuY3kgY2hlY2tzIG9mIHRoZSBCLVRyZWUgaW5zaWRlIHRoZSB0ZXh0CiAgICAgICAgIHdpZGdldCBhY2NvcmRpbmcgdG8gQk9PTEVBTi4iIiIKQEAgLTMwMTMsNiArMzExNCwyNCBAQAogICAgIGRlZiBtYXJrX3ByZXZpb3VzKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBwcmV2aW91cyBtYXJrIGJlZm9yZSBJTkRFWC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbChzZWxmLl93LCAnbWFyaycsICdwcmV2aW91cycsIGluZGV4KSBvciBOb25lCisgICAgZGVmIHBlZXJfY3JlYXRlKHNlbGYsIG5ld1BhdGhOYW1lLCBjbmY9e30sICoqa3cpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiQ3JlYXRlcyBhIHBlZXIgdGV4dCB3aWRnZXQgd2l0aCB0aGUgZ2l2ZW4gbmV3UGF0aE5hbWUsIGFuZCBhbnkKKyAgICAgICAgb3B0aW9uYWwgc3RhbmRhcmQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBCeSBkZWZhdWx0IHRoZSBwZWVyIHdpbGwKKyAgICAgICAgaGF2ZSB0aGUgc2FtZSBzdGFydCBhbmQgYW5kIGVuZCBsaW5lIGFzIHRoZSBwYXJlbnQgd2lkZ2V0LCBidXQKKyAgICAgICAgdGhlc2UgY2FuIGJlIG92ZXJyaWRlbiB3aXRoIHRoZSBzdGFuZGFyZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIiIiCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAncGVlcicsICdjcmVhdGUnLCBuZXdQYXRoTmFtZSwKKyAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKGNuZiwga3cpKQorICAgIGRlZiBwZWVyX25hbWVzKHNlbGYpOiAjIG5ldyBpbiBUayA4LjUKKyAgICAgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2YgcGVlcnMgb2YgdGhpcyB3aWRnZXQgKHRoaXMgZG9lcyBub3QgaW5jbHVkZQorICAgICAgICB0aGUgd2lkZ2V0IGl0c2VsZikuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BlZXInLCAnbmFtZXMnKSkKKyAgICBkZWYgcmVwbGFjZShzZWxmLCBpbmRleDEsIGluZGV4MiwgY2hhcnMsICphcmdzKTogIyBuZXcgaW4gVGsgOC41CisgICAgICAgICIiIlJlcGxhY2VzIHRoZSByYW5nZSBvZiBjaGFyYWN0ZXJzIGJldHdlZW4gaW5kZXgxIGFuZCBpbmRleDIgd2l0aAorICAgICAgICB0aGUgZ2l2ZW4gY2hhcmFjdGVycyBhbmQgdGFncyBzcGVjaWZpZWQgYnkgYXJncy4KKworICAgICAgICBTZWUgdGhlIG1ldGhvZCBpbnNlcnQgZm9yIHNvbWUgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhcmdzLCBhbmQgdGhlCisgICAgICAgIG1ldGhvZCBkZWxldGUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbmRpY2VzLiIiIgorICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3JlcGxhY2UnLCBpbmRleDEsIGluZGV4MiwgY2hhcnMsICphcmdzKQogICAgIGRlZiBzY2FuX21hcmsoc2VsZiwgeCwgeSk6CiAgICAgICAgICIiIlJlbWVtYmVyIHRoZSBjdXJyZW50IFgsIFkgY29vcmRpbmF0ZXMuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnc2NhbicsICdtYXJrJywgeCwgeSkKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19maXgucHkgYi9MaWIvdGtpbnRlci9fZml4LnB5CmluZGV4IDVhNjlkODkuLjVmMzJkMjUgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL19maXgucHkKKysrIGIvTGliL3RraW50ZXIvX2ZpeC5weQpAQCAtNDYsMTAgKzQ2LDEwIEBACiAgICAgICAgICAgICBzID0gIlxcIiArIHNbMzpdCiAgICAgICAgIHJldHVybiBzCiAKLXByZWZpeCA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCJ0Y2wiKQorcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwidGNsIikKIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwcmVmaXgpOgogICAgICMgZGV2ZGlyLy4uL3RjbHRrL2xpYgotICAgIHByZWZpeCA9IG9zLnBhdGguam9pbihzeXMucHJlZml4LCBvcy5wYXRoLnBhcmRpciwgInRjbHRrIiwgImxpYiIpCisgICAgcHJlZml4ID0gb3MucGF0aC5qb2luKHN5cy5iYXNlX3ByZWZpeCwgb3MucGF0aC5wYXJkaXIsICJ0Y2x0ayIsICJsaWIiKQogICAgIHByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChwcmVmaXgpCiAjIGlmIHRoaXMgZG9lcyBub3QgZXhpc3QsIG5vIGZ1cnRoZXIgc2VhcmNoIGlzIG5lZWRlZAogaWYgb3MucGF0aC5leGlzdHMocHJlZml4KToKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkgYi9MaWIvdGtpbnRlci9maWxlZGlhbG9nLnB5CmluZGV4IDk4ZDJkNWMuLjNmZmIyNTIgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL2ZpbGVkaWFsb2cucHkKKysrIGIvTGliL3RraW50ZXIvZmlsZWRpYWxvZy5weQpAQCAtMzA2LDcgKzMwNiw2IEBACiAgICAgZGVmIF9maXhyZXN1bHQoc2VsZiwgd2lkZ2V0LCByZXN1bHQpOgogICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgICAjIGtlZXAgZGlyZWN0b3J5IGFuZCBmaWxlbmFtZSB1bnRpbCBuZXh0IHRpbWUKLSAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgIyBjb252ZXJ0IFRjbCBwYXRoIG9iamVjdHMgdG8gc3RyaW5ncwogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdHJpbmcKQEAgLTMzMyw3ICszMzIsNiBAQAogICAgICAgICAgICAgIyBtdWx0aXBsZSByZXN1bHRzOgogICAgICAgICAgICAgcmVzdWx0ID0gdHVwbGUoW2dldGF0dHIociwgInN0cmluZyIsIHIpIGZvciByIGluIHJlc3VsdF0pCiAgICAgICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IG9zCiAgICAgICAgICAgICAgICAgcGF0aCwgZmlsZSA9IG9zLnBhdGguc3BsaXQocmVzdWx0WzBdKQogICAgICAgICAgICAgICAgIHNlbGYub3B0aW9uc1siaW5pdGlhbGRpciJdID0gcGF0aAogICAgICAgICAgICAgICAgICMgZG9uJ3Qgc2V0IGluaXRpYWxmaWxlIG9yIGZpbGVuYW1lLCBhcyB3ZSBoYXZlIG11bHRpcGxlIG9mIHRoZXNlCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9mb250LnB5IGIvTGliL3RraW50ZXIvZm9udC5weQppbmRleCA1NDI1YjA2Li40OTI5MjQxIDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci9mb250LnB5CisrKyBiL0xpYi90a2ludGVyL2ZvbnQucHkKQEAgLTIsMjcgKzIsMjcgQEAKICMKICMgd3JpdHRlbiBieSBGcmVkcmlrIEx1bmRoLCBGZWJydWFyeSAxOTk4CiAjCi0jIEZJWE1FOiBzaG91bGQgYWRkICdkaXNwbGF5b2YnIG9wdGlvbiB3aGVyZSByZWxldmFudCAoYWN0dWFsLCBmYW1pbGllcywKLSMgICAgICAgIG1lYXN1cmUsIGFuZCBtZXRyaWNzKQotIwogCiBfX3ZlcnNpb25fXyA9ICIwLjkiCiAKK2ltcG9ydCBpdGVydG9vbHMKIGltcG9ydCB0a2ludGVyCiAKKwogIyB3ZWlnaHQvc2xhbnQKIE5PUk1BTCA9ICJub3JtYWwiCiBST01BTiA9ICJyb21hbiIKIEJPTEQgICA9ICJib2xkIgogSVRBTElDID0gIml0YWxpYyIKIAorCiBkZWYgbmFtZXRvZm9udChuYW1lKToKICAgICAiIiJHaXZlbiB0aGUgbmFtZSBvZiBhIHRrIG5hbWVkIGZvbnQsIHJldHVybnMgYSBGb250IHJlcHJlc2VudGF0aW9uLgogICAgICIiIgogICAgIHJldHVybiBGb250KG5hbWU9bmFtZSwgZXhpc3RzPVRydWUpCiAKLWNsYXNzIEZvbnQ6CiAKK2NsYXNzIEZvbnQ6CiAgICAgIiIiUmVwcmVzZW50cyBhIG5hbWVkIGZvbnQuCiAKICAgICBDb25zdHJ1Y3RvciBvcHRpb25zIGFyZToKQEAgLTQ0LDYgKzQ0LDggQEAKIAogICAgICIiIgogCisgICAgY291bnRlciA9IGl0ZXJ0b29scy5jb3VudCgxKQorCiAgICAgZGVmIF9zZXQoc2VsZiwga3cpOgogICAgICAgICBvcHRpb25zID0gW10KICAgICAgICAgZm9yIGssIHYgaW4ga3cuaXRlbXMoKToKQEAgLTYzLDcgKzY1LDggQEAKICAgICAgICAgICAgIG9wdGlvbnNbYXJnc1tpXVsxOl1dID0gYXJnc1tpKzFdCiAgICAgICAgIHJldHVybiBvcHRpb25zCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdD1Ob25lLCBmb250PU5vbmUsIG5hbWU9Tm9uZSwgZXhpc3RzPUZhbHNlLCAqKm9wdGlvbnMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290PU5vbmUsIGZvbnQ9Tm9uZSwgbmFtZT1Ob25lLCBleGlzdHM9RmFsc2UsCisgICAgICAgICAgICAgICAgICoqb3B0aW9ucyk6CiAgICAgICAgIGlmIG5vdCByb290OgogICAgICAgICAgICAgcm9vdCA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAogICAgICAgICBpZiBmb250OgpAQCAtNzIsNyArNzUsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9udCA9IHNlbGYuX3NldChvcHRpb25zKQogICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSAiZm9udCIgKyBzdHIoaWQoc2VsZikpCisgICAgICAgICAgICBuYW1lID0gImZvbnQiICsgc3RyKG5leHQoc2VsZi5jb3VudGVyKSkKICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogCiAgICAgICAgIGlmIGV4aXN0czoKQEAgLTExOCwxNCArMTIxLDE3IEBACiAgICAgICAgICJSZXR1cm4gYSBkaXN0aW5jdCBjb3B5IG9mIHRoZSBjdXJyZW50IGZvbnQiCiAgICAgICAgIHJldHVybiBGb250KHNlbGYuX3Jvb3QsICoqc2VsZi5hY3R1YWwoKSkKIAotICAgIGRlZiBhY3R1YWwoc2VsZiwgb3B0aW9uPU5vbmUpOgorICAgIGRlZiBhY3R1YWwoc2VsZiwgb3B0aW9uPU5vbmUsIGRpc3BsYXlvZj1Ob25lKToKICAgICAgICAgIlJldHVybiBhY3R1YWwgZm9udCBhdHRyaWJ1dGVzIgorICAgICAgICBhcmdzID0gKCkKKyAgICAgICAgaWYgZGlzcGxheW9mOgorICAgICAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZikKICAgICAgICAgaWYgb3B0aW9uOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lLCAiLSIrb3B0aW9uKQorICAgICAgICAgICAgYXJncyA9IGFyZ3MgKyAoJy0nICsgb3B0aW9uLCApCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FsbCgiZm9udCIsICJhY3R1YWwiLCBzZWxmLm5hbWUsICphcmdzKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21rZGljdCgKLSAgICAgICAgICAgICAgICBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgImFjdHVhbCIsIHNlbGYubmFtZSkpCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiYWN0dWFsIiwgc2VsZi5uYW1lLCAqYXJncykpKQogCiAgICAgZGVmIGNnZXQoc2VsZiwgb3B0aW9uKToKICAgICAgICAgIkdldCBmb250IGF0dHJpYnV0ZSIKQEAgLTEzOCwzNyArMTQ0LDQ3IEBACiAgICAgICAgICAgICAgICAgICAqc2VsZi5fc2V0KG9wdGlvbnMpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21rZGljdCgKLSAgICAgICAgICAgICAgICBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgImNvbmZpZyIsIHNlbGYubmFtZSkpCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHNlbGYuX3NwbGl0KHNlbGYuX2NhbGwoImZvbnQiLCAiY29uZmlnIiwgc2VsZi5uYW1lKSkpCiAKICAgICBjb25maWd1cmUgPSBjb25maWcKIAotICAgIGRlZiBtZWFzdXJlKHNlbGYsIHRleHQpOgorICAgIGRlZiBtZWFzdXJlKHNlbGYsIHRleHQsIGRpc3BsYXlvZj1Ob25lKToKICAgICAgICAgIlJldHVybiB0ZXh0IHdpZHRoIgotICAgICAgICByZXR1cm4gaW50KHNlbGYuX2NhbGwoImZvbnQiLCAibWVhc3VyZSIsIHNlbGYubmFtZSwgdGV4dCkpCisgICAgICAgIGFyZ3MgPSAodGV4dCwpCisgICAgICAgIGlmIGRpc3BsYXlvZjoKKyAgICAgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YsIHRleHQpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi5fY2FsbCgiZm9udCIsICJtZWFzdXJlIiwgc2VsZi5uYW1lLCAqYXJncykpCiAKLSAgICBkZWYgbWV0cmljcyhzZWxmLCAqb3B0aW9ucyk6CisgICAgZGVmIG1ldHJpY3Moc2VsZiwgKm9wdGlvbnMsICoqa3cpOgogICAgICAgICAiIiJSZXR1cm4gZm9udCBtZXRyaWNzLgogCiAgICAgICAgIEZvciBiZXN0IHBlcmZvcm1hbmNlLCBjcmVhdGUgYSBkdW1teSB3aWRnZXQKICAgICAgICAgdXNpbmcgdGhpcyBmb250IGJlZm9yZSBjYWxsaW5nIHRoaXMgbWV0aG9kLiIiIgotCisgICAgICAgIGFyZ3MgPSAoKQorICAgICAgICBkaXNwbGF5b2YgPSBrdy5wb3AoJ2Rpc3BsYXlvZicsIE5vbmUpCisgICAgICAgIGlmIGRpc3BsYXlvZjoKKyAgICAgICAgICAgIGFyZ3MgPSAoJy1kaXNwbGF5b2YnLCBkaXNwbGF5b2YpCiAgICAgICAgIGlmIG9wdGlvbnM6CisgICAgICAgICAgICBhcmdzID0gYXJncyArIHNlbGYuX2dldChvcHRpb25zKQogICAgICAgICAgICAgcmV0dXJuIGludCgKLSAgICAgICAgICAgICAgICBzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUsIHNlbGYuX2dldChvcHRpb25zKSkKLSAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCAqYXJncykpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXMgPSBzZWxmLl9zcGxpdChzZWxmLl9jYWxsKCJmb250IiwgIm1ldHJpY3MiLCBzZWxmLm5hbWUpKQorICAgICAgICAgICAgcmVzID0gc2VsZi5fc3BsaXQoc2VsZi5fY2FsbCgiZm9udCIsICJtZXRyaWNzIiwgc2VsZi5uYW1lLCAqYXJncykpCiAgICAgICAgICAgICBvcHRpb25zID0ge30KICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihyZXMpLCAyKToKICAgICAgICAgICAgICAgICBvcHRpb25zW3Jlc1tpXVsxOl1dID0gaW50KHJlc1tpKzFdKQogICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMKIAotZGVmIGZhbWlsaWVzKHJvb3Q9Tm9uZSk6CisKK2RlZiBmYW1pbGllcyhyb290PU5vbmUsIGRpc3BsYXlvZj1Ob25lKToKICAgICAiR2V0IGZvbnQgZmFtaWxpZXMgKGFzIGEgdHVwbGUpIgogICAgIGlmIG5vdCByb290OgogICAgICAgICByb290ID0gdGtpbnRlci5fZGVmYXVsdF9yb290Ci0gICAgcmV0dXJuIHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgiZm9udCIsICJmYW1pbGllcyIpKQorICAgIGFyZ3MgPSAoKQorICAgIGlmIGRpc3BsYXlvZjoKKyAgICAgICAgYXJncyA9ICgnLWRpc3BsYXlvZicsIGRpc3BsYXlvZikKKyAgICByZXR1cm4gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCJmb250IiwgImZhbWlsaWVzIiwgKmFyZ3MpKQorCiAKIGRlZiBuYW1lcyhyb290PU5vbmUpOgogICAgICJHZXQgbmFtZXMgb2YgZGVmaW5lZCBmb250cyAoYXMgYSB0dXBsZSkiCkBAIC0xNzYsNiArMTkyLDcgQEAKICAgICAgICAgcm9vdCA9IHRraW50ZXIuX2RlZmF1bHRfcm9vdAogICAgIHJldHVybiByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoImZvbnQiLCAibmFtZXMiKSkKIAorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIHRlc3Qgc3R1ZmYKIApAQCAtMTk4LDEwICsyMTUsMTAgQEAKIAogICAgIHByaW50KGYubWVhc3VyZSgiaGVsbG8iKSwgZi5tZXRyaWNzKCJsaW5lc3BhY2UiKSkKIAotICAgIHByaW50KGYubWV0cmljcygpKQorICAgIHByaW50KGYubWV0cmljcyhkaXNwbGF5b2Y9cm9vdCkpCiAKICAgICBmID0gRm9udChmb250PSgiQ291cmllciIsIDIwLCAiYm9sZCIpKQotICAgIHByaW50KGYubWVhc3VyZSgiaGVsbG8iKSwgZi5tZXRyaWNzKCJsaW5lc3BhY2UiKSkKKyAgICBwcmludChmLm1lYXN1cmUoImhlbGxvIiksIGYubWV0cmljcygibGluZXNwYWNlIiwgZGlzcGxheW9mPXJvb3QpKQogCiAgICAgdyA9IHRraW50ZXIuTGFiZWwocm9vdCwgdGV4dD0iSGVsbG8sIHdvcmxkIiwgZm9udD1mKQogICAgIHcucGFjaygpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weSBiL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfdmFyaWFibGVzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3OGNjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtMCwwICsxLDE2NSBAQAoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdGtpbnRlciBpbXBvcnQgVmFyaWFibGUsIFN0cmluZ1ZhciwgSW50VmFyLCBEb3VibGVWYXIsIEJvb2xlYW5WYXIsIFRrCisKKworY2xhc3MgVmFyKFZhcmlhYmxlKToKKworICAgIF9kZWZhdWx0ID0gImRlZmF1bHQiCisgICAgc2lkZV9lZmZlY3QgPSBGYWxzZQorCisgICAgZGVmIHNldChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuc2lkZV9lZmZlY3QgPSBUcnVlCisgICAgICAgIHN1cGVyKCkuc2V0KHZhbHVlKQorCisKK2NsYXNzIFRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yb290ID0gVGsoKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnJvb3QuZGVzdHJveSgpCisKKworY2xhc3MgVGVzdFZhcmlhYmxlKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3RyKHYpLCByIl5QWV9WQVIoXGQrKSQiKQorCisgICAgZGVmIHRlc3RfbmFtZV9hbmRfdmFsdWUoc2VsZik6CisgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QsICJzYW1wbGUgc3RyaW5nIiwgInZhcm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJzYW1wbGUgc3RyaW5nIiwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidmFybmFtZSIsIHN0cih2KSkKKworICAgIGRlZiB0ZXN0X19fZGVsX18oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgInZhcm5hbWUiKSkKKyAgICAgICAgdiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgInNhbXBsZSBzdHJpbmciLCAidmFybmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorICAgICAgICBkZWwgdgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJ2YXJuYW1lIikpCisKKyAgICBkZWYgdGVzdF9kb250X3Vuc2V0X25vdF9leGlzdGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJvb3QuY2FsbCgiaW5mbyIsICJleGlzdHMiLCAidmFybmFtZSIpKQorICAgICAgICB2MSA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHYyID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgZGVsIHYxCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5yb290LmNhbGwoImluZm8iLCAiZXhpc3RzIiwgIm5hbWUiKSkKKyAgICAgICAgIyBzaG91bGRuJ3QgcmFpc2UgZXhjZXB0aW9uCisgICAgICAgIGRlbCB2MgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucm9vdC5jYWxsKCJpbmZvIiwgImV4aXN0cyIsICJuYW1lIikpCisKKyAgICBkZWYgdGVzdF9fX2VxX18oc2VsZik6CisgICAgICAgICMgdmFsdWVzIGRvZXNuJ3QgbWF0dGVyLCBvbmx5IGNsYXNzIGFuZCBuYW1lIGFyZSBjaGVja2VkCisgICAgICAgIHYxID0gVmFyaWFibGUoc2VsZi5yb290LCBuYW1lPSJhYmMiKQorICAgICAgICB2MiA9IFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2MSwgdjIpCisKKyAgICAgICAgdjMgPSBWYXJpYWJsZShzZWxmLnJvb3QsIG5hbWU9ImFiYyIpCisgICAgICAgIHY0ID0gU3RyaW5nVmFyKHNlbGYucm9vdCwgbmFtZT0iYWJjIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCh2MywgdjQpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX25hbWUoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIFZhcmlhYmxlKHNlbGYucm9vdCwgbmFtZT0xMjMpCisKKyAgICBkZWYgdGVzdF9pbml0aWFsaXplKHNlbGYpOgorICAgICAgICB2ID0gVmFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh2LnNpZGVfZWZmZWN0KQorICAgICAgICB2LnNldCgidmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUodi5zaWRlX2VmZmVjdCkKKworCitjbGFzcyBUZXN0U3RyaW5nVmFyKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBTdHJpbmdWYXIoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiLCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfZ2V0KHNlbGYpOgorICAgICAgICB2ID0gU3RyaW5nVmFyKHNlbGYucm9vdCwgImFiYyIsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjIiwgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInZhbHVlIiwgdi5nZXQoKSkKKworCitjbGFzcyBUZXN0SW50VmFyKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBJbnRWYXIoc2VsZi5yb290LCAxMjMsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMjMsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMzQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzNDUsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlKHNlbGYpOgorICAgICAgICB2ID0gSW50VmFyKHNlbGYucm9vdCwgbmFtZT0ibmFtZSIpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAidmFsdWUiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjM0NS4wIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKworCitjbGFzcyBUZXN0RG91YmxlVmFyKFRlc3RCYXNlKToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CisgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAuMCwgdi5nZXQoKSkKKworICAgIGRlZiB0ZXN0X2dldChzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QsIDEuMjMsICJuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgxLjIzLCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjMuNDUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKDMuNDUsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXRfZnJvbV9pbnQoc2VsZik6CisgICAgICAgIHYgPSBEb3VibGVWYXIoc2VsZi5yb290LCAxLjIzLCAibmFtZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoMS4yMywgdi5nZXQoKSkKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICIzLjQ1IikKKyAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbCgzLjQ1LCB2LmdldCgpKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgIjQ1NiIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoNDU2LCB2LmdldCgpKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF92YWx1ZShzZWxmKToKKyAgICAgICAgdiA9IERvdWJsZVZhcihzZWxmLnJvb3QsIG5hbWU9Im5hbWUiKQorICAgICAgICBzZWxmLnJvb3QuZ2xvYmFsc2V0dmFyKCJuYW1lIiwgInZhbHVlIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKworCitjbGFzcyBUZXN0Qm9vbGVhblZhcihUZXN0QmFzZSk6CisKKyAgICBkZWYgdGVzdF9kZWZhdWx0KHNlbGYpOgorICAgICAgICB2ID0gQm9vbGVhblZhcihzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9nZXQoc2VsZik6CisgICAgICAgIHYgPSBCb29sZWFuVmFyKHNlbGYucm9vdCwgVHJ1ZSwgIm5hbWUiKQorICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKFRydWUsIHYuZ2V0KCkpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoRmFsc2UsIHYuZ2V0KCkpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3ZhbHVlX2RvbWFpbihzZWxmKToKKyAgICAgICAgdiA9IEJvb2xlYW5WYXIoc2VsZi5yb290LCBuYW1lPSJuYW1lIikKKyAgICAgICAgc2VsZi5yb290Lmdsb2JhbHNldHZhcigibmFtZSIsICJ2YWx1ZSIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYucm9vdC5nbG9iYWxzZXR2YXIoIm5hbWUiLCAiMS4wIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHYuZ2V0KCkKKworCit0ZXN0c19ndWkgPSAoVGVzdFZhcmlhYmxlLCBUZXN0U3RyaW5nVmFyLCBUZXN0SW50VmFyLAorICAgICAgICAgICAgIFRlc3REb3VibGVWYXIsIFRlc3RCb29sZWFuVmFyKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAorICAgIHJ1bl91bml0dGVzdCgqdGVzdHNfZ3VpKQpkaWZmIC0tZ2l0IGEvTGliL3Rva2VuLnB5IGIvTGliL3Rva2VuLnB5CmluZGV4IDZiNTMyMGQuLjMxZmFlMGEgMTAwNzU1Ci0tLSBhL0xpYi90b2tlbi5weQorKysgYi9MaWIvdG9rZW4ucHkKQEAgLTcwLDcgKzcwLDcgQEAKIAogdG9rX25hbWUgPSB7dmFsdWU6IG5hbWUKICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBnbG9iYWxzKCkuaXRlbXMoKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KX0KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGludCkgYW5kIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJ18nKX0KIF9fYWxsX18uZXh0ZW5kKHRva19uYW1lLnZhbHVlcygpKQogCiBkZWYgSVNURVJNSU5BTCh4KToKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCA1OTA4MWQzLi5kNjY5NDEyIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC00NSw2ICs0NSw1MSBAQAogRU5DT0RJTkcgPSBOX1RPS0VOUyArIDIKIHRva19uYW1lW0VOQ09ESU5HXSA9ICdFTkNPRElORycKIE5fVE9LRU5TICs9IDMKK0VYQUNUX1RPS0VOX1RZUEVTID0geworICAgICcoJzogICBMUEFSLAorICAgICcpJzogICBSUEFSLAorICAgICdbJzogICBMU1FCLAorICAgICddJzogICBSU1FCLAorICAgICc6JzogICBDT0xPTiwKKyAgICAnLCc6ICAgQ09NTUEsCisgICAgJzsnOiAgIFNFTUksCisgICAgJysnOiAgIFBMVVMsCisgICAgJy0nOiAgIE1JTlVTLAorICAgICcqJzogICBTVEFSLAorICAgICcvJzogICBTTEFTSCwKKyAgICAnfCc6ICAgVkJBUiwKKyAgICAnJic6ICAgQU1QRVIsCisgICAgJzwnOiAgIExFU1MsCisgICAgJz4nOiAgIEdSRUFURVIsCisgICAgJz0nOiAgIEVRVUFMLAorICAgICcuJzogICBET1QsCisgICAgJyUnOiAgIFBFUkNFTlQsCisgICAgJ3snOiAgIExCUkFDRSwKKyAgICAnfSc6ICAgUkJSQUNFLAorICAgICc9PSc6ICBFUUVRVUFMLAorICAgICchPSc6ICBOT1RFUVVBTCwKKyAgICAnPD0nOiAgTEVTU0VRVUFMLAorICAgICc+PSc6ICBHUkVBVEVSRVFVQUwsCisgICAgJ34nOiAgIFRJTERFLAorICAgICdeJzogICBDSVJDVU1GTEVYLAorICAgICc8PCc6ICBMRUZUU0hJRlQsCisgICAgJz4+JzogIFJJR0hUU0hJRlQsCisgICAgJyoqJzogIERPVUJMRVNUQVIsCisgICAgJys9JzogIFBMVVNFUVVBTCwKKyAgICAnLT0nOiAgTUlORVFVQUwsCisgICAgJyo9JzogIFNUQVJFUVVBTCwKKyAgICAnLz0nOiAgU0xBU0hFUVVBTCwKKyAgICAnJT0nOiAgUEVSQ0VOVEVRVUFMLAorICAgICcmPSc6ICBBTVBFUkVRVUFMLAorICAgICd8PSc6ICBWQkFSRVFVQUwsCisgICAgJ149JzogQ0lSQ1VNRkxFWEVRVUFMLAorICAgICc8PD0nOiBMRUZUU0hJRlRFUVVBTCwKKyAgICAnPj49JzogUklHSFRTSElGVEVRVUFMLAorICAgICcqKj0nOiBET1VCTEVTVEFSRVFVQUwsCisgICAgJy8vJzogIERPVUJMRVNMQVNILAorICAgICcvLz0nOiBET1VCTEVTTEFTSEVRVUFMLAorICAgICdAJzogICBBVAorfQogCiBjbGFzcyBUb2tlbkluZm8oY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnVG9rZW5JbmZvJywgJ3R5cGUgc3RyaW5nIHN0YXJ0IGVuZCBsaW5lJykpOgogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTUyLDYgKzk3LDEzIEBACiAgICAgICAgIHJldHVybiAoJ1Rva2VuSW5mbyh0eXBlPSVzLCBzdHJpbmc9JXIsIHN0YXJ0PSVyLCBlbmQ9JXIsIGxpbmU9JXIpJyAlCiAgICAgICAgICAgICAgICAgc2VsZi5fcmVwbGFjZSh0eXBlPWFubm90YXRlZF90eXBlKSkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBleGFjdF90eXBlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnR5cGUgPT0gT1AgYW5kIHNlbGYuc3RyaW5nIGluIEVYQUNUX1RPS0VOX1RZUEVTOgorICAgICAgICAgICAgcmV0dXJuIEVYQUNUX1RPS0VOX1RZUEVTW3NlbGYuc3RyaW5nXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYudHlwZQorCiBkZWYgZ3JvdXAoKmNob2ljZXMpOiByZXR1cm4gJygnICsgJ3wnLmpvaW4oY2hvaWNlcykgKyAnKScKIGRlZiBhbnkoKmNob2ljZXMpOiByZXR1cm4gZ3JvdXAoKmNob2ljZXMpICsgJyonCiBkZWYgbWF5YmUoKmNob2ljZXMpOiByZXR1cm4gZ3JvdXAoKmNob2ljZXMpICsgJz8nCkBAIC03NSw2ICsxMjcsOCBAQAogSW1hZ251bWJlciA9IGdyb3VwKHInWzAtOV0rW2pKXScsIEZsb2F0bnVtYmVyICsgcidbakpdJykKIE51bWJlciA9IGdyb3VwKEltYWdudW1iZXIsIEZsb2F0bnVtYmVyLCBJbnRudW1iZXIpCiAKK1N0cmluZ1ByZWZpeCA9IHInKD86W2JCXVtyUl0/fFtyUl1bYkJdP3xbdVVdKT8nCisKICMgVGFpbCBlbmQgb2YgJyBzdHJpbmcuCiBTaW5nbGUgPSByIlteJ1xcXSooPzpcXC5bXidcXF0qKSonIgogIyBUYWlsIGVuZCBvZiAiIHN0cmluZy4KQEAgLTgzLDEwICsxMzcsMTAgQEAKIFNpbmdsZTMgPSByIlteJ1xcXSooPzooPzpcXC58Jyg/IScnKSlbXidcXF0qKSonJyciCiAjIFRhaWwgZW5kIG9mICIiIiBzdHJpbmcuCiBEb3VibGUzID0gcidbXiJcXF0qKD86KD86XFwufCIoPyEiIikpW14iXFxdKikqIiIiJwotVHJpcGxlID0gZ3JvdXAoIltiQl0/W3JSXT8nJyciLCAnW2JCXT9bclJdPyIiIicpCitUcmlwbGUgPSBncm91cChTdHJpbmdQcmVmaXggKyAiJycnIiwgU3RyaW5nUHJlZml4ICsgJyIiIicpCiAjIFNpbmdsZS1saW5lICcgb3IgIiBzdHJpbmcuCi1TdHJpbmcgPSBncm91cChyIltiQl0/W3JSXT8nW15cbidcXF0qKD86XFwuW15cbidcXF0qKSonIiwKLSAgICAgICAgICAgICAgIHInW2JCXT9bclJdPyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKiInKQorU3RyaW5nID0gZ3JvdXAoU3RyaW5nUHJlZml4ICsgciInW15cbidcXF0qKD86XFwuW15cbidcXF0qKSonIiwKKyAgICAgICAgICAgICAgIFN0cmluZ1ByZWZpeCArIHInIlteXG4iXFxdKig/OlxcLlteXG4iXFxdKikqIicpCiAKICMgQmVjYXVzZSBvZiBsZWZ0bW9zdC10aGVuLWxvbmdlc3QgbWF0Y2ggc2VtYW50aWNzLCBiZSBzdXJlIHRvIHB1dCB0aGUKICMgbG9uZ2VzdCBvcGVyYXRvcnMgZmlyc3QgKGUuZy4sIGlmID0gY2FtZSBiZWZvcmUgPT0sID09IHdvdWxkIGdldApAQCAtMTA0LDkgKzE1OCw5IEBACiBUb2tlbiA9IElnbm9yZSArIFBsYWluVG9rZW4KIAogIyBGaXJzdCAob3Igb25seSkgbGluZSBvZiAnIG9yICIgc3RyaW5nLgotQ29udFN0ciA9IGdyb3VwKHIiW2JCXT9bclJdPydbXlxuJ1xcXSooPzpcXC5bXlxuJ1xcXSopKiIgKworQ29udFN0ciA9IGdyb3VwKFN0cmluZ1ByZWZpeCArIHIiJ1teXG4nXFxdKig/OlxcLlteXG4nXFxdKikqIiArCiAgICAgICAgICAgICAgICAgZ3JvdXAoIiciLCByJ1xcXHI/XG4nKSwKLSAgICAgICAgICAgICAgICByJ1tiQl0/W3JSXT8iW15cbiJcXF0qKD86XFwuW15cbiJcXF0qKSonICsKKyAgICAgICAgICAgICAgICBTdHJpbmdQcmVmaXggKyByJyJbXlxuIlxcXSooPzpcXC5bXlxuIlxcXSopKicgKwogICAgICAgICAgICAgICAgIGdyb3VwKCciJywgcidcXFxyP1xuJykpCiBQc2V1ZG9FeHRyYXMgPSBncm91cChyJ1xcXHI/XG4nLCBDb21tZW50LCBUcmlwbGUpCiBQc2V1ZG9Ub2tlbiA9IFdoaXRlc3BhY2UgKyBncm91cChQc2V1ZG9FeHRyYXMsIE51bWJlciwgRnVubnksIENvbnRTdHIsIE5hbWUpCkBAIC0xMTQsMzcgKzE2OCw0OSBAQAogZGVmIF9jb21waWxlKGV4cHIpOgogICAgIHJldHVybiByZS5jb21waWxlKGV4cHIsIHJlLlVOSUNPREUpCiAKLXRva2VucHJvZywgcHNldWRvcHJvZywgc2luZ2xlM3Byb2csIGRvdWJsZTNwcm9nID0gbWFwKAotICAgIF9jb21waWxlLCAoVG9rZW4sIFBzZXVkb1Rva2VuLCBTaW5nbGUzLCBEb3VibGUzKSkKLWVuZHByb2dzID0geyInIjogX2NvbXBpbGUoU2luZ2xlKSwgJyInOiBfY29tcGlsZShEb3VibGUpLAotICAgICAgICAgICAgIicnJyI6IHNpbmdsZTNwcm9nLCAnIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAicicnJyI6IHNpbmdsZTNwcm9nLCAnciIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgImInJyciOiBzaW5nbGUzcHJvZywgJ2IiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJicicnJyI6IHNpbmdsZTNwcm9nLCAnYnIiIiInOiBkb3VibGUzcHJvZywKLSAgICAgICAgICAgICJSJycnIjogc2luZ2xlM3Byb2csICdSIiIiJzogZG91YmxlM3Byb2csCi0gICAgICAgICAgICAiQicnJyI6IHNpbmdsZTNwcm9nLCAnQiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgImJSJycnIjogc2luZ2xlM3Byb2csICdiUiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIkJyJycnIjogc2luZ2xlM3Byb2csICdCciIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgIkJSJycnIjogc2luZ2xlM3Byb2csICdCUiIiIic6IGRvdWJsZTNwcm9nLAotICAgICAgICAgICAgJ3InOiBOb25lLCAnUic6IE5vbmUsICdiJzogTm9uZSwgJ0InOiBOb25lfQorZW5kcGF0cyA9IHsiJyI6IFNpbmdsZSwgJyInOiBEb3VibGUsCisgICAgICAgICAgICInJyciOiBTaW5nbGUzLCAnIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgInInJyciOiBTaW5nbGUzLCAnciIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJiJycnIjogU2luZ2xlMywgJ2IiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiUicnJyI6IFNpbmdsZTMsICdSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIkInJyciOiBTaW5nbGUzLCAnQiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJicicnJyI6IFNpbmdsZTMsICdiciIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJiUicnJyI6IFNpbmdsZTMsICdiUiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJCcicnJyI6IFNpbmdsZTMsICdCciIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJCUicnJyI6IFNpbmdsZTMsICdCUiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJyYicnJyI6IFNpbmdsZTMsICdyYiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSYicnJyI6IFNpbmdsZTMsICdSYiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJyQicnJyI6IFNpbmdsZTMsICdyQiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJSQicnJyI6IFNpbmdsZTMsICdSQiIiIic6IERvdWJsZTMsCisgICAgICAgICAgICJ1JycnIjogU2luZ2xlMywgJ3UiIiInOiBEb3VibGUzLAorICAgICAgICAgICAiUicnJyI6IFNpbmdsZTMsICdSIiIiJzogRG91YmxlMywKKyAgICAgICAgICAgIlUnJyciOiBTaW5nbGUzLCAnVSIiIic6IERvdWJsZTMsCisgICAgICAgICAgICdyJzogTm9uZSwgJ1InOiBOb25lLCAnYic6IE5vbmUsICdCJzogTm9uZSwKKyAgICAgICAgICAgJ3UnOiBOb25lLCAnVSc6IE5vbmV9CiAKIHRyaXBsZV9xdW90ZWQgPSB7fQogZm9yIHQgaW4gKCInJyciLCAnIiIiJywKICAgICAgICAgICAicicnJyIsICdyIiIiJywgIlInJyciLCAnUiIiIicsCiAgICAgICAgICAgImInJyciLCAnYiIiIicsICJCJycnIiwgJ0IiIiInLAogICAgICAgICAgICJicicnJyIsICdiciIiIicsICJCcicnJyIsICdCciIiIicsCi0gICAgICAgICAgImJSJycnIiwgJ2JSIiIiJywgIkJSJycnIiwgJ0JSIiIiJyk6CisgICAgICAgICAgImJSJycnIiwgJ2JSIiIiJywgIkJSJycnIiwgJ0JSIiIiJywKKyAgICAgICAgICAicmInJyciLCAncmIiIiInLCAickInJyciLCAnckIiIiInLAorICAgICAgICAgICJSYicnJyIsICdSYiIiIicsICJSQicnJyIsICdSQiIiIicsCisgICAgICAgICAgInUnJyciLCAndSIiIicsICJVJycnIiwgJ1UiIiInLAorICAgICAgICAgICk6CiAgICAgdHJpcGxlX3F1b3RlZFt0XSA9IHQKIHNpbmdsZV9xdW90ZWQgPSB7fQogZm9yIHQgaW4gKCInIiwgJyInLAogICAgICAgICAgICJyJyIsICdyIicsICJSJyIsICdSIicsCiAgICAgICAgICAgImInIiwgJ2IiJywgIkInIiwgJ0IiJywKICAgICAgICAgICAiYnInIiwgJ2JyIicsICJCciciLCAnQnIiJywKLSAgICAgICAgICAiYlInIiwgJ2JSIicsICJCUiciLCAnQlIiJyApOgorICAgICAgICAgICJiUiciLCAnYlIiJywgIkJSJyIsICdCUiInICwKKyAgICAgICAgICAicmInIiwgJ3JiIicsICJyQiciLCAnckIiJywKKyAgICAgICAgICAiUmInIiwgJ1JiIicsICJSQiciLCAnUkIiJyAsCisgICAgICAgICAgInUnIiwgJ3UiJywgIlUnIiwgJ1UiJywKKyAgICAgICAgICApOgogICAgIHNpbmdsZV9xdW90ZWRbdF0gPSB0CiAKLWRlbCBfY29tcGlsZQotCiB0YWJzaXplID0gOAogCiBjbGFzcyBUb2tlbkVycm9yKEV4Y2VwdGlvbik6IHBhc3MKQEAgLTI4MSw2ICszNDcsMTAgQEAKIAogICAgIElmIG5vIGVuY29kaW5nIGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgZGVmYXVsdCBvZiAndXRmLTgnIHdpbGwgYmUgcmV0dXJuZWQuCiAgICAgIiIiCisgICAgdHJ5OgorICAgICAgICBmaWxlbmFtZSA9IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGZpbGVuYW1lID0gTm9uZQogICAgIGJvbV9mb3VuZCA9IEZhbHNlCiAgICAgZW5jb2RpbmcgPSBOb25lCiAgICAgZGVmYXVsdCA9ICd1dGYtOCcKQEAgLTI5Nyw3ICszNjcsMTAgQEAKICAgICAgICAgICAgICMgcGVyIGRlZmF1bHQgZW5jb2RpbmcuCiAgICAgICAgICAgICBsaW5lX3N0cmluZyA9IGxpbmUuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcigiaW52YWxpZCBvciBtaXNzaW5nIGVuY29kaW5nIGRlY2xhcmF0aW9uIikKKyAgICAgICAgICAgIG1zZyA9ICJpbnZhbGlkIG9yIG1pc3NpbmcgZW5jb2RpbmcgZGVjbGFyYXRpb24iCisgICAgICAgICAgICBpZiBmaWxlbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBtc2cgPSAne30gZm9yIHshcn0nLmZvcm1hdChtc2csIGZpbGVuYW1lKQorICAgICAgICAgICAgcmFpc2UgU3ludGF4RXJyb3IobXNnKQogCiAgICAgICAgIG1hdGNoZXMgPSBjb29raWVfcmUuZmluZGFsbChsaW5lX3N0cmluZykKICAgICAgICAgaWYgbm90IG1hdGNoZXM6CkBAIC0zMDcsMTIgKzM4MCwyMSBAQAogICAgICAgICAgICAgY29kZWMgPSBsb29rdXAoZW5jb2RpbmcpCiAgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKICAgICAgICAgICAgICMgVGhpcyBiZWhhdmlvdXIgbWltaWNzIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKLSAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKCJ1bmtub3duIGVuY29kaW5nOiAiICsgZW5jb2RpbmcpCisgICAgICAgICAgICBpZiBmaWxlbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ1bmtub3duIGVuY29kaW5nOiAiICsgZW5jb2RpbmcKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZW5jb2RpbmcgZm9yIHshcn06IHt9Ii5mb3JtYXQoZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZykKKyAgICAgICAgICAgIHJhaXNlIFN5bnRheEVycm9yKG1zZykKIAogICAgICAgICBpZiBib21fZm91bmQ6CiAgICAgICAgICAgICBpZiBlbmNvZGluZyAhPSAndXRmLTgnOgogICAgICAgICAgICAgICAgICMgVGhpcyBiZWhhdmlvdXIgbWltaWNzIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKLSAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcignZW5jb2RpbmcgcHJvYmxlbTogdXRmLTgnKQorICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdlbmNvZGluZyBwcm9ibGVtOiB1dGYtOCcKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtc2cgPSAnZW5jb2RpbmcgcHJvYmxlbSBmb3IgeyFyfTogdXRmLTgnLmZvcm1hdChmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICByYWlzZSBTeW50YXhFcnJvcihtc2cpCiAgICAgICAgICAgICBlbmNvZGluZyArPSAnLXNpZycKICAgICAgICAgcmV0dXJuIGVuY29kaW5nCiAKQEAgLTQ2OSw3ICs1NTEsNyBAQAogICAgICAgICAgICAgY29udGludWVkID0gMAogCiAgICAgICAgIHdoaWxlIHBvcyA8IG1heDoKLSAgICAgICAgICAgIHBzZXVkb21hdGNoID0gcHNldWRvcHJvZy5tYXRjaChsaW5lLCBwb3MpCisgICAgICAgICAgICBwc2V1ZG9tYXRjaCA9IF9jb21waWxlKFBzZXVkb1Rva2VuKS5tYXRjaChsaW5lLCBwb3MpCiAgICAgICAgICAgICBpZiBwc2V1ZG9tYXRjaDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2NhbiBmb3IgdG9rZW5zCiAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCA9IHBzZXVkb21hdGNoLnNwYW4oMSkKICAgICAgICAgICAgICAgICBzcG9zLCBlcG9zLCBwb3MgPSAobG51bSwgc3RhcnQpLCAobG51bSwgZW5kKSwgZW5kCkBAIC00ODUsNyArNTY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCB0b2tlbi5lbmRzd2l0aCgiXG4iKQogICAgICAgICAgICAgICAgICAgICB5aWVsZCBUb2tlbkluZm8oQ09NTUVOVCwgdG9rZW4sIHNwb3MsIGVwb3MsIGxpbmUpCiAgICAgICAgICAgICAgICAgZWxpZiB0b2tlbiBpbiB0cmlwbGVfcXVvdGVkOgotICAgICAgICAgICAgICAgICAgICBlbmRwcm9nID0gZW5kcHJvZ3NbdG9rZW5dCisgICAgICAgICAgICAgICAgICAgIGVuZHByb2cgPSBfY29tcGlsZShlbmRwYXRzW3Rva2VuXSkKICAgICAgICAgICAgICAgICAgICAgZW5kbWF0Y2ggPSBlbmRwcm9nLm1hdGNoKGxpbmUsIHBvcykKICAgICAgICAgICAgICAgICAgICAgaWYgZW5kbWF0Y2g6ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhbGwgb24gb25lIGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IGVuZG1hdGNoLmVuZCgwKQpAQCAtNTAxLDggKzU4Myw5IEBACiAgICAgICAgICAgICAgICAgICAgIHRva2VuWzozXSBpbiBzaW5nbGVfcXVvdGVkOgogICAgICAgICAgICAgICAgICAgICBpZiB0b2tlblstMV0gPT0gJ1xuJzogICAgICAgICAgICAgICAgICAjIGNvbnRpbnVlZCBzdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnN0YXJ0ID0gKGxudW0sIHN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IChlbmRwcm9nc1tpbml0aWFsXSBvciBlbmRwcm9nc1t0b2tlblsxXV0gb3IKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZ3NbdG9rZW5bMl1dKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5kcHJvZyA9IF9jb21waWxlKGVuZHBhdHNbaW5pdGlhbF0gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRwYXRzW3Rva2VuWzFdXSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZHBhdHNbdG9rZW5bMl1dKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udHN0ciwgbmVlZGNvbnQgPSBsaW5lW3N0YXJ0Ol0sIDEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRsaW5lID0gbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTUzMywyNyArNjE2LDY1IEBACiBkZWYgZ2VuZXJhdGVfdG9rZW5zKHJlYWRsaW5lKToKICAgICByZXR1cm4gX3Rva2VuaXplKHJlYWRsaW5lLCBOb25lKQogCitkZWYgbWFpbigpOgorICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgIyBIZWxwZXIgZXJyb3IgaGFuZGxpbmcgcm91dGluZXMKKyAgICBkZWYgcGVycm9yKG1lc3NhZ2UpOgorICAgICAgICBwcmludChtZXNzYWdlLCBmaWxlPXN5cy5zdGRlcnIpCisKKyAgICBkZWYgZXJyb3IobWVzc2FnZSwgZmlsZW5hbWU9Tm9uZSwgbG9jYXRpb249Tm9uZSk6CisgICAgICAgIGlmIGxvY2F0aW9uOgorICAgICAgICAgICAgYXJncyA9IChmaWxlbmFtZSwpICsgbG9jYXRpb24gKyAobWVzc2FnZSwpCisgICAgICAgICAgICBwZXJyb3IoIiVzOiVkOiVkOiBlcnJvcjogJXMiICUgYXJncykKKyAgICAgICAgZWxpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIHBlcnJvcigiJXM6IGVycm9yOiAlcyIgJSAoZmlsZW5hbWUsIG1lc3NhZ2UpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGVycm9yKCJlcnJvcjogJXMiICUgbWVzc2FnZSkKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICMgUGFyc2UgdGhlIGFyZ3VtZW50cyBhbmQgb3B0aW9ucworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9J3B5dGhvbiAtbSB0b2tlbml6ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudChkZXN0PSdmaWxlbmFtZScsIG5hcmdzPSc/JywKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9J2ZpbGVuYW1lLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3RoZSBmaWxlIHRvIHRva2VuaXplOyBkZWZhdWx0cyB0byBzdGRpbicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWUnLCAnLS1leGFjdCcsIGRlc3Q9J2V4YWN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2Rpc3BsYXkgdG9rZW4gbmFtZXMgdXNpbmcgdGhlIGV4YWN0IHR5cGUnKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICB0cnk6CisgICAgICAgICMgVG9rZW5pemUgdGhlIGlucHV0CisgICAgICAgIGlmIGFyZ3MuZmlsZW5hbWU6CisgICAgICAgICAgICBmaWxlbmFtZSA9IGFyZ3MuZmlsZW5hbWUKKyAgICAgICAgICAgIHdpdGggYnVpbHRpbnMub3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICB0b2tlbnMgPSBsaXN0KHRva2VuaXplKGYucmVhZGxpbmUpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZmlsZW5hbWUgPSAiPHN0ZGluPiIKKyAgICAgICAgICAgIHRva2VucyA9IF90b2tlbml6ZShzeXMuc3RkaW4ucmVhZGxpbmUsIE5vbmUpCisKKyAgICAgICAgIyBPdXRwdXQgdGhlIHRva2VuaXphdGlvbgorICAgICAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgorICAgICAgICAgICAgdG9rZW5fdHlwZSA9IHRva2VuLnR5cGUKKyAgICAgICAgICAgIGlmIGFyZ3MuZXhhY3Q6CisgICAgICAgICAgICAgICAgdG9rZW5fdHlwZSA9IHRva2VuLmV4YWN0X3R5cGUKKyAgICAgICAgICAgIHRva2VuX3JhbmdlID0gIiVkLCVkLSVkLCVkOiIgJSAodG9rZW4uc3RhcnQgKyB0b2tlbi5lbmQpCisgICAgICAgICAgICBwcmludCgiJS0yMHMlLTE1cyUtMTVyIiAlCisgICAgICAgICAgICAgICAgICAodG9rZW5fcmFuZ2UsIHRva19uYW1lW3Rva2VuX3R5cGVdLCB0b2tlbi5zdHJpbmcpKQorICAgIGV4Y2VwdCBJbmRlbnRhdGlvbkVycm9yIGFzIGVycjoKKyAgICAgICAgbGluZSwgY29sdW1uID0gZXJyLmFyZ3NbMV1bMTozXQorICAgICAgICBlcnJvcihlcnIuYXJnc1swXSwgZmlsZW5hbWUsIChsaW5lLCBjb2x1bW4pKQorICAgIGV4Y2VwdCBUb2tlbkVycm9yIGFzIGVycjoKKyAgICAgICAgbGluZSwgY29sdW1uID0gZXJyLmFyZ3NbMV0KKyAgICAgICAgZXJyb3IoZXJyLmFyZ3NbMF0sIGZpbGVuYW1lLCAobGluZSwgY29sdW1uKSkKKyAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZXJyOgorICAgICAgICBlcnJvcihlcnIsIGZpbGVuYW1lKQorICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjoKKyAgICAgICAgZXJyb3IoZXJyKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcHJpbnQoImludGVycnVwdGVkXG4iKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICBwZXJyb3IoInVuZXhwZWN0ZWQgZXJyb3I6ICVzIiAlIGVycikKKyAgICAgICAgcmFpc2UKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAjIFF1aWNrIHNhbml0eSBjaGVjawotICAgIHMgPSBiJycnZGVmIHBhcnNlbGluZShzZWxmLCBsaW5lKToKLSAgICAgICAgICAgICIiIlBhcnNlIHRoZSBsaW5lIGludG8gYSBjb21tYW5kIG5hbWUgYW5kIGEgc3RyaW5nIGNvbnRhaW5pbmcKLSAgICAgICAgICAgIHRoZSBhcmd1bWVudHMuICBSZXR1cm5zIGEgdHVwbGUgY29udGFpbmluZyAoY29tbWFuZCwgYXJncywgbGluZSkuCi0gICAgICAgICAgICAnY29tbWFuZCcgYW5kICdhcmdzJyBtYXkgYmUgTm9uZSBpZiB0aGUgbGluZSBjb3VsZG4ndCBiZSBwYXJzZWQuCi0gICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBsaW5lOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBsaW5lCi0gICAgICAgICAgICBlbGlmIGxpbmVbMF0gPT0gJz8nOgotICAgICAgICAgICAgICAgIGxpbmUgPSAnaGVscCAnICsgbGluZVsxOl0KLSAgICAgICAgICAgIGVsaWYgbGluZVswXSA9PSAnISc6Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnZG9fc2hlbGwnKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9ICdzaGVsbCAnICsgbGluZVsxOl0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9uZSwgbGluZQotICAgICAgICAgICAgaSwgbiA9IDAsIGxlbihsaW5lKQotICAgICAgICAgICAgd2hpbGUgaSA8IG4gYW5kIGxpbmVbaV0gaW4gc2VsZi5pZGVudGNoYXJzOiBpID0gaSsxCi0gICAgICAgICAgICBjbWQsIGFyZyA9IGxpbmVbOmldLCBsaW5lW2k6XS5zdHJpcCgpCi0gICAgICAgICAgICByZXR1cm4gY21kLCBhcmcsIGxpbmUKLSAgICAnJycKLSAgICBmb3IgdG9rIGluIHRva2VuaXplKGl0ZXIocy5zcGxpdGxpbmVzKCkpLl9fbmV4dF9fKToKLSAgICAgICAgcHJpbnQodG9rKQorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3RyYWNlLnB5IGIvTGliL3RyYWNlLnB5CmluZGV4IDg1MDM2OWIuLjMxN2I1ZmQgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZS5weQorKysgYi9MaWIvdHJhY2UucHkKQEAgLTM5LDggKzM5LDggQEAKIAogICAjIGNyZWF0ZSBhIFRyYWNlIG9iamVjdCwgdGVsbGluZyBpdCB3aGF0IHRvIGlnbm9yZSwgYW5kIHdoZXRoZXIgdG8KICAgIyBkbyB0cmFjaW5nIG9yIGxpbmUtY291bnRpbmcgb3IgYm90aC4KLSAgdHJhY2VyID0gdHJhY2UuVHJhY2UoaWdub3JlZGlycz1bc3lzLnByZWZpeCwgc3lzLmV4ZWNfcHJlZml4LF0sIHRyYWNlPTAsCi0gICAgICAgICAgICAgICAgICAgIGNvdW50PTEpCisgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKKyAgICAgICAgICAgICAgICAgICAgICAgdHJhY2U9MCwgY291bnQ9MSkKICAgIyBydW4gdGhlIG5ldyBjb21tYW5kIHVzaW5nIHRoZSBnaXZlbiB0cmFjZXIKICAgdHJhY2VyLnJ1bignbWFpbigpJykKICAgIyBtYWtlIGEgcmVwb3J0LCBwbGFjaW5nIG91dHB1dCBpbiAvdG1wCkBAIC00OCwxOSArNDgsMjAgQEAKICAgci53cml0ZV9yZXN1bHRzKHNob3dfbWlzc2luZz1UcnVlLCBjb3ZlcmRpcj0iL3RtcCIpCiAiIiIKIF9fYWxsX18gPSBbJ1RyYWNlJywgJ0NvdmVyYWdlUmVzdWx0cyddCi1pbXBvcnQgaW8KIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgdGltZQogaW1wb3J0IHRva2VuCiBpbXBvcnQgdG9rZW5pemUKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgZ2MKIGltcG9ydCBkaXMKIGltcG9ydCBwaWNrbGUKLWZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4gYXMgX3dhcm4KK3RyeToKKyAgICBmcm9tIHRpbWUgaW1wb3J0IG1vbm90b25pYyBhcyBfdGltZQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdGltZSBpbXBvcnQgdGltZSBhcyBfdGltZQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMjQ0LDggKzI0NSw3IEBACiAgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBmaWxlbmFtZSBkb2VzIG5vdCByZWZlciB0byBhIGZpbGUKICAgICAgICAgd2Ugd2FudCB0byBoYXZlIHJlcG9ydGVkLgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIChmaWxlbmFtZSA9PSAiPHN0cmluZz4iIG9yCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUuc3RhcnRzd2l0aCgiPGRvY3Rlc3QgIikpCisgICAgICAgIHJldHVybiBmaWxlbmFtZS5zdGFydHN3aXRoKCc8JykgYW5kIGZpbGVuYW1lLmVuZHN3aXRoKCc+JykKIAogICAgIGRlZiB1cGRhdGUoc2VsZiwgb3RoZXIpOgogICAgICAgICAiIiJNZXJnZSBpbiB0aGUgZGF0YSBmcm9tIGFub3RoZXIgQ292ZXJhZ2VSZXN1bHRzIiIiCkBAIC00NzcsNyArNDc3LDcgQEAKICAgICAgICAgc2VsZi5fY2FsbGVyX2NhY2hlID0ge30KICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gTm9uZQogICAgICAgICBpZiB0aW1pbmc6Ci0gICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgc2VsZi5zdGFydF90aW1lID0gX3RpbWUoKQogICAgICAgICBpZiBjb3VudGNhbGxlcnM6CiAgICAgICAgICAgICBzZWxmLmdsb2JhbHRyYWNlID0gc2VsZi5nbG9iYWx0cmFjZV90cmFja2NhbGxlcnMKICAgICAgICAgZWxpZiBjb3VudGZ1bmNzOgpAQCAtNjE1LDcgKzYxNSw3IEBACiAgICAgICAgICAgICBzZWxmLmNvdW50c1trZXldID0gc2VsZi5jb3VudHMuZ2V0KGtleSwgMCkgKyAxCiAKICAgICAgICAgICAgIGlmIHNlbGYuc3RhcnRfdGltZToKLSAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAodGltZS50aW1lKCkgLSBzZWxmLnN0YXJ0X3RpbWUpLCBlbmQ9JyAnKQorICAgICAgICAgICAgICAgIHByaW50KCclLjJmJyAlIChfdGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKICAgICAgICAgICAgIGJuYW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkKICAgICAgICAgICAgIHByaW50KCIlcyglZCk6ICVzIiAlIChibmFtZSwgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lKGZpbGVuYW1lLCBsaW5lbm8pKSwgZW5kPScnKQpAQCAtNjI4LDcgKzYyOCw3IEBACiAgICAgICAgICAgICBsaW5lbm8gPSBmcmFtZS5mX2xpbmVubwogCiAgICAgICAgICAgICBpZiBzZWxmLnN0YXJ0X3RpbWU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJyUuMmYnICUgKHRpbWUudGltZSgpIC0gc2VsZi5zdGFydF90aW1lKSwgZW5kPScgJykKKyAgICAgICAgICAgICAgICBwcmludCgnJS4yZicgJSAoX3RpbWUoKSAtIHNlbGYuc3RhcnRfdGltZSksIGVuZD0nICcpCiAgICAgICAgICAgICBibmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpCiAgICAgICAgICAgICBwcmludCgiJXMoJWQpOiAlcyIgJSAoYm5hbWUsIGxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKSksIGVuZD0nJykKQEAgLTc1MCwxMCArNzUwLDEwIEBACiAgICAgICAgICAgICAgICAgIyBzaG91bGQgSSBhbHNvIGNhbGwgZXhwYW5kdXNlcj8gKGFmdGVyIGFsbCwgY291bGQgdXNlICRIT01FKQogCiAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJHByZWZpeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgImxpYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLmJhc2VfcHJlZml4LCAibGliIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJGV4ZWNfcHJlZml4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5iYXNlX2V4ZWNfcHJlZml4LCAibGliIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCiAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKICAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKZGlmZiAtLWdpdCBhL0xpYi90cmFjZWJhY2sucHkgYi9MaWIvdHJhY2ViYWNrLnB5CmluZGV4IDhkNGU5NmUuLmVlYjllNzMgMTAwNjQ0Ci0tLSBhL0xpYi90cmFjZWJhY2sucHkKKysrIGIvTGliL3RyYWNlYmFjay5weQpAQCAtMTE5LDE1ICsxMTksMTYgQEAKICAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgc2Vlbi5hZGQoZXhjKQogICAgIGl0cyA9IFtdCisgICAgY29udGV4dCA9IGV4Yy5fX2NvbnRleHRfXwogICAgIGNhdXNlID0gZXhjLl9fY2F1c2VfXwogICAgIGlmIGNhdXNlIGlzIG5vdCBOb25lIGFuZCBjYXVzZSBub3QgaW4gc2VlbjoKLSAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjYXVzZSwgTm9uZSwgc2VlbikpCisgICAgICAgIGl0cy5hcHBlbmQoX2l0ZXJfY2hhaW4oY2F1c2UsIEZhbHNlLCBzZWVuKSkKICAgICAgICAgaXRzLmFwcGVuZChbKF9jYXVzZV9tZXNzYWdlLCBOb25lKV0pCi0gICAgZWxzZToKLSAgICAgICAgY29udGV4dCA9IGV4Yy5fX2NvbnRleHRfXwotICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjb250ZXh0IG5vdCBpbiBzZWVuOgotICAgICAgICAgICAgaXRzLmFwcGVuZChfaXRlcl9jaGFpbihjb250ZXh0LCBOb25lLCBzZWVuKSkKLSAgICAgICAgICAgIGl0cy5hcHBlbmQoWyhfY29udGV4dF9tZXNzYWdlLCBOb25lKV0pCisgICAgZWxpZiAoY29udGV4dCBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICBub3QgZXhjLl9fc3VwcHJlc3NfY29udGV4dF9fIGFuZAorICAgICAgICAgIGNvbnRleHQgbm90IGluIHNlZW4pOgorICAgICAgICBpdHMuYXBwZW5kKF9pdGVyX2NoYWluKGNvbnRleHQsIE5vbmUsIHNlZW4pKQorICAgICAgICBpdHMuYXBwZW5kKFsoX2NvbnRleHRfbWVzc2FnZSwgTm9uZSldKQogICAgIGl0cy5hcHBlbmQoWyhleGMsIGN1c3RvbV90YiBvciBleGMuX190cmFjZWJhY2tfXyldKQogICAgICMgaXRlcnRvb2xzLmNoYWluIGlzIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUgYW5kIG1heSBiZSB1bmF2YWlsYWJsZQogICAgIGZvciBpdCBpbiBpdHM6CmRpZmYgLS1naXQgYS9MaWIvdHVydGxlLnB5IGIvTGliL3R1cnRsZS5weQppbmRleCBhYzBjMzJjLi5hNDQ3NDMzIDEwMDY0NAotLS0gYS9MaWIvdHVydGxlLnB5CisrKyBiL0xpYi90dXJ0bGUucHkKQEAgLTEwOCw3ICsxMDgsNiBAQAogaW1wb3J0IHR5cGVzCiBpbXBvcnQgbWF0aAogaW1wb3J0IHRpbWUKLWltcG9ydCBvcwogaW1wb3J0IGluc3BlY3QKIAogZnJvbSBvcy5wYXRoIGltcG9ydCBpc2ZpbGUsIHNwbGl0LCBqb2luCmRpZmYgLS1naXQgYS9MaWIvdHlwZXMucHkgYi9MaWIvdHlwZXMucHkKaW5kZXggYWIzNTRkMS4uY2ZkMDllYSAxMDA2NDQKLS0tIGEvTGliL3R5cGVzLnB5CisrKyBiL0xpYi90eXBlcy5weQpAQCAtMTIsNiArMTIsOCBAQAogRnVuY3Rpb25UeXBlID0gdHlwZShfZikKIExhbWJkYVR5cGUgPSB0eXBlKGxhbWJkYTogTm9uZSkgICAgICAgICAjIFNhbWUgYXMgRnVuY3Rpb25UeXBlCiBDb2RlVHlwZSA9IHR5cGUoX2YuX19jb2RlX18pCitNYXBwaW5nUHJveHlUeXBlID0gdHlwZSh0eXBlLl9fZGljdF9fKQorU2ltcGxlTmFtZXNwYWNlID0gdHlwZShzeXMuaW1wbGVtZW50YXRpb24pCiAKIGRlZiBfZygpOgogICAgIHlpZWxkIDEKQEAgLTM5LDMgKzQxLDYxIEBACiBNZW1iZXJEZXNjcmlwdG9yVHlwZSA9IHR5cGUoRnVuY3Rpb25UeXBlLl9fZ2xvYmFsc19fKQogCiBkZWwgc3lzLCBfZiwgX2csIF9DLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90IGZvciBleHBvcnQKKworCisjIFByb3ZpZGUgYSBQRVAgMzExNSBjb21wbGlhbnQgbWVjaGFuaXNtIGZvciBjbGFzcyBjcmVhdGlvbgorZGVmIG5ld19jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lLCBleGVjX2JvZHk9Tm9uZSk6CisgICAgIiIiQ3JlYXRlIGEgY2xhc3Mgb2JqZWN0IGR5bmFtaWNhbGx5IHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MuIiIiCisgICAgbWV0YSwgbnMsIGt3ZHMgPSBwcmVwYXJlX2NsYXNzKG5hbWUsIGJhc2VzLCBrd2RzKQorICAgIGlmIGV4ZWNfYm9keSBpcyBub3QgTm9uZToKKyAgICAgICAgZXhlY19ib2R5KG5zKQorICAgIHJldHVybiBtZXRhKG5hbWUsIGJhc2VzLCBucywgKiprd2RzKQorCitkZWYgcHJlcGFyZV9jbGFzcyhuYW1lLCBiYXNlcz0oKSwga3dkcz1Ob25lKToKKyAgICAiIiJDYWxsIHRoZSBfX3ByZXBhcmVfXyBtZXRob2Qgb2YgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcy4KKworICAgIFJldHVybnMgKG1ldGFjbGFzcywgbmFtZXNwYWNlLCBrd2RzKSBhcyBhIDMtdHVwbGUKKworICAgICptZXRhY2xhc3MqIGlzIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MKKyAgICAqbmFtZXNwYWNlKiBpcyB0aGUgcHJlcGFyZWQgY2xhc3MgbmFtZXNwYWNlCisgICAgKmt3ZHMqIGlzIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUgcGFzc2VkIGluIGt3ZHMgYXJndW1lbnQgd2l0aCBhbnkKKyAgICAnbWV0YWNsYXNzJyBlbnRyeSByZW1vdmVkLiBJZiBubyBrd2RzIGFyZ3VtZW50IGlzIHBhc3NlZCBpbiwgdGhpcyB3aWxsCisgICAgYmUgYW4gZW1wdHkgZGljdC4KKyAgICAiIiIKKyAgICBpZiBrd2RzIGlzIE5vbmU6CisgICAgICAgIGt3ZHMgPSB7fQorICAgIGVsc2U6CisgICAgICAgIGt3ZHMgPSBkaWN0KGt3ZHMpICMgRG9uJ3QgYWx0ZXIgdGhlIHByb3ZpZGVkIG1hcHBpbmcKKyAgICBpZiAnbWV0YWNsYXNzJyBpbiBrd2RzOgorICAgICAgICBtZXRhID0ga3dkcy5wb3AoJ21ldGFjbGFzcycpCisgICAgZWxzZToKKyAgICAgICAgaWYgYmFzZXM6CisgICAgICAgICAgICBtZXRhID0gdHlwZShiYXNlc1swXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1ldGEgPSB0eXBlCisgICAgaWYgaXNpbnN0YW5jZShtZXRhLCB0eXBlKToKKyAgICAgICAgIyB3aGVuIG1ldGEgaXMgYSB0eXBlLCB3ZSBmaXJzdCBkZXRlcm1pbmUgdGhlIG1vc3QtZGVyaXZlZCBtZXRhY2xhc3MKKyAgICAgICAgIyBpbnN0ZWFkIG9mIGludm9raW5nIHRoZSBpbml0aWFsIGNhbmRpZGF0ZSBkaXJlY3RseQorICAgICAgICBtZXRhID0gX2NhbGN1bGF0ZV9tZXRhKG1ldGEsIGJhc2VzKQorICAgIGlmIGhhc2F0dHIobWV0YSwgJ19fcHJlcGFyZV9fJyk6CisgICAgICAgIG5zID0gbWV0YS5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcywgKiprd2RzKQorICAgIGVsc2U6CisgICAgICAgIG5zID0ge30KKyAgICByZXR1cm4gbWV0YSwgbnMsIGt3ZHMKKworZGVmIF9jYWxjdWxhdGVfbWV0YShtZXRhLCBiYXNlcyk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzLiIiIgorICAgIHdpbm5lciA9IG1ldGEKKyAgICBmb3IgYmFzZSBpbiBiYXNlczoKKyAgICAgICAgYmFzZV9tZXRhID0gdHlwZShiYXNlKQorICAgICAgICBpZiBpc3N1YmNsYXNzKHdpbm5lciwgYmFzZV9tZXRhKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIGlzc3ViY2xhc3MoYmFzZV9tZXRhLCB3aW5uZXIpOgorICAgICAgICAgICAgd2lubmVyID0gYmFzZV9tZXRhCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAjIGVsc2U6CisgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibWV0YWNsYXNzIGNvbmZsaWN0OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGhlIG1ldGFjbGFzcyBvZiBhIGRlcml2ZWQgY2xhc3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSAobm9uLXN0cmljdCkgc3ViY2xhc3MgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHRoZSBtZXRhY2xhc3NlcyBvZiBhbGwgaXRzIGJhc2VzIikKKyAgICByZXR1cm4gd2lubmVyCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkgYi9MaWIvdW5pdHRlc3QvX19tYWluX18ucHkKaW5kZXggNzMyMDA1MC4uNzk4ZWJjMCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L19fbWFpbl9fLnB5CisrKyBiL0xpYi91bml0dGVzdC9fX21haW5fXy5weQpAQCAtMiw3ICsyLDE0IEBACiAKIGltcG9ydCBzeXMKIGlmIHN5cy5hcmd2WzBdLmVuZHN3aXRoKCJfX21haW5fXy5weSIpOgotICAgIHN5cy5hcmd2WzBdID0gInB5dGhvbiAtbSB1bml0dGVzdCIKKyAgICBpbXBvcnQgb3MucGF0aAorICAgICMgV2UgY2hhbmdlIHN5cy5hcmd2WzBdIHRvIG1ha2UgaGVscCBtZXNzYWdlIG1vcmUgdXNlZnVsCisgICAgIyB1c2UgZXhlY3V0YWJsZSB3aXRob3V0IHBhdGgsIHVucXVvdGVkCisgICAgIyAoaXQncyBqdXN0IGEgaGludCBhbnl3YXkpCisgICAgIyAoaWYgeW91IGhhdmUgc3BhY2VzIGluIHlvdXIgZXhlY3V0YWJsZSB5b3UgZ2V0IHdoYXQgeW91IGRlc2VydmUhKQorICAgIGV4ZWN1dGFibGUgPSBvcy5wYXRoLmJhc2VuYW1lKHN5cy5leGVjdXRhYmxlKQorICAgIHN5cy5hcmd2WzBdID0gZXhlY3V0YWJsZSArICIgLW0gdW5pdHRlc3QiCisgICAgZGVsIG9zCiAKIF9fdW5pdHRlc3QgPSBUcnVlCiAKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9jYXNlLnB5IGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKaW5kZXggZTYyN2NjYS4uZjMzNDg2NSAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L2Nhc2UucHkKQEAgLTksOCArOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIAogZnJvbSAuIGltcG9ydCByZXN1bHQKLWZyb20gLnV0aWwgaW1wb3J0IChzdHJjbGFzcywgc2FmZV9yZXByLCBzb3J0ZWRfbGlzdF9kaWZmZXJlbmNlLAotICAgICAgICAgICAgICAgICAgIHVub3JkZXJhYmxlX2xpc3RfZGlmZmVyZW5jZSwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCitmcm9tIC51dGlsIGltcG9ydCAoc3RyY2xhc3MsIHNhZmVfcmVwciwgX2NvdW50X2RpZmZfYWxsX3B1cnBvc2UsCiAgICAgICAgICAgICAgICAgICAgX2NvdW50X2RpZmZfaGFzaGFibGUpCiAKIF9fdW5pdHRlc3QgPSBUcnVlCkBAIC0xMDQsOSArMTAzLDkgQEAKIGNsYXNzIF9Bc3NlcnRSYWlzZXNCYXNlQ29udGV4dChvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkLCB0ZXN0X2Nhc2UsIGNhbGxhYmxlX29iaj1Ob25lLAotICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXg9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4PU5vbmUpOgogICAgICAgICBzZWxmLmV4cGVjdGVkID0gZXhwZWN0ZWQKLSAgICAgICAgc2VsZi5mYWlsdXJlRXhjZXB0aW9uID0gdGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24KKyAgICAgICAgc2VsZi50ZXN0X2Nhc2UgPSB0ZXN0X2Nhc2UKICAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUgPSBjYWxsYWJsZV9vYmouX19uYW1lX18KQEAgLTExNyw2ICsxMTYsMjQgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZF9yZWdleCwgKGJ5dGVzLCBzdHIpKToKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4ID0gcmUuY29tcGlsZShleHBlY3RlZF9yZWdleCkKICAgICAgICAgc2VsZi5leHBlY3RlZF9yZWdleCA9IGV4cGVjdGVkX3JlZ2V4CisgICAgICAgIHNlbGYubXNnID0gTm9uZQorCisgICAgZGVmIF9yYWlzZUZhaWx1cmUoc2VsZiwgc3RhbmRhcmRNc2cpOgorICAgICAgICBtc2cgPSBzZWxmLnRlc3RfY2FzZS5fZm9ybWF0TWVzc2FnZShzZWxmLm1zZywgc3RhbmRhcmRNc2cpCisgICAgICAgIHJhaXNlIHNlbGYudGVzdF9jYXNlLmZhaWx1cmVFeGNlcHRpb24obXNnKQorCisgICAgZGVmIGhhbmRsZShzZWxmLCBuYW1lLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncyk6CisgICAgICAgICIiIgorICAgICAgICBJZiBjYWxsYWJsZV9vYmogaXMgTm9uZSwgYXNzZXJ0UmFpc2VzL1dhcm5zIGlzIGJlaW5nIHVzZWQgYXMgYQorICAgICAgICBjb250ZXh0IG1hbmFnZXIsIHNvIGNoZWNrIGZvciBhICdtc2cnIGt3YXJnIGFuZCByZXR1cm4gc2VsZi4KKyAgICAgICAgSWYgY2FsbGFibGVfb2JqIGlzIG5vdCBOb25lLCBjYWxsIGl0IHBhc3NpbmcgYXJncyBhbmQga3dhcmdzLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgY2FsbGFibGVfb2JqIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLm1zZyA9IGt3YXJncy5wb3AoJ21zZycsIE5vbmUpCisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICB3aXRoIHNlbGY6CisgICAgICAgICAgICBjYWxsYWJsZV9vYmooKmFyZ3MsICoqa3dhcmdzKQorCiAKIAogY2xhc3MgX0Fzc2VydFJhaXNlc0NvbnRleHQoX0Fzc2VydFJhaXNlc0Jhc2VDb250ZXh0KToKQEAgLTEzMiwxMSArMTQ5LDEwIEBACiAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgZXhjX25hbWUgPSBzdHIoc2VsZi5leHBlY3RlZCkKICAgICAgICAgICAgIGlmIHNlbGYub2JqX25hbWU6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHJhaXNlZCBieSB7MX0iCi0gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQoZXhjX25hbWUsIHNlbGYub2JqX25hbWUpKQorICAgICAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHJhaXNlZCBieSB7fSIuZm9ybWF0KGV4Y19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24oInswfSBub3QgcmFpc2VkIgotICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCByYWlzZWQiLmZvcm1hdChleGNfbmFtZSkpCiAgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKGV4Y190eXBlLCBzZWxmLmV4cGVjdGVkKToKICAgICAgICAgICAgICMgbGV0IHVuZXhwZWN0ZWQgZXhjZXB0aW9ucyBwYXNzIHRocm91Z2gKICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMTQ3LDggKzE2Myw4IEBACiAKICAgICAgICAgZXhwZWN0ZWRfcmVnZXggPSBzZWxmLmV4cGVjdGVkX3JlZ2V4CiAgICAgICAgIGlmIG5vdCBleHBlY3RlZF9yZWdleC5zZWFyY2goc3RyKGV4Y192YWx1ZSkpOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCciJXMiIGRvZXMgbm90IG1hdGNoICIlcyInICUKLSAgICAgICAgICAgICAgICAgICAgIChleHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZXhjX3ZhbHVlKSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoJyJ7fSIgZG9lcyBub3QgbWF0Y2ggInt9IicuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgucGF0dGVybiwgc3RyKGV4Y192YWx1ZSkpKQogICAgICAgICByZXR1cm4gVHJ1ZQogCiAKQEAgLTE5MiwxNCArMjA4LDEzIEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgIyBOb3cgd2Ugc2ltcGx5IHRyeSB0byBjaG9vc2UgYSBoZWxwZnVsIGZhaWx1cmUgbWVzc2FnZQogICAgICAgICBpZiBmaXJzdF9tYXRjaGluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignIiVzIiBkb2VzIG5vdCBtYXRjaCAiJXMiJyAlCi0gICAgICAgICAgICAgICAgICAgICAoc2VsZi5leHBlY3RlZF9yZWdleC5wYXR0ZXJuLCBzdHIoZmlyc3RfbWF0Y2hpbmcpKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgnInt9IiBkb2VzIG5vdCBtYXRjaCAie30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cGVjdGVkX3JlZ2V4LnBhdHRlcm4sIHN0cihmaXJzdF9tYXRjaGluZykpKQogICAgICAgICBpZiBzZWxmLm9ial9uYW1lOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHRyaWdnZXJlZCBieSB7MX0iCi0gICAgICAgICAgICAgICAgLmZvcm1hdChleGNfbmFtZSwgc2VsZi5vYmpfbmFtZSkpCisgICAgICAgICAgICBzZWxmLl9yYWlzZUZhaWx1cmUoInt9IG5vdCB0cmlnZ2VyZWQgYnkge30iLmZvcm1hdChleGNfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub2JqX25hbWUpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKCJ7MH0gbm90IHRyaWdnZXJlZCIKLSAgICAgICAgICAgICAgICAuZm9ybWF0KGV4Y19uYW1lKSkKKyAgICAgICAgICAgIHNlbGYuX3JhaXNlRmFpbHVyZSgie30gbm90IHRyaWdnZXJlZCIuZm9ybWF0KGV4Y19uYW1lKSkKIAogCiBjbGFzcyBUZXN0Q2FzZShvYmplY3QpOgpAQCAtNDUyLDcgKzQ2Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJUZXN0UmVzdWx0IGhhcyBubyBhZGRFeHBlY3RlZEZhaWx1cmUgbWV0aG9kLCByZXBvcnRpbmcgYXMgcGFzc2VzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYWRkU3VjY2VzcyhzZWxmKQotCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICByZXN1bHQuc3RvcFRlc3Qoc2VsZikKICAgICAgICAgICAgIGlmIG9yaWdfcmVzdWx0IGlzIE5vbmU6CkBAIC01MjYsNyArNTQxLDYgQEAKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIHJldHVybiAgJyVzIDogJXMnICUgKHNhZmVfcmVwcihzdGFuZGFyZE1zZyksIHNhZmVfcmVwcihtc2cpKQogCi0KICAgICBkZWYgYXNzZXJ0UmFpc2VzKHNlbGYsIGV4Y0NsYXNzLCBjYWxsYWJsZU9iaj1Ob25lLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAiIiJGYWlsIHVubGVzcyBhbiBleGNlcHRpb24gb2YgY2xhc3MgZXhjQ2xhc3MgaXMgdGhyb3duCiAgICAgICAgICAgIGJ5IGNhbGxhYmxlT2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCkBAIC01NDEsNiArNTU1LDkgQEAKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFNvbWVFeGNlcHRpb24pOgogICAgICAgICAgICAgICAgICAgICBkb19zb21ldGhpbmcoKQogCisgICAgICAgICAgIEFuIG9wdGlvbmFsIGtleXdvcmQgYXJndW1lbnQgJ21zZycgY2FuIGJlIHByb3ZpZGVkIHdoZW4gYXNzZXJ0UmFpc2VzCisgICAgICAgICAgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG9iamVjdC4KKwogICAgICAgICAgICBUaGUgY29udGV4dCBtYW5hZ2VyIGtlZXBzIGEgcmVmZXJlbmNlIHRvIHRoZSBleGNlcHRpb24gYXMKICAgICAgICAgICAgdGhlICdleGNlcHRpb24nIGF0dHJpYnV0ZS4gVGhpcyBhbGxvd3MgeW91IHRvIGluc3BlY3QgdGhlCiAgICAgICAgICAgIGV4Y2VwdGlvbiBhZnRlciB0aGUgYXNzZXJ0aW9uOjoKQEAgLTU1MSwyNSArNTY4LDI1IEBACiAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRoZV9leGNlcHRpb24uZXJyb3JfY29kZSwgMykKICAgICAgICAgIiIiCiAgICAgICAgIGNvbnRleHQgPSBfQXNzZXJ0UmFpc2VzQ29udGV4dChleGNDbGFzcywgc2VsZiwgY2FsbGFibGVPYmopCi0gICAgICAgIGlmIGNhbGxhYmxlT2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dAotICAgICAgICB3aXRoIGNvbnRleHQ6Ci0gICAgICAgICAgICBjYWxsYWJsZU9iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0UmFpc2VzJywgY2FsbGFibGVPYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBhc3NlcnRXYXJucyhzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIiIiRmFpbCB1bmxlc3MgYSB3YXJuaW5nIG9mIGNsYXNzIHdhcm5DbGFzcyBpcyB0cmlnZ2VyZWQKLSAgICAgICAgICAgYnkgY2FsbGFibGVPYmogd2hlbiBpbnZva2VkIHdpdGggYXJndW1lbnRzIGFyZ3MgYW5kIGtleXdvcmQKKyAgICAgICAgICAgYnkgY2FsbGFibGVfb2JqIHdoZW4gaW52b2tlZCB3aXRoIGFyZ3VtZW50cyBhcmdzIGFuZCBrZXl3b3JkCiAgICAgICAgICAgIGFyZ3VtZW50cyBrd2FyZ3MuICBJZiBhIGRpZmZlcmVudCB0eXBlIG9mIHdhcm5pbmcgaXMKICAgICAgICAgICAgdHJpZ2dlcmVkLCBpdCB3aWxsIG5vdCBiZSBoYW5kbGVkOiBkZXBlbmRpbmcgb24gdGhlIG90aGVyCiAgICAgICAgICAgIHdhcm5pbmcgZmlsdGVyaW5nIHJ1bGVzIGluIGVmZmVjdCwgaXQgbWlnaHQgYmUgc2lsZW5jZWQsIHByaW50ZWQKICAgICAgICAgICAgb3V0LCBvciByYWlzZWQgYXMgYW4gZXhjZXB0aW9uLgogCi0gICAgICAgICAgIElmIGNhbGxlZCB3aXRoIGNhbGxhYmxlT2JqIG9taXR0ZWQgb3IgTm9uZSwgd2lsbCByZXR1cm4gYQorICAgICAgICAgICBJZiBjYWxsZWQgd2l0aCBjYWxsYWJsZV9vYmogb21pdHRlZCBvciBOb25lLCB3aWxsIHJldHVybiBhCiAgICAgICAgICAgIGNvbnRleHQgb2JqZWN0IHVzZWQgbGlrZSB0aGlzOjoKIAogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhTb21lV2FybmluZyk6CiAgICAgICAgICAgICAgICAgICAgIGRvX3NvbWV0aGluZygpCiAKKyAgICAgICAgICAgQW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAnbXNnJyBjYW4gYmUgcHJvdmlkZWQgd2hlbiBhc3NlcnRXYXJucworICAgICAgICAgICBpcyB1c2VkIGFzIGEgY29udGV4dCBvYmplY3QuCisKICAgICAgICAgICAgVGhlIGNvbnRleHQgbWFuYWdlciBrZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3QgbWF0Y2hpbmcKICAgICAgICAgICAgd2FybmluZyBhcyB0aGUgJ3dhcm5pbmcnIGF0dHJpYnV0ZTsgc2ltaWxhcmx5LCB0aGUgJ2ZpbGVuYW1lJwogICAgICAgICAgICBhbmQgJ2xpbmVubycgYXR0cmlidXRlcyBnaXZlIHlvdSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGluZQpAQCAtNTgyLDEwICs1OTksNyBAQAogICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGVfd2FybmluZy5zb21lX2F0dHJpYnV0ZSwgMTQ3KQogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRXYXJuc0NvbnRleHQoZXhwZWN0ZWRfd2FybmluZywgc2VsZiwgY2FsbGFibGVfb2JqKQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnMnLCBjYWxsYWJsZV9vYmosIGFyZ3MsIGt3YXJncykKIAogICAgIGRlZiBfZ2V0QXNzZXJ0RXF1YWxpdHlGdW5jKHNlbGYsIGZpcnN0LCBzZWNvbmQpOgogICAgICAgICAiIiJHZXQgYSBkZXRhaWxlZCBjb21wYXJpc29uIGZ1bmN0aW9uIGZvciB0aGUgdHlwZXMgb2YgdGhlIHR3byBhcmdzLgpAQCAtNzIyLDcgKzczNiw3IEBACiAgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdG8gdXNlIG9uIGZhaWx1cmUgaW5zdGVhZCBvZiBhIGxpc3Qgb2YKICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZXMuCiAgICAgICAgICIiIgotICAgICAgICBpZiBzZXFfdHlwZSAhPSBOb25lOgorICAgICAgICBpZiBzZXFfdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlcV90eXBlX25hbWUgPSBzZXFfdHlwZS5fX25hbWVfXwogICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VxMSwgc2VxX3R5cGUpOgogICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbignRmlyc3Qgc2VxdWVuY2UgaXMgbm90IGEgJXM6ICVzJwpAQCAtOTUxLDQ4ICs5NjUsNiBAQAogCiAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQogCi0gICAgZGVmIGFzc2VydFNhbWVFbGVtZW50cyhzZWxmLCBleHBlY3RlZF9zZXEsIGFjdHVhbF9zZXEsIG1zZz1Ob25lKToKLSAgICAgICAgIiIiQW4gdW5vcmRlcmVkIHNlcXVlbmNlIHNwZWNpZmljIGNvbXBhcmlzb24uCi0KLSAgICAgICAgUmFpc2VzIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBsaXN0aW5nIHdoaWNoIGVsZW1lbnRzIG9mIGV4cGVjdGVkX3NlcQotICAgICAgICBhcmUgbWlzc2luZyBmcm9tIGFjdHVhbF9zZXEgYW5kIHZpY2UgdmVyc2EgaWYgYW55LgotCi0gICAgICAgIER1cGxpY2F0ZSBlbGVtZW50cyBhcmUgaWdub3JlZCB3aGVuIGNvbXBhcmluZyAqZXhwZWN0ZWRfc2VxKiBhbmQKLSAgICAgICAgKmFjdHVhbF9zZXEqLiBJdCBpcyB0aGUgZXF1aXZhbGVudCBvZiBgYGFzc2VydEVxdWFsKHNldChleHBlY3RlZCksCi0gICAgICAgIHNldChhY3R1YWwpKWBgIGJ1dCBpdCB3b3JrcyB3aXRoIHNlcXVlbmNlcyBvZiB1bmhhc2hhYmxlIG9iamVjdHMgYXMKLSAgICAgICAgd2VsbC4KLSAgICAgICAgIiIiCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ2Fzc2VydFNhbWVFbGVtZW50cyBpcyBkZXByZWNhdGVkJywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGV4cGVjdGVkID0gc2V0KGV4cGVjdGVkX3NlcSkKLSAgICAgICAgICAgIGFjdHVhbCA9IHNldChhY3R1YWxfc2VxKQotICAgICAgICAgICAgbWlzc2luZyA9IHNvcnRlZChleHBlY3RlZC5kaWZmZXJlbmNlKGFjdHVhbCkpCi0gICAgICAgICAgICB1bmV4cGVjdGVkID0gc29ydGVkKGFjdHVhbC5kaWZmZXJlbmNlKGV4cGVjdGVkKSkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICMgRmFsbCBiYWNrIHRvIHNsb3dlciBsaXN0LWNvbXBhcmUgaWYgYW55IG9mIHRoZSBvYmplY3RzIGFyZQotICAgICAgICAgICAgIyBub3QgaGFzaGFibGUuCi0gICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QoZXhwZWN0ZWRfc2VxKQotICAgICAgICAgICAgYWN0dWFsID0gbGlzdChhY3R1YWxfc2VxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGV4cGVjdGVkLnNvcnQoKQotICAgICAgICAgICAgICAgIGFjdHVhbC5zb3J0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICAgICAgbWlzc2luZywgdW5leHBlY3RlZCA9IHVub3JkZXJhYmxlX2xpc3RfZGlmZmVyZW5jZShleHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWlzc2luZywgdW5leHBlY3RlZCA9IHNvcnRlZF9saXN0X2RpZmZlcmVuY2UoZXhwZWN0ZWQsIGFjdHVhbCkKLSAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgaWYgbWlzc2luZzoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoJ0V4cGVjdGVkLCBidXQgbWlzc2luZzpcbiAgICAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIobWlzc2luZykpCi0gICAgICAgIGlmIHVuZXhwZWN0ZWQ6Ci0gICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCdVbmV4cGVjdGVkLCBidXQgcHJlc2VudDpcbiAgICAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBzYWZlX3JlcHIodW5leHBlY3RlZCkpCi0gICAgICAgIGlmIGVycm9yczoKLSAgICAgICAgICAgIHN0YW5kYXJkTXNnID0gJ1xuJy5qb2luKGVycm9ycykKLSAgICAgICAgICAgIHNlbGYuZmFpbChzZWxmLl9mb3JtYXRNZXNzYWdlKG1zZywgc3RhbmRhcmRNc2cpKQotCiAKICAgICBkZWYgYXNzZXJ0Q291bnRFcXVhbChzZWxmLCBmaXJzdCwgc2Vjb25kLCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkFuIHVub3JkZXJlZCBzZXF1ZW5jZSBjb21wYXJpc29uIGFzc2VydGluZyB0aGF0IHRoZSBzYW1lIGVsZW1lbnRzLApAQCAtMTAzNyw4ICsxMDA5LDggQEAKICAgICAgICAgICAgIGlmIChsZW4oZmlyc3QpID4gc2VsZi5fZGlmZlRocmVzaG9sZCBvcgogICAgICAgICAgICAgICAgIGxlbihzZWNvbmQpID4gc2VsZi5fZGlmZlRocmVzaG9sZCk6CiAgICAgICAgICAgICAgICAgc2VsZi5fYmFzZUFzc2VydEVxdWFsKGZpcnN0LCBzZWNvbmQsIG1zZykKLSAgICAgICAgICAgIGZpcnN0bGluZXMgPSBmaXJzdC5zcGxpdGxpbmVzKFRydWUpCi0gICAgICAgICAgICBzZWNvbmRsaW5lcyA9IHNlY29uZC5zcGxpdGxpbmVzKFRydWUpCisgICAgICAgICAgICBmaXJzdGxpbmVzID0gZmlyc3Quc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQorICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBzZWNvbmQuc3BsaXRsaW5lcyhrZWVwZW5kcz1UcnVlKQogICAgICAgICAgICAgaWYgbGVuKGZpcnN0bGluZXMpID09IDEgYW5kIGZpcnN0LnN0cmlwKCdcclxuJykgPT0gZmlyc3Q6CiAgICAgICAgICAgICAgICAgZmlyc3RsaW5lcyA9IFtmaXJzdCArICdcbiddCiAgICAgICAgICAgICAgICAgc2Vjb25kbGluZXMgPSBbc2Vjb25kICsgJ1xuJ10KQEAgLTExMDYsMTUgKzEwNzgsMTUgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRSYWlzZXNSZWdleCBpcyB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgogICAgICAgICAgICAgYXJnczogRXh0cmEgYXJncy4KICAgICAgICAgICAgIGt3YXJnczogRXh0cmEga3dhcmdzLgogICAgICAgICAiIiIKICAgICAgICAgY29udGV4dCA9IF9Bc3NlcnRSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlvbiwgc2VsZiwgY2FsbGFibGVfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVnZXgpCi0gICAgICAgIGlmIGNhbGxhYmxlX29iaiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQKLSAgICAgICAgd2l0aCBjb250ZXh0OgotICAgICAgICAgICAgY2FsbGFibGVfb2JqKCphcmdzLCAqKmt3YXJncykKKworICAgICAgICByZXR1cm4gY29udGV4dC5oYW5kbGUoJ2Fzc2VydFJhaXNlc1JlZ2V4JywgY2FsbGFibGVfb2JqLCBhcmdzLCBrd2FyZ3MpCiAKICAgICBkZWYgYXNzZXJ0V2FybnNSZWdleChzZWxmLCBleHBlY3RlZF93YXJuaW5nLCBleHBlY3RlZF9yZWdleCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZV9vYmo9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKQEAgLTExMjgsMTUgKzExMDAsMTQgQEAKICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4OiBSZWdleCAocmUgcGF0dGVybiBvYmplY3Qgb3Igc3RyaW5nKSBleHBlY3RlZAogICAgICAgICAgICAgICAgICAgICB0byBiZSBmb3VuZCBpbiBlcnJvciBtZXNzYWdlLgogICAgICAgICAgICAgY2FsbGFibGVfb2JqOiBGdW5jdGlvbiB0byBiZSBjYWxsZWQuCisgICAgICAgICAgICBtc2c6IE9wdGlvbmFsIG1lc3NhZ2UgdXNlZCBpbiBjYXNlIG9mIGZhaWx1cmUuIENhbiBvbmx5IGJlIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgd2hlbiBhc3NlcnRXYXJuc1JlZ2V4IGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCiAgICAgICAgICAgICBhcmdzOiBFeHRyYSBhcmdzLgogICAgICAgICAgICAga3dhcmdzOiBFeHRyYSBrd2FyZ3MuCiAgICAgICAgICIiIgogICAgICAgICBjb250ZXh0ID0gX0Fzc2VydFdhcm5zQ29udGV4dChleHBlY3RlZF93YXJuaW5nLCBzZWxmLCBjYWxsYWJsZV9vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3JlZ2V4KQotICAgICAgICBpZiBjYWxsYWJsZV9vYmogaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0Ci0gICAgICAgIHdpdGggY29udGV4dDoKLSAgICAgICAgICAgIGNhbGxhYmxlX29iaigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBjb250ZXh0LmhhbmRsZSgnYXNzZXJ0V2FybnNSZWdleCcsIGNhbGxhYmxlX29iaiwgYXJncywga3dhcmdzKQogCiAgICAgZGVmIGFzc2VydFJlZ2V4KHNlbGYsIHRleHQsIGV4cGVjdGVkX3JlZ2V4LCBtc2c9Tm9uZSk6CiAgICAgICAgICIiIkZhaWwgdGhlIHRlc3QgdW5sZXNzIHRoZSB0ZXh0IG1hdGNoZXMgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4iIiIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC9tYWluLnB5IGIvTGliL3VuaXR0ZXN0L21haW4ucHkKaW5kZXggNTVkNGU0Yi4uYTI1YTJmOCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L21haW4ucHkKKysrIGIvTGliL3VuaXR0ZXN0L21haW4ucHkKQEAgLTEsOCArMSw4IEBACiAiIiJVbml0dGVzdCBtYWluIHByb2dyYW0iIiIKIAogaW1wb3J0IHN5cworaW1wb3J0IG9wdHBhcnNlCiBpbXBvcnQgb3MKLWltcG9ydCB0eXBlcwogCiBmcm9tIC4gaW1wb3J0IGxvYWRlciwgcnVubmVyCiBmcm9tIC5zaWduYWxzIGltcG9ydCBpbnN0YWxsSGFuZGxlcgpAQCAtNzcsNiArNzcsNyBAQAogZGVmIF9jb252ZXJ0X25hbWVzKG5hbWVzKToKICAgICByZXR1cm4gW19jb252ZXJ0X25hbWUobmFtZSkgZm9yIG5hbWUgaW4gbmFtZXNdCiAKKwogY2xhc3MgVGVzdFByb2dyYW0ob2JqZWN0KToKICAgICAiIiJBIGNvbW1hbmQtbGluZSBwcm9ncmFtIHRoYXQgcnVucyBhIHNldCBvZiB0ZXN0czsgdGhpcyBpcyBwcmltYXJpbHkKICAgICAgICBmb3IgbWFraW5nIHRlc3QgbW9kdWxlcyBjb252ZW5pZW50bHkgZXhlY3V0YWJsZS4KQEAgLTE0MywzMyArMTQ0LDkgQEAKICAgICAgICAgICAgIHNlbGYuX2RvX2Rpc2NvdmVyeShhcmd2WzI6XSkKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGltcG9ydCBnZXRvcHQKLSAgICAgICAgbG9uZ19vcHRzID0gWydoZWxwJywgJ3ZlcmJvc2UnLCAncXVpZXQnLCAnZmFpbGZhc3QnLCAnY2F0Y2gnLCAnYnVmZmVyJ10KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldG9wdC5nZXRvcHQoYXJndlsxOl0sICdoSHZxZmNiJywgbG9uZ19vcHRzKQotICAgICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKLSAgICAgICAgICAgIHNlbGYudXNhZ2VFeGl0KG1zZykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGZvciBvcHQsIHZhbHVlIGluIG9wdGlvbnM6Ci0gICAgICAgICAgICBpZiBvcHQgaW4gKCctaCcsJy1IJywnLS1oZWxwJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQotICAgICAgICAgICAgaWYgb3B0IGluICgnLXEnLCctLXF1aWV0Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSAwCi0gICAgICAgICAgICBpZiBvcHQgaW4gKCctdicsJy0tdmVyYm9zZScpOgotICAgICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMgotICAgICAgICAgICAgaWYgb3B0IGluICgnLWYnLCctLWZhaWxmYXN0Jyk6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWxmYXN0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1mIGlzIG5vdCB2YWxpZD8KLSAgICAgICAgICAgIGlmIG9wdCBpbiAoJy1jJywnLS1jYXRjaCcpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuY2F0Y2hicmVhayBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmNhdGNoYnJlYWsgPSBUcnVlCi0gICAgICAgICAgICAgICAgIyBTaG91bGQgdGhpcyByYWlzZSBhbiBleGNlcHRpb24gaWYgLWMgaXMgbm90IHZhbGlkPwotICAgICAgICAgICAgaWYgb3B0IGluICgnLWInLCctLWJ1ZmZlcicpOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuYnVmZmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyID0gVHJ1ZQotICAgICAgICAgICAgICAgICMgU2hvdWxkIHRoaXMgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIC1iIGlzIG5vdCB2YWxpZD8KKyAgICAgICAgcGFyc2VyID0gc2VsZi5fZ2V0T3B0UGFyc2VyKCkKKyAgICAgICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3ZbMTpdKQorICAgICAgICBzZWxmLl9zZXRBdHRyaWJ1dGVzRnJvbU9wdGlvbnMob3B0aW9ucykKIAogICAgICAgICBpZiBsZW4oYXJncykgPT0gMCBhbmQgc2VsZi5tb2R1bGUgaXMgTm9uZToKICAgICAgICAgICAgICMgdGhpcyBhbGxvd3MgInB5dGhvbiAtbSB1bml0dGVzdCAtdiIgdG8gc3RpbGwgd29yayBmb3IKQEAgLTE5NywxNCArMTc0LDE0IEBACiAgICAgICAgICAgICBzZWxmLnRlc3QgPSBzZWxmLnRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKHNlbGYudGVzdE5hbWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZSkKIAotICAgIGRlZiBfZG9fZGlzY292ZXJ5KHNlbGYsIGFyZ3YsIExvYWRlcj1sb2FkZXIuVGVzdExvYWRlcik6Ci0gICAgICAgICMgaGFuZGxlIGNvbW1hbmQgbGluZSBhcmdzIGZvciB0ZXN0IGRpc2NvdmVyeQotICAgICAgICBzZWxmLnByb2dOYW1lID0gJyVzIGRpc2NvdmVyJyAlIHNlbGYucHJvZ05hbWUKLSAgICAgICAgaW1wb3J0IG9wdHBhcnNlCisgICAgZGVmIF9nZXRPcHRQYXJzZXIoc2VsZik6CiAgICAgICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCiAgICAgICAgIHBhcnNlci5wcm9nID0gc2VsZi5wcm9nTmFtZQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJib3NlJywgZGVzdD0ndmVyYm9zZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1ZlcmJvc2Ugb3V0cHV0JywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVpZXQnLCBkZXN0PSdxdWlldCcsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1F1aWV0IG91dHB1dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCAhPSBGYWxzZToKICAgICAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctZicsICctLWZhaWxmYXN0JywgZGVzdD0nZmFpbGZhc3QnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nU3RvcCBvbiBmaXJzdCBmYWlsIG9yIGVycm9yJywKQEAgLTIxNywyMCArMTk0LDkgQEAKICAgICAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctYicsICctLWJ1ZmZlcicsIGRlc3Q9J2J1ZmZlcicsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCdWZmZXIgc3Rkb3V0IGFuZCBzdGRlcnIgZHVyaW5nIHRlc3RzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXN0YXJ0LWRpcmVjdG9yeScsIGRlc3Q9J3N0YXJ0JywgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRpcmVjdG9yeSB0byBzdGFydCBkaXNjb3ZlcnkgKCcuJyBkZWZhdWx0KSIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBhdHRlcm4nLCBkZXN0PSdwYXR0ZXJuJywgZGVmYXVsdD0ndGVzdCoucHknLAotICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXR0ZXJuIHRvIG1hdGNoIHRlc3RzICgndGVzdCoucHknIGRlZmF1bHQpIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy10JywgJy0tdG9wLWxldmVsLWRpcmVjdG9yeScsIGRlc3Q9J3RvcCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVG9wIGxldmVsIGRpcmVjdG9yeSBvZiBwcm9qZWN0IChkZWZhdWx0cyB0byBzdGFydCBkaXJlY3RvcnkpJykKKyAgICAgICAgcmV0dXJuIHBhcnNlcgogCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQotICAgICAgICBpZiBsZW4oYXJncykgPiAzOgotICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQotCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoKCdzdGFydCcsICdwYXR0ZXJuJywgJ3RvcCcpLCBhcmdzKToKLSAgICAgICAgICAgIHNldGF0dHIob3B0aW9ucywgbmFtZSwgdmFsdWUpCi0KKyAgICBkZWYgX3NldEF0dHJpYnV0ZXNGcm9tT3B0aW9ucyhzZWxmLCBvcHRpb25zKToKICAgICAgICAgIyBvbmx5IHNldCBvcHRpb25zIGZyb20gdGhlIHBhcnNpbmcgaGVyZQogICAgICAgICAjIGlmIHRoZXkgd2VyZW4ndCBzZXQgZXhwbGljaXRseSBpbiB0aGUgY29uc3RydWN0b3IKICAgICAgICAgaWYgc2VsZi5mYWlsZmFzdCBpcyBOb25lOgpAQCAtMjQyLDYgKzIwOCwzMSBAQAogCiAgICAgICAgIGlmIG9wdGlvbnMudmVyYm9zZToKICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5ID0gMgorICAgICAgICBlbGlmIG9wdGlvbnMucXVpZXQ6CisgICAgICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IDAKKworICAgIGRlZiBfYWRkRGlzY292ZXJ5T3B0aW9ucyhzZWxmLCBwYXJzZXIpOgorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zdGFydC1kaXJlY3RvcnknLCBkZXN0PSdzdGFydCcsIGRlZmF1bHQ9Jy4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXJlY3RvcnkgdG8gc3RhcnQgZGlzY292ZXJ5ICgnLicgZGVmYXVsdCkiKQorICAgICAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wYXR0ZXJuJywgZGVzdD0ncGF0dGVybicsIGRlZmF1bHQ9J3Rlc3QqLnB5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0dGVybiB0byBtYXRjaCB0ZXN0cyAoJ3Rlc3QqLnB5JyBkZWZhdWx0KSIpCisgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRvcC1sZXZlbC1kaXJlY3RvcnknLCBkZXN0PSd0b3AnLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RvcCBsZXZlbCBkaXJlY3Rvcnkgb2YgcHJvamVjdCAoZGVmYXVsdHMgdG8gc3RhcnQgZGlyZWN0b3J5KScpCisKKyAgICBkZWYgX2RvX2Rpc2NvdmVyeShzZWxmLCBhcmd2LCBMb2FkZXI9bG9hZGVyLlRlc3RMb2FkZXIpOgorICAgICAgICAjIGhhbmRsZSBjb21tYW5kIGxpbmUgYXJncyBmb3IgdGVzdCBkaXNjb3ZlcnkKKyAgICAgICAgc2VsZi5wcm9nTmFtZSA9ICclcyBkaXNjb3ZlcicgJSBzZWxmLnByb2dOYW1lCisgICAgICAgIHBhcnNlciA9IHNlbGYuX2dldE9wdFBhcnNlcigpCisgICAgICAgIHNlbGYuX2FkZERpc2NvdmVyeU9wdGlvbnMocGFyc2VyKQorCisgICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQorICAgICAgICBpZiBsZW4oYXJncykgPiAzOgorICAgICAgICAgICAgc2VsZi51c2FnZUV4aXQoKQorCisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB6aXAoKCdzdGFydCcsICdwYXR0ZXJuJywgJ3RvcCcpLCBhcmdzKToKKyAgICAgICAgICAgIHNldGF0dHIob3B0aW9ucywgbmFtZSwgdmFsdWUpCisKKyAgICAgICAgc2VsZi5fc2V0QXR0cmlidXRlc0Zyb21PcHRpb25zKG9wdGlvbnMpCiAKICAgICAgICAgc3RhcnRfZGlyID0gb3B0aW9ucy5zdGFydAogICAgICAgICBwYXR0ZXJuID0gb3B0aW9ucy5wYXR0ZXJuCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbW9jay5weSBiL0xpYi91bml0dGVzdC9tb2NrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNGNmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvbW9jay5weQpAQCAtMCwwICsxLDIyMTEgQEAKKyMgbW9jay5weQorIyBUZXN0IHRvb2xzIGZvciBtb2NraW5nIGFuZCBwYXRjaGluZy4KKyMgTWFpbnRhaW5lZCBieSBNaWNoYWVsIEZvb3JkCisjIEJhY2twb3J0IGZvciBvdGhlciB2ZXJzaW9ucyBvZiBQeXRob24gYXZhaWxhYmxlIGZyb20KKyMgaHR0cDovL3B5cGkucHl0aG9uLm9yZy9weXBpL21vY2sKKworX19hbGxfXyA9ICgKKyAgICAnTW9jaycsCisgICAgJ01hZ2ljTW9jaycsCisgICAgJ3BhdGNoJywKKyAgICAnc2VudGluZWwnLAorICAgICdERUZBVUxUJywKKyAgICAnQU5ZJywKKyAgICAnY2FsbCcsCisgICAgJ2NyZWF0ZV9hdXRvc3BlYycsCisgICAgJ0ZJTFRFUl9ESVInLAorICAgICdOb25DYWxsYWJsZU1vY2snLAorICAgICdOb25DYWxsYWJsZU1hZ2ljTW9jaycsCisgICAgJ21vY2tfb3BlbicsCisgICAgJ1Byb3BlcnR5TW9jaycsCispCisKKworX192ZXJzaW9uX18gPSAnMS4wJworCisKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgcHByaW50CitpbXBvcnQgc3lzCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgd3JhcHMKKworCitCYXNlRXhjZXB0aW9ucyA9IChCYXNlRXhjZXB0aW9uLCkKK2lmICdqYXZhJyBpbiBzeXMucGxhdGZvcm06CisgICAgIyBqeXRob24KKyAgICBpbXBvcnQgamF2YQorICAgIEJhc2VFeGNlcHRpb25zID0gKEJhc2VFeGNlcHRpb24sIGphdmEubGFuZy5UaHJvd2FibGUpCisKKworRklMVEVSX0RJUiA9IFRydWUKKworIyBXb3JrYXJvdW5kIGZvciBpc3N1ZSAjMTIzNzAKKyMgV2l0aG91dCB0aGlzLCB0aGUgX19jbGFzc19fIHByb3BlcnRpZXMgd291bGRuJ3QgYmUgc2V0IGNvcnJlY3RseQorX3NhZmVfc3VwZXIgPSBzdXBlcgorCitkZWYgX2lzX2luc3RhbmNlX21vY2sob2JqKToKKyAgICAjIGNhbid0IHVzZSBpc2luc3RhbmNlIG9uIE1vY2sgb2JqZWN0cyBiZWNhdXNlIHRoZXkgb3ZlcnJpZGUgX19jbGFzc19fCisgICAgIyBUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIG1vY2tzIGlzIE5vbkNhbGxhYmxlTW9jaworICAgIHJldHVybiBpc3N1YmNsYXNzKHR5cGUob2JqKSwgTm9uQ2FsbGFibGVNb2NrKQorCisKK2RlZiBfaXNfZXhjZXB0aW9uKG9iaik6CisgICAgcmV0dXJuICgKKyAgICAgICAgaXNpbnN0YW5jZShvYmosIEJhc2VFeGNlcHRpb25zKSBvcgorICAgICAgICBpc2luc3RhbmNlKG9iaiwgdHlwZSkgYW5kIGlzc3ViY2xhc3Mob2JqLCBCYXNlRXhjZXB0aW9ucykKKyAgICApCisKKworY2xhc3MgX3Nsb3R0ZWQob2JqZWN0KToKKyAgICBfX3Nsb3RzX18gPSBbJ2EnXQorCisKK0Rlc2NyaXB0b3JUeXBlcyA9ICgKKyAgICB0eXBlKF9zbG90dGVkLmEpLAorICAgIHByb3BlcnR5LAorKQorCisKK2RlZiBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2U9RmFsc2UpOgorICAgIGlmIGlzaW5zdGFuY2UoZnVuYywgdHlwZSkgYW5kIG5vdCBpbnN0YW5jZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnVuYyA9IGZ1bmMuX19pbml0X18KKyAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNraXBmaXJzdCA9IFRydWUKKyAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGZ1bmMsIEZ1bmN0aW9uVHlwZXMpOgorICAgICAgICAjIGZvciBjbGFzc2VzIHdoZXJlIGluc3RhbmNlIGlzIFRydWUgd2UgZW5kIHVwIGhlcmUgdG9vCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLl9fY2FsbF9fCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBhcmdzcGVjID0gaW5zcGVjdC5nZXRmdWxsYXJnc3BlYyhmdW5jKQorICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICMgQyBmdW5jdGlvbiAvIG1ldGhvZCwgcG9zc2libHkgaW5oZXJpdGVkIG9iamVjdCgpLl9faW5pdF9fCisgICAgICAgIHJldHVybgorCisgICAgcmVnYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzLCBrd29ubHksIGt3b25seWRlZiwgYW5uID0gYXJnc3BlYworCisKKyAgICAjIGluc3RhbmNlIG1ldGhvZHMgYW5kIGNsYXNzbWV0aG9kcyBuZWVkIHRvIGxvc2UgdGhlIHNlbGYgYXJndW1lbnQKKyAgICBpZiBnZXRhdHRyKGZ1bmMsICdfX3NlbGZfXycsIE5vbmUpIGlzIG5vdCBOb25lOgorICAgICAgICByZWdhcmdzID0gcmVnYXJnc1sxOl0KKyAgICBpZiBza2lwZmlyc3Q6CisgICAgICAgICMgdGhpcyBjb25kaXRpb24gYW5kIHRoZSBhYm92ZSBvbmUgYXJlIG5ldmVyIGJvdGggVHJ1ZSAtIHdoeT8KKyAgICAgICAgcmVnYXJncyA9IHJlZ2FyZ3NbMTpdCisKKyAgICBzaWduYXR1cmUgPSBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMoCisgICAgICAgIHJlZ2FyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywKKyAgICAgICAga3dvbmx5LCBrd29ubHlkZWYsIGFubiwgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAiIikKKyAgICByZXR1cm4gc2lnbmF0dXJlWzE6LTFdLCBmdW5jCisKKworZGVmIF9jaGVja19zaWduYXR1cmUoZnVuYywgbW9jaywgc2tpcGZpcnN0LCBpbnN0YW5jZT1GYWxzZSk6CisgICAgaWYgbm90IF9jYWxsYWJsZShmdW5jKToKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXN1bHQgPSBfZ2V0c2lnbmF0dXJlKGZ1bmMsIHNraXBmaXJzdCwgaW5zdGFuY2UpCisgICAgaWYgcmVzdWx0IGlzIE5vbmU6CisgICAgICAgIHJldHVybgorICAgIHNpZ25hdHVyZSwgZnVuYyA9IHJlc3VsdAorCisgICAgIyBjYW4ndCB1c2Ugc2VsZiBiZWNhdXNlICJzZWxmIiBpcyBjb21tb24gYXMgYW4gYXJndW1lbnQgbmFtZQorICAgICMgdW5mb3J0dW5hdGVseSBldmVuIG5vdCBpbiB0aGUgZmlyc3QgcGxhY2UKKyAgICBzcmMgPSAibGFtYmRhIF9tb2NrX3NlbGYsICVzOiBOb25lIiAlIHNpZ25hdHVyZQorICAgIGNoZWNrc2lnID0gZXZhbChzcmMsIHt9KQorICAgIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBjaGVja3NpZykKKyAgICB0eXBlKG1vY2spLl9tb2NrX2NoZWNrX3NpZyA9IGNoZWNrc2lnCisKKworZGVmIF9jb3B5X2Z1bmNfZGV0YWlscyhmdW5jLCBmdW5jb3B5KToKKyAgICBmdW5jb3B5Ll9fbmFtZV9fID0gZnVuYy5fX25hbWVfXworICAgIGZ1bmNvcHkuX19kb2NfXyA9IGZ1bmMuX19kb2NfXworICAgICMgd2UgZXhwbGljaXRseSBkb24ndCBjb3B5IGZ1bmMuX19kaWN0X18gaW50byB0aGlzIGNvcHkgYXMgaXQgd291bGQKKyAgICAjIGV4cG9zZSBvcmlnaW5hbCBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIG1vY2tlZAorICAgIGZ1bmNvcHkuX19tb2R1bGVfXyA9IGZ1bmMuX19tb2R1bGVfXworICAgIGZ1bmNvcHkuX19kZWZhdWx0c19fID0gZnVuYy5fX2RlZmF1bHRzX18KKyAgICBmdW5jb3B5Ll9fa3dkZWZhdWx0c19fID0gZnVuYy5fX2t3ZGVmYXVsdHNfXworCisKK2RlZiBfY2FsbGFibGUob2JqKToKKyAgICBpZiBpc2luc3RhbmNlKG9iaiwgdHlwZSk6CisgICAgICAgIHJldHVybiBUcnVlCisgICAgaWYgZ2V0YXR0cihvYmosICdfX2NhbGxfXycsIE5vbmUpIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfaXNfbGlzdChvYmopOgorICAgICMgY2hlY2tzIGZvciBsaXN0IG9yIHR1cGxlcworICAgICMgWFhYWCBiYWRseSBuYW1lZCEKKyAgICByZXR1cm4gdHlwZShvYmopIGluIChsaXN0LCB0dXBsZSkKKworCitkZWYgX2luc3RhbmNlX2NhbGxhYmxlKG9iaik6CisgICAgIiIiR2l2ZW4gYW4gb2JqZWN0LCByZXR1cm4gVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGNhbGxhYmxlLgorICAgIEZvciBjbGFzc2VzLCByZXR1cm4gVHJ1ZSBpZiBpbnN0YW5jZXMgd291bGQgYmUgY2FsbGFibGUuIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2Uob2JqLCB0eXBlKToKKyAgICAgICAgIyBhbHJlYWR5IGFuIGluc3RhbmNlCisgICAgICAgIHJldHVybiBnZXRhdHRyKG9iaiwgJ19fY2FsbF9fJywgTm9uZSkgaXMgbm90IE5vbmUKKworICAgICMgKmNvdWxkKiBiZSBicm9rZW4gYnkgYSBjbGFzcyBvdmVycmlkaW5nIF9fbXJvX18gb3IgX19kaWN0X18gdmlhCisgICAgIyBhIG1ldGFjbGFzcworICAgIGZvciBiYXNlIGluIChvYmosKSArIG9iai5fX21yb19fOgorICAgICAgICBpZiBiYXNlLl9fZGljdF9fLmdldCgnX19jYWxsX18nKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgcmV0dXJuIEZhbHNlCisKKworZGVmIF9zZXRfc2lnbmF0dXJlKG1vY2ssIG9yaWdpbmFsLCBpbnN0YW5jZT1GYWxzZSk6CisgICAgIyBjcmVhdGVzIGEgZnVuY3Rpb24gd2l0aCBzaWduYXR1cmUgKCphcmdzLCAqKmt3YXJncykgdGhhdCBkZWxlZ2F0ZXMgdG8gYQorICAgICMgbW9jay4gSXQgc3RpbGwgZG9lcyBzaWduYXR1cmUgY2hlY2tpbmcgYnkgY2FsbGluZyBhIGxhbWJkYSB3aXRoIHRoZSBzYW1lCisgICAgIyBzaWduYXR1cmUgYXMgdGhlIG9yaWdpbmFsLgorICAgIGlmIG5vdCBfY2FsbGFibGUob3JpZ2luYWwpOgorICAgICAgICByZXR1cm4KKworICAgIHNraXBmaXJzdCA9IGlzaW5zdGFuY2Uob3JpZ2luYWwsIHR5cGUpCisgICAgcmVzdWx0ID0gX2dldHNpZ25hdHVyZShvcmlnaW5hbCwgc2tpcGZpcnN0LCBpbnN0YW5jZSkKKyAgICBpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgIyB3YXMgYSBDIGZ1bmN0aW9uIChlLmcuIG9iamVjdCgpLl9faW5pdF9fICkgdGhhdCBjYW4ndCBiZSBtb2NrZWQKKyAgICAgICAgcmV0dXJuCisKKyAgICBzaWduYXR1cmUsIGZ1bmMgPSByZXN1bHQKKworICAgIHNyYyA9ICJsYW1iZGEgJXM6IE5vbmUiICUgc2lnbmF0dXJlCisgICAgY2hlY2tzaWcgPSBldmFsKHNyYywge30pCisgICAgX2NvcHlfZnVuY19kZXRhaWxzKGZ1bmMsIGNoZWNrc2lnKQorCisgICAgbmFtZSA9IG9yaWdpbmFsLl9fbmFtZV9fCisgICAgaWYgbm90IG5hbWUuaXNpZGVudGlmaWVyKCk6CisgICAgICAgIG5hbWUgPSAnZnVuY29weScKKyAgICBjb250ZXh0ID0geydfY2hlY2tzaWdfJzogY2hlY2tzaWcsICdtb2NrJzogbW9ja30KKyAgICBzcmMgPSAiIiJkZWYgJXMoKmFyZ3MsICoqa3dhcmdzKToKKyAgICBfY2hlY2tzaWdfKCphcmdzLCAqKmt3YXJncykKKyAgICByZXR1cm4gbW9jaygqYXJncywgKiprd2FyZ3MpIiIiICUgbmFtZQorICAgIGV4ZWMgKHNyYywgY29udGV4dCkKKyAgICBmdW5jb3B5ID0gY29udGV4dFtuYW1lXQorICAgIF9zZXR1cF9mdW5jKGZ1bmNvcHksIG1vY2spCisgICAgcmV0dXJuIGZ1bmNvcHkKKworCitkZWYgX3NldHVwX2Z1bmMoZnVuY29weSwgbW9jayk6CisgICAgZnVuY29weS5tb2NrID0gbW9jaworCisgICAgIyBjYW4ndCB1c2UgaXNpbnN0YW5jZSB3aXRoIG1vY2tzCisgICAgaWYgbm90IF9pc19pbnN0YW5jZV9tb2NrKG1vY2spOgorICAgICAgICByZXR1cm4KKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtb2NrLmFzc2VydF9oYXNfY2FsbHMoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBhc3NlcnRfYW55X2NhbGwoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG1vY2suYXNzZXJ0X2FueV9jYWxsKCphcmdzLCAqKmt3YXJncykKKyAgICBkZWYgcmVzZXRfbW9jaygpOgorICAgICAgICBmdW5jb3B5Lm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHJldCA9IGZ1bmNvcHkucmV0dXJuX3ZhbHVlCisgICAgICAgIGlmIF9pc19pbnN0YW5jZV9tb2NrKHJldCkgYW5kIG5vdCByZXQgaXMgbW9jazoKKyAgICAgICAgICAgIHJldC5yZXNldF9tb2NrKCkKKworICAgIGZ1bmNvcHkuY2FsbGVkID0gRmFsc2UKKyAgICBmdW5jb3B5LmNhbGxfY291bnQgPSAwCisgICAgZnVuY29weS5jYWxsX2FyZ3MgPSBOb25lCisgICAgZnVuY29weS5jYWxsX2FyZ3NfbGlzdCA9IF9DYWxsTGlzdCgpCisgICAgZnVuY29weS5tZXRob2RfY2FsbHMgPSBfQ2FsbExpc3QoKQorICAgIGZ1bmNvcHkubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisKKyAgICBmdW5jb3B5LnJldHVybl92YWx1ZSA9IG1vY2sucmV0dXJuX3ZhbHVlCisgICAgZnVuY29weS5zaWRlX2VmZmVjdCA9IG1vY2suc2lkZV9lZmZlY3QKKyAgICBmdW5jb3B5Ll9tb2NrX2NoaWxkcmVuID0gbW9jay5fbW9ja19jaGlsZHJlbgorCisgICAgZnVuY29weS5hc3NlcnRfY2FsbGVkX3dpdGggPSBhc3NlcnRfY2FsbGVkX3dpdGgKKyAgICBmdW5jb3B5LmFzc2VydF9jYWxsZWRfb25jZV93aXRoID0gYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgKKyAgICBmdW5jb3B5LmFzc2VydF9oYXNfY2FsbHMgPSBhc3NlcnRfaGFzX2NhbGxzCisgICAgZnVuY29weS5hc3NlcnRfYW55X2NhbGwgPSBhc3NlcnRfYW55X2NhbGwKKyAgICBmdW5jb3B5LnJlc2V0X21vY2sgPSByZXNldF9tb2NrCisKKyAgICBtb2NrLl9tb2NrX2RlbGVnYXRlID0gZnVuY29weQorCisKK2RlZiBfaXNfbWFnaWMobmFtZSk6CisgICAgcmV0dXJuICdfXyVzX18nICUgbmFtZVsyOi0yXSA9PSBuYW1lCisKKworY2xhc3MgX1NlbnRpbmVsT2JqZWN0KG9iamVjdCk6CisgICAgIkEgdW5pcXVlLCBuYW1lZCwgc2VudGluZWwgb2JqZWN0LiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICdzZW50aW5lbC4lcycgJSBzZWxmLm5hbWUKKworCitjbGFzcyBfU2VudGluZWwob2JqZWN0KToKKyAgICAiIiJBY2Nlc3MgYXR0cmlidXRlcyB0byByZXR1cm4gYSBuYW1lZCBvYmplY3QsIHVzYWJsZSBhcyBhIHNlbnRpbmVsLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fc2VudGluZWxzID0ge30KKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSA9PSAnX19iYXNlc19fJzoKKyAgICAgICAgICAgICMgV2l0aG91dCB0aGlzIGhlbHAodW5pdHRlc3QubW9jaykgcmFpc2VzIGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NlbnRpbmVscy5zZXRkZWZhdWx0KG5hbWUsIF9TZW50aW5lbE9iamVjdChuYW1lKSkKKworCitzZW50aW5lbCA9IF9TZW50aW5lbCgpCisKK0RFRkFVTFQgPSBzZW50aW5lbC5ERUZBVUxUCitfbWlzc2luZyA9IHNlbnRpbmVsLk1JU1NJTkcKK19kZWxldGVkID0gc2VudGluZWwuREVMRVRFRAorCisKK2RlZiBfY29weSh2YWx1ZSk6CisgICAgaWYgdHlwZSh2YWx1ZSkgaW4gKGRpY3QsIGxpc3QsIHR1cGxlLCBzZXQpOgorICAgICAgICByZXR1cm4gdHlwZSh2YWx1ZSkodmFsdWUpCisgICAgcmV0dXJuIHZhbHVlCisKKworX2FsbG93ZWRfbmFtZXMgPSBzZXQoCisgICAgWworICAgICAgICAncmV0dXJuX3ZhbHVlJywgJ19tb2NrX3JldHVybl92YWx1ZScsICdzaWRlX2VmZmVjdCcsCisgICAgICAgICdfbW9ja19zaWRlX2VmZmVjdCcsICdfbW9ja19wYXJlbnQnLCAnX21vY2tfbmV3X3BhcmVudCcsCisgICAgICAgICdfbW9ja19uYW1lJywgJ19tb2NrX25ld19uYW1lJworICAgIF0KKykKKworCitkZWYgX2RlbGVnYXRpbmdfcHJvcGVydHkobmFtZSk6CisgICAgX2FsbG93ZWRfbmFtZXMuYWRkKG5hbWUpCisgICAgX3RoZV9uYW1lID0gJ19tb2NrXycgKyBuYW1lCisgICAgZGVmIF9nZXQoc2VsZiwgbmFtZT1uYW1lLCBfdGhlX25hbWU9X3RoZV9uYW1lKToKKyAgICAgICAgc2lnID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBzaWcgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIF90aGVfbmFtZSkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc2lnLCBuYW1lKQorICAgIGRlZiBfc2V0KHNlbGYsIHZhbHVlLCBuYW1lPW5hbWUsIF90aGVfbmFtZT1fdGhlX25hbWUpOgorICAgICAgICBzaWcgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIHNpZyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1tfdGhlX25hbWVdID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNldGF0dHIoc2lnLCBuYW1lLCB2YWx1ZSkKKworICAgIHJldHVybiBwcm9wZXJ0eShfZ2V0LCBfc2V0KQorCisKKworY2xhc3MgX0NhbGxMaXN0KGxpc3QpOgorCisgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBsaXN0KToKKyAgICAgICAgICAgIHJldHVybiBsaXN0Ll9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSkKKyAgICAgICAgbGVuX3ZhbHVlID0gbGVuKHZhbHVlKQorICAgICAgICBsZW5fc2VsZiA9IGxlbihzZWxmKQorICAgICAgICBpZiBsZW5fdmFsdWUgPiBsZW5fc2VsZjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbl9zZWxmIC0gbGVuX3ZhbHVlICsgMSk6CisgICAgICAgICAgICBzdWJfbGlzdCA9IHNlbGZbaTppK2xlbl92YWx1ZV0KKyAgICAgICAgICAgIGlmIHN1Yl9saXN0ID09IHZhbHVlOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gcHByaW50LnBmb3JtYXQobGlzdChzZWxmKSkKKworCitkZWYgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHBhcmVudCwgdmFsdWUsIG5hbWUsIG5ld19uYW1lKToKKyAgICBpZiBub3QgX2lzX2luc3RhbmNlX21vY2sodmFsdWUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBpZiAoKHZhbHVlLl9tb2NrX25hbWUgb3IgdmFsdWUuX21vY2tfbmV3X25hbWUpIG9yCisgICAgICAgICh2YWx1ZS5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUpIG9yCisgICAgICAgICh2YWx1ZS5fbW9ja19uZXdfcGFyZW50IGlzIG5vdCBOb25lKSk6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgX3BhcmVudCA9IHBhcmVudAorICAgIHdoaWxlIF9wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICMgc2V0dGluZyBhIG1vY2sgKHZhbHVlKSBhcyBhIGNoaWxkIG9yIHJldHVybiB2YWx1ZSBvZiBpdHNlbGYKKyAgICAgICAgIyBzaG91bGQgbm90IG1vZGlmeSB0aGUgbW9jaworICAgICAgICBpZiBfcGFyZW50IGlzIHZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIF9wYXJlbnQgPSBfcGFyZW50Ll9tb2NrX25ld19wYXJlbnQKKworICAgIGlmIG5ld19uYW1lOgorICAgICAgICB2YWx1ZS5fbW9ja19uZXdfcGFyZW50ID0gcGFyZW50CisgICAgICAgIHZhbHVlLl9tb2NrX25ld19uYW1lID0gbmV3X25hbWUKKyAgICBpZiBuYW1lOgorICAgICAgICB2YWx1ZS5fbW9ja19wYXJlbnQgPSBwYXJlbnQKKyAgICAgICAgdmFsdWUuX21vY2tfbmFtZSA9IG5hbWUKKyAgICByZXR1cm4gVHJ1ZQorCisKKworY2xhc3MgQmFzZShvYmplY3QpOgorICAgIF9tb2NrX3JldHVybl92YWx1ZSA9IERFRkFVTFQKKyAgICBfbW9ja19zaWRlX2VmZmVjdCA9IE5vbmUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcGFzcworCisKKworY2xhc3MgTm9uQ2FsbGFibGVNb2NrKEJhc2UpOgorICAgICIiIkEgbm9uLWNhbGxhYmxlIHZlcnNpb24gb2YgYE1vY2tgIiIiCisKKyAgICBkZWYgX19uZXdfXyhjbHMsICphcmdzLCAqKmt3KToKKyAgICAgICAgIyBldmVyeSBpbnN0YW5jZSBoYXMgaXRzIG93biBjbGFzcworICAgICAgICAjIHNvIHdlIGNhbiBjcmVhdGUgbWFnaWMgbWV0aG9kcyBvbiB0aGUKKyAgICAgICAgIyBjbGFzcyB3aXRob3V0IHN0b21waW5nIG9uIG90aGVyIG1vY2tzCisgICAgICAgIG5ldyA9IHR5cGUoY2xzLl9fbmFtZV9fLCAoY2xzLCksIHsnX19kb2NfXyc6IGNscy5fX2RvY19ffSkKKyAgICAgICAgaW5zdGFuY2UgPSBvYmplY3QuX19uZXdfXyhuZXcpCisgICAgICAgIHJldHVybiBpbnN0YW5jZQorCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBzcGVjPU5vbmUsIHdyYXBzPU5vbmUsIG5hbWU9Tm9uZSwgc3BlY19zZXQ9Tm9uZSwKKyAgICAgICAgICAgIHBhcmVudD1Ob25lLCBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsCisgICAgICAgICAgICAqKmt3YXJncworICAgICAgICApOgorICAgICAgICBpZiBfbmV3X3BhcmVudCBpcyBOb25lOgorICAgICAgICAgICAgX25ld19wYXJlbnQgPSBwYXJlbnQKKworICAgICAgICBfX2RpY3RfXyA9IHNlbGYuX19kaWN0X18KKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3BhcmVudCddID0gcGFyZW50CisgICAgICAgIF9fZGljdF9fWydfbW9ja19uYW1lJ10gPSBuYW1lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19uZXdfbmFtZSddID0gX25ld19uYW1lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19uZXdfcGFyZW50J10gPSBfbmV3X3BhcmVudAorCisgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3BlYyA9IHNwZWNfc2V0CisgICAgICAgICAgICBzcGVjX3NldCA9IFRydWUKKworICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jaGlsZHJlbiddID0ge30KKyAgICAgICAgX19kaWN0X19bJ19tb2NrX3dyYXBzJ10gPSB3cmFwcworICAgICAgICBfX2RpY3RfX1snX21vY2tfZGVsZWdhdGUnXSA9IE5vbmUKKworICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbGVkJ10gPSBGYWxzZQorICAgICAgICBfX2RpY3RfX1snX21vY2tfY2FsbF9hcmdzJ10gPSBOb25lCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2NvdW50J10gPSAwCisgICAgICAgIF9fZGljdF9fWydfbW9ja19jYWxsX2FyZ3NfbGlzdCddID0gX0NhbGxMaXN0KCkKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX21vY2tfY2FsbHMnXSA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgX19kaWN0X19bJ21ldGhvZF9jYWxscyddID0gX0NhbGxMaXN0KCkKKworICAgICAgICBpZiBrd2FyZ3M6CisgICAgICAgICAgICBzZWxmLmNvbmZpZ3VyZV9tb2NrKCoqa3dhcmdzKQorCisgICAgICAgIF9zYWZlX3N1cGVyKE5vbkNhbGxhYmxlTW9jaywgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBzcGVjLCB3cmFwcywgbmFtZSwgc3BlY19zZXQsIHBhcmVudCwKKyAgICAgICAgICAgIF9zcGVjX3N0YXRlCisgICAgICAgICkKKworCisgICAgZGVmIGF0dGFjaF9tb2NrKHNlbGYsIG1vY2ssIGF0dHJpYnV0ZSk6CisgICAgICAgICIiIgorICAgICAgICBBdHRhY2ggYSBtb2NrIGFzIGFuIGF0dHJpYnV0ZSBvZiB0aGlzIG9uZSwgcmVwbGFjaW5nIGl0cyBuYW1lIGFuZAorICAgICAgICBwYXJlbnQuIENhbGxzIHRvIHRoZSBhdHRhY2hlZCBtb2NrIHdpbGwgYmUgcmVjb3JkZWQgaW4gdGhlCisgICAgICAgIGBtZXRob2RfY2FsbHNgIGFuZCBgbW9ja19jYWxsc2AgYXR0cmlidXRlcyBvZiB0aGlzIG9uZS4iIiIKKyAgICAgICAgbW9jay5fbW9ja19wYXJlbnQgPSBOb25lCisgICAgICAgIG1vY2suX21vY2tfbmV3X3BhcmVudCA9IE5vbmUKKyAgICAgICAgbW9jay5fbW9ja19uYW1lID0gJycKKyAgICAgICAgbW9jay5fbW9ja19uZXdfbmFtZSA9IE5vbmUKKworICAgICAgICBzZXRhdHRyKHNlbGYsIGF0dHJpYnV0ZSwgbW9jaykKKworCisgICAgZGVmIG1vY2tfYWRkX3NwZWMoc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UpOgorICAgICAgICAiIiJBZGQgYSBzcGVjIHRvIGEgbW9jay4gYHNwZWNgIGNhbiBlaXRoZXIgYmUgYW4gb2JqZWN0IG9yIGEKKyAgICAgICAgbGlzdCBvZiBzdHJpbmdzLiBPbmx5IGF0dHJpYnV0ZXMgb24gdGhlIGBzcGVjYCBjYW4gYmUgZmV0Y2hlZCBhcworICAgICAgICBhdHRyaWJ1dGVzIGZyb20gdGhlIG1vY2suCisKKyAgICAgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gb25seSBhdHRyaWJ1dGVzIG9uIHRoZSBzcGVjIGNhbiBiZSBzZXQuIiIiCisgICAgICAgIHNlbGYuX21vY2tfYWRkX3NwZWMoc3BlYywgc3BlY19zZXQpCisKKworICAgIGRlZiBfbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldCk6CisgICAgICAgIF9zcGVjX2NsYXNzID0gTm9uZQorCisgICAgICAgIGlmIHNwZWMgaXMgbm90IE5vbmUgYW5kIG5vdCBfaXNfbGlzdChzcGVjKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3BlYywgdHlwZSk6CisgICAgICAgICAgICAgICAgX3NwZWNfY2xhc3MgPSBzcGVjCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9zcGVjX2NsYXNzID0gX2dldF9jbGFzcyhzcGVjKQorCisgICAgICAgICAgICBzcGVjID0gZGlyKHNwZWMpCisKKyAgICAgICAgX19kaWN0X18gPSBzZWxmLl9fZGljdF9fCisgICAgICAgIF9fZGljdF9fWydfc3BlY19jbGFzcyddID0gX3NwZWNfY2xhc3MKKyAgICAgICAgX19kaWN0X19bJ19zcGVjX3NldCddID0gc3BlY19zZXQKKyAgICAgICAgX19kaWN0X19bJ19tb2NrX21ldGhvZHMnXSA9IHNwZWMKKworCisgICAgZGVmIF9fZ2V0X3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldCA9IHNlbGYuX21vY2tfZGVsZWdhdGUucmV0dXJuX3ZhbHVlCisKKyAgICAgICAgaWYgcmV0IGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXQgPSBzZWxmLl9nZXRfY2hpbGRfbW9jaygKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1zZWxmLCBfbmV3X25hbWU9JygpJworICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5yZXR1cm5fdmFsdWUgPSByZXQKKyAgICAgICAgcmV0dXJuIHJldAorCisKKyAgICBkZWYgX19zZXRfcmV0dXJuX3ZhbHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgaWYgc2VsZi5fbW9ja19kZWxlZ2F0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfZGVsZWdhdGUucmV0dXJuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX21vY2tfcmV0dXJuX3ZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgTm9uZSwgJygpJykKKworICAgIF9fcmV0dXJuX3ZhbHVlX2RvYyA9ICJUaGUgdmFsdWUgdG8gYmUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIgorICAgIHJldHVybl92YWx1ZSA9IHByb3BlcnR5KF9fZ2V0X3JldHVybl92YWx1ZSwgX19zZXRfcmV0dXJuX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fcmV0dXJuX3ZhbHVlX2RvYykKKworCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9fY2xhc3NfXyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fc3BlY19jbGFzcyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NwZWNfY2xhc3MKKworICAgIGNhbGxlZCA9IF9kZWxlZ2F0aW5nX3Byb3BlcnR5KCdjYWxsZWQnKQorICAgIGNhbGxfY291bnQgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9jb3VudCcpCisgICAgY2FsbF9hcmdzID0gX2RlbGVnYXRpbmdfcHJvcGVydHkoJ2NhbGxfYXJncycpCisgICAgY2FsbF9hcmdzX2xpc3QgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnY2FsbF9hcmdzX2xpc3QnKQorICAgIG1vY2tfY2FsbHMgPSBfZGVsZWdhdGluZ19wcm9wZXJ0eSgnbW9ja19jYWxscycpCisKKworICAgIGRlZiBfX2dldF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgZGVsZWdhdGVkID0gc2VsZi5fbW9ja19kZWxlZ2F0ZQorICAgICAgICBpZiBkZWxlZ2F0ZWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3NpZGVfZWZmZWN0CisgICAgICAgIHJldHVybiBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QKKworICAgIGRlZiBfX3NldF9zaWRlX2VmZmVjdChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHZhbHVlID0gX3RyeV9pdGVyKHZhbHVlKQorICAgICAgICBkZWxlZ2F0ZWQgPSBzZWxmLl9tb2NrX2RlbGVnYXRlCisgICAgICAgIGlmIGRlbGVnYXRlZCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fbW9ja19zaWRlX2VmZmVjdCA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWxlZ2F0ZWQuc2lkZV9lZmZlY3QgPSB2YWx1ZQorCisgICAgc2lkZV9lZmZlY3QgPSBwcm9wZXJ0eShfX2dldF9zaWRlX2VmZmVjdCwgX19zZXRfc2lkZV9lZmZlY3QpCisKKworICAgIGRlZiByZXNldF9tb2NrKHNlbGYpOgorICAgICAgICAiUmVzdG9yZSB0aGUgbW9jayBvYmplY3QgdG8gaXRzIGluaXRpYWwgc3RhdGUuIgorICAgICAgICBzZWxmLmNhbGxlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuY2FsbF9hcmdzID0gTm9uZQorICAgICAgICBzZWxmLmNhbGxfY291bnQgPSAwCisgICAgICAgIHNlbGYubW9ja19jYWxscyA9IF9DYWxsTGlzdCgpCisgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QgPSBfQ2FsbExpc3QoKQorICAgICAgICBzZWxmLm1ldGhvZF9jYWxscyA9IF9DYWxsTGlzdCgpCisKKyAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYuX21vY2tfY2hpbGRyZW4udmFsdWVzKCk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBfU3BlY1N0YXRlKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgY2hpbGQucmVzZXRfbW9jaygpCisKKyAgICAgICAgcmV0ID0gc2VsZi5fbW9ja19yZXR1cm5fdmFsdWUKKyAgICAgICAgaWYgX2lzX2luc3RhbmNlX21vY2socmV0KSBhbmQgcmV0IGlzIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0LnJlc2V0X21vY2soKQorCisKKyAgICBkZWYgY29uZmlndXJlX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAiIiJTZXQgYXR0cmlidXRlcyBvbiB0aGUgbW9jayB0aHJvdWdoIGtleXdvcmQgYXJndW1lbnRzLgorCisgICAgICAgIEF0dHJpYnV0ZXMgcGx1cyByZXR1cm4gdmFsdWVzIGFuZCBzaWRlIGVmZmVjdHMgY2FuIGJlIHNldCBvbiBjaGlsZAorICAgICAgICBtb2NrcyB1c2luZyBzdGFuZGFyZCBkb3Qgbm90YXRpb24gYW5kIHVucGFja2luZyBhIGRpY3Rpb25hcnkgaW4gdGhlCisgICAgICAgIG1ldGhvZCBjYWxsOgorCisgICAgICAgID4+PiBhdHRycyA9IHsnbWV0aG9kLnJldHVybl92YWx1ZSc6IDMsICdvdGhlci5zaWRlX2VmZmVjdCc6IEtleUVycm9yfQorICAgICAgICA+Pj4gbW9jay5jb25maWd1cmVfbW9jaygqKmF0dHJzKSIiIgorICAgICAgICBmb3IgYXJnLCB2YWwgaW4gc29ydGVkKGt3YXJncy5pdGVtcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2Ugc29ydCBvbiB0aGUgbnVtYmVyIG9mIGRvdHMgc28gdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcyBhcmUgc2V0IGJlZm9yZSB3ZSBzZXQgYXR0cmlidXRlcyBvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYXR0cmlidXRlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleT1sYW1iZGEgZW50cnk6IGVudHJ5WzBdLmNvdW50KCcuJykpOgorICAgICAgICAgICAgYXJncyA9IGFyZy5zcGxpdCgnLicpCisgICAgICAgICAgICBmaW5hbCA9IGFyZ3MucG9wKCkKKyAgICAgICAgICAgIG9iaiA9IHNlbGYKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBhcmdzOgorICAgICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCBlbnRyeSkKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBmaW5hbCwgdmFsKQorCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgPT0gJ19tb2NrX21ldGhvZHMnOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgZWxpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9tb2NrX21ldGhvZHMgb3IgbmFtZSBpbiBfYWxsX21hZ2ljczoKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSBuYW1lKQorICAgICAgICBlbGlmIF9pc19tYWdpYyhuYW1lKToKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSkKKyAgICAgICAgaWYgcmVzdWx0IGlzIF9kZWxldGVkOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobmFtZSkKKyAgICAgICAgZWxpZiByZXN1bHQgaXMgTm9uZToKKyAgICAgICAgICAgIHdyYXBzID0gTm9uZQorICAgICAgICAgICAgaWYgc2VsZi5fbW9ja193cmFwcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIFhYWFggc2hvdWxkIHdlIGdldCB0aGUgYXR0cmlidXRlIHdpdGhvdXQgdHJpZ2dlcmluZyBjb2RlCisgICAgICAgICAgICAgICAgIyBleGVjdXRpb24/CisgICAgICAgICAgICAgICAgd3JhcHMgPSBnZXRhdHRyKHNlbGYuX21vY2tfd3JhcHMsIG5hbWUpCisKKyAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYuX2dldF9jaGlsZF9tb2NrKAorICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLCBuYW1lPW5hbWUsIHdyYXBzPXdyYXBzLCBfbmV3X25hbWU9bmFtZSwKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1zZWxmCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdICA9IHJlc3VsdAorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShyZXN1bHQsIF9TcGVjU3RhdGUpOgorICAgICAgICAgICAgcmVzdWx0ID0gY3JlYXRlX2F1dG9zcGVjKAorICAgICAgICAgICAgICAgIHJlc3VsdC5zcGVjLCByZXN1bHQuc3BlY19zZXQsIHJlc3VsdC5pbnN0YW5jZSwKKyAgICAgICAgICAgICAgICByZXN1bHQucGFyZW50LCByZXN1bHQubmFtZQorICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXSAgPSByZXN1bHQKKworICAgICAgICByZXR1cm4gcmVzdWx0CisKKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgX25hbWVfbGlzdCA9IFtzZWxmLl9tb2NrX25ld19uYW1lXQorICAgICAgICBfcGFyZW50ID0gc2VsZi5fbW9ja19uZXdfcGFyZW50CisgICAgICAgIGxhc3QgPSBzZWxmCisKKyAgICAgICAgZG90ID0gJy4nCisgICAgICAgIGlmIF9uYW1lX2xpc3QgPT0gWycoKSddOgorICAgICAgICAgICAgZG90ID0gJycKKyAgICAgICAgc2VlbiA9IHNldCgpCisgICAgICAgIHdoaWxlIF9wYXJlbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBsYXN0ID0gX3BhcmVudAorCisgICAgICAgICAgICBfbmFtZV9saXN0LmFwcGVuZChfcGFyZW50Ll9tb2NrX25ld19uYW1lICsgZG90KQorICAgICAgICAgICAgZG90ID0gJy4nCisgICAgICAgICAgICBpZiBfcGFyZW50Ll9tb2NrX25ld19uYW1lID09ICcoKSc6CisgICAgICAgICAgICAgICAgZG90ID0gJycKKworICAgICAgICAgICAgX3BhcmVudCA9IF9wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgICAgICAgICAjIHVzZSBpZHMgaGVyZSBzbyBhcyBub3QgdG8gY2FsbCBfX2hhc2hfXyBvbiB0aGUgbW9ja3MKKyAgICAgICAgICAgIGlmIGlkKF9wYXJlbnQpIGluIHNlZW46CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIHNlZW4uYWRkKGlkKF9wYXJlbnQpKQorCisgICAgICAgIF9uYW1lX2xpc3QgPSBsaXN0KHJldmVyc2VkKF9uYW1lX2xpc3QpKQorICAgICAgICBfZmlyc3QgPSBsYXN0Ll9tb2NrX25hbWUgb3IgJ21vY2snCisgICAgICAgIGlmIGxlbihfbmFtZV9saXN0KSA+IDE6CisgICAgICAgICAgICBpZiBfbmFtZV9saXN0WzFdIG5vdCBpbiAoJygpJywgJygpLicpOgorICAgICAgICAgICAgICAgIF9maXJzdCArPSAnLicKKyAgICAgICAgX25hbWVfbGlzdFswXSA9IF9maXJzdAorICAgICAgICBuYW1lID0gJycuam9pbihfbmFtZV9saXN0KQorCisgICAgICAgIG5hbWVfc3RyaW5nID0gJycKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gKCdtb2NrJywgJ21vY2suJyk6CisgICAgICAgICAgICBuYW1lX3N0cmluZyA9ICcgbmFtZT0lcicgJSBuYW1lCisKKyAgICAgICAgc3BlY19zdHJpbmcgPSAnJworICAgICAgICBpZiBzZWxmLl9zcGVjX2NsYXNzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc3BlY19zdHJpbmcgPSAnIHNwZWM9JXInCisgICAgICAgICAgICBpZiBzZWxmLl9zcGVjX3NldDoKKyAgICAgICAgICAgICAgICBzcGVjX3N0cmluZyA9ICcgc3BlY19zZXQ9JXInCisgICAgICAgICAgICBzcGVjX3N0cmluZyA9IHNwZWNfc3RyaW5nICUgc2VsZi5fc3BlY19jbGFzcy5fX25hbWVfXworICAgICAgICByZXR1cm4gIjwlcyVzJXMgaWQ9JyVzJz4iICUgKAorICAgICAgICAgICAgdHlwZShzZWxmKS5fX25hbWVfXywKKyAgICAgICAgICAgIG5hbWVfc3RyaW5nLAorICAgICAgICAgICAgc3BlY19zdHJpbmcsCisgICAgICAgICAgICBpZChzZWxmKQorICAgICAgICApCisKKworICAgIGRlZiBfX2Rpcl9fKHNlbGYpOgorICAgICAgICAiIiJGaWx0ZXIgdGhlIG91dHB1dCBvZiBgZGlyKG1vY2spYCB0byBvbmx5IHVzZWZ1bCBtZW1iZXJzLiIiIgorICAgICAgICBpZiBub3QgRklMVEVSX0RJUjoKKyAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19kaXJfXyhzZWxmKQorCisgICAgICAgIGV4dHJhcyA9IHNlbGYuX21vY2tfbWV0aG9kcyBvciBbXQorICAgICAgICBmcm9tX3R5cGUgPSBkaXIodHlwZShzZWxmKSkKKyAgICAgICAgZnJvbV9kaWN0ID0gbGlzdChzZWxmLl9fZGljdF9fKQorCisgICAgICAgIGZyb21fdHlwZSA9IFtlIGZvciBlIGluIGZyb21fdHlwZSBpZiBub3QgZS5zdGFydHN3aXRoKCdfJyldCisgICAgICAgIGZyb21fZGljdCA9IFtlIGZvciBlIGluIGZyb21fZGljdCBpZiBub3QgZS5zdGFydHN3aXRoKCdfJykgb3IKKyAgICAgICAgICAgICAgICAgICAgIF9pc19tYWdpYyhlKV0KKyAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQoZXh0cmFzICsgZnJvbV90eXBlICsgZnJvbV9kaWN0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChzZWxmLl9tb2NrX2NoaWxkcmVuKSkpCisKKworICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIGlmIG5hbWUgaW4gX2FsbG93ZWRfbmFtZXM6CisgICAgICAgICAgICAjIHByb3BlcnR5IHNldHRlcnMgZ28gdGhyb3VnaCBoZXJlCisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKQorICAgICAgICBlbGlmIChzZWxmLl9zcGVjX3NldCBhbmQgc2VsZi5fbW9ja19tZXRob2RzIGlzIG5vdCBOb25lIGFuZAorICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fbW9ja19tZXRob2RzIGFuZAorICAgICAgICAgICAgbmFtZSBub3QgaW4gc2VsZi5fX2RpY3RfXyk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisgICAgICAgIGVsaWYgbmFtZSBpbiBfdW5zdXBwb3J0ZWRfbWFnaWNzOgorICAgICAgICAgICAgbXNnID0gJ0F0dGVtcHRpbmcgdG8gc2V0IHVuc3VwcG9ydGVkIG1hZ2ljIG1ldGhvZCAlci4nICUgbmFtZQorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IobXNnKQorICAgICAgICBlbGlmIG5hbWUgaW4gX2FsbF9tYWdpY3M6CisgICAgICAgICAgICBpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmUgYW5kIG5hbWUgbm90IGluIHNlbGYuX21vY2tfbWV0aG9kczoKKyAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiTW9jayBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIG5hbWUpCisKKyAgICAgICAgICAgIGlmIG5vdCBfaXNfaW5zdGFuY2VfbW9jayh2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2V0YXR0cih0eXBlKHNlbGYpLCBuYW1lLCBfZ2V0X21ldGhvZChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgb3JpZ2luYWwgPSB2YWx1ZQorICAgICAgICAgICAgICAgIHZhbHVlID0gbGFtYmRhICphcmdzLCAqKmt3OiBvcmlnaW5hbChzZWxmLCAqYXJncywgKiprdykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBvbmx5IHNldCBfbmV3X25hbWUgYW5kIG5vdCBuYW1lIHNvIHRoYXQgbW9ja19jYWxscyBpcyB0cmFja2VkCisgICAgICAgICAgICAgICAgIyBidXQgbm90IG1ldGhvZCBjYWxscworICAgICAgICAgICAgICAgIF9jaGVja19hbmRfc2V0X3BhcmVudChzZWxmLCB2YWx1ZSwgTm9uZSwgbmFtZSkKKyAgICAgICAgICAgICAgICBzZXRhdHRyKHR5cGUoc2VsZiksIG5hbWUsIHZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuX21vY2tfY2hpbGRyZW5bbmFtZV0gPSB2YWx1ZQorICAgICAgICBlbGlmIG5hbWUgPT0gJ19fY2xhc3NfXyc6CisgICAgICAgICAgICBzZWxmLl9zcGVjX2NsYXNzID0gdmFsdWUKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgX2NoZWNrX2FuZF9zZXRfcGFyZW50KHNlbGYsIHZhbHVlLCBuYW1lLCBuYW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gdmFsdWUKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkKKworCisgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBuYW1lIGluIF9hbGxfbWFnaWNzIGFuZCBuYW1lIGluIHR5cGUoc2VsZikuX19kaWN0X186CisgICAgICAgICAgICBkZWxhdHRyKHR5cGUoc2VsZiksIG5hbWUpCisgICAgICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICMgZm9yIG1hZ2ljIG1ldGhvZHMgdGhhdCBhcmUgc3RpbGwgTWFnaWNQcm94eSBvYmplY3RzIGFuZAorICAgICAgICAgICAgICAgICMgbm90IHNldCBvbiB0aGUgaW5zdGFuY2UgaXRzZWxmCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbmFtZSBpbiBzZWxmLl9fZGljdF9fOgorICAgICAgICAgICAgb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpCisKKyAgICAgICAgb2JqID0gc2VsZi5fbW9ja19jaGlsZHJlbi5nZXQobmFtZSwgX21pc3NpbmcpCisgICAgICAgIGlmIG9iaiBpcyBfZGVsZXRlZDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCisgICAgICAgIGlmIG9iaiBpcyBub3QgX21pc3Npbmc6CisgICAgICAgICAgICBkZWwgc2VsZi5fbW9ja19jaGlsZHJlbltuYW1lXQorICAgICAgICBzZWxmLl9tb2NrX2NoaWxkcmVuW25hbWVdID0gX2RlbGV0ZWQKKworCisKKyAgICBkZWYgX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKHNlbGYsIGFyZ3MsIGt3YXJncyk6CisgICAgICAgIG5hbWUgPSBzZWxmLl9tb2NrX25hbWUgb3IgJ21vY2snCisgICAgICAgIHJldHVybiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncykKKworCisgICAgZGVmIF9mb3JtYXRfbW9ja19mYWlsdXJlX21lc3NhZ2Uoc2VsZiwgYXJncywga3dhcmdzKToKKyAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICBleHBlY3RlZF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZShhcmdzLCBrd2FyZ3MpCisgICAgICAgIGNhbGxfYXJncyA9IHNlbGYuY2FsbF9hcmdzCisgICAgICAgIGlmIGxlbihjYWxsX2FyZ3MpID09IDM6CisgICAgICAgICAgICBjYWxsX2FyZ3MgPSBjYWxsX2FyZ3NbMTpdCisgICAgICAgIGFjdHVhbF9zdHJpbmcgPSBzZWxmLl9mb3JtYXRfbW9ja19jYWxsX3NpZ25hdHVyZSgqY2FsbF9hcmdzKQorICAgICAgICByZXR1cm4gbWVzc2FnZSAlIChleHBlY3RlZF9zdHJpbmcsIGFjdHVhbF9zdHJpbmcpCisKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX3dpdGgoX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIiIiYXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnRzLgorCisgICAgICAgIFJhaXNlcyBhbiBBc3NlcnRpb25FcnJvciBpZiB0aGUgYXJncyBhbmQga2V5d29yZCBhcmdzIHBhc3NlZCBpbiBhcmUKKyAgICAgICAgZGlmZmVyZW50IHRvIHRoZSBsYXN0IGNhbGwgdG8gdGhlIG1vY2suIiIiCisgICAgICAgIHNlbGYgPSBfbW9ja19zZWxmCisgICAgICAgIGlmIHNlbGYuY2FsbF9hcmdzIGlzIE5vbmU6CisgICAgICAgICAgICBleHBlY3RlZCA9IHNlbGYuX2Zvcm1hdF9tb2NrX2NhbGxfc2lnbmF0dXJlKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCdFeHBlY3RlZCBjYWxsOiAlc1xuTm90IGNhbGxlZCcgJSAoZXhwZWN0ZWQsKSkKKworICAgICAgICBpZiBzZWxmLmNhbGxfYXJncyAhPSAoYXJncywga3dhcmdzKToKKyAgICAgICAgICAgIG1zZyA9IHNlbGYuX2Zvcm1hdF9tb2NrX2ZhaWx1cmVfbWVzc2FnZShhcmdzLCBrd2FyZ3MpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisKKworICAgIGRlZiBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAiIiJhc3NlcnQgdGhhdCB0aGUgbW9jayB3YXMgY2FsbGVkIGV4YWN0bHkgb25jZSBhbmQgd2l0aCB0aGUgc3BlY2lmaWVkCisgICAgICAgIGFyZ3VtZW50cy4iIiIKKyAgICAgICAgc2VsZiA9IF9tb2NrX3NlbGYKKyAgICAgICAgaWYgbm90IHNlbGYuY2FsbF9jb3VudCA9PSAxOgorICAgICAgICAgICAgbXNnID0gKCJFeHBlY3RlZCAnJXMnIHRvIGJlIGNhbGxlZCBvbmNlLiBDYWxsZWQgJXMgdGltZXMuIiAlCisgICAgICAgICAgICAgICAgICAgKHNlbGYuX21vY2tfbmFtZSBvciAnbW9jaycsIHNlbGYuY2FsbF9jb3VudCkpCisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcihtc2cpCisgICAgICAgIHJldHVybiBzZWxmLmFzc2VydF9jYWxsZWRfd2l0aCgqYXJncywgKiprd2FyZ3MpCisKKworICAgIGRlZiBhc3NlcnRfaGFzX2NhbGxzKHNlbGYsIGNhbGxzLCBhbnlfb3JkZXI9RmFsc2UpOgorICAgICAgICAiIiJhc3NlcnQgdGhlIG1vY2sgaGFzIGJlZW4gY2FsbGVkIHdpdGggdGhlIHNwZWNpZmllZCBjYWxscy4KKyAgICAgICAgVGhlIGBtb2NrX2NhbGxzYCBsaXN0IGlzIGNoZWNrZWQgZm9yIHRoZSBjYWxscy4KKworICAgICAgICBJZiBgYW55X29yZGVyYCBpcyBGYWxzZSAodGhlIGRlZmF1bHQpIHRoZW4gdGhlIGNhbGxzIG11c3QgYmUKKyAgICAgICAgc2VxdWVudGlhbC4gVGhlcmUgY2FuIGJlIGV4dHJhIGNhbGxzIGJlZm9yZSBvciBhZnRlciB0aGUKKyAgICAgICAgc3BlY2lmaWVkIGNhbGxzLgorCisgICAgICAgIElmIGBhbnlfb3JkZXJgIGlzIFRydWUgdGhlbiB0aGUgY2FsbHMgY2FuIGJlIGluIGFueSBvcmRlciwgYnV0CisgICAgICAgIHRoZXkgbXVzdCBhbGwgYXBwZWFyIGluIGBtb2NrX2NhbGxzYC4iIiIKKyAgICAgICAgaWYgbm90IGFueV9vcmRlcjoKKyAgICAgICAgICAgIGlmIGNhbGxzIG5vdCBpbiBzZWxmLm1vY2tfY2FsbHM6CisgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdDYWxscyBub3QgZm91bmQuXG5FeHBlY3RlZDogJXJcbicKKyAgICAgICAgICAgICAgICAgICAgJ0FjdHVhbDogJXInICUgKGNhbGxzLCBzZWxmLm1vY2tfY2FsbHMpCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYWxsX2NhbGxzID0gbGlzdChzZWxmLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbm90X2ZvdW5kID0gW10KKyAgICAgICAgZm9yIGthbGwgaW4gY2FsbHM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgYWxsX2NhbGxzLnJlbW92ZShrYWxsKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgbm90X2ZvdW5kLmFwcGVuZChrYWxsKQorICAgICAgICBpZiBub3RfZm91bmQ6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAnJXIgbm90IGFsbCBmb3VuZCBpbiBjYWxsIGxpc3QnICUgKHR1cGxlKG5vdF9mb3VuZCksKQorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgYXNzZXJ0X2FueV9jYWxsKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICIiImFzc2VydCB0aGUgbW9jayBoYXMgYmVlbiBjYWxsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGFyZ3VtZW50cy4KKworICAgICAgICBUaGUgYXNzZXJ0IHBhc3NlcyBpZiB0aGUgbW9jayBoYXMgKmV2ZXIqIGJlZW4gY2FsbGVkLCB1bmxpa2UKKyAgICAgICAgYGFzc2VydF9jYWxsZWRfd2l0aGAgYW5kIGBhc3NlcnRfY2FsbGVkX29uY2Vfd2l0aGAgdGhhdCBvbmx5IHBhc3MgaWYKKyAgICAgICAgdGhlIGNhbGwgaXMgdGhlIG1vc3QgcmVjZW50IG9uZS4iIiIKKyAgICAgICAga2FsbCA9IGNhbGwoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBpZiBrYWxsIG5vdCBpbiBzZWxmLmNhbGxfYXJnc19saXN0OgorICAgICAgICAgICAgZXhwZWN0ZWRfc3RyaW5nID0gc2VsZi5fZm9ybWF0X21vY2tfY2FsbF9zaWduYXR1cmUoYXJncywga3dhcmdzKQorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgJyVzIGNhbGwgbm90IGZvdW5kJyAlIGV4cGVjdGVkX3N0cmluZworICAgICAgICAgICAgKQorCisKKyAgICBkZWYgX2dldF9jaGlsZF9tb2NrKHNlbGYsICoqa3cpOgorICAgICAgICAiIiJDcmVhdGUgdGhlIGNoaWxkIG1vY2tzIGZvciBhdHRyaWJ1dGVzIGFuZCByZXR1cm4gdmFsdWUuCisgICAgICAgIEJ5IGRlZmF1bHQgY2hpbGQgbW9ja3Mgd2lsbCBiZSB0aGUgc2FtZSB0eXBlIGFzIHRoZSBwYXJlbnQuCisgICAgICAgIFN1YmNsYXNzZXMgb2YgTW9jayBtYXkgd2FudCB0byBvdmVycmlkZSB0aGlzIHRvIGN1c3RvbWl6ZSB0aGUgd2F5CisgICAgICAgIGNoaWxkIG1vY2tzIGFyZSBtYWRlLgorCisgICAgICAgIEZvciBub24tY2FsbGFibGUgbW9ja3MgdGhlIGNhbGxhYmxlIHZhcmlhbnQgd2lsbCBiZSB1c2VkIChyYXRoZXIgdGhhbgorICAgICAgICBhbnkgY3VzdG9tIHN1YmNsYXNzKS4iIiIKKyAgICAgICAgX3R5cGUgPSB0eXBlKHNlbGYpCisgICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKF90eXBlLCBDYWxsYWJsZU1peGluKToKKyAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoX3R5cGUsIE5vbkNhbGxhYmxlTWFnaWNNb2NrKToKKyAgICAgICAgICAgICAgICBrbGFzcyA9IE1hZ2ljTW9jaworICAgICAgICAgICAgZWxpZiBpc3N1YmNsYXNzKF90eXBlLCBOb25DYWxsYWJsZU1vY2spIDoKKyAgICAgICAgICAgICAgICBrbGFzcyA9IE1vY2sKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGtsYXNzID0gX3R5cGUuX19tcm9fX1sxXQorICAgICAgICByZXR1cm4ga2xhc3MoKiprdykKKworCisKK2RlZiBfdHJ5X2l0ZXIob2JqKToKKyAgICBpZiBvYmogaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIG9iagorICAgIGlmIF9pc19leGNlcHRpb24ob2JqKToKKyAgICAgICAgcmV0dXJuIG9iagorICAgIGlmIF9jYWxsYWJsZShvYmopOgorICAgICAgICByZXR1cm4gb2JqCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaXRlcihvYmopCisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgIyBYWFhYIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CisgICAgICAgICMgYnV0IHRoaXMgd2lsbCBibG93IHVwIG9uIGZpcnN0IGNhbGwgLSBzbyBtYXliZSB3ZSBzaG91bGQgZmFpbCBlYXJseT8KKyAgICAgICAgcmV0dXJuIG9iagorCisKKworY2xhc3MgQ2FsbGFibGVNaXhpbihCYXNlKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjPU5vbmUsIHNpZGVfZWZmZWN0PU5vbmUsIHJldHVybl92YWx1ZT1ERUZBVUxULAorICAgICAgICAgICAgICAgICB3cmFwcz1Ob25lLCBuYW1lPU5vbmUsIHNwZWNfc2V0PU5vbmUsIHBhcmVudD1Ob25lLAorICAgICAgICAgICAgICAgICBfc3BlY19zdGF0ZT1Ob25lLCBfbmV3X25hbWU9JycsIF9uZXdfcGFyZW50PU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fX2RpY3RfX1snX21vY2tfcmV0dXJuX3ZhbHVlJ10gPSByZXR1cm5fdmFsdWUKKworICAgICAgICBfc2FmZV9zdXBlcihDYWxsYWJsZU1peGluLCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAgICAgIHNwZWMsIHdyYXBzLCBuYW1lLCBzcGVjX3NldCwgcGFyZW50LAorICAgICAgICAgICAgX3NwZWNfc3RhdGUsIF9uZXdfbmFtZSwgX25ld19wYXJlbnQsICoqa3dhcmdzCisgICAgICAgICkKKworICAgICAgICBzZWxmLnNpZGVfZWZmZWN0ID0gc2lkZV9lZmZlY3QKKworCisgICAgZGVmIF9tb2NrX2NoZWNrX3NpZyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIHN0dWIgbWV0aG9kIHRoYXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggb25lIHdpdGggYSBzcGVjaWZpYyBzaWduYXR1cmUKKyAgICAgICAgcGFzcworCisKKyAgICBkZWYgX19jYWxsX18oX21vY2tfc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgIyBjYW4ndCB1c2Ugc2VsZiBpbi1jYXNlIGEgZnVuY3Rpb24gLyBtZXRob2Qgd2UgYXJlIG1vY2tpbmcgdXNlcyBzZWxmCisgICAgICAgICMgaW4gdGhlIHNpZ25hdHVyZQorICAgICAgICBfbW9ja19zZWxmLl9tb2NrX2NoZWNrX3NpZygqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVybiBfbW9ja19zZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQorCisKKyAgICBkZWYgX21vY2tfY2FsbChfbW9ja19zZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmID0gX21vY2tfc2VsZgorICAgICAgICBzZWxmLmNhbGxlZCA9IFRydWUKKyAgICAgICAgc2VsZi5jYWxsX2NvdW50ICs9IDEKKyAgICAgICAgc2VsZi5jYWxsX2FyZ3MgPSBfQ2FsbCgoYXJncywga3dhcmdzKSwgdHdvPVRydWUpCisgICAgICAgIHNlbGYuY2FsbF9hcmdzX2xpc3QuYXBwZW5kKF9DYWxsKChhcmdzLCBrd2FyZ3MpLCB0d289VHJ1ZSkpCisKKyAgICAgICAgX25ld19uYW1lID0gc2VsZi5fbW9ja19uZXdfbmFtZQorICAgICAgICBfbmV3X3BhcmVudCA9IHNlbGYuX21vY2tfbmV3X3BhcmVudAorICAgICAgICBzZWxmLm1vY2tfY2FsbHMuYXBwZW5kKF9DYWxsKCgnJywgYXJncywga3dhcmdzKSkpCisKKyAgICAgICAgc2VlbiA9IHNldCgpCisgICAgICAgIHNraXBfbmV4dF9kb3QgPSBfbmV3X25hbWUgPT0gJygpJworICAgICAgICBkb19tZXRob2RfY2FsbHMgPSBzZWxmLl9tb2NrX3BhcmVudCBpcyBub3QgTm9uZQorICAgICAgICBuYW1lID0gc2VsZi5fbW9ja19uYW1lCisgICAgICAgIHdoaWxlIF9uZXdfcGFyZW50IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgdGhpc19tb2NrX2NhbGwgPSBfQ2FsbCgoX25ld19uYW1lLCBhcmdzLCBrd2FyZ3MpKQorICAgICAgICAgICAgaWYgX25ld19wYXJlbnQuX21vY2tfbmV3X25hbWU6CisgICAgICAgICAgICAgICAgZG90ID0gJy4nCisgICAgICAgICAgICAgICAgaWYgc2tpcF9uZXh0X2RvdDoKKyAgICAgICAgICAgICAgICAgICAgZG90ID0gJycKKworICAgICAgICAgICAgICAgIHNraXBfbmV4dF9kb3QgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIF9uZXdfcGFyZW50Ll9tb2NrX25ld19uYW1lID09ICcoKSc6CisgICAgICAgICAgICAgICAgICAgIHNraXBfbmV4dF9kb3QgPSBUcnVlCisKKyAgICAgICAgICAgICAgICBfbmV3X25hbWUgPSBfbmV3X3BhcmVudC5fbW9ja19uZXdfbmFtZSArIGRvdCArIF9uZXdfbmFtZQorCisgICAgICAgICAgICBpZiBkb19tZXRob2RfY2FsbHM6CisgICAgICAgICAgICAgICAgaWYgX25ld19uYW1lID09IG5hbWU6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfbWV0aG9kX2NhbGwgPSB0aGlzX21vY2tfY2FsbAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRoaXNfbWV0aG9kX2NhbGwgPSBfQ2FsbCgobmFtZSwgYXJncywga3dhcmdzKSkKKyAgICAgICAgICAgICAgICBfbmV3X3BhcmVudC5tZXRob2RfY2FsbHMuYXBwZW5kKHRoaXNfbWV0aG9kX2NhbGwpCisKKyAgICAgICAgICAgICAgICBkb19tZXRob2RfY2FsbHMgPSBfbmV3X3BhcmVudC5fbW9ja19wYXJlbnQgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBkb19tZXRob2RfY2FsbHM6CisgICAgICAgICAgICAgICAgICAgIG5hbWUgPSBfbmV3X3BhcmVudC5fbW9ja19uYW1lICsgJy4nICsgbmFtZQorCisgICAgICAgICAgICBfbmV3X3BhcmVudC5tb2NrX2NhbGxzLmFwcGVuZCh0aGlzX21vY2tfY2FsbCkKKyAgICAgICAgICAgIF9uZXdfcGFyZW50ID0gX25ld19wYXJlbnQuX21vY2tfbmV3X3BhcmVudAorCisgICAgICAgICAgICAjIHVzZSBpZHMgaGVyZSBzbyBhcyBub3QgdG8gY2FsbCBfX2hhc2hfXyBvbiB0aGUgbW9ja3MKKyAgICAgICAgICAgIF9uZXdfcGFyZW50X2lkID0gaWQoX25ld19wYXJlbnQpCisgICAgICAgICAgICBpZiBfbmV3X3BhcmVudF9pZCBpbiBzZWVuOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBzZWVuLmFkZChfbmV3X3BhcmVudF9pZCkKKworICAgICAgICByZXRfdmFsID0gREVGQVVMVAorICAgICAgICBlZmZlY3QgPSBzZWxmLnNpZGVfZWZmZWN0CisgICAgICAgIGlmIGVmZmVjdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIF9pc19leGNlcHRpb24oZWZmZWN0KToKKyAgICAgICAgICAgICAgICByYWlzZSBlZmZlY3QKKworICAgICAgICAgICAgaWYgbm90IF9jYWxsYWJsZShlZmZlY3QpOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5leHQoZWZmZWN0KQorICAgICAgICAgICAgICAgIGlmIF9pc19leGNlcHRpb24ocmVzdWx0KToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgcmVzdWx0CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgICAgICByZXRfdmFsID0gZWZmZWN0KCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgIGlmIHJldF92YWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgICAgICByZXRfdmFsID0gc2VsZi5yZXR1cm5fdmFsdWUKKworICAgICAgICBpZiAoc2VsZi5fbW9ja193cmFwcyBpcyBub3QgTm9uZSBhbmQKKyAgICAgICAgICAgICBzZWxmLl9tb2NrX3JldHVybl92YWx1ZSBpcyBERUZBVUxUKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9tb2NrX3dyYXBzKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgaWYgcmV0X3ZhbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgcmV0X3ZhbCA9IHNlbGYucmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybiByZXRfdmFsCisKKworCitjbGFzcyBNb2NrKENhbGxhYmxlTWl4aW4sIE5vbkNhbGxhYmxlTW9jayk6CisgICAgIiIiCisgICAgQ3JlYXRlIGEgbmV3IGBNb2NrYCBvYmplY3QuIGBNb2NrYCB0YWtlcyBzZXZlcmFsIG9wdGlvbmFsIGFyZ3VtZW50cworICAgIHRoYXQgc3BlY2lmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBNb2NrIG9iamVjdDoKKworICAgICogYHNwZWNgOiBUaGlzIGNhbiBiZSBlaXRoZXIgYSBsaXN0IG9mIHN0cmluZ3Mgb3IgYW4gZXhpc3Rpbmcgb2JqZWN0IChhCisgICAgICBjbGFzcyBvciBpbnN0YW5jZSkgdGhhdCBhY3RzIGFzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciB0aGUgbW9jayBvYmplY3QuIElmCisgICAgICB5b3UgcGFzcyBpbiBhbiBvYmplY3QgdGhlbiBhIGxpc3Qgb2Ygc3RyaW5ncyBpcyBmb3JtZWQgYnkgY2FsbGluZyBkaXIgb24KKyAgICAgIHRoZSBvYmplY3QgKGV4Y2x1ZGluZyB1bnN1cHBvcnRlZCBtYWdpYyBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzKS4gQWNjZXNzaW5nCisgICAgICBhbnkgYXR0cmlidXRlIG5vdCBpbiB0aGlzIGxpc3Qgd2lsbCByYWlzZSBhbiBgQXR0cmlidXRlRXJyb3JgLgorCisgICAgICBJZiBgc3BlY2AgaXMgYW4gb2JqZWN0IChyYXRoZXIgdGhhbiBhIGxpc3Qgb2Ygc3RyaW5ncykgdGhlbgorICAgICAgYG1vY2suX19jbGFzc19fYCByZXR1cm5zIHRoZSBjbGFzcyBvZiB0aGUgc3BlYyBvYmplY3QuIFRoaXMgYWxsb3dzIG1vY2tzCisgICAgICB0byBwYXNzIGBpc2luc3RhbmNlYCB0ZXN0cy4KKworICAgICogYHNwZWNfc2V0YDogQSBzdHJpY3RlciB2YXJpYW50IG9mIGBzcGVjYC4gSWYgdXNlZCwgYXR0ZW1wdGluZyB0byAqc2V0KgorICAgICAgb3IgZ2V0IGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9jayB0aGF0IGlzbid0IG9uIHRoZSBvYmplY3QgcGFzc2VkIGFzCisgICAgICBgc3BlY19zZXRgIHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgICogYHNpZGVfZWZmZWN0YDogQSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbmV2ZXIgdGhlIE1vY2sgaXMgY2FsbGVkLiBTZWUKKyAgICAgIHRoZSBgc2lkZV9lZmZlY3RgIGF0dHJpYnV0ZS4gVXNlZnVsIGZvciByYWlzaW5nIGV4Y2VwdGlvbnMgb3IKKyAgICAgIGR5bmFtaWNhbGx5IGNoYW5naW5nIHJldHVybiB2YWx1ZXMuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0aGUgc2FtZQorICAgICAgYXJndW1lbnRzIGFzIHRoZSBtb2NrLCBhbmQgdW5sZXNzIGl0IHJldHVybnMgYERFRkFVTFRgLCB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYXMgdGhlIHJldHVybiB2YWx1ZS4KKworICAgICAgSWYgYHNpZGVfZWZmZWN0YCBpcyBhbiBpdGVyYWJsZSB0aGVuIGVhY2ggY2FsbCB0byB0aGUgbW9jayB3aWxsIHJldHVybgorICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuIElmIGFueSBvZiB0aGUgbWVtYmVycyBvZiB0aGUgaXRlcmFibGUKKyAgICAgIGFyZSBleGNlcHRpb25zIHRoZXkgd2lsbCBiZSByYWlzZWQgaW5zdGVhZCBvZiByZXR1cm5lZC4KKworICAgICAgSWYgYHNpZGVfZWZmZWN0YCBpcyBhbiBpdGVyYWJsZSB0aGVuIGVhY2ggY2FsbCB0byB0aGUgbW9jayB3aWxsIHJldHVybgorICAgICAgdGhlIG5leHQgdmFsdWUgZnJvbSB0aGUgaXRlcmFibGUuCisKKyAgICAqIGByZXR1cm5fdmFsdWVgOiBUaGUgdmFsdWUgcmV0dXJuZWQgd2hlbiB0aGUgbW9jayBpcyBjYWxsZWQuIEJ5IGRlZmF1bHQKKyAgICAgIHRoaXMgaXMgYSBuZXcgTW9jayAoY3JlYXRlZCBvbiBmaXJzdCBhY2Nlc3MpLiBTZWUgdGhlCisgICAgICBgcmV0dXJuX3ZhbHVlYCBhdHRyaWJ1dGUuCisKKyAgICAqIGB3cmFwc2A6IEl0ZW0gZm9yIHRoZSBtb2NrIG9iamVjdCB0byB3cmFwLiBJZiBgd3JhcHNgIGlzIG5vdCBOb25lIHRoZW4KKyAgICAgIGNhbGxpbmcgdGhlIE1vY2sgd2lsbCBwYXNzIHRoZSBjYWxsIHRocm91Z2ggdG8gdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAocmV0dXJuaW5nIHRoZSByZWFsIHJlc3VsdCkuIEF0dHJpYnV0ZSBhY2Nlc3Mgb24gdGhlIG1vY2sgd2lsbCByZXR1cm4gYQorICAgICAgTW9jayBvYmplY3QgdGhhdCB3cmFwcyB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0CisgICAgICAoc28gYXR0ZW1wdGluZyB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCB3aWxsIHJhaXNlIGFuCisgICAgICBgQXR0cmlidXRlRXJyb3JgKS4KKworICAgICAgSWYgdGhlIG1vY2sgaGFzIGFuIGV4cGxpY2l0IGByZXR1cm5fdmFsdWVgIHNldCB0aGVuIGNhbGxzIGFyZSBub3QgcGFzc2VkCisgICAgICB0byB0aGUgd3JhcHBlZCBvYmplY3QgYW5kIHRoZSBgcmV0dXJuX3ZhbHVlYCBpcyByZXR1cm5lZCBpbnN0ZWFkLgorCisgICAgKiBgbmFtZWA6IElmIHRoZSBtb2NrIGhhcyBhIG5hbWUgdGhlbiBpdCB3aWxsIGJlIHVzZWQgaW4gdGhlIHJlcHIgb2YgdGhlCisgICAgICBtb2NrLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gVGhlIG5hbWUgaXMgcHJvcGFnYXRlZCB0byBjaGlsZAorICAgICAgbW9ja3MuCisKKyAgICBNb2NrcyBjYW4gYWxzbyBiZSBjYWxsZWQgd2l0aCBhcmJpdHJhcnkga2V5d29yZCBhcmd1bWVudHMuIFRoZXNlIHdpbGwgYmUKKyAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuCisgICAgIiIiCisKKworCitkZWYgX2RvdF9sb29rdXAodGhpbmcsIGNvbXAsIGltcG9ydF9wYXRoKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBnZXRhdHRyKHRoaW5nLCBjb21wKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgX19pbXBvcnRfXyhpbXBvcnRfcGF0aCkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIodGhpbmcsIGNvbXApCisKKworZGVmIF9pbXBvcnRlcih0YXJnZXQpOgorICAgIGNvbXBvbmVudHMgPSB0YXJnZXQuc3BsaXQoJy4nKQorICAgIGltcG9ydF9wYXRoID0gY29tcG9uZW50cy5wb3AoMCkKKyAgICB0aGluZyA9IF9faW1wb3J0X18oaW1wb3J0X3BhdGgpCisKKyAgICBmb3IgY29tcCBpbiBjb21wb25lbnRzOgorICAgICAgICBpbXBvcnRfcGF0aCArPSAiLiVzIiAlIGNvbXAKKyAgICAgICAgdGhpbmcgPSBfZG90X2xvb2t1cCh0aGluZywgY29tcCwgaW1wb3J0X3BhdGgpCisgICAgcmV0dXJuIHRoaW5nCisKKworZGVmIF9pc19zdGFydGVkKHBhdGNoZXIpOgorICAgICMgWFhYWCBob3JyaWJsZQorICAgIHJldHVybiBoYXNhdHRyKHBhdGNoZXIsICdpc19sb2NhbCcpCisKKworY2xhc3MgX3BhdGNoKG9iamVjdCk6CisKKyAgICBhdHRyaWJ1dGVfbmFtZSA9IE5vbmUKKyAgICBfYWN0aXZlX3BhdGNoZXMgPSBzZXQoKQorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICAgICAgc2VsZiwgZ2V0dGVyLCBhdHRyaWJ1dGUsIG5ldywgc3BlYywgY3JlYXRlLAorICAgICAgICAgICAgc3BlY19zZXQsIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIGt3YXJncworICAgICAgICApOgorICAgICAgICBpZiBuZXdfY2FsbGFibGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBuZXcgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCB1c2UgJ25ldycgYW5kICduZXdfY2FsbGFibGUnIHRvZ2V0aGVyIgorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIGlmIGF1dG9zcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlICdhdXRvc3BlYycgYW5kICduZXdfY2FsbGFibGUnIHRvZ2V0aGVyIgorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzZWxmLmdldHRlciA9IGdldHRlcgorICAgICAgICBzZWxmLmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZQorICAgICAgICBzZWxmLm5ldyA9IG5ldworICAgICAgICBzZWxmLm5ld19jYWxsYWJsZSA9IG5ld19jYWxsYWJsZQorICAgICAgICBzZWxmLnNwZWMgPSBzcGVjCisgICAgICAgIHNlbGYuY3JlYXRlID0gY3JlYXRlCisgICAgICAgIHNlbGYuaGFzX2xvY2FsID0gRmFsc2UKKyAgICAgICAgc2VsZi5zcGVjX3NldCA9IHNwZWNfc2V0CisgICAgICAgIHNlbGYuYXV0b3NwZWMgPSBhdXRvc3BlYworICAgICAgICBzZWxmLmt3YXJncyA9IGt3YXJncworICAgICAgICBzZWxmLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBbXQorCisKKyAgICBkZWYgY29weShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IF9wYXRjaCgKKyAgICAgICAgICAgIHNlbGYuZ2V0dGVyLCBzZWxmLmF0dHJpYnV0ZSwgc2VsZi5uZXcsIHNlbGYuc3BlYywKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlLCBzZWxmLnNwZWNfc2V0LAorICAgICAgICAgICAgc2VsZi5hdXRvc3BlYywgc2VsZi5uZXdfY2FsbGFibGUsIHNlbGYua3dhcmdzCisgICAgICAgICkKKyAgICAgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9IHNlbGYuYXR0cmlidXRlX25hbWUKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gWworICAgICAgICAgICAgcC5jb3B5KCkgZm9yIHAgaW4gc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzCisgICAgICAgIF0KKyAgICAgICAgcmV0dXJuIHBhdGNoZXIKKworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGZ1bmMpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZ1bmMsIHR5cGUpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2xhc3MoZnVuYykKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVjb3JhdGVfY2FsbGFibGUoZnVuYykKKworCisgICAgZGVmIGRlY29yYXRlX2NsYXNzKHNlbGYsIGtsYXNzKToKKyAgICAgICAgZm9yIGF0dHIgaW4gZGlyKGtsYXNzKToKKyAgICAgICAgICAgIGlmIG5vdCBhdHRyLnN0YXJ0c3dpdGgocGF0Y2guVEVTVF9QUkVGSVgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKGtsYXNzLCBhdHRyKQorICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoYXR0cl92YWx1ZSwgIl9fY2FsbF9fIik6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcGF0Y2hlciA9IHNlbGYuY29weSgpCisgICAgICAgICAgICBzZXRhdHRyKGtsYXNzLCBhdHRyLCBwYXRjaGVyKGF0dHJfdmFsdWUpKQorICAgICAgICByZXR1cm4ga2xhc3MKKworCisgICAgZGVmIGRlY29yYXRlX2NhbGxhYmxlKHNlbGYsIGZ1bmMpOgorICAgICAgICBpZiBoYXNhdHRyKGZ1bmMsICdwYXRjaGluZ3MnKToKKyAgICAgICAgICAgIGZ1bmMucGF0Y2hpbmdzLmFwcGVuZChzZWxmKQorICAgICAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgICAgICBAd3JhcHMoZnVuYykKKyAgICAgICAgZGVmIHBhdGNoZWQoKmFyZ3MsICoqa2V5d2FyZ3MpOgorICAgICAgICAgICAgZXh0cmFfYXJncyA9IFtdCisgICAgICAgICAgICBlbnRlcmVkX3BhdGNoZXJzID0gW10KKworICAgICAgICAgICAgZXhjX2luZm8gPSB0dXBsZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHBhdGNoaW5nIGluIHBhdGNoZWQucGF0Y2hpbmdzOgorICAgICAgICAgICAgICAgICAgICBhcmcgPSBwYXRjaGluZy5fX2VudGVyX18oKQorICAgICAgICAgICAgICAgICAgICBlbnRlcmVkX3BhdGNoZXJzLmFwcGVuZChwYXRjaGluZykKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0Y2hpbmcuYXR0cmlidXRlX25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBrZXl3YXJncy51cGRhdGUoYXJnKQorICAgICAgICAgICAgICAgICAgICBlbGlmIHBhdGNoaW5nLm5ldyBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfYXJncy5hcHBlbmQoYXJnKQorCisgICAgICAgICAgICAgICAgYXJncyArPSB0dXBsZShleHRyYV9hcmdzKQorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmtleXdhcmdzKQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGlmIChwYXRjaGluZyBub3QgaW4gZW50ZXJlZF9wYXRjaGVycyBhbmQKKyAgICAgICAgICAgICAgICAgICAgX2lzX3N0YXJ0ZWQocGF0Y2hpbmcpKToKKyAgICAgICAgICAgICAgICAgICAgIyB0aGUgcGF0Y2hlciBtYXkgaGF2ZSBiZWVuIHN0YXJ0ZWQsIGJ1dCBhbiBleGNlcHRpb24KKyAgICAgICAgICAgICAgICAgICAgIyByYWlzZWQgd2hpbHN0IGVudGVyaW5nIG9uZSBvZiBpdHMgYWRkaXRpb25hbF9wYXRjaGVycworICAgICAgICAgICAgICAgICAgICBlbnRlcmVkX3BhdGNoZXJzLmFwcGVuZChwYXRjaGluZykKKyAgICAgICAgICAgICAgICAjIFBhc3MgdGhlIGV4Y2VwdGlvbiB0byBfX2V4aXRfXworICAgICAgICAgICAgICAgIGV4Y19pbmZvID0gc3lzLmV4Y19pbmZvKCkKKyAgICAgICAgICAgICAgICAjIHJlLXJhaXNlIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gcmV2ZXJzZWQoZW50ZXJlZF9wYXRjaGVycyk6CisgICAgICAgICAgICAgICAgICAgIHBhdGNoaW5nLl9fZXhpdF9fKCpleGNfaW5mbykKKworICAgICAgICBwYXRjaGVkLnBhdGNoaW5ncyA9IFtzZWxmXQorICAgICAgICByZXR1cm4gcGF0Y2hlZAorCisKKyAgICBkZWYgZ2V0X29yaWdpbmFsKHNlbGYpOgorICAgICAgICB0YXJnZXQgPSBzZWxmLmdldHRlcigpCisgICAgICAgIG5hbWUgPSBzZWxmLmF0dHJpYnV0ZQorCisgICAgICAgIG9yaWdpbmFsID0gREVGQVVMVAorICAgICAgICBsb2NhbCA9IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2luYWwgPSB0YXJnZXQuX19kaWN0X19bbmFtZV0KKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgS2V5RXJyb3IpOgorICAgICAgICAgICAgb3JpZ2luYWwgPSBnZXRhdHRyKHRhcmdldCwgbmFtZSwgREVGQVVMVCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxvY2FsID0gVHJ1ZQorCisgICAgICAgIGlmIG5vdCBzZWxmLmNyZWF0ZSBhbmQgb3JpZ2luYWwgaXMgREVGQVVMVDoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKAorICAgICAgICAgICAgICAgICIlcyBkb2VzIG5vdCBoYXZlIHRoZSBhdHRyaWJ1dGUgJXIiICUgKHRhcmdldCwgbmFtZSkKKyAgICAgICAgICAgICkKKyAgICAgICAgcmV0dXJuIG9yaWdpbmFsLCBsb2NhbAorCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJQZXJmb3JtIHRoZSBwYXRjaC4iIiIKKyAgICAgICAgbmV3LCBzcGVjLCBzcGVjX3NldCA9IHNlbGYubmV3LCBzZWxmLnNwZWMsIHNlbGYuc3BlY19zZXQKKyAgICAgICAgYXV0b3NwZWMsIGt3YXJncyA9IHNlbGYuYXV0b3NwZWMsIHNlbGYua3dhcmdzCisgICAgICAgIG5ld19jYWxsYWJsZSA9IHNlbGYubmV3X2NhbGxhYmxlCisgICAgICAgIHNlbGYudGFyZ2V0ID0gc2VsZi5nZXR0ZXIoKQorCisgICAgICAgICMgbm9ybWFsaXNlIEZhbHNlIHRvIE5vbmUKKyAgICAgICAgaWYgc3BlYyBpcyBGYWxzZToKKyAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgIGlmIHNwZWNfc2V0IGlzIEZhbHNlOgorICAgICAgICAgICAgc3BlY19zZXQgPSBOb25lCisgICAgICAgIGlmIGF1dG9zcGVjIGlzIEZhbHNlOgorICAgICAgICAgICAgYXV0b3NwZWMgPSBOb25lCisKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHNwZWNpZnkgc3BlYyBhbmQgYXV0b3NwZWMiKQorICAgICAgICBpZiAoKHNwZWMgaXMgbm90IE5vbmUgb3IgYXV0b3NwZWMgaXMgbm90IE5vbmUpIGFuZAorICAgICAgICAgICAgc3BlY19zZXQgbm90IGluIChUcnVlLCBOb25lKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIkNhbid0IHByb3ZpZGUgZXhwbGljaXQgc3BlY19zZXQgKmFuZCogc3BlYyBvciBhdXRvc3BlYyIpCisKKyAgICAgICAgb3JpZ2luYWwsIGxvY2FsID0gc2VsZi5nZXRfb3JpZ2luYWwoKQorCisgICAgICAgIGlmIG5ldyBpcyBERUZBVUxUIGFuZCBhdXRvc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgaW5oZXJpdCA9IEZhbHNlCisgICAgICAgICAgICBpZiBzcGVjIGlzIFRydWU6CisgICAgICAgICAgICAgICAgIyBzZXQgc3BlYyB0byB0aGUgb2JqZWN0IHdlIGFyZSByZXBsYWNpbmcKKyAgICAgICAgICAgICAgICBzcGVjID0gb3JpZ2luYWwKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICBzcGVjX3NldCA9IG9yaWdpbmFsCisgICAgICAgICAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgICAgICBlbGlmIHNwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgc3BlY19zZXQgaXMgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBzcGVjCisgICAgICAgICAgICAgICAgICAgIHNwZWMgPSBOb25lCisgICAgICAgICAgICBlbGlmIHNwZWNfc2V0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgc3BlY19zZXQgPSBvcmlnaW5hbAorCisgICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lIG9yIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGlmIG9yaWdpbmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgdXNlICdzcGVjJyB3aXRoIGNyZWF0ZT1UcnVlIikKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9yaWdpbmFsLCB0eXBlKToKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSdyZSBwYXRjaGluZyBvdXQgYSBjbGFzcyBhbmQgdGhlcmUgaXMgYSBzcGVjCisgICAgICAgICAgICAgICAgICAgIGluaGVyaXQgPSBUcnVlCisKKyAgICAgICAgICAgIEtsYXNzID0gTWFnaWNNb2NrCisgICAgICAgICAgICBfa3dhcmdzID0ge30KKyAgICAgICAgICAgIGlmIG5ld19jYWxsYWJsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBLbGFzcyA9IG5ld19jYWxsYWJsZQorICAgICAgICAgICAgZWxpZiBzcGVjIGlzIG5vdCBOb25lIG9yIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRoaXNfc3BlYyA9IHNwZWMKKyAgICAgICAgICAgICAgICBpZiBzcGVjX3NldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlY19zZXQKKyAgICAgICAgICAgICAgICBpZiBfaXNfbGlzdCh0aGlzX3NwZWMpOgorICAgICAgICAgICAgICAgICAgICBub3RfY2FsbGFibGUgPSAnX19jYWxsX18nIG5vdCBpbiB0aGlzX3NwZWMKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBub3RfY2FsbGFibGUgPSBub3QgY2FsbGFibGUodGhpc19zcGVjKQorICAgICAgICAgICAgICAgIGlmIG5vdF9jYWxsYWJsZToKKyAgICAgICAgICAgICAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgICAgICAgICBpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9rd2FyZ3NbJ3NwZWMnXSA9IHNwZWMKKyAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIF9rd2FyZ3NbJ3NwZWNfc2V0J10gPSBzcGVjX3NldAorCisgICAgICAgICAgICAjIGFkZCBhIG5hbWUgdG8gbW9ja3MKKyAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKEtsYXNzLCB0eXBlKSBhbmQKKyAgICAgICAgICAgICAgICBpc3N1YmNsYXNzKEtsYXNzLCBOb25DYWxsYWJsZU1vY2spIGFuZCBzZWxmLmF0dHJpYnV0ZSk6CisgICAgICAgICAgICAgICAgX2t3YXJnc1snbmFtZSddID0gc2VsZi5hdHRyaWJ1dGUKKworICAgICAgICAgICAgX2t3YXJncy51cGRhdGUoa3dhcmdzKQorICAgICAgICAgICAgbmV3ID0gS2xhc3MoKipfa3dhcmdzKQorCisgICAgICAgICAgICBpZiBpbmhlcml0IGFuZCBfaXNfaW5zdGFuY2VfbW9jayhuZXcpOgorICAgICAgICAgICAgICAgICMgd2UgY2FuIG9ubHkgdGVsbCBpZiB0aGUgaW5zdGFuY2Ugc2hvdWxkIGJlIGNhbGxhYmxlIGlmIHRoZQorICAgICAgICAgICAgICAgICMgc3BlYyBpcyBub3QgYSBsaXN0CisgICAgICAgICAgICAgICAgdGhpc19zcGVjID0gc3BlYworICAgICAgICAgICAgICAgIGlmIHNwZWNfc2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB0aGlzX3NwZWMgPSBzcGVjX3NldAorICAgICAgICAgICAgICAgIGlmIChub3QgX2lzX2xpc3QodGhpc19zcGVjKSBhbmQgbm90CisgICAgICAgICAgICAgICAgICAgIF9pbnN0YW5jZV9jYWxsYWJsZSh0aGlzX3NwZWMpKToKKyAgICAgICAgICAgICAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworCisgICAgICAgICAgICAgICAgX2t3YXJncy5wb3AoJ25hbWUnKQorICAgICAgICAgICAgICAgIG5ldy5yZXR1cm5fdmFsdWUgPSBLbGFzcyhfbmV3X3BhcmVudD1uZXcsIF9uZXdfbmFtZT0nKCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9rd2FyZ3MpCisgICAgICAgIGVsaWYgYXV0b3NwZWMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIHNwZWMgaXMgaWdub3JlZCwgbmV3ICptdXN0KiBiZSBkZWZhdWx0LCBzcGVjX3NldCBpcyB0cmVhdGVkCisgICAgICAgICAgICAjIGFzIGEgYm9vbGVhbi4gU2hvdWxkIHdlIGNoZWNrIHNwZWMgaXMgbm90IE5vbmUgYW5kIHRoYXQgc3BlY19zZXQKKyAgICAgICAgICAgICMgaXMgYSBib29sPworICAgICAgICAgICAgaWYgbmV3IGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgImF1dG9zcGVjIGNyZWF0ZXMgdGhlIG1vY2sgZm9yIHlvdS4gQ2FuJ3Qgc3BlY2lmeSAiCisgICAgICAgICAgICAgICAgICAgICJhdXRvc3BlYyBhbmQgbmV3LiIKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBpZiBvcmlnaW5hbCBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgdXNlICdhdXRvc3BlYycgd2l0aCBjcmVhdGU9VHJ1ZSIpCisgICAgICAgICAgICBzcGVjX3NldCA9IGJvb2woc3BlY19zZXQpCisgICAgICAgICAgICBpZiBhdXRvc3BlYyBpcyBUcnVlOgorICAgICAgICAgICAgICAgIGF1dG9zcGVjID0gb3JpZ2luYWwKKworICAgICAgICAgICAgbmV3ID0gY3JlYXRlX2F1dG9zcGVjKGF1dG9zcGVjLCBzcGVjX3NldD1zcGVjX3NldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmFtZT1zZWxmLmF0dHJpYnV0ZSwgKiprd2FyZ3MpCisgICAgICAgIGVsaWYga3dhcmdzOgorICAgICAgICAgICAgIyBjYW4ndCBzZXQga2V5d29yZCBhcmdzIHdoZW4gd2UgYXJlbid0IGNyZWF0aW5nIHRoZSBtb2NrCisgICAgICAgICAgICAjIFhYWFggSWYgbmV3IGlzIGEgTW9jayB3ZSBjb3VsZCBjYWxsIG5ldy5jb25maWd1cmVfbW9jaygqKmt3YXJncykKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiQ2FuJ3QgcGFzcyBrd2FyZ3MgdG8gYSBtb2NrIHdlIGFyZW4ndCBjcmVhdGluZyIpCisKKyAgICAgICAgbmV3X2F0dHIgPSBuZXcKKworICAgICAgICBzZWxmLnRlbXBfb3JpZ2luYWwgPSBvcmlnaW5hbAorICAgICAgICBzZWxmLmlzX2xvY2FsID0gbG9jYWwKKyAgICAgICAgc2V0YXR0cihzZWxmLnRhcmdldCwgc2VsZi5hdHRyaWJ1dGUsIG5ld19hdHRyKQorICAgICAgICBpZiBzZWxmLmF0dHJpYnV0ZV9uYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZXh0cmFfYXJncyA9IHt9CisgICAgICAgICAgICBpZiBzZWxmLm5ldyBpcyBERUZBVUxUOgorICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3Nbc2VsZi5hdHRyaWJ1dGVfbmFtZV0gPSAgbmV3CisgICAgICAgICAgICBmb3IgcGF0Y2hpbmcgaW4gc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzOgorICAgICAgICAgICAgICAgIGFyZyA9IHBhdGNoaW5nLl9fZW50ZXJfXygpCisgICAgICAgICAgICAgICAgaWYgcGF0Y2hpbmcubmV3IGlzIERFRkFVTFQ6CisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2FyZ3MudXBkYXRlKGFyZykKKyAgICAgICAgICAgIHJldHVybiBleHRyYV9hcmdzCisKKyAgICAgICAgcmV0dXJuIG5ldworCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmV4Y19pbmZvKToKKyAgICAgICAgIiIiVW5kbyB0aGUgcGF0Y2guIiIiCisgICAgICAgIGlmIG5vdCBfaXNfc3RhcnRlZChzZWxmKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignc3RvcCBjYWxsZWQgb24gdW5zdGFydGVkIHBhdGNoZXInKQorCisgICAgICAgIGlmIHNlbGYuaXNfbG9jYWwgYW5kIHNlbGYudGVtcF9vcmlnaW5hbCBpcyBub3QgREVGQVVMVDoKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlLCBzZWxmLnRlbXBfb3JpZ2luYWwpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWxhdHRyKHNlbGYudGFyZ2V0LCBzZWxmLmF0dHJpYnV0ZSkKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNyZWF0ZSBhbmQgbm90IGhhc2F0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlKToKKyAgICAgICAgICAgICAgICAjIG5lZWRlZCBmb3IgcHJveHkgb2JqZWN0cyBsaWtlIGRqYW5nbyBzZXR0aW5ncworICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZi50YXJnZXQsIHNlbGYuYXR0cmlidXRlLCBzZWxmLnRlbXBfb3JpZ2luYWwpCisKKyAgICAgICAgZGVsIHNlbGYudGVtcF9vcmlnaW5hbAorICAgICAgICBkZWwgc2VsZi5pc19sb2NhbAorICAgICAgICBkZWwgc2VsZi50YXJnZXQKKyAgICAgICAgZm9yIHBhdGNoZXIgaW4gcmV2ZXJzZWQoc2VsZi5hZGRpdGlvbmFsX3BhdGNoZXJzKToKKyAgICAgICAgICAgIGlmIF9pc19zdGFydGVkKHBhdGNoZXIpOgorICAgICAgICAgICAgICAgIHBhdGNoZXIuX19leGl0X18oKmV4Y19pbmZvKQorCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgICIiIkFjdGl2YXRlIGEgcGF0Y2gsIHJldHVybmluZyBhbnkgY3JlYXRlZCBtb2NrLiIiIgorICAgICAgICByZXN1bHQgPSBzZWxmLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuX2FjdGl2ZV9wYXRjaGVzLmFkZChzZWxmKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAiIiJTdG9wIGFuIGFjdGl2ZSBwYXRjaC4iIiIKKyAgICAgICAgc2VsZi5fYWN0aXZlX3BhdGNoZXMuZGlzY2FyZChzZWxmKQorICAgICAgICByZXR1cm4gc2VsZi5fX2V4aXRfXygpCisKKworCitkZWYgX2dldF90YXJnZXQodGFyZ2V0KToKKyAgICB0cnk6CisgICAgICAgIHRhcmdldCwgYXR0cmlidXRlID0gdGFyZ2V0LnJzcGxpdCgnLicsIDEpCisgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk5lZWQgYSB2YWxpZCB0YXJnZXQgdG8gcGF0Y2guIFlvdSBzdXBwbGllZDogJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXQsKSkKKyAgICBnZXR0ZXIgPSBsYW1iZGE6IF9pbXBvcnRlcih0YXJnZXQpCisgICAgcmV0dXJuIGdldHRlciwgYXR0cmlidXRlCisKKworZGVmIF9wYXRjaF9vYmplY3QoCisgICAgICAgIHRhcmdldCwgYXR0cmlidXRlLCBuZXc9REVGQVVMVCwgc3BlYz1Ob25lLAorICAgICAgICBjcmVhdGU9RmFsc2UsIHNwZWNfc2V0PU5vbmUsIGF1dG9zcGVjPU5vbmUsCisgICAgICAgIG5ld19jYWxsYWJsZT1Ob25lLCAqKmt3YXJncworICAgICk6CisgICAgIiIiCisgICAgcGF0Y2ggdGhlIG5hbWVkIG1lbWJlciAoYGF0dHJpYnV0ZWApIG9uIGFuIG9iamVjdCAoYHRhcmdldGApIHdpdGggYSBtb2NrCisgICAgb2JqZWN0LgorCisgICAgYHBhdGNoLm9iamVjdGAgY2FuIGJlIHVzZWQgYXMgYSBkZWNvcmF0b3IsIGNsYXNzIGRlY29yYXRvciBvciBhIGNvbnRleHQKKyAgICBtYW5hZ2VyLiBBcmd1bWVudHMgYG5ld2AsIGBzcGVjYCwgYGNyZWF0ZWAsIGBzcGVjX3NldGAsCisgICAgYGF1dG9zcGVjYCBhbmQgYG5ld19jYWxsYWJsZWAgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzIGZvciBgcGF0Y2hgLiBMaWtlCisgICAgYHBhdGNoYCwgYHBhdGNoLm9iamVjdGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIGZvciBjb25maWd1cmluZworICAgIHRoZSBtb2NrIG9iamVjdCBpdCBjcmVhdGVzLgorCisgICAgV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5vYmplY3RgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisgICAgZ2V0dGVyID0gbGFtYmRhOiB0YXJnZXQKKyAgICByZXR1cm4gX3BhdGNoKAorICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgIHNwZWNfc2V0LCBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCBrd2FyZ3MKKyAgICApCisKKworZGVmIF9wYXRjaF9tdWx0aXBsZSh0YXJnZXQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLCBzcGVjX3NldD1Ob25lLAorICAgICAgICAgICAgICAgICAgICBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MpOgorICAgICIiIlBlcmZvcm0gbXVsdGlwbGUgcGF0Y2hlcyBpbiBhIHNpbmdsZSBjYWxsLiBJdCB0YWtlcyB0aGUgb2JqZWN0IHRvIGJlCisgICAgcGF0Y2hlZCAoZWl0aGVyIGFzIGFuIG9iamVjdCBvciBhIHN0cmluZyB0byBmZXRjaCB0aGUgb2JqZWN0IGJ5IGltcG9ydGluZykKKyAgICBhbmQga2V5d29yZCBhcmd1bWVudHMgZm9yIHRoZSBwYXRjaGVzOjoKKworICAgICAgICB3aXRoIHBhdGNoLm11bHRpcGxlKHNldHRpbmdzLCBGSVJTVF9QQVRDSD0nb25lJywgU0VDT05EX1BBVENIPSd0d28nKToKKyAgICAgICAgICAgIC4uLgorCisgICAgVXNlIGBERUZBVUxUYCBhcyB0aGUgdmFsdWUgaWYgeW91IHdhbnQgYHBhdGNoLm11bHRpcGxlYCB0byBjcmVhdGUKKyAgICBtb2NrcyBmb3IgeW91LiBJbiB0aGlzIGNhc2UgdGhlIGNyZWF0ZWQgbW9ja3MgYXJlIHBhc3NlZCBpbnRvIGEgZGVjb3JhdGVkCisgICAgZnVuY3Rpb24gYnkga2V5d29yZCwgYW5kIGEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGVuIGBwYXRjaC5tdWx0aXBsZWAgaXMKKyAgICB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgYHBhdGNoLm11bHRpcGxlYCBjYW4gYmUgdXNlZCBhcyBhIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIFRoZSBhcmd1bWVudHMgYHNwZWNgLCBgc3BlY19zZXRgLCBgY3JlYXRlYCwKKyAgICBgYXV0b3NwZWNgIGFuZCBgbmV3X2NhbGxhYmxlYCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIGBwYXRjaGAuIFRoZXNlCisgICAgYXJndW1lbnRzIHdpbGwgYmUgYXBwbGllZCB0byAqYWxsKiBwYXRjaGVzIGRvbmUgYnkgYHBhdGNoLm11bHRpcGxlYC4KKworICAgIFdoZW4gdXNlZCBhcyBhIGNsYXNzIGRlY29yYXRvciBgcGF0Y2gubXVsdGlwbGVgIGhvbm91cnMgYHBhdGNoLlRFU1RfUFJFRklYYAorICAgIGZvciBjaG9vc2luZyB3aGljaCBtZXRob2RzIHRvIHdyYXAuCisgICAgIiIiCisgICAgaWYgdHlwZSh0YXJnZXQpIGlzIHN0cjoKKyAgICAgICAgZ2V0dGVyID0gbGFtYmRhOiBfaW1wb3J0ZXIodGFyZ2V0KQorICAgIGVsc2U6CisgICAgICAgIGdldHRlciA9IGxhbWJkYTogdGFyZ2V0CisKKyAgICBpZiBub3Qga3dhcmdzOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAgICAgICAgJ011c3Qgc3VwcGx5IGF0IGxlYXN0IG9uZSBrZXl3b3JkIGFyZ3VtZW50IHdpdGggcGF0Y2gubXVsdGlwbGUnCisgICAgICAgICkKKyAgICAjIG5lZWQgdG8gd3JhcCBpbiBhIGxpc3QgZm9yIHB5dGhvbiAzLCB3aGVyZSBpdGVtcyBpcyBhIHZpZXcKKyAgICBpdGVtcyA9IGxpc3Qoa3dhcmdzLml0ZW1zKCkpCisgICAgYXR0cmlidXRlLCBuZXcgPSBpdGVtc1swXQorICAgIHBhdGNoZXIgPSBfcGF0Y2goCisgICAgICAgIGdldHRlciwgYXR0cmlidXRlLCBuZXcsIHNwZWMsIGNyZWF0ZSwgc3BlY19zZXQsCisgICAgICAgIGF1dG9zcGVjLCBuZXdfY2FsbGFibGUsIHt9CisgICAgKQorICAgIHBhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBhdHRyaWJ1dGUKKyAgICBmb3IgYXR0cmlidXRlLCBuZXcgaW4gaXRlbXNbMTpdOgorICAgICAgICB0aGlzX3BhdGNoZXIgPSBfcGF0Y2goCisgICAgICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsIHNwZWNfc2V0LAorICAgICAgICAgICAgYXV0b3NwZWMsIG5ld19jYWxsYWJsZSwge30KKyAgICAgICAgKQorICAgICAgICB0aGlzX3BhdGNoZXIuYXR0cmlidXRlX25hbWUgPSBhdHRyaWJ1dGUKKyAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzLmFwcGVuZCh0aGlzX3BhdGNoZXIpCisgICAgcmV0dXJuIHBhdGNoZXIKKworCitkZWYgcGF0Y2goCisgICAgICAgIHRhcmdldCwgbmV3PURFRkFVTFQsIHNwZWM9Tm9uZSwgY3JlYXRlPUZhbHNlLAorICAgICAgICBzcGVjX3NldD1Ob25lLCBhdXRvc3BlYz1Ob25lLCBuZXdfY2FsbGFibGU9Tm9uZSwgKiprd2FyZ3MKKyAgICApOgorICAgICIiIgorICAgIGBwYXRjaGAgYWN0cyBhcyBhIGZ1bmN0aW9uIGRlY29yYXRvciwgY2xhc3MgZGVjb3JhdG9yIG9yIGEgY29udGV4dAorICAgIG1hbmFnZXIuIEluc2lkZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24gb3Igd2l0aCBzdGF0ZW1lbnQsIHRoZSBgdGFyZ2V0YAorICAgIGlzIHBhdGNoZWQgd2l0aCBhIGBuZXdgIG9iamVjdC4gV2hlbiB0aGUgZnVuY3Rpb24vd2l0aCBzdGF0ZW1lbnQgZXhpdHMKKyAgICB0aGUgcGF0Y2ggaXMgdW5kb25lLgorCisgICAgSWYgYG5ld2AgaXMgb21pdHRlZCwgdGhlbiB0aGUgdGFyZ2V0IGlzIHJlcGxhY2VkIHdpdGggYQorICAgIGBNYWdpY01vY2tgLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBkZWNvcmF0b3IgYW5kIGBuZXdgIGlzCisgICAgb21pdHRlZCwgdGhlIGNyZWF0ZWQgbW9jayBpcyBwYXNzZWQgaW4gYXMgYW4gZXh0cmEgYXJndW1lbnQgdG8gdGhlCisgICAgZGVjb3JhdGVkIGZ1bmN0aW9uLiBJZiBgcGF0Y2hgIGlzIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdGhlIGNyZWF0ZWQKKyAgICBtb2NrIGlzIHJldHVybmVkIGJ5IHRoZSBjb250ZXh0IG1hbmFnZXIuCisKKyAgICBgdGFyZ2V0YCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gYCdwYWNrYWdlLm1vZHVsZS5DbGFzc05hbWUnYC4gVGhlCisgICAgYHRhcmdldGAgaXMgaW1wb3J0ZWQgYW5kIHRoZSBzcGVjaWZpZWQgb2JqZWN0IHJlcGxhY2VkIHdpdGggdGhlIGBuZXdgCisgICAgb2JqZWN0LCBzbyB0aGUgYHRhcmdldGAgbXVzdCBiZSBpbXBvcnRhYmxlIGZyb20gdGhlIGVudmlyb25tZW50IHlvdSBhcmUKKyAgICBjYWxsaW5nIGBwYXRjaGAgZnJvbS4gVGhlIHRhcmdldCBpcyBpbXBvcnRlZCB3aGVuIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24KKyAgICBpcyBleGVjdXRlZCwgbm90IGF0IGRlY29yYXRpb24gdGltZS4KKworICAgIFRoZSBgc3BlY2AgYW5kIGBzcGVjX3NldGAga2V5d29yZCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgYE1hZ2ljTW9ja2AKKyAgICBpZiBwYXRjaCBpcyBjcmVhdGluZyBvbmUgZm9yIHlvdS4KKworICAgIEluIGFkZGl0aW9uIHlvdSBjYW4gcGFzcyBgc3BlYz1UcnVlYCBvciBgc3BlY19zZXQ9VHJ1ZWAsIHdoaWNoIGNhdXNlcworICAgIHBhdGNoIHRvIHBhc3MgaW4gdGhlIG9iamVjdCBiZWluZyBtb2NrZWQgYXMgdGhlIHNwZWMvc3BlY19zZXQgb2JqZWN0LgorCisgICAgYG5ld19jYWxsYWJsZWAgYWxsb3dzIHlvdSB0byBzcGVjaWZ5IGEgZGlmZmVyZW50IGNsYXNzLCBvciBjYWxsYWJsZSBvYmplY3QsCisgICAgdGhhdCB3aWxsIGJlIGNhbGxlZCB0byBjcmVhdGUgdGhlIGBuZXdgIG9iamVjdC4gQnkgZGVmYXVsdCBgTWFnaWNNb2NrYCBpcworICAgIHVzZWQuCisKKyAgICBBIG1vcmUgcG93ZXJmdWwgZm9ybSBvZiBgc3BlY2AgaXMgYGF1dG9zcGVjYC4gSWYgeW91IHNldCBgYXV0b3NwZWM9VHJ1ZWAKKyAgICB0aGVuIHRoZSBtb2NrIHdpdGggYmUgY3JlYXRlZCB3aXRoIGEgc3BlYyBmcm9tIHRoZSBvYmplY3QgYmVpbmcgcmVwbGFjZWQuCisgICAgQWxsIGF0dHJpYnV0ZXMgb2YgdGhlIG1vY2sgd2lsbCBhbHNvIGhhdmUgdGhlIHNwZWMgb2YgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCBiZWluZyByZXBsYWNlZC4gTWV0aG9kcyBhbmQgZnVuY3Rpb25zIGJlaW5nCisgICAgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZCBhbmQgd2lsbCByYWlzZSBhIGBUeXBlRXJyb3JgIGlmCisgICAgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIHdyb25nIHNpZ25hdHVyZS4gRm9yIG1vY2tzIHJlcGxhY2luZyBhIGNsYXNzLAorICAgIHRoZWlyIHJldHVybiB2YWx1ZSAodGhlICdpbnN0YW5jZScpIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjIGFzIHRoZSBjbGFzcy4KKworICAgIEluc3RlYWQgb2YgYGF1dG9zcGVjPVRydWVgIHlvdSBjYW4gcGFzcyBgYXV0b3NwZWM9c29tZV9vYmplY3RgIHRvIHVzZSBhbgorICAgIGFyYml0cmFyeSBvYmplY3QgYXMgdGhlIHNwZWMgaW5zdGVhZCBvZiB0aGUgb25lIGJlaW5nIHJlcGxhY2VkLgorCisgICAgQnkgZGVmYXVsdCBgcGF0Y2hgIHdpbGwgZmFpbCB0byByZXBsYWNlIGF0dHJpYnV0ZXMgdGhhdCBkb24ndCBleGlzdC4gSWYKKyAgICB5b3UgcGFzcyBpbiBgY3JlYXRlPVRydWVgLCBhbmQgdGhlIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LCBwYXRjaCB3aWxsCisgICAgY3JlYXRlIHRoZSBhdHRyaWJ1dGUgZm9yIHlvdSB3aGVuIHRoZSBwYXRjaGVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgYW5kCisgICAgZGVsZXRlIGl0IGFnYWluIGFmdGVyd2FyZHMuIFRoaXMgaXMgdXNlZnVsIGZvciB3cml0aW5nIHRlc3RzIGFnYWluc3QKKyAgICBhdHRyaWJ1dGVzIHRoYXQgeW91ciBwcm9kdWN0aW9uIGNvZGUgY3JlYXRlcyBhdCBydW50aW1lLiBJdCBpcyBvZmYgYnkgYnkKKyAgICBkZWZhdWx0IGJlY2F1c2UgaXQgY2FuIGJlIGRhbmdlcm91cy4gV2l0aCBpdCBzd2l0Y2hlZCBvbiB5b3UgY2FuIHdyaXRlCisgICAgcGFzc2luZyB0ZXN0cyBhZ2FpbnN0IEFQSXMgdGhhdCBkb24ndCBhY3R1YWxseSBleGlzdCEKKworICAgIFBhdGNoIGNhbiBiZSB1c2VkIGFzIGEgYFRlc3RDYXNlYCBjbGFzcyBkZWNvcmF0b3IuIEl0IHdvcmtzIGJ5CisgICAgZGVjb3JhdGluZyBlYWNoIHRlc3QgbWV0aG9kIGluIHRoZSBjbGFzcy4gVGhpcyByZWR1Y2VzIHRoZSBib2lsZXJwbGF0ZQorICAgIGNvZGUgd2hlbiB5b3VyIHRlc3QgbWV0aG9kcyBzaGFyZSBhIGNvbW1vbiBwYXRjaGluZ3Mgc2V0LiBgcGF0Y2hgIGZpbmRzCisgICAgdGVzdHMgYnkgbG9va2luZyBmb3IgbWV0aG9kIG5hbWVzIHRoYXQgc3RhcnQgd2l0aCBgcGF0Y2guVEVTVF9QUkVGSVhgLgorICAgIEJ5IGRlZmF1bHQgdGhpcyBpcyBgdGVzdGAsIHdoaWNoIG1hdGNoZXMgdGhlIHdheSBgdW5pdHRlc3RgIGZpbmRzIHRlc3RzLgorICAgIFlvdSBjYW4gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBwcmVmaXggYnkgc2V0dGluZyBgcGF0Y2guVEVTVF9QUkVGSVhgLgorCisgICAgUGF0Y2ggY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIHdpdGggdGhlIHdpdGggc3RhdGVtZW50LiBIZXJlIHRoZQorICAgIHBhdGNoaW5nIGFwcGxpZXMgdG8gdGhlIGluZGVudGVkIGJsb2NrIGFmdGVyIHRoZSB3aXRoIHN0YXRlbWVudC4gSWYgeW91CisgICAgdXNlICJhcyIgdGhlbiB0aGUgcGF0Y2hlZCBvYmplY3Qgd2lsbCBiZSBib3VuZCB0byB0aGUgbmFtZSBhZnRlciB0aGUKKyAgICAiYXMiOyB2ZXJ5IHVzZWZ1bCBpZiBgcGF0Y2hgIGlzIGNyZWF0aW5nIGEgbW9jayBvYmplY3QgZm9yIHlvdS4KKworICAgIGBwYXRjaGAgdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzLiBUaGVzZSB3aWxsIGJlIHBhc3NlZCB0bworICAgIHRoZSBgTW9ja2AgKG9yIGBuZXdfY2FsbGFibGVgKSBvbiBjb25zdHJ1Y3Rpb24uCisKKyAgICBgcGF0Y2guZGljdCguLi4pYCwgYHBhdGNoLm11bHRpcGxlKC4uLilgIGFuZCBgcGF0Y2gub2JqZWN0KC4uLilgIGFyZQorICAgIGF2YWlsYWJsZSBmb3IgYWx0ZXJuYXRlIHVzZS1jYXNlcy4KKyAgICAiIiIKKyAgICBnZXR0ZXIsIGF0dHJpYnV0ZSA9IF9nZXRfdGFyZ2V0KHRhcmdldCkKKyAgICByZXR1cm4gX3BhdGNoKAorICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgbmV3LCBzcGVjLCBjcmVhdGUsCisgICAgICAgIHNwZWNfc2V0LCBhdXRvc3BlYywgbmV3X2NhbGxhYmxlLCBrd2FyZ3MKKyAgICApCisKKworY2xhc3MgX3BhdGNoX2RpY3Qob2JqZWN0KToKKyAgICAiIiIKKyAgICBQYXRjaCBhIGRpY3Rpb25hcnksIG9yIGRpY3Rpb25hcnkgbGlrZSBvYmplY3QsIGFuZCByZXN0b3JlIHRoZSBkaWN0aW9uYXJ5CisgICAgdG8gaXRzIG9yaWdpbmFsIHN0YXRlIGFmdGVyIHRoZSB0ZXN0LgorCisgICAgYGluX2RpY3RgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtYXBwaW5nIGxpa2UgY29udGFpbmVyLiBJZiBpdCBpcyBhCisgICAgbWFwcGluZyB0aGVuIGl0IG11c3QgYXQgbGVhc3Qgc3VwcG9ydCBnZXR0aW5nLCBzZXR0aW5nIGFuZCBkZWxldGluZyBpdGVtcworICAgIHBsdXMgaXRlcmF0aW5nIG92ZXIga2V5cy4KKworICAgIGBpbl9kaWN0YCBjYW4gYWxzbyBiZSBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBuYW1lIG9mIHRoZSBkaWN0aW9uYXJ5LCB3aGljaAorICAgIHdpbGwgdGhlbiBiZSBmZXRjaGVkIGJ5IGltcG9ydGluZyBpdC4KKworICAgIGB2YWx1ZXNgIGNhbiBiZSBhIGRpY3Rpb25hcnkgb2YgdmFsdWVzIHRvIHNldCBpbiB0aGUgZGljdGlvbmFyeS4gYHZhbHVlc2AKKyAgICBjYW4gYWxzbyBiZSBhbiBpdGVyYWJsZSBvZiBgKGtleSwgdmFsdWUpYCBwYWlycy4KKworICAgIElmIGBjbGVhcmAgaXMgVHJ1ZSB0aGVuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgY2xlYXJlZCBiZWZvcmUgdGhlIG5ldworICAgIHZhbHVlcyBhcmUgc2V0LgorCisgICAgYHBhdGNoLmRpY3RgIGNhbiBhbHNvIGJlIGNhbGxlZCB3aXRoIGFyYml0cmFyeSBrZXl3b3JkIGFyZ3VtZW50cyB0byBzZXQKKyAgICB2YWx1ZXMgaW4gdGhlIGRpY3Rpb25hcnk6OgorCisgICAgICAgIHdpdGggcGF0Y2guZGljdCgnc3lzLm1vZHVsZXMnLCBteW1vZHVsZT1Nb2NrKCksIG90aGVyX21vZHVsZT1Nb2NrKCkpOgorICAgICAgICAgICAgLi4uCisKKyAgICBgcGF0Y2guZGljdGAgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIsIGRlY29yYXRvciBvciBjbGFzcworICAgIGRlY29yYXRvci4gV2hlbiB1c2VkIGFzIGEgY2xhc3MgZGVjb3JhdG9yIGBwYXRjaC5kaWN0YCBob25vdXJzCisgICAgYHBhdGNoLlRFU1RfUFJFRklYYCBmb3IgY2hvb3Npbmcgd2hpY2ggbWV0aG9kcyB0byB3cmFwLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluX2RpY3QsIHZhbHVlcz0oKSwgY2xlYXI9RmFsc2UsICoqa3dhcmdzKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShpbl9kaWN0LCBzdHIpOgorICAgICAgICAgICAgaW5fZGljdCA9IF9pbXBvcnRlcihpbl9kaWN0KQorICAgICAgICBzZWxmLmluX2RpY3QgPSBpbl9kaWN0CisgICAgICAgICMgc3VwcG9ydCBhbnkgYXJndW1lbnQgc3VwcG9ydGVkIGJ5IGRpY3QoLi4uKSBjb25zdHJ1Y3RvcgorICAgICAgICBzZWxmLnZhbHVlcyA9IGRpY3QodmFsdWVzKQorICAgICAgICBzZWxmLnZhbHVlcy51cGRhdGUoa3dhcmdzKQorICAgICAgICBzZWxmLmNsZWFyID0gY2xlYXIKKyAgICAgICAgc2VsZi5fb3JpZ2luYWwgPSBOb25lCisKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLCB0eXBlKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29yYXRlX2NsYXNzKGYpCisgICAgICAgIEB3cmFwcyhmKQorICAgICAgICBkZWYgX2lubmVyKCphcmdzLCAqKmt3KToKKyAgICAgICAgICAgIHNlbGYuX3BhdGNoX2RpY3QoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBmKCphcmdzLCAqKmt3KQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzZWxmLl91bnBhdGNoX2RpY3QoKQorCisgICAgICAgIHJldHVybiBfaW5uZXIKKworCisgICAgZGVmIGRlY29yYXRlX2NsYXNzKHNlbGYsIGtsYXNzKToKKyAgICAgICAgZm9yIGF0dHIgaW4gZGlyKGtsYXNzKToKKyAgICAgICAgICAgIGF0dHJfdmFsdWUgPSBnZXRhdHRyKGtsYXNzLCBhdHRyKQorICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aChwYXRjaC5URVNUX1BSRUZJWCkgYW5kCisgICAgICAgICAgICAgICAgIGhhc2F0dHIoYXR0cl92YWx1ZSwgIl9fY2FsbF9fIikpOgorICAgICAgICAgICAgICAgIGRlY29yYXRvciA9IF9wYXRjaF9kaWN0KHNlbGYuaW5fZGljdCwgc2VsZi52YWx1ZXMsIHNlbGYuY2xlYXIpCisgICAgICAgICAgICAgICAgZGVjb3JhdGVkID0gZGVjb3JhdG9yKGF0dHJfdmFsdWUpCisgICAgICAgICAgICAgICAgc2V0YXR0cihrbGFzcywgYXR0ciwgZGVjb3JhdGVkKQorICAgICAgICByZXR1cm4ga2xhc3MKKworCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUGF0Y2ggdGhlIGRpY3QuIiIiCisgICAgICAgIHNlbGYuX3BhdGNoX2RpY3QoKQorCisKKyAgICBkZWYgX3BhdGNoX2RpY3Qoc2VsZik6CisgICAgICAgIHZhbHVlcyA9IHNlbGYudmFsdWVzCisgICAgICAgIGluX2RpY3QgPSBzZWxmLmluX2RpY3QKKyAgICAgICAgY2xlYXIgPSBzZWxmLmNsZWFyCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3JpZ2luYWwgPSBpbl9kaWN0LmNvcHkoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIGRpY3QgbGlrZSBvYmplY3Qgd2l0aCBubyBjb3B5IG1ldGhvZAorICAgICAgICAgICAgIyBtdXN0IHN1cHBvcnQgaXRlcmF0aW9uIG92ZXIga2V5cworICAgICAgICAgICAgb3JpZ2luYWwgPSB7fQorICAgICAgICAgICAgZm9yIGtleSBpbiBpbl9kaWN0OgorICAgICAgICAgICAgICAgIG9yaWdpbmFsW2tleV0gPSBpbl9kaWN0W2tleV0KKyAgICAgICAgc2VsZi5fb3JpZ2luYWwgPSBvcmlnaW5hbAorCisgICAgICAgIGlmIGNsZWFyOgorICAgICAgICAgICAgX2NsZWFyX2RpY3QoaW5fZGljdCkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbl9kaWN0LnVwZGF0ZSh2YWx1ZXMpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgICMgZGljdCBsaWtlIG9iamVjdCB3aXRoIG5vIHVwZGF0ZSBtZXRob2QKKyAgICAgICAgICAgIGZvciBrZXkgaW4gdmFsdWVzOgorICAgICAgICAgICAgICAgIGluX2RpY3Rba2V5XSA9IHZhbHVlc1trZXldCisKKworICAgIGRlZiBfdW5wYXRjaF9kaWN0KHNlbGYpOgorICAgICAgICBpbl9kaWN0ID0gc2VsZi5pbl9kaWN0CisgICAgICAgIG9yaWdpbmFsID0gc2VsZi5fb3JpZ2luYWwKKworICAgICAgICBfY2xlYXJfZGljdChpbl9kaWN0KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluX2RpY3QudXBkYXRlKG9yaWdpbmFsKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBmb3Iga2V5IGluIG9yaWdpbmFsOgorICAgICAgICAgICAgICAgIGluX2RpY3Rba2V5XSA9IG9yaWdpbmFsW2tleV0KKworCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiVW5wYXRjaCB0aGUgZGljdC4iIiIKKyAgICAgICAgc2VsZi5fdW5wYXRjaF9kaWN0KCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBzdGFydCA9IF9fZW50ZXJfXworICAgIHN0b3AgPSBfX2V4aXRfXworCisKK2RlZiBfY2xlYXJfZGljdChpbl9kaWN0KToKKyAgICB0cnk6CisgICAgICAgIGluX2RpY3QuY2xlYXIoKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAga2V5cyA9IGxpc3QoaW5fZGljdCkKKyAgICAgICAgZm9yIGtleSBpbiBrZXlzOgorICAgICAgICAgICAgZGVsIGluX2RpY3Rba2V5XQorCisKK2RlZiBfcGF0Y2hfc3RvcGFsbCgpOgorICAgICIiIlN0b3AgYWxsIGFjdGl2ZSBwYXRjaGVzLiIiIgorICAgIGZvciBwYXRjaCBpbiBsaXN0KF9wYXRjaC5fYWN0aXZlX3BhdGNoZXMpOgorICAgICAgICBwYXRjaC5zdG9wKCkKKworCitwYXRjaC5vYmplY3QgPSBfcGF0Y2hfb2JqZWN0CitwYXRjaC5kaWN0ID0gX3BhdGNoX2RpY3QKK3BhdGNoLm11bHRpcGxlID0gX3BhdGNoX211bHRpcGxlCitwYXRjaC5zdG9wYWxsID0gX3BhdGNoX3N0b3BhbGwKK3BhdGNoLlRFU1RfUFJFRklYID0gJ3Rlc3QnCisKK21hZ2ljX21ldGhvZHMgPSAoCisgICAgImx0IGxlIGd0IGdlIGVxIG5lICIKKyAgICAiZ2V0aXRlbSBzZXRpdGVtIGRlbGl0ZW0gIgorICAgICJsZW4gY29udGFpbnMgaXRlciAiCisgICAgImhhc2ggc3RyIHNpemVvZiAiCisgICAgImVudGVyIGV4aXQgIgorICAgICJkaXZtb2QgbmVnIHBvcyBhYnMgaW52ZXJ0ICIKKyAgICAiY29tcGxleCBpbnQgZmxvYXQgaW5kZXggIgorICAgICJ0cnVuYyBmbG9vciBjZWlsICIKKyAgICAiYm9vbCBuZXh0ICIKKykKKworbnVtZXJpY3MgPSAiYWRkIHN1YiBtdWwgZGl2IGZsb29yZGl2IG1vZCBsc2hpZnQgcnNoaWZ0IGFuZCB4b3Igb3IgcG93ICIKK2lucGxhY2UgPSAnICcuam9pbignaSVzJyAlIG4gZm9yIG4gaW4gbnVtZXJpY3Muc3BsaXQoKSkKK3JpZ2h0ID0gJyAnLmpvaW4oJ3IlcycgJSBuIGZvciBuIGluIG51bWVyaWNzLnNwbGl0KCkpCisKKyMgbm90IGluY2x1ZGluZyBfX3ByZXBhcmVfXywgX19pbnN0YW5jZWNoZWNrX18sIF9fc3ViY2xhc3NjaGVja19fCisjIChhcyB0aGV5IGFyZSBtZXRhY2xhc3MgbWV0aG9kcykKKyMgX19kZWxfXyBpcyBub3Qgc3VwcG9ydGVkIGF0IGFsbCBhcyBpdCBjYXVzZXMgcHJvYmxlbXMgaWYgaXQgZXhpc3RzCisKK19ub25fZGVmYXVsdHMgPSBzZXQoJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbiBbCisgICAgJ2dldCcsICdzZXQnLCAnZGVsZXRlJywgJ3JldmVyc2VkJywgJ21pc3NpbmcnLCAncmVkdWNlJywgJ3JlZHVjZV9leCcsCisgICAgJ2dldGluaXRhcmdzJywgJ2dldG5ld2FyZ3MnLCAnZ2V0c3RhdGUnLCAnc2V0c3RhdGUnLCAnZ2V0Zm9ybWF0JywKKyAgICAnc2V0Zm9ybWF0JywgJ3JlcHInLCAnZGlyJywgJ3N1YmNsYXNzZXMnLCAnZm9ybWF0JywKK10pCisKKworZGVmIF9nZXRfbWV0aG9kKG5hbWUsIGZ1bmMpOgorICAgICJUdXJucyBhIGNhbGxhYmxlIG9iamVjdCAobGlrZSBhIG1vY2spIGludG8gYSByZWFsIGZ1bmN0aW9uIgorICAgIGRlZiBtZXRob2Qoc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICByZXR1cm4gZnVuYyhzZWxmLCAqYXJncywgKiprdykKKyAgICBtZXRob2QuX19uYW1lX18gPSBuYW1lCisgICAgcmV0dXJuIG1ldGhvZAorCisKK19tYWdpY3MgPSBzZXQoCisgICAgJ19fJXNfXycgJSBtZXRob2QgZm9yIG1ldGhvZCBpbgorICAgICcgJy5qb2luKFttYWdpY19tZXRob2RzLCBudW1lcmljcywgaW5wbGFjZSwgcmlnaHRdKS5zcGxpdCgpCispCisKK19hbGxfbWFnaWNzID0gX21hZ2ljcyB8IF9ub25fZGVmYXVsdHMKKworX3Vuc3VwcG9ydGVkX21hZ2ljcyA9IHNldChbCisgICAgJ19fZ2V0YXR0cl9fJywgJ19fc2V0YXR0cl9fJywKKyAgICAnX19pbml0X18nLCAnX19uZXdfXycsICdfX3ByZXBhcmVfXycKKyAgICAnX19pbnN0YW5jZWNoZWNrX18nLCAnX19zdWJjbGFzc2NoZWNrX18nLAorICAgICdfX2RlbF9fJworXSkKKworX2NhbGN1bGF0ZV9yZXR1cm5fdmFsdWUgPSB7CisgICAgJ19faGFzaF9fJzogbGFtYmRhIHNlbGY6IG9iamVjdC5fX2hhc2hfXyhzZWxmKSwKKyAgICAnX19zdHJfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19zdHJfXyhzZWxmKSwKKyAgICAnX19zaXplb2ZfXyc6IGxhbWJkYSBzZWxmOiBvYmplY3QuX19zaXplb2ZfXyhzZWxmKSwKK30KKworX3JldHVybl92YWx1ZXMgPSB7CisgICAgJ19fbHRfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2d0X18nOiBOb3RJbXBsZW1lbnRlZCwKKyAgICAnX19sZV9fJzogTm90SW1wbGVtZW50ZWQsCisgICAgJ19fZ2VfXyc6IE5vdEltcGxlbWVudGVkLAorICAgICdfX2ludF9fJzogMSwKKyAgICAnX19jb250YWluc19fJzogRmFsc2UsCisgICAgJ19fbGVuX18nOiAwLAorICAgICdfX2V4aXRfXyc6IEZhbHNlLAorICAgICdfX2NvbXBsZXhfXyc6IDFqLAorICAgICdfX2Zsb2F0X18nOiAxLjAsCisgICAgJ19fYm9vbF9fJzogVHJ1ZSwKKyAgICAnX19pbmRleF9fJzogMSwKK30KKworCitkZWYgX2dldF9lcShzZWxmKToKKyAgICBkZWYgX19lcV9fKG90aGVyKToKKyAgICAgICAgcmV0X3ZhbCA9IHNlbGYuX19lcV9fLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiByZXRfdmFsIGlzIG5vdCBERUZBVUxUOgorICAgICAgICAgICAgcmV0dXJuIHJldF92YWwKKyAgICAgICAgcmV0dXJuIHNlbGYgaXMgb3RoZXIKKyAgICByZXR1cm4gX19lcV9fCisKK2RlZiBfZ2V0X25lKHNlbGYpOgorICAgIGRlZiBfX25lX18ob3RoZXIpOgorICAgICAgICBpZiBzZWxmLl9fbmVfXy5fbW9ja19yZXR1cm5fdmFsdWUgaXMgbm90IERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gREVGQVVMVAorICAgICAgICByZXR1cm4gc2VsZiBpcyBub3Qgb3RoZXIKKyAgICByZXR1cm4gX19uZV9fCisKK2RlZiBfZ2V0X2l0ZXIoc2VsZik6CisgICAgZGVmIF9faXRlcl9fKCk6CisgICAgICAgIHJldF92YWwgPSBzZWxmLl9faXRlcl9fLl9tb2NrX3JldHVybl92YWx1ZQorICAgICAgICBpZiByZXRfdmFsIGlzIERFRkFVTFQ6CisgICAgICAgICAgICByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgIyBpZiByZXRfdmFsIHdhcyBhbHJlYWR5IGFuIGl0ZXJhdG9yLCB0aGVuIGNhbGxpbmcgaXRlciBvbiBpdCBzaG91bGQKKyAgICAgICAgIyByZXR1cm4gdGhlIGl0ZXJhdG9yIHVuY2hhbmdlZAorICAgICAgICByZXR1cm4gaXRlcihyZXRfdmFsKQorICAgIHJldHVybiBfX2l0ZXJfXworCitfc2lkZV9lZmZlY3RfbWV0aG9kcyA9IHsKKyAgICAnX19lcV9fJzogX2dldF9lcSwKKyAgICAnX19uZV9fJzogX2dldF9uZSwKKyAgICAnX19pdGVyX18nOiBfZ2V0X2l0ZXIsCit9CisKKworCitkZWYgX3NldF9yZXR1cm5fdmFsdWUobW9jaywgbWV0aG9kLCBuYW1lKToKKyAgICBmaXhlZCA9IF9yZXR1cm5fdmFsdWVzLmdldChuYW1lLCBERUZBVUxUKQorICAgIGlmIGZpeGVkIGlzIG5vdCBERUZBVUxUOgorICAgICAgICBtZXRob2QucmV0dXJuX3ZhbHVlID0gZml4ZWQKKyAgICAgICAgcmV0dXJuCisKKyAgICByZXR1cm5fY2FsdWxhdG9yID0gX2NhbGN1bGF0ZV9yZXR1cm5fdmFsdWUuZ2V0KG5hbWUpCisgICAgaWYgcmV0dXJuX2NhbHVsYXRvciBpcyBub3QgTm9uZToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcmV0dXJuX2NhbHVsYXRvcihtb2NrKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAjIFhYWFggd2h5IGRvIHdlIHJldHVybiBBdHRyaWJ1dGVFcnJvciBoZXJlPworICAgICAgICAgICAgIyAgICAgIHNldCBpdCBhcyBhIHNpZGVfZWZmZWN0IGluc3RlYWQ/CisgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBBdHRyaWJ1dGVFcnJvcihuYW1lKQorICAgICAgICBtZXRob2QucmV0dXJuX3ZhbHVlID0gcmV0dXJuX3ZhbHVlCisgICAgICAgIHJldHVybgorCisgICAgc2lkZV9lZmZlY3RvciA9IF9zaWRlX2VmZmVjdF9tZXRob2RzLmdldChuYW1lKQorICAgIGlmIHNpZGVfZWZmZWN0b3IgaXMgbm90IE5vbmU6CisgICAgICAgIG1ldGhvZC5zaWRlX2VmZmVjdCA9IHNpZGVfZWZmZWN0b3IobW9jaykKKworCisKK2NsYXNzIE1hZ2ljTWl4aW4ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3cpOgorICAgICAgICBfc2FmZV9zdXBlcihNYWdpY01peGluLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprdykKKyAgICAgICAgc2VsZi5fbW9ja19zZXRfbWFnaWNzKCkKKworCisgICAgZGVmIF9tb2NrX3NldF9tYWdpY3Moc2VsZik6CisgICAgICAgIHRoZXNlX21hZ2ljcyA9IF9tYWdpY3MKKworICAgICAgICBpZiBzZWxmLl9tb2NrX21ldGhvZHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB0aGVzZV9tYWdpY3MgPSBfbWFnaWNzLmludGVyc2VjdGlvbihzZWxmLl9tb2NrX21ldGhvZHMpCisKKyAgICAgICAgICAgIHJlbW92ZV9tYWdpY3MgPSBzZXQoKQorICAgICAgICAgICAgcmVtb3ZlX21hZ2ljcyA9IF9tYWdpY3MgLSB0aGVzZV9tYWdpY3MKKworICAgICAgICAgICAgZm9yIGVudHJ5IGluIHJlbW92ZV9tYWdpY3M6CisgICAgICAgICAgICAgICAgaWYgZW50cnkgaW4gdHlwZShzZWxmKS5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgIyByZW1vdmUgdW5uZWVkZWQgbWFnaWMgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICBkZWxhdHRyKHNlbGYsIGVudHJ5KQorCisgICAgICAgICMgZG9uJ3Qgb3ZlcndyaXRlIGV4aXN0aW5nIGF0dHJpYnV0ZXMgaWYgY2FsbGVkIGEgc2Vjb25kIHRpbWUKKyAgICAgICAgdGhlc2VfbWFnaWNzID0gdGhlc2VfbWFnaWNzIC0gc2V0KHR5cGUoc2VsZikuX19kaWN0X18pCisKKyAgICAgICAgX3R5cGUgPSB0eXBlKHNlbGYpCisgICAgICAgIGZvciBlbnRyeSBpbiB0aGVzZV9tYWdpY3M6CisgICAgICAgICAgICBzZXRhdHRyKF90eXBlLCBlbnRyeSwgTWFnaWNQcm94eShlbnRyeSwgc2VsZikpCisKKworCitjbGFzcyBOb25DYWxsYWJsZU1hZ2ljTW9jayhNYWdpY01peGluLCBOb25DYWxsYWJsZU1vY2spOgorICAgICIiIkEgdmVyc2lvbiBvZiBgTWFnaWNNb2NrYCB0aGF0IGlzbid0IGNhbGxhYmxlLiIiIgorICAgIGRlZiBtb2NrX2FkZF9zcGVjKHNlbGYsIHNwZWMsIHNwZWNfc2V0PUZhbHNlKToKKyAgICAgICAgIiIiQWRkIGEgc3BlYyB0byBhIG1vY2suIGBzcGVjYCBjYW4gZWl0aGVyIGJlIGFuIG9iamVjdCBvciBhCisgICAgICAgIGxpc3Qgb2Ygc3RyaW5ncy4gT25seSBhdHRyaWJ1dGVzIG9uIHRoZSBgc3BlY2AgY2FuIGJlIGZldGNoZWQgYXMKKyAgICAgICAgYXR0cmlidXRlcyBmcm9tIHRoZSBtb2NrLgorCisgICAgICAgIElmIGBzcGVjX3NldGAgaXMgVHJ1ZSB0aGVuIG9ubHkgYXR0cmlidXRlcyBvbiB0aGUgc3BlYyBjYW4gYmUgc2V0LiIiIgorICAgICAgICBzZWxmLl9tb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0KQorICAgICAgICBzZWxmLl9tb2NrX3NldF9tYWdpY3MoKQorCisKKworY2xhc3MgTWFnaWNNb2NrKE1hZ2ljTWl4aW4sIE1vY2spOgorICAgICIiIgorICAgIE1hZ2ljTW9jayBpcyBhIHN1YmNsYXNzIG9mIE1vY2sgd2l0aCBkZWZhdWx0IGltcGxlbWVudGF0aW9ucworICAgIG9mIG1vc3Qgb2YgdGhlIG1hZ2ljIG1ldGhvZHMuIFlvdSBjYW4gdXNlIE1hZ2ljTW9jayB3aXRob3V0IGhhdmluZyB0bworICAgIGNvbmZpZ3VyZSB0aGUgbWFnaWMgbWV0aG9kcyB5b3Vyc2VsZi4KKworICAgIElmIHlvdSB1c2UgdGhlIGBzcGVjYCBvciBgc3BlY19zZXRgIGFyZ3VtZW50cyB0aGVuICpvbmx5KiBtYWdpYworICAgIG1ldGhvZHMgdGhhdCBleGlzdCBpbiB0aGUgc3BlYyB3aWxsIGJlIGNyZWF0ZWQuCisKKyAgICBBdHRyaWJ1dGVzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgYE1hZ2ljTW9ja2Agd2lsbCBhbHNvIGJlIGBNYWdpY01vY2tzYC4KKyAgICAiIiIKKyAgICBkZWYgbW9ja19hZGRfc3BlYyhzZWxmLCBzcGVjLCBzcGVjX3NldD1GYWxzZSk6CisgICAgICAgICIiIkFkZCBhIHNwZWMgdG8gYSBtb2NrLiBgc3BlY2AgY2FuIGVpdGhlciBiZSBhbiBvYmplY3Qgb3IgYQorICAgICAgICBsaXN0IG9mIHN0cmluZ3MuIE9ubHkgYXR0cmlidXRlcyBvbiB0aGUgYHNwZWNgIGNhbiBiZSBmZXRjaGVkIGFzCisgICAgICAgIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbW9jay4KKworICAgICAgICBJZiBgc3BlY19zZXRgIGlzIFRydWUgdGhlbiBvbmx5IGF0dHJpYnV0ZXMgb24gdGhlIHNwZWMgY2FuIGJlIHNldC4iIiIKKyAgICAgICAgc2VsZi5fbW9ja19hZGRfc3BlYyhzcGVjLCBzcGVjX3NldCkKKyAgICAgICAgc2VsZi5fbW9ja19zZXRfbWFnaWNzKCkKKworCisKK2NsYXNzIE1hZ2ljUHJveHkob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50KToKKyAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIG0gPSBzZWxmLmNyZWF0ZV9tb2NrKCkKKyAgICAgICAgcmV0dXJuIG0oKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGNyZWF0ZV9tb2NrKHNlbGYpOgorICAgICAgICBlbnRyeSA9IHNlbGYubmFtZQorICAgICAgICBwYXJlbnQgPSBzZWxmLnBhcmVudAorICAgICAgICBtID0gcGFyZW50Ll9nZXRfY2hpbGRfbW9jayhuYW1lPWVudHJ5LCBfbmV3X25hbWU9ZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9uZXdfcGFyZW50PXBhcmVudCkKKyAgICAgICAgc2V0YXR0cihwYXJlbnQsIGVudHJ5LCBtKQorICAgICAgICBfc2V0X3JldHVybl92YWx1ZShwYXJlbnQsIG0sIGVudHJ5KQorICAgICAgICByZXR1cm4gbQorCisgICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCBfdHlwZT1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY3JlYXRlX21vY2soKQorCisKKworY2xhc3MgX0FOWShvYmplY3QpOgorICAgICJBIGhlbHBlciBvYmplY3QgdGhhdCBjb21wYXJlcyBlcXVhbCB0byBldmVyeXRoaW5nLiIKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gJzxBTlk+JworCitBTlkgPSBfQU5ZKCkKKworCisKK2RlZiBfZm9ybWF0X2NhbGxfc2lnbmF0dXJlKG5hbWUsIGFyZ3MsIGt3YXJncyk6CisgICAgbWVzc2FnZSA9ICclcyglJXMpJyAlIG5hbWUKKyAgICBmb3JtYXR0ZWRfYXJncyA9ICcnCisgICAgYXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oW3JlcHIoYXJnKSBmb3IgYXJnIGluIGFyZ3NdKQorICAgIGt3YXJnc19zdHJpbmcgPSAnLCAnLmpvaW4oWworICAgICAgICAnJXM9JXInICUgKGtleSwgdmFsdWUpIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpCisgICAgXSkKKyAgICBpZiBhcmdzX3N0cmluZzoKKyAgICAgICAgZm9ybWF0dGVkX2FyZ3MgPSBhcmdzX3N0cmluZworICAgIGlmIGt3YXJnc19zdHJpbmc6CisgICAgICAgIGlmIGZvcm1hdHRlZF9hcmdzOgorICAgICAgICAgICAgZm9ybWF0dGVkX2FyZ3MgKz0gJywgJworICAgICAgICBmb3JtYXR0ZWRfYXJncyArPSBrd2FyZ3Nfc3RyaW5nCisKKyAgICByZXR1cm4gbWVzc2FnZSAlIGZvcm1hdHRlZF9hcmdzCisKKworCitjbGFzcyBfQ2FsbCh0dXBsZSk6CisgICAgIiIiCisgICAgQSB0dXBsZSBmb3IgaG9sZGluZyB0aGUgcmVzdWx0cyBvZiBhIGNhbGwgdG8gYSBtb2NrLCBlaXRoZXIgaW4gdGhlIGZvcm0KKyAgICBgKGFyZ3MsIGt3YXJncylgIG9yIGAobmFtZSwgYXJncywga3dhcmdzKWAuCisKKyAgICBJZiBhcmdzIG9yIGt3YXJncyBhcmUgZW1wdHkgdGhlbiBhIGNhbGwgdHVwbGUgd2lsbCBjb21wYXJlIGVxdWFsIHRvCisgICAgYSB0dXBsZSB3aXRob3V0IHRob3NlIHZhbHVlcy4gVGhpcyBtYWtlcyBjb21wYXJpc29ucyBsZXNzIHZlcmJvc2U6OgorCisgICAgICAgIF9DYWxsKCgnbmFtZScsICgpLCB7fSkpID09ICgnbmFtZScsKQorICAgICAgICBfQ2FsbCgoJ25hbWUnLCAoMSwpLCB7fSkpID09ICgnbmFtZScsICgxLCkpCisgICAgICAgIF9DYWxsKCgoKSwgeydhJzogJ2InfSkpID09ICh7J2EnOiAnYid9LCkKKworICAgIFRoZSBgX0NhbGxgIG9iamVjdCBwcm92aWRlcyBhIHVzZWZ1bCBzaG9ydGN1dCBmb3IgY29tcGFyaW5nIHdpdGggY2FsbDo6CisKKyAgICAgICAgX0NhbGwoKCgxLCAyKSwgeydhJzogM30pKSA9PSBjYWxsKDEsIDIsIGE9MykKKyAgICAgICAgX0NhbGwoKCdmb28nLCAoMSwgMiksIHsnYSc6IDN9KSkgPT0gY2FsbC5mb28oMSwgMiwgYT0zKQorCisgICAgSWYgdGhlIF9DYWxsIGhhcyBubyBuYW1lIHRoZW4gaXQgd2lsbCBtYXRjaCBhbnkgbmFtZS4KKyAgICAiIiIKKyAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlPSgpLCBuYW1lPU5vbmUsIHBhcmVudD1Ob25lLCB0d289RmFsc2UsCisgICAgICAgICAgICAgICAgZnJvbV9rYWxsPVRydWUpOgorICAgICAgICBuYW1lID0gJycKKyAgICAgICAgYXJncyA9ICgpCisgICAgICAgIGt3YXJncyA9IHt9CisgICAgICAgIF9sZW4gPSBsZW4odmFsdWUpCisgICAgICAgIGlmIF9sZW4gPT0gMzoKKyAgICAgICAgICAgIG5hbWUsIGFyZ3MsIGt3YXJncyA9IHZhbHVlCisgICAgICAgIGVsaWYgX2xlbiA9PSAyOgorICAgICAgICAgICAgZmlyc3QsIHNlY29uZCA9IHZhbHVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpcnN0LCBzdHIpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBmaXJzdAorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2Vjb25kLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWNvbmQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBzZWNvbmQKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncywga3dhcmdzID0gZmlyc3QsIHNlY29uZAorICAgICAgICBlbGlmIF9sZW4gPT0gMToKKyAgICAgICAgICAgIHZhbHVlLCA9IHZhbHVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgICAgIG5hbWUgPSB2YWx1ZQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CisgICAgICAgICAgICAgICAgYXJncyA9IHZhbHVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGt3YXJncyA9IHZhbHVlCisKKyAgICAgICAgaWYgdHdvOgorICAgICAgICAgICAgcmV0dXJuIHR1cGxlLl9fbmV3X18oY2xzLCAoYXJncywga3dhcmdzKSkKKworICAgICAgICByZXR1cm4gdHVwbGUuX19uZXdfXyhjbHMsIChuYW1lLCBhcmdzLCBrd2FyZ3MpKQorCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWU9KCksIG5hbWU9Tm9uZSwgcGFyZW50PU5vbmUsIHR3bz1GYWxzZSwKKyAgICAgICAgICAgICAgICAgZnJvbV9rYWxsPVRydWUpOgorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisgICAgICAgIHNlbGYuZnJvbV9rYWxsID0gZnJvbV9rYWxsCisKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBvdGhlciBpcyBBTlk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsZW5fb3RoZXIgPSBsZW4ob3RoZXIpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBzZWxmX25hbWUgPSAnJworICAgICAgICBpZiBsZW4oc2VsZikgPT0gMjoKKyAgICAgICAgICAgIHNlbGZfYXJncywgc2VsZl9rd2FyZ3MgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmX25hbWUsIHNlbGZfYXJncywgc2VsZl9rd2FyZ3MgPSBzZWxmCisKKyAgICAgICAgb3RoZXJfbmFtZSA9ICcnCisgICAgICAgIGlmIGxlbl9vdGhlciA9PSAwOgorICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHt9CisgICAgICAgIGVsaWYgbGVuX290aGVyID09IDM6CisgICAgICAgICAgICBvdGhlcl9uYW1lLCBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBvdGhlcgorICAgICAgICBlbGlmIGxlbl9vdGhlciA9PSAxOgorICAgICAgICAgICAgdmFsdWUsID0gb3RoZXIKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzID0gdmFsdWUKKyAgICAgICAgICAgICAgICBvdGhlcl9rd2FyZ3MgPSB7fQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgorICAgICAgICAgICAgICAgIG90aGVyX25hbWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncyA9ICgpLCB7fQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzID0gKCkKKyAgICAgICAgICAgICAgICBvdGhlcl9rd2FyZ3MgPSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBsZW4gMgorICAgICAgICAgICAgIyBjb3VsZCBiZSAobmFtZSwgYXJncykgb3IgKG5hbWUsIGt3YXJncykgb3IgKGFyZ3MsIGt3YXJncykKKyAgICAgICAgICAgIGZpcnN0LCBzZWNvbmQgPSBvdGhlcgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShmaXJzdCwgc3RyKToKKyAgICAgICAgICAgICAgICBvdGhlcl9uYW1lID0gZmlyc3QKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlY29uZCwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBzZWNvbmQsIHt9CisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgb3RoZXJfYXJncywgb3RoZXJfa3dhcmdzID0gKCksIHNlY29uZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvdGhlcl9hcmdzLCBvdGhlcl9rd2FyZ3MgPSBmaXJzdCwgc2Vjb25kCisKKyAgICAgICAgaWYgc2VsZl9uYW1lIGFuZCBvdGhlcl9uYW1lICE9IHNlbGZfbmFtZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICMgdGhpcyBvcmRlciBpcyBpbXBvcnRhbnQgZm9yIEFOWSB0byB3b3JrIQorICAgICAgICByZXR1cm4gKG90aGVyX2FyZ3MsIG90aGVyX2t3YXJncykgPT0gKHNlbGZfYXJncywgc2VsZl9rd2FyZ3MpCisKKworICAgIGRlZiBfX25lX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gbm90IHNlbGYuX19lcV9fKG90aGVyKQorCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gX0NhbGwoKCcnLCBhcmdzLCBrd2FyZ3MpLCBuYW1lPScoKScpCisKKyAgICAgICAgbmFtZSA9IHNlbGYubmFtZSArICcoKScKKyAgICAgICAgcmV0dXJuIF9DYWxsKChzZWxmLm5hbWUsIGFyZ3MsIGt3YXJncyksIG5hbWU9bmFtZSwgcGFyZW50PXNlbGYpCisKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgaWYgc2VsZi5uYW1lIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gX0NhbGwobmFtZT1hdHRyLCBmcm9tX2thbGw9RmFsc2UpCisgICAgICAgIG5hbWUgPSAnJXMuJXMnICUgKHNlbGYubmFtZSwgYXR0cikKKyAgICAgICAgcmV0dXJuIF9DYWxsKG5hbWU9bmFtZSwgcGFyZW50PXNlbGYsIGZyb21fa2FsbD1GYWxzZSkKKworCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5mcm9tX2thbGw6CisgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lIG9yICdjYWxsJworICAgICAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCcoKScpOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnY2FsbCVzJyAlIG5hbWUKKyAgICAgICAgICAgIHJldHVybiBuYW1lCisKKyAgICAgICAgaWYgbGVuKHNlbGYpID09IDI6CisgICAgICAgICAgICBuYW1lID0gJ2NhbGwnCisgICAgICAgICAgICBhcmdzLCBrd2FyZ3MgPSBzZWxmCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBuYW1lLCBhcmdzLCBrd2FyZ3MgPSBzZWxmCisgICAgICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgICAgICBuYW1lID0gJ2NhbGwnCisgICAgICAgICAgICBlbGlmIG5vdCBuYW1lLnN0YXJ0c3dpdGgoJygpJyk6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsLiVzJyAlIG5hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdjYWxsJXMnICUgbmFtZQorICAgICAgICByZXR1cm4gX2Zvcm1hdF9jYWxsX3NpZ25hdHVyZShuYW1lLCBhcmdzLCBrd2FyZ3MpCisKKworICAgIGRlZiBjYWxsX2xpc3Qoc2VsZik6CisgICAgICAgICIiIkZvciBhIGNhbGwgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBtdWx0aXBsZSBjYWxscywgYGNhbGxfbGlzdGAKKyAgICAgICAgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBpbnRlcm1lZGlhdGUgY2FsbHMgYXMgd2VsbCBhcyB0aGUKKyAgICAgICAgZmluYWwgY2FsbC4iIiIKKyAgICAgICAgdmFscyA9IFtdCisgICAgICAgIHRoaW5nID0gc2VsZgorICAgICAgICB3aGlsZSB0aGluZyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIHRoaW5nLmZyb21fa2FsbDoKKyAgICAgICAgICAgICAgICB2YWxzLmFwcGVuZCh0aGluZykKKyAgICAgICAgICAgIHRoaW5nID0gdGhpbmcucGFyZW50CisgICAgICAgIHJldHVybiBfQ2FsbExpc3QocmV2ZXJzZWQodmFscykpCisKKworY2FsbCA9IF9DYWxsKGZyb21fa2FsbD1GYWxzZSkKKworCisKK2RlZiBjcmVhdGVfYXV0b3NwZWMoc3BlYywgc3BlY19zZXQ9RmFsc2UsIGluc3RhbmNlPUZhbHNlLCBfcGFyZW50PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIF9uYW1lPU5vbmUsICoqa3dhcmdzKToKKyAgICAiIiJDcmVhdGUgYSBtb2NrIG9iamVjdCB1c2luZyBhbm90aGVyIG9iamVjdCBhcyBhIHNwZWMuIEF0dHJpYnV0ZXMgb24gdGhlCisgICAgbW9jayB3aWxsIHVzZSB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb24gdGhlIGBzcGVjYCBvYmplY3QgYXMgdGhlaXIKKyAgICBzcGVjLgorCisgICAgRnVuY3Rpb25zIG9yIG1ldGhvZHMgYmVpbmcgbW9ja2VkIHdpbGwgaGF2ZSB0aGVpciBhcmd1bWVudHMgY2hlY2tlZAorICAgIHRvIGNoZWNrIHRoYXQgdGhleSBhcmUgY2FsbGVkIHdpdGggdGhlIGNvcnJlY3Qgc2lnbmF0dXJlLgorCisgICAgSWYgYHNwZWNfc2V0YCBpcyBUcnVlIHRoZW4gYXR0ZW1wdGluZyB0byBzZXQgYXR0cmlidXRlcyB0aGF0IGRvbid0IGV4aXN0CisgICAgb24gdGhlIHNwZWMgb2JqZWN0IHdpbGwgcmFpc2UgYW4gYEF0dHJpYnV0ZUVycm9yYC4KKworICAgIElmIGEgY2xhc3MgaXMgdXNlZCBhcyBhIHNwZWMgdGhlbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBtb2NrICh0aGUKKyAgICBpbnN0YW5jZSBvZiB0aGUgY2xhc3MpIHdpbGwgaGF2ZSB0aGUgc2FtZSBzcGVjLiBZb3UgY2FuIHVzZSBhIGNsYXNzIGFzIHRoZQorICAgIHNwZWMgZm9yIGFuIGluc3RhbmNlIG9iamVjdCBieSBwYXNzaW5nIGBpbnN0YW5jZT1UcnVlYC4gVGhlIHJldHVybmVkIG1vY2sKKyAgICB3aWxsIG9ubHkgYmUgY2FsbGFibGUgaWYgaW5zdGFuY2VzIG9mIHRoZSBtb2NrIGFyZSBjYWxsYWJsZS4KKworICAgIGBjcmVhdGVfYXV0b3NwZWNgIGFsc28gdGFrZXMgYXJiaXRyYXJ5IGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhc3NlZCB0bworICAgIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUgY3JlYXRlZCBtb2NrLiIiIgorICAgIGlmIF9pc19saXN0KHNwZWMpOgorICAgICAgICAjIGNhbid0IHBhc3MgYSBsaXN0IGluc3RhbmNlIHRvIHRoZSBtb2NrIGNvbnN0cnVjdG9yIGFzIGl0IHdpbGwgYmUKKyAgICAgICAgIyBpbnRlcnByZXRlZCBhcyBhIGxpc3Qgb2Ygc3RyaW5ncworICAgICAgICBzcGVjID0gdHlwZShzcGVjKQorCisgICAgaXNfdHlwZSA9IGlzaW5zdGFuY2Uoc3BlYywgdHlwZSkKKworICAgIF9rd2FyZ3MgPSB7J3NwZWMnOiBzcGVjfQorICAgIGlmIHNwZWNfc2V0OgorICAgICAgICBfa3dhcmdzID0geydzcGVjX3NldCc6IHNwZWN9CisgICAgZWxpZiBzcGVjIGlzIE5vbmU6CisgICAgICAgICMgTm9uZSB3ZSBtb2NrIHdpdGggYSBub3JtYWwgbW9jayB3aXRob3V0IGEgc3BlYworICAgICAgICBfa3dhcmdzID0ge30KKworICAgIF9rd2FyZ3MudXBkYXRlKGt3YXJncykKKworICAgIEtsYXNzID0gTWFnaWNNb2NrCisgICAgaWYgdHlwZShzcGVjKSBpbiBEZXNjcmlwdG9yVHlwZXM6CisgICAgICAgICMgZGVzY3JpcHRvcnMgZG9uJ3QgaGF2ZSBhIHNwZWMKKyAgICAgICAgIyBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB0eXBlIHRoZXkgcmV0dXJuCisgICAgICAgIF9rd2FyZ3MgPSB7fQorICAgIGVsaWYgbm90IF9jYWxsYWJsZShzcGVjKToKKyAgICAgICAgS2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworICAgIGVsaWYgaXNfdHlwZSBhbmQgaW5zdGFuY2UgYW5kIG5vdCBfaW5zdGFuY2VfY2FsbGFibGUoc3BlYyk6CisgICAgICAgIEtsYXNzID0gTm9uQ2FsbGFibGVNYWdpY01vY2sKKworICAgIF9uZXdfbmFtZSA9IF9uYW1lCisgICAgaWYgX3BhcmVudCBpcyBOb25lOgorICAgICAgICAjIGZvciBhIHRvcCBsZXZlbCBvYmplY3Qgbm8gX25ld19uYW1lIHNob3VsZCBiZSBzZXQKKyAgICAgICAgX25ld19uYW1lID0gJycKKworICAgIG1vY2sgPSBLbGFzcyhwYXJlbnQ9X3BhcmVudCwgX25ld19wYXJlbnQ9X3BhcmVudCwgX25ld19uYW1lPV9uZXdfbmFtZSwKKyAgICAgICAgICAgICAgICAgbmFtZT1fbmFtZSwgKipfa3dhcmdzKQorCisgICAgaWYgaXNpbnN0YW5jZShzcGVjLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgIyBzaG91bGQgb25seSBoYXBwZW4gYXQgdGhlIHRvcCBsZXZlbCBiZWNhdXNlIHdlIGRvbid0CisgICAgICAgICMgcmVjdXJzZSBmb3IgZnVuY3Rpb25zCisgICAgICAgIG1vY2sgPSBfc2V0X3NpZ25hdHVyZShtb2NrLCBzcGVjKQorICAgIGVsc2U6CisgICAgICAgIF9jaGVja19zaWduYXR1cmUoc3BlYywgbW9jaywgaXNfdHlwZSwgaW5zdGFuY2UpCisKKyAgICBpZiBfcGFyZW50IGlzIG5vdCBOb25lIGFuZCBub3QgaW5zdGFuY2U6CisgICAgICAgIF9wYXJlbnQuX21vY2tfY2hpbGRyZW5bX25hbWVdID0gbW9jaworCisgICAgaWYgaXNfdHlwZSBhbmQgbm90IGluc3RhbmNlIGFuZCAncmV0dXJuX3ZhbHVlJyBub3QgaW4ga3dhcmdzOgorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjLCBzcGVjX3NldCwgaW5zdGFuY2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX25hbWU9JygpJywgX3BhcmVudD1tb2NrKQorCisgICAgZm9yIGVudHJ5IGluIGRpcihzcGVjKToKKyAgICAgICAgaWYgX2lzX21hZ2ljKGVudHJ5KToKKyAgICAgICAgICAgICMgTWFnaWNNb2NrIGFscmVhZHkgZG9lcyB0aGUgdXNlZnVsIG1hZ2ljIG1ldGhvZHMgZm9yIHVzCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgWFhYWCBkbyB3ZSBuZWVkIGEgYmV0dGVyIHdheSBvZiBnZXR0aW5nIGF0dHJpYnV0ZXMgd2l0aG91dAorICAgICAgICAjIHRyaWdnZXJpbmcgY29kZSBleGVjdXRpb24gKD8pIFByb2JhYmx5IG5vdCAtIHdlIG5lZWQgdGhlIGFjdHVhbAorICAgICAgICAjIG9iamVjdCB0byBtb2NrIGl0IHNvIHdlIHdvdWxkIHJhdGhlciB0cmlnZ2VyIGEgcHJvcGVydHkgdGhhbiBtb2NrCisgICAgICAgICMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3IuIExpa2V3aXNlIHdlIHdhbnQgdG8gbW9jayBvdXQgZHluYW1pY2FsbHkKKyAgICAgICAgIyBwcm92aWRlZCBhdHRyaWJ1dGVzLgorICAgICAgICAjIFhYWFggd2hhdCBhYm91dCBhdHRyaWJ1dGVzIHRoYXQgcmFpc2UgZXhjZXB0aW9ucyBvdGhlciB0aGFuCisgICAgICAgICMgQXR0cmlidXRlRXJyb3Igb24gYmVpbmcgZmV0Y2hlZD8KKyAgICAgICAgIyB3ZSBjb3VsZCBiZSByZXNpbGllbnQgYWdhaW5zdCBpdCwgb3IgY2F0Y2ggYW5kIHByb3BhZ2F0ZSB0aGUKKyAgICAgICAgIyBleGNlcHRpb24gd2hlbiB0aGUgYXR0cmlidXRlIGlzIGZldGNoZWQgZnJvbSB0aGUgbW9jaworICAgICAgICB0cnk6CisgICAgICAgICAgICBvcmlnaW5hbCA9IGdldGF0dHIoc3BlYywgZW50cnkpCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAga3dhcmdzID0geydzcGVjJzogb3JpZ2luYWx9CisgICAgICAgIGlmIHNwZWNfc2V0OgorICAgICAgICAgICAga3dhcmdzID0geydzcGVjX3NldCc6IG9yaWdpbmFsfQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG9yaWdpbmFsLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgICAgIG5ldyA9IF9TcGVjU3RhdGUob3JpZ2luYWwsIHNwZWNfc2V0LCBtb2NrLCBlbnRyeSwgaW5zdGFuY2UpCisgICAgICAgICAgICBtb2NrLl9tb2NrX2NoaWxkcmVuW2VudHJ5XSA9IG5ldworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGFyZW50ID0gbW9jaworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzcGVjLCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgICAgICAgICBwYXJlbnQgPSBtb2NrLm1vY2sKKworICAgICAgICAgICAgbmV3ID0gTWFnaWNNb2NrKHBhcmVudD1wYXJlbnQsIG5hbWU9ZW50cnksIF9uZXdfbmFtZT1lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbmV3X3BhcmVudD1wYXJlbnQsICoqa3dhcmdzKQorICAgICAgICAgICAgbW9jay5fbW9ja19jaGlsZHJlbltlbnRyeV0gPSBuZXcKKyAgICAgICAgICAgIHNraXBmaXJzdCA9IF9tdXN0X3NraXAoc3BlYywgZW50cnksIGlzX3R5cGUpCisgICAgICAgICAgICBfY2hlY2tfc2lnbmF0dXJlKG9yaWdpbmFsLCBuZXcsIHNraXBmaXJzdD1za2lwZmlyc3QpCisKKyAgICAgICAgIyBzbyBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIF9zZXRfc2lnbmF0dXJlIGJlY29tZSBpbnN0YW5jZSBhdHRyaWJ1dGVzLAorICAgICAgICAjICpwbHVzKiB0aGVpciB1bmRlcmx5aW5nIG1vY2sgZXhpc3RzIGluIF9tb2NrX2NoaWxkcmVuIG9mIHRoZSBwYXJlbnQKKyAgICAgICAgIyBtb2NrLiBBZGRpbmcgdG8gX21vY2tfY2hpbGRyZW4gbWF5IGJlIHVubmVjZXNzYXJ5IHdoZXJlIHdlIGFyZSBhbHNvCisgICAgICAgICMgc2V0dGluZyBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGU/CisgICAgICAgIGlmIGlzaW5zdGFuY2UobmV3LCBGdW5jdGlvblR5cGVzKToKKyAgICAgICAgICAgIHNldGF0dHIobW9jaywgZW50cnksIG5ldykKKworICAgIHJldHVybiBtb2NrCisKKworZGVmIF9tdXN0X3NraXAoc3BlYywgZW50cnksIGlzX3R5cGUpOgorICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMsIHR5cGUpOgorICAgICAgICBpZiBlbnRyeSBpbiBnZXRhdHRyKHNwZWMsICdfX2RpY3RfXycsIHt9KToKKyAgICAgICAgICAgICMgaW5zdGFuY2UgYXR0cmlidXRlIC0gc2hvdWxkbid0IHNraXAKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBzcGVjID0gc3BlYy5fX2NsYXNzX18KKworICAgIGZvciBrbGFzcyBpbiBzcGVjLl9fbXJvX186CisgICAgICAgIHJlc3VsdCA9IGtsYXNzLl9fZGljdF9fLmdldChlbnRyeSwgREVGQVVMVCkKKyAgICAgICAgaWYgcmVzdWx0IGlzIERFRkFVTFQ6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHJlc3VsdCwgKHN0YXRpY21ldGhvZCwgY2xhc3NtZXRob2QpKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gaXNfdHlwZQorCisgICAgIyBzaG91bGRuJ3QgZ2V0IGhlcmUgdW5sZXNzIGZ1bmN0aW9uIGlzIGEgZHluYW1pY2FsbHkgcHJvdmlkZWQgYXR0cmlidXRlCisgICAgIyBYWFhYIHVudGVzdGVkIGJlaGF2aW91cgorICAgIHJldHVybiBpc190eXBlCisKKworZGVmIF9nZXRfY2xhc3Mob2JqKToKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBvYmouX19jbGFzc19fCisgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAjIGl0IGlzIHBvc3NpYmxlIGZvciBvYmplY3RzIHRvIGhhdmUgbm8gX19jbGFzc19fCisgICAgICAgIHJldHVybiB0eXBlKG9iaikKKworCitjbGFzcyBfU3BlY1N0YXRlKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3BlYywgc3BlY19zZXQ9RmFsc2UsIHBhcmVudD1Ob25lLAorICAgICAgICAgICAgICAgICBuYW1lPU5vbmUsIGlkcz1Ob25lLCBpbnN0YW5jZT1GYWxzZSk6CisgICAgICAgIHNlbGYuc3BlYyA9IHNwZWMKKyAgICAgICAgc2VsZi5pZHMgPSBpZHMKKyAgICAgICAgc2VsZi5zcGVjX3NldCA9IHNwZWNfc2V0CisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisgICAgICAgIHNlbGYuaW5zdGFuY2UgPSBpbnN0YW5jZQorICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisKKworRnVuY3Rpb25UeXBlcyA9ICgKKyAgICAjIHB5dGhvbiBmdW5jdGlvbgorICAgIHR5cGUoY3JlYXRlX2F1dG9zcGVjKSwKKyAgICAjIGluc3RhbmNlIG1ldGhvZAorICAgIHR5cGUoQU5ZLl9fZXFfXyksCispCisKKworZmlsZV9zcGVjID0gTm9uZQorCisKK2RlZiBtb2NrX29wZW4obW9jaz1Ob25lLCByZWFkX2RhdGE9JycpOgorICAgICIiIgorICAgIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG1vY2sgdG8gcmVwbGFjZSB0aGUgdXNlIG9mIGBvcGVuYC4gSXQgd29ya3MKKyAgICBmb3IgYG9wZW5gIGNhbGxlZCBkaXJlY3RseSBvciB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgorCisgICAgVGhlIGBtb2NrYCBhcmd1bWVudCBpcyB0aGUgbW9jayBvYmplY3QgdG8gY29uZmlndXJlLiBJZiBgTm9uZWAgKHRoZQorICAgIGRlZmF1bHQpIHRoZW4gYSBgTWFnaWNNb2NrYCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdSwgd2l0aCB0aGUgQVBJIGxpbWl0ZWQKKyAgICB0byBtZXRob2RzIG9yIGF0dHJpYnV0ZXMgYXZhaWxhYmxlIG9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcy4KKworICAgIGByZWFkX2RhdGFgIGlzIGEgc3RyaW5nIGZvciB0aGUgYHJlYWRgIG1ldGhvZCBvZiB0aGUgZmlsZSBoYW5kbGUgdG8gcmV0dXJuLgorICAgIFRoaXMgaXMgYW4gZW1wdHkgc3RyaW5nIGJ5IGRlZmF1bHQuCisgICAgIiIiCisgICAgZ2xvYmFsIGZpbGVfc3BlYworICAgIGlmIGZpbGVfc3BlYyBpcyBOb25lOgorICAgICAgICBpbXBvcnQgX2lvCisgICAgICAgIGZpbGVfc3BlYyA9IGxpc3Qoc2V0KGRpcihfaW8uVGV4dElPV3JhcHBlcikpLnVuaW9uKHNldChkaXIoX2lvLkJ5dGVzSU8pKSkpCisKKyAgICBpZiBtb2NrIGlzIE5vbmU6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2sobmFtZT0nb3BlbicsIHNwZWM9b3BlbikKKworICAgIGhhbmRsZSA9IE1hZ2ljTW9jayhzcGVjPWZpbGVfc3BlYykKKyAgICBoYW5kbGUud3JpdGUucmV0dXJuX3ZhbHVlID0gTm9uZQorICAgIGhhbmRsZS5fX2VudGVyX18ucmV0dXJuX3ZhbHVlID0gaGFuZGxlCisgICAgaGFuZGxlLnJlYWQucmV0dXJuX3ZhbHVlID0gcmVhZF9kYXRhCisKKyAgICBtb2NrLnJldHVybl92YWx1ZSA9IGhhbmRsZQorICAgIHJldHVybiBtb2NrCisKKworY2xhc3MgUHJvcGVydHlNb2NrKE1vY2spOgorICAgICIiIgorICAgIEEgbW9jayBpbnRlbmRlZCB0byBiZSB1c2VkIGFzIGEgcHJvcGVydHksIG9yIG90aGVyIGRlc2NyaXB0b3IsIG9uIGEgY2xhc3MuCisgICAgYFByb3BlcnR5TW9ja2AgcHJvdmlkZXMgYF9fZ2V0X19gIGFuZCBgX19zZXRfX2AgbWV0aG9kcyBzbyB5b3UgY2FuIHNwZWNpZnkKKyAgICBhIHJldHVybiB2YWx1ZSB3aGVuIGl0IGlzIGZldGNoZWQuCisKKyAgICBGZXRjaGluZyBhIGBQcm9wZXJ0eU1vY2tgIGluc3RhbmNlIGZyb20gYW4gb2JqZWN0IGNhbGxzIHRoZSBtb2NrLCB3aXRoCisgICAgbm8gYXJncy4gU2V0dGluZyBpdCBjYWxscyB0aGUgbW9jayB3aXRoIHRoZSB2YWx1ZSBiZWluZyBzZXQuCisgICAgIiIiCisgICAgZGVmIF9nZXRfY2hpbGRfbW9jayhzZWxmLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBNYWdpY01vY2soKiprd2FyZ3MpCisKKyAgICBkZWYgX19nZXRfXyhzZWxmLCBvYmosIG9ial90eXBlKToKKyAgICAgICAgcmV0dXJuIHNlbGYoKQorICAgIGRlZiBfX3NldF9fKHNlbGYsIG9iaiwgdmFsKToKKyAgICAgICAgc2VsZih2YWwpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5IGIvTGliL3VuaXR0ZXN0L3Jlc3VsdC5weQppbmRleCA0NGJmMTg2Li45N2U1NDI2IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvcmVzdWx0LnB5CisrKyBiL0xpYi91bml0dGVzdC9yZXN1bHQucHkKQEAgLTEsNiArMSw1IEBACiAiIiJUZXN0IHJlc3VsdCBvYmplY3QiIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzeXMKIGltcG9ydCB0cmFjZWJhY2sKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L19faW5pdF9fLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkKaW5kZXggOTliNzMwYi4uY2RhZThhNyAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvX19pbml0X18ucHkKQEAgLTE0LDYgKzE0LDcgQEAKICAgICAgICAgICAgIF9faW1wb3J0X18obW9kbmFtZSkKICAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZG5hbWVdCiAgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KGxvYWRlci5sb2FkVGVzdHNGcm9tTW9kdWxlKG1vZHVsZSkpCisgICAgc3VpdGUuYWRkVGVzdChsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoJ3VuaXR0ZXN0LnRlc3QudGVzdG1vY2snKSkKICAgICByZXR1cm4gc3VpdGUKIAogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC9fdGVzdF93YXJuaW5ncy5weSBiL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5CmluZGV4IGQwYmUxOGQuLjVjYmZiNTMgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L190ZXN0X3dhcm5pbmdzLnB5CkBAIC0xMCw3ICsxMCw2IEBACiBTZWUgIzEwNTM1LgogIiIiCiAKLWltcG9ydCBpbwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfYXNzZXJ0aW9ucy5weQppbmRleCBhMWQyMGViLi5kNDNmZTVhIDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Fzc2VydGlvbnMucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9hc3NlcnRpb25zLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHByb2R1Y3QKIAogCiBjbGFzcyBUZXN0X0Fzc2VydGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTQ1LDYgKzE0NiwxNCBAQAogICAgICAgICBzZWxmLnRlc3RhYmxlVHJ1ZS5fZm9ybWF0TWVzc2FnZShvbmUsICdcdUZGRkQnKQogCiAgICAgZGVmIGFzc2VydE1lc3NhZ2VzKHNlbGYsIG1ldGhvZE5hbWUsIGFyZ3MsIGVycm9ycyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IG1ldGhvZE5hbWUoKmFyZ3MpIHJhaXNlcyB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlcy4KKyAgICAgICAgZXJyb3JzIHNob3VsZCBiZSBhIGxpc3Qgb2YgNCByZWdleCB0aGF0IG1hdGNoIHRoZSBlcnJvciB3aGVuOgorICAgICAgICAgIDEpIGxvbmdNZXNzYWdlID0gRmFsc2UgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgMikgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbXNnIHBhc3NlZDsKKyAgICAgICAgICAzKSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgNCkgbG9uZ01lc3NhZ2UgPSBUcnVlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAiIiIKICAgICAgICAgZGVmIGdldE1ldGhvZChpKToKICAgICAgICAgICAgIHVzZVRlc3RhYmxlRmFsc2UgID0gaSA8IDIKICAgICAgICAgICAgIGlmIHVzZVRlc3RhYmxlRmFsc2U6CkBAIC0yODQsMyArMjkzLDY3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJedW5leHBlY3RlZGx5IGlkZW50aWNhbDogTm9uZSQiLCAiXm9vcHMkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl51bmV4cGVjdGVkbHkgaWRlbnRpY2FsOiBOb25lJCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJedW5leHBlY3RlZGx5IGlkZW50aWNhbDogTm9uZSA6IG9vcHMkIl0pCisKKworICAgIGRlZiBhc3NlcnRNZXNzYWdlc0NNKHNlbGYsIG1ldGhvZE5hbWUsIGFyZ3MsIGZ1bmMsIGVycm9ycyk6CisgICAgICAgICIiIgorICAgICAgICBDaGVjayB0aGF0IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2VzIGFyZSByYWlzZWQgd2hpbGUgZXhlY3V0aW5nOgorICAgICAgICAgIHdpdGggbWV0aG9kKCphcmdzKToKKyAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICplcnJvcnMqIHNob3VsZCBiZSBhIGxpc3Qgb2YgNCByZWdleCB0aGF0IG1hdGNoIHRoZSBlcnJvciB3aGVuOgorICAgICAgICAgIDEpIGxvbmdNZXNzYWdlID0gRmFsc2UgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgMikgbG9uZ01lc3NhZ2UgPSBGYWxzZSBhbmQgbXNnIHBhc3NlZDsKKyAgICAgICAgICAzKSBsb25nTWVzc2FnZSA9IFRydWUgYW5kIG5vIG1zZyBwYXNzZWQ7CisgICAgICAgICAgNCkgbG9uZ01lc3NhZ2UgPSBUcnVlIGFuZCBtc2cgcGFzc2VkOworICAgICAgICAiIiIKKyAgICAgICAgcCA9IHByb2R1Y3QoKHNlbGYudGVzdGFibGVGYWxzZSwgc2VsZi50ZXN0YWJsZVRydWUpLAorICAgICAgICAgICAgICAgICAgICAoe30sIHsibXNnIjogIm9vcHMifSkpCisgICAgICAgIGZvciAoY2xzLCBrd2FyZ3MpLCBlcnIgaW4gemlwKHAsIGVycm9ycyk6CisgICAgICAgICAgICBtZXRob2QgPSBnZXRhdHRyKGNscywgbWV0aG9kTmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChjbHMuZmFpbHVyZUV4Y2VwdGlvbiwgZXJyKToKKyAgICAgICAgICAgICAgICB3aXRoIG1ldGhvZCgqYXJncywgKiprd2FyZ3MpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICBmdW5jKCkKKworICAgIGRlZiB0ZXN0QXNzZXJ0UmFpc2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFJhaXNlcycsIChUeXBlRXJyb3IsKSwgbGFtYmRhOiBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydeVHlwZUVycm9yIG5vdCByYWlzZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15UeXBlRXJyb3Igbm90IHJhaXNlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQgOiBvb3BzJCddKQorCisgICAgZGVmIHRlc3RBc3NlcnRSYWlzZXNSZWdleChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGVycm9yIG5vdCByYWlzZWQKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRSYWlzZXNSZWdleCcsIChUeXBlRXJyb3IsICd1bnVzZWQgcmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlR5cGVFcnJvciBub3QgcmFpc2VkJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVHlwZUVycm9yIG5vdCByYWlzZWQkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXlR5cGVFcnJvciBub3QgcmFpc2VkIDogb29wcyQnXSkKKyAgICAgICAgIyB0ZXN0IGVycm9yIHJhaXNlZCBidXQgd2l0aCB3cm9uZyBtZXNzYWdlCisgICAgICAgIGRlZiByYWlzZV93cm9uZ19tZXNzYWdlKCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0TWVzc2FnZXNDTSgnYXNzZXJ0UmFpc2VzUmVnZXgnLCAoVHlwZUVycm9yLCAncmVnZXgnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX3dyb25nX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeInJlZ2V4IiBkb2VzIG5vdCBtYXRjaCAiZm9vIiA6IG9vcHMkJ10pCisKKyAgICBkZWYgdGVzdEFzc2VydFdhcm5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zJywgKFVzZXJXYXJuaW5nLCksIGxhbWJkYTogTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXlVzZXJXYXJuaW5nIG5vdCB0cmlnZ2VyZWQkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkIDogb29wcyQnXSkKKworICAgIGRlZiB0ZXN0QXNzZXJ0V2FybnNSZWdleChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGVycm9yIG5vdCByYWlzZWQKKyAgICAgICAgc2VsZi5hc3NlcnRNZXNzYWdlc0NNKCdhc3NlcnRXYXJuc1JlZ2V4JywgKFVzZXJXYXJuaW5nLCAndW51c2VkIHJlZ2V4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGE6IE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ15Vc2VyV2FybmluZyBub3QgdHJpZ2dlcmVkJCcsICdeb29wcyQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdeVXNlcldhcm5pbmcgbm90IHRyaWdnZXJlZCA6IG9vcHMkJ10pCisgICAgICAgICMgdGVzdCB3YXJuaW5nIHJhaXNlZCBidXQgd2l0aCB3cm9uZyBtZXNzYWdlCisgICAgICAgIGRlZiByYWlzZV93cm9uZ19tZXNzYWdlKCk6CisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydE1lc3NhZ2VzQ00oJ2Fzc2VydFdhcm5zUmVnZXgnLCAoVXNlcldhcm5pbmcsICdyZWdleCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2Vfd3JvbmdfbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnXiJyZWdleCIgZG9lcyBub3QgbWF0Y2ggImZvbyIkJywgJ15vb3BzJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iJCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ14icmVnZXgiIGRvZXMgbm90IG1hdGNoICJmb28iIDogb29wcyQnXSkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfY2FzZS5weQppbmRleCBjNzRhNTM5Li5mZGIyZTc4IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2Nhc2UucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9jYXNlLnB5CkBAIC00LDYgKzQsNyBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKK2ltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgaW5zcGVjdAogCiBmcm9tIGNvcHkgaW1wb3J0IGRlZXBjb3B5CkBAIC0zODYsMjcgKzM4Nyw2MiBAQAogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vKCkuaWQoKSwgc3RyKQogCiAKLSAgICAjICJJZiByZXN1bHQgaXMgb21pdHRlZCBvciBOb25lLCBhIHRlbXBvcmFyeSByZXN1bHQgb2JqZWN0IGlzIGNyZWF0ZWQKLSAgICAjIGFuZCB1c2VkLCBidXQgaXMgbm90IG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIuIEFzIFRlc3RDYXNlIG93bnMgdGhlCisgICAgIyAiSWYgcmVzdWx0IGlzIG9taXR0ZWQgb3IgTm9uZSwgYSB0ZW1wb3JhcnkgcmVzdWx0IG9iamVjdCBpcyBjcmVhdGVkLAorICAgICMgdXNlZCwgYW5kIGlzIG1hZGUgYXZhaWxhYmxlIHRvIHRoZSBjYWxsZXIuIEFzIFRlc3RDYXNlIG93bnMgdGhlCiAgICAgIyB0ZW1wb3JhcnkgcmVzdWx0IHN0YXJ0VGVzdFJ1biBhbmQgc3RvcFRlc3RSdW4gYXJlIGNhbGxlZC4KIAogICAgIGRlZiB0ZXN0X3J1bl9fdXNlc19kZWZhdWx0VGVzdFJlc3VsdChzZWxmKToKICAgICAgICAgZXZlbnRzID0gW10KKyAgICAgICAgZGVmYXVsdFJlc3VsdCA9IExvZ2dpbmdSZXN1bHQoZXZlbnRzKQogCiAgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKICAgICAgICAgICAgICAgICBldmVudHMuYXBwZW5kKCd0ZXN0JykKIAogICAgICAgICAgICAgZGVmIGRlZmF1bHRUZXN0UmVzdWx0KHNlbGYpOgotICAgICAgICAgICAgICAgIHJldHVybiBMb2dnaW5nUmVzdWx0KGV2ZW50cykKKyAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFJlc3VsdAogCiAgICAgICAgICMgTWFrZSBydW4oKSBmaW5kIGEgcmVzdWx0IG9iamVjdCBvbiBpdHMgb3duCi0gICAgICAgIEZvbygndGVzdCcpLnJ1bigpCisgICAgICAgIHJlc3VsdCA9IEZvbygndGVzdCcpLnJ1bigpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXN1bHQsIGRlZmF1bHRSZXN1bHQpCiAgICAgICAgIGV4cGVjdGVkID0gWydzdGFydFRlc3RSdW4nLCAnc3RhcnRUZXN0JywgJ3Rlc3QnLCAnYWRkU3VjY2VzcycsCiAgICAgICAgICAgICAnc3RvcFRlc3QnLCAnc3RvcFRlc3RSdW4nXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2ZW50cywgZXhwZWN0ZWQpCiAKKworICAgICMgIlRoZSByZXN1bHQgb2JqZWN0IGlzIHJldHVybmVkIHRvIHJ1bidzIGNhbGxlciIKKyAgICBkZWYgdGVzdF9ydW5fX3JldHVybnNfZ2l2ZW5fcmVzdWx0KHNlbGYpOgorCisgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisKKyAgICAgICAgcmV0dmFsID0gRm9vKCd0ZXN0JykucnVuKHJlc3VsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXR2YWwsIHJlc3VsdCkKKworCisgICAgIyAiVGhlIHNhbWUgZWZmZWN0IFthcyBtZXRob2QgcnVuXSBtYXkgYmUgaGFkIGJ5IHNpbXBseSBjYWxsaW5nIHRoZQorICAgICMgVGVzdENhc2UgaW5zdGFuY2UuIgorICAgIGRlZiB0ZXN0X2NhbGxfX2ludm9raW5nX2FuX2luc3RhbmNlX2RlbGVnYXRlc190b19ydW4oc2VsZik6CisgICAgICAgIHJlc3VsdEluID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHJlc3VsdE91dCA9IHVuaXR0ZXN0LlRlc3RSZXN1bHQoKQorCisgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBkZWYgdGVzdChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIGRlZiBydW4oc2VsZiwgcmVzdWx0KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHJlc3VsdCwgcmVzdWx0SW4pCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdE91dAorCisgICAgICAgIHJldHZhbCA9IEZvbygndGVzdCcpKHJlc3VsdEluKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMocmV0dmFsLCByZXN1bHRPdXQpCisKKwogICAgIGRlZiB0ZXN0U2hvcnREZXNjcmlwdGlvbldpdGhvdXREb2NzdHJpbmcoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuc2hvcnREZXNjcmlwdGlvbigpKQogCkBAIC0xMTQwLDcgKzExNzYsNiBAQAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0XywgKFRydWUsKSksCiAgICAgICAgICAgICAoc2VsZi5mYWlsVW5sZXNzUmFpc2VzLCAoVHlwZUVycm9yLCBsYW1iZGEgXzogMy4xNCArICdzcGFtJykpLAogICAgICAgICAgICAgKHNlbGYuZmFpbElmLCAoRmFsc2UsKSksCi0gICAgICAgICAgICAoc2VsZi5hc3NlcnRTYW1lRWxlbWVudHMsIChbMSwgMSwgMiwgM10sIFsxLCAyLCAzXSkpLAogICAgICAgICAgICAgKHNlbGYuYXNzZXJ0RGljdENvbnRhaW5zU3Vic2V0LCAoZGljdChhPTEsIGI9MiksIGRpY3QoYT0xLCBiPTIsIGM9MykpKSwKICAgICAgICAgICAgIChzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cCwgKEtleUVycm9yLCAnZm9vJywgbGFtYmRhOiB7fVsnZm9vJ10pKSwKICAgICAgICAgICAgIChzZWxmLmFzc2VydFJlZ2V4cE1hdGNoZXMsICgnYmFyJywgJ2JhcicpKSwKQEAgLTExNDksMTggKzExODQsMjAgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgICAgIG1ldGgoKmFyZ3MpCiAKLSAgICBkZWYgdGVzdERlcHJlY2F0ZWRGYWlsTWV0aG9kcyhzZWxmKToKLSAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZXByZWNhdGVkIGZhaWwqIG1ldGhvZHMgZ2V0IHJlbW92ZWQgaW4gMy4zIiIiCisgICAgIyBkaXNhYmxlIHRoaXMgdGVzdCBmb3Igbm93LiBXaGVuIHRoZSB2ZXJzaW9uIHdoZXJlIHRoZSBmYWlsKiBtZXRob2RzIHdpbGwKKyAgICAjIGJlIHJlbW92ZWQgaXMgZGVjaWRlZCwgcmUtZW5hYmxlIGl0IGFuZCB1cGRhdGUgdGhlIHZlcnNpb24KKyAgICBkZWYgX3Rlc3REZXByZWNhdGVkRmFpbE1ldGhvZHMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCB0aGUgZGVwcmVjYXRlZCBmYWlsKiBtZXRob2RzIGdldCByZW1vdmVkIGluIDMueCIiIgogICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzoyXSA8ICgzLCAzKToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBkZXByZWNhdGVkX25hbWVzID0gWwogICAgICAgICAgICAgJ2ZhaWxJZkVxdWFsJywgJ2ZhaWxVbmxlc3NFcXVhbCcsICdmYWlsVW5sZXNzQWxtb3N0RXF1YWwnLAogICAgICAgICAgICAgJ2ZhaWxJZkFsbW9zdEVxdWFsJywgJ2ZhaWxVbmxlc3MnLCAnZmFpbFVubGVzc1JhaXNlcycsICdmYWlsSWYnLAotICAgICAgICAgICAgJ2Fzc2VydFNhbWVFbGVtZW50cycsICdhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQnLAorICAgICAgICAgICAgJ2Fzc2VydERpY3RDb250YWluc1N1YnNldCcsCiAgICAgICAgIF0KICAgICAgICAgZm9yIGRlcHJlY2F0ZWRfbmFtZSBpbiBkZXByZWNhdGVkX25hbWVzOgogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6Ci0gICAgICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCBkZXByZWNhdGVkX25hbWUpICAjIHJlbW92ZSB0aGVzZSBpbiAzLjMKKyAgICAgICAgICAgICAgICBnZXRhdHRyKHNlbGYsIGRlcHJlY2F0ZWRfbmFtZSkgICMgcmVtb3ZlIHRoZXNlIGluIDMueAogCiAgICAgZGVmIHRlc3REZWVwY29weShzZWxmKToKICAgICAgICAgIyBJc3N1ZTogNTY2MApAQCAtMTI2OCwzICsxMzA1LDExIEBACiAgICAgICAgICAgICBrbGFzcygndGVzdF9zb21ldGhpbmcnKS5ydW4ocmVzdWx0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVzdWx0LmVycm9ycyksIDEpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC50ZXN0c1J1biwgMSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0Tm9DeWNsZXMoc2VsZik6CisgICAgICAgIGNhc2UgPSB1bml0dGVzdC5UZXN0Q2FzZSgpCisgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoY2FzZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmRpc2FibGVfZ2MoKToKKyAgICAgICAgICAgIGRlbCBjYXNlCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHdyKCkpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X2xvYWRlci5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CmluZGV4IGY3ZTMxYTUuLmQxYjllZjUgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5CkBAIC0yMzksNyArMjM5LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCdzZGFzZmFzZmFzZGYnKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUpLCAiTm8gbW9kdWxlIG5hbWVkIHNkYXNmYXNmYXNkZiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCAnc2Rhc2Zhc2Zhc2RmJyIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIlRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUgZmFpbGVkIHRvIHJhaXNlIEltcG9ydEVycm9yIikKIApAQCAtNjE5LDcgKzYxOSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZXMoWydzZGFzZmFzZmFzZGYnXSkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihlKSwgIk5vIG1vZHVsZSBuYW1lZCBzZGFzZmFzZmFzZGYiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZSksICJObyBtb2R1bGUgbmFtZWQgJ3NkYXNmYXNmYXNkZiciKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCJUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lcyBmYWlsZWQgdG8gcmFpc2UgSW1wb3J0RXJyb3IiKQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0X3Byb2dyYW0ucHkKaW5kZXggZDVkMGY1YS4uOTc5NDg2OCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9wcm9ncmFtLnB5CisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfcHJvZ3JhbS5weQpAQCAtMTMxLDIzICsxMzEsNiBAQAogICAgICAgICBGYWtlUnVubmVyLnRlc3QgPSBOb25lCiAgICAgICAgIEZha2VSdW5uZXIucmFpc2VFcnJvciA9IEZhbHNlCiAKLSAgICBkZWYgdGVzdEhlbHBBbmRVbmtub3duKHNlbGYpOgotICAgICAgICBwcm9ncmFtID0gc2VsZi5wcm9ncmFtCi0gICAgICAgIGRlZiB1c2FnZUV4aXQobXNnPU5vbmUpOgotICAgICAgICAgICAgcHJvZ3JhbS5tc2cgPSBtc2cKLSAgICAgICAgICAgIHByb2dyYW0uZXhpdCA9IFRydWUKLSAgICAgICAgcHJvZ3JhbS51c2FnZUV4aXQgPSB1c2FnZUV4aXQKLQotICAgICAgICBmb3Igb3B0IGluICctaCcsICctSCcsICctLWhlbHAnOgotICAgICAgICAgICAgcHJvZ3JhbS5leGl0ID0gRmFsc2UKLSAgICAgICAgICAgIHByb2dyYW0ucGFyc2VBcmdzKFtOb25lLCBvcHRdKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2dyYW0uZXhpdCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2dyYW0ubXNnKQotCi0gICAgICAgIHByb2dyYW0ucGFyc2VBcmdzKFtOb25lLCAnLSQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2dyYW0uZXhpdCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocHJvZ3JhbS5tc2cpCi0KICAgICBkZWYgdGVzdFZlcmJvc2l0eShzZWxmKToKICAgICAgICAgcHJvZ3JhbSA9IHNlbGYucHJvZ3JhbQogCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9fX2luaXRfXy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3ZDdhZTkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9fX2luaXRfXy5weQpAQCAtMCwwICsxLDE3IEBACitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCisKK2hlcmUgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCitsb2FkZXIgPSB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlcgorCitkZWYgbG9hZF90ZXN0cygqYXJncyk6CisgICAgc3VpdGUgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQorICAgIGZvciBmbiBpbiBvcy5saXN0ZGlyKGhlcmUpOgorICAgICAgICBpZiBmbi5zdGFydHN3aXRoKCJ0ZXN0IikgYW5kIGZuLmVuZHN3aXRoKCIucHkiKToKKyAgICAgICAgICAgIG1vZG5hbWUgPSAidW5pdHRlc3QudGVzdC50ZXN0bW9jay4iICsgZm5bOi0zXQorICAgICAgICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQorICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KKyAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QobG9hZGVyLmxvYWRUZXN0c0Zyb21Nb2R1bGUobW9kdWxlKSkKKyAgICByZXR1cm4gc3VpdGUKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3N1cHBvcnQucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NzM4NzkKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay9zdXBwb3J0LnB5CkBAIC0wLDAgKzEsMjMgQEAKK2ltcG9ydCBzeXMKKworZGVmIGlzX2luc3RhbmNlKG9iaiwga2xhc3MpOgorICAgICIiIlZlcnNpb24gb2YgaXNfaW5zdGFuY2UgdGhhdCBkb2Vzbid0IGFjY2VzcyBfX2NsYXNzX18iIiIKKyAgICByZXR1cm4gaXNzdWJjbGFzcyh0eXBlKG9iaiksIGtsYXNzKQorCisKK2NsYXNzIFNvbWVDbGFzcyhvYmplY3QpOgorICAgIGNsYXNzX2F0dHJpYnV0ZSA9IE5vbmUKKworICAgIGRlZiB3aWJibGUoc2VsZik6CisgICAgICAgIHBhc3MKKworCitjbGFzcyBYKG9iamVjdCk6CisgICAgcGFzcworCisKK2RlZiBleGFtaW5lX3dhcm5pbmdzKGZ1bmMpOgorICAgIGRlZiB3cmFwcGVyKCk6CisgICAgICAgIHdpdGggY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHdzOgorICAgICAgICAgICAgZnVuYyh3cykKKyAgICByZXR1cm4gd3JhcHBlcgpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGNhbGxhYmxlLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdGNhbGxhYmxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMmRkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0Y2FsbGFibGUucHkKQEAgLTAsMCArMSwxNDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTIgTWljaGFlbCBGb29yZCAmIHRoZSBtb2NrIHRlYW0KKyMgRS1tYWlsOiBmdXp6eW1hbiBBVCB2b2lkc3BhY2UgRE9UIG9yZyBET1QgdWsKKyMgaHR0cDovL3d3dy52b2lkc3BhY2Uub3JnLnVrL3B5dGhvbi9tb2NrLworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBpc19pbnN0YW5jZSwgWCwgU29tZUNsYXNzCisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAorICAgIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssCisgICAgTm9uQ2FsbGFibGVNb2NrLCBwYXRjaCwgY3JlYXRlX2F1dG9zcGVjLAorICAgIENhbGxhYmxlTWl4aW4KKykKKworCisKK2NsYXNzIFRlc3RDYWxsYWJsZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgYXNzZXJ0Tm90Q2FsbGFibGUoc2VsZiwgbW9jayk6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNfaW5zdGFuY2UobW9jaywgQ2FsbGFibGVNaXhpbikpCisKKworICAgIGRlZiB0ZXN0X25vbl9jYWxsYWJsZShzZWxmKToKKyAgICAgICAgZm9yIG1vY2sgaW4gTm9uQ2FsbGFibGVNYWdpY01vY2soKSwgTm9uQ2FsbGFibGVNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ19fY2FsbF9fJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1vY2suX19jbGFzc19fLl9fbmFtZV9fLCByZXByKG1vY2spKQorCisKKyAgICBkZWYgdGVzdF9oZWlyYXJjaHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hZ2ljTW9jaywgTW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2spKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBvbmUgPSBOb25DYWxsYWJsZU1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKG9uZS5vbmUpLCBNb2NrKSkKKworICAgICAgICB0d28gPSBOb25DYWxsYWJsZU1hZ2ljTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUodHdvLnR3byksIE1hZ2ljTW9jaykpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzZXMoc2VsZik6CisgICAgICAgIGNsYXNzIE1vY2tTdWIoTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgb25lID0gTW9ja1N1YigpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHR5cGUob25lLm9uZSksIE1vY2tTdWIpKQorCisgICAgICAgIGNsYXNzIE1hZ2ljU3ViKE1hZ2ljTW9jayk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgdHdvID0gTWFnaWNTdWIoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHR3by50d28pLCBNYWdpY1N1YikpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWMoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXQoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlY19zZXQ9VHJ1ZSkKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocGF0Y2hlci5zdG9wKQorCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUoaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfaW5zdGFuY2Uoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlYz1YKCkpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHBhdGNoZXIuc3RvcCkKKworICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfc3BlY19zZXRfaW5zdGFuY2Uoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuWCcgJSBfX25hbWVfXywgc3BlY19zZXQ9WCgpKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwYXRjaGVyLnN0b3ApCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RDYWxsYWJsZShtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfY2FsbGFibGVfY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIENhbGxhYmxlWChYKToKKyAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgU3ViKENhbGxhYmxlWCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgTXVsdGkoU29tZUNsYXNzLCBTdWIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBhcmcgaW4gJ3NwZWMnLCAnc3BlY19zZXQnOgorICAgICAgICAgICAgZm9yIEtsYXNzIGluIENhbGxhYmxlWCwgU3ViLCBNdWx0aToKKyAgICAgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5YJyAlIF9fbmFtZV9fLCAqKnthcmc6IEtsYXNzfSkgYXMgbW9jazoKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtb2NrKCkKKyAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGluc3RhbmNlLCBNYWdpY01vY2spKQorICAgICAgICAgICAgICAgICAgICAjIGluaGVyaXRlZCBzcGVjCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvb2JhcmJheicpCisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gaW5zdGFuY2UoKQorICAgICAgICAgICAgICAgICAgICAjIGluc3RhbmNlIGlzIGNhbGxhYmxlLCByZXN1bHQgaGFzIG5vIHNwZWMKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCgzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgMiwgMSkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmZvbygzLCAyLCAxKQorICAgICAgICAgICAgICAgICAgICByZXN1bHQuZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDMsIDIsIDEpCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvcHNlYyhzZWxmKToKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhYKQorICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoWCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9hdXRvc3BlY19pbnN0YW5jZShzZWxmKToKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhTb21lQ2xhc3MsIGluc3RhbmNlPVRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrLndpYmJsZSgpCisgICAgICAgIG1vY2sud2liYmxlLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sud2liYmxlLCAnc29tZScsICAnYXJncycpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RoZWxwZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiZmIyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0aGVscGVycy5weQpAQCAtMCwwICsxLDg4OSBAQAoraW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgKAorICAgIGNhbGwsIF9DYWxsLCBjcmVhdGVfYXV0b3NwZWMsIE1hZ2ljTW9jaywKKyAgICBNb2NrLCBBTlksIF9DYWxsTGlzdCwgcGF0Y2gsIFByb3BlcnR5TW9jaworKQorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQorCitjbGFzcyBTb21lQ2xhc3Mob2JqZWN0KToKKyAgICBkZWYgb25lKHNlbGYsIGEsIGIpOgorICAgICAgICBwYXNzCisgICAgZGVmIHR3byhzZWxmKToKKyAgICAgICAgcGFzcworICAgIGRlZiB0aHJlZShzZWxmLCBhPU5vbmUpOgorICAgICAgICBwYXNzCisKKworCitjbGFzcyBBbnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2FueShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBTlksIG9iamVjdCgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jayhBTlkpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKEFOWSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soZm9vPUFOWSkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoZm9vPUFOWSkKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihBTlkpLCAnPEFOWT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihBTlkpLCAnPEFOWT4nKQorCisKKyAgICBkZWYgdGVzdF9hbnlfYW5kX2RhdGV0aW1lKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soZGF0ZXRpbWUubm93KCksIGZvbz1kYXRldGltZS5ub3coKSkKKworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aChBTlksIGZvbz1BTlkpCisKKworICAgIGRlZiB0ZXN0X2FueV9tb2NrX2NhbGxzX2NvbXBhcmlzb25fb3JkZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZCA9IGRhdGV0aW1lLm5vdygpCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIGZvciBkIGluIGRhdGV0aW1lLm5vdygpLCBGb28oKToKKyAgICAgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKyAgICAgICAgICAgIG1vY2soZCwgZm9vPWQsIGJhcj1kKQorICAgICAgICAgICAgbW9jay5tZXRob2QoZCwgemluZ2E9ZCwgYWxwaGE9ZCkKKyAgICAgICAgICAgIG1vY2soKS5tZXRob2QoYTE9ZCwgejk5PWQpCisKKyAgICAgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgICAgIGNhbGwoQU5ZLCBmb289QU5ZLCBiYXI9QU5ZKSwKKyAgICAgICAgICAgICAgICBjYWxsLm1ldGhvZChBTlksIHppbmdhPUFOWSwgYWxwaGE9QU5ZKSwKKyAgICAgICAgICAgICAgICBjYWxsKCksIGNhbGwoKS5tZXRob2QoYTE9QU5ZLCB6OTk9QU5ZKQorICAgICAgICAgICAgXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgbW9jay5tb2NrX2NhbGxzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorCisKKworY2xhc3MgQ2FsbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2NhbGwoc2VsZik6CisgICAgICAgIGthbGwgPSBfQ2FsbCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCgpLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCh7fSwpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCB7fSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKCksIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdmb28nLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJ2JheicsIHt9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCdzcGFtJywgKCksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKDEsIDIsIDMpLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKCgxLCAyLCAzKSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCAzKSwge30pKSkKKworICAgICAgICBrYWxsID0gX0NhbGwoKCgxLCAyLCA0KSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnJywgKDEsIDIsIDMpKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgMyksIHt9KSkpCisKKyAgICAgICAga2FsbCA9IF9DYWxsKCgnZm9vJywgKDEsIDIsIDQpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgX0NhbGwoKCcnLCAoMSwgMiwgNCkpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgxLCAyLCA0KSwge30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChrYWxsLCBfQ2FsbCgoJ2JhcicsICgxLCAyLCA0KSkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGthbGwsIF9DYWxsKCgnYmFyJywgKDEsIDIsIDQpLCB7fSkpKQorCisgICAgICAgIGthbGwgPSBfQ2FsbCgoeydhJzogM30sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoJycsICgpLCB7J2EnOiAzfSkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwsIF9DYWxsKCgnJywgeydhJzogM30pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrYWxsLCBfQ2FsbCgoKCksIHsnYSc6IDN9KSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2FsbCwgX0NhbGwoKHsnYSc6IDN9LCkpKQorCisKKyAgICBkZWYgdGVzdF9lbXB0eV9fQ2FsbChzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgoKSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICh7fSwpKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9lbXB0eV9jYWxsKHNlbGYpOgorICAgICAgICBhcmdzID0gX0NhbGwoKCdmb28nLCAoKSwge30pKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCgpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKCksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoe30sKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoJ2JhcicsKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoJ2JhcicsICgpKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoJ2JhcicsIHt9KSkKKworCisgICAgZGVmIHRlc3RfY2FsbF93aXRoX2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKDEsIDIsIDMpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCgxLCAyLCAzKSwge30pKQorCisKKyAgICBkZWYgdGVzdF9uYW1lZF9jYWxsX3dpdGhfYXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgnZm9vJywgKDEsIDIsIDMpLCB7fSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoJ2ZvbycsICgxLCAyLCAzKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKCdmb28nLCAoMSwgMiwgMyksIHt9KSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoMSwgMiwgMyksKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhcmdzLCAoKDEsIDIsIDMpLCB7fSkpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfd2l0aF9rd2FyZ3Moc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKCksIGRpY3QoYT0zLCBiPTQpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsIChkaWN0KGE9MywgYj00KSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCksIGRpY3QoYT0zLCBiPTQpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCAoKCksIGRpY3QoYT0zLCBiPTQpKSkKKworCisgICAgZGVmIHRlc3RfbmFtZWRfY2FsbF93aXRoX2t3YXJncyhzZWxmKToKKyAgICAgICAgYXJncyA9IF9DYWxsKCgnZm9vJywgKCksIGRpY3QoYT0zLCBiPTQpKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgZGljdChhPTMsIGI9NCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3MsICgnZm9vJywgKCksIGRpY3QoYT0zLCBiPTQpKSkKKworICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsIChkaWN0KGE9MywgYj00KSwpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGFyZ3MsICgoKSwgZGljdChhPTMsIGI9NCkpKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYXJnc19jYWxsX2VtcHR5X25hbWUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKDEsIDIsIDMpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgY2FsbCgxLCAyLCAzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEsIDIsIDMpLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbCgxLCAyLCAzKSBpbiBbYXJnc10pCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoX0NhbGwoKCgxLCAyLCAzKSwpKSwgY2FsbCgxLCAyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShfQ2FsbCgoKDEsIDIsIDMpLCkpICE9IGNhbGwoMSwgMiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfQ2FsbCgoKDEsIDIpLCB7fSkpICE9IGNhbGwoMSwgMiwgMykpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfbm9uX3R1cGxlcyhzZWxmKToKKyAgICAgICAga2FsbCA9IF9DYWxsKCgoMSwgMiwgMyksKSkKKyAgICAgICAgZm9yIHZhbHVlIGluIDEsIE5vbmUsIHNlbGYsIGludDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoa2FsbCwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGthbGwgPT0gdmFsdWUpCisKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihfQ2FsbCgpKSwgJ2NhbGwoKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihfQ2FsbCgoJ2ZvbycsKSkpLCAnY2FsbC5mb28oKScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgoMSwgMiwgMyksIHsnYSc6ICdiJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwoMSwgMiwgMywgYT0nYicpIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKF9DYWxsKCgnYmFyJywgKDEsIDIsIDMpLCB7J2EnOiAnYid9KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsLmJhcigxLCAyLCAzLCBhPSdiJykiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKSwgJ2NhbGwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjYWxsKSwgJ2NhbGwnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKCkpLCAnY2FsbCgpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGNhbGwoMSkpLCAnY2FsbCgxKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKHp6PSd0aGluZycpKSwgImNhbGwoeno9J3RoaW5nJykiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKCkuZm9vKSwgJ2NhbGwoKS5mb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY2FsbCgxKS5mb28uYmFyKGE9MykuYmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhbGwoKS5mb28uYmFyKCkuYmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKGNhbGwoKS5mb28oMSwgMiwgYT0zKSksCisgICAgICAgICAgICAiY2FsbCgpLmZvbygxLCAyLCBhPTMpIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKCkoKSksICJjYWxsKCkoKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjYWxsKDEpKDIpKSwgImNhbGwoKSgyKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICByZXByKGNhbGwoKSgpLmJhcigpLmJhei5iZWVwKDEpKSwKKyAgICAgICAgICAgICJjYWxsKCkoKS5iYXIoKS5iYXouYmVlcCgxKSIKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoKSwgKCcnLCAoKSwge30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoJ2ZvbycsICdiYXInLCBvbmU9MywgdHdvPTQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnJywgKCdmb28nLCAnYmFyJyksIHsnb25lJzogMywgJ3R3byc6IDR9KSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMiwgMykKKyAgICAgICAgbW9jayhhPTMsIGI9NikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFtjYWxsKDEsIDIsIDMpLCBjYWxsKGE9MywgYj02KV0pCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfY2FsbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsLmZvbygxKSwgKCdmb28nLCAoMSwpLCB7fSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbC5iYXIuYmF6KGZpc2g9J2VnZ3MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ2Jhci5iYXonLCAoKSwgeydmaXNoJzogJ2VnZ3MnfSkpCisKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLmZvbygxLCAyICwzKQorICAgICAgICBtb2NrLmJhci5iYXooYT0zLCBiPTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgW2NhbGwuZm9vKDEsIDIsIDMpLCBjYWxsLmJhci5iYXooYT0zLCBiPTYpXSkKKworCisgICAgZGVmIHRlc3RfZXh0ZW5kZWRfY2FsbChzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gY2FsbCgxKS5mb28oMikuYmFyKDMsIGE9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsICgnKCkuZm9vKCkuYmFyJywgKDMsKSwgZGljdChhPTQpKSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyLCBhPTMsIGI9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJncywgY2FsbCgxLCAyLCBhPTMsIGI9NCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobW9jay5jYWxsX2FyZ3MsIGNhbGwoMSwgMiwgMykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbY2FsbCgxLCAyLCBhPTMsIGI9NCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwoMSwgMiwgYT0zLCBiPTQpXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jay5mb28oMSkuYmFyKCkoKS5iYXouYmVlcChhPTYpCisKKyAgICAgICAgbGFzdF9jYWxsID0gY2FsbC5mb28oMSkuYmFyKCkoKS5iYXouYmVlcChhPTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzWy0xXSwgbGFzdF9jYWxsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgbGFzdF9jYWxsLmNhbGxfbGlzdCgpKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2xpc3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCgxKS5jYWxsX2xpc3QoKSwgbW9jay5tb2NrX2NhbGxzKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKDEpLm1ldGhvZCgyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhbGwoMSkubWV0aG9kKDIpLmNhbGxfbGlzdCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19jYWxscykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygxKS5tZXRob2QoMikoMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxsKDEpLm1ldGhvZCgyKSgzKS5jYWxsX2xpc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm1vY2tfY2FsbHMpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIGludChtb2NrKDEpLm1ldGhvZCgyKSgzKS5mb28uYmFyLmJheig0KSg1KSkKKyAgICAgICAga2FsbCA9IGNhbGwoMSkubWV0aG9kKDIpKDMpLmZvby5iYXIuYmF6KDQpKDUpLl9faW50X18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGthbGwuY2FsbF9saXN0KCksIG1vY2subW9ja19jYWxscykKKworCisgICAgZGVmIHRlc3RfY2FsbF9hbnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FsbCwgQU5ZKQorCisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICBpbnQobSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm1vY2tfY2FsbHMsIFtBTlldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtBTlldLCBtLm1vY2tfY2FsbHMpCisKKworICAgIGRlZiB0ZXN0X3R3b19hcmdzX2NhbGwoc2VsZik6CisgICAgICAgIGFyZ3MgPSBfQ2FsbCgoKDEsIDIpLCB7J2EnOiAzfSksIHR3bz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihhcmdzKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCAoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1sxXSwgeydhJzogM30pCisKKyAgICAgICAgb3RoZXJfYXJncyA9IF9DYWxsKCgoMSwgMiksIHsnYSc6IDN9KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzLCBvdGhlcl9hcmdzKQorCisKK2NsYXNzIFNwZWNTaWduYXR1cmVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBfY2hlY2tfc29tZWNsYXNzX21vY2soc2VsZiwgbW9jayk6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnZm9vJykKKyAgICAgICAgbW9jay5vbmUoMSwgMikKKyAgICAgICAgbW9jay5vbmUuYXNzZXJ0X2NhbGxlZF93aXRoKDEsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLm9uZS5hc3NlcnRfY2FsbGVkX3dpdGgsIDMsIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5vbmUsIDEpCisKKyAgICAgICAgbW9jay50d28oKQorICAgICAgICBtb2NrLnR3by5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay50d28uYXNzZXJ0X2NhbGxlZF93aXRoLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2sudHdvLCAxKQorCisgICAgICAgIG1vY2sudGhyZWUoKQorICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnRocmVlLmFzc2VydF9jYWxsZWRfd2l0aCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLnRocmVlLCAzLCAyKQorCisgICAgICAgIG1vY2sudGhyZWUoMSkKKyAgICAgICAgbW9jay50aHJlZS5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKworICAgICAgICBtb2NrLnRocmVlKGE9MSkKKyAgICAgICAgbW9jay50aHJlZS5hc3NlcnRfY2FsbGVkX3dpdGgoYT0xKQorCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgZm9yIHNwZWMgaW4gKFNvbWVDbGFzcywgU29tZUNsYXNzKCkpOgorICAgICAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjKQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmLCByZXR1cm5fdmFsdWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCAnZm9vJykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKEZvbywgcmV0dXJuX3ZhbHVlPSdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3Jlc2V0X21vY2soc2VsZik6CisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoaW50KQorICAgICAgICBpbnQobSkKKyAgICAgICAgbS5yZXNldF9tb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9faW50X18uY2FsbF9jb3VudCwgMCkKKworCisgICAgZGVmIHRlc3RfbW9ja2luZ191bmJvdW5kX21ldGhvZHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGZvbyhzZWxmLCBmb28pOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcCA9IHBhdGNoLm9iamVjdChGb28sICdmb28nKQorICAgICAgICBtb2NrX2ZvbyA9IHAuc3RhcnQoKQorICAgICAgICBGb28oKS5mb28oMSkKKworICAgICAgICBtb2NrX2Zvby5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX3VuYm91bmRfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgIyBzZWUgbW9jayBpc3N1ZSAxMjgKKyAgICAgICAgIyB0aGlzIGlzIGV4cGVjdGVkIHRvIGZhaWwgdW50aWwgdGhlIGlzc3VlIGlzIGZpeGVkCisgICAgICAgIHJldHVybgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBmb28oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGtsYXNzID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgaW5zdGFuY2UgPSBrbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UuZm9vLCAxKQorCisgICAgICAgICMgTm90ZTogbm8gdHlwZSBjaGVja2luZyBvbiB0aGUgInNlbGYiIHBhcmFtZXRlcgorICAgICAgICBrbGFzcy5mb28oMSkKKyAgICAgICAga2xhc3MuZm9vLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGtsYXNzLmZvbykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2tleXdvcmRfYXJndW1lbnRzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGEgPSAzCisgICAgICAgIG0gPSBjcmVhdGVfYXV0b3NwZWMoRm9vLCBhPSczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmEsICczJykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX2tleXdvcmRfb25seV9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGRlZiBmb28oYSwgKiwgYj1Ob25lKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtID0gY3JlYXRlX2F1dG9zcGVjKGZvbykKKyAgICAgICAgbSgxKQorICAgICAgICBtLmFzc2VydF9jYWxsZWRfd2l0aCgxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG0sIDEsIDIpCisKKyAgICAgICAgbSgyLCBiPTMpCisgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF93aXRoKDIsIGI9MykKKworCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fYXNfaW5zdGFuY2VfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICBvYmogPSBTb21lQ2xhc3MoKQorICAgICAgICBkZWYgZihhKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgb2JqLmYgPSBmCisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhvYmopCisgICAgICAgIG1vY2suZignYmluZycpCisgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoJ2JpbmcnKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgICMgYmVjYXVzZSBzcGVjIGFzIGEgbGlzdCBvZiBzdHJpbmdzIGluIHRoZSBtb2NrIGNvbnN0cnVjdG9yIG1lYW5zCisgICAgICAgICMgc29tZXRoaW5nIHZlcnkgZGlmZmVyZW50IHdlIHRyZWF0IGEgbGlzdCBpbnN0YW5jZSBhcyB0aGUgdHlwZS4KKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhbXSkKKyAgICAgICAgbW9jay5hcHBlbmQoJ2ZvbycpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgnZm9vJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2ZvbycpCisKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSBbXQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrLmZvby5hcHBlbmQoMykKKyAgICAgICAgbW9jay5mb28uYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5mb28sICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIoU29tZUNsYXNzKToKKyAgICAgICAgICAgIGF0dHIgPSBTb21lQ2xhc3MoKQorCisgICAgICAgIHN1Yl9tb2NrID0gY3JlYXRlX2F1dG9zcGVjKFN1YikKKworICAgICAgICBmb3IgbW9jayBpbiAoc3ViX21vY2ssIHN1Yl9tb2NrLmF0dHIpOgorICAgICAgICAgICAgc2VsZi5fY2hlY2tfc29tZWNsYXNzX21vY2sobW9jaykKKworCisgICAgZGVmIHRlc3RfYnVpbHRpbl9mdW5jdGlvbnNfdHlwZXMoc2VsZik6CisgICAgICAgICMgd2UgY291bGQgcmVwbGFjZSBidWlsdGluIGZ1bmN0aW9ucyAvIG1ldGhvZHMgd2l0aCBhIGZ1bmN0aW9uCisgICAgICAgICMgd2l0aCAqYXJncyAvICoqa3dhcmdzIHNpZ25hdHVyZS4gVXNpbmcgdGhlIGJ1aWx0aW4gbWV0aG9kIHR5cGUKKyAgICAgICAgIyBhcyBhIHNwZWMgc2VlbXMgdG8gd29yayBmYWlybHkgd2VsbCB0aG91Z2guCisgICAgICAgIGNsYXNzIEJ1aWx0aW5TdWJjbGFzcyhsaXN0KToKKyAgICAgICAgICAgIGRlZiBiYXIoc2VsZiwgYXJnKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzb3J0ZWQgPSBzb3J0ZWQKKyAgICAgICAgICAgIGF0dHIgPSB7fQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQnVpbHRpblN1YmNsYXNzKQorICAgICAgICBtb2NrLmFwcGVuZCgzKQorICAgICAgICBtb2NrLmFwcGVuZC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYXBwZW5kLCAnZm9vJykKKworICAgICAgICBtb2NrLmJhcignZm9vJykKKyAgICAgICAgbW9jay5iYXIuYXNzZXJ0X2NhbGxlZF93aXRoKCdmb28nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suYmFyLCAnZm9vJywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLmJhciwgJ2ZvbycpCisKKyAgICAgICAgbW9jay5zb3J0ZWQoWzEsIDJdKQorICAgICAgICBtb2NrLnNvcnRlZC5hc3NlcnRfY2FsbGVkX3dpdGgoWzEsIDJdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5zb3J0ZWQsICdmb28nKQorCisgICAgICAgIG1vY2suYXR0ci5wb3AoMykKKyAgICAgICAgbW9jay5hdHRyLnBvcC5hc3NlcnRfY2FsbGVkX3dpdGgoMykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suYXR0ciwgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxscyhzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViKFNvbWVDbGFzcyk6CisgICAgICAgICAgICBhdHRyID0gU29tZUNsYXNzKCkKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKFN1YikKKyAgICAgICAgbW9jay5vbmUoMSwgMikKKyAgICAgICAgbW9jay50d28oKQorICAgICAgICBtb2NrLnRocmVlKDMpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbY2FsbC5vbmUoMSwgMiksIGNhbGwudHdvKCksIGNhbGwudGhyZWUoMyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tZXRob2RfY2FsbHMsIGV4cGVjdGVkKQorCisgICAgICAgIG1vY2suYXR0ci5vbmUoMSwgMikKKyAgICAgICAgbW9jay5hdHRyLnR3bygpCisgICAgICAgIG1vY2suYXR0ci50aHJlZSgzKQorCisgICAgICAgIGV4cGVjdGVkLmV4dGVuZCgKKyAgICAgICAgICAgIFtjYWxsLmF0dHIub25lKDEsIDIpLCBjYWxsLmF0dHIudHdvKCksIGNhbGwuYXR0ci50aHJlZSgzKV0KKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBleHBlY3RlZCkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgQnVpbHRpblN1YmNsYXNzKGxpc3QpOgorICAgICAgICAgICAgYXR0ciA9IHt9CisKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhCdWlsdGluU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW50LCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgbW9jay5hdHRyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrWydmb28nXSwgTWFnaWNNb2NrKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5hdHRyWydmb28nXSwgTWFnaWNNb2NrKQorCisKKyAgICBkZWYgdGVzdF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgY2xhc3MgU3ViKFNvbWVDbGFzcyk6CisgICAgICAgICAgICBhdHRyID0gU29tZUNsYXNzKCkKKworICAgICAgICBmb3Igc3BlYyBpbiAoU3ViLCBTdWIoKSk6CisgICAgICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKHNwZWMsIHNwZWNfc2V0PVRydWUpCisgICAgICAgICAgICBzZWxmLl9jaGVja19zb21lY2xhc3NfbW9jayhtb2NrKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ2ZvbycsICdiYXInKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG1vY2suYXR0ciwgJ2ZvbycsICdiYXInKQorCisKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9ycyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKGNscywgYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGcoYSwgYik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJhcihGb28pOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEJheihTb21lQ2xhc3MsIEJhcik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZm9yIHNwZWMgaW4gKEZvbywgRm9vKCksIEJhciwgQmFyKCksIEJheiwgQmF6KCkpOgorICAgICAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhzcGVjKQorICAgICAgICAgICAgbW9jay5mKDEsIDIpCisgICAgICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMikKKworICAgICAgICAgICAgbW9jay5nKDMsIDQpCisgICAgICAgICAgICBtb2NrLmcuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMywgNCkKKworCisgICAgZGVmIHRlc3RfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBmb28gPSAnZm9vIGJhciBiYXonCisgICAgICAgICAgICBiYXIgPSBmb28KKworICAgICAgICBBLkIgPSBBCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQSkKKworICAgICAgICBtb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLkIuY2FsbGVkKQorCisgICAgICAgIG1vY2suYSgpCisgICAgICAgIG1vY2suQi5hKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW2NhbGwuYSgpLCBjYWxsLkIuYSgpXSkKKworICAgICAgICBzZWxmLmFzc2VydElzKEEuZm9vLCBBLmJhcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2NrLmZvbywgbW9jay5iYXIpCisgICAgICAgIG1vY2suZm9vLmxvd2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYmFyLmxvd2VyLmFzc2VydF9jYWxsZWRfd2l0aCkKKworCisgICAgZGVmIHRlc3Rfc3BlY19pbmhlcml0YW5jZV9mb3JfY2xhc3NlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgYShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgICAgICAgICBkZWYgZihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoY2xhc3NfbW9jaywgY2xhc3NfbW9jaygpKQorCisgICAgICAgIGZvciB0aGlzX21vY2sgaW4gY2xhc3NfbW9jaywgY2xhc3NfbW9jaygpOgorICAgICAgICAgICAgdGhpc19tb2NrLmEoKQorICAgICAgICAgICAgdGhpc19tb2NrLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGhpc19tb2NrLmEsICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIHRoaXNfbW9jaywgJ2InKQorCisgICAgICAgIGluc3RhbmNlX21vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKCkpCisgICAgICAgIGluc3RhbmNlX21vY2suYSgpCisgICAgICAgIGluc3RhbmNlX21vY2suYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGluc3RhbmNlX21vY2suYSwgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBpbnN0YW5jZV9tb2NrLCAnYicpCisKKyAgICAgICAgIyBUaGUgcmV0dXJuIHZhbHVlIGlzbid0IGlzbid0IGNhbGxhYmxlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2VfbW9jaykKKworICAgICAgICBpbnN0YW5jZV9tb2NrLkJhci5mKCkKKyAgICAgICAgaW5zdGFuY2VfbW9jay5CYXIuZi5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2VfbW9jay5CYXIsICdnJykKKworICAgICAgICBpbnN0YW5jZV9tb2NrLkJhcigpLmYoKQorICAgICAgICBpbnN0YW5jZV9tb2NrLkJhcigpLmYuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIGluc3RhbmNlX21vY2suQmFyKCksICdnJykKKworCisgICAgZGVmIHRlc3RfaW5oZXJpdChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBhID0gMworCisgICAgICAgIEZvby5Gb28gPSBGb28KKworICAgICAgICAjIGNsYXNzCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBpbnN0YW5jZSA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2UsICdiJykKKworICAgICAgICBhdHRyX2luc3RhbmNlID0gbW9jay5Gb28oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgYXR0cl9pbnN0YW5jZSwgJ2InKQorCisgICAgICAgICMgaW5zdGFuY2UKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhGb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorCisgICAgICAgICMgYXR0cmlidXRlIGluc3RhbmNlCisgICAgICAgIGNhbGxfcmVzdWx0ID0gbW9jay5Gb28oKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgY2FsbF9yZXN1bHQsICdiJykKKworCisgICAgZGVmIHRlc3RfYnVpbHRpbnMoc2VsZik6CisgICAgICAgICMgdXNlZCB0byBmYWlsIHdpdGggaW5maW5pdGUgcmVjdXJzaW9uCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxKQorCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhpbnQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygnZm9vJykKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHN0cikKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHt9KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoZGljdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKFtdKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMobGlzdCkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKHNldCgpKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoc2V0KQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoMS4wKQorICAgICAgICBjcmVhdGVfYXV0b3NwZWMoZmxvYXQpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYygxaikKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKGNvbXBsZXgpCisgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhGYWxzZSkKKyAgICAgICAgY3JlYXRlX2F1dG9zcGVjKFRydWUpCisKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBkZWYgZihhLCBiKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCgxLCAyKQorCisgICAgICAgIGYuZiA9IGYKKyAgICAgICAgbW9jayA9IGNyZWF0ZV9hdXRvc3BlYyhmKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZikKKyAgICAgICAgbW9jay5mKDMsIDQpCisgICAgICAgIG1vY2suZi5hc3NlcnRfY2FsbGVkX3dpdGgoMywgNCkKKworCisgICAgZGVmIHRlc3Rfc2tpcF9hdHRyaWJ1dGVlcnJvcnMoc2VsZik6CisgICAgICAgIGNsYXNzIFJhaXNlcihvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZ2V0X18oc2VsZiwgb2JqLCB0eXBlPU5vbmUpOgorICAgICAgICAgICAgICAgIGlmIG9iaiBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcignQ2FuIG9ubHkgYmUgYWNjZXNzZWQgdmlhIGFuIGluc3RhbmNlJykKKworICAgICAgICBjbGFzcyBSYWlzZXJDbGFzcyhvYmplY3QpOgorICAgICAgICAgICAgcmFpc2VyID0gUmFpc2VyKCkKKworICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIGV4aXN0aW5nKGEsIGIpOgorICAgICAgICAgICAgICAgIHJldHVybiBhICsgYgorCisgICAgICAgIHMgPSBjcmVhdGVfYXV0b3NwZWMoUmFpc2VyQ2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhIHg6IHMuZXhpc3RpbmcoMSwgMiwgMykpCisgICAgICAgIHMuZXhpc3RpbmcoMSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogcy5ub25leGlzdGluZykKKworICAgICAgICAjIGNoZWNrIHdlIGNhbiBmZXRjaCB0aGUgcmFpc2VyIGF0dHJpYnV0ZSBhbmQgaXQgaGFzIG5vIHNwZWMKKyAgICAgICAgb2JqID0gcy5yYWlzZXIKKyAgICAgICAgb2JqLmZvbywgb2JqLmJhcgorCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEsIGI9Myk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKyAgICAgICAgbW9jaygxKQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKDEpCisKKyAgICAgICAgbW9jayg0LCA1KQorICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCg0LCA1KQorCisKKyAgICBkZWYgdGVzdF9jbGFzc193aXRoX25vX2luaXQoc2VsZik6CisgICAgICAgICMgdGhpcyB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbgorICAgICAgICAjIGR1ZSB0byB0cnlpbmcgdG8gZ2V0IGEgc2lnbmF0dXJlIGZyb20gb2JqZWN0Ll9faW5pdF9fCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgcGFzcworICAgICAgICBjcmVhdGVfYXV0b3NwZWMoRm9vKQorCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfY2FsbGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIENhbGxhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gY3JlYXRlX2F1dG9zcGVjKENhbGxhYmxlKQorICAgICAgICBtb2NrKCkKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ2EnKQorCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaW5zdGFuY2UpCisgICAgICAgIGluc3RhbmNlKGE9J2EnKQorICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChhPSdhJykKKyAgICAgICAgaW5zdGFuY2UoJ2EnKQorICAgICAgICBpbnN0YW5jZS5hc3NlcnRfY2FsbGVkX3dpdGgoJ2EnKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoQ2FsbGFibGUoKSkKKyAgICAgICAgbW9jayhhPSdhJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChhPSdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBtb2NrKCdhJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoJ2EnKQorCisKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfbm9uY2FsbGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIE5vbkNhbGxhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoTm9uQ2FsbGFibGUpCisgICAgICAgIGluc3RhbmNlID0gbW9jaygpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2ssICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpbnN0YW5jZSwgJ2EnKQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoTm9uQ2FsbGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2ssICdhJykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2F1dG9zcGVjX25vbmUoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgYmFyID0gTm9uZQorCisgICAgICAgIG1vY2sgPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBub25lID0gbW9jay5iYXIKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG5vbmUsIHR5cGUoTm9uZSkpCisKKyAgICAgICAgbm9uZS5mb28oKQorICAgICAgICBub25lLmZvby5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2Z1bmN0aW9uc193aXRoX3NlbGZfaW5fb2RkX3BsYWNlKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBmKGEsIHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBhID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgYS5mKHNlbGY9MTApCisgICAgICAgIGEuZi5hc3NlcnRfY2FsbGVkX3dpdGgoc2VsZj0xMCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfcHJvcGVydHkoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgZm9vKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAzCisKKyAgICAgICAgZm9vID0gY3JlYXRlX2F1dG9zcGVjKEZvbykKKyAgICAgICAgbW9ja19wcm9wZXJ0eSA9IGZvby5mb28KKworICAgICAgICAjIG5vIHNwZWMgb24gcHJvcGVydGllcworICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrX3Byb3BlcnR5LCBNYWdpY01vY2spKQorICAgICAgICBtb2NrX3Byb3BlcnR5KDEsIDIsIDMpCisgICAgICAgIG1vY2tfcHJvcGVydHkuYWJjKDQsIDUsIDYpCisgICAgICAgIG1vY2tfcHJvcGVydHkuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICAgICAgbW9ja19wcm9wZXJ0eS5hYmMuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoNCwgNSwgNikKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfc2xvdHMoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgX19zbG90c19fID0gWydhJ10KKworICAgICAgICBmb28gPSBjcmVhdGVfYXV0b3NwZWMoRm9vKQorICAgICAgICBtb2NrX3Nsb3QgPSBmb28uYQorCisgICAgICAgICMgbm8gc3BlYyBvbiBzbG90cworICAgICAgICBtb2NrX3Nsb3QoMSwgMiwgMykKKyAgICAgICAgbW9ja19zbG90LmFiYyg0LCA1LCA2KQorICAgICAgICBtb2NrX3Nsb3QuYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoMSwgMiwgMykKKyAgICAgICAgbW9ja19zbG90LmFiYy5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCg0LCA1LCA2KQorCisKK2NsYXNzIFRlc3RDYWxsTGlzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hcmdzX2xpc3RfY29udGFpbnNfY2FsbF9saXN0KHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmNhbGxfYXJnc19saXN0LCBfQ2FsbExpc3QpCisKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygzLCA0KQorICAgICAgICBtb2NrKGI9NikKKworICAgICAgICBmb3Iga2FsbCBpbiBjYWxsKDEsIDIpLCBjYWxsKGE9MyksIGNhbGwoMywgNCksIGNhbGwoYj02KToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShrYWxsIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKyAgICAgICAgY2FsbHMgPSBbY2FsbChhPTMpLCBjYWxsKDMsIDQpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgY2FsbHMgPSBbY2FsbCgxLCAyKSwgY2FsbChhPTMpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgY2FsbHMgPSBbY2FsbCgzLCA0KSwgY2FsbChiPTYpXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FsbHMgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgY2FsbHMgPSBbY2FsbCgzLCA0KV0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhbGxzIGluIG1vY2suY2FsbF9hcmdzX2xpc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjYWxsKCdmaXNoJykgaW4gbW9jay5jYWxsX2FyZ3NfbGlzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShbY2FsbCgnZmlzaCcpXSBpbiBtb2NrLmNhbGxfYXJnc19saXN0KQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2xpc3Rfc3RyKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jay5mb28oYT0zKQorICAgICAgICBtb2NrLmZvby5iYXIoKS5iYXooJ2Zpc2gnLCBjYXQ9J2RvZycpCisKKyAgICAgICAgZXhwZWN0ZWQgPSAoCisgICAgICAgICAgICAiW2NhbGwoMSwgMiksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vKGE9MyksXG4iCisgICAgICAgICAgICAiIGNhbGwuZm9vLmJhcigpLFxuIgorICAgICAgICAgICAgIiBjYWxsLmZvby5iYXIoKS5iYXooJ2Zpc2gnLCBjYXQ9J2RvZycpXSIKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrLm1vY2tfY2FsbHMpLCBleHBlY3RlZCkKKworCisgICAgZGVmIHRlc3RfcHJvcGVydHltb2NrKHNlbGYpOgorICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcy5vbmUnICUgX19uYW1lX18sIG5ld19jYWxsYWJsZT1Qcm9wZXJ0eU1vY2spCisgICAgICAgIG1vY2sgPSBwLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgU29tZUNsYXNzLm9uZQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisKKyAgICAgICAgICAgIHMgPSBTb21lQ2xhc3MoKQorICAgICAgICAgICAgcy5vbmUKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgpLCBjYWxsKCldKQorCisgICAgICAgICAgICBzLm9uZSA9IDMKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgpLCBjYWxsKCksIGNhbGwoMyldKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfcHJvcGVydHltb2NrX3JldHVybnZhbHVlKHNlbGYpOgorICAgICAgICBtID0gTWFnaWNNb2NrKCkKKyAgICAgICAgcCA9IFByb3BlcnR5TW9jaygpCisgICAgICAgIHR5cGUobSkuZm9vID0gcAorCisgICAgICAgIHJldHVybmVkID0gbS5mb28KKyAgICAgICAgcC5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXR1cm5lZCwgTWFnaWNNb2NrKQorICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UocmV0dXJuZWQsIFByb3BlcnR5TW9jaykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1hZ2ljbWV0aG9kcy5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJjZjA4OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RtYWdpY21ldGhvZHMucHkKQEAgLTAsMCArMSw0MDMgQEAKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IGluc3BlY3QKK2ltcG9ydCBzeXMKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jaywgTWFnaWNNb2NrLCBfbWFnaWNzCisKKworCitjbGFzcyBUZXN0TW9ja2luZ01hZ2ljTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9kZWxldGluZ19tYWdpY19tZXRob2RzKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19nZXRpdGVtX18nKSkKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG1vY2ssICdfX2dldGl0ZW1fXycpKQorCisgICAgICAgIGRlbCBtb2NrLl9fZ2V0aXRlbV9fCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19nZXRpdGVtX18nKSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNtb2NrX2RlbChzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgICMgYmVmb3JlIHVzaW5nIGdldGl0ZW0KKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICAjIHRoaXMgdGltZSB1c2UgaXQgZmlyc3QKKyAgICAgICAgbW9ja1snZm9vJ10KKyAgICAgICAgZGVsIG1vY2suX19nZXRpdGVtX18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2Rfd3JhcHBpbmcoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZGVmIGYoc2VsZiwgbmFtZSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZiwgJ2Zpc2gnCisKKyAgICAgICAgbW9jay5fX2dldGl0ZW1fXyA9IGYKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtb2NrLl9fZ2V0aXRlbV9fIGlzIGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9ja1snZm9vJ10sIChtb2NrLCAnZmlzaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX19nZXRpdGVtX18oJ2ZvbycpLCAobW9jaywgJ2Zpc2gnKSkKKworICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gbW9jaworICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5fX2dldGl0ZW1fXyBpcyBtb2NrKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2lzb2xhdGVkX2JldHdlZW5fbW9ja3Moc2VsZik6CisgICAgICAgIG1vY2sxID0gTW9jaygpCisgICAgICAgIG1vY2syID0gTW9jaygpCisKKyAgICAgICAgbW9jazEuX19pdGVyX18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2sxKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBsaXN0KG1vY2syKSkKKworCisgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9jayksICI8TW9jayBpZD0nJXMnPiIgJSBpZChtb2NrKSkKKyAgICAgICAgbW9jay5fX3JlcHJfXyA9IGxhbWJkYSBzOiAnZm9vJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobW9jayksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9zdHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9jayksIG9iamVjdC5fX3N0cl9fKG1vY2spKQorICAgICAgICBtb2NrLl9fc3RyX18gPSBsYW1iZGEgczogJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobW9jayksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9kaWN0X21ldGhvZHMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9ja1snZm9vJ10pCisgICAgICAgIGRlZiBfZGVsKCk6CisgICAgICAgICAgICBkZWwgbW9ja1snZm9vJ10KKyAgICAgICAgZGVmIF9zZXQoKToKKyAgICAgICAgICAgIG1vY2tbJ2ZvbyddID0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9kZWwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX3NldCkKKworICAgICAgICBfZGljdCA9IHt9CisgICAgICAgIGRlZiBnZXRpdGVtKHMsIG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIF9kaWN0W25hbWVdCisgICAgICAgIGRlZiBzZXRpdGVtKHMsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgICAgIF9kaWN0W25hbWVdID0gdmFsdWUKKyAgICAgICAgZGVmIGRlbGl0ZW0ocywgbmFtZSk6CisgICAgICAgICAgICBkZWwgX2RpY3RbbmFtZV0KKworICAgICAgICBtb2NrLl9fc2V0aXRlbV9fID0gc2V0aXRlbQorICAgICAgICBtb2NrLl9fZ2V0aXRlbV9fID0gZ2V0aXRlbQorICAgICAgICBtb2NrLl9fZGVsaXRlbV9fID0gZGVsaXRlbQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBsYW1iZGE6IG1vY2tbJ2ZvbyddKQorICAgICAgICBtb2NrWydmb28nXSA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2RpY3QsIHsnZm9vJzogJ2Jhcid9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tbJ2ZvbyddLCAnYmFyJykKKyAgICAgICAgZGVsIG1vY2tbJ2ZvbyddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2RpY3QsIHt9KQorCisKKyAgICBkZWYgdGVzdF9udW1lcmljKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay52YWx1ZSA9IDAKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogbW9jayArIDMpCisKKyAgICAgICAgZGVmIGFkZChzZWxmLCBvdGhlcik6CisgICAgICAgICAgICBtb2NrLnZhbHVlICs9IG90aGVyCisgICAgICAgICAgICByZXR1cm4gc2VsZgorICAgICAgICBtb2NrLl9fYWRkX18gPSBhZGQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICsgMywgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnZhbHVlLCAzKQorCisgICAgICAgIGRlbCBtb2NrLl9fYWRkX18KKyAgICAgICAgZGVmIGlhZGQobW9jayk6CisgICAgICAgICAgICBtb2NrICs9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpYWRkLCBtb2NrKQorICAgICAgICBtb2NrLl9faWFkZF9fID0gYWRkCisgICAgICAgIG1vY2sgKz0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2ssIG9yaWdpbmFsKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sudmFsdWUsIDkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IDMgKyBtb2NrKQorICAgICAgICBtb2NrLl9fcmFkZF9fID0gYWRkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNyArIG1vY2ssIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay52YWx1ZSwgMTYpCisKKworICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgIyB0ZXN0IGRlbGVnYXRpb24KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKG1vY2spLCBNb2NrLl9faGFzaF9fKG1vY2spKQorCisgICAgICAgIGRlZiBfaGFzaChzKToKKyAgICAgICAgICAgIHJldHVybiAzCisgICAgICAgIG1vY2suX19oYXNoX18gPSBfaGFzaAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2gobW9jayksIDMpCisKKworICAgIGRlZiB0ZXN0X25vbnplcm8oc2VsZik6CisgICAgICAgIG0gPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJvb2wobSkpCisKKyAgICAgICAgbS5fX2Jvb2xfXyA9IGxhbWJkYSBzOiBGYWxzZQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2wobSkpCisKKworICAgIGRlZiB0ZXN0X2NvbXBhcmlzb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgZGVmIGNvbXAocywgbyk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBtb2NrLl9fbHRfXyA9IG1vY2suX19ndF9fID0gbW9jay5fX2xlX18gPSBtb2NrLl9fZ2VfXyA9IGNvbXAKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrIDwgMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrID4gMykKKyAgICAgICAgc2VsZi4gYXNzZXJ0VHJ1ZShtb2NrIDw9IDMpCisgICAgICAgIHNlbGYuIGFzc2VydFRydWUobW9jayA+PSAzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPCBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpIDwgTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+IG9iamVjdCgpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogb2JqZWN0KCkgPiBNYWdpY01vY2soKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE1hZ2ljTW9jaygpID4gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA8PSBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG9iamVjdCgpIDw9IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPD0gTWFnaWNNb2NrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBNYWdpY01vY2soKSA+PSBvYmplY3QoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IG9iamVjdCgpID49IE1hZ2ljTW9jaygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogTWFnaWNNb2NrKCkgPj0gTWFnaWNNb2NrKCkpCisKKworICAgIGRlZiB0ZXN0X2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG1vY2ssIFRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jayA9PSBtb2NrLCBib29sKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrICE9IG1vY2ssIEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgIT0gbW9jaywgYm9vbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSBvYmplY3QoKSwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sgIT0gb2JqZWN0KCksIFRydWUpCisKKyAgICAgICAgICAgIGRlZiBlcShzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIG90aGVyID09IDMKKyAgICAgICAgICAgIG1vY2suX19lcV9fID0gZXEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrID09IDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2sgPT0gNCkKKworICAgICAgICAgICAgZGVmIG5lKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gb3RoZXIgPT0gMworICAgICAgICAgICAgbW9jay5fX25lX18gPSBuZQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2sgIT0gMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jayAhPSA0KQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrLl9fZXFfXy5yZXR1cm5fdmFsdWUgPSBUcnVlCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrID09IDMsIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSAzLCBUcnVlKQorCisgICAgICAgIG1vY2suX19uZV9fLnJldHVybl92YWx1ZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrICE9IDMsIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSAzLCBGYWxzZSkKKworCisgICAgZGVmIHRlc3RfbGVuX2NvbnRhaW5zX2l0ZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxlbiwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpdGVyLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogJ2ZvbycgaW4gbW9jaykKKworICAgICAgICBtb2NrLl9fbGVuX18gPSBsYW1iZGEgczogNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrKSwgNikKKworICAgICAgICBtb2NrLl9fY29udGFpbnNfXyA9IGxhbWJkYSBzLCBvOiBvID09IDMKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDMgaW4gbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSg2IGluIG1vY2spCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IGxhbWJkYSBzOiBpdGVyKCdmb29iYXJiYXonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIGxpc3QoJ2Zvb2JhcmJheicpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorCisgICAgICAgIG1vY2suX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gaXRlcihbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgWzEsIDIsIDNdKQorCisgICAgICAgIGdldGF0dHIobW9jaywgJ19fYm9vbF9fJykucmV0dXJuX3ZhbHVlID0gRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdfX25vbnplcm9fXycpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJvb2wobW9jaykpCisKKyAgICAgICAgZm9yIGVudHJ5IGluIF9tYWdpY3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2NrLCBlbnRyeSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihtb2NrLCAnX19pbWFnaW5lcnlfXycpKQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tb2NrX2VxdWFsaXR5KHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2sgPT0gb2JqZWN0KCksIGJvb2wpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrICE9IG9iamVjdCgpLCBib29sKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayA9PSBvYmplY3QoKSwgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBvYmplY3QoKSwgVHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrID09IG1vY2ssIFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jayAhPSBtb2NrLCBGYWxzZSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNtb2NrX2RlZmF1bHRzKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobW9jayksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxleChtb2NrKSwgMWopCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQobW9jayksIDEuMCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihvYmplY3QoKSwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obW9jayksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFzaChtb2NrKSwgb2JqZWN0Ll9faGFzaF9fKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihtb2NrKSwgb2JqZWN0Ll9fc3RyX18obW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShib29sKG1vY2spKQorCisgICAgICAgICMgaW4gUHl0aG9uIDMgb2N0IGFuZCBoZXggdXNlIF9faW5kZXhfXworICAgICAgICAjIHNvIHRoZXNlIHRlc3RzIGFyZSBmb3IgX19pbmRleF9fIGluIHB5M2sKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvY3QobW9jayksICcwbzEnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhleChtb2NrKSwgJzB4MScpCisgICAgICAgICMgaG93IHRvIHRlc3QgX19zaXplb2ZfXyA/CisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZHNfYW5kX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIEl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9Tm9uSXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgZGVmIHNldF9pbnQoKToKKyAgICAgICAgICAgIG1vY2suX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0X2ludCkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNwZWM9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtb2NrKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRfaW50KQorCisKKyAgICBkZWYgdGVzdF9tYWdpY19tZXRob2RzX2FuZF9zcGVjX3NldChzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlY19zZXQ9SXRlcmFibGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IG1vY2suX19pdGVyX18pCisKKyAgICAgICAgbW9jay5fX2l0ZXJfXyA9IE1vY2socmV0dXJuX3ZhbHVlPWl0ZXIoW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobW9jayksIFtdKQorCisgICAgICAgIGNsYXNzIE5vbkl0ZXJhYmxlKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PU5vbkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBtb2NrLl9faXRlcl9fKQorCisgICAgICAgIGRlZiBzZXRfaW50KCk6CisgICAgICAgICAgICBtb2NrLl9faW50X18gPSBNb2NrKHJldHVybl92YWx1ZT1pdGVyKFtdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhzcGVjX3NldD1JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG1vY2spLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9pbnQpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfdW5zdXBwb3J0ZWRfbWFnaWNfbWV0aG9kKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgZGVmIHNldF9zZXRhdHRyKCk6CisgICAgICAgICAgICBtb2NrLl9fc2V0YXR0cl9fID0gbGFtYmRhIHNlbGYsIG5hbWU6IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNldCB1bnN1cHBvcnRlZCBtYWdpYyBtZXRob2QgJ19fc2V0YXR0cl9fJy4iLAorICAgICAgICAgICAgc2V0X3NldGF0dHIKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2FuZF9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBhdHRyID0gbW9jay5mb28KKyAgICAgICAgZGVmIF9nZXRfdHlwZShvYmopOgorICAgICAgICAgICAgIyB0aGUgdHlwZSBvZiBldmVyeSBtb2NrIChvciBtYWdpY21vY2spIGlzIGEgY3VzdG9tIHN1YmNsYXNzCisgICAgICAgICAgICAjIHNvIHRoZSByZWFsIHR5cGUgaXMgdGhlIHNlY29uZCBpbiB0aGUgbXJvCisgICAgICAgICAgICByZXR1cm4gdHlwZShvYmopLl9fbXJvX19bMV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZ2V0X3R5cGUoYXR0ciksIE1hZ2ljTW9jaykKKworICAgICAgICByZXR1cm5lZCA9IG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9nZXRfdHlwZShyZXR1cm5lZCksIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19hcmVfbWFnaWNfbW9ja3Moc2VsZik6CisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5fX2dldGl0ZW1fXywgTWFnaWNNb2NrKQorCisgICAgICAgIG1vY2tbMV1bMl0uX19nZXRpdGVtX18ucmV0dXJuX3ZhbHVlID0gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2tbMV1bMl1bM10sIDMpCisKKworICAgIGRlZiB0ZXN0X21hZ2ljX21ldGhvZF9yZXNldF9tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgc3RyKG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtb2NrLl9fc3RyX18uY2FsbGVkKQorICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suX19zdHJfXy5jYWxsZWQpCisKKworICAgIGRlZiB0ZXN0X2RpcihzZWxmKToKKyAgICAgICAgIyBvdmVycmlkaW5nIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uCisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBkZWYgX2RpcihzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gWydmb28nXQorICAgICAgICAgICAgbW9jay5fX2Rpcl9fID0gX2RpcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIobW9jayksIFsnZm9vJ10pCisKKworICAgIEB1bml0dGVzdC5za2lwSWYoJ1B5UHknIGluIHN5cy52ZXJzaW9uLCAiVGhpcyBmYWlscyBkaWZmZXJlbnRseSBvbiBweXB5IikKKyAgICBkZWYgdGVzdF9ib3VuZF9tZXRob2RzKHNlbGYpOgorICAgICAgICBtID0gTW9jaygpCisKKyAgICAgICAgIyBYWFhYIHNob3VsZCB0aGlzIGJlIGFuIGV4cGVjdGVkIGZhaWx1cmUgaW5zdGVhZD8KKworICAgICAgICAjIHRoaXMgc2VlbXMgbGlrZSBpdCBzaG91bGQgd29yaywgYnV0IGlzIGhhcmQgdG8gZG8gd2l0aG91dCBpbnRyb2R1Y2luZworICAgICAgICAjIG90aGVyIGFwaSBpbmNvbnNpc3RlbmNpZXMuIEZhaWx1cmUgbWVzc2FnZSBjb3VsZCBiZSBiZXR0ZXIgdGhvdWdoLgorICAgICAgICBtLl9faXRlcl9fID0gWzNdLl9faXRlcl9fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXRlciwgbSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kX3R5cGUoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhNYWdpY01vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvbyA9IEZvbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmb28uX19pbnRfXywgRm9vKQorCisKKyAgICBkZWYgdGVzdF9kZXNjcmlwdG9yX2Zyb21fY2xhc3Moc2VsZik6CisgICAgICAgIG0gPSBNYWdpY01vY2soKQorICAgICAgICB0eXBlKG0pLl9fc3RyX18ucmV0dXJuX3ZhbHVlID0gJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIobSksICdmb28nKQorCisKKyAgICBkZWYgdGVzdF9pdGVyYWJsZV9hc19pdGVyX3JldHVybl92YWx1ZShzZWxmKToKKyAgICAgICAgbSA9IE1hZ2ljTW9jaygpCisgICAgICAgIG0uX19pdGVyX18ucmV0dXJuX3ZhbHVlID0gWzEsIDIsIDNdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChtKSwgWzEsIDIsIDNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFsxLCAyLCAzXSkKKworICAgICAgICBtLl9faXRlcl9fLnJldHVybl92YWx1ZSA9IGl0ZXIoWzQsIDUsIDZdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QobSksIFs0LCA1LCA2XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG0pLCBbXSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0bW9jay5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzZmMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdG1vY2sucHkKQEAgLTAsMCArMSwxMjc1IEBACitpbXBvcnQgY29weQoraW1wb3J0IHN5cworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jay5zdXBwb3J0IGltcG9ydCBpc19pbnN0YW5jZQorZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jaworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgY2FsbCwgREVGQVVMVCwgcGF0Y2gsIHNlbnRpbmVsLAorICAgIE1hZ2ljTW9jaywgTW9jaywgTm9uQ2FsbGFibGVNb2NrLAorICAgIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBfQ2FsbExpc3QsCisgICAgY3JlYXRlX2F1dG9zcGVjCispCisKKworY2xhc3MgSXRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi50aGluZyA9IGl0ZXIoWyd0aGlzJywgJ2lzJywgJ2FuJywgJ2l0ZXInXSkKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBuZXh0KHNlbGYpOgorICAgICAgICByZXR1cm4gbmV4dChzZWxmLnRoaW5nKQorCisgICAgX19uZXh0X18gPSBuZXh0CisKKworCitjbGFzcyBNb2NrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgICMgaWYgX19hbGxfXyBpcyBiYWRseSBkZWZpbmVkIHRoZW4gaW1wb3J0ICogd2lsbCByYWlzZSBhbiBlcnJvcgorICAgICAgICAjIFdlIGhhdmUgdG8gZXhlYyBpdCBiZWNhdXNlIHlvdSBjYW4ndCBpbXBvcnQgKiBpbnNpZGUgYSBtZXRob2QKKyAgICAgICAgIyBpbiBQeXRob24gMworICAgICAgICBleGVjKCJmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0ICoiKQorCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2NvdW50IG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobW9jay5yZXR1cm5fdmFsdWUsIE1vY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybl92YWx1ZSBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBOb25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjYWxsX2FyZ3Mgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJnc19saXN0IG5vdCBpbml0aWFsaXNlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZF9jYWxscyBub3QgaW5pdGlhbGlzZWQgY29ycmVjdGx5IikKKworICAgICAgICAjIENhbid0IHVzZSBoYXNhdHRyIGZvciB0aGlzIHRlc3QgYXMgaXQgYWx3YXlzIHJldHVybnMgVHJ1ZSBvbiBhIG1vY2sKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgnX2l0ZW1zJyBpbiBtb2NrLl9fZGljdF9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0IG1vY2sgc2hvdWxkIG5vdCBoYXZlICdfaXRlbXMnIGF0dHJpYnV0ZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUobW9jay5fbW9ja19wYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXJlbnQgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vY2suX21vY2tfbWV0aG9kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19jaGlsZHJlbiwge30sCisgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIG5vdCBpbml0aWFsaXNlZCBpbmNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X3JldHVybl92YWx1ZV9pbl9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2socmV0dXJuX3ZhbHVlPU5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1vY2sucmV0dXJuX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHZhbHVlIGluIGNvbnN0cnVjdG9yIG5vdCBob25vdXJlZCIpCisKKworICAgIGRlZiB0ZXN0X3JlcHIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZvbycsIHJlcHIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiclcyciICUgaWQobW9jayksIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9ja3MgPSBbKE1vY2soKSwgJ21vY2snKSwgKE1vY2sobmFtZT0nYmFyJyksICdiYXInKV0KKyAgICAgICAgZm9yIG1vY2ssIG5hbWUgaW4gbW9ja3M6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5iYXInICUgbmFtZSwgcmVwcihtb2NrLmJhcikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcy5mb28oKScgJSBuYW1lLCByZXByKG1vY2suZm9vKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignJXMuZm9vKCkuYmluZycgJSBuYW1lLCByZXByKG1vY2suZm9vKCkuYmluZykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCclcygpJyAlIG5hbWUsIHJlcHIobW9jaygpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCkoKScgJSBuYW1lLCByZXByKG1vY2soKSgpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJyVzKCkoKS5mb28uYmFyLmJheigpLmJpbmcnICUgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtb2NrKCkoKS5mb28uYmFyLmJheigpLmJpbmcpKQorCisKKyAgICBkZWYgdGVzdF9yZXByX3dpdGhfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiIHNwZWM9J1gnICIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjPSdYJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWNfc2V0PVgpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjX3NldD0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjX3NldD0nWCcgIiwgcmVwcihtb2NrKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgsIG5hbWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBzcGVjPSdYJyAiLCByZXByKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nZm9vJyAiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9J2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInNwZWMiLCByZXByKG1vY2spKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic3BlYyIsIHJlcHIobW9jaykpCisKKyAgICAgICAgbW9jayA9IE1vY2soc3BlYz1bJ2ZvbyddKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCJzcGVjIiwgcmVwcihtb2NrKSkKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Qoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKworICAgICAgICBkZWYgZWZmZWN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICByYWlzZSBTeXN0ZW1FcnJvcigna2FibG9vaWUnKQorCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBlZmZlY3QKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXJyb3IsIG1vY2ssIDEsIDIsIGZpc2g9MykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgZmlzaD0zKQorCisgICAgICAgIHJlc3VsdHMgPSBbMSwgMiwgM10KKyAgICAgICAgZGVmIGVmZmVjdCgpOgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHMucG9wKCkKKyAgICAgICAgbW9jay5zaWRlX2VmZmVjdCA9IGVmZmVjdAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMywgMiwgMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWRlIGVmZmVjdCBub3QgdXNlZCBjb3JyZWN0bHkiKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNlbnRpbmVsLlNpZGVFZmZlY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5zaWRlX2VmZmVjdCwgc2VudGluZWwuU2lkZUVmZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZGUgZWZmZWN0IGluIGNvbnN0cnVjdG9yIG5vdCB1c2VkIikKKworICAgICAgICBkZWYgc2lkZV9lZmZlY3QoKToKKyAgICAgICAgICAgIHJldHVybiBERUZBVUxUCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PXNpZGVfZWZmZWN0LCByZXR1cm5fdmFsdWU9c2VudGluZWwuUkVUVVJOKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgc2VudGluZWwuUkVUVVJOKQorCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcygnamF2YScgaW4gc3lzLnBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0ZXN0IG9ubHkgYXBwbGllcyB0byBKeXRob24nKQorICAgIGRlZiB0ZXN0X2phdmFfZXhjZXB0aW9uX3NpZGVfZWZmZWN0KHNlbGYpOgorICAgICAgICBpbXBvcnQgamF2YQorICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1qYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbigiQm9vbSEiKSkKKworICAgICAgICAjIGNhbid0IHVzZSBhc3NlcnRSYWlzZXMgd2l0aCBqYXZhIGV4Y2VwdGlvbnMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9jaygxLCAyLCBmaXNoPTMpCisgICAgICAgIGV4Y2VwdCBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnamF2YSBleGNlcHRpb24gbm90IHJhaXNlZCcpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKDEsMiwgZmlzaD0zKQorCisKKyAgICBkZWYgdGVzdF9yZXNldF9tb2NrKHNlbGYpOgorICAgICAgICBwYXJlbnQgPSBNb2NrKCkKKyAgICAgICAgc3BlYyA9IFsic29tZXRoaW5nIl0KKyAgICAgICAgbW9jayA9IE1vY2sobmFtZT0iY2hpbGQiLCBwYXJlbnQ9cGFyZW50LCBzcGVjPXNwZWMpCisgICAgICAgIG1vY2soc2VudGluZWwuU29tZXRoaW5nLCBzb21ldGhpbmc9c2VudGluZWwuU29tZXRoaW5nRWxzZSkKKyAgICAgICAgc29tZXRoaW5nID0gbW9jay5zb21ldGhpbmcKKyAgICAgICAgbW9jay5zb21ldGhpbmcoKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gc2VudGluZWwuU2lkZUVmZmVjdAorICAgICAgICByZXR1cm5fdmFsdWUgPSBtb2NrLnJldHVybl92YWx1ZQorICAgICAgICByZXR1cm5fdmFsdWUoKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9tb2NrX25hbWUsICJjaGlsZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfcGFyZW50LCBwYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmVudCBpbmNvcnJlY3RseSByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5fbW9ja19tZXRob2RzLCBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RzIGluY29ycmVjdGx5IHJlc2V0IikKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vY2suY2FsbGVkLCAiY2FsbGVkIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAwLCAiY2FsbF9jb3VudCBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCBOb25lLCAiY2FsbF9hcmdzIG5vdCByZXNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3NfbGlzdCwgW10sICJjYWxsX2FyZ3NfbGlzdCBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2RfY2FsbHMgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseTogJXIgIT0gJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChtb2NrLm1ldGhvZF9jYWxscywgW10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW10pCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNpZGVfZWZmZWN0LCBzZW50aW5lbC5TaWRlRWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAic2lkZV9lZmZlY3QgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLCByZXR1cm5fdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXR1cm5fdmFsdWUgaW5jb3JyZWN0bHkgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJldHVybl92YWx1ZS5jYWxsZWQsICJyZXR1cm4gdmFsdWUgbW9jayBub3QgcmVzZXQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suX21vY2tfY2hpbGRyZW4sIHsnc29tZXRoaW5nJzogc29tZXRoaW5nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkcmVuIHJlc2V0IGluY29ycmVjdGx5IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZywgc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGRyZW4gaW5jb3JyZWN0bHkgY2xlYXJlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9jay5zb21ldGhpbmcuY2FsbGVkLCAiY2hpbGQgbm90IHJlc2V0IikKKworCisgICAgZGVmIHRlc3RfcmVzZXRfbW9ja19yZWN1cnNpb24oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBtb2NrCisKKyAgICAgICAgIyB1c2VkIHRvIGNhdXNlIHJlY3Vyc2lvbgorICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorCisKKyAgICBkZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrLnJldHVybl92YWx1ZSwgTW9jayksCisgICAgICAgICAgICAgICAgICAgICAgICAiRGVmYXVsdCByZXR1cm5fdmFsdWUgc2hvdWxkIGJlIGEgTW9jayIpCisKKyAgICAgICAgcmVzdWx0ID0gbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgImRpZmZlcmVudCByZXN1bHQgZnJvbSBjb25zZWN1dGl2ZSBjYWxscyIpCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisKKyAgICAgICAgcmV0X3ZhbCA9IG1vY2soc2VudGluZWwuQXJnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5jYWxsZWQsICJjYWxsZWQgbm90IHNldCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAxLCAiY2FsbF9jb3VudCBpbmNvcmVlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLCAoKHNlbnRpbmVsLkFyZywpLCB7fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbKChzZW50aW5lbC5BcmcsKSwge30pXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IGluaXRpYWxpc2VkIGNvcnJlY3RseSIpCisKKyAgICAgICAgbW9jay5yZXR1cm5fdmFsdWUgPSBzZW50aW5lbC5SZXR1cm5WYWx1ZQorICAgICAgICByZXRfdmFsID0gbW9jayhzZW50aW5lbC5BcmcsIGtleT1zZW50aW5lbC5LZXlBcmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV0X3ZhbCwgc2VudGluZWwuUmV0dXJuVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgImluY29ycmVjdCByZXR1cm4gdmFsdWUiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2NvdW50LCAyLCAiY2FsbF9jb3VudCBpbmNvcnJlY3QiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsna2V5Jzogc2VudGluZWwuS2V5QXJnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxfYXJncyBub3Qgc2V0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmNhbGxfYXJnc19saXN0LCBbCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7fSksCisgICAgICAgICAgICAoKHNlbnRpbmVsLkFyZywpLCB7J2tleSc6IHNlbnRpbmVsLktleUFyZ30pCisgICAgICAgIF0sCisgICAgICAgICAgICAiY2FsbF9hcmdzX2xpc3Qgbm90IHNldCIpCisKKworICAgIGRlZiB0ZXN0X2NhbGxfYXJnc19jb21wYXJpc29uKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soKQorICAgICAgICBtb2NrKHNlbnRpbmVsLkFyZykKKyAgICAgICAgbW9jayhrdz1zZW50aW5lbC5Ld2FyZykKKyAgICAgICAgbW9jayhzZW50aW5lbC5BcmcsIGt3PXNlbnRpbmVsLkt3YXJnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suY2FsbF9hcmdzX2xpc3QsIFsKKyAgICAgICAgICAgICgpLAorICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwpLAorICAgICAgICAgICAgKHsia3ciOiBzZW50aW5lbC5Ld2FyZ30sKSwKKyAgICAgICAgICAgICgoc2VudGluZWwuQXJnLCksIHsia3ciOiBzZW50aW5lbC5Ld2FyZ30pCisgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5jYWxsX2FyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgKChzZW50aW5lbC5BcmcsKSwgeyJrdyI6IHNlbnRpbmVsLkt3YXJnfSkpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKCkKKworICAgICAgICAjIFdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGl0IGZhaWxzCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoLCAxKQorCisgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9jYWxsZWRfd2l0aCkKKworICAgICAgICBtb2NrKDEsIDIsIDMsIGE9J2Zpc2gnLCBiPSdub3RoaW5nJykKKyAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgMywgYT0nZmlzaCcsIGI9J25vdGhpbmcnKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrKCkKKworICAgICAgICAjIFdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIGl0IGZhaWxzCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKQorCisgICAgICAgIG1vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCkKKworICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgbW9jay5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aCkKKworICAgICAgICBtb2NrKCdmb28nLCAnYmFyJywgYmF6PTIpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycsICdiYXInLCBiYXo9MikKKworICAgICAgICBtb2NrLnJlc2V0X21vY2soKQorICAgICAgICBtb2NrKCdmb28nLCAnYmFyJywgYmF6PTIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBsYW1iZGE6IG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2JvYicsICdiYXInLCBiYXo9MikKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfYWNjZXNzX3JldHVybnNfbW9ja3Moc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc29tZXRoaW5nID0gbW9jay5zb21ldGhpbmcKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKHNvbWV0aGluZywgTW9jayksICJhdHRyaWJ1dGUgaXNuJ3QgYSBtb2NrIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZywgc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJkaWZmZXJlbnQgYXR0cmlidXRlcyByZXR1cm5lZCBmb3Igc2FtZSBuYW1lIikKKworICAgICAgICAjIFVzYWdlIGV4YW1wbGUKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZy5yZXR1cm5fdmFsdWUgPSAzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnNvbWV0aGluZygpLCAzLCAibWV0aG9kIHJldHVybmVkIHdyb25nIHZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2suc29tZXRoaW5nLmNhbGxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZXRob2QgZGlkbid0IHJlY29yZCBiZWluZyBjYWxsZWQiKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX2hhdmVfbmFtZV9hbmRfcGFyZW50X3NldChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBzb21ldGhpbmcgPSBtb2NrLnNvbWV0aGluZworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLl9tb2NrX25hbWUsICJzb21ldGhpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGUgbmFtZSBub3Qgc2V0IGNvcnJlY3RseSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLl9tb2NrX3BhcmVudCwgbW9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlIHBhcmVudCBub3Qgc2V0IGNvcnJlY3RseSIpCisKKworICAgIGRlZiB0ZXN0X21ldGhvZF9jYWxsc19yZWNvcmRlZChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNvbWV0aGluZygzLCBmaXNoPU5vbmUpCisgICAgICAgIG1vY2suc29tZXRoaW5nX2Vsc2Uuc29tZXRoaW5nKDYsIGNha2U9c2VudGluZWwuQ2FrZSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suc29tZXRoaW5nX2Vsc2UubWV0aG9kX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBbKCJzb21ldGhpbmciLCAoNiwpLCB7J2Nha2UnOiBzZW50aW5lbC5DYWtlfSldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAibWV0aG9kIGNhbGxzIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbCisgICAgICAgICAgICAoInNvbWV0aGluZyIsICgzLCksIHsnZmlzaCc6IE5vbmV9KSwKKyAgICAgICAgICAgICgic29tZXRoaW5nX2Vsc2Uuc29tZXRoaW5nIiwgKDYsKSwgeydjYWtlJzogc2VudGluZWwuQ2FrZX0pCisgICAgICAgIF0sCisgICAgICAgICAgICAibWV0aG9kIGNhbGxzIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkiKQorCisKKyAgICBkZWYgdGVzdF9tZXRob2RfY2FsbHNfY29tcGFyZV9lYXNpbHkoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCAoKSwge30pXSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKCdkaWZmZXJlbnQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCAoJ2RpZmZlcmVudCcsKSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ3NvbWV0aGluZycsICgnZGlmZmVyZW50JywpLCB7fSldKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5zb21ldGhpbmcoeD0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCB7J3gnOiAxfSldKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbKCdzb21ldGhpbmcnLCAoKSwgeyd4JzogMX0pXSkKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2suc29tZXRoaW5nKCdkaWZmZXJlbnQnLCBzb21lPSdtb3JlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgWworICAgICAgICAgICAgKCdzb21ldGhpbmcnLCAoJ2RpZmZlcmVudCcsKSwgeydzb21lJzogJ21vcmUnfSkKKyAgICAgICAgXSkKKworCisgICAgZGVmIHRlc3Rfb25seV9hbGxvd2VkX21ldGhvZHNfZXhpc3Qoc2VsZik6CisgICAgICAgIGZvciBzcGVjIGluIFsnc29tZXRoaW5nJ10sICgnc29tZXRoaW5nJywpOgorICAgICAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICAgICAgbW9jayA9IE1vY2soKip7YXJnOiBzcGVjfSkKKworICAgICAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICAgICAgICAgIG1vY2suc29tZXRoaW5nCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJNb2NrIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdzb21ldGhpbmdfZWxzZSciLAorICAgICAgICAgICAgICAgICAgICBnZXRhdHRyLCBtb2NrLCAnc29tZXRoaW5nX2Vsc2UnCisgICAgICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9mcm9tX3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgeCA9IDMKKyAgICAgICAgICAgIF9fc29tZXRoaW5nX18gPSBOb25lCisgICAgICAgICAgICBkZWYgeShzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIHRlc3RfYXR0cmlidXRlcyhtb2NrKToKKyAgICAgICAgICAgICMgc2hvdWxkIHdvcmsKKyAgICAgICAgICAgIG1vY2sueAorICAgICAgICAgICAgbW9jay55CisgICAgICAgICAgICBtb2NrLl9fc29tZXRoaW5nX18KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ3onIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBtb2NrLCAneicKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgIk1vY2sgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ19fZm9vYmFyX18nIiwKKyAgICAgICAgICAgICAgICBnZXRhdHRyLCBtb2NrLCAnX19mb29iYXJfXycKKyAgICAgICAgICAgICkKKworICAgICAgICB0ZXN0X2F0dHJpYnV0ZXMoTW9jayhzcGVjPVNvbWV0aGluZykpCisgICAgICAgIHRlc3RfYXR0cmlidXRlcyhNb2NrKHNwZWM9U29tZXRoaW5nKCkpKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19jYWxscyhzZWxmKToKKyAgICAgICAgcmVhbCA9IE1vY2soKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLCByZWFsKCkpCisKKyAgICAgICAgcmVhbC5yZXNldF9tb2NrKCkKKworICAgICAgICBtb2NrKDEsIDIsIGZpc2g9MykKKyAgICAgICAgcmVhbC5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgZmlzaD0zKQorCisKKyAgICBkZWYgdGVzdF93cmFwc19jYWxsX3dpdGhfbm9uZGVmYXVsdF9yZXR1cm5fdmFsdWUoc2VsZik6CisgICAgICAgIHJlYWwgPSBNb2NrKCkKKworICAgICAgICBtb2NrID0gTW9jayh3cmFwcz1yZWFsKQorICAgICAgICBtb2NrLnJldHVybl92YWx1ZSA9IDMKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWFsLmNhbGxlZCkKKworCisgICAgZGVmIHRlc3Rfd3JhcHNfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgY2xhc3MgUmVhbChvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gTW9jaygpCisKKyAgICAgICAgcmVhbCA9IFJlYWwoKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHdyYXBzPXJlYWwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5hdHRyaWJ1dGUoKSwgcmVhbC5hdHRyaWJ1dGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5maXNoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwobW9jay5hdHRyaWJ1dGUsIHJlYWwuYXR0cmlidXRlKQorICAgICAgICByZXN1bHQgPSBtb2NrLmF0dHJpYnV0ZS5mcm9nKDEsIDIsIGZpc2g9MykKKyAgICAgICAgUmVhbC5hdHRyaWJ1dGUuZnJvZy5hc3NlcnRfY2FsbGVkX3dpdGgoMSwgMiwgZmlzaD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgUmVhbC5hdHRyaWJ1dGUuZnJvZygpKQorCisKKyAgICBkZWYgdGVzdF9leGNlcHRpb25hbF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9QXR0cmlidXRlRXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUF0dHJpYnV0ZUVycm9yKCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X2Jhc2VleGNlcHRpb25hbF9zaWRlX2VmZmVjdChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soc2lkZV9lZmZlY3Q9S2V5Ym9hcmRJbnRlcnJ1cHQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50ZXJydXB0LCBtb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PUtleWJvYXJkSW50ZXJydXB0KCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIG1vY2spCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoQXNzZXJ0aW9uRXJyb3IsICdOb3QgY2FsbGVkJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgpCisKKworICAgIGRlZiB0ZXN0X2Fzc2VydF9jYWxsZWRfb25jZV93aXRoX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKG5hbWU9J2dlb2ZmcmV5JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChBc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgIHIiRXhwZWN0ZWQgJ2dlb2ZmcmV5JyB0byBiZSBjYWxsZWQgb25jZVwuIiwKKyAgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgpCisKKworICAgIGRlZiB0ZXN0X19uYW1lX18oc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogbW9jay5fX25hbWVfXykKKworICAgICAgICBtb2NrLl9fbmFtZV9fID0gJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLl9fbmFtZV9fLCAnZm9vJykKKworCisgICAgZGVmIHRlc3Rfc3BlY19saXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWIobGlzdCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9U3ViKFsnZm9vJ10pKQorCisgICAgICAgIG1vY2suYXBwZW5kKDMpCisgICAgICAgIG1vY2suYXBwZW5kLmFzc2VydF9jYWxsZWRfd2l0aCgzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjPVgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrLCBYKSkKKworICAgICAgICBzZWxmLmFzc2VydElzKG1vY2suX19jbGFzc19fLCBYKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE1vY2soKS5fX2NsYXNzX18uX19uYW1lX18sICdNb2NrJykKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShtb2NrLCBYKSkKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKG1vY2ssIFgpKQorCisKKyAgICBkZWYgdGVzdF9zZXR0aW5nX2F0dHJpYnV0ZV93aXRoX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBYKG9iamVjdCk6CisgICAgICAgICAgICB5ID0gMworCisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9WCkKKyAgICAgICAgbW9jay54ID0gJ2ZvbycKKworICAgICAgICBtb2NrID0gTW9jayhzcGVjX3NldD1YKQorICAgICAgICBkZWYgc2V0X2F0dHIoKToKKyAgICAgICAgICAgIG1vY2sueCA9ICdmb28nCisKKyAgICAgICAgbW9jay55ID0gJ2ZvbycKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldF9hdHRyKQorCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBjdXJyZW50ID0gc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXRyZWN1cnNpb25saW1pdCwgY3VycmVudCkKKworICAgICAgICAjIGNhbid0IHVzZSBzeXMubWF4aW50IGFzIHRoaXMgZG9lc24ndCBleGlzdCBpbiBQeXRob24gMworICAgICAgICBzeXMuc2V0cmVjdXJzaW9ubGltaXQoaW50KDEwZTgpKQorICAgICAgICAjIHRoaXMgc2VnZmF1bHRzIHdpdGhvdXQgdGhlIGZpeCBpbiBwbGFjZQorICAgICAgICBjb3B5LmNvcHkoTW9jaygpKQorCisKKyAgICBkZWYgdGVzdF9zdWJjbGFzc193aXRoX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgIGNsYXNzIFN1YkNsYXNzKE1vY2spOgorICAgICAgICAgICAgZGVmIF9nZXQoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDMKKyAgICAgICAgICAgIGRlZiBfc2V0KHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ3N0cmFuZ2UgZXJyb3InKQorICAgICAgICAgICAgc29tZV9hdHRyaWJ1dGUgPSBwcm9wZXJ0eShfZ2V0LCBfc2V0KQorCisgICAgICAgIHMgPSBTdWJDbGFzcyhzcGVjX3NldD1TdWJDbGFzcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNvbWVfYXR0cmlidXRlLCAzKQorCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzLnNvbWVfYXR0cmlidXRlID0gMworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIHRlc3QpCisKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHMuZm9vID0gJ2JhcicKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKworICAgIGRlZiB0ZXN0X3NldHRpbmdfY2FsbChzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBkZWYgX19jYWxsX18oc2VsZiwgYSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fbW9ja19jYWxsKGEpCisKKyAgICAgICAgdHlwZShtb2NrKS5fX2NhbGxfXyA9IF9fY2FsbF9fCisgICAgICAgIG1vY2soJ29uZScpCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoKCdvbmUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaywgJ29uZScsICd0d28nKQorCisKKyAgICBkZWYgdGVzdF9kaXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgYXR0cnMgPSBzZXQoZGlyKG1vY2spKQorICAgICAgICB0eXBlX2F0dHJzID0gc2V0KFttIGZvciBtIGluIGRpcihNb2NrKSBpZiBub3QgbS5zdGFydHN3aXRoKCdfJyldKQorCisgICAgICAgICMgYWxsIHB1YmxpYyBhdHRyaWJ1dGVzIGZyb20gdGhlIHR5cGUgYXJlIGluY2x1ZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIHR5cGVfYXR0cnMgLSBhdHRycykKKworICAgICAgICAjIGNyZWF0ZXMgdGhlc2UgYXR0cmlidXRlcworICAgICAgICBtb2NrLmEsIG1vY2suYgorICAgICAgICBzZWxmLmFzc2VydEluKCdhJywgZGlyKG1vY2spKQorICAgICAgICBzZWxmLmFzc2VydEluKCdiJywgZGlyKG1vY2spKQorCisgICAgICAgICMgaW5zdGFuY2UgYXR0cmlidXRlcworICAgICAgICBtb2NrLmMgPSBtb2NrLmQgPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2MnLCBkaXIobW9jaykpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2QnLCBkaXIobW9jaykpCisKKyAgICAgICAgIyBtYWdpYyBtZXRob2RzCisgICAgICAgIG1vY2suX19pdGVyX18gPSBsYW1iZGEgczogaXRlcihbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignX19pdGVyX18nLCBkaXIobW9jaykpCisKKworICAgIGRlZiB0ZXN0X2Rpcl9mcm9tX3NwZWMoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHNwZWM9dW5pdHRlc3QuVGVzdENhc2UpCisgICAgICAgIHRlc3RjYXNlX2F0dHJzID0gc2V0KGRpcih1bml0dGVzdC5UZXN0Q2FzZSkpCisgICAgICAgIGF0dHJzID0gc2V0KGRpcihtb2NrKSkKKworICAgICAgICAjIGFsbCBhdHRyaWJ1dGVzIGZyb20gdGhlIHNwZWMgYXJlIGluY2x1ZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIHRlc3RjYXNlX2F0dHJzIC0gYXR0cnMpCisKKyAgICAgICAgIyBzaGFkb3cgYSBzeXMgYXR0cmlidXRlCisgICAgICAgIG1vY2sudmVyc2lvbiA9IDMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXIobW9jaykuY291bnQoJ3ZlcnNpb24nKSwgMSkKKworCisgICAgZGVmIHRlc3RfZmlsdGVyX2RpcihzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChtb2NrLCAnRklMVEVSX0RJUicsIEZhbHNlKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYXR0cnMgPSBzZXQoZGlyKE1vY2soKSkpCisgICAgICAgICAgICB0eXBlX2F0dHJzID0gc2V0KGRpcihNb2NrKSkKKworICAgICAgICAgICAgIyBBTEwgYXR0cmlidXRlcyBmcm9tIHRoZSB0eXBlIGFyZSBpbmNsdWRlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQoKSwgdHlwZV9hdHRycyAtIGF0dHJzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfY29uZmlndXJlX21vY2soc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKGZvbz0nYmFyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvbywgJ2JhcicpCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhmb289J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28sICdiYXInKQorCisgICAgICAgIGt3YXJncyA9IHsnc2lkZV9lZmZlY3QnOiBLZXlFcnJvciwgJ2Zvby5iYXIucmV0dXJuX3ZhbHVlJzogMzMsCisgICAgICAgICAgICAgICAgICAnZm9vJzogTWFnaWNNb2NrKCl9CisgICAgICAgIG1vY2sgPSBNb2NrKCoqa3dhcmdzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgbW9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLmZvby5iYXIoKSwgMzMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLmZvbywgTWFnaWNNb2NrKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5jb25maWd1cmVfbW9jaygqKmt3YXJncykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIGFzc2VydFJhaXNlc1dpdGhNc2coc2VsZiwgZXhjZXB0aW9uLCBtZXNzYWdlLCBmdW5jLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIG5lZWRlZCBiZWNhdXNlIGFzc2VydFJhaXNlc1JlZ2V4IGRvZXNuJ3Qgd29yayBlYXNpbHkgd2l0aCBuZXdsaW5lcworICAgICAgICB0cnk6CisgICAgICAgICAgICBmdW5jKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgaW5zdGFuY2UgPSBzeXMuZXhjX2luZm8oKVsxXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluc3RhbmNlLCBleGNlcHRpb24pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ0V4Y2VwdGlvbiAlciBub3QgcmFpc2VkJyAlIChleGNlcHRpb24sKSkKKworICAgICAgICBtc2cgPSBzdHIoaW5zdGFuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLCBtZXNzYWdlKQorCisKKyAgICBkZWYgdGVzdF9hc3NlcnRfY2FsbGVkX3dpdGhfZmFpbHVyZV9tZXNzYWdlKHNlbGYpOgorICAgICAgICBtb2NrID0gTm9uQ2FsbGFibGVNb2NrKCkKKworICAgICAgICBleHBlY3RlZCA9ICJtb2NrKDEsICcyJywgMywgYmFyPSdmb28nKSIKKyAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuTm90IGNhbGxlZCcKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsKSwKKyAgICAgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF93aXRoLCAxLCAnMicsIDMsIGJhcj0nZm9vJworICAgICAgICApCisKKyAgICAgICAgbW9jay5mb28oMSwgJzInLCAzLCBmb289J2ZvbycpCisKKworICAgICAgICBhc3NlcnRlcnMgPSBbCisgICAgICAgICAgICBtb2NrLmZvby5hc3NlcnRfY2FsbGVkX3dpdGgsIG1vY2suZm9vLmFzc2VydF9jYWxsZWRfb25jZV93aXRoCisgICAgICAgIF0KKyAgICAgICAgZm9yIG1ldGggaW4gYXNzZXJ0ZXJzOgorICAgICAgICAgICAgYWN0dWFsID0gImZvbygxLCAnMicsIDMsIGZvbz0nZm9vJykiCisgICAgICAgICAgICBleHBlY3RlZCA9ICJmb28oMSwgJzInLCAzLCBiYXI9J2ZvbycpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLAorICAgICAgICAgICAgICAgIG1ldGgsIDEsICcyJywgMywgYmFyPSdmb28nCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBqdXN0IGt3YXJncworICAgICAgICBmb3IgbWV0aCBpbiBhc3NlcnRlcnM6CisgICAgICAgICAgICBhY3R1YWwgPSAiZm9vKDEsICcyJywgMywgZm9vPSdmb28nKSIKKyAgICAgICAgICAgIGV4cGVjdGVkID0gImZvbyhiYXI9J2ZvbycpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLAorICAgICAgICAgICAgICAgIG1ldGgsIGJhcj0nZm9vJworICAgICAgICAgICAgKQorCisgICAgICAgICMganVzdCBhcmdzCisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKDEsIDIsIDMpIgorICAgICAgICAgICAgbWVzc2FnZSA9ICdFeHBlY3RlZCBjYWxsOiAlc1xuQWN0dWFsIGNhbGw6ICVzJworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNXaXRoTXNnKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtZXNzYWdlICUgKGV4cGVjdGVkLCBhY3R1YWwpLAorICAgICAgICAgICAgICAgIG1ldGgsIDEsIDIsIDMKKyAgICAgICAgICAgICkKKworICAgICAgICAjIGVtcHR5CisgICAgICAgIGZvciBtZXRoIGluIGFzc2VydGVyczoKKyAgICAgICAgICAgIGFjdHVhbCA9ICJmb28oMSwgJzInLCAzLCBmb289J2ZvbycpIgorICAgICAgICAgICAgZXhwZWN0ZWQgPSAiZm9vKCkiCisgICAgICAgICAgICBtZXNzYWdlID0gJ0V4cGVjdGVkIGNhbGw6ICVzXG5BY3R1YWwgY2FsbDogJXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1dpdGhNc2coCisgICAgICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsIG1lc3NhZ2UgJSAoZXhwZWN0ZWQsIGFjdHVhbCksIG1ldGgKKyAgICAgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbW9ja19jYWxscyhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgIyBuZWVkIHRvIGRvIHRoaXMgYmVjYXVzZSBNYWdpY01vY2subW9ja19jYWxscyB1c2VkIHRvIGp1c3QgcmV0dXJuCisgICAgICAgICMgYSBNYWdpY01vY2sgd2hpY2ggYWxzbyByZXR1cm5lZCBhIE1hZ2ljTW9jayB3aGVuIF9fZXFfXyB3YXMgY2FsbGVkCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jay5tb2NrX2NhbGxzID09IFtdLCBUcnVlKQorCisgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKQorICAgICAgICBtb2NrKCkKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCcnLCAoKSwge30pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgbW9jay5mb28oKQorICAgICAgICBleHBlY3RlZC5hcHBlbmQoY2FsbC5mb28oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorICAgICAgICAjIGludGVybWVkaWF0ZSBtb2NrX2NhbGxzIHdvcmsgdG9vCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28ubW9ja19jYWxscywgWygnJywgKCksIHt9KV0pCisKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisgICAgICAgIG1vY2soKS5mb28oMSwgMiwgMywgYT00LCBiPTUpCisgICAgICAgIGV4cGVjdGVkID0gWworICAgICAgICAgICAgKCcnLCAoKSwge30pLCAoJygpLmZvbycsICgxLCAyLCAzKSwgZGljdChhPTQsIGI9NSkpCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2sucmV0dXJuX3ZhbHVlLmZvby5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoJycsICgxLCAyLCAzKSwgZGljdChhPTQsIGI9NSkpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLnJldHVybl92YWx1ZS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2ZvbycsICgxLCAyLCAzKSwgZGljdChhPTQsIGI9NSkpXSkKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9jaygpLmZvby5iYXIoKS5iYXooKQorICAgICAgICBleHBlY3RlZCA9IFsKKyAgICAgICAgICAgICgnJywgKCksIHt9KSwgKCcoKS5mb28uYmFyJywgKCksIHt9KSwKKyAgICAgICAgICAgICgnKCkuZm9vLmJhcigpLmJheicsICgpLCB7fSkKKyAgICAgICAgXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jaygpLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5mb28uYmFyKCkuYmF6KCkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgZm9yIGt3YXJncyBpbiBkaWN0KCksIGRpY3QobmFtZT0nYmFyJyk6CisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgaW50KG1vY2suZm9vKQorICAgICAgICAgICAgZXhwZWN0ZWQgPSBbKCdmb28uX19pbnRfXycsICgpLCB7fSldCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisKKyAgICAgICAgICAgIG1vY2sgPSBNYWdpY01vY2soKiprd2FyZ3MpCisgICAgICAgICAgICBtb2NrLmEoKSgpCisgICAgICAgICAgICBleHBlY3RlZCA9IFsoJ2EnLCAoKSwge30pLCAoJ2EoKScsICgpLCB7fSldCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suYSgpLm1vY2tfY2FsbHMsIFtjYWxsKCldKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgbW9jaygxKSgyKSgzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsIGNhbGwoMSkoMikoMykuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLCBjYWxsKDIpKDMpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkoKS5tb2NrX2NhbGxzLCBjYWxsKDMpLmNhbGxfbGlzdCgpKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgbW9jaygxKSgyKSgzKS5hLmIuYyg0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoMSkoMikoMykuYS5iLmMoNCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKDIpKDMpLmEuYi5jKDQpLmNhbGxfbGlzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrKCkoKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsKDMpLmEuYi5jKDQpLmNhbGxfbGlzdCgpKQorCisgICAgICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCoqa3dhcmdzKQorICAgICAgICAgICAgaW50KG1vY2soKS5mb28uYmFyKCkuYmF6KCkpCisgICAgICAgICAgICBsYXN0X2NhbGwgPSAoJygpLmZvby5iYXIoKS5iYXooKS5fX2ludF9fJywgKCksIHt9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1vY2tfY2FsbHNbLTFdLCBsYXN0X2NhbGwpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5tb2NrX2NhbGxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsLmZvby5iYXIoKS5iYXooKS5fX2ludF9fKCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5mb28uYmFyKCkubW9ja19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbC5iYXooKS5fX2ludF9fKCkuY2FsbF9saXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2soKS5mb28uYmFyKCkuYmF6Lm1vY2tfY2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGwoKS5fX2ludF9fKCkuY2FsbF9saXN0KCkpCisKKworICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgorICAgICAgICBjbGFzcyBTdWJjbGFzcyhNb2NrKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBtb2NrID0gU3ViY2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIFN1YmNsYXNzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jaygpLCBTdWJjbGFzcykKKworICAgICAgICBjbGFzcyBTdWJjbGFzcyhNb2NrKToKKyAgICAgICAgICAgIGRlZiBfZ2V0X2NoaWxkX21vY2soc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybiBNb2NrKCoqa3dhcmdzKQorCisgICAgICAgIG1vY2sgPSBTdWJjbGFzcygpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtb2NrLmZvbywgU3ViY2xhc3MpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZShtb2NrKCksIFN1YmNsYXNzKQorCisKKyAgICBkZWYgdGVzdF9hcmdfbGlzdHMoc2VsZik6CisgICAgICAgIG1vY2tzID0gWworICAgICAgICAgICAgTW9jaygpLAorICAgICAgICAgICAgTWFnaWNNb2NrKCksCisgICAgICAgICAgICBOb25DYWxsYWJsZU1vY2soKSwKKyAgICAgICAgICAgIE5vbkNhbGxhYmxlTWFnaWNNb2NrKCkKKyAgICAgICAgXQorCisgICAgICAgIGRlZiBhc3NlcnRfYXR0cnMobW9jayk6CisgICAgICAgICAgICBuYW1lcyA9ICdjYWxsX2FyZ3NfbGlzdCcsICdtZXRob2RfY2FsbHMnLCAnbW9ja19jYWxscycKKyAgICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgICAgIGF0dHIgPSBnZXRhdHRyKG1vY2ssIG5hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGF0dHIsIF9DYWxsTGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYXR0ciwgbGlzdCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF0dHIsIFtdKQorCisgICAgICAgIGZvciBtb2NrIGluIG1vY2tzOgorICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKyAgICAgICAgICAgIGlmIGNhbGxhYmxlKG1vY2spOgorICAgICAgICAgICAgICAgIG1vY2soKQorICAgICAgICAgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgICAgICAgICBtb2NrKGE9MykKKworICAgICAgICAgICAgICAgIG1vY2sucmVzZXRfbW9jaygpCisgICAgICAgICAgICAgICAgYXNzZXJ0X2F0dHJzKG1vY2spCisKKyAgICAgICAgICAgIG1vY2suZm9vKCkKKyAgICAgICAgICAgIG1vY2suZm9vLmJhcigxLCBhPTMpCisgICAgICAgICAgICBtb2NrLmZvbygxKS5iYXIoKS5iYXooMykKKworICAgICAgICAgICAgbW9jay5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgIGFzc2VydF9hdHRycyhtb2NrKQorCisKKyAgICBkZWYgdGVzdF9jYWxsX2FyZ3NfdHdvX3R1cGxlKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgYT0zKQorICAgICAgICBtb2NrKDIsIGI9NCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtb2NrLmNhbGxfYXJncyksIDIpCisgICAgICAgIGFyZ3MsIGt3YXJncyA9IG1vY2suY2FsbF9hcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJncywgKDIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChrd2FyZ3MsIGRpY3QoYj00KSkKKworICAgICAgICBleHBlY3RlZF9saXN0ID0gWygoMSwpLCBkaWN0KGE9MykpLCAoKDIsKSwgZGljdChiPTQpKV0KKyAgICAgICAgZm9yIGV4cGVjdGVkLCBjYWxsX2FyZ3MgaW4gemlwKGV4cGVjdGVkX2xpc3QsIG1vY2suY2FsbF9hcmdzX2xpc3QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2FsbF9hcmdzKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMF0sIGNhbGxfYXJnc1swXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRbMV0sIGNhbGxfYXJnc1sxXSkKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3RfaXRlcmF0b3Ioc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKHNpZGVfZWZmZWN0PWl0ZXIoWzEsIDIsIDNdKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsxLCAyLCAzXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworICAgICAgICBtb2NrID0gTWFnaWNNb2NrKHNpZGVfZWZmZWN0PVsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD0nZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsnZycsICdoJywgJ2knXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jayhzaWRlX2VmZmVjdD1Gb28pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrKCksIEZvbykKKworICAgICAgICBtb2NrID0gTW9jayhzaWRlX2VmZmVjdD1JdGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCksIG1vY2soKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgWyd0aGlzJywgJ2lzJywgJ2FuJywgJ2l0ZXInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3RfaXRlcmF0b3JfZXhjZXB0aW9ucyhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jazoKKyAgICAgICAgICAgIGl0ZXJhYmxlID0gKFZhbHVlRXJyb3IsIDMsIEtleUVycm9yLCA2KQorICAgICAgICAgICAgbSA9IEtsYXNzKHNpZGVfZWZmZWN0PWl0ZXJhYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSgpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0oKSwgNikKKworCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Rfc2V0dGluZ19pdGVyYXRvcihzZWxmKToKKyAgICAgICAgbW9jayA9IE1vY2soKQorICAgICAgICBtb2NrLnNpZGVfZWZmZWN0ID0gaXRlcihbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW21vY2soKSwgbW9jaygpLCBtb2NrKCldLCBbMSwgMiwgM10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIG1vY2spCisgICAgICAgIHNpZGVfZWZmZWN0ID0gbW9jay5zaWRlX2VmZmVjdAorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uoc2lkZV9lZmZlY3QsIHR5cGUoaXRlcihbXSkpKQorCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSBbJ2EnLCAnYicsICdjJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKV0sIFsnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbW9jaykKKyAgICAgICAgc2lkZV9lZmZlY3QgPSBtb2NrLnNpZGVfZWZmZWN0CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzaWRlX2VmZmVjdCwgdHlwZShpdGVyKFtdKSkpCisKKyAgICAgICAgdGhpc19pdGVyID0gSXRlcigpCisgICAgICAgIG1vY2suc2lkZV9lZmZlY3QgPSB0aGlzX2l0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbbW9jaygpLCBtb2NrKCksIG1vY2soKSwgbW9jaygpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3RoaXMnLCAnaXMnLCAnYW4nLCAnaXRlciddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydElzKG1vY2suc2lkZV9lZmZlY3QsIHRoaXNfaXRlcikKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2hhc19jYWxsc19hbnlfb3JkZXIoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jaygxLCAyKQorICAgICAgICBtb2NrKGE9MykKKyAgICAgICAgbW9jaygzLCA0KQorICAgICAgICBtb2NrKGI9NikKKyAgICAgICAgbW9jayhiPTYpCisKKyAgICAgICAga2FsbHMgPSBbCisgICAgICAgICAgICBjYWxsKDEsIDIpLCAoeydhJzogM30sKSwKKyAgICAgICAgICAgICgoMywgNCksKSwgKCgpLCB7J2EnOiAzfSksCisgICAgICAgICAgICAoJycsICgxLCAyKSksICgnJywgeydhJzogM30pLAorICAgICAgICAgICAgKCcnLCAoMSwgMiksIHt9KSwgKCcnLCAoKSwgeydhJzogM30pCisgICAgICAgIF0KKyAgICAgICAgZm9yIGthbGwgaW4ga2FsbHM6CisgICAgICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoW2thbGxdLCBhbnlfb3JkZXI9VHJ1ZSkKKworICAgICAgICBmb3Iga2FsbCBpbiBjYWxsKDEsICcyJyksIGNhbGwoYj0zKSwgY2FsbCgpLCAzLCBOb25lLCAnZm9vJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9oYXNfY2FsbHMsCisgICAgICAgICAgICAgICAgW2thbGxdLCBhbnlfb3JkZXI9VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgICAgIGthbGxfbGlzdHMgPSBbCisgICAgICAgICAgICBbY2FsbCgxLCAyKSwgY2FsbChiPTYpXSwKKyAgICAgICAgICAgIFtjYWxsKDMsIDQpLCBjYWxsKDEsIDIpXSwKKyAgICAgICAgICAgIFtjYWxsKGI9NiksIGNhbGwoYj02KV0sCisgICAgICAgIF0KKworICAgICAgICBmb3Iga2FsbF9saXN0IGluIGthbGxfbGlzdHM6CisgICAgICAgICAgICBtb2NrLmFzc2VydF9oYXNfY2FsbHMoa2FsbF9saXN0LCBhbnlfb3JkZXI9VHJ1ZSkKKworICAgICAgICBrYWxsX2xpc3RzID0gWworICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbChiPTYpLCBjYWxsKGI9NildLAorICAgICAgICAgICAgW2NhbGwoMSwgMiksIGNhbGwoMSwgMildLAorICAgICAgICAgICAgW2NhbGwoMywgNCksIGNhbGwoMSwgMiksIGNhbGwoNSwgNyldLAorICAgICAgICAgICAgW2NhbGwoYj02KSwgY2FsbCgzLCA0KSwgY2FsbChiPTYpLCBjYWxsKDEsIDIpLCBjYWxsKGI9NildLAorICAgICAgICBdCisgICAgICAgIGZvciBrYWxsX2xpc3QgaW4ga2FsbF9saXN0czoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLCBtb2NrLmFzc2VydF9oYXNfY2FsbHMsCisgICAgICAgICAgICAgICAga2FsbF9saXN0LCBhbnlfb3JkZXI9VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYXNzZXJ0X2hhc19jYWxscyhzZWxmKToKKyAgICAgICAga2FsbHMxID0gWworICAgICAgICAgICAgICAgIGNhbGwoMSwgMiksICh7J2EnOiAzfSwpLAorICAgICAgICAgICAgICAgICgoMywgNCksKSwgY2FsbChiPTYpLAorICAgICAgICAgICAgICAgICgnJywgKDEsKSwgeydiJzogNn0pLAorICAgICAgICBdCisgICAgICAgIGthbGxzMiA9IFtjYWxsLmZvbygpLCBjYWxsLmJhcigxKV0KKyAgICAgICAga2FsbHMyLmV4dGVuZChjYWxsLnNwYW0oKS5iYXooYT0zKS5jYWxsX2xpc3QoKSkKKyAgICAgICAga2FsbHMyLmV4dGVuZChjYWxsLmJhbShzZXQoKSwgZm9vPXt9KS5maXNoKFsxXSkuY2FsbF9saXN0KCkpCisKKyAgICAgICAgbW9ja3MgPSBbXQorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgbW9jaygxLCAyKQorICAgICAgICAgICAgbW9jayhhPTMpCisgICAgICAgICAgICBtb2NrKDMsIDQpCisgICAgICAgICAgICBtb2NrKGI9NikKKyAgICAgICAgICAgIG1vY2soMSwgYj02KQorICAgICAgICAgICAgbW9ja3MuYXBwZW5kKChtb2NrLCBrYWxsczEpKQorCisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5mb28oKQorICAgICAgICBtb2NrLmJhcigxKQorICAgICAgICBtb2NrLnNwYW0oKS5iYXooYT0zKQorICAgICAgICBtb2NrLmJhbShzZXQoKSwgZm9vPXt9KS5maXNoKFsxXSkKKyAgICAgICAgbW9ja3MuYXBwZW5kKChtb2NrLCBrYWxsczIpKQorCisgICAgICAgIGZvciBtb2NrLCBrYWxscyBpbiBtb2NrczoKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihrYWxscykpOgorICAgICAgICAgICAgICAgIGZvciBzdGVwIGluIDEsIDIsIDM6CisgICAgICAgICAgICAgICAgICAgIHRoZXNlID0ga2FsbHNbaTppK3N0ZXBdCisgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscyh0aGVzZSkKKworICAgICAgICAgICAgICAgICAgICBpZiBsZW4odGhlc2UpID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suYXNzZXJ0X2hhc19jYWxscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHJldmVyc2VkKHRoZXNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfYXNzZXJ0X2FueV9jYWxsKHNlbGYpOgorICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2soMSwgMikKKyAgICAgICAgbW9jayhhPTMpCisgICAgICAgIG1vY2soMSwgYj02KQorCisgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsKDEsIDIpCisgICAgICAgIG1vY2suYXNzZXJ0X2FueV9jYWxsKGE9MykKKyAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwoMSwgYj02KQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbAorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgQXNzZXJ0aW9uRXJyb3IsCisgICAgICAgICAgICBtb2NrLmFzc2VydF9hbnlfY2FsbCwKKyAgICAgICAgICAgIDEsIDMKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIEFzc2VydGlvbkVycm9yLAorICAgICAgICAgICAgbW9jay5hc3NlcnRfYW55X2NhbGwsCisgICAgICAgICAgICBhPTQKKyAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzX2NyZWF0ZV9hdXRvc3BlYyhzZWxmKToKKyAgICAgICAgZGVmIGYoYSwgYik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG9iaiA9IEl0ZXIoKQorICAgICAgICBvYmouZiA9IGYKKworICAgICAgICBmdW5jcyA9IFsKKyAgICAgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhmKSwKKyAgICAgICAgICAgIGNyZWF0ZV9hdXRvc3BlYyhvYmopLmYKKyAgICAgICAgXQorICAgICAgICBmb3IgZnVuYyBpbiBmdW5jczoKKyAgICAgICAgICAgIGZ1bmMoMSwgMikKKyAgICAgICAgICAgIGZ1bmMoMywgNCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBmdW5jLm1vY2tfY2FsbHMsIFtjYWxsKDEsIDIpLCBjYWxsKDMsIDQpXQorICAgICAgICAgICAgKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX2FkZF9zcGVjKHNlbGYpOgorICAgICAgICBjbGFzcyBfT25lKG9iamVjdCk6CisgICAgICAgICAgICBvbmUgPSAxCisgICAgICAgIGNsYXNzIF9Ud28ob2JqZWN0KToKKyAgICAgICAgICAgIHR3byA9IDIKKyAgICAgICAgY2xhc3MgQW55dGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIG9uZSA9IHR3byA9IHRocmVlID0gJ2ZvdXInCisKKyAgICAgICAga2xhc3NlcyA9IFsKKyAgICAgICAgICAgIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaworICAgICAgICBdCisgICAgICAgIGZvciBLbGFzcyBpbiBsaXN0KGtsYXNzZXMpOgorICAgICAgICAgICAga2xhc3Nlcy5hcHBlbmQobGFtYmRhIEs9S2xhc3M6IEsoc3BlYz1Bbnl0aGluZykpCisgICAgICAgICAgICBrbGFzc2VzLmFwcGVuZChsYW1iZGEgSz1LbGFzczogSyhzcGVjX3NldD1Bbnl0aGluZykpCisKKyAgICAgICAgZm9yIEtsYXNzIGluIGtsYXNzZXM6CisgICAgICAgICAgICBmb3Iga3dhcmdzIGluIGRpY3QoKSwgZGljdChzcGVjX3NldD1UcnVlKToKKyAgICAgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgICAgICNubyBlcnJvcgorICAgICAgICAgICAgICAgIG1vY2sub25lLCBtb2NrLnR3bywgbW9jay50aHJlZQorCisgICAgICAgICAgICAgICAgZm9yIE9uZSwgVHdvIGluIFsoX09uZSwgX1R3byksIChbJ29uZSddLCBbJ3R3byddKV06CisgICAgICAgICAgICAgICAgICAgIGZvciBrd2FyZ3MgaW4gZGljdCgpLCBkaWN0KHNwZWNfc2V0PVRydWUpOgorICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5tb2NrX2FkZF9zcGVjKE9uZSwgKiprd2FyZ3MpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2sub25lCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ3R3bycKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAndGhyZWUnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAnc3BlY19zZXQnIGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG1vY2ssICd0aHJlZScsIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhUd28sICoqa3dhcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICdvbmUnCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLnR3bworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2ssICd0aHJlZScKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICdzcGVjX3NldCcgaW4ga3dhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgbW9jaywgJ3RocmVlJywgTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICMgbm90ZSB0aGF0IGNyZWF0aW5nIGEgbW9jaywgc2V0dGluZyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGFuZAorICAgICAgICAgICAgIyAqdGhlbiogc2V0dGluZyBhIHNwZWMgZG9lc24ndCB3b3JrLiBOb3QgdGhlIGludGVuZGVkIHVzZSBjYXNlCisKKworICAgIGRlZiB0ZXN0X21vY2tfYWRkX3NwZWNfbWFnaWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgZm9yIEtsYXNzIGluIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgaW50KG1vY2spCisKKyAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhvYmplY3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGludCwgbW9jaykKKworICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIG1vY2tbJ2ZvbyddCisgICAgICAgICAgICBtb2NrLl9faW50X18ucmV0dXJuX3ZhbHVlID00CisKKyAgICAgICAgICAgIG1vY2subW9ja19hZGRfc3BlYyhpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChtb2NrKSwgNCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiBtb2NrWydmb28nXSkKKworCisgICAgZGVmIHRlc3RfYWRkaW5nX2NoaWxkX21vY2soc2VsZik6CisgICAgICAgIGZvciBLbGFzcyBpbiBOb25DYWxsYWJsZU1vY2ssIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2s6CisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorCisgICAgICAgICAgICBtb2NrLmZvbyA9IE1vY2soKQorICAgICAgICAgICAgbW9jay5mb28oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbY2FsbC5mb28oKV0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW2NhbGwuZm9vKCldKQorCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5iYXIgPSBNb2NrKG5hbWU9J25hbWUnKQorICAgICAgICAgICAgbW9jay5iYXIoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLm1ldGhvZF9jYWxscywgW10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgW10pCisKKyAgICAgICAgICAgICMgbW9jayB3aXRoIGFuIGV4aXN0aW5nIF9uZXdfcGFyZW50IGJ1dCBubyBuYW1lCisgICAgICAgICAgICBtb2NrID0gS2xhc3MoKQorICAgICAgICAgICAgbW9jay5iYXogPSBNYWdpY01vY2soKSgpCisgICAgICAgICAgICBtb2NrLmJheigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subWV0aG9kX2NhbGxzLCBbXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbXSkKKworCisgICAgZGVmIHRlc3RfYWRkaW5nX3JldHVybl92YWx1ZV9tb2NrKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgbW9jayA9IEtsYXNzKCkKKyAgICAgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gTWFnaWNNb2NrKCkKKworICAgICAgICAgICAgbW9jaygpKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5tb2NrX2NhbGxzLCBbY2FsbCgpLCBjYWxsKCkoKV0pCisKKworICAgIGRlZiB0ZXN0X21hbmFnZXJfbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBvbmUgPSAnb25lJworICAgICAgICAgICAgdHdvID0gJ3R3bycKKyAgICAgICAgbWFuYWdlciA9IE1vY2soKQorICAgICAgICBwMSA9IHBhdGNoLm9iamVjdChGb28sICdvbmUnKQorICAgICAgICBwMiA9IHBhdGNoLm9iamVjdChGb28sICd0d28nKQorCisgICAgICAgIG1vY2tfb25lID0gcDEuc3RhcnQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocDEuc3RvcCkKKyAgICAgICAgbW9ja190d28gPSBwMi5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwMi5zdG9wKQorCisgICAgICAgIG1hbmFnZXIuYXR0YWNoX21vY2sobW9ja19vbmUsICdvbmUnKQorICAgICAgICBtYW5hZ2VyLmF0dGFjaF9tb2NrKG1vY2tfdHdvLCAndHdvJykKKworICAgICAgICBGb28udHdvKCkKKyAgICAgICAgRm9vLm9uZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYW5hZ2VyLm1vY2tfY2FsbHMsIFtjYWxsLnR3bygpLCBjYWxsLm9uZSgpXSkKKworCisgICAgZGVmIHRlc3RfbWFnaWNfbWV0aG9kc19tb2NrX2NhbGxzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG0uX19pbnRfXyA9IE1vY2socmV0dXJuX3ZhbHVlPTMpCisgICAgICAgICAgICBtLl9fZmxvYXRfXyA9IE1hZ2ljTW9jayhyZXR1cm5fdmFsdWU9My4wKQorICAgICAgICAgICAgaW50KG0pCisgICAgICAgICAgICBmbG9hdChtKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgW2NhbGwuX19pbnRfXygpLCBjYWxsLl9fZmxvYXRfXygpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tZXRob2RfY2FsbHMsIFtdKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfZGVsZXRpb24oc2VsZik6CisgICAgICAgICMgdGhpcyBiZWhhdmlvdXIgaXNuJ3QgKnVzZWZ1bCosIGJ1dCBhdCBsZWFzdCBpdCdzIG5vdyB0ZXN0ZWQuLi4KKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2ssIE1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNYWdpY01vY2ssIE5vbkNhbGxhYmxlTW9jazoKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBvcmlnaW5hbCA9IG0uZm9vCisgICAgICAgICAgICBtLmZvbyA9IDMKKyAgICAgICAgICAgIGRlbCBtLmZvbworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgICAgIG5ldyA9IG0uZm9vID0gTW9jaygpCisgICAgICAgICAgICBkZWwgbS5mb28KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5mb28sIG5ldykKKworCisgICAgZGVmIHRlc3RfbW9ja19wYXJlbnRzKHNlbGYpOgorICAgICAgICBmb3IgS2xhc3MgaW4gTW9jaywgTWFnaWNNb2NrOgorICAgICAgICAgICAgbSA9IEtsYXNzKCkKKyAgICAgICAgICAgIG9yaWdpbmFsX3JlcHIgPSByZXByKG0pCisgICAgICAgICAgICBtLnJldHVybl92YWx1ZSA9IG0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobSgpLCBtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCBvcmlnaW5hbF9yZXByKQorCisgICAgICAgICAgICBtLnJlc2V0X21vY2soKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtKCksIG0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksIG9yaWdpbmFsX3JlcHIpCisKKyAgICAgICAgICAgIG0gPSBLbGFzcygpCisgICAgICAgICAgICBtLmIgPSBtLmEKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmEnIiwgcmVwcihtLmEpKQorICAgICAgICAgICAgbS5yZXNldF9tb2NrKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm5hbWU9J21vY2suYSciLCByZXByKG0uYikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmEnIiwgcmVwcihtLmEpKQorCisgICAgICAgICAgICBtID0gS2xhc3MoKQorICAgICAgICAgICAgb3JpZ2luYWxfcmVwciA9IHJlcHIobSkKKyAgICAgICAgICAgIG0uYSA9IG0oKQorICAgICAgICAgICAgbS5hLnJldHVybl92YWx1ZSA9IG0KKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0pLCBvcmlnaW5hbF9yZXByKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG0uYSgpKSwgb3JpZ2luYWxfcmVwcikKKworCisgICAgZGVmIHRlc3RfYXR0YWNoX21vY2soc2VsZik6CisgICAgICAgIGNsYXNzZXMgPSBNb2NrLCBNYWdpY01vY2ssIE5vbkNhbGxhYmxlTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1vY2sKKyAgICAgICAgZm9yIEtsYXNzIGluIGNsYXNzZXM6CisgICAgICAgICAgICBmb3IgS2xhc3MyIGluIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgbSA9IEtsYXNzKCkKKworICAgICAgICAgICAgICAgIG0yID0gS2xhc3MyKG5hbWU9J2ZvbycpCisgICAgICAgICAgICAgICAgbS5hdHRhY2hfbW9jayhtMiwgJ2JhcicpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0uYmFyLCBtMikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJuYW1lPSdtb2NrLmJhciciLCByZXByKG0yKSkKKworICAgICAgICAgICAgICAgIG0uYmFyLmJheigxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBbY2FsbC5iYXIuYmF6KDEpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzLCBbY2FsbC5iYXIuYmF6KDEpXSkKKworCisgICAgZGVmIHRlc3RfYXR0YWNoX21vY2tfcmV0dXJuX3ZhbHVlKHNlbGYpOgorICAgICAgICBjbGFzc2VzID0gTW9jaywgTWFnaWNNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTm9uQ2FsbGFibGVNb2NrCisgICAgICAgIGZvciBLbGFzcyBpbiBNb2NrLCBNYWdpY01vY2s6CisgICAgICAgICAgICBmb3IgS2xhc3MyIGluIGNsYXNzZXM6CisgICAgICAgICAgICAgICAgbSA9IEtsYXNzKCkKKworICAgICAgICAgICAgICAgIG0yID0gS2xhc3MyKG5hbWU9J2ZvbycpCisgICAgICAgICAgICAgICAgbS5hdHRhY2hfbW9jayhtMiwgJ3JldHVybl92YWx1ZScpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKG0oKSwgbTIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibmFtZT0nbW9jaygpJyIsIHJlcHIobTIpKQorCisgICAgICAgICAgICAgICAgbTIuZm9vKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywgY2FsbCgpLmZvbygpLmNhbGxfbGlzdCgpKQorCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVfZGVsZXRpb24oc2VsZik6CisgICAgICAgIGZvciBtb2NrIGluIE1vY2soKSwgTWFnaWNNb2NrKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihtb2NrLCAnbScpKQorCisgICAgICAgICAgICBkZWwgbW9jay5tCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIobW9jaywgJ20nKSkKKworICAgICAgICAgICAgZGVsIG1vY2suZgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKG1vY2ssICdmJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jaywgJ2YnKQorCisKKyAgICBkZWYgdGVzdF9jbGFzc19hc3NpZ25hYmxlKHNlbGYpOgorICAgICAgICBmb3IgbW9jayBpbiBNb2NrKCksIE1hZ2ljTW9jaygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1vY2ssIGludCkKKworICAgICAgICAgICAgbW9jay5fX2NsYXNzX18gPSBpbnQKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLCBpbnQpCisgICAgICAgICAgICBtb2NrLmZvbworCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weSBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RwYXRjaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTA5MWI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHBhdGNoLnB5CkBAIC0wLDAgKzEsMTc4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDctMjAxMiBNaWNoYWVsIEZvb3JkICYgdGhlIG1vY2sgdGVhbQorIyBFLW1haWw6IGZ1enp5bWFuIEFUIHZvaWRzcGFjZSBET1Qgb3JnIERPVCB1aworIyBodHRwOi8vd3d3LnZvaWRzcGFjZS5vcmcudWsvcHl0aG9uL21vY2svCisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QudGVzdC50ZXN0bW9jayBpbXBvcnQgc3VwcG9ydAorZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IFNvbWVDbGFzcywgaXNfaW5zdGFuY2UKKworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCAoCisgICAgTm9uQ2FsbGFibGVNb2NrLCBDYWxsYWJsZU1peGluLCBwYXRjaCwgc2VudGluZWwsCisgICAgTWFnaWNNb2NrLCBNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgcGF0Y2gsIF9wYXRjaCwKKyAgICBERUZBVUxULCBjYWxsLCBfZ2V0X3RhcmdldAorKQorCisKK2J1aWx0aW5fc3RyaW5nID0gJ2J1aWx0aW5zJworCitQVE1vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorTU9ETkFNRSA9ICclcy5QVE1vZHVsZScgJSBfX25hbWVfXworCisKK2RlZiBfZ2V0X3Byb3h5KG9iaiwgZ2V0X29ubHk9VHJ1ZSk6CisgICAgY2xhc3MgUHJveHkob2JqZWN0KToKKyAgICAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCBuYW1lKQorICAgIGlmIG5vdCBnZXRfb25seToKKyAgICAgICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgICAgIHNldGF0dHIob2JqLCBuYW1lLCB2YWx1ZSkKKyAgICAgICAgZGVmIF9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAgZGVsYXR0cihvYmosIG5hbWUpCisgICAgICAgIFByb3h5Ll9fc2V0YXR0cl9fID0gX19zZXRhdHRyX18KKyAgICAgICAgUHJveHkuX19kZWxhdHRyX18gPSBfX2RlbGF0dHJfXworICAgIHJldHVybiBQcm94eSgpCisKKworIyBmb3IgdXNlIGluIHRoZSB0ZXN0Citzb21ldGhpbmcgID0gc2VudGluZWwuU29tZXRoaW5nCitzb21ldGhpbmdfZWxzZSAgPSBzZW50aW5lbC5Tb21ldGhpbmdFbHNlCisKKworY2xhc3MgRm9vKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICBwYXNzCisgICAgZGVmIGYoc2VsZiwgYSk6CisgICAgICAgIHBhc3MKKyAgICBkZWYgZyhzZWxmKToKKyAgICAgICAgcGFzcworICAgIGZvbyA9ICdiYXInCisKKyAgICBjbGFzcyBCYXIob2JqZWN0KToKKyAgICAgICAgZGVmIGEoc2VsZik6CisgICAgICAgICAgICBwYXNzCisKK2Zvb19uYW1lID0gJyVzLkZvbycgJSBfX25hbWVfXworCisKK2RlZiBmdW5jdGlvbihhLCBiPUZvbyk6CisgICAgcGFzcworCisKK2NsYXNzIENvbnRhaW5lcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi52YWx1ZXMgPSB7fQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIG5hbWUpOgorICAgICAgICByZXR1cm4gc2VsZi52YWx1ZXNbbmFtZV0KKworICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBuYW1lLCB2YWx1ZSk6CisgICAgICAgIHNlbGYudmFsdWVzW25hbWVdID0gdmFsdWUKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBuYW1lKToKKyAgICAgICAgZGVsIHNlbGYudmFsdWVzW25hbWVdCisKKyAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBpdGVyKHNlbGYudmFsdWVzKQorCisKKworY2xhc3MgUGF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBhc3NlcnROb3RDYWxsYWJsZShzZWxmLCBvYmosIG1hZ2ljPVRydWUpOgorICAgICAgICBNb2NrQ2xhc3MgPSBOb25DYWxsYWJsZU1hZ2ljTW9jaworICAgICAgICBpZiBub3QgbWFnaWM6CisgICAgICAgICAgICBNb2NrQ2xhc3MgPSBOb25DYWxsYWJsZU1vY2sKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9iaikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKG9iaiwgTW9ja0NsYXNzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc19pbnN0YW5jZShvYmosIENhbGxhYmxlTWl4aW4pKQorCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfcGF0Y2hvYmplY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQsICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX25vbmUoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIE5vbmUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShTb21ldGhpbmcuYXR0cmlidXRlLCAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfcGF0Y2hvYmplY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIFNvbWV0aGluZyhvYmplY3QpOgorICAgICAgICAgICAgYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwKKyAgICAgICAgICAgIG5leHRfYXR0cmlidXRlID0gc2VudGluZWwuT3JpZ2luYWwyCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21ldGhpbmcsICdhdHRyaWJ1dGUnLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ25leHRfYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZDIpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcubmV4dF9hdHRyaWJ1dGUsIHNlbnRpbmVsLlBhdGNoZWQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcubmV4dF9hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3Rfb2JqZWN0X2xvb2t1cF9pc19xdWl0ZV9sYXp5KHNlbGYpOgorICAgICAgICBnbG9iYWwgc29tZXRoaW5nCisgICAgICAgIG9yaWdpbmFsID0gc29tZXRoaW5nCisgICAgICAgIEBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fLCBzZW50aW5lbC5Tb21ldGhpbmcyKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHNlbnRpbmVsLnJlcGxhY2VtZW50X3ZhbHVlCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5yZXBsYWNlbWVudF92YWx1ZSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IG9yaWdpbmFsCisKKworICAgIGRlZiB0ZXN0X3BhdGNoKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMikKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICBAcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMikKKyAgICAgICAgQHBhdGNoKCclcy5zb21ldGhpbmdfZWxzZScgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nRWxzZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUFRNb2R1bGUuc29tZXRoaW5nX2Vsc2UsIHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKyAgICAgICAgIyBUZXN0IHRoZSBwYXRjaGluZyBhbmQgcmVzdG9yaW5nIHdvcmtzIGEgc2Vjb25kIHRpbWUKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworICAgICAgICBtb2NrID0gTW9jaygpCisgICAgICAgIG1vY2sucmV0dXJuX3ZhbHVlID0gc2VudGluZWwuSGFuZGxlCisgICAgICAgIEBwYXRjaCgnJXMub3BlbicgJSBidWlsdGluX3N0cmluZywgbW9jaykKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlbignZmlsZW5hbWUnLCAncicpLCBzZW50aW5lbC5IYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVuIG5vdCBwYXRjaGVkIikKKyAgICAgICAgdGVzdCgpCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3BlbiwgbW9jaywgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NsYXNzX2F0dHJpYnV0ZShzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlJyAlIF9fbmFtZV9fLAorICAgICAgICAgICAgICAgc2VudGluZWwuQ2xhc3NBdHRyaWJ1dGUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLlNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbmVsLkNsYXNzQXR0cmlidXRlLCAidW5wYXRjaGVkIikKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoUFRNb2R1bGUuU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3dpdGhfZGVmYXVsdF9tb2NrKHNlbGYpOgorICAgICAgICBjbGFzcyBUZXN0KG9iamVjdCk6CisgICAgICAgICAgICBzb21ldGhpbmcgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgc29tZXRoaW5nMiA9IHNlbnRpbmVsLk9yaWdpbmFsMgorCisgICAgICAgIEBwYXRjaC5vYmplY3QoVGVzdCwgJ3NvbWV0aGluZycpCisgICAgICAgIGRlZiB0ZXN0KG1vY2spOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrLCBUZXN0LnNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1vY2sgbm90IHBhc3NlZCBpbnRvIHRlc3QgZnVuY3Rpb24iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIE1hZ2ljTW9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggd2l0aCB0d28gYXJndW1lbnRzIGRpZCBub3QgY3JlYXRlIGEgbW9jayIpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nJykKKyAgICAgICAgQHBhdGNoLm9iamVjdChUZXN0LCAnc29tZXRoaW5nMicpCisgICAgICAgIGRlZiB0ZXN0KHRoaXMxLCB0aGlzMiwgbW9jazEsIG1vY2syKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpczEsIHNlbnRpbmVsLnRoaXMxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0Y2hlZCBmdW5jdGlvbiBkaWRuJ3QgcmVjZWl2ZSBpbml0aWFsIGFyZ3VtZW50IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpczIsIHNlbnRpbmVsLnRoaXMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGF0Y2hlZCBmdW5jdGlvbiBkaWRuJ3QgcmVjZWl2ZSBzZWNvbmQgYXJndW1lbnQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrMSwgVGVzdC5zb21ldGhpbmcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9jayBub3QgcGFzc2VkIGludG8gdGVzdCBmdW5jdGlvbiIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2syLCBUZXN0LnNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlY29uZCBNb2NrIG5vdCBwYXNzZWQgaW50byB0ZXN0IGZ1bmN0aW9uIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrMiwgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrMiwgTWFnaWNNb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCB3aXRoIHR3byBhcmd1bWVudHMgZGlkIG5vdCBjcmVhdGUgYSBtb2NrIikKKworICAgICAgICAgICAgIyBBIGhhY2sgdG8gdGVzdCB0aGF0IG5ldyBtb2NrcyBhcmUgcGFzc2VkIHRoZSBzZWNvbmQgdGltZQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvdXRlck1vY2sxLCBtb2NrMSwgInVuZXhwZWN0ZWQgdmFsdWUgZm9yIG1vY2sxIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3V0ZXJNb2NrMiwgbW9jazIsICJ1bmV4cGVjdGVkIHZhbHVlIGZvciBtb2NrMSIpCisgICAgICAgICAgICByZXR1cm4gbW9jazEsIG1vY2syCisKKyAgICAgICAgb3V0ZXJNb2NrMSA9IG91dGVyTW9jazIgPSBOb25lCisgICAgICAgIG91dGVyTW9jazEsIG91dGVyTW9jazIgPSB0ZXN0KHNlbnRpbmVsLnRoaXMxLCBzZW50aW5lbC50aGlzMikKKworICAgICAgICAjIFRlc3QgdGhhdCBleGVjdXRpbmcgYSBzZWNvbmQgdGltZSBjcmVhdGVzIG5ldyBtb2NrcworICAgICAgICB0ZXN0KHNlbnRpbmVsLnRoaXMxLCBzZW50aW5lbC50aGlzMikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zcGVjKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1Tb21lQ2xhc3MpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoU29tZUNsYXNzLndpYmJsZSwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IFNvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF93aXRoX3NwZWMoc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfYXR0cmlidXRlJywgc3BlYz1Tb21lQ2xhc3MpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tBdHRyaWJ1dGUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLCBNb2NrQXR0cmlidXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy5jbGFzc19hdHRyaWJ1dGUud2liYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1bJ3dpYmJsZSddKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy53aWJibGUsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBTb21lQ2xhc3Mubm90X3dpYmJsZSkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnY2xhc3NfYXR0cmlidXRlJywgc3BlYz1bJ3dpYmJsZSddKQorICAgICAgICBkZWYgdGVzdChNb2NrQXR0cmlidXRlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZSwgTW9ja0F0dHJpYnV0ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlLndpYmJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYTogU29tZUNsYXNzLmNsYXNzX2F0dHJpYnV0ZS5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfcGF0Y2hfd2l0aF9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgICMgcmVncmVzc2lvbiB0ZXN0IGZvciBuZXN0ZWQgZGVjb3JhdG9ycworICAgICAgICBAcGF0Y2goJyVzLm9wZW4nICUgYnVpbHRpbl9zdHJpbmcpCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjPVsnd2liYmxlJ10pCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MsIE1vY2tPcGVuKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKFNvbWVDbGFzcy53aWJibGUsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBTb21lQ2xhc3Mubm90X3dpYmJsZSkKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfc3BlY19hc19ib29sZWFuKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrU29tZUNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZUNsYXNzLCBNb2NrU29tZUNsYXNzKQorICAgICAgICAgICAgIyBTaG91bGQgbm90IHJhaXNlIGF0dHJpYnV0ZSBlcnJvcgorICAgICAgICAgICAgTW9ja1NvbWVDbGFzcy53aWJibGUKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGxhbWJkYTogTW9ja1NvbWVDbGFzcy5ub3Rfd2liYmxlKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9vYmplY3Rfd2l0aF9zcGVjX2FzX2Jvb2xlYW4oc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoUFRNb2R1bGUsICdTb21lQ2xhc3MnLCBzcGVjPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tTb21lQ2xhc3MpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MsIE1vY2tTb21lQ2xhc3MpCisgICAgICAgICAgICAjIFNob3VsZCBub3QgcmFpc2UgYXR0cmlidXRlIGVycm9yCisgICAgICAgICAgICBNb2NrU29tZUNsYXNzLndpYmJsZQorCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgbGFtYmRhOiBNb2NrU29tZUNsYXNzLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NsYXNzX2FjdHNfd2l0aF9zcGVjX2lzX2luaGVyaXRlZChzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sIHNwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoTW9ja1NvbWVDbGFzcyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoTW9ja1NvbWVDbGFzcywgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIGluc3RhbmNlID0gTW9ja1NvbWVDbGFzcygpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKGluc3RhbmNlKQorICAgICAgICAgICAgIyBTaG91bGQgbm90IHJhaXNlIGF0dHJpYnV0ZSBlcnJvcgorICAgICAgICAgICAgaW5zdGFuY2Uud2liYmxlCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IGluc3RhbmNlLm5vdF93aWJibGUpCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfY3JlYXRlX21vY2tzX25vbl9leGlzdGVudF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLmZyb29ibGUnICUgYnVpbHRpbl9zdHJpbmcsIHNlbnRpbmVsLkZyb29ibGUsIGNyZWF0ZT1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmcm9vYmxlLCBzZW50aW5lbC5Gcm9vYmxlKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGxhbWJkYTogZnJvb2JsZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd2l0aF9jcmVhdGVfbW9ja3Nfbm9uX2V4aXN0ZW50X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZUNsYXNzLCAnZnJvb2JsZScsIHNlbnRpbmVsLkZyb29ibGUsIGNyZWF0ZT1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21lQ2xhc3MuZnJvb2JsZSwgc2VudGluZWwuRnJvb2JsZSkKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFNvbWVDbGFzcywgJ2Zyb29ibGUnKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd29udF9jcmVhdGVfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQHBhdGNoKCclcy5mcm9vYmxlJyAlIGJ1aWx0aW5fc3RyaW5nLCBzZW50aW5lbC5Gcm9vYmxlKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZyb29ibGUsIHNlbnRpbmVsLkZyb29ibGUpCisKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGxhbWJkYTogZnJvb2JsZSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hvYmplY3Rfd29udF9jcmVhdGVfYnlfZGVmYXVsdChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsICdmcm9vYmxlJywgc2VudGluZWwuRnJvb2JsZSkKKyAgICAgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdQYXRjaGluZyBub24gZXhpc3RlbnQgYXR0cmlidXRlcyBzaG91bGQgZmFpbCcpCisKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1BhdGNoaW5nIG5vbiBleGlzdGVudCBhdHRyaWJ1dGVzIHNob3VsZCBmYWlsJykKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKFNvbWVDbGFzcywgJ2Zyb29ibGUnKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfd2l0aF9zdGF0aWNfbWV0aG9kcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgd29vdCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZW50aW5lbC5TdGF0aWMKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ3dvb3QnLCBzdGF0aWNtZXRob2QobGFtYmRhOiBzZW50aW5lbC5QYXRjaGVkKSkKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28ud29vdCgpLCBzZW50aW5lbC5QYXRjaGVkKQorICAgICAgICBhbm9ueW1vdXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLndvb3QoKSwgc2VudGluZWwuU3RhdGljKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9sb2NhbChzZWxmKToKKyAgICAgICAgZm9vID0gc2VudGluZWwuRm9vCisgICAgICAgIEBwYXRjaC5vYmplY3Qoc2VudGluZWwsICdGb28nLCAnRm9vJykKKyAgICAgICAgZGVmIGFub255bW91cygpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZW50aW5lbC5Gb28sICdGb28nKQorICAgICAgICBhbm9ueW1vdXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudGluZWwuRm9vLCBmb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3Nsb3RzKHNlbGYpOgorICAgICAgICBjbGFzcyBGb28ob2JqZWN0KToKKyAgICAgICAgICAgIF9fc2xvdHNfXyA9ICgnRm9vJywpCisKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgZm9vLkZvbyA9IHNlbnRpbmVsLkZvbworCisgICAgICAgIEBwYXRjaC5vYmplY3QoZm9vLCAnRm9vJywgJ0ZvbycpCisgICAgICAgIGRlZiBhbm9ueW1vdXMoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLkZvbywgJ0ZvbycpCisgICAgICAgIGFub255bW91cygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uRm9vLCBzZW50aW5lbC5Gb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X2NsYXNzX2RlY29yYXRvcihzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKG90aGVyX3NlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgZGVmIG5vdF90ZXN0X21ldGhvZChvdGhlcl9zZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi10ZXN0IG1ldGhvZCBwYXRjaGVkIikKKworICAgICAgICBGb28gPSBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkoRm9vKQorCisgICAgICAgIGYgPSBGb28oKQorICAgICAgICBmLnRlc3RfbWV0aG9kKCkKKyAgICAgICAgZi5ub3RfdGVzdF9tZXRob2QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuT3JpZ2luYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgInBhdGNoIG5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2NsYXNzX2RlY29yYXRvcihzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kKG90aGVyX3NlbGYsIG1vY2tfc29tZXRoaW5nKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIGRlZiBub3RfdGVzdF9tZXRob2Qob3RoZXJfc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQVE1vZHVsZS5zb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tdGVzdCBtZXRob2QgcGF0Y2hlZCIpCisgICAgICAgIEZvbyA9IHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pKEZvbykKKworICAgICAgICBmID0gRm9vKCkKKyAgICAgICAgZi50ZXN0X21ldGhvZCgpCisgICAgICAgIGYubm90X3Rlc3RfbWV0aG9kKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5hdHRyaWJ1dGUsIHNlbnRpbmVsLk9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBUTW9kdWxlLnNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJwYXRjaCBub3QgcmVzdG9yZWQiKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaG9iamVjdF90d2ljZShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBhdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbAorICAgICAgICAgICAgbmV4dF9hdHRyaWJ1dGUgPSBzZW50aW5lbC5PcmlnaW5hbDIKKworICAgICAgICBAcGF0Y2gub2JqZWN0KFNvbWV0aGluZywgJ2F0dHJpYnV0ZScsIHNlbnRpbmVsLlBhdGNoZWQpCisgICAgICAgIEBwYXRjaC5vYmplY3QoU29tZXRoaW5nLCAnYXR0cmlidXRlJywgc2VudGluZWwuUGF0Y2hlZCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU29tZXRoaW5nLmF0dHJpYnV0ZSwgc2VudGluZWwuUGF0Y2hlZCwgInVucGF0Y2hlZCIpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuYXR0cmlidXRlLCBzZW50aW5lbC5PcmlnaW5hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2ggbm90IHJlc3RvcmVkIikKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdChzZWxmKToKKyAgICAgICAgZm9vID0geydpbml0aWFsJzogb2JqZWN0KCksICdvdGhlcic6ICdzb21ldGhpbmcnfQorICAgICAgICBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGRlbCBmb29bJ2luaXRpYWwnXQorICAgICAgICAgICAgZm9vWydvdGhlciddID0gJ3NvbWV0aGluZyBlbHNlJworCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmb28pLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb29bJ2EnXSwgJ2InKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCBvcmlnaW5hbCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIFsoJ2EnLCAnYicpXSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvbyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvb1snYSddLCAnYicpCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfY29udGFpbmVyX29iamVjdChzZWxmKToKKyAgICAgICAgZm9vID0gQ29udGFpbmVyKCkKKyAgICAgICAgZm9vWydpbml0aWFsJ10gPSBvYmplY3QoKQorICAgICAgICBmb29bJ290aGVyJ10gPSAgJ3NvbWV0aGluZycKKworICAgICAgICBvcmlnaW5hbCA9IGZvby52YWx1ZXMuY29weSgpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgZm9vWydhJ10gPSAzCisgICAgICAgICAgICBkZWwgZm9vWydpbml0aWFsJ10KKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGZvby52YWx1ZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb29bJ2EnXSwgJ2InKQorCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfd2l0aF9jbGVhcihzZWxmKToKKyAgICAgICAgZm9vID0geydpbml0aWFsJzogb2JqZWN0KCksICdvdGhlcic6ICdzb21ldGhpbmcnfQorICAgICAgICBvcmlnaW5hbCA9IGZvby5jb3B5KCkKKworICAgICAgICBAcGF0Y2guZGljdChmb28sIGNsZWFyPVRydWUpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywge30pCisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgb3JpZ2luYWwpCisKKyAgICAgICAgQHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9LCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgWygnYScsICdiJyldLCBjbGVhcj1UcnVlKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisKKyAgICAgICAgdGVzdCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9kaWN0X3dpdGhfY29udGFpbmVyX29iamVjdF9hbmRfY2xlYXIoc2VsZik6CisgICAgICAgIGZvbyA9IENvbnRhaW5lcigpCisgICAgICAgIGZvb1snaW5pdGlhbCddID0gb2JqZWN0KCkKKyAgICAgICAgZm9vWydvdGhlciddID0gICdzb21ldGhpbmcnCisKKyAgICAgICAgb3JpZ2luYWwgPSBmb28udmFsdWVzLmNvcHkoKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywge30pCisgICAgICAgICAgICBmb29bJ2EnXSA9IDMKKyAgICAgICAgICAgIGZvb1snb3RoZXInXSA9ICdzb21ldGhpbmcgZWxzZScKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSwgY2xlYXI9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnZhbHVlcywgeydhJzogJ2InfSkKKworICAgICAgICB0ZXN0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby52YWx1ZXMsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9uYW1lX3ByZXNlcnZlZChzZWxmKToKKyAgICAgICAgZm9vID0ge30KKworICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgb2JqZWN0KCkpCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBvYmplY3QoKSwgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChTb21lQ2xhc3MsIG9iamVjdCgpKQorICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgIGRlZiBzb21lX25hbWUoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWVfbmFtZS5fX25hbWVfXywgJ3NvbWVfbmFtZScpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3dpdGhfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBmb28gPSB7fQorCisgICAgICAgIEBwYXRjaC5kaWN0KGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHJhaXNlIE5hbWVFcnJvcignS29ucmFkJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdCgpCisgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ05hbWVFcnJvciBub3QgcmFpc2VkIGJ5IHRlc3QnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF93aXRoX3N0cmluZyhzZWxmKToKKyAgICAgICAgQHBhdGNoLmRpY3QoJ29zLmVudmlyb24nLCB7J2tvbnJhZF9kZWxvbmcnOiAnc29tZSB2YWx1ZSd9KQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigna29ucmFkX2RlbG9uZycsIG9zLmVudmlyb24pCisKKyAgICAgICAgdGVzdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2Rlc2NyaXB0b3Ioc2VsZik6CisgICAgICAgICMgd291bGQgYmUgc29tZSBlZmZvcnQgdG8gZml4IHRoaXMgLSB3ZSBjb3VsZCBzcGVjaWFsIGNhc2UgdGhlCisgICAgICAgICMgYnVpbHRpbiBkZXNjcmlwdG9yczogY2xhc3NtZXRob2QsIHByb3BlcnR5LCBzdGF0aWNtZXRob2QKKyAgICAgICAgcmV0dXJuCisgICAgICAgIGNsYXNzIE5vdGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IE5vbmUKKworICAgICAgICBjbGFzcyBTb21ldGhpbmcob2JqZWN0KToKKyAgICAgICAgICAgIGZvbyA9IHt9CisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoTm90aGluZywgJ2ZvbycsIDIpCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBrbGFzcyhjbHMpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoY2xzLCBTb21ldGhpbmcpCisKKyAgICAgICAgICAgIEBwYXRjaC5vYmplY3QoTm90aGluZywgJ2ZvbycsIDIpCisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgc3RhdGljKGFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZworCisgICAgICAgICAgICBAcGF0Y2guZGljdChmb28pCisgICAgICAgICAgICBAY2xhc3NtZXRob2QKKyAgICAgICAgICAgIGRlZiBrbGFzc19kaWN0KGNscyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjbHMsIFNvbWV0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLmRpY3QoZm9vKQorICAgICAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICAgICAgZGVmIHN0YXRpY19kaWN0KGFyZyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZworCisgICAgICAgICMgdGhlc2Ugd2lsbCByYWlzZSBleGNlcHRpb25zIGlmIHBhdGNoaW5nIGRlc2NyaXB0b3JzIGlzIGJyb2tlbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNvbWV0aGluZy5zdGF0aWMoJ2YwMCcpLCAnZjAwJykKKyAgICAgICAgU29tZXRoaW5nLmtsYXNzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTb21ldGhpbmcuc3RhdGljX2RpY3QoJ2YwMCcpLCAnZjAwJykKKyAgICAgICAgU29tZXRoaW5nLmtsYXNzX2RpY3QoKQorCisgICAgICAgIHNvbWV0aGluZyA9IFNvbWV0aGluZygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLnN0YXRpYygnZjAwJyksICdmMDAnKQorICAgICAgICBzb21ldGhpbmcua2xhc3MoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZy5zdGF0aWNfZGljdCgnZjAwJyksICdmMDAnKQorICAgICAgICBzb21ldGhpbmcua2xhc3NfZGljdCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3NwZWNfc2V0KHNlbGYpOgorICAgICAgICBAcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgc3BlYz1Tb21lQ2xhc3MsIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChzdXBwb3J0LCAnU29tZUNsYXNzJywgc3BlYz1Tb21lQ2xhc3MsIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgTW9ja0NsYXNzLnogPSAnZm9vJworCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0ZXN0KQorCisgICAgICAgIEBwYXRjaC5vYmplY3Qoc3VwcG9ydCwgJ1NvbWVDbGFzcycsIHNwZWNfc2V0PVRydWUpCisgICAgICAgIGRlZiB0ZXN0KE1vY2tDbGFzcyk6CisgICAgICAgICAgICBNb2NrQ2xhc3MueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0X2luaGVyaXQoc2VsZik6CisgICAgICAgIEBwYXRjaCgnJXMuU29tZUNsYXNzJyAlIF9fbmFtZV9fLCBzcGVjX3NldD1UcnVlKQorICAgICAgICBkZWYgdGVzdChNb2NrQ2xhc3MpOgorICAgICAgICAgICAgaW5zdGFuY2UgPSBNb2NrQ2xhc3MoKQorICAgICAgICAgICAgaW5zdGFuY2UueiA9ICdmb28nCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHRlc3QpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gc29tZXRoaW5nCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKQorICAgICAgICBzZWxmLmFzc2VydElzKHNvbWV0aGluZywgb3JpZ2luYWwpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtb2NrLCBvcmlnaW5hbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBtb2NrKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9zdG9wX3dpdGhvdXRfc3RhcnQoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgJ2JhcicsIDMpCisKKyAgICAgICAgIyBjYWxsaW5nIHN0b3Agd2l0aG91dCBzdGFydCB1c2VkIHRvIHByb2R1Y2UgYSB2ZXJ5IG9ic2N1cmUgZXJyb3IKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBwYXRjaGVyLnN0b3ApCisKKworICAgIGRlZiB0ZXN0X3BhdGNob2JqZWN0X3N0YXJ0X3N0b3Aoc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gc29tZXRoaW5nCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoUFRNb2R1bGUsICdzb21ldGhpbmcnLCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzb21ldGhpbmcsIG9yaWdpbmFsKQorICAgICAgICByZXBsYWNlZCA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcGxhY2VkLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCByZXBsYWNlZCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc29tZXRoaW5nLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfZGljdF9zdGFydF9zdG9wKHNlbGYpOgorICAgICAgICBkID0geydmb28nOiAnYmFyJ30KKyAgICAgICAgb3JpZ2luYWwgPSBkLmNvcHkoKQorICAgICAgICBwYXRjaGVyID0gcGF0Y2guZGljdChkLCBbKCdzcGFtJywgJ2VnZ3MnKV0sIGNsZWFyPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgeydzcGFtJzogJ2VnZ3MnfSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3RfY2xhc3NfZGVjb3JhdG9yKHNlbGYpOgorICAgICAgICB0aGlzID0gc2VsZgorICAgICAgICBkID0geydzcGFtJzogJ2VnZ3MnfQorICAgICAgICBvcmlnaW5hbCA9IGQuY29weSgpCisKKyAgICAgICAgY2xhc3MgVGVzdChvYmplY3QpOgorICAgICAgICAgICAgZGVmIHRlc3RfZmlyc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgdGhpcy5hc3NlcnRFcXVhbChkLCB7J2Zvbyc6ICdiYXInfSkKKyAgICAgICAgICAgIGRlZiB0ZXN0X3NlY29uZChzZWxmKToKKyAgICAgICAgICAgICAgICB0aGlzLmFzc2VydEVxdWFsKGQsIHsnZm9vJzogJ2Jhcid9KQorCisgICAgICAgIFRlc3QgPSBwYXRjaC5kaWN0KGQsIHsnZm9vJzogJ2Jhcid9LCBjbGVhcj1UcnVlKShUZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QgPSBUZXN0KCkKKworICAgICAgICB0ZXN0LnRlc3RfZmlyc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QudGVzdF9zZWNvbmQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QgPSBUZXN0KCkKKworICAgICAgICB0ZXN0LnRlc3RfZmlyc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisgICAgICAgIHRlc3QudGVzdF9zZWNvbmQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIG9yaWdpbmFsKQorCisKKyAgICBkZWYgdGVzdF9nZXRfb25seV9wcm94eShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSAnZm9vJworICAgICAgICBjbGFzcyBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgZm9vID0gJ2ZvbycKKworICAgICAgICBmb3IgdGhpbmcgaW4gU29tZXRoaW5nLCBTb21ldGhpbmdFbHNlLCBTb21ldGhpbmcoKSwgU29tZXRoaW5nRWxzZToKKyAgICAgICAgICAgIHByb3h5ID0gX2dldF9wcm94eSh0aGluZykKKworICAgICAgICAgICAgQHBhdGNoLm9iamVjdChwcm94eSwgJ2ZvbycsICdiYXInKQorICAgICAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3h5LmZvbywgJ2JhcicpCisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhpbmcuZm9vLCAnZm9vJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2ZvbycsIHByb3h5Ll9fZGljdF9fKQorCisKKyAgICBkZWYgdGVzdF9nZXRfc2V0X2RlbGV0ZV9wcm94eShzZWxmKToKKyAgICAgICAgY2xhc3MgU29tZXRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBmb28gPSAnZm9vJworICAgICAgICBjbGFzcyBTb21ldGhpbmdFbHNlOgorICAgICAgICAgICAgZm9vID0gJ2ZvbycKKworICAgICAgICBmb3IgdGhpbmcgaW4gU29tZXRoaW5nLCBTb21ldGhpbmdFbHNlLCBTb21ldGhpbmcoKSwgU29tZXRoaW5nRWxzZToKKyAgICAgICAgICAgIHByb3h5ID0gX2dldF9wcm94eShTb21ldGhpbmcsIGdldF9vbmx5PUZhbHNlKQorCisgICAgICAgICAgICBAcGF0Y2gub2JqZWN0KHByb3h5LCAnZm9vJywgJ2JhcicpCisgICAgICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJveHkuZm9vLCAnYmFyJykKKyAgICAgICAgICAgIHRlc3QoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm94eS5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aGluZy5mb28sICdmb28nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignZm9vJywgcHJveHkuX19kaWN0X18pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsICoqa3dhcmdzKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsIG1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9jay5mb28uYmFyKCksIDMzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5mb28sIE1hZ2ljTW9jaykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfb2JqZWN0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAga3dhcmdzID0geydzaWRlX2VmZmVjdCc6IEtleUVycm9yLCAnZm9vLmJhci5yZXR1cm5fdmFsdWUnOiAzMywKKyAgICAgICAgICAgICAgICAgICdmb28nOiBNYWdpY01vY2soKX0KKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAqKmt3YXJncykKKyAgICAgICAgbW9jayA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yLCBtb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2suZm9vLmJhcigpLCAzMykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2suZm9vLCBNYWdpY01vY2spCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3Rfa2V5d29yZF9hcmdzKHNlbGYpOgorICAgICAgICBvcmlnaW5hbCA9IHsnZm9vJzogJ2Jhcid9CisgICAgICAgIGNvcHkgPSBvcmlnaW5hbC5jb3B5KCkKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2guZGljdChvcmlnaW5hbCwgZm9vPTMsIGJhcj00LCBiYXo9NSkKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnaW5hbCwgZGljdChmb289MywgYmFyPTQsIGJhej01KSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcmlnaW5hbCwgY29weSkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIEJvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBmKHNlbGYsIGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBnKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZvbyA9ICdiYXInCisKKyAgICAgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAgICAgIGRlZiBhKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIF90ZXN0KG1vY2spOgorICAgICAgICAgICAgbW9jaygxKQorICAgICAgICAgICAgbW9jay5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jaykKKworICAgICAgICBkZWYgX3Rlc3QyKG1vY2spOgorICAgICAgICAgICAgbW9jay5mKDEpCisgICAgICAgICAgICBtb2NrLmYuYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG1vY2suZikKKworICAgICAgICAgICAgbW9jay5nKCkKKyAgICAgICAgICAgIG1vY2suZy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLmcsIDEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLCAnaCcpCisKKyAgICAgICAgICAgIG1vY2suZm9vLmxvd2VyKCkKKyAgICAgICAgICAgIG1vY2suZm9vLmxvd2VyLmFzc2VydF9jYWxsZWRfd2l0aCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgbW9jay5mb28sICdiYXInKQorCisgICAgICAgICAgICBtb2NrLkJhcigpCisgICAgICAgICAgICBtb2NrLkJhci5hc3NlcnRfY2FsbGVkX3dpdGgoKQorCisgICAgICAgICAgICBtb2NrLkJhci5hKCkKKyAgICAgICAgICAgIG1vY2suQmFyLmEuYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbW9jay5CYXIuYSwgMSkKKworICAgICAgICAgICAgbW9jay5CYXIoKS5hKCkKKyAgICAgICAgICAgIG1vY2suQmFyKCkuYS5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtb2NrLkJhcigpLmEsIDEpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtb2NrLkJhciwgJ2InKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG1vY2suQmFyKCksICdiJykKKworICAgICAgICBkZWYgZnVuY3Rpb24obW9jayk6CisgICAgICAgICAgICBfdGVzdChtb2NrKQorICAgICAgICAgICAgX3Rlc3QyKG1vY2spCisgICAgICAgICAgICBfdGVzdDIobW9jaygxKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobW9jaywgRm9vKQorICAgICAgICAgICAgcmV0dXJuIG1vY2sKKworICAgICAgICB0ZXN0ID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpKGZ1bmN0aW9uKQorCisgICAgICAgIG1vY2sgPSB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28sIG1vY2spCisgICAgICAgICMgdGVzdCBwYXRjaGluZyBhIHNlY29uZCB0aW1lIHdvcmtzCisgICAgICAgIHRlc3QoKQorCisgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgICAgICB0ZXN0ID0gcGF0Y2gub2JqZWN0KG1vZHVsZSwgJ0ZvbycsIGF1dG9zcGVjPVRydWUpKGZ1bmN0aW9uKQorCisgICAgICAgIG1vY2sgPSB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChGb28sIG1vY2spCisgICAgICAgICMgdGVzdCBwYXRjaGluZyBhIHNlY29uZCB0aW1lIHdvcmtzCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19mdW5jdGlvbihzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5mdW5jdGlvbicgJSBfX25hbWVfXywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgZGVmIHRlc3QobW9jayk6CisgICAgICAgICAgICBmdW5jdGlvbigxKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF93aXRoKDEpCisgICAgICAgICAgICBmdW5jdGlvbigyLCAzKQorICAgICAgICAgICAgZnVuY3Rpb24uYXNzZXJ0X2NhbGxlZF93aXRoKDIsIDMpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZnVuY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgZnVuY3Rpb24sICdmb28nKQorCisgICAgICAgIHRlc3QoKQorCisKKyAgICBkZWYgdGVzdF9hdXRvc3BlY19rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgQHBhdGNoKCclcy5mdW5jdGlvbicgJSBfX25hbWVfXywgYXV0b3NwZWM9VHJ1ZSwKKyAgICAgICAgICAgICAgIHJldHVybl92YWx1ZT0zKQorICAgICAgICBkZWYgdGVzdChtb2NrX2Z1bmN0aW9uKToKKyAgICAgICAgICAgICNzZWxmLmFzc2VydEVxdWFsKGZ1bmN0aW9uLmFiYywgJ2ZvbycpCisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oMSwgMikKKworICAgICAgICByZXN1bHQgPSB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIDMpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX3dpdGhfbmV3KHNlbGYpOgorICAgICAgICBwYXRjaGVyID0gcGF0Y2goJyVzLmZ1bmN0aW9uJyAlIF9fbmFtZV9fLCBuZXc9MywgYXV0b3NwZWM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXQorICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KG1vZHVsZSwgJ2Z1bmN0aW9uJywgbmV3PTMsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGF0Y2hlci5zdGFydCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfd2l0aF9vYmplY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIEJhcihGb28pOgorICAgICAgICAgICAgZXh0cmEgPSBbXQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgYXV0b3NwZWM9QmFyKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtb2NrLCBCYXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9jay5leHRyYSwgbGlzdCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X2F1dG9zcGVjX2luaGVyaXRzKHNlbGYpOgorICAgICAgICBGb29DbGFzcyA9IEZvbworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIGF1dG9zcGVjPVRydWUpCisgICAgICAgIG1vY2sgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2ssIEZvb0NsYXNzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vY2soMyksIEZvb0NsYXNzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfYXV0b3NwZWNfbmFtZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBhdXRvc3BlYz1UcnVlKQorICAgICAgICBtb2NrID0gcGF0Y2hlci5zdGFydCgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbyciLCByZXByKG1vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0Zvby5mJyIsIHJlcHIobW9jay5mKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdGb28oKSciLCByZXByKG1vY2soTm9uZSkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J0ZvbygpLmYnIiwgcmVwcihtb2NrKE5vbmUpLmYpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfdHJhY2ViYWNrcyhzZWxmKToKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgb2JqZWN0KCkpCisgICAgICAgIGRlZiB0ZXN0KCk6CisgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorICAgICAgICB0cnk6CisgICAgICAgICAgICB0ZXN0KCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgZXJyID0gc3lzLmV4Y19pbmZvKCkKKworICAgICAgICByZXN1bHQgPSB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdChOb25lLCBOb25lLCAwKQorICAgICAgICB0cmFjZWJhY2sgPSByZXN1bHQuX2V4Y19pbmZvX3RvX3N0cmluZyhlcnIsIHNlbGYpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3JhaXNlIEFzc2VydGlvbkVycm9yJywgdHJhY2ViYWNrKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfcGF0Y2goc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaChmb29fbmFtZSwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTWFnaWNNb2NrKQorCisgICAgICAgIG0xID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisgICAgICAgIG0yID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChtMSwgbTIpCisgICAgICAgIGZvciBtb2NrIGluIG0xLCBtMjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobTEpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9wYXRjaF9vYmplY3Qoc2VsZik6CisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZicsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1hZ2ljTW9jaykKKworICAgICAgICBtMSA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorICAgICAgICBtMiA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobTEsIG0yKQorICAgICAgICBmb3IgbW9jayBpbiBtMSwgbTI6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdENhbGxhYmxlKG0xKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfa2V5d29yZF9hcmd1bWVudHMoc2VsZik6CisgICAgICAgIGNsYXNzIEJhcihvYmplY3QpOgorICAgICAgICAgICAga3dhcmdzID0gTm9uZQorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBCYXIua3dhcmdzID0ga3dhcmdzCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9QmFyLCBhcmcxPTEsIGFyZzI9MikKKyAgICAgICAgbSA9IHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobSksIEJhcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQmFyLmt3YXJncywgZGljdChhcmcxPTEsIGFyZzI9MikpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfc3BlYyhzZWxmKToKKyAgICAgICAgY2xhc3MgQmFyKG9iamVjdCk6CisgICAgICAgICAgICBrd2FyZ3MgPSBOb25lCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIEJhci5rd2FyZ3MgPSBrd2FyZ3MKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1CYXIsIHNwZWM9QmFyKQorICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCYXIua3dhcmdzLCBkaWN0KHNwZWM9QmFyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9QmFyLCBzcGVjX3NldD1CYXIpCisgICAgICAgIHBhdGNoZXIuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEJhci5rd2FyZ3MsIGRpY3Qoc3BlY19zZXQ9QmFyKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25ld19jYWxsYWJsZV9jcmVhdGUoc2VsZik6CisgICAgICAgIG5vbl9leGlzdGVudF9hdHRyID0gJyVzLndlZWVlZScgJSBmb29fbmFtZQorICAgICAgICBwID0gcGF0Y2gobm9uX2V4aXN0ZW50X2F0dHIsIG5ld19jYWxsYWJsZT1Ob25DYWxsYWJsZU1vY2spCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwLnN0YXJ0KQorCisgICAgICAgIHAgPSBwYXRjaChub25fZXhpc3RlbnRfYXR0ciwgbmV3X2NhbGxhYmxlPU5vbkNhbGxhYmxlTW9jaywKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZT1UcnVlKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q2FsbGFibGUobSwgbWFnaWM9RmFsc2UpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5jb21wYXRpYmxlX3dpdGhfbmV3KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLCBmb29fbmFtZSwgbmV3PW9iamVjdCgpLCBuZXdfY2FsbGFibGU9TWFnaWNNb2NrCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBWYWx1ZUVycm9yLCBwYXRjaC5vYmplY3QsIEZvbywgJ2YnLCBuZXc9b2JqZWN0KCksCisgICAgICAgICAgICBuZXdfY2FsbGFibGU9TWFnaWNNb2NrCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2luY29tcGF0aWJsZV93aXRoX2F1dG9zcGVjKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLCBmb29fbmFtZSwgbmV3X2NhbGxhYmxlPU1hZ2ljTW9jaywKKyAgICAgICAgICAgIGF1dG9zcGVjPVRydWUKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsIHBhdGNoLm9iamVjdCwgRm9vLCAnZicsIG5ld19jYWxsYWJsZT1NYWdpY01vY2ssCisgICAgICAgICAgICBhdXRvc3BlYz1UcnVlCisgICAgICAgICkKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2luaGVyaXRfZm9yX21vY2tzKHNlbGYpOgorICAgICAgICBjbGFzcyBNb2NrU3ViKE1vY2spOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIE1vY2tDbGFzc2VzID0gKAorICAgICAgICAgICAgTm9uQ2FsbGFibGVNb2NrLCBOb25DYWxsYWJsZU1hZ2ljTW9jaywgTWFnaWNNb2NrLCBNb2NrLCBNb2NrU3ViCisgICAgICAgICkKKyAgICAgICAgZm9yIEtsYXNzIGluIE1vY2tDbGFzc2VzOgorICAgICAgICAgICAgZm9yIGFyZyBpbiAnc3BlYycsICdzcGVjX3NldCc6CisgICAgICAgICAgICAgICAga3dhcmdzID0ge2FyZzogVHJ1ZX0KKyAgICAgICAgICAgICAgICBwID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1LbGFzcywgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2UgPSBtLnJldHVybl92YWx1ZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgZ2V0YXR0ciwgaW5zdGFuY2UsICd4JykKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfaW5oZXJpdF9ub25fbW9jayhzZWxmKToKKyAgICAgICAgY2xhc3MgTm90QU1vY2sob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBzZWxmLnNwZWMgPSBzcGVjCisKKyAgICAgICAgcCA9IHBhdGNoKGZvb19uYW1lLCBuZXdfY2FsbGFibGU9Tm90QU1vY2ssIHNwZWM9VHJ1ZSkKKyAgICAgICAgbSA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UobSwgTm90QU1vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdyZXR1cm5fdmFsdWUnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uc3BlYywgRm9vKQorCisKKyAgICBkZWYgdGVzdF9uZXdfY2FsbGFibGVfY2xhc3NfZGVjb3JhdGluZyhzZWxmKToKKyAgICAgICAgdGVzdCA9IHNlbGYKKyAgICAgICAgb3JpZ2luYWwgPSBGb28KKyAgICAgICAgY2xhc3MgU29tZVRlc3Qob2JqZWN0KToKKworICAgICAgICAgICAgZGVmIF90ZXN0KHNlbGYsIG1vY2tfZm9vKToKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzTm90KEZvbywgb3JpZ2luYWwpCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRJcyhGb28sIG1vY2tfZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXNJbnN0YW5jZShGb28sIFNvbWVDbGFzcykKKworICAgICAgICAgICAgZGVmIHRlc3RfdHdvKHNlbGYsIG1vY2tfZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KG1vY2tfZm9vKQorICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYsIG1vY2tfZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KG1vY2tfZm9vKQorCisgICAgICAgIFNvbWVUZXN0ID0gcGF0Y2goZm9vX25hbWUsIG5ld19jYWxsYWJsZT1Tb21lQ2xhc3MpKFNvbWVUZXN0KQorICAgICAgICBTb21lVGVzdCgpLnRlc3Rfb25lKCkKKyAgICAgICAgU29tZVRlc3QoKS50ZXN0X3R3bygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgcGF0Y2hlcjEgPSBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj0xLCBnPTIpCisgICAgICAgIHBhdGNoZXIyID0gcGF0Y2gubXVsdGlwbGUoRm9vLCBmPTEsIGc9MikKKworICAgICAgICBmb3IgcGF0Y2hlciBpbiBwYXRjaGVyMSwgcGF0Y2hlcjI6CisgICAgICAgICAgICBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIDEpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgMikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPTMsIGc9NCkKKyAgICAgICAgZGVmIHRlc3QoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgNCkKKworICAgICAgICB0ZXN0KCkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfbm9fa3dhcmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXRjaC5tdWx0aXBsZSwgZm9vX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhdGNoLm11bHRpcGxlLCBGb28pCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZV9tb2NrcyhzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCwgZz0zLCBmb289REVGQVVMVCkKKyAgICAgICAgZGVmIHRlc3QoZiwgZm9vKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLCBvcmlnaW5hbF9mb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mLCBmKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmZvbywgZm9vKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGYsIE1hZ2ljTW9jaykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9jcmVhdGVfbW9ja3NfZGlmZmVyZW50X29yZGVyKHNlbGYpOgorICAgICAgICAjIGJ1ZyByZXZlYWxlZCBieSBKeXRob24hCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAzKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgb3RoZXIgPSBwYXRjaC5vYmplY3QoRm9vLCAnZycsIERFRkFVTFQpCisgICAgICAgIG90aGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2cnCisgICAgICAgIHBhdGNoZXIuYWRkaXRpb25hbF9wYXRjaGVycyA9IFtvdGhlcl0KKworICAgICAgICBAcGF0Y2hlcgorICAgICAgICBkZWYgdGVzdChnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmcsIGcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCAzKQorCisgICAgICAgIHRlc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zdGFja2VkX2RlY29yYXRvcnMoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvbworICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmPURFRkFVTFQpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZm9vPURFRkFVTFQpCisgICAgICAgIEBwYXRjaChmb29fbmFtZSArICcuZycpCisgICAgICAgIGRlZiB0ZXN0MShnLCAqKmt3YXJncyk6CisgICAgICAgICAgICBfdGVzdChnLCAqKmt3YXJncykKKworICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCkKKyAgICAgICAgQHBhdGNoKGZvb19uYW1lICsgJy5nJykKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvb19uYW1lLCBmb289REVGQVVMVCkKKyAgICAgICAgZGVmIHRlc3QyKGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIF90ZXN0KGcsICoqa3dhcmdzKQorCisgICAgICAgIEBwYXRjaChmb29fbmFtZSArICcuZycpCisgICAgICAgIEBwYXRjaC5tdWx0aXBsZShmb29fbmFtZSwgZj1ERUZBVUxUKQorICAgICAgICBAcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGZvbz1ERUZBVUxUKQorICAgICAgICBkZWYgdGVzdDMoZywgKiprd2FyZ3MpOgorICAgICAgICAgICAgX3Rlc3QoZywgKiprd2FyZ3MpCisKKyAgICAgICAgZGVmIF90ZXN0KGcsICoqa3dhcmdzKToKKyAgICAgICAgICAgIGYgPSBrd2FyZ3MucG9wKCdmJykKKyAgICAgICAgICAgIGZvbyA9IGt3YXJncy5wb3AoJ2ZvbycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGt3YXJncykKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5nLCBnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZm9vLCBmb28pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShnLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGZvbywgTWFnaWNNb2NrKSkKKworICAgICAgICB0ZXN0MSgpCisgICAgICAgIHRlc3QyKCkKKyAgICAgICAgdGVzdDMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5nLCBvcmlnaW5hbF9nKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9jcmVhdGVfbW9ja3NfcGF0Y2hlcihzZWxmKToKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gubXVsdGlwbGUoZm9vX25hbWUsIGY9REVGQVVMVCwgZz0zLCBmb289REVGQVVMVCkKKworICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IHJlc3VsdFsnZiddCisgICAgICAgICAgICBmb28gPSByZXN1bHRbJ2ZvbyddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChyZXN1bHQpLCBzZXQoWydmJywgJ2ZvbyddKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28sIG9yaWdpbmFsX2ZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShmLCBNYWdpY01vY2spKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzX2luc3RhbmNlKGZvbywgTWFnaWNNb2NrKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfZGVjb3JhdGluZ19jbGFzcyhzZWxmKToKKyAgICAgICAgdGVzdCA9IHNlbGYKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vCisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBjbGFzcyBTb21lVGVzdChvYmplY3QpOgorCisgICAgICAgICAgICBkZWYgX3Rlc3Qoc2VsZiwgZiwgZm9vKToKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvbywgb3JpZ2luYWxfZm9vKQorICAgICAgICAgICAgICAgIHRlc3QuYXNzZXJ0SXMoRm9vLmYsIGYpCisgICAgICAgICAgICAgICAgdGVzdC5hc3NlcnRFcXVhbChGb28uZywgMykKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydElzKEZvby5mb28sIGZvbykKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZiwgTWFnaWNNb2NrKSkKKyAgICAgICAgICAgICAgICB0ZXN0LmFzc2VydFRydWUoaXNfaW5zdGFuY2UoZm9vLCBNYWdpY01vY2spKQorCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZiwgZiwgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLl90ZXN0KGYsIGZvbykKKyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmLCBmLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3QoZiwgZm9vKQorCisgICAgICAgIFNvbWVUZXN0ID0gcGF0Y2gubXVsdGlwbGUoCisgICAgICAgICAgICBmb29fbmFtZSwgZj1ERUZBVUxULCBnPTMsIGZvbz1ERUZBVUxUCisgICAgICAgICkoU29tZVRlc3QpCisKKyAgICAgICAgdGhpbmcgPSBTb21lVGVzdCgpCisgICAgICAgIHRoaW5nLnRlc3Rfb25lKCkKKyAgICAgICAgdGhpbmcudGVzdF90d28oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmYsIG9yaWdpbmFsX2YpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX2NyZWF0ZShzZWxmKToKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKEZvbywgYmxhbT0nYmxhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBwYXRjaGVyLnN0YXJ0KQorCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGJsYW09J2JsYW0nLCBjcmVhdGU9VHJ1ZSkKKyAgICAgICAgcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmJsYW0sICdibGFtJykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBhdGNoZXIuc3RvcCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKEZvbywgJ2JsYW0nKSkKKworCisgICAgZGVmIHRlc3RfcGF0Y2hfbXVsdGlwbGVfc3BlY19zZXQoc2VsZik6CisgICAgICAgICMgaWYgc3BlY19zZXQgd29ya3MgdGhlbiB3ZSBjYW4gYXNzdW1lIHRoYXQgc3BlYyBhbmQgYXV0b3NwZWMgYWxzbworICAgICAgICAjIHdvcmsgYXMgdGhlIHVuZGVybHlpbmcgbWFjaGluZXJ5IGlzIHRoZSBzYW1lCisgICAgICAgIHBhdGNoZXIgPSBwYXRjaC5tdWx0aXBsZShGb28sIGZvbz1ERUZBVUxULCBzcGVjX3NldD1bJ2EnLCAnYiddKQorICAgICAgICByZXN1bHQgPSBwYXRjaGVyLnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZm9vLCByZXN1bHRbJ2ZvbyddKQorICAgICAgICAgICAgRm9vLmZvby5hKDEpCisgICAgICAgICAgICBGb28uZm9vLmIoMikKKyAgICAgICAgICAgIEZvby5mb28uYS5hc3NlcnRfY2FsbGVkX3dpdGgoMSkKKyAgICAgICAgICAgIEZvby5mb28uYi5hc3NlcnRfY2FsbGVkX3dpdGgoMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBGb28uZm9vLCAnYycsIE5vbmUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwYXRjaGVyLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9uZXdfY2FsbGFibGUoc2VsZik6CisgICAgICAgIGNsYXNzIFRoaW5nKG9iamVjdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm11bHRpcGxlKAorICAgICAgICAgICAgRm9vLCBmPURFRkFVTFQsIGc9REVGQVVMVCwgbmV3X2NhbGxhYmxlPVRoaW5nCisgICAgICAgICkKKyAgICAgICAgcmVzdWx0ID0gcGF0Y2hlci5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoRm9vLmYsIHJlc3VsdFsnZiddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhGb28uZywgcmVzdWx0WydnJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRm9vLmYsIFRoaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEZvby5nLCBUaGluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRm9vLmYsIEZvby5nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcGF0Y2hlci5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbmVzdGVkX3BhdGNoX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ21pc3NpbmcnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcxKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdtaXNzaW5nJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgZGVmIHRoaW5nMigpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIGRlZiB0aGluZzMoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBmb3IgZnVuYyBpbiB0aGluZzEsIHRoaW5nMiwgdGhpbmczOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKworCisgICAgZGVmIHRlc3RfbmV3X2NhbGxhYmxlX2ZhaWx1cmUoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2YgPSBGb28uZgorICAgICAgICBvcmlnaW5hbF9nID0gRm9vLmcKKyAgICAgICAgb3JpZ2luYWxfZm9vID0gRm9vLmZvbworCisgICAgICAgIGRlZiBjcmFzaGVyKCk6CisgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ2NyYXNoZXInKQorCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZm9vJywgbmV3X2NhbGxhYmxlPWNyYXNoZXIpCisgICAgICAgIEBwYXRjaC5vYmplY3QoRm9vLCAnZicsIDEpCisgICAgICAgIGRlZiB0aGluZzEoKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2ZvbycsIG5ld19jYWxsYWJsZT1jcmFzaGVyKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2cnLCAxKQorICAgICAgICBAcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBkZWYgdGhpbmcyKCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgQHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgZGVmIHRoaW5nMygpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGZvciBmdW5jIGluIHRoaW5nMSwgdGhpbmcyLCB0aGluZzM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmZvbywgb3JpZ2luYWxfZm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisKKyAgICAgICAgcGF0Y2hlciA9IHBhdGNoLm9iamVjdChGb28sICdmJywgMSkKKyAgICAgICAgcGF0Y2hlci5hdHRyaWJ1dGVfbmFtZSA9ICdmJworCisgICAgICAgIGdvb2QgPSBwYXRjaC5vYmplY3QoRm9vLCAnZycsIDEpCisgICAgICAgIGdvb2QuYXR0cmlidXRlX25hbWUgPSAnZycKKworICAgICAgICBiYWQgPSBwYXRjaC5vYmplY3QoRm9vLCAnbWlzc2luZycsIDEpCisgICAgICAgIGJhZC5hdHRyaWJ1dGVfbmFtZSA9ICdtaXNzaW5nJworCisgICAgICAgIGZvciBhZGRpdGlvbmFscyBpbiBbZ29vZCwgYmFkXSwgW2JhZCwgZ29vZF06CisgICAgICAgICAgICBwYXRjaGVyLmFkZGl0aW9uYWxfcGF0Y2hlcnMgPSBhZGRpdGlvbmFscworCisgICAgICAgICAgICBAcGF0Y2hlcgorICAgICAgICAgICAgZGVmIGZ1bmMoKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBmdW5jKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZiwgb3JpZ2luYWxfZikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmcsIG9yaWdpbmFsX2cpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX211bHRpcGxlX25ld19jYWxsYWJsZV9mYWlsdXJlKHNlbGYpOgorICAgICAgICBvcmlnaW5hbF9mID0gRm9vLmYKKyAgICAgICAgb3JpZ2luYWxfZyA9IEZvby5nCisgICAgICAgIG9yaWdpbmFsX2ZvbyA9IEZvby5mb28KKworICAgICAgICBkZWYgY3Jhc2hlcigpOgorICAgICAgICAgICAgcmFpc2UgTmFtZUVycm9yKCdjcmFzaGVyJykKKworICAgICAgICBwYXRjaGVyID0gcGF0Y2gub2JqZWN0KEZvbywgJ2YnLCAxKQorICAgICAgICBwYXRjaGVyLmF0dHJpYnV0ZV9uYW1lID0gJ2YnCisKKyAgICAgICAgZ29vZCA9IHBhdGNoLm9iamVjdChGb28sICdnJywgMSkKKyAgICAgICAgZ29vZC5hdHRyaWJ1dGVfbmFtZSA9ICdnJworCisgICAgICAgIGJhZCA9IHBhdGNoLm9iamVjdChGb28sICdmb28nLCBuZXdfY2FsbGFibGU9Y3Jhc2hlcikKKyAgICAgICAgYmFkLmF0dHJpYnV0ZV9uYW1lID0gJ2ZvbycKKworICAgICAgICBmb3IgYWRkaXRpb25hbHMgaW4gW2dvb2QsIGJhZF0sIFtiYWQsIGdvb2RdOgorICAgICAgICAgICAgcGF0Y2hlci5hZGRpdGlvbmFsX3BhdGNoZXJzID0gYWRkaXRpb25hbHMKKworICAgICAgICAgICAgQHBhdGNoZXIKKyAgICAgICAgICAgIGRlZiBmdW5jKCk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGZ1bmMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZvby5mLCBvcmlnaW5hbF9mKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uZywgb3JpZ2luYWxfZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRm9vLmZvbywgb3JpZ2luYWxfZm9vKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9tdWx0aXBsZV9zdHJpbmdfc3ViY2xhc3NlcyhzZWxmKToKKyAgICAgICAgRm9vID0gdHlwZSgnRm9vJywgKHN0ciwpLCB7J2Zpc2gnOiAndGFzdHknfSkKKyAgICAgICAgZm9vID0gRm9vKCkKKyAgICAgICAgQHBhdGNoLm11bHRpcGxlKGZvbywgZmlzaD0nbmVhcmx5IGdvbmUnKQorICAgICAgICBkZWYgdGVzdCgpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZmlzaCwgJ25lYXJseSBnb25lJykKKworICAgICAgICB0ZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZmlzaCwgJ3Rhc3R5JykKKworCisgICAgQHBhdGNoKCd1bml0dGVzdC5tb2NrLnBhdGNoLlRFU1RfUFJFRklYJywgJ2ZvbycpCisgICAgZGVmIHRlc3RfcGF0Y2hfdGVzdF9wcmVmaXgoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgdGhpbmcgPSAnb3JpZ2luYWwnCisKKyAgICAgICAgICAgIGRlZiBmb29fb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgZm9vX3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50aGluZworICAgICAgICAgICAgZGVmIHRlc3Rfb25lKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRoaW5nCisgICAgICAgICAgICBkZWYgdGVzdF90d28oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudGhpbmcKKworICAgICAgICBGb28gPSBwYXRjaC5vYmplY3QoRm9vLCAndGhpbmcnLCAnY2hhbmdlZCcpKEZvbykKKworICAgICAgICBmb28gPSBGb28oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby5mb29fb25lKCksICdjaGFuZ2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uZm9vX3R3bygpLCAnY2hhbmdlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3Rfb25lKCksICdvcmlnaW5hbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnRlc3RfdHdvKCksICdvcmlnaW5hbCcpCisKKworICAgIEBwYXRjaCgndW5pdHRlc3QubW9jay5wYXRjaC5URVNUX1BSRUZJWCcsICdiYXInKQorICAgIGRlZiB0ZXN0X3BhdGNoX2RpY3RfdGVzdF9wcmVmaXgoc2VsZik6CisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIGJhcl9vbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGRpY3QodGhlX2RpY3QpCisgICAgICAgICAgICBkZWYgYmFyX3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiB0ZXN0X29uZShzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKyAgICAgICAgICAgIGRlZiB0ZXN0X3R3byhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZGljdCh0aGVfZGljdCkKKworICAgICAgICB0aGVfZGljdCA9IHsna2V5JzogJ29yaWdpbmFsJ30KKyAgICAgICAgRm9vID0gcGF0Y2guZGljdCh0aGVfZGljdCwga2V5PSdjaGFuZ2VkJykoRm9vKQorCisgICAgICAgIGZvbyA9Rm9vKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28uYmFyX29uZSgpLCB7J2tleSc6ICdjaGFuZ2VkJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLmJhcl90d28oKSwgeydrZXknOiAnY2hhbmdlZCd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50ZXN0X29uZSgpLCB7J2tleSc6ICdvcmlnaW5hbCd9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvby50ZXN0X3R3bygpLCB7J2tleSc6ICdvcmlnaW5hbCd9KQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3NwZWNfbW9ja19yZXByKHNlbGYpOgorICAgICAgICBmb3IgYXJnIGluICgnc3BlYycsICdhdXRvc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKCclcy5Tb21lQ2xhc3MnICUgX19uYW1lX18sICoqe2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J1NvbWVDbGFzcyciLCByZXByKG0pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MuY2xhc3NfYXR0cmlidXRlJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKG0uY2xhc3NfYXR0cmlidXRlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCIgbmFtZT0nU29tZUNsYXNzKCknIiwgcmVwcihtKCkpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIiBuYW1lPSdTb21lQ2xhc3MoKS5jbGFzc19hdHRyaWJ1dGUnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobSgpLmNsYXNzX2F0dHJpYnV0ZSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX25lc3RlZF9hdXRvc3BlY19yZXByKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCd1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQnLCBhdXRvc3BlYz1UcnVlKSBhcyBtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J3N1cHBvcnQuU29tZUNsYXNzLndpYmJsZSgpJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIobS5Tb21lQ2xhc3Mud2liYmxlKCkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiIG5hbWU9J3N1cHBvcnQuU29tZUNsYXNzKCkud2liYmxlKCknIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwcihtLlNvbWVDbGFzcygpLndpYmJsZSgpKSkKKworCisKKyAgICBkZWYgdGVzdF9tb2NrX2NhbGxzX3dpdGhfcGF0Y2goc2VsZik6CisgICAgICAgIGZvciBhcmcgaW4gKCdzcGVjJywgJ2F1dG9zcGVjJywgJ3NwZWNfc2V0Jyk6CisgICAgICAgICAgICBwID0gcGF0Y2goJyVzLlNvbWVDbGFzcycgJSBfX25hbWVfXywgKip7YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIG0gPSBwLnN0YXJ0KCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBtLndpYmJsZSgpCisKKyAgICAgICAgICAgICAgICBrYWxscyA9IFtjYWxsLndpYmJsZSgpXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubWV0aG9kX2NhbGxzLCBrYWxscykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ud2liYmxlLm1vY2tfY2FsbHMsIFtjYWxsKCldKQorCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbSgpCisgICAgICAgICAgICAgICAga2FsbHMuYXBwZW5kKGNhbGwoKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ubW9ja19jYWxscywga2FsbHMpCisKKyAgICAgICAgICAgICAgICByZXN1bHQud2liYmxlKCkKKyAgICAgICAgICAgICAgICBrYWxscy5hcHBlbmQoY2FsbCgpLndpYmJsZSgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5tb2NrX2NhbGxzLCBrYWxscykKKworICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0Lm1vY2tfY2FsbHMsIFtjYWxsLndpYmJsZSgpXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC53aWJibGUubW9ja19jYWxscywgW2NhbGwoKV0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQubWV0aG9kX2NhbGxzLCBbY2FsbC53aWJibGUoKV0pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX2ltcG9ydHNfbGF6aWx5KHNlbGYpOgorICAgICAgICBzeXMubW9kdWxlcy5wb3AoJ3NxdWl6eicsIE5vbmUpCisKKyAgICAgICAgcDEgPSBwYXRjaCgnc3F1aXp6LnNxdW96eicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yLCBwMS5zdGFydCkKKworICAgICAgICBzcXVpenogPSBNb2NrKCkKKyAgICAgICAgc3F1aXp6LnNxdW96eiA9IDYKKyAgICAgICAgc3lzLm1vZHVsZXNbJ3NxdWl6eiddID0gc3F1aXp6CisgICAgICAgIHAxID0gcGF0Y2goJ3NxdWl6ei5zcXVvenonKQorICAgICAgICBzcXVpenouc3F1b3p6ID0gMworICAgICAgICBwMS5zdGFydCgpCisgICAgICAgIHAxLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNxdWl6ei5zcXVvenosIDMpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX3Byb3BvZ3JhdGVzX2V4Y19vbl9leGl0KHNlbGYpOgorICAgICAgICBjbGFzcyBob2xkZXI6CisgICAgICAgICAgICBleGNfaW5mbyA9IE5vbmUsIE5vbmUsIE5vbmUKKworICAgICAgICBjbGFzcyBjdXN0b21fcGF0Y2goX3BhdGNoKToKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBldHlwZT1Ob25lLCB2YWw9Tm9uZSwgdGI9Tm9uZSk6CisgICAgICAgICAgICAgICAgX3BhdGNoLl9fZXhpdF9fKHNlbGYsIGV0eXBlLCB2YWwsIHRiKQorICAgICAgICAgICAgICAgIGhvbGRlci5leGNfaW5mbyA9IGV0eXBlLCB2YWwsIHRiCisgICAgICAgICAgICBzdG9wID0gX19leGl0X18KKworICAgICAgICBkZWYgd2l0aF9jdXN0b21fcGF0Y2godGFyZ2V0KToKKyAgICAgICAgICAgIGdldHRlciwgYXR0cmlidXRlID0gX2dldF90YXJnZXQodGFyZ2V0KQorICAgICAgICAgICAgcmV0dXJuIGN1c3RvbV9wYXRjaCgKKyAgICAgICAgICAgICAgICBnZXR0ZXIsIGF0dHJpYnV0ZSwgREVGQVVMVCwgTm9uZSwgRmFsc2UsIE5vbmUsCisgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwge30KKyAgICAgICAgICAgICkKKworICAgICAgICBAd2l0aF9jdXN0b21fcGF0Y2goJ3NxdWl6ei5zcXVvenonKQorICAgICAgICBkZWYgdGVzdChtb2NrKToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcgorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgdGVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob2xkZXIuZXhjX2luZm9bMF0sIFJ1bnRpbWVFcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoaG9sZGVyLmV4Y19pbmZvWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleGNlcHRpb24gdmFsdWUgbm90IHByb3BnYXRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGhvbGRlci5leGNfaW5mb1syXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHRyYWNlYmFjayBub3QgcHJvcGdhdGVkJykKKworCisgICAgZGVmIHRlc3RfY3JlYXRlX2FuZF9zcGVjcyhzZWxmKToKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdzcGVjX3NldCcsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKCclcy5kb2Vzbm90ZXhpc3QnICUgX19uYW1lX18sIGNyZWF0ZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvciwgbGFtYmRhOiBkb2Vzbm90ZXhpc3QpCisKKyAgICAgICAgICAgICMgY2hlY2sgdGhhdCBzcGVjIHdpdGggY3JlYXRlIGlzIGlubm9jdW91cyBpZiB0aGUgb3JpZ2luYWwgZXhpc3RzCisgICAgICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgY3JlYXRlPVRydWUsICoqe2t3YXJnOiBUcnVlfSkKKyAgICAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfbXVsdGlwbGVfc3BlY3Moc2VsZik6CisgICAgICAgIG9yaWdpbmFsID0gUFRNb2R1bGUKKyAgICAgICAgZm9yIGt3YXJnIGluICgnc3BlYycsICdzcGVjX3NldCcpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIGF1dG9zcGVjPTAsICoqe2t3YXJnOiAwfSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcC5zdGFydCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUFRNb2R1bGUsIG9yaWdpbmFsKQorCisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjX3NldD0wLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHAuc3RhcnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBUTW9kdWxlLCBvcmlnaW5hbCkKKworICAgICAgICBmb3Iga3dhcmcgaW4gKCdzcGVjX3NldCcsICdhdXRvc3BlYycpOgorICAgICAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWM9MCwgKip7a3dhcmc6IDB9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwLnN0YXJ0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhQVE1vZHVsZSwgb3JpZ2luYWwpCisKKworICAgIGRlZiB0ZXN0X3NwZWNzX2ZhbHNlX2luc3RlYWRfb2Zfbm9uZShzZWxmKToKKyAgICAgICAgcCA9IHBhdGNoKE1PRE5BTUUsIHNwZWM9RmFsc2UsIHNwZWNfc2V0PUZhbHNlLCBhdXRvc3BlYz1GYWxzZSkKKyAgICAgICAgbW9jayA9IHAuc3RhcnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIG5vIHNwZWMgc2hvdWxkIGhhdmUgYmVlbiBzZXQsIHNvIGF0dHJpYnV0ZSBhY2Nlc3Mgc2hvdWxkIG5vdCBmYWlsCisgICAgICAgICAgICBtb2NrLmRvZXNfbm90X2V4aXN0CisgICAgICAgICAgICBtb2NrLmRvZXNfbm90X2V4aXN0ID0gMworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfZmFsc2V5X3NwZWMoc2VsZik6CisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnLCAnc3BlY19zZXQnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCAqKntrd2FyZzogMH0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIGdldGF0dHIsIG0sICdkb2Vzbm90ZXhpdCcpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X3NwZWNfc2V0X3RydWUoc2VsZik6CisgICAgICAgIGZvciBrd2FyZyBpbiAoJ3NwZWMnLCAnYXV0b3NwZWMnKToKKyAgICAgICAgICAgIHAgPSBwYXRjaChNT0ROQU1FLCBzcGVjX3NldD1UcnVlLCAqKntrd2FyZzogVHJ1ZX0pCisgICAgICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIG0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvZXNub3RleGlzdCcsICdzb21ldGhpbmcnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBnZXRhdHRyLCBtLCAnZG9lc25vdGV4aXN0JykKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgcC5zdG9wKCkKKworCisgICAgZGVmIHRlc3RfY2FsbGFibGVfc3BlY19hc19saXN0KHNlbGYpOgorICAgICAgICBzcGVjID0gKCdfX2NhbGxfXycsKQorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1zcGVjKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYWxsYWJsZShtKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHAuc3RvcCgpCisKKworICAgIGRlZiB0ZXN0X25vdF9jYWxsYWJsZV9zcGVjX2FzX2xpc3Qoc2VsZik6CisgICAgICAgIHNwZWMgPSAoJ2ZvbycsICdiYXInKQorICAgICAgICBwID0gcGF0Y2goTU9ETkFNRSwgc3BlYz1zcGVjKQorICAgICAgICBtID0gcC5zdGFydCgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY2FsbGFibGUobSkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBwLnN0b3AoKQorCisKKyAgICBkZWYgdGVzdF9wYXRjaF9zdG9wYWxsKHNlbGYpOgorICAgICAgICB1bmxpbmsgPSBvcy51bmxpbmsKKyAgICAgICAgY2hkaXIgPSBvcy5jaGRpcgorICAgICAgICBwYXRoID0gb3MucGF0aAorICAgICAgICBwYXRjaCgnb3MudW5saW5rJywgc29tZXRoaW5nKS5zdGFydCgpCisgICAgICAgIHBhdGNoKCdvcy5jaGRpcicsIHNvbWV0aGluZ19lbHNlKS5zdGFydCgpCisKKyAgICAgICAgQHBhdGNoKCdvcy5wYXRoJykKKyAgICAgICAgZGVmIHBhdGNoZWQobW9ja19wYXRoKToKKyAgICAgICAgICAgIHBhdGNoLnN0b3BhbGwoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5wYXRoLCBtb2NrX3BhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKG9zLnVubGluaywgdW5saW5rKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhvcy5jaGRpciwgY2hkaXIpCisKKyAgICAgICAgcGF0Y2hlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMob3MucGF0aCwgcGF0aCkKKworCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0c2VudGluZWwucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0c2VudGluZWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmZkYTY4ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi91bml0dGVzdC90ZXN0L3Rlc3Rtb2NrL3Rlc3RzZW50aW5lbC5weQpAQCAtMCwwICsxLDI4IEBACitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgc2VudGluZWwsIERFRkFVTFQKKworCitjbGFzcyBTZW50aW5lbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RTZW50aW5lbHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VudGluZWwud2hhdGV2ZXIsIHNlbnRpbmVsLndoYXRldmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBub3Qgc3RvcmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzZW50aW5lbC53aGF0ZXZlciwgc2VudGluZWwud2hhdGV2ZXJlbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZW50aW5lbCBzaG91bGQgYmUgdW5pcXVlJykKKworCisgICAgZGVmIHRlc3RTZW50aW5lbE5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbnRpbmVsLndoYXRldmVyKSwgJ3NlbnRpbmVsLndoYXRldmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc2VudGluZWwgbmFtZSBpbmNvcnJlY3QnKQorCisKKyAgICBkZWYgdGVzdERFRkFVTFQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShERUZBVUxUIGlzIHNlbnRpbmVsLkRFRkFVTFQpCisKKyAgICBkZWYgdGVzdEJhc2VzKHNlbGYpOgorICAgICAgICAjIElmIHRoaXMgZG9lc24ndCByYWlzZSBhbiBBdHRyaWJ1dGVFcnJvciB0aGVuIGhlbHAobW9jaykgaXMgYnJva2VuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBsYW1iZGE6IHNlbnRpbmVsLl9fYmFzZXNfXykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHdpdGgucHkgYi9MaWIvdW5pdHRlc3QvdGVzdC90ZXN0bW9jay90ZXN0d2l0aC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTBjZmFkCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdG1vY2svdGVzdHdpdGgucHkKQEAgLTAsMCArMSwxNzYgQEAKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB3YXJuaW5ncyBpbXBvcnQgY2F0Y2hfd2FybmluZ3MKKworZnJvbSB1bml0dGVzdC50ZXN0LnRlc3Rtb2NrLnN1cHBvcnQgaW1wb3J0IGlzX2luc3RhbmNlCitmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1hZ2ljTW9jaywgTW9jaywgcGF0Y2gsIHNlbnRpbmVsLCBtb2NrX29wZW4sIGNhbGwKKworCisKK3NvbWV0aGluZyAgPSBzZW50aW5lbC5Tb21ldGhpbmcKK3NvbWV0aGluZ19lbHNlICA9IHNlbnRpbmVsLlNvbWV0aGluZ0Vsc2UKKworCisKK2NsYXNzIFdpdGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50KHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlNvbWV0aGluZzIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsICJ1bnBhdGNoZWQiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuU29tZXRoaW5nMik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZzIsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigncG93JykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgicGF0Y2ggc3dhbGxvd2VkIGV4Y2VwdGlvbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2FzKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18pIGFzIG1vY2tfc29tZXRoaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc19pbnN0YW5jZShtb2NrX3NvbWV0aGluZywgTWFnaWNNb2NrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGF0Y2hpbmcgd3JvbmcgdHlwZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBzZW50aW5lbC5Tb21ldGhpbmcpCisKKworICAgIGRlZiB0ZXN0X3BhdGNoX29iamVjdF93aXRoX3N0YXRlbWVudChzZWxmKToKKyAgICAgICAgY2xhc3MgRm9vKG9iamVjdCk6CisgICAgICAgICAgICBzb21ldGhpbmcgPSAnZm9vJworICAgICAgICBvcmlnaW5hbCA9IEZvby5zb21ldGhpbmcKKyAgICAgICAgd2l0aCBwYXRjaC5vYmplY3QoRm9vLCAnc29tZXRoaW5nJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKEZvby5zb21ldGhpbmcsIG9yaWdpbmFsLCAidW5wYXRjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGb28uc29tZXRoaW5nLCBvcmlnaW5hbCkKKworCisgICAgZGVmIHRlc3Rfd2l0aF9zdGF0ZW1lbnRfbmVzdGVkKHNlbGYpOgorICAgICAgICB3aXRoIGNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKToKKyAgICAgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmcsIHBhdGNoKCclcy5zb21ldGhpbmdfZWxzZScgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmdfZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nX2Vsc2UsIG1vY2tfc29tZXRoaW5nX2Vsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5wYXRjaGVkIikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgc2VudGluZWwuU29tZXRoaW5nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBzZW50aW5lbC5Tb21ldGhpbmdFbHNlKQorCisKKyAgICBkZWYgdGVzdF93aXRoX3N0YXRlbWVudF9zcGVjaWZpZWQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXywgc2VudGluZWwuUGF0Y2hlZCkgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2NrX3NvbWV0aGluZywgc2VudGluZWwuUGF0Y2hlZCwgIndyb25nIHBhdGNoIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKworCisgICAgZGVmIHRlc3RDb250ZXh0TWFuYWdlck1vY2tpbmcoc2VsZik6CisgICAgICAgIG1vY2sgPSBNb2NrKCkKKyAgICAgICAgbW9jay5fX2VudGVyX18gPSBNb2NrKCkKKyAgICAgICAgbW9jay5fX2V4aXRfXyA9IE1vY2soKQorICAgICAgICBtb2NrLl9fZXhpdF9fLnJldHVybl92YWx1ZSA9IEZhbHNlCisKKyAgICAgICAgd2l0aCBtb2NrIGFzIG06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIG1vY2suX19lbnRlcl9fLnJldHVybl92YWx1ZSkKKyAgICAgICAgbW9jay5fX2VudGVyX18uYXNzZXJ0X2NhbGxlZF93aXRoKCkKKyAgICAgICAgbW9jay5fX2V4aXRfXy5hc3NlcnRfY2FsbGVkX3dpdGgoTm9uZSwgTm9uZSwgTm9uZSkKKworCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX3dpdGhfbWFnaWNfbW9jayhzZWxmKToKKyAgICAgICAgbW9jayA9IE1hZ2ljTW9jaygpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgd2l0aCBtb2NrOgorICAgICAgICAgICAgICAgICdmb28nICsgMworICAgICAgICBtb2NrLl9fZW50ZXJfXy5hc3NlcnRfY2FsbGVkX3dpdGgoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobW9jay5fX2V4aXRfXy5jYWxsZWQpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X3NhbWVfYXR0cmlidXRlKHNlbGYpOgorICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmcnICUgX19uYW1lX18sIHNlbnRpbmVsLlBhdGNoZWQpIGFzIG1vY2tfc29tZXRoaW5nOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLCAidW5wYXRjaGVkIikKKworICAgICAgICAgICAgd2l0aCBwYXRjaCgnJXMuc29tZXRoaW5nJyAlIF9fbmFtZV9fKSBhcyBtb2NrX2FnYWluOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29tZXRoaW5nLCBtb2NrX2FnYWluLCAidW5wYXRjaGVkIikKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIG1vY2tfc29tZXRoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdG9yZWQgd2l0aCB3cm9uZyBpbnN0YW5jZSIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZywgIm5vdCByZXN0b3JlZCIpCisKKworICAgIGRlZiB0ZXN0X3dpdGhfc3RhdGVtZW50X2ltYnJpY2F0ZWQoc2VsZik6CisgICAgICAgIHdpdGggcGF0Y2goJyVzLnNvbWV0aGluZycgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZywgbW9ja19zb21ldGhpbmcsICJ1bnBhdGNoZWQiKQorCisgICAgICAgICAgICB3aXRoIHBhdGNoKCclcy5zb21ldGhpbmdfZWxzZScgJSBfX25hbWVfXykgYXMgbW9ja19zb21ldGhpbmdfZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvbWV0aGluZ19lbHNlLCBtb2NrX3NvbWV0aGluZ19lbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVucGF0Y2hlZCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmcsIHNlbnRpbmVsLlNvbWV0aGluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb21ldGhpbmdfZWxzZSwgc2VudGluZWwuU29tZXRoaW5nRWxzZSkKKworCisgICAgZGVmIHRlc3RfZGljdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIGZvbyA9IHt9CisgICAgICAgIHdpdGggcGF0Y2guZGljdChmb28sIHsnYSc6ICdiJ30pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHsnYSc6ICdiJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLCB7fSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICB3aXRoIHBhdGNoLmRpY3QoZm9vLCB7J2EnOiAnYid9KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbywgeydhJzogJ2InfSkKKyAgICAgICAgICAgICAgICByYWlzZSBOYW1lRXJyb3IoJ0tvbnJhZCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28sIHt9KQorCisKKworY2xhc3MgVGVzdE1vY2tPcGVuKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X21vY2tfb3BlbihzZWxmKToKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbigpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKSBhcyBwYXRjaGVkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhwYXRjaGVkLCBtb2NrKQorICAgICAgICAgICAgb3BlbignZm9vJykKKworICAgICAgICBtb2NrLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKCdmb28nKQorCisKKyAgICBkZWYgdGVzdF9tb2NrX29wZW5fY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICBtb2NrID0gbW9ja19vcGVuKCkKKyAgICAgICAgaGFuZGxlID0gbW9jay5yZXR1cm5fdmFsdWUKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpOgorICAgICAgICAgICAgd2l0aCBvcGVuKCdmb28nKSBhcyBmOgorICAgICAgICAgICAgICAgIGYucmVhZCgpCisKKyAgICAgICAgZXhwZWN0ZWRfY2FsbHMgPSBbY2FsbCgnZm9vJyksIGNhbGwoKS5fX2VudGVyX18oKSwgY2FsbCgpLnJlYWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCgpLl9fZXhpdF9fKE5vbmUsIE5vbmUsIE5vbmUpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vY2subW9ja19jYWxscywgZXhwZWN0ZWRfY2FsbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZiwgaGFuZGxlKQorCisKKyAgICBkZWYgdGVzdF9leHBsaWNpdF9tb2NrKHNlbGYpOgorICAgICAgICBtb2NrID0gTWFnaWNNb2NrKCkKKyAgICAgICAgbW9ja19vcGVuKG1vY2spCisKKyAgICAgICAgd2l0aCBwYXRjaCgnJXMub3BlbicgJSBfX25hbWVfXywgbW9jaywgY3JlYXRlPVRydWUpIGFzIHBhdGNoZWQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHBhdGNoZWQsIG1vY2spCisgICAgICAgICAgICBvcGVuKCdmb28nKQorCisgICAgICAgIG1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoJ2ZvbycpCisKKworICAgIGRlZiB0ZXN0X3JlYWRfZGF0YShzZWxmKToKKyAgICAgICAgbW9jayA9IG1vY2tfb3BlbihyZWFkX2RhdGE9J2ZvbycpCisgICAgICAgIHdpdGggcGF0Y2goJyVzLm9wZW4nICUgX19uYW1lX18sIG1vY2ssIGNyZWF0ZT1UcnVlKToKKyAgICAgICAgICAgIGggPSBvcGVuKCdiYXInKQorICAgICAgICAgICAgcmVzdWx0ID0gaC5yZWFkKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgJ2ZvbycpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvZXJyb3IucHkgYi9MaWIvdXJsbGliL2Vycm9yLnB5CmluZGV4IDQwYWRkNDEuLmMxZGZjNDAgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvZXJyb3IucHkKKysrIGIvTGliL3VybGxpYi9lcnJvci5weQpAQCAtMTMsNiArMTMsOSBAQAogCiBpbXBvcnQgdXJsbGliLnJlc3BvbnNlCiAKK19fYWxsX18gPSBbJ1VSTEVycm9yJywgJ0hUVFBFcnJvcicsICdDb250ZW50VG9vU2hvcnRFcnJvciddCisKKwogIyBkbyB0aGVzZSBlcnJvciBjbGFzc2VzIG1ha2Ugc2Vuc2U/CiAjIG1ha2Ugc3VyZSBhbGwgb2YgdGhlIElPRXJyb3Igc3R1ZmYgaXMgb3ZlcnJpZGRlbi4gIHdlIGp1c3Qgd2FudCB0byBiZQogIyBzdWJ0eXBlcy4KZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVxdWVzdC5weSBiL0xpYi91cmxsaWIvcmVxdWVzdC5weQppbmRleCBlYjQ1YzdlLi4yN2FiMmI5IDEwMDY0NAotLS0gYS9MaWIvdXJsbGliL3JlcXVlc3QucHkKKysrIGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CkBAIC04OSwxNCArODksMTYgQEAKIGltcG9ydCBpbwogaW1wb3J0IG9zCiBpbXBvcnQgcG9zaXhwYXRoCi1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgcmUKIGltcG9ydCBzb2NrZXQKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGNvbnRleHRsaWIKIGltcG9ydCB3YXJuaW5ncwogCisKIGZyb20gdXJsbGliLmVycm9yIGltcG9ydCBVUkxFcnJvciwgSFRUUEVycm9yLCBDb250ZW50VG9vU2hvcnRFcnJvcgogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0ICgKICAgICB1cmxwYXJzZSwgdXJsc3BsaXQsIHVybGpvaW4sIHVud3JhcCwgcXVvdGUsIHVucXVvdGUsCkBAIC0xMTIsMjEgKzExNCw0MCBAQAogZWxzZToKICAgICBfaGF2ZV9zc2wgPSBUcnVlCiAKK19fYWxsX18gPSBbCisgICAgIyBDbGFzc2VzCisgICAgJ1JlcXVlc3QnLCAnT3BlbmVyRGlyZWN0b3InLCAnQmFzZUhhbmRsZXInLCAnSFRUUERlZmF1bHRFcnJvckhhbmRsZXInLAorICAgICdIVFRQUmVkaXJlY3RIYW5kbGVyJywgJ0hUVFBDb29raWVQcm9jZXNzb3InLCAnUHJveHlIYW5kbGVyJywKKyAgICAnSFRUUFBhc3N3b3JkTWdyJywgJ0hUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG0nLAorICAgICdBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXInLCAnSFRUUEJhc2ljQXV0aEhhbmRsZXInLCAnUHJveHlCYXNpY0F1dGhIYW5kbGVyJywKKyAgICAnQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlcicsICdIVFRQRGlnZXN0QXV0aEhhbmRsZXInLCAnUHJveHlEaWdlc3RBdXRoSGFuZGxlcicsCisgICAgJ0hUVFBIYW5kbGVyJywgJ0ZpbGVIYW5kbGVyJywgJ0ZUUEhhbmRsZXInLCAnQ2FjaGVGVFBIYW5kbGVyJywKKyAgICAnVW5rbm93bkhhbmRsZXInLCAnSFRUUEVycm9yUHJvY2Vzc29yJywKKyAgICAjIEZ1bmN0aW9ucworICAgICd1cmxvcGVuJywgJ2luc3RhbGxfb3BlbmVyJywgJ2J1aWxkX29wZW5lcicsCisgICAgJ3BhdGhuYW1lMnVybCcsICd1cmwycGF0aG5hbWUnLCAnZ2V0cHJveGllcycsCisgICAgIyBMZWdhY3kgaW50ZXJmYWNlCisgICAgJ3VybHJldHJpZXZlJywgJ3VybGNsZWFudXAnLCAnVVJMb3BlbmVyJywgJ0ZhbmN5VVJMb3BlbmVyJywKK10KKwogIyB1c2VkIGluIFVzZXItQWdlbnQgaGVhZGVyIHNlbnQKIF9fdmVyc2lvbl9fID0gc3lzLnZlcnNpb25bOjNdCiAKIF9vcGVuZXIgPSBOb25lCiBkZWYgdXJsb3Blbih1cmwsIGRhdGE9Tm9uZSwgdGltZW91dD1zb2NrZXQuX0dMT0JBTF9ERUZBVUxUX1RJTUVPVVQsCi0gICAgICAgICAgICAqLCBjYWZpbGU9Tm9uZSwgY2FwYXRoPU5vbmUpOgorICAgICAgICAgICAgKiwgY2FmaWxlPU5vbmUsIGNhcGF0aD1Ob25lLCBjYWRlZmF1bHQ9RmFsc2UpOgogICAgIGdsb2JhbCBfb3BlbmVyCi0gICAgaWYgY2FmaWxlIG9yIGNhcGF0aDoKKyAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGVmYXVsdDoKICAgICAgICAgaWYgbm90IF9oYXZlX3NzbDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1NTTCBzdXBwb3J0IG5vdCBhdmFpbGFibGUnKQogICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19TU0x2MgotICAgICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FmaWxlLCBjYXBhdGgpCisgICAgICAgICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoOgorICAgICAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZmlsZSwgY2FwYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpCiAgICAgICAgICAgICBjaGVja19ob3N0bmFtZSA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lID0gRmFsc2UKQEAgLTE0MiwxNyArMTYzLDc4IEBACiAgICAgZ2xvYmFsIF9vcGVuZXIKICAgICBfb3BlbmVyID0gb3BlbmVyCiAKLSMgVE9ETyhqaHlsdG9uKTogTWFrZSB0aGlzIHdvcmsgd2l0aCB0aGUgc2FtZSBnbG9iYWwgb3BlbmVyLgotX3VybG9wZW5lciA9IE5vbmUKK191cmxfdGVtcGZpbGVzID0gW10KIGRlZiB1cmxyZXRyaWV2ZSh1cmwsIGZpbGVuYW1lPU5vbmUsIHJlcG9ydGhvb2s9Tm9uZSwgZGF0YT1Ob25lKToKLSAgICBnbG9iYWwgX3VybG9wZW5lcgotICAgIGlmIG5vdCBfdXJsb3BlbmVyOgotICAgICAgICBfdXJsb3BlbmVyID0gRmFuY3lVUkxvcGVuZXIoKQotICAgIHJldHVybiBfdXJsb3BlbmVyLnJldHJpZXZlKHVybCwgZmlsZW5hbWUsIHJlcG9ydGhvb2ssIGRhdGEpCisgICAgIiIiCisgICAgUmV0cmlldmUgYSBVUkwgaW50byBhIHRlbXBvcmFyeSBsb2NhdGlvbiBvbiBkaXNrLgorCisgICAgUmVxdWlyZXMgYSBVUkwgYXJndW1lbnQuIElmIGEgZmlsZW5hbWUgaXMgcGFzc2VkLCBpdCBpcyB1c2VkIGFzCisgICAgdGhlIHRlbXBvcmFyeSBmaWxlIGxvY2F0aW9uLiBUaGUgcmVwb3J0aG9vayBhcmd1bWVudCBzaG91bGQgYmUKKyAgICBhIGNhbGxhYmxlIHRoYXQgYWNjZXB0cyBhIGJsb2NrIG51bWJlciwgYSByZWFkIHNpemUsIGFuZCB0aGUKKyAgICB0b3RhbCBmaWxlIHNpemUgb2YgdGhlIFVSTCB0YXJnZXQuIFRoZSBkYXRhIGFyZ3VtZW50IHNob3VsZCBiZQorICAgIHZhbGlkIFVSTCBlbmNvZGVkIGRhdGEuCisKKyAgICBJZiBhIGZpbGVuYW1lIGlzIHBhc3NlZCBhbmQgdGhlIFVSTCBwb2ludHMgdG8gYSBsb2NhbCByZXNvdXJjZSwKKyAgICB0aGUgcmVzdWx0IGlzIGEgY29weSBmcm9tIGxvY2FsIGZpbGUgdG8gbmV3IGZpbGUuCisKKyAgICBSZXR1cm5zIGEgdHVwbGUgY29udGFpbmluZyB0aGUgcGF0aCB0byB0aGUgbmV3bHkgY3JlYXRlZAorICAgIGRhdGEgZmlsZSBhcyB3ZWxsIGFzIHRoZSByZXN1bHRpbmcgSFRUUE1lc3NhZ2Ugb2JqZWN0LgorICAgICIiIgorICAgIHVybF90eXBlLCBwYXRoID0gc3BsaXR0eXBlKHVybCkKKworICAgIHdpdGggY29udGV4dGxpYi5jbG9zaW5nKHVybG9wZW4odXJsLCBkYXRhKSkgYXMgZnA6CisgICAgICAgIGhlYWRlcnMgPSBmcC5pbmZvKCkKKworICAgICAgICAjIEp1c3QgcmV0dXJuIHRoZSBsb2NhbCBwYXRoIGFuZCB0aGUgImhlYWRlcnMiIGZvciBmaWxlOi8vCisgICAgICAgICMgVVJMcy4gTm8gc2Vuc2UgaW4gcGVyZm9ybWluZyBhIGNvcHkgdW5sZXNzIHJlcXVlc3RlZC4KKyAgICAgICAgaWYgdXJsX3R5cGUgPT0gImZpbGUiIGFuZCBub3QgZmlsZW5hbWU6CisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5ub3JtcGF0aChwYXRoKSwgaGVhZGVycworCisgICAgICAgICMgSGFuZGxlIHRlbXBvcmFyeSBmaWxlIHNldHVwLgorICAgICAgICBpZiBmaWxlbmFtZToKKyAgICAgICAgICAgIHRmcCA9IG9wZW4oZmlsZW5hbWUsICd3YicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0ZnAgPSB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKQorICAgICAgICAgICAgZmlsZW5hbWUgPSB0ZnAubmFtZQorICAgICAgICAgICAgX3VybF90ZW1wZmlsZXMuYXBwZW5kKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggdGZwOgorICAgICAgICAgICAgcmVzdWx0ID0gZmlsZW5hbWUsIGhlYWRlcnMKKyAgICAgICAgICAgIGJzID0gMTAyNCo4CisgICAgICAgICAgICBzaXplID0gLTEKKyAgICAgICAgICAgIHJlYWQgPSAwCisgICAgICAgICAgICBibG9ja251bSA9IDAKKyAgICAgICAgICAgIGlmICJjb250ZW50LWxlbmd0aCIgaW4gaGVhZGVyczoKKyAgICAgICAgICAgICAgICBzaXplID0gaW50KGhlYWRlcnNbIkNvbnRlbnQtTGVuZ3RoIl0pCisKKyAgICAgICAgICAgIGlmIHJlcG9ydGhvb2s6CisgICAgICAgICAgICAgICAgcmVwb3J0aG9vayhibG9ja251bSwgMCwgc2l6ZSkKKworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICBibG9jayA9IGZwLnJlYWQoYnMpCisgICAgICAgICAgICAgICAgaWYgbm90IGJsb2NrOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIHJlYWQgKz0gbGVuKGJsb2NrKQorICAgICAgICAgICAgICAgIHRmcC53cml0ZShibG9jaykKKyAgICAgICAgICAgICAgICBibG9ja251bSArPSAxCisgICAgICAgICAgICAgICAgaWYgcmVwb3J0aG9vazoKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0aG9vayhibG9ja251bSwgbGVuKGJsb2NrKSwgc2l6ZSkKKworICAgIGlmIHNpemUgPj0gMCBhbmQgcmVhZCA8IHNpemU6CisgICAgICAgIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yKAorICAgICAgICAgICAgInJldHJpZXZhbCBpbmNvbXBsZXRlOiBnb3Qgb25seSAlaSBvdXQgb2YgJWkgYnl0ZXMiCisgICAgICAgICAgICAlIChyZWFkLCBzaXplKSwgcmVzdWx0KQorCisgICAgcmV0dXJuIHJlc3VsdAogCiBkZWYgdXJsY2xlYW51cCgpOgotICAgIGlmIF91cmxvcGVuZXI6Ci0gICAgICAgIF91cmxvcGVuZXIuY2xlYW51cCgpCisgICAgZm9yIHRlbXBfZmlsZSBpbiBfdXJsX3RlbXBmaWxlczoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MudW5saW5rKHRlbXBfZmlsZSkKKyAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWwgX3VybF90ZW1wZmlsZXNbOl0KICAgICBnbG9iYWwgX29wZW5lcgogICAgIGlmIF9vcGVuZXI6CiAgICAgICAgIF9vcGVuZXIgPSBOb25lCkBAIC0xNzgsNyArMjYwLDggQEAKIGNsYXNzIFJlcXVlc3Q6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCBkYXRhPU5vbmUsIGhlYWRlcnM9e30sCi0gICAgICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdD1Ob25lLCB1bnZlcmlmaWFibGU9RmFsc2UpOgorICAgICAgICAgICAgICAgICBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLAorICAgICAgICAgICAgICAgICBtZXRob2Q9Tm9uZSk6CiAgICAgICAgICMgdW53cmFwKCc8VVJMOnR5cGU6Ly9ob3N0L3BhdGg+JykgLS0+ICd0eXBlOi8vaG9zdC9wYXRoJwogICAgICAgICBzZWxmLmZ1bGxfdXJsID0gdW53cmFwKHVybCkKICAgICAgICAgc2VsZi5mdWxsX3VybCwgc2VsZi5mcmFnbWVudCA9IHNwbGl0dGFnKHNlbGYuZnVsbF91cmwpCkBAIC0xOTIsNiArMjc1LDcgQEAKICAgICAgICAgICAgIG9yaWdpbl9yZXFfaG9zdCA9IHJlcXVlc3RfaG9zdChzZWxmKQogICAgICAgICBzZWxmLm9yaWdpbl9yZXFfaG9zdCA9IG9yaWdpbl9yZXFfaG9zdAogICAgICAgICBzZWxmLnVudmVyaWZpYWJsZSA9IHVudmVyaWZpYWJsZQorICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgICBzZWxmLl9wYXJzZSgpCiAKICAgICBkZWYgX3BhcnNlKHNlbGYpOgpAQCAtMjAzLDQxICsyODcsNjAgQEAKICAgICAgICAgICAgIHNlbGYuaG9zdCA9IHVucXVvdGUoc2VsZi5ob3N0KQogCiAgICAgZGVmIGdldF9tZXRob2Qoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIGluZGljYXRpbmcgdGhlIEhUVFAgcmVxdWVzdCBtZXRob2QuIiIiCisgICAgICAgIGlmIHNlbGYubWV0aG9kIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubWV0aG9kCisgICAgICAgIGVsaWYgc2VsZi5kYXRhIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmV0dXJuICJQT1NUIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuICJHRVQiCiAKLSAgICAjIEJlZ2luIGRlcHJlY2F0ZWQgbWV0aG9kcwotCi0gICAgZGVmIGFkZF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmRhdGEgPSBkYXRhCi0KLSAgICBkZWYgaGFzX2RhdGEoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLmRhdGEgaXMgbm90IE5vbmUKLQotICAgIGRlZiBnZXRfZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZGF0YQotCiAgICAgZGVmIGdldF9mdWxsX3VybChzZWxmKToKICAgICAgICAgaWYgc2VsZi5mcmFnbWVudDoKICAgICAgICAgICAgIHJldHVybiAnJXMjJXMnICUgKHNlbGYuZnVsbF91cmwsIHNlbGYuZnJhZ21lbnQpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5mdWxsX3VybAogCisgICAgIyBCZWdpbiBkZXByZWNhdGVkIG1ldGhvZHMKKworICAgIGRlZiBhZGRfZGF0YShzZWxmLCBkYXRhKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuYWRkX2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKworICAgIGRlZiBoYXNfZGF0YShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuaGFzX2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCisgICAgICAgIHJldHVybiBzZWxmLmRhdGEgaXMgbm90IE5vbmUKKworICAgIGRlZiBnZXRfZGF0YShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X2RhdGEgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCisgICAgICAgIHJldHVybiBzZWxmLmRhdGEKKwogICAgIGRlZiBnZXRfdHlwZShzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X3R5cGUgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCiAgICAgICAgIHJldHVybiBzZWxmLnR5cGUKIAogICAgIGRlZiBnZXRfaG9zdChzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X2hvc3QgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIgorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTEpCiAgICAgICAgIHJldHVybiBzZWxmLmhvc3QKIAogICAgIGRlZiBnZXRfc2VsZWN0b3Ioc2VsZik6CisgICAgICAgIG1zZyA9ICJSZXF1ZXN0LmdldF9zZWxlY3RvciBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYuc2VsZWN0b3IKIAogICAgIGRlZiBpc191bnZlcmlmaWFibGUoc2VsZik6CisgICAgICAgIG1zZyA9ICJSZXF1ZXN0LmlzX3VudmVyaWZpYWJsZSBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYudW52ZXJpZmlhYmxlCiAKICAgICBkZWYgZ2V0X29yaWdpbl9yZXFfaG9zdChzZWxmKToKKyAgICAgICAgbXNnID0gIlJlcXVlc3QuZ2V0X29yaWdpbl9yZXFfaG9zdCBtZXRob2QgaXMgZGVwcmVjYXRlZC4iCisgICAgICAgIHdhcm5pbmdzLndhcm4obXNnLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MSkKICAgICAgICAgcmV0dXJuIHNlbGYub3JpZ2luX3JlcV9ob3N0CiAKICAgICAjIEVuZCBkZXByZWNhdGVkIG1ldGhvZHMKQEAgLTY4Miw4ICs3ODUsOCBAQAogICAgICAgICBzZWxmLnByb3hpZXMgPSBwcm94aWVzCiAgICAgICAgIGZvciB0eXBlLCB1cmwgaW4gcHJveGllcy5pdGVtcygpOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAnJXNfb3BlbicgJSB0eXBlLAotICAgICAgICAgICAgICAgICAgICBsYW1iZGEgciwgcHJveHk9dXJsLCB0eXBlPXR5cGUsIG1ldGg9c2VsZi5wcm94eV9vcGVuOiBcCi0gICAgICAgICAgICAgICAgICAgIG1ldGgociwgcHJveHksIHR5cGUpKQorICAgICAgICAgICAgICAgICAgICBsYW1iZGEgciwgcHJveHk9dXJsLCB0eXBlPXR5cGUsIG1ldGg9c2VsZi5wcm94eV9vcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgbWV0aChyLCBwcm94eSwgdHlwZSkpCiAKICAgICBkZWYgcHJveHlfb3BlbihzZWxmLCByZXEsIHByb3h5LCB0eXBlKToKICAgICAgICAgb3JpZ190eXBlID0gcmVxLnR5cGUKQEAgLTgyNSwxNyArOTI4LDIzIEBACiAgICAgICAgICAgICBzZWxmLnJldHJpZWQgKz0gMQogCiAgICAgICAgIGlmIGF1dGhyZXE6Ci0gICAgICAgICAgICBtbyA9IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5yeC5zZWFyY2goYXV0aHJlcSkKLSAgICAgICAgICAgIGlmIG1vOgotICAgICAgICAgICAgICAgIHNjaGVtZSwgcXVvdGUsIHJlYWxtID0gbW8uZ3JvdXBzKCkKLSAgICAgICAgICAgICAgICBpZiBxdW90ZSBub3QgaW4gWyInIiwgJyInXToKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nLCAyKQotICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpID09ICdiYXNpYyc6Ci0gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVzcG9uc2UgYW5kIHJlc3BvbnNlLmNvZGUgIT0gNDAxOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXRyaWVkID0gMAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UKKyAgICAgICAgICAgIHNjaGVtZSA9IGF1dGhyZXEuc3BsaXQoKVswXQorICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgZG9lcyBub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBzY2hlbWU6ICclcyciICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjaGVtZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbW8gPSBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucnguc2VhcmNoKGF1dGhyZXEpCisgICAgICAgICAgICAgICAgaWYgbW86CisgICAgICAgICAgICAgICAgICAgIHNjaGVtZSwgcXVvdGUsIHJlYWxtID0gbW8uZ3JvdXBzKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgcXVvdGUgbm90IGluIFsnIicsIiciXToKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNjaGVtZS5sb3dlcigpID09ICdiYXNpYyc6CisgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYucmV0cnlfaHR0cF9iYXNpY19hdXRoKGhvc3QsIHJlcSwgcmVhbG0pCisgICAgICAgICAgICAgICAgICAgICAgICBpZiByZXNwb25zZSBhbmQgcmVzcG9uc2UuY29kZSAhPSA0MDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXRyaWVkID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlCiAKICAgICBkZWYgcmV0cnlfaHR0cF9iYXNpY19hdXRoKHNlbGYsIGhvc3QsIHJlcSwgcmVhbG0pOgogICAgICAgICB1c2VyLCBwdyA9IHNlbGYucGFzc3dkLmZpbmRfdXNlcl9wYXNzd29yZChyZWFsbSwgaG9zdCkKQEAgLTg3OCw5ICs5ODcsOSBAQAogICAgICAgICByZXR1cm4gcmVzcG9uc2UKIAogCi1kZWYgcmFuZG9tYnl0ZXMobik6Ci0gICAgIiIiUmV0dXJuIG4gcmFuZG9tIGJ5dGVzLiIiIgotICAgIHJldHVybiBvcy51cmFuZG9tKG4pCisjIFJldHVybiBuIHJhbmRvbSBieXRlcy4KK19yYW5kb21ieXRlcyA9IG9zLnVyYW5kb20KKwogCiBjbGFzcyBBYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyOgogICAgICMgRGlnZXN0IGF1dGhlbnRpY2F0aW9uIGlzIHNwZWNpZmllZCBpbiBSRkMgMjYxNy4KQEAgLTkyMSw2ICsxMDMwLDkgQEAKICAgICAgICAgICAgIHNjaGVtZSA9IGF1dGhyZXEuc3BsaXQoKVswXQogICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0gJ2RpZ2VzdCc6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfaHR0cF9kaWdlc3RfYXV0aChyZXEsIGF1dGhyZXEpCisgICAgICAgICAgICBlbGlmIHNjaGVtZS5sb3dlcigpICE9ICdiYXNpYyc6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQWJzdHJhY3REaWdlc3RBdXRoSGFuZGxlciBkb2VzIG5vdCBzdXBwb3J0IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0aGUgZm9sbG93aW5nIHNjaGVtZTogJyVzJyIgJSBzY2hlbWUpCiAKICAgICBkZWYgcmV0cnlfaHR0cF9kaWdlc3RfYXV0aChzZWxmLCByZXEsIGF1dGgpOgogICAgICAgICB0b2tlbiwgY2hhbGxlbmdlID0gYXV0aC5zcGxpdCgnICcsIDEpCkBAIC05NDEsNyArMTA1Myw3IEBACiAgICAgICAgICMgYXV0aGVudGljYXRpb24sIGFuZCB0byBwcm92aWRlIHNvbWUgbWVzc2FnZSBpbnRlZ3JpdHkgcHJvdGVjdGlvbi4KICAgICAgICAgIyBUaGlzIGlzbid0IGEgZmFidWxvdXMgZWZmb3J0LCBidXQgaXQncyBwcm9iYWJseSBHb29kIEVub3VnaC4KICAgICAgICAgcyA9ICIlczolczolczoiICUgKHNlbGYubm9uY2VfY291bnQsIG5vbmNlLCB0aW1lLmN0aW1lKCkpCi0gICAgICAgIGIgPSBzLmVuY29kZSgiYXNjaWkiKSArIHJhbmRvbWJ5dGVzKDgpCisgICAgICAgIGIgPSBzLmVuY29kZSgiYXNjaWkiKSArIF9yYW5kb21ieXRlcyg4KQogICAgICAgICBkaWcgPSBoYXNobGliLnNoYTEoYikuaGV4ZGlnZXN0KCkKICAgICAgICAgcmV0dXJuIGRpZ1s6MTZdCiAKQEAgLTEwNjYsNyArMTE3OCw3IEBACiAgICAgICAgIGlmIHJlcXVlc3QuZGF0YSBpcyBub3QgTm9uZTogICMgUE9TVAogICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3QuZGF0YQogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBzdHIpOgotICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiXAorICAgICAgICAgICAgICAgIG1zZyA9ICJQT1NUIGRhdGEgc2hvdWxkIGJlIGJ5dGVzIG9yIGFuIGl0ZXJhYmxlIG9mIGJ5dGVzLiAiIFwKICAgICAgICAgICAgICAgICAgICAgICAiSXQgY2Fubm90IGJlIG9mIHR5cGUgc3RyLiIKICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnKQogICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QuaGFzX2hlYWRlcignQ29udGVudC10eXBlJyk6CkBAIC0xMTYyLDcgKzEyNzQsNiBAQAogICAgIGh0dHBfcmVxdWVzdCA9IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fcmVxdWVzdF8KIAogaWYgaGFzYXR0cihodHRwLmNsaWVudCwgJ0hUVFBTQ29ubmVjdGlvbicpOgotICAgIGltcG9ydCBzc2wKIAogICAgIGNsYXNzIEhUVFBTSGFuZGxlcihBYnN0cmFjdEhUVFBIYW5kbGVyKToKIApAQCAtMTE3Nyw2ICsxMjg4LDggQEAKIAogICAgICAgICBodHRwc19yZXF1ZXN0ID0gQWJzdHJhY3RIVFRQSGFuZGxlci5kb19yZXF1ZXN0XwogCisgICAgX19hbGxfXy5hcHBlbmQoJ0hUVFBTSGFuZGxlcicpCisKIGNsYXNzIEhUVFBDb29raWVQcm9jZXNzb3IoQmFzZUhhbmRsZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb29raWVqYXI9Tm9uZSk6CiAgICAgICAgIGltcG9ydCBodHRwLmNvb2tpZWphcgpAQCAtMTQ2Myw2ICsxNTc2LDkgQEAKIAogICAgICMgQ29uc3RydWN0b3IKICAgICBkZWYgX19pbml0X18oc2VsZiwgcHJveGllcz1Ob25lLCAqKng1MDkpOgorICAgICAgICBtc2cgPSAiJShjbGFzcylzIHN0eWxlIG9mIGludm9raW5nIHJlcXVlc3RzIGlzIGRlcHJlY2F0ZWQuICIgXAorICAgICAgICAgICAgICAiVXNlIG5ld2VyIHVybG9wZW4gZnVuY3Rpb25zL21ldGhvZHMiICUgeydjbGFzcyc6IHNlbGYuX19jbGFzc19fLl9fbmFtZV9ffQorICAgICAgICB3YXJuaW5ncy53YXJuKG1zZywgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTMpCiAgICAgICAgIGlmIHByb3hpZXMgaXMgTm9uZToKICAgICAgICAgICAgIHByb3hpZXMgPSBnZXRwcm94aWVzKCkKICAgICAgICAgYXNzZXJ0IGhhc2F0dHIocHJveGllcywgJ2tleXMnKSwgInByb3hpZXMgbXVzdCBiZSBhIG1hcHBpbmciCkBAIC0xNTQyLDYgKzE2NTgsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYsIG5hbWUpKHVybCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgbmFtZSkodXJsLCBkYXRhKQorICAgICAgICBleGNlcHQgSFRUUEVycm9yOgorICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CiAgICAgICAgICAgICByYWlzZSBJT0Vycm9yKCdzb2NrZXQgZXJyb3InLCBtc2cpLndpdGhfdHJhY2ViYWNrKHN5cy5leGNfaW5mbygpWzJdKQogCkBAIC0xNzYwLDggKzE4NzgsOCBAQAogCiAgICAgZGVmIG9wZW5fbG9jYWxfZmlsZShzZWxmLCB1cmwpOgogICAgICAgICAiIiJVc2UgbG9jYWwgZmlsZS4iIiIKLSAgICAgICAgaW1wb3J0IG1pbWV0eXBlcywgZW1haWwudXRpbHMKLSAgICAgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAgICAgICAgaW1wb3J0IGVtYWlsLnV0aWxzCisgICAgICAgIGltcG9ydCBtaW1ldHlwZXMKICAgICAgICAgaG9zdCwgZmlsZSA9IHNwbGl0aG9zdCh1cmwpCiAgICAgICAgIGxvY2FsbmFtZSA9IHVybDJwYXRobmFtZShmaWxlKQogICAgICAgICB0cnk6CkBAIC0xODc3LDcgKzE5OTUsNyBAQAogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LXR5cGU6ICVzJyAlIHR5cGUpCiAgICAgICAgIGlmIGVuY29kaW5nID09ICdiYXNlNjQnOgogICAgICAgICAgICAgIyBYWFggaXMgdGhpcyBlbmNvZGluZy9kZWNvZGluZyBvaz8KLSAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4xJykKKyAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuZGVjb2RlYnl0ZXMoZGF0YS5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnbGF0aW4tMScpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0gdW5xdW90ZShkYXRhKQogICAgICAgICBtc2cuYXBwZW5kKCdDb250ZW50LUxlbmd0aDogJWQnICUgbGVuKGRhdGEpKQpAQCAtMTk3MCw3ICsyMDg4LDYgQEAKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29kZSwgZXJybXNnLCBoZWFkZXJzKQogICAgICAgICBzdHVmZiA9IGhlYWRlcnNbJ3d3dy1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTE5OTYsNyArMjExMyw2IEBACiAgICAgICAgICAgICBVUkxvcGVuZXIuaHR0cF9lcnJvcl9kZWZhdWx0KHNlbGYsIHVybCwgZnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmNvZGUsIGVycm1zZywgaGVhZGVycykKICAgICAgICAgc3R1ZmYgPSBoZWFkZXJzWydwcm94eS1hdXRoZW50aWNhdGUnXQotICAgICAgICBpbXBvcnQgcmUKICAgICAgICAgbWF0Y2ggPSByZS5tYXRjaCgnWyBcdF0qKFteIFx0XSspWyBcdF0rcmVhbG09IihbXiJdKikiJywgc3R1ZmYpCiAgICAgICAgIGlmIG5vdCBtYXRjaDoKICAgICAgICAgICAgIFVSTG9wZW5lci5odHRwX2Vycm9yX2RlZmF1bHQoc2VsZiwgdXJsLCBmcCwKQEAgLTIyODIsOCArMjM5OCw2IEBACiAgICAgICAnZXhjZXB0aW9ucyc6IFsnZm9vLmJhcicsICcqLmJhci5jb20nLCAnMTI3LjAuMC4xJywgJzEwLjEnLCAnMTAuMC8xNiddCiAgICAgfQogICAgICIiIgotICAgIGltcG9ydCByZQotICAgIGltcG9ydCBzb2NrZXQKICAgICBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKIAogICAgIGhvc3Rvbmx5LCBwb3J0ID0gc3BsaXRwb3J0KGhvc3QpCkBAIC0yMzg2LDcgKzI1MDAsNiBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBwcm94eVNlcnZlci5zcGxpdCgnOycpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9jb2wsIGFkZHJlc3MgPSBwLnNwbGl0KCc9JywgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGlmIGFkZHJlc3MgaGFzIGEgdHlwZTovLyBwcmVmaXgKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdeKFteLzpdKyk6Ly8nLCBhZGRyZXNzKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzID0gJyVzOi8vJXMnICUgKHByb3RvY29sLCBhZGRyZXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgcHJveGllc1twcm90b2NvbF0gPSBhZGRyZXNzCkBAIC0yNDE4LDcgKzI1MzEsNiBAQAogICAgIGRlZiBwcm94eV9ieXBhc3NfcmVnaXN0cnkoaG9zdCk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcG9ydCB3aW5yZWcKLSAgICAgICAgICAgIGltcG9ydCByZQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAjIFN0ZCBtb2R1bGVzLCBzbyBzaG91bGQgYmUgYXJvdW5kIC0gYnV0IHlvdSBuZXZlciBrbm93IQogICAgICAgICAgICAgcmV0dXJuIDAKZGlmZiAtLWdpdCBhL0xpYi91cmxsaWIvcmVzcG9uc2UucHkgYi9MaWIvdXJsbGliL3Jlc3BvbnNlLnB5CmluZGV4IGZmYWE1ZmEuLjFjZjFkMWEgMTAwNjQ0Ci0tLSBhL0xpYi91cmxsaWIvcmVzcG9uc2UucHkKKysrIGIvTGliL3VybGxpYi9yZXNwb25zZS5weQpAQCAtMzcsMTIgKzM3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZChzZWxmKSwgc2VsZi5mcCkKIAogICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi5mcDoKKyAgICAgICAgICAgIHNlbGYuZnAuY2xvc2UoKQorICAgICAgICBzZWxmLmZwID0gTm9uZQogICAgICAgICBzZWxmLnJlYWQgPSBOb25lCiAgICAgICAgIHNlbGYucmVhZGxpbmUgPSBOb25lCiAgICAgICAgIHNlbGYucmVhZGxpbmVzID0gTm9uZQogICAgICAgICBzZWxmLmZpbGVubyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5mcDogc2VsZi5mcC5jbG9zZSgpCi0gICAgICAgIHNlbGYuZnAgPSBOb25lCisgICAgICAgIHNlbGYuX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuX19uZXh0X18gPSBOb25lCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmZwIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvdXVpZC5weSBiL0xpYi91dWlkLnB5CmluZGV4IDU2ODRhZDcuLjBkZjA3NDMgMTAwNjQ0Ci0tLSBhL0xpYi91dWlkLnB5CisrKyBiL0xpYi91dWlkLnB5CkBAIC00NDAsNyArNDQwLDcgQEAKICAgICBpbXBvcnQgc3lzCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICBpbXBvcnQgb3MKLSAgICAgICAgaWYgaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkgPj0gOToKKyAgICAgICAgaWYgaW50KG9zLnVuYW1lKCkucmVsZWFzZS5zcGxpdCgnLicpWzBdKSA+PSA5OgogICAgICAgICAgICAgX3V1aWRfZ2VuZXJhdGVfcmFuZG9tID0gX3V1aWRfZ2VuZXJhdGVfdGltZSA9IE5vbmUKIAogICAgICMgT24gV2luZG93cyBwcmlvciB0byAyMDAwLCBVdWlkQ3JlYXRlIGdpdmVzIGEgVVVJRCBjb250YWluaW5nIHRoZQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvX19pbml0X18ucHkgYi9MaWIvdmVudi9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDJkZWI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvX19pbml0X18ucHkKQEAgLTAsMCArMSwzOTggQEAKKyIiIgorVmlydHVhbCBlbnZpcm9ubWVudCAodmVudikgcGFja2FnZSBmb3IgUHl0aG9uLiBCYXNlZCBvbiBQRVAgNDA1LgorCitDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBWaW5heSBTYWppcC4KK0xpY2Vuc2VkIHRvIHRoZSBQU0YgdW5kZXIgYSBjb250cmlidXRvciBhZ3JlZW1lbnQuCisKK3VzYWdlOiBweXRob24gLW0gdmVudiBbLWhdIFstLXN5c3RlbS1zaXRlLXBhY2thZ2VzXSBbLS1zeW1saW5rc10gWy0tY2xlYXJdCisgICAgICAgICAgICBbLS11cGdyYWRlXQorICAgICAgICAgICAgRU5WX0RJUiBbRU5WX0RJUiAuLi5dCisKK0NyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KKworcG9zaXRpb25hbCBhcmd1bWVudHM6CisgIEVOVl9ESVIgICAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorCitvcHRpb25hbCBhcmd1bWVudHM6CisgIC1oLCAtLWhlbHAgICAgICAgICAgICBzaG93IHRoaXMgaGVscCBtZXNzYWdlIGFuZCBleGl0CisgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIEdpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpdGUtcGFja2FnZXMgZGlyLgorICAtLXN5bWxpbmtzICAgICAgICAgICAgQXR0ZW1wdCB0byBzeW1saW5rIHJhdGhlciB0aGFuIGNvcHkuCisgIC0tY2xlYXIgICAgICAgICAgICAgICBEZWxldGUgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdCBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgICAgICAgICAgICAgICAgIElmIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBkaXJlY3RvcnkgZXhpc3RzLCBhbiBlcnJvciBpcworICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VkLgorICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uIGhhcyBiZWVuIHVwZ3JhZGVkIGluLXBsYWNlLgorIiIiCitpbXBvcnQgYmFzZTY0CitpbXBvcnQgaW8KK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc2h1dGlsCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHRocmVhZGluZyA9IE5vbmUKKworbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisKK2NsYXNzIENvbnRleHQ6CisgICAgIiIiCisgICAgSG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgYSBjdXJyZW50IHZlbnYgY3JlYXRpb24vdXBncmFkZSByZXF1ZXN0LgorICAgICIiIgorICAgIHBhc3MKKworCitjbGFzcyBFbnZCdWlsZGVyOgorICAgICIiIgorICAgIFRoaXMgY2xhc3MgZXhpc3RzIHRvIGFsbG93IHZpcnR1YWwgZW52aXJvbm1lbnQgY3JlYXRpb24gdG8gYmUKKyAgICBjdXN0b21pc2VkLiBUaGUgY29uc3RydWN0b3IgcGFyYW1ldGVycyBkZXRlcm1pbmUgdGhlIGJ1aWxkZXIncworICAgIGJlaGF2aW91ciB3aGVuIGNhbGxlZCB1cG9uIHRvIGNyZWF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQuCisKKyAgICBCeSBkZWZhdWx0LCB0aGUgYnVpbGRlciBtYWtlcyB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMgZGlyCisgICAgYXZhaWxhYmxlIHRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorCisgICAgQnkgZGVmYXVsdCwgdGhlIGNyZWF0aW9uIHByb2Nlc3MgdXNlcyBzeW1saW5rcyB3aGVyZXZlciBwb3NzaWJsZS4KKworICAgIDpwYXJhbSBzeXN0ZW1fc2l0ZV9wYWNrYWdlczogSWYgVHJ1ZSwgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXIgaXMgYXZhaWxhYmxlIHRvIGNyZWF0ZWQgZW52aXJvbm1lbnRzLgorICAgIDpwYXJhbSBjbGVhcjogSWYgVHJ1ZSBhbmQgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBpdCBpcyBkZWxldGVkLgorICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICByYWlzZWQuCisgICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCisgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgIDpwYXJhbSB1cGdyYWRlOiBJZiBUcnVlLCB1cGdyYWRlIGFuIGV4aXN0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLAorICAgICAgICAgICAgICAgICBzeW1saW5rcz1GYWxzZSwgdXBncmFkZT1GYWxzZSk6CisgICAgICAgIHNlbGYuc3lzdGVtX3NpdGVfcGFja2FnZXMgPSBzeXN0ZW1fc2l0ZV9wYWNrYWdlcworICAgICAgICBzZWxmLmNsZWFyID0gY2xlYXIKKyAgICAgICAgc2VsZi5zeW1saW5rcyA9IHN5bWxpbmtzCisgICAgICAgIHNlbGYudXBncmFkZSA9IHVwZ3JhZGUKKworICAgIGRlZiBjcmVhdGUoc2VsZiwgZW52X2Rpcik6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgorCisgICAgICAgIDpwYXJhbSBlbnZfZGlyOiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgaW4uCisKKyAgICAgICAgIiIiCisgICAgICAgIGVudl9kaXIgPSBvcy5wYXRoLmFic3BhdGgoZW52X2RpcikKKyAgICAgICAgY29udGV4dCA9IHNlbGYuZW5zdXJlX2RpcmVjdG9yaWVzKGVudl9kaXIpCisgICAgICAgIHNlbGYuY3JlYXRlX2NvbmZpZ3VyYXRpb24oY29udGV4dCkKKyAgICAgICAgc2VsZi5zZXR1cF9weXRob24oY29udGV4dCkKKyAgICAgICAgaWYgbm90IHNlbGYudXBncmFkZToKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfc2NyaXB0cyhjb250ZXh0KQorICAgICAgICAgICAgc2VsZi5wb3N0X3NldHVwKGNvbnRleHQpCisKKyAgICBkZWYgZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYsIGVudl9kaXIpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIHRoZSBkaXJlY3RvcmllcyBmb3IgdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIFJldHVybnMgYSBjb250ZXh0IG9iamVjdCB3aGljaCBob2xkcyBwYXRocyBpbiB0aGUgZW52aXJvbm1lbnQsCisgICAgICAgIGZvciB1c2UgYnkgc3Vic2VxdWVudCBsb2dpYy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIGNyZWF0ZV9pZl9uZWVkZWQoZCk6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZCk6CisgICAgICAgICAgICAgICAgb3MubWFrZWRpcnMoZCkKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhlbnZfZGlyKSBhbmQgbm90IChzZWxmLmNsZWFyIG9yIHNlbGYudXBncmFkZSk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdEaXJlY3RvcnkgZXhpc3RzOiAlcycgJSBlbnZfZGlyKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhlbnZfZGlyKSBhbmQgc2VsZi5jbGVhcjoKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZW52X2RpcikKKyAgICAgICAgY29udGV4dCA9IENvbnRleHQoKQorICAgICAgICBjb250ZXh0LmVudl9kaXIgPSBlbnZfZGlyCisgICAgICAgIGNvbnRleHQuZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KGVudl9kaXIpWzFdCisgICAgICAgIGNvbnRleHQucHJvbXB0ID0gJyglcykgJyAlIGNvbnRleHQuZW52X25hbWUKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChlbnZfZGlyKQorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgJ19fUFlWRU5WX0xBVU5DSEVSX18nIGluIGVudjoKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uWydfX1BZVkVOVl9MQVVOQ0hFUl9fJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuZXhlY3V0YWJsZQorICAgICAgICBkaXJuYW1lLCBleGVuYW1lID0gb3MucGF0aC5zcGxpdChvcy5wYXRoLmFic3BhdGgoZXhlY3V0YWJsZSkpCisgICAgICAgIGNvbnRleHQuZXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUKKyAgICAgICAgY29udGV4dC5weXRob25fZGlyID0gZGlybmFtZQorICAgICAgICBjb250ZXh0LnB5dGhvbl9leGUgPSBleGVuYW1lCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgYmlubmFtZSA9ICdTY3JpcHRzJworICAgICAgICAgICAgaW5jcGF0aCA9ICdJbmNsdWRlJworICAgICAgICAgICAgbGlicGF0aCA9IG9zLnBhdGguam9pbihlbnZfZGlyLCAnTGliJywgJ3NpdGUtcGFja2FnZXMnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmlubmFtZSA9ICdiaW4nCisgICAgICAgICAgICBpbmNwYXRoID0gJ2luY2x1ZGUnCisgICAgICAgICAgICBsaWJwYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsICdsaWInLCAncHl0aG9uJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sICdzaXRlLXBhY2thZ2VzJykKKyAgICAgICAgY29udGV4dC5pbmNfcGF0aCA9IHBhdGggPSBvcy5wYXRoLmpvaW4oZW52X2RpciwgaW5jcGF0aCkKKyAgICAgICAgY3JlYXRlX2lmX25lZWRlZChwYXRoKQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGxpYnBhdGgpCisgICAgICAgIGNvbnRleHQuYmluX3BhdGggPSBiaW5wYXRoID0gb3MucGF0aC5qb2luKGVudl9kaXIsIGJpbm5hbWUpCisgICAgICAgIGNvbnRleHQuYmluX25hbWUgPSBiaW5uYW1lCisgICAgICAgIGNvbnRleHQuZW52X2V4ZSA9IG9zLnBhdGguam9pbihiaW5wYXRoLCBleGVuYW1lKQorICAgICAgICBjcmVhdGVfaWZfbmVlZGVkKGJpbnBhdGgpCisgICAgICAgIHJldHVybiBjb250ZXh0CisKKyAgICBkZWYgY3JlYXRlX2NvbmZpZ3VyYXRpb24oc2VsZiwgY29udGV4dCk6CisgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYSBjb25maWd1cmF0aW9uIGZpbGUgaW5kaWNhdGluZyB3aGVyZSB0aGUgZW52aXJvbm1lbnQncyBQeXRob24KKyAgICAgICAgd2FzIGNvcGllZCBmcm9tLCBhbmQgd2hldGhlciB0aGUgc3lzdGVtIHNpdGUtcGFja2FnZXMgc2hvdWxkIGJlIG1hZGUKKyAgICAgICAgYXZhaWxhYmxlIGluIHRoZSBlbnZpcm9ubWVudC4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICAiIiIKKyAgICAgICAgY29udGV4dC5jZmdfcGF0aCA9IHBhdGggPSBvcy5wYXRoLmpvaW4oY29udGV4dC5lbnZfZGlyLCAncHl2ZW52LmNmZycpCisgICAgICAgIHdpdGggb3BlbihwYXRoLCAndycsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdob21lID0gJXNcbicgJSBjb250ZXh0LnB5dGhvbl9kaXIpCisgICAgICAgICAgICBpZiBzZWxmLnN5c3RlbV9zaXRlX3BhY2thZ2VzOgorICAgICAgICAgICAgICAgIGluY2wgPSAndHJ1ZScKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaW5jbCA9ICdmYWxzZScKKyAgICAgICAgICAgIGYud3JpdGUoJ2luY2x1ZGUtc3lzdGVtLXNpdGUtcGFja2FnZXMgPSAlc1xuJyAlIGluY2wpCisgICAgICAgICAgICBmLndyaXRlKCd2ZXJzaW9uID0gJWQuJWQuJWRcbicgJSBzeXMudmVyc2lvbl9pbmZvWzozXSkKKworICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgZGVmIGluY2x1ZGVfYmluYXJ5KHNlbGYsIGYpOgorICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgoJy5weWQnLCAnLmRsbCcpKToKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGYuc3RhcnRzd2l0aCgncHl0aG9uJykgYW5kIGYuZW5kc3dpdGgoJy5leGUnKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHN5bWxpbmtfb3JfY29weShzZWxmLCBzcmMsIGRzdCk6CisgICAgICAgICIiIgorICAgICAgICBUcnkgc3ltbGlua2luZyBhIGZpbGUsIGFuZCBpZiB0aGF0IGZhaWxzLCBmYWxsIGJhY2sgdG8gY29weWluZy4KKyAgICAgICAgIiIiCisgICAgICAgIGZvcmNlX2NvcHkgPSBub3Qgc2VsZi5zeW1saW5rcworICAgICAgICBpZiBub3QgZm9yY2VfY29weToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsoZHN0KTogIyBjYW4ndCBsaW5rIHRvIGl0c2VsZiEKKyAgICAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhzcmMsIGRzdCkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246ICAgIyBtYXkgbmVlZCB0byB1c2UgYSBtb3JlIHNwZWNpZmljIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdVbmFibGUgdG8gc3ltbGluayAlciB0byAlcicsIHNyYywgZHN0KQorICAgICAgICAgICAgICAgIGZvcmNlX2NvcHkgPSBUcnVlCisgICAgICAgIGlmIGZvcmNlX2NvcHk6CisgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisKKyAgICBkZWYgc2V0dXBfcHl0aG9uKHNlbGYsIGNvbnRleHQpOgorICAgICAgICAiIiIKKyAgICAgICAgU2V0IHVwIGEgUHl0aG9uIGV4ZWN1dGFibGUgaW4gdGhlIGVudmlyb25tZW50LgorCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICBiaW5wYXRoID0gY29udGV4dC5iaW5fcGF0aAorICAgICAgICBleGVuYW1lID0gY29udGV4dC5weXRob25fZXhlCisgICAgICAgIHBhdGggPSBjb250ZXh0LmVudl9leGUKKyAgICAgICAgY29waWVyID0gc2VsZi5zeW1saW5rX29yX2NvcHkKKyAgICAgICAgY29waWVyKGNvbnRleHQuZXhlY3V0YWJsZSwgcGF0aCkKKyAgICAgICAgZGlybmFtZSA9IGNvbnRleHQucHl0aG9uX2RpcgorICAgICAgICBpZiBvcy5uYW1lICE9ICdudCc6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2xpbmsocGF0aCk6CisgICAgICAgICAgICAgICAgb3MuY2htb2QocGF0aCwgMG83NTUpCisgICAgICAgICAgICBmb3Igc3VmZml4IGluICgncHl0aG9uJywgJ3B5dGhvbjMnKToKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocGF0aCk6CisgICAgICAgICAgICAgICAgICAgIG9zLnN5bWxpbmsoZXhlbmFtZSwgcGF0aCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHN1YmRpciA9ICdETExzJworICAgICAgICAgICAgaW5jbHVkZSA9IHNlbGYuaW5jbHVkZV9iaW5hcnkKKyAgICAgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gb3MubGlzdGRpcihkaXJuYW1lKSBpZiBpbmNsdWRlKGYpXQorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIGYpCisgICAgICAgICAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGYpCisgICAgICAgICAgICAgICAgaWYgZHN0ICE9IGNvbnRleHQuZW52X2V4ZTogICMgYWxyZWFkeSBkb25lLCBhYm92ZQorICAgICAgICAgICAgICAgICAgICBjb3BpZXIoc3JjLCBkc3QpCisgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKGRpcm5hbWUsIHN1YmRpcikKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZGlybmFtZSk6CisgICAgICAgICAgICAgICAgZmlsZXMgPSBbZiBmb3IgZiBpbiBvcy5saXN0ZGlyKGRpcm5hbWUpIGlmIGluY2x1ZGUoZildCisgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBmKQorICAgICAgICAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4oYmlucGF0aCwgZikKKyAgICAgICAgICAgICAgICAgICAgY29waWVyKHNyYywgZHN0KQorICAgICAgICAgICAgIyBjb3B5IGluaXQudGNsIG92ZXIKKyAgICAgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGNvbnRleHQucHl0aG9uX2Rpcik6CisgICAgICAgICAgICAgICAgaWYgJ2luaXQudGNsJyBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICAgICAgdGNsZGlyID0gb3MucGF0aC5iYXNlbmFtZShyb290KQorICAgICAgICAgICAgICAgICAgICB0Y2xkaXIgPSBvcy5wYXRoLmpvaW4oY29udGV4dC5lbnZfZGlyLCAnTGliJywgdGNsZGlyKQorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyh0Y2xkaXIpCisgICAgICAgICAgICAgICAgICAgIHNyYyA9IG9zLnBhdGguam9pbihyb290LCAnaW5pdC50Y2wnKQorICAgICAgICAgICAgICAgICAgICBkc3QgPSBvcy5wYXRoLmpvaW4odGNsZGlyLCAnaW5pdC50Y2wnKQorICAgICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc3JjLCBkc3QpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICBkZWYgc2V0dXBfc2NyaXB0cyhzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBzY3JpcHRzIGludG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQgZnJvbSBhIGRpcmVjdG9yeS4KKworICAgICAgICBUaGlzIG1ldGhvZCBpbnN0YWxscyB0aGUgZGVmYXVsdCBzY3JpcHRzIGludG8gdGhlIGVudmlyb25tZW50CisgICAgICAgIGJlaW5nIGNyZWF0ZWQuIFlvdSBjYW4gcHJldmVudCB0aGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gYnkgb3ZlcnJpZGluZworICAgICAgICB0aGlzIG1ldGhvZCBpZiB5b3UgcmVhbGx5IG5lZWQgdG8sIG9yIGlmIHlvdSBuZWVkIHRvIHNwZWNpZnkKKyAgICAgICAgYSBkaWZmZXJlbnQgbG9jYXRpb24gZm9yIHRoZSBzY3JpcHRzIHRvIGluc3RhbGwuIEJ5IGRlZmF1bHQsIHRoZQorICAgICAgICAnc2NyaXB0cycgZGlyZWN0b3J5IGluIHRoZSB2ZW52IHBhY2thZ2UgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mCisgICAgICAgIHNjcmlwdHMgdG8gaW5zdGFsbC4KKyAgICAgICAgIiIiCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoLCAnc2NyaXB0cycpCisgICAgICAgIHNlbGYuaW5zdGFsbF9zY3JpcHRzKGNvbnRleHQsIHBhdGgpCisKKyAgICBkZWYgcG9zdF9zZXR1cChzZWxmLCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIEhvb2sgZm9yIHBvc3Qtc2V0dXAgbW9kaWZpY2F0aW9uIG9mIHRoZSB2ZW52LiBTdWJjbGFzc2VzIG1heSBpbnN0YWxsCisgICAgICAgIGFkZGl0aW9uYWwgcGFja2FnZXMgb3Igc2NyaXB0cyBoZXJlLCBhZGQgYWN0aXZhdGlvbiBzaGVsbCBzY3JpcHRzLCBldGMuCisKKyAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiByZXBsYWNlX3ZhcmlhYmxlcyhzZWxmLCB0ZXh0LCBjb250ZXh0KToKKyAgICAgICAgIiIiCisgICAgICAgIFJlcGxhY2UgdmFyaWFibGUgcGxhY2Vob2xkZXJzIGluIHNjcmlwdCB0ZXh0IHdpdGggY29udGV4dC1zcGVjaWZpYworICAgICAgICB2YXJpYWJsZXMuCisKKyAgICAgICAgUmV0dXJuIHRoZSB0ZXh0IHBhc3NlZCBpbiAsIGJ1dCB3aXRoIHZhcmlhYmxlcyByZXBsYWNlZC4KKworICAgICAgICA6cGFyYW0gdGV4dDogVGhlIHRleHQgaW4gd2hpY2ggdG8gcmVwbGFjZSBwbGFjZWhvbGRlciB2YXJpYWJsZXMuCisgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSBlbnZpcm9ubWVudCBjcmVhdGlvbiByZXF1ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICIiIgorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfRElSX18nLCBjb250ZXh0LmVudl9kaXIpCisgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoJ19fVkVOVl9OQU1FX18nLCBjb250ZXh0LnByb21wdCkKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnX19WRU5WX0JJTl9OQU1FX18nLCBjb250ZXh0LmJpbl9uYW1lKQorICAgICAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKCdfX1ZFTlZfUFlUSE9OX18nLCBjb250ZXh0LmVudl9leGUpCisgICAgICAgIHJldHVybiB0ZXh0CisKKyAgICBkZWYgaW5zdGFsbF9zY3JpcHRzKHNlbGYsIGNvbnRleHQsIHBhdGgpOgorICAgICAgICAiIiIKKyAgICAgICAgSW5zdGFsbCBzY3JpcHRzIGludG8gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQgZnJvbSBhIGRpcmVjdG9yeS4KKworICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAorICAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAgICA6cGFyYW0gcGF0aDogICAgQWJzb2x1dGUgcGF0aG5hbWUgb2YgYSBkaXJlY3RvcnkgY29udGFpbmluZyBzY3JpcHQuCisgICAgICAgICAgICAgICAgICAgICAgICBTY3JpcHRzIGluIHRoZSAnY29tbW9uJyBzdWJkaXJlY3Rvcnkgb2YgdGhpcyBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGhvc2UgaW4gdGhlIGRpcmVjdG9yeSBuYW1lZCBmb3IgdGhlIHBsYXRmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBydW4gb24sIGFyZSBpbnN0YWxsZWQgaW4gdGhlIGNyZWF0ZWQgZW52aXJvbm1lbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBQbGFjZWhvbGRlciB2YXJpYWJsZXMgYXJlIHJlcGxhY2VkIHdpdGggZW52aXJvbm1lbnQtCisgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYyB2YWx1ZXMuCisgICAgICAgICIiIgorICAgICAgICBiaW5wYXRoID0gY29udGV4dC5iaW5fcGF0aAorICAgICAgICBwbGVuID0gbGVuKHBhdGgpCisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgorICAgICAgICAgICAgaWYgcm9vdCA9PSBwYXRoOiAjIGF0IHRvcC1sZXZlbCwgcmVtb3ZlIGlycmVsZXZhbnQgZGlycworICAgICAgICAgICAgICAgIGZvciBkIGluIGRpcnNbOl06CisgICAgICAgICAgICAgICAgICAgIGlmIGQgbm90IGluICgnY29tbW9uJywgb3MubmFtZSk6CisgICAgICAgICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZShkKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlICMgaWdub3JlIGZpbGVzIGluIHRvcCBsZXZlbAorICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgc3JjZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBmKQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHJvb3RbcGxlbjpdLnNwbGl0KG9zLnNlcClbMjpdCisgICAgICAgICAgICAgICAgaWYgbm90IHN1ZmZpeDoKKyAgICAgICAgICAgICAgICAgICAgZHN0ZGlyID0gYmlucGF0aAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRzdGRpciA9IG9zLnBhdGguam9pbihiaW5wYXRoLCAqc3VmZml4KQorICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RkaXIpOgorICAgICAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhkc3RkaXIpCisgICAgICAgICAgICAgICAgZHN0ZmlsZSA9IG9zLnBhdGguam9pbihkc3RkaXIsIGYpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHNyY2ZpbGUsICdyYicpIGFzIGY6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICAgICAgICAgIGlmIHNyY2ZpbGUuZW5kc3dpdGgoJy5leGUnKToKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9ICd3YicKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtb2RlID0gJ3cnCisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZXBsYWNlX3ZhcmlhYmxlcyhkYXRhLCBjb250ZXh0KQorICAgICAgICAgICAgICAgIHdpdGggb3Blbihkc3RmaWxlLCBtb2RlKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEpCisgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHltb2RlKHNyY2ZpbGUsIGRzdGZpbGUpCisKKworZGVmIGNyZWF0ZShlbnZfZGlyLCBzeXN0ZW1fc2l0ZV9wYWNrYWdlcz1GYWxzZSwgY2xlYXI9RmFsc2UsIHN5bWxpbmtzPUZhbHNlKToKKyAgICAiIiIKKyAgICBDcmVhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGluIGEgZGlyZWN0b3J5LgorCisgICAgQnkgZGVmYXVsdCwgbWFrZXMgdGhlIHN5c3RlbSAoZ2xvYmFsKSBzaXRlLXBhY2thZ2VzIGRpciBhdmFpbGFibGUgdG8KKyAgICB0aGUgY3JlYXRlZCBlbnZpcm9ubWVudC4KKworICAgIDpwYXJhbSBlbnZfZGlyOiBUaGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBjcmVhdGUgYW4gZW52aXJvbm1lbnQgaW4uCisgICAgOnBhcmFtIHN5c3RlbV9zaXRlX3BhY2thZ2VzOiBJZiBUcnVlLCB0aGUgc3lzdGVtIChnbG9iYWwpIHNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpciBpcyBhdmFpbGFibGUgdG8gdGhlIGVudmlyb25tZW50LgorICAgIDpwYXJhbSBjbGVhcjogSWYgVHJ1ZSBhbmQgdGhlIHRhcmdldCBkaXJlY3RvcnkgZXhpc3RzLCBpdCBpcyBkZWxldGVkLgorICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpZiB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yIGlzCisgICAgICAgICAgICAgICAgICByYWlzZWQuCisgICAgOnBhcmFtIHN5bWxpbmtzOiBJZiBUcnVlLCBhdHRlbXB0IHRvIHN5bWxpbmsgcmF0aGVyIHRoYW4gY29weSBmaWxlcyBpbnRvCisgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIGVudmlyb25tZW50LgorICAgICIiIgorICAgIGJ1aWxkZXIgPSBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPXN5c3RlbV9zaXRlX3BhY2thZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhcj1jbGVhciwgc3ltbGlua3M9c3ltbGlua3MpCisgICAgYnVpbGRlci5jcmVhdGUoZW52X2RpcikKKworZGVmIG1haW4oYXJncz1Ob25lKToKKyAgICBjb21wYXRpYmxlID0gVHJ1ZQorICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgICAgIGNvbXBhdGlibGUgPSBGYWxzZQorICAgIGVsaWYgbm90IGhhc2F0dHIoc3lzLCAnYmFzZV9wcmVmaXgnKToKKyAgICAgICAgY29tcGF0aWJsZSA9IEZhbHNlCisgICAgaWYgbm90IGNvbXBhdGlibGU6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoaXMgc2NyaXB0IGlzIG9ubHkgZm9yIHVzZSB3aXRoIFB5dGhvbiAzLjMnKQorICAgIGVsc2U6CisgICAgICAgIGltcG9ydCBhcmdwYXJzZQorCisgICAgICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKHByb2c9X19uYW1lX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdDcmVhdGVzIHZpcnR1YWwgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vudmlyb25tZW50cyBpbiBvbmUgb3IgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9yZSB0YXJnZXQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3JpZXMuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXBpbG9nPSdPbmNlIGFuIGVudmlyb25tZW50IGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVkLCB5b3UgbWF5IHdpc2ggdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2YXRlIGl0LCBlLmcuIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2luZyBhbiBhY3RpdmF0ZSBzY3JpcHQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luIGl0cyBiaW4gZGlyZWN0b3J5LicpCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2RpcnMnLCBtZXRhdmFyPSdFTlZfRElSJywgbmFyZ3M9JysnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1zeXN0ZW0tc2l0ZS1wYWNrYWdlcycsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nc3lzdGVtX3NpdGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0dpdmUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQgYWNjZXNzIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtIHNpdGUtcGFja2FnZXMgZGlyLicpCisgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKKyAgICAgICAgICAgIHVzZV9zeW1saW5rcyA9IEZhbHNlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB1c2Vfc3ltbGlua3MgPSBUcnVlCisgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tc3ltbGlua3MnLCBkZWZhdWx0PXVzZV9zeW1saW5rcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnLCBkZXN0PSdzeW1saW5rcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aGVuIHN5bWxpbmtzIGFyZSBub3QgdGhlIGRlZmF1bHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgcGxhdGZvcm0uJykKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jbGVhcicsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY2xlYXInLCBoZWxwPSdEZWxldGUgdGhlIGVudmlyb25tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdG9yeSBpZiBpdCBhbHJlYWR5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4aXN0cy4gSWYgbm90IHNwZWNpZmllZCBhbmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGRpcmVjdG9yeSBleGlzdHMsIGFuIGVycm9yJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIGlzIHJhaXNlZC4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXVwZ3JhZGUnLCBkZWZhdWx0PUZhbHNlLCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VwZ3JhZGUnLCBoZWxwPSdVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgdG8gdXNlIHRoaXMgdmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4nKQorICAgICAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgaWYgb3B0aW9ucy51cGdyYWRlIGFuZCBvcHRpb25zLmNsZWFyOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneW91IGNhbm5vdCBzdXBwbHkgLS11cGdyYWRlIGFuZCAtLWNsZWFyIHRvZ2V0aGVyLicpCisgICAgICAgIGJ1aWxkZXIgPSBFbnZCdWlsZGVyKHN5c3RlbV9zaXRlX3BhY2thZ2VzPW9wdGlvbnMuc3lzdGVtX3NpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyPW9wdGlvbnMuY2xlYXIsIHN5bWxpbmtzPW9wdGlvbnMuc3ltbGlua3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZ3JhZGU9b3B0aW9ucy51cGdyYWRlKQorICAgICAgICBmb3IgZCBpbiBvcHRpb25zLmRpcnM6CisgICAgICAgICAgICBidWlsZGVyLmNyZWF0ZShkKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHJjID0gMQorICAgIHRyeToKKyAgICAgICAgbWFpbigpCisgICAgICAgIHJjID0gMAorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgc3lzLmV4aXQocmMpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9fX21haW5fXy5weSBiL0xpYi92ZW52L19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMjQyM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdmVudi9fX21haW5fXy5weQpAQCAtMCwwICsxLDEwIEBACitpbXBvcnQgc3lzCitmcm9tIC4gaW1wb3J0IG1haW4KKworcmMgPSAxCit0cnk6CisgICAgbWFpbigpCisgICAgcmMgPSAwCitleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlLCBmaWxlPXN5cy5zdGRlcnIpCitzeXMuZXhpdChyYykKZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9BY3RpdmF0ZS5wczEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1ZWY5OAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvQWN0aXZhdGUucHMxCkBAIC0wLDAgKzEsMzQgQEAKKyRlbnY6VklSVFVBTF9FTlY9Il9fVkVOVl9ESVJfXyINCisNCisjIFJldmVydCB0byBvcmlnaW5hbCB2YWx1ZXMNCitpZiAoVGVzdC1QYXRoIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQpIHsNCisgICAgY29weS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQgZnVuY3Rpb246cHJvbXB0DQorICAgIHJlbW92ZS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSBlbnY6UFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BBVEgpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSCBlbnY6UEFUSA0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCit9DQorDQorIyBTZXQgdGhlIHByb21wdCB0byBpbmNsdWRlIHRoZSBlbnYgbmFtZQ0KK2NvcHktaXRlbSBmdW5jdGlvbjpwcm9tcHQgZnVuY3Rpb246X09MRF9WSVJUVUFMX1BST01QVA0KK2Z1bmN0aW9uIHByb21wdCB7DQorICAgIFdyaXRlLUhvc3QgLU5vTmV3bGluZSAtRm9yZWdyb3VuZENvbG9yIEdyZWVuICdbX19WRU5WX05BTUVfX10nDQorICAgIF9PTERfVklSVFVBTF9QUk9NUFQNCit9DQorDQorIyBDbGVhciBQWVRIT05IT01FDQoraWYgKFRlc3QtUGF0aCBlbnY6UFlUSE9OSE9NRSkgew0KKyAgICBjb3B5LWl0ZW0gZW52OlBZVEhPTkhPTUUgZW52Ol9PTERfVklSVFVBTF9QWVRIT05IT01FDQorICAgIHJlbW92ZS1pdGVtIGVudjpQWVRIT05IT01FDQorfQ0KKw0KKyMgQWRkIHRoZSB2ZW52IHRvIHRoZSBQQVRIDQorY29weS1pdGVtIGVudjpQQVRIIGVudjpfT0xEX1ZJUlRVQUxfUEFUSA0KKyRlbnY6UEFUSCA9ICIkZW52OlZJUlRVQUxfRU5WXF9fVkVOVl9CSU5fTkFNRV9fOyRlbnY6UEFUSCINCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L0RlYWN0aXZhdGUucHMxIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDFlOTZiCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9EZWFjdGl2YXRlLnBzMQpAQCAtMCwwICsxLDE5IEBACisjIFJldmVydCB0byBvcmlnaW5hbCB2YWx1ZXMNCitpZiAoVGVzdC1QYXRoIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQpIHsNCisgICAgY29weS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQgZnVuY3Rpb246cHJvbXB0DQorICAgIHJlbW92ZS1pdGVtIGZ1bmN0aW9uOl9PTERfVklSVFVBTF9QUk9NUFQNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSBlbnY6UFlUSE9OSE9NRQ0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BZVEhPTkhPTUUNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6X09MRF9WSVJUVUFMX1BBVEgpIHsNCisgICAgY29weS1pdGVtIGVudjpfT0xEX1ZJUlRVQUxfUEFUSCBlbnY6UEFUSA0KKyAgICByZW1vdmUtaXRlbSBlbnY6X09MRF9WSVJUVUFMX1BBVEgNCit9DQorDQoraWYgKFRlc3QtUGF0aCBlbnY6VklSVFVBTF9FTlYpIHsNCisgICAgcmVtb3ZlLWl0ZW0gZW52OlZJUlRVQUxfRU5WDQorfQ0KZGlmZiAtLWdpdCBhL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0IGIvTGliL3ZlbnYvc2NyaXB0cy9udC9hY3RpdmF0ZS5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ1ZTY1YQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvbnQvYWN0aXZhdGUuYmF0CkBAIC0wLDAgKzEsMzEgQEAKK0BlY2hvIG9mZg0KK3NldCBWSVJUVUFMX0VOVj1fX1ZFTlZfRElSX18NCisNCitpZiBub3QgZGVmaW5lZCBQUk9NUFQgKA0KKyAgICBzZXQgUFJPTVBUPSRQJEcNCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFJPTVBUICgNCisgICAgc2V0IFBST01QVD0lX09MRF9WSVJUVUFMX1BST01QVCUNCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSAoDQorICAgICBzZXQgUFlUSE9OSE9NRT0lX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUlDQorKQ0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUFJPTVBUPSVQUk9NUFQlDQorc2V0IFBST01QVD1fX1ZFTlZfTkFNRV9fJVBST01QVCUNCisNCitpZiBkZWZpbmVkIFBZVEhPTkhPTUUgKA0KKyAgICAgc2V0IF9PTERfVklSVFVBTF9QWVRIT05IT01FPSVQWVRIT05IT01FJQ0KKyAgICAgc2V0IFBZVEhPTkhPTUU9DQorKQ0KKw0KK2lmIGRlZmluZWQgX09MRF9WSVJUVUFMX1BBVEggc2V0IFBBVEg9JV9PTERfVklSVFVBTF9QQVRIJTsgZ290byBTS0lQUEFUSA0KKw0KK3NldCBfT0xEX1ZJUlRVQUxfUEFUSD0lUEFUSCUNCisNCis6U0tJUFBBVEgNCitzZXQgUEFUSD0lVklSVFVBTF9FTlYlXF9fVkVOVl9CSU5fTkFNRV9fOyVQQVRIJQ0KKw0KKzpFTkQNCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L2RlYWN0aXZhdGUuYmF0IGIvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmRhNWIxCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9kZWFjdGl2YXRlLmJhdApAQCAtMCwwICsxLDE3IEBACitAZWNobyBvZmYNCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QUk9NUFQgKA0KKyAgICBzZXQgUFJPTVBUPSVfT0xEX1ZJUlRVQUxfUFJPTVBUJQ0KKykNCitzZXQgX09MRF9WSVJUVUFMX1BST01QVD0NCisNCitpZiBkZWZpbmVkIF9PTERfVklSVFVBTF9QWVRIT05IT01FICgNCisgICAgIHNldCBQWVRIT05IT01FPSVfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSUNCisgICAgIHNldCBfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRT0NCispDQorDQoraWYgZGVmaW5lZCBfT0xEX1ZJUlRVQUxfUEFUSCBzZXQgUEFUSD0lX09MRF9WSVJUVUFMX1BBVEglDQorDQorc2V0IF9PTERfVklSVFVBTF9QQVRIPQ0KKw0KKzpFTkQNCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL250L3B5ZG9jLnB5IGIvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmYyZGI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9udC9weWRvYy5weQpAQCAtMCwwICsxLDQgQEAKKyMhX19WRU5WX1BZVEhPTl9fCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMsIHB5ZG9jCisgICAgc3lzLmV4aXQocHlkb2MuY2xpKCkpCmRpZmYgLS1naXQgYS9MaWIvdmVudi9zY3JpcHRzL3Bvc2l4L2FjdGl2YXRlIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjQxNDUwCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9hY3RpdmF0ZQpAQCAtMCwwICsxLDc2IEBACisjIFRoaXMgZmlsZSBtdXN0IGJlIHVzZWQgd2l0aCAic291cmNlIGJpbi9hY3RpdmF0ZSIgKmZyb20gYmFzaCoKKyMgeW91IGNhbm5vdCBydW4gaXQgZGlyZWN0bHkKKworZGVhY3RpdmF0ZSAoKSB7CisgICAgIyByZXNldCBvbGQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QQVRIIiBdIDsgdGhlbgorICAgICAgICBQQVRIPSIkX09MRF9WSVJUVUFMX1BBVEgiCisgICAgICAgIGV4cG9ydCBQQVRICisgICAgICAgIHVuc2V0IF9PTERfVklSVFVBTF9QQVRICisgICAgZmkKKyAgICBpZiBbIC1uICIkX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUiIF0gOyB0aGVuCisgICAgICAgIFBZVEhPTkhPTUU9IiRfT0xEX1ZJUlRVQUxfUFlUSE9OSE9NRSIKKyAgICAgICAgZXhwb3J0IFBZVEhPTkhPTUUKKyAgICAgICAgdW5zZXQgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUUKKyAgICBmaQorCisgICAgIyBUaGlzIHNob3VsZCBkZXRlY3QgYmFzaCBhbmQgenNoLCB3aGljaCBoYXZlIGEgaGFzaCBjb21tYW5kIHRoYXQgbXVzdAorICAgICMgYmUgY2FsbGVkIHRvIGdldCBpdCB0byBmb3JnZXQgcGFzdCBjb21tYW5kcy4gIFdpdGhvdXQgZm9yZ2V0dGluZworICAgICMgcGFzdCBjb21tYW5kcyB0aGUgJFBBVEggY2hhbmdlcyB3ZSBtYWRlIG1heSBub3QgYmUgcmVzcGVjdGVkCisgICAgaWYgWyAtbiAiJEJBU0giIC1vIC1uICIkWlNIX1ZFUlNJT04iIF0gOyB0aGVuCisgICAgICAgIGhhc2ggLXIKKyAgICBmaQorCisgICAgaWYgWyAtbiAiJF9PTERfVklSVFVBTF9QUzEiIF0gOyB0aGVuCisgICAgICAgIFBTMT0iJF9PTERfVklSVFVBTF9QUzEiCisgICAgICAgIGV4cG9ydCBQUzEKKyAgICAgICAgdW5zZXQgX09MRF9WSVJUVUFMX1BTMQorICAgIGZpCisKKyAgICB1bnNldCBWSVJUVUFMX0VOVgorICAgIGlmIFsgISAiJDEiID0gIm5vbmRlc3RydWN0aXZlIiBdIDsgdGhlbgorICAgICMgU2VsZiBkZXN0cnVjdCEKKyAgICAgICAgdW5zZXQgLWYgZGVhY3RpdmF0ZQorICAgIGZpCit9CisKKyMgdW5zZXQgaXJyZWxhdmVudCB2YXJpYWJsZXMKK2RlYWN0aXZhdGUgbm9uZGVzdHJ1Y3RpdmUKKworVklSVFVBTF9FTlY9Il9fVkVOVl9ESVJfXyIKK2V4cG9ydCBWSVJUVUFMX0VOVgorCitfT0xEX1ZJUlRVQUxfUEFUSD0iJFBBVEgiCitQQVRIPSIkVklSVFVBTF9FTlYvX19WRU5WX0JJTl9OQU1FX186JFBBVEgiCitleHBvcnQgUEFUSAorCisjIHVuc2V0IFBZVEhPTkhPTUUgaWYgc2V0CisjIHRoaXMgd2lsbCBmYWlsIGlmIFBZVEhPTkhPTUUgaXMgc2V0IHRvIHRoZSBlbXB0eSBzdHJpbmcgKHdoaWNoIGlzIGJhZCBhbnl3YXkpCisjIGNvdWxkIHVzZSBgaWYgKHNldCAtdTsgOiAkUFlUSE9OSE9NRSkgO2AgaW4gYmFzaAoraWYgWyAtbiAiJFBZVEhPTkhPTUUiIF0gOyB0aGVuCisgICAgX09MRF9WSVJUVUFMX1BZVEhPTkhPTUU9IiRQWVRIT05IT01FIgorICAgIHVuc2V0IFBZVEhPTkhPTUUKK2ZpCisKK2lmIFsgLXogIiRWSVJUVUFMX0VOVl9ESVNBQkxFX1BST01QVCIgXSA7IHRoZW4KKyAgICBfT0xEX1ZJUlRVQUxfUFMxPSIkUFMxIgorICAgIGlmIFsgInhfX1ZFTlZfTkFNRV9fIiAhPSB4IF0gOyB0aGVuCisJUFMxPSJfX1ZFTlZfTkFNRV9fJFBTMSIKKyAgICBlbHNlCisgICAgaWYgWyAiYGJhc2VuYW1lIFwiJFZJUlRVQUxfRU5WXCJgIiA9ICJfXyIgXSA7IHRoZW4KKyAgICAgICAgIyBzcGVjaWFsIGNhc2UgZm9yIEFzcGVuIG1hZ2ljIGRpcmVjdG9yaWVzCisgICAgICAgICMgc2VlIGh0dHA6Ly93d3cuemV0YWRldi5jb20vc29mdHdhcmUvYXNwZW4vCisgICAgICAgIFBTMT0iW2BiYXNlbmFtZSBcYGRpcm5hbWUgXCIkVklSVFVBTF9FTlZcIlxgYF0gJFBTMSIKKyAgICBlbHNlCisgICAgICAgIFBTMT0iKGBiYXNlbmFtZSBcIiRWSVJUVUFMX0VOVlwiYCkkUFMxIgorICAgIGZpCisgICAgZmkKKyAgICBleHBvcnQgUFMxCitmaQorCisjIFRoaXMgc2hvdWxkIGRldGVjdCBiYXNoIGFuZCB6c2gsIHdoaWNoIGhhdmUgYSBoYXNoIGNvbW1hbmQgdGhhdCBtdXN0CisjIGJlIGNhbGxlZCB0byBnZXQgaXQgdG8gZm9yZ2V0IHBhc3QgY29tbWFuZHMuICBXaXRob3V0IGZvcmdldHRpbmcKKyMgcGFzdCBjb21tYW5kcyB0aGUgJFBBVEggY2hhbmdlcyB3ZSBtYWRlIG1heSBub3QgYmUgcmVzcGVjdGVkCitpZiBbIC1uICIkQkFTSCIgLW8gLW4gIiRaU0hfVkVSU0lPTiIgXSA7IHRoZW4KKyAgICBoYXNoIC1yCitmaQpkaWZmIC0tZ2l0IGEvTGliL3ZlbnYvc2NyaXB0cy9wb3NpeC9weWRvYyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTIzMzc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi92ZW52L3NjcmlwdHMvcG9zaXgvcHlkb2MKQEAgLTAsMCArMSw1IEBACisjIV9fVkVOVl9QWVRIT05fXworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzLCBweWRvYworICAgIHN5cy5leGl0KHB5ZG9jLmNsaSgpKQorCmRpZmYgLS1naXQgYS9MaWIvd2ViYnJvd3Nlci5weSBiL0xpYi93ZWJicm93c2VyLnB5CmluZGV4IDIwMmYzNGEuLjk0ZDRhZDQgMTAwNjQ0Ci0tLSBhL0xpYi93ZWJicm93c2VyLnB5CisrKyBiL0xpYi93ZWJicm93c2VyLnB5CkBAIC0yMzAsNyArMjMwLDcgQEAKICAgICAgICAgY21kbGluZSA9IFtzZWxmLm5hbWVdICsgcmFpc2Vfb3B0ICsgYXJncwogCiAgICAgICAgIGlmIHJlbW90ZSBvciBzZWxmLmJhY2tncm91bmQ6Ci0gICAgICAgICAgICBpbm91dCA9IGlvLm9wZW4ob3MuZGV2bnVsbCwgInIrIikKKyAgICAgICAgICAgIGlub3V0ID0gc3VicHJvY2Vzcy5ERVZOVUxMCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGZvciBUVFkgYnJvd3NlcnMsIHdlIG5lZWQgc3RkaW4vb3V0CiAgICAgICAgICAgICBpbm91dCA9IE5vbmUKQEAgLTIzOCwxNyArMjM4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD0oc2VsZi5yZWRpcmVjdF9zdGRvdXQgYW5kIGlub3V0IG9yIE5vbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9aW5vdXQsIHN0YXJ0X25ld19zZXNzaW9uPVRydWUpCiAgICAgICAgIGlmIHJlbW90ZToKLSAgICAgICAgICAgICMgd2FpdCBmaXZlIHNlY29uZHMuIElmIHRoZSBzdWJwcm9jZXNzIGlzIG5vdCBmaW5pc2hlZCwgdGhlCisgICAgICAgICAgICAjIHdhaXQgYXQgbW9zdCBmaXZlIHNlY29uZHMuIElmIHRoZSBzdWJwcm9jZXNzIGlzIG5vdCBmaW5pc2hlZCwgdGhlCiAgICAgICAgICAgICAjIHJlbW90ZSBpbnZvY2F0aW9uIGhhcyAoaG9wZWZ1bGx5KSBzdGFydGVkIGEgbmV3IGluc3RhbmNlLgotICAgICAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAgICAgcmMgPSBwLnBvbGwoKQotICAgICAgICAgICAgaWYgcmMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDQpCi0gICAgICAgICAgICAgICAgcmMgPSBwLnBvbGwoKQotICAgICAgICAgICAgICAgIGlmIHJjIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAjIGlmIHJlbW90ZSBjYWxsIGZhaWxlZCwgb3BlbigpIHdpbGwgdHJ5IGRpcmVjdCBpbnZvY2F0aW9uCi0gICAgICAgICAgICByZXR1cm4gbm90IHJjCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmMgPSBwLndhaXQoNSkKKyAgICAgICAgICAgICAgICAjIGlmIHJlbW90ZSBjYWxsIGZhaWxlZCwgb3BlbigpIHdpbGwgdHJ5IGRpcmVjdCBpbnZvY2F0aW9uCisgICAgICAgICAgICAgICAgcmV0dXJuIG5vdCByYworICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxpZiBzZWxmLmJhY2tncm91bmQ6CiAgICAgICAgICAgICBpZiBwLnBvbGwoKSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zMDYsNiArMzAzLDE4IEBACiAgICAgYmFja2dyb3VuZCA9IFRydWUKIAogCitjbGFzcyBDaHJvbWUoVW5peEJyb3dzZXIpOgorICAgICJMYXVuY2hlciBjbGFzcyBmb3IgR29vZ2xlIENocm9tZSBicm93c2VyLiIKKworICAgIHJlbW90ZV9hcmdzID0gWyclYWN0aW9uJywgJyVzJ10KKyAgICByZW1vdGVfYWN0aW9uID0gIiIKKyAgICByZW1vdGVfYWN0aW9uX25ld3dpbiA9ICItLW5ldy13aW5kb3ciCisgICAgcmVtb3RlX2FjdGlvbl9uZXd0YWIgPSAiIgorICAgIGJhY2tncm91bmQgPSBUcnVlCisKK0Nocm9taXVtID0gQ2hyb21lCisKKwogY2xhc3MgT3BlcmEoVW5peEJyb3dzZXIpOgogICAgICJMYXVuY2hlciBjbGFzcyBmb3IgT3BlcmEgYnJvd3Nlci4iCiAKQEAgLTM0NSw3ICszNTQsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYWN0aW9uID0gIm9wZW5VUkwiCiAKLSAgICAgICAgZGV2bnVsbCA9IGlvLm9wZW4ob3MuZGV2bnVsbCwgInIrIikKKyAgICAgICAgZGV2bnVsbCA9IHN1YnByb2Nlc3MuREVWTlVMTAogICAgICAgICAjIGlmIHBvc3NpYmxlLCBwdXQgYnJvd3NlciBpbiBzZXBhcmF0ZSBwcm9jZXNzIGdyb3VwLCBzbwogICAgICAgICAjIGtleWJvYXJkIGludGVycnVwdHMgZG9uJ3QgYWZmZWN0IGJyb3dzZXIgYXMgd2VsbCBhcyBQeXRob24KICAgICAgICAgc2V0c2lkID0gZ2V0YXR0cihvcywgJ3NldHNpZCcsIE5vbmUpCkBAIC00NDMsNiArNDUyLDE0IEBACiAKIGRlZiByZWdpc3Rlcl9YX2Jyb3dzZXJzKCk6CiAKKyAgICAjIHVzZSB4ZGctb3BlbiBpZiBhcm91bmQKKyAgICBpZiBfaXNjb21tYW5kKCJ4ZGctb3BlbiIpOgorICAgICAgICByZWdpc3RlcigieGRnLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigieGRnLW9wZW4iKSkKKworICAgICMgVGhlIGRlZmF1bHQgR05PTUUzIGJyb3dzZXIKKyAgICBpZiAiR05PTUVfREVTS1RPUF9TRVNTSU9OX0lEIiBpbiBvcy5lbnZpcm9uIGFuZCBfaXNjb21tYW5kKCJndmZzLW9wZW4iKToKKyAgICAgICAgcmVnaXN0ZXIoImd2ZnMtb3BlbiIsIE5vbmUsIEJhY2tncm91bmRCcm93c2VyKCJndmZzLW9wZW4iKSkKKwogICAgICMgVGhlIGRlZmF1bHQgR05PTUUgYnJvd3NlcgogICAgIGlmICJHTk9NRV9ERVNLVE9QX1NFU1NJT05fSUQiIGluIG9zLmVudmlyb24gYW5kIF9pc2NvbW1hbmQoImdub21lLW9wZW4iKToKICAgICAgICAgcmVnaXN0ZXIoImdub21lLW9wZW4iLCBOb25lLCBCYWNrZ3JvdW5kQnJvd3NlcigiZ25vbWUtb3BlbiIpKQpAQCAtNDczLDYgKzQ5MCwxMSBAQAogICAgIGlmIF9pc2NvbW1hbmQoInNraXBzdG9uZSIpOgogICAgICAgICByZWdpc3Rlcigic2tpcHN0b25lIiwgTm9uZSwgQmFja2dyb3VuZEJyb3dzZXIoInNraXBzdG9uZSIpKQogCisgICAgIyBHb29nbGUgQ2hyb21lL0Nocm9taXVtIGJyb3dzZXJzCisgICAgZm9yIGJyb3dzZXIgaW4gKCJnb29nbGUtY2hyb21lIiwgImNocm9tZSIsICJjaHJvbWl1bSIsICJjaHJvbWl1bS1icm93c2VyIik6CisgICAgICAgIGlmIF9pc2NvbW1hbmQoYnJvd3Nlcik6CisgICAgICAgICAgICByZWdpc3Rlcihicm93c2VyLCBOb25lLCBDaHJvbWUoYnJvd3NlcikpCisKICAgICAjIE9wZXJhLCBxdWl0ZSBwb3B1bGFyCiAgICAgaWYgX2lzY29tbWFuZCgib3BlcmEiKToKICAgICAgICAgcmVnaXN0ZXIoIm9wZXJhIiwgTm9uZSwgT3BlcmEoIm9wZXJhIikpCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi5lZ2ctaW5mbyBiL0xpYi93c2dpcmVmLmVnZy1pbmZvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMGI3ODkzLi4wMDAwMDAwCi0tLSBhL0xpYi93c2dpcmVmLmVnZy1pbmZvCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1NZXRhZGF0YS1WZXJzaW9uOiAxLjAKLU5hbWU6IHdzZ2lyZWYKLVZlcnNpb246IDAuMS4yCi1TdW1tYXJ5OiBXU0dJIChQRVAgMzMzKSBSZWZlcmVuY2UgTGlicmFyeQotQXV0aG9yOiBQaGlsbGlwIEouIEVieQotQXV0aG9yLWVtYWlsOiB3ZWItc2lnQHB5dGhvbi5vcmcKLUxpY2Vuc2U6IFBTRiBvciBaUEwKLVBsYXRmb3JtOiBVTktOT1dOCmRpZmYgLS1naXQgYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5IGIvTGliL3dzZ2lyZWYvc2ltcGxlX3NlcnZlci5weQppbmRleCBhZjgyZjk1Li5hNjAxNWZiIDEwMDY0NAotLS0gYS9MaWIvd3NnaXJlZi9zaW1wbGVfc2VydmVyLnB5CisrKyBiL0xpYi93c2dpcmVmL3NpbXBsZV9zZXJ2ZXIucHkKQEAgLTE0LDEzICsxNCwxNCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IHVybGxpYi5wYXJzZQogZnJvbSB3c2dpcmVmLmhhbmRsZXJzIGltcG9ydCBTaW1wbGVIYW5kbGVyCitmcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25faW1wbGVtZW50YXRpb24KIAogX192ZXJzaW9uX18gPSAiMC4yIgogX19hbGxfXyA9IFsnV1NHSVNlcnZlcicsICdXU0dJUmVxdWVzdEhhbmRsZXInLCAnZGVtb19hcHAnLCAnbWFrZV9zZXJ2ZXInXQogCiAKIHNlcnZlcl92ZXJzaW9uID0gIldTR0lTZXJ2ZXIvIiArIF9fdmVyc2lvbl9fCi1zeXNfdmVyc2lvbiA9ICJQeXRob24vIiArIHN5cy52ZXJzaW9uLnNwbGl0KClbMF0KK3N5c192ZXJzaW9uID0gcHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgKyAiLyIgKyBzeXMudmVyc2lvbi5zcGxpdCgpWzBdCiBzb2Z0d2FyZV92ZXJzaW9uID0gc2VydmVyX3ZlcnNpb24gKyAnICcgKyBzeXNfdmVyc2lvbgogCiAKZGlmZiAtLWdpdCBhL0xpYi94ZHJsaWIucHkgYi9MaWIveGRybGliLnB5CmluZGV4IDRlNDg2NzcuLjg2ZTYyNGYgMTAwNjQ0Ci0tLSBhL0xpYi94ZHJsaWIucHkKKysrIGIvTGliL3hkcmxpYi5weQpAQCAtMTQxLDExICsxNDEsNyBAQAogICAgICAgICBkYXRhID0gc2VsZi5fX2J1ZltpOmpdCiAgICAgICAgIGlmIGxlbihkYXRhKSA8IDQ6CiAgICAgICAgICAgICByYWlzZSBFT0ZFcnJvcgotICAgICAgICB4ID0gc3RydWN0LnVucGFjaygnPkwnLCBkYXRhKVswXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gaW50KHgpCi0gICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIHgKKyAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJz5MJywgZGF0YSlbMF0KIAogICAgIGRlZiB1bnBhY2tfaW50KHNlbGYpOgogICAgICAgICBpID0gc2VsZi5fX3BvcwpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vX19pbml0X18ucHkgYi9MaWIveG1sL2RvbS9fX2luaXRfXy5weQppbmRleCA0NDAxYmRmLi45N2NmOWE2IDEwMDY0NAotLS0gYS9MaWIveG1sL2RvbS9fX2luaXRfXy5weQorKysgYi9MaWIveG1sL2RvbS9fX2luaXRfXy5weQpAQCAtMTcsNiArMTcsNyBAQAogCiBjbGFzcyBOb2RlOgogICAgICIiIkNsYXNzIGdpdmluZyB0aGUgTm9kZVR5cGUgY29uc3RhbnRzLiIiIgorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICAjIERPTSBpbXBsZW1lbnRhdGlvbnMgbWF5IHVzZSB0aGlzIGFzIGEgYmFzZSBjbGFzcyBmb3IgdGhlaXIgb3duCiAgICAgIyBOb2RlIGltcGxlbWVudGF0aW9ucy4gIElmIHRoZXkgZG9uJ3QsIHRoZSBjb25zdGFudHMgZGVmaW5lZCBoZXJlCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9kb21yZWcucHkgYi9MaWIveG1sL2RvbS9kb21yZWcucHkKaW5kZXggY2IzNWJiMC4uOGMzZDkwMSAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vZG9tcmVnLnB5CisrKyBiL0xpYi94bWwvZG9tL2RvbXJlZy5weQpAQCAtMiw4ICsyLDYgQEAKIGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGUgZnVuY3Rpb25zIGdldERPTUltcGxlbWVudGF0aW9uIGFuZAogcmVnaXN0ZXJET01JbXBsZW1lbnRhdGlvbiBzaG91bGQgYmUgaW1wb3J0ZWQgZnJvbSB4bWwuZG9tLiIiIgogCi1mcm9tIHhtbC5kb20ubWluaWNvbXBhdCBpbXBvcnQgKiAgIyBpc2luc3RhbmNlLCBTdHJpbmdUeXBlcwotCiAjIFRoaXMgaXMgYSBsaXN0IG9mIHdlbGwta25vd24gaW1wbGVtZW50YXRpb25zLiAgV2VsbC1rbm93biBuYW1lcwogIyBzaG91bGQgYmUgcHVibGlzaGVkIGJ5IHBvc3RpbmcgdG8geG1sLXNpZ0BweXRob24ub3JnLCBhbmQgYXJlCiAjIHN1YnNlcXVlbnRseSByZWNvcmRlZCBpbiB0aGlzIGZpbGUuCmRpZmYgLS1naXQgYS9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkgYi9MaWIveG1sL2RvbS9leHBhdGJ1aWxkZXIucHkKaW5kZXggYTk4ZmUwMy4uZjA3NGFiOSAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vZXhwYXRidWlsZGVyLnB5CisrKyBiL0xpYi94bWwvZG9tL2V4cGF0YnVpbGRlci5weQpAQCAtMzMsOCArMzMsNiBAQAogZnJvbSB4bWwuZG9tLm1pbmlkb20gaW1wb3J0IF9hcHBlbmRfY2hpbGQsIF9zZXRfYXR0cmlidXRlX25vZGUKIGZyb20geG1sLmRvbS5Ob2RlRmlsdGVyIGltcG9ydCBOb2RlRmlsdGVyCiAKLWZyb20geG1sLmRvbS5taW5pY29tcGF0IGltcG9ydCAqCi0KIFRFWFRfTk9ERSA9IE5vZGUuVEVYVF9OT0RFCiBDREFUQV9TRUNUSU9OX05PREUgPSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERQogRE9DVU1FTlRfTk9ERSA9IE5vZGUuRE9DVU1FTlRfTk9ERQpAQCAtMjgzLDI3ICsyODEsMjMgQEAKICAgICAgICAgZWxpZiBjaGlsZE5vZGVzIGFuZCBjaGlsZE5vZGVzWy0xXS5ub2RlVHlwZSA9PSBURVhUX05PREU6CiAgICAgICAgICAgICBub2RlID0gY2hpbGROb2Rlc1stMV0KICAgICAgICAgICAgIHZhbHVlID0gbm9kZS5kYXRhICsgZGF0YQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKKyAgICAgICAgICAgIG5vZGUuZGF0YSA9IHZhbHVlCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5vZGUgPSBtaW5pZG9tLlRleHQoKQotICAgICAgICAgICAgZCA9IG5vZGUuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gZGF0YQotICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgbm9kZS5kYXRhID0gZGF0YQorICAgICAgICAgICAgbm9kZS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICBfYXBwZW5kX2NoaWxkKHNlbGYuY3VyTm9kZSwgbm9kZSkKIAogICAgIGRlZiBjaGFyYWN0ZXJfZGF0YV9oYW5kbGVyKHNlbGYsIGRhdGEpOgogICAgICAgICBjaGlsZE5vZGVzID0gc2VsZi5jdXJOb2RlLmNoaWxkTm9kZXMKICAgICAgICAgaWYgY2hpbGROb2RlcyBhbmQgY2hpbGROb2Rlc1stMV0ubm9kZVR5cGUgPT0gVEVYVF9OT0RFOgogICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZXNbLTFdCi0gICAgICAgICAgICBkID0gbm9kZS5fX2RpY3RfXwotICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSBub2RlLmRhdGEgKyBkYXRhCisgICAgICAgICAgICBub2RlLmRhdGEgPSBub2RlLmRhdGEgKyBkYXRhCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgbm9kZSA9IG1pbmlkb20uVGV4dCgpCi0gICAgICAgIGQgPSBub2RlLl9fZGljdF9fCi0gICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gbm9kZS5kYXRhICsgZGF0YQotICAgICAgICBkWydvd25lckRvY3VtZW50J10gPSBzZWxmLmRvY3VtZW50CisgICAgICAgIG5vZGUuZGF0YSA9IG5vZGUuZGF0YSArIGRhdGEKKyAgICAgICAgbm9kZS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICBfYXBwZW5kX2NoaWxkKHNlbGYuY3VyTm9kZSwgbm9kZSkKIAogICAgIGRlZiBlbnRpdHlfZGVjbF9oYW5kbGVyKHNlbGYsIGVudGl0eU5hbWUsIGlzX3BhcmFtZXRlcl9lbnRpdHksIHZhbHVlLApAQCAtMzYzLDExICszNTcsOCBAQAogICAgICAgICAgICAgICAgIGEgPSBtaW5pZG9tLkF0dHIoYXR0cmlidXRlc1tpXSwgRU1QVFlfTkFNRVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgRU1QVFlfUFJFRklYKQogICAgICAgICAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlc1tpKzFdCi0gICAgICAgICAgICAgICAgZCA9IGEuY2hpbGROb2Rlc1swXS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGRbJ25vZGVWYWx1ZSddID0gdmFsdWUKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgICAgIGEudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIGEub3duZXJEb2N1bWVudCA9IHNlbGYuZG9jdW1lbnQKICAgICAgICAgICAgICAgICBfc2V0X2F0dHJpYnV0ZV9ub2RlKG5vZGUsIGEpCiAKICAgICAgICAgaWYgbm9kZSBpcyBub3Qgc2VsZi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6CkBAIC03NjEsMTUgKzc1MiwxMyBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIGEgPSBtaW5pZG9tLkF0dHIoInhtbG5zIiwgWE1MTlNfTkFNRVNQQUNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4bWxucyIsIEVNUFRZX1BSRUZJWCkKLSAgICAgICAgICAgICAgICBkID0gYS5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB1cmkKLSAgICAgICAgICAgICAgICBkID0gYS5fX2RpY3RfXwotICAgICAgICAgICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHVyaQotICAgICAgICAgICAgICAgIGRbJ293bmVyRG9jdW1lbnQnXSA9IHNlbGYuZG9jdW1lbnQKKyAgICAgICAgICAgICAgICBhLnZhbHVlID0gdXJpCisgICAgICAgICAgICAgICAgYS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAogICAgICAgICAgICAgICAgIF9zZXRfYXR0cmlidXRlX25vZGUobm9kZSwgYSkKICAgICAgICAgICAgIGRlbCBzZWxmLl9uc19vcmRlcmVkX3ByZWZpeGVzWzpdCiAKICAgICAgICAgaWYgYXR0cmlidXRlczoKKyAgICAgICAgICAgIG5vZGUuX2Vuc3VyZV9hdHRyaWJ1dGVzKCkKICAgICAgICAgICAgIF9hdHRycyA9IG5vZGUuX2F0dHJzCiAgICAgICAgICAgICBfYXR0cnNOUyA9IG5vZGUuX2F0dHJzTlMKICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihhdHRyaWJ1dGVzKSwgMik6CkBAIC03ODUsMTIgKzc3NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5hbWUsIEVNUFRZX1BSRUZJWCkKICAgICAgICAgICAgICAgICAgICAgX2F0dHJzW2FuYW1lXSA9IGEKICAgICAgICAgICAgICAgICAgICAgX2F0dHJzTlNbKEVNUFRZX05BTUVTUEFDRSwgYW5hbWUpXSA9IGEKLSAgICAgICAgICAgICAgICBkID0gYS5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICAgICAgICAgIGQgPSBhLl9fZGljdF9fCi0gICAgICAgICAgICAgICAgZFsnb3duZXJEb2N1bWVudCddID0gc2VsZi5kb2N1bWVudAotICAgICAgICAgICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZFsnb3duZXJFbGVtZW50J10gPSBub2RlCisgICAgICAgICAgICAgICAgYS5vd25lckRvY3VtZW50ID0gc2VsZi5kb2N1bWVudAorICAgICAgICAgICAgICAgIGEudmFsdWUgPSB2YWx1ZQorICAgICAgICAgICAgICAgIGEub3duZXJFbGVtZW50ID0gbm9kZQogCiAgICAgaWYgX19kZWJ1Z19fOgogICAgICAgICAjIFRoaXMgb25seSBhZGRzIHNvbWUgYXNzZXJ0cyB0byB0aGUgb3JpZ2luYWwKZGlmZiAtLWdpdCBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkgYi9MaWIveG1sL2RvbS9taW5pZG9tLnB5CmluZGV4IGYyM2FkMDUuLjI4ZTUwMzAgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZG9tL21pbmlkb20ucHkKKysrIGIvTGliL3htbC9kb20vbWluaWRvbS5weQpAQCAtMTQsNyArMTQsNiBAQAogICogU0FYIDIgbmFtZXNwYWNlcwogIiIiCiAKLWltcG9ydCBjb2RlY3MKIGltcG9ydCBpbwogaW1wb3J0IHhtbC5kb20KIApAQCAtNDcsMjUgKzQ2LDI1IEBACiAgICAgICAgIHJldHVybiBzZWxmLnRvcHJldHR5eG1sKCIiLCAiIiwgZW5jb2RpbmcpCiAKICAgICBkZWYgdG9wcmV0dHl4bWwoc2VsZiwgaW5kZW50PSJcdCIsIG5ld2w9IlxuIiwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgICMgaW5kZW50ID0gdGhlIGluZGVudGF0aW9uIHN0cmluZyB0byBwcmVwZW5kLCBwZXIgbGV2ZWwKLSAgICAgICAgIyBuZXdsID0gdGhlIG5ld2xpbmUgc3RyaW5nIHRvIGFwcGVuZAotICAgICAgICB1c2VfZW5jb2RpbmcgPSAidXRmLTgiIGlmIGVuY29kaW5nIGlzIE5vbmUgZWxzZSBlbmNvZGluZwotICAgICAgICB3cml0ZXIgPSBjb2RlY3MuZ2V0d3JpdGVyKHVzZV9lbmNvZGluZykoaW8uQnl0ZXNJTygpKQorICAgICAgICBpZiBlbmNvZGluZyBpcyBOb25lOgorICAgICAgICAgICAgd3JpdGVyID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd3JpdGVyID0gaW8uVGV4dElPV3JhcHBlcihpby5CeXRlc0lPKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InhtbGNoYXJyZWZyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZT0nXG4nKQogICAgICAgICBpZiBzZWxmLm5vZGVUeXBlID09IE5vZGUuRE9DVU1FTlRfTk9ERToKICAgICAgICAgICAgICMgQ2FuIHBhc3MgZW5jb2Rpbmcgb25seSB0byBkb2N1bWVudCwgdG8gcHV0IGl0IGludG8gWE1MIGhlYWRlcgogICAgICAgICAgICAgc2VsZi53cml0ZXhtbCh3cml0ZXIsICIiLCBpbmRlbnQsIG5ld2wsIGVuY29kaW5nKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi53cml0ZXhtbCh3cml0ZXIsICIiLCBpbmRlbnQsIG5ld2wpCiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gd3JpdGVyLnN0cmVhbS5nZXR2YWx1ZSgpLmRlY29kZSh1c2VfZW5jb2RpbmcpCisgICAgICAgICAgICByZXR1cm4gd3JpdGVyLmdldHZhbHVlKCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB3cml0ZXIuc3RyZWFtLmdldHZhbHVlKCkKKyAgICAgICAgICAgIHJldHVybiB3cml0ZXIuZGV0YWNoKCkuZ2V0dmFsdWUoKQogCiAgICAgZGVmIGhhc0NoaWxkTm9kZXMoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY2hpbGROb2RlczoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5jaGlsZE5vZGVzKQogCiAgICAgZGVmIF9nZXRfY2hpbGROb2RlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuY2hpbGROb2RlcwpAQCAtMjg2LDEwICsyODUsMTAgQEAKICAgICBjaGlsZE5vZGVzID0gc2VsZi5jaGlsZE5vZGVzCiAgICAgaWYgY2hpbGROb2RlczoKICAgICAgICAgbGFzdCA9IGNoaWxkTm9kZXNbLTFdCi0gICAgICAgIG5vZGUuX19kaWN0X19bInByZXZpb3VzU2libGluZyJdID0gbGFzdAotICAgICAgICBsYXN0Ll9fZGljdF9fWyJuZXh0U2libGluZyJdID0gbm9kZQorICAgICAgICBub2RlLnByZXZpb3VzU2libGluZyA9IGxhc3QKKyAgICAgICAgbGFzdC5uZXh0U2libGluZyA9IG5vZGUKICAgICBjaGlsZE5vZGVzLmFwcGVuZChub2RlKQotICAgIG5vZGUuX19kaWN0X19bInBhcmVudE5vZGUiXSA9IHNlbGYKKyAgICBub2RlLnBhcmVudE5vZGUgPSBzZWxmCiAKIGRlZiBfaW5fZG9jdW1lbnQobm9kZSk6CiAgICAgIyByZXR1cm4gVHJ1ZSBpZmYgbm9kZSBpcyBwYXJ0IG9mIGEgZG9jdW1lbnQgdHJlZQpAQCAtMzQyLDkgKzM0MSwxMCBAQAogCiAKIGNsYXNzIEF0dHIoTm9kZSk6CisgICAgX19zbG90c19fPSgnX25hbWUnLCAnX3ZhbHVlJywgJ25hbWVzcGFjZVVSSScsCisgICAgICAgICAgICAgICAnX3ByZWZpeCcsICdjaGlsZE5vZGVzJywgJ19sb2NhbE5hbWUnLCAnb3duZXJEb2N1bWVudCcsICdvd25lckVsZW1lbnQnKQogICAgIG5vZGVUeXBlID0gTm9kZS5BVFRSSUJVVEVfTk9ERQogICAgIGF0dHJpYnV0ZXMgPSBOb25lCi0gICAgb3duZXJFbGVtZW50ID0gTm9uZQogICAgIHNwZWNpZmllZCA9IEZhbHNlCiAgICAgX2lzX2lkID0gRmFsc2UKIApAQCAtMzUyLDEyICszNTIsMTEgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxTmFtZSwgbmFtZXNwYWNlVVJJPUVNUFRZX05BTUVTUEFDRSwgbG9jYWxOYW1lPU5vbmUsCiAgICAgICAgICAgICAgICAgIHByZWZpeD1Ob25lKToKLSAgICAgICAgIyBza2lwIHNldGF0dHIgZm9yIHBlcmZvcm1hbmNlCi0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbIm5vZGVOYW1lIl0gPSBkWyJuYW1lIl0gPSBxTmFtZQotICAgICAgICBkWyJuYW1lc3BhY2VVUkkiXSA9IG5hbWVzcGFjZVVSSQotICAgICAgICBkWyJwcmVmaXgiXSA9IHByZWZpeAotICAgICAgICBkWydjaGlsZE5vZGVzJ10gPSBOb2RlTGlzdCgpCisgICAgICAgIHNlbGYub3duZXJFbGVtZW50ID0gTm9uZQorICAgICAgICBzZWxmLl9uYW1lID0gcU5hbWUKKyAgICAgICAgc2VsZi5uYW1lc3BhY2VVUkkgPSBuYW1lc3BhY2VVUkkKKyAgICAgICAgc2VsZi5fcHJlZml4ID0gcHJlZml4CisgICAgICAgIHNlbGYuY2hpbGROb2RlcyA9IE5vZGVMaXN0KCkKIAogICAgICAgICAjIEFkZCB0aGUgc2luZ2xlIGNoaWxkIG5vZGUgdGhhdCByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cgogICAgICAgICBzZWxmLmNoaWxkTm9kZXMuYXBwZW5kKFRleHQoKSkKQEAgLTM2NSw5ICszNjQsMTAgQEAKICAgICAgICAgIyBub2RlVmFsdWUgYW5kIHZhbHVlIGFyZSBzZXQgZWxzZXdoZXJlCiAKICAgICBkZWYgX2dldF9sb2NhbE5hbWUoc2VsZik6Ci0gICAgICAgIGlmICdsb2NhbE5hbWUnIGluIHNlbGYuX19kaWN0X186Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fX2RpY3RfX1snbG9jYWxOYW1lJ10KLSAgICAgICAgcmV0dXJuIHNlbGYubm9kZU5hbWUuc3BsaXQoIjoiLCAxKVstMV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2FsTmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5ub2RlTmFtZS5zcGxpdCgiOiIsIDEpWy0xXQogCiAgICAgZGVmIF9nZXRfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQpAQCAtMzc1LDIwICszNzUsMzAgQEAKICAgICBkZWYgX2dldF9zcGVjaWZpZWQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnNwZWNpZmllZAogCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgaWYgbmFtZSBpbiAoInZhbHVlIiwgIm5vZGVWYWx1ZSIpOgotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGQyID0gc2VsZi5jaGlsZE5vZGVzWzBdLl9fZGljdF9fCi0gICAgICAgICAgICBkMlsiZGF0YSJdID0gZDJbIm5vZGVWYWx1ZSJdID0gdmFsdWUKLSAgICAgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKLSAgICAgICAgZWxpZiBuYW1lIGluICgibmFtZSIsICJub2RlTmFtZSIpOgotICAgICAgICAgICAgZFsibmFtZSJdID0gZFsibm9kZU5hbWUiXSA9IHZhbHVlCi0gICAgICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkW25hbWVdID0gdmFsdWUKKyAgICBkZWYgX2dldF9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisgICAgZGVmIF9zZXRfbmFtZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX25hbWUgPSB2YWx1ZQorICAgICAgICBpZiBzZWxmLm93bmVyRWxlbWVudCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLm93bmVyRWxlbWVudCkKKworICAgIG5vZGVOYW1lID0gbmFtZSA9IHByb3BlcnR5KF9nZXRfbmFtZSwgX3NldF9uYW1lKQorCisgICAgZGVmIF9nZXRfdmFsdWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZQorCisgICAgZGVmIF9zZXRfdmFsdWUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzZWxmLl92YWx1ZSA9IHZhbHVlCisgICAgICAgIHNlbGYuY2hpbGROb2Rlc1swXS5kYXRhID0gdmFsdWUKKyAgICAgICAgaWYgc2VsZi5vd25lckVsZW1lbnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZi5vd25lckVsZW1lbnQpCisgICAgICAgIHNlbGYuY2hpbGROb2Rlc1swXS5kYXRhID0gdmFsdWUKKworICAgIG5vZGVWYWx1ZSA9IHZhbHVlID0gcHJvcGVydHkoX2dldF92YWx1ZSwgX3NldF92YWx1ZSkKKworICAgIGRlZiBfZ2V0X3ByZWZpeChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ByZWZpeAogCiAgICAgZGVmIF9zZXRfcHJlZml4KHNlbGYsIHByZWZpeCk6CiAgICAgICAgIG5zdXJpID0gc2VsZi5uYW1lc3BhY2VVUkkKQEAgLTM5NiwyMiArNDA2LDE2IEBACiAgICAgICAgICAgICBpZiBuc3VyaSBhbmQgbnN1cmkgIT0gWE1MTlNfTkFNRVNQQUNFOgogICAgICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTmFtZXNwYWNlRXJyKAogICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCB1c2Ugb2YgJ3htbG5zJyBwcmVmaXggZm9yIHRoZSB3cm9uZyBuYW1lc3BhY2UiKQotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWydwcmVmaXgnXSA9IHByZWZpeAorICAgICAgICBzZWxmLl9wcmVmaXggPSBwcmVmaXgKICAgICAgICAgaWYgcHJlZml4IGlzIE5vbmU6CiAgICAgICAgICAgICBuZXdOYW1lID0gc2VsZi5sb2NhbE5hbWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5ld05hbWUgPSAiJXM6JXMiICUgKHByZWZpeCwgc2VsZi5sb2NhbE5hbWUpCiAgICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50OgogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBkWydub2RlTmFtZSddID0gZFsnbmFtZSddID0gbmV3TmFtZQorICAgICAgICBzZWxmLm5hbWUgPSBuZXdOYW1lCiAKLSAgICBkZWYgX3NldF92YWx1ZShzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ3ZhbHVlJ10gPSBkWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgIGlmIHNlbGYub3duZXJFbGVtZW50OgotICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYub3duZXJFbGVtZW50KQotICAgICAgICBzZWxmLmNoaWxkTm9kZXNbMF0uZGF0YSA9IHZhbHVlCisgICAgcHJlZml4ID0gcHJvcGVydHkoX2dldF9wcmVmaXgsIF9zZXRfcHJlZml4KQogCiAgICAgZGVmIHVubGluayhzZWxmKToKICAgICAgICAgIyBUaGlzIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNhbGwgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24KQEAgLTU4Niw4ICs1OTAsOCBAQAogICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYuX293bmVyRWxlbWVudCkKICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc1tuLm5vZGVOYW1lXQogICAgICAgICAgICAgZGVsIHNlbGYuX2F0dHJzTlNbKG4ubmFtZXNwYWNlVVJJLCBuLmxvY2FsTmFtZSldCi0gICAgICAgICAgICBpZiAnb3duZXJFbGVtZW50JyBpbiBuLl9fZGljdF9fOgotICAgICAgICAgICAgICAgIG4uX19kaWN0X19bJ293bmVyRWxlbWVudCddID0gTm9uZQorICAgICAgICAgICAgaWYgaGFzYXR0cihuLCAnb3duZXJFbGVtZW50Jyk6CisgICAgICAgICAgICAgICAgbi5vd25lckVsZW1lbnQgPSBOb25lCiAgICAgICAgICAgICByZXR1cm4gbgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob3RGb3VuZEVycigpCkBAIC01OTgsOCArNjAyLDggQEAKICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmLl9vd25lckVsZW1lbnQpCiAgICAgICAgICAgICBkZWwgc2VsZi5fYXR0cnNOU1sobi5uYW1lc3BhY2VVUkksIG4ubG9jYWxOYW1lKV0KICAgICAgICAgICAgIGRlbCBzZWxmLl9hdHRyc1tuLm5vZGVOYW1lXQotICAgICAgICAgICAgaWYgJ293bmVyRWxlbWVudCcgaW4gbi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICBuLl9fZGljdF9fWydvd25lckVsZW1lbnQnXSA9IE5vbmUKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobiwgJ293bmVyRWxlbWVudCcpOgorICAgICAgICAgICAgICAgIG4ub3duZXJFbGVtZW50ID0gTm9uZQogICAgICAgICAgICAgcmV0dXJuIG4KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQpAQCAtNjU5LDYgKzY2Myw5IEBACiBfbm9fdHlwZSA9IFR5cGVJbmZvKE5vbmUsIE5vbmUpCiAKIGNsYXNzIEVsZW1lbnQoTm9kZSk6CisgICAgX19zbG90c19fPSgnb3duZXJEb2N1bWVudCcsICdwYXJlbnROb2RlJywgJ3RhZ05hbWUnLCAnbm9kZU5hbWUnLCAncHJlZml4JywKKyAgICAgICAgICAgICAgICduYW1lc3BhY2VVUkknLCAnX2xvY2FsTmFtZScsICdjaGlsZE5vZGVzJywgJ19hdHRycycsICdfYXR0cnNOUycsCisgICAgICAgICAgICAgICAnbmV4dFNpYmxpbmcnLCAncHJldmlvdXNTaWJsaW5nJykKICAgICBub2RlVHlwZSA9IE5vZGUuRUxFTUVOVF9OT0RFCiAgICAgbm9kZVZhbHVlID0gTm9uZQogICAgIHNjaGVtYVR5cGUgPSBfbm9fdHlwZQpAQCAtNjc0LDQxICs2ODEsNTcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWdOYW1lLCBuYW1lc3BhY2VVUkk9RU1QVFlfTkFNRVNQQUNFLCBwcmVmaXg9Tm9uZSwKICAgICAgICAgICAgICAgICAgbG9jYWxOYW1lPU5vbmUpOgorICAgICAgICBzZWxmLnBhcmVudE5vZGUgPSBOb25lCiAgICAgICAgIHNlbGYudGFnTmFtZSA9IHNlbGYubm9kZU5hbWUgPSB0YWdOYW1lCiAgICAgICAgIHNlbGYucHJlZml4ID0gcHJlZml4CiAgICAgICAgIHNlbGYubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCiAgICAgICAgIHNlbGYuY2hpbGROb2RlcyA9IE5vZGVMaXN0KCkKKyAgICAgICAgc2VsZi5uZXh0U2libGluZyA9IHNlbGYucHJldmlvdXNTaWJsaW5nID0gTm9uZQogCi0gICAgICAgIHNlbGYuX2F0dHJzID0ge30gICAjIGF0dHJpYnV0ZXMgYXJlIGRvdWJsZS1pbmRleGVkOgotICAgICAgICBzZWxmLl9hdHRyc05TID0ge30gIyAgICB0YWdOYW1lIC0+IEF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBVUkksbG9jYWxOYW1lIC0+IEF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgZnV0dXJlOiBjb25zaWRlciBsYXp5IGdlbmVyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb2YgYXR0cmlidXRlIG9iamVjdHMgdGhpcyBpcyB0b28gdHJpY2t5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZvciBub3cgYmVjYXVzZSBvZiBoZWFkYWNoZXMgd2l0aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBuYW1lc3BhY2VzLgorICAgICAgICAjIEF0dHJpYnV0ZSBkaWN0aW9uYXJpZXMgYXJlIGxhemlseSBjcmVhdGVkCisgICAgICAgICMgYXR0cmlidXRlcyBhcmUgZG91YmxlLWluZGV4ZWQ6CisgICAgICAgICMgICAgdGFnTmFtZSAtPiBBdHRyaWJ1dGUKKyAgICAgICAgIyAgICBVUkksbG9jYWxOYW1lIC0+IEF0dHJpYnV0ZQorICAgICAgICAjIGluIHRoZSBmdXR1cmU6IGNvbnNpZGVyIGxhenkgZ2VuZXJhdGlvbgorICAgICAgICAjIG9mIGF0dHJpYnV0ZSBvYmplY3RzIHRoaXMgaXMgdG9vIHRyaWNreQorICAgICAgICAjIGZvciBub3cgYmVjYXVzZSBvZiBoZWFkYWNoZXMgd2l0aAorICAgICAgICAjIG5hbWVzcGFjZXMuCisgICAgICAgIHNlbGYuX2F0dHJzID0gTm9uZQorICAgICAgICBzZWxmLl9hdHRyc05TID0gTm9uZQorCisgICAgZGVmIF9lbnN1cmVfYXR0cmlidXRlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2F0dHJzID0ge30KKyAgICAgICAgICAgIHNlbGYuX2F0dHJzTlMgPSB7fQogCiAgICAgZGVmIF9nZXRfbG9jYWxOYW1lKHNlbGYpOgotICAgICAgICBpZiAnbG9jYWxOYW1lJyBpbiBzZWxmLl9fZGljdF9fOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19kaWN0X19bJ2xvY2FsTmFtZSddCi0gICAgICAgIHJldHVybiBzZWxmLnRhZ05hbWUuc3BsaXQoIjoiLCAxKVstMV0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2FsTmFtZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lLnNwbGl0KCI6IiwgMSlbLTFdCiAKICAgICBkZWYgX2dldF90YWdOYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi50YWdOYW1lCiAKICAgICBkZWYgdW5saW5rKHNlbGYpOgotICAgICAgICBmb3IgYXR0ciBpbiBsaXN0KHNlbGYuX2F0dHJzLnZhbHVlcygpKToKLSAgICAgICAgICAgIGF0dHIudW5saW5rKCkKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmb3IgYXR0ciBpbiBsaXN0KHNlbGYuX2F0dHJzLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICBhdHRyLnVubGluaygpCiAgICAgICAgIHNlbGYuX2F0dHJzID0gTm9uZQogICAgICAgICBzZWxmLl9hdHRyc05TID0gTm9uZQogICAgICAgICBOb2RlLnVubGluayhzZWxmKQogCiAgICAgZGVmIGdldEF0dHJpYnV0ZShzZWxmLCBhdHRuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAiIgogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYXR0cnNbYXR0bmFtZV0udmFsdWUKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgcmV0dXJuICIiCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTlMoc2VsZiwgbmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzTlNbKG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKV0udmFsdWUKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtNzE4LDE0ICs3NDEsMTEgQEAKICAgICAgICAgYXR0ciA9IHNlbGYuZ2V0QXR0cmlidXRlTm9kZShhdHRuYW1lKQogICAgICAgICBpZiBhdHRyIGlzIE5vbmU6CiAgICAgICAgICAgICBhdHRyID0gQXR0cihhdHRuYW1lKQotICAgICAgICAgICAgIyBmb3IgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgIGQgPSBhdHRyLl9fZGljdF9fCi0gICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQotICAgICAgICAgICAgZFsib3duZXJEb2N1bWVudCJdID0gc2VsZi5vd25lckRvY3VtZW50CisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUgIyBhbHNvIHNldHMgbm9kZVZhbHVlCisgICAgICAgICAgICBhdHRyLm93bmVyRG9jdW1lbnQgPSBzZWxmLm93bmVyRG9jdW1lbnQKICAgICAgICAgICAgIHNlbGYuc2V0QXR0cmlidXRlTm9kZShhdHRyKQogICAgICAgICBlbGlmIHZhbHVlICE9IGF0dHIudmFsdWU6Ci0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsidmFsdWUiXSA9IGRbIm5vZGVWYWx1ZSJdID0gdmFsdWUKKyAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICAgaWYgYXR0ci5pc0lkOgogICAgICAgICAgICAgICAgIF9jbGVhcl9pZF9jYWNoZShzZWxmKQogCkBAIC03MzMsMzMgKzc1MywzMyBAQAogICAgICAgICBwcmVmaXgsIGxvY2FsbmFtZSA9IF9uc3NwbGl0KHF1YWxpZmllZE5hbWUpCiAgICAgICAgIGF0dHIgPSBzZWxmLmdldEF0dHJpYnV0ZU5vZGVOUyhuYW1lc3BhY2VVUkksIGxvY2FsbmFtZSkKICAgICAgICAgaWYgYXR0ciBpcyBOb25lOgotICAgICAgICAgICAgIyBmb3IgcGVyZm9ybWFuY2UKICAgICAgICAgICAgIGF0dHIgPSBBdHRyKHF1YWxpZmllZE5hbWUsIG5hbWVzcGFjZVVSSSwgbG9jYWxuYW1lLCBwcmVmaXgpCi0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwotICAgICAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgICAgIGRbIm5vZGVOYW1lIl0gPSBxdWFsaWZpZWROYW1lCi0gICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQotICAgICAgICAgICAgZFsib3duZXJEb2N1bWVudCJdID0gc2VsZi5vd25lckRvY3VtZW50CisgICAgICAgICAgICBhdHRyLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGF0dHIub3duZXJEb2N1bWVudCA9IHNlbGYub3duZXJEb2N1bWVudAogICAgICAgICAgICAgc2VsZi5zZXRBdHRyaWJ1dGVOb2RlKGF0dHIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkID0gYXR0ci5fX2RpY3RfXwogICAgICAgICAgICAgaWYgdmFsdWUgIT0gYXR0ci52YWx1ZToKLSAgICAgICAgICAgICAgICBkWyJ2YWx1ZSJdID0gZFsibm9kZVZhbHVlIl0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIGF0dHIudmFsdWUgPSB2YWx1ZQogICAgICAgICAgICAgICAgIGlmIGF0dHIuaXNJZDoKICAgICAgICAgICAgICAgICAgICAgX2NsZWFyX2lkX2NhY2hlKHNlbGYpCiAgICAgICAgICAgICBpZiBhdHRyLnByZWZpeCAhPSBwcmVmaXg6Ci0gICAgICAgICAgICAgICAgZFsicHJlZml4Il0gPSBwcmVmaXgKLSAgICAgICAgICAgICAgICBkWyJub2RlTmFtZSJdID0gcXVhbGlmaWVkTmFtZQorICAgICAgICAgICAgICAgIGF0dHIucHJlZml4ID0gcHJlZml4CisgICAgICAgICAgICAgICAgYXR0ci5ub2RlTmFtZSA9IHF1YWxpZmllZE5hbWUKIAogICAgIGRlZiBnZXRBdHRyaWJ1dGVOb2RlKHNlbGYsIGF0dHJuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLl9hdHRycy5nZXQoYXR0cm5hbWUpCiAKICAgICBkZWYgZ2V0QXR0cmlidXRlTm9kZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2F0dHJzTlMuZ2V0KChuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSkpCiAKICAgICBkZWYgc2V0QXR0cmlidXRlTm9kZShzZWxmLCBhdHRyKToKICAgICAgICAgaWYgYXR0ci5vd25lckVsZW1lbnQgbm90IGluIChOb25lLCBzZWxmKToKICAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uSW51c2VBdHRyaWJ1dGVFcnIoImF0dHJpYnV0ZSBub2RlIGFscmVhZHkgb3duZWQiKQorICAgICAgICBzZWxmLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgIG9sZDEgPSBzZWxmLl9hdHRycy5nZXQoYXR0ci5uYW1lLCBOb25lKQogICAgICAgICBpZiBvbGQxIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5yZW1vdmVBdHRyaWJ1dGVOb2RlKG9sZDEpCkBAIC03NzgsNiArNzk4LDggQEAKICAgICBzZXRBdHRyaWJ1dGVOb2RlTlMgPSBzZXRBdHRyaWJ1dGVOb2RlCiAKICAgICBkZWYgcmVtb3ZlQXR0cmlidXRlKHNlbGYsIG5hbWUpOgorICAgICAgICBpZiBzZWxmLl9hdHRyc05TIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdEZvdW5kRXJyKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgYXR0ciA9IHNlbGYuX2F0dHJzW25hbWVdCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTc4NSw2ICs4MDcsOCBAQAogICAgICAgICBzZWxmLnJlbW92ZUF0dHJpYnV0ZU5vZGUoYXR0cikKIAogICAgIGRlZiByZW1vdmVBdHRyaWJ1dGVOUyhzZWxmLCBuYW1lc3BhY2VVUkksIGxvY2FsTmFtZSk6CisgICAgICAgIGlmIHNlbGYuX2F0dHJzTlMgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIHhtbC5kb20uTm90Rm91bmRFcnIoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBhdHRyID0gc2VsZi5fYXR0cnNOU1sobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpXQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC04MDcsOSArODMxLDEzIEBACiAgICAgcmVtb3ZlQXR0cmlidXRlTm9kZU5TID0gcmVtb3ZlQXR0cmlidXRlTm9kZQogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZShzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnMgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gbmFtZSBpbiBzZWxmLl9hdHRycwogCiAgICAgZGVmIGhhc0F0dHJpYnV0ZU5TKHNlbGYsIG5hbWVzcGFjZVVSSSwgbG9jYWxOYW1lKToKKyAgICAgICAgaWYgc2VsZi5fYXR0cnNOUyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiAobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpIGluIHNlbGYuX2F0dHJzTlMKIAogICAgIGRlZiBnZXRFbGVtZW50c0J5VGFnTmFtZShzZWxmLCBuYW1lKToKQEAgLTg1MCw2ICs4NzgsNyBAQAogICAgICAgICAgICAgd3JpdGVyLndyaXRlKCIvPiVzIiUobmV3bCkpCiAKICAgICBkZWYgX2dldF9hdHRyaWJ1dGVzKHNlbGYpOgorICAgICAgICBzZWxmLl9lbnN1cmVfYXR0cmlidXRlcygpCiAgICAgICAgIHJldHVybiBOYW1lZE5vZGVNYXAoc2VsZi5fYXR0cnMsIHNlbGYuX2F0dHJzTlMsIHNlbGYpCiAKICAgICBkZWYgaGFzQXR0cmlidXRlcyhzZWxmKToKQEAgLTg3NCw3ICs5MDMsNyBAQAogICAgICAgICBpZiBfZ2V0X2NvbnRhaW5pbmdfZW50cmVmKHNlbGYpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmFpc2UgeG1sLmRvbS5Ob01vZGlmaWNhdGlvbkFsbG93ZWRFcnIoKQogICAgICAgICBpZiBub3QgaWRBdHRyLl9pc19pZDoKLSAgICAgICAgICAgIGlkQXR0ci5fX2RpY3RfX1snX2lzX2lkJ10gPSBUcnVlCisgICAgICAgICAgICBpZEF0dHIuX2lzX2lkID0gVHJ1ZQogICAgICAgICAgICAgc2VsZi5fbWFnaWNfaWRfbm9kZXMgKz0gMQogICAgICAgICAgICAgc2VsZi5vd25lckRvY3VtZW50Ll9tYWdpY19pZF9jb3VudCArPSAxCiAgICAgICAgICAgICBfY2xlYXJfaWRfY2FjaGUoc2VsZikKQEAgLTg4NywxOSArOTE2LDIwIEBACiAKIGRlZiBfc2V0X2F0dHJpYnV0ZV9ub2RlKGVsZW1lbnQsIGF0dHIpOgogICAgIF9jbGVhcl9pZF9jYWNoZShlbGVtZW50KQorICAgIGVsZW1lbnQuX2Vuc3VyZV9hdHRyaWJ1dGVzKCkKICAgICBlbGVtZW50Ll9hdHRyc1thdHRyLm5hbWVdID0gYXR0cgogICAgIGVsZW1lbnQuX2F0dHJzTlNbKGF0dHIubmFtZXNwYWNlVVJJLCBhdHRyLmxvY2FsTmFtZSldID0gYXR0cgogCiAgICAgIyBUaGlzIGNyZWF0ZXMgYSBjaXJjdWxhciByZWZlcmVuY2UsIGJ1dCBFbGVtZW50LnVubGluaygpCiAgICAgIyBicmVha3MgdGhlIGN5Y2xlIHNpbmNlIHRoZSByZWZlcmVuY2VzIHRvIHRoZSBhdHRyaWJ1dGUKICAgICAjIGRpY3Rpb25hcmllcyBhcmUgdG9zc2VkLgotICAgIGF0dHIuX19kaWN0X19bJ293bmVyRWxlbWVudCddID0gZWxlbWVudAotCisgICAgYXR0ci5vd25lckVsZW1lbnQgPSBlbGVtZW50CiAKIGNsYXNzIENoaWxkbGVzczoKICAgICAiIiJNaXhpbiB0aGF0IG1ha2VzIGNoaWxkbGVzcy1uZXNzIGVhc3kgdG8gaW1wbGVtZW50IGFuZCBhdm9pZHMKICAgICB0aGUgY29tcGxleGl0eSBvZiB0aGUgTm9kZSBtZXRob2RzIHRoYXQgZGVhbCB3aXRoIGNoaWxkcmVuLgogICAgICIiIgorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBhdHRyaWJ1dGVzID0gTm9uZQogICAgIGNoaWxkTm9kZXMgPSBFbXB0eU5vZGVMaXN0KCkKQEAgLTkzOCw1NCArOTY4LDQ5IEBACiAKIGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbihDaGlsZGxlc3MsIE5vZGUpOgogICAgIG5vZGVUeXBlID0gTm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUKKyAgICBfX3Nsb3RzX18gPSAoJ3RhcmdldCcsICdkYXRhJykKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXQsIGRhdGEpOgotICAgICAgICBzZWxmLnRhcmdldCA9IHNlbGYubm9kZU5hbWUgPSB0YXJnZXQKLSAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5ub2RlVmFsdWUgPSBkYXRhCisgICAgICAgIHNlbGYudGFyZ2V0ID0gdGFyZ2V0CisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKIAotICAgIGRlZiBfZ2V0X2RhdGEoc2VsZik6CisgICAgIyBub2RlVmFsdWUgaXMgYW4gYWxpYXMgZm9yIGRhdGEKKyAgICBkZWYgX2dldF9ub2RlVmFsdWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmRhdGEKLSAgICBkZWYgX3NldF9kYXRhKHNlbGYsIHZhbHVlKToKLSAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgZFsnZGF0YSddID0gZFsnbm9kZVZhbHVlJ10gPSB2YWx1ZQorICAgIGRlZiBfc2V0X25vZGVWYWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKKyAgICBub2RlVmFsdWUgPSBwcm9wZXJ0eShfZ2V0X25vZGVWYWx1ZSwgX3NldF9ub2RlVmFsdWUpCiAKLSAgICBkZWYgX2dldF90YXJnZXQoc2VsZik6CisgICAgIyBub2RlTmFtZSBpcyBhbiBhbGlhcyBmb3IgdGFyZ2V0CisgICAgZGVmIF9nZXRfbm9kZU5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLnRhcmdldAotICAgIGRlZiBfc2V0X3RhcmdldChzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIGQgPSBzZWxmLl9fZGljdF9fCi0gICAgICAgIGRbJ3RhcmdldCddID0gZFsnbm9kZU5hbWUnXSA9IHZhbHVlCi0KLSAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBuYW1lID09ICJkYXRhIiBvciBuYW1lID09ICJub2RlVmFsdWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1snZGF0YSddID0gc2VsZi5fX2RpY3RfX1snbm9kZVZhbHVlJ10gPSB2YWx1ZQotICAgICAgICBlbGlmIG5hbWUgPT0gInRhcmdldCIgb3IgbmFtZSA9PSAibm9kZU5hbWUiOgotICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1sndGFyZ2V0J10gPSBzZWxmLl9fZGljdF9fWydub2RlTmFtZSddID0gdmFsdWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSB2YWx1ZQorICAgIGRlZiBfc2V0X25vZGVOYW1lKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc2VsZi50YXJnZXQgPSB2YWx1ZQorICAgIG5vZGVOYW1lID0gcHJvcGVydHkoX2dldF9ub2RlTmFtZSwgX3NldF9ub2RlTmFtZSkKIAogICAgIGRlZiB3cml0ZXhtbChzZWxmLCB3cml0ZXIsIGluZGVudD0iIiwgYWRkaW5kZW50PSIiLCBuZXdsPSIiKToKICAgICAgICAgd3JpdGVyLndyaXRlKCIlczw/JXMgJXM/PiVzIiAlIChpbmRlbnQsc2VsZi50YXJnZXQsIHNlbGYuZGF0YSwgbmV3bCkpCiAKIAogY2xhc3MgQ2hhcmFjdGVyRGF0YShDaGlsZGxlc3MsIE5vZGUpOgorICAgIF9fc2xvdHNfXz0oJ19kYXRhJywgJ293bmVyRG9jdW1lbnQnLCdwYXJlbnROb2RlJywgJ3ByZXZpb3VzU2libGluZycsICduZXh0U2libGluZycpCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYub3duZXJEb2N1bWVudCA9IHNlbGYucGFyZW50Tm9kZSA9IE5vbmUKKyAgICAgICAgc2VsZi5wcmV2aW91c1NpYmxpbmcgPSBzZWxmLm5leHRTaWJsaW5nID0gTm9uZQorICAgICAgICBzZWxmLl9kYXRhID0gJycKKyAgICAgICAgTm9kZS5fX2luaXRfXyhzZWxmKQorCiAgICAgZGVmIF9nZXRfbGVuZ3RoKHNlbGYpOgogICAgICAgICByZXR1cm4gbGVuKHNlbGYuZGF0YSkKICAgICBfX2xlbl9fID0gX2dldF9sZW5ndGgKIAogICAgIGRlZiBfZ2V0X2RhdGEoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fZGljdF9fWydkYXRhJ10KKyAgICAgICAgcmV0dXJuIHNlbGYuX2RhdGEKICAgICBkZWYgX3NldF9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBkID0gc2VsZi5fX2RpY3RfXwotICAgICAgICBkWydkYXRhJ10gPSBkWydub2RlVmFsdWUnXSA9IGRhdGEKKyAgICAgICAgc2VsZi5fZGF0YSA9IGRhdGEKIAotICAgIF9nZXRfbm9kZVZhbHVlID0gX2dldF9kYXRhCi0gICAgX3NldF9ub2RlVmFsdWUgPSBfc2V0X2RhdGEKLQotICAgIGRlZiBfX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0gICAgICAgIGlmIG5hbWUgPT0gImRhdGEiIG9yIG5hbWUgPT0gIm5vZGVWYWx1ZSI6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fWydkYXRhJ10gPSBzZWxmLl9fZGljdF9fWydub2RlVmFsdWUnXSA9IHZhbHVlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9fZGljdF9fW25hbWVdID0gdmFsdWUKKyAgICBkYXRhID0gbm9kZVZhbHVlID0gcHJvcGVydHkoX2dldF9kYXRhLCBfc2V0X2RhdGEpCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIGRhdGEgPSBzZWxmLmRhdGEKQEAgLTEwNDIsMTAgKzEwNjcsNyBAQAogCiAKIGNsYXNzIFRleHQoQ2hhcmFjdGVyRGF0YSk6Ci0gICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgYWRkIGFuIGluc3RhbmNlIF9fZGljdF9fIGlmIHdlIGRvbid0IGFscmVhZHkKLSAgICAjIGhhdmUgb25lLCBhdCBsZWFzdCB3aGVuIHRoYXQncyBwb3NzaWJsZToKLSAgICAjIFhYWCB0aGlzIGRvZXMgbm90IHdvcmssIENoYXJhY3RlckRhdGEgaXMgYW4gb2xkLXN0eWxlIGNsYXNzCi0gICAgIyBfX3Nsb3RzX18gPSAoKQorICAgIF9fc2xvdHNfXyA9ICgpCiAKICAgICBub2RlVHlwZSA9IE5vZGUuVEVYVF9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI3RleHQiCkBAIC0xMTEyLDkgKzExMzQsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBpZiBjb250ZW50OgotICAgICAgICAgICAgZCA9IHNlbGYuX19kaWN0X18KLSAgICAgICAgICAgIGRbJ2RhdGEnXSA9IGNvbnRlbnQKLSAgICAgICAgICAgIGRbJ25vZGVWYWx1ZSddID0gY29udGVudAorICAgICAgICAgICAgc2VsZi5kYXRhID0gY29udGVudAogICAgICAgICAgICAgcmV0dXJuIHNlbGYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBOb25lCkBAIC0xMTYwLDcgKzExODAsOCBAQAogICAgIG5vZGVOYW1lID0gIiNjb21tZW50IgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLmRhdGEgPSBzZWxmLm5vZGVWYWx1ZSA9IGRhdGEKKyAgICAgICAgQ2hhcmFjdGVyRGF0YS5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9kYXRhID0gZGF0YQogCiAgICAgZGVmIHdyaXRleG1sKHNlbGYsIHdyaXRlciwgaW5kZW50PSIiLCBhZGRpbmRlbnQ9IiIsIG5ld2w9IiIpOgogICAgICAgICBpZiAiLS0iIGluIHNlbGYuZGF0YToKQEAgLTExNjksMTAgKzExOTAsNyBAQAogCiAKIGNsYXNzIENEQVRBU2VjdGlvbihUZXh0KToKLSAgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBhZGQgYW4gaW5zdGFuY2UgX19kaWN0X18gaWYgd2UgZG9uJ3QgYWxyZWFkeQotICAgICMgaGF2ZSBvbmUsIGF0IGxlYXN0IHdoZW4gdGhhdCdzIHBvc3NpYmxlOgotICAgICMgWFhYIHRoaXMgZG9lcyBub3Qgd29yaywgVGV4dCBpcyBhbiBvbGQtc3R5bGUgY2xhc3MKLSAgICAjIF9fc2xvdHNfXyA9ICgpCisgICAgX19zbG90c19fID0gKCkKIAogICAgIG5vZGVUeXBlID0gTm9kZS5DREFUQV9TRUNUSU9OX05PREUKICAgICBub2RlTmFtZSA9ICIjY2RhdGEtc2VjdGlvbiIKQEAgLTEyNTIsOCArMTI3MCw3IEBACiBjbGFzcyBJZGVudGlmaWVkOgogICAgICIiIk1peC1pbiBjbGFzcyB0aGF0IHN1cHBvcnRzIHRoZSBwdWJsaWNJZCBhbmQgc3lzdGVtSWQgYXR0cmlidXRlcy4iIiIKIAotICAgICMgWFhYIHRoaXMgZG9lcyBub3Qgd29yaywgdGhpcyBpcyBhbiBvbGQtc3R5bGUgY2xhc3MKLSAgICAjIF9fc2xvdHNfXyA9ICdwdWJsaWNJZCcsICdzeXN0ZW1JZCcKKyAgICBfX3Nsb3RzX18gPSAncHVibGljSWQnLCAnc3lzdGVtSWQnCiAKICAgICBkZWYgX2lkZW50aWZpZWRfbWl4aW5faW5pdChzZWxmLCBwdWJsaWNJZCwgc3lzdGVtSWQpOgogICAgICAgICBzZWxmLnB1YmxpY0lkID0gcHVibGljSWQKQEAgLTE1MDQsMTggKzE1MjEsMTkgQEAKICAgICAgICAgbm9kZS5vd25lckRvY3VtZW50Ll9pZF9zZWFyY2hfc3RhY2s9IE5vbmUKIAogY2xhc3MgRG9jdW1lbnQoTm9kZSwgRG9jdW1lbnRMUyk6CisgICAgX19zbG90c19fID0gKCdfZWxlbV9pbmZvJywgJ2RvY3R5cGUnLAorICAgICAgICAgICAgICAgICAnX2lkX3NlYXJjaF9zdGFjaycsICdjaGlsZE5vZGVzJywgJ19pZF9jYWNoZScpCiAgICAgX2NoaWxkX25vZGVfdHlwZXMgPSAoTm9kZS5FTEVNRU5UX05PREUsIE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUuQ09NTUVOVF9OT0RFLCBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSkKIAorICAgIGltcGxlbWVudGF0aW9uID0gRE9NSW1wbGVtZW50YXRpb24oKQogICAgIG5vZGVUeXBlID0gTm9kZS5ET0NVTUVOVF9OT0RFCiAgICAgbm9kZU5hbWUgPSAiI2RvY3VtZW50IgogICAgIG5vZGVWYWx1ZSA9IE5vbmUKICAgICBhdHRyaWJ1dGVzID0gTm9uZQotICAgIGRvY3R5cGUgPSBOb25lCiAgICAgcGFyZW50Tm9kZSA9IE5vbmUKICAgICBwcmV2aW91c1NpYmxpbmcgPSBuZXh0U2libGluZyA9IE5vbmUKIAotICAgIGltcGxlbWVudGF0aW9uID0gRE9NSW1wbGVtZW50YXRpb24oKQogCiAgICAgIyBEb2N1bWVudCBhdHRyaWJ1dGVzIGZyb20gTGV2ZWwgMyAoV0QgOSBBcHJpbCAyMDAyKQogCkBAIC0xNTMwLDYgKzE1NDgsNyBAQAogICAgIF9tYWdpY19pZF9jb3VudCA9IDAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5kb2N0eXBlID0gTm9uZQogICAgICAgICBzZWxmLmNoaWxkTm9kZXMgPSBOb2RlTGlzdCgpCiAgICAgICAgICMgbWFwcGluZyBvZiAobmFtZXNwYWNlVVJJLCBsb2NhbE5hbWUpIC0+IEVsZW1lbnRJbmZvCiAgICAgICAgICMgICAgICAgIGFuZCB0YWdOYW1lIC0+IEVsZW1lbnRJbmZvCkBAIC0xNzcxLDEyICsxNzkwLDEyIEBACiAgICAgICAgICAgICByYWlzZSB4bWwuZG9tLk5vdFN1cHBvcnRlZEVycigiY2Fubm90IGltcG9ydCBkb2N1bWVudCB0eXBlIG5vZGVzIikKICAgICAgICAgcmV0dXJuIF9jbG9uZV9ub2RlKG5vZGUsIGRlZXAsIHNlbGYpCiAKLSAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIiwKLSAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSBOb25lKToKKyAgICBkZWYgd3JpdGV4bWwoc2VsZiwgd3JpdGVyLCBpbmRlbnQ9IiIsIGFkZGluZGVudD0iIiwgbmV3bD0iIiwgZW5jb2Rpbmc9Tm9uZSk6CiAgICAgICAgIGlmIGVuY29kaW5nIGlzIE5vbmU6CiAgICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgPz4nK25ld2wpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3cml0ZXIud3JpdGUoJzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IiVzIj8+JXMnICUgKGVuY29kaW5nLCBuZXdsKSkKKyAgICAgICAgICAgIHdyaXRlci53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iJXMiPz4lcycgJSAoCisgICAgICAgICAgICAgICAgZW5jb2RpbmcsIG5ld2wpKQogICAgICAgICBmb3Igbm9kZSBpbiBzZWxmLmNoaWxkTm9kZXM6CiAgICAgICAgICAgICBub2RlLndyaXRleG1sKHdyaXRlciwgaW5kZW50LCBhZGRpbmRlbnQsIG5ld2wpCiAKQEAgLTE4MTUsMTcgKzE4MzQsMTUgQEAKICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZU5vZGUobikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVsZW1lbnQgPSBOb25lCi0gICAgICAgICMgYXZvaWQgX19zZXRhdHRyX18KLSAgICAgICAgZCA9IG4uX19kaWN0X18KLSAgICAgICAgZFsncHJlZml4J10gPSBwcmVmaXgKLSAgICAgICAgZFsnbG9jYWxOYW1lJ10gPSBsb2NhbE5hbWUKLSAgICAgICAgZFsnbmFtZXNwYWNlVVJJJ10gPSBuYW1lc3BhY2VVUkkKLSAgICAgICAgZFsnbm9kZU5hbWUnXSA9IG5hbWUKKyAgICAgICAgbi5wcmVmaXggPSBwcmVmaXgKKyAgICAgICAgbi5fbG9jYWxOYW1lID0gbG9jYWxOYW1lCisgICAgICAgIG4ubmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJCisgICAgICAgIG4ubm9kZU5hbWUgPSBuYW1lCiAgICAgICAgIGlmIG4ubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAgICAgICBkWyd0YWdOYW1lJ10gPSBuYW1lCisgICAgICAgICAgICBuLnRhZ05hbWUgPSBuYW1lCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIGF0dHJpYnV0ZSBub2RlCi0gICAgICAgICAgICBkWyduYW1lJ10gPSBuYW1lCisgICAgICAgICAgICBuLm5hbWUgPSBuYW1lCiAgICAgICAgICAgICBpZiBlbGVtZW50IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTm9kZShuKQogICAgICAgICAgICAgICAgIGlmIGlzX2lkOgpkaWZmIC0tZ2l0IGEvTGliL3htbC9kb20vcHVsbGRvbS5weSBiL0xpYi94bWwvZG9tL3B1bGxkb20ucHkKaW5kZXggZDVhYzhiMi4uNDM1MDRmNyAxMDA2NDQKLS0tIGEvTGliL3htbC9kb20vcHVsbGRvbS5weQorKysgYi9MaWIveG1sL2RvbS9wdWxsZG9tLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHhtbC5zYXgKIGltcG9ydCB4bWwuc2F4LmhhbmRsZXIKLWltcG9ydCB0eXBlcwogCiBTVEFSVF9FTEVNRU5UID0gIlNUQVJUX0VMRU1FTlQiCiBFTkRfRUxFTUVOVCA9ICJFTkRfRUxFTUVOVCIKQEAgLTMzNCwxMCArMzMzLDcgQEAKICAgICByZXR1cm4gRE9NRXZlbnRTdHJlYW0oc3RyZWFtLCBwYXJzZXIsIGJ1ZnNpemUpCiAKIGRlZiBwYXJzZVN0cmluZyhzdHJpbmcsIHBhcnNlcj1Ob25lKToKLSAgICB0cnk6Ci0gICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKICAgICBidWZzaXplID0gbGVuKHN0cmluZykKICAgICBidWYgPSBTdHJpbmdJTyhzdHJpbmcpCmRpZmYgLS1naXQgYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5IGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQppbmRleCA5NzQyZjMyLi45NTUzYzUxIDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CisrKyBiL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKQEAgLTY4LDggKzY4LDkgQEAKICAgICAidG9zdHJpbmciLCAidG9zdHJpbmdsaXN0IiwKICAgICAiVHJlZUJ1aWxkZXIiLAogICAgICJWRVJTSU9OIiwKLSAgICAiWE1MIiwKKyAgICAiWE1MIiwgIlhNTElEIiwKICAgICAiWE1MUGFyc2VyIiwgIlhNTFRyZWVCdWlsZGVyIiwKKyAgICAicmVnaXN0ZXJfbmFtZXNwYWNlIiwKICAgICBdCiAKIFZFUlNJT04gPSAiMS4zLjAiCkBAIC05OSwzNCArMTAwLDExIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncworaW1wb3J0IGlvCitpbXBvcnQgY29udGV4dGxpYgogCitmcm9tIC4gaW1wb3J0IEVsZW1lbnRQYXRoCiAKLWNsYXNzIF9TaW1wbGVFbGVtZW50UGF0aDoKLSAgICAjIGVtdWxhdGUgcHJlLTEuMiBmaW5kL2ZpbmR0ZXh0L2ZpbmRhbGwgYmVoYXZpb3VyCi0gICAgZGVmIGZpbmQoc2VsZiwgZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgotICAgICAgICAgICAgaWYgZWxlbS50YWcgPT0gdGFnOgotICAgICAgICAgICAgICAgIHJldHVybiBlbGVtCi0gICAgICAgIHJldHVybiBOb25lCi0gICAgZGVmIGZpbmR0ZXh0KHNlbGYsIGVsZW1lbnQsIHRhZywgZGVmYXVsdD1Ob25lLCBuYW1lc3BhY2VzPU5vbmUpOgotICAgICAgICBlbGVtID0gc2VsZi5maW5kKGVsZW1lbnQsIHRhZykKLSAgICAgICAgaWYgZWxlbSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgcmV0dXJuIGVsZW0udGV4dCBvciAiIgotICAgIGRlZiBpdGVyZmluZChzZWxmLCBlbGVtZW50LCB0YWcsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgICAgIGlmIHRhZ1s6M10gPT0gIi4vLyI6Ci0gICAgICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50Lml0ZXIodGFnWzM6XSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgZWxlbQotICAgICAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgotICAgICAgICAgICAgaWYgZWxlbS50YWcgPT0gdGFnOgotICAgICAgICAgICAgICAgIHlpZWxkIGVsZW0KLSAgICBkZWYgZmluZGFsbChzZWxmLCBlbGVtZW50LCB0YWcsIG5hbWVzcGFjZXM9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRlcmZpbmQoZWxlbWVudCwgdGFnLCBuYW1lc3BhY2VzKSkKLQotdHJ5OgotICAgIGZyb20gLiBpbXBvcnQgRWxlbWVudFBhdGgKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBFbGVtZW50UGF0aCA9IF9TaW1wbGVFbGVtZW50UGF0aCgpCiAKICMjCiAjIFBhcnNlciBlcnJvci4gIFRoaXMgaXMgYSBzdWJjbGFzcyBvZiA8Yj5TeW50YXhFcnJvcjwvYj4uCkBAIC0xNDgsOSArMTI2LDkgQEAKICMgQGRlZnJldHVybiBmbGFnCiAKIGRlZiBpc2VsZW1lbnQoZWxlbWVudCk6Ci0gICAgIyBGSVhNRTogbm90IHN1cmUgYWJvdXQgdGhpczsgbWlnaHQgYmUgYSBiZXR0ZXIgaWRlYSB0byBsb29rCi0gICAgIyBmb3IgdGFnL2F0dHJpYi90ZXh0IGF0dHJpYnV0ZXMKLSAgICByZXR1cm4gaXNpbnN0YW5jZShlbGVtZW50LCBFbGVtZW50KSBvciBoYXNhdHRyKGVsZW1lbnQsICJ0YWciKQorICAgICMgRklYTUU6IG5vdCBzdXJlIGFib3V0IHRoaXM7CisgICAgIyBpc2luc3RhbmNlKGVsZW1lbnQsIEVsZW1lbnQpIG9yIGxvb2sgZm9yIHRhZy9hdHRyaWIvdGV4dCBhdHRyaWJ1dGVzCisgICAgcmV0dXJuIGhhc2F0dHIoZWxlbWVudCwgJ3RhZycpCiAKICMjCiAjIEVsZW1lbnQgY2xhc3MuICBUaGlzIGNsYXNzIGRlZmluZXMgdGhlIEVsZW1lbnQgaW50ZXJmYWNlLCBhbmQKQEAgLTIwNSw2ICsxODMsOSBAQAogICAgICMgY29uc3RydWN0b3IKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGF0dHJpYiwgZGljdCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImF0dHJpYiBtdXN0IGJlIGRpY3QsIG5vdCAlcyIgJSAoCisgICAgICAgICAgICAgICAgYXR0cmliLl9fY2xhc3NfXy5fX25hbWVfXywpKQogICAgICAgICBhdHRyaWIgPSBhdHRyaWIuY29weSgpCiAgICAgICAgIGF0dHJpYi51cGRhdGUoZXh0cmEpCiAgICAgICAgIHNlbGYudGFnID0gdGFnCkBAIC0yOTgsNyArMjc5LDcgQEAKICAgICAjIEBwYXJhbSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGFkZC4KIAogICAgIGRlZiBhcHBlbmQoc2VsZiwgZWxlbWVudCk6Ci0gICAgICAgICMgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQogICAgICAgICBzZWxmLl9jaGlsZHJlbi5hcHBlbmQoZWxlbWVudCkKIAogICAgICMjCkBAIC0zMDgsOCArMjg5LDggQEAKICAgICAjIEBzaW5jZSAxLjMKIAogICAgIGRlZiBleHRlbmQoc2VsZiwgZWxlbWVudHMpOgotICAgICAgICAjIGZvciBlbGVtZW50IGluIGVsZW1lbnRzOgotICAgICAgICAjICAgICBhc3NlcnQgaXNlbGVtZW50KGVsZW1lbnQpCisgICAgICAgIGZvciBlbGVtZW50IGluIGVsZW1lbnRzOgorICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgc2VsZi5fY2hpbGRyZW4uZXh0ZW5kKGVsZW1lbnRzKQogCiAgICAgIyMKQEAgLTMxOCw5ICsyOTksMTUgQEAKICAgICAjIEBwYXJhbSBpbmRleCBXaGVyZSB0byBpbnNlcnQgdGhlIG5ldyBzdWJlbGVtZW50LgogCiAgICAgZGVmIGluc2VydChzZWxmLCBpbmRleCwgZWxlbWVudCk6Ci0gICAgICAgICMgYXNzZXJ0IGlzZWxlbWVudChlbGVtZW50KQorICAgICAgICBzZWxmLl9hc3NlcnRfaXNfZWxlbWVudChlbGVtZW50KQogICAgICAgICBzZWxmLl9jaGlsZHJlbi5pbnNlcnQoaW5kZXgsIGVsZW1lbnQpCiAKKyAgICBkZWYgX2Fzc2VydF9pc19lbGVtZW50KHNlbGYsIGUpOgorICAgICAgICAjIE5lZWQgdG8gcmVmZXIgdG8gdGhlIGFjdHVhbCBQeXRob24gaW1wbGVtZW50YXRpb24sIG5vdCB0aGUKKyAgICAgICAgIyBzaGFkb3dpbmcgQyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZSwgX0VsZW1lbnQpOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdleHBlY3RlZCBhbiBFbGVtZW50LCBub3QgJXMnICUgdHlwZShlKS5fX25hbWVfXykKKwogICAgICMjCiAgICAgIyBSZW1vdmVzIGEgbWF0Y2hpbmcgc3ViZWxlbWVudC4gIFVubGlrZSB0aGUgPGI+ZmluZDwvYj4gbWV0aG9kcywKICAgICAjIHRoaXMgbWV0aG9kIGNvbXBhcmVzIGVsZW1lbnRzIGJhc2VkIG9uIGlkZW50aXR5LCBub3Qgb24gdGFnCkBAIC04MDksNTkgKzc5NiwzOCBAQAogICAgICMgICAgIE5vbmUgZm9yIG9ubHkgaWYgbm90IFVTLUFTQ0lJIG9yIFVURi04IG9yIFVuaWNvZGUuICBOb25lIGlzIGRlZmF1bHQuCiAKICAgICBkZWYgd3JpdGUoc2VsZiwgZmlsZV9vcl9maWxlbmFtZSwKLSAgICAgICAgICAgICAgIyBrZXl3b3JkIGFyZ3VtZW50cwogICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLAogICAgICAgICAgICAgICB4bWxfZGVjbGFyYXRpb249Tm9uZSwKICAgICAgICAgICAgICAgZGVmYXVsdF9uYW1lc3BhY2U9Tm9uZSwKICAgICAgICAgICAgICAgbWV0aG9kPU5vbmUpOgotICAgICAgICAjIGFzc2VydCBzZWxmLl9yb290IGlzIG5vdCBOb25lCiAgICAgICAgIGlmIG5vdCBtZXRob2Q6CiAgICAgICAgICAgICBtZXRob2QgPSAieG1sIgogICAgICAgICBlbGlmIG1ldGhvZCBub3QgaW4gX3NlcmlhbGl6ZToKLSAgICAgICAgICAgICMgRklYTUU6IHJhaXNlIGFuIEltcG9ydEVycm9yIGZvciBjMTRuIGlmIEVsZW1lbnRDMTROIGlzIG1pc3Npbmc/CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bmtub3duIG1ldGhvZCAlciIgJSBtZXRob2QpCiAgICAgICAgIGlmIG5vdCBlbmNvZGluZzoKICAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAiYzE0biI6CiAgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTgiCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGVuY29kaW5nID0gInVzLWFzY2lpIgotICAgICAgICBlbGlmIGVuY29kaW5nID09IHN0cjogICMgbHhtbC5ldHJlZSBjb21wYXRpYmlsaXR5LgotICAgICAgICAgICAgZW5jb2RpbmcgPSAidW5pY29kZSIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGVuY29kaW5nID0gZW5jb2RpbmcubG93ZXIoKQotICAgICAgICBpZiBoYXNhdHRyKGZpbGVfb3JfZmlsZW5hbWUsICJ3cml0ZSIpOgotICAgICAgICAgICAgZmlsZSA9IGZpbGVfb3JfZmlsZW5hbWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGVuY29kaW5nICE9ICJ1bmljb2RlIjoKLSAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlX29yX2ZpbGVuYW1lLCAid2IiKQorICAgICAgICB3aXRoIF9nZXRfd3JpdGVyKGZpbGVfb3JfZmlsZW5hbWUsIGVuY29kaW5nKSBhcyB3cml0ZToKKyAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAieG1sIiBhbmQgKHhtbF9kZWNsYXJhdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICAoeG1sX2RlY2xhcmF0aW9uIGlzIE5vbmUgYW5kCisgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyBub3QgaW4gKCJ1dGYtOCIsICJ1cy1hc2NpaSIsICJ1bmljb2RlIikpKToKKyAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGVuY29kaW5nCisgICAgICAgICAgICAgICAgaWYgZW5jb2RpbmcgPT0gInVuaWNvZGUiOgorICAgICAgICAgICAgICAgICAgICAjIFJldHJpZXZlIHRoZSBkZWZhdWx0IGVuY29kaW5nIGZvciB0aGUgeG1sIGRlY2xhcmF0aW9uCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoKQorICAgICAgICAgICAgICAgIHdyaXRlKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/PlxuIiAlICgKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZWRfZW5jb2RpbmcsKSkKKyAgICAgICAgICAgIGlmIG1ldGhvZCA9PSAidGV4dCI6CisgICAgICAgICAgICAgICAgX3NlcmlhbGl6ZV90ZXh0KHdyaXRlLCBzZWxmLl9yb290KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmaWxlID0gb3BlbihmaWxlX29yX2ZpbGVuYW1lLCAidyIpCi0gICAgICAgIGlmIGVuY29kaW5nICE9ICJ1bmljb2RlIjoKLSAgICAgICAgICAgIGRlZiB3cml0ZSh0ZXh0KToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaWxlLndyaXRlKHRleHQuZW5jb2RlKGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgKFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBfcmFpc2Vfc2VyaWFsaXphdGlvbl9lcnJvcih0ZXh0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgd3JpdGUgPSBmaWxlLndyaXRlCi0gICAgICAgIGlmIG1ldGhvZCA9PSAieG1sIiBhbmQgKHhtbF9kZWNsYXJhdGlvbiBvcgotICAgICAgICAgICAgICAgICh4bWxfZGVjbGFyYXRpb24gaXMgTm9uZSBhbmQKLSAgICAgICAgICAgICAgICAgZW5jb2Rpbmcgbm90IGluICgidXRmLTgiLCAidXMtYXNjaWkiLCAidW5pY29kZSIpKSk6Ci0gICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGVuY29kaW5nCi0gICAgICAgICAgICBpZiBlbmNvZGluZyA9PSAidW5pY29kZSI6Ci0gICAgICAgICAgICAgICAgIyBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBlbmNvZGluZyBmb3IgdGhlIHhtbCBkZWNsYXJhdGlvbgotICAgICAgICAgICAgICAgIGltcG9ydCBsb2NhbGUKLSAgICAgICAgICAgICAgICBkZWNsYXJlZF9lbmNvZGluZyA9IGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCi0gICAgICAgICAgICB3cml0ZSgiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz5cbiIgJSBkZWNsYXJlZF9lbmNvZGluZykKLSAgICAgICAgaWYgbWV0aG9kID09ICJ0ZXh0IjoKLSAgICAgICAgICAgIF9zZXJpYWxpemVfdGV4dCh3cml0ZSwgc2VsZi5fcm9vdCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHFuYW1lcywgbmFtZXNwYWNlcyA9IF9uYW1lc3BhY2VzKHNlbGYuX3Jvb3QsIGRlZmF1bHRfbmFtZXNwYWNlKQotICAgICAgICAgICAgc2VyaWFsaXplID0gX3NlcmlhbGl6ZVttZXRob2RdCi0gICAgICAgICAgICBzZXJpYWxpemUod3JpdGUsIHNlbGYuX3Jvb3QsIHFuYW1lcywgbmFtZXNwYWNlcykKLSAgICAgICAgaWYgZmlsZV9vcl9maWxlbmFtZSBpcyBub3QgZmlsZToKLSAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgIHFuYW1lcywgbmFtZXNwYWNlcyA9IF9uYW1lc3BhY2VzKHNlbGYuX3Jvb3QsIGRlZmF1bHRfbmFtZXNwYWNlKQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZSA9IF9zZXJpYWxpemVbbWV0aG9kXQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZSh3cml0ZSwgc2VsZi5fcm9vdCwgcW5hbWVzLCBuYW1lc3BhY2VzKQogCiAgICAgZGVmIHdyaXRlX2MxNG4oc2VsZiwgZmlsZSk6CiAgICAgICAgICMgbHhtbC5ldHJlZSBjb21wYXRpYmlsaXR5LiAgdXNlIG91dHB1dCBtZXRob2QgaW5zdGVhZApAQCAtODcwLDYgKzgzNiw1OCBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBzZXJpYWxpemF0aW9uIHN1cHBvcnQKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBfZ2V0X3dyaXRlcihmaWxlX29yX2ZpbGVuYW1lLCBlbmNvZGluZyk6CisgICAgIyByZXR1cm5zIHRleHQgd3JpdGUgbWV0aG9kIGFuZCByZWxlYXNlIGFsbCByZXNvdXJzZXMgYWZ0ZXIgdXNpbmcKKyAgICB0cnk6CisgICAgICAgIHdyaXRlID0gZmlsZV9vcl9maWxlbmFtZS53cml0ZQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgIyBmaWxlX29yX2ZpbGVuYW1lIGlzIGEgZmlsZSBuYW1lCisgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKKyAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGUgPSBvcGVuKGZpbGVfb3JfZmlsZW5hbWUsICJ3IiwgZW5jb2Rpbmc9ZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InhtbGNoYXJyZWZyZXBsYWNlIikKKyAgICAgICAgd2l0aCBmaWxlOgorICAgICAgICAgICAgeWllbGQgZmlsZS53cml0ZQorICAgIGVsc2U6CisgICAgICAgICMgZmlsZV9vcl9maWxlbmFtZSBpcyBhIGZpbGUtbGlrZSBvYmplY3QKKyAgICAgICAgIyBlbmNvZGluZyBkZXRlcm1pbmVzIGlmIGl0IGlzIGEgdGV4dCBvciBiaW5hcnkgd3JpdGVyCisgICAgICAgIGlmIGVuY29kaW5nID09ICJ1bmljb2RlIjoKKyAgICAgICAgICAgICMgdXNlIGEgdGV4dCB3cml0ZXIgYXMgaXMKKyAgICAgICAgICAgIHlpZWxkIHdyaXRlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHdyYXAgYSBiaW5hcnkgd3JpdGVyIHdpdGggVGV4dElPV3JhcHBlcgorICAgICAgICAgICAgd2l0aCBjb250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZV9vcl9maWxlbmFtZSwgaW8uQnVmZmVyZWRJT0Jhc2UpOgorICAgICAgICAgICAgICAgICAgICBmaWxlID0gZmlsZV9vcl9maWxlbmFtZQorICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShmaWxlX29yX2ZpbGVuYW1lLCBpby5SYXdJT0Jhc2UpOgorICAgICAgICAgICAgICAgICAgICBmaWxlID0gaW8uQnVmZmVyZWRXcml0ZXIoZmlsZV9vcl9maWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBvcmlnaW5hbCBmaWxlIG9wZW4gd2hlbiB0aGUgQnVmZmVyZWRXcml0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgIyBkZXN0cm95ZWQKKyAgICAgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soZmlsZS5kZXRhY2gpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIHRvIGhhbmRsZSBwYXNzZWQgb2JqZWN0cyB0aGF0IGFyZW4ndCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgIyBJT0Jhc2UgaGllcmFyY2h5LCBidXQganVzdCBoYXZlIGEgd3JpdGUgbWV0aG9kCisgICAgICAgICAgICAgICAgICAgIGZpbGUgPSBpby5CdWZmZXJlZElPQmFzZSgpCisgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGFibGUgPSBsYW1iZGE6IFRydWUKKyAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0ZSA9IHdyaXRlCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGV4dElPV3JhcHBlciB1c2VzIHRoaXMgbWV0aG9kcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgQk9NIChmb3IgVVRGLTE2LCBldGMpIHNob3VsZCBiZSBhZGRlZAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5zZWVrYWJsZSA9IGZpbGVfb3JfZmlsZW5hbWUuc2Vla2FibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUudGVsbCA9IGZpbGVfb3JfZmlsZW5hbWUudGVsbAorICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZmlsZSA9IGlvLlRleHRJT1dyYXBwZXIoZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnM9InhtbGNoYXJyZWZyZXBsYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdsaW5lPSJcbiIpCisgICAgICAgICAgICAgICAgIyBLZWVwIHRoZSBvcmlnaW5hbCBmaWxlIG9wZW4gd2hlbiB0aGUgVGV4dElPV3JhcHBlciBpcworICAgICAgICAgICAgICAgICMgZGVzdHJveWVkCisgICAgICAgICAgICAgICAgc3RhY2suY2FsbGJhY2soZmlsZS5kZXRhY2gpCisgICAgICAgICAgICAgICAgeWllbGQgZmlsZS53cml0ZQorCiBkZWYgX25hbWVzcGFjZXMoZWxlbSwgZGVmYXVsdF9uYW1lc3BhY2U9Tm9uZSk6CiAgICAgIyBpZGVudGlmeSBuYW1lc3BhY2VzIHVzZWQgaW4gdGhpcyB0cmVlCiAKQEAgLTkwOSwxMSArOTI3LDcgQEAKICAgICAgICAgICAgIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHFuYW1lKQogCiAgICAgIyBwb3B1bGF0ZSBxbmFtZSBhbmQgbmFtZXNwYWNlcyB0YWJsZQotICAgIHRyeToKLSAgICAgICAgaXRlcmF0ZSA9IGVsZW0uaXRlcgotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgaXRlcmF0ZSA9IGVsZW0uZ2V0aXRlcmF0b3IgIyBjRVQgY29tcGF0aWJpbGl0eQotICAgIGZvciBlbGVtIGluIGl0ZXJhdGUoKToKKyAgICBmb3IgZWxlbSBpbiBlbGVtLml0ZXIoKToKICAgICAgICAgdGFnID0gZWxlbS50YWcKICAgICAgICAgaWYgaXNpbnN0YW5jZSh0YWcsIFFOYW1lKToKICAgICAgICAgICAgIGlmIHRhZy50ZXh0IG5vdCBpbiBxbmFtZXM6CkBAIC0xMDg1LDYgKzEwOTksOCBAQAogICAgICMgZHVibGluIGNvcmUKICAgICAiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iOiAiZGMiLAogfQorIyBGb3IgdGVzdHMgYW5kIHRyb3VibGVzaG9vdGluZworcmVnaXN0ZXJfbmFtZXNwYWNlLl9uYW1lc3BhY2VfbWFwID0gX25hbWVzcGFjZV9tYXAKIAogZGVmIF9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKHRleHQpOgogICAgIHJhaXNlIFR5cGVFcnJvcigKQEAgLTExNTMsMjIgKzExNjksMTMgQEAKICMgQGRlZnJldHVybiBzdHJpbmcKIAogZGVmIHRvc3RyaW5nKGVsZW1lbnQsIGVuY29kaW5nPU5vbmUsIG1ldGhvZD1Ob25lKToKLSAgICBjbGFzcyBkdW1teToKLSAgICAgICAgcGFzcwotICAgIGRhdGEgPSBbXQotICAgIGZpbGUgPSBkdW1teSgpCi0gICAgZmlsZS53cml0ZSA9IGRhdGEuYXBwZW5kCi0gICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoZmlsZSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCi0gICAgaWYgZW5jb2RpbmcgaW4gKHN0ciwgInVuaWNvZGUiKToKLSAgICAgICAgcmV0dXJuICIiLmpvaW4oZGF0YSkKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gYiIiLmpvaW4oZGF0YSkKKyAgICBzdHJlYW0gPSBpby5TdHJpbmdJTygpIGlmIGVuY29kaW5nID09ICd1bmljb2RlJyBlbHNlIGlvLkJ5dGVzSU8oKQorICAgIEVsZW1lbnRUcmVlKGVsZW1lbnQpLndyaXRlKHN0cmVhbSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCisgICAgcmV0dXJuIHN0cmVhbS5nZXR2YWx1ZSgpCiAKICMjCiAjIEdlbmVyYXRlcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBYTUwgZWxlbWVudCwgaW5jbHVkaW5nIGFsbAotIyBzdWJlbGVtZW50cy4gIElmIGVuY29kaW5nIGlzIEZhbHNlLCB0aGUgc3RyaW5nIGlzIHJldHVybmVkIGFzIGEKLSMgc2VxdWVuY2Ugb2Ygc3RyaW5nIGZyYWdtZW50czsgb3RoZXJ3aXNlIGl0IGlzIGEgc2VxdWVuY2Ugb2YKLSMgYnl0ZXN0cmluZ3MuCisjIHN1YmVsZW1lbnRzLgogIwogIyBAcGFyYW0gZWxlbWVudCBBbiBFbGVtZW50IGluc3RhbmNlLgogIyBAa2V5cGFyYW0gZW5jb2RpbmcgT3B0aW9uYWwgb3V0cHV0IGVuY29kaW5nIChkZWZhdWx0IGlzIFVTLUFTQ0lJKS4KQEAgLTExNzksMTUgKzExODYsMjkgQEAKICMgQGRlZnJldHVybiBzZXF1ZW5jZQogIyBAc2luY2UgMS4zCiAKK2NsYXNzIF9MaXN0RGF0YVN0cmVhbShpby5CdWZmZXJlZElPQmFzZSk6CisgICAgIiIiIEFuIGF1eGlsaWFyeSBzdHJlYW0gYWNjdW11bGF0aW5nIGludG8gYSBsaXN0IHJlZmVyZW5jZQorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsc3QpOgorICAgICAgICBzZWxmLmxzdCA9IGxzdAorCisgICAgZGVmIHdyaXRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHNlZWthYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGIpOgorICAgICAgICBzZWxmLmxzdC5hcHBlbmQoYikKKworICAgIGRlZiB0ZWxsKHNlbGYpOgorICAgICAgICByZXR1cm4gbGVuKHNlbGYubHN0KQorCiBkZWYgdG9zdHJpbmdsaXN0KGVsZW1lbnQsIGVuY29kaW5nPU5vbmUsIG1ldGhvZD1Ob25lKToKLSAgICBjbGFzcyBkdW1teToKLSAgICAgICAgcGFzcwotICAgIGRhdGEgPSBbXQotICAgIGZpbGUgPSBkdW1teSgpCi0gICAgZmlsZS53cml0ZSA9IGRhdGEuYXBwZW5kCi0gICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoZmlsZSwgZW5jb2RpbmcsIG1ldGhvZD1tZXRob2QpCi0gICAgIyBGSVhNRTogbWVyZ2Ugc21hbGwgZnJhZ21lbnRzIGludG8gbGFyZ2VyIHBhcnRzCi0gICAgcmV0dXJuIGRhdGEKKyAgICBsc3QgPSBbXQorICAgIHN0cmVhbSA9IF9MaXN0RGF0YVN0cmVhbShsc3QpCisgICAgRWxlbWVudFRyZWUoZWxlbWVudCkud3JpdGUoc3RyZWFtLCBlbmNvZGluZywgbWV0aG9kPW1ldGhvZCkKKyAgICByZXR1cm4gbHN0CiAKICMjCiAjIFdyaXRlcyBhbiBlbGVtZW50IHRyZWUgb3IgZWxlbWVudCBzdHJ1Y3R1cmUgdG8gc3lzLnN0ZG91dC4gIFRoaXMKQEAgLTE1MDksMjQgKzE1MzAsMzAgQEAKICAgICAgICAgc2VsZi50YXJnZXQgPSBzZWxmLl90YXJnZXQgPSB0YXJnZXQKICAgICAgICAgc2VsZi5fZXJyb3IgPSBleHBhdC5lcnJvcgogICAgICAgICBzZWxmLl9uYW1lcyA9IHt9ICMgbmFtZSBtZW1vIGNhY2hlCi0gICAgICAgICMgY2FsbGJhY2tzCisgICAgICAgICMgbWFpbiBjYWxsYmFja3MKICAgICAgICAgcGFyc2VyLkRlZmF1bHRIYW5kbGVyRXhwYW5kID0gc2VsZi5fZGVmYXVsdAotICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0Ci0gICAgICAgIHBhcnNlci5FbmRFbGVtZW50SGFuZGxlciA9IHNlbGYuX2VuZAotICAgICAgICBwYXJzZXIuQ2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBzZWxmLl9kYXRhCi0gICAgICAgICMgb3B0aW9uYWwgY2FsbGJhY2tzCi0gICAgICAgIHBhcnNlci5Db21tZW50SGFuZGxlciA9IHNlbGYuX2NvbW1lbnQKLSAgICAgICAgcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBzZWxmLl9waQorICAgICAgICBpZiBoYXNhdHRyKHRhcmdldCwgJ3N0YXJ0Jyk6CisgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0CisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnZW5kJyk6CisgICAgICAgICAgICBwYXJzZXIuRW5kRWxlbWVudEhhbmRsZXIgPSBzZWxmLl9lbmQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdkYXRhJyk6CisgICAgICAgICAgICBwYXJzZXIuQ2hhcmFjdGVyRGF0YUhhbmRsZXIgPSB0YXJnZXQuZGF0YQorICAgICAgICAjIG1pc2NlbGxhbmVvdXMgY2FsbGJhY2tzCisgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnY29tbWVudCcpOgorICAgICAgICAgICAgcGFyc2VyLkNvbW1lbnRIYW5kbGVyID0gdGFyZ2V0LmNvbW1lbnQKKyAgICAgICAgaWYgaGFzYXR0cih0YXJnZXQsICdwaScpOgorICAgICAgICAgICAgcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSB0YXJnZXQucGkKICAgICAgICAgIyBsZXQgZXhwYXQgZG8gdGhlIGJ1ZmZlcmluZywgaWYgc3VwcG9ydGVkCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5idWZmZXJfdGV4dCA9IDEKKyAgICAgICAgICAgIHBhcnNlci5idWZmZXJfdGV4dCA9IDEKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICAjIHVzZSBuZXctc3R5bGUgYXR0cmlidXRlIGhhbmRsaW5nLCBpZiBzdXBwb3J0ZWQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5zcGVjaWZpZWRfYXR0cmlidXRlcyA9IDEKLSAgICAgICAgICAgIHBhcnNlci5TdGFydEVsZW1lbnRIYW5kbGVyID0gc2VsZi5fc3RhcnRfbGlzdAorICAgICAgICAgICAgcGFyc2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IDEKKyAgICAgICAgICAgIHBhcnNlci5zcGVjaWZpZWRfYXR0cmlidXRlcyA9IDEKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodGFyZ2V0LCAnc3RhcnQnKToKKyAgICAgICAgICAgICAgICBwYXJzZXIuU3RhcnRFbGVtZW50SGFuZGxlciA9IHNlbGYuX3N0YXJ0X2xpc3QKICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl9kb2N0eXBlID0gTm9uZQpAQCAtMTU3MCw0NCArMTU5NywyOSBAQAogICAgICAgICAgICAgICAgIGF0dHJpYltmaXhuYW1lKGF0dHJpYl9pbltpXSldID0gYXR0cmliX2luW2krMV0KICAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LnN0YXJ0KHRhZywgYXR0cmliKQogCi0gICAgZGVmIF9kYXRhKHNlbGYsIHRleHQpOgotICAgICAgICByZXR1cm4gc2VsZi50YXJnZXQuZGF0YSh0ZXh0KQotCiAgICAgZGVmIF9lbmQoc2VsZiwgdGFnKToKICAgICAgICAgcmV0dXJuIHNlbGYudGFyZ2V0LmVuZChzZWxmLl9maXhuYW1lKHRhZykpCiAKLSAgICBkZWYgX2NvbW1lbnQoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbW1lbnQgPSBzZWxmLnRhcmdldC5jb21tZW50Ci0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBjb21tZW50KGRhdGEpCi0KLSAgICBkZWYgX3BpKHNlbGYsIHRhcmdldCwgZGF0YSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBpID0gc2VsZi50YXJnZXQucGkKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHBpKHRhcmdldCwgZGF0YSkKLQogICAgIGRlZiBfZGVmYXVsdChzZWxmLCB0ZXh0KToKICAgICAgICAgcHJlZml4ID0gdGV4dFs6MV0KICAgICAgICAgaWYgcHJlZml4ID09ICImIjoKICAgICAgICAgICAgICMgZGVhbCB3aXRoIHVuZGVmaW5lZCBlbnRpdGllcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmRhdGEoc2VsZi5lbnRpdHlbdGV4dFsxOi0xXV0pCisgICAgICAgICAgICAgICAgZGF0YV9oYW5kbGVyID0gc2VsZi50YXJnZXQuZGF0YQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGRhdGFfaGFuZGxlcihzZWxmLmVudGl0eVt0ZXh0WzE6LTFdXSkKICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAgICBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAogICAgICAgICAgICAgICAgIGVyciA9IGV4cGF0LmVycm9yKAogICAgICAgICAgICAgICAgICAgICAidW5kZWZpbmVkIGVudGl0eSAlczogbGluZSAlZCwgY29sdW1uICVkIiAlCi0gICAgICAgICAgICAgICAgICAgICh0ZXh0LCBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIpCisgICAgICAgICAgICAgICAgICAgICh0ZXh0LCBzZWxmLnBhcnNlci5FcnJvckxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgZXJyLmNvZGUgPSAxMSAjIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZCi0gICAgICAgICAgICAgICAgZXJyLmxpbmVubyA9IHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIKLSAgICAgICAgICAgICAgICBlcnIub2Zmc2V0ID0gc2VsZi5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCisgICAgICAgICAgICAgICAgZXJyLmxpbmVubyA9IHNlbGYucGFyc2VyLkVycm9yTGluZU51bWJlcgorICAgICAgICAgICAgICAgIGVyci5vZmZzZXQgPSBzZWxmLnBhcnNlci5FcnJvckNvbHVtbk51bWJlcgogICAgICAgICAgICAgICAgIHJhaXNlIGVycgogICAgICAgICBlbGlmIHByZWZpeCA9PSAiPCIgYW5kIHRleHRbOjldID09ICI8IURPQ1RZUEUiOgogICAgICAgICAgICAgc2VsZi5fZG9jdHlwZSA9IFtdICMgaW5zaWRlIGEgZG9jdHlwZSBkZWNsYXJhdGlvbgpAQCAtMTYyNSwxNiArMTYzNywxNiBAQAogICAgICAgICAgICAgICAgIHR5cGUgPSBzZWxmLl9kb2N0eXBlWzFdCiAgICAgICAgICAgICAgICAgaWYgdHlwZSA9PSAiUFVCTElDIiBhbmQgbiA9PSA0OgogICAgICAgICAgICAgICAgICAgICBuYW1lLCB0eXBlLCBwdWJpZCwgc3lzdGVtID0gc2VsZi5fZG9jdHlwZQorICAgICAgICAgICAgICAgICAgICBpZiBwdWJpZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmlkID0gcHViaWRbMTotMV0KICAgICAgICAgICAgICAgICBlbGlmIHR5cGUgPT0gIlNZU1RFTSIgYW5kIG4gPT0gMzoKICAgICAgICAgICAgICAgICAgICAgbmFtZSwgdHlwZSwgc3lzdGVtID0gc2VsZi5fZG9jdHlwZQogICAgICAgICAgICAgICAgICAgICBwdWJpZCA9IE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICAgICBpZiBwdWJpZDoKLSAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBwdWJpZFsxOi0xXQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi50YXJnZXQsICJkb2N0eXBlIik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmRvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYuZG9jdHlwZSBpcyBub3Qgc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlOgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5kb2N0eXBlICE9IHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZToKICAgICAgICAgICAgICAgICAgICAgIyB3YXJuIGFib3V0IGRlcHJlY2F0ZWQgY2FsbAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb2N0eXBlKG5hbWUsIHB1YmlkLCBzeXN0ZW1bMTotMV0pCkBAIC0xNjY1LDcgKzE2NzcsNyBAQAogCiAgICAgZGVmIGZlZWQoc2VsZiwgZGF0YSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5QYXJzZShkYXRhLCAwKQorICAgICAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2UoZGF0YSwgMCkKICAgICAgICAgZXhjZXB0IHNlbGYuX2Vycm9yIGFzIHY6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZWVycm9yKHYpCiAKQEAgLTE2NzcsMTIgKzE2ODksMTAwIEBACiAKICAgICBkZWYgY2xvc2Uoc2VsZik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3BhcnNlci5QYXJzZSgiIiwgMSkgIyBlbmQgb2YgZGF0YQorICAgICAgICAgICAgc2VsZi5wYXJzZXIuUGFyc2UoIiIsIDEpICMgZW5kIG9mIGRhdGEKICAgICAgICAgZXhjZXB0IHNlbGYuX2Vycm9yIGFzIHY6CiAgICAgICAgICAgICBzZWxmLl9yYWlzZWVycm9yKHYpCi0gICAgICAgIHRyZWUgPSBzZWxmLnRhcmdldC5jbG9zZSgpCi0gICAgICAgIGRlbCBzZWxmLnRhcmdldCwgc2VsZi5fcGFyc2VyICMgZ2V0IHJpZCBvZiBjaXJjdWxhciByZWZlcmVuY2VzCi0gICAgICAgIHJldHVybiB0cmVlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNsb3NlX2hhbmRsZXIgPSBzZWxmLnRhcmdldC5jbG9zZQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gY2xvc2VfaGFuZGxlcigpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAjIGdldCByaWQgb2YgY2lyY3VsYXIgcmVmZXJlbmNlcworICAgICAgICAgICAgZGVsIHNlbGYucGFyc2VyLCBzZWxmLl9wYXJzZXIKKyAgICAgICAgICAgIGRlbCBzZWxmLnRhcmdldCwgc2VsZi5fdGFyZ2V0CisKKworIyBJbXBvcnQgdGhlIEMgYWNjZWxlcmF0b3JzCit0cnk6CisgICAgIyBFbGVtZW50LCBTdWJFbGVtZW50LCBQYXJzZUVycm9yLCBUcmVlQnVpbGRlciwgWE1MUGFyc2VyCisgICAgZnJvbSBfZWxlbWVudHRyZWUgaW1wb3J0ICoKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgICMgT3ZlcndyaXRlICdFbGVtZW50VHJlZS5wYXJzZScgYW5kICdpdGVycGFyc2UnIHRvIHVzZSB0aGUgQyBYTUxQYXJzZXIKKworICAgIGNsYXNzIEVsZW1lbnRUcmVlKEVsZW1lbnRUcmVlKToKKyAgICAgICAgZGVmIHBhcnNlKHNlbGYsIHNvdXJjZSwgcGFyc2VyPU5vbmUpOgorICAgICAgICAgICAgY2xvc2Vfc291cmNlID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSBvcGVuKHNvdXJjZSwgJ3JiJykKKyAgICAgICAgICAgICAgICBjbG9zZV9zb3VyY2UgPSBUcnVlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgcGFyc2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHNvdXJjZS5yZWFkKDY1NTM2KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlciA9IFhNTFBhcnNlcigpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuX3BhcnNlKHNvdXJjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcm9vdAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBpZiBjbG9zZV9zb3VyY2U6CisgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5jbG9zZSgpCisKKyAgICBjbGFzcyBpdGVycGFyc2U6CisgICAgICAgIHJvb3QgPSBOb25lCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlLCBldmVudHM9Tm9uZSk6CisgICAgICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGZpbGUsICdyZWFkJyk6CisgICAgICAgICAgICAgICAgZmlsZSA9IG9wZW4oZmlsZSwgJ3JiJykKKyAgICAgICAgICAgICAgICBzZWxmLl9jbG9zZV9maWxlID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGUKKyAgICAgICAgICAgIHNlbGYuX2V2ZW50cyA9IFtdCisgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKKyAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gTm9uZQorICAgICAgICAgICAgc2VsZi5yb290ID0gc2VsZi5fcm9vdCA9IE5vbmUKKyAgICAgICAgICAgIGIgPSBUcmVlQnVpbGRlcigpCisgICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBYTUxQYXJzZXIoYikKKyAgICAgICAgICAgIHNlbGYuX3BhcnNlci5fc2V0ZXZlbnRzKHNlbGYuX2V2ZW50cywgZXZlbnRzKQorCisgICAgICAgIGRlZiBfX25leHRfXyhzZWxmKToKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpdGVtID0gc2VsZi5fZXZlbnRzW3NlbGYuX2luZGV4XQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCArPSAxCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtCisgICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgZSA9IHNlbGYuX2Vycm9yCisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yID0gTm9uZQorICAgICAgICAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAgICAgICAgaWYgc2VsZi5fcGFyc2VyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3QKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2xvc2VfZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisgICAgICAgICAgICAgICAgIyBsb2FkIGV2ZW50IGJ1ZmZlcgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9ldmVudHNbOl0KKyAgICAgICAgICAgICAgICBzZWxmLl9pbmRleCA9IDAKKyAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fZmlsZS5yZWFkKDE2Mzg0KQorICAgICAgICAgICAgICAgIGlmIGRhdGE6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5mZWVkKGRhdGEpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvciA9IGV4YworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Jvb3QgPSBzZWxmLl9wYXJzZXIuY2xvc2UoKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBOb25lCisKKyAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogIyBjb21wYXRpYmlsaXR5CiBYTUxUcmVlQnVpbGRlciA9IFhNTFBhcnNlcgpkaWZmIC0tZ2l0IGEvTGliL3htbC9ldHJlZS9jRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL2NFbGVtZW50VHJlZS5weQppbmRleCBhNmYxMjdhLi4zNjhlNjc5IDEwMDY0NAotLS0gYS9MaWIveG1sL2V0cmVlL2NFbGVtZW50VHJlZS5weQorKysgYi9MaWIveG1sL2V0cmVlL2NFbGVtZW50VHJlZS5weQpAQCAtMSwzICsxLDMgQEAKLSMgV3JhcHBlciBtb2R1bGUgZm9yIF9lbGVtZW50dHJlZQorIyBEZXByZWNhdGVkIGFsaWFzIGZvciB4bWwuZXRyZWUuRWxlbWVudFRyZWUKIAotZnJvbSBfZWxlbWVudHRyZWUgaW1wb3J0ICoKK2Zyb20geG1sLmV0cmVlLkVsZW1lbnRUcmVlIGltcG9ydCAqCmRpZmYgLS1naXQgYS9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkgYi9MaWIveG1sL3BhcnNlcnMvZXhwYXQucHkKaW5kZXggYTgwNWI4Mi4uYmNiZTlmYiAxMDA2NDQKLS0tIGEvTGliL3htbC9wYXJzZXJzL2V4cGF0LnB5CisrKyBiL0xpYi94bWwvcGFyc2Vycy9leHBhdC5weQpAQCAtMSw2ICsxLDQgQEAKICIiIkludGVyZmFjZSB0byB0aGUgRXhwYXQgbm9uLXZhbGlkYXRpbmcgWE1MIHBhcnNlci4iIiIKLV9fdmVyc2lvbl9fID0gJyRSZXZpc2lvbiQnCi0KIGltcG9ydCBzeXMKIAogZnJvbSBweWV4cGF0IGltcG9ydCAqCmRpZmYgLS1naXQgYS9MaWIveG1scnBjL2NsaWVudC5weSBiL0xpYi94bWxycGMvY2xpZW50LnB5CmluZGV4IDk3ZDVhYWMuLmE3NzllNjYgMTAwNjQ0Ci0tLSBhL0xpYi94bWxycGMvY2xpZW50LnB5CisrKyBiL0xpYi94bWxycGMvY2xpZW50LnB5CkBAIC0xMjgsOCArMTI4LDExIEBACiAiIiIKIAogaW1wb3J0IGJhc2U2NAoraW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgaHR0cC5jbGllbnQKK2ltcG9ydCB1cmxsaWIucGFyc2UKIGZyb20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgZXJybm8KQEAgLTE0MiwxNyArMTQ1LDEzIEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEludGVybmFsIHN0dWZmCiAKLXRyeToKLSAgICBpbXBvcnQgZGF0ZXRpbWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBkYXRldGltZSA9IE5vbmUKLQogZGVmIGVzY2FwZShzKToKICAgICBzID0gcy5yZXBsYWNlKCImIiwgIiZhbXA7IikKICAgICBzID0gcy5yZXBsYWNlKCI8IiwgIiZsdDsiKQogICAgIHJldHVybiBzLnJlcGxhY2UoIj4iLCAiJmd0OyIsKQogCi1fX3ZlcnNpb25fXyA9ICIxLjAuMSIKKyMgdXNlZCBpbiBVc2VyLUFnZW50IGhlYWRlciBzZW50CitfX3ZlcnNpb25fXyA9IHN5cy52ZXJzaW9uWzozXQogCiAjIHhtbHJwYyBpbnRlZ2VyIGxpbWl0cwogTUFYSU5UID0gIDIqKjMxLTEKQEAgLTI1MiwyMSArMjUxLDMzIEBACiAjIFdyYXBwZXIgZm9yIFhNTC1SUEMgRGF0ZVRpbWUgdmFsdWVzLiAgVGhpcyBjb252ZXJ0cyBhIHRpbWUgdmFsdWUgdG8KICMgdGhlIGZvcm1hdCB1c2VkIGJ5IFhNTC1SUEMuCiAjIDxwPgotIyBUaGUgdmFsdWUgY2FuIGJlIGdpdmVuIGFzIGEgc3RyaW5nIGluIHRoZSBmb3JtYXQKLSMgInl5eXltbWRkVGhoOm1tOnNzIiwgYXMgYSA5LWl0ZW0gdGltZSB0dXBsZSAoYXMgcmV0dXJuZWQgYnkKKyMgVGhlIHZhbHVlIGNhbiBiZSBnaXZlbiBhcyBhIGRhdGV0aW1lIG9iamVjdCwgYXMgYSBzdHJpbmcgaW4gdGhlCisjIGZvcm1hdCAieXl5eW1tZGRUaGg6bW06c3MiLCBhcyBhIDktaXRlbSB0aW1lIHR1cGxlIChhcyByZXR1cm5lZCBieQogIyB0aW1lLmxvY2FsdGltZSgpKSwgb3IgYW4gaW50ZWdlciB2YWx1ZSAoYXMgcmV0dXJuZWQgYnkgdGltZS50aW1lKCkpLgogIyBUaGUgd3JhcHBlciB1c2VzIHRpbWUubG9jYWx0aW1lKCkgdG8gY29udmVydCBhbiBpbnRlZ2VyIHRvIGEgdGltZQogIyB0dXBsZS4KICMKLSMgQHBhcmFtIHZhbHVlIFRoZSB0aW1lLCBnaXZlbiBhcyBhbiBJU08gODYwMSBzdHJpbmcsIGEgdGltZQotIyAgICAgICAgICAgICAgdHVwbGUsIG9yIGEgaW50ZWdlciB0aW1lIHZhbHVlLgorIyBAcGFyYW0gdmFsdWUgVGhlIHRpbWUsIGdpdmVuIGFzIGEgZGF0ZXRpbWUgb2JqZWN0LCBhbiBJU08gODYwMSBzdHJpbmcsCisjICAgICAgICAgICAgICBhIHRpbWUgdHVwbGUsIG9yIGFuIGludGVnZXIgdGltZSB2YWx1ZS4KKworCisjIElzc3VlICMxMzMwNTogZGlmZmVyZW50IGZvcm1hdCBjb2RlcyBhY3Jvc3MgcGxhdGZvcm1zCitfZGF5MCA9IGRhdGV0aW1lKDEsIDEsIDEpCitpZiBfZGF5MC5zdHJmdGltZSgnJVknKSA9PSAnMDAwMSc6ICAgICAgIyBNYWMgT1MgWAorICAgIGRlZiBfaXNvODYwMV9mb3JtYXQodmFsdWUpOgorICAgICAgICByZXR1cm4gdmFsdWUuc3RyZnRpbWUoIiVZJW0lZFQlSDolTTolUyIpCitlbGlmIF9kYXkwLnN0cmZ0aW1lKCclNFknKSA9PSAnMDAwMSc6ICAgIyBMaW51eAorICAgIGRlZiBfaXNvODYwMV9mb3JtYXQodmFsdWUpOgorICAgICAgICByZXR1cm4gdmFsdWUuc3RyZnRpbWUoIiU0WSVtJWRUJUg6JU06JVMiKQorZWxzZToKKyAgICBkZWYgX2lzbzg2MDFfZm9ybWF0KHZhbHVlKToKKyAgICAgICAgcmV0dXJuIHZhbHVlLnN0cmZ0aW1lKCIlWSVtJWRUJUg6JU06JVMiKS56ZmlsbCgxNykKK2RlbCBfZGF5MAorCiAKIGRlZiBfc3RyZnRpbWUodmFsdWUpOgotICAgIGlmIGRhdGV0aW1lOgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkYXRldGltZS5kYXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gIiUwNGQlMDJkJTAyZFQlMDJkOiUwMmQ6JTAyZCIgJSAoCi0gICAgICAgICAgICAgICAgdmFsdWUueWVhciwgdmFsdWUubW9udGgsIHZhbHVlLmRheSwKLSAgICAgICAgICAgICAgICB2YWx1ZS5ob3VyLCB2YWx1ZS5taW51dGUsIHZhbHVlLnNlY29uZCkKKyAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBkYXRldGltZSk6CisgICAgICAgIHJldHVybiBfaXNvODYwMV9mb3JtYXQodmFsdWUpCiAKICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgKHR1cGxlLCB0aW1lLnN0cnVjdF90aW1lKSk6CiAgICAgICAgIGlmIHZhbHVlID09IDA6CkBAIC0yOTEsOSArMzAyLDkgQEAKICAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgRGF0ZVRpbWUpOgogICAgICAgICAgICAgcyA9IHNlbGYudmFsdWUKICAgICAgICAgICAgIG8gPSBvdGhlci52YWx1ZQotICAgICAgICBlbGlmIGRhdGV0aW1lIGFuZCBpc2luc3RhbmNlKG90aGVyLCBkYXRldGltZS5kYXRldGltZSk6CisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgZGF0ZXRpbWUpOgogICAgICAgICAgICAgcyA9IHNlbGYudmFsdWUKLSAgICAgICAgICAgIG8gPSBvdGhlci5zdHJmdGltZSgiJVklbSVkVCVIOiVNOiVTIikKKyAgICAgICAgICAgIG8gPSBfaXNvODYwMV9mb3JtYXQob3RoZXIpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvdGhlciwgc3RyKToKICAgICAgICAgICAgIHMgPSBzZWxmLnZhbHVlCiAgICAgICAgICAgICBvID0gb3RoZXIKQEAgLTM2MSw4ICszNzIsNyBAQAogICAgIHJldHVybiB2YWx1ZQogCiBkZWYgX2RhdGV0aW1lX3R5cGUoZGF0YSk6Ci0gICAgdCA9IHRpbWUuc3RycHRpbWUoZGF0YSwgIiVZJW0lZFQlSDolTTolUyIpCi0gICAgcmV0dXJuIGRhdGV0aW1lLmRhdGV0aW1lKCp0dXBsZSh0KVs6Nl0pCisgICAgcmV0dXJuIGRhdGV0aW1lLnN0cnB0aW1lKGRhdGEsICIlWSVtJWRUJUg6JU06JVMiKQogCiAjIwogIyBXcmFwcGVyIGZvciBiaW5hcnkgZGF0YS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gdHJhbnNwb3J0IGFueSBraW5kCkBAIC0zNzcsOCArMzg3LDggQEAKICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgZGF0YSA9IGIiIgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgYnl0ZXMpOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgYnl0ZXMsIG5vdCAlcyIgJQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgKGJ5dGVzLCBieXRlYXJyYXkpKToKKyAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIGJ5dGVzIG9yIGJ5dGVhcnJheSwgbm90ICVzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuX19jbGFzc19fLl9fbmFtZV9fKQogICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKGRhdGEpICAjIE1ha2UgYSBjb3B5IG9mIHRoZSBieXRlcyEKICAgICAgICAgc2VsZi5kYXRhID0gZGF0YQpAQCAtNDA4LDcgKzQxOCw2IEBACiAgICAgICAgIG91dC53cml0ZSgiPHZhbHVlPjxiYXNlNjQ+XG4iKQogICAgICAgICBlbmNvZGVkID0gYmFzZTY0LmVuY29kZWJ5dGVzKHNlbGYuZGF0YSkKICAgICAgICAgb3V0LndyaXRlKGVuY29kZWQuZGVjb2RlKCdhc2NpaScpKQotICAgICAgICBvdXQud3JpdGUoJ1xuJykKICAgICAgICAgb3V0LndyaXRlKCI8L2Jhc2U2ND48L3ZhbHVlPlxuIikKIAogZGVmIF9iaW5hcnkoZGF0YSk6CkBAIC01MjIsMTUgKzUzMSw2IEBACiAgICAgICAgIHdyaXRlKCI8dmFsdWU+PG5pbC8+PC92YWx1ZT4iKQogICAgIGRpc3BhdGNoW3R5cGUoTm9uZSldID0gZHVtcF9uaWwKIAotICAgIGRlZiBkdW1wX2ludChzZWxmLCB2YWx1ZSwgd3JpdGUpOgotICAgICAgICAjIGluIGNhc2UgaW50cyBhcmUgPiAzMiBiaXRzCi0gICAgICAgIGlmIHZhbHVlID4gTUFYSU5UIG9yIHZhbHVlIDwgTUlOSU5UOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiaW50IGV4Y2VlZHMgWE1MLVJQQyBsaW1pdHMiKQotICAgICAgICB3cml0ZSgiPHZhbHVlPjxpbnQ+IikKLSAgICAgICAgd3JpdGUoc3RyKHZhbHVlKSkKLSAgICAgICAgd3JpdGUoIjwvaW50PjwvdmFsdWU+XG4iKQotICAgICNkaXNwYXRjaFtpbnRdID0gZHVtcF9pbnQKLQogICAgIGRlZiBkdW1wX2Jvb2woc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgd3JpdGUoIjx2YWx1ZT48Ym9vbGVhbj4iKQogICAgICAgICB3cml0ZSh2YWx1ZSBhbmQgIjEiIG9yICIwIikKQEAgLTU0NSw2ICs1NDUsOSBAQAogICAgICAgICB3cml0ZSgiPC9pbnQ+PC92YWx1ZT5cbiIpCiAgICAgZGlzcGF0Y2hbaW50XSA9IGR1bXBfbG9uZwogCisgICAgIyBiYWNrd2FyZCBjb21wYXRpYmxlCisgICAgZHVtcF9pbnQgPSBkdW1wX2xvbmcKKwogICAgIGRlZiBkdW1wX2RvdWJsZShzZWxmLCB2YWx1ZSwgd3JpdGUpOgogICAgICAgICB3cml0ZSgiPHZhbHVlPjxkb3VibGU+IikKICAgICAgICAgd3JpdGUocmVwcih2YWx1ZSkpCkBAIC01NTcsNiArNTYwLDE0IEBACiAgICAgICAgIHdyaXRlKCI8L3N0cmluZz48L3ZhbHVlPlxuIikKICAgICBkaXNwYXRjaFtzdHJdID0gZHVtcF91bmljb2RlCiAKKyAgICBkZWYgZHVtcF9ieXRlcyhzZWxmLCB2YWx1ZSwgd3JpdGUpOgorICAgICAgICB3cml0ZSgiPHZhbHVlPjxiYXNlNjQ+XG4iKQorICAgICAgICBlbmNvZGVkID0gYmFzZTY0LmVuY29kZWJ5dGVzKHZhbHVlKQorICAgICAgICB3cml0ZShlbmNvZGVkLmRlY29kZSgnYXNjaWknKSkKKyAgICAgICAgd3JpdGUoIjwvYmFzZTY0PjwvdmFsdWU+XG4iKQorICAgIGRpc3BhdGNoW2J5dGVzXSA9IGR1bXBfYnl0ZXMKKyAgICBkaXNwYXRjaFtieXRlYXJyYXldID0gZHVtcF9ieXRlcworCiAgICAgZGVmIGR1bXBfYXJyYXkoc2VsZiwgdmFsdWUsIHdyaXRlKToKICAgICAgICAgaSA9IGlkKHZhbHVlKQogICAgICAgICBpZiBpIGluIHNlbGYubWVtbzoKQEAgLTU4OSwxMiArNjAwLDExIEBACiAgICAgICAgIGRlbCBzZWxmLm1lbW9baV0KICAgICBkaXNwYXRjaFtkaWN0XSA9IGR1bXBfc3RydWN0CiAKLSAgICBpZiBkYXRldGltZToKLSAgICAgICAgZGVmIGR1bXBfZGF0ZXRpbWUoc2VsZiwgdmFsdWUsIHdyaXRlKToKLSAgICAgICAgICAgIHdyaXRlKCI8dmFsdWU+PGRhdGVUaW1lLmlzbzg2MDE+IikKLSAgICAgICAgICAgIHdyaXRlKF9zdHJmdGltZSh2YWx1ZSkpCi0gICAgICAgICAgICB3cml0ZSgiPC9kYXRlVGltZS5pc284NjAxPjwvdmFsdWU+XG4iKQotICAgICAgICBkaXNwYXRjaFtkYXRldGltZS5kYXRldGltZV0gPSBkdW1wX2RhdGV0aW1lCisgICAgZGVmIGR1bXBfZGF0ZXRpbWUoc2VsZiwgdmFsdWUsIHdyaXRlKToKKyAgICAgICAgd3JpdGUoIjx2YWx1ZT48ZGF0ZVRpbWUuaXNvODYwMT4iKQorICAgICAgICB3cml0ZShfc3RyZnRpbWUodmFsdWUpKQorICAgICAgICB3cml0ZSgiPC9kYXRlVGltZS5pc284NjAxPjwvdmFsdWU+XG4iKQorICAgIGRpc3BhdGNoW2RhdGV0aW1lXSA9IGR1bXBfZGF0ZXRpbWUKIAogICAgIGRlZiBkdW1wX2luc3RhbmNlKHNlbGYsIHZhbHVlLCB3cml0ZSk6CiAgICAgICAgICMgY2hlY2sgZm9yIHNwZWNpYWwgd3JhcHBlcnMKQEAgLTYyOCw3ICs2MzgsNyBAQAogICAgICMgYW5kIGFnYWluLCBpZiB5b3UgZG9uJ3QgdW5kZXJzdGFuZCB3aGF0J3MgZ29pbmcgb24gaW4gaGVyZSwKICAgICAjIHRoYXQncyBwZXJmZWN0bHkgb2suCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlX2RhdGV0aW1lPUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgIHNlbGYuX3R5cGUgPSBOb25lCiAgICAgICAgIHNlbGYuX3N0YWNrID0gW10KICAgICAgICAgc2VsZi5fbWFya3MgPSBbXQpAQCAtNjM2LDkgKzY0Niw4IEBACiAgICAgICAgIHNlbGYuX21ldGhvZG5hbWUgPSBOb25lCiAgICAgICAgIHNlbGYuX2VuY29kaW5nID0gInV0Zi04IgogICAgICAgICBzZWxmLmFwcGVuZCA9IHNlbGYuX3N0YWNrLmFwcGVuZAotICAgICAgICBzZWxmLl91c2VfZGF0ZXRpbWUgPSB1c2VfZGF0ZXRpbWUKLSAgICAgICAgaWYgdXNlX2RhdGV0aW1lIGFuZCBub3QgZGF0ZXRpbWU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0aGUgZGF0ZXRpbWUgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUiKQorICAgICAgICBzZWxmLl91c2VfZGF0ZXRpbWUgPSB1c2VfYnVpbHRpbl90eXBlcyBvciB1c2VfZGF0ZXRpbWUKKyAgICAgICAgc2VsZi5fdXNlX2J5dGVzID0gdXNlX2J1aWx0aW5fdHlwZXMKIAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAgIyByZXR1cm4gcmVzcG9uc2UgdHVwbGUgYW5kIHRhcmdldCBtZXRob2QKQEAgLTc1MCw2ICs3NTksOCBAQAogICAgIGRlZiBlbmRfYmFzZTY0KHNlbGYsIGRhdGEpOgogICAgICAgICB2YWx1ZSA9IEJpbmFyeSgpCiAgICAgICAgIHZhbHVlLmRlY29kZShkYXRhLmVuY29kZSgiYXNjaWkiKSkKKyAgICAgICAgaWYgc2VsZi5fdXNlX2J5dGVzOgorICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5kYXRhCiAgICAgICAgIHNlbGYuYXBwZW5kKHZhbHVlKQogICAgICAgICBzZWxmLl92YWx1ZSA9IDAKICAgICBkaXNwYXRjaFsiYmFzZTY0Il0gPSBlbmRfYmFzZTY0CkBAIC04NjEsMjMgKzg3MiwyNiBAQAogIwogIyByZXR1cm4gQSAocGFyc2VyLCB1bm1hcnNoYWxsZXIpIHR1cGxlLgogCi1kZWYgZ2V0cGFyc2VyKHVzZV9kYXRldGltZT1GYWxzZSk6CitkZWYgZ2V0cGFyc2VyKHVzZV9kYXRldGltZT1GYWxzZSwgdXNlX2J1aWx0aW5fdHlwZXM9RmFsc2UpOgogICAgICIiImdldHBhcnNlcigpIC0+IHBhcnNlciwgdW5tYXJzaGFsbGVyCiAKICAgICBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIHBhcnNlciwgYW5kIGF0dGFjaCBpdAogICAgIHRvIGFuIHVubWFyc2hhbGxpbmcgb2JqZWN0LiAgUmV0dXJuIGJvdGggb2JqZWN0cy4KICAgICAiIiIKLSAgICBpZiB1c2VfZGF0ZXRpbWUgYW5kIG5vdCBkYXRldGltZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigidGhlIGRhdGV0aW1lIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIikKICAgICBpZiBGYXN0UGFyc2VyIGFuZCBGYXN0VW5tYXJzaGFsbGVyOgotICAgICAgICBpZiB1c2VfZGF0ZXRpbWU6CisgICAgICAgIGlmIHVzZV9idWlsdGluX3R5cGVzOgogICAgICAgICAgICAgbWtkYXRldGltZSA9IF9kYXRldGltZV90eXBlCisgICAgICAgICAgICBta2J5dGVzID0gYmFzZTY0LmRlY29kZWJ5dGVzCisgICAgICAgIGVsaWYgdXNlX2RhdGV0aW1lOgorICAgICAgICAgICAgbWtkYXRldGltZSA9IF9kYXRldGltZV90eXBlCisgICAgICAgICAgICBta2J5dGVzID0gX2JpbmFyeQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWtkYXRldGltZSA9IF9kYXRldGltZQotICAgICAgICB0YXJnZXQgPSBGYXN0VW5tYXJzaGFsbGVyKFRydWUsIEZhbHNlLCBfYmluYXJ5LCBta2RhdGV0aW1lLCBGYXVsdCkKKyAgICAgICAgICAgIG1rYnl0ZXMgPSBfYmluYXJ5CisgICAgICAgIHRhcmdldCA9IEZhc3RVbm1hcnNoYWxsZXIoVHJ1ZSwgRmFsc2UsIG1rYnl0ZXMsIG1rZGF0ZXRpbWUsIEZhdWx0KQogICAgICAgICBwYXJzZXIgPSBGYXN0UGFyc2VyKHRhcmdldCkKICAgICBlbHNlOgotICAgICAgICB0YXJnZXQgPSBVbm1hcnNoYWxsZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSkKKyAgICAgICAgdGFyZ2V0ID0gVW5tYXJzaGFsbGVyKHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUsIHVzZV9idWlsdGluX3R5cGVzPXVzZV9idWlsdGluX3R5cGVzKQogICAgICAgICBpZiBGYXN0UGFyc2VyOgogICAgICAgICAgICAgcGFyc2VyID0gRmFzdFBhcnNlcih0YXJnZXQpCiAgICAgICAgIGVsc2U6CkBAIC05MTUsNyArOTI5LDcgQEAKIAogICAgICAgICBlbmNvZGluZzogdGhlIHBhY2tldCBlbmNvZGluZyAoZGVmYXVsdCBpcyBVVEYtOCkKIAotICAgIEFsbCA4LWJpdCBzdHJpbmdzIGluIHRoZSBkYXRhIHN0cnVjdHVyZSBhcmUgYXNzdW1lZCB0byB1c2UgdGhlCisgICAgQWxsIGJ5dGUgc3RyaW5ncyBpbiB0aGUgZGF0YSBzdHJ1Y3R1cmUgYXJlIGFzc3VtZWQgdG8gdXNlIHRoZQogICAgIHBhY2tldCBlbmNvZGluZy4gIFVuaWNvZGUgc3RyaW5ncyBhcmUgYXV0b21hdGljYWxseSBjb252ZXJ0ZWQsCiAgICAgd2hlcmUgbmVjZXNzYXJ5LgogICAgICIiIgpAQCAtOTc0LDcgKzk4OCw3IEBACiAjICAgICAoTm9uZSBpZiBub3QgcHJlc2VudCkuCiAjIEBzZWUgRmF1bHQKIAotZGVmIGxvYWRzKGRhdGEsIHVzZV9kYXRldGltZT1GYWxzZSk6CitkZWYgbG9hZHMoZGF0YSwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgIiIiZGF0YSAtPiB1bm1hcnNoYWxsZWQgZGF0YSwgbWV0aG9kIG5hbWUKIAogICAgIENvbnZlcnQgYW4gWE1MLVJQQyBwYWNrZXQgdG8gdW5tYXJzaGFsbGVkIGRhdGEgcGx1cyBhIG1ldGhvZApAQCAtOTgzLDcgKzk5Nyw3IEBACiAgICAgSWYgdGhlIFhNTC1SUEMgcGFja2V0IHJlcHJlc2VudHMgYSBmYXVsdCBjb25kaXRpb24sIHRoaXMgZnVuY3Rpb24KICAgICByYWlzZXMgYSBGYXVsdCBleGNlcHRpb24uCiAgICAgIiIiCi0gICAgcCwgdSA9IGdldHBhcnNlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lKQorICAgIHAsIHUgPSBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXVzZV9kYXRldGltZSwgdXNlX2J1aWx0aW5fdHlwZXM9dXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgcC5mZWVkKGRhdGEpCiAgICAgcC5jbG9zZSgpCiAgICAgcmV0dXJuIHUuY2xvc2UoKSwgdS5nZXRtZXRob2RuYW1lKCkKQEAgLTEwODUsNyArMTA5OSw3IEBACiAgICAgIiIiSGFuZGxlcyBhbiBIVFRQIHRyYW5zYWN0aW9uIHRvIGFuIFhNTC1SUEMgc2VydmVyLiIiIgogCiAgICAgIyBjbGllbnQgaWRlbnRpZmllciAobWF5IGJlIG92ZXJyaWRkZW4pCi0gICAgdXNlcl9hZ2VudCA9ICJ4bWxycGNsaWIucHkvJXMgKGJ5IHd3dy5weXRob253YXJlLmNvbSkiICUgX192ZXJzaW9uX18KKyAgICB1c2VyX2FnZW50ID0gIlB5dGhvbi14bWxycGMvJXMiICUgX192ZXJzaW9uX18KIAogICAgICNpZiB0cnVlLCB3ZSdsbCByZXF1ZXN0IGd6aXAgZW5jb2RpbmcKICAgICBhY2NlcHRfZ3ppcF9lbmNvZGluZyA9IFRydWUKQEAgLTEwOTUsOCArMTEwOSw5IEBACiAgICAgIyB0aGF0IHRoZXkgY2FuIGRlY29kZSBzdWNoIGEgcmVxdWVzdAogICAgIGVuY29kZV90aHJlc2hvbGQgPSBOb25lICNOb25lID0gZG9uJ3QgZW5jb2RlCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlX2RhdGV0aW1lPUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXNlX2RhdGV0aW1lPUZhbHNlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgIHNlbGYuX3VzZV9kYXRldGltZSA9IHVzZV9kYXRldGltZQorICAgICAgICBzZWxmLl91c2VfYnVpbHRpbl90eXBlcyA9IHVzZV9idWlsdGluX3R5cGVzCiAgICAgICAgIHNlbGYuX2Nvbm5lY3Rpb24gPSAoTm9uZSwgTm9uZSkKICAgICAgICAgc2VsZi5fZXh0cmFfaGVhZGVycyA9IFtdCiAKQEAgLTExNTcsNyArMTE3Miw4IEBACiAKICAgICBkZWYgZ2V0cGFyc2VyKHNlbGYpOgogICAgICAgICAjIGdldCBwYXJzZXIgYW5kIHVubWFyc2hhbGxlcgotICAgICAgICByZXR1cm4gZ2V0cGFyc2VyKHVzZV9kYXRldGltZT1zZWxmLl91c2VfZGF0ZXRpbWUpCisgICAgICAgIHJldHVybiBnZXRwYXJzZXIodXNlX2RhdGV0aW1lPXNlbGYuX3VzZV9kYXRldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1zZWxmLl91c2VfYnVpbHRpbl90eXBlcykKIAogICAgICMjCiAgICAgIyBHZXQgYXV0aG9yaXphdGlvbiBpbmZvIGZyb20gaG9zdCBwYXJhbWV0ZXIKQEAgLTExNzUsNyArMTE5MSw2IEBACiAgICAgICAgIGlmIGlzaW5zdGFuY2UoaG9zdCwgdHVwbGUpOgogICAgICAgICAgICAgaG9zdCwgeDUwOSA9IGhvc3QKIAotICAgICAgICBpbXBvcnQgdXJsbGliLnBhcnNlCiAgICAgICAgIGF1dGgsIGhvc3QgPSB1cmxsaWIucGFyc2Uuc3BsaXR1c2VyKGhvc3QpCiAKICAgICAgICAgaWYgYXV0aDoKQEAgLTEzNjQsMTEgKzEzNzksMTAgQEAKICAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmksIHRyYW5zcG9ydD1Ob25lLCBlbmNvZGluZz1Ob25lLCB2ZXJib3NlPUZhbHNlLAotICAgICAgICAgICAgICAgICBhbGxvd19ub25lPUZhbHNlLCB1c2VfZGF0ZXRpbWU9RmFsc2UpOgorICAgICAgICAgICAgICAgICBhbGxvd19ub25lPUZhbHNlLCB1c2VfZGF0ZXRpbWU9RmFsc2UsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgIyBlc3RhYmxpc2ggYSAibG9naWNhbCIgc2VydmVyIGNvbm5lY3Rpb24KIAogICAgICAgICAjIGdldCB0aGUgdXJsCi0gICAgICAgIGltcG9ydCB1cmxsaWIucGFyc2UKICAgICAgICAgdHlwZSwgdXJpID0gdXJsbGliLnBhcnNlLnNwbGl0dHlwZSh1cmkpCiAgICAgICAgIGlmIHR5cGUgbm90IGluICgiaHR0cCIsICJodHRwcyIpOgogICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigidW5zdXBwb3J0ZWQgWE1MLVJQQyBwcm90b2NvbCIpCkBAIC0xMzc4LDkgKzEzOTIsMTEgQEAKIAogICAgICAgICBpZiB0cmFuc3BvcnQgaXMgTm9uZToKICAgICAgICAgICAgIGlmIHR5cGUgPT0gImh0dHBzIjoKLSAgICAgICAgICAgICAgICB0cmFuc3BvcnQgPSBTYWZlVHJhbnNwb3J0KHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgICAgICAgICAgICAgaGFuZGxlciA9IFNhZmVUcmFuc3BvcnQKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0ID0gVHJhbnNwb3J0KHVzZV9kYXRldGltZT11c2VfZGF0ZXRpbWUpCisgICAgICAgICAgICAgICAgaGFuZGxlciA9IFRyYW5zcG9ydAorICAgICAgICAgICAgdHJhbnNwb3J0ID0gaGFuZGxlcih1c2VfZGF0ZXRpbWU9dXNlX2RhdGV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz11c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgc2VsZi5fX3RyYW5zcG9ydCA9IHRyYW5zcG9ydAogCiAgICAgICAgIHNlbGYuX19lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKZGlmZiAtLWdpdCBhL0xpYi94bWxycGMvc2VydmVyLnB5IGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKaW5kZXggZmQxNzAyNi4uNTRlMTcyNiAxMDA2NDQKLS0tIGEvTGliL3htbHJwYy9zZXJ2ZXIucHkKKysrIGIvTGliL3htbHJwYy9zZXJ2ZXIucHkKQEAgLTE2MCwxMSArMTYwLDEzIEBACiAgICAgY2FuIGJlIGluc3RhbmNlZCB3aGVuIHVzZWQgYnkgdGhlIE11bHRpUGF0aFhNTFJQQ1NlcnZlcgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhbGxvd19ub25lPUZhbHNlLCBlbmNvZGluZz1Ob25lLAorICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgIHNlbGYuZnVuY3MgPSB7fQogICAgICAgICBzZWxmLmluc3RhbmNlID0gTm9uZQogICAgICAgICBzZWxmLmFsbG93X25vbmUgPSBhbGxvd19ub25lCiAgICAgICAgIHNlbGYuZW5jb2RpbmcgPSBlbmNvZGluZyBvciAndXRmLTgnCisgICAgICAgIHNlbGYudXNlX2J1aWx0aW5fdHlwZXMgPSB1c2VfYnVpbHRpbl90eXBlcwogCiAgICAgZGVmIHJlZ2lzdGVyX2luc3RhbmNlKHNlbGYsIGluc3RhbmNlLCBhbGxvd19kb3R0ZWRfbmFtZXM9RmFsc2UpOgogICAgICAgICAiIiJSZWdpc3RlcnMgYW4gaW5zdGFuY2UgdG8gcmVzcG9uZCB0byBYTUwtUlBDIHJlcXVlc3RzLgpAQCAtMjQ1LDcgKzI0Nyw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHBhcmFtcywgbWV0aG9kID0gbG9hZHMoZGF0YSkKKyAgICAgICAgICAgIHBhcmFtcywgbWV0aG9kID0gbG9hZHMoZGF0YSwgdXNlX2J1aWx0aW5fdHlwZXM9c2VsZi51c2VfYnVpbHRpbl90eXBlcykKIAogICAgICAgICAgICAgIyBnZW5lcmF0ZSByZXNwb25zZQogICAgICAgICAgICAgaWYgZGlzcGF0Y2hfbWV0aG9kIGlzIG5vdCBOb25lOgpAQCAtNTc1LDEwICs1NzcsMTEgQEAKICAgICBfc2VuZF90cmFjZWJhY2tfaGVhZGVyID0gRmFsc2UKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlcj1TaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKICAgICAgICAgc2VsZi5sb2dSZXF1ZXN0cyA9IGxvZ1JlcXVlc3RzCiAKLSAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZykKKyAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZywgdXNlX2J1aWx0aW5fdHlwZXMpCiAgICAgICAgIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXIsIGJpbmRfYW5kX2FjdGl2YXRlKQogCiAgICAgICAgICMgW0J1ZyAjMTIyMjc5MF0gSWYgcG9zc2libGUsIHNldCBjbG9zZS1vbi1leGVjIGZsYWc7IGlmIGEKQEAgLTU5OCwxMCArNjAxLDExIEBACiAgICAgTWFrZSBzdXJlIHRoYXQgdGhlIHJlcXVlc3RIYW5kbGVyIGFjY2VwdHMgdGhlIHBhdGhzIGluIHF1ZXN0aW9uLgogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlcj1TaW1wbGVYTUxSUENSZXF1ZXN0SGFuZGxlciwKLSAgICAgICAgICAgICAgICAgbG9nUmVxdWVzdHM9VHJ1ZSwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSwgYmluZF9hbmRfYWN0aXZhdGU9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCisgICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKIAogICAgICAgICBTaW1wbGVYTUxSUENTZXJ2ZXIuX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXIsIGxvZ1JlcXVlc3RzLCBhbGxvd19ub25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIGJpbmRfYW5kX2FjdGl2YXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIGJpbmRfYW5kX2FjdGl2YXRlLCB1c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgc2VsZi5kaXNwYXRjaGVycyA9IHt9CiAgICAgICAgIHNlbGYuYWxsb3dfbm9uZSA9IGFsbG93X25vbmUKICAgICAgICAgc2VsZi5lbmNvZGluZyA9IGVuY29kaW5nIG9yICd1dGYtOCcKQEAgLTYzMSw4ICs2MzUsOCBAQAogY2xhc3MgQ0dJWE1MUlBDUmVxdWVzdEhhbmRsZXIoU2ltcGxlWE1MUlBDRGlzcGF0Y2hlcik6CiAgICAgIiIiU2ltcGxlIGhhbmRsZXIgZm9yIFhNTC1SUEMgZGF0YSBwYXNzZWQgdGhyb3VnaCBDR0kuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZT1GYWxzZSwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgYWxsb3dfbm9uZSwgZW5jb2RpbmcpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsIHVzZV9idWlsdGluX3R5cGVzPUZhbHNlKToKKyAgICAgICAgU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmLCBhbGxvd19ub25lLCBlbmNvZGluZywgdXNlX2J1aWx0aW5fdHlwZXMpCiAKICAgICBkZWYgaGFuZGxlX3htbHJwYyhzZWxmLCByZXF1ZXN0X3RleHQpOgogICAgICAgICAiIiJIYW5kbGUgYSBzaW5nbGUgWE1MLVJQQyByZXF1ZXN0IiIiCkBAIC05MjcsOSArOTMxLDEwIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkciwgcmVxdWVzdEhhbmRsZXI9RG9jWE1MUlBDUmVxdWVzdEhhbmRsZXIsCiAgICAgICAgICAgICAgICAgIGxvZ1JlcXVlc3RzPVRydWUsIGFsbG93X25vbmU9RmFsc2UsIGVuY29kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgIGJpbmRfYW5kX2FjdGl2YXRlPVRydWUpOgorICAgICAgICAgICAgICAgICBiaW5kX2FuZF9hY3RpdmF0ZT1UcnVlLCB1c2VfYnVpbHRpbl90eXBlcz1GYWxzZSk6CiAgICAgICAgIFNpbXBsZVhNTFJQQ1NlcnZlci5fX2luaXRfXyhzZWxmLCBhZGRyLCByZXF1ZXN0SGFuZGxlciwgbG9nUmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19ub25lLCBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19ub25lLCBlbmNvZGluZywgYmluZF9hbmRfYWN0aXZhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcykKICAgICAgICAgWE1MUlBDRG9jR2VuZXJhdG9yLl9faW5pdF9fKHNlbGYpCiAKIGNsYXNzIERvY0NHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyKCAgIENHSVhNTFJQQ1JlcXVlc3RIYW5kbGVyLApAQCAtOTU5LDggKzk2NCwxMyBAQAogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgcHJpbnQoJ1J1bm5pbmcgWE1MLVJQQyBzZXJ2ZXIgb24gcG9ydCA4MDAwJykKICAgICBzZXJ2ZXIgPSBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkKICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQogICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihsYW1iZGEgeCx5OiB4K3ksICdhZGQnKQotICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICBwcmludCgnU2VydmluZyBYTUwtUlBDIG9uIGxvY2FsaG9zdCBwb3J0IDgwMDAnKQorICAgIHRyeToKKyAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKKyAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBzeXMuZXhpdCgwKQpkaWZmIC0tZ2l0IGEvTGliL3ppcGZpbGUucHkgYi9MaWIvemlwZmlsZS5weQppbmRleCA0MzVhM2U5Li4yMDlkYzRhIDEwMDY0NAotLS0gYS9MaWIvemlwZmlsZS5weQorKysgYi9MaWIvemlwZmlsZS5weQpAQCAtMjIsNyArMjIsMTggQEAKICAgICB6bGliID0gTm9uZQogICAgIGNyYzMyID0gYmluYXNjaWkuY3JjMzIKIAotX19hbGxfXyA9IFsiQmFkWmlwRmlsZSIsICJCYWRaaXBmaWxlIiwgImVycm9yIiwgIlpJUF9TVE9SRUQiLCAiWklQX0RFRkxBVEVEIiwKK3RyeToKKyAgICBpbXBvcnQgYnoyICMgV2UgbWF5IG5lZWQgaXRzIGNvbXByZXNzaW9uIG1ldGhvZAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGJ6MiA9IE5vbmUKKwordHJ5OgorICAgIGltcG9ydCBsem1hICMgV2UgbWF5IG5lZWQgaXRzIGNvbXByZXNzaW9uIG1ldGhvZAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGx6bWEgPSBOb25lCisKK19fYWxsX18gPSBbIkJhZFppcEZpbGUiLCAiQmFkWmlwZmlsZSIsICJlcnJvciIsCisgICAgICAgICAgICJaSVBfU1RPUkVEIiwgIlpJUF9ERUZMQVRFRCIsICJaSVBfQlpJUDIiLCAiWklQX0xaTUEiLAogICAgICAgICAgICAiaXNfemlwZmlsZSIsICJaaXBJbmZvIiwgIlppcEZpbGUiLCAiUHlaaXBGaWxlIiwgIkxhcmdlWmlwRmlsZSJdCiAKIGNsYXNzIEJhZFppcEZpbGUoRXhjZXB0aW9uKToKQEAgLTQ1LDggKzU2LDE3IEBACiAjIGNvbnN0YW50cyBmb3IgWmlwIGZpbGUgY29tcHJlc3Npb24gbWV0aG9kcwogWklQX1NUT1JFRCA9IDAKIFpJUF9ERUZMQVRFRCA9IDgKK1pJUF9CWklQMiA9IDEyCitaSVBfTFpNQSA9IDE0CiAjIE90aGVyIFpJUCBjb21wcmVzc2lvbiBtZXRob2RzIG5vdCBzdXBwb3J0ZWQKIAorREVGQVVMVF9WRVJTSU9OID0gMjAKK1pJUDY0X1ZFUlNJT04gPSA0NQorQlpJUDJfVkVSU0lPTiA9IDQ2CitMWk1BX1ZFUlNJT04gPSA2MworIyB3ZSByZWNvZ25pemUgKGJ1dCBub3QgbmVjZXNzYXJpbHkgc3VwcG9ydCkgYWxsIGZlYXR1cmVzIHVwIHRvIHRoYXQgdmVyc2lvbgorTUFYX0VYVFJBQ1RfVkVSU0lPTiA9IDYzCisKICMgQmVsb3cgYXJlIHNvbWUgZm9ybWF0cyBhbmQgYXNzb2NpYXRlZCBkYXRhIGZvciByZWFkaW5nL3dyaXRpbmcgaGVhZGVycyB1c2luZwogIyB0aGUgc3RydWN0IG1vZHVsZS4gIFRoZSBuYW1lcyBhbmQgc3RydWN0dXJlcyBvZiBoZWFkZXJzL3JlY29yZHMgYXJlIHRob3NlIHVzZWQKICMgaW4gdGhlIFBLV0FSRSBkZXNjcmlwdGlvbiBvZiB0aGUgWklQIGZpbGUgZm9ybWF0OgpAQCAtMzEzLDggKzMzMyw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEFzc3VtZSBldmVyeXRoaW5nIGVsc2UgaXMgdW5peC15CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9zeXN0ZW0gPSAzICAgICAgICAgICMgU3lzdGVtIHdoaWNoIGNyZWF0ZWQgWklQIGFyY2hpdmUKLSAgICAgICAgc2VsZi5jcmVhdGVfdmVyc2lvbiA9IDIwICAgICAgICAjIFZlcnNpb24gd2hpY2ggY3JlYXRlZCBaSVAgYXJjaGl2ZQotICAgICAgICBzZWxmLmV4dHJhY3RfdmVyc2lvbiA9IDIwICAgICAgICMgVmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCBhcmNoaXZlCisgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBERUZBVUxUX1ZFUlNJT04gICMgVmVyc2lvbiB3aGljaCBjcmVhdGVkIFpJUCBhcmNoaXZlCisgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gREVGQVVMVF9WRVJTSU9OICMgVmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCBhcmNoaXZlCiAgICAgICAgIHNlbGYucmVzZXJ2ZWQgPSAwICAgICAgICAgICAgICAgIyBNdXN0IGJlIHplcm8KICAgICAgICAgc2VsZi5mbGFnX2JpdHMgPSAwICAgICAgICAgICAgICAjIFpJUCBmbGFnIGJpdHMKICAgICAgICAgc2VsZi52b2x1bWUgPSAwICAgICAgICAgICAgICAgICAjIFZvbHVtZSBudW1iZXIgb2YgZmlsZSBoZWFkZXIKQEAgLTM0MSw2ICszNjEsNyBAQAogCiAgICAgICAgIGV4dHJhID0gc2VsZi5leHRyYQogCisgICAgICAgIG1pbl92ZXJzaW9uID0gMAogICAgICAgICBpZiBmaWxlX3NpemUgPiBaSVA2NF9MSU1JVCBvciBjb21wcmVzc19zaXplID4gWklQNjRfTElNSVQ6CiAgICAgICAgICAgICAjIEZpbGUgaXMgbGFyZ2VyIHRoYW4gd2hhdCBmaXRzIGludG8gYSA0IGJ5dGUgaW50ZWdlciwKICAgICAgICAgICAgICMgZmFsbCBiYWNrIHRvIHRoZSBaSVA2NCBleHRlbnNpb24KQEAgLTM0OSw5ICszNzAsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgMSwgc3RydWN0LmNhbGNzaXplKGZtdCktNCwgZmlsZV9zaXplLCBjb21wcmVzc19zaXplKQogICAgICAgICAgICAgZmlsZV9zaXplID0gMHhmZmZmZmZmZgogICAgICAgICAgICAgY29tcHJlc3Nfc2l6ZSA9IDB4ZmZmZmZmZmYKLSAgICAgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uID0gbWF4KDQ1LCBzZWxmLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgIHNlbGYuY3JlYXRlX3ZlcnNpb24gPSBtYXgoNDUsIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBaSVA2NF9WRVJTSU9OCiAKKyAgICAgICAgaWYgc2VsZi5jb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorICAgICAgICBlbGlmIHNlbGYuY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KExaTUFfVkVSU0lPTiwgbWluX3ZlcnNpb24pCisKKyAgICAgICAgc2VsZi5leHRyYWN0X3ZlcnNpb24gPSBtYXgobWluX3ZlcnNpb24sIHNlbGYuZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICBzZWxmLmNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCBzZWxmLmNyZWF0ZV92ZXJzaW9uKQogICAgICAgICBmaWxlbmFtZSwgZmxhZ19iaXRzID0gc2VsZi5fZW5jb2RlRmlsZW5hbWVGbGFncygpCiAgICAgICAgIGhlYWRlciA9IHN0cnVjdC5wYWNrKHN0cnVjdEZpbGVIZWFkZXIsIHN0cmluZ0ZpbGVIZWFkZXIsCiAgICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFjdF92ZXJzaW9uLCBzZWxmLnJlc2VydmVkLCBmbGFnX2JpdHMsCkBAIC00NjEsNiArNDg4LDEyNiBAQAogICAgICAgICBzZWxmLl9VcGRhdGVLZXlzKGMpCiAgICAgICAgIHJldHVybiBjCiAKKworY2xhc3MgTFpNQUNvbXByZXNzb3I6CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2NvbXAgPSBOb25lCisKKyAgICBkZWYgX2luaXQoc2VsZik6CisgICAgICAgIHByb3BzID0gbHptYS5fZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKHsnaWQnOiBsem1hLkZJTFRFUl9MWk1BMX0pCisgICAgICAgIHNlbGYuX2NvbXAgPSBsem1hLkxaTUFDb21wcmVzc29yKGx6bWEuRk9STUFUX1JBVywgZmlsdGVycz1bCisgICAgICAgICAgICAgICAgbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLCBwcm9wcykKKyAgICAgICAgXSkKKyAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCc8QkJIJywgOSwgNCwgbGVuKHByb3BzKSkgKyBwcm9wcworCisgICAgZGVmIGNvbXByZXNzKHNlbGYsIGRhdGEpOgorICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faW5pdCgpICsgc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQorICAgICAgICByZXR1cm4gc2VsZi5fY29tcC5jb21wcmVzcyhkYXRhKQorCisgICAgZGVmIGZsdXNoKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9jb21wIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5faW5pdCgpICsgc2VsZi5fY29tcC5mbHVzaCgpCisgICAgICAgIHJldHVybiBzZWxmLl9jb21wLmZsdXNoKCkKKworCitjbGFzcyBMWk1BRGVjb21wcmVzc29yOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kZWNvbXAgPSBOb25lCisgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKyAgICAgICAgc2VsZi5lb2YgPSBGYWxzZQorCisgICAgZGVmIGRlY29tcHJlc3Moc2VsZiwgZGF0YSk6CisgICAgICAgIGlmIHNlbGYuX2RlY29tcCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCArPSBkYXRhCisgICAgICAgICAgICBpZiBsZW4oc2VsZi5fdW5jb25zdW1lZCkgPD0gNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gYicnCisgICAgICAgICAgICBwc2l6ZSwgPSBzdHJ1Y3QudW5wYWNrKCc8SCcsIHNlbGYuX3VuY29uc3VtZWRbMjo0XSkKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLl91bmNvbnN1bWVkKSA8PSA0ICsgcHNpemU6CisgICAgICAgICAgICAgICAgcmV0dXJuIGInJworCisgICAgICAgICAgICBzZWxmLl9kZWNvbXAgPSBsem1hLkxaTUFEZWNvbXByZXNzb3IobHptYS5GT1JNQVRfUkFXLCBmaWx0ZXJzPVsKKyAgICAgICAgICAgICAgICAgICAgbHptYS5fZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKGx6bWEuRklMVEVSX0xaTUExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWRbNDo0ICsgcHNpemVdKQorICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl91bmNvbnN1bWVkWzQgKyBwc2l6ZTpdCisgICAgICAgICAgICBkZWwgc2VsZi5fdW5jb25zdW1lZAorCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX2RlY29tcC5kZWNvbXByZXNzKGRhdGEpCisgICAgICAgIHNlbGYuZW9mID0gc2VsZi5fZGVjb21wLmVvZgorICAgICAgICByZXR1cm4gcmVzdWx0CisKKworY29tcHJlc3Nvcl9uYW1lcyA9IHsKKyAgICAwOiAnc3RvcmUnLAorICAgIDE6ICdzaHJpbmsnLAorICAgIDI6ICdyZWR1Y2UnLAorICAgIDM6ICdyZWR1Y2UnLAorICAgIDQ6ICdyZWR1Y2UnLAorICAgIDU6ICdyZWR1Y2UnLAorICAgIDY6ICdpbXBsb2RlJywKKyAgICA3OiAndG9rZW5pemUnLAorICAgIDg6ICdkZWZsYXRlJywKKyAgICA5OiAnZGVmbGF0ZTY0JywKKyAgICAxMDogJ2ltcGxvZGUnLAorICAgIDEyOiAnYnppcDInLAorICAgIDE0OiAnbHptYScsCisgICAgMTg6ICd0ZXJzZScsCisgICAgMTk6ICdsejc3JywKKyAgICA5NzogJ3dhdnBhY2snLAorICAgIDk4OiAncHBtZCcsCit9CisKK2RlZiBfY2hlY2tfY29tcHJlc3Npb24oY29tcHJlc3Npb24pOgorICAgIGlmIGNvbXByZXNzaW9uID09IFpJUF9TVE9SRUQ6CisgICAgICAgIHBhc3MKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgaWYgbm90IHpsaWI6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIHpsaWIgbW9kdWxlIikKKyAgICBlbGlmIGNvbXByZXNzaW9uID09IFpJUF9CWklQMjoKKyAgICAgICAgaWYgbm90IGJ6MjoKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgYnoyIG1vZHVsZSIpCisgICAgZWxpZiBjb21wcmVzc2lvbiA9PSBaSVBfTFpNQToKKyAgICAgICAgaWYgbm90IGx6bWE6CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIGx6bWEgbW9kdWxlIikKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRoYXQgY29tcHJlc3Npb24gbWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQiKQorCisKK2RlZiBfZ2V0X2NvbXByZXNzb3IoY29tcHJlc3NfdHlwZSk6CisgICAgaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6CisgICAgICAgIHJldHVybiB6bGliLmNvbXByZXNzb2JqKHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAorICAgICAgICAgICAgIHpsaWIuREVGTEFURUQsIC0xNSkKKyAgICBlbGlmIGNvbXByZXNzX3R5cGUgPT0gWklQX0JaSVAyOgorICAgICAgICByZXR1cm4gYnoyLkJaMkNvbXByZXNzb3IoKQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgcmV0dXJuIExaTUFDb21wcmVzc29yKCkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBfZ2V0X2RlY29tcHJlc3Nvcihjb21wcmVzc190eXBlKToKKyAgICBpZiBjb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6CisgICAgICAgIHJldHVybiBOb25lCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgcmV0dXJuIHpsaWIuZGVjb21wcmVzc29iaigtMTUpCisgICAgZWxpZiBjb21wcmVzc190eXBlID09IFpJUF9CWklQMjoKKyAgICAgICAgcmV0dXJuIGJ6Mi5CWjJEZWNvbXByZXNzb3IoKQorICAgIGVsaWYgY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgcmV0dXJuIExaTUFEZWNvbXByZXNzb3IoKQorICAgIGVsc2U6CisgICAgICAgIGRlc2NyID0gY29tcHJlc3Nvcl9uYW1lcy5nZXQoY29tcHJlc3NfdHlwZSkKKyAgICAgICAgaWYgZGVzY3I6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJjb21wcmVzc2lvbiB0eXBlICVkICglcykiICUgKGNvbXByZXNzX3R5cGUsIGRlc2NyKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzaW9uIHR5cGUgJWQiICUgKGNvbXByZXNzX3R5cGUsKSkKKworCiBjbGFzcyBaaXBFeHRGaWxlKGlvLkJ1ZmZlcmVkSU9CYXNlKToKICAgICAiIiJGaWxlLWxpa2Ugb2JqZWN0IGZvciByZWFkaW5nIGFuIGFyY2hpdmUgbWVtYmVyLgogICAgICAgIElzIHJldHVybmVkIGJ5IFppcEZpbGUub3BlbigpLgpAQCAtNDgyLDEzICs2MjksMTIgQEAKICAgICAgICAgc2VsZi5fY2xvc2VfZmlsZW9iaiA9IGNsb3NlX2ZpbGVvYmoKIAogICAgICAgICBzZWxmLl9jb21wcmVzc190eXBlID0gemlwaW5mby5jb21wcmVzc190eXBlCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX3NpemUgPSB6aXBpbmZvLmNvbXByZXNzX3NpemUKICAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCA9IHppcGluZm8uY29tcHJlc3Nfc2l6ZQorICAgICAgICBzZWxmLl9sZWZ0ID0gemlwaW5mby5maWxlX3NpemUKIAotICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgIHNlbGYuX2RlY29tcHJlc3NvciA9IHpsaWIuZGVjb21wcmVzc29iaigtMTUpCi0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgPSBiJycKKyAgICAgICAgc2VsZi5fZGVjb21wcmVzc29yID0gX2dldF9kZWNvbXByZXNzb3Ioc2VsZi5fY29tcHJlc3NfdHlwZSkKIAorICAgICAgICBzZWxmLl9lb2YgPSBGYWxzZQogICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCiAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKIApAQCAtNTYzLDcgKzcwOSwxMSBAQAogICAgICAgICAiIiJSZXR1cm5zIGJ1ZmZlcmVkIGJ5dGVzIHdpdGhvdXQgYWR2YW5jaW5nIHRoZSBwb3NpdGlvbi4iIiIKICAgICAgICAgaWYgbiA+IGxlbihzZWxmLl9yZWFkYnVmZmVyKSAtIHNlbGYuX29mZnNldDoKICAgICAgICAgICAgIGNodW5rID0gc2VsZi5yZWFkKG4pCi0gICAgICAgICAgICBzZWxmLl9vZmZzZXQgLT0gbGVuKGNodW5rKQorICAgICAgICAgICAgaWYgbGVuKGNodW5rKSA+IHNlbGYuX29mZnNldDoKKyAgICAgICAgICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gY2h1bmsgKyBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdCisgICAgICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgLT0gbGVuKGNodW5rKQogCiAgICAgICAgICMgUmV0dXJuIHVwIHRvIDUxMiBieXRlcyB0byByZWR1Y2UgYWxsb2NhdGlvbiBvdmVyaGVhZCBmb3IgdGlnaHQgbG9vcHMuCiAgICAgICAgIHJldHVybiBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDogc2VsZi5fb2Zmc2V0ICsgNTEyXQpAQCAtNTc1LDgwICs3MjUsMTIzIEBACiAgICAgICAgICIiIlJlYWQgYW5kIHJldHVybiB1cCB0byBuIGJ5dGVzLgogICAgICAgICBJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCwgTm9uZSwgb3IgbmVnYXRpdmUsIGRhdGEgaXMgcmVhZCBhbmQgcmV0dXJuZWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuLgogICAgICAgICAiIiIKLSAgICAgICAgYnVmID0gYicnCi0gICAgICAgIGlmIG4gaXMgTm9uZToKLSAgICAgICAgICAgIG4gPSAtMQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgaWYgbiA8IDA6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYucmVhZDEobikKLSAgICAgICAgICAgIGVsaWYgbiA+IGxlbihidWYpOgotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlYWQxKG4gLSBsZW4oYnVmKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZgotICAgICAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZgotICAgICAgICAgICAgYnVmICs9IGRhdGEKKyAgICAgICAgaWYgbiBpcyBOb25lIG9yIG4gPCAwOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQorICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGInJworICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX2VvZjoKKyAgICAgICAgICAgICAgICBidWYgKz0gc2VsZi5fcmVhZDEoc2VsZi5NQVhfTikKKyAgICAgICAgICAgIHJldHVybiBidWYKIAotICAgIGRlZiBfdXBkYXRlX2NyYyhzZWxmLCBuZXdkYXRhLCBlb2YpOgorICAgICAgICBlbmQgPSBuICsgc2VsZi5fb2Zmc2V0CisgICAgICAgIGlmIGVuZCA8IGxlbihzZWxmLl9yZWFkYnVmZmVyKToKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OmVuZF0KKyAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IGVuZAorICAgICAgICAgICAgcmV0dXJuIGJ1ZgorCisgICAgICAgIG4gPSBlbmQgLSBsZW4oc2VsZi5fcmVhZGJ1ZmZlcikKKyAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQorICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgIHNlbGYuX29mZnNldCA9IDAKKyAgICAgICAgd2hpbGUgbiA+IDAgYW5kIG5vdCBzZWxmLl9lb2Y6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEobikKKyAgICAgICAgICAgIGlmIG4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGRhdGEKKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBuCisgICAgICAgICAgICAgICAgYnVmICs9IGRhdGFbOm5dCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGJ1ZiArPSBkYXRhCisgICAgICAgICAgICBuIC09IGxlbihkYXRhKQorICAgICAgICByZXR1cm4gYnVmCisKKyAgICBkZWYgX3VwZGF0ZV9jcmMoc2VsZiwgbmV3ZGF0YSk6CiAgICAgICAgICMgVXBkYXRlIHRoZSBDUkMgdXNpbmcgdGhlIGdpdmVuIGRhdGEuCiAgICAgICAgIGlmIHNlbGYuX2V4cGVjdGVkX2NyYyBpcyBOb25lOgogICAgICAgICAgICAgIyBObyBuZWVkIHRvIGNvbXB1dGUgdGhlIENSQyBpZiB3ZSBkb24ndCBoYXZlIGEgcmVmZXJlbmNlIHZhbHVlCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fcnVubmluZ19jcmMgPSBjcmMzMihuZXdkYXRhLCBzZWxmLl9ydW5uaW5nX2NyYykgJiAweGZmZmZmZmZmCiAgICAgICAgICMgQ2hlY2sgdGhlIENSQyBpZiB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlCi0gICAgICAgIGlmIGVvZiBhbmQgc2VsZi5fcnVubmluZ19jcmMgIT0gc2VsZi5fZXhwZWN0ZWRfY3JjOgorICAgICAgICBpZiBzZWxmLl9lb2YgYW5kIHNlbGYuX3J1bm5pbmdfY3JjICE9IHNlbGYuX2V4cGVjdGVkX2NyYzoKICAgICAgICAgICAgIHJhaXNlIEJhZFppcEZpbGUoIkJhZCBDUkMtMzIgZm9yIGZpbGUgJXIiICUgc2VsZi5uYW1lKQogCiAgICAgZGVmIHJlYWQxKHNlbGYsIG4pOgogICAgICAgICAiIiJSZWFkIHVwIHRvIG4gYnl0ZXMgd2l0aCBhdCBtb3N0IG9uZSByZWFkKCkgc3lzdGVtIGNhbGwuIiIiCiAKLSAgICAgICAgIyBTaW1wbGlmeSBhbGdvcml0aG0gKGJyYW5jaGluZykgYnkgdHJhbnNmb3JtaW5nIG5lZ2F0aXZlIG4gdG8gbGFyZ2Ugbi4KLSAgICAgICAgaWYgbiA8IDAgb3IgbiBpcyBOb25lOgotICAgICAgICAgICAgbiA9IHNlbGYuTUFYX04KKyAgICAgICAgaWYgbiBpcyBOb25lIG9yIG4gPCAwOgorICAgICAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQorICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGInJworICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICAgICAgZGF0YSA9IHNlbGYuX3JlYWQxKHNlbGYuTUFYX04pCisgICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICAgICAgcmV0dXJuIGJ1ZgogCi0gICAgICAgICMgQnl0ZXMgYXZhaWxhYmxlIGluIHJlYWQgYnVmZmVyLgotICAgICAgICBsZW5fcmVhZGJ1ZmZlciA9IGxlbihzZWxmLl9yZWFkYnVmZmVyKSAtIHNlbGYuX29mZnNldAorICAgICAgICBlbmQgPSBuICsgc2VsZi5fb2Zmc2V0CisgICAgICAgIGlmIGVuZCA8IGxlbihzZWxmLl9yZWFkYnVmZmVyKToKKyAgICAgICAgICAgIGJ1ZiA9IHNlbGYuX3JlYWRidWZmZXJbc2VsZi5fb2Zmc2V0OmVuZF0KKyAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IGVuZAorICAgICAgICAgICAgcmV0dXJuIGJ1ZgorCisgICAgICAgIG4gPSBlbmQgLSBsZW4oc2VsZi5fcmVhZGJ1ZmZlcikKKyAgICAgICAgYnVmID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6XQorICAgICAgICBzZWxmLl9yZWFkYnVmZmVyID0gYicnCisgICAgICAgIHNlbGYuX29mZnNldCA9IDAKKyAgICAgICAgaWYgbiA+IDA6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDEobikKKyAgICAgICAgICAgIGlmIG4gPCBsZW4oZGF0YSk6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhZGJ1ZmZlciA9IGRhdGEKKyAgICAgICAgICAgICAgICBzZWxmLl9vZmZzZXQgPSBuCisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGFbOm5dCisgICAgICAgICAgICBidWYgKz0gZGF0YQorICAgICAgICByZXR1cm4gYnVmCisKKyAgICBkZWYgX3JlYWQxKHNlbGYsIG4pOgorICAgICAgICAjIFJlYWQgdXAgdG8gbiBjb21wcmVzc2VkIGJ5dGVzIHdpdGggYXQgbW9zdCBvbmUgcmVhZCgpIHN5c3RlbSBjYWxsLAorICAgICAgICAjIGRlY3J5cHQgYW5kIGRlY29tcHJlc3MgdGhlbS4KKyAgICAgICAgaWYgc2VsZi5fZW9mIG9yIG4gPD0gMDoKKyAgICAgICAgICAgIHJldHVybiBiJycKIAogICAgICAgICAjIFJlYWQgZnJvbSBmaWxlLgotICAgICAgICBpZiBzZWxmLl9jb21wcmVzc19sZWZ0ID4gMCBhbmQgbiA+IGxlbl9yZWFkYnVmZmVyICsgbGVuKHNlbGYuX3VuY29uc3VtZWQpOgotICAgICAgICAgICAgbmJ5dGVzID0gbiAtIGxlbl9yZWFkYnVmZmVyIC0gbGVuKHNlbGYuX3VuY29uc3VtZWQpCi0gICAgICAgICAgICBuYnl0ZXMgPSBtYXgobmJ5dGVzLCBzZWxmLk1JTl9SRUFEX1NJWkUpCi0gICAgICAgICAgICBuYnl0ZXMgPSBtaW4obmJ5dGVzLCBzZWxmLl9jb21wcmVzc19sZWZ0KQorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKKyAgICAgICAgICAgICMjIEhhbmRsZSB1bmNvbnN1bWVkIGRhdGEuCisgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbAorICAgICAgICAgICAgaWYgbiA+IGxlbihkYXRhKToKKyAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYuX3JlYWQyKG4gLSBsZW4oZGF0YSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fcmVhZDIobikKIAotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2ZpbGVvYmoucmVhZChuYnl0ZXMpCi0gICAgICAgICAgICBzZWxmLl9jb21wcmVzc19sZWZ0IC09IGxlbihkYXRhKQotCi0gICAgICAgICAgICBpZiBkYXRhIGFuZCBzZWxmLl9kZWNyeXB0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKG1hcChzZWxmLl9kZWNyeXB0ZXIsIGRhdGEpKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9jb21wcmVzc190eXBlID09IFpJUF9TVE9SRUQ6Ci0gICAgICAgICAgICAgICAgc2VsZi5fdXBkYXRlX2NyYyhkYXRhLCBlb2Y9KHNlbGYuX2NvbXByZXNzX2xlZnQ9PTApKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdICsgZGF0YQotICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCA9IDAKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBQcmVwYXJlIGRlZmxhdGVkIGJ5dGVzIGZvciBkZWNvbXByZXNzaW9uLgotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQgKz0gZGF0YQotCi0gICAgICAgICMgSGFuZGxlIHVuY29uc3VtZWQgZGF0YS4KLSAgICAgICAgaWYgKGxlbihzZWxmLl91bmNvbnN1bWVkKSA+IDAgYW5kIG4gPiBsZW5fcmVhZGJ1ZmZlciBhbmQKLSAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzX3R5cGUgPT0gWklQX0RFRkxBVEVEKToKLSAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcygKLSAgICAgICAgICAgICAgICBzZWxmLl91bmNvbnN1bWVkLAotICAgICAgICAgICAgICAgIG1heChuIC0gbGVuX3JlYWRidWZmZXIsIHNlbGYuTUlOX1JFQURfU0laRSkKLSAgICAgICAgICAgICkKLQotICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1lZCA9IHNlbGYuX2RlY29tcHJlc3Nvci51bmNvbnN1bWVkX3RhaWwKLSAgICAgICAgICAgIGVvZiA9IGxlbihzZWxmLl91bmNvbnN1bWVkKSA9PSAwIGFuZCBzZWxmLl9jb21wcmVzc19sZWZ0ID09IDAKLSAgICAgICAgICAgIGlmIGVvZjoKKyAgICAgICAgaWYgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfU1RPUkVEOgorICAgICAgICAgICAgc2VsZi5fZW9mID0gc2VsZi5fY29tcHJlc3NfbGVmdCA8PSAwCisgICAgICAgIGVsaWYgc2VsZi5fY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6CisgICAgICAgICAgICBuID0gbWF4KG4sIHNlbGYuTUlOX1JFQURfU0laRSkKKyAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9kZWNvbXByZXNzb3IuZGVjb21wcmVzcyhkYXRhLCBuKQorICAgICAgICAgICAgc2VsZi5fZW9mID0gKHNlbGYuX2RlY29tcHJlc3Nvci5lb2Ygb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29tcHJlc3NfbGVmdCA8PSAwIGFuZAorICAgICAgICAgICAgICAgICAgICBub3Qgc2VsZi5fZGVjb21wcmVzc29yLnVuY29uc3VtZWRfdGFpbCkKKyAgICAgICAgICAgIGlmIHNlbGYuX2VvZjoKICAgICAgICAgICAgICAgICBkYXRhICs9IHNlbGYuX2RlY29tcHJlc3Nvci5mbHVzaCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkYXRhID0gc2VsZi5fZGVjb21wcmVzc29yLmRlY29tcHJlc3MoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuX2VvZiA9IHNlbGYuX2RlY29tcHJlc3Nvci5lb2Ygb3Igc2VsZi5fY29tcHJlc3NfbGVmdCA8PSAwCiAKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9jcmMoZGF0YSwgZW9mPWVvZikKLSAgICAgICAgICAgIHNlbGYuX3JlYWRidWZmZXIgPSBzZWxmLl9yZWFkYnVmZmVyW3NlbGYuX29mZnNldDpdICsgZGF0YQotICAgICAgICAgICAgc2VsZi5fb2Zmc2V0ID0gMAorICAgICAgICBkYXRhID0gZGF0YVs6c2VsZi5fbGVmdF0KKyAgICAgICAgc2VsZi5fbGVmdCAtPSBsZW4oZGF0YSkKKyAgICAgICAgaWYgc2VsZi5fbGVmdCA8PSAwOgorICAgICAgICAgICAgc2VsZi5fZW9mID0gVHJ1ZQorICAgICAgICBzZWxmLl91cGRhdGVfY3JjKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCiAKLSAgICAgICAgIyBSZWFkIGZyb20gYnVmZmVyLgotICAgICAgICBkYXRhID0gc2VsZi5fcmVhZGJ1ZmZlcltzZWxmLl9vZmZzZXQ6IHNlbGYuX29mZnNldCArIG5dCi0gICAgICAgIHNlbGYuX29mZnNldCArPSBsZW4oZGF0YSkKKyAgICBkZWYgX3JlYWQyKHNlbGYsIG4pOgorICAgICAgICBpZiBzZWxmLl9jb21wcmVzc19sZWZ0IDw9IDA6CisgICAgICAgICAgICByZXR1cm4gYicnCisKKyAgICAgICAgbiA9IG1heChuLCBzZWxmLk1JTl9SRUFEX1NJWkUpCisgICAgICAgIG4gPSBtaW4obiwgc2VsZi5fY29tcHJlc3NfbGVmdCkKKworICAgICAgICBkYXRhID0gc2VsZi5fZmlsZW9iai5yZWFkKG4pCisgICAgICAgIHNlbGYuX2NvbXByZXNzX2xlZnQgLT0gbGVuKGRhdGEpCisKKyAgICAgICAgaWYgc2VsZi5fZGVjcnlwdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZGF0YSA9IGJ5dGVzKG1hcChzZWxmLl9kZWNyeXB0ZXIsIGRhdGEpKQogICAgICAgICByZXR1cm4gZGF0YQogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgpAQCAtNjY3LDcgKzg2MCw4IEBACiAgICAgZmlsZTogRWl0aGVyIHRoZSBwYXRoIHRvIHRoZSBmaWxlLCBvciBhIGZpbGUtbGlrZSBvYmplY3QuCiAgICAgICAgICAgSWYgaXQgaXMgYSBwYXRoLCB0aGUgZmlsZSB3aWxsIGJlIG9wZW5lZCBhbmQgY2xvc2VkIGJ5IFppcEZpbGUuCiAgICAgbW9kZTogVGhlIG1vZGUgY2FuIGJlIGVpdGhlciByZWFkICJyIiwgd3JpdGUgInciIG9yIGFwcGVuZCAiYSIuCi0gICAgY29tcHJlc3Npb246IFpJUF9TVE9SRUQgKG5vIGNvbXByZXNzaW9uKSBvciBaSVBfREVGTEFURUQgKHJlcXVpcmVzIHpsaWIpLgorICAgIGNvbXByZXNzaW9uOiBaSVBfU1RPUkVEIChubyBjb21wcmVzc2lvbiksIFpJUF9ERUZMQVRFRCAocmVxdWlyZXMgemxpYiksCisgICAgICAgICAgICAgICAgIFpJUF9CWklQMiAocmVxdWlyZXMgYnoyKSBvciBaSVBfTFpNQSAocmVxdWlyZXMgbHptYSkuCiAgICAgYWxsb3daaXA2NDogaWYgVHJ1ZSBaaXBGaWxlIHdpbGwgY3JlYXRlIGZpbGVzIHdpdGggWklQNjQgZXh0ZW5zaW9ucyB3aGVuCiAgICAgICAgICAgICAgICAgbmVlZGVkLCBvdGhlcndpc2UgaXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGlzIHdvdWxkCiAgICAgICAgICAgICAgICAgYmUgbmVjZXNzYXJ5LgpAQCAtNjgxLDE0ICs4NzUsNyBAQAogICAgICAgICBpZiBtb2RlIG5vdCBpbiAoInIiLCAidyIsICJhIik6CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ1ppcEZpbGUoKSByZXF1aXJlcyBtb2RlICJyIiwgInciLCBvciAiYSInKQogCi0gICAgICAgIGlmIGNvbXByZXNzaW9uID09IFpJUF9TVE9SRUQ6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsaWYgY29tcHJlc3Npb24gPT0gWklQX0RFRkxBVEVEOgotICAgICAgICAgICAgaWYgbm90IHpsaWI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICJDb21wcmVzc2lvbiByZXF1aXJlcyB0aGUgKG1pc3NpbmcpIHpsaWIgbW9kdWxlIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIF9jaGVja19jb21wcmVzc2lvbihjb21wcmVzc2lvbikKIAogICAgICAgICBzZWxmLl9hbGxvd1ppcDY0ID0gYWxsb3daaXA2NAogICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBGYWxzZQpAQCAtODE0LDYgKzEwMDEsOSBAQAogICAgICAgICAgICAgKHguY3JlYXRlX3ZlcnNpb24sIHguY3JlYXRlX3N5c3RlbSwgeC5leHRyYWN0X3ZlcnNpb24sIHgucmVzZXJ2ZWQsCiAgICAgICAgICAgICAgICAgeC5mbGFnX2JpdHMsIHguY29tcHJlc3NfdHlwZSwgdCwgZCwKICAgICAgICAgICAgICAgICB4LkNSQywgeC5jb21wcmVzc19zaXplLCB4LmZpbGVfc2l6ZSkgPSBjZW50ZGlyWzE6MTJdCisgICAgICAgICAgICBpZiB4LmV4dHJhY3RfdmVyc2lvbiA+IE1BWF9FWFRSQUNUX1ZFUlNJT046CisgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigiemlwIGZpbGUgdmVyc2lvbiAlLjFmIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeC5leHRyYWN0X3ZlcnNpb24gLyAxMCkpCiAgICAgICAgICAgICB4LnZvbHVtZSwgeC5pbnRlcm5hbF9hdHRyLCB4LmV4dGVybmFsX2F0dHIgPSBjZW50ZGlyWzE1OjE4XQogICAgICAgICAgICAgIyBDb252ZXJ0IGRhdGUvdGltZSBjb2RlIHRvICh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW4sIHNlYykKICAgICAgICAgICAgIHguX3Jhd190aW1lID0gdApAQCAtODM2LDEwICsxMDI2LDcgQEAKIAogICAgIGRlZiBuYW1lbGlzdChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBmaWxlIG5hbWVzIGluIHRoZSBhcmNoaXZlLiIiIgotICAgICAgICBsID0gW10KLSAgICAgICAgZm9yIGRhdGEgaW4gc2VsZi5maWxlbGlzdDoKLSAgICAgICAgICAgIGwuYXBwZW5kKGRhdGEuZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBsCisgICAgICAgIHJldHVybiBbZGF0YS5maWxlbmFtZSBmb3IgZGF0YSBpbiBzZWxmLmZpbGVsaXN0XQogCiAgICAgZGVmIGluZm9saXN0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNsYXNzIFppcEluZm8gaW5zdGFuY2VzIGZvciBmaWxlcyBpbiB0aGUKQEAgLTk1MCw2ICsxMTM3LDE0IEBACiAgICAgICAgIGlmIGZoZWFkZXJbX0ZIX0VYVFJBX0ZJRUxEX0xFTkdUSF06CiAgICAgICAgICAgICB6ZWZfZmlsZS5yZWFkKGZoZWFkZXJbX0ZIX0VYVFJBX0ZJRUxEX0xFTkdUSF0pCiAKKyAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHgyMDoKKyAgICAgICAgICAgICMgWmlwIDIuNzogY29tcHJlc3NlZCBwYXRjaGVkIGRhdGEKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImNvbXByZXNzZWQgcGF0Y2hlZCBkYXRhIChmbGFnIGJpdCA1KSIpCisKKyAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHg0MDoKKyAgICAgICAgICAgICMgc3Ryb25nIGVuY3J5cHRpb24KKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInN0cm9uZyBlbmNyeXB0aW9uIChmbGFnIGJpdCA2KSIpCisKICAgICAgICAgaWYgemluZm8uZmxhZ19iaXRzICYgMHg4MDA6CiAgICAgICAgICAgICAjIFVURi04IGZpbGVuYW1lCiAgICAgICAgICAgICBmbmFtZV9zdHIgPSBmbmFtZS5kZWNvZGUoInV0Zi04IikKQEAgLTEwNzAsMTEgKzEyNjUsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi5mcDoKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigKICAgICAgICAgICAgICAgICAgICJBdHRlbXB0IHRvIHdyaXRlIFpJUCBhcmNoaXZlIHRoYXQgd2FzIGFscmVhZHkgY2xvc2VkIikKLSAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQgYW5kIG5vdCB6bGliOgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKAotICAgICAgICAgICAgICAgICAgIkNvbXByZXNzaW9uIHJlcXVpcmVzIHRoZSAobWlzc2luZykgemxpYiBtb2R1bGUiKQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlIG5vdCBpbiAoWklQX1NUT1JFRCwgWklQX0RFRkxBVEVEKToKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGhhdCBjb21wcmVzc2lvbiBtZXRob2QgaXMgbm90IHN1cHBvcnRlZCIpCisgICAgICAgIF9jaGVja19jb21wcmVzc2lvbih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICBpZiB6aW5mby5maWxlX3NpemUgPiBaSVA2NF9MSU1JVDoKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9hbGxvd1ppcDY0OgogICAgICAgICAgICAgICAgIHJhaXNlIExhcmdlWmlwRmlsZSgiRmlsZXNpemUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zIikKQEAgLTExMTIsNiArMTMwMyw5IEBACiAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IHN0LnN0X3NpemUKICAgICAgICAgemluZm8uZmxhZ19iaXRzID0gMHgwMAogICAgICAgICB6aW5mby5oZWFkZXJfb2Zmc2V0ID0gc2VsZi5mcC50ZWxsKCkgICAgIyBTdGFydCBvZiBoZWFkZXIgYnl0ZXMKKyAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICMgQ29tcHJlc3NlZCBkYXRhIGluY2x1ZGVzIGFuIGVuZC1vZi1zdHJlYW0gKEVPUykgbWFya2VyCisgICAgICAgICAgICB6aW5mby5mbGFnX2JpdHMgfD0gMHgwMgogCiAgICAgICAgIHNlbGYuX3dyaXRlY2hlY2soemluZm8pCiAgICAgICAgIHNlbGYuX2RpZE1vZGlmeSA9IFRydWUKQEAgLTExMjUsMTcgKzEzMTksMTMgQEAKICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcigpKQogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgY21wciA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGZwOgogICAgICAgICAgICAgIyBNdXN0IG92ZXJ3cml0ZSBDUkMgYW5kIHNpemVzIHdpdGggY29ycmVjdCBkYXRhIGxhdGVyCiAgICAgICAgICAgICB6aW5mby5DUkMgPSBDUkMgPSAwCiAgICAgICAgICAgICB6aW5mby5jb21wcmVzc19zaXplID0gY29tcHJlc3Nfc2l6ZSA9IDAKICAgICAgICAgICAgIHppbmZvLmZpbGVfc2l6ZSA9IGZpbGVfc2l6ZSA9IDAKICAgICAgICAgICAgIHNlbGYuZnAud3JpdGUoemluZm8uRmlsZUhlYWRlcigpKQotICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfREVGTEFURUQ6Ci0gICAgICAgICAgICAgICAgY21wciA9IHpsaWIuY29tcHJlc3NvYmooemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sCi0gICAgICAgICAgICAgICAgICAgICB6bGliLkRFRkxBVEVELCAtMTUpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGNtcHIgPSBOb25lCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWQoMTAyNCAqIDgpCiAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjoKQEAgLTExODgsMTMgKzEzNzgsMTUgQEAKICAgICAgICAgemluZm8uaGVhZGVyX29mZnNldCA9IHNlbGYuZnAudGVsbCgpICAgICMgU3RhcnQgb2YgaGVhZGVyIGRhdGEKICAgICAgICAgaWYgY29tcHJlc3NfdHlwZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBjb21wcmVzc190eXBlCisgICAgICAgIGlmIHppbmZvLmNvbXByZXNzX3R5cGUgPT0gWklQX0xaTUE6CisgICAgICAgICAgICAjIENvbXByZXNzZWQgZGF0YSBpbmNsdWRlcyBhbiBlbmQtb2Ytc3RyZWFtIChFT1MpIG1hcmtlcgorICAgICAgICAgICAgemluZm8uZmxhZ19iaXRzIHw9IDB4MDIKIAogICAgICAgICBzZWxmLl93cml0ZWNoZWNrKHppbmZvKQogICAgICAgICBzZWxmLl9kaWRNb2RpZnkgPSBUcnVlCiAgICAgICAgIHppbmZvLkNSQyA9IGNyYzMyKGRhdGEpICYgMHhmZmZmZmZmZiAgICAgICAjIENSQy0zMiBjaGVja3N1bQotICAgICAgICBpZiB6aW5mby5jb21wcmVzc190eXBlID09IFpJUF9ERUZMQVRFRDoKLSAgICAgICAgICAgIGNvID0gemxpYi5jb21wcmVzc29iaih6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgemxpYi5ERUZMQVRFRCwgLTE1KQorICAgICAgICBjbyA9IF9nZXRfY29tcHJlc3Nvcih6aW5mby5jb21wcmVzc190eXBlKQorICAgICAgICBpZiBjbzoKICAgICAgICAgICAgIGRhdGEgPSBjby5jb21wcmVzcyhkYXRhKSArIGNvLmZsdXNoKCkKICAgICAgICAgICAgIHppbmZvLmNvbXByZXNzX3NpemUgPSBsZW4oZGF0YSkgICAgIyBDb21wcmVzc2VkIHNpemUKICAgICAgICAgZWxzZToKQEAgLTEyNDYsMTggKzE0MzgsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IHppbmZvLmhlYWRlcl9vZmZzZXQKIAogICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSB6aW5mby5leHRyYQorICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gMAogICAgICAgICAgICAgICAgIGlmIGV4dHJhOgogICAgICAgICAgICAgICAgICAgICAjIEFwcGVuZCBhIFpJUDY0IGZpZWxkIHRvIHRoZSBleHRyYSdzCiAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGEgPSBzdHJ1Y3QucGFjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEhIJyArICdRJypsZW4oZXh0cmEpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIDgqbGVuKGV4dHJhKSwgKmV4dHJhKSArIGV4dHJhX2RhdGEKIAotICAgICAgICAgICAgICAgICAgICBleHRyYWN0X3ZlcnNpb24gPSBtYXgoNDUsIHppbmZvLmV4dHJhY3RfdmVyc2lvbikKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3ZlcnNpb24gPSBtYXgoNDUsIHppbmZvLmNyZWF0ZV92ZXJzaW9uKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IHppbmZvLmV4dHJhY3RfdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfdmVyc2lvbiA9IHppbmZvLmNyZWF0ZV92ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gWklQNjRfVkVSU0lPTgogCisgICAgICAgICAgICAgICAgaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfQlpJUDI6CisgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uID0gbWF4KEJaSVAyX1ZFUlNJT04sIG1pbl92ZXJzaW9uKQorICAgICAgICAgICAgICAgIGVsaWYgemluZm8uY29tcHJlc3NfdHlwZSA9PSBaSVBfTFpNQToKKyAgICAgICAgICAgICAgICAgICAgbWluX3ZlcnNpb24gPSBtYXgoTFpNQV9WRVJTSU9OLCBtaW5fdmVyc2lvbikKKworICAgICAgICAgICAgICAgIGV4dHJhY3RfdmVyc2lvbiA9IG1heChtaW5fdmVyc2lvbiwgemluZm8uZXh0cmFjdF92ZXJzaW9uKQorICAgICAgICAgICAgICAgIGNyZWF0ZV92ZXJzaW9uID0gbWF4KG1pbl92ZXJzaW9uLCB6aW5mby5jcmVhdGVfdmVyc2lvbikKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBmbGFnX2JpdHMgPSB6aW5mby5fZW5jb2RlRmlsZW5hbWVGbGFncygpCiAgICAgICAgICAgICAgICAgICAgIGNlbnRkaXIgPSBzdHJ1Y3QucGFjayhzdHJ1Y3RDZW50cmFsRGlyLApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dAppbmRleCBkZTJmNWNiLi5mYTA0Yjk3IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dAorKysgYi9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dApAQCAtOCw3MCArOCwxMjUgQEAKIGFuIEluc3RhbGxlciBwYWNrYWdlIGZyb20gdGhlIGluc3RhbGxhdGlvbiBwbHVzIG90aGVyIGZpbGVzIGluIGBgcmVzb3VyY2VzYGAgCiBhbmQgYGBzY3JpcHRzYGAgYW5kIHBsYWNlZCB0aGF0IG9uIGEgYGAuZG1nYGAgZGlzayBpbWFnZS4KIAotQXMgb2YgUHl0aG9uIDIuNy54IGFuZCAzLjIsIFBTRiBwcmFjdGljZSBpcyB0byBidWlsZCB0d28gaW5zdGFsbGVyIHZhcmlhbnRzCi1mb3IgZWFjaCByZWxlYXNlOgorQXMgb2YgUHl0aG9uIDMuMy4wLCBQU0YgcHJhY3RpY2UgaXMgdG8gYnVpbGQgdHdvIGluc3RhbGxlciB2YXJpYW50cworZm9yIGVhY2ggcmVsZWFzZS4KIAogMS4gIDMyLWJpdC1vbmx5LCBpMzg2IGFuZCBQUEMgdW5pdmVyc2FsLCBjYXBhYmxlIG9uIHJ1bm5pbmcgb24gYWxsIG1hY2hpbmVzCi0gICAgc3VwcG9ydGVkIGJ5IE1hYyBPUyBYIDEwLjMuOSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuNjo6CisgICAgc3VwcG9ydGVkIGJ5IE1hYyBPUyBYIDEwLjUgdGhyb3VnaCAoYXQgbGVhc3QpIDEwLjg6OgogCi0gICAgICAgIHB5dGhvbiBidWlsZC1pbnN0YWxsZXIucHkgXAorICAgICAgICAvdXNyL2Jpbi9weXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKKyAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjUuc2RrIFwKKyAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPTMyLWJpdCBcCisgICAgICAgICAgICAtLWRlcC10YXJnZXQ9MTAuNQorCisgICAgLSBidWlsZHMgdGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMKKworICAgICAgICAqIE5DdXJzZXMgNS45IChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTUwMzcpCisgICAgICAgICogU1FMaXRlIDMuNy4xMworICAgICAgICAqIFhaIDUuMC4zCisKKyAgICAtIHVzZXMgc3lzdGVtLXN1cHBsaWVkIHZlcnNpb25zIG9mIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQorCisgICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBgYFRjbC9UayA4LjRgYCAoY3VycmVudGx5IDguNC4xOSkgdG8gYmUgaW5zdGFsbGVkIGZvciBidWlsZGluZworCisgICAgLSByZWNvbW1lbmRlZCBidWlsZCBlbnZpcm9ubWVudDoKKworICAgICAgICAqIE1hYyBPUyBYIDEwLjUuOCBJbnRlbCBvciBQUEMKKyAgICAgICAgKiBYY29kZSAzLjEuNAorICAgICAgICAqIGBgTWFjT1NYMTAuNWBgIFNESworICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjVgYAorICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMmBgCisgICAgICAgICogc3lzdGVtIFB5dGhvbiAyLjUgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKKworICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKKworICAgICAgICAqIE1hYyBPUyBYIDEwLjYuOCB3aXRoIFhjb2RlIDMuMi42CisgICAgICAgICAgICAtIG5lZWQgdG8gY2hhbmdlIGBgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3Mve1RjbCxUa30uZnJhbWV3b3JrL1ZlcnNpb24vQ3VycmVudGBgIHRvIGBgOC40YGAKKyAgICAgICAgKiBOb3RlIFhjb2RlIDQuKiBkb2VzIG5vdCBzdXBwb3J0IGJ1aWxkaW5nIGZvciBQUEMgc28gY2Fubm90IGJlIHVzZWQgZm9yIHRoaXMgYnVpbGQKKworMi4gIDY0LWJpdCAvIDMyLWJpdCwgeDg2XzY0IGFuZCBpMzg2IHVuaXZlcnNhbCwgZm9yIE9TIFggMTAuNiAoYW5kIGxhdGVyKTo6CisKKyAgICAgICAgL3Vzci9iaW4vcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCisgICAgICAgICAgICAtLXNkay1wYXRoPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC42LnNkayBcCisgICAgICAgICAgICAtLXVuaXZlcnNhbC1hcmNocz1pbnRlbCBcCisgICAgICAgICAgICAtLWRlcC10YXJnZXQ9MTAuNgorCisgICAgLSBidWlsZHMgdGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMKKworICAgICAgICAqIE5DdXJzZXMgNS45IChodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTUwMzcpCisgICAgICAgICogU1FMaXRlIDMuNy4xMworICAgICAgICAqIFhaIDUuMC4zCisKKyAgICAtIHVzZXMgc3lzdGVtLXN1cHBsaWVkIHZlcnNpb25zIG9mIHRoaXJkLXBhcnR5IGxpYnJhcmllcworCisgICAgICAgICogcmVhZGxpbmUgbW9kdWxlIGxpbmtzIHdpdGggQXBwbGUgQlNEIGVkaXRsaW5lIChsaWJlZGl0KQorCisgICAgLSByZXF1aXJlcyBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LjkgKG9yIGxhdGVyKSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCisKKyAgICAtIHJlY29tbWVuZGVkIGJ1aWxkIGVudmlyb25tZW50OgorCisgICAgICAgICogTWFjIE9TIFggMTAuNi44IChvciBsYXRlcikKKyAgICAgICAgKiBYY29kZSAzLjIuNgorICAgICAgICAqIGBgTWFjT1NYMTAuNmBgIFNESworICAgICAgICAqIGBgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjZgYAorICAgICAgICAqIEFwcGxlIGBgZ2NjLTQuMmBgCisgICAgICAgICogc3lzdGVtIFB5dGhvbiAyLjYgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKKworICAgIC0gYWx0ZXJuYXRlIGJ1aWxkIGVudmlyb25tZW50czoKKworICAgICAgICAqIG5vbmUuICBYY29kZSA0LnggY3VycmVudGx5IHN1cHBsaWVzIHR3byBDIGNvbXBpbGVycy4KKyAgICAgICAgICBgYGxsdm0tZ2NjLTQuMi4xYGAgaGFzIGJlZW4gZm91bmQgdG8gbWlzY29tcGlsZSBQeXRob24gMy4zLnggYW5kCisgICAgICAgICAgcHJvZHVjZSBhIG5vbi1mdW5jdGlvbmFsIFB5dGhvbiBleGVjdXRhYmxlLiAgQXMgaXQgYXBwZWFycyB0byBiZQorICAgICAgICAgIGNvbnNpZGVyZWQgYSBtaWdyYXRpb24gYWlkIGJ5IEFwcGxlIGFuZCBpcyBub3QgbGlrZWx5IHRvIGJlIGZpeGVkLAorICAgICAgICAgIGl0cyB1c2Ugc2hvdWxkIGJlIGF2b2lkZWQuICBUaGUgb3RoZXIgY29tcGlsZXIsIGBgY2xhbmdgYCwgaGFzIGJlZW4KKyAgICAgICAgICB1bmRlcmdvaW5nIHJhcGlkIGRldmVsb3BtZW50LiAgV2hpbGUgaXQgYXBwZWFycyB0byBoYXZlIGJlY29tZQorICAgICAgICAgIHByb2R1Y3Rpb24tcmVhZHkgaW4gdGhlIG1vc3QgcmVjZW50IFhjb2RlIDQgcmVsZWFzZXMgKFhjb2RlIDQuNC4xCisgICAgICAgICAgYXMgb2YgdGhpcyB3cml0aW5nKSwgdGhlcmUgYXJlIHN0aWxsIHNvbWUgb3BlbiBpc3N1ZXMgd2hlbgorICAgICAgICAgIGJ1aWxkaW5nIFB5dGhvbiBhbmQgdGhlcmUgaGFzIG5vdCB5ZXQgYmVlbiB0aGUgbGV2ZWwgb2YgZXhwb3N1cmUgaW4KKyAgICAgICAgICBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB0aGF0IHRoZSBYY29kZSAzIGdjYy00LjIgY29tcGlsZXIgaGFzIGhhZC4KKworCisqICAgRm9yIFB5dGhvbiAyLjcueCBhbmQgMy4yLngsIHRoZSAzMi1iaXQtb25seSBpbnN0YWxsZXIgd2FzIGNvbmZpZ3VyZWQgdG8KKyAgICBzdXBwb3J0IE1hYyBPUyBYIDEwLjMuOSB0aHJvdWdoIChhdCBsZWFzdCkgMTAuNi4gIEJlY2F1c2UgaXQgaXMKKyAgICBiZWxpZXZlZCB0aGF0IHRoZXJlIGFyZSBmZXcgc3lzdGVtcyBzdGlsbCBydW5uaW5nIE9TIFggMTAuMyBvciAxMC40CisgICAgYW5kIGJlY2F1c2UgaXQgaGFzIGJlY29tZSBpbmNyZWFzaW5nbHkgZGlmZmljdWx0IHRvIHRlc3QgYW5kCisgICAgc3VwcG9ydCB0aGUgZGlmZmVyZW5jZXMgaW4gdGhlc2UgZWFybGllciBzeXN0ZW1zLCBhcyBvZiBQeXRob24gMy4zLjAgdGhlIFBTRgorICAgIDMyLWJpdCBpbnN0YWxsZXIgbm8gbG9uZ2VyIHN1cHBvcnRzIHRoZW0uICBGb3IgcmVmZXJlbmNlIGluIGJ1aWxkaW5nIHN1Y2gKKyAgICBhbiBpbnN0YWxsZXIgeW91cnNlbGYsIHRoZSBkZXRhaWxzIGFyZTo6CisKKyAgICAgICAgL3Vzci9iaW4vcHl0aG9uIGJ1aWxkLWluc3RhbGxlci5weSBcCiAgICAgICAgICAgICAtLXNkay1wYXRoPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsgXAogICAgICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9MzItYml0IFwKICAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC4zIAotICAgICAgICAgICAgIyBUaGVzZSBhcmUgdGhlIGN1cnJlbnQgZGVmYXVsdCBvcHRpb25zCiAKICAgICAtIGJ1aWxkcyB0aGUgZm9sbG93aW5nIHRoaXJkLXBhcnR5IGxpYnJhcmllcwogCiAgICAgICAgICogQnppcDIKLSAgICAgICAgKiBabGliIDEuMi4zCisgICAgICAgICogTkN1cnNlcwogICAgICAgICAqIEdOVSBSZWFkbGluZSAoR1BMKQogICAgICAgICAqIFNRTGl0ZSAzCi0gICAgICAgICogTkN1cnNlcworICAgICAgICAqIFhaCisgICAgICAgICogWmxpYiAxLjIuMwogICAgICAgICAqIE9yYWNsZSBTbGVlcHljYXQgREIgNC44IChQeXRob24gMi54IG9ubHkpCiAKICAgICAtIHJlcXVpcmVzIEFjdGl2ZVN0YXRlIGBgVGNsL1RrIDguNGBgIChjdXJyZW50bHkgOC40LjE5KSB0byBiZSBpbnN0YWxsZWQgZm9yIGJ1aWxkaW5nCiAKLSAgICAtIGN1cnJlbnQgdGFyZ2V0IGJ1aWxkIGVudmlyb25tZW50OgorICAgIC0gcmVjb21tZW5kZWQgYnVpbGQgZW52aXJvbm1lbnQ6CiAgICAgICAgIAogICAgICAgICAqIE1hYyBPUyBYIDEwLjUuOCBQUEMgb3IgSW50ZWwKICAgICAgICAgKiBYY29kZSAzLjEuNCAob3IgbGF0ZXIpCiAgICAgICAgICogYGBNYWNPU1gxMC40dWBgIFNESyAobGF0ZXIgU0RLcyBkbyBub3Qgc3VwcG9ydCBQUEMgRzMgcHJvY2Vzc29ycykKICAgICAgICAgKiBgYE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC4zYGAKICAgICAgICAgKiBBcHBsZSBgYGdjYy00LjBgYAotICAgICAgICAqIFB5dGhvbiAyLm4gKG4gPj0gNCkgZm9yIGRvY3VtZW50YXRpb24gYnVpbGQgd2l0aCBTcGhpbngKKyAgICAgICAgKiBzeXN0ZW0gUHl0aG9uIDIuNSBmb3IgZG9jdW1lbnRhdGlvbiBidWlsZCB3aXRoIFNwaGlueAogCiAgICAgLSBhbHRlcm5hdGUgYnVpbGQgZW52aXJvbm1lbnRzOgogCi0gICAgICAgICogTWFjIE9TIFggMTAuNC4xMSB3aXRoIFhjb2RlIDIuNQotICAgICAgICAqIE1hYyBPUyBYIDEwLjYuNiB3aXRoIFhjb2RlIDMuMi41CisgICAgICAgICogTWFjIE9TIFggMTAuNi44IHdpdGggWGNvZGUgMy4yLjYKICAgICAgICAgICAgIC0gbmVlZCB0byBjaGFuZ2UgYGAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy97VGNsLFRrfS5mcmFtZXdvcmsvVmVyc2lvbi9DdXJyZW50YGAgdG8gYGA4LjRgYAogCi0yLiAgNjQtYml0IC8gMzItYml0LCB4ODZfNjQgYW5kIGkzODYgdW5pdmVyc2FsLCBmb3IgT1MgWCAxMC42IChhbmQgbGF0ZXIpOjoKLQotICAgICAgICBweXRob24gYnVpbGQtaW5zdGFsbGVyLnB5IFwKLSAgICAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjYuc2RrIFwKLSAgICAgICAgICAgIC0tdW5pdmVyc2FsLWFyY2hzPWludGVsIFwKLSAgICAgICAgICAgIC0tZGVwLXRhcmdldD0xMC42Ci0KLSAgICAtIHVzZXMgc3lzdGVtLXN1cHBsaWVkIHZlcnNpb25zIG9mIHRoaXJkLXBhcnR5IGxpYnJhcmllcwotICAgIAotICAgICAgICAqIHJlYWRsaW5lIG1vZHVsZSBsaW5rcyB3aXRoIEFwcGxlIEJTRCBlZGl0bGluZSAobGliZWRpdCkKLSAgICAgICAgKiBidWlsZHMgT3JhY2xlIFNsZWVweWNhdCBEQiA0LjggKFB5dGhvbiAyLnggb25seSkKLQotICAgIC0gcmVxdWlyZXMgQWN0aXZlU3RhdGUgVGNsL1RrIDguNS45IChvciBsYXRlcikgdG8gYmUgaW5zdGFsbGVkIGZvciBidWlsZGluZwotCi0gICAgLSBjdXJyZW50IHRhcmdldCBidWlsZCBlbnZpcm9ubWVudDoKLSAgICAgICAgCi0gICAgICAgICogTWFjIE9TIFggMTAuNi42IChvciBsYXRlcikKLSAgICAgICAgKiBYY29kZSAzLjIuNSAob3IgbGF0ZXIpCi0gICAgICAgICogYGBNYWNPU1gxMC42YGAgU0RLCi0gICAgICAgICogYGBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9MTAuNmBgCi0gICAgICAgICogQXBwbGUgYGBnY2MtNC4yYGAKLSAgICAgICAgKiBQeXRob24gMi5uIChuID49IDQpIGZvciBkb2N1bWVudGF0aW9uIGJ1aWxkIHdpdGggU3BoaW54Ci0KLSAgICAtIGFsdGVybmF0ZSBidWlsZCBlbnZpcm9ubWVudHM6Ci0KLSAgICAgICAgKiBub25lCiAKIAogR2VuZXJhbCBQcmVyZXF1aXNpdGVzCkBAIC04Nyw2ICsxNDIsMTEgQEAKICogSXQgaXMgc2FmZXN0IHRvIHN0YXJ0IGVhY2ggdmFyaWFudCBidWlsZCB3aXRoIGFuIGVtcHR5IHNvdXJjZSBkaXJlY3RvcnkKICAgcG9wdWxhdGVkIHdpdGggYSBmcmVzaCBjb3B5IG9mIHRoZSB1bnRhcnJlZCBzb3VyY2UuCiAKKyogSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVtb3ZlIGFueSBleGlzdGluZyBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUKKyAgUHl0aG9uIGJlaW5nIGJ1aWx0OjoKKworICAgICAgc3VkbyBybSAtcmYgL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zL24ubgorCiAKIFRoZSBSZWNpcGUKIC0tLS0tLS0tLS0KQEAgLTEwNyw5ICsxNjcsOSBAQAogLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIAogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBidWlsZCBhIDQtd2F5IHVuaXZlcnNhbCBpbnN0YWxsZXIgdGhhdCBydW5zIG9uIAotT1MgWCBMZW9wYXJkIG9yIGxhdGVyOjoKK09TIFggMTAuNSBMZW9wYXJkIG9yIGxhdGVyOjoKIAotICBweXRob24gMi42IC9idWlsZC1pbnN0YWxsZXIucHkgXAorICAgIC91c3IvYmluL3B5dGhvbiAvYnVpbGQtaW5zdGFsbGVyLnB5IFwKICAgICAgICAgLS1kZXAtdGFyZ2V0PTEwLjUKICAgICAgICAgLS11bml2ZXJzYWwtYXJjaHM9YWxsCiAgICAgICAgIC0tc2RrLXBhdGg9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjUuc2RrCkBAIC0xMjAsNyArMTgwLDggQEAKIHZhcmlhbnRzIGNhbiBvbmx5IGJlIHJ1biBvbiBHNSBtYWNoaW5lcyBydW5uaW5nIDEwLjUuICBOb3RlIHRoYXQsCiB3aGlsZSBPUyBYIDEwLjYgaXMgb25seSBzdXBwb3J0ZWQgb24gSW50ZWwtYmFzZWQgbWFjaGluZXMsIGl0IGlzIHBvc3NpYmxlCiB0byBydW4gYGBwcGNgYCAoMzItYml0KSBleGVjdXRhYmxlcyB1bm1vZGlmaWVkIHRoYW5rcyB0byB0aGUgUm9zZXR0YSBwcGMKLWVtdWxhdGlvbiBpbiBPUyBYIDEwLjUgYW5kIDEwLjYuCitlbXVsYXRpb24gaW4gT1MgWCAxMC41IGFuZCAxMC42LiAgVGhlIDQtd2F5IGluc3RhbGxlciB2YXJpYW50IG11c3QgYmUKK2J1aWx0IHdpdGggWGNvZGUgMy4gIEl0IGlzIG5vdCByZWd1bGFybHkgYnVpbHQgb3IgdGVzdGVkLgogCiBPdGhlciBgYC0tdW5pdmVyc2FsLWFyY2hzYGAgb3B0aW9ucyBhcmUgYGA2NC1iaXRgYCAoYGB4ODZfNjRgYCwgYGBwcGM2NGBgKSwKIGFuZCBgYDMtd2F5YGAgKGBgcHBjYGAsIGBgaTM4NmBgLCBgYHg4Nl82NGBgKS4gIE5vbmUgb2YgdGhlc2Ugb3B0aW9ucwpAQCAtMTMzLDE1ICsxOTQsMjEgQEAKIElkZWFsbHksIHRoZSByZXN1bHRpbmcgYmluYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZCBhbmQgdGhlIHRlc3Qgc3VpdGUgcnVuCiBvbiBhbGwgc3VwcG9ydGVkIE9TIFggcmVsZWFzZXMgYW5kIGFyY2hpdGVjdHVyZXMuICBBcyBhIHByYWN0aWNhbCBtYXR0ZXIsCiB0aGF0IGlzIGdlbmVyYWxseSBub3QgcG9zc2libGUuICBBdCBhIG1pbmltdW0sIHZhcmlhbnQgMSBzaG91bGQgYmUgcnVuIG9uCi1hdCBsZWFzdCBvbmUgSW50ZWwsIG9uZSBQUEMgRzQsIGFuZCBvbmUgUFBDIEczIHN5c3RlbSBhbmQgb25lIGVhY2ggb2YgCi1PUyBYIDEwLjYsIDEwLjUsIDEwLjQsIGFuZCAxMC4zLjkuICBOb3QgYWxsIHRlc3RzIHJ1biBvbiAxMC4zLjkuCi1WYXJpYW50IDIgc2hvdWxkIGJlIHJ1biBvbiAxMC42IGluIGJvdGggMzItYml0IGFuZCA2NC1iaXQgbW9kZXMuOjoKK2EgUFBDIEc0IHN5c3RlbSB3aXRoIE9TIFggMTAuNSBhbmQgYXQgbGVhc3Qgb25lIEludGVsIHN5c3RlbSBydW5uaW5nIE9TIFgKKzEwLjgsIDEwLjcsIDEwLjYsIG9yIDEwLjUuICBWYXJpYW50IDIgc2hvdWxkIGJlIHJ1biBvbiAxMC44LCAxMC43LCBhbmQgMTAuNgorc3lzdGVtcyBpbiBib3RoIDMyLWJpdCBhbmQgNjQtYml0IG1vZGVzLjo6CiAKLSAgICBhcmNoIC1pMzg2IC91c3IvbG9jYWwvYmluL3B5dGhvbm4ubiAtbSB0ZXN0LnJlZ3J0ZXN0IC13IC11IGFsbCAKLSAgICBhcmNoIC1YODZfNjQgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QucmVncnRlc3QgLXcgLXUgYWxsCisgICAgL3Vzci9sb2NhbC9iaW4vcHl0aG9ubi5uIC1tIHRlc3QgLXcgLXUgYWxsLC1sYXJnZWZpbGUKKyAgICAvdXNyL2xvY2FsL2Jpbi9weXRob25uLm4tMzIgLW0gdGVzdCAtdyAtdSBhbGwKICAgICAKIENlcnRhaW4gdGVzdHMgd2lsbCBiZSBza2lwcGVkIGFuZCBzb21lIGNhdXNlIHRoZSBpbnRlcnByZXRlciB0byBmYWlsCiB3aGljaCB3aWxsIGxpa2VseSBnZW5lcmF0ZSBgYFB5dGhvbiBxdWl0IHVuZXhwZWN0ZWRseWBgIGFsZXJ0IG1lc3NhZ2VzCi10byBiZSBnZW5lcmF0ZWQgYXQgc2V2ZXJhbCBwb2ludHMgZHVyaW5nIGEgdGVzdCBydW4uICBUaGVzZSBjYW4KLWJlIGlnbm9yZWQuCit0byBiZSBnZW5lcmF0ZWQgYXQgc2V2ZXJhbCBwb2ludHMgZHVyaW5nIGEgdGVzdCBydW4uICBUaGVzZSBhcmUgbm9ybWFsCitkdXJpbmcgdGVzdGluZyBhbmQgY2FuIGJlIGlnbm9yZWQuCisKK0l0IGlzIGFsc28gcmVjb21tZW5kIHRvIGxhdW5jaCBJRExFIGFuZCB2ZXJpZnkgdGhhdCBpdCBpcyBhdCBsZWFzdAorZnVuY3Rpb25hbC4gIERvdWJsZS1jbGljayBvbiB0aGUgSURMRSBhcHAgaWNvbiBpbiBgYC9BcHBsaWNhdGlvbnMvUHl0aG9ubi5uYGAuCitJdCBzaG91bGQgYWxzbyBiZSB0ZXN0ZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lOjoKKworICAgIC91c3IvbG9jYWwvYmluL2lkbGVuLm4KIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggYmE5MjAxMi4uYmQwYzQ3NiAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC0xLDcgKzEsNyBAQAotIyEvdXNyL2Jpbi9weXRob24KKyMhL3Vzci9iaW4vZW52IHB5dGhvbgogIiIiCiBUaGlzIHNjcmlwdCBpcyB1c2VkIHRvIGJ1aWxkICJvZmZpY2lhbCIgdW5pdmVyc2FsIGluc3RhbGxlcnMgb24gTWFjIE9TIFguCi1JdCByZXF1aXJlcyBhdCBsZWFzdCBNYWMgT1MgWCAxMC40LCBYY29kZSAyLjIgYW5kIHRoZSAxMC40dSBTREsgZm9yCitJdCByZXF1aXJlcyBhdCBsZWFzdCBNYWMgT1MgWCAxMC41LCBYY29kZSAzLCBhbmQgdGhlIDEwLjR1IFNESyBmb3IKIDMyLWJpdCBidWlsZHMuICA2NC1iaXQgb3IgZm91ci13YXkgdW5pdmVyc2FsIGJ1aWxkcyByZXF1aXJlIGF0IGxlYXN0CiBPUyBYIDEwLjUgYW5kIHRoZSAxMC41IFNESy4KIApAQCAtMTAsMTggKzEwLDQxIEBACiB3aGljaCBpcyB1c2VkIHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uLCBjdXJyZW50bHkgcmVxdWlyZXMgYXQgbGVhc3QKIFB5dGhvbiAyLjQuCiAKK0luIGFkZGl0aW9uIHRvIHdoYXQgaXMgc3VwcGxpZWQgd2l0aCBPUyBYIDEwLjUrIGFuZCBYY29kZSAzKywgdGhlIHNjcmlwdAorcmVxdWlyZXMgYW4gaW5zdGFsbGVkIHZlcnNpb24gb2YgaGcgYW5kIGEgdGhpcmQtcGFydHkgdmVyc2lvbiBvZgorVGNsL1RrIDguNCAoZm9yIE9TIFggMTAuNCBhbmQgMTAuNSBkZXBsb3ltZW50IHRhcmdldHMpIG9yIFRjbC9USyA4LjUKKyhmb3IgMTAuNiBvciBsYXRlcikgaW5zdGFsbGVkIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MuICBXaGVuIGluc3RhbGxlZCwKK3RoZSBQeXRob24gYnVpbHQgYnkgdGhpcyBzY3JpcHQgd2lsbCBhdHRlbXB0IHRvIGR5bmFtaWNhbGx5IGxpbmsgZmlyc3QgdG8KK1RjbCBhbmQgVGsgZnJhbWV3b3JrcyBpbiAvTGlicmFyeS9GcmFtZXdvcmtzIGlmIGF2YWlsYWJsZSBvdGhlcndpc2UgZmFsbAorYmFjayB0byB0aGUgb25lcyBpbiAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrLiAgRm9yIHRoZSBidWlsZCwgd2UgcmVjb21tZW5kCitpbnN0YWxsaW5nIHRoZSBtb3N0IHJlY2VudCBBY3RpdmVUY2wgOC40IG9yIDguNSB2ZXJzaW9uLgorCiszMi1iaXQtb25seSBpbnN0YWxsZXIgYnVpbGRzIGFyZSBzdGlsbCBwb3NzaWJsZSBvbiBPUyBYIDEwLjQgd2l0aCBYY29kZSAyLjUKK2FuZCB0aGUgaW5zdGFsbGF0aW9uIG9mIGFkZGl0aW9uYWwgY29tcG9uZW50cywgc3VjaCBhcyBhIG5ld2VyIFB5dGhvbgorKDIuNSBpcyBuZWVkZWQgZm9yIFB5dGhvbiBwYXJzZXIgdXBkYXRlcyksIGhnLCBhbmQgc3ZuIChmb3IgdGhlIGRvY3VtZW50YXRpb24KK2J1aWxkKS4KKwogVXNhZ2U6IHNlZSBVU0FHRSB2YXJpYWJsZSBpbiB0aGUgc2NyaXB0LgogIiIiCi1pbXBvcnQgcGxhdGZvcm0sIG9zLCBzeXMsIGdldG9wdCwgdGV4dHdyYXAsIHNodXRpbCwgdXJsbGliMiwgc3RhdCwgdGltZSwgcHdkCi1pbXBvcnQgZ3JwCitpbXBvcnQgcGxhdGZvcm0sIG9zLCBzeXMsIGdldG9wdCwgdGV4dHdyYXAsIHNodXRpbCwgc3RhdCwgdGltZSwgcHdkLCBncnAKK3RyeToKKyAgICBpbXBvcnQgdXJsbGliMiBhcyB1cmxsaWJfcmVxdWVzdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCB1cmxsaWIucmVxdWVzdCBhcyB1cmxsaWJfcmVxdWVzdAorCitTVEFUXzBvNzU1ID0gKCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IKKyAgICAgICAgICAgICB8IHN0YXQuU19JUkdSUCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWEdSUAorICAgICAgICAgICAgIHwgc3RhdC5TX0lST1RIIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYT1RIICkKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCiAKIElOQ0xVREVfVElNRVNUQU1QID0gMQogVkVSQk9TRSA9IDEKIAogZnJvbSBwbGlzdGxpYiBpbXBvcnQgUGxpc3QKIAotaW1wb3J0IE1hY09TCi0KIHRyeToKICAgICBmcm9tIHBsaXN0bGliIGltcG9ydCB3cml0ZVBsaXN0CiBleGNlcHQgSW1wb3J0RXJyb3I6CkBAIC00MiwyMCArNjUsMzUgQEAKICAgICAgICAgaWYgbG4uc3RhcnRzd2l0aCh2YXJpYWJsZSk6CiAgICAgICAgICAgICB2YWx1ZSA9IGxuW2xlbih2YXJpYWJsZSk6XS5zdHJpcCgpCiAgICAgICAgICAgICByZXR1cm4gdmFsdWVbMTotMV0KLSAgICByYWlzZSBSdW50aW1lRXJyb3IsICJDYW5ub3QgZmluZCB2YXJpYWJsZSAlcyIgJSB2YXJpYWJsZVs6LTFdCisgICAgcmFpc2UgUnVudGltZUVycm9yKCJDYW5ub3QgZmluZCB2YXJpYWJsZSAlcyIgJSB2YXJpYWJsZVs6LTFdKQorCitfY2FjaGVfZ2V0VmVyc2lvbiA9IE5vbmUKIAogZGVmIGdldFZlcnNpb24oKToKLSAgICByZXR1cm4gZ3JlcFZhbHVlKG9zLnBhdGguam9pbihTUkNESVIsICdjb25maWd1cmUnKSwgJ1BBQ0tBR0VfVkVSU0lPTicpCisgICAgZ2xvYmFsIF9jYWNoZV9nZXRWZXJzaW9uCisgICAgaWYgX2NhY2hlX2dldFZlcnNpb24gaXMgTm9uZToKKyAgICAgICAgX2NhY2hlX2dldFZlcnNpb24gPSBncmVwVmFsdWUoCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oU1JDRElSLCAnY29uZmlndXJlJyksICdQQUNLQUdFX1ZFUlNJT04nKQorICAgIHJldHVybiBfY2FjaGVfZ2V0VmVyc2lvbgogCiBkZWYgZ2V0VmVyc2lvblR1cGxlKCk6CiAgICAgcmV0dXJuIHR1cGxlKFtpbnQobikgZm9yIG4gaW4gZ2V0VmVyc2lvbigpLnNwbGl0KCcuJyldKQogCitkZWYgZ2V0VmVyc2lvbk1ham9yTWlub3IoKToKKyAgICByZXR1cm4gdHVwbGUoW2ludChuKSBmb3IgbiBpbiBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nLCAyKV0pCisKK19jYWNoZV9nZXRGdWxsVmVyc2lvbiA9IE5vbmUKKwogZGVmIGdldEZ1bGxWZXJzaW9uKCk6CisgICAgZ2xvYmFsIF9jYWNoZV9nZXRGdWxsVmVyc2lvbgorICAgIGlmIF9jYWNoZV9nZXRGdWxsVmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIF9jYWNoZV9nZXRGdWxsVmVyc2lvbgogICAgIGZuID0gb3MucGF0aC5qb2luKFNSQ0RJUiwgJ0luY2x1ZGUnLCAncGF0Y2hsZXZlbC5oJykKICAgICBmb3IgbG4gaW4gb3Blbihmbik6CiAgICAgICAgIGlmICdQWV9WRVJTSU9OJyBpbiBsbjoKLSAgICAgICAgICAgIHJldHVybiBsbi5zcGxpdCgpWy0xXVsxOi0xXQotICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgIkNhbm5vdCBmaW5kIGZ1bGwgdmVyc2lvbj8/IgorICAgICAgICAgICAgX2NhY2hlX2dldEZ1bGxWZXJzaW9uID0gbG4uc3BsaXQoKVstMV1bMTotMV0KKyAgICAgICAgICAgIHJldHVybiBfY2FjaGVfZ2V0RnVsbFZlcnNpb24KKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBmaW5kIGZ1bGwgdmVyc2lvbj8/IikKIAogIyBUaGUgZGlyZWN0b3J5IHdlJ2xsIHVzZSB0byBjcmVhdGUgdGhlIGJ1aWxkICh3aWxsIGJlIGVyYXNlZCBhbmQgcmVjcmVhdGVkKQogV09SS0RJUiA9ICIvdG1wL19weSIKQEAgLTExMSwxMyArMTQ5LDE1IEBACiBERVBUQVJHRVQgPSAnMTAuMycKIAogdGFyZ2V0X2NjX21hcCA9IHsKLSAgICAgICAgJzEwLjMnOiAnZ2NjLTQuMCcsCi0gICAgICAgICcxMC40JzogJ2djYy00LjAnLAotICAgICAgICAnMTAuNSc6ICdnY2MtNC4wJywKLSAgICAgICAgJzEwLjYnOiAnZ2NjLTQuMicsCisgICAgICAgICcxMC4zJzogKCdnY2MtNC4wJywgJ2crKy00LjAnKSwKKyAgICAgICAgJzEwLjQnOiAoJ2djYy00LjAnLCAnZysrLTQuMCcpLAorICAgICAgICAnMTAuNSc6ICgnZ2NjLTQuMicsICdnKystNC4yJyksCisgICAgICAgICcxMC42JzogKCdnY2MtNC4yJywgJ2crKy00LjInKSwKKyAgICAgICAgJzEwLjcnOiAoJ2NsYW5nJywgJ2NsYW5nKysnKSwKKyAgICAgICAgJzEwLjgnOiAoJ2NsYW5nJywgJ2NsYW5nKysnKSwKIH0KIAotQ0MgPSB0YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KK0NDLCBDWFggPSB0YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KIAogUFlUSE9OXzMgPSBnZXRWZXJzaW9uVHVwbGUoKSA+PSAoMywgMCkKIApAQCAtMTM1LDYgKzE3NSwxMyBAQAogICAgIC0tdW5pdmVyc2FsLWFyY2hzPXggIHVuaXZlcnNhbCBhcmNoaXRlY3R1cmVzIChvcHRpb25zOiAlKFVOSVZFUlNBTE9QVFMpciwgZGVmYXVsdDogJShVTklWRVJTQUxBUkNIUylyKQogIiIiKSUgZ2xvYmFscygpCiAKKyMgRGljdCBvZiBvYmplY3QgZmlsZSBuYW1lcyB3aXRoIHNoYXJlZCBsaWJyYXJ5IG5hbWVzIHRvIGNoZWNrIGFmdGVyIGJ1aWxkaW5nLgorIyBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHdlIGVuZGVkIHVwIGR5bmFtaWNhbGx5IGxpbmtpbmcgd2l0aCB0aGUgc2hhcmVkCisjIGxpYnJhcnkgcGF0aHMgYW5kIHZlcnNpb25zIHdlIGV4cGVjdGVkLiAgRm9yIGV4YW1wbGU6CisjICAgRVhQRUNURURfU0hBUkVEX0xJQlNbJ190a2ludGVyLnNvJ10gPSBbCisjICAgICAgICAgICAgICAgICAgICAgICAnL0xpYnJhcnkvRnJhbWV3b3Jrcy9UY2wuZnJhbWV3b3JrL1ZlcnNpb25zLzguNS9UY2wnLAorIyAgICAgICAgICAgICAgICAgICAgICAgJy9MaWJyYXJ5L0ZyYW1ld29ya3MvVGsuZnJhbWV3b3JrL1ZlcnNpb25zLzguNS9UayddCitFWFBFQ1RFRF9TSEFSRURfTElCUyA9IHt9CiAKICMgSW5zdHJ1Y3Rpb25zIGZvciBidWlsZGluZyBsaWJyYXJpZXMgdGhhdCBhcmUgbmVjZXNzYXJ5IGZvciBidWlsZGluZyBhCiAjIGJhdHRlcmllcyBpbmNsdWRlZCBweXRob24uCkBAIC0xNDMsNiArMTkwLDcxIEBACiBkZWYgbGlicmFyeV9yZWNpcGVzKCk6CiAgICAgcmVzdWx0ID0gW10KIAorICAgIExUXzEwXzUgPSBib29sKERFUFRBUkdFVCA8ICcxMC41JykKKworICAgIHJlc3VsdC5leHRlbmQoWworICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgIG5hbWU9IlhaIDUuMC4zIiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotNS4wLjMudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09J2ZlZmU1MmY5ZWNkNTIxZGUyYThjZTM4YzIxYTI3NTc0JywKKyAgICAgICAgICAgICAgY29uZmlndXJlX3ByZT1bCisgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZycsCisgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgKSwKKyAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICBuYW1lPSJOQ3Vyc2VzIDUuOSIsCisgICAgICAgICAgICAgIHVybD0iaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvbmN1cnNlcy9uY3Vyc2VzLTUuOS50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nOGNiOWM0MTJlNWYyZDk2YmM2ZjQ1OWFhOGM2MjgyYTEnLAorICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKKyAgICAgICAgICAgICAgICAgICItLWVuYWJsZS13aWRlYyIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LWN4eCIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LWN4eC1iaW5kaW5nIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtYWRhIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3Vyc2VzLWgiLAorICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXNoYXJlZCIsCisgICAgICAgICAgICAgICAgICAiLS13aXRoLXNoYXJlZCIsCisgICAgICAgICAgICAgICAgICAiLS13aXRob3V0LWRlYnVnIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtbm9ybWFsIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtdGVzdHMiLAorICAgICAgICAgICAgICAgICAgIi0td2l0aG91dC1tYW5wYWdlcyIsCisgICAgICAgICAgICAgICAgICAiLS1kYXRhZGlyPS91c3Ivc2hhcmUiLAorICAgICAgICAgICAgICAgICAgIi0tc3lzY29uZmRpcj0vZXRjIiwKKyAgICAgICAgICAgICAgICAgICItLXNoYXJlZHN0YXRlZGlyPS91c3IvY29tIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGgtdGVybWluZm8tZGlycz0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKKyAgICAgICAgICAgICAgICAgICItLXdpdGgtZGVmYXVsdC10ZXJtaW5mby1kaXI9L3Vzci9zaGFyZS90ZXJtaW5mbyIsCisgICAgICAgICAgICAgICAgICAiLS1saWJkaXI9L0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYiIlKGdldFZlcnNpb24oKSwpLAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICBwYXRjaHNjcmlwdHM9WworICAgICAgICAgICAgICAgICAgKCJmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLy81LjkvbmN1cnNlcy01LjktMjAxMjA2MTYtcGF0Y2guc2guYnoyIiwKKyAgICAgICAgICAgICAgICAgICAiZjU0YmYwMmEzNDlmOTZhN2M0ZjBkMDA5MjJmM2EwZDQiKSwKKyAgICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICB1c2VMREZsYWdzPUZhbHNlLAorICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlICYmIG1ha2UgaW5zdGFsbCBERVNURElSPSVzICYmIGNkICVzL3Vzci9sb2NhbC9saWIgJiYgbG4gLWZzIC4uLy4uLy4uL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYi9saWIqIC4nJSgKKyAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCisgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAorICAgICAgICAgICAgICAgICAgZ2V0VmVyc2lvbigpLAorICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICApLAorICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgIG5hbWU9IlNRTGl0ZSAzLjcuMTMiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cuc3FsaXRlLm9yZy9zcWxpdGUtYXV0b2NvbmYtMzA3MTMwMC50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nYzk3ZGY0MDNlOGEzZDViNjdiYjQwOGZjZDZhYWJkOGUnLAorICAgICAgICAgICAgICBleHRyYV9jZmxhZ3M9KCctT3MgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTNCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFMzX1BBUkVOVEhFU0lTICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX1JUUkVFICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfVENMPTAgJworICAgICAgICAgICAgICAgICAnJXMnICUgKCcnLCctRFNRTElURV9XSVRIT1VUX1pPTkVNQUxMT0MgJylbTFRfMTBfNV0pLAorICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKKyAgICAgICAgICAgICAgICAgICctLWVuYWJsZS10aHJlYWRzYWZlJywKKyAgICAgICAgICAgICAgICAgICctLWVuYWJsZS1zaGFyZWQ9bm8nLAorICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXN0YXRpYz15ZXMnLAorICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1yZWFkbGluZScsCisgICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnLAorICAgICAgICAgICAgICBdCisgICAgICAgICAgKSwKKyAgICAgICAgXSkKKwogICAgIGlmIERFUFRBUkdFVCA8ICcxMC41JzoKICAgICAgICAgcmVzdWx0LmV4dGVuZChbCiAgICAgICAgICAgZGljdCgKQEAgLTE1MCw4ICsyNjIsOCBAQAogICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly9iemlwLm9yZy8xLjAuNi9iemlwMi0xLjAuNi50YXIuZ3oiLAogICAgICAgICAgICAgICBjaGVja3N1bT0nMDBiNTE2ZjQ3MDRkNGE3Y2I1MGExZDk3ZTZlOGUxNWInLAogICAgICAgICAgICAgICBjb25maWd1cmU9Tm9uZSwKLSAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIFBSRUZJWD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAotICAgICAgICAgICAgICAgICAgQ0MsCisgICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgaW5zdGFsbCBDQz0lcyBDWFg9JXMsIFBSRUZJWD0lcy91c3IvbG9jYWwvIENGTEFHUz0iLWFyY2ggJXMgLWlzeXNyb290ICVzIiclKAorICAgICAgICAgICAgICAgICAgQ0MsIENYWCwKICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCiAgICAgICAgICAgICAgICAgICAnIC1hcmNoICcuam9pbihBUkNITElTVCksCiAgICAgICAgICAgICAgICAgICBTREtQQVRILApAQCAtMTYyLDggKzI3NCw4IEBACiAgICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5nemlwLm9yZy96bGliL3psaWItMS4yLjMudGFyLmd6IiwKICAgICAgICAgICAgICAgY2hlY2tzdW09J2RlYmM2Mjc1ODcxNmExNjlkZjlmNjJlNmFiMmJjNjM0JywKICAgICAgICAgICAgICAgY29uZmlndXJlPU5vbmUsCi0gICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgaW5zdGFsbCBDQz0lcyBwcmVmaXg9JXMvdXNyL2xvY2FsLyBDRkxBR1M9Ii1hcmNoICVzIC1pc3lzcm9vdCAlcyInJSgKLSAgICAgICAgICAgICAgICAgIENDLAorICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgQ1hYPSVzLCBwcmVmaXg9JXMvdXNyL2xvY2FsLyBDRkxBR1M9Ii1hcmNoICVzIC1pc3lzcm9vdCAlcyInJSgKKyAgICAgICAgICAgICAgICAgIENDLCBDWFgsCiAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAogICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oQVJDSExJU1QpLAogICAgICAgICAgICAgICAgICAgU0RLUEFUSCwKQEAgLTE3OCw1OCArMjkwLDEyIEBACiAgICAgICAgICAgICAgIHBhdGNoZXM9WwogICAgICAgICAgICAgICAgICAgIyBUaGUgcmVhZGxpbmUgbWFpbnRhaW5lcnMgZG9uJ3QgZG8gYWN0dWFsIG1pY3JvIHJlbGVhc2VzLCBidXQKICAgICAgICAgICAgICAgICAgICMganVzdCBzaGlwIGEgc2V0IG9mIHBhdGNoZXMuCi0gICAgICAgICAgICAgICAgICAnaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNi4xLXBhdGNoZXMvcmVhZGxpbmU2MS0wMDEnLAotICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L3JlYWRsaW5lL3JlYWRsaW5lLTYuMS1wYXRjaGVzL3JlYWRsaW5lNjEtMDAyJywKKyAgICAgICAgICAgICAgICAgICgnaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvcmVhZGxpbmUvcmVhZGxpbmUtNi4xLXBhdGNoZXMvcmVhZGxpbmU2MS0wMDEnLAorICAgICAgICAgICAgICAgICAgICdjNjQyZjJlODRkODIwODg0YjBiZjlmZDE3NmJjNmMzZicpLAorICAgICAgICAgICAgICAgICAgKCdodHRwOi8vZnRwLmdudS5vcmcvcHViL2dudS9yZWFkbGluZS9yZWFkbGluZS02LjEtcGF0Y2hlcy9yZWFkbGluZTYxLTAwMicsCisgICAgICAgICAgICAgICAgICAgJzFhNzY3ODFhMWVhNzM0ZTgzMTU4ODI4NWRiN2VjOWIxJyksCiAgICAgICAgICAgICAgIF0KICAgICAgICAgICApLAotICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlNRTGl0ZSAzLjcuNCIsCi0gICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5zcWxpdGUub3JnL3NxbGl0ZS1hdXRvY29uZi0zMDcwNDAwLnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSc4ZjBjNjkwYmZiMzNjM2NiYmMyNDcxYzNkOWJhMDE1OCcsCi0gICAgICAgICAgICAgIGNvbmZpZ3VyZV9lbnY9KCdDRkxBR1M9Ii1PcycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1EU1FMSVRFX0VOQUJMRV9GVFMzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLURTUUxJVEVfRU5BQkxFX0ZUUzNfUEFSRU5USEVTSVMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtRFNRTElURV9FTkFCTEVfUlRSRUUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtRFNRTElURV9UQ0w9MCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIicpLAotICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKLSAgICAgICAgICAgICAgICAgICctLWVuYWJsZS10aHJlYWRzYWZlJywKLSAgICAgICAgICAgICAgICAgICctLWVuYWJsZS1zaGFyZWQ9bm8nLAotICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXN0YXRpYz15ZXMnLAotICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1yZWFkbGluZScsCi0gICAgICAgICAgICAgICAgICAnLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcnLAotICAgICAgICAgICAgICBdCi0gICAgICAgICAgKSwKLSAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJOQ3Vyc2VzIDUuNSIsCi0gICAgICAgICAgICAgIHVybD0iaHR0cDovL2Z0cC5nbnUub3JnL3B1Yi9nbnUvbmN1cnNlcy9uY3Vyc2VzLTUuNS50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nZTczYzFhYzEwYjRiZmM0NmRiNDNiMmRkZmQ2MjQ0ZWYnLAotICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKLSAgICAgICAgICAgICAgICAgICItLWVuYWJsZS13aWRlYyIsCi0gICAgICAgICAgICAgICAgICAiLS13aXRob3V0LWN4eCIsCi0gICAgICAgICAgICAgICAgICAiLS13aXRob3V0LWFkYSIsCi0gICAgICAgICAgICAgICAgICAiLS13aXRob3V0LXByb2dzIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGhvdXQtY3Vyc2VzLWgiLAotICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXNoYXJlZCIsCi0gICAgICAgICAgICAgICAgICAiLS13aXRoLXNoYXJlZCIsCi0gICAgICAgICAgICAgICAgICAiLS1kYXRhZGlyPS91c3Ivc2hhcmUiLAotICAgICAgICAgICAgICAgICAgIi0tc3lzY29uZmRpcj0vZXRjIiwKLSAgICAgICAgICAgICAgICAgICItLXNoYXJlZHN0YXRlZGlyPS91c3IvY29tIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGgtdGVybWluZm8tZGlycz0vdXNyL3NoYXJlL3Rlcm1pbmZvIiwKLSAgICAgICAgICAgICAgICAgICItLXdpdGgtZGVmYXVsdC10ZXJtaW5mby1kaXI9L3Vzci9zaGFyZS90ZXJtaW5mbyIsCi0gICAgICAgICAgICAgICAgICAiLS1saWJkaXI9L0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYiIlKGdldFZlcnNpb24oKSwpLAotICAgICAgICAgICAgICAgICAgIi0tZW5hYmxlLXRlcm1jYXAiLAotICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICBwYXRjaGVzPVsKLSAgICAgICAgICAgICAgICAgICJuY3Vyc2VzLTUuNS5wYXRjaCIsCi0gICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgIHVzZUxERmxhZ3M9RmFsc2UsCi0gICAgICAgICAgICAgIGluc3RhbGw9J21ha2UgJiYgbWFrZSBpbnN0YWxsIERFU1RESVI9JXMgJiYgY2QgJXMvdXNyL2xvY2FsL2xpYiAmJiBsbiAtZnMgLi4vLi4vLi4vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliL2xpYiogLiclKAotICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKLSAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnKSksCi0gICAgICAgICAgICAgICAgICBnZXRWZXJzaW9uKCksCi0gICAgICAgICAgICAgICAgICApLAotICAgICAgICAgICksCiAgICAgICAgIF0pCiAKICAgICBpZiBub3QgUFlUSE9OXzM6CkBAIC0yOTgsOSArMzY0LDcgQEAKICAgICAgICAgICAgIHNvdXJjZT0iL3B5ZG9jcyIsCiAgICAgICAgICAgICByZWFkbWU9IiIiXAogICAgICAgICAgICAgICAgIFRoaXMgcGFja2FnZSBpbnN0YWxscyB0aGUgcHl0aG9uIGRvY3VtZW50YXRpb24gYXQgYSBsb2NhdGlvbgotICAgICAgICAgICAgICAgIHRoYXQgaXMgdXNlYWJsZSBmb3IgcHlkb2MgYW5kIElETEUuIElmIHlvdSBoYXZlIGluc3RhbGxlZCBYY29kZQotICAgICAgICAgICAgICAgIGl0IHdpbGwgYWxzbyBpbnN0YWxsIGEgbGluayB0byB0aGUgZG9jdW1lbnRhdGlvbiBpbgotICAgICAgICAgICAgICAgIC9EZXZlbG9wZXIvRG9jdW1lbnRhdGlvbi9QeXRob24KKyAgICAgICAgICAgICAgICB0aGF0IGlzIHVzZWFibGUgZm9yIHB5ZG9jIGFuZCBJRExFLgogICAgICAgICAgICAgICAgICIiIiwKICAgICAgICAgICAgIHBvc3RmbGlnaHQ9InNjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uIiwKICAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLApAQCAtMzI2LDcgKzM5MCw3IEBACiAgICAgICAgICksCiAgICAgXQogCi0gICAgaWYgREVQVEFSR0VUIDwgJzEwLjQnOgorICAgIGlmIERFUFRBUkdFVCA8ICcxMC40JyBhbmQgbm90IFBZVEhPTl8zOgogICAgICAgICByZXN1bHQuYXBwZW5kKAogICAgICAgICAgICAgZGljdCgKICAgICAgICAgICAgICAgICBuYW1lPSJQeXRob25TeXN0ZW1GaXhlcyIsCkBAIC0zNTgsNyArNDIyLDcgQEAKICAgICAiIiIKICAgICBSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoZSBuYW1lZCBmaWxlCiAgICAgIiIiCi0gICAgcmV0dXJuIG9wZW4oZm4sICdyYicpLnJlYWQoKQorICAgIHJldHVybiBvcGVuKGZuLCAncicpLnJlYWQoKQogCiBkZWYgcnVuQ29tbWFuZChjb21tYW5kbGluZSk6CiAgICAgIiIiCkBAIC0zNzAsNyArNDM0LDcgQEAKICAgICB4aXQgPSBmZC5jbG9zZSgpCiAgICAgaWYgeGl0IGlzIG5vdCBOb25lOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpCi0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjb21tYW5kIGZhaWxlZDogJXMiJShjb21tYW5kbGluZSwpKQogCiAgICAgaWYgVkVSQk9TRToKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShkYXRhKTsgc3lzLnN0ZG91dC5mbHVzaCgpCkBAIC0zODEsNyArNDQ1LDcgQEAKICAgICB4aXQgPSBmZC5jbG9zZSgpCiAgICAgaWYgeGl0IGlzIG5vdCBOb25lOgogICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKGRhdGEpCi0gICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvciwgImNvbW1hbmQgZmFpbGVkOiAlcyIlKGNvbW1hbmRsaW5lLCkKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJjb21tYW5kIGZhaWxlZDogJXMiJShjb21tYW5kbGluZSwpKQogCiAgICAgcmV0dXJuIGRhdGEKIApAQCAtNDIzLDM5ICs0ODcsNjAgQEAKICAgICAjIEJlY2F1c2Ugd2Ugb25seSBzdXBwb3J0IGR5bmFtaWMgbG9hZCBvZiBvbmx5IG9uZSBtYWpvci9taW5vciB2ZXJzaW9uIG9mCiAgICAgIyBUY2wvVGssIGVuc3VyZToKICAgICAjIDEuIHRoZXJlIGFyZSBubyB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmtzIG9mIFRjbC9UayB3aXRoIHZlcnNpb24KLSAgICAjICAgICAgIGhpZ2hlciB0aGFuIHRoZSBBcHBsZS1zdXBwbGllZCBzeXN0ZW0gdmVyc2lvbgotICAgICMgMi4gdGhlcmUgaXMgYSB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmsgaW4gL0xpYnJhcnkvRnJhbWV3b3JrcyB3aXRoIHRoZQotICAgICMgICAgICAgc2FtZSB2ZXJzaW9uIGFzIHRoZSBzeXN0ZW0gdmVyc2lvbi4gIFRoaXMgYWxsb3dzIHVzZXJzIHRvIGNob29zZQotICAgICMgICAgICAgdG8gaW5zdGFsbCBhIG5ld2VyIHBhdGNoIGxldmVsLgorICAgICMgICAgICAgaGlnaGVyIHRoYW4gdGhlIEFwcGxlLXN1cHBsaWVkIHN5c3RlbSB2ZXJzaW9uIGluCisgICAgIyAgICAgICBTREtST09UL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MKKyAgICAjIDIuIHRoZXJlIGlzIGEgdXNlci1pbnN0YWxsZWQgZnJhbWV3b3JrICh1c3VhbGx5IEFjdGl2ZVRjbCkgaW4gKG9yIGxpbmtlZAorICAgICMgICAgICAgaW4pIFNES1JPT1QvTGlicmFyeS9GcmFtZXdvcmtzIHdpdGggdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUgc3lzdGVtCisgICAgIyAgICAgICB2ZXJzaW9uLiBUaGlzIGFsbG93cyB1c2VycyB0byBjaG9vc2UgdG8gaW5zdGFsbCBhIG5ld2VyIHBhdGNoIGxldmVsLgogCisgICAgZnJhbWV3b3JrcyA9IHt9CiAgICAgZm9yIGZyYW1ld29yayBpbiBbJ1RjbCcsICdUayddOgotICAgICAgICAjZncgPSBkaWN0KGxvd2VyPWZyYW1ld29yay5sb3dlcigpLAotICAgICAgICAjICAgICAgICAgICAgdXBwZXI9ZnJhbWV3b3JrLnVwcGVyKCksCi0gICAgICAgICMgICAgICAgICAgICBjYXA9ZnJhbWV3b3JrLmNhcGl0YWxpemUoKSkKLSAgICAgICAgI2Z3cHRoID0gIkxpYnJhcnkvRnJhbWV3b3Jrcy8lKGNhcClzLmZyYW1ld29yay8lKGxvd2VyKXNDb25maWcuc2giICUgZncKLSAgICAgICAgZndwdGggPSAnTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvQ3VycmVudCcKKyAgICAgICAgZndwdGggPSAnTGlicmFyeS9GcmFtZXdvcmtzLyVzLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50JyAlIGZyYW1ld29yawogICAgICAgICBzeXNmdyA9IG9zLnBhdGguam9pbihTREtQQVRILCAnU3lzdGVtJywgZndwdGgpCi0gICAgICAgIGxpYmZ3ID0gb3MucGF0aC5qb2luKCcvJywgZndwdGgpCisgICAgICAgIGxpYmZ3ID0gb3MucGF0aC5qb2luKFNES1BBVEgsIGZ3cHRoKQogICAgICAgICB1c3JmdyA9IG9zLnBhdGguam9pbihvcy5nZXRlbnYoJ0hPTUUnKSwgZndwdGgpCi0gICAgICAgICN2ZXJzaW9uID0gIiUodXBwZXIpc19WRVJTSU9OIiAlIGZ3CisgICAgICAgIGZyYW1ld29ya3NbZnJhbWV3b3JrXSA9IG9zLnJlYWRsaW5rKHN5c2Z3KQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGliZncpOgorICAgICAgICAgICAgZmF0YWwoIlBsZWFzZSBpbnN0YWxsIGEgbGluayB0byBhIGN1cnJlbnQgJXMgJXMgYXMgJXMgc28gIgorICAgICAgICAgICAgICAgICAgICAidGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0gZnJhbWV3b3JrLiIKKyAgICAgICAgICAgICAgICAgICAgJSAoZnJhbWV3b3JrLCBmcmFtZXdvcmtzW2ZyYW1ld29ya10sIGxpYmZ3KSkKICAgICAgICAgaWYgb3MucmVhZGxpbmsobGliZncpICE9IG9zLnJlYWRsaW5rKHN5c2Z3KToKICAgICAgICAgICAgIGZhdGFsKCJWZXJzaW9uIG9mICVzIG11c3QgbWF0Y2ggJXMiICUgKGxpYmZ3LCBzeXNmdykgKQogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1c3Jmdyk6CiAgICAgICAgICAgICBmYXRhbCgiUGxlYXNlIHJlbmFtZSAlcyB0byBhdm9pZCBwb3NzaWJsZSBkeW5hbWljIGxvYWQgaXNzdWVzLiIKICAgICAgICAgICAgICAgICAgICAgJSB1c3JmdykKIAorICAgIGlmIGZyYW1ld29ya3NbJ1RjbCddICE9IGZyYW1ld29ya3NbJ1RrJ106CisgICAgICAgIGZhdGFsKCJUaGUgVGNsIGFuZCBUayBmcmFtZXdvcmtzIGFyZSBub3QgdGhlIHNhbWUgdmVyc2lvbi4iKQorCisgICAgIyBhZGQgZmlsZXMgdG8gY2hlY2sgYWZ0ZXIgYnVpbGQKKyAgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKKyAgICAgICAgICAgICIvTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvVGNsIgorICAgICAgICAgICAgICAgICUgZnJhbWV3b3Jrc1snVGNsJ10sCisgICAgICAgICAgICAiL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvVGsiCisgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUayddLAorICAgICAgICAgICAgXQorCiAgICAgIyBSZW1vdmUgaW5oZXJpdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aGljaCBtaWdodCBpbmZsdWVuY2UgYnVpbGQKICAgICBlbnZpcm9uX3Zhcl9wcmVmaXhlcyA9IFsnQ1BBVEgnLCAnQ19JTkNMVURFXycsICdEWUxEXycsICdMQU5HJywgJ0xDXycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xEXycsICdMSUJSQVJZXycsICdQQVRIJywgJ1BZVEhPTiddCiAgICAgZm9yIGV2IGluIGxpc3Qob3MuZW52aXJvbik6CiAgICAgICAgIGZvciBwcmVmaXggaW4gZW52aXJvbl92YXJfcHJlZml4ZXM6CiAgICAgICAgICAgICBpZiBldi5zdGFydHN3aXRoKHByZWZpeCkgOgotICAgICAgICAgICAgICAgIHByaW50ICJJTkZPOiBkZWxldGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcz0lcyIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYsIG9zLmVudmlyb25bZXZdKQorICAgICAgICAgICAgICAgIHByaW50KCJJTkZPOiBkZWxldGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZSAlcz0lcyIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYsIG9zLmVudmlyb25bZXZdKSkKICAgICAgICAgICAgICAgICBkZWwgb3MuZW52aXJvbltldl0KIAotICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9ICcvYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbicKLSAgICBwcmludCAiU2V0dGluZyBkZWZhdWx0IFBBVEg6ICVzIiUob3MuZW52aXJvblsnUEFUSCddKQorICAgIGJhc2VfcGF0aCA9ICcvYmluOi9zYmluOi91c3IvYmluOi91c3Ivc2JpbicKKyAgICBpZiAnU0RLX1RPT0xTX0JJTicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgYmFzZV9wYXRoID0gb3MuZW52aXJvblsnU0RLX1RPT0xTX0JJTiddICsgJzonICsgYmFzZV9wYXRoCisgICAgIyBYY29kZSAyLjUgb24gT1MgWCAxMC40IGRvZXMgbm90IGluY2x1ZGUgU2V0RmlsZSBpbiBpdHMgdXNyL2JpbjsKKyAgICAjIGFkZCBpdHMgZml4ZWQgbG9jYXRpb24gaGVyZSBpZiBpdCBleGlzdHMKKyAgICBPTERfREVWRUxPUEVSX1RPT0xTID0gJy9EZXZlbG9wZXIvVG9vbHMnCisgICAgaWYgb3MucGF0aC5pc2RpcihPTERfREVWRUxPUEVSX1RPT0xTKToKKyAgICAgICAgYmFzZV9wYXRoID0gYmFzZV9wYXRoICsgJzonICsgT0xEX0RFVkVMT1BFUl9UT09MUworICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGJhc2VfcGF0aAorICAgIHByaW50KCJTZXR0aW5nIGRlZmF1bHQgUEFUSDogJXMiJShvcy5lbnZpcm9uWydQQVRIJ10pKQogCiAKIGRlZiBwYXJzZU9wdGlvbnMoYXJncz1Ob25lKToKQEAgLTQ2Myw3ICs1NDgsNyBAQAogICAgIFBhcnNlIGFyZ3VtZW50cyBhbmQgdXBkYXRlIGdsb2JhbCBzZXR0aW5ncy4KICAgICAiIiIKICAgICBnbG9iYWwgV09SS0RJUiwgREVQU1JDLCBTREtQQVRILCBTUkNESVIsIERFUFRBUkdFVAotICAgIGdsb2JhbCBVTklWRVJTQUxPUFRTLCBVTklWRVJTQUxBUkNIUywgQVJDSExJU1QsIENDCisgICAgZ2xvYmFsIFVOSVZFUlNBTE9QVFMsIFVOSVZFUlNBTEFSQ0hTLCBBUkNITElTVCwgQ0MsIENYWAogCiAgICAgaWYgYXJncyBpcyBOb25lOgogICAgICAgICBhcmdzID0gc3lzLmFyZ3ZbMTpdCkBAIC00NzIsMTggKzU1NywxOCBAQAogICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmdzLCAnP2hiJywKICAgICAgICAgICAgICAgICBbICdidWlsZC1kaXI9JywgJ3RoaXJkLXBhcnR5PScsICdzZGstcGF0aD0nICwgJ3NyYy1kaXI9JywKICAgICAgICAgICAgICAgICAgICdkZXAtdGFyZ2V0PScsICd1bml2ZXJzYWwtYXJjaHM9JywgJ2hlbHAnIF0pCi0gICAgZXhjZXB0IGdldG9wdC5lcnJvciwgbXNnOgotICAgICAgICBwcmludCBtc2cKKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yOgorICAgICAgICBwcmludChzeXMuZXhjX2luZm8oKVsxXSkKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIGlmIGFyZ3M6Ci0gICAgICAgIHByaW50ICJBZGRpdGlvbmFsIGFyZ3VtZW50cyIKKyAgICAgICAgcHJpbnQoIkFkZGl0aW9uYWwgYXJndW1lbnRzIikKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIGRlcHRhcmdldCA9IE5vbmUKICAgICBmb3IgaywgdiBpbiBvcHRpb25zOgogICAgICAgICBpZiBrIGluICgnLWgnLCAnLT8nLCAnLS1oZWxwJyk6Ci0gICAgICAgICAgICBwcmludCBVU0FHRQorICAgICAgICAgICAgcHJpbnQoVVNBR0UpCiAgICAgICAgICAgICBzeXMuZXhpdCgwKQogCiAgICAgICAgIGVsaWYgayBpbiAoJy1kJywgJy0tYnVpbGQtZGlyJyk6CkBAIC01MTEsMjcgKzU5NiwyOCBAQAogICAgICAgICAgICAgICAgICAgICAjIHRhcmdldAogICAgICAgICAgICAgICAgICAgICBERVBUQVJHRVQgPSBkZWZhdWx0X3RhcmdldF9tYXAuZ2V0KHYsICcxMC4zJykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgdgorICAgICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IodikKIAogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgaworICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihrKQogCiAgICAgU1JDRElSPW9zLnBhdGguYWJzcGF0aChTUkNESVIpCiAgICAgV09SS0RJUj1vcy5wYXRoLmFic3BhdGgoV09SS0RJUikKICAgICBTREtQQVRIPW9zLnBhdGguYWJzcGF0aChTREtQQVRIKQogICAgIERFUFNSQz1vcy5wYXRoLmFic3BhdGgoREVQU1JDKQogCi0gICAgQ0M9dGFyZ2V0X2NjX21hcFtERVBUQVJHRVRdCisgICAgQ0MsIENYWD10YXJnZXRfY2NfbWFwW0RFUFRBUkdFVF0KIAotICAgIHByaW50ICJTZXR0aW5nczoiCi0gICAgcHJpbnQgIiAqIFNvdXJjZSBkaXJlY3Rvcnk6IiwgU1JDRElSCi0gICAgcHJpbnQgIiAqIEJ1aWxkIGRpcmVjdG9yeTogIiwgV09SS0RJUgotICAgIHByaW50ICIgKiBTREsgbG9jYXRpb246ICAgICIsIFNES1BBVEgKLSAgICBwcmludCAiICogVGhpcmQtcGFydHkgc291cmNlOiIsIERFUFNSQwotICAgIHByaW50ICIgKiBEZXBsb3ltZW50IHRhcmdldDoiLCBERVBUQVJHRVQKLSAgICBwcmludCAiICogVW5pdmVyc2FsIGFyY2hpdGVjdHVyZXM6IiwgQVJDSExJU1QKLSAgICBwcmludCAiICogQyBjb21waWxlcjoiLCBDQwotICAgIHByaW50ICIiCisgICAgcHJpbnQoIlNldHRpbmdzOiIpCisgICAgcHJpbnQoIiAqIFNvdXJjZSBkaXJlY3Rvcnk6IiwgU1JDRElSKQorICAgIHByaW50KCIgKiBCdWlsZCBkaXJlY3Rvcnk6ICIsIFdPUktESVIpCisgICAgcHJpbnQoIiAqIFNESyBsb2NhdGlvbjogICAgIiwgU0RLUEFUSCkKKyAgICBwcmludCgiICogVGhpcmQtcGFydHkgc291cmNlOiIsIERFUFNSQykKKyAgICBwcmludCgiICogRGVwbG95bWVudCB0YXJnZXQ6IiwgREVQVEFSR0VUKQorICAgIHByaW50KCIgKiBVbml2ZXJzYWwgYXJjaGl0ZWN0dXJlczoiLCBBUkNITElTVCkKKyAgICBwcmludCgiICogQyBjb21waWxlcjoiLCBDQykKKyAgICBwcmludCgiICogQysrIGNvbXBpbGVyOiIsIENYWCkKKyAgICBwcmludCgiIikKIAogCiAKQEAgLTU3NiwzMSArNjYyLDE4IEBACiAgICAgICAgIHhpdCA9IGZwLmNsb3NlKCkKICAgICAgICAgaWYgeGl0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShkYXRhKQotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiQ2Fubm90IGV4dHJhY3QgJXMiJShhcmNoaXZlTmFtZSwpCisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIkNhbm5vdCBleHRyYWN0ICVzIiUoYXJjaGl2ZU5hbWUsKSkKIAogICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCByZXR2YWwpCiAKICAgICBmaW5hbGx5OgogICAgICAgICBvcy5jaGRpcihjdXJkaXIpCiAKLUtOT1dOU0laRVMgPSB7Ci0gICAgImh0dHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L3JlYWRsaW5lL3JlYWRsaW5lLTUuMS50YXIuZ3oiOiA3OTUyNzQyLAotICAgICJodHRwOi8vZG93bmxvYWRzLnNsZWVweWNhdC5jb20vZGItNC40LjIwLnRhci5neiI6IDIwMzAyNzYsCi19Ci0KIGRlZiBkb3dubG9hZFVSTCh1cmwsIGZuYW1lKToKICAgICAiIiIKICAgICBEb3dubG9hZCB0aGUgY29udGVudHMgb2YgdGhlIHVybCBpbnRvIHRoZSBmaWxlLgogICAgICIiIgotICAgIHRyeToKLSAgICAgICAgc2l6ZSA9IG9zLnBhdGguZ2V0c2l6ZShmbmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgIGlmIEtOT1dOU0laRVMuZ2V0KHVybCkgPT0gc2l6ZToKLSAgICAgICAgICAgIHByaW50ICJVc2luZyBleGlzdGluZyBmaWxlIGZvciIsIHVybAotICAgICAgICAgICAgcmV0dXJuCi0gICAgZnBJbiA9IHVybGxpYjIudXJsb3Blbih1cmwpCisgICAgZnBJbiA9IHVybGxpYl9yZXF1ZXN0LnVybG9wZW4odXJsKQogICAgIGZwT3V0ID0gb3BlbihmbmFtZSwgJ3diJykKICAgICBibG9jayA9IGZwSW4ucmVhZCgxMDI0MCkKICAgICB0cnk6CkBAIC02MTUsNiArNjg4LDI0IEBACiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHBhc3MKIAorZGVmIHZlcmlmeVRoaXJkUGFydHlGaWxlKHVybCwgY2hlY2tzdW0sIGZuYW1lKToKKyAgICAiIiIKKyAgICBEb3dubG9hZCBmaWxlIGZyb20gdXJsIHRvIGZpbGVuYW1lIGZuYW1lIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCisgICAgQWJvcnQgaWYgZmlsZSBjb250ZW50cyBkb2VzIG5vdCBtYXRjaCBzdXBwbGllZCBtZDUgY2hlY2tzdW0uCisgICAgIiIiCisgICAgbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZm5hbWUpCisgICAgaWYgb3MucGF0aC5leGlzdHMoZm5hbWUpOgorICAgICAgICBwcmludCgiVXNpbmcgbG9jYWwgY29weSBvZiAlcyIlKG5hbWUsKSkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiRGlkIG5vdCBmaW5kIGxvY2FsIGNvcHkgb2YgJXMiJShuYW1lLCkpCisgICAgICAgIHByaW50KCJEb3dubG9hZGluZyAlcyIlKG5hbWUsKSkKKyAgICAgICAgZG93bmxvYWRVUkwodXJsLCBmbmFtZSkKKyAgICAgICAgcHJpbnQoIkFyY2hpdmUgZm9yICVzIHN0b3JlZCBhcyAlcyIlKG5hbWUsIGZuYW1lKSkKKyAgICBpZiBvcy5zeXN0ZW0oCisgICAgICAgICAgICAnTUQ1PSQob3BlbnNzbCBtZDUgJXMpIDsgdGVzdCAiJHtNRDUjIyo9IH0iID0gIiVzIicKKyAgICAgICAgICAgICAgICAlIChzaGVsbFF1b3RlKGZuYW1lKSwgY2hlY2tzdW0pICk6CisgICAgICAgIGZhdGFsKCdNRDUgY2hlY2tzdW0gbWlzbWF0Y2ggZm9yIGZpbGUgJXMnICUgZm5hbWUpCisKIGRlZiBidWlsZFJlY2lwZShyZWNpcGUsIGJhc2VkaXIsIGFyY2hMaXN0KToKICAgICAiIiIKICAgICBCdWlsZCBzb2Z0d2FyZSB1c2luZyBhIHJlY2lwZS4gVGhpcyBmdW5jdGlvbiBkb2VzIHRoZQpAQCAtNjM1LDE3ICs3MjYsOCBAQAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhERVBTUkMpOgogICAgICAgICBvcy5ta2RpcihERVBTUkMpCiAKLQotICAgIGlmIG9zLnBhdGguZXhpc3RzKHNvdXJjZUFyY2hpdmUpOgotICAgICAgICBwcmludCAiVXNpbmcgbG9jYWwgY29weSBvZiAlcyIlKG5hbWUsKQotCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQgIkRpZCBub3QgZmluZCBsb2NhbCBjb3B5IG9mICVzIiUobmFtZSwpCi0gICAgICAgIHByaW50ICJEb3dubG9hZGluZyAlcyIlKG5hbWUsKQotICAgICAgICBkb3dubG9hZFVSTCh1cmwsIHNvdXJjZUFyY2hpdmUpCi0gICAgICAgIHByaW50ICJBcmNoaXZlIGZvciAlcyBzdG9yZWQgYXMgJXMiJShuYW1lLCBzb3VyY2VBcmNoaXZlKQotCi0gICAgcHJpbnQgIkV4dHJhY3RpbmcgYXJjaGl2ZSBmb3IgJXMiJShuYW1lLCkKKyAgICB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIHJlY2lwZVsnY2hlY2tzdW0nXSwgc291cmNlQXJjaGl2ZSkKKyAgICBwcmludCgiRXh0cmFjdGluZyBhcmNoaXZlIGZvciAlcyIlKG5hbWUsKSkKICAgICBidWlsZERpcj1vcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19ibGQnKQogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhidWlsZERpcik6CiAgICAgICAgIG9zLm1rZGlyKGJ1aWxkRGlyKQpAQCAtNjU1LDE4ICs3MzcsMzEgQEAKICAgICBpZiAnYnVpbGREaXInIGluIHJlY2lwZToKICAgICAgICAgb3MuY2hkaXIocmVjaXBlWydidWlsZERpciddKQogCi0KLSAgICBmb3IgZm4gaW4gcmVjaXBlLmdldCgncGF0Y2hlcycsICgpKToKLSAgICAgICAgaWYgZm4uc3RhcnRzd2l0aCgnaHR0cDovLycpOgotICAgICAgICAgICAgIyBEb3dubG9hZCB0aGUgcGF0Y2ggYmVmb3JlIGFwcGx5aW5nIGl0LgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihERVBTUkMsIG9zLnBhdGguYmFzZW5hbWUoZm4pKQotICAgICAgICAgICAgZG93bmxvYWRVUkwoZm4sIHBhdGgpCi0gICAgICAgICAgICBmbiA9IHBhdGgKLQotICAgICAgICBmbiA9IG9zLnBhdGguam9pbihjdXJkaXIsIGZuKQorICAgIGZvciBwYXRjaCBpbiByZWNpcGUuZ2V0KCdwYXRjaGVzJywgKCkpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGNoLCB0dXBsZSk6CisgICAgICAgICAgICB1cmwsIGNoZWNrc3VtID0gcGF0Y2gKKyAgICAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKERFUFNSQywgb3MucGF0aC5iYXNlbmFtZSh1cmwpKQorICAgICAgICAgICAgdmVyaWZ5VGhpcmRQYXJ0eUZpbGUodXJsLCBjaGVja3N1bSwgZm4pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIHBhdGNoIGlzIGEgZmlsZSBpbiB0aGUgc291cmNlIGRpcmVjdG9yeQorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oY3VyZGlyLCBwYXRjaCkKICAgICAgICAgcnVuQ29tbWFuZCgncGF0Y2ggLXAlcyA8ICVzJyUocmVjaXBlLmdldCgncGF0Y2hsZXZlbCcsIDEpLAogICAgICAgICAgICAgc2hlbGxRdW90ZShmbiksKSkKIAorICAgIGZvciBwYXRjaHNjcmlwdCBpbiByZWNpcGUuZ2V0KCdwYXRjaHNjcmlwdHMnLCAoKSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0Y2hzY3JpcHQsIHR1cGxlKToKKyAgICAgICAgICAgIHVybCwgY2hlY2tzdW0gPSBwYXRjaHNjcmlwdAorICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4oREVQU1JDLCBvcy5wYXRoLmJhc2VuYW1lKHVybCkpCisgICAgICAgICAgICB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcGF0Y2ggaXMgYSBmaWxlIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisgICAgICAgICAgICBmbiA9IG9zLnBhdGguam9pbihjdXJkaXIsIHBhdGNoc2NyaXB0KQorICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLmJ6MicpOgorICAgICAgICAgICAgcnVuQ29tbWFuZCgnYnVuemlwMiAtZmsgJXMnICUgc2hlbGxRdW90ZShmbikpCisgICAgICAgICAgICBmbiA9IGZuWzotNF0KKyAgICAgICAgcnVuQ29tbWFuZCgnc2ggJXMnICUgc2hlbGxRdW90ZShmbikpCisgICAgICAgIG9zLnVubGluayhmbikKKwogICAgIGlmIGNvbmZpZ3VyZSBpcyBub3QgTm9uZToKICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBbCiAgICAgICAgICAgICAiLS1wcmVmaXg9L3Vzci9sb2NhbCIsCkBAIC02ODUsNDAgKzc4MCw0NCBAQAogCiAgICAgICAgIGlmIHJlY2lwZS5nZXQoJ3VzZUxERmxhZ3MnLCAxKToKICAgICAgICAgICAgIGNvbmZpZ3VyZV9hcmdzLmV4dGVuZChbCi0gICAgICAgICAgICAgICAgIkNGTEFHUz0tYXJjaCAlcyAtaXN5c3Jvb3QgJXMgLUklcy91c3IvbG9jYWwvaW5jbHVkZSIlKAorICAgICAgICAgICAgICAgICJDRkxBR1M9JXMtbW1hY29zeC12ZXJzaW9uLW1pbj0lcyAtYXJjaCAlcyAtaXN5c3Jvb3QgJXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICItSSVzL3Vzci9sb2NhbC9pbmNsdWRlIiUoCisgICAgICAgICAgICAgICAgICAgICAgICByZWNpcGUuZ2V0KCdleHRyYV9jZmxhZ3MnLCAnJyksCisgICAgICAgICAgICAgICAgICAgICAgICBERVBUQVJHRVQsCiAgICAgICAgICAgICAgICAgICAgICAgICAnIC1hcmNoICcuam9pbihhcmNoTGlzdCksCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKFNES1BBVEgpWzE6LTFdLAogICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShiYXNlZGlyKVsxOi0xXSwpLAotICAgICAgICAgICAgICAgICJMREZMQUdTPS1zeXNsaWJyb290LCVzIC1MJXMvdXNyL2xvY2FsL2xpYiAtYXJjaCAlcyIlKAorICAgICAgICAgICAgICAgICJMREZMQUdTPS1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1zeXNsaWJyb290LCVzIC1MJXMvdXNyL2xvY2FsL2xpYiAtYXJjaCAlcyIlKAorICAgICAgICAgICAgICAgICAgICBERVBUQVJHRVQsCiAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYmFzZWRpcilbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSksCiAgICAgICAgICAgICBdKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MuZXh0ZW5kKFsKLSAgICAgICAgICAgICAgICAiQ0ZMQUdTPS1hcmNoICVzIC1pc3lzcm9vdCAlcyAtSSVzL3Vzci9sb2NhbC9pbmNsdWRlIiUoCisgICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzIC1pc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5nZXQoJ2V4dHJhX2NmbGFncycsICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJhc2VkaXIpWzE6LTFdLCksCiAgICAgICAgICAgICBdKQogCiAgICAgICAgIGlmICdjb25maWd1cmVfcG9zdCcgaW4gcmVjaXBlOgotICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBjb25maWd1cmVfYXJncyA9IGxpc3QocmVjaXBlWydjb25maWd1cmVfcG9zdCddKQorICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MgPSBjb25maWd1cmVfYXJncyArIGxpc3QocmVjaXBlWydjb25maWd1cmVfcG9zdCddKQogCiAgICAgICAgIGNvbmZpZ3VyZV9hcmdzLmluc2VydCgwLCBjb25maWd1cmUpCiAgICAgICAgIGNvbmZpZ3VyZV9hcmdzID0gWyBzaGVsbFF1b3RlKGEpIGZvciBhIGluIGNvbmZpZ3VyZV9hcmdzIF0KIAotICAgICAgICBpZiAnY29uZmlndXJlX2VudicgaW4gcmVjaXBlOgotICAgICAgICAgICAgY29uZmlndXJlX2FyZ3MuaW5zZXJ0KDAsIHJlY2lwZVsnY29uZmlndXJlX2VudiddKQotCi0gICAgICAgIHByaW50ICJSdW5uaW5nIGNvbmZpZ3VyZSBmb3IgJXMiJShuYW1lLCkKKyAgICAgICAgcHJpbnQoIlJ1bm5pbmcgY29uZmlndXJlIGZvciAlcyIlKG5hbWUsKSkKICAgICAgICAgcnVuQ29tbWFuZCgnICcuam9pbihjb25maWd1cmVfYXJncykgKyAnIDI+JjEnKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgaW5zdGFsbCBmb3IgJXMiJShuYW1lLCkKKyAgICBwcmludCgiUnVubmluZyBpbnN0YWxsIGZvciAlcyIlKG5hbWUsKSkKICAgICBydW5Db21tYW5kKCd7ICcgKyBpbnN0YWxsICsgJyA7fSAyPiYxJykKIAotICAgIHByaW50ICJEb25lICVzIiUobmFtZSwpCi0gICAgcHJpbnQgIiIKKyAgICBwcmludCgiRG9uZSAlcyIlKG5hbWUsKSkKKyAgICBwcmludCgiIikKIAogICAgIG9zLmNoZGlyKGN1cmRpcikKIApAQCAtNzI2LDkgKzgyNSw5IEBACiAgICAgIiIiCiAgICAgQnVpbGQgb3VyIGRlcGVuZGVuY2llcyBpbnRvICRXT1JLRElSL2xpYnJhcmllcy91c3IvbG9jYWwKICAgICAiIiIKLSAgICBwcmludCAiIgotICAgIHByaW50ICJCdWlsZGluZyByZXF1aXJlZCBsaWJyYXJpZXMiCi0gICAgcHJpbnQgIiIKKyAgICBwcmludCgiIikKKyAgICBwcmludCgiQnVpbGRpbmcgcmVxdWlyZWQgbGlicmFyaWVzIikKKyAgICBwcmludCgiIikKICAgICB1bml2ZXJzYWwgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpCiAgICAgb3MubWtkaXIodW5pdmVyc2FsKQogICAgIG9zLm1ha2VkaXJzKG9zLnBhdGguam9pbih1bml2ZXJzYWwsICd1c3InLCAnbG9jYWwnLCAnbGliJykpCkBAIC03NDIsNyArODQxLDcgQEAKIGRlZiBidWlsZFB5dGhvbkRvY3MoKToKICAgICAjIFRoaXMgc3RvcmVzIHRoZSBkb2N1bWVudGF0aW9uIGFzIFJlc291cmNlcy9FbmdsaXNoLmxwcm9qL0RvY3VtZW50YXRpb24KICAgICAjIGluc2lkZSB0aGUgZnJhbXdvcmsuIHB5ZG9jIGFuZCBJRExFIHdpbGwgcGljayBpdCB1cCB0aGVyZS4KLSAgICBwcmludCAiSW5zdGFsbCBweXRob24gZG9jdW1lbnRhdGlvbiIKKyAgICBwcmludCgiSW5zdGFsbCBweXRob24gZG9jdW1lbnRhdGlvbiIpCiAgICAgcm9vdERpciA9IG9zLnBhdGguam9pbihXT1JLRElSLCAnX3Jvb3QnKQogICAgIGJ1aWxkRGlyID0gb3MucGF0aC5qb2luKCcuLi8uLi9Eb2MnKQogICAgIGRvY2RpciA9IG9zLnBhdGguam9pbihyb290RGlyLCAncHlkb2NzJykKQEAgLTc1Nyw3ICs4NTYsNyBAQAogCiAKIGRlZiBidWlsZFB5dGhvbigpOgotICAgIHByaW50ICJCdWlsZGluZyBhIHVuaXZlcnNhbCBweXRob24gZm9yICVzIGFyY2hpdGVjdHVyZXMiICUgVU5JVkVSU0FMQVJDSFMKKyAgICBwcmludCgiQnVpbGRpbmcgYSB1bml2ZXJzYWwgcHl0aG9uIGZvciAlcyBhcmNoaXRlY3R1cmVzIiAlIFVOSVZFUlNBTEFSQ0hTKQogCiAgICAgYnVpbGREaXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19ibGQnLCAncHl0aG9uJykKICAgICByb290RGlyID0gb3MucGF0aC5qb2luKFdPUktESVIsICdfcm9vdCcpCkBAIC03ODUsNyArODg0LDcgQEAKICAgICAjIHdpbGwgZmluZCB0aGVtIGR1cmluZyBpdHMgZXh0ZW5zaW9uIGltcG9ydCBzYW5pdHkgY2hlY2tzLgogICAgIG9zLmVudmlyb25bJ0RZTERfTElCUkFSWV9QQVRIJ10gPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlicmFyaWVzJywgJ3VzcicsICdsb2NhbCcsICdsaWInKQotICAgIHByaW50ICJSdW5uaW5nIGNvbmZpZ3VyZS4uLiIKKyAgICBwcmludCgiUnVubmluZyBjb25maWd1cmUuLi4iKQogICAgIHJ1bkNvbW1hbmQoIiVzIC1DIC0tZW5hYmxlLWZyYW1ld29yayAtLWVuYWJsZS11bml2ZXJzYWxzZGs9JXMgIgogICAgICAgICAgICAgICAgIi0td2l0aC11bml2ZXJzYWwtYXJjaHM9JXMgIgogICAgICAgICAgICAgICAgIiVzICIKQEAgLTc5NywxOSArODk2LDE5IEBACiAgICAgICAgIHNoZWxsUXVvdGUoV09SS0RJUilbMTotMV0sCiAgICAgICAgIHNoZWxsUXVvdGUoV09SS0RJUilbMTotMV0pKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgbWFrZSIKKyAgICBwcmludCgiUnVubmluZyBtYWtlIikKICAgICBydW5Db21tYW5kKCJtYWtlIikKIAotICAgIHByaW50ICJSdW5uaW5nIG1ha2UgaW5zdGFsbCIKKyAgICBwcmludCgiUnVubmluZyBtYWtlIGluc3RhbGwiKQogICAgIHJ1bkNvbW1hbmQoIm1ha2UgaW5zdGFsbCBERVNURElSPSVzIiUoCiAgICAgICAgIHNoZWxsUXVvdGUocm9vdERpcikpKQogCi0gICAgcHJpbnQgIlJ1bm5pbmcgbWFrZSBmcmFtZXdvcmtpbnN0YWxsZXh0cmFzIgorICAgIHByaW50KCJSdW5uaW5nIG1ha2UgZnJhbWV3b3JraW5zdGFsbGV4dHJhcyIpCiAgICAgcnVuQ29tbWFuZCgibWFrZSBmcmFtZXdvcmtpbnN0YWxsZXh0cmFzIERFU1RESVI9JXMiJSgKICAgICAgICAgc2hlbGxRdW90ZShyb290RGlyKSkpCiAKICAgICBkZWwgb3MuZW52aXJvblsnRFlMRF9MSUJSQVJZX1BBVEgnXQotICAgIHByaW50ICJDb3B5aW5nIHJlcXVpcmVkIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgcHJpbnQoIkNvcHlpbmcgcmVxdWlyZWQgc2hhcmVkIGxpYnJhcmllcyIpCiAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKFdPUktESVIsICdsaWJyYXJpZXMnLCAnTGlicmFyeScpKToKICAgICAgICAgcnVuQ29tbWFuZCgibXYgJXMvKiAlcyIlKAogICAgICAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oCkBAIC04MjAsMTYgKzkxOSwxNiBAQAogICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywgZ2V0VmVyc2lvbigpLAogICAgICAgICAgICAgICAgICdsaWInKSkpKQogCi0gICAgcHJpbnQgIkZpeCBmaWxlIG1vZGVzIgorICAgIHByaW50KCJGaXggZmlsZSBtb2RlcyIpCiAgICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCiAgICAgZ2lkID0gZ3JwLmdldGdybmFtKCdhZG1pbicpLmdyX2dpZAogCisgICAgc2hhcmVkX2xpYl9lcnJvciA9IEZhbHNlCiAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gb3Mud2Fsayhmcm1EaXIpOgogICAgICAgICBmb3IgZG4gaW4gZGlybmFtZXM6Ci0gICAgICAgICAgICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGlycGF0aCwgZG4pLCAwNzc1KQorICAgICAgICAgICAgb3MuY2htb2Qob3MucGF0aC5qb2luKGRpcnBhdGgsIGRuKSwgU1RBVF8wbzc3NSkKICAgICAgICAgICAgIG9zLmNob3duKG9zLnBhdGguam9pbihkaXJwYXRoLCBkbiksIC0xLCBnaWQpCiAKLQogICAgICAgICBmb3IgZm4gaW4gZmlsZW5hbWVzOgogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsoZm4pOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC04NDAsNiArOTM5LDE5IEBACiAgICAgICAgICAgICBvcy5jaG1vZChwLCBzdGF0LlNfSU1PREUoc3Quc3RfbW9kZSkgfCBzdGF0LlNfSVdHUlApCiAgICAgICAgICAgICBvcy5jaG93bihwLCAtMSwgZ2lkKQogCisgICAgICAgICAgICBpZiBmbiBpbiBFWFBFQ1RFRF9TSEFSRURfTElCUzoKKyAgICAgICAgICAgICAgICAjIGNoZWNrIHRvIHNlZSB0aGF0IHRoaXMgZmlsZSB3YXMgbGlua2VkIHdpdGggdGhlCisgICAgICAgICAgICAgICAgIyBleHBlY3RlZCBsaWJyYXJ5IHBhdGggYW5kIHZlcnNpb24KKyAgICAgICAgICAgICAgICBkYXRhID0gY2FwdHVyZUNvbW1hbmQoIm90b29sIC1MICVzIiAlIHNoZWxsUXVvdGUocCkpCisgICAgICAgICAgICAgICAgZm9yIHNsIGluIEVYUEVDVEVEX1NIQVJFRF9MSUJTW2ZuXToKKyAgICAgICAgICAgICAgICAgICAgaWYgKCJcdCVzICIgJSBzbCkgbm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiRXhwZWN0ZWQgc2hhcmVkIGxpYiAlcyB3YXMgbm90IGxpbmtlZCB3aXRoICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzbCwgcCkpCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRfbGliX2Vycm9yID0gVHJ1ZQorCisgICAgaWYgc2hhcmVkX2xpYl9lcnJvcjoKKyAgICAgICAgZmF0YWwoIlVuZXhwZWN0ZWQgc2hhcmVkIGxpYnJhcnkgZXJyb3JzLiIpCisKICAgICBpZiBQWVRIT05fMzoKICAgICAgICAgTERWRVJTSU9OPU5vbmUKICAgICAgICAgVkVSU0lPTj1Ob25lCkBAIC04NjMsMTkgKzk3NSwyNiBAQAogCiAgICAgIyBXZSBhZGRlZCBzb21lIGRpcmVjdG9yaWVzIHRvIHRoZSBzZWFyY2ggcGF0aCBkdXJpbmcgdGhlIGNvbmZpZ3VyZQogICAgICMgcGhhc2UuIFJlbW92ZSB0aG9zZSBiZWNhdXNlIHRob3NlIGRpcmVjdG9yaWVzIHdvbid0IGJlIHRoZXJlIG9uCi0gICAgIyB0aGUgZW5kLXVzZXJzIHN5c3RlbS4KLSAgICBwYXRoID1vcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJywKLSAgICAgICAgICAgICAgICAnVmVyc2lvbnMnLCB2ZXJzaW9uLCAnbGliJywgJ3B5dGhvbiVzJyUodmVyc2lvbiwpLAotICAgICAgICAgICAgICAgICdjb25maWcnICsgY29uZmlnX3N1ZmZpeCwgJ01ha2VmaWxlJykKLSAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQotICAgIGRhdGEgPSBmcC5yZWFkKCkKLSAgICBmcC5jbG9zZSgpCisgICAgIyB0aGUgZW5kLXVzZXJzIHN5c3RlbS4gQWxzbyByZW1vdmUgdGhlIGRpcmVjdG9yaWVzIGZyb20gX3N5c2NvbmZpZ2RhdGEucHkKKyAgICAjIChhZGRlZCBpbiAzLjMpIGlmIGl0IGV4aXN0cy4KIAotICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJy1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInJShXT1JLRElSLCksICcnKQotICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJy1JJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9pbmNsdWRlJyUoV09SS0RJUiwpLCAnJykKLSAgICBmcCA9IG9wZW4ocGF0aCwgJ3cnKQotICAgIGZwLndyaXRlKGRhdGEpCi0gICAgZnAuY2xvc2UoKQorICAgIHBhdGhfdG9fbGliID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgcGF0aHMgPSBbb3MucGF0aC5qb2luKHBhdGhfdG9fbGliLCAnY29uZmlnJyArIGNvbmZpZ19zdWZmaXgsICdNYWtlZmlsZScpLAorICAgICAgICAgICAgIG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JyldCisgICAgZm9yIHBhdGggaW4gcGF0aHM6CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGZwID0gb3BlbihwYXRoLCAncicpCisgICAgICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgZnAuY2xvc2UoKQorCisgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJyAtTCVzL2xpYnJhcmllcy91c3IvbG9jYWwvbGliJyUoV09SS0RJUiwpLCAnJykKKyAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgnIC1JJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9pbmNsdWRlJyUoV09SS0RJUiwpLCAnJykKKyAgICAgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICAgICAgZnAud3JpdGUoZGF0YSkKKyAgICAgICAgZnAuY2xvc2UoKQogCiAgICAgIyBBZGQgc3ltbGlua3MgaW4gL3Vzci9sb2NhbC9iaW4sIHVzaW5nIHJlbGF0aXZlIGxpbmtzCiAgICAgdXNyX2xvY2FsX2JpbiA9IG9zLnBhdGguam9pbihyb290RGlyLCAndXNyJywgJ2xvY2FsJywgJ2JpbicpCkBAIC05MDcsMTcgKzEwMjYsMTcgQEAKIAogICAgICMgVGhpcyBvbmUgaXMgbm90IGhhbmR5IGFzIGEgdGVtcGxhdGUgdmFyaWFibGUKICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKCckUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUicsICcvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsnKQotICAgIGZwID0gb3BlbihvdXRQYXRoLCAnd2InKQorICAgIGZwID0gb3BlbihvdXRQYXRoLCAndycpCiAgICAgZnAud3JpdGUoZGF0YSkKICAgICBmcC5jbG9zZSgpCiAKIGRlZiBwYXRjaFNjcmlwdChpblBhdGgsIG91dFBhdGgpOgogICAgIGRhdGEgPSBmaWxlQ29udGVudHMoaW5QYXRoKQogICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoJ0BQWVZFUkAnLCBnZXRWZXJzaW9uKCkpCi0gICAgZnAgPSBvcGVuKG91dFBhdGgsICd3YicpCisgICAgZnAgPSBvcGVuKG91dFBhdGgsICd3JykKICAgICBmcC53cml0ZShkYXRhKQogICAgIGZwLmNsb3NlKCkKLSAgICBvcy5jaG1vZChvdXRQYXRoLCAwNzU1KQorICAgIG9zLmNobW9kKG91dFBhdGgsIFNUQVRfMG83NTUpCiAKIAogCkBAIC05MzQsNyArMTA1Myw3IEBACiAgICAgICAgIHJlYWRtZSA9IHRleHR3cmFwLmRlZGVudChyZWNpcGVbJ3JlYWRtZSddKQogICAgICAgICBpc1JlcXVpcmVkID0gcmVjaXBlLmdldCgncmVxdWlyZWQnLCBUcnVlKQogCi0gICAgICAgIHByaW50ICItIGJ1aWxkaW5nIHBhY2thZ2UgJXMiJShwa2duYW1lLCkKKyAgICAgICAgcHJpbnQoIi0gYnVpbGRpbmcgcGFja2FnZSAlcyIlKHBrZ25hbWUsKSkKIAogICAgICAgICAjIFN1YnN0aXR1dGUgc29tZSB2YXJpYWJsZXMKICAgICAgICAgdGV4dHZhcnMgPSBkaWN0KApAQCAtOTc5LDcgKzEwOTgsNyBAQAogICAgICAgICAgICAgcGF0Y2hTY3JpcHQocG9zdGZsaWdodCwgb3MucGF0aC5qb2luKHJzcmNEaXIsICdwb3N0ZmxpZ2h0JykpCiAKICAgICAgICAgdmVycyA9IGdldEZ1bGxWZXJzaW9uKCkKLSAgICAgICAgbWFqb3IsIG1pbm9yID0gbWFwKGludCwgZ2V0VmVyc2lvbigpLnNwbGl0KCcuJywgMikpCisgICAgICAgIG1ham9yLCBtaW5vciA9IGdldFZlcnNpb25NYWpvck1pbm9yKCkKICAgICAgICAgcGwgPSBQbGlzdCgKICAgICAgICAgICAgICAgICBDRkJ1bmRsZUdldEluZm9TdHJpbmc9IlB5dGhvbi4lcyAlcyIlKHBrZ25hbWUsIHZlcnMsKSwKICAgICAgICAgICAgICAgICBDRkJ1bmRsZUlkZW50aWZpZXI9J29yZy5weXRob24uUHl0aG9uLiVzJyUocGtnbmFtZSwpLApAQCAtMTAxNiw3ICsxMTM1LDcgQEAKIGRlZiBtYWtlTXBrZ1BsaXN0KHBhdGgpOgogCiAgICAgdmVycyA9IGdldEZ1bGxWZXJzaW9uKCkKLSAgICBtYWpvciwgbWlub3IgPSBtYXAoaW50LCBnZXRWZXJzaW9uKCkuc3BsaXQoJy4nLCAyKSkKKyAgICBtYWpvciwgbWlub3IgPSBnZXRWZXJzaW9uTWFqb3JNaW5vcigpCiAKICAgICBwbCA9IFBsaXN0KAogICAgICAgICAgICAgQ0ZCdW5kbGVHZXRJbmZvU3RyaW5nPSJQeXRob24gJXMiJSh2ZXJzLCksCkBAIC0xMTI3LDcgKzEyNDYsNyBAQAogICAgICMgQ3VzdG9tIGljb24gZm9yIHRoZSBETUcsIHNob3duIHdoZW4gdGhlIERNRyBpcyBtb3VudGVkLgogICAgIHNodXRpbC5jb3B5KCIuLi9JY29ucy9EaXNrIEltYWdlLmljbnMiLAogICAgICAgICAgICAgb3MucGF0aC5qb2luKFdPUktESVIsICJtbnQiLCB2b2xuYW1lLCAiLlZvbHVtZUljb24uaWNucyIpKQotICAgIHJ1bkNvbW1hbmQoIi9EZXZlbG9wZXIvVG9vbHMvU2V0RmlsZSAtYSBDICVzLyIlKAorICAgIHJ1bkNvbW1hbmQoIlNldEZpbGUgLWEgQyAlcy8iJSgKICAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICJtbnQiLCB2b2xuYW1lKSksKSkKIAogICAgIHJ1bkNvbW1hbmQoImhkaXV0aWwgZGV0YWNoICVzIiUoc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIsIHZvbG5hbWUpKSkpCkBAIC0xMTY4LDYgKzEyODcsNyBAQAogCiAgICAgb3MuZW52aXJvblsnTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUJ10gPSBERVBUQVJHRVQKICAgICBvcy5lbnZpcm9uWydDQyddID0gQ0MKKyAgICBvcy5lbnZpcm9uWydDWFgnXSA9IENYWAogCiAgICAgaWYgb3MucGF0aC5leGlzdHMoV09SS0RJUik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoV09SS0RJUikKQEAgLTExOTgsNyArMTMxOCw3IEBACiAKICAgICBmb2xkZXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgIl9yb290IiwgIkFwcGxpY2F0aW9ucyIsICJQeXRob24gJXMiJSgKICAgICAgICAgZ2V0VmVyc2lvbigpLCkpCi0gICAgb3MuY2htb2QoZm9sZGVyLCAwNzU1KQorICAgIG9zLmNobW9kKGZvbGRlciwgU1RBVF8wbzc1NSkKICAgICBzZXRJY29uKGZvbGRlciwgIi4uL0ljb25zL1B5dGhvbiBGb2xkZXIuaWNucyIpCiAKICAgICAjIENyZWF0ZSB0aGUgaW5zdGFsbGVyCkBAIC0xMjExLDkgKzEzMzEsOSBAQAogICAgIHNodXRpbC5jb3B5KCcuLi8uLi9MSUNFTlNFJywgb3MucGF0aC5qb2luKFdPUktESVIsICdpbnN0YWxsZXInLCAnTGljZW5zZS50eHQnKSkKIAogICAgIGZwID0gb3Blbihvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2luc3RhbGxlcicsICdCdWlsZC50eHQnKSwgJ3cnKQotICAgIHByaW50ID4+IGZwLCAiIyBCVUlMRCBJTkZPIgotICAgIHByaW50ID4+IGZwLCAiIyBEYXRlOiIsIHRpbWUuY3RpbWUoKQotICAgIHByaW50ID4+IGZwLCAiIyBCeToiLCBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpLnB3X2dlY29zCisgICAgZnAud3JpdGUoIiMgQlVJTEQgSU5GT1xuIikKKyAgICBmcC53cml0ZSgiIyBEYXRlOiAlc1xuIiAlIHRpbWUuY3RpbWUoKSkKKyAgICBmcC53cml0ZSgiIyBCeTogJXNcbiIgJSBwd2QuZ2V0cHd1aWQob3MuZ2V0dWlkKCkpLnB3X2dlY29zKQogICAgIGZwLmNsb3NlKCkKIAogICAgICMgQW5kIGNvcHkgaXQgdG8gYSBETUcKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9uY3Vyc2VzLTUuNS5wYXRjaCBiL01hYy9CdWlsZFNjcmlwdC9uY3Vyc2VzLTUuNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVhYjNkMy4uMDAwMDAwMAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvbmN1cnNlcy01LjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1kaWZmIC1yIC11IG5jdXJzZXMtNS41LW9yaWcvdGVzdC9NYWtlZmlsZS5pbiBuY3Vyc2VzLTUuNS90ZXN0L01ha2VmaWxlLmluCi0tLS0gbmN1cnNlcy01LjUtb3JpZy90ZXN0L01ha2VmaWxlLmluCTIwMDYtMDMtMjQgMTI6NDc6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgbmN1cnNlcy01LjUvdGVzdC9NYWtlZmlsZS5pbgkyMDA2LTAzLTI0IDEyOjQ3OjUwLjAwMDAwMDAwMCArMDEwMAotQEAgLTc1LDcgKzc1LDcgQEAKLSBNQVRIX0xJQgk9IEBNQVRIX0xJQkAKLSAKLSBMRAkJPSBATERACi0tTElOSwkJPSBATElOS19URVNUU0AgJChMSUJUT09MX0xJTkspICQoQ0MpICQoQ0ZMQUdTKQotK0xJTksJCT0gQExJTktfVEVTVFNAICQoTElCVE9PTF9MSU5LKSAkKENDKSAKLSAKLSB1c0ZMQUdTCQk9IEBMRF9NT0RFTEAgQExPQ0FMX0xERkxBR1NAIEBMREZMQUdTQAotIAotZGlmZiAtcnUgbmN1cnNlcy01LjUtb3JpZy9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYyBuY3Vyc2VzLTUuNS9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYwotLS0tIG5jdXJzZXMtNS41LW9yaWcvbmN1cnNlcy90aW5mby9yZWFkX2VudHJ5LmMgMjAwNC0wMS0xMSAwMjo1NzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBuY3Vyc2VzLTUuNS9uY3Vyc2VzL3RpbmZvL3JlYWRfZW50cnkuYyAgICAgIDIwMDYtMDMtMjUgMjI6NDk6MzkuMDAwMDAwMDAwICswMTAwCi1AQCAtNDc0LDcgKzQ3NCw3IEBACi0gICAgIH0KLSAKLSAgICAgLyogdHJ1bmNhdGUgdGhlIHRlcm1pbmFsIG5hbWUgdG8gcHJldmVudCBidWZmZXIgb3ZlcmZsb3cgKi8KLS0gICAgKHZvaWQpIHNwcmludGYodHRuLCAiJWMvJS4qcyIsICp0biwgKGludCkgc2l6ZW9mKHR0bikgLSAzLCB0bik7Ci0rICAgICh2b2lkKSBzcHJpbnRmKHR0biwgIiV4LyUuKnMiLCAqdG4sIChpbnQpIHNpemVvZih0dG4pIC0gMywgdG4pOwotIAotICAgICAvKiBUaGlzIGlzIFN5c3RlbSBWIGJlaGF2aW9yLCBpbiBjb25qdW5jdGlvbiB3aXRoIG91ciByZXF1aXJlbWVudHMgZm9yCi0gICAgICAqIHdyaXRpbmcgdGVybWluZm8gZW50cmllcy4KLWRpZmYgLXJ1IG5jdXJzZXMtNS41LW9yaWcvY29uZmlndXJlIG5jdXJzZXMtNS41L2NvbmZpZ3VyZQotLS0tIG5jdXJzZXMtNS41LW9yaWcvY29uZmlndXJlCTIwMDUtMDktMjQgMjM6NTA6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgbmN1cnNlcy01LjUvY29uZmlndXJlCTIwMDYtMDMtMjYgMjI6MjQ6NTkuMDAwMDAwMDAwICswMjAwCi1AQCAtNTAyNyw3ICs1MDI3LDcgQEAKLSAJZGFyd2luKikKLSAJCUVYVFJBX0NGTEFHUz0iLW5vLWNwcC1wcmVjb21wIgotIAkJQ0NfU0hBUkVEX09QVFM9Ii1keW5hbWljIgotLQkJTUtfU0hBUkVEX0xJQj0nJChDQykgLWR5bmFtaWNsaWIgLWluc3RhbGxfbmFtZSAkKERFU1RESVIpJChsaWJkaXIpL2BiYXNlbmFtZSAkQGAgLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkKEFCSV9WRVJTSU9OKSAtY3VycmVudF92ZXJzaW9uICQoQUJJX1ZFUlNJT04pIC1vICRAJwotKwkJTUtfU0hBUkVEX0xJQj0nJChDQykgJChDRkxBR1MpIC1keW5hbWljbGliIC1pbnN0YWxsX25hbWUgJChERVNURElSKSQobGliZGlyKS9gYmFzZW5hbWUgJEBgIC1jb21wYXRpYmlsaXR5X3ZlcnNpb24gJChBQklfVkVSU0lPTikgLWN1cnJlbnRfdmVyc2lvbiAkKEFCSV9WRVJTSU9OKSAtbyAkQCcKLSAJCXRlc3QgIiRjZl9jdl9zaGxpYl92ZXJzaW9uIiA9IGF1dG8gJiYgY2ZfY3Zfc2hsaWJfdmVyc2lvbj1hYmkKLSAJCWNmX2N2X3NobGliX3ZlcnNpb25faW5maXg9eWVzCi0gCQk7OwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUudHh0IGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUudHh0CmluZGV4IGYxYmVkYTAuLjlhYzUyZDAgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnR4dAorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS50eHQKQEAgLTUsOCArNSwxNSBAQAogSW5zdGFsbGF0aW9uIHJlcXVpcmVzIGFwcHJveGltYXRlbHkgJElOU1RBTExfU0laRSBNQiBvZiBkaXNrIHNwYWNlLAogaWdub3JlIHRoZSBtZXNzYWdlIHRoYXQgaXQgd2lsbCB0YWtlIHplcm8gYnl0ZXMuCiAKLVlvdSBtdXN0IGluc3RhbGwgb250byB5b3VyIGN1cnJlbnQgYm9vdCBkaXNrLCBldmVuIHRob3VnaCB0aGUKLWluc3RhbGxlciBkb2VzIG5vdCBlbmZvcmNlIHRoaXMsIG90aGVyd2lzZSB0aGluZ3Mgd2lsbCBub3Qgd29yay4KK0lmIHlvdSBhcmUgYXR0ZW1wdGluZyB0byBpbnN0YWxsIG9uIGFuIE9TIFggMTAuOCBzeXN0ZW0sIHlvdSBtYXkKK3NlZSBhIG1lc3NhZ2UgdGhhdCBQeXRob24gY2FuJ3QgYmUgaW5zdGFsbGVkIGJlY2F1c2UgaXQgaXMgZnJvbSBhbgordW5pZGVudGlmaWVkIGRldmVsb3Blci4gIFRoaXMgaXMgYmVjYXVzZSB0aGlzIFB5dGhvbiBpbnN0YWxsZXIKK3BhY2thZ2UgaXMgbm90IHlldCBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZQoraW50cm9kdWNlZCBpbiBPUyBYIDEwLjguICBUbyBhbGxvdyBQeXRob24gdG8gYmUgaW5zdGFsbGVkLCB5b3UKK2NhbiBvdmVycmlkZSB0aGUgR2F0ZWtlZXBlciBwb2xpY3kgZm9yIHRoaXMgaW5zdGFsbC4gIEluIHRoZSBGaW5kZXIsCitpbnN0ZWFkIG9mIGRvdWJsZS1jbGlja2luZywgY29udHJvbC1jbGljayBvciByaWdodCBjbGljayB0aGUgIlB5dGhvbiIKK2luc3RhbGxlciBwYWNrYWdlIGljb24uICBUaGVuIHNlbGVjdCAiT3BlbiB1c2luZyAuLi4gSW5zdGFsbGVyIiBmcm9tCit0aGUgY29udGV4dHVhbCBtZW51IHRoYXQgYXBwZWFycy4KIAogUHl0aG9uIGNvbnNpc3RzIG9mIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgaW50ZXJwcmV0ZXIsIHBsdXMKIGEgc2V0IG9mIHByb2dyYW1zIHRvIGFsbG93IGVhc3kgYWNjZXNzIHRvIGl0IGZvciBNYWMgdXNlcnMgaW5jbHVkaW5nCkBAIC0xNiwxMCArMjMsMTEgQEAKIAogICAgICAgICAgICAgICAgICAgICAqKioqIElNUE9SVEFOVCAqKioqCiAgICAgICAgICAgICAgICAgICAgIAotQmVmb3JlIHVzaW5nIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdXNpbmcgdGhlIHRraW50ZXIgZ3JhcGhpY2FsIHVzZXIKLWludGVyZmFjZSB0b29sa2l0LCB2aXNpdCBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLwotZm9yIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgc3VwcG9ydGVkIGFuZCByZWNvbW1lbmRlZCB2ZXJzaW9ucwotb2YgVGNsL1RrIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBNYWMgT1MgWC4KK1RvIHVzZSBJRExFIG9yIG90aGVyIHByb2dyYW1zIHRoYXQgdXNlIHRoZSB0a2ludGVyIGdyYXBoaWNhbCB1c2VyCitpbnRlcmZhY2UgdG9vbGtpdCwgeW91IG1heSBuZWVkIHRvIGluc3RhbGwgYSB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mCit0aGUgVGNsL1RrIGZyYW1ld29ya3MuICBWaXNpdCBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLworZm9yIGN1cnJlbnQgaW5mb3JtYXRpb24gYWJvdXQgc3VwcG9ydGVkIGFuZCByZWNvbW1lbmRlZCB2ZXJzaW9ucyBvZgorVGNsL1RrIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC4KIAogICAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKioqKioqCiAKQEAgLTMyLDUgKzQwLDEzIEBACiB3ZWxsLiBEb3VibGUtY2xpY2sgb24gdGhlICJVcGRhdGUgU2hlbGwgUHJvZmlsZSIgY29tbWFuZCB0byBhZGQgdGhlCiAiYmluIiBkaXJlY3RvcnkgaW5zaWRlIHRoZSBmcmFtZXdvcmsgdG8geW91ciBzaGVsbCdzIHNlYXJjaCBwYXRoLgogCitZb3UgbXVzdCBpbnN0YWxsIG9udG8geW91ciBjdXJyZW50IGJvb3QgZGlzaywgZXZlbiB0aG91Z2ggdGhlCitpbnN0YWxsZXIgZG9lcyBub3QgZW5mb3JjZSB0aGlzLCBvdGhlcndpc2UgdGhpbmdzIHdpbGwgbm90IHdvcmsuCisKK1lvdSBjYW4gdmVyaWZ5IHRoZSBpbnRlZ3JpdHkgb2YgdGhlIGRpc2sgaW1hZ2UgZmlsZSBjb250YWluaW5nIHRoZQoraW5zdGFsbGVyIHBhY2thZ2UgYW5kIHRoaXMgUmVhZE1lIGZpbGUgYnkgY29tcGFyaW5nIGl0cyBtZDUgY2hlY2tzdW0KK2FuZCBzaXplIHdpdGggdGhlIHZhbHVlcyBwdWJsaXNoZWQgb24gdGhlIHJlbGVhc2UgcGFnZSBsaW5rZWQgYXQKK2h0dHA6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC8KKwogTW9yZSBpbmZvcm1hdGlvbiBvbiBQeXRob24gaW4gZ2VuZXJhbCBjYW4gYmUgZm91bmQgYXQKIGh0dHA6Ly93d3cucHl0aG9uLm9yZy4KZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGQyMDliMTAuLjg2ZmJmNjMgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDggQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTAzOFxjb2NvYXN1YnJ0ZjM1MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMTM4XGNvY29hc3VicnRmNDcwCiB7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQogXHBhcGVydzExOTA0XHBhcGVyaDE2ODM2XG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3c5NjQwXHZpZXdoMTA2MjBcdmlld2tpbmQwCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHFsXHFuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwCiAKIFxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCAKIFxiIFB5dGhvbiAkRlVMTF9WRVJTSU9OCkBAIC0yMCw5ICsyMCw5IEBACiBcCiAKIFxiIE5PVEU6IAotXGIwIFRoaXMgcGFja2FnZSB3aWxsIGJ5IGRlZmF1bHQgbm90IHVwZGF0ZSB5b3VyIHNoZWxsIHByb2ZpbGUgYW5kIHdpbGwgYWxzbyBub3QgaW5zdGFsbCBmaWxlcyBpbiAvdXNyL2xvY2FsLiAgRG91YmxlLWNsaWNrIAorXGIwIFRoaXMgcGFja2FnZSB3aWxsIG5vdCB1cGRhdGUgeW91ciBzaGVsbCBwcm9maWxlIGJ5IGRlZmF1bHQuICBEb3VibGUtY2xpY2sgCiBcYiBVcGRhdGUgU2hlbGwgUHJvZmlsZQotXGIwICBhdCBhbnkgdGltZSB0byBtYWtlICRGVUxMX1ZFUlNJT04gdGhlIGRlZmF1bHQgUHl0aG9uLlwKK1xiMCAgYXQgYW55IHRpbWUgdG8gbWFrZSAkRlVMTF9WRVJTSU9OIHRoZSBkZWZhdWx0IFB5dGhvbiAzIHZlcnNpb24uICBUaGlzIHZlcnNpb24gY2FuIGNvLWV4aXN0IHdpdGggb3RoZXIgaW5zdGFsbGVkIHZlcnNpb25zIG9mIFB5dGhvbiAzIGFuZCBQeXRob24gMi5cCiBcCiAKIFxiIElNUE9SVEFOVDoKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbiBiL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbgppbmRleCAzMWZiZjJmLi5jNGJhNjE2IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24KKysrIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uCkBAIC01LDE5ICs1LDEwIEBACiBGV0tfRE9DRElSX1NVQlBBVEg9IlJlc291cmNlcy9FbmdsaXNoLmxwcm9qL0RvY3VtZW50YXRpb24iCiBGV0tfRE9DRElSPSIke0ZXS30vJHtGV0tfRE9DRElSX1NVQlBBVEh9IgogQVBQRElSPSIvQXBwbGljYXRpb25zL1B5dGhvbiAke1BZVkVSfSIKLURFVl9ET0NESVI9Ii9EZXZlbG9wZXIvRG9jdW1lbnRhdGlvbiIKIFNIQVJFX0RJUj0iJHtGV0t9L3NoYXJlIgogU0hBUkVfRE9DRElSPSIke1NIQVJFX0RJUn0vZG9jL3B5dGhvbiR7UFlWRVJ9IgogU0hBUkVfRE9DRElSX1RPX0ZXSz0iLi4vLi4vLi4iCiAKLSMgbWFrZSBsaW5rIGluIC9EZXZlbG9wZXIvRG9jdW1lbnRhdGlvbi8gZm9yIFhjb2RlIHVzZXJzCi1pZiBbIC1kICIke0RFVl9ET0NESVJ9IiBdOyB0aGVuCi0gICAgaWYgWyAhIC1kICIke0RFVl9ET0NESVJ9L1B5dGhvbiIgXTsgdGhlbgotICAgICAgICBta2RpciAtcCAiJHtERVZfRE9DRElSfS9QeXRob24iCi0gICAgZmkKLSAgICBsbiAtZmhzICIke0ZXS19ET0NESVJ9IiAiJHtERVZfRE9DRElSfS9QeXRob24vUmVmZXJlbmNlIERvY3VtZW50YXRpb24gJHtQWVZFUn0iCi1maQotCiAjIG1ha2UgbGluayBpbiAvQXBwbGljYXRpb25zL1B5dGhvbiBtLm4vIGZvciBGaW5kZXIgdXNlcnMKIGlmIFsgLWQgIiR7QVBQRElSfSIgXTsgdGhlbgogICAgIGxuIC1maHMgIiR7RldLX0RPQ0RJUn0vaW5kZXguaHRtbCIgIiR7QVBQRElSfS9QeXRob24gRG9jdW1lbnRhdGlvbi5odG1sIgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yawppbmRleCA5ZmM5MTUxLi5lYjA4Mjk3IDEwMDc1NQotLS0gYS9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yaworKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmZyYW1ld29yawpAQCAtOCwxNCArOCwyNCBAQAogCiAiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgXAogICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKLSAgICAteCBiYWRzeW50YXggLXggc2l0ZS1wYWNrYWdlcyBcCisgICAgLWYgLXggJ2JhZF9jb2Rpbmd8YmFkc3ludGF4fHNpdGUtcGFja2FnZXN8bGliMnRvMy90ZXN0cy9kYXRhJyBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0iCiAKICIke0ZXS30vYmluL3B5dGhvbkBQWVZFUkAiIC1XaSAtTyBcCiAgICAgIiR7RldLfS9saWIvcHl0aG9uJHtQWVZFUn0vY29tcGlsZWFsbC5weSIgXAotICAgIC14IGJhZHN5bnRheCAteCBzaXRlLXBhY2thZ2VzIFwKKyAgICAtZiAteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKICAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfSIKIAorIiR7RldLfS9iaW4vcHl0aG9uQFBZVkVSQCIgLVdpIFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9jb21waWxlYWxsLnB5IiBcCisgICAgLWYgLXggYmFkc3ludGF4IFwKKyAgICAiJHtGV0t9L2xpYi9weXRob24ke1BZVkVSfS9zaXRlLXBhY2thZ2VzIgorCisiJHtGV0t9L2Jpbi9weXRob25AUFlWRVJAIiAtV2kgLU8gXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L2NvbXBpbGVhbGwucHkiIFwKKyAgICAtZiAteCBiYWRzeW50YXggXAorICAgICIke0ZXS30vbGliL3B5dGhvbiR7UFlWRVJ9L3NpdGUtcGFja2FnZXMiCisKIGNoZ3JwIC1SIGFkbWluICIke0ZXS30iCiBjaG1vZCAtUiBnK3cgIiR7RldLfSIKIApkaWZmIC0tZ2l0IGEvTWFjL01ha2VmaWxlLmluIGIvTWFjL01ha2VmaWxlLmluCmluZGV4IDhhNjJhOTAuLjM1NGMxZmQgMTAwNjQ0Ci0tLSBhL01hYy9NYWtlZmlsZS5pbgorKysgYi9NYWMvTWFrZWZpbGUuaW4KQEAgLTQwLDE0ICs0MCwxMyBAQAogSU5TVEFMTF9EQVRBPUBJTlNUQUxMX0RBVEFACiBMTj1ATE5ACiBTVFJJUEZMQUc9LXMKLUNQTUFDPS9EZXZlbG9wZXIvVG9vbHMvQ3BNYWMKK0NQTUFDPUNwTWFjCiAKIEFQUFRFTVBMQVRFPSQoc3JjZGlyKS9SZXNvdXJjZXMvYXBwCi1BUFBTVUJESVJTPU1hY09TIFJlc291cmNlcyAKK0FQUFNVQkRJUlM9TWFjT1MgUmVzb3VyY2VzCiBjb21waWxlYWxsPSQoc3JjZGlyKS8uLi9MaWIvY29tcGlsZWFsbC5weQogCi1pbnN0YWxsYXBwczogaW5zdGFsbF9QeXRob24gaW5zdGFsbF9weXRob253IGluc3RhbGxfUHl0aG9uTGF1bmNoZXIgaW5zdGFsbF9JRExFIFwKLQljaGVja2FwcGxlcHl0aG9uCitpbnN0YWxsYXBwczogaW5zdGFsbF9QeXRob24gaW5zdGFsbF9weXRob253IGluc3RhbGxfUHl0aG9uTGF1bmNoZXIgaW5zdGFsbF9JRExFCiAKIGluc3RhbGxfcHl0aG9udzogcHl0aG9udwogCSQoSU5TVEFMTF9QUk9HUkFNKSAkKFNUUklQRkxBRykgcHl0aG9udyAiJChERVNURElSKSQocHJlZml4KS9iaW4vcHl0aG9udyQoVkVSU0lPTikiCkBAIC03Miw3ICs3MSw3IEBACiAJZm9yIGZuIGluIHB5dGhvbjMgcHl0aG9udzMgaWRsZTMgcHlkb2MzIHB5dGhvbjMtY29uZmlnIFwKIAkJICBweXRob24kKFZFUlNJT04pIHB5dGhvbnckKFZFUlNJT04pIGlkbGUkKFZFUlNJT04pIFwKIAkJICBweWRvYyQoVkVSU0lPTikgcHl0aG9uJChWRVJTSU9OKS1jb25maWcgMnRvMyBcCi0JCSAgMnRvMy0kKFZFUlNJT04pIDtcCisJCSAgMnRvMy0kKFZFUlNJT04pIHB5dmVudiBweXZlbnYtJChWRVJTSU9OKSA7XAogCWRvIFwKIAkJbG4gLWZzICIkKHByZWZpeCkvYmluLyQke2ZufSIgIiQoREVTVERJUikkKEZSQU1FV09SS1VOSVhUT09MU1BSRUZJWCkvYmluLyQke2ZufSIgO1wKIAlkb25lCkBAIC05Myw3ICs5Miw3IEBACiAJCSQoSU5TVEFMTCkgLWQgLW0gJChESVJNT0RFKSAiJChERVNURElSKSQoRlJBTUVXT1JLVU5JWFRPT0xTUFJFRklYKS9iaW4iIDtcCiAJZmkKIAlmb3IgZm4gaW4gcHl0aG9uJChWRVJTSU9OKSBweXRob253JChWRVJTSU9OKSBpZGxlJChWRVJTSU9OKSBcCi0JCSAgcHlkb2MkKFZFUlNJT04pIHB5dGhvbiQoVkVSU0lPTiktY29uZmlnIDJ0bzMtJChWRVJTSU9OKTtcCisJCSAgcHlkb2MkKFZFUlNJT04pIHB5dGhvbiQoVkVSU0lPTiktY29uZmlnIDJ0bzMtJChWRVJTSU9OKSBweXZlbnYtJChWRVJTSU9OKSA7XAogCWRvIFwKIAkJbG4gLWZzICIkKHByZWZpeCkvYmluLyQke2ZufSIgIiQoREVTVERJUikkKEZSQU1FV09SS1VOSVhUT09MU1BSRUZJWCkvYmluLyQke2ZufSIgO1wKIAlkb25lCkBAIC0xOTYsMTQgKzE5NSw2IEBACiAJCSIkKERFU1RESVIpJChwcmVmaXgpL3NoYXJlL2RvYy9weXRob24kKFZFUlNJT04pL2V4YW1wbGVzL1Rvb2xzIiA7IFwKIAkJY2htb2QgLVIgdWdvK3JYLGdvLXcgIiQoREVTVERJUikkKHByZWZpeCkvc2hhcmUvZG9jL3B5dGhvbiQoVkVSU0lPTikvZXhhbXBsZXMvVG9vbHMiCiAKLQotY2hlY2thcHBsZXB5dGhvbjogJChzcmNkaXIpL1Rvb2xzL2ZpeGFwcGxlcHl0aG9uMjMucHkKLQlAaWYgISAkKFJVTlNIQVJFRCkgJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL2ZpeGFwcGxlcHl0aG9uMjMucHkgLW47IHRoZW4gXAotCQllY2hvICIqIFdBUk5JTkc6IEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIHdpbGwgaGF2ZSB0cm91YmxlIGJ1aWxkaW5nIGV4dGVuc2lvbnMgZnJvbSBub3cgb24uIjsgXAotCQllY2hvICIqIFdBUk5JTkc6IFJ1biAkKHNyY2RpcikvVG9vbHMvZml4YXBwbGVweXRob24yMy5weSB3aXRoIFwic3Vkb1wiIHRvIGZpeCB0aGlzLiI7IFwKLQlmaQotCi0KIGNsZWFuOgogCXJtIHB5dGhvbncKIAljZCBQeXRob25MYXVuY2hlciAmJiBtYWtlIGNsZWFuCmRpZmYgLS1naXQgYS9NYWMvUkVBRE1FIGIvTWFjL1JFQURNRQppbmRleCA2ODUzZGI0Li5mN2JjNmMzIDEwMDY0NAotLS0gYS9NYWMvUkVBRE1FCisrKyBiL01hYy9SRUFETUUKQEAgLTEsNiArMSwxMyBAQAotPT09PT09PT09PT09Ci1NYWNPU1ggTm90ZXMKLT09PT09PT09PT09PQorPT09PT09PT09PT09PT09PT09PT09PT09PQorUHl0aG9uIG9uIE1hYyBPUyBYIFJFQURNRQorPT09PT09PT09PT09PT09PT09PT09PT09PQorCis6QXV0aG9yczoKKyAgICBKYWNrIEphbnNlbiAoMjAwNC0wNyksCisgICAgUm9uYWxkIE91c3NvcmVuICgyMDEwLTA0KSwKKyAgICBOZWQgRGVpbHkgKDIwMTItMDYpCisKKzpWZXJzaW9uOiAzLjMuMAogCiBUaGlzIGRvY3VtZW50IHByb3ZpZGVzIGEgcXVpY2sgb3ZlcnZpZXcgb2Ygc29tZSBNYWMgT1MgWCBzcGVjaWZpYyBmZWF0dXJlcyBpbgogdGhlIFB5dGhvbiBkaXN0cmlidXRpb24uCkBAIC0xMiwxMSArMTksMTEgQEAKICAgX2BCdWlsZGluZyBhbmQgdXNpbmcgYSBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG9uIE1hYyBPUyBYYCBmb3IgbW9yZSAKICAgaW5mb3JtYXRpb24gb24gZnJhbWV3b3Jrcy4KIAotICBJZiB0aGUgb3B0aW9uYWwgZGlyZWN0b3J5IGFyZ3VtZW50IGlzIHNwZWNpZmllZCB0aGUgZnJhbWV3b3JrIGl0IGluc3RhbGxlZAorICBJZiB0aGUgb3B0aW9uYWwgZGlyZWN0b3J5IGFyZ3VtZW50IGlzIHNwZWNpZmllZCB0aGUgZnJhbWV3b3JrIGlzIGluc3RhbGxlZAogICBpbnRvIHRoYXQgZGlyZWN0b3J5LiBUaGlzIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwgYSBweXRob24gZnJhbWV3b3JrIGludG8KICAgeW91ciBob21lIGRpcmVjdG9yeTo6CiAKLSAgICAgJCBjb25maWd1cmUgLS1lbmFibGUtZnJhbWV3b3JrPS9Vc2Vycy9yb25hbGQvTGlicmFyeS9GcmFtZXdvcmtzCisgICAgICQgLi9jb25maWd1cmUgLS1lbmFibGUtZnJhbWV3b3JrPS9Vc2Vycy9yb25hbGQvTGlicmFyeS9GcmFtZXdvcmtzCiAgICAgICQgbWFrZSAmJiBtYWtlIGluc3RhbGwKIAogICBUaGlzIHdpbGwgaW5zdGFsbCB0aGUgZnJhbWV3b3JrIGl0c2VsZiBpbiBgYC9Vc2Vycy9yb25hbGQvTGlicmFyeS9GcmFtZXdvcmtzYGAsCkBAIC0zMyw5ICs0MCwxMCBAQAogICBDcmVhdGUgYSB1bml2ZXJzYWwgYmluYXJ5IGJ1aWxkIG9mIG9mIFB5dGhvbi4gVGhpcyBjYW4gYmUgdXNlZCB3aXRoIGJvdGgKICAgcmVndWxhciBhbmQgZnJhbWV3b3JrIGJ1aWxkcy4KIAotICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVzIHdoaWNoIE9TWCBTREsgc2hvdWxkIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUKLSAgYnVpbGQuIFRoaXMgZGVmYXVsdHMgdG8gYGAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYLjEwLjR1LnNka2BgLCBzcGVjaWZ5IAotICBgYC9gYCB3aGVuIGJ1aWxkaW5nIG9uIGEgMTAuNSBzeXN0ZW0sIGVzcGVjaWFsbHkgd2hlbiBidWlsZGluZyA2NC1iaXQgY29kZS4KKyAgVGhlIG9wdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcyB3aGljaCBPUyBYIFNESyBzaG91bGQgYmUgdXNlZCB0byBwZXJmb3JtIHRoZQorICBidWlsZC4gIElmIHhjb2RlYnVpbGQgaXMgYXZhaWxhYmxlIGFuZCBjb25maWd1cmVkLCB0aGlzIGRlZmF1bHRzIHRvCisgIHRoZSBYY29kZSBkZWZhdWx0IE1hY09TIFggU0RLLCBvdGhlcndpc2UgYGAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYLjEwLjR1LnNka2BgCisgIGlmIGF2YWlsYWJsZSBvciBgYC9gYCBpZiBub3QuCiAKICAgU2VlIHRoZSBzZWN0aW9uIF9gQnVpbGRpbmcgYW5kIHVzaW5nIGEgdW5pdmVyc2FsIGJpbmFyeSBvZiBQeXRob24gb24gTWFjIE9TIFhgCiAgIGZvciBtb3JlIGluZm9ybWF0aW9uLgpAQCAtNDMsNyArNTEsOSBAQAogKiBgYC0td2l0aC11bml2ZXJhbC1hcmNocz1WQUxVRWBgCiAKICAgU3BlY2lmeSB0aGUga2luZCBvZiB1bml2ZXJzYWwgYmluYXJ5IHRoYXQgc2hvdWxkIGJlIGNyZWF0ZWQuIFRoaXMgb3B0aW9uIGlzIAotICBvbmx5IHZhbGlkIHdoZW4gYGAtLWVuYWJsZS11bml2ZXJzYWxzZGtgYCBpcyBzcGVjaWZpZWQuCisgIG9ubHkgdmFsaWQgd2hlbiBgYC0tZW5hYmxlLXVuaXZlcnNhbHNka2BgIGlzIHNwZWNpZmllZC4gIFRoZSBkZWZhdWx0IGlzCisgIGBgMzItYml0YGAgaWYgYSBidWlsZGluZyB3aXRoIGEgU0RLIHRoYXQgc3VwcG9ydHMgUFBDLCBvdGhlcndpc2UgZGVmYXVsdHMKKyAgdG8gYGBpbnRlbGBgLgogCiAKIEJ1aWxkaW5nIGFuZCB1c2luZyBhIHVuaXZlcnNhbCBiaW5hcnkgb2YgUHl0aG9uIG9uIE1hYyBPUyBYCkBAIC01Miw5ICs2MiwxNCBAQAogMS4gV2hhdCBpcyBhIHVuaXZlcnNhbCBiaW5hcnkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUEgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCBvZiBQeXRob24gY29udGFpbnMgb2JqZWN0IGNvZGUgZm9yIGJvdGggUFBDIGFuZCBpMzg2Ci1hbmQgY2FuIHRoZXJlZm9yZSBydW4gYXQgbmF0aXZlIHNwZWVkIG9uIGJvdGggY2xhc3NpYyBwb3dlcnBjIGJhc2VkIG1hY3MgYW5kCi10aGUgbmV3ZXIgaW50ZWwgYmFzZWQgbWFjcy4KK0EgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCBvZiBQeXRob24gY29udGFpbnMgb2JqZWN0IGNvZGUgZm9yIG1vcmUgdGhhbiBvbmUKK0NQVSBhcmNoaXRlY3R1cmUuICBBIHVuaXZlcnNhbCBPUyBYIGV4ZWN1dGFibGUgZmlsZSBvciBsaWJyYXJ5IGNvbWJpbmVzIHRoZQorYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGNvZGUgaW50byBvbmUgZmlsZSBhbmQgY2FuIHRoZXJlZm9yZSBydW4gYXQgbmF0aXZlCitzcGVlZCBvbiBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuICBVbml2ZXJzYWwgZmlsZXMgd2VyZSBpbnRyb2R1Y2VkIGluCitPUyBYIDEwLjQgdG8gYWRkIHN1cHBvcnQgZm9yIEludGVsLWJhc2VkIE1hY3MgdG8gdGhlIGV4aXN0aW5nIFBvd2VyUEMgKFBQQykKK21hY2hpbmVzLiAgSW4gT1MgWCAxMC41IHN1cHBvcnQgd2FzIGV4dGVuZGVkIHRvIDY0LWJpdCBJbnRlbCBhbmQgNjQtYml0IFBQQworYXJjaGl0ZWN0dXJlcy4gIEl0IGlzIHBvc3NpYmxlIHRvIGJ1aWxkIFB5dGhvbiB3aXRoIHZhcmlvdXMgY29tYmluYXRpb25zCitvZiBhcmNoaXRlY3R1cmVzIGRlcGVuZGluZyBvbiB0aGUgYnVpbGQgdG9vbHMgYW5kIE9TIFggdmVyc2lvbiBpbiB1c2UuCiAKIDIuIEhvdyBkbyBJIGJ1aWxkIGEgdW5pdmVyc2FsIGJpbmFyeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02NywzOCArODIsNTUgQEAKICAgJCBtYWtlIGluc3RhbGwKIAogVGhpcyBmbGFnIGNhbiBiZSB1c2VkIHdpdGggYSBmcmFtZXdvcmsgYnVpbGQgb2YgcHl0aG9uLCBidXQgYWxzbyB3aXRoIGEgY2xhc3NpYwotdW5peCBidWlsZC4gRWl0aGVyIHdheSB5b3Ugd2lsbCBoYXZlIHRvIGJ1aWxkIHB5dGhvbiBvbiBNYWMgT1MgWCAxMC40IChvciBsYXRlcikKLXdpdGggWGNvZGUgMi4xIChvciBsYXRlcikuIFlvdSBhbHNvIGhhdmUgdG8gaW5zdGFsbCB0aGUgMTAuNHUgU0RLIHdoZW4gCi1pbnN0YWxsaW5nIFhjb2RlLgordW5peCBidWlsZC4gVW5pdmVyc2FsIGJ1aWxkcyB3ZXJlIGZpcnN0IHN1cHBvcnRlZCB3aXRoIE9TIFggMTAuNCB3aXRoIFhjb2RlIDIuMQorYW5kIHRoZSAxMC40dSBTREsuICBTdGFydGluZyB3aXRoIFhjb2RlIDMgYW5kIE9TIFggMTAuNSwgbW9yZSBjb25maWd1cmF0aW9ucyBhcmUKK2F2YWlsYWJsZS4KIAotMi4xIEZsYXZvdXJzIG9mIHVuaXZlcnNhbCBiaW5hcmllcwotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorMi4xIEZsYXZvcnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCisuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIAotSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgYSBudW1iZXIgb2YgZmxhdm91cnMgb2YgdGhlIHVuaXZlcnNhbCBiaW5hcnkgYnVpbGQsCi10aGUgZGVmYXVsdCBpcyBhIDMyLWJpdCBvbmx5IGJpbmFyeSAoaTM4NiBhbmQgcHBjKS4gVGhlIGZsYXZvdXIgY2FuIGJlCi1zcGVjaWZpZWQgdXNpbmcgdGhlIG9wdGlvbiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYC4gVGhlIGZvbGxvd2luZworSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgYSBudW1iZXIgb2YgZmxhdm9ycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKK3RoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpIGluIGJ1aWxkIGVudmlyb25tZW50cyB0aGF0CitzdXBwb3J0IHBwYyAoMTAuNCB3aXRoIFhjb2RlIDIsIDEwLjUgYW5kIDEwLjYgd2l0aCBYY29kZSAzKSBvciBhbgorSW50ZWwtMzIvLTY0LWJpdCBiaW5hcnkgKGkzODYgYW5kIFg4Nl82NCkgaW4gYnVpbGQgZW52aXJvbm1lbnRzIHRoYXQgZG8gbm90CitzdXBwb3J0IHBwYyAoWGNvZGUgNCBvbiAxMC42IGFuZCBsYXRlciBzeXN0ZW1zKS4gIFRoZSBmbGF2b3IgY2FuIGJlIHNwZWNpZmllZAordXNpbmcgdGhlIGNvbmZpZ3VyZSBvcHRpb24gYGAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzPVZBTFVFYGAuIFRoZSBmb2xsb3dpbmcKIHZhbHVlcyBhcmUgYXZhaWxhYmxlOgogCisgICogYGBpbnRlbGBgOgkgIGBgaTM4NmBgLCBgYHg4Nl82NGBgCisKICAgKiBgYDMyLWJpdGBgOiAgIGBgcHBjYGAsIGBgaTM4NmBgCiAKKyAgKiBgYDMtd2F5YGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAsIGBgcHBjYGAKKwogICAqIGBgNjQtYml0YGA6ICAgYGBwcGM2NGBgLCBgYHg4Nl82NGBgCiAKICAgKiBgYGFsbGBgOiAgICAgIGBgcHBjYGAsIGBgcHBjNjRgYCwgYGBpMzg2YGAsIGBgeDg2XzY0YGAKIAotICAqIGBgMy13YXlgYDoJICBgYHBwY2BgLCBgYGkzODZgYCBhbmQgYGB4ODZfNjRgYAotCi0gICogYGBpbnRlbGBgOgkgIGBgaTM4NmBgLCBgYHg4Nl82NGBgCi0KIFRvIGJ1aWxkIGEgdW5pdmVyc2FsIGJpbmFyeSB0aGF0IGluY2x1ZGVzIGEgNjQtYml0IGFyY2hpdGVjdHVyZSwgeW91IG11c3QgYnVpbGQKLW9uIGEgc3lzdGVtIHJ1bm5pbmcgT1NYIDEwLjUgb3IgbGF0ZXIuIFRoZSBgYGFsbGBgIGZsYXZvdXIgY2FuIG9ubHkgYmUgYnVpbHQgb24KLU9TWCAxMC41Lgorb24gYSBzeXN0ZW0gcnVubmluZyBPUyBYIDEwLjUgb3IgbGF0ZXIuICBUaGUgYGBhbGxgYCBhbmQgYGA2NC1iaXRgYCBmbGF2b3JzIGNhbgorb25seSBiZSBidWlsdCB3aXRoIGFuIDEwLjUgU0RLIGJlY2F1c2UgYGBwcGM2NGBgIHN1cHBvcnQgd2FzIG9ubHkgaW5jbHVkZWQgd2l0aAorT1MgWCAxMC41LiAgQWx0aG91Z2ggbGVnYWN5IGBgcHBjYGAgc3VwcG9ydCB3YXMgaW5jbHVkZWQgd2l0aCBYY29kZSAzIG9uIE9TIFgKKzEwLjYsIGl0IHdhcyByZW1vdmVkIGluIFhjb2RlIDQsIHZlcnNpb25zIG9mIHdoaWNoIHdlcmUgcmVsZWFzZWQgb24gT1MgWCAxMC42CithbmQgd2hpY2ggaXMgdGhlIGN1cnJlbnQgc3RhbmRhcmQgZm9yIE9TIFggMTAuNyBhbmQgMTAuOC4gIFRvIHN1bW1hcml6ZSwgdGhlCitmb2xsb3dpbmcgY29tYmluYXRpb25zIG9mIFNES3MgYW5kIHVuaXZlcnNhbC1hcmNocyBmbGF2b3JzIGFyZSBhdmFpbGFibGU6CiAKLVRoZSBtYWtlZmlsZSBmb3IgYSBmcmFtZXdvcmsgYnVpbGQgd2lsbCBpbnN0YWxsIGBgcHl0aG9uMzJgYCBhbmQgYGBweXRob253MzJgYCAKLWJpbmFyaWVzIHdoZW4gdGhlIHVuaXZlcnNhbCBhcmNoaXRlY3VyZXMgaW5jbHVkZXMgYXQgbGVhc3Qgb25lIDMyLWJpdCBhcmNoaXRlY3R1cmUKLSh0aGF0IGlzLCBmb3IgYWxsIGZsYXZvdXJzIGJ1dCBgYDY0LWJpdGBgKS4KKyAgKiAxMC40dSBTREsgd2l0aCBYY29kZSAyIHN1cHBvcnRzIGBgMzItYml0YGAgb25seQogCi1SdW5uaW5nIGEgc3BlY2lmaWMgYXJjaGljdHVyZQotLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKyAgKiAxMC41IFNESyB3aXRoIFhjb2RlIDMuMS54IHN1cHBvcnRzIGFsbCBmbGF2b3JzCisKKyAgKiAxMC42IFNESyB3aXRoIFhjb2RlIDMuMi54IHN1cHBvcnRzIGBgaW50ZWxgYCwgYGAzLXdheWBgLCBhbmQgYGAzMi1iaXRgYAorCisgICogMTAuNiBTREsgd2l0aCBYY29kZSA0IHN1cHBvcnRzIGBgaW50ZWxgYCBvbmx5CisKKyAgKiAxMC43IGFuZCAxMC44IFNES3Mgd2l0aCBYY29kZSA0IHN1cHBvcnQgYGBpbnRlbGBgIG9ubHkKKworVGhlIG1ha2VmaWxlIGZvciBhIGZyYW1ld29yayBidWlsZCB3aWxsIGFsc28gaW5zdGFsbCBgYHB5dGhvbjMuMy0zMmBgCitiaW5hcmllcyB3aGVuIHRoZSB1bml2ZXJzYWwgYXJjaGl0ZWN0dXJlIGluY2x1ZGVzIGF0IGxlYXN0IG9uZSAzMi1iaXQKK2FyY2hpdGVjdHVyZSAodGhhdCBpcywgZm9yIGFsbCBmbGF2b3JzIGJ1dCBgYDY0LWJpdGBgKS4KKworUnVubmluZyBhIHNwZWNpZmljIGFyY2hpdGVjdHVyZQorLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgogCiBZb3UgY2FuIHJ1biBjb2RlIHVzaW5nIGEgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIHVzaW5nIHRoZSBgYGFyY2hgYCBjb21tYW5kOjoKIApAQCAtMTEzLDYgKzE0NSwxNCBAQAogd3JhcHBlciB0b29scyB0aGF0IGV4ZWN1dGUgdGhlIHJlYWwgaW50ZXJwcmV0ZXIgd2l0aG91dCBlbnN1cmluZyB0aGF0IHRoZQogcmVhbCBpbnRlcnByZXRlciBydW5zIHdpdGggdGhlIHNhbWUgYXJjaGl0ZWN0dXJlLgogCitVc2luZyBgYGFyY2hgYCBpcyBub3QgYSBwZXJmZWN0IHNvbHV0aW9uIGFzIHRoZSBzZWxlY3RlZCBhcmNoaXRlY3R1cmUgd2lsbAorbm90IGF1dG9tYXRpY2FsbHkgY2FycnkgdGhyb3VnaCB0byBzdWJwcm9jZXNzZXMgbGF1bmNoZWQgYnkgcHJvZ3JhbXMgYW5kIHRlc3RzCit1bmRlciB0aGF0IFB5dGhvbi4gIElmIHlvdSB3YW50IHRvIGVuc3VyZSB0aGF0IFB5dGhvbiBpbnRlcnByZXRlcnMgbGF1bmNoZWQgaW4KK3N1YnByb2Nlc3NlcyBhbHNvIHJ1biBpbiAzMi1iaXQtbW9kZSBpZiB0aGUgbWFpbiBpbnRlcnByZXRlciBkb2VzLCB1c2UKK2EgYGBweXRob24zLjMtMzJgYCBiaW5hcnkgYW5kIHVzZSB0aGUgdmFsdWUgb2YgYGBzeXMuZXhlY3V0YWJsZWBgIGFzIHRoZQorYGBzdWJwcm9jZXNzYGAgYGBQb3BlbmBgIGV4ZWN1dGFibGUgdmFsdWUuCisKKwogQnVpbGRpbmcgYW5kIHVzaW5nIGEgZnJhbWV3b3JrLWJhc2VkIFB5dGhvbiBvbiBNYWMgT1MgWC4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKQEAgLTEyMiwxNyArMTYyLDE3IEBACiAKIFRoZSBtYWluIHJlYXNvbiBpcyBiZWNhdXNlIHlvdSB3YW50IHRvIGNyZWF0ZSBHVUkgcHJvZ3JhbXMgaW4gUHl0aG9uLiBXaXRoIHRoZQogZXhjZXB0aW9uIG9mIFgxMS9YRGFyd2luLWJhc2VkIEdVSSB0b29sa2l0cyBhbGwgR1VJIHByb2dyYW1zIG5lZWQgdG8gYmUgcnVuIAotZnJvbSBhIGZ1bGxibG93biBNYWNPU1ggYXBwbGljYXRpb24gKGEgIi5hcHAiIGJ1bmRsZSkuCitmcm9tIGEgTWFjIE9TWCBhcHBsaWNhdGlvbiBidW5kbGUgKCIuYXBwIikuCiAKIFdoaWxlIGl0IGlzIHRlY2huaWNhbGx5IHBvc3NpYmxlIHRvIGNyZWF0ZSBhIC5hcHAgd2l0aG91dCB1c2luZyBmcmFtZXdvcmtzIHlvdQogd2lsbCBoYXZlIHRvIGRvIHRoZSB3b3JrIHlvdXJzZWxmIGlmIHlvdSByZWFsbHkgd2FudCB0aGlzLgogCiBBIHNlY29uZCByZWFzb24gZm9yIHVzaW5nIGZyYW1ld29ya3MgaXMgdGhhdCB0aGV5IHB1dCBQeXRob24tcmVsYXRlZCBpdGVtcyBpbgogb25seSB0d28gcGxhY2VzOiAiL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmsiIGFuZCAKLSIvQXBwbGljYXRpb25zL01hY1B5dGhvbiA8VkVSU0lPTj4iIHdoZXJlIGBgPFZFUlNJT04+YGAgY2FuIGJlIGUuZy4gIjIuNiIsCi0iMy4xIiwgZXRjLi4gIFRoaXMgc2ltcGxpZmllcyBtYXR0ZXJzIGZvciB1c2VycyBpbnN0YWxsaW5nIAorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMy4zIiwKKyIyLjciLCBldGMuICBUaGlzIHNpbXBsaWZpZXMgbWF0dGVycyBmb3IgdXNlcnMgaW5zdGFsbGluZwogUHl0aG9uIGZyb20gYSBiaW5hcnkgZGlzdHJpYnV0aW9uIGlmIHRoZXkgd2FudCB0byBnZXQgcmlkIG9mIGl0IGFnYWluLiBNb3Jlb3ZlciwKLWR1ZSB0byB0aGUgd2F5IGZyYW1ld29ya3Mgd29yayBhIHVzZXIgd2l0aG91dCBhZG1pbiBwcml2aWxlZ2VzIGNhbiBpbnN0YWxsIGEgCitkdWUgdG8gdGhlIHdheSBmcmFtZXdvcmtzIHdvcmssIGEgdXNlciB3aXRob3V0IGFkbWluIHByaXZpbGVnZXMgY2FuIGluc3RhbGwgYQogYmluYXJ5IGRpc3RyaWJ1dGlvbiBpbiBoaXMgb3IgaGVyIGhvbWUgZGlyZWN0b3J5IHdpdGhvdXQgcmVjb21waWxhdGlvbi4KIAogMi4gSG93IGRvZXMgYSBmcmFtZXdvcmsgUHl0aG9uIGRpZmZlciBmcm9tIGEgbm9ybWFsIHN0YXRpYyBQeXRob24/CkBAIC0xNDgsMTggKzE4OCwyNSBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBZZXMsIHByb2JhYmx5LiAgSWYgeW91IHdhbnQgVGtpbnRlciBzdXBwb3J0IHlvdSBuZWVkIHRvIGdldCB0aGUgT1NYIEFxdWFUayAKLWRpc3RyaWJ1dGlvbiwgdGhpcyBpcyBpbnN0YWxsZWQgYnkgZGVmYXVsdCBvbiBNYWMgT1MgWCAxMC40IG9yIGxhdGVyLiBJZgoteW91IHdhbnQgd3hQeXRob24geW91IG5lZWQgdG8gZ2V0IHRoYXQuIElmIHlvdSB3YW50IENvY29hIHlvdSBuZWVkIHRvIGdldAotUHlPYmpDLiAKK2Rpc3RyaWJ1dGlvbiwgdGhpcyBpcyBpbnN0YWxsZWQgYnkgZGVmYXVsdCBvbiBNYWMgT1MgWCAxMC40IG9yIGxhdGVyLiAgQmUKK2F3YXJlLCB0aG91Z2gsIHRoYXQgdGhlIENvY29hLWJhc2VkIEFxdWFUaydzIHN1cHBsaWVkIHN0YXJ0aW5nIHdpdGggT1MgWAorMTAuNiBoYXZlIHByb3ZlbiB0byBiZSB1bnN0YWJsZS4gIElmIHBvc3NpYmxlLCB5b3Ugc2hvdWxkIGNvbnNpZGVyCitpbnN0YWxsaW5nIGEgbmV3ZXIgdmVyc2lvbiBiZWZvcmUgYnVpbGRpbmcgb24gT1MgWCAxMC42IG9yIGxhdGVyLCBzdWNoIGFzCit0aGUgQWN0aXZlVGNsIDguNS4gIFNlZSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLy4gIElmIHlvdQorYXJlIGJ1aWxkaW5nIHdpdGggYW4gU0RLLCBlbnN1cmUgdGhhdCB0aGUgbmV3ZXIgVGNsIGFuZCBUayBmcmFtZXdvcmtzIGFyZQorc2VlbiBpbiB0aGUgU0RLJ3MgYGBMaWJyYXJ5L0ZyYW1ld29ya3NgYCBkaXJlY3Rvcnk7IHlvdSBtYXkgbmVlZCB0bworbWFudWFsbHkgY3JlYXRlIHN5bWxpbmtzIHRvIHRoZWlyIGluc3RhbGxlZCBsb2NhdGlvbiwgYGAvTGlicmFyeS9GcmFtZXdvcmtzYGAuCitJZiB5b3Ugd2FudCB3eFB5dGhvbiB5b3UgbmVlZCB0byBnZXQgdGhhdC4KK0lmIHlvdSB3YW50IENvY29hIHlvdSBuZWVkIHRvIGdldCBQeU9iakMuCiAKIDQuIEhvdyBkbyBJIGJ1aWxkIGEgZnJhbWV3b3JrIFB5dGhvbj8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHdpbGwgY3JlYXRlIGEgY291cGxlIG9mIHB5dGhvbi1yZWxhdGVkCi1hcHBsaWNhdGlvbnMgKGZ1bGxibG93biBPU1ggLmFwcCBhcHBsaWNhdGlvbnMsIHRoYXQgaXMpIGluCi0iL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiwgYW5kIGEgaGlkZGVuIGhlbHBlciBhcHBsaWNhdGlvbiBQeXRob24uYXBwIAotaW5zaWRlIHRoZSBQeXRob24uZnJhbWV3b3JrLCBhbmQgdW5peCB0b29scyAicHl0aG9uIiBhbmQgInB5dGhvbnciIGludG8gCi0vdXNyL2xvY2FsL2Jpbi4gIEluIGFkZGl0aW9uIGl0IGhhcyBhIHRhcmdldCAiaW5zdGFsbG1hY3N1YnRyZWUiIHRoYXQgaW5zdGFsbHMgCithcHBsaWNhdGlvbnMgKGZ1bGwtYmxvd24gT1NYIC5hcHAgYXBwbGljYXRpb25zLCB0aGF0IGlzKSBpbgorIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIsIGFuZCBhIGhpZGRlbiBoZWxwZXIgYXBwbGljYXRpb24gUHl0aG9uLmFwcAoraW5zaWRlIHRoZSBQeXRob24uZnJhbWV3b3JrLCBhbmQgdW5peCB0b29scyAicHl0aG9uIiBhbmQgInB5dGhvbnciIGludG8KKy91c3IvbG9jYWwvYmluLiAgSW4gYWRkaXRpb24gaXQgaGFzIGEgdGFyZ2V0ICJpbnN0YWxsbWFjc3VidHJlZSIgdGhhdCBpbnN0YWxscwogdGhlIHJlbGV2YW50IHBvcnRpb25zIG9mIHRoZSBNYWMgc3VidHJlZSBpbnRvIHRoZSBQeXRob24uZnJhbWV3b3JrLgogCiBJdCBpcyBub3JtYWxseSBpbnZva2VkIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgbWFpbiBNYWtlZmlsZSwgYXMgdGhlIGxhc3Qgc3RlcApAQCAtMTcxLDE3ICsyMTgsMTUgQEAKICAKICAzLiBtYWtlIGluc3RhbGwKIAotVGhpcyBzZXF1ZW5jZSB3aWxsIHB1dCB0aGUgZnJhbWV3b3JrIGluIC9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrLAotdGhlIGFwcGxpY2F0aW9ucyBpbiAiL0FwcGxpY2F0aW9ucy9NYWNQeXRob24gPFZFUlNJT04+IiBhbmQgdGhlIHVuaXggdG9vbHMgaW4gCi0vdXNyL2xvY2FsL2Jpbi4KK1RoaXMgc2VxdWVuY2Ugd2lsbCBwdXQgdGhlIGZyYW1ld29yayBpbiBgYC9MaWJyYXJ5L0ZyYW1ld29yay9QeXRob24uZnJhbWV3b3JrYGAsCit0aGUgYXBwbGljYXRpb25zIGluIGBgL0FwcGxpY2F0aW9ucy9QeXRob24gPFZFUlNJT04+YGAgYW5kIHRoZSB1bml4IHRvb2xzIGluIAorYGAvdXNyL2xvY2FsL2JpbmBgLgogCi1JbnN0YWxsaW5nIGluIGFub3RoZXIgcGxhY2UsIGZvciBpbnN0YW5jZSAkSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3MgaWYgeW91IGhhdmUKLW5vIGFkbWluIHByaXZpbGVnZXMgb24geW91ciBtYWNoaW5lLCBoYXMgb25seSBiZWVuIHRlc3RlZCB2ZXJ5IGxpZ2h0bHkuIFRoaXMKLWNhbiBiZSBkb25lIGJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1lbmFibGUtZnJhbWV3b3JrPSRIT01FL0xpYnJhcnkvRnJhbWV3b3Jrcy4KLVRoZSBvdGhlciB0d28gZGlyZWN0b3JpZXMsICIvQXBwbGljYXRpb25zL01hY1B5dGhvbi08VkVSU0lPTj4iIGFuZAotL3Vzci9sb2NhbC9iaW4sIHdpbGwgdGhlbiBhbHNvIGJlIGRlcG9zaXRlZCBpbiAkSE9NRS4gVGhpcyBpcyBzdWItb3B0aW1hbCBmb3IKLXRoZSB1bml4IHRvb2xzLCB3aGljaCB5b3Ugd291bGQgd2FudCBpbiAkSE9NRS9iaW4sIGJ1dCB0aGVyZSBpcyBubyBlYXN5IHdheSB0bwotZml4IHRoaXMgcmlnaHQgbm93LgorSW5zdGFsbGluZyBpbiBhbm90aGVyIHBsYWNlLCBmb3IgaW5zdGFuY2UgYGAkSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYCBpZiB5b3UKK2hhdmUgbm8gYWRtaW4gcHJpdmlsZWdlcyBvbiB5b3VyIG1hY2hpbmUsIGlzIHBvc3NpYmxlLiBUaGlzIGNhbiBiZSBhY2NvbXBsaXNoZWQKK2J5IGNvbmZpZ3VyaW5nIHdpdGggYGAtLWVuYWJsZS1mcmFtZXdvcms9JEhPTUUvTGlicmFyeS9GcmFtZXdvcmtzYGAuCitUaGUgb3RoZXIgdHdvIGRpcmVjdG9yaWVzIHdpbGwgdGhlbiBhbHNvIGJlIGluc3RhbGxlZCBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5LAorYXQgYGAkSE9NRS9BcHBsaWNhdGlvbnMvUHl0aG9uLTxWRVJTSU9OPmBgIGFuZCBgYCRIT01FL2JpbmBgLgogCiBJZiB5b3Ugd2FudCB0byBpbnN0YWxsIHNvbWUgcGFydCwgYnV0IG5vdCBhbGwsIHJlYWQgdGhlIG1haW4gTWFrZWZpbGUuIFRoZQogZnJhbWV3b3JraW5zdGFsbCBpcyBjb21wb3NlZCBvZiBhIGNvdXBsZSBvZiBzdWItdGFyZ2V0cyB0aGF0IGluc3RhbGwgdGhlCkBAIC0xODksNyArMjM0LDcgQEAKIAogVGhlcmUgaXMgYW4gZXh0cmEgdGFyZ2V0IGZyYW1ld29ya2luc3RhbGxleHRyYXMgdGhhdCBpcyBub3QgcGFydCBvZiB0aGUKIG5vcm1hbCBmcmFtZXdvcmtpbnN0YWxsIHdoaWNoIGluc3RhbGxzIHRoZSBUb29scyBkaXJlY3RvcnkgaW50bwotIi9BcHBsaWNhdGlvbnMvTWFjUHl0aG9uIDxWRVJTSU9OPiIsIHRoaXMgaXMgdXNlZnVsIGZvciBiaW5hcnkKKyIvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj4iLCB0aGlzIGlzIHVzZWZ1bCBmb3IgYmluYXJ5CiBkaXN0cmlidXRpb25zLgogCiBXaGF0IGRvIGFsbCB0aGVzZSBwcm9ncmFtcyBkbz8KQEAgLTIwMiwyNCArMjQ3LDQxIEBACiBkb3VibGUtY2xpY2sgYSAucHksIC5weWMgb3IgLnB5dyBmaWxlLiBGb3IgdGhlIGZpcnN0IHR3byBpdCBjcmVhdGVzIGEgVGVybWluYWwKIHdpbmRvdyBhbmQgcnVucyB0aGUgc2NyaXB0cyB3aXRoIHRoZSBub3JtYWwgY29tbWFuZC1saW5lIFB5dGhvbi4gRm9yIHRoZQogbGF0dGVyIGl0IHJ1bnMgdGhlIHNjcmlwdCBpbiB0aGUgUHl0aG9uLmFwcCBpbnRlcnByZXRlciBzbyB0aGUgc2NyaXB0IGNhbiBkbwotR1VJLXRoaW5ncy4gS2VlcCB0aGUgImFsdCIga2V5IGRlcHJlc3NlZCB3aGlsZSBkcmFnZ2luZyBvciBkb3VibGUtY2xpY2tpbmcgYQotc2NyaXB0IHRvIHNldCBydW50aW1lIG9wdGlvbnMuIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHNldCBvbmNlIGFuZCBmb3IgYWxsCitHVUktdGhpbmdzLiBLZWVwIHRoZSBgYE9wdGlvbmBgIGtleSBkZXByZXNzZWQgd2hpbGUgZHJhZ2dpbmcgb3IgZG91YmxlLWNsaWNraW5nCithIHNjcmlwdCB0byBzZXQgcnVudGltZSBvcHRpb25zLiBUaGVzZSBvcHRpb25zIGNhbiBiZSBzZXQgcGVyc2lzdGVudGx5CiB0aHJvdWdoIFB5dGhvbkxhdW5jaGVyJ3MgcHJlZmVyZW5jZXMgZGlhbG9nLgogCi1UaGUgY29tbWFuZGxpbmUgc2NyaXB0cyAvdXNyL2xvY2FsL2Jpbi9weXRob24gYW5kIHB5dGhvbncgY2FuIGJlIHVzZWQgdG8gcnVuCi1ub24tR1VJIGFuZCBHVUkgcHl0aG9uIHNjcmlwdHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCByZXNwZWN0aXZlbHkuCitUaGUgcHJvZ3JhbSBgYHB5dGhvbngueGBgIHJ1bnMgcHl0aG9uIHNjcmlwdHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLiAgVmFyaW91cworY29tcGF0aWJpbGl0eSBhbGlhc2VzIGFyZSBhbHNvIGluc3RhbGxlZCwgaW5jbHVkaW5nIGBgcHl0aG9ud3gueGBgIHdoaWNoCitpbiBlYXJseSByZWxlYXNlcyBvZiBQeXRob24gb24gT1MgWCB3YXMgcmVxdWlyZWQgdG8gcnVuIEdVSSBwcm9ncmFtcy4gIEluCitjdXJyZW50IHJlbGVhc2VzLCB0aGUgYGBweXRob254LnhgYCBhbmQgYGBweXRob253eC54YGAgY29tbWFuZHMgYXJlIGlkZW50aWNhbC4KIAogSG93IGRvIEkgY3JlYXRlIGEgYmluYXJ5IGRpc3RyaWJ1dGlvbj8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLUdvIHRvIHRoZSBkaXJlY3RvcnkgIk1hYy9PU1gvQnVpbGRTY3JpcHQiLiBUaGVyZSB5b3UnbGwgZmluZCBhIHNjcmlwdCAKLSJidWlsZC1pbnN0YWxsZXIucHkiIHRoYXQgZG9lcyBhbGwgdGhlIHdvcmsuIFRoaXMgd2lsbCBkb3dubG9hZCBhbmQgYnVpbGQKK0Rvd25sb2FkIGFuZCB1bnBhY2sgdGhlIHNvdXJjZSByZWxlYXNlIGZyb20gaHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkLy4KK0dvIHRvIHRoZSBkaXJlY3RvcnkgYGBNYWMvQnVpbGRTY3JpcHRgYC4gVGhlcmUgeW91IHdpbGwgZmluZCBhIHNjcmlwdAorYGBidWlsZC1pbnN0YWxsZXIucHlgYCB0aGF0IGRvZXMgYWxsIHRoZSB3b3JrLiBUaGlzIHdpbGwgZG93bmxvYWQgYW5kIGJ1aWxkCiBhIG51bWJlciBvZiAzcmQtcGFydHkgbGliYXJpZXMsIGNvbmZpZ3VyZXMgYW5kIGJ1aWxkcyBhIGZyYW1ld29yayBQeXRob24sCiBpbnN0YWxscyBpdCwgY3JlYXRlcyB0aGUgaW5zdGFsbGVyIHBhY2thZ2UgZmlsZXMgYW5kIHRoZW4gcGFja3MgdGhpcyBpbiBhCi1ETUcgaW1hZ2UuCitETUcgaW1hZ2UuICBUaGUgc2NyaXB0IGFsc28gYnVpbGRzIGFuIEhUTUwgY29weSBvZiB0aGUgY3VycmVudCBQeXRob24KK2RvY3VtZW50YXRpb24gc2V0IGZvciB0aGlzIHJlbGVhc2UgZm9yIGluY2x1c2lvbiBpbiB0aGUgZnJhbWV3b3JrLiAgVGhlCitpbnN0YWxsZXIgcGFja2FnZSB3aWxsIGNyZWF0ZSBsaW5rcyB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdXNlIGJ5IElETEUsCitweWRvYywgc2hlbGwgdXNlcnMsIGFuZCBGaW5kZXIgdXNlci4KIAotVGhlIHNjcmlwdCB3aWxsIGJ1aWxkIGEgdW5pdmVyc2FsIGJpbmFyeSwgeW91J2xsIHRoZXJlZm9yZSBoYXZlIHRvIHJ1biB0aGlzCitUaGUgc2NyaXB0IHdpbGwgYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IHNvIHlvdSdsbCB0aGVyZWZvcmUgaGF2ZSB0byBydW4gdGhpcwogc2NyaXB0IG9uIE1hYyBPUyBYIDEwLjQgb3IgbGF0ZXIgYW5kIHdpdGggWGNvZGUgMi4xIG9yIGxhdGVyIGluc3RhbGxlZC4KK0hvd2V2ZXIsIHRoZSBQeXRob24gYnVpbGQgcHJvY2VzcyBpdHNlbGYgaGFzIHNldmVyYWwgYnVpbGQgZGVwZW5kZW5jaWVzIG5vdAorYXZhaWxhYmxlIG91dCBvZiB0aGUgYm94IHdpdGggT1MgWCAxMC40IHNvIHlvdSBtYXkgaGF2ZSB0byBpbnN0YWxsCithZGRpdGlvbmFsIHNvZnR3YXJlIGJleW9uZCB3aGF0IGlzIHByb3ZpZGVkIHdpdGggWGNvZGUgMi4gIE9TIFggMTAuNQorcHJvdmlkZXMgYSByZWNlbnQgZW5vdWdoIHN5c3RlbSBQeXRob24gKGluIGBgL3Vzci9iaW5gYCkgdG8gYnVpbGQKK3RoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBzZXQuICBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdXNlIFNES3MgYW5kL29yIG9sZGVyCit2ZXJzaW9ucyBvZiBYY29kZSB0byBidWlsZCBpbnN0YWxsZXJzIHRoYXQgYXJlIGNvbXBhdGlibGUgd2l0aCBvbGRlciBzeXN0ZW1zCitvbiBhIG5ld2VyIHN5c3RlbSBidXQgdGhpcyBtYXkgbm90IGJlIGNvbXBsZXRlbHkgZm9vbHByb29mIHNvIHRoZSByZXN1bHRpbmcKK2V4ZWN1dGFibGVzLCBzaGFyZWQgbGlicmFyaWVzLCBhbmQgYGAuc29gYCBidW5kbGVzIHNob3VsZCBiZSBjYXJlZnVsbHkKK2V4YW1pbmVkIGFuZCB0ZXN0ZWQgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGZvciBwcm9wZXIgZHluYW1pYyBsaW5raW5nCitkZXBlbmRlbmNpZXMuICBJdCBpcyBzYWZlc3QgdG8gYnVpbGQgdGhlIGRpc3RyaWJ1dGlvbiBvbiBhIHN5c3RlbSBydW5uaW5nIHRoZQorbWluaW11bSBPUyBYIHZlcnNpb24gc3VwcG9ydGVkLgogCiBBbGwgb2YgdGhpcyBpcyBub3JtYWxseSBkb25lIGNvbXBsZXRlbHkgaXNvbGF0ZWQgaW4gL3RtcC9fcHksIHNvIGl0IGRvZXMgbm90CiB1c2UgeW91ciBub3JtYWwgYnVpbGQgZGlyZWN0b3J5IG5vciBkb2VzIGl0IGluc3RhbGwgaW50byAvLgpAQCAtMjQ0LDcgKzMwNiw3IEBACiAgICBjb25maWd1cmU6IFdBUk5JTkc6ICAgICAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwogCiBUaGlzIGFsbW9zdCBhbHdheXMgbWVhbnMgeW91IGFyZSB0cnlpbmcgdG8gYnVpbGQgYSB1bml2ZXJzYWwgYmluYXJ5IGZvcgotUHl0aG9uIGFuZCBoYXZlIGxpYmFyaWVzIGluIGBgL3Vzci9sb2NhbGBgIHRoYXQgZG9uJ3QgY29udGFpbiB0aGUgcmVxdWlyZWQKK1B5dGhvbiBhbmQgaGF2ZSBsaWJyYXJpZXMgaW4gYGAvdXNyL2xvY2FsYGAgdGhhdCBkb24ndCBjb250YWluIHRoZSByZXF1aXJlZAogYXJjaGl0ZWN0dXJlcy4gVGVtcG9yYXJpbHkgbW92ZSBgYC91c3IvbG9jYWxgYCBhc2lkZSB0byBmaW5pc2ggdGhlIGJ1aWxkLgogCiAKQEAgLTI1Myw3ICszMTUsNyBAQAogCiBVbmluc3RhbGxpbmcgYSBmcmFtZXdvcmsgY2FuIGJlIGRvbmUgYnkgbWFudWFsbHkgcmVtb3ZpbmcgYWxsIGJpdHMgdGhhdCBnb3QgaW5zdGFsbGVkLgogVGhhdCdzIHRydWUgZm9yIGJvdGggaW5zdGFsbGF0aW9ucyBmcm9tIHNvdXJjZSBhbmQgaW5zdGFsbGF0aW9ucyB1c2luZyB0aGUgYmluYXJ5IGluc3RhbGxlci4KLVNhZGx5IGVub3VnaCBPU1ggZG9lcyBub3QgaGF2ZSBhIGNlbnRyYWwgdW5pbnN0YWxsZXIuCitPUyBYIGRvZXMgbm90IHByb3ZpZGUgYSBjZW50cmFsIHVuaW5zdGFsbGVyLgogCiBUaGUgbWFpbiBiaXQgb2YgYSBmcmFtZXdvcmsgaW5zdGFsbCBpcyB0aGUgZnJhbWV3b3JrIGl0c2VsZiwgaW5zdGFsbGVkIGluCiBgYC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29ya2BgLiBUaGlzIGNhbiBjb250YWluIG11bHRpcGxlIHZlcnNpb25zCkBAIC0yNjcsMTQgKzMyOSwxMiBAQAogQW5kIGxhc3RseSBhIGZyYW1ld29yayBpbnN0YWxsYXRpb24gaW5zdGFsbHMgZmlsZXMgaW4gYGAvdXNyL2xvY2FsL2JpbmBgLCBhbGwgb2YKIHRoZW0gc3ltYm9saWMgbGlua3MgdG8gZmlsZXMgaW4gYGAvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvWC5ZL2JpbmBgLgogCi1PZGRzIGFuZCBlbmRzCi09PT09PT09PT09PT09CiAKLVNvbWV0aGluZyB0byB0YWtlIG5vdGUgb2YgaXMgdGhhdCB0aGUgIi5yc3JjIiBmaWxlcyBpbiB0aGUgZGlzdHJpYnV0aW9uIGFyZQotbm90IGFjdHVhbGx5IHJlc291cmNlIGZpbGVzLCB0aGV5J3JlIEFwcGxlU2luZ2xlIGVuY29kZWQgcmVzb3VyY2UgZmlsZXMuIFRoZQotbWFjcmVzb3VyY2UgbW9kdWxlIGFuZCB0aGUgTWFjL09TWC9NYWtlZmlsZSBjYXRlciBmb3IgdGhpcywgYW5kIGNyZWF0ZQotIi5yc3JjLmRmLnJzcmMiIGZpbGVzIG9uIHRoZSBmbHkgdGhhdCBhcmUgbm9ybWFsIGRhdGFmb3JrLWJhc2VkIHJlc291cmNlCi1maWxlcy4KK1Jlc291cmNlcworPT09PT09PT09CiAKLQlKYWNrIEphbnNlbiwgSmFjay5KYW5zZW5AY3dpLm5sLCAxNS1KdWwtMjAwNC4KLQlSb25hbGQgT3Vzc29yZW4sIFJvbmFsZE91c3NvcmVuQG1hYy5jb20sIDMwLUFwcmlsLTIwMTAKKyAgKiAgaHR0cDovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy8KKworICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvY29tbXVuaXR5L3NpZ3MvY3VycmVudC9weXRob25tYWMtc2lnLworCisgICogIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTWFjL1Rvb2xzL2ZpeGFwcGxlcHl0aG9uMjMucHkgYi9NYWMvVG9vbHMvZml4YXBwbGVweXRob24yMy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThiOTViMy4uMDAwMDAwMAotLS0gYS9NYWMvVG9vbHMvZml4YXBwbGVweXRob24yMy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIiIiZml4YXBwbGVweXRob24yMyAtIEZpeCBBcHBsZS1pbnN0YWxsZWQgUHl0aG9uIDIuMyAob24gTWFjIE9TIFggMTAuMykKLQotUHl0aG9uIDIuMyAoYW5kIDIuMy5YIGZvciBYPDUpIGhhdmUgdGhlIHByb2JsZW0gdGhhdCBidWlsZGluZyBhbiBleHRlbnNpb24KLWZvciBhIGZyYW1ld29yayBpbnN0YWxsYXRpb24gbWF5IGFjY2lkZW50YWxseSBwaWNrIHVwIHRoZSBmcmFtZXdvcmsKLW9mIGEgbmV3ZXIgUHl0aG9uLCBpbiBzdGVhZCBvZiB0aGUgb25lIHRoYXQgd2FzIHVzZWQgdG8gYnVpbGQgdGhlIGV4dGVuc2lvbi4KLQotVGhpcyBzY3JpcHQgbW9kaWZpZXMgdGhlIE1ha2VmaWxlIChpbiAuLi4vbGliL3B5dGhvbjIuMy9jb25maWcpIHRvIHVzZQotdGhlIG5ld2VyIG1ldGhvZCBvZiBsaW5raW5nIGV4dGVuc2lvbnMgd2l0aCAiLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cCIKLXdoaWNoIGZpeGVzIHRoaXMgcHJvYmxlbS4KLQotVGhlIHNjcmlwdCB3aWxsIGZpcnN0IGNoZWNrIGFsbCBwcmVyZXF1aXNpdGVzLCBhbmQgcmV0dXJuIGEgemVybyBleGl0Ci1zdGF0dXMgYWxzbyB3aGVuIG5vdGhpbmcgbmVlZHMgdG8gYmUgZml4ZWQuCi0iIiIKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi0KLU1BS0VGSUxFPScvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLzIuMy9saWIvcHl0aG9uMi4zL2NvbmZpZy9NYWtlZmlsZScKLUNIQU5HRVM9KCgKLSAgICAnTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLWZyYW1ld29yayAkKFBZVEhPTkZSQU1FV09SSylcbicsCi0gICAgJ0xEU0hBUkVEPVx0JChDQykgJChMREZMQUdTKSAtYnVuZGxlIC11bmRlZmluZWQgZHluYW1pY19sb29rdXBcbicKLSAgICApLCgKLSAgICAnQkxEU0hBUkVEPVx0JChDQykgJChMREZMQUdTKSAtYnVuZGxlIC1mcmFtZXdvcmsgJChQWVRIT05GUkFNRVdPUkspXG4nLAotICAgICdCTERTSEFSRUQ9XHQkKENDKSAkKExERkxBR1MpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cFxuJwotICAgICksKAotICAgICdDQz1cdFx0Z2NjXG4nLAotICAgICdDQz1cdFx0L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZ2NjXG4nCi0gICAgKSwoCi0gICAgJ0NYWD1cdFx0YysrXG4nLAotICAgICdDWFg9XHRcdC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvMi4zL2xpYi9weXRob24yLjMvY29uZmlnL1BhbnRoZXJQeXRob25GaXgvcnVuLWcrK1xuJwotKSkKLQotR0NDX1NDUklQVD0nL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZ2NjJwotR1hYX1NDUklQVD0nL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjMvbGliL3B5dGhvbjIuMy9jb25maWcvUGFudGhlclB5dGhvbkZpeC9ydW4tZysrJwotU0NSSVBUPSIiIiMhL2Jpbi9zaAotZXhwb3J0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0xMC4zCi1leGVjICVzICIke0B9IgotIiIiCi0KLWRlZiBmaW5kbGluZShsaW5lcywgc3RhcnQpOgotICAgICIiInJldHVybiBsaW5lIHN0YXJ0aW5nIHdpdGggZ2l2ZW4gc3RyaW5nIG9yIC0xIiIiCi0gICAgZm9yIGkgaW4gcmFuZ2UobGVuKGxpbmVzKSk6Ci0gICAgICAgIGlmIGxpbmVzW2ldWzpsZW4oc3RhcnQpXSA9PSBzdGFydDoKLSAgICAgICAgICAgIHJldHVybiBpCi0gICAgcmV0dXJuIC0xCi0KLWRlZiBmaXgobWFrZWZpbGUsIGRvX2FwcGx5KToKLSAgICAiIiJGaXggdGhlIE1ha2VmaWxlLCBpZiByZXF1aXJlZC4iIiIKLSAgICBmaXhlZCA9IEZhbHNlCi0gICAgbGluZXMgPSBvcGVuKG1ha2VmaWxlKS5yZWFkbGluZXMoKQotCi0gICAgZm9yIG9sZCwgbmV3IGluIENIQU5HRVM6Ci0gICAgICAgIGkgPSBmaW5kbGluZShsaW5lcywgbmV3KQotICAgICAgICBpZiBpID49IDA6Ci0gICAgICAgICAgICAjIEFscmVhZHkgZml4ZWQKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGkgPSBmaW5kbGluZShsaW5lcywgb2xkKQotICAgICAgICBpZiBpIDwgMDoKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBQeXRob24gaW5zdGFsbGF0aW9uIG5vdCBmaXhlZCAoYXBwZWFycyBicm9rZW4pJykKLSAgICAgICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBtaXNzaW5nIGxpbmU6Jywgb2xkKQotICAgICAgICAgICAgcmV0dXJuIDIKLSAgICAgICAgbGluZXNbaV0gPSBuZXcKLSAgICAgICAgZml4ZWQgPSBUcnVlCi0KLSAgICBpZiBmaXhlZDoKLSAgICAgICAgaWYgZG9fYXBwbHk6Ci0gICAgICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogRml4IHRvIEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIGFwcGxpZWQnKQotICAgICAgICAgICAgb3MucmVuYW1lKG1ha2VmaWxlLCBtYWtlZmlsZSArICd+JykKLSAgICAgICAgICAgIG9wZW4obWFrZWZpbGUsICd3Jykud3JpdGVsaW5lcyhsaW5lcykKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgnZml4YXBwbGVweXRob24yMzogRml4IHRvIEFwcGxlLWluc3RhbGxlZCBQeXRob24gMi4zIHNob3VsZCBiZSBhcHBsaWVkJykKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IE5vIGZpeCBuZWVkZWQsIGFwcGVhcnMgdG8gaGF2ZSBiZWVuIGFwcGxpZWQgYmVmb3JlJykKLSAgICAgICAgcmV0dXJuIDAKLQotZGVmIG1ha2VzY3JpcHQoZmlsZW5hbWUsIGNvbXBpbGVyKToKLSAgICAiIiJDcmVhdGUgYSB3cmFwcGVyIHNjcmlwdCBmb3IgYSBjb21waWxlciIiIgotICAgIGRpcm5hbWUgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKVswXQotICAgIGlmIG5vdCBvcy5hY2Nlc3MoZGlybmFtZSwgb3MuWF9PSyk6Ci0gICAgICAgIG9zLm1rZGlyKGRpcm5hbWUsIDBvNzU1KQotICAgIGZwID0gb3BlbihmaWxlbmFtZSwgJ3cnKQotICAgIGZwLndyaXRlKFNDUklQVCAlIGNvbXBpbGVyKQotICAgIGZwLmNsb3NlKCkKLSAgICBvcy5jaG1vZChmaWxlbmFtZSwgMG83NTUpCi0gICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IENyZWF0ZWQnLCBmaWxlbmFtZSkKLQotZGVmIG1haW4oKToKLSAgICAjIENoZWNrIGZvciAtbiBvcHRpb24KLSAgICBpZiBsZW4oc3lzLmFyZ3YpID4gMSBhbmQgc3lzLmFyZ3ZbMV0gPT0gJy1uJzoKLSAgICAgICAgZG9fYXBwbHkgPSBGYWxzZQotICAgIGVsc2U6Ci0gICAgICAgIGRvX2FwcGx5ID0gVHJ1ZQotICAgICMgRmlyc3QgY2hlY2sgT1MgdmVyc2lvbgotICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6Ci0gICAgICAgICMgQWxsIGludGVsIG1hY3MgYXJlIGZpbmUKLSAgICAgICAgcHJpbnQoImZpeGFwcGx5cHl0aG9uMjM6IG5vIGZpeCBpcyBuZWVkZWQgb24gTWFjT1NYIG9uIEludGVsIikKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgIG9zdmVyID0gIHBsYXRmb3JtLm1hY192ZXIoKQotICAgIGlmIG9zdmVyICE9ICcxMC4zJyBhbmQgb3MudmVyIDwgJzEwLjMuJzoKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IG5vIGZpeCBuZWVkZWQgb24gTWFjT1NYIDwgMTAuMycpCi0gICAgICAgIHN5cy5leGl0KDApCi0KLSAgICBpZiBvc3ZlciA+PSAnMTAuNCc6Ci0gICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBubyBmaXggbmVlZGVkIG9uIE1hY09TWCA+PSAxMC40JykKLSAgICAgICAgc3lzLmV4aXQoMCkKLQotICAgICMgVGVzdCB0aGF0IGEgZnJhbWV3b3JrIFB5dGhvbiBpcyBpbmRlZWQgaW5zdGFsbGVkCi0gICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKE1BS0VGSUxFKToKLSAgICAgICAgcHJpbnQoJ2ZpeGFwcGxlcHl0aG9uMjM6IFB5dGhvbiBmcmFtZXdvcmsgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluc3RhbGxlZCAoPyksIG5vdGhpbmcgZml4ZWQnKQotICAgICAgICBzeXMuZXhpdCgwKQotICAgICMgQ2hlY2sgdGhhdCB3ZSBjYW4gYWN0dWFsbHkgd3JpdGUgdGhlIGZpbGUKLSAgICBpZiBkb19hcHBseSBhbmQgbm90IG9zLmFjY2VzcyhNQUtFRklMRSwgb3MuV19PSyk6Ci0gICAgICAgIHByaW50KCdmaXhhcHBsZXB5dGhvbjIzOiBObyB3cml0ZSBwZXJtaXNzaW9uLCBwbGVhc2UgcnVuIHdpdGggInN1ZG8iJykKLSAgICAgICAgc3lzLmV4aXQoMikKLSAgICAjIENyZWF0ZSB0aGUgc2hlbGwgc2NyaXB0cwotICAgIGlmIGRvX2FwcGx5OgotICAgICAgICBpZiBub3Qgb3MuYWNjZXNzKEdDQ19TQ1JJUFQsIG9zLlhfT0spOgotICAgICAgICAgICAgbWFrZXNjcmlwdChHQ0NfU0NSSVBULCAiZ2NjIikKLSAgICAgICAgaWYgbm90IG9zLmFjY2VzcyhHWFhfU0NSSVBULCBvcy5YX09LKToKLSAgICAgICAgICAgIG1ha2VzY3JpcHQoR1hYX1NDUklQVCwgImcrKyIpCi0gICAgIyAgRmluYWxseSBmaXggdGhlIG1ha2VmaWxlCi0gICAgcnYgPSBmaXgoTUFLRUZJTEUsIGRvX2FwcGx5KQotICAgICNzeXMuZXhpdChydikKLSAgICBzeXMuZXhpdCgwKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFjL1Rvb2xzL3B5dGhvbncuYyBiL01hYy9Ub29scy9weXRob253LmMKaW5kZXggMzBjODJhYy4uMWQyZGIzOCAxMDA2NDQKLS0tIGEvTWFjL1Rvb2xzL3B5dGhvbncuYworKysgYi9NYWMvVG9vbHMvcHl0aG9udy5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSA8ZGxmY24uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogCiAKIGV4dGVybiBjaGFyKiogZW52aXJvbjsKQEAgLTE1MCw2ICsxNTEsNTMgQEAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKICAgICBjaGFyKiBleGVjX3BhdGggPSBnZXRfcHl0aG9uX3BhdGgoKTsKKyAgICBzdGF0aWMgY2hhciBwYXRoW1BBVEhfTUFYICogMl07CisgICAgc3RhdGljIGNoYXIgcmVhbF9wYXRoW1BBVEhfTUFYICogMl07CisgICAgaW50IHN0YXR1czsKKyAgICB1aW50MzJfdCBzaXplID0gUEFUSF9NQVggKiAyOworCisgICAgLyogU2V0IHRoZSBvcmlnaW5hbCBleGVjdXRhYmxlIHBhdGggaW4gdGhlIGVudmlyb25tZW50LiAqLworICAgIHN0YXR1cyA9IF9OU0dldEV4ZWN1dGFibGVQYXRoKHBhdGgsICZzaXplKTsKKyAgICBpZiAoc3RhdHVzID09IDApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogTm90ZTogZG9uJ3QgY2FsbCAncmVhbHBhdGgnLCB0aGF0IHdpbGwKKyAgICAgICAgICogZXJhc2Ugc3ltbGluayBpbmZvcm1hdGlvbiwgYW5kIHRoYXQKKyAgICAgICAgICogYnJlYWtzICJweXZlbnYgLS1zeW1saW5rIgorICAgICAgICAgKgorICAgICAgICAgKiBJdCBpcyBuaWNlIHRvIGhhdmUgdGhlIGRpcmVjdG9yeSBuYW1lCisgICAgICAgICAqIGFzIGEgY2xlYW5lZCB1cCBhYnNvbHV0ZSBwYXRoIHRob3VnaCwKKyAgICAgICAgICogdGhlcmVmb3JlIGNhbGwgcmVhbHBhdGggb24gZGlybmFtZShwYXRoKQorICAgICAgICAgKi8KKyAgICAgICAgY2hhciogc2xhc2ggPSBzdHJyY2hyKHBhdGgsICcvJyk7CisgICAgICAgIGlmIChzbGFzaCkgeworICAgICAgICAgICAgY2hhciAgcmVwbGFjZWQ7CisgICAgICAgICAgICByZXBsYWNlZCA9IHNsYXNoWzFdOworICAgICAgICAgICAgc2xhc2hbMV0gPSAwOworICAgICAgICAgICAgaWYgKHJlYWxwYXRoKHBhdGgsIHJlYWxfcGF0aCkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycigxLCAicmVhbHBhdGg6ICVzIiwgcGF0aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzbGFzaFsxXSA9IHJlcGxhY2VkOworICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCBzbGFzaCwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAocmVhbHBhdGgoIi4iLCByZWFsX3BhdGgpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxjYXQocmVhbF9wYXRoLCAiLyIsIHNpemVvZihyZWFsX3BhdGgpKSA+IHNpemVvZihyZWFsX3BhdGgpKSB7CisgICAgICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgICAgICAgICAgZXJyKDEsICJyZWFscGF0aDogJXMiLCBwYXRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdHJsY2F0KHJlYWxfcGF0aCwgcGF0aCwgc2l6ZW9mKHJlYWxfcGF0aCkpID4gc2l6ZW9mKHJlYWxfcGF0aCkpIHsKKyAgICAgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgICAgICAgICBlcnIoMSwgInJlYWxwYXRoOiAlcyIsIHBhdGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2V0ZW52KCJfX1BZVkVOVl9MQVVOQ0hFUl9fIiwgcmVhbF9wYXRoLCAxKTsKKyAgICB9CiAKICAgICAvKgogICAgICAqIExldCBhcmd2WzBdIHJlZmVyIHRvIHRoZSBuZXcgaW50ZXJwcmV0ZXIuIFRoaXMgaXMgbmVlZGVkIHRvCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5wcmUuaW4gYi9NYWtlZmlsZS5wcmUuaW4KaW5kZXggNDRjMWYxNS4uYzQyNDNmMyAxMDA2NDQKLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKyBiL01ha2VmaWxlLnByZS5pbgpAQCAtMzcsNyArMzcsNyBAQAogTElOS0NDPQkJQExJTktDQ0AKIEFSPQkJQEFSQAogUkFOTElCPQkJQFJBTkxJQkAKLVNWTlZFUlNJT049CUBTVk5WRVJTSU9OQAorUkVBREVMRj0JQFJFQURFTEZACiBTT0FCST0JCUBTT0FCSUAKIExEVkVSU0lPTj0JQExEVkVSU0lPTkAKIEhHVkVSU0lPTj0JQEhHVkVSU0lPTkAKQEAgLTE5OCw2ICsxOTgsMTAgQEAKIFBZVEhPTj0JCXB5dGhvbiQoRVhFKQogQlVJTERQWVRIT049CXB5dGhvbiQoQlVJTERFWEUpCiAKK1BZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACitfUFlUSE9OX0hPU1RfUExBVEZPUk09QF9QWVRIT05fSE9TVF9QTEFURk9STUAKK0hPU1RfR05VX1RZUEU9ICBAaG9zdEAKKwogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudCB3aGVuIGJ1aWxkaW5nIHRoZSBwcm9maWxlLW9wdCB0YXJnZXQKIFBST0ZJTEVfVEFTSz0JJChzcmNkaXIpL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weSAtbiAyIC0td2l0aC1nYyAtLXdpdGgtc3lzY2hlY2sKICNQUk9GSUxFX1RBU0s9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQpAQCAtMjQwLDIwICsyNDQsNDEgQEAKICMgUGFyc2VyCiBQR0VOPQkJUGFyc2VyL3BnZW4kKEVYRSkKIAorUFNSQ1M9CQlcCisJCVBhcnNlci9hY2NlbGVyLmMgXAorCQlQYXJzZXIvZ3JhbW1hcjEuYyBcCisJCVBhcnNlci9saXN0bm9kZS5jIFwKKwkJUGFyc2VyL25vZGUuYyBcCisJCVBhcnNlci9wYXJzZXIuYyBcCisJCVBhcnNlci9iaXRzZXQuYyBcCisJCVBhcnNlci9tZXRhZ3JhbW1hci5jIFwKKwkJUGFyc2VyL2ZpcnN0c2V0cy5jIFwKKwkJUGFyc2VyL2dyYW1tYXIuYyBcCisJCVBhcnNlci9wZ2VuLmMKKwogUE9CSlM9CQlcCiAJCVBhcnNlci9hY2NlbGVyLm8gXAogCQlQYXJzZXIvZ3JhbW1hcjEubyBcCiAJCVBhcnNlci9saXN0bm9kZS5vIFwKIAkJUGFyc2VyL25vZGUubyBcCiAJCVBhcnNlci9wYXJzZXIubyBcCi0JCVBhcnNlci9wYXJzZXRvay5vIFwKIAkJUGFyc2VyL2JpdHNldC5vIFwKIAkJUGFyc2VyL21ldGFncmFtbWFyLm8gXAogCQlQYXJzZXIvZmlyc3RzZXRzLm8gXAogCQlQYXJzZXIvZ3JhbW1hci5vIFwKIAkJUGFyc2VyL3BnZW4ubwogCi1QQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvdG9rZW5pemVyLm8KK1BBUlNFUl9PQkpTPQkkKFBPQkpTKSBQYXJzZXIvbXlyZWFkbGluZS5vIFBhcnNlci9wYXJzZXRvay5vIFBhcnNlci90b2tlbml6ZXIubworCitQR1NSQ1M9CQlcCisJCU9iamVjdHMvb2JtYWxsb2MuYyBcCisJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLmMgXAorCQlQeXRob24vbXlzbnByaW50Zi5jIFwKKwkJUHl0aG9uL3B5Y3R5cGUuYyBcCisJCVBhcnNlci90b2tlbml6ZXJfcGdlbi5jIFwKKwkJUGFyc2VyL3ByaW50Z3JhbW1hci5jIFwKKwkJUGFyc2VyL3BhcnNldG9rX3BnZW4uYyBcCisJCVBhcnNlci9wZ2VubWFpbi5jCiAKIFBHT0JKUz0JCVwKIAkJT2JqZWN0cy9vYm1hbGxvYy5vIFwKQEAgLTI2MiwxMyArMjg3LDE2IEBACiAJCVB5dGhvbi9weWN0eXBlLm8gXAogCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4ubyBcCiAJCVBhcnNlci9wcmludGdyYW1tYXIubyBcCisJCVBhcnNlci9wYXJzZXRva19wZ2VuLm8gXAogCQlQYXJzZXIvcGdlbm1haW4ubwogCiBQQVJTRVJfSEVBREVSUz0gXAotCQlQYXJzZXIvcGFyc2VyLmggXAotCQlQYXJzZXIvdG9rZW5pemVyLmgKKwkJJChzcmNkaXIpL1BhcnNlci9wYXJzZXIuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAorCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5PQkpTPQkkKFBHRU5NQUlOKSAkKFBPQkpTKSAkKFBHT0JKUykKK1BHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKK1BHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCkBAIC0zMDUsNyArMzMzLDYgQEAKIAkJUHl0aG9uL2NvZGVjcy5vIFwKIAkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMubyBcCiAJCVB5dGhvbi9lcnJvcnMubyBcCi0JCVB5dGhvbi9mcm96ZW4ubyBcCiAJCVB5dGhvbi9mcm96ZW5tYWluLm8gXAogCQlQeXRob24vZnV0dXJlLm8gXAogCQlQeXRob24vZ2V0YXJncy5vIFwKQEAgLTM3MywxMSArNDAwLDEyIEBACiAJCU9iamVjdHMvbWVtb3J5b2JqZWN0Lm8gXAogCQlPYmplY3RzL21ldGhvZG9iamVjdC5vIFwKIAkJT2JqZWN0cy9tb2R1bGVvYmplY3QubyBcCisJCU9iamVjdHMvbmFtZXNwYWNlb2JqZWN0Lm8gXAogCQlPYmplY3RzL29iamVjdC5vIFwKIAkJT2JqZWN0cy9vYm1hbGxvYy5vIFwKIAkJT2JqZWN0cy9jYXBzdWxlLm8gXAogCQlPYmplY3RzL3Jhbmdlb2JqZWN0Lm8gXAotICAgICAgICAgICAgICAgIE9iamVjdHMvc2V0b2JqZWN0Lm8gXAorCQlPYmplY3RzL3NldG9iamVjdC5vIFwKIAkJT2JqZWN0cy9zbGljZW9iamVjdC5vIFwKIAkJT2JqZWN0cy9zdHJ1Y3RzZXEubyBcCiAJCU9iamVjdHMvdHVwbGVvYmplY3QubyBcCkBAIC0zODYsMTAgKzQxNCw5IEBACiAJCU9iamVjdHMvdW5pY29kZWN0eXBlLm8gXAogCQlPYmplY3RzL3dlYWtyZWZvYmplY3QubwogCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIG9iamVjdHMgdGhhdCBnZXQgbGlua2VkIGludG8gdGhlIFB5dGhvbiBsaWJyYXJ5Ci1MSUJSQVJZX09CSlM9CVwKK0xJQlJBUllfT0JKU19PTUlUX0ZST1pFTj0JXAogCQlNb2R1bGVzL2dldGJ1aWxkaW5mby5vIFwKIAkJJChQQVJTRVJfT0JKUykgXAogCQkkKE9CSkVDVF9PQkpTKSBcCkBAIC0zOTgsNiArNDI1LDEwIEBACiAJCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKQogCitMSUJSQVJZX09CSlM9CVwKKwkJJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pIFwKKwkJUHl0aG9uL2Zyb3plbi5vCisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUnVsZXMKIApAQCAtNDIxLDEwICs0NTIsMTEgQEAKIAkkKE1BS0UpIGFsbCBDRkxBR1M9IiQoQ0ZMQUdTKSAtZnByb2ZpbGUtZ2VuZXJhdGUiIExJQlM9IiQoTElCUykgLWxnY292IgogCiBydW5fcHJvZmlsZV90YXNrOgotCS4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spCisJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKKwkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFBST0ZJTEVfVEFTSykKIAogYnVpbGRfYWxsX3VzZV9wcm9maWxlOgotCSQoTUFLRSkgYWxsIENGTEFHUz0iJChDRkxBR1MpIC1mcHJvZmlsZS11c2UiCisJJChNQUtFKSBhbGwgQ0ZMQUdTPSIkKENGTEFHUykgLWZwcm9maWxlLXVzZSAtZnByb2ZpbGUtY29ycmVjdGlvbiIKIAogY292ZXJhZ2U6CiAJQGVjaG8gIkJ1aWxkaW5nIHdpdGggc3VwcG9ydCBmb3IgY292ZXJhZ2UgY2hlY2tpbmc6IgpAQCAtNDM2LDIwICs0NjgsMjUgQEAKICQoQlVJTERQWVRIT04pOglNb2R1bGVzL3B5dGhvbi5vICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoUFkzTElCUkFSWSkKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIE1vZHVsZXMvcHl0aG9uLm8gJChCTERMSUJSQVJZKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAotcGxhdGZvcm06ICQoQlVJTERQWVRIT04pCi0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLUUgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIHN5c2NvbmZpZyBpbXBvcnQgZ2V0X3BsYXRmb3JtIDsgcHJpbnQoZ2V0X3BsYXRmb3JtKCkrIi0iK3N5cy52ZXJzaW9uWzA6M10pJyA+cGxhdGZvcm0KK3BsYXRmb3JtOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdKScgPnBsYXRmb3JtCiAKKyMgQ3JlYXRlIGJ1aWxkIGRpcmVjdG9yeSBhbmQgZ2VuZXJhdGUgdGhlIHN5c2NvbmZpZyBidWlsZC10aW1lIGRhdGEgdGhlcmUuCisjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCisjIHN5cy5wYXRoIGZpeHVwIC0tIHNlZSBNb2R1bGVzL2dldHBhdGguYy4KK3B5YnVpbGRkaXIudHh0OiAkKEJVSUxEUFlUSE9OKQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1TIC1tIHN5c2NvbmZpZyAtLWdlbmVyYXRlLXBvc2l4LXZhcnMKIAogIyBCdWlsZCB0aGUgc2hhcmVkIG1vZHVsZXMKICMgTUFLRUZMQUdTIGFyZSBzb3J0ZWQgYW5kIG5vcm1hbGl6ZWQuIFVuZGVyIEdOVSBtYWtlIHRoZSAncycgZm9yCiAjIC1zLCAtLXNpbGVudCBvciAtLXF1aWV0IGlzIGFsd2F5cyB0aGUgZmlyc3QgY2hhci4KLXNoYXJlZG1vZHM6ICQoQlVJTERQWVRIT04pCitzaGFyZWRtb2RzOiAkKEJVSUxEUFlUSE9OKSBweWJ1aWxkZGlyLnR4dAogCUBjYXNlICIkJE1BS0VGTEFHUyIgaW4gXAogCSAgICBzKikgcXVpZXQ9Ii1xIjs7IFwKIAkgICAgKikgcXVpZXQ9IiI7OyBcCiAJZXNhYzsgXAogCSQoUlVOU0hBUkVEKSBDQz0nJChDQyknIExEU0hBUkVEPSckKEJMRFNIQVJFRCknIE9QVD0nJChPUFQpJyBcCi0JCS4vJChCVUlMRFBZVEhPTikgLUUgJChzcmNkaXIpL3NldHVwLnB5ICQkcXVpZXQgYnVpbGQKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2Rpcikvc2V0dXAucHkgJCRxdWlldCBidWlsZAogCiAjIEJ1aWxkIHN0YXRpYyBsaWJyYXJ5CiAjIGF2b2lkIGxvbmcgY29tbWFuZCBsaW5lcywgc2FtZSBhcyBMSUJSQVJZX09CSlMKQEAgLTQ1OCw3ICs0OTUsNyBAQAogCSQoQVIpICQoQVJGTEFHUykgJEAgTW9kdWxlcy9nZXRidWlsZGluZm8ubwogCSQoQVIpICQoQVJGTEFHUykgJEAgJChQQVJTRVJfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKRUNUX09CSlMpCi0JJChBUikgJChBUkZMQUdTKSAkQCAkKFBZVEhPTl9PQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChQWVRIT05fT0JKUykgUHl0aG9uL2Zyb3plbi5vCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRFVMRV9PQkpTKSAkKFNJR05BTF9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RPQkpTKQogCSQoUkFOTElCKSAkQApAQCAtNTA1LDcgKzU0Miw3IEBACiAJCS1pbnN0YWxsX25hbWUgJChERVNURElSKSQoUFlUSE9ORlJBTUVXT1JLSU5TVEFMTERJUikvVmVyc2lvbnMvJChWRVJTSU9OKS8kKFBZVEhPTkZSQU1FV09SSykgXAogCQktY29tcGF0aWJpbGl0eV92ZXJzaW9uICQoVkVSU0lPTikgXAogCQktY3VycmVudF92ZXJzaW9uICQoVkVSU0lPTikgXAotCQktZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uICQoTElCUyk7IAorCQktZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uICQoTElCUyk7CiAJJChJTlNUQUxMKSAtZCAtbSAkKERJUk1PREUpICBcCiAJCSQoUFlUSE9ORlJBTUVXT1JLRElSKS9WZXJzaW9ucy8kKFZFUlNJT04pL1Jlc291cmNlcy9FbmdsaXNoLmxwcm9qCiAJJChJTlNUQUxMX0RBVEEpICQoUkVTU1JDRElSKS9JbmZvLnBsaXN0IFwKQEAgLTU1Niw2ICs1OTMsMTggQEAKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAkKExJTktGT1JTSEFSRUQpIC1vICRAIE1vZHVsZXMvX3Rlc3RlbWJlZC5vICQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgSW1wb3J0bGliCisKK01vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWI6IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKKwkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLm8gJChMSUJSQVJZX09CSlNfT01JVF9GUk9aRU4pICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQorCitQeXRob24vaW1wb3J0bGliLmg6ICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCisJJChNQUtFKSBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCisJLi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliIFwKKwkJJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQeXRob24vaW1wb3J0bGliLmgKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNwZWNpYWwgcnVsZXMgZm9yIG9iamVjdCBmaWxlcwogCiBNb2R1bGVzL2dldGJ1aWxkaW5mby5vOiAkKFBBUlNFUl9PQkpTKSBcCkBAIC01NjYsNyArNjE1LDYgQEAKIAkJJChNT0RPQkpTKSBcCiAJCSQoc3JjZGlyKS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAotCSAgICAgIC1EU1ZOVkVSU0lPTj0iXCJgTENfQUxMPUMgJChTVk5WRVJTSU9OKWBcIiIgXAogCSAgICAgIC1ESEdWRVJTSU9OPSJcImBMQ19BTEw9QyAkKEhHVkVSU0lPTilgXCIiIFwKIAkgICAgICAtREhHVEFHPSJcImBMQ19BTEw9QyAkKEhHVEFHKWBcIiIgXAogCSAgICAgIC1ESEdCUkFOQ0g9IlwiYExDX0FMTD1DICQoSEdCUkFOQ0gpYFwiIiBcCkBAIC01ODMsNiArNjMxLDkgQEAKIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCiAJJChNQUlOQ0MpIC1jICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCiAKK01vZHVsZXMvX3Rlc3RlbWJlZC5vOiAkKHNyY2RpcikvTW9kdWxlcy9fdGVzdGVtYmVkLmMKKwkkKE1BSU5DQykgLWMgJChQWV9DT1JFX0NGTEFHUykgLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvX3Rlc3RlbWJlZC5jCisKIFB5dGhvbi9keW5sb2FkX3NobGliLm86ICQoc3JjZGlyKS9QeXRob24vZHlubG9hZF9zaGxpYi5jIE1ha2VmaWxlCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXAogCQktRFNPQUJJPSciJChTT0FCSSkiJyBcCkBAIC01OTUsMTIgKzY0NiwxMyBAQAogCiAkKElPX09CSlMpOiAkKElPX0gpCiAKLSMgVXNlIGEgc3RhbXAgZmlsZSB0byBwcmV2ZW50IG1ha2UgLWogaW52b2tpbmcgcGdlbiB0d2ljZQotJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKTogUGFyc2VyL3BnZW4uc3RhbXAKLVBhcnNlci9wZ2VuLnN0YW1wOiAkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkKLQkJLUAkKElOU1RBTEwpIC1kIEluY2x1ZGUKKyQoR1JBTU1BUl9IKTogJChHUkFNTUFSX0lOUFVUKSAkKFBHRU5TUkNTKQorCQlAJChNS0RJUl9QKSBJbmNsdWRlCisJCSQoTUFLRSkgJChQR0VOKQogCQkkKFBHRU4pICQoR1JBTU1BUl9JTlBVVCkgJChHUkFNTUFSX0gpICQoR1JBTU1BUl9DKQotCQktdG91Y2ggUGFyc2VyL3BnZW4uc3RhbXAKKyQoR1JBTU1BUl9DKTogJChHUkFNTUFSX0gpICQoR1JBTU1BUl9JTlBVVCkgJChQR0VOU1JDUykKKwkJJChNQUtFKSAkKEdSQU1NQVJfSCkKKwkJdG91Y2ggJChHUkFNTUFSX0MpCiAKICQoUEdFTik6CSQoUEdFTk9CSlMpCiAJCSQoQ0MpICQoT1BUKSAkKFBZX0xERkxBR1MpICQoUEdFTk9CSlMpICQoTElCUykgLW8gJChQR0VOKQpAQCAtNjExLDYgKzY2Myw4IEBACiBQYXJzZXIvbWV0YWdyYW1tYXIubzoJJChzcmNkaXIpL1BhcnNlci9tZXRhZ3JhbW1hci5jCiAKIFBhcnNlci90b2tlbml6ZXJfcGdlbi5vOgkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5jCitQYXJzZXIvcGFyc2V0b2tfcGdlbi5vOgkkKHNyY2RpcikvUGFyc2VyL3BhcnNldG9rLmMKK1BhcnNlci9wcmludGdyYW1tYXIubzogJChzcmNkaXIpL1BhcnNlci9wcmludGdyYW1tYXIuYwogCiBQYXJzZXIvcGdlbm1haW4ubzoJJChzcmNkaXIpL0luY2x1ZGUvcGFyc2V0b2suaAogCkBAIC02MTgsNyArNjcyLDcgQEAKIAkkKE1LRElSX1ApICQoQVNUX0hfRElSKQogCSQoQVNETEdFTikgLWggJChBU1RfSF9ESVIpICQoQVNUX0FTREwpCiAKLSQoQVNUX0MpOiAkKEFTVF9BU0RMKSAkKEFTRExHRU5fRklMRVMpCiskKEFTVF9DKTogJChBU1RfSCkgJChBU1RfQVNETCkgJChBU0RMR0VOX0ZJTEVTKQogCSQoTUtESVJfUCkgJChBU1RfQ19ESVIpCiAJJChBU0RMR0VOKSAtYyAkKEFTVF9DX0RJUikgJChBU1RfQVNETCkKIApAQCAtNjQwLDIwICs2OTQsMjkgQEAKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvcGFydGl0aW9uLmggXAogCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaCBcCiAJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3RyYW5zbW9ncmlmeS5oIFwKIAkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggXAotCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdW5kZWYuaAorCitVTklDT0RFX0RFUFMgPSAkKEJZVEVTVFJfREVQUykgXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9jb2RlY3MuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmggXAorCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvdWNzMmxpYi5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaCBcCisJCSQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oIFwKKwkJJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKIAogT2JqZWN0cy9ieXRlc29iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlc29iamVjdC5jICQoQllURVNUUl9ERVBTKQogCiBPYmplY3RzL2J5dGVhcnJheW9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYyAkKEJZVEVTVFJfREVQUykKIAotT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBcCi0JCQkJJChCWVRFU1RSX0RFUFMpCitPYmplY3RzL3VuaWNvZGVvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvdW5pY29kZW9iamVjdC5jICQoVU5JQ09ERV9ERVBTKQogCiBPYmplY3RzL2RpY3RvYmplY3QubzogJChzcmNkaXIpL09iamVjdHMvc3RyaW5nbGliL2VxLmgKIE9iamVjdHMvc2V0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCkBAIC02NjEsMTEgKzcyNCwxMiBAQAogJChPUENPREVUQVJHRVRTX0gpOiAkKE9QQ09ERVRBUkdFVEdFTl9GSUxFUykKIAkkKE9QQ09ERVRBUkdFVEdFTikgJChPUENPREVUQVJHRVRTX0gpCiAKLVB5dGhvbi9jZXZhbC5vOiAkKE9QQ09ERVRBUkdFVFNfSCkgUHl0aG9uL2NldmFsX2dpbC5oCitQeXRob24vY2V2YWwubzogJChPUENPREVUQVJHRVRTX0gpICQoc3JjZGlyKS9QeXRob24vY2V2YWxfZ2lsLmgKIAogUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLm86ICQoc3JjZGlyKS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBcCi0JCQkJJChCWVRFU1RSX0RFUFMpIFwKLQkJCQkkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZm9ybWF0dGVyLmgKKwkJCQkkKEJZVEVTVFJfREVQUykKKworUHl0aG9uL2Zyb3plbi5vOiBQeXRob24vaW1wb3J0bGliLmgKIAogT2JqZWN0cy90eXBlb2JqZWN0Lm86IE9iamVjdHMvdHlwZXNsb3RzLmluYwogT2JqZWN0cy90eXBlc2xvdHMuaW5jOiAkKHNyY2RpcikvSW5jbHVkZS90eXBlc2xvdHMuaCAkKHNyY2RpcikvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTY3NSw4OSArNzM5LDg5IEBACiAjIEhlYWRlciBmaWxlcwogCiBQWVRIT05fSEVBREVSUz0gXAotCQlJbmNsdWRlL1B5dGhvbi1hc3QuaCBcCi0JCUluY2x1ZGUvUHl0aG9uLmggXAotCQlJbmNsdWRlL2Fic3RyYWN0LmggXAotCQlJbmNsdWRlL2FjY3UuaCBcCi0JCUluY2x1ZGUvYXNkbC5oIFwKLQkJSW5jbHVkZS9hc3QuaCBcCi0gICAgICAgICAgICAgICAgSW5jbHVkZS9ibHRpbm1vZHVsZS5oIFwKLQkJSW5jbHVkZS9iaXRzZXQuaCBcCi0JCUluY2x1ZGUvYm9vbG9iamVjdC5oIFwKLQkJSW5jbHVkZS9ieXRlc19tZXRob2RzLmggXAotCQlJbmNsdWRlL2J5dGVhcnJheW9iamVjdC5oIFwKLQkJSW5jbHVkZS9ieXRlc29iamVjdC5oIFwKLQkJSW5jbHVkZS9jZWxsb2JqZWN0LmggXAotCQlJbmNsdWRlL2NldmFsLmggXAotCQlJbmNsdWRlL2NsYXNzb2JqZWN0LmggXAotCQlJbmNsdWRlL2NvZGUuaCBcCi0JCUluY2x1ZGUvY29kZWNzLmggXAotCQlJbmNsdWRlL2NvbXBpbGUuaCBcCi0JCUluY2x1ZGUvY29tcGxleG9iamVjdC5oIFwKLQkJSW5jbHVkZS9kZXNjcm9iamVjdC5oIFwKLQkJSW5jbHVkZS9kaWN0b2JqZWN0LmggXAotCQlJbmNsdWRlL2R0b2EuaCBcCi0JCUluY2x1ZGUvZHluYW1pY19hbm5vdGF0aW9ucy5oIFwKLQkJSW5jbHVkZS9lbnVtb2JqZWN0LmggXAotCQlJbmNsdWRlL2VycmNvZGUuaCBcCi0JCUluY2x1ZGUvZXZhbC5oIFwKLQkJSW5jbHVkZS9maWxlb2JqZWN0LmggXAotCQlJbmNsdWRlL2ZpbGV1dGlscy5oIFwKLQkJSW5jbHVkZS9mbG9hdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9mcmFtZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9mdW5jb2JqZWN0LmggXAotCQlJbmNsdWRlL2dlbm9iamVjdC5oIFwKLQkJSW5jbHVkZS9pbXBvcnQuaCBcCi0JCUluY2x1ZGUvaW50cmNoZWNrLmggXAotCQlJbmNsdWRlL2l0ZXJvYmplY3QuaCBcCi0JCUluY2x1ZGUvbGlzdG9iamVjdC5oIFwKLQkJSW5jbHVkZS9sb25naW50cmVwci5oIFwKLQkJSW5jbHVkZS9sb25nb2JqZWN0LmggXAotCQlJbmNsdWRlL21hcnNoYWwuaCBcCi0JCUluY2x1ZGUvbWVtb3J5b2JqZWN0LmggXAotCQlJbmNsdWRlL21ldGFncmFtbWFyLmggXAotCQlJbmNsdWRlL21ldGhvZG9iamVjdC5oIFwKLQkJSW5jbHVkZS9tb2RzdXBwb3J0LmggXAotCQlJbmNsdWRlL21vZHVsZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9ub2RlLmggXAotCQlJbmNsdWRlL29iamVjdC5oIFwKLQkJSW5jbHVkZS9vYmppbXBsLmggXAotCQlJbmNsdWRlL29wY29kZS5oIFwKLQkJSW5jbHVkZS9vc2RlZnMuaCBcCi0JCUluY2x1ZGUvcGFyc2V0b2suaCBcCi0JCUluY2x1ZGUvcGF0Y2hsZXZlbC5oIFwKLQkJSW5jbHVkZS9wZ2VuLmggXAotCQlJbmNsdWRlL3BnZW5oZWFkZXJzLmggXAotCQlJbmNsdWRlL3B5YXJlbmEuaCBcCi0JCUluY2x1ZGUvcHlhdG9taWMuaCBcCi0JCUluY2x1ZGUvcHljYXBzdWxlLmggXAotCQlJbmNsdWRlL3B5Y3R5cGUuaCBcCi0JCUluY2x1ZGUvcHlkZWJ1Zy5oIFwKLQkJSW5jbHVkZS9weWVycm9ycy5oIFwKLQkJSW5jbHVkZS9weWZwZS5oIFwKLQkJSW5jbHVkZS9weW1hdGguaCBcCi0JCUluY2x1ZGUvcHlnZXRvcHQuaCBcCi0JCUluY2x1ZGUvcHltZW0uaCBcCi0JCUluY2x1ZGUvcHlwb3J0LmggXAotCQlJbmNsdWRlL3B5c3RhdGUuaCBcCi0JCUluY2x1ZGUvcHlzdHJjbXAuaCBcCi0JCUluY2x1ZGUvcHlzdHJ0b2QuaCBcCi0JCUluY2x1ZGUvcHl0aG9ucnVuLmggXAotCQlJbmNsdWRlL3B5dGhyZWFkLmggXAotCQlJbmNsdWRlL3B5dGltZS5oIFwKLQkJSW5jbHVkZS9yYW5nZW9iamVjdC5oIFwKLQkJSW5jbHVkZS9zZXRvYmplY3QuaCBcCi0JCUluY2x1ZGUvc2xpY2VvYmplY3QuaCBcCi0JCUluY2x1ZGUvc3RydWN0bWVtYmVyLmggXAotCQlJbmNsdWRlL3N0cnVjdHNlcS5oIFwKLQkJSW5jbHVkZS9zeW10YWJsZS5oIFwKLQkJSW5jbHVkZS9zeXNtb2R1bGUuaCBcCi0JCUluY2x1ZGUvdHJhY2ViYWNrLmggXAotCQlJbmNsdWRlL3R1cGxlb2JqZWN0LmggXAotCQlJbmNsdWRlL3Vjbmhhc2guaCBcCi0JCUluY2x1ZGUvdW5pY29kZW9iamVjdC5oIFwKLQkJSW5jbHVkZS93YXJuaW5ncy5oIFwKLQkJSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9QeXRob24uaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Fic3RyYWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hY2N1LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hc2RsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9hc3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2JsdGlubW9kdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9iaXRzZXQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Jvb2xvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVzX21ldGhvZHMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2J5dGVhcnJheW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvYnl0ZXNvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NlbGxvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2NldmFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jbGFzc29iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvY29kZWNzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb21waWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9jb21wbGV4b2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9kZXNjcm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZGljdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZHRvYS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZHluYW1pY19hbm5vdGF0aW9ucy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZW51bW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZXJyY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZXZhbC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmlsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZmlsZXV0aWxzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9mbG9hdG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvZnJhbWVvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2Z1bmNvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2dlbm9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvaW1wb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9pbnRyY2hlY2suaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2l0ZXJvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xpc3RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2xvbmdpbnRyZXByLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9sb25nb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tYXJzaGFsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZW1vcnlvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21ldGFncmFtbWFyLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9tZXRob2RvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21vZHN1cHBvcnQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL21vZHVsZW9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvbmFtZXNwYWNlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9ub2RlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9vYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29iamltcGwuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29wY29kZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvb3NkZWZzLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlhcmVuYS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlhdG9taWMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y2Fwc3VsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHljdHlwZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlkZWJ1Zy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHllcnJvcnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZnBlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hdGguaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Z2V0b3B0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1hY3JvLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weW1lbS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlwb3J0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0YXRlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9weXN0cmNtcC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHlzdHJ0b2QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGhvbnJ1bi5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcHl0aHJlYWQuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5dGltZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvcmFuZ2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3NldG9iamVjdC5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc2xpY2VvYmplY3QuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3RydWN0c2VxLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS9zeW10YWJsZS5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvc3lzbW9kdWxlLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS90cmFjZWJhY2suaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3R1cGxlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS91Y25oYXNoLmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmggXAorCQkkKHNyY2RpcikvSW5jbHVkZS93YXJuaW5ncy5oIFwKKwkJJChzcmNkaXIpL0luY2x1ZGUvd2Vha3JlZm9iamVjdC5oIFwKIAkJcHljb25maWcuaCBcCiAJCSQoUEFSU0VSX0hFQURFUlMpCiAKQEAgLTc2Niw2NSArODMwLDU2IEBACiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotIyBUZXN0IHRoZSBpbnRlcnByZXRlciAodHdpY2UsIG9uY2Ugd2l0aG91dCAucHljIGZpbGVzLCBvbmNlIHdpdGgpCitURVNUT1BUUz0JJChFWFRSQVRFU1RPUFRTKQorVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChURVNUUFlUSE9OT1BUUykKK1RFU1RSVU5ORVI9CSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5CitURVNUVElNRU9VVD0JMzYwMAorCisjIFJ1biBhIGJhc2ljIHNldCBvZiByZWdyZXNzaW9uIHRlc3RzLgorIyBUaGlzIGV4Y2x1ZGVzIHNvbWUgdGVzdHMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlc291cmNlLWludGVuc2l2ZS4KK3Rlc3Q6CQlhbGwgcGxhdGZvcm0KKwkJJChURVNUUlVOTkVSKSAkKFRFU1RPUFRTKQorCisjIFJ1biB0aGUgZnVsbCB0ZXN0IHN1aXRlIHR3aWNlIC0gb25jZSB3aXRob3V0IC5weWMgZmlsZXMsIGFuZCBvbmNlIHdpdGguCiAjIEluIHRoZSBwYXN0LCB3ZSd2ZSBoYWQgcHJvYmxlbXMgd2hlcmUgYnVncyBpbiB0aGUgbWFyc2hhbGxpbmcgb3IKICMgZWxzZXdoZXJlIGNhdXNlZCBieXRlY29kZSByZWFkIGZyb20gLnB5YyBmaWxlcyB0byBiZWhhdmUgZGlmZmVyZW50bHkKICMgdGhhbiBieXRlY29kZSBnZW5lcmF0ZWQgZGlyZWN0bHkgZnJvbSBhIC5weSBzb3VyY2UgZmlsZS4gIFNvbWV0aW1lcwotIyB0aGUgYnl0ZWNvZGUgcmVhZCBmcm9tIGEgLnB5YyBmaWxlIGhhZCB0aGUgYnVnLCBzb210aW1lcyB0aGUgZGlyZWN0bHkKKyMgdGhlIGJ5dGVjb2RlIHJlYWQgZnJvbSBhIC5weWMgZmlsZSBoYWQgdGhlIGJ1Zywgc29tZXRpbWVzIHRoZSBkaXJlY3RseQogIyBnZW5lcmF0ZWQgYnl0ZWNvZGUuICBUaGlzIGlzIHNvbWV0aW1lcyBhIHZlcnkgc2h5IGJ1ZyBuZWVkaW5nIGEgbG90IG9mCiAjIHNhbXBsZSBkYXRhLgotCi1URVNUT1BUUz0JLWwgJChFWFRSQVRFU1RPUFRTKQotVEVTVFBST0c9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQotVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLVdkIC1FIC1SIC1iYiAkKFRFU1RQWVRIT05PUFRTKQotdGVzdDoJCWFsbCBwbGF0Zm9ybQotCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKLQkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQotCiB0ZXN0YWxsOglhbGwgcGxhdGZvcm0KIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCSQoVEVTVFBZVEhPTikgJChzcmNkaXIpL0xpYi9jb21waWxlYWxsLnB5CisJCSQoVEVTVFBZVEhPTikgLUUgJChzcmNkaXIpL0xpYi9jb21waWxlYWxsLnB5CiAJCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCisJCS0kKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQorCQkkKFRFU1RSVU5ORVIpIC11IGFsbCAkKFRFU1RPUFRTKQogCi0jICBSdW4gdGhlIHVuaXRlc3RzIGZvciBib3RoIGFyY2hpdGVjdHVyZXMgaW4gYSBVbml2ZXJzYWwgYnVpbGQgb24gT1NYCi0jICBNdXN0IGJlIHJ1biBvbiBhbiBJbnRlbCBib3guCisjIFJ1biB0aGUgdGVzdCBzdWl0ZSBmb3IgYm90aCBhcmNoaXRlY3R1cmVzIGluIGEgVW5pdmVyc2FsIGJ1aWxkIG9uIE9TWC4KKyMgTXVzdCBiZSBydW4gb24gYW4gSW50ZWwgYm94LgogdGVzdHVuaXZlcnNhbDoJYWxsIHBsYXRmb3JtCiAJCWlmIFsgYGFyY2hgICE9ICdpMzg2JyBdO3RoZW4gXAogCQkJZWNobyAiVGhpcyBjYW4gb25seSBiZSB1c2VkIG9uIE9TWC9pMzg2IiA7XAogCQkJZXhpdCAxIDtcCiAJCWZpCi0JCS1maW5kICQoc3JjZGlyKS9MaWIgLW5hbWUgJyoucHlbY29dJyAtcHJpbnQgfCB4YXJncyBybSAtZgotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAtdWFsbCAkKFRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCi0JCSQoUlVOU0hBUkVEKSAvdXNyL2xpYmV4ZWMvb2FoL3RyYW5zbGF0ZSAuLyQoQlVJTERQWVRIT04pIC1FICQoVEVTVFBST0cpIC11YWxsICQoVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgLXUgYWxsICQoVEVTVE9QVFMpCisJCSQoUlVOU0hBUkVEKSAvdXNyL2xpYmV4ZWMvb2FoL3RyYW5zbGF0ZSBcCisJCQkuLyQoQlVJTERQWVRIT04pIC1FIC1tIHRlc3QgLWogMCAtdSBhbGwgJChURVNUT1BUUykKIAotCi0jIExpa2UgdGVzdGFsbCwgYnV0IHdpdGggYSBzaW5nbGUgcGFzcyBvbmx5Ci0jIHJ1biBhbiBvcHRpb25hbCBzY3JpcHQgdG8gaW5jbHVkZSBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZCBlbnZpcm9ubWVudAorIyBMaWtlIHRlc3RhbGwsIGJ1dCB3aXRoIG9ubHkgb25lIHBhc3MgYW5kIHdpdGhvdXQgbXVsdGlwbGUgcHJvY2Vzc2VzLgorIyBSdW4gYW4gb3B0aW9uYWwgc2NyaXB0IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIGVudmlyb25tZW50LgogYnVpbGRib3R0ZXN0OglhbGwgcGxhdGZvcm0KIAkJLUBpZiB3aGljaCBweWJ1aWxkYm90LmlkZW50aWZ5ID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCiAJCQlweWJ1aWxkYm90LmlkZW50aWZ5ICJDQz0nJChDQyknIiAiQ1hYPSckKENYWCknIjsgXAogCQlmaQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpIC11YWxsIC1yd1cgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKIAogUVVJQ0tURVNUT1BUUz0JJChURVNUT1BUUykgLXggdGVzdF9zdWJwcm9jZXNzIHRlc3RfaW8gdGVzdF9saWIydG8zIFwKIAkJdGVzdF9tdWx0aWJ5dGVjb2RlYyB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgdGVzdF9pdGVydG9vbHMgXAogCQl0ZXN0X211bHRpcHJvY2Vzc2luZyB0ZXN0X21haWxib3ggdGVzdF9zb2NrZXQgdGVzdF9wb2xsIFwKLQkJdGVzdF9zZWxlY3QgdGVzdF96aXBmaWxlCisJCXRlc3Rfc2VsZWN0IHRlc3RfemlwZmlsZSB0ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcwogcXVpY2t0ZXN0OglhbGwgcGxhdGZvcm0KLQkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCi0JCS0kKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoUVVJQ0tURVNUT1BUUykKLQkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFFVSUNLVEVTVE9QVFMpCisJCSQoVEVTVFJVTk5FUikgJChRVUlDS1RFU1RPUFRTKQogCi1NRU1URVNUT1BUUz0gICAgJChRVUlDS1RFU1RPUFRTKSAteCB0ZXN0X2RsIHRlc3RfX19hbGxfXyB0ZXN0X2ZvcmsxIFwKLQkJdGVzdF9sb25nZXhwCi1tZW10ZXN0OglhbGwgcGxhdGZvcm0KLQkJLXJtIC1mICQoc3JjZGlyKS9MaWIvdGVzdC8qLnB5W2NvXQotCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKE1FTVRFU1RPUFRTKQotCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoTUVNVEVTVE9QVFMpCiAKIGluc3RhbGw6IGFsdGluc3RhbGwgYmluaW5zdGFsbAogCkBAIC04NjUsNyArOTIwLDcgQEAKIAlkb25lCiAJJChJTlNUQUxMX1BST0dSQU0pICQoQlVJTERQWVRIT04pICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChMRFZFUlNJT04pJChFWEUpCiAJLWlmIHRlc3QgIiQoVkVSU0lPTikiICE9ICIkKExEVkVSU0lPTikiOyB0aGVuIFwKLQkJaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKSQoVkVSU0lPTikkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikkKFZFUlNJT04pJChFWEUpOyBcCisJCWlmIHRlc3QgLWYgJChERVNURElSKSQoQklORElSKS9weXRob24kKFZFUlNJT04pJChFWEUpIC1vIC1oICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKSQoRVhFKTsgXAogCQl0aGVuIHJtIC1mICQoREVTVERJUikkKEJJTkRJUikvcHl0aG9uJChWRVJTSU9OKSQoRVhFKTsgXAogCQlmaTsgXAogCQkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgcHl0aG9uJChMRFZFUlNJT04pJChFWEUpIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkpOyBcCkBAIC04ODYsMTEgKzk0MSwxMSBAQAogCWZpCiAKIGJpbmluc3RhbGw6IGFsdGJpbmluc3RhbGwKLQktaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS8kKFBZVEhPTikzJChFWEUpOyBcCi0JdGhlbiBybSAtZiAkKERFU1RESVIpJChCSU5ESVIpLyQoUFlUSE9OKTMkKEVYRSk7IFwKKwktaWYgdGVzdCAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSkgLW8gLWggJChERVNURElSKSQoQklORElSKS9weXRob24zJChFWEUpOyBcCisJdGhlbiBybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbjMkKEVYRSk7IFwKIAllbHNlIHRydWU7IFwKIAlmaQotCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSBweXRob24kKFZFUlNJT04pJChFWEUpICQoUFlUSE9OKTMkKEVYRSkpCisJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5dGhvbiQoVkVSU0lPTikkKEVYRSkgcHl0aG9uMyQoRVhFKSkKIAktaWYgdGVzdCAiJChWRVJTSU9OKSIgIT0gIiQoTERWRVJTSU9OKSI7IHRoZW4gXAogCQlybSAtZiAkKERFU1RESVIpJChCSU5ESVIpL3B5dGhvbiQoVkVSU0lPTiktY29uZmlnOyBcCiAJCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyBweXRob24kKExEVkVSU0lPTiktY29uZmlnIHB5dGhvbiQoVkVSU0lPTiktY29uZmlnKTsgXApAQCAtOTA3LDYgKzk2Miw4IEBACiAJKGNkICQoREVTVERJUikkKEJJTkRJUik7ICQoTE4pIC1zIHB5ZG9jJChWRVJTSU9OKSBweWRvYzMpCiAJLXJtIC1mICQoREVTVERJUikkKEJJTkRJUikvMnRvMwogCShjZCAkKERFU1RESVIpJChCSU5ESVIpOyAkKExOKSAtcyAydG8zLSQoVkVSU0lPTikgMnRvMykKKwktcm0gLWYgJChERVNURElSKSQoQklORElSKS9weXZlbnYKKwkoY2QgJChERVNURElSKSQoQklORElSKTsgJChMTikgLXMgcHl2ZW52LSQoVkVSU0lPTikgcHl2ZW52KQogCiAjIEluc3RhbGwgdGhlIG1hbnVhbCBwYWdlCiBtYW5pbnN0YWxsOgpAQCAtOTMyLDIxICs5ODksNDMgQEAKIAkJdGVzdC9jamtlbmNvZGluZ3MgdGVzdC9kZWNpbWFsdGVzdGRhdGEgdGVzdC94bWx0ZXN0ZGF0YSBcCiAJCXRlc3Qvc3VicHJvY2Vzc2RhdGEgdGVzdC9zbmRoZHJkYXRhIFwKIAkJdGVzdC90cmFjZWRtb2R1bGVzIHRlc3QvZW5jb2RlZF9tb2R1bGVzIFwKLQkJY29uY3VycmVudCBjb25jdXJyZW50L2Z1dHVyZXMgZW5jb2RpbmdzIFwKLQkJZW1haWwgZW1haWwvbWltZSBlbWFpbC90ZXN0IGVtYWlsL3Rlc3QvZGF0YSBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL2JvdGhfcG9ydGlvbnMvZm9vIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9ub3RfYV9uYW1lc3BhY2VfcGtnL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjEgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24xL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcG9ydGlvbjIgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3BvcnRpb24yL2ZvbyBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QxL3BhcmVudCBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDEvcGFyZW50L2NoaWxkIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0MiBcCisJCXRlc3QvbmFtZXNwYWNlX3BrZ3MvcHJvamVjdDIvcGFyZW50IFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0Mi9wYXJlbnQvY2hpbGQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzIFwKKwkJdGVzdC9uYW1lc3BhY2VfcGtncy9wcm9qZWN0My9wYXJlbnQgXAorCQl0ZXN0L25hbWVzcGFjZV9wa2dzL3Byb2plY3QzL3BhcmVudC9jaGlsZCBcCisgICAgICAgICAgICAgICAgdGVzdC9uYW1lc3BhY2VfcGtncy9tb2R1bGVfYW5kX25hbWVzcGFjZV9wYWNrYWdlIFwKKyAgICAgICAgICAgICAgICB0ZXN0L25hbWVzcGFjZV9wa2dzL21vZHVsZV9hbmRfbmFtZXNwYWNlX3BhY2thZ2UvYV90ZXN0IFwKKwkJY29sbGVjdGlvbnMgY29uY3VycmVudCBjb25jdXJyZW50L2Z1dHVyZXMgZW5jb2RpbmdzIFwKKwkJZW1haWwgZW1haWwvbWltZSB0ZXN0L3Rlc3RfZW1haWwgdGVzdC90ZXN0X2VtYWlsL2RhdGEgXAogCQlodG1sIGpzb24gdGVzdC9qc29uX3Rlc3RzIGh0dHAgZGJtIHhtbHJwYyBcCiAJCXNxbGl0ZTMgc3FsaXRlMy90ZXN0IFwKIAkJbG9nZ2luZyBjc3Ygd3NnaXJlZiB1cmxsaWIgXAogCQlsaWIydG8zIGxpYjJ0bzMvZml4ZXMgbGliMnRvMy9wZ2VuMiBsaWIydG8zL3Rlc3RzIFwKLQkJbGliMnRvMy90ZXN0cy9kYXRhIGxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMgbGliMnRvMy90ZXN0cy9kYXRhL2ZpeGVycy9teWZpeGVzIFwKKwkJbGliMnRvMy90ZXN0cy9kYXRhIGxpYjJ0bzMvdGVzdHMvZGF0YS9maXhlcnMgXAorCQlsaWIydG8zL3Rlc3RzL2RhdGEvZml4ZXJzL215Zml4ZXMgXAogCQljdHlwZXMgY3R5cGVzL3Rlc3QgY3R5cGVzL21hY2hvbGliIGlkbGVsaWIgaWRsZWxpYi9JY29ucyBcCiAJCWRpc3R1dGlscyBkaXN0dXRpbHMvY29tbWFuZCBkaXN0dXRpbHMvdGVzdHMgJChYTUxMSUJTVUJESVJTKSBcCi0JCWltcG9ydGxpYiBpbXBvcnRsaWIvdGVzdCBpbXBvcnRsaWIvdGVzdC9idWlsdGluIFwKLQkJaW1wb3J0bGliL3Rlc3QvZXh0ZW5zaW9uIGltcG9ydGxpYi90ZXN0L2Zyb3plbiBcCi0JCWltcG9ydGxpYi90ZXN0L2ltcG9ydF8gaW1wb3J0bGliL3Rlc3Qvc291cmNlIFwKKwkJaW1wb3J0bGliIHRlc3QvdGVzdF9pbXBvcnRsaWIgdGVzdC90ZXN0X2ltcG9ydGxpYi9idWlsdGluIFwKKwkJdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24gdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4gXAorCQl0ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8gdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UgXAogCQl0dXJ0bGVkZW1vIFwKIAkJbXVsdGlwcm9jZXNzaW5nIG11bHRpcHJvY2Vzc2luZy9kdW1teSBcCi0JCXVuaXR0ZXN0IHVuaXR0ZXN0L3Rlc3QgXAorCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IHVuaXR0ZXN0L3Rlc3QvdGVzdG1vY2sgXAorCQl2ZW52IHZlbnYvc2NyaXB0cyB2ZW52L3NjcmlwdHMvcG9zaXggXAogCQljdXJzZXMgcHlkb2NfZGF0YSAkKE1BQ0hERVBTKQogbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCiAJQGZvciBpIGluICQoU0NSSVBURElSKSAkKExJQkRFU1QpOyBcCkBAIC05NjgsNyArMTA0Nyw3IEBACiAJCWVsc2UJdHJ1ZTsgXAogCQlmaTsgXAogCWRvbmUKLQlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5ICQoc3JjZGlyKS9MaWIvKi5lZ2ctaW5mbyA7IFwKKwlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5IGBjYXQgcHlidWlsZGRpci50eHRgL19zeXNjb25maWdkYXRhLnB5OyBcCiAJZG8gXAogCQlpZiB0ZXN0IC14ICQkaTsgdGhlbiBcCiAJCQkkKElOU1RBTExfU0NSSVBUKSAkJGkgJChERVNURElSKSQoTElCREVTVCk7IFwKQEAgLTEwMDksMjcgKzEwODgsMjcgQEAKIAkJCSQoREVTVERJUikkKExJQkRFU1QpL2Rpc3R1dGlscy90ZXN0cyA7IFwKIAlmaQogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkgLWYgXAogCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKIAkJJChERVNURElSKSQoTElCREVTVCkKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLU8gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCiAJCS1kICQoTElCREVTVCkgLWYgXAogCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKIAkJJChERVNURElSKSQoTElCREVTVCkKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCisJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAogCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAogCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwogCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0JCS4vJChCVUlMRFBZVEhPTikgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotCQkuLyQoQlVJTERQWVRIT04pIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKKwkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL0dyYW1tYXIudHh0CiAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLQkJLi8kKEJVSUxEUFlUSE9OKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAorCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CiAKICMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgogJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOgpAQCAtMTEyMywxMSArMTIwMiwxMyBAQAogIyBJbnN0YWxsIHRoZSBkeW5hbWljYWxseSBsb2FkYWJsZSBtb2R1bGVzCiAjIFRoaXMgZ29lcyBpbnRvICQoZXhlY19wcmVmaXgpCiBzaGFyZWRpbnN0YWxsOiBzaGFyZWRtb2RzCi0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLUUgJChzcmNkaXIpL3NldHVwLnB5IGluc3RhbGwgXAorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9zZXR1cC5weSBpbnN0YWxsIFwKIAkgICAJLS1wcmVmaXg9JChwcmVmaXgpIFwKIAkJLS1pbnN0YWxsLXNjcmlwdHM9JChCSU5ESVIpIFwKIAkJLS1pbnN0YWxsLXBsYXRsaWI9JChERVNUU0hBUkVEKSBcCiAJCS0tcm9vdD0kKERFU1RESVIpLworCS1ybSAkKERFU1RESVIpJChERVNUU0hBUkVEKS9fc3lzY29uZmlnZGF0YS5weQorCS1ybSAtciAkKERFU1RESVIpJChERVNUU0hBUkVEKS9fX3B5Y2FjaGVfXwogCiAjIEhlcmUgYXJlIGEgY291cGxlIG9mIHRhcmdldHMgZm9yIE1hY09TWCBhZ2FpbiwgdG8gaW5zdGFsbCBhIGZ1bGwKICMgZnJhbWV3b3JrLWJhc2VkIFB5dGhvbi4gZnJhbWV3b3JraW5zdGFsbCBpbnN0YWxscyBldmVyeXRoaW5nLCB0aGUKQEAgLTExOTgsMTMgKzEyNzksMTMgQEAKICMgVGhpcyBpbnN0YWxscyBhIGZldyBvZiB0aGUgdXNlZnVsIHNjcmlwdHMgaW4gVG9vbHMvc2NyaXB0cwogc2NyaXB0c2luc3RhbGw6CiAJU1JDRElSPSQoc3JjZGlyKSAkKFJVTlNIQVJFRCkgXAotCS4vJChCVUlMRFBZVEhPTikgJChzcmNkaXIpL1Rvb2xzL3NjcmlwdHMvc2V0dXAucHkgaW5zdGFsbCBcCisJJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9zZXR1cC5weSBpbnN0YWxsIFwKIAktLXByZWZpeD0kKHByZWZpeCkgXAogCS0taW5zdGFsbC1zY3JpcHRzPSQoQklORElSKSBcCiAJLS1yb290PSQoREVTVERJUikvCiAKICMgQnVpbGQgdGhlIHRvcGxldmVsIE1ha2VmaWxlCi1NYWtlZmlsZS5wcmU6IE1ha2VmaWxlLnByZS5pbiBjb25maWcuc3RhdHVzCitNYWtlZmlsZS5wcmU6ICQoc3JjZGlyKS9NYWtlZmlsZS5wcmUuaW4gY29uZmlnLnN0YXR1cwogCUNPTkZJR19GSUxFUz1NYWtlZmlsZS5wcmUgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKIAkkKE1BS0UpIC1mIE1ha2VmaWxlLnByZSBNYWtlZmlsZQogCkBAIC0xMjQ3LDYgKzEzMjgsMTAgQEAKIAlldGFncyBJbmNsdWRlLyouaDsgXAogCWZvciBpIGluICQoU1JDRElSUyk7IGRvIGV0YWdzIC1hICQkaS8qLltjaF07IGRvbmUKIAorIyBUb3VjaCBnZW5lcmF0ZWQgZmlsZXMKK3RvdWNoOgorCWhnIC0tY29uZmlnIGV4dGVuc2lvbnMudG91Y2g9VG9vbHMvaGcvaGd0b3VjaC5weSB0b3VjaCAtdgorCiAjIFNhbml0YXRpb24gdGFyZ2V0cyAtLSBjbGVhbiBsZWF2ZXMgbGlicmFyaWVzLCBleGVjdXRhYmxlcyBhbmQgdGFncwogIyBmaWxlcywgd2hpY2ggY2xvYmJlciByZW1vdmVzIGFzIHdlbGwKIHB5Y3JlbW92YWw6CkBAIC0xMjY5LDE2ICsxMzU0LDE4IEBACiAJZmluZCAuIC1uYW1lICcqLnNbb2xdJyAtZXhlYyBybSAtZiB7fSAnOycKIAlmaW5kIC4gLW5hbWUgJyouc28uWzAtOV0qLlswLTldKicgLWV4ZWMgcm0gLWYge30gJzsnCiAJZmluZCBidWlsZCAtbmFtZSAnZmZpY29uZmlnLmgnIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCi0JZmluZCBidWlsZCAtbmFtZSAnZmZpY29uZmlnLnB5JyAtZXhlYyBybSAtZiB7fSAnOycgfHwgdHJ1ZQorCWZpbmQgYnVpbGQgLW5hbWUgJyoucHknIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisJZmluZCBidWlsZCAtbmFtZSAnKi5weVtjb10nIC1leGVjIHJtIC1mIHt9ICc7JyB8fCB0cnVlCisJLXJtIC1mIHB5YnVpbGRkaXIudHh0CiAJLXJtIC1mIExpYi9saWIydG8zLypHcmFtbWFyKi5waWNrbGUKLQktcm0gLWYgTW9kdWxlcy9fdGVzdGVtYmVkCisJLXJtIC1mIE1vZHVsZXMvX3Rlc3RlbWJlZCBNb2R1bGVzL19mcmVlemVfaW1wb3J0bGliCiAKIHByb2ZpbGUtcmVtb3ZhbDoKIAlmaW5kIC4gLW5hbWUgJyouZ2M/PycgLWV4ZWMgcm0gLWYge30gJzsnCiAKIGNsb2JiZXI6IGNsZWFuIHByb2ZpbGUtcmVtb3ZhbAogCS1ybSAtZiAkKEJVSUxEUFlUSE9OKSAkKFBHRU4pICQoTElCUkFSWSkgJChMRExJQlJBUlkpICQoRExMTElCUkFSWSkgXAotCQl0YWdzIFRBR1MgUGFyc2VyL3BnZW4uc3RhbXAgXAorCQl0YWdzIFRBR1MgXAogCQljb25maWcuY2FjaGUgY29uZmlnLmxvZyBweWNvbmZpZy5oIE1vZHVsZXMvY29uZmlnLmMKIAktcm0gLXJmIGJ1aWxkIHBsYXRmb3JtCiAJLXJtIC1yZiAkKFBZVEhPTkZSQU1FV09SS0RJUikKQEAgLTEyOTQsNyArMTM4MSw2IEBACiAJCU1vZHVsZXMvU2V0dXAgTW9kdWxlcy9TZXR1cC5sb2NhbCBNb2R1bGVzL1NldHVwLmNvbmZpZyBcCiAJCU1vZHVsZXMvbGRfc29fYWl4IE1vZHVsZXMvcHl0aG9uLmV4cCBNaXNjL3B5dGhvbi5wYwogCS1ybSAtZiBweXRob24qLWdkYi5weQotCS1ybSAtZiBweWJ1aWxkZGlyLnR4dAogCWZpbmQgJChzcmNkaXIpICcoJyAtbmFtZSAnKi5mZGMnIC1vIC1uYW1lICcqficgXAogCQkJICAgLW8gLW5hbWUgJ1tALCNdKicgLW8gLW5hbWUgJyoub2xkJyBcCiAJCQkgICAtbyAtbmFtZSAnKi5vcmlnJyAtbyAtbmFtZSAnKi5yZWonIFwKQEAgLTEzMDksOCArMTM5NSw3IEBACiAjIEZpbmQgZmlsZXMgd2l0aCBmdW5ueSBuYW1lcwogZnVubnk6CiAJZmluZCAkKFNVQkRJUlMpICQoU1VCRElSU1RPTykgXAotCQktbmFtZSAuc3ZuIC1wcnVuZSBcCi0JCS1vIC10eXBlIGQgXAorCQktdHlwZSBkIFwKIAkJLW8gLW5hbWUgJyouW2Noc10nIFwKIAkJLW8gLW5hbWUgJyoucHknIFwKIAkJLW8gLW5hbWUgJyoucHl3JyBcCkBAIC0xMzQ5LDEzICsxNDM0LDEzIEBACiBQeXRob24vdGhyZWFkLm86IEBUSFJFQURIRUFERVJTQAogCiAjIERlY2xhcmUgdGFyZ2V0cyB0aGF0IGFyZW4ndCByZWFsIGZpbGVzCi0uUEhPTlk6IGFsbCBidWlsZF9hbGwgc2hhcmVkbW9kcyBvbGRzaGFyZWRtb2RzIHRlc3QgcXVpY2t0ZXN0IG1lbXRlc3QKKy5QSE9OWTogYWxsIGJ1aWxkX2FsbCBzaGFyZWRtb2RzIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QKIC5QSE9OWTogaW5zdGFsbCBhbHRpbnN0YWxsIG9sZHNoYXJlZGluc3RhbGwgYmluaW5zdGFsbCBhbHRiaW5pbnN0YWxsCiAuUEhPTlk6IG1hbmluc3RhbGwgbGliaW5zdGFsbCBpbmNsaW5zdGFsbCBsaWJhaW5zdGFsbCBzaGFyZWRpbnN0YWxsCiAuUEhPTlk6IGZyYW1ld29ya2luc3RhbGwgZnJhbWV3b3JraW5zdGFsbGZyYW1ld29yayBmcmFtZXdvcmtpbnN0YWxsc3RydWN0dXJlCiAuUEhPTlk6IGZyYW1ld29ya2luc3RhbGxtYWNsaWIgZnJhbWV3b3JraW5zdGFsbGFwcHMgZnJhbWV3b3JraW5zdGFsbHVuaXh0b29scwogLlBIT05ZOiBmcmFtZXdvcmthbHRpbnN0YWxsdW5peHRvb2xzIHJlY2hlY2sgYXV0b2NvbmYgY2xlYW4gY2xvYmJlciBkaXN0Y2xlYW4KLS5QSE9OWTogc21lbGx5IGZ1bm55IHBhdGNoY2hlY2sKKy5QSE9OWTogc21lbGx5IGZ1bm55IHBhdGNoY2hlY2sgdG91Y2gKIC5QSE9OWTogZ2RiaG9va3MKIAogIyBJRiBZT1UgUFVUIEFOWVRISU5HIEhFUkUgSVQgV0lMTCBHTyBBV0FZCmRpZmYgLS1naXQgYS9NaXNjL0FDS1MgYi9NaXNjL0FDS1MKaW5kZXggMTgyYzZhNi4uM2VlMzg2NCAxMDA2NDQKLS0tIGEvTWlzYy9BQ0tTCisrKyBiL01pc2MvQUNLUwpAQCAtMTMsOCArMTMsMTEgQEAKIAogQWFoegogTWljaGFlbCBBYmJvdHQKK1Jhaml2IEFicmFoYW0KIERhdmlkIEFicmFoYW1zCitNYXJjIEFicmFtb3dpdHoKIFJvbiBBZGFtCitBbGkgQWZzaGFyCiBKaW0gQWhsc3Ryb20KIEZhcmhhbiBBaG1hZAogTWF0dGhldyBBaHJlbnMKQEAgLTM2LDYgKzM5LDcgQEAKIEVyaWsgQW5kZXJzw6luCiBPbGl2ZXIgQW5kcmljaAogUm9zcyBBbmRydXMKK0p1YW5jYXJsbyBBw7FlegogSsOpcsOpbXkgQW5nZXIKIEpvbiBBbmdsaW4KIEhlaWRpIEFubmV4c3RhZApAQCAtNDQsMTMgKzQ4LDEzIEBACiBKYXNvbiBBc2JhaHIKIERhdmlkIEFzY2hlcgogQ2hyaXMgQXRMZWUKK0F5bWVyaWMgQXVndXN0aW4KIEpvaG4gQXljb2NrCi1KYW4tSGVpbiBCw7xocm1hbgogRG9ub3ZhbiBCYWFyZGEKIEFybmUgQmFiZW5oYXVzZXJoZWlkZQogQXR0aWxhIEJhYm8KLUFsZm9uc28gQmFjaWVybwogTWFyY2luIEJhY2hyeQorQWxmb25zbyBCYWNpZXJvCiBEd2F5bmUgQmFpbGV5CiBTdGlnIEJha2tlbgogR3JlZyBCYWxsCkBAIC02NSwyMSArNjksMjMgQEAKIEFudG9uIEJhcmtvdnNreQogTmljayBCYXJuZXMKIFF1ZW50aW4gQmFybmVzCitEYXZpZCBCYXJuZXR0CiBSaWNoYXJkIEJhcnJhbgogQ2VzYXIgRWR1YXJkbyBCYXJyb3MKIERlcyBCYXJyeQogVWxmIEJhcnRlbHQKIERvbiBCYXNoZm9yZAorUGlvciBCYXN0aWRhCiBOaWNrIEJhc3RpbgogSmVmZiBCYXVlcgotTWlrZSBCYXllcgogTWljaGFlbCBSIEJheAogQW50aG9ueSBCYXh0ZXIKK01pa2UgQmF5ZXIKIFNhbXVlbCBMLiBCYXllcgogRG9uYWxkIEJlYXVkcnkKIERhdmlkIEJlYXpsZXkKLVJvYmluIEJlY2tlcgogTmVhbCBCZWNrZXIKK1JvYmluIEJlY2tlcgogVG9yc3RlbiBCZWNrZXIKIEJpbGwgQmVkZm9yZAogU3RlZmFuIEJlaG5lbApAQCAtOTIsOSArOTgsMTEgQEAKIEFuZHJldyBCZW5uZXR0cwogQW5keSBCZW5za3kKIEJlbm5ldHQgQmVuc29uCitFenJhIEJlcmNoCiBNaWNoZWwgVmFuIGRlbiBCZXJnaAogSnVsaWFuIEJlcm1hbgogQnJpY2UgQmVybmEKK09saXZpZXIgQmVybmFyZAogRXJpYyBCZXNlcgogU3RldmVuIEJldGhhcmQKIFN0ZXBoZW4gQmV2YW4KQEAgLTEwNyw2ICsxMTUsNyBAQAogU3R1YXJ0IEJpc2hvcAogUm95IEJpeGxlcgogSm9uYXRoYW4gQmxhY2sKK1JlbmF1ZCBCbGFuY2gKIE1pa2UgQmxhbmQKIE1hcnRpbiBCbGVzcwogUGFibG8gQmxleWVyCkBAIC0xMTcsMTEgKzEyNiwxMyBAQAogTWF0dGhldyBCb2VkaWNrZXIKIFJvYmluIEJvZXJkaWprCiBEYXZpZCBCb2xlbgotRm9yZXN0IEJvbmQKIEdhd2FpbiBCb2x0b24KK0ZvcmVzdCBCb25kCiBHcmVnb3J5IEJvbmQKK01hdGlhcyBCb3JkZXNlCiBKdXJqZW4gQm9zCiBQZXRlciBCb3NjaAorRGFuIEJvc3dlbGwKIEVyaWMgQm91Y2sKIFRoaWVycnkgQm91c2NoCiBTZWJhc3RpYW4gQm92aW5nCkBAIC0xMzIsOSArMTQzLDExIEBACiBHZW9yZyBCcmFuZGwKIENocmlzdG9waGVyIEJyYW5ub24KIFRlcnJlbmNlIEJyYW5ub24KK0VyaWsgQnJheQogQnJpYW4gQnJhemlsCiBEYXZlIEJyZW5uYW4KIFRvbSBCcmlkZ21hbgorQW50aG9ueSBCcmlnZ3MKIEtlaXRoIEJyaWdncwogVG9iaWFzIEJyaW5rCiBSaWNoYXJkIEJyb2RpZQpAQCAtMTQyLDYgKzE1NSw3IEBACiBEYW5pZWwgQnJvdHNreQogSmVhbiBCcm91d2VycwogR2FyeSBTLiBCcm93bgorVGl0dXMgQnJvd24KIE9sZWcgQnJveXRtYW5uCiBEYXZlIEJydWVjawogRnJhbmNpc2NvIE1hcnTDrW4gQnJ1Z3XDqQpAQCAtMTQ5LDYgKzE2Myw3IEBACiBGbG9yaXMgQnJ1eW5vb2doZQogU3RhbiBCdWJyb3Vza2kKIEVyaWsgZGUgQnVlZ2VyCitKYW4tSGVpbiBCw7xocm1hbgogRGljayBCdWx0ZXJtYW4KIEJpbGwgQnVtZ2FybmVyCiBKaW1teSBCdXJnZXR0CkBAIC0xNTgsMTQgKzE3MywxNSBAQAogVGFybiBXZWlzbmVyIEJ1cnRvbgogTGVlIEJ1c2J5CiBSYWxwaCBCdXRsZXIKK05pY29sYXMgQ2Fkb3UKIEpwIENhbGRlcm9uZQogQXJuYXVkIENhbG1ldHRlcwogRGFuaWVsIENhbHZlbG8KIFRvbnkgQ2FtcGJlbGwKIEJyZXR0IENhbm5vbgogTWlrZSBDYXJsdG9uCitQaWVycmUgQ2FycmllcgogVGVycnkgQ2Fycm9sbAotRGFtaWVuIENhc3NvdQogTG9yZW56byBNLiBDYXR1Y2NpCiBEb25uIENhdmUKIENoYXJsZXMgQ2F6YWJvbgpAQCAtMTc4LDkgKzE5NCwxMCBAQAogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKLU1pdGNoIENoYXBtYW4KLUdyZWcgQ2hhcG1hbgorR29kZWZyb2lkIENoYXBlbGxlCiBCcmFkIENoYXBtYW4KK0dyZWcgQ2hhcG1hbgorTWl0Y2ggQ2hhcG1hbgogRGF2aWQgQ2hhdW0KIE5pY29sYXMgQ2hhdXZhdAogSmVycnkgQ2hlbgpAQCAtMTk1LDkgKzIxMiwxMSBAQAogRGF2aWQgQ2luZWdlCiBDcmFpZyBDaXRybwogR2lsbGVzIENpdmFyaW8KK0NocmlzIENsYXJrCiBNaWtlIENsYXJrc29uCiBBbmRyZXcgQ2xlZ2cKIEJyYWQgQ2xlbWVudHMKK1JvYmJpZSBDbGVtb25zCiBTdGV2ZSBDbGlmdAogSGVydsOpIENvYXRhbmhheQogTmljayBDb2dobGFuCkBAIC0yMDgsOCArMjI3LDkgQEAKIEplZmZlcnkgQ29sbGlucwogUm9iZXJ0IENvbGxpbnMKIFBhdWwgQ29sb21pZXRzCi1EZW52ZXIgQ29uZXliZWFyZQorQ2hyaXN0b3BoZSBDb21iZWxsZXMKIEdlcmVteSBDb25kcmEKK0RlbnZlciBDb25leWJlYXJlCiBKdWFuIEpvc8OpIENvbnRpCiBNYXR0IENvbndheQogRGF2aWQgTS4gQ29va2UKQEAgLTIzNyw2ICsyNTcsNyBAQAogQW50b25pbyBDdW5pCiBCcmlhbiBDdXJ0aW4KIExpc2FuZHJvIERhbGNpbgorRGFycmVuIERhbGUKIEFuZHJldyBEYWxrZQogTGFycyBEYW1lcm93CiBFdmFuIERhbmRyZWEKQEAgLTI0NSwxMCArMjY2LDEzIEBACiBCZW4gRGFybmVsbAogS3VzaGFsIERhcwogSm9uYXRoYW4gRGFzdGVlbAorUGllcnJlLVl2ZXMgRGF2aWQKK1hhdmllciBkZSBHYXllCiBKb2huIERlR29vZAogTmVkIERlaWx5CiBWaW5jZW50IERlbGZ0CiBBcm5hdWQgRGVsb2JlbGxlCitLb25yYWQgRGVsb25nCiBFcmlrIERlbWFpbmUKIEpvaG4gRGVubmlzCiBMLiBQZXRlciBEZXV0c2NoCkBAIC0yNjUsNiArMjg5LDcgQEAKIEh1bWJlcnRvIERpb2dlbmVzCiBZdmVzIERpb25uZQogRGFuaWVsIERpdHRtYXIKK0pvc2lwIERqb2xvbmdhCiBKYXJvbWlyIERvbGVjZWsKIElzbWFpbCBEb25tZXoKIFJvYmVydCBEb25vaHVlCkBAIC0yOTEsNiArMzE2LDcgQEAKIFdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAorSm9obiBFZG1vbmRzCiBHcmFudCBFZHdhcmRzCiBKb2huIEVocmVzbWFuCiBUYWwgRWluYXQKQEAgLTI5OCwyOSArMzI0LDM1IEBACiBBbmRyZXcgRWxhbmQKIEp1bGllbiDDiWxpZQogTGFuY2UgRWxsaW5naGF1cworRGFuaWVsIEVsbGlzCiBEYXZpZCBFbHkKIEplZmYgRXBsZXIKK0plZmYgTWNOZWlsCiBUb20gRXBwZXJseQogU3RvZmZlbCBFcmFzbXVzCiBKw7xyZ2VuIEEuIEVyaGFyZAogTWljaGFlbCBFcm5zdAogQmVuIEVzY290bwogQW5keSBFc2tpbHNzb24KK0FuZHLDqSBFc3BhemUKIFN0ZWZhbiBFc3NlcgogTmljb2xhcyBFc3RpYmFscwotU3RlcGhlbiBEIEV2YW5zCiBDYXJleSBFdmFucworU3RlcGhlbiBEIEV2YW5zCiBUaW0gRXZlcmV0dAogUGF1bCBFdmVyaXR0CiBEYXZpZCBFdmVybHkKIERhbmllbCBFdmVycworV2luc3RvbiBFd2VydAogR3JlZyBFd2luZwogTWFydGlqbiBGYWFzc2VuCiBDbG92aXMgRmFicmljaW8KIEFuZHJlYXMgRmFlcmJlcgogQmlsbCBGYW5jaGVyCitNaWNoYWVsIEZhcnJlbGwKIFRyb3kgSi4gRmFycmVsbAogTWFyayBGYXZhcworQm9yaXMgRmVsZAogTmllbHMgRmVyZ3Vzb24KIFNlYmFzdGlhbiBGZXJuYW5kZXoKIEZsb3JpYW4gRmVzdGkKQEAgLTM0MCwxMSArMzcyLDE0IEBACiBBbWF1cnkgRm9yZ2VvdCBkJ0FyYwogRG91ZyBGb3J0CiBKb2huIEZvdWh5CitBbmRyZXcgRnJhbmNpcwogU3RlZmFuIEZyYW5rZQogTWFydGluIEZyYW5rbGluCitCcnVjZSBGcmVkZXJpa3NlbgogUm9iaW4gRnJpZWRyaWNoCiBCcmFkbGV5IEZyb2VobGUKIEl2YW4gRnJvaG5lCitNYXR0aGlhcyBGdWNocwogSmltIEZ1bHRvbgogVGFkYXlvc2hpIEZ1bmFiYQogR3lybyBGdW5jaApAQCAtMzgxLDEwICs0MTYsMTMgQEAKIEpvbmF0aGFuIEdpZGR5CiBKb2hhbm5lcyBHaWpzYmVycwogTWljaGFlbCBHaWxmaXgKK1lhbm5pY2sgR2luZ3JhcwogTWF0dCBHaXVjYQorTWljaGFlbCBHb2RlcmJhdWVyCiBDaHJpc3RvcGggR29obGtlCiBUaW0gR29sZGVuCiBHdWlsaGVybWUgR29uw6dhbHZlcworVGlhZ28gR29uw6dhbHZlcwogQ2hyaXMgR29ubmVybWFuCiBTaGVsbGV5IEdvb2NoCiBEYXZpZCBHb29kZ2VyCkBAIC00MDEsMTUgKzQzOSwxOCBAQAogTWljaGFlbCBHdXJhdmFnZQogTGFycyBHdXN0w6RiZWwKIFRob21hcyBHw7x0dGxlcgorSm9uYXMgSC4KIEJhcnJ5IEhhZGRvdwogUGhpbGlwcCBIYWdlbWVpc3RlcgogUGF1bCB0ZW4gSGFnZW4KIFJhc211cyBIYWhuCiBQZXRlciBIYWlnaHQKIFbDoWNsYXYgSGFpc21hbgorV2Fsa2VyIEhhbGUgSVYKIEJvYiBIYWxsZXkKIEplc3NlIEhhbGxpbwogSnVuIEhhbWFubworQWxleGFuZHJlIEhhbWVsaW4KIEFuZGVycyBIYW1tYXJxdWlzdAogTWFyayBIYW1tb25kCiBIYXJhbGQgSGFuY2hlLU9sc2VuCkBAIC00MjEsNiArNDYyLDcgQEAKIERlcmVrIEhhcmxhbmQKIEphc29uIEhhcnBlcgogQnJpYW4gSGFycmluZworSm9uYXRoYW4gSGFydGxleQogVHJhdmlzIEIuIEhhcnR3ZWxsCiBMYXJyeSBIYXN0aW5ncwogVGltIEhhdGNoCkBAIC00MzQsNiArNDc2LDcgQEAKIE1hbHRlIEhlbG1lcnQKIExhbmNlIEZpbm4gSGVsc3RlbgogSm9uYXRoYW4gSGVuZHJ5CitNaWNoYWVsIEhlbnJ5CiBKYW1lcyBIZW5zdHJpZGdlCiBLYXN1biBIZXJhdGgKIENocmlzIEhlcmJvcnRoCkBAIC00NDUsMTAgKzQ4OCwxMCBAQAogTWFnbnVzIEwuIEhldGxhbmQKIFJheW1vbmQgSGV0dGluZ2VyCiBLZXZhbiBIZXlkb24KK0tlbHNleSBIaWdodG93ZXIKIEphc29uIEhpbGRlYnJhbmQKIFJpY2hpZSBIaW5kbGUKIEtvbnJhZCBIaW5zZW4KLU1pY2hhZWwgSGVucnkKIERhdmlkIEhvYmxleQogVGltIEhvY2hiZXJnCiBKb2VyZy1DeXJpbCBIb2VobGUKQEAgLTQ2NCw2ICs1MDcsNyBAQAogR2Vycml0IEhvbGwKIFNoYW5lIEhvbGxvd2F5CiBSdW5lIEhvbG0KK1Rob21hcyBIb2xtZXMKIFBoaWxpcCBIb21idXJnCiBOYW9mdW1pIEhvbmRhCiBKZWZmcmV5IEhvbmlnCkBAIC00NzIsMjIgKzUxNiwyNyBAQAogQnJpYW4gSG9vcGVyCiBSYW5kYWxsIEhvcHBlcgogTmFkYXYgSG9yZXNoCitBbG9uIEhvcmV2CiBKYW4gSG9zYW5nCiBLZW4gSG93YXJkCiBCcmFkIEhvd2VzCiBNaWtlIEhveQogQ2hpaC1IYW8gSHVhbmcKK0NocmlzdGlhbiBIdWRvbgogTGF3cmVuY2UgSHVkc29uCiBNaWNoYWVsIEh1ZHNvbgogSmltIEh1Z3VuaW4KIEdyZWcgSHVtcGhyZXlzCiBFcmljIEh1c3MKK1RhaWh5dW4gSHdhbmcKIEplcmVteSBIeWx0b24KIEx1ZHdpZyBIw6RobmUKIEdlcmhhcmQgSMOkcmluZwogRnJlZHJpayBIw6XDpXJkCitDYXRhbGluIElhY29iCiBNaWhhaSBJYmFuZXNjdQogQWxpIElraW5jaQorQWFyb24gSWxlcwogTGFycyBJbW1pc2NoCiBCb2JieSBJbXBvbGxvbmlhCiBNZWFkb3IgSW5nZQpAQCAtNTA3LDEyICs1NTYsMTUgQEAKIEphY2sgSmFuc2VuCiBCaWxsIEphbnNzZW4KIFRob21hcyBKYXJvc2NoCi1aYnlzemVrIErEmWRyemVqZXdza2ktU3ptZWsKK0p1aGFuYSBKYXVoaWFpbmVuCitaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrCitKdWxpZW4gSmVoYW5uZXQKIERyZXcgSmVua2lucwogRmxlbW1pbmcgS2rDpnIgSmVuc2VuCiBQaGlsaXAgSC4gSmVuc2VuCiBNdW5TaWMgSmVvbmcKIENocmlzIEplcmRvbmVrCitKaW0gSmV3ZXR0CiBQZWRybyBEaWF6IEppbWVuZXoKIE9yamFuIEpvaGFuc2VuCiBGcmVkcmlrIEpvaGFuc3NvbgpAQCAtNTIyLDEzICs1NzQsMTUgQEAKIE1hdHQgSm9pbmVyCiBUaG9tYXMgSm9sbGFucwogTmljb2xhcyBKb2x5CitCcmlhbiBLLiBKb25lcwogRXZhbiBKb25lcwogSmVyZW15IEpvbmVzCiBSaWNoYXJkIEpvbmVzCiBJcm1lbiBkZSBKb25nCiBMdWNhcyBkZSBKb25nZQotSm9obiBKb3JnZW5zZW4KK0tyaXN0asOhbiBWYWx1ciBKw7Nuc3NvbgogSmVucyBCLiBKb3JnZW5zZW4KK0pvaG4gSm9yZ2Vuc2VuCiBTaWppbiBKb3NlcGgKIEFuZHJlYXMgSnVuZwogVGF0dG9vIE1hYm9uem8gSy4KQEAgLTUzNiwyMiArNTkwLDI0IEBACiBCb2IgS2FobgogS3VydCBCLiBLYWlzZXIKIFRhbWl0byBLYWppeWFtYQorSmFuIEthbGlzemV3c2tpCiBQZXRlciB2YW4gS2FtcGVuCiBSYWZlIEthcGxhbgogSmFjb2IgS2FwbGFuLU1vc3MKLUphbiBLYWxpc3pld3NraQorUGVyIMOYeXZpbmQgS2FybHNlbgogTG91IEthdGVzCiBIaXJvYWtpIEthd2FpCiBTZWJhc3RpZW4gS2VpbQogUnlhbiBLZWxseQogRGFuIEtlbmlnc2JlcmcKLVJvYmVydCBLZXJuCiBSYW5kYWxsIEtlcm4KK1JvYmVydCBLZXJuCiBKaW0gS2VycgogTWFnbnVzIEtlc3NsZXIKIExhd3JlbmNlIEtlc3RlbG9vdAogVml2ZWsgS2hlcmEKIE1hZHMgS2lpbGVyaWNoCitKYXNvbiBLaWxsZW4KIEphbiBLaW0KIFRhZWsgSm9vIEtpbQogVy4gVHJldm9yIEtpbmcKQEAgLTU3NSw2ICs2MzEsOCBAQAogRGFtb24gS29obGVyCiBNYXJrbyBLb2h0YWxhCiBHdWlkbyBLb2xsZXJpZQorSmFjZWsgS29uaWVjem55CivQnNCw0YDQuiDQmtC+0YDQtdC90LHQtdGA0LMKIEFya2FkeSBLb3BseWFyb3YKIFBldGVyIEEuIEtvcmVuCiBWbGFkIEtvcm9sZXYKQEAgLTU4OCwzNCArNjQ2LDM5IEBACiBNaWNoYWVsIEtyZW1lcgogRmFiaWFuIEtyZXV0egogQ8OpZHJpYyBLcmllcgorUGVkcm8gS3JvZ2VyCiBIYW5udSBLcm9zaW5nCiBBbmRyZWogS3JwaWMKIEl2YW4gS3JzdGnEhwogQW5kcmV3IEt1Y2hsaW5nCiBEYXZlIEt1aGxtYW4KK0pvbiBLdWhuCiBWbGFkaW1pciBLdXNobmlyCiBFcm5vIEt1dXNlbGEKIFJvc3MgTGFnZXJ3YWxsCiBDYW1lcm9uIExhaXJkCiBUaG9tYXMgTGFtYgogSmVhbi1CYXB0aXN0ZSAiSmliYSIgTGFteQorUm9uYW4gTGFteQogVG9yc3RlbiBMYW5kc2Nob2ZmCiDFgXVrYXN6IExhbmdhCiBUaW5vIExhbmdlCiBBbmRyZXcgTGFuZ21lYWQKIERldGxlZiBMYW5uZXJ0CiBTb3JlbiBMYXJzZW4KK0Ftb3MgTGF0dGVpZXIKIFBpZXJzIExhdWRlcgogQmVuIExhdXJpZQogU2ltb24gTGF3CiBKdWxpYSBMYXdhbGwKIENocmlzIExhd3JlbmNlCiBCcmlhbiBMZWFpcgorTWF0aGlldSBMZWR1Yy1IYW1lbAorQ2hyaXN0b3BoZXIgTGVlCitJbnllb2wgTGVlCiBKYW1lcyBMZWUKIEpvaG4gSi4gTGVlCi1Jbnllb2wgTGVlCiBUaG9tYXMgTGVlCi1DaHJpc3RvcGhlciBMZWUKIFRlbm5lc3NlZSBMZWV1d2VuYnVyZwogTHVjIExlZmVidnJlCiBHbHlwaCBMZWZrb3dpdHoKQEAgLTYyOSw2ICs2OTIsNyBAQAogTWFyYy1BbmRyw6kgTGVtYnVyZwogSm9obiBMZW50b24KIENocmlzdG9waGVyIFR1ciBMZXNuaWV3c2tpLUxhYXMKK0FsYWluIExldWZyb3kKIE1hcmsgTGV2aW5zb24KIFdpbGxpYW0gTGV3aXMKIEFraXJhIExpCkBAIC02NDksNiArNzEzLDcgQEAKIE1pcmtvIExpc3MKIE5pY2sgTG9ja3dvb2QKIFN0ZXBoYW5pZSBMb2Nrd29vZAorSHVnbyBMb3BlcyBUYXZhcmVzCiBBbm5lIExvcmQKIFRvbSBMb3JlZG8KIEp1c3RpbiBMb3ZlCkBAIC02NjIsNiArNzI3LDcgQEAKIEppbSBMeW5jaAogTWlrYWVsIEx5bmd2aWcKIE1hcnRpbiB2b24gTMO2d2lzCitHdWlsbGVybW8gTMOzcGV6LUFuZ2xhZGEKIEplZmYgTWFjRG9uYWxkCiBKb2huIE1hY2hpbgogQW5kcmV3IEkgTWFjSW50eXJlCkBAIC02NzMsNiArNzM5LDcgQEAKIERhdmlkIE1hbGNvbG0KIEtlbiBNYW5oZWltZXIKIFZsYWRpbWlyIE1hcmFuZ296b3YKK0NvbGluIE1hcmMKIFZpbmNlbnQgTWFyY2hldHRpCiBEYXZpZCBNYXJlawogRG91ZyBNYXJpZW4KQEAgLTY4Miw4ICs3NDksMTAgQEAKIE93ZW4gTWFydGluCiBXZXN0bGV5IE1hcnTDrW5legogU8OpYmFzdGllbiBNYXJ0aW5pCitTaWRuZXkgU2FuIE1hcnTDrW4KIFJvZ2VyIE1hc3NlCiBOaWNrIE1hdGhld3NvbgorU2ltb24gTWF0aGlldQogTGF1cmEgTWF0c29uCiBHcmFoYW0gTWF0dGhld3MKIERpZXRlciBNYXVyZXIKQEAgLTY5Nyw4ICs3NjYsOCBAQAogTWljaGFlbCBNY0xheQogTWFyayBNYyBNYWhvbgogR29yZG9uIE1jTWlsbGFuCi1DYW9sYW4gTWNOYW1hcmEKIEFuZHJldyBNY05hbWFyYQorQ2FvbGFuIE1jTmFtYXJhCiBDcmFpZyBNY1BoZWV0ZXJzCiBMYW1iZXJ0IE1lZXJ0ZW5zCiBCaWxsIHZhbiBNZWxsZQpAQCAtNzA5LDYgKzc3OCw4IEBACiBMdWtlIE1ld2J1cm4KIENhcmwgTWV5ZXIKIE1pa2UgTWV5ZXIKK1Bpb3RyIE1leWVyCitBbGV4aXMgTcOpdGFpcmVhdQogU3RldmVuIE1pYWxlCiBUcmVudCBNaWNrCiBUb20gTWlkZGxldG9uCkBAIC03MTYsMzIgKzc4NywzNyBAQAogU3RlZmFuIE1paGFpbGEKIEFyaXN0b3RlbGlzIE1pa3JvcG91bG9zCiBQYW9sbyBNaWxhbmkKLURhbWllbiBNaWxsZXIKIENoYWQgTWlsbGVyCitEYW1pZW4gTWlsbGVyCiBKYXNvbiBWLiBNaWxsZXIKIEpheSBULiBNaWxsZXIKIFJvbWFuIE1pbG5lcgorSnVsaWVuIE1pb3R0ZQogQW5kcmlpIFYuIE1pc2hrb3Zza3lpCi1EdXN0aW4gSi4gTWl0Y2hlbGwKIERvbSBNaXRjaGVsbAorRHVzdGluIEouIE1pdGNoZWxsCitadWJpbiBNaXRocmEKIEZsb3JpYW4gTWxhZGl0c2NoCiBEb3VnIE1vZW4KIFRoZSBEcmFnb24gRGUgTW9uc3luZQogU2tpcCBNb250YW5hcm8KK1BldGVyIE1vb2R5CiBQYXVsIE1vb3JlCiBSb3NzIE1vb3JlCiBEZXJlayBNb3JyCiBKYW1lcyBBIE1vcnJpc29uCitEZXJlayBNY1RhdmlzaCBNb3VuY2UKIEFsZXNzYW5kcm8gTW91cmEKIFBhYmxvIE1vdXpvCiBNaGVyIE1vdnNpc3lhbgogUnVzbGFuIE1zdG9pCi1Tam9lcmQgTXVsbGVuZGVyCitNaWNoYWVsIE11bGljaAogU2FwZSBNdWxsZW5kZXIKK1Nqb2VyZCBNdWxsZW5kZXIKIE1pY2hhZWwgTXVsbGVyCiBOZWlsIE11bGxlcgorTG91aXMgTXVucm8KIFIuIERhdmlkIE11cnJheQotUGlvdHIgTWV5ZXIKIERhbGUgTmFnYXRhCiBKb2huIE5hZ2xlCiBUYWthaGlybyBOYWtheWFtYQpAQCAtNzQ5LDEzICs4MjUsMTQgQEAKIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaQogVmlsbW9zIE5lYmVoYWoKIEZyZWRyaWsgTmVocgotVHJlbnQgTmVsc29uCiBUb255IE5lbHNvbgorVHJlbnQgTmVsc29uCiBDaGFkIE5ldHplcgogTWF4IE5ldW5ow7ZmZmVyCiBHZW9yZ2UgTmV2aWxsZS1OZWlsCiBKb2hhbm5lcyBOaWNvbGFpCiBTYW11ZWwgTmljb2xhcnkKK0pvbmF0aGFuIE5pZWhvZgogR3VzdGF2byBOaWVtZXllcgogT3NjYXIgTmllcnN0cmFzegogSHJ2b2plIE5pa3NpYwpAQCAtNzc0LDYgKzg1MSw4IEBACiBLZXZpbiBPJ0Nvbm5vcgogVGltIE8nTWFsbGV5CiBab29rbyBPJ1doaWVsYWNyb254CitKYW1lcyBPYWtsZXkKK0pvbiBPYmVyaGVpZGUKIFBhc2NhbCBPYmVybmRvZXJmZXIKIEplZmZyZXkgT2xsaWUKIEFkYW0gT2xzZW4KQEAgLTgwMywxMyArODgyLDE4IEBACiBEYW4gUGFyaXNpZW4KIFdpbGxpYW0gUGFyawogSGFycmkgUGFzYW5lbgorR2HDq2wgUGFzZ3JpbWF1ZAogQm8gUGVuZwogSm9lIFBldGVyc29uCiBSYW5keSBQYXVzY2gKIFNhbXVlbGUgUGVkcm9uaQorSnVzdGluIFBlZWwKIE1hcmNlbCB2YW4gZGVyIFBlaWpsCitCZXJrZXIgUGVrc2FnCiBTdGV2ZW4gUGVtYmVydG9uCiBTYW50aWFnbyBQZXJlc8OzbgorR2VvcmdlIFBlcmlzdGVyYWtpcworTWF0aGlldSBQZXJyZWF1bHQKIE1hcmsgUGVycmVnbwogVHJldm9yIFBlcnJpbgogR2FicmllbCBkZSBQZXJ0aHVpcwpAQCAtODE5LDYgKzkwMyw3IEBACiBDaHJpcyBQZXRyaWxsaQogQmpvcm4gUGV0dGVyc2VuCiBKdXN0aW4gRC4gUGV0dGl0CitSb25ueSBQZmFubnNjaG1pZHQKIEdlb2ZmIFBoaWxicmljawogR2F2cmllIFBoaWxpcHNvbgogQWRyaWFuIFBoaWxsaXBzCkBAIC04MzQsNiArOTE5LDcgQEAKIEFudG9pbmUgUGl0cm91CiBKZWFuLUZyYW7Dp29pcyBQacOpcm9ubmUKIE9sZWcgUGxha2hvdG55dWsKK1JlbWkgUG9pbnRlbAogR3VpbGhlcm1lIFBvbG8KIE1pY2hhZWwgUG9tcmFuaW5nCiBJdXN0aW4gUG9wCkBAIC04NDIsMTMgKzkyOCwxNSBAQAogQW1yaXQgUHJlbQogUGF1bCBQcmVzY29kCiBEb25vdmFuIFByZXN0b24KK1BhdWwgUHJpY2UKIEp5cmtpIFB1bGxpYWluZW4KIFN0ZXZlIFB1cmNlbGwKLUZlcm5hbmRvIFDDqXJlegogRWR1YXJkbyBQw6lyZXoKK0Zlcm5hbmRvIFDDqXJlegogUGllcnJlIFF1ZW50ZWwKIEJyaWFuIFF1aW5sYW4KIEFuZGVycyBRdmlzdAorSsOpcsO0bWUgUmFkaXgKIEJ1cnRvbiBSYWRvbnMKIEplZmYgUmFtbmFuaQogQnJvZGllIFJhbwpAQCAtODY0LDE3ICs5NTIsMjEgQEAKIEdhcmV0aCBSZWVzCiBTdGV2ZSBSZWV2ZXMKIExlbm5hcnQgUmVnZWJybworSm9obiBSZWdlaHIKK0ZlZGVyaWNvIFJlZ2hlbnphbmkKIE9maXIgUmVpY2hlbmJlcmcKIFNlYW4gUmVpZnNjaG5laWRlcgogTWljaGFlbCBQLiBSZWlsbHkKIEJlcm5oYXJkIFJlaXRlcgogU3RldmVuIFJlaXoKIFJvZWxhbmQgUmVuZ2VsaW5rCitBbnRvaW5lIFJldmVyc2F0CiBGbMOhdmlvIFJpYmVpcm8KLVRpbSBSaWNlCiBGcmFuY2VzY28gUmljY2lhcmRpCitUaW0gUmljZQogSmFuIFBpZXRlciBSaWVnZWwKIEFybWluIFJpZ28KK0FyYyBSaWxleQogTmljaG9sYXMgUmlsZXkKIEplYW4tQ2xhdWRlIFJpbWJhdWx0CiBWbGFkIFJpc2N1dGlhCkBAIC04ODQsMTcgKzk3NiwyMSBAQAogQW50aG9ueSBSb2FjaAogQ2FybCBSb2JiZW4KIE1hcmsgUm9iZXJ0cwotSmltIFJvYmluc29uCiBBbmR5IFJvYmluc29uCitKaW0gUm9iaW5zb24KIE1hcmsgUm9kZHkKIEtldmluIFJvZGdlcnMKIEdpYW1wYW9sbyBSb2RvbGEKK0Vsc29uIFJvZHJpZ3VlegogQWRpIFJvaWJhbgorTHVpcyBSb2phcwogTWlrZSBSb21iZXJnCiBBcm1pbiBSb25hY2hlcgogQ2FzZSBSb29sZQogVGltb3RoeSBSb3Njb2UKK0VyaWsgUm9zZQogSmltIFJvc2tpbmQKK0JyaWFuIFJvc25lcgogR3VpZG8gdmFuIFJvc3N1bQogSnVzdCB2YW4gUm9zc3VtCiBIdWdvIHZhbiBSb3NzdW0KQEAgLTkxMiw5ICsxMDA4LDExIEBACiBKZWZmIFJ1c2gKIFNhbSBSdXNoaW5nCiBNYXJrIFJ1c3NlbGwKK1J1c3R5IFJ1c3NlbGwKIE5pY2sgUnVzc28KIENocmlzIFJ5bGFuZAogQ29uc3RhbnRpbmEgUy4KK1BhdHJpY2sgU2FiaW4KIFPDqWJhc3RpZW4gU2FibMOpCiBTdW1hbiBTYWhhCiBIYWppbWUgU2FpdG91CkBAIC05MjIsNiArMTAyMCw3IEBACiBSaWNoIFNhbHoKIEtldmluIFNhbWJvcm4KIEFkcmlhbiBTYW1wc29uCitKYW1lcyBTYW5kZXJzCiBJbHlhIFNhbmRsZXIKIE1hcmsgU2FwaXJvCiBUeSBTYXJuYQpAQCAtOTQ5LDE1ICsxMDQ4LDE2IEBACiBTdGVmYW4gU2Nod2FyemVyCiBEaWV0bWFyIFNjaHdlcnRiZXJnZXIKIEZlZGVyaWNvIFNjaHdpbmR0Ci1TdGV2ZW4gU2NvdHQKIEJhcnJ5IFNjb3R0CitTdGV2ZW4gU2NvdHQKIE5pY2sgU2VpZGVubWFuCiDFvWlnYSBTZWlsbmFjaHQKIFl1cnkgU2VsaXZhbm92CiBGcmVkIFNlbGxzCiBKaXdvbiBTZW8KK0nDsWlnbyBTZXJuYQogSm9ha2ltIFNlcm5icmFudAotUm9nZXIgU2Vyd3kKK1JvZ2VyIEQuIFNlcnd5CiBKZXJyeSBTZXV0dGVyCiBQZXRlIFNldmFuZGVyCiBEZW5pcyBTZXZlcnNvbgpAQCAtOTgzLDIwICsxMDgzLDI0IEBACiBJb25lbCBTaW1pb25lc2N1CiBLaXJpbGwgU2ltb25vdgogTmF0aGFuIFBhdWwgU2ltb25zCitBZGFtIFNpbXBraW5zCiBKYW5uZSBTaW5ra29uZW4KIE5nIFBoZW5nIFNpb25nCiBHZW9yZ2UgU2lwZQogSi4gU2lwcHJlbGwKIEtyYWdlbiBTaXRha2VyCiBNaWNoYWVsIFNsb2FuCi1FcmljIFYuIFNtaXRoCiBDaHJpc3RvcGhlciBTbWl0aAorRXJpYyBWLiBTbWl0aAogR3JlZ29yeSBQLiBTbWl0aAorTWFyayBTbWl0aAogUm95IFNtaXRoCiBSYWZhbCBTbW90cnp5aworRXJpYyBTbm93CiBEaXJrIFNvZWRlCiBQYXVsIFNva29sb3Zza3kKIENvZHkgU29tZXJ2aWxsZQorRWRvYXJkbyBTcGFkb2xpbmkKIENsYXkgU3BlbmNlCiBTdGVmYW4gU3BlcmxpbmcKIE5pY2hvbGFzIFNwaWVzCkBAIC0xMDA4LDEwICsxMTEyLDEzIEBACiBUYWdlIFN0YWJlbGwtS3VsbwogUXVlbnRpbiBTdGFmZm9yZC1GcmFzZXIKIEZyYW5rIFN0YWphbm8KK0pvZWwgU3RhbmxleQogQW50aG9ueSBTdGFya3MKIE9saXZlciBTdGVlbGUKIEdyZWcgU3RlaW4KK0JhcnVjaCBTdGVyaW4KIENocmlzIFN0ZXJuCitBbGV4IFN0ZXdhcnQKIFZpY3RvciBTdGlubmVyCiBSaWNoYXJkIFN0b2FrbGV5CiBQZXRlciBTdG9laHIKQEAgLTEwMjcsNiArMTEzNCw3IEBACiBOYXRoYW4gU3VsbGl2YW4KIE1hcmsgU3VtbWVyZmllbGQKIFJldWJlbiBTdW1uZXIKK01hcmVrIMWgdXBwYQogSGlzYW8gU3V6dWtpCiBLYWxsZSBTdmVuc3NvbgogQW5kcmV3IFN2ZXRsb3YKQEAgLTEwNDAsOCArMTE0OCw4IEBACiBXaWxsaWFtIFRhbmtzbGV5CiBDaHJpc3RpYW4gVGFuemVyCiBTdGV2ZW4gVGFzY2h1awotTW9udHkgVGF5bG9yCiBBbXkgVGF5bG9yCitNb250eSBUYXlsb3IKIEFuYXRvbHkgVGVjaHRvbmlrCiBNaWtoYWlsIFRlcmVraG92CiBSaWNoYXJkIE0uIFRldwpAQCAtMTA1OSwxMyArMTE2NywxNyBAQAogQ2hyaXN0aWFuIFRpc21lcgogSmltIFRpdHRzbGVyCiBGcmFuayBKLiBUb2JpbgotUiBMaW5kc2F5IFRvZGQKIEJlbm5ldHQgVG9kZAorUiBMaW5kc2F5IFRvZGQKK0V1Z2VuZSBUb2RlcgogRXJpayBUb2xsZXJ1ZAogTWF0aWFzIFRvcmNoaW5za3kKIFNhbmRybyBUb3NpCiBSaWNoYXJkIFRvd25zZW5kCitEYXZpZCBUb3duc2hlbmQKIExhdXJlbmNlIFRyYXR0CitBbGJlcnRvIFRyZXZpbm8KK01hdHRoaWFzIFRyb2ZmYWVzCiBKb2huIFRyb21wCiBKYXNvbiBUcm93YnJpZGdlCiBCcmVudCBUdWJicwpAQCAtMTEwMSw2ICsxMjEzLDcgQEAKIEthbm5hbiBWaWpheWFuCiBLdXJ0IFZpbGUKIE5vcm1hbiBWaW5lCitQYXVsaSBWaXJ0YW5lbgogRnJhbmsgVmlzc2VyCiBKb2hhbm5lcyBWb2dlbAogTWFydGlqbiBWcmllcwpAQCAtMTEzOSwxMCArMTI1MiwxMCBAQAogQnJ5Y2UgIlpvb2tvIiBXaWxjb3gtTydIZWFybgogVGltb3RoeSBXaWxkCiBKYWt1YiBXaWxrCitHZXJhbGQgUy4gV2lsbGlhbXMKIEphc29uIFdpbGxpYW1zCiBKb2huIFdpbGxpYW1zCiBTdWUgV2lsbGlhbXMKLUdlcmFsZCBTLiBXaWxsaWFtcwogU3RldmVuIFdpbGxpcwogRnJhbmsgV2lsbGlzb24KIEdyZWcgVi4gV2lsc29uCkBAIC0xMTY0LDggKzEyNzcsOCBAQAogUmljaGFyZCBXb2xmZgogQWRhbSBXb29kYmVjawogU3RldmVuIFdvcmsKLURhcnJlbiBXb3JyYWxsCiBHb3Jkb24gV29ybGV5CitEYXJyZW4gV29ycmFsbAogVGhvbWFzIFdvdXRlcnMKIEhlaWtvIFd1bmRyYW0KIERvdWcgV3lhdHQKQEAgLTExNzQsNiArMTI4Nyw3IEBACiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKIEphc29uIFllbworRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQogRGFubnkgWW9vCiBSb3J5IFlvcmtlCmRpZmYgLS1naXQgYS9NaXNjL0hJU1RPUlkgYi9NaXNjL0hJU1RPUlkKaW5kZXggYTdmYmEyYi4uODMyN2RjYSAxMDA2NDQKLS0tIGEvTWlzYy9ISVNUT1JZCisrKyBiL01pc2MvSElTVE9SWQpAQCAtMTAsNiArMTAsNTQwMyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAtRmViLTIwMTEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMTI0OTogRml4IHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdXNpbmcgdGhlIGxpbWl0ZWQgQVBJLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTEyMjI6IEZpeCBub24tZnJhbWV3b3JrIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkIG9uIE1hYyBPUyBYLgorCistIElzc3VlICMxMTE4NDogRml4IGxhcmdlLWZpbGUgc3VwcG9ydCBvbiBBSVguCisKKy0gSXNzdWUgIzk0MTM0NjogRml4IGJyb2tlbiBzaGFyZWQgbGlicmFyeSBidWlsZCBvbiBBSVguCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTA3MDk6IEFkZCB1cGRhdGVkIEFJWCBub3RlcyBpbiBNaXNjL1JFQURNRS5BSVguCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIFJlbGVhc2UgQ2FuZGlkYXRlIDM/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMTMtRmViLTIwMTEqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMTEzNDogQWRkIG1pc3NpbmcgZmllbGRzIHRvIHR5cGVzbG90cy5oLgorCistIElzc3VlICMxMTEzNTogUmVtb3ZlIHJlZHVuZGFudCBkb2MgZmllbGQgZnJvbSBQeVR5cGVfU3BlYy4KKworLSBJc3N1ZSAjMTEwNjc6IEFkZCBQeVR5cGVfR2V0RmxhZ3MsIHRvIHN1cHBvcnQgUHlVbmljb2RlX0NoZWNrIGluIHRoZSBsaW1pdGVkCisgIEFCSS4KKworLSBJc3N1ZSAjMTExMTg6IEZpeCBib2d1cyBleHBvcnQgb2YgTm9uZSBpbiBweXRob24zLmRsbC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxMTExNjogYW55IGVycm9yIGR1cmluZyBhZGRpdGlvbiBvZiBhIG1lc3NhZ2UgdG8gYSBtYWlsYm94IG5vdyBjYXVzZXMgYQorICByb2xsYmFjaywgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSBtYWlsYm94IHBhcnRpYWxseSBtb2RpZmllZC4KKworLSBJc3N1ZSAjMTExMzI6IEZpeCBwYXNzaW5nIG9mICJvcHRpbWl6ZSIgcGFyYW1ldGVyIHdoZW4gcmVjdXJzaW5nIGluCisgIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoKS4KKworLSBJc3N1ZSAjMTExMTA6IEZpeCBhIHBvdGVudGlhbCBkZWNyZWYgb2YgYSBOVUxMIGluIHNxbGl0ZTMuCisKKy0gSXNzdWUgIzgyNzU6IEZpeCBwYXNzaW5nIG9mIGNhbGxiYWNrIGFyZ3VtZW50cyB3aXRoIGN0eXBlcyB1bmRlciBXaW42NC4gIFBhdGNoCisgIGJ5IFN0YW4gTWloYWkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMTA3OTogVGhlIC9BcHBsaWNhdGlvbnMvUHl0aG9uIHgueCBmb2xkZXIgY3JlYXRlZCBieSB0aGUgTWFjIE9TIFgKKyAgaW5zdGFsbGVycyBub3cgaW5jbHVkZXMgYSBsaW5rIHRvIHRoZSBpbnN0YWxsZWQgZG9jdW1lbnRhdGlvbiBhbmQgbm8gbG9uZ2VyCisgIGluY2x1ZGVzIGFuIEV4dHJhcyBkaXJlY3RvcnkuICBUaGUgVG9vbHMgZGlyZWN0b3J5IGlzIG5vdyBpbnN0YWxsZWQgaW4gdGhlCisgIGZyYW1ld29yayB1bmRlciBzaGFyZS9kb2MuCisKKy0gSXNzdWUgIzExMTIxOiBGaXggYnVpbGRpbmcgd2l0aCAtLWVuYWJsZS1zaGFyZWQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxMDk3MTogdGVzdF96aXBpbXBvcnRfc3VwcG9ydCBpcyBvbmNlIGFnYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgcmVmbGVhaworICBodW50ZXIgZmVhdHVyZSBvZiB0ZXN0LnJlZ3J0ZXN0LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAyPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDMwLUphbi0yMDExKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTA0NTE6IG1lbW9yeXZpZXcgb2JqZWN0cyBjb3VsZCBhbGxvdyB0byBtdXRhdGUgYSByZWFkYWJsZSBidWZmZXIuCisgIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjOTEyNDogbWFpbGJveCBub3cgYWNjZXB0cyBiaW5hcnkgaW5wdXQgYW5kIHJlYWRzIGFuZCB3cml0ZXMgbWFpbGJveAorICBmaWxlcyBpbiBiaW5hcnkgbW9kZSwgdXNpbmcgdGhlIGVtYWlsIHBhY2thZ2UncyBiaW5hcnkgc3VwcG9ydCB0byBwYXJzZQorICBhcmJpdHJhcnkgZW1haWwgbWVzc2FnZXMuICBTdHJpbmdJTyBhbmQgdGV4dCBmaWxlIGlucHV0IGlzIGRlcHJlY2F0ZWQsCisgIGFuZCBzdHJpbmcgaW5wdXQgZmFpbHMgZWFybHkgaWYgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIHVzZWQsIHdoZXJlCisgIHByZXZpb3VzbHkgaXQgd291bGQgZmFpbCB3aGVuIHRoZSBlbWFpbCB3YXMgcHJvY2Vzc2VkIGluIGEgbGF0ZXIgc3RlcC4KKworLSBJc3N1ZSAjMTA4NDU6IE1pdGlnYXRlIHRoZSBpbmNvbXBhdGliaWxpdHkgYmV0d2VlbiB0aGUgbXVsdGlwcm9jZXNzaW5nCisgIG1vZHVsZSBvbiBXaW5kb3dzIGFuZCB0aGUgdXNlIG9mIHBhY2thZ2UsIHppcGZpbGUgb3IgZGlyZWN0b3J5IGV4ZWN1dGlvbgorICBieSBzcGVjaWFsIGNhc2luZyBtYWluIG1vZHVsZXMgdGhhdCBhY3R1YWxseSAqYXJlKiBjYWxsZWQgX19tYWluX18ucHkuCisKKy0gSXNzdWUgIzExMDQ1OiBQcm90ZWN0IGxvZ2dpbmcgY2FsbCBhZ2FpbnN0IE5vbmUgYXJndW1lbnQuCisKKy0gSXNzdWUgIzExMDUyOiBDb3JyZWN0IElETEUgbWVudSBhY2NlbGVyYXRvcnMgb24gTWFjIE9TIFggZm9yIFNhdmUKKyAgY29tbWFuZHMuCisKKy0gSXNzdWUgIzExMDUzOiBGaXggSURMRSAiU3ludGF4IEVycm9yIiB3aW5kb3dzIHRvIGJlaGF2ZSBhcyBpbiAyLngsCisgIHByZXZlbnRpbmcgYSBjb25mdXNpbmcgaHVuZyBhcHBlYXJhbmNlIG9uIE9TIFggd2l0aCB0aGUgd2luZG93cworICBvYnNjdXJlZC4KKworLSBJc3N1ZSAjMTA5NDA6IFdvcmthcm91bmQgYW4gSURMRSBoYW5nIG9uIE1hYyBPUyBYIDEwLjYgd2hlbiB1c2luZyB0aGUKKyAgbWVudSBhY2NlbGVyYXRvcnMgZm9yIE9wZW4gTW9kdWxlLCBHbyB0byBMaW5lLCBhbmQgTmV3IEluZGVudCBXaWR0aC4KKyAgVGhlIGFjY2VsZXJhdG9ycyBzdGlsbCB3b3JrIGJ1dCBubyBsb25nZXIgYXBwZWFyIGluIHRoZSBtZW51IGl0ZW1zLgorCistIElzc3VlICMxMDk4OTogRml4IGEgY3Jhc2ggb24gU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoTm9uZSwgVHJ1ZSkuCisKKy0gSXNzdWUgIzExMDIwOiBDb21tYW5kLWxpbmUgcHljbGJyIHdhcyBicm9rZW4gYmVjYXVzZSBvZiBtaXNzaW5nIDItdG8tMworICBjb252ZXJzaW9uLgorCistIElzc3VlICMxMTAxOTogRml4ZWQgQnl0ZXNHZW5lcmF0b3Igc28gdGhhdCBpdCBjb3JyZWN0bHkgaGFuZGxlcyBhIE1lc3NhZ2UKKyAgd2l0aCBhIE5vbmUgYm9keS4KKworLSBJc3N1ZSAjMTEwMTQ6IE1ha2UgJ2ZpbHRlcicgYXJndW1lbnQgaW4gdGFyZmlsZS5UYXJmaWxlLmFkZCgpIGludG8gYQorICBrZXl3b3JkLW9ubHkgYXJndW1lbnQuICBUaGUgcHJlY2VkaW5nIHBvc2l0aW9uYWwgYXJndW1lbnQgd2FzIGRlcHJlY2F0ZWQsCisgIHNvIGl0IG1hZGUgbm8gc2Vuc2UgdG8gYWRkIGZpbHRlciBhcyBhIHBvc2l0aW9uYWwgYXJndW1lbnQuCisKKy0gSXNzdWUgIzExMDA0OiBSZXBhaXJlZCBlZGdlIGNhc2UgaW4gZGVxdWUuY291bnQoKS4KKworLSBJc3N1ZSAjMTA5NzQ6IElETEUgbm8gbG9uZ2VyIGNyYXNoZXMgaWYgaXRzIHJlY2VudCBmaWxlcyBsaXN0IGluY2x1ZGVzIGZpbGVzCisgIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlaXIgcGF0aCBuYW1lcy4KKworLSBIYXZlIGhhc2hsaWIuYWxnb3JpdGhtc19hdmFpbGFibGUgYW5kIGhhc2hsaWIuYWxnb3JpdGhtc19ndWFyYW50ZWVkIGJvdGgKKyAgcmV0dXJuIHNldHMgaW5zdGVhZCBvZiBvbmUgcmV0dXJuaW5nIGEgdHVwbGUgYW5kIHRoZSBvdGhlciBhIGZyb3plbnNldC4KKworLSBJc3N1ZSAjMTA5ODc6IEZpeCB0aGUgcmVjdXJzaW9uIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBfcGlja2xlIG1vZHVsZS4KKworLSBJc3N1ZSAjMTA5ODM6IEZpeCBzZXZlcmFsIGJ1Z3MgbWFraW5nIHR1bm5lbCByZXF1ZXN0cyBpbiBodHRwLmNsaWVudC4KKworLSBJc3N1ZSAjMTA5NTU6IHppcGltcG9ydCB1c2VzIEFTQ0lJIGVuY29kaW5nIGluc3RlYWQgb2YgY3A0MzcgdG8gZGVjb2RlCisgIGZpbGVuYW1lcywgYXQgYm9vdHN0cmFwLCBpZiB0aGUgY29kZWMgcmVnaXN0cnkgaXMgbm90IHJlYWR5IHlldC4gSXQgaXMgc3RpbGwKKyAgcG9zc2libGUgdG8gaGF2ZSBub24tQVNDSUkgZmlsZW5hbWVzIHVzaW5nIHRoZSBVbmljb2RlIGZsYWcgKFVURi04IGVuY29kaW5nKQorICBmb3IgYWxsIGZpbGUgZW50cmllcyBpbiB0aGUgWklQIGZpbGUuCisKKy0gSXNzdWUgIzEwOTQ5OiBJbXByb3ZlZCByb2J1c3RuZXNzIG9mIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzEwOTU1OiBGaXggYSBwb3RlbnRpYWwgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gbW1hcCgpIGEgZmlsZSBwYXN0IGl0cworICBsZW5ndGguICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICMxMDg5ODogQWxsb3cgY29tcGlsaW5nIHRoZSBwb3NpeCBtb2R1bGUgd2hlbiB0aGUgQyBsaWJyYXJ5IGRlZmluZXMKKyAgYSBzeW1ib2wgbmFtZWQgRlNUQVQuCisKKy0gSXNzdWUgIzEwOTgwOiB0aGUgSFRUUCBzZXJ2ZXIgbm93IGVuY29kZXMgaGVhZGVycyB3aXRoIGlzby04ODU5LTEgKGxhdGluMSkKKyAgZW5jb2RpbmcuICBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgZW5jb2Rpbmcgb2YgUEVQIDMzMzMgYW5kIHRoZSBiYXNlIGVuY29kaW5nCisgIG9mIEhUVFAgMS4xLgorCistIFRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgSFRUUCBzZXJ2ZXIsIHRoZSBIVFRQIGNsaWVudCBsaWJyYXJ5IG5vdyBhbHNvCisgIGVuY29kZXMgaGVhZGVycyB3aXRoIGlzby04ODU5LTEgKGxhdGluMSkgZW5jb2RpbmcuICBJdCB3YXMgYWxyZWFkeSBkb2luZworICB0aGF0IGZvciBpbmNvbWluZyBoZWFkZXJzIHdoaWNoIG1ha2VzIHRoaXMgYmVoYXZpb3VyIG5vdyBjb25zaXN0ZW50IGluCisgIGJvdGggaW5jb21pbmcgYW5kIG91dGdvaW5nIGRpcmVjdGlvbi4KKworLSBJc3N1ZSAjOTUwOTogYXJncGFyc2Ugbm93IHByb3Blcmx5IGhhbmRsZXMgSU9FcnJvcnMgcmFpc2VkIGJ5CisgIGFyZ3BhcnNlLkZpbGVUeXBlLgorCistIElzc3VlICMxMDk2MTogVGhlIG5ldyBweWRvYyBzZXJ2ZXIgbm93IGJldHRlciBoYW5kbGVzIGV4Y2VwdGlvbnMgcmFpc2VkCisgIGR1cmluZyByZXF1ZXN0IGhhbmRsaW5nLgorCistIElzc3VlICMxMDY4MDogRml4IG11dHVhbGx5IGV4Y2x1c2l2ZSBhcmd1bWVudHMgZm9yIGFyZ3VtZW50IGdyb3VwcyBpbgorICBhcmdwYXJzZS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzExMDU0OiBBbGxvdyBNYWMgT1MgWCBpbnN0YWxsZXIgYnVpbGRzIHRvIGFnYWluIHdvcmsgb24gMTAuNSB3aXRoCisgIHRoZSBzeXN0ZW0tcHJvdmlkZWQgUHl0aG9uLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAxCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxNi1KYW4tMjAxMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwODg5OiByYW5nZSBpbmRleGluZyBhbmQgc2xpY2luZyBub3cgd29ya3MgY29ycmVjdGx5IG9uIHJhbmdlcyB3aXRoCisgIGEgbGVuZ3RoIHRoYXQgZXhjZWVkcyBzeXMubWF4c2l6ZS4KKworLSBJc3N1ZSAjMTA4OTI6IERvbid0IHNlZ2ZhdWx0IHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBfX2Fic3RyYWN0bWV0aG9kc19fIGZyb20gYQorICBjbGFzcy4KKworLSBJc3N1ZSAjODAyMDogQXZvaWQgYSBjcmFzaCB3aGVyZSB0aGUgc21hbGwgb2JqZWN0cyBhbGxvY2F0b3Igd291bGQgcmVhZAorICBub24tUHl0aG9uIG1hbmFnZWQgbWVtb3J5IHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkIGJ5IGFub3RoZXIgdGhyZWFkLiAgUGF0Y2gKKyAgYnkgTWF0dCBCYW5keS4KKworLSBJc3N1ZSAjMTA4NDE6IE9uIFdpbmRvd3MsIHNldCB0aGUgYmluYXJ5IG1vZGUgb24gc3RkaW4sIHN0ZG91dCwgc3RkZXJyIGFuZCBhbGwKKyAgaW8uRmlsZUlPIG9iamVjdHMgKHRvIG5vdCB0cmFuc2xhdGUgbmV3bGluZXMsIFxyXG4gPD0+IFxuKS4gIFRoZSBQeXRob24gcGFyc2VyCisgIHRyYW5zbGF0ZXMgbmV3bGluZXMgKFxyXG4gPT4gXG4pLgorCistIFJlbW92ZSBidWZmZXIgQVBJIGZyb20gc3RhYmxlIEFCSSBmb3Igbm93LCBzZWUgIzEwMTgxLgorCistIElzc3VlICM4NjUxOiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZiB0aGUgZmlsZQorICBkb2Vzbid0IGhhdmUgUFlfU1NJWkVfVF9DTEVBTiBkZWZpbmUgYW5kIHRoZSBzaXplIGRvZXNuJ3QgZml0IGluIGFuIGludAorICAobGVuZ3RoIGJpZ2dlciB0aGFuIDJeMzEtMSBieXRlcykuCisKKy0gSXNzdWUgIzkwMTUsICM5NjExOiBGaWxlSU8ucmVhZGludG8oKSwgRmlsZUlPLndyaXRlKCksIG9zLndyaXRlKCkgYW5kCisgIHN0ZHByaW50ZXIud3JpdGUoKSBjbGFtcCB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKworLSBJc3N1ZSAjODI3ODogT24gV2luZG93cyBhbmQgd2l0aCBhIE5URlMgZmlsZXN5c3RlbSwgb3Muc3RhdCgpIGFuZCBvcy51dGltZSgpCisgIGNhbiBub3cgaGFuZGxlIGRhdGVzIGFmdGVyIDIwMzguCisKKy0gSXNzdWUgIzEwNzgwOiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgpIGFuZAorICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgpIGRlY29kZSB0aGUgZmlsZW5hbWUgZnJvbSB0aGUKKyAgZmlsZXN5c3RlbSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgorCistIElzc3VlICMxMDc3OTogUHlFcnJfV2FybkV4cGxpY2l0KCkgZGVjb2RlcyB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgorCistIEFkZCBzeXMuZmxhZ3MgYXR0cmlidXRlIGZvciB0aGUgbmV3IC1xIGNvbW1hbmQtbGluZSBvcHRpb24uCisKKy0gSXNzdWUgIzExNTA2OiBUcnlpbmcgdG8gYXNzaWduIHRvIGEgYnl0ZXMgbGl0ZXJhbCBzaG91bGQgcmVzdWx0IGluIGEKKyAgU3ludGF4RXJyb3IuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTA5MTY6IG1tYXAgc2hvdWxkIG5vdCBzZWdmYXVsdCB3aGVuIGEgZmlsZSBpcyBtYXBwZWQgdXNpbmcgMCBhcyBsZW5ndGgKKyAgYW5kIGEgbm9uLXplcm8gb2Zmc2V0LCBhbmQgYW4gYXR0ZW1wdCB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiBmaWxlIGlzIG1hZGUKKyAgKEluZGV4RXJyb3IgaXMgcmFpc2VkIGluc3RlYWQpLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzEwMTU0LCAjMTAwOTA6IGNoYW5nZSB0aGUgbm9ybWFsaXphdGlvbiBvZiBVVEYtOCB0byAiVVRGLTgiIGluc3RlYWQKKyAgb2YgIlVURjgiIGluIHRoZSBsb2NhbGUgbW9kdWxlIGFzIHRoZSBsYXR0ZXIgaXMgbm90IHN1cHBvcnRlZCBNYWNPU1ggYW5kIE9wZW5CU0QuCisKKy0gSXNzdWUgIzEwOTA3OiBXYXJuIE9TIFggMTAuNiBJRExFIHVzZXJzIHRvIHVzZSBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LCByYXRoZXIKKyAgdGhhbiB0aGUgY3VycmVudGx5IHByb2JsZW1hdGljIEFwcGxlLXN1cHBsaWVkIG9uZSwgd2hlbiBydW5uaW5nIHdpdGggdGhlCisgIDY0LS8zMi1iaXQgaW5zdGFsbGVyIHZhcmlhbnQuCisKKy0gSXNzdWUgIzQ5NTM6IGNnaS5GaWVsZFN0b3JhZ2UgYW5kIGNnaS5wYXJzZSgpIHBhcnNlIHRoZSByZXF1ZXN0IGFzIGJ5dGVzLCBub3QKKyAgYXMgdW5pY29kZSwgYW5kIGFjY2VwdCBiaW5hcnkgZmlsZXMuIEFkZCBlbmNvZGluZyBhbmQgZXJyb3JzIGF0dHJpYnV0ZXMgdG8KKyAgY2dpLkZpZWxkU3RvcmFnZS4gUGF0Y2ggd3JpdHRlbiBieSBQaWVycmUgUXVlbnRlbCAod2l0aCBtYW55IGlucHV0cyBieSBHbGVubgorICBMaW5kZXJtYW4pLgorCistIEFkZCBlbmNvZGluZyBhbmQgZXJyb3JzIGFyZ3VtZW50cyB0byB1cmxsaWIucGFyc2VfcXMoKSBhbmQgdXJsbGliLnBhcnNlX3FzbCgpLgorCistIElzc3VlICMxMDg5OTogTm8gZnVuY3Rpb24gdHlwZSBhbm5vdGF0aW9ucyBpbiB0aGUgc3RhbmRhcmQgbGlicmFyeS4gIFJlbW92ZWQKKyAgZnVuY3Rpb24gdHlwZSBhbm5vdGF0aW9ucyBmcm9tIF9weWlvLnB5LgorCistIElzc3VlICMxMDg3NTogVXBkYXRlIFJlZ3VsYXIgRXhwcmVzc2lvbiBIT1dUTzsgcGF0Y2ggYnkgJ1NpbGVudEdob3N0Jy4KKworLSBJc3N1ZSAjMTA4NzI6IFRoZSByZXByKCkgb2YgVGV4dElPV3JhcHBlciBvYmplY3RzIG5vdyBpbmNsdWRlcyB0aGUgbW9kZQorICBpZiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzEwODY5OiBGaXhlZCBidWcgd2hlcmUgYXN0LmluY3JlbWVudF9saW5lbm8gbW9kaWZpZWQgdGhlIHJvb3Qgbm9kZQorICB0d2ljZS4KKworLSBJc3N1ZSAjNTg3MTogZW1haWwuaGVhZGVyLkhlYWRlci5lbmNvZGUgbm93IHJhaXNlcyBhbiBlcnJvciBpZiBhbnkKKyAgY29udGludWF0aW9uIGxpbmUgaW4gdGhlIGZvcm1hdHRlZCB2YWx1ZSBoYXMgbm8gbGVhZGluZyB3aGl0ZSBzcGFjZSBhbmQgbG9va3MKKyAgbGlrZSBhIGhlYWRlci4gIFNpbmNlIEdlbmVyYXRvciB1c2VzIEhlYWRlciB0byBmb3JtYXQgYWxsIGhlYWRlcnMsIHRoaXMgY2hlY2sKKyAgaXMgbWFkZSBmb3IgYWxsIGhlYWRlcnMgaW4gYW55IHNlcmlhbGl6ZWQgbWVzc2FnZSBhdCBzZXJpYWxpemF0aW9uIHRpbWUuICBUaGlzCisgIHByb3ZpZGVzIHByb3RlY3Rpb24gYWdhaW5zdCBoZWFkZXIgaW5qZWN0aW9uIGF0dGFja3MuCisKKy0gSXNzdWUgIzEwODU5OiBNYWtlIGBgY29udGV4dGxpYi5HZW5lcmF0b3JDb250ZXh0TWFuYWdlcmBgIG9mZmljaWFsbHkKKyAgcHJpdmF0ZSBieSByZW5hbWluZyBpdCB0byBgYF9HZW5lcmF0b3JDb250ZXh0TWFuYWdlcmBgLgorCistIElzc3VlICMxMDA0MjogRml4ZWQgdGhlIHRvdGFsX29yZGVyaW5nIGRlY29yYXRvciB0byBoYW5kbGUgY3Jvc3MtdHlwZQorICBjb21wYXJpc29ucyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgorCistIElzc3VlICMxMDY4NjogdGhlIGVtYWlsIHBhY2thZ2Ugbm93IDpyZmM6YDIwNDdgXCAtZW5jb2RlcyBoZWFkZXJzIHdpdGgKKyAgbm9uLUFTQ0lJIGJ5dGVzIChwYXJzZWQgYnkgYSBCeXRlc1BhcnNlcikgd2hlbiBkb2luZyBjb252ZXJzaW9uIHRvIDdiaXQtY2xlYW4KKyAgcHJlc2VudGF0aW9uLCBpbnN0ZWFkIG9mIHJlcGxhY2luZyB0aGVtIHdpdGggP3MuCisKKy0gZW1haWwuaGVhZGVyLkhlYWRlciB3YXMgaW5jb3JyZWN0bHkgZW5jb2RpbmcgZm9sZGluZyB3aGl0ZXNwYWNlIHdoZW4KKyAgcmZjMjA0Ny1lbmNvZGluZyBoZWFkZXIgdmFsdWVzIHdpdGggZW1iZWRkZWQgbmV3bGluZXMsIGxlYXZpbmcgdGhlbSB3aXRob3V0CisgIGZvbGRpbmcgd2hpdGVzcGFjZS4gIEl0IG5vdyB1c2VzIHRoZSBjb250aW51YXRpb25fd3MsIGFzIGl0IGRvZXMgZm9yCisgIGNvbnRpbnVhdGlvbiBsaW5lcyB0aGF0IGl0IGNyZWF0ZXMgaXRzZWxmLgorCistIElzc3VlICMxNzc3NDEyLCAjMTA4Mjc6IENoYW5nZWQgdGhlIHJ1bGVzIGZvciAyLWRpZ2l0IHllYXJzLiBUaGUKKyAgdGltZS5hc2N0aW1lKCksIHRpbWUuY3RpbWUoKSBhbmQgdGltZS5zdHJmdGltZSgpIGZ1bmN0aW9ucyB3aWxsIG5vdyBmb3JtYXQKKyAgYW55IHllYXIgd2hlbiBgYHRpbWUuYWNjZXB0MmR5ZWFyYGAgaXMgRmFsc2UgYW5kIHdpbGwgYWNjZXB0IHllYXJzID49IDEwMDAKKyAgb3RoZXJ3aXNlLiBgYHRpbWUubWt0aW1lYGAgYW5kIGBgdGltZS5zdHJmdGltZWBgIG5vdyBhY2NlcHQgZnVsbCByYW5nZQorICBzdXBwb3J0ZWQgYnkgdGhlIE9TLiBXaXRoIFZpc3VhbCBTdHVkaW8gb3Igb24gU29sYXJpcywgdGhlIHllYXIgaXMgbGltaXRlZCB0bworICB0aGUgcmFuZ2UgWzE7IDk5OTldLiBDb252ZXJzaW9uIG9mIDItZGlnaXQgeWVhcnMgdG8gNC1kaWdpdCBpcyBkZXByZWNhdGVkLgorCistIElzc3VlICM3ODU4OiBSYWlzZSBhbiBlcnJvciBwcm9wZXJseSB3aGVuIG9zLnV0aW1lKCkgZmFpbHMgdW5kZXIgV2luZG93cworICBvbiBhbiBleGlzdGluZyBmaWxlLgorCistIElzc3VlICMzODM5OiB3c2dpcmVmIHNob3VsZCBub3Qgb3ZlcnJpZGUgYSBDb250ZW50LUxlbmd0aCBoZWFkZXIgc2V0IGJ5CisgIHRoZSBhcHBsaWNhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgQ2xvdmlzIEZhYnJpY2lvLgorCistIElzc3VlICMxMDQ5MjogYmRiLkJkYi5ydW4oKSBvbmx5IHRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBjb2RlLCBub3QgdGhlCisgIGNvbXBpbGF0aW9uIChpZiB0aGUgaW5wdXQgaXMgYSBzdHJpbmcpLgorCistIElzc3VlICM3OTk1OiBXaGVuIGNhbGxpbmcgYWNjZXB0KCkgb24gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQsIHRoZSByZXR1cm5lZAorICBzb2NrZXQgaXMgbm93IGFsd2F5cyBibG9ja2luZywgcmVnYXJkbGVzcyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4KKworLSBJc3N1ZSAjMTA3NTY6IGF0ZXhpdCBub3JtYWxpemVzIHRoZSBleGNlcHRpb24gYmVmb3JlIGRpc3BsYXlpbmcgaXQuIFBhdGNoIGJ5CisgIEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjMTA3OTA6IGVtYWlsLmhlYWRlci5IZWFkZXIuYXBwZW5kJ3MgY2hhcnNldCBsb2dpYyBub3cgd29ya3MgY29ycmVjdGx5CisgIGZvciBjaGFyc2V0cyB3aG9zZSBvdXRwdXQgY29kZWMgaXMgZGlmZmVyZW50IGZyb20gaXRzIGlucHV0IGNvZGVjLgorCistIElzc3VlICMxMDgxOTogU29ja2V0SU8ubmFtZSBwcm9wZXJ0eSByZXR1cm5zIC0xIHdoZW4gaXRzIGNsb3NlZCwgaW5zdGVhZCBvZgorICByYWlzaW5nIGEgVmFsdWVFcnJvciwgdG8gZml4IHJlcHIoKS4KKworLSBJc3N1ZSAjODY1MDogemxpYi5jb21wcmVzcygpIGFuZCB6bGliLmRlY29tcHJlc3MoKSByYWlzZSBhbiBPdmVyZmxvd0Vycm9yIGlmCisgIHRoZSBpbnB1dCBidWZmZXIgbGVuZ3RoIGRvZXNuJ3QgZml0IGludG8gYW4gdW5zaWduZWQgaW50IChsZW5ndGggYmlnZ2VyIHRoYW4KKyAgMl4zMi0xIGJ5dGVzKS4KKworLSBJc3N1ZSAjNjY0MzogUmVpbml0aWFsaXplIGxvY2tzIGhlbGQgd2l0aGluIHRoZSB0aHJlYWRpbmcgbW9kdWxlIGFmdGVyIGZvcmsgdG8KKyAgYXZvaWQgYSBwb3RlbnRpYWwgcmFyZSBkZWFkbG9jayBvciBjcmFzaCBvbiBzb21lIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMTA4MDYsIGlzc3VlICM5OTA1OiBGaXggc3VicHJvY2VzcyBwaXBlcyB3aGVuIHNvbWUgb2YgdGhlIHN0YW5kYXJkIGZpbGUKKyAgZGVzY3JpcHRvcnMgKDAsIDEsIDIpIGFyZSBjbG9zZWQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzCisgIExhZ2Vyd2FsbC4KKworLSBgdW5pdHRlc3QuVGVzdENhc2VgIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2l0aG91dCBhIG1ldGhvZCBuYW1lOyBmb3Igc2ltcGxlcgorICBleHBsb3JhdGlvbiBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjMTA3OTg6IFJlamVjdCBzdXBwb3J0aW5nIGNvbmN1cnJlbnQuZnV0dXJlcyBpZiB0aGUgc3lzdGVtIGhhcyB0b28KKyAgZmV3IFBPU0lYIHNlbWFwaG9yZXMuCisKKy0gSXNzdWUgIzEwODA3OiBSZW1vdmUgYmFzZTY0LCBiejIsIGhleCwgcXVvcHJpLCByb3QxMywgdXUgYW5kIHpsaWIgY29kZWNzIGZyb20KKyAgdGhlIGNvZGVjIGFsaWFzZXMuIFRoZXkgYXJlIHN0aWxsIGFjY2Vzc2libGUgdmlhIGNvZGVjcy5sb29rdXAoKS4KKworLSBJc3N1ZSAjMTA4MDE6IEluIHppcGZpbGUsIHN1cHBvcnQgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIGhlYWRlciBhbmQgdGhlCisgIGZpbGVuYW1lcy4KKworLSBJc3N1ZSAjNjI4NTogSURMRSBubyBsb25nZXIgY3Jhc2hlcyBvbiBtaXNzaW5nIGhlbHAgZmlsZTsgcGF0Y2ggYnkgU2NvdHQKKyAgRGF2aWQgRGFuaWVscy4KKworLSBGaXggY29sbGVjdGlvbnMuT3JkZXJlZERpY3Quc2V0ZGVmYXVsdCgpIHNvIHRoYXQgaXQgd29ya3MgaW4gc3ViY2xhc3NlcyB0aGF0CisgIGRlZmluZSBfX21pc3NpbmdfXygpLgorCistIElzc3VlICMxMDc4NjogdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIgZGVmYXVsdCBzdHJlYW0gbm8gbG9uZ2VyIGJvdW5kIGF0IGltcG9ydAorICB0aW1lLiBgc3lzLnN0ZGVycmAgbm93IGxvb2tlZCB1cCBhdCBpbnN0YW50aWF0aW9uIHRpbWUuICBGaXggY29udHJpYnV0ZWQgYnkKKyAgTWFyayBSb2RkeS4KKworLSBJc3N1ZSAjMTA3NTM6IENoYXJhY3RlcnMgJzsnLCAnPScgYW5kICcsJyBpbiB0aGUgUEFUSF9JTkZPIGVudmlyb25tZW50IHZhcmlhYmxlCisgIHdvbid0IGJlIHF1b3RlZCB3aGVuIHRoZSBVUkkgaXMgY29uc3RydWN0ZWQgYnkgdGhlIHdzZ2lyZWYudXRpbCdzIHJlcXVlc3RfdXJpCisgIG1ldGhvZC4gQWNjb3JkaW5nIHRvIFJGQyAzOTg2LCB0aGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBhIHBhcnQgb2YgcGFyYW1zIGluCisgIFBBVEggY29tcG9uZW50IG9mIFVSSSBhbmQgbmVlZCBub3QgYmUgcXVvdGVkLgorCistIElzc3VlICMxMDczODogRml4IHdlYmJyb3dzZXIuT3BlcmEucmFpc2Vfb3B0cy4KKworLSBJc3N1ZSAjOTgyNDogU2ltcGxlQ29va2llIG5vdyBlbmNvZGVzICwgYW5kIDsgaW4gdmFsdWVzIHRvIGNhdGVyIHRvIGhvdworICBicm93c2VycyBhY3R1YWxseSBwYXJzZSBjb29raWVzLgorCistIElzc3VlICM5MzMzOiBvcy5zeW1saW5rIG5vdyBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiB1c2VyIHByaXZpbGVnZXMuICBUaGUKKyAgZnVuY3Rpb24gbm93IHJhaXNlcyBPU0Vycm9yIG9uIFdpbmRvd3MgPj02LjAgd2hlbiB0aGUgdXNlciBpcyB1bmFibGUgdG8gY3JlYXRlCisgIHN5bWJvbGljIGxpbmtzLiBYUCBhbmQgMjAwMyBzdGlsbCByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLgorCistIElzc3VlICMxMDc4Mzogc3RydWN0LnBhY2soKSBubyBsb25nZXIgaW1wbGljaXRseSBlbmNvZGVzIHVuaWNvZGUgdG8gVVRGLTguCisKKy0gSXNzdWUgIzEwNzMwOiBBZGQgU1ZHIG1pbWUgdHlwZXMgdG8gbWltZXR5cGVzIG1vZHVsZS4KKworLSBJc3N1ZSAjMTA3Njg6IE1ha2UgdGhlIFRraW50ZXIgU2Nyb2xsZWRUZXh0IHdpZGdldCB3b3JrIGFnYWluLgorCistIElzc3VlICMxMDc3NzogRml4ICJkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIiBidWcgaW4KKyAgRWxlbWVudFRyZWUgcmVnaXN0ZXJfbmFtZXNwYWNlKCkuCisKKy0gSXNzdWUgIzEwNjI2OiB0ZXN0X2xvZ2dpbmcgbm93IHByZXNlcnZlcyBsb2dnZXIgZGlzYWJsZWQgc3RhdGVzLgorCistIElzc3VlICMxMDc3NDogdGVzdF9sb2dnaW5nIG5vdyByZW1vdmVzIHRlbXAgZmlsZXMgY3JlYXRlZCBkdXJpbmcgdGVzdHMuCisKKy0gSXNzdWUgIzUyNTgvIzEwNjQyOiBpZiBzaXRlLnB5IGVuY291bnRlcnMgYSAucHRoIGZpbGUgdGhhdCBnZW5lcmF0ZXMgYW4gZXJyb3IsCisgIGl0IG5vdyBwcmludHMgdGhlIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRyYWNlYmFjayB0byBzdGRlcnIgYW5kIHNraXBzCisgIHRoZSByZXN0IG9mIHRoYXQgaW5kaXZpZHVhbCBmaWxlLCBpbnN0ZWFkIG9mIHN0b3BwaW5nIHByb2Nlc3NpbmcgZW50aXJlbHkuCisKKy0gSXNzdWUgIzEwNzYzOiBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgY2xvc2VzIHN0ZG91dCBhbmQgc3RkZXJyIGlmIGJvdGggYXJlCisgIHBpcGVzIChidWcgc3BlY2lmaWMgdG8gV2luZG93cykuCisKKy0gSXNzdWUgIzE2OTM1NDY6IGZpeCBlbWFpbC5tZXNzYWdlIFJGQyAyMjMxIHBhcmFtZXRlciBlbmNvZGluZyB0byBiZSBpbiBiZXR0ZXIKKyAgY29tcGxpYW5jZSAobm8gInMgYXJvdW5kIGVuY29kZWQgdmFsdWVzKS4KKworLSBJbXByb3ZlZCB0aGUgZGlmZiBtZXNzYWdlIGluIHRoZSB1bml0dGVzdCBtb2R1bGUncyBhc3NlcnRDb3VudEVxdWFsKCkuCisKKy0gSXNzdWUgIzExNTUzNjI6IGVtYWlsLnV0aWxzLnBhcnNlZGF0ZV90eiBub3cgaGFuZGxlcyBhIG1pc3Npbmcgc3BhY2UgYmVmb3JlCisgIHRoZSAnLScgb2YgYSB0aW1lem9uZSBmaWVsZCBhcyB3ZWxsIGFzIGJlZm9yZSBhICcrJy4KKworLSBJc3N1ZSAjNDg3MTogVGhlIHppcGZpbGUgbW9kdWxlIG5vdyBnaXZlcyBhIG1vcmUgdXNlZnVsIGVycm9yIG1lc3NhZ2UgaWYKKyAgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSBhIHN0cmluZyB0byBzcGVjaWZ5IHRoZSBhcmNoaXZlIHBhc3N3b3JkLgorCistIElzc3VlICMxMDc1MDogVGhlIGBgcmF3YGAgYXR0cmlidXRlIG9mIGJ1ZmZlcmVkIElPIG9iamVjdHMgaXMgbm93IHJlYWQtb25seS4KKworLSBEZXByZWNhdGVkIGFzc2VydERpY3RDb250YWluc1N1YnNldCgpIGluIHRoZSB1bml0dGVzdCBtb2R1bGUuCisKK0MtQVBJCistLS0tLQorCistIFB5T2JqZWN0X0NhbGxNZXRob2Qgbm93IHBhc3NlcyBhbG9uZyBhbnkgdW5kZXJseWluZyBBdHRyaWJ1dGVFcnJvciBmcm9tCisgIFB5T2JqZWN0X0dldEF0dHIsIGluc3RlYWQgb2YgcmVwbGFjaW5nIGl0IHdpdGggc29tZXRoaW5nIGxlc3MgaW5mb3JtYXRpdmUKKworLSBJc3N1ZSAjMTA5MTM6IERlcHJlY2F0ZSBtaXNsZWFkaW5nIGZ1bmN0aW9ucyBQeUV2YWxfQWNxdWlyZUxvY2soKSBhbmQKKyAgUHlFdmFsX1JlbGVhc2VMb2NrKCkuICBUaGUgdGhyZWFkLXN0YXRlIGF3YXJlIEFQSXMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTAzMzM6IFJlbW92ZSBhbmNpZW50IEdDIEFQSSwgd2hpY2ggaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSBQeXRob24KKyAgMi4yLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTA4NDM6IFVwZGF0ZSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IHZlcnNpb25zIHVzZWQgaW4gT1MgWCAzMi1iaXQKKyAgaW5zdGFsbGVyIGJ1aWxkczogYnppcDIgMS4wLjYsIHJlYWRsaW5lIDYuMS4yLCBTUUxpdGUgMy43LjQgKHdpdGggRlRTMy9GVFM0CisgIGFuZCBSVFJFRSBlbmFibGVkKSwgYW5kIG5jdXJzZXN3IDUuNSAod2lkZS1jaGFyIHN1cHBvcnQgZW5hYmxlZCkuCisKKy0gSXNzdWUgIzEwODIwOiBGaXggT1MgWCBmcmFtZXdvcmsgaW5zdGFsbHMgdG8gc3VwcG9ydCB2ZXJzaW9uLXNwZWNpZmljCisgIHNjcmlwdHMgKCMxMDY3OSkuCisKKy0gSXNzdWUgIzc3MTY6IFVuZGVyIFNvbGFyaXMsIGRvbid0IGFzc3VtZSBleGlzdGVuY2Ugb2YgL3Vzci94cGc0L2Jpbi9ncmVwIGluCisgIHRoZSBjb25maWd1cmUgc2NyaXB0IGJ1dCB1c2UgJEdSRVAgaW5zdGVhZC4gIFBhdGNoIGJ5IEZhYmlhbiBHcm9mZmVuLgorCistIElzc3VlICMxMDQ3NTogRG9uJ3QgaGFyZGNvZGUgY29tcGlsZXJzIGZvciBMRFNIQVJFRC9MRENYWFNIQVJFRCBvbiBOZXRCU0QKKyAgYW5kIERyYWdvbkZseSBCU0QuICBQYXRjaCBieSBOaWNvbGFzIEpvbHkuCisKKy0gSXNzdWUgIzEwNjc5OiBUaGUgImlkbGUiLCAicHlkb2MiIGFuZCAiMnRvMyIgc2NyaXB0cyBhcmUgbm93IGluc3RhbGxlZCB3aXRoCisgIGEgdmVyc2lvbi1zcGVjaWZpYyBzdWZmaXggb24gIm1ha2UgYWx0aW5zdGFsbCIuCisKKy0gSXNzdWUgIzEwNjU1OiBGaXggdGhlIGJ1aWxkIG9uIFBvd2VyUEMgb24gTGludXggd2l0aCBHQ0Mgd2hlbiBidWlsZGluZyB3aXRoCisgIHRpbWVzdGFtcCBwcm9maWxpbmcgKC0td2l0aC10c2MpOiB0aGUgcHJlcHJvY2Vzc29yIHRlc3QgZm9yIHRoZSBQb3dlclBDCisgIHN1cHBvcnQgbm93IGxvb2tzIGZvciAiX19wb3dlcnBjX18iIGFzIHdlbGwgYXMgIl9fcHBjX18iOiB0aGUgbGF0dGVyIHNlZW1zIHRvCisgIG9ubHkgYmUgcHJlc2VudCBvbiBPUyBYOyB0aGUgZm9ybWVyIGlzIHRoZSBjb3JyZWN0IG9uZSBmb3IgTGludXggd2l0aCBHQ0MuCisKKy0gSXNzdWUgIzEwOTk6IEZpeCB0aGUgYnVpbGQgb24gTWFjT1NYIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBweWRlYnVnCisgIHVzaW5nIEdDQyA0LjAuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxMDg0MzogSW5zdGFsbCB0aGUgVG9vbHMgZGlyZWN0b3J5IG9uIE9TIFggaW4gdGhlIGFwcGxpY2F0aW9ucyBFeHRyYXMKKyAgKC9BcHBsaWNhdGlvbnMvUHl0aG9uIDMubi9FeHRyYXMvKSB3aGVyZSB0aGUgRGVtbyBkaXJlY3RvcnkgaGFkIHByZXZpb3VzIGJlZW4KKyAgaW5zdGFsbGVkLgorCistIElzc3VlICM3OTYyOiBUaGUgRGVtbyBkaXJlY3RvcnkgaXMgZ29uZS4gIE1vc3Qgb2YgdGhlIG9sZCBhbmQgdW5tYWludGFpbmVkCisgIGRlbW9zIGhhdmUgYmVlbiByZW1vdmVkLCBvdGhlcnMgaW50ZWdyYXRlZCBpbiBkb2N1bWVudGF0aW9uIG9yIGEgbmV3CisgIFRvb2xzL2RlbW8gc3ViZGlyZWN0b3J5LgorCistIElzc3VlICMxMDUwMjogQWRkaXRpb24gb2YgdGhlIHVuaXR0ZXN0Z3VpIHRvb2wuIE9yaWdpbmFsbHkgYnkgU3RldmUgUHVyY2VsbC4KKyAgVXBkYXRlZCBmb3IgdGVzdCBkaXNjb3ZlcnkgYnkgTWFyayBSb2RkeSBhbmQgUHl0aG9uIDMgY29tcGF0aWJpbGl0eSBieSBCcmlhbgorICBDdXJ0aW4uCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxMTkxMDogRml4IHRlc3RfaGVhcHEgdG8gc2tpcCB0aGUgQyB0ZXN0cyB3aGVuIF9oZWFwcSBpcyBtaXNzaW5nLgorCistIEZpeCB0ZXN0X3N0YXJ0ZmlsZSB0byB3YWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZSBiZWZvcmUgZmluaXNoaW5nLgorCistIElzc3VlICMxMDgyMjogRml4IHRlc3RfcG9zaXg6dGVzdF9nZXRncm91cHMgZmFpbHVyZSB1bmRlciBTb2xhcmlzLiAgUGF0Y2gKKyAgYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gTWFrZSB0aGUgLS1jb3ZlcmFnZSBmbGFnIHdvcmsgZm9yIHRlc3QucmVncnRlc3QuCisKKy0gSXNzdWUgIzE2Nzc2OTQ6IFJlZmFjdG9yIGFuZCBpbXByb3ZlIHRlc3RfdGltZW91dC4gIE9yaWdpbmFsIHBhdGNoIGJ5CisgIEJqw7ZybiBMaW5kcXZpc3QuCisKKy0gSXNzdWUgIzU0ODU6IEFkZCB0ZXN0cyBmb3IgdGhlIFVzZUZvcmVpZ25EVEQgbWV0aG9kIG9mIGV4cGF0IHBhcnNlciBvYmplY3RzLgorICBQYXRjaCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lIGFuZCBTYW5kcm8gVG9zaS4KKworLSBJc3N1ZSAjNjI5MzogSGF2ZSByZWdydGVzdC5weSBlY2hvIGJhY2sgc3lzLmZsYWdzLiAgVGhpcyBpcyBkb25lIGJ5IGRlZmF1bHQgaW4KKyAgd2hvbGUgcnVucyBhbmQgZW5hYmxlZCBzZWxlY3RpdmVseSB1c2luZyBgYC0taGVhZGVyYGAgd2hlbiBydW5uaW5nIGFuIGV4cGxpY2l0CisgIGxpc3Qgb2YgdGVzdHMuICBPcmlnaW5hbCBwYXRjaCBieSBDb2xsaW4gV2ludGVyLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBCZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxOS1EZWMtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzg4NDQ6IFJlZ3VsYXIgYW5kIHJlY3Vyc2l2ZSBsb2NrIGFjcXVpc2l0aW9ucyBjYW4gbm93IGJlIGludGVycnVwdGVkCisgIGJ5IHNpZ25hbHMgb24gcGxhdGZvcm1zIHVzaW5nIHB0aHJlYWRzLiAgUGF0Y2ggYnkgUmVpZCBLbGVja25lci4KKworLSBJc3N1ZSAjNDIzNjogUHlNb2R1bGVfQ3JlYXRlMiBub3cgY2hlY2tzIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRpcmVjdGx5CisgIHJhdGhlciB0aGFuIHRoZSBQeV9Jc0luaXRpYWxpemVkIGZsYWcsIGF2b2lkaW5nIGEgRmF0YWwgUHl0aG9uCisgIGVycm9yIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuIGFuIGltcG9ydCBpcyBkb25lIGluIF9fZGVsX18uCisKKy0gSXNzdWUgIzU1ODc6IGFkZCBhIHJlcHIgdG8gZGljdF9wcm94eSBvYmplY3RzLiAgUGF0Y2ggYnkgRGF2aWQgU3RhbmVrIGFuZAorICBEYW5pZWwgVXJiYW4uCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMzI0MzogIFN1cHBvcnQgaXRlcmFibGUgYm9kaWVzIGluIGh0dHBsaWIuIFBhdGNoIENvbnRyaWJ1dGlvbnMgYnkKKyAgWHVhbmppIExpIGFuZCBDaHJpcyBBdExlZS4KKworLSBJc3N1ZSAjMTA2MTE6IFN5c3RlbUV4aXQgZXhjZXB0aW9uIHdpbGwgbm8gbG9uZ2VyIGtpbGwgYSB1bml0dGVzdCBydW4uCisKKy0gSXNzdWUgIzk4NTc6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBza2lwIGEgdGVzdCBpbiBhIHNldFVwLCB0ZWFyRG93biBvciBjbGVhbgorICB1cCBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTA1NzM6IHVzZSBhY3R1YWwvZXhwZWN0ZWQgY29uc2lzdGVudGx5IGluIHVuaXR0ZXN0IG1ldGhvZHMuCisgIFRoZSBvcmRlciBvZiB0aGUgYXJncyBvZiBhc3NlcnRDb3VudEVxdWFsIGlzIGFsc28gY2hhbmdlZC4KKworLSBJc3N1ZSAjOTI4NjogZW1haWwudXRpbHMucGFyc2VhZGRyIG5vIGxvbmdlciBjb25jYXRlbmF0ZXMgYmxhbmstc2VwYXJhdGVkCisgIHdvcmRzIGluIHRoZSBsb2NhbCBwYXJ0IG9mIGVtYWlsIGFkZHJlc3NlcywgdGhlcmVieSBwcmVzZXJ2aW5nIHRoZSBpbnB1dC4KKworLSBJc3N1ZSAjNjc5MTogTGltaXQgaGVhZGVyIGxpbmUgbGVuZ3RoICh0byA2NTUzNSBieXRlcykgaW4gaHR0cC5jbGllbnQKKyAgYW5kIGh0dHAuc2VydmVyLCB0byBhdm9pZCBkZW5pYWwgb2Ygc2VydmljZXMgZnJvbSB0aGUgb3RoZXIgcGFydHkuCisKKy0gSXNzdWUgIzEwNDA0OiBVc2UgY3RsLWJ1dHRvbi0xIG9uIE9TWCBmb3IgdGhlIGNvbnRleHQgbWVudSBpbiBJZGxlLgorCistIElzc3VlICM5OTA3OiBGaXggdGFiIGhhbmRsaW5nIG9uIE9TWCB3aGVuIHVzaW5nIGVkaXRsaW5lIGJ5IGNhbGxpbmcKKyAgcmxfaW5pdGlhbGl6ZSBmaXJzdCwgdGhlbiBzZXR0aW5nIG91ciBjdXN0b20gZGVmYXVsdHMsIHRoZW4gcmVhZGluZyAuZWRpdHJjLgorCistIElzc3VlICM0MTg4OiBBdm9pZCBjcmVhdGluZyBkdW1teSB0aHJlYWQgb2JqZWN0cyB3aGVuIGxvZ2dpbmcgb3BlcmF0aW9ucworICBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlICh3aXRoIHRoZSBpbnRlcm5hbCB2ZXJib3NlIGZsYWcgYWN0aXZhdGVkKS4KKworLSBJc3N1ZSAjMTA3MTE6IFJlbW92ZSBIVFRQIDAuOSBzdXBwb3J0IGZyb20gaHR0cC5jbGllbnQuICBUaGUgYGBzdHJpY3RgYAorICBwYXJhbWV0ZXIgdG8gSFRUUENvbm5lY3Rpb24gYW5kIGZyaWVuZHMgaXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjOTcyMTogRml4IHRoZSBiZWhhdmlvciBvZiB1cmxqb2luIHdoZW4gdGhlIHJlbGF0aXZlIHVybCBzdGFydHMgd2l0aCBhCisgICc7JyBjaGFyYWN0ZXIuIFBhdGNoIGJ5IFdlcyBDaG93LgorCistIElzc3VlICMxMDcxNDogTGltaXQgbGVuZ3RoIG9mIGluY29taW5nIHJlcXVlc3QgaW4gaHR0cC5zZXJ2ZXIgdG8gNjU1MzYgYnl0ZXMKKyAgZm9yIHNlY3VyaXR5IHJlYXNvbnMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCistIElzc3VlICM5NTU4OiBGaXggZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfZXh0IHdpdGggVlMgOC4wLgorCistIElzc3VlICMxMDY2NzogRmFzdCBwYXRoIGZvciBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCisKKy0gSXNzdWUgIzEwNjk1OiBwYXNzaW5nIHRoZSBwb3J0IGFzIGEgc3RyaW5nIHZhbHVlIHRvIHRlbG5ldGxpYiBubyBsb25nZXIKKyAgY2F1c2VzIGRlYnVnIG1vZGUgdG8gZmFpbC4KKworLSBJc3N1ZSAjMTA3ODkxOTogYWRkX2hlYWRlciBub3cgYXV0b21hdGljYWxseSBSRkMyMjMxIGVuY29kZXMgcGFyYW1ldGVycworICB0aGF0IGNvbnRhaW4gbm9uLWFzY2lpIHZhbHVlcy4KKworLSBJc3N1ZSAjMTAxODggKHBhcnRpYWwgcmVzb2x1dGlvbik6IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSBlbWl0cworICBhIHdhcm5pbmcgb24gc3lzLnN0ZGVyciByYXRoZXIgdGhhbiB0aHJvd2luZyBhIG1pc2xlYWRpbmcgZXhjZXB0aW9uCisgIGlmIGNsZWFudXAgZmFpbHMgZHVlIHRvIG51bGxpbmcgb3V0IG9mIG1vZHVsZXMgZHVyaW5nIHNodXRkb3duLgorICBBbHNvIGF2b2lkcyBhbiBBdHRyaWJ1dGVFcnJvciB3aGVuIG1rZHRlbXAgY2FsbCBmYWlscyBhbmQgaXNzdWVzCisgIGEgUmVzb3VyY2VXYXJuaW5nIG9uIGltcGxpY2l0IGNsZWFudXAgdmlhIF9fZGVsX18uCisKKy0gSXNzdWUgIzEwMTA3OiBXYXJuIGFib3V0IHVuc2F2ZWQgZmlsZXMgaW4gSURMRSBvbiBPU1guCisKKy0gSXNzdWUgIzcyMTM6IHN1YnByb2Nlc3MuUG9wZW4ncyBkZWZhdWx0IGZvciBjbG9zZV9mZHMgaGFzIGJlZW4gY2hhbmdlZC4KKyAgSXQgaXMgbm93IFRydWUgaW4gbW9zdCBjYXNlcyBvdGhlciB0aGFuIG9uIFdpbmRvd3Mgd2hlbiBpbnB1dCwgb3V0cHV0IG9yCisgIGVycm9yIGhhbmRsZXMgYXJlIHByb3ZpZGVkLgorCistIElzc3VlICM2NTU5OiBzdWJwcm9jZXNzLlBvcGVuIGhhcyBhIG5ldyBwYXNzX2ZkcyBwYXJhbWV0ZXIgKGFjdHVhbGx5CisgIGFkZGVkIGluIDMuMmJldGExKSB0byBhbGxvdyBzcGVjaWZ5aW5nIGEgc3BlY2lmaWMgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzCisgIHRvIGtlZXAgb3BlbiBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKworLSBJc3N1ZSAjMTczMTcxNzogRml4ZWQgdGhlIHByb2JsZW0gd2hlcmUgc3VicHJvY2Vzcy53YWl0KCkgY291bGQgY2F1c2UgYW4KKyAgT1NFcnJvciBleGNlcHRpb24gd2hlbiBUaGUgT1MgaGFkIGJlZW4gdG9sZCB0byBpZ25vcmUgU0lHQ0xEIGluIG91ciBwcm9jZXNzCisgIG9yIG90aGVyd2lzZSBub3Qgd2FpdCBmb3IgZXhpdGluZyBjaGlsZCBwcm9jZXNzZXMuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM3NzU5NjQ6IHRlc3RfZ3JwIG5vdyBza2lwcyBZUC9OSVMgZW50cmllcyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlbgorICBlbmNvdW50ZXJpbmcgdGhlbS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzYwNzU6IElETEUgb24gTWFjIE9TIFggbm93IHdvcmtzIHdpdGggYm90aCBDYXJib24gQXF1YVRrIGFuZAorICBDb2NvYSBBcXVhVGsuCisKKy0gSXNzdWUgIzEwNzEwOiBgYE1pc2Mvc2V0dWlkLXByb2cuY2BgIGlzIHJlbW92ZWQgZnJvbSB0aGUgc291cmNlIHRyZWUuCisKKy0gSXNzdWUgIzEwNzA2OiBSZW1vdmUgb3V0ZGF0ZWQgc2NyaXB0IHJ1bnRlc3RzLnNoLiAgRWl0aGVyIGBgbWFrZSB0ZXN0YGAKKyAgb3IgYGBweXRob24gLW0gdGVzdGBgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisKK0J1aWxkCistLS0tLQorCistIFRoZSBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFRjbC9UayA4LjUuOSBhbmQgc3FsaXRlMyAzLjcuNC4KKworLSBJc3N1ZSAjOTIzNDogYXJncGFyc2Ugc3VwcG9ydHMgYWxpYXMgbmFtZXMgZm9yIHN1YnBhcnNlcnMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEJldGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA1LURlYy0yMDEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTA2MzA6IFJldHVybiBkaWN0IHZpZXdzIGZyb20gdGhlIGRpY3QgcHJveHkga2V5cygpL3ZhbHVlcygpL2l0ZW1zKCkKKyAgbWV0aG9kcy4KKworLSBJc3N1ZSAjMTA1OTY6IEZpeCBmbG9hdC5fX21vZF9fIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIGZsb2F0Ll9fZGl2bW9kX18KKyAgd2l0aCByZXNwZWN0IHRvIHNpZ25lZCB6ZXJvcy4gIC00LjAgJSA0LjAgc2hvdWxkIGJlIDAuMCwgbm90IC0wLjAuCisKKy0gSXNzdWUgIzE3NzI4MzM6IEFkZCB0aGUgLXEgY29tbWFuZC1saW5lIG9wdGlvbiB0byBzdXBwcmVzcyBjb3B5cmlnaHQgYW5kCisgIHZlcnNpb24gb3V0cHV0IGluIGludGVyYWN0aXZlIG1vZGUuCisKKy0gUHJvdmlkZSBhbiAqb3B0aW1pemUqIHBhcmFtZXRlciBpbiB0aGUgYnVpbHQtaW4gY29tcGlsZSgpIGZ1bmN0aW9uLgorCistIEZpeGVkIHNldmVyYWwgY29ybmVyIGNhc2UgaXNzdWVzIG9uIFdpbmRvd3MgaW4gb3Muc3RhdC9vcy5sc3RhdCByZWxhdGVkIHRvCisgIHJlcGFyc2UgcG9pbnRzLgorCistIFBFUCAzODQgKERlZmluaW5nIGEgU3RhYmxlIEFCSSkgaXMgaW1wbGVtZW50ZWQuCisKKy0gSXNzdWUgIzI2OTA6IFJhbmdlIG9iamVjdHMgc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nLgorCistIElzc3VlICM5OTE1OiBTcGVlZCB1cCBzb3J0aW5nIHdpdGggYSBrZXkuCisKKy0gSXNzdWUgIzg2ODU6IFNwZWVkIHVwIHNldCBkaWZmZXJlbmNlIGBgYSAtIGJgYCB3aGVuIHNvdXJjZSBzZXQgYGBhYGAgaXMgbXVjaAorICBsYXJnZXIgdGhhbiBvcGVyYW5kIGBgYmBgLiAgUGF0Y2ggYnkgQW5kcmV3IEJlbm5ldHRzLgorCistIElzc3VlICMxMDUxODogQnJpbmcgYmFjayB0aGUgY2FsbGFibGUoKSBidWlsdGluLgorCistIElzc3VlICM3MDk0OiBBZGRlZCBhbHRlcm5hdGUgZm9ybWF0dGluZyAoc3BlY2lmaWVkIGJ5ICcjJykgdG8gYGBfX2Zvcm1hdF9fYGAKKyAgbWV0aG9kIG9mIGZsb2F0LCBjb21wbGV4LCBhbmQgRGVjaW1hbC4gVGhpcyBhbGxvd3MgbW9yZSBwcmVjaXNlIGNvbnRyb2wgb3ZlcgorICB3aGVuIGRlY2ltYWwgcG9pbnRzIGFyZSBkaXNwbGF5ZWQuCisKKy0gSXNzdWUgIzEwNDc0OiByYW5nZS5jb3VudCgpIHNob3VsZCByZXR1cm4gaW50ZWdlcnMuCisKKy0gSXNzdWUgIzE1NzQyMTc6IGlzaW5zdGFuY2Ugbm93IGNhdGNoZXMgb25seSBBdHRyaWJ1dGVFcnJvciwgcmF0aGVyIHRoYW4KKyAgbWFza2luZyBhbGwgZXJyb3JzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gbG9nZ2luZzogYWRkZWQgImhhbmRsZXIgb2YgbGFzdCByZXNvcnQiLiBTZWUgaHR0cDovL2JpdC5seS9sYXN0LXJlc29ydC1oYW5kbGVyCisKKy0gdGVzdC5zdXBwb3J0OiBBZGRlZCBUZXN0SGFuZGxlciBhbmQgTWF0Y2hlciBjbGFzc2VzIGZvciBiZXR0ZXIgc3VwcG9ydCBvZgorICBhc3NlcnRpb25zIGFib3V0IGxvZ2dpbmcuCisKKy0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgcGx1cmFsIGZvcm1zIGluIGFyZ3BhcnNlLgorCistIElzc3VlICMxMDYwMTogc3lzLmRpc3BsYXlob29rIHVzZXMgJ2JhY2tzbGFzaHJlcGxhY2UnIGVycm9yIGhhbmRsZXIgb24KKyAgVW5pY29kZUVuY29kZUVycm9yLgorCistIEFkZCB0aGUgImRpc3BsYXkiIGFuZCAidW5kaXNwbGF5IiBwZGIgY29tbWFuZHMuCisKKy0gSXNzdWUgIzcyNDU6IEFkZCBhIFNJR0lOVCBoYW5kbGVyIGluIHBkYiB0aGF0IGFsbG93cyB0byBicmVhayBhIHByb2dyYW0gYWdhaW4KKyAgYWZ0ZXIgYSAiY29udGludWUiIGNvbW1hbmQuCisKKy0gQWRkIHRoZSAiaW50ZXJhY3QiIHBkYiBjb21tYW5kLgorCistIElzc3VlICM3OTA1OiBBY3R1YWxseSByZXNwZWN0IHRoZSBrZXllbmNvZGluZyBwYXJhbWV0ZXIgdG8gc2hlbHZlLlNoZWxmLgorCistIElzc3VlICMxNTY5MjkxOiBTcGVlZCB1cCBhcnJheS5yZXBlYXQoKS4KKworLSBQcm92aWRlIGFuIGludGVyZmFjZSB0byBzZXQgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBvZiBjb21waWxhdGlvbiBpbgorICBweV9jb21waWxlLCBjb21waWxlYWxsIGFuZCB6aXBmaWxlLlB5WmlwRmlsZS4KKworLSBJc3N1ZSAjNzkwNDogQ2hhbmdlcyB0byB1cmxsaWIucGFyc2UudXJsc3BsaXQgdG8gaGFuZGxlIHNjaGVtZXMgYXMgZGVmaW5lZCBieQorICBSRkMzOTg2LiBBbnl0aGluZyBiZWZvcmUgOi8vIGlzIGNvbnNpZGVyZWQgYSBzY2hlbWUgYW5kIGlzIGZvbGxvd2VkIGJ5IGFuCisgIGF1dGhvcml0eSAob3IgbmV0bG9jKSBhbmQgYnkgJy8nIGxlZCBwYXRoLCB3aGljaCBpcyBvcHRpb25hbC4KKworLSBJc3N1ZSAjNjA0NTogZGJtLmdudSBkYXRhYmFzZXMgbm93IHN1cHBvcnQgZ2V0KCkgYW5kIHNldGRlZmF1bHQoKSBtZXRob2RzLgorCistIElzc3VlICMxMDYyMDogYHB5dGhvbiAtbSB1bml0dGVzdGAgY2FuIGFjY2VwdCBmaWxlIHBhdGhzIGluc3RlYWQgb2YgbW9kdWxlCisgIG5hbWVzIGZvciBydW5uaW5nIHNwZWNpZmljIHRlc3RzLgorCistIElzc3VlICM5NDI0OiBEZXByZWNhdGUgdGhlIGB1bml0dGVzdC5UZXN0Q2FzZWAgbWV0aG9kcyBgYXNzZXJ0RXF1YWxzYCwKKyAgYGFzc2VydE5vdEVxdWFsc2AsIGBhc3NlcnRBbG1vc3RFcXVhbHNgLCBgYXNzZXJ0Tm90QWxtb3N0RXF1YWxzYCBhbmQgYGFzc2VydF9gCisgIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgY29ycmVjdCBtZXRob2RzIGluIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4KKworLSBJc3N1ZSAjMTAyNzI6IFRoZSBzc2wgbW9kdWxlIG5vdyByYWlzZXMgc29ja2V0LnRpbWVvdXQgaW5zdGVhZCBvZiBhIGdlbmVyaWMKKyAgU1NMRXJyb3Igb24gc29ja2V0IHRpbWVvdXRzLgorCistIElzc3VlICMxMDUyODogQWxsb3cgdHJhbnNsYXRvcnMgdG8gcmVvcmRlciBwbGFjZWhvbGRlcnMgaW4gbG9jYWxpemFibGUKKyAgbWVzc2FnZXMgZnJvbSBhcmdwYXJzZS4KKworLSBJc3N1ZSAjMTA0OTc6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGdldHRleHQgaW4gYXJncGFyc2UuCisKKy0gSXNzdWUgIzEwNDc4OiBSZWVudHJhbnQgY2FsbHMgaW5zaWRlIGJ1ZmZlcmVkIElPIG9iamVjdHMgKGZvciBleGFtcGxlIGJ5CisgIHdheSBvZiBhIHNpZ25hbCBoYW5kbGVyKSBub3cgcmFpc2UgYSBSdW50aW1lRXJyb3IgaW5zdGVhZCBvZiBmcmVlemluZyB0aGUKKyAgY3VycmVudCBwcm9jZXNzLgorCistIGxvZ2dpbmc6IEFkZGVkIGdldExvZ1JlY29yZEZhY3Rvcnkvc2V0TG9nUmVjb3JkRmFjdG9yeSB3aXRoIGRvY3MgYW5kIHRlc3RzLgorCistIElzc3VlICMxMDU0OTogRml4IHB5ZG9jIHRyYWNlYmFjayB3aGVuIHRleHQtZG9jdW1lbnRpbmcgY2VydGFpbiBjbGFzc2VzLgorCistIElzc3VlICMyMDAxOiBOZXcgSFRNTCBzZXJ2ZXIgd2l0aCBlbmhhbmNlZCBXZWIgcGFnZSBmZWF0dXJlcy4gIFBhdGNoIGJ5IFJvbgorICBBZGFtLgorCistIElzc3VlICMxMDM2MDogSW4gV2Vha1NldCwgZG8gbm90IHJhaXNlIFR5cGVFcnJvcnMgd2hlbiB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwCisgIG9mIG5vbi13ZWFrcmVmYWJsZSBvYmplY3RzLgorCistIElzc3VlICM5NDAyODY6IHB5ZG9jLkhlbHBlci5oZWxwKCkgaWdub3JlcyBpbnB1dC9vdXRwdXQgaW5pdCBwYXJhbWV0ZXJzLgorCistIElzc3VlICMxNzQ1MDM1OiBBZGQgYSBjb21tYW5kIHNpemUgYW5kIGRhdGEgc2l6ZSBsaW1pdCB0byBzbXRwZC5weSwgdG8gcHJldmVudAorICBEb1MgYXR0YWNrcy4gIFBhdGNoIGJ5IFNhdmlvIFNlbmEuCisKKy0gSXNzdWUgIzQ5MjU6IEFkZCBmaWxlbmFtZSB0byBlcnJvciBtZXNzYWdlIHdoZW4gZXhlY3V0YWJsZSBjYW4ndCBiZSBmb3VuZCBpbgorICBzdWJwcm9jZXNzLgorCistIElzc3VlICMxMDM5MTogRG9uJ3QgZGVyZWZlcmVuY2UgaW52YWxpZCBtZW1vcnkgaW4gZXJyb3IgbWVzc2FnZXMgaW4gdGhlIGFzdAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzEwMDI3OiBzdF9ubGluayB3YXMgbm90IGJlaW5nIHNldCBvbiBXaW5kb3dzIGNhbGxzIHRvIG9zLnN0YXQgb3IKKyAgb3MubHN0YXQuIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgorCistIElzc3VlICM5MzMzOiBFeHBvc2Ugb3Muc3ltbGluayBvbmx5IHdoZW4gdGhlIFNlQ3JlYXRlU3ltYm9saWNMaW5rUHJpdmlsZWdlIGlzCisgIGhlbGQgYnkgdGhlIHVzZXIncyBhY2NvdW50LCBpLmUuLCB3aGVuIHRoZSBmdW5jdGlvbiBjYW4gYWN0dWFsbHkgYmUgdXNlZC4KKworLSBJc3N1ZSAjODg3OTogQWRkIG9zLmxpbmsgc3VwcG9ydCBmb3IgV2luZG93cy4KKworLSBJc3N1ZSAjNzkxMTogYGB1bml0dGVzdC5UZXN0Q2FzZS5sb25nTWVzc2FnZWBgIGRlZmF1bHRzIHRvIFRydWUgZm9yIGltcHJvdmVkCisgIGZhaWx1cmUgbWVzc2FnZXMgYnkgZGVmYXVsdC4gUGF0Y2ggYnkgTWFyayBSb2RkeS4KKworLSBJc3N1ZSAjMTQ4NjcxMzogSFRNTFBhcnNlciBub3cgaGFzIGFuIG9wdGlvbmFsIHRvbGVyYW50IG1vZGUgd2hlcmUgaXQgdHJpZXMgdG8KKyAgZ3Vlc3MgYXQgdGhlIGNvcnJlY3QgcGFyc2luZyBvZiBpbnZhbGlkIGh0bWwuCisKKy0gSXNzdWUgIzEwNTU0OiBBZGQgY29udGV4dCBtYW5hZ2VyIHN1cHBvcnQgdG8gc3VicHJvY2Vzcy5Qb3BlbiBvYmplY3RzLgorCistIElzc3VlICM4OTg5OiBlbWFpbC51dGlscy5tYWtlX21zZ2lkIG5vdyBoYXMgYSBkb21haW4gcGFyYW1ldGVyIHRoYXQgY2FuCisgIG92ZXJyaWRlIHRoZSBkb21haW4gbmFtZSB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgbXNnaWQuCisKKy0gSXNzdWUgIzkyOTk6IEFkZCBleGlzdF9vayBwYXJhbWV0ZXIgdG8gb3MubWFrZWRpcnMgdG8gc3VwcHJlc3MgdGhlICdGaWxlCisgIGV4aXN0cycgZXhjZXB0aW9uIHdoZW4gYSB0YXJnZXQgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIHdpdGggdGhlIHNwZWNpZmllZAorICBtb2RlLiBQYXRjaCBieSBSYXkgQWxsZW4uCisKKy0gSXNzdWUgIzk1NzM6IG9zLmZvcmsoKSBub3cgd29ya3MgY29ycmVjdGx5IHdoZW4gdHJpZ2dlcmVkIGFzIGEgc2lkZSBlZmZlY3Qgb2YKKyAgYSBtb2R1bGUgaW1wb3J0LgorCistIElzc3VlICMxMDQ2NDogbmV0cmMgbm93IGNvcnJlY3RseSBoYW5kbGVzIGxpbmVzIHdpdGggZW1iZWRkZWQgJyMnIGNoYXJhY3RlcnMuCisKKy0gQWRkZWQgaXRlcnRvb2xzLmFjY3VtdWxhdGUoKS4KKworLSBJc3N1ZSAjNDExMzogQWRkZWQgY3VzdG9tIGBgX19yZXByX19gYCBtZXRob2QgdG8gYGBmdW5jdG9vbHMucGFydGlhbGBgLgorICBPcmlnaW5hbCBwYXRjaCBieSBEYW5pZWwgVXJiYW4uCisKKy0gSXNzdWUgIzEwMjczOiBSZW5hbWUgYGFzc2VydFJlZ2V4cE1hdGNoZXNgIGFuZCBgYXNzZXJ0UmFpc2VzUmVnZXhwYCB0bworICBgYXNzZXJ0UmVnZXhgIGFuZCBgYXNzZXJ0UmFpc2VzUmVnZXhgLgorCistIElzc3VlICMxMDUzNTogRW5hYmxlIHNpbGVuY2VkIHdhcm5pbmdzIGluIHVuaXR0ZXN0IGJ5IGRlZmF1bHQuCisKKy0gSXNzdWUgIzk4NzM6IFRoZSBVUkwgcGFyc2luZyBmdW5jdGlvbnMgaW4gdXJsbGliLnBhcnNlIG5vdyBhY2NlcHQgQVNDSUkgYnl0ZQorICBzZXF1ZW5jZXMgYXMgaW5wdXQgaW4gYWRkaXRpb24gdG8gY2hhcmFjdGVyIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEwNTg2OiBUaGUgc3RhdGlzdGljcyBBUEkgZm9yIHRoZSBuZXcgZnVuY3Rvb2xzLmxydV9jYWNoZSBoYXMgYmVlbgorICBjaGFuZ2VkIHRvIGEgc2luZ2xlIGNhY2hlX2luZm8oKSBtZXRob2QgcmV0dXJuaW5nIGEgbmFtZWQgdHVwbGUuCisKKy0gSXNzdWUgIzEwMzIzOiBpdGVydG9vbHMuaXNsaWNlKCkgbm93IGNvbnN1bWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnB1dHMKKyAgYmVmb3JlIHN0b3BwaW5nLiAgRm9ybWVybHksIHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBpdGVyYXRvciB3YXMKKyAgdW5kZWZpbmVkLgorCistIElzc3VlICMxMDU2NTogVGhlIGNvbGxlY3Rpb25zLkl0ZXJhdG9yIEFCQyBub3cgY2hlY2tzIGZvciBib3RoIF9faXRlcl9fIGFuZAorICBfX25leHRfXy4KKworLSBJc3N1ZSAjMTAyNDI6IEZpeGVkIGltcGxlbWVudGF0aW9uIG9mIHVuaXR0ZXN0Lkl0ZW1zRXF1YWwgYW5kIGdhdmUgaXQgYSBuZXcKKyAgbW9yZSBpbmZvcm1hdGl2ZSBuYW1lLCB1bml0dGVzdC5Db3VudEVxdWFsLgorCistIElzc3VlICMxMDU2MTogSW4gcGRiLCBjbGVhciB0aGUgYnJlYWtwb2ludHMgYnkgdGhlIGJyZWFrcG9pbnQgbnVtYmVyLgorCistIElzc3VlICMyOTg2OiBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlciBnZXRzIGEgbmV3IHBhcmFtZXRlciwgYXV0b2p1bmssIHdoaWNoIGNhbgorICBiZSBzZXQgdG8gRmFsc2UgdG8gdHVybiBvZmYgdGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkICdwb3B1bGFyaXR5JworICBoZXVyaXN0aWMuIFBhdGNoIGJ5IFRlcnJ5IFJlZWR5IGFuZCBFbGkgQmVuZGVyc2t5LgorCistIElzc3VlICMxMDUzNDogaW4gZGlmZmxpYiwgZXhwb3NlIGJqdW5rIGFuZCBicG9wdWxhciBzZXRzOyBkZXByZWNhdGUKKyAgdW5kb2N1bWVudGVkIGFuZCBub3cgcmVkdW5kYW50IGlzYmp1bmsgYW5kIGlzYnBvcHVsYXIgbWV0aG9kcy4KKworLSBJc3N1ZSAjOTg0NjogemlwZmlsZSBpcyBub3cgY29ycmVjdGx5IGNsb3NpbmcgdW5kZXJseWluZyBmaWxlIG9iamVjdHMuCisKKy0gSXNzdWUgIzEwNDU5OiBVcGRhdGUgQ0pLIGNoYXJhY3RlciBuYW1lcyB0byBVbmljb2RlIDYuMC4KKworLSBJc3N1ZSAjNDQ5MzogdXJsbGliLnJlcXVlc3QgYWRkcyAnLycgaW4gZnJvbnQgb2YgcGF0aCBjb21wb25lbnRzIHdoaWNoIGRvZXMgbm90CisgIHN0YXJ0IHdpdGggJy8uIENvbW1vbiBiZWhhdmlvciBleGhpYml0ZWQgYnkgYnJvd3NlcnMgYW5kIG90aGVyIGNsaWVudHMuCisKKy0gSXNzdWUgIzYzNzg6IGlkbGUuYmF0IG5vdyBydW5zIHdpdGggdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiB2ZXJzaW9uIHJhdGhlciB0aGFuCisgIHRoZSBzeXN0ZW0gZGVmYXVsdC4gUGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyLgorCistIElzc3VlICMxMDQ3MDogJ3B5dGhvbiAtbSB1bml0dGVzdCcgd2lsbCBub3cgcnVuIHRlc3QgZGlzY292ZXJ5IGJ5IGRlZmF1bHQsCisgIHdoZW4gbm8gZXh0cmEgYXJndW1lbnRzIGhhdmUgYmVlbiBwcm92aWRlZC4KKworLSBJc3N1ZSAjMzcwOTogQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciB3aWxsIGJ1ZmZlciB0aGUgaGVhZGVycyBhbmQgd3JpdGUgdG8KKyAgb3V0cHV0IHN0cmVhbSBvbmx5IHdoZW4gZW5kX2hlYWRlcnMgaXMgaW52b2tlZC4gVGhpcyBpcyBhIHNwZWVkdXAgYW5kIGFuCisgIGludGVybmFsIG9wdGltaXphdGlvbi4gIFBhdGNoIGJ5IEFuZHJldyBTaGFhZi4KKworLSBJc3N1ZSAjMTAyMjA6IEFkZGVkIGluc3BlY3QuZ2V0Z2VuZXJhdG9yc3RhdGUuIEluaXRpYWwgcGF0Y2ggYnkgUm9kb2xwaG8KKyAgRWNraGFyZHQuCisKKy0gSXNzdWUgIzEwNDUzOiBjb21waWxlYWxsIG5vdyB1c2VzIGFyZ3BhcnNlIGluc3RlYWQgb2YgZ2V0b3B0LCBhbmQgdGh1cworICBwcm92aWRlcyBjbGVhbiBvdXRwdXQgd2hlbiBjYWxsZWQgd2l0aCAnLWgnLgorCistIElzc3VlICM4MDc4OiBBZGQgY29uc3RhbnRzIGZvciBoaWdoZXIgYmF1ZCByYXRlcyBpbiB0aGUgdGVybWlvcyBtb2R1bGUuICBQYXRjaAorICBieSBSb2RvbHBobyBFY2toYXJkdC4KKworLSBJc3N1ZSAjMTA0MDc6IEZpeCB0d28gTmFtZUVycm9ycyBpbiBkaXN0dXRpbHMuCisKKy0gSXNzdWUgIzEwMzcxOiBEZXByZWNhdGVkIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgaW4gdGhlIHRyYWNlIG1vZHVsZS4KKworLSBJc3N1ZSAjMTA0Njc6IEZpeCBCeXRlc0lPLnJlYWRpbnRvKCkgYWZ0ZXIgc2Vla2luZyBpbnRvIGEgcG9zaXRpb24gYWZ0ZXIgdGhlCisgIGVuZCBvZiB0aGUgZmlsZS4KKworLSBjb25maWdwYXJzZXI6IDEwMCUgdGVzdCBjb3ZlcmFnZS4KKworLSBJc3N1ZSAjMTA0OTk6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBwbHVnZ2FibGUgaW50ZXJwb2xhdGlvbiBoYW5kbGVycy4gVGhlCisgIGRlZmF1bHQgY2xhc3NpYyBpbnRlcnBvbGF0aW9uIGhhbmRsZXIgaXMgY2FsbGVkIEJhc2ljSW50ZXJwb2xhdGlvbi4gQW5vdGhlcgorICBpbnRlcnBvbGF0aW9uIGhhbmRsZXIgYWRkZWQgKEV4dGVuZGVkSW50ZXJwb2xhdGlvbikgd2hpY2ggc3VwcG9ydHMgdGhlIHN5bnRheAorICB1c2VkIGJ5IHpjLmJ1aWxkb3V0IChlLmcuIGludGVycG9sYXRpb24gYmV0d2VlbiBzZWN0aW9ucykuCisKKy0gY29uZmlncGFyc2VyOiB0aGUgU2FmZUNvbmZpZ1BhcnNlciBjbGFzcyBoYXMgYmVlbiByZW5hbWVkIHRvIENvbmZpZ1BhcnNlci4KKyAgVGhlIGxlZ2FjeSBDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVtb3ZlZCBidXQgaXRzIGludGVycG9sYXRpb24gbWVjaGFuaXNtCisgIGlzIHN0aWxsIGF2YWlsYWJsZSBhcyBMZWdhY3lJbnRlcnBvbGF0aW9uLgorCistIGNvbmZpZ3BhcnNlcjogVXNhZ2Ugb2YgUmF3Q29uZmlnUGFyc2VyIGlzIG5vdyBkaXNjb3VyYWdlZCBmb3IgbmV3IHByb2plY3RzCisgIGluIGZhdm9yIG9mIENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpLgorCistIElzc3VlICMxNjgyOTQyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgYWx0ZXJuYXRpdmUgb3B0aW9uL3ZhbHVlIGRlbGltaXRlcnMuCisKKy0gSXNzdWUgIzU0MTI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBtYXBwaW5nIHByb3RvY29sIGFjY2Vzcy4KKworLSBJc3N1ZSAjOTQxMTogY29uZmlncGFyc2VyIHN1cHBvcnRzIHNwZWNpZnlpbmcgZW5jb2RpbmcgZm9yIHJlYWQgb3BlcmF0aW9ucy4KKworLSBJc3N1ZSAjOTQyMTogY29uZmlncGFyc2VyJ3MgZ2V0aW50KCksIGdldGZsb2F0KCkgYW5kIGdldGJvb2xlYW4oKSBtZXRob2RzCisgIGFjY2VwdCB2YXJzIGFuZCBkZWZhdWx0IGFyZ3VtZW50cyBqdXN0IGxpa2UgZ2V0KCkgZG9lcy4KKworLSBJc3N1ZSAjOTQ1MjogY29uZmlncGFyc2VyIHN1cHBvcnRzIHJlYWRpbmcgZnJvbSBzdHJpbmdzIGFuZCBkaWN0aW9uYXJpZXMKKyAgKHRoYW5rcyB0byB0aGUgbWFwcGluZyBwcm90b2NvbCBBUEksIHRoZSBsYXR0ZXIgY2FuIGJlIHVzZWQgdG8gY29weSBkYXRhCisgIGJldHdlZW4gcGFyc2VycykuCisKKy0gY29uZmlncGFyc2VyOiBhY2NlcHRlZCBJTkkgZmlsZSBzdHJ1Y3R1cmUgaXMgbm93IGN1c3RvbWl6YWJsZSwgaW5jbHVkaW5nCisgIGNvbW1lbnQgcHJlZml4ZXMsIG5hbWUgb2YgdGhlIERFRkFVTFQgc2VjdGlvbiwgZW1wdHkgbGluZXMgaW4gbXVsdGlsaW5lCisgIHZhbHVlcywgYW5kIGluZGVudGF0aW9uLgorCistIElzc3VlICMxMDMyNjogdW5pdHRlc3QuVGVzdENhc2UgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkLgorCistIElzc3VlICM5OTI2OiBXcmFwcGVkIFRlc3RTdWl0ZSBzdWJjbGFzcyBkb2VzIG5vdCBnZXQgX19jYWxsX18gZXhlY3V0ZWQuCisKKy0gSXNzdWUgIzk5MjA6IFNraXAgdGVzdHMgZm9yIGNtYXRoLmF0YW4gYW5kIGNtYXRoLmF0YW5oIGFwcGxpZWQgdG8gY29tcGxleAorICB6ZXJvcyBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBsb2cxcCBmdW5jdGlvbiBmYWlscyB0byByZXNwZWN0IHRoZSBzaWduIG9mIHplcm8uCisgIFRoaXMgZml4ZXMgYSB0ZXN0IGZhaWx1cmUgb24gQUlYLgorCistIElzc3VlICM5NzMyOiBBZGRpdGlvbiBvZiBnZXRhdHRyX3N0YXRpYyB0byB0aGUgaW5zcGVjdCBtb2R1bGUuCisKKy0gSXNzdWUgIzEwNDQ2OiBNb2R1bGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgYnkgcHlkb2Mgbm93IGxpbmtzIHRvIGEKKyAgdmVyc2lvbi1zcGVjaWZpYyBvbmxpbmUgcmVmZXJlbmNlIG1hbnVhbC4KKworLSBNYWtlIHRoZSAnTm8gbW9kdWxlIG5hbWVkJyBleGNlcHRpb24gbWVzc2FnZSBmcm9tIGltcG9ydGxpYiBjb25zaXN0ZW50LgorCistIElzc3VlICMxMDQ0MzogQWRkIHRoZSBTU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIG1ldGhvZC4KKworLSBJc3N1ZSAjMTA0NDA6IFN1cHBvcnQgUlVTQUdFX1RIUkVBRCBhcyBhIGNvbnN0YW50IGluIHRoZSByZXNvdXJjZSBtb2R1bGUuCisgIFBhdGNoIGJ5IFJvYmVydCBDb2xsaW5zLgorCistIElzc3VlICMxMDQyOTogSU1BUC5zdGFydHRscygpIHN0b3JlZCB0aGUgY2FwYWJpbGl0aWVzIGFzIGJ5dGVzIG9iamVjdHMsIHJhdGhlcgorICB0aGFuIHN0cmluZ3MuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMxMDU1NzogQWRkZWQgYSBuZXcgQVBJIGZ1bmN0aW9uLCBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoKSwKKyAgd2hpY2ggdHJhbnNmb3JtcyBub24tQVNDSUkgZGVjaW1hbCBkaWdpdHMgaW4gYSBVbmljb2RlIHN0cmluZyB0byB0aGVpciBBU0NJSQorICBlcXVpdmFsZW50cy4KKworLSBJc3N1ZSAjOTUxODogRXh0ZW5kIHRoZSBQeU1vZHVsZURlZl9IRUFEX0lOSVQgbWFjcm8gdG8gZXhwbGljaXRseQorICB6ZXJvLWluaXRpYWxpemUgYWxsIGZpZWxkcywgZml4aW5nIGNvbXBpbGVyIHdhcm5pbmdzIHNlZW4gd2hlbiBidWlsZGluZworICBleHRlbnNpb24gbW9kdWxlcyB3aXRoIGdjYyB3aXRoICItV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIiAoaW1wbGllZCBieQorICAiLVciKS4KKworLSBJc3N1ZSAjMTAyNTU6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBQeV9Jbml0aWFsaXplRXgoKS4gIFBhdGNoIGJ5IE5laWwKKyAgU2NoZW1lbmF1ZXIuCisKKy0gc3RydWN0c2VxLmggaXMgbm93IGluY2x1ZGVkIGluIFB5dGhvbi5oLgorCistIExvb3NlbiBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMgdG8gYWxsb3cgZGljdCBzdWJjbGFzc2VzLgorCitUZXN0cworLS0tLS0KKworLSByZWdydGVzdC5weSBvbmNlIGFnYWluIGVuc3VyZXMgdGhlIHRlc3QgZGlyZWN0b3J5IGlzIHJlbW92ZWQgZnJvbSBzeXMucGF0aAorICB3aGVuIGl0IGlzIGludm9rZWQgZGlyZWN0bHkgYXMgdGhlIF9fbWFpbl9fIG1vZHVsZS4KKworLSBgcHl0aG9uIC1tIHRlc3RgIGNhbiBiZSB1c2VkIHRvIHJ1biB0aGUgdGVzdCBzdWl0ZSBhcyB3ZWxsIGFzIGBweXRob24gLW0KKyAgdGVzdC5yZWdydGVzdGAuCisKKy0gRG8gbm90IGZhaWwgdGVzdF9zb2NrZXQgd2hlbiB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgbG9jYWwgaG9zdG5hbWUgY2Fubm90IGJlCisgIGxvb2tlZCB1cC4KKworLSBJc3N1ZSAjODg4NjogVXNlIGNvbnRleHQgbWFuYWdlcnMgdGhyb3VnaG91dCB0ZXN0X3ppcGZpbGUuIFBhdGNoIGJ5IEVyaWMKKyAgQ2Fyc3RlbnNlbi4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwMzI1OiBGaXggdHdvIGlzc3VlcyBpbiB0aGUgZmFsbGJhY2sgZGVmaW5pdGlvbnMgZm9yIFBZX1VMTE9OR19NQVggYW5kCisgIFBZX0xMT05HX01BWCB0aGF0IG1hZGUgdGhlbSB1bnN1aXRhYmxlIGZvciB1c2UgaW4gcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxMDI5OTogTGlzdCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGluIGEgdGFibGUgaW4gZnVuY3Rpb25zLnJzdC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgND8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxMy1Ob3YtMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwMzcyOiBJbXBvcnQgdGhlIHdhcm5pbmdzIG1vZHVsZSBvbmx5IGFmdGVyIHRoZSBJTyBsaWJyYXJ5IGlzCisgIGluaXRpYWxpemVkLCBzbyBhcyB0byBhdm9pZCBib290c3RyYXAgaXNzdWVzIHdpdGggdGhlICctVycgb3B0aW9uLgorCistIElzc3VlICMxMDI5MzogUmVtb3ZlIG9ic29sZXRlIGZpZWxkIGluIHRoZSBQeU1lbW9yeVZpZXcgc3RydWN0dXJlLCB1bnVzZWQKKyAgdW5kb2N1bWVudGVkIHZhbHVlIFB5QlVGX1NIQURPVywgYW5kIHN0cmFuZ2VseS1sb29raW5nIGNvZGUgaW4KKyAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMuCisKKy0gSXNzdWUgIzYwODE6IEFkZCBzdHIuZm9ybWF0X21hcCgpLCBzaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAuCisKKy0gSWYgRmlsZUlPLl9faW5pdF9fIGZhaWxzLCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9yLgorCistIElzc3VlICMxMDIyMTogZGljdC5wb3Aoaykgbm93IGhhcyBhIGtleSBlcnJvciBtZXNzYWdlIHRoYXQgaW5jbHVkZXMgdGhlCisgIG1pc3Npbmcga2V5IChzYW1lIG1lc3NhZ2UgZFtrXSByZXR1cm5zIGZvciBtaXNzaW5nIGtleXMpLgorCistIElzc3VlICM1NDM3OiBBIHByZWFsbG9jYXRlZCBNZW1vcnlFcnJvciBpbnN0YW5jZSBzaG91bGQgbm90IGtlZXAgdHJhY2ViYWNrCisgIGRhdGEgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMgY2F1Z2h0IGluIHRoZSBzdGFjayB0cmFjZSkgYWxpdmUgaW5maW5pdGVseS4KKworLSBJc3N1ZSAjMTAxODY6IEZpeCB0aGUgU3ludGF4RXJyb3IgY2FyZXQgd2hlbiB0aGUgb2Zmc2V0IGlzIGVxdWFsIHRvIHRoZSBsZW5ndGgKKyAgb2YgdGhlIG9mZmVuZGluZyBsaW5lLgorCistIElzc3VlICMxMDA4OTogQWRkIHN1cHBvcnQgZm9yIGFyYml0cmFyeSAtWCBvcHRpb25zIG9uIHRoZSBjb21tYW5kIGxpbmUuICBUaGV5CisgIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCBhIG5ldyBhdHRyaWJ1dGUgYGBzeXMuX3hvcHRpb25zYGAuCisKKy0gSXNzdWUgIzQzODg6IE9uIE1hYyBPUyBYLCBkZWNvZGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmcm9tIFVURi04LCBpbnN0ZWFkIG9mCisgIHRoZSBsb2NhbGUgZW5jb2RpbmcuICBJZiB0aGUgTEFORyAoYW5kIExDX0FMTCBhbmQgTENfQ1RZUEUpIGVudmlyb25tZW50CisgIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgSVNPLTg4NTktMSwgd2hlcmVhcyBtb3N0IHByb2dyYW1zCisgIChpbmNsdWRpbmcgUHl0aG9uKSBleHBlY3QgVVRGLTguICBQeXRob24gYWxyZWFkeSB1c2VzIFVURi04IGZvciB0aGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBhbmQgdG8gZW5jb2RlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb24gdGhpcyBPUy4KKworLSBJc3N1ZSAjOTcxMywgIzEwMTE0OiBQYXJzZXIgZnVuY3Rpb25zIChlLmcuIFB5UGFyc2VyX0FTVEZyb21GaWxlKSBleHBlY3QKKyAgZmlsZW5hbWVzIGVuY29kZWQgdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCisgIGhhbmRsZXIgKHRvIHN1cHBvcnQgdW5kZWNvZGFibGUgYnl0ZXMpLCBpbnN0ZWFkIG9mIFVURi04IGluIHN0cmljdCBtb2RlLgorCistIElzc3VlICM5OTk3OiBEb24ndCBsZXQgdGhlIG5hbWUgInRvcCIgaGF2ZSBzcGVjaWFsIHNpZ25pZmljYW5jZSBpbiBzY29wZQorICByZXNvbHV0aW9uLgorCistIElzc3VlICM5ODYyOiBDb21wZW5zYXRlIGZvciBicm9rZW4gUElQRV9CVUYgaW4gQUlYIGJ5IGhhcmQgY29kaW5nIGl0cyB2YWx1ZSBhcworICB0aGUgZGVmYXVsdCA1MTIgd2hlbiBjb21waWxpbmcgb24gQUlYLgorCistIFVzZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOCB0byBlbmNvZGUgYW5kIGRlY29kZSBmaWxlbmFtZXMgaWYKKyAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBpcyBub3Qgc2V0LgorCistIElzc3VlICMxMDA5NTogZnBfc2V0cmVhZGwoKSBkb2Vzbid0IHJlb3BlbiB0aGUgZmlsZSwgaW5zdGVhZCByZXVzZSB0aGUgZmlsZQorICBkZXNjcmlwdG9yLgorCistIElzc3VlICM5NDE4OiBNb3ZlZCBwcml2YXRlIHN0cmluZyBtZXRob2RzIGBgX2Zvcm1hdHRlcl9wYXJzZXJgYCBhbmQKKyAgYGBfZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXRgYCBpbnRvIGEgbmV3IGBgX3N0cmluZ2BgIG1vZHVsZS4KKworLSBJc3N1ZSAjOTk5MjogUmVtb3ZlIFBZVEhPTkZTRU5DT0RJTkcgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTI5NDM6IHB5dGhvbiAtbSB0b2tlbml6ZSBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkIHRvIHRva2VuaXplLgorCistIElzc3VlICMxMDQ2NTogZml4IGJyb2tlbiBkZWxlZ2F0aW5nIG9mIGF0dHJpYnV0ZXMgYnkgZ3ppcC5fUGFkZGVkRmlsZS4KKworLSBJc3N1ZSAjMTAzNTY6IERlY2ltYWwuX19oYXNoX18oLTEpIHNob3VsZCByZXR1cm4gLTIuCisKKy0gSXNzdWUgIzE1NTMzNzU6IGxvZ2dpbmc6IEFkZGVkIHN0YWNrX2luZm8ga3dhcmcgdG8gZGlzcGxheSBzdGFjayBpbmZvcm1hdGlvbi4KKworLSBJc3N1ZSAjNTExMTogSVB2NiBIb3N0IGluIHRoZSBIZWFkZXIgaXMgd3JhcHBlZCBpbnNpZGUgWyBdLiBQYXRjaCBieSBDaGFuZHJ1LgorCistIEZpeCBGcmFjdGlvbi5fX2hhc2hfXyBzbyB0aGF0IEZyYWN0aW9uLl9faGFzaF9fKC0xKSBpcyAtMi4gIChTZWUgYWxzbyBpc3N1ZQorICAjMTAzNTYuKQorCistIElzc3VlICM0NDcxOiBBZGQgdGhlIElNQVAuc3RhcnR0bHMoKSBtZXRob2QgdG8gZW5hYmxlIGVuY3J5cHRpb24gb24gc3RhbmRhcmQKKyAgSU1BUDQgY29ubmVjdGlvbnMuICBPcmlnaW5hbCBwYXRjaCBieSBMb3JlbnpvIE0uIENhdHVjY2kuCisKKy0gSXNzdWUgIzE0NjYwNjU6IEFkZCAndmFsaWRhdGUnIG9wdGlvbiB0byBiYXNlNjQuYjY0ZGVjb2RlIHRvIHJhaXNlIGFuIGVycm9yIGlmCisgIHRoZXJlIGFyZSBub24tYmFzZTY0IGFscGhhYmV0IGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0LgorCistIElzc3VlICMxMDM4NjogQWRkIF9fYWxsX18gdG8gdG9rZW4gbW9kdWxlOyB0aGlzIHNpbXBsaWZpZXMgaW1wb3J0aW5nIGluCisgIHRva2VuaXplIG1vZHVsZSBhbmQgcHJldmVudHMgbGVha2luZyBvZiBwcml2YXRlIG5hbWVzIHRocm91Z2ggYGBpbXBvcnQgKmBgLgorCistIElzc3VlICM0NDcxOiBQcm9wZXJseSBzaHV0ZG93biBzb2NrZXQgaW4gSU1BUC5zaHV0ZG93bigpLiAgUGF0Y2ggYnkgTG9yZW56bworICBNLiBDYXR1Y2NpLgorCistIEZpeCBJTUFQLmxvZ2luKCkgdG8gd29yayBwcm9wZXJseS4KKworLSBJc3N1ZSAjOTI0NDogbXVsdGlwcm9jZXNzaW5nIHBvb2wgd29ya2VyIHByb2Nlc3NlcyBjb3VsZCB0ZXJtaW5hdGUKKyAgdW5leHBlY3RlZGx5IGlmIHRoZSByZXR1cm4gdmFsdWUgb2YgYSB0YXNrIGNvdWxkIG5vdCBiZSBwaWNrbGVkLiAgT25seSB0aGUKKyAgYGByZXByYGAgb2Ygc3VjaCBlcnJvcnMgYXJlIG5vdyBzZW50IGJhY2ssIHdyYXBwZWQgaW4gYW4KKyAgYGBNYXliZUVuY29kaW5nRXJyb3JgYCBleGNlcHRpb24uCisKKy0gSXNzdWUgIzkyNDQ6IFRoZSBgYGFwcGx5X2FzeW5jKClgYCBhbmQgYGBtYXBfYXN5bmMoKWBgIG1ldGhvZHMgb2YKKyAgYGBtdWx0aXByb2Nlc3NpbmcuUG9vbGBgIG5vdyBhY2NlcHRzIGEgYGBlcnJvcl9jYWxsYmFja2BgIGFyZ3VtZW50LiAgVGhpcyBjYW4KKyAgYmUgYSBjYWxsYmFjayB3aXRoIHRoZSBzaWduYXR1cmUgYGBjYWxsYmFjayhleGMpYGAsIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGlmCisgIHRoZSB0YXJnZXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMTAwMjI6IFRoZSBkaWN0aW9uYXJ5IHJldHVybmVkIGJ5IHRoZSBgYGdldHBlZXJjZXJ0KClgYCBtZXRob2Qgb2YgU1NMCisgIHNvY2tldHMgbm93IGhhcyBhZGRpdGlvbmFsIGl0ZW1zIHN1Y2ggYXMgYGBpc3N1ZXJgYCBhbmQgYGBub3RCZWZvcmVgYC4KKworLSBgYHVzZW5ldHJjYGAgaXMgbm93IGZhbHNlIGJ5IGRlZmF1bHQgZm9yIE5OVFAgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTkyNjogQWRkIHN1cHBvcnQgZm9yIE5OVFAgb3ZlciBTU0wgb24gcG9ydCA1NjMsIGFzIHdlbGwgYXMgU1RBUlRUTFMuCisgIFBhdGNoIGJ5IEFuZHJldyBWYW50LgorCistIElzc3VlICMxMDMzNTogQWRkIHRva2VuaXplLm9wZW4oKSwgZGV0ZWN0IHRoZSBmaWxlIGVuY29kaW5nIHVzaW5nCisgIHRva2VuaXplLmRldGVjdF9lbmNvZGluZygpIGFuZCBvcGVuIGl0IGluIHJlYWQgb25seSBtb2RlLgorCistIElzc3VlICMxMDMyMTogQWRkIHN1cHBvcnQgZm9yIGJpbmFyeSBkYXRhIHRvIHNtdHBsaWIuU01UUC5zZW5kbWFpbCwgYW5kIGEgbmV3CisgIG1ldGhvZCBzZW5kX21lc3NhZ2UgdG8gc2VuZCBhbiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2Ugb2JqZWN0LgorCistIElzc3VlICM2MDExOiBzeXNjb25maWcgYW5kIGRpc3R1dGlscy5zeXNjb25maWcgdXNlIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IKKyAgaGFuZGxlciB0byBwYXJzZSB0aGUgTWFrZWZpbGUgZmlsZS4gIEF2b2lkIGEgVW5pY29kZURlY29kZUVycm9yIGlmIHRoZSBzb3VyY2UKKyAgY29kZSBkaXJlY3RvcnkgbmFtZSBjb250YWlucyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIHRoZSBsb2NhbGUgZW5jb2RpbmcgaXMKKyAgQVNDSUkuCisKKy0gSXNzdWUgIzEwMzI5OiBUaGUgdHJhY2UgbW9kdWxlIHdyaXRlcyByZXBvcnRzIHVzaW5nIHRoZSBpbnB1dCBQeXRob24gc2NyaXB0CisgIGVuY29kaW5nLCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuICBQYXRjaCB3cml0dGVuIGJ5IEFsZXhhbmRlcgorICBCZWxvcG9sc2t5LgorCistIElzc3VlICMxMDEyNjogRml4IGRpc3R1dGlscycgdGVzdF9idWlsZCB3aGVuIFB5dGhvbiB3YXMgYnVpbHQgd2l0aAorICAtLWVuYWJsZS1zaGFyZWQuCisKKy0gSXNzdWUgIzkyODE6IFByZXZlbnQgcmFjZSBjb25kaXRpb24gd2l0aCBta2RpciBpbiBkaXN0dXRpbHMuICBQYXRjaCBieQorICBBcmZyZXZlci4KKworLSBJc3N1ZSAjMTAyMjk6IEZpeCBjYWNoaW5nIGVycm9yIGluIGdldHRleHQuCisKKy0gSXNzdWUgIzEwMjUyOiBDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIGRpc3R1dGlscyBjb2RlIGFuZAorICB0ZXN0cy4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbCwgY29tcGxldGVkIGJ5IMOJcmljIEFyYXVqby4KKworLSBJc3N1ZSAjMTAxODA6IFBpY2tsaW5nIGZpbGUgb2JqZWN0cyBpcyBub3cgZXhwbGljaXRseSBmb3JiaWRkZW4sIHNpbmNlCisgIHVucGlja2xpbmcgdGhlbSBwcm9kdWNlZCBub25zZW5zaWNhbCByZXN1bHRzLgorCistIElzc3VlICMxMDMxMTogVGhlIHNpZ25hbCBtb2R1bGUgbm93IHJlc3RvcmVzIGVycm5vIGJlZm9yZSByZXR1cm5pbmcgZnJvbSBpdHMKKyAgbG93LWxldmVsIHNpZ25hbCBoYW5kbGVyLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KKworLSBJc3N1ZSAjMTAyODI6IEFkZCBhIGBgbm50cF9pbXBsZW1lbnRhdGlvbmBgIGF0dHJpYnV0ZSB0byBOTlRQIG9iamVjdHMuCisKKy0gSXNzdWUgIzEwMjgzOiBBZGQgYSBgYGdyb3VwX3BhdHRlcm5gYCBhcmd1bWVudCB0byBOTlRQLmxpc3QoKS4KKworLSBJc3N1ZSAjMTAxNTU6IEFkZCBJSVNDR0lIYW5kbGVyIHRvIHdzZ2lyZWYuaGFuZGxlcnMgdG8gc3VwcG9ydCBJSVMgQ0dJCisgIGVudmlyb25tZW50IGJldHRlciwgYW5kIHRvIGNvcnJlY3QgdW5pY29kZSBlbnZpcm9ubWVudCB2YWx1ZXMgZm9yIFdTR0kgMS4wLjEuCisKKy0gSXNzdWUgIzEwMjgxOiBubnRwbGliIG5vdyByZXR1cm5zIE5vbmUgZm9yIGFic2VudCBmaWVsZHMgaW4gdGhlIE9WRVIvWE9WRVIKKyAgcmVzcG9uc2UsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCisKKy0gd3NnaXJlZiBub3cgaW1wbGVtZW50cyBhbmQgdmFsaWRhdGVzIFBFUCAzMzMzLCByYXRoZXIgdGhhbiBhbiBleHBlcmltZW50YWwKKyAgZXh0ZW5zaW9uIG9mIFBFUCAzMzMuICAoTm90ZTogZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gMy54IG1heSBoYXZlCisgIGluY29ycmVjdGx5IHZhbGlkYXRlZCBzb21lIG5vbi1jb21wbGlhbnQgYXBwbGljYXRpb25zIGFzIFdTR0kgY29tcGxpYW50OyBpZgorICB5b3VyIGFwcCB2YWxpZGF0ZXMgd2l0aCBQeXRob24gPDMuMmIxKywgYnV0IG5vdCBvbiB0aGlzIHZlcnNpb24sIGl0IGlzIGxpa2VseQorICB0aGUgY2FzZSB0aGF0IHlvdXIgYXBwIHdhcyBub3QgY29tcGxpYW50LikKKworLSBJc3N1ZSAjMTAyODA6IE5OVFAubm50cF92ZXJzaW9uIHNob3VsZCByZWZsZWN0IHRoZSBoaWdoZXN0IHZlcnNpb24gYWR2ZXJ0aXNlZAorICBieSB0aGUgc2VydmVyLgorCistIElzc3VlICMxMDE4NDogVG91Y2ggZGlyZWN0b3JpZXMgb25seSBvbmNlIHdoZW4gZXh0cmFjdGluZyBhIHRhcmZpbGUuCisKKy0gSXNzdWUgIzEwMTk5OiBOZXcgcGFja2FnZSwgYGB0dXJ0bGVkZW1vYGAgbm93IGNvbnRhaW5zIHNlbGVjdGVkIGRlbW8gc2NyaXB0cworICB0aGF0IHdlcmUgZm9ybWVybHkgZm91bmQgdW5kZXIgRGVtby90dXJ0bGUuCisKKy0gSXNzdWUgIzEwMjY1OiBDbG9zZSBmaWxlIG9iamVjdHMgZXhwbGljaXRseSBpbiBzdW5hdS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBJc3N1ZSAjMTAyNjY6IHV1LmRlY29kZSBkaWRuJ3QgY2xvc2UgaW5fZmlsZSBleHBsaWNpdGx5IHdoZW4gaXQgd2FzIGdpdmVuIGFzIGEKKyAgZmlsZW5hbWUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzEwMTEwOiBRdWV1ZSBvYmplY3RzIGRpZG4ndCByZWNvZ25pemUgZnVsbCBxdWV1ZXMgd2hlbiB0aGUgbWF4c2l6ZQorICBwYXJhbWV0ZXIgaGFkIGJlZW4gcmVkdWNlZC4KKworLSBJc3N1ZSAjMTAxNjA6IFNwZWVkIHVwIG9wZXJhdG9yLmF0dHJnZXR0ZXIuICBQYXRjaCBieSBDaHJpc3RvcyBHZW9yZ2lvdS4KKworLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gYmFzaWNDb25maWcoKSB0byBhbGxvdyAlLCB7fSBvciAkLWZvcm1hdHRpbmcuCisKKy0gSXNzdWUgIzU3Mjk6IGpzb24uZHVtcHMoKSBub3cgc3VwcG9ydHMgdXNpbmcgYSBzdHJpbmcgc3VjaCBhcyAnXHQnIGZvcgorICBwcmV0dHktcHJpbnRpbmcgbXVsdGlsZXZlbCBvYmplY3RzLgorCistIElzc3VlICMxMDI1MzogRmlsZUlPIGxlYWtzIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvcgorICBhcHBlbmQgdGhhdCBpc24ndCBzZWVrYWJsZS4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KKworLSBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBmb3IgZmlsZS1saWtlIG9iamVjdHMgcmV0dXJuZWQgYnkgbWFpbGJveAorICBgYGdldF9maWxlKClgYCBtZXRob2RzLgorCistIElzc3VlICMxMDI0NjogdXUuZW5jb2RlIGRpZG4ndCBjbG9zZSBmaWxlIG9iamVjdHMgZXhwbGljaXRseSB3aGVuIGZpbGVuYW1lcworICB3ZXJlIGdpdmVuIHRvIGl0LiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCistIElzc3VlICMxMDE5ODogZml4IGR1cGxpY2F0ZSBoZWFkZXIgd3JpdHRlbiB0byB3YXZlIGZpbGVzIHdoZW4gd3JpdGVmcmFtZXMoKSBpcworICBjYWxsZWQgd2l0aG91dCBkYXRhLgorCistIENsb3NlIGZpbGUgb2JqZWN0cyBpbiBtb2R1bGVmaW5kZXIgaW4gYSB0aW1lbHkgbWFubmVyLgorCistIENsb3NlIGEgaW8uVGV4dElPV3JhcHBlciBvYmplY3QgaW4gZW1haWwucGFyc2VyIGluIGEgdGltZWx5IG1hbm5lci4KKworLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIGRpc3R1dGlscy5zeXNjb25maWcgaW4gYSB0aW1lbHkgbWFubmVyLgorCistIENsb3NlIGEgZmlsZSBvYmplY3QgaW4gcGtndXRpbCBpbiBhIHRpbWVseSBtYW5uZXIuCisKKy0gSXNzdWUgIzEwMjMzOiBDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIHRoZSB0YXJmaWxlIG1vZHVsZSBhbmQKKyAgaXRzIHRlc3Qgc3VpdGUuCisKKy0gSXNzdWUgIzEwMDkzOiBSZXNvdXJjZVdhcm5pbmdzIGFyZSBub3cgaXNzdWVkIHdoZW4gZmlsZXMgYW5kIHNvY2tldHMgYXJlCisgIGRlYWxsb2NhdGVkIHdpdGhvdXQgZXhwbGljaXQgY2xvc2luZy4gIFRoZXNlIHdhcm5pbmdzIGFyZSBzaWxlbmNlZCBieSBkZWZhdWx0LAorICBleGNlcHQgaW4gcHlkZWJ1ZyBtb2RlLgorCistIHRhcmZpbGUucHk6IEFkZCBzdXBwb3J0IGZvciBhbGwgbWlzc2luZyB2YXJpYW50cyBvZiB0aGUgR05VIHNwYXJzZSBleHRlbnNpb25zCisgIGFuZCBjcmVhdGUgZmlsZXMgd2l0aCBob2xlcyB3aGVuIGV4dHJhY3Rpbmcgc3BhcnNlIG1lbWJlcnMuCisKKy0gSXNzdWUgIzEwMjE4OiBSZXR1cm4gdGltZW91dCBzdGF0dXMgZnJvbSBgYENvbmRpdGlvbi53YWl0YGAgaW4gdGhyZWFkaW5nLgorCistIElzc3VlICM3MzUxOiBBZGQgYGB6aXBmaWxlLkJhZFppcEZpbGVgYCBzcGVsbGluZyBvZiB0aGUgZXhjZXB0aW9uIG5hbWUgYW5kCisgIGRlcHJlY2F0ZSB0aGUgb2xkIG5hbWUgYGB6aXBmaWxlLkJhZFppcGZpbGVgYC4KKworLSBJc3N1ZSAjNTAyNzogVGhlIHN0YW5kYXJkIGBgeG1sYGAgbmFtZXNwYWNlIGlzIG5vdyB1bmRlcnN0b29kIGJ5CisgIHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yIGFzIGJlaW5nIGJvdW5kIHRvCisgIGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS4gIFBhdGNoIGJ5IFRyb3kgSi4gRmFycmVsbC4KKworLSBJc3N1ZSAjNTk3NTogQWRkIGNzdi51bml4X2RpYWxlY3QgY2xhc3MuCisKKy0gSXNzdWUgIzc3NjE6IHRlbG5ldGxpYi5pbnRlcmFjdCBmYWlsdXJlcyBvbiBXaW5kb3dzIGZpeGVkLgorCistIGxvZ2dpbmc6IEFkZGVkIHN0eWxlIG9wdGlvbiB0byBGb3JtYXR0ZXIgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgorCistIElzc3VlICM1MTc4OiBBZGRlZCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkgY2xhc3MgdGhhdCBjYW4gYmUgdXNlZCBhcyBhCisgIGNvbnRleHQgbWFuYWdlci4KKworLSBJc3N1ZSAjMTM0OTEwNjogR2VuZXJhdG9yIChhbmQgQnl0ZXNHZW5lcmF0b3IpIGZsYXR0ZW4gbWV0aG9kIGFuZCBIZWFkZXIKKyAgZW5jb2RlIG1ldGhvZCBub3cgc3VwcG9ydCBhICdsaW5lc2VwJyBhcmd1bWVudC4KKworLSBJc3N1ZSAjNTYzOTogQWRkIGEgKnNlcnZlcl9ob3N0bmFtZSogYXJndW1lbnQgdG8gYGBTU0xDb250ZXh0LndyYXBfc29ja2V0YGAgaW4KKyAgb3JkZXIgdG8gc3VwcG9ydCB0aGUgVExTIFNOSSBleHRlbnNpb24uICBgYEhUVFBTQ29ubmVjdGlvbmBgIGFuZCBgYHVybG9wZW4oKWBgCisgIGFsc28gdXNlIHRoaXMgYXJndW1lbnQsIHNvIHRoYXQgSFRUUFMgdmlydHVhbCBob3N0cyBhcmUgbm93IHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMTAxNjY6IEF2b2lkIHJlY3Vyc2lvbiBpbiBwc3RhdHMgU3RhdHMuYWRkKCkgZm9yIG1hbnkgc3RhdHMgaXRlbXMuCisKKy0gSXNzdWUgIzEwMTYzOiBTa2lwIHVucmVhZGFibGUgcmVnaXN0cnkga2V5cyBkdXJpbmcgbWltZXR5cGVzIGluaXRpYWxpemF0aW9uLgorCistIGxvZ2dpbmc6IE1hZGUgU3RyZWFtSGFuZGxlciB0ZXJtaW5hdG9yIGNvbmZpZ3VyYWJsZS4KKworLSBsb2dnaW5nOiBBbGxvd2VkIGZpbHRlcnMgdG8gYmUganVzdCBjYWxsYWJsZXMuCisKKy0gbG9nZ2luZzogQWRkZWQgdGVzdHMgZm9yIF9sb2dSZWNvcmRDbGFzcyBjaGFuZ2VzLgorCistIElzc3VlICMxMDA5MjogUHJvcGVybHkgcmVzZXQgbG9jYWxlIGluIGNhbGVuZGFyLkxvY2FsZSpDYWxlbmRhciBjbGFzc2VzLgorCistIGxvZ2dpbmc6IEFkZGVkIF9sb2dSZWNvcmRDbGFzcywgZ2V0TG9nUmVjb3JkQ2xhc3MsIHNldExvZ1JlY29yZENsYXNzIHRvCisgIGluY3JlYXNlIGZsZXhpYmlsaXR5IG9mIExvZ1JlY29yZCBjcmVhdGlvbi4KKworLSBJc3N1ZSAjNTExNzogQ2FzZSBub3JtYWxpemF0aW9uIHdhcyBuZWVkZWQgb24gbnRwYXRoLnJlbHBhdGgoKS4gIEFsc28gZml4ZWQKKyAgcm9vdCBkaXJlY3RvcnkgaXNzdWUgb24gcG9zaXhwYXRoLnJlbHBhdGgoKS4gIChQb3J0ZWQgd29ya2luZyBmaXhlcyBmcm9tCisgIG50cGF0aC4pCisKKy0gSXNzdWUgIzEzNDM6IHhtbC5zYXguc2F4dXRpbHMuWE1MR2VuZXJhdG9yIG5vdyBoYXMgYW4gb3B0aW9uCisgIHNob3J0X2VtcHR5X2VsZW1lbnRzIHRvIGRpcmVjdCBpdCB0byB1c2Ugc2VsZi1jbG9zaW5nIHRhZ3Mgd2hlbiBhcHByb3ByaWF0ZS4KKworLSBJc3N1ZSAjOTgwNyAocGFydCAxKTogRXhwb3NlIHRoZSBBQkkgZmxhZ3MgaW4gc3lzLmFiaWZsYWdzLiAgQWRkIC0tYWJpZmxhZ3MKKyAgc3dpdGNoIHRvIHB5dGhvbi1jb25maWcgZm9yIGNvbW1hbmQgbGluZSBhY2Nlc3MuCisKKy0gSXNzdWUgIzYwOTg6IERvbid0IGNsYWltIERPTSBsZXZlbCAzIGNvbmZvcm1hbmNlIGluIG1pbmlkb20uCisKKy0gSXNzdWUgIzU3NjI6IEZpeCBBdHRyaWJ1dGVFcnJvciByYWlzZWQgYnkgYGB4bWwuZG9tLm1pbmlkb21gYCB3aGVuIGFuIGVtcHR5CisgIFhNTCBuYW1lc3BhY2UgYXR0cmlidXRlIGlzIGVuY291bnRlcmVkLgorCistIElzc3VlICMyODMwOiBBZGQgdGhlIGBgaHRtbC5lc2NhcGUoKWBgIGZ1bmN0aW9uLCB3aGljaCBxdW90ZXMgYWxsIHByb2JsZW1hdGljCisgIGNoYXJhY3RlcnMgYnkgZGVmYXVsdC4gIERlcHJlY2F0ZSBgYGNnaS5lc2NhcGUoKWBgLgorCistIElzc3VlICM5NDA5OiBGaXggdGhlIHJlZ2V4IHRvIG1hdGNoIGFsbCBraW5kIG9mIGZpbGVuYW1lcywgZm9yIGludGVyYWN0aXZlCisgIGRlYnVnZ2luZyBpbiBkb2N0ZXN0cy4KKworLSBJc3N1ZSAjOTE4MzogYGBkYXRldGltZS50aW1lem9uZShkYXRldGltZS50aW1lZGVsdGEoMCkpYGAgd2lsbCBub3cgcmV0dXJuIHRoZQorICBzYW1lIGluc3RhbmNlIGFzIGBgZGF0ZXRpbWUudGltZXpvbmUudXRjYGAuCisKKy0gSXNzdWUgIzc1MjM6IEFkZCBTT0NLX0NMT0VYRUMgYW5kIFNPQ0tfTk9OQkxPQ0sgdG8gdGhlIHNvY2tldCBtb2R1bGUsIHdoZXJlCisgIHN1cHBvcnRlZCBieSB0aGUgc3lzdGVtLiAgUGF0Y2ggYnkgTmlraXRhIFZldG9zaGtpbi4KKworLSBJc3N1ZSAjMTAwNjM6IGZpbGU6Ly8gc2NoZW1lIHdpbGwgc3RvcCBhY2Nlc3NpbmcgcmVtb3RlIGhvc3RzIHZpYSBmdHAKKyAgcHJvdG9jb2wuIGZpbGU6Ly8gdXJscyBoYWQgZmFsbGJhY2sgdG8gYWNjZXNzIHJlbW90ZSBob3N0cyB2aWEgZnRwLiBUaGlzIHdhcworICBub3QgY29ycmVjdCwgY2hhbmdlIGlzIG1hZGUgdG8gcmFpc2UgYSBVUkxFcnJvciB3aGVuIGEgcmVtb3RlIGhvc3QgaXMgdHJpZWQgdG8KKyAgYWNjZXNzIHZpYSBmaWxlOi8vIHNjaGVtZS4KKworLSBJc3N1ZSAjMTcxMDcwMzogV3JpdGUgc3RydWN0dXJlcyBmb3IgYW4gZW1wdHkgWklQIGFyY2hpdmUgd2hlbiBhIFppcEZpbGUgaXMKKyAgY3JlYXRlZCBpbiBtb2RlcyAnYScgb3IgJ3cnIGFuZCB0aGVuIGNsb3NlZCB3aXRob3V0IGFkZGluZyBhbnkgZmlsZXMuIFJhaXNlCisgIEJhZFppcGZpbGUgKHJhdGhlciB0aGFuIElPRXJyb3IpIHdoZW4gb3BlbmluZyBzbWFsbCBub24tWklQIGZpbGVzLgorCistIElzc3VlICMxMDA0MTogVGhlIHNpZ25hdHVyZSBvZiBvcHRpb25hbCBhcmd1bWVudHMgaW4gc29ja2V0Lm1ha2VmaWxlKCkgZGlkbid0CisgIG1hdGNoIHRoYXQgb2YgaW8ub3BlbigpLCBhbmQgdGhleSBhbHNvIGRpZG4ndCBnZXQgZm9yd2FyZGVkIHByb3Blcmx5IHRvCisgIFRleHRJT1dyYXBwZXIgaW4gdGV4dCBtb2RlLiAgUGF0Y2ggYnkgS2FpIFpodS4KKworLSBJc3N1ZSAjOTAwMzogaHR0cC5jbGllbnQuSFRUUFNDb25uZWN0aW9uLCB1cmxsaWIucmVxdWVzdC5IVFRQU0hhbmRsZXIgYW5kCisgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4gbm93IHRha2Ugb3B0aW9uYWwgYXJndW1lbnRzIHRvIGFsbG93IGZvciBzZXJ2ZXIKKyAgY2VydGlmaWNhdGUgY2hlY2tpbmcsIGFzIHJlY29tbWVuZGVkIGluIHB1YmxpYyB1c2VzIG9mIEhUVFBTLgorCistIElzc3VlICM2NjEyOiBGaXggc2l0ZSBhbmQgc3lzY29uZmlnIHRvIGNhdGNoIG9zLmdldGN3ZCgpIGVycm9yLCBlZy4gaWYgdGhlCisgIGN1cnJlbnQgZGlyZWN0b3J5IHdhcyBkZWxldGVkLiBQYXRjaCB3cml0dGVuIGJ5IFcuIFRyZXZvciBLaW5nLgorCistIElzc3VlICMzODczOiBTcGVlZCB1cCB1bnBpY2tsaW5nIGZyb20gZmlsZSBvYmplY3RzIHRoYXQgaGF2ZSBhIHBlZWsoKSBtZXRob2QuCisKKy0gSXNzdWUgIzEwMDc1OiBBZGQgYSBzZXNzaW9uX3N0YXRzKCkgbWV0aG9kIHRvIFNTTENvbnRleHQgb2JqZWN0cy4KKworLSBJc3N1ZSAjOTk0ODogRml4ZWQgcHJvYmxlbSBvZiBsb3NpbmcgZmlsZW5hbWUgY2FzZSBpbmZvcm1hdGlvbi4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzUxMDk6IGFycmF5LmFycmF5IGNvbnN0cnVjdG9yIHdpbGwgbm93IHVzZSBmYXN0IGNvZGUgd2hlbgorICBpbml0aWFsIGRhdGEgaXMgcHJvdmlkZWQgaW4gYW4gYXJyYXkgb2JqZWN0IHdpdGggY29ycmVjdCB0eXBlLgorCistIElzc3VlICM2MzE3OiBOb3cgd2luc291bmQuUGxheVNvdW5kIG9ubHkgYWNjZXB0cyB1bmljb2RlLgorCistIElzc3VlICM2MzE3OiBOb3cgd2luc291bmQuUGxheVNvdW5kIGNhbiBhY2NlcHQgbm9uIGFzY2lpIGZpbGVuYW1lLgorCistIElzc3VlICM5Mzc3OiBVc2UgVW5pY29kZSBBUEkgZm9yIGdldGhvc3RuYW1lIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzEwMTQzOiBVcGRhdGUgIm9zLnBhdGhjb25mIiB2YWx1ZXMuCisKKy0gSXNzdWUgIzY1MTg6IFN1cHBvcnQgY29udGV4dCBtYW5hZ2VyIHByb3Rjb2wgZm9yIG9zc2F1ZGlvZGV2IHR5cGVzLgorCistIElzc3VlICM2NzgyNTA6IE1ha2UgbW1hcCBmbHVzaCBhIG5vb3Agb24gQUNDRVNTX1JFQUQgYW5kIEFDQ0VTU19DT1BZLgorCistIElzc3VlICM5MDU0OiBGaXggYSBjcmFzaCBvY2N1cnJpbmcgd2hlbiB1c2luZyB0aGUgcHlleHBhdCBtb2R1bGUgd2l0aCBleHBhdAorICB2ZXJzaW9uIDIuMC4xLgorCistIElzc3VlICM1MzU1OiBQcm92aWRlIG1hcHBpbmdzIGZyb20gRXhwYXQgZXJyb3IgbnVtYmVycyB0byBzdHJpbmcgZGVzY3JpcHRpb25zCisgIGFuZCBiYWNrd2FyZHMsIGluIG9yZGVyIHRvIGFjdHVhbGx5IG1ha2UgaXQgcG9zc2libGUgdG8gYW5hbHl6ZSBlcnJvciBjb2RlcworICBwcm92aWRlZCBieSBFeHBhdEVycm9yLgorCistIFRoZSBVbmljb2RlIGRhdGFiYXNlIHdhcyB1cGRhdGVkIHRvIDYuMC4wLgorCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjMTAyODg6IFRoZSBkZXByZWNhdGVkIGZhbWlseSBvZiAiY2hhciItaGFuZGxpbmcgbWFjcm9zCisgIChJU0xPV0VSKCkvSVNVUFBFUigpL2V0YykgaGF2ZSBub3cgYmVlbiByZW1vdmVkOiB1c2UgUHlfSVNMT1dFUigpIGV0YyBpbnN0ZWFkLgorCistIElzc3VlICM5Nzc4OiBIYXNoIHZhbHVlcyBhcmUgbm93IGFsd2F5cyB0aGUgc2l6ZSBvZiBwb2ludGVycy4gQSBuZXcgUHlfaGFzaF90CisgIHR5cGUgaGFzIGJlZW4gaW50cm9kdWNlZC4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzEwMTE3OiBUb29scy9zY3JpcHRzL3JlaW5kZW50LnB5IG5vdyBhY2NlcHRzIHNvdXJjZSBmaWxlcyB0aGF0IHVzZQorICBlbmNvZGluZyBvdGhlciB0aGFuIEFTQ0lJIG9yIFVURi04LiAgU291cmNlIGVuY29kaW5nIGlzIHByZXNlcnZlZCB3aGVuCisgIHJlaW5kZW50ZWQgY29kZSBpcyB3cml0dGVuIHRvIGEgZmlsZS4KKworLSBJc3N1ZSAjNzI4NzogRGVtby9pbXB1dGlsL2tuZWUucHkgd2FzIHJlbW92ZWQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMzNjk5OiBGaXggdGVzdF9iaWdhZGRyc3BhY2UgYW5kIGV4dGVuZCBpdCB0byB0ZXN0IGJ5dGVzdHJpbmdzIGFzIHdlbGwKKyAgYXMgdW5pY29kZSBzdHJpbmdzLiAgSW5pdGlhbCBwYXRjaCBieSBTYW5kcm8gVG9zaS4KKworLSBJc3N1ZSAjMTAyOTQ6IFJlbW92ZSBkZWFkIGNvZGUgZm9ybSB0ZXN0X3VuaWNvZGVfZmlsZS4KKworLSBJc3N1ZSAjMTAxMjM6IERvbid0IHVzZSBub24tYXNjaWkgZmlsZW5hbWVzIGluIHRlc3RfZG9jdGVzdCB0ZXN0cy4gQWRkIGEgbmV3CisgIHRlc3Qgc3BlY2lmaWMgdG8gdW5pY29kZSAobm9uLWFzY2lpIG5hbWUgYW5kIGZpbGVuYW1lKS4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzEwMjY4OiBBZGQgYSAtLWVuYWJsZS1sb2FkYWJsZS1zcWxpdGUtZXh0ZW5zaW9ucyBvcHRpb24gdG8gY29uZmlndXJlLgorCistIElzc3VlICM4ODUyOiBBbGxvdyB0aGUgc29ja2V0IG1vZHVsZSB0byBidWlsZCBvbiBPcGVuU29sYXJpcy4KKworLSBEcm9wIC1PUFQ6T2xpbWl0IGNvbXBpbGVyIG9wdGlvbi4KKworLSBJc3N1ZSAjMTAwOTQ6IFVzZSB2ZXJzaW9uZWQgLnNvIGZpbGVzIG9uIEdOVS9rZnJlZUJTRCBhbmQgdGhlIEdOVSBIdXJkLgorCistIEFjY2VwdCBPcmFjbGUgQmVya2VsZXkgREIgNS4wIGFuZCA1LjEgYXMgYmFja2VuZCBmb3IgdGhlIGRibSBleHRlbnNpb24uCisKKy0gSXNzdWUgIzc0NzM6IGF2b2lkIGxpbmsgZXJyb3JzIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBhIGRpZmZlcmVudCBzZXQKKyAgb2YgYXJjaGl0ZWN0dXJlcyB0aGFuIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA5LU9jdC0yMDEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTAwNjg6IEdsb2JhbCBvYmplY3RzIHdoaWNoIGhhdmUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoIHRoZWlyIG1vZHVsZSdzCisgIGRpY3QgYXJlIG5vdyBjbGVhcmVkIGFnYWluLiBUaGlzIGNhdXNlcyBpc3N1ZSAjNzE0MCB0byBhcHBlYXIgYWdhaW4uCisKKy0gSXNzdWUgIzk3Mzg6IERvY3VtZW50IFB5RXJyX1NldFN0cmluZygpIGFuZCBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoKQorICBlbmNvZGluZ3MuCisKKy0gYXN0LmxpdGVyYWxfZXZhbCgpIGNhbiBub3cgaGFuZGxlIG5lZ2F0aXZlIG51bWJlcnMuICBJdCBpcyBhbHNvIGEgbGl0dGxlIG1vcmUKKyAgbGliZXJhbCBpbiB3aGF0IGl0IGFjY2VwdHMgd2l0aG91dCBjb21wcm9taXNpbmcgdGhlIHNhZmV0eSBvZiB0aGUgZXZhbHVhdGlvbi4KKyAgRm9yIGV4YW1wbGUsIDNqKzQgYW5kIDMrNCs1IGFyZSBib3RoIGFjY2VwdGVkLgorCistIElzc3VlICMxMDAwNjogdHlwZS5fX2Fic3RyYWN0bWV0aG9kc19fIG5vdyByYWlzZXMgYW4gQXR0cmlidXRlRXJyb3IuICBBcyBhCisgIHJlc3VsdCBtZXRhY2xhc3NlcyBjYW4gbm93IGJlIEFCQ3MgKHNlZSAjOTUzMykuCisKKy0gSXNzdWUgIzg2NzA6IGN0eXBlcy5jX3djaGFyIHN1cHBvcnRzIG5vbi1CTVAgY2hhcmFjdGVycyB3aXRoIDMyIGJpdHMgd2NoYXJfdC4KKworLSBJc3N1ZSAjODY3MDogUHlVbmljb2RlX0FzV2lkZUNoYXIoKSBhbmQgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKSByZXBsYWNlCisgIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgYnkgc2luZ2xlIG5vbi1CTVAgY2hhcmFjdGVycyBmb3IgMTYgYml0cyBQeV9VTklDT0RFIGFuZAorICAzMiBiaXRzIHdjaGFyX3QgKGVnLiBMaW51eCBpbiBuYXJyb3cgYnVpbGQpLgorCistIElzc3VlICMxMDAwMzogQWxsb3cgaGFuZGxpbmcgb2YgU0lHQlJFQUsgb24gV2luZG93cy4gRml4ZXMgYSByZWdyZXNzaW9uCisgIGludHJvZHVjZWQgYnkgaXNzdWUgIzkzMjQuCisKKy0gSXNzdWUgIzk5Nzk6IENyZWF0ZSBmdW5jdGlvbiBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZygpLgorCistIElzc3VlICM3Mzk3OiBNZW50aW9uIHRoYXQgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoKSBpcyBwcm9iYWJseSB3aGF0IHNvbWVvbmUKKyAgcmVhbGx5IHdhbnRzIHRvIGJlIHVzaW5nIGluIF9faW1wb3J0X18ncyBkb2NzdHJpbmcuCisKKy0gSXNzdWUgIzg1MjE6IEFsbG93IENyZWF0ZUtleUV4LCBPcGVuS2V5RXgsIGFuZCBEZWxldGVLZXlFeCBmdW5jdGlvbnMgb2Ygd2lucmVnCisgIHRvIHVzZSBuYW1lZCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzk5MzA6IFJlbW92ZSBib2d1cyBzdWJ0eXBlIGNoZWNrIHRoYXQgd2FzIGNhdXNpbmcgKGUuZy4pCisgIGZsb2F0Ll9fcmRpdl9fKDIuMCwgMykgdG8gcmV0dXJuIE5vdEltcGxlbWVudGVkIGluc3RlYWQgb2YgdGhlIGV4cGVjdGVkIDEuNS4KKworLSBJc3N1ZSAjOTgwODogSW1wbGVtZW50IG9zLmdldGxvZ2luIGZvciBXaW5kb3dzLiBQYXRjaCBieSBKb24gQW5nbGluLgorCistIElzc3VlICM5OTAxOiBEZXN0cm95aW5nIHRoZSBHSUwgaW4gUHlfRmluYWxpemUoKSBjYW4gZmFpbCBpZiBzb21lIG90aGVyCisgIHRocmVhZHMgYXJlIHN0aWxsIHJ1bm5pbmcuICBJbnN0ZWFkLCByZWluaXRpYWxpemUgdGhlIEdJTCBvbiBhIHNlY29uZCBjYWxsIHRvCisgIFB5X0luaXRpYWxpemUoKS4KKworLSBBbGwgU3ludGF4RXJyb3JzIG5vdyBoYXZlIGEgY29sdW1uIG9mZnNldCBhbmQgdGhlcmVmb3JlIGEgY2FyZXQgd2hlbiB0aGUgZXJyb3IKKyAgaXMgcHJpbnRlZC4KKworLSBJc3N1ZSAjOTI1MjogUHlJbXBvcnRfSW1wb3J0IG5vIGxvbmdlciB1c2VzIGEgZnJvbWxpc3QgaGFjayB0byByZXR1cm4gdGhlCisgIG1vZHVsZSB0aGF0IHdhcyBpbXBvcnRlZCwgYnV0IGluc3RlYWQgZ2V0cyB0aGUgbW9kdWxlIGZyb20gc3lzLm1vZHVsZXMuCisKKy0gSXNzdWUgIzkyMTM6IFRoZSByYW5nZSB0eXBlX2l0ZW1zIG5vdyBwcm92aWRlcyBpbmRleCgpIGFuZCBjb3VudCgpIG1ldGhvZHMsIHRvCisgIGNvbmZvcm0gdG8gdGhlIFNlcXVlbmNlIEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbiBhbmQgRGFuaWVsIFN0dXR6YmFjaC4KKworLSBJc3N1ZSAjNzk5NDogSXNzdWUgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGlmIG9iamVjdC5fX2Zvcm1hdF9fIGlzIGNhbGxlZAorICB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcuICBUaGlzIGlzIGFuIGVmZm9ydCB0byBmdXR1cmUtcHJvb2YgdXNlcgorICBjb2RlLiBJZiBhIGRlcml2ZWQgY2xhc3MgZG9lcyBub3QgY3VycmVudGx5IGltcGxlbWVudCBfX2Zvcm1hdF9fIGJ1dCBsYXRlcgorICBhZGRzIGl0cyBvd24gX19mb3JtYXRfXywgaXQgd291bGQgbW9zdCBsaWtlbHkgYnJlYWsgdXNlciBjb2RlIHRoYXQgaGFkCisgIHN1cHBsaWVkIGEgZm9ybWF0IHN0cmluZy4gIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvIGEgRGVwcmVjYXRpb25XYXJpbmcgaW4KKyAgUHl0aG9uIDMuMyBhbmQgaXQgd2lsbCBiZSBhbiBlcnJvciBpbiBQeXRob24gMy40LgorCistIElzc3VlICM5ODI4OiBEZXN0cm95IHRoZSBHSUwgaW4gUHlfRmluYWxpemUoKSwgc28gdGhhdCBpdCBnZXRzIHByb3Blcmx5CisgIHJlLWNyZWF0ZWQgb24gYSBzdWJzZXF1ZW50IGNhbGwgdG8gUHlfSW5pdGlhbGl6ZSgpLiAgVGhlIHByb2JsZW0gKGEgY3Jhc2gpCisgIHdvdWxkbid0IGFwcGVhciBpbiAzLjEgb3IgMi43IHdoZXJlIHRoZSBHSUwncyBzdHJ1Y3R1cmUgaXMgbW9yZSB0cml2aWFsLgorCistIElzc3VlICM5MjEwOiBDb25maWd1cmUgb3B0aW9uIC0td2l0aC13Y3R5cGUtZnVuY3Rpb25zIHdhcyByZW1vdmVkLiAgVXNpbmcgdGhlCisgIGZ1bmN0aW9ucyBmcm9tIHRoZSBsaWJjIGNhdXNlZCB0aGUgbWV0aG9kcyAudXBwZXIoKSBhbmQgbG93ZXIoKSB0byBiZWNvbWUKKyAgbG9jYWxlIGF3YXJlIGFuZCBjcmVhdGVkIHN1YnRseSB3cm9uZyByZXN1bHRzLgorCistIElzc3VlICM5NzM4OiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGFuZCBQeUVycl9Gb3JtYXQoKSByYWlzZSBhbiBlcnJvciBvbiBhCisgIG5vbi1BU0NJSSBieXRlIGluIHRoZSBmb3JtYXQgc3RyaW5nLgorCistIElzc3VlICM0NjE3OiBQcmV2aW91c2x5IGl0IHdhcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWUgZnJvbSB0aGUgbG9jYWwKKyAgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWQgYmxvY2suICBUaGlzIGxpbWl0YXRpb24KKyAgb2YgdGhlIGNvbXBpbGVyIGhhcyBiZWVuIGxpZnRlZCwgYW5kIGEgbmV3IG9wY29kZSBpbnRyb2R1Y2VkIChERUxFVEVfREVSRUYpLgorCistIElzc3VlICM5ODA0OiBhc2NpaSgpIG5vdyBhbHdheXMgcmVwcmVzZW50cyB1bmljb2RlIHN1cnJvZ2F0ZSBwYWlycyBhcyBhIHNpbmdsZQorICBgYFxVWFhYWFhYWFhgYCwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgcHJpbnRhYmxlIG9yIG5vdC4KKyAgQWxzbywgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVyIG5vdyBqb2lucyBzdXJyb2dhdGUgcGFpcnMgaW50byBhCisgIHNpbmdsZSBjaGFyYWN0ZXIgb24gVUNTLTIgYnVpbGRzLgorCistIElzc3VlICM5NzU3OiBtZW1vcnl2aWV3IG9iamVjdHMgZ2V0IGEgcmVsZWFzZSgpIG1ldGhvZCB0byByZWxlYXNlIHRoZQorICB1bmRlcmx5aW5nIGJ1ZmZlciAocHJldmlvdXNseSB0aGlzIHdhcyBvbmx5IGRvbmUgd2hlbiBkZWFsbG9jYXRpbmcgdGhlCisgIG1lbW9yeXZpZXcpLCBhbmQgZ2FpbiBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgorCistIElzc3VlICM5Nzk3OiBweXN0YXRlLmMgd3JvbmdseSBhc3N1bWVkIHRoYXQgemVybyBjb3VsZG4ndCBiZSBhIHZhbGlkCisgIHRocmVhZC1sb2NhbCBzdG9yYWdlIGtleS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyMjM2OiBkaXN0dXRpbHMnIG1rcGF0aCBpZ25vcmVkIHRoZSBtb2RlIHBhcmFtZXRlci4KKworLSBGaXggdHlwbyBpbiBvbmUgc2Rpc3Qgb3B0aW9uIChtZWRhdGEtY2hlY2spLgorCistIElzc3VlICM5MTk5OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBkaXN0dXRpbHMuY21kLkNvbW1hbmQuYW5ub3VuY2UuCisKKy0gSXNzdWUgIzE3MTg1NzQ6IEZpeCBvcHRpb25zIHRoYXQgd2VyZSBzdXBwb3NlZCB0byBhY2NlcHQgYXJndW1lbnRzIGJ1dCBkaWQKKyAgbm90IGluIGJ1aWxkX2NsaWIuCisKKy0gSXNzdWUgIzk0Mzc6IEZpeCBidWlsZGluZyBDIGV4dGVuc2lvbnMgd2l0aCBub24tZGVmYXVsdCBMREZMQUdTLgorCistIElzc3VlICM0NjYxOiBlbWFpbCBjYW4gbm93IHBhcnNlIGJ5dGVzIGlucHV0IGFuZCBnZW5lcmF0ZSBlaXRoZXIgY29udmVydGVkCisgIDdiaXQgb3V0cHV0IG9yIGJ5dGVzIG91dHB1dC4gIEVtYWlsIHZlcnNpb24gYnVtcGVkIHRvIDUuMS4wLgorCistIElzc3VlICMxNTg5OiBBZGQgc3NsLm1hdGNoX2hvc3RuYW1lKCksIHRvIGhlbHAgaW1wbGVtZW50IHNlcnZlciBpZGVudGl0eQorICB2ZXJpZmljYXRpb24gZm9yIGhpZ2hlci1sZXZlbCBwcm90b2NvbHMuCisKKy0gSXNzdWUgIzk3NTk6IEd6aXBGaWxlIG5vdyByYWlzZXMgVmFsdWVFcnJvciB3aGVuIGFuIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQKKyAgYWZ0ZXIgdGhlIGZpbGUgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgSmVmZnJleSBGaW5rZWxzdGVpbi4KKworLSBJc3N1ZSAjOTA0MjogRml4IGludGVyYWN0aW9uIG9mIGN1c3RvbSB0cmFuc2xhdGlvbiBjbGFzc2VzIGFuZCBjYWNoaW5nIGluCisgIGdldHRleHQuCisKKy0gSXNzdWUgIzY3MDY6IGFzeW5jb3JlLmRpc3BhdGNoZXIgbm93IHByb3ZpZGVzIGEgaGFuZGxlX2FjY2VwdGVkKCkgbWV0aG9kCisgIHJldHVybmluZyBhIChzb2NrLCBhZGRyKSBwYWlyIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGEgY29ubmVjdGlvbiBoYXMgYmVlbgorICBlc3RhYmxpc2hlZCB3aXRoIGEgbmV3IHJlbW90ZSBlbmRwb2ludC4gIFRoaXMgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBhcyBhCisgIHJlcGxhY2VtZW50IGZvciBvbGQgaGFuZGxlX2FjY2VwdCgpIGFuZCBhdm9pZHMgdGhlIHVzZXIgdG8gY2FsbCBhY2NlcHQoKQorICBkaXJlY3RseS4KKworLSBJc3N1ZSAjOTA2NTogdGFyZmlsZSBubyBsb25nZXIgdXNlcyAicm9vdCIgYXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB1bmFtZSBhbmQKKyAgZ25hbWUgZmllbGQuCisKKy0gSXNzdWUgIzg5ODA6IEZpeGVkIGEgZmFpbHVyZSBpbiBkaXN0dXRpbHMuY29tbWFuZCBjaGVjayB0aGF0IHdhcyBzaGFkb3dlZCBieQorICBhbiBlbnZpcm9ubWVudCB0aGF0IGRvZXMgbm90IGhhdmUgZG9jdXRpbHMuICBQYXRjaCBieSBBcmZyZXZlci4KKworLSBJc3N1ZSAjMTA1MDI2ODogcGFyc2VhZGRyIG5vdyBjb3JyZWN0bHkgcXVvdGVzIGRvdWJsZSBxdW90ZSBhbmQgYmFja3NsYXNoCisgIGNoYXJhY3RlcnMgdGhhdCBhcHBlYXIgaW5zaWRlIHF1b3RlZCBzdHJpbmdzIGluIGVtYWlsIGFkZHJlc3Nlcy4KKworLSBJc3N1ZSAjMTAwMDQ6IHF1b3ByaW1pbWUgbm8gbG9uZ2VyIGdlbmVyYXRlcyBhIHRyYWNlYmFjayB3aGVuIGNvbmZyb250ZWQgd2l0aAorICBpbnZhbGlkIGNoYXJhY3RlcnMgYWZ0ZXIgJz0nIGluIGEgUS1lbmNvZGVkIHdvcmQuCisKKy0gSXNzdWUgIzE0OTE6IEJhc2VIVFRQU2VydmVyIG5vd3Mgc2VuZCBhIGBgMTAwIENvbnRpbnVlYGAgcmVzcG9uc2UgYmVmb3JlCisgIHNlbmRpbmcgYSAyMDAgT0sgZm9yIHRoZSBFeHBlY3Q6IDEwMC1jb250aW51ZSByZXF1ZXN0IGhlYWRlci4KKworLSBJc3N1ZSAjOTM2MDogQ2xlYW51cCBhbmQgaW1wcm92ZW1lbnRzIHRvIHRoZSBubnRwbGliIG1vZHVsZS4gIFRoZSBBUEkgbm93CisgIGNvbmZvcm1zIHRvIHRoZSBwaGlsb3NvcGh5IG9mIGJ5dGVzIGFuZCB1bmljb2RlIHNlcGFyYXRpb24gaW4gUHl0aG9uIDMuICBBCisgIHRlc3Qgc3VpdGUgaGFzIGFsc28gYmVlbiBhZGRlZC4KKworLSBJc3N1ZSAjOTk2MjogR3ppcEZpbGUgbm93IGhhcyB0aGUgcGVlaygpIG1ldGhvZC4KKworLSBJc3N1ZSAjOTA5MDogV2hlbiBhIHNvY2tldCB3aXRoIGEgdGltZW91dCBmYWlscyB3aXRoIEVXT1VMREJMT0NLIG9yIEVBR0FJTiwKKyAgcmV0cnkgdGhlIHNlbGVjdCgpIGxvb3AgaW5zdGVhZCBvZiBiYWlsaW5nIG91dC4gIFRoaXMgaXMgYmVjYXVzZSBzZWxlY3QoKSBjYW4KKyAgaW5jb3JyZWN0bHkgcmVwb3J0IGEgc29ja2V0IGFzIHJlYWR5IGZvciByZWFkaW5nIChmb3IgZXhhbXBsZSwgaWYgaXQgcmVjZWl2ZWQKKyAgc29tZSBkYXRhIHdpdGggYW4gaW52YWxpZCBjaGVja3N1bSkuCisKKy0gSXNzdWUgIzM2MTI6IEFkZGVkIG5ldyB0eXBlcyB0byBjdHlwZXMud2ludHlwZXMuIChDSEFSIGFuZCBwb2ludGVycykKKworLSBJc3N1ZSAjOTk1MDogRml4IHNvY2tldC5zZW5kYWxsKCkgY3Jhc2ggb3IgbWlzYmVoYXZpb3VyIHdoZW4gYSBzaWduYWwgaXMKKyAgcmVjZWl2ZWQuICBOb3cgc2VuZGFsbCgpIHByb3Blcmx5IGNhbGxzIHNpZ25hbCBoYW5kbGVycyBpZiBuZWNlc3NhcnksIGFuZAorICByZXRyaWVzIHNlbmRpbmcgaWYgdGhlc2UgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBpbmNsdWRpbmcgb24gc29ja2V0cyB3aXRoIGEKKyAgdGltZW91dC4KKworLSBJc3N1ZSAjOTk0NzogbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWcgaW4gc3RvcExpc3RlbmluZy4KKworLSBJc3N1ZSAjOTk0NTogbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWdzIGluIGFkZEhhbmRsZXIvcmVtb3ZlSGFuZGxlci4KKworLSBJc3N1ZSAjOTkzNjogRml4ZWQgZXhlY3V0YWJsZSBsaW5lcycgc2VhcmNoIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKKy0gSXNzdWUgIzk3OTA6IFJld29yayBpbXBvcnRzIG5lY2Vzc2FyeSBmb3Igc2FtZWZpbGUgYW5kIHNhbWVvcGVuZmlsZQorICBpbiBudHBhdGguCisKKy0gSXNzdWUgIzk5Mjg6IFByb3Blcmx5IGluaXRpYWxpemUgdGhlIHR5cGVzIGV4cG9ydGVkIGJ5IHRoZSBiejIgbW9kdWxlLgorCistIElzc3VlICMxNjc1OTUxOiBBbGxvdyBHemlwRmlsZSB0byB3b3JrIHdpdGggdW5zZWVrYWJsZSBmaWxlIG9iamVjdHMuICBQYXRjaCBieQorICBGbG9yaWFuIEZlc3RpLgorCistIExvZ2dpbmc6IEFkZGVkIFF1ZXVlTGlzdGVuZXIgY2xhc3MgdG8gZmFjaWxpdGF0ZSBsb2dnaW5nIHVzYWdlIGZvcgorICBwZXJmb3JtYW5jZS1jcml0aWNhbCB0aHJlYWRzLgorCistIElzc3VlICM5OTE2OiBBZGQgc29tZSBtaXNzaW5nIGVycm5vIHN5bWJvbHMuCisKKy0gSXNzdWUgIzk4Nzc6IEV4cG9zZSBzeXNjb25maWcuZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKKworLSBsb2dnaW5nOiBBZGRlZCBoYXNIYW5kbGVycygpIG1ldGhvZCB0byBMb2dnZXIgYW5kIExvZ2dlckFkYXB0ZXIuCisKKy0gSXNzdWUgIzk5MDg6IEZpeCBvcy5zdGF0KCkgb24gYnl0ZXMgcGF0aHMgdW5kZXIgV2luZG93cyA3LgorCistIElzc3VlICMyNjQzOiBtc3luYygpIGlzIG5vdCBjYWxsZWQgYW55bW9yZSB3aGVuIGRlYWxsb2NhdGluZyBhbiBvcGVuIG1tYXAKKyAgb2JqZWN0LCBvbmx5IG11bm1hcCgpLgorCistIGxvZ2dpbmc6IENoYW5nZWQgTG9nZ2VyQWRhcHRlciBpbXBsZW1lbnRhdGlvbiBpbnRlcm5hbGx5LCB0byBtYWtlIGl0IGVhc2llciB0bworICBzdWJjbGFzcyBpbiBhIHVzZWZ1bCB3YXkuCisKKy0gbG9nZ2luZzogaGFzSGFuZGxlcnMgbWV0aG9kIHdhcyBhZGRlZCB0byBMb2dnZXIsIGFuZCBpc0VuYWJsZWRGb3IsCisgIGdldEVmZmVjdGl2ZUxldmVsLCBoYXNIYW5kbGVycyBhbmQgc2V0TGV2ZWwgd2VyZSBhZGRlZCB0byBMb2dnZXJBZGFwdGVyLgorICBMb2dnZXJBZGFwdGVyIHdhcyBpbnRyb2R1Y2VkIGludG8gdGhlIHVuaXQgdGVzdHMgZm9yIGxvZ2dpbmcuCisKKy0gSXNzdWUgIzE2ODY6IEZpeCBzdHJpbmcuVGVtcGxhdGUgd2hlbiBvdmVycmlkaW5nIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjOTg1NDogU29ja2V0SU8gb2JqZWN0cyBub3cgb2JzZXJ2ZSB0aGUgUmF3SU9CYXNlIGludGVyZmFjZSBpbgorICBub24tYmxvY2tpbmcgbW9kZTogdGhleSByZXR1cm4gTm9uZSB3aGVuIGFuIG9wZXJhdGlvbiB3b3VsZCBibG9jayAoaW5zdGVhZCBvZgorICByYWlzaW5nIGFuIGV4Y2VwdGlvbikuCisKKy0gSXNzdWUgIzE3MzAxMzY6IEZpeCB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIGEgdGsuZm9udC5Gb250IGFuZCBhbiBvYmplY3Qgb2YKKyAgYW5vdGhlciBraW5kLgorCistIElzc3VlICM5NDQxOiBsb2dnaW5nIGhhcyBiZXR0ZXIgY292ZXJhZ2UgZm9yIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzk4NjU6IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyBoYXMgYSBfX3NpemVvZl9fIG1ldGhvZC4KKworLSBJc3N1ZSAjOTg1NDogVGhlIGRlZmF1bHQgcmVhZCgpIGltcGxlbWVudGF0aW9uIGluIGlvLlJhd0lPQmFzZSBub3cgaGFuZGxlcworICBub24tYmxvY2tpbmcgcmVhZGludG8oKSByZXR1cm5pbmcgTm9uZSBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzE1NTI6IHNvY2tldC5zb2NrZXRwYWlyKCkgbm93IHJldHVybnMgcmVndWxhciBzb2NrZXQuc29ja2V0IG9iamVjdHMKKyAgc3VwcG9ydGluZyB0aGUgd2hvbGUgc29ja2V0IEFQSSAocmF0aGVyIHRoYW4gdGhlICJyYXciIF9zb2NrZXQuc29ja2V0CisgIG9iamVjdHMpLgorCistIElzc3VlICM5ODUzOiBGaXggdGhlIHNpZ25hdHVyZSBvZiBTU0xTb2NrZXQucmVjdmZyb20oKSBhbmQgU1NMU29ja2V0LnNlbmR0bygpCisgIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIHNvY2tldCBtZXRob2RzLgorCistIElzc3VlICM5ODQwOiBBZGRlZCBhIGRlY29yYXRvciB0byByZXBybGliIGZvciB3cmFwcGluZyBfX3JlcHJfXyBtZXRob2RzIHRvIG1ha2UKKyAgdGhlbSBoYW5kbGUgcmVjdXJzaXZlIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSB0aHJlYWQuCisKKy0gbG9nZ2luZzogRW5oYW5jZWQgSFRUUEhhbmRsZXIgd2l0aCBzZWN1cmUgYW5kIGNyZWRlbnRpYWxzIGluaXRpYWxpemVycy4KKworLSBJc3N1ZSAjNzY3NjQ1OiBTZXQgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyB0byBUcnVlIG9uIE1hYyBPUyBYLgorCistIElzc3VlICM5ODM3OiBUaGUgcmVhZCgpIG1ldGhvZCBvZiBaaXBFeHRGaWxlIG9iamVjdHMgKGFzIHJldHVybmVkIGJ5CisgIFppcEZpbGUub3BlbigpKSBjb3VsZCByZXR1cm4gbW9yZSBieXRlcyB0aGFuIHJlcXVlc3RlZC4KKworLSBJc3N1ZSAjOTgyNjogT3JkZXJlZERpY3QuX19yZXByX18gY2FuIG5vdyBoYW5kbGUgc2VsZi1yZWZlcmVudGlhbCB2YWx1ZXM6CisgIGRbJ3gnXSA9IGQuCisKKy0gSXNzdWUgIzk4MjU6IFVzaW5nIF9fZGVsX18gaW4gdGhlIGRlZmluaXRpb24gb2YgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QgbWFkZQorICBpdCBwb3NzaWJsZSBmb3IgdGhlIHVzZXIgdG8gY3JlYXRlIHNlbGYtcmVmZXJlbmNpbmcgb3JkZXJlZCBkaWN0aW9uYXJpZXMgd2hpY2gKKyAgYmVjb21lIHBlcm1hbmVudGx5IHVuY29sbGVjdGFibGUgR0MgZ2FyYmFnZS4gIFJlaW5zdGF0ZWQgdGhlIFB5dGhvbiAzLjEKKyAgYXBwcm9hY2ggb2YgdXNpbmcgd2Vha3JlZiBwcm94aWVzIHNvIHRoYXQgcmVmZXJlbmNlIGN5Y2xlcyBuZXZlciBnZXQgY3JlYXRlZAorICBpbiB0aGUgZmlyc3QgcGxhY2UuCisKKy0gSXNzdWUgIzk1NzksICM5NTgwOiBGaXggb3MuY29uZnN0cigpIGZvciB2YWx1ZSBsb25nZXIgdGhhbiAyNTUgYnl0ZXMgYW5kCisgIGVuY29kZSB0aGUgdmFsdWUgd2l0aCBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgKGluc3RlYWQgb2YKKyAgdXRmLTggaW4gc3RyaWN0IG1vZGUpIC4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCisKKy0gSXNzdWUgIzk2MzI6IFJlbW92ZSBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgZnVuY3Rpb246IHVzZSBQWVRIT05GU0VOQ09ESU5HCisgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhdCBQeXRob24gc3RhcnR1cC4KKyAgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGNyZWF0ZXMgaW5jb25zaXN0ZW5jaWVzIGJlY2F1c2UgaXQgaXMgdW5hYmxlIHRvCisgIHJlZW5jb2RlIGFsbCBmaWxlbmFtZXMgaW4gYWxsIG9iamVjdHMuCisKKy0gSXNzdWUgIzk0MTA6IFZhcmlvdXMgb3B0aW1pemF0aW9ucyB0byB0aGUgcGlja2xlIG1vZHVsZSwgbGVhZGluZyB0byBzcGVlZHVwcworICB1cCB0byA0eCAoZGVwZW5kaW5nIG9uIHRoZSBiZW5jaG1hcmspLiAgTW9zdGx5IHBvcnRlZCBmcm9tIFVubGFkZW4gU3dhbGxvdzsKKyAgaW5pdGlhbCBwYXRjaCBieSBBbGV4YW5kcmUgVmFzc2Fsb3R0aS4KKworLSBUaGUgcHByaW50IG1vZHVsZSBub3cgc3VwcG9ydHMgcHJpbnRpbmcgT3JkZXJlZERpY3RzIGluIHRoZWlyIGdpdmVuIG9yZGVyCisgIChmb3JtZXJseSwgaXQgd291bGQgc29ydCB0aGUga2V5cykuCisKKy0gTG9nZ2luZzogQWRkZWQgUXVldWVIYW5kbGVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSB3aXRoCisgIG11bHRpcHJvY2Vzc2luZy4KKworLSBJc3N1ZSAjOTcwNzogUmV3cml0dGVuIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiB0aHJlYWRpbmcubG9jYWwgd2hpY2ggaXMKKyAgZnJpZW5kbGllciB0b3dhcmRzIHJlZmVyZW5jZSBjeWNsZXMuICBUaGlzIGNoYW5nZSBpcyBub3Qgbm9ybWFsbHkgdmlzaWJsZQorICBzaW5jZSBhbiBvcHRpbWl6ZWQgQyBpbXBsZW1lbnRhdGlvbiAoX3RocmVhZC5fbG9jYWwpIGlzIHVzZWQgaW5zdGVhZC4KKworLSBJc3N1ZSAjNjM5NDogb3MuZ2V0cHBpZCgpIGlzIG5vdyBzdXBwb3J0ZWQgb24gV2luZG93cy4gIE5vdGUgdGhhdCBpdCB3aWxsCisgIHN0aWxsIHJldHVybiB0aGUgaWQgb2YgdGhlIHBhcmVudCBwcm9jZXNzIGFmdGVyIGl0IGhhcyBleGl0ZWQuICBUaGlzIHByb2Nlc3MKKyAgaWQgbWF5IGV2ZW4gaGF2ZSBiZWVuIHJldXNlZCBieSBhbm90aGVyIHVucmVsYXRlZCBwcm9jZXNzLgorCistIElzc3VlICM5NzkyOiBJbiBjYXNlIG9mIGNvbm5lY3Rpb24gZmFpbHVyZSwgc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKCkgd291bGQKKyAgc3dhbGxvdyB0aGUgZXhjZXB0aW9uIGFuZCByYWlzZSBhIG5ldyBvbmUsIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGZldGNoIHRoZQorICBvcmlnaW5hbCBlcnJubywgb3IgdG8gZmlsdGVyIHRpbWVvdXQgZXJyb3JzLiAgTm93IHRoZSBvcmlnaW5hbCBlcnJvciBpcworICByZS1yYWlzZWQuCisKKy0gSXNzdWUgIzk3NTg6IFdoZW4gZmNudGwuaW9jdGwoKSB3YXMgY2FsbGVkIHdpdGggbXV0YWJsZV9mbGFnIHNldCB0byBUcnVlLCBhbmQKKyAgdGhlIHBhc3NlZCBidWZmZXIgd2FzIGV4YWN0bHkgMTAyNCBieXRlcyBsb25nLCB0aGUgYnVmZmVyIHdvdWxkbid0IGJlIHVwZGF0ZWQKKyAgYmFjayBhZnRlciB0aGUgc3lzdGVtIGNhbGwuICBPcmlnaW5hbCBwYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gVXBkYXRlcyB0byB0aGUgcmFuZG9tIG1vZHVsZToKKworICAqIERvY3VtZW50IHdoaWNoIHBhcnRzIG9mIHRoZSBtb2R1bGUgYXJlIGd1YXJhbnRlZWQgdG8gc3RheSB0aGUgc2FtZSBhY3Jvc3MKKyAgICB2ZXJzaW9ucyBhbmQgd2hpY2ggcGFydHMgYXJlIHN1YmplY3QgdG8gY2hhbmdlLgorCisgICogVXBkYXRlIHRoZSBzZWVkKCkgbWV0aG9kIHRvIHVzZSBhbGwgb2YgdGhlIGJpdHMgaW4gYSBzdHJpbmcgaW5zdGVhZCBvZiBqdXN0CisgICAgdGhlIGhhc2ggdmFsdWUuICBUaGlzIG1ha2VzIGJldHRlciB1c2Ugb2YgdGhlIHNlZWQgdmFsdWUgYW5kIGFzc3VyZXMgdGhlCisgICAgc2VlZGluZyBpcyBwbGF0Zm9ybSBpbmRlcGVuZGVudC4gIElzc3VlICM3ODg5LgorCisgICogSW1wcm92ZWQgdGhlIHJhbmRvbSgpLS0+aW50ZWdlciBhbGdvcml0aG0gdXNlZCBpbiBjaG9pY2UoKSwgc2h1ZmZsZSgpLAorICAgIHNhbXBsZSgpLCByYW5kcmFuZ2UoKSwgYW5kIHJhbmRpbnQoKS4gIEZvcm1lcmx5LCBpdCB1c2VkIGludChuKnJhbmRvbSgpKQorICAgIHdoaWNoIGhhcyBhIHNsaWdodCBiaWFzIHdoZW5ldmVyIG4gaXMgbm90IGEgcG93ZXIgb2YgdHdvLiAgSXNzdWUgIzkwMjUuCisKKyAgKiBJbXByb3ZlZCBkb2N1bWVudGF0aW9uIG9mIGFyZ3VtZW50cyB0byByYW5kcmFuZ2UoKS4gIElzc3VlICM5Mzc5LgorCistIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyBzdXBwb3J0cyBhIG5ldyBtZXRob2QgZm9yIHJlcG9zaXRpb25pbmcga2V5cyB0bworICBlaXRoZXIgZW5kLgorCistIElzc3VlICM5NzU0OiBTaW1pbGFybHkgdG8gYXNzZXJ0UmFpc2VzIGFuZCBhc3NlcnRSYWlzZXNSZWdleHAsIHVuaXR0ZXN0IHRlc3QKKyAgY2FzZXMgbm93IGFsc28gaGF2ZSBhc3NlcnRXYXJucyBhbmQgYXNzZXJ0V2FybnNSZWdleHAgbWV0aG9kcyB0byBjaGVjayB0aGF0IGEKKyAgZ2l2ZW4gd2FybmluZyB0eXBlIHdhcyB0cmlnZ2VyZWQgYnkgdGhlIGNvZGUgdW5kZXIgdGVzdC4KKworLSBJc3N1ZSAjNTUwNjogQnl0ZXNJTyBvYmplY3RzIG5vdyBoYXZlIGEgZ2V0YnVmZmVyKCkgbWV0aG9kIGV4cG9ydGluZyBhIHZpZXcgb2YKKyAgdGhlaXIgY29udGVudHMgd2l0aG91dCBkdXBsaWNhdGluZyB0aGVtLiAgVGhlIHZpZXcgaXMgYm90aCByZWFkYWJsZSBhbmQKKyAgd3JpdGFibGUuCisKKy0gSXNzdWUgIzc1NjY6IEltcGxlbWVudCBvcy5wYXRoLnNhbWVvcGVuZmlsZSBmb3IgV2luZG93cy4KKworLSBJc3N1ZSAjOTI5MzogSS9PIHN0cmVhbXMgbm93IHJhaXNlIGBgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb25gYCB3aGVuIGFuCisgIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiBpcyBhdHRlbXB0ZWQgKGZvciBleGFtcGxlLCB3cml0aW5nIHRvIGEgZmlsZSBvcGVuIG9ubHkKKyAgZm9yIHJlYWRpbmcpLgorCistIGhhc2hsaWIgaGFzIHR3byBuZXcgY29uc3RhbnQgYXR0cmlidXRlczogYWxnb3JpdGhtc19ndWFyYW50ZWVkIGFuZAorICBhbGdvcml0aG1zX2F2YWlhYmxlIHRoYXQgcmVzcGVjdGl2ZWx5IGxpc3QgdGhlIG5hbWVzIG9mIGhhc2ggYWxnb3JpdGhtcworICBndWFyYW50ZWVkIHRvIGV4aXN0IGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zIGFuZCB0aGUgbmFtZXMgb2YgaGFzaAorICBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUgY3VycmVudCBwcm9jZXNzLgorCistIEEgbmV3IHBhY2thZ2UgYGBjb25jdXJyZW50LmZ1dHVyZXNgYCBhcyBkZWZpbmVkIGJ5IFBFUCAzMTQ4LgorCitDLUFQSQorLS0tLS0KKworLSBBZGQgUHlFcnJfU3ludGF4TG9jYXRpb25FeCwgd2hpY2ggc3VwcG9ydHMgcGFzc2luZyBhIGNvbHVtbiBvZmZzZXQuCisKKy0gSXNzdWUgIzk4MzQ6IERvbid0IHNlZ2ZhdWx0IGluIFB5U2VxdWVuY2VfR2V0U2xpY2UsIFB5U2VxdWVuY2VfU2V0U2xpY2UsIG9yCisgIFB5U2VxdWVuY2VfRGVsU2xpY2Ugd2hlbiB0aGUgb2JqZWN0IGRvZXNuJ3QgaGF2ZSBhbnkgbWFwcGluZyBvcGVyYXRpb25zCisgIGRlZmluZWQuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICM5MTg4OiBUaGUgZ2RiIGV4dGVuc2lvbiBub3cgaGFuZGxlcyBjb3JyZWN0bHkgbmFycm93IChVQ1MyKSBhcyB3ZWxsIGFzCisgIHdpZGUgKFVDUzQpIHVuaWNvZGUgYnVpbGRzIGZvciBib3RoIHRoZSBob3N0IGludGVycHJldGVyIChlbWJlZGRlZCBpbnNpZGUgZ2RiKQorICBhbmQgdGhlIGludGVycHJldGVyIHVuZGVyIHRlc3QuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM5MzA4OiBBZGRlZCB0ZXN0cyBmb3IgaW1wb3J0aW5nIGVuY29kZWQgbW9kdWxlcyB0aGF0IGRvIG5vdAorICBkZXBlbmQgb24gc3BlY2lmaWMgc3RkbGliIG1vZHVsZXMgYmVpbmcgZW5jb2RlZCBpbiBhIGNlcnRhaW4gd2F5LgorCistIElzc3VlICMxMDUxOiBBZGQgYSBzY3JpcHQgKExpYi90ZXN0L21ha2Vfc3NsX2NlcnRzLnB5KSB0byBnZW5lcmF0ZSB0aGUgY3VzdG9tCisgIGNlcnRpZmljYXRlIGFuZCBwcml2YXRlIGtleSBmaWxlcyB1c2VkIGJ5IFNTTC1yZWxhdGVkIGNlcnRzLgorCistIElzc3VlICM5OTc4OiBXYWl0IHVudGlsIHN1YnByb2Nlc3MgY29tcGxldGVzIGluaXRpYWxpemF0aW9uLiAoV2luMzJLaWxsVGVzdHMKKyAgaW4gdGVzdF9vcykKKworLSBJc3N1ZSAjNzExMDogcmVncnRlc3Qgbm93IHNlbmRzIHRlc3QgZmFpbHVyZSByZXBvcnRzIGFuZCBzaW5nbGUtZmFpbHVyZQorICB0cmFjZWJhY2tzIHRvIHN0ZGVyciByYXRoZXIgdGhhbiBzdGRvdXQuCisKKy0gSXNzdWUgIzk2Mjg6IGZpeCBydW50ZXN0cy5zaCAteCBvcHRpb24gc28gbW9yZSB0aGFuIG9uZSB0ZXN0IGNhbiBiZSBleGNsdWRlZC4KKworLSBJc3N1ZSAjOTg5OTogRml4IHRlc3RfdGtpbnRlci50ZXN0X2ZvbnQgb24gdmFyaW91cyBwbGF0Zm9ybXMuICBQYXRjaCBieSBOZWQKKyAgRGVpbHkuCisKKy0gSXNzdWUgIzk4OTQ6IERvIG5vdCBoYXJkY29kZSBFTk9FTlQgaW4gdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICM5MzE1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHRyYWNlIG1vZHVsZS4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCisKKy0gSXNzdWUgIzkzMjM6IE1ha2UgdGVzdC5yZWdydGVzdC5fX2ZpbGVfXyBhYnNvbHV0ZSwgdGhpcyB3YXMgbm90IGFsd2F5cyB0aGUKKyAgY2FzZSB3aGVuIHJ1bm5pbmcgcHJvZmlsZSBvciB0cmFjZSwgZm9yIGV4YW1wbGUuCisKKy0gSXNzdWUgIzk1Njg6IEZpeCB0ZXN0X3VybGxpYjJfbG9jYWxuZXQgb24gT1MgWCAxMC4zLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTAwNjI6IEFsbG93IGJ1aWxkaW5nIG9uIHBsYXRmb3JtcyB3aGljaCBkbyBub3QgaGF2ZSBzZW1fdGltZWR3YWl0LgorCistIElzc3VlICMxMDA1NDogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSB1aW50cHRyX3QgaW4gaW50dHlwZXMuaC4gIFBhdGNoIGJ5IEFraXJhCisgIEtpdGFkYS4KKworLSBJc3N1ZSAjMTAwNTU6IE1ha2UganNvbiBDODktY29tcGxpYW50IGluIFVDUzQgbW9kZS4KKworLSBJc3N1ZSAjOTU1MjogQXZvaWQgdW5uZWNlc3NhcnkgcmVidWlsZCBvZiBPcGVuU1NMLiAoV2luZG93cykKKworLSBJc3N1ZSAjMTYzMzg2MzogRG9uJ3QgaWdub3JlICRDQyB1bmRlciBBSVguCisKKy0gSXNzdWUgIzk4MTA6IENvbXBpbGUgYnppcDIgc291cmNlIGZpbGVzIGluIFB5dGhvbidzIHByb2plY3QgZmlsZSBkaXJlY3RseS4gSXQKKyAgdXNlZCB0byBiZSBidWlsdCB3aXRoIGJ6aXAyJ3MgbWFrZWZpbGUuCisKKy0gSXNzdWUgIzk4NDg6IFN0b3BwaW5nIHRyeWluZyB0byBidWlsZCBfd2Vha3JlZiBpbiBzZXR1cC5weSBhcyBpdCBpcyBhIGJ1aWx0LWluCisgIG1vZHVsZS4KKworLSBJc3N1ZSAjOTgwNjogcHl0aG9uLWNvbmZpZyBub3cgaGFzIGFuIGBgLS1leHRlbnNpb24tc3VmZml4YGAgb3B0aW9uIHRoYXQKKyAgb3V0cHV0cyB0aGUgc3VmZml4IGZvciBkeW5hbWljIGxpYnJhcmllcyBpbmNsdWRpbmcgdGhlIEFCSSB2ZXJzaW9uIG5hbWUKKyAgZGVmaW5lZCBieSBQRVAgMzE0OS4KKworLSBJc3N1ZSAjOTQxMzQ2OiBJbXByb3ZlIHRoZSBidWlsZCBwcm9jZXNzIHVuZGVyIEFJWCBhbmQgYWxsb3cgUHl0aG9uIHRvIGJlCisgIGJ1aWx0IGFzIGEgc2hhcmVkIGxpYnJhcnkuICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KKworLSBJc3N1ZSAjNDAyNjogTWFrZSB0aGUgZmNudGwgZXh0ZW5zaW9uIGJ1aWxkIHVuZGVyIEFJWC4gIFBhdGNoIGJ5IFPDqWJhc3RpZW4KKyAgU2FibMOpLgorCistIElzc3VlICM5NzAxOiBUaGUgTWFjT1NYIGluc3RhbGxlciBjYW4gcGF0Y2ggdGhlIHNoZWxsIHByb2ZpbGUgdG8gZW5zdXJlIHRoYXQKKyAgdGhlICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayBpcyBvbiB0aGUgc2hlbGwncyBzZWFyY2ggcGF0aC4gVGhpcworICBmZWF0dXJlIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBaU0ggc2hlbGwuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDUtU2VwLTIwMTAqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM5MjI1OiBSZW1vdmUgdGhlIFJPVF9GT1VSIGFuZCBEVVBfVE9QWCBvcGNvZGUsIHRoZSBsYXR0ZXIgcmVwbGFjZWQgYnkKKyAgdGhlIG5ldyAoYW5kIHNpbXBsZXIpIERVUF9UT1BfVFdPLiAgUGVyZm9ybWFuY2UgaXNuJ3QgY2hhbmdlZCwgYnV0IG91cgorICBieXRlY29kZSBpcyBhIGJpdCBzaW1wbGlmaWVkLiAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzk3NjY6IFJlbmFtZSBwb29ybHkgbmFtZWQgdmFyaWFibGVzIGV4cG9zZWQgYnkgX3dhcm5pbmdzIHRvIHByZXZlbnQKKyAgY29uZnVzaW9uIHdpdGggdGhlIHByb3BlciB2YXJpYWJsZXMgbmFtZXMgZnJvbSAnd2FybmluZ3MnIGl0c2VsZi4KKworLSBJc3N1ZSAjOTIxMjogZGljdF9rZXlzIGFuZCBkaWN0X2l0ZW1zIG5vdyBwcm92aWRlIHRoZSBpc2Rpc2pvaW50KCkgbWV0aG9kLCB0bworICBjb25mb3JtIHRvIHRoZSBTZXQgQUJDLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgorCistIElzc3VlICM5NzM3OiBGaXggYSBjcmFzaCB3aGVuIHRyeWluZyB0byBkZWxldGUgYSBzbGljZSBvciBhbiBpdGVtIGZyb20gYQorICBtZW1vcnl2aWV3IG9iamVjdC4KKworLSBJc3N1ZSAjOTU0OTogc3lzLnNldGRlZmF1bHRlbmNvZGluZygpIGFuZCBQeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nKCkgYXJlCisgIG5vdyByZW1vdmVkLCBzaW5jZSB0aGVpciBlZmZlY3Qgd2FzIGluZXhpc3RlbnQgaW4gMy54ICh0aGUgZGVmYXVsdCBlbmNvZGluZyBpcworICBoYXJkY29kZWQgdG8gdXRmLTggYW5kIGNhbm5vdCBiZSBjaGFuZ2VkKS4KKworLSBJc3N1ZSAjNzQxNTogUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KCkgbm93IHVzZXMgdGhlIG5ldyBidWZmZXIgQVBJCisgIHByb3Blcmx5LiAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjNTU1MzogVGhlIFB5X0xPQ0FMX0lOTElORSBtYWNybyBub3cgcmVzdWx0cyBpbiBpbmxpbmluZyBvbiBtb3N0CisgIHBsYXRmb3Jtcy4gIFByZXZpb3VzbHksIGl0IGlubGluZWQgb25seSB3aGVuIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQy4KKworLSBJc3N1ZSAjOTcxMjogRml4IHRva2VuaXplIG9uIGlkZW50aWZpZXJzIHRoYXQgc3RhcnQgd2l0aCBub24tYXNjaWkgbmFtZXMuCisKKy0gSXNzdWUgIzk2ODg6IF9fYmFzaWNzaXplX18gYW5kIF9faXRlbXNpemVfXyBtdXN0IGJlIGFjY2Vzc2VkIGFzIFB5X3NzaXplX3QuCisKKy0gSXNzdWUgIzk2ODQ6IEFkZGVkIGEgZGVmaW5pdGlvbiBmb3IgU0laRU9GX1dDSEFSX1QgdG8gUEMvcHljb25maWcuaCwgdG8gbWF0Y2gKKyAgdGhlIHB5Y29uZmlnLmggZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBvbiBvdGhlciBzeXN0ZW1zLgorCistIElzc3VlICM5NjY2OiBPbmx5IGNhdGNoIEF0dHJpYnV0ZUVycm9yIGluIGhhc2F0dHIoKS4gQWxsIG90aGVyIGV4Y2VwdGlvbnMgdGhhdAorICBvY2N1ciBkdXJpbmcgYXR0cmlidXRlIGxvb2t1cCBhcmUgbm93IHByb3BhZ2F0ZWQgdG8gdGhlIGNhbGxlci4KKworLSBJc3N1ZSAjODYyMjogQWRkIFBZVEhPTkZTRU5DT0RJTkcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gb3ZlcnJpZGUgdGhlCisgIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisKKy0gSXNzdWUgIzUxMjc6IFRoZSBDIGZ1bmN0aW9ucyB0aGF0IGFjY2VzcyB0aGUgVW5pY29kZSBEYXRhYmFzZSBub3cgYWNjZXB0IGFuZAorICByZXR1cm4gY2hhcmFjdGVycyBmcm9tIHRoZSBmdWxsIFVuaWNvZGUgcmFuZ2UsIGV2ZW4gb24gbmFycm93IHVuaWNvZGUgYnVpbGRzCisgIChQeV9VTklDT0RFX1RPTE9XRVIsIFB5X1VOSUNPREVfSVNERUNJTUFMLCBhbmQgb3RoZXJzKS4gIEEgdmlzaWJsZSBkaWZmZXJlbmNlCisgIGluIFB5dGhvbiBpcyB0aGF0IHVuaWNvZGVkYXRhLm51bWVyaWMoKSBub3cgcmV0dXJucyB0aGUgY29ycmVjdCB2YWx1ZSBmb3IKKyAgbGFyZ2UgY29kZSBwb2ludHMsIGFuZCByZXByKCkgbWF5IGNvbnNpZGVyIG1vcmUgY2hhcmFjdGVycyBhcyBwcmludGFibGUuCisKKy0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgpIGZ1bmN0aW9uIHRvIGdldCB0aGUgZmlsZW5hbWUKKyAgYXMgYSB1bmljb2RlIG9iamVjdCwgaW5zdGVhZCBvZiBhIGJ5dGUgc3RyaW5nLiBGdW5jdGlvbiBuZWVkZWQgdG8gc3VwcG9ydAorICB1bmVuY29kYWJsZSBmaWxlbmFtZXMuIERlcHJlY2F0ZSBQeU1vZHVsZV9HZXRGaWxlbmFtZSgpIGluIGZhdm9yIG9uIHRoZSBuZXcKKyAgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzgwNjM6IENhbGwgX1B5R0lMU3RhdGVfSW5pdCgpIGVhcmxpZXIgaW4gUHlfSW5pdGlhbGl6ZUV4KCkuCisKKy0gSXNzdWUgIzk2MTI6IFRoZSBzZXQgb2JqZWN0IGlzIG5vdyA2NC1iaXQgY2xlYW4gdW5kZXIgV2luZG93cy4KKworLSBJc3N1ZSAjODIwMjogc3lzLmFyZ3ZbMF0gaXMgbm93IHNldCB0byAnLW0nIGluc3RlYWQgb2YgJy1jJyB3aGVuIHNlYXJjaGluZyBmb3IKKyAgdGhlIG1vZHVsZSBmaWxlIHRvIGJlIGV4ZWN1dGVkIHdpdGggdGhlIC1tIGNvbW1hbmQgbGluZSBvcHRpb24uCisKKy0gSXNzdWUgIzk1OTk6IENyZWF0ZSBQeVN5c19Gb3JtYXRTdGRvdXQoKSBhbmQgUHlTeXNfRm9ybWF0U3RkZXJyKCkgZnVuY3Rpb25zIHRvCisgIHdyaXRlIGEgbWVzc2FnZSBmb3JtYXR0ZWQgYnkgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgdG8gc3lzLnN0ZG91dCBhbmQKKyAgc3lzLnN0ZGVyci4KKworLSBJc3N1ZSAjOTU0MjogQ3JlYXRlIFB5VW5pY29kZV9GU0RlY29kZXIoKSBmdW5jdGlvbiwgYSBQYXJzZVR1cGxlIGNvbnZlcnRlcjoKKyAgZGVjb2RlIGJ5dGVzIG9iamVjdHMgdG8gdW5pY29kZSB1c2luZyBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgpOyBzdHIKKyAgb2JqZWN0cyBhcmUgb3V0cHV0IGFzLWlzLgorCistIElzc3VlICM5MjAzOiBDb21wdXRlZCBnb3RvcyBhcmUgbm93IGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBzdXBwb3J0ZWQgY29tcGlsZXJzCisgICh3aGljaCBhcmUgZGV0ZWN0ZWQgYnkgdGhlIGNvbmZpZ3VyZSBzY3JpcHQpLiAgVGhleSBjYW4gc3RpbGwgYmUgZGlzYWJsZQorICBzZWxlY3RpdmVseSBieSBzcGVjaWZ5aW5nIC0td2l0aG91dC1jb21wdXRlZC1nb3Rvcy4KKworLSBJc3N1ZSAjOTQyNTogQ3JlYXRlIFB5RXJyX1dhcm5Gb3JtYXQoKSBmdW5jdGlvbiwgc2ltaWxhciB0byBQeUVycl9XYXJuRXgoKSBidXQKKyAgdXNlIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIGZvcm1hdCB0aGUgd2FybmluZyBtZXNzYWdlLgorCistIElzc3VlICM4NTMwOiBQcmV2ZW50IHN0cmluZ2xpYiBmYXN0c2VhcmNoIGZyb20gcmVhZGluZyBiZXlvbmQgdGhlIGZyb250IG9mIGFuCisgIGFycmF5LgorCistIElzc3VlICM1MzE5OiBQcmludCBhbiBlcnJvciBpZiBmbHVzaGluZyBzdGRvdXQgZmFpbHMgYXQgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCisKKy0gSXNzdWUgIzkzMzc6IFRoZSBzdHIoKSBvZiBhIGZsb2F0IG9yIGNvbXBsZXggbnVtYmVyIGlzIG5vdyBpZGVudGljYWwgdG8gaXRzCisgIHJlcHIoKS4KKworLSBJc3N1ZSAjOTQxNjogRml4IHNvbWUgaXNzdWVzIHdpdGggY29tcGxleCBmb3JtYXR0aW5nIHdoZXJlIHRoZSBvdXRwdXQgd2l0aCBubworICB0eXBlIHNwZWNpZmllciBmYWlsZWQgdG8gbWF0Y2ggdGhlIHN0ciBvdXRwdXQ6CisKKyAgICAtIGZvcm1hdChjb21wbGV4KC0wLjAsIDIuMCksICctJykgb21pdHRlZCB0aGUgcmVhbCBwYXJ0IGZyb20gdGhlIG91dHB1dCwKKyAgICAtIGZvcm1hdChjb21wbGV4KDAuMCwgMi4wKSwgJy0nKSBpbmNsdWRlZCBhIHNpZ24gYW5kIHBhcmVudGhlc2VzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjODAxMzogdGltZS5hc2N0aW1lIGFuZCB0aW1lLmN0aW1lIG5vIGxvbmdlciBjYWxsIHN5c3RlbQorICBhc2N0aW1lIGFuZCBjdGltZSBmdW5jdGlvbnMuICBUaGUgeWVhciByYW5nZSBmb3IgdGltZS5hc2N0aW1lIGlzIG5vdworICAxOTAwIHRocm91Z2ggbWF4aW50LiAgVGhlIHJhbmdlIGZvciB0aW1lLmN0aW1lIGlzIHRoZSBzYW1lIGFzIGZvcgorICB0aW1lLmxvY2FsdGltZS4gIFRoZSBzdHJpbmcgcHJvZHVjZWQgYnkgdGhlc2UgZnVuY3Rpb25zIGlzIGxvbmdlcgorICB0aGFuIDI0IGNoYXJhY3RlcnMgd2hlbiB5ZWFyIGlzIGdyZWF0ZXIgdGhhbiA5OTk5LgorCistIElzc3VlICM2NjA4OiB0aW1lLmFzY3RpbWUgaXMgbm93IGNoZWNraW5nIHN0cnVjdCB0bSBmaWVsZHMgaXRzIGlucHV0CisgIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHRoZSBzeXN0ZW0gYXNjdGltZS4gIFBhdGNoIGJ5IE11blNpYyBKZW9uZy4KKworLSBJc3N1ZSAjODczNDogQXZvaWQgY3Jhc2ggaW4gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoKSB3aGVuIGFuIGludmFsaWQgZmlsZQorICBkZXNjcmlwdG9yIGlzIHByb3ZpZGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCisKKy0gSXNzdWUgIzc3MzY6IFJlbGVhc2UgdGhlIEdJTCBhcm91bmQgY2FsbHMgdG8gb3BlbmRpcigpIGFuZCBjbG9zZWRpcigpIGluIHRoZQorICBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBNYXJjaW4gQmFjaHJ5LgorCistIElzc3VlICM0ODM1OiBtYWtlIFB5TG9uZ19Gcm9tU29ja2V0X3QoKSBhbmQgUHlMb25nX0FzU29ja2V0X3QoKSBwcml2YXRlIHRvIHRoZQorICBzb2NrZXQgbW9kdWxlLCBhbmQgZml4IHRoZSB3aWR0aCBvZiBzb2NrZXQgZGVzY3JpcHRvcnMgdG8gYmUgY29ycmVjdGx5CisgIGRldGVjdGVkIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgorCistIElzc3VlICMxMDI3MjA2OiBTdXBwb3J0IElETkEgaW4gZ2V0aG9zdGJ5bmFtZSwgZ2V0aG9zdGJ5bmFtZV9leCwgZ2V0YWRkcmluZm8KKyAgYW5kIGdldGhvc3RieWFkZHIuICBnZXRuYW1laW5mbyBpcyBub3cgcmVzdHJpY3RlZCB0byBudW1lcmljIGFkZHJlc3NlcyBhcworICBpbnB1dC4KKworLSBJc3N1ZSAjOTIxNDogU2V0IG9wZXJhdGlvbnMgb24gYSBLZXlzVmlldyBvciBJdGVtc1ZpZXcgaW4gY29sbGVjdGlvbnMgbm93CisgIGNvcnJlY3RseSByZXR1cm4gYSBzZXQuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgorCistIElzc3VlICM1NzM3OiBBZGQgU29sYXJpcy1zcGVjaWZpYyBtbmVtb25pY3MgaW4gdGhlIGVycm5vIG1vZHVsZS4gIFBhdGNoIGJ5CisgIE1hdHRoZXcgQWhyZW5zLgorCistIFJlc3RvcmUgR0lMIGluIG5pc19jYXQgaW4gY2FzZSBvZiBlcnJvci4gRGVjb2RlIE5JUyBkYXRhIHRvIGZzIGVuY29kaW5nLCB1c2luZworICB0aGUgc3Vycm9nYXRlIGVycm9yIGhhbmRsZXIuCisKKy0gSXNzdWUgIzY2NTc2MTogYGBmdW5jdG9vbHMucmVkdWNlKClgYCB3aWxsIG5vIGxvbmdlciBtYXNrIGV4Y2VwdGlvbnMgb3RoZXIKKyAgdGhhbiBgYFR5cGVFcnJvcmBgIHJhaXNlZCBieSB0aGUgaXRlcmF0b3IgYXJndW1lbnQuCisKKy0gSXNzdWUgIzk1NzA6IFVzZSBQRVAgMzgzIGRlY29kaW5nIGluIG9zLm1rbm9kIGFuZCBvcy5ta2ZpZm8uCisKKy0gSXNzdWUgIzY5MTU6IFVuZGVyIFdpbmRvd3MsIG9zLmxpc3RkaXIoKSBkaWRuJ3QgcmVsZWFzZSB0aGUgR2xvYmFsIEludGVycHJldGVyCisgIExvY2sgYXJvdW5kIGFsbCBzeXN0ZW0gY2FsbHMuICBPcmlnaW5hbCBwYXRjaCBieSBSeWFuIEtlbGx5LgorCistIElzc3VlICM4NTI0OiBBZGQgYSBkZXRhY2goKSBtZXRob2QgdG8gc29ja2V0IG9iamVjdHMsIHNvIGFzIHRvIHB1dCB0aGUgc29ja2V0CisgIGludG8gdGhlIGNsb3NlZCBzdGF0ZSB3aXRob3V0IGNsb3NpbmcgdGhlIHVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yLgorCistIElzc3VlICM0Nzc4NjM6IEVtaXQgYSBSZXNvdXJjZVdhcm5pbmcgYXQgc2h1dGRvd24gaWYgZ2MuZ2FyYmFnZSBpcyBub3QgZW1wdHkuCisKKy0gSXNzdWUgIzY4Njk6IEZpeCBhIHJlZmNvdW50IHByb2JsZW0gaW4gdGhlIF9jdHlwZXMgZXh0ZW5zaW9uLgorCistIElzc3VlICM1NTA0OiBjdHlwZXMgc2hvdWxkIG5vdyB3b3JrIHdpdGggc3lzdGVtcyB3aGVyZSBtbWFwIGNhbid0IGJlCisgIFBST1RfV1JJVEUgYW5kIFBST1RfRVhFQy4KKworLSBJc3N1ZSAjOTUwNzogTmFtZWQgdHVwbGUgcmVwciB3aWxsIG5vdyBhdXRvbWF0aWNhbGx5IGRpc3BsYXkgdGhlIHJpZ2h0IG5hbWUgaW4KKyAgYSB0dXBsZSBzdWJjbGFzcy4KKworLSBJc3N1ZSAjOTMyNDogQWRkIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHNpZ25hbC5zaWduYWwgb24gV2luZG93cyBpbiBvcmRlciB0bworICBwcmV2ZW50IGNyYXNoZXMuCisKKy0gSXNzdWUgIzk1MjY6IFJlbW92ZSBzb21lIG91dGRhdGVkIChpbnQpIGNhc3RzIHRoYXQgd2VyZSBwcmV2ZW50aW5nIHRoZSBhcnJheQorICBtb2R1bGUgZnJvbSB3b3JraW5nIGNvcnJlY3RseSB3aXRoIGFycmF5cyBvZiBtb3JlIHRoYW4gMioqMzEgZWxlbWVudHMuCisKKy0gRml4IG1lbW9yeSBsZWFrIGluIHNzbC5fc3NsLl90ZXN0X2RlY29kZV9jZXJ0LgorCistIElzc3VlICM4MDY1OiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUgbW9kdWxlIChmcm9tIGZhaWx1cmUgdG8gZnJlZSB0aGUKKyAgcmVzdWx0IG9mIGhpc3RvcnlfZ2V0X2hpc3Rvcnlfc3RhdGUoKSkuCisKKy0gSXNzdWUgIzk0NTA6IEZpeCBtZW1vcnkgbGVhayBpbiByZWFkbGluZS5yZXBsYWNlX2hpc3RvcnlfaXRlbSBhbmQKKyAgcmVhZGxpbmUucmVtb3ZlX2hpc3RvcnlfaXRlbSBmb3IgcmVhZGxpbmUgdmVyc2lvbiA+PSA1LjAuCisKKy0gSXNzdWUgIzgxMDU6IFZhbGlkYXRlIGZpbGUgZGVzY3JpcHRvciBwYXNzZWQgdG8gbW1hcC5tbWFwIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzgwNDY6IEFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBhbmQgLmNsb3NlZCBwcm9wZXJ0eSB0byBtbWFwCisgIG9iamVjdHMuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjNzQ1MTogSW1wcm92ZSBkZWNvZGluZyBwZXJmb3JtYW5jZSBvZiBKU09OIG9iamVjdHMsIGFuZCByZWR1Y2UgdGhlCisgIG1lbW9yeSBjb25zdW1wdGlvbiBvZiBzYWlkIGRlY29kZWQgb2JqZWN0cyB3aGVuIHRoZXkgdXNlIHRoZSBzYW1lIHN0cmluZ3MgYXMKKyAga2V5cy4KKworLSBJc3N1ZSAjMTEwMDU2MjogRml4IGRlZXAtY29weWluZyBvZiBvYmplY3RzIGRlcml2ZWQgZnJvbSB0aGUgbGlzdCBhbmQgZGljdAorICB0eXBlcy4gIFBhdGNoIGJ5IE1pY2hlbGUgT3Jyw7kgYW5kIEJqw7ZybiBMaW5kcXZpc3QuCisKKy0gSXNzdWUgIzk3NTM6IEZpeGVkIHNvY2tldC5kdXAsIHdoaWNoIGRpZCBub3QgYWx3YXlzIHdvcmsgY29ycmVjdGx5IG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzk0MjE6IE1hZGUgdGhlIGdldDx0eXBlPiBtZXRob2RzIGNvbnNpc3RlbnRseSBhY2NlcHQgdGhlIHZhcnMgYW5kCisgIGRlZmF1bHQgYXJndW1lbnRzIG9uIGFsbCBwYXJzZXIgY2xhc3Nlcy4KKworLSBJc3N1ZSAjNzAwNTogRml4ZWQgb3V0cHV0IG9mIE5vbmUgdmFsdWVzIGZvciBSYXdDb25maWdQYXJzZXIud3JpdGUgYW5kCisgIENvbmZpZ1BhcnNlci53cml0ZS4KKworLSBJc3N1ZSAjODk5MDogYXJyYXkuZnJvbXN0cmluZygpIGFuZCBhcnJheS50b3N0cmluZygpIGdldCByZW5hbWVkIHRvCisgIGZyb21ieXRlcygpIGFuZCB0b2J5dGVzKCksIHJlc3BlY3RpdmVseSwgdG8gYXZvaWQgY29uZnVzaW9uLiAgRnVydGhlcm1vcmUsCisgIGFycmF5LmZyb21ieXRlcygpLCBhcnJheS5leHRlbmQoKSBhcyB3ZWxsIGFzIHRoZSBhcnJheS5hcnJheSgpIGNvbnN0cnVjdG9yIG5vdworICBhY2NlcHQgYnl0ZWFycmF5IG9iamVjdHMuICBQYXRjaCBieSBUaG9tYXMgSm9sbGFucy4KKworLSBJc3N1ZSAjODA4MTY0OiBGaXhlZCBzb2NrZXQuY2xvc2UgdG8gYXZvaWQgcmVmZXJlbmNlcyB0byBnbG9iYWxzLCB0byBhdm9pZAorICBpc3N1ZXMgd2hlbiBzb2NrZXQuY2xvc2UgaXMgY2FsbGVkIGZyb20gYSBfX2RlbF9fIG1ldGhvZC4KKworLSBJc3N1ZSAjOTcwNjogc3NsIG1vZHVsZSBwcm92aWRlcyBhIGJldHRlciBlcnJvciBoYW5kbGluZyBpbiB2YXJpb3VzCisgIGNpcmN1bXN0YW5jZXMuCisKKy0gSXNzdWUgIzE4Njg6IEVsaW1pbmF0ZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBpbiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBieSBnZXR0aW5nCisgIHJpZCBvZiB0aGUgY2FjaGVkIGNvcHkgb2YgdGhyZWFkLWxvY2FsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LgorCistIElzc3VlICMxNTEyNzkxOiBJbiBzZXRmcmFtZXJhdGUoKSBpbiB0aGUgd2F2ZSBtb2R1bGUsIG5vbi1pbnRlZ3JhbCBmcmFtZSByYXRlcworICBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLgorCistIElzc3VlICM4Nzk3OiB1cmxsaWIyIGRvZXMgYSByZXRyeSBmb3IgQmFzaWMgQXV0aGVudGljYXRpb24gZmFpbHVyZSBpbnN0ZWFkIG9mCisgIGZhbGxpbmcgaW50byByZWN1cnNpb24uCisKKy0gSXNzdWUgIzExOTQyMjI6IGVtYWlsLnV0aWxzLnBhcnNlZGF0ZSBub3cgcmV0dXJucyBSRkMyODIyIGNvbXBsaWFudCBmb3VyCisgIGNoYXJhY3RlciB5ZWFycyBldmVuIGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIFJGQzgyMiB0d28gY2hhcmFjdGVyIHllYXJzLgorCistIElzc3VlICM4NzUwOiBGaXhlZCBNdXRhYmxlU2V0J3MgbWV0aG9kcyB0byBjb3JyZWN0bHkgaGFuZGxlIHJlZmxleGl2ZQorICBvcGVyYXRpb25zIG9uIGl0cyBzZWxmLCBuYW1lbHkgeCAtPSB4IGFuZCB4IF49IHguCisKKy0gSXNzdWUgIzkxMjk6IHNtdHBkLnB5IGlzIHZ1bG5lcmFibGUgdG8gRG9TIGF0dGFja3MgZGVyaXZpbmcgZnJvbSBtaXNzaW5nIGVycm9yCisgIGhhbmRsaW5nIHdoZW4gYWNjZXB0aW5nIGEgbmV3IGNvbm5lY3Rpb24uCisKKy0gSXNzdWUgIzk2MDE6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYSB3b3JrYXJvdW5kIGZvciBub24tY29tcGxpYW50CisgIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIElJUyBzaGlwcGVkIHdpdGggV2luZG93cyBzZXJ2ZXIgMjAwMyByZXR1cm5pbmcgaW52YWxpZAorICByZXNwb25zZSBjb2RlcyBmb3IgTUtEIGFuZCBQV0QgY29tbWFuZHMuCisKKy0gSXNzdWUgIzY1ODc0OTogYXN5bmNvcmUncyBjb25uZWN0KCkgbWV0aG9kIG5vdyBjb3JyZWN0bHkgaW50ZXJwcmV0cyB3aW5zb2NrCisgIGVycm9ycy4KKworLSBJc3N1ZSAjOTUwMTogRml4ZWQgbG9nZ2luZyByZWdyZXNzaW9ucyBpbiBjbGVhbnVwIGNvZGUuCisKKy0gRml4IGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIHRvIHNraXAgbWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBvYmplY3QuCisKKy0gSXNzdWUgIzk1NzI6IEltcG9ydGxpYiBzaG91bGQgbm90IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBhIGRpcmVjdG9yeSBpdCB0aG91Z2h0CisgIGl0IG5lZWRlZCB0byBjcmVhdGUgd2FzIGRvbmUgY29uY3VycmVudGx5IGJ5IGFub3RoZXIgcHJvY2Vzcy4KKworLSBJc3N1ZSAjOTYxNzogU2lnbmFscyByZWNlaXZlZCBkdXJpbmcgYSBsb3ctbGV2ZWwgd3JpdGUgb3BlcmF0aW9uIGFyZW4ndAorICBpZ25vcmVkIGJ5IHRoZSBidWZmZXJlZCBJTyBsYXllciBhbnltb3JlLgorCistIElzc3VlICM4NDM1OTA6IE1ha2UgIm1hY2ludG9zaCIgYW4gYWxpYXMgdG8gdGhlICJtYWNfcm9tYW4iIGVuY29kaW5nLgorCistIENyZWF0ZSBvcy5mc2RlY29kZSgpOiBkZWNvZGUgZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZQorICBlcnJvciBoYW5kbGVyLCBvciBzdHJpY3QgZXJyb3IgaGFuZGxlciBvbiBXaW5kb3dzLgorCistIElzc3VlICMzNDg4OiBQcm92aWRlIGNvbnZlbmllbnQgc2hvcnRoYW5kIGZ1bmN0aW9ucyBgYGd6aXAuY29tcHJlc3NgYCBhbmQKKyAgYGBnemlwLmRlY29tcHJlc3NgYC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFuYW5kIEIuIFBpbGxhaS4KKworLSBJc3N1ZSAjODgwNzogcG9wbGliLlBPUDNfU1NMIGNsYXNzIG5vdyBhY2NlcHRzIGEgY29udGV4dCBwYXJhbWV0ZXIsIHdoaWNoIGlzIGEKKyAgc3NsLlNTTENvbnRleHQgb2JqZWN0IGFsbG93aW5nIGJ1bmRsaW5nIFNTTCBjb25maWd1cmF0aW9uIG9wdGlvbnMsCisgIGNlcnRpZmljYXRlcyBhbmQgcHJpdmF0ZSBrZXlzIGludG8gYSBzaW5nbGUgKHBvdGVudGlhbGx5IGxvbmctbGl2ZWQpCisgIHN0cnVjdHVyZS4KKworLSBJc3N1ZSAjODg2NjogcGFyYW1ldGVycyBwYXNzZWQgdG8gc29ja2V0LmdldGFkZHJpbmZvIGNhbiBub3cgYmUgc3BlY2lmaWVkIGFzCisgIHNpbmdsZSBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBBZGRyZXNzIFhYWCBjb21tZW50IGluIGRpcy5weSBieSBoYXZpbmcgaW5zcGVjdC5weSBwcmVmZXIgdG8gcmV1c2UgdGhlIGRpcy5weQorICBjb21waWxlciBmbGFnIHZhbHVlcyBvdmVyIGRlZmluaW5nIGl0cyBvd24uCisKKy0gSXNzdWUgIzkxNDc6IEFkZGVkIGRpcy5jb2RlX2luZm8oKSB3aGljaCBpcyBzaW1pbGFyIHRvIHNob3dfY29kZSgpIGJ1dCByZXR1cm5zCisgIGZvcm1hdHRlZCBjb2RlIGluZm9ybWF0aW9uIGluIGEgc3RyaW5nIHJhdGhlciB0aGFuIGRpc3BsYXlpbmcgb24gc2NyZWVuLgorCistIElzc3VlICM5NTY3OiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgbm93IGFkZHMgYSBfX3dyYXBwZWRfXyBhdHRyaWJ1dGUKKyAgcG9pbnRpbmcgdG8gdGhlIG9yaWdpbmFsIGNhbGxhYmxlLgorCistIElzc3VlICMzNDQ1OiBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIgbm93IHRvbGVyYXRlcyBtaXNzaW5nIGF0dHJpYnV0ZXMgb24KKyAgd3JhcHBlZCBjYWxsYWJsZXMuCisKKy0gSXNzdWUgIzU4Njc6IEFkZCBhYmMuYWJzdHJhY3RjbGFzc21ldGhvZCBhbmQgYWJjLmFic3RyYWN0c3RhdGljbWV0aG9kLgorCistIElzc3VlICM5NjA1OiBwb3NpeC5nZXRsb2dpbigpIGRlY29kZXMgdGhlIHVzZXJuYW1lIHdpdGggZmlsZSBmaWxlc3lzdGVtCisgIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCisKKy0gSXNzdWUgIzk2MDQ6IHBvc2l4LmluaXRncm91cHMoKSBlbmNvZGVzIHRoZSB1c2VybmFtZSB1c2luZyB0aGUgZmlsZXlzdGVtCisgIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlci4gUGF0Y2ggd3JpdHRlbiBieSBEYXZpZCBXYXRzb24uCisKKy0gSXNzdWUgIzk2MDM6IHBvc2l4LnR0eW5hbWUoKSBhbmQgcG9zaXguY3Rlcm1pZCgpIGRlY29kZSB0aGUgdGVybWluYWwgbmFtZQorICB1c2luZyB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4KKyAgYnkgRGF2aWQgV2F0c29uLgorCistIElzc3VlICM3NjQ3OiBUaGUgcG9zaXggbW9kdWxlIG5vdyBoYXMgdGhlIFNUX1JET05MWSBhbmQgU1RfTk9TVUlEIGNvbnN0YW50cywKKyAgZm9yIHVzZSB3aXRoIHRoZSBzdGF0dmZzKCkgZnVuY3Rpb24uICBQYXRjaCBieSBBZGFtIEphY2tzb24uCisKKy0gSXNzdWUgIzg2ODg6IE1BTklGRVNUIGZpbGVzIGNyZWF0ZWQgYnkgZGlzdHV0aWxzIG5vdyBpbmNsdWRlIGEgbWFnaWMgY29tbWVudAorICBpbmRpY2F0aW5nIHRoZXkgYXJlIGdlbmVyYXRlZC4gIE1hbnVhbGx5IG1haW50YWluZWQgTUFOSUZFU1RzIHdpdGhvdXQgdGhpcworICBtYXJrZXIgd2lsbCBub3QgYmUgb3ZlcndyaXR0ZW4gb3IgcmVtb3ZlZC4KKworLSBJc3N1ZSAjNzQ2Nzogd2hlbiByZWFkaW5nIGEgZmlsZSBmcm9tIGEgWklQIGFyY2hpdmUsIGl0cyBDUkMgaXMgY2hlY2tlZCBhbmQgYQorICBCYWRaaXBmaWxlIGVycm9yIGlzIHJhaXNlZCBpZiBpdCBkb2Vzbid0IG1hdGNoIChhcyB1c2VkIHRvIGJlIHRoZSBjYXNlIGluCisgIFB5dGhvbiAyLjUgYW5kIGVhcmxpZXIpLgorCistIElzc3VlICM5NTUwOiBhIEJ1ZmZlcmVkUmVhZGVyIGNvdWxkIGlzc3VlIGFuIGFkZGl0aW9uYWwgcmVhZCB3aGVuIHRoZSBvcmlnaW5hbAorICByZWFkIHJlcXVlc3QgaGFkIGJlZW4gc2F0aXNmaWVkLCB3aGljaCBjb3VsZCBibG9jayBpbmRlZmluaXRlbHkgd2hlbiB0aGUKKyAgdW5kZXJseWluZyByYXcgSU8gY2hhbm5lbCB3YXMgZS5nLiBhIHNvY2tldC4gIFJlcG9ydCBhbmQgb3JpZ2luYWwgcGF0Y2ggYnkKKyAgSmFzb24gVi4gTWlsbGVyLgorCistIElzc3VlICMzNzU3OiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBub3cgc3VwcG9ydCBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0aW9uLgorICBUaHJlYWQtbG9jYWwgb2JqZWN0cyBpbnZvbHZlZCBpbiByZWZlcmVuY2UgY3ljbGVzIHdpbGwgYmUgZGVhbGxvY2F0ZWQgdGltZWx5CisgIGJ5IHRoZSBjeWNsaWMgR0MsIGV2ZW4gaWYgdGhlIHVuZGVybHlpbmcgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcuCisKKy0gSXNzdWUgIzk0NTI6IEFkZCByZWFkX2ZpbGUsIHJlYWRfc3RyaW5nLCBhbmQgcmVhZF9kaWN0IHRvIHRoZSBjb25maWdwYXJzZXIKKyAgQVBJOyBuZXcgc291cmNlIGF0dHJpYnV0ZSB0byBleGNlcHRpb25zLgorCistIElzc3VlICM2MjMxOiBGaXggeG1sLmV0cmVlLkVsZW1lbnRJbmNsdWRlIHRvIGluY2x1ZGUgdGhlIHRhaWwgb2YgdGhlIGN1cnJlbnQKKyAgbm9kZS4KKworLSBJc3N1ZSAjODA0NzogRml4IHRoZSB4bWwuZXRyZWUgc2VyaWFsaXplciB0byByZXR1cm4gYnl0ZXMgYnkgZGVmYXVsdC4gIFVzZQorICBgYGVuY29kaW5nPSJ1bmljb2RlImBgIHRvIGdlbmVyYXRlIGEgVW5pY29kZSBzdHJpbmcuCisKKy0gSXNzdWUgIzgyODA6IHVybGxpYjIncyBSZXF1ZXN0IG1ldGhvZCB3aWxsIHJlbW92ZSBmcmFnbWVudHMgaW4gdGhlIHVybC4gIFRoaXMKKyAgaXMgaG93IGl0IGlzIHN1cHBvc2VkIHRvIHdvcmssIHdnZXQgYW5kIGN1cmwgZG8gdGhlIHNhbWUuICBQcmV2aW91cyBiZWhhdmlvcgorICB3YXMgd3JvbmcuCisKKy0gSXNzdWUgIzY2ODM6IEZvciBTTVRQIGxvZ2lucyB3ZSBub3cgdHJ5IGFsbCBhdXRoZW50aWNhdGlvbiBtZXRob2RzIGFkdmVydGlzZWQKKyAgYnkgdGhlIHNlcnZlci4gIE1hbnkgc2VydmVycyBhcmUgYnVnZ3kgYW5kIGFkdmVydGlzZSBhdXRoZW50aWNhdGlvbiBtZXRob2RzCisgIHRoZXkgZG8gbm90IHN1cHBvcnQgaW4gcmVhbGl0eS4KKworLSBJc3N1ZSAjODgxNDogZnVuY3Rpb24gYW5ub3RhdGlvbnMgKHRoZSBgYF9fYW5ub3RhdGlvbnNfX2BgIGF0dHJpYnV0ZSkgYXJlIG5vdworICBpbmNsdWRlZCBpbiB0aGUgc2V0IG9mIGF0dHJpYnV0ZXMgY29waWVkIGJ5IGRlZmF1bHQgYnkgZnVuY3Rvb2xzLndyYXBzIGFuZAorICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIuICBQYXRjaCBieSBUZXJyZW5jZSBDb2xlLgorCistIElzc3VlICMyOTQ0OiBhc3luY29yZSBkb2Vzbid0IGhhbmRsZSBjb25uZWN0aW9uIHJlZnVzZWQgY29ycmVjdGx5LgorCistIElzc3VlICM0MTg0OiBQcml2YXRlIGF0dHJpYnV0ZXMgb24gc210cGQuU01UUENoYW5uZWwgbWFkZSBwdWJsaWMgYW5kIGRlcHJlY2F0ZQorICB0aGUgcHJpdmF0ZSBhdHRyaWJ1dGVzLiBBZGQgdGVzdHMgZm9yIHNtdHBkIG1vZHVsZS4KKworLSBJc3N1ZSAjMzE5NjogZW1haWwgaGVhZGVyIGRlY29kaW5nIGlzIG5vdyBmb3JnaXZpbmcgaWYgYW4gUkZDMjA0NyBlbmNvZGVkIHdvcmQKKyAgZW5jb2RlZCBpbiBiYXNlNjQgaXMgbGFja2luZyBwYWRkaW5nLgorCistIElzc3VlICM5NDQ0OiBBcmdwYXJzZSBub3cgdXNlcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBwcmVmaXhfY2hhcnMgYXMgdGhlIG9wdGlvbgorICBjaGFyYWN0ZXIgZm9yIHRoZSBhZGRlZCAnaC9oZWxwJyBvcHRpb24gaWYgcHJlZml4X2NoYXJzIGRvZXMgbm90IGNvbnRhaW4gYQorICAnLScsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KKworLSBJc3N1ZSAjNzM3MjogRml4IHBzdGF0cyByZWdyZXNzaW9uIHdoZW4gc3RyaXBwaW5nIHBhdGhzIGZyb20gcHJvZmlsZSBkYXRhCisgIGdlbmVyYXRlZCB3aXRoIHRoZSBwcm9maWxlIG1vZHVsZS4KKworLSBJc3N1ZSAjOTQyODogRml4IHJ1bm5pbmcgc2NyaXB0cyB3aXRoIHRoZSBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgZnJvbSB0aGUKKyAgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM3NzgxOiBGaXggcmVzdHJpY3Rpbmcgc3RhdHMgYnkgZW50cnkgY291bnRzIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUKKyAgYnJvd3Nlci4KKworLSBJc3N1ZSAjOTIwOTogRG8gbm90IGNyYXNoIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3NlciBvbiBpbnZhbGlkIHJlZ3VsYXIKKyAgZXhwcmVzc2lvbnMuCisKKy0gVXBkYXRlIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IHRvIG1hdGNoIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiBQeTIuNyAoYmFzZWQgb24KKyAgbGlzdHMgaW5zdGVhZCBvZiB3ZWFrbHkgcmVmZXJlbmNlZCBMaW5rIG9iamVjdHMpLgorCistIElzc3VlICM4Mzk3OiBSYWlzZSBhbiBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gbWl4IGl0ZXJhdGlvbiBhbmQgcmVndWxhciByZWFkcworICBvbiBhIEJaMkZpbGUgb2JqZWN0LCByYXRoZXIgdGhhbiByZXR1cm5pbmcgaW5jb3JyZWN0IHJlc3VsdHMuCisKKy0gSXNzdWUgIzk0NDg6IEZpeCBhIGxlYWsgb2YgT1MgcmVzb3VyY2VzIChtdXRleGVzIG9yIHNlbWFwaG9yZXMpIHdoZW4KKyAgcmUtaW5pdGlhbGl6aW5nIGEgYnVmZmVyZWQgSU8gb2JqZWN0IGJ5IGNhbGxpbmcgaXRzIGBgX19pbml0X19gYCBtZXRob2QuCisKKy0gSXNzdWUgIzE3MTM6IEZpeCBvcy5wYXRoLmlzbW91bnQoKSwgd2hpY2ggcmV0dXJuZWQgdHJ1ZSBmb3Igc3ltYm9saWMgbGlua3MKKyAgYWNyb3NzIGRldmljZXMuCisKKy0gSXNzdWUgIzg4MjY6IFByb3Blcmx5IGxvYWQgb2xkLXN0eWxlICJleHBpcmVzIiBhdHRyaWJ1dGUgaW4gaHR0cC5jb29raWVzLgorCistIElzc3VlICMxNjkwMTAzOiBGaXggaW5pdGlhbCBuYW1lc3BhY2UgZm9yIGNvZGUgcnVuIHdpdGggdHJhY2UubWFpbigpLgorCistIElzc3VlICM3Mzk1OiBGaXggdHJhY2ViYWNrcyBpbiBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3Nlci4KKworLSBJc3N1ZSAjODIzMDogRml4IExpYi90ZXN0L3NvcnRwZXJmLnB5LgorCistIElzc3VlICM4NjIwOiB3aGVuIGEgY21kLkNtZCgpIGlzIGZlZCBpbnB1dCB0aGF0IHJlYWNoZXMgRU9GIHdpdGhvdXQgYSBmaW5hbAorICBuZXdsaW5lLCBpdCBubyBsb25nZXIgdHJ1bmNhdGVzIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgbGFzdCBjb21tYW5kIGxpbmUuCisKKy0gSXNzdWUgIzUxNDY6IEhhbmRsZSBVSUQgVEhSRUFEIGNvbW1hbmQgY29ycmVjdGx5IGluIGltYXBsaWIuCisKKy0gSXNzdWUgIzUxNDc6IEZpeCB0aGUgaGVhZGVyIGdlbmVyYXRlZCBmb3IgY29va2llIGZpbGVzIHdyaXR0ZW4gYnkKKyAgaHR0cC5jb29raWVqYXIuTW96aWxsYUNvb2tpZUphci4KKworLSBJc3N1ZSAjODE5ODogSW4gcHlkb2MsIG91dHB1dCBhbGwgaGVscCB0ZXh0IHRvIHRoZSBjb3JyZWN0IHN0cmVhbSB3aGVuCisgIHN5cy5zdGRvdXQgaXMgcmVhc3NpZ25lZC4KKworLSBJc3N1ZSAjNzkwOTogRG8gbm90IHRvdWNoIHBhdGhzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4ZXMgYGBcXC5cYGAgb3IgYGBcXD9cYGAKKyAgaW4gbnRwYXRoLm5vcm1wYXRoKCkuCisKKy0gSXNzdWUgIzEyODY6IEFsbG93IHVzaW5nIGZpbGVpbnB1dC5GaWxlSW5wdXQgYXMgYSBjb250ZXh0IG1hbmFnZXIuCisKKy0gQWRkIGxydV9jYWNoZSgpIGRlY29yYXRvciB0byB0aGUgZnVuY3Rvb2xzIG1vZHVsZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gRml4IGBgVG9vbHMvc2NyaXB0cy9jaGVja3B5Yy5weWBgIGFmdGVyIFBFUCAzMTQ3LgorCistIElzc3VlICM4ODY3OiBGaXggYGBUb29scy9zY3JpcHRzL3NlcnZlLnB5YGAgdG8gd29yayB3aXRoIGZpbGVzIGNvbnRhaW5pbmcKKyAgbm9uLUFTQ0lJIGNvbnRlbnQuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM5NjAxOiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBmdHBsaWIucGFyc2UyNTcuCisKKy0gSXNzdWUgIzg4NTc6IFByb3ZpZGUgYSB0ZXN0IGNhc2UgZm9yIHNvY2tldC5nZXRhZGRyaW5mby4KKworLSBJc3N1ZSAjNzU2NDogU2tpcCB0ZXN0X2lvY3RsIGlmIGFub3RoZXIgcHJvY2VzcyBpcyBhdHRhY2hlZCB0byAvZGV2L3R0eS4KKworLSBJc3N1ZSAjODQzMzogRml4IHRlc3RfY3Vyc2VzIGZhaWx1cmUgd2l0aCBuZXdlciB2ZXJzaW9ucyBvZiBuY3Vyc2VzLgorCistIElzc3VlICM5NDk2OiBQcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIHJsY29tcGxldGVyIG1vZHVsZS4gIFBhdGNoIGJ5CisgIE1pY2hlbGUgT3Jyw7kuCisKKy0gSXNzdWUgIzg2ODc6IHByb3ZpZGUgYSB0ZXN0IHN1aXRlIGZvciBzY2hlZC5weSBtb2R1bGUuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxMzAzNDM0OiBHZW5lcmF0ZSBaSVAgZmlsZSBjb250YWluaW5nIGFsbCBQREJzLgorCistIElzc3VlICM5MTkzOiBQRVAgMzE0OSBpcyBhY2NlcHRlZC4KKworLSBJc3N1ZSAjMzEwMTogSGVscGVyIGZ1bmN0aW9ucyBfYWRkX29uZV90b19pbmRleF9DKCkgYW5kIF9hZGRfb25lX3RvX2luZGV4X0YoKQorICBiZWNvbWUgX1B5X2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfUHlfYWRkX29uZV90b19pbmRleF9GKCksIHJlc3BlY3RpdmVseS4KKworLSBJc3N1ZSAjOTcwMDogZGVmaW5lIEhBVkVfQlJPS0VOX1BPU0lYX1NFTUFQSE9SRVMgdW5kZXIgQUlYIDYueC4gIFBhdGNoIGJ5CisgIFPDqWJhc3RpZW4gU2FibMOpLgorCistIERvbid0IHJ1biBwZ2VuIHR3aWNlIHdoZW4gdXNpbmcgbWFrZSAtai4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAwMS1BdWctMjAxMCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzg5OTE6IGNvbnZlcnRidWZmZXIoKSByZWplY3RzIGRpc2NvbnRpZ2lvdXMgYnVmZmVycy4KKworLSBJc3N1ZSAjNzYxNjogRml4IGNvcHlpbmcgb2Ygb3ZlcmxhcHBpbmcgbWVtb3J5dmlldyBzbGljZXMgd2l0aCB0aGUgSW50ZWwKKyAgY29tcGlsZXIuCisKKy0gSXNzdWUgIzg0MTM6IHN0cnVjdHNlcXVlbmNlIG5vdyBzdWJjbGFzc2VzIHR1cGxlLgorCistIElzc3VlICM4MjcxOiBkdXJpbmcgdGhlIGRlY29kaW5nIG9mIGFuIGludmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZSwgb25seSB0aGUKKyAgc3RhcnQgYnl0ZSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlKHMpIGFyZSBub3cgY29uc2lkZXJlZCBpbnZhbGlkLCBpbnN0ZWFkIG9mCisgIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGJ5IHRoZSBzdGFydCBieXRlLiAgRS5nLjoKKyAgJ1x4ZjFceDgwQUInLmRlY29kZSgndXRmLTgnLCAncmVwbGFjZScpIG5vdyByZXR1cm5zIHUnXHVmZmZkQUInIGFuZCByZXBsYWNlcworICB3aXRoIFUrRkZGRCBvbmx5IHRoZSBzdGFydCBieXRlICgnXHhmMScpIGFuZCB0aGUgY29udGludWF0aW9uIGJ5dGUgKCdceDgwJykKKyAgZXZlbiBpZiAnXHhmMScgaXMgdGhlIHN0YXJ0IGJ5dGUgb2YgYSA0LWJ5dGVzIHNlcXVlbmNlLiAgUHJldmlvdXMgdmVyc2lvbnMKKyAgcmV0dXJuZWQgYSBzaW5nbGUgdSdcdWZmZmQnLgorCistIElzc3VlICM5MDExOiBBIG5lZ2F0ZWQgaW1hZ2luYXJ5IGxpdGVyYWwgKGUuZy4sICItN2oiKSBub3cgaGFzIHJlYWwgcGFydCAtMC4wCisgIHJhdGhlciB0aGFuIDAuMC4gIFNvICItN2oiIGlzIG5vdyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gIi0oN2opIi4KKworLSBCZSBtb3JlIHNwZWNpZmljIGluIGVycm9yIG1lc3NhZ2VzIGFib3V0IHBvc2l0aW9uYWwgYXJndW1lbnRzLgorCistIElzc3VlICM4OTQ5OiAieiIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyBkb2Vzbid0IGFjY2VwdCBieXRlcworICBvYmplY3RzLCBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzY1NDM6IFdyaXRlIHRoZSB0cmFjZWJhY2sgaW4gdGhlIHRlcm1pbmFsIGVuY29kaW5nIGluc3RlYWQgb2YgdXRmLTguCisgIEZpeCB0aGUgZW5jb2Rpbmcgb2YgdGhlIG1vZHVsZXMgZmlsZW5hbWUuICBQYXRjaCB3cml0dGVuIGJ5IEFtYXVyeSBGb3JnZW90CisgIGQnQXJjLgorCistIElzc3VlICM5MDExOiBSZW1vdmUgYnVnZ3kgYW5kIHVubmVjZXNzYXJ5IChpbiAzLngpIFNULT5BU1QgY29tcGlsYXRpb24gY29kZQorICBkZWFsaW5nIHdpdGggdW5hcnkgbWludXMgYXBwbGllZCB0byBhIGNvbnN0YW50LiAgVGhlIHJlbW92ZWQgY29kZSB3YXMgbXV0YXRpbmcKKyAgdGhlIFNULCBjYXVzaW5nIGEgc2Vjb25kIGNvbXBpbGF0aW9uIHRvIGZhaWwuCisKKy0gSXNzdWUgIzg1MDk5NzogbWJjcyBlbmNvZGluZyAoV2luZG93cyBvbmx5KSBoYW5kbGVzIGVycm9ycyBhcmd1bWVudDogc3RyaWN0CisgIG1vZGUgcmFpc2VzIHVuaWNvZGUgZXJyb3JzLiAgVGhlIGVuY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgInJlcGxhY2UiCisgIGVycm9yIGhhbmRsZXJzLCB0aGUgZGVjb2RlciBvbmx5IHN1cHBvcnRzICJzdHJpY3QiIGFuZCAiaWdub3JlIiBlcnJvcgorICBoYW5kbGVycy4gIFBhdGNoIHdyaXR0ZW4gYnkgTWFyayBIYW1tb25kLgorCistIElzc3VlICM4ODUwOiBSZW1vdmUgInciIGFuZCAidyMiIGZvcm1hdHMgZnJvbSBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMsIHVzZQorICAidyoiIGZvcm1hdCBpbnN0ZWFkLiBBZGQgdGVzdHMgZm9yICJ3KiIgZm9ybWF0LgorCistIElzc3VlICM4NTkyOiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgcmFpc2UgYSBUeXBlRXJyb3IgZm9yICJ5IiwgInUiIGFuZCAiWiIKKyAgZm9ybWF0cyBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIGEgbnVsbCBieXRlL2NoYXJhY3Rlci4gIFdyaXRlIHVuaXQgdGVzdHMgZm9yCisgIHN0cmluZyBmb3JtYXRzLgorCistIElzc3VlICM3NDkwOiBUbyBmYWNpbGl0YXRlIHNoYXJpbmcgb2YgZG9jdGVzdHMgYmV0d2VlbiAyLnggYW5kIDMueCB0ZXN0CisgIHN1aXRlcywgdGhlIElHTk9SRV9FWENFUFRJT05fREVUQUlMIGRpcmVjdGl2ZSBub3cgYWxzbyBpZ25vcmVzIHRoZSBtb2R1bGUKKyAgbG9jYXRpb24gb2YgdGhlIHJhaXNlZCBleGNlcHRpb24uCisKKy0gSXNzdWUgIzg5Njk6IE9uIFdpbmRvd3MsIHVzZSBtYmNzIGNvZGVjIGluIHN0cmljdCBtb2RlIHRvIGVuY29kZSBhbmQgZGVjb2RlCisgIGZpbGVuYW1lcyBhbmQgZW5hYmxlIG9zLmZzZW5jb2RlKCkuCisKKy0gSXNzdWUgIzkwNTg6IFJlbW92ZSBhc3NlcnRpb25zIGFib3V0IElOVF9NQVggaW4gVW5pY29kZURlY29kZUVycm9yLgorCistIElzc3VlICM4OTQxOiBEZWNvZGluZyBiaWcgZW5kaWFuIFVURi0zMiBkYXRhIGluIFVDUy0yIGJ1aWxkcyBjb3VsZCBjcmFzaCB0aGUKKyAgaW50ZXJwcmV0ZXIgd2l0aCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbCBQbGFuZSAoaGlnaGVyIHRoYW4KKyAgMHgxMDAwMCkuCisKKy0gSXNzdWUgIzg5NTA6IChTZWUgYWxzbyBpc3N1ZSAjNTA4MCkuICBQeV9BcmdQYXJzZSooKSBmdW5jdGlvbnMgbm93IHJhaXNlCisgIFR5cGVFcnJvciBpbnN0ZWFkIG9mIGdpdmluZyBhIERlcHJlY2F0aW9uV2FybmluZyB3aGVuIGEgZmxvYXQgaXMgcGFyc2VkIHVzaW5nCisgIHRoZSAnTCcgY29kZSAoZm9yIGxvbmcgbG9uZykuICAoQWxsIG90aGVyIGludGVnZXIgY29kZXMgYWxyZWFkeSByYWlzZQorICBUeXBlRXJyb3IgaW4gdGhpcyBjYXNlLikKKworLSBJc3N1ZSAjODkyMjogTm9ybWFsaXplIHRoZSBlbmNvZGluZyBuYW1lIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSB0bworICBlbmFibGUgc2hvcnRjdXRzIGZvciB1cHBlciBjYXNlIGVuY29kaW5nIG5hbWUuIEFkZCBhbHNvIGEgc2hvcnRjdXQgZm9yCisgICJpc28tODg1OS0xIiBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgYW5kIFB5VW5pY29kZV9EZWNvZGUoKS4KKworLSBJc3N1ZSAjODgzODogUmVtb3ZlIGNvZGVjcy5jaGFyYnVmZmVyX2VuY29kZSgpIGZ1bmN0aW9uLiAgVGhlIGJ1ZmZlciBwcm90b2NvbAorICBkb2Vzbid0IHN1cHBvcnQgImNoYXIgYnVmZmVyIiBhbnltb3JlIGluIFB5dGhvbiAzLgorCistIElzc3VlICM4MzM5OiBSZW1vdmUgInQjIiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UgInMjIiBvciAicyoiCisgIGluc3RlYWQuICBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBub3cgYWNjZXB0cyBtb2RpZmlhYmxlIGJ1ZmZlciBvYmplY3RzCisgIGxpa2UgYnl0ZWFycmF5LgorCistIElzc3VlICM4ODM3OiBSZW1vdmUgIk8/IiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLiAgVGhlIGZvcm1hdCBpcyBubworICB1c2VkIGFueW1vcmUgYW5kIGl0IHdhcyBuZXZlciBkb2N1bWVudGVkLgorCistIEluIHN0ci5mb3JtYXQoKSwgcmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gaW5kZXhlcyB0byBhcmd1bWVudHMgYXJlIHRvbyBsYXJnZS4KKworLSBJc3N1ZSAjMjg0NDogTWFrZSBpbnQoJzQyJywgbikgY29uc2lzdGVudGx5IHJhaXNlIFZhbHVlRXJyb3IgZm9yIGludmFsaWQKKyAgaW50ZWdlcnMgbiAoaW5jbHVkaW5nIG4gPSAtOTA5KS4KKworLSBJc3N1ZSAjODE4ODogSW50cm9kdWNlIGEgbmV3IHNjaGVtZSBmb3IgY29tcHV0aW5nIGhhc2hlcyBvZiBudW1iZXJzIChpbnN0YW5jZXMKKyAgb2YgaW50LCBmbG9hdCwgY29tcGxleCwgZGVjaW1hbC5EZWNpbWFsIGFuZCBmcmFjdGlvbnMuRnJhY3Rpb24pIHRoYXQgbWFrZXMgaXQKKyAgZWFzeSB0byBtYWludGFpbiB0aGUgaW52YXJpYW50IHRoYXQgaGFzaCh4KSA9PSBoYXNoKHkpIHdoZW5ldmVyIHggYW5kIHkgaGF2ZQorICBlcXVhbCB2YWx1ZS4KKworLSBJc3N1ZSAjODc0ODogRml4IHR3byBpc3N1ZXMgd2l0aCBjb21wYXJpc29ucyBiZXR3ZWVuIGNvbXBsZXggYW5kIGludGVnZXIKKyAgb2JqZWN0cy4gICgxKSBUaGUgY29tcGFyaXNvbiBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gVHJ1ZSBpbiBzb21lIGNhc2VzCisgICgyKio1MysxID09IGNvbXBsZXgoMioqNTMpID09IDIqKjUzKSwgYnJlYWtpbmcgdHJhbnNpdGl2aXR5IG9mIGVxdWFsaXR5LgorICAoMikgVGhlIGNvbXBhcmlzb24gcmFpc2VkIGFuIE92ZXJmbG93RXJyb3IgZm9yIGxhcmdlIGludGVnZXJzLCBsZWFkaW5nIHRvCisgIHVucHJlZGljdGFibGUgZXhjZXB0aW9ucyB3aGVuIGNvbWJpbmluZyBpbnRlZ2VycyBhbmQgY29tcGxleCBvYmplY3RzIGluIHNldHMKKyAgb3IgZGljdHMuCisKKy0gSXNzdWUgIzg3NjY6IEluaXRpYWxpemUgX3dhcm5pbmdzIG1vZHVsZSBiZWZvcmUgaW1wb3J0aW5nIHRoZSBmaXJzdCBtb2R1bGUuCisgIEZpeCBhIGNyYXNoIGlmIGFuIGVtcHR5IGRpcmVjdG9yeSBjYWxsZWQgImVuY29kaW5ncyIgZXhpc3RzIGluIHN5cy5wYXRoLgorCistIElzc3VlICM4NTg5OiBEZWNvZGUgUFlUSE9OV0FSTklOR1MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCB0aGUgZmlsZSBzeXN0ZW0KKyAgZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyIGluc3RlYWQgb2YgdGhlIGxvY2FsZSBlbmNvZGluZyB0bworICBiZSBjb25zaXN0ZW50IHdpdGggb3MuZW52aXJvbi4gIEFkZCBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZSgpIGZ1bmN0aW9uLgorCistIFB5T2JqZWN0X0R1bXAoKSBlbmNvZGVzIHVuaWNvZGUgb2JqZWN0cyB0byB1dGY4IHdpdGggYmFja3NsYXNocmVwbGFjZSAoaW5zdGVhZAorICBvZiBzdHJpY3QpIGVycm9yIGhhbmRsZXIgdG8gZXNjYXBlIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzg3MTU6IENyZWF0ZSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KCkgZnVuY3Rpb246IEVuY29kZSBhIFVuaWNvZGUKKyAgb2JqZWN0IHRvIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmcgd2l0aCB0aGUgInN1cnJvZ2F0ZWVzY2FwZSIgZXJyb3IKKyAgaGFuZGxlciwgYW5kIHJldHVybiBieXRlcy4gIElmIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXMgbm90IHNldCwgZmFsbAorICBiYWNrIHRvIFVURi04LgorCistIEVuYWJsZSBzaG9ydGN1dHMgZm9yIGNvbW1vbiBlbmNvZGluZ3MgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGZvciBhbnkKKyAgZXJyb3IgaGFuZGxlciwgbm90IG9ubHkgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlciAoc3RyaWN0KS4KKworLSBJc3N1ZSAjODYxMDogTG9hZCBmaWxlIHN5c3RlbSBjb2RlYyBhdCBzdGFydHVwLCBhbmQgZGlzcGxheSBhIGZhdGFsIGVycm9yIG9uCisgIGZhaWx1cmUuICBTZXQgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nIHRvIHV0Zi04IChpbnN0ZWFkIG9mIE5vbmUpIGlmIGdldHRpbmcKKyAgdGhlIGxvY2FsZSBlbmNvZGluZyBmYWlsZWQsIG9yIGlmIG5sX2xhbmdpbmZvKENPREVTRVQpIGZ1bmN0aW9uIGlzIG1pc3NpbmcuCisKKy0gUHlGaWxlX0Zyb21GZCgpIHVzZXMgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCgpIGluc3RlYWQgb2YKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmcoKSB0byBzdXBwb3J0IHN1cnJvZ2F0ZXMgaW4gdGhlIGZpbGVuYW1lIGFuZCB1c2UgdGhlIHJpZ2h0CisgIGVuY29kaW5nLgorCistIElzc3VlICM3NTA3OiBRdW90ZSAiISIgaW4gcGlwZXMucXVvdGUoKTsgaXQgaXMgc3BlY2lhbCB0byBzb21lIHNoZWxscy4KKworLSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZSgpIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuCisKKy0gSXNzdWUgIzg0MTk6IFByZXZlbnQgdGhlIGRpY3QgY29uc3RydWN0b3IgZnJvbSBhY2NlcHRpbmcgbm9uLXN0cmluZyBrZXl3b3JkCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjODEyNDogUHlTeXNfV3JpdGVTdGRvdXQoKSBhbmQgUHlTeXNfV3JpdGVTdGRlcnIoKSBkb24ndCBleGVjdXRlCisgIGluZGlyZWN0bHkgUHl0aG9uIHNpZ25hbCBoYW5kbGVycyBhbnltb3JlIGJlY2F1c2UgbXl3cml0ZSgpIGlnbm9yZXMgZXhjZXB0aW9ucworICAoS2V5Ym9hcmRJbnRlcnJ1cHQpLgorCistIElzc3VlICM4MDkyOiBGaXggUHlVbmljb2RlX0VuY29kZVVURjgoKSB0byBzdXBwb3J0IGVycm9yIGhhbmRsZXIgcHJvZHVjaW5nCisgIHVuaWNvZGUgc3RyaW5nIChlZy4gYmFja3NsYXNocmVwbGFjZSkuCisKKy0gSXNzdWUgIzg0ODU6IFB5VW5pY29kZV9GU0NvbnZlcnRlcigpIGRvZXNuJ3QgYWNjZXB0IGJ5dGVlYXJyYXkgb2JqZWN0cworICBhbnltb3JlLCB5b3UgaGF2ZSB0byBjb252ZXJ0IHlvdXIgYnl0ZWFycmF5IGZpbGVuYW1lcyB0byBieXRlcy4KKworLSBJc3N1ZSAjNzMzMjogUmVtb3ZlIHRoZSAxNktCIHN0YWNrLWJhc2VkIGJ1ZmZlciBpbgorICBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZSwgd2hpY2ggZG9lc24ndCBicmluZyBhbnkgbm90aWNlYWJsZSBiZW5lZml0CisgIGNvbXBhcmVkIHRvIHRoZSBkeW5hbWljIG1lbW9yeSBhbGxvY2F0aW9uIGZhbGxiYWNrLiAgUGF0Y2ggYnkgQ2hhcmxlcy1GcmFuw6dvaXMKKyAgTmF0YWxpLgorCistIElzc3VlICM4NDE3OiBSYWlzZSBhbiBPdmVyZmxvd0Vycm9yIHdoZW4gYW4gaW50ZWdlciBsYXJnZXIgdGhhbiBzeXMubWF4c2l6ZSBpcworICBwYXNzZWQgdG8gYnl0ZXMgb3IgYnl0ZWFycmF5LgorCistIElzc3VlICM3MzAxOiBBZGQgZW52aXJvbm1lbnQgdmFyaWFibGUgJFBZVEhPTldBUk5JTkdTLgorCistIElzc3VlICM4MzI5OiBEb24ndCByZXR1cm4gdGhlIHNhbWUgbGlzdHMgZnJvbSBzZWxlY3Quc2VsZWN0IHdoZW4gbm8gZmRzIGFyZQorICBjaGFuZ2VkLgorCistIElzc3VlICM4MjU5OiAxTCA8PCAoMioqMzEpIG5vIGxvbmdlciBwcm9kdWNlcyBhbiAnb3V0cmFnZW91cyBzaGlmdCBlcnJvcicgb24KKyAgNjQtYml0IG1hY2hpbmVzLiAgVGhlIHNoaWZ0IGNvdW50IGZvciBlaXRoZXIgbGVmdCBvciByaWdodCBzaGlmdCBpcyBwZXJtaXR0ZWQKKyAgdG8gYmUgdXAgdG8gc3lzLm1heHNpemUuCisKKy0gRW5zdXJlIHRoYXQgdG9rZW5pemF0aW9uIG9mIGlkZW50aWZpZXJzIGlzIG5vdCBhZmZlY3RlZCBieSBsb2NhbGUuCisKKy0gSXNzdWUgIzEyMjI1ODU6IEFkZGVkIExEQ1hYU0hBUkVEIGZvciBDKysgc3VwcG9ydC4gUGF0Y2ggYnkgQXJmcmV2ZXIuCisKKy0gUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgVF9TVFJJTkdfSU5QTEFDRSBzdHJ1Y3QgbWVtYmVyLgorCistIElzc3VlICM4MjExOiBTYXZlL3Jlc3RvcmUgQ0ZMQUdTIGFyb3VuZCBBQ19QUk9HX0NDIGluIGNvbmZpZ3VyZS5pbiwgaW4gY2FzZSBpdAorICBpcyBzZXQuCisKKy0gSXNzdWUgIzgyMjY6IHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSByYWlzZXMgYSBMb29rdXBFcnJvciBpZiB0aGUgZW5jb2RpbmcKKyAgaXMgdW5rbm93bi4KKworLSBJc3N1ZSAjMTU4Mzg2MzogQSBzdHIgc3ViY2xhc3MgY2FuIG5vdyBvdmVycmlkZSB0aGUgX19zdHJfXyBtZXRob2QuCisKKy0gSXNzdWUgIzgwMTQ6IFNldHRpbmcgYSBUX1VJTlQgb3IgVF9QWVNTSVpFVCBhdHRyaWJ1dGUgb2YgYW4gb2JqZWN0IHdpdGgKKyAgUHlNZW1iZXJEZWZzIGNvdWxkIHByb2R1Y2UgYW4gaW50ZXJuYWwgZXJyb3I7IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkLgorCistIElzc3VlICM3ODQ1OiBSaWNoIGNvbXBhcmlzb24gbWV0aG9kcyBvbiB0aGUgY29tcGxleCB0eXBlIG5vdyByZXR1cm4KKyAgTm90SW1wbGVtZW50ZWQgcmF0aGVyIHRoYW4gcmFpc2luZyBhIFR5cGVFcnJvciB3aGVuIGNvbXBhcmluZyB3aXRoIGFuCisgIGluY29tcGF0aWJsZSB0eXBlOyB0aGlzIGFsbG93cyB1c2VyLWRlZmluZWQgY2xhc3NlcyB0byBpbXBsZW1lbnQgdGhlaXIgb3duCisgIGNvbXBhcmlzb25zIHdpdGggY29tcGxleC4KKworLSBJc3N1ZSAjMzEzNzogRG9uJ3QgaWdub3JlIGVycm9ycyBhdCBzdGFydHVwLCBlc3BlY2lhbGx5IGEga2V5Ym9hcmQgaW50ZXJydXB0CisgIChTSUdJTlQpLiBJZiBhbiBlcnJvciBvY2N1cnMgd2hpbGUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZSwgdGhlIGVycm9yIGlzCisgIHByaW50ZWQgYW5kIFB5dGhvbiBleGl0cy4gSW5pdGlhbGl6ZSB0aGUgR0lMIGJlZm9yZSBpbXBvcnRpbmcgdGhlIHNpdGUgbW9kdWxlLgorCistIElzc3VlICM3MTczOiBHZW5lcmF0b3IgZmluYWxpemF0aW9uIGNvdWxkIGludmFsaWRhdGUgc3lzLmV4Y19pbmZvKCkuCisKKy0gSXNzdWUgIzc1NDQ6IFByZWFsbG9jYXRlIHRocmVhZCBtZW1vcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSB0aHJlYWQgdG8gYXZvaWQgYQorICBmYXRhbCBlcnJvciBpbiBsb3cgbWVtb3J5IGNvbmRpdGlvbi4KKworLSBJc3N1ZSAjNzgyMDogVGhlIHBhcnNlciB0b2tlbml6ZXIgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBpZiB0aGUgQk9NCisgIGNoZWNrIGZhaWxzLgorCistIEhhbmRsZSBlcnJvcnMgZnJvbSBsb29raW5nIHVwIF9fcHJlcGFyZV9fIGNvcnJlY3RseS4KKworLSBJc3N1ZSAjNTkzOTogQWRkIGFkZGl0aW9uYWwgcnVudGltZSBjaGVja2luZyB0byBlbnN1cmUgYSB2YWxpZCBjYXBzdWxlIGluCisgIE1vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jLgorCistIElzc3VlICM3MzA5OiBGaXggdW5jaGVja2VkIGF0dHJpYnV0ZSBhY2Nlc3Mgd2hlbiBjb252ZXJ0aW5nCisgIFVuaWNvZGVFbmNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yLCBhbmQgVW5pY29kZVRyYW5zbGF0ZUVycm9yIHRvIHN0cmluZ3MuCisKKy0gSXNzdWUgIzY5MDI6IEZpeCBwcm9ibGVtIHdpdGggYnVpbHQtaW4gdHlwZXMgZm9ybWF0IGluY29ycmVjdGx5IHdpdGggMAorICBwYWRkaW5nLgorCistIElzc3VlICM3OTg4OiBGaXggZGVmYXVsdCBhbGlnbm1lbnQgdG8gYmUgcmlnaHQgYWxpZ25lZCBmb3IgY29tcGxleC5fX2Zvcm1hdF9fLgorICBOb3cgaXQgbWF0Y2hlcyBvdGhlciBudW1lcmljIHR5cGVzLgorCistIElzc3VlICM1OTg4OiBSZW1vdmUgZGVwcmVjYXRlZCBmdW5jdGlvbnMgUHlPU19hc2NpaV9mb3JtYXRkLAorICBQeU9TX2FzY2lpX3N0cnRvZCwgYW5kIFB5T1NfYXNjaWlfYXRvZi4gIFVzZSBQeU9TX2RvdWJsZV90b19zdHJpbmcgYW5kCisgIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZSBpbnN0ZWFkLiAgU2VlIGlzc3VlICM1ODM1IGZvciB0aGUgb3JpZ2luYWwgZGVwcmVjYXRpb25zLgorCistIElzc3VlICM3Mzg1OiBGaXggYSBjcmFzaCBpbiBgTWVtb3J5Vmlld19Gcm9tT2JqZWN0YCB3aGVuIGBQeU9iamVjdF9HZXRCdWZmZXJgCisgIGZhaWxzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgorCistIElzc3VlICM3Nzg4OiBGaXggYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggcHJvZHVjZWQgYnkgZGVsZXRpbmcgYSBsaXN0IHNsaWNlIHdpdGgKKyAgdmVyeSBsYXJnZSBzdGVwIHZhbHVlLgorCistIElzc3VlICM3NzY2OiBDaGFuZ2Ugc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkgcmV0dXJuIHZhbHVlIHRvIGEgbmFtZWQgdHVwbGUgYW5kCisgIGFkZCB0aGUgYWRkaXRpb25hbCBtZW1iZXJzIHJldHVybmVkIGluIGFuIE9TVkVSU0lPTklORk9FWCBzdHJ1Y3R1cmUuICBUaGUgbmV3CisgIG1lbWJlcnMgYXJlIHNlcnZpY2VfcGFja19tYWpvciwgc2VydmljZV9wYWNrX21pbm9yLCBzdWl0ZV9tYXNrLCBhbmQKKyAgcHJvZHVjdF90eXBlLgorCistIElzc3VlICM3NTYxOiBPcGVyYXRpb25zIG9uIGVtcHR5IGJ5dGVhcnJheXMgKHN1Y2ggYXMgYGludChieXRlYXJyYXkoKSlgKSBjb3VsZAorICBjcmFzaCBpbiBtYW55IHBsYWNlcyBiZWNhdXNlIG9mIHRoZSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoKSBtYWNybyByZXR1cm5pbmcKKyAgTlVMTC4gIFRoZSBtYWNybyBub3cgcmV0dXJucyBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGVtcHR5IHN0cmluZyBpbnN0ZWFkLgorCistIElzc3VlICM2NjkwOiBPcHRpbWl6ZSB0aGUgYnl0ZWNvZGUgZm9yIGV4cHJlc3Npb25zIHN1Y2ggYXMgYHggaW4gezEsIDIsIDN9YCwKKyAgd2hlcmUgdGhlIHJpZ2h0IGhhbmQgb3BlcmFuZCBpcyBhIHNldCBvZiBjb25zdGFudHMsIGJ5IHR1cm5pbmcgdGhlIHNldCBpbnRvIGEKKyAgZnJvemVuc2V0IGFuZCBwcmUtYnVpbGRpbmcgaXQgYXMgYSBjb25zdGFudC4gIFRoZSBjb21wYXJpc29uIG9wZXJhdGlvbiBpcyBtYWRlCisgIGFnYWluc3QgdGhlIGNvbnN0YW50IGluc3RlYWQgb2YgYnVpbGRpbmcgYSBuZXcgc2V0IGVhY2ggdGltZSBpdCBpcyBleGVjdXRlZCAoYQorICBzaW1pbGFyIG9wdGltaXphdGlvbiBhbHJlYWR5IGV4aXN0ZWQgd2hpY2ggdHVybmVkIGEgbGlzdCBvZiBjb25zdGFudHMgaW50byBhCisgIHByZS1idWlsdCB0dXBsZSkuICBQYXRjaCBhbmQgYWRkaXRpb25hbCB0ZXN0cyBieSBEYXZlIE1hbGNvbG0uCisKKy0gSXNzdWUgIzc2MjI6IEltcHJvdmUgdGhlIHNwbGl0KCksIHJzcGxpdCgpLCBzcGxpdGxpbmVzKCkgYW5kIHJlcGxhY2UoKSBtZXRob2RzCisgIG9mIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHVuaWNvZGUgb2JqZWN0cyBieSB1c2luZyBhIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBiYXNlZAorICBvbiBzdHJpbmdsaWIncyBmYXN0IHNlYXJjaC4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLSBJc3N1ZSAjNzYzMjogRml4IHZhcmlvdXMgc3RyIC0+IGZsb2F0IGNvbnZlcnNpb24gYnVncyBwcmVzZW50IGluIDIuNyBhbHBoYSAyLAorICBpbmNsdWRpbmc6ICgxKSBhIHNlcmlvdXMgJ3dyb25nIG91dHB1dCcgYnVnIHRoYXQgY291bGQgb2NjdXIgZm9yIGxvbmcgKD4gNDAKKyAgZGlnaXQpIGlucHV0IHN0cmluZ3MsICgyKSBhIGNyYXNoIGluIGR0b2EuYyB0aGF0IG9jY3VycmVkIGluIGRlYnVnIGJ1aWxkcyB3aGVuCisgIHBhcnNpbmcgY2VydGFpbiBsb25nIG51bWVyaWMgc3RyaW5ncyBjb3JyZXNwb25kaW5nIHRvIHN1Ym5vcm1hbCB2YWx1ZXMsICgzKSBhCisgIG1lbW9yeSBsZWFrIGZvciBzb21lIHZhbHVlcyBsYXJnZSBlbm91Z2ggdG8gY2F1c2Ugb3ZlcmZsb3csIGFuZCAoNCkgYSBudW1iZXIKKyAgb2YgZmxhd3MgdGhhdCBjb3VsZCBsZWFkIHRvIGluY29ycmVjdGx5IHJvdW5kZWQgcmVzdWx0cy4KKworLSBUaGUgX19jb21wbGV4X18gbWV0aG9kIGlzIG5vdyBsb29rZWQgdXAgb24gdGhlIGNsYXNzIG9mIGluc3RhbmNlcyB0byBtYWtlIGl0CisgIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBzcGVjaWFsIG1ldGhvZHMuCisKKy0gSXNzdWUgIzc0NjI6IEltcGxlbWVudCB0aGUgc3RyaW5nbGliIGZhc3Qgc2VhcmNoIGFsZ29yaXRobSBmb3IgdGhlIGByZmluZGAsCisgIGByaW5kZXhgLCBgcnNwbGl0YCBhbmQgYHJwYXJ0aXRpb25gIG1ldGhvZHMuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzc2MDQ6IERlbGV0aW5nIGFuIHVuc2V0IHNsb3R0ZWQgYXR0cmlidXRlIGRpZCBub3QgcmFpc2UgYW4KKyAgQXR0cmlidXRlRXJyb3IuCisKKy0gSXNzdWUgIzc1MzQ6IEZpeCBoYW5kbGluZyBvZiBJRUVFIHNwZWNpYWxzIChpbmZpbml0aWVzLCBuYW5zLCBuZWdhdGl2ZSB6ZXJvKQorICBpbiAqKiBvcGVyYXRvci4gIFRoZSBiZWhhdmlvdXIgbm93IGNvbmZvcm1zIHRvIHRoYXQgZGVzY3JpYmVkIGluIEM5OSBBbm5leCBGLgorCistIElzc3VlICMxODExOiBpbXByb3ZlIGFjY3VyYWN5IGFuZCBjcm9zcy1wbGF0Zm9ybSBjb25zaXN0ZW5jeSBmb3IgdHJ1ZSBkaXZpc2lvbgorICBvZiBpbnRlZ2VyczogdGhlIHJlc3VsdCBvZiBhL2IgaXMgbm93IGNvcnJlY3RseSByb3VuZGVkIGZvciBpbnRzIGEgYW5kIGIgKGF0CisgIGxlYXN0IG9uIElFRUUgNzU0IHBsYXRmb3JtcyksIGFuZCBpbiBwYXJ0aWN1bGFyIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUKKyAgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50LgorCistIElzc3VlICM2ODM0OiByZXBsYWNlIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICdweXRob24nIGFuZCAncHl0aG9udycKKyAgZXhlY3V0YWJsZXMgb24gT1NYLgorCisgIFRoZXNlIGV4ZWN1dGFibGVzIG5vdyB3b3JrIHByb3Blcmx5IHdpdGggdGhlIGFyY2goMSkgY29tbWFuZDogYGBhcmNoIC1wcGMKKyAgcHl0aG9uYGAgd2lsbCBzdGFydCBhIHVuaXZlcnNhbCBiaW5hcnkgdmVyc2lvbiBvZiBweXRob24gaW4gUFBDIG1vZGUgKHVubGlrZQorICBwcmV2aW91cyByZWxlYXNlcykuCisKKy0gSXNzdWUgIzc0NjY6IFNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpcyBjYWxsZWQgaW4gdGhlCisgIG1pZGRsZSBvZiBwb3B1bGF0aW5nIGEgdHVwbGUuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCisKKy0gSXNzdWUgIzc0MTk6IHNldGxvY2FsZSgpIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciBvbiBXaW5kb3dzIHdoZW4gY2FsbGVkCisgIHdpdGggaW52YWxpZCB2YWx1ZXMuCisKKy0gSXNzdWUgIzYwNzc6IE9uIFdpbmRvd3MsIGZpbGVzIG9wZW5lZCB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeUZpbGUgaW4gInd0KyIKKyAgbW9kZSB3b3VsZCBhcHBlYXIgdHJ1bmNhdGVkIG9uIHRoZSBmaXJzdCAnMHgxYScgYnl0ZSAoYWthLiBDdHJsK1opLgorCistIElzc3VlICM3MDg1OiBGaXggY3Jhc2ggd2hlbiBpbXBvcnRpbmcgc29tZSBleHRlbnNpb25zIGluIGEgdGhyZWFkIG9uIE1hY09TWAorICAxMC42LgorCistIElzc3VlICMxNzU3MTI2OiBGaXggdGhlIGN5cmlsbGljLWFzaWFuIGFsaWFzIGZvciB0aGUgcHRjcDE1NCBlbmNvZGluZy4KKworLSBJc3N1ZSAjNjk3MDogUmVtb3ZlIHJlZHVuZGFudCBjYWxscyB3aGVuIGNvbXBhcmluZyBvYmplY3RzIHRoYXQgZG9uJ3QKKyAgaW1wbGVtZW50IHRoZSByZWxldmFudCByaWNoIGNvbXBhcmlzb24gbWV0aG9kcy4KKworLSBJc3N1ZSAjNzI5ODogRml4ZXMgZm9yIHJhbmdlIGFuZCByZXZlcnNlZChyYW5nZSguLi4pKS4gIEl0ZXJhdGlvbiBvdmVyCisgIHJhbmdlKGEsIGIsIGMpIGluY29ycmVjdGx5IGdhdmUgYW4gZW1wdHkgaXRlcmF0b3Igd2hlbiBhLCBiIGFuZCBjIGZpdCBpbiBDCisgIGxvbmcgYnV0IHRoZSBsZW5ndGggb2YgdGhlIHJhbmdlIGRpZCBub3QuICBBbHNvIGZpeCBzZXZlcmFsIGNhc2VzIHdoZXJlCisgIHJldmVyc2VkKHJhbmdlKGEsIGIsIGMpKSBnYXZlIHdyb25nIHJlc3VsdHMsIGFuZCBmaXggYSByZWZsZWFrIGZvcgorICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgd2l0aCBsYXJnZSBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzcyNDQ6IGl0ZXJ0b29scy5pemlwX2xvbmdlc3QoKSBubyBsb25nZXIgaWdub3JlcyBleGNlcHRpb25zIHJhaXNlZAorICBkdXJpbmcgdGhlIGZvcm1hdGlvbiBvZiBhbiBvdXRwdXQgdHVwbGUuCisKKy0gSXNzdWUgIzMyOTc6IE9uIHdpZGUgdW5pY29kZSBidWlsZHMsIGRvIG5vdCBzcGxpdCB1bmljb2RlIGNoYXJhY3RlcnMgaW50bworICBzdXJyb2dhdGVzLgorCistIFJlbW92ZSBsZW5ndGggbGltaXRhdGlvbiB3aGVuIGNvbnN0cnVjdGluZyBhIGNvbXBsZXggbnVtYmVyIGZyb20gYSBzdHJpbmcuCisKKy0gSXNzdWUgIzEwODc0MTg6IEJvb3N0IHBlcmZvcm1hbmNlIG9mIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3IgbG9uZ3MuCisKKy0gU3VwcG9ydCBmb3IgQXRoZU9TIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVtb3ZlZCBmcm9tIHRoZSBjb2RlIGJhc2UuIEl0IHdhcworICBkaXNhYmxlZCBzaW5jZSBQeXRob24gMy4wLgorCistIFN1cHBvcnQgZm9yIHNldmVyYWwgbGVnYWN5IHRocmVhZGluZyBsaWJyYXJpZXMgaGFzIGJlZW4gZGlzYWJsZWQuIFRoZXNlCisgIGxpYnJhcmllcyBhcmU6IE1hY2ggQyB0aHJlYWRzLCBTdW5PUyBMV1AsIEdOVSBwdGgsIElyaXggdGhyZWFkcy4gU3VwcG9ydCBjb2RlCisgIHdpbGwgYmUgZW50aXJlbHkgcmVtb3ZlZCBpbiAzLjMuCisKKy0gU3VwcG9ydCBmb3IgT1NGKiBoYXMgYmVlbiBkaXNhYmxlZC4gSWYgbm9ib2R5IHN0YW5kcyB1cCwgc3VwcG9ydCB3aWxsIGJlCisgIHJlbW92ZWQgaW4gMy4zLiBTZWUgPGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NjA2Pi4KKworLSBQZWVwaG9sZSBjb25zdGFudCBmb2xkaW5nIGhhZCBtaXNzZWQgVU5BUllfUE9TSVRJVkUuCisKKy0gSXNzdWUgIzE3MjIzNDQ6IHRocmVhZGluZy5fc2h1dGRvd24oKSBpcyBub3cgY2FsbGVkIGluIFB5X0ZpbmFsaXplKCksIHdoaWNoCisgIGZpeGVzIHRoZSBwcm9ibGVtIG9mIHNvbWUgZXhjZXB0aW9ucyBiZWluZyB0aHJvd24gYXQgc2h1dGRvd24gd2hlbiB0aGUKKyAgaW50ZXJwcmV0ZXIgaXMga2lsbGVkLiBQYXRjaCBieSBBZGFtIE9sc2VuLgorCistIElzc3VlICM3MTQ3OiBSZW1vdmUgc3VwcG9ydCBmb3IgY29tcGlsaW5nIFB5dGhvbiB3aXRob3V0IGNvbXBsZXggbnVtYmVyCisgIHN1cHBvcnQuCisKKy0gSXNzdWUgIzcxMjA6IGxvZ2dpbmc6IFJlbW92ZWQgaW1wb3J0IG9mIG11bHRpcHJvY2Vzc2luZyB3aGljaCBpcyBjYXVzaW5nIGNyYXNoCisgIGluIEdBRS4KKworLSBJc3N1ZSAjMTc1NDA5NDogSW1wcm92ZSB0aGUgc3RhY2sgZGVwdGggY2FsY3VsYXRpb24gaW4gdGhlIGNvbXBpbGVyLiAgVGhlcmUKKyAgc2hvdWxkIGJlIG5vIG90aGVyIGVmZmVjdCB0aGFuIGEgc21hbGwgZGVjcmVhc2UgaW4gbWVtb3J5IHVzZS4gIFBhdGNoIGJ5CisgIENocmlzdG9waGVyIFR1ciBMZXNuaWV3c2tpLUxhYXMuCisKKy0gSXNzdWUgIzcwNjU6IEZpeCBhIGNyYXNoIGluIGJ5dGVzLm1ha2V0cmFucyBhbmQgYnl0ZWFycmF5Lm1ha2V0cmFucyB3aGVuIHVzaW5nCisgIGJ5dGUgdmFsdWVzIGdyZWF0ZXIgdGhhbiAxMjcuICBQYXRjaCBieSBEZXJrIERydWtrZXIuCisKKy0gSXNzdWUgIzE1NzExODQ6IFRoZSBVbmljb2RlIGRhdGFiYXNlIGNvbnRhaW5zIHByb3BlcnRpZXMgZm9yIG1vcmUgY2hhcmFjdGVycy4KKyAgVGhlIHRhYmxlcyBmb3IgY29kZSBwb2ludHMgcmVwcmVzZW50aW5nIG51bWVyaWMgdmFsdWVzLCB3aGl0ZSBzcGFjZXMgb3IgbGluZQorICBicmVha3MgYXJlIG5vdyBnZW5lcmF0ZWQgZnJvbSB0aGUgb2ZmaWNpYWwgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgZmlsZXMsCisgIGFuZCBpbmNsdWRlIGluZm9ybWF0aW9uIGZyb20gdGhlIFVuaWhhbi50eHQgZmlsZS4KKworLSBJc3N1ZSAjNzAxOTogUmFpc2UgVmFsdWVFcnJvciB3aGVuIHVubWFyc2hhbGxpbmcgYmFkIGxvbmcgZGF0YSwgaW5zdGVhZCBvZgorICBwcm9kdWNpbmcgaW50ZXJuYWxseSBpbmNvbnNpc3RlbnQgUHl0aG9uIGxvbmdzLgorCistIElzc3VlICM2OTkwOiBGaXggdGhyZWFkaW5nLmxvY2FsIHN1YmNsYXNzZXMgbGVhdmluZyBvbGQgc3RhdGUgYXJvdW5kIGFmdGVyIGEKKyAgcmVmZXJlbmNlIGN5Y2xlIEdDIHdoaWNoIGNvdWxkIGJlIHJlY3ljbGVkIGJ5IG5ldyBsb2NhbHMuCisKKy0gSXNzdWUgIzU0NjA6IEZpeCBhbiBhbWJpZ3VpdHkgaW4gdGhlIGdyYW1tYXIuCisKKy0gSXNzdWUgIzE3NjYzMDQ6IEltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgbWVtYmVyc2hpcCB0ZXN0cyBvbiByYW5nZSBvYmplY3RzLgorCistIElzc3VlICM2NzEzOiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIGludGVnZXIgLT4gc3RyaW5nIGNvbnZlcnNpb25zLgorCistIElzc3VlICM2ODQ2OiBGaXggYnVnIHdoZXJlIGJ5dGVhcnJheS5wb3AoKSByZXR1cm5zIG5lZ2F0aXZlIGludGVnZXJzLgorCistIElzc3VlICM2NzUwOiBBIHRleHQgZmlsZSBvcGVuZWQgd2l0aCBpby5vcGVuKCkgY291bGQgZHVwbGljYXRlIGl0cyBvdXRwdXQgd2hlbgorICB3cml0aW5nIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhdCB0aGUgc2FtZSB0aW1lLgorCistIElzc3VlICM2NzA3OiBkaXIoKSBvbiBhbiB1bmluaXRpYWxpemVkIG1vZHVsZSBjYXVzZWQgYSBjcmFzaC4KKworLSBJc3N1ZSAjNjU0MDogRml4ZWQgY3Jhc2ggZm9yIGJ5dGVhcnJheS50cmFuc2xhdGUoKSB3aXRoIGludmFsaWQgcGFyYW1ldGVycy4KKworLSBJc3N1ZSAjNjU3Mzogc2V0LnVuaW9uKCkgc3RvcHBlZCBwcm9jZXNzaW5nIGlucHV0cyBpZiBhbiBpbnN0YW5jZSBvZiBzZWxmCisgIG9jY3VycmVkIGluIHRoZSBhcmd1bWVudCBjaGFpbi4KKworLSBJc3N1ZSAjNjA3MDogT24gcG9zaXggcGxhdGZvcm1zIGltcG9ydCBubyBsb25nZXIgY29waWVzIHRoZSBleGVjdXRlIGJpdCBmcm9tCisgIHRoZSAucHkgZmlsZSB0byB0aGUgLnB5YyBmaWxlIGlmIGl0IGlzIHNldC4KKworLSBJc3N1ZSAjMTYxNjk3OTogQWRkZWQgdGhlIGNwNzIwIChBcmFiaWMgRE9TKSBlbmNvZGluZy4KKworLSBJc3N1ZSAjNjQyODogU2luY2UgUHl0aG9uIDMuMCwgdGhlIF9fYm9vbF9fIG1ldGhvZCBtdXN0IHJldHVybiBhIGJvb2wgb2JqZWN0LAorICBhbmQgbm90IGFuIGludC4gIEZpeCB0aGUgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlLCBhbmQgdGhlIGRvY3VtZW50YXRpb24uCisKKy0gVGhlIGRlcHJlY2F0ZWQgUHlDT2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQuCisKKy0gSXNzdWUgIzYzNDc6IEluY2x1ZGUgaW50dHlwZXMuaCBhcyB3ZWxsIGFzIHN0ZGludC5oIGluIHB5cG9ydC5oLiAgVGhpcyBmaXhlcyBhCisgIGJ1aWxkIGZhaWx1cmUgb24gSFAtVVg6IGludDMyX3QgYW5kIHVpbnQzMl90IGFyZSBkZWZpbmVkIGluIGludHR5cGVzLmggaW5zdGVhZAorICBvZiBzdGRpbnQuaCBvbiB0aGF0IHBsYXRmb3JtLgorCistIElzc3VlICM2MzczOiBGaXhlZCBhIFN5c3RlbUVycm9yIHdoZW4gZW5jb2Rpbmcgd2l0aCB0aGUgbGF0aW4tMSBjb2RlYyBhbmQgdGhlCisgICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIGEgc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHVucGFpcmVkIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzQ4NTY6IFJlbW92ZSBjaGVja3MgZm9yIHdpbiBOVC4KKworLSBJc3N1ZSAjNjY4NzogUHlCeXRlc19Gcm9tT2JqZWN0KCkgbm8gbG9uZ2VyIGFjY2VwdHMgYW4gaW50ZWdlciBhcyBpdHMgYXJndW1lbnQKKyAgdG8gY29uc3RydWN0IGEgbnVsbC1pbml0aWFsaXplZCBieXRlcyBvYmplY3QuCisKKy0gSXNzdWUgIzEwMjMyOTA6IEFkZCBmcm9tX2J5dGVzKCkgYW5kIHRvX2J5dGVzKCkgbWV0aG9kcyB0byBpbnRlZ2Vycy4gIFRoZXNlCisgIG1ldGhvZHMgYWxsb3cgdGhlIGNvbnZlcnNpb24gb2YgaW50ZWdlcnMgdG8gYnl0ZXMsIGFuZCB2aWNlLXZlcnNhLgorCistIElzc3VlICM3MzgyOiBGaXggYnVnIGluIGJ5dGVzLl9fZ2V0bmV3YXJnc19fIHRoYXQgcHJldmVudGVkIGJ5dGVzIGluc3RhbmNlcworICBmcm9tIGJlaW5nIGNvcGllZCB3aXRoIGNvcHkuY29weSgpLCBhbmQgYnl0ZXMgc3ViY2xhc3NlcyBmcm9tIGJlaW5nIHBpY2tsZWQKKyAgcHJvcGVybHkuCisKKy0gQ29kZSBvYmplY3RzIG5vdyBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcy4KKworLSBJc3N1ZSAjNzA3MjogaXNzcGFjZSgweGEwKSBpcyB0cnVlIG9uIE1hYyBPUyBYLgorCistIElzc3VlICM4MDg0OiBQRVAgMzcwIG5vdyBjb25mb3JtcyB0byBzeXN0ZW0gY29udmVudGlvbnMgZm9yIGZyYW1ld29yayBidWlsZHMKKyAgb24gTWFjT1MgWC4gVGhhdCBpcywgInB5dGhvbiBzZXR1cC5weSBpbnN0YWxsIC0tdXNlciIgd2lsbCBpbnN0YWxsIGludG8KKyAgIn4vTGlicmFyeS9QeXRob24vMi43IiBpbnN0ZWFkIG9mICJ+Ly5sb2NhbCIuCisKK0MtQVBJCistLS0tLQorCistIElzc3VlICMyNDQzOiBBIG5ldyBtYWNybywgYFB5X1ZBX0NPUFlgLCBjb3BpZXMgdGhlIHN0YXRlIG9mIHRoZQorICB2YXJpYWJsZSBhcmd1bWVudCBsaXN0LiAgYFB5X1ZBX0NPUFlgIGlzIGVxdWl2YWxlbnQgdG8gQzk5CisgIGB2YV9jb3B5YCwgYnV0IGF2YWlsYWJsZSBvbiBhbGwgcHl0aG9uIHBsYXRmb3Jtcy4KKworLSBQeVNsaWNlX0dldEluZGljZXNFeCBub3cgY2xpcHMgdGhlIHN0ZXAgdG8gWy1QWV9TU0laRV9UX01BWCwgUFlfU1NJWkVfVF9NQVhdCisgIGluc3RlYWQgb2YgWy1QWV9TU0laRV9UX01BWC0xLCBQWV9TU0laRV9UX01BWF0uICBUaGlzIG1ha2VzIGl0IHNhZmUgdG8gZG8KKyAgInN0ZXAgPSAtc3RlcCIgd2hlbiByZXZlcnNpbmcgYSBzbGljZS4KKworLSBJc3N1ZSAjNTc1MzogQSBuZXcgQyBBUEkgZnVuY3Rpb24sIGBQeVN5c19TZXRBcmd2RXhgLCBhbGxvd3MgZW1iZWRkZXJzIG9mIHRoZQorICBpbnRlcnByZXRlciB0byBzZXQgc3lzLmFyZ3Ygd2l0aG91dCBhbHNvIG1vZGlmeWluZyBzeXMucGF0aC4gIFRoaXMgaGVscHMgZml4CisgIGBDVkUtMjAwOC01OTgzCisgIDxodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMDgtNTk4Mz5gXy4KKworLSBBZGQgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzLCB3aGljaCBjaGVja3MgaWYgYWxsIGtleXdvcmQgYXJndW1lbnRzIGFyZQorICBzdHJpbmdzIGluIGFuIGVmZmljaWVudCBtYW5uZXIuCisKKy0gSXNzdWUgIzgyNzY6IFB5RXZhbF9DYWxsT2JqZWN0KCkgaXMgbm93IG9ubHkgYXZhaWxhYmxlIGluIG1hY3JvIGZvcm0uICBUaGUKKyAgZnVuY3Rpb24gZGVjbGFyYXRpb24sIHdoaWNoIHdhcyBrZXB0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSByZWFzb25zLCBpcworICBub3cgcmVtb3ZlZCAodGhlIG1hY3JvIHdhcyBpbnRyb2R1Y2VkIGluIDE5OTchKS4KKworLSBJc3N1ZSAjNzc2NzogTmV3IGZ1bmN0aW9uIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cgYWRkZWQsIGFuYWxvZ291cyB0bworICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cuCisKKy0gTWFrZSBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyByZXR1cm4gbm90IGVxdWFsIGlmIHRoZSBQeXRob24gc3RyaW5nCisgIGhhcyAnXDAnIGF0IHRoZSBlbmQuCisKKy0gSXNzdWUgIzUwODA6IFRoZSBhcmd1bWVudCBwYXJzaW5nIGZ1bmN0aW9ucyBQeUFyZ19QYXJzZVR1cGxlLAorICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMsIFB5QXJnX1ZhUGFyc2UsIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzIGFuZAorICBQeUFyZ19QYXJzZSBub3cgcmFpc2UgYSBEZXByZWNhdGlvbldhcm5pbmcgZm9yIGZsb2F0IGFyZ3VtZW50cyBwYXNzZWQgd2l0aCB0aGUKKyAgJ0wnIGZvcm1hdCBjb2RlLiAgVGhpcyB3aWxsIGJlY29tZSBhIFR5cGVFcnJvciBpbiBhIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiwKKyAgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiB0aGUgb3RoZXIgaW50ZWdlciBmb3JtYXQgY29kZXMuCisKKy0gSXNzdWUgIzcwMzM6IEZ1bmN0aW9uIGBgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygpYGAgYWRkZWQuCisKKy0gSXNzdWUgIzc0MTQ6ICdDJyBjb2RlIHdhc24ndCBiZWluZyBza2lwcGVkIHByb3Blcmx5IChmb3Iga2V5d29yZCBhcmd1bWVudHMpIGluCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcy4KKworLSBJc3N1ZSAjNzIyODogQWRkICclbGxkJyBhbmQgJyVsbHUnIHN1cHBvcnQgdG8gUHlTdHJpbmdfRnJvbUZvcm1hdChWKSBhbmQKKyAgUHlFcnJfRm9ybWF0LCBvbiBtYWNoaW5lcyB3aXRoIEhBVkVfTE9OR19MT05HIGRlZmluZWQuCisKKy0gSXNzdWUgIzYxNTE6IE1hZGUgUHlEZXNjcl9DT01NT04gY29uZm9ybSB0byBzdGFuZGFyZCBDIChsaWtlIFB5T2JqZWN0X0hFQUQgaW4KKyAgUEVQIDMxMjMpLiAgVGhlIFB5RGVzY3JfVFlQRSBhbmQgUHlEZXNjcl9OQU1FIG1hY3JvcyBzaG91bGQgYmUgc2hvdWxkIHVzZWQgZm9yCisgIGFjY2Vzc2luZyB0aGUgZF90eXBlIGFuZCBkX25hbWUgbWVtYmVycyBvZiBzdHJ1Y3R1cmVzIHVzaW5nIFB5RGVzY3JfQ09NTU9OLgorCistIElzc3VlICM2NDA1OiBSZW1vdmUgZHVwbGljYXRlIHR5cGUgZGVjbGFyYXRpb25zIGluIGRlc2Nyb2JqZWN0LmguCisKKy0gVGhlIGNvZGUgZmxhZ3MgZm9yIG9sZCBfX2Z1dHVyZV9fIGZlYXR1cmVzIGFyZSBub3cgYXZhaWxhYmxlIGFnYWluLgorCistIElzc3VlICM1OTU0OiBBZGQgYSBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSBmdW5jdGlvbiB0byByZXBsYWNlIG1vc3QgdXNlcyBvZgorICBQeUNvZGVfQWRkcjJMaW5lKCkuCisKKy0gSXNzdWUgIzU5NTk6IEFkZCBhIFB5Q29kZV9OZXdFbXB0eSgpIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBlbXB0eSBjb2RlCisgIG9iamVjdCBhdCBhIHNwZWNpZmllZCBmaWxlLCBmdW5jdGlvbiwgYW5kIGxpbmUgbnVtYmVyLgorCistIElzc3VlICMxNDE5NjUyOiBDaGFuZ2UgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIFB5SW1wb3J0X0FwcGVuZEluaXR0YWIoKSB0bworICBgYGNvbnN0IGNoYXIgKmBgIGFzIHRoZSBzdHJpbmcgaXMgc3RvcmVkIGJleW9uZCB0aGUgY2FsbC4KKworLSBJc3N1ZSAjMjQyMjogV2hlbiBjb21waWxlZCB3aXRoIHRoZSBgYC0td2l0aC12YWxncmluZGBgIG9wdGlvbiwgdGhlIHB5bWFsbG9jCisgIGFsbG9jYXRvciB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLiAgVGhpcworICBnaXZlcyBpbXByb3ZlZCBtZW1vcnkgbGVhayBkZXRlY3Rpb24gd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLCB3aGlsZSB0YWtpbmcKKyAgYWR2YW50YWdlIG9mIHB5bWFsbG9jIGF0IG90aGVyIHRpbWVzLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSW4gcGRiLCB3aGVuIEN0cmwtQyBpcyBlbnRlcmVkIHdoaWxlIGRlZmluaW5nIGNvbW1hbmRzIGZvciBhIGJyZWFrcG9pbnQsIHRoZQorICBvbGQgY29tbWFuZHMgYXJlIHJlc3RvcmVkLgorCistIEZvciB0cmFjZWJhY2sgZGVidWdnaW5nLCB0aGUgcGRiIGxpc3Rpbmcgbm93IGFsc28gc2hvd3MgdGhlIGxvY2F0aW9ucyB3aGVyZQorICB0aGUgZXhjZXB0aW9uIHdhcyBvcmlnaW5hbGx5IChyZSlyYWlzZWQsIGlmIGl0IGRpZmZlcnMgZnJvbSB0aGUgbGFzdCBsaW5lCisgIGV4ZWN1dGVkIChlLmcuIGluIGNhc2Ugb2YgZmluYWxseSBjbGF1c2VzKS4KKworLSBUaGUgcGRiIGNvbW1hbmQgInNvdXJjZSIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgc291cmNlIGNvZGUgZm9yIGEKKyAgZ2l2ZW4gb2JqZWN0LCBpZiBwb3NzaWJsZS4KKworLSBUaGUgcGRiIGNvbW1hbmQgImxvbmdsaXN0IiBoYXMgYmVlbiBhZGRlZC4gIEl0IGRpc3BsYXlzIHRoZSB3aG9sZSBzb3VyY2UgY29kZQorICBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzE1MDM1MDI6IE1ha2UgcGRiLlBkYiBlYXNpZXIgdG8gc3ViY2xhc3MgYnkgcHV0dGluZyBtZXNzYWdlIGFuZCBlcnJvcgorICBvdXRwdXQgaW50byBtZXRob2RzLgorCistIElzc3VlICM4MDk4ODc6IE1ha2UgdGhlIG91dHB1dCBvZiBwZGIncyBicmVha3BvaW50IGRlbGV0aW9ucyBtb3JlIGNvbnNpc3RlbnQ7CisgIGVtaXQgYSBtZXNzYWdlIHdoZW4gYSBicmVha3BvaW50IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisKKy0gSXNzdWUgIzUyOTQ6IEZpeCB0aGUgYmVoYXZpb3Igb2YgcGRiJ3MgImNvbnRpbnVlIiBjb21tYW5kIHdoZW4gY2FsbGVkIGluIHRoZQorICB0b3AtbGV2ZWwgZGVidWdnZWQgZnJhbWUuCisKKy0gSXNzdWUgIzU3Mjc6IFJlc3RvcmUgdGhlIGFiaWxpdHkgdG8gdXNlIHJlYWRsaW5lIHdoZW4gY2FsbGluZyBpbnRvIHBkYiBpbgorICBkb2N0ZXN0cy4KKworLSBJc3N1ZSAjNjcxOTogSW4gcGRiLCBkbyBub3Qgc3RvcCBzb21ld2hlcmUgaW4gdGhlIGVuY29kaW5ncyBtYWNoaW5lcnkgaWYgdGhlCisgIHNvdXJjZSBmaWxlIHRvIGJlIGRlYnVnZ2VkIGlzIGluIGEgbm9uLWJ1aWx0aW4gZW5jb2RpbmcuCisKKy0gSXNzdWUgIzgwNDg6IFByZXZlbnQgZG9jdGVzdHMgZnJvbSBmYWlsaW5nIHdoZW4gc3lzLmRpc3BsYXlob29rIGhhcyBiZWVuCisgIHJlYXNzaWduZWQuCisKKy0gSXNzdWUgIzgwMTU6IEluIHBkYiwgZG8gbm90IGNyYXNoIHdoZW4gYW4gZW1wdHkgbGluZSBpcyBlbnRlcmVkIGFzIGEKKyAgYnJlYWtwb2ludCBjb21tYW5kLgorCistIEluIHBkYiwgYWxsb3cgZ2l2aW5nIGEgbGluZSBudW1iZXIgdG8gdGhlICJ1bnRpbCIgY29tbWFuZC4KKworLSBJc3N1ZSAjMTQzNzA1MTogRm9yIHBkYiwgYWxsb3cgImNvbnRpbnVlIiBhbmQgcmVsYXRlZCBjb21tYW5kcyBpbiAucGRicmMKKyAgZmlsZXMuICBBbHNvLCBhZGQgYSBjb21tYW5kLWxpbmUgb3B0aW9uICItYyIgdGhhdCBydW5zIGEgY29tbWFuZCBhcyBpZiBnaXZlbgorICBpbiAucGRicmMuCisKKy0gSXNzdWUgIzQxNzk6IEluIHBkYiwgYWxsb3cgImxpc3QgLiIgYXMgYSBjb21tYW5kIHRvIHJldHVybiB0byB0aGUgY3VycmVudGx5CisgIGRlYnVnZ2VkIGxpbmUuCisKKy0gSXNzdWUgIzQxMDg6IEluIHVybGxpYi5yb2JvdHBhcnNlciwgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGBgVXNlci1hZ2VudDogKmBgCisgIGVudHJpZXMsIGNvbnNpZGVyIHRoZSBmaXJzdCBvbmUuCisKKy0gSXNzdWUgIzY2MzA6IEFsbG93IGN1c3RvbWl6aW5nIHJlZ2V4IGZsYWdzIHdoZW4gc3ViY2xhc3NpbmcgdGhlCisgIHN0cmluZy5UZW1wbGF0ZSBjbGFzcy4KKworLSBJc3N1ZSAjOTQxMTogQWxsb3cgc3BlY2lmeWluZyBhbiBlbmNvZGluZyBmb3IgY29uZmlnIGZpbGVzIGluIHRoZSBjb25maWdwYXJzZXIKKyAgbW9kdWxlLgorCistIElzc3VlICMxNjgyOTQyOiBJbXByb3ZlbWVudHMgdG8gY29uZmlncGFyc2VyOiBzdXBwb3J0IGFsdGVybmF0ZSBkZWxpbWl0ZXJzLAorICBhbHRlcm5hdGUgY29tbWVudCBwcmVmaXhlcyBhbmQgZW1wdHkgbGluZXMgaW4gdmFsdWVzLgorCistIElzc3VlICM5MzU0OiBQcm92aWRlIGdldHNvY2tvcHQoKSBpbiBhc3luY29yZSdzIGZpbGVfd3JhcHBlci4KKworLSBJc3N1ZSAjODk2NjogY3R5cGVzOiBSZW1vdmUgaW1wbGljaXQgYnl0ZXMtdW5pY29kZSBjb252ZXJzaW9uLgorCistIElzc3VlICM5Mzc4OiBweXRob24gLW0gcGlja2xlIDxwaWNrbGUgZmlsZT4gd2lsbCBub3cgbG9hZCBhbmQgZGlzcGxheSB0aGUKKyAgZmlyc3Qgb2JqZWN0IGluIHRoZSBwaWNrbGUgZmlsZS4KKworLSBJc3N1ZSAjNDc3MDogUmVzdHJpY3QgYmluYXNjaWkgbW9kdWxlIHRvIGFjY2VwdCBvbmx5IGJ5dGVzIChhcyBzcGVjaWZpZWQpLgorICBBbmQgZml4IHRoZSBlbWFpbCBwYWNrYWdlIHRvIGVuY29kZSB0byBBU0NJSSBpbnN0ZWFkIG9mIGBgcmF3LXVuaWNvZGUtZXNjYXBlYGAKKyAgYmVmb3JlIEFTQ0lJLXRvLWJpbmFyeSBkZWNvZGluZy4KKworLSBJc3N1ZSAjOTM4NDogYGBweXRob24gLW0gdGtpbnRlcmBgIHdpbGwgbm93IGRpc3BsYXkgYSBzaW1wbGUgZGVtbyBhcHBsZXQuCisKKy0gVGhlIGRlZmF1bHQgc2l6ZSBvZiB0aGUgcmUgbW9kdWxlJ3MgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIGNhY2hlIGhhcyBiZWVuCisgIGluY3JlYXNlZCBmcm9tIDEwMCB0byA1MDAgYW5kIHRoZSBjYWNoZSByZXBsYWNlbWVudCBwb2xpY3kgaGFzIGNoYW5nZWQgZnJvbQorICBzaW1wbHkgY2xlYXJpbmcgdGhlIGVudGlyZSBjYWNoZSBvbiBvdmVyZmxvdyB0byBmb3JnZXR0aW5nIHRoZSBsZWFzdCByZWNlbnRseQorICB1c2VkIGNhY2hlZCBjb21waWxlZCByZWd1bGFyIGV4cHJlc3Npb25zLiAgVGhpcyBpcyBhIHBlcmZvcm1hbmNlIHdpbiBmb3IKKyAgYXBwbGljYXRpb25zIHRoYXQgdXNlIGEgbG90IG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgYW5kIGxpbWl0cyB0aGUgaW1wYWN0IG9mCisgIHRoZSBwZXJmb3JtYW5jZSBoaXQgYW55dGltZSB0aGUgY2FjaGUgaXMgZXhjZWVkZWQuCisKKy0gSXNzdWUgIzcxMTM6IFNwZWVkIHVwIGxvYWRpbmcgaW4gY29uZmlncGFyc2VyLiBQYXRjaCBieSDFgXVrYXN6IExhbmdhLgorCistIElzc3VlICM5MDMyOiBYTUwtUlBDIGNsaWVudCByZXRyaWVzIHRoZSByZXF1ZXN0IG9uIEVQSVBFIGVycm9yLiAgVGhlIEVQSVBFCisgIGVycm9yIG9jY3VycyB3aGVuIHRoZSBzZXJ2ZXIgY2xvc2VzIHRoZSBzb2NrZXQgYW5kIHRoZSBjbGllbnQgc2VuZHMgYSBiaWcKKyAgWE1MLVJQQyByZXF1ZXN0LgorCistIElzc3VlICM0NjI5OiBnZXRvcHQgcmFpc2VzIGFuIGVycm9yIGlmIGFuIGFyZ3VtZW50IGVuZHMgd2l0aCAiPSIsIHdoZXJlYXMKKyAgZ2V0b3B0IGRvZXNuJ3QgYWNjZXB0IGEgdmFsdWUgKGVnLiAtLWhlbHA9IGlzIHJlamVjdGVkIGlmIGdldG9wdCB1c2VzCisgIFsnaGVscD0nXSBsb25nIG9wdGlvbnMpLgorCistIElzc3VlICM3OTg5OiBBZGRlZCBwdXJlIHB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGRhdGV0aW1lYCBtb2R1bGUuICBUaGUgQworICBtb2R1bGUgaXMgcmVuYW1lZCB0byBgX2RhdGV0aW1lYCBhbmQgaWYgYXZhaWxhYmxlLCBvdmVycmlkZXMgYWxsIGNsYXNzZXMKKyAgZGVmaW5lZCBpbiBkYXRldGltZSB3aXRoIGZhc3QgQyBpbXBlbWVudGF0aW9uLiAgUHl0aG9uIGltcGxlbWVudGF0aW9uIGlzIGJhc2VkCisgIG9uIHRoZSBvcmlnaW5hbCBweXRob24gcHJvdG90eXBlIGZvciB0aGUgZGF0ZXRpbWUgbW9kdWxlIGJ5IFRpbSBQZXRlcnMgd2l0aAorICBtaW5vciBtb2RpZmljYXRpb25zIGJ5IHRoZSBQeVB5IHByb2plY3QuICBUaGUgdGVzdCBzdWl0ZSBub3cgdGVzdHMgYGRhdGV0aW1lYAorICBtb2R1bGUgd2l0aCBhbmQgd2l0aG91dCBgX2RhdGV0aW1lYCBhY2NlbGVyYXRpb24gdXNpbmcgdGhlIHNhbWUgdGVzdCBjYXNlcy4KKworLSBJc3N1ZSAjNzg5NTogcGxhdGZvcm0ubWFjX3ZlcigpIG5vIGxvbmdlciBjcmFzaGVzIGFmdGVyIGNhbGxpbmcgb3MuZm9yaygpLgorCistIElzc3VlICM5MzIzOiBGaXhlZCBhIGJ1ZyBpbiB0cmFjZS5weSB0aGF0IHJlc3VsdGVkIGluIGxvb3NpbmcgdGhlIG5hbWUgb2YgdGhlCisgIHNjcmlwdCBiZWluZyB0cmFjZWQuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgorCistIElzc3VlICM5MjgyOiBGaXhlZCAtLWxpc3RmdW5jcyBvcHRpb24gb2YgdHJhY2UucHkuICBUaGFua3MgRWxpIEJlbmRlcnNreSBmb3IKKyAgdGhlIHBhdGNoLgorCistIElzc3VlICMzNzA0OiBodHRwLmNvb2tpZWphciB3YXMgbm90IHByb3Blcmx5IGhhbmRsaW5nIFVSTHMgd2l0aCBhIC8gaW4gdGhlCisgIHBhcmFtZXRlcnMuCisKKy0gSXNzdWUgIzkyNjg6IGBgcGlja2xldG9vbHMuZGlzKClgYCBub3cgaGFzIGFuIG9wdGlvbmFsICphbm5vdGF0ZSogYXJndW1lbnQKKyAgd2hpY2ggY29udHJvbHMgcHJpbnRpbmcgb2Ygb3Bjb2RlIGRlc2NyaXB0aW9ucyBpbiBgYGRpcygpYGAgb3V0cHV0LgorCistIElzc3VlICMxNTU1NTcwOiBlbWFpbCBubyBsb25nZXIgaW5zZXJ0cyBleHRyYSBibGFuayBsaW5lcyB3aGVuIGEgXHJcbiBjb21ibworICBjcm9zc2VzIGFuIDgxOTIgYnl0ZSBib3VuZGFyeS4KKworLSBJc3N1ZSAjOTI0MzogRml4IHNuZGhkciBtb2R1bGUgYW5kIGFkZCB1bml0IHRlc3RzLCBjb250cmlidXRlZCBieSBKYW1lcyBMZWUuCisKKy0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIGJ5dGUgbGl0ZXJhbHMuCisKKy0gSXNzdWUgIzkxMzc6IEZpeCBpc3N1ZSBpbiBNdXRhYmxlTWFwcGluZy51cGRhdGUsIHdoaWNoIGluY29ycmVjdGx5IHRyZWF0ZWQKKyAga2V5d29yZCBhcmd1bWVudHMgY2FsbGVkICdzZWxmJyBvciAnb3RoZXInIHNwZWNpYWxseS4KKworLSBgYGFzdC5saXRlcmFsX2V2YWwoKWBgIG5vdyBhbGxvd3Mgc2V0IGxpdGVyYWxzLgorCistIElzc3VlICM5MTY0OiBFbnN1cmUgdGhhdCBzeXNjb25maWcgaGFuZGxlcyBkdXBsaWNhdGUgLWFyY2ggZmxhZ3MgaW4gQ0ZMQUdTLgorCistIElzc3VlICM3NjQ2OiBUaGUgZm5tYXRjaCBwYXR0ZXJuIGNhY2hlIG5vIGxvbmdlciBncm93cyB3aXRob3V0IGJvdW5kLgorCistIElzc3VlICM5MTM2OiBGaXggJ2RpY3Rpb25hcnkgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24nIFJ1bnRpbWVFcnJvcgorICBwcm9kdWNlZCB3aGVuIHByb2ZpbGluZyB0aGUgZGVjaW1hbCBtb2R1bGUuICBUaGlzIHdhcyBkdWUgdG8gYSBkYW5nZXJvdXMKKyAgaXRlcmF0aW9uIG92ZXIgJ2xvY2FscygpJyBpbiBDb250ZXh0Ll9faW5pdF9fLgorCistIEZpeCBleHRyZW1lIHNwZWVkIGlzc3VlIGluIERlY2ltYWwucG93IHdoZW4gdGhlIGJhc2UgaXMgYW4gZXhhY3QgcG93ZXIgb2YgMTAKKyAgYW5kIHRoZSBleHBvbmVudCBpcyB0aW55IChmb3IgZXhhbXBsZSwgYGBEZWNpbWFsKDEwKSAqKgorICBEZWNpbWFsKCcxZS05OTk5OTk5OTknKWBgKS4KKworLSBJc3N1ZSAjOTE4NjogRml4IG1hdGgubG9nMXAoLTEuMCkgdG8gcmFpc2UgVmFsdWVFcnJvciwgbm90IE92ZXJmbG93RXJyb3IuCisKKy0gSXNzdWUgIzkxMzA6IEZpeCB2YWxpZGF0aW9uIG9mIHJlbGF0aXZlIGltcG9ydHMgaW4gcGFyc2VyIG1vZHVsZS4KKworLSBJc3N1ZSAjOTEyODogRml4IHZhbGlkYXRpb24gb2YgY2xhc3MgZGVjb3JhdG9ycyBpbiBwYXJzZXIgbW9kdWxlLgorCistIElzc3VlICM5MDk0OiBweXRob24gLW0gcGlja2xldG9vbHMgd2lsbCBub3cgZGlzYXNzZW1ibGUgcGlja2xlIGZpbGVzIGxpc3RlZCBpbgorICB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4gIFNlZSBvdXRwdXQgb2YgcHl0aG9uIC1tIHBpY2tsZXRvb2xzIC1oIGZvciBtb3JlCisgIGRldGFpbHMuCisKKy0gSXNzdWUgIzU0Njg6IHVybGVuY29kZSB0byBoYW5kbGUgYnl0ZXMgdHlwZSBhbmQgb3RoZXIgZW5jb2RpbmdzIGluIGl0cyBxdWVyeQorICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IERhbiBNYWhuLgorCistIElzc3VlICM3NjczOiBGaXggc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAoQ1ZFLTIwMTAtMjA4OSkgaW4gdGhlIGF1ZGlvb3AgbW9kdWxlLAorICBlbnN1cmUgdGhhdCB0aGUgaW5wdXQgc3RyaW5nIGxlbmd0aCBpcyBhIG11bHRpcGxlIG9mIHRoZSBmcmFtZSBzaXplLgorCistIElzc3VlICM2NTA3OiBBY2NlcHQgc291cmNlIHN0cmluZ3MgaW4gZGlzLmRpcygpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRGFuaWVsCisgIFVyYmFuLgorCistIElzc3VlICM3ODI5OiBDbGVhcmx5IGRvY3VtZW50IHRoYXQgdGhlIGRpcyBtb2R1bGUgaXMgZXhwb3NpbmcgYW4KKyAgaW1wbGVtZW50YXRpb24gZGV0YWlsIHRoYXQgaXMgbm90IHN0YWJsZSBiZXR3ZWVuIFB5dGhvbiBWTXMgb3IgcmVsZWFzZXMuCisKKy0gSXNzdWUgIzY1ODk6IGNsZWFudXAgYXN5bmNvcmUuc29ja2V0X21hcCBpbiBjYXNlIHNtdHBkLlNNVFBTZXJ2ZXIgY29uc3RydWN0b3IKKyAgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjOTExMDogQWRkaXRpb24gb2YgQ29udGV4dERlY29yYXRvciB0byBjb250ZXh0bGliLCBmb3IgY3JlYXRpbmcgQVBJcworICB0aGF0IGFjdCBhcyBib3RoIGNvbnRleHQgbWFuYWdlcnMgYW5kIGRlY29yYXRvcnMuIGNvbnRleHRtYW5hZ2VyIGNoYW5nZXMgdG8KKyAgdXNlIENvbnRleHREZWNvcmF0b3IuCisKKy0gSW1wbGVtZW50IGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyIGFuZCBkZXByZWNhdGUgUHlMb2FkZXIgYW5kIFB5UHljTG9hZGVyCisgIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjQuCisKKy0gSXNzdWUgIzkwNjQ6IHBkYidzICJ1cCIgYW5kICJkb3duIiBjb21tYW5kcyBub3cgYWNjZXB0IGFuIG9wdGlvbmFsIGFyZ3VtZW50CisgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGZyYW1lcyB0byBnby4KKworLSBJc3N1ZSAjOTAxODogb3MucGF0aC5ub3JtY2FzZSgpIG5vdyByYWlzZXMgYSBUeXBlRXJyb3IgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdAorICBgYHN0cmBgIG9yIGBgYnl0ZXNgYC4KKworLSBJc3N1ZSAjOTA3NTogSW4gdGhlIHNzbCBtb2R1bGUsIHJlbW92ZSB0aGUgc2V0dGluZyBvZiBhIGBgZGVidWdgYCBmbGFnIG9uIGFuCisgIE9wZW5TU0wgc3RydWN0dXJlLgorCistIElzc3VlICM4NjgyOiBUaGUgc3NsIG1vZHVsZSBub3cgdGVtcG9yYXJ5IGluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhCisgIHNvY2tldCBvYmplY3QgZ290IHRocm91Z2ggYGBQeVdlYWtyZWZfR2V0T2JqZWN0YGAsIHNvIGFzIHRvIGF2b2lkIHBvc3NpYmxlCisgIGRlYWxsb2NhdGlvbiB3aGlsZSB0aGUgb2JqZWN0IGlzIHN0aWxsIGJlaW5nIHVzZWQuCisKKy0gSXNzdWUgIzEzNjgzNjg6IEZhbmN5VVJMT3BlbmVyIGNsYXNzIGNoYW5nZWQgdG8gdGhyb3cgYW4gRXhjZXB0aW9uIG9uIHdyb25nCisgIHBhc3N3b3JkIGluc3RlYWQgb2YgcHJlc2VudGluZyBhbiBpbnRlcmFjdGl2ZSBwcm9tcHQuICBPbGRlciBiZWhhdmlvciBjYW4gYmUKKyAgb2J0YWluZWQgYnkgcGFzc2luZyByZXRyeT1UcnVlIHRvIGh0dHBfZXJyb3JfeHh4IG1ldGhvZHMgb2YgRmFuY3lVUkxPcGVuZXIuCisKKy0gSXNzdWUgIzg3MjA6IEZpeCByZWdyZXNzaW9uIGNhdXNlZCBieSBmaXggZm9yICM0MDUwIGJ5IG1ha2luZyBnZXRzb3VyY2VmaWxlCisgIHNtYXJ0IGVub3VnaCB0byBmaW5kIHNvdXJjZSBmaWxlcyBpbiB0aGUgbGluZWNhY2hlLgorCistIElzc3VlICM1NjEwOiBmZWVkcGFyc2VyIG5vIGxvbmdlciBlYXRzIGV4dHJhIGNoYXJhY3RlcnMgYXQgdGhlIGVuZCBvZiBhIGJvZHkKKyAgcGFydCBpZiB0aGUgYm9keSBwYXJ0IGVuZHMgd2l0aCBhIGBgXHJcbmBgLgorCistIElzc3VlICM4OTg2OiBtYXRoLmVyZmMgd2FzIGluY29ycmVjdGx5IHJhaXNpbmcgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzCisgIGJldHdlZW4gLTI3LjMgYW5kIC0zMC4wIG9uIHNvbWUgcGxhdGZvcm1zLgorCistIElzc3VlICM4Nzg0OiBTZXQgdGFyZmlsZSBkZWZhdWx0IGVuY29kaW5nIHRvICd1dGYtOCcgb24gV2luZG93cy4KKworLSBJc3N1ZSAjODk2NjogSWYgYSBjdHlwZXMgc3RydWN0dXJlIGZpZWxkIGlzIGFuIGFycmF5IG9mIGNfY2hhciwgY29udmVydCBpdHMKKyAgdmFsdWUgdG8gYnl0ZXMgaW5zdGVhZCBvZiBzdHIgKGFzIGRvbmUgZm9yIGNfY2hhciBhbmQgY19jaGFyX3ApLgorCistIElzc3VlICM4MTg4OiBDb21wYXJpc29ucyBiZXR3ZWVuIERlY2ltYWwgYW5kIEZyYWN0aW9uIG9iamVjdHMgYXJlIG5vdworICBwZXJtaXR0ZWQsIHJldHVybmluZyBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgZXhhY3QgbnVtZXJpY2FsIHZhbHVlcyBvZiB0aGUKKyAgb3BlcmFuZHMuICBUaGlzIGJ1aWxkcyBvbiBpc3N1ZSAjMjUzMSwgd2hpY2ggYWxsb3dlZCBEZWNpbWFsLXRvLWZsb2F0CisgIGNvbXBhcmlzb25zOyBhbGwgY29tcGFyaXNvbnMgaW52b2x2aW5nIG51bWVyaWMgdHlwZXMgKGJvb2wsIGludCwgZmxvYXQsCisgIGNvbXBsZXgsIERlY2ltYWwsIEZyYWN0aW9uKSBzaG91bGQgbm93IGFjdCBhcyBleHBlY3RlZC4KKworLSBJc3N1ZSAjODg5NzogRml4IHN1bmF1IG1vZHVsZSwgdXNlIGJ5dGVzIHRvIHdyaXRlIHRoZSBoZWFkZXIuIFBhdGNoIHdyaXR0ZW4gYnkKKyAgVGhvbWFzIEpvbGxhbnMuCisKKy0gSXNzdWUgIzg4OTk6IHRpbWUuc3RydWN0X3RpbWUgbm93IGhhcyBjbGFzcyBhbmQgYXR0cmlidXRlIGRvY3N0cmluZ3MuCisKKy0gSXNzdWUgIzY0NzA6IERyb3AgVU5DIHByZWZpeCBpbiBGaXhUay4KKworLSBJc3N1ZSAjNDc2ODogYmFzZTY0IGVuY29kZWQgZW1haWwgYm9keSBwYXJ0cyB3ZXJlIGluY29ycmVjdGx5IHN0b3JlZCBhcyBiaW5hcnkKKyAgc3RyaW5ncy4gIFRoZXkgYXJlIG5vdyBjb3JyZWN0bHkgY29udmVydGVkIHRvIHN0cmluZ3MuCisKKy0gSXNzdWUgIzg4MzM6IHRhcmZpbGUgY3JlYXRlZCBoYXJkIGxpbmsgZW50cmllcyB3aXRoIGEgc2l6ZSBmaWVsZCAhPSAwIGJ5CisgIG1pc3Rha2UuCisKKy0gQ2hhcnNldC5ib2R5X2VuY29kZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgYmFzZTY0IGVuY29kaW5nIGJ5IGVuY29kaW5nIHdpdGggdGhlCisgIG91dHB1dF9jaGFyc2V0IGJlZm9yZSBjYWxsaW5nIGJhc2U2NG1pbWUuZW5jb2RlLiAgUGFzc2VzIHRoZSB0ZXN0cyBmcm9tIDIueAorICBpc3N1ZSAjMTM2ODI0Ny4KKworLSBJc3N1ZSAjODg0NTogc3FsaXRlMyBDb25uZWN0aW9uIG9iamVjdHMgbm93IGhhdmUgYSByZWFkLW9ubHkgaW5fdHJhbnNhY3Rpb24KKyAgYXR0cmlidXRlIHRoYXQgaXMgVHJ1ZSBpZmYgdGhlcmUgYXJlIHVuY29tbWl0dGVkIGNoYW5nZXMuCisKKy0gSXNzdWUgIzEyODkxMTg6IGRhdGV0aW1lLnRpbWVkZWx0YSBvYmplY3RzIGNhbiBub3cgYmUgbXVsdGlwbGllZCBieSBmbG9hdCBhbmQKKyAgZGl2aWRlZCBieSBmbG9hdCBhbmQgaW50IG9iamVjdHMuICBSZXN1bHRzIGFyZSByb3VuZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlCisgIG9mIHRpbWVkZWx0YS5yZXNvbHV0aW9uIHdpdGggdGllcyByZXNvbHZlZCB1c2luZyByb3VuZC1oYWxmLXRvLWV2ZW4gbWV0aG9kLgorCistIElzc3VlICM3MTUwOiBSYWlzZSBPdmVyZmxvd0Vycm9yIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nIG9yIHN1YnRyYWN0aW5nCisgIHRpbWVkZWx0YSBmcm9tIGRhdGUgb3IgZGF0ZXRpbWUgZmFsbHMgb3V0c2lkZSBvZiB0aGUgTUlOWUVBUjpNQVhZRUFSIHJhbmdlLgorCistIElzc3VlICM4ODA2OiBhZGQgU1NMIGNvbnRleHRzIHN1cHBvcnQgdG8gZnRwbGliLgorCistIElzc3VlICM0NzY5OiBGaXggbWFpbigpIGZ1bmN0aW9uIG9mIHRoZSBiYXNlNjQgbW9kdWxlLCB1c2Ugc3lzLnN0ZGluLmJ1ZmZlcgorICBhbmQgc3lzLnN0ZG91dC5idWZmZXIgKGluc3RlYWQgb2Ygc3lzLnN0ZGluIGFuZCBzeXMuc3Rkb3V0KSB0byB1c2UgdGhlIGJ5dGVzCisgIEFQSS4KKworLSBJc3N1ZSAjODc3MDogTm93IHN5c2NvbmZpZyBkaXNwbGF5cyBpbmZvcm1hdGlvbiB3aGVuIGl0J3MgY2FsbGVkIGFzIGEgc2NyaXB0LgorICBJbml0aWFsIGlkZWEgYnkgU3JpZGhhciBSYXRuYWt1bWFyLgorCistIElzc3VlICM2NjYyOiBGaXggcGFyc2luZyBvZiBtYWxmb3JtYXR0ZWQgY2hhcnJlZiAoJiNiYWQ7KSwgcGF0Y2ggd3JpdHRlbiBieQorICBGcmVkcmlrIEjDpcOlcmQuCisKKy0gSXNzdWUgIzg1NDA6IERlY2ltYWwgbW9kdWxlOiByZW5hbWUgdGhlIENvbnRleHQuX2NsYW1wIGF0dHJpYnV0ZSB0bworICBDb250ZXh0LmNsYW1wIGFuZCBtYWtlIGl0IHB1YmxpYy4gIFRoaXMgaXMgdXNlZnVsIGluIGNyZWF0aW5nIGNvbnRleHRzIHRoYXQKKyAgY29ycmVzcG9uZCB0byB0aGUgZGVjaW1hbCBpbnRlcmNoYW5nZSBmb3JtYXRzIHNwZWNpZmllZCBpbiBJRUVFIDc1NC4KKworLSBJc3N1ZSAjNjI2ODogRml4IHNlZWsoKSBtZXRob2Qgb2YgY29kZWNzLm9wZW4oKSwgZG9uJ3QgcmVhZCBvciB3cml0ZSB0aGUgQk9NCisgIHR3aWNlIGFmdGVyIHNlZWsoMCkuIEZpeCBhbHNvIHJlc2V0KCkgbWV0aG9kIG9mIGNvZGVjcywgVVRGLTE2LCBVVEYtMzIgYW5kCisgIFN0cmVhbVdyaXRlciBjbGFzc2VzLgorCistIElzc3VlICMzNzk4OiBzeXMuZXhpdChtZXNzYWdlKSB3cml0ZXMgdGhlIG1lc3NhZ2UgdG8gc3lzLnN0ZGVyciBmaWxlLCBpbnN0ZWFkCisgIG9mIHRoZSBDIGZpbGUgc3RkZXJyLCB0byB1c2Ugc3RkZXJyIGVuY29kaW5nIGFuZCBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM4NzgyOiBBZGQgYSB0cmFpbGluZyBuZXdsaW5lIGluIGxpbmVjYWNoZS51cGRhdGVjYWNoZSB0byB0aGUgbGFzdCBsaW5lCisgIG9mIGZpbGVzIHdpdGhvdXQgb25lLgorCistIElzc3VlICM4NzI5OiBSZXR1cm4gTm90SW1wbGVtZW50ZWQgZnJvbSBjb2xsZWN0aW9ucy5NYXBwaW5nLl9fZXFfXyB3aGVuCisgIGNvbXBhcmluZyB0byBhIG5vbi1tYXBwaW5nLgorCistIElzc3VlICM4Nzc0OiB0YWJuYW5ueSB1c2VzIHRoZSBlbmNvZGluZyBjb29raWUgKCNjb2Rpbmc6Li4uKSB0byB1c2UgdGhlCisgIGNvcnJlY3QgZW5jb2RpbmcuCisKKy0gSXNzdWUgIzQ4NzA6IEFkZCBhbiBgb3B0aW9uc2AgYXR0cmlidXRlIHRvIFNTTCBjb250ZXh0cywgYXMgd2VsbCBhcyBzZXZlcmFsCisgIGBgT1BfKmBgIGNvbnN0YW50cyB0byB0aGUgYHNzbGAgbW9kdWxlLiAgVGhpcyBhbGxvd3MgdG8gc2VsZWN0aXZlbHkgZGlzYWJsZQorICBwcm90b2NvbCB2ZXJzaW9ucywgd2hlbiB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYFBST1RPQ09MX1NTTHYyM2AuCisKKy0gSXNzdWUgIzg3NTk6IEZpeGVkIHVzZXIgcGF0aHMgaW4gc3lzY29uZmlnIGZvciBwb3NpeCBhbmQgb3MyIHNjaGVtZXMuCisKKy0gSXNzdWUgIzg2NjM6IGRpc3R1dGlscy5sb2cgZW11bGF0ZXMgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLiBGaXgKKyAgY29tcGlsYXRpb24gaW4gYSBub24tQVNDSUkgZGlyZWN0b3J5IGlmIHN0ZG91dCBlbmNvZGluZyBpcyBBU0NJSSAoZWcuIGlmCisgIHN0ZG91dCBpcyBub3QgYSBUVFkpLgorCistIElzc3VlICM4NTEzOiBvcy5nZXRfZXhlY19wYXRoKCkgc3VwcG9ydHMgYidQQVRIJyBrZXkgYW5kIGJ5dGVzIHZhbHVlLgorICBzdWJwcm9jZXNzLlBvcGVuKCkgYW5kIG9zLl9leGVjdnBlKCkgc3VwcG9ydCBieXRlcyBwcm9ncmFtIG5hbWUuIEFkZAorICBvcy5zdXBwb3J0c19ieXRlc19lbnZpcm9uIGZsYWc6IFRydWUgaWYgdGhlIG5hdGl2ZSBPUyB0eXBlIG9mIHRoZSBlbnZpcm9ubWVudAorICBpcyBieXRlcyAoZWcuIEZhbHNlIG9uIFdpbmRvd3MpLgorCistIElzc3VlICM4NjMzOiB0YXJmaWxlIGlzIG5vdyBhYmxlIHRvIHJlYWQgYW5kIHdyaXRlIGFyY2hpdmVzIHdpdGggInJhdyIgYmluYXJ5CisgIHBheCBoZWFkZXJzIGFzIGRlc2NyaWJlZCBpbiBQT1NJWC4xLTIwMDguCisKKy0gSXNzdWUgIzEyODUwODY6IFNwZWVkIHVwIHVybGxpYi5wYXJzZSBmdW5jdGlvbnM6IHF1b3RlLCBxdW90ZV9mcm9tX2J5dGVzLAorICB1bnF1b3RlLCB1bnF1b3RlX3RvX2J5dGVzLgorCistIElzc3VlICM4Njg4OiBEaXN0dXRpbHMgbm93IHJlY2FsY3VsYXRlcyBNQU5JRkVTVCBldmVyeXRpbWUuCisKKy0gSXNzdWUgIzg0Nzc6IHNzbC5SQU5EX2VnZCgpIGFuZCBzc2wuX3Rlc3RfZGVjb2RlX2NlcnQoKSBzdXBwb3J0IHN0ciB3aXRoCisgIHN1cnJvZ2F0ZXMgYW5kIGJ5dGVzIGZvciB0aGUgZmlsZW5hbWUuCisKKy0gSXNzdWUgIzg1NTA6IEFkZCBmaXJzdCBjbGFzcyBgYFNTTENvbnRleHRgYCBvYmplY3RzIHRvIHRoZSBzc2wgbW9kdWxlLgorCistIElzc3VlICM4NjgxOiBNYWtlIHRoZSB6bGliIG1vZHVsZSdzIGVycm9yIG1lc3NhZ2VzIG1vcmUgaW5mb3JtYXRpdmUgd2hlbiB0aGUKKyAgemxpYiBpdHNlbGYgZG9lc24ndCBnaXZlIGFueSBkZXRhaWxlZCBleHBsYW5hdGlvbi4KKworLSBUaGUgYXVkaW9vcCBtb2R1bGUgbm93IHN1cHBvcnRzIHNvdW5kIGZyYWdtZW50cyBvZiBsZW5ndGggZ3JlYXRlciB0aGFuIDIqKjMxCisgIGJ5dGVzIG9uIDY0LWJpdCBtYWNoaW5lcywgYW5kIGlzIFBZX1NTSVpFX1RfQ0xFQU4uCisKKy0gSXNzdWUgIzQ5NzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBmdHBsaWIuRlRQCisgIGNsYXNzLgorCistIElzc3VlICM4NjY0OiBJbiBweV9jb21waWxlLCBjcmVhdGUgX19weWNhY2hlX18gd2hlbiB0aGUgY29tcGlsZWQgcGF0aCBpcworICBnaXZlbi4KKworLSBJc3N1ZSAjODUxNDogQWRkIG9zLmZzZW5jb2RlKCkgZnVuY3Rpb24gKFVuaXggb25seSk6IGVuY29kZSBhIHN0cmluZyB0byBieXRlcworICBmb3IgdXNlIGluIHRoZSBmaWxlIHN5c3RlbSwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHRoZSBjb21tYW5kIGxpbmUuCisKKy0gSXNzdWUgIzg1NzE6IEZpeCBhbiBpbnRlcm5hbCBlcnJvciB3aGVuIGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgYSBjaHVuaworICBsYXJnZXIgdGhhbiAxR0Igd2l0aCB0aGUgemxpYiBtb2R1bGUncyBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3Igb2JqZWN0cy4KKworLSBJc3N1ZSAjODYwMzogU3VwcG9ydCBieXRlcyBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBvbiBVbml4OiBBZGQgb3MuZW52aXJvbmIKKyAgbWFwcGluZyBhbmQgb3MuZ2V0ZW52YigpIGZ1bmN0aW9uLiBvcy51bnNldGVudigpIGVuY29kZXMgc3RyIGFyZ3VtZW50IHRvIHRoZQorICBmaWxlIHN5c3RlbSBlbmNvZGluZyB3aXRoIHRoZSBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciAoaW5zdGVhZCBvZgorICB1dGY4L3N0cmljdCkgYW5kIGFjY2VwdHMgYnl0ZXMuIHBvc2l4LmVudmlyb24ga2V5cyBhbmQgdmFsdWVzIGFyZSBub3cgYnl0ZXMuCisKKy0gSXNzdWUgIzg1NzM6IGFzeW5jb3JlIF9zdHJlcnJvcigpIGZ1bmN0aW9uIG1pZ2h0IHRocm93IFZhbHVlRXJyb3IuCisKKy0gSXNzdWUgIzg0ODM6IGFzeW5jb3JlLmRpc3BhdGNoZXIncyBfX2dldGF0dHJfXyBtZXRob2QgcHJvZHVjZWQgY29uZnVzaW5nIGVycm9yCisgIG1lc3NhZ2VzIHdoZW4gYWNjZXNzaW5nIHVuZGVmaW5lZCBjbGFzcyBhdHRyaWJ1dGVzIGJlY2F1c2Ugb2YgdGhlIGNoZWFwCisgIGluaGVyaXRhbmNlIHdpdGggdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4gIFRoZSBjaGVhcCBpbmhlcml0YW5jZSBoYXMgYmVlbgorICBkZXByZWNhdGVkLgorCistIElzc3VlICM0MjY1OiBzaHV0aWwuY29weWZpbGUoKSB3YXMgbGVha2luZyBmaWxlIGRlc2NyaXB0b3JzIHdoZW4gZGlzayBmaWxscy4KKyAgUGF0Y2ggYnkgVHJlcyBTZWF2ZXIuCisKKy0gSXNzdWUgIzgzOTA6IHRhcmZpbGUgdXNlcyBzdXJyb2dhdGVlc2NhcGUgYXMgdGhlIGRlZmF1bHQgZXJyb3IgaGFuZGxlcgorICAoaW5zdGVhZCBvZiByZXBsYWNlIGluIHJlYWQgbW9kZSBvciBzdHJpY3QgaW4gd3JpdGUgbW9kZSkuCisKKy0gSXNzdWUgIzc3NTU6IFVzZSBhbiB1bmVuY3VtYmVyZWQgYXVkaW8gZmlsZSBmb3IgdGVzdHMuCisKKy0gSXNzdWUgIzg2MjE6IHV1aWQudXVpZDQoKSByZXR1cm5lZCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgaW4gdGhlIHBhcmVudAorICBhbmQgYW55IGNoaWxkcmVuIGNyZWF0ZWQgdXNpbmcgYGBvcy5mb3JrYGAgb24gTWFjT1MgWCAxMC42LgorCistIElzc3VlICM4NTY3OiBGaXggcHJlY2VkZW5jZSBvZiBzaWduYWxzIGluIERlY2ltYWwgbW9kdWxlOiB3aGVuIGEgRGVjaW1hbAorICBvcGVyYXRpb24gcmFpc2VzIG11bHRpcGxlIHNpZ25hbHMgYW5kIG1vcmUgdGhhbiBvbmUgb2YgdGhvc2Ugc2lnbmFscyBpcworICB0cmFwcGVkLCB0aGUgc3BlY2lmaWNhdGlvbiBkZXRlcm1pbmVzIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgc2lnbmFscyBzaG91bGQgYmUKKyAgaGFuZGxlZC4gIEluIG1hbnkgY2FzZXMgdGhpcyBvcmRlciB3YXNuJ3QgYmVpbmcgZm9sbG93ZWQsIGxlYWRpbmcgdG8gdGhlIHdyb25nCisgIFB5dGhvbiBleGNlcHRpb24gYmVpbmcgcmFpc2VkLgorCistIElzc3VlICM3ODY1OiBUaGUgY2xvc2UoKSBtZXRob2Qgb2YgYGBpb2BgIG9iamVjdHMgc2hvdWxkIG5vdCBzd2FsbG93CisgIGV4Y2VwdGlvbnMgcmFpc2VkIGJ5IHRoZSBpbXBsaWNpdCBmbHVzaCgpLiAgQWxzbyBxZW5zdXJlIHRoYXQgY2FsbGluZyBjbG9zZSgpCisgIHNldmVyYWwgdGltZXMgaXMgc3VwcG9ydGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCisKKy0gSXNzdWUgIzQ2ODc6IEZpeCBhY2N1cmFjeSBvZiBnYXJiYWdlIGNvbGxlY3Rpb24gcnVudGltZXMgZGlzcGxheWVkIHdpdGgKKyAgZ2MuREVCVUdfU1RBVFMuCisKKy0gSXNzdWUgIzgzNTQ6IFRoZSBzaWdpbnRlcnJ1cHQgc2V0dGluZyBpcyBub3cgcHJlc2VydmVkIGZvciBhbGwgc2lnbmFscywgbm90CisgIGp1c3QgU0lHQ0hMRC4KKworLSBJc3N1ZSAjNzE5Mjogd2ViYnJvd3Nlci5nZXQoImZpcmVmb3giKSBub3cgd29ya3Mgb24gTWFjIE9TIFgsIGFzIGRvZXMKKyAgd2ViYnJvd3Nlci5nZXQoInNhZmFyaSIpLgorCistIElzc3VlICM4NDY0OiB0YXJmaWxlIG5vIGxvbmdlciBjcmVhdGVzIGZpbGVzIHdpdGggZXhlY3V0ZSBwZXJtaXNzaW9ucyBzZXQgd2hlbgorICBtb2RlPSJ3fCIgaXMgdXNlZC4KKworLSBJc3N1ZSAjNzgzNDogRml4IGNvbm5lY3QoKSBvZiBCbHVldG9vdGggTDJDQVAgc29ja2V0cyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZgorICB0aGUgTGludXgga2VybmVsLiAgUGF0Y2ggYnkgWWFuaXYgQWtuaW4uCisKKy0gSXNzdWUgIzgyOTU6IEFkZGVkIHNodXRpbC51bnBhY2tfYXJjaGl2ZS4KKworLSBJc3N1ZSAjNjMxMjogRml4ZWQgaHR0cCBIRUFEIHJlcXVlc3Qgd2hlbiB0aGUgdHJhbnNmZXIgZW5jb2RpbmcgaXMgY2h1bmtlZC4KKyAgSXQgc2hvdWxkIGNvcnJlY3RseSByZXR1cm4gYW4gZW1wdHkgcmVzcG9uc2Ugbm93LgorCistIElzc3VlICM4NTQ2OiBSZWplY3QgTm9uZSBnaXZlbiBhcyB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IHRvIF9weWlvLm9wZW4uCisKKy0gSXNzdWUgIzg1NDk6IEZpeCBjb21waWxpbmcgdGhlIF9zc2wgZXh0ZW5zaW9uIHVuZGVyIEFJWC4gIFBhdGNoIGJ5CisgIFNyaWRoYXIgUmF0bmFrdW1hci4KKworLSBJc3N1ZSAjNjY1NjogZml4IGxvY2FsZS5mb3JtYXRfc3RyaW5nIHRvIGhhbmRsZSBlc2NhcGVkIHBlcmNlbnRzCisgIGFuZCBtYXBwaW5ncy4KKworLSBJc3N1ZSAjMjMwMjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2h1dGRvd24sIHdoZXJlCisgIHRoZSBtZXRob2QgY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IGlmIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgZXZlbnQgbG9vcAorICBzdGFydGVkIHJ1bm5pbmcuICBUaGlzIGFsc28gZml4ZXMgdGhlIG9jY2FzaW9uYWwgZnJlZXplcyB3aXRuZXNzZWQgaW4KKyAgdGVzdF9odHRwc2VydmVycy4KKworLSBJc3N1ZSAjODUyNDogV2hlbiBjcmVhdGluZyBhbiBTU0wgc29ja2V0LCB0aGUgdGltZW91dCB2YWx1ZSBvZiB0aGUgb3JpZ2luYWwKKyAgc29ja2V0IHdhc24ndCByZXRhaW5lZCAoaW5zdGVhZCwgYSBzb2NrZXQgd2l0aCBhIHBvc2l0aXZlIHRpbWVvdXQgd291bGQgYmUKKyAgdHVybmVkIGludG8gYSBub24tYmxvY2tpbmcgU1NMIHNvY2tldCkuCisKKy0gSXNzdWUgIzUxMDM6IFNTTCBoYW5kc2hha2Ugd291bGQgaWdub3JlIHRoZSBzb2NrZXQgdGltZW91dCBhbmQgYmxvY2sKKyAgaW5kZWZpbml0ZWx5IGlmIHRoZSBvdGhlciBlbmQgZGlkbid0IHJlc3BvbmQuCisKKy0gVGhlIGRvX2hhbmRzaGFrZSgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyBub3cgYWRqdXN0cyB0aGUgYmxvY2tpbmcgbW9kZSBvZiB0aGUKKyAgU1NMIHN0cnVjdHVyZSBpZiBuZWNlc3NhcnkgKGFzIG90aGVyIG1ldGhvZHMgYWxyZWFkeSBkbykuCisKKy0gSXNzdWUgIzgzOTE6IG9zLmV4ZWN2cGUoKSBhbmQgb3MuZ2V0ZW52KCkgc3VwcG9ydHMgdW5pY29kZSB3aXRoIHN1cnJvZ2F0ZXMgYW5kCisgIGJ5dGVzIHN0cmluZ3MgZm9yIGVudmlyb25tZW50IGtleXMgYW5kIHZhbHVlcy4KKworLSBJc3N1ZSAjODQ2NzogUHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3VicHJvY2VzcyBlbmNvZGVzIHRoZSBlcnJvcgorICBtZXNzYWdlIHVzaW5nIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlciB0byBzdXBwb3J0IHN1cnJvZ2F0ZXMgaW4gdGhlCisgIG1lc3NhZ2UuCisKKy0gSXNzdWUgIzg0Njg6IGJ6Mi5CWjJGaWxlKCkgYWNjZXB0cyBzdHIgd2l0aCBzdXJyb2dhdGVzIGFuZCBieXRlcyBmaWxlbmFtZXMuCisKKy0gSXNzdWUgIzg0NTE6IFN5c2xvZyBtb2R1bGUgbm93IHVzZXMgYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pIGluc3RlYWQgb2YgdGhlCisgIHN0cmluZyAicHl0aG9uIiBhcyB0aGUgKmlkZW50Ki4gIG9wZW5sb2coKSBhcmd1bWVudHMgYXJlIGFsbCBvcHRpb25hbCBhbmQKKyAga2V5d29yZHMuCisKKy0gSXNzdWUgIzgxMDg6IEZpeCB0aGUgdW53cmFwKCkgbWV0aG9kIG9mIFNTTCBvYmplY3RzIHdoZW4gdGhlIHNvY2tldCBoYXMgYQorICBub24taW5maW5pdGUgdGltZW91dC4gIEFsc28gbWFrZSB0aGF0IG1ldGhvZCBmcmllbmRsaWVyIHdpdGggYXBwbGljYXRpb25zCisgIHdhbnRpbmcgdG8gY29udGludWUgdXNpbmcgdGhlIHNvY2tldCBpbiBjbGVhci10ZXh0IG1vZGUsIGJ5IGRpc2FibGluZworICBPcGVuU1NMJ3MgaW50ZXJuYWwgcmVhZGFoZWFkLiAgVGhhbmtzIHRvIERhcnJ5bCBNaWxlcyBmb3IgZ3VpZGFuY2UuCisKKy0gSXNzdWUgIzg0OTY6IG1ha2UgbWFpbGNhcC5sb29rdXAoKSBhbHdheXMgcmV0dXJuIGEgbGlzdCwgcmF0aGVyIHRoYW4gYW4KKyAgaXRlcmF0b3IuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCisKKy0gSXNzdWUgIzgxOTU6IEZpeCBhIGNyYXNoIGluIHNxbGl0ZSBDb25uZWN0aW9uLmNyZWF0ZV9jb2xsYXRpb24oKSBpZiB0aGUKKyAgY29sbGF0aW9uIG5hbWUgY29udGFpbnMgYSBzdXJyb2dhdGUgY2hhcmFjdGVyLgorCistIElzc3VlICM4NDg0OiBMb2FkIGFsbCBjaXBoZXJzIGFuZCBkaWdlc3QgYWxnb3JpdGhtcyB3aGVuIGluaXRpYWxpemluZyB0aGUgX3NzbAorICBleHRlbnNpb24sIHN1Y2ggdGhhdCB2ZXJpZmljYXRpb24gb2Ygc29tZSBTU0wgY2VydGlmaWNhdGVzIGRvZXNuJ3QgZmFpbAorICBiZWNhdXNlIG9mIGFuICJ1bmtub3duIGFsZ29yaXRobSIuCisKKy0gSXNzdWUgIzY1NDc6IEFkZGVkIHRoZSBpZ25vcmVfZGFuZ2xpbmdfc3ltbGlua3Mgb3B0aW9uIHRvIHNodXRpbC5jb3B5dHJlZS4KKworLSBJc3N1ZSAjMTU0MDExMjogTm93IGFsbG93aW5nIHRoZSBjaG9pY2Ugb2YgYSBjb3B5IGZ1bmN0aW9uIGluIHNodXRpbC5jb3B5dHJlZS4KKworLSBJc3N1ZSAjNDgxNDogdGltZW91dCBwYXJhbWV0ZXIgaXMgbm93IGFwcGxpZWQgYWxzbyBmb3IgY29ubmVjdGlvbnMgcmVzdWx0aW5nCisgIGZyb20gUE9SVC9FUFJUIGNvbW1hbmRzLgorCistIElzc3VlICM4NDYzOiBhZGRlZCBtaXNzaW5nIHJlZmVyZW5jZSB0byBienRhciBpbiBzaHV0aWwncyBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM3MTU0OiB1cmxsaWIucmVxdWVzdCBjYW4gbm93IGRldGVjdCB0aGUgcHJveHkgc2V0dGluZ3Mgb24gT1NYIDEwLjYgKGFzCisgIGxvbmcgYXMgdGhlIHVzZXIgZGlkbid0IHNwZWNpZnkgJ2F1dG9tYXRpYyBwcm94eSBjb25maWd1cmF0aW9uJykuCisKKy0gSXNzdWUgIzM4MTc6IGZ0cGxpYi5GVFAuYWJvcnQoKSBtZXRob2Qgbm93IGNvbnNpZGVycyAyMjUgYSB2YWxpZCByZXNwb25zZSBjb2RlCisgIGFzIHN0YXRlZCBpbiBSRkMtOTU5IGF0IGNoYXB0ZXIgNS40LgorCistIElzc3VlICM4Mzk0OiBfY3R5cGVzLmRsb3BlbigpIGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGgKKyAgc3Vycm9nYXRlcy4KKworLSBJc3N1ZSAjODUwNzI4OiBBZGQgYSAqdGltZW91dCogcGFyYW1ldGVyIHRvIHRoZSBgYWNxdWlyZSgpYCBtZXRob2Qgb2YKKyAgYHRocmVhZGluZy5TZW1hcGhvcmVgIG9iamVjdHMuICBPcmlnaW5hbCBwYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCisKKy0gSXNzdWUgIzgzMjI6IEFkZCBhICpjaXBoZXJzKiBhcmd1bWVudCB0byBTU0wgc29ja2V0cywgc28gYXMgdG8gY2hhbmdlIHRoZQorICBhdmFpbGFibGUgY2lwaGVyIGxpc3QuICBIZWxwcyBmaXggdGVzdF9zc2wgd2l0aCBPcGVuU1NMIDEuMC4wLgorCistIElzc3VlICM4MzkzOiBzdWJwcm9jZXNzIGFjY2VwdHMgYnl0ZXMsIGJ5dGVhcnJheSBhbmQgc3RyIHdpdGggc3Vycm9nYXRlcyBmb3IKKyAgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzc2MDY6IFhNTC1SUEMgdHJhY2ViYWNrIHN0b3JlZCBpbiBYLXRyYWNlYmFjayBpcyBub3cgZW5jb2RlZCB0byBBU0NJSQorICB1c2luZyBiYWNrc2xhc2hyZXBsYWNlIGVycm9yIGhhbmRsZXIuCisKKy0gSXNzdWUgIzg0MTI6IG9zLnN5c3RlbSgpIG5vdyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMuCisKKy0gSXNzdWUgIzI5ODc6IFJGQzI3MzIgc3VwcG9ydCBmb3IgdXJscGFyc2UgKElQdjYgYWRkcmVzc2VzKS4gUGF0Y2ggYnkgVG9ueQorICBMb2NrZSBhbmQgSGFucyBVbHJpY2ggTmllZGVybWFubi4KKworLSBJc3N1ZSAjNTI3NzogRml4IHF1b3RlIGNvdW50aW5nIHdoZW4gcGFyc2luZyBSRkMgMjIzMSBlbmNvZGVkIHBhcmFtZXRlcnMuCisKKy0gSXNzdWUgIzczMTY6IFRoZSBhY3F1aXJlKCkgbWV0aG9kIG9mIGxvY2sgb2JqZWN0cyBpbiB0aGUgYGB0aHJlYWRpbmdgYAorICBtb2R1bGUgbm93IHRha2VzIGFuIG9wdGlvbmFsIHRpbWVvdXQgYXJndW1lbnQgaW4gc2Vjb25kcy4gIFRpbWVvdXQgc3VwcG9ydAorICByZWxpZXMgb24gdGhlIHN5c3RlbSB0aHJlYWRpbmcgbGlicmFyeSwgc28gYXMgdG8gYXZvaWQgYSBzZW1pLWJ1c3kgd2FpdCBsb29wLgorCistIElzc3VlICM4MzgzOiBwaWNrbGUgYW5kIHBpY2tsZXRvb2xzIHVzZSBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgd2hlbgorICBlbmNvZGluZyB1bmljb2RlIGFzIHV0ZjggdG8gc3VwcG9ydCBsb25lIHN1cnJvZ2F0ZXMgYW5kIHN0YXkgY29tcGF0aWJsZSB3aXRoCisgIFB5dGhvbiAyLnggYW5kIDMueC4KKworLSBJc3N1ZSAjNzU4NTogZGlmZmxpYiBjb250ZXh0IGFuZCB1bmlmaWVkIGRpZmZzIG5vdyBwbGFjZSBhIHRhYiBiZXR3ZWVuCisgIGZpbGVuYW1lIGFuZCBkYXRlLCBjb25mb3JtaW5nIHRvIHRoZSAnc3RhbmRhcmRzJyB0aGV5IHdlcmUgb3JpZ2luYWxseSBkZXNpZ25lZAorICB0byBmb2xsb3cuICBUaGlzIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBwYXRjaCB0b29scy4KKworLSBJc3N1ZSAjNzQ3MjogRml4ZWQgdHlwbyBpbiBlbWFpbC5lbmNvZGVycyBtb2R1bGU7IG1lc3NhZ2VzIHVzaW5nIElTTy0yMDIyCisgIGNoYXJhY3RlciBzZXRzIHdpbGwgbm93IGNvbnNpc3RlbnRseSB1c2UgYSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIG9mIDdiaXQKKyAgcmF0aGVyIHRoYW4gc29tZXRpbWVzIGJlaW5nIG1hcmtlZCBhcyA4Yml0LgorCistIElzc3VlICM4Mzc1OiB0ZXN0X2Rpc3R1dGlscyBub3cgY2hlY2tzIGlmIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGFyZSBzdGlsbAorICBwcmVzZW50IGJlZm9yZSBpdCBjbGVhbnMgdGhlbS4KKworLSBJc3N1ZSAjODM3NDogVXBkYXRlIHRoZSBpbnRlcm5hbCBhbGlhcyB0YWJsZSBpbiB0aGUgYGBsb2NhbGVgYCBtb2R1bGUgdG8KKyAgY292ZXIgcmVjZW50IGxvY2FsZSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMuCisKKy0gSXNzdWUgIzgzMjE6IEdpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwKKyAgdXNpbmcgdGhlIG5ldyBhdHRyaWJ1dGVzIGBzc2wuT1BFTlNTTF9WRVJTSU9OYCwgYHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GT2AgYW5kCisgIGBzc2wuT1BFTlNTTF9WRVJTSU9OX05VTUJFUmAuCisKKy0gQWRkIGZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIGFuZCBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgorCistIElzc3VlICM4MjU3OiBUaGUgRGVjaW1hbCBjb25zdHJ1Y3Qgbm93IGFjY2VwdHMgYSBmbG9hdCBpbnN0YW5jZSBkaXJlY3RseSwKKyAgY29udmVydGluZyB0aGF0IGZsb2F0IHRvIGEgRGVjaW1hbCBvZiBlcXVhbCB2YWx1ZToKKworICAgICA+Pj4gRGVjaW1hbCgxLjEpCisgICAgIERlY2ltYWwoJzEuMTAwMDAwMDAwMDAwMDAwMDg4ODE3ODQxOTcwMDEyNTIzMjMzODkwNTMzNDQ3MjY1NjI1JykKKworLSBJc3N1ZSAjODI5NDogVGhlIEZyYWN0aW9uIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIERlY2ltYWwgYW5kIGZsb2F0IGluc3RhbmNlcworICBkaXJlY3RseS4KKworLSBJc3N1ZSAjNzI3OTogQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgRGVjaW1hbCBzaWduYWxpbmcgTmFOIG5vdyBzaWduYWwKKyAgSW52YWxpZE9wZXJhdGlvbiBpbnN0ZWFkIG9mIHJldHVybmluZyBGYWxzZS4gIChDb21wYXJpc29ucyBpbnZvbHZpbmcgYSBxdWlldAorICBOYU4gYXJlIHVuY2hhbmdlZC4pICBBbHNvLCBEZWNpbWFsIHF1aWV0IE5hTnMgYXJlIG5vdyBoYXNoYWJsZTsgRGVjaW1hbAorICBzaWduYWxpbmcgTmFOcyByZW1haW4gdW5oYXNoYWJsZS4KKworLSBJc3N1ZSAjMjUzMTogQ29tcGFyaXNvbiBvcGVyYXRpb25zIGJldHdlZW4gZmxvYXRzIGFuZCBEZWNpbWFsIGluc3RhbmNlcyBub3cKKyAgcmV0dXJuIGEgcmVzdWx0IGJhc2VkIG9uIHRoZSBudW1lcmljIHZhbHVlcyBvZiB0aGUgb3BlcmFuZHM7IHByZXZpb3VzbHkgdGhleQorICByZXR1cm5lZCBhbiBhcmJpdHJhcnkgcmVzdWx0IGJhc2VkIG9uIHRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBpZChmbG9hdCkgYW5kCisgIGlkKERlY2ltYWwpLiAgU2VlIGFsc28gaXNzdWUgIzgxODgsIHdoaWNoIGFkZHMgRGVjaW1hbC10by1GcmFjdGlvbgorICBjb21wYXJpc29ucy4KKworLSBBZGRlZCBhIHN1YnRyYWN0KCkgbWV0aG9kIHRvIGNvbGxlY3Rpb25zLkNvdW50ZXIoKS4KKworLSBJc3N1ZSAjODIzMzogV2hlbiBydW4gYXMgYSBzY3JpcHQsIHB5X2NvbXBpbGUucHkgb3B0aW9uYWxseSB0YWtlcyBhIHNpbmdsZQorICBhcmd1bWVudCBgLWAgd2hpY2ggdGVsbHMgaXQgdG8gcmVhZCBmaWxlcyB0byBjb21waWxlIGZyb20gc3RkaW4uICBFYWNoIGxpbmUgaXMKKyAgcmVhZCBvbiBkZW1hbmQgYW5kIHRoZSBuYW1lZCBmaWxlIGlzIGNvbXBpbGVkIGltbWVkaWF0ZWx5LiAgKE9yaWdpbmFsIHBhdGNoIGJ5CisgIFBpb3RyIE/FvGFyb3dza2kpLgorCistIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlOiBVbmljb2RlIGNvZGVwb2ludHMgbGluZSB0YWJ1bGF0aW9uICgweDBCKSBhbmQKKyAgZm9ybSBmZWVkICgweDBDKSBhcmUgbm93IGNvbnNpZGVyZWQgbGluZWJyZWFrcywgYXMgc3BlY2lmaWVkIGluIFVuaWNvZGUKKyAgU3RhbmRhcmQgQW5uZXggIzE0LiAgU2VlIGlzc3VlICM3NjQzLiAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMTQvCisKKy0gQ29tcGFyaXNvbnMgdXNpbmcgb25lIG9mIDwsIDw9LCA+LCA+PSBiZXR3ZWVuIGEgY29tcGxleCBpbnN0YW5jZSBhbmQgYQorICBGcmFjdGlvbnMgaW5zdGFuY2Ugbm93IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBUcnVlL0ZhbHNlLiAgVGhpcworICBtYWtlcyBGcmFjdGlvbiA8PT4gY29tcGxleCBjb21wYXJpc29ucyBjb25zaXN0ZW50IHdpdGggaW50IDw9PiBjb21wbGV4LCBmbG9hdAorICA8PT4gY29tcGxleCwgYW5kIGNvbXBsZXggPD0+IGNvbXBsZXggY29tcGFyaXNvbnMuCisKKy0gSXNzdWUgIzgxMzk6IG9zc2F1ZGlvZGV2IGRpZG4ndCBpbml0aWFsaXplIGl0cyB0eXBlcyBwcm9wZXJseSwgdGhlcmVmb3JlIHNvbWUKKyAgbWV0aG9kcyAoc3VjaCBhcyBvc3NfbWl4ZXJfZGV2aWNlLmZpbGVubygpKSB3ZXJlIG5vdCBhdmFpbGFibGUuICBJbml0aWFsIHBhdGNoCisgIGJ5IEJlcnRyYW5kIEphbmluLgorCistIElzc3VlICM4MjA1OiBSZW1vdmUgdGhlICJNb2R1bGVzIiBkaXJlY3RvcnkgZnJvbSBzeXMucGF0aCB3aGVuIFB5dGhvbiBpcworICBydW5uaW5nIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeSAoUE9TSVggb25seSkuCisKKy0gSXNzdWUgIzc1MTI6IHNodXRpbC5jb3B5c3RhdCgpIGNvdWxkIHJhaXNlIGFuIE9TRXJyb3Igd2hlbiB0aGUgZmlsZXN5c3RlbQorICBkaWRuJ3Qgc3VwcG9ydCBjaGZsYWdzKCkgKGZvciBleGFtcGxlIFpGUyB1bmRlciBGcmVlQlNEKS4gIFRoZSBlcnJvciBpcyBub3cKKyAgc2lsZW5jZWQuCisKKy0gSXNzdWUgIzc4NjA6IHBsYXRmb3JtLnVuYW1lIG5vdyByZXBvcnRzIHRoZSBjb3JyZWN0ICdtYWNoaW5lJyB0eXBlIHdoZW4gUHl0aG9uCisgIGlzIHJ1bm5pbmcgaW4gV09XNjQgbW9kZSBvbiA2NCBiaXQgV2luZG93cy4KKworLSBJc3N1ZSAjMzg5MCwgIzgyMjI6IEZpeCByZWN2KCkgYW5kIHJlY3ZfaW50bygpIG9uIG5vbi1ibG9ja2luZyBTU0wgc29ja2V0cy4KKyAgQWxzbywgZW5hYmxlIHRoZSBTU0xfTU9ERV9BVVRPX1JFVFJZIGZsYWcgb24gU1NMIHNvY2tldHMsIHNvIHRoYXQgYmxvY2tpbmcKKyAgcmVhZHMgYW5kIHdyaXRlcyBhcmUgYWx3YXlzIHJldHJpZWQgYnkgT3BlblNTTCBpdHNlbGYuCisKKy0gSXNzdWUgIzQyODI6IEZpeCB0aGUgbWFpbiBmdW5jdGlvbiBvZiB0aGUgcHJvZmlsZSBtb2R1bGUgZm9yIGEgbm9uLUFTQ0lJCisgIHNjcmlwdCwgb3BlbiB0aGUgZmlsZSBpbiBiaW5hcnkgbW9kZSBhbmQgbm90IGluIHRleHQgbW9kZSB3aXRoIHRoZSBkZWZhdWx0CisgICh1dGY4KSBlbmNvZGluZy4KKworLSBJc3N1ZSAjODE3OTogRml4IG1hY3BhdGgucmVhbHBhdGgoKSBvbiBhIG5vbi1leGlzdGluZyBwYXRoLgorCistIElzc3VlICM4MDI0OiBVcGRhdGUgdGhlIFVuaWNvZGUgZGF0YWJhc2UgdG8gNS4yLgorCistIElzc3VlICM4MTY4OiBweV9jb21waWxlIG5vdyBoYW5kbGVzIGZpbGVzIHdpdGggdXRmLTggQk9NUy4KKworLSBgYHRva2VuaXplLmRldGVjdF9lbmNvZGluZ2BgIG5vdyByZXR1cm5zIGBgJ3V0Zi04LXNpZydgYCB3aGVuIGEgVVRGLTggQk9NIGlzCisgIGRldGVjdGVkLgorCistIElzc3VlICM2NzE2LzI6IEJhY2tzbGFzaC1yZXBsYWNlIGVycm9yIG91dHB1dCBpbiBjb21waWxhbGwuCisKKy0gSXNzdWUgIzQ5NjE6IEluY29uc2lzdGVudC93cm9uZyByZXN1bHQgb2YgYXNreWVzbm8gZnVuY3Rpb24gaW4gdGtNZXNzYWdlQm94CisgIHdpdGggVGNsL1RrLTguNS4KKworLSBJc3N1ZSAjODE0MDogZXh0ZW5kIGNvbXBpbGVhbGwgdG8gY29tcGlsZSBzaW5nbGUgZmlsZXMuICBBZGQgLWkgb3B0aW9uLgorCistIElzc3VlICM3MzU2OiBjdHlwZXMudXRpbDogTWFrZSBwYXJzaW5nIG9mIGxkY29uZmlnIG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKKyAgbG9jYWxlLgorCistIFRoZSBpbnRlcm5hbHMgb2YgdGhlIHN1YnByb2Nlc3MgbW9kdWxlIG9uIFBPU0lYIHN5c3RlbXMgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5CisgIGFuIGV4dGVuc2lvbiBtb2R1bGUgKF9wb3NpeHN1YnByb2Nlc3MpIHNvIHRoYXQgdGhlIGZvcmsoKStleGVjKCkgY2FuIGJlIGRvbmUKKyAgc2FmZWx5IHdpdGhvdXQgdGhlIHBvc3NpYmlsaXR5IG9mIGRlYWRsb2NrIGluIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zLgorCistIHN1YnByb2Nlc3MuUG9wZW4gbm93IGhhcyByZXN0b3JlX3NpZ25hbHMgYW5kIHN0YXJ0X25ld19zZXNzaW9uIGZlYXR1cmVzLiAgVGhlCisgIGRlZmF1bHQgb2YgcmVzdG9yZV9zaWduYWxzPVRydWUgaXMgYSBuZXcgYmVoYXZpb3IgY29tcGFyZWQgdG8gZWFybGllciBQeXRob24KKyAgdmVyc2lvbnMuICBUaGlzIG1lYW5zIHRoYXQgc2lnbmFscyBzdWNoIGFzIFNJR1BJUEUgYXJlIG5vdCBpZ25vcmVkIGJ5IGRlZmF1bHQKKyAgaW4gc3VicHJvY2Vzc2VzIGxhdW5jaGVkIGJ5IFB5dGhvbiAoSXNzdWUgIzE2NTIpLgorCistIElzc3VlICM2NDcyOiBUaGUgeG1sLmV0cmVlIHBhY2thZ2UgaXMgdXBkYXRlZCB0byBFbGVtZW50VHJlZSAxLjMuICBUaGUKKyAgY0VsZW1lbnRUcmVlIG1vZHVsZSBpcyB1cGRhdGVkIHRvby4KKworLSBJc3N1ZSAjNzc3NDogU2V0IHN5cy5leGVjdXRhYmxlIHRvIGFuIGVtcHR5IHN0cmluZyBpZiBhcmd2WzBdIGhhcyBiZWVuIHNldCB0bworICBhbiBub24gZXhpc3RlbnQgcHJvZ3JhbSBuYW1lIGFuZCBQeXRob24gaXMgdW5hYmxlIHRvIHJldHJpZXZlIHRoZSByZWFsIHByb2dyYW0KKyAgbmFtZS4KKworLSBJc3N1ZSAjNzg4MDogRml4IHN5c2NvbmZpZyB3aGVuIHRoZSBweXRob24gZXhlY3V0YWJsZSBpcyBhIHN5bWJvbGljIGxpbmsuCisKKy0gSXNzdWUgIzY1MDk6IGZpeCByZS5zdWIgdG8gd29yayBwcm9wZXJseSB3aGVuIHRoZSBwYXR0ZXJuLCB0aGUgc3RyaW5nLCBhbmQgdGhlCisgIHJlcGxhY2VtZW50IHdlcmUgYWxsIGJ5dGVzLiAgUGF0Y2ggYnkgQW50b2luZSBQaXRyb3UuCisKKy0gVGhlIHNxbGl0ZTMgbW9kdWxlIHdhcyB1cGRhdGVkIHRvIHB5c3FsaXRlIDIuNi4wLiBUaGlzIGZpeGVzIHNldmVyYWwgb2JzY3VyZQorICBidWdzIGFuZCBhbGxvd3MgbG9hZGluZyBTUUxpdGUgZXh0ZW5zaW9ucyBmcm9tIHNoYXJlZCBsaWJyYXJpZXMuCisKKy0gSXNzdWUgIzEwNTQ5NDM6IEZpeCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgdGV4dClgYCBmb3IgdGhlIFB1YmxpYworICBSZXZpZXcgSXNzdWUgIzI5IChodHRwOi8vdW5pY29kZS5vcmcvcmV2aWV3L3ByLTI5Lmh0bWwpLgorCistIElzc3VlICM3NDk0OiBmaXggYSBjcmFzaCBpbiBfbHNwcm9mIChjUHJvZmlsZSkgYWZ0ZXIgY2xlYXJpbmcgdGhlIHByb2ZpbGVyLAorICByZXNldCBhbHNvIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHBvaW50ZXIgY29udGV4dC4KKworLSBJc3N1ZSAjNzIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgdG8gdGhlIFRhckZpbGUKKyAgY2xhc3MuCisKKy0gSXNzdWUgIzcyNTA6IEZpeCBpbmZvIGxlYWsgb2Ygb3MuZW52aXJvbiBhY3Jvc3MgbXVsdGktcnVuIHVzZXMgb2YKKyAgd3NnaXJlZi5oYW5kbGVycy5DR0lIYW5kbGVyLgorCistIElzc3VlICMxNzI5MzA1OiBGaXggZG9jdGVzdCB0byBoYW5kbGUgZW5jb2RlIGVycm9yIHdpdGggImJhY2tzbGFzaHJlcGxhY2UiLgorCistIElzc3VlICM2OTEyOTE6IGNvZGVjcy5vcGVuKCkgc2hvdWxkIG5vdCBjb252ZXJ0IGVuZCBvZiBsaW5lcyBvbiByZWFkaW5nIGFuZAorICB3cml0aW5nLgorCistIElzc3VlICM3ODY5OiBsb2dnaW5nOiBpbXByb3ZlZCBkaWFnbm9zdGljIGZvciBmb3JtYXQtdGltZSBlcnJvcnMuCisKKy0gSXNzdWUgIzc4Njg6IGxvZ2dpbmc6IGFkZGVkIGxvZ2dlckNsYXNzIGF0dHJpYnV0ZSB0byBNYW5hZ2VyLgorCistIGxvZ2dpbmc6IEltcGxlbWVudGVkIFBFUCAzOTEuCisKKy0gSXNzdWUgIzE1Mzc3MjE6IEFkZCBhIHdyaXRlaGVhZGVyKCkgbWV0aG9kIHRvIGNzdi5EaWN0V3JpdGVyLgorCistIElzc3VlICM3OTU5OiBjdHlwZXMgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBub3cgcmVnaXN0ZXJlZCBjb3JyZWN0bHkgd2l0aCB0aGUKKyAgY3ljbGUgZ2FyYmFnZSBjb2xsZWN0b3IuCisKKy0gSXNzdWUgIzU4MDE6IHJlbW92ZWQgc3B1cmlvdXMgZW1wdHkgbGluZXMgaW4gd3NnaXJlZi4KKworLSBJc3N1ZSAjNjY2NjogZml4IGJ1ZyBpbiB0cmFjZS5weSB0aGF0IGFwcGxpZWQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYmUKKyAgaWdub3JlZCBvbmx5IHRvIHRoZSBmaXJzdCBmaWxlLiAgTm90ZWQgYnkgQm9nZGFuIE9wYW5jaHVrLgorCistIElzc3VlICM3NTk3OiBjdXJzZXMudXNlX2VudigpIGNhbiBub3cgYmUgY2FsbGVkIGJlZm9yZSBpbml0c2NyKCkuICBOb3RlZCBieQorICBLYW4tUnUgQ2hlbi4KKworLSBJc3N1ZSAjNzMxMDogZml4IHRoZSBfX3JlcHJfXyBvZiBvcy5lbnZpcm9uIHRvIHNob3cgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKworLSBJc3N1ZSAjNzk3MDogZW1haWwuR2VuZXJhdG9yLmZsYXR0ZW4gbm93IGNvcnJlY3RseSBmbGF0dGVucyBtZXNzYWdlL3JmYzgyMgorICBtZXNzYWdlcyBwYXJzZWQgYnkgZW1haWwuUGFyc2VyLkhlYWRlclBhcnNlci4KKworLSBJc3N1ZSAjNzM2MTogSW1wb3J0bGliIHdhcyBub3QgcHJvcGVybHkgY2hlY2tpbmcgdGhlIG51bWJlciBvZiBieXRlcyBpbgorICBieXRlY29kZSBmaWxlIHdoZW4gaXQgd2FzIGxlc3MgdGhlbiA4IGJ5dGVzLgorCistIElzc3VlICM3NjMzOiBJbiB0aGUgZGVjaW1hbCBtb2R1bGUsIENvbnRleHQgY2xhc3MgbWV0aG9kcyAod2l0aCB0aGUgZXhjZXB0aW9uCisgIG9mIGNhbm9uaWNhbCBhbmQgaXNfY2Fub25pY2FsKSBub3cgYWNjZXB0IGluc3RhbmNlcyBvZiBpbnQgYW5kIGxvbmcgd2hlcmV2ZXIgYQorICBEZWNpbWFsIGluc3RhbmNlIGlzIGFjY2VwdGVkLCBhbmQgaW1wbGljaXRseSBjb252ZXJ0IHRoYXQgYXJndW1lbnQgdG8gRGVjaW1hbC4KKyAgUHJldmlvdXNseSBvbmx5IHNvbWUgYXJndW1lbnRzIHdlcmUgY29udmVydGVkLgorCistIElzc3VlICM3ODM1OiBzaGVsdmUgc2hvdWxkIG5vIGxvbmdlciBwcm9kdWNlIG15c3RlcmlvdXMgd2FybmluZ3MgZHVyaW5nCisgIGludGVycHJldGVyIHNodXRkb3duLgorCistIElzc3VlICMyNzQ2OiBEb24ndCBlc2NhcGUgYW1wZXJzYW5kcyBhbmQgYW5nbGUgYnJhY2tldHMgKCImIiwgIjwiLCAiPiIpIGluIFhNTAorICBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBhbmQgY29tbWVudHMuICBUaGVzZSByYXcgY2hhcmFjdGVycyBhcmUgYWxsb3dlZCBieSB0aGUKKyAgWE1MIHNwZWNpZmljYXRpb24sIGFuZCBhcmUgbmVjZXNzYXJ5IHdoZW4gb3V0cHV0dGluZyBlLmcuICBQSFAgY29kZSBpbiBhCisgIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uICBQYXRjaCBieSBOZWlsIE11bGxlci4KKworLSBJc3N1ZSAjNjIzMzogRWxlbWVudFRyZWUgZmFpbGVkIGNvbnZlcnRpbmcgdW5pY29kZSBjaGFyYWN0ZXJzIHRvIFhNTCBlbnRpdGllcworICB3aGVuIHRoZXkgY291bGQndCBiZSByZXByZXNlbnRlZCBpbiB0aGUgcmVxdWVzdGVkIG91dHB1dCBlbmNvZGluZy4gIFBhdGNoIGJ5CisgIEplcnJ5IENoZW4uCisKKy0gSXNzdWUgIzYwMDM6IGFkZCBhbiBhcmd1bWVudCB0byBgYHppcGZpbGUuWmlwZmlsZS53cml0ZXN0cmBgIHRvIHNwZWNpZnkgdGhlCisgIGNvbXByZXNzaW9uIHR5cGUuCisKKy0gSXNzdWUgIzQ3NzI6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGFuIHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIGlzCisgIHNwZWNpZmllZCwgcmF0aGVyIHRoYW4gZmFsbCB0aHJvdWdoIHRvIEFGX1BBQ0tFVCAoaW4gdGhlIGBzb2NrZXRgIG1vZHVsZSkuCisgIEFsc28sIHJhaXNlIFZhbHVlRXJyb3IgcmF0aGVyIHRoYW4gVHlwZUVycm9yIHdoZW4gYW4gdW5rbm93biBUSVBDIGFkZHJlc3MgdHlwZQorICBpcyBzcGVjaWZpZWQuICBQYXRjaCBieSBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzY5Mzk6IEZpeCBmaWxlIEkvTyBvYmplY3RzIGluIHRoZSBgaW9gIG1vZHVsZSB0byBrZWVwIHRoZSBvcmlnaW5hbCBmaWxlCisgIHBvc2l0aW9uIHdoZW4gY2FsbGluZyBgdHJ1bmNhdGUoKWAuICBJdCB3b3VsZCBwcmV2aW91c2x5IGNoYW5nZSB0aGUgZmlsZQorICBwb3NpdGlvbiB0byB0aGUgZ2l2ZW4gYXJndW1lbnQsIHdoaWNoIGdvZXMgYWdhaW5zdCB0aGUgdHJhZGl0aW9uIG9mCisgIGZ0cnVuY2F0ZSgpIGFuZCBvdGhlciB0cnVuY2F0aW9uIEFQSXMuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KKworLSBJc3N1ZSAjNzYxMDogUmV3b3JrZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsCisgIGBgemlwZmlsZS5aaXBFeHRGaWxlYGAgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgZmlsZXMgc3RvcmVkIGluc2lkZSBhbgorICBhcmNoaXZlLiAgVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBzaWduaWZpY2FudGx5IGZhc3RlciBhbmQgY2FuIGJlIHdyYXBwZWQgaW4KKyAgYSBgYGlvLkJ1ZmZlcmVkUmVhZGVyYGAgb2JqZWN0IGZvciBtb3JlIHNwZWVkdXBzLiAgSXQgYWxzbyBzb2x2ZXMgYW4KKyAgaXNzdWUgd2hlcmUgaW50ZXJsZWF2ZWQgY2FsbHMgdG8gYHJlYWQoKWAgYW5kIGByZWFkbGluZSgpYCBnaXZlIHdyb25nIHJlc3VsdHMuCisgIFBhdGNoIGJ5IE5pciBBaWRlcy4KKworLSBJc3N1ZSAjNjk2MzogQWRkZWQgIm1heHRhc2tzcGVyY2hpbGQiIGFyZ3VtZW50IHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLAorICBhbGxvd2luZyBmb3IgYSBtYXhpbXVtIG51bWJlciBvZiB0YXNrcyB3aXRoaW4gdGhlIHBvb2wgdG8gYmUgY29tcGxldGVkIGJ5IHRoZQorICB3b3JrZXIgYmVmb3JlIHRoYXQgd29ya2VyIGlzIHRlcm1pbmF0ZWQsIGFuZCBhIG5ldyBvbmUgY3JlYXRlZCB0byByZXBsYWNlIGl0LgorCistIElzc3VlICM3NzkyOiBSZWdpc3RlcmluZyBub24tY2xhc3NlcyB0byBBQkNzIHJhaXNlZCBhbiBvYnNjdXJlIGVycm9yLgorCistIElzc3VlICM3Nzg1OiBEb24ndCBhY2NlcHQgYnl0ZXMgaW4gRmlsZUlPLndyaXRlKCkuCisKKy0gUmVtb3ZlZCB0aGUgZnVuY3Rpb25zICd2ZXJpZnknIGFuZCAndmVyZXEnIGZyb20gTGliL3Rlc3Qvc3VwcG9ydC5weS4KKworLSBJc3N1ZSAjNzc3MzogRml4IGFuIFVuYm91bmRMb2NhbEVycm9yIGluIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIHdoZW4KKyAgdGhlIHJlbGVhc2UgZmlsZSBpcyBlbXB0eS4KKworLSBJc3N1ZSAjNzU2MTogRml4IGNyYXNoZXMgd2hlbiB1c2luZyBieXRlYXJyYXkgb2JqZWN0cyB3aXRoIHRoZSBwb3NpeAorICBtb2R1bGUuCisKKy0gSXNzdWUgIzE2NzA3NjU6IFByZXZlbnQgZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvciBmcm9tIHJlLXdyYXBwaW5nIGhlYWRlcnMgaW4KKyAgbXVsdGlwYXJ0L3NpZ25lZCBNSU1FIHBhcnRzLCB3aGljaCBmaXhlcyBvbmUgb2YgdGhlIHNvdXJjZXMgb2YgaW52YWxpZAorICBtb2RpZmljYXRpb25zIHRvIHN1Y2ggcGFydHMgYnkgR2VuZXJhdG9yLgorCistIElzc3VlICM3NzAzOiBBZGQgc3VwcG9ydCBmb3IgdGhlIG5ldyBidWZmZXIgQVBJIHRvIGBiaW5hc2NpaS5hMmJocXhgLiAgUGF0Y2gKKyAgYnkgRmxvcmVudCBYaWNsdW5hLCBhbG9uZyB3aXRoIHNvbWUgYWRkaXRpb25hbCB0ZXN0cy4KKworLSBJc3N1ZSAjNzcwMTogRml4IGNyYXNoIGluIGJpbmFzY2lpLmIyYV91dSgpIGluIGRlYnVnIG1vZGUgd2hlbiBnaXZlbiBhIDEtYnl0ZQorICBhcmd1bWVudC4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCistIElzc3VlICMzMjk5OiBGaXggcG9zc2libGUgY3Jhc2ggaW4gdGhlIF9zcmUgbW9kdWxlIHdoZW4gZ2l2ZW4gYmFkIGFyZ3VtZW50CisgIHZhbHVlcyBpbiBkZWJ1ZyBtb2RlLiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzI4NDY6IEFkZCBzdXBwb3J0IGZvciBnemlwLkd6aXBGaWxlIHJlYWRpbmcgemVyby1wYWRkZWQgZmlsZXMuICBQYXRjaAorICBieSBCcmlhbiBDdXJ0aW4uCisKKy0gSXNzdWUgIzc2ODE6IFVzZSBmbG9vciBkaXZpc2lvbiBpbiBhcHByb3BpYXRlIHBsYWNlcyBpbiB0aGUgd2F2ZSBtb2R1bGUuCisKKy0gSXNzdWUgIzUzNzI6IERyb3AgdGhlIHJldXNlIG9mIC5vIGZpbGVzIGluIERpc3R1dGlscycgY2NvbXBpbGVyIChzaW5jZQorICBFeHRlbnNpb24gZXh0cmEgb3B0aW9ucyBtYXkgY2hhbmdlIHRoZSBvdXRwdXQgd2l0aG91dCBjaGFuZ2luZyB0aGUgLmMKKyAgZmlsZSkuIEluaXRpYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KKworLSBJc3N1ZSAjNzYxNzogTWFrZSBzdXJlIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyLlVuaXhDQ29tcGlsZXIgcmVjb2duaXplcyBnY2MKKyAgd2hlbiBpdCBoYXMgYSBmdWxseSBxdWFsaWZpZWQgY29uZmlndXJhdGlvbiBwcmVmaXguIEluaXRpYWwgcGF0Y2ggYnkgQXJmcmV2ZXIuCisKKy0gSXNzdWUgIzcxMDU6IE1ha2UgV2Vha0tleURpY3Rpb25hcnkgYW5kIFdlYWtWYWx1ZURpY3Rpb25hcnkgcm9idXN0IGFnYWluc3QgdGhlCisgIGRlc3RydWN0aW9uIG9mIHdlYWtyZWYnZWQgb2JqZWN0cyB3aGlsZSBpdGVyYXRpbmcuCisKKy0gSXNzdWUgIzc0NTU6IEZpeCBwb3NzaWJsZSBjcmFzaCBpbiBjUGlja2xlIG9uIGludmFsaWQgaW5wdXQuICBQYXRjaCBieSBWaWN0b3IKKyAgU3Rpbm5lci4KKworLSBJc3N1ZSAjMTYyODIwNTogU29ja2V0IGZpbGUgb2JqZWN0cyByZXR1cm5lZCBieSBzb2NrZXQuc29ja2V0Lm1ha2VmaWxlKCkgbm93CisgIHByb3Blcmx5IGhhbmRsZXMgRUlOVFIgd2l0aGluIHRoZSByZWFkLCByZWFkbGluZSwgd3JpdGUgJiBmbHVzaCBtZXRob2RzLiAgVGhlCisgIHNvY2tldC5zZW5kYWxsKCkgbWV0aG9kIG5vdyBwcm9wZXJseSBoYW5kbGVzIGludGVycnVwdGVkIHN5c3RlbSBjYWxscy4KKworLSBJc3N1ZSAjNzQ3MTogSW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgR3ppcEZpbGUncyBidWZmZXJpbmcgbWVjaGFuaXNtLCBhbmQKKyAgbWFrZSBpdCBpbXBsZW1lbnQgdGhlIGBpby5CdWZmZXJlZElPQmFzZWAgQUJDIHRvIGFsbG93IGZvciBmdXJ0aGVyIHNwZWVkdXBzIGJ5CisgIHdyYXBwaW5nIGl0IGluIGFuIGBpby5CdWZmZXJlZFJlYWRlcmAuICBQYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzM5NzI6IGh0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzCisgIHBhcmFtZXRlciB0byBhbGxvdyBzcGVjaWZ5aW5nIHdoZXJlIHlvdXIgY29ubmVjdGlvbnMgY29tZSBmcm9tLgorCistIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbiBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcyBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzU1MTE6IG5vdyB6aXBmaWxlLlppcEZpbGUgY2FuIGJlIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIuICBJbml0aWFsCisgIHBhdGNoIGJ5IEJyaWFuIEN1cnRpbi4KKworLSBJc3N1ZSAjNzU1NjogTWFrZSBzdXJlIERpc3R1dGlscycgbXN2Yzljb21waWxlIHJlYWRzIGFuZCB3cml0ZXMgdGhlIE1TVkMgWE1MCisgIE1hbmlmZXN0IGZpbGUgaW4gdGV4dCBtb2RlIHNvIHN0cmluZyBwYXR0ZXJucyBjYW4gYmUgdXNlZCBpbiByZWd1bGFyCisgIGV4cHJlc3Npb25zLgorCistIElzc3VlICM3NTUyOiBSZW1vdmVkIGxpbmUgZmVlZCBpbiB0aGUgYmFzZTY0IEF1dGhvcml6YXRpb24gaGVhZGVyIGluIHRoZQorICBEaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgdG8gYXZvaWQgYW4gZXJyb3Igd2hlbiBQeVBJIHJlYWRzIGl0LiAgVGhpcyBvY2N1cnMgb24KKyAgbG9uZyBwYXNzd29yZHMuIEluaXRpYWwgcGF0Y2ggYnkgSlAgU3QuIFBpZXJyZS4KKworLSBJc3N1ZSAjNzIzMTogdXJsbGliMiBjYW5ub3QgaGFuZGxlIGh0dHBzIHdpdGggcHJveHkgcmVxdWlyaW5nIGF1dGguICBQYXRjaCBieQorICBUYXRzdWhpcm8gVHN1amlrYXdhLgorCistIElzc3VlICM0NzU3OiBgemxpYi5jb21wcmVzc2AgYW5kIG90aGVyIG1ldGhvZHMgaW4gdGhlIHpsaWIgbW9kdWxlIG5vdyByYWlzZSBhCisgIFR5cGVFcnJvciB3aGVuIGdpdmVuIGFuIGBzdHJgIG9iamVjdCAocmF0aGVyIHRoYW4gYSBgYnl0ZXNgLWxpa2Ugb2JqZWN0KS4KKyAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIgYW5kIEZsb3JlbnQgWGljbHVuYS4KKworLSBJc3N1ZSAjNzM0OTogTWFrZSBtZXRob2RzIG9mIGZpbGUgb2JqZWN0cyBpbiB0aGUgaW8gbW9kdWxlIGFjY2VwdCBOb25lIGFzIGFuCisgIGFyZ3VtZW50IHdoZXJlIGZpbGUtbGlrZSBvYmplY3RzIChpZSBTdHJpbmdJTyBhbmQgQnl0ZXNJTykgYWNjZXB0IHRoZW0gdG8gbWVhbgorICB0aGUgc2FtZSBhcyBwYXNzaW5nIG5vIGFyZ3VtZW50LgorCistIElzc3VlICM3MzU3OiB0YXJmaWxlIG5vIGxvbmdlciBzdXBwcmVzc2VzIGZhdGFsIGV4dHJhY3Rpb24gZXJyb3JzIGJ5IGRlZmF1bHQuCisKKy0gSXNzdWUgIzU5NDk6IGFkZGVkIGNoZWNrIGZvciBjb3JyZWN0IGxpbmVlbmRzIGluIGlucHV0IGZyb20gSU1BUCBzZXJ2ZXIgaW4KKyAgaW1hcGxpYi4KKworLSBBZGQgY291bnQoKSBhbmQgcmV2ZXJzZSgpIG1ldGhvZHMgdG8gY29sbGVjdGlvbnMuZGVxdWUoKS4KKworLSBGaXggdmFyaWF0aW9ucyBvZiBleHRlbmRpbmcgZGVxdWVzOiAgZC5leHRlbmQoZCkgIGQuZXh0ZW5kbGVmdChkKSAgZCs9ZAorCistIElzc3VlICM2OTg2OiBGaXggY3Jhc2ggaW4gdGhlIEpTT04gQyBhY2NlbGVyYXRvciB3aGVuIGNhbGxlZCB3aXRoIHRoZSB3cm9uZworICBwYXJhbWV0ZXIgdHlwZXMuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjNzQ1NzogYWRkZWQgYSByZWFkX3BrZ19maWxlIG1ldGhvZCB0bworICBkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb25NZXRhZGF0YS4KKworLSBsb2dnaW5nOiBBZGRlZCBvcHRpb25hbCBgc2VjdXJlYCBwYXJhbWV0ZXIgdG8gU01UUEhhbmRsZXIsIHRvIGVuYWJsZSB1c2Ugb2YKKyAgVExTIHdpdGggYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCisKKy0gSXNzdWUgIzE5MjM6IEZpeGVkIHRoZSByZW1vdmFsIG9mIG1lYW5pbmdmdWwgc3BhY2VzIHdoZW4gUEtHLUlORk8gaXMgZ2VuZXJhdGVkCisgIGluIERpc3R1dGlscy4gIFBhdGNoIGJ5IFN0ZXBoZW4gRW1zbGllLgorCistIElzc3VlICM0MTIwOiBEcm9wIHJlZmVyZW5jZSB0byBDUlQgZnJvbSBtYW5pZmVzdCB3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbnMgd2l0aAorICBtc3ZjOWNvbXBpbGVyLgorCistIElzc3VlICM3MzMzOiBUaGUgYHBvc2l4YCBtb2R1bGUgZ2FpbnMgYW4gYGluaXRncm91cHMoKWAgZnVuY3Rpb24gcHJvdmlkaW5nCisgIGFjY2VzcyB0byB0aGUgaW5pdGdyb3VwcygzKSBDIGxpYnJhcnkgY2FsbCBvbiBVbml4IHN5c3RlbXMgd2hpY2ggaW1wbGVtZW50IGl0LgorICBQYXRjaCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lLgorCistIElzc3VlICM3NDA4OiBGaXhlZCBkaXN0dXRpbHMudGVzdHMuc2Rpc3Qgc28gaXQgZG9lc24ndCBjaGVjayBmb3IgZ3JvdXAKKyAgb3duZXJzaGlwIHdoZW4gdGhlIGdyb3VwIGlzIG5vdCBmb3JjZWQsIGJlY2F1c2UgdGhlIGdyb3VwIG1heSBiZSBkaWZmZXJlbnQKKyAgZnJvbSB0aGUgdXNlcidzIGdyb3VwIGFuZCBpbmhlcml0IGZyb20gaXRzIGNvbnRhaW5lciB3aGVuIHRoZSB0ZXN0IGlzIHJ1bi4KKworLSBJc3N1ZSAjNDQ4NjogV2hlbiBhbiBleGNlcHRpb24gaGFzIGFuIGV4cGxpY2l0IGNhdXNlLCBkbyBub3QgcHJpbnQgaXRzCisgIGltcGxpY2l0IGNvbnRleHQgdG9vLiAgVGhpcyBhZmZlY3RzIHRoZSBgdHJhY2ViYWNrYCBtb2R1bGUgYXMgd2VsbCBhcyBidWlsdC1pbgorICBleGNlcHRpb24gcHJpbnRpbmcuCisKKy0gSXNzdWUgIzE1MTU6IEVuYWJsZSB1c2Ugb2YgZGVlcGNvcHkoKSB3aXRoIGluc3RhbmNlIG1ldGhvZHMuICBQYXRjaCBieSBSb2JlcnQKKyAgQ29sbGlucy4KKworLSBJc3N1ZSAjNzQwMzogbG9nZ2luZzogRml4ZWQgcG9zc2libGUgcmFjZSBjb25kaXRpb24gaW4gbG9jayBjcmVhdGlvbi4KKworLSBJc3N1ZSAjNjg0NTogQWRkIHJlc3RhcnQgc3VwcG9ydCBmb3IgYmluYXJ5IHVwbG9hZCBpbiBmdHBsaWIuICBUaGUKKyAgYHN0b3JiaW5hcnkoKWAgbWV0aG9kIG9mIEZUUCBhbmQgRlRQX1RMUyBvYmplY3RzIGdhaW5zIGFuIG9wdGlvbmFsIGByZXN0YAorICBhcmd1bWVudC4gIFBhdGNoIGJ5IFBhYmxvIE1vdXpvLgorCistIElzc3VlICM1Nzg4OiBgZGF0ZXRpbWUudGltZWRlbHRhYCBvYmplY3RzIGdldCBhIG5ldyBgdG90YWxfc2Vjb25kcygpYCBtZXRob2QKKyAgcmV0dXJuaW5nIHRoZSB0b3RhbCBudW1iZXIgb2Ygc2Vjb25kcyBpbiB0aGUgZHVyYXRpb24uICBQYXRjaCBieSBCcmlhbgorICBRdWlubGFuLgorCistIElzc3VlICM3MTMzOiBTU0wgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgbmV3IGJ1ZmZlciBBUEkuCisKKy0gSXNzdWUgIzE0ODg5NDM6IGRpZmZsaWIuRGlmZmVyKCkgZG9lc24ndCBhbHdheXMgYWRkIGhpbnRzIGZvciB0YWIgY2hhcmFjdGVycy4KKworLSBJc3N1ZSAjNjEyMzogdGFyZmlsZSBub3cgb3BlbnMgZW1wdHkgYXJjaGl2ZXMgY29ycmVjdGx5IGFuZCBjb25zaXN0ZW50bHkKKyAgcmFpc2VzIFJlYWRFcnJvciBvbiBlbXB0eSBmaWxlcy4KKworLSBJc3N1ZSAjNzM1NDogZGlzdHV0aWxzLnRlc3RzLnRlc3RfbXN2Yzljb21waWxlciAtIGRyYWdmdWxsd2luZG93cyBjYW4gYmUgMi4KKworLSBJc3N1ZSAjNTAzNzogUHJveHkgdGhlIF9fYnl0ZXNfXyBzcGVjaWFsIG1ldGhvZCBpbnN0ZWFkIHRvIF9fYnl0ZXNfXyBpbnN0ZWFkCisgIG9mIF9fc3RyX18uCisKKy0gSXNzdWUgIzczNDE6IENsb3NlIHRoZSBpbnRlcm5hbCBmaWxlIG9iamVjdCBpbiB0aGUgVGFyRmlsZSBjb25zdHJ1Y3RvciBpbiBjYXNlCisgIG9mIGFuIGVycm9yLgorCistIElzc3VlICM3MjkzOiBkaXN0dXRpbHMudGVzdF9tc3ZjOWNvbXBpbGVyIGlzIGZpeGVkIHRvIHdvcmsgb24gYW55IGZyZXNoCisgIFdpbmRvd3MgYm94LiBIZWxwIHByb3ZpZGVkIGJ5IERhdmlkIEJvbGVuLgorCistIElzc3VlICMyMDU0OiBmdHBsaWIgbm93IHByb3ZpZGVzIGFuIEZUUF9UTFMgY2xhc3MgdG8gZG8gc2VjdXJlIEZUUCB1c2luZyBUTFMKKyAgb3IgU1NMLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCisKKy0gSXNzdWUgIzczMjg6IHB5ZG9jIG5vIGxvbmdlciBjb3JydXB0cyBzeXMucGF0aCB3aGVuIHJ1biB3aXRoIHRoZSAnLW0nIHN3aXRjaC4KKworLSBJc3N1ZSAjNDk2OTogVGhlIG1pbWV0eXBlcyBtb2R1bGUgbm93IHJlYWRzIHRoZSBNSU1FIGRhdGFiYXNlIGZyb20gdGhlCisgIHJlZ2lzdHJ5IHVuZGVyIFdpbmRvd3MuICBQYXRjaCBieSBHYWJyaWVsIEdlbmVsbGluYS4KKworLSBJc3N1ZSAjNjgxNjogcnVucHkgbm93IHByb3ZpZGVzIGEgcnVuX3BhdGggZnVuY3Rpb24gdGhhdCBhbGxvd3MgUHl0aG9uIGNvZGUgdG8KKyAgZXhlY3V0ZSBmaWxlIHBhdGhzIHRoYXQgcmVmZXIgdG8gc291cmNlIG9yIGNvbXBpbGVkIFB5dGhvbiBmaWxlcyBhcyB3ZWxsIGFzCisgIHppcGZpbGVzLCBkaXJlY3RvcmllcyBhbmQgb3RoZXIgdmFsaWQgc3lzLnBhdGggZW50cmllcyB0aGF0IGNvbnRhaW4gYQorICBfX21haW5fXy5weSBmaWxlLiAgVGhpcyBhbGxvd3MgYXBwbGljYXRpb25zIHRoYXQgcnVuIG90aGVyIFB5dGhvbiBzY3JpcHRzIHRvCisgIHN1cHBvcnQgdGhlIHNhbWUgZmxleGliaWxpdHkgYXMgdGhlIENQeXRob24gY29tbWFuZCBsaW5lIGl0c2VsZi4KKworLSBJc3N1ZSAjNzMxODogbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIGEgdGltZW91dCB3aGVuIGl0IGZhaWxzIHRvIGVzdGFibGlzaCBhCisgIGNvbm5lY3Rpb24gd2l0aCBhbm90aGVyIHByb2Nlc3MsIHJhdGhlciB0aGFuIGxvb3BpbmcgZW5kbGVzc2x5LiAgVGhlIGRlZmF1bHQKKyAgdGltZW91dCBpcyAyMCBzZWNvbmRzLCB3aGljaCBzaG91bGQgYmUgYW1wbHkgc3VmZmljaWVudCBmb3IgbG9jYWwgY29ubmVjdGlvbnMuCisKKy0gSXNzdWUgIzcxOTc6IEFsbG93IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIG9iamVjdHMgdG8gYmUgcGlja2xlZCBhbmQKKyAgdW5waWNrbGVkLiAgVGhpcyBmaXhlcyBjcmFzaGVzIHVuZGVyIFdpbmRvd3Mgd2hlbiB0cnlpbmcgdG8gcnVuCisgIHRlc3RfbXVsdGlwcm9jZXNzaW5nIGluIHZlcmJvc2UgbW9kZS4KKworLSBJc3N1ZSAjNzg5MzogYGB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdGBgIGlzIG1hZGUgcHVibGljIGFuZCBhIGBgcmVzdWx0Y2xhc3NgYAorICBhcmd1bWVudCBhZGRlZCB0byB0aGUgVGV4dFRlc3RSdW5uZXIgY29uc3RydWN0b3IgYWxsb3dpbmcgYSBkaWZmZXJlbnQgcmVzdWx0CisgIGNsYXNzIHRvIGJlIHVzZWQgd2l0aG91dCBoYXZpbmcgdG8gc3ViY2xhc3MuCisKKy0gSXNzdWUgIzc1ODg6IGBgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQuZ2V0RGVzY3JpcHRpb25gYCBub3cgaW5jbHVkZXMgdGhlIHRlc3QKKyAgbmFtZSBpbiBmYWlsdXJlIHJlcG9ydHMgZXZlbiBpZiB0aGUgdGVzdCBoYXMgYSBkb2NzdHJpbmcuCisKKy0gSXNzdWUgIzMwMDE6IEFkZCBhIEMgaW1wbGVtZW50YXRpb24gb2YgcmVjdXJzaXZlIGxvY2tzIHdoaWNoIGlzIHVzZWQgYnkKKyAgZGVmYXVsdCB3aGVuIGluc3RhbnRpYXRpbmcgYSBgdGhyZWFkaW5nLlJMb2NrYCBvYmplY3QuIFRoaXMgbWFrZXMgcmVjdXJzaXZlCisgIGxvY2tzIGFzIGZhc3QgYXMgcmVndWxhciBub24tcmVjdXJzaXZlIGxvY2tzIChwcmV2aW91c2x5LCB0aGV5IHdlcmUgc2xvd2VyIGJ5CisgIDEweCB0byAxNXgpLgorCistIElzc3VlICM3MjgyOiBGaXggYSBtZW1vcnkgbGVhayB3aGVuIGFuIFJMb2NrIHdhcyB1c2VkIGluIGEgdGhyZWFkIG90aGVyIHRoYW4KKyAgdGhvc2Ugc3RhcnRlZCB0aHJvdWdoIGB0aHJlYWRpbmcuVGhyZWFkYCAoZm9yIGV4YW1wbGUsIHVzaW5nCisgIGBfdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKWApLgorCistIElzc3VlICM3MTg3OiBJbXBvcnRsaWIgd291bGQgbm90IHNpbGVuY2UgdGhlIElPRXJyb3IgcmFpc2VkIHdoZW4gdHJ5aW5nIHRvCisgIHdyaXRlIG5ldyBieXRlY29kZSB3aGVuIGl0IHdhcyBtYWRlIHJlYWQtb25seS4KKworLSBJc3N1ZSAjNzI2NDogRml4IGEgcG9zc2libGUgZGVhZGxvY2sgd2hlbiBkZWFsbG9jYXRpbmcgdGhyZWFkLWxvY2FsIG9iamVjdHMKKyAgd2hpY2ggYXJlIHBhcnQgb2YgYSByZWZlcmVuY2UgY3ljbGUuCisKKy0gSXNzdWUgIzcyMTE6IEFsbG93IDY0LWJpdCB2YWx1ZXMgZm9yIHRoZSBgaWRlbnRgIGFuZCBgZGF0YWAgZmllbGRzIG9mIGtldmVudAorICBvYmplY3RzIG9uIDY0LWJpdCBzeXN0ZW1zLiAgUGF0Y2ggYnkgTWljaGFlbCBCcm9naHRvbi4KKworLSBJc3N1ZSAjNjg5NjogbWFpbGJveC5NYWlsZGlyIG5vdyBpbnZhbGlkYXRlcyBpdHMgaW50ZXJuYWwgY2FjaGUgZWFjaCB0aW1lIGEKKyAgbW9kaWZpY2F0aW9uIGlzIGRvbmUgdGhyb3VnaCBpdC4gIFRoaXMgZml4ZXMgaW5jb25zaXN0ZW5jaWVzIGFuZCB0ZXN0IGZhaWx1cmVzCisgIG9uIHN5c3RlbXMgd2l0aCBzbGlnaHRseSBib2d1cyBtdGltZSBiZWhhdmlvdXIuCisKKy0gSXNzdWUgIzcyNDYgJiBJc3N1ZSAjNzIwODogZ2V0cGFzcyBub3cgcHJvcGVybHkgZmx1c2hlcyBpbnB1dCBiZWZvcmUgcmVhZGluZworICBmcm9tIHN0ZGluIHNvIHRoYXQgZXhpc3RpbmcgaW5wdXQgZG9lcyBub3QgY29uZnVzZSBpdCBhbmQgbGVhZCB0byBpbmNvcnJlY3QKKyAgZW50cnkgb3IgYW4gSU9FcnJvci4gIEl0IGFsc28gcHJvcGVybHkgZmx1c2hlcyBpdCBhZnRlcndhcmRzIHRvIGF2b2lkIHRoZQorICB0ZXJtaW5hbCBlY2hvaW5nIHRoZSBpbnB1dCBhZnRlcndhcmRzIG9uIE9TZXMgc3VjaCBhcyBTb2xhcmlzLgorCistIElzc3VlICM3MjMzOiBGaXggYSBudW1iZXIgb2YgdHdvLWFyZ3VtZW50IERlY2ltYWwgbWV0aG9kcyB0byBtYWtlIHN1cmUgdGhhdAorICB0aGV5IGFjY2VwdCBhbiBpbnQgb3IgbG9uZyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LiAgQWxzbyBmaXggYnVnZ3kgaGFuZGxpbmcgb2YKKyAgbGFyZ2UgYXJndW1lbnRzICh0aG9zZSB3aXRoIGNvZWZmaWNpZW50IGxvbmdlciB0aGFuIHRoZSBjdXJyZW50IHByZWNpc2lvbikgaW4KKyAgc2hpZnQgYW5kIHJvdGF0ZS4KKworLSBJc3N1ZSAjNDc1MDogU3RvcmUgdGhlIGJhc2VuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlbmFtZSBpbiB0aGUgZ3ppcCBGTkFNRQorICBoZWFkZXIgYXMgcmVxdWlyZWQgYnkgUkZDIDE5NTIuCisKKy0gSXNzdWUgIzExODA6IEFkZGVkIGEgbmV3IGdsb2JhbCBvcHRpb24gdG8gaWdub3JlIH4vLnB5ZGlzdHV0aWxzLmNmZyBpbgorICBEaXN0dXRpbHMuCisKKy0gSXNzdWUgIzcyMTg6IEZpeCB0ZXN0X3NpdGUgZm9yIHdpbjMyLCB0aGUgZGlyZWN0b3J5IGNvbXBhcmlzb24gd2FzIGRvbmUgd2l0aAorICBhbiB1cHBlcmNhc2UuCisKKy0gSXNzdWUgIzcyMDU6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gdXNpbmcgYSBCWjJGaWxlIG9iamVjdCBmcm9tCisgIHNldmVyYWwgdGhyZWFkcyBhdCBvbmNlLgorCistIElzc3VlICM3MDc3OiBsb2dnaW5nOiBTeXNMb2dIYW5kbGVyIG5vdyB0cmVhdHMgVW5pY29kZSBhcyBwZXIgUkZDIDU0MjQuCisKKy0gSXNzdWUgIzcwOTk6IERlY2ltYWwuaXNfbm9ybWFsIG5vdyByZXR1cm5zIFRydWUgZm9yIG51bWJlcnMgd2l0aCBleHBvbmVudAorICBsYXJnZXIgdGhhbiBlbWF4LgorCistIElzc3VlICM3MDgwOiBsb2NhbGUuc3RyeGZybSgpIHJhaXNlcyBhIE1lbW9yeUVycm9yIG9uIDY0LWJpdCBub24tV2luZG93cworICBwbGF0Zm9ybXMsIGFuZCBhc3NvcnRlZCBsb2NhbGUgZml4ZXMgYnkgRGVyayBEcnVra2VyLgorCistIElzc3VlICM1ODMzOiBGaXggZXh0cmEgc3BhY2UgY2hhcmFjdGVyIGluIHJlYWRsaW5lIGNvbXBsZXRpb24gd2l0aCB0aGUgR05VCisgIHJlYWRsaW5lIGxpYnJhcnkgdmVyc2lvbiA2LjAuCisKKy0gSXNzdWUgIzY4OTQ6IEZpeGVkIHRoZSBpc3N1ZSB1cmxsaWIyIGRvZXNuJ3QgcmVzcGVjdCAibm9fcHJveHkiIGVudmlyb25tZW50LgorCistIElzc3VlICM3MDg2OiBBZGRlZCBUQ1Agc3VwcG9ydCB0byBTeXNMb2dIYW5kbGVyLCBhbmQgdGlkaWVkIHVwIHNvbWUKKyAgYW5hY2hyb25pc21zIGluIHRoZSBjb2RlIHdoaWNoIHdlcmUgYSByZWxpYyBvZiAxLjUuMiBjb21wYXRpYmlsaXR5LgorCistIElzc3VlICM3MDgyOiBXaGVuIGZhbGxpbmcgYmFjayB0byB0aGUgTUlNRSAnbmFtZScgcGFyYW1ldGVyLCB0aGUgY29ycmVjdCBwbGFjZQorICB0byBsb29rIGZvciBpdCBpcyB0aGUgQ29udGVudC1UeXBlIGhlYWRlci4KKworLSBNYWtlIHRva2VuaXplLmRldGVjdF9jb2RpbmcoKSBub3JtYWxpemUgdXRmLTggYW5kIGlzby04ODU5LTEgdmFyaWFudHMgbGlrZSB0aGUKKyAgYnVpbHRpbiB0b2tlbml6ZXIuCisKKy0gSXNzdWUgIzcwNDg6IEZvcmNlIERlY2ltYWwubG9nYiB0byByb3VuZCBpdHMgcmVzdWx0IHdoZW4gdGhhdCByZXN1bHQgaXMgdG9vCisgIGxhcmdlIHRvIGZpdCBpbiB0aGUgY3VycmVudCBwcmVjaXNpb24uCisKKy0gSXNzdWUgIzYyMzYsICM2MzQ4OiBGaXggdmFyaW91cyBmYWlsdXJlcyBpbiB0aGUgSS9PIGxpYnJhcnkgdW5kZXIgQUlYIGFuZAorICBvdGhlciBwbGF0Zm9ybXMsIHdoZW4gdXNpbmcgYSBub24tZ2NjIGNvbXBpbGVyLiBQYXRjaCBieSBEZXJrIERydWtrZXIuCisKKy0gSXNzdWUgIzQ2MDY6IFBhc3NpbmcgJ05vbmUnIGlmIGN0eXBlcyBhcmd0eXBlIGlzIHNldCB0byBQT0lOVEVSKC4uLikgIGRvZXMgbm93CisgIGFsd2F5cyByZXN1bHQgaW4gTlVMTC4KKworLSBJc3N1ZSAjNTA0MjogU3RydWN0dXJlIHN1Yi1zdWJjbGFzcyBkb2VzIG5vdyBpbml0aWFsaXplIGNvcnJlY3RseSB3aXRoIGJhc2UKKyAgY2xhc3MgcG9zaXRpb25hbCBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzY4ODI6IEltcG9ydCB1dWlkIGNyZWF0ZXMgem9tYmllcyBwcm9jZXNzZXMuCisKKy0gSXNzdWUgIzY2MzU6IEZpeCBwcm9maWxlciBwcmludGluZyB1c2FnZSBtZXNzYWdlLgorCistIElzc3VlICM2ODU2OiBBZGQgYSBmaWx0ZXIga2V5d29yZCBhcmd1bWVudCB0byBUYXJGaWxlLmFkZCgpLgorCistIElzc3VlICM2ODg4OiBwZGIncyBhbGlhcyBjb21tYW5kIHdhcyBicm9rZW4gd2hlbiBubyBhcmd1bWVudHMgd2VyZSBnaXZlbi4KKworLSBJc3N1ZSAjNjg1NzogRGVmYXVsdCBmb3JtYXQoKSBhbGlnbm1lbnQgc2hvdWxkIGJlICc+JyBmb3IgRGVjaW1hbCBpbnN0YW5jZXMuCisKKy0gSXNzdWUgIzY3OTU6IGludChEZWNpbWFsKCduYW4nKSkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nCisgIE5hTiBvciByYWlzaW5nIEludmFsaWRDb250ZXh0LiAgQWxzbywgZml4IGluZmluaXRlIHJlY3Vyc2lvbiBpbgorICBsb25nKERlY2ltYWwoJ25hbicpKS4KKworLSBJc3N1ZSAjNjg1MDogRml4IGJ1ZyBpbiBEZWNpbWFsLl9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyIGZvciBmb3JtYXRzIHdpdGggbm8KKyAgdHlwZSBzcGVjaWZpZXIuCisKKy0gSXNzdWUgIzYyMzk6IGN0eXBlcy5jX2NoYXJfcCByZXR1cm4gdmFsdWUgbXVzdCByZXR1cm4gYnl0ZXMuCisKKy0gSXNzdWUgIzY4Mzg6IFVzZSBhIGxpc3QgdG8gYWNjdW11bGF0ZSB0aGUgdmFsdWUgaW5zdGVhZCBvZiByZXBlYXRlZGx5CisgIGNvbmNhdGVuYXRpbmcgc3RyaW5ncyBpbiBodHRwLmNsaWVudCdzIEhUVFBSZXNwb25zZS5fcmVhZF9jaHVua2VkIHByb3ZpZGluZyBhCisgIHNpZ25pZmljYW50IHNwZWVkIGluY3JlYXNlIHdoZW4gZG93bmxvYWRpbmcgbGFyZ2UgZmlsZXMgc2VydmVuZCB3aXRoIGEKKyAgVHJhbnNmZXItRW5jb2Rpbmcgb2YgJ2NodW5rZWQnLgorCistIFRyeWluZyB0byBpbXBvcnQgYSBzdWJtb2R1bGUgZnJvbSBhIG1vZHVsZSB0aGF0IGlzIG5vdCBhIHBhY2thZ2UsIEltcG9ydEVycm9yCisgIHNob3VsZCBiZSByYWlzZWQsIG5vdCBBdHRyaWJ1dGVFcnJvci4KKworLSBXaGVuIHRoZSBnbG9iYWxzIHBhc3QgdG8gaW1wb3J0bGliLl9faW1wb3J0X18oKSBoYXMgX19wYWNrYWdlX18gc2V0IHRvIE5vbmUsCisgIGZhbGwgYmFjayB0byBjb21wdXRpbmcgd2hhdCBfX3BhY2thZ2VfXyBzaG91bGQgYmUgaW5zdGVhZCBvZiBnaXZpbmcgdXAuCisKKy0gUmFpc2UgYSBUeXBlRXJyb3Igd2hlbiB0aGUgbmFtZSBvZiBhIG1vZHVsZSB0byBiZSBpbXBvcnRlZCBmb3IKKyAgaW1wb3J0bGliLl9faW1wb3J0X18gaXMgbm90IGEgc3RyaW5nICh3YXMgcmFpc2luZyBhbiBBdHRyaWJ1dGVFcnJvciBiZWZvcmUpLgorCistIEFsbG93IHRoZSBmcm9tbGlzdCBwYXNzZWQgaW50byBpbXBvcnRsaWIuX19pbXBvcnRfXyB0byBiZSBhbnkgaXRlcmFibGUuCisKKy0gSGF2ZSBpbXBvcnRsaWIgcmFpc2UgSW1wb3J0RXJyb3IgaWYgTm9uZSBpcyBmb3VuZCBpbiBzeXMubW9kdWxlcy4KKworLSBJc3N1ZSAjNjA1NDogRG8gbm90IG5vcm1hbGl6ZSBzdG9yZWQgcGF0aG5hbWVzIGluIHRhcmZpbGUuCisKKy0gSXNzdWUgIzY3OTQ6IEZpeCBEZWNpbWFsLmNvbXBhcmVfdG90YWwgYW5kIERlY2ltYWwuY29tcGFyZV90b3RhbF9tYWc6IE5hTgorICBwYXlsb2FkcyBhcmUgbm93IG9yZGVyZWQgYnkgaW50ZWdlciB2YWx1ZSByYXRoZXIgdGhhbiBsZXhpY29ncmFwaGljYWxseS4KKworLSBJc3N1ZSAjMTM1Njk2OTogQWRkIG1pc3NpbmcgaW5mbyBtZXRob2RzIGluIHRpeC5ITGlzdC4KKworLSBJc3N1ZSAjMTUyMjU4NzogTmV3IGNvbnN0YW50cyBhbmQgbWV0aG9kcyBmb3IgdGhlIHRpeC5HcmlkIHdpZGdldC4KKworLSBJc3N1ZSAjMTI1MDQ2OTogRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgdGl4LlBhbmVkV2luZG93LnBhbmVzLgorCistIElzc3VlICMxMTE5NjczOiBEbyBub3Qgb3ZlcnJpZGUgdGtpbnRlci5UZXh0IG1ldGhvZHMgd2hlbiBjcmVhdGluZyBhCisgIFNjcm9sbGVkVGV4dC4KKworLSBJc3N1ZSAjNjY2NTogRml4IGZubWF0Y2ggdG8gcHJvcGVybHkgbWF0Y2ggZmlsZW5hbWVzIHdpdGggbmV3bGluZXMgaW4gdGhlbS4KKworLSBJc3N1ZSAjMTEzNTogQWRkIHRoZSBYVmlldyBhbmQgWVZpZXcgbWl4LWlucyB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgeHZpZXcqCisgIGFuZCB5dmlldyogbWV0aG9kcy4KKworLSBJc3N1ZSAjNjYyOTogRml4IGEgZGF0YSBjb3JydXB0aW9uIGlzc3VlIGluIHRoZSBuZXcgSS9PIGxpYnJhcnksIHdoaWNoIGNvdWxkCisgIG9jY3VyIHdoZW4gd3JpdGluZyB0byBhIEJ1ZmZlcmVkUmFuZG9tIG9iamVjdCAoZS5nLiBhIGZpbGUgb3BlbmVkIGluICJyYisiIG9yCisgICJ3YisiIG1vZGUpIGFmdGVyIGhhdmluZyBidWZmZXJlZCBhIGNlcnRhaW4gYW1vdW50IG9mIGRhdGEgZm9yIHJlYWRpbmcuIFRoaXMKKyAgYnVnIHdhcyBub3QgcHJlc2VudCBpbiB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzY2MjI6IEZpeCAibG9jYWwgdmFyaWFibGUgJ3NlY3JldCcgcmVmZXJlbmNlZCBiZWZvcmUgYXNzaWdubWVudCIgYnVnIGluCisgIFBPUDMuYXBvcC4KKworLSBJc3N1ZSAjMjcxNTogUmVtb3ZlIHJlbW5hbnRzIG9mIENhcmJvbi5GaWxlIGZyb20gYmluaGV4IG1vZHVsZS4KKworLSBJc3N1ZSAjNjU5NTogVGhlIERlY2ltYWwgY29uc3RydWN0b3Igbm93IGFsbG93cyBhcmJpdHJhcnkgVW5pY29kZSBkZWNpbWFsCisgIGRpZ2l0cyBpbiBpbnB1dCwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIHN0YW5kYXJkLiAgUHJldmlvdXNseSBpdCB3YXMgcmVzdHJpY3RlZAorICB0byBhY2NlcHRpbmcgWzAtOV0uCisKKy0gSXNzdWUgIzYxMDY6IHRlbG5ldGxpYi5UZWxuZXQucHJvY2Vzc19yYXdxIGRvZXNuJ3QgaGFuZGxlIGRlZmF1bHQgV0lMTC9XT05UCisgIERPL0RPTlQgY29ycmVjdGx5LgorCistIElzc3VlICMxNDI0MTUyOiBGaXggZm9yIGh0dHAuY2xpZW50LCB1cmxsaWIucmVxdWVzdCB0byBzdXBwb3J0IFNTTCB3aGlsZQorICB3b3JraW5nIHRocm91Z2ggcHJveHkuICBPcmlnaW5hbCBwYXRjaCBieSBDaHJpc3RvcGhlciBMaSwgY2hhbmdlcyBtYWRlIGJ5CisgIFNlbnRoaWwgS3VtYXJhbi4KKworLSBBZGQgaW1wb3J0bGliLmFiYy5FeGVjdXRpb25Mb2FkZXIgdG8gcmVwcmVzZW50IHRoZSBQRVAgMzAyIHByb3RvY29sIGZvcgorICBsb2FkZXJzIHRoYXQgYWxsb3cgZm9yIG1vZHVsZXMgdG8gYmUgZXhlY3V0ZWQuIEJvdGggaW1wb3J0bGliLmFiYy5QeUxvYWRlciBhbmQKKyAgUHlQeWNMb2FkZXIgaW5oZXJpdCBmcm9tIHRoaXMgY2xhc3MgYW5kIHByb3ZpZGUgaW1wbGVtZW50YXRpb25zIGluIHJlbGF0aW9uIHRvCisgIG90aGVyIG1ldGhvZHMgcmVxdWlyZWQgYnkgdGhlIEFCQ3MuCisKKy0gaW1wb3J0bGliLmFiYy5QeUxvYWRlciBkaWQgbm90IGluaGVyaXQgZnJvbSBpbXBvcnRsaWIuYWJjLlJlc291cmNlTG9hZGVyIGxpa2UKKyAgdGhlIGRvY3VtZW50YXRpb24gc2FpZCBpdCBkaWQgZXZlbiB0aG91Z2ggdGhlIGNvZGUgaW4gUHlMb2FkZXIgcmVsaWVkIG9uIHRoZQorICBhYnN0cmFjdCBtZXRob2QgcmVxdWlyZWQgYnkgUmVzb3VyY2VMb2FkZXIuCisKKy0gSXNzdWUgIzY0MzE6IE1ha2UgRnJhY3Rpb24gdHlwZSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbiBpdCBkb2Vzbid0IGtub3cgaG93CisgIHRvIGhhbmRsZSBhIGNvbXBhcmlzb24gd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi4gIEFsc28gYWRkIGNvcnJlY3QgaGFuZGxpbmcKKyAgb2YgaW5maW5pdGllcyBhbmQgbmFucyBmb3IgY29tcGFyaXNvbnMgd2l0aCBmbG9hdC4KKworLSBJc3N1ZSAjNjQxNTogRml4ZWQgd2FybmluZ3Mud2FybiBzZWdmYXVsdCBvbiBiYWQgZm9ybWF0dGVkIHN0cmluZy4KKworLSBJc3N1ZSAjNjM1ODogVGhlIGV4aXQgc3RhdHVzIG9mIGEgY29tbWFuZCBzdGFydGVkIHdpdGggb3MucG9wZW4oKSB3YXMgcmVwb3J0ZWQKKyAgZGlmZmVyZW50bHkgdGhhbiBpdCBkaWQgd2l0aCBweXRob24gMi54LgorCistIElzc3VlICM2MzIzOiBUaGUgcGRiIGRlYnVnZ2VyIGRpZCBub3QgZXhpdCB3aGVuIHJ1bm5pbmcgYSBzY3JpcHQgd2l0aCBhIHN5bnRheAorICBlcnJvci4KKworLSBJc3N1ZSAjMzM5MjogVGhlIHN1YnByb2Nlc3MgY29tbXVuaWNhdGUoKSBtZXRob2Qgbm8gbG9uZ2VyIGZhaWxzIGluIHNlbGVjdCgpCisgIHdoZW4gZmlsZSBkZXNjcmlwdG9ycyBhcmUgbGFyZ2U7IGNvbW11bmljYXRlKCkgbm93IHVzZXMgcG9sbCgpIHdoZW4gcG9zc2libGUuCisKKy0gSXNzdWUgIzYzNjk6IEZpeCBhbiBSTEUgZGVjb21wcmVzc2lvbiBidWcgaW4gdGhlIGJpbmhleCBtb2R1bGUuCisKKy0gSXNzdWUgIzYzNDQ6IEZpeGVkIGEgY3Jhc2ggb2YgbW1hcC5yZWFkKCkgd2hlbiBwYXNzZWQgYSBuZWdhdGl2ZSBhcmd1bWVudC4KKworLSBUaGUgZGVwcmVjYXRlZCBmdW5jdGlvbiBzdHJpbmcubWFrZXRyYW5zIGhhcyBiZWVuIHJlbW92ZWQuCisKKy0gSXNzdWUgIzQwMDU6IEZpeGVkIGEgY3Jhc2ggb2YgcHlkb2Mgd2hlbiB0aGVyZSB3YXMgYSB6aXAgZmlsZSBwcmVzZW50IGluCisgIHN5cy5wYXRoLgorCistIElzc3VlICM2MjE4OiBpby5TdHJpbmdJTyBhbmQgaW8uQnl0ZXNJTyBpbnN0YW5jZXMgYXJlIG5vdyBwaWNrbGFibGUuCisKKy0gVGhlIG9zLmdldF9leGVjX3BhdGgoKSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdGhhdCB3aWxsIGJlCisgIHNlYXJjaGVkIGZvciBhbiBleGVjdXRhYmxlIHdoZW4gbGF1bmNoaW5nIGEgc3VicHJvY2VzcyB3YXMgYWRkZWQuCisKKy0gSXNzdWUgIzc0ODE6IFdoZW4gYSB0aHJlYWRpbmcuVGhyZWFkIGZhaWxlZCB0byBzdGFydCBpdCB3b3VsZCBsZWF2ZSB0aGUKKyAgaW5zdGFuY2Ugc3R1Y2sgaW4gaW5pdGlhbCBzdGF0ZSBhbmQgcHJlc2VudCBpbiB0aHJlYWRpbmcuZW51bWVyYXRlKCkuCisKKy0gSXNzdWUgIzEwNjgyNjg6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cgaGFuZGxlcyBFSU5UUiBpbiBpbnRlcm5hbCBvcy53YWl0cGlkCisgIGFuZCBvcy5yZWFkIHN5c3RlbSBjYWxscyB3aGVyZSBhcHByb3ByaWF0ZS4KKworLSBJc3N1ZSAjNjcyOTogQWRkZWQgY3R5cGVzLmNfc3NpemVfdCB0byByZXByZXNlbnQgc3NpemVfdC4KKworLSBJc3N1ZSAjNjI0NzogVGhlIGFyZ3BhcnNlIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4KKworLSBJc3N1ZSAjODIzNTogX3NvY2tldDogQWRkIHRoZSBjb25zdGFudCBgYFNPX1NFVEZJQmBgLiAgU09fU0VURklCIGlzIGEgc29ja2V0CisgIG9wdGlvbiBhdmFpbGFibGUgb24gRnJlZUJTRCA3LjEgYW5kIG5ld2VyLgorCistIElzc3VlICM5MzE1OiBGaXggZm9yIHRoZSB0cmFjZSBtb2R1bGUgdG8gcmVjb3JkIGNvcnJlY3QgY2xhc3MgbmFtZQorICBmb3IgdHJhY2luZyBtZXRob2RzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTk1OTogVHdlYWsgZm9ybXVsYSB1c2VkIGZvciBjb21wdXRpbmcgbWF0aC5sb2cgb2YgYW4gaW50ZWdlciwKKyAgbWFraW5nIGl0IG1hcmdpbmFsbHkgbW9yZSBhY2N1cmF0ZSBmb3IgZXhhY3QgcG93ZXJzIG9mIDIuCisKKy0gSXNzdWUgIzk0MjI6IEZpeCBtZW1vcnkgbGVhayB3aGVuIHJlLWluaXRpYWxpemluZyBhIHN0cnVjdC5TdHJ1Y3Qgb2JqZWN0LgorCistIElzc3VlICM3OTAwOiBUaGUgZ2V0Z3JvdXBzKDIpIHN5c3RlbSBjYWxsIG9uIE1hY09TWCBiZWhhdmVzIHJhdGhlciBvZGRseQorICBjb21wYXJlZCB0byBvdGhlciB1bml4IHN5c3RlbXMuIEluIHBhcnRpY3VsYXIsIG9zLmdldGdyb3VwcygpIGRvZXMgbm90IHJlZmxlY3QKKyAgYW55IGNoYW5nZXMgbWFkZSB1c2luZyBvcy5zZXRncm91cHMoKSBidXQgYmFzaWNseSBhbHdheXMgcmV0dXJucyB0aGUgc2FtZQorICBpbmZvcm1hdGlvbiBhcyB0aGUgaWQgY29tbWFuZC4gb3MuZ2V0Z3JvdXBzKCkgY2FuIG5vdyByZXR1cm4gbW9yZSB0aGFuIDE2CisgIGdyb3VwcyBvbiBNYWNPU1guCisKKy0gSXNzdWUgIzYwOTU6IE1ha2UgZGlyZWN0b3J5IGFyZ3VtZW50IHRvIG9zLmxpc3RkaXIgb3B0aW9uYWwuCisKKy0gSXNzdWUgIzkyNzc6IEZpeCBidWcgaW4gc3RydWN0LnBhY2sgZm9yIGJvb2xzIGluIHN0YW5kYXJkIG1vZGUgKGUuZy4sCisgIHN0cnVjdC5wYWNrKCc+PycpKTogaWYgY29udmVyc2lvbiB0byBib29sIHJhaXNlZCBhbiBleGNlcHRpb24gdGhlbiB0aGF0CisgIGV4Y2VwdGlvbiB3YXNuJ3QgcHJvcGVybHkgcHJvcGFnYXRlZCBvbiBtYWNoaW5lcyB3aGVyZSBjaGFyIGlzIHVuc2lnbmVkLgorCistIElzc3VlICM1MTgwOiBGaXhlZCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBsb2FkaW5nIDIueCBwaWNrbGVzIGluIDMueCBweXRob24gd2hlbgorICB0aGV5IGNvbnRhaW4gaW5zdGFuY2VzIG9mIG9sZC1zdHlsZSBjbGFzc2VzLgorCistIElzc3VlICM5MTY1OiBBZGQgbmV3IGZ1bmN0aW9ucyBtYXRoLmlzZmluaXRlIGFuZCBjbWF0aC5pc2Zpbml0ZSwgdG8gYWNjb21wYW55CisgIGV4aXN0aW5nIGlzaW5mIGFuZCBpc25hbiBmdW5jdGlvbnMuCisKKy0gSXNzdWUgIzE1NzgyNjk6IEltcGxlbWVudCBvcy5zeW1saW5rIGZvciBXaW5kb3dzIDYuMCsuICBQYXRjaCBieSBKYXNvbgorICBSLiBDb29tYnMuCisKKy0gSW4gc3RydWN0LnBhY2ssIGNvcnJlY3RseSBwcm9wb2dhdGUgZXhjZXB0aW9ucyBmcm9tIGNvbXB1dGluZyB0aGUgdHJ1dGggb2YgYW4KKyAgb2JqZWN0IGluIHRoZSAnPycgZm9ybWF0LgorCistIElzc3VlICM5MDAwOiBkYXRldGltZS50aW1lem9uZSBvYmplY3RzIG5vdyBoYXZlIGV2YWwtZnJpZW5kbHkgcmVwci4KKworLSBJbiB0aGUgbWF0aCBtb2R1bGUsIGNvcnJlY3RseSBsb29rdXAgX190cnVuY19fLCBfX2NlaWxfXywgYW5kIF9fZmxvb3JfXyBhcworICBzcGVjaWFsIG1ldGhvZHMuCisKKy0gSXNzdWUgIzkwMDU6IFByZXZlbnQgdXRjdGltZXR1cGxlKCkgZnJvbSBwcm9kdWNpbmcgeWVhciAwIG9yIHllYXIgMTAsMDAwLgorICBQcmlvciB0byB0aGlzIGNoYW5nZSwgdGltZXpvbmUgYWRqdXN0bWVudCBpbiB1dGN0aW1ldHVwbGUoKSBjb3VsZCBwcm9kdWNlCisgIHRtX3llYXIgdmFsdWUgb2YgMCBvciAxMCwwMDAuICBOb3cgYW4gT3ZlcmZsb3dFcnJvciBpcyByYWlzZWQgaW4gdGhlc2UgZWRnZQorICBjYXNlcy4KKworLSBJc3N1ZSAjNjY0MTogVGhlIGBgZGF0ZXRpbWUuc3RycHRpbWVgYCBtZXRob2Qgbm93IHN1cHBvcnRzIHRoZSBgYCV6YGAKKyAgZGlyZWN0aXZlLiAgV2hlbiB0aGUgYGAlemBgIGRpcmVjdGl2ZSBpcyBwcmVzZW50IGluIHRoZSBmb3JtYXQgc3RyaW5nLCBhbgorICBhd2FyZSBgYGRhdGV0aW1lYGAgb2JqZWN0IGlzIHJldHVybmVkIHdpdGggYGB0emluZm9gYCBib3VuZCB0byBhCisgIGBgZGF0ZXRpbWUudGltZXpvbmVgYCBpbnN0YW5jZSBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBwYXJzZWQgb2Zmc2V0LiAgSWYgYm90aAorICBgYCV6YGAgYW5kIGBgJVpgYCBhcmUgcHJlc2VudCwgdGhlIGRhdGEgaW4gYGAlWmBgIGZpZWxkIGlzIHVzZWQgZm9yIHRpbWV6b25lCisgIG5hbWUsIGJ1dCBgYCVaYGAgZGF0YSB3aXRob3V0IGBgJXpgYCBpcyBkaXNjYXJkZWQuCisKKy0gSXNzdWUgIzUwOTQ6IFRoZSBgYGRhdGV0aW1lYGAgbW9kdWxlIG5vdyBoYXMgYSBzaW1wbGUgY29uY3JldGUgY2xhc3MKKyAgaW1wbGVtZW50aW5nIGBgZGF0ZXRpbWUudHppbmZvYGAgaW50ZXJmYWNlLiAgSW5zdGFuY2VzIG9mIHRoZSBuZXcgY2xhc3MsCisgIGBgZGF0ZXRpbWUudGltZXpvbmVgYCwgcmV0dXJuIGZpeGVkIG5hbWUgYW5kIFVUQyBvZmZzZXQgZnJvbSB0aGVpcgorICBgYHR6bmFtZShkdClgYCBhbmQgYGB1dGNvZmZzZXQoZHQpYGAgbWV0aG9kcy4gIFRoZSBgYGRzdChkdClgYCBtZXRob2QgYWx3YXlzCisgIHJldHVybnMgYGBOb25lYGAuICBBIGNsYXNzIGF0dHJpYnV0ZSwgYGB1dGNgYCBjb250YWlucyBhbiBpbnN0YW5jZQorICByZXByZXNlbnRpbmcgdGhlIFVUQyB0aW1lem9uZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFJhZmUgS2FwbGFuLgorCistIElzc3VlICM4OTczOiBBZGQgX19hbGxfXyB0byBzdHJ1Y3QgbW9kdWxlOyB0aGlzIGVuc3VyZXMgdGhhdCBoZWxwKHN0cnVjdCkKKyAgaW5jbHVkZXMgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHN0cnVjdC5TdHJ1Y3QgY2xhc3MuCisKKy0gSXNzdWUgIzMxMjk6IFRyYWlsaW5nIGRpZ2l0cyBpbiBzdHJ1Y3QgZm9ybWF0IHN0cmluZyBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQuCisgIEZvciBleGFtcGxlLCAiMSIgb3IgImlsaWIxMjMiIGFyZSBub3cgaW52YWxpZCBmb3JtYXRzIGFuZCBjYXVzZQorICBgYHN0cnVjdC5lcnJvcmBgIHRvIGJlIHJhaXNlZC4gIFBhdGNoIGJ5IENhbGViIERldmVyYXV4LgorCistIElzc3VlICM3Mzg0OiBJZiB0aGUgc3lzdGVtIHJlYWRsaW5lIGxpYnJhcnkgaXMgbGlua2VkIGFnYWluc3QgbmN1cnNlcywgdGhlCisgIGN1cnNlcyBtb2R1bGUgbXVzdCBiZSBsaW5rZWQgYWdhaW5zdCBuY3Vyc2VzIGFzIHdlbGwuIE90aGVyd2lzZSBpdCBpcyBub3Qgc2FmZQorICB0byBsb2FkIGJvdGggdGhlIHJlYWRsaW5lIGFuZCBjdXJzZXMgbW9kdWxlcyBpbiBhbiBhcHBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMjgxMDogRml4IGNhc2VzIHdoZXJlIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5IEFQSSByZXR1cm5zIEVSUk9SX01PUkVfREFUQSwKKyAgcmVxdWlyaW5nIGEgcmUtdHJ5IGluIG9yZGVyIHRvIGdldCB0aGUgY29tcGxldGUgcmVzdWx0LgorCistIElzc3VlICM4NjkyOiBPcHRpbWl6ZSBtYXRoLmZhY3RvcmlhbDogcmVwbGFjZSB0aGUgcHJldmlvdXMgbmFpdmUgYWxnb3JpdGhtCisgIHdpdGggYW4gaW1wcm92ZWQgJ2JpbmFyeS1zcGxpdCcgYWxnb3JpdGhtIHRoYXQgdXNlcyBmZXdlciBtdWx0aXBsaWNhdGlvbnMgYW5kCisgIGFsbG93cyBtYW55IG9mIHRoZSBtdWx0aXBsaWNhdGlvbnMgdG8gYmUgcGVyZm9ybWVkIHVzaW5nIHBsYWluIEMgaW50ZWdlcgorICBhcml0aG1ldGljIGluc3RlYWQgb2YgUHlMb25nIGFyaXRobWV0aWMuICBBbHNvIHVzZXMgYSBsb29rdXAgdGFibGUgZm9yIHNtYWxsCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjODY3NDogRml4ZWQgYSBudW1iZXIgb2YgaW5jb3JyZWN0IG9yIHVuZGVmaW5lZC1iZWhhdmlvdXItaW5kdWNpbmcKKyAgb3ZlcmZsb3cgY2hlY2tzIGluIHRoZSBhdWRpb29wIG1vZHVsZS4KKworLSBJc3N1ZSAjODY0NDogVGhlIGFjY3VyYWN5IG9mIHRkLnRvdGFsX3NlY29uZHMoKSBoYXMgYmVlbiBpbXByb3ZlZCAoYnkKKyAgY2FsY3VsYXRpbmcgd2l0aCBpbnRlZ2VyIGFyaXRobWV0aWMgaW5zdGVhZCBvZiBmbG9hdCBhcml0aG1ldGljIGludGVybmFsbHkpOgorICB0aGUgcmVzdWx0IGlzIG5vdyBhbHdheXMgY29ycmVjdGx5IHJvdW5kZWQsIGFuZCBpcyBlcXVpdmFsZW50IHRvIGBgdGQgLworICB0aW1lZGVsdGEoc2Vjb25kcz0xKWBgLgorCistIElzc3VlICMyNzA2OiBBbGxvdyBkaXZpc2lvbiBvZiBhIHRpbWVkZWx0YSBieSBhbm90aGVyIHRpbWVkZWx0YTogdGltZWRlbHRhIC8KKyAgdGltZWRlbHRhLCB0aW1lZGVsdGEgJSB0aW1lZGVsdGEsIHRpbWVkZWx0YSAvLyB0aW1lZGVsdGEgYW5kIGRpdm1vZCh0aW1lZGVsdGEsCisgIHRpbWVkZWx0YSkgYXJlIGFsbCBzdXBwb3J0ZWQuCisKKy0gSXNzdWUgIzgzMTQ6IEZpeCB1bnNpZ25lZCBsb25nIGxvbmcgYnVnIGluIGxpYmZmaSBvbiBTcGFyYyB2OC4KKworLSBJc3N1ZSAjODMwMDogV2hlbiBwYXNzaW5nIGEgbm9uLWludGVnZXIgYXJndW1lbnQgdG8gc3RydWN0LnBhY2sgd2l0aCBhbnkKKyAgaW50ZWdlciBmb3JtYXQgY29kZSwgc3RydWN0LnBhY2sgZmlyc3QgYXR0ZW1wdHMgdG8gY29udmVydCB0aGUgbm9uLWludGVnZXIKKyAgdXNpbmcgaXRzIF9faW5kZXhfXyBtZXRob2QuICBJZiB0aGF0IG1ldGhvZCBpcyBub24tZXhpc3RlbnQgb3IgcmFpc2VzCisgIFR5cGVFcnJvciBpdCBnb2VzIG9uIHRvIHRyeSB0aGUgX19pbnRfXyBtZXRob2QsIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworLSBJc3N1ZSAjODE0MjogVXBkYXRlIGxpYmZmaSB0byB0aGUgMy4wLjkgcmVsZWFzZS4KKworLSBJc3N1ZSAjNjk0OTogQWxsb3cgdGhlIF9kYm0gZXh0ZW5zaW9uIHRvIGJlIGJ1aWx0IHdpdGggZGIgNC44LnguCisKKy0gSXNzdWUgIzY1NDQ6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIHRoZSBrcXVldWUgaW1wbGVtZW50YXRpb24ncyBlcnJvcgorICBoYW5kbGluZy4KKworLSBTdG9wIHByb3ZpZGluZyBjcnRhc3NlbS5oIHN5bWJvbHMgd2hlbiBjb21waWxpbmcgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAsIGFzCisgIG1zdmNyMTAwLmRsbCBpcyBub3QgYSBwbGF0Zm9ybSBhc3NlbWJseSBhbnltb3JlLgorCistIElzc3VlICM2NTA4OiBBZGQgcG9zaXgue2dldHJlc3VpZCxnZXRyZXNnaWQsc2V0cmVzdWlkLHNldHJlc2dpZH0uCisKKy0gSXNzdWUgIzcwNzg6IFNldCBzdHJ1Y3QuX19kb2NfXyBmcm9tIF9zdHJ1Y3QuX19kb2NfXy4KKworLSBJc3N1ZSAjMzM2NjogQWRkIGVyZiwgZXJmYywgZXhwbTEsIGdhbW1hLCBsZ2FtbWEgZnVuY3Rpb25zIHRvIG1hdGggbW9kdWxlLgorCistIElzc3VlICM2ODc3OiBJdCBpcyBub3cgcG9zc2libGUgdG8gbGluayB0aGUgcmVhZGxpbmUgZXh0ZW5zaW9uIHRvIHRoZSBsaWJlZGl0CisgIHJlYWRsaW5lIGVtdWxhdGlvbiBvbiBPU1ggMTAuNSBvciBsYXRlci4KKworLSBJc3N1ZSAjNjg0ODogRml4IGN1cnNlcyBtb2R1bGUgYnVpbGQgZmFpbHVyZSBvbiBPUyBYIDEwLjYuCisKKy0gRml4IGEgc2VnZmF1bHQgdGhhdCBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgZXhwYXQgd2l0aCBzcGVjaWFsbHkgZm9ybWVkIGlucHV0LgorCistIElzc3VlICM2NTYxOiAnXGQnIGluIGEgcmVnZXggbm93IG1hdGNoZXMgb25seSBjaGFyYWN0ZXJzIHdpdGggVW5pY29kZSBjYXRlZ29yeQorICAnTmQnIChOdW1iZXIsIERlY2ltYWwgRGlnaXQpLiAgUHJldmlvdXNseSBpdCBhbHNvIG1hdGNoZWQgY2hhcmFjdGVycyB3aXRoCisgIGNhdGVnb3J5ICdObycuCisKKy0gSXNzdWUgIzQ1MDk6IEFycmF5IG9iamVjdHMgYXJlIG5vIGxvbmdlciBtb2RpZmllZCBhZnRlciBhbiBvcGVyYXRpb24gZmFpbGluZworICBkdWUgdG8gdGhlIHJlc2l6ZSByZXN0cmljdGlvbiBpbi1wbGFjZSB3aGVuIHRoZSBvYmplY3QgaGFzIGV4cG9ydGVkIGJ1ZmZlcnMuCisKKy0gSXNzdWUgIzIzODk6IEFycmF5IG9iamVjdHMgYXJlIG5vdyBwaWNrbGVkIGluIGEgcG9ydGFibGUgbWFubmVyLgorCistIEV4cGF0OiBGaXggRG9TIHZpYSBYTUwgZG9jdW1lbnQgd2l0aCBtYWxmb3JtZWQgVVRGLTggc2VxdWVuY2VzCisgIChDVkVfMjAwOV8zNTYwKS4KKworLSBJc3N1ZSAjNzI0MjogT24gU29sYXJpcyA5IGFuZCBlYXJsaWVyIGNhbGxpbmcgb3MuZm9yaygpIGZyb20gd2l0aGluIGEgdGhyZWFkCisgIGNvdWxkIHJhaXNlIGFuIGluY29ycmVjdCBSdW50aW1lRXJyb3IgYWJvdXQgbm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrLiAgVGhlCisgIGltcG9ydCBsb2NrIGlzIG5vdyByZWluaXRpYWxpemVkIGFmdGVyIGZvcmsuCisKKy0gSXNzdWUgIzc5OTk6IG9zLnNldHJldWlkKCkgYW5kIG9zLnNldHJlZ2lkKCkgd291bGQgcmVmdXNlIHRvIGFjY2VwdCBhIC0xCisgIHBhcmFtZXRlciBvbiBzb21lIHBsYXRmb3JtcyBzdWNoIGFzIE9TIFguCisKKy0gQnVpbGQgdGhlIG9zc2F1ZGlvIGV4dGVuc2lvbiBvbiBHTlUva0ZyZWVCU0QuCisKKy0gSXNzdWUgIzczNDc6IHdpbnJlZzogQWRkIENyZWF0ZUtleUV4IGFuZCBEZWxldGVLZXlFeCwgYXMgd2VsbCBhcyBmaXggYSBidWcgaW4KKyAgdGhlIHJldHVybiB2YWx1ZSBvZiBRdWVyeVJlZmxlY3Rpb25LZXkuCisKKy0gSXNzdWUgIzc1Njc6IFB5Q3Vyc2VzX3NldHVwdGVybTogRG9uJ3QgY2FsbCBgYHNldHVwdGVybWBgIHR3aWNlLgorCitCdWlsZAorLS0tLS0KKworLSBVc2UgT3BlblNTTCAxLjAuMGEgb24gV2luZG93cy4KKworLSBJc3N1ZSAjOTI4MDogTWFrZSBzaGFyZWRpbnN0YWxsIGRlcGVuZCBvbiBzaGFyZWRtb2RzLgorCistIElzc3VlICM5MTg5OiBNYWtlIGEgdXNlci1zcGVjaWZpZWQgQ0ZMQUdTLCBDUFBGTEFHUywgb3IgTERGTEFHUyBzZXR0aW5nCisgIG92ZXJyaWRlIHRoZSBjb25maWd1cmUgYW5kIG1ha2VmaWxlIGRlZmF1bHRzLCB3aXRob3V0IGRlbGV0aW5nIG9wdGlvbnMgdGhlCisgIHVzZXIgZGlkbid0IGludGVuZCB0byBvdmVycmlkZS4gIERldmVsb3BlcnMgc2hvdWxkIG5vIGxvbmdlciBuZWVkIHRvIHNwZWNpZnkKKyAgT1BUIG9yIEVYVFJBX0NGTEFHUywgYWx0aG91Z2ggdGhvc2UgdmFyaWFibGVzIGFyZSBzdGlsbCBwcmVzZW50IGZvcgorICBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LgorCistIElzc3VlICM4ODU0OiBGaXggZmluZGluZyBWaXN1YWwgU3R1ZGlvIDIwMDggb24gV2luZG93cyB4NjQuCisKKy0gSXNzdWUgIzE3NTkxNjksICM4ODY0OiBEcm9wIF9YT1BFTl9TT1VSQ0Ugb24gU29sYXJpcywgZGVmaW5lIGl0IGZvcgorICBtdWx0aXByb2Nlc3Npbmcgb25seS4KKworLSBJc3N1ZSAjODYyNTogVHVybiBvZmYgb3B0aW1pemF0aW9uIGluIC0td2l0aC1weWRlYnVnIGJ1aWxkcyB3aXRoIGdjYy4KKyAgKE9wdGltaXphdGlvbiB3YXMgdW5pbnRlbnRpb25hbGx5IHR1cm5lZCBvbiBpbiBnY2MgLS13aXRoLXB5ZGVidWcgYnVpbGRzIGFzIGEKKyAgcmVzdWx0IG9mIHRoZSBpc3N1ZSAjMTYyODQ4NCBmaXgsIGNvbWJpbmVkIHdpdGggYXV0b2NvbmYncyBzdHJhbmdlIGNob2ljZSBvZgorICBkZWZhdWx0IENGTEFHUyBwcm9kdWNlZCBieSBBQ19QUk9HX0NDIGZvciBnY2MuKQorCistIElzc3VlICMzNjQ2OiBJdCBpcyBub3cgZWFzaWx5IHBvc3NpYmxlIHRvIGluc3RhbGwgYSBQeXRob24gZnJhbWV3b3JrIGludG8geW91cgorICBob21lIGRpcmVjdG9yeSBvbiBNYWNPU1gsIHNlZSBNYWMvUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCistIElzc3VlICMzOTI4OiBvcy5ta25vZCgpIG5vdyBhdmFpbGFibGUgaW4gU29sYXJpcywgYWxzby4KKworLSBJc3N1ZSAjMzMyNjogQnVpbGQgUHl0aG9uIHdpdGhvdXQgLWZuby1zdHJpY3QtYWxpYXNpbmcgd2hlbiB0aGUgZ2NjIGRvZXMgbm90CisgIGdpdmUgZmFsc2Ugd2FybmluZ3MuCisKKy0gSXNzdWUgIzE2Mjg0ODQ6IFRoZSBNYWtlZmlsZSBkb2Vzbid0IGlnbm9yZSB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhcmlhYmxlCisgIGFueW1vcmUuICBJdCBhbHNvIGZvcndhcmRzIHRoZSBMREZMQUdTIHNldHRpbmdzIHRvIHRoZSBsaW5rZXIgd2hlbiBidWlsZGluZyBhCisgIHNoYXJlZCBsaWJyYXJ5LgorCistIElzc3VlICM2NzE2OiBRdW90ZSAteCBhcmd1bWVudHMgb2YgY29tcGlsZWFsbCBpbiBNU0kgaW5zdGFsbGVyLiAgRXhjbHVkZSAydG8zCisgIHRlc3RzIGZyb20gY29tcGlsZWFsbC4KKworLSBJc3N1ZSAjMzkyMCwgIzc5MDM6IERlZmluZSBfQlNEX1NPVVJDRSBvbiBPcGVuQlNEIDQuNCB0aHJvdWdoIDQuOS4KKworLSBJc3N1ZSAjNzYzMjogV2hlbiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIgaXMgZGVmaW5lZCwgZGlzYWJsZSB0aGUgcHJpdmF0ZQorICBtZW1vcnkgYWxsb2NhdGlvbiBzY2hlbWUgaW4gZHRvYS5jIGFuZCB1c2UgUHlNZW1fTWFsbG9jIGFuZCBQeU1lbV9GcmVlCisgIGluc3RlYWQuICBBbHNvIGRpc2FibGUgY2FjaGluZyBvZiBwb3dlcnMgb2YgNS4KKworLSBJc3N1ZSAjNjQ5MTogQWxsb3cgLS13aXRoLWRibWxpYm9yZGVyIHRvIHNwZWNpZnkgdGhhdCBubyBkYm1zIHdpbGwgYmUgYnVpbHQuCisKKy0gSXNzdWUgIzY5NDM6IFVzZSBwa2ctY29uZmlnIHRvIGZpbmQgdGhlIGxpYmZmaSBoZWFkZXJzIHdoZW4gdGhlCisgIC0td2l0aC1zeXN0ZW0tZmZpIGZsYWcgaXMgdXNlZC4KKworLSBJc3N1ZSAjNzYwOTogQWRkIGEgLS13aXRoLXN5c3RlbS1leHBhdCBvcHRpb24gdGhhdCBjYXVzZXMgdGhlIHN5c3RlbSdzIGV4cGF0CisgIGxpYnJhcnkgdG8gYmUgdXNlZCBmb3IgdGhlIHB5ZXhwYXQgbW9kdWxlIGluc3RlYWQgb2YgdGhlIG9uZSBpbmNsdWRlZCB3aXRoCisgIFB5dGhvbi4KKworLSBJc3N1ZSAjNzU4OTogT25seSBidWlsZCB0aGUgbmlzIG1vZHVsZSB3aGVuIHRoZSBjb3JyZWN0IGhlYWRlciBmaWxlcyBhcmUKKyAgZm91bmQuCisKKy0gU3dpdGNoIHRvIE9wZW5TU0wgMC45LjhsIGFuZCBzcWxpdGUgMy42LjIxIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzU3OTI6IEV4dGVuZCB0aGUgc2hvcnQgZmxvYXQgcmVwciBzdXBwb3J0IHRvIHg4NiBzeXN0ZW1zIHVzaW5nCisgIGljYyBvciBzdW5jYy4KKworLSBJc3N1ZSAjNjYwMzogQ2hhbmdlIFJFQURfVElNRVNUQU1QIG1hY3JvIGluIGNldmFsLmMgc28gdGhhdCBpdCBjb21waWxlcworICBjb3JyZWN0bHkgdW5kZXIgZ2NjIG9uIHg4Ni02NC4gIFRoaXMgZml4ZXMgYSByZXBvcnRlZCBwcm9ibGVtIHdpdGggdGhlCisgIC0td2l0aC10c2MgYnVpbGQgb24geDg2LTY0LgorCistIElzc3VlICM2ODAyOiBGaXggYnVpbGQgaXNzdWVzIG9uIE1hY09TWCAxMC42LgorCistIElzc3VlICM2MjQ0OiBBbGxvdyBkZXRlY3RfdGtpbnRlciB0byBsb29rIGZvciBUY2wvVGsgOC42LgorCistIElzc3VlICM0NjAxOiAnbWFrZSBpbnN0YWxsJyBkaWQgbm90IHNldCB0aGUgYXBwcm9wcmlhdGUgcGVybWlzc2lvbnMgb24KKyAgZGlyZWN0b3JpZXMuCisKKy0gSXNzdWUgIzUzOTA6IEFkZCB1bmluc3RhbGwgaWNvbiBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIGZpbGUgZXh0ZW5zaW9ucyBhcmUKKyAgaW5zdGFsbGVkLgorCistIElzc3VlICM3NTQxOiBXaGVuIHVzaW5nIGBgcHl0aG9uLWNvbmZpZ2BgIHdpdGggYSBmcmFtZXdvcmsgaW5zdGFsbCB0aGUKKyAgY29tcGlsZXIgbWlnaHQgdXNlIHRoZSB3cm9uZyBsaWJyYXJ5LgorCistIHB5dGhvbi1jb25maWcgbm93IHN1cHBvcnRzIG11bHRpcGxlIG9wdGlvbnMgb24gdGhlIHNhbWUgY29tbWFuZCBsaW5lLgorCistIElzc3VlICM4NTA5OiBGaXggcXVvdGluZyBpbiBoZWxwIHN0cmluZ3MgYW5kIGNvZGUgc25pcHBldHMgaW4gY29uZmlndXJlLmluLgorCistIElzc3VlICM4NTEwOiBVcGRhdGUgdG8gYXV0b2NvbmYyLjY1LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzk4MTc6IEFkZCBleHBhdCBDT1BZSU5HIGZpbGU7IGFkZCBleHBhdCwgbGliZmZpIGFuZCBleHBhdCBsaWNlbnNlcworICB0byBEb2MvbGljZW5zZS5yc3QuCisKKy0gSXNzdWUgIzk1MjQ6IERvY3VtZW50IHRoYXQgdHdvIENUUkwqIHNpZ25hbHMgYXJlIG1lYW50IGZvciB1c2Ugb25seQorICB3aXRoIG9zLmtpbGwuCisKKy0gSXNzdWUgIzkyNTU6IERvY3VtZW50IHRoYXQgdGhlICd0ZXN0JyBwYWNrYWdlIGlzIG1lYW50IGZvciBpbnRlcm5hbCBQeXRob24gdXNlCisgIG9ubHkuCisKKy0gQSBzbWFsbCBXU0dJIHNlcnZlciB3YXMgYWRkZWQgYXMgVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSwgYW5kIGlzIHVzZWQgdG8KKyAgaW1wbGVtZW50IGEgbG9jYWwgZG9jdW1lbnRhdGlvbiBzZXJ2ZXIgdmlhICdtYWtlIHNlcnZlJyBpbiB0aGUgZG9jIGRpcmVjdG9yeS4KKworLSBVcGRhdGluZyBgVXNpbmcgUHl0aG9uYCBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgZGVzY3JpcHRpb24gb2YgQ1B5dGhvbidzIC1KCisgIGFuZCAtWCBvcHRpb25zLgorCistIERvY3VtZW50IHRoYXQgaW1wb3J0aW5nIGEgbW9kdWxlIHRoYXQgaGFzIE5vbmUgaW4gc3lzLm1vZHVsZXMgdHJpZ2dlcnMgYW4KKyAgSW1wb3J0RXJyb3IuCisKKy0gSXNzdWUgIzY1NTY6IEZpeGVkIHRoZSBEaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyBsb2NhdGlvbiBleHBsYW5hdGlvbiBmb3IKKyAgV2luZG93cy4KKworLSBVcGRhdGUgcHl0aG9uIG1hbnVhbCBwYWdlIChvcHRpb25zIC1CLCAtTzAsIC1zLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgUFlUSE9ORE9OVFdSSVRFQllURUNPREUsIFBZVEhPTk5PVVNFUlNJVEUpLgorCistIElzc3VlICM4OTA5OiBBZGRlZCB0aGUgc2l6ZSBvZiB0aGUgYml0bWFwIHVzZWQgaW4gdGhlIGluc3RhbGxlciBjcmVhdGVkIGJ5CisgIGRpc3R1dGlscycgYmRpc3Rfd2luaW5zdC4gUGF0Y2ggYnkgQW5hdG9seSBUZWNodG9uaWsuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM5MjUxOiB0ZXN0X3RocmVhZGVkX2ltcG9ydCBkaWRuJ3QgZmFpbCB3aGVuIHJ1biB0aHJvdWdoIHJlZ3J0ZXN0IGlmIHRoZQorICBpbXBvcnQgbG9jayB3YXMgZGlzYWJsZWQuCisKKy0gSXNzdWUgIzg2MDU6IFNraXAgdGVzdF9nZGIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucy4KKworLSBJc3N1ZSAjNzQ0OTogU2tpcCB0ZXN0X3NvY2tldHNlcnZlciBpZiB0aHJlYWRpbmcgc3VwcG9ydCBpcyBkaXNhYmxlZC4KKworLSBJc3N1ZSAjODY3MjogQWRkIGEgemxpYiB0ZXN0IGVuc3VyaW5nIHRoYXQgYW4gaW5jb21wbGV0ZSBzdHJlYW0gY2FuIGJlIGhhbmRsZWQKKyAgYnkgYSBkZWNvbXByZXNzb3Igb2JqZWN0IHdpdGhvdXQgZXJyb3JzIChpdCByZXR1cm5zIGluY29tcGxldGUgdW5jb21wcmVzc2VkCisgIGRhdGEpLgorCistIElzc3VlICM4NTMzOiByZWdydGVzdCB1c2VzIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlciBmb3Igc3Rkb3V0IHRvIGF2b2lkCisgIFVuaWNvZGVFbmNvZGVFcnJvciAod3JpdGUgbm9uLUFTQ0lJIGNoYXJhY3RlciB0byBzdGRvdXQgdXNpbmcgQVNDSUkgZW5jb2RpbmcpLgorCistIElzc3VlICM4NTc2OiBSZW1vdmUgdXNlIG9mIGZpbmRfdW51c2VkX3BvcnQoKSBpbiB0ZXN0X3NtdHBsaWIgYW5kCisgIHRlc3RfbXVsdGlwcm9jZXNzaW5nLiAgUGF0Y2ggYnkgUGF1bCBNb29yZS4KKworLSBJc3N1ZSAjNzQ0OTogRml4IG1hbnkgdGVzdHMgdG8gc3VwcG9ydCBQeXRob24gY29tcGlsZWQgd2l0aG91dCB0aHJlYWQKKyAgc3VwcG9ydC4gUGF0Y2hlcyB3cml0dGVuIGJ5IEplcnJ5IFNldXR0ZXIuCisKKy0gSXNzdWUgIzgxMDg6IHRlc3RfZnRwbGliJ3Mgbm9uLWJsb2NraW5nIFNTTCBzZXJ2ZXIgbm93IGhhcyBwcm9wZXIgaGFuZGxpbmcgb2YKKyAgU1NMIHNodXRkb3ducy4KKworLSBJc3N1ZXMgIzgyNzksICM4MzMwLCAjODQzNywgIzg0ODAsICM4NDk1OiBGaXggdGVzdF9nZGIgZmFpbHVyZXMsIHBhdGNoIHdyaXR0ZW4KKyAgYnkgRGF2ZSBNYWxjb2xtLgorCistIElzc3VlICMzODY0OiBTa2lwIHRocmVlIHRlc3Rfc2lnbmFsIHRlc3RzIG9uIGZyZWVic2Q2IGJlY2F1c2UgdGhleSBmYWlsIGlmIGFueQorICB0aHJlYWQgd2FzIHByZXZpb3VzbHkgc3RhcnRlZCwgbW9zdCBsaWtlbHkgZHVlIHRvIGEgcGxhdGZvcm0gYnVnLgorCistIElzc3VlICM4MTkzOiBGaXggdGVzdF96bGliIGZhaWx1cmUgd2l0aCB6bGliIDEuMi40LgorCistIElzc3VlICM4MjQ4OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGJvb2wgdHlwZS4gIFBhdGNoIGJ5IEdyZWdvcnkgTm9maS4KKworLSBJc3N1ZSAjODI2MzogTm93IHJlZ3J0ZXN0LnB5IHdpbGwgcmVwb3J0IGEgZmFpbHVyZSBpZiBpdCByZWNlaXZlcyBhCisgIEtleWJvYXJkSW50ZXJydXB0IChTSUdJTlQpLgorCistIElzc3VlICM4MTgwIGFuZCAjODIwNzogRml4IHRlc3RfcGVwMjc3IG9uIE9TIFggYW5kIGFkZCBtb3JlIHRlc3RzIGZvciBzcGVjaWFsCisgIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBjYXNlcy4KKworLSBJc3N1ZSAjNzc4MzogdGVzdC5zdXBwb3J0Lm9wZW5fdXJscmVzb3VyY2UgaW52YWxpZGF0ZXMgdGhlIG91dGRhdGVkIGZpbGVzIGZyb20KKyAgdGhlIGxvY2FsIGNhY2hlLgorCistIElzc3VlICM3ODQ5OiBOb3cgdGhlIHV0aWxpdHkgYGBjaGVja193YXJuaW5nc2BgIHZlcmlmaWVzIGlmIHRoZSB3YXJuaW5ncyBhcmUKKyAgZWZmZWN0aXZlbHkgcmFpc2VkLgorCistIFRoZSBmb3VyIHBhdGggbW9kdWxlcyAoZ2VuZXJpY3BhdGgsIG1hY3BhdGgsIG50cGF0aCwgcG9zaXhwYXRoKSBzaGFyZSBhIGNvbW1vbgorICBUZXN0Q2FzZSBmb3Igc29tZSB0ZXN0czogdGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LgorCistIFByaW50IHBsYXRmb3JtIGluZm9ybWF0aW9uIHdoZW4gcnVubmluZyB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgb3IgdXNpbmcgdGhlCisgIC0tdmVyYm9zZSBmbGFnLgorCistIElzc3VlICM3Njc2NzU6IGVuYWJsZSB0ZXN0X3BlcDI3NyBvbiBQT1NJWCBwbGF0Zm9ybXMgd2l0aCBVbmljb2RlLWZyaWVuZGx5CisgIGZpbGVzeXN0ZW0gZW5jb2RpbmcuCisKKy0gSXNzdWUgIzYyOTI6IGZvciB0aGUgbW9tZW50IGF0IGxlYXN0LCB0aGUgdGVzdCBzdWl0ZSBydW5zIGNsZWFubHkgaWYgcHl0aG9uIGlzCisgIHJ1biB3aXRoIHRoZSAtT08gZmxhZy4gIFRlc3RzIHJlcXVpcmluZyBkb2NzdHJpbmdzIGFyZSBza2lwcGVkLgorCistIElzc3VlICM3NzEyOiB0ZXN0LnN1cHBvcnQgZ2FpbmVkIGEgbmV3IGB0ZW1wX2N3ZGAgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGlzIG5vdworICBhbHNvIHVzZWQgYnkgcmVncnRlc3QgdG8gcnVuIGFsbCB0aGUgdGVzdHMgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiAgVGhlCisgIG9yaWdpbmFsIENXRCBpcyBzYXZlZCBpbiBgc3VwcG9ydC5TQVZFRENXRGAuICBUaGFua3MgdG8gRmxvcmVudCBYaWNsdW5hIHdobworICBoZWxwZWQgd2l0aCB0aGUgcGF0Y2guCisKKy0gSXNzdWUgIzc5MjQ6IEZpeCBhbiBpbnRlcm1pdHRlbnQgJ1hYWCB1bmRldGVjdGVkIGVycm9yJyBmYWlsdXJlIGluIHRlc3RfY2FwaQorICAob25seSBzZWVuIHNvIGZhciBvbiBwbGF0Zm9ybXMgd2hlcmUgdGhlIGN1cnNlcyBtb2R1bGUgd2Fzbid0IGJ1aWx0KSwgZHVlIHRvCisgIGFuIHVuY2xlYXJlZCBleGNlcHRpb24uCisKKy0gSXNzdWUgIzc3Mjg6IHRlc3RfdGltZW91dCB3YXMgY2hhbmdlZCB0byB1c2Ugc3VwcG9ydC5iaW5kX3BvcnQgaW5zdGVhZCBvZiBhCisgIGhhcmQgY29kZWQgcG9ydC4KKworLSBJc3N1ZSAjNzM3NjogSW5zdGVhZCBvZiBydW5uaW5nIGEgc2VsZi10ZXN0ICh3aGljaCB3YXMgZmFpbGluZykgd2hlbiBjYWxsZWQKKyAgd2l0aCBubyBhcmd1bWVudHMsIGRvY3Rlc3QucHkgbm93IGdpdmVzIGEgdXNhZ2UgbWVzc2FnZS4KKworLSBJc3N1ZSAjNzM5NjogZml4IHJlZ3J0ZXN0IC1zLCB3aGljaCB3YXMgYnJva2VuIGJ5IHRoZSAtaiBlbmhhbmNlbWVudC4KKworLSBJc3N1ZSAjNzQ5ODogdGVzdF9tdWx0aXByb2Nlc3Npbmcgbm93IHVzZXMgdGVzdC5zdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQKKyAgaW5zdGVhZCBvZiBhIGhhcmRjb2RlZCBwb3J0IG51bWJlciBpbiB0ZXN0X3JhcGlkX3Jlc3RhcnQuCisKKy0gSXNzdWUgIzc0MzE6IFVzZSBURVNURk4gaW4gdGVzdF9saW5lY2FjaGUgaW5zdGVhZCBvZiB0cnlpbmcgdG8gY3JlYXRlIGEgZmlsZQorICBpbiB0aGUgTGliL3Rlc3QgZGlyZWN0b3J5LCB3aGljaCBtaWdodCBiZSByZWFkLW9ubHkgZm9yIHRoZSB1c2VyIHJ1bm5pbmcgdGhlCisgIHRlc3RzLgorCistIElzc3VlICM3MzI0OiBBZGQgYSBzYW5pdHkgY2hlY2sgdG8gcmVncnRlc3QgYXJndW1lbnQgcGFyc2luZyB0byBjYXRjaCB0aGUgY2FzZQorICBvZiBhbiBvcHRpb24gd2l0aCBubyBoYW5kbGVyLgorCistIElzc3VlICM3MzEyOiBBZGQgYSAtRiBmbGFnIHRvIHJ1biB0aGUgc2VsZWN0ZWQgdGVzdHMgaW4gYSBsb29wIHVudGlsIGEgdGVzdAorICBmYWlscy4gIENhbiBiZSBjb21iaW5lZCB3aXRoIC1qLgorCistIElzc3VlICM2NTUxOiB0ZXN0X3ppcGltcG9ydCBjb3VsZCBpbXBvcnQgYW5kIHRoZW4gZGVzdHJveSBzb21lIG1vZHVsZXMgb2YgdGhlCisgIGVuY29kaW5ncyBwYWNrYWdlLCB3aGljaCB3b3VsZCBtYWtlIG90aGVyIHRlc3RzIGZhaWwgZnVydGhlciBkb3duIHRoZSByb2FkCisgIGJlY2F1c2UgdGhlIGludGVybmFsbHkgY2FjaGVkIGVuY29kZXJzIGFuZCBkZWNvZGVycyB3b3VsZCBwb2ludCB0byBlbXB0eQorICBnbG9iYWwgdmFyaWFibGVzLgorCistIElzc3VlICM3Mjk1OiBEbyBub3QgdXNlIGEgaGFyZGNvZGVkIGZpbGUgbmFtZSBpbiB0ZXN0X3RhcmZpbGUuCisKKy0gSXNzdWUgIzcyNzA6IEFkZCBzb21lIGRlZGljYXRlZCB1bml0IHRlc3RzIGZvciBtdWx0aS10aHJlYWQgc3luY2hyb25pemF0aW9uCisgIHByaW1pdGl2ZXMgc3VjaCBhcyBMb2NrLCBSTG9jaywgQ29uZGl0aW9uLCBFdmVudCBhbmQgU2VtYXBob3JlLgorCistIElzc3VlICM3MjQ4IChwYXJ0IDIpOiBVc2UgYSB1bmlxdWUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgaW1wb3J0bGliIHNvdXJjZQorICB0ZXN0cyBpbnN0ZWFkIG9mIHRlbXBmaWxlLnRlbXBkaXIuIFRoaXMgcHJldmVudHMgdGhlIHRlc3RzIGZyb20gc2hhcmluZyBzdGF0ZQorICBiZXR3ZWVuIGNvbmN1cnJlbnQgZXhlY3V0aW9ucyBvbiB0aGUgc2FtZSBzeXN0ZW0uCisKKy0gSXNzdWUgIzcyNDg6IEluIGltcG9ydGxpYi50ZXN0LnNvdXJjZS51dGlsIGEgdHJ5L2ZpbmFsbHkgYmxvY2sgZGlkIG5vdCBtYWtlCisgIHN1cmUgdGhhdCBzb21lIHJlZmVyZW5jZWQgb2JqZWN0cyBhY3R1YWxseSB3ZXJlIGNyZWF0ZWQgaW4gdGhlIGJsb2NrIGJlZm9yZQorICBjYWxsaW5nIG1ldGhvZHMgb24gdGhlIG9iamVjdC4KKworLSBJc3N1ZSAjNzIyMjogTWFrZSB0aHJlYWQgInJlYXBpbmciIG1vcmUgcmVsaWFibGUgc28gdGhhdCByZWZlcmVuY2UKKyAgbGVhay1jaGFzaW5nIHRlc3QgcnVucyBnaXZlIHNlbnNpYmxlIHJlc3VsdHMuICBUaGUgcHJldmlvdXMgbWV0aG9kIG9mIHJlYXBpbmcKKyAgdGhyZWFkcyBjb3VsZCByZXR1cm4gc3VjY2Vzc2Z1bGx5IHdoaWxlIHNvbWUgVGhyZWFkIG9iamVjdHMgd2VyZSBzdGlsbAorICByZWZlcmVuY2VkLiAgVGhpcyBhbHNvIGludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjoKKyAgYGBfdGhyZWFkLl9jb3VudCgpYGAuCisKKy0gSXNzdWUgIzcxNTE6IEZpeGVkIHJlZ3J0ZXN0IC1qIHNvIHRoYXQgb3V0cHV0IHRvIHN0ZGVyciBmcm9tIGEgdGVzdCBubyBsb25nZXIKKyAgcnVucyB0aGUgcmlzayBvZiBjYXVzaW5nIHRoZSB3b3JrZXIgdGhyZWFkIHRvIGZhaWwuCisKKy0gSXNzdWUgIzcwNTU6IHRlc3RfX19hbGxfXyBub3cgZ3JlZWRpbHkgZGV0ZWN0cyBhbGwgbW9kdWxlcyB3aGljaCBoYXZlIGFuCisgIF9fYWxsX18gYXR0cmlidXRlLCByYXRoZXIgdGhhbiB1c2luZyBhIGhhcmRjb2RlZCBhbmQgaW5jb21wbGV0ZSBsaXN0LgorCistIElzc3VlICM3MDU4OiBBZGRlZCBzYXZlL3Jlc3RvcmUgZm9yIHRoaW5ncyBsaWtlIHN5cy5hcmd2IGFuZCBjd2QgdG8KKyAgcnVudGVzdF9pbm5lciBpbiByZWdydGVzdCwgd2l0aCB3YXJuaW5ncyBpZiB0aGUgY2FsbGVkIHRlc3QgbW9kaWZpZXMgdGhlbSwgYW5kCisgIGEgbmV3IHNlY3Rpb24gaW4gdGhlIHN1bW1hcnkgcmVwb3J0IGF0IHRoZSBlbmQuCisKKy0gSXNzdWUgIzcwNDI6IEZpeCB0ZXN0X3NpZ25hbCAodGVzdF9pdGltZXJfdmlydHVhbCkgZmFpbHVyZSBvbiBPUyBYIDEwLjYuCisKKy0gRml4ZWQgdGVzdHMgaW4gaW1wb3J0bGliLnRlc3Quc291cmNlLnRlc3RfYWJjX2xvYWRlciB0aGF0IHdlcmUgbWFza2luZyB0aGUKKyAgcHJvcGVyIGV4Y2VwdGlvbnMgdGhhdCBzaG91bGQgYmUgcmFpc2VkIGZvciBtaXNzaW5nIG9yIGltcHJvcGVyIGNvZGUgb2JqZWN0CisgIGJ5dGVjb2RlLgorCistIFJlbW92ZWQgaW1wb3J0bGliJ3MgY3VzdG9tIHRlc3QgZGlzY292ZXJ5IGNvZGUgYW5kIHN3aXRjaGVkIHRvCisgIHVuaXR0ZXN0LlRlc3RMb2FkZXIuZGlzY292ZXIoKS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzU0NjQsICM4OTc0OiBJbXBsZW1lbnQgcGx1cmFsIGZvcm1zIGluIG1zZ2ZtdC5weS4KKworLSBpb2JlbmNoIChhIGZpbGUgSS9PIGJlbmNobWFyaykgYW5kIGNjYmVuY2ggKGEgY29uY3VycmVuY3kgYmVuY2htYXJrKSB3ZXJlCisgIGFkZGVkIHRvIHRoZSBgVG9vbHMvYCBkaXJlY3RvcnkuICBUaGV5IHdlcmUgcHJldmlvdXNseSBsaXZpbmcgaW4gdGhlIHNhbmRib3guCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xPworPT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyNy1KdW5lLTIwMDkqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM2MzM0OiBGaXggYnVnIGluIHJhbmdlIGxlbmd0aCBjYWxjdWxhdGlvbiBmb3IgcmFuZ2VzIHdpdGgKKyAgbGFyZ2UgYXJndW1lbnRzLgorCistIElzc3VlICM2MzI5OiBGaXhlZCBpdGVyYXRpb24gZm9yIG1lbW9yeXZpZXcgb2JqZWN0cyAoaXQgd2FzIGJlaW5nIGJsb2NrZWQKKyAgYmVjYXVzZSBpdCB3YXNuJ3QgcmVjb2duaXplZCBhcyBhIHNlcXVlbmNlKS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM2MTI2OiBGaXhlZCBwZGIgY29tbWFuZC1saW5lIHVzYWdlLgorCistIElzc3VlICM2MzE0OiBsb2dnaW5nOiBwZXJmb3JtcyBleHRyYSBjaGVja3Mgb24gdGhlICJsZXZlbCIgYXJndW1lbnQuCisKKy0gSXNzdWUgIzYyNzQ6IEZpeGVkIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgbGVhayBpbiBzdWJwcm9jZXNzLnB5CisKKy0gQWNjZXNzaW5nIGlvLlN0cmluZ0lPLmJ1ZmZlciBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yIGluc3RlYWQgb2YKKyAgaW8uVW5zdXBwb3J0ZWRPcGVyYXRpb24uCisKKy0gSXNzdWUgIzYyNzE6IG1tYXAgdHJpZWQgdG8gY2xvc2UgaW52YWxpZCBmaWxlIGhhbmRsZSAoLTEpIHdoZW4gYW5vbnltb3VzLgorICAoT24gVW5peCkKKworLSBJc3N1ZSAjMTIwMjogemlwZmlsZSBtb2R1bGUgd291bGQgY2F1c2UgYSBzdHJ1Y3QuZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvCisgIHN0b3JlIGZpbGVzIHdpdGggYSBDUkMzMiA+IDIqKjMxLTEuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1NTkwOiBSZW1vdmUgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBpbiBweWV4cGF0IGV4dGVuc2lvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAxMy1KdW5lLTIwMDkqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIEZpeGVkIFN5c3RlbUVycm9yIHRyaWdnZXJlZCBieSAicmFuZ2UoW10sIDEsIC0xKSIuCisKKy0gSXNzdWUgIzU5MjQ6IE9uIFdpbmRvd3MsIGEgbGFyZ2UgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAobW9yZSB0aGFuIDI1NSBjaGFyYWN0ZXJzKSB3b3VsZCBiZSBjb21wbGV0ZWx5IGlnbm9yZWQuCisKKy0gSXNzdWUgIzQ1NDc6IFdoZW4gZGVidWdnaW5nIGEgdmVyeSBsYXJnZSBmdW5jdGlvbiwgaXQgd2FzIG5vdCBhbHdheXMKKyAgcG9zc2libGUgdG8gdXBkYXRlIHRoZSBsaW5lbm8gYXR0cmlidXRlIG9mIHRoZSBjdXJyZW50IGZyYW1lLgorCistIElzc3VlICM1MzMwOiBDIGZ1bmN0aW9ucyBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyB3ZXJlIG5vdCByZXBvcnRlZCBieQorICB0aGUgdmFyaW91cyBwcm9maWxpbmcgbW9kdWxlcyAocHJvZmlsZSwgY1Byb2ZpbGUpLiBQYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzY0Mzg6IEZpeGVkIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIuZ2V0X3ZlcnNpb25zIDogdGhlIHJlZ3VsYXIKKyAgZXhwcmVzc2lvbiBzdHJpbmcgcGF0dGVybiB3YXMgdHJ5aW5nIHRvIG1hdGNoIGFnYWluc3QgYSBieXRlcyByZXR1cm5lZCBieQorICBQb3Blbi4gVGVzdGVkIHVuZGVyIHdpbjMyIHRvIGJ1aWxkIHRoZSBweS1wb3N0Z3Jlc3FsIHByb2plY3QuCisKKy0gSXNzdWUgIzYyNTg6IFN1cHBvcnQgQU1ENjQgaW4gYmRpc3RfbXNpLgorCistIElzc3VlICM2MTk1OiBmaXhlZCBkb2N0ZXN0IHRvIG5vIGxvbmdlciB0cnkgdG8gcmVhZCAnc291cmNlJyBkYXRhIGZyb20KKyAgYmluYXJ5IGZpbGVzLgorCistIElzc3VlICM1MjYyOiBGaXhlZCBidWcgaW4gbmV4dCByb2xsb3ZlciB0aW1lIGNvbXB1dGF0aW9uIGluCisgIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlci4KKworLSBJc3N1ZSAjNjIxNzogVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgaW8uVGV4dElPV3JhcHBlciBkaWRuJ3QgaW5jbHVkZSB0aGUKKyAgZXJyb3JzIHByb3BlcnR5LiAgQWRkaXRpb25hbGx5LCB0aGUgZXJyb3JzIGFuZCBlbmNvZGluZyBwcm9wZXJ0aWVzIG9mIFN0cmluZ0lPCisgIGFyZSBhbHdheXMgTm9uZSBub3cuCisKKy0gSXNzdWUgIzYxMzc6IFRoZSBwaWNrbGUgbW9kdWxlIG5vdyB0cmFuc2xhdGVzIG1vZHVsZSBuYW1lcyB3aGVuIGxvYWRpbmcKKyAgb3IgZHVtcGluZyBwaWNrbGVzIHdpdGggYSAyLngtY29tcGF0aWJsZSBwcm90b2NvbCwgaW4gb3JkZXIgdG8gbWFrZSBkYXRhCisgIHNoYXJpbmcgYW5kIG1pZ3JhdGlvbiBlYXNpZXIuIFRoaXMgYmVoYXZpb3VyIGNhbiBiZSBkaXNhYmxlZCB1c2luZyB0aGUKKyAgbmV3IGBmaXhfaW1wb3J0c2Agb3B0aW9uYWwgYXJndW1lbnQuCisKKy0gUmVtb3ZlZCB0aGUgaXBhZGRyIG1vZHVsZS4KKworLSBJc3N1ZSAjMzYxMzogYmFzZTY0LntlbmNvZGUsZGVjb2RlfXN0cmluZyBhcmUgbm93IGNhbGxlZAorICBiYXNlNjQue2VuY29kZSxkZWNvZGV9Ynl0ZXMgd2hpY2ggcmVmbGVjdHMgd2hhdCB0eXBlIHRoZXkgYWNjZXB0IGFuZCByZXR1cm4uCisgIFRoZSBvbGQgbmFtZXMgYXJlIHN0aWxsIHRoZXJlIGFzIGRlcHJlY2F0ZWQgYWxpYXNlcy4KKworLSBJc3N1ZSAjNTc2NzogUmVtb3ZlIHNnbWxvcCBzdXBwb3J0IGZyb20geG1scnBjLmNsaWVudC4KKworLSBJc3N1ZSAjNjE1MDogRml4IHRlc3RfdW5pY29kZSBvbiB3aWRlLXVuaWNvZGUgYnVpbGRzLgorCistIElzc3VlICM2MTQ5OiBGaXggaW5pdGlhbGl6YXRpb24gb2YgV2Vha1ZhbHVlRGljdGlvbmFyeSBvYmplY3RzIGZyb20gbm9uLWVtcHR5CisgIHBhcmFtZXRlcnMuCisKK1dpbmRvd3MKKy0tLS0tLS0KKworLSBJc3N1ZSAjNjIyMTogRGVsZXRlIHRlc3QgcmVnaXN0cnkga2V5IGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0LgorCistIElzc3VlICM2MTU4OiBQYWNrYWdlIFNpbmUtMTAwMEh6LTMwMG1zLmFpZiBpbiBNU0kgZmlsZS4KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzU3MzU6IFB5dGhvbiBjb21waWxlZCB3aXRoIC0td2l0aC1weWRlYnVnIHNob3VsZCB0aHJvdyBhbgorICBJbXBvcnRFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgbW9kdWxlcyBjb21waWxlZCB3aXRob3V0CisgIC0td2l0aC1weWRlYnVnLCBhbmQgdmljZS12ZXJzYS4KKworCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjNjE1NDogTWFrZSBzdXJlIHRoZSBpbnRsIGxpYnJhcnkgaXMgYWRkZWQgdG8gTElCUyBpZiBuZWVkZWQuIEFsc28KKyAgYWRkZWQgTElCUyB0byBPUyBYIGZyYW1ld29yayBidWlsZHMuCisKKy0gSXNzdWUgIzU4MDk6IFNwZWNpZnlpbmcgYm90aCAtLWVuYWJsZS1mcmFtZXdvcmsgYW5kIC0tZW5hYmxlLXNoYXJlZCBpcworICBhbiBlcnJvci4gQ29uZmlndXJlIG5vdyBleHBsaWNpdHkgdGVsbHMgeW91IGFib3V0IHRoaXMuCisKKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgcmVsZWFzZSBjYW5kaWRhdGUgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTMwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjA5NzogRXNjYXBlIFVURi04IHN1cnJvZ2F0ZXMgcmVzdWx0aW5nIGZyb20gbWJzdG9jcyBjb252ZXJzaW9uCisgIG9mIHRoZSBjb21tYW5kIGxpbmUuCisKKy0gSXNzdWUgIzYwMTI6IEFkZCBjbGVhbnVwIHN1cHBvcnQgdG8gTyYgYXJndW1lbnQgcGFyc2luZy4KKworLSBJc3N1ZSAjNjA4OTogRml4ZWQgc3RyLmZvcm1hdCB3aXRoIGNlcnRhaW4gaW52YWxpZCBmaWVsZCBzcGVjaWZpZXJzCisgIHRoYXQgd291bGQgcmFpc2UgU3lzdGVtRXJyb3IuCisKKy0gSXNzdWUgIzU5ODI6IHN0YXRpY21ldGhvZCBhbmQgY2xhc3NtZXRob2Qgbm93IGV4cG9zZSB0aGUgd3JhcHBlZAorICBmdW5jdGlvbiB3aXRoIF9fZnVuY19fLgorCistIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgbWFuYWdlcnMgaW4gdGhlIHNhbWUgd2l0aC1zdGF0ZW1lbnQuCisgIERlcHJlY2F0ZWQgY29udGV4dGxpYi5uZXN0ZWQoKSB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkLgorCistIElzc3VlICM1ODI5OiBjb21wbGV4KCIxZTUwMCIpIG5vIGxvbmdlciByYWlzZXMgT3ZlcmZsb3dFcnJvci4gIFRoaXMKKyAgbWFrZXMgaXQgY29uc2lzdGVudCB3aXRoIGZsb2F0KCIxZTUwMCIpIGFuZCBpbnRlcnByZXRhdGlvbiBvZiByZWFsCisgIGFuZCBpbWFnaW5hcnkgbGl0ZXJhbHMuCisKKy0gSXNzdWUgIzM1Mjc6IFJlbW92ZWQgUHlfV0lOX1dJREVfRklMRU5BTUVTIHdoaWNoIGlzIG5vdCB1c2VkIGFueSBtb3JlLgorCistIElzc3VlICM1OTk0OiB0aGUgbWFyc2hhbCBtb2R1bGUgbm93IGhhcyBkb2NzdHJpbmdzLgorCistIElzc3VlICM1OTgxOiBGaXggdGhyZWUgbWlub3IgaW5mL25hbiBpc3N1ZXMgaW4gZmxvYXQuZnJvbWhleDoKKyAgKDEpIGluZiBhbmQgbmFuIHN0cmluZ3Mgd2l0aCB0cmFpbGluZyB3aGl0ZXNwYWNlIHdlcmUgaW5jb3JyZWN0bHkKKyAgcmVqZWN0ZWQ7ICAoMikgcGFyc2luZyBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyBpbmZpbml0aWVzIGFuZCBuYW5zCisgIHdhcyBsb2NhbGUgYXdhcmU7IGFuZCAoMykgdGhlIGludGVycHJldGF0aW9uIG9mIGZyb21oZXgoJy1uYW4nKQorICBkaWRuJ3QgbWF0Y2ggdGhhdCBvZiBmbG9hdCgnLW5hbicpLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzQ4NTk6IEltcGxlbWVudCBQRVAgMzgzIGZvciBwd2QsIHNwd2QsIGFuZCBncnAuCisKKy0gc210cGxpYiAnbG9naW4nIGFuZCAnY3JhbS1tZDUnIGxvZ2luIGFyZSBhbHNvIGZpeGVkIChzZWUgSXNzdWUgIzUyNTkpLgorCistIElzc3VlICM2MTIxOiBweWRvYyBub3cgaWdub3JlcyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgaW4gdGhlCisgIGFyZ3VtZW50IHRvIHRoZSAnaGVscCcgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzYxMTg6IHVybGxpYi5wYXJzZS5xdW90ZV9wbHVzIGlnbm9yZWQgdGhlIGVuY29kaW5nIGFuZCBlcnJvcnMKKyAgYXJndW1lbnRzIGZvciBzdHJpbmdzIHdpdGggYSBzcGFjZSBpbiB0aGVtLgorCistIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSB3YXMgbm90IHdvcmtpbmcgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkCisgIG5hbWVzOiAgY2xzLCBzZWxmLCB0dXBsZSwgaXRlbWdldHRlciwgYW5kIHByb3BlcnR5LgorCistIEluIHVuaXR0ZXN0LCB1c2luZyBhIHNraXBwaW5nIGRlY29yYXRvciBvbiBhIGNsYXNzIGlzIG5vdyBlcXVpdmFsZW50IHRvCisgIHNraXBwaW5nIGV2ZXJ5IHRlc3Qgb24gdGhlIGNsYXNzLiAgVGhlIENsYXNzVGVzdFN1aXRlIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQuCisKKy0gSXNzdWUgIzYwNTA6IERvbid0IGZhaWwgZXh0cmFjdGluZyBhIGRpcmVjdG9yeSBmcm9tIGEgemlwZmlsZSBpZgorICB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLgorCistIElzc3VlICMxMzA5MzUyOiBmY250bCBub3cgY29udmVydHMgaXRzIHRoaXJkIGFyZ3VtZW50cyB0byBhIEMgYGxvbmdgIHJhdGhlcgorICB0aGFuIGFuIGludCwgd2hpY2ggbWFrZXMgc29tZSBvcGVyYXRpb25zIHBvc3NpYmxlIHVuZGVyIDY0LWJpdCBMaW51eCAoZS5nLgorICBETl9NVUxUSVNIT1Qgd2l0aCBGX05PVElGWSkuCisKKy0gSXNzdWUgIzU3NjE6IEFkZCB0aGUgbmFtZSBvZiB0aGUgdW5kZXJseWluZyBmaWxlIHRvIHRoZSByZXByKCkgb2YgdmFyaW91cworICBJTyBvYmplY3RzLgorCistIElzc3VlICM1MjU5OiBzbXRwbGliIHBsYWluIGF1dGggbG9naW4gbm8gbG9uZ2VyIGdpdmVzIGEgdHJhY2ViYWNrLiAgRml4CisgIGJ5IE11c2FzaGkgVGFtdXJhLCB0ZXN0cyBieSBNYXJjaW4gQmFjaHJ5LgorCistIElzc3VlICMxOTgzOiBGaXggZnVuY3Rpb25zIHRha2luZyBvciByZXR1cm5pbmcgYSBwcm9jZXNzIGlkZW50aWZpZXIgdG8gdXNlCisgIHRoZSBkZWRpY2F0ZWQgQyB0eXBlIGBgcGlkX3RgYCBpbnN0ZWFkIG9mIGEgQyBgYGludGBgLiBTb21lIHBsYXRmb3JtcyBoYXZlCisgIGEgcHJvY2VzcyBpZGVudGlmaWVyIHR5cGUgd2lkZXIgdGhhbiB0aGUgc3RhbmRhcmQgQyBpbnRlZ2VyIHR5cGUuCisKKy0gSXNzdWUgIzQwNjY6IHNtdHBsaWIuU01UUF9TU0wuX2dldF9zb2NrZXQgbm93IGNvcnJlY3RseSByZXR1cm5zIHRoZSBzb2NrZXQuCisgIFBhdGNoIGJ5IEZhcmhhbiBBaG1hZCwgdGVzdCBieSBNYXJjaW4gQmFjaHJ5LgorCistIElzc3VlICMyMTE2OiBXZWFrIHJlZmVyZW5jZXMgYW5kIHdlYWsgZGljdGlvbmFyaWVzIG5vdyBzdXBwb3J0IGNvcHkoKWluZyBhbmQKKyAgZGVlcGNvcHkoKWluZy4KKworLSBJc3N1ZSAjMTY1NTogTWFrZSBpbWFwbGliIElQdjYtY2FwYWJsZS4gUGF0Y2ggYnkgRGVyZWsgTW9yci4KKworLSBJc3N1ZSAjNTkxODogRml4IGEgY3Jhc2ggaW4gdGhlIHBhcnNlciBtb2R1bGUuCisKKy0gSXNzdWUgIzE2NjQ6IE1ha2Ugbm50cGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCisKKy0gSXNzdWUgIzUwMDY6IEJldHRlciBoYW5kbGluZyBvZiB1bmljb2RlIGJ5dGUtb3JkZXIgbWFya3MgKEJPTSkgaW4gdGhlIGlvCisgIGxpYnJhcnkuIFRoaXMgbWVhbnMsIGZvciBleGFtcGxlLCB0aGF0IG9wZW5pbmcgYW4gVVRGLTE2IHRleHQgZmlsZSBpbgorICBhcHBlbmQgbW9kZSBkb2Vzbid0IGFkZCBhIEJPTSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlIGlmIHRoZSBmaWxlIGlzbid0CisgIGVtcHR5LgorCistIElzc3VlICM0MDUwOiBpbnNwZWN0LmZpbmRzb3VyY2UvZ2V0c291cmNlIG5vdyByYWlzZSBhbiBJT0Vycm9yIGlmIHRoZSAnc291cmNlJworICBmaWxlIGlzIGEgYmluYXJ5LiAgUGF0Y2ggYnkgQnJvZGllIFJhbywgdGVzdHMgYnkgRGFuaWVsIERpbml6LiAgVGhpcyBmaXgKKyAgY29ycmVjdHMgYSBweWRvYyByZWdyZXNzaW9uLgorCistIElzc3VlICM1OTU1OiBhaWZjJ3MgY2xvc2UgbWV0aG9kIGRpZCBub3QgY2xvc2UgdGhlIGZpbGUgaXQgd3JhcHBlZCwKKyAgbm93IGl0IGRvZXMuICBUaGlzIGFsc28gbWVhbnMgZ2V0ZnAgbWV0aG9kIG5vdyByZXR1cm5zIHRoZSByZWFsIGZwLgorCitJbnN0YWxsYXRpb24KKy0tLS0tLS0tLS0tLQorCistIElzc3VlICM2MDQ3OiBmdWxsaW5zdGFsbCBoYXMgYmVlbiByZW1vdmVkIGJlY2F1c2UgUHl0aG9uIDMncyBleGVjdXRhYmxlIHdpbGwKKyAgbm93IGJlIGtub3duIGFzIHB5dGhvbjMuCisKKy0gTGliL3NtdHBkLnB5IGlzIG5vIGxvbmdlciBpbnN0YWxsZWQgYXMgYSBzY3JpcHQuCisKK0V4dGVuc2lvbiBNb2R1bGVzCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMzMDYxOiBVc2Ugd2NzZnRpbWUgZm9yIHRpbWUuc3RyZnRpbWUgd2hlcmUgYXZhaWxhYmxlLgorCistIElzc3VlICM0ODczOiBGaXggcmVzb3VyY2UgbGVha3MgaW4gZXJyb3IgY2FzZXMgb2YgcHdkIGFuZCBncnAuCisKKy0gSXNzdWUgIzYwOTM6IEZpeCBvZmYtYnktb25lIGVycm9yIGluIGxvY2FsZS5zdHJ4ZnJtLgorCistIFRoZSBfZnVuY3Rvb2xzIGFuZCBfbG9jYWxlIG1vZHVsZXMgYXJlIG5vdyBidWlsdCBpbnRvIHRoZSBsaWJweXRob24gc2hhcmVkCisgIGxpYnJhcnkgaW5zdGVhZCBvZiBhcyBleHRlbnNpb24gbW9kdWxlcy4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzM1ODU6IEFkZCBwa2ctY29uZmlnIHN1cHBvcnQuIEl0IGNyZWF0ZXMgYSBweXRob24tMi43LnBjIGZpbGUKKyAgYW5kIGEgcHl0aG9uMy5wYyBzeW1saW5rIGluIHRoZSAkKExJQkRJUikvcGtnY29uZmlnIGRpcmVjdG9yeS4gUGF0Y2ggYnkKKyAgQ2xpbnRvbiBSb3kuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICM1NDQyOiBUZXN0cyBmb3IgaW1wb3J0bGliIHdlcmUgbm90IHByb3Blcmx5IHNraXBwaW5nIGNhc2Utc2Vuc2l0aXZpdHkKKyAgdGVzdHMgb24gZGFyd2luIGV2ZW4gd2hlbiB0aGUgT1Mgd2FzIGluc3RhbGxlZCBvbiBhIGNhc2Utc2Vuc2l0aXZlCisgIGZpbGVzeXN0ZW0uIEFsc28gZml4ZWQgdGVzdHMgdGhhdCBzaG91bGQgbm90IGJlIHJ1biB3aGVuCisgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlIGlzIHRydWUuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIGJldGEgMT8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMDktMDUtMDYqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICM1OTE0OiBBZGQgbmV3IEMgQVBJIGZ1bmN0aW9uIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZSwgYW5kCisgIGRlcHJlY2F0ZSBQeU9TX2FzY2lpX3N0cnRvZCBhbmQgUHlPU19hc2NpaV9hdG9mLgorCistIElzc3VlICMzMzgyOiBmbG9hdC5fX2Zvcm1hdF9fLCBjb21wbGV4Ll9fZm9ybWF0X18sIGFuZCAlLWZvcm1hdHRpbmcKKyAgbm8gbG9uZ2VyIG1hcCAnRicgdG8gJ2YnLiBCZWNhdXNlIG9mIGlzc3VlICM1ODU5IChiZWxvdyksIHRoaXMgb25seQorICBhZmZlY3RzIG5hbiAtPiBOQU4gYW5kIGluZiAtPiBJTkYuCisKKy0gSXNzdWUgIzU3OTk6IG50cGF0aCAoaWUsIG9zLnBhdGggb24gV2luZG93cykgZnVsbHkgc3VwcG9ydHMgVU5DIHBhdGhuYW1lcworICBpbiBhbGwgb3BlcmF0aW9ucywgaW5jbHVkaW5nIHNwbGl0ZHJpdmUsIHNwbGl0LCBldGMuICBzcGxpdHVuYygpIG5vdyBpc3N1ZXMKKyAgYSBQZW5kaW5nRGVwcmVjYXRpb24gd2FybmluZy4KKworLSBJc3N1ZSAjNTkyMDogRm9yIGZsb2F0Ll9fZm9ybWF0X18sIGNoYW5nZSB0aGUgYmVoYXZpb3Igd2l0aCB0aGUKKyAgZW1wdHkgcHJlc2VudGF0aW9uIHR5cGUgKHRoYXQgaXMsIG5vdCBvbmUgb2YgJ2UnLCAnZicsICdnJywgb3IgJ24nKQorICB0byBiZSBsaWtlICdnJyBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbCBwb2ludCBhbmQgd2l0aCBhCisgIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBQcmV2aW91c2x5LCB0aGUgYmVoYXZpb3IgdGhlIHNhbWUgYnV0IHdpdGgKKyAgYSBkZWZhdWx0IHByZWNpc2lvbiBvZiA2LiAgVGhpcyBtb3JlIGNsb3NlbHkgbWF0Y2hlcyBzdHIoKSwgYW5kCisgIHJlZHVjZXMgc3VycHJpc2VzIHdoZW4gYWRkaW5nIGFsaWdubWVudCBmbGFncyB0byB0aGUgZW1wdHkKKyAgcHJlc2VudGF0aW9uIHR5cGUuIFRoaXMgYWxzbyBhZmZlY3RzIHRoZSBuZXcgY29tcGxleC5fX2Zvcm1hdF9fIGluCisgIHRoZSBzYW1lIHdheS4KKworLSBJbXBsZW1lbnQgUEVQIDM4MywgTm9uLWRlY29kYWJsZSBCeXRlcyBpbiBTeXN0ZW0gQ2hhcmFjdGVyIEludGVyZmFjZXMuCisKKy0gSXNzdWUgIzU4OTA6IGluIHN1YmNsYXNzZXMgb2YgJ3Byb3BlcnR5JyB0aGUgX19kb2NfXyBhdHRyaWJ1dGUgd2FzCisgIHNoYWRvd2VkIGJ5IGNsYXNzdHlwZSdzLCBldmVuIGlmIGl0IHdhcyBOb25lLiAgcHJvcGVydHkgbm93CisgIGluc2VydHMgdGhlIF9fZG9jX18gaW50byB0aGUgc3ViY2xhc3MgaW5zdGFuY2UgX19kaWN0X18uCisKKy0gSXNzdWUgIzQ0MjY6IFRoZSBVVEYtNyBkZWNvZGVyIHdhcyB0b28gc3RyaWN0IGFuZCBkaWRuJ3QgYWNjZXB0IHNvbWUgbGVnYWwKKyAgc2VxdWVuY2VzLiBQYXRjaCBieSBOaWNrIEJhcm5lcyBhbmQgVmljdG9yIFN0aW5uZXIuCisKKy0gSXNzdWUgIzM2NzI6IFJlamVjdCBzdXJyb2dhdGVzIGluIHV0Zi04IGNvZGVjOyBhZGQgc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyLgorCistIElzc3VlICM1ODgzOiBJbiB0aGUgaW8gbW9kdWxlLCB0aGUgQnVmZmVyZWRJT0Jhc2UgYW5kIFRleHRJT0Jhc2UgQUJDcyBoYXZlCisgIHJlY2VpdmVkIGEgbmV3IG1ldGhvZCwgZGV0YWNoKCkuICBkZXRhY2goKSBkaXNjb25uZWN0cyB0aGUgdW5kZXJseWluZyBzdHJlYW0KKyAgZnJvbSB0aGUgYnVmZmVyIG9yIHRleHQgSU8gYW5kIHJldHVybnMgaXQuCisKKy0gSXNzdWUgIzU4NTk6IFJlbW92ZSBzd2l0Y2ggZnJvbSAnJWYnIHRvICclZyctc3R5bGUgZm9ybWF0dGluZyBmb3IKKyAgZmxvYXRzIHdpdGggYWJzb2x1dGUgdmFsdWUgb3ZlciAxZTUwLiAgQWxzbyByZW1vdmUgbGVuZ3RoCisgIHJlc3RyaWN0aW9ucyBmb3IgZmxvYXQgZm9ybWF0dGluZzogJyUuNjdmJyAlIDEyLjM0IGFuZCAnJS4xMjBlJyAlCisgIDEyLjM0IG5vIGxvbmdlciByYWlzZSBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzE1ODg6IEFkZCBjb21wbGV4Ll9fZm9ybWF0X18uIEZvciBleGFtcGxlLAorICBmb3JtYXQoY29tcGxleCgxLCAyLi8zKSwgJy41Jykgbm93IHByb2R1Y2VzIGEgc2Vuc2libGUgcmVzdWx0LgorCistIElzc3VlICM1ODY0OiBGaXggZW1wdHkgZm9ybWF0IGNvZGUgZm9ybWF0dGluZyBmb3IgZmxvYXRzIHNvIHRoYXQgaXQKKyAgbmV2ZXIgZ2l2ZXMgbW9yZSB0aGFuIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KKworLSBJc3N1ZSAjNTc5MzogUmF0aW9uYWxpemUgaXNkaWdpdCAvIGlzYWxwaGEgLyB0b2xvd2VyLCBldGMuIEluY2x1ZGVzCisgIG5ldyBQeV9JU0RJR0lUIC8gUHlfSVNBTFBIQSAvIFB5X1RPTE9XRVIsIGV0Yy4gaW4gcGN0eXBlcy5oLgorCistIElzc3VlICM1ODM1OiBEZXByZWNhdGUgUHlPU19hc2NpaV9mb3JtYXRkLgorCistIElzc3VlICM0OTcxOiBGaXggdGl0bGVjYXNlIGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIHRoZWlyIG93bgorICB0aXRsZWNhc2UsIGJ1dCBub3QgdGhlaXIgb3duIHVwcGVyY2FzZS4KKworLSBJc3N1ZSAjNTI4MzogU2V0dGluZyBfX2NsYXNzX18gaW4gX19kZWxfXyBjYXVzZWQgYSBzZWdmYXVsdC4KKworLSBJc3N1ZSAjNTgxNjogY29tcGxleChyZXByKHopKSBub3cgcmVjb3ZlcnMgeiBleGFjdGx5LCBldmVuIHdoZW4KKyAgeiBpbnZvbHZlcyBuYW5zLCBpbmZzIG9yIG5lZ2F0aXZlIHplcm9zLgorCistIElzc3VlICMzMTY2OiBNYWtlIGludCAtPiBmbG9hdCBjb252ZXJzaW9ucyBjb3JyZWN0bHkgcm91bmRlZC4KKworLSBJc3N1ZSAjMTg2OSAoYW5kIG1hbnkgZHVwbGljYXRlcyk6IG1ha2Ugcm91bmQoeCwgbikgY29ycmVjdGx5CisgIHJvdW5kZWQgZm9yIGEgZmxvYXQgeCwgYnkgdXNpbmcgdGhlIGRlY2ltYWwgPC0+IGJpbmFyeSBjb252ZXJzaW9ucworICBmcm9tIFB5dGhvbi9kdG9hLmMuICBBcyBhIGNvbnNlcXVlbmNlLCAoZS5nLikgcm91bmQoeCwgMikgbm93CisgIGNvbnNpc3RlbnRseSBhZ3JlZXMgd2l0aCBmb3JtYXQoeCwgJy4yZicpLgorCistIElzc3VlICM1Nzg3OiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzb21lX3R5cGUsICJfX2Jhc2VzX18iKSBzZWdmYXVsdGVkIG9uCisgIHNvbWUgYnVpbHRpbiB0eXBlcy4KKworLSBJc3N1ZSAjNTc3MjogZm9ybWF0KDFlMTAwLCAnPCcpIHByb2R1Y2VzICcxZSsxMDAnLCBub3QgJzEuMGUrMTAwJy4KKworLSBJc3N1ZSAjNTUxNTogc3RyLmZvcm1hdCgpIHR5cGUgJ24nIGNvbWJpbmVkIHdpdGggY29tbWFzIGFuZCBsZWFkaW5nCisgIHplcm9zIG5vIGxvbmdlciBnaXZlcyBvZGQgcmVzdWx0cyB3aXRoIGludHMgYW5kIGZsb2F0cy4KKworLSBJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yCisgIGZsb2F0cy4KKworLSBUaGUgc3RyIGZ1bmN0aW9uIHN3aXRjaGVzIHRvIGV4cG9uZW50aWFsIG5vdGF0aW9uIGF0CisgIDFlMTEsIG5vdCAxZTEyLiAgVGhpcyBhdm9pZHMgcHJpbnRpbmcgMTMgc2lnbmlmaWNhbnQgZGlnaXRzIGluCisgIHNpdHVhdGlvbnMgd2hlcmUgb25seSAxMiBvZiB0aGVtIGFyZSBjb3JyZWN0LiAgRXhhbXBsZSBwcm9ibGVtCisgIHZhbHVlOiBzdHIoMWUxMSArIDAuNSkuICAoVGhpcyBtaW5vciBpc3N1ZSBoYXMgZXhpc3RlZCBpbiAyLnggZm9yIGEKKyAgbG9uZyB0aW1lLikKKworLSBJc3N1ZSAjMTU4MDogT24gbW9zdCBwbGF0Zm9ybXMsIHVzZSBhICdzaG9ydCcgZmxvYXQgcmVwcjogZm9yIGEKKyAgZmluaXRlIGZsb2F0IHgsIHJlcHIoeCkgbm93IG91dHB1dHMgYSBzdHJpbmcgYmFzZWQgb24gdGhlIHNob3J0ZXN0CisgIHNlcXVlbmNlIG9mIGRlY2ltYWwgZGlnaXRzIHRoYXQgcm91bmRzIHRvIHguICBQcmV2aW91cyBiZWhhdmlvdXIgd2FzCisgIHRvIG91dHB1dCAxNyBzaWduaWZpY2FudCBkaWdpdHMgYW5kIHRoZW4gc3RyaXAgdHJhaWxpbmcgemVyb3MuCisgIEFub3RoZXIgbWlub3IgZGlmZmVyZW5jZSBpcyB0aGF0IHRoZSBuZXcgcmVwciBzd2l0Y2hlcyB0bworICBleHBvbmVudGlhbCBub3RhdGlvbiBhdCAxZTE2IGluc3RlYWQgb2YgdGhlIHByZXZpb3VzIDFlMTc7IHRoaXMKKyAgYXZvaWRzIG1pc2xlYWRpbmcgb3V0cHV0IGluIHNvbWUgY2FzZXMuCisKKyAgVGhlcmUncyBhIG5ldyBzeXMgYXR0cmlidXRlIHN5cy5mbG9hdF9yZXByX3N0eWxlLCB3aGljaCB0YWtlcworICB0aGUgdmFsdWUgJ3Nob3J0JyB0byBpbmRpY2F0ZSB0aGF0IHdlJ3JlIHVzaW5nIHNob3J0IGZsb2F0IHJlcHIsCisgIGFuZCAnbGVnYWN5JyBpZiB0aGUgc2hvcnQgZmxvYXQgcmVwciBpc24ndCBhdmFpbGFibGUgZm9yIG9uZQorICByZWFzb24gb3IgYW5vdGhlci4KKworICBUaGUgZmxvYXQgcmVwciBjaGFuZ2UgaW52b2x2ZXMgaW5jb3Jwb3JhdGluZyBEYXZpZCBHYXkncyAncGVyZmVjdAorICByb3VuZGluZycgY29kZSBpbnRvIHRoZSBQeXRob24gY29yZSAoaXQncyBpbiBQeXRob24vZHRvYS5jKS4gIEFzIGEKKyAgc2Vjb25kYXJ5IGNvbnNlcXVlbmNlLCBhbGwgc3RyaW5nLXRvLWZsb2F0IGFuZCBmbG9hdC10by1zdHJpbmcKKyAgY29udmVyc2lvbnMgKGluY2x1ZGluZyBhbGwgZmxvYXQgZm9ybWF0dGluZyBvcGVyYXRpb25zKSB3aWxsIGJlCisgIGNvcnJlY3RseSByb3VuZGVkIG9uIHRoZXNlIHBsYXRmb3Jtcy4KKworICBTZWUgaXNzdWUgIzE1ODAgZGlzY3Vzc2lvbnMgZm9yIGRldGFpbHMgb2YgcGxhdGZvcm1zIGZvciB3aGljaAorICB0aGlzIGNoYW5nZSBkb2VzIG5vdCBhcHBseS4KKworLSBJc3N1ZSAjNTc1OTogZmxvYXQoKSBkaWRuJ3QgY2FsbCBfX2Zsb2F0X18gb24gc3RyIHN1YmNsYXNzZXMuCisKKy0gVGhlIHN0cmluZy5tYWtldHJhbnMoKSBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOyB0aGVyZSBpcyBhIG5ldyBzdGF0aWMgbWV0aG9kCisgIG1ha2V0cmFucygpIG9uIHRoZSBieXRlcyBhbmQgYnl0ZWFycmF5IGNsYXNzZXMuICBUaGlzIHJlbW92ZXMgY29uZnVzaW9uIGFib3V0CisgIHRoZSB0eXBlcyBzdHJpbmcubWFrZXRyYW5zKCkgaXMgc3VwcG9zZWQgdG8gd29yayB3aXRoLCBhbmQgbWlycm9ycyB0aGUKKyAgbWV0aG9kcyBhdmFpbGFibGUgb24gdGhlIHN0ciBjbGFzcy4KKworLSBJc3N1ZSAjMjE3MDogcmVmYWN0b3JlZCB4bWwuZG9tLm1pbmlkb20ubm9ybWFsaXplLCBpbmNyZWFzaW5nIGJvdGgKKyAgaXRzIGNsYXJpdHkgYW5kIGl0cyBzcGVlZC4KKworLSBJc3N1ZSAjMTExMzI0NDogUHlfWElOQ1JFRiwgUHlfREVDUkVGLCBQeV9YREVDUkVGOiBBZGQgYGBkbyB7IC4uLiB9IHdoaWxlICgwKWBgCisgIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLgorCistIElzc3VlICMzNzM5OiBUaGUgdW5pY29kZS1pbnRlcm5hbCBlbmNvZGVyIG5vdyByZXBvcnRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycworICBjb25zdW1lZCBsaWtlIGFueSBvdGhlciBlbmNvZGVyIChpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMpLgorCitJbnN0YWxsYXRpb24KKy0tLS0tLS0tLS0tLQorCistIElzc3VlICM1NzU2OiBJbnN0YWxsIGlkbGUgYW5kIHB5ZG9jIHdpdGggYSAzIHN1ZmZpeC4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICM4MjAzOiBGaXggSURMRSBDcmVkaXRzIGRpYWxvZzogdmlld19maWxlKCkgdXNlcyBpdHMgZW5jb2RpbmcgYXJndW1lbnQuCisKKy0gSXNzdWUgIzUzMTE6IGJkaXN0X21zaSBjYW4gbm93IGJ1aWxkIHBhY2thZ2VzIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBhCisgIHNwZWNpZmljIFB5dGhvbiB2ZXJzaW9uLgorCistIElzc3VlICM1MTUwOiBJRExFJ3MgZm9ybWF0IG1lbnUgbm93IGhhcyBhbiBvcHRpb24gdG8gc3RyaXAgdHJhaWxpbmcKKyAgd2hpdGVzcGFjZS4KKworLSBJc3N1ZSAjNTk0MDogZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfY2xpYi5jaGVja19saWJyYXJ5X2xpc3Qgd2FzIG5vdCBkb2luZworICB0aGUgcmlnaHQgdHlwZSBjaGVja2luZ3MgYW55bW9yZS4KKworLSBJc3N1ZSAjNDg3NTogT24gd2luMzIsIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBkb2VzIG5vIGxvbmdlcgorICByZXR1cm4gZGlyZWN0b3JpZXMuCisKKy0gSXNzdWUgIzUxNDI6IEFkZCB0aGUgYWJpbGl0eSB0byBza2lwIG1vZHVsZXMgd2hpbGUgc3RlcHBpbmcgdG8gcGRiLgorCistIElzc3VlICMxMzA5NTY3OiBGaXggbGluZWNhY2hlIGJlaGF2aW9yIG9mIHN0cmlwcGluZyBzdWJkaXJlY3RvcmllcyB3aGVuCisgIGxvb2tpbmcgZm9yIGZpbGVzIGdpdmVuIGJ5IGEgcmVsYXRpdmUgZmlsZW5hbWUuCisKKy0gSXNzdWUgIzU5MjM6IFVwZGF0ZSB0aGUgYGB0dXJ0bGVgYCBtb2R1bGUgdG8gdmVyc2lvbiAxLjEsIGFkZCB0d28gbmV3CisgIHR1cnRsZSBkZW1vcyBpbiBEZW1vL3R1cnRsZS4KKworLSBJc3N1ZSAjNTY5MjogSW4gYGB6aXBmaWxlLlppcGZpbGVgYCwgZml4IHdyb25nIHBhdGggY2FsY3VsYXRpb24gd2hlbgorICBleHRyYWN0aW5nIGEgZmlsZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzU5MTM6IG9zLmxpc3RkaXIoKSBzaG91bGQgZmFpbCBmb3IgZW1wdHkgcGF0aCBvbiB3aW5kb3dzLgorCistIElzc3VlICM1MDg0OiB1bnBpY2tsaW5nIG5vdyBpbnRlcm5zIHRoZSBhdHRyaWJ1dGUgbmFtZXMgb2YgcGlja2xlZCBvYmplY3RzLAorICBzYXZpbmcgbWVtb3J5IGFuZCBhdm9pZGluZyBncm93dGggaW4gc2l6ZSBvZiBzdWJzZXF1ZW50IHBpY2tsZXMuIFByb3Bvc2FsCisgIGFuZCBvcmlnaW5hbCBwYXRjaCBieSBKYWtlIE1jR3VpcmUuCisKKy0gVGhlIGpzb24gbW9kdWxlIG5vdyB3b3JrcyBleGNsdXNpdmVseSB3aXRoIHN0ciBhbmQgbm90IGJ5dGVzLgorCistIElzc3VlICMzOTU5OiBUaGUgaXBhZGRyIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4KKyAgQ29udHJpYnV0ZWQgYnkgR29vZ2xlLgorCistIElzc3VlICMzMDAyOiBgYHNodXRpbC5jb3B5ZmlsZSgpYGAgYW5kIGBgc2h1dGlsLmNvcHl0cmVlKClgYCBub3cgcmFpc2UgYW4KKyAgZXJyb3Igd2hlbiBhIG5hbWVkIHBpcGUgaXMgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIGJsb2NraW5nIGluZmluaXRlbHkuCisKKy0gSXNzdWUgIzU4NTc6IHRva2VuaXplLnRva2VuaXplKCkgbm93IHJldHVybnMgbmFtZWQgdHVwbGVzLgorCistIElzc3VlICM0MzA1OiBjdHlwZXMgc2hvdWxkIG5vdyBidWlsZCBhZ2FpbiBvbiBtaXBzZWwtbGludXgtZ251CisKKy0gSXNzdWUgIzE3MzQyMzQ6IE1hc3NpdmVseSBzcGVlZHVwIGBgdW5pY29kZWRhdGEubm9ybWFsaXplKClgYCB3aGVuIHRoZQorICBzdHJpbmcgaXMgYWxyZWFkeSBpbiBub3JtYWxpemVkIGZvcm0sIGJ5IHBlcmZvcm1pbmcgYSBxdWljayBjaGVjayBiZWZvcmVoYW5kLgorICBPcmlnaW5hbCBwYXRjaCBieSBSYXVsaSBSdW9ob25lbi4KKworLSBJc3N1ZSAjNTg1MzogY2FsbGluZyBhIGZ1bmN0aW9uIG9mIHRoZSBtaW1ldHlwZXMgbW9kdWxlIGZyb20gc2V2ZXJhbCB0aHJlYWRzCisgIGF0IG9uY2UgY291bGQgaGl0IHRoZSByZWN1cnNpb24gbGltaXQgaWYgdGhlIG1pbWV0eXBlcyBkYXRhYmFzZSBoYWRuJ3QgYmVlbgorICBpbml0aWFsaXplZCBiZWZvcmUuCisKKy0gSXNzdWUgIzU4NTQ6IFVwZGF0ZWQgX19hbGxfXyB0byBpbmNsdWRlIHNvbWUgbWlzc2luZyBuYW1lcyBhbmQgcmVtb3ZlIHNvbWUKKyAgbmFtZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSBleHBvcnRlZC4KKworLSBJc3N1ZSAjMzEwMjogIEFsbCBnbG9iYWwgc3ltYm9scyB0aGF0IHRoZSBfY3R5cGVzIGV4dGVuc2lvbiBkZWZpbmVzCisgIGFyZSBub3cgcHJlZml4ZWQgd2l0aCAnUHknIG9yICdfY3R5cGVzJy4KKworLSBJc3N1ZSAjNTA0MTogY3R5cGVzIGRvZXMgbm93IGFsbG93IHBpY2tsaW5nIHdpZGUgY2hhcmFjdGVyLgorCistIElzc3VlICM1ODEyOiBGb3IgdGhlIHR3by1hcmd1bWVudCBmb3JtIG9mIHRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciwKKyAgRnJhY3Rpb24obSwgbiksIG0gYW5kIG4gYXJlIHBlcm1pdHRlZCB0byBiZSBhcmJpdHJhcnkgUmF0aW9uYWwKKyAgaW5zdGFuY2VzLgorCistIElzc3VlICM1ODEyOiBGcmFjdGlvbignMWU2JykgaXMgdmFsaWQ6IG1vcmUgZ2VuZXJhbGx5LCBhbnkgc3RyaW5nCisgIHRoYXQncyB2YWxpZCBmb3IgZmxvYXQoKSBpcyBub3cgdmFsaWQgZm9yIEZyYWN0aW9uKCksIHdpdGggdGhlCisgIGV4Y2VwdGlvbiBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyBOYU5zIGFuZCBpbmZpbml0aWVzLgorCistIElzc3VlICM1NzM0OiBCdWZmZXJlZFJXUGFpciB3YXMgcG9vcmx5IHRlc3RlZCBhbmQgaGFkIHNldmVyYWwgZ2xhcmluZworICBidWdzLiBQYXRjaCBieSBCcmlhbiBRdWlubGFuLgorCistIElzc3VlICMxMTYxMDMxOiBmaXggcmVhZHdyaXRlIHNlbGVjdCBmbGFnIGhhbmRsaW5nOiBQT0xMUFJJIG5vdworICByZXN1bHRzIGluIGEgaGFuZGxlX2V4cHRfZXZlbnQgY2FsbCwgbm90IGhhbmRsZV9yZWFkX2V2ZW50LCBhbmQgUE9MTEVSUgorICBhbmQgUE9MTE5WQUwgbm93IGNhbGwgaGFuZGxlX2Nsb3NlLCBub3QgaGFuZGxlX2V4cHRfZXZlbnQuICBBbHNvLAorICBkaXNwYXRjaGVyIG5vdyBoYXMgYW4gJ2lnbm9yZV9sb2dfdHlwZXMnIGF0dHJpYnV0ZSBmb3Igc3VwcHJlc3NpbmcKKyAgbG9nIG1lc3NhZ2VzLCB3aGljaCBpcyBzZXQgdG8gJ3dhcm5pbmcnIGJ5IGRlZmF1bHQuCisKKy0gSXNzdWUgIzI3MDM6IFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X186IFByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yCisgIG5ldyBhcmd1bWVudHMgaW50cm9kdWNlZCBpbiAyLjUuCisKKy0gSXNzdWUgIzU4MjggKEludmFsaWQgYmVoYXZpb3Igb2YgdW5pY29kZS5sb3dlcik6IEZpeGVkIGJvZ3VzIGxvZ2ljIGluCisgIG1ha2V1bmljb2RlZGF0YS5weSBhbmQgcmVnZW5lcmF0ZWQgdGhlIFVuaWNvZGUgZGF0YWJhc2UgKFRoaXMgZml4ZXMKKyAgdSdcdTFkNzknLmxvd2VyKCkgPT0gJ1x4MDAnKS4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzU4ODE6IFJlbW92ZSBvbGQgdW5kb2N1bWVudGVkIGNvbXBhdGliaWxpdHkgaW50ZXJmYWNlcyBpbiBoYXNobGliIGFuZAorICBwd2QuCisKKy0gSXNzdWUgIzU0NjM6IEluIHN0cnVjdCBtb2R1bGUsIHJlbW92ZSBkZXByZWNhdGVkIGZsb2F0IGNvZXJjaW9uCisgIGZvciBpbnRlZ2VyIHR5cGUgY29kZXM6IHN0cnVjdC5wYWNrKCdMJywgMC4zKSBzaG91bGQgbm93IHJhaXNlCisgIGFuIGVycm9yLiAgVGhlIF9QWV9TVFJVQ1RfRkxPQVRfQ09FUkNFIGNvbnN0YW50IGhhcyBiZWVuIHJlbW92ZWQuCisgIFRoZSB2ZXJzaW9uIG51bWJlciBoYXMgYmVlbiBidW1wZWQgdG8gMC4zLgorCistIElzc3VlICM1MzU5OiBSZWFkZCB0aGUgQmVya2VsZXkgREIgZGV0ZWN0aW9uIGNvZGUgdG8gYWxsb3cgX2RibSBiZSBidWlsdAorICB1c2luZyBCZXJrZWxleSBEQi4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzUzNTQ6IE5ldyB0ZXN0IHN1cHBvcnQgZnVuY3Rpb24gaW1wb3J0X2ZyZXNoX21vZHVsZSgpIG1ha2VzCisgIGl0IGVhc3kgdG8gaW1wb3J0IGJvdGggbm9ybWFsIGFuZCBvcHRpbWlzZWQgdmVyc2lvbnMgb2YgbW9kdWxlcy4KKyAgdGVzdF9oZWFwcSBhbmQgdGVzdF93YXJuaW5ncyBoYXZlIGJlZW4gYWRqdXN0ZWQgdG8gdXNlIGl0LCB0ZXN0cyBmb3IKKyAgb3RoZXIgbW9kdWxlcyB3aXRoIGJvdGggQyBhbmQgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgc3RkbGliCisgIGNhbiBiZSBhZGp1c3RlZCB0byB1c2UgaXQgb3ZlciB0aW1lLgorCistIElzc3VlICM1ODM3OiBDZXJ0YWluIHNlcXVlbmNlcyBvZiBjYWxscyB0byBzZXQoKSBhbmQgdW5zZXQoKSBmb3IKKyAgc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkIG9iamVjdHMgcmVzdG9yZWQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcworICBpbmNvcnJlY3RseSBvbiBfX2V4aXRfXy4KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzU2MzA6IEEgcmVwbGFjZW1lbnQgUHlDT2JqZWN0IEFQSSwgUHlDYXBzdWxlLCBoYXMgYmVlbiBhZGRlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgYWxwaGEgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDA5LTQtNCoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSW1wbGVtZW50IFBFUCAzNzgsIEZvcm1hdCBTcGVjaWZpZXIgZm9yIFRob3VzYW5kcyBTZXBhcmF0b3IsIGZvcgorICBpbnRlZ2Vycy4KKworLSBJc3N1ZSAjNTY2NjogUHlfQnVpbGRWYWx1ZSdzICdjJyBjb2RlIHNob3VsZCBjcmVhdGUgYnl0ZSBzdHJpbmdzLgorCistIElzc3VlICM1NDk5OiBUaGUgJ2MnIGNvZGUgZm9yIGFyZ3VtZW50IHBhcnNpbmcgZnVuY3Rpb25zIG5vdyBvbmx5IGFjY2VwdHMgYQorICBieXRlLCBhbmQgdGhlICdDJyBjb2RlIG9ubHkgYWNjZXB0cyBhIHVuaWNvZGUgY2hhcmFjdGVyLgorCistIEZpeCBhIHByb2JsZW0gaW4gUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uIHRoYXQgbGVhZHMgdG8gInVuZGV0ZWN0ZWQgZXJyb3JzIgorICB3aGVuIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCisKKy0gSXNzdWUgIzE2NjUyMDY6IFJlbW92ZSB0aGUgbGFzdCBlYWdlciBpbXBvcnQgaW4gX3dhcm5pbmdzLmMgYW5kIG1ha2UgaXQgbGF6eS4KKworLSBGaXggYSBzZWdmYXVsdCB3aGVuIHJ1bm5pbmcgdGVzdF9leGNlcHRpb25zIHdpdGggY292ZXJhZ2UsIGNhdXNlZCBieQorICBpbnN1ZmZpY2llbnQgY2hlY2tzIGluIGFjY2Vzc29ycyBvZiBFeGNlcHRpb24uX19jb250ZXh0X18uCisKKy0gSXNzdWUgIzU2MDQ6IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIG1vZHVsZSBuYW1lIHBhc3NlZCB0bworICBpbXAuZmluZF9tb2R1bGUoKSB3ZXJlIGNvbnZlcnRlZCB0byBVVEYtOCB3aGlsZSB0aGUgcGF0aCBpcworICBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZywgY2F1c2luZyBub25zZW5zZS4KKworLSBJc3N1ZSAjNTEyNjogc3RyLmlzcHJpbnRhYmxlKCkgcmV0dXJuZWQgRmFsc2UgZm9yIHNwYWNlIGNoYXJhY3RlcnMuCisKKy0gSXNzdWUgIzQ4NjU6IE9uIE1hY09TWCAvTGlicmFyeS9QeXRob24vMi43L3NpdGUtcGFja2FnZXMgaXMgYWRkZWQgdG8KKyAgdGhlIGVuZCBzeXMucGF0aCwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3lzdGVtIGluc3RhbGwgb2YgUHl0aG9uLgorCistIElzc3VlICM0Njg4OiBBZGQgYSBoZXVyaXN0aWMgc28gdGhhdCB0dXBsZXMgYW5kIGRpY3RzIGNvbnRhaW5pbmcgb25seQorICB1bnRyYWNrYWJsZSBvYmplY3RzIGFyZSBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFRoaXMgY2FuCisgIHJlZHVjZSB0aGUgc2l6ZSBvZiBjb2xsZWN0aW9ucyBhbmQgdGhlcmVmb3JlIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3ZlcmhlYWQKKyAgb24gbG9uZy1ydW5uaW5nIHByb2dyYW1zLCBkZXBlbmRpbmcgb24gdGhlaXIgcGFydGljdWxhciB1c2Ugb2YgZGF0YXR5cGVzLgorCistIElzc3VlICM1NTEyOiBSZXdyaXRlIFB5TG9uZyBsb25nIGRpdmlzaW9uIGFsZ29yaXRobSAoeF9kaXZyZW0pIHRvCisgIGltcHJvdmUgaXRzIHBlcmZvcm1hbmNlLiAgTG9uZyBkaXZpc2lvbnMgYW5kIHJlbWFpbmRlciBvcGVyYXRpb25zCisgIGFyZSBub3cgYmV0d2VlbiA1MCUgYW5kIDE1MCUgZmFzdGVyLgorCistIElzc3VlICM0MjU4OiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBiYXNlIDIqKjMwIGluc3RlYWQgb2YgYmFzZQorICAyKioxNSBmb3IgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLCBmb3IgcGVyZm9ybWFuY2UKKyAgcmVhc29ucy4gIEJhc2UgMioqMzAgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIDY0LWJpdCBtYWNoaW5lcy4gIEFkZAorICAtLWVuYWJsZS1iaWctZGlnaXRzIG9wdGlvbiB0byBjb25maWd1cmUsIHdoaWNoIG92ZXJyaWRlcyB0aGUKKyAgZGVmYXVsdC4gIEFkZCBzeXMuaW50X2luZm8gc3RydWN0c2VxIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQKKyAgdGhlIGludGVybmFsIGZvcm1hdC4KKworLSBJc3N1ZSAjNDQ3NDogUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBub3cgY29udmVydHMgY2hhcmFjdGVycyBvdXRzaWRlCisgIHRoZSBCTVAgdG8gc3Vycm9nYXRlIHBhaXJzLCBvbiBzeXN0ZW1zIHdpdGggc2l6ZW9mKHdjaGFyX3QpID09IDQKKyAgYW5kIHNpemVvZihQeV9VTklDT0RFKSA9PSAyLgorCistIElzc3VlICM1MjM3OiBBbGxvdyBhdXRvLW51bWJlcmVkIGZpZWxkcyBpbiBzdHIuZm9ybWF0KCkuIEZvcgorICBleGFtcGxlOiAne30ge30nLmZvcm1hdCgxLCAyKSA9PSAnMSAyJy4KKworLSBJc3N1ZSAjNTM5Mjogd2hlbiBhIHZlcnkgbG93IHJlY3Vyc2lvbiBsaW1pdCB3YXMgc2V0LCB0aGUgaW50ZXJwcmV0ZXIgd291bGQKKyAgYWJvcnQgd2l0aCBhIGZhdGFsIGVycm9yIGFmdGVyIHRoZSByZWN1cnNpb24gbGltaXQgd2FzIGhpdCB0d2ljZS4KKworLSBJc3N1ZSAjMzg0NTogSW4gUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MgYXZvaWQgaW52YWxpZCBtZW1vcnkgYWNjZXNzIHdpdGgKKyAgc2hvcnQgZmlsZSBuYW1lcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNjI1OiBhZGRlZCBtaXNzaW5nIGl0ZW1zKCkgY2FsbCB0byB0aGUgZm9yIGxvb3AgaW4KKyAgbWFpbGJveC5NSC5nZXRfbWVzc2FnZSgpLgorCistIElzc3VlICM1NjQwOiBGaXggX211bHRpYnl0ZWNvZGVjIHNvIHRoYXQgQ0pLIGNvZGVjcyBkb24ndCByZXBlYXQKKyAgZXJyb3Igc3Vic3RpdHV0aW9ucyBmcm9tIG5vbi1zdHJpY3QgY29kZWMgZXJyb3IgY2FsbGJhY2tzIGluCisgIGluY3JlbWVudGFsZW5jb2RlciBhbmQgU3RyZWFtV3JpdGVyLgorCistIElzc3VlICM1NjU2OiBGaXggdGhlIGNvdmVyYWdlIHJlcG9ydGluZyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUgd2l0aAorICB0aGUgLVQgYXJndW1lbnQuCisKKy0gSXNzdWUgIzU2NDc6IE11dGFibGVTZXQuX19pYW5kX18oKSBubyBsb25nZXIgbXV0YXRlcyBzZWxmIGR1cmluZyBpdGVyYXRpb24uCisKKy0gSXNzdWUgIzU2MjQ6IEZpeCB0aGUgX3dpbnJlZyBtb2R1bGUgbmFtZSBzdGlsbCB1c2VkIGluIHNldmVyYWwgbW9kdWxlcy4KKworLSBJc3N1ZSAjNTYyODogRml4IGlvLlRleHRJT1dyYXBwZXIucmVhZCgpIHdpdGggYSB1bnJlYWRhYmxlIGJ1ZmZlci4KKworLSBJc3N1ZSAjNTYxOTogTXVsdGlwcm9jZXNzaW5nIGNoaWxkcmVuIGRpc29iZXkgdGhlIGRlYnVnIGZsYWcgYW5kIGNhdXNlcworICBwb3B1cHMgb24gd2luZG93cyBidWlsZGJvdHMuIFBhdGNoIGFwcGxpZWQgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZS4KKworLSBJc3N1ZSAjNTQwMDogQWRkZWQgcGF0Y2ggZm9yIG11bHRpcHJvY2Vzc2luZyBvbiBuZXRic2QgY29tcGlsYXRpb24vc3VwcG9ydAorCistIElzc3VlICM1Mzg3OiBGaXhlZCBtbWFwLm1vdmUgY3Jhc2ggYnkgaW50ZWdlciBvdmVyZmxvdy4KKworLSBJc3N1ZSAjNTI2MTogUGF0Y2ggbXVsdGlwcm9jZXNzaW5nJ3Mgc2VtYXBob3JlLmMgdG8gc3VwcG9ydCBjb250ZXh0CisgIG1hbmFnZXIgdXNlOiAid2l0aCBtdWx0aXByb2Nlc3NpbmcuTG9jaygpIiB3b3JrcyBub3cuCisKKy0gSXNzdWUgIzUyMzY6IENoYW5nZSB0aW1lLnN0cnB0aW1lKCkgdG8gb25seSB0YWtlIHN0cmluZ3MuIERpZG4ndCB3b3JrIHdpdGgKKyAgYnl0ZXMgYWxyZWFkeSBidXQgdGhlIGZhaWx1cmUgd2FzIG5vbi1vYnZpb3VzLgorCistIElzc3VlICM1MTc3OiBNdWx0aXByb2Nlc3NpbmcncyBTb2NrZXRMaXN0ZW5lciBjbGFzcyBub3cgdXNlcworICBzb2NrZXQuU09fUkVVU0VBRERSIG9uIGFsbCBjb25uZWN0aW9ucyBzbyB0aGF0IHRoZSB1c2VyIG5vIGxvbmdlciBuZWVkcworICB0byB3YWl0IDEyMCBzZWNvbmRzIGZvciB0aGUgc29ja2V0IHRvIGV4cGlyZS4KKworLSBJc3N1ZSAjNTU5NTogRml4IFVuYm91bmRlZExvY2FsRXJyb3IgaW4gbnRwYXRoLmlzbW91bnQoKS4KKworLSBJc3N1ZSAjMTE3NDYwNjogQ2FsbGluZyByZWFkKCkgd2l0aG91dCBhcmd1bWVudHMgb2YgYW4gdW5ib3VuZGVkIGZpbGUKKyAgKHR5cGljYWxseSAvZGV2L3plcm8gdW5kZXIgVW5peCkgY291bGQgY3Jhc2ggdGhlIGludGVycHJldGVyLgorCistIFRoZSBtYXhfYnVmZmVyX3NpemUgYXJndW1lbnRzIG9mIGlvLkJ1ZmZlcmVkV3JpdGVyLCBpby5CdWZmZXJlZFJXUGFpciwgYW5kCisgIGlvLkJ1ZmZlcmVkUmFuZG9tIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjIuCisKKy0gSXNzdWUgIzUwNjg6IEZpeGVkIHRoZSB0YXJmaWxlLl9CWjJQcm94eS5yZWFkKCkgbWV0aG9kIHRoYXQgd291bGQgbG9vcAorICBmb3JldmVyIG9uIGluY29tcGxldGUgaW5wdXQuIFRoYXQgY2F1c2VkIHRhcmZpbGUub3BlbigpIHRvIGhhbmcgd2hlbiB1c2VkCisgIHdpdGggbW9kZSAncicgb3IgJ3I6YnoyJyBhbmQgYSBmaWxlb2JqIGFyZ3VtZW50IHRoYXQgY29udGFpbmVkIG5vIGRhdGEgb3IKKyAgcGFydGlhbCBiemlwMiBjb21wcmVzc2VkIGRhdGEuCisKKy0gSXNzdWUgIzIxMTA6IEFkZCBzdXBwb3J0IGZvciB0aG91c2FuZHMgc2VwYXJhdG9yIGFuZCAnbicgdHlwZQorICBzcGVjaWZpZXIgdG8gRGVjaW1hbC5fX2Zvcm1hdF9fCisKKy0gRml4IERlY2ltYWwuX19mb3JtYXRfXyBidWcgdGhhdCBzd2FwcGVkIHRoZSBtZWFuaW5ncyBvZiB0aGUgJzwnIGFuZAorICAnPicgYWxpZ25tZW50IGNoYXJhY3RlcnMuCisKKy0gVGhlIGVycm9yIGRldGVjdGlvbiBjb2RlIGluIEZpbGVJTy5jbG9zZSgpIGNvdWxkIGZhaWwgdG8gcmVmbGVjdCB0aGUgYGVycm5vYAorICB2YWx1ZSwgYW5kIHJlcG9ydCBpdCBhcyAtMSBpbnN0ZWFkLgorCistIElzc3VlICM1MDE2OiBGaWxlSU8uc2Vla2FibGUoKSBjb3VsZCByZXR1cm4gRmFsc2UgaWYgdGhlIGZpbGUgcG9zaXRpb24KKyAgd2FzIG5lZ2F0aXZlIHdoZW4gdHJ1bmNhdGVkIHRvIGEgQyBpbnQuIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNTM5MTogbW1hcCBub3cgZGVhbHMgZXhjbHVzaXZlbHkgd2l0aCBieXRlcy4KKworLSBJc3N1ZSAjNTQ2MzogSW4gc3RydWN0IG1vZHVsZSwgcmVtb3ZlIGRlcHJlY2F0ZWQgb3ZlcmZsb3cgd3JhcHBpbmcKKyAgd2hlbiBwYWNraW5nIGFuIGludGVnZXI6IHN0cnVjdC5wYWNrKCc9TCcsIC0xKSBub3cgcmFpc2VzCisgIHN0cnVjdC5lcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBiJ1x4ZmZceGZmXHhmZlx4ZmYnLiAgVGhlCisgIF9QWV9TVFJVQ1RfUkFOR0VfQ0hFQ0tJTkcgYW5kIF9QWV9TVFJVQ1RfT1ZFUkZMT1dfTUFTS0lORyBjb25zdGFudHMKKyAgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3RydWN0IG1vZHVsZS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgYWxwaGEgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAwOS0wMy0wNyoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gVGhlIGlvIG1vZHVsZSBoYXMgYmVlbiByZWltcGxlbWVudGVkIGluIEMgZm9yIHNwZWVkLgorCistIEdpdmUgZGljdCB2aWV3cyBhbiBpbmZvcm1hdGl2ZSBfX3JlcHJfXy4KKworLSBJc3N1ZSAjNTI0NzogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gdW5rbm93biBmb3JtYXQgY29kZXMgYXJlCisgIHVzZWQgd2hlbiB1c2luZyBzdHIuZm9ybWF0KCkgd2l0aCBzdHIsIGludCwgYW5kIGZsb2F0IGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjNTI0OTogdGltZS5zdHJmdGltZSByZXR1cm5lZCBtYWxmb3JtZWQgc3RyaW5nIHdoZW4gZm9ybWF0IHN0cmluZworICBjb250YWluZWQgbm9uIGFzY2lpIGNoYXJhY3RlciBvbiB3aW5kb3dzLgorCistIElzc3VlICM0NjI2OiBjb21waWxlKCksIGV4ZWMoKSwgYW5kIGV2YWwoKSBpZ25vcmUgdGhlIGNvZGluZyBjb29raWUgaWYgdGhlCisgIHNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGRlY29kZWQgaW50byBzdHIuCisKKy0gSXNzdWUgIzUxODY6IFJlZHVjZSBoYXNoIGNvbGxpc2lvbnMgZm9yIG9iamVjdHMgd2l0aCBubyBfX2hhc2hfXyBtZXRob2QgYnkKKyAgcm90YXRpbmcgdGhlIG9iamVjdCBwb2ludGVyIGJ5IDQgYml0cyB0byB0aGUgcmlnaHQuCisKKy0gSXNzdWUgIzQ1NzU6IEZpeCBQeV9JU19JTkZJTklUWSBtYWNybyB0byB3b3JrIGNvcnJlY3RseSBvbiB4ODcgRlBVczoKKyAgaXQgbm93IGZvcmNlcyBpdHMgYXJndW1lbnQgdG8gZG91YmxlIGJlZm9yZSB0ZXN0aW5nIGZvciBpbmZpbml0eS4KKworLSBJc3N1ZSAjNTEzNzogTWFrZSBsZW4oKSBjb3JyZWN0bHkgcmFpc2UgYSBUeXBlRXJyb3Igd2hlbiBhIF9fbGVuX18gbWV0aG9kCisgIHJldHVybnMgYSBub24tbnVtYmVyIHR5cGUuCisKKy0gSXNzdWUgIzUxODI6IFJlbW92ZWQgbWVtb3J5dmlldy5fX3N0cl9fLgorCistIElzc3VlICMxNzE3OiBSZW1vdmVkIGJ1aWx0aW4gY21wKCkgZnVuY3Rpb24sIGRyb3BwZWQgdHBfY29tcGFyZQorICBzbG90LCB0aGUgQyBBUEkgZnVuY3Rpb25zIFB5T2JqZWN0X0NvbXBhcmUgYW5kIFB5VW5pY29kZV9Db21wYXJlIGFuZAorICB0aGUgdHlwZSBkZWZpbml0aW9uIGNtcGZ1bmMuICBUaGUgdHBfY29tcGFyZSBzbG90IGhhcyBiZWVuIHJlbmFtZWQKKyAgdG8gdHBfcmVzZXJ2ZWQsIGFuZCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzYWdlLgorCistIElzc3VlICMxMjQyNjU3OiB0aGUgX19sZW5fXygpIGFuZCBfX2xlbmd0aF9oaW50X18oKSBjYWxscyBpbiBzZXZlcmFsIHRvb2xzCisgIHdlcmUgc3VwcHJlc3NpbmcgYWxsIGV4Y2VwdGlvbnMuICBUaGVzZSBpbmNsdWRlIGxpc3QoKSBhbmQgYnl0ZWFycmF5KCkuCisKKy0gSXNzdWUgIzQ3MDc6IHJvdW5kKHgsIG4pIG5vdyByZXR1cm5zIGFuIGludGVnZXIgaWYgeCBpcyBhbiBpbnRlZ2VyLgorICBQcmV2aW91c2x5IGl0IHJldHVybmVkIGEgZmxvYXQuCisKKy0gSXNzdWUgIzQ3NTM6IEJ5IGVuYWJsaW5nIGEgY29uZmlndXJlIG9wdGlvbiBuYW1lZCAnLS13aXRoLWNvbXB1dGVkLWdvdG9zJworICBvbiBjb21waWxlcnMgdGhhdCBzdXBwb3J0IGl0IChub3RhYmx5OiBnY2MsIFN1blBybywgaWNjKSwgdGhlIGJ5dGVjb2RlCisgIGV2YWx1YXRpb24gbG9vcCBpcyBjb21waWxlZCB3aXRoIGEgbmV3IGRpc3BhdGNoIG1lY2hhbmlzbSB3aGljaCBnaXZlcworICBzcGVlZHVwcyBvZiB1cCB0byAyMCUsIGRlcGVuZGluZyBvbiB0aGUgc3lzdGVtLCBvbiB2YXJpb3VzIGJlbmNobWFya3MuCisKKy0gSXNzdWUgIzQ4NzQ6IE1vc3QgYnVpbHRpbiBkZWNvZGVycyBub3cgcmVqZWN0IHVuaWNvZGUgaW5wdXQuCisKKy0gSXNzdWUgIzQ4NDI6IERvbid0IGFsbG93IHRyYWlsaW5nICdMJyB3aGVuIGNvbnN0cnVjdGluZyBhbiBpbnRlZ2VyCisgIGZyb20gYSBzdHJpbmcuCisKKy0gSXNzdWUgIzQ5OTE6IG9zLmZkb3BlbiBub3cgcmFpc2VzIGFuIE9TRXJyb3IgZm9yIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KKworLSBJc3N1ZSAjNDgzODogV2hlbiBhIG1vZHVsZSBpcyBkZWFsbG9jYXRlZCwgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlCisgIG9wdGlvbmFsIG1vZHVsZSBzdGF0ZSBkYXRhLgorCistIElzc3VlICM0OTEwOiBSZW5hbWUgbmJfbG9uZyBzbG90IHRvIG5iX3Jlc2VydmVkLCBhbmQgY2hhbmdlIGl0cworICB0eXBlIHRvIGBgKHZvaWQgKilgYC4KKworLSBJc3N1ZSAjNDkzNTogVGhlIG92ZXJmbG93IGNoZWNraW5nIGNvZGUgaW4gdGhlIGV4cGFuZHRhYnMoKSBtZXRob2QgY29tbW9uCisgIHRvIHN0ciwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjb3VsZCBiZSBvcHRpbWl6ZWQgYXdheSBieSB0aGUgY29tcGlsZXIsIGxldHRpbmcKKyAgdGhlIGludGVycHJldGVyIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KKworLSBJc3N1ZSAjMzcyMDogRml4IGEgY3Jhc2ggd2hlbiBhbiBpdGVyYXRvciBtb2RpZmllcyBpdHMgY2xhc3MgYW5kIHJlbW92ZXMgaXRzCisgIF9fbmV4dF9fIG1ldGhvZC4KKworLSBJc3N1ZSAjNDkxMDogQnVpbHRpbiBpbnQoKSBmdW5jdGlvbiBhbmQgUHlOdW1iZXJfTG9uZy9QeU51bWJlcl9JbnQgQVBJCisgIGZ1bmN0aW9uIG5vIGxvbmdlciBhdHRlbXB0IHRvIGNhbGwgdGhlIF9fbG9uZ19fIHNsb3QgdG8gY29udmVydCBhbiBvYmplY3QKKyAgdG8gYW4gaW50ZWdlci4gIE9ubHkgdGhlIF9faW50X18gYW5kIF9fdHJ1bmNfXyBzbG90cyBhcmUgZXhhbWluZWQuCisKKy0gSXNzdWUgIzQ4OTM6IFVzZSBOVCB0aHJlYWRpbmcgb24gQ0UuCisKKy0gSXNzdWUgIzQ5MTU6IFBvcnQgc3lzbW9kdWxlIHRvIFdpbmRvd3MgQ0UuCisKKy0gSXNzdWUgIzQ4Njg6IHV0Zi04LCB1dGYtMTYgYW5kIGxhdGluMSBkZWNvZGluZyBhcmUgbm93IDJ4IHRvIDR4IGZhc3Rlci4gVGhlCisgIGNvbW1vbiBjYXNlcyBhcmUgb3B0aW1pemVkIHRoYW5rcyB0byBhIGRlZGljYXRlZCBmYXN0IHBhdGggYW5kIGEgbW9kZXJhdGUKKyAgYW1vdW50IG9mIGxvb3AgdW5yb2xsaW5nLgorCistIElzc3VlICM0MDc0OiBDaGFuZ2UgdGhlIGNyaXRlcmlhIGZvciBkb2luZyBhIGZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIChpLmUuCisgIGNvbGxlY3RpbmcgdGhlIG9sZGVzdCBnZW5lcmF0aW9uKSBzbyB0aGF0IGFsbG9jYXRpbmcgbG90cyBvZiBvYmplY3RzIHdpdGhvdXQKKyAgZGVzdHJveWluZyB0aGVtIGRvZXMgbm90IHNob3cgcXVhZHJhdGljIHBlcmZvcm1hbmNlLiBCYXNlZCBvbiBhIHByb3Bvc2FsIGJ5CisgIE1hcnRpbiB2b24gTMO2d2lzIGF0CisgIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwOC1KdW5lLzA4MDU3OS5odG1sLgorCistIElzc3VlICM0NjA0OiBTb21lIG9iamVjdHMgb2YgdGhlIEkvTyBsaWJyYXJ5IGNvdWxkIHN0aWxsIGJlIHVzZWQgYWZ0ZXIKKyAgaGF2aW5nIGJlZW4gY2xvc2VkIChmb3IgaW5zdGFuY2UsIGEgcmVhZCgpIGNhbGwgY291bGQgcmV0dXJuIHNvbWUKKyAgcHJldmlvdXNseSBidWZmZXJlZCBkYXRhKS4gUGF0Y2ggYnkgRG1pdHJ5IFZhc2lsaWV2LgorCistIElzc3VlICM0NzA1OiBGaXggdGhlIC11ICgidW5idWZmZXJlZCBiaW5hcnkgc3Rkb3V0IGFuZCBzdGRlcnIiKSBjb21tYW5kLWxpbmUKKyAgZmxhZyB0byB3b3JrIHByb3Blcmx5LiBGdXJ0aGVybW9yZSwgd2hlbiBzcGVjaWZ5aW5nIC11LCB0aGUgdGV4dCBzdGRvdXQKKyAgYW5kIHN0ZGVyciBzdHJlYW1zIGhhdmUgbGluZS1ieS1saW5lIGJ1ZmZlcmluZyBlbmFibGVkICh0aGUgZGVmYXVsdCBiZWluZworICB0byBidWZmZXIgYXJiaXRyYXJ5IGNodW5rcyBvZiBkYXRhKS4KKworLSBUaGUgaW50ZXJuYWwgdGFibGUsIF9QeUxvbmdfRGlnaXRWYWx1ZSwgaXMgbm93IGFuIGFycmF5IG9mIHVuc2lnbmVkIGNoYXJzCisgIGluc3RlYWQgb2YgaW50cyAocmVkdWNpbmcgaXRzIHNpemUgZnJvbSA0IHRvIDggdGltZXMgdGhlcmVieSByZWR1Y2luZworICBQeXRob24ncyBvdmVyYWxsIG1lbW9yeSkuCisKKy0gSXNzdWUgIzExODAxOTM6IFdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSAucHljIChvciAucHlvKSBmaWxlIHdpdGgKKyAgYW4gZXhpc3RpbmcgLnB5IGNvdW50ZXJwYXJ0LCBvdmVycmlkZSB0aGUgY29fZmlsZW5hbWUgYXR0cmlidXRlcyBvZiBhbGwKKyAgY29kZSBvYmplY3RzIGlmIHRoZSBvcmlnaW5hbCBmaWxlbmFtZSBpcyBvYnNvbGV0ZSAod2hpY2ggY2FuIGhhcHBlbiBpZiB0aGUKKyAgZmlsZSBoYXMgYmVlbiByZW5hbWVkLCBtb3ZlZCwgb3IgaWYgaXQgaXMgYWNjZXNzZWQgdGhyb3VnaCBkaWZmZXJlbnQgcGF0aHMpLgorICBQYXRjaCBieSBaaWdhIFNlaWxuYWNodCBhbmQgSmVhbi1QYXVsIENhbGRlcm9uZS4KKworLSBJc3N1ZSAjNDU4MDogRml4IHNsaWNpbmcgb2YgbWVtb3J5dmlld3Mgd2hlbiB0aGUgaXRlbSBzaXplIGlzIGdyZWF0ZXIgdGhhbgorICBvbmUgYnl0ZS4gQWxzbyBmaXhlcyB0aGUgbWVhbmluZyBvZiBsZW4oKSBzbyB0aGF0IGl0IHJldHVybnMgdGhlIG51bWJlciBvZgorICBpdGVtcywgcmF0aGVyIHRoYW4gdGhlIHNpemUgaW4gYnl0ZXMuCisKKy0gSXNzdWUgIzQwNzU6IFVzZSBPdXRwdXREZWJ1Z1N0cmluZ1cgaW4gUHlfRmF0YWxFcnJvci4KKworLSBJc3N1ZSAjNDc0NzogV2hlbiB0aGUgdGVybWluYWwgZG9lcyBub3QgdXNlIHV0Zi04LCBleGVjdXRpbmcgYSBzY3JpcHQgd2l0aAorICBub24tYXNjaWkgY2hhcmFjdGVycyBpbiBpdHMgbmFtZSBjb3VsZCBmYWlsIHdpdGggYSAiU3ludGF4RXJyb3I6IE5vbmUiIGVycm9yLgorCistIElzc3VlICM0Nzk3OiBJT0Vycm9yLmZpbGVuYW1lIHdhcyBub3Qgc2V0IHdoZW4gYGBfZmlsZWlvLkZpbGVJT2BgIGZhaWxlZAorICB0byBvcGVuIGZpbGUgd2l0aCBhIGJ5dGVzIGZpbGVuYW1lIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzM2ODA6IFJlZmVyZW5jZSBjeWNsZXMgY3JlYXRlZCB0aHJvdWdoIGEgZGljdCwgc2V0IG9yIGRlcXVlIGl0ZXJhdG9yCisgIGRpZCBub3QgZ2V0IGNvbGxlY3RlZC4KKworLSBJc3N1ZSAjNDcwMTogUHlPYmplY3RfSGFzaCBub3cgaW1wbGljaXRseSBjYWxscyBQeVR5cGVfUmVhZHkgb24gdHlwZXMKKyAgd2hlcmUgdGhlIHRwX2hhc2ggYW5kIHRwX2RpY3Qgc2xvdHMgYXJlIGJvdGggTlVMTC4KKworLSBJc3N1ZSAjNDc1OTogTm9uZSBpcyBub3cgYWxsb3dlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgb2YKKyAgYnl0ZWFycmF5LnRyYW5zbGF0ZSgpLiAgSXQgd2FzIGFsd2F5cyBhbGxvd2VkIGZvciBieXRlcy50cmFuc2xhdGUoKS4KKworLSBBZGRlZCB0ZXN0IGNhc2UgdG8gZW5zdXJlIGF0dGVtcHRzIHRvIHJlYWQgZnJvbSBhIGZpbGUgb3BlbmVkIGZvciB3cml0aW5nCisgIGZhaWwuCisKKy0gSXNzdWUgIzMxMDY6IFNwZWVkdXAgc29tZSBjb21wYXJpc29ucyAoc3RyL3N0ciBhbmQgaW50L2ludCkuCisKKy0gSXNzdWUgIzIxODM6IFNpbXBsaWZ5IGFuZCBvcHRpbWl6ZSBieXRlY29kZSBmb3IgbGlzdCwgZGljdCBhbmQgc2V0CisgIGNvbXByZWhlbnNpb25zLiBPcmlnaW5hbCBwYXRjaCBmb3IgbGlzdCBjb21wcmVoZW5zaW9ucyBieSBOZWFsIE5vcndpdHouCisKKy0gSXNzdWUgIzI0Njc6IGdjLkRFQlVHX1NUQVRTIHJlcG9ydGVkIGludmFsaWQgZWxhcHNlZCB0aW1lcy4gQWxzbywgYWx3YXlzCisgIHByaW50IGVsYXBzZWQgdGltZXMsIG5vdCBvbmx5IHdoZW4gc29tZSBvYmplY3RzIGFyZSB1bmNvbGxlY3RhYmxlIC8KKyAgdW5yZWFjaGFibGUuIE9yaWdpbmFsIHBhdGNoIGJ5IE5laWwgU2NoZW1lbmF1ZXIuCisKKy0gSXNzdWUgIzM0Mzk6IEFkZCBhIGJpdF9sZW5ndGggbWV0aG9kIHRvIGludC4KKworLSBJc3N1ZSAjMjE3MzogV2hlbiBnZXR0aW5nIGRldmljZSBlbmNvZGluZywgY2hlY2sgdGhhdCByZXR1cm4gdmFsdWUgb2YKKyAgbmxfbGFuZ2luZm8gaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcuICBUaGlzIHdhcyBjYXVzaW5nIHNpbGVudCBidWlsZAorICBmYWlsdXJlcyBvbiBPUyBYLgorCistIElzc3VlICM0NTk3OiBGaXhlZCBzZXZlcmFsIG9wY29kZXMgdGhhdCB3ZXJlbid0IGFsd2F5cyBwcm9wYWdhdGluZworICBleGNlcHRpb25zLgorCistIElzc3VlICM0NTg5OiBGaXhlZCBleGNlcHRpb24gaGFuZGxpbmcgd2hlbiB0aGUgX19leGl0X18gZnVuY3Rpb24gb2YgYQorICBjb250ZXh0IG1hbmFnZXIgcmV0dXJucyBhIHZhbHVlIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIGJvb2wuCisKKy0gSXNzdWUgIzQ0NDU6IFJlcGxhY2UgInNpemVvZihQeUJ5dGVzT2JqZWN0KSIgd2l0aAorICAib2Zmc2V0b2YoUHlCeXRlc09iamVjdCwgb2Jfc3ZhbCkgKyAxIiB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvcgorICBieXRlcyBpbnN0YW5jZXMuICBPbiBhIHR5cGljYWwgbWFjaGluZSB0aGlzIHNhdmVzIDMgYnl0ZXMgb2YgbWVtb3J5CisgIChvbiBhdmVyYWdlKSBwZXIgYWxsb2NhdGlvbiBvZiBhIGJ5dGVzIGluc3RhbmNlLgorCistIElzc3VlICM0NTMzOiBGaWxlIHJlYWQgb3BlcmF0aW9uIHdhcyBkcmVhZGZ1bGx5IHNsb3cgZHVlIHRvIGEgc2xvd2x5CisgIGdyb3dpbmcgcmVhZCBidWZmZXIuIEZpeGVkIGJ5IHVzaW5nIHRoZSBzYW1lIGdyb3d0aCByYXRlIGFsZ29yaXRobSBhcworICBQeXRob24gMi54LgorCistIElzc3VlICM0NTA5OiBWYXJpb3VzIGlzc3VlcyBzdXJyb3VuZGluZyByZXNpemUgb2YgYnl0ZWFycmF5IG9iamVjdHMgdG8KKyAgd2hpY2ggdGhlcmUgYXJlIGJ1ZmZlciBleHBvcnRzIChlLmcuIG1lbW9yeXZpZXcgaW5zdGFuY2VzKS4KKworLSBJc3N1ZSAjNDIzMzogQ2hhbmdlZCBzZW1hbnRpYyBvZiBgYF9maWxlaW8uRmlsZUlPYGAncyBgYGNsb3NlKClgYAorICBtZXRob2Qgb24gZmlsZSBvYmplY3RzIHdpdGggY2xvc2VmZD1GYWxzZS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBzdGlsbAorICBrZXB0IG9wZW4gYnV0IHRoZSBmaWxlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBjbG9zZWQgZmlsZS4gVGhlIGBgRmlsZUlPYGAKKyAgb2JqZWN0IGFsc28gZ290IGEgbmV3IHJlYWRvbmx5IGF0dHJpYnV0ZSBgYGNsb3NlZmRgYC4KKworLSBJc3N1ZSAjNDU2OTogSW50ZXJwcmV0ZXIgY3Jhc2ggd2hlbiBtdXRhdGluZyBhIG1lbW9yeXZpZXcgd2l0aCBhbiBpdGVtIHNpemUKKyAgbGFyZ2VyIHRoYW4gMS4KKworLSBJc3N1ZSAjNDc0ODogTGFtYmRhIGdlbmVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhIHZhbHVlLgorCistIFRoZSByZS5zdWIoKSwgcmUuc3VibigpIGFuZCByZS5zcGxpdCgpIGZ1bmN0aW9ucyBub3cgYWNjZXB0IGEgZmxhZ3MgcGFyYW1ldGVyLgorCistIElzc3VlICM1MTA4OiBIYW5kbGUgJXMgbGlrZSAlUywgJVIgYW5kICVBIGluIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpOiBDYWxsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgb25jZSwgcmVtZW1iZXIgdGhlIHJlc3VsdCBhbmQgb3V0cHV0IGl0IGluIGEgc2Vjb25kCisgIHN0ZXAuIFRoaXMgYXZvaWRzIHByb2JsZW1zIHdpdGggY291bnRpbmcgVVRGLTggYnl0ZXMgdGhhdCBpZ25vcmVzIHRoZSBlZmZlY3QKKyAgb2YgdXNpbmcgdGhlIHJlcGxhY2UgZXJyb3IgaGFuZGxlciBpbiBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzcwNzE6IGJ5dGUtY29tcGlsYXRpb24gaW4gRGlzdHV0aWxzIGlzIG5vdyBkb25lIHdpdGggcmVzcGVjdCB0bworICBzeXMuZG9udF93cml0ZV9ieXRlY29kZS4KKworLSBJc3N1ZSAjNzA2NjogYXJjaGl2ZV91dGlsLm1ha2VfYXJjaGl2ZSBub3cgcmVzdG9yZXMgdGhlIGN3ZCBpZiBhbiBlcnJvciBpcworICByYWlzZWQuIEluaXRpYWwgcGF0Y2ggYnkgRXppbyBNZWxvdHRpLgorCistIElzc3VlICM2NTE2OiBBZGRlZCBvd25lci9ncm91cCBzdXBwb3J0IHdoZW4gY3JlYXRpbmcgdGFyIGFyY2hpdmVzIGluCisgIERpc3R1dGlscy4KKworLSBJc3N1ZSAjNjk1NDogRml4ZWQgY3Jhc2ggd2hlbiB1c2luZyBESVNUVVRJTFNfREVCVUcgZmxhZyBpbiBEaXN0dXRpbHMuCisKKy0gSXNzdWUgIzYxNjM6IEZpeGVkIEhQLVVYIHJ1bnRpbWUgbGlicmFyeSBkaXIgb3B0aW9ucyBpbgorICBkaXN0dXRpbHMudW5peGNvbXBpbGVyLiBJbml0aWFsIHBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hciBhbmQKKyAgTWljaGFlbCBIYXViZW53YWxsbmVyLgorCistIElzc3VlICM2NjkzOiBOZXcgZnVuY3Rpb25zIGluIHNpdGUucHkgdG8gZ2V0IHVzZXIvZ2xvYmFsIHNpdGUgcGFja2FnZXMgcGF0aHMuCisKKy0gSXNzdWUgIzY1MTE6IFppcEZpbGUgbm93IHJhaXNlcyBCYWRaaXBmaWxlIChpbnN0ZWFkIG9mIGFuIElPRXJyb3IpIHdoZW4KKyAgb3BlbmluZyBhbiBlbXB0eSBvciB2ZXJ5IHNtYWxsIGZpbGUuCisKKy0gSXNzdWUgIzY1NDU6IFJlbW92ZWQgYXNzZXJ0IHN0YXRlbWVudHMgaW4gZGlzdHV0aWxzLkV4dGVuc2lvbiwgc28gdGhlCisgIGJlaGF2aW9yIGlzIHNpbWlsYXIgd2hlbiB1c2VkIHdpdGggLU8uCisKKy0gdW5pdHRlc3QgaGFzIGJlZW4gc3BsaXQgdXAgaW50byBhIHBhY2thZ2UuICBBbGwgb2xkIG5hbWVzIHNob3VsZCBzdGlsbCB3b3JrLgorCistIElzc3VlICM2NDY2OiBub3cgZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlciBhbmQgZGlzdHV0aWxzLmVteGNjb21waWxlcgorICB1c2VzIHRoZSBzYW1lIHJlZmFjdG9yZWQgZnVuY3Rpb24gdG8gZ2V0IGdjYy9sZC9kbGx3cmFwIHZlcnNpb25zIG51bWJlcnMuCisgIEl0J3MgYGRpc3R1dGlscy51dGlsLmdldF9jb21waWxlcl92ZXJzaW9uc2AuIEFkZGVkIGRlcHJlY2F0aW9uIHdhcm5pbmdzCisgIGZvciB0aGUgb2Jzb2xldGUgZ2V0X3ZlcnNpb25zKCkgZnVuY3Rpb25zLgorCistIElzc3VlICM2NDMzOiBmaXhlZCBpc3N1ZXMgd2l0aCBtdWx0aXByb2Nlc3NpbmcucG9vbC5tYXAgaGFuZ2luZyBvbiBlbXB0eSBsaXN0CisKKy0gSXNzdWUgIzYzMTQ6IGxvZ2dpbmc6IEV4dHJhIGNoZWNrcyBvbiB0aGUgImxldmVsIiBhcmd1bWVudCBpbiBtb3JlIHBsYWNlcy4KKworLSBJc3N1ZSAjMjYyMjogRml4ZWQgYW4gSW1wb3J0RXJyb3Igd2hlbiBpbXBvcnRpbmcgZW1haWwubWVzc2FnZSBmcm9tIGEKKyAgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBidWlsdCB3aXRoIHB5MmV4ZSBvciBweTJhcHAuCisKKy0gSXNzdWUgIzY0NTU6IEZpeGVkIHRlc3RfYnVpbGRfZXh0IHVuZGVyIHdpbjMyLgorCistIElzc3VlICM2Mzc3OiBFbmFibGVkIHRoZSBjb21waWxlciBvcHRpb24sIGFuZCBkZXByZWNhdGUgaXRzIHVzYWdlIGFzIGFuCisgIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjNjQxMzogRml4ZWQgdGhlIGxvZyBsZXZlbCBpbiBkaXN0dXRpbHMuZGlzdCBmb3IgYW5ub3VuY2UuCisKKy0gSXNzdWUgIzY0MDM6IEZpeGVkIHBhY2thZ2UgcGF0aCB1c2FnZSBpbiBidWlsZF9leHQuCisKKy0gSXNzdWVzICM1MTU1LCA1MzEzLCA1MzMxOiBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fYm9vdHN0cmFwIHdhcworICB1bmNvbmRpdGlvbmFsbHkgY2FsbGluZyAib3MuY2xvc2Uoc3lzLnN0ZGluLmZpbGVubygpKSIgcmVzdWx0aW5nIGluIGZpbGUKKyAgZGVzY3JpcHRvciBlcnJvcnMKKworLSBJc3N1ZSAjNjM2NTogRGlzdHV0aWxzIGJ1aWxkX2V4dCBpbnBsYWNlIG1vZGUgd2FzIGNvcHlpbmcgdGhlIGNvbXBpbGVkCisgIGV4dGVuc2lvbiBpbiBhIHN1YmRpcmVjdG9yeSBpZiB0aGUgZXh0ZW5zaW9uIG5hbWUgaGFkIGRvdHMuCisKKy0gSXNzdWUgIzYxNjQ6IEFkZGVkIGFuIEFJWCBzcGVjaWZpYyBsaW5rZXIgYXJndW1lbnQgaW4gRGlzdHV0aWxzCisgIHVuaXhjb21waWxlci4gT3JpZ2luYWwgcGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyLgorCistIElzc3VlICM2Mjg2OiBOb3cgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIGlzIGJhc2VkIG9uIHVybGxpYjIgaW5zdGVhZCBvZgorICBodHRwbGliLCBhbGxvd2luZyB0aGUgdXNhZ2Ugb2YgaHR0cF9wcm94eS4KKworLSBJc3N1ZSAjNjI4NzogQWRkZWQgdGhlIGxpY2Vuc2UgZmllbGQgaW4gRGlzdHV0aWxzIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzYyNjM6IEZpeGVkIHN5bnRheCBlcnJvciBpbiBkaXN0dXRpbHMuY3lnd2luY29tcGlsZXIuCisKKy0gSXNzdWUgIzUyMDE6IGRpc3R1dGlscy5zeXNjb25maWcucGFyc2VfbWFrZWZpbGUoKSBub3cgdW5kZXJzdGFuZHMgYCQkYAorICBpbiBNYWtlZmlsZXMuIFRoaXMgcHJldmVudHMgY29tcGlsZSBlcnJvcnMgd2hlbiB1c2luZyBzeW50YXggbGlrZToKKyAgYExERkxBR1M9Jy1ycGF0aD1cJCRMSUI6L3NvbWUvb3RoZXIvcGF0aCdgLiBQYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KKworLSBJc3N1ZSAjNjEzMTogdGVzdF9tb2R1bGVmaW5kZXIgbGVha2VkIHdoZW4gcnVuIGFmdGVyIHRlc3RfZGlzdHV0aWxzLgorICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjNjA0ODogTm93IERpc3R1dGlscyB1c2VzIHRoZSB0YXJmaWxlIG1vZHVsZSBpbiBhcmNoaXZlX3V0aWwuCisKKy0gSXNzdWUgIzYwNjI6IEluIGRpc3R1dGlscywgZml4ZWQgdGhlIHBhY2thZ2Ugb3B0aW9uIG9mIGJ1aWxkX2V4dC4gRmVlZGJhY2sKKyAgYW5kIHRlc3RzIG9uIHB5d2luMzIgYnkgVGltIEdvbGRlbi4KKworLSBJc3N1ZSAjNjA1MzogRml4ZWQgZGlzdHV0aWxzIHRlc3RzIG9uIHdpbjMyLiBwYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjNjA0NjogRml4ZWQgdGhlIGxpYnJhcnkgZXh0ZW5zaW9uIHdoZW4gZGlzdHV0aWxzIGJ1aWxkX2V4dCBpcyB1c2VkCisgIGlucGxhY2UuIEluaXRpYWwgcGF0Y2ggYnkgUm91bWVuIFBldHJvdi4KKworLSBJc3N1ZSAjNjA0MTogTm93IGRpc3R1dGlscyBgc2Rpc3RgIGFuZCBgcmVnaXN0ZXJgIGNvbW1hbmRzIHVzZSBgY2hlY2tgIGFzIGEKKyAgc3ViY29tbWFuZC4KKworLSBJc3N1ZSAjNjAyMjogYSB0ZXN0IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYnkKKyAgdGVzdF9nZXRfb3V0cHV0cyBpbiBEaXN0dXRpbHMuCisKKy0gSXNzdWUgIzU5Nzc6IGRpc3R1dGlscyBidWlsZF9leHQuZ2V0X291dHB1dHMgd2FzIG5vdCB0YWtpbmcgaW50byBhY2NvdW50IHRoZQorICBpbnBsYWNlIG9wdGlvbi4gSW5pdGlhbCBwYXRjaCBieSBreHJvYmVydG8uCisKKy0gSXNzdWUgIzU5ODQ6IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dC5jaGVja19leHRlbnNpb25zX2xpc3QgY2hlY2tzIHdlcmUgYnJva2VuCisgIGZvciBvbGQtc3R5bGUgZXh0ZW5zaW9ucy4KKworLSBJc3N1ZSAjNTk3NjogRml4ZWQgRGlzdHV0aWxzIHRlc3RfY2hlY2tfZW52aXJvbi4KKworLSBJc3N1ZSAjNTk0MTogRGlzdHV0aWxzIGJ1aWxkX2NsaWIgY29tbWFuZCB3YXMgbm90IHdvcmtpbmcgYW55bW9yZSBiZWNhdXNlCisgIG9mIGFuIGluY29tcGxldGUgY29zdHVtaXphdGlvbiBvZiB0aGUgYXJjaGl2ZXIgY29tbWFuZC4gQWRkZWQgQVJGTEFHUyBpbiB0aGUKKyAgTWFrZWZpbGUgYmVzaWRlcyBBUiBhbmQgbWFrZSBEaXN0dXRpbHMgdXNlIGl0LiBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZAorICBDb3VybmFwZWF1LgorCistIElzc3VlICMyMjQ1OiBhaWZjIG5vdyBza2lwcyBjaHVuayB0eXBlcyBpdCBkb2Vzbid0IHJlY29nbml6ZSwgcGVyIHNwZWMuCisKKy0gSXNzdWUgIzU4NzQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X2NvbmZpZ19jbWQgaXMgbm90IGxvY2FsZS1zZW5zaXRpdmUKKyAgYW55bW9yZS4KKworLSBJc3N1ZSAjNTgxMDogRml4ZWQgRGlzdHV0aWxzIHRlc3RfYnVpbGRfc2NyaXB0cyBzbyBpdCB1c2VzCisgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMuCisKKy0gSXNzdWUgIzQ5NTE6IEZpeGVkIGZhaWx1cmUgaW4gdGVzdF9odHRwc2VydmVycy4KKworLSBJc3N1ZSAjNTc5NTogRml4ZWQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZSBvbiBEZWJpYW4gcHBjLgorCistIElzc3VlICM1NjA3OiBmaXhlZCBEaXN0dXRpbHMgdGVzdF9nZXRfcGxhdGZvcm0gZm9yIE1hYyBPUyBYIGZhdCBiaW5hcmllcy4KKworLSBJc3N1ZSAjNTc0MTogZG9uJ3QgZGlzYWxsb3cgIiUlIiAod2hpY2ggaXMgYW4gZXNjYXBlIGZvciAiJSIpIHdoZW4gc2V0dGluZworICBhIHZhbHVlIGluIFNhZmVDb25maWdQYXJzZXIuCisKKy0gSXNzdWUgIzU3MzI6IGFkZGVkIGEgbmV3IGNvbW1hbmQgaW4gRGlzdHV0aWxzOiBjaGVjay4KKworLSBJc3N1ZSAjNTczMTogRGlzdHV0aWxzIGJkaXN0X3dpbmluc3Qgbm8gbG9uZ2VyIHdvcmtlZCBvbiBub24tV2luZG93cworICBwbGF0Zm9ybXMuIEluaXRpYWwgcGF0Y2ggYnkgUGF1bCBNb29yZS4KKworLSBJc3N1ZSAjNTA5NTogQWRkZWQgYmRpc3RfbXNpIHRvIHRoZSBsaXN0IG9mIGJkaXN0IHN1cHBvcnRlZCBmb3JtYXRzLgorICBJbml0aWFsIGZpeCBieSBTdGV2ZW4gQmV0aGFyZC4KKworLSBJc3N1ZSAjMTQ5MTQzMTogRml4ZWQgZGlzdHV0aWxzLmZpbGVsaXN0Lmdsb2JfdG9fcmUgZm9yIGVkZ2UgY2FzZXMuCisgIEluaXRpYWwgZml4IGJ5IFdheW5lIERhdmlzb24uCisKKy0gSXNzdWUgIzU2OTQ6IHJlbW92ZWQgc3B1cmlvdXMgdGVzdCBvdXRwdXQgaW4gRGlzdHV0aWxzICh0ZXN0X2NsZWFuKS4KKworLSBJc3N1ZSAjMTMyNjA3NzogZml4IHRoZSBmb3JtYXR0aW5nIG9mIFN5bnRheEVycm9ycyBieSB0aGUgdHJhY2ViYWNrIG1vZHVsZS4KKworLSBJc3N1ZSAjMTY2NTIwNiAocGFydGlhbGx5KTogTW92ZSBpbXBvcnRzIGluIGNnaXRiIHRvIHRoZSB0b3Agb2YgdGhlIG1vZHVsZQorICBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgdGhlbSBpbiBmdW5jdGlvbnMuIEhlbHBzIHByZXZlbnQgaW1wb3J0IGRlYWRsb2NraW5nIGluCisgIHRocmVhZHMuCisKKy0gSXNzdWUgIzI1MjI6IGxvY2FsZS5mb3JtYXQgbm93IGNoZWNrcyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gZW5zdXJlIGl0IGhhcworICBiZWVuIHBhc3NlZCBvbmx5IG9uZSBwYXR0ZXJuLCBhdm9pZGluZyBteXN0ZXJpb3VzIGVycm9ycyB3aGVyZSBpdCBhcHBlYXJlZAorICB0aGF0IGl0IHdhcyBmYWlsaW5nIHRvIGRvIGxvY2FsaXphdGlvbi4KKworLSBJc3N1ZSAjNTU4MzogQWRkZWQgb3B0aW9uYWwgRXh0ZW5zaW9ucyBpbiBEaXN0dXRpbHMuIEluaXRpYWwgcGF0Y2ggYnkgR2VvcmcKKyAgQnJhbmRsLgorCistIElzc3VlICMxMjIyOiBsb2NhbGUuZm9ybWF0KCkgYnVnIHdoZW4gdGhlIHRob3VzYW5kcyBzZXBhcmF0b3IgaXMgYSBzcGFjZQorICBjaGFyYWN0ZXIuCisKKy0gSXNzdWUgIzU0NzI6IEZpeGVkIGRpc3R1dGlscy50ZXN0X3V0aWwgdGVhciBkb3duLiBPcmlnaW5hbCBwYXRjaCBieQorICBUaW0gR29sZGVuLgorCistIGNvbGxlY3Rpb25zLmRlcXVlKCkgb2JqZWN0cyBub3cgaGF2ZSBhIHJlYWQtb25seSBhdHRyaWJ1dGUgY2FsbGVkIG1heGxlbi4KKworLSBJc3N1ZSAjMjYzODogU2hvdyBhIHdpbmRvdyBjb25zdHJ1Y3RlZCB3aXRoIHRrU2ltcGxlRGlhbG9nLkRpYWxvZyBvbmx5IGFmdGVyCisgIGl0IGlzIGhhcyBiZWVuIHBvcHVsYXRlZCBhbmQgcHJvcGVybHkgY29uZmlndXJlZCBpbiBvcmRlciB0byBwcmV2ZW50CisgIHdpbmRvdyBmbGFzaGluZy4KKworLSBJc3N1ZSAjNDc5MjogUHJldmVudCBhIHNlZ2ZhdWx0IGluIF90a2ludGVyIGJ5IHVzaW5nIHRoZQorICBndWFyYW50ZWVkIHRvIGJlIHNhZmUgaW50ZXJwIGFyZ3VtZW50IGdpdmVuIHRvIHRoZSBQeXRob25DbWQgaW4gcGxhY2Ugb2YKKyAgdGhlIFRjbCBpbnRlcnByZXRlciB0YWtlbiBmcm9tIGEgUHl0aG9uQ21kX0NsaWVudERhdGEuCisKKy0gSXNzdWUgIzUxOTM6IEd1YXJhbnRlZSB0aGF0IHRraW50ZXIuVGV4dC5zZWFyY2ggcmV0dXJucyBhIHN0cmluZy4KKworLSBJc3N1ZSAjNTM5NDogcmVtb3ZlZCA+IDIuMyBzeW50YXggZnJvbSBkaXN0dXRpbHMubXN2Yzljb21waWxlci4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgQWtpcmEgS2l0YWRhLgorCistIElzc3VlICM1MzM0OiBhcnJheS5mcm9tZmlsZSgpIGZhaWxlZCB0byBpbnNlcnQgdmFsdWVzIHdoZW4gRU9GRXJyb3Igd2FzIHJhaXNlZC4KKworLSBJc3N1ZSAjNTM4NTogRml4ZWQgbW1hcCBjcmFzaCBhZnRlciByZXNpemUgZmFpbHVyZSBvbiB3aW5kb3dzLgorCistIElzc3VlICM1MTc5OiBGaXhlZCBzdWJwcm9jZXNzIGhhbmRsZSBsZWFrIG9uIGZhaWx1cmUgb24gd2luZG93cy4KKworLSBQRVAgMzcyOiAgQWRkZWQgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKS4KKworLSBUaGUgX2FzZGljdCgpIGZvciBtZXRob2QgZm9yIG5hbWVkdHVwbGVzIG5vdyByZXR1cm5zIGFuIE9yZGVyZWREaWN0KCkuCisKKy0gY29uZmlncGFyc2VyIG5vdyBkZWZhdWx0cyB0byB1c2luZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuCisKKy0gSXNzdWUgIzU0MDE6IEZpeGVkIGEgcGVyZm9ybWFuY2UgcHJvYmxlbSBpbiBtaW1ldHlwZXMgd2hlbiBgYGZyb20gbWltZXR5cGVzCisgIGltcG9ydCBndWVzc19leHRlbnNpb25gYCB3YXMgdXNlZC4KKworLSBJc3N1ZSAjMTczMzk4NjogRml4ZWQgbW1hcCBjcmFzaCBpbiBhY2Nlc3NpbmcgZWxlbWVudHMgb2Ygc2Vjb25kIG1hcCBvYmplY3QKKyAgd2l0aCBzYW1lIHRhZ25hbWUgYnV0IGxhcmdlciBzaXplIHRoYW4gZmlyc3QgbWFwLiAoV2luZG93cykKKworLSBJc3N1ZSAjNTM4NjogbW1hcC53cml0ZV9ieXRlIGRpZG4ndCBjaGVjayBtYXAgc2l6ZSwgc28gaXQgY291bGQgY2F1c2UgYnVmZmVyCisgIG92ZXJydW4uCisKKy0gSXNzdWUgIzE1MzMxNjQ6IEluc3RhbGxlZCBidXQgbm90IGxpc3RlZCBgYCoucHlvYGAgd2FzIGJyZWFraW5nIERpc3R1dGlscworICBiZGlzdF9ycG0gY29tbWFuZC4KKworLSBJc3N1ZSAjNTM3ODogYWRkZWQgLS1xdWlldCBvcHRpb24gdG8gRGlzdHV0aWxzIGJkaXN0X3JwbSBjb21tYW5kLgorCistIElzc3VlICM1MDUyOiBtYWtlIERpc3R1dGlscyBjb21wYXRpYmxlIHdpdGggMi4zIGFnYWluLgorCistIElzc3VlICM1MzE2OiBGaXhlZCBidWlsZGJvdCBmYWlsdXJlcyBpbnRyb2R1Y2VkIGJ5IG11bHRpcGxlIGluaGVyaXRhbmNlCisgIGluIERpc3R1dGlscyB0ZXN0cy4KKworLSBJc3N1ZSAjNTI4NzogQWRkIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgZmluZENhbGxlcigpIGNhbGwgdG8gaGVscCBvdXQKKyAgSXJvblB5dGhvbi4KKworLSBJc3N1ZSAjNTI4MjogRml4ZWQgbW1hcCByZXNpemUgb24gMzJiaXQgd2luZG93cyBhbmQgdW5peC4gV2hlbiBvZmZzZXQgPiAwLAorICBUaGUgZmlsZSB3YXMgcmVzaXplZCB0byB3cm9uZyBzaXplLgorCistIElzc3VlICM1MjkyOiBGaXhlZCBtbWFwIGNyYXNoIG9uIGl0cyBib3VuZGFyeSBhY2Nlc3MgbVtsZW4obSldLgorCistIElzc3VlICMyMjc5OiBkaXN0dXRpbHMuc2Rpc3QuYWRkX2RlZmF1bHRzIG5vdyBhZGQgZmlsZXMKKyAgZnJvbSB0aGUgcGFja2FnZV9kYXRhIGFuZCB0aGUgZGF0YV9maWxlcyBtZXRhZGF0YS4KKworLSBJc3N1ZSAjNTI1NzogcmVmYWN0b3JlZCBhbGwgdGVzdHMgaW4gZGlzdHV0aWxzLCBzbyB0aGV5IHVzZQorICBzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLCB0byBhdm9pZCB3cml0aW5nIGluIHRoZSB0ZXN0cyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzQ1MjQ6IGRpc3R1dGlscyBidWlsZF9zY3JpcHQgY29tbWFuZCBmYWlsZWQgd2l0aCAtLXdpdGgtc3VmZml4PTMuCisgIEluaXRpYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCisKKy0gSXNzdWUgIzI0NjE6IGFkZGVkIHRlc3RzIGZvciBkaXN0dXRpbHMudXRpbAorCistIElzc3VlICM0OTk4OiBUaGUgbWVtb3J5IHNhdmluZyBlZmZlY3Qgb2YgX19zbG90c19fIGhhZCBiZWVuIGxvc3Qgb24gRnJhY3Rpb25zCisgIHdoaWNoIGluaGVyaXRlZCBmcm9tIG51bWJlcnMucHkgd2hpY2ggZGlkIG5vdCBoYXZlIF9fc2xvdHNfXyBkZWZpbmVkLiAgVGhlCisgIG51bWJlcnMgaGllcmFyY2h5IG5vdyBoYXMgaXRzIG93biBfX3Nsb3RzX18gZGVjbGFyYXRpb25zLgorCistIElzc3VlICM0NjMxOiBGaXggdXJsb3BlbigpIHJlc3VsdCB3aGVuIGFuIEhUVFAgcmVzcG9uc2UgdXNlcyBjaHVua2VkCisgIGVuY29kaW5nLgorCistIElzc3VlICM1MjAzOiBGaXhlZCBjdHlwZXMgc2VnZmF1bHRzIHdoZW4gcGFzc2luZyBhIHVuaWNvZGUgc3RyaW5nIHRvIGEKKyAgZnVuY3Rpb24gd2l0aG91dCBhcmd0eXBlcyAob25seSBvY2N1cnMgaWYgSEFWRV9VU0FCTEVfV0NIQVJfVCBpcyBmYWxzZSkuCisKKy0gSXNzdWUgIzMzODY6IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIgcHJlZml4IGFyZ3VtZW50IHdhcyBpZ25vcmVkCisgIHVuZGVyIE5UIGFuZCBPUzIuIFBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCisKKy0gSXNzdWUgIzUxMjg6IE1ha2UgY29tcGlsZWFsbCBwcm9wZXJseSBpbnNwZWN0IGJ5dGVjb2RlIHRvIGRldGVybWluZSBpZiBuZWVkcworICB0byBiZSByZWNyZWF0ZWQuIFRoaXMgYXZvaWRzIGEgdGltaW5nIGhvbGUgdGhhbmtzIHRvIHRoZSBvbGQgcmVsaWFuY2Ugb24gdGhlCisgIGN0aW1lIG9mIHRoZSBmaWxlcyBpbnZvbHZlZC4KKworLSBJc3N1ZSAjNTEyMjogU3luY2hyb25pemUgdGsgbG9hZCBmYWlsdXJlIGNoZWNrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwKKyAgZGVhZGxvY2suCisKKy0gSXNzdWUgIzE4MTg6IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSBub3cgc3VwcG9ydHMgYSBrZXl3b3JkIGFyZ3VtZW50CisgICdyZW5hbWUnIHdoaWNoIGxldHMgaW52YWxpZCBmaWVsZG5hbWVzIGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvCisgIHBvc2l0aW9uYWwgbmFtZXMgaW4gdGhlIGZvcm0sIF8xLCBfMiwgLi4uCisKKy0gSXNzdWUgIzQ4OTA6IEhhbmRsZSBlbXB0eSB0ZXh0IHNlYXJjaCBwYXR0ZXJuIGluIFRraW50ZXIuVGV4dC5zZWFyY2guCisKKy0gSXNzdWUgIzQ1MTIgKHBhcnQgMik6IFByb21vdGUgYGBaaXBJbXBvcnRlci5fZ2V0X2ZpbGVuYW1lKClgYCB0byBiZSBhCisgIHB1YmxpYyBkb2N1bWVudGVkIG1ldGhvZCBgYFppcEltcG9ydGVyLmdldF9maWxlbmFtZSgpYGAuCisKKy0gSXNzdWUgIzQxOTU6IFRoZSBgYHJ1bnB5YGAgbW9kdWxlIChhbmQgdGhlIGBgLW1gYCBzd2l0Y2gpIG5vdyBzdXBwb3J0CisgIHRoZSBleGVjdXRpb24gb2YgcGFja2FnZXMgYnkgbG9va2luZyBmb3IgYW5kIGV4ZWN1dGluZyBhIGBgX19tYWluX19gYAorICBzdWJtb2R1bGUgd2hlbiBhIHBhY2thZ2UgbmFtZSBpcyBzdXBwbGllZC4gSW5pdGlhbCBwYXRjaCBieSBBbmRpCisgIFZhamRhLgorCistIElzc3VlICMxNzMxNzA2OiBDYWxsIFRjbF9Db25kaXRpb25GaW5hbGl6ZSBmb3IgVGNsX0NvbmRpdGlvbnMgdGhhdCB3aWxsCisgIG5vdCBiZSB1c2VkIGFnYWluICh0aGlzIHJlcXVpcmVzIFRjbC9UayA4LjMuMSksIGFsc28gZml4IGEgbWVtb3J5IGxlYWsgaW4KKyAgVGthcHBfQ2FsbCB3aGVuIGNhbGxpbmcgZnJvbSBhIHRocmVhZCBkaWZmZXJlbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZAorICB0aGUgVGNsIGludGVycHJldGVyLiBQYXRjaCBieSBSb2JlcnQgSGFuY29jay4KKworLSBJc3N1ZSAjNDI4NTogQ2hhbmdlIHN5cy52ZXJzaW9uX2luZm8gdG8gYmUgYSBuYW1lZCB0dXBsZS4gUGF0Y2ggYnkKKyAgUm9zcyBMaWdodC4KKworLSBJc3N1ZSAjMTUyMDg3NzogTm93IGRpc3R1dGlscy5zeXNjb25maWcgcmVhZHMgJEFSIGZyb20gdGhlCisgIGVudmlyb25tZW50L01ha2VmaWxlLiBQYXRjaCBieSBEb3VnbGFzIEdyZWltYW4uCisKKy0gSXNzdWUgIzEyNzY3Njg6IFRoZSB2ZXJib3NlIG9wdGlvbiB3YXMgbm90IHVzZWQgaW4gdGhlIGNvZGUgb2YKKyAgZGlzdHV0aWxzLmZpbGVfdXRpbCBhbmQgZGlzdHV0aWxzLmRpcl91dGlsLgorCistIElzc3VlICM1MTMyOiBGaXhlZCB0cm91YmxlIGJ1aWxkaW5nIGV4dGVuc2lvbnMgdW5kZXIgU29sYXJpcyB3aXRoCisgIC0tZW5hYmxlZC1zaGFyZWQgYWN0aXZhdGVkLiBJbml0aWFsIHBhdGNoIGJ5IERhdmUgUGV0ZXJzb24uCisKKy0gSXNzdWUgIzE1ODE0NzY6IEFsd2F5cyB1c2UgdGhlIFRjbCBnbG9iYWwgbmFtZXNwYWNlIHdoZW4gY2FsbGluZyBpbnRvIFRjbC4KKworLSBUaGUgc2hlbHZlIG1vZHVsZSBub3cgZGVmYXVsdHMgdG8gcGlja2xlIHByb3RvY29sIDMuCisKKy0gRml4IGEgYnVnIGluIHRoZSB0cmFjZSBtb2R1bGUgd2hlcmUgYSBieXRlcyBvYmplY3QgZnJvbSBjb19sbm90YWIgaGFkIGl0cworICBpdGVtcyBiZWluZyBwYXNzZWQgdGhyb3VnaCBvcmQoKS4KKworLSBJc3N1ZSAjMjA0Nzogc2h1dGlsLm1vdmUoKSBjb3VsZCBiZWxpZXZlIHRoYXQgaXRzIGRlc3RpbmF0aW9uIHBhdGggd2FzCisgIGluc2lkZSBpdHMgc291cmNlIHBhdGggaWYgaXQgYmVnYW4gd2l0aCB0aGUgc2FtZSBsZXR0ZXJzIChlLmcuICJzcmMiIHZzLgorICAic3JjLm5ldyIpLgorCistIEFkZGVkIHRoZSB0dGsgbW9kdWxlLiBTZWUgaXNzdWUgIzI5ODM6IFR0ayBzdXBwb3J0IGZvciBUa2ludGVyLgorCistIFJlbW92ZWQgaXNTZXF1ZW5jZVR5cGUoKSwgaXNNYXBwaW5nVHlwZSwgYW5kIGlzTnVtYmVyVHlwZSgpIGZyb20gdGhlCisgIG9wZXJhdG9yIG1vZHVsZTsgdXNlIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaW5zdGVhZC4gIEFsc28gcmVtb3ZlZAorICB0aGUgcmVwZWF0KCkgZnVuY3Rpb247IHVzZSBtdWwoKSBpbnN0ZWFkLgorCistIElzc3VlICM1MDIxOiAgZG9jdGVzdC50ZXN0ZmlsZSgpIGRpZCBub3QgY3JlYXRlIF9fbmFtZV9fIGFuZAorICBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgcmVsaWVkIG9uIF9fbmFtZV9fIGJlaW5nIGRlZmluZWQuCisKKy0gQmFja3BvcnQgaW1wb3J0bGliIGZyb20gUHl0aG9uIDMuMS4gT25seSB0aGUgaW1wb3J0X21vZHVsZSgpIGZ1bmN0aW9uIGhhcworICBiZWVuIGJhY2twb3J0ZWQgdG8gaGVscCBmYWNpbGl0YXRlIHRyYW5zaXRpb25zIGZyb20gMi43IHRvIDMuMS4KKworLSBJc3N1ZSAjMTg4NTogZGlzdHV0aWxzLiBXaGVuIHJ1bm5pbmcgc2Rpc3Qgd2l0aCAtLWZvcm1hdHM9dGFyLGd6dGFyCisgIHRoZSB0YXIgZmlsZSB3YXMgb3ZlcnJpZGVuIGJ5IHRoZSBnenRhciBvbmUuCisKKy0gSXNzdWUgIzQ4NjM6IGRpc3R1dGlscy5td2Vya3Njb21waWxlciBoYXMgYmVlbiByZW1vdmVkLgorCistIEFkZGVkIGEgbmV3IGl0ZXJ0b29scyBmdW5jdGlvbnM6ICBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgpCisgIGFuZCBjb21wcmVzcygpLgorCistIElzc3VlICM1MDMyOiAgYWRkZWQgYSBzdGVwIGFyZ3VtZW50IHRvIGl0ZXJ0b29scy5jb3VudCgpIGFuZAorICBhbGxvd2VkIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cy4KKworLSBGaXggYW5kIHByb3Blcmx5IGRvY3VtZW50IHRoZSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlJ3MgbG9nZ2luZworICBzdXBwb3J0LCBleHBvc2UgdGhlIGludGVybmFsIGxldmVscyBhbmQgcHJvdmlkZSBwcm9wZXIgdXNhZ2UKKyAgZXhhbXBsZXMuCisKKy0gSXNzdWUgIzE2NzIzMzI6IGZpeCB1bnBpY2tsaW5nIG9mIHN1Ym5vcm1hbCBmbG9hdHMsIHdoaWNoIHdhcworICBwcm9kdWNpbmcgYSBWYWx1ZUVycm9yIG9uIHNvbWUgcGxhdGZvcm1zLgorCistIElzc3VlICMzODgxOiBIZWxwIFRjbCB0byBsb2FkIGV2ZW4gd2hlbiBzdGFydGVkIHRocm91Z2ggdGhlCisgIHVucmVhZGFibGUgbG9jYWwgc3ltbGluayB0byAiUHJvZ3JhbSBGaWxlcyIgb24gVmlzdGEuCisKKy0gSXNzdWUgIzQ3MTA6IEV4dHJhY3QgZGlyZWN0b3JpZXMgcHJvcGVybHkgaW4gdGhlIHppcGZpbGUgbW9kdWxlOworICBhbGxvdyBhZGRpbmcgZGlyZWN0b3JpZXMgdG8gYSB6aXBmaWxlLgorCistIElzc3VlICMzODA3OiBfbXVsdGlwcm9jZXNzaW5nIGJ1aWxkIGZhaWxzIHdoZW4gY29uZmlndXJlIGlzIHBhc3NlZAorICAtLXdpdGhvdXQtdGhyZWFkcyBhcmd1bWVudC4gV2hlbiB0aGlzIG9jY3VycywgX211bHRpcHJvY2Vzc2luZyB3aWxsCisgIGJlIGRpc2FibGVkLCBhbmQgbm90IGNvbXBpbGVkLgorCistIElzc3VlICM1MDA4OiBXaGVuIGEgZmlsZSBpcyBvcGVuZWQgaW4gYXBwZW5kIG1vZGUgd2l0aCB0aGUgbmV3IElPIGxpYnJhcnksCisgIGRvIGFuIGV4cGxpY2l0IHNlZWsgdG8gdGhlIGVuZCBvZiBmaWxlIChzbyB0aGF0IGUuZy4gdGVsbCgpIHJldHVybnMgdGhlCisgIGZpbGUgc2l6ZSByYXRoZXIgdGhhbiAwKS4gVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGJlaGF2aW91ciBvZiB0aGUKKyAgdHJhZGl0aW9uYWwgMi54IGZpbGUgb2JqZWN0LgorCistIElzc3VlICM1MDEzOiBGaXhlZCBhIGJ1ZyBpbiBGaWxlSGFuZGxlciB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBkZWxheQorICBwYXJhbWV0ZXIgd2FzIHNldC4KKworLSBJc3N1ZSAjNDg0MjogQWx3YXlzIGFwcGVuZCBhIHRyYWlsaW5nICdMJyB3aGVuIHBpY2tsaW5nIGxvbmdzIHVzaW5nCisgIHBpY2tsZSBwcm90b2NvbCAwLiAgV2hlbiByZWFkaW5nLCB0aGUgJ0wnIGlzIG9wdGlvbmFsLgorCistIEFkZCB0aGUgaW1wb3J0bGliIHBhY2thZ2UuCisKKy0gSXNzdWUgIzQzMDE6IFBhdGNoIHRoZSBsb2dnaW5nIG1vZHVsZSB0byBhZGQgcHJvY2Vzc05hbWUgc3VwcG9ydCwgcmVtb3ZlCisgIF9jaGVja19sb2dnZXJfY2xhc3MgZnJvbSBtdWx0aXByb2Nlc3NpbmcuCisKKy0gSXNzdWUgIzMzMjU6IFJlbW92ZSBweXRob24yLnggdHJ5OiBleGNlcHQ6IGltcG9ydHMgZm9yIG9sZCBjUGlja2xlIGZyb20KKyAgbXVsdGlwcm9jZXNzaW5nLgorCistIElzc3VlICM0OTU5OiBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMgbm93IHdvcmtzIGZvciBrZXl3b3JkIG9ubHkgYXJndW1lbnRzCisgIHdpdGhvdXQgZGVmYXVsdHMuCisKKy0gSXNzdWUgIzMzMjE6IGBgX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKClgYCBkb2Vzbid0IGNoZWNrIGhhbmRsZTsgYWRkZWQgY2hlY2tzCisgIGZvciBVbml4IG1hY2hpbmVzIGZvciBuZWdhdGl2ZSBoYW5kbGVzIGFuZCBsYXJnZSBpbnQgaGFuZGxlcy4gV2l0aG91dCB0aGlzIGNoZWNrCisgIGl0IGlzIHBvc3NpYmxlIHRvIHNlZ2ZhdWx0IHRoZSBpbnRlcnByZXRlci4KKworLSBJc3N1ZSAjNDQ0OTogQXNzZXJ0aW9uRXJyb3IgaW4gbXBfYmVuY2htYXJrcy5weSwgY2F1c2VkIGJ5IGFuIHVuZGVybHlpbmcgaXNzdWUKKyAgaW4gc2hhcmVkY3R5cGVzLnB5LgorCistIElzc3VlICMxMjI1MTA3OiBpbnNwZWN0LmlzY2xhc3MoKSByZXR1cm5lZCBUcnVlIGZvciBpbnN0YW5jZXMgd2l0aCBhIGN1c3RvbQorICBfX2dldGF0dHJfXy4KKworLSBJc3N1ZSAjMzgyNiBhbmQgIzQ3OTE6IFRoZSBzb2NrZXQgbW9kdWxlIG5vdyBjbG9zZXMgdGhlIHVuZGVybHlpbmcgc29ja2V0CisgIGFwcHJvcHJpYXRlbHkgd2hlbiBpdCBpcyBiZWluZyB1c2VkIHZpYSBzb2NrZXQubWFrZWZpbGUoKSBvYmplY3RzCisgIHJhdGhlciB0aGFuIGRlbGF5aW5nIHRoZSBjbG9zZSBieSB3YWl0aW5nIGZvciBnYXJiYWdlIGNvbGxlY3Rpb24gdG8gZG8gaXQuCisKKy0gSXNzdWUgIzE2OTYxOTk6ICBBZGQgY29sbGVjdGlvbnMuQ291bnRlcigpIGZvciByYXBpZCBhbmQgY29udmVuaWVudAorICBjb3VudGluZy4KKworLSBJc3N1ZSAjMzg2MDogR3ppcEZpbGUgYW5kIEJaMkZpbGUgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbC4KKworLSBJc3N1ZSAjNDg2NzogRml4ZWQgYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiBwYXNzaW5nIGEgc3RyaW5nIHRvIGEKKyAgZnVuY3Rpb24gd2l0aG91dCBkZWZpbmluZyBhcmd0eXBlcy4KKworLSBJc3N1ZSAjNDI3MjogQWRkIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIHRoZSBHemlwRmlsZSBjb25zdHJ1Y3RvciB0byBvdmVycmlkZQorICB0aGUgdGltZXN0YW1wIGluIHRoZSBnemlwIHN0cmVhbS4gVGhlIGRlZmF1bHQgdmFsdWUgcmVtYWlucyB0aGUgY3VycmVudCB0aW1lLgorICBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgYnkgZS5nLiBndW56aXAgd2hlbiBkZWNvbXByZXNzaW5nLiBQYXRjaCBieQorICBKYWNxdWVzIEZyZWNoZXQuCisKKy0gUmVzdG9yZSBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkgZm9yIGRlY2ltYWwucHkuCisKKy0gSXNzdWUgIzM2Mzg6IFJlbW92ZSBmdW5jdGlvbnMgZnJvbSBfdGtpbnRlciBtb2R1bGUgbGV2ZWwgdGhhdCBkZXBlbmQgb24KKyAgVGthcHBPYmplY3QgdG8gd29yayB3aXRoIG11bHRpcGxlIHRocmVhZHMuCisKKy0gSXNzdWUgIzQ3MTg6IEFkYXB0IHRoZSB3c2dpcmVmIHBhY2thZ2Ugc28gdGhhdCBpdCBhY3R1YWxseSB3b3JrcyB3aXRoCisgIFB5dGhvbiAzLngsIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgYG9mZmljaWFsIGFtZW5kbWVudHMgb2YgdGhlIHNwZWMKKyAgPGh0dHA6Ly93d3cud3NnaS5vcmcvd3NnaS9BbWVuZG1lbnRzXzEuMD5gXy4KKworLSBJc3N1ZSAjNDc5NjogQWRkZWQgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgYW5kIENvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgpCisgIHRvIHRoZSBkZWNpbWFsIG1vZHVsZS4KKworLSBGcmFjdGlvbnMuZnJvbV9mbG9hdCgpIG5vIGxvbmdlciBsb3NlcyBwcmVjaXNpb24gZm9yIGludGVnZXJzIHRvbyBiaWcgdG8KKyAgY2FzdCBhcyBmbG9hdHMuCisKKy0gSXNzdWUgIzQ4MTI6IGFkZCBtaXNzaW5nIHVuZGVyc2NvcmUgcHJlZml4IHRvIHNvbWUgaW50ZXJuYWwtdXNlLW9ubHkKKyAgY29uc3RhbnRzIGluIHRoZSBkZWNpbWFsIG1vZHVsZS4gIChEZWNfMCBiZWNvbWVzIF9EZWNfMCwgZXRjLikKKworLSBJc3N1ZSAjNDc5MDogVGhlIG5zbWFsbGVzdCgpIGFuZCBubGFyZ2VzdCgpIGZ1bmN0aW9ucyBpbiB0aGUgaGVhcHEgbW9kdWxlCisgIGRpZCB1bm5lY2Vzc2FyeSB3b3JrIGluIHRoZSBjb21tb24gY2FzZSB3aGVyZSBubyBrZXkgZnVuY3Rpb24gd2FzIHNwZWNpZmllZC4KKworLSBJc3N1ZSAjNDc5NTogaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKCkgcmV0dXJucyBGYWxzZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbgorICB0aGUgZnVuY3Rpb24gaXMgbm90IGEgZ2VuZXJhdG9yLgorCistIElzc3VlICM0NzAyOiBUaHJvd2luZyBhIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IgaW5zdGVhZCBvZiBJT0Vycm9yIGluIGNhc2UKKyAgbm8gTVNWQyBjb21waWxlciBpcyBmb3VuZCB1bmRlciBXaW5kb3dzLiBPcmlnaW5hbCBwYXRjaCBieSBQaGlsaXAgSmVudmV5LgorCistIElzc3VlICM0NjQ2OiBkaXN0dXRpbHMgd2FzIGNob2tpbmcgb24gZW1wdHkgb3B0aW9ucyBhcmcgaW4gdGhlIHNldHVwCisgIGZ1bmN0aW9uLiBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgSGVsbGVyLgorCistIElzc3VlICMzNzY3OiBDb252ZXJ0IFRrIG9iamVjdCB0byBzdHJpbmcgaW4gdGtDb2xvckNob29zZXIuCisKKy0gSXNzdWUgIzMyNDg6IEFsbG93IHBsYWNpbmcgU2Nyb2xsZWRUZXh0IGluIGEgUGFuZWRXaW5kb3cuCisKKy0gSXNzdWUgIzQ0NDQ6IEFsbG93IGFzc2VydFJhaXNlcygpIHRvIGJlIHVzZWQgYXMgYSBjb250ZXh0IGhhbmRsZXIsIHNvIHRoYXQKKyAgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgaWYgbW9yZSBwcmFjdGljYWwuCisKKy0gSXNzdWUgIzQ3Mzk6IEFkZCBweWRvYyBoZWxwIHRvcGljcyBmb3Igc3ltYm9scywgc28gdGhhdCBlLmcuIGhlbHAoJ0AnKQorICB3b3JrcyBhcyBleHBlY3RlZCBpbiB0aGUgaW50ZXJhY3RpdmUgZW52aXJvbm1lbnQuCisKKy0gSXNzdWUgIzQ3NTY6IHppcGZpbGUuaXNfemlwZmlsZSgpIG5vdyBzdXBwb3J0cyBmaWxlLWxpa2Ugb2JqZWN0cy4gUGF0Y2ggYnkKKyAgR2FicmllbCBHZW5lbGxpbmEuCisKKy0gSXNzdWUgIzQ1NzQ6IHJlYWRpbmcgYW4gVVRGMTYtZW5jb2RlZCB0ZXh0IGZpbGUgY3Jhc2hlcyBpZiBcciBvbiA2NC1jaGFyCisgIGJvdW5kYXJ5LgorCistIElzc3VlICM0MjIzOiBpbnNwZWN0LmdldHNvdXJjZSgpIHdpbGwgbm93IGNvcnJlY3RseSBkaXNwbGF5IHNvdXJjZSBjb2RlCisgIGZvciBwYWNrYWdlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIGNvbmZvcm1hbnQgUEVQIDMwMgorICBsb2FkZXIpLiBPcmlnaW5hbCBwYXRjaCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjNDIwMTogcGRiIGNhbiBub3cgYWNjZXNzIGFuZCBkaXNwbGF5IHNvdXJjZSBjb2RlIGxvYWRlZCB2aWEKKyAgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgY29uZm9ybWFudCBQRVAgMzAyIGxvYWRlcikuIE9yaWdpbmFsIHBhdGNoIGJ5CisgIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlICM0MTk3OiBkb2N0ZXN0cyBpbiBtb2R1bGVzIGxvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgUEVQCisgIDMwMiBjb25mb3JtYW50IGxvYWRlcikgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgaW4gbW9zdCBjYXNlcyAodGhleQorICBhcmUgc3RpbGwgc3ViamVjdCB0byB0aGUgY29uc3RyYWludHMgdGhhdCBleGlzdCBmb3IgYWxsIGNvZGUgcnVubmluZworICBmcm9tIGluc2lkZSBhIG1vZHVsZSBsb2FkZWQgdmlhIGEgUEVQIDMwMiBsb2FkZXIgYW5kIGF0dGVtcHRpbmcgdG8KKyAgcGVyZm9ybSBJTyBvcGVyYXRpb25zIGJhc2VkIG9uIF9fZmlsZV9fKS4gT3JpZ2luYWwgcGF0Y2ggYnkKKyAgQWxleGFuZGVyIEJlbG9wb2xza3kuCisKKy0gSXNzdWVzICM0MDgyIGFuZCAjNDUxMjogQWRkIHJ1bnB5IHN1cHBvcnQgdG8gemlwaW1wb3J0IGluIGEgbWFubmVyIHRoYXQKKyAgYWxsb3dzIGJhY2twb3J0aW5nIHRvIG1haW50ZW5hbmNlIGJyYW5jaGVzLiBPcmlnaW5hbCBwYXRjaCBieQorICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLSBJc3N1ZSAjNDE2MzogdGV4dHdyYXAgbW9kdWxlOiBhbGxvdyB3b3JkIHNwbGl0dGluZyBvbiBhIGh5cGhlbiBwcmVjZWRlZCBieQorICBhIG5vbi1BU0NJSSBsZXR0ZXIuCisKKy0gSXNzdWUgIzQ2MTY6IFRhckZpbGUudXRpbWUoKTogUmVzdG9yZSBkaXJlY3RvcnkgdGltZXMgb24gV2luZG93cy4KKworLSBJc3N1ZSAjNDAyMTogdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKCkgbm93IHJhaXNlcyBhIFN5bnRheEVycm9yIHdoZW4gdGhlCisgIGNvZGVjIGNhbm5vdCBiZSBmb3VuZC4gIFRoaXMgaXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgYnVpbHRpbiBiZWhhdmlvci4KKworLSBJc3N1ZSAjNDA4NDogRml4IG1heCwgbWluLCBtYXhfbWFnIGFuZCBtaW5fbWFnIERlY2ltYWwgbWV0aG9kcyB0bworICBnaXZlIGNvcnJlY3QgcmVzdWx0cyBpbiB0aGUgY2FzZSB3aGVyZSBvbmUgYXJndW1lbnQgaXMgYSBxdWlldCBOYU4KKyAgYW5kIHRoZSBvdGhlciBpcyBhIGZpbml0ZSBudW1iZXIgdGhhdCByZXF1aXJlcyByb3VuZGluZy4KKworLSBJc3N1ZSAjNDQ4MzogX2RibSBtb2R1bGUgbm93IGJ1aWxkcyBvbiBzeXN0ZW1zIHdpdGggZ2RibSAmIGdkYm1fY29tcGF0CisgIGxpYnMuCisKKy0gQWRkZWQgdGhlIHN1YnByb2Nlc3MuY2hlY2tfY2FsbF9vdXRwdXQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgb3V0cHV0CisgIGZyb20gYSBzdWJwcm9jZXNzIG9uIHN1Y2Nlc3Mgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLgorCistIElzc3VlICMxMDU1MjM0OiBjZ2kucGFyc2VfaGVhZGVyKCk6IEZpeGVkIHBhcnNpbmcgb2YgaGVhZGVyIHBhcmFtZXRlcnMgdG8KKyAgc3VwcG9ydCB1bnVzdWFsIGZpbGVuYW1lcyAoc3VjaCBhcyB0aG9zZSBjb250YWluaW5nIHNlbWktY29sb25zKSBpbgorICBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcnMuCisKKy0gSXNzdWUgIzQzODQ6IEFkZGVkIGxvZ2dpbmcgaW50ZWdyYXRpb24gd2l0aCB3YXJuaW5ncyBtb2R1bGUgdXNpbmcKKyAgY2FwdHVyZVdhcm5pbmdzKCkuIFRoaXMgY2hhbmdlIGluY2x1ZGVzIGEgTnVsbEhhbmRsZXIgd2hpY2ggZG9lcyBub3RoaW5nOworICBpdCB3aWxsIGJlIG9mIHVzZSB0byBsaWJyYXJ5IGRldmVsb3BlcnMgd2hvIHdhbnQgdG8gYXZvaWQgdGhlICJObyBoYW5kbGVycworICBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyIFhYWCIgbWVzc2FnZSB3aGljaCBjYW4gYXBwZWFyIGlmIHRoZSBsaWJyYXJ5IHVzZXIKKyAgZG9lc24ndCBjb25maWd1cmUgbG9nZ2luZy4KKworLSBJc3N1ZSAjMzc0MTogRElTVFVUSUxTX1VTRV9TREsgc2V0IGNhdXNlcyBtc3ZjOWNvbXBpbGVyLnB5IHRvIHJhaXNlIGFuCisgIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjNDUyOTogZml4IHRoZSBwYXJzZXIgbW9kdWxlJ3MgdmFsaWRhdGlvbiBvZiB0cnktZXhjZXB0LWZpbmFsbHkKKyAgc3RhdGVtZW50cy4KKworLSBJc3N1ZSAjNDQ1ODogZ2V0b3B0LmdudV9nZXRvcHQoKSBub3cgcmVjb2duaXplcyBhIHNpbmdsZSAiLSIgYXMgYW4gYXJndW1lbnQsCisgIG5vdCBhIG1hbGZvcm1lZCBvcHRpb24uCisKKy0gQWRkZWQgdGhlIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IG91dHB1dAorICBmcm9tIGEgc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLSBJc3N1ZSAjNDU0MjogT24gV2luZG93cywgYmluYXNjaWkuY3JjMzIgc3RpbGwgYWNjZXB0ZWQgc3RyIGFzIGJpbmFyeSBpbnB1dDsKKyAgdGhlIGNvcnJlc3BvbmRpbmcgdGVzdHMgbm93IHBhc3MuCisKKy0gSXNzdWUgIzQ1Mzc6IHdlYmJyb3dzZXIuVW5peEJyb3dzZXIgd291bGQgZmFpbCB0byBvcGVuIHRoZSBicm93c2VyIGJlY2F1c2UKKyAgaXQgd2FzIGNhbGxpbmcgdGhlIHdyb25nIG9wZW4oKSBmdW5jdGlvbi4KKworLSBJc3N1ZSAjMTA1NTIzNDogY2dpLnBhcnNlX2hlYWRlcigpOiBGaXhlZCBwYXJzaW5nIG9mIGhlYWRlciBwYXJhbWV0ZXJzIHRvCisgIHN1cHBvcnQgdW51c3VhbCBmaWxlbmFtZXMgKHN1Y2ggYXMgdGhvc2UgY29udGFpbmluZyBzZW1pLWNvbG9ucykgaW4KKyAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXJzLgorCistIElzc3VlICM0ODYxOiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKTogUm9idXN0aWZ5LiBGaXggbGlicmFyeSBkZXRlY3Rpb24gb24KKyAgYmlhcmNoIHN5c3RlbXMuIFRyeSB0byByZWx5IG9uIGxkY29uZmlnIG9ubHksIHdpdGhvdXQgdXNpbmcgb2JqZHVtcCBhbmQgZ2NjLgorCistIElzc3VlICM1MTA0OiBUaGUgc29ja2V0IG1vZHVsZSBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3Igd2hlbiAxNi1iaXQgcG9ydCBhbmQKKyAgcHJvdG9jb2wgbnVtYmVycyBhcmUgc3VwcGxpZWQgb3V0c2lkZSB0aGUgYWxsb3dlZCAwLTY1NTM2IHJhbmdlIG9uIGJpbmQoKQorICBhbmQgZ2V0c2VydmJ5cG9ydCgpLgorCistIFdpbmRvd3MgbG9jYWxlIG1hcHBpbmcgdXBkYXRlZCB0byBWaXN0YS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzQ3MDQ6IHJlbW92ZSB1c2Ugb2YgY21wKCkgaW4gcHliZW5jaCwgYnVtcCBpdHMgdmVyc2lvbiBudW1iZXIgdG8gMi4xLAorICBhbmQgbWFrZSBpdCAyLjYtY29tcGF0aWJsZS4KKworLSBUdGsgZGVtb3MgYWRkZWQgaW4gRGVtby90a2ludGVyL3R0ay8KKworLSBJc3N1ZSAjNDY3NzogYWRkIHR3byBsaXN0IGNvbXByZWhlbnNpb24gdGVzdHMgdG8gcHliZW5jaC4KKworCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjNjA5NDogQnVpbGQgY29ycmVjdGx5IHdpdGggU3VidmVyc2lvbiAxLjcuCisKKy0gSXNzdWUgIzU4NDc6IFJlbW92ZSAtbiBzd2l0Y2ggb24gIkVkaXQgd2l0aCBJRExFIiBtZW51IGl0ZW0uCisKKy0gSXNzdWUgIzU3MjY6IE1ha2UgTW9kdWxlcy9sZF9zb19haXggcmV0dXJuIHRoZSBhY3R1YWwgZXhpdCBjb2RlIG9mIHRoZQorICBsaW5rZXIsIHJhdGhlciB0aGFuIGFsd2F5cyBleGl0IHN1Y2Nlc3NmdWxseS4gUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCisKKy0gSXNzdWUgIzQ1ODc6IEFkZCBjb25maWd1cmUgb3B0aW9uIC0td2l0aC1kYm1saWJvcmRlcj1kYjE6ZGIyOi4uLiB0byBzcGVjaWZ5CisgIHRoZSBvcmRlciB0aGF0IGJhY2tlbmRzIGZvciB0aGUgZGJtIGV4dGVuc2lvbiBhcmUgY2hlY2tlZC4KKworLSBMaW5rIHRoZSBzaGFyZWQgcHl0aG9uIGxpYnJhcnkgd2l0aCAkKE1PRExJQlMpLgorCistIElzc3VlICM1MTM0OiBTaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIHNxbGl0ZSB3aXRoIFZDKysuCisKKy0gSXNzdWUgIzQ0OTQ6IEZpeCBidWlsZCB3aXRoIFB5X05PX0VOQUJMRV9TSEFSRUQgb24gV2luZG93cy4KKworLSBJc3N1ZSAjNDg5NTogVXNlIF9zdHJkdXAgb24gV2luZG93cyBDRS4KKworLSBJc3N1ZSAjNDQ3MjogImNvbmZpZ3VyZSAtLWVuYWJsZS1zaGFyZWQiIG5vdyB3b3JrcyBvbiBPU1gKKworLSBJc3N1ZXMgIzQ3MjggYW5kICM0MDYwOiBXT1JEU19CSUdFRElBTiBpcyBub3cgY29ycmVjdCBpbiBVbml2ZXJzYWwgYnVpbGRzLgorCistIElzc3VlICM0Mzg5OiBBZGQgaWNvbiB0byB0aGUgdW5pbnN0YWxsIGVudHJ5IGluICJhZGQtYW5kLXJlbW92ZS1wcm9ncmFtcyIuCisKKy0gSXNzdWUgIzQyODk6IFJlbW92ZSBDYW5jZWwgYnV0dG9uIGZyb20gQWR2YW5jZWREbGcuCisKKy0gSXNzdWUgIzE2NTY2NzU6IFJlZ2lzdGVyIGEgZHJvcCBoYW5kbGVyIGZvciAucHkqIGZpbGVzIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzQxMjA6IEV4Y2x1ZGUgbWFuaWZlc3QgZnJvbSBleHRlbnNpb24gbW9kdWxlcyBpbiBWUzIwMDguCisKKy0gSXNzdWUgIzQwOTE6IEluc3RhbGwgcHl0aG9ueHkuZGxsIGluIHN5c3RlbTMyIGFnYWluLgorCistIElzc3VlICM0MDE4OiBEaXNhYmxlICJmb3IgbWUiIGluc3RhbGxhdGlvbnMgb24gVmlzdGEuCisKKy0gSXNzdWUgIzM3NTg6IEFkZCBgYHBhdGNoY2hlY2tgYCBidWlsZCB0YXJnZXQgdG8gLlBIT05ZLgorCistIElzc3VlICM0MjA0OiBGaXhlZCBtb2R1bGUgYnVpbGQgZXJyb3JzIG9uIEZyZWVCU0QgNC4KKworCitDLUFQSQorLS0tLS0KKworLSBJc3N1ZSAjNjYyNDogeUFyZ19QYXJzZVR1cGxlIHdpdGggInMiIGZvcm1hdCB3aGVuIHBhcnNpbmcgYXJndW1lbnQgd2l0aAorICBOVUw6IEJvZ3VzIFR5cGVFcnJvciBkZXRhaWwgc3RyaW5nLgorCistIElzc3VlICM1MTc1OiBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvcgorICBmb3IgbmVnYXRpdmUgYXJndW1lbnRzLiAgUHJldmlvdXNseSwgaXQgcmFpc2VkIFR5cGVFcnJvci4KKworLSBJc3N1ZSAjNDcyMDogVGhlIGZvcm1hdCBmb3IgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIGNhbiBiZWdpbiB3aXRoICd8Jy4KKworLSBJc3N1ZSAjMzYzMjogZnJvbSB0aGUgZ2RiIGRlYnVnZ2VyLCB0aGUgJ3B5bycgbWFjcm8gY2FuIG5vdyBiZSBjYWxsZWQgd2hlbgorICB0aGUgR0lMIGlzIHJlbGVhc2VkLCBvciBvd25lZCBieSBhbm90aGVyIHRocmVhZC4KKworLSBJc3N1ZSAjNDEyMjogT24gV2luZG93cywgZml4IGEgY29tcGlsYXRpb24gZXJyb3Igd2hlbiB1c2luZyB0aGUKKyAgUHlfVU5JQ09ERV9JU1NQQUNFIG1hY3JvIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUuCisKKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzM3NDU6IEZpeCBoYXNobGliIHRvIGFsd2F5cyByZWplY3QgdW5pY29kZSBhbmQgbm9uIGJ1ZmZlci1hcGkKKyAgc3VwcG9ydGluZyBvYmplY3RzIGFzIGlucHV0IG5vIG1hdHRlciBob3cgaXQgd2FzIGNvbXBpbGVkIChidWlsdCBpbgorICBpbXBsZW1lbnRhdGlvbnMgb3IgZXh0ZXJuYWwgb3BlbnNzbCBsaWJyYXJ5KS4KKworLSBJc3N1ZSAjNDM5NzogRml4IG9jY2FzaW9uYWwgdGVzdF9zb2NrZXQgZmFpbHVyZSBvbiBPUyBYLgorCistIElzc3VlICM0Mjc5OiBGaXggYnVpbGQgb2YgcGFyc2VybW9kdWxlIHVuZGVyIEN5Z3dpbi4KKworLSBJc3N1ZSAjNDc1MTogaGFzaGxpYiBub3cgcmVsZWFzZXMgdGhlIEdJTCB3aGVuIGhhc2hpbmcgbGFyZ2UgYnVmZmVycworICAod2l0aCBhIGhhcmR3aXJlZCB0aHJlc2hvbGQgb2YgMjA0OCBieXRlcyksIGFsbG93aW5nIGJldHRlciBwYXJhbGxlbGl6YXRpb24KKyAgb24gbXVsdGktQ1BVIHN5c3RlbXMuIENvbnRyaWJ1dGVkIGJ5IEx1a2FzIEx1ZWcgKGViZmUpIGFuZCBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjNDA1MTogUHJldmVudCBjb25mbGljdCBvZiBVTklDT0RFIG1hY3JvcyBpbiBjUGlja2xlLgorCistIElzc3VlICM0NzM4OiBFYWNoIHpsaWIgb2JqZWN0IG5vdyBoYXMgYSBzZXBhcmF0ZSBsb2NrLCBhbGxvd2luZyB0byBjb21wcmVzcworICBvciBkZWNvbXByZXNzIHNldmVyYWwgc3RyZWFtcyBhdCBvbmNlIG9uIG11bHRpLUNQVSBzeXN0ZW1zLiBBbHNvLCB0aGUgR0lMCisgIGlzIG5vdyByZWxlYXNlZCB3aGVuIGNvbXB1dGluZyB0aGUgQ1JDIG9mIGEgbGFyZ2UgYnVmZmVyLiBQYXRjaCBieSBlYmZlLgorCistIElzc3VlICM0MjI4OiBQYWNrIG5lZ2F0aXZlIHZhbHVlcyB0aGUgc2FtZSB3YXkgYXMgMi40IGluIHN0cnVjdCdzIEwgZm9ybWF0LgorCistIElzc3VlICMxMDQwMDI2OiBGaXggb3MudGltZXMgcmVzdWx0IG9uIHN5c3RlbXMgd2hlcmUgSFogaXMgaW5jb3JyZWN0LgorCistIElzc3VlcyAjMzE2NywgIzM2ODI6IEZpeCB0ZXN0X21hdGggZmFpbHVyZXMgZm9yIGxvZywgbG9nMTAgb24gU29sYXJpcywKKyAgT3BlbkJTRC4KKworLSBJc3N1ZSAjNDU4MzogYXJyYXkuYXJyYXkgd291bGQgbm90IGFsd2F5cyBwcm9oaWJpdCByZXNpemluZyB3aGVuIGEgYnVmZmVyCisgIGhhcyBiZWVuIGV4cG9ydGVkLCByZXN1bHRpbmcgaW4gYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggd2hlbiBhY2Nlc3NpbmcgdGhlCisgIGJ1ZmZlci4KKworCistIElzc3VlICM1MjI4OiBNYWtlIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdHMgY2FuIG5vdyBiZSBwaWNrbGVkLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjNjE1MjogTmV3IG9wdGlvbiAnLWonLyctLW11bHRpcHJvY2VzcycgZm9yIHJlZ3J0ZXN0IGFsbG93cyBydW5uaW5nCisgIHJlZ3Jlc3Npb24gdGVzdHMgaW4gcGFyYWxsZWwsIHNob3J0ZW5pbmcgdGhlIHRvdGFsIHJ1bnRpbWUuCisKKy0gSXNzdWUgIzU0NTA6IE1vdmVkIHRlc3RzIGludm9sdmluZyBsb2FkaW5nIHRrIGZyb20gTGliL3Rlc3QvdGVzdF90Y2wgdG8KKyAgTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9sb2FkdGsuIFdpdGggdGhpcywgdGhlc2UgdGVzdHMgZGVtb25zdHJhdGUKKyAgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIHRlc3RfdHRrZ3Vpb25seSAoYW5kIG5vdyBhbHNvIHRlc3RfdGspIHdoaWNoIGlzIHRvCisgIHNraXAgdGhlIHRlc3RzIGlmIERJU1BMQVkgaXMgZGVmaW5lZCBidXQgY2FuJ3QgYmUgdXNlZC4KKworLSByZWdydGVzdCBubyBsb25nZXIgdHJlYXRzIEltcG9ydEVycm9yIGFzIGVxdWl2YWxlbnQgdG8gU2tpcFRlc3QuICBJbXBvcnRzCisgIHRoYXQgc2hvdWxkIGNhdXNlIGEgdGVzdCB0byBiZSBza2lwcGVkIGFyZSBub3cgZG9uZSB1c2luZyBpbXBvcnRfbW9kdWxlCisgIGZyb20gdGVzdCBzdXBwb3J0LCB3aGljaCBkb2VzIHRoZSBjb252ZXJzaW9uLgorCistIElzc3VlICM1MDgzOiBOZXcgJ2d1aScgcmVzb3VyY2UgZm9yIHJlZ3J0ZXN0LgorCisKK0RvY3MKKy0tLS0KKworCiBXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjAgZmluYWwKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggYTdhZjJjYy4uZTBhNTRjYiAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwxNDAgKzIsNTkgQEAKIFB5dGhvbiBOZXdzCiArKysrKysrKysrKwogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuNAotPT09PT09PT09PT09PT09PT09PT09PT09PT0KK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4xPworPT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSpSZWxlYXNlIGRhdGU6IFhYLVhYLVhYWFgqCisqTm90IHlldCByZWxlYXNlZCwgc2VlIHNlY3Rpb25zIGJlbG93IGZvciBjaGFuZ2VzIHJlbGVhc2VkIGluIDMuMy4wKgorCisuLiAqUmVsZWFzZSBkYXRlOiBYWC1YWFgtMjAxMioKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzE2MjQxOiBEb2N1bWVudCAtWCBmYXVsdGhhbmRsZXIgY29tbWFuZCBsaW5lIG9wdGlvbi4KKyAgUGF0Y2ggYnkgTWFyZWsgxaB1cHBhLgorCiAtIElzc3VlICM2MDc0OiBFbnN1cmUgY2FjaGVkIGJ5dGVjb2RlIGZpbGVzIGNhbiBhbHdheXMgYmUgdXBkYXRlZCBieSB0aGUKICAgdXNlciB0aGF0IGNyZWF0ZWQgdGhlbSwgZXZlbiB3aGVuIHRoZSBzb3VyY2UgZmlsZSBpcyByZWFkLW9ubHkuCiAKIC0gSXNzdWUgIzE0NzgzOiBJbXByb3ZlIGludCgpIGRvY3N0cmluZyBhbmQgc3dpdGNoIGRvY3N0cmluZ3MgZm9yIHN0cigpLAogICByYW5nZSgpLCBhbmQgc2xpY2UoKSB0byB1c2UgbXVsdGktbGluZSBzaWduYXR1cmVzLgogCistIElzc3VlICMxNjE2MDogU3ViY2xhc3Mgc3VwcG9ydCBub3cgd29ya3MgZm9yIHR5cGVzLlNpbXBsZU5hbWVzcGFjZS4KKwogLSBJc3N1ZSAjMTUzNzk6IEZpeCBwYXNzaW5nIG9mIG5vbi1CTVAgY2hhcmFjdGVycyBhcyBpbnRlZ2VycyBmb3IgdGhlIGNoYXJtYXAKICAgZGVjb2RlciAoYWxyZWFkeSB3b3JraW5nIGFzIHVuaWNvZGUgc3RyaW5ncykuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxMzk5MjogVGhlIHRyYXNoY2FuIG1lY2hhbmlzbSBpcyBub3cgdGhyZWFkLXNhZmUuICBUaGlzIGVsaW1pbmF0ZXMKLSAgc3BvcmFkaWMgY3Jhc2hlcyBpbiBtdWx0aS10aHJlYWQgcHJvZ3JhbXMgd2hlbiBzZXZlcmFsIGxvbmcgZGVhbGxvY2F0b3IKLSAgY2hhaW5zIHJhbiBjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyCi0gIHR5cGVzLgorLSBJc3N1ZSAjMTUxNDQ6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gaGFuZGxpbmcgcG9pbnRlcnMgYXMgaW50ZWdlcgorICB2YWx1ZXMsIGJ5IHVzaW5nIGBQeV91aW50cHRyX3RgIGluc3RlYWQgb2YgYHNpemVfdGAuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTg0NjogRml4IFN5c3RlbUVycm9yIHdoaWNoIGhhcHBlbmVkIHdoZW4gdXNpbmcgYXN0LnBhcnNlIGluIGFuCistIElzc3VlICMxNTk2NTogRXhwbGljaXRseSBjYXN0IGBBVF9GRENXRGAgYXMgKGludCkuICBSZXF1aXJlZCBvbiBTb2xhcmlzIDEwCisgICh3aGljaCBkZWZpbmVzIGBBVF9GRENXRGAgYXMgYGAweGZmZDE5NTUzYGApLCBoYXJtbGVzcyBvbiBvdGhlciBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE1ODM5OiBDb252ZXJ0IFN5c3RlbUVycm9ycyBpbiBgc3VwZXIoKWAgdG8gUnVudGltZUVycm9ycy4KKworLSBJc3N1ZSAjMTU4NDY6IEZpeCBTeXN0ZW1FcnJvciB3aGljaCBoYXBwZW5lZCB3aGVuIHVzaW5nIGBhc3QucGFyc2UoKWAgaW4gYW4KICAgZXhjZXB0aW9uIGhhbmRsZXIgb24gY29kZSB3aXRoIHN5bnRheCBlcnJvcnMuCiAKLS0gSXNzdWUgIzE1NzYxOiBGaXggY3Jhc2ggd2hlbiBQWVRIT05FWEVDVVRBQkxFIGlzIHNldCBvbiBNYWMgT1MgWC4KLQogLSBJc3N1ZSAjMTU4MDE6IE1ha2Ugc3VyZSBtYXBwaW5ncyBwYXNzZWQgdG8gJyUnIGZvcm1hdHRpbmcgYXJlIGFjdHVhbGx5CiAgIHN1YnNjcmlwdGFibGUuCiAKLS0gSXNzdWUgIzE1NzI2OiBGaXggaW5jb3JyZWN0IGJvdW5kcyBjaGVja2luZyBpbiBQeVN0YXRlX0ZpbmRNb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKy0gSXNzdWUgIzE1MTExOiBfX2ltcG9ydF9fIHNob3VsZCBsZXQgSW1wb3J0RXJyb3IgcHJvcGFnYXRlIHdoZW4gYSBtb2R1bGUgdGhhdAorICBpcyBpbXBvcnRlZCBhcyBhIHNpZGUtZWZmZWN0IG9mIHVzaW5nIGZyb21saXN0IHRyaWVzIHRvIGltcG9ydCBhIG1vZHVsZQorICB0aGF0IGNhbm5vdCBiZSBmb3VuZC4KIAotLSBJc3N1ZSAjMTU2MDQ6IFVwZGF0ZSB1c2VzIG9mIFB5T2JqZWN0X0lzVHJ1ZSgpIHRvIGNoZWNrIGZvciBhbmQgaGFuZGxlCi0gIGVycm9ycyBjb3JyZWN0bHkuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMzExOTogc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCi0gIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgotCi0tIElzc3VlICMxNDU3OTogRml4IENWRS0yMDEyLTIxMzU6IHZ1bG5lcmFiaWxpdHkgaW4gdGhlIHV0Zi0xNiBkZWNvZGVyIGFmdGVyCi0gIGVycm9yIGhhbmRsaW5nLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0MDQ6IFJlZmxlYWsgaW4gUHlNZXRob2RPYmplY3QgcmVwci4KLQotLSBJc3N1ZSAjMTUzOTQ6IEFuIGlzc3VlIGluIFB5TW9kdWxlX0NyZWF0ZSB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvCi0gIGJlIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgotCi0tIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZQotICBub24tZGV0ZXJtaW5pc3RpYyB3aGVuIHVzaW5nIHJhbmRvbWl6ZWQgaGFzaGluZyAoLVIpIGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTAyMDogVGhlIHByb2dyYW0gbmFtZSB1c2VkIHRvIHNlYXJjaCBmb3IgUHl0aG9uJ3MgcGF0aCBpcyBub3cKLSAgInB5dGhvbjMiIHVuZGVyIFVuaXgsIG5vdCAicHl0aG9uIi4KLQotLSBJc3N1ZSAjMTU4OTc6IHppcGltcG9ydC5jIGRvZXNuJ3QgY2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZzZWVrKCkuCi0gIFBhdGNoIGJ5IEZlbGlwZSBDcnV6LgotCi0tIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGgsCi0gIHJldHVybiB0aGUgcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KLQotLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCi0gIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCi0gIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgotICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgotCi0tIElzc3VlICMxNTE0MjogRml4IHJlZmVyZW5jZSBsZWFrIHdoZW4gZGVhbGxvY2F0aW5nIGluc3RhbmNlcyBvZiB0eXBlcwotICBjcmVhdGVkIHVzaW5nIFB5VHlwZV9Gcm9tU3BlYygpLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQotICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzE0NzYxOiBGaXggcG90ZW50aWFsIGxlYWsgb24gYW4gZXJyb3IgY2FzZSBpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxNDQzMzogUHJldmVudCBtc3ZjcnQgY3Jhc2ggaW4gaW50ZXJhY3RpdmUgcHJvbXB0IHdoZW4gc3RkaW4KLSAgaXMgY2xvc2VkLgotCi0tIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgotICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCi0KLS0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCi0gIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLQotLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKLSAgd2l0aCB2YWx1ZSAwLgotCi0tIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCi0KLS0gSXNzdWUgIzE0NjA3OiBGaXgga2V5d29yZC1vbmx5IGFyZ3VtZW50cyB3aGljaCBzdGFydGVkIHdpdGggYGBfX2BgLgotCi0tIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCi0gIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCi0gIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCi0KLS0gSXNzdWUgIzE0NDc0OiBTYXZlIGFuZCByZXN0b3JlIGV4Y2VwdGlvbiBzdGF0ZSBpbiB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpCi0gIHdoaWxlIHdyaXRpbmcgZXJyb3IgbWVzc2FnZSBpZiB0aGUgdGhyZWFkIGxlYXZlcyBhIHVuaGFuZGxlZCBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEzMDE5OiBGaXggcG90ZW50aWFsIHJlZmVyZW5jZSBsZWFrcyBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaAotICBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxNDM3ODogRml4IGNvbXBpbGluZyBhc3QuSW1wb3J0RnJvbSBub2RlcyB3aXRoIGEgIl9fZnV0dXJlX18iIHN0cmluZyBhcwotICB0aGUgbW9kdWxlIG5hbWUgdGhhdCB3YXMgbm90IGludGVybmVkLgotCi0tIElzc3VlICMxNDMzMTogVXNlIHNpZ25pZmljYW50bHkgbGVzcyBzdGFjayBzcGFjZSB3aGVuIGltcG9ydGluZyBtb2R1bGVzIGJ5Ci0gIGFsbG9jYXRpbmcgcGF0aCBidWZmZXJzIG9uIHRoZSBoZWFwIGluc3RlYWQgb2YgdGhlIHN0YWNrLgotCi0tIElzc3VlICMxNDMzNDogUHJldmVudCBpbiBhIHNlZ2ZhdWx0IGluIHR5cGUuX19nZXRhdHRyaWJ1dGVfXyB3aGVuIGl0IHdhcyBub3QKLSAgcGFzc2VkIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKLSAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCi0KLS0gSXNzdWUgIzE0MTcyOiBGaXggcmVmZXJlbmNlIGxlYWsgd2hlbiBtYXJzaGFsbGluZyBhIGJ1ZmZlci1saWtlIG9iamVjdAotICAob3RoZXIgdGhhbiBhIGJ5dGVzIG9iamVjdCkuCi0KLS0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCi0gIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzE0NDcxOiBGaXggYSBwb3NzaWJsZSBidWZmZXIgb3ZlcnJ1biBpbiB0aGUgd2lucmVnIG1vZHVsZS4KIAogTGlicmFyeQogLS0tLS0tLQogCiAtIElzc3VlICMxNjI1MDogRml4IFVSTEVycm9yIGludm9jYXRpb24gd2l0aCBwcm9wZXIgYXJncy4KIAotLSBJc3N1ZSAjMTYzMDU6IEZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBvY2N1cnJpbmcgd2hlbiBpbnRlcnJ1cHRpbmcKLSAgbWF0aC5mYWN0b3JpYWwuCistIElzc3VlICMxNjExNjogRml4IGluY2x1ZGUgYW5kIGxpYnJhcnkgcGF0aHMgdG8gYmUgY29ycmVjdCB3aGVuIGJ1aWxkaW5nIEMKKyAgZXh0ZW5zaW9ucyBpbiB2ZW52cy4KKworLSBJc3N1ZSAjMTYyNDU6IEZpeCB0aGUgdmFsdWUgb2YgYSBmZXcgZW50aXRpZXMgaW4gaHRtbC5lbnRpdGllcy5odG1sNS4KIAogLSBJc3N1ZSAjMTQzOTg6IEZpeCBzaXplIHRydW5jYXRpb24gYW5kIG92ZXJmbG93IGJ1Z3MgaW4gdGhlIGJ6MiBtb2R1bGUuCiAKQEAgLTE0Nyw5NCArNjYsODIzIEBACiAKIC0gSXNzdWUgIzE2MTc2OiBQcm9wZXJseSBpZGVudGlmeSBXaW5kb3dzIDggdmlhIHBsYXRmb3JtLnBsYXRmb3JtKCkKIAotLSBJc3N1ZSAjMTYxMTQ6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgcHJvdmlkZXMgYSBtaXNsZWFkaW5nCi0gIGVycm9yIG1lc3NhZ2Ugc3RhdGluZyB0aGF0IGFyZ3NbMF0gZGlkIG5vdCBleGlzdCB3aGVuIGVpdGhlciB0aGUgY3dkIG9yCi0gIGV4ZWN1dGFibGUga2V5d29yZCBhcmd1bWVudHMgc3BlY2lmaWVkIGEgcGF0aCB0aGF0IGRpZCBub3QgZXhpc3QuCistIElzc3VlICMxNjExNDogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vIGxvbmdlciBwcm92aWRlcyBhIG1pc2xlYWRpbmcgZXJyb3IKKyAgbWVzc2FnZSBzdGF0aW5nIHRoYXQgYXJnc1swXSBkaWQgbm90IGV4aXN0IHdoZW4gZWl0aGVyIHRoZSBjd2Qgb3IgZXhlY3V0YWJsZQorICBrZXl3b3JkIGFyZ3VtZW50cyBzcGVjaWZpZWQgYSBwYXRoIHRoYXQgZGlkIG5vdCBleGlzdC4KIAotLSBJc3N1ZSAjMTU3NTY6IHN1YnByb2Nlc3MucG9sbCgpIG5vdyBwcm9wZXJseSBoYW5kbGVzIGVycm5vLkVDSElMRCB0bwotICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdAotICBiZSB3YWl0ZWQgb24uCistIElzc3VlICMxNjE2OTogRml4IGN0eXBlcy5XaW5FcnJvcigpJ3MgY29uZnVzaW9uIGJldHdlZW4gZXJybm8gYW5kIHdpbmVycm9yLgogCi0tIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIFRleHRUZXN0UmVzdWx0Ll9faW5pdF9fIHN1cGVyIGNhbGwKKy0gSXNzdWUgIzE2MDg5OiBBbGxvdyBFbGVtZW50VHJlZS5UcmVlQnVpbGRlciB0byB3b3JrIGFnYWluIHdpdGggYSBub24tRWxlbWVudAorICBlbGVtZW50X2ZhY3RvcnkgKGZpeGVzIGEgcmVncmVzc2lvbiBpbiBTaW1wbGVUQUwpLgogCi0tIElzc3VlICMxNTIyMjogSW5zZXJ0IGJsYW5rIGxpbmUgYWZ0ZXIgZWFjaCBtZXNzYWdlIGluIG1ib3ggbWFpbGJveGVzCi0KLS0gSXNzdWUgIzE2MDEzOiBGaXggQ1NWIFJlYWRlciBwYXJzaW5nIGlzc3VlIHdpdGggZW5kaW5nIHF1b3RlIGNoYXJhY3RlcnMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDIxOiBmaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBDYWxlbmRhci5pdGVybW9udGhkYXRlcygpIGFmdGVyCi0gIGRhdGV0aW1lLk1BWFlFQVIuICBQYXRjaCBieSBDw6lkcmljIEtyaWVyLgotCi0tIElzc3VlICMxNTk3MDogeG1sLmV0cmVlLkVsZW1lbnRUcmVlIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAotICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCi0KLS0gSXNzdWUgIzE1ODQyOiB0aGUgU29ja2V0SU8ue3JlYWRhYmxlLHdyaXRhYmxlLHNlZWthYmxlfSBtZXRob2RzIG5vdwotICByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIGZpbGUtbGlrZSBvYmplY3QgaXMgY2xvc2VkLiAgUGF0Y2ggYnkgQWxlc3NhbmRybwotICBNb3VyYS4KLQotLSBJc3N1ZSAjMTU4ODE6IEZpeGVkIGF0ZXhpdCBob29rIGluIG11bHRpcHJvY2Vzc2luZy4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IENocmlzIE1jRG9ub3VnaC4KLQotLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiAvZGV2L3VyYW5kb20gY2Fubm90Ci0gIGJlIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KLQotLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YgQnl0ZXNJTwotICBhbmQgU3RyaW5nSU8gb2JqZWN0cyBub3cgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBvYmplY3QgaGFzIGJlZW4gY2xvc2VkLgotICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgotCi0tIElzc3VlICMxNTUwOTogd2ViYnJvd3Nlci5Vbml4QnJvd3NlciBubyBsb25nZXIgcGFzc2VzIGVtcHR5IGFyZ3VtZW50cyB0bwotICBQb3BlbiB3aGVuICVhY3Rpb24gc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCistIElzc3VlICMxNjAzNDogRml4IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb25zIGluIHRoZSBuZXcgYGJ6Mi5CWjJGaWxlYAorICBpbXBsZW1lbnRhdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAogLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCiAgIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KIAotLSBJc3N1ZSAjMTI3NzYsIzExODM5OiBjYWxsIGFyZ3BhcnNlIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieSBhZGRfYXJndW1lbnQpCi0gIG9ubHkgb25jZS4gQmVmb3JlLCB0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZSBjYXNlIHdoZXJlIHRoZQotICBkZWZhdWx0IHdhcyBzcGVjaWZpZWQgYW5kIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4gYXMgd2VsbC4gIFRoaXMgd2FzCi0gIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHRoZSBGaWxlVHlwZSB0eXBlLCBhcyBhIGRlZmF1bHQgZmlsZSB3b3VsZCBhbHdheXMKLSAgYmUgb3BlbmVkLCBldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCistIElzc3VlICMxNTc1NjogYHN1YnByb2Nlc3MucG9sbCgpYCBub3cgcHJvcGVybHkgaGFuZGxlcyBgZXJybm8uRUNISUxEYCB0bworICByZXR1cm4gYSByZXR1cm5jb2RlIG9mIDAgd2hlbiB0aGUgY2hpbGQgaGFzIGFscmVhZHkgZXhpdGVkIG9yIGNhbm5vdCBiZSB3YWl0ZWQKKyAgb24uCiAKLS0gSXNzdWUgIzE1OTA2OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKLSAgd2hlbiBhY3Rpb249J2FwcGVuZCcsIHR5cGU9J3N0cicgYW5kIGRlZmF1bHQ9W10uCistIElzc3VlICMxNTMyMzogSW1wcm92ZSBmYWlsdXJlIG1lc3NhZ2Ugb2YgYE1vY2suYXNzZXJ0X2NhbGxlZF9vbmNlX3dpdGgoKWAuCiAKLS0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMKLSAgY29tcGlsZWQgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyCistIElzc3VlICMxNjA2NDogYGB1bml0dGVzdCAtbWBgIGNsYWltcyBleGVjdXRhYmxlIGlzICJweXRob24iLCBub3QgInB5dGhvbjMiLgorCistIElzc3VlICMxMjM3NjogUGFzcyBvbiBwYXJhbWV0ZXJzIGluIGBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXygpYCBzdXBlciBjYWxsLgorCistIElzc3VlICMxNTIyMjogSW5zZXJ0IGJsYW5rIGxpbmUgYWZ0ZXIgZWFjaCBtZXNzYWdlIGluIG1ib3ggbWFpbGJveGVzLgorCistIElzc3VlICMxNjAxMzogRml4IGBjc3YuUmVhZGVyYCBwYXJzaW5nIGlzc3VlIHdpdGggZW5kaW5nIHF1b3RlIGNoYXJhY3RlcnMuCisgIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1NDIxOiBGaXggYW4gT3ZlcmZsb3dFcnJvciBpbiBgQ2FsZW5kYXIuaXRlcm1vbnRoZGF0ZXMoKWAgYWZ0ZXIKKyAgYGRhdGV0aW1lLk1BWFlFQVJgLiAgUGF0Y2ggYnkgQ8OpZHJpYyBLcmllci4KKworLSBJc3N1ZSAjMTU5NzA6IGB4bWwuZXRyZWUuRWxlbWVudFRyZWVgIG5vdyBzZXJpYWxpemVzIGNvcnJlY3RseSB0aGUgZW1wdHkgSFRNTAorICBlbGVtZW50cyAnbWV0YScgYW5kICdwYXJhbScuCisKKy0gSXNzdWUgIzE1ODQyOiBUaGUgYFNvY2tldElPLntyZWFkYWJsZSx3cml0YWJsZSxzZWVrYWJsZX1gIG1ldGhvZHMgbm93IHJhaXNlCisgIFZhbHVlRXJyb3Igd2hlbiB0aGUgZmlsZS1saWtlIG9iamVjdCBpcyBjbG9zZWQuICBQYXRjaCBieSBBbGVzc2FuZHJvIE1vdXJhLgorCistIElzc3VlICMxNTg3NjogRml4IGEgcmVmbGVhayBpbiB0aGUgYGN1cnNlc2AgbW9kdWxlOiB3aW5kb3cuZW5jb2RpbmcuCisKKy0gSXNzdWUgIzE1ODgxOiBGaXggYGF0ZXhpdGAgaG9vayBpbiBgbXVsdGlwcm9jZXNzaW5nYC4gIE9yaWdpbmFsIHBhdGNoIGJ5IENocmlzCisgIE1jRG9ub3VnaC4KKworLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YKKyAgYGlvLkJ5dGVzSU9gIGFuZCBgaW8uU3RyaW5nSU9gIG9iamVjdHMgbm93IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgb2JqZWN0CisgIGhhcyBiZWVuIGNsb3NlZC4gIFBhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCisKKy0gSXNzdWUgIzE2MTI2OiBQeUVycl9Gb3JtYXQgZm9ybWF0IG1pc21hdGNoIGluIF90ZXN0Y2FwaW1vZHVsZS5jLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQ0NzogVXNlIGBzdWJwcm9jZXNzLkRFVk5VTExgIGluIHdlYmJyb3dzZXIsIGluc3RlYWQgb2Ygb3BlbmluZworICBgb3MuZGV2bnVsbGAgZXhwbGljaXRseSBhbmQgbGVhdmluZyBpdCBvcGVuLgorCistIElzc3VlICMxNTUwOTogYHdlYmJyb3dzZXIuVW5peEJyb3dzZXJgIG5vIGxvbmdlciBwYXNzZXMgZW1wdHkgYXJndW1lbnRzIHRvCisgIFBvcGVuIHdoZW4gYGAlYWN0aW9uYGAgc3Vic3RpdHV0aW9ucyBwcm9kdWNlIGVtcHR5IHN0cmluZ3MuCisKKy0gSXNzdWUgIzEyNzc2LCBpc3N1ZSAjMTE4Mzk6IENhbGwgYGFyZ3BhcnNlYCB0eXBlIGZ1bmN0aW9uIChzcGVjaWZpZWQgYnkKKyAgYWRkX2FyZ3VtZW50KSBvbmx5IG9uY2UuICBCZWZvcmUsIHRoZSB0eXBlIGZ1bmN0aW9uIHdhcyBjYWxsZWQgdHdpY2UgaW4gdGhlCisgIGNhc2Ugd2hlcmUgdGhlIGRlZmF1bHQgd2FzIHNwZWNpZmllZCBhbmQgdGhlIGFyZ3VtZW50IHdhcyBnaXZlbiBhcyB3ZWxsLiAgVGhpcworICB3YXMgZXNwZWNpYWxseSBwcm9ibGVtYXRpYyBmb3IgdGhlIEZpbGVUeXBlIHR5cGUsIGFzIGEgZGVmYXVsdCBmaWxlIHdvdWxkCisgIGFsd2F5cyBiZSBvcGVuZWQsIGV2ZW4gaWYgYSBmaWxlIGFyZ3VtZW50IHdhcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KKworLSBJc3N1ZSAjMTU5MDY6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGFyZ3BhcnNlYCBjYXVzZWQgYnkgdGhlIHByZWNlZGluZyBjaGFuZ2UsCisgIHdoZW4gYGBhY3Rpb249J2FwcGVuZCdgYCwgYGB0eXBlPSdzdHInYGAgYW5kIGBgZGVmYXVsdD1bXWBgLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTYxMTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgZXhlY3V0YWJsZSBhcmd1bWVudCB0bworICBzdWJwcm9jZXNzLlBvcGVuKCkuICBJbml0aWFsIHBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKKy0gSXNzdWUgIzE1MzA0OiBGaXggd2FybmluZyBtZXNzYWdlIHdoZW4gYG9zLmNoZGlyKClgIGZhaWxzIGluc2lkZQorICBgdGVzdC5zdXBwb3J0LnRlbXBfY3dkKClgLiAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBgVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wKClgLiBQYXRjaCBieQorICBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTU1NzogQWRkIGEgdGVzdCBzdWl0ZSBmb3IgdGhlIGB3ZWJicm93c2VyYCBtb2R1bGUsIHRoYW5rcyB0byBBbnRvbgorICBCYXJrb3Zza3kuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMxNjI2MjogZml4IG91dC1vZi1zcmMtdHJlZSBidWlsZHMsIGlmIG1lcmN1cmlhbCBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMxNTI5ODogZW5zdXJlIF9zeXNjb25maWdkYXRhIGlzIGdlbmVyYXRlZCBpbiBidWlsZCBkaXJlY3RvcnksIG5vdAorICBzb3VyY2UgZGlyZWN0b3J5LgorCistIElzc3VlICMxNTgzMzogRml4IGEgcmVncmVzc2lvbiBpbiAzLjMgdGhhdCByZXN1bHRlZCBpbiBleGNlcHRpb25zIGJlaW5nCisgIHJhaXNlZCBpZiBpbXBvcnRsaWIgZmFpbGVkIHRvIHdyaXRlIGJ5dGUtY29tcGlsZWQgZmlsZXMuICBUaGlzIGFmZmVjdGVkCisgIGF0dGVtcHRzIHRvIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZC1vbmx5IHNvdXJjZSBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzE1OTIzOiBGaXggYSBtaXN0YWtlIGluIGBgYXNkbF9jLnB5YGAgdGhhdCByZXN1bHRlZCBpbiBhIFR5cGVFcnJvcgorICBhZnRlciAyODAxYmY4NzVhMjQgKHNlZSAjMTU4MDEpLgorCistIElzc3VlICMxNTgxOTogTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWQtb25seQorICBzb3VyY2UgZGlyZWN0b3J5LiAgKFNvbWV3aGF0IHJlbGF0ZWQgdG8gaXNzdWUgIzk4NjAuKQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gQWRkaXRpb25hbCBjb21tZW50cyBhbmQgc29tZSBzdHlsZSBjaGFuZ2VzIGluIHRoZSBjb25jdXJyZW50LmZ1dHVyZXMgVVJMCisgIHJldHJpZXZhbCBleGFtcGxlCisKKy0gSXNzdWUgIzE2MTE1OiBJbXByb3ZlIHN1YnByb2Nlc3MuUG9wZW4oKSBkb2N1bWVudGF0aW9uIGFyb3VuZCBhcmdzLCBzaGVsbCwKKyAgYW5kIGV4ZWN1dGFibGUgYXJndW1lbnRzLgorCistIElzc3VlICMxNTUzMzogQ2xhcmlmeSBkb2NzIGFuZCBhZGQgdGVzdHMgZm9yIGBzdWJwcm9jZXNzLlBvcGVuKClgJ3MgY3dkCisgIGFyZ3VtZW50LgorCistIElzc3VlICMxNTk3OTogSW1wcm92ZSB0aW1laXQgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTYwMzY6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBidWlsdC1pbiBgaW50KClgJ3Mgc2lnbmF0dXJlIGFuZAorICBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzE1OTM1OiBDbGFyaWZpY2F0aW9uIG9mIGBhcmdwYXJzZWAgZG9jcywgcmU6IGFkZF9hcmd1bWVudCgpIHR5cGUgYW5kCisgIGRlZmF1bHQgYXJndW1lbnRzLiAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCisKKy0gSXNzdWUgIzExOTY0OiBEb2N1bWVudCBhIGNoYW5nZSBpbiB2My4yIHRvIHRoZSBiZWhhdmlvciBvZiB0aGUgaW5kZW50CisgIHBhcmFtZXRlciBvZiBqc29uIGVuY29kaW5nIG9wZXJhdGlvbnMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNTM3ODogRml4IFRvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjktU2VwLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNjA0NjogRml4IGxvYWRpbmcgc291cmNlbGVzcyBsZWdhY3kgLnB5byBmaWxlcy4KKworLSBJc3N1ZSAjMTYwNjA6IEZpeCByZWZjb3VudGluZyBidWcgd2hlbiBgX190cnVuY19fKClgIHJldHVybnMgYW4gb2JqZWN0IHdob3NlCisgIGBfX2ludF9fKClgIGdpdmVzIGEgbm9uLWludGVnZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTYwMTI6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gcHlleHBhdC4gVGhlIHBhcnNlcidzIGBVc2VGb3JlaWduRFREKClgCisgIG1ldGhvZCBkb2Vzbid0IHJlcXVpcmUgYW4gYXJndW1lbnQgYWdhaW4uCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMz8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIzLVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU5MDA6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBgUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoKWAuCisKKy0gSXNzdWUgIzE1OTI2OiBGaXggY3Jhc2ggYWZ0ZXIgbXVsdGlwbGUgcmVpbml0aWFsaXphdGlvbnMgb2YgdGhlIGludGVycHJldGVyLgorCistIElzc3VlICMxNTg5NTogRml4IEZJTEUgcG9pbnRlciBsZWFrIGluIG9uZSBlcnJvciBicmFuY2ggb2YKKyAgYFB5UnVuX1NpbXBsZUZpbGVFeEZsYWdzKClgIHdoZW4gZmlsZW5hbWUgcG9pbnRzIHRvIGEgcHljL3B5byBmaWxlLCBjbG9zZWl0IGlzCisgIGZhbHNlIGFuIGFuZCBzZXRfbWFpbl9sb2FkZXIoKSBmYWlscy4KKworLSBGaXhlcyBmb3IgYSBmZXcgY3Jhc2ggYW5kIG1lbW9yeSBsZWFrIHJlZ3Jlc3Npb25zIGZvdW5kIGJ5IENvdmVyaXR5LgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE1ODgyOiBDaGFuZ2UgYF9kZWNpbWFsYCB0byBhY2NlcHQgYW55IGNvZWZmaWNpZW50IHR1cGxlIHdoZW4KKyAgY29uc3RydWN0aW5nIGluZmluaXRpZXMuIFRoaXMgaXMgZG9uZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICBkZWNpbWFsLnB5OiBJbmZpbml0eSBjb2VmZmljaWVudHMgYXJlIHVuZGVmaW5lZCBpbiBfZGVjaW1hbCAoaW4gYWNjb3JkYW5jZQorICB3aXRoIHRoZSBzcGVjaWZpY2F0aW9uKS4KKworLSBJc3N1ZSAjMTU5MjU6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gYGVtYWlsLnV0aWxgIHdoZXJlIHRoZSBgcGFyc2VkYXRlKClgIGFuZAorICBgcGFyc2VkYXRlX3R6KClgIGZ1bmN0aW9ucyBkaWQgbm90IHJldHVybiBOb25lIGFueW1vcmUgd2hlbiB0aGUgYXJndW1lbnQgY291bGQKKyAgbm90IGJlIHBhcnNlZC4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1OTczOiBGaXggYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBjb21wYXJpbmcgZGF0ZXRpbWUgdGltZXpvbmUKKyAgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTU5Nzc6IEZpeCBtZW1vcnkgbGVhayBpbiBNb2R1bGVzL19zc2wuYyB3aGVuIHRoZSBmdW5jdGlvbgorICBfc2V0X25wbl9wcm90b2NvbHMoKSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHRoYW5rcyB0byBEYW5pZWwgU29tbWVybWFubi4KKworLSBJc3N1ZSAjMTU5Njk6IGBmYXVsdGhhbmRsZXJgIG1vZHVsZTogcmVuYW1lIGR1bXBfdHJhY2ViYWNrc19sYXRlcigpIHRvCisgIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkgYW5kIGNhbmNlbF9kdW1wX3RyYWNlYmFja3NfbGF0ZXIoKSB0bworICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKS4KKworLSBfZGVjaW1hbCBtb2R1bGU6IHVzZSBvbmx5IEMgODkgc3R5bGUgY29tbWVudHMuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgUmVsZWFzZSBDYW5kaWRhdGUgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDA5LVNlcC0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTM5OTI6IFRoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzCisgIHNwb3JhZGljIGNyYXNoZXMgaW4gbXVsdGktdGhyZWFkIHByb2dyYW1zIHdoZW4gc2V2ZXJhbCBsb25nIGRlYWxsb2NhdG9yIGNoYWlucworICByYW4gY29uY3VycmVudGx5IGFuZCBpbnZvbHZlZCBzdWJjbGFzc2VzIG9mIGJ1aWx0LWluIGNvbnRhaW5lciB0eXBlcy4KKworLSBJc3N1ZSAjMTU3ODQ6IE1vZGlmeSBgT1NFcnJvcmAuX19zdHJfXygpIHRvIGJldHRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGVycm5vCisgIGVycm9yIG51bWJlcnMgYW5kIFdpbmRvd3MgZXJyb3IgbnVtYmVycy4KKworLSBJc3N1ZSAjMTU3ODE6IEZpeCB0d28gc21hbGwgcmFjZSBjb25kaXRpb25zIGluIGltcG9ydCdzIG1vZHVsZSBsb2NraW5nLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE1ODQ3OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlLCB3aGljaCBkaWQgbm90IGFjY2VwdCB0dXBsZXMgYXMKKyAgYXJndW1lbnQgbGlzdHMgYW55bW9yZS4KKworLSBJc3N1ZSAjMTU4Mjg6IFJlc3RvcmUgc3VwcG9ydCBmb3IgQyBleHRlbnNpb25zIGluIGBpbXAubG9hZF9tb2R1bGUoKWAuCisKKy0gSXNzdWUgIzE1MzQwOiBGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gYGAvZGV2L3VyYW5kb21gYCBjYW5ub3QgYmUKKyAgb3BlbmVkLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorCistIElzc3VlICMxMDY1MDogRGVwcmVjYXRlIHRoZSB3YXRjaGV4cCBwYXJhbWV0ZXIgb2YgdGhlIGBEZWNpbWFsLnF1YW50aXplKClgCisgIG1ldGhvZC4KKworLSBJc3N1ZSAjMTU3ODU6IE1vZGlmeSBgd2luZG93LmdldF93Y2goKWAgQVBJIG9mIHRoZSBjdXJzZXMgbW9kdWxlOiByZXR1cm4gYQorICBjaGFyYWN0ZXIgZm9yIG1vc3Qga2V5cywgYW5kIGFuIGludGVnZXIgZm9yIHNwZWNpYWwga2V5cywgaW5zdGVhZCBvZiBhbHdheXMKKyAgcmV0dXJuaW5nIGFuIGludGVnZXIuIFNvIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBkaXN0aW5ndWlzaCBzcGVjaWFsIGtleXMgbGlrZQorICBrZXlwYWQga2V5cy4KKworLSBJc3N1ZSAjMTQyMjM6IEZpeCBgd2luZG93LmFkZGNoKClgIG9mIHRoZSBjdXJzZXMgbW9kdWxlIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMKKyAgbGlrZSBjdXJzZXMuQUNTX0hMSU5FOiB0aGUgUHl0aG9uIGZ1bmN0aW9uIGFkZGNoKGludCkgYW5kIGFkZGNoKGJ5dGVzKSBpcyBub3cKKyAgY2FsbGluZyB0aGUgQyBmdW5jdGlvbiB3YWRkY2goKS9tdndhZGRjaCgpIChhcyBpdCB3YXMgZG9uZSBpbiBQeXRob24gMy4yKSwKKyAgaW5zdGVhZCBvZiB3YWRkX3djaCgpL212d2FkZF93Y2goKS4gVGhlIFB5dGhvbiBmdW5jdGlvbiBhZGRjaChzdHIpIGlzIHN0aWxsCisgIGNhbGxpbmcgdGhlIEMgZnVuY3Rpb24gd2FkZF93Y2goKS9tdndhZGRfd2NoKCkgaWYgdGhlIFB5dGhvbiBjdXJzZXMgaXMgbGlua2VkCisgIHRvIGxpYm5jdXJzZXN3LgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTU4MjI6IFJlYWxseSBlbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZAorICAocmVwbGFjZXMgZml4ZXMgZm9yIElzc3VlICMxNTY0NSkuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU4MTQ6IFRoZSBtZW1vcnl2aWV3IGVuaGFuY2VtZW50cyBpbiAzLjMuMCBhY2NpZGVudGFsbHkgcGVybWl0dGVkIHRoZQorICBoYXNoaW5nIG9mIG11bHRpLWRpbWVuc2lvbmFsIG1lbW9ydmlld3MgYW5kIG1lbW9yeXZpZXdzIHdpdGggbXVsdGktYnl0ZSBpdGVtCisgIGZvcm1hdHMuIFRoZSBpbnRlbmRlZCByZXN0cmljdGlvbnMgaGF2ZSBub3cgYmVlbiBkb2N1bWVudGVkIC0gdGhleSB3aWxsIGJlCisgIGNvcnJlY3RseSBlbmZvcmNlZCBpbiAzLjMuMS4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBSZWxlYXNlIENhbmRpZGF0ZSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjUtQXVnLTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTU3MzogbWVtb3J5dmlldyBjb21wYXJpc29ucyBhcmUgbm93IHBlcmZvcm1lZCBieSB2YWx1ZSB3aXRoIGZ1bGwKKyAgc3VwcG9ydCBmb3IgYW55IHZhbGlkIHN0cnVjdCBtb2R1bGUgZm9ybWF0IGRlZmluaXRpb24uCisKKy0gSXNzdWUgIzE1MzE2OiBXaGVuIGFuIGl0ZW0gaW4gdGhlIGZyb21saXN0IGZvciBgX19pbXBvcnRfXygpYCBkb2Vzbid0IGV4aXN0LAorICBkb24ndCByYWlzZSBhbiBlcnJvciwgYnV0IGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgYXMgcGFydCBvZiBhbiBpbXBvcnQgZG8KKyAgbGV0IHRoYXQgcHJvcGFnYXRlLgorCistIElzc3VlICMxNTc3ODogRW5zdXJlIHRoYXQgYGBzdHIoSW1wb3J0RXJyb3IobXNnKSlgYCByZXR1cm5zIGEgc3RyIGV2ZW4gd2hlbgorICBtc2cgaXNuJ3QgYSBzdHIuCisKKy0gSXNzdWUgIzIwNTE6IFNvdXJjZSBmaWxlIHBlcm1pc3Npb24gYml0cyBhcmUgb25jZSBhZ2FpbiBjb3JyZWN0bHkgY29waWVkIHRvCisgIHRoZSBjYWNoZWQgYnl0ZWNvZGUgZmlsZS4gKFRoZSBtaWdyYXRpb24gdG8gaW1wb3J0bGliIHJlaW50cm9kdWNlZCB0aGlzCisgIHByb2JsZW0gYmVjYXVzZSB0aGVzZSB3YXMgbm8gcmVncmVzc2lvbiB0ZXN0LiBBIHRlc3QgaGFzIGJlZW4gYWRkZWQgYXMgcGFydCBvZgorICB0aGlzIHBhdGNoKQorCistIElzc3VlICMxNTc2MTogRml4IGNyYXNoIHdoZW4gYGBQWVRIT05FWEVDVVRBQkxFYGAgaXMgc2V0IG9uIE1hYyBPUyBYLgorCistIElzc3VlICMxNTcyNjogRml4IGluY29ycmVjdCBib3VuZHMgY2hlY2tpbmcgaW4gUHlTdGF0ZV9GaW5kTW9kdWxlLiAgUGF0Y2ggYnkKKyAgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgYFB5T2JqZWN0X0lzVHJ1ZSgpYCB0byBjaGVjayBmb3IgYW5kIGhhbmRsZQorICBlcnJvcnMgY29ycmVjdGx5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ4NDY6IGBpbXBvcnRsaWIuRmlsZUZpbmRlcmAgbm93IGhhbmRsZXMgdGhlIGNhc2Ugd2hlcmUgdGhlIGRpcmVjdG9yeQorICBiZWluZyBzZWFyY2hlZCBpcyByZW1vdmVkIGFmdGVyIGEgcHJldmlvdXMgaW1wb3J0IGF0dGVtcHQuCisKK0xpYnJhcnkKKy0tLS0tLS0KKworLSBJc3N1ZSAjMTMzNzA6IEVuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZAorICB1c2luZyB0aGUgY2xhbmcgY29tcGlsZXIuCisKKy0gSXNzdWUgIzEzMDcyOiBUaGUgYXJyYXkgbW9kdWxlJ3MgJ3UnIGZvcm1hdCBjb2RlIGlzIG5vdyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlCisgIHJlbW92ZWQgaW4gUHl0aG9uIDQuMC4KIAogLSBJc3N1ZSAjMTU1NDQ6IEZpeCBEZWNpbWFsLl9fZmxvYXRfXyB0byB3b3JrIHdpdGggcGF5bG9hZC1jYXJyeWluZyBOYU5zLgogCi0tIElzc3VlICMxNTI0OTogQnl0ZXNHZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIEZyb20gbGluZXMgKHdoZW4KKy0gSXNzdWUgIzE1Nzc2OiBBbGxvdyBweXZlbnYgdG8gd29yayBpbiBleGlzdGluZyBkaXJlY3Rvcnkgd2l0aCAtLWNsZWFuLgorCistIElzc3VlICMxNTI0OTogZW1haWwncyBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IG1hbmdsZXMgRnJvbSBsaW5lcyAod2hlbgogICByZXF1ZXN0ZWQpIGV2ZW4gaWYgdGhlIGJvZHkgY29udGFpbnMgdW5kZWNvZGFibGUgYnl0ZXMuCiAKIC0gSXNzdWUgIzE1Nzc3OiBGaXggYSByZWZsZWFrIGluIF9wb3NpeHN1YnByb2Nlc3MuCiAKKy0gSXNzdWUgIyM2NjUxOTQ6IFVwZGF0ZSBgZW1haWwudXRpbHMubG9jYWx0aW1lYCB0byB1c2UgZGF0ZXRpbWUuYXN0aW1lem9uZSBhbmQKKyAgY29ycmVjdGx5IGhhbmRsZSBoaXN0b3JpYyBjaGFuZ2VzIGluIFVUQyBvZmZzZXRzLgorCiAtIElzc3VlICMxNTE5OTogRml4IEphdmFTY3JpcHQncyBkZWZhdWx0IE1JTUUgdHlwZSB0byBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LgogICBQYXRjaCBieSBCb2h1c2xhdiBLYWJyZGEuCiAKLS0gSXNzdWUgIzEzNTc5OiBzdHJpbmcuRm9ybWF0dGVyIG5vdyB1bmRlcnN0YW5kcyB0aGUgJ2EnIGNvbnZlcnNpb24gc3BlY2lmaWVyLgorLSBJc3N1ZSAjMTI2NDM6IGBjb2RlLkludGVyYWN0aXZlQ29uc29sZWAgbm93IHJlc3BlY3RzIGBzeXMuZXhjZXB0aG9va2Agd2hlbgorICBkaXNwbGF5aW5nIGV4Y2VwdGlvbnMuICBQYXRjaCBieSBBYXJvbiBJbGVzLgogCi0tIElzc3VlICMxNTc5MzogU3RhY2sgY29ycnVwdGlvbiBpbiBzc2wuUkFORF9lZ2QoKS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKy0gSXNzdWUgIzEzNTc5OiBgc3RyaW5nLkZvcm1hdHRlcmAgbm93IHVuZGVyc3RhbmRzIHRoZSAnYScgY29udmVyc2lvbiBzcGVjaWZpZXIuCiAKLS0gSXNzdWUgIzE1NTk1OiBGaXggc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKLSAgZm9yIGNlcnRhaW4gbG9jYWxlcyAodXRmLTE2IGFuZCB1dGYtMzIgZmFtaWx5KS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCistIElzc3VlICMxNTU5NTogRml4IGBgc3VicHJvY2Vzcy5Qb3Blbih1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSlgYCBmb3IgY2VydGFpbgorICBsb2NhbGVzICh1dGYtMTYgYW5kIHV0Zi0zMiBmYW1pbHkpLiBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KIAogLSBJc3N1ZSAjMTU0Nzc6IEluIGNtYXRoIGFuZCBtYXRoIG1vZHVsZXMsIGFkZCB3b3JrYXJvdW5kIGZvciBwbGF0Zm9ybXMgd2hvc2UKICAgc3lzdGVtLXN1cHBsaWVkIGxvZzFwIGZ1bmN0aW9uIGRvZXNuJ3QgcmVzcGVjdCBzaWducyBvZiB6ZXJvcy4KIAorLSBJc3N1ZSAjMTU3MTU6IGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYCB3aWxsIHNpbGVuY2UgYW4gSW1wb3J0RXJyb3Igd2hlbiB0aGUKKyAgdXNlIG9mIGZyb21saXN0IGxlYWRzIHRvIGEgZmFpbGVkIGltcG9ydC4KKworLSBJc3N1ZSAjMTQ2Njk6IEZpeCBwaWNrbGluZyBvZiBjb25uZWN0aW9ucyBhbmQgc29ja2V0cyBvbiBNYWMgT1MgWCBieQorICBzZW5kaW5nL3JlY2VpdmluZyBhbiBhY2tub3dsZWRnbWVudCBhZnRlciBmaWxlIGRlc2NyaXB0b3IgdHJhbnNmZXIuCisgIFRlc3RQaWNrbGluZ0Nvbm5lY3Rpb24gaGFzIGJlZW4gcmVlbmFibGVkIGZvciBNYWMgT1MgWC4KKwogLSBJc3N1ZSAjMTEwNjI6IEZpeCBhZGRpbmcgYSBtZXNzYWdlIGZyb20gZmlsZSB0byBCYWJ5bCBtYWlsYm94LgogCi0tIElzc3VlICMxNTY0NjogUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcKLSAgbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyciCi0gIGlkaW9tLgorLSBJc3N1ZSAjMTU2NDY6IFByZXZlbnQgZXF1aXZhbGVudCBvZiBhIGZvcmsgYm9tYiB3aGVuIHVzaW5nIGBtdWx0aXByb2Nlc3NpbmdgCisgIG9uIFdpbmRvd3Mgd2l0aG91dCB0aGUgYGBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nYGAgaWRpb20uCiAKLS0gSXNzdWUgIzE1NDI0OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLgotICBQYXRjaCBieSBMdWR3aWcgSMOkaG5lLgorLSBJc3N1ZSAjMTU2Nzg6IEZpeCBJRExFIG1lbnVzIHdoZW4gc3RhcnRlZCBmcm9tIE9TIFggY29tbWFuZCBsaW5lICgzLjMuMGIyCisgIHJlZ3Jlc3Npb24pLgorCitDIEFQSQorLS0tLS0KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0Njc0OiBBZGQgYSBkaXNjdXNzaW9uIG9mIHRoZSBganNvbmAgbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KKyAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgorCistIENyZWF0ZSBhICdDb25jdXJyZW50IEV4ZWN1dGlvbicgc2VjdGlvbiBpbiB0aGUgZG9jcywgYW5kIHNwbGl0IHVwIHRoZQorICAnT3B0aW9uYWwgT3BlcmF0aW5nIFN5c3RlbSBTZXJ2aWNlcycgc2VjdGlvbiB0byB1c2UgYSBtb3JlIHVzZXItY2VudHJpYworICBjbGFzc2lmaWNhdGlvbiBzY2hlbWUgKHNwbGl0dGluZyB0aGVtIGFjcm9zcyB0aGUgbmV3IENFIHNlY3Rpb24sIElQQyBhbmQgdGV4dAorICBwcm9jZXNzaW5nKS4gT3BlcmF0aW5nIHN5c3RlbSBsaW1pdGF0b25zIGNhbiBiZSByZWZsZWN0ZWQgd2l0aCB0aGUgU3BoaW54CisgIGBgOnBsYXRmb3JtOmBgIHRhZywgaXQgZG9lc24ndCBtYWtlIHNlbnNlIGFzIHBhcnQgb2YgdGhlIFRhYmxlIG9mIENvbnRlbnRzLgorCistIElzc3VlICM0OTY2OiBCcmluZyB0aGUgc2VxdWVuY2UgZG9jcyB1cCB0byBkYXRlIGZvciB0aGUgUHkzayB0cmFuc2l0aW9uIGFuZAorICB0aGUgbWFueSBsYW5ndWFnZSBlbmhhbmNlbWVudHMgc2luY2UgdGhleSB3ZXJlIG9yaWdpbmFsIHdyaXR0ZW4uCisKKy0gVGhlICJwYXRoIGltcG9ydGVyIiBtaXNub21lciBoYXMgYmVlbiByZXBsYWNlZCB3aXRoIEVyaWMgU25vdydzCisgIG1vcmUtYXdrd2FyZC1idXQtYXQtbGVhc3Qtbm90LXdyb25nIHN1Z2dlc3Rpb24gb2YgInBhdGggYmFzZWQgZmluZGVyIiBpbiB0aGUKKyAgaW1wb3J0IHN5c3RlbSByZWZlcmVuY2UgZG9jcy4KKworLSBJc3N1ZSAjMTU2NDA6IERvY3VtZW50IGBpbXBvcnRsaWIuYWJjLkZpbmRlcmAgYXMgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMTU2MzA6IEFkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiAgUGF0Y2ggYnkKKyAgRGFuaWVsIEVsbGlzLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCisgIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZCB0ZXN0cyBpbgorICB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCisKKy0gSXNzdWUgIzE1Mjg1OiBSZWZhY3RvciB0aGUgYXBwcm9hY2ggZm9yIHRlc3RpbmcgY29ubmVjdCB0aW1lb3V0cyB1c2luZyB0d28KKyAgZXh0ZXJuYWwgaG9zdHMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgdHlwZSBvZiB0ZXN0LgorCistIElzc3VlICMxNTc0MzogUmVtb3ZlIHRoZSBkZXByZWNhdGVkIG1ldGhvZCB1c2FnZSBpbiBgdXJsbGliYCB0ZXN0cy4gUGF0Y2ggYnkKKyAgSmVmZiBLbnVwcC4KKworLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYGpzb25gIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQKKyAgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCisKK0J1aWxkCistLS0tLQorCistIE91dHB1dCBsaWIgZmlsZXMgZm9yIFBHTyBidWlsZCBpbnRvIFBHTyBkaXJlY3RvcnkuCisKKy0gUGljayB1cCAzMi1iaXQgbGF1bmNoZXIgZnJvbSBQR08gZGlyZWN0b3J5IG9uIDY0LWJpdCBQR08gYnVpbGQuCisKKy0gRHJvcCBgYFBDXHB5dGhvbl9udC5oYGAgYXMgaXQncyBub3QgdXNlZC4gIEFkZCBpbnB1dCBkZXBlbmRlbmN5IG9uIGN1c3RvbQorICBidWlsZCBzdGVwLgorCistIElzc3VlICMxNTUxMTogRHJvcCBleHBsaWNpdCBkZXBlbmRlbmN5IG9uIHB5dGhvbnh5LmxpYiBmcm9tIF9kZWNpbWFsIGFtZDY0CisgIGNvbmZpZ3VyYXRpb24uCisKKy0gQWRkIG1pc3NpbmcgUEdJL1BHTyBjb25maWd1cmF0aW9ucyBmb3IgcHl3bGF1bmNoZXIuCisKKy0gSXNzdWUgIzE1NjQ1OiBFbnN1cmUgMnRvMyBncmFtbWFyIHBpY2tsZXMgYXJlIHByb3Blcmx5IGluc3RhbGxlZC4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDI/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDEyLUF1Zy0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTU1Njg6IEZpeCB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgeWllbGQgZnJvbWBgIHdoZW4gU3RvcEl0ZXJhdGlvbiBpcworICByYWlzZWQgYnkgYSBjdXN0b20gaXRlcmF0b3IuCisKKy0gSXNzdWUgIzEzMTE5OiBgc3lzLnN0ZG91dGAgYW5kIGBzeXMuc3RkZXJyYCBhcmUgbm93IHVzaW5nICJcclxuIiBuZXdsaW5lIG9uCisgIFdpbmRvd3MsIGFzIFB5dGhvbiAyLgorCistIElzc3VlICMxNTUzNDogRml4IHRoZSBmYXN0LXNlYXJjaCBmdW5jdGlvbiBmb3Igbm9uLUFTQ0lJIFVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTU1MDg6IEZpeCB0aGUgZG9jc3RyaW5nIGZvciBgX19pbXBvcnRfXygpYCB0byBoYXZlIHRoZSBwcm9wZXIgZGVmYXVsdAorICB2YWx1ZSBvZiAwIGZvciAnbGV2ZWwnIGFuZCB0byBub3QgbWVudGlvbiBuZWdhdGl2ZSBsZXZlbHMgc2luY2UgdGhleSBhcmUgbm90CisgIHN1cHBvcnRlZC4KKworLSBJc3N1ZSAjMTU0MjU6IEVsaW1pbmF0ZWQgdHJhY2ViYWNrIG5vaXNlIGZyb20gbW9yZSBzaXR1YXRpb25zIGludm9sdmluZworICBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzE0NTc4OiBTdXBwb3J0IG1vZHVsZXMgcmVnaXN0ZXJlZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeSBhZ2Fpbi4KKworLSBJc3N1ZSAjMTU0NjY6IFN0b3AgdXNpbmcgVFlQRV9JTlQ2NCBpbiBtYXJzaGFsLCB0byBtYWtlIGltcG9ydGxpYi5oIChhbmQgb3RoZXIKKyAgYnl0ZSBjb2RlIGZpbGVzKSBlcXVhbCBiZXR3ZWVuIDMyLWJpdCBhbmQgNjQtYml0IHN5c3RlbXMuCisKKy0gSXNzdWUgIzE2OTIzMzU6IE1vdmUgaW5pdGlhbCBleGNlcHRpb24gYXJncyBhc3NpZ25tZW50IHRvCisgIGBCYXNlRXhjZXB0aW9uLl9fbmV3X18oKWAgdG8gaGVscCBwaWNrbGluZyBvZiBuYWl2ZSBzdWJjbGFzc2VzLgorCistIElzc3VlICMxMjgzNDogRml4IGBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKWAgZm9yIG5vbi1jb250aWd1b3VzIGFycmF5cy4KKworLSBJc3N1ZSAjMTU0NTY6IEZpeCBjb2RlIGBfX3NpemVvZl9fKClgIGFmdGVyICMxMjM5OSBjaGFuZ2UuICBQYXRjaCBieSBTZXJoaXkKKyAgU3RvcmNoYWthLgorCistIElzc3VlICMxNTQwNDogUmVmbGVhayBpbiBQeU1ldGhvZE9iamVjdCByZXByLgorCistIElzc3VlICMxNTM5NDogQW4gaXNzdWUgaW4gYFB5TW9kdWxlX0NyZWF0ZSgpYCB0aGF0IGNhdXNlZCByZWZlcmVuY2VzIHRvIGJlCisgIGxlYWtlZCBvbiBzb21lIGVycm9yIHBhdGhzIGhhcyBiZWVuIGZpeGVkLiAgUGF0Y2ggYnkgSnVsaWEgTGF3YWxsLgorCistIElzc3VlICMxNTM2ODogQW4gaXNzdWUgdGhhdCBjYXVzZWQgYnl0ZWNvZGUgZ2VuZXJhdGlvbiB0byBiZSBub24tZGV0ZXJtaW5pc3RpYworICBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTUyMDI6IENvbnNpc3RlbnRseSB1c2UgdGhlIG5hbWUgImZvbGxvd19zeW1saW5rcyIgZm9yIG5ldyBwYXJhbWV0ZXJzCisgIGluIG9zIGFuZCBzaHV0aWwgZnVuY3Rpb25zLgorCistIElzc3VlICMxNTMxNDogYGBfX21haW5fXy5fX2xvYWRlcl9fYGAgaXMgbm93IHNldCBjb3JyZWN0bHkgZHVyaW5nIGludGVycHJldGVyCisgIHN0YXJ0dXAuCisKKy0gSXNzdWUgIzE1MTExOiBXaGVuIGEgbW9kdWxlIGltcG9ydGVkIHVzaW5nICdmcm9tIGltcG9ydCcgaGFzIGFuIEltcG9ydEVycm9yCisgIGluc2lkZSBpdHNlbGYsIGRvbid0IG1hc2sgdGhhdCBmYWN0IGJlaGluZCBhIGdlbmVyaWMgSW1wb3J0RXJyb3IgZm9yIHRoZQorICBtb2R1bGUgaXRzZWxmLgorCistIElzc3VlICMxNTI5MzogQWRkIEdDIHN1cHBvcnQgdG8gdGhlIEFTVCBiYXNlIG5vZGUgdHlwZS4KKworLSBJc3N1ZSAjMTUyOTE6IEZpeCBhIG1lbW9yeSBsZWFrIHdoZXJlIEFTVCBub2RlcyB3aGVyZSBub3QgcHJvcGVybHkKKyAgZGVhbGxvY2F0ZWQuCisKKy0gSXNzdWUgIzE1MTEwOiBGaXggdGhlIHRyYWNlYmFja3MgZ2VuZXJhdGVkIGJ5ICJpbXBvcnQgeHh4IiB0byBub3Qgc2hvdyB0aGUKKyAgaW1wb3J0bGliIHN0YWNrIGZyYW1lcy4KKworLSBJc3N1ZSAjMTUwMjA6IFRoZSBwcm9ncmFtIG5hbWUgdXNlZCB0byBzZWFyY2ggZm9yIFB5dGhvbidzIHBhdGggaXMgbm93CisgICJweXRob24zIiB1bmRlciBVbml4LCBub3QgInB5dGhvbiIuCisKKy0gSXNzdWUgIzE1ODk3OiB6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLgorICBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KKworLSBJc3N1ZSAjMTUwMzM6IEZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRoLAorICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCisKKy0gSXNzdWUgIzE1MjI5OiBBbiBgT1NFcnJvcmAgc3ViY2xhc3Mgd2hvc2UgX19pbml0X18gZG9lc24ndCBjYWxsIGJhY2sKKyAgT1NFcnJvci5fX2luaXRfXyBjb3VsZCBwcm9kdWNlIGluY29tcGxldGUgaW5zdGFuY2VzLCBsZWFkaW5nIHRvIGNyYXNoZXMgd2hlbgorICBjYWxsaW5nIHN0cigpIG9uIHRoZW0uCisKKy0gSXNzdWUgMTUzMDc6IFZpcnR1YWwgZW52aXJvbm1lbnRzIG5vdyB1c2Ugc3ltbGlua3Mgd2l0aCBmcmFtZXdvcmsgYnVpbGRzIG9uCisgIE1hYyBPUyBYLCBsaWtlIG90aGVyIFBPU0lYIGJ1aWxkcy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNTQyNDogQWRkIGEgYF9fc2l6ZW9mX18oKWAgaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuICBQYXRjaCBieQorICBMdWR3aWcgSMOkaG5lLgorCistIElzc3VlICMxNTU3NjogQWxsb3cgZXh0ZW5zaW9uIG1vZHVsZXMgdG8gYWN0IGFzIGEgcGFja2FnZSdzIF9faW5pdF9fIG1vZHVsZS4KKworLSBJc3N1ZSAjMTU1MDI6IEhhdmUgYGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpYCB3b3JrIG9uIGBzeXMubWV0YV9wYXRoYAorICBpbnN0ZWFkIG9mIGBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZWAuCisKKy0gSXNzdWUgIzE1MTYzOiBQeWRvYyBzaG91bGRuJ3QgbGlzdCBfX2xvYWRlcl9fIGFzIG1vZHVsZSBkYXRhLgorCistIElzc3VlICMxNTQ3MTogRG8gbm90IHVzZSBtdXRhYmxlIG9iamVjdHMgYXMgZGVmYXVsdHMgZm9yCisgIGBpbXBvcnRsaWIuX19pbXBvcnRfXygpYC4KKworLSBJc3N1ZSAjMTU1NTk6IFRvIGF2b2lkIGEgcHJvYmxlbWF0aWMgZmFpbHVyZSBtb2RlIHdoZW4gcGFzc2VkIHRvIHRoZSBieXRlcworICBjb25zdHJ1Y3Rvciwgb2JqZWN0cyBpbiB0aGUgaXBhZGRyZXNzIG1vZHVsZSBubyBsb25nZXIgaW1wbGVtZW50IGBfX2luZGV4X18oKWAKKyAgKHRoZXkgc3RpbGwgaW1wbGVtZW50IGBfX2ludF9fKClgIGFzIGFwcHJvcHJpYXRlKS4KKworLSBJc3N1ZSAjMTU1NDY6IEZpeCBoYW5kbGluZyBvZiBwYXRob2xvZ2ljYWwgaW5wdXQgZGF0YSBpbiB0aGUgcGVlaygpIGFuZAorICByZWFkMSgpIG1ldGhvZHMgb2YgdGhlIEJaMkZpbGUsIEd6aXBGaWxlIGFuZCBMWk1BRmlsZSBjbGFzc2VzLgogCiAtIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKLSAgZW5kZWQgd2l0aCAnXCcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorICBlbmRlZCB3aXRoIGBgXGBgLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKLS0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGdldG5hbWVpbmZvKCkgLyBnZXRhZGRyaW5mbygpCi0gIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKy0gSXNzdWUgIzEyNjU1OiBJbnN0ZWFkIG9mIHJlcXVpcmluZyBhIGN1c3RvbSB0eXBlLCBgb3Muc2NoZWRfZ2V0YWZmaW5pdHkoKWAgYW5kCisgIGBvcy5zY2hlZF9zZXRhZmZpbml0eSgpYCBub3cgdXNlIHJlZ3VsYXIgc2V0cyBvZiBpbnRlZ2VycyB0byByZXByZXNlbnQgdGhlCisgIENQVXMgYSBwcm9jZXNzIGlzIHJlc3RyaWN0ZWQgdG8uCisKKy0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGBzb2NrZXQuZ2V0bmFtZWluZm8oKWAgLworICBgc29ja2V0LmdldGFkZHJpbmZvKClgIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKworLSBJc3N1ZSAjMTU1MTk6IFByb3Blcmx5IGV4cG9zZSBXaW5kb3dzUmVnaXN0cnlGaW5kZXIgaW4gaW1wb3J0bGliIChhbmQgdXNlIHRoZQorICBjb3JyZWN0IHRlcm0gZm9yIGl0KS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEVyaWMgU25vdy4KKworLSBJc3N1ZSAjMTU1MDI6IEJyaW5nIHRoZSBpbXBvcnRsaWIgQUJDcyBpbnRvIGxpbmUgd2l0aCB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUKKyAgaW1wb3J0IHByb3RvY29scyBnaXZlbiBQRVAgNDIwLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpYyBTbm93LgorCistIElzc3VlICMxNTQ5OTogTGF1bmNoaW5nIGEgd2ViYnJvd3NlciBpbiBVbml4IHVzZWQgdG8gc2xlZXAgZm9yIGEgZmV3IHNlY29uZHMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEFudG9uIEJhcmtvdnNreS4KKworLSBJc3N1ZSAjMTU0NjM6IFRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlIHRydW5jYXRlcyBzdHJpbmdzIHRvIDUwMCBjaGFyYWN0ZXJzLAorICBpbnN0ZWFkIG9mIDEwMCwgdG8gYmUgYWJsZSB0byBkaXNwbGF5IGxvbmcgZmlsZSBwYXRocy4KKworLSBJc3N1ZSAjNjA1NjogTWFrZSBgbXVsdGlwcm9jZXNzaW5nYCB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlIHNvY2tldHMgaXQKKyAgdXNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEogRGVyZWsgV2lsc29uLgorCistIElzc3VlICMxNTM2NDogRml4IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykgdG8gYmUgYW4gYWJzb2x1dGUgcGF0aC4KKworLSBJc3N1ZSAjMTUwNDE6IFVwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxNTQxMzogYG9zLnRpbWVzKClgIGhhZCBkaXNhcHBlYXJlZCB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxNTQwMjogQW4gaXNzdWUgaW4gdGhlIHN0cnVjdCBtb2R1bGUgdGhhdCBjYXVzZWQgYHN5cy5nZXRzaXplb2YoKWAgdG8KKyAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4gIEluaXRpYWwKKyAgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUyMzI6IFdoZW4gbWFuZ2xlX2Zyb20gaXMgVHJ1ZSwgYGVtYWlsLkdlbmVyYXRvcmAgbm93IGNvcnJlY3RseQorICBtYW5nbGVzIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yCisgIGVwaWxvZ3VlLgorCistIElzc3VlICMxNTA5NDogSW5jb3JyZWN0bHkgcGxhY2VkICNlbmRpZiBpbiBfdGtpbnRlci5jLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5MjI6IGBhcmdwYXJzZWAgbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlcgorICB0aGUgZmlyc3Qgb25lLgorCistIElzc3VlICMxMjM1MzogYGFyZ3BhcnNlYCBub3cgY29ycmVjdGx5IGhhbmRsZXMgbnVsbCBhcmd1bWVudCB2YWx1ZXMuCisKKy0gSXNzdWUgIzEwMDE3LCBpc3N1ZSAjMTQ5OTg6IEZpeCBUeXBlRXJyb3IgdXNpbmcgcHByaW50IG9uIGRpY3Rpb25hcmllcyB3aXRoCisgIHVzZXItZGVmaW5lZCB0eXBlcyBhcyBrZXlzIG9yIG90aGVyIHVub3JkZXJhYmxlIGtleXMuCisKKy0gSXNzdWUgIzE1Mzk3OiBgaW5zcGVjdC5nZXRtb2R1bGVuYW1lKClgIGlzIG5vdyBiYXNlZCBkaXJlY3RseSBvbiBpbXBvcnRsaWIgdmlhCisgIGEgbmV3IGBpbXBvcnRsaWIubWFjaGluZXJ5LmFsbF9zdWZmaXhlcygpYCBBUEkuCisKKy0gSXNzdWUgIzE0NjM1OiBgdGVsbmV0bGliYCB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZSB0bworICBhdm9pZCBmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgorCistIElzc3VlICMxNTE4MDogQ2xhcmlmeSBwb3NpeHBhdGguam9pbigpIGVycm9yIG1lc3NhZ2Ugd2hlbiBtaXhpbmcgc3RyICYgYnl0ZXMuCisKKy0gSXNzdWUgIzE1MzQzOiBwa2d1dGlsIG5vdyBpbmNsdWRlcyBhbiBpdGVyX2ltcG9ydGVyX21vZHVsZXMgaW1wbGVtZW50YXRpb24gZm9yCisgIGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlciAoc2ltaWxhciB0byB0aGUgd2F5IGl0IGFscmVhZHkgaGFuZGxlZAorICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpLgorCistIElzc3VlICMxNTMxNDogcnVucHkgbm93IHNldHMgX19tYWluX18uX19sb2FkZXJfXyBjb3JyZWN0bHkuCisKKy0gSXNzdWUgIzE1MzU3OiBUaGUgaW1wb3J0IGVtdWxhdGlvbiBpbiBwa2d1dGlsIGlzIG5vdyBkZXByZWNhdGVkLiBwa2d1dGlsIHVzZXMKKyAgaW1wb3J0bGliIGludGVybmFsbHkgcmF0aGVyIHRoYW4gdGhlIGVtdWxhdGlvbi4KKworLSBJc3N1ZSAjMTUyMzM6IFB5dGhvbiBub3cgZ3VhcmFudGVlcyB0aGF0IGNhbGxhYmxlcyByZWdpc3RlcmVkIHdpdGggdGhlIGF0ZXhpdAorICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaW4gYSBkZXRlcm1pbmlzdGljIG9yZGVyLgorCistIElzc3VlICMxNTIzODogYHNodXRpbC5jb3B5c3RhdCgpYCBub3cgY29waWVzIExpbnV4ICJleHRlbmRlZCBhdHRyaWJ1dGVzIi4KKworLSBJc3N1ZSAjMTUyMzA6IHJ1bnB5LnJ1bl9wYXRoIG5vdyBjb3JyZWN0bHkgc2V0cyBfX3BhY2thZ2VfXyBhcyBkZXNjcmliZWQgaW4KKyAgdGhlIGRvY3VtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1MzE1OiBTdXBwb3J0IFZTIDIwMTAgaW4gZGlzdHV0aWxzIGN5Z3dpbmNvbXBpbGVyLgorCistIElzc3VlICMxNTI5NDogRml4IGEgcmVncmVzc2lvbiBpbiBwa2d1dGlsLmV4dGVuZF9wYXRoKCkncyBoYW5kbGluZyBvZiBuZXN0ZWQKKyAgbmFtZXNwYWNlIHBhY2thZ2VzLgorCistIElzc3VlICMxNTA1NjogYGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpYCBhbmQgYGltcC5zb3VyY2VfZnJvbV9jYWNoZSgpYCByYWlzZQorICBOb3RJbXBsZW1lbnRlZEVycm9yIHdoZW4gYHN5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWdgIGlzIHNldCB0byBOb25lLgorCistIElzc3VlICMxNTI1NjogR3JhbW1hdGljYWwgbWlzdGFrZSBpbiBleGNlcHRpb24gcmFpc2VkIGJ5IGBpbXAuZmluZF9tb2R1bGUoKWAuCisKKy0gSXNzdWUgIzU5MzE6IGB3c2dpcmVmYCBlbnZpcm9uIHZhcmlhYmxlIFNFUlZFUl9TT0ZUV0FSRSB3aWxsIHNwZWNpZnkgYW4KKyAgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgdGVybSBsaWtlIENQeXRob24sIEp5dGhvbiBpbnN0ZWFkIG9mIGdlbmVyaWMgIlB5dGhvbiIuCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgIm1heF9idWZmZXJfc2l6ZSIgb2YgQnVmZmVyZWRXcml0ZXIgYW5kCisgIEJ1ZmZlcmVkUldQYWlyLCBmcm9tIHRoZSBpbyBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgb2Jzb2xldGUgYXJndW1lbnQgInZlcnNpb24iIG9mIGBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcmAuCisKKy0gSXNzdWUgIzE0ODE0OiBJbXBsZW1lbnQgbW9yZSBjb25zaXN0ZW50IG9yZGVyaW5nIGFuZCBzb3J0aW5nIGJlaGF2aW91ciBmb3IKKyAgaXBhZGRyZXNzIG9iamVjdHMuCisKKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBuZXR3b3JrIG9iamVjdHMgY29ycmVjdGx5IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCisgIGNvbXBhcmVkIHRvIGFyYml0cmFyeSBvYmplY3RzIGluc3RlYWQgb2YgcmFpc2luZyBUeXBlRXJyb3IuCisKKy0gSXNzdWUgIzE0OTkwOiBDb3JyZWN0bHkgZmFpbCB3aXRoIFN5bnRheEVycm9yIG9uIGludmFsaWQgZW5jb2RpbmcgZGVjbGFyYXRpb24uCisKKy0gSXNzdWUgIzE0ODE0OiBgaXBhZGRyZXNzYCBub3cgcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlcyB3aGVuCisgIGNvbnN0cnVjdGluZyBpbnN0YW5jZXMgZGlyZWN0bHkgKGNoYW5nZXMgcGVybWl0dGVkIGR1cmluZyBiZXRhIGR1ZSB0bworICBwcm92aXNpb25hbCBBUEkgc3RhdHVzKS4KKworLSBJc3N1ZSAjMTUyNDc6IGBpby5GaWxlSU9gIG5vdyByYWlzZXMgYW4gZXJyb3Igd2hlbiBnaXZlbiBhIGZpbGUgZGVzY3JpcHRvcgorICBwb2ludGluZyB0byBhIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjMTUyNjE6IFN0b3Agb3Muc3RhdChmZCkgY3Jhc2hpbmcgb24gV2luZG93cyB3aGVuIGZkIG5vdCBvcGVuLgorCistIElzc3VlICMxNTE2NjogSW1wbGVtZW50IGBpbXAuZ2V0X3RhZygpYCB1c2luZyBgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZ2AuCisKKy0gSXNzdWUgIzE1MjEwOiBDYXRjaCBLZXlFcnJvciB3aGVuIGBpbXBvcnRsaWIuX19pbml0X18oKWAgY2FuJ3QgZmluZAorICBfZnJvemVuX2ltcG9ydGxpYiBpbiBzeXMubW9kdWxlcywgbm90IEltcG9ydEVycm9yLgorCistIElzc3VlICMxNTAzMDogYGltcG9ydGxpYi5hYmMuUHlQeWNMb2FkZXJgIG5vdyBzdXBwb3J0cyB0aGUgbmV3IHNvdXJjZSBzaXplCisgIGhlYWRlciBmaWVsZCBpbiAucHljIGZpbGVzLgorCistIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94IGZpbGVzIG9uCisgIGZsdXNoKCkuCisKKy0gSXNzdWUgIzEwNTcxOiBGaXggdGhlICItLXNpZ24iIG9wdGlvbiBvZiBkaXN0dXRpbHMnIHVwbG9hZCBjb21tYW5kLiAgUGF0Y2ggYnkKKyAgSmFrdWIgV2lsay4KKworLSBJc3N1ZSAjOTU1OTogSWYgbWVzc2FnZXMgd2VyZSBvbmx5IGFkZGVkLCBhIG5ldyBmaWxlIGlzIG5vIGxvbmdlciBjcmVhdGVkIGFuZAorICByZW5hbWVkIG92ZXIgdGhlIG9sZCBmaWxlIHdoZW4gZmx1c2goKSBpcyBjYWxsZWQgb24gYW4gbWJveCwgTU1ERiBvciBCYWJ5bAorICBtYWlsYm94LgorCistIElzc3VlIDEwOTI0OiBGaXhlZCBgY3J5cHQubWtzYWx0KClgIHRvIHVzZSBhIFJORyB0aGF0IGlzIHN1aXRhYmxlIGZvcgorICBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKy0gSXNzdWUgIzE1MTg0OiBFbnN1cmUgY29uc2lzdGVudCByZXN1bHRzIG9mIE9TIFggY29uZmlndXJhdGlvbiB0YWlsb3JpbmcgZm9yCisgIHVuaXZlcnNhbCBidWlsZHMgYnkgZmFjdG9yaW5nIG91dCBjb21tb24gT1MgWC1zcGVjaWZpYyBjdXN0b21pemF0aW9ucyBmcm9tCisgIHN5c2NvbmZpZywgZGlzdHV0aWxzLnN5c2NvbmZpZywgZGlzdHV0aWxzLnV0aWwsIGFuZCBkaXN0dXRpbHMudW5peGNjb21waWxlcgorICBpbnRvIGEgbmV3IG1vZHVsZSBfb3N4X3N1cHBvcnQuCisKK0MgQVBJCistLS0tLQorCistIElzc3VlICMxNTYxMDogYFB5SW1wb3J0X0ltcG9ydE1vZHVsZUV4KClgIG5vdyB1c2VzIGEgJ2xldmVsJyBvZiAwIGluc3RlYWQgb2YgLTEuCisKKy0gSXNzdWUgIzE1MTY5LCBpc3N1ZSAjMTQ1OTk6IFN0cmlwIG91dCB0aGUgQyBpbXBsZW1lbnRhdGlvbiBvZgorICBgaW1wLnNvdXJjZV9mcm9tX2NhY2hlKClgIHVzZWQgYnkgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKCkgYW5kCisgIHVzZWQgdGhlIFB5dGhvbiBjb2RlIGluc3RlYWQuIExlYWRzIHRvIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KCkgdG8gbm90CisgIHRyeSB0byBpbmZlciB0aGUgc291cmNlIHBhdGggZnJvbSB0aGUgYnl0ZWNvZGUgcGF0aCBhcworICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoKSBkb2VzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcyBvZgorICB0eXBlIGBjdHlwZXMuY191aW50MzJgIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzE1MTk0OiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuMTEgcmVsZWFzZS4KKworVG9vbHMvRGVtb3MKKy0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1NDU4OiBweXRob24tY29uZmlnIGdldHMgYSBuZXcgb3B0aW9uIC0tY29uZmlnZGlyIHRvIHByaW50IHRoZSAkTElCUEwKKyAgdmFsdWUuCisKKy0gTW92ZSBpbXBvcnRsaWIudGVzdC5iZW5jaG1hcmsgdG8gVG9vbHMvaW1wb3J0YmVuY2guCisKKy0gSXNzdWUgIzEyNjA1OiBUaGUgZ2RiIGhvb2tzIGZvciBkZWJ1Z2dpbmcgQ1B5dGhvbiAod2l0aGluIFRvb2xzL2dkYikgaGF2ZSBiZWVuCisgIGVuaGFuY2VkIHRvIHNob3cgaW5mb3JtYXRpb24gb24gbW9yZSBDIGZyYW1lcyByZWxldmFudCB0byBDUHl0aG9uIHdpdGhpbiB0aGUKKyAgInB5LWJ0IiBhbmQgInB5LWJ0LWZ1bGwiIGNvbW1hbmRzOgorCisgICogQyBmcmFtZXMgdGhhdCBhcmUgd2FpdGluZyBvbiB0aGUgR0lMCisgICogQyBmcmFtZXMgdGhhdCBhcmUgZ2FyYmFnZS1jb2xsZWN0aW5nCisgICogQyBmcmFtZXMgdGhhdCBhcmUgZHVlIHRvIHRoZSBpbnZvY2F0aW9uIG9mIGEgUHlDRnVuY3Rpb24KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUyOTU6IFJlb3JnYW5pemUgYW5kIHJld3JpdGUgdGhlIGRvY3VtZW50YXRpb24gb24gdGhlIGltcG9ydCBzeXN0ZW0uCisKKy0gSXNzdWUgIzE1MjMwOiBDbGVhcmx5IGRvY3VtZW50IHNvbWUgb2YgdGhlIGxpbWl0YXRpb25zIG9mIHRoZSBydW5weSBtb2R1bGUgYW5kCisgIG51ZGdlIHJlYWRlcnMgdG93YXJkcyBpbXBvcnRsaWIgd2hlbiBhcHByb3ByaWF0ZS4KKworLSBJc3N1ZSAjMTUwNTM6IENvcHkgUHl0aG9uIDMuMyBpbXBvcnQgbG9jayBjaGFuZ2Ugbm90aWNlIHRvIGFsbCByZWxldmFudAorICBmdW5jdGlvbnMgaW4gaW1wIGluc3RlYWQgb2YganVzdCBhdCB0aGUgdG9wIG9mIHRoZSByZWxldmFudCBzZWN0aW9uLgorCistIElzc3VlICMxNTI4ODogTGluayB0byB0aGUgdGVybSAibG9hZGVyIiBpbiBub3RlcyBpbiBwa2d1dGlsIGFib3V0IGhvdyB0aGluZ3MKKyAgd29uJ3Qgd29yayBhcyBleHBlY3RlZCBpbiBQeXRob24gMy4zIGFuZCBtYXJrIHRoZSByZXF1aXNpdGUgZnVuY3Rpb25zIGFzCisgICJjaGFuZ2VkIiBzaW5jZSB0aGV5IHdpbGwgbm8gbG9uZ2VyIHdvcmsgd2l0aCBtb2R1bGVzIGRpcmVjdGx5IGltcG9ydGVkIGJ5CisgIGltcG9ydCBpdHNlbGYuCisKKy0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGBleGVjKClgIG9yCisgIGBleGVjZmlsZSgpYC4KKworLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgYGZpbGVjbXAuZGlyY21wKClgIGNvbXBhcmVzIGZpbGVzIHNoYWxsb3dseS4gUGF0Y2gKKyAgY29udHJpYnV0ZWQgYnkgQ2hyaXMgSmVyZG9uZWsuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNTQ2NzogTW92ZSBoZWxwZXJzIGZvciBgX19zaXplb2ZfXygpYCB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gIFBhdGNoCisgIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzE1MzIwOiBNYWtlIGl0ZXJhdGluZyB0aGUgbGlzdCBvZiB0ZXN0cyB0aHJlYWQtc2FmZSB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgaW4gbXVsdGlwcm9jZXNzIG1vZGUuIFBhdGNoIGJ5IENocmlzIEplcmRvbmVrLgorCistIElzc3VlICMxNTE2ODogTW92ZSBgaW1wb3J0bGliLnRlc3RgIHRvIGB0ZXN0LnRlc3RfaW1wb3J0bGliYC4KKworLSBJc3N1ZSAjMTUwOTE6IFJlYWN0aXZhdGUgYSB0ZXN0IG9uIFVOSVggd2hpY2ggd2FzIGZhaWxpbmcgdGhhbmtzIHRvIGEKKyAgZm9yZ290dGVuIGBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKWAgY2FsbC4KKworLSBJc3N1ZSAjMTUyMzA6IEFkb3B0ZWQgYSBtb3JlIHN5c3RlbWF0aWMgYXBwcm9hY2ggaW4gdGhlIHJ1bnB5IHRlc3RzLgorCistIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQorICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgorICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KKworLSBJc3N1ZSAjMTUyODQ6IFNraXAge3NlbmQscmVjdn1tc2cgdGVzdHMgaW4gdGVzdF9zb2NrZXQgd2hlbiBJUHY2IGlzIG5vdAorICBlbmFibGVkLiBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy0gSXNzdWUgIzE1Mjc3OiBGaXggYSByZXNvdXJjZSBsZWFrIGluIHN1cHBvcnQucHkgd2hlbiBJUHY2IGlzIGRpc2FibGVkLiAgUGF0Y2gKKyAgYnkgQnJpYW4gQnJhemlsLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTE3MTU6IEZpeCBtdWx0aWFyY2ggZGV0ZWN0aW9uIHdpdGhvdXQgaGF2aW5nIERlYmlhbiBkZXZlbG9wbWVudCB0b29scworICAoZHBrZy1kZXYpIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTUwMzc6IEJ1aWxkIE9TIFggaW5zdGFsbGVycyB3aXRoIGxvY2FsIGNvcHkgb2YgbmN1cnNlcyA1LjkgbGlicmFyaWVzCisgIHRvIGF2b2lkIGN1cnNlcy51bmdldF93Y2ggYnVnIHByZXNlbnQgaW4gb2xkZXIgdmVyc2lvbnMgb2YgbmN1cnNlcyBzdWNoIGFzCisgIHRob3NlIHNoaXBwZWQgd2l0aCBPUyBYLgorCistIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLiAgQWxzbywgZm9yCisgIE9TIFggaW5zdGFsbGVycywgZW5zdXJlIGNvbnNpc3RlbnQgc3FsaXRlMyBiZWhhdmlvciBhbmQgZmVhdHVyZSBhdmFpbGFiaWxpdHkKKyAgYnkgYnVpbGRpbmcgYSBsb2NhbCBjb3B5IG9mIGxpYnNxbGl0ZTMgcmF0aGVyIHRoYW4gZGVwZW5kaW5nIG9uIHRoZSB3aWRlIHJhbmdlCisgIG9mIHZlcnNpb25zIHN1cHBsaWVkIHdpdGggdmFyaW91cyBPUyBYIHJlbGVhc2VzLgorCistIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTQwMTg6IEZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCisKKy0gSXNzdWUgIzE1NDMxOiBBZGQgX2ZyZWV6ZV9pbXBvcnRsaWIgcHJvamVjdCB0byByZWdlbmVyYXRlIGltcG9ydGxpYi5oIG9uCisgIFdpbmRvd3MuIFBhdGNoIGJ5IEtyaXN0asOhbiBWYWx1ciBKw7Nuc3Nvbi4KKworLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkIGxpYnJhcnkKKyAgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCisKKy0gSXNzdWUgIzE0MzMwOiBGb3IgY3Jvc3MgYnVpbGRzLCBkb24ndCB1c2UgaG9zdCBweXRob24sIHVzZSBob3N0IHNlYXJjaCBwYXRocworICBmb3IgaG9zdCBjb21waWxlci4KKworLSBJc3N1ZSAjMTUyMzU6IEFsbG93IEJlcmtsZXkgREIgdmVyc2lvbnMgdXAgdG8gNS4zIHRvIGJ1aWxkIHRoZSBkYm0gbW9kdWxlLgorCistIElzc3VlICMxNTI2ODogU2VhcmNoIGN1cnNlcy5oIGluIC91c3IvaW5jbHVkZS9uY3Vyc2Vzdy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBCZXRhIDE/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDI3LUp1bi0yMDEyKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBGaXggYSAobW9zdCBsaWtlbHkpIHZlcnkgcmFyZSBtZW1vcnkgbGVhayB3aGVuIGNhbGxpbmcgbWFpbigpIGFuZCBub3QgYmVpbmcKKyAgYWJsZSB0byBkZWNvZGUgYSBjb21tYW5kLWxpbmUgYXJndW1lbnQuCisKKy0gSXNzdWUgIzE0ODE1OiBVc2UgUHlfc3NpemVfdCBpbnN0ZWFkIG9mIGxvbmcgZm9yIHRoZSBvYmplY3QgaGFzaCwgdG8KKyAgcHJlc2VydmUgYWxsIDY0IGJpdHMgb2YgaGFzaCBvbiBXaW42NC4KKworLSBJc3N1ZSAjMTIyNjg6IEZpbGUgcmVhZGxpbmUsIHJlYWRsaW5lcyBhbmQgcmVhZCgpIG9yIHJlYWRhbGwoKSBtZXRob2RzCisgIG5vIGxvbmdlciBsb3NlIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuCisgIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUgdG8gYSByZWFkIHN5c3RlbSBjYWxsIHJldHVybmluZyBFSU5UUgorICBmcm9tIHdpdGhpbiB0aGVzZSBtZXRob2RzLgorCistIElzc3VlICMxMTYyNjogQWRkIF9TaXplVCBmdW5jdGlvbnMgdG8gc3RhYmxlIEFCSS4KKworLSBJc3N1ZSAjMTUxNDY6IEFkZCBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTUxNDI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIGRlYWxsb2NhdGluZyBpbnN0YW5jZXMgb2YgdHlwZXMKKyAgY3JlYXRlZCB1c2luZyBQeVR5cGVfRnJvbVNwZWMoKS4KKworLSBJc3N1ZSAjMTUwNDI6IEFkZCBQeVN0YXRlX0FkZE1vZHVsZSBhbmQgUHlTdGF0ZV9SZW1vdmVNb2R1bGUuIEFkZCB2ZXJzaW9uCisgIGd1YXJkIGZvciBQeV9MSU1JVEVEX0FQSSBhZGRpdGlvbnMuIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTAwNTM6IERvbid0IGNsb3NlIEZEcyB3aGVuIEZpbGVJTy5fX2luaXRfXyBmYWlscy4gTG9vc2VseSBiYXNlZCBvbgorICB0aGUgd29yayBieSBIaXJva2F6dSBZYW1hbW90by4KKworLSBJc3N1ZSAjMTUwOTY6IFJlbW92ZWQgc3VwcG9ydCBmb3IgdXInJyBhcyB0aGUgcmF3IG5vdGF0aW9uIGlzbid0CisgIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi54J3MgcmF3IHVuaWNvZGUgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTM3ODM6IEdlbmVyYXRvciBvYmplY3RzIG5vdyB1c2UgdGhlIGlkZW50aWZpZXIgQVBJcyBpbnRlcm5hbGx5CisKKy0gSXNzdWUgIzE0ODc0OiBSZXN0b3JlIGNoYXJtYXAgZGVjb2Rpbmcgc3BlZWQgdG8gcHJlLVBFUCAzOTMgbGV2ZWxzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMxNTAyNjogdXRmLTE2IGVuY29kaW5nIGlzIG5vdyBzaWduaWZpY2FudGx5IGZhc3RlciAodXAgdG8gMTB4KS4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTEwMjI6IG9wZW4oKSBhbmQgaW8uVGV4dElPV3JhcHBlciBhcmUgbm93IGNhbGxpbmcKKyAgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpbnN0ZWFkIG9mIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisgIGluIHRleHQgbW9kZSBpZiB0aGUgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZC4gRG9uJ3QgY2hhbmdlIHRlbXBvcmFyeSB0aGUKKyAgbG9jYWxlIGVuY29kaW5nIHVzaW5nIGxvY2FsZS5zZXRsb2NhbGUoKSwgdXNlIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZworICBpbnN0ZWFkIG9mIHRoZSB1c2VyIHByZWZlcnJlZCBlbmNvZGluZy4KKworLSBJc3N1ZSAjMTQ2NzM6IEFkZCBFcmljIFNub3cncyBzeXMuaW1wbGVtZW50YXRpb24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE1MDM4OiBPcHRpbWl6ZSBweXRob24gTG9ja3Mgb24gV2luZG93cy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNjMwNTogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IG9jY3VycmluZyB3aGVuIGludGVycnVwdGluZworICBtYXRoLmZhY3RvcmlhbC4KIAogLSBJc3N1ZSAjOTgwMzogRG9uJ3QgY2xvc2UgSURMRSBvbiBzYXZpbmcgaWYgYnJlYWtwb2ludCBpcyBvcGVuLgogICBQYXRjaCBieSBSb2dlciBTZXJ3eS4KQEAgLTI1NCw2MyArOTAyLDE1MCBAQAogLSBJc3N1ZSAjMTU0ODc6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGJ1ZmZlcmVkIEkvTyBvYmplY3RzLgogICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICM2MDU2OiBNYWtlIG11bHRpcHJvY2Vzc2luZyB1c2Ugc2V0YmxvY2tpbmcoVHJ1ZSkgb24gdGhlCi0gIHNvY2tldHMgaXQgdXNlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEogRGVyZWsgV2lsc29uLgorLSBJc3N1ZSAjMTU1MTQ6IENvcnJlY3QgX19zaXplb2ZfXyBzdXBwb3J0IGZvciBjcHVfc2V0LgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCi0tIElzc3VlICMxNTA0MTogdXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCistIElzc3VlICMxNTE4NzogQnVnZml4OiByZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHRlc3Rfc2h1dGlsIHdhcyBsZWF2aW5nCisgIGJlaGluZC4KIAotLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIHN5cy5nZXRzaXplb2YgdG8KLSAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4KLSAgSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorLSBJc3N1ZSAjMTUxNzc6IEFkZGVkIGRpcl9mZCBwYXJhbWV0ZXIgdG8gb3MuZndhbGsoKS4KIAotLSBJc3N1ZSAjMTUyMzI6IHdoZW4gbWFuZ2xlX2Zyb20gaXMgVHJ1ZSwgZW1haWwuR2VuZXJhdG9yIG5vdyBjb3JyZWN0bHkgbWFuZ2xlcwotICBsaW5lcyB0aGF0IHN0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvciBlcGlsb2d1ZS4KKy0gSXNzdWUgIzE1MTc2OiBDbGFyaWZpZWQgYmVoYXZpb3IsIGRvY3VtZW50YXRpb24sIGFuZCBpbXBsZW1lbnRhdGlvbgorICBvZiBvcy5saXN0ZGlyKCkuCiAKLS0gSXNzdWUgIzEzOTIyOiBhcmdwYXJzZSBubyBsb25nZXIgaW5jb3JyZWN0bHkgc3RyaXBzICctLSdzIHRoYXQgYXBwZWFyCi0gIGFmdGVyIHRoZSBmaXJzdCBvbmUuCistIElzc3VlICMxNTA2MTogUmUtaW1wbGVtZW50ZWQgaG1hYy5jb21wYXJlX2RpZ2VzdCgpIGluIEMgdG8gcHJldmVudCBmdXJ0aGVyCisgIHRpbWluZyBhbmFseXNpcyBhbmQgdG8gc3VwcG9ydCBhbGwgYnVmZmVyIHByb3RvY29sIGF3YXJlIG9iamVjdHMgYXMgd2VsbCBhcworICBBU0NJSSBvbmx5IHN0ciBpbnN0YW5jZXMgc2FmZWx5LgogCi0tIElzc3VlICMxMjM1MzogYXJncGFyc2Ugbm93IGNvcnJlY3RseSBoYW5kbGVzIG51bGwgYXJndW1lbnQgdmFsdWVzLgorLSBJc3N1ZSAjMTUxNjQ6IENoYW5nZSByZXR1cm4gdmFsdWUgb2YgcGxhdGZvcm0udW5hbWUoKSBmcm9tIGEKKyAgcGxhaW4gdHVwbGUgdG8gYSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlLgogCi0tIElzc3VlcyAjMTAwMTcgYW5kICMxNDk5ODogRml4IFR5cGVFcnJvciB1c2luZyBwcHJpbnQgb24gZGljdGlvbmFyaWVzIHdpdGgKLSAgdXNlci1kZWZpbmVkIHR5cGVzIGFzIGtleXMgb3Igb3RoZXIgdW5vcmRlcmFibGUga2V5cy4KKy0gU3VwcG9ydCBNYWdlaWEgTGludXggaW4gdGhlIHBsYXRmb3JtIG1vZHVsZS4KIAotLSBJc3N1ZSAjMTQ2MzU6IHRlbG5ldGxpYiB3aWxsIHVzZSBwb2xsKCkgcmF0aGVyIHRoYW4gc2VsZWN0KCkgd2hlbiBwb3NzaWJsZQotICB0byBhdm9pZCBmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgorLSBJc3N1ZSAjMTE2Nzg6IFN1cHBvcnQgQXJjaCBsaW51eCBpbiB0aGUgcGxhdGZvcm0gbW9kdWxlLgogCi0tIElzc3VlICMxNTE4MDogQ2xhcmlmeSBwb3NpeHBhdGguam9pbigpIGVycm9yIG1lc3NhZ2Ugd2hlbiBtaXhpbmcgc3RyICYgYnl0ZXMKKy0gSXNzdWUgIzE1MTE4OiBDaGFuZ2UgcmV0dXJuIHZhbHVlIG9mIG9zLnVuYW1lKCkgYW5kIG9zLnRpbWVzKCkgZnJvbQorICBwbGFpbiB0dXBsZXMgdG8gaW1tdXRhYmxlIGl0ZXJhYmxlIG9iamVjdHMgd2l0aCBuYW1lZCBhdHRyaWJ1dGVzCisgIChzdHJ1Y3RzZXEgb2JqZWN0cykuCiAKLS0gSXNzdWUgIzE1MjMwOiBydW5weS5ydW5fcGF0aCBub3cgY29ycmVjdGx5IHNldHMgX19wYWNrYWdlX18gYXMgZGVzY3JpYmVkCi0gIGluIHRoZSBkb2N1bWVudGF0aW9uCistIFNwZWVkIHVwIF9kZWNpbWFsIGJ5IGFub3RoZXIgMTAtMTUlIGJ5IGNhY2hpbmcgdGhlIHRocmVhZCBsb2NhbCBjb250ZXh0CisgIHRoYXQgd2FzIGxhc3QgYWNjZXNzZWQuIEluIHRoZSBwaSBiZW5jaG1hcmsgKDY0LWJpdCBwbGF0Zm9ybSwgcHJlYz05KSwKKyAgX2RlY2ltYWwgaXMgbm93IG9ubHkgMS41eCBzbG93ZXIgdGhhbiBmbG9hdC4KIAotLSBJc3N1ZSAjMTQ5OTA6IENvcnJlY3RseSBmYWlsIHdpdGggU3ludGF4RXJyb3Igb24gaW52YWxpZCBlbmNvZGluZwotICBkZWNsYXJhdGlvbi4KKy0gUmVtb3ZlIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCB3aGljaCBpcyBub3QgcmVhZHkgZm9yIHByaW1lIHRpbWUuCiAKLS0gSXNzdWUgIzE1MjQ3OiBGaWxlSU8gbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yCi0gIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5LgorLSBJc3N1ZSAjMTUxNTQ6IEFkZCAiZGlyX2ZkIiBwYXJhbWV0ZXIgdG8gb3Mucm1kaXIsIHJlbW92ZSAicm1kaXIiCisgIHBhcmFtZXRlciBmcm9tIG9zLnJlbW92ZSAvIG9zLnVubGluay4KIAotLSBJc3N1ZSAjNTM0NjogUHJlc2VydmUgcGVybWlzc2lvbnMgb2YgbWJveCwgTU1ERiBhbmQgQmFieWwgbWFpbGJveAotICBmaWxlcyBvbiBmbHVzaCgpLgorLSBJc3N1ZSAjNDQ4OTogQWRkIGEgc2h1dGlsLnJtdHJlZSB0aGF0IGlzbid0IHN1c2NlcHRpYmxlIHRvIHN5bWxpbmsgYXR0YWNrcy4KKyAgSXQgaXMgdXNlZCBhdXRvbWF0aWNhbGx5IG9uIHBsYXRmb3JtcyBzdXBwb3J0aW5nIHRoZSBuZWNlc3Nhcnkgb3Mub3BlbmF0KCkKKyAgYW5kIG9zLnVubGlua2F0KCkgZnVuY3Rpb25zLiBNYWluIGNvZGUgYnkgTWFydGluIHZvbiBMw7Z3aXMuCiAKLS0gSXNzdWUgIzEwNTcxOiBGaXggdGhlICItLXNpZ24iIG9wdGlvbiBvZiBkaXN0dXRpbHMnIHVwbG9hZCBjb21tYW5kLgotICBQYXRjaCBieSBKYWt1YiBXaWxrLgorLSBJc3N1ZSAjMTUxNTY6IEhUTUxQYXJzZXIgbm93IHVzZXMgdGhlIG5ldyAiaHRtbC5lbnRpdGllcy5odG1sNSIgZGljdGlvbmFyeS4KIAotLSBJc3N1ZSAjOTU1OTogSWYgbWVzc2FnZXMgd2VyZSBvbmx5IGFkZGVkLCBhIG5ldyBmaWxlIGlzIG5vIGxvbmdlcgotICBjcmVhdGVkIGFuZCByZW5hbWVkIG92ZXIgdGhlIG9sZCBmaWxlIHdoZW4gZmx1c2goKSBpcyBjYWxsZWQgb24gYW4KLSAgbWJveCwgTU1ERiBvciBCYWJ5bCBtYWlsYm94LgorLSBJc3N1ZSAjMTExMTM6IGFkZCBhIG5ldyAiaHRtbDUiIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbmFtZWQgY2hhcmFjdGVyCisgIHJlZmVyZW5jZXMgZGVmaW5lZCBieSB0aGUgSFRNTDUgc3RhbmRhcmQgYW5kIHRoZSBlcXVpdmFsZW50IFVuaWNvZGUKKyAgY2hhcmFjdGVyKHMpIHRvIHRoZSBodG1sLmVudGl0aWVzIG1vZHVsZS4KKworLSBJc3N1ZSAjMTUxMTQ6IHRoZSBzdHJpY3QgbW9kZSBvZiBIVE1MUGFyc2VyIGFuZCB0aGUgSFRNTFBhcnNlRXJyb3IgZXhjZXB0aW9uCisgIGFyZSBkZXByZWNhdGVkIG5vdyB0aGF0IHRoZSBwYXJzZXIgaXMgYWJsZSB0byBwYXJzZSBpbnZhbGlkIG1hcmt1cC4KKworLSBJc3N1ZSAjMzY2NTogXHUgYW5kIFxVIGVzY2FwZXMgYXJlIG5vdyBzdXBwb3J0ZWQgaW4gdW5pY29kZSByZWd1bGFyCisgIGV4cHJlc3Npb25zLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUxNTM6IEFkZGVkIGluc3BlY3QuZ2V0Z2VuZXJhdG9ybG9jYWxzIHRvIHNpbXBsaWZ5IHdoaXRlIGJveAorICB0ZXN0aW5nIG9mIGdlbmVyYXRvciBzdGF0ZSB1cGRhdGVzCisKKy0gSXNzdWUgIzEzMDYyOiBBZGRlZCBpbnNwZWN0LmdldGNsb3N1cmV2YXJzIHRvIHNpbXBsaWZ5IHRlc3Rpbmcgc3RhdGVmdWwKKyAgY2xvc3VyZXMKKworLSBJc3N1ZSAjMTEwMjQ6IEZpeGVzIGFuZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBUaW1lMkludGVybmFsZGF0ZS4KKworLSBJc3N1ZSAjMTQ2MjY6IExhcmdlIHJlZmFjdG9yaW5nIG9mIGZ1bmN0aW9ucyAvIHBhcmFtZXRlcnMgaW4gdGhlIG9zIG1vZHVsZS4KKyAgTWFueSBmdW5jdGlvbnMgbm93IHN1cHBvcnQgImRpcl9mZCIgYW5kICJmb2xsb3dfc3ltbGlua3MiIHBhcmFtZXRlcnM7CisgIHNvbWUgYWxzbyBzdXBwb3J0IGFjY2VwdGluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBpbiBwbGFjZSBvZiBvZiBhIHBhdGgKKyAgc3RyaW5nLiAgQWRkZWQgb3Muc3VwcG9ydF8qIGNvbGxlY3Rpb25zIGFzIExCWUwgaGVscGVycy4gIFJlbW92ZWQgbWFueQorICBmdW5jdGlvbnMgb25seSBwcmV2aW91c2x5IHNlZW4gaW4gMy4zIGFscGhhIHJlbGVhc2VzIChvZnRlbiBzdGFydGluZyB3aXRoCisgICJmIiBvciAibCIsIG9yIGVuZGluZyB3aXRoICJhdCIpLiAgT3JpZ2luYWxseSBzdWdnZXN0ZWQgYnkgU2VyaGl5IFN0b3JjaGFrYTsKKyAgaW1wbGVtZW50ZWQgYnkgTGFycnkgSGFzdGluZ3MuCisKKy0gSXNzdWUgIzE1MDA4OiBJbXBsZW1lbnQgUEVQIDM2MiAiU2lnbmF0dXJlIE9iamVjdHMiLgorICBQYXRjaCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLSBJc3N1ZTogIzE1MTM4OiBiYXNlNjQudXJsc2FmZV97ZW4sZGV9Y29kZSgpIGFyZSBub3cgMy00eCBmYXN0ZXIuCisKKy0gSXNzdWUgIzQ0NDU4MjogQWRkIHNodXRpbC53aGljaCwgZm9yIGZpbmRpbmcgcHJvZ3JhbXMgb24gdGhlIHN5c3RlbSBwYXRoLgorICBPcmlnaW5hbCBwYXRjaCBieSBFcmlrIERlbWFpbmUsIHdpdGggbGF0ZXIgaXRlcmF0aW9ucyBieSBKYW4gS2lsbGlhbgorICBhbmQgQnJpYW4gQ3VydGluLgorCistIElzc3VlICMxNDgzNzogU1NMIGVycm9ycyBub3cgaGF2ZSBgYGxpYnJhcnlgYCBhbmQgYGByZWFzb25gYCBhdHRyaWJ1dGVzCisgIGRlc2NyaWJpbmcgcHJlY2lzZWx5IHdoYXQgaGFwcGVuZWQgYW5kIGluIHdoaWNoIE9wZW5TU0wgc3VibW9kdWxlLiAgVGhlCisgIHN0cigpIG9mIGEgU1NMRXJyb3IgaXMgYWxzbyBlbmhhbmNlZCBhY2NvcmRpbmdseS4KKworLSBJc3N1ZSAjOTUyNzogZGF0ZXRpbWUuYXN0aW1lem9uZSgpIG1ldGhvZCB3aWxsIG5vdyBzdXBwbHkgYSBjbGFzcworICB0aW1lem9uZSBpbnN0YW5jZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzeXN0ZW0gbG9jYWwgdGltZXpvbmUgd2hlbgorICBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMuCiAKIC0gSXNzdWUgIzE0NjUzOiBlbWFpbC51dGlscy5ta3RpbWVfdHooKSBubyBsb25nZXIgcmVsaWVzIG9uIHN5c3RlbQogICBta3RpbWUoKSB3aGVuIHRpbWV6b25lIG9mZmVzdCBpcyBzdXBwbGllZC4KIAorLSBJc3N1ZSAjMTQ2ODQ6IHpsaWIuY29tcHJlc3NvYmooKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkgbm93IHN1cHBvcnQgdGhlIHVzZQorICBvZiBwcmVkZWZpbmVkIGNvbXByZXNzaW9uIGRpY3Rpb25hcmllcy4gT3JpZ2luYWwgcGF0Y2ggYnkgU2FtIFJ1c2hpbmcuCisKIC0gRml4IEd6aXBGaWxlJ3MgaGFuZGxpbmcgb2YgZmlsZW5hbWVzIGdpdmVuIGFzIGJ5dGVzIG9iamVjdHMuCiAKKy0gSXNzdWUgIzE0NzcyOiBSZXR1cm4gZGVzdGluYXRpb24gdmFsdWVzIGZyb20gc29tZSBzaHV0aWwgZnVuY3Rpb25zLgorCistIElzc3VlICMxNTA2NDogSW1wbGVtZW50IGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBmb3IgbXVsdGlwcm9jZXNzaW5nIHR5cGVzCisKIC0gSXNzdWUgIzE1MTAxOiBNYWtlIHBvb2wgZmluYWxpemVyIGF2b2lkIGpvaW5pbmcgY3VycmVudCB0aHJlYWQuCiAKKy0gSXNzdWUgIzE0NjU3OiBUaGUgZnJvemVuIGluc3RhbmNlIG9mIGltcG9ydGxpYiB1c2VkIGZvciBib290c3RyYXAgaXMgbm93CisgIGFsc28gdGhlIG1vZHVsZSBpbXBvcnRlZCBhcyBpbXBvcnRsaWIuX2Jvb3RzdHJhcC4KKworLSBJc3N1ZSAjMTQwNTU6IEFkZCBfX3NpemVvZl9fIHN1cHBvcnQgdG8gX2VsZW1lbnR0cmVlLgorCistIElzc3VlICMxNTA1NDogQSBidWcgaW4gdG9rZW5pemUudG9rZW5pemUgdGhhdCBjYXVzZWQgc3RyaW5nIGxpdGVyYWxzCisgIHdpdGggJ2InIHByZWZpeGVzIHRvIGJlIGluY29ycmVjdGx5IHRva2VuaXplZCBoYXMgYmVlbiBmaXhlZC4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTUwMDY6IEFsbG93IGVxdWFsaXR5IGNvbXBhcmlzb24gYmV0d2VlbiBuYWl2ZSBhbmQgYXdhcmUKKyAgdGltZSBvciBkYXRldGltZSBvYmplY3RzLgorCistIElzc3VlICMxNDk4MjogRG9jdW1lbnQgdGhhdCBwa2d1dGlsJ3MgaXRlcmF0aW9uIGZ1bmN0aW9ucyByZXF1aXJlIHRoZQorICBub24tc3RhbmRhcmQgaXRlcl9tb2R1bGVzKCkgbWV0aG9kIHRvIGJlIGRlZmluZWQgYnkgYW4gaW1wb3J0ZXIgKHNvbWV0aGluZworICB0aGUgaW1wb3J0bGliIGltcG9ydGVycyBkbyBub3QgZGVmaW5lKS4KKwogLSBJc3N1ZSAjMTUwMzY6IE1haWxib3ggbm8gbG9uZ2VyIHRocm93cyBhbiBlcnJvciBpZiBhIGZsdXNoIGlzIGRvbmUKICAgYmV0d2VlbiBvcGVyYXRpb25zIHdoZW4gcmVtb3Zpbmcgb3IgY2hhbmdpbmcgbXVsdGlwbGUgaXRlbXMgaW4gbWJveCwKICAgTU1ERiwgb3IgQmFieWwgbWFpbGJveGVzLgogCi0tIElzc3VlICMxMDEzMzogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZGVhbGxvY2F0ZSBidWZmZXIgaWYgc29ja2V0IHJlYWQKLSAgZmFpbHMuICBQYXRjaCBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgorLSBJc3N1ZSAjMTQwNTk6IEltcGxlbWVudCBtdWx0aXByb2Nlc3NpbmcuQmFycmllci4KKworLSBJc3N1ZSAjMTUwNjE6IFRoZSBpbmFwcHJvcHJpYXRlbHkgbmFtZWQgaG1hYy5zZWN1cmVfY29tcGFyZSBoYXMgYmVlbgorICByZW5hbWVkIHRvIGhtYWMuY29tcGFyZV9kaWdlc3QsIHJlc3RyaWN0ZWQgdG8gb3BlcmF0aW5nIG9uIGJ5dGVzIGlucHV0cworICBvbmx5IGFuZCBoYWQgaXRzIGRvY3VtZW50YXRpb24gdXBkYXRlZCB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBib3RoIGl0cworICBpbnRlbnQgYW5kIGl0cyBsaW1pdGF0aW9ucworCistIElzc3VlICMxMzg0MTogTWFrZSBjaGlsZCBwcm9jZXNzZXMgZXhpdCB1c2luZyBzeXMuZXhpdCgpIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzE0OTM2OiBjdXJzZXNfcGFuZWwgd2FzIGNvbnZlcnRlZCB0byBQRVAgMzEyMSBhbmQgUEVQIDM4NCBBUEkuCisgIFBhdGNoIGJ5IFJvYmluIFNjaHJlaWJlci4KKworLSBJc3N1ZSAjMTY2NzU0NjogT24gcGxhdGZvcm1zIHN1cHBvcnRpbmcgdG1fem9uZSBhbmQgdG1fZ210b2ZmIGZpZWxkcworICBpbiBzdHJ1Y3QgdG0sIHRpbWUuc3RydWN0X3RpbWUgb2JqZWN0cyByZXR1cm5lZCBieSB0aW1lLmdtdGltZSgpLAorICB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLnN0cnB0aW1lKCkgZnVuY3Rpb25zIG5vdyBoYXZlIHRtX3pvbmUgYW5kCisgIHRtX2dtdG9mZiBhdHRyaWJ1dGVzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUGF1bCBCb2RkaWUuCisKKy0gUmVuYW1lIGFkanVzdGVkIGF0dHJpYnV0ZSB0byBhZGp1c3RhYmxlIGluIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSByZXN1bHQuCisKKy0gSXNzdWUgIzM1MTg6IFJlbW92ZSByZWZlcmVuY2VzIHRvIG5vbi1leGlzdGVudCBCYXNlTWFuYWdlci5mcm9tX2FkZHJlc3MoKQorICBtZXRob2QuCisKKy0gSXNzdWUgIzEzODU3OiBBZGRlZCB0ZXh0d3JhcC5pbmRlbnQoKSBmdW5jdGlvbiAoaW5pdGlhbCBwYXRjaCBieSBFenJhCisgIEJlcmNoKQorCistIElzc3VlICMyNzM2OiBBZGRlZCBkYXRldGltZS50aW1lc3RhbXAoKSBtZXRob2QuCiAKIC0gSXNzdWUgIzEzODU0OiBNYWtlIG11bHRpcHJvY2Vzc2luZyBwcm9wZXJseSBoYW5kbGUgbm9uLWludGVnZXIKICAgbm9uLXN0cmluZyBhcmd1bWVudCB0byBTeXN0ZW1FeGl0LgpAQCAtMzE4LDE0ICsxMDUzLDE3MSBAQAogLSBJc3N1ZSAjMTIxNTc6IE1ha2UgcG9vbC5tYXAoKSBlbXB0eSBpdGVyYWJsZXMgY29ycmVjdGx5LiAgSW5pdGlhbAogICBwYXRjaCBieSBtb3VhZC4KIAorLSBJc3N1ZSAjMTE4MjM6IGRpc2Fzc2VtYmx5IG5vdyBzaG93cyBhcmd1bWVudCBjb3VudHMgb24gY2FsbHMgd2l0aCBrZXl3b3JkIGFyZ3MuCisKKy0gSXNzdWUgIzE0NzExOiBvcy5zdGF0X2Zsb2F0X3RpbWVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZC4KKworLSBMWk1BRmlsZSBub3cgYWNjZXB0cyB0aGUgbW9kZXMgInJiIi8id2IiLyJhYiIgYXMgc3lub255bXMgb2YgInIiLyJ3Ii8iYSIuCisKKy0gVGhlIGJ6MiBhbmQgbHptYSBtb2R1bGVzIG5vdyBlYWNoIGNvbnRhaW4gYW4gb3BlbigpIGZ1bmN0aW9uLCBhbGxvd2luZworICBjb21wcmVzc2VkIGZpbGVzIHRvIHJlYWRpbHkgYmUgb3BlbmVkIGluIHRleHQgbW9kZSBhcyB3ZWxsIGFzIGJpbmFyeSBtb2RlLgorCistIEJaMkZpbGUuX19pbml0X18oKSBhbmQgTFpNQUZpbGUuX19pbml0X18oKSBub3cgYWNjZXB0IGEgZmlsZSBvYmplY3QgYXMgdGhlaXIKKyAgZmlyc3QgYXJndW1lbnQsIHJhdGhlciB0aGFuIHJlcXVpcmluZyBhIHNlcGFyYXRlICJmaWxlb2JqIiBhcmd1bWVudC4KKworLSBnemlwLm9wZW4oKSBub3cgYWNjZXB0cyBmaWxlIG9iamVjdHMgYXMgd2VsbCBhcyBmaWxlbmFtZXMuCisKIC0gSXNzdWUgIzE0OTkyOiBvcy5tYWtlZGlycyhwYXRoLCBleGlzdF9vaz1UcnVlKSB3b3VsZCByYWlzZSBhbiBPU0Vycm9yCiAgIHdoZW4gdGhlIHBhdGggZXhpc3RlZCBhbmQgaGFkIHRoZSBTX0lTR0lEIG1vZGUgYml0IHNldCB3aGVuIGl0IHdhcwogICBub3QgZXhwbGljaXRseSBhc2tlZCBmb3IuICBUaGlzIGlzIG5vIGxvbmdlciBhbiBleGNlcHRpb24gYXMgbWtkaXIKICAgY2Fubm90IGNvbnRyb2wgaWYgdGhlIE9TIHNldHMgdGhhdCBiaXQgZm9yIGl0IG9yIG5vdC4KIAorLSBJc3N1ZSAjMTQ5ODk6IE1ha2UgdGhlIENHSSBlbmFibGUgb3B0aW9uIHRvIGh0dHAuc2VydmVyIGF2YWlsYWJsZSB2aWEgY29tbWFuZAorICBsaW5lLgorCistIElzc3VlICMxNDk4NzogQWRkIGEgbWlzc2luZyBpbXBvcnQgc3RhdGVtZW50IHRvIGluc3BlY3QuCisKKy0gSXNzdWUgIzEwNzk6IGVtYWlsLmhlYWRlci5kZWNvZGVfaGVhZGVyIG5vdyBjb3JyZWN0bHkgcGFyc2VzIGFsbCB0aGUgZXhhbXBsZXMKKyAgaW4gUkZDMjA0Ny4gIFRoZXJlIGlzIGEgbmVjZXNzYXJ5IHZpc2libGUgYmVoYXZpb3IgY2hhbmdlOiB0aGUgbGVhZGluZyBhbmQvb3IKKyAgdHJhaWxpbmcgd2hpdGVzcGFjZSBvbiBBU0NJSSBwYXJ0cyBpcyBub3cgcHJlc2VydmVkLgorCistIElzc3VlICMxNDk2OTogQmV0dGVyIGhhbmRsaW5nIG9mIGV4Y2VwdGlvbiBjaGFpbmluZyBpbiBjb250ZXh0bGliLkV4aXRTdGFjaworCiAtIElzc3VlICMxNDk2MjogVXBkYXRlIHRleHQgY29sb3JpbmcgaW4gSURMRSBzaGVsbCB3aW5kb3cgYWZ0ZXIgY2hhbmdpbmcKICAgb3B0aW9ucy4gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgogCistIElzc3VlICMxNDk2MzogQ29udmVydCBjb250ZXh0bGliLkV4aXRTdGFjay5fX2V4aXRfXyB0byB1c2UgYW4gaXRlcmF0aXZlCisgIGFsZ29yaXRobSAoUGF0Y2ggYnkgQWxvbiBIb3JldikKKworLSBJc3N1ZSAjMTQ3ODU6IEFkZCBzeXMuX2RlYnVnbWFsbG9jc3RhdHMoKSB0byBoZWxwIGRlYnVnIGxvdy1sZXZlbCBtZW1vcnkKKyAgYWxsb2NhdGlvbiBpc3N1ZXMKKworLSBJc3N1ZSAjMTQ0NDM6IEVuc3VyZSB0aGF0IC5weSBmaWxlcyBhcmUgYnl0ZS1jb21waWxlZCB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbgorICBleGVjdXRhYmxlIHdpdGhpbiBiZGlzdF9ycG0gZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBSUE0KKworQy1BUEkKKy0tLS0tCisKKy0gSXNzdWUgIzEzNzgzOiBJbmFkdmVydGVudCBhZGRpdGlvbnMgdG8gdGhlIHB1YmxpYyBDIEFQSSBpbiB0aGUgUEVQIDM4MAorICBpbXBsZW1lbnRhdGlvbiBoYXZlIGVpdGhlciBiZWVuIHJlbW92ZWQgb3IgbWFya2VkIGFzIHByaXZhdGUgaW50ZXJmYWNlcy4KKworRXh0ZW5zaW9uIE1vZHVsZXMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE1MDAwOiBTdXBwb3J0IHRoZSAidW5pcXVlIiB4MzIgYXJjaGl0ZWN0dXJlIGluIF9wb3NpeHN1YnByb2Nlc3MuYy4KKworRG9jdW1lbnRhdGlvbgorLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNTA4MTogRG9jdW1lbnQgUHlTdGF0ZV9GaW5kTW9kdWxlLgorICBQYXRjaCBieSBSb2JpbiBTY2hyZWliZXIuCisKKy0gSXNzdWUgIzE0ODE0OiBBZGRlZCBmaXJzdCBkcmFmdCBvZiBpcGFkZHJlc3MgbW9kdWxlIEFQSSByZWZlcmVuY2UKKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzE0NzY5OiB0ZXN0X2NhcGkgbm93IGhhcyBTa2lwaXRlbVRlc3QsIHdoaWNoIGNsZXZlcmx5IGNoZWNrcworICBmb3IgInBhcml0eSIgYmV0d2VlbiBQeUFyZ19QYXJzZVR1cGxlKCkgYW5kIHRoZSBQeXRob24vZ2V0YXJncy5jIHN0YXRpYworICBmdW5jdGlvbiBza2lwaXRlbSgpIGZvciBhbGwgcG9zc2libGUgImZvcm1hdCB1bml0cyIuCisKKy0gdGVzdF9ubnRwbGliIG5vdyB0b2xlcmF0ZXMgYmVpbmcgcnVuIGZyb20gYmVoaW5kIE5OVFAgZ2F0ZXdheXMgdGhhdCBhZGQKKyAgIlgtQW50aXZpcnVzIiBoZWFkZXJzIHRvIGFydGljbGVzCisKKy0gSXNzdWUgIzE1MDQzOiB0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MKKyAgYmxvY2sgbG9hZGluZyBvZiB0aGUgZ2RiIGhvb2tzCisKKy0gSXNzdWUgIzE0OTYzOiBBZGQgdGVzdCBjYXNlcyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nIGJlaGF2aW91cgorICBpbiBjb250ZXh0bGliLkV4aXRTdGFjayAoSW5pdGlhbCBwYXRjaCBieSBBbG9uIEhvcmV2KQorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTM1OTA6IEltcHJvdmUgc3VwcG9ydCBmb3IgT1MgWCBYY29kZSA0OgorICAgICogVHJ5IHRvIGF2b2lkIGJ1aWxkaW5nIFB5dGhvbiBvciBleHRlbnNpb24gbW9kdWxlcyB3aXRoIHByb2JsZW1hdGljCisgICAgICBsbHZtLWdjYyBjb21waWxlci4KKyAgICAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93CisgICAgICBjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGF1dG9tYXRpY2FsbHkgcmVtb3ZlIHBwYyBhbmQKKyAgICAgIHBwYzY0IGFyY2hzIHdoZW4gbm90IGF2YWlsYWJsZS4KKyAgICAqIFNpbmNlIFhjb2RlIDQgbm8gbG9uZ2VyIGluc3RhbGwgU0RLcyBpbiBkZWZhdWx0IGxvY2F0aW9ucywKKyAgICAgIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcgaW5zdGFsbGVkIGhlYWRlcnMKKyAgICAgIGFuZCBsaWJzIGlmIHRoZSBTREsgdXNlZCB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90CisgICAgICBhdmFpbGFibGUuCisgICAgKiBVcGRhdGUgLi9jb25maWd1cmUgdG8gdXNlIGJldHRlciBkZWZhdWx0cyBmb3IgdW5pdmVyc2FsIGJ1aWxkczsKKyAgICAgIGluIHBhcnRpY3VsYXIsIC0tZW5hYmxlLXVuaXZlcnNhbHNkaz15ZXMgdXNlcyB0aGUgWGNvZGUgZGVmYXVsdAorICAgICAgU0RLIGFuZCAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIG5vdyBkZWZhdWx0cyB0byAiaW50ZWwiIGlmIHBwYworICAgICAgbm90IGF2YWlsYWJsZS4KKworLSBJc3N1ZSAjMTQyMjU6IEZpeCBVbmljb2RlIHN1cHBvcnQgZm9yIGN1cnNlcyAoIzEyNTY3KSBvbiBPUyBYCisKKy0gSXNzdWUgIzE0OTI4OiBGaXggaW1wb3J0bGliIGJvb3RzdHJhcCBpc3N1ZXMgYnkgdXNpbmcgYSBjdXN0b20gZXhlY3V0YWJsZQorICAoTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYikgdG8gYnVpbGQgUHl0aG9uL2ltcG9ydGxpYi5oLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuMy4wIEFscGhhIDQ/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAzMS1NYXktMjAxMioKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0ODM1OiBNYWtlIHBsaXN0bGliIG91dHB1dCBlbXB0eSBhcnJheXMgJiBkaWN0cyBsaWtlIE9TIFguCisgIFBhdGNoIGJ5IFNpZG5leSBTYW4gTWFydMOtbi4KKworLSBJc3N1ZSAjMTQ3NDQ6IFVzZSB0aGUgbmV3IF9QeVVuaWNvZGVXcml0ZXIgaW50ZXJuYWwgQVBJIHRvIHNwZWVkIHVwCisgIHN0ciVhcmdzIGFuZCBzdHIuZm9ybWF0KGFyZ3MpLgorCistIElzc3VlICMxNDkzMDogTWFrZSBtZW1vcnl2aWV3IG9iamVjdHMgd2Vha3JlZmFibGUuCisKKy0gSXNzdWUgIzE0Nzc1OiBGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlCisgIGNvbGxlY3RvciByZXBlYXRlZGx5IHRyeWluZyB0byB1bnRyYWNrIGRpY3RzLgorCistIElzc3VlICMxNDg1NzogZml4IHJlZ3Jlc3Npb24gaW4gcmVmZXJlbmNlcyB0byBQRVAgMzEzNSBpbXBsaWNpdCBfX2NsYXNzX18KKyAgY2xvc3VyZSB2YXJpYWJsZSAoUmVvcGVucyBpc3N1ZSAjMTIzNzApCisKKy0gSXNzdWUgIzE0NzEyIChQRVAgNDA1KTogVmlydHVhbCBlbnZpcm9ubWVudHMuIEltcGxlbWVudGVkIGJ5IFZpbmF5IFNhamlwLgorCistIElzc3VlICMxNDY2MCAoUEVQIDQyMCk6IE5hbWVzcGFjZSBwYWNrYWdlcy4gSW1wbGVtZW50ZWQgYnkgRXJpYyBTbWl0aC4KKworLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKKyAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgorICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCisKKy0gSXNzdWUgIzkyNjA6IEEgZmluZXItZ3JhaW5lZCBpbXBvcnQgbG9jay4gIE1vc3Qgb2YgdGhlIGltcG9ydCBzZXF1ZW5jZQorICBub3cgdXNlcyBwZXItbW9kdWxlIGxvY2tzIHJhdGhlciB0aGFuIHRoZSBnbG9iYWwgaW1wb3J0IGxvY2ssIGVsaW1pbmF0aW5nCisgIHdlbGwta25vd24gaXNzdWVzIHdpdGggdGhyZWFkcyBhbmQgaW1wb3J0cy4KKworLSBJc3N1ZSAjMTQ2MjQ6IFVURi0xNiBkZWNvZGluZyBpcyBub3cgM3ggdG8gNHggZmFzdGVyIG9uIHZhcmlvdXMgaW5wdXRzLgorICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIGFzZGxfc2VxIGFuZCBhc2RsX2ludF9zZXEgYXJlIG5vdyBQeV9zc2l6ZV90IHNpemVkLgorCistIElzc3VlICMxNDEzMyAoUEVQIDQxNSk6IEltcGxlbWVudCBzdXBwcmVzc2lvbiBvZiBfX2NvbnRleHRfXyBkaXNwbGF5IHdpdGggYW4KKyAgYXR0cmlidXRlIG9uIEJhc2VFeGNlcHRpb24uIFRoaXMgcmVwbGFjZXMgdGhlIG9yaWdpbmFsIG1lY2hhbmlzbSBvZiBQRVAgNDA5LgorCistIElzc3VlICMxNDQxNzogTXV0YXRpbmcgYSBkaWN0IGR1cmluZyBsb29rdXAgbm93IHJlc3RhcnRzIHRoZSBsb29rdXAgaW5zdGVhZAorICBvZiByYWlzaW5nIGEgUnVudGltZUVycm9yICh1bmRvZXMgaXNzdWUgIzE0MjA1KS4KKworLSBJc3N1ZSAjMTQ3Mzg6IFNwZWVkLXVwIFVURi04IGRlY29kaW5nIG9uIG5vbi1BU0NJSSBkYXRhLiAgUGF0Y2ggYnkgU2VyaGl5CisgIFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQ3MDA6IEZpeCB0d28gYnJva2VuIGFuZCB1bmRlZmluZWQtYmVoYXZpb3VyLWluZHVjaW5nIG92ZXJmbG93IGNoZWNrcworICBpbiBvbGQtc3R5bGUgc3RyaW5nIGZvcm1hdHRpbmcuCisKKy0gSXNzdWUgIzE0NzA1OiBUaGUgUHlBcmdfUGFyc2UoKSBmYW1pbHkgb2YgZnVuY3Rpb25zIG5vdyBzdXBwb3J0IHRoZSAncCcgZm9ybWF0CisgIHVuaXQsIHdoaWNoIGFjY2VwdHMgYSAiYm9vbGVhbiBwcmVkaWNhdGUiIGFyZ3VtZW50LiAgSXQgY29udmVydHMgYW55IFB5dGhvbgorICB2YWx1ZSBpbnRvIGFuIGludGVnZXItLTAgaWYgaXQgaXMgImZhbHNlIiwgYW5kIDEgb3RoZXJ3aXNlLgorCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzE0NjkwOiBVc2UgbW9ub3RvbmljIGNsb2NrIGluc3RlYWQgb2Ygc3lzdGVtIGNsb2NrIGluIHRoZSBzY2hlZCwKKyAgc3VicHJvY2VzcyBhbmQgdHJhY2UgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTQ5NTg6IENoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kCisgIGJ5dGUgbGl0ZXJhbHMgc3VwcG9ydGVkIGluIFB5dGhvbiAzLjMuCisKIC0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgogCiAtIElzc3VlICMxNDQ0MzogVGVsbCBycG1idWlsZCB0byB1c2UgdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBQeXRob24gaW4KQEAgLTMzNCwyOSArMTIyNiw3MCBAQAogLSBJc3N1ZSAjMTQ5Mjk6IFN0b3AgSWRsZSAzLnggZnJvbSBjbG9zaW5nIG9uIFVuaWNvZGUgZGVjb2RlIGVycm9ycyB3aGVuCiAgIGdyZXBwaW5nLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjMTI1MTU6IGVtYWlsIG5vdyByZWdpc3RlcnMgYSBkZWZlY3QgaWYgaXQgZ2V0cyB0byBFT0Ygd2hpbGUgcGFyc2luZworICBhIE1JTUUgcGFydCB3aXRob3V0IHNlZWluZyB0aGUgY2xvc2luZyBNSU1FIGJvdW5kYXJ5LgorCiAtIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSWRsZS4KICAgT3RoZXIgdG9vbHRpcHNzIGhhdmUgYmVlbiBjb3JyZWN0ZWQgb3IgaW1wcm92ZWQgYW5kIHRoZSBudW1iZXIgb2YgdGVzdHMKICAgaGFzIGJlZW4gdHJpcGxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzE2NzI1Njg6IGVtYWlsIG5vdyBhbHdheXMgZGVjb2RlcyBiYXNlNjQgcGF5bG9hZHMsIGFkZGluZyBwYWRkaW5nIGFuZAorICBpZ25vcmluZyBub24tYmFzZTY0LWFscGhhYmV0IGNoYXJhY3RlcnMgaWYgbmVlZGVkLCBhbmQgcmVnaXN0ZXJpbmcgZGVmZWN0cworICBmb3IgYW55IHN1Y2ggcHJvYmxlbXMuCisKKy0gSXNzdWUgIzE0OTI1OiBlbWFpbCBub3cgcmVnaXN0ZXJzIGEgZGVmZWN0IHdoZW4gdGhlIHBhcnNlciBkZWNpZGVzIHRoYXQgdGhlcmUKKyAgaXMgYSBtaXNzaW5nIGhlYWRlci9ib2R5IHNlcGFyYXRvciBsaW5lLiAgTWFsZm9ybWVkSGVhZGVyRGVmZWN0LCB3aGljaCB0aGUKKyAgZXhpc3RpbmcgY29kZSB3b3VsZCBuZXZlciBhY3R1YWxseSBnZW5lcmF0ZSwgaXMgZGVwcmVjYXRlZC4KKwogLSBJc3N1ZSAjMTAzNjU6IEZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuCiAgIHRoZSBwYXJlbnQgd2luZG93IGlzIGNsb3NlZCBiZWZvcmUgdGhlIGRpYWxvZy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzg3Mzk6IFVwZGF0ZWQgc210cGQgdG8gc3VwcG9ydCBSRkMgNTMyMSwgYW5kIGFkZGVkIHN1cHBvcnQgZm9yIHRoZQorICBSRkMgMTg3MCBTSVpFIGV4dGVuc2lvbi4KKworLSBJc3N1ZSAjNjY1MTk0OiBBZGRlZCBhIGxvY2FsdGltZSBmdW5jdGlvbiB0byBlbWFpbC51dGlscyB0byBwcm92aWRlIGFuCisgIGF3YXJlIGxvY2FsIGRhdGV0aW1lIGZvciB1c2UgaW4gc2V0dGluZyBEYXRlIGhlYWRlcnMuCisKKy0gSXNzdWUgIzEyNTg2OiBBZGRlZCBuZXcgcHJvdmlzaW9uYWwgcG9saWNpZXMgdGhhdCBpbXBsZW1lbnQgY29udmVuaWVudAorICB1bmljb2RlIHN1cHBvcnQgZm9yIGVtYWlsIGhlYWRlcnMuICBTZWUgV2hhdCdzIE5ldyBmb3IgZGV0YWlscy4KKworLSBJc3N1ZSAjMTQ3MzE6IFJlZmFjdG9yZWQgZW1haWwgUG9saWN5IGZyYW1ld29yayB0byBzdXBwb3J0IGZ1bGwgYmFja3dhcmQKKyAgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLjIgYnkgZGVmYXVsdCB5ZXQgYWxsb3cgZm9yIHRoZSBpbnRyb2R1Y3Rpb24gb2YKKyAgbmV3IGZlYXR1cmVzIHRocm91Z2ggbmV3IHBvbGljaWVzLiAgTm90ZSB0aGF0IFBvbGljeS5tdXN0X2JlXzdiaXQgaXMgcmVuYW1lZAorICB0byBjdGVfdHlwZS4KKwogLSBJc3N1ZSAjMTQ4NzY6IFVzZSB1c2VyLXNlbGVjdGVkIGZvbnQgZm9yIGhpZ2hsaWdodCBjb25maWd1cmF0aW9uLgogCiAtIElzc3VlICMxNDkyMDogRml4IHRoZSBoZWxwKHVybGxpYi5wYXJzZSkgZmFpbHVyZSBvbiBsb2NhbGUgQyBvbiB0ZXJtaW5hbHMuCiAgIEhhdmUgYXNjaWkgY2hhcmFjdGVycyBpbiBoZWxwLgogCistIElzc3VlICMxNDU0ODogTWFrZSBtdWx0aXByb2Nlc3NpbmcgZmluYWxpemVycyBjaGVjayBwaWQgYmVmb3JlCisgIHJ1bm5pbmcgdG8gY29wZSB3aXRoIHBvc3NpYmlsaXR5IG9mIGdjIHJ1bm5pbmcganVzdCBhZnRlciBmb3JrLgorCiAtIElzc3VlICMxNDg2MzogVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIG9mIG9zLmZkb3BlbigpIHRvIHJlZmxlY3QgdGhlCiAgIGZhY3QgdGhhdCBpdCdzIG9ubHkgYSB0aGluIHdyYXBwZXIgYXJvdW5kIG9wZW4oKSBhbnltb3JlLgogCiAtIElzc3VlICMxNDAzNjogQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMKICAgbm90IGdvIGluIGlsbGVnYWwgcmFuZ2UgYW5kIHJldHVybnMgTm9uZS4KIAorLSBJc3N1ZSAjMTQ4NjI6IEFkZCBtaXNzaW5nIG5hbWVzIHRvIG9zLl9fYWxsX18KKwogLSBJc3N1ZSAjMTQ4NzU6IFVzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KIAorLSBJc3N1ZSAjMTM1ODU6IEFkZGVkIGNvbnRleHRsaWIuRXhpdFN0YWNrCisKKy0gUEVQIDMxNDQsIElzc3VlICMxNDgxNDogQWRkZWQgdGhlIGlwYWRkcmVzcyBtb2R1bGUKKwogLSBJc3N1ZSAjMTQ0MjY6IENvcnJlY3QgdGhlIERhdGUgZm9ybWF0IGluIEV4cGlyZXMgYXR0cmlidXRlIG9mIFNldC1Db29raWUKICAgSGVhZGVyIGluIENvb2tpZS5weS4KIAorLSBJc3N1ZSAjMTQ1ODg6IFRoZSB0eXBlcyBtb2R1bGUgbm93IHByb3ZpZGUgbmV3X2NsYXNzKCkgYW5kIHByZXBhcmVfY2xhc3MoKQorICBmdW5jdGlvbnMgdG8gc3VwcG9ydCBQRVAgMzExNSBjb21wbGlhbnQgZHluYW1pYyBjbGFzcyBjcmVhdGlvbi4gUGF0Y2ggYnkKKyAgRGFuaWVsIFVyYmFuIGFuZCBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzEzMTUyOiBBbGxvdyB0byBzcGVjaWZ5IGEgY3VzdG9tIHRhYnNpemUgZm9yIGV4cGFuZGluZyB0YWJzIGluCisgIHRleHR3cmFwLiBQYXRjaCBieSBKb2huIEZldWVyc3RlaW4uCisKIC0gSXNzdWUgIzE0NzIxOiBTZW5kIHRoZSBjb3JyZWN0ICdDb250ZW50LWxlbmd0aDogMCcgaGVhZGVyIHdoZW4gdGhlIGJvZHkgaXMgYW4KICAgZW1wdHkgc3RyaW5nICcnLiBJbml0aWFsIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEFydmUgS251ZHNlbi4KIApAQCAtMzcwLDI1ICsxMzAzLDc2IEBACiAgIHdoZW4gdGhlIGZpcnN0IHBhcnQgb2YgYSBkb3R0ZWQgbmFtZSBpcyBub3QgYSBwYWNrYWdlLiBQYXRjaCBieQogICBYYXZpZXIgZGUgR2F5ZS4KIAorLSBJc3N1ZSAjMTIwOTg6IG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIG5vdyBzdGFydHMgY2hpbGQgcHJvY2Vzc2VzCisgIHVzaW5nIHRoZSBzYW1lIHN5cy5mbGFncyBhcyB0aGUgY3VycmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieQorICBTZXJnZXkgTWV6ZW50c2V2LgorCistIElzc3VlICMxMzAzMTogU21hbGwgc3BlZWQtdXAgZm9yIHRhcmZpbGUgd2hlbiB1bnppcHBpbmcgdGFyZmlsZXMuCisgIFBhdGNoIGJ5IEp1c3RpbiBQZWVsLgorCistIElzc3VlICMxNDc4MDogdXJsbGliLnJlcXVlc3QudXJsb3BlbigpIG5vdyBoYXMgYSBgYGNhZGVmYXVsdGBgIGFyZ3VtZW50CisgIHRvIHVzZSB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZS4gIEluaXRpYWwgcGF0Y2ggYnkgSmFtZXMgT2FrbGV5LgorCiAtIElzc3VlICMxNDgyOTogRml4IGJpc2VjdCBhbmQgcmFuZ2UoKSBpbmRleGluZyB3aXRoIGxhcmdlIGluZGljZXMKICAgKD49IDIgKiogMzIpIHVuZGVyIDY0LWJpdCBXaW5kb3dzLgogCistIElzc3VlICMxNDczMjogVGhlIF9jc3YgbW9kdWxlIG5vdyB1c2VzIFBFUCAzMTIxIG1vZHVsZSBpbml0aWFsaXphdGlvbi4KKyAgUGF0Y2ggYnkgUm9iaW4gU2NocmVpYmVyLgorCistIElzc3VlICMxNDgwOTogQWRkIEhUVFAgc3RhdHVzIGNvZGVzIGludHJvZHVjZWQgYnkgUkZDIDY1ODUgdG8gaHR0cC5zZXJ2ZXIKKyAgYW5kIGh0dHAuY2xpZW50LiBQYXRjaCBieSBFdW5nSnVuIFlpLgorCiAtIElzc3VlICMxNDc3NzogdGtpbnRlciBtYXkgcmV0dXJuIHVuZGVjb2RlZCBVVEYtOCBieXRlcyBhcyBhIHN0cmluZyB3aGVuCiAgIGFjY2Vzc2luZyB0aGUgVGsgY2xpcGJvYXJkLiAgTW9kaWZ5IGNsaXBib2FkX2dldCgpIHRvIGZpcnN0IHJlcXVlc3QgdHlwZQogICBVVEY4X1NUUklORyB3aGVuIG5vIHNwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcKICAgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgY3VycmVudCBkZWZhdWx0IHR5cGUgU1RSSU5HIGlmIHRoYXQgZmFpbHMuCiAgIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgogCistIElzc3VlICMxNDc3MzogRml4IG9zLmZ3YWxrKCkgZmFpbGluZyBvbiBkYW5nbGluZyBzeW1saW5rcy4KKwogLSBJc3N1ZSAjMTI1NDE6IEJlIGxlbmllbnQgd2l0aCBxdW90ZXMgYXJvdW5kIFJlYWxtIGZpZWxkIG9mIEhUVFAgQmFzaWMKICAgQXV0aGVudGF0aW9uIGluIHVybGxpYjIuCiAKKy0gSXNzdWUgIzE0ODA3OiBtb3ZlIHVuZG9jdW1lbnRlZCB0YXJmaWxlLmZpbGVtb2RlKCkgdG8gc3RhdC5maWxlbW9kZSgpIGFuZCBhZGQKKyAgZG9jIGVudHJ5LiBBZGQgdGFyZmlsZS5maWxlbW9kZSBhbGlhcyB3aXRoIGRlcHJlY2F0aW9uIHdhcm5pbmcuCisKKy0gSXNzdWUgIzEzODE1OiBUYXJGaWxlLmV4dHJhY3RmaWxlKCkgbm93IHJldHVybnMgaW8uQnVmZmVyZWRSZWFkZXIgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTQ1MzI6IEFkZCBhIHNlY3VyZV9jb21wYXJlKCkgaGVscGVyIHRvIHRoZSBobWFjIG1vZHVsZSwgdG8gbWl0aWdhdGUKKyAgdGltaW5nIGF0dGFja3MuIFBhdGNoIGJ5IEpvbiBPYmVyaGVpZGUuCisKKy0gQWRkIGltcG9ydGxpYi51dGlsLnJlc29sdmVfbmFtZSgpLgorCistIElzc3VlICMxNDM2NjogU3VwcG9ydCBsem1hIGNvbXByZXNzaW9uIGluIHppcCBmaWxlcy4KKyAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTM5NTk6IEludHJvZHVjZSBpbXBvcnRsaWIuZmluZF9sb2FkZXIoKSBhbmQgZG9jdW1lbnQKKyAgaW1wLmZpbmRfbW9kdWxlL2xvYWRfbW9kdWxlIGFzIGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzE0MDgyOiBzaHV0aWwuY29weTIoKSBub3cgY29waWVzIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGlmIHBvc3NpYmxlLgorICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy0gSXNzdWUgIzEzOTU5OiBNYWtlIGltcG9ydGxpYi5hYmMuRmlsZUxvYWRlci5sb2FkX21vZHVsZSgpL2dldF9maWxlbmFtZSgpIGFuZAorICBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXIubG9hZF9tb2R1bGUoKSBoYXZlIHRoZWlyIHNpbmdsZQorICBhcmd1bWVudCBiZSBvcHRpb25hbC4gQWxsb3dzIGZvciB0aGUgcmVwbGFjZW1lbnQgKGFuZCB0aHVzIGRlcHJlY2F0aW9uKSBvZgorICBpbXAubG9hZF9zb3VyY2UoKS9sb2FkX3BhY2thZ2UoKS9sb2FkX2NvbXBpbGVkKCkuCisKKy0gSXNzdWUgIzEzOTU5OiBpbXAuZ2V0X3N1ZmZpeGVzKCkgaGFzIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgdGhlIG5ldworICBhdHRyaWJ1dGVzIG9uIGltcG9ydGxpYi5tYWNoaW5lcnk6IFNPVVJDRV9TVUZGSVhFUywgREVCVUdfQllURUNPREVfU1VGRklYRVMsCisgIE9QVElNSVpFRF9CWVRFQ09ERV9TVUZGSVhFUywgQllURUNPREVfU1VGRklYRVMsIGFuZCBFWFRFTlNJT05fU1VGRklYRVMuIFRoaXMKKyAgbGVkIHRvIGFuIGluZGlyZWN0IGRlcHJlY2F0aW9uIG9mIGluc3BlY3QuZ2V0bW9kdWxlaW5mbygpLgorCiAtIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90CiAgIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCiAKIC0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCiAgIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIAotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrcyBjb3JyZWN0bHkgd2hlbiBIT01FIGlzICcvJy4KKy0gSXNzdWUgIzE0NzUzOiBNYWtlIG11bHRpcHJvY2Vzc2luZydzIGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRpbWVvdXRzCisgIHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24gMy4yLgorCistIElzc3VlICMxNDU4MzogRml4IGltcG9ydGxpYiBidWcgd2hlbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weSB3b3VsZCBmaXJzdAorICBpbXBvcnQgb25lIG9mIGl0cyBtb2R1bGVzIHRoZW4gcmFpc2UgYW4gZXJyb3IuCiAKIC0gSXNzdWUgIzE0NzQxOiBGaXggbWlzc2luZyBzdXBwb3J0IGZvciBFbGxpcHNpcyAoJy4uLicpIGluIHBhcnNlciBtb2R1bGUuCiAKQEAgLTM5Nyw2ICsxMzgxLDEzOCBAQAogCiAtIElzc3VlICMxNDcwMTogRml4IG1pc3Npbmcgc3VwcG9ydCBmb3IgJ3JhaXNlIC4uLiBmcm9tJyBpbiBwYXJzZXIgbW9kdWxlLgogCistIEFkZCBzdXBwb3J0IGZvciB0aW1lb3V0cyB0byB0aGUgYWNxdWlyZSgpIG1ldGhvZHMgb2YKKyAgbXVsdGlwcm9jZXNzaW5nJ3MgbG9jay9zZW1hcGhvcmUvY29uZGl0aW9uIHByb3hpZXMuCisKKy0gSXNzdWUgIzEzOTg5OiBBZGQgc3VwcG9ydCBmb3IgdGV4dCBtb2RlIHRvIGd6aXAub3BlbigpLgorCistIElzc3VlICMxNDEyNzogVGhlIG9zLnN0YXQoKSByZXN1bHQgb2JqZWN0IG5vdyBwcm92aWRlcyB0aHJlZSBhZGRpdGlvbmFsCisgIGZpZWxkczogc3RfY3RpbWVfbnMsIHN0X210aW1lX25zLCBhbmQgc3RfYXRpbWVfbnMsIHByb3ZpZGluZyB0aG9zZSB0aW1lcyBhcyBhbgorICBpbnRlZ2VyIHdpdGggbmFub3NlY29uZCByZXNvbHV0aW9uLiAgVGhlIGZ1bmN0aW9ucyBvcy51dGltZSgpLCBvcy5sdXRpbWVzKCksCisgIGFuZCBvcy5mdXRpbWVzKCkgbm93IGFjY2VwdCBhIG5ldyBwYXJhbWV0ZXIsIG5zLCB3aGljaCBhY2NlcHRzIG10aW1lIGFuZCBhdGltZQorICBhcyBpbnRlZ2VycyB3aXRoIG5hbm9zZWNvbmQgcmVzb2x1dGlvbi4KKworLSBJc3N1ZSAjMTQxMjcgYW5kICMxMDE0ODogc2h1dGlsLmNvcHlzdGF0IG5vdyBwcmVzZXJ2ZXMgZXhhY3QgbXRpbWUgYW5kIGF0aW1lCisgIG9uIGZpbGVzeXN0ZW1zIHByb3ZpZGluZyBuYW5vc2Vjb25kIHJlc29sdXRpb24uCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5NTogQnJpbmcgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgc3VwcG9ydCB1cCB0byBkYXRlIHdpdGgKKyAgdGhlIFB5dGhvbiAzLjMgR3JhbW1hci4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KKworLSBVcGdyYWRlIFdpbmRvd3MgbGlicmFyeSB2ZXJzaW9uczogYnppcCAxLjAuNiwgT3BlblNTTCAxLjAuMWMuCisKKy0gSXNzdWUgIzE0NjkzOiBVbmRlciBub24tV2luZG93cyBwbGF0Zm9ybXMsIGhhc2hsaWIncyBmYWxsYmFjayBtb2R1bGVzIGFyZQorICBhbHdheXMgY29tcGlsZWQsIGV2ZW4gaWYgT3BlblNTTCBpcyBwcmVzZW50IGF0IGJ1aWxkIHRpbWUuCisKKy0gSXNzdWUgIzEzMjEwOiBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFZTMjAxMCwgcG9ydGVkIGZyb20gVlMyMDA4LgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE0NTg4OiBUaGUgbGFuZ3VhZ2UgcmVmZXJlbmNlIG5vdyBhY2N1cmF0ZWx5IGRvY3VtZW50cyB0aGUgUHl0aG9uIDMKKyAgY2xhc3MgZGVmaW5pdGlvbiBwcm9jZXNzLiBQYXRjaCBieSBOaWNrIENvZ2hsYW4uCisKKy0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKKyAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAzPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDEtTWF5LTIwMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMxNDY5OTogRml4IGNhbGxpbmcgdGhlIGNsYXNzbWV0aG9kIGRlc2NyaXB0b3IgZGlyZWN0bHkuCisKKy0gSXNzdWUgIzE0NDMzOiBQcmV2ZW50IG1zdmNydCBjcmFzaCBpbiBpbnRlcmFjdGl2ZSBwcm9tcHQgd2hlbiBzdGRpbiBpcyBjbG9zZWQuCisKKy0gSXNzdWUgIzE0NTIxOiBNYWtlIHJlc3VsdCBvZiBmbG9hdCgnbmFuJykgYW5kIGZsb2F0KCctbmFuJykgbW9yZSBjb25zaXN0ZW50CisgIGFjcm9zcyBwbGF0Zm9ybXMuCisKKy0gSXNzdWUgIzE0NjQ2OiBfX2ltcG9ydF9fKCkgc2V0cyBfX2xvYWRlcl9fIGlmIHRoZSBsb2FkZXIgZGlkIG5vdC4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLm1ldGFfcGF0aC4gSWYKKyAgc3lzLm1ldGFfcGF0aCBpcyBmb3VuZCB0byBiZSBlbXB0eSwgcmFpc2UgSW1wb3J0V2FybmluZy4KKworLSBJc3N1ZSAjMTQ2MDU6IE5vIGxvbmdlciBoYXZlIGltcGxpY2l0IGVudHJpZXMgaW4gc3lzLnBhdGhfaG9va3MuIElmCisgIHN5cy5wYXRoX2hvb2tzIGlzIGZvdW5kIHRvIGJlIGVtcHR5LCBhIHdhcm5pbmcgd2lsbCBiZSByYWlzZWQuIE5vbmUgaXMgbm93CisgIGluc2VydGVkIGludG8gc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgaWYgbm8gZmluZGVyIHdhcyBkaXNjb3ZlcmVkLiBUaGlzIGFsc28KKyAgbWVhbnMgaW1wLk51bGxJbXBvcnRlciBpcyBubyBsb25nZXIgaW1wbGljaXRseSB1c2VkLgorCistIElzc3VlICMxMzkwMzogSW1wbGVtZW50IFBFUCA0MTIuIEluZGl2aWR1YWwgZGljdGlvbmFyeSBpbnN0YW5jZXMgY2FuIG5vdyBzaGFyZQorICB0aGVpciBrZXlzIHdpdGggb3RoZXIgZGljdGlvbmFyaWVzLiBDbGFzc2VzIHRha2UgYWR2YW50YWdlIG9mIHRoaXMgdG8gc2hhcmUKKyAgdGhlaXIgaW5zdGFuY2UgZGljdGlvbmFyeSBrZXlzIGZvciBpbXByb3ZlZCBtZW1vcnkgYW5kIHBlcmZvcm1hbmNlLgorCistIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgorICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCisgIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KKworLSBJc3N1ZSAjMTQ2MzA6IEZpeCBhIG1lbW9yeSBhY2Nlc3MgYnVnIGZvciBpbnN0YW5jZXMgb2YgYSBzdWJjbGFzcyBvZiBpbnQKKyAgd2l0aCB2YWx1ZSAwLgorCistIElzc3VlICMxNDMzOTogU3BlZWQgaW1wcm92ZW1lbnRzIHRvIGJpbiwgb2N0IGFuZCBoZXggZnVuY3Rpb25zLiAgUGF0Y2ggYnkKKyAgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMTQwOTg6IE5ldyBmdW5jdGlvbnMgUHlFcnJfR2V0RXhjSW5mbyBhbmQgUHlFcnJfU2V0RXhjSW5mby4KKyAgUGF0Y2ggYnkgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTQzODU6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1c2UgYSBjdXN0b20gdHlwZSBmb3IgdGhlIF9fYnVpbHRpbnNfXworICBuYW1lc3BhY2UsIGluc3RlYWQgb2YgYSBkaWN0LiBJdCBjYW4gYmUgdXNlZCBmb3Igc2FuZGJveGluZyBmb3IgZXhhbXBsZS4KKyAgUmFpc2UgYWxzbyBhIE5hbWVFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yIGlmIF9fYnVpbGRfY2xhc3NfXyBuYW1lIGlmIG5vdAorICBmb3VuZCBpbiBfX2J1aWx0aW5zX18uCisKKy0gSXNzdWUgIzEyNTk5OiBCZSBtb3JlIHN0cmljdCBpbiBhY2NlcHRpbmcgTm9uZSBjb21wYXJlZCB0byBhIGZhbHNlLWxpa2UKKyAgb2JqZWN0IGZvciBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZm9yX2xvYWRlciBhbmQKKyAgaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyLgorCistIElzc3VlICMxNDYxMjogRml4IGp1bXBpbmcgYXJvdW5kIHdpdGggYmxvY2tzIGJ5IHNldHRpbmcgZl9saW5lbm8uCisKKy0gSXNzdWUgIzE0NTkyOiBBdHRlbXB0aW5nIGEgcmVsYXRpdmUgaW1wb3J0IHcvbyBfX3BhY2thZ2VfXyBvciBfX25hbWVfXyBzZXQgaW4KKyAgZ2xvYmFscyByYWlzZXMgYSBLZXlFcnJvci4KKworLSBJc3N1ZSAjMTQ2MDc6IEZpeCBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIHdoaWNoIHN0YXJ0ZWQgd2l0aCBgYF9fYGAuCisKKy0gSXNzdWUgIzEwODU0OiBUaGUgSW1wb3J0RXJyb3IgcmFpc2VkIHdoZW4gYW4gZXh0ZW5zaW9uIG1vZHVsZSBvbiBXaW5kb3dzCisgIGZhaWxzIHRvIGltcG9ydCBub3cgdXNlcyB0aGUgbmV3IHBhdGggYW5kIG5hbWUgYXR0cmlidXRlcyBmcm9tCisgIElzc3VlICMxNTU5NTQ5LgorCistIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCisgIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCisgIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCisKKy0gX19pbXBvcnRfXygpIG5vdyBtYXRjaGVzIFBFUCAzMjggYW5kIGRvY3VtZW50YXRpb24gYnkgZGVmYXVsdGluZyAnaW5kZXgnIHRvIDAKKyAgaW5zdGVhZCBvZiAtMSBhbmQgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgbmVnYXRpdmUgdmFsdWVzLgorCistIElzc3VlICMyMzc3OiBNYWtlIGltcG9ydGxpYiB0aGUgaW1wbGVtZW50YXRpb24gb2YgX19pbXBvcnRfXygpLgorCistIElzc3VlICMxNTU5NTQ5OiBJbXBvcnRFcnJvciBub3cgaGFzICduYW1lJyBhbmQgJ3BhdGgnIGF0dHJpYnV0ZXMgdGhhdCBhcmUgc2V0CisgIHVzaW5nIGtleXdvcmQgYXJndW1lbnRzIHRvIGl0cyBjb25zdHJ1Y3Rvci4gVGhleSBhcmUgY3VycmVudGx5IG5vdCBzZXQgYnkKKyAgaW1wb3J0IGFzIHRoZXkgYXJlIG1lYW50IGZvciB1c2UgYnkgaW1wb3J0bGliLgorCistIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQorICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYSB1bmhhbmRsZWQgZXhjZXB0aW9uLgorCistIElzc3VlICMxMzAxOTogRml4IHBvdGVudGlhbCByZWZlcmVuY2UgbGVha3MgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2gKKyAgYnkgU3VtYW4gU2FoYS4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMxNDc2ODogb3MucGF0aC5leHBhbmR1c2VyKCd+L2EnKSBkb2Vzbid0IHdvcmtzIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgorCistIElzc3VlICMxNDM3MTogU3VwcG9ydCBiemlwMiBpbiB6aXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKIC0gSXNzdWUgIzEzMTgzOiBGaXggcGRiIHNraXBwaW5nIGZyYW1lcyBhZnRlciBoaXR0aW5nIGEgYnJlYWtwb2ludCBhbmQgcnVubmluZwogICBzdGVwLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKQEAgLTQwNyw5ICsxNTIzLDI1IEBACiAKIC0gSXNzdWUgIzkxNTQ6IEZpeCBwYXJzZXIgbW9kdWxlIHRvIHVuZGVyc3RhbmQgZnVuY3Rpb24gYW5ub3RhdGlvbnMuCiAKKy0gSXNzdWUgIzYwODU6IEluIGh0dHAuc2VydmVyLnB5IFNpbXBsZUhUVFBTZXJ2ZXIuYWRkcmVzc19zdHJpbmcgcmV0dXJucyB0aGUKKyAgY2xpZW50IGlwIGFkZHJlc3MgaW5zdGVhZCBjbGllbnQgaG9zdG5hbWUuIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTQzMDk6IERlcHJlY2F0ZSB0aW1lLmNsb2NrKCksIHVzZSB0aW1lLnBlcmZfY291bnRlcigpIG9yCisgIHRpbWUucHJvY2Vzc190aW1lKCkgaW5zdGVhZC4KKworLSBJc3N1ZSAjMTQ0Mjg6IEltcGxlbWVudCB0aGUgUEVQIDQxOC4gQWRkIHRpbWUuZ2V0X2Nsb2NrX2luZm8oKSwKKyAgdGltZS5wZXJmX2NvdW50ZXIoKSBhbmQgdGltZS5wcm9jZXNzX3RpbWUoKSBmdW5jdGlvbnMsIGFuZCByZW5hbWUKKyAgdGltZS5zdGVhZHkoKSB0byB0aW1lLm1vbm90b25pYygpLgorCistIElzc3VlICMxNDY0NjogaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zvcl9sb2FkZXIoKSBub3cgc2V0cyBfX2xvYWRlcl9fIGFuZAorICBfX3BhY2thZ2VfXyAod2hlbiBwb3NzaWJsZSkuCisKIC0gSXNzdWUgIzE0NjY0OiBJdCBpcyBub3cgcG9zc2libGUgdG8gdXNlIEB1bml0dGVzdC5za2lwe0lmLFVubGVzc30gb24gYQogICB0ZXN0IGNsYXNzIHRoYXQgZG9lc24ndCBpbmhlcml0IGZyb20gVGVzdENhc2UgKGkuZS4gYSBtaXhpbikuCiAKKy0gSXNzdWUgIzQ4OTI6IG11bHRpcHJvY2Vzc2luZyBDb25uZWN0aW9ucyBjYW4gbm93IGJlIHRyYW5zZmVycmVkIG92ZXIKKyAgbXVsdGlwcm9jZXNzaW5nIENvbm5lY3Rpb25zLiAgUGF0Y2ggYnkgUmljaGFyZCBPdWRrZXJrIChzYnQpLgorCiAtIElzc3VlICMxNDE2MDogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCB0byByZXNvbHZlIHN5bWJvbGljIGxpbmtzIHdoZW4KICAgdGhlIGxpbmtzIHdlcmUgbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCiAKQEAgLTQxOSwxNzAgKzE1NTEsMTAwIEBACiAtIElzc3VlICMxMzY4NDogRml4IGh0dHBsaWIgdHVubmVsIGlzc3VlIG9mIGluZmluaXRlIGxvb3BzIGZvciBjZXJ0YWluIHNpdGVzCiAgIHdoaWNoIHNlbmQgRU9GIHdpdGhvdXQgdHJhaWxpbmcgXHJcbi4KIAorLSBJc3N1ZSAjMTQ2MDU6IEFkZCBpbXBvcnRsaWIuYWJjLkZpbGVMb2FkZXIsIGltcG9ydGxpYi5tYWNoaW5lcnkuKEZpbGVGaW5kZXIsCisgIFNvdXJjZUZpbGVMb2FkZXIsIFNvdXJjZWxlc3NGaWxlTG9hZGVyLCBFeHRlbnNpb25GaWxlTG9hZGVyKS4KKworLSBJc3N1ZSAjMTM5NTk6IGltcC5jYWNoZV9mcm9tX3NvdXJjZSgpL3NvdXJjZV9mcm9tX2NhY2hlKCkgbm93IGZvbGxvdworICBvcy5wYXRoLmpvaW4oKS9zcGxpdCgpIHNlbWFudGljcyBmb3IgcGF0aCBtYW5pcHVsYXRpb24gaW5zdGVhZCBvZiBpdHMgcHJpb3IsCisgIGN1c3RvbSBzZW1hbnRpY3Mgb2YgY2FyaW5nIHRoZSByaWdodC1tb3N0IHBhdGggc2VwYXJhdG9yIGZvcndhcmQgaW4gcGF0aAorICBqb2luaW5nLgorCistIElzc3VlICMyMTkzOiBBbGxvdyAiOiIgY2hhcmFjdGVyIGluIENvb2tpZSBOQU1FIHZhbHVlcy4KKworLSBJc3N1ZSAjMTQ2Mjk6IHRva2VuaXplci5kZXRlY3RfZW5jb2Rpbmcgd2lsbCBzcGVjaWZ5IHRoZSBmaWxlbmFtZSBpbiB0aGUKKyAgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlmIGZvdW5kIGF0IHJlYWRsaW5lLl9fc2VsZl9fLm5hbWUuCisKIC0gSXNzdWUgIzE0NjI5OiBSYWlzZSBTeW50YXhFcnJvciBpbiB0b2tlbml6ZXIuZGV0ZWN0X2VuY29kaW5nIGlmIHRoZQogICBmaXJzdCB0d28gbGluZXMgaGF2ZSBub24tVVRGLTggY2hhcmFjdGVycyB3aXRob3V0IGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLgogCiAtIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwogICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KIAorLSBJc3N1ZSAjMTE3NTA6IFRoZSBXaW5kb3dzIEFQSSBmdW5jdGlvbnMgc2NhdHRlcmVkIGluIHRoZSBfc3VicHJvY2VzcyBhbmQKKyAgX211bHRpcHJvY2Vzc2luZy53aW4zMiBtb2R1bGVzIG5vdyBsaXZlIGluIGEgc2luZ2xlIG1vZHVsZSAiX3dpbmFwaSIuCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwODc6IG11bHRpcHJvY2Vzc2luZzogYWRkIENvbmRpdGlvbi53YWl0X2ZvcigpLiBQYXRjaCBieSBzYnQuCisKIC0gSXNzdWUgIzE0NTM4OiBIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluCiAgIGEgYmFyZSAnLycuCiAKIC0gSXNzdWUgIzE0NDUyOiBTeXNMb2dIYW5kbGVyIG5vIGxvbmdlciBpbnNlcnRzIGEgVVRGLTggQk9NIGludG8gdGhlIG1lc3NhZ2UuCiAKKy0gSXNzdWUgIzE0Mzg2OiBFeHBvc2UgdGhlIGRpY3RfcHJveHkgaW50ZXJuYWwgdHlwZSBhcyB0eXBlcy5NYXBwaW5nUHJveHlUeXBlLgorCistIElzc3VlICMxMzk1OTogTWFrZSBpbXAucmVsb2FkKCkgYWx3YXlzIHVzZSBhIG1vZHVsZSdzIF9fbG9hZGVyX18gdG8gcGVyZm9ybQorICB0aGUgcmVsb2FkLgorCistIElzc3VlICMxMzk1OTogQWRkIGltcC5weSBhbmQgcmVuYW1lIHRoZSBidWlsdC1pbiBtb2R1bGUgdG8gX2ltcCwgYWxsb3dpbmcgZm9yCisgIHJlLWltcGxlbWVudGluZyBwYXJ0cyBvZiB0aGUgbW9kdWxlIGluIHB1cmUgUHl0aG9uLgorCiAtIElzc3VlICMxMzQ5NjogRml4IHBvdGVudGlhbCBvdmVyZmxvdyBpbiBiaXNlY3QuYmlzZWN0IGFsZ29yaXRobSB3aGVuIGFwcGxpZWQKICAgdG8gYSBjb2xsZWN0aW9uIG9mIHNpemUgPiBzeXMubWF4c2l6ZSAvIDIuCiAKKy0gSGF2ZSBpbXBvcnRsaWIgdGFrZSBhZHZhbnRhZ2Ugb2YgSW1wb3J0RXJyb3IncyBuZXcgJ25hbWUnIGFuZCAncGF0aCcKKyAgYXR0cmlidXRlcy4KKwogLSBJc3N1ZSAjMTQzOTk6IHppcGZpbGUgbm93IHJlY29nbml6ZXMgdGhhdCB0aGUgYXJjaGl2ZSBoYXMgYmVlbiBtb2RpZmllZCBldmVuCiAgIGlmIG9ubHkgdGhlIGNvbW1lbnQgaXMgY2hhbmdlZC4gIEluIGFkZGl0aW9uLCB0aGUgVHlwZUVycm9yIHRoYXQgcmVzdWx0cyBmcm9tCiAgIHRyeWluZyB0byBzZXQgYSBub24tYmluYXJ5IHZhbHVlIGFzIGEgY29tbWVudCBpcyBub3cgbm93IHJhaXNlZCBhdCB0aGUgdGltZQogICB0aGUgY29tbWVudCBpcyBzZXQgcmF0aGVyIHRoYW4gYXQgdGhlIHRpbWUgdGhlIHppcGZpbGUgaXMgd3JpdHRlbi4KIAorLSB0cmFjZS5Db3ZlcmFnZVJlc3VsdHMuaXNfaWdub3JlZF9maWxlbmFtZSgpIG5vdyBpZ25vcmVzIGFueSBuYW1lIHRoYXQgc3RhcnRzCisgIHdpdGggIjwiIGFuZCBlbmRzIHdpdGggIj4iIGluc3RlYWQgb2Ygc3BlY2lhbC1jYXNpbmcgIjxzdHJpbmc+IiBhbmQKKyAgIjxkb2N0ZXN0ICIuCisKKy0gSXNzdWUgIzEyNTM3OiBUaGUgbWFpbGJveCBtb2R1bGUgbm8gbG9uZ2VyIGRlcGVuZHMgb24ga25vd2xlZGdlIG9mIGludGVybmFsCisgIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIGVtYWlsIHBhY2thZ2UgTWVzc2FnZSBvYmplY3QuCisKIC0gSXNzdWUgIzc5Nzg6IHNvY2tldHNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwogICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgogICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCiAKKy0gSXNzdWUgIzE0NTIyOiBBdm9pZCBkdXBsaWNhdGluZyBzb2NrZXQgaGFuZGxlcyBpbiBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi4KKyAgUGF0Y2ggYnkgc2J0LgorCistIERvbid0IFB5X0RFQ1JFRiBOVUxMIHZhcmlhYmxlIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIuCisKKy0gSXNzdWUgIzg1MTU6IFNldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuCisgIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKIC0gSXNzdWUgIzE0NDk2OiBGaXggd3JvbmcgbmFtZSBpbiBpZGxlbGliL3RhYmJlZHBhZ2VzLnB5LgogICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzMwMzM6IEFkZCBkaXNwbGF5b2YgcGFyYW1ldGVyIHRvIHRraW50ZXIgZm9udC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKIC0gSXNzdWUgIzE0NDgyOiBSYWlzZSBhIFZhbHVlRXJyb3IsIG5vdCBhIE5hbWVFcnJvciwgd2hlbiB0cnlpbmcgdG8gY3JlYXRlCiAgIGEgbXVsdGlwcm9jZXNzaW5nIENsaWVudCBvciBMaXN0ZW5lciB3aXRoIGFuIEFGX1VOSVggdHlwZSBhZGRyZXNzIHVuZGVyCiAgIFdpbmRvd3MuICBQYXRjaCBieSBQb3BhIENsYXVkaXUuCiAKKy0gSXNzdWUgIzgwMjMxMDogR2VuZXJhdGUgYWx3YXlzIHVuaXF1ZSB0a2ludGVyIGZvbnQgbmFtZXMgaWYgbm90IGRpcmVjdGx5IHBhc3NlZC4KKwogLSBJc3N1ZSAjMTQxNTE6IFJhaXNlIGEgVmFsdWVFcnJvciwgbm90IGEgTmFtZUVycm9yLCB3aGVuIHRyeWluZyB0byBjcmVhdGUKICAgYSBtdWx0aXByb2Nlc3NpbmcgQ2xpZW50IG9yIExpc3RlbmVyIHdpdGggYW4gQUZfUElQRSB0eXBlIGFkZHJlc3MgdW5kZXIKICAgbm9uLVdpbmRvd3MgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgUG9wYSBDbGF1ZGl1LgogCi0tIElzc3VlICMxMzg3Mjogc29ja2V0LmRldGFjaCgpIG5vdyBtYXJrcyB0aGUgc29ja2V0IGNsb3NlZCAoYXMgbWlycm9yZWQKLSAgaW4gdGhlIHNvY2tldCByZXByKCkpLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCistIElzc3VlICMxNDQ5MzogVXNlIGd2ZnMtb3BlbiBvciB4ZGctb3BlbiBpbiB3ZWJicm93c2VyLgogCi0tIElzc3VlICMxNDQwNjogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiB1c2luZyBgYGNvbmN1cnJlbnQuZnV0dXJlcy53YWl0KAotICByZXR1cm5fd2hlbj1BTExfQ09NUExFVEVEKWBgLiAgUGF0Y2ggYnkgTWF0dCBKb2luZXIuCitCdWlsZAorLS0tLS0KIAotLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKLSAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAotICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KLSAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KLQotLSBJc3N1ZSAjMTAzNDA6IGFzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uCi0gIE9TWDsgYXZvaWQgdG8gY2FsbCBoYW5kbGVfY29ubmVjdCBpbiBjYXNlIG9mIGEgZGlzY29ubmVjdGVkIHNvY2tldCB3aGljaAotICB3YXMgbm90IG1lYW50IHRvIGNvbm5lY3QuCi0KLS0gSXNzdWUgIzEyNzU3OiBGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbwotICB0aGF0IGl0IHdvcmtzIGluIHVuaXR0ZXN0J3MgdmVyYm9zZSBtb2RlIGFzIHdlbGwgYXMgbm9uLXZlcmJvc2UgbW9kZS4KLQotLSBJc3N1ZSAjMzU3MzogSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncwotICAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZiBmaWxlKHMpKSAoUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8pCi0KLS0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKLSAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgotCi0tIElzc3VlICMxMDQ4NDogRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCi0KLS0gSXNzdWUgIzExMTk5OiBGaXggdGhlIHdpdGggdXJsbGliIHdoaWNoIGhhbmdzIG9uIHBhcnRpY3VsYXIgZnRwIHVybHMuCi0KLS0gSXNzdWUgIzE0MDYyOiBIZWFkZXIgb2JqZWN0cyBub3cgY29ycmVjdGx5IHJlc3BlY3QgdGhlICdsaW5lc2VwJyBzZXR0aW5nCi0gIHdoZW4gcHJvY2Vzc2VkIGJ5IEJ5dGVzUGFyc2VyICh3aGljaCBzbXRwbGliLlNNVFAuc2VuZF9tZXNzYWdlIHVzZXMpLgotCi0tIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCi0gIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KLQotLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KLQotLSBJc3N1ZSAjMTQxODQ6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCi0gIE1hYyBPUyBYIHRvIGF2b2lkIGludGVycHJldGVyIGNyYXNoZXMgd2hlbiB1c2luZyB0aHJlYWRzIG9uIDEwLjcuCi0KLS0gSXNzdWUgIzEwNTQzOiBGaXggdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgd2l0aCBKeXRob24gYnl0ZWNvZGUgZmlsZXMuCi0KLS0gSXNzdWUgIzE0MjUyOiBGaXggc3VicHJvY2Vzcy5Qb3Blbi50ZXJtaW5hdGUoKSB0byBub3QgcmFpc2UgYW4gZXJyb3IgdW5kZXIKLSAgV2luZG93cyB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KLQotLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKLSAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCi0gIGZpeGVkLgotCi0tIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQotICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KLQotLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBjb250YWluZXJzIChXZWFrU2V0LCBXZWFrS2V5RGljdGlvbmFyeSwKLSAgV2Vha1ZhbHVlRGljdGlvbmFyeSkgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lIG9iamVjdHMKLSAgYXJlIGRlYWQgb3IgZHlpbmcuICBNb3Jlb3ZlciwgdGhlIGltcGxlbWVudGF0aW9uIGlzIG5vdyBPKDEpIHJhdGhlciB0aGFuCi0gIE8obikuCi0KLS0gSXNzdWUgIzEzMTI1OiBTaWxlbmNlIHNwdXJpb3VzIHRlc3RfbGliMnRvMyBvdXRwdXQgd2hlbiBpbiBub24tdmVyYm9zZSBtb2RlLgotICBQYXRjaCBieSBNaWtoYWlsIE5vdmlrb3YuCi0KLS0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQotICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucwotICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKLSAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNTAwMDogU3VwcG9ydCB0aGUgInVuaXF1ZSIgeDMyIGFyY2hpdGVjdHVyZSBpbiBfcG9zaXhzdWJwcm9jZXNzLmMuCi0KLS0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCi0gIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCi0gIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE0MjEyOiBUaGUgcmUgbW9kdWxlIGRpZG4ndCByZXRhaW4gYSByZWZlcmVuY2UgdG8gYnVmZmVycyBpdCB3YXMKLSAgc2Nhbm5pbmcsIHJlc3VsdGluZyBpbiBzZWdmYXVsdHMuCistICJtYWtlIHRvdWNoIiB3aWxsIG5vdyB0b3VjaCBnZW5lcmF0ZWQgZmlsZXMgdGhhdCBhcmUgY2hlY2tlZCBpbnRvIE1lcmN1cmlhbCwKKyAgYWZ0ZXIgYSAiaGcgdXBkYXRlIiB3aGljaCBmYWlsZWQgdG8gYnJpbmcgdGhlIHRpbWVzdGFtcHMgaW50byB0aGUgcmlnaHQgb3JkZXIuCiAKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMxNTMwNDogRml4IHdhcm5pbmcgbWVzc2FnZSB3aGVuIG9zLmNoZGlyKCkgZmFpbHMgaW5zaWRlCi0gIHRlc3Quc3VwcG9ydC50ZW1wX2N3ZCgpLiAgUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBUZXN0TWFpbGRpci50ZXN0X2NyZWF0ZV90bXAuIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NzQ3OiBaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZQotICBVRl9JTU1VVEFCTEUgZmxhZyAodmlhIGVpdGhlciBjaGZsYWdzIG9yIGxjaGZsYWdzKTsgcmVmYWN0b3IgYWZmZWN0ZWQKLSAgdGVzdHMgaW4gdGVzdF9wb3NpeC5weSB0byBhY2NvdW50IGZvciB0aGlzLgotCi0tIElzc3VlICMxNTI4NTogUmVmYWN0b3IgdGhlIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGNvbm5lY3QgdGltZW91dHMgdXNpbmcKLSAgdHdvIGV4dGVybmFsIGhvc3RzIHRoYXQgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHR5cGUKLSAgb2YgdGVzdC4KLQotLSBJc3N1ZSAjMTU2MTU6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUncyBoYW5kbGluZyBvZiBpbnZhbGlkCi0gIGlucHV0IGRhdGEuICBQYXRjaCBieSBLdXNoYWwgRGFzLgotCi0tIElzc3VlICMxNTQ5NjogQWRkIGRpcmVjdG9yeSByZW1vdmFsIGhlbHBlcnMgZm9yIHRlc3RzIG9uIFdpbmRvd3MuCi0gIFBhdGNoIGJ5IEplcmVteSBLbG90aC4KLQotLSBJc3N1ZSAjMTU0Njc6IE1vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTUzMjA6IE1ha2UgaXRlcmF0aW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRocmVhZC1zYWZlIHdoZW4gcnVubmluZwotICB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZS4gUGF0Y2ggYnkgQ2hyaXMgSmVyZG9uZWsuCi0KLS0gSXNzdWUgIzE1MjMwOiBBZG9wdGVkIGEgbW9yZSBzeXN0ZW1hdGljIGFwcHJvYWNoIGluIHRoZSBydW5weSB0ZXN0cwotCi0tIElzc3VlICMxNTMwMDogRW5zdXJlIHRoZSB0ZW1wb3JhcnkgdGVzdCB3b3JraW5nIGRpcmVjdG9yaWVzIGFyZSBpbiB0aGUgc2FtZQotICBwYXJlbnQgZm9sZGVyIHdoZW4gcnVubmluZyB0ZXN0cyBpbiBtdWx0aXByb2Nlc3MgbW9kZSBmcm9tIGEgUHl0aG9uIGJ1aWxkLgotICBQYXRjaCBieSBDaHJpcyBKZXJkb25lay4KLQotLSB0ZXN0X25udHBsaWIgbm93IHRvbGVyYXRlcyBiZWluZyBydW4gZnJvbSBiZWhpbmQgTk5UUCBnYXRld2F5cyB0aGF0IGFkZAotICAiWC1BbnRpdmlydXMiIGhlYWRlcnMgdG8gYXJ0aWNsZXMKLQotLSBJc3N1ZSAjMTUwNDM6IHRlc3RfZ2RiIGlzIG5vdyBza2lwcGVkIGVudGlyZWx5IGlmIGdkYiBzZWN1cml0eSBzZXR0aW5ncwotICBibG9jayBsb2FkaW5nIG9mIHRoZSBnZGIgaG9va3MKLQogLSBJc3N1ZSAjMTQwMjY6IEluIHRlc3RfY21kX2xpbmVfc2NyaXB0LCBjaGVjayB0aGF0IHN5cy5hcmd2IGlzIHBvcHVsYXRlZAogICBjb3JyZWN0bHkgZm9yIHRoZSB2YXJpb3VzIGludm9jYXRpb24gYXBwcm9hY2hlcyAoUGF0Y2ggYnkgSmFzb24gWWVvKQogCkBAIC01OTIsMTUyICsxNjU0LDMxMCBAQAogLSBJc3N1ZSAjMTQ1ODk6IFVwZGF0ZSBjZXJ0aWZpY2F0ZSBjaGFpbiBmb3Igc2hhMjU2LnRicy1pbnRlcm5ldC5jb20sIGZpeGluZwogICBhIHRlc3QgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KIAotQnVpbGQKLS0tLS0tCistIElzc3VlICMxNDM1NTogUmVncnRlc3Qgbm93IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCB1bml0dGVzdCB0ZXN0IGxvYWRpbmcsIGFuZAorICB3aWxsIHVzZSBpdCBpZiBhIHRlc3QgZmlsZSBjb250YWlucyBubyBgdGVzdF9tYWluYCBtZXRob2QuCiAKLS0gSXNzdWUgIzE2MjYyOiBmaXggb3V0LW9mLXNyYy10cmVlIGJ1aWxkcywgaWYgbWVyY3VyaWFsIGlzIG5vdCBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1OTIzOiBmaXggYSBtaXN0YWtlIGluIGFzZGxfYy5weSB0aGF0IHJlc3VsdGVkIGluIGEgVHlwZUVycm9yIGFmdGVyCi0gIDI4MDFiZjg3NWEyNCAoc2VlICMxNTgwMSkuCi0KLS0gSXNzdWUgIzExNzE1OiBGaXggbXVsdGlhcmNoIGRldGVjdGlvbiB3aXRob3V0IGhhdmluZyBEZWJpYW4gZGV2ZWxvcG1lbnQKLSAgdG9vbHMgKGRwa2ctZGV2KSBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1ODE5OiBNYWtlIHN1cmUgd2UgY2FuIGJ1aWxkIFB5dGhvbiBvdXQtb2YtdHJlZSBmcm9tIGEgcmVhZG9ubHkKLSAgc291cmNlIGRpcmVjdG9yeS4gIChTb21ld2hhdCByZWxhdGVkIHRvIElzc3VlICM5ODYwLikKLQotLSBJc3N1ZSAjMTU4MjI6IEVuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkLgotCi0tIElzc3VlICMxNTU2MDogRml4IGJ1aWxkaW5nIF9zcWxpdGUzIGV4dGVuc2lvbiBvbiBPUyBYIHdpdGggYW4gU0RLLgotCi0tIElzc3VlICM4ODQ3OiBEaXNhYmxlIENPTURBVCBmb2xkaW5nIGluIFdpbmRvd3MgUEdPIGJ1aWxkcy4KLQotLSBJc3N1ZSAjMTQxOTc6IEZvciBPUyBYIGZyYW1ld29yayBidWlsZHMsIGVuc3VyZSBsaW5rcyB0byB0aGUgc2hhcmVkCi0gIGxpYnJhcnkgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgcHJvcGVyIEFCSSBzdWZmaXguCi0KLS0gSXNzdWUgIzE0NDcyOiBVcGRhdGUgLmdpdGlnbm9yZS4gUGF0Y2ggYnkgTWF0ZWogQ2VwbC4KLQotLSBUaGUgV2luZG93cyBidWlsZCBub3cgdXNlcyBPcGVuU1NMIDEuMC4waiBhbmQgYnppcDIgMS4wLjYuCi0KLS0gSXNzdWUgIzE0NTU3OiBGaXggZXh0ZW5zaW9ucyBidWlsZCBvbiBIUC1VWC4gUGF0Y2ggYnkgQWRpIFJvaWJhbi4KLQotLSBJc3N1ZSAjMTQ0Mzc6IEZpeCBidWlsZGluZyB0aGUgX2lvIG1vZHVsZSB1bmRlciBDeWd3aW4uCi0KLS0gSXNzdWUgIzE0Mzg3OiBEbyBub3QgaW5jbHVkZSBhY2N1LmggZnJvbSBQeXRob24uaC4KLQotLSBJc3N1ZSAjMTQzNTk6IE9ubHkgdXNlIE9fQ0xPRVhFQyBpbiBfcG9zaXhtb2R1bGUuYyBpZiBpdCBpcyBkZWZpbmVkLgotICBCYXNlZCBvbiBwYXRjaCBmcm9tIEhlcnbDqSBDb2F0YW5oYXkuCi0KLS0gSXNzdWUgIzE0MDE4OiBGaXggT1MgWCBUY2wvVGsgZnJhbWV3b3JrIGNoZWNraW5nIHdoZW4gdXNpbmcgT1MgWCBTREtzLgotCi1Eb2N1bWVudGF0aW9uCitUb29scyAvIERlbW9zCiAtLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE2MTE1OiBJbXByb3ZlIHN1YnByb2Nlc3MuUG9wZW4oKSBkb2N1bWVudGF0aW9uIGFyb3VuZCBhcmdzLCBzaGVsbCwKLSAgYW5kIGV4ZWN1dGFibGUgYXJndW1lbnRzLgorLSBJc3N1ZSAjMzU2MTogVGhlIFdpbmRvd3MgaW5zdGFsbGVyIG5vdyBoYXMgYW4gb3B0aW9uLCBvZmYgYnkgZGVmYXVsdCwgZm9yCisgIHBsYWNpbmcgdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24gaW50byB0aGUgc3lzdGVtICJQYXRoIiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KIAotLSBJc3N1ZSAjMTM0OTg6IENsYXJpZnkgZG9jcyBvZiBvcy5tYWtlZGlycygpJ3MgZXhpc3Rfb2sgYXJndW1lbnQuICBEb25lIHdpdGgKLSAgZ3JlYXQgbmF0aXZlLXNwZWFrZXIgaGVscCBmcm9tIFIuIERhdmlkIE11cnJheS4KLQotLSBJc3N1ZSAjMTU1MzM6IENsYXJpZnkgZG9jcyBhbmQgYWRkIHRlc3RzIGZvciBzdWJwcm9jZXNzLlBvcGVuKCkncyBjd2QKLSAgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzE1OTc5OiBJbXByb3ZlIHRpbWVpdCBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNjAzNjogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIGJ1aWx0LWluIGludCgpJ3Mgc2lnbmF0dXJlIGFuZAotICBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzE1OTM1OiBDbGFyaWZpY2F0aW9uIG9mIGFyZ3BhcnNlIGRvY3MsIHJlOiBhZGRfYXJndW1lbnQoKSB0eXBlIGFuZAotICBkZWZhdWx0IGFyZ3VtZW50cy4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxMTk2NDogRG9jdW1lbnQgYSBjaGFuZ2UgaW4gdjMuMiB0byB0aGUgYmVoYXZpb3Igb2YgdGhlIGluZGVudAotICBwYXJhbWV0ZXIgb2YganNvbiBlbmNvZGluZyBvcGVyYXRpb25zLgotCi0tIElzc3VlICMxNDY3NDogQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUganNvbiBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLgotICBQYXRjaCBieSBDaHJpcyBSZWJlcnQuCi0KLS0gSXNzdWUgIzE1NjMwOiBBZGQgYW4gZXhhbXBsZSBmb3IgImNvbnRpbnVlIiBzdG10IGluIHRoZSB0dXRvcmlhbC4gUGF0Y2ggYnkKLSAgRGFuaWVsIEVsbGlzLgotCi0tIElzc3VlICMxNTQ0NDogVXNlIHByb3BlciBzcGVsbGluZyBmb3Igbm9uLUFTQ0lJIGNvbnRyaWJ1dG9yIG5hbWVzLiAgUGF0Y2gKLSAgYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAxNTQ4MjogUHJvcGVybHkgZG9jdW1lbnQgdGhlIGRlZmF1bHQgJ2xldmVsJyB2YWx1ZSBmb3IgX19pbXBvcnRfXygpCi0gIHdoaWxlIHdhcm5pbmcgYWJvdXQgdXNpbmcgbmVnYXRpdmUgdmFsdWVzLgotCi0tIElzc3VlICMxNTIzMDogQ2xlYXJseSBkb2N1bWVudCBzb21lIG9mIHRoZSBsaW1pdGF0aW9ucyBvZiB0aGUgcnVucHkKLSAgbW9kdWxlIGFuZCBudWRnZSByZWFkZXJzIHRvd2FyZHMgaW1wb3J0bGliIHdoZW4gYXBwcm9wcmlhdGUuCi0KLS0gSXNzdWUgIzEzNTU3OiBDbGFyaWZ5IGVmZmVjdCBvZiBnaXZpbmcgdHdvIGRpZmZlcmVudCBuYW1lc3BhY2VzIHRvIGV4ZWMgb3IKLSAgZXhlY2ZpbGUoKS4KLQotLSBJc3N1ZSAjODc5OTogRml4IGFuZCBpbXByb3ZlIHRoZSB0aHJlYWRpbmcuQ29uZGl0aW9uIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE0OTQzOiBDb3JyZWN0IGEgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZSBmb3Igd2lucmVnLk9wZW5LZXkKLSAgYW5kIGNvcnJlY3RseSBsaXN0IHRoZSBhcmd1bWVudCBuYW1lcyBpbiB0aGUgZnVuY3Rpb24ncyBleHBsYW5hdGlvbi4KLQotLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KLQotLSBJc3N1ZSAjMTUyNTA6IERvY3VtZW50IHRoYXQgZmlsZWNtcC5kaXJjbXAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaAotICBjb250cmlidXRlZCBieSBDaHJpcyBKZXJkb25lay4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1Mzc4OiBGaXggVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5LiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTQ2OTU6IEZpeCBtaXNzaW5nIHN1cHBvcnQgZm9yIHN0YXJyZWQgYXNzaWdubWVudHMgaW4KLSAgVG9vbHMvcGFyc2VyL3VucGFyc2UucHkuCistIElzc3VlICMxMzE2NTogc3RyaW5nYmVuY2ggaXMgbm93IGF2YWlsYWJsZSBpbiB0aGUgVG9vbHMvc3RyaW5nYmVuY2ggZm9sZGVyLgorICBJdCB1c2VkIHRvIGxpdmUgaW4gaXRzIG93biBTVk4gcHJvamVjdC4KIAogCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy4zLjAgQWxwaGEgMj8KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLSpSZWxlYXNlIGRhdGU6IDEwLUFwci0yMDEyKgorKlJlbGVhc2UgZGF0ZTogMDEtQXByLTIwMTIqCiAKLUJ1aWxkCi0tLS0tLQorQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzE0Mzg3OiBXb3JrIGFyb3VuZCBhIHByb2JsZW0gYnVpbGRpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgdW5kZXIgV2luZG93cwotICBieSB1bmRlZmluaW5nIGBgc21hbGxgYCBiZWZvcmUgdXNlIGluIHRoZSBQeXRob24gaGVhZGVycy4KKy0gSXNzdWUgIzE2ODMzNjg6IG9iamVjdC5fX25ld19fIGFuZCBvYmplY3QuX19pbml0X18gcmFpc2UgYSBUeXBlRXJyb3IgaWYgdGhleQorICBhcmUgcGFzc2VkIGFyZ3VtZW50cyBhbmQgdGhlaXIgY29tcGxlbWVudGFyeSBtZXRob2QgaXMgbm90IG92ZXJyaWRkZW4uCiAKKy0gSXNzdWUgIzE0Mzc4OiBGaXggY29tcGlsaW5nIGFzdC5JbXBvcnRGcm9tIG5vZGVzIHdpdGggYSAiX19mdXR1cmVfXyIgc3RyaW5nIGFzCisgIHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4zIHJlbGVhc2UgY2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLSBJc3N1ZSAjMTQzMzE6IFVzZSBzaWduaWZpY2FudGx5IGxlc3Mgc3RhY2sgc3BhY2Ugd2hlbiBpbXBvcnRpbmcgbW9kdWxlcyBieQorICBhbGxvY2F0aW5nIHBhdGggYnVmZmVycyBvbiB0aGUgaGVhcCBpbnN0ZWFkIG9mIHRoZSBzdGFjay4KIAotKlJlbGVhc2UgZGF0ZTogMTgtTWFyLTIwMTIqCistIElzc3VlICMxNDMzNDogUHJldmVudCBpbiBhIHNlZ2ZhdWx0IGluIHR5cGUuX19nZXRhdHRyaWJ1dGVfXyB3aGVuIGl0IHdhcyBub3QKKyAgcGFzc2VkIHN0cmluZ3MuCisKKy0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKKyAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCisKKy0gSXNzdWUgIzE0MjA1OiBkaWN0IGxvb2t1cCByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgdGhlIGRpY3QgaXMgbW9kaWZpZWQKKyAgZHVyaW5nIGEgbG9va3VwLgorCistIElzc3VlICMxNDIyMDogV2hlbiBhIGdlbmVyYXRvciBpcyBkZWxlZ2F0aW5nIHRvIGFub3RoZXIgaXRlcmF0b3Igd2l0aCB0aGUKKyAgeWllbGQgZnJvbSBzeW50YXgsIGl0IG5lZWRzIHRvIGhhdmUgaXRzIGBgZ2lfcnVubmluZ2BgIGZsYWcgc2V0IHRvIFRydWUuCisKKy0gSXNzdWUgIzE0NDM1OiBSZW1vdmUgZGVkaWNhdGVkIGJsb2NrIGFsbG9jYXRvciBmcm9tIGZsb2F0b2JqZWN0LmMgYW5kIHJlbHkKKyAgb24gdGhlIFB5T2JqZWN0X01hbGxvYygpIGFwaSBsaWtlIGFsbCBvdGhlciBvYmplY3RzLgorCistIElzc3VlICMxNDQ3MTogRml4IGEgcG9zc2libGUgYnVmZmVyIG92ZXJydW4gaW4gdGhlIHdpbnJlZyBtb2R1bGUuCisKKy0gSXNzdWUgIzE0Mjg4OiBBbGxvdyB0aGUgc2VyaWFsaXphdGlvbiBvZiBidWlsdGluIGl0ZXJhdG9ycwogCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscwotICBvbiBXaW5kb3dzLgorLSBJc3N1ZSAjMTQzMDA6IFVuZGVyIFdpbmRvd3MsIHNvY2tldHMgY3JlYXRlZCB1c2luZyBzb2NrZXQuZHVwKCkgbm93IGFsbG93CisgIG92ZXJsYXBwZWQgSS9PLiAgUGF0Y2ggYnkgc2J0LgogCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KKy0gSXNzdWUgIzEzODcyOiBzb2NrZXQuZGV0YWNoKCkgbm93IG1hcmtzIHRoZSBzb2NrZXQgY2xvc2VkIChhcyBtaXJyb3JlZAorICBpbiB0aGUgc29ja2V0IHJlcHIoKSkuICBQYXRjaCBieSBNYXR0IEpvaW5lci4KKworLSBJc3N1ZSAjMTQ0MDY6IEZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gdXNpbmcgYGBjb25jdXJyZW50LmZ1dHVyZXMud2FpdCgKKyAgcmV0dXJuX3doZW49QUxMX0NPTVBMRVRFRClgYC4gIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICM1MTM2OiBkZXByZWNhdGUgb2xkLCB1bnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlci4KKworLSBJc3N1ZSAjMTQ0MDk6IElETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cKKyAgd2hlbiBpdCBjYW5ub3QgcmVhZCB0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZAorICBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleSBiaW5kaW5ncy4KKyAgVGhlcmUgd2FzIHByZXZpb3VzbHkgYSBidWcgaW4gb25lIG9mIHRoZSBkZWZhdWx0cy4KKworLSBJc3N1ZSAjMTQ0MTY6IHN5c2xvZyBub3cgZGVmaW5lcyB0aGUgTE9HX09ERUxBWSBhbmQgTE9HX0FVVEhQUklWIGNvbnN0YW50cworICBpZiB0aGV5IGFyZSBkZWZpbmVkIGluIDxzeXNsb2cuaD4uCisKKy0gSURMRSBjYW4gYmUgbGF1bmNoZWQgYXMgcHl0aG9uIC1tIGlkbGVsaWIKKworLSBJc3N1ZSAjMTQyOTU6IEFkZCB1bml0dGVzdC5tb2NrCisKKy0gSXNzdWUgIzc2NTI6IEFkZCAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjIG9wdGlvbiB0byBjb25maWd1cmUgZm9yIGxpbmtpbmcKKyAgdGhlIF9kZWNpbWFsIG1vZHVsZSBhZ2FpbnN0IGFuIGluc3RhbGxlZCBsaWJtcGRlYy4KKworLSBJc3N1ZSAjMTQzODA6IE1JTUVUZXh0IG5vdyBkZWZhdWx0cyB0byB1dGYtOCB3aGVuIHBhc3NlZCBub24tQVNDSUkgdW5pY29kZQorICB3aXRoIG5vIGNoYXJzZXQgc3BlY2lmaWVkLgorCistIElzc3VlICMxMDM0MDogYXN5bmNvcmUgLSBwcm9wZXJseSBoYW5kbGUgRUlOVkFMIGluIGRpc3BhdGNoZXIgY29uc3RydWN0b3Igb24KKyAgT1NYOyBhdm9pZCB0byBjYWxsIGhhbmRsZV9jb25uZWN0IGluIGNhc2Ugb2YgYSBkaXNjb25uZWN0ZWQgc29ja2V0IHdoaWNoCisgIHdhcyBub3QgbWVhbnQgdG8gY29ubmVjdC4KKworLSBJc3N1ZSAjMTQyMDQ6IFRoZSBzc2wgbW9kdWxlIG5vdyBoYXMgc3VwcG9ydCBmb3IgdGhlIE5leHQgUHJvdG9jb2wKKyAgTmVnb3RpYXRpb24gZXh0ZW5zaW9uLCBpZiBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgT3BlblNTTCBsaWJyYXJ5LgorICBQYXRjaCBieSBDb2xpbiBNYXJjLgorCistIElzc3VlICMzMDM1OiBVbnVzZWQgZnVuY3Rpb25zIGZyb20gdGtpbnRlciBhcmUgbWFya2VkIGFzIHBlbmRpbmcgZGVwcmVjYXRlZC4KKworLSBJc3N1ZSAjMTI3NTc6IEZpeCB0aGUgc2tpcHBpbmcgb2YgZG9jdGVzdHMgd2hlbiBweXRob24gaXMgcnVuIHdpdGggLU9PIHNvCisgIHRoYXQgaXQgd29ya3MgaW4gdW5pdHRlc3QncyB2ZXJib3NlIG1vZGUgYXMgd2VsbCBhcyBub24tdmVyYm9zZSBtb2RlLgorCistIElzc3VlICM3NjUyOiBJbnRlZ3JhdGUgdGhlIGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgbGlibXBkZWMgbGlicmFyeSB0byBzcGVlZAorICB1cCB0aGUgZGVjaW1hbCBtb2R1bGUuIFBlcmZvcm1hbmNlIGdhaW5zIG9mIHRoZSBuZXcgQyBpbXBsZW1lbnRhdGlvbiBhcmUKKyAgYmV0d2VlbiAxMHggYW5kIDEwMHgsIGRlcGVuZGluZyBvbiB0aGUgYXBwbGljYXRpb24uCisKKy0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKKyAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQorCistIElzc3VlICMxNDI2OTogU01UUEQgbm93IGNvbmZvcm1zIHRvIHRoZSBSRkMgYW5kIHJlcXVpcmVzIGEgSEVMTyBjb21tYW5kCisgIGJlZm9yZSBNQUlMLCBSQ1BULCBvciBEQVRBLgorCistIElzc3VlICMxMzY5NDogYXN5bmNocm9ub3VzIGNvbm5lY3QgaW4gYXN5bmNvcmUuZGlzcGF0Y2hlciBkb2VzIG5vdCBzZXQgYWRkcgorICBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzE0MzQ0OiBmaXhlZCB0aGUgcmVwciBvZiBlbWFpbC5wb2xpY3kgb2JqZWN0cy4KKworLSBJc3N1ZSAjMTE2ODY6IEFkZGVkIG1pc3NpbmcgZW50cmllcyB0byBlbWFpbCBwYWNrYWdlIF9fYWxsX18gbGlzdHMKKyAgKG1vc3RseSB0aGUgbmV3IEJ5dGVzIGNsYXNzZXMpLgorCistIElzc3VlICMxNDMzNTogbXVsdGlwcm9jZXNzaW5nJ3MgY3VzdG9tIFBpY2tsZXIgc3ViY2xhc3Mgbm93IGluaGVyaXRzIGZyb20KKyAgdGhlIEMtYWNjZWxlcmF0ZWQgaW1wbGVtZW50YXRpb24uICBQYXRjaCBieSBzYnQuCisKKy0gSXNzdWUgIzEwNDg0OiBGaXggdGhlIENHSUhUVFBTZXJ2ZXIncyBQQVRIX0lORk8gaGFuZGxpbmcgcHJvYmxlbS4KKworLSBJc3N1ZSAjMTExOTk6IEZpeCB0aGUgd2l0aCB1cmxsaWIgd2hpY2ggaGFuZ3Mgb24gcGFydGljdWxhciBmdHAgdXJscy4KKworLSBJbXByb3ZlIHRoZSBtZW1vcnkgdXRpbGl6YXRpb24gYW5kIHNwZWVkIG9mIGZ1bmN0b29scy5scnVfY2FjaGUuCisKKy0gSXNzdWUgIzE0MjIyOiBVc2UgdGhlIG5ldyB0aW1lLnN0ZWFkeSgpIGZ1bmN0aW9uIGluc3RlYWQgb2YgdGltZS50aW1lKCkgZm9yCisgIHRpbWVvdXQgaW4gcXVldWUgYW5kIHRocmVhZGluZyBtb2R1bGVzIHRvIG5vdCBiZSBhZmZlY3RlZCBvZiBzeXN0ZW0gdGltZQorICB1cGRhdGUuCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgbGliMnRvMy5weXRyZWUuQmFzZS5nZXRfcHJlZml4L3NldF9wcmVmaXguCiAKIC0gSXNzdWUgIzE0MjM0OiBDVkUtMjAxMi0wODc2OiBSYW5kb21pemUgaGFzaGVzIG9mIHhtbCBhdHRyaWJ1dGVzIGluIHRoZSBoYXNoCiAgIHRhYmxlIGludGVybmFsIHRvIHRoZSBweWV4cGF0IG1vZHVsZSdzIGNvcHkgb2YgdGhlIGV4cGF0IGxpYnJhcnkgdG8gYXZvaWQgYQogICBkZW5pYWwgb2Ygc2VydmljZSBkdWUgdG8gaGFzaCBjb2xsaXNpb25zLiAgUGF0Y2ggYnkgRGF2aWQgTWFsY29sbSB3aXRoIHNvbWUKICAgbW9kaWZpY2F0aW9ucyBieSB0aGUgZXhwYXQgcHJvamVjdC4KIAorLSBJc3N1ZSAjMTQyMDA6IElkbGUgc2hlbGwgY3Jhc2ggb24gcHJpbnRpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3Rlci4KIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjMgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistIElzc3VlICMxMjgxODogZm9ybWF0IGFkZHJlc3Mgbm8gbG9uZ2VyIG5lZWRsZXNzbHkgXCBlc2NhcGVzICgpcyBpbiBuYW1lcyB3aGVuCisgIHRoZSBuYW1lIGVuZHMgdXAgYmVpbmcgcXVvdGVkLgogCi0qUmVsZWFzZSBkYXRlOiAyNC1GZWItMjAxMioKKy0gSXNzdWUgIzE0MDYyOiBCeXRlc0dlbmVyYXRvciBub3cgY29ycmVjdGx5IGZvbGRzIEhlYWRlciBvYmplY3RzLAorICBpbmNsdWRpbmcgdXNpbmcgbGluZXNlcCB3aGVuIGZvbGRpbmcuCisKKy0gSXNzdWUgIzEzODM5OiBXaGVuIGludm9rZWQgb24gdGhlIGNvbW1hbmQtbGluZSwgdGhlIHBzdGF0cyBtb2R1bGUgbm93CisgIGFjY2VwdHMgc2V2ZXJhbCBmaWxlbmFtZXMgb2YgcHJvZmlsZSBzdGF0IGZpbGVzIGFuZCBtZXJnZXMgdGhlbSBhbGwuCisgIFBhdGNoIGJ5IE1hdHQgSm9pbmVyLgorCistIElzc3VlICMxNDI5MTogRW1haWwgbm93IGRlZmF1bHRzIHRvIHV0Zi04IGZvciBub24tQVNDSUkgdW5pY29kZSBoZWFkZXJzCisgIGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIDIuNy4KKworLSBJc3N1ZSAjOTg5NzEyOiBTdXBwb3J0IHVzaW5nIFRrIHdpdGhvdXQgYSBtYWlubG9vcC4KKworLSBJc3N1ZSAjNTIxOTogUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KKworLSBJc3N1ZSAjMzgzNTogUmVmdXNlIHRvIHVzZSB1bnRocmVhZGVkIFRjbCBpbiB0aHJlYWRlZCBQeXRob24uCisKKy0gSXNzdWUgIzI4NDM6IEFkZCBuZXcgVGsgQVBJIHRvIFRraW50ZXIuCisKKy0gSXNzdWUgIzE0MTg0OiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgorICBNYWMgT1MgWCB0byBhdm9pZCBpbnRlcnByZXRlciBjcmFzaGVzIHdoZW4gdXNpbmcgdGhyZWFkcyBvbiAxMC43LgorCistIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZS5mcm9tdGltZXN0YW1wKCksCisgIGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoKSBhbmQgZGF0ZXRpbWUuZGF0ZXRpbWUudXRjZnJvbXRpbWVzdGFtcCgpCisgIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQgb2YgVmFsdWVFcnJvciBpZiBsb2NhbHRpbWUoKSBvciBnbXRpbWUoKSBmYWlsZWQuCisKKy0gSXNzdWUgIzE0MTgwOiB0aW1lLmN0aW1lKCksIGdtdGltZSgpLCB0aW1lLmxvY2FsdGltZSgpLAorICBkYXRldGltZS5kYXRlLmZyb210aW1lc3RhbXAoKSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAorICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJhaXNlcyBhbiBPdmVyZmxvd0Vycm9yLCBpbnN0ZWFkIG9mCisgIGEgVmFsdWVFcnJvciwgaWYgdGhlIHRpbWVzdGFtcCBkb2VzIG5vdCBmaXQgaW4gdGltZV90LgorCistIElzc3VlICMxNDE4MDogZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcCgpIGFuZAorICBkYXRldGltZS5kYXRldGltZS51dGNmcm9tdGltZXN0YW1wKCkgbm93IHJvdW5kIG1pY3Jvc2Vjb25kcyB0b3dhcmRzIHplcm8KKyAgaW5zdGVhZCBvZiByb3VuZGluZyB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyBhd2F5IGZyb20gemVyby4KKworLSBJc3N1ZSAjMTA1NDM6IEZpeCB1bml0dGVzdCB0ZXN0IGRpc2NvdmVyeSB3aXRoIEp5dGhvbiBieXRlY29kZSBmaWxlcy4KKworLSBJc3N1ZSAjMTE3ODg2MzogU2VwYXJhdGUgaW5pdGlhbGlzYXRpb24gZnJvbSBzZXR0aW5nIHdoZW4gaW5pdGlhbGl6aW5nCisgIFRraW50ZXIuVmFyaWFibGVzOyBoYXJtb25pemUgZXhjZXB0aW9ucyB0byBWYWx1ZUVycm9yOyBvbmx5IGRlbGV0ZSB2YXJpYWJsZXMKKyAgdGhhdCBoYXZlIG5vdCBiZWVuIGRlbGV0ZWQ7IGFzc2VydCB0aGF0IHZhcmlhYmxlIG5hbWVzIGFyZSBzdHJpbmdzLgorCistIElzc3VlICMxNDEwNDogSW1wbGVtZW50IHRpbWUubW9ub3RvbmljKCkgb24gTWFjIE9TIFgsIHBhdGNoIHdyaXR0ZW4gYnkKKyAgTmljaG9sYXMgUmlsZXkuCisKKy0gSXNzdWUgIzEzMzk0OiB0aGUgYWlmYyBtb2R1bGUgbm93IHVzZXMgd2FybmluZ3Mud2FybigpIHRvIHNpZ25hbCB3YXJuaW5ncy4KKworLSBJc3N1ZSAjMTQyNTI6IEZpeCBzdWJwcm9jZXNzLlBvcGVuLnRlcm1pbmF0ZSgpIHRvIG5vdCByYWlzZSBhbiBlcnJvciB1bmRlcgorICBXaW5kb3dzIHdoZW4gdGhlIGNoaWxkIHByb2Nlc3MgaGFzIGFscmVhZHkgZXhpdGVkLgorCistIElzc3VlICMxNDIyMzogY3Vyc2VzLmFkZGNoKCkgaXMgbm8gbW9yZSBsaW1pdGVkIHRvIHRoZSByYW5nZSAwLTI1NSB3aGVuIHRoZQorICBQeXRob24gY3Vyc2VzIGlzIG5vdCBsaW5rZWQgdG8gbGlibmN1cnNlc3cuIEl0IHdhcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZAorICBpbiBQeXRob24gMy4zYTEuCisKKy0gSXNzdWUgIzE0MTY4OiBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgRWxlbWVudC5fYXR0cnMgaW4gbWluaWRvbSBiZWZvcmUKKyAgYWNjZXNzaW5nIGl0LgorCistIElzc3VlICMxMjMyODogRml4IG11bHRpcHJvY2Vzc2luZydzIHVzZSBvZiBvdmVybGFwcGVkIEkvTyBvbiBXaW5kb3dzLgorICBBbHNvLCBhZGQgYSBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbi53YWl0KHJsaXN0LCB0aW1lb3V0PU5vbmUpIGZ1bmN0aW9uCisgIGZvciBwb2xsaW5nIG11bHRpcGxlIG9iamVjdHMgYXQgb25jZS4gIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjMTQwMDc6IEFjY2VwdCBpbmNvbXBsZXRlIFRyZWVCdWlsZGVyIG9iamVjdHMgKG1pc3Npbmcgc3RhcnQsIGVuZCwKKyAgZGF0YSBvciBjbG9zZSBtZXRob2QpIGZvciB0aGUgUHl0aG9uIGltcGxlbWVudGF0aW9uIGFzIHdlbGwuCisgIERyb3AgdGhlIG5vLW9wIFRyZWVCdWlsZGVyKCkueG1sKCkgbWV0aG9kIGZyb20gdGhlIEMgaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzE0MjEwOiBwZGIgbm93IGhhcyB0YWItY29tcGxldGlvbiBub3Qgb25seSBmb3IgY29tbWFuZCBuYW1lcywgYnV0CisgIGFsc28gZm9yIHRoZWlyIGFyZ3VtZW50cywgd2hlcmV2ZXIgcG9zc2libGUuCisKKy0gSXNzdWUgIzE0MzEwOiBTb2NrZXRzIGNhbiBub3cgYmUgd2l0aCBvdGhlciBwcm9jZXNzZXMgb24gV2luZG93cyB1c2luZworICB0aGUgYXBpIHNvY2tldC5zb2NrZXQuc2hhcmUoKSBhbmQgc29ja2V0LmZyb21zaGFyZSgpLgorCistIElzc3VlICMxMDU3NjogVGhlIGdjIG1vZHVsZSBub3cgaGFzIGEgJ2NhbGxiYWNrcycgbWVtYmVyIHRoYXQgd2lsbCBnZXQKKyAgY2FsbGVkIHdoZW4gZ2FyYmFnZSBjb2xsZWN0aW9uIHRha2VzIHBsYWNlLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMTQ1NTc6IEZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgorCistIElzc3VlICMxNDM4NzogRG8gbm90IGluY2x1ZGUgYWNjdS5oIGZyb20gUHl0aG9uLmguCisKKy0gSXNzdWUgIzE0MzU5OiBPbmx5IHVzZSBPX0NMT0VYRUMgaW4gX3Bvc2l4bW9kdWxlLmMgaWYgaXQgaXMgZGVmaW5lZC4KKyAgQmFzZWQgb24gcGF0Y2ggZnJvbSBIZXJ2w6kgQ29hdGFuaGF5LgorCistIElzc3VlICMxNDMyMTogRG8gbm90IHJ1biBwZ2VuIGR1cmluZyB0aGUgYnVpbGQgaWYgZmlsZXMgYXJlIHVwIHRvIGRhdGUuCisKK0RvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMTQwMzQ6IGFkZGVkIHRoZSBhcmdwYXJzZSB0dXRvcmlhbC4KKworLSBJc3N1ZSAjMTQzMjQ6IEZpeCBjb25maWd1cmUgdGVzdHMgZm9yIGNyb3NzIGJ1aWxkcy4KKworLSBJc3N1ZSAjMTQzMjc6IENhbGwgQUNfQ0FOT05JQ0FMX0hPU1QgaW4gY29uZmlndXJlLmFjIGFuZCBjaGVjayBpbgorICBjb25maWcue2d1ZXNzLHN1Yn0uIERvbid0IHVzZSB1bmFtZSBjYWxscyBmb3IgY3Jvc3MgYnVpbGRzLgorCitFeHRlbnNpb24gTW9kdWxlcworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjOTA0MTogQW4gaXNzdWUgaW4gY3R5cGVzLmNfbG9uZ2RvdWJsZSwgY3R5cGVzLmNfZG91YmxlLCBhbmQKKyAgY3R5cGVzLmNfZmxvYXQgdGhhdCBjYXVzZWQgYW4gaW5jb3JyZWN0IGV4Y2VwdGlvbiB0byBiZSByZXR1cm5lZCBpbiB0aGUKKyAgY2FzZSBvZiBvdmVyZmxvdyBoYXMgYmVlbiBmaXhlZC4KKworLSBJc3N1ZSAjMTQyMTI6IFRoZSByZSBtb2R1bGUgZGlkbid0IHJldGFpbiBhIHJlZmVyZW5jZSB0byBidWZmZXJzIGl0IHdhcworICBzY2FubmluZywgcmVzdWx0aW5nIGluIHNlZ2ZhdWx0cy4KKworLSBJc3N1ZSAjMTQyNTk6IFRoZSBmaW5kaXRlcigpIG1ldGhvZCBvZiByZSBvYmplY3RzIGRpZCBub3QgdGFrZSBhbnkKKyAga2V5d29yZCBhcmd1bWVudHMsIGNvbnRyYXJ5IHRvIHRoZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICMxMDE0MjogU3VwcG9ydCBmb3IgU0VFS19IT0xFL1NFRUtfREFUQSAoZm9yIGV4YW1wbGUsIHVuZGVyIFpGUykuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMxNDQ0MjogQWRkIG1pc3NpbmcgZXJybm8gaW1wb3J0IGluIHRlc3Rfc210cGxpYi4KKworLSBJc3N1ZSAjODMxNTogKHBhcnRpYWwgZml4KSBweXRob24gLW0gdW5pdHRlc3QgdGVzdC50ZXN0X2VtYWlsIG5vdyB3b3Jrcy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjMuMCBBbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMDUtTWFyLTIwMTIqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMxMzcwMzogb0NFUlQtMjAxMS0wMDM6IGFkZCAtUiBjb21tYW5kLWxpbmUgb3B0aW9uIGFuZCBQWVRIT05IQVNIU0VFRAotICBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdG8gcHJvdmlkZSBhbiBvcHQtaW4gd2F5IHRvIHByb3RlY3QgYWdhaW5zdCBkZW5pYWwgb2YKLSAgc2VydmljZSBhdHRhY2tzIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMgd2l0aGluIHRoZSBkaWN0IGFuZCBzZXQgdHlwZXMuICBQYXRjaAotICBieSBEYXZpZCBNYWxjb2xtLCBiYXNlZCBvbiB3b3JrIGJ5IFZpY3RvciBTdGlubmVyLgorLSBJc3N1ZSAjMTQxNzI6IEZpeCByZWZlcmVuY2UgbGVhayB3aGVuIG1hcnNoYWxsaW5nIGEgYnVmZmVyLWxpa2Ugb2JqZWN0CisgIChvdGhlciB0aGFuIGEgYnl0ZXMgb2JqZWN0KS4KKworLSBJc3N1ZSAjMTM1MjE6IGRpY3Quc2V0ZGVmYXVsdCgpIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwKKyAgbWFraW5nIGl0ICJhdG9taWMiIGZvciBtYW55IHB1cnBvc2VzLiAgUGF0Y2ggYnkgRmlsaXAgR3J1c3pjennFhHNraS4KKworLSBQRVAgNDA5LCBJc3N1ZSAjNjIxMDogInJhaXNlIFggZnJvbSBOb25lIiBpcyBub3cgc3VwcG9ydGVkIGFzIGEgbWVhbnMgb2YKKyAgc3VwcHJlc3NpbmcgdGhlIGRpc3BsYXkgb2YgdGhlIGNoYWluZWQgZXhjZXB0aW9uIGNvbnRleHQuIFRoZSBjaGFpbmVkCisgIGNvbnRleHQgc3RpbGwgcmVtYWlucyBhdmFpbGFibGUgYXMgdGhlIF9fY29udGV4dF9fIGF0dHJpYnV0ZS4KKworLSBJc3N1ZSAjMTAxODE6IE5ldyBtZW1vcnl2aWV3IGltcGxlbWVudGF0aW9uIGZpeGVzIG11bHRpcGxlIG93bmVyc2hpcAorICBhbmQgbGlmZXRpbWUgaXNzdWVzIG9mIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBQeV9idWZmZXIgbWVtYmVycyAoIzk5OTApCisgIGFzIHdlbGwgYXMgY3Jhc2hlcyAoIzgzMDUsICM3NDMzKS4gTWFueSBuZXcgZmVhdHVyZXMgaGF2ZSBiZWVuIGFkZGVkCisgIChTZWUgd2hhdHNuZXcvMy4zKSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQgZXh0ZW5zaXZlbHkuCisgIFRoZSBuZGFycmF5IHRlc3Qgb2JqZWN0IGZyb20gX3Rlc3RidWZmZXIuYyBpbXBsZW1lbnRzIGFsbCBhc3BlY3RzIG9mCisgIFBFUC0zMTE4LCBzbyBmdXJ0aGVyIGRldmVsb3BtZW50IHRvd2FyZHMgdGhlIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uCisgIG9mIHRoZSBQRVAgY2FuIHByb2NlZWQgaW4gYSB0ZXN0LWRyaXZlbiBtYW5uZXIuCisKKyAgVGhhbmtzIHRvIE5pY2sgQ29naGxhbiwgQW50b2luZSBQaXRyb3UgYW5kIFBhdWxpIFZpcnRhbmVuIGZvciByZXZpZXcKKyAgYW5kIG1hbnkgaWRlYXMuCisKKy0gSXNzdWUgIzEyODM0OiBGaXggaW5jb3JyZWN0IHJlc3VsdHMgb2YgbWVtb3J5dmlldy50b2J5dGVzKCkgZm9yCisgIG5vbi1jb250aWd1b3VzIGFycmF5cy4KKworLSBJc3N1ZSAjNTIzMTogSW50cm9kdWNlIG1lbW9yeXZpZXcuY2FzdCgpIG1ldGhvZCB0aGF0IGFsbG93cyBjaGFuZ2luZworICBmb3JtYXQgYW5kIHNoYXBlIHdpdGhvdXQgbWFraW5nIGEgY29weSBvZiB0aGUgdW5kZXJseWluZyBtZW1vcnkuCiAKIC0gSXNzdWUgIzE0MDg0OiBGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayB3aGVuIGltcG9ydGluZyBhIG1vZHVsZSB3aXRoIGEKICAgYmFkIGVuY29kaW5nLgogCistIFVwZ3JhZGUgVW5pY29kZSBkYXRhIHRvIFVuaWNvZGUgNi4xLgorCistIElzc3VlICMxNDA0MDogUmVtb3ZlIHJhcmVseSB1c2VkIGZpbGUgbmFtZSBzdWZmaXhlcyBmb3IgQyBleHRlbnNpb25zCisgICh1bmRlciBQT1NJWCBtYWlubHkpLgorCistIElzc3VlICMxNDA1MTogQWxsb3cgYXJiaXRyYXJ5IGF0dHJpYnV0ZXMgdG8gYmUgc2V0IG9mIGNsYXNzbWV0aG9kIGFuZAorICBzdGF0aWNtZXRob2QuCisKKy0gSXNzdWUgIzEzNzAzOiBvQ0VSVC0yMDExLTAwMzogUmFuZG9taXplIGhhc2hlcyBvZiBzdHIgYW5kIGJ5dGVzIHRvIHByb3RlY3QKKyAgYWdhaW5zdCBkZW5pYWwgb2Ygc2VydmljZSBhdHRhY2tzIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMgd2l0aGluIHRoZSBkaWN0IGFuZAorICBzZXQgdHlwZXMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtLCBiYXNlZCBvbiB3b3JrIGJ5IFZpY3RvciBTdGlubmVyLgorCiAtIElzc3VlICMxMzAyMDogRml4IGEgcmVmZXJlbmNlIGxlYWsgd2hlbiBhbGxvY2F0aW5nIGEgc3RydWN0c2VxdWVuY2Ugb2JqZWN0CiAgIGZhaWxzLiAgUGF0Y2ggYnkgU3VtYW4gU2FoYS4KIApAQCAtNzQ2LDYgKzE5NjYsOSBAQAogLSBJc3N1ZSAjMTEyMzU6IEZpeCBPdmVyZmxvd0Vycm9yIHdoZW4gdHJ5aW5nIHRvIGltcG9ydCBhIHNvdXJjZSBmaWxlIHdob3NlCiAgIG1vZGlmaWNhdGlvbiB0aW1lIGRvZXNuJ3QgZml0IGluIGEgMzItYml0IHRpbWVzdGFtcC4KIAorLSBJc3N1ZSAjMTI3MDU6IEEgU3ludGF4RXJyb3IgZXhjZXB0aW9uIGlzIG5vdyByYWlzZWQgd2hlbiBhdHRlbXB0aW5nIHRvCisgIGNvbXBpbGUgbXVsdGlwbGUgc3RhdGVtZW50cyBhcyBhIHNpbmdsZSBpbnRlcmFjdGl2ZSBzdGF0ZW1lbnQuCisKIC0gRml4IHRoZSBidWlsdGluIG1vZHVsZSBpbml0aWFsaXphdGlvbiBjb2RlIHRvIHN0b3JlIHRoZSBpbml0IGZ1bmN0aW9uIGZvcgogICBmdXR1cmUgcmVpbml0aWFsaXphdGlvbi4KIApAQCAtNzU3LDYgKzE5ODAsMzcgQEAKIC0gSXNzdWUgIzEzNjI5OiBSZW51bWJlciB0aGUgdG9rZW5zIGluIHRva2VuLmggc28gdGhhdCB0aGV5IG1hdGNoIHRoZSBpbmRleGVzCiAgIGludG8gX1B5UGFyc2VyX1Rva2VuTmFtZXMuCiAKKy0gSXNzdWUgIzEzNzUyOiBBZGQgYSBjYXNlZm9sZCgpIG1ldGhvZCB0byBzdHIuCisKKy0gSXNzdWUgIzEzNzYxOiBBZGQgYSAiZmx1c2giIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHByaW50KCkgZnVuY3Rpb24sCisgIHVzZWQgdG8gZW5zdXJlIGZsdXNoaW5nIHRoZSBvdXRwdXQgc3RyZWFtLgorCistIElzc3VlICMxMzY0NTogcHljIGZpbGVzIG5vdyBjb250YWluIHRoZSBzaXplIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNvdXJjZQorICBjb2RlLCB0byBhdm9pZCB0aW1lc3RhbXAgY29sbGlzaW9ucyAoZXNwZWNpYWxseSBvbiBmaWxlc3lzdGVtcyB3aXRoIGEgbG93CisgIHRpbWVzdGFtcCByZXNvbHV0aW9uKSB3aGVuIGNoZWNraW5nIGZvciBmcmVzaG5lc3Mgb2YgdGhlIGJ5dGVjb2RlLgorCistIFBFUCAzODAsIElzc3VlICMxMTY4MjogQWRkICJ5aWVsZCBmcm9tIDx4PiIgdG8gc3VwcG9ydCBlYXN5IGRlbGVnYXRpb24gdG8KKyAgc3ViZ2VuZXJhdG9ycyAoaW5pdGlhbCBwYXRjaCBieSBHcmVnIEV3aW5nLCBpbnRlZ3JhdGlvbiBpbnRvIDMuMyBieQorICBSZW5hdWQgQmxhbmNoLCBSeWFuIEtlbGx5LCBaYmlnbmlldyBKxJlkcnplamV3c2tpLVN6bWVrIGFuZCBOaWNrIENvZ2hsYW4pCisKKy0gSXNzdWUgIzEzNzQ4OiBSYXcgYnl0ZXMgbGl0ZXJhbHMgY2FuIG5vdyBiZSB3cml0dGVuIHdpdGggdGhlIGBgcmJgYCBwcmVmaXgKKyAgYXMgd2VsbCBhcyBgYGJyYGAuCisKKy0gSXNzdWUgIzEyNzM2OiBVc2UgZnVsbCB1bmljb2RlIGNhc2UgbWFwcGluZ3MgZm9yIHVwcGVyLCBsb3dlciwgYW5kIHRpdGxlIGNhc2UuCisKKy0gSXNzdWUgIzEyNzYwOiBBZGQgYSBjcmVhdGUgbW9kZSB0byBvcGVuKCkuIFBhdGNoIGJ5IERhdmlkIFRvd25zaGVuZC4KKworLSBJc3N1ZSAjMTM3Mzg6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGJ5dGVzLmxvd2VyKCkgYW5kIGJ5dGVzLnVwcGVyKCkuCisKKy0gSXNzdWUgIzEzNTc3OiBCdWlsdC1pbiBtZXRob2RzIGFuZCBmdW5jdGlvbnMgbm93IGhhdmUgYSBfX3F1YWxuYW1lX18uCisgIFBhdGNoIGJ5IHNidC4KKworLSBJc3N1ZSAjNjY5NTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcnVucyBub3cgY2xlYXIgdGhlIGZyZWVsaXN0IG9mIHNldAorICBvYmplY3RzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXR0aGlhcyBUcm9mZmFlcy4KKworLSBGaXggT1NFcnJvci5fX2luaXRfXyBhbmQgT1NFcnJvci5fX25ld19fIHNvIHRoYXQgZWFjaCBvZiB0aGVtIGNhbiBiZQorICBvdmVycmlkZW4gYW5kIHRha2UgYWRkaXRpb25hbCBhcmd1bWVudHMgKGZvbGxvd3VwIHRvIGlzc3VlICMxMjU1NSkuCisKIC0gRml4IHRoZSBmaXggZm9yIGlzc3VlICMxMjE0OTogaXQgd2FzIGluY29ycmVjdCwgYWx0aG91Z2ggaXQgaGFkIHRoZSBzaWRlCiAgIGVmZmVjdCBvZiBhcHBlYXJpbmcgdG8gcmVzb2x2ZSB0aGUgaXNzdWUuICBUaGFua3MgdG8gTWFyayBTaGFubm9uIGZvcgogICBub3RpY2luZy4KQEAgLTc2NywyNiArMjAyMSw2OCBAQAogLSBJc3N1ZSAjMTExNDc6IEZpeCBhbiB1bnVzZWQgYXJndW1lbnQgaW4gX1B5X0FOTk9UQVRFX01FTU9SWV9PUkRFUi4gIChGaXgKICAgZ2l2ZW4gYnkgQ2FtcGJlbGwgQmFydG9uKS4KIAorLSBJc3N1ZSAjMTM1MDM6IFVzZSBhIG1vcmUgZWZmaWNpZW50IHJlZHVjdGlvbiBmb3JtYXQgZm9yIGJ5dGVhcnJheXMgd2l0aAorICBwaWNrbGUgcHJvdG9jb2wgPj0gMy4gIFRoZSBvbGQgcmVkdWN0aW9uIGZvcm1hdCBpcyBrZXB0IHdpdGggb2xkZXIgcHJvdG9jb2xzCisgIGluIG9yZGVyIHRvIGFsbG93IHVucGlja2xpbmcgdW5kZXIgUHl0aG9uIDIuICBQYXRjaCBieSBJcm1lbiBkZSBKb25nLgorCiAtIElzc3VlICM3MTExOiBQeXRob24gY2FuIG5vdyBiZSBydW4gd2l0aG91dCBhIHN0ZGluLCBzdGRvdXQgb3Igc3RkZXJyCiAgIHN0cmVhbS4gIEl0IHdhcyBhbHJlYWR5IHRoZSBjYXNlIHdpdGggUHl0aG9uIDIuICBIb3dldmVyLCB0aGUgY29ycmVzcG9uZGluZwogICBzeXMgbW9kdWxlIGVudHJpZXMgYXJlIG5vdyBzZXQgdG8gTm9uZSAoaW5zdGVhZCBvZiBhbiB1bnVzYWJsZSBmaWxlIG9iamVjdCkuCiAKKy0gSXNzdWUgIzExODQ5OiBFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZAorICBvbiBQT1NJWCBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5CisgIENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTM0NTI6IFB5VW5pY29kZV9FbmNvZGVEZWNpbWFsKCkgZG9lc24ndCBzdXBwb3J0IGVycm9yIGhhbmRsZXJzCisgIGRpZmZlcmVudCB0aGFuICJzdHJpY3QiIGFueW1vcmUuIFRoZSBjYWxsZXIgd2FzIHVuYWJsZSB0byBjb21wdXRlIHRoZQorICBzaXplIG9mIHRoZSBvdXRwdXQgYnVmZmVyOiBpdCBkZXBlbmRzIG9uIHRoZSBlcnJvciBoYW5kbGVyLgorCistIFBFUCAzMTU1IC8gaXNzdWUgIzEzNDQ4OiBRdWFsaWZpZWQgbmFtZSBmb3IgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgorCiAtIElzc3VlICMxMzQzNjogRml4IGEgYm9ndXMgZXJyb3IgbWVzc2FnZSB3aGVuIGFuIEFTVCBvYmplY3Qgd2FzIHBhc3NlZAogICBhbiBpbnZhbGlkIGludGVnZXIgdmFsdWUuCiAKKy0gSXNzdWUgIzEzNDExOiBtZW1vcnl2aWV3IG9iamVjdHMgYXJlIG5vdyBoYXNoYWJsZSB3aGVuIHRoZSB1bmRlcmx5aW5nCisgIG9iamVjdCBpcyBoYXNoYWJsZS4KKwogLSBJc3N1ZSAjMTMzMzg6IEhhbmRsZSBhbGwgZW51bWVyYXRpb25zIGluIF9QeV9BTk5PVEFURV9NRU1PUllfT1JERVIKICAgdG8gYWxsb3cgY29tcGlsaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggLVdzd2l0Y2gtZW51bSBvbiBnY2MuCiAgIEluaXRpYWwgcGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCiAKKy0gSXNzdWUgIzEwMjI3OiBBZGQgYW4gYWxsb2NhdGlvbiBjYWNoZSBmb3IgYSBzaW5nbGUgc2xpY2Ugb2JqZWN0LiAgUGF0Y2ggYnkKKyAgU3RlZmFuIEJlaG5lbC4KKworLSBJc3N1ZSAjMTMzOTM6IEJ1ZmZlcmVkUmVhZGVyLnJlYWQxKCkgbm93IGFza3MgdGhlIGZ1bGwgcmVxdWVzdGVkIHNpemUgdG8KKyAgdGhlIHJhdyBzdHJlYW0gaW5zdGVhZCBvZiBsaW1pdGluZyBpdHNlbGYgdG8gdGhlIGJ1ZmZlciBzaXplLgorCistIElzc3VlICMxMzM5MjogV3JpdGluZyBhIHB5YyBmaWxlIHNob3VsZCBub3cgYmUgYXRvbWljIHVuZGVyIFdpbmRvd3MgYXMgd2VsbC4KKwogLSBJc3N1ZSAjMTMzMzM6IFRoZSBVVEYtNyBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcyAodGhlIGVuY29kZXIKICAgYWxyZWFkeSBhY2NlcHRzIHRoZW0pLgogCistIElzc3VlICMxMzM4OTogRnVsbCBnYXJiYWdlIGNvbGxlY3Rpb24gcGFzc2VzIG5vdyBjbGVhciB0aGUgZnJlZWxpc3RzIGZvcgorICBsaXN0IGFuZCBkaWN0IG9iamVjdHMuICBUaGV5IGFscmVhZHkgY2xlYXJlZCBvdGhlciBmcmVlbGlzdHMgaW4gdGhlCisgIGludGVycHJldGVyLgorCistIElzc3VlICMxMzMyNzogUmVtb3ZlIHRoZSBuZWVkIGZvciBhbiBleHBsaWNpdCBOb25lIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQKKyAgdG8gb3MudXRpbWUsIG9zLmx1dGltZXMsIG9zLmZ1dGltZXMsIG9zLmZ1dGltZW5zLCBvcy5mdXRpbWVzYXQsIGluCisgIG9yZGVyIHRvIHVwZGF0ZSB0byB0aGUgY3VycmVudCB0aW1lLiBBbHNvIGFkZGVkIGtleXdvcmQgYXJndW1lbnQKKyAgaGFuZGxpbmcgdG8gb3MudXRpbWVuc2F0IGluIG9yZGVyIHRvIHJlbW92ZSB0aGUgbmVlZCBmb3IgZXhwbGljaXQgTm9uZS4KKworLSBJc3N1ZSAjMTMzNTA6IFNpbXBsaWZ5IHNvbWUgQyBjb2RlIGJ5IHJlcGxhY2luZyBtb3N0IHVzYWdlcyBvZgorICBQeVVuaWNvZGVfRm9ybWF0IGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0LgorCiAtIElzc3VlICMxMzM0MjogaW5wdXQoKSB1c2VkIHRvIGlnbm9yZSBzeXMuc3RkaW4ncyBhbmQgc3lzLnN0ZG91dCdzIHVuaWNvZGUKICAgZXJyb3IgaGFuZGxlciBpbiBpbnRlcmFjdGl2ZSBtb2RlICh3aGVuIGNhbGxpbmcgaW50byBQeU9TX1JlYWRsaW5lKCkpLgogCistIElzc3VlICM5ODk2OiBBZGQgc3RhcnQsIHN0b3AsIGFuZCBzdGVwIGF0dHJpYnV0ZXMgdG8gcmFuZ2Ugb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTMzNDM6IEZpeCBhIFN5c3RlbUVycm9yIHdoZW4gYSBsYW1iZGEgZXhwcmVzc2lvbiB1c2VzIGEgZ2xvYmFsCi0gIHZhcmlhYmxlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG9mIGEga2V5d29yZC1vbmx5IGFyZ3VtZW50OgotICAobGFtYmRhICosIGFyZz1HTE9CQUxfTkFNRTogTm9uZSkKKyAgdmFyaWFibGUgaW4gdGhlIGRlZmF1bHQgdmFsdWUgb2YgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQ6IGBgbGFtYmRhICosCisgIGFyZz1HTE9CQUxfTkFNRTogTm9uZWBgCisKKy0gSXNzdWUgIzEyNzk3OiBBZGRlZCBjdXN0b20gb3BlbmVyIHBhcmFtZXRlciB0byBidWlsdGluIG9wZW4oKSBhbmQKKyAgRmlsZUlPLm9wZW4oKS4KIAogLSBJc3N1ZSAjMTA1MTk6IEF2b2lkIHVubmVjZXNzYXJ5IHJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxscyBpbgogICBzZXRvYmplY3QuYy4KQEAgLTc5NiwyMSArMjA5Miw0NyBAQAogLSBJc3N1ZSAjMTMwMTg6IEZpeCByZWZlcmVuY2UgbGVha3MgaW4gZXJyb3IgcGF0aHMgaW4gZGljdG9iamVjdC5jLgogICBQYXRjaCBieSBTdW1hbiBTYWhhLgogCistIElzc3VlICMxMzIwMTogRGVmaW5lICc9PScgYW5kICchPScgdG8gY29tcGFyZSByYW5nZSBvYmplY3RzIGJhc2VkIG9uCisgIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nIGJhc2VkIG9uCisgIG9iamVjdCBpZGVudGl0eSkuCisKIC0gSXNzdWUgIzEyOTQyMzI6IEluIGEgZmV3IGNhc2VzIGludm9sdmluZyBtZXRhY2xhc3MgaW5oZXJpdGFuY2UsIHRoZQogICBpbnRlcnByZXRlciB3b3VsZCBzb21ldGltZXMgaW52b2tlIHRoZSB3cm9uZyBtZXRhY2xhc3Mgd2hlbiBidWlsZGluZyBhIG5ldwogICBjbGFzcyBvYmplY3QuIFRoZXNlIGNhc2VzIG5vdyBiZWhhdmUgY29ycmVjdGx5LiBQYXRjaCBieSBEYW5pZWwgVXJiYW4uCiAKKy0gSXNzdWUgIzEyNzUzOiBBZGQgc3VwcG9ydCBmb3IgVW5pY29kZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcy4KKyAgQm90aCBgYHVuaWNvZGVkYXRhLmxvb2t1cCgpYGAgYW5kICdcTnsuLi59JyBub3cgcmVzb2x2ZSBhbGlhc2VzLAorICBhbmQgYGB1bmljb2RlZGF0YS5sb29rdXAoKWBgIHJlc29sdmVzIG5hbWVkIHNlcXVlbmNlcyB0b28uCisKKy0gSXNzdWUgIzEyMTcwOiBUaGUgY291bnQoKSwgZmluZCgpLCByZmluZCgpLCBpbmRleCgpIGFuZCByaW5kZXgoKSBtZXRob2RzCisgIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyBub3cgYWNjZXB0IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCAyNTUKKyAgYXMgdGhlaXIgZmlyc3QgYXJndW1lbnQuICBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KKwogLSBJc3N1ZSAjMTI2MDQ6IFZUUkFDRSBtYWNybyBleHBhbmRlZCB0byBuby1vcCBpbiBfc3JlLmMgdG8gYXZvaWQgY29tcGlsZXIKICAgd2FybmluZ3MuIFBhdGNoIGJ5IEpvc2ggVHJpcGxldHQgYW5kIFBldHJpIExlaHRpbmVuLgogCistIElzc3VlICMxMjI4MTogUmV3cml0ZSB0aGUgTUJDUyBjb2RlYyB0byBoYW5kbGUgY29ycmVjdGx5IHJlcGxhY2UgYW5kIGlnbm9yZQorICBlcnJvciBoYW5kbGVycyBvbiBhbGwgV2luZG93cyB2ZXJzaW9ucy4gVGhlIE1CQ1MgY29kZWMgaXMgbm93IHN1cHBvcnRpbmcgYWxsCisgIGVycm9yIGhhbmRsZXJzLCBpbnN0ZWFkIG9mIG9ubHkgcmVwbGFjZSB0byBlbmNvZGUgYW5kIGlnbm9yZSB0byBkZWNvZGUuCisKIC0gSXNzdWUgIzEzMTg4OiBXaGVuIGNhbGxlZCB3aXRob3V0IGFuIGV4cGxpY2l0IHRyYWNlYmFjayBhcmd1bWVudCwKICAgZ2VuZXJhdG9yLnRocm93KCkgbm93IGdldHMgdGhlIHRyYWNlYmFjayBmcm9tIHRoZSBwYXNzZWQgZXhjZXB0aW9uJ3MKICAgYGBfX3RyYWNlYmFja19fYGAgYXR0cmlidXRlLiAgUGF0Y2ggYnkgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEzMTQ2OiBXcml0aW5nIGEgcHljIGZpbGUgaXMgbm93IGF0b21pYyB1bmRlciBQT1NJWC4KKwogLSBJc3N1ZSAjNzgzMzogRXh0ZW5zaW9uIG1vZHVsZXMgYnVpbHQgdXNpbmcgZGlzdHV0aWxzIG9uIFdpbmRvd3Mgd2lsbCBubwogICBsb25nZXIgaW5jbHVkZSBhICJtYW5pZmVzdCIgdG8gcHJldmVudCB0aGVtIGZhaWxpbmcgYXQgaW1wb3J0IHRpbWUgaW4gc29tZQogICBlbWJlZGRlZCBzaXR1YXRpb25zLgogCistIFBFUCAzMTUxIC8gaXNzdWUgIzEyNTU1OiByZXdvcmtpbmcgdGhlIE9TIGFuZCBJTyBleGNlcHRpb24gaGllcmFyY2h5LgorCistIElzc3VlICMxMzU2MDogQWRkIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoKSwgUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUoKQorICBhbmQgUHlVbmljb2RlX0VuY29kZUxvY2FsZSgpIGZ1bmN0aW9ucyB0byB0aGUgQyBBUEkgdG8gZGVjb2RlL2VuY29kZSBmcm9tL3RvCisgIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZy4KKworLSBBZGQgaW50ZXJuYWwgQVBJIGZvciBzdGF0aWMgc3RyaW5ncyAoX1B5X2lkZW50aWZpZXIgZXQgYWwuKS4KKwogLSBJc3N1ZSAjMTMwNjM6IHRoZSBXaW5kb3dzIGVycm9yIEVSUk9SX05PX0RBVEEgKG51bWJlcmVkIDIzMiBhbmQgZGVzY3JpYmVkCiAgIGFzICJUaGUgcGlwZSBpcyBiZWluZyBjbG9zZWQiKSBpcyBub3cgbWFwcGVkIHRvIFBPU0lYIGVycm5vIEVQSVBFCiAgIChwcmV2aW91c2x5IEVJTlZBTCkuCkBAIC04MTgsNiArMjE0MCwxNiBAQAogLSBJc3N1ZSAjMTI5MTE6IEZpeCBtZW1vcnkgY29uc3VtcHRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUgcmVwcigpIG9mIGh1Z2UKICAgdHVwbGVzIG9yIGxpc3RzLgogCistIFBFUCAzOTM6IGZsZXhpYmxlIHN0cmluZyByZXByZXNlbnRhdGlvbi4gVGhhbmtzIHRvIFRvcnN0ZW4gQmVja2VyIGZvciB0aGUKKyAgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYW5kIFZpY3RvciBTdGlubmVyIGZvciB2YXJpb3VzIGJ1ZyBmaXhlcy4KKworLSBJc3N1ZSAjMTQwODE6IFRoZSAnc2VwJyBhbmQgJ21heHNwbGl0JyBwYXJhbWV0ZXIgdG8gc3RyLnNwbGl0LCBieXRlcy5zcGxpdCwKKyAgYW5kIGJ5dGVhcnJheS5zcGxpdCBtYXkgbm93IGJlIHBhc3NlZCBhcyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMTMwMTI6IFRoZSAna2VlcGVuZHMnIHBhcmFtZXRlciB0byBzdHIuc3BsaXRsaW5lcyBtYXkgbm93IGJlIHBhc3NlZAorICBhcyBhIGtleXdvcmQgYXJndW1lbnQ6ICAibXlfc3RyaW5nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSkiLiAgVGhlIHNhbWUKKyAgY2hhbmdlIGFsc28gYXBwbGllcyB0byBieXRlcy5zcGxpdGxpbmVzIGFuZCBieXRlYXJyYXkuc3BsaXRsaW5lcy4KKwogLSBJc3N1ZSAjNzczMjogRG9uJ3Qgb3BlbiBhIGRpcmVjdG9yeSBhcyBhIGZpbGUgYW55bW9yZSB3aGlsZSBpbXBvcnRpbmcgYQogICBtb2R1bGUuIElnbm9yZSB0aGUgZGlyZWNvdHJ5IGlmIGl0cyBuYW1lIG1hdGNocyB0aGUgbW9kdWxlIG5hbWUgKGUuZy4KICAgIl9faW5pdF9fLnB5IikgYW5kIHJhaXNlIGEgSW1wb3J0RXJyb3IgaW5zdGVhZC4KQEAgLTgyOSw2ICsyMTYxLDkgQEAKICAgbGlzdF9yZXBlYXQgKGxpc3RvYmplY3QuYykgYW5kIGlzbGljZV9uZXh0IChpdGVydG9vbHNtb2R1bGUuYykuICBUaGVzZSBidWdzCiAgIGNhdXNlZCB0ZXN0IGZhaWx1cmVzIHdpdGggcmVjZW50IHZlcnNpb25zIG9mIENsYW5nLgogCistIElzc3VlICMxMjkwNDogb3MudXRpbWUsIG9zLmZ1dGltZXMsIG9zLmx1dGltZXMsIGFuZCBvcy5mdXRpbWVzYXQgbm93IHdyaXRlCisgIGF0aW1lIGFuZCBtdGltZSB3aXRoIG5hbm9zZWNvbmQgcHJlY2lzaW9uIG9uIG1vZGVybiBQT1NJWCBwbGF0Zm9ybXMuCisKIC0gSXNzdWUgIzEyODAyOiB0aGUgV2luZG93cyBlcnJvciBFUlJPUl9ESVJFQ1RPUlkgKG51bWJlcmVkIDI2NykgaXMgbm93CiAgIG1hcHBlZCB0byBQT1NJWCBlcnJubyBFTk9URElSIChwcmV2aW91c2x5IEVJTlZBTCkuCiAKQEAgLTgzOCwzNyArMjE3MywzMjkgQEAKIC0gSXNzdWUgIzEyNzkxOiBCcmVhayByZWZlcmVuY2UgY3ljbGVzIGVhcmx5IHdoZW4gYSBnZW5lcmF0b3IgZXhpdHMgd2l0aAogICBhbiBleGNlcHRpb24uCiAKKy0gSXNzdWUgIzEyNzczOiBNYWtlIF9fZG9jX18gbXV0YWJsZSBvbiB1c2VyLWRlZmluZWQgY2xhc3Nlcy4KKworLSBJc3N1ZSAjMTI3NjY6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGNyZWF0aW5nIGEgY2xhc3Mgd2l0aCBhIGNsYXNzIHZhcmlhYmxlCisgIHRoYXQgY29uZmxpY3RzIHdpdGggYSBuYW1lIGluIF9fc2xvdHNfXy4KKwogLSBJc3N1ZSAjMTIyNjY6IEZpeCBzdHIuY2FwaXRhbGl6ZSgpIHRvIGNvcnJlY3RseSB1cHBlcmNhc2UvbG93ZXJjYXNlCiAgIHRpdGxlY2FzZWQgYW5kIGNhc2VkIG5vbi1sZXR0ZXIgY2hhcmFjdGVycy4KIAorLSBJc3N1ZSAjMTI3MzI6IEluIG5hcnJvdyB1bmljb2RlIGJ1aWxkcywgYWxsb3cgVW5pY29kZSBpZGVudGlmaWVycyB3aGljaCBmYWxsCisgIG91dHNpZGUgdGhlIEJNUC4KKworLSBJc3N1ZSAjMTI1NzU6IFZhbGlkYXRlIHVzZXItZ2VuZXJhdGVkIEFTVCBiZWZvcmUgaXQgaXMgY29tcGlsZWQuCisKKy0gTWFrZSB0eXBlKE5vbmUpLCB0eXBlKEVsbGlwc2lzKSwgYW5kIHR5cGUoTm90SW1wbGVtZW50ZWQpIGNhbGxhYmxlLiBUaGV5CisgIHJldHVybiB0aGUgcmVzcGVjdGl2ZSBzaW5nbGV0b24gaW5zdGFuY2VzLgorCistIEZvcmJpZCBzdW1taW5nIGJ5dGVzIHdpdGggc3VtKCkuCisKKy0gVmVyaWZ5IHRoZSB0eXBlcyBvZiBBU1Qgc3RyaW5ncyBhbmQgaWRlbnRpZmllcnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIgYmVmb3JlCisgIGNvbXBpbGluZyB0aGVtLgorCistIElzc3VlICMxMjY0NzogVGhlIE5vbmUgb2JqZWN0IG5vdyBoYXMgYSBfX2Jvb2xfXygpIG1ldGhvZCB0aGF0IHJldHVybnMgRmFsc2UuCisgIEZvcm1lcmx5LCBib29sKE5vbmUpIHJldHVybmVkIEZhbHNlIG9ubHkgYmVjYXVzZSBvZiBzcGVjaWFsIGNhc2UgbG9naWMKKyAgaW4gUHlPYmplY3RfSXNUcnVlKCkuCisKKy0gSXNzdWUgIzEyNTc5OiBzdHIuZm9ybWF0X21hcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHVzZWQgb24gYQorICBmb3JtYXQgc3RyaW5nIHRoYXQgY29udGFpbnMgcG9zaXRpb25hbCBmaWVsZHMuIEluaXRpYWwgcGF0Y2ggYnkKKyAgSnVsaWFuIEJlcm1hbi4KKworLSBJc3N1ZSAjMTAyNzE6IEFsbG93IHdhcm5pbmdzLnNob3d3YXJuaW5nKCkgYmUgYW55IGNhbGxhYmxlLgorCistIElzc3VlICMxMTYyNzogRml4IHNlZ2ZhdWx0IHdoZW4gX19uZXdfXyBvbiBhIGV4Y2VwdGlvbiByZXR1cm5zIGEKKyAgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KKworLSBJc3N1ZSAjMTIxNDk6IFVwZGF0ZSB0aGUgbWV0aG9kIGNhY2hlIGFmdGVyIGEgdHlwZSdzIGRpY3Rpb25hcnkgZ2V0cworICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCisgIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKKyAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKKyAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgorCistIElzc3VlICM5NjExLCAjOTAxNTogRmlsZUlPLnJlYWQoKSBjbGFtcHMgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzk2NDI6IFVuaWZvcm1pemUgdGhlIHRlc3RzIG9uIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIG1iY3MgY29kZWMsIGFkZAorICBhIG5ldyBIQVZFX01CQ1MgZGVmaW5lLgorCistIElzc3VlICM5NjQyOiBGaXggZmlsZXN5c3RlbSBlbmNvZGluZyBpbml0aWFsaXphdGlvbjogdXNlIHRoZSBBTlNJIGNvZGUgcGFnZQorICBvbiBXaW5kb3dzIGlmIHRoZSBtYmNzIGNvZGVjIGlzIG5vdCBhdmFpbGFibGUsIGFuZCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZgorICB3ZSBjYW5ub3QgZ2V0IHRoZSBsb2NhbGUgZW5jb2RpbmcgKGlmIG5sX2xhbmdpbmZvKENPREVTRVQpIGlzIG5vdCBhdmFpbGFibGUpCisgIGluc3RlYWQgb2YgdXNpbmcgVVRGLTguCisKKy0gV2hlbiBhIGdlbmVyYXRvciB5aWVsZHMsIGRvIG5vdCByZXRhaW4gdGhlIGNhbGxlcidzIGV4Y2VwdGlvbiBzdGF0ZSBvbiB0aGUKKyAgZ2VuZXJhdG9yLgorCistIElzc3VlICMxMjQ3NTogUHJldmVudCBnZW5lcmF0b3JzIGZyb20gbGVha2luZyB0aGVpciBleGNlcHRpb24gc3RhdGUgaW50byB0aGUKKyAgY2FsbGVyJ3MgZnJhbWUgYXMgdGhleSByZXR1cm4gZm9yIHRoZSBsYXN0IHRpbWUuCisKKy0gSXNzdWUgIzEyMjkxOiBZb3UgY2FuIG5vdyBsb2FkIG11bHRpcGxlIG1hcnNoYWxsZWQgb2JqZWN0cyBmcm9tIGEgc3RyZWFtLAorICB3aXRoIG90aGVyIGRhdGEgaW50ZXJsZWF2ZWQgYmV0d2VlbiBtYXJzaGFsbGVkIG9iamVjdHMuCisKKy0gSXNzdWUgIzEyMzU2OiBXaGVuIHJlcXVpcmVkIHBvc2l0aW9uYWwgb3Iga2V5d29yZC1vbmx5IGFyZ3VtZW50cyBhcmUgbm90CisgIGdpdmVuLCBwcm9kdWNlIGEgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZSB3aGljaCBpbmNsdWRlcyB0aGUgbmFtZShzKSBvZiB0aGUKKyAgbWlzc2luZyBhcmd1bWVudHMuCisKKy0gSXNzdWUgIzEyMzcwOiBGaXggc3VwZXIgd2l0aCBubyBhcmd1bWVudHMgd2hlbiBfX2NsYXNzX18gaXMgb3ZlcnJpZGVuIGluIHRoZQorICBjbGFzcyBib2R5LgorCistIElzc3VlICMxMjA4NDogb3Muc3RhdCBvbiBXaW5kb3dzIG5vdyB3b3JrcyBwcm9wZXJseSB3aXRoIHJlbGF0aXZlIHN5bWJvbGljCisgIGxpbmtzIHdoZW4gY2FsbGVkIGZyb20gYW55IGRpcmVjdG9yeS4KKworLSBMb29zZW4gdHlwZSByZXN0cmljdGlvbnMgb24gdGhlIF9fZGlyX18gbWV0aG9kLiBfX2Rpcl9fIGNhbiBub3cgcmV0dXJuIGFueQorICBzZXF1ZW5jZSwgd2hpY2ggd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBsaXN0IGFuZCBzb3J0ZWQgYnkgZGlyKCkuCisKKy0gSXNzdWUgIzEyMjY1OiBNYWtlIGVycm9yIG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IHBhc3NpbmcgYW4gaW52YWxpZCBzZXQgb2YKKyAgYXJndW1lbnRzIHRvIGEgZnVuY3Rpb24gbW9yZSBpbmZvcm1hdGl2ZS4KKworLSBJc3N1ZSAjMTIyMjU6IFN0aWxsIGFsbG93IFB5dGhvbiB0byBidWlsZCBpZiBQeXRob24gaXMgbm90IGluIGl0cyBoZyByZXBvIG9yCisgIG1lcmN1cmlhbCBpcyBub3QgaW5zdGFsbGVkLgorCistIElzc3VlICMxMTk1OiBteV9mZ2V0cygpIG5vdyBhbHdheXMgY2xlYXJzIGVycm9ycyBiZWZvcmUgY2FsbGluZyBmZ2V0cygpLiBGaXgKKyAgdGhlIGZvbGxvd2luZyBjYXNlOiBzeXMuc3RkaW4ucmVhZCgpIHN0b3BwZWQgd2l0aCBDVFJMK2QgKGVuZCBvZiBmaWxlKSwKKyAgcmF3X2lucHV0KCkgaW50ZXJydXB0ZWQgYnkgQ1RSTCtjLgorCistIElzc3VlICMxMjIxNjogQWxsb3cgdW5leHBlY3RlZCBFT0YgZXJyb3JzIHRvIGhhcHBlbiBvbiBhbnkgbGluZSBvZiB0aGUgZmlsZS4KKworLSBJc3N1ZSAjMTIxOTk6IFRoZSBUcnlFeGNlcHQgYW5kIFRyeUZpbmFsbHkgYW5kIEFTVCBub2RlcyBoYXZlIGJlZW4gdW5pZmllZAorICBpbnRvIGEgVHJ5IG5vZGUuCisKKy0gSXNzdWUgIzk2NzA6IEluY3JlYXNlIHRoZSBkZWZhdWx0IHN0YWNrIHNpemUgZm9yIHNlY29uZGFyeSB0aHJlYWRzIG9uCisgIE1hYyBPUyBYIGFuZCBGcmVlQlNEIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZiBhIGNyYXNoIGluc3RlYWQgb2YgYQorICAibWF4aW11bSByZWN1cnNpb24gZGVwdGgiIFJ1bnRpbWVFcnJvciBleGNlcHRpb24uCisgIChwYXRjaCBieSBSb25hbGQgT3Vzc29yZW4pCisKKy0gSXNzdWUgIzEyMTA2OiBUaGUgdXNlIG9mIHRoZSBtdWx0aXBsZS13aXRoIHNob3J0aGFuZCBzeW50YXggaXMgbm93IHJlZmxlY3RlZAorICBpbiB0aGUgQVNULgorCistIElzc3VlICMxMjE5MDogVHJ5IHRvIHVzZSB0aGUgc2FtZSBmaWxlbmFtZSBvYmplY3Qgd2hlbiBjb21waWxpbmcgdW5tYXJzaGFsbGluZworICBhIGNvZGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBmaWxlLgorCistIElzc3VlICMxMjE2NjogTW92ZSBpbXBsZW1lbnRhdGlvbnMgb2YgZGlyKCkgc3BlY2lhbGl6ZWQgZm9yIHZhcmlvdXMgdHlwZXMgaW50bworICB0aGUgX19kaXJfXygpIG1ldGhvZHMgb2YgdGhvc2UgdHlwZXMuCisKKy0gSXNzdWUgIzU3MTU6IEluIHNvY2tldHNlcnZlciwgY2xvc2UgdGhlIHNlcnZlciBzb2NrZXQgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCisKKy0gQ29ycmVjdCBsb29rdXAgb2YgX19kaXJfXyBvbiBvYmplY3RzLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgY2F1c2VzIGVycm9ycworICBiZXNpZGVzIEF0dHJpYnV0ZUVycm9yIGZvdW5kIG9uIGxvb2t1cCB0byBiZSBwcm9wYWdhdGVkLgorCistIElzc3VlICMxMjA2MDogVXNlIHNpZ19hdG9taWNfdCB0eXBlIGFuZCB2b2xhdGlsZSBrZXl3b3JkIGluIHRoZSBzaWduYWwKKyAgbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTc0NjY1NjogQWRkZWQgdGhlIGlmX25hbWVpbmRleCwgaWZfaW5kZXh0b25hbWUsIGlmX25hbWV0b2luZGV4CisgIG1ldGhvZHMgdG8gdGhlIHNvY2tldCBtb2R1bGUuCisKKy0gSXNzdWUgIzEyMDQ0OiBGaXhlZCBzdWJwcm9jZXNzLlBvcGVuIHdoZW4gdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlciB0bworICB3YWl0IGZvciB0aGUgcHJvY2VzcyB0byBlbmQgd2hlbiBleGl0aW5nIHRoZSBjb250ZXh0IHRvIGF2b2lkIHVuaW50ZW50aW9uYWxseQorICBsZWF2aW5nIHpvbWJpZSBwcm9jZXNzZXMgYXJvdW5kLgorCistIElzc3VlICMxMTk1OiBGaXggaW5wdXQoKSBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBDVFJMK2QgYW5kIHRoZW4gQ1RSTCtjLAorICBjbGVhciB0aGUgZW5kLW9mLWZpbGUgaW5kaWNhdG9yIGFmdGVyIENUUkwrZC4KKworLSBJc3N1ZSAjMTg1NjogQXZvaWQgY3Jhc2hlcyBhbmQgbG9ja3VwcyB3aGVuIGRhZW1vbiB0aHJlYWRzIHJ1biB3aGlsZSB0aGUKKyAgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bjsgaW5zdGVhZCwgdGhlc2UgdGhyZWFkcyBhcmUgbm93IGtpbGxlZCB3aGVuCisgIHRoZXkgdHJ5IHRvIHRha2UgdGhlIEdJTC4KKworLSBJc3N1ZSAjOTc1NjogV2hlbiBjYWxsaW5nIGEgbWV0aG9kIGRlc2NyaXB0b3Igb3IgYSBzbG90IHdyYXBwZXIgZGVzY3JpcHRvciwKKyAgdGhlIGNoZWNrIG9mIHRoZSBvYmplY3QgdHlwZSBkb2Vzbid0IHJlYWQgdGhlIF9fY2xhc3NfXyBhdHRyaWJ1dGUgYW55bW9yZS4KKyAgRml4IGEgY3Jhc2ggaWYgYSBjbGFzcyBvdmVycmlkZSBpdHMgX19jbGFzc19fIGF0dHJpYnV0ZSAoZS5nLiBhIHByb3h5IG9mIHRoZQorICBzdHIgdHlwZSkuIFBhdGNoIHdyaXR0ZW4gYnkgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICMxMDUxNzogQWZ0ZXIgZm9yaygpLCByZWluaXRpYWxpemUgdGhlIFRMUyB1c2VkIGJ5IHRoZSBQeUdJTFN0YXRlXyoKKyAgQVBJcywgdG8gYXZvaWQgYSBjcmFzaCB3aXRoIHRoZSBwdGhyZWFkIGltcGxlbWVudGF0aW9uIGluIFJIRUwgNS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLSBJc3N1ZSAjMTA5MTQ6IEluaXRpYWxpemUgY29ycmVjdGx5IHRoZSBmaWxlc3lzdGVtIGNvZGVjIHdoZW4gY3JlYXRpbmcgYSBuZXcKKyAgc3ViaW50ZXJwcmV0ZXIgdG8gZml4IGEgYm9vdHN0cmFwIGlzc3VlIHdpdGggY29kZWNzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgYXMKKyAgdGhlIElTTy04ODU5LTE1IGNvZGVjLgorCistIElzc3VlICMxMTkxODogT1MvMiBhbmQgVk1TIGFyZSBubyBtb3JlIHN1cHBvcnRlZCBiZWNhdXNlIG9mIHRoZSBsYWNrIG9mCisgIG1haW50YWluZXIuCisKKy0gSXNzdWUgIzY3ODA6IGZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZQorICBhY2NlcHRlZCB0b28uCisKKy0gSXNzdWUgIzUwNTc6IGZpeCBhIGJ1ZyBpbiB0aGUgcGVlcGhvbGVyIHRoYXQgbGVkIHRvIG5vbi1wb3J0YWJsZSBweWMgZmlsZXMKKyAgYmV0d2VlbiBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QCisgIGNoYXJzIChlLmcuICJcVTAwMDEyMzQ1IlswXSkuCisKKy0gSXNzdWUgIzExODQ1OiBGaXggdHlwbyBpbiByYW5nZW9iamVjdC5jIHRoYXQgY2F1c2VkIGEgY3Jhc2ggaW4KKyAgY29tcHV0ZV9zbGljZV9pbmRpY2VzLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgorCistIElzc3VlICM1NjczOiBBZGRlZCBhIGB0aW1lb3V0YCBrZXl3b3JkIGFyZ3VtZW50IHRvIHN1YnByb2Nlc3MuUG9wZW4ud2FpdCwKKyAgc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZWQsIHN1YnByb2Nlc3MuY2FsbCwgc3VicHJvY2Vzcy5jaGVja19jYWxsLCBhbmQKKyAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQuICBJZiB0aGUgYmxvY2tpbmcgb3BlcmF0aW9uIHRha2VzIG1vcmUgdGhhbiBgdGltZW91dGAKKyAgc2Vjb25kcywgdGhlIGBzdWJwcm9jZXNzLlRpbWVvdXRFeHBpcmVkYCBleGNlcHRpb24gaXMgcmFpc2VkLgorCistIElzc3VlICMxMTY1MDogUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAorICAoRUlOVFIpLCBmb3IgZXhhbXBsZSBpZiB0aGUgcHJvZ3JhbSBpcyBzdG9wcGVkIHdpdGggQ1RSTCt6IG9uIE1hYyBPUyBYLiBQYXRjaAorICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgorCistIElzc3VlICM5MzE5OiBJbmNsdWRlIHRoZSBmaWxlbmFtZSBpbiAiTm9uLVVURjggY29kZSAuLi4iIHN5bnRheCBlcnJvci4KKworLSBJc3N1ZSAjMTA3ODU6IFN0b3JlIHRoZSBmaWxlbmFtZSBhcyBVbmljb2RlIGluIHRoZSBQeXRob24gcGFyc2VyLgorCistIElzc3VlICMxMTYxOTogX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKCkgZG9lc24ndCBlbmNvZGUgdGhlIHBhdGggdG8gYnl0ZXMKKyAgb24gV2luZG93cy4KKworLSBJc3N1ZSAjMTA5OTg6IFJlbW92ZSBtZW50aW9ucyBvZiAtUSwgc3lzLmZsYWdzLmRpdmlzaW9uX3dhcm5pbmcgYW5kCisgIFB5X0RpdmlzaW9uV2FybmluZ0ZsYWcgbGVmdCBvdmVyIGZyb20gUHl0aG9uIDIuCisKKy0gSXNzdWUgIzExMjQ0OiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgcGVlcGhvbGVyIGNoZWNrIHRoYXQgd2FzIHByZXZlbnRpbmcKKyAgbmVnYXRpdmUgemVyb3MgZnJvbSBiZWluZyBjb25zdGFudC1mb2xkZWQgcHJvcGVybHkuCisKKy0gSXNzdWUgIzExMzk1OiBpby5GaWxlSU8oKS53cml0ZSgpIGNsYW1wcyB0aGUgZGF0YSBsZW5ndGggdG8gMzIsNzY3IGJ5dGVzIG9uCisgIFdpbmRvd3MgaWYgdGhlIGZpbGUgaXMgYSBUVFkgdG8gd29ya2Fyb3VuZCBhIFdpbmRvd3MgYnVnLiBUaGUgV2luZG93cyBjb25zb2xlCisgIHJldHVybnMgYW4gZXJyb3IgKDEyOiBub3QgZW5vdWdoIHNwYWNlIGVycm9yKSBvbiB3cml0aW5nIGludG8gc3Rkb3V0IGlmCisgIHN0ZG91dCBtb2RlIGlzIGJpbmFyeSBhbmQgdGhlIGxlbmd0aCBpcyBncmVhdGVyIHRoYW4gNjYsMDAwIGJ5dGVzIChvciBsZXNzLAorICBkZXBlbmRpbmcgb24gaGVhcCB1c2FnZSkuCisKKy0gSXNzdWUgIzExMzIwOiBmaXggYm9ndXMgbWVtb3J5IG1hbmFnZW1lbnQgaW4gTW9kdWxlcy9nZXRwYXRoLmMsIGxlYWRpbmcgdG8KKyAgYSBwb3NzaWJsZSBjcmFzaCB3aGVuIGNhbGxpbmcgUHlfU2V0UGF0aCgpLgorCistIElzc3VlICMxMTQzMjogQSBidWcgd2FzIGludHJvZHVjZWQgaW4gc3VicHJvY2Vzcy5Qb3BlbiBvbiBwb3NpeCBzeXN0ZW1zIHdpdGgKKyAgMy4yLjAgd2hlcmUgdGhlIHN0ZG91dCBvciBzdGRlcnIgZmlsZSBkZXNjcmlwdG9yIGJlaW5nIHRoZSBzYW1lIGFzIHRoZSBzdGRpbgorICBmaWxlIGRlc2NyaXB0b3Igd291bGQgcmFpc2UgYW4gZXhjZXB0aW9uLiB3ZWJicm93c2VyLm9wZW4gd291bGQgZmFpbC4gZml4ZWQuCisKKy0gSXNzdWUgIzk4NTY6IENoYW5nZSBvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcKKyAgdG8gYmUgYSBEZXByZWNhdGlvbldhcm5pbmcuIEluIDMuMiBpdCB3YXMgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLgorICBJbiAzLjQgaXQgd2lsbCBiZSBhIFR5cGVFcnJvci4KKworLSBJc3N1ZSAjMTEyNDQ6IFRoZSBwZWVwaG9sZSBvcHRpbWl6ZXIgaXMgbm93IGFibGUgdG8gY29uc3RhbnQtZm9sZAorICBhcmJpdHJhcmlseSBjb21wbGV4IGV4cHJlc3Npb25zLiAgVGhpcyBhbHNvIGZpeGVzIGEgMy4yIHJlZ3Jlc3Npb24gd2hlcmUKKyAgb3BlcmF0aW9ucyBpbnZvbHZpbmcgbmVnYXRpdmUgbnVtYmVycyB3ZXJlIG5vdCBjb25zdGFudC1mb2xkZWQuCisKKy0gSXNzdWUgIzExNDUwOiBEb24ndCB0cnVuY2F0ZSBoZyB2ZXJzaW9uIGluZm8gaW4gUHlfR2V0QnVpbGRJbmZvKCkgd2hlbgorICB0aGVyZSBhcmUgbWFueSB0YWdzIChlLmcuIHdoZW4gdXNpbmcgbXEpLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTMzNTogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBsaXN0LnNvcnQgd2hlbiB0aGUga2V5IGZ1bmN0aW9uCisgIHRocm93cyBhbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzg5MjM6IFdoZW4gYSBzdHJpbmcgaXMgZW5jb2RlZCB0byBVVEYtOCBpbiBzdHJpY3QgbW9kZSwgdGhlIHJlc3VsdCBpcworICBjYWNoZWQgaW50byB0aGUgb2JqZWN0LiBFeGFtcGxlczogc3RyLmVuY29kZSgpLCBzdHIuZW5jb2RlKCd1dGYtOCcpLAorICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKCkgYW5kIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodW5pY29kZSwgInV0Zi04IiwKKyAgTlVMTCkuCisKKy0gSXNzdWUgIzEwODMxOiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIHN1cHBvcnRzICVsaSwgJWxsaSBhbmQgJXppIGZvcm1hdHMuCisKKy0gSXNzdWUgIzEwODI5OiBSZWZhY3RvciBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpLCB1c2UgdGhlIHNhbWUgZnVuY3Rpb24gdG8gcGFyc2UKKyAgdGhlIGZvcm1hdCBzdHJpbmcgaW4gdGhlIDMgc3RlcHMsIGZpeCBjcmFzaHMgb24gaW52YWxpZCBmb3JtYXQgc3RyaW5ncy4KKworLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgorCistIElzc3VlICMxMTI0NjogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlViIpIHRvIGRlY29kZSB0aGUgYnl0ZSBzdHJpbmcgZnJvbQorICBVVEYtOCAod2l0aCByZXBsYWNlIGVycm9yIGhhbmRsZXIpIGluc3RlYWQgb2YgSVNPLTg4NTktMSAoaW4gc3RyaWN0IG1vZGUpLgorICBQYXRjaCB3cml0dGVuIGJ5IFJheSBBbGxlbi4KKworLSBJc3N1ZSAjMTEyODY6IFJhaXNlIGEgVmFsdWVFcnJvciBmcm9tIGNhbGxpbmcgUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIgd2l0aAorICBhIGJ1ZmZlciBzdHJ1Y3QgaGF2aW5nIGEgTlVMTCBkYXRhIHBvaW50ZXIuCisKKy0gSXNzdWUgIzExMjcyOiBPbiBXaW5kb3dzLCBpbnB1dCgpIHN0cmlwcyAnXHInIChhbmQgbm90IG9ubHkgJ1xuJyksIGFuZAorICBzeXMuc3RkaW4gdXNlcyB1bml2ZXJzYWwgbmV3bGluZSAocmVwbGFjZSAnXHJcbicgYnkgJ1xuJykuCisKKy0gSXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBub3cgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguCisgIFBhdGNoIGJ5IFRvcnN0ZW4gQmVja2VyLgorCistIElzc3VlICMxMDgzMDogRml4IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigiJWMiKSBmb3Igbm9uLUJNUCBjaGFyYWN0ZXJzIG9uCisgIG5hcnJvdyBidWlsZC4KKworLSBJc3N1ZSAjMTExNjg6IFJlbW92ZSBmaWxlbmFtZSBkZWJ1ZyB2YXJpYWJsZSBmcm9tIFB5RXZhbF9FdmFsRnJhbWVFeCgpLgorICBJdCBlbmNvZGVkIHRoZSBVbmljb2RlIGZpbGVuYW1lIHRvIFVURi04LCBidXQgdGhlIGVuY29kaW5nIGZhaWxzIG9uCisgIHVuZGVjb2RhYmxlIGZpbGVuYW1lIChvbiBzdXJyb2dhdGUgY2hhcmFjdGVycykgd2hpY2ggcmFpc2VzIGFuIHVuZXhwZWN0ZWQKKyAgVW5pY29kZUVuY29kZUVycm9yIG9uIHJlY3Vyc2lvbiBsaW1pdC4KKworLSBJc3N1ZSAjMTExODc6IFJlbW92ZSBib290c3RyYXAgY29kZSAodXNlIEFTQ0lJKSBvZgorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCksIGl0IHdhcyByZXBsYWNlZCBieSBhIGJldHRlciBmYWxsYmFjayAodXNlIHRoZQorICBsb2NhbGUgZW5jb2RpbmcpIGluIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoKS4KKworLSBDaGVjayBmb3IgTlVMTCByZXN1bHQgaW4gUHlUeXBlX0Zyb21TcGVjLgorCistIElzc3VlICMxMDUxNjogTmV3IGNvcHkoKSBhbmQgY2xlYXIoKSBtZXRob2RzIGZvciBsaXN0cyBhbmQgYnl0ZWFycmF5cy4KKworLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCisgIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCisKKy0gSXNzdWUgIzEyMzgwOiBUaGUgcmp1c3QsIGxqdXN0IGFuZCBjZW50ZXIgbWV0aG9kcyBvZiBieXRlcyBhbmQgYnl0ZWFycmF5CisgIG5vdyBhY2NlcHQgYSBieXRlYXJyYXkgYXJndW1lbnQuCisKIExpYnJhcnkKIC0tLS0tLS0KIAorLSBJc3N1ZSAjMTQxOTU6IEFuIGlzc3VlIHRoYXQgY2F1c2VkIHdlYWtyZWYuV2Vha1NldCBpbnN0YW5jZXMgdG8gaW5jb3JyZWN0bHkKKyAgcmV0dXJuIFRydWUgZm9yIGEgV2Vha1NldCBpbnN0YW5jZSAnYScgaW4gYm90aCAnYSA8IGEnIGFuZCAnYSA+IGEnIGhhcyBiZWVuCisgIGZpeGVkLgorCistIElzc3VlICMxNDE2NjogUGlja2xlciBvYmplY3RzIG5vdyBoYXZlIGFuIG9wdGlvbmFsIGBgZGlzcGF0Y2hfdGFibGVgYAorICBhdHRyaWJ1dGUgd2hpY2ggYWxsb3dzIHRvIHNldCBjdXN0b20gcGVyLXBpY2tsZXIgcmVkdWN0aW9uIGZ1bmN0aW9ucy4KKyAgUGF0Y2ggYnkgc2J0LgorCistIElzc3VlICMxNDE3NzogbWFyc2hhbC5sb2FkcygpIG5vdyByYWlzZXMgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gdW5pY29kZQorICBzdHJpbmcuICBQYXRjaCBieSBHdWlsaGVybWUgR29uw6dhbHZlcy4KKworLSBJc3N1ZSAjMTM1NTA6IFJlbW92ZSB0aGUgZGVidWcgbWFjaGluZXJ5IGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGU6IHJlbW92ZQorICB2ZXJib3NlIGFyZ3VtZW50cyBmcm9tIGFsbCB0aHJlYWRpbmcgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLgorCistIElzc3VlICMxNDE1OTogRml4IHRoZSBsZW4oKSBvZiB3ZWFrIGNvbnRhaW5lcnMgKFdlYWtTZXQsIFdlYWtLZXlEaWN0aW9uYXJ5LAorICBXZWFrVmFsdWVEaWN0aW9uYXJ5KSB0byByZXR1cm4gYSBiZXR0ZXIgYXBwcm94aW1hdGlvbiB3aGVuIHNvbWUgb2JqZWN0cworICBhcmUgZGVhZCBvciBkeWluZy4gIE1vcmVvdmVyLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm93IE8oMSkgcmF0aGVyIHRoYW4KKyAgTyhuKS4KKworLSBJc3N1ZSAjMTMxMjU6IFNpbGVuY2Ugc3B1cmlvdXMgdGVzdF9saWIydG8zIG91dHB1dCB3aGVuIGluIG5vbi12ZXJib3NlIG1vZGUuCisgIFBhdGNoIGJ5IE1pa2hhaWwgTm92aWtvdi4KKworLSBJc3N1ZSAjMTE4NDE6IEZpeCBjb21wYXJpc29uIGJ1ZyB3aXRoICdyYycgdmVyc2lvbnMgaW4gcGFja2FnaW5nLnZlcnNpb24uCisgIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzEzNDQ3OiBBZGQgYSB0ZXN0IGZpbGUgdG8gaG9zdCByZWdyZXNzaW9uIHRlc3RzIGZvciBidWdzIGluIHRoZQorICBzY3JpcHRzIGZvdW5kIGluIHRoZSBUb29scyBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzY4ODQ6IEZpeCBsb25nLXN0YW5kaW5nIGJ1Z3Mgd2l0aCBNQU5JRkVTVC5pbiBwYXJzaW5nIGluIGRpc3R1dGlscworICBvbiBXaW5kb3dzLiAgQWxzbyBmaXhlZCBpbiBwYWNrYWdpbmcuCisKKy0gSXNzdWUgIzgwMzM6IHNxbGl0ZTM6IEZpeCA2NC1iaXQgaW50ZWdlciBoYW5kbGluZyBpbiB1c2VyIGZ1bmN0aW9ucworICBvbiAzMi1iaXQgYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KKwogLSBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBzbGFzaGVzIGluIHRoZSBzdGFydCB0YWcuCiAKKy0gSXNzdWUgIzEzNjQxOiBEZWNvZGluZyBmdW5jdGlvbnMgaW4gdGhlIGJhc2U2NCBtb2R1bGUgbm93IGFjY2VwdCBBU0NJSS1vbmx5CisgIHVuaWNvZGUgc3RyaW5ncy4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCisKKy0gSXNzdWUgIzE0MDQzOiBTcGVlZCB1cCBpbXBvcnRsaWIncyBfRmlsZUZpbmRlciBieSBhdCBsZWFzdCA4eCwgYW5kIGFkZCBhCisgIG5ldyBpbXBvcnRsaWIuaW52YWxpZGF0ZV9jYWNoZXMoKSBmdW5jdGlvbi4KKwogLSBJc3N1ZSAjMTQwMDE6IENWRS0yMDEyLTA4NDU6IHhtbHJwYzogRml4IGFuIGVuZGxlc3MgbG9vcCBpbgogICBTaW1wbGVYTUxSUENTZXJ2ZXIgdXBvbiBtYWxmb3JtZWQgUE9TVCByZXF1ZXN0LgogCistIElzc3VlICMxMzk2MTogTW92ZSBpbXBvcnRsaWIgb3ZlciB0byB1c2luZyBvcy5yZXBsYWNlKCkgZm9yIGF0b21pYyByZW5hbWluZy4KKworLSBEbyBhd2F5IHdpdGggYW1iaWd1b3VzIGxldmVsIHZhbHVlcyAoYXMgc3VnZ2VzdGVkIGJ5IFBFUCAzMjgpIGluCisgIGltcG9ydGxpYi5fX2ltcG9ydF9fKCkgYnkgcmFpc2luZyBWYWx1ZUVycm9yIHdoZW4gbGV2ZWwgPCAwLgorCiAtIElzc3VlICMyNDg5OiBwdHkuc3Bhd24gY291bGQgY29uc3VtZSAxMDAlIGNwdSB3aGVuIGl0IGVuY291bnRlcmVkIGFuIEVPRi4KIAogLSBJc3N1ZSAjMTMwMTQ6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgogCistIElzc3VlICMxMzc3NzogQWRkIFBGX1NZU1RFTSBzb2NrZXRzIG9uIE9TIFguCisgIFBhdGNoIGJ5IE1pY2hhZWwgR29kZXJiYXVlci4KKwogLSBJc3N1ZSAjMTMwMTU6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIGRlZmF1bHRkaWN0Ll9fcmVwcl9fLgogICBQYXRjaCBieSBTdW1hbiBTYWhhLgogCi0tIElzc3VlICMxMzI2MTEzOiBkaXN0dXRpbHMnIGJ1aWxkX2V4dCBjb21tYW5kIC0tbGlicmFyaWVzIG9wdGlvbiBub3cKLSAgY29ycmVjdGx5IHBhcnNlcyBtdWx0aXBsZSB2YWx1ZXMgc2VwYXJhdGVkIGJ5IHdoaXRlc3BhY2Ugb3IgY29tbWFzLgorLSBJc3N1ZSAjMTMyNjExMzogZGlzdHV0aWxzJyBhbmQgcGFja2FnaW5nJ3MgYnVpbGRfZXh0IGNvbW1hbmRzIG9wdGlvbiBub3cKKyAgY29ycmVjdGx5IHBhcnNlcyBtdWx0aXBsZSB2YWx1ZXMgKHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIG9yIGNvbW1hcykgZ2l2ZW4KKyAgdG8gdGhlaXIgLS1saWJyYXJpZXMgb3B0aW9uLgogCiAtIElzc3VlICMxMDI4Nzogbm50cGxpYiBub3cgcXVlcmllcyB0aGUgc2VydmVyJ3MgQ0FQQUJJTElUSUVTIGZpcnN0IGJlZm9yZQogICBzZW5kaW5nIE1PREUgUkVBREVSLCBhbmQgb25seSBzZW5kcyBpdCBpZiBub3QgYWxyZWFkeSBpbiBSRUFERVIgbW9kZS4KICAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgogCi0tIElzc3VlICMxMzk3OTogQSBidWcgaW4gY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IHRoYXQgY2F1c2VkCi0gIHRoZSB3cm9uZyBsaWJyYXJ5IG5hbWUgdG8gYmUgcmV0dXJuZWQgaGFzIGJlZW4gZml4ZWQuCi0KIC0gSXNzdWUgIzEzOTkzOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gZW5kIHRhZ3Mgd2hlbgogICBzdHJpY3Q9RmFsc2UuCiAKKy0gSXNzdWUgIzEzOTMwOiBsaWIydG8zIG5vdyBzdXBwb3J0cyB3cml0aW5nIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlcgorICBkaXJlY3RvcnkgdHJlZSBhcyB3ZWxsIGFzIGNvcHlpbmcgdW5jaGFuZ2VkIGZpbGVzIGFuZCBhbHRlcmluZyB0aGUgZmlsZQorICBzdWZmaXguCisKIC0gSXNzdWUgIzk3NTA6IEZpeCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgb24gdGFibGVzIGFuZCBmaWVsZHMKICAgd2l0aCBhIG5hbWUgdGhhdCBpcyBhIGtleXdvcmQgb3IgY29udGFpbnMgcXVvdGVzLiBQYXRjaCBieSBNYXJrbwogICBLb2h0YWxhLgpAQCAtODk2LDEwICsyNTIzLDI3IEBACiAtIElzc3VlICMxMzk2MDogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGNvbW1lbnRzIHdoZW4KICAgc3RyaWN0PUZhbHNlLgogCi0tIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTM5MjE6IFVuZG9jdW1lbnQgYW5kIGNsZWFuIHVwIHNxbGl0ZTMuT3B0aW1pemVkVW5pY29kZSwKKyAgd2hpY2ggaXMgb2Jzb2xldGUgaW4gUHl0aG9uIDMueC4gSXQncyBub3cgYWxpYXNlZCB0byBzdHIgZm9yCisgIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogCi0tIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKLSAgcmVsZXZhbnQsIGluc3RlYWQgc2VuZCBtZXRob2QuCistIFdoZW4gJycgaXMgYSBwYXRoIChlLmcuIGluIHN5cy5wYXRoKSwgbWFrZSBzdXJlIF9fZmlsZV9fIHVzZXMgdGhlIGN1cnJlbnQKKyAgd29ya2luZyBkaXJlY3RvcnkgaW5zdGVhZCBvZiAnJyBpbiBpbXBvcnRsaWIuCisKKy0gSXNzdWUgIzEzNjA5OiBBZGQgdHdvIGZ1bmN0aW9ucyB0byBxdWVyeSB0aGUgdGVybWluYWwgc2l6ZToKKyAgb3MuZ2V0X3Rlcm1pbmFsX3NpemUgKGxvdyBsZXZlbCkgYW5kIHNodXRpbC5nZXRfdGVybWluYWxfc2l6ZSAoaGlnaCBsZXZlbCkuCisgIFBhdGNoIGJ5IFpiaWduaWV3IErEmWRyemVqZXdza2ktU3ptZWsuCisKKy0gSXNzdWUgIzEzODQ1OiBPbiBXaW5kb3dzLCB0aW1lLnRpbWUoKSBub3cgdXNlcyBHZXRTeXN0ZW1UaW1lQXNGaWxlVGltZSgpCisgIGluc3RlYWQgb2YgZnRpbWUoKSB0byBoYXZlIGEgcmVzb2x1dGlvbiBvZiAxMDAgbnMgaW5zdGVhZCBvZiAxIG1zICh0aGUgY2xvY2sKKyAgYWNjdXJhY3kgaXMgYmV0d2VlbiAwLjUgbXMgYW5kIDE1IG1zKS4KKworLSBJc3N1ZSAjMTM4NDY6IEFkZCB0aW1lLm1vbm90b25pYygpLCBtb25vdG9uaWMgY2xvY2suCisKKy0gSXNzdWUgIzgxODQ6IG11bHRpcHJvY2Vzc2luZzogT24gV2luZG93cywgZG9uJ3Qgc2V0IFNPX1JFVVNFQUREUiBvbgorICBDb25uZWN0aW9uIHNvY2tldHMsIGFuZCBzZXQgRklMRV9GTEFHX0ZJUlNUX1BJUEVfSU5TVEFOQ0Ugb24gbmFtZWQgcGlwZXMsIHRvCisgIG1ha2Ugc3VyZSB0d28gbGlzdGVuZXJzIGNhbid0IGJpbmQgdG8gdGhlIHNhbWUgc29ja2V0L3BpcGUgKG9yIGFueSBleGlzdGluZworICBzb2NrZXQvcGlwZSkuCiAKIC0gSXNzdWUgIzEwODExOiBGaXggcmVjdXJzaXZlIHVzYWdlIG9mIGN1cnNvcnMuIEluc3RlYWQgb2YgY3Jhc2hpbmcsCiAgIHJhaXNlIGEgUHJvZ3JhbW1pbmdFcnJvciBub3cuCkBAIC05MDksOCArMjU1MywxNSBAQAogLSBJc3N1ZSAjOTY0NDM3OiBNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLgogICBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCiAKKy0gSXNzdWUgIzEzNzM0OiBBZGQgb3MuZndhbGsoKSwgYSBkaXJlY3Rvcnkgd2Fsa2luZyBmdW5jdGlvbiB5aWVsZGluZyBmaWxlCisgIGRlc2NyaXB0b3JzLgorCiAtIElzc3VlICMyOTQ1OiBNYWtlIHRoZSBkaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgYXdhcmUgb2YgYmRpc3RfcnBtIHByb2R1Y3RzLgogCistIElzc3VlICMxMzcxMjogcHlzZXR1cCBjcmVhdGUgc2hvdWxkIG5vdCBjb252ZXJ0IHBhY2thZ2VfZGF0YSB0byBleHRyYV9maWxlcy4KKworLSBJc3N1ZSAjMTE4MDU6IHBhY2thZ2VfZGF0YSBpbiBzZXR1cC5jZmcgc2hvdWxkIGFsbG93IG1vcmUgdGhhbiBvbmUgdmFsdWUuCisKIC0gSXNzdWUgIzEzOTMzOiBJRExFIGF1dG8tY29tcGxldGUgZGlkIG5vdCB3b3JrIHdpdGggc29tZSBpbXBvcnRlZAogICBtb2R1bGUsIGxpa2UgaGFzaGxpYi4gIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKIApAQCAtOTIxLDYgKzI1NzIsOSBAQAogLSBJc3N1ZSAjMTM1MDY6IEFkZCAnJyB0byBwYXRoIGZvciBJRExFIFNoZWxsIHdoZW4gc3RhcnRlZCBhbmQgcmVzdGFydGVkIHdpdGggUmVzdGFydCBTaGVsbC4KICAgT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KIAorLSBJc3N1ZSAjODgyODogQWRkIG5ldyBmdW5jdGlvbiBvcy5yZXBsYWNlKCksIGZvciBjcm9zcy1wbGF0Zm9ybSByZW5hbWluZworICB3aXRoIG92ZXJ3cml0aW5nLgorCiAtIElzc3VlICMxMzg0ODogb3BlbigpIGFuZCB0aGUgRmlsZUlPIGNvbnN0cnVjdG9yIG5vdyBjaGVjayBmb3IgTlVMCiAgIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgbmFtZS4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KIApAQCAtOTMzLDYgKzI1ODcsMTcgQEAKIC0gSXNzdWUgIzEzODg1OiBDVkUtMjAxMS0zMzg5OiB0aGUgX3NzbCBtb2R1bGUgd291bGQgYWx3YXlzIGRpc2FibGUgdGhlIENCQwogICBJViBhdHRhY2sgY291bnRlcm1lYXN1cmUuCiAKKy0gSXNzdWUgIzEzODQ3OiB0aW1lLmxvY2FsdGltZSgpIGFuZCB0aW1lLmdtdGltZSgpIG5vdyByYWlzZSBhbiBPU0Vycm9yIGluc3RlYWQKKyAgb2YgVmFsdWVFcnJvciBvbiBmYWlsdXJlLiB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuYXNjdGltZSgpIG5vdyByYWlzZXMgYW4KKyAgT1NFcnJvciBpZiBsb2NhbHRpbWUoKSBmYWlsZWQuIHRpbWUuY2xvY2soKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIHRoZQorICBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgb3IgaXRzIHZhbHVlIGNhbm5vdCBiZSByZXByZXNlbnRlZAorCistIElzc3VlICMxMzg2MjogRml4IHNwdXJpb3VzIGZhaWx1cmUgaW4gdGVzdF96bGliIGR1ZSB0byBydW50aW1lL2NvbXBpbGUgdGltZQorICBtaW5vciB2ZXJzaW9ucyBub3QgbWF0Y2hpbmcuCisKKy0gSXNzdWUgIzEyODA0OiBGaXggdGVzdF9zb2NrZXQgYW5kIHRlc3RfdXJsbGliMm5ldCBmYWlsdXJlcyB3aGVuIHJ1bm5pbmcgdGVzdHMKKyAgb24gYSBzeXN0ZW0gd2l0aG91dCBpbnRlcm5ldCBhY2Nlc3MuCisKIC0gSXNzdWUgIzEzNzcyOiBJbiBvcy5zeW1saW5rKCkgdW5kZXIgV2luZG93cywgZG8gbm90IHRyeSB0byBndWVzcyB0aGUgbGluawogICB0YXJnZXQncyB0eXBlIChmaWxlIG9yIGRpcmVjdG9yeSkuICBUaGUgZGV0ZWN0aW9uIHdhcyBidWdneSBhbmQgbWFkZSB0aGUKICAgY2FsbCBub24tYXRvbWljICh0aGVyZWZvcmUgcHJvbmUgdG8gcmFjZSBjb25kaXRpb25zKS4KQEAgLTk0OCw2ICsyNjEzLDExIEBACiAtIElzc3VlICMxMzgwMzogVW5kZXIgU29sYXJpcywgZGlzdHV0aWxzIGRvZXNuJ3QgaW5jbHVkZSBiaXRuZXNzCiAgIGluIHRoZSBkaXJlY3RvcnkgbmFtZS4KIAorLSBJc3N1ZSAjMTAyNzg6IEFkZCB0aW1lLndhbGxjbG9jaygpIGZ1bmN0aW9uLCBtb25vdG9uaWMgY2xvY2suCisKKy0gSXNzdWUgIzEzODA5OiBGaXggcmVncmVzc2lvbiB3aGVyZSBiejIgbW9kdWxlIHdvdWxkbid0IHdvcmsgd2hlbiB0aHJlYWRzIGFyZQorICBkaXNhYmxlZC4gT3JpZ2luYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCisKIC0gSXNzdWUgIzEzNTg5OiBGaXggc29tZSBzZXJpYWxpemF0aW9uIHByaW1pdGl2ZXMgaW4gdGhlIGFpZmMgbW9kdWxlLgogICBQYXRjaCBieSBPbGVnIFBsYWtob3RueXVrLgogCkBAIC05NjQsNiArMjYzNCwxMSBAQAogLSBJc3N1ZSAjMTM1MDI6IHRocmVhZGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gRXZlbnQud2FpdCgpIHRoYXQgbWFkZSBpdAogICByZXR1cm4gRmFsc2Ugd2hlbiB0aGUgZXZlbnQgd2FzIHNldCBhbmQgY2xlYXJlZCByaWdodCBhZnRlci4KIAorLSBJc3N1ZSAjOTk5MzogV2hlbiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW1zLAorICBhbmQgdGhlIHNvdXJjZSBpcyBhIHN5bWxpbmssIHNodXRpbC5tb3ZlKCkgbm93IHJlY3JlYXRlcyBhIHN5bWxpbmsgb24gdGhlCisgIGRlc3RpbmF0aW9uIGluc3RlYWQgb2YgY29weWluZyB0aGUgZmlsZSBjb250ZW50cy4gIFBhdGNoIGJ5IEpvbmF0aGFuIE5pZWhvZgorICBhbmQgSHluZWsgU2NobGF3YWNrLgorCiAtIElzc3VlICMxMjkyNjogRml4IGEgYnVnIGluIHRhcmZpbGUncyBsaW5rIGV4dHJhY3Rpb24uCiAKIC0gSXNzdWUgIzEzNjk2OiBGaXggdGhlIDMwMiBSZWxhdGl2ZSBVUkwgUmVkaXJlY3Rpb24gcHJvYmxlbS4KQEAgLTk3MSwxNSArMjY0Niw0MiBAQAogLSBJc3N1ZSAjMTM2MzY6IFdlYWsgY2lwaGVycyBhcmUgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIHNzbCBtb2R1bGUKICAgKGV4Y2VwdCB3aGVuIFNTTHYyIGlzIGV4cGxpY2l0bHkgYXNrZWQgZm9yKS4KIAotLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgorLSBJc3N1ZSAjMTI3MTU6IEFkZCBhbiBvcHRpb25hbCBzeW1saW5rcyBhcmd1bWVudCB0byBzaHV0aWwgZnVuY3Rpb25zCisgIChjb3B5ZmlsZSwgY29weW1vZGUsIGNvcHlzdGF0LCBjb3B5LCBjb3B5MikuICBXaGVuIHRoYXQgcGFyYW1ldGVyIGlzCisgIHRydWUsIHN5bWxpbmtzIGFyZW4ndCBkZXJlZmVyZW5jZWQgYW5kIHRoZSBvcGVyYXRpb24gaW5zdGVhZCBhY3RzIG9uIHRoZQorICBzeW1saW5rIGl0c2VsZiAob3IgY3JlYXRlcyBvbmUsIGlmIHJlbGV2YW50KS4gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KKworLSBBZGQgYSBmbGFncyBwYXJhbWV0ZXIgdG8gc2VsZWN0LmVwb2xsLgorCistIElzc3VlICMxMzYyNjogQWRkIHN1cHBvcnQgZm9yIFNTTCBEaWZmaWUtSGVsbG1hbiBrZXkgZXhjaGFuZ2UsIHRocm91Z2ggdGhlCisgIFNTTENvbnRleHQubG9hZF9kaF9wYXJhbXMoKSBtZXRob2QgYW5kIHRoZSBzc2wuT1BfU0lOR0xFX0RIX1VTRSBvcHRpb24uCiAKIC0gSXNzdWUgIzExMDA2OiBEb24ndCBpc3N1ZSBsb3cgbGV2ZWwgd2FybmluZyBpbiBzdWJwcm9jZXNzIHdoZW4gcGlwZTIoKSBmYWlscy4KIAorLSBJc3N1ZSAjMTM2MjA6IFN1cHBvcnQgZm9yIENocm9tZSBicm93c2VyIGluIHdlYmJyb3dzZXIuICBQYXRjaCBjb250cmlidXRlZAorICBieSBBcm5hdWQgQ2FsbWV0dGVzLgorCiAtIElzc3VlICMxMTgyOTogRml4IGNvZGUgZXhlY3V0aW9uIGhvbGVzIGluIGluc3BlY3QuZ2V0YXR0cl9zdGF0aWMgZm9yCiAgIG1ldGFjbGFzc2VzIHdpdGggbWV0YWNsYXNzZXMuIFBhdGNoIGJ5IEFuZHJlYXMgU3TDvGhyay4KIAorLSBJc3N1ZSAjMTI3MDg6IEFkZCBzdGFybWFwKCkgYW5kIHN0YXJtYXBfYXN5bmMoKSBtZXRob2RzIChzaW1pbGFyIHRvCisgIGl0ZXJ0b29scy5zdGFybWFwKCkpIHRvIG11bHRpcHJvY2Vzc2luZy5Qb29sLiAgUGF0Y2ggYnkgSHluZWsgU2NobGF3YWNrLgorCiAtIElzc3VlICMxNzg1OiBGaXggaW5zcGVjdCBhbmQgcHlkb2Mgd2l0aCBtaXNiZWhhdmluZyBkZXNjcmlwdG9ycy4KIAorLSBJc3N1ZSAjMTM2Mzc6ICJhMmIiIGZ1bmN0aW9ucyBpbiB0aGUgYmluYXNjaWkgbW9kdWxlIG5vdyBhY2NlcHQgQVNDSUktb25seQorICB1bmljb2RlIHN0cmluZ3MuCisKKy0gSXNzdWUgIzEzNjM0OiBBZGQgc3VwcG9ydCBmb3IgcXVlcnlpbmcgYW5kIGRpc2FibGluZyBTU0wgY29tcHJlc3Npb24uCisKKy0gSXNzdWUgIzEzNjI3OiBBZGQgc3VwcG9ydCBmb3IgU1NMIEVsbGlwdGljIEN1cnZlLWJhc2VkIERpZmZpZS1IZWxsbWFuCisgIGtleSBleGNoYW5nZSwgdGhyb3VnaCB0aGUgU1NMQ29udGV4dC5zZXRfZWNkaF9jdXJ2ZSgpIG1ldGhvZCBhbmQgdGhlCisgIHNzbC5PUF9TSU5HTEVfRUNESF9VU0Ugb3B0aW9uLgorCistIElzc3VlICMxMzYzNTogQWRkIHNzbC5PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIHNvIHRoYXQgU1NMIHNlcnZlcnMKKyAgY2hvb3NlIHRoZSBjaXBoZXIgYmFzZWQgb24gdGhlaXIgb3duIHByZWZlcmVuY2VzLCByYXRoZXIgdGhhbiBvbiB0aGUKKyAgY2xpZW50J3MuCisKIC0gSXNzdWUgIzExODEzOiBGaXggaW5zcGVjdC5nZXRhdHRyX3N0YXRpYyBmb3IgbW9kdWxlcy4gUGF0Y2ggYnkgQW5kcmVhcwogICBTdMO8aHJrLgogCkBAIC05OTIsMjcgKzI2OTQsNTggQEAKIC0gSXNzdWUgIzgwMzU6IHVybGxpYjogRml4IGEgYnVnIHdoZXJlIHRoZSBjbGllbnQgY291bGQgcmVtYWluIHN0dWNrIGFmdGVyIGEKICAgcmVkaXJlY3Rpb24gb3IgYW4gZXJyb3IuCiAKKy0gSXNzdWUgIzEzNTYwOiBvcy5zdHJlcnJvcigpIG5vdyB1c2VzIHRoZSBjdXJyZW50IGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mCisgIFVURi04LgorCistIElzc3VlICM4MzczOiBUaGUgZmlsZXN5c3RlbSBwYXRoIG9mIEFGX1VOSVggc29ja2V0cyBub3cgdXNlcyB0aGUgZmlsZXN5c3RlbQorICBlbmNvZGluZyBhbmQgdGhlIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLCByYXRoZXIgdGhhbiBVVEYtOC4gIFBhdGNoCisgIGJ5IERhdmlkIFdhdHNvbi4KKwogLSBJc3N1ZSAjMTAzNTA6IFJlYWQgYW5kIHNhdmUgZXJybm8gYmVmb3JlIGNhbGxpbmcgYSBmdW5jdGlvbiB3aGljaCBtaWdodAogICBvdmVyd3JpdGUgaXQuICBPcmlnaW5hbCBwYXRjaCBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgogCistIElzc3VlICMxMTYxMDogSW50cm9kdWNlIGEgbW9yZSBnZW5lcmFsIHdheSB0byBkZWNsYXJlIGFic3RyYWN0IHByb3BlcnRpZXMuCisKIC0gSXNzdWUgIzEzNTkxOiBBIGJ1ZyBpbiBpbXBvcnRsaWIgaGFzIGJlZW4gZml4ZWQgdGhhdCBjYXVzZWQgaW1wb3J0X21vZHVsZQogICB0byBsb2FkIGEgbW9kdWxlIHR3aWNlLgogCi0tIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludAotICBmaWxlcywgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLgotICAob3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCistIElzc3VlICM0NjI1OiBJZiBJRExFIGNhbm5vdCB3cml0ZSB0byBpdHMgcmVjZW50IGZpbGUgb3IgYnJlYWtwb2ludCBmaWxlcywKKyAgZGlzcGxheSBhIG1lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgUm9nZXIgU2Vyd3kuCiAKLS0gSXNzdWUgIzU5MDU6IHRpbWUuc3RyZnRpbWUoKSBpcyBub3cgdXNpbmcgdGhlIGxvY2FsZSBlbmNvZGluZywgaW5zdGVhZCBvZgotICBVVEYtOCwgaWYgdGhlIHdjc2Z0aW1lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KKy0gSXNzdWUgIzEzNDQ5IHNjaGVkLnNjaGVkdWxlci5ydW4oKSBtZXRob2QgaGFzIGEgbmV3ICJibG9ja2luZyIgcGFyYW1ldGVyIHdoaWNoCisgIHdoZW4gc2V0IHRvIEZhbHNlIG1ha2VzIHJ1bigpIGV4ZWN1dGUgdGhlIHNjaGVkdWxlZCBldmVudHMgZHVlIHRvIGV4cGlyZQorICBzb29uZXN0IChpZiBhbnkpIGFuZCB0aGVuIHJldHVybi4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbMOgLgorCistIElzc3VlICM4Njg0IHNjaGVkLnNjaGVkdWxlciBjbGFzcyBjYW4gYmUgc2FmZWx5IHVzZWQgaW4gbXVsdGktdGhyZWFkZWQKKyAgZW52aXJvbm1lbnRzLiAgUGF0Y2ggYnkgSm9zaWFoIENhcmxzb24gYW5kIEdpYW1wYW9sbyBSb2RvbMOgLgorCistIEFsaWFzIHJlc291cmNlLmVycm9yIHRvIE9TRXJyb3IgYWxhIFBFUCAzMTUxLgorCistIElzc3VlICM1Njg5OiBBZGQgc3VwcG9ydCBmb3IgbHptYSBjb21wcmVzc2lvbiB0byB0aGUgdGFyZmlsZSBtb2R1bGUuCisKKy0gSXNzdWUgIzEzMjQ4OiBUdXJuIDMuMidzIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaW50byAzLjMncworICBEZXByZWNhdGlvbldhcm5pbmcuICBJdCBjb3ZlcnMgJ2NnaS5lc2NhcGUnLCAnaW1wb3J0bGliLmFiYy5QeUxvYWRlcicsCisgICdpbXBvcnRsaWIuYWJjLlB5UHljTG9hZGVyJywgJ25udHBsaWIuTk5UUC54Z3RpdGxlJywgJ25udHBsaWIuTk5UUC54cGF0aCcsCisgIGFuZCBwcml2YXRlIGF0dHJpYnV0ZXMgb2YgJ3NtdHBkLlNNVFBDaGFubmVsJy4KKworLSBJc3N1ZSAjNTkwNSwgIzEzNTYwOiB0aW1lLnN0cmZ0aW1lKCkgaXMgbm93IHVzaW5nIHRoZSBjdXJyZW50IGxvY2FsZQorICBlbmNvZGluZywgaW5zdGVhZCBvZiBVVEYtOCwgaWYgdGhlIHdjc2Z0aW1lKCkgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KIAogLSBJc3N1ZSAjODY0MTogVXBkYXRlIElETEUgMyBzeW50YXggY29sb3JpbmcgdG8gcmVjb2duaXplIGIiLi4iIGFuZCBub3QgdSIuLiIuCiAgIFBhdGNoIGJ5IFRhbCBFaW5hdC4KIAorLSBJc3N1ZSAjMTM0NjQ6IEFkZCBhIHJlYWRpbnRvKCkgbWV0aG9kIHRvIGh0dHAuY2xpZW50LkhUVFBSZXNwb25zZS4gIFBhdGNoCisgIGJ5IEpvbiBLdWhuLgorCiAtIHRhcmZpbGUucHk6IENvcnJlY3RseSBkZXRlY3QgYnppcDIgY29tcHJlc3NlZCBzdHJlYW1zIHdpdGggYmxvY2tzaXplcwogICBvdGhlciB0aGFuIDkwMGsuCiAKIC0gSXNzdWUgIzEzNDM5OiBGaXggbWFueSBlcnJvcnMgaW4gdHVydGxlIGRvY3N0cmluZ3MuCiAKKy0gSXNzdWUgIzY3MTU6IEFkZCBhIG1vZHVsZSAnbHptYScgZm9yIGNvbXByZXNzaW9uIHVzaW5nIHRoZSBMWk1BIGFsZ29yaXRobS4KKyAgVGhhbmtzIHRvIFBlciDDmHl2aW5kIEthcmxzZW4gZm9yIHRoZSBpbml0aWFsIGltcGxlbWVudGF0aW9uLgorCiAtIElzc3VlICMxMzQ4NzogTWFrZSBpbnNwZWN0LmdldG1vZHVsZSByb2J1c3QgYWdhaW5zdCBjaGFuZ2VzIGRvbmUgdG8KICAgc3lzLm1vZHVsZXMgd2hpbGUgaXQgaXMgaXRlcmF0aW5nIG92ZXIgaXQuCiAKQEAgLTEwMjIsMTUgKzI3NTUsMzEgQEAKIC0gSXNzdWUgIzEzNDQ0OiBXaGVuIHN0ZG91dCBoYXMgYmVlbiBjbG9zZWQgZXhwbGljaXRseSwgd2Ugc2hvdWxkIG5vdCBhdHRlbXB0CiAgIHRvIGZsdXNoIGl0IGF0IHNodXRkb3duIGFuZCBwcmludCBhbiBlcnJvci4KIAorLSBJc3N1ZSAjMTI1Njc6IFRoZSBjdXJzZXMgbW9kdWxlIHVzZXMgVW5pY29kZSBmdW5jdGlvbnMgZm9yIFVuaWNvZGUgYXJndW1lbnRzCisgIHdoZW4gaXQgaXMgbGlua2VkIHRvIHRoZSBuY3Vyc2VzIGxpYnJhcnkuIEl0IGVuY29kZXMgYWxzbyBVbmljb2RlIHN0cmluZ3MgdG8KKyAgdGhlIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgorCiAtIElzc3VlICMxMjg1NjogRW5zdXJlIGNoaWxkIHByb2Nlc3NlcyBkbyBub3QgaW5oZXJpdCB0aGUgcGFyZW50J3MgcmFuZG9tCiAgIHNlZWQgZm9yIGZpbGVuYW1lIGdlbmVyYXRpb24gaW4gdGhlIHRlbXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IEJyaWFuCiAgIEhhcnJpbmcuCiAKKy0gSXNzdWUgIzk5NTc6IFNwb29sZWRUZW1wb3JhcnlGaWxlLnRydW5jYXRlKCkgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc2l6ZQorICBwYXJhbWV0ZXIsIGFzIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzLiAgUGF0Y2ggYnkgUnlhbiBLZWxseS4KKwogLSBJc3N1ZSAjMTM0NTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSBzc2wgbW9kdWxlIHdoZW4gZGVjb2RpbmcgYQogICBjZXJ0aWZpY2F0ZSB3aXRoIGEgc3ViamVjdEFsdE5hbWUuICBQYXRjaCBieSBSb2JlcnQgWGlhby4KIAogLSBJc3N1ZSAjMTM0MTU6IG9zLnVuc2V0ZW52KCkgZG9lc24ndCBpZ25vcmUgZXJyb3JzIGFueW1vcmUuCiAKKy0gSXNzdWUgIzEzMjQ1OiBzY2hlZC5zY2hlZHVsZXIgY2xhc3MgY29uc3RydWN0b3IncyB0aW1lZnVuYyBhbmQKKyAgZGVsYXlmdW5jdCBwYXJhbWV0ZXJzIGFyZSBub3cgb3B0aW9uYWwuCisgIHNjaGVkdWxlci5lbnRlciBhbmQgc2NoZWR1bGVyLmVudGVyYWJzIG1ldGhvZHMgZ2FpbmVkIGEgbmV3IGt3YXJncyBwYXJhbWV0ZXIuCisgIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIENsYXJrLgorCistIElzc3VlICMxMjMyODogVW5kZXIgV2luZG93cywgcmVmYWN0b3IgaGFuZGxpbmcgb2YgQ3RybC1DIGV2ZW50cyBhbmQKKyAgbWFrZSBfbXVsdGlwcm9jZXNzaW5nLndpbjMyLldhaXRGb3JNdWx0aXBsZU9iamVjdHMgaW50ZXJydXB0aWJsZSB3aGVuCisgIHRoZSB3YWl0X2ZsYWcgcGFyYW1ldGVyIGlzIGZhbHNlLiAgUGF0Y2ggYnkgc2J0LgorCiAtIElzc3VlICMxMzMyMjogRml4IEJ1ZmZlcmVkV3JpdGVyLndyaXRlKCkgdG8gZW5zdXJlIHRoYXQgQmxvY2tpbmdJT0Vycm9yIGlzCiAgIHJhaXNlZCB3aGVuIHRoZSB3cmFwcGVkIHJhdyBmaWxlIGlzIG5vbi1ibG9ja2luZyBhbmQgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgogICBQcmV2aW91cyBjb2RlIGFzc3VtZWQgdGhhdCB0aGUgcmF3IHdyaXRlKCkgd291bGQgcmFpc2UgQmxvY2tpbmdJT0Vycm9yLCBidXQKQEAgLTEwNDMsMTMgKzI3OTIsMjUgQEAKICAgbm9kZSB3aGVuIGl0IGlzIHRoZSBvbmx5IGNoaWxkIG9mIGFuIGVsZW1lbnQuICBJbml0aWFsIHBhdGNoIGJ5IERhbgogICBLZW5pZ3NiZXJnLgogCistIElzc3VlICMxMzM3NDogVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gdGhlIG9zIG1vZHVsZS4gVXNlCisgIFVuaWNvZGUgZmlsZW5hbWVzIGluc3RlYWQgb2YgYnl0ZXMgZmlsZW5hbWVzIHRvIG5vdCBkZXBlbmQgb24gdGhlIEFOU0kgY29kZQorICBwYWdlIGFueW1vcmUgYW5kIHRvIHN1cHBvcnQgYW55IGZpbGVuYW1lLgorCistIElzc3VlICMxMzI5NzogVXNlIGJ5dGVzIHR5cGUgdG8gc2VuZCBhbmQgcmVjZWl2ZSBiaW5hcnkgZGF0YSB0aHJvdWdoIFhNTFJQQy4KKworLSBJc3N1ZSAjNjM5NzogU3VwcG9ydCAiL2Rldi9wb2xsIiBwb2xsaW5nIG9iamVjdHMgaW4gc2VsZWN0IG1vZHVsZSwKKyAgdW5kZXIgU29sYXJpcyAmIGRlcml2YXRpdmVzLgorCiAtIElzc3VlcyAjMTc0NTc2MSwgIzc1NTY3MCwgIzEzMzU3LCAjMTI2MjksICMxMjAwMzEzOiBIVE1MUGFyc2VyIG5vdyBjb3JyZWN0bHkKICAgaGFuZGxlcyBub24tdmFsaWQgYXR0cmlidXRlcywgaW5jbHVkaW5nIGFkamFjZW50IGFuZCB1bnF1b3RlZCBhdHRyaWJ1dGVzLgogCi0tIElzc3VlICMxMzE5MzogRml4IGRpc3R1dGlscy5maWxlbGlzdC5GaWxlTGlzdCB1bmRlciBXaW5kb3dzLgorLSBJc3N1ZSAjMTMxOTM6IEZpeCBkaXN0dXRpbHMuZmlsZWxpc3QuRmlsZUxpc3QgYW5kIHBhY2thZ2luZy5tYW5pZmVzdC5NYW5pZmVzdAorICB1bmRlciBXaW5kb3dzLgogCiAtIElzc3VlICMxMzM4NDogUmVtb3ZlIHVubmVjZXNzYXJ5IF9fZnV0dXJlX18gaW1wb3J0IGluIExpYi9yYW5kb20ucHkKIAorLSBJc3N1ZSAjMTMxNDk6IFNwZWVkIHVwIGFwcGVuZC1vbmx5IFN0cmluZ0lPIG9iamVjdHMuCisKIC0gSXNzdWUgIzEzMzczOiBtdWx0aXByb2Nlc3NpbmcuUXVldWUuZ2V0KCkgY291bGQgc29tZXRpbWVzIGJsb2NrIGluZGVmaW5pdGVseQogICB3aGVuIGNhbGxlZCB3aXRoIGEgdGltZW91dC4gIFBhdGNoIGJ5IEFybmF1ZCBZc21hbC4KIApAQCAtMTA2NSwxMSArMjgyNiwyMCBAQAogLSBJc3N1ZSAjMTMzMzk6IEZpeCBjb21waWxlIGVycm9yIGluIHBvc2l4bW9kdWxlLmMgZHVlIHRvIG1pc3Npbmcgc2VtaWNvbG9uLgogICBUaGFua3MgdG8gUm9iZXJ0IFhpYW8uCiAKKy0gQnl0ZSBjb21waWxhdGlvbiBpbiBwYWNrYWdpbmcgaXMgbm93IGlzb2xhdGVkIGZyb20gdGhlIGNhbGxpbmcgUHl0aG9uIC1CIG9yCisgIC1PIG9wdGlvbnMsIGluc3RlYWQgb2YgYmVpbmcgZGlzYWxsb3dlZCB1bmRlciAtQiBvciBidWdneSB1bmRlciAtTy4KKwogLSBJc3N1ZSAjMTA1NzA6IGN1cnNlcy5wdXRwKCkgYW5kIGN1cnNlcy50cGFybSgpIGFyZSBub3cgZXhwZWN0aW5nIGEgYnl0ZQogICBzdHJpbmcsIGluc3RlYWQgb2YgYSBVbmljb2RlIHN0cmluZy4KIAorLSBJc3N1ZSAjMTMyOTU6IGh0dHAuc2VydmVyIG5vdyBwcm9kdWNlcyB2YWxpZCBIVE1MIDQuMDEgc3RyaWN0LgorCiAtIElzc3VlICMyODkyOiBwcmVzZXJ2ZSBpdGVycGFyc2UgZXZlbnRzIGluIGNhc2Ugb2YgU3ludGF4RXJyb3IuCiAKKy0gSXNzdWUgIzEzMjg3OiB1cmxsaWIucmVxdWVzdCBhbmQgdXJsbGliLmVycm9yIG5vdyBjb250YWlucyBhbiBfX2FsbF9fCisgIGF0dHJpYnV0ZSB0byBleHBvc2Ugb25seSByZWxldmFudCBjbGFzc2VzIGFuZCBmdW5jdGlvbnMuICBQYXRjaCBieSBGbG9yZW50CisgIFhpY2x1bmEuCisKIC0gSXNzdWUgIzY3MDY2NDogRml4IEhUTUxQYXJzZXIgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgY29udGVudCBvZgogICBgYDxzY3JpcHQ+Li4uPC9zY3JpcHQ+YGAgYW5kIGBgPHN0eWxlPi4uLjwvc3R5bGU+YGAuCiAKQEAgLTEwNzksNiArMjg0OSw5IEBACiAtIElzc3VlICMxMzI5NjogRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuCiAgIChQYXRjaCBieSBSb2dlciBTZXJ3eSkKIAorLSBGaXggdGhlIHhtbHJwYy5jbGllbnQgdXNlciBhZ2VudCB0byByZXR1cm4gc29tZXRoaW5nIHNpbWlsYXIgdG8KKyAgdXJsbGliLnJlcXVlc3QgdXNlciBhZ2VudDogIlB5dGhvbi14bWxycGMvMy4zIi4KKwogLSBJc3N1ZSAjMTMyOTM6IEJldHRlciBlcnJvciBtZXNzYWdlIHdoZW4gdHJ5aW5nIHRvIG1hcnNoYWwgYnl0ZXMgdXNpbmcKICAgeG1scnBjLmNsaWVudC4KIApAQCAtMTA4OSw1MSArMjg2Miw4MSBAQAogLSBJc3N1ZSAjMTMyNzM6IGZpeCBhIGJ1ZyB0aGF0IHByZXZlbnRlZCBIVE1MUGFyc2VyIHRvIHByb3Blcmx5IGRldGVjdCBzb21lCiAgIHRhZ3Mgd2hlbiBzdHJpY3Q9RmFsc2UuCiAKKy0gSXNzdWUgIzExMTgzOiBBZGQgZmluZXItZ3JhaW5lZCBleGNlcHRpb25zIHRvIHRoZSBzc2wgbW9kdWxlLCBzbyB0aGF0CisgIHlvdSBkb24ndCBoYXZlIHRvIGluc3BlY3QgdGhlIGV4Y2VwdGlvbidzIGF0dHJpYnV0ZXMgaW4gdGhlIGNvbW1vbiBjYXNlLgorCistIElzc3VlICMxMzIxNjogQWRkIGNwNjUwMDEgY29kZWMsIHRoZSBXaW5kb3dzIFVURi04IChDUF9VVEY4KS4KKworLSBJc3N1ZSAjMTMyMjY6IEFkZCBSVExEX3h4eCBjb25zdGFudHMgdG8gdGhlIG9zIG1vZHVsZS4gVGhlc2UgY29uc3RhbnRzIGNhbiBiZQorICB1c2VkIHdpdGggc3lzLnNldGRsb3BlbmZsYWdzKCkuCisKKy0gSXNzdWUgIzEwMjc4OiBBZGQgY2xvY2tfZ2V0cmVzKCksIGNsb2NrX2dldHRpbWUoKSBhbmQgQ0xPQ0tfeHh4IGNvbnN0YW50cyB0bworICB0aGUgdGltZSBtb2R1bGUuIHRpbWUuY2xvY2tfZ2V0dGltZSh0aW1lLkNMT0NLX01PTk9UT05JQykgcHJvdmlkZXMgYQorICBtb25vdG9uaWMgY2xvY2sKKwogLSBJc3N1ZSAjMTAzMzI6IG11bHRpcHJvY2Vzc2luZzogZml4IGEgcmFjZSBjb25kaXRpb24gd2hlbiBhIFBvb2wgaXMgY2xvc2VkCiAgIGJlZm9yZSBhbGwgdGFza3MgaGF2ZSBjb21wbGV0ZWQuCiAKIC0gSXNzdWUgIzEzMjU1OiB3cm9uZyBkb2NzdHJpbmdzIGluIGFycmF5IG1vZHVsZS4KIAorLSBJc3N1ZSAjODU0MDogUmVtb3ZlIGRlcHJlY2F0ZWQgQ29udGV4dC5fY2xhbXAgYXR0cmlidXRlIGluIERlY2ltYWwgbW9kdWxlLgorCistIElzc3VlICMxMzIzNTogQWRkZWQgRGVwcmVjYXRpb25XYXJuaW5nIHRvIGxvZ2dpbmcud2FybigpIG1ldGhvZCBhbmQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzkxNjg6IG5vdyBzbXRwZCBpcyBhYmxlIHRvIGJpbmQgcHJpdmlsZWdlZCBwb3J0LgogCiAtIElzc3VlICMxMjUyOTogZml4IGNnaS5wYXJzZV9oZWFkZXIgaXNzdWUgb24gc3RyaW5ncyB3aXRoIGRvdWJsZS1xdW90ZXMgYW5kCiAgIHNlbWljb2xvbnMgdG9nZXRoZXIuIFBhdGNoIGJ5IEJlbiBEYXJuZWxsIGFuZCBQZXRyaSBMZWh0aW5lbi4KIAotLSBJc3N1ZSAjMTI0NDg6IHNtdHBsaWIgbm93IGZsdXNoZXMgc3Rkb3V0IHdoaWxlIHJ1bm5pbmcgYGBweXRob24gLW0gc210cGxpYmBgCi0gIGluIG9yZGVyIHRvIGRpc3BsYXkgdGhlIHByb21wdCBjb3JyZWN0bHkuCistIElzc3VlICMxMzIyNzogZnVuY3Rvb2xzLmxydV9jYWNoZSgpIG5vdyBoYXMgYSBvcHRpb24gdG8gZGlzdGluZ3Vpc2gKKyAgY2FsbHMgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnQgdHlwZXMuCiAKIC0gSXNzdWUgIzYwOTA6IHppcGZpbGUgcmFpc2VzIGEgVmFsdWVFcnJvciB3aGVuIGEgZG9jdW1lbnQgd2l0aCBhIHRpbWVzdGFtcAogICBlYXJsaWVyIHRoYW4gMTk4MCBpcyBwcm92aWRlZC4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgUGV0cmkgTGVodGluZW4uCiAKKy0gSXNzdWUgIzEzMTUwOiBzeXNjb25maWcgbm8gbG9uZ2VyIHBhcnNlcyB0aGUgTWFrZWZpbGUgYW5kIGNvbmZpZy5oIGZpbGVzCisgIHdoZW4gaW1wb3J0ZWQsIGluc3RlYWQgZG9pbmcgaXQgYXQgYnVpbGQgdGltZS4gIFRoaXMgbWFrZXMgaW1wb3J0aW5nCisgIHN5c2NvbmZpZyBmYXN0ZXIgYW5kIHJlZHVjZXMgUHl0aG9uIHN0YXJ0dXAgdGltZSBieSAyMCUuCisKKy0gSXNzdWUgIzEyNDQ4OiBzbXRwbGliIG5vdyBmbHVzaGVzIHN0ZG91dCB3aGlsZSBydW5uaW5nIGBgcHl0aG9uIC1tIHNtdHBsaWJgYAorICBpbiBvcmRlciB0byBkaXNwbGF5IHRoZSBwcm9tcHQgY29ycmVjdGx5LgorCistIElzc3VlICMxMjQ1NDogVGhlIG1haWxib3ggbW9kdWxlIGlzIG5vdyB1c2luZyBBU0NJSSwgaW5zdGVhZCBvZiB0aGUgbG9jYWxlCisgIGVuY29kaW5nLCB0byByZWFkIGFuZCB3cml0ZSAubWhfc2VxdWVuY2VzIGZpbGVzLgorCiAtIElzc3VlICMxMzE5NDogemxpYi5jb21wcmVzc29iaigpLmNvcHkoKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkuY29weSgpIGFyZQogICBub3cgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCiAKKy0gSXNzdWUgIzE2NzMwMDc6IHVybGxpYi5yZXF1ZXN0IG5vdyBzdXBwb3J0cyBIRUFEIHJlcXVlc3QgdmlhIG5ldyBtZXRob2QgYXJndW1lbnQuCisgIFBhdGNoIGNvbnRyaWJ1dGlvbnMgYnkgRGF2aWQgU3RhbmVrLCBQYXRyaWNrIFdlc3RlcmhvZmYgYW5kIEV6aW8gTWVsb3R0aS4KKworLSBJc3N1ZSAjMTIzODY6IHBhY2thZ2luZyBkb2VzIG5vdCBmYWlsIGFueW1vcmUgd2hlbiB3cml0aW5nIHRoZSBSRVNPVVJDRVMKKyAgZmlsZS4KKwogLSBJc3N1ZSAjMTMxNTg6IEZpeCBkZWNvZGluZyBhbmQgZW5jb2Rpbmcgb2YgR05VIHRhciBzcGVjaWZpYyBiYXNlLTI1NiBudW1iZXIKICAgZmllbGRzIGluIHRhcmZpbGUuCiAKLS0gSXNzdWUgIzEzMTc3OiAgRnVuY3Rvb2xzIGxydV9jYWNoZSgpIG5vIGxvbmdlciBjYWxscyB0aGUgb3JpZ2luYWwgZnVuY3Rpb24KLSAgaW5zaWRlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyLiAgVGhpcyBtYWtlcyB0cmFjZWJhY2tzIGVhc2llciB0byByZWFkIGJlY2F1c2UKLSAgY2hhaW5lZCBleGNlcHRpb25zIGFyZSBhdm9pZGVkLgotCiAtIElzc3VlICMxMzAyNTogbWltZXR5cGVzIGlzIG5vdyByZWFkaW5nIE1JTUUgdHlwZXMgdXNpbmcgdGhlIFVURi04IGVuY29kaW5nLAogICBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcuCiAKIC0gSXNzdWUgIzEwNjUzOiBPbiBXaW5kb3dzLCB1c2Ugc3RyZnRpbWUoKSBpbnN0ZWFkIG9mIHdjc2Z0aW1lKCkgYmVjYXVzZQogICB3Y3NmdGltZSgpIGRvZXNuJ3QgZm9ybWF0IHRpbWUgem9uZSBjb3JyZWN0bHkuCiAKKy0gSXNzdWUgIzEzMTUwOiBUaGUgdG9rZW5pemUgbW9kdWxlIGRvZXNuJ3QgY29tcGlsZSBsYXJnZSByZWd1bGFyIGV4cHJlc3Npb25zCisgIGF0IHN0YXJ0dXAgYW55bW9yZS4KKwogLSBJc3N1ZSAjMTExNzE6IEZpeCBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSB3aGVuIFB5dGhvbiB3YXMKICAgY29uZmlndXJlZCB3aXRoIGRpZmZlcmVudCBwcmVmaXggYW5kIGV4ZWMtcHJlZml4LgogCi0tIElzc3VlICMxMTI1NDogVGVhY2ggZGlzdHV0aWxzIHRvIGNvbXBpbGUgLnB5YyBhbmQgLnB5byBmaWxlcyBpbgorLSBJc3N1ZSAjMTEyNTQ6IFRlYWNoIGRpc3R1dGlscyBhbmQgcGFja2FnaW5nIHRvIGNvbXBpbGUgLnB5YyBhbmQgLnB5byBmaWxlcyBpbgogICBQRVAgMzE0Ny1jb21wbGlhbnQgX19weWNhY2hlX18gZGlyZWN0b3JpZXMuCiAKLS0gSXNzdWUgIzExMjUwOiBCYWNrIHBvcnQgZml4IGZyb20gMy4zIGJyYW5jaCwgc28gdGhhdCAydG8zIGNhbiBoYW5kbGUgZmlsZXMKLSAgd2l0aCBsaW5lIGZlZWRzLiAgVGhpcyB3YXMgcG9ydGVkIGZyb20gdGhlIHNhbmRib3ggdG8gdGhlIDMuMyBicmFuY2gsIGJ1dAotICBkaWRuJ3QgbWFrZSBpdCBpbnRvIDMuMi4KLQogLSBJc3N1ZSAjNzM2NzogRml4IHBrZ3V0aWwud2Fsa19wYXRocyB0byBza2lwIGRpcmVjdG9yaWVzIHdob3NlCiAgIGNvbnRlbnRzIGNhbm5vdCBiZSByZWFkLgogCistIElzc3VlICMzMTYzOiBUaGUgc3RydWN0IG1vZHVsZSBnZXRzIG5ldyBmb3JtYXQgY2hhcmFjdGVycyAnbicgYW5kICdOJworICBzdXBwb3J0aW5nIEMgaW50ZWdlciB0eXBlcyBgYHNzaXplX3RgYCBhbmQgYGBzaXplX3RgYCwgcmVzcGVjdGl2ZWx5LgorCiAtIElzc3VlICMxMzA5OTogRml4IHNxbGl0ZTMuQ3Vyc29yLmxhc3Ryb3dpZCB1bmRlciBhIFR1cmtpc2ggbG9jYWxlLgogICBSZXBvcnRlZCBhbmQgZGlhZ25vc2VkIGJ5IFRob21hcyBLbHV5dmVyLgogCkBAIC0xMTQ1LDggKzI5NDgsNiBAQAogICBtZXRhY2xhc3MgaXMgcmVnaXN0ZXJlZCB3aXRoIGNvcHlyZWcuICBQYXRjaCBieSBOaWNvbGFzIE0uIFRoacOpcnkgYW5kIENyYWlnCiAgIENpdHJvLgogCi0tIElzc3VlICM0MTQ3OiBtaW5pZG9tJ3MgdG9wcmV0dHl4bWwgbm8gbG9uZ2VyIGFkZHMgd2hpdGVzcGFjZSB0byB0ZXh0IG5vZGVzLgotCiAtIElzc3VlICMxMzAzNDogV2hlbiBkZWNvZGluZyBzb21lIFNTTCBjZXJ0aWZpY2F0ZXMsIHRoZSBzdWJqZWN0QWx0TmFtZQogICBleHRlbnNpb24gY291bGQgYmUgdW5yZXBvcnRlZC4KIApAQCAtMTE1NCwxMyArMjk1NSwyOSBAQAogICB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMsIGxpa2UgYidceDAnLgogICAoT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLikKIAotLSBJc3N1ZSAjODkzMzogZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyB3aWxsIG5vdyBjb3JyZWN0bHkgcmVwb3J0Ci0gIE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IgRG93bmxvYWQtVVJMIGZpZWxkIGlzCi0gIHByZXNlbnQuCistIElzc3VlICMxMjMwNjogRXhwb3NlIHRoZSBydW50aW1lIHZlcnNpb24gb2YgdGhlIHpsaWIgQyBsaWJyYXJ5IGFzIGEgY29uc3RhbnQsCisgIFpMSUJfUlVOVElNRV9WRVJTSU9OLCBpbiB0aGUgemxpYiBtb2R1bGUuIFBhdGNoIGJ5IFRvcnN0ZW4gTGFuZHNjaG9mZi4KIAotLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIG5vdyByZWFkcyBhbmQgd3JpdGVzIGVnZy1pbmZvIGZpbGVzIHVzaW5nIFVURi04LAorLSBJc3N1ZSAjMTI5NTk6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCB0byBjb2xsZWN0aW9ucy5fX2FsbF9fLgorCistIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIGFuZCBwYWNrYWdpbmcncyBNRVRBREFUQSBmaWxlcyB3aWxsCisgIG5vdyBjb3JyZWN0bHkgcmVwb3J0IE1ldGFkYXRhLVZlcnNpb246IDEuMSBpbnN0ZWFkIG9mIDEuMCBpZiBhIENsYXNzaWZpZXIgb3IKKyAgRG93bmxvYWQtVVJMIGZpZWxkIGlzIHByZXNlbnQuCisKKy0gSXNzdWUgIzEyNTY3OiBBZGQgY3Vyc2VzLnVuZ2V0X3djaCgpIGZ1bmN0aW9uLiBQdXNoIGEgY2hhcmFjdGVyIHNvIHRoZSBuZXh0CisgIGdldF93Y2goKSB3aWxsIHJldHVybiBpdC4KKworLSBJc3N1ZSAjOTU2MTogZGlzdHV0aWxzIGFuZCBwYWNrYWdpbmcgbm93IHdyaXRlcyBlZ2ctaW5mbyBmaWxlcyB1c2luZyBVVEYtOCwKICAgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLgogCistIElzc3VlICM4Mjg2OiBUaGUgZGlzdHV0aWxzIGNvbW1hbmQgc2Rpc3Qgd2lsbCBwcmludCBhIHdhcm5pbmcgbWVzc2FnZSBpbnN0ZWFkCisgIG9mIGNyYXNoaW5nIHdoZW4gYW4gaW52YWxpZCBwYXRoIGlzIGdpdmVuIGluIHRoZSBtYW5pZmVzdCB0ZW1wbGF0ZS4KKworLSBJc3N1ZSAjMTI4NDE6IHRhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIKKyAgYW5kIGdyb3VwIGlkcyBvbiBleHRyYWN0aW9uLiBJZiBvbmUgb2YgdGhlbSBkaWQgbm90IGV4aXN0IHRoZSByZXNwZWN0aXZlIGlkCisgIG9mIHRoZSBjdXJyZW50IHVzZXIgKGkuZS4gcm9vdCkgd2FzIHVzZWQgZm9yIHRoZSBmaWxlIGFuZCBvd25lcnNoaXAKKyAgaW5mb3JtYXRpb24gd2FzIGxvc3QuCisKIC0gSXNzdWUgIzEyODg4OiBGaXggYSBidWcgaW4gSFRNTFBhcnNlci51bmVzY2FwZSB0aGF0IHByZXZlbnRlZCBpdCB0byBlc2NhcGUKICAgbW9yZSB0aGFuIDEyOCBlbnRpdGllcy4gIFBhdGNoIGJ5IFBldGVyIE90dGVuLgogCkBAIC0xMTY4LDYgKzI5ODUsMTYgQEAKIAogLSBJc3N1ZSAjMTI2MzY6IElETEUgcmVhZHMgdGhlIGNvZGluZyBjb29raWUgd2hlbiBleGVjdXRpbmcgYSBQeXRob24gc2NyaXB0LgogCistIElzc3VlICMxMjQ5NDogT24gZXJyb3IsIGNhbGwoKSwgY2hlY2tfY2FsbCgpLCBjaGVja19vdXRwdXQoKSBhbmQKKyAgZ2V0c3RhdHVzb3V0cHV0KCkgZnVuY3Rpb25zIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cga2lsbCB0aGUgcHJvY2VzcywKKyAgcmVhZCBpdHMgc3RhdHVzICh0byBhdm9pZCB6b21iaXMpIGFuZCBjbG9zZSBwaXBlcy4KKworLSBJc3N1ZSAjMTI3MjA6IEV4cG9zZSBsb3ctbGV2ZWwgTGludXggZXh0ZW5kZWQgZmlsZSBhdHRyaWJ1dGUgZnVuY3Rpb25zIGluIG9zLgorCistIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKKyAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LiAgVGhlIHBhY2thZ2luZyBjb21tYW5kcworICB3ZXJlIGZpeGVkIHRvby4KKwogLSBJc3N1ZSAjMTI4NDc6IEZpeCBhIGNyYXNoIHdpdGggbmVnYXRpdmUgUFVUIGFuZCBMT05HX0JJTlBVVCBhcmd1bWVudHMgaW4KICAgdGhlIEMgcGlja2xlIGltcGxlbWVudGF0aW9uLgogCkBAIC0xMTc3LDIwMSArMzAwNCw0NyBAQAogLSBJc3N1ZSAjMTIyODc6IEZpeCBhIHN0YWNrIGNvcnJ1cHRpb24gaW4gb3NzYXVkaW9kZXYgbW9kdWxlIHdoZW4gdGhlIEZEIGlzCiAgIGdyZWF0ZXIgdGhhbiBGRF9TRVRTSVpFLgogCistIElzc3VlICMxMjgzOTogRml4IGNyYXNoIGluIHpsaWIgbW9kdWxlIGR1ZSB0byB2ZXJzaW9uIG1pc21hdGNoLgorICBGaXggYnkgUmljaGFyZCBNLiBUZXcuCisKKy0gSXNzdWUgIzk5MjM6IFRoZSBtYWlsY2FwIG1vZHVsZSBub3cgY29ycmVjdGx5IHVzZXMgdGhlIHBsYXRmb3JtIHBhdGgKKyAgc2VwYXJhdG9yIGZvciB0aGUgTUFJTENBUCBlbnZpcm9ubWVudCB2YXJpYWJsZSBvbiBub24tUE9TSVggcGxhdGZvcm1zLgorCistIElzc3VlICMxMjgzNTogRm9sbG93IHVwIHRvICM2NTYwIHRoYXQgdW5jb25kaXRpb25hbGx5IHByZXZlbnRzIHVzZSBvZiB0aGUKKyAgdW5lbmNyeXB0ZWQgc2VuZG1zZy9yZWN2bXNnIEFQSXMgb24gU1NMIHdyYXBwZWQgc29ja2V0cy4gUGF0Y2ggYnkgRGF2aWQKKyAgV2F0c29uLgorCistIElzc3VlICMxMjgwMzogU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW4oKSBub3cgYWNjZXB0cyBhIHBhc3N3b3JkIGFyZ3VtZW50CisgIHRvIGJlIHVzZWQgaWYgdGhlIHByaXZhdGUga2V5IGlzIGVuY3J5cHRlZC4gIFBhdGNoIGJ5IEFkYW0gU2ltcGtpbnMuCisKIC0gSXNzdWUgIzExNjU3OiBGaXggc2VuZGluZyBmaWxlIGRlc2NyaXB0b3JzIG92ZXIgMjU1IG92ZXIgYSBtdWx0aXByb2Nlc3NpbmcKICAgUGlwZS4KIAotLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgorLSBJc3N1ZSAjMTI4MTE6IHRhYm5hbm55LmNoZWNrKCkgbm93IHByb21wdGx5IGNsb3NlcyBjaGVja2VkIGZpbGVzLiBQYXRjaCBieQorICBBbnRob255IEJyaWdncy4KKworLSBJc3N1ZSAjNjU2MDogVGhlIHNlbmRtc2cvcmVjdm1zZyBBUEkgaXMgbm93IGV4cG9zZWQgYnkgdGhlIHNvY2tldCBtb2R1bGUKKyAgd2hlbiBwcm92aWRlZCBieSB0aGUgdW5kZXJseWluZyBwbGF0Zm9ybSwgc3VwcG9ydGluZyBwcm9jZXNzaW5nIG9mCisgIGFuY2lsbGFyeSBkYXRhIGluIHB1cmUgUHl0aG9uIGNvZGUuIFBhdGNoIGJ5IERhdmlkIFdhdHNvbiBhbmQgSGVpa28gV3VuZHJhbS4KKworLSBJc3N1ZSAjMTIzMjY6IE9uIExpbnV4LCBzeXMucGxhdGZvcm0gZG9lc24ndCBjb250YWluIHRoZSBtYWpvciB2ZXJzaW9uCisgIGFueW1vcmUuIEl0IGlzIG5vdyBhbHdheXMgJ2xpbnV4JywgaW5zdGVhZCBvZiAnbGludXgyJyBvciAnbGludXgzJyBkZXBlbmRpbmcKKyAgb24gdGhlIExpbnV4IHZlcnNpb24gdXNlZCB0byBidWlsZCBQeXRob24uCiAKIC0gSXNzdWUgIzEyMjEzOiBGaXggYSBidWZmZXJpbmcgYnVnIHdpdGggaW50ZXJsZWF2ZWQgcmVhZHMgYW5kIHdyaXRlcyB0aGF0CiAgIGNvdWxkIGFwcGVhciBvbiBCdWZmZXJlZFJhbmRvbSBzdHJlYW1zLgogCistIElzc3VlICMxMjc3ODogUmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbiB3aGVuIEpTT04tZW5jb2RpbmcgYSBsYXJnZQorICBjb250YWluZXIgb2YgbWFueSBzbWFsbCBvYmplY3RzLgorCiAtIElzc3VlICMxMjY1MDogRml4IGEgcmFjZSBjb25kaXRpb24gd2hlcmUgYSBzdWJwcm9jZXNzLlBvcGVuIGNvdWxkIGxlYWsKICAgcmVzb3VyY2VzIChGRC96b21iaWUpIHdoZW4ga2lsbGVkIGF0IHRoZSB3cm9uZyB0aW1lLgogCi0tIElzc3VlICMxMDg2MDogaHR0cC5jbGllbnQgbm93IGNvcnJlY3RseSBoYW5kbGVzIGFuIGVtcHR5IHBvcnQgYWZ0ZXIgcG9ydAotICBkZWxpbWl0ZXIgaW4gVVJMcy4KKy0gSXNzdWUgIzEyNzQ0OiBGaXggaW5lZmZpY2llbnQgcmVwcmVzZW50YXRpb24gb2YgaW50ZWdlcnMgYmV0d2VlbiAyKiozMSBhbmQKKyAgMioqNjMgb24gc3lzdGVtcyB3aXRoIGEgNjQtYml0IEMgImxvbmciLgogCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KLQotLSBJc3N1ZSAjMTMzMjY6IENsZWFuIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGNvcnJlY3RseSBvbiBPcGVuQlNELgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgotICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgotCi0tIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCi0gIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCi0gIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKLSAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgotCi0tIElzc3VlICMxMzYyODogcHl0aG9uLWdkYi5weSBpcyBub3cgYWJsZSB0byByZXRyaWV2ZSBtb3JlIGZyYW1lcyBpbiB0aGUgUHl0aG9uCi0gIHRyYWNlYmFjayBpZiBQeXRob24gaXMgb3B0aW1pemVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0Ci0KLS0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCi0KLS0gSXNzdWUgIzEzNzI1OiBGaXggcmVncnRlc3QgdG8gcmVjb2duaXplIHRoZSBkb2N1bWVudGVkIC1kIGZsYWcuCi0gIFBhdGNoIGJ5IEVybm8gVHVraWEuCi0KLS0gSXNzdWUgIzEzMzA0OiBTa2lwIHRlc3QgY2FzZSBpZiB1c2VyIHNpdGUtcGFja2FnZXMgZGlzYWJsZWQgKC1zIG9yCi0gIFBZVEhPTk5PVVNFUlNJVEUpLiAgKFBhdGNoIGJ5IENhcmwgTWV5ZXIpCi0KLS0gSXNzdWUgIzEzMjE4OiBGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KLQotLSBJc3N1ZSAjMTI4MjE6IEZpeCB0ZXN0X2ZjbnRsIGZhaWx1cmVzIG9uIE9wZW5CU0QgNS4KLQotLSBSZS1lbmFibGUgbGliMnRvMydzIHRlc3RfcGFyc2VyLnB5IHRlc3RzLCB0aG91Z2ggd2l0aCBhbiBleHBlY3RlZCBmYWlsdXJlCi0gIChzZWUgaXNzdWUgMTMxMjUpLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgotICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzk5NzU6IHNvY2tldDogRml4IGluY29ycmVjdCB1c2Ugb2YgZmxvd2luZm8gYW5kIHNjb3BlX2lkLiBQYXRjaCBieQotICBWaWxtb3MgTmViZWhhai4KLQotLSBJc3N1ZSAjMTMxNTk6IEZpbGVJTyBhbmQgQloyRmlsZSBub3cgdXNlIGEgbGluZWFyLXRpbWUgYnVmZmVyIGdyb3d0aAotICBzdHJhdGVneSBpbnN0ZWFkIG9mIGEgcXVhZHJhdGljLXRpbWUgb25lLgotCi0tIElzc3VlICMxMzA3MDogRml4IGEgY3Jhc2ggd2hlbiBhIFRleHRJT1dyYXBwZXIgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlCi0gIHdvdWxkIGJlIGZpbmFsaXplZCBhZnRlciB0aGUgcmVmZXJlbmNlIHRvIGl0cyB1bmRlcmx5aW5nIEJ1ZmZlcmVkUldQYWlyJ3MKLSAgd3JpdGVyIGdvdCBjbGVhcmVkIGJ5IHRoZSBHQy4KLQotLSBJc3N1ZSAjMTI4ODE6IGN0eXBlczogRml4IHNlZ2ZhdWx0IHdpdGggbGFyZ2Ugc3RydWN0dXJlIGZpZWxkIG5hbWVzLgotCi0tIElzc3VlICMxMzA1ODogb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieQotICBUaG9tYXMgSmFyb3NjaC4KLQotLSBJc3N1ZSAjMTMwMTM6IGN0eXBlczogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gUHlDQXJyYXlUeXBlX2Zyb21fY3R5cGUuCi0gIFRoYW5rcyB0byBTdW1hbiBTYWhhIGZvciBmaW5kaW5nIHRoZSBidWcgYW5kIHByb3ZpZGluZyBhIHBhdGNoLgotCi0tIElzc3VlICMxMzAyMjogRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdAotICBmaWxlIGRlc2NyaXB0b3Igd2FzIGFjdHVhbGx5IHJlY2VpdmVkLgotCi0tIElzc3VlICMxMjQ4MzogY3R5cGVzOiBGaXggYSBjcmFzaCB3aGVuIHRoZSBkZXN0cnVjdGlvbiBvZiBhIGNhbGxiYWNrCi0gIG9iamVjdCB0cmlnZ2VycyB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCi0KLS0gSXNzdWUgIzEyOTUwOiBGaXggcGFzc2luZyBmaWxlIGRlc2NyaXB0b3JzIGluIG11bHRpcHJvY2Vzc2luZywgdW5kZXIKLSAgT3BlbkluZGlhbmEvSWxsdW1vcy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlcyAjMTM0OTEgYW5kICMxMzk5NTogRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4KLSAgSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5IEpvaGFubmVzIFZvZ2VsLgotCi0tIElzc3VlICMxMzQwMjogRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgotCi0tIElzc3VlICMxMzg4MzogUFlUSE9OQ0FTRU9LIGFsc28gdXNlZCBvbiBPUyBYIGFuZCBPUy8yLgotCi0tIElzc3VlICMxMjk0OTogRG9jdW1lbnQgdGhlIGt3b25seWFyZ2NvdW50IGFyZ3VtZW50IGZvciB0aGUgUHlDb2RlX05ldwotICBDIEFQSSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMjEzNDogVGhlIHRva2VuaXplIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gY2xhcmlmaWVkIHRvIGV4cGxhaW4gd2h5Ci0gIGFsbCBvcGVyYXRvciBhbmQgZGVsaW1pdGVyIHRva2VucyBhcmUgdHJlYXRlZCBhcyB0b2tlbi5PUCB0b2tlbnMuCi0KLS0gSXNzdWUgIzEzNTEzOiBGaXggaW8uSU9CYXNlIGRvY3VtZW50YXRpb24gdG8gY29ycmVjdGx5IGxpbmsgdG8gdGhlCi0gIGlvLklPQmFzZS5yZWFkbGluZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgotCi0tIElzc3VlICMxMzIzNzogUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlCi0gIGZ1bmN0aW9ucyBhbmQgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVkIGFyZ3VtZW50cyB0byBQb3Blbi4KLQotLSBJc3N1ZSAjMTMxNDE6IERlbW9uc3RyYXRlIHJlY29tbWVuZGVkIHN0eWxlIGZvciBzb2NrZXRzZXJ2ZXIgZXhhbXBsZXMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yLjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDMtU2VwLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjMyNjogc3lzLnBsYXRmb3JtIGlzIG5vdyBhbHdheXMgJ2xpbnV4Micgb24gTGludXgsIGV2ZW4gaWYgUHl0aG9uCi0gIGlzIGNvbXBpbGVkIG9uIExpbnV4IDMuCi0KLS0gQWNjZXB0IGJ5dGVzIGZvciB0aGUgQVNUIHN0cmluZyB0eXBlLiBUaGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBhIHByb3BlciBmaXggaW4KLSAgMy4zLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzgyODY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZCBzZGlzdCB3aWxsIHByaW50IGEgd2FybmluZyBtZXNzYWdlIGluc3RlYWQKLSAgb2YgY3Jhc2hpbmcgd2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgotCi0tIElzc3VlICMxMjg0MTogdGFyZmlsZSB1bm5lY2Vzc2FyaWx5IGNoZWNrZWQgdGhlIGV4aXN0ZW5jZSBvZiBudW1lcmljYWwgdXNlcgotICBhbmQgZ3JvdXAgaWRzIG9uIGV4dHJhY3Rpb24uIElmIG9uZSBvZiB0aGVtIGRpZCBub3QgZXhpc3QgdGhlIHJlc3BlY3RpdmUgaWQKLSAgb2YgdGhlIGN1cnJlbnQgdXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcAotICBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KLQotLSBJc3N1ZSAjMTA5NDY6IFRoZSBkaXN0dXRpbHMgY29tbWFuZHMgYmRpc3RfZHVtYiwgYmRpc3Rfd2luaW5zdCBhbmQgYmRpc3RfbXNpCi0gIG5vdyByZXNwZWN0IGEgLS1za2lwLWJ1aWxkIG9wdGlvbiBnaXZlbiB0byBiZGlzdC4KLQotLSBJc3N1ZSAjMTI4Mzk6IEZpeCBjcmFzaCBpbiB6bGliIG1vZHVsZSBkdWUgdG8gdmVyc2lvbiBtaXNtYXRjaC4KLSAgRml4IGJ5IFJpY2hhcmQgTS4gVGV3LgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTY1MTogRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0bwotICBzb21lIGZ1bmN0aW9ucyBsaWtlIGZpbGUud3JpdGUoKS4KLQotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4yIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNC1BdWctMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNzMyOiBJbiBuYXJyb3cgdW5pY29kZSBidWlsZHMsIGFsbG93IFVuaWNvZGUgaWRlbnRpZmllcnMgd2hpY2ggZmFsbAotICBvdXRzaWRlIHRoZSBCTVAuCi0KLS0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTEzMjE6IEZpeCBhIGNyYXNoIHdpdGggbXVsdGlwbGUgaW1wb3J0cyBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgd2hlbgotICBlbWJlZGRpbmcgUHl0aG9uLiAgUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgotCi0tIFZlcmlmeSB0aGUgdHlwZXMgb2YgQVNUIHN0cmluZ3MgYW5kIGlkZW50aWZpZXJzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyIGJlZm9yZQotICBjb21waWxpbmcgdGhlbS4KLQotLSBJc3N1ZSAjMTI1Nzk6IHN0ci5mb3JtYXRfbWFwKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaWYgdXNlZCBvbiBhCi0gIGZvcm1hdCBzdHJpbmcgdGhhdCBjb250YWlucyBwb3NpdGlvbmFsIGZpZWxkcy4gSW5pdGlhbCBwYXRjaCBieQotICBKdWxpYW4gQmVybWFuLgotCi0tIElzc3VlICMxMTYyNzogRml4IHNlZ2ZhdWx0IHdoZW4gX19uZXdfXyBvbiBhIGV4Y2VwdGlvbiByZXR1cm5zIGEKLSAgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KLQotLSBJc3N1ZSAjMTIxNDk6IFVwZGF0ZSB0aGUgbWV0aG9kIGNhY2hlIGFmdGVyIGEgdHlwZSdzIGRpY3Rpb25hcnkgZ2V0cwotICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCi0gIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKLSAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKLSAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgotCi0tIFdoZW4gYSBnZW5lcmF0b3IgeWllbGRzLCBkbyBub3QgcmV0YWluIHRoZSBjYWxsZXIncyBleGNlcHRpb24gc3RhdGUgb24gdGhlCi0gIGdlbmVyYXRvci4KLQotLSBJc3N1ZSAjMTI0NzU6IFByZXZlbnQgZ2VuZXJhdG9ycyBmcm9tIGxlYWtpbmcgdGhlaXIgZXhjZXB0aW9uIHN0YXRlIGludG8gdGhlCi0gIGNhbGxlcidzIGZyYW1lIGFzIHRoZXkgcmV0dXJuIGZvciB0aGUgbGFzdCB0aW1lLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjY0NjogQWRkIGFuICdlb2YnIGF0dHJpYnV0ZSB0byB6bGliLkRlY29tcHJlc3MsIHRvIG1ha2UgaXQgZWFzaWVyIHRvCisgIGRldGVjdCB0cnVuY2F0ZWQgaW5wdXQgc3RyZWFtcy4KIAogLSBJc3N1ZSAjMTE1MTM6IEZpeCBleGNlcHRpb24gaGFuZGxpbmcgYGB0YXJmaWxlLlRhckZpbGUuZ3pvcGVuKClgYCB3aGVuCiAgIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCkBAIC0xMzg0LDE4ICszMDU3LDQzIEBACiAtIElzc3VlICMxMjU0MDogUHJldmVudCB6b21iaWUgSURMRSBwcm9jZXNzZXMgb24gV2luZG93cyBkdWUgdG8gY2hhbmdlcwogICBpbiBvcy5raWxsKCkuCiAKKy0gSXNzdWUgIzEzMTIxOiBhZGQgc3VwcG9ydCBmb3IgaW5wbGFjZSBtYXRoIG9wZXJhdG9ycyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgorCistIEFkZCBzdXBwb3J0IGZvciB1bmFyeSBwbHVzIGFuZCB1bmFyeSBtaW51cyB0byBjb2xsZWN0aW9ucy5Db3VudGVyLgorCiAtIElzc3VlICMxMjY4MzogdXJscGFyc2UgdXBkYXRlZCB0byBpbmNsdWRlIHN2biBhcyBzY2hlbWVzIHRoYXQgdXNlcyByZWxhdGl2ZQogICBwYXRocy4gKHN2biBmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCiAKKy0gSXNzdWUgIzEyNjU1OiBFeHBvc2UgZnVuY3Rpb25zIGZyb20gc2NoZWQuaCBpbiB0aGUgb3MgbW9kdWxlOiBzY2hlZF95aWVsZCgpLAorICBzY2hlZF9zZXRzY2hlZHVsZXIoKSwgc2NoZWRfZ2V0c2NoZWR1bGVyKCksIHNjaGVkX3NldHBhcmFtKCksCisgIHNjaGVkX2dldF9taW5fcHJpb3JpdHkoKSwgc2NoZWRfZ2V0X21heF9wcmlvcml0eSgpLCBzY2hlZF9ycl9nZXRfaW50ZXJ2YWwoKSwKKyAgc2NoZWRfZ2V0YWZmaW5pdHkoKSwgc2NoZWRfc2V0YWZmaW5pdHkoKS4KKworLSBBZGQgVGhyZWFkRXJyb3IgdG8gdGhyZWFkaW5nLl9fYWxsX18uCisKIC0gSXNzdWVzICMxMTEwNCwgIzg2ODg6IEZpeCB0aGUgYmVoYXZpb3Igb2YgZGlzdHV0aWxzJyBzZGlzdCBjb21tYW5kIHdpdGgKICAgbWFudWFsbHktbWFpbnRhaW5lZCBNQU5JRkVTVCBmaWxlcy4KIAorLSBJc3N1ZSAjMTEyODE6IHNtdHBsaWIuU1RNUCBnZXRzIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciwgd2hpY2ggYWRkcyB0aGUKKyAgYWJpbGl0eSB0byBiaW5kIHRvIHNwZWNpZmljIHNvdXJjZSBhZGRyZXNzIG9uIGEgbWFjaGluZSB3aXRoIG11bHRpcGxlCisgIGludGVyZmFjZXMuIFBhdGNoIGJ5IFBhdWxvIFNjYXJkaW5lLgorCiAtIElzc3VlICMxMjQ2NDogdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5LmNsZWFudXAoKSBzaG91bGQgbm90IGZvbGxvdwogICBzeW1saW5rczogZml4IGl0LiBQYXRjaCBieSBQZXRyaSBMZWh0aW5lbi4KIAogLSBJc3N1ZSAjODg4NzogInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykKICAgaW4gUHl0aG9uIGNvZGUpIG5vdyBmaW5kcyB0aGUgZG9jIG9mIHRoZSBtZXRob2QuCiAKKy0gSXNzdWUgIzEwOTY4OiBSZW1vdmUgaW5kaXJlY3Rpb24gaW4gdGhyZWFkaW5nLiAgVGhlIHB1YmxpYyBuYW1lcyAoRXZlbnQsCisgIENvbmRpdGlvbiwgZXRjLikgdXNlZCB0byBiZSBmYWN0b3J5IGZ1bmN0aW9ucyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIGhpZGRlbgorICBjbGFzc2VzIChfRXZlbnQsIF9Db25kaXRpb24sIGV0Yy4pLCBiZWNhdXNlIChpZiBHdWlkbyByZWNhbGxzIGNvcnJlY3RseSkgdGhpcworICBjb2RlIHByZS1kYXRlcyB0aGUgYWJpbGl0eSB0byBzdWJjbGFzcyBleHRlbnNpb24gdHlwZXMuICBJdCBpcyBub3cgcG9zc2libGUKKyAgdG8gaW5oZXJpdCBmcm9tIHRoZXNlIGNsYXNzZXMsIHdpdGhvdXQgaGF2aW5nIHRvIGltcG9ydCB0aGUgcHJpdmF0ZQorICB1bmRlcnNjb3JlZCBuYW1lcyBsaWtlIG11bHRpcHJvY2Vzc2luZyBkaWQuCisKKy0gSXNzdWUgIzk3MjM6IEFkZCBzaGxleC5xdW90ZSBmdW5jdGlvbnMsIHRvIGVzY2FwZSBmaWxlbmFtZXMgYW5kIGNvbW1hbmQKKyAgbGluZXMuCisKIC0gSXNzdWUgIzEyNjAzOiBGaXggcHlkb2Muc3lub3BzaXMoKSBvbiBmaWxlcyB3aXRoIG5vbi1uZWdhdGl2ZSBzdF9tdGltZS4KIAogLSBJc3N1ZSAjMTI1MTQ6IFVzZSB0cnkvZmluYWxseSB0byBhc3N1cmUgdGhlIHRpbWVpdCBtb2R1bGUgcmVzdG9yZXMgZ2FyYmFnZQpAQCAtMTQxMCwxOSArMzEwOCwzNSBAQAogLSBJc3N1ZSAjMTI1NzY6IEZpeCB1cmxvcGVuIGJlaGF2aW9yIG9uIHNpdGVzIHdoaWNoIGRvIG5vdCBzZW5kIChvciBvYmZ1c2NhdGVzKQogICBDb25uZWN0aW9uOmNsb3NlIGhlYWRlci4KIAorLSBJc3N1ZSAjMTIxMDI6IERvY3VtZW50IHRoYXQgYnVmZmVyZWQgZmlsZXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBiZWluZyB1c2VkCisgIHdpdGggbW1hcC4gUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KKworLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCisKIC0gSXNzdWUgIzE4MTM6IEZpeCBjb2RlYyBsb29rdXAgdW5kZXIgVHVya2lzaCBsb2NhbGVzLgogCiAtIElzc3VlICMxMjU5MTogSW1wcm92ZSBzdXBwb3J0IG9mICJ1bml2ZXJzYWwgbmV3bGluZXMiIGluIHRoZSBzdWJwcm9jZXNzCiAgIG1vZHVsZTogdGhlIHBpcGVkIHN0cmVhbXMgY2FuIG5vdyBiZSBwcm9wZXJseSByZWFkIGZyb20gb3Igd3JpdHRlbiB0by4KIAogLSBJc3N1ZSAjMTI1OTE6IEFsbG93IGlvLlRleHRJT1dyYXBwZXIgdG8gd29yayB3aXRoIHJhdyBJTyBvYmplY3RzICh3aXRob3V0Ci0gIGEgcmVhZDEoKSBtZXRob2QpLCBhbmQgYWRkIGFuIHVuZG9jdW1lbnRlZCAqd3JpdGVfdGhyb3VnaCogcGFyYW1ldGVyIHRvCi0gIG1hbmRhdGUgdW5idWZmZXJlZCB3cml0ZXMuCi0KLS0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpIGNsYW1wcyB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KKyAgYSByZWFkMSgpIG1ldGhvZCksIGFuZCBhZGQgYSAqd3JpdGVfdGhyb3VnaCogcGFyYW1ldGVyIHRvIG1hbmRhdGUKKyAgdW5idWZmZXJlZCB3cml0ZXMuCiAKIC0gSXNzdWUgIzEwODgzOiBGaXggc29ja2V0IGxlYWtzIGluIHVybGxpYi5yZXF1ZXN0IHdoZW4gdXNpbmcgRlRQLgogCistIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KKworLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgorCistIElzc3VlICMxMjU1MTogUHJvdmlkZSBhIGdldF9jaGFubmVsX2JpbmRpbmcoKSBtZXRob2Qgb24gU1NMIHNvY2tldHMgc28gYXMKKyAgdG8gZ2V0IGNoYW5uZWwgYmluZGluZyBkYXRhIGZvciB0aGUgY3VycmVudCBTU0wgc2Vzc2lvbiAob25seSB0aGUKKyAgInRscy11bmlxdWUiIGNoYW5uZWwgYmluZGluZyBpcyBpbXBsZW1lbnRlZCkuICBUaGlzIGFsbG93cyB0aGUgaW1wbGVtZW50YXRpb24KKyAgb2YgY2VydGFpbiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHN1Y2ggYXMgU0NSQU0tU0hBLTEtUExVUy4gIFBhdGNoIGJ5CisgIEphY2VrIEtvbmllY3pueS4KKworLSBJc3N1ZSAjNjY1MTk0OiBlbWFpbC51dGlscyBub3cgaGFzIGZvcm1hdF9kYXRldGltZSBhbmQgcGFyc2VkYXRlX3RvX2RhdGV0aW1lCisgIGZ1bmN0aW9ucywgYWxsb3dpbmcgZm9yIHJvdW5kIHRyaXBwaW5nIG9mIFJGQzI4MjIgZm9ybWF0IGRhdGVzLgorCiAtIElzc3VlICMxMjU3MTogQWRkIGEgcGxhdC1saW51eDMgZGlyZWN0b3J5IG1pcnJvcmluZyB0aGUgcGxhdC1saW51eDIKICAgZGlyZWN0b3J5LCBzbyB0aGF0ICJpbXBvcnQgRExGQ04iIGFuZCBvdGhlciBzaW1pbGFyIGltcG9ydHMgd29yayBvbgogICBMaW51eCAzLjAuCkBAIC0xNDMwLDE4NCArMzE0NCw5MSBAQAogLSBJc3N1ZSAjNzQ4NDogc210cGxpYiBubyBsb25nZXIgcHV0cyA8PiBhcm91bmQgYWRkcmVzc2VzIGluIFZSRlkgYW5kIEVYUE4KICAgY29tbWFuZHM7IHRoZXkgYXJlbid0IHJlcXVpcmVkIGFuZCBpbiBmYWN0IHBvc3RmaXggZG9lc24ndCBzdXBwb3J0IHRoYXQgZm9ybS4KIAotLSBDbG9zZSB0aGUgY2FsbCBxdWV1ZSBpbiBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvciB3aGVuCi0gIHNodXRkb3duKCkgaXMgY2FsbGVkLCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB0byBraWNrIGluLgorLSBJc3N1ZSAjMTIyNzM6IFJlbW92ZSBhc3QuX192ZXJzaW9uX18uIEFTVCBjaGFuZ2VzIGNhbiBiZSBhY2NvdW50ZWQgZm9yIGJ5CisgIGNoZWNraW5nIHN5cy52ZXJzaW9uX2luZm8gb3Igc3lzLl9tZXJjdXJpYWwuCisKKy0gU2lsZW5jZSBzcHVyaW91cyAiYnJva2VuIHBpcGUiIHRyYWNlYmFja3Mgd2hlbiBzaHV0dGluZyBkb3duIGEKKyAgUHJvY2Vzc1Bvb2xFeGVjdXRvci4KKworLSBGaXggcG90ZW50aWFsIHJlc291cmNlIGxlYWtzIGluIGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yCisgIGJ5IGpvaW5pbmcgYWxsIHF1ZXVlcyBhbmQgcHJvY2Vzc2VzIHdoZW4gc2h1dGRvd24oKSBpcyBjYWxsZWQuCisKKy0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5CisgIEFuZHJlYXMgU3TDvGhyay4KKworLSBJc3N1ZSAjMTEzMjE6IEZpeCBhIGNyYXNoIHdpdGggbXVsdGlwbGUgaW1wb3J0cyBvZiB0aGUgX3BpY2tsZSBtb2R1bGUgd2hlbgorICBlbWJlZGRpbmcgUHl0aG9uLiAgUGF0Y2ggYnkgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICM2NzU1OiBBZGQgZ2V0X3djaCgpIG1ldGhvZCB0byBjdXJzZXMud2luZG93IGNsYXNzLiBQYXRjaCBieSBJw7FpZ28KKyAgU2VybmEuCisKKy0gQWRkIGNnaS5jbG9zZWxvZygpIGZ1bmN0aW9uIHRvIGNsb3NlIHRoZSBsb2cgZmlsZS4KIAogLSBJc3N1ZSAjMTI1MDI6IGFzeW5jb3JlOiBmaXggcG9sbGluZyBsb29wIHdpdGggQUZfVU5JWCBzb2NrZXRzLgogCi0tIElzc3VlICM0Mzc2OiBjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIHdpdGggYW4gZW5kaWFubmVzcwotICBkaWZmZXJlbnQgdGhhbiB0aGF0IG9mIHRoZSBwYXJlbnQgc3RydWN0dXJlLiAgUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KKy0gSXNzdWUgIzQzNzY6IGN0eXBlcyBub3cgc3VwcG9ydHMgbmVzdGVkIHN0cnVjdHVyZXMgaW4gYSBlbmRpYW4gZGlmZmVyZW50IHRoYW4KKyAgdGhlIHBhcmVudCBzdHJ1Y3R1cmUuIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCiAKIC0gUmFpc2UgVmFsdWVFcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZSBfQ0hVTktfU0laRSBhdHRyaWJ1dGUgb2YgYQogICBUZXh0SU9XcmFwcGVyIHRvIGEgaHVnZSB2YWx1ZSwgbm90IFR5cGVFcnJvci4KIAotLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKLSAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCistIElzc3VlICMxMjUwNDogQ2xvc2UgZmlsZSBoYW5kbGVzIGluIGEgdGltZWx5IG1hbm5lciBpbiBwYWNrYWdpbmcuZGF0YWJhc2UuCisgIFRoaXMgZml4ZXMgYSBidWcgd2l0aCB0aGUgcmVtb3ZlICh1bmluc3RhbGwpIGZlYXR1cmUgb24gV2luZG93cy4KKworLSBJc3N1ZXMgIzEyMTY5IGFuZCAjMTA1MTA6IEZhY3RvciBvdXQgY29kZSB1c2VkIGJ5IHZhcmlvdXMgcGFja2FnaW5nIGNvbW1hbmRzCisgIHRvIG1ha2UgSFRUUCBQT1NUIHJlcXVlc3RzLCBhbmQgbWFrZSBzdXJlIGl0IHVzZXMgQ1JMRi4KKworLSBJc3N1ZSAjMTIwMTY6IE11bHRpYnl0ZSBDSksgZGVjb2RlcnMgbm93IHJlc3luY2hyb25pemUgZmFzdGVyLiBUaGV5IG9ubHkKKyAgaWdub3JlIHRoZSBmaXJzdCBieXRlIG9mIGFuIGludmFsaWQgYnl0ZSBzZXF1ZW5jZS4gRm9yIGV4YW1wbGUsCisgIGInXHhmZlxuJy5kZWNvZGUoJ2diMjMxMicsICdyZXBsYWNlJykgZ2l2ZXMgJ1x1ZmZmZFxuJyBpbnN0ZWFkIG9mICdcdWZmZmQnLgorCistIElzc3VlICMxMjQ1OTogdGltZS5zbGVlcCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIHRoZSBzbGVlcCBsZW5ndGggaXMKKyAgbmVnYXRpdmUsIGluc3RlYWQgb2YgYW4gaW5maW5pdGUgc2xlZXAgb24gV2luZG93cyBvciByYWlzaW5nIGFuIElPRXJyb3Igb24KKyAgTGludXggZm9yIGV4YW1wbGUsIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIG9uIGFsbCBwbGF0Zm9ybXMuCiAKIC0gSXNzdWUgIzEyNDUxOiBweWRvYzogaHRtbF9nZXRmaWxlKCkgbm93IHVzZXMgdG9rZW5pemUub3BlbigpIHRvIHN1cHBvcnQKLSAgUHl0aG9uIG1vZHVsZXMgdXNpbmcgYSBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiBVVEYtOCAocmVhZGluZyB0aGUgY29kaW5nCi0gIGNvb2tpZSBvZiB0aGUgbW9kdWxlKS4KKyAgUHl0aG9uIHNjcmlwdHMgdXNpbmcgYSBlbmNvZGluZyBkaWZmZXJlbnQgdGhhbiBVVEYtOCAocmVhZCB0aGUgY29kaW5nIGNvb2tpZQorICBvZiB0aGUgc2NyaXB0KS4KIAotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBpbXBvcnRmaWxlKCkgbm93IG9wZW5zIHRoZSBQeXRob24gbW9kdWxlIGluIGJpbmFyeSBtb2RlLAotICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCi0KLS0gSXNzdWUgIzEyNDUxOiBydW5weTogcnVuX3BhdGgoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBtb2R1bGUgaW4gYmluYXJ5IG1vZGUsCi0gIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIHN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzCi0gIHRoYW4gVVRGLTggKG1vZHVsZXMgdXNpbmcgdGhlIGNvZGluZyBjb29raWUpLgotCi0tIElzc3VlICMxMjQ1MTogeG1sLmRvbS5wdWxsZG9tOiBwYXJzZSgpIG5vdyBvcGVucyBmaWxlcyBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkCi0gIG9mIHRoZSB0ZXh0IG1vZGUgKHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcpIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KLQotLSBJc3N1ZSAjMTQ0NDM6IEVuc3VyZSB0aGF0IC5weSBmaWxlcyBhcmUgYnl0ZS1jb21waWxlZCB3aXRoIHRoZSBjb3JyZWN0IFB5dGhvbgotICBleGVjdXRhYmxlIHdpdGhpbiBiZGlzdF9ycG0gZXZlbiBvbiBvbGRlciB2ZXJzaW9ucyBvZiBSUE0KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKLSAgYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzExMjQxOiBzdWJjbGFzc2VzIG9mIGN0eXBlcy5BcnJheSBjYW4gbm93IGJlIHN1YmNsYXNzZWQuCi0KLS0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKLSAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQotICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi1DLUFQSQotLS0tLS0KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEyNTYwOiBCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gIFBhdGNoIGJ5IFN0ZWZhbiBTcGVybGluZy4KLQotLSBJc3N1ZSAjMTI1OTI6IE1ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCi0KLS0gSXNzdWUgIzEyMzcyOiBQT1NJWCBzZW1hcGhvcmVzIGFyZSBicm9rZW4gb24gQUlYOiBkb24ndCB1c2UgdGhlbS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNjM5OiByZWluZGVudC5weSBubyBsb25nZXIgY29udmVydHMgbmV3bGluZXMgYW5kIHdpbGwgcmFpc2UKLSAgYW4gZXJyb3IgaWYgYXR0ZW1wdGluZyB0byBjb252ZXJ0IGEgZmlsZSB3aXRoIG1peGVkIG5ld2xpbmVzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciBsaWIydG8zIGNhbiBub3cgcnVuIGZyb20gYW4gaW5zdGFsbGVkCi0gIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTI2MjY6IEluIHJlZ3J0ZXN0LCBhbGxvdyB0byBmaWx0ZXIgdGVzdHMgdXNpbmcgYSBnbG9iIGZpbHRlcgotICB3aXRoIHRoZSBgYC1tYGAgKG9yIGBgLS1tYXRjaGBgKSBvcHRpb24uICBUaGlzIHdvcmtzIHdpdGggYWxsIHRlc3QgY2FzZXMKLSAgdXNpbmcgdGhlIHVuaXR0ZXN0IG1vZHVsZS4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcwotICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMjYyNDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGZhaWwgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUgd2hlbgotICBydW5uaW5nIGluIHZlcmJvc2UgbW9kZSAoYGAtdmBgIG9yIGBgLVdgYCksIGJ5IHVzaW5nIHRoZSBgYC0tZmFpbGZhc3RgYAotICAob3IgYGAtR2BgKSBvcHRpb24gdG8gcmVncnRlc3QuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKLSAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTI1ODc6IENvcnJlY3QgZmF1bHR5IHRlc3QgZmlsZSBhbmQgcmVmZXJlbmNlIGluIHRlc3RfdG9rZW5pemUuCi0gIChQYXRjaCBieSBSb2JlcnQgWGlhbykKLQotLSBUcnkgaGFyZGVyIHRvIHJlYXAgZGFuZ2xpbmcgdGhyZWFkcyBpbiB0ZXN0LnN1cHBvcnQucmVhcF90aHJlYWRzKCkuCi0KLS0gSXNzdWUgIzEyNTczOiBBZGQgcmVzb3VyY2UgY2hlY2tzIGZvciBkYW5nbGluZyBUaHJlYWQgYW5kIFByb2Nlc3Mgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTI1NDk6IENvcnJlY3QgdGVzdF9wbGF0Zm9ybSB0byBub3QgZmFpbCB3aGVuIE9TIFggcmV0dXJucyAneDg2XzY0JwotICBhcyB0aGUgcHJvY2Vzc29yIHR5cGUgb24gc29tZSBNYWMgc3lzdGVtcy4KLQotLSBBdm9pZCBmYWlsaW5nIGluIHRlc3Rfcm9ib3RwYXJzZXIgd2hlbiBtdWVibGVzbW9yYWxlZGEuY29tIGlzIGZsYWt5IGFuZAotICBhbiBvdmVyemVhbG91cyBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZWRpcmVjdHMgdG8gYSBwbGFjZWhvbGRlcgotICBXZWIgc2l0ZS4KLQotLSBJc3N1ZSAjMTI0NDA6IFdoZW4gdGVzdGluZyB3aGV0aGVyIHNvbWUgYml0cyBpbiBTU0xDb250ZXh0Lm9wdGlvbnMgY2FuIGJlCi0gIHJlc2V0LCBjaGVjayB0aGUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBoZWFkZXJzIFB5dGhvbiB3YXMgY29tcGlsZWQgYWdhaW5zdCwKLSAgcmF0aGVyIHRoYW4gdGhlIHJ1bnRpbWUgdmVyc2lvbiBvZiB0aGUgT3BlblNTTCBsaWJyYXJ5LgotCi0tIElzc3VlICMxMjQ5NzogSW5zdGFsbCB0ZXN0L2RhdGEgdG8gcHJldmVudCBmYWlsdXJlcyBvZiB0aGUgdmFyaW91cyBjb2RlY21hcHMKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzEyNDk2OiBJbnN0YWxsIHRlc3QvY2FwYXRoIGRpcmVjdG9yeSB0byBwcmV2ZW50IHRlc3RfY29ubmVjdF9jYXBhdGgKLSAgdGVzdGNhc2UgZmFpbHVyZSBpbiB0ZXN0X3NzbC4KLQotLSBJc3N1ZSAjMTI0Njk6IFJ1biAid2FrZXVwIiBzaWduYWwgdGVzdHMgaW4gc3VicHJvY2VzcyB0byBydW4gdGhlIHRlc3QgaW4gYQotICBmcmVzaCBwcm9jZXNzIHdpdGggb25seSBvbmUgdGhyZWFkIGFuZCB0byBub3QgY2hhbmdlIHNpZ25hbCBoYW5kbGluZyBvZiB0aGUKLSAgcGFyZW50IHByb2Nlc3MuCi0KLS0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KLSAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAotICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDEwLUp1bC0yMDExKgotCi1MaWJyYXJ5Ci0tLS0tLS0tCistIElzc3VlICMxMjQ5Mzogc3VicHJvY2VzczogUG9wZW4uY29tbXVuaWNhdGUoKSBub3cgYWxzbyBoYW5kbGVzIEVJTlRSIGVycm9ycworICBpZiB0aGUgcHJvY2VzcyBoYXMgb25seSBvbmUgcGlwZS4KIAogLSBJc3N1ZSAjMTI0Njc6IHdhcm5pbmdzOiBmaXggYSByYWNlIGNvbmRpdGlvbiBpZiBhIHdhcm5pbmcgaXMgZW1pdHRlZCBhdAogICBzaHV0ZG93biwgaWYgZ2xvYmFscygpWydfX2ZpbGVfXyddIGlzIE5vbmUuCiAKLVRlc3RzCi0tLS0tLQorLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jOiBpbXBvcnRmaWxlKCkgbm93IG9wZW5zIHRoZSBQeXRob24gc2NyaXB0IGluIGJpbmFyeSBtb2RlLAorICBpbnN0ZWFkIG9mIHRleHQgbW9kZSB1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nLCB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCiAKLS0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQotICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KKy0gSXNzdWUgIzEyNDUxOiBydW5weTogcnVuX3BhdGgoKSBub3cgb3BlbnMgdGhlIFB5dGhvbiBzY3JpcHQgaW4gYmluYXJ5IG1vZGUsCisgIGluc3RlYWQgb2YgdGV4dCBtb2RlIHVzaW5nIHRoZSBsb2NhbGUgZW5jb2RpbmcsIHRvIHN1cHBvcnQgb3RoZXIgZW5jb2RpbmdzCisgIHRoYW4gVVRGLTggKHNjcmlwdHMgdXNpbmcgdGhlIGNvZGluZyBjb29raWUpLgogCi0tIElzc3VlICMxMTgxMjogU29sdmUgdHJhbnNpZW50IHNvY2tldCBmYWlsdXJlIHRvIGNvbm5lY3QgdG8gJ2xvY2FsaG9zdCcKLSAgaW4gdGVzdF90ZWxuZXRsaWIucHkuCi0KLS0gU29sdmVkIGEgcG90ZW50aWFsIGRlYWRsb2NrIGluIHRlc3RfdGVsbmV0bGliLnB5LiBSZWxhdGVkIHRvIGlzc3VlICMxMTgxMi4KLQotLSBBdm9pZCBmYWlsaW5nIGluIHRlc3RfdXJsbGlibmV0LnRlc3RfYmFkX2FkZHJlc3Mgd2hlbiBzb21lIG92ZXJ6ZWFsb3VzCi0gIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlc29sdmVzIGEgbm9uLWV4aXN0ZW50IGRvbWFpbiBuYW1lLiAgVGhlIHRlc3QKLSAgaXMgbm93IHNraXBwZWQgaW5zdGVhZC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIuMSByZWxlYXNlIGNhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDMtSnVsLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMjI5MTogWW91IGNhbiBub3cgbG9hZCBtdWx0aXBsZSBtYXJzaGFsbGVkIG9iamVjdHMgZnJvbSBhIHN0cmVhbSwgd2l0aAotICBvdGhlciBkYXRhIGludGVybGVhdmVkIGJldHdlZW4gbWFyc2hhbGxlZCBvYmplY3RzLgotCi0tIElzc3VlICMxMjA4NDogb3Muc3RhdCBvbiBXaW5kb3dzIG5vdyB3b3JrcyBwcm9wZXJseSB3aXRoIHJlbGF0aXZlIHN5bWJvbGljCi0gIGxpbmtzIHdoZW4gY2FsbGVkIGZyb20gYW55IGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMTE5NTogbXlfZmdldHMoKSBub3cgYWx3YXlzIGNsZWFycyBlcnJvcnMgYmVmb3JlIGNhbGxpbmcgZmdldHMoKS4gRml4Ci0gIHRoZSBmb2xsb3dpbmcgY2FzZTogc3lzLnN0ZGluLnJlYWQoKSBzdG9wcGVkIHdpdGggQ1RSTCtkIChlbmQgb2YgZmlsZSksCi0gIHJhd19pbnB1dCgpIGludGVycnVwdGVkIGJ5IENUUkwrYy4KLQotLSBJc3N1ZSAjOTY3MDogSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24gTWFjIE9TIFgKLSAgYW5kIEZyZWVCU0QgdG8gcmVkdWNlIHRoZSBjaGFuY2VzIG9mIGEgY3Jhc2ggaW5zdGVhZCBvZiBhICJtYXhpbXVtIHJlY3Vyc2lvbgotICBkZXB0aCIgUnVudGltZUVycm9yIGV4Y2VwdGlvbiAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKS4KLQotTGlicmFyeQotLS0tLS0tLQorLSBJc3N1ZSAjMTI0NTE6IHhtbC5kb20ucHVsbGRvbTogcGFyc2UoKSBub3cgb3BlbnMgZmlsZXMgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZAorICBvZiB0aGUgdGV4dCBtb2RlICh1c2luZyB0aGUgbG9jYWxlIGVuY29kaW5nKSB0byBhdm9pZCBlbmNvZGluZyBpc3N1ZXMuCiAKIC0gSXNzdWUgIzEyMTQ3OiBBZGp1c3QgdGhlIG5ldy1pbi0zLjIgc210cGxpYi5zZW5kX21lc3NhZ2UgbWV0aG9kIGZvciBiZXR0ZXIKLSAgY29uZm9ybWFuY2UgdG8gdGhlIFJGQ3M6IGNvcnJlY3RseSBoYW5kbGUgU2VuZGVyIGFuZCBSZXNlbnQgaGVhZGVycy4KKyAgY29uZm9ybWFuY2UgdG8gdGhlIFJGQ3M6ICBjb3JyZWN0bHkgaGFuZGxlIFNlbmRlciBhbmQgUmVzZW50LSBoZWFkZXJzLgogCiAtIElzc3VlICMxMjM1MjogRml4IGEgZGVhZGxvY2sgaW4gbXVsdGlwcm9jZXNzaW5nLkhlYXAgd2hlbiBhIGJsb2NrIGlzIGZyZWVkIGJ5CiAgIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB3aGlsZSB0aGUgSGVhcCBsb2NrIGlzIGhlbGQuCiAKKy0gSXNzdWUgIzEyNDYyOiB0aW1lLnNsZWVwKCkgbm93IGltbWVkaWF0ZWx5IGNhbGxzIHRoZSAoUHl0aG9uKSBzaWduYWwgaGFuZGxlcgorICBpZiBpdCBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCwgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd2FpdCB1bnRpbCB0aGUgbmV4dAorICBpbnN0cnVjdGlvbi4KKworLSBJc3N1ZSAjMTI0NDI6IG5ldyBzaHV0aWwuZGlza191c2FnZSBmdW5jdGlvbiwgcHJvdmlkaW5nIHRvdGFsLCB1c2VkIGFuZCBmcmVlCisgIGRpc2sgc3BhY2Ugc3RhdGlzdGljcy4KKwogLSBJc3N1ZSAjMTI0NTE6IFRoZSBYSW5jbHVkZSBkZWZhdWx0IGxvYWRlciBvZiB4bWwuZXRyZWUgbm93IGRlY29kZXMgZmlsZXMgZnJvbQogICBVVEYtOCBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgaWYgdGhlIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQuIEl0IG5vdwotICBhbHNvIG9wZW5zIFhNTCBmaWxlcyBmb3IgdGhlIHBhcnNlciBpbiBiaW5hcnkgbW9kZSBpbnN0ZWFkIG9mIHRoZSB0ZXh0IG1vZGUgdG8KLSAgYXZvaWQgZW5jb2RpbmcgaXNzdWVzLgotCi0tIElzc3VlICMxMjQ1MTogZG9jdGVzdC5kZWJ1Z19zY3JpcHQoKSBkb2Vzbid0IGNyZWF0ZSBhIHRlbXBvcmFyeSBmaWxlIGFueW1vcmUKKyAgYWxzbyBvcGVucyBYTUwgZmlsZXMgZm9yIHRoZSBwYXJzZXIgaW4gYmluYXJ5IG1vZGUgaW5zdGVhZCBvZiB0aGUgdGV4dCBtb2RlCiAgIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KIAotLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLCB0bwotICByZWFkIHRoZSBQeXRob24gbW9kdWxlIGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgorLSBJc3N1ZSAjMTI0NTE6IGRvY3Rlc3QuZGVidWdfc2NyaXB0KCkgZG9lc24ndCBjcmVhdGUgYSB0ZW1wb3JhcnkgZmlsZQorICBhbnltb3JlIHRvIGF2b2lkIGVuY29kaW5nIGlzc3Vlcy4KKworLSBJc3N1ZSAjMTI0NTE6IHB5ZG9jLnN5bm9wc2lzKCkgbm93IHJlYWRzIHRoZSBlbmNvZGluZyBjb29raWUgaWYgYXZhaWxhYmxlLAorICB0byByZWFkIHRoZSBQeXRob24gc2NyaXB0IGZyb20gdGhlIHJpZ2h0IGVuY29kaW5nLgogCiAtIElzc3VlICMxMjQ1MTogZGlzdHV0aWxzIG5vdyBvcGVucyB0aGUgc2V0dXAgc2NyaXB0IGluIGJpbmFyeSBtb2RlIHRvIHJlYWQgdGhlCiAgIGVuY29kaW5nIGNvb2tpZSwgaW5zdGVhZCBvZiBvcGVuaW5nIGl0IGluIFVURi04LgpAQCAtMTYyMSwxNCArMzI0MiwzMiBAQAogICBzdGlsbCBwb3NzaWJsZSB0byBnbG9iYWxseSBvdmVycmlkZSB0aGUgZGVmYXVsdCBieSBzZXR0aW5nCiAgIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBiZWZvcmUgbGF1bmNoaW5nIHRoZSBpbnRlcnByZXRlcjsgaXRzIHZhbHVlIG11c3QgYmUKICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHZhbHVlIHdpdGggd2hpY2ggdGhlIGludGVycHJldGVyCi0gIHdhcyBidWlsdC4KKyAgd2FzIGJ1aWx0LiAgQWxzbywgaW1wbGVtZW50IHRoZSBzYW1lIGhhbmRsaW5nIGluIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjMTI0MjI6IEluIHRoZSBjb3B5IG1vZHVsZSwgZG9uJ3Qgc3RvcmUgb2JqZWN0cyB0aGF0IGFyZSB0aGVpciBvd24gY29weQorICBpbiB0aGUgbWVtbyBkaWN0LgorCistIElzc3VlICMxMjMwMzogQWRkIHNpZ3dhaXRpbmZvKCkgYW5kIHNpZ3RpbWVkd2FpdCgpIHRvIHRoZSBzaWduYWwgbW9kdWxlLgorCistIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQorICBLaXRhZGEuCisKKy0gSXNzdWUgIzE4NzQ6IGVtYWlsIG5vdyBkZXRlY3RzIGFuZCByZXBvcnRzIGFzIGEgZGVmZWN0IHRoZSBwcmVzZW5jZSBvZgorICBhbnkgQ1RFIG90aGVyIHRoYW4gN2JpdCwgOGJpdCwgb3IgYmluYXJ5IG9uIGEgbXVsdGlwYXJ0LgogCiAtIElzc3VlICMxMjM4MzogRml4IHN1YnByb2Nlc3MgbW9kdWxlIHdpdGggZW52PXt9OiBkb24ndCBjb3B5IHRoZSBlbnZpcm9ubWVudAogICB2YXJpYWJsZXMsIHN0YXJ0IHdpdGggYW4gZW1wdHkgZW52aXJvbm1lbnQuCiAKLS0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlciBwYXNzZWQKLSAgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsIGlmIGdpdmVuCi0gIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCistIElzc3VlICMxMTYzNzogRml4IHN1cHBvcnQgZm9yIGltcG9ydGluZyBwYWNrYWdpbmcgc2V0dXAgaG9va3MgZnJvbSB0aGUKKyAgcHJvamVjdCBkaXJlY3RvcnkuCisKKy0gSXNzdWUgIzY3NzE6IE1vdmVkIHRoZSBjdXJzZXMud3JhcHBlciBmdW5jdGlvbiBmcm9tIHRoZSBzaW5nbGUtZnVuY3Rpb24KKyAgd3JhcHBlciBtb2R1bGUgaW50byBfX2luaXRfXywgZWxpbWluYXRpbmcgdGhlIG1vZHVsZS4gIFNpbmNlIF9faW5pdF9fIHdhcworICBhbHJlYWR5IGltcG9ydGluZyB0aGUgZnVuY3Rpb24gdG8gY3Vyc2VzLndyYXBwZXIsIHRoZXJlIGlzIG5vIEFQSSBjaGFuZ2UuCisKKy0gSXNzdWUgIzExNTg0OiBlbWFpbC5oZWFkZXIuZGVjb2RlX2hlYWRlciBubyBsb25nZXIgZmFpbHMgaWYgdGhlIGhlYWRlcgorICBwYXNzZWQgdG8gaXQgaXMgYSBIZWFkZXIgb2JqZWN0LCBhbmQgSGVhZGVyL21ha2VfaGVhZGVyIG5vIGxvbmdlciBmYWlsCisgIGlmIGdpdmVuIGJpbmFyeSB1bmtub3duLThiaXQgaW5wdXQuCiAKIC0gSXNzdWUgIzExNzAwOiBtYWlsYm94IHByb3h5IG9iamVjdCBjbG9zZSBtZXRob2RzIGNhbiBub3cgYmUgY2FsbGVkIG11bHRpcGxlCiAgIHRpbWVzIHdpdGhvdXQgZXJyb3IuCkBAIC0xNjM5LDM1ICszMjc4LDEwNSBAQAogICBjb25uZWN0aW9uIGlmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaAogICB3cml0dGVuIGJ5IEV6aW8gTWVsb3R0aS4KIAorLSBJc3N1ZSAjMTIyNDA6IEFsbG93IG11bHRpcGxlIHNldHVwIGhvb2tzIGluIHBhY2thZ2luZydzIHNldHVwLmNmZyBmaWxlcy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgRXJpayBCcmF5LgorCiAtIElzc3VlICM5Mjg0OiBBbGxvdyBpbnNwZWN0LmZpbmRzb3VyY2UoKSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgZG9jdGVzdAogICBmdW5jdGlvbnMuCiAKKy0gSXNzdWUgIzExNTk1OiBGaXggYXNzb3J0ZWQgYnVncyBpbiBwYWNrYWdpbmcudXRpbC5jZmdfdG9fYXJncywgYQorICBjb21wYXRpYmlsaXR5IGhlbHBlciBmb3IgdGhlIGRpc3R1dGlscy1wYWNrYWdpbmcgdHJhbnNpdGlvbi4gIE9yaWdpbmFsIHBhdGNoCisgIGJ5IEVyaWsgQnJheS4KKworLSBJc3N1ZSAjMTIyODc6IEluIG9zc2F1ZGlvZGV2LCBjaGVjayB0aGF0IHRoZSBkZXZpY2UgaXNuJ3QgY2xvc2VkIGluIHNldmVyYWwKKyAgbWV0aG9kcy4KKwogLSBJc3N1ZSAjMTIwMDk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4gbmV0cmMgZmlsZSBjb21tZW50IGhhbmRsaW5nLgogCistIElzc3VlICMxMjI0NjogV2FybiBhbmQgZmFpbCB3aGVuIHRyeWluZyB0byBpbnN0YWxsIGEgdGhpcmQtcGFydHkgcHJvamVjdCBmcm9tCisgIGFuIHVuaW5zdGFsbGVkIFB5dGhvbiAoYnVpbHQgaW4gYSBzb3VyY2UgY2hlY2tvdXQpLiAgT3JpZ2luYWwgcGF0Y2ggYnkKKyAgVHNoZXBhbmcgTGVraG9ua2hvYmUuCisKIC0gSXNzdWUgIzEwNjk0OiB6aXBmaWxlIG5vdyBpZ25vcmVzIGdhcmJhZ2UgYXQgdGhlIGVuZCBvZiBhIHppcGZpbGUuCiAKIC0gSXNzdWUgIzEyMjgzOiBGaXhlZCByZWdyZXNzaW9uIGluIHNtdHBsaWIgcXVvdGluZyBvZiBsZWFkaW5nIGRvdHMgaW4gREFUQS4KIAorLSBJc3N1ZSAjMTA0MjQ6IEFyZ3BhcnNlIG5vdyBpbmNsdWRlcyB0aGUgbmFtZXMgb2YgdGhlIG1pc3NpbmcgcmVxdWlyZWQKKyAgYXJndW1lbnRzIGluIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBlcnJvciBtZXNzYWdlLgorCiAtIElzc3VlICMxMjE2ODogU3lzTG9nSGFuZGxlciBub3cgYWxsb3dzIE5VTCB0ZXJtaW5hdGlvbiB0byBiZSBjb250cm9sbGVkIHVzaW5nCiAgIGEgbmV3ICdhcHBlbmRfbnVsJyBhdHRyaWJ1dGUgb24gdGhlIGhhbmRsZXIuCiAKIC0gSXNzdWUgIzExNTgzOiBTcGVlZCB1cCBvcy5wYXRoLmlzZGlyIG9uIFdpbmRvd3MgYnkgdXNpbmcgR2V0RmlsZUF0dHJpYnV0ZXMKICAgaW5zdGVhZCBvZiBvcy5zdGF0LgogCistIElzc3VlICMxMjAyMTogTWFrZSBtbWFwJ3MgcmVhZCgpIG1ldGhvZCBhcmd1bWVudCBvcHRpb25hbC4gUGF0Y2ggYnkgUGV0cmkKKyAgTGVodGluZW4uCisKKy0gSXNzdWUgIzkyMDU6IGNvbmN1cnJlbnQuZnV0dXJlcy5Qcm9jZXNzUG9vbEV4ZWN1dG9yIG5vdyBkZXRlY3RzIGtpbGxlZAorICBjaGlsZHJlbiBhbmQgcmFpc2VzIEJyb2tlblByb2Nlc3NQb29sIGluIHN1Y2ggYSBzaXR1YXRpb24uICBQcmV2aW91c2x5IGl0CisgIHdvdWxkIHJlbGlhYmx5IGZyZWV6ZS9kZWFkbG9jay4KKworLSBJc3N1ZSAjMTIwNDA6IEV4cG9zZSBhIG5ldyBhdHRyaWJ1dGUgYGBzZW50aW5lbGBgIG9uIGluc3RhbmNlcyBvZgorICBgYG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzYGAuICBBbHNvLCBmaXggUHJvY2Vzcy5qb2luKCkgdG8gbm90IHVzZSBwb2xsaW5nCisgIGFueW1vcmUsIHdoZW4gZ2l2ZW4gYSB0aW1lb3V0LgorCistIElzc3VlICMxMTg5MzogUmVtb3ZlIG9ic29sZXRlIGludGVybmFsIHdyYXBwZXIgY2xhc3MgYGBTU0xGYWtlRmlsZWBgIGluIHRoZQorICBzbXRwbGliIG1vZHVsZS4gIFBhdGNoIGJ5IENhdGFsaW4gSWFjb2IuCisKKy0gSXNzdWUgIzEyMDgwOiBGaXggYSBEZWNpbWFsLnBvd2VyKCkgY2FzZSB0aGF0IHRvb2sgYW4gdW5yZWFzb25hYmx5IGxvbmcgdGltZQorICB0byBjb21wdXRlLgorCistIElzc3VlICMxMjIyMTogUmVtb3ZlIF9fdmVyc2lvbl9fIGF0dHJpYnV0ZXMgZnJvbSBweWV4cGF0LCBwaWNrbGUsIHRhcmZpbGUsCisgIHB5ZG9jLCB0a2ludGVyLCBhbmQgeG1sLnBhcnNlcnMuZXhwYXQuIFRoaXMgd2VyZSB1c2VsZXNzIHZlcnNpb24gY29uc3RhbnRzCisgIGxlZnQgb3ZlciBmcm9tIHRoZSBNZXJjdXJpYWwgdHJhbnNpdGlvbgorCiAtIE5hbWVkIHR1cGxlcyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCB2YXJzKCkuCiAKIC0gSXNzdWUgIzEyMDg1OiBGaXggYW4gYXR0cmlidXRlIGVycm9yIGluIHN1YnByb2Nlc3MuUG9wZW4gZGVzdHJ1Y3RvciBpZiB0aGUKICAgY29uc3RydWN0b3IgaGFzIGZhaWxlZCwgZS5nLiBiZWNhdXNlIG9mIGFuIHVuZGVjbGFyZWQga2V5d29yZCBhcmd1bWVudC4gUGF0Y2gKICAgd3JpdHRlbiBieSBPbGVnIE9zaG15YW4uCiAKLS0gSXNzdWUgIzk4NTA2NDogTWFrZSBwbGlzdGxpYiBtb3JlIHJlc2lsaWVudCB0byBmYXVsdHkgaW5wdXQgcGxpc3RzLiAgUGF0Y2ggYnkKLSAgTWhlciBNb3ZzaXN5YW4uCistIElzc3VlICMxMjAyODogTWFrZSB0aHJlYWRpbmcuX2dldF9pZGVudCgpIHB1YmxpYywgcmVuYW1lIGl0IHRvCisgIHRocmVhZGluZy5nZXRfaWRlbnQoKSBhbmQgZG9jdW1lbnQgaXQuIFRoaXMgZnVuY3Rpb24gd2FzIGFscmVhZHkgdXNlZCB1c2luZworICBfdGhyZWFkLmdldF9pZGVudCgpLgorCistIElzc3VlICMxMjE3MTogSW5jcmVtZW50YWxFbmNvZGVyLnJlc2V0KCkgb2YgQ0pLIGNvZGVjcyAobXVsdGlieXRlY29kZWMpIGNhbGxzCisgIGVuY3Jlc2V0KCkgaW5zdGVhZCBvZiBkZWNyZXNldCgpLgorCistIElzc3VlICMxMjIxODogUmVtb3ZlZCB3c2dpcmVmLmVnZy1pbmZvLgorCistIElzc3VlICMxMjE5NjogQWRkIHBpcGUyKCkgdG8gdGhlIG9zIG1vZHVsZS4KKworLSBJc3N1ZSAjOTg1MDY0OiBNYWtlIHBsaXN0bGliIG1vcmUgcmVzaWxpZW50IHRvIGZhdWx0eSBpbnB1dCBwbGlzdHMuCisgIFBhdGNoIGJ5IE1oZXIgTW92c2lzeWFuLgorCistIElzc3VlICMxNjI1OiBCWjJGaWxlIGFuZCBiejIuZGVjb21wcmVzcygpIG5vdyBzdXBwb3J0IG11bHRpLXN0cmVhbSBmaWxlcy4KKyAgSW5pdGlhbCBwYXRjaCBieSBOaXIgQWlkZXMuCisKKy0gSXNzdWUgIzEyMTc1OiBCdWZmZXJlZFJlYWRlci5yZWFkKC0xKSBub3cgY2FsbHMgcmF3LnJlYWRhbGwoKSBpZiBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyBvbmx5IHJlYWRzIHRoZSBmaWxlIHBvc2l0aW9uIGFuZCBzaXplCisgIG9uY2UuCiAKIC0gSXNzdWUgIzEyMTc1OiBSYXdJT0Jhc2UucmVhZGFsbCgpIG5vdyByZXR1cm5zIE5vbmUgaWYgcmVhZCgpIHJldHVybnMgTm9uZS4KIAogLSBJc3N1ZSAjMTIxNzU6IEZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yCiAgIGlmIHRoZSBmaWxlIGlzIGNsb3NlZC4KIAorLSBJc3N1ZSAjMTExMDk6IE5ldyBzZXJ2aWNlX2FjdGlvbiBtZXRob2QgZm9yIEJhc2VTZXJ2ZXIsIHVzZWQgYnkgRm9ya2luZ01peGluCisgIGNsYXNzIGZvciBjbGVhbnVwLiBJbml0aWFsIFBhdGNoIGJ5IEp1c3RpbiBXYXJrZW50aW4uCisKKy0gSXNzdWUgIzEyMDQ1OiBBdm9pZCBkdXBsaWNhdGUgZXhlY3V0aW9uIG9mIGNvbW1hbmQgaW4KKyAgY3R5cGVzLnV0aWwuX2dldF9zb25hbWUoKS4gIFBhdGNoIGJ5IFNpamluIEpvc2VwaC4KKworLSBJc3N1ZSAjMTA4MTg6IFJlbW92ZSB0aGUgVGsgR1VJIGFuZCB0aGUgc2VydmUoKSBmdW5jdGlvbiBvZiB0aGUgcHlkb2MgbW9kdWxlLAorICBweWRvYyAtZyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIgYW5kIGl0IGhhcyBhIG5ldyBlbmhhbmNlZCB3ZWIKKyAgc2VydmVyLgorCistIElzc3VlICMxNDQxNTMwOiBJbiBpbWFwbGliLCByZWFkIHRoZSBkYXRhIGluIG9uZSBjaHVuayB0byBzcGVlZCB1cCBsYXJnZQorICByZWFkcyBhbmQgc2ltcGxpZnkgY29kZS4KKwogLSBJc3N1ZSAjMTIwNzA6IEZpeCB0aGUgTWFrZWZpbGUgcGFyc2VyIG9mIHRoZSBzeXNjb25maWcgbW9kdWxlIHRvIGhhbmRsZQogICBjb3JyZWN0bHkgcmVmZXJlbmNlcyB0byAiYm9ndXMgdmFyaWFibGUiIChlLmcuICJwcmVmaXg9JC9vcHQvcHl0aG9uIikuCiAKQEAgLTE2NzUsODEgKzMzODQsMzAgQEAKICAgdGhlaXIgZW5jb2RlKCkgbWV0aG9kIGFueW1vcmUsIGJ1dCBjb250aW51ZSB0byBjYWxsIHRoZSByZXNldCgpIG1ldGhvZCBpZiB0aGUKICAgZmluYWwgYXJndW1lbnQgaXMgVHJ1ZS4KIAotLSBJc3N1ZSAjNTcxNTogSW4gc29ja2V0c2VydmVyLCBjbG9zZSB0aGUgc2VydmVyIHNvY2tldCBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KKy0gSXNzdWUgIzEyMDQ5OiBBZGQgUkFORF9ieXRlcygpIGFuZCBSQU5EX3BzZXVkb19ieXRlcygpIGZ1bmN0aW9ucyB0byB0aGUgc3NsCisgIG1vZHVsZS4KIAotLSBDb3JyZWN0IGxvb2t1cCBvZiBfX2Rpcl9fIG9uIG9iamVjdHMuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBjYXVzZXMgZXJyb3JzCi0gIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlIHByb3BhZ2F0ZWQuCistIElzc3VlICM2NTAxOiBvcy5kZXZpY2VfZW5jb2RpbmcoKSByZXR1cm5zIE5vbmUgb24gV2luZG93cyBpZiB0aGUgYXBwbGljYXRpb24KKyAgaGFzIG5vIGNvbnNvbGUuCisKKy0gSXNzdWUgIzEyMTA1OiBBZGQgT19DTE9FWEVDIHRvIHRoZSBvcyBtb2R1bGUuCisKKy0gSXNzdWUgIzEyMDc5OiBEZWNpbWFsKCdJbmZpbml0eScpLmZtYShEZWNpbWFsKCcwJyksICgzLjkxMjI0MzE4MTI2Nzg2ZSsxOSswaikpCisgIG5vdyByYWlzZXMgVHlwZUVycm9yIChyZWZsZWN0aW5nIHRoZSBpbnZhbGlkIHR5cGUgb2YgdGhlIDNyZCBhcmd1bWVudCkgcmF0aGVyCisgIHRoYW4gRGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uLgogCiAtIElzc3VlICMxMjEyNDogemlwaW1wb3J0IGRvZXNuJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byB6bGliLmRlY29tcHJlc3MoKSBhbnltb3JlCiAgIHRvIGJlIGFibGUgdG8gdW5sb2FkIHRoZSBtb2R1bGUuCiAKKy0gQWRkIHRoZSBwYWNrYWdpbmcgbW9kdWxlLCBhbiBpbXByb3ZlZCBmb3JrIG9mIGRpc3R1dGlscyAoYWxzbyBrbm93biBhcworICBkaXN0dXRpbHMyKS4KKwogLSBJc3N1ZSAjMTIwNjU6IGNvbm5lY3RfZXgoKSBvbiBhbiBTU0wgc29ja2V0IG5vdyByZXR1cm5zIHRoZSBvcmlnaW5hbCBlcnJubwogICB3aGVuIHRoZSBzb2NrZXQncyB0aW1lb3V0IGV4cGlyZXMgKGl0IHVzZWQgdG8gcmV0dXJuIE5vbmUpLgogCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTI0MDQ6IFJlbW92ZSBDODkgaW5jb21wYXRpYmxlIGNvZGUgZnJvbSBtbWFwIG1vZHVsZS4gUGF0Y2ggYnkgQWtpcmEKLSAgS2l0YWRhLgotCi0tIElzc3VlICMxMjIyMTogUmVwbGFjZSBweWV4cGF0Ll9fdmVyc2lvbl9fIHdpdGggdGhlIFB5dGhvbiB2ZXJzaW9uLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjODc0NjogQ29ycmVjdCBmYXVsdHkgY29uZmlndXJlIGNoZWNrcyBzbyB0aGF0IG9zLmNoZmxhZ3MoKSBhbmQKLSAgb3MubGNoZmxhZ3MoKSBhcmUgb25jZSBhZ2FpbiBidWlsdCBvbiBzeXN0ZW1zIHRoYXQgc3VwcG9ydCB0aGVzZSBmdW5jdGlvbnMKLSAgKCpCU0QgYW5kIE9TIFgpLiAgQWxzbyBhZGQgbmV3IHN0YXQgZmlsZSBmbGFncyBmb3IgT1MgWCAoVUZfSElEREVOIGFuZAotICBVRl9DT01QUkVTU0VEKS4KLQotLSBJc3N1ZSAjMTEyMTc6IEZvciA2NC1iaXQvMzItYml0IE1hYyBPUyBYIHVuaXZlcnNhbCBmcmFtZXdvcmsgYnVpbGRzLCBlbnN1cmUKLSAgIm1ha2UgaW5zdGFsbCIgY3JlYXRlcyBzeW1saW5rcyBpbiAtLXByZWZpeCBiaW4gZm9yIHRoZSAiLTMyIiBmaWxlcyBpbiB0aGUKLSAgZnJhbWV3b3JrIGJpbiBkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCi0KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzEyNDA3OiBFeHBsaWNpdGx5IHNraXAgdGVzdF9jYXBpLkVtYmVkZGluZ1Rlc3QgdW5kZXIgV2luZG93cy4KLQotLSBJc3N1ZSAjMTI0MDA6IHJlZ3J0ZXN0IC1XIGRvZXNuJ3QgcmVydW4gdGhlIHRlc3RzIHR3aWNlIGFueW1vcmUsIGJ1dCBjYXB0dXJlcwotICB0aGUgb3V0cHV0IGFuZCBkaXNwbGF5cyBpdCBvbiBmYWlsdXJlIGluc3RlYWQuIHJlZ3J0ZXN0IC12IGRvZXNuJ3QgcHJpbnQgdGhlCi0gIGVycm9yIHR3aWNlIGFueW1vcmUgaWYgdGhlcmUgaXMgb25seSBvbmUgZXJyb3IuCi0KLS0gSXNzdWUgIzEyMTQxOiBJbnN0YWxsIGEgY29weSBvZiB0ZW1wbGF0ZSBDIG1vZHVsZSBmaWxlIHNvIHRoYXQgdGVzdF9idWlsZF9leHQKLSAgb2YgdGVzdF9kaXN0dXRpbHMgaXMgbm8gbG9uZ2VyIHNpbGVudGx5IHNraXBwZWQgd2hlbiBydW4gb3V0c2lkZSBvZiBhIGJ1aWxkCi0gIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjODc0NjogQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIG9zLmNoZmxhZ3MoKSBhbmQgb3MubGNoZmxhZ3MoKS4gIFBhdGNoCi0gIGJ5IEdhcnJldHQgQ29vcGVyLgotCi0tIElzc3VlICMxMDczNjogRml4IHRlc3RfdHRrIHRlc3Rfd2lkZ2V0cyBmYWlsdXJlcyB3aXRoIENvY29hIFRrIDguNS45IG9uIE1hYwotICBPUyBYLiAgKFBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKLQotLSBJc3N1ZSAjMTIwNTc6IEFkZCB0ZXN0cyBmb3IgSVNPIDIwMjIgY29kZWNzIChpc28yMDIyX2pwLCBpc28yMDIyX2pwXzIsCi0gIGlzbzIwMjJfa3IpLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNS1NYXktMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMDYwOiBVc2Ugc2lnX2F0b21pY190IHR5cGUgYW5kIHZvbGF0aWxlIGtleXdvcmQgaW4gdGhlIHNpZ25hbAotICBtb2R1bGUuIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMjA0NDogRml4ZWQgc3VicHJvY2Vzcy5Qb3BlbiB3aGVuIHVzZWQgYXMgYSBjb250ZXh0IG1hbmFnZXIgdG8KLSAgd2FpdCBmb3IgdGhlIHByb2Nlc3MgdG8gZW5kIHdoZW4gZXhpdGluZyB0aGUgY29udGV4dCB0byBhdm9pZCB1bmludGVudGlvbmFsbHkKLSAgbGVhdmluZyB6b21iaWUgcHJvY2Vzc2VzIGFyb3VuZC4KLQotLSBJc3N1ZSAjMTE5NTogRml4IGlucHV0KCkgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgQ1RSTCtkIGFuZCB0aGVuIENUUkwrYywKLSAgY2xlYXIgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBhZnRlciBDVFJMK2QuCi0KLUxpYnJhcnkKLS0tLS0tLS0KKy0gSXNzdWUgIzg4MDk6IFRoZSBTTVRQX1NTTCBjb25zdHJ1Y3RvciBhbmQgU01UUC5zdGFydHRscygpIG5vdyBzdXBwb3J0CisgIHBhc3NpbmcgYSBgYGNvbnRleHRgYCBhcmd1bWVudCBwb2ludGluZyB0byBhbiBzc2wuU1NMQ29udGV4dCBpbnN0YW5jZS4KKyAgUGF0Y2ggYnkgS2FzdW4gSGVyYXRoLgogCiAtIElzc3VlICMxMTA4ODogZG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBGNSB0byBydW4gYSBzY3JpcHQgaW4gSURMRSBvbiBNYWNPU1gKICAgd2l0aCBUayA4LjUuCkBAIC0xNzU3LDggKzM0MTUsNiBAQAogLSBJc3N1ZSAjOTUxNjogSXNzdWUgIzk1MTY6IGF2b2lkIGVycm9ycyBpbiBzeXNjb25maWcgd2hlbiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKICAgaXMgc2V0IGluIHNoZWxsLgogCi0tIElzc3VlICMxMjAxMjogc3NsLlBST1RPQ09MX1NTTHYyIGJlY29tZXMgb3B0aW9uYWwuCi0KIC0gSXNzdWUgIzg2NTA6IE1ha2UgemxpYiBtb2R1bGUgNjQtYml0IGNsZWFuLiBjb21wcmVzcygpLCBkZWNvbXByZXNzKCkgYW5kCiAgIHRoZWlyIGluY3JlbWVudGFsIGNvdW50ZXJwYXJ0cyBub3cgcmFpc2UgT3ZlcmZsb3dFcnJvciBpZiBnaXZlbiBhbiBpbnB1dAogICBsYXJnZXIgdGhhbiA0R0IsIGluc3RlYWQgb2Ygc2lsZW50bHkgdHJ1bmNhdGluZyB0aGUgaW5wdXQgYW5kIHJldHVybmluZwpAQCAtMTc3MiwxMiArMzQyOCwxNiBAQAogICB3cml0aW5nLCB0aGVuIHNlZWtpbmcgYmVmb3JlIHRoZSBwcmV2aW91cyB3cml0ZSBidXQgc3RpbGwgd2l0aGluIGJ1ZmZlcmVkCiAgIGRhdGEsIGFuZCB3cml0aW5nIGFnYWluKS4KIAorLSBJc3N1ZSAjOTk3MTogV3JpdGUgYW4gb3B0aW1pemVkIGltcGxlbWVudGF0aW9uIG9mIEJ1ZmZlcmVkUmVhZGVyLnJlYWRpbnRvKCkuCisgIFBhdGNoIGJ5IEpvaG4gTydDb25ub3IuCisKIC0gSXNzdWUgIzEwMjg6IFRrIHJldHVybnMgaW52YWxpZCBVbmljb2RlIG51bGwgaW4gJUE6IFVuaWNvZGVEZWNvZGVFcnJvci4KICAgV2l0aCBUayA8IDguNSBfdGtpbnRlci5jOlB5dGhvbkNtZCgpIHJhaXNlZCBVbmljb2RlRGVjb2RlRXJyb3IsIGNhdXNlZAogICBJRExFIHRvIGV4aXQuICBDb252ZXJ0ZWQgdG8gdmFsaWQgVW5pY29kZSBudWxsIGluIFB5dGhvbkNtZCgpLgogCi0tIElzc3VlICMxMTE2OTogY29tcGlsZWFsbCBtb2R1bGUgdXNlcyByZXByKCkgdG8gZm9ybWF0IGZpbGVuYW1lcyBhbmQgcGF0aHMgdG8KLSAgZXNjYXBlIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIGFuZCBzaG93IHNwYWNlcy4KKy0gSXNzdWUgIzExNzk5OiB1cmxsaWIucmVxdWVzdCBBdXRoZW50aWNhdGlvbiBIYW5kbGVycyB3aWxsIHJhaXNlIGEgVmFsdWVFcnJvcgorICB3aGVuIHByZXNlbnRlZCB3aXRoIGFuIHVuc3VwcG9ydGVkIEF1dGhlbnRpY2F0aW9uIFNjaGVtZS4gUGF0Y2ggY29udHJpYnV0ZWQKKyAgYnkgWXV2YWwgR3JlZW5maWVsZC4KIAogLSBJc3N1ZSAjMTA0MTksICM2MDExOiBidWlsZF9zY3JpcHRzIGNvbW1hbmQgb2YgZGlzdHV0aWxzIGhhbmRsZXMgY29ycmVjdGx5CiAgIG5vbi1BU0NJSSBwYXRoIChwYXRoIHRvIHRoZSBQeXRob24gZXhlY3V0YWJsZSkuIE9wZW4gYW5kIHdyaXRlIHRoZSBzY3JpcHQgaW4KQEAgLTE3ODcsMTMzICszNDQ3LDY4IEBACiAtIElzc3VlICM4NDk4OiBJbiBzb2NrZXQuYWNjZXB0KCksIGFsbG93IHRvIHNwZWNpZnkgMCBhcyBhIGJhY2tsb2cgdmFsdWUgaW4KICAgb3JkZXIgdG8gYWNjZXB0IGV4YWN0bHkgb25lIGNvbm5lY3Rpb24uICBQYXRjaCBieSBEYW5pZWwgRXZlcnMuCiAKKy0gSXNzdWUgIzEyMDExOiBzaWduYWwuc2lnbmFsKCkgYW5kIHNpZ25hbC5zaWdpbnRlcnJ1cHQoKSByYWlzZSBhbiBPU0Vycm9yLAorICBpbnN0ZWFkIG9mIGEgUnVudGltZUVycm9yOiBPU0Vycm9yIGhhcyBhbiBlcnJubyBhdHRyaWJ1dGUuCisKKy0gSXNzdWUgIzM3MDk6IGFkZCBhIGZsdXNoX2hlYWRlcnMgbWV0aG9kIHRvIEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIHdoaWNoCisgIG1hbmFnZXMgdGhlIHNlbmRpbmcgb2YgaGVhZGVycyB0byBvdXRwdXQgc3RyZWFtIGFuZCBmbHVzaGluZyB0aGUgaW50ZXJuYWwKKyAgaGVhZGVycyBidWZmZXIuIFBhdGNoIGNvbnRyaWJ1dGlvbiBieSBBbmRyZXcgU2NoYWFmCisKKy0gSXNzdWUgIzExNzQzOiBSZXdyaXRlIG11bHRpcHJvY2Vzc2luZyBjb25uZWN0aW9uIGNsYXNzZXMgaW4gcHVyZSBQeXRob24uCisKIC0gSXNzdWUgIzExMTY0OiBTdG9wIHRyeWluZyB0byB1c2UgX3htbHBsdXMgaW4gdGhlIHhtbCBtb2R1bGUuCiAKLUJ1aWxkCi0tLS0tLQorLSBJc3N1ZSAjMTE4ODg6IEFkZCBsb2cyIGZ1bmN0aW9uIHRvIG1hdGggbW9kdWxlLiBQYXRjaCB3cml0dGVuIGJ5IE1hcmsKKyAgRGlja2luc29uLgogCi0tIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgorLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgogCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KKy0gSXNzdWUgIzg0MDc6IFRoZSBzaWduYWwgaGFuZGxlciB3cml0ZXMgdGhlIHNpZ25hbCBudW1iZXIgYXMgYSBzaW5nbGUgYnl0ZQorICBpbnN0ZWFkIG9mIGEgbnVsIGJ5dGUgaW50byB0aGUgd2FrZXVwIGZpbGUgZGVzY3JpcHRvci4gU28gaXQgaXMgcG9zc2libGUgdG8KKyAgd2FpdCBtb3JlIHRoYW4gb25lIHNpZ25hbCBhbmQga25vdyB3aGljaCBzaWduYWxzIHdlcmUgcmFpc2VkLgogCi0tIElzc3VlICMxMTk5NjogbGlicHl0aG9uIChnZGIpLCByZXBsYWNlICJweS1idCIgY29tbWFuZCBieSAicHktYnQtZnVsbCIgYW5kCi0gIGFkZCBhIHNtYXJ0ZXIgInB5LWJ0IiBjb21tYW5kIHByaW50aW5nIGEgY2xhc3NpYyBQeXRob24gdHJhY2ViYWNrLgorLSBJc3N1ZSAjODQwNzogQWRkIHB0aHJlYWRfa2lsbCgpLCBzaWdwZW5kaW5nKCkgYW5kIHNpZ3dhaXQoKSBmdW5jdGlvbnMgdG8gdGhlCisgIHNpZ25hbCBtb2R1bGUuCiAKLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMjA5NjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGVzdF90aHJlYWRpbmcudGVzdF93YWl0Zm9yKCkuIFBhdGNoCi0gIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTYxNDogaW1wb3J0IF9faGVsbG9fXyBwcmludHMgIkhlbGxvIFdvcmxkISIuIFBhdGNoIHdyaXR0ZW4gYnkKLSAgQW5kcmVhcyBTdMO8aHJrLgotCi0tIElzc3VlICM1NzIzOiBJbXByb3ZlIGpzb24gdGVzdHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxMTkxMDogRml4IHRlc3RfaGVhcHEgdG8gc2tpcCB0aGUgQyB0ZXN0cyB3aGVuIF9oZWFwcSBpcyBtaXNzaW5nLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMi4xIGJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDgtTWF5LTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODU2OiBBdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuIHdoaWxlIHRoZQotICBpbnRlcnByZXRlciBpcyBzaHV0dGluZyBkb3duOyBpbnN0ZWFkLCB0aGVzZSB0aHJlYWRzIGFyZSBub3cga2lsbGVkIHdoZW4gdGhleQotICB0cnkgdG8gdGFrZSB0aGUgR0lMLgotCi0tIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAotICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgotICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCi0gIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwOTE0OiBJbml0aWFsaXplIGNvcnJlY3RseSB0aGUgZmlsZXN5c3RlbSBjb2RlYyB3aGVuIGNyZWF0aW5nIGEgbmV3Ci0gIHN1YmludGVycHJldGVyIHRvIGZpeCBhIGJvb3RzdHJhcCBpc3N1ZSB3aXRoIGNvZGVjcyBpbXBsZW1lbnRlZCBpbiBQeXRob24sIGFzCi0gIHRoZSBJU08tODg1OS0xNSBjb2RlYy4KLQotLSBJc3N1ZSAjMTA1MTc6IEFmdGVyIGZvcmsoKSwgcmVpbml0aWFsaXplIHRoZSBUTFMgdXNlZCBieSB0aGUgUHlHSUxTdGF0ZV8qCi0gIEFQSXMsIHRvIGF2b2lkIGEgY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzY3ODA6IGZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZQotICBhY2NlcHRlZCB0b28uCi0KLS0gSXNzdWUgIzUwNTc6IGZpeCBhIGJ1ZyBpbiB0aGUgcGVlcGhvbGVyIHRoYXQgbGVkIHRvIG5vbi1wb3J0YWJsZSBweWMgZmlsZXMKLSAgYmV0d2VlbiBuYXJyb3cgYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QIGNoYXJzCi0gIChlLmcuICJcVTAwMDEyMzQ1IlswXSkuCi0KLS0gSXNzdWUgIzExODQ1OiBGaXggdHlwbyBpbiByYW5nZW9iamVjdC5jIHRoYXQgY2F1c2VkIGEgY3Jhc2ggaW4KLSAgY29tcHV0ZV9zbGljZV9pbmRpY2VzLiAgUGF0Y2ggYnkgRGFuaWVsIFVyYmFuLgotCi0tIElzc3VlICMxMTY1MDogUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZAotICAoRUlOVFIpLCBmb3IgZXhhbXBsZSBpZiB0aGUgcHJvZ3JhbSBpcyBzdG9wcGVkIHdpdGggQ1RSTCt6IG9uIE1hYyBPUyBYLiBQYXRjaAotICB3cml0dGVuIGJ5IENoYXJsZXMtRnJhbmNvaXMgTmF0YWxpLgotCi0tIElzc3VlICMxMTM5NTogaW8uRmlsZUlPKCkud3JpdGUoKSBjbGFtcHMgdGhlIGRhdGEgbGVuZ3RoIHRvIDMyLDc2NyBieXRlcyBvbgotICBXaW5kb3dzIGlmIHRoZSBmaWxlIGlzIGEgVFRZIHRvIHdvcmthcm91bmQgYSBXaW5kb3dzIGJ1Zy4gVGhlIFdpbmRvd3MgY29uc29sZQotICByZXR1cm5zIGFuIGVycm9yICgxMjogbm90IGVub3VnaCBzcGFjZSBlcnJvcikgb24gd3JpdGluZyBpbnRvIHN0ZG91dCBpZiBzdGRvdXQKLSAgbW9kZSBpcyBiaW5hcnkgYW5kIHRoZSBsZW5ndGggaXMgZ3JlYXRlciB0aGFuIDY2LDAwMCBieXRlcyAob3IgbGVzcywgZGVwZW5kaW5nCi0gIG9uIGhlYXAgdXNhZ2UpLgotCi0tIElzc3VlICMxMTMyMDogZml4IGJvZ3VzIG1lbW9yeSBtYW5hZ2VtZW50IGluIE1vZHVsZXMvZ2V0cGF0aC5jLCBsZWFkaW5nIHRvIGEKLSAgcG9zc2libGUgY3Jhc2ggd2hlbiBjYWxsaW5nIFB5X1NldFBhdGgoKS4KLQotLSBJc3N1ZSAjMTE1MTA6IEZpeGVkIG9wdGltaXplciBidWcgd2hpY2ggdHVybmVkICJhLGI9ezEsMX0iIGludG8gImEsYj0oMSwxKSIuCi0KLS0gSXNzdWUgIzExNDMyOiBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBzdWJwcm9jZXNzLlBvcGVuIG9uIHBvc2l4IHN5c3RlbXMgd2l0aAotICAzLjIuMCB3aGVyZSB0aGUgc3Rkb3V0IG9yIHN0ZGVyciBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHN0ZGluCi0gIGZpbGUgZGVzY3JpcHRvciB3b3VsZCByYWlzZSBhbiBleGNlcHRpb24uIHdlYmJyb3dzZXIub3BlbiB3b3VsZCBmYWlsLiBmaXhlZC4KLQotLSBJc3N1ZSAjMTE0NTA6IERvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuIHRoZXJlCi0gIGFyZSBtYW55IHRhZ3MgKGUuZy4gd2hlbiB1c2luZyBtcSkuICBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzExMjQ2OiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVWIikgdG8gZGVjb2RlIHRoZSBieXRlIHN0cmluZyBmcm9tCi0gIFVURi04ICh3aXRoIHJlcGxhY2UgZXJyb3IgaGFuZGxlcikgaW5zdGVhZCBvZiBJU08tODg1OS0xIChpbiBzdHJpY3QgbW9kZSkuCi0gIFBhdGNoIHdyaXR0ZW4gYnkgUmF5IEFsbGVuLgotCi0tIElzc3VlICMxMTI4NjogUmFpc2UgYSBWYWx1ZUVycm9yIGZyb20gY2FsbGluZyBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlciB3aXRoIGEKLSAgYnVmZmVyIHN0cnVjdCBoYXZpbmcgYSBOVUxMIGRhdGEgcG9pbnRlci4KLQotLSBJc3N1ZSAjMTEyNzI6IE9uIFdpbmRvd3MsIGlucHV0KCkgc3RyaXBzICdccicgKGFuZCBub3Qgb25seSAnXG4nKSwgYW5kCi0gIHN5cy5zdGRpbiB1c2VzIHVuaXZlcnNhbCBuZXdsaW5lIChyZXBsYWNlICdcclxuJyBieSAnXG4nKS4KLQotLSBpc3N1ZSAjMTE4Mjg6IHN0YXJ0c3dpdGggYW5kIGVuZHN3aXRoIGRvbid0IGFjY2VwdCBOb25lIGFzIHNsaWNlIGluZGV4LiAgUGF0Y2gKLSAgYnkgVG9yc3RlbiBCZWNrZXIuCi0KLS0gSXNzdWUgIzEwODMwOiBGaXggUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCIlYyIpIGZvciBub24tQk1QIGNoYXJhY3RlcnMgb24KLSAgbmFycm93IGJ1aWxkLgotCi0tIENoZWNrIGZvciBOVUxMIHJlc3VsdCBpbiBQeVR5cGVfRnJvbVNwZWMuCi0KLS0gSXNzdWUgIzExMzg2OiBieXRlYXJyYXkucG9wKCkgbm93IHRocm93cyBJbmRleEVycm9yIHdoZW4gdGhlIGJ5dGVhcnJheSBpcwotICBlbXB0eSwgaW5zdGVhZCBvZiBPdmVyZmxvd0Vycm9yLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzExOTI3OiBTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaCBieQotICBLYXN1biBIZXJhdGguCistIElzc3VlICMxMTkyNzogU01UUF9TU0wgbm93IHVzZXMgcG9ydCA0NjUgYnkgZGVmYXVsdCBhcyBkb2N1bWVudGVkLiAgUGF0Y2gKKyAgYnkgS2FzdW4gSGVyYXRoLgogCiAtIElzc3VlICMxMjAwMjogZnRwbGliJ3MgYWJvcnQoKSBtZXRob2QgcmFpc2VzIFR5cGVFcnJvci4KIAorLSBJc3N1ZSAjMTE5MTY6IEFkZCBhIG51bWJlciBvZiBNYWNPU1ggc3BlY2lmaWMgZGVmaW5pdGlvbnMgdG8gdGhlIGVycm5vIG1vZHVsZS4KKyAgUGF0Y2ggYnkgUGllcnJlIENhcnJpZXIuCisKIC0gSXNzdWUgIzExOTk5OiBmaXhlZCBzcG9yYWRpYyBzeW5jIGZhaWx1cmUgbWFpbGJveC5NYWlsZGlyIGR1ZSB0byBpdHMgdHJ5aW5nIHRvCiAgIGRldGVjdCBtdGltZSBjaGFuZ2VzIGJ5IGNvbXBhcmluZyB0byB0aGUgc3lzdGVtIGNsb2NrIGluc3RlYWQgb2YgdG8gdGhlCiAgIHByZXZpb3VzIHZhbHVlIG9mIHRoZSBtdGltZS4KIAorLSBJc3N1ZSAjMTEwNzI6IGFkZGVkIE1MU0QgY29tbWFuZCAoUkZDLTM2NTkpIHN1cHBvcnQgdG8gZnRwbGliLgorCistIElzc3VlICM4ODA4OiBUaGUgSU1BUDRfU1NMIGNvbnN0cnVjdG9yIG5vdyBhbGxvd3MgcGFzc2luZyBhbiBTU0xDb250ZXh0CisgIHBhcmFtZXRlciB0byBjb250cm9sIHBhcmFtZXRlcnMgb2YgdGhlIHNlY3VyZSBjaGFubmVsLiAgUGF0Y2ggYnkgU2lqaW4KKyAgSm9zZXBoLgorCiAtIG50cGF0aC5zYW1lZmlsZSBmYWlsZWQgdG8gbm90aWNlIHRoYXQgImEudHh0IiBhbmQgIkEuVFhUIiByZWZlciB0byB0aGUgc2FtZQogICBmaWxlIG9uIFdpbmRvd3MgWFAuIEFzIG5vdGljZWQgaW4gaXNzdWUgIzEwNjg0LgogCi0tIElzc3VlICMxMjAwMDogV2hlbiBhIFNTTCBjZXJ0aWZpY2F0ZSBoYXMgYSBzdWJqZWN0QWx0TmFtZSB3aXRob3V0IGFueSBkTlNOYW1lCi0gIGVudHJ5LCBzc2wubWF0Y2hfaG9zdG5hbWUoKSBzaG91bGQgdXNlIHRoZSBzdWJqZWN0J3MgY29tbW9uTmFtZS4gIFBhdGNoIGJ5Ci0gIE5pY29sYXMgQmFyZWlsLgorLSBJc3N1ZSAjMTIwMDA6IFdoZW4gYSBTU0wgY2VydGlmaWNhdGUgaGFzIGEgc3ViamVjdEFsdE5hbWUgd2l0aG91dCBhbnkKKyAgZE5TTmFtZSBlbnRyeSwgc3NsLm1hdGNoX2hvc3RuYW1lKCkgc2hvdWxkIHVzZSB0aGUgc3ViamVjdCdzIGNvbW1vbk5hbWUuCisgIFBhdGNoIGJ5IE5pY29sYXMgQmFyZWlsLgogCi0tIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQgbW9yZQotICB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2ggYnkgWXNqCi0gIFJheS4KKy0gSXNzdWUgIzEwNzc1OiBhc3NlcnRSYWlzZXMsIGFzc2VydFJhaXNlc1JlZ2V4LCBhc3NlcnRXYXJucywgYW5kCisgIGFzc2VydFdhcm5zUmVnZXggbm93IGFjY2VwdCBhIGtleXdvcmQgYXJndW1lbnQgJ21zZycgd2hlbiB1c2VkIGFzIGNvbnRleHQKKyAgbWFuYWdlcnMuICBJbml0aWFsIHBhdGNoIGJ5IFdpbnN0b24gRXdlcnQuCisKKy0gSXNzdWUgIzEwNjg0OiBzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlCisgIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZSB3aGVyZSB0aGUgc2FtZSBleGNlcHQKKyAgZm9yIHRoZSBjYXNlLgorCistIElzc3VlICMxMTY0Nzogb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgbm93IHN1cHBvcnQKKyAgbW9yZSB0aGFuIG9uZSBjYWxsIHRvIHRoZSBmdW5jdGlvbiB3aGVuIHVzZWQgYXMgYSBkZWNvcmF0b3IuIEluaXRpYWwgcGF0Y2gKKyAgYnkgWXNqIFJheS4KKworLSBJc3N1ZSAjMTE5MzA6IFJlbW92ZWQgZGVwcmVjYXRlZCB0aW1lLmFjY2VwdDJkeWVhciB2YXJpYWJsZS4KKyAgUmVtb3ZlZCB5ZWFyID49IDEwMDAgcmVzdHJpY3Rpb24gZnJvbSBkYXRldGltZS5zdHJmdGltZS4KIAogLSBsb2dnaW5nOiBkb24ndCBkZWZpbmUgUXVldWVMaXN0ZW5lciBpZiBQeXRob24gaGFzIG5vIHRocmVhZCBzdXBwb3J0LgogCkBAIC0xOTIyLDE2ICszNTE3LDM5IEBACiAtIElzc3VlICMxMTI3NzogbW1hcC5tbWFwKCkgY2FsbHMgZmNudGwoZmQsIEZfRlVMTEZTWU5DKSBvbiBNYWMgT1MgWCB0byBnZXQKICAgYXJvdW5kIGEgbW1hcCBidWcgd2l0aCBzcGFyc2UgZmlsZXMuIFBhdGNoIHdyaXR0ZW4gYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KIAorLSBJc3N1ZSAjODQwNzogQWRkIHNpZ25hbC5wdGhyZWFkX3NpZ21hc2soKSBmdW5jdGlvbiB0byBmZXRjaCBhbmQvb3IgY2hhbmdlIHRoZQorICBzaWduYWwgbWFzayBvZiB0aGUgY2FsbGluZyB0aHJlYWQuCisKIC0gSXNzdWUgIzExODU4OiBjb25maWdwYXJzZXIuRXh0ZW5kZWRJbnRlcnBvbGF0aW9uIGV4cGVjdGVkIGxvd2VyLWNhc2Ugc2VjdGlvbgogICBuYW1lcy4KIAogLSBJc3N1ZSAjMTEzMjQ6IENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpIG5vdyB3b3JrcyBjb3JyZWN0bHkuCiAKKy0gSXNzdWUgIzExODExOiBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgpIGlzIG5vdyBJUHY2LWNvbXBhdGlibGUuICBQYXRjaAorICBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKIC0gSXNzdWUgIzExNzYzOiBkb24ndCB1c2UgZGlmZmxpYiBpbiBUZXN0Q2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbCBpZiB0aGUKICAgc3RyaW5ncyBhcmUgdG9vIGxvbmcuCiAKIC0gSXNzdWUgIzExMjM2OiBnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KIAorLSBJc3N1ZSAjMTE4NTY6IFNwZWVkIHVwIHBhcnNpbmcgb2YgSlNPTiBudW1iZXJzLgorCistIElzc3VlICMxMTAwNTogdGhyZWFkaW5nLlJMb2NrKCkuX3JlbGVhc2Vfc2F2ZSgpIHJhaXNlcyBhIFJ1bnRpbWVFcnJvciBpZiB0aGUKKyAgbG9jayB3YXMgbm90IGFjcXVpcmVkLgorCistIElzc3VlICMxMTI1ODogU3BlZWQgdXAgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCkgdW5kZXIgTGludXggYnkgYSBmYWN0b3IKKyAgb2YgNSB0byAxMC4gIEluaXRpYWwgcGF0Y2ggYnkgSm9uYXMgSC4KKworLSBJc3N1ZSAjMTEzODI6IFRyaXZpYWwgc3lzdGVtIGNhbGxzLCBzdWNoIGFzIGR1cCgpIG9yIHBpcGUoKSwgbmVlZG4ndAorICByZWxlYXNlIHRoZSBHSUwuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzExMjIzOiBBZGQgdGhyZWFkaW5nLl9pbmZvKCkgZnVuY3Rpb24gcHJvdmlkaW5nIGluZm9ybWF0aW9ucyBhYm91dAorICB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLgorCistIElzc3VlICMxMTczMTogc2ltcGxpZnkvZW5oYW5jZSBlbWFpbCBwYXJzZXIvZ2VuZXJhdG9yIEFQSSBieSBpbnRyb2R1Y2luZworICBwb2xpY3kgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMTE3Njg6IFRoZSBzaWduYWwgaGFuZGxlciBvZiB0aGUgc2lnbmFsIG1vZHVsZSBvbmx5IGNhbGxzCiAgIFB5X0FkZFBlbmRpbmdDYWxsKCkgZm9yIHRoZSBmaXJzdCBzaWduYWwgdG8gZml4IGEgZGVhZGxvY2sgb24gcmVlbnRyYW50IG9yCiAgIHBhcmFsbGVsIGNhbGxzLiBQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCkBAIC0xOTUxLDYgKzM1NjksMTAgQEAKIC0gSXNzdWUgIzExNDc0OiBGaXggdGhlIGJ1ZyB3aXRoIHVybDJwYXRobmFtZSgpIGhhbmRsaW5nIG9mICcvQ3wvJyBvbiBXaW5kb3dzLgogICBQYXRjaCBieSBTYW50b3NvIFdpamF5YS4KIAorLSBJc3N1ZSAjMTE2ODQ6IGNvbXBsZXRlIGVtYWlsLnBhcnNlciBieXRlcyBBUEkgYnkgYWRkaW5nIEJ5dGVzSGVhZGVyUGFyc2VyLgorCistIFRoZSBiejIgbW9kdWxlIG5vdyBoYW5kbGVzIDRHaUIrIGlucHV0IGJ1ZmZlcnMgY29ycmVjdGx5LgorCiAtIElzc3VlICM5MjMzOiBGaXgganNvbi5sb2Fkcygne30nKSB0byByZXR1cm4gYSBkaWN0IChpbnN0ZWFkIG9mIGEgbGlzdCksIHdoZW4KICAgX2pzb24gaXMgbm90IGF2YWlsYWJsZS4KIApAQCAtMTk2MiwxNyArMzU4NCwzMyBAQAogLSBJc3N1ZSAjMTAwMTk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZAogICBhZGRpbmcgbmV3bGluZXMgYW5kIGFjdGVkIGluc3RlYWQgbGlrZSAnTm9uZScuCiAKKy0gSXNzdWUgIzExMTg2OiBweWRvYyBpZ25vcmVzIGEgbW9kdWxlIGlmIGl0cyBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlCisgIGNoYXJhY3RlciBpbiB0aGUgaW5kZXggb2YgbW9kdWxlcy4KKworLSBJc3N1ZSAjMTE4MTU6IFVzZSBhIGxpZ2h0LXdlaWdodCBTaW1wbGVRdWV1ZSBmb3IgdGhlIHJlc3VsdCBxdWV1ZSBpbgorICBjb25jdXJyZW50LmZ1dHVyZXMuUHJvY2Vzc1Bvb2xFeGVjdXRvci4KKwogLSBJc3N1ZSAjNTE2MjogVHJlYXQgc2VydmljZXMgbGlrZSBmcm96ZW4gZXhlY3V0YWJsZXMgdG8gYWxsb3cgY2hpbGQgc3Bhd25pbmcKICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcuZm9ya2luZyBvbiBXaW5kb3dzLgogCistIGxvZ2dpbmcuYmFzaWNDb25maWcgbm93IHN1cHBvcnRzIGFuIG9wdGlvbmFsICdoYW5kbGVycycgYXJndW1lbnQgdGFraW5nIGFuCisgIGl0ZXJhYmxlIG9mIGhhbmRsZXJzIHRvIGJlIGFkZGVkIHRvIHRoZSByb290IGxvZ2dlci4gQWRkaXRpb25hbCBwYXJhbWV0ZXIKKyAgY2hlY2tzIHdlcmUgYWxzbyBhZGRlZCB0byBiYXNpY0NvbmZpZy4KKwogLSBJc3N1ZSAjMTE4MTQ6IEZpeCBsaWtlbHkgdHlwbyBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbC5fdGVybWluYXRlKCkuCiAKIC0gSXNzdWUgIzExNzQ3OiBGaXggcmFuZ2UgZm9ybWF0dGluZyBpbiBkaWZmbGliLmNvbnRleHRfZGlmZigpIGFuZAogICBkaWZmbGliLnVuaWZpZWRfZGlmZigpLgogCiAtIElzc3VlICM4NDI4OiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBtdWx0aXByb2Nlc3NpbmcuUG9vbCB3aGVuIHRlcm1pbmF0aW5nCi0gIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZyBzaHV0Ci0gIGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisgIHdvcmtlciBwcm9jZXNzZXM6IG5ldyBwcm9jZXNzZXMgd291bGQgYmUgc3Bhd25lZCB3aGlsZSB0aGUgcG9vbCBpcyBiZWluZworICBzaHV0IGRvd24uICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzI2NTA6IHJlLmVzY2FwZSgpIG5vIGxvbmdlciBlc2NhcGVzIHRoZSAnXycuCisKKy0gSXNzdWUgIzExNzU3OiBzZWxlY3Quc2VsZWN0KCkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYSBuZWdhdGl2ZSB0aW1lb3V0CisgIGlzIHBhc3NlZCAocHJldmlvdXNseSwgYSBzZWxlY3QuZXJyb3Igd2l0aCBFSU5WQUwgd291bGQgYmUgcmFpc2VkKS4gIFBhdGNoCisgIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KIAogLSBJc3N1ZSAjNzMxMTogZml4IGh0bWwucGFyc2VyIHRvIGFjY2VwdCBub24tQVNDSUkgYXR0cmlidXRlIHZhbHVlcy4KIApAQCAtMTk4MCwyMSArMzYxOCw1MCBAQAogICBtdWx0aXBhcnQgc3VicGFydHMgd2l0aCBhbiA4LWJpdCBDVEUgaW50byB1bmljb2RlIGluc3RlYWQgb2YgcHJlc2VydmluZyB0aGUKICAgYnl0ZXMuCiAKKy0gSXNzdWUgIzE2OTA2MDg6IGVtYWlsLnV0aWwuZm9ybWF0YWRkciBpcyBub3cgUkZDIDIwNDcgYXdhcmU6ICBpdCBub3cgaGFzIGEKKyAgY2hhcnNldCBwYXJhbWV0ZXIgdGhhdCBkZWZhdWx0cyB0byB1dGYtOCBhbmQgaXMgdXNlZCBhcyB0aGUgY2hhcnNldCBmb3IgUkZDCisgIDIwNDcgZW5jb2Rpbmcgd2hlbiB0aGUgcmVhbG5hbWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCisKIC0gSXNzdWUgIzEwOTYzOiBFbnN1cmUgdGhhdCBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgbmV2ZXIgcmFpc2VzIEVQSVBFLgogCistIElzc3VlICMxMDc5MTogSW1wbGVtZW50IG1pc3NpbmcgbWV0aG9kIEd6aXBGaWxlLnJlYWQxKCksIGFsbG93aW5nIEd6aXBGaWxlCisgIHRvIGJlIHdyYXBwZWQgaW4gYSBUZXh0SU9XcmFwcGVyLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCistIElzc3VlICMxMTcwNzogQWRkZWQgYSBmYXN0IEMgdmVyc2lvbiBvZiBmdW5jdG9vbHMuY21wX3RvX2tleSgpLgorICBQYXRjaCBieSBGaWxpcCBHcnVzemN6ecWEc2tpLgorCistIElzc3VlICMxMTY4ODogQWRkIHNxbGl0ZTMuQ29ubmVjdGlvbi5zZXRfdHJhY2VfY2FsbGJhY2soKS4gIFBhdGNoIGJ5CisgIFRvcnN0ZW4gTGFuZHNjaG9mZi4KKwogLSBJc3N1ZSAjMTE3NDY6IEZpeCBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbigpIHRvIGFjY2VwdCBlbGxpcHRpYyBjdXJ2ZQogICBwcml2YXRlIGtleXMuCiAKKy0gSXNzdWUgIzU4NjM6IFJld3JpdGUgQloyRmlsZSBpbiBwdXJlIFB5dGhvbiwgYW5kIGFsbG93IGl0IHRvIGFjY2VwdAorICBmaWxlLWxpa2Ugb2JqZWN0cyB1c2luZyBhIG5ldyBgYGZpbGVvYmpgYCBjb25zdHJ1Y3RvciBhcmd1bWVudC4gIFBhdGNoIGJ5CisgIE5hZGVlbSBWYXdkYS4KKworLSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRTYW1lRWxlbWVudHMgaGFzIGJlZW4gcmVtb3ZlZC4KKwogLSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgUnVudGltZUVycm9yIGlmIGluaXRmc2VuY29kaW5nKCkgd2FzIG5vdAogICBjYWxsZWQgeWV0OiBkZXRlY3QgYm9vdHN0cmFwIChzdGFydHVwKSBpc3N1ZXMgZWFybGllci4KIAorLSBJc3N1ZSAjMTEzOTM6IEFkZCB0aGUgbmV3IGZhdWx0aGFuZGxlciBtb2R1bGUuCisKIC0gSXNzdWUgIzExNjE4OiBGaXggdGhlIHRpbWVvdXQgbG9naWMgaW4gdGhyZWFkaW5nLkxvY2suYWNxdWlyZSgpIHVuZGVyIFdpbmRvd3MuCiAKKy0gUmVtb3ZlZCB0aGUgJ3N0cmljdCcgYXJndW1lbnQgdG8gZW1haWwucGFyc2VyLlBhcnNlciwgd2hpY2ggaGFzIGJlZW4KKyAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMi40LgorCiAtIElzc3VlICMxMTI1NjogRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3Mgb24gZnVuY3Rpb25zIHRoYXQgdGFrZSBvbmx5IGtleXdvcmQKICAgYXJndW1lbnRzLgogCiAtIElzc3VlICMxMTY5NjogRml4IElEIGdlbmVyYXRpb24gaW4gbXNpbGliLgogCistIGl0ZXJ0b29scy5hY2N1bXVsYXRlIG5vdyBzdXBwb3J0cyBhbiBvcHRpb25hbCAqZnVuYyogYXJndW1lbnQgZm9yCisgIGEgdXNlci1zdXBwbGllZCBiaW5hcnkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzExNjkyOiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVtbyBmdW5jdGlvbnMgaW4gc3VicHJvY2VzcyBtb2R1bGUuCisKIC0gSXNzdWUgIzk2OTY6IEZpeCBleGNlcHRpb24gaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IHhkcmxpYi5QYWNrZXIucGFja19pbnQgd2hlbgogICB0cnlpbmcgdG8gcGFjayBhIG5lZ2F0aXZlIChpbi1yYW5nZSkgaW50ZWdlci4KIApAQCAtMjAxMCw3ICszNjc3LDI2IEBACiAtIElzc3VlICMxMTYzNTogRG9uJ3QgdXNlIHBvbGxpbmcgaW4gd29ya2VyIHRocmVhZHMgYW5kIHByb2Nlc3NlcyBsYXVuY2hlZCBieQogICBjb25jdXJyZW50LmZ1dHVyZXMuCiAKLS0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXworLSBJc3N1ZSAjNjgxMTogQWxsb3cgaW1wb3J0bGliIHRvIGNoYW5nZSBhIGNvZGUgb2JqZWN0J3MgY29fZmlsZW5hbWUgYXR0cmlidXRlCisgIHRvIG1hdGNoIHRoZSBwYXRoIHRvIHdoZXJlIHRoZSBzb3VyY2UgY29kZSBjdXJyZW50bHkgaXMsIG5vdCB3aGVyZSB0aGUgY29kZQorICBvYmplY3Qgb3JpZ2luYWxseSBjYW1lIGZyb20uCisKKy0gSXNzdWUgIzg3NTQ6IEhhdmUgaW1wb3J0bGliIHVzZSB0aGUgcmVwciBvZiBhIG1vZHVsZSBuYW1lIGluIGVycm9yIG1lc3NhZ2VzLgorCistIElzc3VlICMxMTU5MTogUHJldmVudCAiaW1wb3J0IHNpdGUiIGZyb20gbW9kaWZ5aW5nIHN5cy5wYXRoIHdoZW4gcHl0aG9uCisgIHdhcyBzdGFydGVkIHdpdGggLVMuCisKKy0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIG5vdyBhZGRzIGEgX3NvdXJjZSBhdHRyaWJ1dGUgdG8gdGhlIGdlbmVyYXRlZAorICBjbGFzcy4gIFRoaXMgbWFrZSB0aGUgc291cmNlIG1vcmUgYWNjZXNzaWJsZSB0aGFuIHRoZSBvdXRkYXRlZAorICAidmVyYm9zZSIgb3B0aW9uIHdoaWNoIHByaW50cyB0byBzdGRvdXQgYnV0IGRvZXNuJ3QgbWFrZSB0aGUgc291cmNlCisgIHN0cmluZyBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzExMzcxOiBNYXJrIGdldG9wdCBlcnJvciBtZXNzYWdlcyBhcyBsb2NhbGl6YWJsZS4gIFBhdGNoIGJ5IEZpbGlwCisgIEdydXN6Y3p5xYRza2kuCisKKy0gSXNzdWUgIzExMzMzOiBBZGQgX19zbG90c19fIHRvIGNvbGxlY3Rpb25zIEFCQ3MuCisKKy0gSXNzdWUgIzExNjI4OiBjbXBfdG9fa2V5IGdlbmVyYXRlZCBjbGFzcyBzaG91bGQgdXNlIF9fc2xvdHNfXy4KIAogLSBJc3N1ZSAjMTE2NjY6IGxldCBoZWxwKCkgZGlzcGxheSBuYW1lZCB0dXBsZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzCiAgIHRoYXQgc3RhcnQgd2l0aCBhIGxlYWRpbmcgdW5kZXJzY29yZS4KQEAgLTIwMjEsNiArMzcwNywxMCBAQAogLSBJc3N1ZSAjNTUzNzogRml4IHRpbWUyaXNveigpIGFuZCB0aW1lMm5ldHNjYXBlKCkgZnVuY3Rpb25zIG9mCiAgIGh0dHBsaWIuY29va2llamFyIGZvciBleHBpcmF0aW9uIHllYXIgZ3JlYXRlciB0aGFuIDIwMzggb24gMzItYml0IHN5c3RlbXMuCiAKKy0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgZ2V0dGV4dCBwbHVyYWwgZm9ybXMgaW4gb3B0cGFyc2UuCisKKy0gSXNzdWUgIzExMTI3OiBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRyeWluZyB0byBwaWNrbGUgYSBzb2NrZXQgb2JqZWN0LgorCiAtIElzc3VlICMxMTU2MzogQ29ubmVjdGlvbjpjbG9zZSBoZWFkZXIgaXMgc2VudCBieSByZXF1ZXN0cyB1c2luZyBVUkxPcGVuZXIKICAgY2xhc3Mgd2hpY2ggaGVscHMgaW4gY2xvc2luZyBvZiBzb2NrZXRzIGFmdGVyIGNvbm5lY3Rpb24gaXMgb3Zlci4gUGF0Y2gKICAgY29udHJpYnV0aW9ucyBieSBKZWZmIE1jTmVpbCBhbmQgTmFkZWVtIFZhd2RhLgpAQCAtMjAzMSw2ICszNzIxLDggQEAKIC0gSXNzdWUgIzU0MjE6IEZpeCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2Ugd2hlbiBvbmUgb2Ygc29ja2V0LnNlbmR0bygpJ3MKICAgYXJndW1lbnRzIGhhcyB0aGUgd3JvbmcgdHlwZS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCiAKKy0gSXNzdWUgIzEwODEyOiBBZGQgc29tZSBleHRyYSBwb3NpeCBmdW5jdGlvbnMgdG8gdGhlIG9zIG1vZHVsZS4KKwogLSBJc3N1ZSAjMTA5Nzk6IHVuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZQogICBzZXR1cCBhbmQgdGVhcmRvd24uCiAKQEAgLTIwNDMsNzUgKzM3MzUsMTU0IEBACiAgIHJlbGF0aXZlIHRvIFB5dGhvbjIgYW5kIHRoZSByZXN1bHQgaXMgbm93IHRoZSBzYW1lIGFzIGl0IHdhcyBpbiBQeXRob24yLgogCiAtIElzc3VlICM5Mjk4OiBiYXNlNjQgYm9kaWVzIHdlcmVuJ3QgYmVpbmcgZm9sZGVkIHRvIGxpbmUgbGVuZ3RocyBsZXNzIHRoYW4gNzgsCi0gIHdoaWNoIHdhcyBhIHJlZ3Jlc3Npb24gcmVsYXRpdmUgdG8gUHl0aG9uMi4gIFVubGlrZSBQeXRob24yLCB0aGUgbGFzdCBsaW5lIG9mCi0gIHRoZSBmb2xkZWQgYm9keSBub3cgZW5kcyB3aXRoIGEgY2FycmlhZ2UgcmV0dXJuLgorICB3aGljaCB3YXMgYSByZWdyZXNzaW9uIHJlbGF0aXZlIHRvIFB5dGhvbjIuICBVbmxpa2UgUHl0aG9uMiwgdGhlIGxhc3QgbGluZQorICBvZiB0aGUgZm9sZGVkIGJvZHkgbm93IGVuZHMgd2l0aCBhIGNhcnJpYWdlIHJldHVybi4KIAogLSBJc3N1ZSAjMTE1NjA6IHNodXRpbC51bnBhY2tfYXJjaGl2ZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIGZvcm1hdAogICBwYXJhbWV0ZXIuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KIAorLSBJc3N1ZSAjNTg3MDogQWRkIGBzdWJwcm9jZXNzLkRFVk5VTExgIGNvbnN0YW50LgorCiAtIElzc3VlICMxMTEzMzogZml4IHR3byBjYXNlcyB3aGVyZSBpbnNwZWN0LmdldGF0dHJfc3RhdGljIGNhbiB0cmlnZ2VyIGNvZGUKICAgZXhlY3V0aW9uLiBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCiAKIC0gSXNzdWUgIzExNTY5OiB1c2UgYWJzb2x1dGUgcGF0aCB0byB0aGUgc3lzY3RsIGNvbW1hbmQgaW4gbXVsdGlwcm9jZXNzaW5nIHRvCi0gIGVuc3VyZSB0aGF0IGl0IHdpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzIHRoYXQKLSAgbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCB3b3JrcyBvbiBkZWZhdWx0IGluc3RhbGxzIG9mIE1hY09TWC4KKyAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMKKyAgdGhhdCBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgogCiAtIElzc3VlICMxMTUwMTogZGlzdXRpbHMuYXJjaGl2ZV91dGlscy5tYWtlX3ppcGZpbGUgbm8gbG9uZ2VyIGZhaWxzIGlmIHpsaWIgaXMKICAgbm90IGluc3RhbGxlZC4gSW5zdGVhZCwgdGhlIHppcGZpbGUuWklQX1NUT1JFRCBjb21wcmVzc2lvbiBpcyB1c2VkIHRvIGNyZWF0ZQogICB0aGUgWmlwRmlsZS4gUGF0Y2ggYnkgTmF0YWxpYSBCLiBCaWRhcnQuCiAKKy0gSXNzdWUgIzExMjg5OiBgc210cC5TTVRQYCBjbGFzcyBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIgc28gaXQgY2FuIGJlIHVzZWQKKyAgaW4gYSBgd2l0aGAgc3RhdGVtZW50LiAgQ29udHJpYnV0ZWQgYnkgR2lhbXBhb2xvIFJvZG9sYS4KKwogLSBJc3N1ZSAjMTE1NTQ6IEZpeGVkIHN1cHBvcnQgZm9yIEphcGFuZXNlIGNvZGVjczsgcHJldmlvdXNseSB0aGUgYm9keSBvdXRwdXQKICAgZW5jb2Rpbmcgd2FzIG5vdCBkb25lIGlmIGV1Yy1qcCBvciBzaGlmdC1qaXMgd2FzIHNwZWNpZmllZCBhcyB0aGUgY2hhcnNldC4KIAotLSBJc3N1ZSAjMTE1MDA6IEZpeGVkIGEgYnVnIGluIHRoZSBvcyB4IHByb3h5IGJ5cGFzcyBjb2RlIGZvciBmdWxseSBxdWFsaWZpZWQgSVAKLSAgYWRkcmVzc2VzIGluIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KKy0gSXNzdWUgIzExNTA5OiBTaWduaWZpY2FudGx5IGluY3JlYXNlIHRlc3QgY292ZXJhZ2Ugb2YgZmlsZWlucHV0LgorICBQYXRjaCBieSBEZW52ZXIgQ29uZXliZWFyZSBhdCBQeUNvbiAyMDExIFNwcmludHMuCiAKLS0gSXNzdWUgIzExNDkxOiBkYm0uZXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCB3aGVuIGRibS5vcGVuIGlzIGNhbGxlZCB3aXRoIHRoZQotICAibiIgYXMgdGhlIGZsYWcgYXJndW1lbnQgYW5kIHRoZSBmaWxlIGV4aXN0cy4gVGhlIGJlaGF2aW9yIG1hdGNoZXMgdGhlCi0gIGRvY3VtZW50YXRpb24gYW5kIGdlbmVyYWwgbG9naWMuCistIElzc3VlICMxMTQwNzogYFRlc3RDYXNlLnJ1bmAgcmV0dXJucyB0aGUgcmVzdWx0IG9iamVjdCB1c2VkIG9yIGNyZWF0ZWQuCisgIENvbnRyaWJ1dGVkIGJ5IEphbmF0aGFuIEhhcnRsZXkuCiAKLS0gSXNzdWUgIzExMTMxOiBGaXggc2lnbiBvZiB6ZXJvIGluIGRlY2ltYWwuRGVjaW1hbCBwbHVzIGFuZCBtaW51cyBvcGVyYXRpb25zCi0gIHdoZW4gdGhlIHJvdW5kaW5nIG1vZGUgaXMgUk9VTkRfRkxPT1IuCistIElzc3VlICMxMTUwMDogRml4ZWQgYSBidWcgaW4gdGhlIE9TIFggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZAorICBJUCBhZGRyZXNzZXMgaW4gdGhlIHByb3h5IGV4Y2VwdGlvbiBsaXN0LgorCistIElzc3VlICMxMTQ5MTogZGJtLmVycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgd2hlbiBkYm0ub3BlbiBpcyBjYWxsZWQgd2l0aAorICB0aGUgIm4iIGFzIHRoZSBmbGFnIGFyZ3VtZW50IGFuZCB0aGUgZmlsZSBleGlzdHMuIFRoZSBiZWhhdmlvciBtYXRjaGVzCisgIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBnZW5lcmFsIGxvZ2ljLgorCistIElzc3VlICMxMTYyNDc3OiBQb3N0ZWwgUHJpbmNpcGxlIGFkanVzdG1lbnQgdG8gZW1haWwgZGF0ZSBwYXJzaW5nOiBoYW5kbGUgdGhlCisgIGZhY3QgdGhhdCBzb21lIG5vbi1jb21wbGlhbnQgTVVBcyB1c2UgJy4nIGluc3RlYWQgb2YgJzonIGluIHRpbWUgc3BlY3MuCisKKy0gSXNzdWUgIzExMTMxOiBGaXggc2lnbiBvZiB6ZXJvIGluIGRlY2ltYWwuRGVjaW1hbCBwbHVzIGFuZCBtaW51cworICBvcGVyYXRpb25zIHdoZW4gdGhlIHJvdW5kaW5nIG1vZGUgaXMgUk9VTkRfRkxPT1IuCisKKy0gSXNzdWUgIzk5MzU6IFNwZWVkIHVwIHBpY2tsaW5nIG9mIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3Nlcy4KIAogLSBJc3N1ZSAjNTYyMjogRml4IGN1cnNlcy53cmFwcGVyIHRvIHJhaXNlIGNvcnJlY3QgZXhjZXB0aW9uIGlmIGN1cnNlcwogICBpbml0aWFsaXphdGlvbiBmYWlscy4KIAorLSBJc3N1ZSAjMTE0MDg6IEluIHRocmVhZGluZy5Mb2NrLmFjcXVpcmUoKSwgb25seSBjYWxsIGdldHRpbWVvZmRheSgpIHdoZW4KKyAgcmVhbGx5IG5lY2Vzc2FyeS4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKwogLSBJc3N1ZSAjMTEzOTE6IFdyaXRpbmcgdG8gYSBtbWFwIG9iamVjdCBjcmVhdGVkIHdpdGgKICAgYGBtbWFwLlBST1RfUkVBRHxtbWFwLlBST1RfRVhFQ2BgIHdvdWxkIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhCiAgIFR5cGVFcnJvci4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KIAotLSBJc3N1ZSAjMTEzMDY6IG1haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4gY2VydGFpbgotICBmaWxlcyBpbiByZWFkLXdyaXRlIG1vZGUuICBQcmV2aW91c2x5IGl0IGRldGVjdGVkIHRoaXMgYnkgY2hlY2tpbmcgZm9yIEVBQ0NFUywKLSAgbm93IGl0IGFsc28gY2hlY2tzIGZvciBFUk9GUy4KKy0gSXNzdWUgIzk3OTU6IGFkZCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc3VwcG9ydCBmb3Igbm50cGxpYi5OTlRQIGNsYXNzLgogCi0tIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycyBvbgotICBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCistIElzc3VlICMxMTMwNjogbWFpbGJveCBpbiBjZXJ0YWluIGNhc2VzIGFkYXB0cyB0byBhbiBpbmFiaWxpdHkgdG8gb3BlbgorICBjZXJ0YWluIGZpbGVzIGluIHJlYWQtd3JpdGUgbW9kZS4gIFByZXZpb3VzbHkgaXQgZGV0ZWN0ZWQgdGhpcyBieQorICBjaGVja2luZyBmb3IgRUFDQ0VTLCBub3cgaXQgYWxzbyBjaGVja3MgZm9yIEVST0ZTLgorCistIElzc3VlICMxMTI2NTogYXN5bmNvcmUgbm93IGNvcnJlY3RseSBoYW5kbGVzIEVQSVBFLCBFQkFERiBhbmQgRUFHQUlOIGVycm9ycworICBvbiBhY2NlcHQoKSwgc2VuZCgpIGFuZCByZWN2KCkuCisKKy0gSXNzdWUgIzExMzc3OiBEZXByZWNhdGUgcGxhdGZvcm0ucG9wZW4oKSBhbmQgcmVpbXBsZW1lbnQgaXQgd2l0aCBvcy5wb3BlbigpLgorCistIElzc3VlICM4NTEzOiBPbiBVTklYLCBzdWJwcm9jZXNzIHN1cHBvcnRzIGJ5dGVzIGNvbW1hbmQgc3RyaW5nLgorCistIElzc3VlICMxMDg2NjogQWRkIHNvY2tldC5zZXRob3N0bmFtZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLSBJc3N1ZSAjMTExNDA6IExvY2sucmVsZWFzZSgpIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3Igd2hlbiBhdHRlbXB0aW5nCisgIHRvIHJlbGVhc2UgYW4gdW5hY3F1aXJlZCBsb2NrLCBhcyBjbGFpbWVkIGluIHRoZSB0aHJlYWRpbmcgZG9jdW1lbnRhdGlvbi4KKyAgVGhlIF90aHJlYWQuZXJyb3IgZXhjZXB0aW9uIGlzIG5vdyBhbiBhbGlhcyBvZiBSdW50aW1lRXJyb3IuICBQYXRjaCBieQorICBGaWxpcCBHcnVzemN6ecWEc2tpLiAgUGF0Y2ggZm9yIF9kdW1teV90aHJlYWQgYnkgQXltZXJpYyBBdWd1c3Rpbi4KKworLSBJc3N1ZSAjODU5NDogZnRwbGliIG5vdyBwcm92aWRlcyBhIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdoaWNoCisgIChhZGRyZXNzLCBwb3J0KSB0byBiaW5kIHRvIGJlZm9yZSBjb25uZWN0aW5nLgogCiAtIElzc3VlICMxMTMyNjogQWRkIHRoZSBtaXNzaW5nIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1NMIHNvY2tldHMsCiAgIGFuZCBtYWtlIGl0IHdvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KIAorLSBJc3N1ZSAjMTEyOTc6IEFkZCBjb2xsZWN0aW9ucy5DaGFpbk1hcCgpLgorCistIElzc3VlICMxMDc1NTogQWRkIHRoZSBwb3NpeC5mbGlzdGRpcigpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy0gSXNzdWUgIzQ3NjE6IEFkZCB0aGUgYGAqYXQoKWBgIGZhbWlseSBvZiBmdW5jdGlvbnMgKG9wZW5hdCgpLCBldGMuKSB0byB0aGUKKyAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKIC0gSXNzdWUgIzczMjI6IFRyeWluZyB0byByZWFkIGZyb20gYSBzb2NrZXQncyBmaWxlLWxpa2Ugb2JqZWN0IGFmdGVyIGEgdGltZW91dAogICBvY2N1cnJlZCBub3cgcmFpc2VzIGFuIGVycm9yIGluc3RlYWQgb2Ygc2lsZW50bHkgbG9zaW5nIGRhdGEuCiAKKy0gSXNzdWUgIzExMjkxOiBwb3BsaWIuUE9QIG5vIGxvbmdlciBzdXBwcmVzc2VzIGVycm9ycyBvbiBxdWl0KCkuCisKKy0gSXNzdWUgIzExMTc3OiBhc3luY29yZSdzIGNyZWF0ZV9zb2NrZXQoKSBhcmd1bWVudHMgY2FuIG5vdyBiZSBvbWl0dGVkLgorCistIElzc3VlICM2MDY0OiBBZGQgYSBgYGRhZW1vbmBgIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIHRocmVhZGluZy5UaHJlYWQKKyAgYW5kIG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzIGNvbnN0cnVjdG9ycyBpbiBvcmRlciB0byBvdmVycmlkZSB0aGUKKyAgZGVmYXVsdCBiZWhhdmlvdXIgb2YgaW5oZXJpdGluZyB0aGUgZGFlbW9uaWMgcHJvcGVydHkgZnJvbSB0aGUgY3VycmVudAorICB0aHJlYWQvcHJvY2Vzcy4KKwogLSBJc3N1ZSAjMTA5NTY6IEJ1ZmZlcmVkIEkvTyBjbGFzc2VzIHJldHJ5IHJlYWRpbmcgb3Igd3JpdGluZyBhZnRlciBhIHNpZ25hbAogICBoYXMgYXJyaXZlZCBhbmQgdGhlIGhhbmRsZXIgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LgogCistIElzc3VlICMxMDc4NDogTmV3IG9zLmdldHByaW9yaXR5KCkgYW5kIG9zLnNldHByaW9yaXR5KCkgZnVuY3Rpb25zLgorCistIElzc3VlICMxMTExNDogRml4IGNhdGFzdHJvcGhpYyBwZXJmb3JtYW5jZSBvZiB0ZWxsKCkgb24gdGV4dCBmaWxlcyAodXAKKyAgdG8gMTAwMHggZmFzdGVyIGluIHNvbWUgY2FzZXMpLiAgSXQgaXMgc3RpbGwgb25lIHRvIHR3byBvcmRlciBvZiBtYWduaXR1ZGVzCisgIHNsb3dlciB0aGFuIGJpbmFyeSB0ZWxsKCkuCisKKy0gSXNzdWUgIzEwODgyOiBBZGQgb3Muc2VuZGZpbGUgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEwODY4OiBBbGxvdyB1c2FnZSBvZiB0aGUgcmVnaXN0ZXIgbWV0aG9kIG9mIGFuIEFCQyBhcyBhIGNsYXNzCisgIGRlY29yYXRvci4KKwogLSBJc3N1ZSAjMTEyMjQ6IEZpeGVkIGEgcmVncmVzc2lvbiBpbiB0YXJmaWxlIHRoYXQgYWZmZWN0ZWQgdGhlIGZpbGUtbGlrZQogICBvYmplY3RzIHJldHVybmVkIGJ5IFRhckZpbGUuZXh0cmFjdGZpbGUoKSByZWdhcmRpbmcgcGVyZm9ybWFuY2UsIG1lbW9yeQogICBjb25zdW1wdGlvbiBhbmQgZmFpbHVyZXMgd2l0aCB0aGUgc3RyZWFtIGludGVyZmFjZS4KIAorLSBJc3N1ZSAjMTA5MjQ6IEFkZGluZyBzYWx0IGFuZCBNb2R1bGFyIENyeXB0IEZvcm1hdCB0byBjcnlwdCBsaWJyYXJ5LgorICBNb3ZlZCBvbGQgQyB3cmFwcGVyIHRvIF9jcnlwdCwgYW5kIGFkZGVkIGEgUHl0aG9uIHdyYXBwZXIgd2l0aAorICBlbmhhbmNlZCBzYWx0IGdlbmVyYXRpb24gYW5kIHNpbXBsZXIgQVBJIGZvciBwYXNzd29yZCBnZW5lcmF0aW9uLgorCiAtIElzc3VlICMxMTA3NDogTWFrZSAndG9rZW5pemUnIHNvIGl0IGNhbiBiZSByZWxvYWRlZC4KIAorLSBJc3N1ZSAjMTEwODU6IE1vdmVkIGNvbGxlY3Rpb25zIGFic3RyYWN0IGJhc2UgY2xhc3NlcyBpbnRvIGEgc2VwYXJhdGUKKyAgbW9kdWxlIGNhbGxlZCBjb2xsZWN0aW9ucy5hYmMsIGZvbGxvd2luZyB0aGUgcGF0dGVybiB1c2VkIGJ5IGltcG9ydGxpYi5hYmMuCisgIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjb2xsZWN0aW9ucworICBtb2R1bGUuCisKIC0gSXNzdWUgIzQ2ODE6IEFsbG93IG1tYXAoKSB0byB3b3JrIG9uIGZpbGUgc2l6ZXMgYW5kIG9mZnNldHMgbGFyZ2VyIHRoYW4KICAgNEdCLCBldmVuIG9uIDMyLWJpdCBidWlsZHMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLCBhZGFwdGVkIGZvcgogICAzMi1iaXQgV2luZG93cy4KIAorLSBJc3N1ZSAjMTExNjk6IGNvbXBpbGVhbGwgbW9kdWxlIHVzZXMgcmVwcigpIHRvIGZvcm1hdCBmaWxlbmFtZXMgYW5kIHBhdGhzIHRvCisgIGVzY2FwZSBzdXJyb2dhdGUgY2hhcmFjdGVycyBhbmQgc2hvdyBzcGFjZXMuCisKIC0gSXNzdWUgIzExMDg5OiBGaXggcGVyZm9ybWFuY2UgaXNzdWUgbGltaXRpbmcgdGhlIHVzZSBvZiBDb25maWdQYXJzZXIoKQogICB3aXRoIGxhcmdlIGNvbmZpZyBmaWxlcy4KIAogLSBJc3N1ZSAjMTAyNzY6IEZpeCB0aGUgcmVzdWx0cyBvZiB6bGliLmNyYzMyKCkgYW5kIHpsaWIuYWRsZXIzMigpIG9uIGJ1ZmZlcnMKICAgbGFyZ2VyIHRoYW4gNEdCLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgogCistIElzc3VlICMxMTM4ODogQWRkZWQgYSBjbGVhcigpIG1ldGhvZCB0byBNdXRhYmxlU2VxdWVuY2UKKworLSBJc3N1ZSAjMTExNzQ6IEFkZCBhcmdwYXJzZS5NZXRhdmFyVHlwZUhlbHBGb3JtYXR0ZXIsIHdoaWNoIHVzZXMgdHlwZSBuYW1lcworICBmb3IgdGhlIG5hbWVzIG9mIG9wdGlvbmFsIGFuZCBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbiBoZWxwIG1lc3NhZ2VzLgorCiAtIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KIAogLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCkBAIC0yMTIzLDI4ICszODk0LDEzNyBAQAogCiAtIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgogCistIElzc3VlICMxMjE5MTogQWRkZWQgc2h1dGlsLmNob3duKCkgdG8gY2hhbmdlIHVzZXIgYW5kL29yIGdyb3VwIG93bmVyIG9mIGEKKyAgZ2l2ZW4gcGF0aCBhbHNvIHNwZWNpZnlpbmcgdGhlaXIgbmFtZXMuCisKKy0gSXNzdWUgIzEzOTg4OiBUaGUgX2VsZW1lbnR0cmVlIGFjY2VsZXJhdG9yIGlzIHVzZWQgd2hlbmV2ZXIgYXZhaWxhYmxlLgorICBOb3cgeG1sLmV0cmVlLmNFbGVtZW50VHJlZSBiZWNvbWVzIGEgZGVwcmVjYXRlZCBhbGlhcyB0byBFbGVtZW50VHJlZS4KKwogQnVpbGQKIC0tLS0tCiAKKy0gSXNzdWUgIzY4MDc6IFJ1biBtc2lzdXBwb3J0Lm1hayBlYXJsaWVyLgorCistIElzc3VlICMxMDU4MDogTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCisKKy0gSXNzdWUgIzEzMzI2OiBDbGVhbiBfX3B5Y2FjaGVfXyBkaXJlY3RvcmllcyBjb3JyZWN0bHkgb24gT3BlbkJTRC4KKworLSBQRVAgMzkzOiB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2lkZS11bmljb2RlIGlzIHJlbW92ZWQuCisKKy0gSXNzdWUgIzEyODUyOiBTZXQgX1hPUEVOX1NPVVJDRSB0byA3MDAsIGluc3RlYWQgb2YgNjAwLCB0byBnZXQgUE9TSVggMjAwOAorICBmdW5jdGlvbnMgb24gT3BlbkJTRCAoZS5nLiBmZG9wZW5kaXIpLgorCistIElzc3VlICMxMTg2MzogUmVtb3ZlIHN1cHBvcnQgZm9yIGxlZ2FjeSBzeXN0ZW1zIGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuMgorICAoZm9sbG93aW5nIFBFUCAxMSkuICBUaGVzZSBzeXN0ZW1zIGFyZSBzeXN0ZW1zIHVzaW5nIE1hY2ggQyBUaHJlYWRzLAorICBTdW5PUyBsaWdodHdlaWdodCBwcm9jZXNzZXMsIEdOVSBwdGggdGhyZWFkcyBhbmQgSVJJWCB0aHJlYWRzLgorCistIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAorICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlCisgIGZ1bmN0aW9ucyAoQlNEIGFuZCBPUyBYKS4gIEFsc28gYWRkIG5ldyBzdGF0IGZpbGUgZmxhZ3MgZm9yIE9TIFgKKyAgKFVGX0hJRERFTiBhbmQgVUZfQ09NUFJFU1NFRCkuCisKKy0gSXNzdWUgIzEwNjQ1OiBJbnN0YWxsaW5nIFB5dGhvbiBubyBsb25nZXIgY3JlYXRlcyBhCisgIFB5dGhvbi1YLlkuWi1weVguWS5lZ2ctaW5mbyBmaWxlIGluIHRoZSBsaWItZHlubG9hZCBkaXJlY3RvcnkuCisKKy0gRG8gbm90IGFjY2lkZW50YWxseSBpbmNsdWRlIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBzcWxpdGUuaCB0d2ljZSB3aGVuCisgIGJ1aWxkaW5nIHNxbGl0ZTMuCisKKy0gSXNzdWUgIzExMjE3OiBGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywKKyAgZW5zdXJlICJtYWtlIGluc3RhbGwiIGNyZWF0ZXMgc3ltbGlua3MgaW4gLS1wcmVmaXggYmluIGZvciB0aGUgIi0zMiIKKyAgZmlsZXMgaW4gdGhlIGZyYW1ld29yayBiaW4gZGlyZWN0b3J5IGxpa2UgdGhlIGluc3RhbGxlciBkb2VzLgorCistIElzc3VlICMxMTM0NzogVXNlIC0tbm8tYXMtbmVlZGVkIHdoZW4gbGlua2luZyBsaWJweXRob24zLnNvLgorCiAtIElzc3VlICMxMTQxMTogRml4ICdtYWtlIERFU1RESVI9JyB3aXRoIGEgcmVsYXRpdmUgZGVzdGluYXRpb24uCiAKLS0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24gcGFja2FnZSBoYWQKLSAgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KKy0gSXNzdWUgIzExMjY4OiBQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24KKyAgcGFja2FnZSBoYWQgcHJldmlvdXNseSBiZWVuIGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMTE0OTU6IE9TRiBzdXBwb3J0IGlzIGVsaW1pbmF0ZWQuIEl0IHdhcyBkZXByZWNhdGVkIGluIFB5dGhvbiAzLjIuCisKIAogSURMRQogLS0tLQogCi0tIElzc3VlICMxMTcxODogSURMRSdzIG9wZW4gbW9kdWxlIGRpYWxvZyBjb3VsZG4ndCBmaW5kIHRoZSBfX2luaXRfXy5weSBmaWxlIGluCi0gIGEgcGFja2FnZS4KKy0gSXNzdWUgIzExNzE4OiBJRExFJ3Mgb3BlbiBtb2R1bGUgZGlhbG9nIGNvdWxkbid0IGZpbmQgdGhlIF9faW5pdF9fLnB5CisgIGZpbGUgaW4gYSBwYWNrYWdlLgogCiBUb29scy9EZW1vcwogLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgorICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgorCistIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCisgIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCisgIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKKyAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgorCistIElzc3VlICMxMzYyODogcHl0aG9uLWdkYi5weSBpcyBub3cgYWJsZSB0byByZXRyaWV2ZSBtb3JlIGZyYW1lcyBpbiB0aGUgUHl0aG9uCisgIHRyYWNlYmFjayBpZiBQeXRob24gaXMgb3B0aW1pemVkLgorCistIElzc3VlICMxMTk5NjogbGlicHl0aG9uIChnZGIpLCByZXBsYWNlICJweS1idCIgY29tbWFuZCBieSAicHktYnQtZnVsbCIgYW5kCisgIGFkZCBhIHNtYXJ0ZXIgInB5LWJ0IiBjb21tYW5kIHByaW50aW5nIGEgY2xhc3NpYyBQeXRob24gdHJhY2ViYWNrLgorCiAtIElzc3VlICMxMTE3OTogTWFrZSBjY2JlbmNoIHdvcmsgdW5kZXIgUHl0aG9uIDMuMSBhbmQgMi43IGFnYWluLgogCistIElzc3VlICMxMDYzOTogcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlCisgIGFuIGVycm9yIGlmIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIGZpbGUgd2l0aCBtaXhlZCBuZXdsaW5lcy4KKyAgIi0tbmV3bGluZSIgb3B0aW9uIGFkZGVkIHRvIHNwZWNpZnkgbmV3IGxpbmUgY2hhcmFjdGVyLgorCiBFeHRlbnNpb24gTW9kdWxlcwogLS0tLS0tLS0tLS0tLS0tLS0KIAorLSBJc3N1ZSAjMTM4NDA6IFRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5IGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcgorICB3aGVuIGdpdmVuIGEgVW5pY29kZSBzdHJpbmcgaGFzIGJlZW4gZml4ZWQuCisKKy0gSXNzdWUgIzk5NzU6IHNvY2tldDogRml4IGluY29ycmVjdCB1c2Ugb2YgZmxvd2luZm8gYW5kIHNjb3BlX2lkLiBQYXRjaCBieQorICBWaWxtb3MgTmViZWhhai4KKworLSBJc3N1ZSAjNzc3Nzogc29ja2V0OiBBZGQgUmVsaWFibGUgRGF0YWdyYW0gU29ja2V0cyAoUEZfUkRTKSBzdXBwb3J0LgorCistIElzc3VlICMxMzE1OTogRmlsZUlPIGFuZCBCWjJDb21wcmVzc29yL0JaMkRlY29tcHJlc3NvciBub3cgdXNlIGEgbGluZWFyLXRpbWUKKyAgYnVmZmVyIGdyb3d0aCBzdHJhdGVneSBpbnN0ZWFkIG9mIGEgcXVhZHJhdGljLXRpbWUgb25lLgorCistIElzc3VlICMxMDE0MTogc29ja2V0OiBBZGQgU29ja2V0Q0FOIChQRl9DQU4pIHN1cHBvcnQuIEluaXRpYWwgcGF0Y2ggYnkKKyAgTWF0dGhpYXMgRnVjaHMsIHVwZGF0ZWQgYnkgVGlhZ28gR29uw6dhbHZlcy4KKworLSBJc3N1ZSAjMTMwNzA6IEZpeCBhIGNyYXNoIHdoZW4gYSBUZXh0SU9XcmFwcGVyIGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZQorICB3b3VsZCBiZSBmaW5hbGl6ZWQgYWZ0ZXIgdGhlIHJlZmVyZW5jZSB0byBpdHMgdW5kZXJseWluZyBCdWZmZXJlZFJXUGFpcidzCisgIHdyaXRlciBnb3QgY2xlYXJlZCBieSB0aGUgR0MuCisKKy0gSXNzdWUgIzEyODgxOiBjdHlwZXM6IEZpeCBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcy4KKworLSBJc3N1ZSAjMTMwNTg6IG9zc2F1ZGlvZGV2OiBmaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayBvbiBlcnJvci4gUGF0Y2ggYnkKKyAgVGhvbWFzIEphcm9zY2guCisKKy0gSXNzdWUgIzEzMDEzOiBjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLgorICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KKworLSBJc3N1ZSAjMTMwMjI6IEZpeDogX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoKSBkb2Vzbid0IGNoZWNrIHRoYXQKKyAgZmlsZSBkZXNjcmlwdG9yIHdhcyBhY3R1YWxseSByZWNlaXZlZC4KKworLSBJc3N1ZSAjMTE3MjcxMTogQWRkICdsb25nIGxvbmcnIHN1cHBvcnQgdG8gdGhlIGFycmF5IG1vZHVsZS4KKyAgSW5pdGlhbCBwYXRjaCBieSBPcmVuIFRpcm9zaCBhbmQgSGlyb2thenUgWWFtYW1vdG8uCisKKy0gSXNzdWUgIzEyNDgzOiBjdHlwZXM6IEZpeCBhIGNyYXNoIHdoZW4gdGhlIGRlc3RydWN0aW9uIG9mIGEgY2FsbGJhY2sKKyAgb2JqZWN0IHRyaWdnZXJzIHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4KKworLSBJc3N1ZSAjMTI5NTA6IEZpeCBwYXNzaW5nIGZpbGUgZGVzY3JpcHRvcnMgaW4gbXVsdGlwcm9jZXNzaW5nLCB1bmRlcgorICBPcGVuSW5kaWFuYS9JbGx1bW9zLgorCistIElzc3VlICMxMjc2NDogRml4IGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gdGhlIG5hbWUgb2YgYSBTdHJ1Y3R1cmUgZmllbGQgaXMgbm90CisgIGEgc3RyaW5nLgorCistIElzc3VlICMxMTI0MTogc3ViY2xhc3NlcyBvZiBjdHlwZXMuQXJyYXkgY2FuIG5vdyBiZSBzdWJjbGFzc2VkLgorCistIElzc3VlICM5NjUxOiBGaXggYSBjcmFzaCB3aGVuIGN0eXBlcy5jcmVhdGVfc3RyaW5nX2J1ZmZlcigwKSB3YXMgcGFzc2VkIHRvCisgIHNvbWUgZnVuY3Rpb25zIGxpa2UgZmlsZS53cml0ZSgpLgorCistIElzc3VlICMxMDMwOTogRGVmaW5lIF9HTlVfU09VUkNFIHNvIHRoYXQgbXJlbWFwKCkgZ2V0cyB0aGUgcHJvcGVyCisgIHNpZ25hdHVyZS4gIFdpdGhvdXQgdGhpcywgYXJjaGl0ZWN0dXJlcyB3aGVyZSBzaXplb2Ygdm9pZCogIT0gc2l6ZW9mIGludCBhcmUKKyAgYnJva2VuLiAgUGF0Y2ggZ2l2ZW4gYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KKwogLSBJc3N1ZSAjMTIwNTE6IEZpeCBzZWdmYXVsdCBpbiBqc29uLmR1bXBzKCkgd2hpbGUgZW5jb2RpbmcgaGlnaGx5LW5lc3RlZAogICBvYmplY3RzIHVzaW5nIHRoZSBDIGFjY2VsZXJhdGlvbnMuCiAKQEAgLTIxNTcsMzUgKzQwMzcsMTg0IEBACiBUZXN0cwogLS0tLS0KIAorLSBJc3N1ZSAjMTE2ODk6IEZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0CisKKy0gSXNzdWUgIzEzNzg2OiBSZW1vdmUgdW5pbXBsZW1lbnRlZCAndHJhY2UnIGxvbmcgb3B0aW9uIGZyb20gcmVncnRlc3QucHkuCisKKy0gSXNzdWUgIzEzNzI1OiBGaXggcmVncnRlc3QgdG8gcmVjb2duaXplIHRoZSBkb2N1bWVudGVkIC1kIGZsYWcuCisgIFBhdGNoIGJ5IEVybm8gVHVraWEuCisKKy0gSXNzdWUgIzEzMzA0OiBTa2lwIHRlc3QgY2FzZSBpZiB1c2VyIHNpdGUtcGFja2FnZXMgZGlzYWJsZWQgKC1zIG9yCisgIFBZVEhPTk5PVVNFUlNJVEUpLiAgKFBhdGNoIGJ5IENhcmwgTWV5ZXIpCisKKy0gSXNzdWUgIzU2NjE6IEFkZCBhIHRlc3QgZm9yIEVDT05OUkVTRVQvRVBJUEUgaGFuZGxpbmcgdG8gdGVzdF9hc3luY29yZS4gUGF0Y2gKKyAgYnkgWGF2aWVyIGRlIEdheWUuCisKKy0gSXNzdWUgIzEzMjE4OiBGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KKworLSBSZS1lbmFibGUgbGliMnRvMydzIHRlc3RfcGFyc2VyLnB5IHRlc3RzLCB0aG91Z2ggd2l0aCBhbiBleHBlY3RlZCBmYWlsdXJlCisgIChzZWUgaXNzdWUgMTMxMjUpLgorCistIElzc3VlICMxMjY1NjogQWRkIHRlc3RzIGZvciBJUHY2IGFuZCBVbml4IHNvY2tldHMgdG8gdGVzdF9hc3luY29yZS4KKworLSBJc3N1ZSAjNjQ4NDogQWRkIHVuaXQgdGVzdHMgZm9yIG1haWxjYXAgbW9kdWxlIChwYXRjaCBieSBHcmVnb3J5IE5vZmkpCisKKy0gSXNzdWUgIzExNjUxOiBJbXByb3ZlIHRoZSBNYWtlZmlsZSB0ZXN0IHRhcmdldHMgdG8gcnVuIG1vcmUgb2YgdGhlIHRlc3Qgc3VpdGUKKyAgbW9yZSBxdWlja2x5LiBUaGUgLS1tdWx0aXByb2Nlc3Mgb3B0aW9uIGlzIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHJlZHVjaW5nCisgIHRoZSBhbW91bnQgb2YgdGltZSBuZWVkZWQgdG8gcnVuIHRoZSB0ZXN0cy4gIm1ha2UgdGVzdCIgYW5kICJtYWtlIHF1aWNrdGVzdCIKKyAgbm93IGluY2x1ZGUgc29tZSByZXNvdXJjZS1pbnRlbnNpdmUgdGVzdHMsIGJ1dCBubyBsb25nZXIgcnVuIHRoZSB0ZXN0IHN1aXRlCisgIHR3aWNlIHRvIGNoZWNrIGZvciBidWdzIGluIC5weWMgZ2VuZXJhdGlvbi4gVG9vbHMvc2NyaXB0cy9ydW5fdGVzdC5weSBwcm92aWRlcworICBhbiBlYXN5IHBsYXRmb3JtLWluZGVwZW5kZW50IHdheSB0byBydW4gdGVzdCBzdWl0ZSB3aXRoIHNlbnNpYmxlIGRlZmF1bHRzLgorCistIElzc3VlICMxMjMzMTogVGhlIHRlc3Qgc3VpdGUgZm9yIHRoZSBwYWNrYWdpbmcgbW9kdWxlIGNhbiBub3cgcnVuIGZyb20gYW4KKyAgaW5zdGFsbGVkIFB5dGhvbi4KKworLSBJc3N1ZSAjMTIzMzE6IFRoZSB0ZXN0IHN1aXRlIGZvciBsaWIydG8zIGNhbiBub3cgcnVuIGZyb20gYW4gaW5zdGFsbGVkCisgIFB5dGhvbi4KKworLSBJc3N1ZSAjMTI2MjY6IEluIHJlZ3J0ZXN0LCBhbGxvdyB0byBmaWx0ZXIgdGVzdHMgdXNpbmcgYSBnbG9iIGZpbHRlcgorICB3aXRoIHRoZSBgYC1tYGAgKG9yIGBgLS1tYXRjaGBgKSBvcHRpb24uICBUaGlzIHdvcmtzIHdpdGggYWxsIHRlc3QgY2FzZXMKKyAgdXNpbmcgdGhlIHVuaXR0ZXN0IG1vZHVsZS4gIFRoaXMgaXMgdXNlZnVsIHdpdGggbG9uZyB0ZXN0IHN1aXRlcworICBzdWNoIGFzIHRlc3RfaW8gb3IgdGVzdF9zdWJwcm9jZXNzLgorCistIElzc3VlICMxMjYyNDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGZhaWwgYWZ0ZXIgdGhlIGZpcnN0IGZhaWx1cmUgd2hlbgorICBydW5uaW5nIGluIHZlcmJvc2UgbW9kZSAoYGAtdmBgIG9yIGBgLVdgYCksIGJ5IHVzaW5nIHRoZSBgYC0tZmFpbGZhc3RgYAorICAob3IgYGAtR2BgKSBvcHRpb24gdG8gcmVncnRlc3QuICBUaGlzIGlzIHVzZWZ1bCB3aXRoIGxvbmcgdGVzdCBzdWl0ZXMKKyAgc3VjaCBhcyB0ZXN0X2lvIG9yIHRlc3Rfc3VicHJvY2Vzcy4KKworLSBJc3N1ZSAjMTI1ODc6IENvcnJlY3QgZmF1bHR5IHRlc3QgZmlsZSBhbmQgcmVmZXJlbmNlIGluIHRlc3RfdG9rZW5pemUuCisgIChQYXRjaCBieSBSb2JlcnQgWGlhbykKKworLSBJc3N1ZSAjMTI1NzM6IEFkZCByZXNvdXJjZSBjaGVja3MgZm9yIGRhbmdsaW5nIFRocmVhZCBhbmQgUHJvY2VzcyBvYmplY3RzLgorCistIElzc3VlICMxMjU0OTogQ29ycmVjdCB0ZXN0X3BsYXRmb3JtIHRvIG5vdCBmYWlsIHdoZW4gT1MgWCByZXR1cm5zICd4ODZfNjQnCisgIGFzIHRoZSBwcm9jZXNzb3IgdHlwZSBvbiBzb21lIE1hYyBzeXN0ZW1zLgorCistIFNraXAgbmV0d29yayB0ZXN0cyB3aGVuIGdldGFkZHJpbmZvKCkgcmV0dXJucyBFQUlfQUdBSU4sIG1lYW5pbmcgYSB0ZW1wb3JhcnkKKyAgZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uCisKKy0gSXNzdWUgIzExODEyOiBTb2x2ZSB0cmFuc2llbnQgc29ja2V0IGZhaWx1cmUgdG8gY29ubmVjdCB0byAnbG9jYWxob3N0JworICBpbiB0ZXN0X3RlbG5ldGxpYi5weS4KKworLSBTb2x2ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gdGVzdF90ZWxuZXRsaWIucHkuIFJlbGF0ZWQgdG8gaXNzdWUgIzExODEyLgorCistIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF9yb2JvdHBhcnNlciB3aGVuIG11ZWJsZXNtb3JhbGVkYS5jb20gaXMgZmxha3kgYW5kCisgIGFuIG92ZXJ6ZWFsb3VzIEROUyBzZXJ2aWNlIChlLmcuIE9wZW5ETlMpIHJlZGlyZWN0cyB0byBhIHBsYWNlaG9sZGVyCisgIFdlYiBzaXRlLgorCistIEF2b2lkIGZhaWxpbmcgaW4gdGVzdF91cmxsaWJuZXQudGVzdF9iYWRfYWRkcmVzcyB3aGVuIHNvbWUgb3ZlcnplYWxvdXMKKyAgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVzb2x2ZXMgYSBub24tZXhpc3RlbnQgZG9tYWluIG5hbWUuICBUaGUgdGVzdAorICBpcyBub3cgc2tpcHBlZCBpbnN0ZWFkLgorCistIElzc3VlICMxMjQ0MDogV2hlbiB0ZXN0aW5nIHdoZXRoZXIgc29tZSBiaXRzIGluIFNTTENvbnRleHQub3B0aW9ucyBjYW4gYmUKKyAgcmVzZXQsIGNoZWNrIHRoZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGhlYWRlcnMgUHl0aG9uIHdhcyBjb21waWxlZCBhZ2FpbnN0LAorICByYXRoZXIgdGhhbiB0aGUgcnVudGltZSB2ZXJzaW9uIG9mIHRoZSBPcGVuU1NMIGxpYnJhcnkuCisKKy0gSXNzdWUgIzExNTEyOiBBZGQgYSB0ZXN0IHN1aXRlIGZvciB0aGUgY2dpdGIgbW9kdWxlLiBQYXRjaCBieSBSb2JiaWUgQ2xlbW9ucy4KKworLSBJc3N1ZSAjMTI0OTc6IEluc3RhbGwgdGVzdC9kYXRhIHRvIHByZXZlbnQgZmFpbHVyZXMgb2YgdGhlIHZhcmlvdXMgY29kZWNtYXBzCisgIHRlc3RzLgorCistIElzc3VlICMxMjQ5NjogSW5zdGFsbCB0ZXN0L2NhcGF0aCBkaXJlY3RvcnkgdG8gcHJldmVudCB0ZXN0X2Nvbm5lY3RfY2FwYXRoCisgIHRlc3RjYXNlIGZhaWx1cmUgaW4gdGVzdF9zc2wuCisKKy0gSXNzdWUgIzEyNDY5OiBSdW4gd2FrZXVwIGFuZCBwZW5kaW5nIHNpZ25hbCB0ZXN0cyBpbiBhIHN1YnByb2Nlc3MgdG8gcnVuIHRoZQorICB0ZXN0IGluIGEgZnJlc2ggcHJvY2VzcyB3aXRoIG9ubHkgb25lIHRocmVhZCBhbmQgdG8gbm90IGNoYW5nZSBzaWduYWwKKyAgaGFuZGxpbmcgb2YgdGhlIHBhcmVudCBwcm9jZXNzLgorCistIElzc3VlICM4NzE2OiBBdm9pZCBjcmFzaGVzIGNhdXNlZCBieSBBcXVhIFRrIG9uIE9TWCB3aGVuIGF0dGVtcHRpbmcgdG8gcnVuCisgIHRlc3RfdGsgb3IgdGVzdF90dGtfZ3Vpb25seSB1bmRlciBhIHVzZXJuYW1lIHRoYXQgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQKKyAgaW4gdG8gdGhlIGNvbnNvbGUgd2luZG93c2VydmVyIChhcyBtYXkgYmUgdGhlIGNhc2UgdW5kZXIgYnVpbGRib3Qgb3Igc3NoKS4KKworLSBJc3N1ZSAjMTI0MDc6IEV4cGxpY2l0bHkgc2tpcCB0ZXN0X2NhcGkuRW1iZWRkaW5nVGVzdCB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMxMjQwMDogcmVncnRlc3QgLVcgZG9lc24ndCByZXJ1biB0aGUgdGVzdHMgdHdpY2UgYW55bW9yZSwgYnV0IGNhcHR1cmVzCisgIHRoZSBvdXRwdXQgYW5kIGRpc3BsYXlzIGl0IG9uIGZhaWx1cmUgaW5zdGVhZC4gcmVncnRlc3QgLXYgZG9lc24ndCBwcmludCB0aGUKKyAgZXJyb3IgdHdpY2UgYW55bW9yZSBpZiB0aGVyZSBpcyBvbmx5IG9uZSBlcnJvci4KKworLSBJc3N1ZSAjMTIxNDE6IEluc3RhbGwgY29waWVzIG9mIHRlbXBsYXRlIEMgbW9kdWxlIGZpbGUgc28gdGhhdAorICB0ZXN0X2J1aWxkX2V4dCBvZiB0ZXN0X2Rpc3R1dGlscyBhbmQgdGVzdF9jb21tYW5kX2J1aWxkX2V4dCBvZgorICB0ZXN0X3BhY2thZ2luZyBhcmUgbm8gbG9uZ2VyIHNpbGVudGx5IHNraXBwZWQgd2hlbgorICBydW4gb3V0c2lkZSBvZiBhIGJ1aWxkIGRpcmVjdG9yeS4KKworLSBJc3N1ZSAjODc0NjogQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIG9zLmNoZmxhZ3MoKSBhbmQgb3MubGNoZmxhZ3MoKS4KKyAgUGF0Y2ggYnkgR2FycmV0dCBDb29wZXIuCisKKy0gSXNzdWUgIzEwNzM2OiBGaXggdGVzdF90dGsgdGVzdF93aWRnZXRzIGZhaWx1cmVzIHdpdGggQ29jb2EgVGsgOC41LjkKKyAgMi44ICsgIG9uIE1hYyBPUyBYLiAgKFBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKKworLSBJc3N1ZSAjMTIwNTc6IEFkZCB0ZXN0cyBmb3IgSVNPIDIwMjIgY29kZWNzIChpc28yMDIyX2pwLCBpc28yMDIyX2pwXzIsCisgIGlzbzIwMjJfa3IpLgorCistIElzc3VlICMxMjA5NjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGVzdF90aHJlYWRpbmcudGVzdF93YWl0Zm9yKCkuIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCistIElzc3VlICMxMTYxNDogaW1wb3J0IF9faGVsbG9fXyBwcmludHMgIkhlbGxvIFdvcmxkISIuIFBhdGNoIHdyaXR0ZW4gYnkKKyAgQW5kcmVhcyBTdMO8aHJrLgorCistIElzc3VlICM1NzIzOiBJbXByb3ZlIGpzb24gdGVzdHMgdG8gYmUgZXhlY3V0ZWQgd2l0aCBhbmQgd2l0aG91dCBhY2NlbGVyYXRpb25zLgorCistIElzc3VlICMxMjA0MTogTWFrZSB0ZXN0X3dhaXQzIG1vcmUgcm9idXN0LgorCiAtIElzc3VlICMxMTg3MzogQ2hhbmdlIHJlZ2V4IGluIHRlc3RfY29tcGlsZWFsbCB0byBmaXggb2NjYXNpb25hbCBmYWlsdXJlcyB3aGVuCiAgIHdoZW4gdGhlIHJhbmRvbWx5IGdlbmVyYXRlZCB0ZW1wb3JhcnkgcGF0aCBoYXBwZW5lZCB0byBtYXRjaCB0aGUgcmVnZXguCiAKKy0gSXNzdWUgIzExOTU4OiBGaXggRlRQIHRlc3RzIGZvciBJUHY2LCBiaW5kIHRvICI6OjEiIGluc3RlYWQgb2YgImxvY2FsaG9zdCIuCisgIFBhdGNoIHdyaXR0ZW4gYnkgQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCisKKy0gSXNzdWUgIzg0MDcsICMxMTg1OTogRml4IHRlc3RzIG9mIHRlc3RfaW8gdXNpbmcgdGhyZWFkcyBhbmQgYW4gYWxhcm06IHVzZQorICBwdGhyZWFkX3NpZ21hc2soKSB0byBlbnN1cmUgdGhhdCB0aGUgU0lHQUxSTSBzaWduYWwgaXMgcmVjZWl2ZWQgYnkgdGhlIG1haW4KKyAgdGhyZWFkLgorCistIElzc3VlICMxMTgxMTogRmFjdG9yIG91dCBkZXRlY3Rpb24gb2YgSVB2NiBzdXBwb3J0IG9uIHRoZSBjdXJyZW50IGhvc3QKKyAgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIGFzIGBgdGVzdC5zdXBwb3J0LklQVjZfRU5BQkxFRGBgLiAgUGF0Y2ggYnkKKyAgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgorCiAtIElzc3VlICMxMDkxNDogQWRkIGEgbWluaW1hbCBlbWJlZGRpbmcgdGVzdCB0byB0ZXN0X2NhcGkuCiAKLS0gSXNzdWUgIzExNzkwOiBGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4KLSAgdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCistIElzc3VlICMxMTIyMzogU2tpcCB0ZXN0X2xvY2tfYWNxdWlyZV9pbnRlcnJ1cHRpb24oKSBhbmQKKyAgdGVzdF9ybG9ja19hY3F1aXJlX2ludGVycnVwdGlvbigpIG9mIHRlc3RfdGhyZWFkc2lnbmFscyBpZiBhIHRocmVhZCBsb2NrIGlzCisgIGltcGxlbWVudGVkIHVzaW5nIGEgUE9TSVggbXV0ZXggYW5kIGEgUE9TSVggY29uZGl0aW9uIHZhcmlhYmxlLiBBIFBPU0lYCisgIGNvbmRpdGlvbiB2YXJpYWJsZSBjYW5ub3QgYmUgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKGUuZy4gb24gTGludXgsIHRoZQorICBmdXRleCBzeXN0ZW0gY2FsbCBpcyByZXN0YXJ0ZWQpLgorCistIElzc3VlICMxMTc5MDogRml4IHNwb3JhZGljIGZhaWx1cmVzIGluIHRlc3RfbXVsdGlwcm9jZXNzaW5nLldpdGhQcm9jZXNzZXNUZXN0Q29uZGl0aW9uLgogCiAtIEZpeCBwb3NzaWJsZSAiZmlsZSBhbHJlYWR5IGV4aXN0cyIgZXJyb3Igd2hlbiBydW5uaW5nIHRoZSB0ZXN0cyBpbiBwYXJhbGxlbC4KIAogLSBJc3N1ZSAjMTE3MTk6IEZpeCBtZXNzYWdlIGFib3V0IHVuZXhwZWN0ZWQgdGVzdF9tc2lsaWIgc2tpcCBvbiBub24tV2luZG93cwogICBwbGF0Zm9ybXMuIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KIAorLSBJc3N1ZSAjMTE3Mjc6IEFkZCBhIC0tdGltZW91dCBvcHRpb24gdG8gcmVncnRlc3Q6IGlmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4KKyAgVElNRU9VVCBzZWNvbmRzLCBkdW1wcyB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzIGFuZCBleGl0cy4KKwogLSBJc3N1ZSAjMTE2NTM6IGZpeCAtVyB3aXRoIC1qIGluIHJlZ3J0ZXN0LgogCistIFRoZSBlbWFpbCB0ZXN0IHN1aXRlIG5vdyBsaXZlcyBpbiB0aGUgTGliL3Rlc3QvdGVzdF9lbWFpbCBwYWNrYWdlLiAgVGhlIHRlc3QKKyAgaGFybmVzcyBjb2RlIGhhcyBhbHNvIGJlZW4gbW9kZXJuaXplZCB0byBhbGxvdyB1c2Ugb2YgbmV3IHVuaXR0ZXN0IGZlYXR1cmVzLgorCistIHJlZ3J0ZXN0IG5vdyBkaXNjb3ZlcnMgdGVzdCBwYWNrYWdlcyBhcyB3ZWxsIGFzIHRlc3QgbW9kdWxlcy4KKwogLSBJc3N1ZSAjMTE1Nzc6IGltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiBiaW5oZXgucHkuIFBhdGNoIGJ5IEFya2FkeSBLb3BseWFyb3YuCiAKKy0gTmV3IHRlc3RfY3Jhc2hlcnMgYWRkZWQgdG8gZXhlcmNpc2UgdGhlIHNjcmlwdHMgaW4gdGhlIExpYi90ZXN0L2NyYXNoZXJzCisgIGRpcmVjdG9yeSBhbmQgY29uZmlybSB0aGV5IGZhaWwgYXMgZXhwZWN0ZWQKKwogLSBJc3N1ZSAjMTE1Nzg6IGFkZGVkIHRlc3QgZm9yIHRoZSB0aW1laXQgbW9kdWxlLiAgUGF0Y2ggYnkgTWljaGFlbCBIZW5yeS4KIAogLSBJc3N1ZSAjMTE1MDM6IGltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiBwb3NpeHBhdGgucHkuIFBhdGNoIGJ5IEV2YW4gRGFuZHJlYS4KIAotLSBJc3N1ZSAjMTE1MDU6IGltcHJvdmVzIHRlc3QgY292ZXJhZ2Ugb2Ygc3RyaW5nLnB5LiBQYXRjaCBieSBBbGljaWEKLSAgQXJsZW4uCistIElzc3VlICMxMTUwNTogaW1wcm92ZXMgdGVzdCBjb3ZlcmFnZSBvZiBzdHJpbmcucHksIGluY3JlYXNlcyBncmFudWxhcml0eSBvZgorICBzdHJpbmcuRm9ybWF0dGVyIHRlc3RzLiBJbml0aWFsIHBhdGNoIGJ5IEFsaWNpYSBBcmxlbi4KIAogLSBJc3N1ZSAjMTE1NDg6IEltcHJvdmUgdGVzdCBjb3ZlcmFnZSBvZiB0aGUgc2h1dGlsIG1vZHVsZS4gUGF0Y2ggYnkKICAgRXZhbiBEYW5kcmVhLgogCiAtIElzc3VlICMxMTU1NDogUmVhY3RpdmF0ZWQgdGVzdF9lbWFpbF9jb2RlY3MuCiAKKy0gSXNzdWUgIzExNTA1OiBpbXByb3ZlcyB0ZXN0IGNvdmVyYWdlIG9mIHN0cmluZy5weS4gUGF0Y2ggYnkgQWxpY2lhCisgIEFybGVuCisKIC0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQogICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgogCkBAIC0yMTk4LDU0MDcgKzQyMjcsNzIgQEAKIC0gSXNzdWUgIzk5MzE6IEZpeCBoYW5ncyBpbiBHVUkgdGVzdHMgdW5kZXIgV2luZG93cyBpbiBjZXJ0YWluIGNvbmRpdGlvbnMuCiAgIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgogCistIElzc3VlICMxMDUxMjogUHJvcGVybHkgY2xvc2Ugc29ja2V0cyB1bmRlciB0ZXN0LnRlc3RfY2dpLgorCistIElzc3VlICMxMDk5MjogTWFrZSB0ZXN0cyBwYXNzIHVuZGVyIGNvdmVyYWdlLgorCiAtIElzc3VlICMxMDgyNjogUHJldmVudCBzcG9yYWRpYyBmYWlsdXJlIGluIHRlc3Rfc3VicHJvY2VzcyBvbiBTb2xhcmlzIGR1ZQogICB0byBvcGVuIGRvb3IgZmlsZXMuCiAKKy0gSXNzdWUgIzEwOTkwOiBQcmV2ZW50IHRlc3RzIGZyb20gY2xvYmJlcmluZyBhIHNldCB0cmFjZSBmdW5jdGlvbi4KKworQy1BUEkKKy0tLS0tCisKKy0gQWRkIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0IGFuZCBQeU9iamVjdF9HZW5lcmlTZXREaWN0LiBUaGV5IGFyZSBnZW5lcmljCisgIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIGdldHRlciBhbmQgc2V0dGVyIG9mIGEgYGBfX2RpY3RfX2BgIGRlc2NyaXB0b3Igb2YgQworICB0eXBlcy4KKworLSBJc3N1ZSAjMTM3Mjc6IEFkZCAzIG1hY3JvcyB0byBhY2Nlc3MgUHlEYXRlVGltZV9EZWx0YSBtZW1iZXJzOgorICBQeURhdGVUaW1lX0RFTFRBX0dFVF9EQVlTLCBQeURhdGVUaW1lX0RFTFRBX0dFVF9TRUNPTkRTLAorICBQeURhdGVUaW1lX0RFTFRBX0dFVF9NSUNST1NFQ09ORFMuCisKKy0gSXNzdWUgIzEwNTQyOiBBZGQgNCBtYWNyb3MgdG8gd29yayB3aXRoIHN1cnJvZ2F0ZXM6IFB5X1VOSUNPREVfSVNfU1VSUk9HQVRFLAorICBQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFLCBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUsCisgIFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTLgorCistIElzc3VlICMxMjcyNDogQWRkIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRCBtYWNybyBmb3IgcmV0dXJuaW5nIE5vdEltcGxlbWVudGVkLgorCistIFBZX1BBVENITEVWRUxfUkVWSVNJT04gaGFzIGJlZW4gcmVtb3ZlZCwgc2luY2UgaXQncyBtZWFuaW5nbGVzcyB3aXRoCisgIE1lcmN1cmlhbC4KKworLSBJc3N1ZSAjMTIxNzM6IFRoZSBmaXJzdCBhcmd1bWVudCBvZiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbCBpcyBub3cgYGNvbnN0CisgIGNoYXIgKmAgaW5zdGVhZCBvZiBgY2hhciAqYC4KKworLSBJc3N1ZSAjMTIzODA6IFB5QXJnX1BhcnNlVHVwbGUgbm93IGFjY2VwdHMgYSBieXRlYXJyYXkgZm9yIHRoZSAnYycgZm9ybWF0LgorCiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzEzNDk4OiBDbGFyaWZ5IGRvY3Mgb2Ygb3MubWFrZWRpcnMoKSdzIGV4aXN0X29rIGFyZ3VtZW50LiAgRG9uZSB3aXRoCisgIGdyZWF0IG5hdGl2ZS1zcGVha2VyIGhlbHAgZnJvbSBSLiBEYXZpZCBNdXJyYXkuCisKKy0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgorICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCisKKy0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCisKKy0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB3b3JrcyBvbiBPUyBYLgorCistIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgorCistIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKKyAgcmVsZXZhbnQsIGluc3RlYWQgc2VuZCBtZXRob2QuCisKKy0gSXNzdWUgIzEyNzk4OiBVcGRhdGVkIHRoZSBtaW1ldHlwZXMgZG9jdW1lbnRhdGlvbi4KKworLSBJc3N1ZSAjMTI5NDk6IERvY3VtZW50IHRoZSBrd29ubHlhcmdjb3VudCBhcmd1bWVudCBmb3IgdGhlIFB5Q29kZV9OZXcKKyAgQyBBUEkgZnVuY3Rpb24uCisKKy0gSXNzdWUgIzEzNTEzOiBGaXggaW8uSU9CYXNlIGRvY3VtZW50YXRpb24gdG8gY29ycmVjdGx5IGxpbmsgdG8gdGhlCisgIGlvLklPQmFzZS5yZWFkbGluZSBtZXRob2QgaW5zdGVhZCBvZiB0aGUgcmVhZGxpbmUgbW9kdWxlLgorCistIElzc3VlICMxMzIzNzogUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlCisgIGZ1bmN0aW9ucyBhbmQgdGhlIG1vc3QgY29tbW9ubHkgbmVlZGVkIGFyZ3VtZW50cyB0byBQb3Blbi4KKworLSBJc3N1ZSAjMTMxNDE6IERlbW9uc3RyYXRlIHJlY29tbWVuZGVkIHN0eWxlIGZvciBzb2NrZXRzZXJ2ZXIgZXhhbXBsZXMuCisKIC0gSXNzdWUgIzExODE4OiBGaXggdGVtcGZpbGUgZXhhbXBsZXMgZm9yIFB5dGhvbiAzLgogCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAtRmViLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMTI0OTogRml4IHBvdGVudGlhbCBjcmFzaGVzIHdoZW4gdXNpbmcgdGhlIGxpbWl0ZWQgQVBJLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTEyMjI6IEZpeCBub24tZnJhbWV3b3JrIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkIG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICMxMTE4NDogRml4IGxhcmdlLWZpbGUgc3VwcG9ydCBvbiBBSVguCi0KLS0gSXNzdWUgIzk0MTM0NjogRml4IGJyb2tlbiBzaGFyZWQgbGlicmFyeSBidWlsZCBvbiBBSVguCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA3MDk6IEFkZCB1cGRhdGVkIEFJWCBub3RlcyBpbiBNaXNjL1JFQURNRS5BSVguCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIFJlbGVhc2UgQ2FuZGlkYXRlIDM/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTMtRmViLTIwMTEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMTEzNDogQWRkIG1pc3NpbmcgZmllbGRzIHRvIHR5cGVzbG90cy5oLgotCi0tIElzc3VlICMxMTEzNTogUmVtb3ZlIHJlZHVuZGFudCBkb2MgZmllbGQgZnJvbSBQeVR5cGVfU3BlYy4KLQotLSBJc3N1ZSAjMTEwNjc6IEFkZCBQeVR5cGVfR2V0RmxhZ3MsIHRvIHN1cHBvcnQgUHlVbmljb2RlX0NoZWNrIGluIHRoZSBsaW1pdGVkCi0gIEFCSS4KLQotLSBJc3N1ZSAjMTExMTg6IEZpeCBib2d1cyBleHBvcnQgb2YgTm9uZSBpbiBweXRob24zLmRsbC4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxMTExNjogYW55IGVycm9yIGR1cmluZyBhZGRpdGlvbiBvZiBhIG1lc3NhZ2UgdG8gYSBtYWlsYm94IG5vdyBjYXVzZXMgYQotICByb2xsYmFjaywgaW5zdGVhZCBvZiBsZWF2aW5nIHRoZSBtYWlsYm94IHBhcnRpYWxseSBtb2RpZmllZC4KLQotLSBJc3N1ZSAjMTExMzI6IEZpeCBwYXNzaW5nIG9mICJvcHRpbWl6ZSIgcGFyYW1ldGVyIHdoZW4gcmVjdXJzaW5nIGluCi0gIGNvbXBpbGVhbGwuY29tcGlsZV9kaXIoKS4KLQotLSBJc3N1ZSAjMTExMTA6IEZpeCBhIHBvdGVudGlhbCBkZWNyZWYgb2YgYSBOVUxMIGluIHNxbGl0ZTMuCi0KLS0gSXNzdWUgIzgyNzU6IEZpeCBwYXNzaW5nIG9mIGNhbGxiYWNrIGFyZ3VtZW50cyB3aXRoIGN0eXBlcyB1bmRlciBXaW42NC4gIFBhdGNoCi0gIGJ5IFN0YW4gTWloYWkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMTA3OTogVGhlIC9BcHBsaWNhdGlvbnMvUHl0aG9uIHgueCBmb2xkZXIgY3JlYXRlZCBieSB0aGUgTWFjIE9TIFgKLSAgaW5zdGFsbGVycyBub3cgaW5jbHVkZXMgYSBsaW5rIHRvIHRoZSBpbnN0YWxsZWQgZG9jdW1lbnRhdGlvbiBhbmQgbm8gbG9uZ2VyCi0gIGluY2x1ZGVzIGFuIEV4dHJhcyBkaXJlY3RvcnkuICBUaGUgVG9vbHMgZGlyZWN0b3J5IGlzIG5vdyBpbnN0YWxsZWQgaW4gdGhlCi0gIGZyYW1ld29yayB1bmRlciBzaGFyZS9kb2MuCi0KLS0gSXNzdWUgIzExMTIxOiBGaXggYnVpbGRpbmcgd2l0aCAtLWVuYWJsZS1zaGFyZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxMDk3MTogdGVzdF96aXBpbXBvcnRfc3VwcG9ydCBpcyBvbmNlIGFnYWluIGNvbXBhdGlibGUgd2l0aCB0aGUgcmVmbGVhawotICBodW50ZXIgZmVhdHVyZSBvZiB0ZXN0LnJlZ3J0ZXN0LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDMwLUphbi0yMDExKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA0NTE6IG1lbW9yeXZpZXcgb2JqZWN0cyBjb3VsZCBhbGxvdyB0byBtdXRhdGUgYSByZWFkYWJsZSBidWZmZXIuCi0gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTEyNDogbWFpbGJveCBub3cgYWNjZXB0cyBiaW5hcnkgaW5wdXQgYW5kIHJlYWRzIGFuZCB3cml0ZXMgbWFpbGJveAotICBmaWxlcyBpbiBiaW5hcnkgbW9kZSwgdXNpbmcgdGhlIGVtYWlsIHBhY2thZ2UncyBiaW5hcnkgc3VwcG9ydCB0byBwYXJzZQotICBhcmJpdHJhcnkgZW1haWwgbWVzc2FnZXMuICBTdHJpbmdJTyBhbmQgdGV4dCBmaWxlIGlucHV0IGlzIGRlcHJlY2F0ZWQsCi0gIGFuZCBzdHJpbmcgaW5wdXQgZmFpbHMgZWFybHkgaWYgbm9uLUFTQ0lJIGNoYXJhY3RlcnMgYXJlIHVzZWQsIHdoZXJlCi0gIHByZXZpb3VzbHkgaXQgd291bGQgZmFpbCB3aGVuIHRoZSBlbWFpbCB3YXMgcHJvY2Vzc2VkIGluIGEgbGF0ZXIgc3RlcC4KLQotLSBJc3N1ZSAjMTA4NDU6IE1pdGlnYXRlIHRoZSBpbmNvbXBhdGliaWxpdHkgYmV0d2VlbiB0aGUgbXVsdGlwcm9jZXNzaW5nCi0gIG1vZHVsZSBvbiBXaW5kb3dzIGFuZCB0aGUgdXNlIG9mIHBhY2thZ2UsIHppcGZpbGUgb3IgZGlyZWN0b3J5IGV4ZWN1dGlvbgotICBieSBzcGVjaWFsIGNhc2luZyBtYWluIG1vZHVsZXMgdGhhdCBhY3R1YWxseSAqYXJlKiBjYWxsZWQgX19tYWluX18ucHkuCi0KLS0gSXNzdWUgIzExMDQ1OiBQcm90ZWN0IGxvZ2dpbmcgY2FsbCBhZ2FpbnN0IE5vbmUgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzExMDUyOiBDb3JyZWN0IElETEUgbWVudSBhY2NlbGVyYXRvcnMgb24gTWFjIE9TIFggZm9yIFNhdmUKLSAgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzExMDUzOiBGaXggSURMRSAiU3ludGF4IEVycm9yIiB3aW5kb3dzIHRvIGJlaGF2ZSBhcyBpbiAyLngsCi0gIHByZXZlbnRpbmcgYSBjb25mdXNpbmcgaHVuZyBhcHBlYXJhbmNlIG9uIE9TIFggd2l0aCB0aGUgd2luZG93cwotICBvYnNjdXJlZC4KLQotLSBJc3N1ZSAjMTA5NDA6IFdvcmthcm91bmQgYW4gSURMRSBoYW5nIG9uIE1hYyBPUyBYIDEwLjYgd2hlbiB1c2luZyB0aGUKLSAgbWVudSBhY2NlbGVyYXRvcnMgZm9yIE9wZW4gTW9kdWxlLCBHbyB0byBMaW5lLCBhbmQgTmV3IEluZGVudCBXaWR0aC4KLSAgVGhlIGFjY2VsZXJhdG9ycyBzdGlsbCB3b3JrIGJ1dCBubyBsb25nZXIgYXBwZWFyIGluIHRoZSBtZW51IGl0ZW1zLgotCi0tIElzc3VlICMxMDk4OTogRml4IGEgY3Jhc2ggb24gU1NMQ29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoTm9uZSwgVHJ1ZSkuCi0KLS0gSXNzdWUgIzExMDIwOiBDb21tYW5kLWxpbmUgcHljbGJyIHdhcyBicm9rZW4gYmVjYXVzZSBvZiBtaXNzaW5nIDItdG8tMwotICBjb252ZXJzaW9uLgotCi0tIElzc3VlICMxMTAxOTogRml4ZWQgQnl0ZXNHZW5lcmF0b3Igc28gdGhhdCBpdCBjb3JyZWN0bHkgaGFuZGxlcyBhIE1lc3NhZ2UKLSAgd2l0aCBhIE5vbmUgYm9keS4KLQotLSBJc3N1ZSAjMTEwMTQ6IE1ha2UgJ2ZpbHRlcicgYXJndW1lbnQgaW4gdGFyZmlsZS5UYXJmaWxlLmFkZCgpIGludG8gYQotICBrZXl3b3JkLW9ubHkgYXJndW1lbnQuICBUaGUgcHJlY2VkaW5nIHBvc2l0aW9uYWwgYXJndW1lbnQgd2FzIGRlcHJlY2F0ZWQsCi0gIHNvIGl0IG1hZGUgbm8gc2Vuc2UgdG8gYWRkIGZpbHRlciBhcyBhIHBvc2l0aW9uYWwgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzExMDA0OiBSZXBhaXJlZCBlZGdlIGNhc2UgaW4gZGVxdWUuY291bnQoKS4KLQotLSBJc3N1ZSAjMTA5NzQ6IElETEUgbm8gbG9uZ2VyIGNyYXNoZXMgaWYgaXRzIHJlY2VudCBmaWxlcyBsaXN0IGluY2x1ZGVzIGZpbGVzCi0gIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMgaW4gdGhlaXIgcGF0aCBuYW1lcy4KLQotLSBIYXZlIGhhc2hsaWIuYWxnb3JpdGhtc19hdmFpbGFibGUgYW5kIGhhc2hsaWIuYWxnb3JpdGhtc19ndWFyYW50ZWVkIGJvdGgKLSAgcmV0dXJuIHNldHMgaW5zdGVhZCBvZiBvbmUgcmV0dXJuaW5nIGEgdHVwbGUgYW5kIHRoZSBvdGhlciBhIGZyb3plbnNldC4KLQotLSBJc3N1ZSAjMTA5ODc6IEZpeCB0aGUgcmVjdXJzaW9uIGxpbWl0IGhhbmRsaW5nIGluIHRoZSBfcGlja2xlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA5ODM6IEZpeCBzZXZlcmFsIGJ1Z3MgbWFraW5nIHR1bm5lbCByZXF1ZXN0cyBpbiBodHRwLmNsaWVudC4KLQotLSBJc3N1ZSAjMTA5NTU6IHppcGltcG9ydCB1c2VzIEFTQ0lJIGVuY29kaW5nIGluc3RlYWQgb2YgY3A0MzcgdG8gZGVjb2RlCi0gIGZpbGVuYW1lcywgYXQgYm9vdHN0cmFwLCBpZiB0aGUgY29kZWMgcmVnaXN0cnkgaXMgbm90IHJlYWR5IHlldC4gSXQgaXMgc3RpbGwKLSAgcG9zc2libGUgdG8gaGF2ZSBub24tQVNDSUkgZmlsZW5hbWVzIHVzaW5nIHRoZSBVbmljb2RlIGZsYWcgKFVURi04IGVuY29kaW5nKQotICBmb3IgYWxsIGZpbGUgZW50cmllcyBpbiB0aGUgWklQIGZpbGUuCi0KLS0gSXNzdWUgIzEwOTQ5OiBJbXByb3ZlZCByb2J1c3RuZXNzIG9mIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMuCi0KLS0gSXNzdWUgIzEwOTU1OiBGaXggYSBwb3RlbnRpYWwgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gbW1hcCgpIGEgZmlsZSBwYXN0IGl0cwotICBsZW5ndGguICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICMxMDg5ODogQWxsb3cgY29tcGlsaW5nIHRoZSBwb3NpeCBtb2R1bGUgd2hlbiB0aGUgQyBsaWJyYXJ5IGRlZmluZXMKLSAgYSBzeW1ib2wgbmFtZWQgRlNUQVQuCi0KLS0gSXNzdWUgIzEwOTgwOiB0aGUgSFRUUCBzZXJ2ZXIgbm93IGVuY29kZXMgaGVhZGVycyB3aXRoIGlzby04ODU5LTEgKGxhdGluMSkKLSAgZW5jb2RpbmcuICBUaGlzIGlzIHRoZSBwcmVmZXJyZWQgZW5jb2Rpbmcgb2YgUEVQIDMzMzMgYW5kIHRoZSBiYXNlIGVuY29kaW5nCi0gIG9mIEhUVFAgMS4xLgotCi0tIFRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgSFRUUCBzZXJ2ZXIsIHRoZSBIVFRQIGNsaWVudCBsaWJyYXJ5IG5vdyBhbHNvCi0gIGVuY29kZXMgaGVhZGVycyB3aXRoIGlzby04ODU5LTEgKGxhdGluMSkgZW5jb2RpbmcuICBJdCB3YXMgYWxyZWFkeSBkb2luZwotICB0aGF0IGZvciBpbmNvbWluZyBoZWFkZXJzIHdoaWNoIG1ha2VzIHRoaXMgYmVoYXZpb3VyIG5vdyBjb25zaXN0ZW50IGluCi0gIGJvdGggaW5jb21pbmcgYW5kIG91dGdvaW5nIGRpcmVjdGlvbi4KLQotLSBJc3N1ZSAjOTUwOTogYXJncGFyc2Ugbm93IHByb3Blcmx5IGhhbmRsZXMgSU9FcnJvcnMgcmFpc2VkIGJ5Ci0gIGFyZ3BhcnNlLkZpbGVUeXBlLgotCi0tIElzc3VlICMxMDk2MTogVGhlIG5ldyBweWRvYyBzZXJ2ZXIgbm93IGJldHRlciBoYW5kbGVzIGV4Y2VwdGlvbnMgcmFpc2VkCi0gIGR1cmluZyByZXF1ZXN0IGhhbmRsaW5nLgotCi0tIElzc3VlICMxMDY4MDogRml4IG11dHVhbGx5IGV4Y2x1c2l2ZSBhcmd1bWVudHMgZm9yIGFyZ3VtZW50IGdyb3VwcyBpbgotICBhcmdwYXJzZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzExMDU0OiBBbGxvdyBNYWMgT1MgWCBpbnN0YWxsZXIgYnVpbGRzIHRvIGFnYWluIHdvcmsgb24gMTAuNSB3aXRoCi0gIHRoZSBzeXN0ZW0tcHJvdmlkZWQgUHl0aG9uLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBSZWxlYXNlIENhbmRpZGF0ZSAxCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNi1KYW4tMjAxMSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwODg5OiByYW5nZSBpbmRleGluZyBhbmQgc2xpY2luZyBub3cgd29ya3MgY29ycmVjdGx5IG9uIHJhbmdlcyB3aXRoCi0gIGEgbGVuZ3RoIHRoYXQgZXhjZWVkcyBzeXMubWF4c2l6ZS4KLQotLSBJc3N1ZSAjMTA4OTI6IERvbid0IHNlZ2ZhdWx0IHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBfX2Fic3RyYWN0bWV0aG9kc19fIGZyb20gYQotICBjbGFzcy4KLQotLSBJc3N1ZSAjODAyMDogQXZvaWQgYSBjcmFzaCB3aGVyZSB0aGUgc21hbGwgb2JqZWN0cyBhbGxvY2F0b3Igd291bGQgcmVhZAotICBub24tUHl0aG9uIG1hbmFnZWQgbWVtb3J5IHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkIGJ5IGFub3RoZXIgdGhyZWFkLiAgUGF0Y2gKLSAgYnkgTWF0dCBCYW5keS4KLQotLSBJc3N1ZSAjMTA4NDE6IE9uIFdpbmRvd3MsIHNldCB0aGUgYmluYXJ5IG1vZGUgb24gc3RkaW4sIHN0ZG91dCwgc3RkZXJyIGFuZCBhbGwKLSAgaW8uRmlsZUlPIG9iamVjdHMgKHRvIG5vdCB0cmFuc2xhdGUgbmV3bGluZXMsIFxyXG4gPD0+IFxuKS4gIFRoZSBQeXRob24gcGFyc2VyCi0gIHRyYW5zbGF0ZXMgbmV3bGluZXMgKFxyXG4gPT4gXG4pLgotCi0tIFJlbW92ZSBidWZmZXIgQVBJIGZyb20gc3RhYmxlIEFCSSBmb3Igbm93LCBzZWUgIzEwMTgxLgotCi0tIElzc3VlICM4NjUxOiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZiB0aGUgZmlsZQotICBkb2Vzbid0IGhhdmUgUFlfU1NJWkVfVF9DTEVBTiBkZWZpbmUgYW5kIHRoZSBzaXplIGRvZXNuJ3QgZml0IGluIGFuIGludAotICAobGVuZ3RoIGJpZ2dlciB0aGFuIDJeMzEtMSBieXRlcykuCi0KLS0gSXNzdWUgIzkwMTUsICM5NjExOiBGaWxlSU8ucmVhZGludG8oKSwgRmlsZUlPLndyaXRlKCksIG9zLndyaXRlKCkgYW5kCi0gIHN0ZHByaW50ZXIud3JpdGUoKSBjbGFtcCB0aGUgbGVuZ3RoIHRvIElOVF9NQVggb24gV2luZG93cy4KLQotLSBJc3N1ZSAjODI3ODogT24gV2luZG93cyBhbmQgd2l0aCBhIE5URlMgZmlsZXN5c3RlbSwgb3Muc3RhdCgpIGFuZCBvcy51dGltZSgpCi0gIGNhbiBub3cgaGFuZGxlIGRhdGVzIGFmdGVyIDIwMzguCi0KLS0gSXNzdWUgIzEwNzgwOiBQeUVycl9TZXRGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgpIGFuZAotICBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycldpdGhGaWxlbmFtZSgpIGRlY29kZSB0aGUgZmlsZW5hbWUgZnJvbSB0aGUKLSAgZmlsZXN5c3RlbSBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgotCi0tIElzc3VlICMxMDc3OTogUHlFcnJfV2FybkV4cGxpY2l0KCkgZGVjb2RlcyB0aGUgZmlsZW5hbWUgZnJvbSB0aGUgZmlsZXN5c3RlbQotICBlbmNvZGluZyBpbnN0ZWFkIG9mIFVURi04LgotCi0tIEFkZCBzeXMuZmxhZ3MgYXR0cmlidXRlIGZvciB0aGUgbmV3IC1xIGNvbW1hbmQtbGluZSBvcHRpb24uCi0KLS0gSXNzdWUgIzExNTA2OiBUcnlpbmcgdG8gYXNzaWduIHRvIGEgYnl0ZXMgbGl0ZXJhbCBzaG91bGQgcmVzdWx0IGluIGEKLSAgU3ludGF4RXJyb3IuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA5MTY6IG1tYXAgc2hvdWxkIG5vdCBzZWdmYXVsdCB3aGVuIGEgZmlsZSBpcyBtYXBwZWQgdXNpbmcgMCBhcyBsZW5ndGgKLSAgYW5kIGEgbm9uLXplcm8gb2Zmc2V0LCBhbmQgYW4gYXR0ZW1wdCB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiBmaWxlIGlzIG1hZGUKLSAgKEluZGV4RXJyb3IgaXMgcmFpc2VkIGluc3RlYWQpLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzEwMTU0LCAjMTAwOTA6IGNoYW5nZSB0aGUgbm9ybWFsaXphdGlvbiBvZiBVVEYtOCB0byAiVVRGLTgiIGluc3RlYWQKLSAgb2YgIlVURjgiIGluIHRoZSBsb2NhbGUgbW9kdWxlIGFzIHRoZSBsYXR0ZXIgaXMgbm90IHN1cHBvcnRlZCBNYWNPU1ggYW5kIE9wZW5CU0QuCi0KLS0gSXNzdWUgIzEwNjg0OiBzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlCi0gIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZSB3aGVyZSB0aGUgc2FtZSBleGNlcHQKLSAgZm9yIHRoZSBjYXNlLgotCi0tIElzc3VlICMxMDkwNzogV2FybiBPUyBYIDEwLjYgSURMRSB1c2VycyB0byB1c2UgQWN0aXZlU3RhdGUgVGNsL1RrIDguNSwgcmF0aGVyCi0gIHRoYW4gdGhlIGN1cnJlbnRseSBwcm9ibGVtYXRpYyBBcHBsZS1zdXBwbGllZCBvbmUsIHdoZW4gcnVubmluZyB3aXRoIHRoZQotICA2NC0vMzItYml0IGluc3RhbGxlciB2YXJpYW50LgotCi0tIElzc3VlICM0OTUzOiBjZ2kuRmllbGRTdG9yYWdlIGFuZCBjZ2kucGFyc2UoKSBwYXJzZSB0aGUgcmVxdWVzdCBhcyBieXRlcywgbm90Ci0gIGFzIHVuaWNvZGUsIGFuZCBhY2NlcHQgYmluYXJ5IGZpbGVzLiBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhdHRyaWJ1dGVzIHRvCi0gIGNnaS5GaWVsZFN0b3JhZ2UuIFBhdGNoIHdyaXR0ZW4gYnkgUGllcnJlIFF1ZW50ZWwgKHdpdGggbWFueSBpbnB1dHMgYnkgR2xlbm4KLSAgTGluZGVybWFuKS4KLQotLSBBZGQgZW5jb2RpbmcgYW5kIGVycm9ycyBhcmd1bWVudHMgdG8gdXJsbGliLnBhcnNlX3FzKCkgYW5kIHVybGxpYi5wYXJzZV9xc2woKS4KLQotLSBJc3N1ZSAjMTA4OTk6IE5vIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkuICBSZW1vdmVkCi0gIGZ1bmN0aW9uIHR5cGUgYW5ub3RhdGlvbnMgZnJvbSBfcHlpby5weS4KLQotLSBJc3N1ZSAjMTA4NzU6IFVwZGF0ZSBSZWd1bGFyIEV4cHJlc3Npb24gSE9XVE87IHBhdGNoIGJ5ICdTaWxlbnRHaG9zdCcuCi0KLS0gSXNzdWUgIzEwODcyOiBUaGUgcmVwcigpIG9mIFRleHRJT1dyYXBwZXIgb2JqZWN0cyBub3cgaW5jbHVkZXMgdGhlIG1vZGUKLSAgaWYgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxMDg2OTogRml4ZWQgYnVnIHdoZXJlIGFzdC5pbmNyZW1lbnRfbGluZW5vIG1vZGlmaWVkIHRoZSByb290IG5vZGUKLSAgdHdpY2UuCi0KLS0gSXNzdWUgIzU4NzE6IGVtYWlsLmhlYWRlci5IZWFkZXIuZW5jb2RlIG5vdyByYWlzZXMgYW4gZXJyb3IgaWYgYW55Ci0gIGNvbnRpbnVhdGlvbiBsaW5lIGluIHRoZSBmb3JtYXR0ZWQgdmFsdWUgaGFzIG5vIGxlYWRpbmcgd2hpdGUgc3BhY2UgYW5kIGxvb2tzCi0gIGxpa2UgYSBoZWFkZXIuICBTaW5jZSBHZW5lcmF0b3IgdXNlcyBIZWFkZXIgdG8gZm9ybWF0IGFsbCBoZWFkZXJzLCB0aGlzIGNoZWNrCi0gIGlzIG1hZGUgZm9yIGFsbCBoZWFkZXJzIGluIGFueSBzZXJpYWxpemVkIG1lc3NhZ2UgYXQgc2VyaWFsaXphdGlvbiB0aW1lLiAgVGhpcwotICBwcm92aWRlcyBwcm90ZWN0aW9uIGFnYWluc3QgaGVhZGVyIGluamVjdGlvbiBhdHRhY2tzLgotCi0tIElzc3VlICMxMDg1OTogTWFrZSBgYGNvbnRleHRsaWIuR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYCBvZmZpY2lhbGx5Ci0gIHByaXZhdGUgYnkgcmVuYW1pbmcgaXQgdG8gYGBfR2VuZXJhdG9yQ29udGV4dE1hbmFnZXJgYC4KLQotLSBJc3N1ZSAjMTAwNDI6IEZpeGVkIHRoZSB0b3RhbF9vcmRlcmluZyBkZWNvcmF0b3IgdG8gaGFuZGxlIGNyb3NzLXR5cGUKLSAgY29tcGFyaXNvbnMgdGhhdCBjb3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi4KLQotLSBJc3N1ZSAjMTA2ODY6IHRoZSBlbWFpbCBwYWNrYWdlIG5vdyA6cmZjOmAyMDQ3YFwgLWVuY29kZXMgaGVhZGVycyB3aXRoCi0gIG5vbi1BU0NJSSBieXRlcyAocGFyc2VkIGJ5IGEgQnl0ZXNQYXJzZXIpIHdoZW4gZG9pbmcgY29udmVyc2lvbiB0byA3Yml0LWNsZWFuCi0gIHByZXNlbnRhdGlvbiwgaW5zdGVhZCBvZiByZXBsYWNpbmcgdGhlbSB3aXRoID9zLgotCi0tIGVtYWlsLmhlYWRlci5IZWFkZXIgd2FzIGluY29ycmVjdGx5IGVuY29kaW5nIGZvbGRpbmcgd2hpdGVzcGFjZSB3aGVuCi0gIHJmYzIwNDctZW5jb2RpbmcgaGVhZGVyIHZhbHVlcyB3aXRoIGVtYmVkZGVkIG5ld2xpbmVzLCBsZWF2aW5nIHRoZW0gd2l0aG91dAotICBmb2xkaW5nIHdoaXRlc3BhY2UuICBJdCBub3cgdXNlcyB0aGUgY29udGludWF0aW9uX3dzLCBhcyBpdCBkb2VzIGZvcgotICBjb250aW51YXRpb24gbGluZXMgdGhhdCBpdCBjcmVhdGVzIGl0c2VsZi4KLQotLSBJc3N1ZSAjMTc3NzQxMiwgIzEwODI3OiBDaGFuZ2VkIHRoZSBydWxlcyBmb3IgMi1kaWdpdCB5ZWFycy4gVGhlCi0gIHRpbWUuYXNjdGltZSgpLCB0aW1lLmN0aW1lKCkgYW5kIHRpbWUuc3RyZnRpbWUoKSBmdW5jdGlvbnMgd2lsbCBub3cgZm9ybWF0Ci0gIGFueSB5ZWFyIHdoZW4gYGB0aW1lLmFjY2VwdDJkeWVhcmBgIGlzIEZhbHNlIGFuZCB3aWxsIGFjY2VwdCB5ZWFycyA+PSAxMDAwCi0gIG90aGVyd2lzZS4gYGB0aW1lLm1rdGltZWBgIGFuZCBgYHRpbWUuc3RyZnRpbWVgYCBub3cgYWNjZXB0IGZ1bGwgcmFuZ2UKLSAgc3VwcG9ydGVkIGJ5IHRoZSBPUy4gV2l0aCBWaXN1YWwgU3R1ZGlvIG9yIG9uIFNvbGFyaXMsIHRoZSB5ZWFyIGlzIGxpbWl0ZWQgdG8KLSAgdGhlIHJhbmdlIFsxOyA5OTk5XS4gQ29udmVyc2lvbiBvZiAyLWRpZ2l0IHllYXJzIHRvIDQtZGlnaXQgaXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjNzg1ODogUmFpc2UgYW4gZXJyb3IgcHJvcGVybHkgd2hlbiBvcy51dGltZSgpIGZhaWxzIHVuZGVyIFdpbmRvd3MKLSAgb24gYW4gZXhpc3RpbmcgZmlsZS4KLQotLSBJc3N1ZSAjMzgzOTogd3NnaXJlZiBzaG91bGQgbm90IG92ZXJyaWRlIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHNldCBieQotICB0aGUgYXBwbGljYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IENsb3ZpcyBGYWJyaWNpby4KLQotLSBJc3N1ZSAjMTA0OTI6IGJkYi5CZGIucnVuKCkgb25seSB0cmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgY29kZSwgbm90IHRoZQotICBjb21waWxhdGlvbiAoaWYgdGhlIGlucHV0IGlzIGEgc3RyaW5nKS4KLQotLSBJc3N1ZSAjNzk5NTogV2hlbiBjYWxsaW5nIGFjY2VwdCgpIG9uIGEgc29ja2V0IHdpdGggYSB0aW1lb3V0LCB0aGUgcmV0dXJuZWQKLSAgc29ja2V0IGlzIG5vdyBhbHdheXMgYmxvY2tpbmcsIHJlZ2FyZGxlc3Mgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0uCi0KLS0gSXNzdWUgIzEwNzU2OiBhdGV4aXQgbm9ybWFsaXplcyB0aGUgZXhjZXB0aW9uIGJlZm9yZSBkaXNwbGF5aW5nIGl0LiBQYXRjaCBieQotICBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwNzkwOiBlbWFpbC5oZWFkZXIuSGVhZGVyLmFwcGVuZCdzIGNoYXJzZXQgbG9naWMgbm93IHdvcmtzIGNvcnJlY3RseQotICBmb3IgY2hhcnNldHMgd2hvc2Ugb3V0cHV0IGNvZGVjIGlzIGRpZmZlcmVudCBmcm9tIGl0cyBpbnB1dCBjb2RlYy4KLQotLSBJc3N1ZSAjMTA4MTk6IFNvY2tldElPLm5hbWUgcHJvcGVydHkgcmV0dXJucyAtMSB3aGVuIGl0cyBjbG9zZWQsIGluc3RlYWQgb2YKLSAgcmFpc2luZyBhIFZhbHVlRXJyb3IsIHRvIGZpeCByZXByKCkuCi0KLS0gSXNzdWUgIzg2NTA6IHpsaWIuY29tcHJlc3MoKSBhbmQgemxpYi5kZWNvbXByZXNzKCkgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZgotICB0aGUgaW5wdXQgYnVmZmVyIGxlbmd0aCBkb2Vzbid0IGZpdCBpbnRvIGFuIHVuc2lnbmVkIGludCAobGVuZ3RoIGJpZ2dlciB0aGFuCi0gIDJeMzItMSBieXRlcykuCi0KLS0gSXNzdWUgIzY2NDM6IFJlaW5pdGlhbGl6ZSBsb2NrcyBoZWxkIHdpdGhpbiB0aGUgdGhyZWFkaW5nIG1vZHVsZSBhZnRlciBmb3JrIHRvCi0gIGF2b2lkIGEgcG90ZW50aWFsIHJhcmUgZGVhZGxvY2sgb3IgY3Jhc2ggb24gc29tZSBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzEwODA2LCBpc3N1ZSAjOTkwNTogRml4IHN1YnByb2Nlc3MgcGlwZXMgd2hlbiBzb21lIG9mIHRoZSBzdGFuZGFyZCBmaWxlCi0gIGRlc2NyaXB0b3JzICgwLCAxLCAyKSBhcmUgY2xvc2VkIGluIHRoZSBwYXJlbnQgcHJvY2Vzcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcwotICBMYWdlcndhbGwuCi0KLS0gYHVuaXR0ZXN0LlRlc3RDYXNlYCBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgYSBtZXRob2QgbmFtZTsgZm9yIHNpbXBsZXIKLSAgZXhwbG9yYXRpb24gZnJvbSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzEwNzk4OiBSZWplY3Qgc3VwcG9ydGluZyBjb25jdXJyZW50LmZ1dHVyZXMgaWYgdGhlIHN5c3RlbSBoYXMgdG9vCi0gIGZldyBQT1NJWCBzZW1hcGhvcmVzLgotCi0tIElzc3VlICMxMDgwNzogUmVtb3ZlIGJhc2U2NCwgYnoyLCBoZXgsIHF1b3ByaSwgcm90MTMsIHV1IGFuZCB6bGliIGNvZGVjcyBmcm9tCi0gIHRoZSBjb2RlYyBhbGlhc2VzLiBUaGV5IGFyZSBzdGlsbCBhY2Nlc3NpYmxlIHZpYSBjb2RlY3MubG9va3VwKCkuCi0KLS0gSXNzdWUgIzEwODAxOiBJbiB6aXBmaWxlLCBzdXBwb3J0IGRpZmZlcmVudCBlbmNvZGluZ3MgZm9yIHRoZSBoZWFkZXIgYW5kIHRoZQotICBmaWxlbmFtZXMuCi0KLS0gSXNzdWUgIzYyODU6IElETEUgbm8gbG9uZ2VyIGNyYXNoZXMgb24gbWlzc2luZyBoZWxwIGZpbGU7IHBhdGNoIGJ5IFNjb3R0Ci0gIERhdmlkIERhbmllbHMuCi0KLS0gRml4IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0LnNldGRlZmF1bHQoKSBzbyB0aGF0IGl0IHdvcmtzIGluIHN1YmNsYXNzZXMgdGhhdAotICBkZWZpbmUgX19taXNzaW5nX18oKS4KLQotLSBJc3N1ZSAjMTA3ODY6IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIGRlZmF1bHQgc3RyZWFtIG5vIGxvbmdlciBib3VuZCBhdCBpbXBvcnQKLSAgdGltZS4gYHN5cy5zdGRlcnJgIG5vdyBsb29rZWQgdXAgYXQgaW5zdGFudGlhdGlvbiB0aW1lLiAgRml4IGNvbnRyaWJ1dGVkIGJ5Ci0gIE1hcmsgUm9kZHkuCi0KLS0gSXNzdWUgIzEwNzUzOiBDaGFyYWN0ZXJzICc7JywgJz0nIGFuZCAnLCcgaW4gdGhlIFBBVEhfSU5GTyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICB3b24ndCBiZSBxdW90ZWQgd2hlbiB0aGUgVVJJIGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSB3c2dpcmVmLnV0aWwncyByZXF1ZXN0X3VyaQotICBtZXRob2QuIEFjY29yZGluZyB0byBSRkMgMzk4NiwgdGhlc2UgY2hhcmFjdGVycyBjYW4gYmUgYSBwYXJ0IG9mIHBhcmFtcyBpbgotICBQQVRIIGNvbXBvbmVudCBvZiBVUkkgYW5kIG5lZWQgbm90IGJlIHF1b3RlZC4KLQotLSBJc3N1ZSAjMTA3Mzg6IEZpeCB3ZWJicm93c2VyLk9wZXJhLnJhaXNlX29wdHMuCi0KLS0gSXNzdWUgIzk4MjQ6IFNpbXBsZUNvb2tpZSBub3cgZW5jb2RlcyAsIGFuZCA7IGluIHZhbHVlcyB0byBjYXRlciB0byBob3cKLSAgYnJvd3NlcnMgYWN0dWFsbHkgcGFyc2UgY29va2llcy4KLQotLSBJc3N1ZSAjOTMzMzogb3Muc3ltbGluayBub3cgYXZhaWxhYmxlIHJlZ2FyZGxlc3Mgb2YgdXNlciBwcml2aWxlZ2VzLiAgVGhlCi0gIGZ1bmN0aW9uIG5vdyByYWlzZXMgT1NFcnJvciBvbiBXaW5kb3dzID49Ni4wIHdoZW4gdGhlIHVzZXIgaXMgdW5hYmxlIHRvIGNyZWF0ZQotICBzeW1ib2xpYyBsaW5rcy4gWFAgYW5kIDIwMDMgc3RpbGwgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvci4KLQotLSBJc3N1ZSAjMTA3ODM6IHN0cnVjdC5wYWNrKCkgbm8gbG9uZ2VyIGltcGxpY2l0bHkgZW5jb2RlcyB1bmljb2RlIHRvIFVURi04LgotCi0tIElzc3VlICMxMDczMDogQWRkIFNWRyBtaW1lIHR5cGVzIHRvIG1pbWV0eXBlcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwNzY4OiBNYWtlIHRoZSBUa2ludGVyIFNjcm9sbGVkVGV4dCB3aWRnZXQgd29yayBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTA3Nzc6IEZpeCAiZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIgYnVnIGluCi0gIEVsZW1lbnRUcmVlIHJlZ2lzdGVyX25hbWVzcGFjZSgpLgotCi0tIElzc3VlICMxMDYyNjogdGVzdF9sb2dnaW5nIG5vdyBwcmVzZXJ2ZXMgbG9nZ2VyIGRpc2FibGVkIHN0YXRlcy4KLQotLSBJc3N1ZSAjMTA3NzQ6IHRlc3RfbG9nZ2luZyBub3cgcmVtb3ZlcyB0ZW1wIGZpbGVzIGNyZWF0ZWQgZHVyaW5nIHRlc3RzLgotCi0tIElzc3VlICM1MjU4LyMxMDY0MjogaWYgc2l0ZS5weSBlbmNvdW50ZXJzIGEgLnB0aCBmaWxlIHRoYXQgZ2VuZXJhdGVzIGFuIGVycm9yLAotICBpdCBub3cgcHJpbnRzIHRoZSBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0cmFjZWJhY2sgdG8gc3RkZXJyIGFuZCBza2lwcwotICB0aGUgcmVzdCBvZiB0aGF0IGluZGl2aWR1YWwgZmlsZSwgaW5zdGVhZCBvZiBzdG9wcGluZyBwcm9jZXNzaW5nIGVudGlyZWx5LgotCi0tIElzc3VlICMxMDc2Mzogc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIGNsb3NlcyBzdGRvdXQgYW5kIHN0ZGVyciBpZiBib3RoIGFyZQotICBwaXBlcyAoYnVnIHNwZWNpZmljIHRvIFdpbmRvd3MpLgotCi0tIElzc3VlICMxNjkzNTQ2OiBmaXggZW1haWwubWVzc2FnZSBSRkMgMjIzMSBwYXJhbWV0ZXIgZW5jb2RpbmcgdG8gYmUgaW4gYmV0dGVyCi0gIGNvbXBsaWFuY2UgKG5vICJzIGFyb3VuZCBlbmNvZGVkIHZhbHVlcykuCi0KLS0gSW1wcm92ZWQgdGhlIGRpZmYgbWVzc2FnZSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlJ3MgYXNzZXJ0Q291bnRFcXVhbCgpLgotCi0tIElzc3VlICMxMTU1MzYyOiBlbWFpbC51dGlscy5wYXJzZWRhdGVfdHogbm93IGhhbmRsZXMgYSBtaXNzaW5nIHNwYWNlIGJlZm9yZQotICB0aGUgJy0nIG9mIGEgdGltZXpvbmUgZmllbGQgYXMgd2VsbCBhcyBiZWZvcmUgYSAnKycuCi0KLS0gSXNzdWUgIzQ4NzE6IFRoZSB6aXBmaWxlIG1vZHVsZSBub3cgZ2l2ZXMgYSBtb3JlIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmCi0gIGFuIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGUgYXJjaGl2ZSBwYXNzd29yZC4KLQotLSBJc3N1ZSAjMTA3NTA6IFRoZSBgYHJhd2BgIGF0dHJpYnV0ZSBvZiBidWZmZXJlZCBJTyBvYmplY3RzIGlzIG5vdyByZWFkLW9ubHkuCi0KLS0gRGVwcmVjYXRlZCBhc3NlcnREaWN0Q29udGFpbnNTdWJzZXQoKSBpbiB0aGUgdW5pdHRlc3QgbW9kdWxlLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMTA5MTM6IERlcHJlY2F0ZSBtaXNsZWFkaW5nIGZ1bmN0aW9ucyBQeUV2YWxfQWNxdWlyZUxvY2soKSBhbmQKLSAgUHlFdmFsX1JlbGVhc2VMb2NrKCkuICBUaGUgdGhyZWFkLXN0YXRlIGF3YXJlIEFQSXMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMTAzMzM6IFJlbW92ZSBhbmNpZW50IEdDIEFQSSwgd2hpY2ggaGFzIGJlZW4gZGVwcmVjYXRlZCBzaW5jZSBQeXRob24KLSAgMi4yLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTA4NDM6IFVwZGF0ZSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IHZlcnNpb25zIHVzZWQgaW4gT1MgWCAzMi1iaXQKLSAgaW5zdGFsbGVyIGJ1aWxkczogYnppcDIgMS4wLjYsIHJlYWRsaW5lIDYuMS4yLCBTUUxpdGUgMy43LjQgKHdpdGggRlRTMy9GVFM0Ci0gIGFuZCBSVFJFRSBlbmFibGVkKSwgYW5kIG5jdXJzZXN3IDUuNSAod2lkZS1jaGFyIHN1cHBvcnQgZW5hYmxlZCkuCi0KLS0gSXNzdWUgIzEwODIwOiBGaXggT1MgWCBmcmFtZXdvcmsgaW5zdGFsbHMgdG8gc3VwcG9ydCB2ZXJzaW9uLXNwZWNpZmljCi0gIHNjcmlwdHMgKCMxMDY3OSkuCi0KLS0gSXNzdWUgIzc3MTY6IFVuZGVyIFNvbGFyaXMsIGRvbid0IGFzc3VtZSBleGlzdGVuY2Ugb2YgL3Vzci94cGc0L2Jpbi9ncmVwIGluCi0gIHRoZSBjb25maWd1cmUgc2NyaXB0IGJ1dCB1c2UgJEdSRVAgaW5zdGVhZC4gIFBhdGNoIGJ5IEZhYmlhbiBHcm9mZmVuLgotCi0tIElzc3VlICMxMDQ3NTogRG9uJ3QgaGFyZGNvZGUgY29tcGlsZXJzIGZvciBMRFNIQVJFRC9MRENYWFNIQVJFRCBvbiBOZXRCU0QKLSAgYW5kIERyYWdvbkZseSBCU0QuICBQYXRjaCBieSBOaWNvbGFzIEpvbHkuCi0KLS0gSXNzdWUgIzEwNjc5OiBUaGUgImlkbGUiLCAicHlkb2MiIGFuZCAiMnRvMyIgc2NyaXB0cyBhcmUgbm93IGluc3RhbGxlZCB3aXRoCi0gIGEgdmVyc2lvbi1zcGVjaWZpYyBzdWZmaXggb24gIm1ha2UgYWx0aW5zdGFsbCIuCi0KLS0gSXNzdWUgIzEwNjU1OiBGaXggdGhlIGJ1aWxkIG9uIFBvd2VyUEMgb24gTGludXggd2l0aCBHQ0Mgd2hlbiBidWlsZGluZyB3aXRoCi0gIHRpbWVzdGFtcCBwcm9maWxpbmcgKC0td2l0aC10c2MpOiB0aGUgcHJlcHJvY2Vzc29yIHRlc3QgZm9yIHRoZSBQb3dlclBDCi0gIHN1cHBvcnQgbm93IGxvb2tzIGZvciAiX19wb3dlcnBjX18iIGFzIHdlbGwgYXMgIl9fcHBjX18iOiB0aGUgbGF0dGVyIHNlZW1zIHRvCi0gIG9ubHkgYmUgcHJlc2VudCBvbiBPUyBYOyB0aGUgZm9ybWVyIGlzIHRoZSBjb3JyZWN0IG9uZSBmb3IgTGludXggd2l0aCBHQ0MuCi0KLS0gSXNzdWUgIzEwOTk6IEZpeCB0aGUgYnVpbGQgb24gTWFjT1NYIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBweWRlYnVnCi0gIHVzaW5nIEdDQyA0LjAuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDg0MzogSW5zdGFsbCB0aGUgVG9vbHMgZGlyZWN0b3J5IG9uIE9TIFggaW4gdGhlIGFwcGxpY2F0aW9ucyBFeHRyYXMKLSAgKC9BcHBsaWNhdGlvbnMvUHl0aG9uIDMubi9FeHRyYXMvKSB3aGVyZSB0aGUgRGVtbyBkaXJlY3RvcnkgaGFkIHByZXZpb3VzIGJlZW4KLSAgaW5zdGFsbGVkLgotCi0tIElzc3VlICM3OTYyOiBUaGUgRGVtbyBkaXJlY3RvcnkgaXMgZ29uZS4gIE1vc3Qgb2YgdGhlIG9sZCBhbmQgdW5tYWludGFpbmVkCi0gIGRlbW9zIGhhdmUgYmVlbiByZW1vdmVkLCBvdGhlcnMgaW50ZWdyYXRlZCBpbiBkb2N1bWVudGF0aW9uIG9yIGEgbmV3Ci0gIFRvb2xzL2RlbW8gc3ViZGlyZWN0b3J5LgotCi0tIElzc3VlICMxMDUwMjogQWRkaXRpb24gb2YgdGhlIHVuaXR0ZXN0Z3VpIHRvb2wuIE9yaWdpbmFsbHkgYnkgU3RldmUgUHVyY2VsbC4KLSAgVXBkYXRlZCBmb3IgdGVzdCBkaXNjb3ZlcnkgYnkgTWFyayBSb2RkeSBhbmQgUHl0aG9uIDMgY29tcGF0aWJpbGl0eSBieSBCcmlhbgotICBDdXJ0aW4uCi0KLVRlc3RzCi0tLS0tLQotCi0tIEZpeCB0ZXN0X3N0YXJ0ZmlsZSB0byB3YWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZSBiZWZvcmUgZmluaXNoaW5nLgotCi0tIElzc3VlICMxMDgyMjogRml4IHRlc3RfcG9zaXg6dGVzdF9nZXRncm91cHMgZmFpbHVyZSB1bmRlciBTb2xhcmlzLiAgUGF0Y2gKLSAgYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gTWFrZSB0aGUgLS1jb3ZlcmFnZSBmbGFnIHdvcmsgZm9yIHRlc3QucmVncnRlc3QuCi0KLS0gSXNzdWUgIzE2Nzc2OTQ6IFJlZmFjdG9yIGFuZCBpbXByb3ZlIHRlc3RfdGltZW91dC4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIEJqw7ZybiBMaW5kcXZpc3QuCi0KLS0gSXNzdWUgIzU0ODU6IEFkZCB0ZXN0cyBmb3IgdGhlIFVzZUZvcmVpZ25EVEQgbWV0aG9kIG9mIGV4cGF0IHBhcnNlciBvYmplY3RzLgotICBQYXRjaCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lIGFuZCBTYW5kcm8gVG9zaS4KLQotLSBJc3N1ZSAjNjI5MzogSGF2ZSByZWdydGVzdC5weSBlY2hvIGJhY2sgc3lzLmZsYWdzLiAgVGhpcyBpcyBkb25lIGJ5IGRlZmF1bHQgaW4KLSAgd2hvbGUgcnVucyBhbmQgZW5hYmxlZCBzZWxlY3RpdmVseSB1c2luZyBgYC0taGVhZGVyYGAgd2hlbiBydW5uaW5nIGFuIGV4cGxpY2l0Ci0gIGxpc3Qgb2YgdGVzdHMuICBPcmlnaW5hbCBwYXRjaCBieSBDb2xsaW4gV2ludGVyLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBCZXRhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxOS1EZWMtMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzg4NDQ6IFJlZ3VsYXIgYW5kIHJlY3Vyc2l2ZSBsb2NrIGFjcXVpc2l0aW9ucyBjYW4gbm93IGJlIGludGVycnVwdGVkCi0gIGJ5IHNpZ25hbHMgb24gcGxhdGZvcm1zIHVzaW5nIHB0aHJlYWRzLiAgUGF0Y2ggYnkgUmVpZCBLbGVja25lci4KLQotLSBJc3N1ZSAjNDIzNjogUHlNb2R1bGVfQ3JlYXRlMiBub3cgY2hlY2tzIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRpcmVjdGx5Ci0gIHJhdGhlciB0aGFuIHRoZSBQeV9Jc0luaXRpYWxpemVkIGZsYWcsIGF2b2lkaW5nIGEgRmF0YWwgUHl0aG9uCi0gIGVycm9yIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuIGFuIGltcG9ydCBpcyBkb25lIGluIF9fZGVsX18uCi0KLS0gSXNzdWUgIzU1ODc6IGFkZCBhIHJlcHIgdG8gZGljdF9wcm94eSBvYmplY3RzLiAgUGF0Y2ggYnkgRGF2aWQgU3RhbmVrIGFuZAotICBEYW5pZWwgVXJiYW4uCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzI0MzogIFN1cHBvcnQgaXRlcmFibGUgYm9kaWVzIGluIGh0dHBsaWIuIFBhdGNoIENvbnRyaWJ1dGlvbnMgYnkKLSAgWHVhbmppIExpIGFuZCBDaHJpcyBBdExlZS4KLQotLSBJc3N1ZSAjMTA2MTE6IFN5c3RlbUV4aXQgZXhjZXB0aW9uIHdpbGwgbm8gbG9uZ2VyIGtpbGwgYSB1bml0dGVzdCBydW4uCi0KLS0gSXNzdWUgIzk4NTc6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBza2lwIGEgdGVzdCBpbiBhIHNldFVwLCB0ZWFyRG93biBvciBjbGVhbgotICB1cCBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTA1NzM6IHVzZSBhY3R1YWwvZXhwZWN0ZWQgY29uc2lzdGVudGx5IGluIHVuaXR0ZXN0IG1ldGhvZHMuCi0gIFRoZSBvcmRlciBvZiB0aGUgYXJncyBvZiBhc3NlcnRDb3VudEVxdWFsIGlzIGFsc28gY2hhbmdlZC4KLQotLSBJc3N1ZSAjOTI4NjogZW1haWwudXRpbHMucGFyc2VhZGRyIG5vIGxvbmdlciBjb25jYXRlbmF0ZXMgYmxhbmstc2VwYXJhdGVkCi0gIHdvcmRzIGluIHRoZSBsb2NhbCBwYXJ0IG9mIGVtYWlsIGFkZHJlc3NlcywgdGhlcmVieSBwcmVzZXJ2aW5nIHRoZSBpbnB1dC4KLQotLSBJc3N1ZSAjNjc5MTogTGltaXQgaGVhZGVyIGxpbmUgbGVuZ3RoICh0byA2NTUzNSBieXRlcykgaW4gaHR0cC5jbGllbnQKLSAgYW5kIGh0dHAuc2VydmVyLCB0byBhdm9pZCBkZW5pYWwgb2Ygc2VydmljZXMgZnJvbSB0aGUgb3RoZXIgcGFydHkuCi0KLS0gSXNzdWUgIzEwNDA0OiBVc2UgY3RsLWJ1dHRvbi0xIG9uIE9TWCBmb3IgdGhlIGNvbnRleHQgbWVudSBpbiBJZGxlLgotCi0tIElzc3VlICM5OTA3OiBGaXggdGFiIGhhbmRsaW5nIG9uIE9TWCB3aGVuIHVzaW5nIGVkaXRsaW5lIGJ5IGNhbGxpbmcKLSAgcmxfaW5pdGlhbGl6ZSBmaXJzdCwgdGhlbiBzZXR0aW5nIG91ciBjdXN0b20gZGVmYXVsdHMsIHRoZW4gcmVhZGluZyAuZWRpdHJjLgotCi0tIElzc3VlICM0MTg4OiBBdm9pZCBjcmVhdGluZyBkdW1teSB0aHJlYWQgb2JqZWN0cyB3aGVuIGxvZ2dpbmcgb3BlcmF0aW9ucwotICBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlICh3aXRoIHRoZSBpbnRlcm5hbCB2ZXJib3NlIGZsYWcgYWN0aXZhdGVkKS4KLQotLSBJc3N1ZSAjMTA3MTE6IFJlbW92ZSBIVFRQIDAuOSBzdXBwb3J0IGZyb20gaHR0cC5jbGllbnQuICBUaGUgYGBzdHJpY3RgYAotICBwYXJhbWV0ZXIgdG8gSFRUUENvbm5lY3Rpb24gYW5kIGZyaWVuZHMgaXMgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjOTcyMTogRml4IHRoZSBiZWhhdmlvciBvZiB1cmxqb2luIHdoZW4gdGhlIHJlbGF0aXZlIHVybCBzdGFydHMgd2l0aCBhCi0gICc7JyBjaGFyYWN0ZXIuIFBhdGNoIGJ5IFdlcyBDaG93LgotCi0tIElzc3VlICMxMDcxNDogTGltaXQgbGVuZ3RoIG9mIGluY29taW5nIHJlcXVlc3QgaW4gaHR0cC5zZXJ2ZXIgdG8gNjU1MzYgYnl0ZXMKLSAgZm9yIHNlY3VyaXR5IHJlYXNvbnMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICM5NTU4OiBGaXggZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfZXh0IHdpdGggVlMgOC4wLgotCi0tIElzc3VlICMxMDY2NzogRmFzdCBwYXRoIGZvciBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCi0KLS0gSXNzdWUgIzEwNjk1OiBwYXNzaW5nIHRoZSBwb3J0IGFzIGEgc3RyaW5nIHZhbHVlIHRvIHRlbG5ldGxpYiBubyBsb25nZXIKLSAgY2F1c2VzIGRlYnVnIG1vZGUgdG8gZmFpbC4KLQotLSBJc3N1ZSAjMTA3ODkxOTogYWRkX2hlYWRlciBub3cgYXV0b21hdGljYWxseSBSRkMyMjMxIGVuY29kZXMgcGFyYW1ldGVycwotICB0aGF0IGNvbnRhaW4gbm9uLWFzY2lpIHZhbHVlcy4KLQotLSBJc3N1ZSAjMTAxODggKHBhcnRpYWwgcmVzb2x1dGlvbik6IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSBlbWl0cwotICBhIHdhcm5pbmcgb24gc3lzLnN0ZGVyciByYXRoZXIgdGhhbiB0aHJvd2luZyBhIG1pc2xlYWRpbmcgZXhjZXB0aW9uCi0gIGlmIGNsZWFudXAgZmFpbHMgZHVlIHRvIG51bGxpbmcgb3V0IG9mIG1vZHVsZXMgZHVyaW5nIHNodXRkb3duLgotICBBbHNvIGF2b2lkcyBhbiBBdHRyaWJ1dGVFcnJvciB3aGVuIG1rZHRlbXAgY2FsbCBmYWlscyBhbmQgaXNzdWVzCi0gIGEgUmVzb3VyY2VXYXJuaW5nIG9uIGltcGxpY2l0IGNsZWFudXAgdmlhIF9fZGVsX18uCi0KLS0gSXNzdWUgIzEwMTA3OiBXYXJuIGFib3V0IHVuc2F2ZWQgZmlsZXMgaW4gSURMRSBvbiBPU1guCi0KLS0gSXNzdWUgIzcyMTM6IHN1YnByb2Nlc3MuUG9wZW4ncyBkZWZhdWx0IGZvciBjbG9zZV9mZHMgaGFzIGJlZW4gY2hhbmdlZC4KLSAgSXQgaXMgbm93IFRydWUgaW4gbW9zdCBjYXNlcyBvdGhlciB0aGFuIG9uIFdpbmRvd3Mgd2hlbiBpbnB1dCwgb3V0cHV0IG9yCi0gIGVycm9yIGhhbmRsZXMgYXJlIHByb3ZpZGVkLgotCi0tIElzc3VlICM2NTU5OiBzdWJwcm9jZXNzLlBvcGVuIGhhcyBhIG5ldyBwYXNzX2ZkcyBwYXJhbWV0ZXIgKGFjdHVhbGx5Ci0gIGFkZGVkIGluIDMuMmJldGExKSB0byBhbGxvdyBzcGVjaWZ5aW5nIGEgc3BlY2lmaWMgbGlzdCBvZiBmaWxlIGRlc2NyaXB0b3JzCi0gIHRvIGtlZXAgb3BlbiBpbiB0aGUgY2hpbGQgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTczMTcxNzogRml4ZWQgdGhlIHByb2JsZW0gd2hlcmUgc3VicHJvY2Vzcy53YWl0KCkgY291bGQgY2F1c2UgYW4KLSAgT1NFcnJvciBleGNlcHRpb24gd2hlbiBUaGUgT1MgaGFkIGJlZW4gdG9sZCB0byBpZ25vcmUgU0lHQ0xEIGluIG91ciBwcm9jZXNzCi0gIG9yIG90aGVyd2lzZSBub3Qgd2FpdCBmb3IgZXhpdGluZyBjaGlsZCBwcm9jZXNzZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM3NzU5NjQ6IHRlc3RfZ3JwIG5vdyBza2lwcyBZUC9OSVMgZW50cmllcyBpbnN0ZWFkIG9mIGZhaWxpbmcgd2hlbgotICBlbmNvdW50ZXJpbmcgdGhlbS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzYwNzU6IElETEUgb24gTWFjIE9TIFggbm93IHdvcmtzIHdpdGggYm90aCBDYXJib24gQXF1YVRrIGFuZAotICBDb2NvYSBBcXVhVGsuCi0KLS0gSXNzdWUgIzEwNzEwOiBgYE1pc2Mvc2V0dWlkLXByb2cuY2BgIGlzIHJlbW92ZWQgZnJvbSB0aGUgc291cmNlIHRyZWUuCi0KLS0gSXNzdWUgIzEwNzA2OiBSZW1vdmUgb3V0ZGF0ZWQgc2NyaXB0IHJ1bnRlc3RzLnNoLiAgRWl0aGVyIGBgbWFrZSB0ZXN0YGAKLSAgb3IgYGBweXRob24gLW0gdGVzdGBgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIFRoZSBXaW5kb3dzIGJ1aWxkIG5vdyB1c2VzIFRjbC9UayA4LjUuOSBhbmQgc3FsaXRlMyAzLjcuNC4KLQotLSBJc3N1ZSAjOTIzNDogYXJncGFyc2Ugc3VwcG9ydHMgYWxpYXMgbmFtZXMgZm9yIHN1YnBhcnNlcnMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEJldGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA1LURlYy0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA2MzA6IFJldHVybiBkaWN0IHZpZXdzIGZyb20gdGhlIGRpY3QgcHJveHkga2V5cygpL3ZhbHVlcygpL2l0ZW1zKCkKLSAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTA1OTY6IEZpeCBmbG9hdC5fX21vZF9fIHRvIGhhdmUgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIGZsb2F0Ll9fZGl2bW9kX18KLSAgd2l0aCByZXNwZWN0IHRvIHNpZ25lZCB6ZXJvcy4gIC00LjAgJSA0LjAgc2hvdWxkIGJlIDAuMCwgbm90IC0wLjAuCi0KLS0gSXNzdWUgIzE3NzI4MzM6IEFkZCB0aGUgLXEgY29tbWFuZC1saW5lIG9wdGlvbiB0byBzdXBwcmVzcyBjb3B5cmlnaHQgYW5kCi0gIHZlcnNpb24gb3V0cHV0IGluIGludGVyYWN0aXZlIG1vZGUuCi0KLS0gUHJvdmlkZSBhbiAqb3B0aW1pemUqIHBhcmFtZXRlciBpbiB0aGUgYnVpbHQtaW4gY29tcGlsZSgpIGZ1bmN0aW9uLgotCi0tIEZpeGVkIHNldmVyYWwgY29ybmVyIGNhc2UgaXNzdWVzIG9uIFdpbmRvd3MgaW4gb3Muc3RhdC9vcy5sc3RhdCByZWxhdGVkIHRvCi0gIHJlcGFyc2UgcG9pbnRzLgotCi0tIFBFUCAzODQgKERlZmluaW5nIGEgU3RhYmxlIEFCSSkgaXMgaW1wbGVtZW50ZWQuCi0KLS0gSXNzdWUgIzI2OTA6IFJhbmdlIG9iamVjdHMgc3VwcG9ydCBuZWdhdGl2ZSBpbmRpY2VzIGFuZCBzbGljaW5nLgotCi0tIElzc3VlICM5OTE1OiBTcGVlZCB1cCBzb3J0aW5nIHdpdGggYSBrZXkuCi0KLS0gSXNzdWUgIzg2ODU6IFNwZWVkIHVwIHNldCBkaWZmZXJlbmNlIGBgYSAtIGJgYCB3aGVuIHNvdXJjZSBzZXQgYGBhYGAgaXMgbXVjaAotICBsYXJnZXIgdGhhbiBvcGVyYW5kIGBgYmBgLiAgUGF0Y2ggYnkgQW5kcmV3IEJlbm5ldHRzLgotCi0tIElzc3VlICMxMDUxODogQnJpbmcgYmFjayB0aGUgY2FsbGFibGUoKSBidWlsdGluLgotCi0tIElzc3VlICM3MDk0OiBBZGRlZCBhbHRlcm5hdGUgZm9ybWF0dGluZyAoc3BlY2lmaWVkIGJ5ICcjJykgdG8gYGBfX2Zvcm1hdF9fYGAKLSAgbWV0aG9kIG9mIGZsb2F0LCBjb21wbGV4LCBhbmQgRGVjaW1hbC4gVGhpcyBhbGxvd3MgbW9yZSBwcmVjaXNlIGNvbnRyb2wgb3ZlcgotICB3aGVuIGRlY2ltYWwgcG9pbnRzIGFyZSBkaXNwbGF5ZWQuCi0KLS0gSXNzdWUgIzEwNDc0OiByYW5nZS5jb3VudCgpIHNob3VsZCByZXR1cm4gaW50ZWdlcnMuCi0KLS0gSXNzdWUgIzE1NzQyMTc6IGlzaW5zdGFuY2Ugbm93IGNhdGNoZXMgb25seSBBdHRyaWJ1dGVFcnJvciwgcmF0aGVyIHRoYW4KLSAgbWFza2luZyBhbGwgZXJyb3JzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gbG9nZ2luZzogYWRkZWQgImhhbmRsZXIgb2YgbGFzdCByZXNvcnQiLiBTZWUgaHR0cDovL2JpdC5seS9sYXN0LXJlc29ydC1oYW5kbGVyCi0KLS0gdGVzdC5zdXBwb3J0OiBBZGRlZCBUZXN0SGFuZGxlciBhbmQgTWF0Y2hlciBjbGFzc2VzIGZvciBiZXR0ZXIgc3VwcG9ydCBvZgotICBhc3NlcnRpb25zIGFib3V0IGxvZ2dpbmcuCi0KLS0gSXNzdWUgIzQzOTE6IFVzZSBwcm9wZXIgcGx1cmFsIGZvcm1zIGluIGFyZ3BhcnNlLgotCi0tIElzc3VlICMxMDYwMTogc3lzLmRpc3BsYXlob29rIHVzZXMgJ2JhY2tzbGFzaHJlcGxhY2UnIGVycm9yIGhhbmRsZXIgb24KLSAgVW5pY29kZUVuY29kZUVycm9yLgotCi0tIEFkZCB0aGUgImRpc3BsYXkiIGFuZCAidW5kaXNwbGF5IiBwZGIgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzcyNDU6IEFkZCBhIFNJR0lOVCBoYW5kbGVyIGluIHBkYiB0aGF0IGFsbG93cyB0byBicmVhayBhIHByb2dyYW0gYWdhaW4KLSAgYWZ0ZXIgYSAiY29udGludWUiIGNvbW1hbmQuCi0KLS0gQWRkIHRoZSAiaW50ZXJhY3QiIHBkYiBjb21tYW5kLgotCi0tIElzc3VlICM3OTA1OiBBY3R1YWxseSByZXNwZWN0IHRoZSBrZXllbmNvZGluZyBwYXJhbWV0ZXIgdG8gc2hlbHZlLlNoZWxmLgotCi0tIElzc3VlICMxNTY5MjkxOiBTcGVlZCB1cCBhcnJheS5yZXBlYXQoKS4KLQotLSBQcm92aWRlIGFuIGludGVyZmFjZSB0byBzZXQgdGhlIG9wdGltaXphdGlvbiBsZXZlbCBvZiBjb21waWxhdGlvbiBpbgotICBweV9jb21waWxlLCBjb21waWxlYWxsIGFuZCB6aXBmaWxlLlB5WmlwRmlsZS4KLQotLSBJc3N1ZSAjNzkwNDogQ2hhbmdlcyB0byB1cmxsaWIucGFyc2UudXJsc3BsaXQgdG8gaGFuZGxlIHNjaGVtZXMgYXMgZGVmaW5lZCBieQotICBSRkMzOTg2LiBBbnl0aGluZyBiZWZvcmUgOi8vIGlzIGNvbnNpZGVyZWQgYSBzY2hlbWUgYW5kIGlzIGZvbGxvd2VkIGJ5IGFuCi0gIGF1dGhvcml0eSAob3IgbmV0bG9jKSBhbmQgYnkgJy8nIGxlZCBwYXRoLCB3aGljaCBpcyBvcHRpb25hbC4KLQotLSBJc3N1ZSAjNjA0NTogZGJtLmdudSBkYXRhYmFzZXMgbm93IHN1cHBvcnQgZ2V0KCkgYW5kIHNldGRlZmF1bHQoKSBtZXRob2RzLgotCi0tIElzc3VlICMxMDYyMDogYHB5dGhvbiAtbSB1bml0dGVzdGAgY2FuIGFjY2VwdCBmaWxlIHBhdGhzIGluc3RlYWQgb2YgbW9kdWxlCi0gIG5hbWVzIGZvciBydW5uaW5nIHNwZWNpZmljIHRlc3RzLgotCi0tIElzc3VlICM5NDI0OiBEZXByZWNhdGUgdGhlIGB1bml0dGVzdC5UZXN0Q2FzZWAgbWV0aG9kcyBgYXNzZXJ0RXF1YWxzYCwKLSAgYGFzc2VydE5vdEVxdWFsc2AsIGBhc3NlcnRBbG1vc3RFcXVhbHNgLCBgYXNzZXJ0Tm90QWxtb3N0RXF1YWxzYCBhbmQgYGFzc2VydF9gCi0gIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgY29ycmVjdCBtZXRob2RzIGluIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4KLQotLSBJc3N1ZSAjMTAyNzI6IFRoZSBzc2wgbW9kdWxlIG5vdyByYWlzZXMgc29ja2V0LnRpbWVvdXQgaW5zdGVhZCBvZiBhIGdlbmVyaWMKLSAgU1NMRXJyb3Igb24gc29ja2V0IHRpbWVvdXRzLgotCi0tIElzc3VlICMxMDUyODogQWxsb3cgdHJhbnNsYXRvcnMgdG8gcmVvcmRlciBwbGFjZWhvbGRlcnMgaW4gbG9jYWxpemFibGUKLSAgbWVzc2FnZXMgZnJvbSBhcmdwYXJzZS4KLQotLSBJc3N1ZSAjMTA0OTc6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGdldHRleHQgaW4gYXJncGFyc2UuCi0KLS0gSXNzdWUgIzEwNDc4OiBSZWVudHJhbnQgY2FsbHMgaW5zaWRlIGJ1ZmZlcmVkIElPIG9iamVjdHMgKGZvciBleGFtcGxlIGJ5Ci0gIHdheSBvZiBhIHNpZ25hbCBoYW5kbGVyKSBub3cgcmFpc2UgYSBSdW50aW1lRXJyb3IgaW5zdGVhZCBvZiBmcmVlemluZyB0aGUKLSAgY3VycmVudCBwcm9jZXNzLgotCi0tIGxvZ2dpbmc6IEFkZGVkIGdldExvZ1JlY29yZEZhY3Rvcnkvc2V0TG9nUmVjb3JkRmFjdG9yeSB3aXRoIGRvY3MgYW5kIHRlc3RzLgotCi0tIElzc3VlICMxMDU0OTogRml4IHB5ZG9jIHRyYWNlYmFjayB3aGVuIHRleHQtZG9jdW1lbnRpbmcgY2VydGFpbiBjbGFzc2VzLgotCi0tIElzc3VlICMyMDAxOiBOZXcgSFRNTCBzZXJ2ZXIgd2l0aCBlbmhhbmNlZCBXZWIgcGFnZSBmZWF0dXJlcy4gIFBhdGNoIGJ5IFJvbgotICBBZGFtLgotCi0tIElzc3VlICMxMDM2MDogSW4gV2Vha1NldCwgZG8gbm90IHJhaXNlIFR5cGVFcnJvcnMgd2hlbiB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwCi0gIG9mIG5vbi13ZWFrcmVmYWJsZSBvYmplY3RzLgotCi0tIElzc3VlICM5NDAyODY6IHB5ZG9jLkhlbHBlci5oZWxwKCkgaWdub3JlcyBpbnB1dC9vdXRwdXQgaW5pdCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICMxNzQ1MDM1OiBBZGQgYSBjb21tYW5kIHNpemUgYW5kIGRhdGEgc2l6ZSBsaW1pdCB0byBzbXRwZC5weSwgdG8gcHJldmVudAotICBEb1MgYXR0YWNrcy4gIFBhdGNoIGJ5IFNhdmlvIFNlbmEuCi0KLS0gSXNzdWUgIzQ5MjU6IEFkZCBmaWxlbmFtZSB0byBlcnJvciBtZXNzYWdlIHdoZW4gZXhlY3V0YWJsZSBjYW4ndCBiZSBmb3VuZCBpbgotICBzdWJwcm9jZXNzLgotCi0tIElzc3VlICMxMDM5MTogRG9uJ3QgZGVyZWZlcmVuY2UgaW52YWxpZCBtZW1vcnkgaW4gZXJyb3IgbWVzc2FnZXMgaW4gdGhlIGFzdAotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwMDI3OiBzdF9ubGluayB3YXMgbm90IGJlaW5nIHNldCBvbiBXaW5kb3dzIGNhbGxzIHRvIG9zLnN0YXQgb3IKLSAgb3MubHN0YXQuIFBhdGNoIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICM5MzMzOiBFeHBvc2Ugb3Muc3ltbGluayBvbmx5IHdoZW4gdGhlIFNlQ3JlYXRlU3ltYm9saWNMaW5rUHJpdmlsZWdlIGlzCi0gIGhlbGQgYnkgdGhlIHVzZXIncyBhY2NvdW50LCBpLmUuLCB3aGVuIHRoZSBmdW5jdGlvbiBjYW4gYWN0dWFsbHkgYmUgdXNlZC4KLQotLSBJc3N1ZSAjODg3OTogQWRkIG9zLmxpbmsgc3VwcG9ydCBmb3IgV2luZG93cy4KLQotLSBJc3N1ZSAjNzkxMTogYGB1bml0dGVzdC5UZXN0Q2FzZS5sb25nTWVzc2FnZWBgIGRlZmF1bHRzIHRvIFRydWUgZm9yIGltcHJvdmVkCi0gIGZhaWx1cmUgbWVzc2FnZXMgYnkgZGVmYXVsdC4gUGF0Y2ggYnkgTWFyayBSb2RkeS4KLQotLSBJc3N1ZSAjMTQ4NjcxMzogSFRNTFBhcnNlciBub3cgaGFzIGFuIG9wdGlvbmFsIHRvbGVyYW50IG1vZGUgd2hlcmUgaXQgdHJpZXMgdG8KLSAgZ3Vlc3MgYXQgdGhlIGNvcnJlY3QgcGFyc2luZyBvZiBpbnZhbGlkIGh0bWwuCi0KLS0gSXNzdWUgIzEwNTU0OiBBZGQgY29udGV4dCBtYW5hZ2VyIHN1cHBvcnQgdG8gc3VicHJvY2Vzcy5Qb3BlbiBvYmplY3RzLgotCi0tIElzc3VlICM4OTg5OiBlbWFpbC51dGlscy5tYWtlX21zZ2lkIG5vdyBoYXMgYSBkb21haW4gcGFyYW1ldGVyIHRoYXQgY2FuCi0gIG92ZXJyaWRlIHRoZSBkb21haW4gbmFtZSB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgbXNnaWQuCi0KLS0gSXNzdWUgIzkyOTk6IEFkZCBleGlzdF9vayBwYXJhbWV0ZXIgdG8gb3MubWFrZWRpcnMgdG8gc3VwcHJlc3MgdGhlICdGaWxlCi0gIGV4aXN0cycgZXhjZXB0aW9uIHdoZW4gYSB0YXJnZXQgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzIHdpdGggdGhlIHNwZWNpZmllZAotICBtb2RlLiBQYXRjaCBieSBSYXkgQWxsZW4uCi0KLS0gSXNzdWUgIzk1NzM6IG9zLmZvcmsoKSBub3cgd29ya3MgY29ycmVjdGx5IHdoZW4gdHJpZ2dlcmVkIGFzIGEgc2lkZSBlZmZlY3Qgb2YKLSAgYSBtb2R1bGUgaW1wb3J0LgotCi0tIElzc3VlICMxMDQ2NDogbmV0cmMgbm93IGNvcnJlY3RseSBoYW5kbGVzIGxpbmVzIHdpdGggZW1iZWRkZWQgJyMnIGNoYXJhY3RlcnMuCi0KLS0gQWRkZWQgaXRlcnRvb2xzLmFjY3VtdWxhdGUoKS4KLQotLSBJc3N1ZSAjNDExMzogQWRkZWQgY3VzdG9tIGBgX19yZXByX19gYCBtZXRob2QgdG8gYGBmdW5jdG9vbHMucGFydGlhbGBgLgotICBPcmlnaW5hbCBwYXRjaCBieSBEYW5pZWwgVXJiYW4uCi0KLS0gSXNzdWUgIzEwMjczOiBSZW5hbWUgYGFzc2VydFJlZ2V4cE1hdGNoZXNgIGFuZCBgYXNzZXJ0UmFpc2VzUmVnZXhwYCB0bwotICBgYXNzZXJ0UmVnZXhgIGFuZCBgYXNzZXJ0UmFpc2VzUmVnZXhgLgotCi0tIElzc3VlICMxMDUzNTogRW5hYmxlIHNpbGVuY2VkIHdhcm5pbmdzIGluIHVuaXR0ZXN0IGJ5IGRlZmF1bHQuCi0KLS0gSXNzdWUgIzk4NzM6IFRoZSBVUkwgcGFyc2luZyBmdW5jdGlvbnMgaW4gdXJsbGliLnBhcnNlIG5vdyBhY2NlcHQgQVNDSUkgYnl0ZQotICBzZXF1ZW5jZXMgYXMgaW5wdXQgaW4gYWRkaXRpb24gdG8gY2hhcmFjdGVyIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzEwNTg2OiBUaGUgc3RhdGlzdGljcyBBUEkgZm9yIHRoZSBuZXcgZnVuY3Rvb2xzLmxydV9jYWNoZSBoYXMgYmVlbgotICBjaGFuZ2VkIHRvIGEgc2luZ2xlIGNhY2hlX2luZm8oKSBtZXRob2QgcmV0dXJuaW5nIGEgbmFtZWQgdHVwbGUuCi0KLS0gSXNzdWUgIzEwMzIzOiBpdGVydG9vbHMuaXNsaWNlKCkgbm93IGNvbnN1bWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnB1dHMKLSAgYmVmb3JlIHN0b3BwaW5nLiAgRm9ybWVybHksIHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBpdGVyYXRvciB3YXMKLSAgdW5kZWZpbmVkLgotCi0tIElzc3VlICMxMDU2NTogVGhlIGNvbGxlY3Rpb25zLkl0ZXJhdG9yIEFCQyBub3cgY2hlY2tzIGZvciBib3RoIF9faXRlcl9fIGFuZAotICBfX25leHRfXy4KLQotLSBJc3N1ZSAjMTAyNDI6IEZpeGVkIGltcGxlbWVudGF0aW9uIG9mIHVuaXR0ZXN0Lkl0ZW1zRXF1YWwgYW5kIGdhdmUgaXQgYSBuZXcKLSAgbW9yZSBpbmZvcm1hdGl2ZSBuYW1lLCB1bml0dGVzdC5Db3VudEVxdWFsLgotCi0tIElzc3VlICMxMDU2MTogSW4gcGRiLCBjbGVhciB0aGUgYnJlYWtwb2ludHMgYnkgdGhlIGJyZWFrcG9pbnQgbnVtYmVyLgotCi0tIElzc3VlICMyOTg2OiBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlciBnZXRzIGEgbmV3IHBhcmFtZXRlciwgYXV0b2p1bmssIHdoaWNoIGNhbgotICBiZSBzZXQgdG8gRmFsc2UgdG8gdHVybiBvZmYgdGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkICdwb3B1bGFyaXR5JwotICBoZXVyaXN0aWMuIFBhdGNoIGJ5IFRlcnJ5IFJlZWR5IGFuZCBFbGkgQmVuZGVyc2t5LgotCi0tIElzc3VlICMxMDUzNDogaW4gZGlmZmxpYiwgZXhwb3NlIGJqdW5rIGFuZCBicG9wdWxhciBzZXRzOyBkZXByZWNhdGUKLSAgdW5kb2N1bWVudGVkIGFuZCBub3cgcmVkdW5kYW50IGlzYmp1bmsgYW5kIGlzYnBvcHVsYXIgbWV0aG9kcy4KLQotLSBJc3N1ZSAjOTg0NjogemlwZmlsZSBpcyBub3cgY29ycmVjdGx5IGNsb3NpbmcgdW5kZXJseWluZyBmaWxlIG9iamVjdHMuCi0KLS0gSXNzdWUgIzEwNDU5OiBVcGRhdGUgQ0pLIGNoYXJhY3RlciBuYW1lcyB0byBVbmljb2RlIDYuMC4KLQotLSBJc3N1ZSAjNDQ5MzogdXJsbGliLnJlcXVlc3QgYWRkcyAnLycgaW4gZnJvbnQgb2YgcGF0aCBjb21wb25lbnRzIHdoaWNoIGRvZXMgbm90Ci0gIHN0YXJ0IHdpdGggJy8uIENvbW1vbiBiZWhhdmlvciBleGhpYml0ZWQgYnkgYnJvd3NlcnMgYW5kIG90aGVyIGNsaWVudHMuCi0KLS0gSXNzdWUgIzYzNzg6IGlkbGUuYmF0IG5vdyBydW5zIHdpdGggdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiB2ZXJzaW9uIHJhdGhlciB0aGFuCi0gIHRoZSBzeXN0ZW0gZGVmYXVsdC4gUGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyLgotCi0tIElzc3VlICMxMDQ3MDogJ3B5dGhvbiAtbSB1bml0dGVzdCcgd2lsbCBub3cgcnVuIHRlc3QgZGlzY292ZXJ5IGJ5IGRlZmF1bHQsCi0gIHdoZW4gbm8gZXh0cmEgYXJndW1lbnRzIGhhdmUgYmVlbiBwcm92aWRlZC4KLQotLSBJc3N1ZSAjMzcwOTogQmFzZUhUVFBSZXF1ZXN0SGFuZGxlciB3aWxsIGJ1ZmZlciB0aGUgaGVhZGVycyBhbmQgd3JpdGUgdG8KLSAgb3V0cHV0IHN0cmVhbSBvbmx5IHdoZW4gZW5kX2hlYWRlcnMgaXMgaW52b2tlZC4gVGhpcyBpcyBhIHNwZWVkdXAgYW5kIGFuCi0gIGludGVybmFsIG9wdGltaXphdGlvbi4gIFBhdGNoIGJ5IGVuZGlhbi4KLQotLSBJc3N1ZSAjMTAyMjA6IEFkZGVkIGluc3BlY3QuZ2V0Z2VuZXJhdG9yc3RhdGUuIEluaXRpYWwgcGF0Y2ggYnkgUm9kb2xwaG8KLSAgRWNraGFyZHQuCi0KLS0gSXNzdWUgIzEwNDUzOiBjb21waWxlYWxsIG5vdyB1c2VzIGFyZ3BhcnNlIGluc3RlYWQgb2YgZ2V0b3B0LCBhbmQgdGh1cwotICBwcm92aWRlcyBjbGVhbiBvdXRwdXQgd2hlbiBjYWxsZWQgd2l0aCAnLWgnLgotCi0tIElzc3VlICM4MDc4OiBBZGQgY29uc3RhbnRzIGZvciBoaWdoZXIgYmF1ZCByYXRlcyBpbiB0aGUgdGVybWlvcyBtb2R1bGUuICBQYXRjaAotICBieSBSb2RvbHBobyBFY2toYXJkdC4KLQotLSBJc3N1ZSAjMTA0MDc6IEZpeCB0d28gTmFtZUVycm9ycyBpbiBkaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzEwMzcxOiBEZXByZWNhdGVkIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgaW4gdGhlIHRyYWNlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTA0Njc6IEZpeCBCeXRlc0lPLnJlYWRpbnRvKCkgYWZ0ZXIgc2Vla2luZyBpbnRvIGEgcG9zaXRpb24gYWZ0ZXIgdGhlCi0gIGVuZCBvZiB0aGUgZmlsZS4KLQotLSBjb25maWdwYXJzZXI6IDEwMCUgdGVzdCBjb3ZlcmFnZS4KLQotLSBJc3N1ZSAjMTA0OTk6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBwbHVnZ2FibGUgaW50ZXJwb2xhdGlvbiBoYW5kbGVycy4gVGhlCi0gIGRlZmF1bHQgY2xhc3NpYyBpbnRlcnBvbGF0aW9uIGhhbmRsZXIgaXMgY2FsbGVkIEJhc2ljSW50ZXJwb2xhdGlvbi4gQW5vdGhlcgotICBpbnRlcnBvbGF0aW9uIGhhbmRsZXIgYWRkZWQgKEV4dGVuZGVkSW50ZXJwb2xhdGlvbikgd2hpY2ggc3VwcG9ydHMgdGhlIHN5bnRheAotICB1c2VkIGJ5IHpjLmJ1aWxkb3V0IChlLmcuIGludGVycG9sYXRpb24gYmV0d2VlbiBzZWN0aW9ucykuCi0KLS0gY29uZmlncGFyc2VyOiB0aGUgU2FmZUNvbmZpZ1BhcnNlciBjbGFzcyBoYXMgYmVlbiByZW5hbWVkIHRvIENvbmZpZ1BhcnNlci4KLSAgVGhlIGxlZ2FjeSBDb25maWdQYXJzZXIgY2xhc3MgaGFzIGJlZW4gcmVtb3ZlZCBidXQgaXRzIGludGVycG9sYXRpb24gbWVjaGFuaXNtCi0gIGlzIHN0aWxsIGF2YWlsYWJsZSBhcyBMZWdhY3lJbnRlcnBvbGF0aW9uLgotCi0tIGNvbmZpZ3BhcnNlcjogVXNhZ2Ugb2YgUmF3Q29uZmlnUGFyc2VyIGlzIG5vdyBkaXNjb3VyYWdlZCBmb3IgbmV3IHByb2plY3RzCi0gIGluIGZhdm9yIG9mIENvbmZpZ1BhcnNlcihpbnRlcnBvbGF0aW9uPU5vbmUpLgotCi0tIElzc3VlICMxNjgyOTQyOiBjb25maWdwYXJzZXIgc3VwcG9ydHMgYWx0ZXJuYXRpdmUgb3B0aW9uL3ZhbHVlIGRlbGltaXRlcnMuCi0KLS0gSXNzdWUgIzU0MTI6IGNvbmZpZ3BhcnNlciBzdXBwb3J0cyBtYXBwaW5nIHByb3RvY29sIGFjY2Vzcy4KLQotLSBJc3N1ZSAjOTQxMTogY29uZmlncGFyc2VyIHN1cHBvcnRzIHNwZWNpZnlpbmcgZW5jb2RpbmcgZm9yIHJlYWQgb3BlcmF0aW9ucy4KLQotLSBJc3N1ZSAjOTQyMTogY29uZmlncGFyc2VyJ3MgZ2V0aW50KCksIGdldGZsb2F0KCkgYW5kIGdldGJvb2xlYW4oKSBtZXRob2RzCi0gIGFjY2VwdCB2YXJzIGFuZCBkZWZhdWx0IGFyZ3VtZW50cyBqdXN0IGxpa2UgZ2V0KCkgZG9lcy4KLQotLSBJc3N1ZSAjOTQ1MjogY29uZmlncGFyc2VyIHN1cHBvcnRzIHJlYWRpbmcgZnJvbSBzdHJpbmdzIGFuZCBkaWN0aW9uYXJpZXMKLSAgKHRoYW5rcyB0byB0aGUgbWFwcGluZyBwcm90b2NvbCBBUEksIHRoZSBsYXR0ZXIgY2FuIGJlIHVzZWQgdG8gY29weSBkYXRhCi0gIGJldHdlZW4gcGFyc2VycykuCi0KLS0gY29uZmlncGFyc2VyOiBhY2NlcHRlZCBJTkkgZmlsZSBzdHJ1Y3R1cmUgaXMgbm93IGN1c3RvbWl6YWJsZSwgaW5jbHVkaW5nCi0gIGNvbW1lbnQgcHJlZml4ZXMsIG5hbWUgb2YgdGhlIERFRkFVTFQgc2VjdGlvbiwgZW1wdHkgbGluZXMgaW4gbXVsdGlsaW5lCi0gIHZhbHVlcywgYW5kIGluZGVudGF0aW9uLgotCi0tIElzc3VlICMxMDMyNjogdW5pdHRlc3QuVGVzdENhc2UgaW5zdGFuY2VzIGNhbiBiZSBwaWNrbGVkLgotCi0tIElzc3VlICM5OTI2OiBXcmFwcGVkIFRlc3RTdWl0ZSBzdWJjbGFzcyBkb2VzIG5vdCBnZXQgX19jYWxsX18gZXhlY3V0ZWQuCi0KLS0gSXNzdWUgIzk5MjA6IFNraXAgdGVzdHMgZm9yIGNtYXRoLmF0YW4gYW5kIGNtYXRoLmF0YW5oIGFwcGxpZWQgdG8gY29tcGxleAotICB6ZXJvcyBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBsb2cxcCBmdW5jdGlvbiBmYWlscyB0byByZXNwZWN0IHRoZSBzaWduIG9mIHplcm8uCi0gIFRoaXMgZml4ZXMgYSB0ZXN0IGZhaWx1cmUgb24gQUlYLgotCi0tIElzc3VlICM5NzMyOiBBZGRpdGlvbiBvZiBnZXRhdHRyX3N0YXRpYyB0byB0aGUgaW5zcGVjdCBtb2R1bGUuCi0KLS0gSXNzdWUgIzEwNDQ2OiBNb2R1bGUgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgYnkgcHlkb2Mgbm93IGxpbmtzIHRvIGEKLSAgdmVyc2lvbi1zcGVjaWZpYyBvbmxpbmUgcmVmZXJlbmNlIG1hbnVhbC4KLQotLSBNYWtlIHRoZSAnTm8gbW9kdWxlIG5hbWVkJyBleGNlcHRpb24gbWVzc2FnZSBmcm9tIGltcG9ydGxpYiBjb25zaXN0ZW50LgotCi0tIElzc3VlICMxMDQ0MzogQWRkIHRoZSBTU0xDb250ZXh0LnNldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTA0NDA6IFN1cHBvcnQgUlVTQUdFX1RIUkVBRCBhcyBhIGNvbnN0YW50IGluIHRoZSByZXNvdXJjZSBtb2R1bGUuCi0gIFBhdGNoIGJ5IFJvYmVydCBDb2xsaW5zLgotCi0tIElzc3VlICMxMDQyOTogSU1BUC5zdGFydHRscygpIHN0b3JlZCB0aGUgY2FwYWJpbGl0aWVzIGFzIGJ5dGVzIG9iamVjdHMsIHJhdGhlcgotICB0aGFuIHN0cmluZ3MuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICMxMDU1NzogQWRkZWQgYSBuZXcgQVBJIGZ1bmN0aW9uLCBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoKSwKLSAgd2hpY2ggdHJhbnNmb3JtcyBub24tQVNDSUkgZGVjaW1hbCBkaWdpdHMgaW4gYSBVbmljb2RlIHN0cmluZyB0byB0aGVpciBBU0NJSQotICBlcXVpdmFsZW50cy4KLQotLSBJc3N1ZSAjOTUxODogRXh0ZW5kIHRoZSBQeU1vZHVsZURlZl9IRUFEX0lOSVQgbWFjcm8gdG8gZXhwbGljaXRseQotICB6ZXJvLWluaXRpYWxpemUgYWxsIGZpZWxkcywgZml4aW5nIGNvbXBpbGVyIHdhcm5pbmdzIHNlZW4gd2hlbiBidWlsZGluZwotICBleHRlbnNpb24gbW9kdWxlcyB3aXRoIGdjYyB3aXRoICItV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIiAoaW1wbGllZCBieQotICAiLVciKS4KLQotLSBJc3N1ZSAjMTAyNTU6IEZpeCByZWZlcmVuY2UgbGVhayBpbiBQeV9Jbml0aWFsaXplRXgoKS4gIFBhdGNoIGJ5IE5laWwKLSAgU2NoZW1lbmF1ZXIuCi0KLS0gc3RydWN0c2VxLmggaXMgbm93IGluY2x1ZGVkIGluIFB5dGhvbi5oLgotCi0tIExvb3NlbiBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMgdG8gYWxsb3cgZGljdCBzdWJjbGFzc2VzLgotCi1UZXN0cwotLS0tLS0KLQotLSByZWdydGVzdC5weSBvbmNlIGFnYWluIGVuc3VyZXMgdGhlIHRlc3QgZGlyZWN0b3J5IGlzIHJlbW92ZWQgZnJvbSBzeXMucGF0aAotICB3aGVuIGl0IGlzIGludm9rZWQgZGlyZWN0bHkgYXMgdGhlIF9fbWFpbl9fIG1vZHVsZS4KLQotLSBgcHl0aG9uIC1tIHRlc3RgIGNhbiBiZSB1c2VkIHRvIHJ1biB0aGUgdGVzdCBzdWl0ZSBhcyB3ZWxsIGFzIGBweXRob24gLW0KLSAgdGVzdC5yZWdydGVzdGAuCi0KLS0gRG8gbm90IGZhaWwgdGVzdF9zb2NrZXQgd2hlbiB0aGUgSVAgYWRkcmVzcyBvZiB0aGUgbG9jYWwgaG9zdG5hbWUgY2Fubm90IGJlCi0gIGxvb2tlZCB1cC4KLQotLSBJc3N1ZSAjODg4NjogVXNlIGNvbnRleHQgbWFuYWdlcnMgdGhyb3VnaG91dCB0ZXN0X3ppcGZpbGUuIFBhdGNoIGJ5IEVyaWMKLSAgQ2Fyc3RlbnNlbi4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEwMzI1OiBGaXggdHdvIGlzc3VlcyBpbiB0aGUgZmFsbGJhY2sgZGVmaW5pdGlvbnMgZm9yIFBZX1VMTE9OR19NQVggYW5kCi0gIFBZX0xMT05HX01BWCB0aGF0IG1hZGUgdGhlbSB1bnN1aXRhYmxlIGZvciB1c2UgaW4gcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFscy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDI5OTogTGlzdCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIGluIGEgdGFibGUgaW4gZnVuY3Rpb25zLnJzdC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgND8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxMy1Ob3YtMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMzcyOiBJbXBvcnQgdGhlIHdhcm5pbmdzIG1vZHVsZSBvbmx5IGFmdGVyIHRoZSBJTyBsaWJyYXJ5IGlzCi0gIGluaXRpYWxpemVkLCBzbyBhcyB0byBhdm9pZCBib290c3RyYXAgaXNzdWVzIHdpdGggdGhlICctVycgb3B0aW9uLgotCi0tIElzc3VlICMxMDI5MzogUmVtb3ZlIG9ic29sZXRlIGZpZWxkIGluIHRoZSBQeU1lbW9yeVZpZXcgc3RydWN0dXJlLCB1bnVzZWQKLSAgdW5kb2N1bWVudGVkIHZhbHVlIFB5QlVGX1NIQURPVywgYW5kIHN0cmFuZ2VseS1sb29raW5nIGNvZGUgaW4KLSAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMuCi0KLS0gSXNzdWUgIzYwODE6IEFkZCBzdHIuZm9ybWF0X21hcCgpLCBzaW1pbGFyIHRvIGBgc3RyLmZvcm1hdCgqKm1hcHBpbmcpYGAuCi0KLS0gSWYgRmlsZUlPLl9faW5pdF9fIGZhaWxzLCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9yLgotCi0tIElzc3VlICMxMDIyMTogZGljdC5wb3Aoaykgbm93IGhhcyBhIGtleSBlcnJvciBtZXNzYWdlIHRoYXQgaW5jbHVkZXMgdGhlCi0gIG1pc3Npbmcga2V5IChzYW1lIG1lc3NhZ2UgZFtrXSByZXR1cm5zIGZvciBtaXNzaW5nIGtleXMpLgotCi0tIElzc3VlICM1NDM3OiBBIHByZWFsbG9jYXRlZCBNZW1vcnlFcnJvciBpbnN0YW5jZSBzaG91bGQgbm90IGtlZXAgdHJhY2ViYWNrCi0gIGRhdGEgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMgY2F1Z2h0IGluIHRoZSBzdGFjayB0cmFjZSkgYWxpdmUgaW5maW5pdGVseS4KLQotLSBJc3N1ZSAjMTAxODY6IEZpeCB0aGUgU3ludGF4RXJyb3IgY2FyZXQgd2hlbiB0aGUgb2Zmc2V0IGlzIGVxdWFsIHRvIHRoZSBsZW5ndGgKLSAgb2YgdGhlIG9mZmVuZGluZyBsaW5lLgotCi0tIElzc3VlICMxMDA4OTogQWRkIHN1cHBvcnQgZm9yIGFyYml0cmFyeSAtWCBvcHRpb25zIG9uIHRoZSBjb21tYW5kIGxpbmUuICBUaGV5Ci0gIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCBhIG5ldyBhdHRyaWJ1dGUgYGBzeXMuX3hvcHRpb25zYGAuCi0KLS0gSXNzdWUgIzQzODg6IE9uIE1hYyBPUyBYLCBkZWNvZGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBmcm9tIFVURi04LCBpbnN0ZWFkIG9mCi0gIHRoZSBsb2NhbGUgZW5jb2RpbmcuICBJZiB0aGUgTEFORyAoYW5kIExDX0FMTCBhbmQgTENfQ1RZUEUpIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgSVNPLTg4NTktMSwgd2hlcmVhcyBtb3N0IHByb2dyYW1zCi0gIChpbmNsdWRpbmcgUHl0aG9uKSBleHBlY3QgVVRGLTguICBQeXRob24gYWxyZWFkeSB1c2VzIFVURi04IGZvciB0aGUgZmlsZXN5c3RlbQotICBlbmNvZGluZyBhbmQgdG8gZW5jb2RlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgb24gdGhpcyBPUy4KLQotLSBJc3N1ZSAjOTcxMywgIzEwMTE0OiBQYXJzZXIgZnVuY3Rpb25zIChlLmcuIFB5UGFyc2VyX0FTVEZyb21GaWxlKSBleHBlY3QKLSAgZmlsZW5hbWVzIGVuY29kZWQgdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCi0gIGhhbmRsZXIgKHRvIHN1cHBvcnQgdW5kZWNvZGFibGUgYnl0ZXMpLCBpbnN0ZWFkIG9mIFVURi04IGluIHN0cmljdCBtb2RlLgotCi0tIElzc3VlICM5OTk3OiBEb24ndCBsZXQgdGhlIG5hbWUgInRvcCIgaGF2ZSBzcGVjaWFsIHNpZ25pZmljYW5jZSBpbiBzY29wZQotICByZXNvbHV0aW9uLgotCi0tIElzc3VlICM5ODYyOiBDb21wZW5zYXRlIGZvciBicm9rZW4gUElQRV9CVUYgaW4gQUlYIGJ5IGhhcmQgY29kaW5nIGl0cyB2YWx1ZSBhcwotICB0aGUgZGVmYXVsdCA1MTIgd2hlbiBjb21waWxpbmcgb24gQUlYLgotCi0tIFVzZSBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBVVEYtOCB0byBlbmNvZGUgYW5kIGRlY29kZSBmaWxlbmFtZXMgaWYKLSAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBpcyBub3Qgc2V0LgotCi0tIElzc3VlICMxMDA5NTogZnBfc2V0cmVhZGwoKSBkb2Vzbid0IHJlb3BlbiB0aGUgZmlsZSwgaW5zdGVhZCByZXVzZSB0aGUgZmlsZQotICBkZXNjcmlwdG9yLgotCi0tIElzc3VlICM5NDE4OiBNb3ZlZCBwcml2YXRlIHN0cmluZyBtZXRob2RzIGBgX2Zvcm1hdHRlcl9wYXJzZXJgYCBhbmQKLSAgYGBfZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXRgYCBpbnRvIGEgbmV3IGBgX3N0cmluZ2BgIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTk5MjogUmVtb3ZlIFBZVEhPTkZTRU5DT0RJTkcgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTA0NjU6IGZpeCBicm9rZW4gZGVsZWdhdGluZyBvZiBhdHRyaWJ1dGVzIGJ5IGd6aXAuX1BhZGRlZEZpbGUuCi0KLS0gSXNzdWUgIzEwMzU2OiBEZWNpbWFsLl9faGFzaF9fKC0xKSBzaG91bGQgcmV0dXJuIC0yLgotCi0tIElzc3VlICMxNTUzMzc1OiBsb2dnaW5nOiBBZGRlZCBzdGFja19pbmZvIGt3YXJnIHRvIGRpc3BsYXkgc3RhY2sgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzUxMTE6IElQdjYgSG9zdCBpbiB0aGUgSGVhZGVyIGlzIHdyYXBwZWQgaW5zaWRlIFsgXS4gUGF0Y2ggYnkgQ2hhbmRydS4KLQotLSBGaXggRnJhY3Rpb24uX19oYXNoX18gc28gdGhhdCBGcmFjdGlvbi5fX2hhc2hfXygtMSkgaXMgLTIuICAoU2VlIGFsc28gaXNzdWUKLSAgIzEwMzU2LikKLQotLSBJc3N1ZSAjNDQ3MTogQWRkIHRoZSBJTUFQLnN0YXJ0dGxzKCkgbWV0aG9kIHRvIGVuYWJsZSBlbmNyeXB0aW9uIG9uIHN0YW5kYXJkCi0gIElNQVA0IGNvbm5lY3Rpb25zLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTG9yZW56byBNLiBDYXR1Y2NpLgotCi0tIElzc3VlICMxNDY2MDY1OiBBZGQgJ3ZhbGlkYXRlJyBvcHRpb24gdG8gYmFzZTY0LmI2NGRlY29kZSB0byByYWlzZSBhbiBlcnJvciBpZgotICB0aGVyZSBhcmUgbm9uLWJhc2U2NCBhbHBoYWJldCBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dC4KLQotLSBJc3N1ZSAjMTAzODY6IEFkZCBfX2FsbF9fIHRvIHRva2VuIG1vZHVsZTsgdGhpcyBzaW1wbGlmaWVzIGltcG9ydGluZyBpbgotICB0b2tlbml6ZSBtb2R1bGUgYW5kIHByZXZlbnRzIGxlYWtpbmcgb2YgcHJpdmF0ZSBuYW1lcyB0aHJvdWdoIGBgaW1wb3J0ICpgYC4KLQotLSBJc3N1ZSAjNDQ3MTogUHJvcGVybHkgc2h1dGRvd24gc29ja2V0IGluIElNQVAuc2h1dGRvd24oKS4gIFBhdGNoIGJ5IExvcmVuem8KLSAgTS4gQ2F0dWNjaS4KLQotLSBGaXggSU1BUC5sb2dpbigpIHRvIHdvcmsgcHJvcGVybHkuCi0KLS0gSXNzdWUgIzkyNDQ6IG11bHRpcHJvY2Vzc2luZyBwb29sIHdvcmtlciBwcm9jZXNzZXMgY291bGQgdGVybWluYXRlCi0gIHVuZXhwZWN0ZWRseSBpZiB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgdGFzayBjb3VsZCBub3QgYmUgcGlja2xlZC4gIE9ubHkgdGhlCi0gIGBgcmVwcmBgIG9mIHN1Y2ggZXJyb3JzIGFyZSBub3cgc2VudCBiYWNrLCB3cmFwcGVkIGluIGFuCi0gIGBgTWF5YmVFbmNvZGluZ0Vycm9yYGAgZXhjZXB0aW9uLgotCi0tIElzc3VlICM5MjQ0OiBUaGUgYGBhcHBseV9hc3luYygpYGAgYW5kIGBgbWFwX2FzeW5jKClgYCBtZXRob2RzIG9mCi0gIGBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgYCBub3cgYWNjZXB0cyBhIGBgZXJyb3JfY2FsbGJhY2tgYCBhcmd1bWVudC4gIFRoaXMgY2FuCi0gIGJlIGEgY2FsbGJhY2sgd2l0aCB0aGUgc2lnbmF0dXJlIGBgY2FsbGJhY2soZXhjKWBgLCB3aGljaCB3aWxsIGJlIGNhbGxlZCBpZgotICB0aGUgdGFyZ2V0IHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzEwMDIyOiBUaGUgZGljdGlvbmFyeSByZXR1cm5lZCBieSB0aGUgYGBnZXRwZWVyY2VydCgpYGAgbWV0aG9kIG9mIFNTTAotICBzb2NrZXRzIG5vdyBoYXMgYWRkaXRpb25hbCBpdGVtcyBzdWNoIGFzIGBgaXNzdWVyYGAgYW5kIGBgbm90QmVmb3JlYGAuCi0KLS0gYGB1c2VuZXRyY2BgIGlzIG5vdyBmYWxzZSBieSBkZWZhdWx0IGZvciBOTlRQIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE5MjY6IEFkZCBzdXBwb3J0IGZvciBOTlRQIG92ZXIgU1NMIG9uIHBvcnQgNTYzLCBhcyB3ZWxsIGFzIFNUQVJUVExTLgotICBQYXRjaCBieSBBbmRyZXcgVmFudC4KLQotLSBJc3N1ZSAjMTAzMzU6IEFkZCB0b2tlbml6ZS5vcGVuKCksIGRldGVjdCB0aGUgZmlsZSBlbmNvZGluZyB1c2luZwotICB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmcoKSBhbmQgb3BlbiBpdCBpbiByZWFkIG9ubHkgbW9kZS4KLQotLSBJc3N1ZSAjMTAzMjE6IEFkZCBzdXBwb3J0IGZvciBiaW5hcnkgZGF0YSB0byBzbXRwbGliLlNNVFAuc2VuZG1haWwsIGFuZCBhIG5ldwotICBtZXRob2Qgc2VuZF9tZXNzYWdlIHRvIHNlbmQgYW4gZW1haWwubWVzc2FnZS5NZXNzYWdlIG9iamVjdC4KLQotLSBJc3N1ZSAjNjAxMTogc3lzY29uZmlnIGFuZCBkaXN0dXRpbHMuc3lzY29uZmlnIHVzZSB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yCi0gIGhhbmRsZXIgdG8gcGFyc2UgdGhlIE1ha2VmaWxlIGZpbGUuICBBdm9pZCBhIFVuaWNvZGVEZWNvZGVFcnJvciBpZiB0aGUgc291cmNlCi0gIGNvZGUgZGlyZWN0b3J5IG5hbWUgY29udGFpbnMgYSBub24tQVNDSUkgY2hhcmFjdGVyIGFuZCB0aGUgbG9jYWxlIGVuY29kaW5nIGlzCi0gIEFTQ0lJLgotCi0tIElzc3VlICMxMDMyOTogVGhlIHRyYWNlIG1vZHVsZSB3cml0ZXMgcmVwb3J0cyB1c2luZyB0aGUgaW5wdXQgUHl0aG9uIHNjcmlwdAotICBlbmNvZGluZywgaW5zdGVhZCBvZiB0aGUgbG9jYWxlIGVuY29kaW5nLiAgUGF0Y2ggd3JpdHRlbiBieSBBbGV4YW5kZXIKLSAgQmVsb3BvbHNreS4KLQotLSBJc3N1ZSAjMTAxMjY6IEZpeCBkaXN0dXRpbHMnIHRlc3RfYnVpbGQgd2hlbiBQeXRob24gd2FzIGJ1aWx0IHdpdGgKLSAgLS1lbmFibGUtc2hhcmVkLgotCi0tIElzc3VlICM5MjgxOiBQcmV2ZW50IHJhY2UgY29uZGl0aW9uIHdpdGggbWtkaXIgaW4gZGlzdHV0aWxzLiAgUGF0Y2ggYnkKLSAgQXJmcmV2ZXIuCi0KLS0gSXNzdWUgIzEwMjI5OiBGaXggY2FjaGluZyBlcnJvciBpbiBnZXR0ZXh0LgotCi0tIElzc3VlICMxMDI1MjogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiBkaXN0dXRpbHMgY29kZSBhbmQKLSAgdGVzdHMuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwsIGNvbXBsZXRlZCBieSDDiXJpYyBBcmF1am8uCi0KLS0gSXNzdWUgIzEwMTgwOiBQaWNrbGluZyBmaWxlIG9iamVjdHMgaXMgbm93IGV4cGxpY2l0bHkgZm9yYmlkZGVuLCBzaW5jZQotICB1bnBpY2tsaW5nIHRoZW0gcHJvZHVjZWQgbm9uc2Vuc2ljYWwgcmVzdWx0cy4KLQotLSBJc3N1ZSAjMTAzMTE6IFRoZSBzaWduYWwgbW9kdWxlIG5vdyByZXN0b3JlcyBlcnJubyBiZWZvcmUgcmV0dXJuaW5nIGZyb20gaXRzCi0gIGxvdy1sZXZlbCBzaWduYWwgaGFuZGxlci4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCi0KLS0gSXNzdWUgIzEwMjgyOiBBZGQgYSBgYG5udHBfaW1wbGVtZW50YXRpb25gYCBhdHRyaWJ1dGUgdG8gTk5UUCBvYmplY3RzLgotCi0tIElzc3VlICMxMDI4MzogQWRkIGEgYGBncm91cF9wYXR0ZXJuYGAgYXJndW1lbnQgdG8gTk5UUC5saXN0KCkuCi0KLS0gSXNzdWUgIzEwMTU1OiBBZGQgSUlTQ0dJSGFuZGxlciB0byB3c2dpcmVmLmhhbmRsZXJzIHRvIHN1cHBvcnQgSUlTIENHSQotICBlbnZpcm9ubWVudCBiZXR0ZXIsIGFuZCB0byBjb3JyZWN0IHVuaWNvZGUgZW52aXJvbm1lbnQgdmFsdWVzIGZvciBXU0dJIDEuMC4xLgotCi0tIElzc3VlICMxMDI4MTogbm50cGxpYiBub3cgcmV0dXJucyBOb25lIGZvciBhYnNlbnQgZmllbGRzIGluIHRoZSBPVkVSL1hPVkVSCi0gIHJlc3BvbnNlLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uLgotCi0tIHdzZ2lyZWYgbm93IGltcGxlbWVudHMgYW5kIHZhbGlkYXRlcyBQRVAgMzMzMywgcmF0aGVyIHRoYW4gYW4gZXhwZXJpbWVudGFsCi0gIGV4dGVuc2lvbiBvZiBQRVAgMzMzLiAgKE5vdGU6IGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uIDMueCBtYXkgaGF2ZQotICBpbmNvcnJlY3RseSB2YWxpZGF0ZWQgc29tZSBub24tY29tcGxpYW50IGFwcGxpY2F0aW9ucyBhcyBXU0dJIGNvbXBsaWFudDsgaWYKLSAgeW91ciBhcHAgdmFsaWRhdGVzIHdpdGggUHl0aG9uIDwzLjJiMSssIGJ1dCBub3Qgb24gdGhpcyB2ZXJzaW9uLCBpdCBpcyBsaWtlbHkKLSAgdGhlIGNhc2UgdGhhdCB5b3VyIGFwcCB3YXMgbm90IGNvbXBsaWFudC4pCi0KLS0gSXNzdWUgIzEwMjgwOiBOTlRQLm5udHBfdmVyc2lvbiBzaG91bGQgcmVmbGVjdCB0aGUgaGlnaGVzdCB2ZXJzaW9uIGFkdmVydGlzZWQKLSAgYnkgdGhlIHNlcnZlci4KLQotLSBJc3N1ZSAjMTAxODQ6IFRvdWNoIGRpcmVjdG9yaWVzIG9ubHkgb25jZSB3aGVuIGV4dHJhY3RpbmcgYSB0YXJmaWxlLgotCi0tIElzc3VlICMxMDE5OTogTmV3IHBhY2thZ2UsIGBgdHVydGxlZGVtb2BgIG5vdyBjb250YWlucyBzZWxlY3RlZCBkZW1vIHNjcmlwdHMKLSAgdGhhdCB3ZXJlIGZvcm1lcmx5IGZvdW5kIHVuZGVyIERlbW8vdHVydGxlLgotCi0tIElzc3VlICMxMDI2NTogQ2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgaW4gc3VuYXUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzEwMjY2OiB1dS5kZWNvZGUgZGlkbid0IGNsb3NlIGluX2ZpbGUgZXhwbGljaXRseSB3aGVuIGl0IHdhcyBnaXZlbiBhcyBhCi0gIGZpbGVuYW1lLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICMxMDExMDogUXVldWUgb2JqZWN0cyBkaWRuJ3QgcmVjb2duaXplIGZ1bGwgcXVldWVzIHdoZW4gdGhlIG1heHNpemUKLSAgcGFyYW1ldGVyIGhhZCBiZWVuIHJlZHVjZWQuCi0KLS0gSXNzdWUgIzEwMTYwOiBTcGVlZCB1cCBvcGVyYXRvci5hdHRyZ2V0dGVyLiAgUGF0Y2ggYnkgQ2hyaXN0b3MgR2Vvcmdpb3UuCi0KLS0gbG9nZ2luZzogQWRkZWQgc3R5bGUgb3B0aW9uIHRvIGJhc2ljQ29uZmlnKCkgdG8gYWxsb3cgJSwge30gb3IgJC1mb3JtYXR0aW5nLgotCi0tIElzc3VlICM1NzI5OiBqc29uLmR1bXBzKCkgbm93IHN1cHBvcnRzIHVzaW5nIGEgc3RyaW5nIHN1Y2ggYXMgJ1x0JyBmb3IKLSAgcHJldHR5LXByaW50aW5nIG11bHRpbGV2ZWwgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTAyNTM6IEZpbGVJTyBsZWFrcyBhIGZpbGUgZGVzY3JpcHRvciB3aGVuIHRyeWluZyB0byBvcGVuIGEgZmlsZSBmb3IKLSAgYXBwZW5kIHRoYXQgaXNuJ3Qgc2Vla2FibGUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gU3VwcG9ydCBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgZm9yIGZpbGUtbGlrZSBvYmplY3RzIHJldHVybmVkIGJ5IG1haWxib3gKLSAgYGBnZXRfZmlsZSgpYGAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTAyNDY6IHV1LmVuY29kZSBkaWRuJ3QgY2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgd2hlbiBmaWxlbmFtZXMKLSAgd2VyZSBnaXZlbiB0byBpdC4gIFBhdGNoIGJ5IEJyaWFuIEJyYXppbC4KLQotLSBJc3N1ZSAjMTAxOTg6IGZpeCBkdXBsaWNhdGUgaGVhZGVyIHdyaXR0ZW4gdG8gd2F2ZSBmaWxlcyB3aGVuIHdyaXRlZnJhbWVzKCkgaXMKLSAgY2FsbGVkIHdpdGhvdXQgZGF0YS4KLQotLSBDbG9zZSBmaWxlIG9iamVjdHMgaW4gbW9kdWxlZmluZGVyIGluIGEgdGltZWx5IG1hbm5lci4KLQotLSBDbG9zZSBhIGlvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGluIGVtYWlsLnBhcnNlciBpbiBhIHRpbWVseSBtYW5uZXIuCi0KLS0gQ2xvc2UgYSBmaWxlIG9iamVjdCBpbiBkaXN0dXRpbHMuc3lzY29uZmlnIGluIGEgdGltZWx5IG1hbm5lci4KLQotLSBDbG9zZSBhIGZpbGUgb2JqZWN0IGluIHBrZ3V0aWwgaW4gYSB0aW1lbHkgbWFubmVyLgotCi0tIElzc3VlICMxMDIzMzogQ2xvc2UgZmlsZSBvYmplY3RzIGluIGEgdGltZWx5IG1hbm5lciBpbiB0aGUgdGFyZmlsZSBtb2R1bGUgYW5kCi0gIGl0cyB0ZXN0IHN1aXRlLgotCi0tIElzc3VlICMxMDA5MzogUmVzb3VyY2VXYXJuaW5ncyBhcmUgbm93IGlzc3VlZCB3aGVuIGZpbGVzIGFuZCBzb2NrZXRzIGFyZQotICBkZWFsbG9jYXRlZCB3aXRob3V0IGV4cGxpY2l0IGNsb3NpbmcuICBUaGVzZSB3YXJuaW5ncyBhcmUgc2lsZW5jZWQgYnkgZGVmYXVsdCwKLSAgZXhjZXB0IGluIHB5ZGVidWcgbW9kZS4KLQotLSB0YXJmaWxlLnB5OiBBZGQgc3VwcG9ydCBmb3IgYWxsIG1pc3NpbmcgdmFyaWFudHMgb2YgdGhlIEdOVSBzcGFyc2UgZXh0ZW5zaW9ucwotICBhbmQgY3JlYXRlIGZpbGVzIHdpdGggaG9sZXMgd2hlbiBleHRyYWN0aW5nIHNwYXJzZSBtZW1iZXJzLgotCi0tIElzc3VlICMxMDIxODogUmV0dXJuIHRpbWVvdXQgc3RhdHVzIGZyb20gYGBDb25kaXRpb24ud2FpdGBgIGluIHRocmVhZGluZy4KLQotLSBJc3N1ZSAjNzM1MTogQWRkIGBgemlwZmlsZS5CYWRaaXBGaWxlYGAgc3BlbGxpbmcgb2YgdGhlIGV4Y2VwdGlvbiBuYW1lIGFuZAotICBkZXByZWNhdGUgdGhlIG9sZCBuYW1lIGBgemlwZmlsZS5CYWRaaXBmaWxlYGAuCi0KLS0gSXNzdWUgIzUwMjc6IFRoZSBzdGFuZGFyZCBgYHhtbGBgIG5hbWVzcGFjZSBpcyBub3cgdW5kZXJzdG9vZCBieQotICB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBhcyBiZWluZyBib3VuZCB0bwotICBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuICBQYXRjaCBieSBUcm95IEouIEZhcnJlbGwuCi0KLS0gSXNzdWUgIzU5NzU6IEFkZCBjc3YudW5peF9kaWFsZWN0IGNsYXNzLgotCi0tIElzc3VlICM3NzYxOiB0ZWxuZXRsaWIuaW50ZXJhY3QgZmFpbHVyZXMgb24gV2luZG93cyBmaXhlZC4KLQotLSBsb2dnaW5nOiBBZGRlZCBzdHlsZSBvcHRpb24gdG8gRm9ybWF0dGVyIHRvIGFsbG93ICUsIHt9IG9yICQtZm9ybWF0dGluZy4KLQotLSBJc3N1ZSAjNTE3ODogQWRkZWQgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGNsYXNzIHRoYXQgY2FuIGJlIHVzZWQgYXMgYQotICBjb250ZXh0IG1hbmFnZXIuCi0KLS0gSXNzdWUgIzEzNDkxMDY6IEdlbmVyYXRvciAoYW5kIEJ5dGVzR2VuZXJhdG9yKSBmbGF0dGVuIG1ldGhvZCBhbmQgSGVhZGVyCi0gIGVuY29kZSBtZXRob2Qgbm93IHN1cHBvcnQgYSAnbGluZXNlcCcgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzU2Mzk6IEFkZCBhICpzZXJ2ZXJfaG9zdG5hbWUqIGFyZ3VtZW50IHRvIGBgU1NMQ29udGV4dC53cmFwX3NvY2tldGBgIGluCi0gIG9yZGVyIHRvIHN1cHBvcnQgdGhlIFRMUyBTTkkgZXh0ZW5zaW9uLiAgYGBIVFRQU0Nvbm5lY3Rpb25gYCBhbmQgYGB1cmxvcGVuKClgYAotICBhbHNvIHVzZSB0aGlzIGFyZ3VtZW50LCBzbyB0aGF0IEhUVFBTIHZpcnR1YWwgaG9zdHMgYXJlIG5vdyBzdXBwb3J0ZWQuCi0KLS0gSXNzdWUgIzEwMTY2OiBBdm9pZCByZWN1cnNpb24gaW4gcHN0YXRzIFN0YXRzLmFkZCgpIGZvciBtYW55IHN0YXRzIGl0ZW1zLgotCi0tIElzc3VlICMxMDE2MzogU2tpcCB1bnJlYWRhYmxlIHJlZ2lzdHJ5IGtleXMgZHVyaW5nIG1pbWV0eXBlcyBpbml0aWFsaXphdGlvbi4KLQotLSBsb2dnaW5nOiBNYWRlIFN0cmVhbUhhbmRsZXIgdGVybWluYXRvciBjb25maWd1cmFibGUuCi0KLS0gbG9nZ2luZzogQWxsb3dlZCBmaWx0ZXJzIHRvIGJlIGp1c3QgY2FsbGFibGVzLgotCi0tIGxvZ2dpbmc6IEFkZGVkIHRlc3RzIGZvciBfbG9nUmVjb3JkQ2xhc3MgY2hhbmdlcy4KLQotLSBJc3N1ZSAjMTAwOTI6IFByb3Blcmx5IHJlc2V0IGxvY2FsZSBpbiBjYWxlbmRhci5Mb2NhbGUqQ2FsZW5kYXIgY2xhc3Nlcy4KLQotLSBsb2dnaW5nOiBBZGRlZCBfbG9nUmVjb3JkQ2xhc3MsIGdldExvZ1JlY29yZENsYXNzLCBzZXRMb2dSZWNvcmRDbGFzcyB0bwotICBpbmNyZWFzZSBmbGV4aWJpbGl0eSBvZiBMb2dSZWNvcmQgY3JlYXRpb24uCi0KLS0gSXNzdWUgIzUxMTc6IENhc2Ugbm9ybWFsaXphdGlvbiB3YXMgbmVlZGVkIG9uIG50cGF0aC5yZWxwYXRoKCkuICBBbHNvIGZpeGVkCi0gIHJvb3QgZGlyZWN0b3J5IGlzc3VlIG9uIHBvc2l4cGF0aC5yZWxwYXRoKCkuICAoUG9ydGVkIHdvcmtpbmcgZml4ZXMgZnJvbQotICBudHBhdGguKQotCi0tIElzc3VlICMxMzQzOiB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBub3cgaGFzIGFuIG9wdGlvbgotICBzaG9ydF9lbXB0eV9lbGVtZW50cyB0byBkaXJlY3QgaXQgdG8gdXNlIHNlbGYtY2xvc2luZyB0YWdzIHdoZW4gYXBwcm9wcmlhdGUuCi0KLS0gSXNzdWUgIzk4MDcgKHBhcnQgMSk6IEV4cG9zZSB0aGUgQUJJIGZsYWdzIGluIHN5cy5hYmlmbGFncy4gIEFkZCAtLWFiaWZsYWdzCi0gIHN3aXRjaCB0byBweXRob24tY29uZmlnIGZvciBjb21tYW5kIGxpbmUgYWNjZXNzLgotCi0tIElzc3VlICM2MDk4OiBEb24ndCBjbGFpbSBET00gbGV2ZWwgMyBjb25mb3JtYW5jZSBpbiBtaW5pZG9tLgotCi0tIElzc3VlICM1NzYyOiBGaXggQXR0cmlidXRlRXJyb3IgcmFpc2VkIGJ5IGBgeG1sLmRvbS5taW5pZG9tYGAgd2hlbiBhbiBlbXB0eQotICBYTUwgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyBlbmNvdW50ZXJlZC4KLQotLSBJc3N1ZSAjMjgzMDogQWRkIHRoZSBgYGh0bWwuZXNjYXBlKClgYCBmdW5jdGlvbiwgd2hpY2ggcXVvdGVzIGFsbCBwcm9ibGVtYXRpYwotICBjaGFyYWN0ZXJzIGJ5IGRlZmF1bHQuICBEZXByZWNhdGUgYGBjZ2kuZXNjYXBlKClgYC4KLQotLSBJc3N1ZSAjOTQwOTogRml4IHRoZSByZWdleCB0byBtYXRjaCBhbGwga2luZCBvZiBmaWxlbmFtZXMsIGZvciBpbnRlcmFjdGl2ZQotICBkZWJ1Z2dpbmcgaW4gZG9jdGVzdHMuCi0KLS0gSXNzdWUgIzkxODM6IGBgZGF0ZXRpbWUudGltZXpvbmUoZGF0ZXRpbWUudGltZWRlbHRhKDApKWBgIHdpbGwgbm93IHJldHVybiB0aGUKLSAgc2FtZSBpbnN0YW5jZSBhcyBgYGRhdGV0aW1lLnRpbWV6b25lLnV0Y2BgLgotCi0tIElzc3VlICM3NTIzOiBBZGQgU09DS19DTE9FWEVDIGFuZCBTT0NLX05PTkJMT0NLIHRvIHRoZSBzb2NrZXQgbW9kdWxlLCB3aGVyZQotICBzdXBwb3J0ZWQgYnkgdGhlIHN5c3RlbS4gIFBhdGNoIGJ5IE5pa2l0YSBWZXRvc2hraW4uCi0KLS0gSXNzdWUgIzEwMDYzOiBmaWxlOi8vIHNjaGVtZSB3aWxsIHN0b3AgYWNjZXNzaW5nIHJlbW90ZSBob3N0cyB2aWEgZnRwCi0gIHByb3RvY29sLiBmaWxlOi8vIHVybHMgaGFkIGZhbGxiYWNrIHRvIGFjY2VzcyByZW1vdGUgaG9zdHMgdmlhIGZ0cC4gVGhpcyB3YXMKLSAgbm90IGNvcnJlY3QsIGNoYW5nZSBpcyBtYWRlIHRvIHJhaXNlIGEgVVJMRXJyb3Igd2hlbiBhIHJlbW90ZSBob3N0IGlzIHRyaWVkIHRvCi0gIGFjY2VzcyB2aWEgZmlsZTovLyBzY2hlbWUuCi0KLS0gSXNzdWUgIzE3MTA3MDM6IFdyaXRlIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IFpJUCBhcmNoaXZlIHdoZW4gYSBaaXBGaWxlIGlzCi0gIGNyZWF0ZWQgaW4gbW9kZXMgJ2EnIG9yICd3JyBhbmQgdGhlbiBjbG9zZWQgd2l0aG91dCBhZGRpbmcgYW55IGZpbGVzLiBSYWlzZQotICBCYWRaaXBmaWxlIChyYXRoZXIgdGhhbiBJT0Vycm9yKSB3aGVuIG9wZW5pbmcgc21hbGwgbm9uLVpJUCBmaWxlcy4KLQotLSBJc3N1ZSAjMTAwNDE6IFRoZSBzaWduYXR1cmUgb2Ygb3B0aW9uYWwgYXJndW1lbnRzIGluIHNvY2tldC5tYWtlZmlsZSgpIGRpZG4ndAotICBtYXRjaCB0aGF0IG9mIGlvLm9wZW4oKSwgYW5kIHRoZXkgYWxzbyBkaWRuJ3QgZ2V0IGZvcndhcmRlZCBwcm9wZXJseSB0bwotICBUZXh0SU9XcmFwcGVyIGluIHRleHQgbW9kZS4gIFBhdGNoIGJ5IEthaSBaaHUuCi0KLS0gSXNzdWUgIzkwMDM6IGh0dHAuY2xpZW50LkhUVFBTQ29ubmVjdGlvbiwgdXJsbGliLnJlcXVlc3QuSFRUUFNIYW5kbGVyIGFuZAotICB1cmxsaWIucmVxdWVzdC51cmxvcGVuIG5vdyB0YWtlIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBhbGxvdyBmb3Igc2VydmVyCi0gIGNlcnRpZmljYXRlIGNoZWNraW5nLCBhcyByZWNvbW1lbmRlZCBpbiBwdWJsaWMgdXNlcyBvZiBIVFRQUy4KLQotLSBJc3N1ZSAjNjYxMjogRml4IHNpdGUgYW5kIHN5c2NvbmZpZyB0byBjYXRjaCBvcy5nZXRjd2QoKSBlcnJvciwgZWcuIGlmIHRoZQotICBjdXJyZW50IGRpcmVjdG9yeSB3YXMgZGVsZXRlZC4gUGF0Y2ggd3JpdHRlbiBieSBXLiBUcmV2b3IgS2luZy4KLQotLSBJc3N1ZSAjMzg3MzogU3BlZWQgdXAgdW5waWNrbGluZyBmcm9tIGZpbGUgb2JqZWN0cyB0aGF0IGhhdmUgYSBwZWVrKCkgbWV0aG9kLgotCi0tIElzc3VlICMxMDA3NTogQWRkIGEgc2Vzc2lvbl9zdGF0cygpIG1ldGhvZCB0byBTU0xDb250ZXh0IG9iamVjdHMuCi0KLS0gSXNzdWUgIzk5NDg6IEZpeGVkIHByb2JsZW0gb2YgbG9zaW5nIGZpbGVuYW1lIGNhc2UgaW5mb3JtYXRpb24uCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1MTA5OiBhcnJheS5hcnJheSBjb25zdHJ1Y3RvciB3aWxsIG5vdyB1c2UgZmFzdCBjb2RlIHdoZW4KLSAgaW5pdGlhbCBkYXRhIGlzIHByb3ZpZGVkIGluIGFuIGFycmF5IG9iamVjdCB3aXRoIGNvcnJlY3QgdHlwZS4KLQotLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBvbmx5IGFjY2VwdHMgdW5pY29kZS4KLQotLSBJc3N1ZSAjNjMxNzogTm93IHdpbnNvdW5kLlBsYXlTb3VuZCBjYW4gYWNjZXB0IG5vbiBhc2NpaSBmaWxlbmFtZS4KLQotLSBJc3N1ZSAjOTM3NzogVXNlIFVuaWNvZGUgQVBJIGZvciBnZXRob3N0bmFtZSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxMDE0MzogVXBkYXRlICJvcy5wYXRoY29uZiIgdmFsdWVzLgotCi0tIElzc3VlICM2NTE4OiBTdXBwb3J0IGNvbnRleHQgbWFuYWdlciBwcm90Y29sIGZvciBvc3NhdWRpb2RldiB0eXBlcy4KLQotLSBJc3N1ZSAjNjc4MjUwOiBNYWtlIG1tYXAgZmx1c2ggYSBub29wIG9uIEFDQ0VTU19SRUFEIGFuZCBBQ0NFU1NfQ09QWS4KLQotLSBJc3N1ZSAjOTA1NDogRml4IGEgY3Jhc2ggb2NjdXJyaW5nIHdoZW4gdXNpbmcgdGhlIHB5ZXhwYXQgbW9kdWxlIHdpdGggZXhwYXQKLSAgdmVyc2lvbiAyLjAuMS4KLQotLSBJc3N1ZSAjNTM1NTogUHJvdmlkZSBtYXBwaW5ncyBmcm9tIEV4cGF0IGVycm9yIG51bWJlcnMgdG8gc3RyaW5nIGRlc2NyaXB0aW9ucwotICBhbmQgYmFja3dhcmRzLCBpbiBvcmRlciB0byBhY3R1YWxseSBtYWtlIGl0IHBvc3NpYmxlIHRvIGFuYWx5emUgZXJyb3IgY29kZXMKLSAgcHJvdmlkZWQgYnkgRXhwYXRFcnJvci4KLQotLSBUaGUgVW5pY29kZSBkYXRhYmFzZSB3YXMgdXBkYXRlZCB0byA2LjAuMC4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzEwMjg4OiBUaGUgZGVwcmVjYXRlZCBmYW1pbHkgb2YgImNoYXIiLWhhbmRsaW5nIG1hY3JvcwotICAoSVNMT1dFUigpL0lTVVBQRVIoKS9ldGMpIGhhdmUgbm93IGJlZW4gcmVtb3ZlZDogdXNlIFB5X0lTTE9XRVIoKSBldGMgaW5zdGVhZC4KLQotLSBJc3N1ZSAjOTc3ODogSGFzaCB2YWx1ZXMgYXJlIG5vdyBhbHdheXMgdGhlIHNpemUgb2YgcG9pbnRlcnMuIEEgbmV3IFB5X2hhc2hfdAotICB0eXBlIGhhcyBiZWVuIGludHJvZHVjZWQuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDExNzogVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBub3cgYWNjZXB0cyBzb3VyY2UgZmlsZXMgdGhhdCB1c2UKLSAgZW5jb2Rpbmcgb3RoZXIgdGhhbiBBU0NJSSBvciBVVEYtOC4gIFNvdXJjZSBlbmNvZGluZyBpcyBwcmVzZXJ2ZWQgd2hlbgotICByZWluZGVudGVkIGNvZGUgaXMgd3JpdHRlbiB0byBhIGZpbGUuCi0KLS0gSXNzdWUgIzcyODc6IERlbW8vaW1wdXRpbC9rbmVlLnB5IHdhcyByZW1vdmVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMzY5OTogRml4IHRlc3RfYmlnYWRkcnNwYWNlIGFuZCBleHRlbmQgaXQgdG8gdGVzdCBieXRlc3RyaW5ncyBhcyB3ZWxsCi0gIGFzIHVuaWNvZGUgc3RyaW5ncy4gIEluaXRpYWwgcGF0Y2ggYnkgU2FuZHJvIFRvc2kuCi0KLS0gSXNzdWUgIzEwMjk0OiBSZW1vdmUgZGVhZCBjb2RlIGZvcm0gdGVzdF91bmljb2RlX2ZpbGUuCi0KLS0gSXNzdWUgIzEwMTIzOiBEb24ndCB1c2Ugbm9uLWFzY2lpIGZpbGVuYW1lcyBpbiB0ZXN0X2RvY3Rlc3QgdGVzdHMuIEFkZCBhIG5ldwotICB0ZXN0IHNwZWNpZmljIHRvIHVuaWNvZGUgKG5vbi1hc2NpaSBuYW1lIGFuZCBmaWxlbmFtZSkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMDI2ODogQWRkIGEgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMgb3B0aW9uIHRvIGNvbmZpZ3VyZS4KLQotLSBJc3N1ZSAjODg1MjogQWxsb3cgdGhlIHNvY2tldCBtb2R1bGUgdG8gYnVpbGQgb24gT3BlblNvbGFyaXMuCi0KLS0gRHJvcCAtT1BUOk9saW1pdCBjb21waWxlciBvcHRpb24uCi0KLS0gSXNzdWUgIzEwMDk0OiBVc2UgdmVyc2lvbmVkIC5zbyBmaWxlcyBvbiBHTlUva2ZyZWVCU0QgYW5kIHRoZSBHTlUgSHVyZC4KLQotLSBBY2NlcHQgT3JhY2xlIEJlcmtlbGV5IERCIDUuMCBhbmQgNS4xIGFzIGJhY2tlbmQgZm9yIHRoZSBkYm0gZXh0ZW5zaW9uLgotCi0tIElzc3VlICM3NDczOiBhdm9pZCBsaW5rIGVycm9ycyB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggYSBkaWZmZXJlbnQgc2V0Ci0gIG9mIGFyY2hpdGVjdHVyZXMgdGhhbiB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjIgQWxwaGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwOS1PY3QtMjAxMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMDY4OiBHbG9iYWwgb2JqZWN0cyB3aGljaCBoYXZlIHJlZmVyZW5jZSBjeWNsZXMgd2l0aCB0aGVpciBtb2R1bGUncwotICBkaWN0IGFyZSBub3cgY2xlYXJlZCBhZ2Fpbi4gVGhpcyBjYXVzZXMgaXNzdWUgIzcxNDAgdG8gYXBwZWFyIGFnYWluLgotCi0tIElzc3VlICM5NzM4OiBEb2N1bWVudCBQeUVycl9TZXRTdHJpbmcoKSBhbmQgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKCkKLSAgZW5jb2RpbmdzLgotCi0tIGFzdC5saXRlcmFsX2V2YWwoKSBjYW4gbm93IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzLiAgSXQgaXMgYWxzbyBhIGxpdHRsZSBtb3JlCi0gIGxpYmVyYWwgaW4gd2hhdCBpdCBhY2NlcHRzIHdpdGhvdXQgY29tcHJvbWlzaW5nIHRoZSBzYWZldHkgb2YgdGhlIGV2YWx1YXRpb24uCi0gIEZvciBleGFtcGxlLCAzais0IGFuZCAzKzQrNSBhcmUgYm90aCBhY2NlcHRlZC4KLQotLSBJc3N1ZSAjMTAwMDY6IHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXyBub3cgcmFpc2VzIGFuIEF0dHJpYnV0ZUVycm9yLiAgQXMgYQotICByZXN1bHQgbWV0YWNsYXNzZXMgY2FuIG5vdyBiZSBBQkNzIChzZWUgIzk1MzMpLgotCi0tIElzc3VlICM4NjcwOiBjdHlwZXMuY193Y2hhciBzdXBwb3J0cyBub24tQk1QIGNoYXJhY3RlcnMgd2l0aCAzMiBiaXRzIHdjaGFyX3QuCi0KLS0gSXNzdWUgIzg2NzA6IFB5VW5pY29kZV9Bc1dpZGVDaGFyKCkgYW5kIFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKCkgcmVwbGFjZQotICBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzIGJ5IHNpbmdsZSBub24tQk1QIGNoYXJhY3RlcnMgZm9yIDE2IGJpdHMgUHlfVU5JQ09ERSBhbmQKLSAgMzIgYml0cyB3Y2hhcl90IChlZy4gTGludXggaW4gbmFycm93IGJ1aWxkKS4KLQotLSBJc3N1ZSAjMTAwMDM6IEFsbG93IGhhbmRsaW5nIG9mIFNJR0JSRUFLIG9uIFdpbmRvd3MuIEZpeGVzIGEgcmVncmVzc2lvbgotICBpbnRyb2R1Y2VkIGJ5IGlzc3VlICM5MzI0LgotCi0tIElzc3VlICM5OTc5OiBDcmVhdGUgZnVuY3Rpb24gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKS4KLQotLSBJc3N1ZSAjNzM5NzogTWVudGlvbiB0aGF0IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkgaXMgcHJvYmFibHkgd2hhdCBzb21lb25lCi0gIHJlYWxseSB3YW50cyB0byBiZSB1c2luZyBpbiBfX2ltcG9ydF9fJ3MgZG9jc3RyaW5nLgotCi0tIElzc3VlICM4NTIxOiBBbGxvdyBDcmVhdGVLZXlFeCwgT3BlbktleUV4LCBhbmQgRGVsZXRlS2V5RXggZnVuY3Rpb25zIG9mIHdpbnJlZwotICB0byB1c2UgbmFtZWQgYXJndW1lbnRzLgotCi0tIElzc3VlICM5OTMwOiBSZW1vdmUgYm9ndXMgc3VidHlwZSBjaGVjayB0aGF0IHdhcyBjYXVzaW5nIChlLmcuKQotICBmbG9hdC5fX3JkaXZfXygyLjAsIDMpIHRvIHJldHVybiBOb3RJbXBsZW1lbnRlZCBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCAxLjUuCi0KLS0gSXNzdWUgIzk4MDg6IEltcGxlbWVudCBvcy5nZXRsb2dpbiBmb3IgV2luZG93cy4gUGF0Y2ggYnkgSm9uIEFuZ2xpbi4KLQotLSBJc3N1ZSAjOTkwMTogRGVzdHJveWluZyB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCkgY2FuIGZhaWwgaWYgc29tZSBvdGhlcgotICB0aHJlYWRzIGFyZSBzdGlsbCBydW5uaW5nLiAgSW5zdGVhZCwgcmVpbml0aWFsaXplIHRoZSBHSUwgb24gYSBzZWNvbmQgY2FsbCB0bwotICBQeV9Jbml0aWFsaXplKCkuCi0KLS0gQWxsIFN5bnRheEVycm9ycyBub3cgaGF2ZSBhIGNvbHVtbiBvZmZzZXQgYW5kIHRoZXJlZm9yZSBhIGNhcmV0IHdoZW4gdGhlIGVycm9yCi0gIGlzIHByaW50ZWQuCi0KLS0gSXNzdWUgIzkyNTI6IFB5SW1wb3J0X0ltcG9ydCBubyBsb25nZXIgdXNlcyBhIGZyb21saXN0IGhhY2sgdG8gcmV0dXJuIHRoZQotICBtb2R1bGUgdGhhdCB3YXMgaW1wb3J0ZWQsIGJ1dCBpbnN0ZWFkIGdldHMgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzLgotCi0tIElzc3VlICM5MjEzOiBUaGUgcmFuZ2UgdHlwZV9pdGVtcyBub3cgcHJvdmlkZXMgaW5kZXgoKSBhbmQgY291bnQoKSBtZXRob2RzLCB0bwotICBjb25mb3JtIHRvIHRoZSBTZXF1ZW5jZSBBQkMuICBQYXRjaCBieSBEYW5pZWwgVXJiYW4gYW5kIERhbmllbCBTdHV0emJhY2guCi0KLS0gSXNzdWUgIzc5OTQ6IElzc3VlIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpZiBvYmplY3QuX19mb3JtYXRfXyBpcyBjYWxsZWQKLSAgd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgc3RyaW5nLiAgVGhpcyBpcyBhbiBlZmZvcnQgdG8gZnV0dXJlLXByb29mIHVzZXIKLSAgY29kZS4gSWYgYSBkZXJpdmVkIGNsYXNzIGRvZXMgbm90IGN1cnJlbnRseSBpbXBsZW1lbnQgX19mb3JtYXRfXyBidXQgbGF0ZXIKLSAgYWRkcyBpdHMgb3duIF9fZm9ybWF0X18sIGl0IHdvdWxkIG1vc3QgbGlrZWx5IGJyZWFrIHVzZXIgY29kZSB0aGF0IGhhZAotICBzdXBwbGllZCBhIGZvcm1hdCBzdHJpbmcuICBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byBhIERlcHJlY2F0aW9uV2FyaW5nIGluCi0gIFB5dGhvbiAzLjMgYW5kIGl0IHdpbGwgYmUgYW4gZXJyb3IgaW4gUHl0aG9uIDMuNC4KLQotLSBJc3N1ZSAjOTgyODogRGVzdHJveSB0aGUgR0lMIGluIFB5X0ZpbmFsaXplKCksIHNvIHRoYXQgaXQgZ2V0cyBwcm9wZXJseQotICByZS1jcmVhdGVkIG9uIGEgc3Vic2VxdWVudCBjYWxsIHRvIFB5X0luaXRpYWxpemUoKS4gIFRoZSBwcm9ibGVtIChhIGNyYXNoKQotICB3b3VsZG4ndCBhcHBlYXIgaW4gMy4xIG9yIDIuNyB3aGVyZSB0aGUgR0lMJ3Mgc3RydWN0dXJlIGlzIG1vcmUgdHJpdmlhbC4KLQotLSBJc3N1ZSAjOTIxMDogQ29uZmlndXJlIG9wdGlvbiAtLXdpdGgtd2N0eXBlLWZ1bmN0aW9ucyB3YXMgcmVtb3ZlZC4gIFVzaW5nIHRoZQotICBmdW5jdGlvbnMgZnJvbSB0aGUgbGliYyBjYXVzZWQgdGhlIG1ldGhvZHMgLnVwcGVyKCkgYW5kIGxvd2VyKCkgdG8gYmVjb21lCi0gIGxvY2FsZSBhd2FyZSBhbmQgY3JlYXRlZCBzdWJ0bHkgd3JvbmcgcmVzdWx0cy4KLQotLSBJc3N1ZSAjOTczODogUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBhbmQgUHlFcnJfRm9ybWF0KCkgcmFpc2UgYW4gZXJyb3Igb24gYQotICBub24tQVNDSUkgYnl0ZSBpbiB0aGUgZm9ybWF0IHN0cmluZy4KLQotLSBJc3N1ZSAjNDYxNzogUHJldmlvdXNseSBpdCB3YXMgaWxsZWdhbCB0byBkZWxldGUgYSBuYW1lIGZyb20gdGhlIGxvY2FsCi0gIG5hbWVzcGFjZSBpZiBpdCBvY2N1cnMgYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkIGJsb2NrLiAgVGhpcyBsaW1pdGF0aW9uCi0gIG9mIHRoZSBjb21waWxlciBoYXMgYmVlbiBsaWZ0ZWQsIGFuZCBhIG5ldyBvcGNvZGUgaW50cm9kdWNlZCAoREVMRVRFX0RFUkVGKS4KLQotLSBJc3N1ZSAjOTgwNDogYXNjaWkoKSBub3cgYWx3YXlzIHJlcHJlc2VudHMgdW5pY29kZSBzdXJyb2dhdGUgcGFpcnMgYXMgYSBzaW5nbGUKLSAgYGBcVVhYWFhYWFhYYGAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIHByaW50YWJsZSBvciBub3QuCi0gIEFsc28sIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IgaGFuZGxlciBub3cgam9pbnMgc3Vycm9nYXRlIHBhaXJzIGludG8gYQotICBzaW5nbGUgY2hhcmFjdGVyIG9uIFVDUy0yIGJ1aWxkcy4KLQotLSBJc3N1ZSAjOTc1NzogbWVtb3J5dmlldyBvYmplY3RzIGdldCBhIHJlbGVhc2UoKSBtZXRob2QgdG8gcmVsZWFzZSB0aGUKLSAgdW5kZXJseWluZyBidWZmZXIgKHByZXZpb3VzbHkgdGhpcyB3YXMgb25seSBkb25lIHdoZW4gZGVhbGxvY2F0aW5nIHRoZQotICBtZW1vcnl2aWV3KSwgYW5kIGdhaW4gc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KLQotLSBJc3N1ZSAjOTc5NzogcHlzdGF0ZS5jIHdyb25nbHkgYXNzdW1lZCB0aGF0IHplcm8gY291bGRuJ3QgYmUgYSB2YWxpZAotICB0aHJlYWQtbG9jYWwgc3RvcmFnZSBrZXkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIzNjogZGlzdHV0aWxzJyBta3BhdGggaWdub3JlZCB0aGUgbW9kZSBwYXJhbWV0ZXIuCi0KLS0gRml4IHR5cG8gaW4gb25lIHNkaXN0IG9wdGlvbiAobWVkYXRhLWNoZWNrKS4KLQotLSBJc3N1ZSAjOTE5OTogRml4IGluY29ycmVjdCB1c2Ugb2YgZGlzdHV0aWxzLmNtZC5Db21tYW5kLmFubm91bmNlLgotCi0tIElzc3VlICMxNzE4NTc0OiBGaXggb3B0aW9ucyB0aGF0IHdlcmUgc3VwcG9zZWQgdG8gYWNjZXB0IGFyZ3VtZW50cyBidXQgZGlkCi0gIG5vdCBpbiBidWlsZF9jbGliLgotCi0tIElzc3VlICM5NDM3OiBGaXggYnVpbGRpbmcgQyBleHRlbnNpb25zIHdpdGggbm9uLWRlZmF1bHQgTERGTEFHUy4KLQotLSBJc3N1ZSAjNDY2MTogZW1haWwgY2FuIG5vdyBwYXJzZSBieXRlcyBpbnB1dCBhbmQgZ2VuZXJhdGUgZWl0aGVyIGNvbnZlcnRlZAotICA3Yml0IG91dHB1dCBvciBieXRlcyBvdXRwdXQuICBFbWFpbCB2ZXJzaW9uIGJ1bXBlZCB0byA1LjEuMC4KLQotLSBJc3N1ZSAjMTU4OTogQWRkIHNzbC5tYXRjaF9ob3N0bmFtZSgpLCB0byBoZWxwIGltcGxlbWVudCBzZXJ2ZXIgaWRlbnRpdHkKLSAgdmVyaWZpY2F0aW9uIGZvciBoaWdoZXItbGV2ZWwgcHJvdG9jb2xzLgotCi0tIElzc3VlICM5NzU5OiBHemlwRmlsZSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhbiBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkCi0gIGFmdGVyIHRoZSBmaWxlIGlzIGNsb3NlZC4gIFBhdGNoIGJ5IEplZmZyZXkgRmlua2Vsc3RlaW4uCi0KLS0gSXNzdWUgIzkwNDI6IEZpeCBpbnRlcmFjdGlvbiBvZiBjdXN0b20gdHJhbnNsYXRpb24gY2xhc3NlcyBhbmQgY2FjaGluZyBpbgotICBnZXR0ZXh0LgotCi0tIElzc3VlICM2NzA2OiBhc3luY29yZS5kaXNwYXRjaGVyIG5vdyBwcm92aWRlcyBhIGhhbmRsZV9hY2NlcHRlZCgpIG1ldGhvZAotICByZXR1cm5pbmcgYSAoc29jaywgYWRkcikgcGFpciB3aGljaCBpcyBjYWxsZWQgd2hlbiBhIGNvbm5lY3Rpb24gaGFzIGJlZW4KLSAgZXN0YWJsaXNoZWQgd2l0aCBhIG5ldyByZW1vdGUgZW5kcG9pbnQuICBUaGlzIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgYXMgYQotICByZXBsYWNlbWVudCBmb3Igb2xkIGhhbmRsZV9hY2NlcHQoKSBhbmQgYXZvaWRzIHRoZSB1c2VyIHRvIGNhbGwgYWNjZXB0KCkKLSAgZGlyZWN0bHkuCi0KLS0gSXNzdWUgIzkwNjU6IHRhcmZpbGUgbm8gbG9uZ2VyIHVzZXMgInJvb3QiIGFzIHRoZSBkZWZhdWx0IGZvciB0aGUgdW5hbWUgYW5kCi0gIGduYW1lIGZpZWxkLgotCi0tIElzc3VlICM4OTgwOiBGaXhlZCBhIGZhaWx1cmUgaW4gZGlzdHV0aWxzLmNvbW1hbmQgY2hlY2sgdGhhdCB3YXMgc2hhZG93ZWQgYnkKLSAgYW4gZW52aXJvbm1lbnQgdGhhdCBkb2VzIG5vdCBoYXZlIGRvY3V0aWxzLiAgUGF0Y2ggYnkgQXJmcmV2ZXIuCi0KLS0gSXNzdWUgIzEwNTAyNjg6IHBhcnNlYWRkciBub3cgY29ycmVjdGx5IHF1b3RlcyBkb3VibGUgcXVvdGUgYW5kIGJhY2tzbGFzaAotICBjaGFyYWN0ZXJzIHRoYXQgYXBwZWFyIGluc2lkZSBxdW90ZWQgc3RyaW5ncyBpbiBlbWFpbCBhZGRyZXNzZXMuCi0KLS0gSXNzdWUgIzEwMDA0OiBxdW9wcmltaW1lIG5vIGxvbmdlciBnZW5lcmF0ZXMgYSB0cmFjZWJhY2sgd2hlbiBjb25mcm9udGVkIHdpdGgKLSAgaW52YWxpZCBjaGFyYWN0ZXJzIGFmdGVyICc9JyBpbiBhIFEtZW5jb2RlZCB3b3JkLgotCi0tIElzc3VlICMxNDkxOiBCYXNlSFRUUFNlcnZlciBub3dzIHNlbmQgYSBgYDEwMCBDb250aW51ZWBgIHJlc3BvbnNlIGJlZm9yZQotICBzZW5kaW5nIGEgMjAwIE9LIGZvciB0aGUgRXhwZWN0OiAxMDAtY29udGludWUgcmVxdWVzdCBoZWFkZXIuCi0KLS0gSXNzdWUgIzkzNjA6IENsZWFudXAgYW5kIGltcHJvdmVtZW50cyB0byB0aGUgbm50cGxpYiBtb2R1bGUuICBUaGUgQVBJIG5vdwotICBjb25mb3JtcyB0byB0aGUgcGhpbG9zb3BoeSBvZiBieXRlcyBhbmQgdW5pY29kZSBzZXBhcmF0aW9uIGluIFB5dGhvbiAzLiAgQQotICB0ZXN0IHN1aXRlIGhhcyBhbHNvIGJlZW4gYWRkZWQuCi0KLS0gSXNzdWUgIzk5NjI6IEd6aXBGaWxlIG5vdyBoYXMgdGhlIHBlZWsoKSBtZXRob2QuCi0KLS0gSXNzdWUgIzkwOTA6IFdoZW4gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQgZmFpbHMgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4sCi0gIHJldHJ5IHRoZSBzZWxlY3QoKSBsb29wIGluc3RlYWQgb2YgYmFpbGluZyBvdXQuICBUaGlzIGlzIGJlY2F1c2Ugc2VsZWN0KCkgY2FuCi0gIGluY29ycmVjdGx5IHJlcG9ydCBhIHNvY2tldCBhcyByZWFkeSBmb3IgcmVhZGluZyAoZm9yIGV4YW1wbGUsIGlmIGl0IHJlY2VpdmVkCi0gIHNvbWUgZGF0YSB3aXRoIGFuIGludmFsaWQgY2hlY2tzdW0pLgotCi0tIElzc3VlICMzNjEyOiBBZGRlZCBuZXcgdHlwZXMgdG8gY3R5cGVzLndpbnR5cGVzLiAoQ0hBUiBhbmQgcG9pbnRlcnMpCi0KLS0gSXNzdWUgIzk5NTA6IEZpeCBzb2NrZXQuc2VuZGFsbCgpIGNyYXNoIG9yIG1pc2JlaGF2aW91ciB3aGVuIGEgc2lnbmFsIGlzCi0gIHJlY2VpdmVkLiAgTm93IHNlbmRhbGwoKSBwcm9wZXJseSBjYWxscyBzaWduYWwgaGFuZGxlcnMgaWYgbmVjZXNzYXJ5LCBhbmQKLSAgcmV0cmllcyBzZW5kaW5nIGlmIHRoZXNlIHJldHVybmVkIHN1Y2Nlc3NmdWxseSwgaW5jbHVkaW5nIG9uIHNvY2tldHMgd2l0aCBhCi0gIHRpbWVvdXQuCi0KLS0gSXNzdWUgIzk5NDc6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVnIGluIHN0b3BMaXN0ZW5pbmcuCi0KLS0gSXNzdWUgIzk5NDU6IGxvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVncyBpbiBhZGRIYW5kbGVyL3JlbW92ZUhhbmRsZXIuCi0KLS0gSXNzdWUgIzk5MzY6IEZpeGVkIGV4ZWN1dGFibGUgbGluZXMnIHNlYXJjaCBpbiB0aGUgdHJhY2UgbW9kdWxlLgotCi0tIElzc3VlICM5NzkwOiBSZXdvcmsgaW1wb3J0cyBuZWNlc3NhcnkgZm9yIHNhbWVmaWxlIGFuZCBzYW1lb3BlbmZpbGUKLSAgaW4gbnRwYXRoLgotCi0tIElzc3VlICM5OTI4OiBQcm9wZXJseSBpbml0aWFsaXplIHRoZSB0eXBlcyBleHBvcnRlZCBieSB0aGUgYnoyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY3NTk1MTogQWxsb3cgR3ppcEZpbGUgdG8gd29yayB3aXRoIHVuc2Vla2FibGUgZmlsZSBvYmplY3RzLiAgUGF0Y2ggYnkKLSAgRmxvcmlhbiBGZXN0aS4KLQotLSBMb2dnaW5nOiBBZGRlZCBRdWV1ZUxpc3RlbmVyIGNsYXNzIHRvIGZhY2lsaXRhdGUgbG9nZ2luZyB1c2FnZSBmb3IKLSAgcGVyZm9ybWFuY2UtY3JpdGljYWwgdGhyZWFkcy4KLQotLSBJc3N1ZSAjOTkxNjogQWRkIHNvbWUgbWlzc2luZyBlcnJubyBzeW1ib2xzLgotCi0tIElzc3VlICM5ODc3OiBFeHBvc2Ugc3lzY29uZmlnLmdldF9tYWtlZmlsZV9maWxlbmFtZSgpCi0KLS0gbG9nZ2luZzogQWRkZWQgaGFzSGFuZGxlcnMoKSBtZXRob2QgdG8gTG9nZ2VyIGFuZCBMb2dnZXJBZGFwdGVyLgotCi0tIElzc3VlICM5OTA4OiBGaXggb3Muc3RhdCgpIG9uIGJ5dGVzIHBhdGhzIHVuZGVyIFdpbmRvd3MgNy4KLQotLSBJc3N1ZSAjMjY0MzogbXN5bmMoKSBpcyBub3QgY2FsbGVkIGFueW1vcmUgd2hlbiBkZWFsbG9jYXRpbmcgYW4gb3BlbiBtbWFwCi0gIG9iamVjdCwgb25seSBtdW5tYXAoKS4KLQotLSBsb2dnaW5nOiBDaGFuZ2VkIExvZ2dlckFkYXB0ZXIgaW1wbGVtZW50YXRpb24gaW50ZXJuYWxseSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8KLSAgc3ViY2xhc3MgaW4gYSB1c2VmdWwgd2F5LgotCi0tIGxvZ2dpbmc6IGhhc0hhbmRsZXJzIG1ldGhvZCB3YXMgYWRkZWQgdG8gTG9nZ2VyLCBhbmQgaXNFbmFibGVkRm9yLAotICBnZXRFZmZlY3RpdmVMZXZlbCwgaGFzSGFuZGxlcnMgYW5kIHNldExldmVsIHdlcmUgYWRkZWQgdG8gTG9nZ2VyQWRhcHRlci4KLSAgTG9nZ2VyQWRhcHRlciB3YXMgaW50cm9kdWNlZCBpbnRvIHRoZSB1bml0IHRlc3RzIGZvciBsb2dnaW5nLgotCi0tIElzc3VlICMxNjg2OiBGaXggc3RyaW5nLlRlbXBsYXRlIHdoZW4gb3ZlcnJpZGluZyB0aGUgcGF0dGVybiBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzk4NTQ6IFNvY2tldElPIG9iamVjdHMgbm93IG9ic2VydmUgdGhlIFJhd0lPQmFzZSBpbnRlcmZhY2UgaW4KLSAgbm9uLWJsb2NraW5nIG1vZGU6IHRoZXkgcmV0dXJuIE5vbmUgd2hlbiBhbiBvcGVyYXRpb24gd291bGQgYmxvY2sgKGluc3RlYWQgb2YKLSAgcmFpc2luZyBhbiBleGNlcHRpb24pLgotCi0tIElzc3VlICMxNzMwMTM2OiBGaXggdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBhIHRrLmZvbnQuRm9udCBhbmQgYW4gb2JqZWN0IG9mCi0gIGFub3RoZXIga2luZC4KLQotLSBJc3N1ZSAjOTQ0MTogbG9nZ2luZyBoYXMgYmV0dGVyIGNvdmVyYWdlIGZvciByb3RhdGluZyBmaWxlIGhhbmRsZXJzLgotCi0tIElzc3VlICM5ODY1OiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgaGFzIGEgX19zaXplb2ZfXyBtZXRob2QuCi0KLS0gSXNzdWUgIzk4NTQ6IFRoZSBkZWZhdWx0IHJlYWQoKSBpbXBsZW1lbnRhdGlvbiBpbiBpby5SYXdJT0Jhc2Ugbm93IGhhbmRsZXMKLSAgbm9uLWJsb2NraW5nIHJlYWRpbnRvKCkgcmV0dXJuaW5nIE5vbmUgY29ycmVjdGx5LgotCi0tIElzc3VlICMxNTUyOiBzb2NrZXQuc29ja2V0cGFpcigpIG5vdyByZXR1cm5zIHJlZ3VsYXIgc29ja2V0LnNvY2tldCBvYmplY3RzCi0gIHN1cHBvcnRpbmcgdGhlIHdob2xlIHNvY2tldCBBUEkgKHJhdGhlciB0aGFuIHRoZSAicmF3IiBfc29ja2V0LnNvY2tldAotICBvYmplY3RzKS4KLQotLSBJc3N1ZSAjOTg1MzogRml4IHRoZSBzaWduYXR1cmUgb2YgU1NMU29ja2V0LnJlY3Zmcm9tKCkgYW5kIFNTTFNvY2tldC5zZW5kdG8oKQotICB0byBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyBzb2NrZXQgbWV0aG9kcy4KLQotLSBJc3N1ZSAjOTg0MDogQWRkZWQgYSBkZWNvcmF0b3IgdG8gcmVwcmxpYiBmb3Igd3JhcHBpbmcgX19yZXByX18gbWV0aG9kcyB0byBtYWtlCi0gIHRoZW0gaGFuZGxlIHJlY3Vyc2l2ZSBjYWxscyB3aXRoaW4gdGhlIHNhbWUgdGhyZWFkLgotCi0tIGxvZ2dpbmc6IEVuaGFuY2VkIEhUVFBIYW5kbGVyIHdpdGggc2VjdXJlIGFuZCBjcmVkZW50aWFscyBpbml0aWFsaXplcnMuCi0KLS0gSXNzdWUgIzc2NzY0NTogU2V0IG9zLnBhdGguc3VwcG9ydHNfdW5pY29kZV9maWxlbmFtZXMgdG8gVHJ1ZSBvbiBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjOTgzNzogVGhlIHJlYWQoKSBtZXRob2Qgb2YgWmlwRXh0RmlsZSBvYmplY3RzIChhcyByZXR1cm5lZCBieQotICBaaXBGaWxlLm9wZW4oKSkgY291bGQgcmV0dXJuIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCi0KLS0gSXNzdWUgIzk4MjY6IE9yZGVyZWREaWN0Ll9fcmVwcl9fIGNhbiBub3cgaGFuZGxlIHNlbGYtcmVmZXJlbnRpYWwgdmFsdWVzOgotICBkWyd4J10gPSBkLgotCi0tIElzc3VlICM5ODI1OiBVc2luZyBfX2RlbF9fIGluIHRoZSBkZWZpbml0aW9uIG9mIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG1hZGUKLSAgaXQgcG9zc2libGUgZm9yIHRoZSB1c2VyIHRvIGNyZWF0ZSBzZWxmLXJlZmVyZW5jaW5nIG9yZGVyZWQgZGljdGlvbmFyaWVzIHdoaWNoCi0gIGJlY29tZSBwZXJtYW5lbnRseSB1bmNvbGxlY3RhYmxlIEdDIGdhcmJhZ2UuICBSZWluc3RhdGVkIHRoZSBQeXRob24gMy4xCi0gIGFwcHJvYWNoIG9mIHVzaW5nIHdlYWtyZWYgcHJveGllcyBzbyB0aGF0IHJlZmVyZW5jZSBjeWNsZXMgbmV2ZXIgZ2V0IGNyZWF0ZWQKLSAgaW4gdGhlIGZpcnN0IHBsYWNlLgotCi0tIElzc3VlICM5NTc5LCAjOTU4MDogRml4IG9zLmNvbmZzdHIoKSBmb3IgdmFsdWUgbG9uZ2VyIHRoYW4gMjU1IGJ5dGVzIGFuZAotICBlbmNvZGUgdGhlIHZhbHVlIHdpdGggZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIChpbnN0ZWFkIG9mCi0gIHV0Zi04IGluIHN0cmljdCBtb2RlKSAuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgotCi0tIElzc3VlICM5NjMyOiBSZW1vdmUgc3lzLnNldGZpbGVzeXN0ZW1lbmNvZGluZygpIGZ1bmN0aW9uOiB1c2UgUFlUSE9ORlNFTkNPRElORwotICBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBzZXQgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYXQgUHl0aG9uIHN0YXJ0dXAuCi0gIHN5cy5zZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSBjcmVhdGVzIGluY29uc2lzdGVuY2llcyBiZWNhdXNlIGl0IGlzIHVuYWJsZSB0bwotICByZWVuY29kZSBhbGwgZmlsZW5hbWVzIGluIGFsbCBvYmplY3RzLgotCi0tIElzc3VlICM5NDEwOiBWYXJpb3VzIG9wdGltaXphdGlvbnMgdG8gdGhlIHBpY2tsZSBtb2R1bGUsIGxlYWRpbmcgdG8gc3BlZWR1cHMKLSAgdXAgdG8gNHggKGRlcGVuZGluZyBvbiB0aGUgYmVuY2htYXJrKS4gIE1vc3RseSBwb3J0ZWQgZnJvbSBVbmxhZGVuIFN3YWxsb3c7Ci0gIGluaXRpYWwgcGF0Y2ggYnkgQWxleGFuZHJlIFZhc3NhbG90dGkuCi0KLS0gVGhlIHBwcmludCBtb2R1bGUgbm93IHN1cHBvcnRzIHByaW50aW5nIE9yZGVyZWREaWN0cyBpbiB0aGVpciBnaXZlbiBvcmRlcgotICAoZm9ybWVybHksIGl0IHdvdWxkIHNvcnQgdGhlIGtleXMpLgotCi0tIExvZ2dpbmc6IEFkZGVkIFF1ZXVlSGFuZGxlciBjbGFzcyB0byBmYWNpbGl0YXRlIGxvZ2dpbmcgdXNhZ2Ugd2l0aAotICBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzk3MDc6IFJld3JpdHRlbiByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhyZWFkaW5nLmxvY2FsIHdoaWNoIGlzCi0gIGZyaWVuZGxpZXIgdG93YXJkcyByZWZlcmVuY2UgY3ljbGVzLiAgVGhpcyBjaGFuZ2UgaXMgbm90IG5vcm1hbGx5IHZpc2libGUKLSAgc2luY2UgYW4gb3B0aW1pemVkIEMgaW1wbGVtZW50YXRpb24gKF90aHJlYWQuX2xvY2FsKSBpcyB1c2VkIGluc3RlYWQuCi0KLS0gSXNzdWUgIzYzOTQ6IG9zLmdldHBwaWQoKSBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MuICBOb3RlIHRoYXQgaXQgd2lsbAotICBzdGlsbCByZXR1cm4gdGhlIGlkIG9mIHRoZSBwYXJlbnQgcHJvY2VzcyBhZnRlciBpdCBoYXMgZXhpdGVkLiAgVGhpcyBwcm9jZXNzCi0gIGlkIG1heSBldmVuIGhhdmUgYmVlbiByZXVzZWQgYnkgYW5vdGhlciB1bnJlbGF0ZWQgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjOTc5MjogSW4gY2FzZSBvZiBjb25uZWN0aW9uIGZhaWx1cmUsIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIHdvdWxkCi0gIHN3YWxsb3cgdGhlIGV4Y2VwdGlvbiBhbmQgcmFpc2UgYSBuZXcgb25lLCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBmZXRjaCB0aGUKLSAgb3JpZ2luYWwgZXJybm8sIG9yIHRvIGZpbHRlciB0aW1lb3V0IGVycm9ycy4gIE5vdyB0aGUgb3JpZ2luYWwgZXJyb3IgaXMKLSAgcmUtcmFpc2VkLgotCi0tIElzc3VlICM5NzU4OiBXaGVuIGZjbnRsLmlvY3RsKCkgd2FzIGNhbGxlZCB3aXRoIG11dGFibGVfZmxhZyBzZXQgdG8gVHJ1ZSwgYW5kCi0gIHRoZSBwYXNzZWQgYnVmZmVyIHdhcyBleGFjdGx5IDEwMjQgYnl0ZXMgbG9uZywgdGhlIGJ1ZmZlciB3b3VsZG4ndCBiZSB1cGRhdGVkCi0gIGJhY2sgYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIFVwZGF0ZXMgdG8gdGhlIHJhbmRvbSBtb2R1bGU6Ci0KLSAgKiBEb2N1bWVudCB3aGljaCBwYXJ0cyBvZiB0aGUgbW9kdWxlIGFyZSBndWFyYW50ZWVkIHRvIHN0YXkgdGhlIHNhbWUgYWNyb3NzCi0gICAgdmVyc2lvbnMgYW5kIHdoaWNoIHBhcnRzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZS4KLQotICAqIFVwZGF0ZSB0aGUgc2VlZCgpIG1ldGhvZCB0byB1c2UgYWxsIG9mIHRoZSBiaXRzIGluIGEgc3RyaW5nIGluc3RlYWQgb2YganVzdAotICAgIHRoZSBoYXNoIHZhbHVlLiAgVGhpcyBtYWtlcyBiZXR0ZXIgdXNlIG9mIHRoZSBzZWVkIHZhbHVlIGFuZCBhc3N1cmVzIHRoZQotICAgIHNlZWRpbmcgaXMgcGxhdGZvcm0gaW5kZXBlbmRlbnQuICBJc3N1ZSAjNzg4OS4KLQotICAqIEltcHJvdmVkIHRoZSByYW5kb20oKS0tPmludGVnZXIgYWxnb3JpdGhtIHVzZWQgaW4gY2hvaWNlKCksIHNodWZmbGUoKSwKLSAgICBzYW1wbGUoKSwgcmFuZHJhbmdlKCksIGFuZCByYW5kaW50KCkuICBGb3JtZXJseSwgaXQgdXNlZCBpbnQobipyYW5kb20oKSkKLSAgICB3aGljaCBoYXMgYSBzbGlnaHQgYmlhcyB3aGVuZXZlciBuIGlzIG5vdCBhIHBvd2VyIG9mIHR3by4gIElzc3VlICM5MDI1LgotCi0gICogSW1wcm92ZWQgZG9jdW1lbnRhdGlvbiBvZiBhcmd1bWVudHMgdG8gcmFuZHJhbmdlKCkuICBJc3N1ZSAjOTM3OS4KLQotLSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCBub3cgc3VwcG9ydHMgYSBuZXcgbWV0aG9kIGZvciByZXBvc2l0aW9uaW5nIGtleXMgdG8KLSAgZWl0aGVyIGVuZC4KLQotLSBJc3N1ZSAjOTc1NDogU2ltaWxhcmx5IHRvIGFzc2VydFJhaXNlcyBhbmQgYXNzZXJ0UmFpc2VzUmVnZXhwLCB1bml0dGVzdCB0ZXN0Ci0gIGNhc2VzIG5vdyBhbHNvIGhhdmUgYXNzZXJ0V2FybnMgYW5kIGFzc2VydFdhcm5zUmVnZXhwIG1ldGhvZHMgdG8gY2hlY2sgdGhhdCBhCi0gIGdpdmVuIHdhcm5pbmcgdHlwZSB3YXMgdHJpZ2dlcmVkIGJ5IHRoZSBjb2RlIHVuZGVyIHRlc3QuCi0KLS0gSXNzdWUgIzU1MDY6IEJ5dGVzSU8gb2JqZWN0cyBub3cgaGF2ZSBhIGdldGJ1ZmZlcigpIG1ldGhvZCBleHBvcnRpbmcgYSB2aWV3IG9mCi0gIHRoZWlyIGNvbnRlbnRzIHdpdGhvdXQgZHVwbGljYXRpbmcgdGhlbS4gIFRoZSB2aWV3IGlzIGJvdGggcmVhZGFibGUgYW5kCi0gIHdyaXRhYmxlLgotCi0tIElzc3VlICM3NTY2OiBJbXBsZW1lbnQgb3MucGF0aC5zYW1lb3BlbmZpbGUgZm9yIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzkyOTM6IEkvTyBzdHJlYW1zIG5vdyByYWlzZSBgYGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uYGAgd2hlbiBhbgotICB1bnN1cHBvcnRlZCBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIChmb3IgZXhhbXBsZSwgd3JpdGluZyB0byBhIGZpbGUgb3BlbiBvbmx5Ci0gIGZvciByZWFkaW5nKS4KLQotLSBoYXNobGliIGhhcyB0d28gbmV3IGNvbnN0YW50IGF0dHJpYnV0ZXM6IGFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQKLSAgYWxnb3JpdGhtc19hdmFpYWJsZSB0aGF0IHJlc3BlY3RpdmVseSBsaXN0IHRoZSBuYW1lcyBvZiBoYXNoIGFsZ29yaXRobXMKLSAgZ3VhcmFudGVlZCB0byBleGlzdCBpbiBhbGwgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBhbmQgdGhlIG5hbWVzIG9mIGhhc2gKLSAgYWxnb3JpdGhtcyBhdmFpbGFibGUgaW4gdGhlIGN1cnJlbnQgcHJvY2Vzcy4KLQotLSBBIG5ldyBwYWNrYWdlIGBgY29uY3VycmVudC5mdXR1cmVzYGAgYXMgZGVmaW5lZCBieSBQRVAgMzE0OC4KLQotQy1BUEkKLS0tLS0tCi0KLS0gQWRkIFB5RXJyX1N5bnRheExvY2F0aW9uRXgsIHdoaWNoIHN1cHBvcnRzIHBhc3NpbmcgYSBjb2x1bW4gb2Zmc2V0LgotCi0tIElzc3VlICM5ODM0OiBEb24ndCBzZWdmYXVsdCBpbiBQeVNlcXVlbmNlX0dldFNsaWNlLCBQeVNlcXVlbmNlX1NldFNsaWNlLCBvcgotICBQeVNlcXVlbmNlX0RlbFNsaWNlIHdoZW4gdGhlIG9iamVjdCBkb2Vzbid0IGhhdmUgYW55IG1hcHBpbmcgb3BlcmF0aW9ucwotICBkZWZpbmVkLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTE4ODogVGhlIGdkYiBleHRlbnNpb24gbm93IGhhbmRsZXMgY29ycmVjdGx5IG5hcnJvdyAoVUNTMikgYXMgd2VsbCBhcwotICB3aWRlIChVQ1M0KSB1bmljb2RlIGJ1aWxkcyBmb3IgYm90aCB0aGUgaG9zdCBpbnRlcnByZXRlciAoZW1iZWRkZWQgaW5zaWRlIGdkYikKLSAgYW5kIHRoZSBpbnRlcnByZXRlciB1bmRlciB0ZXN0LgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjOTMwODogQWRkZWQgdGVzdHMgZm9yIGltcG9ydGluZyBlbmNvZGVkIG1vZHVsZXMgdGhhdCBkbyBub3QKLSAgZGVwZW5kIG9uIHNwZWNpZmljIHN0ZGxpYiBtb2R1bGVzIGJlaW5nIGVuY29kZWQgaW4gYSBjZXJ0YWluIHdheS4KLQotLSBJc3N1ZSAjMTA1MTogQWRkIGEgc2NyaXB0IChMaWIvdGVzdC9tYWtlX3NzbF9jZXJ0cy5weSkgdG8gZ2VuZXJhdGUgdGhlIGN1c3RvbQotICBjZXJ0aWZpY2F0ZSBhbmQgcHJpdmF0ZSBrZXkgZmlsZXMgdXNlZCBieSBTU0wtcmVsYXRlZCBjZXJ0cy4KLQotLSBJc3N1ZSAjOTk3ODogV2FpdCB1bnRpbCBzdWJwcm9jZXNzIGNvbXBsZXRlcyBpbml0aWFsaXphdGlvbi4gKFdpbjMyS2lsbFRlc3RzCi0gIGluIHRlc3Rfb3MpCi0KLS0gSXNzdWUgIzcxMTA6IHJlZ3J0ZXN0IG5vdyBzZW5kcyB0ZXN0IGZhaWx1cmUgcmVwb3J0cyBhbmQgc2luZ2xlLWZhaWx1cmUKLSAgdHJhY2ViYWNrcyB0byBzdGRlcnIgcmF0aGVyIHRoYW4gc3Rkb3V0LgotCi0tIElzc3VlICM5NjI4OiBmaXggcnVudGVzdHMuc2ggLXggb3B0aW9uIHNvIG1vcmUgdGhhbiBvbmUgdGVzdCBjYW4gYmUgZXhjbHVkZWQuCi0KLS0gSXNzdWUgIzk4OTk6IEZpeCB0ZXN0X3RraW50ZXIudGVzdF9mb250IG9uIHZhcmlvdXMgcGxhdGZvcm1zLiAgUGF0Y2ggYnkgTmVkCi0gIERlaWx5LgotCi0tIElzc3VlICM5ODk0OiBEbyBub3QgaGFyZGNvZGUgRU5PRU5UIGluIHRlc3Rfc3VicHJvY2Vzcy4KLQotLSBJc3N1ZSAjOTMxNTogQWRkZWQgdGVzdHMgZm9yIHRoZSB0cmFjZSBtb2R1bGUuICBQYXRjaCBieSBFbGkgQmVuZGVyc2t5LgotCi0tIElzc3VlICM5MzIzOiBNYWtlIHRlc3QucmVncnRlc3QuX19maWxlX18gYWJzb2x1dGUsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlCi0gIGNhc2Ugd2hlbiBydW5uaW5nIHByb2ZpbGUgb3IgdHJhY2UsIGZvciBleGFtcGxlLgotCi0tIElzc3VlICM5NTY4OiBGaXggdGVzdF91cmxsaWIyX2xvY2FsbmV0IG9uIE9TIFggMTAuMy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzEwMDYyOiBBbGxvdyBidWlsZGluZyBvbiBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IGhhdmUgc2VtX3RpbWVkd2FpdC4KLQotLSBJc3N1ZSAjMTAwNTQ6IFNvbWUgcGxhdGZvcm1zIHByb3ZpZGUgdWludHB0cl90IGluIGludHR5cGVzLmguICBQYXRjaCBieSBBa2lyYQotICBLaXRhZGEuCi0KLS0gSXNzdWUgIzEwMDU1OiBNYWtlIGpzb24gQzg5LWNvbXBsaWFudCBpbiBVQ1M0IG1vZGUuCi0KLS0gSXNzdWUgIzk1NTI6IEF2b2lkIHVubmVjZXNzYXJ5IHJlYnVpbGQgb2YgT3BlblNTTC4gKFdpbmRvd3MpCi0KLS0gSXNzdWUgIzE2MzM4NjM6IERvbid0IGlnbm9yZSAkQ0MgdW5kZXIgQUlYLgotCi0tIElzc3VlICM5ODEwOiBDb21waWxlIGJ6aXAyIHNvdXJjZSBmaWxlcyBpbiBQeXRob24ncyBwcm9qZWN0IGZpbGUgZGlyZWN0bHkuIEl0Ci0gIHVzZWQgdG8gYmUgYnVpbHQgd2l0aCBiemlwMidzIG1ha2VmaWxlLgotCi0tIElzc3VlICM5ODQ4OiBTdG9wcGluZyB0cnlpbmcgdG8gYnVpbGQgX3dlYWtyZWYgaW4gc2V0dXAucHkgYXMgaXQgaXMgYSBidWlsdC1pbgotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzk4MDY6IHB5dGhvbi1jb25maWcgbm93IGhhcyBhbiBgYC0tZXh0ZW5zaW9uLXN1ZmZpeGBgIG9wdGlvbiB0aGF0Ci0gIG91dHB1dHMgdGhlIHN1ZmZpeCBmb3IgZHluYW1pYyBsaWJyYXJpZXMgaW5jbHVkaW5nIHRoZSBBQkkgdmVyc2lvbiBuYW1lCi0gIGRlZmluZWQgYnkgUEVQIDMxNDkuCi0KLS0gSXNzdWUgIzk0MTM0NjogSW1wcm92ZSB0aGUgYnVpbGQgcHJvY2VzcyB1bmRlciBBSVggYW5kIGFsbG93IFB5dGhvbiB0byBiZQotICBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCi0KLS0gSXNzdWUgIzQwMjY6IE1ha2UgdGhlIGZjbnRsIGV4dGVuc2lvbiBidWlsZCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuCi0gIFNhYmzDqS4KLQotLSBJc3N1ZSAjOTcwMTogVGhlIE1hY09TWCBpbnN0YWxsZXIgY2FuIHBhdGNoIHRoZSBzaGVsbCBwcm9maWxlIHRvIGVuc3VyZSB0aGF0Ci0gIHRoZSAiYmluIiBkaXJlY3RvcnkgaW5zaWRlIHRoZSBmcmFtZXdvcmsgaXMgb24gdGhlIHNoZWxsJ3Mgc2VhcmNoIHBhdGguIFRoaXMKLSAgZmVhdHVyZSBub3cgYWxzbyBzdXBwb3J0cyB0aGUgWlNIIHNoZWxsLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMiBBbHBoYSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDA1LVNlcC0yMDEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTIyNTogUmVtb3ZlIHRoZSBST1RfRk9VUiBhbmQgRFVQX1RPUFggb3Bjb2RlLCB0aGUgbGF0dGVyIHJlcGxhY2VkIGJ5Ci0gIHRoZSBuZXcgKGFuZCBzaW1wbGVyKSBEVVBfVE9QX1RXTy4gIFBlcmZvcm1hbmNlIGlzbid0IGNoYW5nZWQsIGJ1dCBvdXIKLSAgYnl0ZWNvZGUgaXMgYSBiaXQgc2ltcGxpZmllZC4gIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgotCi0tIElzc3VlICM5NzY2OiBSZW5hbWUgcG9vcmx5IG5hbWVkIHZhcmlhYmxlcyBleHBvc2VkIGJ5IF93YXJuaW5ncyB0byBwcmV2ZW50Ci0gIGNvbmZ1c2lvbiB3aXRoIHRoZSBwcm9wZXIgdmFyaWFibGVzIG5hbWVzIGZyb20gJ3dhcm5pbmdzJyBpdHNlbGYuCi0KLS0gSXNzdWUgIzkyMTI6IGRpY3Rfa2V5cyBhbmQgZGljdF9pdGVtcyBub3cgcHJvdmlkZSB0aGUgaXNkaXNqb2ludCgpIG1ldGhvZCwgdG8KLSAgY29uZm9ybSB0byB0aGUgU2V0IEFCQy4gIFBhdGNoIGJ5IERhbmllbCBVcmJhbi4KLQotLSBJc3N1ZSAjOTczNzogRml4IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgc2xpY2Ugb3IgYW4gaXRlbSBmcm9tIGEKLSAgbWVtb3J5dmlldyBvYmplY3QuCi0KLS0gSXNzdWUgIzk1NDk6IHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoKSBhbmQgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZygpIGFyZQotICBub3cgcmVtb3ZlZCwgc2luY2UgdGhlaXIgZWZmZWN0IHdhcyBpbmV4aXN0ZW50IGluIDMueCAodGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMKLSAgaGFyZGNvZGVkIHRvIHV0Zi04IGFuZCBjYW5ub3QgYmUgY2hhbmdlZCkuCi0KLS0gSXNzdWUgIzc0MTU6IFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgpIG5vdyB1c2VzIHRoZSBuZXcgYnVmZmVyIEFQSQotICBwcm9wZXJseS4gIFBhdGNoIGJ5IFN0ZWZhbiBCZWhuZWwuCi0KLS0gSXNzdWUgIzU1NTM6IFRoZSBQeV9MT0NBTF9JTkxJTkUgbWFjcm8gbm93IHJlc3VsdHMgaW4gaW5saW5pbmcgb24gbW9zdAotICBwbGF0Zm9ybXMuICBQcmV2aW91c2x5LCBpdCBpbmxpbmVkIG9ubHkgd2hlbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIEMuCi0KLS0gSXNzdWUgIzk3MTI6IEZpeCB0b2tlbml6ZSBvbiBpZGVudGlmaWVycyB0aGF0IHN0YXJ0IHdpdGggbm9uLWFzY2lpIG5hbWVzLgotCi0tIElzc3VlICM5Njg4OiBfX2Jhc2ljc2l6ZV9fIGFuZCBfX2l0ZW1zaXplX18gbXVzdCBiZSBhY2Nlc3NlZCBhcyBQeV9zc2l6ZV90LgotCi0tIElzc3VlICM5Njg0OiBBZGRlZCBhIGRlZmluaXRpb24gZm9yIFNJWkVPRl9XQ0hBUl9UIHRvIFBDL3B5Y29uZmlnLmgsIHRvIG1hdGNoCi0gIHRoZSBweWNvbmZpZy5oIGdlbmVyYXRlZCBieSBjb25maWd1cmUgb24gb3RoZXIgc3lzdGVtcy4KLQotLSBJc3N1ZSAjOTY2NjogT25seSBjYXRjaCBBdHRyaWJ1dGVFcnJvciBpbiBoYXNhdHRyKCkuIEFsbCBvdGhlciBleGNlcHRpb25zIHRoYXQKLSAgb2NjdXIgZHVyaW5nIGF0dHJpYnV0ZSBsb29rdXAgYXJlIG5vdyBwcm9wYWdhdGVkIHRvIHRoZSBjYWxsZXIuCi0KLS0gSXNzdWUgIzg2MjI6IEFkZCBQWVRIT05GU0VOQ09ESU5HIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIG92ZXJyaWRlIHRoZQotICBmaWxlc3lzdGVtIGVuY29kaW5nLgotCi0tIElzc3VlICM1MTI3OiBUaGUgQyBmdW5jdGlvbnMgdGhhdCBhY2Nlc3MgdGhlIFVuaWNvZGUgRGF0YWJhc2Ugbm93IGFjY2VwdCBhbmQKLSAgcmV0dXJuIGNoYXJhY3RlcnMgZnJvbSB0aGUgZnVsbCBVbmljb2RlIHJhbmdlLCBldmVuIG9uIG5hcnJvdyB1bmljb2RlIGJ1aWxkcwotICAoUHlfVU5JQ09ERV9UT0xPV0VSLCBQeV9VTklDT0RFX0lTREVDSU1BTCwgYW5kIG90aGVycykuICBBIHZpc2libGUgZGlmZmVyZW5jZQotICBpbiBQeXRob24gaXMgdGhhdCB1bmljb2RlZGF0YS5udW1lcmljKCkgbm93IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWUgZm9yCi0gIGxhcmdlIGNvZGUgcG9pbnRzLCBhbmQgcmVwcigpIG1heSBjb25zaWRlciBtb3JlIGNoYXJhY3RlcnMgYXMgcHJpbnRhYmxlLgotCi0tIElzc3VlICM5NDI1OiBDcmVhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QoKSBmdW5jdGlvbiB0byBnZXQgdGhlIGZpbGVuYW1lCi0gIGFzIGEgdW5pY29kZSBvYmplY3QsIGluc3RlYWQgb2YgYSBieXRlIHN0cmluZy4gRnVuY3Rpb24gbmVlZGVkIHRvIHN1cHBvcnQKLSAgdW5lbmNvZGFibGUgZmlsZW5hbWVzLiBEZXByZWNhdGUgUHlNb2R1bGVfR2V0RmlsZW5hbWUoKSBpbiBmYXZvciBvbiB0aGUgbmV3Ci0gIGZ1bmN0aW9uLgotCi0tIElzc3VlICM4MDYzOiBDYWxsIF9QeUdJTFN0YXRlX0luaXQoKSBlYXJsaWVyIGluIFB5X0luaXRpYWxpemVFeCgpLgotCi0tIElzc3VlICM5NjEyOiBUaGUgc2V0IG9iamVjdCBpcyBub3cgNjQtYml0IGNsZWFuIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzgyMDI6IHN5cy5hcmd2WzBdIGlzIG5vdyBzZXQgdG8gJy1tJyBpbnN0ZWFkIG9mICctYycgd2hlbiBzZWFyY2hpbmcgZm9yCi0gIHRoZSBtb2R1bGUgZmlsZSB0byBiZSBleGVjdXRlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgb3B0aW9uLgotCi0tIElzc3VlICM5NTk5OiBDcmVhdGUgUHlTeXNfRm9ybWF0U3Rkb3V0KCkgYW5kIFB5U3lzX0Zvcm1hdFN0ZGVycigpIGZ1bmN0aW9ucyB0bwotICB3cml0ZSBhIG1lc3NhZ2UgZm9ybWF0dGVkIGJ5IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpIHRvIHN5cy5zdGRvdXQgYW5kCi0gIHN5cy5zdGRlcnIuCi0KLS0gSXNzdWUgIzk1NDI6IENyZWF0ZSBQeVVuaWNvZGVfRlNEZWNvZGVyKCkgZnVuY3Rpb24sIGEgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6Ci0gIGRlY29kZSBieXRlcyBvYmplY3RzIHRvIHVuaWNvZGUgdXNpbmcgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKTsgc3RyCi0gIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KLQotLSBJc3N1ZSAjOTIwMzogQ29tcHV0ZWQgZ290b3MgYXJlIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gc3VwcG9ydGVkIGNvbXBpbGVycwotICAod2hpY2ggYXJlIGRldGVjdGVkIGJ5IHRoZSBjb25maWd1cmUgc2NyaXB0KS4gIFRoZXkgY2FuIHN0aWxsIGJlIGRpc2FibGUKLSAgc2VsZWN0aXZlbHkgYnkgc3BlY2lmeWluZyAtLXdpdGhvdXQtY29tcHV0ZWQtZ290b3MuCi0KLS0gSXNzdWUgIzk0MjU6IENyZWF0ZSBQeUVycl9XYXJuRm9ybWF0KCkgZnVuY3Rpb24sIHNpbWlsYXIgdG8gUHlFcnJfV2FybkV4KCkgYnV0Ci0gIHVzZSBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSB0byBmb3JtYXQgdGhlIHdhcm5pbmcgbWVzc2FnZS4KLQotLSBJc3N1ZSAjODUzMDogUHJldmVudCBzdHJpbmdsaWIgZmFzdHNlYXJjaCBmcm9tIHJlYWRpbmcgYmV5b25kIHRoZSBmcm9udCBvZiBhbgotICBhcnJheS4KLQotLSBJc3N1ZSAjNTMxOTogUHJpbnQgYW4gZXJyb3IgaWYgZmx1c2hpbmcgc3Rkb3V0IGZhaWxzIGF0IGludGVycHJldGVyIHNodXRkb3duLgotCi0tIElzc3VlICM5MzM3OiBUaGUgc3RyKCkgb2YgYSBmbG9hdCBvciBjb21wbGV4IG51bWJlciBpcyBub3cgaWRlbnRpY2FsIHRvIGl0cwotICByZXByKCkuCi0KLS0gSXNzdWUgIzk0MTY6IEZpeCBzb21lIGlzc3VlcyB3aXRoIGNvbXBsZXggZm9ybWF0dGluZyB3aGVyZSB0aGUgb3V0cHV0IHdpdGggbm8KLSAgdHlwZSBzcGVjaWZpZXIgZmFpbGVkIHRvIG1hdGNoIHRoZSBzdHIgb3V0cHV0OgotCi0gICAgLSBmb3JtYXQoY29tcGxleCgtMC4wLCAyLjApLCAnLScpIG9taXR0ZWQgdGhlIHJlYWwgcGFydCBmcm9tIHRoZSBvdXRwdXQsCi0gICAgLSBmb3JtYXQoY29tcGxleCgwLjAsIDIuMCksICctJykgaW5jbHVkZWQgYSBzaWduIGFuZCBwYXJlbnRoZXNlcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzgwMTM6IHRpbWUuYXNjdGltZSBhbmQgdGltZS5jdGltZSBubyBsb25nZXIgY2FsbCBzeXN0ZW0KLSAgYXNjdGltZSBhbmQgY3RpbWUgZnVuY3Rpb25zLiAgVGhlIHllYXIgcmFuZ2UgZm9yIHRpbWUuYXNjdGltZSBpcyBub3cKLSAgMTkwMCB0aHJvdWdoIG1heGludC4gIFRoZSByYW5nZSBmb3IgdGltZS5jdGltZSBpcyB0aGUgc2FtZSBhcyBmb3IKLSAgdGltZS5sb2NhbHRpbWUuICBUaGUgc3RyaW5nIHByb2R1Y2VkIGJ5IHRoZXNlIGZ1bmN0aW9ucyBpcyBsb25nZXIKLSAgdGhhbiAyNCBjaGFyYWN0ZXJzIHdoZW4geWVhciBpcyBncmVhdGVyIHRoYW4gOTk5OS4KLQotLSBJc3N1ZSAjNjYwODogdGltZS5hc2N0aW1lIGlzIG5vdyBjaGVja2luZyBzdHJ1Y3QgdG0gZmllbGRzIGl0cyBpbnB1dAotICBiZWZvcmUgcGFzc2luZyBpdCB0byB0aGUgc3lzdGVtIGFzY3RpbWUuICBQYXRjaCBieSBNdW5TaWMgSmVvbmcuCi0KLS0gSXNzdWUgIzg3MzQ6IEF2b2lkIGNyYXNoIGluIG1zdmNydC5nZXRfb3NmaGFuZGxlKCkgd2hlbiBhbiBpbnZhbGlkIGZpbGUKLSAgZGVzY3JpcHRvciBpcyBwcm92aWRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgotCi0tIElzc3VlICM3NzM2OiBSZWxlYXNlIHRoZSBHSUwgYXJvdW5kIGNhbGxzIHRvIG9wZW5kaXIoKSBhbmQgY2xvc2VkaXIoKSBpbiB0aGUKLSAgcG9zaXggbW9kdWxlLiAgUGF0Y2ggYnkgTWFyY2luIEJhY2hyeS4KLQotLSBJc3N1ZSAjNDgzNTogbWFrZSBQeUxvbmdfRnJvbVNvY2tldF90KCkgYW5kIFB5TG9uZ19Bc1NvY2tldF90KCkgcHJpdmF0ZSB0byB0aGUKLSAgc29ja2V0IG1vZHVsZSwgYW5kIGZpeCB0aGUgd2lkdGggb2Ygc29ja2V0IGRlc2NyaXB0b3JzIHRvIGJlIGNvcnJlY3RseQotICBkZXRlY3RlZCB1bmRlciA2NC1iaXQgV2luZG93cy4KLQotLSBJc3N1ZSAjMTAyNzIwNjogU3VwcG9ydCBJRE5BIGluIGdldGhvc3RieW5hbWUsIGdldGhvc3RieW5hbWVfZXgsIGdldGFkZHJpbmZvCi0gIGFuZCBnZXRob3N0YnlhZGRyLiAgZ2V0bmFtZWluZm8gaXMgbm93IHJlc3RyaWN0ZWQgdG8gbnVtZXJpYyBhZGRyZXNzZXMgYXMKLSAgaW5wdXQuCi0KLS0gSXNzdWUgIzkyMTQ6IFNldCBvcGVyYXRpb25zIG9uIGEgS2V5c1ZpZXcgb3IgSXRlbXNWaWV3IGluIGNvbGxlY3Rpb25zIG5vdwotICBjb3JyZWN0bHkgcmV0dXJuIGEgc2V0LiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KLQotLSBJc3N1ZSAjNTczNzogQWRkIFNvbGFyaXMtc3BlY2lmaWMgbW5lbW9uaWNzIGluIHRoZSBlcnJubyBtb2R1bGUuICBQYXRjaCBieQotICBNYXR0aGV3IEFocmVucy4KLQotLSBSZXN0b3JlIEdJTCBpbiBuaXNfY2F0IGluIGNhc2Ugb2YgZXJyb3IuIERlY29kZSBOSVMgZGF0YSB0byBmcyBlbmNvZGluZywgdXNpbmcKLSAgdGhlIHN1cnJvZ2F0ZSBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM2NjU3NjE6IGBgZnVuY3Rvb2xzLnJlZHVjZSgpYGAgd2lsbCBubyBsb25nZXIgbWFzayBleGNlcHRpb25zIG90aGVyCi0gIHRoYW4gYGBUeXBlRXJyb3JgYCByYWlzZWQgYnkgdGhlIGl0ZXJhdG9yIGFyZ3VtZW50LgotCi0tIElzc3VlICM5NTcwOiBVc2UgUEVQIDM4MyBkZWNvZGluZyBpbiBvcy5ta25vZCBhbmQgb3MubWtmaWZvLgotCi0tIElzc3VlICM2OTE1OiBVbmRlciBXaW5kb3dzLCBvcy5saXN0ZGlyKCkgZGlkbid0IHJlbGVhc2UgdGhlIEdsb2JhbCBJbnRlcnByZXRlcgotICBMb2NrIGFyb3VuZCBhbGwgc3lzdGVtIGNhbGxzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUnlhbiBLZWxseS4KLQotLSBJc3N1ZSAjODUyNDogQWRkIGEgZGV0YWNoKCkgbWV0aG9kIHRvIHNvY2tldCBvYmplY3RzLCBzbyBhcyB0byBwdXQgdGhlIHNvY2tldAotICBpbnRvIHRoZSBjbG9zZWQgc3RhdGUgd2l0aG91dCBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nIGZpbGUgZGVzY3JpcHRvci4KLQotLSBJc3N1ZSAjNDc3ODYzOiBFbWl0IGEgUmVzb3VyY2VXYXJuaW5nIGF0IHNodXRkb3duIGlmIGdjLmdhcmJhZ2UgaXMgbm90IGVtcHR5LgotCi0tIElzc3VlICM2ODY5OiBGaXggYSByZWZjb3VudCBwcm9ibGVtIGluIHRoZSBfY3R5cGVzIGV4dGVuc2lvbi4KLQotLSBJc3N1ZSAjNTUwNDogY3R5cGVzIHNob3VsZCBub3cgd29yayB3aXRoIHN5c3RlbXMgd2hlcmUgbW1hcCBjYW4ndCBiZQotICBQUk9UX1dSSVRFIGFuZCBQUk9UX0VYRUMuCi0KLS0gSXNzdWUgIzk1MDc6IE5hbWVkIHR1cGxlIHJlcHIgd2lsbCBub3cgYXV0b21hdGljYWxseSBkaXNwbGF5IHRoZSByaWdodCBuYW1lIGluCi0gIGEgdHVwbGUgc3ViY2xhc3MuCi0KLS0gSXNzdWUgIzkzMjQ6IEFkZCBwYXJhbWV0ZXIgdmFsaWRhdGlvbiB0byBzaWduYWwuc2lnbmFsIG9uIFdpbmRvd3MgaW4gb3JkZXIgdG8KLSAgcHJldmVudCBjcmFzaGVzLgotCi0tIElzc3VlICM5NTI2OiBSZW1vdmUgc29tZSBvdXRkYXRlZCAoaW50KSBjYXN0cyB0aGF0IHdlcmUgcHJldmVudGluZyB0aGUgYXJyYXkKLSAgbW9kdWxlIGZyb20gd29ya2luZyBjb3JyZWN0bHkgd2l0aCBhcnJheXMgb2YgbW9yZSB0aGFuIDIqKjMxIGVsZW1lbnRzLgotCi0tIEZpeCBtZW1vcnkgbGVhayBpbiBzc2wuX3NzbC5fdGVzdF9kZWNvZGVfY2VydC4KLQotLSBJc3N1ZSAjODA2NTogRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lIG1vZHVsZSAoZnJvbSBmYWlsdXJlIHRvIGZyZWUgdGhlCi0gIHJlc3VsdCBvZiBoaXN0b3J5X2dldF9oaXN0b3J5X3N0YXRlKCkpLgotCi0tIElzc3VlICM5NDUwOiBGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUucmVwbGFjZV9oaXN0b3J5X2l0ZW0gYW5kCi0gIHJlYWRsaW5lLnJlbW92ZV9oaXN0b3J5X2l0ZW0gZm9yIHJlYWRsaW5lIHZlcnNpb24gPj0gNS4wLgotCi0tIElzc3VlICM4MTA1OiBWYWxpZGF0ZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvIG1tYXAubW1hcCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM4MDQ2OiBBZGQgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHN1cHBvcnQgYW5kIC5jbG9zZWQgcHJvcGVydHkgdG8gbW1hcAotICBvYmplY3RzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzc0NTE6IEltcHJvdmUgZGVjb2RpbmcgcGVyZm9ybWFuY2Ugb2YgSlNPTiBvYmplY3RzLCBhbmQgcmVkdWNlIHRoZQotICBtZW1vcnkgY29uc3VtcHRpb24gb2Ygc2FpZCBkZWNvZGVkIG9iamVjdHMgd2hlbiB0aGV5IHVzZSB0aGUgc2FtZSBzdHJpbmdzIGFzCi0gIGtleXMuCi0KLS0gSXNzdWUgIzExMDA1NjI6IEZpeCBkZWVwLWNvcHlpbmcgb2Ygb2JqZWN0cyBkZXJpdmVkIGZyb20gdGhlIGxpc3QgYW5kIGRpY3QKLSAgdHlwZXMuICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5IGFuZCBCasO2cm4gTGluZHF2aXN0LgotCi0tIElzc3VlICM5NzUzOiBGaXhlZCBzb2NrZXQuZHVwLCB3aGljaCBkaWQgbm90IGFsd2F5cyB3b3JrIGNvcnJlY3RseSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM5NDIxOiBNYWRlIHRoZSBnZXQ8dHlwZT4gbWV0aG9kcyBjb25zaXN0ZW50bHkgYWNjZXB0IHRoZSB2YXJzIGFuZAotICBkZWZhdWx0IGFyZ3VtZW50cyBvbiBhbGwgcGFyc2VyIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzcwMDU6IEZpeGVkIG91dHB1dCBvZiBOb25lIHZhbHVlcyBmb3IgUmF3Q29uZmlnUGFyc2VyLndyaXRlIGFuZAotICBDb25maWdQYXJzZXIud3JpdGUuCi0KLS0gSXNzdWUgIzg5OTA6IGFycmF5LmZyb21zdHJpbmcoKSBhbmQgYXJyYXkudG9zdHJpbmcoKSBnZXQgcmVuYW1lZCB0bwotICBmcm9tYnl0ZXMoKSBhbmQgdG9ieXRlcygpLCByZXNwZWN0aXZlbHksIHRvIGF2b2lkIGNvbmZ1c2lvbi4gIEZ1cnRoZXJtb3JlLAotICBhcnJheS5mcm9tYnl0ZXMoKSwgYXJyYXkuZXh0ZW5kKCkgYXMgd2VsbCBhcyB0aGUgYXJyYXkuYXJyYXkoKSBjb25zdHJ1Y3RvciBub3cKLSAgYWNjZXB0IGJ5dGVhcnJheSBvYmplY3RzLiAgUGF0Y2ggYnkgVGhvbWFzIEpvbGxhbnMuCi0KLS0gSXNzdWUgIzgwODE2NDogRml4ZWQgc29ja2V0LmNsb3NlIHRvIGF2b2lkIHJlZmVyZW5jZXMgdG8gZ2xvYmFscywgdG8gYXZvaWQKLSAgaXNzdWVzIHdoZW4gc29ja2V0LmNsb3NlIGlzIGNhbGxlZCBmcm9tIGEgX19kZWxfXyBtZXRob2QuCi0KLS0gSXNzdWUgIzk3MDY6IHNzbCBtb2R1bGUgcHJvdmlkZXMgYSBiZXR0ZXIgZXJyb3IgaGFuZGxpbmcgaW4gdmFyaW91cwotICBjaXJjdW1zdGFuY2VzLgotCi0tIElzc3VlICMxODY4OiBFbGltaW5hdGUgc3VidGxlIHRpbWluZyBpc3N1ZXMgaW4gdGhyZWFkLWxvY2FsIG9iamVjdHMgYnkgZ2V0dGluZwotICByaWQgb2YgdGhlIGNhY2hlZCBjb3B5IG9mIHRocmVhZC1sb2NhbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4KLQotLSBJc3N1ZSAjMTUxMjc5MTogSW4gc2V0ZnJhbWVyYXRlKCkgaW4gdGhlIHdhdmUgbW9kdWxlLCBub24taW50ZWdyYWwgZnJhbWUgcmF0ZXMKLSAgYXJlIHJvdW5kZWQgdG8gdGhlIG5lYXJlc3QgaW50ZWdlci4KLQotLSBJc3N1ZSAjODc5NzogdXJsbGliMiBkb2VzIGEgcmV0cnkgZm9yIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgaW5zdGVhZCBvZgotICBmYWxsaW5nIGludG8gcmVjdXJzaW9uLgotCi0tIElzc3VlICMxMTk0MjIyOiBlbWFpbC51dGlscy5wYXJzZWRhdGUgbm93IHJldHVybnMgUkZDMjgyMiBjb21wbGlhbnQgZm91cgotICBjaGFyYWN0ZXIgeWVhcnMgZXZlbiBpZiB0aGUgbWVzc2FnZSBjb250YWlucyBSRkM4MjIgdHdvIGNoYXJhY3RlciB5ZWFycy4KLQotLSBJc3N1ZSAjODc1MDogRml4ZWQgTXV0YWJsZVNldCdzIG1ldGhvZHMgdG8gY29ycmVjdGx5IGhhbmRsZSByZWZsZXhpdmUKLSAgb3BlcmF0aW9ucyBvbiBpdHMgc2VsZiwgbmFtZWx5IHggLT0geCBhbmQgeCBePSB4LgotCi0tIElzc3VlICM5MTI5OiBzbXRwZC5weSBpcyB2dWxuZXJhYmxlIHRvIERvUyBhdHRhY2tzIGRlcml2aW5nIGZyb20gbWlzc2luZyBlcnJvcgotICBoYW5kbGluZyB3aGVuIGFjY2VwdGluZyBhIG5ldyBjb25uZWN0aW9uLgotCi0tIElzc3VlICM5NjAxOiBmdHBsaWIgbm93IHByb3ZpZGVzIGEgd29ya2Fyb3VuZCBmb3Igbm9uLWNvbXBsaWFudAotICBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyBJSVMgc2hpcHBlZCB3aXRoIFdpbmRvd3Mgc2VydmVyIDIwMDMgcmV0dXJuaW5nIGludmFsaWQKLSAgcmVzcG9uc2UgY29kZXMgZm9yIE1LRCBhbmQgUFdEIGNvbW1hbmRzLgotCi0tIElzc3VlICM2NTg3NDk6IGFzeW5jb3JlJ3MgY29ubmVjdCgpIG1ldGhvZCBub3cgY29ycmVjdGx5IGludGVycHJldHMgd2luc29jawotICBlcnJvcnMuCi0KLS0gSXNzdWUgIzk1MDE6IEZpeGVkIGxvZ2dpbmcgcmVncmVzc2lvbnMgaW4gY2xlYW51cCBjb2RlLgotCi0tIEZpeCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSB0byBza2lwIG1ldGhvZHMgaW5oZXJpdGVkIGZyb20gb2JqZWN0LgotCi0tIElzc3VlICM5NTcyOiBJbXBvcnRsaWIgc2hvdWxkIG5vdCByYWlzZSBhbiBleGNlcHRpb24gaWYgYSBkaXJlY3RvcnkgaXQgdGhvdWdodAotICBpdCBuZWVkZWQgdG8gY3JlYXRlIHdhcyBkb25lIGNvbmN1cnJlbnRseSBieSBhbm90aGVyIHByb2Nlc3MuCi0KLS0gSXNzdWUgIzk2MTc6IFNpZ25hbHMgcmVjZWl2ZWQgZHVyaW5nIGEgbG93LWxldmVsIHdyaXRlIG9wZXJhdGlvbiBhcmVuJ3QKLSAgaWdub3JlZCBieSB0aGUgYnVmZmVyZWQgSU8gbGF5ZXIgYW55bW9yZS4KLQotLSBJc3N1ZSAjODQzNTkwOiBNYWtlICJtYWNpbnRvc2giIGFuIGFsaWFzIHRvIHRoZSAibWFjX3JvbWFuIiBlbmNvZGluZy4KLQotLSBDcmVhdGUgb3MuZnNkZWNvZGUoKTogZGVjb2RlIGZyb20gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBzdXJyb2dhdGVlc2NhcGUKLSAgZXJyb3IgaGFuZGxlciwgb3Igc3RyaWN0IGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMzQ4ODogUHJvdmlkZSBjb252ZW5pZW50IHNob3J0aGFuZCBmdW5jdGlvbnMgYGBnemlwLmNvbXByZXNzYGAgYW5kCi0gIGBgZ3ppcC5kZWNvbXByZXNzYGAuICBPcmlnaW5hbCBwYXRjaCBieSBBbmFuZCBCLiBQaWxsYWkuCi0KLS0gSXNzdWUgIzg4MDc6IHBvcGxpYi5QT1AzX1NTTCBjbGFzcyBub3cgYWNjZXB0cyBhIGNvbnRleHQgcGFyYW1ldGVyLCB3aGljaCBpcyBhCi0gIHNzbC5TU0xDb250ZXh0IG9iamVjdCBhbGxvd2luZyBidW5kbGluZyBTU0wgY29uZmlndXJhdGlvbiBvcHRpb25zLAotICBjZXJ0aWZpY2F0ZXMgYW5kIHByaXZhdGUga2V5cyBpbnRvIGEgc2luZ2xlIChwb3RlbnRpYWxseSBsb25nLWxpdmVkKQotICBzdHJ1Y3R1cmUuCi0KLS0gSXNzdWUgIzg4NjY6IHBhcmFtZXRlcnMgcGFzc2VkIHRvIHNvY2tldC5nZXRhZGRyaW5mbyBjYW4gbm93IGJlIHNwZWNpZmllZCBhcwotICBzaW5nbGUga2V5d29yZCBhcmd1bWVudHMuCi0KLS0gQWRkcmVzcyBYWFggY29tbWVudCBpbiBkaXMucHkgYnkgaGF2aW5nIGluc3BlY3QucHkgcHJlZmVyIHRvIHJldXNlIHRoZSBkaXMucHkKLSAgY29tcGlsZXIgZmxhZyB2YWx1ZXMgb3ZlciBkZWZpbmluZyBpdHMgb3duLgotCi0tIElzc3VlICM5MTQ3OiBBZGRlZCBkaXMuY29kZV9pbmZvKCkgd2hpY2ggaXMgc2ltaWxhciB0byBzaG93X2NvZGUoKSBidXQgcmV0dXJucwotICBmb3JtYXR0ZWQgY29kZSBpbmZvcm1hdGlvbiBpbiBhIHN0cmluZyByYXRoZXIgdGhhbiBkaXNwbGF5aW5nIG9uIHNjcmVlbi4KLQotLSBJc3N1ZSAjOTU2NzogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyBhZGRzIGEgX193cmFwcGVkX18gYXR0cmlidXRlCi0gIHBvaW50aW5nIHRvIHRoZSBvcmlnaW5hbCBjYWxsYWJsZS4KLQotLSBJc3N1ZSAjMzQ0NTogZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyIG5vdyB0b2xlcmF0ZXMgbWlzc2luZyBhdHRyaWJ1dGVzIG9uCi0gIHdyYXBwZWQgY2FsbGFibGVzLgotCi0tIElzc3VlICM1ODY3OiBBZGQgYWJjLmFic3RyYWN0Y2xhc3NtZXRob2QgYW5kIGFiYy5hYnN0cmFjdHN0YXRpY21ldGhvZC4KLQotLSBJc3N1ZSAjOTYwNTogcG9zaXguZ2V0bG9naW4oKSBkZWNvZGVzIHRoZSB1c2VybmFtZSB3aXRoIGZpbGUgZmlsZXN5c3RlbQotICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgotCi0tIElzc3VlICM5NjA0OiBwb3NpeC5pbml0Z3JvdXBzKCkgZW5jb2RlcyB0aGUgdXNlcm5hbWUgdXNpbmcgdGhlIGZpbGV5c3RlbQotICBlbmNvZGluZyBhbmQgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIuIFBhdGNoIHdyaXR0ZW4gYnkgRGF2aWQgV2F0c29uLgotCi0tIElzc3VlICM5NjAzOiBwb3NpeC50dHluYW1lKCkgYW5kIHBvc2l4LmN0ZXJtaWQoKSBkZWNvZGUgdGhlIHRlcm1pbmFsIG5hbWUKLSAgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcgYW5kIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLiBQYXRjaCB3cml0dGVuCi0gIGJ5IERhdmlkIFdhdHNvbi4KLQotLSBJc3N1ZSAjNzY0NzogVGhlIHBvc2l4IG1vZHVsZSBub3cgaGFzIHRoZSBTVF9SRE9OTFkgYW5kIFNUX05PU1VJRCBjb25zdGFudHMsCi0gIGZvciB1c2Ugd2l0aCB0aGUgc3RhdHZmcygpIGZ1bmN0aW9uLiAgUGF0Y2ggYnkgQWRhbSBKYWNrc29uLgotCi0tIElzc3VlICM4Njg4OiBNQU5JRkVTVCBmaWxlcyBjcmVhdGVkIGJ5IGRpc3R1dGlscyBub3cgaW5jbHVkZSBhIG1hZ2ljIGNvbW1lbnQKLSAgaW5kaWNhdGluZyB0aGV5IGFyZSBnZW5lcmF0ZWQuICBNYW51YWxseSBtYWludGFpbmVkIE1BTklGRVNUcyB3aXRob3V0IHRoaXMKLSAgbWFya2VyIHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIG9yIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzc0Njc6IHdoZW4gcmVhZGluZyBhIGZpbGUgZnJvbSBhIFpJUCBhcmNoaXZlLCBpdHMgQ1JDIGlzIGNoZWNrZWQgYW5kIGEKLSAgQmFkWmlwZmlsZSBlcnJvciBpcyByYWlzZWQgaWYgaXQgZG9lc24ndCBtYXRjaCAoYXMgdXNlZCB0byBiZSB0aGUgY2FzZSBpbgotICBQeXRob24gMi41IGFuZCBlYXJsaWVyKS4KLQotLSBJc3N1ZSAjOTU1MDogYSBCdWZmZXJlZFJlYWRlciBjb3VsZCBpc3N1ZSBhbiBhZGRpdGlvbmFsIHJlYWQgd2hlbiB0aGUgb3JpZ2luYWwKLSAgcmVhZCByZXF1ZXN0IGhhZCBiZWVuIHNhdGlzZmllZCwgd2hpY2ggY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IHdoZW4gdGhlCi0gIHVuZGVybHlpbmcgcmF3IElPIGNoYW5uZWwgd2FzIGUuZy4gYSBzb2NrZXQuICBSZXBvcnQgYW5kIG9yaWdpbmFsIHBhdGNoIGJ5Ci0gIEphc29uIFYuIE1pbGxlci4KLQotLSBJc3N1ZSAjMzc1NzogdGhyZWFkLWxvY2FsIG9iamVjdHMgbm93IHN1cHBvcnQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbi4KLSAgVGhyZWFkLWxvY2FsIG9iamVjdHMgaW52b2x2ZWQgaW4gcmVmZXJlbmNlIGN5Y2xlcyB3aWxsIGJlIGRlYWxsb2NhdGVkIHRpbWVseQotICBieSB0aGUgY3ljbGljIEdDLCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgotCi0tIElzc3VlICM5NDUyOiBBZGQgcmVhZF9maWxlLCByZWFkX3N0cmluZywgYW5kIHJlYWRfZGljdCB0byB0aGUgY29uZmlncGFyc2VyCi0gIEFQSTsgbmV3IHNvdXJjZSBhdHRyaWJ1dGUgdG8gZXhjZXB0aW9ucy4KLQotLSBJc3N1ZSAjNjIzMTogRml4IHhtbC5ldHJlZS5FbGVtZW50SW5jbHVkZSB0byBpbmNsdWRlIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50Ci0gIG5vZGUuCi0KLS0gSXNzdWUgIzgwNDc6IEZpeCB0aGUgeG1sLmV0cmVlIHNlcmlhbGl6ZXIgdG8gcmV0dXJuIGJ5dGVzIGJ5IGRlZmF1bHQuICBVc2UKLSAgYGBlbmNvZGluZz0idW5pY29kZSJgYCB0byBnZW5lcmF0ZSBhIFVuaWNvZGUgc3RyaW5nLgotCi0tIElzc3VlICM4MjgwOiB1cmxsaWIyJ3MgUmVxdWVzdCBtZXRob2Qgd2lsbCByZW1vdmUgZnJhZ21lbnRzIGluIHRoZSB1cmwuICBUaGlzCi0gIGlzIGhvdyBpdCBpcyBzdXBwb3NlZCB0byB3b3JrLCB3Z2V0IGFuZCBjdXJsIGRvIHRoZSBzYW1lLiAgUHJldmlvdXMgYmVoYXZpb3IKLSAgd2FzIHdyb25nLgotCi0tIElzc3VlICM2NjgzOiBGb3IgU01UUCBsb2dpbnMgd2Ugbm93IHRyeSBhbGwgYXV0aGVudGljYXRpb24gbWV0aG9kcyBhZHZlcnRpc2VkCi0gIGJ5IHRoZSBzZXJ2ZXIuICBNYW55IHNlcnZlcnMgYXJlIGJ1Z2d5IGFuZCBhZHZlcnRpc2UgYXV0aGVudGljYXRpb24gbWV0aG9kcwotICB0aGV5IGRvIG5vdCBzdXBwb3J0IGluIHJlYWxpdHkuCi0KLS0gSXNzdWUgIzg4MTQ6IGZ1bmN0aW9uIGFubm90YXRpb25zICh0aGUgYGBfX2Fubm90YXRpb25zX19gYCBhdHRyaWJ1dGUpIGFyZSBub3cKLSAgaW5jbHVkZWQgaW4gdGhlIHNldCBvZiBhdHRyaWJ1dGVzIGNvcGllZCBieSBkZWZhdWx0IGJ5IGZ1bmN0b29scy53cmFwcyBhbmQKLSAgZnVuY3Rvb2xzLnVwZGF0ZV93cmFwcGVyLiAgUGF0Y2ggYnkgVGVycmVuY2UgQ29sZS4KLQotLSBJc3N1ZSAjMjk0NDogYXN5bmNvcmUgZG9lc24ndCBoYW5kbGUgY29ubmVjdGlvbiByZWZ1c2VkIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjNDE4NDogUHJpdmF0ZSBhdHRyaWJ1dGVzIG9uIHNtdHBkLlNNVFBDaGFubmVsIG1hZGUgcHVibGljIGFuZCBkZXByZWNhdGUKLSAgdGhlIHByaXZhdGUgYXR0cmlidXRlcy4gQWRkIHRlc3RzIGZvciBzbXRwZCBtb2R1bGUuCi0KLS0gSXNzdWUgIzMxOTY6IGVtYWlsIGhlYWRlciBkZWNvZGluZyBpcyBub3cgZm9yZ2l2aW5nIGlmIGFuIFJGQzIwNDcgZW5jb2RlZCB3b3JkCi0gIGVuY29kZWQgaW4gYmFzZTY0IGlzIGxhY2tpbmcgcGFkZGluZy4KLQotLSBJc3N1ZSAjOTQ0NDogQXJncGFyc2Ugbm93IHVzZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcHJlZml4X2NoYXJzIGFzIHRoZSBvcHRpb24KLSAgY2hhcmFjdGVyIGZvciB0aGUgYWRkZWQgJ2gvaGVscCcgb3B0aW9uIGlmIHByZWZpeF9jaGFycyBkb2VzIG5vdCBjb250YWluIGEKLSAgJy0nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzczNzI6IEZpeCBwc3RhdHMgcmVncmVzc2lvbiB3aGVuIHN0cmlwcGluZyBwYXRocyBmcm9tIHByb2ZpbGUgZGF0YQotICBnZW5lcmF0ZWQgd2l0aCB0aGUgcHJvZmlsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzk0Mjg6IEZpeCBydW5uaW5nIHNjcmlwdHMgd2l0aCB0aGUgcHJvZmlsZS9jUHJvZmlsZSBtb2R1bGVzIGZyb20gdGhlCi0gIGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjNzc4MTogRml4IHJlc3RyaWN0aW5nIHN0YXRzIGJ5IGVudHJ5IGNvdW50cyBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlCi0gIGJyb3dzZXIuCi0KLS0gSXNzdWUgIzkyMDk6IERvIG5vdCBjcmFzaCBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIgb24gaW52YWxpZCByZWd1bGFyCi0gIGV4cHJlc3Npb25zLgotCi0tIFVwZGF0ZSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCB0byBtYXRjaCB0aGUgaW1wbGVtZW50YXRpb24gaW4gUHkyLjcgKGJhc2VkIG9uCi0gIGxpc3RzIGluc3RlYWQgb2Ygd2Vha2x5IHJlZmVyZW5jZWQgTGluayBvYmplY3RzKS4KLQotLSBJc3N1ZSAjODM5NzogUmFpc2UgYW4gZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIG1peCBpdGVyYXRpb24gYW5kIHJlZ3VsYXIgcmVhZHMKLSAgb24gYSBCWjJGaWxlIG9iamVjdCwgcmF0aGVyIHRoYW4gcmV0dXJuaW5nIGluY29ycmVjdCByZXN1bHRzLgotCi0tIElzc3VlICM5NDQ4OiBGaXggYSBsZWFrIG9mIE9TIHJlc291cmNlcyAobXV0ZXhlcyBvciBzZW1hcGhvcmVzKSB3aGVuCi0gIHJlLWluaXRpYWxpemluZyBhIGJ1ZmZlcmVkIElPIG9iamVjdCBieSBjYWxsaW5nIGl0cyBgYF9faW5pdF9fYGAgbWV0aG9kLgotCi0tIElzc3VlICMxNzEzOiBGaXggb3MucGF0aC5pc21vdW50KCksIHdoaWNoIHJldHVybmVkIHRydWUgZm9yIHN5bWJvbGljIGxpbmtzCi0gIGFjcm9zcyBkZXZpY2VzLgotCi0tIElzc3VlICM4ODI2OiBQcm9wZXJseSBsb2FkIG9sZC1zdHlsZSAiZXhwaXJlcyIgYXR0cmlidXRlIGluIGh0dHAuY29va2llcy4KLQotLSBJc3N1ZSAjMTY5MDEwMzogRml4IGluaXRpYWwgbmFtZXNwYWNlIGZvciBjb2RlIHJ1biB3aXRoIHRyYWNlLm1haW4oKS4KLQotLSBJc3N1ZSAjNzM5NTogRml4IHRyYWNlYmFja3MgaW4gcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIuCi0KLS0gSXNzdWUgIzgyMzA6IEZpeCBMaWIvdGVzdC9zb3J0cGVyZi5weS4KLQotLSBJc3N1ZSAjODYyMDogd2hlbiBhIGNtZC5DbWQoKSBpcyBmZWQgaW5wdXQgdGhhdCByZWFjaGVzIEVPRiB3aXRob3V0IGEgZmluYWwKLSAgbmV3bGluZSwgaXQgbm8gbG9uZ2VyIHRydW5jYXRlcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3QgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM1MTQ2OiBIYW5kbGUgVUlEIFRIUkVBRCBjb21tYW5kIGNvcnJlY3RseSBpbiBpbWFwbGliLgotCi0tIElzc3VlICM1MTQ3OiBGaXggdGhlIGhlYWRlciBnZW5lcmF0ZWQgZm9yIGNvb2tpZSBmaWxlcyB3cml0dGVuIGJ5Ci0gIGh0dHAuY29va2llamFyLk1vemlsbGFDb29raWVKYXIuCi0KLS0gSXNzdWUgIzgxOTg6IEluIHB5ZG9jLCBvdXRwdXQgYWxsIGhlbHAgdGV4dCB0byB0aGUgY29ycmVjdCBzdHJlYW0gd2hlbgotICBzeXMuc3Rkb3V0IGlzIHJlYXNzaWduZWQuCi0KLS0gSXNzdWUgIzc5MDk6IERvIG5vdCB0b3VjaCBwYXRocyB3aXRoIHRoZSBzcGVjaWFsIHByZWZpeGVzIGBgXFwuXGBgIG9yIGBgXFw/XGBgCi0gIGluIG50cGF0aC5ub3JtcGF0aCgpLgotCi0tIElzc3VlICMxMjg2OiBBbGxvdyB1c2luZyBmaWxlaW5wdXQuRmlsZUlucHV0IGFzIGEgY29udGV4dCBtYW5hZ2VyLgotCi0tIEFkZCBscnVfY2FjaGUoKSBkZWNvcmF0b3IgdG8gdGhlIGZ1bmN0b29scyBtb2R1bGUuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIEZpeCBgYFRvb2xzL3NjcmlwdHMvY2hlY2tweWMucHlgYCBhZnRlciBQRVAgMzE0Ny4KLQotLSBJc3N1ZSAjODg2NzogRml4IGBgVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weWBgIHRvIHdvcmsgd2l0aCBmaWxlcyBjb250YWluaW5nCi0gIG5vbi1BU0NJSSBjb250ZW50LgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjOTYwMTogUHJvdmlkZSBhIHRlc3QgY2FzZSBmb3IgZnRwbGliLnBhcnNlMjU3LgotCi0tIElzc3VlICM4ODU3OiBQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8uCi0KLS0gSXNzdWUgIzc1NjQ6IFNraXAgdGVzdF9pb2N0bCBpZiBhbm90aGVyIHByb2Nlc3MgaXMgYXR0YWNoZWQgdG8gL2Rldi90dHkuCi0KLS0gSXNzdWUgIzg0MzM6IEZpeCB0ZXN0X2N1cnNlcyBmYWlsdXJlIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbmN1cnNlcy4KLQotLSBJc3N1ZSAjOTQ5NjogUHJvdmlkZSBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBybGNvbXBsZXRlciBtb2R1bGUuICBQYXRjaCBieQotICBNaWNoZWxlIE9ycsO5LgotCi0tIElzc3VlICM4Njg3OiBwcm92aWRlIGEgdGVzdCBzdWl0ZSBmb3Igc2NoZWQucHkgbW9kdWxlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTMwMzQzNDogR2VuZXJhdGUgWklQIGZpbGUgY29udGFpbmluZyBhbGwgUERCcy4KLQotLSBJc3N1ZSAjOTE5MzogUEVQIDMxNDkgaXMgYWNjZXB0ZWQuCi0KLS0gSXNzdWUgIzMxMDE6IEhlbHBlciBmdW5jdGlvbnMgX2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfYWRkX29uZV90b19pbmRleF9GKCkKLSAgYmVjb21lIF9QeV9hZGRfb25lX3RvX2luZGV4X0MoKSBhbmQgX1B5X2FkZF9vbmVfdG9faW5kZXhfRigpLCByZXNwZWN0aXZlbHkuCi0KLS0gSXNzdWUgIzk3MDA6IGRlZmluZSBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTIHVuZGVyIEFJWCA2LnguICBQYXRjaCBieQotICBTw6liYXN0aWVuIFNhYmzDqS4KLQotLSBEb24ndCBydW4gcGdlbiB0d2ljZSB3aGVuIHVzaW5nIG1ha2UgLWouCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4yIEFscGhhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDEtQXVnLTIwMTAqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM4OTkxOiBjb252ZXJ0YnVmZmVyKCkgcmVqZWN0cyBkaXNjb250aWdpb3VzIGJ1ZmZlcnMuCi0KLS0gSXNzdWUgIzc2MTY6IEZpeCBjb3B5aW5nIG9mIG92ZXJsYXBwaW5nIG1lbW9yeXZpZXcgc2xpY2VzIHdpdGggdGhlIEludGVsCi0gIGNvbXBpbGVyLgotCi0tIElzc3VlICM4NDEzOiBzdHJ1Y3RzZXF1ZW5jZSBub3cgc3ViY2xhc3NlcyB0dXBsZS4KLQotLSBJc3N1ZSAjODI3MTogZHVyaW5nIHRoZSBkZWNvZGluZyBvZiBhbiBpbnZhbGlkIFVURi04IGJ5dGUgc2VxdWVuY2UsIG9ubHkgdGhlCi0gIHN0YXJ0IGJ5dGUgYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZShzKSBhcmUgbm93IGNvbnNpZGVyZWQgaW52YWxpZCwgaW5zdGVhZCBvZgotICB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNwZWNpZmllZCBieSB0aGUgc3RhcnQgYnl0ZS4gIEUuZy46Ci0gICdceGYxXHg4MEFCJy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKSBub3cgcmV0dXJucyB1J1x1ZmZmZEFCJyBhbmQgcmVwbGFjZXMKLSAgd2l0aCBVK0ZGRkQgb25seSB0aGUgc3RhcnQgYnl0ZSAoJ1x4ZjEnKSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlICgnXHg4MCcpCi0gIGV2ZW4gaWYgJ1x4ZjEnIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgNC1ieXRlcyBzZXF1ZW5jZS4gIFByZXZpb3VzIHZlcnNpb25zCi0gIHJldHVybmVkIGEgc2luZ2xlIHUnXHVmZmZkJy4KLQotLSBJc3N1ZSAjOTAxMTogQSBuZWdhdGVkIGltYWdpbmFyeSBsaXRlcmFsIChlLmcuLCAiLTdqIikgbm93IGhhcyByZWFsIHBhcnQgLTAuMAotICByYXRoZXIgdGhhbiAwLjAuICBTbyAiLTdqIiBpcyBub3cgZXhhY3RseSBlcXVpdmFsZW50IHRvICItKDdqKSIuCi0KLS0gQmUgbW9yZSBzcGVjaWZpYyBpbiBlcnJvciBtZXNzYWdlcyBhYm91dCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjODk0OTogInoiIGZvcm1hdCBvZiBQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgZG9lc24ndCBhY2NlcHQgYnl0ZXMKLSAgb2JqZWN0cywgYXMgZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM2NTQzOiBXcml0ZSB0aGUgdHJhY2ViYWNrIGluIHRoZSB0ZXJtaW5hbCBlbmNvZGluZyBpbnN0ZWFkIG9mIHV0Zi04LgotICBGaXggdGhlIGVuY29kaW5nIG9mIHRoZSBtb2R1bGVzIGZpbGVuYW1lLiAgUGF0Y2ggd3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdAotICBkJ0FyYy4KLQotLSBJc3N1ZSAjOTAxMTogUmVtb3ZlIGJ1Z2d5IGFuZCB1bm5lY2Vzc2FyeSAoaW4gMy54KSBTVC0+QVNUIGNvbXBpbGF0aW9uIGNvZGUKLSAgZGVhbGluZyB3aXRoIHVuYXJ5IG1pbnVzIGFwcGxpZWQgdG8gYSBjb25zdGFudC4gIFRoZSByZW1vdmVkIGNvZGUgd2FzIG11dGF0aW5nCi0gIHRoZSBTVCwgY2F1c2luZyBhIHNlY29uZCBjb21waWxhdGlvbiB0byBmYWlsLgotCi0tIElzc3VlICM4NTA5OTc6IG1iY3MgZW5jb2RpbmcgKFdpbmRvd3Mgb25seSkgaGFuZGxlcyBlcnJvcnMgYXJndW1lbnQ6IHN0cmljdAotICBtb2RlIHJhaXNlcyB1bmljb2RlIGVycm9ycy4gIFRoZSBlbmNvZGVyIG9ubHkgc3VwcG9ydHMgInN0cmljdCIgYW5kICJyZXBsYWNlIgotICBlcnJvciBoYW5kbGVycywgdGhlIGRlY29kZXIgb25seSBzdXBwb3J0cyAic3RyaWN0IiBhbmQgImlnbm9yZSIgZXJyb3IKLSAgaGFuZGxlcnMuICBQYXRjaCB3cml0dGVuIGJ5IE1hcmsgSGFtbW9uZC4KLQotLSBJc3N1ZSAjODg1MDogUmVtb3ZlICJ3IiBhbmQgIncjIiBmb3JtYXRzIGZyb20gUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zLCB1c2UKLSAgIncqIiBmb3JtYXQgaW5zdGVhZC4gQWRkIHRlc3RzIGZvciAidyoiIGZvcm1hdC4KLQotLSBJc3N1ZSAjODU5MjogUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb25zIHJhaXNlIGEgVHlwZUVycm9yIGZvciAieSIsICJ1IiBhbmQgIloiCi0gIGZvcm1hdHMgaWYgdGhlIHN0cmluZyBjb250YWlucyBhIG51bGwgYnl0ZS9jaGFyYWN0ZXIuICBXcml0ZSB1bml0IHRlc3RzIGZvcgotICBzdHJpbmcgZm9ybWF0cy4KLQotLSBJc3N1ZSAjNzQ5MDogVG8gZmFjaWxpdGF0ZSBzaGFyaW5nIG9mIGRvY3Rlc3RzIGJldHdlZW4gMi54IGFuZCAzLnggdGVzdAotICBzdWl0ZXMsIHRoZSBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCBkaXJlY3RpdmUgbm93IGFsc28gaWdub3JlcyB0aGUgbW9kdWxlCi0gIGxvY2F0aW9uIG9mIHRoZSByYWlzZWQgZXhjZXB0aW9uLgotCi0tIElzc3VlICM4OTY5OiBPbiBXaW5kb3dzLCB1c2UgbWJjcyBjb2RlYyBpbiBzdHJpY3QgbW9kZSB0byBlbmNvZGUgYW5kIGRlY29kZQotICBmaWxlbmFtZXMgYW5kIGVuYWJsZSBvcy5mc2VuY29kZSgpLgotCi0tIElzc3VlICM5MDU4OiBSZW1vdmUgYXNzZXJ0aW9ucyBhYm91dCBJTlRfTUFYIGluIFVuaWNvZGVEZWNvZGVFcnJvci4KLQotLSBJc3N1ZSAjODk0MTogRGVjb2RpbmcgYmlnIGVuZGlhbiBVVEYtMzIgZGF0YSBpbiBVQ1MtMiBidWlsZHMgY291bGQgY3Jhc2ggdGhlCi0gIGludGVycHJldGVyIHdpdGggY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKGhpZ2hlciB0aGFuCi0gIDB4MTAwMDApLgotCi0tIElzc3VlICM4OTUwOiAoU2VlIGFsc28gaXNzdWUgIzUwODApLiAgUHlfQXJnUGFyc2UqKCkgZnVuY3Rpb25zIG5vdyByYWlzZQotICBUeXBlRXJyb3IgaW5zdGVhZCBvZiBnaXZpbmcgYSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhIGZsb2F0IGlzIHBhcnNlZCB1c2luZwotICB0aGUgJ0wnIGNvZGUgKGZvciBsb25nIGxvbmcpLiAgKEFsbCBvdGhlciBpbnRlZ2VyIGNvZGVzIGFscmVhZHkgcmFpc2UKLSAgVHlwZUVycm9yIGluIHRoaXMgY2FzZS4pCi0KLS0gSXNzdWUgIzg5MjI6IE5vcm1hbGl6ZSB0aGUgZW5jb2RpbmcgbmFtZSBpbiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKCkgdG8KLSAgZW5hYmxlIHNob3J0Y3V0cyBmb3IgdXBwZXIgY2FzZSBlbmNvZGluZyBuYW1lLiBBZGQgYWxzbyBhIHNob3J0Y3V0IGZvcgotICAiaXNvLTg4NTktMSIgaW4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygpIGFuZCBQeVVuaWNvZGVfRGVjb2RlKCkuCi0KLS0gSXNzdWUgIzg4Mzg6IFJlbW92ZSBjb2RlY3MuY2hhcmJ1ZmZlcl9lbmNvZGUoKSBmdW5jdGlvbi4gIFRoZSBidWZmZXIgcHJvdG9jb2wKLSAgZG9lc24ndCBzdXBwb3J0ICJjaGFyIGJ1ZmZlciIgYW55bW9yZSBpbiBQeXRob24gMy4KLQotLSBJc3N1ZSAjODMzOTogUmVtb3ZlICJ0IyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucywgdXNlICJzIyIgb3IgInMqIgotICBpbnN0ZWFkLiAgY29kZWNzLmNoYXJidWZmZXJfZW5jb2RlKCkgbm93IGFjY2VwdHMgbW9kaWZpYWJsZSBidWZmZXIgb2JqZWN0cwotICBsaWtlIGJ5dGVhcnJheS4KLQotLSBJc3N1ZSAjODgzNzogUmVtb3ZlICJPPyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucy4gIFRoZSBmb3JtYXQgaXMgbm8KLSAgdXNlZCBhbnltb3JlIGFuZCBpdCB3YXMgbmV2ZXIgZG9jdW1lbnRlZC4KLQotLSBJbiBzdHIuZm9ybWF0KCksIHJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGluZGV4ZXMgdG8gYXJndW1lbnRzIGFyZSB0b28gbGFyZ2UuCi0KLS0gSXNzdWUgIzI4NDQ6IE1ha2UgaW50KCc0MicsIG4pIGNvbnNpc3RlbnRseSByYWlzZSBWYWx1ZUVycm9yIGZvciBpbnZhbGlkCi0gIGludGVnZXJzIG4gKGluY2x1ZGluZyBuID0gLTkwOSkuCi0KLS0gSXNzdWUgIzgxODg6IEludHJvZHVjZSBhIG5ldyBzY2hlbWUgZm9yIGNvbXB1dGluZyBoYXNoZXMgb2YgbnVtYmVycyAoaW5zdGFuY2VzCi0gIG9mIGludCwgZmxvYXQsIGNvbXBsZXgsIGRlY2ltYWwuRGVjaW1hbCBhbmQgZnJhY3Rpb25zLkZyYWN0aW9uKSB0aGF0IG1ha2VzIGl0Ci0gIGVhc3kgdG8gbWFpbnRhaW4gdGhlIGludmFyaWFudCB0aGF0IGhhc2goeCkgPT0gaGFzaCh5KSB3aGVuZXZlciB4IGFuZCB5IGhhdmUKLSAgZXF1YWwgdmFsdWUuCi0KLS0gSXNzdWUgIzg3NDg6IEZpeCB0d28gaXNzdWVzIHdpdGggY29tcGFyaXNvbnMgYmV0d2VlbiBjb21wbGV4IGFuZCBpbnRlZ2VyCi0gIG9iamVjdHMuICAoMSkgVGhlIGNvbXBhcmlzb24gY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIFRydWUgaW4gc29tZSBjYXNlcwotICAoMioqNTMrMSA9PSBjb21wbGV4KDIqKjUzKSA9PSAyKio1MyksIGJyZWFraW5nIHRyYW5zaXRpdml0eSBvZiBlcXVhbGl0eS4KLSAgKDIpIFRoZSBjb21wYXJpc29uIHJhaXNlZCBhbiBPdmVyZmxvd0Vycm9yIGZvciBsYXJnZSBpbnRlZ2VycywgbGVhZGluZyB0bwotICB1bnByZWRpY3RhYmxlIGV4Y2VwdGlvbnMgd2hlbiBjb21iaW5pbmcgaW50ZWdlcnMgYW5kIGNvbXBsZXggb2JqZWN0cyBpbiBzZXRzCi0gIG9yIGRpY3RzLgotCi0tIElzc3VlICM4NzY2OiBJbml0aWFsaXplIF93YXJuaW5ncyBtb2R1bGUgYmVmb3JlIGltcG9ydGluZyB0aGUgZmlyc3QgbW9kdWxlLgotICBGaXggYSBjcmFzaCBpZiBhbiBlbXB0eSBkaXJlY3RvcnkgY2FsbGVkICJlbmNvZGluZ3MiIGV4aXN0cyBpbiBzeXMucGF0aC4KLQotLSBJc3N1ZSAjODU4OTogRGVjb2RlIFBZVEhPTldBUk5JTkdTIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGggdGhlIGZpbGUgc3lzdGVtCi0gIGVuY29kaW5nIGFuZCBzdXJyb2dhdGVlc2NhcGUgZXJyb3IgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBsb2NhbGUgZW5jb2RpbmcgdG8KLSAgYmUgY29uc2lzdGVudCB3aXRoIG9zLmVudmlyb24uICBBZGQgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUoKSBmdW5jdGlvbi4KLQotLSBQeU9iamVjdF9EdW1wKCkgZW5jb2RlcyB1bmljb2RlIG9iamVjdHMgdG8gdXRmOCB3aXRoIGJhY2tzbGFzaHJlcGxhY2UgKGluc3RlYWQKLSAgb2Ygc3RyaWN0KSBlcnJvciBoYW5kbGVyIHRvIGVzY2FwZSBzdXJyb2dhdGVzLgotCi0tIElzc3VlICM4NzE1OiBDcmVhdGUgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdCgpIGZ1bmN0aW9uOiBFbmNvZGUgYSBVbmljb2RlCi0gIG9iamVjdCB0byBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIHdpdGggdGhlICJzdXJyb2dhdGVlc2NhcGUiIGVycm9yCi0gIGhhbmRsZXIsIGFuZCByZXR1cm4gYnl0ZXMuICBJZiBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIGlzIG5vdCBzZXQsIGZhbGwKLSAgYmFjayB0byBVVEYtOC4KLQotLSBFbmFibGUgc2hvcnRjdXRzIGZvciBjb21tb24gZW5jb2RpbmdzIGluIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBmb3IgYW55Ci0gIGVycm9yIGhhbmRsZXIsIG5vdCBvbmx5IHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgKHN0cmljdCkuCi0KLS0gSXNzdWUgIzg2MTA6IExvYWQgZmlsZSBzeXN0ZW0gY29kZWMgYXQgc3RhcnR1cCwgYW5kIGRpc3BsYXkgYSBmYXRhbCBlcnJvciBvbgotICBmYWlsdXJlLiAgU2V0IHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyB0byB1dGYtOCAoaW5zdGVhZCBvZiBOb25lKSBpZiBnZXR0aW5nCi0gIHRoZSBsb2NhbGUgZW5jb2RpbmcgZmFpbGVkLCBvciBpZiBubF9sYW5naW5mbyhDT0RFU0VUKSBmdW5jdGlvbiBpcyBtaXNzaW5nLgotCi0tIFB5RmlsZV9Gcm9tRmQoKSB1c2VzIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoKSBpbnN0ZWFkIG9mCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCkgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZSBmaWxlbmFtZSBhbmQgdXNlIHRoZSByaWdodAotICBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNzUwNzogUXVvdGUgIiEiIGluIHBpcGVzLnF1b3RlKCk7IGl0IGlzIHNwZWNpYWwgdG8gc29tZSBzaGVsbHMuCi0KLS0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoKSB1c2VzIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM4NDE5OiBQcmV2ZW50IHRoZSBkaWN0IGNvbnN0cnVjdG9yIGZyb20gYWNjZXB0aW5nIG5vbi1zdHJpbmcga2V5d29yZAotICBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzgxMjQ6IFB5U3lzX1dyaXRlU3Rkb3V0KCkgYW5kIFB5U3lzX1dyaXRlU3RkZXJyKCkgZG9uJ3QgZXhlY3V0ZQotICBpbmRpcmVjdGx5IFB5dGhvbiBzaWduYWwgaGFuZGxlcnMgYW55bW9yZSBiZWNhdXNlIG15d3JpdGUoKSBpZ25vcmVzIGV4Y2VwdGlvbnMKLSAgKEtleWJvYXJkSW50ZXJydXB0KS4KLQotLSBJc3N1ZSAjODA5MjogRml4IFB5VW5pY29kZV9FbmNvZGVVVEY4KCkgdG8gc3VwcG9ydCBlcnJvciBoYW5kbGVyIHByb2R1Y2luZwotICB1bmljb2RlIHN0cmluZyAoZWcuIGJhY2tzbGFzaHJlcGxhY2UpLgotCi0tIElzc3VlICM4NDg1OiBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKSBkb2Vzbid0IGFjY2VwdCBieXRlZWFycmF5IG9iamVjdHMKLSAgYW55bW9yZSwgeW91IGhhdmUgdG8gY29udmVydCB5b3VyIGJ5dGVhcnJheSBmaWxlbmFtZXMgdG8gYnl0ZXMuCi0KLS0gSXNzdWUgIzczMzI6IFJlbW92ZSB0aGUgMTZLQiBzdGFjay1iYXNlZCBidWZmZXIgaW4KLSAgUHlNYXJzaGFsX1JlYWRMYXN0T2JqZWN0RnJvbUZpbGUsIHdoaWNoIGRvZXNuJ3QgYnJpbmcgYW55IG5vdGljZWFibGUgYmVuZWZpdAotICBjb21wYXJlZCB0byB0aGUgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiBmYWxsYmFjay4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzCi0gIE5hdGFsaS4KLQotLSBJc3N1ZSAjODQxNzogUmFpc2UgYW4gT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGludGVnZXIgbGFyZ2VyIHRoYW4gc3lzLm1heHNpemUgaXMKLSAgcGFzc2VkIHRvIGJ5dGVzIG9yIGJ5dGVhcnJheS4KLQotLSBJc3N1ZSAjNzMwMTogQWRkIGVudmlyb25tZW50IHZhcmlhYmxlICRQWVRIT05XQVJOSU5HUy4KLQotLSBJc3N1ZSAjODMyOTogRG9uJ3QgcmV0dXJuIHRoZSBzYW1lIGxpc3RzIGZyb20gc2VsZWN0LnNlbGVjdCB3aGVuIG5vIGZkcyBhcmUKLSAgY2hhbmdlZC4KLQotLSBJc3N1ZSAjODI1OTogMUwgPDwgKDIqKjMxKSBubyBsb25nZXIgcHJvZHVjZXMgYW4gJ291dHJhZ2VvdXMgc2hpZnQgZXJyb3InIG9uCi0gIDY0LWJpdCBtYWNoaW5lcy4gIFRoZSBzaGlmdCBjb3VudCBmb3IgZWl0aGVyIGxlZnQgb3IgcmlnaHQgc2hpZnQgaXMgcGVybWl0dGVkCi0gIHRvIGJlIHVwIHRvIHN5cy5tYXhzaXplLgotCi0tIEVuc3VyZSB0aGF0IHRva2VuaXphdGlvbiBvZiBpZGVudGlmaWVycyBpcyBub3QgYWZmZWN0ZWQgYnkgbG9jYWxlLgotCi0tIElzc3VlICMxMjIyNTg1OiBBZGRlZCBMRENYWFNIQVJFRCBmb3IgQysrIHN1cHBvcnQuIFBhdGNoIGJ5IEFyZnJldmVyLgotCi0tIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIFRfU1RSSU5HX0lOUExBQ0Ugc3RydWN0IG1lbWJlci4KLQotLSBJc3N1ZSAjODIxMTogU2F2ZS9yZXN0b3JlIENGTEFHUyBhcm91bmQgQUNfUFJPR19DQyBpbiBjb25maWd1cmUuaW4sIGluIGNhc2UgaXQKLSAgaXMgc2V0LgotCi0tIElzc3VlICM4MjI2OiBzeXMuc2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgcmFpc2VzIGEgTG9va3VwRXJyb3IgaWYgdGhlIGVuY29kaW5nCi0gIGlzIHVua25vd24uCi0KLS0gSXNzdWUgIzE1ODM4NjM6IEEgc3RyIHN1YmNsYXNzIGNhbiBub3cgb3ZlcnJpZGUgdGhlIF9fc3RyX18gbWV0aG9kLgotCi0tIElzc3VlICM4MDE0OiBTZXR0aW5nIGEgVF9VSU5UIG9yIFRfUFlTU0laRVQgYXR0cmlidXRlIG9mIGFuIG9iamVjdCB3aXRoCi0gIFB5TWVtYmVyRGVmcyBjb3VsZCBwcm9kdWNlIGFuIGludGVybmFsIGVycm9yOyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZC4KLQotLSBJc3N1ZSAjNzg0NTogUmljaCBjb21wYXJpc29uIG1ldGhvZHMgb24gdGhlIGNvbXBsZXggdHlwZSBub3cgcmV0dXJuCi0gIE5vdEltcGxlbWVudGVkIHJhdGhlciB0aGFuIHJhaXNpbmcgYSBUeXBlRXJyb3Igd2hlbiBjb21wYXJpbmcgd2l0aCBhbgotICBpbmNvbXBhdGlibGUgdHlwZTsgdGhpcyBhbGxvd3MgdXNlci1kZWZpbmVkIGNsYXNzZXMgdG8gaW1wbGVtZW50IHRoZWlyIG93bgotICBjb21wYXJpc29ucyB3aXRoIGNvbXBsZXguCi0KLS0gSXNzdWUgIzMxMzc6IERvbid0IGlnbm9yZSBlcnJvcnMgYXQgc3RhcnR1cCwgZXNwZWNpYWxseSBhIGtleWJvYXJkIGludGVycnVwdAotICAoU0lHSU5UKS4gSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGltcG9ydGluZyB0aGUgc2l0ZSBtb2R1bGUsIHRoZSBlcnJvciBpcwotICBwcmludGVkIGFuZCBQeXRob24gZXhpdHMuIEluaXRpYWxpemUgdGhlIEdJTCBiZWZvcmUgaW1wb3J0aW5nIHRoZSBzaXRlIG1vZHVsZS4KLQotLSBJc3N1ZSAjNzE3MzogR2VuZXJhdG9yIGZpbmFsaXphdGlvbiBjb3VsZCBpbnZhbGlkYXRlIHN5cy5leGNfaW5mbygpLgotCi0tIElzc3VlICM3NTQ0OiBQcmVhbGxvY2F0ZSB0aHJlYWQgbWVtb3J5IGJlZm9yZSBjcmVhdGluZyB0aGUgdGhyZWFkIHRvIGF2b2lkIGEKLSAgZmF0YWwgZXJyb3IgaW4gbG93IG1lbW9yeSBjb25kaXRpb24uCi0KLS0gSXNzdWUgIzc4MjA6IFRoZSBwYXJzZXIgdG9rZW5pemVyIHJlc3RvcmVzIGFsbCBieXRlcyBpbiB0aGUgcmlnaHQgaWYgdGhlIEJPTQotICBjaGVjayBmYWlscy4KLQotLSBIYW5kbGUgZXJyb3JzIGZyb20gbG9va2luZyB1cCBfX3ByZXBhcmVfXyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzU5Mzk6IEFkZCBhZGRpdGlvbmFsIHJ1bnRpbWUgY2hlY2tpbmcgdG8gZW5zdXJlIGEgdmFsaWQgY2Fwc3VsZSBpbgotICBNb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYy4KLQotLSBJc3N1ZSAjNzMwOTogRml4IHVuY2hlY2tlZCBhdHRyaWJ1dGUgYWNjZXNzIHdoZW4gY29udmVydGluZwotICBVbmljb2RlRW5jb2RlRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvciwgYW5kIFVuaWNvZGVUcmFuc2xhdGVFcnJvciB0byBzdHJpbmdzLgotCi0tIElzc3VlICM2OTAyOiBGaXggcHJvYmxlbSB3aXRoIGJ1aWx0LWluIHR5cGVzIGZvcm1hdCBpbmNvcnJlY3RseSB3aXRoIDAKLSAgcGFkZGluZy4KLQotLSBJc3N1ZSAjNzk4ODogRml4IGRlZmF1bHQgYWxpZ25tZW50IHRvIGJlIHJpZ2h0IGFsaWduZWQgZm9yIGNvbXBsZXguX19mb3JtYXRfXy4KLSAgTm93IGl0IG1hdGNoZXMgb3RoZXIgbnVtZXJpYyB0eXBlcy4KLQotLSBJc3N1ZSAjNTk4ODogUmVtb3ZlIGRlcHJlY2F0ZWQgZnVuY3Rpb25zIFB5T1NfYXNjaWlfZm9ybWF0ZCwKLSAgUHlPU19hc2NpaV9zdHJ0b2QsIGFuZCBQeU9TX2FzY2lpX2F0b2YuICBVc2UgUHlPU19kb3VibGVfdG9fc3RyaW5nIGFuZAotICBQeU9TX3N0cmluZ190b19kb3VibGUgaW5zdGVhZC4gIFNlZSBpc3N1ZSAjNTgzNSBmb3IgdGhlIG9yaWdpbmFsIGRlcHJlY2F0aW9ucy4KLQotLSBJc3N1ZSAjNzM4NTogRml4IGEgY3Jhc2ggaW4gYE1lbW9yeVZpZXdfRnJvbU9iamVjdGAgd2hlbiBgUHlPYmplY3RfR2V0QnVmZmVyYAotICBmYWlscy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzc4ODogRml4IGFuIGludGVycHJldGVyIGNyYXNoIHByb2R1Y2VkIGJ5IGRlbGV0aW5nIGEgbGlzdCBzbGljZSB3aXRoCi0gIHZlcnkgbGFyZ2Ugc3RlcCB2YWx1ZS4KLQotLSBJc3N1ZSAjNzc2NjogQ2hhbmdlIHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpIHJldHVybiB2YWx1ZSB0byBhIG5hbWVkIHR1cGxlIGFuZAotICBhZGQgdGhlIGFkZGl0aW9uYWwgbWVtYmVycyByZXR1cm5lZCBpbiBhbiBPU1ZFUlNJT05JTkZPRVggc3RydWN0dXJlLiAgVGhlIG5ldwotICBtZW1iZXJzIGFyZSBzZXJ2aWNlX3BhY2tfbWFqb3IsIHNlcnZpY2VfcGFja19taW5vciwgc3VpdGVfbWFzaywgYW5kCi0gIHByb2R1Y3RfdHlwZS4KLQotLSBJc3N1ZSAjNzU2MTogT3BlcmF0aW9ucyBvbiBlbXB0eSBieXRlYXJyYXlzIChzdWNoIGFzIGBpbnQoYnl0ZWFycmF5KCkpYCkgY291bGQKLSAgY3Jhc2ggaW4gbWFueSBwbGFjZXMgYmVjYXVzZSBvZiB0aGUgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKCkgbWFjcm8gcmV0dXJuaW5nCi0gIE5VTEwuICBUaGUgbWFjcm8gbm93IHJldHVybnMgYSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBlbXB0eSBzdHJpbmcgaW5zdGVhZC4KLQotLSBJc3N1ZSAjNjY5MDogT3B0aW1pemUgdGhlIGJ5dGVjb2RlIGZvciBleHByZXNzaW9ucyBzdWNoIGFzIGB4IGluIHsxLCAyLCAzfWAsCi0gIHdoZXJlIHRoZSByaWdodCBoYW5kIG9wZXJhbmQgaXMgYSBzZXQgb2YgY29uc3RhbnRzLCBieSB0dXJuaW5nIHRoZSBzZXQgaW50byBhCi0gIGZyb3plbnNldCBhbmQgcHJlLWJ1aWxkaW5nIGl0IGFzIGEgY29uc3RhbnQuICBUaGUgY29tcGFyaXNvbiBvcGVyYXRpb24gaXMgbWFkZQotICBhZ2FpbnN0IHRoZSBjb25zdGFudCBpbnN0ZWFkIG9mIGJ1aWxkaW5nIGEgbmV3IHNldCBlYWNoIHRpbWUgaXQgaXMgZXhlY3V0ZWQgKGEKLSAgc2ltaWxhciBvcHRpbWl6YXRpb24gYWxyZWFkeSBleGlzdGVkIHdoaWNoIHR1cm5lZCBhIGxpc3Qgb2YgY29uc3RhbnRzIGludG8gYQotICBwcmUtYnVpbHQgdHVwbGUpLiAgUGF0Y2ggYW5kIGFkZGl0aW9uYWwgdGVzdHMgYnkgRGF2ZSBNYWxjb2xtLgotCi0tIElzc3VlICM3NjIyOiBJbXByb3ZlIHRoZSBzcGxpdCgpLCByc3BsaXQoKSwgc3BsaXRsaW5lcygpIGFuZCByZXBsYWNlKCkgbWV0aG9kcwotICBvZiBieXRlcywgYnl0ZWFycmF5IGFuZCB1bmljb2RlIG9iamVjdHMgYnkgdXNpbmcgYSBjb21tb24gaW1wbGVtZW50YXRpb24gYmFzZWQKLSAgb24gc3RyaW5nbGliJ3MgZmFzdCBzZWFyY2guICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzc2MzI6IEZpeCB2YXJpb3VzIHN0ciAtPiBmbG9hdCBjb252ZXJzaW9uIGJ1Z3MgcHJlc2VudCBpbiAyLjcgYWxwaGEgMiwKLSAgaW5jbHVkaW5nOiAoMSkgYSBzZXJpb3VzICd3cm9uZyBvdXRwdXQnIGJ1ZyB0aGF0IGNvdWxkIG9jY3VyIGZvciBsb25nICg+IDQwCi0gIGRpZ2l0KSBpbnB1dCBzdHJpbmdzLCAoMikgYSBjcmFzaCBpbiBkdG9hLmMgdGhhdCBvY2N1cnJlZCBpbiBkZWJ1ZyBidWlsZHMgd2hlbgotICBwYXJzaW5nIGNlcnRhaW4gbG9uZyBudW1lcmljIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBzdWJub3JtYWwgdmFsdWVzLCAoMykgYQotICBtZW1vcnkgbGVhayBmb3Igc29tZSB2YWx1ZXMgbGFyZ2UgZW5vdWdoIHRvIGNhdXNlIG92ZXJmbG93LCBhbmQgKDQpIGEgbnVtYmVyCi0gIG9mIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdHMuCi0KLS0gVGhlIF9fY29tcGxleF9fIG1ldGhvZCBpcyBub3cgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBvZiBpbnN0YW5jZXMgdG8gbWFrZSBpdAotICBjb25zaXN0ZW50IHdpdGggb3RoZXIgc3BlY2lhbCBtZXRob2RzLgotCi0tIElzc3VlICM3NDYyOiBJbXBsZW1lbnQgdGhlIHN0cmluZ2xpYiBmYXN0IHNlYXJjaCBhbGdvcml0aG0gZm9yIHRoZSBgcmZpbmRgLAotICBgcmluZGV4YCwgYHJzcGxpdGAgYW5kIGBycGFydGl0aW9uYCBtZXRob2RzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3NjA0OiBEZWxldGluZyBhbiB1bnNldCBzbG90dGVkIGF0dHJpYnV0ZSBkaWQgbm90IHJhaXNlIGFuCi0gIEF0dHJpYnV0ZUVycm9yLgotCi0tIElzc3VlICM3NTM0OiBGaXggaGFuZGxpbmcgb2YgSUVFRSBzcGVjaWFscyAoaW5maW5pdGllcywgbmFucywgbmVnYXRpdmUgemVybykKLSAgaW4gKiogb3BlcmF0b3IuICBUaGUgYmVoYXZpb3VyIG5vdyBjb25mb3JtcyB0byB0aGF0IGRlc2NyaWJlZCBpbiBDOTkgQW5uZXggRi4KLQotLSBJc3N1ZSAjMTgxMTogaW1wcm92ZSBhY2N1cmFjeSBhbmQgY3Jvc3MtcGxhdGZvcm0gY29uc2lzdGVuY3kgZm9yIHRydWUgZGl2aXNpb24KLSAgb2YgaW50ZWdlcnM6IHRoZSByZXN1bHQgb2YgYS9iIGlzIG5vdyBjb3JyZWN0bHkgcm91bmRlZCBmb3IgaW50cyBhIGFuZCBiIChhdAotICBsZWFzdCBvbiBJRUVFIDc1NCBwbGF0Zm9ybXMpLCBhbmQgaW4gcGFydGljdWxhciBkb2VzIG5vdCBkZXBlbmQgb24gdGhlCi0gIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGFuIGludC4KLQotLSBJc3N1ZSAjNjgzNDogcmVwbGFjZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAncHl0aG9uJyBhbmQgJ3B5dGhvbncnCi0gIGV4ZWN1dGFibGVzIG9uIE9TWC4KLQotICBUaGVzZSBleGVjdXRhYmxlcyBub3cgd29yayBwcm9wZXJseSB3aXRoIHRoZSBhcmNoKDEpIGNvbW1hbmQ6IGBgYXJjaCAtcHBjCi0gIHB5dGhvbmBgIHdpbGwgc3RhcnQgYSB1bml2ZXJzYWwgYmluYXJ5IHZlcnNpb24gb2YgcHl0aG9uIGluIFBQQyBtb2RlICh1bmxpa2UKLSAgcHJldmlvdXMgcmVsZWFzZXMpLgotCi0tIElzc3VlICM3NDY2OiBTZWdtZW50YXRpb24gZmF1bHQgd2hlbiB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgY2FsbGVkIGluIHRoZQotICBtaWRkbGUgb2YgcG9wdWxhdGluZyBhIHR1cGxlLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3NDE5OiBzZXRsb2NhbGUoKSBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgb24gV2luZG93cyB3aGVuIGNhbGxlZAotICB3aXRoIGludmFsaWQgdmFsdWVzLgotCi0tIElzc3VlICM2MDc3OiBPbiBXaW5kb3dzLCBmaWxlcyBvcGVuZWQgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlIGluICJ3dCsiCi0gIG1vZGUgd291bGQgYXBwZWFyIHRydW5jYXRlZCBvbiB0aGUgZmlyc3QgJzB4MWEnIGJ5dGUgKGFrYS4gQ3RybCtaKS4KLQotLSBJc3N1ZSAjNzA4NTogRml4IGNyYXNoIHdoZW4gaW1wb3J0aW5nIHNvbWUgZXh0ZW5zaW9ucyBpbiBhIHRocmVhZCBvbiBNYWNPU1gKLSAgMTAuNi4KLQotLSBJc3N1ZSAjMTc1NzEyNjogRml4IHRoZSBjeXJpbGxpYy1hc2lhbiBhbGlhcyBmb3IgdGhlIHB0Y3AxNTQgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzY5NzA6IFJlbW92ZSByZWR1bmRhbnQgY2FsbHMgd2hlbiBjb21wYXJpbmcgb2JqZWN0cyB0aGF0IGRvbid0Ci0gIGltcGxlbWVudCB0aGUgcmVsZXZhbnQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzcyOTg6IEZpeGVzIGZvciByYW5nZSBhbmQgcmV2ZXJzZWQocmFuZ2UoLi4uKSkuICBJdGVyYXRpb24gb3ZlcgotICByYW5nZShhLCBiLCBjKSBpbmNvcnJlY3RseSBnYXZlIGFuIGVtcHR5IGl0ZXJhdG9yIHdoZW4gYSwgYiBhbmQgYyBmaXQgaW4gQwotICBsb25nIGJ1dCB0aGUgbGVuZ3RoIG9mIHRoZSByYW5nZSBkaWQgbm90LiAgQWxzbyBmaXggc2V2ZXJhbCBjYXNlcyB3aGVyZQotICByZXZlcnNlZChyYW5nZShhLCBiLCBjKSkgZ2F2ZSB3cm9uZyByZXN1bHRzLCBhbmQgZml4IGEgcmVmbGVhayBmb3IKLSAgcmV2ZXJzZWQocmFuZ2UoYSwgYiwgYykpIHdpdGggbGFyZ2UgYXJndW1lbnRzLgotCi0tIElzc3VlICM3MjQ0OiBpdGVydG9vbHMuaXppcF9sb25nZXN0KCkgbm8gbG9uZ2VyIGlnbm9yZXMgZXhjZXB0aW9ucyByYWlzZWQKLSAgZHVyaW5nIHRoZSBmb3JtYXRpb24gb2YgYW4gb3V0cHV0IHR1cGxlLgotCi0tIElzc3VlICMzMjk3OiBPbiB3aWRlIHVuaWNvZGUgYnVpbGRzLCBkbyBub3Qgc3BsaXQgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8KLSAgc3Vycm9nYXRlcy4KLQotLSBSZW1vdmUgbGVuZ3RoIGxpbWl0YXRpb24gd2hlbiBjb25zdHJ1Y3RpbmcgYSBjb21wbGV4IG51bWJlciBmcm9tIGEgc3RyaW5nLgotCi0tIElzc3VlICMxMDg3NDE4OiBCb29zdCBwZXJmb3JtYW5jZSBvZiBiaXR3aXNlIG9wZXJhdGlvbnMgZm9yIGxvbmdzLgotCi0tIFN1cHBvcnQgZm9yIEF0aGVPUyBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlbW92ZWQgZnJvbSB0aGUgY29kZSBiYXNlLiBJdCB3YXMKLSAgZGlzYWJsZWQgc2luY2UgUHl0aG9uIDMuMC4KLQotLSBTdXBwb3J0IGZvciBzZXZlcmFsIGxlZ2FjeSB0aHJlYWRpbmcgbGlicmFyaWVzIGhhcyBiZWVuIGRpc2FibGVkLiBUaGVzZQotICBsaWJyYXJpZXMgYXJlOiBNYWNoIEMgdGhyZWFkcywgU3VuT1MgTFdQLCBHTlUgcHRoLCBJcml4IHRocmVhZHMuIFN1cHBvcnQgY29kZQotICB3aWxsIGJlIGVudGlyZWx5IHJlbW92ZWQgaW4gMy4zLgotCi0tIFN1cHBvcnQgZm9yIE9TRiogaGFzIGJlZW4gZGlzYWJsZWQuIElmIG5vYm9keSBzdGFuZHMgdXAsIHN1cHBvcnQgd2lsbCBiZQotICByZW1vdmVkIGluIDMuMy4gU2VlIDxodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODYwNj4uCi0KLS0gUGVlcGhvbGUgY29uc3RhbnQgZm9sZGluZyBoYWQgbWlzc2VkIFVOQVJZX1BPU0lUSVZFLgotCi0tIElzc3VlICMxNzIyMzQ0OiB0aHJlYWRpbmcuX3NodXRkb3duKCkgaXMgbm93IGNhbGxlZCBpbiBQeV9GaW5hbGl6ZSgpLCB3aGljaAotICBmaXhlcyB0aGUgcHJvYmxlbSBvZiBzb21lIGV4Y2VwdGlvbnMgYmVpbmcgdGhyb3duIGF0IHNodXRkb3duIHdoZW4gdGhlCi0gIGludGVycHJldGVyIGlzIGtpbGxlZC4gUGF0Y2ggYnkgQWRhbSBPbHNlbi4KLQotLSBJc3N1ZSAjNzE0NzogUmVtb3ZlIHN1cHBvcnQgZm9yIGNvbXBpbGluZyBQeXRob24gd2l0aG91dCBjb21wbGV4IG51bWJlcgotICBzdXBwb3J0LgotCi0tIElzc3VlICM3MTIwOiBsb2dnaW5nOiBSZW1vdmVkIGltcG9ydCBvZiBtdWx0aXByb2Nlc3Npbmcgd2hpY2ggaXMgY2F1c2luZyBjcmFzaAotICBpbiBHQUUuCi0KLS0gSXNzdWUgIzE3NTQwOTQ6IEltcHJvdmUgdGhlIHN0YWNrIGRlcHRoIGNhbGN1bGF0aW9uIGluIHRoZSBjb21waWxlci4gIFRoZXJlCi0gIHNob3VsZCBiZSBubyBvdGhlciBlZmZlY3QgdGhhbiBhIHNtYWxsIGRlY3JlYXNlIGluIG1lbW9yeSB1c2UuICBQYXRjaCBieQotICBDaHJpc3RvcGhlciBUdXIgTGVzbmlld3NraS1MYWFzLgotCi0tIElzc3VlICM3MDY1OiBGaXggYSBjcmFzaCBpbiBieXRlcy5tYWtldHJhbnMgYW5kIGJ5dGVhcnJheS5tYWtldHJhbnMgd2hlbiB1c2luZwotICBieXRlIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkgRGVyayBEcnVra2VyLgotCi0tIElzc3VlICMxNTcxMTg0OiBUaGUgVW5pY29kZSBkYXRhYmFzZSBjb250YWlucyBwcm9wZXJ0aWVzIGZvciBtb3JlIGNoYXJhY3RlcnMuCi0gIFRoZSB0YWJsZXMgZm9yIGNvZGUgcG9pbnRzIHJlcHJlc2VudGluZyBudW1lcmljIHZhbHVlcywgd2hpdGUgc3BhY2VzIG9yIGxpbmUKLSAgYnJlYWtzIGFyZSBub3cgZ2VuZXJhdGVkIGZyb20gdGhlIG9mZmljaWFsIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGZpbGVzLAotICBhbmQgaW5jbHVkZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVbmloYW4udHh0IGZpbGUuCi0KLS0gSXNzdWUgIzcwMTk6IFJhaXNlIFZhbHVlRXJyb3Igd2hlbiB1bm1hcnNoYWxsaW5nIGJhZCBsb25nIGRhdGEsIGluc3RlYWQgb2YKLSAgcHJvZHVjaW5nIGludGVybmFsbHkgaW5jb25zaXN0ZW50IFB5dGhvbiBsb25ncy4KLQotLSBJc3N1ZSAjNjk5MDogRml4IHRocmVhZGluZy5sb2NhbCBzdWJjbGFzc2VzIGxlYXZpbmcgb2xkIHN0YXRlIGFyb3VuZCBhZnRlciBhCi0gIHJlZmVyZW5jZSBjeWNsZSBHQyB3aGljaCBjb3VsZCBiZSByZWN5Y2xlZCBieSBuZXcgbG9jYWxzLgotCi0tIElzc3VlICM1NDYwOiBGaXggYW4gYW1iaWd1aXR5IGluIHRoZSBncmFtbWFyLgotCi0tIElzc3VlICMxNzY2MzA0OiBJbXByb3ZlIHBlcmZvcm1hbmNlIG9mIG1lbWJlcnNoaXAgdGVzdHMgb24gcmFuZ2Ugb2JqZWN0cy4KLQotLSBJc3N1ZSAjNjcxMzogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBpbnRlZ2VyIC0+IHN0cmluZyBjb252ZXJzaW9ucy4KLQotLSBJc3N1ZSAjNjg0NjogRml4IGJ1ZyB3aGVyZSBieXRlYXJyYXkucG9wKCkgcmV0dXJucyBuZWdhdGl2ZSBpbnRlZ2Vycy4KLQotLSBJc3N1ZSAjNjc1MDogQSB0ZXh0IGZpbGUgb3BlbmVkIHdpdGggaW8ub3BlbigpIGNvdWxkIGR1cGxpY2F0ZSBpdHMgb3V0cHV0IHdoZW4KLSAgd3JpdGluZyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZS4KLQotLSBJc3N1ZSAjNjcwNzogZGlyKCkgb24gYW4gdW5pbml0aWFsaXplZCBtb2R1bGUgY2F1c2VkIGEgY3Jhc2guCi0KLS0gSXNzdWUgIzY1NDA6IEZpeGVkIGNyYXNoIGZvciBieXRlYXJyYXkudHJhbnNsYXRlKCkgd2l0aCBpbnZhbGlkIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzY1NzM6IHNldC51bmlvbigpIHN0b3BwZWQgcHJvY2Vzc2luZyBpbnB1dHMgaWYgYW4gaW5zdGFuY2Ugb2Ygc2VsZgotICBvY2N1cnJlZCBpbiB0aGUgYXJndW1lbnQgY2hhaW4uCi0KLS0gSXNzdWUgIzYwNzA6IE9uIHBvc2l4IHBsYXRmb3JtcyBpbXBvcnQgbm8gbG9uZ2VyIGNvcGllcyB0aGUgZXhlY3V0ZSBiaXQgZnJvbQotICB0aGUgLnB5IGZpbGUgdG8gdGhlIC5weWMgZmlsZSBpZiBpdCBpcyBzZXQuCi0KLS0gSXNzdWUgIzE2MTY5Nzk6IEFkZGVkIHRoZSBjcDcyMCAoQXJhYmljIERPUykgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzY0Mjg6IFNpbmNlIFB5dGhvbiAzLjAsIHRoZSBfX2Jvb2xfXyBtZXRob2QgbXVzdCByZXR1cm4gYSBib29sIG9iamVjdCwKLSAgYW5kIG5vdCBhbiBpbnQuICBGaXggdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZSwgYW5kIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIFRoZSBkZXByZWNhdGVkIFB5Q09iamVjdCBoYXMgYmVlbiByZW1vdmVkLgotCi0tIElzc3VlICM2MzQ3OiBJbmNsdWRlIGludHR5cGVzLmggYXMgd2VsbCBhcyBzdGRpbnQuaCBpbiBweXBvcnQuaC4gIFRoaXMgZml4ZXMgYQotICBidWlsZCBmYWlsdXJlIG9uIEhQLVVYOiBpbnQzMl90IGFuZCB1aW50MzJfdCBhcmUgZGVmaW5lZCBpbiBpbnR0eXBlcy5oIGluc3RlYWQKLSAgb2Ygc3RkaW50Lmggb24gdGhhdCBwbGF0Zm9ybS4KLQotLSBJc3N1ZSAjNjM3MzogRml4ZWQgYSBTeXN0ZW1FcnJvciB3aGVuIGVuY29kaW5nIHdpdGggdGhlIGxhdGluLTEgY29kZWMgYW5kIHRoZQotICAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVyLCBhIHN0cmluZyB3aGljaCBjb250YWlucyB1bnBhaXJlZCBzdXJyb2dhdGVzLgotCi0tIElzc3VlICM0ODU2OiBSZW1vdmUgY2hlY2tzIGZvciB3aW4gTlQuCi0KLS0gSXNzdWUgIzY2ODc6IFB5Qnl0ZXNfRnJvbU9iamVjdCgpIG5vIGxvbmdlciBhY2NlcHRzIGFuIGludGVnZXIgYXMgaXRzIGFyZ3VtZW50Ci0gIHRvIGNvbnN0cnVjdCBhIG51bGwtaW5pdGlhbGl6ZWQgYnl0ZXMgb2JqZWN0LgotCi0tIElzc3VlICMxMDIzMjkwOiBBZGQgZnJvbV9ieXRlcygpIGFuZCB0b19ieXRlcygpIG1ldGhvZHMgdG8gaW50ZWdlcnMuICBUaGVzZQotICBtZXRob2RzIGFsbG93IHRoZSBjb252ZXJzaW9uIG9mIGludGVnZXJzIHRvIGJ5dGVzLCBhbmQgdmljZS12ZXJzYS4KLQotLSBJc3N1ZSAjNzM4MjogRml4IGJ1ZyBpbiBieXRlcy5fX2dldG5ld2FyZ3NfXyB0aGF0IHByZXZlbnRlZCBieXRlcyBpbnN0YW5jZXMKLSAgZnJvbSBiZWluZyBjb3BpZWQgd2l0aCBjb3B5LmNvcHkoKSwgYW5kIGJ5dGVzIHN1YmNsYXNzZXMgZnJvbSBiZWluZyBwaWNrbGVkCi0gIHByb3Blcmx5LgotCi0tIENvZGUgb2JqZWN0cyBub3cgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMuCi0KLS0gSXNzdWUgIzcwNzI6IGlzc3BhY2UoMHhhMCkgaXMgdHJ1ZSBvbiBNYWMgT1MgWC4KLQotLSBJc3N1ZSAjODA4NDogUEVQIDM3MCBub3cgY29uZm9ybXMgdG8gc3lzdGVtIGNvbnZlbnRpb25zIGZvciBmcmFtZXdvcmsgYnVpbGRzCi0gIG9uIE1hY09TIFguIFRoYXQgaXMsICJweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXIiIHdpbGwgaW5zdGFsbCBpbnRvCi0gICJ+L0xpYnJhcnkvUHl0aG9uLzIuNyIgaW5zdGVhZCBvZiAifi8ubG9jYWwiLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMjQ0MzogQSBuZXcgbWFjcm8sIGBQeV9WQV9DT1BZYCwgY29waWVzIHRoZSBzdGF0ZSBvZiB0aGUKLSAgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4gIGBQeV9WQV9DT1BZYCBpcyBlcXVpdmFsZW50IHRvIEM5OQotICBgdmFfY29weWAsIGJ1dCBhdmFpbGFibGUgb24gYWxsIHB5dGhvbiBwbGF0Zm9ybXMuCi0KLS0gUHlTbGljZV9HZXRJbmRpY2VzRXggbm93IGNsaXBzIHRoZSBzdGVwIHRvIFstUFlfU1NJWkVfVF9NQVgsIFBZX1NTSVpFX1RfTUFYXQotICBpbnN0ZWFkIG9mIFstUFlfU1NJWkVfVF9NQVgtMSwgUFlfU1NJWkVfVF9NQVhdLiAgVGhpcyBtYWtlcyBpdCBzYWZlIHRvIGRvCi0gICJzdGVwID0gLXN0ZXAiIHdoZW4gcmV2ZXJzaW5nIGEgc2xpY2UuCi0KLS0gSXNzdWUgIzU3NTM6IEEgbmV3IEMgQVBJIGZ1bmN0aW9uLCBgUHlTeXNfU2V0QXJndkV4YCwgYWxsb3dzIGVtYmVkZGVycyBvZiB0aGUKLSAgaW50ZXJwcmV0ZXIgdG8gc2V0IHN5cy5hcmd2IHdpdGhvdXQgYWxzbyBtb2RpZnlpbmcgc3lzLnBhdGguICBUaGlzIGhlbHBzIGZpeAotICBgQ1ZFLTIwMDgtNTk4MwotICA8aHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDA4LTU5ODM+YF8uCi0KLS0gQWRkIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cywgd2hpY2ggY2hlY2tzIGlmIGFsbCBrZXl3b3JkIGFyZ3VtZW50cyBhcmUKLSAgc3RyaW5ncyBpbiBhbiBlZmZpY2llbnQgbWFubmVyLgotCi0tIElzc3VlICM4Mjc2OiBQeUV2YWxfQ2FsbE9iamVjdCgpIGlzIG5vdyBvbmx5IGF2YWlsYWJsZSBpbiBtYWNybyBmb3JtLiAgVGhlCi0gIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLCB3aGljaCB3YXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgaXMKLSAgbm93IHJlbW92ZWQgKHRoZSBtYWNybyB3YXMgaW50cm9kdWNlZCBpbiAxOTk3ISkuCi0KLS0gSXNzdWUgIzc3Njc6IE5ldyBmdW5jdGlvbiBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93IGFkZGVkLCBhbmFsb2dvdXMgdG8KLSAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93LgotCi0tIE1ha2UgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcgcmV0dXJuIG5vdCBlcXVhbCBpZiB0aGUgUHl0aG9uIHN0cmluZwotICBoYXMgJ1wwJyBhdCB0aGUgZW5kLgotCi0tIElzc3VlICM1MDgwOiBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgUHlBcmdfUGFyc2VUdXBsZSwKLSAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzLCBQeUFyZ19WYVBhcnNlLCBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcyBhbmQKLSAgUHlBcmdfUGFyc2Ugbm93IHJhaXNlIGEgRGVwcmVjYXRpb25XYXJuaW5nIGZvciBmbG9hdCBhcmd1bWVudHMgcGFzc2VkIHdpdGggdGhlCi0gICdMJyBmb3JtYXQgY29kZS4gIFRoaXMgd2lsbCBiZWNvbWUgYSBUeXBlRXJyb3IgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24sCi0gIHRvIG1hdGNoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIG90aGVyIGludGVnZXIgZm9ybWF0IGNvZGVzLgotCi0tIElzc3VlICM3MDMzOiBGdW5jdGlvbiBgYFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoKWBgIGFkZGVkLgotCi0tIElzc3VlICM3NDE0OiAnQycgY29kZSB3YXNuJ3QgYmVpbmcgc2tpcHBlZCBwcm9wZXJseSAoZm9yIGtleXdvcmQgYXJndW1lbnRzKSBpbgotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMuCi0KLS0gSXNzdWUgIzcyMjg6IEFkZCAnJWxsZCcgYW5kICclbGx1JyBzdXBwb3J0IHRvIFB5U3RyaW5nX0Zyb21Gb3JtYXQoVikgYW5kCi0gIFB5RXJyX0Zvcm1hdCwgb24gbWFjaGluZXMgd2l0aCBIQVZFX0xPTkdfTE9ORyBkZWZpbmVkLgotCi0tIElzc3VlICM2MTUxOiBNYWRlIFB5RGVzY3JfQ09NTU9OIGNvbmZvcm0gdG8gc3RhbmRhcmQgQyAobGlrZSBQeU9iamVjdF9IRUFEIGluCi0gIFBFUCAzMTIzKS4gIFRoZSBQeURlc2NyX1RZUEUgYW5kIFB5RGVzY3JfTkFNRSBtYWNyb3Mgc2hvdWxkIGJlIHNob3VsZCB1c2VkIGZvcgotICBhY2Nlc3NpbmcgdGhlIGRfdHlwZSBhbmQgZF9uYW1lIG1lbWJlcnMgb2Ygc3RydWN0dXJlcyB1c2luZyBQeURlc2NyX0NPTU1PTi4KLQotLSBJc3N1ZSAjNjQwNTogUmVtb3ZlIGR1cGxpY2F0ZSB0eXBlIGRlY2xhcmF0aW9ucyBpbiBkZXNjcm9iamVjdC5oLgotCi0tIFRoZSBjb2RlIGZsYWdzIGZvciBvbGQgX19mdXR1cmVfXyBmZWF0dXJlcyBhcmUgbm93IGF2YWlsYWJsZSBhZ2Fpbi4KLQotLSBJc3N1ZSAjNTk1NDogQWRkIGEgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgZnVuY3Rpb24gdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YKLSAgUHlDb2RlX0FkZHIyTGluZSgpLgotCi0tIElzc3VlICM1OTU5OiBBZGQgYSBQeUNvZGVfTmV3RW1wdHkoKSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgZW1wdHkgY29kZQotICBvYmplY3QgYXQgYSBzcGVjaWZpZWQgZmlsZSwgZnVuY3Rpb24sIGFuZCBsaW5lIG51bWJlci4KLQotLSBJc3N1ZSAjMTQxOTY1MjogQ2hhbmdlIHRoZSBmaXJzdCBhcmd1bWVudCB0byBQeUltcG9ydF9BcHBlbmRJbml0dGFiKCkgdG8KLSAgYGBjb25zdCBjaGFyICpgYCBhcyB0aGUgc3RyaW5nIGlzIHN0b3JlZCBiZXlvbmQgdGhlIGNhbGwuCi0KLS0gSXNzdWUgIzI0MjI6IFdoZW4gY29tcGlsZWQgd2l0aCB0aGUgYGAtLXdpdGgtdmFsZ3JpbmRgYCBvcHRpb24sIHRoZSBweW1hbGxvYwotICBhbGxvY2F0b3Igd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZC4gIFRoaXMKLSAgZ2l2ZXMgaW1wcm92ZWQgbWVtb3J5IGxlYWsgZGV0ZWN0aW9uIHdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgd2hpbGUgdGFraW5nCi0gIGFkdmFudGFnZSBvZiBweW1hbGxvYyBhdCBvdGhlciB0aW1lcy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIEluIHBkYiwgd2hlbiBDdHJsLUMgaXMgZW50ZXJlZCB3aGlsZSBkZWZpbmluZyBjb21tYW5kcyBmb3IgYSBicmVha3BvaW50LCB0aGUKLSAgb2xkIGNvbW1hbmRzIGFyZSByZXN0b3JlZC4KLQotLSBGb3IgdHJhY2ViYWNrIGRlYnVnZ2luZywgdGhlIHBkYiBsaXN0aW5nIG5vdyBhbHNvIHNob3dzIHRoZSBsb2NhdGlvbnMgd2hlcmUKLSAgdGhlIGV4Y2VwdGlvbiB3YXMgb3JpZ2luYWxseSAocmUpcmFpc2VkLCBpZiBpdCBkaWZmZXJzIGZyb20gdGhlIGxhc3QgbGluZQotICBleGVjdXRlZCAoZS5nLiBpbiBjYXNlIG9mIGZpbmFsbHkgY2xhdXNlcykuCi0KLS0gVGhlIHBkYiBjb21tYW5kICJzb3VyY2UiIGhhcyBiZWVuIGFkZGVkLiAgSXQgZGlzcGxheXMgdGhlIHNvdXJjZSBjb2RlIGZvciBhCi0gIGdpdmVuIG9iamVjdCwgaWYgcG9zc2libGUuCi0KLS0gVGhlIHBkYiBjb21tYW5kICJsb25nbGlzdCIgaGFzIGJlZW4gYWRkZWQuICBJdCBkaXNwbGF5cyB0aGUgd2hvbGUgc291cmNlIGNvZGUKLSAgZm9yIHRoZSBjdXJyZW50IGZ1bmN0aW9uLgotCi0tIElzc3VlICMxNTAzNTAyOiBNYWtlIHBkYi5QZGIgZWFzaWVyIHRvIHN1YmNsYXNzIGJ5IHB1dHRpbmcgbWVzc2FnZSBhbmQgZXJyb3IKLSAgb3V0cHV0IGludG8gbWV0aG9kcy4KLQotLSBJc3N1ZSAjODA5ODg3OiBNYWtlIHRoZSBvdXRwdXQgb2YgcGRiJ3MgYnJlYWtwb2ludCBkZWxldGlvbnMgbW9yZSBjb25zaXN0ZW50OwotICBlbWl0IGEgbWVzc2FnZSB3aGVuIGEgYnJlYWtwb2ludCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgotCi0tIElzc3VlICM1Mjk0OiBGaXggdGhlIGJlaGF2aW9yIG9mIHBkYidzICJjb250aW51ZSIgY29tbWFuZCB3aGVuIGNhbGxlZCBpbiB0aGUKLSAgdG9wLWxldmVsIGRlYnVnZ2VkIGZyYW1lLgotCi0tIElzc3VlICM1NzI3OiBSZXN0b3JlIHRoZSBhYmlsaXR5IHRvIHVzZSByZWFkbGluZSB3aGVuIGNhbGxpbmcgaW50byBwZGIgaW4KLSAgZG9jdGVzdHMuCi0KLS0gSXNzdWUgIzY3MTk6IEluIHBkYiwgZG8gbm90IHN0b3Agc29tZXdoZXJlIGluIHRoZSBlbmNvZGluZ3MgbWFjaGluZXJ5IGlmIHRoZQotICBzb3VyY2UgZmlsZSB0byBiZSBkZWJ1Z2dlZCBpcyBpbiBhIG5vbi1idWlsdGluIGVuY29kaW5nLgotCi0tIElzc3VlICM4MDQ4OiBQcmV2ZW50IGRvY3Rlc3RzIGZyb20gZmFpbGluZyB3aGVuIHN5cy5kaXNwbGF5aG9vayBoYXMgYmVlbgotICByZWFzc2lnbmVkLgotCi0tIElzc3VlICM4MDE1OiBJbiBwZGIsIGRvIG5vdCBjcmFzaCB3aGVuIGFuIGVtcHR5IGxpbmUgaXMgZW50ZXJlZCBhcyBhCi0gIGJyZWFrcG9pbnQgY29tbWFuZC4KLQotLSBJbiBwZGIsIGFsbG93IGdpdmluZyBhIGxpbmUgbnVtYmVyIHRvIHRoZSAidW50aWwiIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzE0MzcwNTE6IEZvciBwZGIsIGFsbG93ICJjb250aW51ZSIgYW5kIHJlbGF0ZWQgY29tbWFuZHMgaW4gLnBkYnJjCi0gIGZpbGVzLiAgQWxzbywgYWRkIGEgY29tbWFuZC1saW5lIG9wdGlvbiAiLWMiIHRoYXQgcnVucyBhIGNvbW1hbmQgYXMgaWYgZ2l2ZW4KLSAgaW4gLnBkYnJjLgotCi0tIElzc3VlICM0MTc5OiBJbiBwZGIsIGFsbG93ICJsaXN0IC4iIGFzIGEgY29tbWFuZCB0byByZXR1cm4gdG8gdGhlIGN1cnJlbnRseQotICBkZWJ1Z2dlZCBsaW5lLgotCi0tIElzc3VlICM0MTA4OiBJbiB1cmxsaWIucm9ib3RwYXJzZXIsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBgYFVzZXItYWdlbnQ6ICpgYAotICBlbnRyaWVzLCBjb25zaWRlciB0aGUgZmlyc3Qgb25lLgotCi0tIElzc3VlICM2NjMwOiBBbGxvdyBjdXN0b21pemluZyByZWdleCBmbGFncyB3aGVuIHN1YmNsYXNzaW5nIHRoZQotICBzdHJpbmcuVGVtcGxhdGUgY2xhc3MuCi0KLS0gSXNzdWUgIzk0MTE6IEFsbG93IHNwZWNpZnlpbmcgYW4gZW5jb2RpbmcgZm9yIGNvbmZpZyBmaWxlcyBpbiB0aGUgY29uZmlncGFyc2VyCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY4Mjk0MjogSW1wcm92ZW1lbnRzIHRvIGNvbmZpZ3BhcnNlcjogc3VwcG9ydCBhbHRlcm5hdGUgZGVsaW1pdGVycywKLSAgYWx0ZXJuYXRlIGNvbW1lbnQgcHJlZml4ZXMgYW5kIGVtcHR5IGxpbmVzIGluIHZhbHVlcy4KLQotLSBJc3N1ZSAjOTM1NDogUHJvdmlkZSBnZXRzb2Nrb3B0KCkgaW4gYXN5bmNvcmUncyBmaWxlX3dyYXBwZXIuCi0KLS0gSXNzdWUgIzg5NjY6IGN0eXBlczogUmVtb3ZlIGltcGxpY2l0IGJ5dGVzLXVuaWNvZGUgY29udmVyc2lvbi4KLQotLSBJc3N1ZSAjOTM3ODogcHl0aG9uIC1tIHBpY2tsZSA8cGlja2xlIGZpbGU+IHdpbGwgbm93IGxvYWQgYW5kIGRpc3BsYXkgdGhlCi0gIGZpcnN0IG9iamVjdCBpbiB0aGUgcGlja2xlIGZpbGUuCi0KLS0gSXNzdWUgIzQ3NzA6IFJlc3RyaWN0IGJpbmFzY2lpIG1vZHVsZSB0byBhY2NlcHQgb25seSBieXRlcyAoYXMgc3BlY2lmaWVkKS4KLSAgQW5kIGZpeCB0aGUgZW1haWwgcGFja2FnZSB0byBlbmNvZGUgdG8gQVNDSUkgaW5zdGVhZCBvZiBgYHJhdy11bmljb2RlLWVzY2FwZWBgCi0gIGJlZm9yZSBBU0NJSS10by1iaW5hcnkgZGVjb2RpbmcuCi0KLS0gSXNzdWUgIzkzODQ6IGBgcHl0aG9uIC1tIHRraW50ZXJgYCB3aWxsIG5vdyBkaXNwbGF5IGEgc2ltcGxlIGRlbW8gYXBwbGV0LgotCi0tIFRoZSBkZWZhdWx0IHNpemUgb2YgdGhlIHJlIG1vZHVsZSdzIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZSBoYXMgYmVlbgotICBpbmNyZWFzZWQgZnJvbSAxMDAgdG8gNTAwIGFuZCB0aGUgY2FjaGUgcmVwbGFjZW1lbnQgcG9saWN5IGhhcyBjaGFuZ2VkIGZyb20KLSAgc2ltcGx5IGNsZWFyaW5nIHRoZSBlbnRpcmUgY2FjaGUgb24gb3ZlcmZsb3cgdG8gZm9yZ2V0dGluZyB0aGUgbGVhc3QgcmVjZW50bHkKLSAgdXNlZCBjYWNoZWQgY29tcGlsZWQgcmVndWxhciBleHByZXNzaW9ucy4gIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSB3aW4gZm9yCi0gIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBhIGxvdCBvZiByZWd1bGFyIGV4cHJlc3Npb25zIGFuZCBsaW1pdHMgdGhlIGltcGFjdCBvZgotICB0aGUgcGVyZm9ybWFuY2UgaGl0IGFueXRpbWUgdGhlIGNhY2hlIGlzIGV4Y2VlZGVkLgotCi0tIElzc3VlICM3MTEzOiBTcGVlZCB1cCBsb2FkaW5nIGluIGNvbmZpZ3BhcnNlci4gUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KLQotLSBJc3N1ZSAjOTAzMjogWE1MLVJQQyBjbGllbnQgcmV0cmllcyB0aGUgcmVxdWVzdCBvbiBFUElQRSBlcnJvci4gIFRoZSBFUElQRQotICBlcnJvciBvY2N1cnMgd2hlbiB0aGUgc2VydmVyIGNsb3NlcyB0aGUgc29ja2V0IGFuZCB0aGUgY2xpZW50IHNlbmRzIGEgYmlnCi0gIFhNTC1SUEMgcmVxdWVzdC4KLQotLSBJc3N1ZSAjNDYyOTogZ2V0b3B0IHJhaXNlcyBhbiBlcnJvciBpZiBhbiBhcmd1bWVudCBlbmRzIHdpdGggIj0iLCB3aGVyZWFzCi0gIGdldG9wdCBkb2Vzbid0IGFjY2VwdCBhIHZhbHVlIChlZy4gLS1oZWxwPSBpcyByZWplY3RlZCBpZiBnZXRvcHQgdXNlcwotICBbJ2hlbHA9J10gbG9uZyBvcHRpb25zKS4KLQotLSBJc3N1ZSAjNzk4OTogQWRkZWQgcHVyZSBweXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIGBkYXRldGltZWAgbW9kdWxlLiAgVGhlIEMKLSAgbW9kdWxlIGlzIHJlbmFtZWQgdG8gYF9kYXRldGltZWAgYW5kIGlmIGF2YWlsYWJsZSwgb3ZlcnJpZGVzIGFsbCBjbGFzc2VzCi0gIGRlZmluZWQgaW4gZGF0ZXRpbWUgd2l0aCBmYXN0IEMgaW1wZW1lbnRhdGlvbi4gIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZAotICBvbiB0aGUgb3JpZ2luYWwgcHl0aG9uIHByb3RvdHlwZSBmb3IgdGhlIGRhdGV0aW1lIG1vZHVsZSBieSBUaW0gUGV0ZXJzIHdpdGgKLSAgbWlub3IgbW9kaWZpY2F0aW9ucyBieSB0aGUgUHlQeSBwcm9qZWN0LiAgVGhlIHRlc3Qgc3VpdGUgbm93IHRlc3RzIGBkYXRldGltZWAKLSAgbW9kdWxlIHdpdGggYW5kIHdpdGhvdXQgYF9kYXRldGltZWAgYWNjZWxlcmF0aW9uIHVzaW5nIHRoZSBzYW1lIHRlc3QgY2FzZXMuCi0KLS0gSXNzdWUgIzc4OTU6IHBsYXRmb3JtLm1hY192ZXIoKSBubyBsb25nZXIgY3Jhc2hlcyBhZnRlciBjYWxsaW5nIG9zLmZvcmsoKS4KLQotLSBJc3N1ZSAjOTMyMzogRml4ZWQgYSBidWcgaW4gdHJhY2UucHkgdGhhdCByZXN1bHRlZCBpbiBsb29zaW5nIHRoZSBuYW1lIG9mIHRoZQotICBzY3JpcHQgYmVpbmcgdHJhY2VkLiAgUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4KLQotLSBJc3N1ZSAjOTI4MjogRml4ZWQgLS1saXN0ZnVuY3Mgb3B0aW9uIG9mIHRyYWNlLnB5LiAgVGhhbmtzIEVsaSBCZW5kZXJza3kgZm9yCi0gIHRoZSBwYXRjaC4KLQotLSBJc3N1ZSAjMzcwNDogaHR0cC5jb29raWVqYXIgd2FzIG5vdCBwcm9wZXJseSBoYW5kbGluZyBVUkxzIHdpdGggYSAvIGluIHRoZQotICBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICM5MjY4OiBgYHBpY2tsZXRvb2xzLmRpcygpYGAgbm93IGhhcyBhbiBvcHRpb25hbCAqYW5ub3RhdGUqIGFyZ3VtZW50Ci0gIHdoaWNoIGNvbnRyb2xzIHByaW50aW5nIG9mIG9wY29kZSBkZXNjcmlwdGlvbnMgaW4gYGBkaXMoKWBgIG91dHB1dC4KLQotLSBJc3N1ZSAjMTU1NTU3MDogZW1haWwgbm8gbG9uZ2VyIGluc2VydHMgZXh0cmEgYmxhbmsgbGluZXMgd2hlbiBhIFxyXG4gY29tYm8KLSAgY3Jvc3NlcyBhbiA4MTkyIGJ5dGUgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzkyNDM6IEZpeCBzbmRoZHIgbW9kdWxlIGFuZCBhZGQgdW5pdCB0ZXN0cywgY29udHJpYnV0ZWQgYnkgSmFtZXMgTGVlLgotCi0tIGBgYXN0LmxpdGVyYWxfZXZhbCgpYGAgbm93IGFsbG93cyBieXRlIGxpdGVyYWxzLgotCi0tIElzc3VlICM5MTM3OiBGaXggaXNzdWUgaW4gTXV0YWJsZU1hcHBpbmcudXBkYXRlLCB3aGljaCBpbmNvcnJlY3RseSB0cmVhdGVkCi0gIGtleXdvcmQgYXJndW1lbnRzIGNhbGxlZCAnc2VsZicgb3IgJ290aGVyJyBzcGVjaWFsbHkuCi0KLS0gYGBhc3QubGl0ZXJhbF9ldmFsKClgYCBub3cgYWxsb3dzIHNldCBsaXRlcmFscy4KLQotLSBJc3N1ZSAjOTE2NDogRW5zdXJlIHRoYXQgc3lzY29uZmlnIGhhbmRsZXMgZHVwbGljYXRlIC1hcmNoIGZsYWdzIGluIENGTEFHUy4KLQotLSBJc3N1ZSAjNzY0NjogVGhlIGZubWF0Y2ggcGF0dGVybiBjYWNoZSBubyBsb25nZXIgZ3Jvd3Mgd2l0aG91dCBib3VuZC4KLQotLSBJc3N1ZSAjOTEzNjogRml4ICdkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uJyBSdW50aW1lRXJyb3IKLSAgcHJvZHVjZWQgd2hlbiBwcm9maWxpbmcgdGhlIGRlY2ltYWwgbW9kdWxlLiAgVGhpcyB3YXMgZHVlIHRvIGEgZGFuZ2Vyb3VzCi0gIGl0ZXJhdGlvbiBvdmVyICdsb2NhbHMoKScgaW4gQ29udGV4dC5fX2luaXRfXy4KLQotLSBGaXggZXh0cmVtZSBzcGVlZCBpc3N1ZSBpbiBEZWNpbWFsLnBvdyB3aGVuIHRoZSBiYXNlIGlzIGFuIGV4YWN0IHBvd2VyIG9mIDEwCi0gIGFuZCB0aGUgZXhwb25lbnQgaXMgdGlueSAoZm9yIGV4YW1wbGUsIGBgRGVjaW1hbCgxMCkgKioKLSAgRGVjaW1hbCgnMWUtOTk5OTk5OTk5JylgYCkuCi0KLS0gSXNzdWUgIzkxODY6IEZpeCBtYXRoLmxvZzFwKC0xLjApIHRvIHJhaXNlIFZhbHVlRXJyb3IsIG5vdCBPdmVyZmxvd0Vycm9yLgotCi0tIElzc3VlICM5MTMwOiBGaXggdmFsaWRhdGlvbiBvZiByZWxhdGl2ZSBpbXBvcnRzIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzkxMjg6IEZpeCB2YWxpZGF0aW9uIG9mIGNsYXNzIGRlY29yYXRvcnMgaW4gcGFyc2VyIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTA5NDogcHl0aG9uIC1tIHBpY2tsZXRvb2xzIHdpbGwgbm93IGRpc2Fzc2VtYmxlIHBpY2tsZSBmaWxlcyBsaXN0ZWQgaW4KLSAgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuICBTZWUgb3V0cHV0IG9mIHB5dGhvbiAtbSBwaWNrbGV0b29scyAtaCBmb3IgbW9yZQotICBkZXRhaWxzLgotCi0tIElzc3VlICM1NDY4OiB1cmxlbmNvZGUgdG8gaGFuZGxlIGJ5dGVzIHR5cGUgYW5kIG90aGVyIGVuY29kaW5ncyBpbiBpdHMgcXVlcnkKLSAgcGFyYW1ldGVyLiBQYXRjaCBieSBEYW4gTWFobi4KLQotLSBJc3N1ZSAjNzY3MzogRml4IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgKENWRS0yMDEwLTIwODkpIGluIHRoZSBhdWRpb29wIG1vZHVsZSwKLSAgZW5zdXJlIHRoYXQgdGhlIGlucHV0IHN0cmluZyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUgc2l6ZS4KLQotLSBJc3N1ZSAjNjUwNzogQWNjZXB0IHNvdXJjZSBzdHJpbmdzIGluIGRpcy5kaXMoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IERhbmllbAotICBVcmJhbi4KLQotLSBJc3N1ZSAjNzgyOTogQ2xlYXJseSBkb2N1bWVudCB0aGF0IHRoZSBkaXMgbW9kdWxlIGlzIGV4cG9zaW5nIGFuCi0gIGltcGxlbWVudGF0aW9uIGRldGFpbCB0aGF0IGlzIG5vdCBzdGFibGUgYmV0d2VlbiBQeXRob24gVk1zIG9yIHJlbGVhc2VzLgotCi0tIElzc3VlICM2NTg5OiBjbGVhbnVwIGFzeW5jb3JlLnNvY2tldF9tYXAgaW4gY2FzZSBzbXRwZC5TTVRQU2VydmVyIGNvbnN0cnVjdG9yCi0gIHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzkxMTA6IEFkZGl0aW9uIG9mIENvbnRleHREZWNvcmF0b3IgdG8gY29udGV4dGxpYiwgZm9yIGNyZWF0aW5nIEFQSXMKLSAgdGhhdCBhY3QgYXMgYm90aCBjb250ZXh0IG1hbmFnZXJzIGFuZCBkZWNvcmF0b3JzLiBjb250ZXh0bWFuYWdlciBjaGFuZ2VzIHRvCi0gIHVzZSBDb250ZXh0RGVjb3JhdG9yLgotCi0tIEltcGxlbWVudCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlciBhbmQgZGVwcmVjYXRlIFB5TG9hZGVyIGFuZCBQeVB5Y0xvYWRlcgotICBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy40LgotCi0tIElzc3VlICM5MDY0OiBwZGIncyAidXAiIGFuZCAiZG93biIgY29tbWFuZHMgbm93IGFjY2VwdCBhbiBvcHRpb25hbCBhcmd1bWVudAotICBnaXZpbmcgdGhlIG51bWJlciBvZiBmcmFtZXMgdG8gZ28uCi0KLS0gSXNzdWUgIzkwMTg6IG9zLnBhdGgubm9ybWNhc2UoKSBub3cgcmFpc2VzIGEgVHlwZUVycm9yIGlmIHRoZSBhcmd1bWVudCBpcyBub3QKLSAgYGBzdHJgYCBvciBgYGJ5dGVzYGAuCi0KLS0gSXNzdWUgIzkwNzU6IEluIHRoZSBzc2wgbW9kdWxlLCByZW1vdmUgdGhlIHNldHRpbmcgb2YgYSBgYGRlYnVnYGAgZmxhZyBvbiBhbgotICBPcGVuU1NMIHN0cnVjdHVyZS4KLQotLSBJc3N1ZSAjODY4MjogVGhlIHNzbCBtb2R1bGUgbm93IHRlbXBvcmFyeSBpbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgYQotICBzb2NrZXQgb2JqZWN0IGdvdCB0aHJvdWdoIGBgUHlXZWFrcmVmX0dldE9iamVjdGBgLCBzbyBhcyB0byBhdm9pZCBwb3NzaWJsZQotICBkZWFsbG9jYXRpb24gd2hpbGUgdGhlIG9iamVjdCBpcyBzdGlsbCBiZWluZyB1c2VkLgotCi0tIElzc3VlICMxMzY4MzY4OiBGYW5jeVVSTE9wZW5lciBjbGFzcyBjaGFuZ2VkIHRvIHRocm93IGFuIEV4Y2VwdGlvbiBvbiB3cm9uZwotICBwYXNzd29yZCBpbnN0ZWFkIG9mIHByZXNlbnRpbmcgYW4gaW50ZXJhY3RpdmUgcHJvbXB0LiAgT2xkZXIgYmVoYXZpb3IgY2FuIGJlCi0gIG9idGFpbmVkIGJ5IHBhc3NpbmcgcmV0cnk9VHJ1ZSB0byBodHRwX2Vycm9yX3h4eCBtZXRob2RzIG9mIEZhbmN5VVJMT3BlbmVyLgotCi0tIElzc3VlICM4NzIwOiBGaXggcmVncmVzc2lvbiBjYXVzZWQgYnkgZml4IGZvciAjNDA1MCBieSBtYWtpbmcgZ2V0c291cmNlZmlsZQotICBzbWFydCBlbm91Z2ggdG8gZmluZCBzb3VyY2UgZmlsZXMgaW4gdGhlIGxpbmVjYWNoZS4KLQotLSBJc3N1ZSAjNTYxMDogZmVlZHBhcnNlciBubyBsb25nZXIgZWF0cyBleHRyYSBjaGFyYWN0ZXJzIGF0IHRoZSBlbmQgb2YgYSBib2R5Ci0gIHBhcnQgaWYgdGhlIGJvZHkgcGFydCBlbmRzIHdpdGggYSBgYFxyXG5gYC4KLQotLSBJc3N1ZSAjODk4NjogbWF0aC5lcmZjIHdhcyBpbmNvcnJlY3RseSByYWlzaW5nIE92ZXJmbG93RXJyb3IgZm9yIHZhbHVlcwotICBiZXR3ZWVuIC0yNy4zIGFuZCAtMzAuMCBvbiBzb21lIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjODc4NDogU2V0IHRhcmZpbGUgZGVmYXVsdCBlbmNvZGluZyB0byAndXRmLTgnIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzg5NjY6IElmIGEgY3R5cGVzIHN0cnVjdHVyZSBmaWVsZCBpcyBhbiBhcnJheSBvZiBjX2NoYXIsIGNvbnZlcnQgaXRzCi0gIHZhbHVlIHRvIGJ5dGVzIGluc3RlYWQgb2Ygc3RyIChhcyBkb25lIGZvciBjX2NoYXIgYW5kIGNfY2hhcl9wKS4KLQotLSBJc3N1ZSAjODE4ODogQ29tcGFyaXNvbnMgYmV0d2VlbiBEZWNpbWFsIGFuZCBGcmFjdGlvbiBvYmplY3RzIGFyZSBub3cKLSAgcGVybWl0dGVkLCByZXR1cm5pbmcgYSByZXN1bHQgYmFzZWQgb24gdGhlIGV4YWN0IG51bWVyaWNhbCB2YWx1ZXMgb2YgdGhlCi0gIG9wZXJhbmRzLiAgVGhpcyBidWlsZHMgb24gaXNzdWUgIzI1MzEsIHdoaWNoIGFsbG93ZWQgRGVjaW1hbC10by1mbG9hdAotICBjb21wYXJpc29uczsgYWxsIGNvbXBhcmlzb25zIGludm9sdmluZyBudW1lcmljIHR5cGVzIChib29sLCBpbnQsIGZsb2F0LAotICBjb21wbGV4LCBEZWNpbWFsLCBGcmFjdGlvbikgc2hvdWxkIG5vdyBhY3QgYXMgZXhwZWN0ZWQuCi0KLS0gSXNzdWUgIzg4OTc6IEZpeCBzdW5hdSBtb2R1bGUsIHVzZSBieXRlcyB0byB3cml0ZSB0aGUgaGVhZGVyLiBQYXRjaCB3cml0dGVuIGJ5Ci0gIFRob21hcyBKb2xsYW5zLgotCi0tIElzc3VlICM4ODk5OiB0aW1lLnN0cnVjdF90aW1lIG5vdyBoYXMgY2xhc3MgYW5kIGF0dHJpYnV0ZSBkb2NzdHJpbmdzLgotCi0tIElzc3VlICM2NDcwOiBEcm9wIFVOQyBwcmVmaXggaW4gRml4VGsuCi0KLS0gSXNzdWUgIzQ3Njg6IGJhc2U2NCBlbmNvZGVkIGVtYWlsIGJvZHkgcGFydHMgd2VyZSBpbmNvcnJlY3RseSBzdG9yZWQgYXMgYmluYXJ5Ci0gIHN0cmluZ3MuICBUaGV5IGFyZSBub3cgY29ycmVjdGx5IGNvbnZlcnRlZCB0byBzdHJpbmdzLgotCi0tIElzc3VlICM4ODMzOiB0YXJmaWxlIGNyZWF0ZWQgaGFyZCBsaW5rIGVudHJpZXMgd2l0aCBhIHNpemUgZmllbGQgIT0gMCBieQotICBtaXN0YWtlLgotCi0tIENoYXJzZXQuYm9keV9lbmNvZGUgbm93IGNvcnJlY3RseSBoYW5kbGVzIGJhc2U2NCBlbmNvZGluZyBieSBlbmNvZGluZyB3aXRoIHRoZQotICBvdXRwdXRfY2hhcnNldCBiZWZvcmUgY2FsbGluZyBiYXNlNjRtaW1lLmVuY29kZS4gIFBhc3NlcyB0aGUgdGVzdHMgZnJvbSAyLngKLSAgaXNzdWUgIzEzNjgyNDcuCi0KLS0gSXNzdWUgIzg4NDU6IHNxbGl0ZTMgQ29ubmVjdGlvbiBvYmplY3RzIG5vdyBoYXZlIGEgcmVhZC1vbmx5IGluX3RyYW5zYWN0aW9uCi0gIGF0dHJpYnV0ZSB0aGF0IGlzIFRydWUgaWZmIHRoZXJlIGFyZSB1bmNvbW1pdHRlZCBjaGFuZ2VzLgotCi0tIElzc3VlICMxMjg5MTE4OiBkYXRldGltZS50aW1lZGVsdGEgb2JqZWN0cyBjYW4gbm93IGJlIG11bHRpcGxpZWQgYnkgZmxvYXQgYW5kCi0gIGRpdmlkZWQgYnkgZmxvYXQgYW5kIGludCBvYmplY3RzLiAgUmVzdWx0cyBhcmUgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZQotICBvZiB0aW1lZGVsdGEucmVzb2x1dGlvbiB3aXRoIHRpZXMgcmVzb2x2ZWQgdXNpbmcgcm91bmQtaGFsZi10by1ldmVuIG1ldGhvZC4KLQotLSBJc3N1ZSAjNzE1MDogUmFpc2UgT3ZlcmZsb3dFcnJvciBpZiB0aGUgcmVzdWx0IG9mIGFkZGluZyBvciBzdWJ0cmFjdGluZwotICB0aW1lZGVsdGEgZnJvbSBkYXRlIG9yIGRhdGV0aW1lIGZhbGxzIG91dHNpZGUgb2YgdGhlIE1JTllFQVI6TUFYWUVBUiByYW5nZS4KLQotLSBJc3N1ZSAjODgwNjogYWRkIFNTTCBjb250ZXh0cyBzdXBwb3J0IHRvIGZ0cGxpYi4KLQotLSBJc3N1ZSAjNDc2OTogRml4IG1haW4oKSBmdW5jdGlvbiBvZiB0aGUgYmFzZTY0IG1vZHVsZSwgdXNlIHN5cy5zdGRpbi5idWZmZXIKLSAgYW5kIHN5cy5zdGRvdXQuYnVmZmVyIChpbnN0ZWFkIG9mIHN5cy5zdGRpbiBhbmQgc3lzLnN0ZG91dCkgdG8gdXNlIHRoZSBieXRlcwotICBBUEkuCi0KLS0gSXNzdWUgIzg3NzA6IE5vdyBzeXNjb25maWcgZGlzcGxheXMgaW5mb3JtYXRpb24gd2hlbiBpdCdzIGNhbGxlZCBhcyBhIHNjcmlwdC4KLSAgSW5pdGlhbCBpZGVhIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KLQotLSBJc3N1ZSAjNjY2MjogRml4IHBhcnNpbmcgb2YgbWFsZm9ybWF0dGVkIGNoYXJyZWYgKCYjYmFkOyksIHBhdGNoIHdyaXR0ZW4gYnkKLSAgRnJlZHJpayBIw6XDpXJkLgotCi0tIElzc3VlICM4NTQwOiBEZWNpbWFsIG1vZHVsZTogcmVuYW1lIHRoZSBDb250ZXh0Ll9jbGFtcCBhdHRyaWJ1dGUgdG8KLSAgQ29udGV4dC5jbGFtcCBhbmQgbWFrZSBpdCBwdWJsaWMuICBUaGlzIGlzIHVzZWZ1bCBpbiBjcmVhdGluZyBjb250ZXh0cyB0aGF0Ci0gIGNvcnJlc3BvbmQgdG8gdGhlIGRlY2ltYWwgaW50ZXJjaGFuZ2UgZm9ybWF0cyBzcGVjaWZpZWQgaW4gSUVFRSA3NTQuCi0KLS0gSXNzdWUgIzYyNjg6IEZpeCBzZWVrKCkgbWV0aG9kIG9mIGNvZGVjcy5vcGVuKCksIGRvbid0IHJlYWQgb3Igd3JpdGUgdGhlIEJPTQotICB0d2ljZSBhZnRlciBzZWVrKDApLiBGaXggYWxzbyByZXNldCgpIG1ldGhvZCBvZiBjb2RlY3MsIFVURi0xNiwgVVRGLTMyIGFuZAotICBTdHJlYW1Xcml0ZXIgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMzc5ODogc3lzLmV4aXQobWVzc2FnZSkgd3JpdGVzIHRoZSBtZXNzYWdlIHRvIHN5cy5zdGRlcnIgZmlsZSwgaW5zdGVhZAotICBvZiB0aGUgQyBmaWxlIHN0ZGVyciwgdG8gdXNlIHN0ZGVyciBlbmNvZGluZyBhbmQgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjODc4MjogQWRkIGEgdHJhaWxpbmcgbmV3bGluZSBpbiBsaW5lY2FjaGUudXBkYXRlY2FjaGUgdG8gdGhlIGxhc3QgbGluZQotICBvZiBmaWxlcyB3aXRob3V0IG9uZS4KLQotLSBJc3N1ZSAjODcyOTogUmV0dXJuIE5vdEltcGxlbWVudGVkIGZyb20gY29sbGVjdGlvbnMuTWFwcGluZy5fX2VxX18gd2hlbgotICBjb21wYXJpbmcgdG8gYSBub24tbWFwcGluZy4KLQotLSBJc3N1ZSAjODc3NDogdGFibmFubnkgdXNlcyB0aGUgZW5jb2RpbmcgY29va2llICgjY29kaW5nOi4uLikgdG8gdXNlIHRoZQotICBjb3JyZWN0IGVuY29kaW5nLgotCi0tIElzc3VlICM0ODcwOiBBZGQgYW4gYG9wdGlvbnNgIGF0dHJpYnV0ZSB0byBTU0wgY29udGV4dHMsIGFzIHdlbGwgYXMgc2V2ZXJhbAotICBgYE9QXypgYCBjb25zdGFudHMgdG8gdGhlIGBzc2xgIG1vZHVsZS4gIFRoaXMgYWxsb3dzIHRvIHNlbGVjdGl2ZWx5IGRpc2FibGUKLSAgcHJvdG9jb2wgdmVyc2lvbnMsIHdoZW4gdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBQUk9UT0NPTF9TU0x2MjNgLgotCi0tIElzc3VlICM4NzU5OiBGaXhlZCB1c2VyIHBhdGhzIGluIHN5c2NvbmZpZyBmb3IgcG9zaXggYW5kIG9zMiBzY2hlbWVzLgotCi0tIElzc3VlICM4NjYzOiBkaXN0dXRpbHMubG9nIGVtdWxhdGVzIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4gRml4Ci0gIGNvbXBpbGF0aW9uIGluIGEgbm9uLUFTQ0lJIGRpcmVjdG9yeSBpZiBzdGRvdXQgZW5jb2RpbmcgaXMgQVNDSUkgKGVnLiBpZgotICBzdGRvdXQgaXMgbm90IGEgVFRZKS4KLQotLSBJc3N1ZSAjODUxMzogb3MuZ2V0X2V4ZWNfcGF0aCgpIHN1cHBvcnRzIGInUEFUSCcga2V5IGFuZCBieXRlcyB2YWx1ZS4KLSAgc3VicHJvY2Vzcy5Qb3BlbigpIGFuZCBvcy5fZXhlY3ZwZSgpIHN1cHBvcnQgYnl0ZXMgcHJvZ3JhbSBuYW1lLiBBZGQKLSAgb3Muc3VwcG9ydHNfYnl0ZXNfZW52aXJvbiBmbGFnOiBUcnVlIGlmIHRoZSBuYXRpdmUgT1MgdHlwZSBvZiB0aGUgZW52aXJvbm1lbnQKLSAgaXMgYnl0ZXMgKGVnLiBGYWxzZSBvbiBXaW5kb3dzKS4KLQotLSBJc3N1ZSAjODYzMzogdGFyZmlsZSBpcyBub3cgYWJsZSB0byByZWFkIGFuZCB3cml0ZSBhcmNoaXZlcyB3aXRoICJyYXciIGJpbmFyeQotICBwYXggaGVhZGVycyBhcyBkZXNjcmliZWQgaW4gUE9TSVguMS0yMDA4LgotCi0tIElzc3VlICMxMjg1MDg2OiBTcGVlZCB1cCB1cmxsaWIucGFyc2UgZnVuY3Rpb25zOiBxdW90ZSwgcXVvdGVfZnJvbV9ieXRlcywKLSAgdW5xdW90ZSwgdW5xdW90ZV90b19ieXRlcy4KLQotLSBJc3N1ZSAjODY4ODogRGlzdHV0aWxzIG5vdyByZWNhbGN1bGF0ZXMgTUFOSUZFU1QgZXZlcnl0aW1lLgotCi0tIElzc3VlICM4NDc3OiBzc2wuUkFORF9lZ2QoKSBhbmQgc3NsLl90ZXN0X2RlY29kZV9jZXJ0KCkgc3VwcG9ydCBzdHIgd2l0aAotICBzdXJyb2dhdGVzIGFuZCBieXRlcyBmb3IgdGhlIGZpbGVuYW1lLgotCi0tIElzc3VlICM4NTUwOiBBZGQgZmlyc3QgY2xhc3MgYGBTU0xDb250ZXh0YGAgb2JqZWN0cyB0byB0aGUgc3NsIG1vZHVsZS4KLQotLSBJc3N1ZSAjODY4MTogTWFrZSB0aGUgemxpYiBtb2R1bGUncyBlcnJvciBtZXNzYWdlcyBtb3JlIGluZm9ybWF0aXZlIHdoZW4gdGhlCi0gIHpsaWIgaXRzZWxmIGRvZXNuJ3QgZ2l2ZSBhbnkgZGV0YWlsZWQgZXhwbGFuYXRpb24uCi0KLS0gVGhlIGF1ZGlvb3AgbW9kdWxlIG5vdyBzdXBwb3J0cyBzb3VuZCBmcmFnbWVudHMgb2YgbGVuZ3RoIGdyZWF0ZXIgdGhhbiAyKiozMQotICBieXRlcyBvbiA2NC1iaXQgbWFjaGluZXMsIGFuZCBpcyBQWV9TU0laRV9UX0NMRUFOLgotCi0tIElzc3VlICM0OTcyOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCB0byB0aGUgZnRwbGliLkZUUAotICBjbGFzcy4KLQotLSBJc3N1ZSAjODY2NDogSW4gcHlfY29tcGlsZSwgY3JlYXRlIF9fcHljYWNoZV9fIHdoZW4gdGhlIGNvbXBpbGVkIHBhdGggaXMKLSAgZ2l2ZW4uCi0KLS0gSXNzdWUgIzg1MTQ6IEFkZCBvcy5mc2VuY29kZSgpIGZ1bmN0aW9uIChVbml4IG9ubHkpOiBlbmNvZGUgYSBzdHJpbmcgdG8gYnl0ZXMKLSAgZm9yIHVzZSBpbiB0aGUgZmlsZSBzeXN0ZW0sIGVudmlyb25tZW50IHZhcmlhYmxlcyBvciB0aGUgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM4NTcxOiBGaXggYW4gaW50ZXJuYWwgZXJyb3Igd2hlbiBjb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIGEgY2h1bmsKLSAgbGFyZ2VyIHRoYW4gMUdCIHdpdGggdGhlIHpsaWIgbW9kdWxlJ3MgY29tcHJlc3NvciBhbmQgZGVjb21wcmVzc29yIG9iamVjdHMuCi0KLS0gSXNzdWUgIzg2MDM6IFN1cHBvcnQgYnl0ZXMgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgb24gVW5peDogQWRkIG9zLmVudmlyb25iCi0gIG1hcHBpbmcgYW5kIG9zLmdldGVudmIoKSBmdW5jdGlvbi4gb3MudW5zZXRlbnYoKSBlbmNvZGVzIHN0ciBhcmd1bWVudCB0byB0aGUKLSAgZmlsZSBzeXN0ZW0gZW5jb2Rpbmcgd2l0aCB0aGUgc3Vycm9nYXRlZXNjYXBlIGVycm9yIGhhbmRsZXIgKGluc3RlYWQgb2YKLSAgdXRmOC9zdHJpY3QpIGFuZCBhY2NlcHRzIGJ5dGVzLiBwb3NpeC5lbnZpcm9uIGtleXMgYW5kIHZhbHVlcyBhcmUgbm93IGJ5dGVzLgotCi0tIElzc3VlICM4NTczOiBhc3luY29yZSBfc3RyZXJyb3IoKSBmdW5jdGlvbiBtaWdodCB0aHJvdyBWYWx1ZUVycm9yLgotCi0tIElzc3VlICM4NDgzOiBhc3luY29yZS5kaXNwYXRjaGVyJ3MgX19nZXRhdHRyX18gbWV0aG9kIHByb2R1Y2VkIGNvbmZ1c2luZyBlcnJvcgotICBtZXNzYWdlcyB3aGVuIGFjY2Vzc2luZyB1bmRlZmluZWQgY2xhc3MgYXR0cmlidXRlcyBiZWNhdXNlIG9mIHRoZSBjaGVhcAotICBpbmhlcml0YW5jZSB3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuICBUaGUgY2hlYXAgaW5oZXJpdGFuY2UgaGFzIGJlZW4KLSAgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjNDI2NTogc2h1dGlsLmNvcHlmaWxlKCkgd2FzIGxlYWtpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGRpc2sgZmlsbHMuCi0gIFBhdGNoIGJ5IFRyZXMgU2VhdmVyLgotCi0tIElzc3VlICM4MzkwOiB0YXJmaWxlIHVzZXMgc3Vycm9nYXRlZXNjYXBlIGFzIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIKLSAgKGluc3RlYWQgb2YgcmVwbGFjZSBpbiByZWFkIG1vZGUgb3Igc3RyaWN0IGluIHdyaXRlIG1vZGUpLgotCi0tIElzc3VlICM3NzU1OiBVc2UgYW4gdW5lbmN1bWJlcmVkIGF1ZGlvIGZpbGUgZm9yIHRlc3RzLgotCi0tIElzc3VlICM4NjIxOiB1dWlkLnV1aWQ0KCkgcmV0dXJuZWQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzIGluIHRoZSBwYXJlbnQKLSAgYW5kIGFueSBjaGlsZHJlbiBjcmVhdGVkIHVzaW5nIGBgb3MuZm9ya2BgIG9uIE1hY09TIFggMTAuNi4KLQotLSBJc3N1ZSAjODU2NzogRml4IHByZWNlZGVuY2Ugb2Ygc2lnbmFscyBpbiBEZWNpbWFsIG1vZHVsZTogd2hlbiBhIERlY2ltYWwKLSAgb3BlcmF0aW9uIHJhaXNlcyBtdWx0aXBsZSBzaWduYWxzIGFuZCBtb3JlIHRoYW4gb25lIG9mIHRob3NlIHNpZ25hbHMgaXMKLSAgdHJhcHBlZCwgdGhlIHNwZWNpZmljYXRpb24gZGV0ZXJtaW5lcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHNpZ25hbHMgc2hvdWxkIGJlCi0gIGhhbmRsZWQuICBJbiBtYW55IGNhc2VzIHRoaXMgb3JkZXIgd2Fzbid0IGJlaW5nIGZvbGxvd2VkLCBsZWFkaW5nIHRvIHRoZSB3cm9uZwotICBQeXRob24gZXhjZXB0aW9uIGJlaW5nIHJhaXNlZC4KLQotLSBJc3N1ZSAjNzg2NTogVGhlIGNsb3NlKCkgbWV0aG9kIG9mIDptb2Q6YGlvYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdwotICBleGNlcHRpb25zIHJhaXNlZCBieSB0aGUgaW1wbGljaXQgZmx1c2goKS4gIEFsc28gcWVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQotICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgotCi0tIElzc3VlICM0Njg3OiBGaXggYWNjdXJhY3kgb2YgZ2FyYmFnZSBjb2xsZWN0aW9uIHJ1bnRpbWVzIGRpc3BsYXllZCB3aXRoCi0gIGdjLkRFQlVHX1NUQVRTLgotCi0tIElzc3VlICM4MzU0OiBUaGUgc2lnaW50ZXJydXB0IHNldHRpbmcgaXMgbm93IHByZXNlcnZlZCBmb3IgYWxsIHNpZ25hbHMsIG5vdAotICBqdXN0IFNJR0NITEQuCi0KLS0gSXNzdWUgIzcxOTI6IHdlYmJyb3dzZXIuZ2V0KCJmaXJlZm94Iikgbm93IHdvcmtzIG9uIE1hYyBPUyBYLCBhcyBkb2VzCi0gIHdlYmJyb3dzZXIuZ2V0KCJzYWZhcmkiKS4KLQotLSBJc3N1ZSAjODQ2NDogdGFyZmlsZSBubyBsb25nZXIgY3JlYXRlcyBmaWxlcyB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMgc2V0IHdoZW4KLSAgbW9kZT0id3wiIGlzIHVzZWQuCi0KLS0gSXNzdWUgIzc4MzQ6IEZpeCBjb25uZWN0KCkgb2YgQmx1ZXRvb3RoIEwyQ0FQIHNvY2tldHMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YKLSAgdGhlIExpbnV4IGtlcm5lbC4gIFBhdGNoIGJ5IFlhbml2IEFrbmluLgotCi0tIElzc3VlICM4Mjk1OiBBZGRlZCBzaHV0aWwudW5wYWNrX2FyY2hpdmUuCi0KLS0gSXNzdWUgIzYzMTI6IEZpeGVkIGh0dHAgSEVBRCByZXF1ZXN0IHdoZW4gdGhlIHRyYW5zZmVyIGVuY29kaW5nIGlzIGNodW5rZWQuCi0gIEl0IHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIGFuIGVtcHR5IHJlc3BvbnNlIG5vdy4KLQotLSBJc3N1ZSAjODU0NjogUmVqZWN0IE5vbmUgZ2l2ZW4gYXMgdGhlIGJ1ZmZlcmluZyBhcmd1bWVudCB0byBfcHlpby5vcGVuLgotCi0tIElzc3VlICM4NTQ5OiBGaXggY29tcGlsaW5nIHRoZSBfc3NsIGV4dGVuc2lvbiB1bmRlciBBSVguICBQYXRjaCBieQotICBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzY2NTY6IGZpeCBsb2NhbGUuZm9ybWF0X3N0cmluZyB0byBoYW5kbGUgZXNjYXBlZCBwZXJjZW50cwotICBhbmQgbWFwcGluZ3MuCi0KLS0gSXNzdWUgIzIzMDI6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNodXRkb3duLCB3aGVyZQotICB0aGUgbWV0aG9kIGNvdWxkIGJsb2NrIGluZGVmaW5pdGVseSBpZiBjYWxsZWQganVzdCBiZWZvcmUgdGhlIGV2ZW50IGxvb3AKLSAgc3RhcnRlZCBydW5uaW5nLiAgVGhpcyBhbHNvIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIGZyZWV6ZXMgd2l0bmVzc2VkIGluCi0gIHRlc3RfaHR0cHNlcnZlcnMuCi0KLS0gSXNzdWUgIzg1MjQ6IFdoZW4gY3JlYXRpbmcgYW4gU1NMIHNvY2tldCwgdGhlIHRpbWVvdXQgdmFsdWUgb2YgdGhlIG9yaWdpbmFsCi0gIHNvY2tldCB3YXNuJ3QgcmV0YWluZWQgKGluc3RlYWQsIGEgc29ja2V0IHdpdGggYSBwb3NpdGl2ZSB0aW1lb3V0IHdvdWxkIGJlCi0gIHR1cm5lZCBpbnRvIGEgbm9uLWJsb2NraW5nIFNTTCBzb2NrZXQpLgotCi0tIElzc3VlICM1MTAzOiBTU0wgaGFuZHNoYWtlIHdvdWxkIGlnbm9yZSB0aGUgc29ja2V0IHRpbWVvdXQgYW5kIGJsb2NrCi0gIGluZGVmaW5pdGVseSBpZiB0aGUgb3RoZXIgZW5kIGRpZG4ndCByZXNwb25kLgotCi0tIFRoZSBkb19oYW5kc2hha2UoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgbm93IGFkanVzdHMgdGhlIGJsb2NraW5nIG1vZGUgb2YgdGhlCi0gIFNTTCBzdHJ1Y3R1cmUgaWYgbmVjZXNzYXJ5IChhcyBvdGhlciBtZXRob2RzIGFscmVhZHkgZG8pLgotCi0tIElzc3VlICM4MzkxOiBvcy5leGVjdnBlKCkgYW5kIG9zLmdldGVudigpIHN1cHBvcnRzIHVuaWNvZGUgd2l0aCBzdXJyb2dhdGVzIGFuZAotICBieXRlcyBzdHJpbmdzIGZvciBlbnZpcm9ubWVudCBrZXlzIGFuZCB2YWx1ZXMuCi0KLS0gSXNzdWUgIzg0Njc6IFB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHN1YnByb2Nlc3MgZW5jb2RlcyB0aGUgZXJyb3IKLSAgbWVzc2FnZSB1c2luZyBzdXJyb2dhdGVwYXNzIGVycm9yIGhhbmRsZXIgdG8gc3VwcG9ydCBzdXJyb2dhdGVzIGluIHRoZQotICBtZXNzYWdlLgotCi0tIElzc3VlICM4NDY4OiBiejIuQloyRmlsZSgpIGFjY2VwdHMgc3RyIHdpdGggc3Vycm9nYXRlcyBhbmQgYnl0ZXMgZmlsZW5hbWVzLgotCi0tIElzc3VlICM4NDUxOiBTeXNsb2cgbW9kdWxlIG5vdyB1c2VzIGJhc2VuYW1lKHN5cy5hcmd2WzBdKSBpbnN0ZWFkIG9mIHRoZQotICBzdHJpbmcgInB5dGhvbiIgYXMgdGhlICppZGVudCouICBvcGVubG9nKCkgYXJndW1lbnRzIGFyZSBhbGwgb3B0aW9uYWwgYW5kCi0gIGtleXdvcmRzLgotCi0tIElzc3VlICM4MTA4OiBGaXggdGhlIHVud3JhcCgpIG1ldGhvZCBvZiBTU0wgb2JqZWN0cyB3aGVuIHRoZSBzb2NrZXQgaGFzIGEKLSAgbm9uLWluZmluaXRlIHRpbWVvdXQuICBBbHNvIG1ha2UgdGhhdCBtZXRob2QgZnJpZW5kbGllciB3aXRoIGFwcGxpY2F0aW9ucwotICB3YW50aW5nIHRvIGNvbnRpbnVlIHVzaW5nIHRoZSBzb2NrZXQgaW4gY2xlYXItdGV4dCBtb2RlLCBieSBkaXNhYmxpbmcKLSAgT3BlblNTTCdzIGludGVybmFsIHJlYWRhaGVhZC4gIFRoYW5rcyB0byBEYXJyeWwgTWlsZXMgZm9yIGd1aWRhbmNlLgotCi0tIElzc3VlICM4NDk2OiBtYWtlIG1haWxjYXAubG9va3VwKCkgYWx3YXlzIHJldHVybiBhIGxpc3QsIHJhdGhlciB0aGFuIGFuCi0gIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgR3JlZ29yeSBOb2ZpLgotCi0tIElzc3VlICM4MTk1OiBGaXggYSBjcmFzaCBpbiBzcWxpdGUgQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkgaWYgdGhlCi0gIGNvbGxhdGlvbiBuYW1lIGNvbnRhaW5zIGEgc3Vycm9nYXRlIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjODQ4NDogTG9hZCBhbGwgY2lwaGVycyBhbmQgZGlnZXN0IGFsZ29yaXRobXMgd2hlbiBpbml0aWFsaXppbmcgdGhlIF9zc2wKLSAgZXh0ZW5zaW9uLCBzdWNoIHRoYXQgdmVyaWZpY2F0aW9uIG9mIHNvbWUgU1NMIGNlcnRpZmljYXRlcyBkb2Vzbid0IGZhaWwKLSAgYmVjYXVzZSBvZiBhbiAidW5rbm93biBhbGdvcml0aG0iLgotCi0tIElzc3VlICM2NTQ3OiBBZGRlZCB0aGUgaWdub3JlX2RhbmdsaW5nX3N5bWxpbmtzIG9wdGlvbiB0byBzaHV0aWwuY29weXRyZWUuCi0KLS0gSXNzdWUgIzE1NDAxMTI6IE5vdyBhbGxvd2luZyB0aGUgY2hvaWNlIG9mIGEgY29weSBmdW5jdGlvbiBpbiBzaHV0aWwuY29weXRyZWUuCi0KLS0gSXNzdWUgIzQ4MTQ6IHRpbWVvdXQgcGFyYW1ldGVyIGlzIG5vdyBhcHBsaWVkIGFsc28gZm9yIGNvbm5lY3Rpb25zIHJlc3VsdGluZwotICBmcm9tIFBPUlQvRVBSVCBjb21tYW5kcy4KLQotLSBJc3N1ZSAjODQ2MzogYWRkZWQgbWlzc2luZyByZWZlcmVuY2UgdG8gYnp0YXIgaW4gc2h1dGlsJ3MgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNzE1NDogdXJsbGliLnJlcXVlc3QgY2FuIG5vdyBkZXRlY3QgdGhlIHByb3h5IHNldHRpbmdzIG9uIE9TWCAxMC42IChhcwotICBsb25nIGFzIHRoZSB1c2VyIGRpZG4ndCBzcGVjaWZ5ICdhdXRvbWF0aWMgcHJveHkgY29uZmlndXJhdGlvbicpLgotCi0tIElzc3VlICMzODE3OiBmdHBsaWIuRlRQLmFib3J0KCkgbWV0aG9kIG5vdyBjb25zaWRlcnMgMjI1IGEgdmFsaWQgcmVzcG9uc2UgY29kZQotICBhcyBzdGF0ZWQgaW4gUkZDLTk1OSBhdCBjaGFwdGVyIDUuNC4KLQotLSBJc3N1ZSAjODM5NDogX2N0eXBlcy5kbG9wZW4oKSBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoCi0gIHN1cnJvZ2F0ZXMuCi0KLS0gSXNzdWUgIzg1MDcyODogQWRkIGEgKnRpbWVvdXQqIHBhcmFtZXRlciB0byB0aGUgYGFjcXVpcmUoKWAgbWV0aG9kIG9mCi0gIGB0aHJlYWRpbmcuU2VtYXBob3JlYCBvYmplY3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgVG9yc3RlbiBMYW5kc2Nob2ZmLgotCi0tIElzc3VlICM4MzIyOiBBZGQgYSAqY2lwaGVycyogYXJndW1lbnQgdG8gU1NMIHNvY2tldHMsIHNvIGFzIHRvIGNoYW5nZSB0aGUKLSAgYXZhaWxhYmxlIGNpcGhlciBsaXN0LiAgSGVscHMgZml4IHRlc3Rfc3NsIHdpdGggT3BlblNTTCAxLjAuMC4KLQotLSBJc3N1ZSAjODM5Mzogc3VicHJvY2VzcyBhY2NlcHRzIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHN0ciB3aXRoIHN1cnJvZ2F0ZXMgZm9yCi0gIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotCi0tIElzc3VlICM3NjA2OiBYTUwtUlBDIHRyYWNlYmFjayBzdG9yZWQgaW4gWC10cmFjZWJhY2sgaXMgbm93IGVuY29kZWQgdG8gQVNDSUkKLSAgdXNpbmcgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyLgotCi0tIElzc3VlICM4NDEyOiBvcy5zeXN0ZW0oKSBub3cgYWNjZXB0cyBieXRlcywgYnl0ZWFycmF5IGFuZCBzdHIgd2l0aCBzdXJyb2dhdGVzLgotCi0tIElzc3VlICMyOTg3OiBSRkMyNzMyIHN1cHBvcnQgZm9yIHVybHBhcnNlIChJUHY2IGFkZHJlc3NlcykuIFBhdGNoIGJ5IFRvbnkKLSAgTG9ja2UgYW5kIEhhbnMgVWxyaWNoIE5pZWRlcm1hbm4uCi0KLS0gSXNzdWUgIzUyNzc6IEZpeCBxdW90ZSBjb3VudGluZyB3aGVuIHBhcnNpbmcgUkZDIDIyMzEgZW5jb2RlZCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICM3MzE2OiBUaGUgYWNxdWlyZSgpIG1ldGhvZCBvZiBsb2NrIG9iamVjdHMgaW4gdGhlIDptb2Q6YHRocmVhZGluZ2AKLSAgbW9kdWxlIG5vdyB0YWtlcyBhbiBvcHRpb25hbCB0aW1lb3V0IGFyZ3VtZW50IGluIHNlY29uZHMuICBUaW1lb3V0IHN1cHBvcnQKLSAgcmVsaWVzIG9uIHRoZSBzeXN0ZW0gdGhyZWFkaW5nIGxpYnJhcnksIHNvIGFzIHRvIGF2b2lkIGEgc2VtaS1idXN5IHdhaXQgbG9vcC4KLQotLSBJc3N1ZSAjODM4MzogcGlja2xlIGFuZCBwaWNrbGV0b29scyB1c2Ugc3Vycm9nYXRlcGFzcyBlcnJvciBoYW5kbGVyIHdoZW4KLSAgZW5jb2RpbmcgdW5pY29kZSBhcyB1dGY4IHRvIHN1cHBvcnQgbG9uZSBzdXJyb2dhdGVzIGFuZCBzdGF5IGNvbXBhdGlibGUgd2l0aAotICBQeXRob24gMi54IGFuZCAzLnguCi0KLS0gSXNzdWUgIzc1ODU6IGRpZmZsaWIgY29udGV4dCBhbmQgdW5pZmllZCBkaWZmcyBub3cgcGxhY2UgYSB0YWIgYmV0d2VlbgotICBmaWxlbmFtZSBhbmQgZGF0ZSwgY29uZm9ybWluZyB0byB0aGUgJ3N0YW5kYXJkcycgdGhleSB3ZXJlIG9yaWdpbmFsbHkgZGVzaWduZWQKLSAgdG8gZm9sbG93LiAgVGhpcyBpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggcGF0Y2ggdG9vbHMuCi0KLS0gSXNzdWUgIzc0NzI6IEZpeGVkIHR5cG8gaW4gZW1haWwuZW5jb2RlcnMgbW9kdWxlOyBtZXNzYWdlcyB1c2luZyBJU08tMjAyMgotICBjaGFyYWN0ZXIgc2V0cyB3aWxsIG5vdyBjb25zaXN0ZW50bHkgdXNlIGEgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyBvZiA3Yml0Ci0gIHJhdGhlciB0aGFuIHNvbWV0aW1lcyBiZWluZyBtYXJrZWQgYXMgOGJpdC4KLQotLSBJc3N1ZSAjODM3NTogdGVzdF9kaXN0dXRpbHMgbm93IGNoZWNrcyBpZiB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhcmUgc3RpbGwKLSAgcHJlc2VudCBiZWZvcmUgaXQgY2xlYW5zIHRoZW0uCi0KLS0gSXNzdWUgIzgzNzQ6IFVwZGF0ZSB0aGUgaW50ZXJuYWwgYWxpYXMgdGFibGUgaW4gdGhlIDptb2Q6YGxvY2FsZWAgbW9kdWxlIHRvCi0gIGNvdmVyIHJlY2VudCBsb2NhbGUgY2hhbmdlcyBhbmQgYWRkaXRpb25zLgotCi0tIElzc3VlICM4MzIxOiBHaXZlIGFjY2VzcyB0byBPcGVuU1NMIHZlcnNpb24gbnVtYmVycyBmcm9tIHRoZSBgc3NsYCBtb2R1bGUsCi0gIHVzaW5nIHRoZSBuZXcgYXR0cmlidXRlcyBgc3NsLk9QRU5TU0xfVkVSU0lPTmAsIGBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk9gIGFuZAotICBgc3NsLk9QRU5TU0xfVkVSU0lPTl9OVU1CRVJgLgotCi0tIEFkZCBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSBhbmQgZnVuY3Rvb2xzLmNtcF90b19rZXkoKS4KLQotLSBJc3N1ZSAjODI1NzogVGhlIERlY2ltYWwgY29uc3RydWN0IG5vdyBhY2NlcHRzIGEgZmxvYXQgaW5zdGFuY2UgZGlyZWN0bHksCi0gIGNvbnZlcnRpbmcgdGhhdCBmbG9hdCB0byBhIERlY2ltYWwgb2YgZXF1YWwgdmFsdWU6Ci0KLSAgICAgPj4+IERlY2ltYWwoMS4xKQotICAgICBEZWNpbWFsKCcxLjEwMDAwMDAwMDAwMDAwMDA4ODgxNzg0MTk3MDAxMjUyMzIzMzg5MDUzMzQ0NzI2NTYyNScpCi0KLS0gSXNzdWUgIzgyOTQ6IFRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBEZWNpbWFsIGFuZCBmbG9hdCBpbnN0YW5jZXMKLSAgZGlyZWN0bHkuCi0KLS0gSXNzdWUgIzcyNzk6IENvbXBhcmlzb25zIGludm9sdmluZyBhIERlY2ltYWwgc2lnbmFsaW5nIE5hTiBub3cgc2lnbmFsCi0gIEludmFsaWRPcGVyYXRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcgRmFsc2UuICAoQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQKLSAgTmFOIGFyZSB1bmNoYW5nZWQuKSAgQWxzbywgRGVjaW1hbCBxdWlldCBOYU5zIGFyZSBub3cgaGFzaGFibGU7IERlY2ltYWwKLSAgc2lnbmFsaW5nIE5hTnMgcmVtYWluIHVuaGFzaGFibGUuCi0KLS0gSXNzdWUgIzI1MzE6IENvbXBhcmlzb24gb3BlcmF0aW9ucyBiZXR3ZWVuIGZsb2F0cyBhbmQgRGVjaW1hbCBpbnN0YW5jZXMgbm93Ci0gIHJldHVybiBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzOyBwcmV2aW91c2x5IHRoZXkKLSAgcmV0dXJuZWQgYW4gYXJiaXRyYXJ5IHJlc3VsdCBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgaWQoZmxvYXQpIGFuZAotICBpZChEZWNpbWFsKS4gIFNlZSBhbHNvIGlzc3VlICM4MTg4LCB3aGljaCBhZGRzIERlY2ltYWwtdG8tRnJhY3Rpb24KLSAgY29tcGFyaXNvbnMuCi0KLS0gQWRkZWQgYSBzdWJ0cmFjdCgpIG1ldGhvZCB0byBjb2xsZWN0aW9ucy5Db3VudGVyKCkuCi0KLS0gSXNzdWUgIzgyMzM6IFdoZW4gcnVuIGFzIGEgc2NyaXB0LCBweV9jb21waWxlLnB5IG9wdGlvbmFsbHkgdGFrZXMgYSBzaW5nbGUKLSAgYXJndW1lbnQgYC1gIHdoaWNoIHRlbGxzIGl0IHRvIHJlYWQgZmlsZXMgdG8gY29tcGlsZSBmcm9tIHN0ZGluLiAgRWFjaCBsaW5lIGlzCi0gIHJlYWQgb24gZGVtYW5kIGFuZCB0aGUgbmFtZWQgZmlsZSBpcyBjb21waWxlZCBpbW1lZGlhdGVseS4gIChPcmlnaW5hbCBwYXRjaCBieQotICBQaW90ciBPxbxhcm93c2tpKS4KLQotLSBCYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNoYW5nZTogVW5pY29kZSBjb2RlcG9pbnRzIGxpbmUgdGFidWxhdGlvbiAoMHgwQikgYW5kCi0gIGZvcm0gZmVlZCAoMHgwQykgYXJlIG5vdyBjb25zaWRlcmVkIGxpbmVicmVha3MsIGFzIHNwZWNpZmllZCBpbiBVbmljb2RlCi0gIFN0YW5kYXJkIEFubmV4ICMxNC4gIFNlZSBpc3N1ZSAjNzY0My4gIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjE0LwotCi0tIENvbXBhcmlzb25zIHVzaW5nIG9uZSBvZiA8LCA8PSwgPiwgPj0gYmV0d2VlbiBhIGNvbXBsZXggaW5zdGFuY2UgYW5kIGEKLSAgRnJhY3Rpb25zIGluc3RhbmNlIG5vdyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgVHJ1ZS9GYWxzZS4gIFRoaXMKLSAgbWFrZXMgRnJhY3Rpb24gPD0+IGNvbXBsZXggY29tcGFyaXNvbnMgY29uc2lzdGVudCB3aXRoIGludCA8PT4gY29tcGxleCwgZmxvYXQKLSAgPD0+IGNvbXBsZXgsIGFuZCBjb21wbGV4IDw9PiBjb21wbGV4IGNvbXBhcmlzb25zLgotCi0tIElzc3VlICM4MTM5OiBvc3NhdWRpb2RldiBkaWRuJ3QgaW5pdGlhbGl6ZSBpdHMgdHlwZXMgcHJvcGVybHksIHRoZXJlZm9yZSBzb21lCi0gIG1ldGhvZHMgKHN1Y2ggYXMgb3NzX21peGVyX2RldmljZS5maWxlbm8oKSkgd2VyZSBub3QgYXZhaWxhYmxlLiAgSW5pdGlhbCBwYXRjaAotICBieSBCZXJ0cmFuZCBKYW5pbi4KLQotLSBJc3N1ZSAjODIwNTogUmVtb3ZlIHRoZSAiTW9kdWxlcyIgZGlyZWN0b3J5IGZyb20gc3lzLnBhdGggd2hlbiBQeXRob24gaXMKLSAgcnVubmluZyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkgKFBPU0lYIG9ubHkpLgotCi0tIElzc3VlICM3NTEyOiBzaHV0aWwuY29weXN0YXQoKSBjb3VsZCByYWlzZSBhbiBPU0Vycm9yIHdoZW4gdGhlIGZpbGVzeXN0ZW0KLSAgZGlkbid0IHN1cHBvcnQgY2hmbGFncygpIChmb3IgZXhhbXBsZSBaRlMgdW5kZXIgRnJlZUJTRCkuICBUaGUgZXJyb3IgaXMgbm93Ci0gIHNpbGVuY2VkLgotCi0tIElzc3VlICM3ODYwOiBwbGF0Zm9ybS51bmFtZSBub3cgcmVwb3J0cyB0aGUgY29ycmVjdCAnbWFjaGluZScgdHlwZSB3aGVuIFB5dGhvbgotICBpcyBydW5uaW5nIGluIFdPVzY0IG1vZGUgb24gNjQgYml0IFdpbmRvd3MuCi0KLS0gSXNzdWUgIzM4OTAsICM4MjIyOiBGaXggcmVjdigpIGFuZCByZWN2X2ludG8oKSBvbiBub24tYmxvY2tpbmcgU1NMIHNvY2tldHMuCi0gIEFsc28sIGVuYWJsZSB0aGUgU1NMX01PREVfQVVUT19SRVRSWSBmbGFnIG9uIFNTTCBzb2NrZXRzLCBzbyB0aGF0IGJsb2NraW5nCi0gIHJlYWRzIGFuZCB3cml0ZXMgYXJlIGFsd2F5cyByZXRyaWVkIGJ5IE9wZW5TU0wgaXRzZWxmLgotCi0tIElzc3VlICM0MjgyOiBGaXggdGhlIG1haW4gZnVuY3Rpb24gb2YgdGhlIHByb2ZpbGUgbW9kdWxlIGZvciBhIG5vbi1BU0NJSQotICBzY3JpcHQsIG9wZW4gdGhlIGZpbGUgaW4gYmluYXJ5IG1vZGUgYW5kIG5vdCBpbiB0ZXh0IG1vZGUgd2l0aCB0aGUgZGVmYXVsdAotICAodXRmOCkgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzgxNzk6IEZpeCBtYWNwYXRoLnJlYWxwYXRoKCkgb24gYSBub24tZXhpc3RpbmcgcGF0aC4KLQotLSBJc3N1ZSAjODAyNDogVXBkYXRlIHRoZSBVbmljb2RlIGRhdGFiYXNlIHRvIDUuMi4KLQotLSBJc3N1ZSAjODE2ODogcHlfY29tcGlsZSBub3cgaGFuZGxlcyBmaWxlcyB3aXRoIHV0Zi04IEJPTVMuCi0KLS0gYGB0b2tlbml6ZS5kZXRlY3RfZW5jb2RpbmdgYCBub3cgcmV0dXJucyBgYCd1dGYtOC1zaWcnYGAgd2hlbiBhIFVURi04IEJPTSBpcwotICBkZXRlY3RlZC4KLQotLSBJc3N1ZSAjNjcxNi8yOiBCYWNrc2xhc2gtcmVwbGFjZSBlcnJvciBvdXRwdXQgaW4gY29tcGlsYWxsLgotCi0tIElzc3VlICM0OTYxOiBJbmNvbnNpc3RlbnQvd3JvbmcgcmVzdWx0IG9mIGFza3llc25vIGZ1bmN0aW9uIGluIHRrTWVzc2FnZUJveAotICB3aXRoIFRjbC9Uay04LjUuCi0KLS0gSXNzdWUgIzgxNDA6IGV4dGVuZCBjb21waWxlYWxsIHRvIGNvbXBpbGUgc2luZ2xlIGZpbGVzLiAgQWRkIC1pIG9wdGlvbi4KLQotLSBJc3N1ZSAjNzM1NjogY3R5cGVzLnV0aWw6IE1ha2UgcGFyc2luZyBvZiBsZGNvbmZpZyBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCi0gIGxvY2FsZS4KLQotLSBUaGUgaW50ZXJuYWxzIG9mIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSBvbiBQT1NJWCBzeXN0ZW1zIGhhdmUgYmVlbiByZXBsYWNlZCBieQotICBhbiBleHRlbnNpb24gbW9kdWxlIChfcG9zaXhzdWJwcm9jZXNzKSBzbyB0aGF0IHRoZSBmb3JrKCkrZXhlYygpIGNhbiBiZSBkb25lCi0gIHNhZmVseSB3aXRob3V0IHRoZSBwb3NzaWJpbGl0eSBvZiBkZWFkbG9jayBpbiBtdWx0aXRocmVhZGVkIGFwcGxpY2F0aW9ucy4KLQotLSBzdWJwcm9jZXNzLlBvcGVuIG5vdyBoYXMgcmVzdG9yZV9zaWduYWxzIGFuZCBzdGFydF9uZXdfc2Vzc2lvbiBmZWF0dXJlcy4gIFRoZQotICBkZWZhdWx0IG9mIHJlc3RvcmVfc2lnbmFscz1UcnVlIGlzIGEgbmV3IGJlaGF2aW9yIGNvbXBhcmVkIHRvIGVhcmxpZXIgUHl0aG9uCi0gIHZlcnNpb25zLiAgVGhpcyBtZWFucyB0aGF0IHNpZ25hbHMgc3VjaCBhcyBTSUdQSVBFIGFyZSBub3QgaWdub3JlZCBieSBkZWZhdWx0Ci0gIGluIHN1YnByb2Nlc3NlcyBsYXVuY2hlZCBieSBQeXRob24gKElzc3VlICMxNjUyKS4KLQotLSBJc3N1ZSAjNjQ3MjogVGhlIHhtbC5ldHJlZSBwYWNrYWdlIGlzIHVwZGF0ZWQgdG8gRWxlbWVudFRyZWUgMS4zLiAgVGhlCi0gIGNFbGVtZW50VHJlZSBtb2R1bGUgaXMgdXBkYXRlZCB0b28uCi0KLS0gSXNzdWUgIzc3NzQ6IFNldCBzeXMuZXhlY3V0YWJsZSB0byBhbiBlbXB0eSBzdHJpbmcgaWYgYXJndlswXSBoYXMgYmVlbiBzZXQgdG8KLSAgYW4gbm9uIGV4aXN0ZW50IHByb2dyYW0gbmFtZSBhbmQgUHl0aG9uIGlzIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtCi0gIG5hbWUuCi0KLS0gSXNzdWUgIzc4ODA6IEZpeCBzeXNjb25maWcgd2hlbiB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgaXMgYSBzeW1ib2xpYyBsaW5rLgotCi0tIElzc3VlICM2NTA5OiBmaXggcmUuc3ViIHRvIHdvcmsgcHJvcGVybHkgd2hlbiB0aGUgcGF0dGVybiwgdGhlIHN0cmluZywgYW5kIHRoZQotICByZXBsYWNlbWVudCB3ZXJlIGFsbCBieXRlcy4gIFBhdGNoIGJ5IEFudG9pbmUgUGl0cm91LgotCi0tIFRoZSBzcWxpdGUzIG1vZHVsZSB3YXMgdXBkYXRlZCB0byBweXNxbGl0ZSAyLjYuMC4gVGhpcyBmaXhlcyBzZXZlcmFsIG9ic2N1cmUKLSAgYnVncyBhbmQgYWxsb3dzIGxvYWRpbmcgU1FMaXRlIGV4dGVuc2lvbnMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLgotCi0tIElzc3VlICMxMDU0OTQzOiBGaXggYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoJ05GQycsIHRleHQpYGAgZm9yIHRoZSBQdWJsaWMKLSAgUmV2aWV3IElzc3VlICMyOSAoaHR0cDovL3VuaWNvZGUub3JnL3Jldmlldy9wci0yOS5odG1sKS4KLQotLSBJc3N1ZSAjNzQ5NDogZml4IGEgY3Jhc2ggaW4gX2xzcHJvZiAoY1Byb2ZpbGUpIGFmdGVyIGNsZWFyaW5nIHRoZSBwcm9maWxlciwKLSAgcmVzZXQgYWxzbyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBwb2ludGVyIGNvbnRleHQuCi0KLS0gSXNzdWUgIzcyMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VyIHByb3RvY29sIHRvIHRoZSBUYXJGaWxlCi0gIGNsYXNzLgotCi0tIElzc3VlICM3MjUwOiBGaXggaW5mbyBsZWFrIG9mIG9zLmVudmlyb24gYWNyb3NzIG11bHRpLXJ1biB1c2VzIG9mCi0gIHdzZ2lyZWYuaGFuZGxlcnMuQ0dJSGFuZGxlci4KLQotLSBJc3N1ZSAjMTcyOTMwNTogRml4IGRvY3Rlc3QgdG8gaGFuZGxlIGVuY29kZSBlcnJvciB3aXRoICJiYWNrc2xhc2hyZXBsYWNlIi4KLQotLSBJc3N1ZSAjNjkxMjkxOiBjb2RlY3Mub3BlbigpIHNob3VsZCBub3QgY29udmVydCBlbmQgb2YgbGluZXMgb24gcmVhZGluZyBhbmQKLSAgd3JpdGluZy4KLQotLSBJc3N1ZSAjNzg2OTogbG9nZ2luZzogaW1wcm92ZWQgZGlhZ25vc3RpYyBmb3IgZm9ybWF0LXRpbWUgZXJyb3JzLgotCi0tIElzc3VlICM3ODY4OiBsb2dnaW5nOiBhZGRlZCBsb2dnZXJDbGFzcyBhdHRyaWJ1dGUgdG8gTWFuYWdlci4KLQotLSBsb2dnaW5nOiBJbXBsZW1lbnRlZCBQRVAgMzkxLgotCi0tIElzc3VlICMxNTM3NzIxOiBBZGQgYSB3cml0ZWhlYWRlcigpIG1ldGhvZCB0byBjc3YuRGljdFdyaXRlci4KLQotLSBJc3N1ZSAjNzk1OTogY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9ucyBhcmUgbm93IHJlZ2lzdGVyZWQgY29ycmVjdGx5IHdpdGggdGhlCi0gIGN5Y2xlIGdhcmJhZ2UgY29sbGVjdG9yLgotCi0tIElzc3VlICM1ODAxOiByZW1vdmVkIHNwdXJpb3VzIGVtcHR5IGxpbmVzIGluIHdzZ2lyZWYuCi0KLS0gSXNzdWUgIzY2NjY6IGZpeCBidWcgaW4gdHJhY2UucHkgdGhhdCBhcHBsaWVkIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJlCi0gIGlnbm9yZWQgb25seSB0byB0aGUgZmlyc3QgZmlsZS4gIE5vdGVkIGJ5IEJvZ2RhbiBPcGFuY2h1ay4KLQotLSBJc3N1ZSAjNzU5NzogY3Vyc2VzLnVzZV9lbnYoKSBjYW4gbm93IGJlIGNhbGxlZCBiZWZvcmUgaW5pdHNjcigpLiAgTm90ZWQgYnkKLSAgS2FuLVJ1IENoZW4uCi0KLS0gSXNzdWUgIzczMTA6IGZpeCB0aGUgX19yZXByX18gb2Ygb3MuZW52aXJvbiB0byBzaG93IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0KLS0gSXNzdWUgIzc5NzA6IGVtYWlsLkdlbmVyYXRvci5mbGF0dGVuIG5vdyBjb3JyZWN0bHkgZmxhdHRlbnMgbWVzc2FnZS9yZmM4MjIKLSAgbWVzc2FnZXMgcGFyc2VkIGJ5IGVtYWlsLlBhcnNlci5IZWFkZXJQYXJzZXIuCi0KLS0gSXNzdWUgIzczNjE6IEltcG9ydGxpYiB3YXMgbm90IHByb3Blcmx5IGNoZWNraW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4KLSAgYnl0ZWNvZGUgZmlsZSB3aGVuIGl0IHdhcyBsZXNzIHRoZW4gOCBieXRlcy4KLQotLSBJc3N1ZSAjNzYzMzogSW4gdGhlIGRlY2ltYWwgbW9kdWxlLCBDb250ZXh0IGNsYXNzIG1ldGhvZHMgKHdpdGggdGhlIGV4Y2VwdGlvbgotICBvZiBjYW5vbmljYWwgYW5kIGlzX2Nhbm9uaWNhbCkgbm93IGFjY2VwdCBpbnN0YW5jZXMgb2YgaW50IGFuZCBsb25nIHdoZXJldmVyIGEKLSAgRGVjaW1hbCBpbnN0YW5jZSBpcyBhY2NlcHRlZCwgYW5kIGltcGxpY2l0bHkgY29udmVydCB0aGF0IGFyZ3VtZW50IHRvIERlY2ltYWwuCi0gIFByZXZpb3VzbHkgb25seSBzb21lIGFyZ3VtZW50cyB3ZXJlIGNvbnZlcnRlZC4KLQotLSBJc3N1ZSAjNzgzNTogc2hlbHZlIHNob3VsZCBubyBsb25nZXIgcHJvZHVjZSBteXN0ZXJpb3VzIHdhcm5pbmdzIGR1cmluZwotICBpbnRlcnByZXRlciBzaHV0ZG93bi4KLQotLSBJc3N1ZSAjMjc0NjogRG9uJ3QgZXNjYXBlIGFtcGVyc2FuZHMgYW5kIGFuZ2xlIGJyYWNrZXRzICgiJiIsICI8IiwgIj4iKSBpbiBYTUwKLSAgcHJvY2Vzc2luZyBpbnN0cnVjdGlvbnMgYW5kIGNvbW1lbnRzLiAgVGhlc2UgcmF3IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnkgdGhlCi0gIFhNTCBzcGVjaWZpY2F0aW9uLCBhbmQgYXJlIG5lY2Vzc2FyeSB3aGVuIG91dHB1dHRpbmcgZS5nLiAgUEhQIGNvZGUgaW4gYQotICBwcm9jZXNzaW5nIGluc3RydWN0aW9uLiAgUGF0Y2ggYnkgTmVpbCBNdWxsZXIuCi0KLS0gSXNzdWUgIzYyMzM6IEVsZW1lbnRUcmVlIGZhaWxlZCBjb252ZXJ0aW5nIHVuaWNvZGUgY2hhcmFjdGVycyB0byBYTUwgZW50aXRpZXMKLSAgd2hlbiB0aGV5IGNvdWxkJ3QgYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHJlcXVlc3RlZCBvdXRwdXQgZW5jb2RpbmcuICBQYXRjaCBieQotICBKZXJyeSBDaGVuLgotCi0tIElzc3VlICM2MDAzOiBhZGQgYW4gYXJndW1lbnQgdG8gYGB6aXBmaWxlLlppcGZpbGUud3JpdGVzdHJgYCB0byBzcGVjaWZ5IHRoZQotICBjb21wcmVzc2lvbiB0eXBlLgotCi0tIElzc3VlICM0NzcyOiBSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBhbiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCBpcwotICBzcGVjaWZpZWQsIHJhdGhlciB0aGFuIGZhbGwgdGhyb3VnaCB0byBBRl9QQUNLRVQgKGluIHRoZSBgc29ja2V0YCBtb2R1bGUpLgotICBBbHNvLCByYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFR5cGVFcnJvciB3aGVuIGFuIHVua25vd24gVElQQyBhZGRyZXNzIHR5cGUKLSAgaXMgc3BlY2lmaWVkLiAgUGF0Y2ggYnkgQnJpYW4gQ3VydGluLgotCi0tIElzc3VlICM2OTM5OiBGaXggZmlsZSBJL08gb2JqZWN0cyBpbiB0aGUgYGlvYCBtb2R1bGUgdG8ga2VlcCB0aGUgb3JpZ2luYWwgZmlsZQotICBwb3NpdGlvbiB3aGVuIGNhbGxpbmcgYHRydW5jYXRlKClgLiAgSXQgd291bGQgcHJldmlvdXNseSBjaGFuZ2UgdGhlIGZpbGUKLSAgcG9zaXRpb24gdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbiBvZgotICBmdHJ1bmNhdGUoKSBhbmQgb3RoZXIgdHJ1bmNhdGlvbiBBUElzLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzc2MTA6IFJld29ya2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbAotICA6Y2xhc3M6YHppcGZpbGUuWmlwRXh0RmlsZWAgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgZmlsZXMgc3RvcmVkIGluc2lkZSBhbgotICBhcmNoaXZlLiAgVGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpcyBzaWduaWZpY2FudGx5IGZhc3RlciBhbmQgY2FuIGJlIHdyYXBwZWQgaW4KLSAgYSA6Y2xhc3M6YGlvLkJ1ZmZlcmVkUmVhZGVyYCBvYmplY3QgZm9yIG1vcmUgc3BlZWR1cHMuICBJdCBhbHNvIHNvbHZlcyBhbgotICBpc3N1ZSB3aGVyZSBpbnRlcmxlYXZlZCBjYWxscyB0byBgcmVhZCgpYCBhbmQgYHJlYWRsaW5lKClgIGdpdmUgd3JvbmcgcmVzdWx0cy4KLSAgUGF0Y2ggYnkgTmlyIEFpZGVzLgotCi0tIElzc3VlICM2OTYzOiBBZGRlZCAibWF4dGFza3NwZXJjaGlsZCIgYXJndW1lbnQgdG8gbXVsdGlwcm9jZXNzaW5nLlBvb2wsCi0gIGFsbG93aW5nIGZvciBhIG1heGltdW0gbnVtYmVyIG9mIHRhc2tzIHdpdGhpbiB0aGUgcG9vbCB0byBiZSBjb21wbGV0ZWQgYnkgdGhlCi0gIHdvcmtlciBiZWZvcmUgdGhhdCB3b3JrZXIgaXMgdGVybWluYXRlZCwgYW5kIGEgbmV3IG9uZSBjcmVhdGVkIHRvIHJlcGxhY2UgaXQuCi0KLS0gSXNzdWUgIzc3OTI6IFJlZ2lzdGVyaW5nIG5vbi1jbGFzc2VzIHRvIEFCQ3MgcmFpc2VkIGFuIG9ic2N1cmUgZXJyb3IuCi0KLS0gSXNzdWUgIzc3ODU6IERvbid0IGFjY2VwdCBieXRlcyBpbiBGaWxlSU8ud3JpdGUoKS4KLQotLSBSZW1vdmVkIHRoZSBmdW5jdGlvbnMgJ3ZlcmlmeScgYW5kICd2ZXJlcScgZnJvbSBMaWIvdGVzdC9zdXBwb3J0LnB5LgotCi0tIElzc3VlICM3NzczOiBGaXggYW4gVW5ib3VuZExvY2FsRXJyb3IgaW4gcGxhdGZvcm0ubGludXhfZGlzdHJpYnV0aW9uKCkgd2hlbgotICB0aGUgcmVsZWFzZSBmaWxlIGlzIGVtcHR5LgotCi0tIElzc3VlICM3NTYxOiBGaXggY3Jhc2hlcyB3aGVuIHVzaW5nIGJ5dGVhcnJheSBvYmplY3RzIHdpdGggdGhlIHBvc2l4Ci0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY3MDc2NTogUHJldmVudCBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yIGZyb20gcmUtd3JhcHBpbmcgaGVhZGVycyBpbgotICBtdWx0aXBhcnQvc2lnbmVkIE1JTUUgcGFydHMsIHdoaWNoIGZpeGVzIG9uZSBvZiB0aGUgc291cmNlcyBvZiBpbnZhbGlkCi0gIG1vZGlmaWNhdGlvbnMgdG8gc3VjaCBwYXJ0cyBieSBHZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzc3MDM6IEFkZCBzdXBwb3J0IGZvciB0aGUgbmV3IGJ1ZmZlciBBUEkgdG8gYGJpbmFzY2lpLmEyYmhxeGAuICBQYXRjaAotICBieSBGbG9yZW50IFhpY2x1bmEsIGFsb25nIHdpdGggc29tZSBhZGRpdGlvbmFsIHRlc3RzLgotCi0tIElzc3VlICM3NzAxOiBGaXggY3Jhc2ggaW4gYmluYXNjaWkuYjJhX3V1KCkgaW4gZGVidWcgbW9kZSB3aGVuIGdpdmVuIGEgMS1ieXRlCi0gIGFyZ3VtZW50LiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzMyOTk6IEZpeCBwb3NzaWJsZSBjcmFzaCBpbiB0aGUgX3NyZSBtb2R1bGUgd2hlbiBnaXZlbiBiYWQgYXJndW1lbnQKLSAgdmFsdWVzIGluIGRlYnVnIG1vZGUuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMjg0NjogQWRkIHN1cHBvcnQgZm9yIGd6aXAuR3ppcEZpbGUgcmVhZGluZyB6ZXJvLXBhZGRlZCBmaWxlcy4gIFBhdGNoCi0gIGJ5IEJyaWFuIEN1cnRpbi4KLQotLSBJc3N1ZSAjNzY4MTogVXNlIGZsb29yIGRpdmlzaW9uIGluIGFwcHJvcGlhdGUgcGxhY2VzIGluIHRoZSB3YXZlIG1vZHVsZS4KLQotLSBJc3N1ZSAjNTM3MjogRHJvcCB0aGUgcmV1c2Ugb2YgLm8gZmlsZXMgaW4gRGlzdHV0aWxzJyBjY29tcGlsZXIgKHNpbmNlCi0gIEV4dGVuc2lvbiBleHRyYSBvcHRpb25zIG1heSBjaGFuZ2UgdGhlIG91dHB1dCB3aXRob3V0IGNoYW5naW5nIHRoZSAuYwotICBmaWxlKS4gSW5pdGlhbCBwYXRjaCBieSBDb2xsaW4gV2ludGVyLgotCi0tIElzc3VlICM3NjE3OiBNYWtlIHN1cmUgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIuVW5peENDb21waWxlciByZWNvZ25pemVzIGdjYwotICB3aGVuIGl0IGhhcyBhIGZ1bGx5IHF1YWxpZmllZCBjb25maWd1cmF0aW9uIHByZWZpeC4gSW5pdGlhbCBwYXRjaCBieSBBcmZyZXZlci4KLQotLSBJc3N1ZSAjNzEwNTogTWFrZSBXZWFrS2V5RGljdGlvbmFyeSBhbmQgV2Vha1ZhbHVlRGljdGlvbmFyeSByb2J1c3QgYWdhaW5zdCB0aGUKLSAgZGVzdHJ1Y3Rpb24gb2Ygd2Vha3JlZidlZCBvYmplY3RzIHdoaWxlIGl0ZXJhdGluZy4KLQotLSBJc3N1ZSAjNzQ1NTogRml4IHBvc3NpYmxlIGNyYXNoIGluIGNQaWNrbGUgb24gaW52YWxpZCBpbnB1dC4gIFBhdGNoIGJ5IFZpY3RvcgotICBTdGlubmVyLgotCi0tIElzc3VlICMxNjI4MjA1OiBTb2NrZXQgZmlsZSBvYmplY3RzIHJldHVybmVkIGJ5IHNvY2tldC5zb2NrZXQubWFrZWZpbGUoKSBub3cKLSAgcHJvcGVybHkgaGFuZGxlcyBFSU5UUiB3aXRoaW4gdGhlIHJlYWQsIHJlYWRsaW5lLCB3cml0ZSAmIGZsdXNoIG1ldGhvZHMuICBUaGUKLSAgc29ja2V0LnNlbmRhbGwoKSBtZXRob2Qgbm93IHByb3Blcmx5IGhhbmRsZXMgaW50ZXJydXB0ZWQgc3lzdGVtIGNhbGxzLgotCi0tIElzc3VlICM3NDcxOiBJbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBHemlwRmlsZSdzIGJ1ZmZlcmluZyBtZWNoYW5pc20sIGFuZAotICBtYWtlIGl0IGltcGxlbWVudCB0aGUgYGlvLkJ1ZmZlcmVkSU9CYXNlYCBBQkMgdG8gYWxsb3cgZm9yIGZ1cnRoZXIgc3BlZWR1cHMgYnkKLSAgd3JhcHBpbmcgaXQgaW4gYW4gYGlvLkJ1ZmZlcmVkUmVhZGVyYC4gIFBhdGNoIGJ5IE5pciBBaWRlcy4KLQotLSBJc3N1ZSAjMzk3MjogaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24gbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MKLSAgcGFyYW1ldGVyIHRvIGFsbG93IHNwZWNpZnlpbmcgd2hlcmUgeW91ciBjb25uZWN0aW9ucyBjb21lIGZyb20uCi0KLS0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzIHBhcmFtZXRlci4KLQotLSBJc3N1ZSAjNTUxMTogbm93IHppcGZpbGUuWmlwRmlsZSBjYW4gYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4gIEluaXRpYWwKLSAgcGF0Y2ggYnkgQnJpYW4gQ3VydGluLgotCi0tIElzc3VlICM3NTU2OiBNYWtlIHN1cmUgRGlzdHV0aWxzJyBtc3ZjOWNvbXBpbGUgcmVhZHMgYW5kIHdyaXRlcyB0aGUgTVNWQyBYTUwKLSAgTWFuaWZlc3QgZmlsZSBpbiB0ZXh0IG1vZGUgc28gc3RyaW5nIHBhdHRlcm5zIGNhbiBiZSB1c2VkIGluIHJlZ3VsYXIKLSAgZXhwcmVzc2lvbnMuCi0KLS0gSXNzdWUgIzc1NTI6IFJlbW92ZWQgbGluZSBmZWVkIGluIHRoZSBiYXNlNjQgQXV0aG9yaXphdGlvbiBoZWFkZXIgaW4gdGhlCi0gIERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCB0byBhdm9pZCBhbiBlcnJvciB3aGVuIFB5UEkgcmVhZHMgaXQuICBUaGlzIG9jY3VycyBvbgotICBsb25nIHBhc3N3b3Jkcy4gSW5pdGlhbCBwYXRjaCBieSBKUCBTdC4gUGllcnJlLgotCi0tIElzc3VlICM3MjMxOiB1cmxsaWIyIGNhbm5vdCBoYW5kbGUgaHR0cHMgd2l0aCBwcm94eSByZXF1aXJpbmcgYXV0aC4gIFBhdGNoIGJ5Ci0gIFRhdHN1aGlybyBUc3VqaWthd2EuCi0KLS0gSXNzdWUgIzQ3NTc6IGB6bGliLmNvbXByZXNzYCBhbmQgb3RoZXIgbWV0aG9kcyBpbiB0aGUgemxpYiBtb2R1bGUgbm93IHJhaXNlIGEKLSAgVHlwZUVycm9yIHdoZW4gZ2l2ZW4gYW4gYHN0cmAgb2JqZWN0IChyYXRoZXIgdGhhbiBhIGBieXRlc2AtbGlrZSBvYmplY3QpLgotICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lciBhbmQgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3MzQ5OiBNYWtlIG1ldGhvZHMgb2YgZmlsZSBvYmplY3RzIGluIHRoZSBpbyBtb2R1bGUgYWNjZXB0IE5vbmUgYXMgYW4KLSAgYXJndW1lbnQgd2hlcmUgZmlsZS1saWtlIG9iamVjdHMgKGllIFN0cmluZ0lPIGFuZCBCeXRlc0lPKSBhY2NlcHQgdGhlbSB0byBtZWFuCi0gIHRoZSBzYW1lIGFzIHBhc3Npbmcgbm8gYXJndW1lbnQuCi0KLS0gSXNzdWUgIzczNTc6IHRhcmZpbGUgbm8gbG9uZ2VyIHN1cHByZXNzZXMgZmF0YWwgZXh0cmFjdGlvbiBlcnJvcnMgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjNTk0OTogYWRkZWQgY2hlY2sgZm9yIGNvcnJlY3QgbGluZWVuZHMgaW4gaW5wdXQgZnJvbSBJTUFQIHNlcnZlciBpbgotICBpbWFwbGliLgotCi0tIEFkZCBjb3VudCgpIGFuZCByZXZlcnNlKCkgbWV0aG9kcyB0byBjb2xsZWN0aW9ucy5kZXF1ZSgpLgotCi0tIEZpeCB2YXJpYXRpb25zIG9mIGV4dGVuZGluZyBkZXF1ZXM6ICBkLmV4dGVuZChkKSAgZC5leHRlbmRsZWZ0KGQpICBkKz1kCi0KLS0gSXNzdWUgIzY5ODY6IEZpeCBjcmFzaCBpbiB0aGUgSlNPTiBDIGFjY2VsZXJhdG9yIHdoZW4gY2FsbGVkIHdpdGggdGhlIHdyb25nCi0gIHBhcmFtZXRlciB0eXBlcy4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICM3NDU3OiBhZGRlZCBhIHJlYWRfcGtnX2ZpbGUgbWV0aG9kIHRvCi0gIGRpc3R1dGlscy5kaXN0LkRpc3RyaWJ1dGlvbk1ldGFkYXRhLgotCi0tIGxvZ2dpbmc6IEFkZGVkIG9wdGlvbmFsIGBzZWN1cmVgIHBhcmFtZXRlciB0byBTTVRQSGFuZGxlciwgdG8gZW5hYmxlIHVzZSBvZgotICBUTFMgd2l0aCBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4KLQotLSBJc3N1ZSAjMTkyMzogRml4ZWQgdGhlIHJlbW92YWwgb2YgbWVhbmluZ2Z1bCBzcGFjZXMgd2hlbiBQS0ctSU5GTyBpcyBnZW5lcmF0ZWQKLSAgaW4gRGlzdHV0aWxzLiAgUGF0Y2ggYnkgU3RlcGhlbiBFbXNsaWUuCi0KLS0gSXNzdWUgIzQxMjA6IERyb3AgcmVmZXJlbmNlIHRvIENSVCBmcm9tIG1hbmlmZXN0IHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyB3aXRoCi0gIG1zdmM5Y29tcGlsZXIuCi0KLS0gSXNzdWUgIzczMzM6IFRoZSBgcG9zaXhgIG1vZHVsZSBnYWlucyBhbiBgaW5pdGdyb3VwcygpYCBmdW5jdGlvbiBwcm92aWRpbmcKLSAgYWNjZXNzIHRvIHRoZSBpbml0Z3JvdXBzKDMpIEMgbGlicmFyeSBjYWxsIG9uIFVuaXggc3lzdGVtcyB3aGljaCBpbXBsZW1lbnQgaXQuCi0gIFBhdGNoIGJ5IEplYW4tUGF1bCBDYWxkZXJvbmUuCi0KLS0gSXNzdWUgIzc0MDg6IEZpeGVkIGRpc3R1dGlscy50ZXN0cy5zZGlzdCBzbyBpdCBkb2Vzbid0IGNoZWNrIGZvciBncm91cAotICBvd25lcnNoaXAgd2hlbiB0aGUgZ3JvdXAgaXMgbm90IGZvcmNlZCwgYmVjYXVzZSB0aGUgZ3JvdXAgbWF5IGJlIGRpZmZlcmVudAotICBmcm9tIHRoZSB1c2VyJ3MgZ3JvdXAgYW5kIGluaGVyaXQgZnJvbSBpdHMgY29udGFpbmVyIHdoZW4gdGhlIHRlc3QgaXMgcnVuLgotCi0tIElzc3VlICM0NDg2OiBXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYW4gZXhwbGljaXQgY2F1c2UsIGRvIG5vdCBwcmludCBpdHMKLSAgaW1wbGljaXQgY29udGV4dCB0b28uICBUaGlzIGFmZmVjdHMgdGhlIGB0cmFjZWJhY2tgIG1vZHVsZSBhcyB3ZWxsIGFzIGJ1aWx0LWluCi0gIGV4Y2VwdGlvbiBwcmludGluZy4KLQotLSBJc3N1ZSAjMTUxNTogRW5hYmxlIHVzZSBvZiBkZWVwY29weSgpIHdpdGggaW5zdGFuY2UgbWV0aG9kcy4gIFBhdGNoIGJ5IFJvYmVydAotICBDb2xsaW5zLgotCi0tIElzc3VlICM3NDAzOiBsb2dnaW5nOiBGaXhlZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBpbiBsb2NrIGNyZWF0aW9uLgotCi0tIElzc3VlICM2ODQ1OiBBZGQgcmVzdGFydCBzdXBwb3J0IGZvciBiaW5hcnkgdXBsb2FkIGluIGZ0cGxpYi4gIFRoZQotICBgc3RvcmJpbmFyeSgpYCBtZXRob2Qgb2YgRlRQIGFuZCBGVFBfVExTIG9iamVjdHMgZ2FpbnMgYW4gb3B0aW9uYWwgYHJlc3RgCi0gIGFyZ3VtZW50LiAgUGF0Y2ggYnkgUGFibG8gTW91em8uCi0KLS0gSXNzdWUgIzU3ODg6IGBkYXRldGltZS50aW1lZGVsdGFgIG9iamVjdHMgZ2V0IGEgbmV3IGB0b3RhbF9zZWNvbmRzKClgIG1ldGhvZAotICByZXR1cm5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBzZWNvbmRzIGluIHRoZSBkdXJhdGlvbi4gIFBhdGNoIGJ5IEJyaWFuCi0gIFF1aW5sYW4uCi0KLS0gSXNzdWUgIzcxMzM6IFNTTCBvYmplY3RzIG5vdyBzdXBwb3J0IHRoZSBuZXcgYnVmZmVyIEFQSS4KLQotLSBJc3N1ZSAjMTQ4ODk0MzogZGlmZmxpYi5EaWZmZXIoKSBkb2Vzbid0IGFsd2F5cyBhZGQgaGludHMgZm9yIHRhYiBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICM2MTIzOiB0YXJmaWxlIG5vdyBvcGVucyBlbXB0eSBhcmNoaXZlcyBjb3JyZWN0bHkgYW5kIGNvbnNpc3RlbnRseQotICByYWlzZXMgUmVhZEVycm9yIG9uIGVtcHR5IGZpbGVzLgotCi0tIElzc3VlICM3MzU0OiBkaXN0dXRpbHMudGVzdHMudGVzdF9tc3ZjOWNvbXBpbGVyIC0gZHJhZ2Z1bGx3aW5kb3dzIGNhbiBiZSAyLgotCi0tIElzc3VlICM1MDM3OiBQcm94eSB0aGUgX19ieXRlc19fIHNwZWNpYWwgbWV0aG9kIGluc3RlYWQgdG8gX19ieXRlc19fIGluc3RlYWQKLSAgb2YgX19zdHJfXy4KLQotLSBJc3N1ZSAjNzM0MTogQ2xvc2UgdGhlIGludGVybmFsIGZpbGUgb2JqZWN0IGluIHRoZSBUYXJGaWxlIGNvbnN0cnVjdG9yIGluIGNhc2UKLSAgb2YgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzcyOTM6IGRpc3R1dGlscy50ZXN0X21zdmM5Y29tcGlsZXIgaXMgZml4ZWQgdG8gd29yayBvbiBhbnkgZnJlc2gKLSAgV2luZG93cyBib3guIEhlbHAgcHJvdmlkZWQgYnkgRGF2aWQgQm9sZW4uCi0KLS0gSXNzdWUgIzIwNTQ6IGZ0cGxpYiBub3cgcHJvdmlkZXMgYW4gRlRQX1RMUyBjbGFzcyB0byBkbyBzZWN1cmUgRlRQIHVzaW5nIFRMUwotICBvciBTU0wuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KLQotLSBJc3N1ZSAjNzMyODogcHlkb2Mgbm8gbG9uZ2VyIGNvcnJ1cHRzIHN5cy5wYXRoIHdoZW4gcnVuIHdpdGggdGhlICctbScgc3dpdGNoLgotCi0tIElzc3VlICM0OTY5OiBUaGUgbWltZXR5cGVzIG1vZHVsZSBub3cgcmVhZHMgdGhlIE1JTUUgZGF0YWJhc2UgZnJvbSB0aGUKLSAgcmVnaXN0cnkgdW5kZXIgV2luZG93cy4gIFBhdGNoIGJ5IEdhYnJpZWwgR2VuZWxsaW5hLgotCi0tIElzc3VlICM2ODE2OiBydW5weSBub3cgcHJvdmlkZXMgYSBydW5fcGF0aCBmdW5jdGlvbiB0aGF0IGFsbG93cyBQeXRob24gY29kZSB0bwotICBleGVjdXRlIGZpbGUgcGF0aHMgdGhhdCByZWZlciB0byBzb3VyY2Ugb3IgY29tcGlsZWQgUHl0aG9uIGZpbGVzIGFzIHdlbGwgYXMKLSAgemlwZmlsZXMsIGRpcmVjdG9yaWVzIGFuZCBvdGhlciB2YWxpZCBzeXMucGF0aCBlbnRyaWVzIHRoYXQgY29udGFpbiBhCi0gIF9fbWFpbl9fLnB5IGZpbGUuICBUaGlzIGFsbG93cyBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb3RoZXIgUHl0aG9uIHNjcmlwdHMgdG8KLSAgc3VwcG9ydCB0aGUgc2FtZSBmbGV4aWJpbGl0eSBhcyB0aGUgQ1B5dGhvbiBjb21tYW5kIGxpbmUgaXRzZWxmLgotCi0tIElzc3VlICM3MzE4OiBtdWx0aXByb2Nlc3Npbmcgbm93IHVzZXMgYSB0aW1lb3V0IHdoZW4gaXQgZmFpbHMgdG8gZXN0YWJsaXNoIGEKLSAgY29ubmVjdGlvbiB3aXRoIGFub3RoZXIgcHJvY2VzcywgcmF0aGVyIHRoYW4gbG9vcGluZyBlbmRsZXNzbHkuICBUaGUgZGVmYXVsdAotICB0aW1lb3V0IGlzIDIwIHNlY29uZHMsIHdoaWNoIHNob3VsZCBiZSBhbXBseSBzdWZmaWNpZW50IGZvciBsb2NhbCBjb25uZWN0aW9ucy4KLQotLSBJc3N1ZSAjNzE5NzogQWxsb3cgdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIgb2JqZWN0cyB0byBiZSBwaWNrbGVkIGFuZAotICB1bnBpY2tsZWQuICBUaGlzIGZpeGVzIGNyYXNoZXMgdW5kZXIgV2luZG93cyB3aGVuIHRyeWluZyB0byBydW4KLSAgdGVzdF9tdWx0aXByb2Nlc3NpbmcgaW4gdmVyYm9zZSBtb2RlLgotCi0tIElzc3VlICM3ODkzOiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0YGAgaXMgbWFkZSBwdWJsaWMgYW5kIGEgYGByZXN1bHRjbGFzc2BgCi0gIGFyZ3VtZW50IGFkZGVkIHRvIHRoZSBUZXh0VGVzdFJ1bm5lciBjb25zdHJ1Y3RvciBhbGxvd2luZyBhIGRpZmZlcmVudCByZXN1bHQKLSAgY2xhc3MgdG8gYmUgdXNlZCB3aXRob3V0IGhhdmluZyB0byBzdWJjbGFzcy4KLQotLSBJc3N1ZSAjNzU4ODogYGB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdC5nZXREZXNjcmlwdGlvbmBgIG5vdyBpbmNsdWRlcyB0aGUgdGVzdAotICBuYW1lIGluIGZhaWx1cmUgcmVwb3J0cyBldmVuIGlmIHRoZSB0ZXN0IGhhcyBhIGRvY3N0cmluZy4KLQotLSBJc3N1ZSAjMzAwMTogQWRkIGEgQyBpbXBsZW1lbnRhdGlvbiBvZiByZWN1cnNpdmUgbG9ja3Mgd2hpY2ggaXMgdXNlZCBieQotICBkZWZhdWx0IHdoZW4gaW5zdGFudGlhdGluZyBhIGB0aHJlYWRpbmcuUkxvY2tgIG9iamVjdC4gVGhpcyBtYWtlcyByZWN1cnNpdmUKLSAgbG9ja3MgYXMgZmFzdCBhcyByZWd1bGFyIG5vbi1yZWN1cnNpdmUgbG9ja3MgKHByZXZpb3VzbHksIHRoZXkgd2VyZSBzbG93ZXIgYnkKLSAgMTB4IHRvIDE1eCkuCi0KLS0gSXNzdWUgIzcyODI6IEZpeCBhIG1lbW9yeSBsZWFrIHdoZW4gYW4gUkxvY2sgd2FzIHVzZWQgaW4gYSB0aHJlYWQgb3RoZXIgdGhhbgotICB0aG9zZSBzdGFydGVkIHRocm91Z2ggYHRocmVhZGluZy5UaHJlYWRgIChmb3IgZXhhbXBsZSwgdXNpbmcKLSAgYF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpYCkuCi0KLS0gSXNzdWUgIzcxODc6IEltcG9ydGxpYiB3b3VsZCBub3Qgc2lsZW5jZSB0aGUgSU9FcnJvciByYWlzZWQgd2hlbiB0cnlpbmcgdG8KLSAgd3JpdGUgbmV3IGJ5dGVjb2RlIHdoZW4gaXQgd2FzIG1hZGUgcmVhZC1vbmx5LgotCi0tIElzc3VlICM3MjY0OiBGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIGRlYWxsb2NhdGluZyB0aHJlYWQtbG9jYWwgb2JqZWN0cwotICB3aGljaCBhcmUgcGFydCBvZiBhIHJlZmVyZW5jZSBjeWNsZS4KLQotLSBJc3N1ZSAjNzIxMTogQWxsb3cgNjQtYml0IHZhbHVlcyBmb3IgdGhlIGBpZGVudGAgYW5kIGBkYXRhYCBmaWVsZHMgb2Yga2V2ZW50Ci0gIG9iamVjdHMgb24gNjQtYml0IHN5c3RlbXMuICBQYXRjaCBieSBNaWNoYWVsIEJyb2dodG9uLgotCi0tIElzc3VlICM2ODk2OiBtYWlsYm94Lk1haWxkaXIgbm93IGludmFsaWRhdGVzIGl0cyBpbnRlcm5hbCBjYWNoZSBlYWNoIHRpbWUgYQotICBtb2RpZmljYXRpb24gaXMgZG9uZSB0aHJvdWdoIGl0LiAgVGhpcyBmaXhlcyBpbmNvbnNpc3RlbmNpZXMgYW5kIHRlc3QgZmFpbHVyZXMKLSAgb24gc3lzdGVtcyB3aXRoIHNsaWdodGx5IGJvZ3VzIG10aW1lIGJlaGF2aW91ci4KLQotLSBJc3N1ZSAjNzI0NiAmIElzc3VlICM3MjA4OiBnZXRwYXNzIG5vdyBwcm9wZXJseSBmbHVzaGVzIGlucHV0IGJlZm9yZSByZWFkaW5nCi0gIGZyb20gc3RkaW4gc28gdGhhdCBleGlzdGluZyBpbnB1dCBkb2VzIG5vdCBjb25mdXNlIGl0IGFuZCBsZWFkIHRvIGluY29ycmVjdAotICBlbnRyeSBvciBhbiBJT0Vycm9yLiAgSXQgYWxzbyBwcm9wZXJseSBmbHVzaGVzIGl0IGFmdGVyd2FyZHMgdG8gYXZvaWQgdGhlCi0gIHRlcm1pbmFsIGVjaG9pbmcgdGhlIGlucHV0IGFmdGVyd2FyZHMgb24gT1NlcyBzdWNoIGFzIFNvbGFyaXMuCi0KLS0gSXNzdWUgIzcyMzM6IEZpeCBhIG51bWJlciBvZiB0d28tYXJndW1lbnQgRGVjaW1hbCBtZXRob2RzIHRvIG1ha2Ugc3VyZSB0aGF0Ci0gIHRoZXkgYWNjZXB0IGFuIGludCBvciBsb25nIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuICBBbHNvIGZpeCBidWdneSBoYW5kbGluZyBvZgotICBsYXJnZSBhcmd1bWVudHMgKHRob3NlIHdpdGggY29lZmZpY2llbnQgbG9uZ2VyIHRoYW4gdGhlIGN1cnJlbnQgcHJlY2lzaW9uKSBpbgotICBzaGlmdCBhbmQgcm90YXRlLgotCi0tIElzc3VlICM0NzUwOiBTdG9yZSB0aGUgYmFzZW5hbWUgb2YgdGhlIG9yaWdpbmFsIGZpbGVuYW1lIGluIHRoZSBnemlwIEZOQU1FCi0gIGhlYWRlciBhcyByZXF1aXJlZCBieSBSRkMgMTk1Mi4KLQotLSBJc3N1ZSAjMTE4MDogQWRkZWQgYSBuZXcgZ2xvYmFsIG9wdGlvbiB0byBpZ25vcmUgfi8ucHlkaXN0dXRpbHMuY2ZnIGluCi0gIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNzIxODogRml4IHRlc3Rfc2l0ZSBmb3Igd2luMzIsIHRoZSBkaXJlY3RvcnkgY29tcGFyaXNvbiB3YXMgZG9uZSB3aXRoCi0gIGFuIHVwcGVyY2FzZS4KLQotLSBJc3N1ZSAjNzIwNTogRml4IGEgcG9zc2libGUgZGVhZGxvY2sgd2hlbiB1c2luZyBhIEJaMkZpbGUgb2JqZWN0IGZyb20KLSAgc2V2ZXJhbCB0aHJlYWRzIGF0IG9uY2UuCi0KLS0gSXNzdWUgIzcwNzc6IGxvZ2dpbmc6IFN5c0xvZ0hhbmRsZXIgbm93IHRyZWF0cyBVbmljb2RlIGFzIHBlciBSRkMgNTQyNC4KLQotLSBJc3N1ZSAjNzA5OTogRGVjaW1hbC5pc19ub3JtYWwgbm93IHJldHVybnMgVHJ1ZSBmb3IgbnVtYmVycyB3aXRoIGV4cG9uZW50Ci0gIGxhcmdlciB0aGFuIGVtYXguCi0KLS0gSXNzdWUgIzcwODA6IGxvY2FsZS5zdHJ4ZnJtKCkgcmFpc2VzIGEgTWVtb3J5RXJyb3Igb24gNjQtYml0IG5vbi1XaW5kb3dzCi0gIHBsYXRmb3JtcywgYW5kIGFzc29ydGVkIGxvY2FsZSBmaXhlcyBieSBEZXJrIERydWtrZXIuCi0KLS0gSXNzdWUgIzU4MzM6IEZpeCBleHRyYSBzcGFjZSBjaGFyYWN0ZXIgaW4gcmVhZGxpbmUgY29tcGxldGlvbiB3aXRoIHRoZSBHTlUKLSAgcmVhZGxpbmUgbGlicmFyeSB2ZXJzaW9uIDYuMC4KLQotLSBJc3N1ZSAjNjg5NDogRml4ZWQgdGhlIGlzc3VlIHVybGxpYjIgZG9lc24ndCByZXNwZWN0ICJub19wcm94eSIgZW52aXJvbm1lbnQuCi0KLS0gSXNzdWUgIzcwODY6IEFkZGVkIFRDUCBzdXBwb3J0IHRvIFN5c0xvZ0hhbmRsZXIsIGFuZCB0aWRpZWQgdXAgc29tZQotICBhbmFjaHJvbmlzbXMgaW4gdGhlIGNvZGUgd2hpY2ggd2VyZSBhIHJlbGljIG9mIDEuNS4yIGNvbXBhdGliaWxpdHkuCi0KLS0gSXNzdWUgIzcwODI6IFdoZW4gZmFsbGluZyBiYWNrIHRvIHRoZSBNSU1FICduYW1lJyBwYXJhbWV0ZXIsIHRoZSBjb3JyZWN0IHBsYWNlCi0gIHRvIGxvb2sgZm9yIGl0IGlzIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLgotCi0tIE1ha2UgdG9rZW5pemUuZGV0ZWN0X2NvZGluZygpIG5vcm1hbGl6ZSB1dGYtOCBhbmQgaXNvLTg4NTktMSB2YXJpYW50cyBsaWtlIHRoZQotICBidWlsdGluIHRva2VuaXplci4KLQotLSBJc3N1ZSAjNzA0ODogRm9yY2UgRGVjaW1hbC5sb2diIHRvIHJvdW5kIGl0cyByZXN1bHQgd2hlbiB0aGF0IHJlc3VsdCBpcyB0b28KLSAgbGFyZ2UgdG8gZml0IGluIHRoZSBjdXJyZW50IHByZWNpc2lvbi4KLQotLSBJc3N1ZSAjNjIzNiwgIzYzNDg6IEZpeCB2YXJpb3VzIGZhaWx1cmVzIGluIHRoZSBJL08gbGlicmFyeSB1bmRlciBBSVggYW5kCi0gIG90aGVyIHBsYXRmb3Jtcywgd2hlbiB1c2luZyBhIG5vbi1nY2MgY29tcGlsZXIuIFBhdGNoIGJ5IERlcmsgRHJ1a2tlci4KLQotLSBJc3N1ZSAjNDYwNjogUGFzc2luZyAnTm9uZScgaWYgY3R5cGVzIGFyZ3R5cGUgaXMgc2V0IHRvIFBPSU5URVIoLi4uKSAgZG9lcyBub3cKLSAgYWx3YXlzIHJlc3VsdCBpbiBOVUxMLgotCi0tIElzc3VlICM1MDQyOiBTdHJ1Y3R1cmUgc3ViLXN1YmNsYXNzIGRvZXMgbm93IGluaXRpYWxpemUgY29ycmVjdGx5IHdpdGggYmFzZQotICBjbGFzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjNjg4MjogSW1wb3J0IHV1aWQgY3JlYXRlcyB6b21iaWVzIHByb2Nlc3Nlcy4KLQotLSBJc3N1ZSAjNjYzNTogRml4IHByb2ZpbGVyIHByaW50aW5nIHVzYWdlIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzY4NTY6IEFkZCBhIGZpbHRlciBrZXl3b3JkIGFyZ3VtZW50IHRvIFRhckZpbGUuYWRkKCkuCi0KLS0gSXNzdWUgIzY4ODg6IHBkYidzIGFsaWFzIGNvbW1hbmQgd2FzIGJyb2tlbiB3aGVuIG5vIGFyZ3VtZW50cyB3ZXJlIGdpdmVuLgotCi0tIElzc3VlICM2ODU3OiBEZWZhdWx0IGZvcm1hdCgpIGFsaWdubWVudCBzaG91bGQgYmUgJz4nIGZvciBEZWNpbWFsIGluc3RhbmNlcy4KLQotLSBJc3N1ZSAjNjc5NTogaW50KERlY2ltYWwoJ25hbicpKSBub3cgcmFpc2VzIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcKLSAgTmFOIG9yIHJhaXNpbmcgSW52YWxpZENvbnRleHQuICBBbHNvLCBmaXggaW5maW5pdGUgcmVjdXJzaW9uIGluCi0gIGxvbmcoRGVjaW1hbCgnbmFuJykpLgotCi0tIElzc3VlICM2ODUwOiBGaXggYnVnIGluIERlY2ltYWwuX3BhcnNlX2Zvcm1hdF9zcGVjaWZpZXIgZm9yIGZvcm1hdHMgd2l0aCBubwotICB0eXBlIHNwZWNpZmllci4KLQotLSBJc3N1ZSAjNjIzOTogY3R5cGVzLmNfY2hhcl9wIHJldHVybiB2YWx1ZSBtdXN0IHJldHVybiBieXRlcy4KLQotLSBJc3N1ZSAjNjgzODogVXNlIGEgbGlzdCB0byBhY2N1bXVsYXRlIHRoZSB2YWx1ZSBpbnN0ZWFkIG9mIHJlcGVhdGVkbHkKLSAgY29uY2F0ZW5hdGluZyBzdHJpbmdzIGluIGh0dHAuY2xpZW50J3MgSFRUUFJlc3BvbnNlLl9yZWFkX2NodW5rZWQgcHJvdmlkaW5nIGEKLSAgc2lnbmlmaWNhbnQgc3BlZWQgaW5jcmVhc2Ugd2hlbiBkb3dubG9hZGluZyBsYXJnZSBmaWxlcyBzZXJ2ZW5kIHdpdGggYQotICBUcmFuc2Zlci1FbmNvZGluZyBvZiAnY2h1bmtlZCcuCi0KLS0gVHJ5aW5nIHRvIGltcG9ydCBhIHN1Ym1vZHVsZSBmcm9tIGEgbW9kdWxlIHRoYXQgaXMgbm90IGEgcGFja2FnZSwgSW1wb3J0RXJyb3IKLSAgc2hvdWxkIGJlIHJhaXNlZCwgbm90IEF0dHJpYnV0ZUVycm9yLgotCi0tIFdoZW4gdGhlIGdsb2JhbHMgcGFzdCB0byBpbXBvcnRsaWIuX19pbXBvcnRfXygpIGhhcyBfX3BhY2thZ2VfXyBzZXQgdG8gTm9uZSwKLSAgZmFsbCBiYWNrIHRvIGNvbXB1dGluZyB3aGF0IF9fcGFja2FnZV9fIHNob3VsZCBiZSBpbnN0ZWFkIG9mIGdpdmluZyB1cC4KLQotLSBSYWlzZSBhIFR5cGVFcnJvciB3aGVuIHRoZSBuYW1lIG9mIGEgbW9kdWxlIHRvIGJlIGltcG9ydGVkIGZvcgotICBpbXBvcnRsaWIuX19pbXBvcnRfXyBpcyBub3QgYSBzdHJpbmcgKHdhcyByYWlzaW5nIGFuIEF0dHJpYnV0ZUVycm9yIGJlZm9yZSkuCi0KLS0gQWxsb3cgdGhlIGZyb21saXN0IHBhc3NlZCBpbnRvIGltcG9ydGxpYi5fX2ltcG9ydF9fIHRvIGJlIGFueSBpdGVyYWJsZS4KLQotLSBIYXZlIGltcG9ydGxpYiByYWlzZSBJbXBvcnRFcnJvciBpZiBOb25lIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzLgotCi0tIElzc3VlICM2MDU0OiBEbyBub3Qgbm9ybWFsaXplIHN0b3JlZCBwYXRobmFtZXMgaW4gdGFyZmlsZS4KLQotLSBJc3N1ZSAjNjc5NDogRml4IERlY2ltYWwuY29tcGFyZV90b3RhbCBhbmQgRGVjaW1hbC5jb21wYXJlX3RvdGFsX21hZzogTmFOCi0gIHBheWxvYWRzIGFyZSBub3cgb3JkZXJlZCBieSBpbnRlZ2VyIHZhbHVlIHJhdGhlciB0aGFuIGxleGljb2dyYXBoaWNhbGx5LgotCi0tIElzc3VlICMxMzU2OTY5OiBBZGQgbWlzc2luZyBpbmZvIG1ldGhvZHMgaW4gdGl4LkhMaXN0LgotCi0tIElzc3VlICMxNTIyNTg3OiBOZXcgY29uc3RhbnRzIGFuZCBtZXRob2RzIGZvciB0aGUgdGl4LkdyaWQgd2lkZ2V0LgotCi0tIElzc3VlICMxMjUwNDY5OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiB0aXguUGFuZWRXaW5kb3cucGFuZXMuCi0KLS0gSXNzdWUgIzExMTk2NzM6IERvIG5vdCBvdmVycmlkZSB0a2ludGVyLlRleHQgbWV0aG9kcyB3aGVuIGNyZWF0aW5nIGEKLSAgU2Nyb2xsZWRUZXh0LgotCi0tIElzc3VlICM2NjY1OiBGaXggZm5tYXRjaCB0byBwcm9wZXJseSBtYXRjaCBmaWxlbmFtZXMgd2l0aCBuZXdsaW5lcyBpbiB0aGVtLgotCi0tIElzc3VlICMxMTM1OiBBZGQgdGhlIFhWaWV3IGFuZCBZVmlldyBtaXgtaW5zIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSB4dmlldyoKLSAgYW5kIHl2aWV3KiBtZXRob2RzLgotCi0tIElzc3VlICM2NjI5OiBGaXggYSBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgaW4gdGhlIG5ldyBJL08gbGlicmFyeSwgd2hpY2ggY291bGQKLSAgb2NjdXIgd2hlbiB3cml0aW5nIHRvIGEgQnVmZmVyZWRSYW5kb20gb2JqZWN0IChlLmcuIGEgZmlsZSBvcGVuZWQgaW4gInJiKyIgb3IKLSAgIndiKyIgbW9kZSkgYWZ0ZXIgaGF2aW5nIGJ1ZmZlcmVkIGEgY2VydGFpbiBhbW91bnQgb2YgZGF0YSBmb3IgcmVhZGluZy4gVGhpcwotICBidWcgd2FzIG5vdCBwcmVzZW50IGluIHRoZSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNjYyMjogRml4ICJsb2NhbCB2YXJpYWJsZSAnc2VjcmV0JyByZWZlcmVuY2VkIGJlZm9yZSBhc3NpZ25tZW50IiBidWcgaW4KLSAgUE9QMy5hcG9wLgotCi0tIElzc3VlICMyNzE1OiBSZW1vdmUgcmVtbmFudHMgb2YgQ2FyYm9uLkZpbGUgZnJvbSBiaW5oZXggbW9kdWxlLgotCi0tIElzc3VlICM2NTk1OiBUaGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBub3cgYWxsb3dzIGFyYml0cmFyeSBVbmljb2RlIGRlY2ltYWwKLSAgZGlnaXRzIGluIGlucHV0LCBhcyByZWNvbW1lbmRlZCBieSB0aGUgc3RhbmRhcmQuICBQcmV2aW91c2x5IGl0IHdhcyByZXN0cmljdGVkCi0gIHRvIGFjY2VwdGluZyBbMC05XS4KLQotLSBJc3N1ZSAjNjEwNjogdGVsbmV0bGliLlRlbG5ldC5wcm9jZXNzX3Jhd3EgZG9lc24ndCBoYW5kbGUgZGVmYXVsdCBXSUxML1dPTlQKLSAgRE8vRE9OVCBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzE0MjQxNTI6IEZpeCBmb3IgaHR0cC5jbGllbnQsIHVybGxpYi5yZXF1ZXN0IHRvIHN1cHBvcnQgU1NMIHdoaWxlCi0gIHdvcmtpbmcgdGhyb3VnaCBwcm94eS4gIE9yaWdpbmFsIHBhdGNoIGJ5IENocmlzdG9waGVyIExpLCBjaGFuZ2VzIG1hZGUgYnkKLSAgU2VudGhpbCBLdW1hcmFuLgotCi0tIEFkZCBpbXBvcnRsaWIuYWJjLkV4ZWN1dGlvbkxvYWRlciB0byByZXByZXNlbnQgdGhlIFBFUCAzMDIgcHJvdG9jb2wgZm9yCi0gIGxvYWRlcnMgdGhhdCBhbGxvdyBmb3IgbW9kdWxlcyB0byBiZSBleGVjdXRlZC4gQm90aCBpbXBvcnRsaWIuYWJjLlB5TG9hZGVyIGFuZAotICBQeVB5Y0xvYWRlciBpbmhlcml0IGZyb20gdGhpcyBjbGFzcyBhbmQgcHJvdmlkZSBpbXBsZW1lbnRhdGlvbnMgaW4gcmVsYXRpb24gdG8KLSAgb3RoZXIgbWV0aG9kcyByZXF1aXJlZCBieSB0aGUgQUJDcy4KLQotLSBpbXBvcnRsaWIuYWJjLlB5TG9hZGVyIGRpZCBub3QgaW5oZXJpdCBmcm9tIGltcG9ydGxpYi5hYmMuUmVzb3VyY2VMb2FkZXIgbGlrZQotICB0aGUgZG9jdW1lbnRhdGlvbiBzYWlkIGl0IGRpZCBldmVuIHRob3VnaCB0aGUgY29kZSBpbiBQeUxvYWRlciByZWxpZWQgb24gdGhlCi0gIGFic3RyYWN0IG1ldGhvZCByZXF1aXJlZCBieSBSZXNvdXJjZUxvYWRlci4KLQotLSBJc3N1ZSAjNjQzMTogTWFrZSBGcmFjdGlvbiB0eXBlIHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuIGl0IGRvZXNuJ3Qga25vdyBob3cKLSAgdG8gaGFuZGxlIGEgY29tcGFyaXNvbiB3aXRob3V0IGxvc3Mgb2YgcHJlY2lzaW9uLiAgQWxzbyBhZGQgY29ycmVjdCBoYW5kbGluZwotICBvZiBpbmZpbml0aWVzIGFuZCBuYW5zIGZvciBjb21wYXJpc29ucyB3aXRoIGZsb2F0LgotCi0tIElzc3VlICM2NDE1OiBGaXhlZCB3YXJuaW5ncy53YXJuIHNlZ2ZhdWx0IG9uIGJhZCBmb3JtYXR0ZWQgc3RyaW5nLgotCi0tIElzc3VlICM2MzU4OiBUaGUgZXhpdCBzdGF0dXMgb2YgYSBjb21tYW5kIHN0YXJ0ZWQgd2l0aCBvcy5wb3BlbigpIHdhcyByZXBvcnRlZAotICBkaWZmZXJlbnRseSB0aGFuIGl0IGRpZCB3aXRoIHB5dGhvbiAyLnguCi0KLS0gSXNzdWUgIzYzMjM6IFRoZSBwZGIgZGVidWdnZXIgZGlkIG5vdCBleGl0IHdoZW4gcnVubmluZyBhIHNjcmlwdCB3aXRoIGEgc3ludGF4Ci0gIGVycm9yLgotCi0tIElzc3VlICMzMzkyOiBUaGUgc3VicHJvY2VzcyBjb21tdW5pY2F0ZSgpIG1ldGhvZCBubyBsb25nZXIgZmFpbHMgaW4gc2VsZWN0KCkKLSAgd2hlbiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBsYXJnZTsgY29tbXVuaWNhdGUoKSBub3cgdXNlcyBwb2xsKCkgd2hlbiBwb3NzaWJsZS4KLQotLSBJc3N1ZSAjNjM2OTogRml4IGFuIFJMRSBkZWNvbXByZXNzaW9uIGJ1ZyBpbiB0aGUgYmluaGV4IG1vZHVsZS4KLQotLSBJc3N1ZSAjNjM0NDogRml4ZWQgYSBjcmFzaCBvZiBtbWFwLnJlYWQoKSB3aGVuIHBhc3NlZCBhIG5lZ2F0aXZlIGFyZ3VtZW50LgotCi0tIFRoZSBkZXByZWNhdGVkIGZ1bmN0aW9uIHN0cmluZy5tYWtldHJhbnMgaGFzIGJlZW4gcmVtb3ZlZC4KLQotLSBJc3N1ZSAjNDAwNTogRml4ZWQgYSBjcmFzaCBvZiBweWRvYyB3aGVuIHRoZXJlIHdhcyBhIHppcCBmaWxlIHByZXNlbnQgaW4KLSAgc3lzLnBhdGguCi0KLS0gSXNzdWUgIzYyMTg6IGlvLlN0cmluZ0lPIGFuZCBpby5CeXRlc0lPIGluc3RhbmNlcyBhcmUgbm93IHBpY2tsYWJsZS4KLQotLSBUaGUgb3MuZ2V0X2V4ZWNfcGF0aCgpIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0aGF0IHdpbGwgYmUKLSAgc2VhcmNoZWQgZm9yIGFuIGV4ZWN1dGFibGUgd2hlbiBsYXVuY2hpbmcgYSBzdWJwcm9jZXNzIHdhcyBhZGRlZC4KLQotLSBJc3N1ZSAjNzQ4MTogV2hlbiBhIHRocmVhZGluZy5UaHJlYWQgZmFpbGVkIHRvIHN0YXJ0IGl0IHdvdWxkIGxlYXZlIHRoZQotICBpbnN0YW5jZSBzdHVjayBpbiBpbml0aWFsIHN0YXRlIGFuZCBwcmVzZW50IGluIHRocmVhZGluZy5lbnVtZXJhdGUoKS4KLQotLSBJc3N1ZSAjMTA2ODI2ODogVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBoYW5kbGVzIEVJTlRSIGluIGludGVybmFsIG9zLndhaXRwaWQKLSAgYW5kIG9zLnJlYWQgc3lzdGVtIGNhbGxzIHdoZXJlIGFwcHJvcHJpYXRlLgotCi0tIElzc3VlICM2NzI5OiBBZGRlZCBjdHlwZXMuY19zc2l6ZV90IHRvIHJlcHJlc2VudCBzc2l6ZV90LgotCi0tIElzc3VlICM2MjQ3OiBUaGUgYXJncGFyc2UgbW9kdWxlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotCi0tIElzc3VlICM4MjM1OiBfc29ja2V0OiBBZGQgdGhlIGNvbnN0YW50IGBgU09fU0VURklCYGAuICBTT19TRVRGSUIgaXMgYSBzb2NrZXQKLSAgb3B0aW9uIGF2YWlsYWJsZSBvbiBGcmVlQlNEIDcuMSBhbmQgbmV3ZXIuCi0KLS0gSXNzdWUgIzkzMTU6IEZpeCBmb3IgdGhlIHRyYWNlIG1vZHVsZSB0byByZWNvcmQgY29ycmVjdCBjbGFzcyBuYW1lCi0gIGZvciB0cmFjaW5nIG1ldGhvZHMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5OTU5OiBUd2VhayBmb3JtdWxhIHVzZWQgZm9yIGNvbXB1dGluZyBtYXRoLmxvZyBvZiBhbiBpbnRlZ2VyLAotICBtYWtpbmcgaXQgbWFyZ2luYWxseSBtb3JlIGFjY3VyYXRlIGZvciBleGFjdCBwb3dlcnMgb2YgMi4KLQotLSBJc3N1ZSAjOTQyMjogRml4IG1lbW9yeSBsZWFrIHdoZW4gcmUtaW5pdGlhbGl6aW5nIGEgc3RydWN0LlN0cnVjdCBvYmplY3QuCi0KLS0gSXNzdWUgIzc5MDA6IFRoZSBnZXRncm91cHMoMikgc3lzdGVtIGNhbGwgb24gTWFjT1NYIGJlaGF2ZXMgcmF0aGVyIG9kZGx5Ci0gIGNvbXBhcmVkIHRvIG90aGVyIHVuaXggc3lzdGVtcy4gSW4gcGFydGljdWxhciwgb3MuZ2V0Z3JvdXBzKCkgZG9lcyBub3QgcmVmbGVjdAotICBhbnkgY2hhbmdlcyBtYWRlIHVzaW5nIG9zLnNldGdyb3VwcygpIGJ1dCBiYXNpY2x5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lCi0gIGluZm9ybWF0aW9uIGFzIHRoZSBpZCBjb21tYW5kLiBvcy5nZXRncm91cHMoKSBjYW4gbm93IHJldHVybiBtb3JlIHRoYW4gMTYKLSAgZ3JvdXBzIG9uIE1hY09TWC4KLQotLSBJc3N1ZSAjNjA5NTogTWFrZSBkaXJlY3RvcnkgYXJndW1lbnQgdG8gb3MubGlzdGRpciBvcHRpb25hbC4KLQotLSBJc3N1ZSAjOTI3NzogRml4IGJ1ZyBpbiBzdHJ1Y3QucGFjayBmb3IgYm9vbHMgaW4gc3RhbmRhcmQgbW9kZSAoZS5nLiwKLSAgc3RydWN0LnBhY2soJz4/JykpOiBpZiBjb252ZXJzaW9uIHRvIGJvb2wgcmFpc2VkIGFuIGV4Y2VwdGlvbiB0aGVuIHRoYXQKLSAgZXhjZXB0aW9uIHdhc24ndCBwcm9wZXJseSBwcm9wYWdhdGVkIG9uIG1hY2hpbmVzIHdoZXJlIGNoYXIgaXMgdW5zaWduZWQuCi0KLS0gSXNzdWUgIzUxODA6IEZpeGVkIGEgYnVnIHRoYXQgcHJldmVudGVkIGxvYWRpbmcgMi54IHBpY2tsZXMgaW4gMy54IHB5dGhvbiB3aGVuCi0gIHRoZXkgY29udGFpbiBpbnN0YW5jZXMgb2Ygb2xkLXN0eWxlIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzkxNjU6IEFkZCBuZXcgZnVuY3Rpb25zIG1hdGguaXNmaW5pdGUgYW5kIGNtYXRoLmlzZmluaXRlLCB0byBhY2NvbXBhbnkKLSAgZXhpc3RpbmcgaXNpbmYgYW5kIGlzbmFuIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMTU3ODI2OTogSW1wbGVtZW50IG9zLnN5bWxpbmsgZm9yIFdpbmRvd3MgNi4wKy4gIFBhdGNoIGJ5IEphc29uCi0gIFIuIENvb21icy4KLQotLSBJbiBzdHJ1Y3QucGFjaywgY29ycmVjdGx5IHByb3BvZ2F0ZSBleGNlcHRpb25zIGZyb20gY29tcHV0aW5nIHRoZSB0cnV0aCBvZiBhbgotICBvYmplY3QgaW4gdGhlICc/JyBmb3JtYXQuCi0KLS0gSXNzdWUgIzkwMDA6IGRhdGV0aW1lLnRpbWV6b25lIG9iamVjdHMgbm93IGhhdmUgZXZhbC1mcmllbmRseSByZXByLgotCi0tIEluIHRoZSBtYXRoIG1vZHVsZSwgY29ycmVjdGx5IGxvb2t1cCBfX3RydW5jX18sIF9fY2VpbF9fLCBhbmQgX19mbG9vcl9fIGFzCi0gIHNwZWNpYWwgbWV0aG9kcy4KLQotLSBJc3N1ZSAjOTAwNTogUHJldmVudCB1dGN0aW1ldHVwbGUoKSBmcm9tIHByb2R1Y2luZyB5ZWFyIDAgb3IgeWVhciAxMCwwMDAuCi0gIFByaW9yIHRvIHRoaXMgY2hhbmdlLCB0aW1lem9uZSBhZGp1c3RtZW50IGluIHV0Y3RpbWV0dXBsZSgpIGNvdWxkIHByb2R1Y2UKLSAgdG1feWVhciB2YWx1ZSBvZiAwIG9yIDEwLDAwMC4gIE5vdyBhbiBPdmVyZmxvd0Vycm9yIGlzIHJhaXNlZCBpbiB0aGVzZSBlZGdlCi0gIGNhc2VzLgotCi0tIElzc3VlICM2NjQxOiBUaGUgYGBkYXRldGltZS5zdHJwdGltZWBgIG1ldGhvZCBub3cgc3VwcG9ydHMgdGhlIGBgJXpgYAotICBkaXJlY3RpdmUuICBXaGVuIHRoZSBgYCV6YGAgZGlyZWN0aXZlIGlzIHByZXNlbnQgaW4gdGhlIGZvcm1hdCBzdHJpbmcsIGFuCi0gIGF3YXJlIGBgZGF0ZXRpbWVgYCBvYmplY3QgaXMgcmV0dXJuZWQgd2l0aCBgYHR6aW5mb2BgIGJvdW5kIHRvIGEKLSAgYGBkYXRldGltZS50aW1lem9uZWBgIGluc3RhbmNlIGNvbnN0cnVjdGVkIGZyb20gdGhlIHBhcnNlZCBvZmZzZXQuICBJZiBib3RoCi0gIGBgJXpgYCBhbmQgYGAlWmBgIGFyZSBwcmVzZW50LCB0aGUgZGF0YSBpbiBgYCVaYGAgZmllbGQgaXMgdXNlZCBmb3IgdGltZXpvbmUKLSAgbmFtZSwgYnV0IGBgJVpgYCBkYXRhIHdpdGhvdXQgYGAlemBgIGlzIGRpc2NhcmRlZC4KLQotLSBJc3N1ZSAjNTA5NDogVGhlIGBgZGF0ZXRpbWVgYCBtb2R1bGUgbm93IGhhcyBhIHNpbXBsZSBjb25jcmV0ZSBjbGFzcwotICBpbXBsZW1lbnRpbmcgYGBkYXRldGltZS50emluZm9gYCBpbnRlcmZhY2UuICBJbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcywKLSAgYGBkYXRldGltZS50aW1lem9uZWBgLCByZXR1cm4gZml4ZWQgbmFtZSBhbmQgVVRDIG9mZnNldCBmcm9tIHRoZWlyCi0gIGBgdHpuYW1lKGR0KWBgIGFuZCBgYHV0Y29mZnNldChkdClgYCBtZXRob2RzLiAgVGhlIGBgZHN0KGR0KWBgIG1ldGhvZCBhbHdheXMKLSAgcmV0dXJucyBgYE5vbmVgYC4gIEEgY2xhc3MgYXR0cmlidXRlLCBgYHV0Y2BgIGNvbnRhaW5zIGFuIGluc3RhbmNlCi0gIHJlcHJlc2VudGluZyB0aGUgVVRDIHRpbWV6b25lLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUmFmZSBLYXBsYW4uCi0KLS0gSXNzdWUgIzg5NzM6IEFkZCBfX2FsbF9fIHRvIHN0cnVjdCBtb2R1bGU7IHRoaXMgZW5zdXJlcyB0aGF0IGhlbHAoc3RydWN0KQotICBpbmNsdWRlcyBkb2N1bWVudGF0aW9uIGZvciB0aGUgc3RydWN0LlN0cnVjdCBjbGFzcy4KLQotLSBJc3N1ZSAjMzEyOTogVHJhaWxpbmcgZGlnaXRzIGluIHN0cnVjdCBmb3JtYXQgc3RyaW5nIGFyZSBubyBsb25nZXIgaWdub3JlZC4KLSAgRm9yIGV4YW1wbGUsICIxIiBvciAiaWxpYjEyMyIgYXJlIG5vdyBpbnZhbGlkIGZvcm1hdHMgYW5kIGNhdXNlCi0gIGBgc3RydWN0LmVycm9yYGAgdG8gYmUgcmFpc2VkLiAgUGF0Y2ggYnkgQ2FsZWIgRGV2ZXJhdXguCi0KLS0gSXNzdWUgIzczODQ6IElmIHRoZSBzeXN0ZW0gcmVhZGxpbmUgbGlicmFyeSBpcyBsaW5rZWQgYWdhaW5zdCBuY3Vyc2VzLCB0aGUKLSAgY3Vyc2VzIG1vZHVsZSBtdXN0IGJlIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMgYXMgd2VsbC4gT3RoZXJ3aXNlIGl0IGlzIG5vdCBzYWZlCi0gIHRvIGxvYWQgYm90aCB0aGUgcmVhZGxpbmUgYW5kIGN1cnNlcyBtb2R1bGVzIGluIGFuIGFwcGxpY2F0aW9uLgotCi0tIElzc3VlICMyODEwOiBGaXggY2FzZXMgd2hlcmUgdGhlIFdpbmRvd3MgcmVnaXN0cnkgQVBJIHJldHVybnMgRVJST1JfTU9SRV9EQVRBLAotICByZXF1aXJpbmcgYSByZS10cnkgaW4gb3JkZXIgdG8gZ2V0IHRoZSBjb21wbGV0ZSByZXN1bHQuCi0KLS0gSXNzdWUgIzg2OTI6IE9wdGltaXplIG1hdGguZmFjdG9yaWFsOiByZXBsYWNlIHRoZSBwcmV2aW91cyBuYWl2ZSBhbGdvcml0aG0KLSAgd2l0aCBhbiBpbXByb3ZlZCAnYmluYXJ5LXNwbGl0JyBhbGdvcml0aG0gdGhhdCB1c2VzIGZld2VyIG11bHRpcGxpY2F0aW9ucyBhbmQKLSAgYWxsb3dzIG1hbnkgb2YgdGhlIG11bHRpcGxpY2F0aW9ucyB0byBiZSBwZXJmb3JtZWQgdXNpbmcgcGxhaW4gQyBpbnRlZ2VyCi0gIGFyaXRobWV0aWMgaW5zdGVhZCBvZiBQeUxvbmcgYXJpdGhtZXRpYy4gIEFsc28gdXNlcyBhIGxvb2t1cCB0YWJsZSBmb3Igc21hbGwKLSAgYXJndW1lbnRzLgotCi0tIElzc3VlICM4Njc0OiBGaXhlZCBhIG51bWJlciBvZiBpbmNvcnJlY3Qgb3IgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZwotICBvdmVyZmxvdyBjaGVja3MgaW4gdGhlIGF1ZGlvb3AgbW9kdWxlLgotCi0tIElzc3VlICM4NjQ0OiBUaGUgYWNjdXJhY3kgb2YgdGQudG90YWxfc2Vjb25kcygpIGhhcyBiZWVuIGltcHJvdmVkIChieQotICBjYWxjdWxhdGluZyB3aXRoIGludGVnZXIgYXJpdGhtZXRpYyBpbnN0ZWFkIG9mIGZsb2F0IGFyaXRobWV0aWMgaW50ZXJuYWxseSk6Ci0gIHRoZSByZXN1bHQgaXMgbm93IGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgYW5kIGlzIGVxdWl2YWxlbnQgdG8gYGB0ZCAvCi0gIHRpbWVkZWx0YShzZWNvbmRzPTEpYGAuCi0KLS0gSXNzdWUgIzI3MDY6IEFsbG93IGRpdmlzaW9uIG9mIGEgdGltZWRlbHRhIGJ5IGFub3RoZXIgdGltZWRlbHRhOiB0aW1lZGVsdGEgLwotICB0aW1lZGVsdGEsIHRpbWVkZWx0YSAlIHRpbWVkZWx0YSwgdGltZWRlbHRhIC8vIHRpbWVkZWx0YSBhbmQgZGl2bW9kKHRpbWVkZWx0YSwKLSAgdGltZWRlbHRhKSBhcmUgYWxsIHN1cHBvcnRlZC4KLQotLSBJc3N1ZSAjODMxNDogRml4IHVuc2lnbmVkIGxvbmcgbG9uZyBidWcgaW4gbGliZmZpIG9uIFNwYXJjIHY4LgotCi0tIElzc3VlICM4MzAwOiBXaGVuIHBhc3NpbmcgYSBub24taW50ZWdlciBhcmd1bWVudCB0byBzdHJ1Y3QucGFjayB3aXRoIGFueQotICBpbnRlZ2VyIGZvcm1hdCBjb2RlLCBzdHJ1Y3QucGFjayBmaXJzdCBhdHRlbXB0cyB0byBjb252ZXJ0IHRoZSBub24taW50ZWdlcgotICB1c2luZyBpdHMgX19pbmRleF9fIG1ldGhvZC4gIElmIHRoYXQgbWV0aG9kIGlzIG5vbi1leGlzdGVudCBvciByYWlzZXMKLSAgVHlwZUVycm9yIGl0IGdvZXMgb24gdG8gdHJ5IHRoZSBfX2ludF9fIG1ldGhvZCwgYXMgZGVzY3JpYmVkIGJlbG93LgotCi0tIElzc3VlICM4MTQyOiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuOSByZWxlYXNlLgotCi0tIElzc3VlICM2OTQ5OiBBbGxvdyB0aGUgX2RibSBleHRlbnNpb24gdG8gYmUgYnVpbHQgd2l0aCBkYiA0LjgueC4KLQotLSBJc3N1ZSAjNjU0NDogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gdGhlIGtxdWV1ZSBpbXBsZW1lbnRhdGlvbidzIGVycm9yCi0gIGhhbmRsaW5nLgotCi0tIFN0b3AgcHJvdmlkaW5nIGNydGFzc2VtLmggc3ltYm9scyB3aGVuIGNvbXBpbGluZyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMCwgYXMKLSAgbXN2Y3IxMDAuZGxsIGlzIG5vdCBhIHBsYXRmb3JtIGFzc2VtYmx5IGFueW1vcmUuCi0KLS0gSXNzdWUgIzY1MDg6IEFkZCBwb3NpeC57Z2V0cmVzdWlkLGdldHJlc2dpZCxzZXRyZXN1aWQsc2V0cmVzZ2lkfS4KLQotLSBJc3N1ZSAjNzA3ODogU2V0IHN0cnVjdC5fX2RvY19fIGZyb20gX3N0cnVjdC5fX2RvY19fLgotCi0tIElzc3VlICMzMzY2OiBBZGQgZXJmLCBlcmZjLCBleHBtMSwgZ2FtbWEsIGxnYW1tYSBmdW5jdGlvbnMgdG8gbWF0aCBtb2R1bGUuCi0KLS0gSXNzdWUgIzY4Nzc6IEl0IGlzIG5vdyBwb3NzaWJsZSB0byBsaW5rIHRoZSByZWFkbGluZSBleHRlbnNpb24gdG8gdGhlIGxpYmVkaXQKLSAgcmVhZGxpbmUgZW11bGF0aW9uIG9uIE9TWCAxMC41IG9yIGxhdGVyLgotCi0tIElzc3VlICM2ODQ4OiBGaXggY3Vyc2VzIG1vZHVsZSBidWlsZCBmYWlsdXJlIG9uIE9TIFggMTAuNi4KLQotLSBGaXggYSBzZWdmYXVsdCB0aGF0IGNvdWxkIGJlIHRyaWdnZXJlZCBieSBleHBhdCB3aXRoIHNwZWNpYWxseSBmb3JtZWQgaW5wdXQuCi0KLS0gSXNzdWUgIzY1NjE6ICdcZCcgaW4gYSByZWdleCBub3cgbWF0Y2hlcyBvbmx5IGNoYXJhY3RlcnMgd2l0aCBVbmljb2RlIGNhdGVnb3J5Ci0gICdOZCcgKE51bWJlciwgRGVjaW1hbCBEaWdpdCkuICBQcmV2aW91c2x5IGl0IGFsc28gbWF0Y2hlZCBjaGFyYWN0ZXJzIHdpdGgKLSAgY2F0ZWdvcnkgJ05vJy4KLQotLSBJc3N1ZSAjNDUwOTogQXJyYXkgb2JqZWN0cyBhcmUgbm8gbG9uZ2VyIG1vZGlmaWVkIGFmdGVyIGFuIG9wZXJhdGlvbiBmYWlsaW5nCi0gIGR1ZSB0byB0aGUgcmVzaXplIHJlc3RyaWN0aW9uIGluLXBsYWNlIHdoZW4gdGhlIG9iamVjdCBoYXMgZXhwb3J0ZWQgYnVmZmVycy4KLQotLSBJc3N1ZSAjMjM4OTogQXJyYXkgb2JqZWN0cyBhcmUgbm93IHBpY2tsZWQgaW4gYSBwb3J0YWJsZSBtYW5uZXIuCi0KLS0gRXhwYXQ6IEZpeCBEb1MgdmlhIFhNTCBkb2N1bWVudCB3aXRoIG1hbGZvcm1lZCBVVEYtOCBzZXF1ZW5jZXMKLSAgKENWRV8yMDA5XzM1NjApLgotCi0tIElzc3VlICM3MjQyOiBPbiBTb2xhcmlzIDkgYW5kIGVhcmxpZXIgY2FsbGluZyBvcy5mb3JrKCkgZnJvbSB3aXRoaW4gYSB0aHJlYWQKLSAgY291bGQgcmFpc2UgYW4gaW5jb3JyZWN0IFJ1bnRpbWVFcnJvciBhYm91dCBub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2suICBUaGUKLSAgaW1wb3J0IGxvY2sgaXMgbm93IHJlaW5pdGlhbGl6ZWQgYWZ0ZXIgZm9yay4KLQotLSBJc3N1ZSAjNzk5OTogb3Muc2V0cmV1aWQoKSBhbmQgb3Muc2V0cmVnaWQoKSB3b3VsZCByZWZ1c2UgdG8gYWNjZXB0IGEgLTEKLSAgcGFyYW1ldGVyIG9uIHNvbWUgcGxhdGZvcm1zIHN1Y2ggYXMgT1MgWC4KLQotLSBCdWlsZCB0aGUgb3NzYXVkaW8gZXh0ZW5zaW9uIG9uIEdOVS9rRnJlZUJTRC4KLQotLSBJc3N1ZSAjNzM0Nzogd2lucmVnOiBBZGQgQ3JlYXRlS2V5RXggYW5kIERlbGV0ZUtleUV4LCBhcyB3ZWxsIGFzIGZpeCBhIGJ1ZyBpbgotICB0aGUgcmV0dXJuIHZhbHVlIG9mIFF1ZXJ5UmVmbGVjdGlvbktleS4KLQotLSBJc3N1ZSAjNzU2NzogUHlDdXJzZXNfc2V0dXB0ZXJtOiBEb24ndCBjYWxsIGBgc2V0dXB0ZXJtYGAgdHdpY2UuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIFVzZSBPcGVuU1NMIDEuMC4wYSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM5MjgwOiBNYWtlIHNoYXJlZGluc3RhbGwgZGVwZW5kIG9uIHNoYXJlZG1vZHMuCi0KLS0gSXNzdWUgIzkxODk6IE1ha2UgYSB1c2VyLXNwZWNpZmllZCBDRkxBR1MsIENQUEZMQUdTLCBvciBMREZMQUdTIHNldHRpbmcKLSAgb3ZlcnJpZGUgdGhlIGNvbmZpZ3VyZSBhbmQgbWFrZWZpbGUgZGVmYXVsdHMsIHdpdGhvdXQgZGVsZXRpbmcgb3B0aW9ucyB0aGUKLSAgdXNlciBkaWRuJ3QgaW50ZW5kIHRvIG92ZXJyaWRlLiAgRGV2ZWxvcGVycyBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gc3BlY2lmeQotICBPUFQgb3IgRVhUUkFfQ0ZMQUdTLCBhbHRob3VnaCB0aG9zZSB2YXJpYWJsZXMgYXJlIHN0aWxsIHByZXNlbnQgZm9yCi0gIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkuCi0KLS0gSXNzdWUgIzg4NTQ6IEZpeCBmaW5kaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCBvbiBXaW5kb3dzIHg2NC4KLQotLSBJc3N1ZSAjMTc1OTE2OSwgIzg4NjQ6IERyb3AgX1hPUEVOX1NPVVJDRSBvbiBTb2xhcmlzLCBkZWZpbmUgaXQgZm9yCi0gIG11bHRpcHJvY2Vzc2luZyBvbmx5LgotCi0tIElzc3VlICM4NjI1OiBUdXJuIG9mZiBvcHRpbWl6YXRpb24gaW4gLS13aXRoLXB5ZGVidWcgYnVpbGRzIHdpdGggZ2NjLgotICAoT3B0aW1pemF0aW9uIHdhcyB1bmludGVudGlvbmFsbHkgdHVybmVkIG9uIGluIGdjYyAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgYXMgYQotICByZXN1bHQgb2YgdGhlIGlzc3VlICMxNjI4NDg0IGZpeCwgY29tYmluZWQgd2l0aCBhdXRvY29uZidzIHN0cmFuZ2UgY2hvaWNlIG9mCi0gIGRlZmF1bHQgQ0ZMQUdTIHByb2R1Y2VkIGJ5IEFDX1BST0dfQ0MgZm9yIGdjYy4pCi0KLS0gSXNzdWUgIzM2NDY6IEl0IGlzIG5vdyBlYXNpbHkgcG9zc2libGUgdG8gaW5zdGFsbCBhIFB5dGhvbiBmcmFtZXdvcmsgaW50byB5b3VyCi0gIGhvbWUgZGlyZWN0b3J5IG9uIE1hY09TWCwgc2VlIE1hYy9SRUFETUUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzM5Mjg6IG9zLm1rbm9kKCkgbm93IGF2YWlsYWJsZSBpbiBTb2xhcmlzLCBhbHNvLgotCi0tIElzc3VlICMzMzI2OiBCdWlsZCBQeXRob24gd2l0aG91dCAtZm5vLXN0cmljdC1hbGlhc2luZyB3aGVuIHRoZSBnY2MgZG9lcyBub3QKLSAgZ2l2ZSBmYWxzZSB3YXJuaW5ncy4KLQotLSBJc3N1ZSAjMTYyODQ4NDogVGhlIE1ha2VmaWxlIGRvZXNuJ3QgaWdub3JlIHRoZSBDRkxBR1MgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgYW55bW9yZS4gIEl0IGFsc28gZm9yd2FyZHMgdGhlIExERkxBR1Mgc2V0dGluZ3MgdG8gdGhlIGxpbmtlciB3aGVuIGJ1aWxkaW5nIGEKLSAgc2hhcmVkIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzY3MTY6IFF1b3RlIC14IGFyZ3VtZW50cyBvZiBjb21waWxlYWxsIGluIE1TSSBpbnN0YWxsZXIuICBFeGNsdWRlIDJ0bzMKLSAgdGVzdHMgZnJvbSBjb21waWxlYWxsLgotCi0tIElzc3VlICMzOTIwLCAjNzkwMzogRGVmaW5lIF9CU0RfU09VUkNFIG9uIE9wZW5CU0QgNC40IHRocm91Z2ggNC45LgotCi0tIElzc3VlICM3NjMyOiBXaGVuIFB5X1VTSU5HX01FTU9SWV9ERUJVR0dFUiBpcyBkZWZpbmVkLCBkaXNhYmxlIHRoZSBwcml2YXRlCi0gIG1lbW9yeSBhbGxvY2F0aW9uIHNjaGVtZSBpbiBkdG9hLmMgYW5kIHVzZSBQeU1lbV9NYWxsb2MgYW5kIFB5TWVtX0ZyZWUKLSAgaW5zdGVhZC4gIEFsc28gZGlzYWJsZSBjYWNoaW5nIG9mIHBvd2VycyBvZiA1LgotCi0tIElzc3VlICM2NDkxOiBBbGxvdyAtLXdpdGgtZGJtbGlib3JkZXIgdG8gc3BlY2lmeSB0aGF0IG5vIGRibXMgd2lsbCBiZSBidWlsdC4KLQotLSBJc3N1ZSAjNjk0MzogVXNlIHBrZy1jb25maWcgdG8gZmluZCB0aGUgbGliZmZpIGhlYWRlcnMgd2hlbiB0aGUKLSAgLS13aXRoLXN5c3RlbS1mZmkgZmxhZyBpcyB1c2VkLgotCi0tIElzc3VlICM3NjA5OiBBZGQgYSAtLXdpdGgtc3lzdGVtLWV4cGF0IG9wdGlvbiB0aGF0IGNhdXNlcyB0aGUgc3lzdGVtJ3MgZXhwYXQKLSAgbGlicmFyeSB0byBiZSB1c2VkIGZvciB0aGUgcHlleHBhdCBtb2R1bGUgaW5zdGVhZCBvZiB0aGUgb25lIGluY2x1ZGVkIHdpdGgKLSAgUHl0aG9uLgotCi0tIElzc3VlICM3NTg5OiBPbmx5IGJ1aWxkIHRoZSBuaXMgbW9kdWxlIHdoZW4gdGhlIGNvcnJlY3QgaGVhZGVyIGZpbGVzIGFyZQotICBmb3VuZC4KLQotLSBTd2l0Y2ggdG8gT3BlblNTTCAwLjkuOGwgYW5kIHNxbGl0ZSAzLjYuMjEgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNTc5MjogRXh0ZW5kIHRoZSBzaG9ydCBmbG9hdCByZXByIHN1cHBvcnQgdG8geDg2IHN5c3RlbXMgdXNpbmcKLSAgaWNjIG9yIHN1bmNjLgotCi0tIElzc3VlICM2NjAzOiBDaGFuZ2UgUkVBRF9USU1FU1RBTVAgbWFjcm8gaW4gY2V2YWwuYyBzbyB0aGF0IGl0IGNvbXBpbGVzCi0gIGNvcnJlY3RseSB1bmRlciBnY2Mgb24geDg2LTY0LiAgVGhpcyBmaXhlcyBhIHJlcG9ydGVkIHByb2JsZW0gd2l0aCB0aGUKLSAgLS13aXRoLXRzYyBidWlsZCBvbiB4ODYtNjQuCi0KLS0gSXNzdWUgIzY4MDI6IEZpeCBidWlsZCBpc3N1ZXMgb24gTWFjT1NYIDEwLjYuCi0KLS0gSXNzdWUgIzYyNDQ6IEFsbG93IGRldGVjdF90a2ludGVyIHRvIGxvb2sgZm9yIFRjbC9UayA4LjYuCi0KLS0gSXNzdWUgIzQ2MDE6ICdtYWtlIGluc3RhbGwnIGRpZCBub3Qgc2V0IHRoZSBhcHByb3ByaWF0ZSBwZXJtaXNzaW9ucyBvbgotICBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjNTM5MDogQWRkIHVuaW5zdGFsbCBpY29uIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgZmlsZSBleHRlbnNpb25zIGFyZQotICBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzc1NDE6IFdoZW4gdXNpbmcgYGBweXRob24tY29uZmlnYGAgd2l0aCBhIGZyYW1ld29yayBpbnN0YWxsIHRoZQotICBjb21waWxlciBtaWdodCB1c2UgdGhlIHdyb25nIGxpYnJhcnkuCi0KLS0gcHl0aG9uLWNvbmZpZyBub3cgc3VwcG9ydHMgbXVsdGlwbGUgb3B0aW9ucyBvbiB0aGUgc2FtZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzg1MDk6IEZpeCBxdW90aW5nIGluIGhlbHAgc3RyaW5ncyBhbmQgY29kZSBzbmlwcGV0cyBpbiBjb25maWd1cmUuaW4uCi0KLS0gSXNzdWUgIzg1MTA6IFVwZGF0ZSB0byBhdXRvY29uZjIuNjUuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTgxNzogQWRkIGV4cGF0IENPUFlJTkcgZmlsZTsgYWRkIGV4cGF0LCBsaWJmZmkgYW5kIGV4cGF0IGxpY2Vuc2VzCi0gIHRvIERvYy9saWNlbnNlLnJzdC4KLQotLSBJc3N1ZSAjOTUyNDogRG9jdW1lbnQgdGhhdCB0d28gQ1RSTCogc2lnbmFscyBhcmUgbWVhbnQgZm9yIHVzZSBvbmx5Ci0gIHdpdGggb3Mua2lsbC4KLQotLSBJc3N1ZSAjOTI1NTogRG9jdW1lbnQgdGhhdCB0aGUgJ3Rlc3QnIHBhY2thZ2UgaXMgbWVhbnQgZm9yIGludGVybmFsIFB5dGhvbiB1c2UKLSAgb25seS4KLQotLSBBIHNtYWxsIFdTR0kgc2VydmVyIHdhcyBhZGRlZCBhcyBUb29scy9zY3JpcHRzL3NlcnZlLnB5LCBhbmQgaXMgdXNlZCB0bwotICBpbXBsZW1lbnQgYSBsb2NhbCBkb2N1bWVudGF0aW9uIHNlcnZlciB2aWEgJ21ha2Ugc2VydmUnIGluIHRoZSBkb2MgZGlyZWN0b3J5LgotCi0tIFVwZGF0aW5nIGBVc2luZyBQeXRob25gIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSBkZXNjcmlwdGlvbiBvZiBDUHl0aG9uJ3MgLUoKLSAgYW5kIC1YIG9wdGlvbnMuCi0KLS0gRG9jdW1lbnQgdGhhdCBpbXBvcnRpbmcgYSBtb2R1bGUgdGhhdCBoYXMgTm9uZSBpbiBzeXMubW9kdWxlcyB0cmlnZ2VycyBhbgotICBJbXBvcnRFcnJvci4KLQotLSBJc3N1ZSAjNjU1NjogRml4ZWQgdGhlIERpc3R1dGlscyBjb25maWd1cmF0aW9uIGZpbGVzIGxvY2F0aW9uIGV4cGxhbmF0aW9uIGZvcgotICBXaW5kb3dzLgotCi0tIFVwZGF0ZSBweXRob24gbWFudWFsIHBhZ2UgKG9wdGlvbnMgLUIsIC1PMCwgLXMsIGVudmlyb25tZW50IHZhcmlhYmxlcwotICBQWVRIT05ET05UV1JJVEVCWVRFQ09ERSwgUFlUSE9OTk9VU0VSU0lURSkuCi0KLS0gSXNzdWUgIzg5MDk6IEFkZGVkIHRoZSBzaXplIG9mIHRoZSBiaXRtYXAgdXNlZCBpbiB0aGUgaW5zdGFsbGVyIGNyZWF0ZWQgYnkKLSAgZGlzdHV0aWxzJyBiZGlzdF93aW5pbnN0LiBQYXRjaCBieSBBbmF0b2x5IFRlY2h0b25pay4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzkyNTE6IHRlc3RfdGhyZWFkZWRfaW1wb3J0IGRpZG4ndCBmYWlsIHdoZW4gcnVuIHRocm91Z2ggcmVncnRlc3QgaWYgdGhlCi0gIGltcG9ydCBsb2NrIHdhcyBkaXNhYmxlZC4KLQotLSBJc3N1ZSAjODYwNTogU2tpcCB0ZXN0X2dkYiBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zLgotCi0tIElzc3VlICM3NDQ5OiBTa2lwIHRlc3Rfc29ja2V0c2VydmVyIGlmIHRocmVhZGluZyBzdXBwb3J0IGlzIGRpc2FibGVkLgotCi0tIElzc3VlICM4NjcyOiBBZGQgYSB6bGliIHRlc3QgZW5zdXJpbmcgdGhhdCBhbiBpbmNvbXBsZXRlIHN0cmVhbSBjYW4gYmUgaGFuZGxlZAotICBieSBhIGRlY29tcHJlc3NvciBvYmplY3Qgd2l0aG91dCBlcnJvcnMgKGl0IHJldHVybnMgaW5jb21wbGV0ZSB1bmNvbXByZXNzZWQKLSAgZGF0YSkuCi0KLS0gSXNzdWUgIzg1MzM6IHJlZ3J0ZXN0IHVzZXMgYmFja3NsYXNocmVwbGFjZSBlcnJvciBoYW5kbGVyIGZvciBzdGRvdXQgdG8gYXZvaWQKLSAgVW5pY29kZUVuY29kZUVycm9yICh3cml0ZSBub24tQVNDSUkgY2hhcmFjdGVyIHRvIHN0ZG91dCB1c2luZyBBU0NJSSBlbmNvZGluZykuCi0KLS0gSXNzdWUgIzg1NzY6IFJlbW92ZSB1c2Ugb2YgZmluZF91bnVzZWRfcG9ydCgpIGluIHRlc3Rfc210cGxpYiBhbmQKLSAgdGVzdF9tdWx0aXByb2Nlc3NpbmcuICBQYXRjaCBieSBQYXVsIE1vb3JlLgotCi0tIElzc3VlICM3NDQ5OiBGaXggbWFueSB0ZXN0cyB0byBzdXBwb3J0IFB5dGhvbiBjb21waWxlZCB3aXRob3V0IHRocmVhZAotICBzdXBwb3J0LiBQYXRjaGVzIHdyaXR0ZW4gYnkgSmVycnkgU2V1dHRlci4KLQotLSBJc3N1ZSAjODEwODogdGVzdF9mdHBsaWIncyBub24tYmxvY2tpbmcgU1NMIHNlcnZlciBub3cgaGFzIHByb3BlciBoYW5kbGluZyBvZgotICBTU0wgc2h1dGRvd25zLgotCi0tIElzc3VlcyAjODI3OSwgIzgzMzAsICM4NDM3LCAjODQ4MCwgIzg0OTU6IEZpeCB0ZXN0X2dkYiBmYWlsdXJlcywgcGF0Y2ggd3JpdHRlbgotICBieSBEYXZlIE1hbGNvbG0uCi0KLS0gSXNzdWUgIzM4NjQ6IFNraXAgdGhyZWUgdGVzdF9zaWduYWwgdGVzdHMgb24gZnJlZWJzZDYgYmVjYXVzZSB0aGV5IGZhaWwgaWYgYW55Ci0gIHRocmVhZCB3YXMgcHJldmlvdXNseSBzdGFydGVkLCBtb3N0IGxpa2VseSBkdWUgdG8gYSBwbGF0Zm9ybSBidWcuCi0KLS0gSXNzdWUgIzgxOTM6IEZpeCB0ZXN0X3psaWIgZmFpbHVyZSB3aXRoIHpsaWIgMS4yLjQuCi0KLS0gSXNzdWUgIzgyNDg6IEFkZCBzb21lIHRlc3RzIGZvciB0aGUgYm9vbCB0eXBlLiAgUGF0Y2ggYnkgR3JlZ29yeSBOb2ZpLgotCi0tIElzc3VlICM4MjYzOiBOb3cgcmVncnRlc3QucHkgd2lsbCByZXBvcnQgYSBmYWlsdXJlIGlmIGl0IHJlY2VpdmVzIGEKLSAgS2V5Ym9hcmRJbnRlcnJ1cHQgKFNJR0lOVCkuCi0KLS0gSXNzdWUgIzgxODAgYW5kICM4MjA3OiBGaXggdGVzdF9wZXAyNzcgb24gT1MgWCBhbmQgYWRkIG1vcmUgdGVzdHMgZm9yIHNwZWNpYWwKLSAgVW5pY29kZSBub3JtYWxpemF0aW9uIGNhc2VzLgotCi0tIElzc3VlICM3NzgzOiB0ZXN0LnN1cHBvcnQub3Blbl91cmxyZXNvdXJjZSBpbnZhbGlkYXRlcyB0aGUgb3V0ZGF0ZWQgZmlsZXMgZnJvbQotICB0aGUgbG9jYWwgY2FjaGUuCi0KLS0gSXNzdWUgIzc4NDk6IE5vdyB0aGUgdXRpbGl0eSBgYGNoZWNrX3dhcm5pbmdzYGAgdmVyaWZpZXMgaWYgdGhlIHdhcm5pbmdzIGFyZQotICBlZmZlY3RpdmVseSByYWlzZWQuCi0KLS0gVGhlIGZvdXIgcGF0aCBtb2R1bGVzIChnZW5lcmljcGF0aCwgbWFjcGF0aCwgbnRwYXRoLCBwb3NpeHBhdGgpIHNoYXJlIGEgY29tbW9uCi0gIFRlc3RDYXNlIGZvciBzb21lIHRlc3RzOiB0ZXN0X2dlbmVyaWNwYXRoLkNvbW1vblRlc3QuCi0KLS0gUHJpbnQgcGxhdGZvcm0gaW5mb3JtYXRpb24gd2hlbiBydW5uaW5nIHRoZSB3aG9sZSB0ZXN0IHN1aXRlLCBvciB1c2luZyB0aGUKLSAgLS12ZXJib3NlIGZsYWcuCi0KLS0gSXNzdWUgIzc2NzY3NTogZW5hYmxlIHRlc3RfcGVwMjc3IG9uIFBPU0lYIHBsYXRmb3JtcyB3aXRoIFVuaWNvZGUtZnJpZW5kbHkKLSAgZmlsZXN5c3RlbSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjI5MjogZm9yIHRoZSBtb21lbnQgYXQgbGVhc3QsIHRoZSB0ZXN0IHN1aXRlIHJ1bnMgY2xlYW5seSBpZiBweXRob24gaXMKLSAgcnVuIHdpdGggdGhlIC1PTyBmbGFnLiAgVGVzdHMgcmVxdWlyaW5nIGRvY3N0cmluZ3MgYXJlIHNraXBwZWQuCi0KLS0gSXNzdWUgIzc3MTI6IHRlc3Quc3VwcG9ydCBnYWluZWQgYSBuZXcgYHRlbXBfY3dkYCBjb250ZXh0IG1hbmFnZXIgd2hpY2ggaXMgbm93Ci0gIGFsc28gdXNlZCBieSByZWdydGVzdCB0byBydW4gYWxsIHRoZSB0ZXN0cyBpbiBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuICBUaGUKLSAgb3JpZ2luYWwgQ1dEIGlzIHNhdmVkIGluIGBzdXBwb3J0LlNBVkVEQ1dEYC4gIFRoYW5rcyB0byBGbG9yZW50IFhpY2x1bmEgd2hvCi0gIGhlbHBlZCB3aXRoIHRoZSBwYXRjaC4KLQotLSBJc3N1ZSAjNzkyNDogRml4IGFuIGludGVybWl0dGVudCAnWFhYIHVuZGV0ZWN0ZWQgZXJyb3InIGZhaWx1cmUgaW4gdGVzdF9jYXBpCi0gIChvbmx5IHNlZW4gc28gZmFyIG9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgY3Vyc2VzIG1vZHVsZSB3YXNuJ3QgYnVpbHQpLCBkdWUgdG8KLSAgYW4gdW5jbGVhcmVkIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjNzcyODogdGVzdF90aW1lb3V0IHdhcyBjaGFuZ2VkIHRvIHVzZSBzdXBwb3J0LmJpbmRfcG9ydCBpbnN0ZWFkIG9mIGEKLSAgaGFyZCBjb2RlZCBwb3J0LgotCi0tIElzc3VlICM3Mzc2OiBJbnN0ZWFkIG9mIHJ1bm5pbmcgYSBzZWxmLXRlc3QgKHdoaWNoIHdhcyBmYWlsaW5nKSB3aGVuIGNhbGxlZAotICB3aXRoIG5vIGFyZ3VtZW50cywgZG9jdGVzdC5weSBub3cgZ2l2ZXMgYSB1c2FnZSBtZXNzYWdlLgotCi0tIElzc3VlICM3Mzk2OiBmaXggcmVncnRlc3QgLXMsIHdoaWNoIHdhcyBicm9rZW4gYnkgdGhlIC1qIGVuaGFuY2VtZW50LgotCi0tIElzc3VlICM3NDk4OiB0ZXN0X211bHRpcHJvY2Vzc2luZyBub3cgdXNlcyB0ZXN0LnN1cHBvcnQuZmluZF91bnVzZWRfcG9ydAotICBpbnN0ZWFkIG9mIGEgaGFyZGNvZGVkIHBvcnQgbnVtYmVyIGluIHRlc3RfcmFwaWRfcmVzdGFydC4KLQotLSBJc3N1ZSAjNzQzMTogVXNlIFRFU1RGTiBpbiB0ZXN0X2xpbmVjYWNoZSBpbnN0ZWFkIG9mIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlCi0gIGluIHRoZSBMaWIvdGVzdCBkaXJlY3RvcnksIHdoaWNoIG1pZ2h0IGJlIHJlYWQtb25seSBmb3IgdGhlIHVzZXIgcnVubmluZyB0aGUKLSAgdGVzdHMuCi0KLS0gSXNzdWUgIzczMjQ6IEFkZCBhIHNhbml0eSBjaGVjayB0byByZWdydGVzdCBhcmd1bWVudCBwYXJzaW5nIHRvIGNhdGNoIHRoZSBjYXNlCi0gIG9mIGFuIG9wdGlvbiB3aXRoIG5vIGhhbmRsZXIuCi0KLS0gSXNzdWUgIzczMTI6IEFkZCBhIC1GIGZsYWcgdG8gcnVuIHRoZSBzZWxlY3RlZCB0ZXN0cyBpbiBhIGxvb3AgdW50aWwgYSB0ZXN0Ci0gIGZhaWxzLiAgQ2FuIGJlIGNvbWJpbmVkIHdpdGggLWouCi0KLS0gSXNzdWUgIzY1NTE6IHRlc3RfemlwaW1wb3J0IGNvdWxkIGltcG9ydCBhbmQgdGhlbiBkZXN0cm95IHNvbWUgbW9kdWxlcyBvZiB0aGUKLSAgZW5jb2RpbmdzIHBhY2thZ2UsIHdoaWNoIHdvdWxkIG1ha2Ugb3RoZXIgdGVzdHMgZmFpbCBmdXJ0aGVyIGRvd24gdGhlIHJvYWQKLSAgYmVjYXVzZSB0aGUgaW50ZXJuYWxseSBjYWNoZWQgZW5jb2RlcnMgYW5kIGRlY29kZXJzIHdvdWxkIHBvaW50IHRvIGVtcHR5Ci0gIGdsb2JhbCB2YXJpYWJsZXMuCi0KLS0gSXNzdWUgIzcyOTU6IERvIG5vdCB1c2UgYSBoYXJkY29kZWQgZmlsZSBuYW1lIGluIHRlc3RfdGFyZmlsZS4KLQotLSBJc3N1ZSAjNzI3MDogQWRkIHNvbWUgZGVkaWNhdGVkIHVuaXQgdGVzdHMgZm9yIG11bHRpLXRocmVhZCBzeW5jaHJvbml6YXRpb24KLSAgcHJpbWl0aXZlcyBzdWNoIGFzIExvY2ssIFJMb2NrLCBDb25kaXRpb24sIEV2ZW50IGFuZCBTZW1hcGhvcmUuCi0KLS0gSXNzdWUgIzcyNDggKHBhcnQgMik6IFVzZSBhIHVuaXF1ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBpbXBvcnRsaWIgc291cmNlCi0gIHRlc3RzIGluc3RlYWQgb2YgdGVtcGZpbGUudGVtcGRpci4gVGhpcyBwcmV2ZW50cyB0aGUgdGVzdHMgZnJvbSBzaGFyaW5nIHN0YXRlCi0gIGJldHdlZW4gY29uY3VycmVudCBleGVjdXRpb25zIG9uIHRoZSBzYW1lIHN5c3RlbS4KLQotLSBJc3N1ZSAjNzI0ODogSW4gaW1wb3J0bGliLnRlc3Quc291cmNlLnV0aWwgYSB0cnkvZmluYWxseSBibG9jayBkaWQgbm90IG1ha2UKLSAgc3VyZSB0aGF0IHNvbWUgcmVmZXJlbmNlZCBvYmplY3RzIGFjdHVhbGx5IHdlcmUgY3JlYXRlZCBpbiB0aGUgYmxvY2sgYmVmb3JlCi0gIGNhbGxpbmcgbWV0aG9kcyBvbiB0aGUgb2JqZWN0LgotCi0tIElzc3VlICM3MjIyOiBNYWtlIHRocmVhZCAicmVhcGluZyIgbW9yZSByZWxpYWJsZSBzbyB0aGF0IHJlZmVyZW5jZQotICBsZWFrLWNoYXNpbmcgdGVzdCBydW5zIGdpdmUgc2Vuc2libGUgcmVzdWx0cy4gVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nCi0gIHRocmVhZHMgY291bGQgcmV0dXJuIHN1Y2Nlc3NmdWxseSB3aGlsZSBzb21lIFRocmVhZCBvYmplY3RzIHdlcmUgc3RpbGwKLSAgcmVmZXJlbmNlZC4gVGhpcyBhbHNvIGludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjoKLSAgOmZ1bmM6YF90aHJlYWQuX2NvdW50KClgLgotCi0tIElzc3VlICM3MTUxOiBGaXhlZCByZWdydGVzdCAtaiBzbyB0aGF0IG91dHB1dCB0byBzdGRlcnIgZnJvbSBhIHRlc3Qgbm8gbG9uZ2VyCi0gIHJ1bnMgdGhlIHJpc2sgb2YgY2F1c2luZyB0aGUgd29ya2VyIHRocmVhZCB0byBmYWlsLgotCi0tIElzc3VlICM3MDU1OiB0ZXN0X19fYWxsX18gbm93IGdyZWVkaWx5IGRldGVjdHMgYWxsIG1vZHVsZXMgd2hpY2ggaGF2ZSBhbgotICBfX2FsbF9fIGF0dHJpYnV0ZSwgcmF0aGVyIHRoYW4gdXNpbmcgYSBoYXJkY29kZWQgYW5kIGluY29tcGxldGUgbGlzdC4KLQotLSBJc3N1ZSAjNzA1ODogQWRkZWQgc2F2ZS9yZXN0b3JlIGZvciB0aGluZ3MgbGlrZSBzeXMuYXJndiBhbmQgY3dkIHRvCi0gIHJ1bnRlc3RfaW5uZXIgaW4gcmVncnRlc3QsIHdpdGggd2FybmluZ3MgaWYgdGhlIGNhbGxlZCB0ZXN0IG1vZGlmaWVzIHRoZW0sIGFuZAotICBhIG5ldyBzZWN0aW9uIGluIHRoZSBzdW1tYXJ5IHJlcG9ydCBhdCB0aGUgZW5kLgotCi0tIElzc3VlICM3MDQyOiBGaXggdGVzdF9zaWduYWwgKHRlc3RfaXRpbWVyX3ZpcnR1YWwpIGZhaWx1cmUgb24gT1MgWCAxMC42LgotCi0tIEZpeGVkIHRlc3RzIGluIGltcG9ydGxpYi50ZXN0LnNvdXJjZS50ZXN0X2FiY19sb2FkZXIgdGhhdCB3ZXJlIG1hc2tpbmcgdGhlCi0gIHByb3BlciBleGNlcHRpb25zIHRoYXQgc2hvdWxkIGJlIHJhaXNlZCBmb3IgbWlzc2luZyBvciBpbXByb3BlciBjb2RlIG9iamVjdAotICBieXRlY29kZS4KLQotLSBSZW1vdmVkIGltcG9ydGxpYidzIGN1c3RvbSB0ZXN0IGRpc2NvdmVyeSBjb2RlIGFuZCBzd2l0Y2hlZCB0bwotICB1bml0dGVzdC5UZXN0TG9hZGVyLmRpc2NvdmVyKCkuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM1NDY0LCAjODk3NDogSW1wbGVtZW50IHBsdXJhbCBmb3JtcyBpbiBtc2dmbXQucHkuCi0KLS0gaW9iZW5jaCAoYSBmaWxlIEkvTyBiZW5jaG1hcmspIGFuZCBjY2JlbmNoIChhIGNvbmN1cnJlbmN5IGJlbmNobWFyaykgd2VyZQotICBhZGRlZCB0byB0aGUgYFRvb2xzL2AgZGlyZWN0b3J5LiAgVGhleSB3ZXJlIHByZXZpb3VzbHkgbGl2aW5nIGluIHRoZSBzYW5kYm94LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjctSnVuZS0yMDA5KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjMzNDogRml4IGJ1ZyBpbiByYW5nZSBsZW5ndGggY2FsY3VsYXRpb24gZm9yIHJhbmdlcyB3aXRoCi0gIGxhcmdlIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjNjMyOTogRml4ZWQgaXRlcmF0aW9uIGZvciBtZW1vcnl2aWV3IG9iamVjdHMgKGl0IHdhcyBiZWluZyBibG9ja2VkCi0gIGJlY2F1c2UgaXQgd2Fzbid0IHJlY29nbml6ZWQgYXMgYSBzZXF1ZW5jZSkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjEyNjogRml4ZWQgcGRiIGNvbW1hbmQtbGluZSB1c2FnZS4KLQotLSBJc3N1ZSAjNjMxNDogbG9nZ2luZzogcGVyZm9ybXMgZXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50LgotCi0tIElzc3VlICM2Mjc0OiBGaXhlZCBwb3NzaWJsZSBmaWxlIGRlc2NyaXB0b3JzIGxlYWsgaW4gc3VicHJvY2Vzcy5weQotCi0tIEFjY2Vzc2luZyBpby5TdHJpbmdJTy5idWZmZXIgbm93IHJhaXNlcyBhbiBBdHRyaWJ1dGVFcnJvciBpbnN0ZWFkIG9mCi0gIGlvLlVuc3VwcG9ydGVkT3BlcmF0aW9uLgotCi0tIElzc3VlICM2MjcxOiBtbWFwIHRyaWVkIHRvIGNsb3NlIGludmFsaWQgZmlsZSBoYW5kbGUgKC0xKSB3aGVuIGFub255bW91cy4KLSAgKE9uIFVuaXgpCi0KLS0gSXNzdWUgIzEyMDI6IHppcGZpbGUgbW9kdWxlIHdvdWxkIGNhdXNlIGEgc3RydWN0LmVycm9yIHdoZW4gYXR0ZW1wdGluZyB0bwotICBzdG9yZSBmaWxlcyB3aXRoIGEgQ1JDMzIgPiAyKiozMS0xLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTU5MDogUmVtb3ZlIHVudXNlZCBnbG9iYWwgdmFyaWFibGUgaW4gcHlleHBhdCBleHRlbnNpb24uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIFJlbGVhc2UgQ2FuZGlkYXRlIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTMtSnVuZS0yMDA5KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBGaXhlZCBTeXN0ZW1FcnJvciB0cmlnZ2VyZWQgYnkgInJhbmdlKFtdLCAxLCAtMSkiLgotCi0tIElzc3VlICM1OTI0OiBPbiBXaW5kb3dzLCBhIGxhcmdlIFBZVEhPTlBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgKG1vcmUgdGhhbiAyNTUgY2hhcmFjdGVycykgd291bGQgYmUgY29tcGxldGVseSBpZ25vcmVkLgotCi0tIElzc3VlICM0NTQ3OiBXaGVuIGRlYnVnZ2luZyBhIHZlcnkgbGFyZ2UgZnVuY3Rpb24sIGl0IHdhcyBub3QgYWx3YXlzCi0gIHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgbGluZW5vIGF0dHJpYnV0ZSBvZiB0aGUgY3VycmVudCBmcmFtZS4KLQotLSBJc3N1ZSAjNTMzMDogQyBmdW5jdGlvbnMgY2FsbGVkIHdpdGgga2V5d29yZCBhcmd1bWVudHMgd2VyZSBub3QgcmVwb3J0ZWQgYnkKLSAgdGhlIHZhcmlvdXMgcHJvZmlsaW5nIG1vZHVsZXMgKHByb2ZpbGUsIGNQcm9maWxlKS4gUGF0Y2ggYnkgSGFnZW4gRsO8cnN0ZW5hdS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM2NDM4OiBGaXhlZCBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyLmdldF92ZXJzaW9ucyA6IHRoZSByZWd1bGFyCi0gIGV4cHJlc3Npb24gc3RyaW5nIHBhdHRlcm4gd2FzIHRyeWluZyB0byBtYXRjaCBhZ2FpbnN0IGEgYnl0ZXMgcmV0dXJuZWQgYnkKLSAgUG9wZW4uIFRlc3RlZCB1bmRlciB3aW4zMiB0byBidWlsZCB0aGUgcHktcG9zdGdyZXNxbCBwcm9qZWN0LgotCi0tIElzc3VlICM2MjU4OiBTdXBwb3J0IEFNRDY0IGluIGJkaXN0X21zaS4KLQotLSBJc3N1ZSAjNjE5NTogZml4ZWQgZG9jdGVzdCB0byBubyBsb25nZXIgdHJ5IHRvIHJlYWQgJ3NvdXJjZScgZGF0YSBmcm9tCi0gIGJpbmFyeSBmaWxlcy4KLQotLSBJc3N1ZSAjNTI2MjogRml4ZWQgYnVnIGluIG5leHQgcm9sbG92ZXIgdGltZSBjb21wdXRhdGlvbiBpbgotICBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIuCi0KLS0gSXNzdWUgIzYyMTc6IFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIGlvLlRleHRJT1dyYXBwZXIgZGlkbid0IGluY2x1ZGUgdGhlCi0gIGVycm9ycyBwcm9wZXJ0eS4gIEFkZGl0aW9uYWxseSwgdGhlIGVycm9ycyBhbmQgZW5jb2RpbmcgcHJvcGVydGllcyBvZiBTdHJpbmdJTwotICBhcmUgYWx3YXlzIE5vbmUgbm93LgotCi0tIElzc3VlICM2MTM3OiBUaGUgcGlja2xlIG1vZHVsZSBub3cgdHJhbnNsYXRlcyBtb2R1bGUgbmFtZXMgd2hlbiBsb2FkaW5nCi0gIG9yIGR1bXBpbmcgcGlja2xlcyB3aXRoIGEgMi54LWNvbXBhdGlibGUgcHJvdG9jb2wsIGluIG9yZGVyIHRvIG1ha2UgZGF0YQotICBzaGFyaW5nIGFuZCBtaWdyYXRpb24gZWFzaWVyLiBUaGlzIGJlaGF2aW91ciBjYW4gYmUgZGlzYWJsZWQgdXNpbmcgdGhlCi0gIG5ldyBgZml4X2ltcG9ydHNgIG9wdGlvbmFsIGFyZ3VtZW50LgotCi0tIFJlbW92ZWQgdGhlIGlwYWRkciBtb2R1bGUuCi0KLS0gSXNzdWUgIzM2MTM6IGJhc2U2NC57ZW5jb2RlLGRlY29kZX1zdHJpbmcgYXJlIG5vdyBjYWxsZWQKLSAgYmFzZTY0LntlbmNvZGUsZGVjb2RlfWJ5dGVzIHdoaWNoIHJlZmxlY3RzIHdoYXQgdHlwZSB0aGV5IGFjY2VwdCBhbmQgcmV0dXJuLgotICBUaGUgb2xkIG5hbWVzIGFyZSBzdGlsbCB0aGVyZSBhcyBkZXByZWNhdGVkIGFsaWFzZXMuCi0KLS0gSXNzdWUgIzU3Njc6IFJlbW92ZSBzZ21sb3Agc3VwcG9ydCBmcm9tIHhtbHJwYy5jbGllbnQuCi0KLS0gSXNzdWUgIzYxNTA6IEZpeCB0ZXN0X3VuaWNvZGUgb24gd2lkZS11bmljb2RlIGJ1aWxkcy4KLQotLSBJc3N1ZSAjNjE0OTogRml4IGluaXRpYWxpemF0aW9uIG9mIFdlYWtWYWx1ZURpY3Rpb25hcnkgb2JqZWN0cyBmcm9tIG5vbi1lbXB0eQotICBwYXJhbWV0ZXJzLgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzYyMjE6IERlbGV0ZSB0ZXN0IHJlZ2lzdHJ5IGtleSBiZWZvcmUgcnVubmluZyB0aGUgdGVzdC4KLQotLSBJc3N1ZSAjNjE1ODogUGFja2FnZSBTaW5lLTEwMDBIei0zMDBtcy5haWYgaW4gTVNJIGZpbGUuCi0KLUMtQVBJCi0tLS0tLQotCi0tIElzc3VlICM1NzM1OiBQeXRob24gY29tcGlsZWQgd2l0aCAtLXdpdGgtcHlkZWJ1ZyBzaG91bGQgdGhyb3cgYW4KLSAgSW1wb3J0RXJyb3Igd2hlbiB0cnlpbmcgdG8gaW1wb3J0IG1vZHVsZXMgY29tcGlsZWQgd2l0aG91dAotICAtLXdpdGgtcHlkZWJ1ZywgYW5kIHZpY2UtdmVyc2EuCi0KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzYxNTQ6IE1ha2Ugc3VyZSB0aGUgaW50bCBsaWJyYXJ5IGlzIGFkZGVkIHRvIExJQlMgaWYgbmVlZGVkLiBBbHNvCi0gIGFkZGVkIExJQlMgdG8gT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgotCi0tIElzc3VlICM1ODA5OiBTcGVjaWZ5aW5nIGJvdGggLS1lbmFibGUtZnJhbWV3b3JrIGFuZCAtLWVuYWJsZS1zaGFyZWQgaXMKLSAgYW4gZXJyb3IuIENvbmZpZ3VyZSBub3cgZXhwbGljaXR5IHRlbGxzIHlvdSBhYm91dCB0aGlzLgotCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAwOS0wNS0zMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzYwOTc6IEVzY2FwZSBVVEYtOCBzdXJyb2dhdGVzIHJlc3VsdGluZyBmcm9tIG1ic3RvY3MgY29udmVyc2lvbgotICBvZiB0aGUgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM2MDEyOiBBZGQgY2xlYW51cCBzdXBwb3J0IHRvIE8mIGFyZ3VtZW50IHBhcnNpbmcuCi0KLS0gSXNzdWUgIzYwODk6IEZpeGVkIHN0ci5mb3JtYXQgd2l0aCBjZXJ0YWluIGludmFsaWQgZmllbGQgc3BlY2lmaWVycwotICB0aGF0IHdvdWxkIHJhaXNlIFN5c3RlbUVycm9yLgotCi0tIElzc3VlICM1OTgyOiBzdGF0aWNtZXRob2QgYW5kIGNsYXNzbWV0aG9kIG5vdyBleHBvc2UgdGhlIHdyYXBwZWQKLSAgZnVuY3Rpb24gd2l0aCBfX2Z1bmNfXy4KLQotLSBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IG1hbmFnZXJzIGluIHRoZSBzYW1lIHdpdGgtc3RhdGVtZW50LgotICBEZXByZWNhdGVkIGNvbnRleHRsaWIubmVzdGVkKCkgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZC4KLQotLSBJc3N1ZSAjNTgyOTogY29tcGxleCgiMWU1MDAiKSBubyBsb25nZXIgcmFpc2VzIE92ZXJmbG93RXJyb3IuICBUaGlzCi0gIG1ha2VzIGl0IGNvbnNpc3RlbnQgd2l0aCBmbG9hdCgiMWU1MDAiKSBhbmQgaW50ZXJwcmV0YXRpb24gb2YgcmVhbAotICBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzLgotCi0tIElzc3VlICMzNTI3OiBSZW1vdmVkIFB5X1dJTl9XSURFX0ZJTEVOQU1FUyB3aGljaCBpcyBub3QgdXNlZCBhbnkgbW9yZS4KLQotLSBJc3N1ZSAjNTk5NDogdGhlIG1hcnNoYWwgbW9kdWxlIG5vdyBoYXMgZG9jc3RyaW5ncy4KLQotLSBJc3N1ZSAjNTk4MTogRml4IHRocmVlIG1pbm9yIGluZi9uYW4gaXNzdWVzIGluIGZsb2F0LmZyb21oZXg6Ci0gICgxKSBpbmYgYW5kIG5hbiBzdHJpbmdzIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB3ZXJlIGluY29ycmVjdGx5Ci0gIHJlamVjdGVkOyAgKDIpIHBhcnNpbmcgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgaW5maW5pdGllcyBhbmQgbmFucwotICB3YXMgbG9jYWxlIGF3YXJlOyBhbmQgKDMpIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmcm9taGV4KCctbmFuJykKLSAgZGlkbid0IG1hdGNoIHRoYXQgb2YgZmxvYXQoJy1uYW4nKS4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM0ODU5OiBJbXBsZW1lbnQgUEVQIDM4MyBmb3IgcHdkLCBzcHdkLCBhbmQgZ3JwLgotCi0tIHNtdHBsaWIgJ2xvZ2luJyBhbmQgJ2NyYW0tbWQ1JyBsb2dpbiBhcmUgYWxzbyBmaXhlZCAoc2VlIElzc3VlICM1MjU5KS4KLQotLSBJc3N1ZSAjNjEyMTogcHlkb2Mgbm93IGlnbm9yZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZQotICBhcmd1bWVudCB0byB0aGUgJ2hlbHAnIGZ1bmN0aW9uLgotCi0tIElzc3VlICM2MTE4OiB1cmxsaWIucGFyc2UucXVvdGVfcGx1cyBpZ25vcmVkIHRoZSBlbmNvZGluZyBhbmQgZXJyb3JzCi0gIGFyZ3VtZW50cyBmb3Igc3RyaW5ncyB3aXRoIGEgc3BhY2UgaW4gdGhlbS4KLQotLSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgd2FzIG5vdCB3b3JraW5nIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZAotICBuYW1lczogIGNscywgc2VsZiwgdHVwbGUsIGl0ZW1nZXR0ZXIsIGFuZCBwcm9wZXJ0eS4KLQotLSBJbiB1bml0dGVzdCwgdXNpbmcgYSBza2lwcGluZyBkZWNvcmF0b3Igb24gYSBjbGFzcyBpcyBub3cgZXF1aXZhbGVudCB0bwotICBza2lwcGluZyBldmVyeSB0ZXN0IG9uIHRoZSBjbGFzcy4gIFRoZSBDbGFzc1Rlc3RTdWl0ZSBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgotCi0tIElzc3VlICM2MDUwOiBEb24ndCBmYWlsIGV4dHJhY3RpbmcgYSBkaXJlY3RvcnkgZnJvbSBhIHppcGZpbGUgaWYKLSAgdGhlIGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cy4KLQotLSBJc3N1ZSAjMTMwOTM1MjogZmNudGwgbm93IGNvbnZlcnRzIGl0cyB0aGlyZCBhcmd1bWVudHMgdG8gYSBDIGBsb25nYCByYXRoZXIKLSAgdGhhbiBhbiBpbnQsIHdoaWNoIG1ha2VzIHNvbWUgb3BlcmF0aW9ucyBwb3NzaWJsZSB1bmRlciA2NC1iaXQgTGludXggKGUuZy4KLSAgRE5fTVVMVElTSE9UIHdpdGggRl9OT1RJRlkpLgotCi0tIElzc3VlICM1NzYxOiBBZGQgdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcgZmlsZSB0byB0aGUgcmVwcigpIG9mIHZhcmlvdXMKLSAgSU8gb2JqZWN0cy4KLQotLSBJc3N1ZSAjNTI1OTogc210cGxpYiBwbGFpbiBhdXRoIGxvZ2luIG5vIGxvbmdlciBnaXZlcyBhIHRyYWNlYmFjay4gIEZpeAotICBieSBNdXNhc2hpIFRhbXVyYSwgdGVzdHMgYnkgTWFyY2luIEJhY2hyeS4KLQotLSBJc3N1ZSAjMTk4MzogRml4IGZ1bmN0aW9ucyB0YWtpbmcgb3IgcmV0dXJuaW5nIGEgcHJvY2VzcyBpZGVudGlmaWVyIHRvIHVzZQotICB0aGUgZGVkaWNhdGVkIEMgdHlwZSBgYHBpZF90YGAgaW5zdGVhZCBvZiBhIEMgYGBpbnRgYC4gU29tZSBwbGF0Zm9ybXMgaGF2ZQotICBhIHByb2Nlc3MgaWRlbnRpZmllciB0eXBlIHdpZGVyIHRoYW4gdGhlIHN0YW5kYXJkIEMgaW50ZWdlciB0eXBlLgotCi0tIElzc3VlICM0MDY2OiBzbXRwbGliLlNNVFBfU1NMLl9nZXRfc29ja2V0IG5vdyBjb3JyZWN0bHkgcmV0dXJucyB0aGUgc29ja2V0LgotICBQYXRjaCBieSBGYXJoYW4gQWhtYWQsIHRlc3QgYnkgTWFyY2luIEJhY2hyeS4KLQotLSBJc3N1ZSAjMjExNjogV2VhayByZWZlcmVuY2VzIGFuZCB3ZWFrIGRpY3Rpb25hcmllcyBub3cgc3VwcG9ydCBjb3B5KClpbmcgYW5kCi0gIGRlZXBjb3B5KClpbmcuCi0KLS0gSXNzdWUgIzE2NTU6IE1ha2UgaW1hcGxpYiBJUHY2LWNhcGFibGUuIFBhdGNoIGJ5IERlcmVrIE1vcnIuCi0KLS0gSXNzdWUgIzU5MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICMxNjY0OiBNYWtlIG5udHBsaWIgSVB2Ni1jYXBhYmxlLiBQYXRjaCBieSBEZXJlayBNb3JyLgotCi0tIElzc3VlICM1MDA2OiBCZXR0ZXIgaGFuZGxpbmcgb2YgdW5pY29kZSBieXRlLW9yZGVyIG1hcmtzIChCT00pIGluIHRoZSBpbwotICBsaWJyYXJ5LiBUaGlzIG1lYW5zLCBmb3IgZXhhbXBsZSwgdGhhdCBvcGVuaW5nIGFuIFVURi0xNiB0ZXh0IGZpbGUgaW4KLSAgYXBwZW5kIG1vZGUgZG9lc24ndCBhZGQgYSBCT00gYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiB0aGUgZmlsZSBpc24ndAotICBlbXB0eS4KLQotLSBJc3N1ZSAjNDA1MDogaW5zcGVjdC5maW5kc291cmNlL2dldHNvdXJjZSBub3cgcmFpc2UgYW4gSU9FcnJvciBpZiB0aGUgJ3NvdXJjZScKLSAgZmlsZSBpcyBhIGJpbmFyeS4gIFBhdGNoIGJ5IEJyb2RpZSBSYW8sIHRlc3RzIGJ5IERhbmllbCBEaW5pei4gIFRoaXMgZml4Ci0gIGNvcnJlY3RzIGEgcHlkb2MgcmVncmVzc2lvbi4KLQotLSBJc3N1ZSAjNTk1NTogYWlmYydzIGNsb3NlIG1ldGhvZCBkaWQgbm90IGNsb3NlIHRoZSBmaWxlIGl0IHdyYXBwZWQsCi0gIG5vdyBpdCBkb2VzLiAgVGhpcyBhbHNvIG1lYW5zIGdldGZwIG1ldGhvZCBub3cgcmV0dXJucyB0aGUgcmVhbCBmcC4KLQotSW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjA0NzogZnVsbGluc3RhbGwgaGFzIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIFB5dGhvbiAzJ3MgZXhlY3V0YWJsZSB3aWxsCi0gIG5vdyBiZSBrbm93biBhcyBweXRob24zLgotCi0tIExpYi9zbXRwZC5weSBpcyBubyBsb25nZXIgaW5zdGFsbGVkIGFzIGEgc2NyaXB0LgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzA2MTogVXNlIHdjc2Z0aW1lIGZvciB0aW1lLnN0cmZ0aW1lIHdoZXJlIGF2YWlsYWJsZS4KLQotLSBJc3N1ZSAjNDg3MzogRml4IHJlc291cmNlIGxlYWtzIGluIGVycm9yIGNhc2VzIG9mIHB3ZCBhbmQgZ3JwLgotCi0tIElzc3VlICM2MDkzOiBGaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBsb2NhbGUuc3RyeGZybS4KLQotLSBUaGUgX2Z1bmN0b29scyBhbmQgX2xvY2FsZSBtb2R1bGVzIGFyZSBub3cgYnVpbHQgaW50byB0aGUgbGlicHl0aG9uIHNoYXJlZAotICBsaWJyYXJ5IGluc3RlYWQgb2YgYXMgZXh0ZW5zaW9uIG1vZHVsZXMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMzNTg1OiBBZGQgcGtnLWNvbmZpZyBzdXBwb3J0LiBJdCBjcmVhdGVzIGEgcHl0aG9uLTIuNy5wYyBmaWxlCi0gIGFuZCBhIHB5dGhvbjMucGMgc3ltbGluayBpbiB0aGUgJChMSUJESVIpL3BrZ2NvbmZpZyBkaXJlY3RvcnkuIFBhdGNoIGJ5Ci0gIENsaW50b24gUm95LgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjNTQ0MjogVGVzdHMgZm9yIGltcG9ydGxpYiB3ZXJlIG5vdCBwcm9wZXJseSBza2lwcGluZyBjYXNlLXNlbnNpdGl2aXR5Ci0gIHRlc3RzIG9uIGRhcndpbiBldmVuIHdoZW4gdGhlIE9TIHdhcyBpbnN0YWxsZWQgb24gYSBjYXNlLXNlbnNpdGl2ZQotICBmaWxlc3lzdGVtLiBBbHNvIGZpeGVkIHRlc3RzIHRoYXQgc2hvdWxkIG5vdCBiZSBydW4gd2hlbgotICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyB0cnVlLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuMSBiZXRhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDA5LTA1LTA2KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTkxNDogQWRkIG5ldyBDIEFQSSBmdW5jdGlvbiBQeU9TX3N0cmluZ190b19kb3VibGUsIGFuZAotICBkZXByZWNhdGUgUHlPU19hc2NpaV9zdHJ0b2QgYW5kIFB5T1NfYXNjaWlfYXRvZi4KLQotLSBJc3N1ZSAjMzM4MjogZmxvYXQuX19mb3JtYXRfXywgY29tcGxleC5fX2Zvcm1hdF9fLCBhbmQgJS1mb3JtYXR0aW5nCi0gIG5vIGxvbmdlciBtYXAgJ0YnIHRvICdmJy4gQmVjYXVzZSBvZiBpc3N1ZSAjNTg1OSAoYmVsb3cpLCB0aGlzIG9ubHkKLSAgYWZmZWN0cyBuYW4gLT4gTkFOIGFuZCBpbmYgLT4gSU5GLgotCi0tIElzc3VlICM1Nzk5OiBudHBhdGggKGllLCBvcy5wYXRoIG9uIFdpbmRvd3MpIGZ1bGx5IHN1cHBvcnRzIFVOQyBwYXRobmFtZXMKLSAgaW4gYWxsIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzcGxpdGRyaXZlLCBzcGxpdCwgZXRjLiAgc3BsaXR1bmMoKSBub3cgaXNzdWVzCi0gIGEgUGVuZGluZ0RlcHJlY2F0aW9uIHdhcm5pbmcuCi0KLS0gSXNzdWUgIzU5MjA6IEZvciBmbG9hdC5fX2Zvcm1hdF9fLCBjaGFuZ2UgdGhlIGJlaGF2aW9yIHdpdGggdGhlCi0gIGVtcHR5IHByZXNlbnRhdGlvbiB0eXBlICh0aGF0IGlzLCBub3Qgb25lIG9mICdlJywgJ2YnLCAnZycsIG9yICduJykKLSAgdG8gYmUgbGlrZSAnZycgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwgcG9pbnQgYW5kIHdpdGggYQotICBkZWZhdWx0IHByZWNpc2lvbiBvZiAxMi4gUHJldmlvdXNseSwgdGhlIGJlaGF2aW9yIHRoZSBzYW1lIGJ1dCB3aXRoCi0gIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgNi4gIFRoaXMgbW9yZSBjbG9zZWx5IG1hdGNoZXMgc3RyKCksIGFuZAotICByZWR1Y2VzIHN1cnByaXNlcyB3aGVuIGFkZGluZyBhbGlnbm1lbnQgZmxhZ3MgdG8gdGhlIGVtcHR5Ci0gIHByZXNlbnRhdGlvbiB0eXBlLiBUaGlzIGFsc28gYWZmZWN0cyB0aGUgbmV3IGNvbXBsZXguX19mb3JtYXRfXyBpbgotICB0aGUgc2FtZSB3YXkuCi0KLS0gSW1wbGVtZW50IFBFUCAzODMsIE5vbi1kZWNvZGFibGUgQnl0ZXMgaW4gU3lzdGVtIENoYXJhY3RlciBJbnRlcmZhY2VzLgotCi0tIElzc3VlICM1ODkwOiBpbiBzdWJjbGFzc2VzIG9mICdwcm9wZXJ0eScgdGhlIF9fZG9jX18gYXR0cmlidXRlIHdhcwotICBzaGFkb3dlZCBieSBjbGFzc3R5cGUncywgZXZlbiBpZiBpdCB3YXMgTm9uZS4gIHByb3BlcnR5IG5vdwotICBpbnNlcnRzIHRoZSBfX2RvY19fIGludG8gdGhlIHN1YmNsYXNzIGluc3RhbmNlIF9fZGljdF9fLgotCi0tIElzc3VlICM0NDI2OiBUaGUgVVRGLTcgZGVjb2RlciB3YXMgdG9vIHN0cmljdCBhbmQgZGlkbid0IGFjY2VwdCBzb21lIGxlZ2FsCi0gIHNlcXVlbmNlcy4gUGF0Y2ggYnkgTmljayBCYXJuZXMgYW5kIFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICMzNjcyOiBSZWplY3Qgc3Vycm9nYXRlcyBpbiB1dGYtOCBjb2RlYzsgYWRkIHN1cnJvZ2F0ZXBhc3MgZXJyb3IgaGFuZGxlci4KLQotLSBJc3N1ZSAjNTg4MzogSW4gdGhlIGlvIG1vZHVsZSwgdGhlIEJ1ZmZlcmVkSU9CYXNlIGFuZCBUZXh0SU9CYXNlIEFCQ3MgaGF2ZQotICByZWNlaXZlZCBhIG5ldyBtZXRob2QsIGRldGFjaCgpLiAgZGV0YWNoKCkgZGlzY29ubmVjdHMgdGhlIHVuZGVybHlpbmcgc3RyZWFtCi0gIGZyb20gdGhlIGJ1ZmZlciBvciB0ZXh0IElPIGFuZCByZXR1cm5zIGl0LgotCi0tIElzc3VlICM1ODU5OiBSZW1vdmUgc3dpdGNoIGZyb20gJyVmJyB0byAnJWcnLXN0eWxlIGZvcm1hdHRpbmcgZm9yCi0gIGZsb2F0cyB3aXRoIGFic29sdXRlIHZhbHVlIG92ZXIgMWU1MC4gIEFsc28gcmVtb3ZlIGxlbmd0aAotICByZXN0cmljdGlvbnMgZm9yIGZsb2F0IGZvcm1hdHRpbmc6ICclLjY3ZicgJSAxMi4zNCBhbmQgJyUuMTIwZScgJQotICAxMi4zNCBubyBsb25nZXIgcmFpc2UgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICMxNTg4OiBBZGQgY29tcGxleC5fX2Zvcm1hdF9fLiBGb3IgZXhhbXBsZSwKLSAgZm9ybWF0KGNvbXBsZXgoMSwgMi4vMyksICcuNScpIG5vdyBwcm9kdWNlcyBhIHNlbnNpYmxlIHJlc3VsdC4KLQotLSBJc3N1ZSAjNTg2NDogRml4IGVtcHR5IGZvcm1hdCBjb2RlIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBzbyB0aGF0IGl0Ci0gIG5ldmVyIGdpdmVzIG1vcmUgdGhhbiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCi0KLS0gSXNzdWUgIzU3OTM6IFJhdGlvbmFsaXplIGlzZGlnaXQgLyBpc2FscGhhIC8gdG9sb3dlciwgZXRjLiBJbmNsdWRlcwotICBuZXcgUHlfSVNESUdJVCAvIFB5X0lTQUxQSEEgLyBQeV9UT0xPV0VSLCBldGMuIGluIHBjdHlwZXMuaC4KLQotLSBJc3N1ZSAjNTgzNTogRGVwcmVjYXRlIFB5T1NfYXNjaWlfZm9ybWF0ZC4KLQotLSBJc3N1ZSAjNDk3MTogRml4IHRpdGxlY2FzZSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSB0aGVpciBvd24KLSAgdGl0bGVjYXNlLCBidXQgbm90IHRoZWlyIG93biB1cHBlcmNhc2UuCi0KLS0gSXNzdWUgIzUyODM6IFNldHRpbmcgX19jbGFzc19fIGluIF9fZGVsX18gY2F1c2VkIGEgc2VnZmF1bHQuCi0KLS0gSXNzdWUgIzU4MTY6IGNvbXBsZXgocmVwcih6KSkgbm93IHJlY292ZXJzIHogZXhhY3RseSwgZXZlbiB3aGVuCi0gIHogaW52b2x2ZXMgbmFucywgaW5mcyBvciBuZWdhdGl2ZSB6ZXJvcy4KLQotLSBJc3N1ZSAjMzE2NjogTWFrZSBpbnQgLT4gZmxvYXQgY29udmVyc2lvbnMgY29ycmVjdGx5IHJvdW5kZWQuCi0KLS0gSXNzdWUgIzE4NjkgKGFuZCBtYW55IGR1cGxpY2F0ZXMpOiBtYWtlIHJvdW5kKHgsIG4pIGNvcnJlY3RseQotICByb3VuZGVkIGZvciBhIGZsb2F0IHgsIGJ5IHVzaW5nIHRoZSBkZWNpbWFsIDwtPiBiaW5hcnkgY29udmVyc2lvbnMKLSAgZnJvbSBQeXRob24vZHRvYS5jLiAgQXMgYSBjb25zZXF1ZW5jZSwgKGUuZy4pIHJvdW5kKHgsIDIpIG5vdwotICBjb25zaXN0ZW50bHkgYWdyZWVzIHdpdGggZm9ybWF0KHgsICcuMmYnKS4KLQotLSBJc3N1ZSAjNTc4Nzogb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc29tZV90eXBlLCAiX19iYXNlc19fIikgc2VnZmF1bHRlZCBvbgotICBzb21lIGJ1aWx0aW4gdHlwZXMuCi0KLS0gSXNzdWUgIzU3NzI6IGZvcm1hdCgxZTEwMCwgJzwnKSBwcm9kdWNlcyAnMWUrMTAwJywgbm90ICcxLjBlKzEwMCcuCi0KLS0gSXNzdWUgIzU1MTU6IHN0ci5mb3JtYXQoKSB0eXBlICduJyBjb21iaW5lZCB3aXRoIGNvbW1hcyBhbmQgbGVhZGluZwotICB6ZXJvcyBubyBsb25nZXIgZ2l2ZXMgb2RkIHJlc3VsdHMgd2l0aCBpbnRzIGFuZCBmbG9hdHMuCi0KLS0gSW1wbGVtZW50IFBFUCAzNzgsIEZvcm1hdCBTcGVjaWZpZXIgZm9yIFRob3VzYW5kcyBTZXBhcmF0b3IsIGZvcgotICBmbG9hdHMuCi0KLS0gVGhlIHN0ciBmdW5jdGlvbiBzd2l0Y2hlcyB0byBleHBvbmVudGlhbCBub3RhdGlvbiBhdAotICAxZTExLCBub3QgMWUxMi4gIFRoaXMgYXZvaWRzIHByaW50aW5nIDEzIHNpZ25pZmljYW50IGRpZ2l0cyBpbgotICBzaXR1YXRpb25zIHdoZXJlIG9ubHkgMTIgb2YgdGhlbSBhcmUgY29ycmVjdC4gIEV4YW1wbGUgcHJvYmxlbQotICB2YWx1ZTogc3RyKDFlMTEgKyAwLjUpLiAgKFRoaXMgbWlub3IgaXNzdWUgaGFzIGV4aXN0ZWQgaW4gMi54IGZvciBhCi0gIGxvbmcgdGltZS4pCi0KLS0gSXNzdWUgIzE1ODA6IE9uIG1vc3QgcGxhdGZvcm1zLCB1c2UgYSAnc2hvcnQnIGZsb2F0IHJlcHI6IGZvciBhCi0gIGZpbml0ZSBmbG9hdCB4LCByZXByKHgpIG5vdyBvdXRwdXRzIGEgc3RyaW5nIGJhc2VkIG9uIHRoZSBzaG9ydGVzdAotICBzZXF1ZW5jZSBvZiBkZWNpbWFsIGRpZ2l0cyB0aGF0IHJvdW5kcyB0byB4LiAgUHJldmlvdXMgYmVoYXZpb3VyIHdhcwotICB0byBvdXRwdXQgMTcgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCB0aGVuIHN0cmlwIHRyYWlsaW5nIHplcm9zLgotICBBbm90aGVyIG1pbm9yIGRpZmZlcmVuY2UgaXMgdGhhdCB0aGUgbmV3IHJlcHIgc3dpdGNoZXMgdG8KLSAgZXhwb25lbnRpYWwgbm90YXRpb24gYXQgMWUxNiBpbnN0ZWFkIG9mIHRoZSBwcmV2aW91cyAxZTE3OyB0aGlzCi0gIGF2b2lkcyBtaXNsZWFkaW5nIG91dHB1dCBpbiBzb21lIGNhc2VzLgotCi0gIFRoZXJlJ3MgYSBuZXcgc3lzIGF0dHJpYnV0ZSBzeXMuZmxvYXRfcmVwcl9zdHlsZSwgd2hpY2ggdGFrZXMKLSAgdGhlIHZhbHVlICdzaG9ydCcgdG8gaW5kaWNhdGUgdGhhdCB3ZSdyZSB1c2luZyBzaG9ydCBmbG9hdCByZXByLAotICBhbmQgJ2xlZ2FjeScgaWYgdGhlIHNob3J0IGZsb2F0IHJlcHIgaXNuJ3QgYXZhaWxhYmxlIGZvciBvbmUKLSAgcmVhc29uIG9yIGFub3RoZXIuCi0KLSAgVGhlIGZsb2F0IHJlcHIgY2hhbmdlIGludm9sdmVzIGluY29ycG9yYXRpbmcgRGF2aWQgR2F5J3MgJ3BlcmZlY3QKLSAgcm91bmRpbmcnIGNvZGUgaW50byB0aGUgUHl0aG9uIGNvcmUgKGl0J3MgaW4gUHl0aG9uL2R0b2EuYykuICBBcyBhCi0gIHNlY29uZGFyeSBjb25zZXF1ZW5jZSwgYWxsIHN0cmluZy10by1mbG9hdCBhbmQgZmxvYXQtdG8tc3RyaW5nCi0gIGNvbnZlcnNpb25zIChpbmNsdWRpbmcgYWxsIGZsb2F0IGZvcm1hdHRpbmcgb3BlcmF0aW9ucykgd2lsbCBiZQotICBjb3JyZWN0bHkgcm91bmRlZCBvbiB0aGVzZSBwbGF0Zm9ybXMuCi0KLSAgU2VlIGlzc3VlICMxNTgwIGRpc2N1c3Npb25zIGZvciBkZXRhaWxzIG9mIHBsYXRmb3JtcyBmb3Igd2hpY2gKLSAgdGhpcyBjaGFuZ2UgZG9lcyBub3QgYXBwbHkuCi0KLS0gSXNzdWUgIzU3NTk6IGZsb2F0KCkgZGlkbid0IGNhbGwgX19mbG9hdF9fIG9uIHN0ciBzdWJjbGFzc2VzLgotCi0tIFRoZSBzdHJpbmcubWFrZXRyYW5zKCkgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZDsgdGhlcmUgaXMgYSBuZXcgc3RhdGljIG1ldGhvZAotICBtYWtldHJhbnMoKSBvbiB0aGUgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjbGFzc2VzLiAgVGhpcyByZW1vdmVzIGNvbmZ1c2lvbiBhYm91dAotICB0aGUgdHlwZXMgc3RyaW5nLm1ha2V0cmFucygpIGlzIHN1cHBvc2VkIHRvIHdvcmsgd2l0aCwgYW5kIG1pcnJvcnMgdGhlCi0gIG1ldGhvZHMgYXZhaWxhYmxlIG9uIHRoZSBzdHIgY2xhc3MuCi0KLS0gSXNzdWUgIzIxNzA6IHJlZmFjdG9yZWQgeG1sLmRvbS5taW5pZG9tLm5vcm1hbGl6ZSwgaW5jcmVhc2luZyBib3RoCi0gIGl0cyBjbGFyaXR5IGFuZCBpdHMgc3BlZWQuCi0KLS0gSXNzdWUgIzExMTMyNDQ6IFB5X1hJTkNSRUYsIFB5X0RFQ1JFRiwgUHlfWERFQ1JFRjogQWRkIGBgZG8geyAuLi4gfSB3aGlsZSAoMClgYAotICB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KLQotLSBJc3N1ZSAjMzczOTogVGhlIHVuaWNvZGUtaW50ZXJuYWwgZW5jb2RlciBub3cgcmVwb3J0cyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMKLSAgY29uc3VtZWQgbGlrZSBhbnkgb3RoZXIgZW5jb2RlciAoaW5zdGVhZCBvZiB0aGUgbnVtYmVyIG9mIGJ5dGVzKS4KLQotSW5zdGFsbGF0aW9uCi0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTc1NjogSW5zdGFsbCBpZGxlIGFuZCBweWRvYyB3aXRoIGEgMyBzdWZmaXguCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjODIwMzogRml4IElETEUgQ3JlZGl0cyBkaWFsb2c6IHZpZXdfZmlsZSgpIHVzZXMgaXRzIGVuY29kaW5nIGFyZ3VtZW50LgotCi0tIElzc3VlICM1MzExOiBiZGlzdF9tc2kgY2FuIG5vdyBidWlsZCBwYWNrYWdlcyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gYQotICBzcGVjaWZpYyBQeXRob24gdmVyc2lvbi4KLQotLSBJc3N1ZSAjNTE1MDogSURMRSdzIGZvcm1hdCBtZW51IG5vdyBoYXMgYW4gb3B0aW9uIHRvIHN0cmlwIHRyYWlsaW5nCi0gIHdoaXRlc3BhY2UuCi0KLS0gSXNzdWUgIzU5NDA6IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2NsaWIuY2hlY2tfbGlicmFyeV9saXN0IHdhcyBub3QgZG9pbmcKLSAgdGhlIHJpZ2h0IHR5cGUgY2hlY2tpbmdzIGFueW1vcmUuCi0KLS0gSXNzdWUgIzQ4NzU6IE9uIHdpbjMyLCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgZG9lcyBubyBsb25nZXIKLSAgcmV0dXJuIGRpcmVjdG9yaWVzLgotCi0tIElzc3VlICM1MTQyOiBBZGQgdGhlIGFiaWxpdHkgdG8gc2tpcCBtb2R1bGVzIHdoaWxlIHN0ZXBwaW5nIHRvIHBkYi4KLQotLSBJc3N1ZSAjMTMwOTU2NzogRml4IGxpbmVjYWNoZSBiZWhhdmlvciBvZiBzdHJpcHBpbmcgc3ViZGlyZWN0b3JpZXMgd2hlbgotICBsb29raW5nIGZvciBmaWxlcyBnaXZlbiBieSBhIHJlbGF0aXZlIGZpbGVuYW1lLgotCi0tIElzc3VlICM1OTIzOiBVcGRhdGUgdGhlIGBgdHVydGxlYGAgbW9kdWxlIHRvIHZlcnNpb24gMS4xLCBhZGQgdHdvIG5ldwotICB0dXJ0bGUgZGVtb3MgaW4gRGVtby90dXJ0bGUuCi0KLS0gSXNzdWUgIzU2OTI6IEluIDpjbGFzczpgemlwZmlsZS5aaXBmaWxlYCwgZml4IHdyb25nIHBhdGggY2FsY3VsYXRpb24gd2hlbgotICBleHRyYWN0aW5nIGEgZmlsZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzU5MTM6IG9zLmxpc3RkaXIoKSBzaG91bGQgZmFpbCBmb3IgZW1wdHkgcGF0aCBvbiB3aW5kb3dzLgotCi0tIElzc3VlICM1MDg0OiB1bnBpY2tsaW5nIG5vdyBpbnRlcm5zIHRoZSBhdHRyaWJ1dGUgbmFtZXMgb2YgcGlja2xlZCBvYmplY3RzLAotICBzYXZpbmcgbWVtb3J5IGFuZCBhdm9pZGluZyBncm93dGggaW4gc2l6ZSBvZiBzdWJzZXF1ZW50IHBpY2tsZXMuIFByb3Bvc2FsCi0gIGFuZCBvcmlnaW5hbCBwYXRjaCBieSBKYWtlIE1jR3VpcmUuCi0KLS0gVGhlIGpzb24gbW9kdWxlIG5vdyB3b3JrcyBleGNsdXNpdmVseSB3aXRoIHN0ciBhbmQgbm90IGJ5dGVzLgotCi0tIElzc3VlICMzOTU5OiBUaGUgaXBhZGRyIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLSAgQ29udHJpYnV0ZWQgYnkgR29vZ2xlLgotCi0tIElzc3VlICMzMDAyOiBgYHNodXRpbC5jb3B5ZmlsZSgpYGAgYW5kIGBgc2h1dGlsLmNvcHl0cmVlKClgYCBub3cgcmFpc2UgYW4KLSAgZXJyb3Igd2hlbiBhIG5hbWVkIHBpcGUgaXMgZW5jb3VudGVyZWQsIHJhdGhlciB0aGFuIGJsb2NraW5nIGluZmluaXRlbHkuCi0KLS0gSXNzdWUgIzU4NTc6IHRva2VuaXplLnRva2VuaXplKCkgbm93IHJldHVybnMgbmFtZWQgdHVwbGVzLgotCi0tIElzc3VlICM0MzA1OiBjdHlwZXMgc2hvdWxkIG5vdyBidWlsZCBhZ2FpbiBvbiBtaXBzZWwtbGludXgtZ251Ci0KLS0gSXNzdWUgIzE3MzQyMzQ6IE1hc3NpdmVseSBzcGVlZHVwIGBgdW5pY29kZWRhdGEubm9ybWFsaXplKClgYCB3aGVuIHRoZQotICBzdHJpbmcgaXMgYWxyZWFkeSBpbiBub3JtYWxpemVkIGZvcm0sIGJ5IHBlcmZvcm1pbmcgYSBxdWljayBjaGVjayBiZWZvcmVoYW5kLgotICBPcmlnaW5hbCBwYXRjaCBieSBSYXVsaSBSdW9ob25lbi4KLQotLSBJc3N1ZSAjNTg1MzogY2FsbGluZyBhIGZ1bmN0aW9uIG9mIHRoZSBtaW1ldHlwZXMgbW9kdWxlIGZyb20gc2V2ZXJhbCB0aHJlYWRzCi0gIGF0IG9uY2UgY291bGQgaGl0IHRoZSByZWN1cnNpb24gbGltaXQgaWYgdGhlIG1pbWV0eXBlcyBkYXRhYmFzZSBoYWRuJ3QgYmVlbgotICBpbml0aWFsaXplZCBiZWZvcmUuCi0KLS0gSXNzdWUgIzU4NTQ6IFVwZGF0ZWQgX19hbGxfXyB0byBpbmNsdWRlIHNvbWUgbWlzc2luZyBuYW1lcyBhbmQgcmVtb3ZlIHNvbWUKLSAgbmFtZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSBleHBvcnRlZC4KLQotLSBJc3N1ZSAjMzEwMjogIEFsbCBnbG9iYWwgc3ltYm9scyB0aGF0IHRoZSBfY3R5cGVzIGV4dGVuc2lvbiBkZWZpbmVzCi0gIGFyZSBub3cgcHJlZml4ZWQgd2l0aCAnUHknIG9yICdfY3R5cGVzJy4KLQotLSBJc3N1ZSAjNTA0MTogY3R5cGVzIGRvZXMgbm93IGFsbG93IHBpY2tsaW5nIHdpZGUgY2hhcmFjdGVyLgotCi0tIElzc3VlICM1ODEyOiBGb3IgdGhlIHR3by1hcmd1bWVudCBmb3JtIG9mIHRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciwKLSAgRnJhY3Rpb24obSwgbiksIG0gYW5kIG4gYXJlIHBlcm1pdHRlZCB0byBiZSBhcmJpdHJhcnkgUmF0aW9uYWwKLSAgaW5zdGFuY2VzLgotCi0tIElzc3VlICM1ODEyOiBGcmFjdGlvbignMWU2JykgaXMgdmFsaWQ6IG1vcmUgZ2VuZXJhbGx5LCBhbnkgc3RyaW5nCi0gIHRoYXQncyB2YWxpZCBmb3IgZmxvYXQoKSBpcyBub3cgdmFsaWQgZm9yIEZyYWN0aW9uKCksIHdpdGggdGhlCi0gIGV4Y2VwdGlvbiBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyBOYU5zIGFuZCBpbmZpbml0aWVzLgotCi0tIElzc3VlICM1NzM0OiBCdWZmZXJlZFJXUGFpciB3YXMgcG9vcmx5IHRlc3RlZCBhbmQgaGFkIHNldmVyYWwgZ2xhcmluZwotICBidWdzLiBQYXRjaCBieSBCcmlhbiBRdWlubGFuLgotCi0tIElzc3VlICMxMTYxMDMxOiBmaXggcmVhZHdyaXRlIHNlbGVjdCBmbGFnIGhhbmRsaW5nOiBQT0xMUFJJIG5vdwotICByZXN1bHRzIGluIGEgaGFuZGxlX2V4cHRfZXZlbnQgY2FsbCwgbm90IGhhbmRsZV9yZWFkX2V2ZW50LCBhbmQgUE9MTEVSUgotICBhbmQgUE9MTE5WQUwgbm93IGNhbGwgaGFuZGxlX2Nsb3NlLCBub3QgaGFuZGxlX2V4cHRfZXZlbnQuICBBbHNvLAotICBkaXNwYXRjaGVyIG5vdyBoYXMgYW4gJ2lnbm9yZV9sb2dfdHlwZXMnIGF0dHJpYnV0ZSBmb3Igc3VwcHJlc3NpbmcKLSAgbG9nIG1lc3NhZ2VzLCB3aGljaCBpcyBzZXQgdG8gJ3dhcm5pbmcnIGJ5IGRlZmF1bHQuCi0KLS0gSXNzdWUgIzI3MDM6IFNpbXBsZVhNTFJQQ0Rpc3BhdGNoZXIuX19pbml0X186IFByb3ZpZGUgZGVmYXVsdCB2YWx1ZXMgZm9yCi0gIG5ldyBhcmd1bWVudHMgaW50cm9kdWNlZCBpbiAyLjUuCi0KLS0gSXNzdWUgIzU4MjggKEludmFsaWQgYmVoYXZpb3Igb2YgdW5pY29kZS5sb3dlcik6IEZpeGVkIGJvZ3VzIGxvZ2ljIGluCi0gIG1ha2V1bmljb2RlZGF0YS5weSBhbmQgcmVnZW5lcmF0ZWQgdGhlIFVuaWNvZGUgZGF0YWJhc2UgKFRoaXMgZml4ZXMKLSAgdSdcdTFkNzknLmxvd2VyKCkgPT0gJ1x4MDAnKS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU4ODE6IFJlbW92ZSBvbGQgdW5kb2N1bWVudGVkIGNvbXBhdGliaWxpdHkgaW50ZXJmYWNlcyBpbiBoYXNobGliIGFuZAotICBwd2QuCi0KLS0gSXNzdWUgIzU0NjM6IEluIHN0cnVjdCBtb2R1bGUsIHJlbW92ZSBkZXByZWNhdGVkIGZsb2F0IGNvZXJjaW9uCi0gIGZvciBpbnRlZ2VyIHR5cGUgY29kZXM6IHN0cnVjdC5wYWNrKCdMJywgMC4zKSBzaG91bGQgbm93IHJhaXNlCi0gIGFuIGVycm9yLiAgVGhlIF9QWV9TVFJVQ1RfRkxPQVRfQ09FUkNFIGNvbnN0YW50IGhhcyBiZWVuIHJlbW92ZWQuCi0gIFRoZSB2ZXJzaW9uIG51bWJlciBoYXMgYmVlbiBidW1wZWQgdG8gMC4zLgotCi0tIElzc3VlICM1MzU5OiBSZWFkZCB0aGUgQmVya2VsZXkgREIgZGV0ZWN0aW9uIGNvZGUgdG8gYWxsb3cgX2RibSBiZSBidWlsdAotICB1c2luZyBCZXJrZWxleSBEQi4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzUzNTQ6IE5ldyB0ZXN0IHN1cHBvcnQgZnVuY3Rpb24gaW1wb3J0X2ZyZXNoX21vZHVsZSgpIG1ha2VzCi0gIGl0IGVhc3kgdG8gaW1wb3J0IGJvdGggbm9ybWFsIGFuZCBvcHRpbWlzZWQgdmVyc2lvbnMgb2YgbW9kdWxlcy4KLSAgdGVzdF9oZWFwcSBhbmQgdGVzdF93YXJuaW5ncyBoYXZlIGJlZW4gYWRqdXN0ZWQgdG8gdXNlIGl0LCB0ZXN0cyBmb3IKLSAgb3RoZXIgbW9kdWxlcyB3aXRoIGJvdGggQyBhbmQgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgc3RkbGliCi0gIGNhbiBiZSBhZGp1c3RlZCB0byB1c2UgaXQgb3ZlciB0aW1lLgotCi0tIElzc3VlICM1ODM3OiBDZXJ0YWluIHNlcXVlbmNlcyBvZiBjYWxscyB0byBzZXQoKSBhbmQgdW5zZXQoKSBmb3IKLSAgc3VwcG9ydC5FbnZpcm9ubWVudFZhckd1YXJkIG9iamVjdHMgcmVzdG9yZWQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcwotICBpbmNvcnJlY3RseSBvbiBfX2V4aXRfXy4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzU2MzA6IEEgcmVwbGFjZW1lbnQgUHlDT2JqZWN0IEFQSSwgUHlDYXBzdWxlLCBoYXMgYmVlbiBhZGRlZC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgYWxwaGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDA5LTQtNCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSW1wbGVtZW50IFBFUCAzNzgsIEZvcm1hdCBTcGVjaWZpZXIgZm9yIFRob3VzYW5kcyBTZXBhcmF0b3IsIGZvcgotICBpbnRlZ2Vycy4KLQotLSBJc3N1ZSAjNTY2NjogUHlfQnVpbGRWYWx1ZSdzICdjJyBjb2RlIHNob3VsZCBjcmVhdGUgYnl0ZSBzdHJpbmdzLgotCi0tIElzc3VlICM1NDk5OiBUaGUgJ2MnIGNvZGUgZm9yIGFyZ3VtZW50IHBhcnNpbmcgZnVuY3Rpb25zIG5vdyBvbmx5IGFjY2VwdHMgYQotICBieXRlLCBhbmQgdGhlICdDJyBjb2RlIG9ubHkgYWNjZXB0cyBhIHVuaWNvZGUgY2hhcmFjdGVyLgotCi0tIEZpeCBhIHByb2JsZW0gaW4gUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uIHRoYXQgbGVhZHMgdG8gInVuZGV0ZWN0ZWQgZXJyb3JzIgotICB3aGVuIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMuCi0KLS0gSXNzdWUgIzE2NjUyMDY6IFJlbW92ZSB0aGUgbGFzdCBlYWdlciBpbXBvcnQgaW4gX3dhcm5pbmdzLmMgYW5kIG1ha2UgaXQgbGF6eS4KLQotLSBGaXggYSBzZWdmYXVsdCB3aGVuIHJ1bm5pbmcgdGVzdF9leGNlcHRpb25zIHdpdGggY292ZXJhZ2UsIGNhdXNlZCBieQotICBpbnN1ZmZpY2llbnQgY2hlY2tzIGluIGFjY2Vzc29ycyBvZiBFeGNlcHRpb24uX19jb250ZXh0X18uCi0KLS0gSXNzdWUgIzU2MDQ6IG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIG1vZHVsZSBuYW1lIHBhc3NlZCB0bwotICBpbXAuZmluZF9tb2R1bGUoKSB3ZXJlIGNvbnZlcnRlZCB0byBVVEYtOCB3aGlsZSB0aGUgcGF0aCBpcwotICBjb252ZXJ0ZWQgdG8gdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZywgY2F1c2luZyBub25zZW5zZS4KLQotLSBJc3N1ZSAjNTEyNjogc3RyLmlzcHJpbnRhYmxlKCkgcmV0dXJuZWQgRmFsc2UgZm9yIHNwYWNlIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzQ4NjU6IE9uIE1hY09TWCAvTGlicmFyeS9QeXRob24vMi43L3NpdGUtcGFja2FnZXMgaXMgYWRkZWQgdG8KLSAgdGhlIGVuZCBzeXMucGF0aCwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3lzdGVtIGluc3RhbGwgb2YgUHl0aG9uLgotCi0tIElzc3VlICM0Njg4OiBBZGQgYSBoZXVyaXN0aWMgc28gdGhhdCB0dXBsZXMgYW5kIGRpY3RzIGNvbnRhaW5pbmcgb25seQotICB1bnRyYWNrYWJsZSBvYmplY3RzIGFyZSBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFRoaXMgY2FuCi0gIHJlZHVjZSB0aGUgc2l6ZSBvZiBjb2xsZWN0aW9ucyBhbmQgdGhlcmVmb3JlIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3ZlcmhlYWQKLSAgb24gbG9uZy1ydW5uaW5nIHByb2dyYW1zLCBkZXBlbmRpbmcgb24gdGhlaXIgcGFydGljdWxhciB1c2Ugb2YgZGF0YXR5cGVzLgotCi0tIElzc3VlICM1NTEyOiBSZXdyaXRlIFB5TG9uZyBsb25nIGRpdmlzaW9uIGFsZ29yaXRobSAoeF9kaXZyZW0pIHRvCi0gIGltcHJvdmUgaXRzIHBlcmZvcm1hbmNlLiAgTG9uZyBkaXZpc2lvbnMgYW5kIHJlbWFpbmRlciBvcGVyYXRpb25zCi0gIGFyZSBub3cgYmV0d2VlbiA1MCUgYW5kIDE1MCUgZmFzdGVyLgotCi0tIElzc3VlICM0MjU4OiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBiYXNlIDIqKjMwIGluc3RlYWQgb2YgYmFzZQotICAyKioxNSBmb3IgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLCBmb3IgcGVyZm9ybWFuY2UKLSAgcmVhc29ucy4gIEJhc2UgMioqMzAgaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9uIDY0LWJpdCBtYWNoaW5lcy4gIEFkZAotICAtLWVuYWJsZS1iaWctZGlnaXRzIG9wdGlvbiB0byBjb25maWd1cmUsIHdoaWNoIG92ZXJyaWRlcyB0aGUKLSAgZGVmYXVsdC4gIEFkZCBzeXMuaW50X2luZm8gc3RydWN0c2VxIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQKLSAgdGhlIGludGVybmFsIGZvcm1hdC4KLQotLSBJc3N1ZSAjNDQ3NDogUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBub3cgY29udmVydHMgY2hhcmFjdGVycyBvdXRzaWRlCi0gIHRoZSBCTVAgdG8gc3Vycm9nYXRlIHBhaXJzLCBvbiBzeXN0ZW1zIHdpdGggc2l6ZW9mKHdjaGFyX3QpID09IDQKLSAgYW5kIHNpemVvZihQeV9VTklDT0RFKSA9PSAyLgotCi0tIElzc3VlICM1MjM3OiBBbGxvdyBhdXRvLW51bWJlcmVkIGZpZWxkcyBpbiBzdHIuZm9ybWF0KCkuIEZvcgotICBleGFtcGxlOiAne30ge30nLmZvcm1hdCgxLCAyKSA9PSAnMSAyJy4KLQotLSBJc3N1ZSAjNTM5Mjogd2hlbiBhIHZlcnkgbG93IHJlY3Vyc2lvbiBsaW1pdCB3YXMgc2V0LCB0aGUgaW50ZXJwcmV0ZXIgd291bGQKLSAgYWJvcnQgd2l0aCBhIGZhdGFsIGVycm9yIGFmdGVyIHRoZSByZWN1cnNpb24gbGltaXQgd2FzIGhpdCB0d2ljZS4KLQotLSBJc3N1ZSAjMzg0NTogSW4gUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MgYXZvaWQgaW52YWxpZCBtZW1vcnkgYWNjZXNzIHdpdGgKLSAgc2hvcnQgZmlsZSBuYW1lcy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyNjI1OiBhZGRlZCBtaXNzaW5nIGl0ZW1zKCkgY2FsbCB0byB0aGUgZm9yIGxvb3AgaW4KLSAgbWFpbGJveC5NSC5nZXRfbWVzc2FnZSgpLgotCi0tIElzc3VlICM1NjQwOiBGaXggX211bHRpYnl0ZWNvZGVjIHNvIHRoYXQgQ0pLIGNvZGVjcyBkb24ndCByZXBlYXQKLSAgZXJyb3Igc3Vic3RpdHV0aW9ucyBmcm9tIG5vbi1zdHJpY3QgY29kZWMgZXJyb3IgY2FsbGJhY2tzIGluCi0gIGluY3JlbWVudGFsZW5jb2RlciBhbmQgU3RyZWFtV3JpdGVyLgotCi0tIElzc3VlICM1NjU2OiBGaXggdGhlIGNvdmVyYWdlIHJlcG9ydGluZyB3aGVuIHJ1bm5pbmcgdGhlIHRlc3Qgc3VpdGUgd2l0aAotICB0aGUgLVQgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzU2NDc6IE11dGFibGVTZXQuX19pYW5kX18oKSBubyBsb25nZXIgbXV0YXRlcyBzZWxmIGR1cmluZyBpdGVyYXRpb24uCi0KLS0gSXNzdWUgIzU2MjQ6IEZpeCB0aGUgX3dpbnJlZyBtb2R1bGUgbmFtZSBzdGlsbCB1c2VkIGluIHNldmVyYWwgbW9kdWxlcy4KLQotLSBJc3N1ZSAjNTYyODogRml4IGlvLlRleHRJT1dyYXBwZXIucmVhZCgpIHdpdGggYSB1bnJlYWRhYmxlIGJ1ZmZlci4KLQotLSBJc3N1ZSAjNTYxOTogTXVsdGlwcm9jZXNzaW5nIGNoaWxkcmVuIGRpc29iZXkgdGhlIGRlYnVnIGZsYWcgYW5kIGNhdXNlcwotICBwb3B1cHMgb24gd2luZG93cyBidWlsZGJvdHMuIFBhdGNoIGFwcGxpZWQgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZS4KLQotLSBJc3N1ZSAjNTQwMDogQWRkZWQgcGF0Y2ggZm9yIG11bHRpcHJvY2Vzc2luZyBvbiBuZXRic2QgY29tcGlsYXRpb24vc3VwcG9ydAotCi0tIElzc3VlICM1Mzg3OiBGaXhlZCBtbWFwLm1vdmUgY3Jhc2ggYnkgaW50ZWdlciBvdmVyZmxvdy4KLQotLSBJc3N1ZSAjNTI2MTogUGF0Y2ggbXVsdGlwcm9jZXNzaW5nJ3Mgc2VtYXBob3JlLmMgdG8gc3VwcG9ydCBjb250ZXh0Ci0gIG1hbmFnZXIgdXNlOiAid2l0aCBtdWx0aXByb2Nlc3NpbmcuTG9jaygpIiB3b3JrcyBub3cuCi0KLS0gSXNzdWUgIzUyMzY6IENoYW5nZSB0aW1lLnN0cnB0aW1lKCkgdG8gb25seSB0YWtlIHN0cmluZ3MuIERpZG4ndCB3b3JrIHdpdGgKLSAgYnl0ZXMgYWxyZWFkeSBidXQgdGhlIGZhaWx1cmUgd2FzIG5vbi1vYnZpb3VzLgotCi0tIElzc3VlICM1MTc3OiBNdWx0aXByb2Nlc3NpbmcncyBTb2NrZXRMaXN0ZW5lciBjbGFzcyBub3cgdXNlcwotICBzb2NrZXQuU09fUkVVU0VBRERSIG9uIGFsbCBjb25uZWN0aW9ucyBzbyB0aGF0IHRoZSB1c2VyIG5vIGxvbmdlciBuZWVkcwotICB0byB3YWl0IDEyMCBzZWNvbmRzIGZvciB0aGUgc29ja2V0IHRvIGV4cGlyZS4KLQotLSBJc3N1ZSAjNTU5NTogRml4IFVuYm91bmRlZExvY2FsRXJyb3IgaW4gbnRwYXRoLmlzbW91bnQoKS4KLQotLSBJc3N1ZSAjMTE3NDYwNjogQ2FsbGluZyByZWFkKCkgd2l0aG91dCBhcmd1bWVudHMgb2YgYW4gdW5ib3VuZGVkIGZpbGUKLSAgKHR5cGljYWxseSAvZGV2L3plcm8gdW5kZXIgVW5peCkgY291bGQgY3Jhc2ggdGhlIGludGVycHJldGVyLgotCi0tIFRoZSBtYXhfYnVmZmVyX3NpemUgYXJndW1lbnRzIG9mIGlvLkJ1ZmZlcmVkV3JpdGVyLCBpby5CdWZmZXJlZFJXUGFpciwgYW5kCi0gIGlvLkJ1ZmZlcmVkUmFuZG9tIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjIuCi0KLS0gSXNzdWUgIzUwNjg6IEZpeGVkIHRoZSB0YXJmaWxlLl9CWjJQcm94eS5yZWFkKCkgbWV0aG9kIHRoYXQgd291bGQgbG9vcAotICBmb3JldmVyIG9uIGluY29tcGxldGUgaW5wdXQuIFRoYXQgY2F1c2VkIHRhcmZpbGUub3BlbigpIHRvIGhhbmcgd2hlbiB1c2VkCi0gIHdpdGggbW9kZSAncicgb3IgJ3I6YnoyJyBhbmQgYSBmaWxlb2JqIGFyZ3VtZW50IHRoYXQgY29udGFpbmVkIG5vIGRhdGEgb3IKLSAgcGFydGlhbCBiemlwMiBjb21wcmVzc2VkIGRhdGEuCi0KLS0gSXNzdWUgIzIxMTA6IEFkZCBzdXBwb3J0IGZvciB0aG91c2FuZHMgc2VwYXJhdG9yIGFuZCAnbicgdHlwZQotICBzcGVjaWZpZXIgdG8gRGVjaW1hbC5fX2Zvcm1hdF9fCi0KLS0gRml4IERlY2ltYWwuX19mb3JtYXRfXyBidWcgdGhhdCBzd2FwcGVkIHRoZSBtZWFuaW5ncyBvZiB0aGUgJzwnIGFuZAotICAnPicgYWxpZ25tZW50IGNoYXJhY3RlcnMuCi0KLS0gVGhlIGVycm9yIGRldGVjdGlvbiBjb2RlIGluIEZpbGVJTy5jbG9zZSgpIGNvdWxkIGZhaWwgdG8gcmVmbGVjdCB0aGUgYGVycm5vYAotICB2YWx1ZSwgYW5kIHJlcG9ydCBpdCBhcyAtMSBpbnN0ZWFkLgotCi0tIElzc3VlICM1MDE2OiBGaWxlSU8uc2Vla2FibGUoKSBjb3VsZCByZXR1cm4gRmFsc2UgaWYgdGhlIGZpbGUgcG9zaXRpb24KLSAgd2FzIG5lZ2F0aXZlIHdoZW4gdHJ1bmNhdGVkIHRvIGEgQyBpbnQuIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTM5MTogbW1hcCBub3cgZGVhbHMgZXhjbHVzaXZlbHkgd2l0aCBieXRlcy4KLQotLSBJc3N1ZSAjNTQ2MzogSW4gc3RydWN0IG1vZHVsZSwgcmVtb3ZlIGRlcHJlY2F0ZWQgb3ZlcmZsb3cgd3JhcHBpbmcKLSAgd2hlbiBwYWNraW5nIGFuIGludGVnZXI6IHN0cnVjdC5wYWNrKCc9TCcsIC0xKSBub3cgcmFpc2VzCi0gIHN0cnVjdC5lcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBiJ1x4ZmZceGZmXHhmZlx4ZmYnLiAgVGhlCi0gIF9QWV9TVFJVQ1RfUkFOR0VfQ0hFQ0tJTkcgYW5kIF9QWV9TVFJVQ1RfT1ZFUkZMT1dfTUFTS0lORyBjb25zdGFudHMKLSAgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc3RydWN0IG1vZHVsZS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAzLjEgYWxwaGEgMQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAwOS0wMy0wNyoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gVGhlIGlvIG1vZHVsZSBoYXMgYmVlbiByZWltcGxlbWVudGVkIGluIEMgZm9yIHNwZWVkLgotCi0tIEdpdmUgZGljdCB2aWV3cyBhbiBpbmZvcm1hdGl2ZSBfX3JlcHJfXy4KLQotLSBJc3N1ZSAjNTI0NzogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gdW5rbm93biBmb3JtYXQgY29kZXMgYXJlCi0gIHVzZWQgd2hlbiB1c2luZyBzdHIuZm9ybWF0KCkgd2l0aCBzdHIsIGludCwgYW5kIGZsb2F0IGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjNTI0OTogdGltZS5zdHJmdGltZSByZXR1cm5lZCBtYWxmb3JtZWQgc3RyaW5nIHdoZW4gZm9ybWF0IHN0cmluZwotICBjb250YWluZWQgbm9uIGFzY2lpIGNoYXJhY3RlciBvbiB3aW5kb3dzLgotCi0tIElzc3VlICM0NjI2OiBjb21waWxlKCksIGV4ZWMoKSwgYW5kIGV2YWwoKSBpZ25vcmUgdGhlIGNvZGluZyBjb29raWUgaWYgdGhlCi0gIHNvdXJjZSBoYXMgYWxyZWFkeSBiZWVuIGRlY29kZWQgaW50byBzdHIuCi0KLS0gSXNzdWUgIzUxODY6IFJlZHVjZSBoYXNoIGNvbGxpc2lvbnMgZm9yIG9iamVjdHMgd2l0aCBubyBfX2hhc2hfXyBtZXRob2QgYnkKLSAgcm90YXRpbmcgdGhlIG9iamVjdCBwb2ludGVyIGJ5IDQgYml0cyB0byB0aGUgcmlnaHQuCi0KLS0gSXNzdWUgIzQ1NzU6IEZpeCBQeV9JU19JTkZJTklUWSBtYWNybyB0byB3b3JrIGNvcnJlY3RseSBvbiB4ODcgRlBVczoKLSAgaXQgbm93IGZvcmNlcyBpdHMgYXJndW1lbnQgdG8gZG91YmxlIGJlZm9yZSB0ZXN0aW5nIGZvciBpbmZpbml0eS4KLQotLSBJc3N1ZSAjNTEzNzogTWFrZSBsZW4oKSBjb3JyZWN0bHkgcmFpc2UgYSBUeXBlRXJyb3Igd2hlbiBhIF9fbGVuX18gbWV0aG9kCi0gIHJldHVybnMgYSBub24tbnVtYmVyIHR5cGUuCi0KLS0gSXNzdWUgIzUxODI6IFJlbW92ZWQgbWVtb3J5dmlldy5fX3N0cl9fLgotCi0tIElzc3VlICMxNzE3OiBSZW1vdmVkIGJ1aWx0aW4gY21wKCkgZnVuY3Rpb24sIGRyb3BwZWQgdHBfY29tcGFyZQotICBzbG90LCB0aGUgQyBBUEkgZnVuY3Rpb25zIFB5T2JqZWN0X0NvbXBhcmUgYW5kIFB5VW5pY29kZV9Db21wYXJlIGFuZAotICB0aGUgdHlwZSBkZWZpbml0aW9uIGNtcGZ1bmMuICBUaGUgdHBfY29tcGFyZSBzbG90IGhhcyBiZWVuIHJlbmFtZWQKLSAgdG8gdHBfcmVzZXJ2ZWQsIGFuZCBpcyByZXNlcnZlZCBmb3IgZnV0dXJlIHVzYWdlLgotCi0tIElzc3VlICMxMjQyNjU3OiB0aGUgX19sZW5fXygpIGFuZCBfX2xlbmd0aF9oaW50X18oKSBjYWxscyBpbiBzZXZlcmFsIHRvb2xzCi0gIHdlcmUgc3VwcHJlc3NpbmcgYWxsIGV4Y2VwdGlvbnMuICBUaGVzZSBpbmNsdWRlIGxpc3QoKSBhbmQgYnl0ZWFycmF5KCkuCi0KLS0gSXNzdWUgIzQ3MDc6IHJvdW5kKHgsIG4pIG5vdyByZXR1cm5zIGFuIGludGVnZXIgaWYgeCBpcyBhbiBpbnRlZ2VyLgotICBQcmV2aW91c2x5IGl0IHJldHVybmVkIGEgZmxvYXQuCi0KLS0gSXNzdWUgIzQ3NTM6IEJ5IGVuYWJsaW5nIGEgY29uZmlndXJlIG9wdGlvbiBuYW1lZCAnLS13aXRoLWNvbXB1dGVkLWdvdG9zJwotICBvbiBjb21waWxlcnMgdGhhdCBzdXBwb3J0IGl0IChub3RhYmx5OiBnY2MsIFN1blBybywgaWNjKSwgdGhlIGJ5dGVjb2RlCi0gIGV2YWx1YXRpb24gbG9vcCBpcyBjb21waWxlZCB3aXRoIGEgbmV3IGRpc3BhdGNoIG1lY2hhbmlzbSB3aGljaCBnaXZlcwotICBzcGVlZHVwcyBvZiB1cCB0byAyMCUsIGRlcGVuZGluZyBvbiB0aGUgc3lzdGVtLCBvbiB2YXJpb3VzIGJlbmNobWFya3MuCi0KLS0gSXNzdWUgIzQ4NzQ6IE1vc3QgYnVpbHRpbiBkZWNvZGVycyBub3cgcmVqZWN0IHVuaWNvZGUgaW5wdXQuCi0KLS0gSXNzdWUgIzQ4NDI6IERvbid0IGFsbG93IHRyYWlsaW5nICdMJyB3aGVuIGNvbnN0cnVjdGluZyBhbiBpbnRlZ2VyCi0gIGZyb20gYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzQ5OTE6IG9zLmZkb3BlbiBub3cgcmFpc2VzIGFuIE9TRXJyb3IgZm9yIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KLQotLSBJc3N1ZSAjNDgzODogV2hlbiBhIG1vZHVsZSBpcyBkZWFsbG9jYXRlZCwgZnJlZSB0aGUgbWVtb3J5IGJhY2tpbmcgdGhlCi0gIG9wdGlvbmFsIG1vZHVsZSBzdGF0ZSBkYXRhLgotCi0tIElzc3VlICM0OTEwOiBSZW5hbWUgbmJfbG9uZyBzbG90IHRvIG5iX3Jlc2VydmVkLCBhbmQgY2hhbmdlIGl0cwotICB0eXBlIHRvIGBgKHZvaWQgKilgYC4KLQotLSBJc3N1ZSAjNDkzNTogVGhlIG92ZXJmbG93IGNoZWNraW5nIGNvZGUgaW4gdGhlIGV4cGFuZHRhYnMoKSBtZXRob2QgY29tbW9uCi0gIHRvIHN0ciwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjb3VsZCBiZSBvcHRpbWl6ZWQgYXdheSBieSB0aGUgY29tcGlsZXIsIGxldHRpbmcKLSAgdGhlIGludGVycHJldGVyIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMzcyMDogRml4IGEgY3Jhc2ggd2hlbiBhbiBpdGVyYXRvciBtb2RpZmllcyBpdHMgY2xhc3MgYW5kIHJlbW92ZXMgaXRzCi0gIF9fbmV4dF9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjNDkxMDogQnVpbHRpbiBpbnQoKSBmdW5jdGlvbiBhbmQgUHlOdW1iZXJfTG9uZy9QeU51bWJlcl9JbnQgQVBJCi0gIGZ1bmN0aW9uIG5vIGxvbmdlciBhdHRlbXB0IHRvIGNhbGwgdGhlIF9fbG9uZ19fIHNsb3QgdG8gY29udmVydCBhbiBvYmplY3QKLSAgdG8gYW4gaW50ZWdlci4gIE9ubHkgdGhlIF9faW50X18gYW5kIF9fdHJ1bmNfXyBzbG90cyBhcmUgZXhhbWluZWQuCi0KLS0gSXNzdWUgIzQ4OTM6IFVzZSBOVCB0aHJlYWRpbmcgb24gQ0UuCi0KLS0gSXNzdWUgIzQ5MTU6IFBvcnQgc3lzbW9kdWxlIHRvIFdpbmRvd3MgQ0UuCi0KLS0gSXNzdWUgIzQ4Njg6IHV0Zi04LCB1dGYtMTYgYW5kIGxhdGluMSBkZWNvZGluZyBhcmUgbm93IDJ4IHRvIDR4IGZhc3Rlci4gVGhlCi0gIGNvbW1vbiBjYXNlcyBhcmUgb3B0aW1pemVkIHRoYW5rcyB0byBhIGRlZGljYXRlZCBmYXN0IHBhdGggYW5kIGEgbW9kZXJhdGUKLSAgYW1vdW50IG9mIGxvb3AgdW5yb2xsaW5nLgotCi0tIElzc3VlICM0MDc0OiBDaGFuZ2UgdGhlIGNyaXRlcmlhIGZvciBkb2luZyBhIGZ1bGwgZ2FyYmFnZSBjb2xsZWN0aW9uIChpLmUuCi0gIGNvbGxlY3RpbmcgdGhlIG9sZGVzdCBnZW5lcmF0aW9uKSBzbyB0aGF0IGFsbG9jYXRpbmcgbG90cyBvZiBvYmplY3RzIHdpdGhvdXQKLSAgZGVzdHJveWluZyB0aGVtIGRvZXMgbm90IHNob3cgcXVhZHJhdGljIHBlcmZvcm1hbmNlLiBCYXNlZCBvbiBhIHByb3Bvc2FsIGJ5Ci0gIE1hcnRpbiB2b24gTMO2d2lzIGF0Ci0gIGh0dHA6Ly9tYWlsLnB5dGhvbi5vcmcvcGlwZXJtYWlsL3B5dGhvbi1kZXYvMjAwOC1KdW5lLzA4MDU3OS5odG1sLgotCi0tIElzc3VlICM0NjA0OiBTb21lIG9iamVjdHMgb2YgdGhlIEkvTyBsaWJyYXJ5IGNvdWxkIHN0aWxsIGJlIHVzZWQgYWZ0ZXIKLSAgaGF2aW5nIGJlZW4gY2xvc2VkIChmb3IgaW5zdGFuY2UsIGEgcmVhZCgpIGNhbGwgY291bGQgcmV0dXJuIHNvbWUKLSAgcHJldmlvdXNseSBidWZmZXJlZCBkYXRhKS4gUGF0Y2ggYnkgRG1pdHJ5IFZhc2lsaWV2LgotCi0tIElzc3VlICM0NzA1OiBGaXggdGhlIC11ICgidW5idWZmZXJlZCBiaW5hcnkgc3Rkb3V0IGFuZCBzdGRlcnIiKSBjb21tYW5kLWxpbmUKLSAgZmxhZyB0byB3b3JrIHByb3Blcmx5LiBGdXJ0aGVybW9yZSwgd2hlbiBzcGVjaWZ5aW5nIC11LCB0aGUgdGV4dCBzdGRvdXQKLSAgYW5kIHN0ZGVyciBzdHJlYW1zIGhhdmUgbGluZS1ieS1saW5lIGJ1ZmZlcmluZyBlbmFibGVkICh0aGUgZGVmYXVsdCBiZWluZwotICB0byBidWZmZXIgYXJiaXRyYXJ5IGNodW5rcyBvZiBkYXRhKS4KLQotLSBUaGUgaW50ZXJuYWwgdGFibGUsIF9QeUxvbmdfRGlnaXRWYWx1ZSwgaXMgbm93IGFuIGFycmF5IG9mIHVuc2lnbmVkIGNoYXJzCi0gIGluc3RlYWQgb2YgaW50cyAocmVkdWNpbmcgaXRzIHNpemUgZnJvbSA0IHRvIDggdGltZXMgdGhlcmVieSByZWR1Y2luZwotICBQeXRob24ncyBvdmVyYWxsIG1lbW9yeSkuCi0KLS0gSXNzdWUgIzExODAxOTM6IFdoZW4gaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSAucHljIChvciAucHlvKSBmaWxlIHdpdGgKLSAgYW4gZXhpc3RpbmcgLnB5IGNvdW50ZXJwYXJ0LCBvdmVycmlkZSB0aGUgY29fZmlsZW5hbWUgYXR0cmlidXRlcyBvZiBhbGwKLSAgY29kZSBvYmplY3RzIGlmIHRoZSBvcmlnaW5hbCBmaWxlbmFtZSBpcyBvYnNvbGV0ZSAod2hpY2ggY2FuIGhhcHBlbiBpZiB0aGUKLSAgZmlsZSBoYXMgYmVlbiByZW5hbWVkLCBtb3ZlZCwgb3IgaWYgaXQgaXMgYWNjZXNzZWQgdGhyb3VnaCBkaWZmZXJlbnQgcGF0aHMpLgotICBQYXRjaCBieSBaaWdhIFNlaWxuYWNodCBhbmQgSmVhbi1QYXVsIENhbGRlcm9uZS4KLQotLSBJc3N1ZSAjNDU4MDogRml4IHNsaWNpbmcgb2YgbWVtb3J5dmlld3Mgd2hlbiB0aGUgaXRlbSBzaXplIGlzIGdyZWF0ZXIgdGhhbgotICBvbmUgYnl0ZS4gQWxzbyBmaXhlcyB0aGUgbWVhbmluZyBvZiBsZW4oKSBzbyB0aGF0IGl0IHJldHVybnMgdGhlIG51bWJlciBvZgotICBpdGVtcywgcmF0aGVyIHRoYW4gdGhlIHNpemUgaW4gYnl0ZXMuCi0KLS0gSXNzdWUgIzQwNzU6IFVzZSBPdXRwdXREZWJ1Z1N0cmluZ1cgaW4gUHlfRmF0YWxFcnJvci4KLQotLSBJc3N1ZSAjNDc0NzogV2hlbiB0aGUgdGVybWluYWwgZG9lcyBub3QgdXNlIHV0Zi04LCBleGVjdXRpbmcgYSBzY3JpcHQgd2l0aAotICBub24tYXNjaWkgY2hhcmFjdGVycyBpbiBpdHMgbmFtZSBjb3VsZCBmYWlsIHdpdGggYSAiU3ludGF4RXJyb3I6IE5vbmUiIGVycm9yLgotCi0tIElzc3VlICM0Nzk3OiBJT0Vycm9yLmZpbGVuYW1lIHdhcyBub3Qgc2V0IHdoZW4gYGBfZmlsZWlvLkZpbGVJT2BgIGZhaWxlZAotICB0byBvcGVuIGZpbGUgd2l0aCBhIGJ5dGVzIGZpbGVuYW1lIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzM2ODA6IFJlZmVyZW5jZSBjeWNsZXMgY3JlYXRlZCB0aHJvdWdoIGEgZGljdCwgc2V0IG9yIGRlcXVlIGl0ZXJhdG9yCi0gIGRpZCBub3QgZ2V0IGNvbGxlY3RlZC4KLQotLSBJc3N1ZSAjNDcwMTogUHlPYmplY3RfSGFzaCBub3cgaW1wbGljaXRseSBjYWxscyBQeVR5cGVfUmVhZHkgb24gdHlwZXMKLSAgd2hlcmUgdGhlIHRwX2hhc2ggYW5kIHRwX2RpY3Qgc2xvdHMgYXJlIGJvdGggTlVMTC4KLQotLSBJc3N1ZSAjNDc1OTogTm9uZSBpcyBub3cgYWxsb3dlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgb2YKLSAgYnl0ZWFycmF5LnRyYW5zbGF0ZSgpLiAgSXQgd2FzIGFsd2F5cyBhbGxvd2VkIGZvciBieXRlcy50cmFuc2xhdGUoKS4KLQotLSBBZGRlZCB0ZXN0IGNhc2UgdG8gZW5zdXJlIGF0dGVtcHRzIHRvIHJlYWQgZnJvbSBhIGZpbGUgb3BlbmVkIGZvciB3cml0aW5nCi0gIGZhaWwuCi0KLS0gSXNzdWUgIzMxMDY6IFNwZWVkdXAgc29tZSBjb21wYXJpc29ucyAoc3RyL3N0ciBhbmQgaW50L2ludCkuCi0KLS0gSXNzdWUgIzIxODM6IFNpbXBsaWZ5IGFuZCBvcHRpbWl6ZSBieXRlY29kZSBmb3IgbGlzdCwgZGljdCBhbmQgc2V0Ci0gIGNvbXByZWhlbnNpb25zLiBPcmlnaW5hbCBwYXRjaCBmb3IgbGlzdCBjb21wcmVoZW5zaW9ucyBieSBOZWFsIE5vcndpdHouCi0KLS0gSXNzdWUgIzI0Njc6IGdjLkRFQlVHX1NUQVRTIHJlcG9ydGVkIGludmFsaWQgZWxhcHNlZCB0aW1lcy4gQWxzbywgYWx3YXlzCi0gIHByaW50IGVsYXBzZWQgdGltZXMsIG5vdCBvbmx5IHdoZW4gc29tZSBvYmplY3RzIGFyZSB1bmNvbGxlY3RhYmxlIC8KLSAgdW5yZWFjaGFibGUuIE9yaWdpbmFsIHBhdGNoIGJ5IE5laWwgU2NoZW1lbmF1ZXIuCi0KLS0gSXNzdWUgIzM0Mzk6IEFkZCBhIGJpdF9sZW5ndGggbWV0aG9kIHRvIGludC4KLQotLSBJc3N1ZSAjMjE3MzogV2hlbiBnZXR0aW5nIGRldmljZSBlbmNvZGluZywgY2hlY2sgdGhhdCByZXR1cm4gdmFsdWUgb2YKLSAgbmxfbGFuZ2luZm8gaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcuICBUaGlzIHdhcyBjYXVzaW5nIHNpbGVudCBidWlsZAotICBmYWlsdXJlcyBvbiBPUyBYLgotCi0tIElzc3VlICM0NTk3OiBGaXhlZCBzZXZlcmFsIG9wY29kZXMgdGhhdCB3ZXJlbid0IGFsd2F5cyBwcm9wYWdhdGluZwotICBleGNlcHRpb25zLgotCi0tIElzc3VlICM0NTg5OiBGaXhlZCBleGNlcHRpb24gaGFuZGxpbmcgd2hlbiB0aGUgX19leGl0X18gZnVuY3Rpb24gb2YgYQotICBjb250ZXh0IG1hbmFnZXIgcmV0dXJucyBhIHZhbHVlIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIGJvb2wuCi0KLS0gSXNzdWUgIzQ0NDU6IFJlcGxhY2UgInNpemVvZihQeUJ5dGVzT2JqZWN0KSIgd2l0aAotICAib2Zmc2V0b2YoUHlCeXRlc09iamVjdCwgb2Jfc3ZhbCkgKyAxIiB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvcgotICBieXRlcyBpbnN0YW5jZXMuICBPbiBhIHR5cGljYWwgbWFjaGluZSB0aGlzIHNhdmVzIDMgYnl0ZXMgb2YgbWVtb3J5Ci0gIChvbiBhdmVyYWdlKSBwZXIgYWxsb2NhdGlvbiBvZiBhIGJ5dGVzIGluc3RhbmNlLgotCi0tIElzc3VlICM0NTMzOiBGaWxlIHJlYWQgb3BlcmF0aW9uIHdhcyBkcmVhZGZ1bGx5IHNsb3cgZHVlIHRvIGEgc2xvd2x5Ci0gIGdyb3dpbmcgcmVhZCBidWZmZXIuIEZpeGVkIGJ5IHVzaW5nIHRoZSBzYW1lIGdyb3d0aCByYXRlIGFsZ29yaXRobSBhcwotICBQeXRob24gMi54LgotCi0tIElzc3VlICM0NTA5OiBWYXJpb3VzIGlzc3VlcyBzdXJyb3VuZGluZyByZXNpemUgb2YgYnl0ZWFycmF5IG9iamVjdHMgdG8KLSAgd2hpY2ggdGhlcmUgYXJlIGJ1ZmZlciBleHBvcnRzIChlLmcuIG1lbW9yeXZpZXcgaW5zdGFuY2VzKS4KLQotLSBJc3N1ZSAjNDIzMzogQ2hhbmdlZCBzZW1hbnRpYyBvZiBgYF9maWxlaW8uRmlsZUlPYGAncyBgYGNsb3NlKClgYAotICBtZXRob2Qgb24gZmlsZSBvYmplY3RzIHdpdGggY2xvc2VmZD1GYWxzZS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBzdGlsbAotICBrZXB0IG9wZW4gYnV0IHRoZSBmaWxlIG9iamVjdCBiZWhhdmVzIGxpa2UgYSBjbG9zZWQgZmlsZS4gVGhlIGBgRmlsZUlPYGAKLSAgb2JqZWN0IGFsc28gZ290IGEgbmV3IHJlYWRvbmx5IGF0dHJpYnV0ZSBgYGNsb3NlZmRgYC4KLQotLSBJc3N1ZSAjNDU2OTogSW50ZXJwcmV0ZXIgY3Jhc2ggd2hlbiBtdXRhdGluZyBhIG1lbW9yeXZpZXcgd2l0aCBhbiBpdGVtIHNpemUKLSAgbGFyZ2VyIHRoYW4gMS4KLQotLSBJc3N1ZSAjNDc0ODogTGFtYmRhIGdlbmVyYXRvcnMgbm8gbG9uZ2VyIHJldHVybiBhIHZhbHVlLgotCi0tIFRoZSByZS5zdWIoKSwgcmUuc3VibigpIGFuZCByZS5zcGxpdCgpIGZ1bmN0aW9ucyBub3cgYWNjZXB0IGEgZmxhZ3MgcGFyYW1ldGVyLgotCi0tIElzc3VlICM1MTA4OiBIYW5kbGUgJXMgbGlrZSAlUywgJVIgYW5kICVBIGluIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpOiBDYWxsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgb25jZSwgcmVtZW1iZXIgdGhlIHJlc3VsdCBhbmQgb3V0cHV0IGl0IGluIGEgc2Vjb25kCi0gIHN0ZXAuIFRoaXMgYXZvaWRzIHByb2JsZW1zIHdpdGggY291bnRpbmcgVVRGLTggYnl0ZXMgdGhhdCBpZ25vcmVzIHRoZSBlZmZlY3QKLSAgb2YgdXNpbmcgdGhlIHJlcGxhY2UgZXJyb3IgaGFuZGxlciBpbiBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzcwNzE6IGJ5dGUtY29tcGlsYXRpb24gaW4gRGlzdHV0aWxzIGlzIG5vdyBkb25lIHdpdGggcmVzcGVjdCB0bwotICBzeXMuZG9udF93cml0ZV9ieXRlY29kZS4KLQotLSBJc3N1ZSAjNzA2NjogYXJjaGl2ZV91dGlsLm1ha2VfYXJjaGl2ZSBub3cgcmVzdG9yZXMgdGhlIGN3ZCBpZiBhbiBlcnJvciBpcwotICByYWlzZWQuIEluaXRpYWwgcGF0Y2ggYnkgRXppbyBNZWxvdHRpLgotCi0tIElzc3VlICM2NTE2OiBBZGRlZCBvd25lci9ncm91cCBzdXBwb3J0IHdoZW4gY3JlYXRpbmcgdGFyIGFyY2hpdmVzIGluCi0gIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNjk1NDogRml4ZWQgY3Jhc2ggd2hlbiB1c2luZyBESVNUVVRJTFNfREVCVUcgZmxhZyBpbiBEaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzYxNjM6IEZpeGVkIEhQLVVYIHJ1bnRpbWUgbGlicmFyeSBkaXIgb3B0aW9ucyBpbgotICBkaXN0dXRpbHMudW5peGNvbXBpbGVyLiBJbml0aWFsIHBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hciBhbmQKLSAgTWljaGFlbCBIYXViZW53YWxsbmVyLgotCi0tIElzc3VlICM2NjkzOiBOZXcgZnVuY3Rpb25zIGluIHNpdGUucHkgdG8gZ2V0IHVzZXIvZ2xvYmFsIHNpdGUgcGFja2FnZXMgcGF0aHMuCi0KLS0gSXNzdWUgIzY1MTE6IFppcEZpbGUgbm93IHJhaXNlcyBCYWRaaXBmaWxlIChpbnN0ZWFkIG9mIGFuIElPRXJyb3IpIHdoZW4KLSAgb3BlbmluZyBhbiBlbXB0eSBvciB2ZXJ5IHNtYWxsIGZpbGUuCi0KLS0gSXNzdWUgIzY1NDU6IFJlbW92ZWQgYXNzZXJ0IHN0YXRlbWVudHMgaW4gZGlzdHV0aWxzLkV4dGVuc2lvbiwgc28gdGhlCi0gIGJlaGF2aW9yIGlzIHNpbWlsYXIgd2hlbiB1c2VkIHdpdGggLU8uCi0KLS0gdW5pdHRlc3QgaGFzIGJlZW4gc3BsaXQgdXAgaW50byBhIHBhY2thZ2UuICBBbGwgb2xkIG5hbWVzIHNob3VsZCBzdGlsbCB3b3JrLgotCi0tIElzc3VlICM2NDY2OiBub3cgZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlciBhbmQgZGlzdHV0aWxzLmVteGNjb21waWxlcgotICB1c2VzIHRoZSBzYW1lIHJlZmFjdG9yZWQgZnVuY3Rpb24gdG8gZ2V0IGdjYy9sZC9kbGx3cmFwIHZlcnNpb25zIG51bWJlcnMuCi0gIEl0J3MgYGRpc3R1dGlscy51dGlsLmdldF9jb21waWxlcl92ZXJzaW9uc2AuIEFkZGVkIGRlcHJlY2F0aW9uIHdhcm5pbmdzCi0gIGZvciB0aGUgb2Jzb2xldGUgZ2V0X3ZlcnNpb25zKCkgZnVuY3Rpb25zLgotCi0tIElzc3VlICM2NDMzOiBmaXhlZCBpc3N1ZXMgd2l0aCBtdWx0aXByb2Nlc3NpbmcucG9vbC5tYXAgaGFuZ2luZyBvbiBlbXB0eSBsaXN0Ci0KLS0gSXNzdWUgIzYzMTQ6IGxvZ2dpbmc6IEV4dHJhIGNoZWNrcyBvbiB0aGUgImxldmVsIiBhcmd1bWVudCBpbiBtb3JlIHBsYWNlcy4KLQotLSBJc3N1ZSAjMjYyMjogRml4ZWQgYW4gSW1wb3J0RXJyb3Igd2hlbiBpbXBvcnRpbmcgZW1haWwubWVzc2FnZSBmcm9tIGEKLSAgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiBidWlsdCB3aXRoIHB5MmV4ZSBvciBweTJhcHAuCi0KLS0gSXNzdWUgIzY0NTU6IEZpeGVkIHRlc3RfYnVpbGRfZXh0IHVuZGVyIHdpbjMyLgotCi0tIElzc3VlICM2Mzc3OiBFbmFibGVkIHRoZSBjb21waWxlciBvcHRpb24sIGFuZCBkZXByZWNhdGUgaXRzIHVzYWdlIGFzIGFuCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjNjQxMzogRml4ZWQgdGhlIGxvZyBsZXZlbCBpbiBkaXN0dXRpbHMuZGlzdCBmb3IgYW5ub3VuY2UuCi0KLS0gSXNzdWUgIzY0MDM6IEZpeGVkIHBhY2thZ2UgcGF0aCB1c2FnZSBpbiBidWlsZF9leHQuCi0KLS0gSXNzdWVzICM1MTU1LCA1MzEzLCA1MzMxOiBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fYm9vdHN0cmFwIHdhcwotICB1bmNvbmRpdGlvbmFsbHkgY2FsbGluZyAib3MuY2xvc2Uoc3lzLnN0ZGluLmZpbGVubygpKSIgcmVzdWx0aW5nIGluIGZpbGUKLSAgZGVzY3JpcHRvciBlcnJvcnMKLQotLSBJc3N1ZSAjNjM2NTogRGlzdHV0aWxzIGJ1aWxkX2V4dCBpbnBsYWNlIG1vZGUgd2FzIGNvcHlpbmcgdGhlIGNvbXBpbGVkCi0gIGV4dGVuc2lvbiBpbiBhIHN1YmRpcmVjdG9yeSBpZiB0aGUgZXh0ZW5zaW9uIG5hbWUgaGFkIGRvdHMuCi0KLS0gSXNzdWUgIzYxNjQ6IEFkZGVkIGFuIEFJWCBzcGVjaWZpYyBsaW5rZXIgYXJndW1lbnQgaW4gRGlzdHV0aWxzCi0gIHVuaXhjb21waWxlci4gT3JpZ2luYWwgcGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyLgotCi0tIElzc3VlICM2Mjg2OiBOb3cgRGlzdHV0aWxzIHVwbG9hZCBjb21tYW5kIGlzIGJhc2VkIG9uIHVybGxpYjIgaW5zdGVhZCBvZgotICBodHRwbGliLCBhbGxvd2luZyB0aGUgdXNhZ2Ugb2YgaHR0cF9wcm94eS4KLQotLSBJc3N1ZSAjNjI4NzogQWRkZWQgdGhlIGxpY2Vuc2UgZmllbGQgaW4gRGlzdHV0aWxzIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzYyNjM6IEZpeGVkIHN5bnRheCBlcnJvciBpbiBkaXN0dXRpbHMuY3lnd2luY29tcGlsZXIuCi0KLS0gSXNzdWUgIzUyMDE6IGRpc3R1dGlscy5zeXNjb25maWcucGFyc2VfbWFrZWZpbGUoKSBub3cgdW5kZXJzdGFuZHMgYCQkYAotICBpbiBNYWtlZmlsZXMuIFRoaXMgcHJldmVudHMgY29tcGlsZSBlcnJvcnMgd2hlbiB1c2luZyBzeW50YXggbGlrZToKLSAgYExERkxBR1M9Jy1ycGF0aD1cJCRMSUI6L3NvbWUvb3RoZXIvcGF0aCdgLiBQYXRjaCBieSBGbG9yaXMgQnJ1eW5vb2doZS4KLQotLSBJc3N1ZSAjNjEzMTogdGVzdF9tb2R1bGVmaW5kZXIgbGVha2VkIHdoZW4gcnVuIGFmdGVyIHRlc3RfZGlzdHV0aWxzLgotICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjNjA0ODogTm93IERpc3R1dGlscyB1c2VzIHRoZSB0YXJmaWxlIG1vZHVsZSBpbiBhcmNoaXZlX3V0aWwuCi0KLS0gSXNzdWUgIzYwNjI6IEluIGRpc3R1dGlscywgZml4ZWQgdGhlIHBhY2thZ2Ugb3B0aW9uIG9mIGJ1aWxkX2V4dC4gRmVlZGJhY2sKLSAgYW5kIHRlc3RzIG9uIHB5d2luMzIgYnkgVGltIEdvbGRlbi4KLQotLSBJc3N1ZSAjNjA1MzogRml4ZWQgZGlzdHV0aWxzIHRlc3RzIG9uIHdpbjMyLiBwYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjNjA0NjogRml4ZWQgdGhlIGxpYnJhcnkgZXh0ZW5zaW9uIHdoZW4gZGlzdHV0aWxzIGJ1aWxkX2V4dCBpcyB1c2VkCi0gIGlucGxhY2UuIEluaXRpYWwgcGF0Y2ggYnkgUm91bWVuIFBldHJvdi4KLQotLSBJc3N1ZSAjNjA0MTogTm93IGRpc3R1dGlscyBgc2Rpc3RgIGFuZCBgcmVnaXN0ZXJgIGNvbW1hbmRzIHVzZSBgY2hlY2tgIGFzIGEKLSAgc3ViY29tbWFuZC4KLQotLSBJc3N1ZSAjNjAyMjogYSB0ZXN0IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYnkKLSAgdGVzdF9nZXRfb3V0cHV0cyBpbiBEaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzU5Nzc6IGRpc3R1dGlscyBidWlsZF9leHQuZ2V0X291dHB1dHMgd2FzIG5vdCB0YWtpbmcgaW50byBhY2NvdW50IHRoZQotICBpbnBsYWNlIG9wdGlvbi4gSW5pdGlhbCBwYXRjaCBieSBreHJvYmVydG8uCi0KLS0gSXNzdWUgIzU5ODQ6IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dC5jaGVja19leHRlbnNpb25zX2xpc3QgY2hlY2tzIHdlcmUgYnJva2VuCi0gIGZvciBvbGQtc3R5bGUgZXh0ZW5zaW9ucy4KLQotLSBJc3N1ZSAjNTk3NjogRml4ZWQgRGlzdHV0aWxzIHRlc3RfY2hlY2tfZW52aXJvbi4KLQotLSBJc3N1ZSAjNTk0MTogRGlzdHV0aWxzIGJ1aWxkX2NsaWIgY29tbWFuZCB3YXMgbm90IHdvcmtpbmcgYW55bW9yZSBiZWNhdXNlCi0gIG9mIGFuIGluY29tcGxldGUgY29zdHVtaXphdGlvbiBvZiB0aGUgYXJjaGl2ZXIgY29tbWFuZC4gQWRkZWQgQVJGTEFHUyBpbiB0aGUKLSAgTWFrZWZpbGUgYmVzaWRlcyBBUiBhbmQgbWFrZSBEaXN0dXRpbHMgdXNlIGl0LiBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZAotICBDb3VybmFwZWF1LgotCi0tIElzc3VlICMyMjQ1OiBhaWZjIG5vdyBza2lwcyBjaHVuayB0eXBlcyBpdCBkb2Vzbid0IHJlY29nbml6ZSwgcGVyIHNwZWMuCi0KLS0gSXNzdWUgIzU4NzQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X2NvbmZpZ19jbWQgaXMgbm90IGxvY2FsZS1zZW5zaXRpdmUKLSAgYW55bW9yZS4KLQotLSBJc3N1ZSAjNTgxMDogRml4ZWQgRGlzdHV0aWxzIHRlc3RfYnVpbGRfc2NyaXB0cyBzbyBpdCB1c2VzCi0gIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMuCi0KLS0gSXNzdWUgIzQ5NTE6IEZpeGVkIGZhaWx1cmUgaW4gdGVzdF9odHRwc2VydmVycy4KLQotLSBJc3N1ZSAjNTc5NTogRml4ZWQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZSBvbiBEZWJpYW4gcHBjLgotCi0tIElzc3VlICM1NjA3OiBmaXhlZCBEaXN0dXRpbHMgdGVzdF9nZXRfcGxhdGZvcm0gZm9yIE1hYyBPUyBYIGZhdCBiaW5hcmllcy4KLQotLSBJc3N1ZSAjNTc0MTogZG9uJ3QgZGlzYWxsb3cgIiUlIiAod2hpY2ggaXMgYW4gZXNjYXBlIGZvciAiJSIpIHdoZW4gc2V0dGluZwotICBhIHZhbHVlIGluIFNhZmVDb25maWdQYXJzZXIuCi0KLS0gSXNzdWUgIzU3MzI6IGFkZGVkIGEgbmV3IGNvbW1hbmQgaW4gRGlzdHV0aWxzOiBjaGVjay4KLQotLSBJc3N1ZSAjNTczMTogRGlzdHV0aWxzIGJkaXN0X3dpbmluc3Qgbm8gbG9uZ2VyIHdvcmtlZCBvbiBub24tV2luZG93cwotICBwbGF0Zm9ybXMuIEluaXRpYWwgcGF0Y2ggYnkgUGF1bCBNb29yZS4KLQotLSBJc3N1ZSAjNTA5NTogQWRkZWQgYmRpc3RfbXNpIHRvIHRoZSBsaXN0IG9mIGJkaXN0IHN1cHBvcnRlZCBmb3JtYXRzLgotICBJbml0aWFsIGZpeCBieSBTdGV2ZW4gQmV0aGFyZC4KLQotLSBJc3N1ZSAjMTQ5MTQzMTogRml4ZWQgZGlzdHV0aWxzLmZpbGVsaXN0Lmdsb2JfdG9fcmUgZm9yIGVkZ2UgY2FzZXMuCi0gIEluaXRpYWwgZml4IGJ5IFdheW5lIERhdmlzb24uCi0KLS0gSXNzdWUgIzU2OTQ6IHJlbW92ZWQgc3B1cmlvdXMgdGVzdCBvdXRwdXQgaW4gRGlzdHV0aWxzICh0ZXN0X2NsZWFuKS4KLQotLSBJc3N1ZSAjMTMyNjA3NzogZml4IHRoZSBmb3JtYXR0aW5nIG9mIFN5bnRheEVycm9ycyBieSB0aGUgdHJhY2ViYWNrIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY2NTIwNiAocGFydGlhbGx5KTogTW92ZSBpbXBvcnRzIGluIGNnaXRiIHRvIHRoZSB0b3Agb2YgdGhlIG1vZHVsZQotICBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgdGhlbSBpbiBmdW5jdGlvbnMuIEhlbHBzIHByZXZlbnQgaW1wb3J0IGRlYWRsb2NraW5nIGluCi0gIHRocmVhZHMuCi0KLS0gSXNzdWUgIzI1MjI6IGxvY2FsZS5mb3JtYXQgbm93IGNoZWNrcyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gZW5zdXJlIGl0IGhhcwotICBiZWVuIHBhc3NlZCBvbmx5IG9uZSBwYXR0ZXJuLCBhdm9pZGluZyBteXN0ZXJpb3VzIGVycm9ycyB3aGVyZSBpdCBhcHBlYXJlZAotICB0aGF0IGl0IHdhcyBmYWlsaW5nIHRvIGRvIGxvY2FsaXphdGlvbi4KLQotLSBJc3N1ZSAjNTU4MzogQWRkZWQgb3B0aW9uYWwgRXh0ZW5zaW9ucyBpbiBEaXN0dXRpbHMuIEluaXRpYWwgcGF0Y2ggYnkgR2VvcmcKLSAgQnJhbmRsLgotCi0tIElzc3VlICMxMjIyOiBsb2NhbGUuZm9ybWF0KCkgYnVnIHdoZW4gdGhlIHRob3VzYW5kcyBzZXBhcmF0b3IgaXMgYSBzcGFjZQotICBjaGFyYWN0ZXIuCi0KLS0gSXNzdWUgIzU0NzI6IEZpeGVkIGRpc3R1dGlscy50ZXN0X3V0aWwgdGVhciBkb3duLiBPcmlnaW5hbCBwYXRjaCBieQotICBUaW0gR29sZGVuLgotCi0tIGNvbGxlY3Rpb25zLmRlcXVlKCkgb2JqZWN0cyBub3cgaGF2ZSBhIHJlYWQtb25seSBhdHRyaWJ1dGUgY2FsbGVkIG1heGxlbi4KLQotLSBJc3N1ZSAjMjYzODogU2hvdyBhIHdpbmRvdyBjb25zdHJ1Y3RlZCB3aXRoIHRrU2ltcGxlRGlhbG9nLkRpYWxvZyBvbmx5IGFmdGVyCi0gIGl0IGlzIGhhcyBiZWVuIHBvcHVsYXRlZCBhbmQgcHJvcGVybHkgY29uZmlndXJlZCBpbiBvcmRlciB0byBwcmV2ZW50Ci0gIHdpbmRvdyBmbGFzaGluZy4KLQotLSBJc3N1ZSAjNDc5MjogUHJldmVudCBhIHNlZ2ZhdWx0IGluIF90a2ludGVyIGJ5IHVzaW5nIHRoZQotICBndWFyYW50ZWVkIHRvIGJlIHNhZmUgaW50ZXJwIGFyZ3VtZW50IGdpdmVuIHRvIHRoZSBQeXRob25DbWQgaW4gcGxhY2Ugb2YKLSAgdGhlIFRjbCBpbnRlcnByZXRlciB0YWtlbiBmcm9tIGEgUHl0aG9uQ21kX0NsaWVudERhdGEuCi0KLS0gSXNzdWUgIzUxOTM6IEd1YXJhbnRlZSB0aGF0IHRraW50ZXIuVGV4dC5zZWFyY2ggcmV0dXJucyBhIHN0cmluZy4KLQotLSBJc3N1ZSAjNTM5NDogcmVtb3ZlZCA+IDIuMyBzeW50YXggZnJvbSBkaXN0dXRpbHMubXN2Yzljb21waWxlci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgQWtpcmEgS2l0YWRhLgotCi0tIElzc3VlICM1MzM0OiBhcnJheS5mcm9tZmlsZSgpIGZhaWxlZCB0byBpbnNlcnQgdmFsdWVzIHdoZW4gRU9GRXJyb3Igd2FzIHJhaXNlZC4KLQotLSBJc3N1ZSAjNTM4NTogRml4ZWQgbW1hcCBjcmFzaCBhZnRlciByZXNpemUgZmFpbHVyZSBvbiB3aW5kb3dzLgotCi0tIElzc3VlICM1MTc5OiBGaXhlZCBzdWJwcm9jZXNzIGhhbmRsZSBsZWFrIG9uIGZhaWx1cmUgb24gd2luZG93cy4KLQotLSBQRVAgMzcyOiAgQWRkZWQgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKS4KLQotLSBUaGUgX2FzZGljdCgpIGZvciBtZXRob2QgZm9yIG5hbWVkdHVwbGVzIG5vdyByZXR1cm5zIGFuIE9yZGVyZWREaWN0KCkuCi0KLS0gY29uZmlncGFyc2VyIG5vdyBkZWZhdWx0cyB0byB1c2luZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWUgIzU0MDE6IEZpeGVkIGEgcGVyZm9ybWFuY2UgcHJvYmxlbSBpbiBtaW1ldHlwZXMgd2hlbiBgYGZyb20gbWltZXR5cGVzCi0gIGltcG9ydCBndWVzc19leHRlbnNpb25gYCB3YXMgdXNlZC4KLQotLSBJc3N1ZSAjMTczMzk4NjogRml4ZWQgbW1hcCBjcmFzaCBpbiBhY2Nlc3NpbmcgZWxlbWVudHMgb2Ygc2Vjb25kIG1hcCBvYmplY3QKLSAgd2l0aCBzYW1lIHRhZ25hbWUgYnV0IGxhcmdlciBzaXplIHRoYW4gZmlyc3QgbWFwLiAoV2luZG93cykKLQotLSBJc3N1ZSAjNTM4NjogbW1hcC53cml0ZV9ieXRlIGRpZG4ndCBjaGVjayBtYXAgc2l6ZSwgc28gaXQgY291bGQgY2F1c2UgYnVmZmVyCi0gIG92ZXJydW4uCi0KLS0gSXNzdWUgIzE1MzMxNjQ6IEluc3RhbGxlZCBidXQgbm90IGxpc3RlZCBgYCoucHlvYGAgd2FzIGJyZWFraW5nIERpc3R1dGlscwotICBiZGlzdF9ycG0gY29tbWFuZC4KLQotLSBJc3N1ZSAjNTM3ODogYWRkZWQgLS1xdWlldCBvcHRpb24gdG8gRGlzdHV0aWxzIGJkaXN0X3JwbSBjb21tYW5kLgotCi0tIElzc3VlICM1MDUyOiBtYWtlIERpc3R1dGlscyBjb21wYXRpYmxlIHdpdGggMi4zIGFnYWluLgotCi0tIElzc3VlICM1MzE2OiBGaXhlZCBidWlsZGJvdCBmYWlsdXJlcyBpbnRyb2R1Y2VkIGJ5IG11bHRpcGxlIGluaGVyaXRhbmNlCi0gIGluIERpc3R1dGlscyB0ZXN0cy4KLQotLSBJc3N1ZSAjNTI4NzogQWRkIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgZmluZENhbGxlcigpIGNhbGwgdG8gaGVscCBvdXQKLSAgSXJvblB5dGhvbi4KLQotLSBJc3N1ZSAjNTI4MjogRml4ZWQgbW1hcCByZXNpemUgb24gMzJiaXQgd2luZG93cyBhbmQgdW5peC4gV2hlbiBvZmZzZXQgPiAwLAotICBUaGUgZmlsZSB3YXMgcmVzaXplZCB0byB3cm9uZyBzaXplLgotCi0tIElzc3VlICM1MjkyOiBGaXhlZCBtbWFwIGNyYXNoIG9uIGl0cyBib3VuZGFyeSBhY2Nlc3MgbVtsZW4obSldLgotCi0tIElzc3VlICMyMjc5OiBkaXN0dXRpbHMuc2Rpc3QuYWRkX2RlZmF1bHRzIG5vdyBhZGQgZmlsZXMKLSAgZnJvbSB0aGUgcGFja2FnZV9kYXRhIGFuZCB0aGUgZGF0YV9maWxlcyBtZXRhZGF0YS4KLQotLSBJc3N1ZSAjNTI1NzogcmVmYWN0b3JlZCBhbGwgdGVzdHMgaW4gZGlzdHV0aWxzLCBzbyB0aGV5IHVzZQotICBzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLCB0byBhdm9pZCB3cml0aW5nIGluIHRoZSB0ZXN0cyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzQ1MjQ6IGRpc3R1dGlscyBidWlsZF9zY3JpcHQgY29tbWFuZCBmYWlsZWQgd2l0aCAtLXdpdGgtc3VmZml4PTMuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzI0NjE6IGFkZGVkIHRlc3RzIGZvciBkaXN0dXRpbHMudXRpbAotCi0tIElzc3VlICM0OTk4OiBUaGUgbWVtb3J5IHNhdmluZyBlZmZlY3Qgb2YgX19zbG90c19fIGhhZCBiZWVuIGxvc3Qgb24gRnJhY3Rpb25zCi0gIHdoaWNoIGluaGVyaXRlZCBmcm9tIG51bWJlcnMucHkgd2hpY2ggZGlkIG5vdCBoYXZlIF9fc2xvdHNfXyBkZWZpbmVkLiAgVGhlCi0gIG51bWJlcnMgaGllcmFyY2h5IG5vdyBoYXMgaXRzIG93biBfX3Nsb3RzX18gZGVjbGFyYXRpb25zLgotCi0tIElzc3VlICM0NjMxOiBGaXggdXJsb3BlbigpIHJlc3VsdCB3aGVuIGFuIEhUVFAgcmVzcG9uc2UgdXNlcyBjaHVua2VkCi0gIGVuY29kaW5nLgotCi0tIElzc3VlICM1MjAzOiBGaXhlZCBjdHlwZXMgc2VnZmF1bHRzIHdoZW4gcGFzc2luZyBhIHVuaWNvZGUgc3RyaW5nIHRvIGEKLSAgZnVuY3Rpb24gd2l0aG91dCBhcmd0eXBlcyAob25seSBvY2N1cnMgaWYgSEFWRV9VU0FCTEVfV0NIQVJfVCBpcyBmYWxzZSkuCi0KLS0gSXNzdWUgIzMzODY6IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIgcHJlZml4IGFyZ3VtZW50IHdhcyBpZ25vcmVkCi0gIHVuZGVyIE5UIGFuZCBPUzIuIFBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCi0KLS0gSXNzdWUgIzUxMjg6IE1ha2UgY29tcGlsZWFsbCBwcm9wZXJseSBpbnNwZWN0IGJ5dGVjb2RlIHRvIGRldGVybWluZSBpZiBuZWVkcwotICB0byBiZSByZWNyZWF0ZWQuIFRoaXMgYXZvaWRzIGEgdGltaW5nIGhvbGUgdGhhbmtzIHRvIHRoZSBvbGQgcmVsaWFuY2Ugb24gdGhlCi0gIGN0aW1lIG9mIHRoZSBmaWxlcyBpbnZvbHZlZC4KLQotLSBJc3N1ZSAjNTEyMjogU3luY2hyb25pemUgdGsgbG9hZCBmYWlsdXJlIGNoZWNrIHRvIHByZXZlbnQgYSBwb3RlbnRpYWwKLSAgZGVhZGxvY2suCi0KLS0gSXNzdWUgIzE4MTg6IGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSBub3cgc3VwcG9ydHMgYSBrZXl3b3JkIGFyZ3VtZW50Ci0gICdyZW5hbWUnIHdoaWNoIGxldHMgaW52YWxpZCBmaWVsZG5hbWVzIGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvCi0gIHBvc2l0aW9uYWwgbmFtZXMgaW4gdGhlIGZvcm0sIF8xLCBfMiwgLi4uCi0KLS0gSXNzdWUgIzQ4OTA6IEhhbmRsZSBlbXB0eSB0ZXh0IHNlYXJjaCBwYXR0ZXJuIGluIFRraW50ZXIuVGV4dC5zZWFyY2guCi0KLS0gSXNzdWUgIzQ1MTIgKHBhcnQgMik6IFByb21vdGUgYGBaaXBJbXBvcnRlci5fZ2V0X2ZpbGVuYW1lKClgYCB0byBiZSBhCi0gIHB1YmxpYyBkb2N1bWVudGVkIG1ldGhvZCBgYFppcEltcG9ydGVyLmdldF9maWxlbmFtZSgpYGAuCi0KLS0gSXNzdWUgIzQxOTU6IFRoZSBgYHJ1bnB5YGAgbW9kdWxlIChhbmQgdGhlIGBgLW1gYCBzd2l0Y2gpIG5vdyBzdXBwb3J0Ci0gIHRoZSBleGVjdXRpb24gb2YgcGFja2FnZXMgYnkgbG9va2luZyBmb3IgYW5kIGV4ZWN1dGluZyBhIGBgX19tYWluX19gYAotICBzdWJtb2R1bGUgd2hlbiBhIHBhY2thZ2UgbmFtZSBpcyBzdXBwbGllZC4gSW5pdGlhbCBwYXRjaCBieSBBbmRpCi0gIFZhamRhLgotCi0tIElzc3VlICMxNzMxNzA2OiBDYWxsIFRjbF9Db25kaXRpb25GaW5hbGl6ZSBmb3IgVGNsX0NvbmRpdGlvbnMgdGhhdCB3aWxsCi0gIG5vdCBiZSB1c2VkIGFnYWluICh0aGlzIHJlcXVpcmVzIFRjbC9UayA4LjMuMSksIGFsc28gZml4IGEgbWVtb3J5IGxlYWsgaW4KLSAgVGthcHBfQ2FsbCB3aGVuIGNhbGxpbmcgZnJvbSBhIHRocmVhZCBkaWZmZXJlbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZAotICB0aGUgVGNsIGludGVycHJldGVyLiBQYXRjaCBieSBSb2JlcnQgSGFuY29jay4KLQotLSBJc3N1ZSAjNDI4NTogQ2hhbmdlIHN5cy52ZXJzaW9uX2luZm8gdG8gYmUgYSBuYW1lZCB0dXBsZS4gUGF0Y2ggYnkKLSAgUm9zcyBMaWdodC4KLQotLSBJc3N1ZSAjMTUyMDg3NzogTm93IGRpc3R1dGlscy5zeXNjb25maWcgcmVhZHMgJEFSIGZyb20gdGhlCi0gIGVudmlyb25tZW50L01ha2VmaWxlLiBQYXRjaCBieSBEb3VnbGFzIEdyZWltYW4uCi0KLS0gSXNzdWUgIzEyNzY3Njg6IFRoZSB2ZXJib3NlIG9wdGlvbiB3YXMgbm90IHVzZWQgaW4gdGhlIGNvZGUgb2YKLSAgZGlzdHV0aWxzLmZpbGVfdXRpbCBhbmQgZGlzdHV0aWxzLmRpcl91dGlsLgotCi0tIElzc3VlICM1MTMyOiBGaXhlZCB0cm91YmxlIGJ1aWxkaW5nIGV4dGVuc2lvbnMgdW5kZXIgU29sYXJpcyB3aXRoCi0gIC0tZW5hYmxlZC1zaGFyZWQgYWN0aXZhdGVkLiBJbml0aWFsIHBhdGNoIGJ5IERhdmUgUGV0ZXJzb24uCi0KLS0gSXNzdWUgIzE1ODE0NzY6IEFsd2F5cyB1c2UgdGhlIFRjbCBnbG9iYWwgbmFtZXNwYWNlIHdoZW4gY2FsbGluZyBpbnRvIFRjbC4KLQotLSBUaGUgc2hlbHZlIG1vZHVsZSBub3cgZGVmYXVsdHMgdG8gcGlja2xlIHByb3RvY29sIDMuCi0KLS0gRml4IGEgYnVnIGluIHRoZSB0cmFjZSBtb2R1bGUgd2hlcmUgYSBieXRlcyBvYmplY3QgZnJvbSBjb19sbm90YWIgaGFkIGl0cwotICBpdGVtcyBiZWluZyBwYXNzZWQgdGhyb3VnaCBvcmQoKS4KLQotLSBJc3N1ZSAjMjA0Nzogc2h1dGlsLm1vdmUoKSBjb3VsZCBiZWxpZXZlIHRoYXQgaXRzIGRlc3RpbmF0aW9uIHBhdGggd2FzCi0gIGluc2lkZSBpdHMgc291cmNlIHBhdGggaWYgaXQgYmVnYW4gd2l0aCB0aGUgc2FtZSBsZXR0ZXJzIChlLmcuICJzcmMiIHZzLgotICAic3JjLm5ldyIpLgotCi0tIEFkZGVkIHRoZSB0dGsgbW9kdWxlLiBTZWUgaXNzdWUgIzI5ODM6IFR0ayBzdXBwb3J0IGZvciBUa2ludGVyLgotCi0tIFJlbW92ZWQgaXNTZXF1ZW5jZVR5cGUoKSwgaXNNYXBwaW5nVHlwZSwgYW5kIGlzTnVtYmVyVHlwZSgpIGZyb20gdGhlCi0gIG9wZXJhdG9yIG1vZHVsZTsgdXNlIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzZXMgaW5zdGVhZC4gIEFsc28gcmVtb3ZlZAotICB0aGUgcmVwZWF0KCkgZnVuY3Rpb247IHVzZSBtdWwoKSBpbnN0ZWFkLgotCi0tIElzc3VlICM1MDIxOiAgZG9jdGVzdC50ZXN0ZmlsZSgpIGRpZCBub3QgY3JlYXRlIF9fbmFtZV9fIGFuZAotICBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgcmVsaWVkIG9uIF9fbmFtZV9fIGJlaW5nIGRlZmluZWQuCi0KLS0gQmFja3BvcnQgaW1wb3J0bGliIGZyb20gUHl0aG9uIDMuMS4gT25seSB0aGUgaW1wb3J0X21vZHVsZSgpIGZ1bmN0aW9uIGhhcwotICBiZWVuIGJhY2twb3J0ZWQgdG8gaGVscCBmYWNpbGl0YXRlIHRyYW5zaXRpb25zIGZyb20gMi43IHRvIDMuMS4KLQotLSBJc3N1ZSAjMTg4NTogZGlzdHV0aWxzLiBXaGVuIHJ1bm5pbmcgc2Rpc3Qgd2l0aCAtLWZvcm1hdHM9dGFyLGd6dGFyCi0gIHRoZSB0YXIgZmlsZSB3YXMgb3ZlcnJpZGVuIGJ5IHRoZSBnenRhciBvbmUuCi0KLS0gSXNzdWUgIzQ4NjM6IGRpc3R1dGlscy5td2Vya3Njb21waWxlciBoYXMgYmVlbiByZW1vdmVkLgotCi0tIEFkZGVkIGEgbmV3IGl0ZXJ0b29scyBmdW5jdGlvbnM6ICBjb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCgpCi0gIGFuZCBjb21wcmVzcygpLgotCi0tIElzc3VlICM1MDMyOiAgYWRkZWQgYSBzdGVwIGFyZ3VtZW50IHRvIGl0ZXJ0b29scy5jb3VudCgpIGFuZAotICBhbGxvd2VkIG5vbi1pbnRlZ2VyIGFyZ3VtZW50cy4KLQotLSBGaXggYW5kIHByb3Blcmx5IGRvY3VtZW50IHRoZSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlJ3MgbG9nZ2luZwotICBzdXBwb3J0LCBleHBvc2UgdGhlIGludGVybmFsIGxldmVscyBhbmQgcHJvdmlkZSBwcm9wZXIgdXNhZ2UKLSAgZXhhbXBsZXMuCi0KLS0gSXNzdWUgIzE2NzIzMzI6IGZpeCB1bnBpY2tsaW5nIG9mIHN1Ym5vcm1hbCBmbG9hdHMsIHdoaWNoIHdhcwotICBwcm9kdWNpbmcgYSBWYWx1ZUVycm9yIG9uIHNvbWUgcGxhdGZvcm1zLgotCi0tIElzc3VlICMzODgxOiBIZWxwIFRjbCB0byBsb2FkIGV2ZW4gd2hlbiBzdGFydGVkIHRocm91Z2ggdGhlCi0gIHVucmVhZGFibGUgbG9jYWwgc3ltbGluayB0byAiUHJvZ3JhbSBGaWxlcyIgb24gVmlzdGEuCi0KLS0gSXNzdWUgIzQ3MTA6IEV4dHJhY3QgZGlyZWN0b3JpZXMgcHJvcGVybHkgaW4gdGhlIHppcGZpbGUgbW9kdWxlOwotICBhbGxvdyBhZGRpbmcgZGlyZWN0b3JpZXMgdG8gYSB6aXBmaWxlLgotCi0tIElzc3VlICMzODA3OiBfbXVsdGlwcm9jZXNzaW5nIGJ1aWxkIGZhaWxzIHdoZW4gY29uZmlndXJlIGlzIHBhc3NlZAotICAtLXdpdGhvdXQtdGhyZWFkcyBhcmd1bWVudC4gV2hlbiB0aGlzIG9jY3VycywgX211bHRpcHJvY2Vzc2luZyB3aWxsCi0gIGJlIGRpc2FibGVkLCBhbmQgbm90IGNvbXBpbGVkLgotCi0tIElzc3VlICM1MDA4OiBXaGVuIGEgZmlsZSBpcyBvcGVuZWQgaW4gYXBwZW5kIG1vZGUgd2l0aCB0aGUgbmV3IElPIGxpYnJhcnksCi0gIGRvIGFuIGV4cGxpY2l0IHNlZWsgdG8gdGhlIGVuZCBvZiBmaWxlIChzbyB0aGF0IGUuZy4gdGVsbCgpIHJldHVybnMgdGhlCi0gIGZpbGUgc2l6ZSByYXRoZXIgdGhhbiAwKS4gVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGJlaGF2aW91ciBvZiB0aGUKLSAgdHJhZGl0aW9uYWwgMi54IGZpbGUgb2JqZWN0LgotCi0tIElzc3VlICM1MDEzOiBGaXhlZCBhIGJ1ZyBpbiBGaWxlSGFuZGxlciB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBkZWxheQotICBwYXJhbWV0ZXIgd2FzIHNldC4KLQotLSBJc3N1ZSAjNDg0MjogQWx3YXlzIGFwcGVuZCBhIHRyYWlsaW5nICdMJyB3aGVuIHBpY2tsaW5nIGxvbmdzIHVzaW5nCi0gIHBpY2tsZSBwcm90b2NvbCAwLiAgV2hlbiByZWFkaW5nLCB0aGUgJ0wnIGlzIG9wdGlvbmFsLgotCi0tIEFkZCB0aGUgaW1wb3J0bGliIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzQzMDE6IFBhdGNoIHRoZSBsb2dnaW5nIG1vZHVsZSB0byBhZGQgcHJvY2Vzc05hbWUgc3VwcG9ydCwgcmVtb3ZlCi0gIF9jaGVja19sb2dnZXJfY2xhc3MgZnJvbSBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzMzMjU6IFJlbW92ZSBweXRob24yLnggdHJ5OiBleGNlcHQ6IGltcG9ydHMgZm9yIG9sZCBjUGlja2xlIGZyb20KLSAgbXVsdGlwcm9jZXNzaW5nLgotCi0tIElzc3VlICM0OTU5OiBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMgbm93IHdvcmtzIGZvciBrZXl3b3JkIG9ubHkgYXJndW1lbnRzCi0gIHdpdGhvdXQgZGVmYXVsdHMuCi0KLS0gSXNzdWUgIzMzMjE6IGBgX211bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uKClgYCBkb2Vzbid0IGNoZWNrIGhhbmRsZTsgYWRkZWQgY2hlY2tzCi0gIGZvciBVbml4IG1hY2hpbmVzIGZvciBuZWdhdGl2ZSBoYW5kbGVzIGFuZCBsYXJnZSBpbnQgaGFuZGxlcy4gV2l0aG91dCB0aGlzIGNoZWNrCi0gIGl0IGlzIHBvc3NpYmxlIHRvIHNlZ2ZhdWx0IHRoZSBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjNDQ0OTogQXNzZXJ0aW9uRXJyb3IgaW4gbXBfYmVuY2htYXJrcy5weSwgY2F1c2VkIGJ5IGFuIHVuZGVybHlpbmcgaXNzdWUKLSAgaW4gc2hhcmVkY3R5cGVzLnB5LgotCi0tIElzc3VlICMxMjI1MTA3OiBpbnNwZWN0LmlzY2xhc3MoKSByZXR1cm5lZCBUcnVlIGZvciBpbnN0YW5jZXMgd2l0aCBhIGN1c3RvbQotICBfX2dldGF0dHJfXy4KLQotLSBJc3N1ZSAjMzgyNiBhbmQgIzQ3OTE6IFRoZSBzb2NrZXQgbW9kdWxlIG5vdyBjbG9zZXMgdGhlIHVuZGVybHlpbmcgc29ja2V0Ci0gIGFwcHJvcHJpYXRlbHkgd2hlbiBpdCBpcyBiZWluZyB1c2VkIHZpYSBzb2NrZXQubWFrZWZpbGUoKSBvYmplY3RzCi0gIHJhdGhlciB0aGFuIGRlbGF5aW5nIHRoZSBjbG9zZSBieSB3YWl0aW5nIGZvciBnYXJiYWdlIGNvbGxlY3Rpb24gdG8gZG8gaXQuCi0KLS0gSXNzdWUgIzE2OTYxOTk6ICBBZGQgY29sbGVjdGlvbnMuQ291bnRlcigpIGZvciByYXBpZCBhbmQgY29udmVuaWVudAotICBjb3VudGluZy4KLQotLSBJc3N1ZSAjMzg2MDogR3ppcEZpbGUgYW5kIEJaMkZpbGUgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbC4KLQotLSBJc3N1ZSAjNDg2NzogRml4ZWQgYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiBwYXNzaW5nIGEgc3RyaW5nIHRvIGEKLSAgZnVuY3Rpb24gd2l0aG91dCBkZWZpbmluZyBhcmd0eXBlcy4KLQotLSBJc3N1ZSAjNDI3MjogQWRkIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIHRoZSBHemlwRmlsZSBjb25zdHJ1Y3RvciB0byBvdmVycmlkZQotICB0aGUgdGltZXN0YW1wIGluIHRoZSBnemlwIHN0cmVhbS4gVGhlIGRlZmF1bHQgdmFsdWUgcmVtYWlucyB0aGUgY3VycmVudCB0aW1lLgotICBUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgYnkgZS5nLiBndW56aXAgd2hlbiBkZWNvbXByZXNzaW5nLiBQYXRjaCBieQotICBKYWNxdWVzIEZyZWNoZXQuCi0KLS0gUmVzdG9yZSBQeXRob24gMi4zIGNvbXBhdGliaWxpdHkgZm9yIGRlY2ltYWwucHkuCi0KLS0gSXNzdWUgIzM2Mzg6IFJlbW92ZSBmdW5jdGlvbnMgZnJvbSBfdGtpbnRlciBtb2R1bGUgbGV2ZWwgdGhhdCBkZXBlbmQgb24KLSAgVGthcHBPYmplY3QgdG8gd29yayB3aXRoIG11bHRpcGxlIHRocmVhZHMuCi0KLS0gSXNzdWUgIzQ3MTg6IEFkYXB0IHRoZSB3c2dpcmVmIHBhY2thZ2Ugc28gdGhhdCBpdCBhY3R1YWxseSB3b3JrcyB3aXRoCi0gIFB5dGhvbiAzLngsIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgYG9mZmljaWFsIGFtZW5kbWVudHMgb2YgdGhlIHNwZWMKLSAgPGh0dHA6Ly93d3cud3NnaS5vcmcvd3NnaS9BbWVuZG1lbnRzXzEuMD5gXy4KLQotLSBJc3N1ZSAjNDc5NjogQWRkZWQgRGVjaW1hbC5mcm9tX2Zsb2F0KCkgYW5kIENvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgpCi0gIHRvIHRoZSBkZWNpbWFsIG1vZHVsZS4KLQotLSBGcmFjdGlvbnMuZnJvbV9mbG9hdCgpIG5vIGxvbmdlciBsb3NlcyBwcmVjaXNpb24gZm9yIGludGVnZXJzIHRvbyBiaWcgdG8KLSAgY2FzdCBhcyBmbG9hdHMuCi0KLS0gSXNzdWUgIzQ4MTI6IGFkZCBtaXNzaW5nIHVuZGVyc2NvcmUgcHJlZml4IHRvIHNvbWUgaW50ZXJuYWwtdXNlLW9ubHkKLSAgY29uc3RhbnRzIGluIHRoZSBkZWNpbWFsIG1vZHVsZS4gIChEZWNfMCBiZWNvbWVzIF9EZWNfMCwgZXRjLikKLQotLSBJc3N1ZSAjNDc5MDogVGhlIG5zbWFsbGVzdCgpIGFuZCBubGFyZ2VzdCgpIGZ1bmN0aW9ucyBpbiB0aGUgaGVhcHEgbW9kdWxlCi0gIGRpZCB1bm5lY2Vzc2FyeSB3b3JrIGluIHRoZSBjb21tb24gY2FzZSB3aGVyZSBubyBrZXkgZnVuY3Rpb24gd2FzIHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjNDc5NTogaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKCkgcmV0dXJucyBGYWxzZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbgotICB0aGUgZnVuY3Rpb24gaXMgbm90IGEgZ2VuZXJhdG9yLgotCi0tIElzc3VlICM0NzAyOiBUaHJvd2luZyBhIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IgaW5zdGVhZCBvZiBJT0Vycm9yIGluIGNhc2UKLSAgbm8gTVNWQyBjb21waWxlciBpcyBmb3VuZCB1bmRlciBXaW5kb3dzLiBPcmlnaW5hbCBwYXRjaCBieSBQaGlsaXAgSmVudmV5LgotCi0tIElzc3VlICM0NjQ2OiBkaXN0dXRpbHMgd2FzIGNob2tpbmcgb24gZW1wdHkgb3B0aW9ucyBhcmcgaW4gdGhlIHNldHVwCi0gIGZ1bmN0aW9uLiBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMgSGVsbGVyLgotCi0tIElzc3VlICMzNzY3OiBDb252ZXJ0IFRrIG9iamVjdCB0byBzdHJpbmcgaW4gdGtDb2xvckNob29zZXIuCi0KLS0gSXNzdWUgIzMyNDg6IEFsbG93IHBsYWNpbmcgU2Nyb2xsZWRUZXh0IGluIGEgUGFuZWRXaW5kb3cuCi0KLS0gSXNzdWUgIzQ0NDQ6IEFsbG93IGFzc2VydFJhaXNlcygpIHRvIGJlIHVzZWQgYXMgYSBjb250ZXh0IGhhbmRsZXIsIHNvIHRoYXQKLSAgdGhlIGNvZGUgdW5kZXIgdGVzdCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUgaWYgbW9yZSBwcmFjdGljYWwuCi0KLS0gSXNzdWUgIzQ3Mzk6IEFkZCBweWRvYyBoZWxwIHRvcGljcyBmb3Igc3ltYm9scywgc28gdGhhdCBlLmcuIGhlbHAoJ0AnKQotICB3b3JrcyBhcyBleHBlY3RlZCBpbiB0aGUgaW50ZXJhY3RpdmUgZW52aXJvbm1lbnQuCi0KLS0gSXNzdWUgIzQ3NTY6IHppcGZpbGUuaXNfemlwZmlsZSgpIG5vdyBzdXBwb3J0cyBmaWxlLWxpa2Ugb2JqZWN0cy4gUGF0Y2ggYnkKLSAgR2FicmllbCBHZW5lbGxpbmEuCi0KLS0gSXNzdWUgIzQ1NzQ6IHJlYWRpbmcgYW4gVVRGMTYtZW5jb2RlZCB0ZXh0IGZpbGUgY3Jhc2hlcyBpZiBcciBvbiA2NC1jaGFyCi0gIGJvdW5kYXJ5LgotCi0tIElzc3VlICM0MjIzOiBpbnNwZWN0LmdldHNvdXJjZSgpIHdpbGwgbm93IGNvcnJlY3RseSBkaXNwbGF5IHNvdXJjZSBjb2RlCi0gIGZvciBwYWNrYWdlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIGNvbmZvcm1hbnQgUEVQIDMwMgotICBsb2FkZXIpLiBPcmlnaW5hbCBwYXRjaCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreS4KLQotLSBJc3N1ZSAjNDIwMTogcGRiIGNhbiBub3cgYWNjZXNzIGFuZCBkaXNwbGF5IHNvdXJjZSBjb2RlIGxvYWRlZCB2aWEKLSAgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgY29uZm9ybWFudCBQRVAgMzAyIGxvYWRlcikuIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MTk3OiBkb2N0ZXN0cyBpbiBtb2R1bGVzIGxvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgUEVQCi0gIDMwMiBjb25mb3JtYW50IGxvYWRlcikgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgaW4gbW9zdCBjYXNlcyAodGhleQotICBhcmUgc3RpbGwgc3ViamVjdCB0byB0aGUgY29uc3RyYWludHMgdGhhdCBleGlzdCBmb3IgYWxsIGNvZGUgcnVubmluZwotICBmcm9tIGluc2lkZSBhIG1vZHVsZSBsb2FkZWQgdmlhIGEgUEVQIDMwMiBsb2FkZXIgYW5kIGF0dGVtcHRpbmcgdG8KLSAgcGVyZm9ybSBJTyBvcGVyYXRpb25zIGJhc2VkIG9uIF9fZmlsZV9fKS4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQWxleGFuZGVyIEJlbG9wb2xza3kuCi0KLS0gSXNzdWVzICM0MDgyIGFuZCAjNDUxMjogQWRkIHJ1bnB5IHN1cHBvcnQgdG8gemlwaW1wb3J0IGluIGEgbWFubmVyIHRoYXQKLSAgYWxsb3dzIGJhY2twb3J0aW5nIHRvIG1haW50ZW5hbmNlIGJyYW5jaGVzLiBPcmlnaW5hbCBwYXRjaCBieQotICBBbGV4YW5kZXIgQmVsb3BvbHNreS4KLQotLSBJc3N1ZSAjNDE2MzogdGV4dHdyYXAgbW9kdWxlOiBhbGxvdyB3b3JkIHNwbGl0dGluZyBvbiBhIGh5cGhlbiBwcmVjZWRlZCBieQotICBhIG5vbi1BU0NJSSBsZXR0ZXIuCi0KLS0gSXNzdWUgIzQ2MTY6IFRhckZpbGUudXRpbWUoKTogUmVzdG9yZSBkaXJlY3RvcnkgdGltZXMgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNDAyMTogdG9rZW5pemUuZGV0ZWN0X2VuY29kaW5nKCkgbm93IHJhaXNlcyBhIFN5bnRheEVycm9yIHdoZW4gdGhlCi0gIGNvZGVjIGNhbm5vdCBiZSBmb3VuZC4gIFRoaXMgaXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgYnVpbHRpbiBiZWhhdmlvci4KLQotLSBJc3N1ZSAjNDA4NDogRml4IG1heCwgbWluLCBtYXhfbWFnIGFuZCBtaW5fbWFnIERlY2ltYWwgbWV0aG9kcyB0bwotICBnaXZlIGNvcnJlY3QgcmVzdWx0cyBpbiB0aGUgY2FzZSB3aGVyZSBvbmUgYXJndW1lbnQgaXMgYSBxdWlldCBOYU4KLSAgYW5kIHRoZSBvdGhlciBpcyBhIGZpbml0ZSBudW1iZXIgdGhhdCByZXF1aXJlcyByb3VuZGluZy4KLQotLSBJc3N1ZSAjNDQ4MzogX2RibSBtb2R1bGUgbm93IGJ1aWxkcyBvbiBzeXN0ZW1zIHdpdGggZ2RibSAmIGdkYm1fY29tcGF0Ci0gIGxpYnMuCi0KLS0gQWRkZWQgdGhlIHN1YnByb2Nlc3MuY2hlY2tfY2FsbF9vdXRwdXQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgb3V0cHV0Ci0gIGZyb20gYSBzdWJwcm9jZXNzIG9uIHN1Y2Nlc3Mgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLgotCi0tIElzc3VlICMxMDU1MjM0OiBjZ2kucGFyc2VfaGVhZGVyKCk6IEZpeGVkIHBhcnNpbmcgb2YgaGVhZGVyIHBhcmFtZXRlcnMgdG8KLSAgc3VwcG9ydCB1bnVzdWFsIGZpbGVuYW1lcyAoc3VjaCBhcyB0aG9zZSBjb250YWluaW5nIHNlbWktY29sb25zKSBpbgotICBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzQzODQ6IEFkZGVkIGxvZ2dpbmcgaW50ZWdyYXRpb24gd2l0aCB3YXJuaW5ncyBtb2R1bGUgdXNpbmcKLSAgY2FwdHVyZVdhcm5pbmdzKCkuIFRoaXMgY2hhbmdlIGluY2x1ZGVzIGEgTnVsbEhhbmRsZXIgd2hpY2ggZG9lcyBub3RoaW5nOwotICBpdCB3aWxsIGJlIG9mIHVzZSB0byBsaWJyYXJ5IGRldmVsb3BlcnMgd2hvIHdhbnQgdG8gYXZvaWQgdGhlICJObyBoYW5kbGVycwotICBjb3VsZCBiZSBmb3VuZCBmb3IgbG9nZ2VyIFhYWCIgbWVzc2FnZSB3aGljaCBjYW4gYXBwZWFyIGlmIHRoZSBsaWJyYXJ5IHVzZXIKLSAgZG9lc24ndCBjb25maWd1cmUgbG9nZ2luZy4KLQotLSBJc3N1ZSAjMzc0MTogRElTVFVUSUxTX1VTRV9TREsgc2V0IGNhdXNlcyBtc3ZjOWNvbXBpbGVyLnB5IHRvIHJhaXNlIGFuCi0gIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjNDUyOTogZml4IHRoZSBwYXJzZXIgbW9kdWxlJ3MgdmFsaWRhdGlvbiBvZiB0cnktZXhjZXB0LWZpbmFsbHkKLSAgc3RhdGVtZW50cy4KLQotLSBJc3N1ZSAjNDQ1ODogZ2V0b3B0LmdudV9nZXRvcHQoKSBub3cgcmVjb2duaXplcyBhIHNpbmdsZSAiLSIgYXMgYW4gYXJndW1lbnQsCi0gIG5vdCBhIG1hbGZvcm1lZCBvcHRpb24uCi0KLS0gQWRkZWQgdGhlIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCkgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gZ2V0IG91dHB1dAotICBmcm9tIGEgc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KLQotLSBJc3N1ZSAjNDU0MjogT24gV2luZG93cywgYmluYXNjaWkuY3JjMzIgc3RpbGwgYWNjZXB0ZWQgc3RyIGFzIGJpbmFyeSBpbnB1dDsKLSAgdGhlIGNvcnJlc3BvbmRpbmcgdGVzdHMgbm93IHBhc3MuCi0KLS0gSXNzdWUgIzQ1Mzc6IHdlYmJyb3dzZXIuVW5peEJyb3dzZXIgd291bGQgZmFpbCB0byBvcGVuIHRoZSBicm93c2VyIGJlY2F1c2UKLSAgaXQgd2FzIGNhbGxpbmcgdGhlIHdyb25nIG9wZW4oKSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMTA1NTIzNDogY2dpLnBhcnNlX2hlYWRlcigpOiBGaXhlZCBwYXJzaW5nIG9mIGhlYWRlciBwYXJhbWV0ZXJzIHRvCi0gIHN1cHBvcnQgdW51c3VhbCBmaWxlbmFtZXMgKHN1Y2ggYXMgdGhvc2UgY29udGFpbmluZyBzZW1pLWNvbG9ucykgaW4KLSAgQ29udGVudC1EaXNwb3NpdGlvbiBoZWFkZXJzLgotCi0tIElzc3VlICM0ODYxOiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKTogUm9idXN0aWZ5LiBGaXggbGlicmFyeSBkZXRlY3Rpb24gb24KLSAgYmlhcmNoIHN5c3RlbXMuIFRyeSB0byByZWx5IG9uIGxkY29uZmlnIG9ubHksIHdpdGhvdXQgdXNpbmcgb2JqZHVtcCBhbmQgZ2NjLgotCi0tIElzc3VlICM1MTA0OiBUaGUgc29ja2V0IG1vZHVsZSBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3Igd2hlbiAxNi1iaXQgcG9ydCBhbmQKLSAgcHJvdG9jb2wgbnVtYmVycyBhcmUgc3VwcGxpZWQgb3V0c2lkZSB0aGUgYWxsb3dlZCAwLTY1NTM2IHJhbmdlIG9uIGJpbmQoKQotICBhbmQgZ2V0c2VydmJ5cG9ydCgpLgotCi0tIFdpbmRvd3MgbG9jYWxlIG1hcHBpbmcgdXBkYXRlZCB0byBWaXN0YS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzQ3MDQ6IHJlbW92ZSB1c2Ugb2YgY21wKCkgaW4gcHliZW5jaCwgYnVtcCBpdHMgdmVyc2lvbiBudW1iZXIgdG8gMi4xLAotICBhbmQgbWFrZSBpdCAyLjYtY29tcGF0aWJsZS4KLQotLSBUdGsgZGVtb3MgYWRkZWQgaW4gRGVtby90a2ludGVyL3R0ay8KLQotLSBJc3N1ZSAjNDY3NzogYWRkIHR3byBsaXN0IGNvbXByZWhlbnNpb24gdGVzdHMgdG8gcHliZW5jaC4KLQotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjA5NDogQnVpbGQgY29ycmVjdGx5IHdpdGggU3VidmVyc2lvbiAxLjcuCi0KLS0gSXNzdWUgIzU4NDc6IFJlbW92ZSAtbiBzd2l0Y2ggb24gIkVkaXQgd2l0aCBJRExFIiBtZW51IGl0ZW0uCi0KLS0gSXNzdWUgIzU3MjY6IE1ha2UgTW9kdWxlcy9sZF9zb19haXggcmV0dXJuIHRoZSBhY3R1YWwgZXhpdCBjb2RlIG9mIHRoZQotICBsaW5rZXIsIHJhdGhlciB0aGFuIGFsd2F5cyBleGl0IHN1Y2Nlc3NmdWxseS4gUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCi0KLS0gSXNzdWUgIzQ1ODc6IEFkZCBjb25maWd1cmUgb3B0aW9uIC0td2l0aC1kYm1saWJvcmRlcj1kYjE6ZGIyOi4uLiB0byBzcGVjaWZ5Ci0gIHRoZSBvcmRlciB0aGF0IGJhY2tlbmRzIGZvciB0aGUgZGJtIGV4dGVuc2lvbiBhcmUgY2hlY2tlZC4KLQotLSBMaW5rIHRoZSBzaGFyZWQgcHl0aG9uIGxpYnJhcnkgd2l0aCAkKE1PRExJQlMpLgotCi0tIElzc3VlICM1MTM0OiBTaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIHNxbGl0ZSB3aXRoIFZDKysuCi0KLS0gSXNzdWUgIzQ0OTQ6IEZpeCBidWlsZCB3aXRoIFB5X05PX0VOQUJMRV9TSEFSRUQgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNDg5NTogVXNlIF9zdHJkdXAgb24gV2luZG93cyBDRS4KLQotLSBJc3N1ZSAjNDQ3MjogImNvbmZpZ3VyZSAtLWVuYWJsZS1zaGFyZWQiIG5vdyB3b3JrcyBvbiBPU1gKLQotLSBJc3N1ZXMgIzQ3MjggYW5kICM0MDYwOiBXT1JEU19CSUdFRElBTiBpcyBub3cgY29ycmVjdCBpbiBVbml2ZXJzYWwgYnVpbGRzLgotCi0tIElzc3VlICM0Mzg5OiBBZGQgaWNvbiB0byB0aGUgdW5pbnN0YWxsIGVudHJ5IGluICJhZGQtYW5kLXJlbW92ZS1wcm9ncmFtcyIuCi0KLS0gSXNzdWUgIzQyODk6IFJlbW92ZSBDYW5jZWwgYnV0dG9uIGZyb20gQWR2YW5jZWREbGcuCi0KLS0gSXNzdWUgIzE2NTY2NzU6IFJlZ2lzdGVyIGEgZHJvcCBoYW5kbGVyIGZvciAucHkqIGZpbGVzIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzQxMjA6IEV4Y2x1ZGUgbWFuaWZlc3QgZnJvbSBleHRlbnNpb24gbW9kdWxlcyBpbiBWUzIwMDguCi0KLS0gSXNzdWUgIzQwOTE6IEluc3RhbGwgcHl0aG9ueHkuZGxsIGluIHN5c3RlbTMyIGFnYWluLgotCi0tIElzc3VlICM0MDE4OiBEaXNhYmxlICJmb3IgbWUiIGluc3RhbGxhdGlvbnMgb24gVmlzdGEuCi0KLS0gSXNzdWUgIzM3NTg6IEFkZCBgYHBhdGNoY2hlY2tgYCBidWlsZCB0YXJnZXQgdG8gLlBIT05ZLgotCi0tIElzc3VlICM0MjA0OiBGaXhlZCBtb2R1bGUgYnVpbGQgZXJyb3JzIG9uIEZyZWVCU0QgNC4KLQotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjNjYyNDogeUFyZ19QYXJzZVR1cGxlIHdpdGggInMiIGZvcm1hdCB3aGVuIHBhcnNpbmcgYXJndW1lbnQgd2l0aAotICBOVUw6IEJvZ3VzIFR5cGVFcnJvciBkZXRhaWwgc3RyaW5nLgotCi0tIElzc3VlICM1MTc1OiBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvcgotICBmb3IgbmVnYXRpdmUgYXJndW1lbnRzLiAgUHJldmlvdXNseSwgaXQgcmFpc2VkIFR5cGVFcnJvci4KLQotLSBJc3N1ZSAjNDcyMDogVGhlIGZvcm1hdCBmb3IgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzIGNhbiBiZWdpbiB3aXRoICd8Jy4KLQotLSBJc3N1ZSAjMzYzMjogZnJvbSB0aGUgZ2RiIGRlYnVnZ2VyLCB0aGUgJ3B5bycgbWFjcm8gY2FuIG5vdyBiZSBjYWxsZWQgd2hlbgotICB0aGUgR0lMIGlzIHJlbGVhc2VkLCBvciBvd25lZCBieSBhbm90aGVyIHRocmVhZC4KLQotLSBJc3N1ZSAjNDEyMjogT24gV2luZG93cywgZml4IGEgY29tcGlsYXRpb24gZXJyb3Igd2hlbiB1c2luZyB0aGUKLSAgUHlfVU5JQ09ERV9JU1NQQUNFIG1hY3JvIGluIGFuIGV4dGVuc2lvbiBtb2R1bGUuCi0KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzM3NDU6IEZpeCBoYXNobGliIHRvIGFsd2F5cyByZWplY3QgdW5pY29kZSBhbmQgbm9uIGJ1ZmZlci1hcGkKLSAgc3VwcG9ydGluZyBvYmplY3RzIGFzIGlucHV0IG5vIG1hdHRlciBob3cgaXQgd2FzIGNvbXBpbGVkIChidWlsdCBpbgotICBpbXBsZW1lbnRhdGlvbnMgb3IgZXh0ZXJuYWwgb3BlbnNzbCBsaWJyYXJ5KS4KLQotLSBJc3N1ZSAjNDM5NzogRml4IG9jY2FzaW9uYWwgdGVzdF9zb2NrZXQgZmFpbHVyZSBvbiBPUyBYLgotCi0tIElzc3VlICM0Mjc5OiBGaXggYnVpbGQgb2YgcGFyc2VybW9kdWxlIHVuZGVyIEN5Z3dpbi4KLQotLSBJc3N1ZSAjNDc1MTogaGFzaGxpYiBub3cgcmVsZWFzZXMgdGhlIEdJTCB3aGVuIGhhc2hpbmcgbGFyZ2UgYnVmZmVycwotICAod2l0aCBhIGhhcmR3aXJlZCB0aHJlc2hvbGQgb2YgMjA0OCBieXRlcyksIGFsbG93aW5nIGJldHRlciBwYXJhbGxlbGl6YXRpb24KLSAgb24gbXVsdGktQ1BVIHN5c3RlbXMuIENvbnRyaWJ1dGVkIGJ5IEx1a2FzIEx1ZWcgKGViZmUpIGFuZCBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjNDA1MTogUHJldmVudCBjb25mbGljdCBvZiBVTklDT0RFIG1hY3JvcyBpbiBjUGlja2xlLgotCi0tIElzc3VlICM0NzM4OiBFYWNoIHpsaWIgb2JqZWN0IG5vdyBoYXMgYSBzZXBhcmF0ZSBsb2NrLCBhbGxvd2luZyB0byBjb21wcmVzcwotICBvciBkZWNvbXByZXNzIHNldmVyYWwgc3RyZWFtcyBhdCBvbmNlIG9uIG11bHRpLUNQVSBzeXN0ZW1zLiBBbHNvLCB0aGUgR0lMCi0gIGlzIG5vdyByZWxlYXNlZCB3aGVuIGNvbXB1dGluZyB0aGUgQ1JDIG9mIGEgbGFyZ2UgYnVmZmVyLiBQYXRjaCBieSBlYmZlLgotCi0tIElzc3VlICM0MjI4OiBQYWNrIG5lZ2F0aXZlIHZhbHVlcyB0aGUgc2FtZSB3YXkgYXMgMi40IGluIHN0cnVjdCdzIEwgZm9ybWF0LgotCi0tIElzc3VlICMxMDQwMDI2OiBGaXggb3MudGltZXMgcmVzdWx0IG9uIHN5c3RlbXMgd2hlcmUgSFogaXMgaW5jb3JyZWN0LgotCi0tIElzc3VlcyAjMzE2NywgIzM2ODI6IEZpeCB0ZXN0X21hdGggZmFpbHVyZXMgZm9yIGxvZywgbG9nMTAgb24gU29sYXJpcywKLSAgT3BlbkJTRC4KLQotLSBJc3N1ZSAjNDU4MzogYXJyYXkuYXJyYXkgd291bGQgbm90IGFsd2F5cyBwcm9oaWJpdCByZXNpemluZyB3aGVuIGEgYnVmZmVyCi0gIGhhcyBiZWVuIGV4cG9ydGVkLCByZXN1bHRpbmcgaW4gYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggd2hlbiBhY2Nlc3NpbmcgdGhlCi0gIGJ1ZmZlci4KLQotCi0tIElzc3VlICM1MjI4OiBNYWtlIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdHMgY2FuIG5vdyBiZSBwaWNrbGVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjNjE1MjogTmV3IG9wdGlvbiAnLWonLyctLW11bHRpcHJvY2VzcycgZm9yIHJlZ3J0ZXN0IGFsbG93cyBydW5uaW5nCi0gIHJlZ3Jlc3Npb24gdGVzdHMgaW4gcGFyYWxsZWwsIHNob3J0ZW5pbmcgdGhlIHRvdGFsIHJ1bnRpbWUuCi0KLS0gSXNzdWUgIzU0NTA6IE1vdmVkIHRlc3RzIGludm9sdmluZyBsb2FkaW5nIHRrIGZyb20gTGliL3Rlc3QvdGVzdF90Y2wgdG8KLSAgTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9sb2FkdGsuIFdpdGggdGhpcywgdGhlc2UgdGVzdHMgZGVtb25zdHJhdGUKLSAgdGhlIHNhbWUgYmVoYXZpb3VyIGFzIHRlc3RfdHRrZ3Vpb25seSAoYW5kIG5vdyBhbHNvIHRlc3RfdGspIHdoaWNoIGlzIHRvCi0gIHNraXAgdGhlIHRlc3RzIGlmIERJU1BMQVkgaXMgZGVmaW5lZCBidXQgY2FuJ3QgYmUgdXNlZC4KLQotLSByZWdydGVzdCBubyBsb25nZXIgdHJlYXRzIEltcG9ydEVycm9yIGFzIGVxdWl2YWxlbnQgdG8gU2tpcFRlc3QuICBJbXBvcnRzCi0gIHRoYXQgc2hvdWxkIGNhdXNlIGEgdGVzdCB0byBiZSBza2lwcGVkIGFyZSBub3cgZG9uZSB1c2luZyBpbXBvcnRfbW9kdWxlCi0gIGZyb20gdGVzdCBzdXBwb3J0LCB3aGljaCBkb2VzIHRoZSBjb252ZXJzaW9uLgotCi0tIElzc3VlICM1MDgzOiBOZXcgJ2d1aScgcmVzb3VyY2UgZm9yIHJlZ3J0ZXN0LgotCi0KLURvY3MKLS0tLS0KLQotCiAqKihGb3IgaW5mb3JtYXRpb24gYWJvdXQgb2xkZXIgdmVyc2lvbnMsIGNvbnN1bHQgdGhlIEhJU1RPUlkgZmlsZS4pKioKZGlmZiAtLWdpdCBhL01pc2MvUkVBRE1FIGIvTWlzYy9SRUFETUUKaW5kZXggYjIzOWNlZS4uMTE4ZjZjNyAxMDA2NDQKLS0tIGEvTWlzYy9SRUFETUUKKysrIGIvTWlzYy9SRUFETUUKQEAgLTgsNyArOCw2IEBACiAtLS0tLS0tLS0tLS0tLS0tCiAKIEFDS1MgICAgICAgICAgICAgICAgICAgIEFja25vd2xlZGdlbWVudHMKLWJ1aWxkLnNoICAgICAgICAgICAgICAgIFNjcmlwdCB0byBidWlsZCBhbmQgdGVzdCBsYXRlc3QgUHl0aG9uIGZyb20gdGhlIHJlcG9zaXRvcnkKIGdkYmluaXQgICAgICAgICAgICAgICAgIEhhbmR5IHN0dWZmIHRvIHB1dCBpbiB5b3VyIC5nZGJpbml0IGZpbGUsIGlmIHlvdSB1c2UgZ2RiCiBISVNUT1JZICAgICAgICAgICAgICAgICBOZXdzIGZyb20gcHJldmlvdXMgcmVsZWFzZXMgLS0gb2xkZXN0IGxhc3QKIGluZGVudC5wcm8gICAgICAgICAgICAgIEdOVSBpbmRlbnQgcHJvZmlsZSBhcHByb3hpbWF0aW5nIG15IEMgc3R5bGUKQEAgLTE5LDggKzE4LDExIEBACiBweXRob24ucGMuaW4gICAgICAgICAgICBQYWNrYWdlIGNvbmZpZ3VyYXRpb24gaW5mbyB0ZW1wbGF0ZSBmb3IgcGtnLWNvbmZpZwogcHl0aG9uLXdpbmcqLndwciAgICAgICAgV2luZyBJREUgcHJvamVjdCBmaWxlCiBSRUFETUUgICAgICAgICAgICAgICAgICBUaGUgZmlsZSB5b3UncmUgcmVhZGluZyBub3cKK1JFQURNRS5BSVggICAgICAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHVzaW5nIFB5dGhvbiBvbiBBSVgKK1JFQURNRS5jb3Zlcml0eSAgICAgICAgIEluZm9ybWF0aW9uIGFib3V0IHJ1bm5pbmcgQ292ZXJpdHkncyBQcmV2ZW50IG9uIFB5dGhvbgogUkVBRE1FLnZhbGdyaW5kICAgICAgICAgSW5mb3JtYXRpb24gZm9yIFZhbGdyaW5kIHVzZXJzLCBzZWUgdmFsZ3JpbmQtcHl0aG9uLnN1cHAKIFJQTSAgICAgICAgICAgICAgICAgICAgIChPbGQpIHRvb2xzIHRvIGJ1aWxkIFJQTXMKK3N2bm1hcC50eHQgICAgICAgICAgICAgIE1hcCBvZiBvbGQgU1ZOIHJldnMgYW5kIGJyYW5jaGVzIHRvIGhnIGNoYW5nZXNldCBpZHMKIFNwZWNpYWxCdWlsZHMudHh0ICAgICAgIERlc2NyaWJlcyBleHRyYSBzeW1ib2xzIHlvdSBjYW4gc2V0IGZvciBkZWJ1ZyBidWlsZHMKIFRleHRNYXRlICAgICAgICAgICAgICAgIEEgVGV4dE1hdGUgYnVuZGxlIGZvciBQeXRob24gZGV2ZWxvcG1lbnQKIHZhbGdyaW5kLXB5dGhvbi5zdXBwICAgIFZhbGdyaW5kIHN1cHByZXNzaW9uIGZpbGUsIHNlZSBSRUFETUUudmFsZ3JpbmQKZGlmZiAtLWdpdCBhL01pc2MvUlBNL3B5dGhvbi0zLjIuc3BlYyBiL01pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBNaXNjL1JQTS9weXRob24tMy4yLnNwZWMKcmVuYW1lIHRvIE1pc2MvUlBNL3B5dGhvbi0zLjMuc3BlYwppbmRleCAxOGYzZTc3Li45MzZhMjFmIDEwMDY0NAotLS0gYS9NaXNjL1JQTS9weXRob24tMy4yLnNwZWMKKysrIGIvTWlzYy9SUE0vcHl0aG9uLTMuMy5zcGVjCkBAIC0zOSw4ICszOSw4IEBACiAKICVkZWZpbmUgbmFtZSBweXRob24KICMtLXN0YXJ0IGNvbnN0YW50cy0tCi0lZGVmaW5lIHZlcnNpb24gMy4yLjMKLSVkZWZpbmUgbGlidmVycyAzLjIKKyVkZWZpbmUgdmVyc2lvbiAzLjMuMAorJWRlZmluZSBsaWJ2ZXJzIDMuMwogIy0tZW5kIGNvbnN0YW50cy0tCiAlZGVmaW5lIHJlbGVhc2UgMXB5ZG90b3JnCiAlZGVmaW5lIF9fcHJlZml4IC91c3IKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgppbmRleCA3OWYwYmIxLi5iYjBiMDA4IDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi1jb25maWcuaW4KKysrIGIvTWlzYy9weXRob24tY29uZmlnLmluCkBAIC03LDcgKzcsNyBAQAogaW1wb3J0IHN5c2NvbmZpZwogCiB2YWxpZF9vcHRzID0gWydwcmVmaXgnLCAnZXhlYy1wcmVmaXgnLCAnaW5jbHVkZXMnLCAnbGlicycsICdjZmxhZ3MnLAotICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnXQorICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnLCAnY29uZmlnZGlyJ10KIAogZGVmIGV4aXRfd2l0aF91c2FnZShjb2RlPTEpOgogICAgIHByaW50KCJVc2FnZTogezB9IFt7MX1dIi5mb3JtYXQoCkBAIC02MSwzICs2MSw2IEBACiAKICAgICBlbGlmIG9wdCA9PSAnLS1hYmlmbGFncyc6CiAgICAgICAgIHByaW50KHN5cy5hYmlmbGFncykKKworICAgIGVsaWYgb3B0ID09ICctLWNvbmZpZ2Rpcic6CisgICAgICAgIHByaW50KHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignTElCUEwnKSkKZGlmZiAtLWdpdCBhL01pc2MvcHl0aG9uLm1hbiBiL01pc2MvcHl0aG9uLm1hbgppbmRleCAyMGJlZGVkLi43MmUxZWNiIDEwMDY0NAotLS0gYS9NaXNjL3B5dGhvbi5tYW4KKysrIGIvTWlzYy9weXRob24ubWFuCkBAIC0zNywxMyArMzcsNiBAQAogLkIgXC1PTwogXQogWwotLkIgXC1SCi1dCi1bCi0uQiAtUQotLkkgYXJndW1lbnQKLV0KLVsKIC5CIFwtcwogXQogWwpAQCAtMTU1LDI3ICsxNDgsNiBAQAogRG8gbm90IHByaW50IHRoZSB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMuIFRoZXNlIG1lc3NhZ2VzIGFyZSAKIGFsc28gc3VwcHJlc3NlZCBpbiBub24taW50ZXJhY3RpdmUgbW9kZS4KIC5UUAotLkIgXC1SCi1UdXJuIG9uICJoYXNoIHJhbmRvbWl6YXRpb24iLCBzbyB0aGF0IHRoZSBoYXNoKCkgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kCi1kYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcHNldWRvLXJhbmRvbSB2YWx1ZS4KLUFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvbiBwcm9jZXNzLCB0aGV5IGFyZQotbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2YgUHl0aG9uLgotLklQCi1UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgZGVuaWFsIG9mIHNlcnZpY2UKLWNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0IGV4cGxvaXQgdGhlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UKLW9mIGEgZGljdCBjb25zdHJ1Y3Rpb24sIE8obl4yKSBjb21wbGV4aXR5LiAgU2VlCi1odHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwKLWZvciBkZXRhaWxzLgotLlRQCi0uQkkgIlwtUSAiIGFyZ3VtZW50Ci1EaXZpc2lvbiBjb250cm9sOyBzZWUgUEVQIDIzOC4gIFRoZSBhcmd1bWVudCBtdXN0IGJlIG9uZSBvZiAib2xkIiAodGhlCi1kZWZhdWx0LCBpbnQvaW50IGFuZCBsb25nL2xvbmcgcmV0dXJuIGFuIGludCBvciBsb25nKSwgIm5ldyIgKG5ldwotZGl2aXNpb24gc2VtYW50aWNzLCBpLmUuIGludC9pbnQgYW5kIGxvbmcvbG9uZyByZXR1cm5zIGEgZmxvYXQpLAotIndhcm4iIChvbGQgZGl2aXNpb24gc2VtYW50aWNzIHdpdGggYSB3YXJuaW5nIGZvciBpbnQvaW50IGFuZAotbG9uZy9sb25nKSwgb3IgIndhcm5hbGwiIChvbGQgZGl2aXNpb24gc2VtYW50aWNzIHdpdGggYSB3YXJuaW5nIGZvcgotYWxsIHVzZSBvZiB0aGUgZGl2aXNpb24gb3BlcmF0b3IpLiAgRm9yIGEgdXNlIG9mICJ3YXJuYWxsIiwgc2VlIHRoZQotVG9vbHMvc2NyaXB0cy9maXhkaXYucHkgc2NyaXB0LgotLlRQCiAuQiBcLXMKIERvbid0IGFkZCB1c2VyIHNpdGUgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLgogLlRQCkBAIC0xODQsNyArMTU2LDkgQEAKIC5JIHNpdGUKIGFuZCB0aGUgc2l0ZS1kZXBlbmRlbnQgbWFuaXB1bGF0aW9ucyBvZgogLkkgc3lzLnBhdGgKLXRoYXQgaXQgZW50YWlscy4KK3RoYXQgaXQgZW50YWlscy4gIEFsc28gZGlzYWJsZSB0aGVzZSBtYW5pcHVsYXRpb25zIGlmCisuSSBzaXRlCitpcyBleHBsaWNpdGx5IGltcG9ydGVkIGxhdGVyLgogLlRQCiAuQiBcLXUKIEZvcmNlIHRoZSBiaW5hcnkgSS9PIGxheWVycyBvZiBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gYmUgdW5idWZmZXJlZC4KQEAgLTI4Myw5ICsyNTcsOSBAQAogZnJvbSB0aGF0IGZpbGU7CiB3aGVuIGNhbGxlZCB3aXRoCiAuQiBcLWMKLS5JIGNvbW1hbmQsCisuSVIgY29tbWFuZCAsCiBpdCBleGVjdXRlcyB0aGUgUHl0aG9uIHN0YXRlbWVudChzKSBnaXZlbiBhcwotLkkgY29tbWFuZC4KKy5JUiBjb21tYW5kIC4KIEhlcmUKIC5JIGNvbW1hbmQKIG1heSBjb250YWluIG11bHRpcGxlIHN0YXRlbWVudHMgc2VwYXJhdGVkIGJ5IG5ld2xpbmVzLgpAQCAtMjk1LDcgKzI2OSw3IEBACiAuUFAKIElmIGF2YWlsYWJsZSwgdGhlIHNjcmlwdCBuYW1lIGFuZCBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0aGVyZWFmdGVyIGFyZQogcGFzc2VkIHRvIHRoZSBzY3JpcHQgaW4gdGhlIFB5dGhvbiB2YXJpYWJsZQotLkkgc3lzLmFyZ3YgLAorLklSIHN5cy5hcmd2ICwKIHdoaWNoIGlzIGEgbGlzdCBvZiBzdHJpbmdzICh5b3UgbXVzdCBmaXJzdAogLkkgaW1wb3J0IHN5cwogdG8gYmUgYWJsZSB0byBhY2Nlc3MgaXQpLgpAQCAtMzA5LDE0ICsyODMsMTQgQEAKIC5JICctYycuCiBOb3RlIHRoYXQgb3B0aW9ucyBpbnRlcnByZXRlZCBieSB0aGUgUHl0aG9uIGludGVycHJldGVyIGl0c2VsZgogYXJlIG5vdCBwbGFjZWQgaW4KLS5JIHN5cy5hcmd2LgorLklSIHN5cy5hcmd2IC4KIC5QUAogSW4gaW50ZXJhY3RpdmUgbW9kZSwgdGhlIHByaW1hcnkgcHJvbXB0IGlzIGA+Pj4nOyB0aGUgc2Vjb25kIHByb21wdAogKHdoaWNoIGFwcGVhcnMgd2hlbiBhIGNvbW1hbmQgaXMgbm90IGNvbXBsZXRlKSBpcyBgLi4uJy4KIFRoZSBwcm9tcHRzIGNhbiBiZSBjaGFuZ2VkIGJ5IGFzc2lnbm1lbnQgdG8KIC5JIHN5cy5wczEKIG9yCi0uSSBzeXMucHMyLgorLklSIHN5cy5wczIgLgogVGhlIGludGVycHJldGVyIHF1aXRzIHdoZW4gaXQgcmVhZHMgYW4gRU9GIGF0IGEgcHJvbXB0LgogV2hlbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIG9jY3VycywgYSBzdGFjayB0cmFjZSBpcyBwcmludGVkIGFuZAogY29udHJvbCByZXR1cm5zIHRvIHRoZSBwcmltYXJ5IHByb21wdDsgaW4gbm9uLWludGVyYWN0aXZlIG1vZGUsIHRoZQpAQCAtMzcyLDcgKzM0Niw3IEBACiBpbnNlcnRlZCBpbiB0aGUgcGF0aCBpbiBmcm9udCBvZiAkUFlUSE9OUEFUSC4KIFRoZSBzZWFyY2ggcGF0aCBjYW4gYmUgbWFuaXB1bGF0ZWQgZnJvbSB3aXRoaW4gYSBQeXRob24gcHJvZ3JhbSBhcyB0aGUKIHZhcmlhYmxlCi0uSSBzeXMucGF0aCAuCisuSVIgc3lzLnBhdGggLgogLklQIFBZVEhPTlNUQVJUVVAKIElmIHRoaXMgaXMgdGhlIG5hbWUgb2YgYSByZWFkYWJsZSBmaWxlLCB0aGUgUHl0aG9uIGNvbW1hbmRzIGluIHRoYXQKIGZpbGUgYXJlIGV4ZWN1dGVkIGJlZm9yZSB0aGUgZmlyc3QgcHJvbXB0IGlzIGRpc3BsYXllZCBpbiBpbnRlcmFjdGl2ZQpAQCAtNDI5LDkgKzQwMyw4IEBACiBJZiB0aGlzIGlzIHNldCB0byBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgaXQgaXMgZXF1aXZhbGVudCB0bwogc3BlY2lmeWluZyB0aGUgXGZCXC1XXGZQIG9wdGlvbiBmb3IgZWFjaCBzZXBhcmF0ZSB2YWx1ZS4KIC5JUCBQWVRIT05IQVNIU0VFRAotSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgdG8gInJhbmRvbSIsIHRoZSBlZmZlY3QgaXMgdGhlIHNhbWUgYXMgc3BlY2lmeWluZwotdGhlIFxmQi1SXGZQIG9wdGlvbjogYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLAotYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCitJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAicmFuZG9tIiwgYSByYW5kb20gdmFsdWUgaXMgdXNlZCB0byBzZWVkIHRoZSBoYXNoZXMKK29mIHN0ciwgYnl0ZXMgYW5kIGRhdGV0aW1lIG9iamVjdHMuCiAKIElmIFBZVEhPTkhBU0hTRUVEIGlzIHNldCB0byBhbiBpbnRlZ2VyIHZhbHVlLCBpdCBpcyB1c2VkIGFzIGEgZml4ZWQgc2VlZCBmb3IKIGdlbmVyYXRpbmcgdGhlIGhhc2goKSBvZiB0aGUgdHlwZXMgY292ZXJlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uLiAgSXRzCkBAIC00NDAsOCArNDEzLDcgQEAKIHZhbHVlcy4KIAogVGhlIGludGVnZXIgbXVzdCBiZSBhIGRlY2ltYWwgbnVtYmVyIGluIHRoZSByYW5nZSBbMCw0Mjk0OTY3Mjk1XS4gIFNwZWNpZnlpbmcKLXRoZSB2YWx1ZSAwIHdpbGwgbGVhZCB0byB0aGUgc2FtZSBoYXNoIHZhbHVlcyBhcyB3aGVuIGhhc2ggcmFuZG9taXphdGlvbiBpcwotZGlzYWJsZWQuCit0aGUgdmFsdWUgMCB3aWxsIGRpc2FibGUgaGFzaCByYW5kb21pemF0aW9uLgogLlNIIEFVVEhPUgogVGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvcHNmCiAuU0ggSU5URVJORVQgUkVTT1VSQ0VTCmRpZmYgLS1naXQgYS9NaXNjL3N2bm1hcC50eHQgYi9NaXNjL3N2bm1hcC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyYmU3ZgotLS0gL2Rldi9udWxsCisrKyBiL01pc2Mvc3ZubWFwLnR4dApAQCAtMCwwICsxLDcyNTQ2IEBACisyMTYxIDNjZDAzM2U2YjUzMGY2YTc4YjNiMTRmZWRiZDIwNzQ4OTZkYmY2ZGUgbGVnYWN5LXRydW5rCisyMTYyIDRkYjlkNDZiMzA2YTljNmVjMmQxZmU3YTdjYzM2ZWY3MTczNDI2YTYgbGVnYWN5LXRydW5rCisyMTYzIDRhM2E2NDgxODVlZjg5NjVjMzQyODYwYmQ4NDU3ZWQ2YzAzYzZkZTAgbGVnYWN5LXRydW5rCisyMTY0IDhkYTkyMjVjYzYwZTJkYTE2NjVhODBhZjkwMTg0ZGIwZmRkYTA1Y2UgbGVnYWN5LXRydW5rCisyMTY1IDE3ZTQ5MGI0ZGMyOGI4YWM2MDVmYTE5ZTQ4MmNmNzIyZmU4MDY1OGQgbGVnYWN5LXRydW5rCisyMTY2IDU1NzBkYmIxY2U1NThiNTU3MTZlYWI3ZDA4MGExYWZhZDJlNzdlMmYgbGVnYWN5LXRydW5rCisyMTY3IGZjNmZjZDdkZjRmN2YyZTFjMTJmMTdhZjI0NjRjNDk3ZDZmNmEzZTkgbGVnYWN5LXRydW5rCisyMTY4IDM0ZDY2N2RjMWE0YzRhYmRjYjE5Y2RkZmQyZTliZmRhMDExMzllZDIgbGVnYWN5LXRydW5rCisyMTY5IDZmYzE0NmJkNGYwM2M5N2QxNGM3YzMwMGIxMjEyYTExZWI5YjY3MmEgbGVnYWN5LXRydW5rCisyMTcwIDMzNzAxZGI0ZWE1NTkxMDBkMzdiZTQ0ZDJmMGQ1M2U1NjhhMGVjMzMgbGVnYWN5LXRydW5rCisyMTcxIGE3MWU4OTZlZDA0NzM0MjFkODhmZTQ1NTI2OWM1YTVlNTQ3MzJhMjIgbGVnYWN5LXRydW5rCisyMTcyIGJjZWE2YzgyMjkwNmM4NGVkZWRhYmNjMDNlYzQ4MTU5NWRlZjBhNjMgbGVnYWN5LXRydW5rCisyMTczIDM2YTIyMGQzNzMxYTAzMzQ1Nzg1NTkzZWMzMmViYzM1YTI5NDk0ZGUgbGVnYWN5LXRydW5rCisyMTc0IDA2YmYyYWYwMGUzYTllYjUxNTI5YjYxOGNiZGMwYmJjZjFhNGU5NjQgbGVnYWN5LXRydW5rCisyMTc1IDg3NGM4ZmQ1NjVmYTA5NDYxYzIxMzk5YWY5ZWRlMTIzNGVhMTBmNzAgbGVnYWN5LXRydW5rCisyMTc2IGU5ZTA1ZmJiYTdhNDAwMzRmODIxMWM5ZDFkMTJiMjg4NzlmNTFmY2YgbGVnYWN5LXRydW5rCisyMTc3IDA4MDhlNWFiNzQzYWJiOGIwNTdhNTVmNzY1MWFjMTE4YzgzZjViMGMgbGVnYWN5LXRydW5rCisyMTc4IGE1ZjAxYTkxNzQwOTJkMjllYmE2Mzc3YzIzNjkxODdjZGIzZmQ3ZDUgbGVnYWN5LXRydW5rCisyMTc5IGU5YmJlNGFjMzIzODllOGE3YTZjMGI0YWVmYWY0ZWFkMzA4OGYyMWEgbGVnYWN5LXRydW5rCisyMTgwIDcxYWMwZTM3MjM2YTU0ZTBhNjc4OGIzODQ2NTVkOGQ4MjA5ZDg1OGEgbGVnYWN5LXRydW5rCisyMTgxIDExODU0NTMxMmYzYmZlMTAzYmNjZmIxMDNmNGRmMmVlYjBkMGViODMgbGVnYWN5LXRydW5rCisyMTgyIDk2MTY5NmVmM2FiN2U0M2M5OWY1Yzc2MGY3YzYyMWI2YTExOWRjOTggbGVnYWN5LXRydW5rCisyMTgzIDJkM2ViNzE3YTAwZDEwM2Q0Mzc1OTRlMDgxOTNkYWU2MDAwNjFkYTkgbGVnYWN5LXRydW5rCisyMTg0IDA4NTYyZGUwMTY2ODAwZTFjNmQ1ZDUxNWY3NDM2OWIzOTlmZDhjYWEgbGVnYWN5LXRydW5rCisyMTg1IDY0YTY5ZDYxMjFlMGQyMDYyZjI2YTdlY2E2N2U5YjZhNDJkY2EyN2IgbGVnYWN5LXRydW5rCisyMTg2IDMyNjM5ODc4ZDE2YjYwNDg3NTM4OGUyMjk5NjExYmJmYzUxODk2MjYgbGVnYWN5LXRydW5rCisyMTg3IDQ1YWViMmVlYWQ3OWVlN2ZhMzZlNDE2NmRlYjc1Mzg2YzEzZTM0MWQgbGVnYWN5LXRydW5rCisyMTg4IDgyYzdiYWI3OGJiMTBhNzA2ZjVkNTIwYjE1NTBlNzI0Yjk0YWEzOGMgbGVnYWN5LXRydW5rCisyMTg5IGU1YzUwYzY4ODExN2M2ZTViZDg5NTQ2MGRhY2U2YzljYmY1ODFhZmQgbGVnYWN5LXRydW5rCisyMTkwIDM0MmE3YzYxYzBjM2MwZmU0ODE0ZDFhZDI0ZTc3MTQyNzczODE1YjEgbGVnYWN5LXRydW5rCisyMTkxIDg2ZTBlMjM1MGJhMTE3NDdjNGUwZmRjZTk3YmM3YzliYzY0ODc0MWIgbGVnYWN5LXRydW5rCisyMTkyIGM0ODdkZmMzMDY2MzM5ODUwODU0ZmI4NThjNmE4MzMwNTlhOWJjNzggbGVnYWN5LXRydW5rCisyMTkzIGI2NDNlYWRlNjU0NDU5Zjg3ZDU3MmQ2Yjc5Mzg5NmQ5YjNhZGY4NDAgbGVnYWN5LXRydW5rCisyMTk0IGI4MDdjOTBjNGE2ODIyZDFjYjhiMzk2OTkxY2FhODA4NWJiMzJiNGUgbGVnYWN5LXRydW5rCisyMTk1IDFkMjI5MDBmNzdiODUzYmVlMDZkZDI0YTFiZjFmZGY0NTE1YjQ4YmMgbGVnYWN5LXRydW5rCisyMTk2IGRhMDZhMjgyYjg4MDRmYTQ3ZmY0YzNjNGJkOTJiYTlmYjhlZWE5MjkgbGVnYWN5LXRydW5rCisyMTk3IGEyMjQwY2U5MWU1MjA2MWI0MzJmOTc5NTdmOTJiZjc5Nzg1MzQwYWMgbGVnYWN5LXRydW5rCisyMTk4IGM3OTVmZGFjZWQ5YjhhMjhkOTgzMzI3Nzg2OGIxZjc0NjFhMDk1ZjUgbGVnYWN5LXRydW5rCisyMTk5IDEwZTE4MjFjMzQ1Y2EyZDEzNzUzNWE2YzFjZjVlYjAxMjg2ZmNkN2UgbGVnYWN5LXRydW5rCisyMjAwIDE5MDVmODIxMzk3YjBmMDk0MTAxMTYwOGU1YjQ2ZGQxYzllMzg5ZTQgbGVnYWN5LXRydW5rCisyMjAxIGYyOGFjN2Y2MjFjNzYwNzk3NzRjMzAwMTdiMjkwMTM5NjVkMTA0MDkgbGVnYWN5LXRydW5rCisyMjAyIGU4MGVmZWFiNDliMzJjMTVhYzk3YjI0ZDRmNmU4ZmRkNWNjZjBhOTUgbGVnYWN5LXRydW5rCisyMjAzIDQ4MzVjMmQzOGI4NGU1ZmI1NTgwMzZkNDdjNTg3MWRkOTY2MzM4YjcgbGVnYWN5LXRydW5rCisyMjA0IGVhMjE5ODJhMTUzMjQyNWY4MmVjNWE0MzQ2Y2I4NDE5MTdhNzFkOTUgbGVnYWN5LXRydW5rCisyMjA1IDRkM2EyOGRmZmM5Yjk1ZDM4YjkxMmNiNjk1NzQyZGU0MGQ5NTc2MzUgbGVnYWN5LXRydW5rCisyMjA2IDdmZWNhYmIzMjc5MTQ1MDQ1NDQ2MTdlNWJhY2QxYzA1YTEyZTg2OWYgbGVnYWN5LXRydW5rCisyMjA3IGNlNmYyNDcxMTUwNGU1OTU2ZDY2MDA5OWM5OWVjY2I5NTFjMGMxNDkgbGVnYWN5LXRydW5rCisyMjA4IDA1MDU3ZTM2NjBmODJjZThlODNlOGMyZDczZDBiNTg0OTRmMmJlYTcgbGVnYWN5LXRydW5rCisyMjA5IGIwZTc2MjIxZTdmZmRiY2ZlOThhNDRhZGZhZTljMjM1MDkzYzdjZWIgbGVnYWN5LXRydW5rCisyMjEwIGMzZmEyZDFmMzAzNTg2OTllZTI0ZTJhNWMzYzAxMTY2MmY3NWMzNzYgbGVnYWN5LXRydW5rCisyMjExIGI5NDgyMmY1NDk5MTMwNGI1OGFkYmJlYTIzODY5Yzk4YjJmNmYzZmUgbGVnYWN5LXRydW5rCisyMjEyIGViY2I2MjZjZmRkZmI5ZjFjN2IxODY3OGFjYmVjNDRlYjk3YWJiZDcgbGVnYWN5LXRydW5rCisyMjEzIDFiMzEwNzdhYzY0MzA3YWI1NDU1MjY1MWFlYzY3ODc4ZDgwZDBiZDcgbGVnYWN5LXRydW5rCisyMjE0IGExZTUwYThmNDJlMjNjZmFiNjRiZTNlOTlkOGE1MzM1ZWEzM2E5YzUgbGVnYWN5LXRydW5rCisyMjE1IDQwMmY1NzA4YjEwN2IwNWY4MTFlNWY4NTQyODQyZTcxNzk4ZGE2YzkgbGVnYWN5LXRydW5rCisyMjE2IDdhMDFkYmNlZTliYzAzMTJmNWEzMTdmYjI0Mjk5NzUxZTc4ZGRkYzIgbGVnYWN5LXRydW5rCisyMjE3IGE3ZThmYjdiYjZhMjhlYjEzYzA1NmYzYzYyYTk2Y2FhYzVmNjQ0ZDQgbGVnYWN5LXRydW5rCisyMjE4IGExYzJiNGZhZDEzNmNmYjFiMjIzMTUwYTQ4YzM0ODBkNjNlMmRlY2IgbGVnYWN5LXRydW5rCisyMjE5IDQ5NzVmNzk5MGIyYjM1YzcwZDIzNTA1ZWNlYTVjMjBlZWZjZDFlZDggbGVnYWN5LXRydW5rCisyMjIwIDQzM2Y1MmQxZDk1ODc3NjcwM2E3M2U4MGU1NTZiZWViMGU0N2Y1NDMgbGVnYWN5LXRydW5rCisyMjIxIDRmNTkzYjM4ZDA2MTU1NzlhY2FkNGMzYzljYjM1MGViNjAwZGRjNGUgbGVnYWN5LXRydW5rCisyMjIyIDVjNGRkOTM0OGU4MTEzMzIwYzRmN2I0ZTk4MzNmMzIwNWRmMThiODAgbGVnYWN5LXRydW5rCisyMjIzIGZmZmQxMjg2Yzg4MjY3OTM0ZDc0ODZlNGM0ZTQ2N2Q1N2IwODY1OWIgbGVnYWN5LXRydW5rCisyMjI0IDYxMzExNTA2ZjJjZDA5YmFkZDhiNzk0NTZhZjk3ODkyMTRlY2IwZjQgbGVnYWN5LXRydW5rCisyMjI1IGEyMmRmNTJkNzc0OWEzYThjMDc3MGE4MjEzZGU0N2IyY2E1OGZlY2YgbGVnYWN5LXRydW5rCisyMjI2IGE3MmMwYTdkYzk5M2FhZTA1ZTcwODVjZDM4Njc4YjlkYmJlYjE5ODEgbGVnYWN5LXRydW5rCisyMjI3IDQ2Y2IxNGFlYzEwYThkNmUzNjY1YjcxODgwNzBiNjdlODk5YWQ2MzYgbGVnYWN5LXRydW5rCisyMjI4IGY5OGU0MTcxMWQxNzc5MDBhOTZkNTc0NWJhOTBjYzg4YmQ4MmQ3ZDggbGVnYWN5LXRydW5rCisyMjI5IDM2NTAzNzM2ZmRjMjM5MzQwNmMwODYwYzgxYTIwMjIyZDczY2VlNTkgbGVnYWN5LXRydW5rCisyMjMwIGNjY2Q1MzRmMjI4MDc0ZjI2NzQ4NDg0MjIxZDY5ZjJlZTc1MmYyYjMgbGVnYWN5LXRydW5rCisyMjMxIGEzNmMzNDhhOGUxYTI5MTVkNjliN2RkMjAyMTYzZmRiN2U1OTZjODggbGVnYWN5LXRydW5rCisyMjMyIGFjNDUyMmU5OWNhOTQzNzdhNjVjNjZjZmRjMjY2ODRmYTBmZGZiZWIgbGVnYWN5LXRydW5rCisyMjMzIDVlOGEwYjQwYTRiZGYxZTgzYzVkMGJmMzhlZmM3NzQ1YjA2ZWY4ZDQgbGVnYWN5LXRydW5rCisyMjM0IDMwMjhhY2FhNTZiMDVlZDBlMTFlMTU2ZTgxYjVhMDY3MTkxNWNiODYgbGVnYWN5LXRydW5rCisyMjM1IGJjMjQ0ZGYyMDI1MTZiNWE1NTUxM2U0NjNiMmY2MzdkMThmNTgwNTUgbGVnYWN5LXRydW5rCisyMjM2IDg1ZWVkMDYwYTQ2Y2UyNjY0OWZkNjgwMmNmYmQ1ZWVjNjE5MTA2ODggbGVnYWN5LXRydW5rCisyMjM3IGVkZTg2Nzk5NzA1YmExNGJjNDAyMTM1NzFkZmUyYTFkNWY1NmU5MDcgbGVnYWN5LXRydW5rCisyMjM4IGY3MmUwYzYyMzY5ZTI0Y2NjMGVjZGFiNzkyYzk3YTIxYjIzMzJiYWQgbGVnYWN5LXRydW5rCisyMjM5IGIxZmI0ZTFmNmU1MTZkMjgwYzU1NTAxYjIzNDQ0OThjYTYyN2ZlYmMgbGVnYWN5LXRydW5rCisyMjQwIDZjNDNlNTQ3NmRlNjkwNDEyNjk5YjNiZGU2YjUwN2IxYzQ4ODA0YTYgbGVnYWN5LXRydW5rCisyMjQxIGY0NzEwMWRjM2MxODhmMjRmOWI5NzA1ZGIzYjY0ODkxOTE0YmRiODIgbGVnYWN5LXRydW5rCisyMjQyIGRlMzRmNGE0ZDM1M2I5ZjVmOTkxYWFjYTk4YzgzZmFhYzY4MWM2ZjUgbGVnYWN5LXRydW5rCisyMjQzIDU1NGFjNjU5YjJjYjk1MjRlZjRmOTZlYzI3NTZkYzRjYTBmYTBmOWIgbGVnYWN5LXRydW5rCisyMjQ0IGY2YmNmM2MxZDcxNGU3ODc1MzU2Y2ExMmMzMmVlNWY5NzVmNGVkOGEgbGVnYWN5LXRydW5rCisyMjQ1IGE3OWNiYjI2NTViYWFmNTRhZGRjMjIwMzM1MDAzNjQ3OWJkY2I3ZTMgbGVnYWN5LXRydW5rCisyMjQ2IDA2YzkyZjQ5MWY1ODhlZDlhYmUwZjJkNGYxNTEyMDY5YTMwYzE5MDEgbGVnYWN5LXRydW5rCisyMjQ3IGE2OTM0MzgwYzZlNzliODdmNzc2MmIxZDk0MzNkMGUwYTg5Mzc0NTIgbGVnYWN5LXRydW5rCisyMjQ4IGVmMjQ0MGYyNGYxMDJjNjc3YTAyZDQwNzk4OGRkODVmNWRhNTBjYWIgbGVnYWN5LXRydW5rCisyMjQ5IDE2ZThjNWQxNjQ5MzVmM2M2YTk4OWVlZWFkZjIyYjBhYjRkYzIyZWEgbGVnYWN5LXRydW5rCisyMjUwIDU4NDdkZjEzOTkxZGU2YTgzNjQ4NDEwNzU1M2Y0ZTljZWNjYThhMTQgbGVnYWN5LXRydW5rCisyMjUxIDVjYjg0M2JjODdmYzA4NjU0NmZhYmY2YjhlYzAzZWVkMzFlMjBhOGYgbGVnYWN5LXRydW5rCisyMjUyIDVjMzU3ZDM3YjMyNzMxYzhkMDIwNDU0OTcwMjA4NThjNzljNTcxMzkgbGVnYWN5LXRydW5rCisyMjUzIDAwMjA2NmE4MzljNTFjYzE4NGEwYzZlNjY5ZWM5ZDYzNDIwY2RhNjcgbGVnYWN5LXRydW5rCisyMjU0IDllMDUxZmM3MDczZTc3YjllMTUwMzRhMTllNTQ3ZWZlMmI4NWM2NmEgbGVnYWN5LXRydW5rCisyMjU1IGRhYzg2MjVjOGQ5YjAxNDE3OWNkNTgzMzU4YjRkMGU0ZTI1MDI1NjcgbGVnYWN5LXRydW5rCisyMjU2IGE1YmY3ZDU5NTljZTA1MGYyYjA1MWMxMmU4MTgwODk1ZTdlNmQ4YTkgbGVnYWN5LXRydW5rCisyMjU3IDI3YTViMDhjM2U3NDJjNjJhMTViNjgxNTZmZTBkNDg4YzA5NGFkNDIgbGVnYWN5LXRydW5rCisyMjU4IDZiNzVmMmEzMDAwZDQwNjUxNDZiMmRhZmU2ZDgzZDMzMDcxZThkMzUgbGVnYWN5LXRydW5rCisyMjU5IDQ1NWQ2NWExMWIxM2VkMzc3OTJlMWY0ZmZiZmUzYmNkZmFhNzgzZWUgbGVnYWN5LXRydW5rCisyMjYwIGUwYzhlZmVlNzZiZDgxNTc4NGM4MTNjNjZhMmExMDQ2ZTVhMGJmNWEgbGVnYWN5LXRydW5rCisyMjYxIGFkMTRhYThhMjk4NDQzMjM4NGY3YWYyMWQ0NTJiZTVhYWJhNmYxOGYgbGVnYWN5LXRydW5rCisyMjYyIDA4ZTU1ZGI2Zjc5NmEyNzZlY2QxYzE2ODNhNTAyYmFmZDcyNDc4NzIgbGVnYWN5LXRydW5rCisyMjYzIGYyY2FjYjkwYzkxN2M4ZDI5Mjc5OTRjYzI0MzEyYTYyMWRiMTNmODMgbGVnYWN5LXRydW5rCisyMjY0IDEyMjliYTEyNGUwYmE4ZWNlOTIyY2UxNGMwZjRhYWJkYmRlMWQzZjAgbGVnYWN5LXRydW5rCisyMjY1IDRlYzhjMjYzYWI0OGI0OWQ3NzI3MDExYzRhODZjN2IxMDliMGZhNTggbGVnYWN5LXRydW5rCisyMjY2IGI0ZDVmZGNiZjgzYzY4ZjkxM2FmNGMxNzVhMTQzYzhhYmY3NzVmZWYgbGVnYWN5LXRydW5rCisyMjY3IDY0MzczYzc5YzA5OTk5MGNiNjkyNjJkMTgzYTQ1ZTRkYmZmNDI4NDIgbGVnYWN5LXRydW5rCisyMjY4IDFlMDA3ZGNjYjI3MDliMDgxMWU1M2JmMDdjN2I4Nzk3OTFhYzk3NzQgbGVnYWN5LXRydW5rCisyMjY5IGFlOWIzNjZjNTc1ZDU1N2U2ZjgwNmYwZDE2ZTU0Nzg1NzE3NTRjMWIgbGVnYWN5LXRydW5rCisyMjcwIGY2OTQwMzZiODU2MWViMWIzY2I1OWVmMzY4MGQ3ZTk2ZGRmZDcxYTAgbGVnYWN5LXRydW5rCisyMjcxIGU0YjFkOWU2OTgwYTQzOGY5MDJlZWY5MDAzNjhjMmU2YTJkNTBhNjQgbGVnYWN5LXRydW5rCisyMjcyIGQwOGY3NTJiNTZjMDYxNDZkNWJhY2ZiMmVmNzZjMTAzNmEzY2RjNDkgbGVnYWN5LXRydW5rCisyMjczIGQ4YTFiNjQ1NjIxMmIyOGI2MTI2NGRiMDJkNjViMmM1ZjZkZTcyYzggbGVnYWN5LXRydW5rCisyMjc0IGQxNjk2MTE2NzM2NWZmZmY4MTdiYjhlNjhhMjExMWZlNTNhNmNjNTggbGVnYWN5LXRydW5rCisyMjc1IDFlZmI4ZWQ2YWZkMzNhMDA2YzUyOTlkM2E0MTVhY2UxMmM5ODZhODkgbGVnYWN5LXRydW5rCisyMjc2IDQwOTRiNDZmMDRjOGVhZjMyNWIzZDU5OWU3MzJhNWJmOWE4YzNhN2IgbGVnYWN5LXRydW5rCisyMjc3IDBhMDJjYTlkY2Q2ZTAyMmYxMGExY2M1NTM3Yzc4YWE3MTMyNGEzMjMgbGVnYWN5LXRydW5rCisyMjc4IDc4NzMzYzFjNmUzNjE4N2FmNTdmNGVhMjUxNzBhZDA3ZDA4MTBiYjggbGVnYWN5LXRydW5rCisyMjc5IGE4MDkwMTNjMmFmMWVmM2ZkNjlmZjUxYjQ5YzI1NjNhZjdjMzI3MDUgbGVnYWN5LXRydW5rCisyMjgwIDlmZWUxY2E2YzhmZWQxNTc3MGNmMDZmNDE4NzVkZmZhZTlhZWQ0MmEgbGVnYWN5LXRydW5rCisyMjgxIGM5YTVmZTE2NjBmNTE5ODVlMjY5YmU0OTI5NDY0ZTVjNGVhMmU1YWQgbGVnYWN5LXRydW5rCisyMjgyIDBjMjVmYWY0YTZhNDQ1MDg1YzRiN2E5ODViN2E0MzAwYzkzOWNmNzEgbGVnYWN5LXRydW5rCisyMjgzIGIzODAzZmQzY2IyYzhkOTA5MzEzNmY1YTFkMmVjNTBmOTgxYjQzMTIgbGVnYWN5LXRydW5rCisyMjg0IDIyNzI3YjQzNzgxZTdjNTNkYmRjZjUyZjM4YWJmZDA5ZDZkMDgxNGYgbGVnYWN5LXRydW5rCisyMjg1IGE4ZDAzM2M2ZmI1NGEzZWVhODBkZTBhMjk1MmNmNWE5ODBiM2Y4NDcgbGVnYWN5LXRydW5rCisyMjg2IGY3MWQ2YTA5NmIwMjE4YTI2NzI3YmRhMGQ0ZDNkNWFjYmYzNTIzZGIgbGVnYWN5LXRydW5rCisyMjg3IDI3Y2MwZDgyMzc2NjNiNzVkYTM4NzE1NDZiMjAzZjU2ODVhNDdhNDUgbGVnYWN5LXRydW5rCisyMjg4IGQyMTRiNWQyMWRmOGM1YWNlY2VlZTU2YmUxNDgxODQ0NWY4MDk4MzMgbGVnYWN5LXRydW5rCisyMjg5IDNiZWQ3NmNkYWMwYzQ2NTVjZjgwMjViYTYxMjIxZjNlY2NkN2I2OWYgbGVnYWN5LXRydW5rCisyMjkwIGVmZDkwMDQ5N2Y0Zjg3ZDcxN2QxMzdkYjU4YWY5OTVkNmEwM2IxNGIgbGVnYWN5LXRydW5rCisyMjkxIDhmMjE0ZDYxN2FjYWI4MGYxNjY3YzEwMmI2ZmU4NWY2ODBiY2UwZGIgbGVnYWN5LXRydW5rCisyMjkyIGFkNGM1YTVlZjBmZmVlZTliOWFhODg1YTQxNmUwOWZhNDQ5MjUxYjAgbGVnYWN5LXRydW5rCisyMjkzIDY1ZWRkZTAyMmQ3MWVlMzgzYjBhNTQ2YzcyOTdjOTM4OThhNmUxYjEgbGVnYWN5LXRydW5rCisyMjk0IDA2ODg5Njg1ZWI2MjAxZDI0ZTkxM2I0YzA1NGMxZjIyNzRkNGQzNWQgbGVnYWN5LXRydW5rCisyMjk1IDVkNWM5YjJkYTU2MjIxODJjYWZjZjE3NzdiOGFhNzZjNzBhYjc2MjAgbGVnYWN5LXRydW5rCisyMjk2IDI2Y2NiYzNlNDFjNDYxYWQ3OWE0MmUyMDEzMzljYjlmOWEyZDg5YzcgbGVnYWN5LXRydW5rCisyMjk3IDY1MjNiZDI5NTRmMDQzNmZiOGY2Y2I0YWFhZmEzMDA1MDdlM2FiMjcgbGVnYWN5LXRydW5rCisyMjk4IDgyZWY5NGI4YjkwMmUzNDk0YjM4NjAxZDE4NDRiYjk1OWRlMzE2NzcgbGVnYWN5LXRydW5rCisyMjk5IGJiMjQ5NDg5NTdlM2NhOTY4NzZlOTAyZWRiMjkwYWI0NjRiYTZiNmUgbGVnYWN5LXRydW5rCisyMzAwIGMyOTRhOGNhZWJiOWJiM2VlOWY4OTJhMzcyZDY0NTc1MDcwNDZmNTMgbGVnYWN5LXRydW5rCisyMzAxIDNiODAyM2IwYmI0OGIxMDY2ZDRhMzM0MDczMTczMDRkMzcyOWUzOTEgbGVnYWN5LXRydW5rCisyMzAyIGJmNWE4NTM5ZDhiYTdmNzRmMDM0MjJjNWI0ZjY2OTA3MGZiOTY1MjEgbGVnYWN5LXRydW5rCisyMzAzIGM3ZWE2MDQ5MWU2ODFlOWI5MWY3NmEwMTJjNGRjOTQ0YjVmZmYyZDggbGVnYWN5LXRydW5rCisyMzA0IDE4NzBkODJkZTA2OTlhZmJhODlhMTk0NjZiMmY5YzM2NTFiNGNjOWEgbGVnYWN5LXRydW5rCisyMzA1IGM3MGVlZmU0ODAyOTBhMWQ4MGQ5ODdhMmZmNTk5YTBlYWNiZWI5OTAgbGVnYWN5LXRydW5rCisyMzA2IDg1M2I3MzZhNmE5ZWUzOGUzMzAxZDQzMGMxNTJhZTc1OGUxNjFhNDAgbGVnYWN5LXRydW5rCisyMzA3IDBmNTk4OTkzZDk5ODZmNGFlNGU2ZGQ5YTM0OTFkNTA5YjMwOThlODMgbGVnYWN5LXRydW5rCisyMzA4IDM0OTlhZDg3ODM5YWY3YTFhNGY3MWMxNWY4OWQyMGFiODRjNzhlNzEgbGVnYWN5LXRydW5rCisyMzA5IGEwYzVmMmFmMmUwY2FkNWM0ZDRkZTRhODkzY2E1YTVmZTdjZTdkNDEgbGVnYWN5LXRydW5rCisyMzEwIDYxYzUyNjBjMzY0ZjI2MGU0YzljOWM1OWQ3ZjlkMmE3ZDQ0MzZhMWMgbGVnYWN5LXRydW5rCisyMzExIGM2NWViYTgxOTRjN2I0MDNiOWU3MmVhYWM0NTBlMmRhZGFmMjAzNzcgbGVnYWN5LXRydW5rCisyMzEyIDlkNGM3ZGUwZGVmNGZlNjdlZjVhZDU4MjQ0Yzc2OTliNTE4OGJhMWQgbGVnYWN5LXRydW5rCisyMzEzIDFkNDA5NGM3ZDU4YjhjNzMwZjAzNGIxYjMxMzY1MTg1NjI5ZGE1NjMgbGVnYWN5LXRydW5rCisyMzE0IGU1NzY0YTBkMmQzMjk5ZGE2NjE0ZWVmMTkyMmM3ZjQxNzc2NjVmY2UgbGVnYWN5LXRydW5rCisyMzE1IGYyZWZjZWFmNzNjYzlkOTk5YjhkZjUzYmZmN2NkMjE4YTJlNjMyNDMgbGVnYWN5LXRydW5rCisyMzE2IDg5NmM4MjVmMmY3MWJkZDJhYzBkZjEyYjVjNmZmMTc5ZTA2Y2RhMjUgbGVnYWN5LXRydW5rCisyMzE3IDQzY2FiYWM1MDIzZDJhYzI3ZjVjOWEzYzgzNWYxYWM2NjhjNDM2ODMgbGVnYWN5LXRydW5rCisyMzE4IDQ3Y2MwY2U3OTk5Yzc4N2Y2ZTk0YmQzYTAzZTE5YzA5MDIyMjQ4ZmUgbGVnYWN5LXRydW5rCisyMzE5IGM4NjU5ZjhhNWY2Mzc4NGM1YWZlNDAwZGMxN2I1ZmMxOTJkMDAxOTUgbGVnYWN5LXRydW5rCisyMzIwIDQxZjNjNjZiMTBmZDBhNjVjYWJjNDhiZmExYzZhZWIzMjBkNDEzNTUgbGVnYWN5LXRydW5rCisyMzIxIGFmYTQ4YTk2YTQ0NDNjYjU4NTcxMzg3OTllMWQwOWM1ZGM0YmFkNjggbGVnYWN5LXRydW5rCisyMzIyIDI1YTdmYjQ0ZTI5Nzg0NDk4MTIzNTRjYjA3YTJiODYyYWYzMmNlZTIgbGVnYWN5LXRydW5rCisyMzIzIDc2MTg2OTc2NmU0NTI4ZTY4ZjFkMTE0NjA2ZWJjOTFlZWM4YTRlZmEgbGVnYWN5LXRydW5rCisyMzI0IGVmOWI0YmU1YTNmZWExMDI5YjMxYjUxNTQyNDY5ZGUwYjI2OGRmMGIgbGVnYWN5LXRydW5rCisyMzI1IDdjZTkxY2ZiN2FjNDUxMmQ0OTA3NzNkODE3NDkzNzVhOGJjMzI5ODIgbGVnYWN5LXRydW5rCisyMzI2IGE0NTQ3YWYyOTY3MTFiYWE3NDM3NzIyOTJjNzQxODRjOWQyNzg1YzkgbGVnYWN5LXRydW5rCisyMzI3IDI4OTIzZTQ0MjU0Y2ViNzY3ODk3ZjQ1ZGRlZGU1ZTIyOWVmNTRlZDMgbGVnYWN5LXRydW5rCisyMzI4IDNmYTJiMTRiZTI3MDkxMTkwNzlmN2E2YzYzMGU1YjEzNWQ1ZGU5MDUgbGVnYWN5LXRydW5rCisyMzI5IDY1ODVhYWJlMTk2OGJhNTYxOGYxOGVhMGM5ZGExYzk3ODhiMzQ4OWYgbGVnYWN5LXRydW5rCisyMzMwIDFlZDdmNmY2NTk4MzcxZWJkMjM1MGUxNjgxMDgxYjI2N2FjMzAxZTYgbGVnYWN5LXRydW5rCisyMzMxIGVlMGEzMmZkNDU2Nzg0OTVhYzAyMzNjYWFmNmVlY2QwYzg4NGU5OGIgbGVnYWN5LXRydW5rCisyMzMyIDBjZWUwMWI2OGQ5YzgyNGQzMzMyMmUzNjAyNGEwMmY0YTc1ZTdlMTAgbGVnYWN5LXRydW5rCisyMzMzIDVjZjNjMzZkMDJlYTRjYWIyMzFjMjk5N2VhYjI4ZmUyYzcyNmIxMWYgbGVnYWN5LXRydW5rCisyMzM0IDQ2NTY0NTI0MzZlMTljNDEyZTg4MDg4MzRlMzE4NWE5NjUwMDk1ZTQgbGVnYWN5LXRydW5rCisyMzM1IDIwZmVlNGUyZWVjZGM5NWVlMDBiMmVhM2NkMmIyZWU5NWI1ZTViNGQgbGVnYWN5LXRydW5rCisyMzM2IDA2Y2MzYjAwNjcxYzNlMjIxNTdlMjdlOGE3ZjZlODY4MmE3NmE4NDkgbGVnYWN5LXRydW5rCisyMzM3IDIyOTE2OGEyZmUyODZhOGIyNWQ4M2Q4MDU2M2Q3NWY0NjBhMjU5YTAgbGVnYWN5LXRydW5rCisyMzM4IGJkNDljYTZjNGFkZDI0M2M4OGEwOTQyYWJmNWYxM2NlZjEwZmMzZDEgbGVnYWN5LXRydW5rCisyMzM5IGZiNjM2N2Q1ZmY0NjQ5MDU0ZTg3Nzk3ZjQxMjIzNDg5MzA1OTEzYTQgbGVnYWN5LXRydW5rCisyMzQwIDBjMzU1ZTllZTg1NDU4YTFkMWFlZThiYWRlYWRiODJmNWFiYWRiNGYgbGVnYWN5LXRydW5rCisyMzQxIGE0MDVhMzEyNDJlN2M0YjRkMmVkMGU0NmJlNWY0ZjkwYTNkNzM4Y2EgbGVnYWN5LXRydW5rCisyMzQyIGE4MjM2MDJjMjI3NDFkNWFiOWM0NzhjNmY1YmQxOTE3YzIwNDE1ZWMgbGVnYWN5LXRydW5rCisyMzQzIDU5ZmZiNmQ0YjM0Yzc2NzNjYTc0YWZkYTgyYWVhNjNmZDRiY2VkNzQgbGVnYWN5LXRydW5rCisyMzQ0IGM5MTY4YWZlMjNkZGY2OWNkZjVmMDE2YzczMWVkM2M0Y2FiY2YwMTQgbGVnYWN5LXRydW5rCisyMzQ1IDFiMDhkZjQxNTg3Yjg1NWY0YzYyNWI5MjNiYmZmZDQ2Mjc1NGI1OTQgbGVnYWN5LXRydW5rCisyMzQ2IDMzNDY2MjY4YjYzNzFlYTVlOTNjOTMxZDBjZTMzNTQwZDVhZTJlOGQgbGVnYWN5LXRydW5rCisyMzQ3IDg5MTE1ZTc1MzRkNTgwZTBiOGQyNTgxYzhjMjRkMDA3OTFkYjFhOGQgbGVnYWN5LXRydW5rCisyMzQ4IGY0N2Q1ZTllYTI2NGVmOTNkMzVmZDliNDE5NDhjZDE0MmJhNzBkNDcgbGVnYWN5LXRydW5rCisyMzQ5IGQ4MTgxOGU2MjY3MWE2M2U1NTUzYzk5OGNjNjFiZGZiMzU5MTM0NmEgbGVnYWN5LXRydW5rCisyMzUwIGZmMGRhZTFmNGRiNjI1YmYxMzFiZWI3YjZjZjczZjEzYWU1N2M1ZmEgbGVnYWN5LXRydW5rCisyMzUxIGI1MGZhNmQ1ODc4NmRkYmQ0NzNkZWNkOTVlNjA1Yjg5ZTA0YmM0OGMgbGVnYWN5LXRydW5rCisyMzUyIDVmZmQzNzFiNzg0MWRlNjUwYzJiZmFjMTI3ZjA0MGI5ZmI3ODJhOTcgbGVnYWN5LXRydW5rCisyMzUzIDMyYWU0YTFhYWI2ODlhZWY4ZWUwOTBjNGMxODkxNmRhNzhlMjJmZGIgbGVnYWN5LXRydW5rCisyMzU0IDU3ZjNmZmM3YjFjNDA1NDI1MTk5ZWI3ZmMyZDgzNGQzODU3ODJlM2QgbGVnYWN5LXRydW5rCisyMzU1IDE0NWY5ZTE0NTk1ZjRiYzYyYjFlNzQyMDdjNmQ1OTYzNmE3ZTk3ZTEgbGVnYWN5LXRydW5rCisyMzU2IDQ1ZjQzZjc1NWU1YzUzYmI0ZmVjYzg1OGE3NTU0MjNkODJlNThmODkgbGVnYWN5LXRydW5rCisyMzU3IDQ4ZmMwYjhmMzNkOTA5YjQ0M2ZkODBiODMzZWE1ZmI0YzU1M2VhNTAgbGVnYWN5LXRydW5rCisyMzU4IDQyM2JlODc2ZGNjZTYyMjU3MGM1NzkzMTk5NDk2NjgxMmQxMTQ4MzEgbGVnYWN5LXRydW5rCisyMzU5IDY0NjMxNmM5OTUwNzg4OGNlOTIyNmZlN2U2Nzk3ZmU3NjhmZTUzZjAgbGVnYWN5LXRydW5rCisyMzYwIDBhM2UzM2NmZDRhOTMzM2U5ZDA2ZDQ3NDYzYWVkZmJhMDY3NDBlOWEgbGVnYWN5LXRydW5rCisyMzYxIDlkMDE5NjVmNGY0OGFmZDU4ZTlmMmM5OGVjMzU1ZmRlNmI4NTY5Y2QgbGVnYWN5LXRydW5rCisyMzYyIDMxMGY4YzkyNDA3MzJlMGE3MzY0NzEzMzQ2NDM5YzZmNTFjMjk3ZWYgbGVnYWN5LXRydW5rCisyMzYzIGJmZmZjN2UwZmNjM2UxOTBhMTM1NTI4OGU4YWQ3MWFiMTNhNmM5OGYgbGVnYWN5LXRydW5rCisyMzY0IGNlYjM2ZWM2MTk4ZGYzOTljMTk5ZDdkMDE4ZWJkMTY0YmE2ZjY3ODcgbGVnYWN5LXRydW5rCisyMzY1IDNkN2RhNjE3NGUyZTU4NTNmYzUyZWNjOGRmYjVhODkwZDU1NDdkYzIgbGVnYWN5LXRydW5rCisyMzY2IDhmZmRhODQ2ZDc4ODlmZDk3M2NhOTAwNTI0ZTRjOTE3MTMxMzVhZWMgbGVnYWN5LXRydW5rCisyMzY3IDNjYzU0OTcyYWI1MjMwNmFmNTk5MjdkNWJhMDcwMjJiYjY1ZDA0YTUgbGVnYWN5LXRydW5rCisyMzY4IDlhYjMyOTY5N2RkYTU0NzUwOTg4ODUyNDUzMGUwMjgwYzU0MjAwZmYgbGVnYWN5LXRydW5rCisyMzY5IGYzNTJlYTRkZmY3MDhiMWE3MmE5NWM0NWVkOTlhODQ4OTE4NmZhMTEgbGVnYWN5LXRydW5rCisyMzcwIGU0ODZjODQ5YzUwYzI1NmViYzZmMDkwM2E5NjllYTAzNmQ0Mzg5YzQgbGVnYWN5LXRydW5rCisyMzcxIDkxYTJmNDc0NTg1MjE4NDQwNWY2MmUxM2RjOWU5MmM1MDdkYzhlOTYgbGVnYWN5LXRydW5rCisyMzcyIDgzZjBhNzI0YTg3YzAxNjMwYTM5NmJhNTZhM2FiYTliZGJhZWY0NmUgbGVnYWN5LXRydW5rCisyMzczIGE3OTNjOWU4ODBjN2Y5MzU5ZjA2MzM4MDdkN2Q2MmQ1YWMwNzI0MGYgbGVnYWN5LXRydW5rCisyMzc0IDY2YjU1NzY2YmE2NThhNTZiMWVjNDFkZTljMmIxNjJiOGE4YjFiMTYgbGVnYWN5LXRydW5rCisyMzc1IGVkMDMxMWI4ZTc0MTkxODA3OWM3ZjUyNmFjZjI4MTc3NzYxNmI1NWUgbGVnYWN5LXRydW5rCisyMzc2IGY2MWU3MzY4ZGVmMmU5ZTVmNTU4Njg3YzlhYzE1ZmEzNGYwMGQxZjIgbGVnYWN5LXRydW5rCisyMzc3IDE3NTRiODAyNGI1NWQwYzM3ZmZlNmMxYWYzZWIwMWIzNzFkNmFlZGEgbGVnYWN5LXRydW5rCisyMzc4IDE5NTg3MjNiZmUwMjRkNmViNGE0YjBjNjZmMjljNThkMmIyNmFiYWYgbGVnYWN5LXRydW5rCisyMzc5IDM0MjljOTQ1ZDgxN2RiZDFlYzQxNWFjOTUzNmQyZDIxNGFiYTgyNTggbGVnYWN5LXRydW5rCisyMzgwIGExMDk3Y2QwMzM0OGVlODFiNjFjMDYwNDhjY2JhNmQ5YzI1OGNiNmMgbGVnYWN5LXRydW5rCisyMzgxIDFlZmY2MTExNTgyZTQ4ZTAwOTA2ODhmNDc1ZDE2ZGJkZDhmMjI3ZGQgbGVnYWN5LXRydW5rCisyMzgyIGVkZGE5YWFkM2U4ZjE3ZTJkOGZiY2MzMjdmMTdmYjZjMGVmYzc2N2IgbGVnYWN5LXRydW5rCisyMzgzIDI4OThkNzhmYTMyZGU3ZTA2YjBkYzFiNGUyYmE4YjMzODhkNTZkNWQgbGVnYWN5LXRydW5rCisyMzg0IDY2OTNjNWQ4N2YzYTA0OWQ5MDgwYWU2YzkwNGVkOWEyMzQ2OTEzYjAgbGVnYWN5LXRydW5rCisyMzg1IGU3MWI2ZmVjODZlNTk4ZmQzMDI2ZjdlZDYzMDhmYTM3MzBlNmE1ZWUgbGVnYWN5LXRydW5rCisyMzg2IDc4MTllMTYxNTMyMGI0MjA2MjMyZWRjMzdlYjg2MmJjNmY4NzNiNjIgbGVnYWN5LXRydW5rCisyMzg3IDdlODMxMTVlZGI2YWU2ZDMyNjRlYzMzYzg5NDMyYjNlZGEyZjAwMDEgbGVnYWN5LXRydW5rCisyMzg4IDdlYzYwNThiNTM5YjdlZDlmYTBjZjZiZTM3ZWRjZDE2ZmMxNjg2OGIgbGVnYWN5LXRydW5rCisyMzg5IDYzNGMxZDNjN2QzOTIzZjA0Y2E1MzRhYThmZjA3NDM5OTI5NjExYzggbGVnYWN5LXRydW5rCisyMzkwIDA4NTk3ZTJiNjNkM2Y5NDNjZmRlNmQyNzQzNDQ2NzVjNzI3YzNlMDQgbGVnYWN5LXRydW5rCisyMzkxIDdiYTk2MTIwNThhNDY5YjM0OTM5ZjQ4ODA3YmQ2ZTJjMjRlZTBmNjIgbGVnYWN5LXRydW5rCisyMzkyIGIzMWFiZjQyMGU2MWE3YTBhNWFhYjRhNzEyOWJhYTE1OGM5ZWVmMDQgbGVnYWN5LXRydW5rCisyMzkzIGFmMmU2NDAwNzY5ODE3YjM4ZWZiN2VkNTA1YWNhNmM4MWM1ODg5ZGMgbGVnYWN5LXRydW5rCisyMzk0IDhmNjJhNTQ1NzMxOWUyNjdmNDRiNmJlNTFlZjNiZTFkODBhOGVmM2YgbGVnYWN5LXRydW5rCisyMzk1IDkxNGM4M2NmYTVlMTA1Yzc5MTI0N2MzYThkZmJkMDgxNmNmNDQ5OTcgbGVnYWN5LXRydW5rCisyMzk2IDk3NzAxMTJlNjYwYTkwM2Y1ZWFjNjU3OGE4ZDU1ODgxNGY3NDhiMjIgbGVnYWN5LXRydW5rCisyMzk3IDBhOTJiNmExYjljMGFiZTg3N2I2MWE0ZTNiNDU4ZTFmZWI3YjY4YWUgbGVnYWN5LXRydW5rCisyMzk4IDE2ZjQ2NzcxN2Q3YWI3MDM1YTExNWFhOWQ1MTJlYjU5YzcwZjliY2MgbGVnYWN5LXRydW5rCisyMzk5IGZkODE2ZWQxN2UzNWYxNzEwZThiOTZiM2NjOWZiN2UwOTFkNTVlMTkgbGVnYWN5LXRydW5rCisyNDAwIGZkYTk3M2YyYTUxMmI5YTU2MjU3NTVjZTcwMWY2M2FlYjdkZWQyYjcgbGVnYWN5LXRydW5rCisyNDAxIDBhYWQzYTdiOTdlZjM1MjkxMzE3MTFmYzgxYWJkMzc3OTRhZmJlNTIgbGVnYWN5LXRydW5rCisyNDAyIDQxZTA1Nzg3MGE1MzU0ZWY1YjUyOTU2Yjg5ODkyZjQ0YTNiZjdkNzUgbGVnYWN5LXRydW5rCisyNDAzIDMxNmEwZDljMDA5NjllZDA2NmIwMjVjMDU0ZmRiMGQxYzQ0ZDY4ZDQgbGVnYWN5LXRydW5rCisyNDA0IDVmN2MyNGIzOTUzYmU3NDQzZWQ2ZjFlMzc5YjMwYjUzYmJkMGFlNzcgbGVnYWN5LXRydW5rCisyNDA1IDQ3ZWI4MWRhNDZkYzIxNjc3ZjE4YmMxZjUzYmFlZjIwZjQ0YmY1ODcgbGVnYWN5LXRydW5rCisyNDA2IDQzMTMzZDg4NWM0Y2M5NjMyMTE2OTllZDI4Yzk2NzkwM2UxNjdhM2YgbGVnYWN5LXRydW5rCisyNDA3IDk1NmZkNWMzZjA0MDc4MDE3ZGJiMjVmYjcwYjJhZDFhOGVhMWIyOGIgbGVnYWN5LXRydW5rCisyNDA4IDM1OWJmMTA5ZGEwZjdjNjEwMmMwZGRlOTBhNTk5ZTgxODhlYjFmNGQgbGVnYWN5LXRydW5rCisyNDA5IDllYjEzYzY3YWU2ZmY2YmVhOTJmODI2Y2U3YWYxMzVhYzBhZWI5YmIgbGVnYWN5LXRydW5rCisyNDEwIGJhYjFmNTQ5NGI4ZWRkY2RkMWU3OWQ3MTc5NGM0ZjNlMDgzYzMyNjggbGVnYWN5LXRydW5rCisyNDExIGI5OTg2MDA5ZDdkYzRiN2MyODkwNTRhODlhNjg2Y2RhMmZhNmVkNzcgbGVnYWN5LXRydW5rCisyNDEyIDQ4ZDU4Yjc0YTNhNDdhYmNjNjE2YmNiNjM1OGIwOGQ0MjUyMjU5YTMgbGVnYWN5LXRydW5rCisyNDEzIDY4MTE5MTJmNjcyZDg5NDMzOTEzMmI2YjhmYzg2ZGNkNTkwY2EzNzMgbGVnYWN5LXRydW5rCisyNDE0IGQ0ZTUzMmVlNmYzZDE4N2MwN2VkNTdkNDQ3NTliNDA0MGVjY2MyMzcgbGVnYWN5LXRydW5rCisyNDE1IDcxYjBiZDVlZDE2MjA1YjIxZDQzNmE2Y2JmZDQ4MTJmMTZjOWY5YWQgbGVnYWN5LXRydW5rCisyNDE2IDg2MDRmOTAyOWNkYTNkNzE3YmVjNjQxMjY2ZWM3MDRjOGYzNjllMjAgbGVnYWN5LXRydW5rCisyNDE3IDNlYWIyY2Y1ZTRkZDUxY2ZjYzQ0OWRmNmU0YzA5OGRmOWIwY2Y3ZDQgbGVnYWN5LXRydW5rCisyNDE4IGE0NjU1OGFkMGJlZGE5NThhYzVjMTcwMTE1NmU0NjkxOGMwYzcxZDQgbGVnYWN5LXRydW5rCisyNDE5IDNiOTNiY2VhMTBmNmRmODY5MTgzODM1ZTg0Y2ZmNWJmYzU4Nzc4NGEgbGVnYWN5LXRydW5rCisyNDIwIDYzMjFkM2RjNTdlMGMxODkwYTZmNjIyYzUxZDM5ZjQwYWZhY2E2NGQgbGVnYWN5LXRydW5rCisyNDIxIDI2YjJlZWQ3ODM4MTQ4ODA3NDEzMzBkMGQ2YzJkMWI4YmUxMTRlMDQgbGVnYWN5LXRydW5rCisyNDIyIGY0YTk0NGU5ODM1ZmE5MzJmMTQyNjg1YTdlMjQ0ZjZkMjk5NDcxMTQgbGVnYWN5LXRydW5rCisyNDIzIDZhY2Q0MWE0NWQ4ZGE4YmIwZjNhNTZmYmRlMGY4YzY2ODI2ZDAzZDkgbGVnYWN5LXRydW5rCisyNDI0IDI4ZjBmZmQ5ZmFjZmI5OWFjNTk1OGM3OGUwODNjZTIyNjYzODA5MTcgbGVnYWN5LXRydW5rCisyNDI1IDcyZDFiODliZTM1YWUyMmJiNmFlYTUzYTM3ZDM4NDQ4NDYzM2NmNDggbGVnYWN5LXRydW5rCisyNDI2IDE4N2JhMTczM2IxNzgxYjRiZjVkOTdhNGQ0ZmIzMzQyNTU1MGQ4OTAgbGVnYWN5LXRydW5rCisyNDI3IGI1ODI2YmYyOTY3NzZlYTBmNDNhOTUyMTA0ZDExNDk4ZmYyNGFkNmUgbGVnYWN5LXRydW5rCisyNDI4IDQ1NzY2MWU0N2M3YmE5YjZkZDkyNjUzZjdiNDdkN2FjZmE5NDIzYTUgbGVnYWN5LXRydW5rCisyNDI5IDBmZTI0NzExNjZmMDUzYmY3ZjZiMWIwMTMzZDM5ZDhjMjZlZmIyM2YgbGVnYWN5LXRydW5rCisyNDMwIDc0NWE0NjYxMTk1N2Q2YjI0NTQ3Njc4ZGUzYTFlZTBmNTIzZWNlNjUgbGVnYWN5LXRydW5rCisyNDMxIGFkZWQyMDhhZGY2YzYyODVhODNlOGU0M2JjNTkyOWVkMDRlNDJjM2MgbGVnYWN5LXRydW5rCisyNDMyIDBiZjAyZTFiN2Y1MWRlNmM2NTBkMTg5ODU2NTJmZWRiY2EwZTlhMTAgbGVnYWN5LXRydW5rCisyNDMzIGYwODU3Y2U3ZWQ0ZmFlNDA5ODVlMmRkMGQyMTYzNzZmZmZmMzA3YzYgbGVnYWN5LXRydW5rCisyNDM0IGFmMWM4ZjVkMGIzN2Y5MzFiZDE3NjFiODkzZDc3Y2YzYTk1ZTA1NjkgbGVnYWN5LXRydW5rCisyNDM1IDEyYTY0MTE1YTRlZWJkYTRiOGNjZjkzZjMyMjE2YjIyNzA3ODRhOTYgbGVnYWN5LXRydW5rCisyNDM2IDgwMDAxYzAyM2IyYjI2ZmFjOThjMjk0MGYzMWE0NmNmMmY1NGJlOTggbGVnYWN5LXRydW5rCisyNDM3IDEwNzhjZDI3M2I0MDQxYjc5ZjEyZmI0MTlmODU3NDliN2RmOWJmYmIgbGVnYWN5LXRydW5rCisyNDM4IDUzYzhkNzYyZjNhODNlMjAzYTVlYTAxMjEzZDExNWM1NTNkM2ZiNDAgbGVnYWN5LXRydW5rCisyNDM5IGFmOWE4NjM2ZTRhODc3ODc0NzE0MTA5MzQxNTIzMTQ3MmI3ZjljNGUgbGVnYWN5LXRydW5rCisyNDQwIDljOTI0ZjljM2IxNjk0MzI4N2FhNTZiYmQ5ZWZjZjMzNmExNjU0NmQgbGVnYWN5LXRydW5rCisyNDQxIDcwMmExMzlmYTI0YjQ5YTg0YTUzMDEyMjlmMzBjMGUwOTBhMjExYWYgbGVnYWN5LXRydW5rCisyNDQyIDZkZmM5MjYzMDEyMzQ3MGEwNDQ3Y2ZhZDdiYWU3OWQ5MDAyNjQyMTIgbGVnYWN5LXRydW5rCisyNDQzIGQ1YzlhZTQyMmI0MTAzNjZkNWQzMDE3NzRiNjJkNzc1OTZiYmI1OTUgbGVnYWN5LXRydW5rCisyNDQ0IGVkMDE2MjU1ODkyOTMzYTlkZTJlMWNjYmRkNjMzZTdmNDJlZTMxMTIgbGVnYWN5LXRydW5rCisyNDQ1IDZhYzQwMjAyM2NhYzVlYTlmMzc1ZjQyMjVkNTFlNGQxZjM5NjZiZDggbGVnYWN5LXRydW5rCisyNDQ2IDg1YmQ3ZGFjMTNmM2FlYzhmY2YyNDFhODQ0YTY0NzQ0MmQ2ODUzNjUgbGVnYWN5LXRydW5rCisyNDQ3IDM5MDVkYTZjNGE4YmYxNDU3YWJiMGZkZGNlMThkMmVhMDM5NGM2ZWYgbGVnYWN5LXRydW5rCisyNDQ4IDA3ZWZkYTI5NTFhODdmMWY5MDIyMDViMGJkOGUzMTkwYjM5YjdkMDYgbGVnYWN5LXRydW5rCisyNDQ5IDliNDNhOTgzMTI0YzEyYzY2MjhkMjM0MzMzZDgxNzcyNTNiNjllNGUgbGVnYWN5LXRydW5rCisyNDUwIGM0YzI3OGM1NmU5MDAwNTMxM2IyNTFjNTlhYmFlODMxNzMwMjg2YjcgbGVnYWN5LXRydW5rCisyNDUxIDY2MzdlZWUxYzRmODQyMmQ3NjNkY2U4NDhiMzFhYzgwZTI5NTdjMTUgbGVnYWN5LXRydW5rCisyNDUyIDA2Nzc0YTk0YWJiNWJkNzM2NjFmMzE2MTExMThlMTIwYmUzNWY2MTMgbGVnYWN5LXRydW5rCisyNDUzIDYzMDg1ZjdiM2RiNWFkMmJjYWI2NTA1MzFjMjdjOGVhODIyYWM0YzMgbGVnYWN5LXRydW5rCisyNDU0IGY5MDBiNjkyYjM3ZTQ3MDE4ZDU1ZGIzZDk3YWVmNGNjNmQzYjBjYzcgbGVnYWN5LXRydW5rCisyNDU1IDg5MzhiMzEzMmNhYTkwMzhhMDZiZjY4NWI4MzI4YWNmM2EyMmVkNWIgbGVnYWN5LXRydW5rCisyNDU2IGQ3YTM4ZGVjZTg2YTgxODJhNGVkMzI0NDUzMTNiYjNlMzk0MDVjMmIgbGVnYWN5LXRydW5rCisyNDU3IDdhMzVkOTg1NzYzYjIxZjk1OWUyZDE2YzhhZWNiZWJiNWVjZDU1NWMgbGVnYWN5LXRydW5rCisyNDU4IGFiY2NiMGY5ZjczNTliYzI5YjZiZGRiMjljZGNkMDJiMzdmMWViNzAgbGVnYWN5LXRydW5rCisyNDU5IDdmODc1NmZkNjQyMjBlM2QxMDY2NTEyNWQ2ZWYyZTI5YjhhNTBlNTggbGVnYWN5LXRydW5rCisyNDYwIGY3MDkwZjU4MTRjMjI3NjE5ODkxN2ZkODY1YmU2NzE1NTM1NGY4YzggbGVnYWN5LXRydW5rCisyNDYxIDA5ZmI3OWU3YmFmN2FlN2UxMGVhZGQxMjE4YTQ0OThhNjkxZDBhNjYgbGVnYWN5LXRydW5rCisyNDYyIGMyOGZhYmUyMTE2NTQ0NTg3OTg3ZDNjNjBmMTQzMDZjN2I5OTcyYWIgbGVnYWN5LXRydW5rCisyNDYzIGQxOWE2NjU5MDRkZjU3OTQ4MzdjNTE2NDg3OTdlOGNhYmVhZWJjMzIgbGVnYWN5LXRydW5rCisyNDY0IDE0OWRkMTIxZDBhNmI0ZWI0MDM0MGNhOWYwMDQwMTJjN2YzYTdkZmIgbGVnYWN5LXRydW5rCisyNDY1IDMyMDFiNzU2OTVlZjI4ODNlZmQ0ODY0ZjQ3YTBmM2FjNTI3YTg2ZGIgbGVnYWN5LXRydW5rCisyNDY2IDZiOTNkNGNlOGRjYjk4YmY1OGEyZDhlOTBiOTM3MTNlMTY5OWEwZGUgbGVnYWN5LXRydW5rCisyNDY3IGM4YTk3OTAyOWRmNDFkOGFjMTIzYjIzZTUxMzgwYjcxY2E0MjUyMDAgbGVnYWN5LXRydW5rCisyNDY4IDM1YTI1MjhmOGE3M2Q4NmZkMzhlOWJiYTAzYzE3Y2FjYjNlMDdhMzQgbGVnYWN5LXRydW5rCisyNDY5IGFiY2Q5MTU5MzAzNTc3ZmJlZmJmNDY0ZTMxNjUwYWMwZmVhNDIzMTUgbGVnYWN5LXRydW5rCisyNDcwIDM4MjMyM2Y5MmZjZTVmZDA0ZWM1MDYxODNmMDJmODQxZmEwZmRlNDggbGVnYWN5LXRydW5rCisyNDcxIDcyYTAyNjg0MjBkMDY3NGUyYThkMGRkNjU3YTY0NmVkNzA0YThmNDEgbGVnYWN5LXRydW5rCisyNDcyIDYwNWUxNzJiYmI1NTc0NjQyODc4MjNlNGU3ZDQ2ZjM4N2ZlMjBhZjEgbGVnYWN5LXRydW5rCisyNDczIGFlODk0MTFmNmZjMGUwNjQ4NmExMDEyMDM5YmVjZjU5ZTVjNTc5NWUgbGVnYWN5LXRydW5rCisyNDc0IGI4ZTQyMTNmNjVhNmU1NGRiNGUzMmU5NDBjNTE5ZTZjYWU2MTY3MzQgbGVnYWN5LXRydW5rCisyNDc1IGU4Mzg1MmQxYTVlMjNkNmQzOGQ4NmE5MGQ3NzM5ZTQ1YWYyYWMyZmIgbGVnYWN5LXRydW5rCisyNDc2IGFlZjdlMGE5MTE5ZTVkMzdlZTgyMjI2YTQ0NTJiMjI4ZmM3MGEyMGYgbGVnYWN5LXRydW5rCisyNDc3IGE5ZDQ2N2U4NDYzMTk0Y2Q1NmMxYjZmODM3ODAwMTZmNzBlZTEwZDkgbGVnYWN5LXRydW5rCisyNDc4IDMyNWI0MGQ3NzIzNTU2Mjk1NGQ3MWZlMWY1OWY5MWI3OGJmNjY3MDMgbGVnYWN5LXRydW5rCisyNDc5IDEyZmRmYTAxMGU0MWViOTU1ZmQ1YzdlZTRhMjc2ZTZmZGRkYTQ2OGQgbGVnYWN5LXRydW5rCisyNDgwIGExNzc1Y2M3ODZlNmFkOWQxMjU0YTJiMGExYjAwY2NlNGE1ZTc3NTAgbGVnYWN5LXRydW5rCisyNDgxIDI2NDI2YzQyYTE2MmE0NDlmZTAyODcwNjU2NTdmNWE2OTIzOGUwNGUgbGVnYWN5LXRydW5rCisyNDgyIDJhODRiMTZmOTFiMDk4ODMxYmE3NTNiM2UzMTNkNWY4NjVhMjlkMDAgbGVnYWN5LXRydW5rCisyNDgzIDFhNmNmMWY4Y2NlY2EwNGJkYzJlYTcwY2QyM2RiZGI1ZDg2MTU1ODEgbGVnYWN5LXRydW5rCisyNDg0IDcxNGMyMzkwZTVjYjQ1ZTZjODMzNGZjNDFjY2U5ZTJkNmMxMjQ0ODYgbGVnYWN5LXRydW5rCisyNDg1IGE4MTAyMGQ1MDViZjllOGI2YzllMGY3ODI5ZWMxMWExZWViMzMzMDggbGVnYWN5LXRydW5rCisyNDg2IGJhYWRhMjA3NjJiMDgxODVkMDEwZTM2YzY2ODE4MzI4M2QzY2VjMGMgbGVnYWN5LXRydW5rCisyNDg3IGZmMDg2MmUzZDYzYTk2Nzc4ZGUyODBjOTY4NzVhZmYxNDYyNzk3ZWUgbGVnYWN5LXRydW5rCisyNDg4IDRiNTllNjNhMjdiNTdjMzE3MmVkZDBlOTVjOTYzMTM1Zjk4OWFjZTggbGVnYWN5LXRydW5rCisyNDg5IDQ4YmJjOGFkODAxNmE1YjU0NzQxNmVlMWJmY2ZiZDA1Y2QyZjA5ZjYgbGVnYWN5LXRydW5rCisyNDkwIGYyMWNiN2I1M2Y2Y2Y4YWM1NzQ5NTlmMmVlMjVlMjhjNGY1ZmFmYWYgbGVnYWN5LXRydW5rCisyNDkxIDE4MDdkNjBlNjIzMWY3YmFiODQyYThiNzE4NTBhMDYyOWQ2NTY2MDEgbGVnYWN5LXRydW5rCisyNDkyIDIxYzI2NmY3ZWNhMWQ5NjdhYmY4M2NjNWZjNDAzMDI5ZThmOWMwZWUgbGVnYWN5LXRydW5rCisyNDkzIGJlMzA1MmE3N2I3ZmQ0Njg5NTRhMDc0ODUzMTdhZGUzZDk4M2I0MGUgbGVnYWN5LXRydW5rCisyNDk0IDEzN2E1ZTA2ZmM4NGNlNTVjYjQzMGU4OTc1ZDY5YjA3OTVlNGM3NWUgbGVnYWN5LXRydW5rCisyNDk1IDQ0OWY1ZTVkOWFmNjJmMjNlZTUwOTUyNzU0ZjNmZDkxZWRlN2Q0ZjMgbGVnYWN5LXRydW5rCisyNDk2IDE3YTI5NzYwZDA2MmIwMTNjZGNiNGJlNTc2MDczMmE3YzFjMWM3MWIgbGVnYWN5LXRydW5rCisyNDk3IDY0MTg5YmE3ZTIzYmNhYzMwYmIwZGJhYzE3ZTQxZDRlMDcwOGIzODMgbGVnYWN5LXRydW5rCisyNDk4IDQyNjZhZWY1MGMyYjRjZmIxYzJmMTEyNTU3YjZkYjA0MmRiY2E3ZjAgbGVnYWN5LXRydW5rCisyNDk5IDc5NGNmZDQ1NWRjNmY2MjZiY2RjNWM4NDExNjQwYzllZjI1MWNiMmIgbGVnYWN5LXRydW5rCisyNTAwIDA4ZGMzN2E0ZGQzMjNhMjI1NWIwNDg2ODVlOTU5NjI3MDRjYmZjNjYgbGVnYWN5LXRydW5rCisyNTAxIGUzOTQxZWZkNzMxMDVjMTIxOGFhMTFjMzk0NDRlMDU4MDg2NDgwZjYgbGVnYWN5LXRydW5rCisyNTAyIDkwNDE4ZmQ0MzdkYmQzNjc1MDgzNTQxMWU2YzFhMWEyZDVmNGIzYjggbGVnYWN5LXRydW5rCisyNTAzIGYzNzk1YWMxNDZjZWZlZjBiNmE1NWIxMzEzMWY3N2Y5YzZjYTk3YjUgbGVnYWN5LXRydW5rCisyNTA0IDM2YWNlOTA4Mjg5YmE3OWQ5N2I3MDYwZTg1ZjA1ZGJlOWZkYmUzNDIgbGVnYWN5LXRydW5rCisyNTA1IDc1YjJmZDE2M2ZkNzE1YTEwMDMzYTYwODM3NjY3MzcwYjY1MDE1YzggbGVnYWN5LXRydW5rCisyNTA2IDJlMGVhNmQ1YzZjZWZhN2FjZGNlNTFhYzUzOTE1OTU3ZDNmNjdmYjcgbGVnYWN5LXRydW5rCisyNTA3IDQ4MTdhZTQwYTRlMjFkYzA4ZDdkNmE1NGE1Mzc1ZDk2ZWFjNWVlNDkgbGVnYWN5LXRydW5rCisyNTA4IGRhYWJlMjMyMDYyZTA0YzYzZWRiNTRhYjUxNzcyYzQ0Y2RlNTJjOGQgbGVnYWN5LXRydW5rCisyNTA5IGEyOTVkOWEzZmU4OTIzM2MyZjU1M2M3YjNkZGVlMWIyNzJkZDdmNjAgbGVnYWN5LXRydW5rCisyNTEwIDZlNWNiZDljZDVmOTUxODdjY2JjZTUwZjcxNWI2NjYxZDBkYTE0NzUgbGVnYWN5LXRydW5rCisyNTExIDNkZmFhMDkzZDk2ZTkxOGMzZTBlODViYTk1MGNiMzRkYjVjZjgwNTkgbGVnYWN5LXRydW5rCisyNTEyIGEzNTk1YWU0ZGMxZTc4M2ZhNDk5OTk0ZGRhY2M5OTNiNjNlNzQ5MzMgbGVnYWN5LXRydW5rCisyNTEzIGQ5MzI1OWNkMzc5ZDY2NmVmZDEyMzRkNTlhMGViMGQxMzc0Y2MwODYgbGVnYWN5LXRydW5rCisyNTE0IDFjMmNmMmJkYjZjOGEwZTU1YzJkZjA1MWIyMjE2YjUxZGUzMTA1MzAgbGVnYWN5LXRydW5rCisyNTE1IDYwZGE3ZWU5MTAwZTY0OWI0MDI1MDRjNDIyZjdjNTg5ODAwYzRiNTkgbGVnYWN5LXRydW5rCisyNTE2IDhhOTRjY2M0YzkxNDAwYjJlNDYyMjNlOWFjMTc4MDZmMWQ4ZTFhZDMgbGVnYWN5LXRydW5rCisyNTE3IGFiMDVlZmVkMDNlOTBmZjYxY2I2Mjg2OWM0MjI4YWZkN2EzODFjYTcgbGVnYWN5LXRydW5rCisyNTE4IDIzNTg3YmVhMTFiYjFhOGY2NzZmNDk4N2NkMGYxMzkwZmNiZmExNmMgbGVnYWN5LXRydW5rCisyNTE5IGE2N2FiNWQ1ODE0NjNjMWZkZjUwOTUxYTA3MGQ2Y2NhOTYwNTIzMjIgbGVnYWN5LXRydW5rCisyNTIwIDA2OTZmMTk4NzUzZjk0OGU4YTYxNGQxOWYzMDFhZDY0OGI5NjgyYzggbGVnYWN5LXRydW5rCisyNTIxIDNiMzNhYzQ0ZTM2ZTNjNjVjZTcyNjlkYzg5YzllZmEyZmQ5MWE5YmQgbGVnYWN5LXRydW5rCisyNTIyIGM4NTg0YTFiYTM4YTk0NzQ0ZTYxMWU0YTEyZTEzNjZkMGM2OTQ4ZmUgbGVnYWN5LXRydW5rCisyNTIzIGIyOTY5NmU1YzRkOTgyZDk1OWEyMmZlYWNhMDQ1N2U1YTA0N2ZhZTAgbGVnYWN5LXRydW5rCisyNTI0IGQ3MDc1NGE5NjMxMGQ2Mjg4MWE4OTliNjU2M2FhYjMyZTU4ZDU1MDggbGVnYWN5LXRydW5rCisyNTI1IDBiZjgyNWY1NWFjMTUyMDBiNjAyMWY4YWEzYjQwZDFmNGNiMmE5ODkgbGVnYWN5LXRydW5rCisyNTI2IDRlMzA3M2JiMGUzZTAzOTdiZGU5NzUzZTg4MzIyMTNjMDljYTA5MDAgbGVnYWN5LXRydW5rCisyNTI3IGNmYmFjNmZmNzNhZjNjYTQzNDlmZTM5MGVkNWEwZTBiZDBlYThjMjYgbGVnYWN5LXRydW5rCisyNTI4IGE3ZDM3MGY5M2Y3NTI2ZjM0MzNiNmIzNGFiNTRmMjIxNTE4NWNkY2IgbGVnYWN5LXRydW5rCisyNTI5IDA5MjdiZGI4MTZhMDQzYmNiNGExMWYxNDgwMGVkMTc5ZDg2MzY0ZDIgbGVnYWN5LXRydW5rCisyNTMwIDQ2YTY1NjEyM2E2OTY1NTYwYmYyMzIyMzgwNjkzMmQ1MzdjMzM2MmQgbGVnYWN5LXRydW5rCisyNTMxIDUwOWJiNzRhYzMyNDEyOWQzMjM1MzIxYzlhYTVkZTczOTk4ZmIxZTcgbGVnYWN5LXRydW5rCisyNTMyIDM5NzI5MDBlMWI2MWIyNzJkNWY0NmJmZjIwMmZmNGJhZDU0NzdjZTcgbGVnYWN5LXRydW5rCisyNTMzIDE2YjE4ZjU4NmZlY2M0MWQxNTQ0NGJkNDI5MTQ2M2NiOWE2NzRmNzMgbGVnYWN5LXRydW5rCisyNTM0IDMwNWUxNTBiYWE1MzhlNWU3ZGRjMGY1MWNlMzZkNDc2MDkyYmY1NWMgbGVnYWN5LXRydW5rCisyNTM1IDcwYTE4YTY2ODlkNGQ5Y2QwZGUzN2FjMmM2ZDQ3Yzg1YjYyM2M3ZjEgbGVnYWN5LXRydW5rCisyNTM2IDg2ODI4Y2MxYzY0NjhkM2FiMGYwODIyNGEyNzI2YzZkYzkxMzk1ZDEgbGVnYWN5LXRydW5rCisyNTM3IDU2NDU5NDJiN2FlMDU1YzU2YmQxZDYzZjMwOWFlNTAzMjZhZGM0YjggbGVnYWN5LXRydW5rCisyNTM4IDdhYTRjZDYyMWY1OTI2NGYyZjlkMzAxNzE0MDMzYjc3ZTY3MWNhOWYgbGVnYWN5LXRydW5rCisyNTM5IDczMDc1N2NjYjhhMzY5ODRmODE4YTExODg2NTg5YzkxYTkzN2NiM2EgbGVnYWN5LXRydW5rCisyNTQwIDczZWZlM2VhNGYxYjhhZjdjMmZiYmU4NWUzZTg5YmY4MTU5ZjcyMzQgbGVnYWN5LXRydW5rCisyNTQxIGRkYWI1MDI4NWM0NzllYWY4NGNmN2Q2YjAwNmNiNmU3MGE2MDdhODcgbGVnYWN5LXRydW5rCisyNTQyIDRhOTY4MjNmOWI2ODQ5NjAwYzU4OGZmMzg3NzVmODY4MmY5NjI3MDMgbGVnYWN5LXRydW5rCisyNTQzIDRkZmYyM2U3Y2YxMTQxN2I1MGQ3ZGE3ZDcxMWQ4NDdmM2I4MDUwNjMgbGVnYWN5LXRydW5rCisyNTQ0IGJhM2MxZjk1ZTY2NWUzNTU2N2NiYjE3ODFkZjYzMGZjNzM2ZjRmMjkgbGVnYWN5LXRydW5rCisyNTQ1IGEzZDRkNDYxZDQ0MjFmYWViMzRhY2EyOGZjNjY0Mzc2MGE5NDFkZTUgbGVnYWN5LXRydW5rCisyNTQ2IDAzOWFlZTZjYmQ3ODZhYmY1MTJjY2JhMjA5MGJmNDkwNzU5ODExYTMgbGVnYWN5LXRydW5rCisyNTQ3IDA1OThmNGYyNWQwNDRkNjJhYjNlNzIzY2M2MzIwNjE2OWJiNTdhMzYgbGVnYWN5LXRydW5rCisyNTQ4IGYwMWFlZTYxNTViM2EyZmYyYTNkZjk5M2FlMTI1NzYwZDc4MmE4YzIgbGVnYWN5LXRydW5rCisyNTQ5IDMxZDUwOWU5NDI3MTA1OWYxMmQ2M2M3MTMxYzBkNTgwMjZkODc5NGUgbGVnYWN5LXRydW5rCisyNTUwIDU1YmY2NjQ0NWM4NWM4MGYyMjdhYzQ5YzMxYTNlODhmOWY4MDVlOTcgbGVnYWN5LXRydW5rCisyNTUxIDE3MmFhMmMzZTczNDBjMWU3NDM5ZjNiN2UxYmEwZjNmMGNjYTZmMDYgbGVnYWN5LXRydW5rCisyNTUyIGNhZjg0NjZkY2M5YzM1NzdjMWViNjE5MTQ2N2ZlOTRmMTViMjQyNTcgbGVnYWN5LXRydW5rCisyNTUzIGYzM2EzZjY5ZGZjYjU5YmQxOTg2NDBhNjI0Nzg5ZTYyMTdiMTYzMzEgbGVnYWN5LXRydW5rCisyNTU0IDU5NjA5YjNhZjk3OGEzOTcwMTZjZDM1YmFlYTJkMTVlNThjM2ZhZmEgbGVnYWN5LXRydW5rCisyNTU1IDgxNTQzODUyNDhkODE3NTdkZTkxMTg5N2IyN2Q4YjNmMWZhMGRiMzAgbGVnYWN5LXRydW5rCisyNTU2IDY1OWI4ZGJmNjk1YzUxMWE5OTU1ZTljNzdkNDJjNWZmYTk5ODlmYzcgbGVnYWN5LXRydW5rCisyNTU3IGMyNjJmNDIxYTQ0YzUxYzRmYTg5NzU0MGQ0Mzk1NGUxODExYTk5MzcgbGVnYWN5LXRydW5rCisyNTU4IDRjZGNjMTZiZDA4MDBmZWMwYjI4MTRlOGMwMDlkZmRjMGQ1ZjIwMjMgbGVnYWN5LXRydW5rCisyNTU5IDBhYzEzNTdjZDg5ODllM2IzNjU0MjI4ZTE2Njc3YmRhMTY2MmEzOTkgbGVnYWN5LXRydW5rCisyNTYwIDFlNGU2ZGYwNzE4ZTAzODM2YTViYjY5M2VjZjM4MDVjNDJjMDcyNDQgbGVnYWN5LXRydW5rCisyNTYxIGQxODlhMmY2ODFhNmRmMzc1OWEwYTQwMjZiZDY1ZWQ3NDEzMjIwYTAgbGVnYWN5LXRydW5rCisyNTYyIDBjNWU0ZTEzN2RlNmUwZjM2OGFiNDg5ZTY0NDYxZWY4YjA0MmNiZjAgbGVnYWN5LXRydW5rCisyNTYzIDliZDI2ODBkMTZiYzM2MTcwZjBmMmM5MDNmMWZiODc2NTQxMDc3MDcgbGVnYWN5LXRydW5rCisyNTY0IGQ3ODMyYWY2YWJhNjM0ZTVlMzNhZGI0ODE1ZWQ5MDdmOWIyODgwY2UgbGVnYWN5LXRydW5rCisyNTY1IDljZDM4ZDFhYzM5MTlmMzZjMGEyNjNmY2FlNDg3ZjNmMDQxMmFlOWMgbGVnYWN5LXRydW5rCisyNTY2IGQzZDMyODY4MDMyOGRlN2Y4NjJjMTEyM2I2MjNlOGM0Yzc3NWQzNjcgbGVnYWN5LXRydW5rCisyNTY3IGU2MjhkMDljZTIyZmViZGRiYzVmZWZhYTIyMzI2MjAyNjY0ZWE3MWMgbGVnYWN5LXRydW5rCisyNTY4IDliM2Q1NTc2NjVhOTE4MDI1NWI2ZjU3NzNlMDkyNWY2ZmE4MDIyNDcgbGVnYWN5LXRydW5rCisyNTY5IDk1MjEzM2U4OWJjNzI1ZWJmYTQ5ZjM4MTYwOTYzZTA1YTIyYzc0ZjQgbGVnYWN5LXRydW5rCisyNTcwIGI1ZmU2NDgyMDcyZmVmYTRjYjQzYjcyYjEyY2ZmNWUyZjZkM2U2MjQgbGVnYWN5LXRydW5rCisyNTcxIGZkMDYxZGFlOWU1NzBkOGZhODAzOGNlY2U3MGJhY2VmNWUxZmY2N2IgbGVnYWN5LXRydW5rCisyNTcyIDBmMzUzYWZjMjg3MGQ2ODQ0NzcyOWRhMDc0MmQ0NDExYzViYmVkMjcgbGVnYWN5LXRydW5rCisyNTczIDRlZjMxZjVkM2Q5MjdiNGI3MmJmMTMxMDFmMzg2NGVhZjYzMjI2OTEgbGVnYWN5LXRydW5rCisyNTc0IDJhZmYzN2I5ZTIwZWNhMDk3ZDhjOWFjOTBmYzZjYmZkNDQzMGM2OGYgbGVnYWN5LXRydW5rCisyNTc1IDRjNDViY2JlM2JiM2JiZjcxMmYyYWViOTUzYjQ1ZTQ1ZDNmMzk4ZmYgbGVnYWN5LXRydW5rCisyNTc2IDRmMTU3YjMyNGM1MDViMDYyY2Y1MmEyOTZhNGFmNGQyYTk0MzU2Y2IgbGVnYWN5LXRydW5rCisyNTc3IDJiMDM0YzkwYjZkOWE2NzhkZGM0Nzk5MzljNDFhMTE4ZmM2MGFjNWUgbGVnYWN5LXRydW5rCisyNTc4IDE2M2UyOTA2MGYwYmYzMmYxMTliN2QxMjEyOGUxNzQxOTlkNDE0OGMgbGVnYWN5LXRydW5rCisyNTc5IDcwMzIzY2JhM2MxMzY5ZGEyNGMwMzA5ZmQwNmMzM2Y5OTM1MjNkNzkgbGVnYWN5LXRydW5rCisyNTgwIDVhOWFhMmFiYTA4ZTk2ZDAwMGU4YzNmZmQ4MWE0M2Y5YzAwNTkxODUgbGVnYWN5LXRydW5rCisyNTgxIDM5NDMwMTM0MDY5MzM3MmJiOGMwZmUzOTI3MDcwYjIxMzAwMTQyYWUgbGVnYWN5LXRydW5rCisyNTgyIDU1ZWU3NWYyZmVhNGFjZGFkNjRlZTM2ZTJjNGNmZWFlYjViYmIzNWQgbGVnYWN5LXRydW5rCisyNTgzIGVhNWNmMDliYmYzNmI0NjdjYjc4ZjdjYjM3NjQ3MjJlMDUwYjQ1YWMgbGVnYWN5LXRydW5rCisyNTg0IGM4ZDBhNGE0MWYwYmE3Y2U4MmZkN2JjZTc1OWFmMTE4M2M0YzFiODIgbGVnYWN5LXRydW5rCisyNTg1IDJkY2VjYTlhMDcxMzkzM2MzNjFlNDFjNmIzZDIwZWFjYzVjNDQ5NzUgbGVnYWN5LXRydW5rCisyNTg2IGQxZWUwZmIwYzBkZjU2NWEyNDA1NTEzN2UzZWM2NjBmM2RjMDczYzIgbGVnYWN5LXRydW5rCisyNTg3IDYxYmJjNzIzMGM3MTY2ZTU2NWVkMGFiZmEzNTUzMGVmZTM0NGMyZGYgbGVnYWN5LXRydW5rCisyNTg4IGEzYTg0MmIzOTkxMzJlYzgwZWRlNTg5NDJmZjE5YjRiNzFhN2FhYzQgbGVnYWN5LXRydW5rCisyNTg5IDNjN2I3Y2FhOWRhNTY2YWFjZTYxMGQxMWVmZmRmZTg3YTQxOTA5NzkgbGVnYWN5LXRydW5rCisyNTkwIGJiMzA4ZTdiMDAzOTRmYmM5YzdlNDQ1NWFlY2U0Y2E1MDEzOTgzOGQgbGVnYWN5LXRydW5rCisyNTkxIDBmOWViYzYzZGNiNTYzODlhZjFiMWJmZDcxM2ViMTBiOTk3NmRjYjAgbGVnYWN5LXRydW5rCisyNTkyIDA4YjFhODljOGYwNjM1MzRjNzkzOTc1NzQxNDM3OTQxZTczYWZlNTIgbGVnYWN5LXRydW5rCisyNTkzIDc5NDBiYjM5MWE2YWNiMmY5ZjVlMDM2ZTFmMGU1MmQ3ZTk0ZGY3YWQgbGVnYWN5LXRydW5rCisyNTk0IDhiZWRkYzE3MDM5NjY4YjM0ODA2OTViYjNjOGQyYjk1YmY1NGY3MzUgbGVnYWN5LXRydW5rCisyNTk1IDQ4N2I3YzYyYWU3NzRhMzg1MTMzZGIwMTE1NmQyNzE3YjU2ZGUwNTUgbGVnYWN5LXRydW5rCisyNTk2IDJkZTM0Yjk2MDJlMGVmNjVlNDhkMTRlMzllZDYwZjE3NTUyODQwNTYgbGVnYWN5LXRydW5rCisyNTk3IDFlNmM4ZjJhYTEzNmRhYTI3NTQ3NjEzOTNlMGM5MjIzZDBmZmZhZTUgbGVnYWN5LXRydW5rCisyNTk4IDQwMmE1OWFkMjQ5M2YwYjk3ZjMyYzZmZWIxODlhNTVlZTFhNWEzMzIgbGVnYWN5LXRydW5rCisyNTk5IDY0YmM4YTI4NGZiM2ZjZmQzNmExOGJjZDJmZTZiNTI3MGY0ZGYxZjMgbGVnYWN5LXRydW5rCisyNjAwIGMxMmQwMzNmNjU5NGU2NjQ5ZmZjMjRiODFlMDdlMGJhMDE2OTk3YjkgbGVnYWN5LXRydW5rCisyNjAxIGUyZGIzMzQxZDY4NjBlZTY3NmI1YmQ4MjY4NTBjZTYyNjQ3YmRlZTMgbGVnYWN5LXRydW5rCisyNjAyIDYwMGJmYTlmYjhiNzZlNWE5YTQ3NTAyMWJkZmYzNzAzYTUyNDM5M2QgbGVnYWN5LXRydW5rCisyNjAzIDE3ZjRjZGYyODk1OWY2MGEyNDQ5NGVmNmYxZTQxMDVmYjQ5ODA5MGEgbGVnYWN5LXRydW5rCisyNjA0IDlmODViZWIxZjdjODQ5ZmUwMTY5NzJkODgwYzhhMGJhMjNjYmZjMWMgbGVnYWN5LXRydW5rCisyNjA1IDFmNjRmNTVhNTJlODY1YWE3YWE5NjdiOTE5ZmE0MGJhNzc0ZTQyYzggbGVnYWN5LXRydW5rCisyNjA2IGMwNjgzZDY2NzZjNjZiYzU0YmE5NmVmYzAxOTc5OThmOGYwMzdkZGMgbGVnYWN5LXRydW5rCisyNjA3IGMzMDdkMTBiNjgwYzZhMzk4Y2ExNTZmN2MwY2Q0MDZjMjJlMmVhMWYgbGVnYWN5LXRydW5rCisyNjA4IDhmNjM4OWRiYzFjZjdiNGZhNzE4Mjc5OTAzNGFjYzhjOGZmMDhjODggbGVnYWN5LXRydW5rCisyNjA5IDMyNmI4OWVhNjcxMzhiYWM0NTMxYzU5ODA2MjJmODVlOTIyYmY3NTQgbGVnYWN5LXRydW5rCisyNjEwIGE0ZmVhNjkxMjBkODE0NzczMWIyNjk0OTIxMTBlNzZmYTUwZjIyMzkgbGVnYWN5LXRydW5rCisyNjExIDIzNDk3ZGI2Njg3YWExZGFjZTE5NmRjNjE2NDJkMDMxZDg3YWM5ZDMgbGVnYWN5LXRydW5rCisyNjEyIGIyZGNlMDFjMzY2ZTZhZTU0NTYxYTdhOGU4NjUyNmQ3MTY0Njg3M2EgbGVnYWN5LXRydW5rCisyNjEzIGFlMWE1NTVlNjVmYWM2NDY1NmJjMDJlYTVkZGFhY2JiMzcwZTA0NmMgbGVnYWN5LXRydW5rCisyNjE0IDM0YWJjYTE4MmYxOGUxYjYxNjllYWUwODJjMzFhMzI4MWU4ODFhNDUgbGVnYWN5LXRydW5rCisyNjE1IGE1ZjBiODM5MGM4Nzk2ODFkYmIyODQ5NGNiZGViOGNlMWZiZDhmODggbGVnYWN5LXRydW5rCisyNjE2IDQ2NGQ5ZDkzZjM0ZTkxYTIyOGZmNjVkYWY0NDBkOWVhOGNjYzcyODQgbGVnYWN5LXRydW5rCisyNjE3IDkyNzE4ZTRmNWFkYzFiMjg0Yzc2OGVkZTJlYWM3MGJkODRlMmI0ZTAgbGVnYWN5LXRydW5rCisyNjE4IGU4NjY3YTdkMzE4ZGRlZTA4NWQ4ZTI0ZThkNzA2ZTQ2YThhYmEzMzEgbGVnYWN5LXRydW5rCisyNjE5IDFmZDQ3MTJjYzY2ZjdiNmFjNTk4MDQ1YzgwMDVmMDU5MTc4NjU0NDEgbGVnYWN5LXRydW5rCisyNjIwIDA3MzZhZWZhZmM2MDE4YzE2NGZmODBkOGUzYzI4NGI4Yjk1MTY1NWUgbGVnYWN5LXRydW5rCisyNjIxIDdhNjBmYWEzODExMzUxYmEwYjQ2ZGE5MGU2ZTkzOTQ3MTg2NmNiMmQgbGVnYWN5LXRydW5rCisyNjIyIDc2OWNmZmY0YWU1ZTk1MDQxYWMzOTY0NjZjMDVkMTFkZTYzMjU5ZTYgbGVnYWN5LXRydW5rCisyNjIzIDY3OGE3MzRjMjQ0ZGM5MGNkODMxNWVlM2I3NDIzYzBiZjRiYzM0NjggbGVnYWN5LXRydW5rCisyNjI0IGM5N2Y0YzZiYTZjNjVlY2M2M2YzMzViZjcwYWNmNDEyNjE3MmFkMjcgbGVnYWN5LXRydW5rCisyNjI1IDkwMzAwY2EyMTIwMDU5MjA2NmJhNzhlMjdlOTQxYjJhYzY3MzJhM2MgbGVnYWN5LXRydW5rCisyNjI2IGNhMDM5MWE4MTJmODYzNTg5Mjk1NDhjNzVhYmFjOWYyMDdiOGU1NmYgbGVnYWN5LXRydW5rCisyNjI3IDkwY2JjYjBiOTdkYzdkNDk4NDQzNTI0YzUyMmI5MTE5M2NlOTUwZDMgbGVnYWN5LXRydW5rCisyNjI4IDFjYjc4YjYyNWIwNzIzY2I0OTU1MmRkNmFjNzgwOWNlNWE0YmE0ZmEgbGVnYWN5LXRydW5rCisyNjI5IDEwZTNkMjYwNDEzMTA5YTlhYmQzN2ViNDU3NmUwZTUyZjI1MmRkMmMgbGVnYWN5LXRydW5rCisyNjMwIDQyMTMwZTcyMjBhZmZiOTRkMGMzM2Y4ZmU2NzdkNzgyZTgwMmNiY2MgbGVnYWN5LXRydW5rCisyNjMxIGExMDI1Y2JiYTMwZGFkMTdmOTk1NzQxYWE4ZDViNDUyODhkOWNkZDcgbGVnYWN5LXRydW5rCisyNjMyIDFiZTIwODc2OTJhMjQ0NDY0MzQ3MzEzOTJlMzQwZWE2MmJmYzg2M2QgbGVnYWN5LXRydW5rCisyNjMzIDFkNGIwMzM5YjgzZGE4ZTNiY2EwNDRlZTIyNmRmNTJkZDQxYzlmN2EgbGVnYWN5LXRydW5rCisyNjM0IDRhN2YwZjA2Y2QyN2M0YjI5Zjc2NjYzZjA2NzM4N2IyYjM2MWY3ZjAgbGVnYWN5LXRydW5rCisyNjM1IDE5MzY1MjAxZGNmYTg1YWVhZTNkOTQwNTk2NGViYmRmODI5NjgwYWEgbGVnYWN5LXRydW5rCisyNjM2IGUyYzM0NjNjNGQ5MTg0MzAzOGZhNjBhYjc3MmJmMzcwZmYzY2I0MDQgbGVnYWN5LXRydW5rCisyNjM3IGJlYzk2M2Y5OWJjOWY1OTFhZDFjMmUwOWVlNjI0NTJlZWE5YjlhYTAgbGVnYWN5LXRydW5rCisyNjM4IDQzNmM4MTAzMDg1MzM4NjczM2Y2YjIxYTNkYzQ5N2I5YmZkOTRmMmYgbGVnYWN5LXRydW5rCisyNjM5IGMzYmVlNWE1NzIxZjdlY2Q3ZGFiZDk2ZDg4ZGY1NGY4YTBjMDI1NDYgbGVnYWN5LXRydW5rCisyNjQwIDMyNDk2YTBkMDFmNDg4YTY1ZTc1OGVlZjQ1YzNlNWIzMDJlZGIyNTAgbGVnYWN5LXRydW5rCisyNjQxIGM2NGM2NzAyNTQ5ZDZiYTJjZGI5OTA4OTVmNGZmZmNjNzVmZmY0MDMgbGVnYWN5LXRydW5rCisyNjQyIGRjMDQ2MzQ1M2E2NDM3MWJhYTAzODFiNTNjMmZiMzhhOGQ2NjFjZjkgbGVnYWN5LXRydW5rCisyNjQzIGVlODk5YTgxNTcwZDA1MDRjYTgwYWExZGQ4MmRkMzQzNWNkZWQ3MDQgbGVnYWN5LXRydW5rCisyNjQ0IGNmYmM0Y2NlMWE0Mjc3NjI5OGY2ZDYwMmY0NTc3OTFkODM5OGY1ZDkgbGVnYWN5LXRydW5rCisyNjQ1IGRiODIwZGEzY2UwM2VkNjcxZjZhY2MyNDk0MjAyNDU4YzM2Zjc0MGMgbGVnYWN5LXRydW5rCisyNjQ2IDNiMzg1YmRhMzhmODkxNThhN2YwZTAyYTE5NDllNTU4MWE5NDk5MTUgbGVnYWN5LXRydW5rCisyNjQ3IGM3YTJmNTYxM2Q2NjQ2OTE5NmJhODA3ZDNiODQyMjExMmM5NGU0NWIgbGVnYWN5LXRydW5rCisyNjQ4IDc3YjgwYTkxZDM1N2MxZDk1ZDhlN2NkNGNiYmU3OTllNWRlYjc3N2UgbGVnYWN5LXRydW5rCisyNjQ5IDkwZjM1ZmNmOGVhMDFkNzA4MjlkYjU2ZWJkYWNkMmFkNDNmNzE0MDAgbGVnYWN5LXRydW5rCisyNjUwIGEwZmJjN2I2YTQ4NWY5OGM5MDcxZDI4Nzc5NGYxZDI0ZjFlNjNkZDcgbGVnYWN5LXRydW5rCisyNjUxIDAyM2M3ZjY5ZDI0MDAyYzg2MzkzN2I4NDNlNzdhNDNlNmI0ZjAyZDcgbGVnYWN5LXRydW5rCisyNjUyIGI5MjY1ODBjOWMyODQxODYzMTgyYTA4YzE0NzkwODI5ZDgxM2RkOTEgbGVnYWN5LXRydW5rCisyNjUzIDkyYTEwYTFlMTQ2MzAwN2MwMzU4Nzc4OTFkOWFhYTI2MDUyOWQzMzcgbGVnYWN5LXRydW5rCisyNjU0IDU3NjY3YWIxZTE5NDFkMDFlZWJjNGM2ZWJlNmQ3N2FlODhjZTEzZGQgbGVnYWN5LXRydW5rCisyNjU1IDRjMjExZTgyODZiNWM2MjgyZWE0NTI3ZDg1NWNiMmM2MjQ0MjQ5OWIgbGVnYWN5LXRydW5rCisyNjU2IDBhYzlkNWRiNDFjOGZmMWZlYmI1MTBiZDM0M2EwNTNiNGIzNDcxMGYgbGVnYWN5LXRydW5rCisyNjU3IDBhYzM5MmI3Zjc2ZWFiZWFkODg0MTcxN2ZlZDEzNTBhNTAzY2FjNDYgbGVnYWN5LXRydW5rCisyNjU4IDJjZTZhMmEzMTg4NjNkZWUzZWRiYWY5MDYzOWJhMzJjNjc1ZGM2NmIgbGVnYWN5LXRydW5rCisyNjU5IDU2YmIxMDY3YTg4MDZlZDJjOTEzZGU5NDZkNmY1YmQxYjlhODE4MjYgbGVnYWN5LXRydW5rCisyNjYwIDgwZTJlNWQ2N2I0OTY2NjUzMDlmMTE2NWVhMTRjODc5NGRhZGQ3YjMgbGVnYWN5LXRydW5rCisyNjYxIDdmM2ZhYWZkODNlZDM3Mjc1MjlkNzFkYTgzYzA0MGQ5NTY1NTdjN2MgbGVnYWN5LXRydW5rCisyNjYyIGRkYmNkNTMyYzExNGRmNzViZjczZTMwNzNkZWE0MTY1ODU1MmEzYzAgbGVnYWN5LXRydW5rCisyNjYzIDY3ZjZmNzE5NDNjMTYyMjlkYTc1YTM2NzY2NjNkNjA2Mjc3MDY4NmMgbGVnYWN5LXRydW5rCisyNjY0IGUxNGQ0NjQ0MGVhNzEzOTlmZmYxNmY3YzA1ZDFhYjc5NGY4YWNlNjMgbGVnYWN5LXRydW5rCisyNjY1IGViMDM5NzdiYWVlYjRjZjMyODdhZmM3YTI3NmE4ZTkyNTUyZjA0YmUgbGVnYWN5LXRydW5rCisyNjY2IDA5NWQ5Y2Y0ZTNlNmUyNGIxODBiMGNjNGZmZTFjMGM4NjkwODYyZmUgbGVnYWN5LXRydW5rCisyNjY3IDlmNzE2MWRiNTY2OWU5MWI1NjgzNzRmZDZiZDA0NDVmYTY1NDcxYjcgbGVnYWN5LXRydW5rCisyNjY4IGZiZmYyZTdjYzQ5ZGY4ODdiNDlmZDgzZTQ1NTFmNDM3OWU5ZGRkYTIgbGVnYWN5LXRydW5rCisyNjY5IDc5ZWExM2I3ZGYyYzE2Mjc1MGE0MjdhMGI0ZWM3M2FlMjI1ZWI3Y2UgbGVnYWN5LXRydW5rCisyNjcwIDViNWY4NmVlNGY3OWI3ZTU1MjFkNmU2MmQ3NjhiODA3MGEzMWFjYjUgbGVnYWN5LXRydW5rCisyNjcxIGNiY2RmZGEwNWJjNGUyMmFmNTZkZmRmMDFlY2E3ZDdiOGYzNmYzYTQgbGVnYWN5LXRydW5rCisyNjcyIDc2NmNjODIwZjUxMWUxMDE5YWI3YTA5OWE1NGJlZmY3YWY5ZjMyMDcgbGVnYWN5LXRydW5rCisyNjczIDg0MTRlMWY5YTVmZTRjY2IzNzNlMjVkMzE4M2FkZWJmOTIwODFjYTEgbGVnYWN5LXRydW5rCisyNjc0IDk4OTZkY2YwOGUxNmZhZTA5ZTYxYjU0NTIxY2ZiMmU0ODQ1N2I4ZmUgbGVnYWN5LXRydW5rCisyNjc1IGI0NmQ3NmViZDlhNzJlNTAzMmY0MTU3N2IyODY4ZTRiNzNkMDA0YzIgbGVnYWN5LXRydW5rCisyNjc2IGY4ZDUzYjZjZDQ0MmU4MDBlMjI5ZWQxZmY0NTkzMGQ5NzM3MDAxOWYgbGVnYWN5LXRydW5rCisyNjc3IDY5Zjg5NzM5OTM4ZjlhNjA4ZmRhZTY4MDU0NTRiNDAzY2QzNGZmOGEgbGVnYWN5LXRydW5rCisyNjc4IDQzYzIyMzE1OWIyODI3Njk3YzgwODlhZGUxYzY4ZGZlMDVjYWZhZjYgbGVnYWN5LXRydW5rCisyNjc5IGRmMDM0M2FjOGEyMWFiMTU4ZmE0YjEzOTk2NTM3ZWFjMDYwMjkxZGMgbGVnYWN5LXRydW5rCisyNjgwIDA0OGUxMzcxYzQ1MDZjMWUzZTIyNjBiOTYyMzVhNTk1ZDgwZjAwODQgbGVnYWN5LXRydW5rCisyNjgxIDAyZGU3YThhZTI2NzYxY2Y1YzY3ZGNkMjkyMWMwY2UyZjY2ZDRhMjIgbGVnYWN5LXRydW5rCisyNjgyIDJkY2RiMDAyM2MzMjBlZTUyZWU3MzM3YzY5OTIwNzBhNTlmOTU1YmMgbGVnYWN5LXRydW5rCisyNjgzIGJlODk4Y2MxNTgwMDZhMTg0NzgzOTUyNDNjMzVhZWI1NTNiMTBkNTQgbGVnYWN5LXRydW5rCisyNjg0IGQ5YjZiMDM2OTg2MGM0NWM0YWVlY2NjNzZjODkwNmIyOWIxNDI3YjYgbGVnYWN5LXRydW5rCisyNjg1IGIzODI1Y2U4M2M4N2YyNDI5ZGZmODQ1ZWM3NDM1ZjRhNzZlODdkMGEgbGVnYWN5LXRydW5rCisyNjg2IDc0MmRjODM4MDM4YmZjYWNhZDdiMDNmYzBhMDY1ZGIzMzYyMDJkZTUgbGVnYWN5LXRydW5rCisyNjg3IDJiMGFkNTJhYzM5Njg2Yzg5ODQ5OWUzMGY5OWVhMWZhMzU4Mjk2NzMgbGVnYWN5LXRydW5rCisyNjg4IDQzNTdhYjY4YzdkNWI2ZTljMGQ2YTE2Yjc4ZjViZjMxMGRhNmE4ZTEgbGVnYWN5LXRydW5rCisyNjg5IDNkNDY3MTA4YjAwODNjNGM1NmJkNWE0NzQ3YmFlYTcwMzIxMjViZTUgbGVnYWN5LXRydW5rCisyNjkwIDFlZmRiMTUyMjFkZGQxZTk2MzU3MGZiNzFmMjgxOGJlMGM0YjY4MDkgbGVnYWN5LXRydW5rCisyNjkxIGRjMmVjNDlhMmFkMjliNmQ5NjMwMTNkZTUyYTFhODM1ZTBmYzcxZjMgbGVnYWN5LXRydW5rCisyNjkyIDgzMzEwNzZjZmUxNTJkZmNiOWQxNjY5ZjkyOWQ0NzkxZDViOTM2MzggbGVnYWN5LXRydW5rCisyNjkzIGZlZTM1MDc4ZWY0MGEzZDViNTRmZTA4YjMzNDk5NzI1MzMwZWVmOTggbGVnYWN5LXRydW5rCisyNjk0IDhiNGEyNzRlNTQ2ZGNjYThjYTgwYmMxNjE5MTIxODQ2ZWI2MDllZTggbGVnYWN5LXRydW5rCisyNjk1IDk2YjIxMjhmMDBhZWRjMjRhMjQ0YTZlYWUyMDFhZWU0ODg3ODI0MTIgbGVnYWN5LXRydW5rCisyNjk2IDI2OTZiNTZkZGFjNDk1MmZjZDM4MDJkMWUxODI0MzNkZWYxYTYzNWEgbGVnYWN5LXRydW5rCisyNjk3IDI1NTcyOGE4NDFkZWYxYjVlOTI4ZTBlZDYxZDY0Y2NhNDg2MTczNjMgbGVnYWN5LXRydW5rCisyNjk4IDkwMTk4NDg4MjRhMTBkNmUxZTE4ZWE4YmI2NzY4NTEwODJjYjU5NjMgbGVnYWN5LXRydW5rCisyNjk5IDlkMDI0MmI5MmNhNWZiMDc3Y2VkY2MwMGYxNjEwYWVkZWY5Y2MwMjUgbGVnYWN5LXRydW5rCisyNzAwIGVhNTE0Njg2NmJjZjE3OTc0NTQyN2VkM2ZhOWI5OWJiNzAwZGY2ZjQgbGVnYWN5LXRydW5rCisyNzAxIDQ4ZWFmNGZjNTNjYjBkODAxMzI2MjFhMzg2MTVjNjFhZWFmMGVlZTEgbGVnYWN5LXRydW5rCisyNzAyIDVmNTkwYWI0NTI5NTc3NmIzYzg0N2ViMjc2NGJlNDc2MTlmZDY5NDUgbGVnYWN5LXRydW5rCisyNzAzIGI1ODYxODljYzFmNWU2OTlkYjM3N2Q0MGE1MGM0ZDJkNzY5NDQ1MTQgbGVnYWN5LXRydW5rCisyNzA0IGQ1ZTFjNDk5ZjAxMzdkZjI0OTE3MzE3ZjFlYjYxODhjMDNkYTczMTggbGVnYWN5LXRydW5rCisyNzA1IGQwYmFhODMwMDAwNTYyNDJlZjIyNWQ4YjEwNGYxNmE2MjYyMTJhYjUgbGVnYWN5LXRydW5rCisyNzA2IDlmMDZjNjY4OWYwZDEwYTQzNzI1YTQ1YjU1MDMxYzk2YWJhYWViYzQgbGVnYWN5LXRydW5rCisyNzA3IDkzN2NiYzBiZTZlY2VkYjVjMGI5MjdiYTUwMzg0YjAwYzk1ZTVhODQgbGVnYWN5LXRydW5rCisyNzA4IGUxOThjYzk4YTRmZDBlN2UyZjMzOWE0MmU3NDdlZDIwMmRjODcxZDYgbGVnYWN5LXRydW5rCisyNzA5IDgzMDQ2NjY0MTYwZTk5MDkyZDMzMjY1ZDgxYjZiODYzOGJlYmQ0YTMgbGVnYWN5LXRydW5rCisyNzEwIDRlZmZmNmNlYTkwZjY5OWQ3ZjY1MTBhMjk4OGUwYjZiMDVlZGQ2MTkgbGVnYWN5LXRydW5rCisyNzExIDc2NmNlYzUwZDc2NmQzZjdiNTVkNTI2ZmJkMjgyZWZmZTZkNGUyMmIgbGVnYWN5LXRydW5rCisyNzEyIDVhNjFmODI3ZjQ3YzNhMzliNGFlYWM1MzkwMTYzOTMxYWE4ZDRmODYgbGVnYWN5LXRydW5rCisyNzEzIGMxNThjODM0NzY1NDY1YjczNzM1YzM3NGVhMjRlYTQ2YjMxYjQ5MmYgbGVnYWN5LXRydW5rCisyNzE0IDI2NDMwNmI2MWI4M2ZlZmNmMDM0Y2Q0MTFlYTczNmRiYWQxMGUwNjkgbGVnYWN5LXRydW5rCisyNzE1IDJlMjg3YTE1MDNiMjUyNjQ2ZjRkODBjZjliNmM3M2NkNWQ2ZTkwMjQgbGVnYWN5LXRydW5rCisyNzE2IDA3ODBiOTVhNjYwZWM4MjA5OGYzYTg1NGUyNjJiYWNhOGFiNTkxZTYgbGVnYWN5LXRydW5rCisyNzE3IGFkZmEwODJmNTIwYTYxNjZmNmQzNWY3MzAxYzU3MDE4ODE0YTc2MDIgbGVnYWN5LXRydW5rCisyNzE4IDFlZjYzYWRmNGZjNWJhNjg1NjQ3NDMxMmUzMmUwYzFjMGVhZTYyYmEgbGVnYWN5LXRydW5rCisyNzE5IGNmYjUzMzIyYzlkMTE0MzJkYTUyZTNmZjE5NjE5NjVkYjg0YmQ0M2IgbGVnYWN5LXRydW5rCisyNzIwIDY4M2VkYjBjNDQ2MzQ5Mjk4MzlmNjNhNWNkYzM4ODdiMzViNTkwOWEgbGVnYWN5LXRydW5rCisyNzIxIDA2MTRkODg3ZDEwYWJkMDJiZTE0ZDg5MTU5ZDlhNGQzZTI5Nzk2YmYgbGVnYWN5LXRydW5rCisyNzIyIDQ0MzQzOTNiNGVkZTY1NjY4NjU4YjQ2YTZiNWU1ZTIzNGY4MWYzMjQgbGVnYWN5LXRydW5rCisyNzIzIDE3MDY4YTZhMGFhNTE3YjZkMDNhZWU3OTc1NjRhZThhNTU1MGFlZTEgbGVnYWN5LXRydW5rCisyNzI0IDczZTI2NmJmN2FjNmIwM2I5NzJiM2IzMDZjNjdjY2ZmYWU0MGY1ZjMgbGVnYWN5LXRydW5rCisyNzI1IGY5YzA3ZWU3OTMwMjJmNjVjMmJjYmNiNTdjNzIxMWQzMmE2MjA4ZTUgbGVnYWN5LXRydW5rCisyNzI2IDVmYWY5M2ViOTI1NmUzMzYzNDNjYTJkMmY2OWIyNGU0MjU4ZmQ0YjIgbGVnYWN5LXRydW5rCisyNzI3IDVhMWY5YWRlMTUxMjQzMjBhMDM0OTIwYjNjNTExMDdhYWNhMTgxOWQgbGVnYWN5LXRydW5rCisyNzI4IDhjMTc5ZDAyMzU4M2NkODYxZDcxMWZmMzEzNjk0ZjFkMWY1NzY5YjcgbGVnYWN5LXRydW5rCisyNzI5IDkyNTA5ZDMwNGU0NzljNjBhN2FiNDM1NWVkZjhlZGVhNWM3ZDhhZGIgbGVnYWN5LXRydW5rCisyNzMwIDZjMzZjMjczZDU3ZDRkOWUwMjIxYmRjZGJlZDIyODMyNTQ1ZTBmZDAgbGVnYWN5LXRydW5rCisyNzMxIDM0YTc2MTA0NmRiZDY5ZjY5ZGQzNzUxZjU5ZDE4MWViMTEwMjZhMWMgbGVnYWN5LXRydW5rCisyNzMyIGE1YzI0NTkyM2IzMTBkNTY4YTBhZmVmYTBlNGY2NmMzMTEyOTUzZmUgbGVnYWN5LXRydW5rCisyNzMzIDA4NmJkYmI2OTczYmYzNWI1YzRlZjk4M2UwYWFlMDk0ZDhjNDRiYTYgbGVnYWN5LXRydW5rCisyNzM0IDRjYjU1MzU2NzA2ZjNiZmIzZTE0ZWU1ZmYyMjgyOTVhNzZkZmU1NjIgbGVnYWN5LXRydW5rCisyNzM1IDAzYjlmMTUyYWRiNjk1MzI1YzU5MzExMWExMTgzMzY3ODNjN2YxODkgbGVnYWN5LXRydW5rCisyNzM2IGRlYWU4MGUwN2E4MWM5OGUyNWIyYzEzZjJjMmFmYjY4NTY1ZTgxNGYgbGVnYWN5LXRydW5rCisyNzM3IDNiOGY0MWY5NmViNGM5NTMzMzY3NDEwYWNmMzJjZDQwZjAyNjllMWEgbGVnYWN5LXRydW5rCisyNzM4IDJkYTkzNGVmMjdjMDM4MTNhYmQxYWZlMDgyOTFjZDg3ZDE0ZGFmN2EgbGVnYWN5LXRydW5rCisyNzM5IDEyZWNlYTZlOTU1YzEyYjEzM2Y5NGUzNmY0MGEyNDI1ODM1YTAwYzQgbGVnYWN5LXRydW5rCisyNzQwIDY4ODQzNDZjMDRhMDQ4YjMwZjNjNTMzNjViY2I3YzRkOGFjMTczMmYgbGVnYWN5LXRydW5rCisyNzQxIDMxNjlkMzhmNjc3NDJiOTgxNjA2MmM5YWQ5NGI2OTU5ZDhjOGNlZWIgbGVnYWN5LXRydW5rCisyNzQyIGJhZTE0OTRmMmVjODEwMjMwY2I1NzQ1MmIwNjAzNDhjYmVmNDIxYTcgbGVnYWN5LXRydW5rCisyNzQzIDVmNzFmMTY2MDc5ZDQwMWRmY2NmNWI0Y2I1MTM3NzYyNjZiNjgyZmMgbGVnYWN5LXRydW5rCisyNzQ0IGM3MmYyNmFjNDkxYmE4ZDgyMjhlYjhmNmY1N2I4MTZkMzVmN2YxOWUgbGVnYWN5LXRydW5rCisyNzQ1IDM3YWE2N2YwODY3YzEwZjQ2MzdjN2UwMGY0NGNlYjM0ZjJhYWE0Y2MgbGVnYWN5LXRydW5rCisyNzQ2IDM3OTA1ZmUxODkyYTI3ZGQ4YjdjNDM1ZjQ0NDQ0N2Y0M2EwMmM0MzUgbGVnYWN5LXRydW5rCisyNzQ3IGRiZjQwODkxODIwMTYxZWI1ZTQ3ZDA1YmRlOWJmZjYzNmJkMDk0MGYgbGVnYWN5LXRydW5rCisyNzQ4IGQxNTQ3ZDZiYjViNWNmNjExZjhmNzczMjVlMjk0MGMyMjJjZGJkYTAgbGVnYWN5LXRydW5rCisyNzQ5IDdkMjRkZTY0M2ZiNTBjYWFiM2QyNDA1OTk1MmVhYzJiNzYzNmUxZjUgbGVnYWN5LXRydW5rCisyNzUwIDYwNzc3MDRkYWI3YTNmNzliNzE2NGU0ZDE4MTJiNjU0Y2RkYTMxYTggbGVnYWN5LXRydW5rCisyNzUxIGYxMWZhZThlZTFlNDI5ZDgzNmJmMjc5NDQzN2JhYzMyMWM1MTFlMGEgbGVnYWN5LXRydW5rCisyNzUyIDkyNzZiM2VlMzkzNjdjNjFkMjFiZDE0MmNkOTdiZGQyZmRiYjczZjkgbGVnYWN5LXRydW5rCisyNzUzIDk1NzJhN2QwOWRmZjQ2MmViZWFkNDljMTA0MjMxYTNhNGVlYzMyZDIgbGVnYWN5LXRydW5rCisyNzU0IDA4NjgxNzYzNjVkN2ZhYzE4ZDllNmU0NDc3OGIzOTQ4ZTcwNDc1ZDEgbGVnYWN5LXRydW5rCisyNzU1IDQ3YzQyZWE2N2E4YmQ4NTMxNDRkOTlkMGJhOGNlNzYxYzU2M2U2NzMgbGVnYWN5LXRydW5rCisyNzU2IGY5Y2RlZWJmY2I2NzBjMzA2ODg1NTg3OWY0OTcwOTgyOWQ5ZDg0NzIgbGVnYWN5LXRydW5rCisyNzU3IGUxOGYxZmEzOThhMzBiM2UyNWNhZmUzYzY4NzkwODBlMmIxZDdmNWEgbGVnYWN5LXRydW5rCisyNzU4IDgwMGNmNDA4NmZiMzNkODBjYjNiNjc3MTQ5YmYxNWI2ZjAzMjJlNTkgbGVnYWN5LXRydW5rCisyNzU5IGIyMDRmMzFmYmM5N2U2MGRkMTc0MzdiMjQ4MGQ5ZTY4ZWUyYTk1MTcgbGVnYWN5LXRydW5rCisyNzYwIGEzNDc5MzNhNmQ5MjJmNjA1ZjUwMmU4Y2QyYWYyOGViM2ZkOTVkZTMgbGVnYWN5LXRydW5rCisyNzYxIGQ0OWI2YTY3MjViZDg3ZjUyMTlhNzNkMWYwNzE1NTM0MWM0NGU3YTMgbGVnYWN5LXRydW5rCisyNzYyIDhjZGQ2MmJiNTE1Y2JhYTBjMTc4Zjc2MThhNjJjOTZhZjZkZWFiODMgbGVnYWN5LXRydW5rCisyNzYzIDVhMzUxOTUzOThlZjUzZmJkZDU3ZDZkNmJjODg0MWQ4ZDJlNDYwMDkgbGVnYWN5LXRydW5rCisyNzY0IDM0ZDY3ZGE4OGU4NGI4NGI2ZDhlZDc3MzcyMjEyMTlkZmJiMmQ0YjAgbGVnYWN5LXRydW5rCisyNzY1IDhhMjRlZjQ0ZGZiMGE4YjQyYjY1MTQ1OGY1NWVkNzUwNzkwZjYxZGQgbGVnYWN5LXRydW5rCisyNzY2IDZiMzYwNDE1OWNhOWIxMThjNjcxMDJlNjUyODRhZDUxNTQ2NjRlYzkgbGVnYWN5LXRydW5rCisyNzY3IGM3NjNmYzY0ZmNhYmJlMjVjYjRmMzJiMDRjYzU3YWYwN2JkNzBlYTQgbGVnYWN5LXRydW5rCisyNzY4IDAyMTRiYmY0N2JmNmRlZTQ2ZWQxNTMwMDcwZTQzMTkzODYyMzJhZWMgbGVnYWN5LXRydW5rCisyNzY5IDkyNzZjMjYyNWQ2NGNiZmQyNDJhM2JmNDVjMWJlZWZjMjMwYmZmMTYgbGVnYWN5LXRydW5rCisyNzcwIDBhZDViMzVlM2FkODlmODYzNTc2MDQ2OTZmYmFmYWEzYTczNWU0MmEgbGVnYWN5LXRydW5rCisyNzcxIGRjYzZkZTFjMzdhNGY1MzUyNmUwNjI1NDQyODU3NmE3Yjk4ZjRlMjggbGVnYWN5LXRydW5rCisyNzcyIGUyNWUyNjU2Yzg1MzdiMTE1ZjM4MjYxNDE2ODk2ZTQ0YTZmZTYyNzUgbGVnYWN5LXRydW5rCisyNzczIGY4MjU4Zjg0MTA0NmU4ZDY0OTIwMjVjMzRiZmE1Mjc5MzM5ZjJmNjMgbGVnYWN5LXRydW5rCisyNzc0IDQwNWEyZmVjNzQ1NDFkZTcwMzNjNGMzMWRiNDYzODQ3ZjllMGI3M2QgbGVnYWN5LXRydW5rCisyNzc1IDExZTg2MjcwZWQwZGNmZTdiNDdjYTNlOWE0YjM4NDM5YTBiZjM0YTUgbGVnYWN5LXRydW5rCisyNzc2IDQwYTBlYzk5NGM1NDllY2M4OTNiM2I3MmU4MTUxMjQ1YjJiMDNjMDYgbGVnYWN5LXRydW5rCisyNzc3IDhkNTcyNTQ5NGVkZTczMTYwYjA3NWYyNTAwZmQ0N2EzMTdhMmMyOTggbGVnYWN5LXRydW5rCisyNzc4IDc1NWJiOGVmY2MyZDUzMzQ5YzhlMDlmYWMzNzAwZTE3YjdiNWYxMWEgbGVnYWN5LXRydW5rCisyNzc5IDE4OWVlM2JlZWJiNWU2ZjZhNTFjNDZhYWM3OTQxZjA4N2FmM2QzNzkgbGVnYWN5LXRydW5rCisyNzgwIGFjN2Q2NDQ1M2FhOWYxNWVhOTg4ODhhNTFiOGNlMzVjMWRmN2VmZTQgbGVnYWN5LXRydW5rCisyNzgxIGQxZjZlYzc4OGFjZjdiNWZjNDcxNWEwMDc2YWEzYjM5YjY4MTczZjkgbGVnYWN5LXRydW5rCisyNzgyIGNkZWMzZTg4MDUzYjNkZjU1Zjc3NTEyOTg0Mjc1ZDMyNmFjYjI2MmIgbGVnYWN5LXRydW5rCisyNzgzIGEwZDRjNWVmMWQ1ZDc4OTVmZGM1YmRmNzQ2NGVkNDMzZDI0MGVmMWQgbGVnYWN5LXRydW5rCisyNzg0IDliZTY1OGQxOTNhOTg5ZjkyMzEzMDI1Y2NjZWI3ZDM1NmMzZjlkNWUgbGVnYWN5LXRydW5rCisyNzg1IDBlNDM2MjAwYmYxMjg4NGNlMWRkNTViNDg0NDU1NDU1YjEwYzFkZjMgbGVnYWN5LXRydW5rCisyNzg2IDdmYjVkZWZjOGY2ZmFhYTU5NWVjMWI3Yjg0ZDZhOTM1MWUxYjVhNjcgbGVnYWN5LXRydW5rCisyNzg3IDIxMmFkMTU4YTgwNjJlMmY1MzhkYTNkMDI1NGI4MTE0MDdlNzBjZmYgbGVnYWN5LXRydW5rCisyNzg4IDFkNjVmMjhjMGFhOTdjYjg1Mzk5NTY3ODA2NzMwNDdlZTgwMzgwNTQgbGVnYWN5LXRydW5rCisyNzg5IGQ0MjBhZjljMWI3NTdhMmY4MjYwNTJhYmYxNGVkNTZiYjQ2NmU3M2QgbGVnYWN5LXRydW5rCisyNzkwIDQyYTZiOGUxMzkxYTA3ODViZWJhYjY0ZjJmODFjY2QwYzA4YTE1MTAgbGVnYWN5LXRydW5rCisyNzkxIDA0ZWQ0NzY1YjE3Y2U1MzBkZjE0ZGQ5NGVjOTQ1ZDZkZWVkMDMzNDMgbGVnYWN5LXRydW5rCisyNzkyIGY1YTJiYzM5ZTEwZTJhNGQ0ZDg4NzM3M2IxZGU5NzQ4YTU3YTRkZGUgbGVnYWN5LXRydW5rCisyNzkzIDBjMTkzOGYyZTBjMDJmODRiNWFkNjJhMWNkNTUzOTUzNGI5MGNkMTIgbGVnYWN5LXRydW5rCisyNzk0IDFmNmM1OTNlZGE2ODdiMjlkNTIwMzFkN2ZlMTczOTYxMjVmNzQxMGIgbGVnYWN5LXRydW5rCisyNzk1IDg4NTk5NmExYTYzMTg4MGVmNjI4YmFjYWRjZGUwYmI5ZjgzZTE5MDQgbGVnYWN5LXRydW5rCisyNzk2IDc4NGEwOWE1MjM3NWM0ZTU1MmU4ZTNmODNlZGM5NzNkYzc2NTkyZmYgbGVnYWN5LXRydW5rCisyNzk3IGQ1YmI4ZmU0M2RmMmYzYmZiMzNlNzk4ZGNiZjg5NTg4ZGNiNDI5Y2YgbGVnYWN5LXRydW5rCisyNzk4IDNjYjY4NmM0OGNkZGRmODFiZTQzNDJiYmRmYWNlNzE0ZWZkNjhmODQgbGVnYWN5LXRydW5rCisyNzk5IDlkMDFlOThlZDg0OTNlMDc2NmI1ZTVmZjEyNTk4MDRmNzE4OWJkNTQgbGVnYWN5LXRydW5rCisyODAwIDJmOTVhMDFkNmMxZjNjNjQ1NmRmZDJhZDQ3ODczZmM2MDRmOGE2YWMgbGVnYWN5LXRydW5rCisyODAxIDBiMzgwMDBmYzgyM2RmNzgwZjdkZDg2ZDNjZjYxMjIyODI5OTdmZGIgbGVnYWN5LXRydW5rCisyODAyIGIxNjJiMjc0MDBiYzUwMmRkMGVjYzc0M2RhYTBmZTUzODY4NDlmZTYgbGVnYWN5LXRydW5rCisyODAzIDBlZmI4ZGRmNmMwZWQ3OGJjYTAzZjM1NjVhYzJiMWQ0MjhlNjUyY2MgbGVnYWN5LXRydW5rCisyODA0IDAyZDNmMTYxYjdmNTU3MDJhZGZhNDk1YTAwMWNkMWE3M2JmNTZiMWQgbGVnYWN5LXRydW5rCisyODA1IDU5ZjkzMjViYjhlY2MzZTVkYjQwYjBkNjUwM2NjNzkxNzQ2MzhhMGIgbGVnYWN5LXRydW5rCisyODA2IGMwZTdiMGI5Yjc1MDdkNDMyZjFlMDVmNWFkMWU3YTg3NWEyZTRkNWQgbGVnYWN5LXRydW5rCisyODA3IGM4MzJhMmIwZDQzMzBiZDgzMTUyMWZmZGZhY2FhODNmODc5NGUzNGIgbGVnYWN5LXRydW5rCisyODA4IDhiYmExNGY3ZGI4YTFkY2ZlOTczMDhiMmNjNTAzMDQzMzBlZjg5Y2YgbGVnYWN5LXRydW5rCisyODA5IGY2Y2M3YWEzMWRlNjllOWE3YzYyMWFiYWVhN2VjMDVlZjA2Y2E2MTUgbGVnYWN5LXRydW5rCisyODEwIGRhNWIxNDMzNDY3YzFjYTVmNTk0ZWQyNzljZjkyZDYxMjU5NDVjZTQgbGVnYWN5LXRydW5rCisyODExIDQ4OWZlY2MxZGEyODZhYWMyZjc4M2FiMzM1NGE1ODY4NmZmNjY2MmMgbGVnYWN5LXRydW5rCisyODEyIDczZmU3YTFhNWRkNDJlMzY2MjRiMTEzNWY3NmI4MmI4ZTBiMDc5ZWIgbGVnYWN5LXRydW5rCisyODEzIDA0NTdjNDQxYjA4NjA3NzlhNzE5ZTA1ZWE1Mjk1NjhhNzQyOWZkYjggbGVnYWN5LXRydW5rCisyODE0IDc0OTQyZWM3MDQzMGFlOGZiNTRmZDRmYTFhZTcyOTU0MGM4MzBhMjEgbGVnYWN5LXRydW5rCisyODE1IDJlMGQ2ODgyMDEzZWZmZGU2NDIyZGRhZWUwMmQ3NDllOGVlM2Q4YWUgbGVnYWN5LXRydW5rCisyODE2IGU3MjkzYjViNTcwZDlkNjE5MWIxMGFlNDgwZWY5YTQyNzU0ZmVhYzUgbGVnYWN5LXRydW5rCisyODE3IGY2Zjk4MmNiNTQwMTMyMmI0YzY4NjgxY2NhMDVjZDU4YTRjOTg5NTEgbGVnYWN5LXRydW5rCisyODE4IDNlNjI2YzQxM2JiZjQ4OGZjMjg4ZmZhYzE2ZjA5MWVlYTllNzRiOTggbGVnYWN5LXRydW5rCisyODE5IDViNTIxZmU0ZDFmNjQ5NmIwZDMyZjBjMWUwMzg5MzdmNzRiZDVkNDYgbGVnYWN5LXRydW5rCisyODIwIDZkMTU5OWJlMmI1NGUwZTQwMDYyYWViMDhjZTMxZWY3M2E2NTRhMGUgbGVnYWN5LXRydW5rCisyODIxIGQzNzcwYjFkYTYxMTUyOTU3YjRlYzI2NmMxM2QyOGQ2MzMxYjM2ZTggbGVnYWN5LXRydW5rCisyODIyIDdlNWY0ZDlhZWU3N2JjNmRiYWZhZmI5YTk5M2JhMmMxOGMyNDM0YmYgbGVnYWN5LXRydW5rCisyODIzIGFhZmY2NTBkN2UxMzY2MGFiMWZkNmJkMzRiM2NjMDI4ZTdkMzQ4YjUgbGVnYWN5LXRydW5rCisyODI0IDVlZDZhZGJiOTVmMzU5MDMyZGRhZDYzZjUxOGRiMzhkNmQ2MjI0NzIgbGVnYWN5LXRydW5rCisyODI1IGUzYjYzYTk5MTRmODcwMjljMzQ2MzljZDhkMmFhYmJjYzkyNjUzNTkgbGVnYWN5LXRydW5rCisyODI2IDE4OTA3ODEzNjM1MTU3MWFmYTJkNDg2ZmQ5ZDI4YmU0ZDIxMDNmNzMgbGVnYWN5LXRydW5rCisyODI3IDI4MzkwMzc1YTJiOWFlNjY1MDE3ZjIwZjg2NDZhYWVlNmIzZWFlODMgbGVnYWN5LXRydW5rCisyODI4IDE2NGI1NmZhNjU1OGVhYWEyZjIxNmVlM2M0MjRhNzllZDE5ZTJlYWEgbGVnYWN5LXRydW5rCisyODI5IDEwNDk4NjdkY2ExZjk0ODNjYTc1ODg5NWVmNDkzOGFhZTgyN2IwZDQgbGVnYWN5LXRydW5rCisyODMwIGMyYmE4ODdkOTQ5MmIxYjNjNDVhMmUzODY5NzY5MzJjNzhiMjhkMjYgbGVnYWN5LXRydW5rCisyODMxIDJjZGRiYmVhOWJmYjMyM2M1NzI0OGRkYTJkNWFjYjE5N2Y0YTJmNzIgbGVnYWN5LXRydW5rCisyODMyIDEwMDAyZTFiYzUyNjQyZDg4ZTMwZmQxZTQ0MjQ1MGZkMDI3MjhlYWMgbGVnYWN5LXRydW5rCisyODMzIGZmZGRlN2ZjNzFjMWVjYjgyZDRlNGJlNjE1NTE3NmQ3ZGM5MDk3NTkgbGVnYWN5LXRydW5rCisyODM0IDcxZDQ5NjI1OWFkMzQ4ZTZkZTFjMzczYmY0NTgwOWZjMDVlMTAzMTQgbGVnYWN5LXRydW5rCisyODM1IDRlMmQyMzlkYzY0YzhmMTJhZWU5ZjI4OGUxYzdmMWUzYTRiZTZlZWQgbGVnYWN5LXRydW5rCisyODM2IDVhZmY5ZjhmZDI5OTVlZmIyYzBlNWYxYjUzNzUyZTg3ZGFmNjI2YzYgbGVnYWN5LXRydW5rCisyODM3IGUzNGViY2JiZGNhNmZmYTRiOWIwODQxYzI1NjYyNDRlZGVhNDBhY2YgbGVnYWN5LXRydW5rCisyODM4IDY0NDFhYTZhNDEyNjQ5ODRmYTdkYjE0NGY3MDQ5YzRmYjE3NDNjNWIgbGVnYWN5LXRydW5rCisyODM5IDIwNWI5NDdiMWQzYzI2Yzc2MDQ3NTZjODA5MTM3YjUxMTUwZTIyNjIgbGVnYWN5LXRydW5rCisyODQwIDZhNjAzNDJjMzEwNzQ4MzZhNDVkY2NjODI0MWNlNzU5OTUwNTA0MmUgbGVnYWN5LXRydW5rCisyODQxIDEwMmRlMzE5OTk4ZTE3ZTBkMWVhOTFlZmU1Nzk0MGYxNTEyY2JlNDMgbGVnYWN5LXRydW5rCisyODQyIDEzODZhNzJhZTYwNDdkOTc2MDUyMWYwMmRiOTQ3OTcyNWEyNzNjNjcgbGVnYWN5LXRydW5rCisyODQzIDc1NDRlYmFjNTY5ODc4MTZkYmU2MWI2YzRlNTI3YmI1MzQwYzUzODYgbGVnYWN5LXRydW5rCisyODQ0IDNiMDliNDBjZWYxZDA5ZmFjMTY1ZjU1NTViZDVjOGRkNTVkYTY1ZTkgbGVnYWN5LXRydW5rCisyODQ1IDkxMjZmNGNiMWNjYTQ3MDVjN2NkZTJlZjU0NGQyYjY1Y2E3MTRiZjAgbGVnYWN5LXRydW5rCisyODQ2IGNhMjhhM2E4MmJiYTg0ODFlMjQ4NzhlNzE0MTNiYTM3ZTBhNDU0N2YgbGVnYWN5LXRydW5rCisyODQ3IGQyNDRlZTAzYzU3NmU3MjRmYTVlN2QwNDlhYzNhMjUzYTU0YzQ0YWIgbGVnYWN5LXRydW5rCisyODQ4IGUxNWJlYTk3MWE1YmQ1Mzc5ZThiYjUzMzA2MGIxZjU4NjVlYTNiOWEgbGVnYWN5LXRydW5rCisyODQ5IDViNzE4NjNjODAxZDI5NmY1MjMyMjQ3NWMxNjY0ZThjYWMzNmM0MjIgbGVnYWN5LXRydW5rCisyODUwIDkwZWE1MDc4NjA5NTBhMzNkZDg2YmIyNjMyYzg1MzMzNWIxMjExMTAgbGVnYWN5LXRydW5rCisyODUxIDg5MWY5ODM1N2MwNDM1NWFkMmIyZDRlOWZkYzM2MTI0OWYzMmZmNTEgbGVnYWN5LXRydW5rCisyODUyIGQ2ZmE2NGNlYzQxMGU2MGMwYTg2NjI3MzYwNDBjYTA5NjBjMGU2N2QgbGVnYWN5LXRydW5rCisyODUzIDJkYmQ3ZTg0NGJkMDgyN2E0ZGIyMDI4YjEwODlhMmY5ZGM0YWJmN2QgbGVnYWN5LXRydW5rCisyODU0IGI0OWJhYWQ5YjY0MDZjNzc3NDlkNDE3ODk2NGVkYWI5NDA1NWE1NTAgbGVnYWN5LXRydW5rCisyODU1IDVjMThkNmM1NzgyNzQyZjI5ZmIxN2E0YWM3ZjY1MzY2OGZkMDI5OGIgbGVnYWN5LXRydW5rCisyODU2IDg3YWI5YzgxZTkyN2VkZDY2ZDhiOGM5MmVhMWFjYzhjNDJjMjE3NDQgbGVnYWN5LXRydW5rCisyODU3IGYzN2Y4YmM5MTkwYzU2YTBmNWM0MjE5YmE1NGE0Yzg1NzEwMjE4ZWQgbGVnYWN5LXRydW5rCisyODU4IDdjMDZiZjE1ZmQyYWJkZTEwOTQxMWQ4Y2EzMTgzYTVlYzkyYzkzMmIgbGVnYWN5LXRydW5rCisyODU5IDhhNjA2NDllNzk4N2U1MWE3NTY4ZjFkOWYyMjQ1NjBkN2YwZGI4OTYgbGVnYWN5LXRydW5rCisyODYwIDgyYzEyNTlhNGVmMzMwMmEwNzMxMjM2YmI5ZjE1MmExMTkxN2NkY2EgbGVnYWN5LXRydW5rCisyODYxIDE0MTE5YjE5NDhmYjQxM2I1ZDYyODczM2Q1Y2Q0YjA0ODA3Y2FjMTAgbGVnYWN5LXRydW5rCisyODYyIDA5Y2UwNGVmNzIzYmU3MWRlNWVmYjE4NGZiMDM4NmQ1ZTg5MTZiOTAgbGVnYWN5LXRydW5rCisyODYzIGY1M2RjYjlhMDRkNjM4MjUxN2ZhMDM0NGVjYjM5NjM0ZTA4YTc1MGQgbGVnYWN5LXRydW5rCisyODY0IDhmZmFlMGI0NmZkNDkyN2I4ZjE2OWQ2YTc3ZjVjZDZiMDFiNjFjYTMgbGVnYWN5LXRydW5rCisyODY1IGE4MDIyYjJhNzdlNjA5NmExYjU4NWFlMWRmNGE0MjYzZWNhYWMyNmQgbGVnYWN5LXRydW5rCisyODY2IDFlOGUzYWI2N2I0NTg1ZTQ4NWUyM2ZhZDVlMzZiYTIwZmFlMGNhYjEgbGVnYWN5LXRydW5rCisyODY3IDc1ODJlZDEzNjg0ZTQ5NzgwNjczYjNjMGMxMTQyMzM0N2I3YjEyMjMgbGVnYWN5LXRydW5rCisyODY4IGJmZGQ2ZTYyNmRkMzcwYWU0MmYyZWM5N2MyYWYzOGI5MWE3ZjZhYmMgbGVnYWN5LXRydW5rCisyODY5IDhiY2I1MGY0MzZmYWRlZTY4ODFhMmJlNWU0MmEyZWU2NDBjYzVmZjIgbGVnYWN5LXRydW5rCisyODcwIDcyMzZlMDJjNDU2MzEyNjc0ZWZhN2M3NmFjMDlmNzdjYjA3NDljNzQgbGVnYWN5LXRydW5rCisyODcxIGJjNWM3N2ZhODAwNjg3Y2ZlNzQwZmZjOTE0NzEwYjY0NTlmZGYzMGIgbGVnYWN5LXRydW5rCisyODcyIDNkOWMyMzEwYWZlODViYzc1MGFlNTZhZDQ1YjJlNWVjMWE1Y2M1ZGEgbGVnYWN5LXRydW5rCisyODczIDAwY2RiOGRlZGQ2ZjJhNTQ2MDA1ZWRlY2VmZjhmNTJmZTg2YzIxMDUgbGVnYWN5LXRydW5rCisyODc0IDg2MjQ1N2UwMjM3Y2E1OGY1ODgzNTcxZGI3NTE2ZDM0MGUwOTE5MGYgbGVnYWN5LXRydW5rCisyODc1IDI0MDNmYjZlYWVjNjIxYzM1OGUyYTVjZTU1MDI0ZmI0NzY3NjMwOTQgbGVnYWN5LXRydW5rCisyODc2IDkzZTIxNWRjMWQ2ZWYxZTJjN2UyMTZiYTJlMDdkYjYzMWM4OTY1MjYgbGVnYWN5LXRydW5rCisyODc3IDRkNjRhYmJkZjcwYTk2OTEyNjE2ZTNhNGI3MzRhODZhMmU3MDcwOTggbGVnYWN5LXRydW5rCisyODc4IDllOTE0NWFiYzQyYWM0NTRlNTg4ZTc0YjAzNjhiODYwOWUxNjc3MzYgbGVnYWN5LXRydW5rCisyODc5IDRkMmExOTllMTIwMmE2YjczNzg4ZTA5YTVhY2QxYjFlYmUwNjU1ODYgbGVnYWN5LXRydW5rCisyODgwIGNjZTA1YTQ3NmUwNDEyZWUwYzMyMjhmNTZhYWE2NGQ0MDU5YmUzYTkgbGVnYWN5LXRydW5rCisyODgxIGY3Mjc4YTA2N2ZiNDMwMzY1YjAxMjMyMTdlMmI1NmRiNmJmMzVlZDEgbGVnYWN5LXRydW5rCisyODgyIGQ4YjE3ZmFiM2E5ODNmMTI3ZTc2N2I5MDE2ZDA4YzhkZTRmYTI4MDAgbGVnYWN5LXRydW5rCisyODgzIDU3ZTk0ZWJhMjQ4NDhjYjgwNTdjMTBlYzdiNWY3ZWFkYzljMjM5OTQgbGVnYWN5LXRydW5rCisyODg0IGU3NTcxYTE4YmRlZjFkMDIxNDU1ZWQxZDJkZGM5NDlhY2E1MjNhZjUgbGVnYWN5LXRydW5rCisyODg1IDQ3NmJiN2U1Yjg1NDc1NjliMThlN2QxYjAwOGQwOTg4YjMyZmQ1NWYgbGVnYWN5LXRydW5rCisyODg2IDc2ZTQ4NzAxMjA0YmYyMzdjOTkxOTU5YTc2ZjRlMjU2ODYwYjFlY2QgbGVnYWN5LXRydW5rCisyODg3IGU4YzZmYTkxMThlYmU5ZWZmNmI5ODY2ODYzMTQ1OTU5YjhhYTlkYTMgbGVnYWN5LXRydW5rCisyODg4IDlhNzU0NDg2ZWYwYjUxMjFiMjZhMjU4NDRkZmY0NzNjZjcwMDA0OWMgbGVnYWN5LXRydW5rCisyODg5IDc2ZDkyZWJiNGQ4MmE3NWM1MDYzZGRmNThjNjAwYTUyMWQwZmNkZjkgbGVnYWN5LXRydW5rCisyODkwIDgyZGQwODFmMzgwZDU0YTc0OTQ4ZWIxOGM5MGMxNWJlMjA1NGRkNDIgbGVnYWN5LXRydW5rCisyODkxIGM4MTk1MmQ5N2ViZThhZDg3NjcyY2VjYmIzOTU5ZGRjYTdmYWU2YTggbGVnYWN5LXRydW5rCisyODkyIGM2NWZjMTcyZjE2ZGJiYTZmZGVhOWNkOWIxYmI4ZGRjM2M1ZmU1YzMgbGVnYWN5LXRydW5rCisyODkzIDAzMzhjN2M5ZjA4Yzk5YWJlZTljOGJiMjc0ZGIzOTJmMmI4ZTIxYmEgbGVnYWN5LXRydW5rCisyODk0IGYxNzlkOGQ1ZWU4Yzg1M2RjY2Y5NmM5ZDA2MTA5NDcyNjUzNzMwYmMgbGVnYWN5LXRydW5rCisyODk1IGNmNWNhYmZiM2Y3MWY2Yjc3OWIxNGNhODc2ODZmY2QwYzkwN2FiY2MgbGVnYWN5LXRydW5rCisyODk2IDFlMjA1ZDA4NzVmNjJkZjU5MmE1MzM5ZDIyMmRhMDExOTk0YzkyOGYgbGVnYWN5LXRydW5rCisyODk3IGVhMGJhZDlmZGY2NzM0ZTkwOTQzYzk1MjQ2MjE1N2Y5YTcxMzI0ZmYgbGVnYWN5LXRydW5rCisyODk4IDgyNDY1NzZlZjNmNTM1OTY5NTc4MTI0ODIyYjI3OTU1MjhmNTU4YTQgbGVnYWN5LXRydW5rCisyODk5IDU1YzYwZTdmMzFlZGEyNzNiZDYyMDdiZjVhMmEyMzEwMzlmOTk4ZGUgdW5sYWJlbGVkLTEuNS40CisyOTAwIDA3OGY5MDE1ZjE3ODkyOGM2ZDIyMzQ5MTJiOTllYzAxNjgzYjA1NDkgbGVnYWN5LXRydW5rCisyOTAxIGFiMWIzNDg2YjIyNjM4ZjU0YWY2YzliMGFmMjY2NDA3Yzc5MTVmZDAgbGVnYWN5LXRydW5rCisyOTAyIGQ3NzgyNDU0M2JjZTk2YTlmMDA2NDkyYmQ3ZTg4YzhmNTIzZjQwZTAgbGVnYWN5LXRydW5rCisyOTAzIGRjNjA5NTNmNjA1Mjk5MDdiODBmMGZjOGQ5YWRjMGYzMzY2MjBhN2UgbGVnYWN5LXRydW5rCisyOTA0IGY3MTAxMTBjZmQzOTJhNTZiYTNiZTlhZmQ5MmFjYjE5NjFmMzJiMjIgbGVnYWN5LXRydW5rCisyOTA1IGRiY2I0OWQ3NDJhMGNmZjJhYzMzODEwYjk0NzdlYzdjMTJiMzU0NDMgbGVnYWN5LXRydW5rCisyOTA2IDgzNGRkNGE3N2VlMjBmOTk5OGI1NmZlMjFkOGE5ZDg5NjJmYzg2MDEgbGVnYWN5LXRydW5rCisyOTA3IGM3YjIzY2M4Y2RlZGFmZjQ4NzBkZGY1M2YzOGJiYThlNDdkNTliMzggbGVnYWN5LXRydW5rCisyOTA4IDZjMGYxNjAwOGJkOWQ0MGZjYWM4YjUxODllMWVmODE1OGUxOTkyMTggbGVnYWN5LXRydW5rCisyOTA5IDQ1YzgxODkzOTRmZjBlM2U5ZDk2MjAzMzJhOGNhMTgzMjU0MjYwZTYgbGVnYWN5LXRydW5rCisyOTEwIDcwYzJmNDA0MzBjNzY5NWVmOTJkOGNjMzE1ZjMzM2I5Y2JjMTkzNGUgbGVnYWN5LXRydW5rCisyOTExIDMyMDg1ZWRkNzdhN2Q4OTRmMjgzNTcwYWJlMzUyZTEwMDExYTJlN2UgbGVnYWN5LXRydW5rCisyOTEyIGZmM2RiOTU1ZTYyOGYzNDE2NDc1Zjc2ZDQyYWQ5YmU0NTA4ZWZkN2IgdW5sYWJlbGVkLTEuNS4yCisyOTEzIGE1ZTY4ODFjZWJmMDljODE2YjgwNTk2MzBiNzhlYzU1MTExMzkyZTcgbGVnYWN5LXRydW5rCisyOTE0IDBkNDk0YmMyNDIwN2Y3N2E1NmVmNzQ1Y2E4NDg2MWJlOTE3YTYzMmYgbGVnYWN5LXRydW5rCisyOTE1IDhiZDIxOTRhZDZmOWE5YjUzZTg4MjQwOWEwZmNhYjk4NmM1NjI5ODcgbGVnYWN5LXRydW5rCisyOTE2IDhmN2IzMWE4YTY3ODVjODQ2NjcwOWY1ZDNmMzNmYThjYWRiNTYwYzUgbGVnYWN5LXRydW5rCisyOTE3IDZmYmIwM2RjNDM5ZWUyNjliMjQ3YWRkZmJlM2FhMGU1NDgzZjA2YWYgbGVnYWN5LXRydW5rCisyOTE4IDJkZDVkYmYyOGEyZGQ1NWQ0YWU3MmNhNWMxODRhMmExMTNkMzY0ZDIgbGVnYWN5LXRydW5rCisyOTE5IDVkMmY2MmFkOGRlZWMxMjIzZGZhYmQwYzU0ZTU1YWNjNmZiZjAwYmQgbGVnYWN5LXRydW5rCisyOTIwIDlkZTNkMDJhYTc1ZDE5YWI5Mjg4NzkyNDkwYmU0NTZkYzc0ZmMyYzQgbGVnYWN5LXRydW5rCisyOTIxIGJmYzY1NTA3NDUyM2QwYWJmNDA4Mjk5NWM3MTU0MjdmYTNhMjEyZGMgbGVnYWN5LXRydW5rCisyOTIyIDQxZGQzOTM0ODdmNTkxYTQ0Y2FhZWQzY2NkNjljZmE3NjRjYTFlM2UgbGVnYWN5LXRydW5rCisyOTIzIDliNjcxZjM5N2E4ZjI3MDM3MDk4Y2EzNjYxNDhlNGQ0MmRkZDBiODAgbGVnYWN5LXRydW5rCisyOTI0IDFkZmIwYzlkMDU3NjdkMGNkYjgwMzdhNmE3YzE1YTM4NjU5MjM2YWQgbGVnYWN5LXRydW5rCisyOTI1IDU3YzNlOWNmZWU0MGZmODU5OWQwMWQ1MWVmNjNiYzgwMTE4ZTdjYmIgbGVnYWN5LXRydW5rCisyOTI2IDA3ZDVkNjJhNGEyYjIwMTY2MGUzMDBiZDNjNmM2ZDU1NTk0ODQ4YzkgbGVnYWN5LXRydW5rCisyOTI3IDdkODRlMGRkZjNiZTJkYzg2NDQ0NGE4NjFkNjU3ZTg2MDlmOGNlODAgbGVnYWN5LXRydW5rCisyOTI4IDM4OTBmNDZkNmUzYjcxMTQ5YTYwN2U2ZTM3OWI5M2Q0NjUzNDM1MDcgbGVnYWN5LXRydW5rCisyOTI5IDA1Mzc2YzkyNmY1ODBkOTliMWQ4OWQ3NzcxY2VhZTcxM2QwODA0ZDMgbGVnYWN5LXRydW5rCisyOTMwIDdhMGQwM2U4YmQyOWJhZTZkOTg0YzM2MWNjMTVkMDRlNjdkMGMzZjYgbGVnYWN5LXRydW5rCisyOTMxIDY3NjAzMWJmNDRlZTFhZDUzOWE1ZDFlY2QwNjNiZTJkZWUxYjhiYmEgbGVnYWN5LXRydW5rCisyOTMyIGY4NDIxZGE0ZWZhNzZiN2Q1ZDU5ZDg3YjJiNDkwMTQ2YjcyMzgxMTcgbGVnYWN5LXRydW5rCisyOTMzIDc0NDY5NmJhODkyN2FlN2JjYWY4NWU2NWNlN2I5MjViNDAzNWIxMWQgbGVnYWN5LXRydW5rCisyOTM0IDJlODJkZDBmOGE5ZTM3ZGFjNzBhYzA2NjBiMGJlNDVhOGI5ODY0MzYgbGVnYWN5LXRydW5rCisyOTM1IGQ5NDVjZjMzYTY0ZjQ2OGFhN2JlYmQyZmRjOTVmNTliZWM1NDVhNGUgbGVnYWN5LXRydW5rCisyOTM2IGM3MjFhZmFiMGVmYTYxZTVhOGUyMjMzNmRkNzRlMGI4N2JmMTczODggbGVnYWN5LXRydW5rCisyOTM3IDdjOGFiY2UxOTc5ODRhOWE2MjI1YTk3Mjg2MjljOGQ1NjAxMDk0ZjYgbGVnYWN5LXRydW5rCisyOTM4IDQ1YjNhNzhmMjU2YmFlNmI0OThmN2MxZDYyOTc0ZGEyMTIyNWJmNzEgbGVnYWN5LXRydW5rCisyOTM5IDcyNTllOTZhMDRhOWQ0NTE0MGYwZDY2YzYyY2U3NmMwOWQyMjVhMDcgbGVnYWN5LXRydW5rCisyOTQwIGMwZDRjYWE3MWJkYWIxMmZiMGEzMzNhZjE0MGMxNWRmOWU1Zjg3MGUgbGVnYWN5LXRydW5rCisyOTQxIDYxNjMwMjBhOTY3ZGJjM2Y3Yjk1YTJkOThlZTI2NTVmMTU4NTZlZDkgbGVnYWN5LXRydW5rCisyOTQyIGIzN2FjOTFlMmEwZGE0YjgwOGJmMmI1NDE4YzI3NDA3MzRhYmQyMWQgbGVnYWN5LXRydW5rCisyOTQzIDMwYTY1MjEwMTU5OWZmMWU3ODZhOTBiMWIxMDE2NWZhNTRkOTNhOGEgbGVnYWN5LXRydW5rCisyOTQ0IDY4NTg0MzE0YTE1NDdmZGU4YTY3MGI2MGRhZGFiMGMwYzFhZGJjMTIgbGVnYWN5LXRydW5rCisyOTQ1IDAxMmUzN2YwNTAxOTBmMTkxMTY1ZjVhOTg5YmE2MTI2MjcwMGEzMWEgbGVnYWN5LXRydW5rCisyOTQ2IDNlMWZiZTg0Y2Y5ZmM2YTI2MzBhYTJhMDdkMTkzZGVmNDEyMDRhM2IgbGVnYWN5LXRydW5rCisyOTQ3IGZiZDY4ZTY5MjE0YzI3ZTA1OTUzODEzZmEwMTg0NTRmOGZmY2Y4MTMgbGVnYWN5LXRydW5rCisyOTQ4IGNkODFlNTY4MDRiMDk0MmIxYTlkNDUwNjBjM2Y3YzExZTFiMTFhZWUgbGVnYWN5LXRydW5rCisyOTQ5IDYzZDM0ZTg3N2E2OTcwOGYzZGViZGUxZTQ2NDUyNjg5M2Q5OGFiMDkgbGVnYWN5LXRydW5rCisyOTUwIDQ0MzE5ZGY2YTkxYzI5Njc3MjNmZWU1MDYwMDIxMjQxNWY3YTg1YWYgbGVnYWN5LXRydW5rCisyOTUxIGJhNGVjMTNjMGY5Zjk4MmVmOWI1ZTU0MmQzNWE2M2E1NTUxNjk1ZDUgbGVnYWN5LXRydW5rCisyOTUyIGY1NjVjZjdmOWFiYTgzYzFhODBjNzFlMTg0N2Y3MzU5NzIxZTMxOTkgbGVnYWN5LXRydW5rCisyOTUzIDE2NDg0OWY1NjEwNWZlMmMzMDYxOWE2NGFmZTIzZGM1NWM2ZWY5NDQgbGVnYWN5LXRydW5rCisyOTU0IDc3ZWU5YjIyMmZkYjRhNDg4ODU3ODVmOWFhNjE0MjViZjE1ZjhiNzUgbGVnYWN5LXRydW5rCisyOTU1IGRjM2I0NTVmNzYzMjc3MzViMDY1YmJlMDZlMDI4MDcxYzU0ZTE5MDAgbGVnYWN5LXRydW5rCisyOTU2IGNiZjBlZjk5OGE0YTFlNTdjZmRhZTY0ODdkNzQ3NGExNWNiNTliYWYgbGVnYWN5LXRydW5rCisyOTU3IGM3YmM1NjE0ZWVhZDViNGY2OWZiZDNmYmZjZmU5NjdkNWY5NjAwOWIgbGVnYWN5LXRydW5rCisyOTU4IDBjZDE5Nzk0N2Q4MTRlOWNmMjJiOWQ0NGE5ZjY2OWExN2QwNzA2NWUgbGVnYWN5LXRydW5rCisyOTU5IDEzNjA2MTg0MDYyNDM0MTUzOTlhYzY2MzMyM2Y5ZDk0MTM3ZGQ0MzAgbGVnYWN5LXRydW5rCisyOTYwIDNjOGI0NDJlNWUxZjJlNmNlMzNhYTRmNTVmZTdiODBkOTFmNDI2NDcgbGVnYWN5LXRydW5rCisyOTYxIGRmYjNiMGVjMWZmOTI5YTY4MjJjZDViYzkwYzAyMDNlNjMyOGM5MWMgbGVnYWN5LXRydW5rCisyOTYyIDc4NGM1MWNiMWI3OTcwYjdhMWM3ZTBkMGIxNGFkOTYwNTY3NzMzNjIgbGVnYWN5LXRydW5rCisyOTYzIDQ0ZWNmZjY4ODRiN2Q3MWNmNGM5ODBmZTlhMmFkODAwMzA1OWQwZGMgbGVnYWN5LXRydW5rCisyOTY0IDk2NTJmYzgzMGExMmQ5YWJhOWFkODZjMGM0YzZjODdlYmU5NmQ1YjkgbGVnYWN5LXRydW5rCisyOTY1IDNkNjU0MWEyZWNhNWEwNjI1ZTVmNDI0NDkwMDQxNTUyZDJhYzkyYTcgbGVnYWN5LXRydW5rCisyOTY2IGQwNTcwNGEwMDBlYmRlNWQ5MWEyM2NlMTYyZWFjYzczNDhmMTFkZTkgbGVnYWN5LXRydW5rCisyOTY3IDNhZGVjZTJjODU2NzA0NWRjMTk3ZmY5OGNkZjhiM2I0M2U1YWY2ZTcgbGVnYWN5LXRydW5rCisyOTY4IGJhYjJiZWJkMzVlNzM1ODFhZTRkODg5YzFlNWIwNGJmZmQ2YzFlMDggbGVnYWN5LXRydW5rCisyOTY5IDI1OTkyM2U0ZDdiMTdmYmNkMDBkNjgxN2Y3OWYxYTdiYzA3NDNkOGUgbGVnYWN5LXRydW5rCisyOTcwIDQzYzg2ZDFlYjIyYzI5NDY2NjAzMTgzMjhmOGQ1NTljMDU3ZDFlNjMgbGVnYWN5LXRydW5rCisyOTcxIDBjZmYzNmIxMTBmZTU1Mjc0NjlkMDZjMzYxMTg0MGEyZDdiZGRhODEgbGVnYWN5LXRydW5rCisyOTcyIDg1N2VkM2ZiZGMwZWEzOWQyYjA4ZjA1Y2Y2ODg3OWZhNjRhM2RlNzMgbGVnYWN5LXRydW5rCisyOTczIDM3NzNiNmY2ZGQ1M2JjZWI2YzQ3ZDFjNjdjNGU3ZTgyZGZiMDk3M2MgbGVnYWN5LXRydW5rCisyOTc0IGQ2ZTI1NzkyMzIzZmI2YmZjZTQxOTcyNmJhYWJlNzhmY2MxMWU4ZTQgbGVnYWN5LXRydW5rCisyOTc1IDk0ZWE2ZWE3ZjdkNTU2YWY3ZTU5NjVjMGFmMWQ1YTI5MzI1YTgwZmYgbGVnYWN5LXRydW5rCisyOTc2IDAxYTZiZjU3NDUyZTU1YWVkNzE1NzMzZmYwZDFmOGNlOGJmY2VmNjQgbGVnYWN5LXRydW5rCisyOTc3IGYwOGQzNDQ5OTI2OWRlMGU0OGZlY2I0ZWJhYzQ3ZTk0NTg4Y2IzMjkgbGVnYWN5LXRydW5rCisyOTc4IDY1MDhjOTNmOTQ3MjlhYWRlZThjNGIxM2M2MWY5YzJhZGIyMjAxOTYgbGVnYWN5LXRydW5rCisyOTc5IGU0YTI3ZDg0ZWEzNjc4MGYwODY0YjNkNTRjM2E4ZDc2ZWNiYTFhZGIgbGVnYWN5LXRydW5rCisyOTgwIGFhNjMzZjBkZWZhNjFlYTk1NWUwNGVlZWRiMzQ0ODZiNDU0ZTYwNjAgbGVnYWN5LXRydW5rCisyOTgxIGUxNTdjMTJjZDZlN2Y3NDkxY2UzMGZjM2M1M2FhY2VjNWFiZmMzNjcgbGVnYWN5LXRydW5rCisyOTgyIGExZTg0YjQ4NDQ3YWU2NDRiYmFkZmJlNWMzOTYyZTA3NzgyZGJiZTkgbGVnYWN5LXRydW5rCisyOTgzIDA5YzY5YTFlYzdiMDkyOGIxZmI5MTdjZGRjYzFjMWVhNWE3OTVmY2YgbGVnYWN5LXRydW5rCisyOTg0IDAxZmM1OTAwMzMzOWY3NzAzZjBmOWNhM2NiYzAyMDUzZGI4NjJmZDEgbGVnYWN5LXRydW5rCisyOTg1IDFlZWNmZmQ5Njk2ODllMDgwOTIyMjQ5YWRhMmQ2OWFhN2NlNTcwNmMgbGVnYWN5LXRydW5rCisyOTg2IGQxYjg5ZTg1Y2U3NTZkM2EyZDZkNmM3M2YxODI0MWEyYzQ2ODEyNjIgbGVnYWN5LXRydW5rCisyOTg3IGI4NGE2ZDRkZTkwZThmY2Y0MzRhMzFhZWYwZGU5ODFkNWRkNzE2MjkgbGVnYWN5LXRydW5rCisyOTg4IDFkMTk2NjlmNTY4NzY5NjQzM2E1ZjJjMDQ4YjkzZGFjY2FiOTQ5YTcgbGVnYWN5LXRydW5rCisyOTg5IDNjYjlhMmI3YjQwY2Y0MmRlMzlhNGE5MDA0ZmE1MzYzYWI3MGM0M2MgbGVnYWN5LXRydW5rCisyOTkwIGZhZjExYWRjY2ZjNjViZDBhNzQ4MTM0OWNhMTNiZWE1ZWExOGUwMzcgbGVnYWN5LXRydW5rCisyOTkxIDJmY2Q0MDFhNjIzMjNhNDY5NGRlYTBhZjJjYTg2Yzk1MzQ2ZDk0YzggbGVnYWN5LXRydW5rCisyOTkyIDIxYjNlYTZiZDMyZDMxNmUxZDliNjdmZmZlMDMwNDU4MmI2OTFmNTYgbGVnYWN5LXRydW5rCisyOTkzIGVhNTA3MmRlNzQyNzNhNTI5ZmEwMDY0MjMzOWZmYjRkNDkyZmEwZGUgbGVnYWN5LXRydW5rCisyOTk0IDNlYjA1ZDJkYzdiMTFmNDFiNTYzMWVjODkzZGU3OWJlM2I2ZDI0NmMgbGVnYWN5LXRydW5rCisyOTk1IGI0MTc5MjMwNzAwOGRlYjQzOGE5NzNhYjc5YTI3NzFlNjhhNzdlYzMgbGVnYWN5LXRydW5rCisyOTk2IGE3ODgyZmM2ZWEyNzA1YjhlMTUwZGJiYzFlMWZlOTI2NDJjOTNhZTEgbGVnYWN5LXRydW5rCisyOTk3IDZiZjY5ZjU0YTkwM2Q4OWU2ZDVjMTk3YTQ1M2Q3NGYyN2RjMjk3MzYgbGVnYWN5LXRydW5rCisyOTk4IGYyNzczYTZkYzUxZWVjYjI4YmRlNWJmNzZiMDI0ZDQ5MTk3NDI1NjggbGVnYWN5LXRydW5rCisyOTk5IDdiNGFkZTUzNmFmODhmNDUzMGVmNmU3NTEwYzlhNGYyNzdiMTY2NmMgbGVnYWN5LXRydW5rCiszMDAwIGI5OGFlZjIxM2RhZWE1NGMyMzBjODNjZDY0NDBlMzNmMmI4ZDgxNzUgbGVnYWN5LXRydW5rCiszMDAxIDA3YThjNDQzYjgzMTA0ODNjYzRlNTI2NzZjZGI1YmIxMjc2MWU5M2EgbGVnYWN5LXRydW5rCiszMDAyIDE3ODBlYjhmZGUyYjY0NWYzM2EwZWE3MzJhMWFkOWYxMDQ2M2ViMDUgbGVnYWN5LXRydW5rCiszMDAzIDQxMDFkZWQ3M2M1MmRhOGRmN2VjMDNlMGJmMWU0Mzk5YmE0NGZkOWMgbGVnYWN5LXRydW5rCiszMDA0IDNmODFiNWFjMmJiMjAyNDA4NTkyNTU3ZDAyY2UwZTc3ZmM0OWU3YWQgbGVnYWN5LXRydW5rCiszMDA1IDE0NjYzNWRlZjAxZWFiMmRiMzcxZGU5YTM3ZTEwMjkzMjBhNDg1NTYgbGVnYWN5LXRydW5rCiszMDA2IDM5OGMwMGYxMWEyZjQ1YzI3ZTQzZmNiMTk4MzM3ZTJmNDM0MWIxZjMgbGVnYWN5LXRydW5rCiszMDA3IGM1NWNiNzZiYzgzNzA4MWUwZDUxYWY5N2Y0OGIyNTBmZGFiOTA0NGEgbGVnYWN5LXRydW5rCiszMDA4IDg1MWFjNGE4YmU3ZDg4NWIzNzFjY2UzZWFjNTIxN2RlOThhZTc1MmIgbGVnYWN5LXRydW5rCiszMDA5IDE2NDBjYzNmMWE1M2Y4MDc1MmZiMmM4MGJkNTcxYzQwZGVlYmVlMDkgbGVnYWN5LXRydW5rCiszMDEwIGQzMWVjMTVmNWY3MTA2NDRhZTI3MzYyOTgzZjdkNmIwYTY5ZjQxYWEgbGVnYWN5LXRydW5rCiszMDExIGIyYTQxZjZhZWFjOTkwY2FjYmEyNGQwYTkyNzk0YjIzMDMwMjJlMzUgbGVnYWN5LXRydW5rCiszMDEyIGZlNmE1ZjI2NDBhMjc2ZDkwMTdmNWVkZjAwNzQ0NjFkM2JkOWI5NmIgbGVnYWN5LXRydW5rCiszMDEzIDg3MmEzY2FlZmYwNzI0MjAzNTM4OWQ2ZmU2NWYwMjgyYTIwMzZiOTcgbGVnYWN5LXRydW5rCiszMDE0IDRkZWZhYmI4Mjk2YjViNDcwNmQwMzdkNThhYTBkYzY5NTZiMGRiMzkgbGVnYWN5LXRydW5rCiszMDE1IDFhYzVjNjcyN2U4YzU4ZGM4OTk0MGI2ZjcwMDc3Y2IwY2JiYmIxMmUgbGVnYWN5LXRydW5rCiszMDE2IDRkNThlMmM1MDg4N2E1YWNhZThlODkyNTg0ZDU3YTY1YmE5NGNlN2UgbGVnYWN5LXRydW5rCiszMDE3IDM5ZTViN2UzMTU4ODg1ZjMxZWJhMzQwZGVmZjAyNWEwNzFkNWMwMzAgbGVnYWN5LXRydW5rCiszMDE4IDZmNDk5ZDVkYWRkZjdhYmNmN2U0OTE0NDI5NmRkZThhMjgxNzAwNWYgbGVnYWN5LXRydW5rCiszMDE5IDI1NDFiM2QwZjIwZjcxZTYxNmI5N2E5ZjBkZTI2MmE3MDMyZWRhNzcgbGVnYWN5LXRydW5rCiszMDIwIDhiYzE3MGU1ZWZlZTcyMTQ2YThjZTJjYzA5ODA3NWQ5MTdhMzhlM2QgbGVnYWN5LXRydW5rCiszMDIxIDZjYTFjNDRmZDUyNzhhMzI5Y2M3ZjE0OTU5MGNlM2EyZjdkNjViODUgbGVnYWN5LXRydW5rCiszMDIyIDZmM2ZlZDI1MGFkYjBmYTIyMjc3ZTFkOGFhMjVlZTlmZWZhMTZlZjYgbGVnYWN5LXRydW5rCiszMDIzIDM5MTM0Yzk5YzkyMzgzYTU3MTY2Njg3MGY3YWE3MjA2N2ZiZmYxMTAgbGVnYWN5LXRydW5rCiszMDI0IDc2MDk1YThiOTZjYWViZjBkZGNkMmI5ZWZhMzE0YTdiYzM3NzA4ZmQgbGVnYWN5LXRydW5rCiszMDI1IGJjZjAyMDUyZTkwOWU4MWE3YzRjMDA3OTZiZDNhNmI0ZGIyMmVhZTIgbGVnYWN5LXRydW5rCiszMDI2IGI2OGIxMGEyMTUyMDA5M2U4YTE2ZmIyNzM3ZTViOWRhNDBjZjc3YjAgbGVnYWN5LXRydW5rCiszMDI3IGU1OGY0MGMyZjI4NWNmNWUzNmM2MWRiMDkxNDUyNzc3ZjRhMzRkYzAgbGVnYWN5LXRydW5rCiszMDI4IDU4ZTg3NzBkYjQ0YWNkZmVkMWQ3NjdjYzZkMDEwODlmZDQ5ZTJmOTcgbGVnYWN5LXRydW5rCiszMDI5IDA2YzA3ODc1MGU4MDhhMzNiOGI3MzFjMjA1MzZlZmVlMzkxNWRkMTQgbGVnYWN5LXRydW5rCiszMDMwIGNiMTQ2YWE5ODdjOTQ1Zjk2MDQ3Zjc4NDY1ZTc2MjMxOGMzODA1MDAgbGVnYWN5LXRydW5rCiszMDMxIGIyZGI0YmYzNGZmOGNlNDk5OTVkYTdlODQwNDgzYmZlNzI5ODc5NDIgbGVnYWN5LXRydW5rCiszMDMyIDhlMzUxZmIyNTc3YTAyYjI2MmE3ZWY1MDk3NjczNWRkMmE1ZGIyOGYgbGVnYWN5LXRydW5rCiszMDMzIDk3MTVmZGMxZTQ2MmRmZDRmNTBmZDhjMGQ3YjNkYTcwMjBhOTNmYmIgbGVnYWN5LXRydW5rCiszMDM0IDIyMTY5ZmNjMTE4MjZkYTY1NzgxOGYxODJjMjZkYzM3MzlhMjU5NzUgbGVnYWN5LXRydW5rCiszMDM1IDdhMDEzZDY0NDVhNDg3NzU1YzQ5NjFjYTg3MjFmOWRiMzZmZGIyYjkgbGVnYWN5LXRydW5rCiszMDM2IGFhZGRmODIxZjVkNDMyY2YxMTZiM2FiYTQ0ODYxMTVjMzhlMDJlZDEgbGVnYWN5LXRydW5rCiszMDM3IDRjOWJjNTJiODA4MGQzOWNmOGRmNmZjZThiZmQ4MDgxYWRhY2VjOGQgbGVnYWN5LXRydW5rCiszMDM4IGNkMGU3ZjI0ZmFjYTFiMTFhYjU2YjVhMWI2MmQ4YWYwMDNjMDQxYTcgbGVnYWN5LXRydW5rCiszMDM5IGVjMzE3NDg4MzdkYzI3ODlmNDg3OTQ2ZjMyNTkxNzMxOTcxNDJmOTIgbGVnYWN5LXRydW5rCiszMDQwIDlmYjJhODY4ZWVlZWM2NWFlN2RjNjE5ODA0ZWQ1NTkxOGQ3OTFiNWEgbGVnYWN5LXRydW5rCiszMDQxIDM2MzIzMTQwZjc1MTg1NDVlMmJhZDgzNWZhZTk0YWQ3YTJmNTU2OTUgbGVnYWN5LXRydW5rCiszMDQyIGY5NDgxYWE1ZTc3NmI2NWY3YmQxZTI2YjU3OTYzZTE4NWI0MWQzYTQgbGVnYWN5LXRydW5rCiszMDQzIDM2YjkzNDMyNmZlZDVmNDU1YTdjMGZmYWQ4ZDMzNTA1MDllMTI4MjkgbGVnYWN5LXRydW5rCiszMDQ0IGFmZjgxOWNhZjIxYWY1NGNiNjYxYzY5OTBlMDE0MDliN2QzZDUxMWMgbGVnYWN5LXRydW5rCiszMDQ1IDAwZWJlNWZiMGFjNjcxMjBiNjA0ZTUxYTI3NjhjM2VkODBiMGE4NDUgbGVnYWN5LXRydW5rCiszMDQ2IGE1NGU0YTcxN2M5YmJlMjkxZDkyZTRkNjMwNTUyYjRkOWQ5OGU4ZWUgbGVnYWN5LXRydW5rCiszMDQ3IGMwMmMzY2JiOGFkMTA0Nzc0MWJjNmY5YjQ2MjJjZDcxZmNmM2ZkNTggbGVnYWN5LXRydW5rCiszMDQ4IDI2NmRlNTlkZThhOWQ4NzI4N2NiNDgzZGVlYzI4NmQyOGQwYTA4ZmEgbGVnYWN5LXRydW5rCiszMDQ5IDlhMDVlMmJmYTc0YzM2YmJhNmJlYjdkZTNmNTA2ZTZlZGYwZmYxOWEgbGVnYWN5LXRydW5rCiszMDUwIDE2YTE5NTM1NGIyYmVlMDZiN2ZjM2I1ZDlhZGIyNjUwNDRjODIxZDIgbGVnYWN5LXRydW5rCiszMDUxIGRkN2RmYWQ0MDRjZDgzMmRhNjM4ZjE3NTI5NGE2ZWZlOWZjYjdhZDQgbGVnYWN5LXRydW5rCiszMDUyIDE4MTQwOTE0MWExODA2ZDdiODVjMzE4ZmRiOTY0M2JlMjQ3ZWUwOWMgbGVnYWN5LXRydW5rCiszMDUzIGIzZDYzOWFkNjY2ZDViMjBiMGRiN2M1NTNjMDM3ZTQ5ZGFlNWQ2NmQgbGVnYWN5LXRydW5rCiszMDU0IGE4Y2E3MjBmZDkyMTllZWE2YmNlMzJkZjZhOTlkNWY5NWEwMTZmYTcgbGVnYWN5LXRydW5rCiszMDU1IDExZWE2NjljMjMxZTEzZDI0ZDQ5ZGIzOGM3NTMxMTAyOGYzNWM0NGQgbGVnYWN5LXRydW5rCiszMDU2IDIyNjU4MjgyMmNmYWYxMjJmMGVkM2NhOTViYjEyZmE5YzNkMTE1NGUgbGVnYWN5LXRydW5rCiszMDU3IDQ2Y2I2YmNlNGM0NzVmNGZlZmM1MjI4NDkxOTY2NmQ0ZmFjNDRmZjYgbGVnYWN5LXRydW5rCiszMDU4IGJlYmRjMWFjZjQ3NDU5Yjg2ZTVjZjk3NTAyZGZiMDYyMDE3MTc3Y2MgbGVnYWN5LXRydW5rCiszMDU5IDY0NTllMmYyMWJmNjgwNzczNzg4ZmMyYWZkNjYxOWI3MmQ3YzhlYWEgbGVnYWN5LXRydW5rCiszMDYwIDBjNWIyZDllNDVlODJkM2YyZTVlOGFlZDQ0YWY1ZmFjMmNiOTU1NjEgbGVnYWN5LXRydW5rCiszMDYxIGVmODY1MDI1MDhlMmYxMDg2YzFhMTg2YmZiMTNhNjVhMGYwZDJmMGYgbGVnYWN5LXRydW5rCiszMDYyIDk5YmZmMWRiNzVmNGEwZmYxZDY3MjlkZTFlYzk3YTZmM2FiMWU2NzQgbGVnYWN5LXRydW5rCiszMDYzIDU4YTc0MzhjMmU3ZWY5MjJiMzYzMTc5ZTA0NmYwODI5YmJhYWFkMGEgbGVnYWN5LXRydW5rCiszMDY0IGZlYTNmNTk0ZGY3NzQ2Yjc3NmExM2NiOTBmM2VmYTQ5YjNjYjdmNTQgbGVnYWN5LXRydW5rCiszMDY1IGE0NzkzYWUyNjY4MjZjMDEzNGM0OTY3ZDBhMGJiYzNhNjM4NGFjMTQgbGVnYWN5LXRydW5rCiszMDY2IGZkNjJjMjgwOTZiNTg3N2U2NmQ0YmVkN2MxZmE0NTkwMTA2NTc0NzkgbGVnYWN5LXRydW5rCiszMDY3IDdmN2JhNjVhMjgyNWMwZTQ2YjU4NGY5YjEyMjU5OTNiYzAzNTZiNWMgbGVnYWN5LXRydW5rCiszMDY4IGExZjViMjE2ZTM5MmNkOWI1MmE1NzU5YWM2Y2FiY2EzZWFiZjg1YTcgbGVnYWN5LXRydW5rCiszMDY5IDYzNzk4Y2RlNTgyY2Y1MzU2NDVhMjQyZWNhM2RhZTc5ZmMwZTM2MGYgbGVnYWN5LXRydW5rCiszMDcwIDMyMDEwZDM1NWZiNjEyMmU1MjU4ZWE5MjM2NjM0NjU4M2RiNWY1YmQgbGVnYWN5LXRydW5rCiszMDcxIDQyNGY1NWU2N2Q1ZDMyNGI5ODY1NzZhNWZkZTk4YzE0N2NmMmI0MjUgbGVnYWN5LXRydW5rCiszMDcyIDRkYTBiN2RhZTc5NmZmOGYyNThhZDZiN2E0NzBlNmZiOWNjM2RiMWQgbGVnYWN5LXRydW5rCiszMDczIGE0ZjJiMjIxMGIwMjExNTAzMGM1OWExNTc1Mzk2MTU3MzM5MzhkNmYgbGVnYWN5LXRydW5rCiszMDc0IDRmZDIyNjAyZTI4MmMxZWU4YmY1MTg3ZmQxNGZkMmIzYTg0YmE1NjcgbGVnYWN5LXRydW5rCiszMDc1IDYwZTMxMThkMzA3MzdiYjZmMjljMzg3NmE0YzgxM2M2MzA0ZDQ1OTkgbGVnYWN5LXRydW5rCiszMDc2IGU5OGE4ZjgwMjkwM2E2MjljNjI0NjYxNDE0Y2M4OWNhZTJhYzc2NmQgbGVnYWN5LXRydW5rCiszMDc3IDc0YjcxNmU5YWM0OTg2ZTQwMDM3ODkzODFjZDBkZDA0NGUyYTJhMzggbGVnYWN5LXRydW5rCiszMDc4IDM5ZWU3ZGU3NDc1MDJlOTYyYmRiNWM2ZTg3MmIzNjdmNDJiMGE1NWEgbGVnYWN5LXRydW5rCiszMDc5IGZlYzE4ZTI0NGQxNjg4MmIyOWYwZmQ1N2JlN2Q1MTFmZDJmZjI5ZjYgbGVnYWN5LXRydW5rCiszMDgwIGNmZGQ1NzVlZmZmMmI0MTU3MGIzN2JmYmZmODBiMmMzNzUxMDYzYTUgbGVnYWN5LXRydW5rCiszMDgxIGU0M2EyMjBjMjg3YWEzZWEyN2I3YzFlMTNmNWZjMDMwOTE5ZjVkZjQgbGVnYWN5LXRydW5rCiszMDgyIGQzYjI3ZmZmMDBiMmYxMjU3NWVjMWQyMTNiOGU2ZDdkMzc3OWVlM2IgbGVnYWN5LXRydW5rCiszMDgzIDhjNzNjNWYzYjZjYTczZGRiNjY5NGE2YzU1Mjg3MDk1MDZhZmY2ZDYgbGVnYWN5LXRydW5rCiszMDg0IDgwNzg4MzQ5OTZlY2M1ODJjYTQ0Nzk2ODMxNDBmMDhmN2YzMGIwMzQgbGVnYWN5LXRydW5rCiszMDg1IGMxMmI0NDVjZGFjZWExZDlmOWEwODhhZjYyMmE2YTViMWMwNGNhYWUgbGVnYWN5LXRydW5rCiszMDg2IDcyYWNlZWQzNjVkNDM1YjdjMjk1M2RiODQwYmNkMDU0NzY5OTgzNzMgbGVnYWN5LXRydW5rCiszMDg3IDI1MDVmZDIwZDI3N2E0NzllMGQ0ODc2NjJiOGRjMjM0ZDZiYWUyNjAgbGVnYWN5LXRydW5rCiszMDg4IDYxMTQzYmYwM2I0NDc2ZTA1ZTI3MmNjZTlkYWE5NTY2MTNhY2U3NDcgbGVnYWN5LXRydW5rCiszMDg5IGMxNTZkNDk2MGMyYjQwODU5YjFmMDU4YzI0ZmQxYjA2MDUwNDNlNzAgbGVnYWN5LXRydW5rCiszMDkwIGFhY2JkNGI1NThjN2VmY2ZiYmY3N2NjYmJlMjcwNjgzNDZjMDBiNDggbGVnYWN5LXRydW5rCiszMDkxIDg3MjVmYThkN2ZmOTFkODFhNDM2YWE2MWQzNGQ3MGY2Y2VlMjkxMjkgbGVnYWN5LXRydW5rCiszMDkyIGZmMDJiOTQ4YzlhODBiN2I5NTVjMTU4NDFiOTMxZjU0MTJiZDgxYTIgbGVnYWN5LXRydW5rCiszMDkzIGU1MDYxOTczMzJjMGMxYTExZWE0YmY5Y2RhNzI4MDYyZTg4NWYwNGUgbGVnYWN5LXRydW5rCiszMDk0IGQ4NjA4ZWQxY2MzYjEzYjk4MjMwMTJlMGJhZjZkOWE0NjZjNWUzZTcgbGVnYWN5LXRydW5rCiszMDk1IDYxNTk4M2YxYTNmZjNmZDU5MmUyNjczYjRhN2U0NGJiZTMzZjRlYmQgbGVnYWN5LXRydW5rCiszMDk2IGM0MzI3MzhjZjY5YWVhZTE1ZjU4OGNmYTZmNGYxMDlkZTc5NGFiMzIgbGVnYWN5LXRydW5rCiszMDk3IGQzODNkMjczMzE3NjVmOGQ2ZWNjMDZlMzFkNDUwYjRhZjM5YmNjMjMgbGVnYWN5LXRydW5rCiszMDk4IDQ4Nzk5Njc5NmVkYzZjNzMxYjc1MGNmOTU4NmQ5NTIxMzc5OGVlMTUgbGVnYWN5LXRydW5rCiszMDk5IGRjZTZkYzYyZjEwOGVlNDRiMDQ3ZWRiMDJiZjQ0ZDk5Y2UyMDVhYzkgbGVnYWN5LXRydW5rCiszMTAwIDU4YTRjYjE4ZjAyNWFmODZkOWRiM2QwOTFjOTFjNGY0NDY4NDQ3OGYgbGVnYWN5LXRydW5rCiszMTAxIDE4MzY5YmI5YzI0ZDA3ODc5ZjYwNWVmYTdlYzUxYTUwZjI5MmQ3YTggbGVnYWN5LXRydW5rCiszMTAyIDcyNDNhOTA2OTM3Y2Y3ODQ4M2NlZWRhMzUwMzRhNGQwMTZjNDMyZWEgbGVnYWN5LXRydW5rCiszMTAzIDg0NDQ4MmI2NDY3YWFlM2Q1OGM4MWE1MDU3MDVlNTIzYmE2ZWYyYjEgbGVnYWN5LXRydW5rCiszMTA0IGNkNDBlM2VlYmI0OTM5MGY0ZTAzNGFmMzExZGNiZTI2MWJjN2EwMTQgbGVnYWN5LXRydW5rCiszMTA1IDNhYTY1ODkyYjc1YzQ3MDY5NjczNTczMzVhOTg3NjE3OWU1MzlhOTkgbGVnYWN5LXRydW5rCiszMTA2IGI0NmYyMWM4MzM2OTA5NmYwMDNkOTdiOGZiNTRkNWFiOWQ3NThmMTEgbGVnYWN5LXRydW5rCiszMTA3IDIyMmYwNGY1NTA4MzM1NzI2YWI2ZTYxZTFkNWRmMzQ0NzczZDhiMWMgbGVnYWN5LXRydW5rCiszMTA4IDQ2NWI5ODQxNzcwZTM0NTY1ZTRkOTZjZjBkZjcwYmNhNGIwN2Q4ZTYgbGVnYWN5LXRydW5rCiszMTA5IDM2ZTJiN2EwMGQ3MmYzNmFmYmFiYzgwMWUyZDAzNWRmNzAwNTMxNGIgbGVnYWN5LXRydW5rCiszMTEwIDI2MGQ5NmRiMTEyZjg3ZDIwNGJjOGU1ZTJkYzQ4NzNmYjgxZmMyMjUgbGVnYWN5LXRydW5rCiszMTExIGU1YWU0MmZmZDlhMDc1N2Y2YTc3MWY5NjcxZWZlNjA2NmJlMjM3MzYgbGVnYWN5LXRydW5rCiszMTEyIGJjMGFiMDE3NTRiYTVkY2I0ODAwNDFlNTNkOWQ4N2E2N2Q1NTMwN2YgbGVnYWN5LXRydW5rCiszMTEzIGI5ZjI0ZDBjN2Q5NjE2YTdkMDJmMTYwZWM3OGE0MDMwZDk1NjdjMjMgbGVnYWN5LXRydW5rCiszMTE0IDAyODRmMTA3OWE3YmFlNTY0MjNjOWNlNzNhZTIzODNiYTcxY2RhNWEgbGVnYWN5LXRydW5rCiszMTE1IDdkOGU1MWU1ODBkMWEyM2NhMzNkMjAyODk3NmY1MmQyYjJiZDY2OWUgbGVnYWN5LXRydW5rCiszMTE2IDJiNjA4MzI3MjNjMTQzMWY3OTVmODQ4ZDMxNzNiNjM3OWE4NWRlOWYgbGVnYWN5LXRydW5rCiszMTE3IDI2NmE4YmEyMDc4NGZjZjQxYmM0ZWYyOGVjZmNlOWE5OTI0ZWM4YzcgbGVnYWN5LXRydW5rCiszMTE4IDAzZGU2NzA4MGM5NTYyNDI4ZGM3MzdlNzFmNGVlNGVkMjI1MmQ5YTcgbGVnYWN5LXRydW5rCiszMTE5IGE2MGNiNTMyMTIxMTBlNTQwMGI0M2I1Yjg4ZWJkNmNlNzdkYzdlMTkgbGVnYWN5LXRydW5rCiszMTIwIDVjNmNkYjU4YTgwMWNiODE5NDY0ZTBlOGNkMWUxZGQzMTBmODgyMDUgbGVnYWN5LXRydW5rCiszMTIxIGE3MzZlZjE4NDBhNTFmZTJiNzVlYTg5ZjUxOTE1NThlZDk0MTNiNTYgbGVnYWN5LXRydW5rCiszMTIyIDY4YjMwMmFkODRhMTkxYjQzZDk5NTVjNThjODI5MzljZDYyOTU5OTAgbGVnYWN5LXRydW5rCiszMTIzIDdkM2EwNTNjNjc2NWFlNTZlYjE2YzEwZGM1ODlkNWMwZmYxMzA5OTUgbGVnYWN5LXRydW5rCiszMTI0IGEzMWUwNzg0NzA2Mzg3NDY5Y2YwZTlmM2VjYzhiODkxMTdmZDRlZmIgbGVnYWN5LXRydW5rCiszMTI1IGI0MWU5NTczMWU0MjI0MjE3ODVmMTVkODk1NzEzM2Y0NGZkM2Q5ZmQgbGVnYWN5LXRydW5rCiszMTI2IGI1ZmNiNjYyNDY1ZTczY2Y4ZjY3ZTk1YWU5ZDA1NDMzZTkzMjA5ZjcgbGVnYWN5LXRydW5rCiszMTI3IDRiZGIyNzk0M2UyMjQyMTM3MDA2OTA5MGRhZTQwMGU1M2JmYzdmNWUgbGVnYWN5LXRydW5rCiszMTI4IDE0Y2M0YjA3Y2ViYmQ2MTFlNzcwYmY3YTFiNTA5MjhkOGRjN2MwNzkgbGVnYWN5LXRydW5rCiszMTI5IDI3YWFmOTQ0NzVkZGJkNzU5YjA1MDJkN2JjN2ZjNjM5Zjk4YWZlNDAgbGVnYWN5LXRydW5rCiszMTMwIDFhNTIwMjkwYzM5YzA1MjVhN2ZlMDIxYTIxMTIzYTgyNDJhZTIxNTkgbGVnYWN5LXRydW5rCiszMTMxIDA2YTljODI4YjYwODkxYjU4Y2JkNmE2YzMyM2IzZTkwNDExZDQxYWMgbGVnYWN5LXRydW5rCiszMTMyIDliZmU3M2M3NzMzNGNhYjYxMzAyMzZiN2Y1NDczNGY5OGZlNGU4ZWYgbGVnYWN5LXRydW5rCiszMTMzIDQ2NTdmN2M5ODBlODU5ZjU5MjE0OTlkNjU4NmZhM2VjNzg0YjQyNjcgbGVnYWN5LXRydW5rCiszMTM0IGY2NzE5MzhkZmRlMmU1MzI4YWE4MDhlNzQ4YTAxZGFkYjE1MWNkYWMgbGVnYWN5LXRydW5rCiszMTM1IDdiMzdiNWU3MTQ5M2EzNjcxOGY1NTAzNTRlY2Q5YTYzNWUwZGNlOTQgbGVnYWN5LXRydW5rCiszMTM2IDMwYTI5MDI1N2MzMWQwYjA4ZDE3Mjg2NTJkMTRkNmRlNTMxNTJkNjUgbGVnYWN5LXRydW5rCiszMTM3IGM5YzAzMjgzNjhhOWUyYjY0MzkxNjA0M2ZmNWI2NWMyMmY0NWIwYmYgbGVnYWN5LXRydW5rCiszMTM4IGFkYmFjNTg5M2Y5YzYwZGZiMTczYTJmNjUwMTc2NDU2ZGVjYmZiZDIgbGVnYWN5LXRydW5rCiszMTM5IDMxYjAxOGJkYTdlMmQzZjUwMGQ5ZmM3NDhlNGE5YmUxNTliMWU5ZjEgbGVnYWN5LXRydW5rCiszMTQwIDU3NmRjMTRhMjQwMDk3MTJlY2IxMDYzYzkzODY0YWI3ZjNhZmMzNTEgbGVnYWN5LXRydW5rCiszMTQxIDEzYzk5ZWFmMzJhOGM0NWZjOTM5ODE5YmEwMThjNGIxOTQzYjU2NjAgbGVnYWN5LXRydW5rCiszMTQyIDNjNTVlNjEyYTZmY2MxZDdlYzQxOTFlZTA0MGU5MzY2YTcyZTFiYzcgbGVnYWN5LXRydW5rCiszMTQzIGZmZTJmYmM1ODNkZWNkNzkxOTg1ZTI2M2ZlOTc5YmU4ZjUzOGQ5YWUgbGVnYWN5LXRydW5rCiszMTQ0IDlmMWRiNTU2ZmZiYzI4ZWEzZGFkZDJkNmEzMTk3Mzk4MmFlMTA4YzYgbGVnYWN5LXRydW5rCiszMTQ1IGZiY2I4ZDBiZDQ1ZTAzMjFlYzlkNTRkNWFmYWRkZDc4NzNjYTgwYWYgbGVnYWN5LXRydW5rCiszMTQ2IGIwNDVlNjhiYmNkZDU0ZDRiNDVlM2MwNzNkMDI4MjcyNmEzZmUyODkgbGVnYWN5LXRydW5rCiszMTQ3IDg3YWVkNTE2MDE2MTc2YjRhNDAwMjU3OTAyYTU5NzkyNjVjODY5ZmUgbGVnYWN5LXRydW5rCiszMTQ4IDVjYzdhM2NkNTU3YjY0OTM3NzZhMjJhYjUzMzNiOGQwMjAwYjE3MTMgbGVnYWN5LXRydW5rCiszMTQ5IDJhMDc0NmQ1MjQ3OGE3MmVhZDNkMWRjYjYwNzU3YjAxNjAwMzU2MTYgbGVnYWN5LXRydW5rCiszMTUwIDI0Yzk4YjYwZGQ3NDY1YmU0MGIwMzdhNjZjNWM1YWY1ODIxOGY5OWUgbGVnYWN5LXRydW5rCiszMTUxIDE5N2EyY2YzYTY2MmM2YjFjNzAyYjczMTAwMTcwMmQyZWRiZDA2YWMgbGVnYWN5LXRydW5rCiszMTUyIDc3YWNhNjk2NmI5ZDAxYjVhMTM0ZjBmYzk5Mzg2Nzc1ZTY1ZWU2ZjYgbGVnYWN5LXRydW5rCiszMTUzIGE5ZWI3YTBkNDAwMjE0MWZlNzI1NGQ1ZWNlMmM1MzNjYTY1ZTU1ZTIgbGVnYWN5LXRydW5rCiszMTU0IDdmODBmMzM2YmU3ZjgyYWJlY2Q0NWQ3ODhiOGIyYmQxYjZkNTJjMGMgbGVnYWN5LXRydW5rCiszMTU1IDQ4YzYzN2ZiMTUwZjMyODk4MTZmMWZkMzdjN2FhYThlMzhlNDAwNzAgbGVnYWN5LXRydW5rCiszMTU2IDdjZTE5NzVmMTFhOTBmMTI0MWNjYjMxZWJjNTIzMjViMTA2M2IwOGYgbGVnYWN5LXRydW5rCiszMTU3IGY0ZGI0MDYzZWM4ODZlZDM5YWVlYjE2NGU0NjYwMWE2ZGI0MjkwMTggbGVnYWN5LXRydW5rCiszMTU4IGYwMjVlZWY5MzEzMGQzMjU5Mjc1NzRmMDk3ZDU2ODFjMjJiNjkwZWMgbGVnYWN5LXRydW5rCiszMTU5IGZmYjAzY2ViZjNmNDU1ZTQyNmU0MjVhZmUzMjY2NDgyY2I3YThkMjggbGVnYWN5LXRydW5rCiszMTYwIDBiZTFhNWRiNzc4NDc0YTBlNWNmZjdmYWQxMjkxYmQ2ZGJhYWRiMTYgbGVnYWN5LXRydW5rCiszMTYxIDA5YjQ4NjA0ODU1ZjRkZDNmMzc3M2QyZWYyNDFhYWRhMGUwYzUxMDkgbGVnYWN5LXRydW5rCiszMTYyIGRlYmZjYjlhN2UwOGE2NDc0Mzg5ZDJmOWE2ZWM5MGIxZDE2NWI3NmIgbGVnYWN5LXRydW5rCiszMTYzIDY3NzQxMDdjNjQ3ZGM1OWM2MDRkYWE3MGM0YjFhYmU3YmM5ZDU1ZjEgbGVnYWN5LXRydW5rCiszMTY0IDUwNjdmMmQzOGUxNDNmYjIzMjU4NTE2NTI0NTQ0ODY2MjliY2Y2NTcgbGVnYWN5LXRydW5rCiszMTY1IDBjZTQwNGU0MTM5YzViNjUxMTkwYzg0YTJlODFkNDVjNmRkYjJhOWYgbGVnYWN5LXRydW5rCiszMTY2IDE3ZGIwNTliMjliYWNhYjMxZGQ5MDFjOTYwNjVhZTQ1YTZjZTA3ZmUgbGVnYWN5LXRydW5rCiszMTY3IDVkNzE0MmVhMDFiN2RiMGYxNzgwNjY0ZTY5Yzg4YWRjNTNhMjE0MGIgbGVnYWN5LXRydW5rCiszMTY4IGIzMzIyOGUzYzJjMjdlZDkyMzE1ZTM1NGZiODA1YjU2ZWU0NTc4ZmIgbGVnYWN5LXRydW5rCiszMTY5IDkwMzA3MTM3N2QyOTJlNTk5MjQwZDkzZWJiYjE1NjE5YTBmN2Q1ZDUgbGVnYWN5LXRydW5rCiszMTcwIDA0YThhODljOTJlYjcwZTEyMTM4NjAyYWQ1NDc0ZTYxN2QzOTc2N2YgbGVnYWN5LXRydW5rCiszMTcxIGZkYmVhZTJkNmU2NzFlMjE1YTg1MWU2ZmU3ZGRjM2MzODRiYWYwMmEgbGVnYWN5LXRydW5rCiszMTcyIDA5ZDI3MWVmM2I4MjQwNDI3OTAyODlhOTVhYjdhZWY4MjEzZDNlYTIgbGVnYWN5LXRydW5rCiszMTczIDZjMWZkMDUxMGQ2MWJjZDE3MDhlMTkyZTVhOGMzYWMzODk0Y2VlNWQgbGVnYWN5LXRydW5rCiszMTc0IDkyNjc4YjUwNTdjNjU1NmNlNTQ0NTZlNTA1NDBiMTViNzVhN2FhMGMgbGVnYWN5LXRydW5rCiszMTc1IDgwNjY4OWI5MzU1OGY5NTZmNzFlNjA5ZjIzMmMxZTAyZmRjNTQ4MzQgbGVnYWN5LXRydW5rCiszMTc2IGExY2U1YTk0OTgyOGQ1YzJiZjE1NTRmODAwZDNhZDdiMTJmYzg3MjMgbGVnYWN5LXRydW5rCiszMTc3IDk2YWNiMzViYjkyYmI4OTFkOWFjMGUxODIyMWUxOTg1MDEwNmMwYTIgbGVnYWN5LXRydW5rCiszMTc4IGYzZDVlMmMzYjlhM2E1MzFmN2NlNzJlYmY0YzM5MTBiOWIxYmExYjcgbGVnYWN5LXRydW5rCiszMTc5IGE0MWUzYmE1YjQ3ZDk2ZmJiN2Q5MjFkNTRhZGJmMWRkOTczNTAwZTAgbGVnYWN5LXRydW5rCiszMTgwIGNiN2VmOWJkOWVkZWMzNzlhNTM4NjQwZDlkM2IzZTczNjc3NDllMWMgbGVnYWN5LXRydW5rCiszMTgxIDM5NDVmMzcxMjM1NDkwMWJkNzY4OWFhOTNkNWNiYWMxZTBlMmQxNjIgbGVnYWN5LXRydW5rCiszMTgyIGEzZTc2OGVhODAyYWI5MDdmMDExMDE3YWUxYmVmZjVlMTdhNjZiNGUgbGVnYWN5LXRydW5rCiszMTgzIDc0NDJiMjBjNDNmZGZjY2MxYTM5OTc3MDUzNzNiOWExZDUxMzg0YjUgbGVnYWN5LXRydW5rCiszMTg0IDBkN2M4MjM2NjcwNDUwMDUyN2M0NTczN2QzYzMyYzNkMWNhZTEzNjAgbGVnYWN5LXRydW5rCiszMTg1IDliNTY2YWMzOGMyYjg0MzQxYzg0NTMwMjUwMzdjN2YxMjlhMWI1YmMgbGVnYWN5LXRydW5rCiszMTg2IDk0YWI2NzYxYWZlMmM0ZWYyZDcwNWM3Y2U5YTFkMzExY2ZlOGZhYzIgbGVnYWN5LXRydW5rCiszMTg3IDdiNGYyODMzZmQ5MDJiYzU1OGEyMWJhMWNhMTg0YjYxYjgzYWU1MTcgbGVnYWN5LXRydW5rCiszMTg4IGY5OTMxOTdjM2E0NzZlNDljMzdlM2Q5YjQ0NjU2MzQ0ODA3YjkxNzkgbGVnYWN5LXRydW5rCiszMTg5IDU2ZDYzY2FiZGJhN2VjMDg1NWZlMjQwZDFhNTRjYTJkNmNjYTE4YTEgbGVnYWN5LXRydW5rCiszMTkwIDUxMzk0MGViNGQ3YjY5OTFiMTU1NmZkOTdiZmNiYWJiYmY5ZGQ1ZTQgbGVnYWN5LXRydW5rCiszMTkxIGVkNDU2ZTkxZDk1YWU4NTQ2NzQ1OTllOWI2MzMzOWJiOTZjMWE2YjkgbGVnYWN5LXRydW5rCiszMTkyIDJmOTgwNWM5NjNlODUzNjQ4MDdiOGVhMTdlYmIzY2YzNDFkMmFlZDQgbGVnYWN5LXRydW5rCiszMTkzIDlmMGZiMTE0YzFlNTRjZTU2M2U1NDMzMGZkN2QxOGMwNWRmNGNlZjcgbGVnYWN5LXRydW5rCiszMTk0IDdhMTFhNzBmN2Y0NGRjY2Q0MmVkZDFkOWIyOTZmODc1MjNjYmExODIgbGVnYWN5LXRydW5rCiszMTk1IDQzMmZlN2YwODM3YzRiMjVhNzRjNDJmYTRiZTM1YjUyZjk1NTJjODYgbGVnYWN5LXRydW5rCiszMTk2IGZiYjg0MGY2NGJmODk1NjdjYTZjOTNiYzBlNTBkNWVhZTVkZjFkZjUgbGVnYWN5LXRydW5rCiszMTk3IGJiZDAxOThlYWU1YmYxOGZhYWMyNzRjNjdlMjUzNGNkZDdlODNhNGUgbGVnYWN5LXRydW5rCiszMTk4IDVmYjNmNzNhNjI3ZmNlNTllZDBlMThjMzBlMWVlYTZhN2FkOGZjZDggbGVnYWN5LXRydW5rCiszMTk5IGJmZmVmYmZjZWI2MDU0M2MzNDhhNmZiOTk4NDFiOGVlM2M5YTdkMjUgbGVnYWN5LXRydW5rCiszMjAwIDUxNmI1YTE2YWM3NzE4ZDZlMTdkYTIxYTA2ZWYzNDNkM2I1NjlmNzkgbGVnYWN5LXRydW5rCiszMjAxIGIwMDQzOGYyNjVlZDhmOTYyMmRhYWUzYTZlMGEzMmFhZDY2MzQ5MDQgbGVnYWN5LXRydW5rCiszMjAyIDZhYTBlZTE0YWMyZWQ2MDZhMGU4YmM4YTY0NjA0Njk4MGJiNDQ5YTMgbGVnYWN5LXRydW5rCiszMjAzIDBlZTU5YTE0ZTU0MjFmYzliNDMyMjQyMGUwNzU2YTEzYWIzNWU3MDggbGVnYWN5LXRydW5rCiszMjA0IDNkYWMyMDRiNzRmYWZmOTM3ZjEwNWM4MjQ3Y2MxZTMyODVkZTFlMDUgbGVnYWN5LXRydW5rCiszMjA1IDU4Zjc0OGY1OGRmNTg0YmIyNjk2ZTU5OGZiYzkyYzgxZjc3ZWE0OGMgbGVnYWN5LXRydW5rCiszMjA2IDhmM2EyNTQwOTk1YTE1ZTBlMTdkZTg5Yjc3M2M3OTcxNjcwNDk3OTIgbGVnYWN5LXRydW5rCiszMjA3IGM3MmVlMjljY2NkMDE4ZmQ3MzcyZjZiZTQxMjQ4NjkyNjNjMzcxOWUgbGVnYWN5LXRydW5rCiszMjA4IDEwZjEwZDQ1NDJmYWVkODU0MmU2YjU2ZGZhOTE4MWFlYTUyYjZjZDEgbGVnYWN5LXRydW5rCiszMjA5IGQ2ODA4ZWM2ZWRjNzM2ZTYzNDU0YzNhNWI3Yzc5ZjYxZGRlZTU4YTAgbGVnYWN5LXRydW5rCiszMjEwIDZiNWEzNGRiMjFmZTE3MzM2ODJhZTQ3ZjgyNGJmNzNjYjhlODE0YzYgbGVnYWN5LXRydW5rCiszMjExIGMxZWJmZGUzNDFhM2VjYzlhOTk1MGVmZDNlNjI5Mzc0NTVjNjUzOWYgbGVnYWN5LXRydW5rCiszMjEyIDJlZDUxMTE3MTgwOTgzODI3YjE5MTFjYjg2NDQ4ODk0NzMzZjg4ZTEgbGVnYWN5LXRydW5rCiszMjEzIGY0OWQyMzExNzc2YmI5M2RjOWQ4NWVjZTk5ODkyNDlmYzYxNmIyOGYgbGVnYWN5LXRydW5rCiszMjE0IGY1NGU2NGM4YjliNzBiYjliMDNkMzBjZjI4YTFkODM0NTI5M2FmNjMgbGVnYWN5LXRydW5rCiszMjE1IDY1MDhlYTMyYzZiMDk5OTlmYjRiMWYzNWNkZjg3ZmY5MjUyNTQyOGQgbGVnYWN5LXRydW5rCiszMjE2IGM5NTQ2YTIxMThmMDRiNmIzNjUwN2JiMzU1MzFiNDY1NzYyMTg3NjggbGVnYWN5LXRydW5rCiszMjE4IDMxNmNlNjc3YzZiMjBhNGM5MGEyODZkNzkwMDNjYjIyOTdmZGY0YWIgbGVnYWN5LXRydW5rCiszMjE5IDZhYjIwN2E1NWZjYTM0NzdmNDYxMGJkY2FhOTgyMjcwYTBiYmFmOTIgbGVnYWN5LXRydW5rCiszMjIwIDliZjc1ZTRkOWFlYzNlYWIzZGJhMDUzNTYyODlkZDQ2MGE2ODU3YTUgbGVnYWN5LXRydW5rCiszMjIxIGU2NjQyYTUzNWRiNWZjMTZjMGFmZTliMTQ2NTk2MDZjMTY4ZjkwNzYgbGVnYWN5LXRydW5rCiszMjIyIGZlMTkyNmI5ZGZmYTczMTI1NDg4ZGVkMWM0ZmRlZDk4Y2U5YmRiYzggbGVnYWN5LXRydW5rCiszMjIzIDU5MmJhYzZhZGZmYzI1NjY2MmI0OWRhZWM0ODFlMWI4YjVkYjlmNzEgbGVnYWN5LXRydW5rCiszMjI0IDRmNjY0MWRlYTY0NTg5NzhkMDIxMDE4ZGQyYTJiODg5ODdlMTZmZjggbGVnYWN5LXRydW5rCiszMjI1IGEzZmEyMjk3NzVjMTZkM2EzMmI5ZmI1NWE0ZjEzZDQwZGRmZDUwODcgbGVnYWN5LXRydW5rCiszMjI2IDBkYTE2ZTgxNDgyY2YzM2QwY2E5YjhhNDhkMjM2YzY3NDA2ZTFjOWEgbGVnYWN5LXRydW5rCiszMjI3IGFhYTNiY2NiMTQzYWFmMWI3NzE1NWM3YTE5YjYyYmEyYjE1NjdkYzggbGVnYWN5LXRydW5rCiszMjI4IDZiZTk3MDM5Y2MxMWY2MjRhMGJhMmNhNjYzYTNlYmJhMWZkYTVhZjMgbGVnYWN5LXRydW5rCiszMjI5IGI1ZDk1YWNmZDNlZTMyMzU4MzljNzEzNmIyN2JmY2Y3YjFhZWM1OWQgbGVnYWN5LXRydW5rCiszMjMwIDY5NmI5MTMyN2VhMjM4ZTUxMzE0ZDQwM2ExYjAyMWEzMWJjMGY2MDggbGVnYWN5LXRydW5rCiszMjMxIDM5M2Q1NGVjZDQzYjViOTZkNDFlYTQ4NDZmODA1NmVhMjU4YTIyZjMgbGVnYWN5LXRydW5rCiszMjMyIDcxNjJmNWFjODk5YWE5MmE2NGJjNDliNDQ1YWZkN2MxMmQ2YzU4ODEgbGVnYWN5LXRydW5rCiszMjMzIDAwMTY0NTdiZDk3YTg1YTVhNmM1YzExMzg0ZjhmM2ZhZmJlNTM1MGYgbGVnYWN5LXRydW5rCiszMjM0IDFhNTRkMzIwZjI5NjRhYTc4NWMyMGQ3ZTNkZTAyZjkyN2FhY2E2N2QgbGVnYWN5LXRydW5rCiszMjM1IDIyOTFkYTA1ZjE3ODRiZmI4NTE0ZGU1NmJkOTM5MTA4M2QxMjBjMGMgbGVnYWN5LXRydW5rCiszMjM2IDc2N2VmNzM3MGQzM2M0ZDkwOTM4YzU1MGQzM2NhZDU1ZWI1Mjg0MzkgbGVnYWN5LXRydW5rCiszMjM3IDJjMDQzMmZjYzI3MDc5ZDAwZWVmMjA3NmMwNTYzMjk2ZGI3OTMxMDkgbGVnYWN5LXRydW5rCiszMjM4IDRkYzM4MmZmNmZjNzRkMzUwZDYwYzYxMTRkNWU2NjgzYmE4YzFhMWUgbGVnYWN5LXRydW5rCiszMjM5IDk4Y2I2YTEyNTJjYjY1YjMzZmNmODIwOGYwNDBiMjJiYmY2MTMxMmUgbGVnYWN5LXRydW5rCiszMjQwIDZhYzkxNmY4Zjg2MjY4ZDA4MGNlNWVjMDA5MWQ1MmQ4YzlhYTczZmEgbGVnYWN5LXRydW5rCiszMjQxIGZlYjViMjM0YjBiNWZmYjI0MzY4Yjc0MjZiNDc5MmI5ZjI3MTRiMDEgbGVnYWN5LXRydW5rCiszMjQyIDI0NTAwM2MwMDZhNjM3ZjRmMWQwOGNmMzk3N2VjMTdkODI2MjFlNmYgbGVnYWN5LXRydW5rCiszMjQzIGU0YzZhMGRkNWMyYjI3YTdhNWZlNzg1MzI2NWViY2QwNWIzMGFjNTYgbGVnYWN5LXRydW5rCiszMjQ0IDc2NTdhNzUwOTRmMWMyMDgyYTEyZWQ1NjU5M2E4MzdiMzZkMDVlMTggbGVnYWN5LXRydW5rCiszMjQ1IDMxZGY1OGZhOThjYzU1OTFiYzFlNjIxMTFjMzIwZmFjMTExOTZjZTAgbGVnYWN5LXRydW5rCiszMjQ2IDA4ZDNjMzcwMTkzZGY3ZjY4ZGJmNDZiMzU0MmZkZjhlNDhjOWVkZDcgbGVnYWN5LXRydW5rCiszMjQ3IGYwODZkN2I0OTNiNGRmY2ZhMWM1YTdkMDNkYzNkODM3ZTYyMTU5YjAgbGVnYWN5LXRydW5rCiszMjQ4IGI3NTVhNDYyMDFmNmU3NWM3OGQ0ZGY4Y2FjNjMwNjYyMmE4ODc4OWYgbGVnYWN5LXRydW5rCiszMjQ5IDk2NWFhM2I1M2E5ZDg2YTVhM2NjNmM2ZDJlNmQ5Y2RmMDg0ZTdhNjggbGVnYWN5LXRydW5rCiszMjUwIGRiODE3ZjNhMWM2NTQ0OGE1NTVmNjI3M2JhZjgwNDRiNDQzZjc2OGMgbGVnYWN5LXRydW5rCiszMjUxIGI5ZTRmNzMyMWUyOGRjZmIzODJjYTMzNjgwMWNiZjI0NDQzMDQzYWMgbGVnYWN5LXRydW5rCiszMjUyIDM1ODI0ODk5YWFjZjgyMGFlOTBjOWExYTc4NmU3OTIwOWRkZTE5NTYgbGVnYWN5LXRydW5rCiszMjUzIDhkNjJjOTA1NmZlMTU0NDQzMDc2YWJjNmM1ZDVhODA3OGNjMGE3ZGEgbGVnYWN5LXRydW5rCiszMjU0IGFiOTI2NTM0YTE1Mjc0OTA4ZWUyYTUwOTMyMWZhMDkyYzBjZmZmZDAgbGVnYWN5LXRydW5rCiszMjU1IDZkNTdkY2I0ZmFhZGNiZTkzMzdjOTEwOTMyYWY2OWY4ZDlkZWU5ZmIgbGVnYWN5LXRydW5rCiszMjU2IDgyYzU1ZWE5MDY5ZTViNTQ4YjdjMTM2MDNjZjkxMWVlN2E4ZTYyZGIgbGVnYWN5LXRydW5rCiszMjU3IGE0Mzc2YTk5N2ZiMThiOWI5NmUyYjU3YTc4MWI4NDNhN2ZhMDAwY2QgbGVnYWN5LXRydW5rCiszMjU4IGQyYWY2YmRjYjZkMGEyNDQzNzY3MmJmYTYzNzBlMmM3MTZlZGZiYjMgbGVnYWN5LXRydW5rCiszMjU5IGFjMDgyOGVmNjhmMjliYmQxMTQyNWUzY2EwNzI0YTM2MjZkMjhkZjYgbGVnYWN5LXRydW5rCiszMjYwIGNlNzE4NDU3YjE3MjY1NzcxMTdhMDA4ZThmMGMyNTZkYzIyMjgwZmMgbGVnYWN5LXRydW5rCiszMjYxIGM2NDRiYzYyNjA5OGFkN2JmMzNhNTgyMWU3NDU1ZTc0ZGFmNjBhN2MgbGVnYWN5LXRydW5rCiszMjYyIGM5ZDJmNmJkYWE2OWJkNGYzMjMyZmU4ZmY1ZTc1MDIwNTQ4YjllZDEgbGVnYWN5LXRydW5rCiszMjYzIDNkZDdiODI1NTYxOWFhODI0NGRiMzZiY2Q5ZmFjYzYwNTdjZjFmY2UgbGVnYWN5LXRydW5rCiszMjY0IGZmMTg5OWRjZGEwNTlkZGNiMzBmZWNjYjcwMzViMmVlZWY5Yjk1YTggbGVnYWN5LXRydW5rCiszMjY1IGI3NTdlNThiYzUyNWMzOTg0ZTc3OTc2MDhhMjk4MTU2NDFhNDkzZGUgbGVnYWN5LXRydW5rCiszMjY2IDMwYzI2Y2Y1NDgwNDk2NzM1MjhlNGNkNjM4Nzg5MDlhZWFiMGIzMTggbGVnYWN5LXRydW5rCiszMjY3IGZjYWFmZDVlYzY5NTYzYzBiN2QwODBmZDY3ZTE3ZmZiNzhkOWJiZGIgbGVnYWN5LXRydW5rCiszMjY4IDQxNTRlOThkMTQ3OGI5MmRmYzQwZDg3NzZjZjIxYWVmODY0YWVkYWEgbGVnYWN5LXRydW5rCiszMjY5IDZmMmE2ZWZkMDE5ZTQ1ZjgwNzUxY2UyYmQwZDcwZDhiNDUyOWE3ZGIgbGVnYWN5LXRydW5rCiszMjcwIDhlYTU0NjA0N2YwMTE2MzAzYTg1NWY4ZTc2ZDA4MDUzNjRhMzZmZjYgbGVnYWN5LXRydW5rCiszMjcxIDkxYzE4NmEyMTZlNzA5OGM4MzNlMTE0MWUyNjIyMzQ0MzY2YjJjYTYgbGVnYWN5LXRydW5rCiszMjcyIDdmOGRkY2U4ODQ5NjFkNGI5MzUyNzAxNTIwYmRkN2VmNWY1NmNmNTcgbGVnYWN5LXRydW5rCiszMjczIGUyZjgwNzdhOTI2ZWVjMmIyMmRlNzRhOGMwMjEzMzI5YzYwYzJhMjYgbGVnYWN5LXRydW5rCiszMjc0IDFkMDZiMTQ5OWViOTMyZjM3YTJkNGY4NzAwYzJkZTgzYjViOTZmMzAgbGVnYWN5LXRydW5rCiszMjc1IGRlNzBkNzdiM2VlZDc0ZTBjMTBlYmEyODQ1YWI1NTk4YmYzMDMxN2UgbGVnYWN5LXRydW5rCiszMjc2IDgzOTllOWFhMDNlN2ZlMmU1Njc0YWEzN2JmYmM5YmQ1NTFkNmJmYTYgbGVnYWN5LXRydW5rCiszMjc3IDQ2ZDMxYTY0OWNlNjY3MzFhY2Y3MWE5ZjMzMDEzMzFlYjA2YTIyNDQgbGVnYWN5LXRydW5rCiszMjc4IGMwYWVkNWVlMTEwYmM3ZDNiMWUxNjk5ZjIwZGViOTQwODdhZDJhNzYgbGVnYWN5LXRydW5rCiszMjc5IGMxZWU2MGJkNWRlNDVhYTdhZjA0NmZhMWY5NjIxYzExM2QyNTVjZDIgbGVnYWN5LXRydW5rCiszMjgwIGMyNmY1YmVjMzQzOGFkOWFjOTY1ZWFkM2MxYzczZjMyNzM4ZTc3Y2MgbGVnYWN5LXRydW5rCiszMjgxIDFhMGJlNmUzNjgxOGI4OTEyYTNmZmE0Mjg0Y2ZkZGI2MTE4ODkxYTcgbGVnYWN5LXRydW5rCiszMjgyIDU2NjM2Mzk1NzI0ZDQ5NDQ5Y2QxM2RmOTU1NDk4Y2RmMzFiMmRiNmYgbGVnYWN5LXRydW5rCiszMjgzIGZmNmUyMTczMDk5YWUzYzg1Y2Y4MWYyMmFmZDFlMWMyMmIzNTU4MzkgbGVnYWN5LXRydW5rCiszMjg0IDVlNjViMTBkZDI0ZDM5Y2QyYWNmY2Y3NmE3OWQ0ZjFiMWViMmEzMzQgbGVnYWN5LXRydW5rCiszMjg1IDc1YjQ3MmFjNWI3YmUzMmZkMzY3MGFlNjAzZTNiMDlhOGI2YTI1NTggbGVnYWN5LXRydW5rCiszMjg2IDk0ZDEyMTE2NzU2YWM3NWE5Mjg3ZTU2Y2VhNTlmYjIyNTRlZGIxMWYgbGVnYWN5LXRydW5rCiszMjg3IDA5MTQ3NGMwODMxYTdhMjcyYTJhNzczMGI5NWZhMDYyOWFiMzRlMzYgbGVnYWN5LXRydW5rCiszMjg4IGRkNzBhM2FhZDI2NjVlYWJiNTJjOGE1MzZiMGNkNjljNTM1YjJmYmQgbGVnYWN5LXRydW5rCiszMjg5IDBjY2IzNTZlODhiMTI2ZjUzZGMzYzBiMzhiMGRhYWMwNmQwYmZlZjkgbGVnYWN5LXRydW5rCiszMjkwIDQxZmJkOTJiZjFhZDgwMWExMDliNzI5YzA5ZmU3MGVjOTcxYzgwN2UgbGVnYWN5LXRydW5rCiszMjkxIGE3YmExOTEyMGY1NDc0OWY0ZjkwYjI1MTkxNWJiMmRkODdjYjY5OGEgbGVnYWN5LXRydW5rCiszMjkyIGFhOWVkM2I5ZWRhMWNhMzRhZTcxNmI1MjA1MGIwYThjNzE3MGYxZWQgbGVnYWN5LXRydW5rCiszMjkzIGI2Y2RkZmQzNDhiYTFhNTg1YWU4NzM3ZDkzNDQwZWYxNGU1NmVlYjQgbGVnYWN5LXRydW5rCiszMjk0IDNlOWVjODVhYzQ5YjZmZjU1YWY2MGQxODg0NDc5OWE1YjRiNzVhM2YgbGVnYWN5LXRydW5rCiszMjk1IGU1M2JhZjliNGI5NTUxZTU1ODhjMmZhZjQ4OTFiNTQzZGFmZGI2NjcgbGVnYWN5LXRydW5rCiszMjk2IDY0NjFkYWM5YTlmMjk3NzdiMGQ3ZjQ4ZGE5ZTg4NWFkODllNTBmMmEgbGVnYWN5LXRydW5rCiszMjk3IDlhZGQwZTNlODA0YTA1OTg3ZDRiOGE2NjcxMjkyODliOGQyMTQ3OWEgbGVnYWN5LXRydW5rCiszMjk4IDUxMTJkNDMyMTI2YjE3NTcwNDc2ZjNjZWU1M2ViY2JjNTY2ZWEwZGUgbGVnYWN5LXRydW5rCiszMjk5IDYyMzFlMWI1YjIyYjdiZWFkMjAwMWRjMjczMzg4ZmQxZDUyZGE1Y2YgbGVnYWN5LXRydW5rCiszMzAwIGUzOTMwOWI5YTBhYTZkMTY2YmMwOWRkOTI0NzZlOGFkZTFiZGEzYjkgbGVnYWN5LXRydW5rCiszMzAxIGIzMzgyNjJjZDA4MDdjNDY0NGY4ZjA5MDU2YjgwMTRjOTI3ODM5ZTQgbGVnYWN5LXRydW5rCiszMzAyIDk1MGYwMTEzMTQwM2UxNThlMzU0MzJiZDg5NTEyMGJlMzhiYzRjNTYgbGVnYWN5LXRydW5rCiszMzAzIGY0OWU4NjJmZWVjNGQ5MTc4ZDQyNDJiZTUyYzAyNmE4YzViZmRjMjkgbGVnYWN5LXRydW5rCiszMzA0IGJlODkxMjU2NDNmMjVjZjkwMTYwYTI5ZjE0YWZmNmY1YmVlYWJjZmMgbGVnYWN5LXRydW5rCiszMzA1IDU0ZWIyY2YyNjk3ZTZlNTM0ZTUyODI2ZDM1YmE1OTRhODM5MDFlMzYgbGVnYWN5LXRydW5rCiszMzA2IGUwODc3MjI2ZDYxMzhlMGVkNDkxMzBiNDczMmU0MzZkMzg0NmJjOWQgbGVnYWN5LXRydW5rCiszMzA3IGU1Y2U5ZDA0MDhkMGU1NmY3ZjQxNjg3ZDQ4NTBhZWU2ZjM2OGVlNmQgbGVnYWN5LXRydW5rCiszMzA4IGYyMGRlMTMyMjY5MjBkOTM4YTc5MTExMGE2ZjQ3Y2MzNGU2NzFjNjkgbGVnYWN5LXRydW5rCiszMzA5IGJiNzY2NWM0NDgyMjZmYjk4MjEyZWM1NmRhYWQ4ODBlZDg5MTBmM2IgbGVnYWN5LXRydW5rCiszMzEwIGE0MTY0OTNkM2E0YzJmM2IyNDcxZmIwYjkwZDg4ZDZjNjNjOTczMDIgbGVnYWN5LXRydW5rCiszMzExIDNjNmE1MmQyNTQzZGMyZDA1MmIwNWNjZDFiM2QwMjc5NjU3MWMyYzUgbGVnYWN5LXRydW5rCiszMzEyIGZhNjJmYjBlNTViMmQ4OWJmZmZmNDY4MDcyOGFhZDNjMjlkNTYwNDUgbGVnYWN5LXRydW5rCiszMzEzIGM3MmVjZGIzM2FmNzU3OTFiYzQ5NmJlYjhmYzk3M2FkZDcwYWFmY2QgbGVnYWN5LXRydW5rCiszMzE0IDg0NjdiMTE5MzUwYmViYzY3ODRkNzY5NTRmZjcyODdkNmQ4ZmVhYTQgbGVnYWN5LXRydW5rCiszMzE1IDE5NGFmMDRkMzQ0YjA4MDZiOTRlMDEzMjJiYjZkMDZhNjAxNDVkMjYgbGVnYWN5LXRydW5rCiszMzE2IDY1ZTQxOTlhNzk4MmZiMTlhZTFlZjMyYjU3YWExN2RmMzExYWU2YTIgbGVnYWN5LXRydW5rCiszMzE3IGQ0NDgwYzA4NDQ0ZGM1YjYzNjQ2ZWYwNGQxODQzZDZmYzNiY2YxZDQgbGVnYWN5LXRydW5rCiszMzE4IGU4MmFjNDUyZDU1MWRkN2NmOTUyM2I3ZTBjZDBhMGEzMGM4NzYyZTggbGVnYWN5LXRydW5rCiszMzE5IDI5ZDJlZjBjOTRiOTUwNGRhOGY4MDkyNTY0YzdhYjZhOTgxODI4NjQgbGVnYWN5LXRydW5rCiszMzIwIDIzZWIyNzczMWQ5Y2IzMmFkOWE5NGIxMmVhNjg4ZTQyNGQ3NGZlOTUgbGVnYWN5LXRydW5rCiszMzIxIGYwZWI3N2FiZjI0NDM2YmJjZDc0NmM5MDMzNzA2OTRkNzIxYWNmOWMgbGVnYWN5LXRydW5rCiszMzIyIDEyMDUxOGVmMzZlMzNhNDdjMjk0YWE5ZTE5YjZmNWZmMGI3ZDYzYjcgbGVnYWN5LXRydW5rCiszMzIzIGRlZGQ0NGViNzM1YjNmMTY1MTJiNGVjZGY2OTNlYWE4MGY2ZDc5YWYgbGVnYWN5LXRydW5rCiszMzI0IDUyNDQ4MjdkZDQyMzgxN2E4MGJhNTYyNDBiNmUzMWVlMTE5ZDhiM2QgbGVnYWN5LXRydW5rCiszMzI1IDliN2Y5MGY5ZjNjMTUyOTk2ZWJhNmNlOTQwYjIzYWE3ODFjZmI5M2UgbGVnYWN5LXRydW5rCiszMzI2IGZhYzYyYmNkM2JiOGRlMWNjZTNkNjlmMzFjZTdmNzhhM2UzYTA2NzMgbGVnYWN5LXRydW5rCiszMzI3IGVkZGM1NGIxZDlhYjhiNjc1OTczYzA1ZmM4NDM1NjE5MGY1MzRjNGYgbGVnYWN5LXRydW5rCiszMzI4IGYwNzg0YWUxZmY1Y2FjYWY4NjVkZDZmM2IxNGUwNWM1NTJiZTA3ZTcgbGVnYWN5LXRydW5rCiszMzI5IGQ5OTBjMmI4YTFlNmQwOWIwNDA2ZDdjYjNiMzkxZDg5YWY2MWM5ZGIgbGVnYWN5LXRydW5rCiszMzMwIGE3Y2YyMGM4NDVhM2E0NmU2YzM2NTUzYjE3ZjU1Y2MxNTE1ZWMyZmMgbGVnYWN5LXRydW5rCiszMzMxIGE0N2UwYzliYWFkMDA4MjQ5Y2I4ZDViNzZhZTNjMTAzMjMyOTc1ZTIgbGVnYWN5LXRydW5rCiszMzMyIGMwMWM5NWVmMWZiZGE4ODRiNDAwMmY4YTNjYmUxYzFkM2NhNjQ5OTggbGVnYWN5LXRydW5rCiszMzMzIDU3NDVlNTVmMmUyODBmMTA5ODRiZTg5MmYzMTIxMGI3MTlhMWU5OWQgbGVnYWN5LXRydW5rCiszMzM0IGJiNTRmZjQxMzQ4Zjg3OWJlMTgzZjBhNTg1Y2U3ZGE4ODYyOTU5ZTEgbGVnYWN5LXRydW5rCiszMzM1IDljMWFlNjA3ZDEzNTM4MDZlYWFiYjdjYjAxN2M4Njk1NzVmMjJlNzQgbGVnYWN5LXRydW5rCiszMzM2IGU3MWI2NDdmYTMzNTZmNTBjZjRkMjg1NGQyNmEzZDVjZWRhM2FmYzIgbGVnYWN5LXRydW5rCiszMzM3IDk1NTIxMmVkNTJkMzdjNzQ3Zjk3NmRlMTU3MTZjMTA5OGFiYjRkNGQgbGVnYWN5LXRydW5rCiszMzM4IDg2MDRjMzk0OTgwOWQ1MTMxZjJlZDMxMGQ3ZTA3MTViNDQ4MzhmNDEgbGVnYWN5LXRydW5rCiszMzM5IDcxN2VhMTc2NzQzMGJhZGE4MjE5MTBmMDA4ZjJmMGE3MmM2OGQyNzEgbGVnYWN5LXRydW5rCiszMzQwIDI3MTU0YTJiOTI0NDAyNzAzMGNlODM0NWVhODM1NTRjZmRkYTZmNWYgbGVnYWN5LXRydW5rCiszMzQxIDUzM2UzNmRlMWU0ZGY2MTk1YzVmYTU3Y2U1ZjQ4NmI5YmVhZTE5M2MgbGVnYWN5LXRydW5rCiszMzQyIGY5YmJiMDEzODhkNWJmM2NiOGU3MWFmNDEzZDNiYWVlYzNiY2VhZGMgbGVnYWN5LXRydW5rCiszMzQzIDlhZTY1ZWUwOTczNWQwNzIyYTYzZGIzODgyMjgyYWVkMTk3MmEzOTQgbGVnYWN5LXRydW5rCiszMzQ0IDFkNmNiZWIyNzA5NjI3MmE5Y2VkMzgxNWFmMWEwY2I2MTE2ZDIyZGYgbGVnYWN5LXRydW5rCiszMzQ1IDk1MGNkMzdmY2RkYzU0NzdkYmNiMDhjZjIyOGM3ZjgwMDE5OTFhMWUgbGVnYWN5LXRydW5rCiszMzQ2IDY0Y2YxOTFkMjFkMDhjOTMxMmY5NGEwZThhZjUwZDFlM2MyN2YwMTQgbGVnYWN5LXRydW5rCiszMzQ2IDY0Y2M1NDM5ZTEwYTZmZGY5ODRlZmZhZjAxNDFlOTRmYTRjYzEwMDQgbGVnYWN5LXRydW5rCiszMzQ4IGNmOGRkYjI5ZTI2ZWRhZmFlYTBiNTBmYjJmOGI0YWI4NTIyZTEyMzkgbGVnYWN5LXRydW5rCiszMzQ5IDBlZmVmOTc4NWEyNWQ3ZDlhYWUyNWVhMTJhMDBhYTg0MTZkYWMxOTEgbGVnYWN5LXRydW5rCiszMzUwIDk0N2Y4YTM0N2M0ZjE3ODllOGM4OTM3ZTFkNTVmNGE5Mzc3ODk2NTUgbGVnYWN5LXRydW5rCiszMzUxIDZhMDc3YzI5Mzk4NmMwYWQ3OTcxY2JmNGNlNmMxODQ2MDdiODZmNmYgbGVnYWN5LXRydW5rCiszMzUyIDU4NGM0MTQyYzUzNzlmM2E1MzdiMjdhOTk1M2M5MDYyZWYyY2FmNWUgbGVnYWN5LXRydW5rCiszMzUzIDg0N2M0ODM1NjI4ZmE4ZjExYjM4ZmQyODlhNzEyOTIyZTQ2MDNiMzcgbGVnYWN5LXRydW5rCiszMzU0IGVhOGQ0Y2NlNzgyYmJmYWRmMGUyYzkxNWM4MmRiMjYyZjQ5N2NhMWYgbGVnYWN5LXRydW5rCiszMzU1IDM4ZjAwNTRmNDRhNzFjNmY3OTAxZDViZjEwNDVlNTM0OWNlNzM0MTYgbGVnYWN5LXRydW5rCiszMzU2IDc4NDI4MjQzZmVhYTc1MjA5ZGE3Zjk5NmQ4MDY4OGE1YTg4ZGEyZmMgbGVnYWN5LXRydW5rCiszMzU3IGI3YWVlNzk5ZGM3MTVhZDFiODRmYWZhYzM1ZWE3NzU1ZjkwNzdiMDAgbGVnYWN5LXRydW5rCiszMzU4IDMxMDUzMjAxNWE3ZDM1OWJmZTc3NjBhNTVhYzQzOGI0ZWYxMDgzYjQgbGVnYWN5LXRydW5rCiszMzU5IGUxMjA5MzZhMGM4N2Y5NTE1YzE0MDE4YWJiZTZlZDFhMWQ3MzYxZjEgbGVnYWN5LXRydW5rCiszMzYwIGNlNjdkOTFhZGY1ZTdlMDY1ZGIzNWFhMGRmZGJkMzQ1OTEyNGZmNzMgbGVnYWN5LXRydW5rCiszMzYxIDY3NWEwMjgyMGQ2NmUxNDBlMmE1NTgzZGY2MjllODJhYmU3NTRmNjQgbGVnYWN5LXRydW5rCiszMzYyIDI5Mzc4OTdhN2Q4YjAzODc5MzYwODRmNDI0YzY5YWI1YTMxM2EyOGYgbGVnYWN5LXRydW5rCiszMzYzIDcxOGYxZDliY2I1MDRmMjU1Y2Y3MzY4MTk3MTM1YThhZGZkNDk0OTUgbGVnYWN5LXRydW5rCiszMzY0IGU4MjIzZDBiNzJhYzUxOTYwYmYwOTMxZTk2YzAyYWM1NzFjMWQ3YjUgbGVnYWN5LXRydW5rCiszMzY1IDBkNzk5ZDNjNDAzNmU3ZjhiMTY5NTAzN2EzZTcyODI3MTY1YmI1Y2YgbGVnYWN5LXRydW5rCiszMzY2IGQwMjIyMWViYWMyYWQ3YzhiMDkxOGQ3OTY1OGFhZGRmNjVkZWQyMWIgbGVnYWN5LXRydW5rCiszMzY3IDgzMWQ4MmFhNGRkMDgxODlhMThmMDIwMTM3OTVlOGMzZDI1YjE5NDEgbGVnYWN5LXRydW5rCiszMzY4IDM1NzNlZjQyMWJmNDExMDdiZjcxOTllNWVhZjFiMWI0OWMzYzE4OGUgbGVnYWN5LXRydW5rCiszMzY5IGVjZmJjMjQ2ZWVhYTEwYzQ4MzQzNWM3YmQyMmY2ODAxYjYzNTE2YTIgbGVnYWN5LXRydW5rCiszMzcwIDNkMWY3MDg3OWYwMzA0MTRiYWRkOTg5ZDIwNTVkMjU1Y2UzYTA5YzAgbGVnYWN5LXRydW5rCiszMzcxIGI1NjRiZDRlNTdlMTM1MzQ0OTcwMTk1NTYxNTlkNWY0N2NiYjY5ODkgbGVnYWN5LXRydW5rCiszMzcyIDliMTRhNGQ4OTIwNzNjNjA4OWQ4MmViOWRjYmY0MzhjOTBlYjhiY2MgbGVnYWN5LXRydW5rCiszMzczIDlmZTc4M2NhOTc2ZTJmOTFhZmU3NjA2MjFjOTlmNDJjODhlZDNhNWMgbGVnYWN5LXRydW5rCiszMzc0IGJiZWYyNDczZTU2OGQyOTI4NzE4MTBlYzU2YmY0MzU3Y2ZkMDdhZjQgbGVnYWN5LXRydW5rCiszMzc1IDQwNjg2MGRmYWFjNzhiNjA4MTRhOGU3NjIyMWNhYWViMDZmY2ZmYjEgbGVnYWN5LXRydW5rCiszMzc2IDVhNDEwOTQ0MWVhZTAwOTUxMjU4YmM4YWM2MDE2OTJlYWJmYjA4MWQgbGVnYWN5LXRydW5rCiszMzc3IGZhNmNlN2Y1M2FhNTAxOGE5MGU5MDZmYWIyNmRkYmY0NDcwYThhNmYgbGVnYWN5LXRydW5rCiszMzc4IDQxNmE4YTg4NmE4MmFhMmQzZjU2ZWE5Y2U1YzIzOTg0ZDc5YzAzOGQgbGVnYWN5LXRydW5rCiszMzc5IDlkNmNmNTI5YmI3MWE3ZjRmZTk5NzU5ZGQ2Nzc3MGZmYzA1NTViYmQgbGVnYWN5LXRydW5rCiszMzgwIDQ5MmY1ZTNlNjQ5NTU1OGQ1OGM4Yjk2ZmQ1ZDgwYzM2N2NhOTgxM2IgbGVnYWN5LXRydW5rCiszMzgxIDFkN2E0ZWQwYzk4NWY1ZWY4MjIzNGJmNWZmYzk4NDU5OGM0MGI3ZmMgbGVnYWN5LXRydW5rCiszMzgyIDUxMjIzY2U5NWE2MTk4NjYxYzlhMjgzMzIwODM4NGM5NjljMTJlYTQgbGVnYWN5LXRydW5rCiszMzgzIDY0ZWM3YmQyZTgzNzM3YTczZmM4OGI4YjMwMzExOWUwZGJjODEwYzIgbGVnYWN5LXRydW5rCiszMzg0IDgyZjRhNmExOTY0ZGVmNjFlZDAyNDE2NzU5YjEyMjdmNDQ3MWViZjIgbGVnYWN5LXRydW5rCiszMzg1IGFkNmQ1YzFlZjVlNjFhMjkwMDZlYjU4ZmZjMjg4ODIwZWYxNGIzMmIgbGVnYWN5LXRydW5rCiszMzg2IGNlN2FlOGY4MWIwNjE4MjQ0MTMzOGZiOTA2NWVkNWMzMmRhNzE3YjYgbGVnYWN5LXRydW5rCiszMzg3IDVhZTRhOGNmNzllZjMzZWI1YzI5OTczM2UzNjkwODAzNzg2YzA0ZDQgbGVnYWN5LXRydW5rCiszMzg4IDdlMjc2NTllYjJkOTY2OTgxYjliOTJmZTdlYTc2OTMyNzYyOTA1NDggbGVnYWN5LXRydW5rCiszMzg5IDI3NTNlMmM5YWEyMWM5YjZhYTg0ZTkwNTY5MmI5MDZlOWRkMWJkMWYgbGVnYWN5LXRydW5rCiszMzkwIDA2NTliNjNkNjA0NDdkNjMzNmVlZDJjYTY5OTQxMzc3MjJkMGZkZGUgbGVnYWN5LXRydW5rCiszMzkxIDIwMjZlYzAwZWZkY2Y0MGM3NWNjMDM1OWMzY2FiZmIzYjJhM2RmMmIgbGVnYWN5LXRydW5rCiszMzkyIGYwMThkMWQwZTkxYTVkZjc3YjQxOTkyM2U5ZTc3ZTJkMDAyYjEzN2YgbGVnYWN5LXRydW5rCiszMzkzIGRjZTdhNGNiYWMxMTJmZWU1ODlhMjg4MzdjMzIyNjIyYjc2YjhjZmMgbGVnYWN5LXRydW5rCiszMzk0IGUwZjdmZjg1ZmEwNjUzODM3NzE0NDVjZDNiMTBkNGVhZmZkNzcxYWQgbGVnYWN5LXRydW5rCiszMzk1IDI2ODhmOWJlYmQ5YTVhNWNhYTZiNTQ3NTVjOWM3ZTRkOWI2YjU2M2EgbGVnYWN5LXRydW5rCiszMzk2IGFmY2JhODhjNmFjYjc3ZGVmZDhkOWI4N2M0YWZkMDJlYTg5Mzg4OWUgbGVnYWN5LXRydW5rCiszMzk3IGIzZTZhNDM1YzQ4ZmUyN2JkY2ZlOGM5NTZiYTcwY2VmZjQwMjY4MGMgbGVnYWN5LXRydW5rCiszMzk4IDU4NmM5MjhjNjVkMzRkZThiOTdlOTMwMzcwYTI1YjE2YzBjZjc1NzggbGVnYWN5LXRydW5rCiszMzk5IDg3ZWQwMGE2MmQzMTAxMzg1M2M1ZjNkMzA4MDRkNjM5YjlmNmU5NzIgbGVnYWN5LXRydW5rCiszNDAwIDY4MDQwNmM0MTUzOTE2ZWJiNGQyYmIxZjQzYmU5ODczOGU2ODhlMGUgbGVnYWN5LXRydW5rCiszNDAxIDA1NTgwZTAwZjQxZTJjNzVkNzljZmU2NzA0ZTk2YjZkMDgxNWU3MGQgbGVnYWN5LXRydW5rCiszNDAyIGQ0MjZjNWQ1OTI1NGE1MDE2NGQ3OTc4MmY1MzVkNDFlNTM0NTllYWYgbGVnYWN5LXRydW5rCiszNDAzIDBjNjU3ZGIyN2RiZjY0ZjlmODg4NGU3MGZiODM3ZjIzMzZhM2MzMDkgbGVnYWN5LXRydW5rCiszNDA0IGU2MDM0ZWRjNDdhZTVjMmVkNzVhMjdlM2M1OGY1NjkwZDFkNmIzMjEgdW5sYWJlbGVkLTEuOS4yCiszNDA1IDViOGVjOGY3MTFjZWYxMDcwODFjY2ZiYzQ0MmY0NTY1YzBiMGRkODYgbGVnYWN5LXRydW5rCiszNDA2IGE3NTkzYmE5OWRjYmFiZGUyNDE2MGU1YTJmNWU3MGI4NmJlN2ZkN2QgbGVnYWN5LXRydW5rCiszNDA3IGU1NTcyNGZiYzJhZjdiMGUxMTY3MTUzOTNkNTYzMzJjODhlZDMzOGEgbGVnYWN5LXRydW5rCiszNDA4IDhmMjQ2Yzg5ZGRjZWI5N2VlNzdmZTZlZmI5MGM5Yjc3NjQyZjc4ZjcgbGVnYWN5LXRydW5rCiszNDA5IDkxYTc3MDg3ZTgzZjIxYzRlNTJjY2E2ODczNDk1NTE4N2Y1MDg1NWMgbGVnYWN5LXRydW5rCiszNDEwIDFhNmJhMjNhZTQ0N2FjYWUwYTVkYTk0MzkwY2U3Y2FiOTQ5ODM4MGMgbGVnYWN5LXRydW5rCiszNDExIDkxMWI4MDE3ZGE0NmI2MzI4ZjI3YzU2ZGZmMWIzYTM2MWE1NjE1MzIgbGVnYWN5LXRydW5rCiszNDEyIDZiM2I3NWYwN2NiYjdiODI2ZTBiNjE3M2NkYzRmZTljZTkwOTI3MDMgbGVnYWN5LXRydW5rCiszNDEzIDc4Y2IwYWNjZmIwY2VmMjlmZmEwMDdmYzk0MzhlYmE5NDc5YzY4NmQgbGVnYWN5LXRydW5rCiszNDE0IDkxYzFmOTRiMTdiYzExN2E4MWJmZjZiMTI2M2U0YzE3YmM1MWVmNzggbGVnYWN5LXRydW5rCiszNDE1IDQ5YTdhM2MzZDg1MDg5Y2YwODk0MjhlNTk2ZTU2ZTVhM2JlZDRiZjAgbGVnYWN5LXRydW5rCiszNDE2IGNhMTcyOGM0YmQ3ODg0NmY2MmRmNzgwNzJhNjcwNzgzNjkzYmZmNGUgbGVnYWN5LXRydW5rCiszNDE3IGM0Y2QwZDlkODI4MWRiNTMwOTY1MDAwNzJiYTA0N2ExZDdlOGI0NGEgbGVnYWN5LXRydW5rCiszNDE4IDY4NWIzMWZlODljNjBkMDI0YThkYTAzY2ZhZTRmNWRhODEwMGI3MTkgbGVnYWN5LXRydW5rCiszNDE5IGJiY2VjMjRiMjQzNzc2ZDliYTQyMzkwYjc0ZDExNDE0YzE3YmYzM2YgbGVnYWN5LXRydW5rCiszNDIwIDQ5NjMwMTIzYTNmMzQwMzdlOGJiZmEzMWNmNWQ3ZGQ5YmZiYjI1ODMgbGVnYWN5LXRydW5rCiszNDIxIDdhYTk2MTNmZmQzNjMxMzYyMGU5ZDAxZDJiOWRmMjA1NjY5ZTBmZWYgbGVnYWN5LXRydW5rCiszNDIyIDFjYWJjMmI2Yzk3MDFhZWEyOWJiNTA2YjU5Mzk0NmU2N2JmNzU5M2EgbGVnYWN5LXRydW5rCiszNDIzIDZiODY4OGU2YTdlZDZlYzVmNjM3MjM2OWNiYjc2NDczZmMxYjc1MzMgdW5sYWJlbGVkLTIuMy4yCiszNDI0IDZkODBlMWY4ZjcwYTU4MGI3ODkwN2FmZmE0NTRmZTUxNzYwYmEwMjMgbGVnYWN5LXRydW5rCiszNDI1IDQ1ZDcwODUyMTE4ODE5NTljYWE1NmNmMjY1MzAwMWIyM2UxYmYzMjAgbGVnYWN5LXRydW5rCiszNDI2IGIxMjBjZGQzMGZiY2E1OTFhNDQ3M2JkMTFkYzBlMjliZWUxMzE3YWMgbGVnYWN5LXRydW5rCiszNDI3IDJjNTE1ZjA3MzY3YWQ0MTQ3ZTFhYTM5YmJlMzdlZDEzYzFlMjE2Y2YgbGVnYWN5LXRydW5rCiszNDI4IGY4MjBlNjkxN2YwN2U1MDEyYmRkMTAzZWY5NzM4OTMxOGQ1YTEwZjggbGVnYWN5LXRydW5rCiszNDI5IDY1YTFlNGU5Y2Q1NDZjNGU1Nzg3MzBhODhkZGFmMjM0YmU0ZDQwNDIgbGVnYWN5LXRydW5rCiszNDMwIDZjNThkYzFkMmY5ZDIwOGE5MTA2ZDQ0NDhjMjlhOWE2YjZjMzM4MTQgbGVnYWN5LXRydW5rCiszNDMxIDE4MTFlOTYwODBkNDQyMmRlZWIxOWY5MTlkZWViYzdiNmQzZjRiZTAgbGVnYWN5LXRydW5rCiszNDMyIDg5ZTRiMTY2NjE3ODljYjM2OGU0OGUzZGU5MTE4NjllMzk0ZmUxMDIgbGVnYWN5LXRydW5rCiszNDMzIGQwMmNlMzBkN2RkYmM4N2JkZTYzMzIwOWZkYWZjYjEyYmZhZTI4YjcgbGVnYWN5LXRydW5rCiszNDM0IGY1ZjczYzk0NjNhODZkMjY3OWE2NjkyNDcyYTdhYmQ3ZTI3YTYwY2YgbGVnYWN5LXRydW5rCiszNDM1IDI4OTQ4MTgxZmIyZjc5NWY4ZWZmYTU2MTQ0ODYzNmFiNzAxNDQ1ZWMgbGVnYWN5LXRydW5rCiszNDM2IDE0MzY5YTVlNjE2NzkzNjRkZWVhZTlhOWEwZGVlZGJkNTkzYTcyZTAgbGVnYWN5LXRydW5rCiszNDM3IDI5MTliNDQ4ZTM4NThhMTA4ZTc0Yjk2MmI3NDgwOWUxNzYyYWY1YmMgbGVnYWN5LXRydW5rCiszNDM4IDdiNzQxMWY5YjExNmYwMGMyMzRhMzI4NmUyNmYzY2ZhNjZhMGRmNzEgbGVnYWN5LXRydW5rCiszNDM5IDY5YTA2NmI2YjFmZjRhZjUxMTYyNjVkNjlhNDEzZDFiZmMzYWRjODggbGVnYWN5LXRydW5rCiszNDQwIDJjNzQ5NjBkNmFmZWYxMzZmOWE4YjQxMTdmNWUwYWM1YmNlNGM3Y2UgbGVnYWN5LXRydW5rCiszNDQxIGJjYTcxZjJlMmNiNGVlNjY0NjE4ZDA1MGMxN2ZmZDdmMjgwMTZhMzkgbGVnYWN5LXRydW5rCiszNDQyIGY3NmI3YmE5OWQzZWZiNTE1MjM3ZWQ3NDdiY2NiOGRlNzQ0NDJlNTkgbGVnYWN5LXRydW5rCiszNDQzIDg3MTQ2ZGMxZjc5YzViN2NlOTgwYWY4YWY3MmJhYzFkY2NmY2I5ZjAgbGVnYWN5LXRydW5rCiszNDQ0IDNjYTQ1NmY0NGJmM2VmMzZhOTc0ZGQ3NWU4YWRkYjljN2I1Yjc0ZTUgbGVnYWN5LXRydW5rCiszNDQ1IDllNDIwNmY2NGQxYjUxNDdmZDA3ZTMyNzEyNmI2YzJiYmU2ODllMWYgbGVnYWN5LXRydW5rCiszNDQ2IGFmMjdhODMwMGQyNDA5NGFhZmE2ZWU3NDZkZTU1NjdiYTliY2M0NDcgbGVnYWN5LXRydW5rCiszNDQ3IGM2MGNiMDU5YzQ4MWU0YTk0ZDU5NDY0NjlkNDI5YTI5YWFmZjhiNWQgbGVnYWN5LXRydW5rCiszNDQ4IGUwNDY0ZTcxMTVjYTJiZjljODBjOTVmNDQ2YTZkNjRkZmYyODNmMDIgbGVnYWN5LXRydW5rCiszNDQ5IDkxODFkYTQwNjk3OGM4MWRlZDE5MDJiOTRhMGNkOTYyYWQzMTkwYjkgbGVnYWN5LXRydW5rCiszNDUwIGRiY2U3MmFmZTI2MTUxNmQzNTYzY2QxNzIwZmFjMjM2OTY4ZGNhNzMgbGVnYWN5LXRydW5rCiszNDUxIDZkN2ZkZWM5ZDQ5ZTI4NDNiNDdhZTYzNDUwZDYwOWYzNDM1NzQ2NTkgbGVnYWN5LXRydW5rCiszNDUyIDMzZjNkN2ViZmNjMWIwMWU3MTY5Yjc2MzBhZWRkNTc2YThjNjdhZDYgbGVnYWN5LXRydW5rCiszNDUzIDY3M2RkOWJiZGJmMTUxMWFlOTAwOTI3MDFhZGY5MjBhNzYzYTI2MzAgbGVnYWN5LXRydW5rCiszNDU0IDlmZWQ1NzI2YTM2ZDdjZTEzNTVjMzA1OTI4MzhkOTMzMjFkNTgwZWUgbGVnYWN5LXRydW5rCiszNDU1IDRkMjkyYzc4NTdkNDc0ZmFlNWVjOTA5ZWRkNDM0YmNlZDA4YjgzNjQgbGVnYWN5LXRydW5rCiszNDU2IDc5NzFmZWNiZjI4ZTdlMWUwOThhNzk3OTY0YTZkYzAwM2Y5ZWM0ODYgbGVnYWN5LXRydW5rCiszNDU3IDUxN2QyOWViYzg0MGRlNDViM2M5NDU2MDkzZDg0MmExYjMxYzEzYmIgbGVnYWN5LXRydW5rCiszNDU4IDU3YjgwYjk4YjhlNTA3NTJjYTQ1NzcwNDNkODQ3YWNkY2VhOTA5NWYgbGVnYWN5LXRydW5rCiszNDU5IGFjM2M4MGFiYmY0MzAwMzQ5YzVlNmUzMzg1MzBiMjlhZTBmYTM2MDQgbGVnYWN5LXRydW5rCiszNDYwIDY3MjYxYzc5MmY0YzE0ZmJjYjEzZmZiMGI1MWE4MzZjMmFkNTEzMGEgbGVnYWN5LXRydW5rCiszNDYxIDQ3NzNkNWMzYjVhNDZkZTBmNmNmZGJjNmMwM2MxNGQyN2U5NDg4NWIgbGVnYWN5LXRydW5rCiszNDYyIGMzZDA5Zjc2ZDZiZjQzOGY5YzdiMTNmYzZiMTE2ZjBiZDVlZjgzOTEgbGVnYWN5LXRydW5rCiszNDYzIDkyMzRjOTYxZWM0M2NhMjg1N2UzODEwMzI2NzBkZTk0NTJhNWM5ODQgbGVnYWN5LXRydW5rCiszNDY0IGRlYTc0NDJjNWY4N2M2ZTFkMGEwOWFlZjViMWIzZWFhODcyODg0NzQgbGVnYWN5LXRydW5rCiszNDY1IDA0YTdmOWJmMWU2NzJjNGY3ZGU1MjdlODg5MDQ1ZTYzM2QwZDA3YWIgbGVnYWN5LXRydW5rCiszNDY2IGM2NGFmNTY3MWNjNjk1ZTYyYjM2NGQ0MzIwMjIxZjlhOGQ4ZjZlNTQgbGVnYWN5LXRydW5rCiszNDY3IDM5Yzc2NmE2ZWQ1ZjlkYWIyMjk2NGU5MWQxMjUwNzhkODBmNDU5NGEgbGVnYWN5LXRydW5rCiszNDY4IGNlZjUxNGY5OTc0Yzk4M2JkZmFmMWU2ZmY2MjY1NWJjNjk5ZDQxMWYgbGVnYWN5LXRydW5rCiszNDY5IGJjYTc4NTVkOGUwOTNmMDlmNTVjYjBhMGYyYjkxMGFiNjdmZTMyZTQgbGVnYWN5LXRydW5rCiszNDcwIDIwOTA1NWU1ZTQ2YTQwZDIyNmNmZjVjNDYyMzZjODA1YzkxMjY3ZjQgbGVnYWN5LXRydW5rCiszNDcxIDZlMzdhZjNmMjYxYzM5YjkyZmU3MjFkYWI0NDIwYjljOTc0MWY1MWMgbGVnYWN5LXRydW5rCiszNDcyIDk5ZDllN2U5ZjM3NjdlODkxNDAwYmQzOGIwNGJlMTU1ZGE4YjI1MmMgbGVnYWN5LXRydW5rCiszNDczIGNmZjdjNDhmYTllMTVjZWM2ODA1OWE3NTkwN2FiYjQ0MmVlYjNmNWIgbGVnYWN5LXRydW5rCiszNDc0IDFlOGJkMzU0YjY3NjExMmQ4YjNhODRiODcyZDcyN2Q5YWE2M2UwNGUgbGVnYWN5LXRydW5rCiszNDc1IDAyYzAzYWZjNTEzZTk1ZjMxNzhlOTc3ZWUyMGYzNjU4MTA4MzhjNzkgbGVnYWN5LXRydW5rCiszNDc2IDc0N2NlN2UzNjA4NDRhMzNlYzFiMmFlYmJlODhiYTY1NDBlMGYyYWQgbGVnYWN5LXRydW5rCiszNDc3IDA4MzBjZjJiZTFkMmM1OTI3Y2MzM2FlNDJkZjhkYzZkOTc2ZTk3NjggbGVnYWN5LXRydW5rCiszNDc4IDJmNjkxZGM1NGJmYTZhODg1NWE2NDI5NDRlZWQ3NDhjNjI5ZWE4ZDMgbGVnYWN5LXRydW5rCiszNDc5IDZlZTM4MDM0OWM4NDkwMjMyOTc3ZDUxYmUyOTg0ZmM1Njc0M2QxMTAgbGVnYWN5LXRydW5rCiszNDgwIDkxOGJlZTkwZjczZTE1MjJlMTc2NjQxOTg0OTE1YTgyZmZkYTFmYjggbGVnYWN5LXRydW5rCiszNDgxIGFjZGMwYjlhNmM3ODQ4YTY5MzdhYjc5Y2ZmNGQ5MGE1NThkZDg5YzUgbGVnYWN5LXRydW5rCiszNDgyIDJmM2YyOTNlZjVmMTU1OTc2OTAwNzBjZGU5NTExZTk0ODhiN2RlNTEgbGVnYWN5LXRydW5rCiszNDgzIGVjMzEyYjY0N2ZjYmZhODk4ZmRkYTk3NDk0Yjc2M2NjOGNkNmJjMzAgbGVnYWN5LXRydW5rCiszNDg0IDkyZTZhOGNmMTRiZWU2NTU2NWVmOGFkNmU5YmIxOWZkODc4ZDkzNTEgbGVnYWN5LXRydW5rCiszNDg1IGNkMzk3MjY2ZGMxYzhlMWUxOGQwMmY4ZDlmZTkzNDI1N2ViMzYwOWQgbGVnYWN5LXRydW5rCiszNDg2IDc4NzQyYjNmZGQ0NGJhOTBlMjdjM2U5ZTFhYzllNGZiYzI5NjE1M2QgdW5sYWJlbGVkLTIuMTYuMgorMzQ4NyA5MDdjMzk5NmIxNWMyYzg1NTRiMDQyMWMzYzE5ZTY5YmVmZTI1NDhkIGxlZ2FjeS10cnVuaworMzQ4OCBhODA2Nzc3OThmODQyMDRiMWY4MzU2MGNmMTA4ZTYxNGJhYjk4NWE4IGxlZ2FjeS10cnVuaworMzQ4OSBmM2M5MDdlZmU1ZDcxMDIwMmJlNjhmNmRkNDVhNThhMmI4MzI2YTg2IGxlZ2FjeS10cnVuaworMzQ5MCBmZTc2NTg1Yzc0OGU4ZWEzZDgyZGE4NjZjZTZiNmUyYTA2MTk2M2M2IGxlZ2FjeS10cnVuaworMzQ5MSA3MTZiZTc2NWE3OWIyYmM2ZDMyZDYxM2VlMzkwOTcxNTBhN2JjNmJkIGxlZ2FjeS10cnVuaworMzQ5MiAyNWQxYzk5MzI1NTgyMmEwNzM3NmE0YjY3MjJiNmJlODY1NjIwOGJmIGxlZ2FjeS10cnVuaworMzQ5MyBlNWQzNjM1NDAxNzlmOWU2Yzk3ZjFhOGVlZjFjMWQyOGFlNzc4OTU2IGxlZ2FjeS10cnVuaworMzQ5NCA4YTM1NzRhMDdiMTg1ZDViYzJjZDBkMzk5Mzk4Y2VhY2U3NGNiYTRlIGxlZ2FjeS10cnVuaworMzQ5NSBlMmRlY2E5ODMwMDgyYjcwMzljZDg0YjU3YzgwMWMxNGM5ZGEzZGM4IGxlZ2FjeS10cnVuaworMzQ5NiA1MTljMjUwMzljNmE0NTg4YTdkZGVjZjJhYWEwYWUzOGU0ZTgzMGQ4IGxlZ2FjeS10cnVuaworMzQ5NyA0MDllYTc0ZmViMjE3YzI0Yzk0NGM3M2M0MTlmZDM2M2EyNWNhMjc2IGxlZ2FjeS10cnVuaworMzQ5OCAwNzkwMDgzNGNjOTdkMWI4ZGYxYzM3YTc4MWZjNGMxYzliODI1MjVjIGxlZ2FjeS10cnVuaworMzQ5OSBlNWZiOWNkYmUwNTA3YmIzMWY0NjNiZTJjNGExMDY0MjQ2YTM3ZWJmIGxlZ2FjeS10cnVuaworMzQ5OSA3OGE3ZWQ2OTUzMDI1ZTdlY2RkZTk1ODUwOTliMDFhNmFlNDBiNzZhIGxlZ2FjeS10cnVuaworMzUwMSBmMzg0OGY3NGIyODI3OTlmMzRhMDM4ZDFhMjhkY2E4OGM3Y2U2ODhlIGxlZ2FjeS10cnVuaworMzUwMiA0MTkyZTI0ZWM1NjJkMWUwOWIzODhjZWU3MmI4MWIyMDdjZGY4MzlkIGxlZ2FjeS10cnVuaworMzUwMyBjNDQ1NDVlNTk1YTE1Y2MwYjIxODYxM2JjZDFlYTJkZGIwZjNkNDNmIGxlZ2FjeS10cnVuaworMzUwNCBmOGY2NGNiZDlmYjVhMTliYjAwNjUxYjlmNTQ3NDgzYWFiOTI5YzYzIGxlZ2FjeS10cnVuaworMzUwNSBhYWIzMGI3NGNmNmE4ZGYyNzYxMTFkNzc5NGU0Mzc0NDU5MmQ1MTk3IGxlZ2FjeS10cnVuaworMzUwNiBkMjA3YmVlZGM4NmQ2OGJiZjNkOWVkOWFjMmU2ZDQyNmIzNDkyZWMzIGxlZ2FjeS10cnVuaworMzUwNyA2Njg4NTNkN2I2NGJjYmE0NDA5OTY0OTgzMmJjMWIwODFhYTdlYjg4IGxlZ2FjeS10cnVuaworMzUwOCAxM2QwZmRlNDg4MzI2M2JjNmQ1MjVhYzYzNjg5YTU1OGJmMjA2MzAzIGxlZ2FjeS10cnVuaworMzUwOSBmMzc5MWM0ZmI3MjQ3YjA4ZWQ2MTYxYmRiNThhOTY4ZGRjMDZkMTFjIGxlZ2FjeS10cnVuaworMzUxMCBkMGE1YzMwMGVhYWY1ZWMzYzEwMWU4OWZmMzEyNzE0YTRjMTNiZDA2IGxlZ2FjeS10cnVuaworMzUxMSAyNzk4ZDg2MDNiZjAyODczZGU4MDUwZWFjNWM4ZDI3MzQwZTllZjA1IGxlZ2FjeS10cnVuaworMzUxMiBmNDE0MzNjOThjNWViMDJlODhjYWU5OTk4ZDkzYzJiODdjOTM5NGM3IGxlZ2FjeS10cnVuaworMzUxMyA1ZDBiMjc4MWUyM2I0MGFmNTdhYzgxMmM1ZTViMmY0YzRhZDk0ZjIwIGxlZ2FjeS10cnVuaworMzUxNCBhMjJhMzUwZDNhNWRkM2NkMDI0ZDY4Y2FjZDI1ZjNiOTE2Yzg1YmJhIGxlZ2FjeS10cnVuaworMzUxNSA1ZWZhNzZjYTE3ZjJlZDEyOGM2ODIzMzI3MDU4YzhhMzdiOWM0NDM1IGxlZ2FjeS10cnVuaworMzUxNiBhM2EwMjdjNDllYjEzYzA2ODBlMzNmMTE3YjFlNWQ4MzI0ZGM0MjM1IGxlZ2FjeS10cnVuaworMzUxNyBkOWNiNTVlZjM0ZTJlNTA0YjEwZmVhMGQ4NDE3OTIwNWQ3ODkwMmU4IGxlZ2FjeS10cnVuaworMzUxOCBlMTQ5Yzc3ZDE3M2NhYWRjMDJkZmI3YjVmNTQ3YjI0YjcyNGY5MmU2IGxlZ2FjeS10cnVuaworMzUxOSA0ZDFhMTVmYzQ3NDhkNmQ5MGQ0Y2ViZTU2MjEwYWY0YzQ4Y2JhOTBiIGxlZ2FjeS10cnVuaworMzUyMCBhNjM1NWM4MzU3OGQ4ZDNlOGVmOThlNDllMDhlNjFmYTk1NmI5NDRmIGxlZ2FjeS10cnVuaworMzUyMSBmY2NkNDE1ZTJlYjhjZDBhYTVjMWFhM2ZjMTg2ZTFjZmEzNzg4OTVhIGxlZ2FjeS10cnVuaworMzUyMiAyYjU0Y2NjODUyZTQwNGE0MTcyYmM3ZWVjYzg4ZWUxMDA5NWE5YjlhIGxlZ2FjeS10cnVuaworMzUyMyAwNDNkYTE5MzAyZWYyNDRiZjU3MjFmMjE4NmNhMjc5YmNiY2Q5YTA1IGxlZ2FjeS10cnVuaworMzUyNCAyZmFjMjA5ZTFjM2Y1NTIyMTJkMjk2ZTE1NzI1MTUyOGU0NGQzMDQ4IGxlZ2FjeS10cnVuaworMzUyNSAzZTMzY2E1NGZiZGMxYzMyNjFkZDhkNjgwZGYxZDVmYTNmMDZhZDdlIGxlZ2FjeS10cnVuaworMzUyNiA1ZDc0YTk4NzM1ODk2NzQ1MGQxOTJiZTA4ZDI1OWNkYWU5ZGMyMDAzIGxlZ2FjeS10cnVuaworMzUyNyAxODA4Y2E1ZDg4ODMwOTdjNzJjNmE4YTg5MTQzMDQxYzIwZWExM2MxIGxlZ2FjeS10cnVuaworMzUyOCA3Y2Q1MzNjZjE5NGE5ZGJlYWU5MGI4NzY4ZmY1ZGQyZWUzM2JmM2E4IGxlZ2FjeS10cnVuaworMzUyOSA1NjA0MDdlYzYzMmI5ZjZmY2ViZjg5NzU1ZjM4M2QxZWI0NzJlNGFhIGxlZ2FjeS10cnVuaworMzUzMCBlMWM0NzNmOTI5YzQ3MjY0N2YwMjEwZmE2OGJmYzY4YTkwNTAyMzBkIGxlZ2FjeS10cnVuaworMzUzMSAxMzI2MDJkODU0ZDhjNDBmNGU0OTNlOWZhYTQ2ZjYyN2VjNjQxMTA2IGxlZ2FjeS10cnVuaworMzUzMiBhNWZjMTA0ODQ5YWEyMWY2MzIxZjVkOTk3ZTNhMzdmYjY1YTdkOWQzIGxlZ2FjeS10cnVuaworMzUzMyAyODdmYzMyYzFkOWMzZmIyZjIyMWRjYjA1NmEyNTM5MjliZTMwN2NhIGxlZ2FjeS10cnVuaworMzUzNCBlZTRhMmY4OTMyNTRkZDQwZTAxYzI3ZGNiNjFhNTM4ZDM5MzQ3MGUzIGxlZ2FjeS10cnVuaworMzUzNSA0YzhlNWZjYjMzMDE1OWRmMzc4ZjM3YjU4MzI4OWZhZmFhNWQ5ZGE5IGxlZ2FjeS10cnVuaworMzUzNiA4OWUxZTVkOWNjYmYwM2Q5NDg1MGYyMTZjNDE5ZDRjMTU4YzU2NTg1IGxlZ2FjeS10cnVuaworMzUzNyBmOWU1YTI4MjM2Nzc3ZTUwYTMyZjEwZGIxOTM4OTBiMTlhZjQyY2I4IGxlZ2FjeS10cnVuaworMzUzOCBmYWFmMzg0M2I4YmQ1ZDFhNmZiN2MzMzU3YTBlNDg4MDMwYTA2NGVkIGxlZ2FjeS10cnVuaworMzUzOSBmN2M2MDYxMDNkZDVlZDFlZWEzZTU3MzNlZWYxNzU1NjEzMTAwOGU0IGxlZ2FjeS10cnVuaworMzU0MCA3YmU3YTdlMGM0NjVlNzZlOGQ5N2U1NDU5ZDVmZTYzOGVjZjVjZmU1IGxlZ2FjeS10cnVuaworMzU0MSA4OWQ3ZDVlMTM2YWRkY2U3YjU4ZTc4NzVlZTI4YzRmMjZkZGQzZmY5IGxlZ2FjeS10cnVuaworMzU0MiBmM2EzMjU2NjJkMzljNjJiMDhjYjA0MWI0ZDMwNzc5MzU4OWI1YTc4IGxlZ2FjeS10cnVuaworMzU0MyAxMDVkMzMyYzI3N2M2NTE5YTEyODM2ZTI5ZWYzNTE5ZjliODZjYWFhIGxlZ2FjeS10cnVuaworMzU0NCAzNTQzY2U4OGEzMWVkODVmMmIxZGE1MmUyOTgyMzAyNGRjNTYyYTM1IGxlZ2FjeS10cnVuaworMzU0NSBiMDNkMDBlMjRjM2MxYTA1N2Y4M2M0NTdlN2Y3YTYyNWRjYjNjMmY1IGxlZ2FjeS10cnVuaworMzU0NiA3MTBjNmIxM2U4NzUwODNhNjQyZWQ0ZTQyZWZlNjhmOTM4YTZkNDE0IGxlZ2FjeS10cnVuaworMzU0NyBhNGFhODMwMTJhZjNiMjNmYWFlYzJjMDlhYTBhNmU5NTE2NzY4YjJjIGxlZ2FjeS10cnVuaworMzU0OCBjMDJiM2ZlMGIzM2MyNTllZmNkZjFmODIzNjlhZjY0MTE4MTUwY2E1IGxlZ2FjeS10cnVuaworMzU0OSBhMGEwYzc2ZjZlZjZhOGNiNTdlOGNkNzQwN2IwMDFlMzg5ZWZhZTFlIGxlZ2FjeS10cnVuaworMzU1MCBhZTRlOTBmYThiY2E1MjE4OTRiNzA4YTllMDRkMDBlNDU1NDIyYjAzIGxlZ2FjeS10cnVuaworMzU1MSBiMmM3YWFiZmE5MTNiOWJiMmY5ZjMxNzg1YjFlZjY0OWEyZjUyOTQzIGxlZ2FjeS10cnVuaworMzU1MiAxNThmMGQ5Y2RkNDBmNTM1ZGE4ZjU4NzEyMWFlNzEzNGVkNjA4YjUwIGxlZ2FjeS10cnVuaworMzU1MyA1YTMwYTRlMDU2ZTdjYzM3ZDcyZjEwYWRlMTIzNDBjODRhODgyOTY0IGxlZ2FjeS10cnVuaworMzU1NCBmOTkyYWMyYTM4ZDVjN2YzZmM1YTQ3MzA3YjYwZWRiMzM4ZDczM2Y0IGxlZ2FjeS10cnVuaworMzU1NSBkY2UzYzMwY2Q3Mjc4N2E3NDNkYjdhODdlNDYxNjk3YjI5OWZiZDY0IGxlZ2FjeS10cnVuaworMzU1NiBlOTljMjI0OTBiZmJkNGUxNzVhYjA5NDZlMGQ3Yzk5N2Y4ZjNlZGQ3IGxlZ2FjeS10cnVuaworMzU1NyBjZmZlOGQ2YjJmMDliN2VlZDE4NjdiZDczOTMwNWE3NmY0MDkxY2NkIGxlZ2FjeS10cnVuaworMzU1OCA3YzMyNDVjMTg2Nzc0Yjg0NDQ1NDBiZWY2ZDUzOTNhMzYwMTk2ZWQzIGxlZ2FjeS10cnVuaworMzU1OSAwZmZmZjQwZDEzZmY0NzBlMzkxZTg3MTljZDI1YWJjNTNlMzU1NGIwIGxlZ2FjeS10cnVuaworMzU2MCA3ZDZhMmQ5NTBmMTNjNzQwNzg1YzRmYWYyMDMzMWI1NmFhNjFiZmZmIGxlZ2FjeS10cnVuaworMzU2MSA5OGY1MWY2MWNiNGI3NmFmZjc3ZDVkMGJjMmVhYjVhOWQzNjliZTRlIGxlZ2FjeS10cnVuaworMzU2MiA0MjI5Mjc1ZGVjMzI2MTAzYThkYjQ4NjdjODczNzM1YjI2MGM2NGFlIHVubGFiZWxlZC0yLjEwLjIKKzM1NjMgYmU2MWUwNzJhNTA1YjllY2IwZjk3ZjdlMWIwZDA4YTlmZWUxY2QyYyBsZWdhY3ktdHJ1bmsKKzM1NjQgNGEyODZiMzAwYjVlZmNhZjI4MWZkYmU4YjUzMjZiMTlhZDk4ZmNjOCBsZWdhY3ktdHJ1bmsKKzM1NjUgMWNlMmMwZjU2NWVmM2U2YmFmNDQ0YzgyOGZmNzI5MjA5YmM5ZDEzYiBsZWdhY3ktdHJ1bmsKKzM1NjYgMWQ4NDE1ODdhZWRlYjA3MWE5YTU4YTI5Yzg3MGFjOGUxMThhZmY3NyBsZWdhY3ktdHJ1bmsKKzM1NjcgY2MxNzJjZTA1NTYxYWYxNmFhMDViMjE1YTA3ZDUxZjJjYmJjYzdkMyBsZWdhY3ktdHJ1bmsKKzM1NjggYWFjODIzMWE3MTVjN2NlNDg3N2VhZTZmYmM5ODFlZGI3YmMzMjdlNiBsZWdhY3ktdHJ1bmsKKzM1NjkgY2Q1OTg5YTU4YmNmZTAzMjBkZGQyYjE0YzQ2OWY3YzJiNWE0YzQ5MSBsZWdhY3ktdHJ1bmsKKzM1NzAgYWY0ZTI3MWQwN2IxZGQyZWU1YTcwNmNkYmVhNmViZWJmOTRkODJlZCBsZWdhY3ktdHJ1bmsKKzM1NzEgNjI3ODkzM2QwMmUzOGJiOGFiZGRiYzc1NDY3M2Y3OTYxN2QxYmY4OCBsZWdhY3ktdHJ1bmsKKzM1NzIgYzgxNDkzNzg4MGNjM2NjMDA2NzYwODJjYzhhOWI0YTRlNWU5ZDc4YyBsZWdhY3ktdHJ1bmsKKzM1NzMgOTBjNWUyYmI0ZGE1NWJlZGU2ZTdkOGRlNDRlNmEyYjBiY2RlMTFjZCBsZWdhY3ktdHJ1bmsKKzM1NzQgNDc0ODIzZTVmN2RjMTNiOTZkNWZkOGViOWM4MDljY2U4YWE5MDQ2NyBsZWdhY3ktdHJ1bmsKKzM1NzUgYTU4YzA2MWI0ZjU1NTI1MTc3ZDY3YTE1MmU3ZTBmOGY5M2Y0ZmVhNyB1bmxhYmVsZWQtMi4xLjIKKzM1NzYgMmUwYThhM2VlZjRhOGY5NzViMGMxMjY3MTM1MmQxMjU3N2Q2MzZiYiB1bmxhYmVsZWQtMi4xLjQKKzM1NzcgYjlmY2ZiOTlhM2U1NGI2Zjc2NjM1MDhkMTBlMGQ4MDg3ODFiOWY3YyBsZWdhY3ktdHJ1bmsKKzM1NzggMThkZjY3NDUzOWRhNTUzMDVmNmQyNmMyZGQ0NjAzMDZhMGZmMmMzMyBsZWdhY3ktdHJ1bmsKKzM1NzkgZjViMWRkZmRkYmE4MzNiMzFiNmFhZjYxZDgxMTMwNDlmMDQyMzQ4NSBsZWdhY3ktdHJ1bmsKKzM1ODAgMzE1MjcyZWM0ZDViNjNkNWVkMmU1ZjVmMDNjOGZhMTFmZmNkNjMwYiBsZWdhY3ktdHJ1bmsKKzM1ODEgMTY5MWVhNWQ5ZDRiNWIzNDQxOTdhMzM2YzczMjFjNWVhM2JlOTI2NSBsZWdhY3ktdHJ1bmsKKzM1ODIgMDBmMWU4ODY0ZGNjZGZlNjE0ZDI0YjNlYzM0NDVmM2U0YWNiYzkxZCBsZWdhY3ktdHJ1bmsKKzM1ODMgYzkxNGIxMGJmMmVkNzc1YzAzMmQ3NGY1YWU0NWUwNDc2NjAwYmEyNCBsZWdhY3ktdHJ1bmsKKzM1ODQgMjQ5MTc3NGUzNmE5MGNiYjVjZmUyNjM0MzJiMWE3NmQyZDNhYTExOSB1bmxhYmVsZWQtMi4yNS4yCiszNTg1IGY1NTAzMWQ1NDliNzlhNmJlYjA3YzMwYmUxZGY1M2ZlNDczNDQ5ZWMgdW5sYWJlbGVkLTIuMjUuNAorMzU4NiBlZDUyMmM5NDhkNDI4YzM3YWUwZTlkNThlNGM5ZTk4NTA2ZGM3NjE5IHVubGFiZWxlZC0yLjkuMgorMzU4NyBjYWRlYjc5YzEzMmY1NTAyY2VmZjkyMzEyMDIwNzY2MGQ5YjI1NzJiIHVubGFiZWxlZC0yLjkuNAorMzU4OCAyODUyZWRiNGZmZmUwZWMzNzg5NWYwMzE0MTIzZTA4NDVmOGVjMGNkIGxlZ2FjeS10cnVuaworMzU4OSAwNjU3MDQyOWYwNjJkMzE0ZDBiODY4MjJkMWEzY2NkYTUzNDZlMjBlIGxlZ2FjeS10cnVuaworMzU5MCBkNmY2YTFjYjdkNzllOWIxOThmYzE1ODNiMjg2OWM5ZTlmNDAwODE1IGxlZ2FjeS10cnVuaworMzU5MSBmN2VkZmE2ZDBkY2JhNDg3MmJmNDA4NGY2YjU3NGQzZWExMThkZDM0IGxlZ2FjeS10cnVuaworMzU5MiBiMWJiNzRhMmI1OTMwZTliNGZjNzhlOWI1NWY2NjkxNTkyMTJhYmQwIGxlZ2FjeS10cnVuaworMzU5MyAyMDQwMDFkZGRjYzMyZTM4ZTEzNjk4ZDhkMmRkNTk0Y2M2ZDI1ODhiIGxlZ2FjeS10cnVuaworMzU5NCBkMmY5OGJlZWM4NWNmMjI0Yzg4Mjk4YTBkYjZkZTk1ZDdjMjllNDA3IGxlZ2FjeS10cnVuaworMzU5NSBmZTcyOTg4MTNmMTcxNGI0N2ZhMmI5MzA2NzA2ZmYzNWY4M2FhNGQ3IGxlZ2FjeS10cnVuaworMzU5NiA4YTkwYzliYmJkZjBjOWQ3MWE4MzRjMmYzOTE5YWMwNDA1MTJkZTc1IGxlZ2FjeS10cnVuaworMzU5NyAwYjMyZWM4YTNlMjA4MjFlNjQ4ZWUxZTVjYTkxMzkxODdkMDA2YmM3IGxlZ2FjeS10cnVuaworMzU5OCBhMmYyYThiZDU2ZjliZmYxYTUyMWE2Y2M2ZWQ5ZDA1ZjIwNDdjNzUwIGxlZ2FjeS10cnVuaworMzU5OSA3MmJkZGZhZDM1MWE5YTIyMGRiMjQ1MDRkYWJhMGE2OGJhZDgyOGYxIGxlZ2FjeS10cnVuaworMzYwMCBjODg3YTFmMzA1MjU1ZDFhYmZhNmZlNmFlZmVhNjhmM2U2ZDZkMWVjIGxlZ2FjeS10cnVuaworMzYwMSA4NzAxYjkzMzgzYWIxZGRlOTE4ZWI3YzZjZDZmMDJlNTNiOTViOTA1IGxlZ2FjeS10cnVuaworMzYwMiBmN2E3NTJmYjdiNzM3ZDFmMGU5Y2I0NWE4YjAyMTI3NmI4OTY2MjJiIGxlZ2FjeS10cnVuaworMzYwMyBhZGE1NmIwNzY1YzE2NzJkOWRlZDgwN2Y2MzE2NWM3Nzg1YjU0NTA1IGxlZ2FjeS10cnVuaworMzYwNCA5YzcwN2Q4Y2YwYzhkMTZlNmQ4NjllZmI2M2E2ZTgzODgxZGVmNzdjIGxlZ2FjeS10cnVuaworMzYwNSBkNzE2OGNjMmJlMDc4MzNkMGExNWEwNmZhOTQ3NDZjNTkzM2YxOTAyIGxlZ2FjeS10cnVuaworMzYwNiA2NDBjMzZiNjRkZWExY2Y3MmZlZTQxZjUxMTljMDZkNTM0ODQ4MzExIGxlZ2FjeS10cnVuaworMzYwNyA1Y2FlNzY1MzE3MWI0NGExOWQ2NWFiNjEzOGY3MTgxNTQxY2Y2N2M0IGxlZ2FjeS10cnVuaworMzYwOCA0NmMyMTczMzdiZGU0ZjU0OTk4OTAxNGUyZmFmYTc4NjQ2ZDEzYTEyIGxlZ2FjeS10cnVuaworMzYwOSA1NjBlYzcwMzA4MTc3YjQzOTFhZmExNzFkNjA0ZGYzMWU3ZTM0NDBjIGxlZ2FjeS10cnVuaworMzYxMCA4OWE1Y2UxOWQxM2FmMjA4ZWExMmY1ZTZlMDAxZGYwYzI0YTdhNWRjIGxlZ2FjeS10cnVuaworMzYxMSBlNDk5MTE2ZDQ1ZTQ5MTlkYzQ2ZDc1MmIzODQ5NjgyZGU4N2RkMjViIGxlZ2FjeS10cnVuaworMzYxMiBkN2UzODQyYjJlN2IxMGZmZmIwNGY0MWViY2VhYzcwMTUwMTI5MTZmIGxlZ2FjeS10cnVuaworMzYxMyBlNDYzMjJhMzFmNjIyYmExYzlkMDQ0OWJmZDBmN2RhM2ExZGQ2MDhjIGxlZ2FjeS10cnVuaworMzYxNCBkODJjMmJhNGY4MTg3YjUwMGJlNmRkNjA0ZGM3ZWUzZmMwOGU2YjBmIGxlZ2FjeS10cnVuaworMzYxNSBjZDM4MjQ1NmM1NzJiYmFhMjA1NTNlOWIxMTEyNGEzZWQxNmU3MGM1IGxlZ2FjeS10cnVuaworMzYxNiAyOGNjZWFiZjhjY2VjNjgyYWM2NzMxOGMyM2NkODg3M2QxZjc4YjNmIHVubGFiZWxlZC0yLjM2LjIKKzM2MTcgY2JmMjhkNjU0NjlmNTA2MjQ4YjMyYWM0YzIyYjgzNDE2ZDYxM2E3OCB1bmxhYmVsZWQtMi4zNi40CiszNjE4IDQ3NDljOTU3NDY2Yjc3ZjEwODAxOTllYzZkOTcwZjM4NjdjYWNhMTcgbGVnYWN5LXRydW5rCiszNjE5IDJlYzA4YTlkMDMyNTUyMTA2Y2JiYmVhNmNkMGEwMThiZGFmNzkwMjAgbGVnYWN5LXRydW5rCiszNjIwIGYyZDA0MDU0YzkzNDZhMzY0NWY2ZDE1M2ZmY2M4NWQzZmE1MmM2NmQgbGVnYWN5LXRydW5rCiszNjIxIDkxMzM4MDY3Zjc1MDFlM2UxZDlkNjM4ODQ1YmFmYmE5Zjc5NmFjZTggbGVnYWN5LXRydW5rCiszNjIyIDlmYjBmMWFmYjM0Y2QzYTg3ZmMzNDA0YjAwM2I0YjZlMzk5ZTJlNTMgbGVnYWN5LXRydW5rCiszNjIzIDRmZjYwOGM0Y2FjYWUwYzE0NzRiNDlmNDhiNDViMzlkNzNmMzljMjUgbGVnYWN5LXRydW5rCiszNjI0IDMyOGY0NDZkMjAxNjc2MDZmOGQyNjJjMDQzNGExMDhiNTVhY2MyNDkgbGVnYWN5LXRydW5rCiszNjI1IGFlOTNlYzRkZDU1NjM2OWJhZmFiMzljNGUwYTg2NTNkYzc3NDE0ZjIgbGVnYWN5LXRydW5rCiszNjI2IGQ4Y2EwZTkxM2M0NDQyYTZiNGNkNjMyMjMyNjg5NWQ3NjQ0YTlkYzggbGVnYWN5LXRydW5rCiszNjI3IGE4OTMyYTRiOTYyNGQ5YmJkMjU1NDlkMmE1MjZjMTA1OTk5YTNjYjYgbGVnYWN5LXRydW5rCiszNjI4IGE1YTQ2NTRjMzNiZTViMzk3NzYxOTQwMzYxOTZlMzMyZTQ5OWFlODggbGVnYWN5LXRydW5rCiszNjI5IGQ3NzNhNWY4OTQyNjg3OWRiMmZlYmQyNTk4OTEyMzMxY2Q4YmYzM2UgbGVnYWN5LXRydW5rCiszNjMwIDNhNWYyZjExMGY3MDYyYjllMjY1MTJjZmVkNDlhYzAyYWU2MjRiODYgbGVnYWN5LXRydW5rCiszNjMyIDUwMTAxZWI2MzExYjA3N2M5ZDk2NzMzNjk0MjQyYTQxZjg3Zjg4NmUgYWxwaGExMDAKKzM2MzMgYjE4ZWIyZjRhZjBjZjNjNTkyZWMyM2M2ZmYzN2M2OGU5NjUwODFjZSBhbHBoYTEwMAorMzYzNCAxY2VhOWQ4MGEyYmMxY2U0YjFlMWY2MDhmZDI2ZDMwMDVkY2JmNGY0IGFscGhhMTAwCiszNjM1IGQ5ZDIxMzgyYzczYjkyYzE4MWEwMmNhM2EwNDIwOTRhZjIzM2EzOTMgYWxwaGExMDAKKzM2MzYgNWI5NzAwNDdhNzIyYzE2ZTEyNmY3MmUwNWY1MWNhNGRkMjk1NTVhOCBsZWdhY3ktdHJ1bmsKKzM2MzYgZWY3M2Q0MGE4Mjc5NTFjOWRhN2EzMmNjOGRiZTM4NjAwZmZlYzdkYiBhbHBoYTEwMAorMzYzNyAyOTJjNWU3OTI2NGRmMjY2ODI1NmM2OWU0ZTg0YmU5ZDA1Zjk2MWZjIGFscGhhMTAwCiszNjM3IGQ4Y2RhYzhmZGM3NDUwYmUxYmUxNjIyODY1NDk3ZDRhYTBiMmRjYTAgdW5sYWJlbGVkLTIuMjUuMgorMzYzNyA4YjA4YTM2Njc2ZDRlZGE0N2UxZGE3Njk2ZTRiMjI4MTIzMTkzZjNiIHVubGFiZWxlZC0yLjM2LjIKKzM2MzcgMTlmYTAxYzlmYWYzOTc2Mzc4ZjY1NGJiNGZhN2NkM2RiMjg4MmE0ZCBsZWdhY3ktdHJ1bmsKKzM2MzcgOGVlZjIxMTU1NWM2ZDM1ZjRkMjljOWRjNzc0YTI0OWJkMWM3NGNkMCB1bmxhYmVsZWQtMS41LjIKKzM2MzcgMGNhNjUzZDY3N2QzNDk3NDNjMjljMWFlMjIxMmE4ZGNiNTcyOTNjZCB1bmxhYmVsZWQtMi45LjIKKzM2MzggNjA3YjE5YWUxZTEzYTMyMjA1MDZlODVjMjg4N2ZmNzQ5YzY0ZjU1MCB1bmxhYmVsZWQtMS4yLjIKKzM2MzkgMzFmMWI5ODdjZGY4MmNiY2IzOGY1MDEwOGEwYWYwODM3OWQ4MzFmMyBhbHBoYTEwMAorMzY0MCBkOTYxOTliZTc0ZTZhNDQ4Y2M5NTQwYmQ5NmI5ZjFlNGM5ZjQxNWQ2IGFscGhhMTAwCiszNjQxIGY4ZDNmZjY2MzliNTk2NzBkYzExMzJkOWU4ZGNlNWQ4Y2M5NWZlYzkgYWxwaGExMDAKKzM2NDIgYTc5YjAyNDM5N2Y4N2M3MThhMmEzMWJkZjIzZGQ5NmRlMDI4ZWI3OSBhbHBoYTEwMAorMzY0MyA1Y2U0MDQ2MmFlOTlhZWQ5NGViNTBmODE4YzJjNGVjYjI3NzI5MjBhIGFscGhhMTAwCiszNjQzIGI4NTgwZTMyMDQ2YzFiNjkzOWNlYWI4ZTkzOTJlZWU4ODBmMmU0YWUgdW5sYWJlbGVkLTIuMS4yCiszNjQ0IDA4ZDRkYTQ4ZGNkNTg4NzQyMDgxMjcxMjQyMGZlMTdmMzAxNzU3MmQgbGVnYWN5LXRydW5rCiszNjQ1IGQ4YmEzY2Y5ZGFiY2E5NzhmZjU2NWYzNjE5MDA3MThhNWJjODc0NDggbGVnYWN5LXRydW5rCiszNjQ2IDFmOGM2NDg0OTIwMzQ4MDAxNTc1NWRiNTM4OWRkMjQ1YmRlYmIyYjcgdW5sYWJlbGVkLTEuMy4yCiszNjQ3IDZjMDY3NjlhODg2OWIwZGRmYWM3NGE5ODBlODY5NTUyNTg5NGI0NmIgbGVnYWN5LXRydW5rCiszNjQ4IDI1YzExMmIzYzk1N2VlMTkxNTI1YWM1NDdkODA3ZDlkMDA3OWI1ODggbGVnYWN5LXRydW5rCiszNjQ5IDEwOWQzOWRlYzEyODg2YmUzYzBjY2RkN2ViNjNlNDllZGFhZmMzY2IgbGVnYWN5LXRydW5rCiszNjUwIDVmM2Q2ZTRiNTUwM2Q1MWVhMWNiMjI0MmFkNzE3ZWY1NzE3MGU5MTYgbGVnYWN5LXRydW5rCiszNjUxIDMwNTc0OGViYWI0MzcyNDUyNWJhNGRmOWU3ZjBhZDNmYjk2MTk1YTkgbGVnYWN5LXRydW5rCiszNjUyIDRkYzdiMTViNmI5NzBkYWFkZTFlMzc4ZTczM2U3ZjhjMmViZDYwZDAgbGVnYWN5LXRydW5rCiszNjUzIGM4YTk1YzE3MGUxZWQ4NzM0MDczNDViOTFhNWE2Yzg0MzMzODk0ZjAgbGVnYWN5LXRydW5rCiszNjU0IGVkMzZiM2U5Y2Q3ODY1YWM2YjUxMWUwZDQ4ZWU1MGEwNWUyZWRkNTkgbGVnYWN5LXRydW5rCiszNjU1IDYzZWI2Yzc1MDkyNzU3ZDIwMDQwMDc5NzJhMWU0MjA5MWEwNmVkNDEgYWxwaGExMDAKKzM2NTYgMTljOThmMjBhOWI4M2EzMWNiNDg5YmNhY2IxMjI4N2EyZjE4OWE3MyBsZWdhY3ktdHJ1bmsKKzM2NTYgMDhjZDhiOTZiNmJmYzI3OGI2NmVkNDExZDNiOWQ3YjYzNGI4OTkxZiBhbHBoYTEwMAorMzY1NyA2YmNlMzNkN2YwZDExMmY0ZGRiMzk2ZWU5NTExYWY2NzY5MjMxMjE3IGxlZ2FjeS10cnVuaworMzY1NyBmNTMzNmQ4NmY1OGI4ZDlhNGUwMzRmZDRiY2UxZDBhM2ZmY2Q0ZGFkIGFscGhhMTAwCiszNjU4IDMwNTkyMThmNjMwYmQ4ZWMwZjI2YjEyMmVlMzhiZTc1NmVjNzkxYTYgbGVnYWN5LXRydW5rCiszNjU5IDc3MzhjZTk1YmE0ZGNhOWNkOGViNWVjZDNhMmJjZGUwYWVmMDVlNTQgdW5sYWJlbGVkLTEuOS4yCiszNjU5IDgzOGFhMTQwNmVlYWVmODMyMTZlMDQ0OTBiZGJmYmEzMWE2MTIxMWMgYWxwaGExMDAKKzM2NTkgMjQzMGE4NjAyYTY1ZDEzNjk1MzY2YWNjZWNmOTY0OWQ3NTRhMmI4ZSB1bmxhYmVsZWQtMi4xNi4yCiszNjU5IGI0ZjgxNWYzY2YzZTEwOGZjOTdjZjBmMjhiODdmYWJjMzg1MGU2MTIgdW5sYWJlbGVkLTIuMjUuNAorMzY1OSBkMDE4NzY1OGNmMGIzYmI2ZjQ0OWNkYzJkOGIwZTFkOWQ5MTg2YTUwIHVubGFiZWxlZC0yLjEuNAorMzY1OSA2MTJjNzZhYWMzYWE4OWU4NmY1ZTRlY2NmOTgzYjM0Y2VkMGEyOTcxIHVubGFiZWxlZC0yLjM2LjQKKzM2NTkgMzEzZDliOTMwOTQwOWVkZGQ2MmI5Nzg0ZTcwNmNkNDc0ZmNjYTMwNCB1bmxhYmVsZWQtMi4xMC4yCiszNjU5IDhkYzJjZjMxNDViM2JiYmE1M2E3YmRjNWQxZmUzYzZlYjk4Mzk2ODMgdW5sYWJlbGVkLTIuOS40CiszNjU5IDUxZWVmYzA1NGFmZjhiYTNiZTE4ZWRlY2NkOTI3YjEyMTAyZDE5NmIgdW5sYWJlbGVkLTEuNS40CiszNjU5IGFmNjY3YzZkMjA3MjIxMTE5NGRjYzQ5Y2VjY2VhZjFlYmJkMWRlNzYgdW5sYWJlbGVkLTIuMy4yCiszNjYwIGQ0NzA1ZDcwNjYzMjkyNDg5MDBjZjljNjI1NzFhMjIwMjJhN2Q2ZDcgbGVnYWN5LXRydW5rCiszNjYwIDFkY2EzM2ViMmQ3YTUzN2RmMTRhYjM4MzU2OTg4M2Y1NWRlOTk3NWQgdW5sYWJlbGVkLTEuMi4yCiszNjYwIDhmNDRlNDMxMDQxNGI2ZDk1Nzg1YTlmZTM3OTU2MzE0MmFiYWY3YjEgdW5sYWJlbGVkLTEuMy4yCiszNjYxIGRjY2VmMWNiZGE1YTA2ZGM4ZjE3OWFmN2M5ZGQ3NzcyMjI3YWU2OWYgYWxwaGExMDAKKzM2NjIgMmVjOTYxNDBhMzZiNDg4MzQ1YTNjMWExY2U4ZmJlNDBjM2IzYjI2NSBsZWdhY3ktdHJ1bmsKKzM2NjIgNGFhOTFmZDY5NzE1NDc5NmNhMWVkMWE4NWE1NmNjNTljYjNkM2Y4NiBhbHBoYTEwMAorMzY2MyBjNzUxY2JlZWU2ODgyZmIzMDQ2Y2JhMTY2OTkwNmE5NWYzNmE1NzI4IGxlZ2FjeS10cnVuaworMzY2NCAyMzU2MWRjN2IxNWY1ZTgzMjAwYWE1ZmMwNDVhYzRkMTFjYWQ4ZTlhIGFscGhhMTAwCiszNjY1IGU1NjBiMzM0MjQwNWIzMjc3YjRkZmRjNmIwMDM4MDIyNzdkMWVlMGYgYWxwaGExMDAKKzM2NjYgMGViMGVmYzUxZDliMzdjNDhmYTZjMzk0MzNiN2FlMjhlMjQ2OGU3YiBhbHBoYTEwMAorMzY2NyBjMzJlMTAyMDQ2OGRmZjg0MjkxNTc5Y2E5ZGM1OWMxYWI2NzgxZWZmIGFscGhhMTAwCiszNjY4IGUyNjNhNzJhNzZmZTlkNmExYWMwMWUyMzNiNDg1MjQyNzc2Nzg5ZWUgYWxwaGExMDAKKzM2NjkgOTNkMTI5NzE3OGNiZTc4NWYwYjI1NTEyMWFhYjJjZWNmN2VhMjE0OCBsZWdhY3ktdHJ1bmsKKzM2NzAgOThjNTU5ZmQ2ZTJhOTJhNGU1YzA5ZWE2YjMxN2UyOWIwMmRlOTYzMiBhbHBoYTEwMAorMzY3MSBjYmExMDk2ZGE1NTMxMWRkNjJiNjljMGJiYjgwMjcwYTBjMTg5OWZjIGFscGhhMTAwCiszNjcyIDIwNjRiMTY3MDlmMmNlNWY5MGY2Zjg0Yjg0ZWUwNTFiYjFlYzUwYjYgbGVnYWN5LXRydW5rCiszNjcyIDM0NWQ1N2JlYzI2OWQ3YmZkNmYyNmU3MjUxNTY5Y2EyY2QzY2ZiNTMgYWxwaGExMDAKKzM2NzMgZjg2ZjY1MWM3MDdmNDEwYjAyOTAxZjk4ZTVlNDdiZTU3NzViMTk5ZCBhbHBoYTEwMAorMzY3NCAyY2IwNzZhZTg5MjcyMTc5MTAxZTZhMWViM2YzMmU3MGNhODY3ZmU1IGxlZ2FjeS10cnVuaworMzY3NCBlYmY3Mjg4MDM1NWYxODI2M2QxZjg3MWQ1ZDA0MzMyY2QxNzExNmRlIGFscGhhMTAwCiszNjc1IDNmZTc1ODJiOTYzNmRmMmQ0M2M0Nzk0Y2VmMWM2YWViNmRiYWRlMjUgYWxwaGExMDAKKzM2NzYgNDgxNDFlNjhiMzY5ODMyMmZjMDM3ZDE0NDNkODE4NTRhMTA3ZjQwNSBsZWdhY3ktdHJ1bmsKKzM2NzcgZDgzNjY0NThkMTA2NmQxYzA0YTMwMmE4NzFiNDg4OTUyMTA1MzMwNSBhbHBoYTEwMAorMzY3OCAyYmU4MDQ5NjYxNDc2OThiNDE0N2E5NGZlZGVhYmJhMDk4ZmI3ODAzIHVubGFiZWxlZC0xLjEuMgorMzY3OSBmMmYxNjNjMDk5NTliM2U3NTIyNjcxNjNjYWQyNzgzMjJhOTRjOTk1IGxlZ2FjeS10cnVuaworMzY3OSBiNjZjNmUyYTZlMDZmYTM0MmUwNDhhZDAyMzYyZDRmYThlMThkYTMyIHVubGFiZWxlZC0xLjEuMgorMzY3OSBmZWMyY2Y4ZDZlNzc5OTk0OWIwNmQzMzEwMmZlMjZkOWU2ZDc3NzQ2IGFscGhhMTAwCiszNjgwIDg3MDc1MWZiMDllYmZkNTkzMDkyODU5MmY1OGI1OWEyYTk5MjM1ODMgYWxwaGExMDAKKzM2ODEgMGRlZjk0ZjgwYjM4NDk3NDg2ODMzZDlhYWY3MDk5ZmIyZjVjY2I0OSBhbHBoYTEwMAorMzY4MiAyNGQ2NTY1M2UyYWM5ZDQ0NjJjYzM4NDAyMjAwMGE2MTljYWRiZTE3IGxlZ2FjeS10cnVuaworMzY4MiAxYzRlMmQ2MjBiMTYzODI2MTI5N2I1ZmJjM2I4NjE0MmQ4MDY1OTc5IGFscGhhMTAwCiszNjgzIGQwM2NlYTZjMDc5NWQ0ZDk4NmM3NzM3ZjY0NGMzMjY5YTNlNTUwZGIgbGVnYWN5LXRydW5rCiszNjgzIDQzODUzM2IzNDFhNmQ1Njk5YzAzNWU2NTVkYmEwMjlhYWQ5N2I0ZTYgYWxwaGExMDAKKzM2ODQgZTMzNzYyNGMzZWEzNzA1MzU0MDFlM2I4YTMyYTkxN2Y1ZTNjZDM5YSBhbHBoYTEwMAorMzY4NSAzZDVkNGM5ZWQxOWRkODY5NWU5ZjU0N2RjZDZjMGJkNDFjMWVkYjZlIGFscGhhMTAwCiszNjg2IGI4MGYxZGM5NmMxYTU2YjNjNDNiNDA3OWY3ODczMDAzZjNkYzczZTkgbGVnYWN5LXRydW5rCiszNjg3IGVhYjAxOTZhOGQ4MzhlNzJjOWNjMDRmODk2NWJiMTUyNzRiOTMxZjMgbGVnYWN5LXRydW5rCiszNjg4IGI1YjFmMzhiZWZhNDhkYTBhODY2MWQ0YmFkMThhOGM5NzNmY2JlMzcgbGVnYWN5LXRydW5rCiszNjg5IDU1MGUyNjA1OTU4YjE2ZTY0MTU2NTc3N2MxMDlmMzVkYWFiZGNhMzYgbGVnYWN5LXRydW5rCiszNjkwIDJkZGVhOGU2ZGQyMGIwZmI3YmVmMzAyMjJlYTNhMDZhZWM3NDI3OTkgbGVnYWN5LXRydW5rCiszNjkwIDM1NTliMDkwNjcwZWVjOWZkMWI2OTdhOWY5MGYxMTc5MDk0ZjU2NTAgYWxwaGExMDAKKzM2OTEgNjFhNzIzZmEyNTM4Yzc1NWU0ZjU3YTUwNDNkMTU2YTJhNzMxMzNhMCBhbHBoYTEwMAorMzY5MiA5ZjNlMmU5MzFiNGI5M2ZkNWI2ZWQ0ZWM4MzgzYTVjOGUyMjNlNzEyIGFscGhhMTAwCiszNjkzIDU3ODFhYWY5Y2NkMzVmNzFkMDA5MGM1ZDgyNGEzNWY2OGFiOThiN2EgYWxwaGExMDAKKzM2OTQgNTAxOWQwM2Q3MTkyMGI5MTZkMjY2NTQ5NjdjNmQ2NzFlMmJhMjUwOSBhbHBoYTEwMAorMzY5NSAyMjRjNmJkOTJjZWI0NTQwZDc0ZmUyMzA5NGYyMzQ4ODkxZDE2MjIwIGFscGhhMTAwCiszNjk2IDhkNmQ4NTM1OWZhM2I5Y2RkMTBjOGFhYmRhNDY5NTcyYmZmMzE1OTYgbGVnYWN5LXRydW5rCiszNjk3IGU1ZmE4OTc5YjllNjY4MjQxMjBlOTc2OTI3NmY0ZWRmYzRkMDI1NWYgYWxwaGExMDAKKzM2OTggMGE2YmVlNGI2YjE3NTE4YmVmZjkwZTFiNDAzMTdlMzFmNzliM2U0ZSBhbHBoYTEwMAorMzY5OSAyYWUwMmYwZDllNmIwYTZkNDA4N2RjZGFiYmE5N2Q0OTA3M2MwYzk3IGFscGhhMTAwCiszNzAwIDJkNGJkOGNjNDA0MjAwZmE3MjU1Y2JlNWEwYzc1MDY2YjIyYzY4YzkgYWxwaGExMDAKKzM3MDEgNGY4OTYwYzc4MTQxZGJjMzc0MDI3YzVlODhiN2ZhYjQ0Zjg1YTBlMCBhbHBoYTEwMAorMzcwMiA3NTg3MTdmODUwZjJhYTM3ZTU5MzYzNjBkM2Q0M2VlNmNlNDEyMzBjIGFscGhhMTAwCiszNzAzIDA1MDE0ZTBkMzNlYzU4MTY0NWRhZDA0ZWM0YjE5MzgwYmVmOGY0ZDcgYWxwaGExMDAKKzM3MDQgNzZiYzZkNzQ4ODkwZDg3YTk5MDQ2ZmE1NmUwMTYzMDM1NmE1MzIxZCBsZWdhY3ktdHJ1bmsKKzM3MDUgZTUzZWQ2NzQ1OWY1NmQ3MzQ2YTFlMmIzZmQ5OTczZWE4YmQ4MDM2NyBhbHBoYTEwMAorMzcwNiAwYzhiMTgxMmYwYjY5ZDkxZTM4YjA3ZWMzODA1YTk2NmZkNWUzODRiIGFscGhhMTAwCiszNzA3IDEwYWQ4YmVmOWY0M2RiNzVlOThhYWRhNDE0ZGZmOGRlN2JlYzU3OGYgYWxwaGExMDAKKzM3MDggYTkwOTFjNDk4YjEwMWU1ODIzNTI0YzhmZmQzNjUzNTQyYjFiMDIyNCBhbHBoYTEwMAorMzcwOSA2MjdiYzQyMmE5MDI4NjgxZjBlZWJmMzE5ZWZhMTZiYTY0MTY2ZDRjIGxlZ2FjeS10cnVuaworMzcwOSA4YjNhNzI3ZGM3MWIzYWMzZTk5ZDAzYjdiNGNkZjVhYjMxMDFhY2UwIGFscGhhMTAwCiszNzEwIDI3MmUyYzY0Yjc0ZGJiYjg5ODUzY2IxNTQyY2E1ZDQ5MzQ0MzA2NDMgYWxwaGExMDAKKzM3MTEgNmRmYjg0YWRmZTQzMTE5YTlhN2UxMjFjMDhjYjBiYzc2NmQ2ZjA4MSBhbHBoYTEwMAorMzcxMiA2YjYzMDBjYzQ2NGU1YTRiYzE2NzBiN2E3MjU5ZWFhYTBkODViZDhkIGFscGhhMTAwCiszNzEzIDUwZmFiMjMzZjQwNDIxMzAyYTRlMmMyMGMwMzk2NmY0ZTgzY2ZiZjIgYWxwaGExMDAKKzM3MTQgM2QxOWNhNDBlYjgyZGZkMmU4ZjVhZDJkNmE5NWI5NjkwZmU3ZjNmYiBsZWdhY3ktdHJ1bmsKKzM3MTQgOTI1Yzk1MjgzMGNlMjZlYmJhNjhiMjRiMzI5MmRjZjgxYzNkMzU3YSB1bmxhYmVsZWQtMS4xLjIKKzM3MTQgNjI3ZDY0NGJjNmMxNzdmOWE2ZWY0OTU1M2M0MjM3NWRjOWMwNjMwNiBhbHBoYTEwMAorMzcxNSA5NjM3YzA0OTYxN2QzMzc2ZDRlZTUxNzdkODkxZjYwZTIzNmJjMTc1IGxlZ2FjeS10cnVuaworMzcxNiBlZDc1OTkyMTc3ZTgzMTcxOWIwNjhkYzZlZjk4YzA5ZTVhZWVhZGVlIGxlZ2FjeS10cnVuaworMzcxNyAyOTkyN2YwMzg2YTY5ZTgzZTlhYzIyZjBmNWFmYzg5M2I1NGJkOTYwIGFscGhhMTAwCiszNzE4IGM2MmE2ZGE3ZmVhYzNkN2E1MTc5ZGQxMzkwNDBiOWFlMjE5OTM0MDAgbGVnYWN5LXRydW5rCiszNzE5IGE1MjU2MDYxZjNhMDBmNzZhZTI0YzUxODFlMjYwODAxZWQ1NTNlM2EgYWxwaGExMDAKKzM3MjAgNWZkNTVhNmFjNzZlODM3YzMwMDk4NTZhMzM2NjZhNTczMjYwNGY5ZCBsZWdhY3ktdHJ1bmsKKzM3MjAgMzI4NjVjODljZjEyZTYzZDg0NDQ1ZDg3MGM3ZDIyNjQwMDQ4NjZlMCBhbHBoYTEwMAorMzcyMSBlMTgzNTAyZmI1YmM2ZjVjM2E2MzQ2YWVjMDhhNTkwZjlmZTcyOWMxIGxlZ2FjeS10cnVuaworMzcyMSBmZGJkMzk1NGZlZjAwYjQ0NmE0MTE3OGE1Zjc2MjBjYzA1NjFjNzU2IGFscGhhMTAwCiszNzIyIDVlOTJiMTMyZTcwZmEzMmI3YmExZDQxNjRlYTVlZDc3NzIwMjMyMWYgYWxwaGExMDAKKzM3MjMgZDBiYjA3ZDRjNmZlYjhkMmIzMGFkNDA4ZmU5NThhMDNhMGU0YzIxYyBhbHBoYTEwMAorMzcyNCA3NDUzZTJiYTUzNjJhNDQzMjE2ZWE5OGViNmYwMDgxN2I4YWRlYjQ2IGxlZ2FjeS10cnVuaworMzcyNCBhYTQ3MmU5MTdmNmMyMzM5ZjQ0MDE0ODE4NGE5ZjQyZGY1NGJlMzcxIGFscGhhMTAwCiszNzI1IDg3NzA3M2I5ZjhjMzI1NGE4MzI1MGIyNTY0ZWZjNjVjOWYxYWJhYWIgbGVnYWN5LXRydW5rCiszNzI2IGU0ZWYxYjE3ZGEzZGJjNWI5YmMyMWYxYTBjNmEwMjdkNmJhNDUzMWEgYWxwaGExMDAKKzM3MjcgY2MzMTE5MTY0ZDVjMmYzNjVlYzcyMDZjOTk0MzU2NTUzMjlmNWJhNSBsZWdhY3ktdHJ1bmsKKzM3MjcgYWJjMmY5ODE0Y2M5Njg1NWVhZWNmMDg1ZmU2ZjEwOGEzZWFjZTFmNSBhbHBoYTEwMAorMzcyOCA5NDRjYzdjNjRlN2NkZDk2MTA1NzMwZDBjMWRhNTk5Y2ZiNTBhNzlhIGFscGhhMTAwCiszNzI5IDlmMjg4Y2I1NmFiNTFmN2FhNDhmNGQzN2Y2Nzg0YjUxZjg3ZTc3ZDcgYWxwaGExMDAKKzM3MzAgYTZlYmI2OGRiMzRlYjUxNjFmZDMxZjk1NjhkMWNlY2RmM2RhMGU3MSBsZWdhY3ktdHJ1bmsKKzM3MzAgNzdlMGVhNjA3OTZhZTQ4NGJjZGE2ZWY5NjAzMmQwMmUxMTIxYzVlZCBhbHBoYTEwMAorMzczMSBhNzVmNzBjYTFiZTBhNjRjM2U3MTkxNTlkOTNkNWRiYTAzZmZhMzYyIGxlZ2FjeS10cnVuaworMzczMiBmNTIwYjljN2FlNmY2NWRiMTA3YTgwYzhjZWMxMzY4NGVlNjZjMWU0IGxlZ2FjeS10cnVuaworMzczMyA1NjhjNjA2YTBlMzExYjY1NDc5ZDZjMWFiOGE3YjA4YjgwMDVmYTQxIGFscGhhMTAwCiszNzM0IDFmN2RhZDU3NmE4NTFkMWIxZjZjYWQyMmJhMjY3ZGQ2MmU3YjU2NmIgbGVnYWN5LXRydW5rCiszNzM0IDIwNGI3ZTc5M2MxNWI0YmQxZDQwYWRlNTY1NmE1ZWRmZWRhZGNhZTcgYWxwaGExMDAKKzM3MzUgNzgzZWYzNjFmMzk1MTVhOGFlZjU1Njk1ODMzZTNhYzQxMDllMzdhYSBsZWdhY3ktdHJ1bmsKKzM3MzYgODk2NWVmNGViMzk5YWM0NzZkY2JmZWJhN2JhNDMxYWE1ZDlhNmVlYSBsZWdhY3ktdHJ1bmsKKzM3MzcgMzY2NGNiODhhMDMwMDhlZGJjYzdmOTc0ODRlODU1OGQxODQzYjZiNyBsZWdhY3ktdHJ1bmsKKzM3MzggNTIzZDQyMTE4OGI5M2E1MzdhYjNiMjQ3MTEwMjI5YjhiMjZmNjk0YyBsZWdhY3ktdHJ1bmsKKzM3MzkgYWVlNTVkOTY5YTEyMjQxYTc4ZGQxN2RlZTA2YWM3MjgxMmJjYzlhYyBsZWdhY3ktdHJ1bmsKKzM3NDAgZWYwODJjMTA3MmE3MTE1ZGJmYzMwMzZlYzYzZmNkZjFiODlhNWM3OSBsZWdhY3ktdHJ1bmsKKzM3NDEgNWIyNTVhMzU4ODMzMGI1ODhjMGNkODViMTc2MmRlNjVkYzM3ZGUyNyBsZWdhY3ktdHJ1bmsKKzM3NDIgOTM5YTk1ZjNkY2RlYTQzMWI4MzhiYmRiM2IzMmFiY2JiYzAxZjZjYSBsZWdhY3ktdHJ1bmsKKzM3NDMgYmU2ODAwYTYwMTliNGQ0MjE0NzBjYzU5ODJjZjUyOWY2MzE5ZjE5MCBhbHBoYTEwMAorMzc0NCAzNjQyYzY0NDcyYzA3OGE2OWIzZDhlZmYzZmNlOTYzMTViYjJkYWE2IGFscGhhMTAwCiszNzQ1IDM2NDhlZGQzNDNlYjQ0YzY0MTBkZGRkODgyNGQwNDc5YjAzMDVmMTcgYWxwaGExMDAKKzM3NDYgNmQyNGI5OWRjODgxYjhmMzc2MWRjMGY3ZWNiNGU5ZmUyZGI4Y2Y1ZiBhbHBoYTEwMAorMzc0NyBjOGI3MTRiOWJjNWFiMmI1Y2Y2MDE3YzIyMDE1YzhkNWIzMDdmMmY1IGFscGhhMTAwCiszNzQ4IDU5OTQ5NDlhN2VlOWRiNDAxYjllNmNiNTFkMDRlN2QzMzA1NGZjYTggYWxwaGExMDAKKzM3NDkgMWUyNjk0YTA2OTM5ODhiZTQwOTY5NzM5MGVmZjZhMDVjNzYyMTVkNyBsZWdhY3ktdHJ1bmsKKzM3NDkgOTFiYWQzNzZiNGJjZTVlYjQ2YzIzODVkMjEyZTM0ZWM2NTRlYTAxYyB1bmxhYmVsZWQtMS4xLjIKKzM3NDkgMmVhODEzYWEyNjAyZmM5NTY0ODFlNGZkZTg3OTZmMzVjYmQyMWIxMyBhbHBoYTEwMAorMzc1MCBmOWFkYjg5ZjIwMDE2YTlmYTY0NTgwMDU2N2U0MjAyYzBjNTJhNGQwIGFscGhhMTAwCiszNzUxIGZhOWU0ZGI3OTExZGE5ZmZjMDYzYWU4M2JlNTU5YjhlYzA5ZjJkOWYgYWxwaGExMDAKKzM3NTIgYzVjZTM1ODQwMDEzMGE5Y2M5MzY0YzliZDIxNmYxOTVkOWY2NjdlNyBhbHBoYTEwMAorMzc1MyAwNzI2N2VkMTM3MTM1OTJjMDMyOTdiMDQwMjVlMDk2NjM1NjAwZTg5IGFscGhhMTAwCiszNzU0IDFmODQxNzgwZWZjMjNlZWRlMDc3NGI2MDNlNjFiODg4YzAxOTdiZjQgYWxwaGExMDAKKzM3NTUgMjdmMzk1YWZlNjBmNjk2NmRlNzM1ZDczZmUzN2UxYWJkNjNlM2JiZCBhbHBoYTEwMAorMzc1NiBmZGJkODk4YmMxZmU2MmQ4NDc5YmFhMTk5OGI0NmI4ODIwNzFiMGY1IGFscGhhMTAwCiszNzU3IDQ0ODYzYzQ5YTQzNmJmYTMwOGQwOTI1MzRmZjY0NzRhNDkwYTc3NzIgbGVnYWN5LXRydW5rCiszNzU3IGExYWVlNzY5OWJlYTY1NGU0ZGZkZjk1ZjFmMTNkNTU5YjJlMmJiZjIgYWxwaGExMDAKKzM3NTggNGE3MjI5NjJmYjY5NzA5NDY1M2UyMjBjNmRjNGY4NzkyM2JjNDc2ZCBhbHBoYTEwMAorMzc1OSA3NTM5Y2NiNzdkMjg4YWE4ZTZhZWMyZWM2ODQ1YTRkODA0NTdjZjFkIGFscGhhMTAwCiszNzYwIDMzMzZjZGNkNGE1ZmY2Yzc2YjEwMTc4ZDYwY2RhNDRkOWQ4Y2I1YjMgYWxwaGExMDAKKzM3NjEgNDcyYTM0N2JhZmNjYzQ5ODEzYTcwZGVlM2M5MjgxMTIwMTU0NDI4MiBhbHBoYTEwMAorMzc2MiAxMzBiMDRmYzU0ZGNjNjk5OGUyMGJiMmExNDljZGVjZTE5NzYxNThmIGxlZ2FjeS10cnVuaworMzc2MyBlZDRjMTE2YjU4OTM0ZTgyODM2NTE5MDZkYTVjNjQwZmE5MWYzYzQ4IGxlZ2FjeS10cnVuaworMzc2MyA4MTFlZjZlZDRjYTFiYjRjMzIxYzY3ZTJkZGZkNDM5N2U1NDhkNzcxIGFscGhhMTAwCiszNzY0IDNiYjc4OGExZGRhMDQ2ZGNlNWE1NTIzMGE5ODRlMTk3NDJhMWMxZmIgYWxwaGExMDAKKzM3NjUgMmJiYTE4OGM2YWRhZGUzNmI3NWRiNDFjMWEyYzZmZTVhZWYyOGQ0NSBsZWdhY3ktdHJ1bmsKKzM3NjYgMDYxMDYyZjhhOWJmZDdkYjFiNGQ2MzE0YzQ3MmIzM2MyODhjNzA5MyBhbHBoYTEwMAorMzc2NyAwOTBkMGNkOTYxYWYxNzUwZWY4ZGU2OGU1NTlmMGI5OWQzODFmOTFkIGxlZ2FjeS10cnVuaworMzc2NyBjMjNjMWFjOTIyMDgyNDNlNDM0ODExZjlkZDE5Y2M3ZmZiMTUyZTY2IGFscGhhMTAwCiszNzY4IDM1ZGI2ZmNhNGRmNGQ3MmVjMmJmZjc4ZTkyYjBiMzRjOThmMjVlNjMgYWxwaGExMDAKKzM3NjkgMDgxNzMyYzZjMTEyOThkMGEwNWZjMWE3ZDBhMjRhMjcwODgxMTM4ZiBsZWdhY3ktdHJ1bmsKKzM3NjkgYzU3OTg3NWIyOTgwNzhlNTdjYzViMTY3YjNiZGRlMjI3NjYyMTJlOCB1bmxhYmVsZWQtMS4xLjIKKzM3NjkgNzQ4MTkwNDBlNzI2NTc5MTZmYjQwYmE0YmE2YWNmMGU5NmEwMDIyMiBhbHBoYTEwMAorMzc3MCAwOWEyYTY2MWU4YzA1MTIxYmRhYjlhY2IyNDg3YjJlMjQ4NWM4N2FhIGxlZ2FjeS10cnVuaworMzc3MCA1ZjBmOGJmN2IzNWNlZDVlMzM5NTQwN2Y4ZTU4YWUzNDU2ZDBmZThhIHVubGFiZWxlZC0xLjEuMgorMzc3MCA5YjRmOWU4MjFmZDQ2ZWI3MTExMmQ5MzFjNDQyOWVhYzQ2NDE0OWFkIGFscGhhMTAwCiszNzcxIDdjM2ZiYzk3Zjk0Njc3MGVhYzQwZDUyZjViYTQ4ZTZjY2U3N2I3MjMgYWxwaGExMDAKKzM3NzIgYmM1YzkyNTA4ZjU2MDMwMTIwZWVmMGQxODExMjM0MGQ1MWQ2M2I4ZiBsZWdhY3ktdHJ1bmsKKzM3NzMgZGNjOTVhMTM3YTZmOTFjZTk1NjExZWZkOWFkMzhhNDA2YjgyYWViNiBhbHBoYTEwMAorMzc3NCAzYjZmOTUwNTMwNDM2MDgwYjc4MzNhNDJiZDgzMWUyZGM2OWYzNjg5IGFscGhhMTAwCiszNzc1IGUyMTBhNGEzZDlmMGM4NmFhYmI4YzU2MTE0YWU1YzYxNzg1YmJkMzMgbGVnYWN5LXRydW5rCiszNzc1IDFmZjM3ZmY2YWZmNGU0ZDZiNWIxMmUxODdhMzRjZGM1OTdmYTc0NjQgYWxwaGExMDAKKzM3NzYgYTI3ZDZlYzNmZDRhNTk5OWY2MjAwZWQ3OTFmNGFjODMyOTA0ZDA2OSBhbHBoYTEwMAorMzc3NyBkNjhmNmNjMjYxMWVjZTMyM2Q3MjAxNmQxNTI0NzE4NzE4MTdlOGM3IGFscGhhMTAwCiszNzc4IGY1YzE5NzliZWE3Y2Q1YzJjYTJiYWRmM2I4NGRlOWViM2Y0YzFjNzIgYWxwaGExMDAKKzM3NzkgNTZjYmZkZjM3MjU0YzllMDg1N2FkMWNkZGUxZDY1ZmUzY2MyZGFjYSBhbHBoYTEwMAorMzc4MCBjMjg2OGVmMjhiZWUyYjJmMWQyYmVjOWYzMDI0MjcwYTBjMmVhZjE4IGFscGhhMTAwCiszNzgxIDFhOGU5MGEzNzM1N2JhZTdiNGFiYTkyMmYxZjBhYjMzYmZkY2VmNmYgbGVnYWN5LXRydW5rCiszNzgyIDhlOTdhNjhiMmIxN2QwMWRhYzc0NTg2MzQ0ZmIwNjhjZWM4ZjhlNjkgbGVnYWN5LXRydW5rCiszNzgzIGJkYmU2ZDhhN2E4Zjg2ZmJjYTJiN2UwYWJlYjlhYzdmNTAyODk1Y2MgbGVnYWN5LXRydW5rCiszNzgzIGE0ZjZiYTJlNDdmZmQ2MzNhMjU2ZDI3ODU3YTk4OWRjMDUwNWEyZmYgYWxwaGExMDAKKzM3ODQgOTc4MTk1NjU4ZTlhMzdlMjBiOWMyMDk2YWYzNjE3NDg0OWI0MTAzYyBhbHBoYTEwMAorMzc4NSAwOTQyMGUyZTkzODg0NWEwZDVhZWZmZTkzYWQ0OTQ0YmZmOWI0MTMxIGxlZ2FjeS10cnVuaworMzc4NiBlNDU5NDhlMmI2NmNlNDg1YWRlNDkzMmE5ZGE1NGZlOTY1NWY4NTUzIGFscGhhMTAwCiszNzg3IGRkNmVhMTY3ZjJiZDFiNzQxYzcwZmU4ODZiOTJhNTA4ZDNmMjMzMGYgbGVnYWN5LXRydW5rCiszNzg4IDBmODhmOTY1YmZmMjdjODg2NzU4MTk3MjBhYjBjN2U1MmUwNTExZDggYWxwaGExMDAKKzM3ODkgMzM4ZmU1OGIyYzY3NzM4NThlYTAyMmY0NWFlMzI5YjA4N2IxNzQ0OSBhbHBoYTEwMAorMzc5MCAxNDdlOTkxOTg4MzhjYzY3ZmI4MTBkODExZGU4MWIwYjJiNmUwYWMyIGxlZ2FjeS10cnVuaworMzc5MCAyMGZiZDA0MzRmYjYzNGRmYzAwYjc3YWFhM2RiMzNjNGY2M2M2YzQ3IGFscGhhMTAwCiszNzkxIDc2ODkxZDBjZDVmZGFjMWU0NTEwNGUzMjg5Y2Y4YjdhYjAyNGI5YTUgYWxwaGExMDAKKzM3OTIgZGM4YWVkOGIyMDRkMThmZmQ3OTI0MTVlZjY0ZDYyOTk5MDUyYjIzYSBsZWdhY3ktdHJ1bmsKKzM3OTMgOGI5MDhlOTkzOTc1N2RjMzUxMjkxMDEzNThjYzI0YWYzM2ExYzgzMiBhbHBoYTEwMAorMzc5NCA4OGJhNWQxN2YzMGEwZjUzYWJmYzM2NzFjMTdiM2U0MWM0YmRlNGU3IGFscGhhMTAwCiszNzk1IDVkNWViNzZiYjI3OGFhNmMxNWEyOTI0NGU3NzZkMmVlNmU1ZDk1ZjAgbGVnYWN5LXRydW5rCiszNzk1IDA3ZTRjNTcyNmY3ODU2NzhhNGY4ODM4MWJmNTg2NWM5NTQzMjc2M2IgYWxwaGExMDAKKzM3OTYgYmJhODAwODhhMDQ0YTMzODc5MDYzOTQ0ZDliZDRhN2YxY2ZhYmVhNSBhbHBoYTEwMAorMzc5NyBjMjNjY2FlYzkyNDkzMjVkM2MzZjA5ZGFiOTQ5NWVjOTY5OGIyNGVmIGFscGhhMTAwCiszNzk4IDAzNjhlZjQ5ZmY0YzYxNzQwYzE2M2FhYTY3Mjk4YzY3ODZlOTFhNDAgYWxwaGExMDAKKzM3OTkgNTNlY2NlZDJmMmIyYTE4NGYyMzYxZjBjOWI5MWFjMDJmM2MxYjkyZSBsZWdhY3ktdHJ1bmsKKzM3OTkgN2NlNDEyMjk1Y2EzY2FiNWE0MmZhY2RlYWJmMjIwZmI4ZjEwNTJkMyBhbHBoYTEwMAorMzgwMCA5N2M1ZTYwN2I3OTc3MzI2N2QyODhhZjgwNWMzMzVhZWI0OTFjNzM4IGxlZ2FjeS10cnVuaworMzgwMCA4ZDhiN2RjOTk5ODJlMzYxZDY4NWJiMDNmNTEzMDRhMmM3ZmE1OGQ4IGFscGhhMTAwCiszODAxIGM5YjNmNzdlMThiYWVmYWU1YTkyZDk1ODVkNGZiZGE4MGEyOTljY2IgbGVnYWN5LXRydW5rCiszODAyIGMzZDdmODE0YjJkMDY0MDFjN2IwY2JiYmRiOWM2ODgzYzY4NTY1MTcgbGVnYWN5LXRydW5rCiszODAzIDI2MDNiNDIwYzVkZWNhYzUxNzhjNDQ2NmY3YzllM2U2YTZlY2I3YTYgYWxwaGExMDAKKzM4MDQgZTliMGNjZTNiOTgwOTNlMGY3NGRhNDI3Y2NhOWMyYTEwZDRjMmNmMSBhbHBoYTEwMAorMzgwNSAxN2U1Yzk0Zjg2MmY3Njc4ZjBhNDhiZWZiOTk5ZGUxNzIyNmRhMTM2IGxlZ2FjeS10cnVuaworMzgwNiAxNWUxYjg2MTA0YTZlNjE4ZjkyYzIxN2ZkNjNkNzg1MjNkNGZkYmFhIGxlZ2FjeS10cnVuaworMzgwNyA5OTVhOGVmNGE1YzA0ZjNlNjgxMTgxNjhiZTA3YTNlYjg5MjQ5ZWU1IGxlZ2FjeS10cnVuaworMzgwOCBlZDIxMWM3NjEwODU4YmQ2ZDU5NGEyMDcwN2UzNWZhMjQyYmQ1MDE5IGxlZ2FjeS10cnVuaworMzgwOSA4N2NiZjllMjI3Mjk4ZTZhOWI2NTMyYmU5MmE3NzJiZWE1NTEwMGQ3IGFscGhhMTAwCiszODEwIDVjNmM5OTA2NmIyYzcxMDk2MjhmZjQwM2M4ZGY1ZjZmOGI1OWE3OGQgYWxwaGExMDAKKzM4MTEgNDhhZWM5ZDM4NTJhOTUyOTE5YzBkYzgyZmE4MWQ3MDUwODYyZWQ4ZSBhbHBoYTEwMAorMzgxMiA4NjlmYmE4MDljNjg5ZTNkNjRhNjM0OGY5NWY0MzFlNDJiODY5YTk3IGxlZ2FjeS10cnVuaworMzgxMyA1YzAxOTMxZGE1OWJkMWQxOGUzNjdlYzNhOWIxNzgyY2UzZTc5NDhiIGxlZ2FjeS10cnVuaworMzgxMyA3YzM1N2M2YTI4YmRjODlkZWQ4YTQ5ZTZlYjc0ODYzMjBiM2YwYWQyIGFscGhhMTAwCiszODE0IDdlY2Q2MzgwNTY2Y2IzMThiMmNlMmQ2ZDZlZWU2MzEyNWVlMDJkZjMgbGVnYWN5LXRydW5rCiszODE1IGUwNTNhODc4MjhmNDQyNjJiM2FkMjYzOTJiZTQzZTQxNGM5OTZlOWUgYWxwaGExMDAKKzM4MTUgOTc4YmYxMzRmNDRhYjdjM2M4NGM0NzZhMjkxZTdmNGVkOTc4MzZhNiBhbHBoYTEwMAorMzgxNyA5ZmJmMzRlMWMxZjc2YmYxNDA0ZjhlYmU2YzJiMjYzNzI0NDNlNDIyIGxlZ2FjeS10cnVuaworMzgxOCA1YTE3YzQzZGNmZjAzY2Q5MjEwZDVjY2M1YTgzNTE4OWExNzg0NDhiIGxlZ2FjeS10cnVuaworMzgxOSA0MDQ3ZjIyNGVmZGIwZWM3ODgyZGRhYmVhMjgwMjIwNzY3ZGQ1OWY5IGxlZ2FjeS10cnVuaworMzgyMCA2MzBlMDMxMDljNjM4ZGQxNmNkZTkzNzhhZmE0MTFmOGMyOWQxZjZkIGxlZ2FjeS10cnVuaworMzgyMSBkZjBhZWU2NDExNGJjZjFmOTIzOTdiYzhmYzg0NDdhYjYxNGNiYmJlIGxlZ2FjeS10cnVuaworMzgyMiAxZmY2Y2VkZDIyNDEyZGVkNzU3NDFkOWE0ZDdmYzdhZGE1MGI5YmM2IGxlZ2FjeS10cnVuaworMzgyMyAxYzM2NDRiYWI4NmFiNTNmMmYyOTI2NDExMWQzZDgyYWQxMTg1NmI3IGxlZ2FjeS10cnVuaworMzgyNCBiNjhmYjczOTg1ZDgzNmE0MzIwYWVjMGM2ZDJkMzFhNjM0MjdhZDEwIGxlZ2FjeS10cnVuaworMzgyNSA0NDM0NzFmZjMxNDcwYTJlYjMyMzI5MGI2MmFkOGUyMWE2OTAzYTZiIGFscGhhMTAwCiszODI2IGJhMjRmYzhkM2Y4YzU1ZGY1YjFjNDNiZWVmZDEyMzQ0MTcxZjY4ZjcgbGVnYWN5LXRydW5rCiszODI3IDBlZmEyNDBiMWRiYzA1N2RjNDRmYTFkNDRkNGM0ZDhmZWRhYzU2MzggbGVnYWN5LXRydW5rCiszODI4IDUwNTUzMDgxNTJhNGUyODc3YjllNWY5NzJkZTI3YWU4NzNkYjMzODYgYWxwaGExMDAKKzM4MjkgNWNlZjRmNWEyOGNlZGZjYTVmYWRlODI1ZWRmYzYwYjA3ZmY2ZTg4OCBsZWdhY3ktdHJ1bmsKKzM4MjkgOWVjN2Q2Zjc3NTAwY2EwOTBjMjE5MWUwYjNiNDBjNjZhM2UwZmU3NyBhbHBoYTEwMAorMzgzMCA4MWYyNmJmMTE3OGY5ZTM3MTBjMDhhZGY2YjhjYzk0MmIxNmZmZDE2IGxlZ2FjeS10cnVuaworMzgzMCBlZTNkNWVhMTNhMzdiOTJjNmVjMDU5ZWU5ZDgyOTg3M2IxNjE5NjQyIGFscGhhMTAwCiszODMxIDQ4YWEzZDMzMTRhYzE3MWRiNWNlMTdmNjU2ZTRiNGM3MTAwMGUxYTAgYWxwaGExMDAKKzM4MzIgOTgwNjI2ZWNhZDYxZDhkMDU2ZjM5ZmVjNGUyYmE4OTQzNGZiYWRjNiBsZWdhY3ktdHJ1bmsKKzM4MzIgNWMzNTA2MzFjODM5NjA1YTFkM2FkYzViZjQzY2FmMTQ4MDVkMWYxZiBhbHBoYTEwMAorMzgzMyAzZTY1YmZkMTU3NmVkOThhMDhhMTk2YzcxNmFkNWM4MmEzMDQxMWZjIGFscGhhMTAwCiszODM0IDk5MzAwODdlYThmNWU2ZThkN2NjNTQzMjZhNmZiODRlYTI4YjljNzUgYWxwaGExMDAKKzM4MzUgOGM4OWY2ZWY5ZjlmOGY1NDdkNTdjODU4NmUzMGVlYjgzZGVmMzQzNCBhbHBoYTEwMAorMzgzNiBjYjVmZDgwMDY4Y2VmMjU2ODlkYjdkY2JiZGY5ZTM3MTliNzllOGNhIGFscGhhMTAwCiszODM3IGJhZmM1MzNlMGViNmFjNWFhNWYwODJlY2NmYmQzMTgyNzhmNmM1NDcgbGVnYWN5LXRydW5rCiszODM3IDcwMzJhOGEyYzQyYzUyMjRlM2NmNTJmM2M4ODZlYzM2Y2I1M2QxMzAgdW5sYWJlbGVkLTEuMS4yCiszODM3IGM5NmZjNDk3YjkzMmY1ZGQyODYwM2IxZGJkYzUxZTFjOWViN2QwNDEgYWxwaGExMDAKKzM4MzcgYjE1YjhjYzliOGQxMGUwMzUyYTBiOGI3ZThkNTFmYTMwOWRiNmRmMyBsZWdhY3ktdHJ1bmsKKzM4MzkgMjY4ZTU3NjMwMDE2MjAyODA4NjA5ZTFhODZkMGRiMDg4MzhkNjkyNSBhbHBoYTEwMAorMzg0MCBiNzBmMDg5MDc1NDYxN2JmM2Y4NTgxMjRjZmJiN2MwNTE3MDZiNDlhIGxlZ2FjeS10cnVuaworMzg0MSA2ZjUyYjUzODliODg4MTdkNDRiNzE0ODg3MWQ3YzA3MDQ5YWE5Nzc4IGFscGhhMTAwCiszODQyIGUzODBiNGQ1NGZkMzllYWYzYWI4OWExYzk0ZTNhZDE4OTVkNjk2OGYgYWxwaGExMDAKKzM4NDMgNWRmZDFkNTFkNjZkZWFhNTY1ZTVhNzcwZTQ2Y2YwMGQ4MGVhYTVlYSBhbHBoYTEwMAorMzg0NCA2OTY2ZDk1N2I1YjFlNzUwZjYwZmRlNTM3YjM5YTUwZDBiOGNhNWVjIGFscGhhMTAwCiszODQ1IDJiNWY4YjIwMjFiZmQ3MzA5NGM5ZjgyMjhlZTQ4ZjY2MjRkYzU4MTcgYWxwaGExMDAKKzM4NDYgOGRmNzJlNThmYTk4MDMyYzdlNDI2MWExNTJjNDM0ODQwNmEyYTg4MSBhbHBoYTEwMAorMzg0NyBhZDIxNjg3NmM0N2ZiZmY3MDRiM2FkMjEwNWQ5OWEyYTVhYjg5YzI0IGFscGhhMTAwCiszODQ4IDhjNjgxNGYzNGNkZDkzNmYwNzM5MGMzZDA3Yjk4MTU4OGM0ZmRiMGYgbGVnYWN5LXRydW5rCiszODQ4IDIyYjdkMzczNWJkMjVmZWMzZmNjZTQxNmYzNGMwOGY4OTg4ZTI3NjkgYWxwaGExMDAKKzM4NDkgNmQzNTMwODI2MWY0Zjc0ZDg1YzEwM2I5NzVjODQzNGU0MDc3ODViOSBsZWdhY3ktdHJ1bmsKKzM4NDkgNzcyM2UwMDAzOThkYTc3NDQ0OWQ3ZWZkNjUwNThiYzE5MjQ4ZTUwZiBhbHBoYTEwMAorMzg1MCA1OTczMzU0ZmI0OTk1NGY3MjQ2NWY3MTMyMmNhZWNhYjQ2YWQwYzc1IGFscGhhMTAwCiszODUxIGNkMjc5ZTBmNzdkODUzZjI2M2NhNzYzNTgwZmVjMTM1MzU5NmQ0NzcgbGVnYWN5LXRydW5rCiszODUyIGMzNDE1YjMxOWI0ZTg2OTJmOWM2NGUyNzdhNDdmYmMxNmI4ZTE4ZmQgbGVnYWN5LXRydW5rCiszODUzIDE3MmFhMGVlZWI2ZjdjYmYwYjc1NDFmZmRkODM3ODhhYWRiMTFmOTQgYWxwaGExMDAKKzM4NTQgMjc0MDY2YmRlMjQxMjNjYWMwNTYzNWNiNTkyMzhiMDA2Y2ZlNDlhYSBsZWdhY3ktdHJ1bmsKKzM4NTUgZGYwZmI3ODhjMGMxZjUwNjUzMzEzODhiYjM5MWM2NGU0NDg1MGU3YyBsZWdhY3ktdHJ1bmsKKzM4NTYgOWUzNDQ0OGEwMDVlZDc1ZmIwYTViNTk1NzcxNGY0YzdhMmNjZmRlMiBhbHBoYTEwMAorMzg1NyAxNmQxZGFiM2YyYzFiOWIzMzJhNzY1MDJhZWIwNmU3M2NlOTNiOGFiIGFscGhhMTAwCiszODU4IDhjYzkwOGIwZDgzYmRlMjVlZjExOWM2NTI3OTQwNzY1MmFmMDlkZGYgYWxwaGExMDAKKzM4NTkgMzI4NmJmZjQ0M2M2YTA2NjBiY2Q1ODFiMWM3NDIxZjhjZjhiNGQ2MSBhbHBoYTEwMAorMzg2MCAyNzRiOTNiMTIxMTNmNTg5YTU1ZDhmYTY4NGM4MDhjYTQ4Y2I3MTlmIGxlZ2FjeS10cnVuaworMzg2MCBlNWQ2NjUyMzFjNTg5NGM2MzYxYjMzYzhhMmEwN2JiY2U5MjdkMGVkIGFscGhhMTAwCiszODYxIDhlYWIyZWU0MGYzMmRiZGVkOGFjNjRlMmRjYmQ4ZWI4YTZjYzc1ZDQgYWxwaGExMDAKKzM4NjIgMjQ5ZmU1ZTI0ZTIwZWI4ZDllM2E3NzJiN2JlYzE2NzdmZDJlNWY4MiBhbHBoYTEwMAorMzg2MyA4YWFiZTlhYWUwZmEwN2E2YWE1NDJkMWZmOGMyODJhZWU2Yzc2YzU0IGxlZ2FjeS10cnVuaworMzg2NCBjZjYwYTJiMjQ5Nzk4NTg4OWY4YmY0MWIwMTc2NTUxMzYwYmEyOWFhIGFscGhhMTAwCiszODY1IGY0ZGI5MmVlZjJhZjcxN2I0ZWNmZDc1NTFiNGIwZjU0NzQ1YjM1MTMgYWxwaGExMDAKKzM4NjYgMDIwZDhjMmQ5ZDNjZmIzZDI2ODVhMDRiMzZkMzZiZjNkNWQzNDNiOSBsZWdhY3ktdHJ1bmsKKzM4NjcgYmQxYTRkNzE3ZTlkMWVlNDRlYThlYTNhOGZlY2U3NDJlZWMyZmNlMiBsZWdhY3ktdHJ1bmsKKzM4NjggNzgwZjMzNWJmNTI0YjcwNTlhZTY0MjU1ZjkwOWUwMGU2YmI1YTk0ZCBhbHBoYTEwMAorMzg2OSA1OWZkNDY4NmY4OGNhNjRiNGI3YjAzZThhNjJkYjM0YWI0M2MzZjA1IGxlZ2FjeS10cnVuaworMzg3MCBiM2JmZjVlZDVkM2QwODk0MWNiZDRkMjVjZjg0NDkyZTczMmVlYzgyIGxlZ2FjeS10cnVuaworMzg3MSA5NjAwNTUzOTAwZDQ3ZWExNDA1MDI4M2NkOGVlOWFiYWRhNDQxN2Y2IGxlZ2FjeS10cnVuaworMzg3MiBiMzM3MjBkMGFkOTdiMTUzNzk2MTQ5ZWQ1YTY4ODMxOWMxNThhMzQ5IGFscGhhMTAwCiszODczIGNkYWZjOTUxZThlOGIzMGZkMTMyMDZmNGI4MGRmMTQ1ZTNlM2RkOGUgYWxwaGExMDAKKzM4NzQgZGRkY2JhMjAzOGJjYjViMmYxOWZkZjBkNWZjYmQ1M2YyMDgwZTgzYyBsZWdhY3ktdHJ1bmsKKzM4NzUgN2QyMWM5MjNiNTRhZWJmM2NkZDczMWRmZjU5MjM5ODk2MzU0MTQwZSBhbHBoYTEwMAorMzg3NiA5MDM3OTRkZjVlYTllZWQ1NWEzMDBhY2YyZjc2MWM1NzhmMjY0YTkxIGFscGhhMTAwCiszODc3IGU0NDQ5OWE0NGNiOGUzNzRlMzViYmY1NGIzYWE2YmZhMGY2MTc3MDkgbGVnYWN5LXRydW5rCiszODc4IDM3MDA1MGNkMGI2YzUwMWU2MDM0OGIwOWQ0YmZiYWVlMjQzYmY4YWQgYWxwaGExMDAKKzM4NzkgOGQyNmVlMjRhZDE4MmVhMGU4YWI2NzFhNDdmOThkNzU5MTcyYzFhOSBhbHBoYTEwMAorMzg4MCAzYWNmODE4ZjM1NDgzMWY0NjIzNjc1NTFiMWJlYzIwYTUyOWJiYTAzIGFscGhhMTAwCiszODgxIGNkYjE0MDQxY2M4N2JiNjQwYWQwNGIwNGIyMDJmY2ZiY2U3YmZkZWMgYWxwaGExMDAKKzM4ODIgYWNiYTQ0MjdlODljNzAwMDc0OGY5ODRiZGE2ZWIyM2E1ZmMzNzJlZCBhbHBoYTEwMAorMzg4MyAzZDAxNjk5OTI2NGFjMmM3M2VjOGQ2YjQ0MGYxZDg2ZjdkNTgyMWM1IGxlZ2FjeS10cnVuaworMzg4NCBhZjNmMmEwM2JiMThmZTBlZWY5N2Q5NmVkNGVhMTlhMTIyYTkyYWZlIGFscGhhMTAwCiszODg1IDNjZGRjNjdiZTNmNTc1NjYyY2Y3MzRiNTEyNDcxZWZiNTAwZjg2MjYgYWxwaGExMDAKKzM4ODYgYWU0YjljYjViYTE1NjExMjhhY2JjY2MzOTdiMDA2ZjE4MTM5MDcyNCBsZWdhY3ktdHJ1bmsKKzM4ODcgMDZhYTYwOGM1ODllODZjNTg2YmMxY2NkMjYwZmY1YjVmNGY5MDNkNiBsZWdhY3ktdHJ1bmsKKzM4ODggOTFmODQ2ZjZkNmE2MWQwNDNkMGU3MjRmODVjNzg0ZDE0YTcxNWE1MiBsZWdhY3ktdHJ1bmsKKzM4ODkgZWFjYWE0ZjA3ODI2ZDlhMDBiMjNmMjE2MDQ5ZDNlMzhhODdjYTQ2OSBhbHBoYTEwMAorMzg5MCAyYTBkNDk5NzQwYjYyNGI4ODA3MjQzOTgzM2YxZWJlMDZhNzY1NDk5IGFscGhhMTAwCiszODkxIDgzNjIyYjdhMDBiNTIzOGY4MzA1OTA2Y2Y4ZTM0Yzg3Y2JjMDQ5ZGEgYWxwaGExMDAKKzM4OTIgZWFhYmEyY2FmZWViOWMzNDA3ODllYTJiYTQzNDIyMWMzOTUzMTE4OSBsZWdhY3ktdHJ1bmsKKzM4OTMgMmQwZWNlNTYwNDA2OWExNjJmNzk0MzQwYmViMWE4YzgwNDQ4YTY5NiBhbHBoYTEwMAorMzg5NCA3MmY4ZTFlNjE0ZjA2MzAzNTc3NTkzYzcxZDIxZmQ2OTE1NWE5YTU3IGxlZ2FjeS10cnVuaworMzg5NSA0NTcyOGJmZWNiNzY4ZjAyMTI4NTg3N2M2MTUxZmE5ZTYwMWEzMjhlIGxlZ2FjeS10cnVuaworMzg5NiA2OTVmYjQ5NGEzYTIyZmM5MzZiNDRmNTMwZDg1OWNlY2QxN2JhMGIwIGxlZ2FjeS10cnVuaworMzg5NyA3YmY2YjEyOGU5OGM0ODg2OGU1M2Q3YmY3YmJhYzI1OTI4OGM5MDI1IGFscGhhMTAwCiszODk4IGYzMjYzNzU5Njc4ZWYzODQ3MmZkMWMzODY3MTZhMWFlMDJjYjIyODkgYWxwaGExMDAKKzM4OTkgNDQ0ZTM0OWY5NjJmMGFlMzAwNjgyNTJlNTlkYmU1Nzc5MWZjYzY4MCBsZWdhY3ktdHJ1bmsKKzM5MDAgYjIxZjA0OGMyM2U5ZTAyODQ1MGYxZjJlYzRkMDRhZWI1NzEyOWJjNCBsZWdhY3ktdHJ1bmsKKzM5MDEgMjg4YTQ2MDZkMmZkZTEwMDY4ZGM3OWNlYTZhY2Q5ZjgwNzQ1NTg1NiBhbHBoYTEwMAorMzkwMiAwMjFkYWFiZTY5ZDg3OTU2NjFmNzlmNjdlYWViMjgyZmYzOTZhNTAwIGxlZ2FjeS10cnVuaworMzkwMyBjMTczNjBhMTY1ODcwMzhjNWJlYmJmM2ZkZTliMWRlZTdkM2EzZjAwIGxlZ2FjeS10cnVuaworMzkwNCAzMmRhNTc4MThlOTdiNWZmZDIwOGViOTZiZWFjYjRhMGQ5ODMwZGI4IGxlZ2FjeS10cnVuaworMzkwNSBiOTYzNGJkNWNhNTVhOThlMmVmZDZiMjc5YzBkOTI5YTBkZGY2YzYxIGxlZ2FjeS10cnVuaworMzkwNiAyMzg0ZmFhNTM1MGYzYjZkMWUwZjJiMTNmMmY5ZjBkMDU2YjQ1NDU5IGxlZ2FjeS10cnVuaworMzkwNyBiM2ZjZGJkMmQ5YmJhNTNiNTc4NTllODMwMTI0MmZlMjFjNGJhMzEyIGxlZ2FjeS10cnVuaworMzkwOCA4ZDdhYjJjN2U5OTMzMDkxMDI3NWYwMWRiOTFkOGVlZTU1MTZkNDU3IGFscGhhMTAwCiszOTA5IGU5NmE4Y2ZiYmVmMWI2YTNkZGY2M2VmOTBmZDA4ZWY3ZDZmZTQ3NzkgYWxwaGExMDAKKzM5MTAgYzk2NDM2NGE4ZjdmOGU3YzA0ZmU3N2UyOTYyZGMyZjI4NDIzNjA4NyBhbHBoYTEwMAorMzkxMSBiMmQxOGZhNTI5ZjQ4NzYwY2JkYjRhNTcxZDQyMzUwNzI1ODhiOGE2IGFscGhhMTAwCiszOTEyIDA1NTY2MTdhYTMzODZlNzBmZjQ3MGVjY2UxZjZhNjAzNzFlYzQ2MTIgYWxwaGExMDAKKzM5MTMgZDU5MGZmZDU0Zjg5OGNhMTE3ZjAwMjc5MjAzNDdjMWJjMmU5MTk2ZSBhbHBoYTEwMAorMzkxNCA3OWJiNjgyNzBjN2IxMmNkYjAzNmEwYWZkNjJlMjdjZWQ4NWExNzZiIGFscGhhMTAwCiszOTE1IDQxYmNkMTg1M2ZlYTU3ZGI5YjllZDdmODI5Yjc3N2Y4ZTBmOGFhODggYWxwaGExMDAKKzM5MTYgMTMxMzIzZjE3MTU5MjJmZGVjMGE3NDViYTBjOWFhMmQ5OGM5ZjE1ZCBhbHBoYTEwMAorMzkxNyA4MTAxODY1MGRjMzI0NWE5NmViYzA0MzBjZmIzOGY5YTJiOTBhZjhjIGFscGhhMTAwCiszOTE4IGMxM2JiZGZlZWJmZmU2YzFlMGY0ZTBhYWQ1YTdiY2UxZDBiYmNiZGEgYWxwaGExMDAKKzM5MTkgY2E1ZWQ1MmFjYTI3YTZhOGQ3NjBlZjBjYjkxNzkyOGJlMjkxNWEwNiBhbHBoYTEwMAorMzkyMCBmYzQ1ZTU3N2ZmOWIyMGNlYTg1Mzc5YjdkMjcwNGFkN2VhNzQ3ZjYyIGFscGhhMTAwCiszOTIxIGE3MDQxZDZmN2RlM2UzNTg5NzdkYTkyODc4ZGMyNDU1NGQyMGNhMTIgYWxwaGExMDAKKzM5MjIgNWVmZmFhZDcxYmE1MmU1ZTZiNDQwYzhkODUzYjY0ZjQ5YjI5NmI1ZCBhbHBoYTEwMAorMzkyMyBhZDIyNzBlNzFlYzNmMGI2NTNjMjdjMjZmYTE1YmEzY2VkZWU5Mjk0IGFscGhhMTAwCiszOTI0IDM0NjlkMDRlM2UzNmQ1ZmNhODk5YmY0Y2IwYzlmMTU1YjVhNDc1MTAgYWxwaGExMDAKKzM5MjUgZjA3MTRiYjRlYTk2YTFlMTAwODMyMmVkNWI3MWU0MzlmODczMzI3OCBhbHBoYTEwMAorMzkyNiAzMzdhYmRjMTU4NGE0MjVlNTQ0M2E4OTI3ZmRhMzFiZWJiYTE2NTliIGFscGhhMTAwCiszOTI3IDdjNzVmNjA0NjhmODAyZDBmNzMzMjk0ZjFjZmZiNmFmYmM1MThhN2UgbGVnYWN5LXRydW5rCiszOTI4IDIyMzZkNzA5ZmYyZGFlYTYwOGZhMDRiZGVjNTM5MWQyMTU5NmQ0YjYgYWxwaGExMDAKKzM5MjkgOTBhMjA5OTM3NDdkMWYzOGE1YTBjNGJiNWYyNTI0NjBhNTZkMzFiZCBhbHBoYTEwMAorMzkzMCBjMWNkZWVkOGM1MTQ0ZjVlZTcyMzMyZTczZTVlMDQwNmJkYzBiNWNmIGFscGhhMTAwCiszOTMxIDNkOGJhNDE4NDhmZjBmODIyNTQ0NDVlMjY5ZWIxYzhlMzMwN2NiOGEgbGVnYWN5LXRydW5rCiszOTMyIGI0NTRkYzkyNDdiMDc2YjdjYTU3Y2E5NmU4YzEyNGUwZGEwOTI4YTggbGVnYWN5LXRydW5rCiszOTMzIDk5OGM2NDIyY2Q4YWFlMDNkMjhiOGE1ZDMyY2JiNmNjYjY2OGEzMTQgYWxwaGExMDAKKzM5MzQgYmNmMGI4ZGZkYWU5ZjQ0NmQ2MTMxZTQ5ZTI4NjI0ZDgzMWIzOGJiNCBsZWdhY3ktdHJ1bmsKKzM5MzUgN2ZkZWFkZmE4M2UwY2M2ODc4OGMzNzA0OWNiYjI4NzBiMDdlMDFiZSBsZWdhY3ktdHJ1bmsKKzM5MzYgYWMyZTVjYzI5OTQ5ZDllZDZjM2VjMDU5NDE1NDkzYWY2MDFiMzJhMSBsZWdhY3ktdHJ1bmsKKzM5MzcgNTk0YThjMTJkNjg4Mjc2ZjJkMjI3MGY4YjQ2YzBlZGYwNGNiMGVlOSBhbHBoYTEwMAorMzkzOCBmY2EyZmVkZWE3MWNjNjdhYTIyMGJlZmMyNWE4ZmI2MWE5NWFiNGMwIGFscGhhMTAwCiszOTM5IDJjNmYxMzM3ODAxY2MwMTAyZWY3MzA5NmJmMGRlNmE2YzFhZTAxODMgYWxwaGExMDAKKzM5NDAgMTI4N2ZiMDU5NTg4OGMwMTQ3YzQ1NWViNjYyNDdmNzc4ZDRlZWRhNCBhbHBoYTEwMAorMzk0MSBmNjU3OTQ4ODkzNDM3MGE0NDQ4ZTZlM2MzZmY3NTQyZDNlNzVhZDQxIGFscGhhMTAwCiszOTQyIGFjOWUxMmI0ZWE4YzY1N2JjYTM0ZTE4YTcxMTdiMGI0NGUzZGZlMTcgbGVnYWN5LXRydW5rCiszOTQzIDIwZGY2NTMzNzZiNDE3Yjk4ZTJhYWFlZDNhZGViNDc1YWM5MTVmMzIgbGVnYWN5LXRydW5rCiszOTQ0IDY3MjAxMTg3MWExYjY0MDU5Yjg4MDBmYWUxZTc4N2I0MDI1NTE1MTcgYWxwaGExMDAKKzM5NDUgYTViZGZmOTcwNTk1MWZhNmNlN2E2NGI5NDIxNWU5NjUwNzg5ZDhjNCBhbHBoYTEwMAorMzk0NiA4OGRlMjFlZjRhOGEzMGY2YTkxNjliODk2ZmMyNmE4YzdhYzkzNzFmIGxlZ2FjeS10cnVuaworMzk0NyBiYTZhYzgyZmNiNjg2ZGUxNWNjMzZhN2UzZmQzNDc1OGM1YTRhZDhmIGxlZ2FjeS10cnVuaworMzk0OCBiMzQ0MzU0NmQ2ZWU0YjAwOThmOTJiMGM1NDRlYjI1NDcxZTkwODNkIGxlZ2FjeS10cnVuaworMzk0OSA0NTc5MDM1NmUwMjRmNzYyMDZiYzFhNDBlOGNhN2FiNTFiNmEwODUyIGFscGhhMTAwCiszOTUwIDIxOTdkZDI0MWQ4ZGM4NjIxNWNiYjJkOWFiZWY4MTRhMzg2NmZiNzYgbGVnYWN5LXRydW5rCiszOTUxIGRlYTY3YzJhNGMwN2YzYmRmZWM5NDEyYjYxYjhkMTQwZjY5M2IzNDggbGVnYWN5LXRydW5rCiszOTUxIDc5YWI0ZGY5ZDBmNWZmMmYyYzljM2EzMDZmMWZlYjFhZDJjNTI4MTQgYWxwaGExMDAKKzM5NTIgOWUwZWNlNmVkODFkN2EwYWQ0NTkzNGQ2MjE4MGNiNWMxMGQwYTkzMyBhbHBoYTEwMAorMzk1MyBjYTNjY2FhODUwNjAyNmZkZTFmMmI5NjhlM2M1MmFlNDcyMTg0OTgzIGFscGhhMTAwCiszOTU0IGVjYmFkYjgxODg0NzUwM2I2OGJmZmUxYWRmMWU3NGNmNGU1N2E0N2QgbGVnYWN5LXRydW5rCiszOTU1IGIyYzkyMmNmYjRkOTdiY2ZjZDg5NTBjZjk4NjU0NTQyNTg2NjBkNmYgYWxwaGExMDAKKzM5NTYgNGJjZjU4NGMxNTcyYjRmMjcxODAwMDYwNWRmYTc4ZTg4ODM1NzQ2NiBhbHBoYTEwMAorMzk1NyA4M2I0MWJmMTkzOTJlZDNmZjRhYjc0YTM2MTdiYmQzOTlhODM0NDg3IGFscGhhMTAwCiszOTU4IGQ3NDEwNDFjYjA3NmViY2JlMWY0YmIzOTdhOTllZmVjOTQ4ZGVlY2UgYWxwaGExMDAKKzM5NTkgMDlkNzdiYjcxZDc1YjUzZGViNWE0OGJjMjNiYWY5N2M0NTcwNmZkZSBhbHBoYTEwMAorMzk2MCBjZTMyODQ3MTY0ZTFlNmQwNzcyYzQ5MTM2YzkxM2M0YzgwMmEwMDhkIGFscGhhMTAwCiszOTYxIGU3NmM2ODdhYzc4MWQ0MmE3NDM1OTY4YTI3NDQzZTczNWE0MzJmZDUgYWxwaGExMDAKKzM5NjIgNmVjMTUyMjIxNzkyZTY1ZjdhMTFlMmFiNWVlZjVkMTQ4YmYxZjJjMSBhbHBoYTEwMAorMzk2MyAzM2QzMzQ0M2VjNDU5ZmQyMjhjZDU0NWUxNGQ1ZTlkNWRiOWJiNGI0IGxlZ2FjeS10cnVuaworMzk2NCAzMDFmOGNhOThlMGI1ZjQ0MGM5ZDAxNDUwNzcyZDNjOGUwZWE4YTEzIGxlZ2FjeS10cnVuaworMzk2NSA1N2I5Yjc3ZGEyMWIzOWQ1YTlhNWM5MTdhODExZGY4MmYzOWY5MjEwIGxlZ2FjeS10cnVuaworMzk2NiA1ZTVhNjFiZGRlMGI3ODE5Y2QyMzllZWRlOTg1YjBiNmJlZDY4YjVmIGFscGhhMTAwCiszOTY3IDkwN2M1ZGQ4OWM2Y2VmYmE4YTQ4ZDQ3ZGIzOWE0MDk3Zjk1YjcyMWEgbGVnYWN5LXRydW5rCiszOTY4IDRlN2ViNWEzZmJkYWYxMjE1ZWQ3MDAzNjhiZDlmZThkMjA4OTAxMWYgbGVnYWN5LXRydW5rCiszOTY5IGMyZmYyMTYzZjBiNzBjMWVjZDBkOGFhYzAzZDUzMzlhNDQ3ODk2ZTMgbGVnYWN5LXRydW5rCiszOTcwIGU4YmYxMDc3MTc4MTM5N2I4ZDM3NDUyOWYxMTJmOTRiNDlhYzg1MDMgbGVnYWN5LXRydW5rCiszOTcxIDYwYTcyMTRmMzNhODgxNjVjNzA0YjczMTllZTYyOGQ1M2JjYzhlOGEgYWxwaGExMDAKKzM5NzIgNTQ4ODkxMWViYzI2ZWM3Mjk2NWFjMzA5MWIyN2UwMzEwYmIxNzJlNyBhbHBoYTEwMAorMzk3MyAxNDMxYWJiMjgzNTNmNDg1MGVhNWRiYzIxYjIwNjI0ZjBlZjBjZGNmIGFscGhhMTAwCiszOTc0IDEyOWQ5OGI1MTdjMjU2ZmU4NWI0MzkyNjM3NmFhMDY2NGQ3YWY0OWUgYWxwaGExMDAKKzM5NzUgYTc1NGJjNzRlNTg0ZGFlYTdmMTBmNDhiZWY4YzczMTk5Y2JhYzk0YyBsZWdhY3ktdHJ1bmsKKzM5NzUgNzU5MzlkY2M5MzhhNzFhZGExZWQ4OWMzNTkxMjZjMGRjMTYwMWMxNyBhbHBoYTEwMAorMzk3NiAwNzcwODBkNzU4ZGRhNjgyZWQ2MThhM2E1YzlhZmNkZDc3YTJlZTI4IGFscGhhMTAwCiszOTc3IGM2YWZiOTZhNDUyMzBmNTUxZGYxNGFjMjExOWNjODBhMzY1YzFlYWEgYWxwaGExMDAKKzM5NzggNWMyOWY0YjFiMjg1MTUyNTM0YTBlMjU3NmYzNzI3Njk1MGJmYmRiMyBhbHBoYTEwMAorMzk3OSBlMjkxMTA1YjFiZWVhYjI2OWM3YTM0Y2RiODkyMTdmMWIxNzhmNTRhIGFscGhhMTAwCiszOTgwIDY5ZDVkYzI0Y2IzYjU1OWY4Y2QxOWVhZTUyOTAzZDAxN2YzMDU5NDYgYWxwaGExMDAKKzM5ODEgMjQxYzM1NWZkOWVhZDU3M2ZmMDgwODkxZjUxMzEyNzczZjRmZTlhMiBsZWdhY3ktdHJ1bmsKKzM5ODEgOGRlZDhjNjU1MTFkYTQzYmQwYjkwMzQ3MDg3NWJiNGRlYjk1ZWQ2MCBhbHBoYTEwMAorMzk4MiAyZThlYWVlOWVmNDVjZWE2ZWMxYThiMjU2OTgxZTRlYmM5ODI3OWVjIGFscGhhMTAwCiszOTgzIGJlMmRiMzE0MjM1NzRkNjE4NGJiNWExNGJiOTY3OGVmNjdlMDA3MzQgYWxwaGExMDAKKzM5ODQgMjIxZDQ3YjI5NzRlNzNhYjc5MWE0MGNiOWQ4YWM1Y2Y0NGE5OTc3MyBhbHBoYTEwMAorMzk4NSA3OGFjYWRlYTM5MThmYzk2N2U1NThmMGZmNDhiNzg2OGRlMTlmNWRhIGxlZ2FjeS10cnVuaworMzk4NSBmOWRiYmJiMTc5MjkwMjVkMDZkNjI5YTRiZWQzZTUxYTExMzFhNzI0IGFscGhhMTAwCiszOTg2IGFjZWExMTAzMTI5YmFjMTFhZjYxZGRhN2Y4MTJjNTE4ZGE1Yjg2Y2UgbGVnYWN5LXRydW5rCiszOTg3IDgzZWU3NjQ5ODIzZDI1NmNmMjc5MTNiYjQ0OGY5YzRhZmM4Y2ZmOGUgYWxwaGExMDAKKzM5ODggNDA0OGNjZjg1YjNkMjQ1NjY3NTRiYTMwMzNlYjc0Y2NmODY0NjAzNCBhbHBoYTEwMAorMzk4OSBkN2E4NTU3ZTc4MGNkNTI2YTg1NTM4YWVhNmExZDBmNDRkNTQ5YmQ5IGxlZ2FjeS10cnVuaworMzk5MCBjOTQ5ZGNiMDM0OGJlNGVhYmRmZTUxZWQ5NGM4NTliZDMyY2U3N2M2IGFscGhhMTAwCiszOTkxIDdiOTgyOGJjNzFkZDY0OTI1OWFiNGVkN2MxNWQ4YTIyZGVhYjhiZDEgbGVnYWN5LXRydW5rCiszOTkyIGUyMGQwNjk0ZTc0MDE0ZWJmNmRhYjY0ZDliMjZkMzBiZmE1ZTNkMzIgbGVnYWN5LXRydW5rCiszOTkzIDEwMzZmMjA1Y2MyZDdhNWYxMDdjZGMxZmJlZTMyMDc0OTgxOTJjMDUgYWxwaGExMDAKKzM5OTQgNzA0OTJkNjU5ZTNjN2MxMjRkM2ZjYjE0MDlhMjA5YjNmZDcyNWNjYiBsZWdhY3ktdHJ1bmsKKzM5OTUgYTgyNzU1NjI3ODRjZDJmMjY5MTk2MTFiMDg3ZTU2OTlkNjE0MzhmOCBsZWdhY3ktdHJ1bmsKKzM5OTYgZjUwZmU0Yjk1MmJhYTE3MmQ2ZGZmYTNhMjhjYWQ2Mjk1ZWQ1ZDczMSBsZWdhY3ktdHJ1bmsKKzM5OTYgMDMyNmI1ZDYxNDQ1ZWUzYThkM2RlMjgxMTlmOTY1MmNiNzJkMmUzZiBsZWdhY3ktdHJ1bmsKKzM5OTggNmEwMWYwOTlmMGFkOGQ0NTQ3ZGQ3YzZhOGExZDhlYWM2ZTVlYmZkZiBhbHBoYTEwMAorMzk5OSAzNjZmOGRlZTk2ZmJmNGU3NzQ2MDhlMGVkZTliYzBhYjRkN2JhMmExIGFscGhhMTAwCis0MDAwIDJlMDUwYTUwYWEwYTAxZjM1MzVkYTAyNzkxYTZhMGZlMTkzMzNlZjIgYWxwaGExMDAKKzQwMDEgMmIyNzU1MzAyOGFhYzIzZTY4NzA4MTc5ODYzOWM0MTlkMzRjYzA4ZiBsZWdhY3ktdHJ1bmsKKzQwMDEgNzQ5MjBjM2EzNjdkMmQxYzdmMjkzODhiMjQ0NDAxZmQyZWU0Mzk4NyB1bmxhYmVsZWQtMS4xLjIKKzQwMDEgMjI1NDgyMjlkNmZkZGNlMzNjZjU3YTM5MzFmYmI3MjcyYzRiZTc2NiBhbHBoYTEwMAorNDAwMiAwNDc3YmMzOWM5MzU5MmFkOTIzMzkxZjc4MzE0MWRkYTgxODM5NDMxIGFscGhhMTAwCis0MDAzIDdmODkxZjMyODY0Y2E1MmExZDBjNzk2YmViN2IzMDJkOTAyY2MzZjkgbGVnYWN5LXRydW5rCis0MDAzIDg4OTZlNGVjMDlmYzRhNDY4NDhmNDM4YjA0MWQyMDhiMjU1MzRlMjAgYWxwaGExMDAKKzQwMDQgYjE0YzZiOTU1MTYxY2EwNGFlMDkzYTg2NzIzZDQ0MDNjYTEzMGNiZiBsZWdhY3ktdHJ1bmsKKzQwMDYgODQ1NDU3OWFiNTJmMzcxZGNmNTU0NmNiNTMwZTJkZDZmZDYwZmY1ZSBsZWdhY3ktdHJ1bmsKKzQwMDcgOWNjODU4YmQ1NzNkZTM0ZjMwOWZlMTZlYTVjNDhlOTQ2Yjc1MzcyNSBsZWdhY3ktdHJ1bmsKKzQwMDggODEyZDA4MTFmY2YzZTA2MmU0NTE1OWI0MzhjYWJhYWYwMDMwOGNkMiBsZWdhY3ktdHJ1bmsKKzQwMDkgYTc1ZGM4NjU2Y2IwYTIzOTNkYmE0YzI1MmYzMWQzMTJiZTRkMTMyYyBsZWdhY3ktdHJ1bmsKKzQwMTAgYjZiNTBkOTQxMjVmZDQyZjEwMmJjMGQ4ZmMwNDQzYzQ3NTk2Mjg0ZCBsZWdhY3ktdHJ1bmsKKzQwMTEgODdhMmIwNGM0NjgwYmQxMjFmYzNlNjg2ZmZhODc4ZjZiNGZhMzE2YiBhbHBoYTEwMAorNDAxMiA5NmQwZGM0NzM5ZWNhMjQ4MjA3NTNiMTRiZGJlYjA4MTcwN2FiZDJlIGxlZ2FjeS10cnVuaworNDAxMiAxY2Y2MDg1Njk3Y2Q1YTBhNGUwMmIzZjA5MjRmYTI1NjhkZWQwMTI4IGFscGhhMTAwCis0MDEzIDU1MmIyMWU3YzIzMGE3OWQyNmJjMzE1ZjllZjU2MDk4ZDA0ZDc0NzUgYWxwaGExMDAKKzQwMTQgYzFmYjJiNmM0NzRjZWE5M2VlNTRjYzgxZjE0ZTY5YTBiY2M0MjcxMiBhbHBoYTEwMAorNDAxNSBlNDFhNjUzMDY3MDYyMDA1YTJjNWVjNTA2Y2FkZTA5N2QxYjg0NDQ2IGFscGhhMTAwCis0MDE2IDE1MTMyMWExOGRiNGE3OGI4ODdhN2I2MDc2YTQwZTYwZDJlMDY0YmYgbGVnYWN5LXRydW5rCis0MDE2IDQyNDg2YmYyMzY0N2RiNDMwMjY1YTRlMzMyODE4NDZjYTcyZjYwOGUgYWxwaGExMDAKKzQwMTcgOGZiZTg2MGEyNmUxOTk1ZjFkYTFmYTcxZDk4OTVkMTQ0MGQ4MDUwYiBsZWdhY3ktdHJ1bmsKKzQwMTcgZTQ2ZTBlZTc2ZGJjNDQ4MThhNjY3ZWMxMjQzYWZlOTU1M2FkN2FkMyBhbHBoYTEwMAorNDAxOCBhOWRkMmUxZWE1YzllYTJjYTQ3YjRkMGM4MGFjZWI2YTE0NTZmZjBmIGxlZ2FjeS10cnVuaworNDAxOCBhMTlmYTA1NWVjNDhiMjQ0NjdhN2EyMzBkYmNhYTI3YmNjMzE2YTMzIGFscGhhMTAwCis0MDE5IDQxMjFhZmQ3NmQ3MzRhZmVjMjI0ZmIyYmE5ZWI4ZDE2NmMzZDEwOTIgbGVnYWN5LXRydW5rCis0MDIwIDVhNmMyYTIzOGYwMzg3NmUyYTc5ZTJhYjMyOWYyNWUyN2JhMjg5MzUgYWxwaGExMDAKKzQwMjEgMjljNDI1NWNkNDVjZDVmMmViYzZjMTFkNmNmNGYwYzU1N2FmODg1NCBhbHBoYTEwMAorNDAyMiAwMjAyYTcyZDk5NGUzZDM4MjU1ZjNhNTUzYTkwY2UxYjE1MzZlZWZmIGxlZ2FjeS10cnVuaworNDAyMiA0ZTFhMmRiZjkzYzUzMmEyYmZmY2UzYzVkZmU1N2E3OGY2ZDZmMjJlIGFscGhhMTAwCis0MDIzIDNlNmI2N2NhOWRiZTQyNjlmOTU5MDA0MjM3MmI3ZWFmZDhjMzZiNzcgbGVnYWN5LXRydW5rCis0MDI0IDAwN2FkZjAxNTQzYzUxNzY5ZmMzMmQ4YTE5ZGU0OTQ2MWZjZWUxOTkgbGVnYWN5LXRydW5rCis0MDI1IDZjZTgyYzE1ODFiOTJmNzcxZGI5MGM0ZjUyODVkYWM1NmVkYjljY2IgYWxwaGExMDAKKzQwMjYgZjI2MDIyODgzODFhNDI1N2Y4ZjYyZjk4YTAzNmZkZTc2OWYwZWRjNyBsZWdhY3ktdHJ1bmsKKzQwMjcgNTkwMzljMDg1NmM5Mzk2ZTNmMWYzYTQ3NDQ5ZDMxNjlkNzNmNzVmNCBsZWdhY3ktdHJ1bmsKKzQwMjggYTNlYjI1MjU5MzI5NDIxNjZlMzQwZTdjNmQ4NDg3MzRhOGFmNTYwMiBsZWdhY3ktdHJ1bmsKKzQwMjkgMWY0OTI5YTQ4ZTY0YTAwNDdjMzhlZDc4OTFkMTJlYWI1OTIxYmIxNCBsZWdhY3ktdHJ1bmsKKzQwMzAgOWFmOGIzOTkxY2VkZjcyZWJiYjk2ZGE3Y2I2MTE0NDhkYTFiOGM3YyBsZWdhY3ktdHJ1bmsKKzQwMzEgZmNhZjhhMmJhZjM4OTZlOTAwMzc4Yjg2MDg0OWRhYTAxNDYyMGJjMCBhbHBoYTEwMAorNDAzMiBiY2E4MjkwYzFiMzFjZDdkNzI3MDVlMzkzMjc1NmUyZDI4ZWUwNTUxIGFscGhhMTAwCis0MDMzIDdhMjliYjNiZGRiNDY1YWU0NDBhMzVkNmY1MzkyNjllM2M4MDRkNDQgbGVnYWN5LXRydW5rCis0MDM0IDM3Y2Y4N2Y1NjFlY2E5ODVhZWFmMmEwNTE0ZGRkZDk3ZTlhMTg4MTAgbGVnYWN5LXRydW5rCis0MDM1IDA1NTk2MmY5NmRlN2I1ZjBmYTA4ZDNjM2VmMTU1NmJhMGZlODI2ZWMgYWxwaGExMDAKKzQwMzYgMTRiMDg3ZmU1MzQ3MGM0ZTM3ZTE0MDAwNzU4ZWRlNTU1OTkwN2U4MiBsZWdhY3ktdHJ1bmsKKzQwMzcgNzA4NjU0YTVkZGRlMDMxMWQ3NTgxNzU2NmNhYjE3YzZiZGFjM2U0NyBsZWdhY3ktdHJ1bmsKKzQwMzggMGQwMjlkZWU5MTI5MGY5YTJmNmU0NWEyYWRmN2Q1Y2IwOGZkM2Q4NSBsZWdhY3ktdHJ1bmsKKzQwMzkgN2E0N2ZhYmIxODdjNmMyNjdjZWU3N2I0NTI3OTU2MzJiNjFjNzI5YyBsZWdhY3ktdHJ1bmsKKzQwNDAgZmE1MGQ0YmQ1NTM3ODVhMWMxYWJlNzI5NzkzNjhiNDA2ODkyNThhOCBsZWdhY3ktdHJ1bmsKKzQwNDAgNjBiMDE1OGQ5NDhhY2MzYTE5MDVlMGIxZDdhZWUyNTY1OWQ4ZjczOCBhbHBoYTEwMAorNDA0MSBmODQ5OGIwODhhYTFhMGM1MDM2NmRjYTUyMzZjYzU1YzEwNDhjZDExIGxlZ2FjeS10cnVuaworNDA0MSA4YTdlNTMwZGQ0NGE1ZTY0MDAwOGE5MzZlYWMzNTM2YWU0NzJjYjMxIGFscGhhMTAwCis0MDQyIDYyM2RkNzI0OTE4NjY0NDExNDhkODBiZDA1MWI5MThmNGNkMzJhZTIgbGVnYWN5LXRydW5rCis0MDQyIDE5ZjIwNzUxZjhkZWZiZWYxNDZjNzc4MTU0NTllY2IzY2IwMjc3NTcgYWxwaGExMDAKKzQwNDMgMDNlMDk3ZGRlY2EyYmVjYjgyMjkwODZmNmYyNTBhZTZmNGYxY2Q0NSBsZWdhY3ktdHJ1bmsKKzQwNDQgNmNmNmI2NjkxYWFlYjI4MTdmMDkyNmZhMmRlMTNmOGM0ZDcyYjJhNCBhbHBoYTEwMAorNDA0NSA3YWM0ZTQ5NzkxZjQ3ZTFiZGFkOGVmNGU0NjhiMzkyYmM3NjI0NjQzIGxlZ2FjeS10cnVuaworNDA0NiA5ZTJiMTk0MmE3NDIwYWE0MDY3YzE5NWNhOTFkOWE5YjY2NjdhYzdiIGFscGhhMTAwCis0MDQ3IDFjNzFhMjdmZDY5MzNkYzZkZTU1ODcxMzI3YTQzYWIyYjA0OGNhYTIgbGVnYWN5LXRydW5rCis0MDQ4IDUxYTA2ZmRmZmY3ODlkMzNlMmEwMDZmYzE2OGI5NjE4NTRlNjE0MDQgbGVnYWN5LXRydW5rCis0MDQ4IDExZWExNjFhMDFjMmZkOTJiNDRhOThiMjIwMjZmMjk1NmZhNmQxMDkgYWxwaGExMDAKKzQwNDkgY2YzMjhhOWVjNWQ0NDg3NmNmMDI0ZjExZDdhYzU2NTlmOWQzOTU0MCBhbHBoYTEwMAorNDA1MCAxOWIwMGVmNGNkZDk5N2RhMzI4ZTM5ZTNkNTJkOTM0OTExMDk2MTNkIGFscGhhMTAwCis0MDUxIDdlNWY5N2JhYjFlNmY4ZGVjNzZkNGYwNzQxNzQ0N2ViNTc5MjAwZDAgbGVnYWN5LXRydW5rCis0MDUxIGNmMjRmM2U3YmU2ZDdlNjVlYTVhNWM1N2ZiZjFmYmE4ZjhhZDJmZTAgYWxwaGExMDAKKzQwNTIgMzJjMjhhZGNjZDEyYjA2OTBjMTk1ZDNhOGMyMzhiYTEyNDcwODYzZiBsZWdhY3ktdHJ1bmsKKzQwNTMgM2FhYzgyNWE1M2I1MjNkZjVmMDJhZDBmMzg3NzFkMWE3NWM2ZDE1YiBsZWdhY3ktdHJ1bmsKKzQwNTQgY2JlZTVlMWU5YmU4MzI1OTA0MjY5OTgwOTgzMTBmZTY5YmExMzdhOSBsZWdhY3ktdHJ1bmsKKzQwNTUgNzYwM2EzYjJjYmVlOTkzNDVkMmY5ZTNlN2NmYWJlZjkzMTg4ZDFhYyBhbHBoYTEwMAorNDA1NiA5MGVlNzFhM2ExM2ViYjQ0ODM2Y2FmMTZmNjk4ZGI5MmQyMThiZDVkIGxlZ2FjeS10cnVuaworNDA1NyBhNGM3ZWZmMjU5YTU5YzhiNGY1MTk4YTI2Nzg0N2RhZGE3NWI4YTE5IGFscGhhMTAwCis0MDU4IDRkZWY5MzRmZjc1YjgwNjJhYmZhOGEwNzAxZGJhNjc5NWY5NzU2ZTQgbGVnYWN5LXRydW5rCis0MDU5IGYwMmE0Njc1NGY1MDVjM2VkMzBkYWZkN2M0YzE1NTQ4ZmRiOTBkYTYgbGVnYWN5LXRydW5rCis0MDYwIGE4NjJkOGY0NTA3YjhiNGJkM2M0ZGZhMTNkM2Y4YjkxNzYzODRmZGUgbGVnYWN5LXRydW5rCis0MDYxIDFiOWVjMzdkYjJiOWFiZjk1Y2ExZThiOGQ0MThiNWQwZGU2NGUwMmYgYWxwaGExMDAKKzQwNjIgNTA5NmJiNDhjY2ZlMTMwYmZlMWZlOGMxY2EwMDRkY2Y4NjVhZjk0YSBsZWdhY3ktdHJ1bmsKKzQwNjMgYjVhNjYwY2FhOGUxYmM0NTdiNTQxNDQzYmIxYjFkZGEyZWVlY2Q3MiBhbHBoYTEwMAorNDA2NCBkOTBhYWEwOTEyM2JmNTg4YTc5ZDA5ZmZlZmYzNzA3MmE5ZGQzZDhiIGFscGhhMTAwCis0MDY1IGUyODIzMTEwYzA1MTU3MDQ1NDQ0ZTFmMzhjMzJlZDhlYzVmMmQ5MTIgYWxwaGExMDAKKzQwNjYgZTZhMjEzYjdkMGQyYjk4MDNjZjQwMjNmMGU2NGZjMGNkNzI1MTY3NyBhbHBoYTEwMAorNDA2NyA3MmM5YTRkYzQ4NDdkNzk0ODk3NzZkNTZhMjQyM2QzZWEwZTUzYWJiIGFscGhhMTAwCis0MDY4IDRmNDQ5YWI2MDU2N2ZiYjY0M2UyYWQ0NTM1Y2NiZGM5Yzk4MGZiYTQgYWxwaGExMDAKKzQwNjkgZmZkNDk1YmFjYmQ0MzZmMDBlOGNiZWIyYmIwYzEwODNhYjgzZjA0MyBsZWdhY3ktdHJ1bmsKKzQwNjkgOGU3ZDhkMGQ0ZTkwYTk0NTE1OGRhNTZkYWM5ODhkZjcyOWJiNWE4NyBhbHBoYTEwMAorNDA3MCBmN2UxZTIzODkzNzVmMjMyNjIwYWVmOGU0YWQ0OGU3MWM0YzU4YjIzIGFscGhhMTAwCis0MDcxIDAxZDI2NDg2YjBlZTY2NDdjM2YyZDEwYTBkYmJmNDEyYTM2ZjgyZmMgbGVnYWN5LXRydW5rCis0MDcyIDE0YjAzNDE4YzkwZmIzOGFmMjBmZWQ3ZjQ3MjY4OWVlOTUzYzRjY2IgbGVnYWN5LXRydW5rCis0MDczIGE2ZTZmYWQxYTAxYjMyZmRmNDQ4MzNlNGYwZjk4YjczZDM3MjRmMWMgbGVnYWN5LXRydW5rCis0MDc0IGEwOWVmYjEzNWRlNTUyNDYzNTBlZTQyNDVhYzE4MTk4NGI1N2U1N2MgbGVnYWN5LXRydW5rCis0MDc1IGQwNzRiMmZiNjA5MTRkZDdkNWNiOTAxYjkxZjk1ZmI5MmVmNjgyZDUgbGVnYWN5LXRydW5rCis0MDc2IDczZGQyYTk3OTg1N2YxN2IzNmU5MTUzMmIxNjcyZmU2NWRjYjk2MmUgbGVnYWN5LXRydW5rCis0MDc3IGI1ZDViYmNlYjAwZjYwNDg2MzRiOThmMDdkODY5YmRkYjRhOTNiNTAgbGVnYWN5LXRydW5rCis0MDc4IGE5NjE2ZjU2NTQ2NTUzNzgyOTVlNGE5YjMxM2UzZWQ5NGU4NGE4NTYgbGVnYWN5LXRydW5rCis0MDc5IDI3MzQ1MTg5MjMyN2NlMWYxYjA3ZjBkZDQ5MDlkMGQ1NmVhNjhkZGYgbGVnYWN5LXRydW5rCis0MDgwIDM4MmI0ZjhhNzM3YTRjZmYxYWI3YjA1ZmU5M2I4ZGQ2NzA1NDY5MzggbGVnYWN5LXRydW5rCis0MDgxIDk1M2U3NGVhYzAwNjI5ODE2OWM1MmVlNzJhMjllN2Y0ZjQ1ZDU2Y2YgbGVnYWN5LXRydW5rCis0MDgyIGNlZDNkMTEyMmY3Y2JhYjEzZTA3NzEzMmQ2OGQ0ZDAxMTkyODg1M2IgbGVnYWN5LXRydW5rCis0MDgzIDM0NGRkMjhkYTljNTY2MjBmNTM2ZWExYTM4ZTg3MjgyM2M1MGRiM2YgbGVnYWN5LXRydW5rCis0MDg0IGE5NDhiNDRhZDRhMTU1MGI1NzJiYjc1ODEwMmZlNWMwODMwZmQwNDYgbGVnYWN5LXRydW5rCis0MDg1IDJmZTU0ZjYyY2RiNTQ5NzJjMWE1OTJjYzYzZGVhZTRlOTc1OThiZmMgbGVnYWN5LXRydW5rCis0MDg2IDRjMzA2MmM3MTM1ZmNkM2Q3MWQwNGU0ODYxZGU4MmIyMjdlZmY5YjAgbGVnYWN5LXRydW5rCis0MDg3IDZhMGU1Y2Q0OTljNDVlZGRkNzVjY2IzYmY4MjQzYzQ1NmQ4Y2YwYmUgYWxwaGExMDAKKzQwODggNDk2YzdlOWYxMWQyNDgyMGRiMzQ1MzgxNGY2MjM0YWRkNWYyMjljOSBhbHBoYTEwMAorNDA4OSBjYTAyMzM5OWU1Yzk0YmI1ZTdmOTJmOWE1ZjA0YTQ0MmIwM2IyMjM4IGFscGhhMTAwCis0MDkwIDUyZmE0ZGNkMWIwZTBhMTYyYjBmZGM3YjQ4YjEzZTQzYmI1YjI2NGQgYWxwaGExMDAKKzQwOTEgYjZjMzVlMWZhZGFlNmZmMTI3MWY1YjVkODc1YjBiYjY0YmZlMTZiZiBhbHBoYTEwMAorNDA5MiA4Zjk2ODAyNzMzMDc3NTM4Zjg5NWUzOTc1NzQxZGQ5YjE4MGU2ZmMyIGFscGhhMTAwCis0MDkzIDlhZTdmMmZkODlmMTA5N2RjNzhhNjYxODlhZWI0YmYwYjQxM2ZiNDcgYWxwaGExMDAKKzQwOTQgNGI1MGYxMDQyZThkYzA5MDM4NmQwNTQ3MTc5MTg4MmMzYmUxZjY2MCBhbHBoYTEwMAorNDA5NSA3NjM3MTgwNWQ5ZjM3NGYxOTczMjg4MTI5YTI0MzMxNGNjNDI4ODYwIGxlZ2FjeS10cnVuaworNDA5NSAwM2IwNTcxN2I5NTIyNGFkMmE3MDdhNzYyMDU2NDRkOTMzNzA5OTViIGFscGhhMTAwCis0MDk2IDFlM2E1NTNlNDc5YWYwOGRlM2U3ZDlhOGVhNThkMDczOGI1OTJkZjMgYWxwaGExMDAKKzQwOTcgM2I5MGE5ZmMxZTAzOTg5Mjg1M2I2NWJjY2Q4NGI4ZmVhMTkyNDA2OSBhbHBoYTEwMAorNDA5OCAxZjA2ZjcxOTA0YzI0MWYwYTM1YmE3NTgzNDc3ZjhjZTllNGM5MjFhIGxlZ2FjeS10cnVuaworNDA5OSA1MDhiNzNlMGE3ZTRmMWYxNWJmNmNlNDRjN2U3NmE3NjlmYmZkODI0IGFscGhhMTAwCis0MTAwIDNhZmFmYWMzZDdhMTZiZWJjMjllNzRhMTRmY2RiNGJlMGEzYjZkZmYgYWxwaGExMDAKKzQxMDEgMDJkOGMxNTg4MmZmOWFkNTA5NjhhM2JlMTdjODAzZmFiMThmMTEyNyBhbHBoYTEwMAorNDEwMiA1MjkwNDI4YmFkMzcxNWI3M2ZhMGQxMjAwYTM5NGQ3MjE5MGIwNzYzIGxlZ2FjeS10cnVuaworNDEwMyA3NWJjYjFmYzY1YmU1OWMxMzI1NzY5ZTJhMmQyN2JmNTE0NmZmYzU4IGFscGhhMTAwCis0MTA0IDhjZjY0MGVmMzQ0MDA3Njg5ZTlkMzY0NDFhZTQzNWViN2FhNTNlMmMgYWxwaGExMDAKKzQxMDUgMTAwOWVhNDkzNjZjYzk4Y2Y2ZmFmOTU1ZDZjZDlhZDAzZDg5ZGI2YiBhbHBoYTEwMAorNDEwNiBjMmU2YzlhN2E5NWY4YjQ2YWY5Njg2MWE0NWZhMjQ0Y2ExYzIxM2ZmIGFscGhhMTAwCis0MTA3IDBhNjA0NjBlOTlmMDJiNDE5NmU0YTdiZGMzYjI5ODhjYTc4MDQ4MjAgbGVnYWN5LXRydW5rCis0MTA4IGRjOGUxZDcyZDc4ZGNjZTVlZjUwMWI0M2Y1ZDUyZjI3YzY5NjUyMjkgbGVnYWN5LXRydW5rCis0MTA4IGNhZWFlZTM5MGU0M2ZlNTczYTkzZDM1YzJiY2U4MzQyNzMzYTBjZDMgYWxwaGExMDAKKzQxMDkgMWIxN2FhZjI1MTA1NDk3NmJiMmMzYWVjN2M0ZDU5NDE0MDFiYjRiZCBhbHBoYTEwMAorNDExMCAyYmNkZGM5MDVkYTBiOWY4Y2I1MjdlNmZjZmI1ZmU4ZGM0M2M3MjQ0IGxlZ2FjeS10cnVuaworNDExMSAwODA4MTFiMWQwMjMzMjBmYWIzYTg5NWZmNmNhYzk0ZDZiMTNiYWM4IGxlZ2FjeS10cnVuaworNDExMiAxY2Q0ZmQxNjYyM2RlMjM0ZTZjMjFmODg3ZDM5MzczNGM1MzkyMjljIGFscGhhMTAwCis0MTEzIDRjYmY1MzZhNmYxODAzODU4ZTRiNTcwMTlmNmJhZDc2ODY3ZmNhNjYgbGVnYWN5LXRydW5rCis0MTE0IGM1NGMwN2FiY2ZjZjMxZmZiZDI4ZTM1MDgwZGJjNTA0MjIyMzljOTAgYWxwaGExMDAKKzQxMTUgNmJlOTFjNDRjYWZmZDVlMmMzZjQyOTEzZjhkZGIyM2FmOTg1YjUzMiBsZWdhY3ktdHJ1bmsKKzQxMTUgNmU0YTg5ZWUxMTYzNGI1ZWZjMGRiMGZlMTA3NTNiZDgzOWUxMzE0NiBhbHBoYTEwMAorNDExNiAyM2ZkNTBkNzdiNWEwNTAzNmRhYmRkZjRiZDg0N2E3NTZjODIzZTU5IGxlZ2FjeS10cnVuaworNDExNyBiNWE1N2FmNDA1MDhjOGU0ZGE1ZWFhYTZlNTg4YTUwZWQzNzU5MWQ0IGxlZ2FjeS10cnVuaworNDExOCBiYjYxODE2ZTFkYWIwZTQ2ODEyMTNhNzIxZWM0ZGFlMzljMzk5MGZlIGxlZ2FjeS10cnVuaworNDExOSA5NDYyMWE0NjhiNjBkNDE1OTNjMTJhYTgwMzAxOWY2ZjM2ZDgzYzNmIGxlZ2FjeS10cnVuaworNDEyMCA5M2UwMzY3ODZiMTdhNzhkMGQwZWY1ODE1MDE5NmI1YThkOTRlYmU1IGxlZ2FjeS10cnVuaworNDEyMSBkODhhZjU4ZTk1Y2QwODQ0ZWI5OTUxYTdjNmJiNDJkOTA1NzM2OGFmIGxlZ2FjeS10cnVuaworNDEyMiBlMjY2NWQ5ZDRlNDZkMjU0OWQ1OWJlMDg3NTVlMGQ3MTVkZDE3Yzc1IGxlZ2FjeS10cnVuaworNDEyMyBjZjI5YzA5ZjA3YjYxZjc5ZWEyMzhiMTdkMTJiMDYyNDU2ZDY1MzYwIGxlZ2FjeS10cnVuaworNDEyNCAwM2QzNTFiNmY3MzhlNGM1YjhhMmRmYjE4ZGJhZjgzN2U4OTA4YWVhIGxlZ2FjeS10cnVuaworNDEyNSBjNTAxMjc4MDkxNzlkZGVkN2M3YTAxMzg5MmRkNGFhM2RhZjBlMDJkIGxlZ2FjeS10cnVuaworNDEyNiBiOTQ5MjI0YTRiZDU2MWE4ZDg1MGIxM2ViNDhmNGU5Yjg5ZjE1MTY0IGxlZ2FjeS10cnVuaworNDEyNyA5MDJmZmY1NWRiMzgxZjA5MzRkOWFjMzVlNWYyMmI2YjdiMWZkMmM5IGFscGhhMTAwCis0MTI4IDUxN2JhYWUxYjY2M2MyNjFiNmEwN2RmZjU5ZjFiMDYxMDhlNTg2OTMgYWxwaGExMDAKKzQxMjkgNDY4Yjg3ODRkYTQ4Yjc0YTA3ZWE4MGJiNjAxNWM4OWNjNjVlZjRjOSBhbHBoYTEwMAorNDEzMCBiZmNmZjhhZjk3NTE2ODdmZTkxYzFmNTJiYWE5OTMxN2RlODdiZDg2IGFscGhhMTAwCis0MTMxIGY4NTQwYThjZjVkNzk0NjQ1YjRiNThiZTViNDA1ODc4ZDQyMWNjMzUgYWxwaGExMDAKKzQxMzIgYTI0MDNmZTJjODg1ODA1NWY2NTFhNzkxOTAwODI4MDQ4YTFmNzk0MCBhbHBoYTEwMAorNDEzMyAyYjA3ZDkyNWMwOWQ0MWVlZGQxYmY3ZjI4NGNiZDhhZmE4M2ZjZmFhIGFscGhhMTAwCis0MTM0IGRmMjIwNGU0N2I2NWY3NWEwNWVlMjFkMmU1ODJlMWFjYWIyMzYzYjUgYWxwaGExMDAKKzQxMzUgNzdjOTQ5MzAxZGIzNzQ5MDRiZjY1Yjc1ZTE1NThlOGJiZjEwYmViMiBhbHBoYTEwMAorNDEzNiA3ODc0NzU2MTBiMDJlMzFkYzU1NzBhMTMyZDBhNzdhM2NjNjEzN2I3IGxlZ2FjeS10cnVuaworNDEzNiBiNzA3MmVjN2Q2NTIzN2FjZTQ3MWFkM2ZiMzgyMTExNGM1YzQ3YWVjIGFscGhhMTAwCis0MTM3IDdiMWM0OWE3ZDM3NWVhMDk1ZjViNjg3MGFjYTIxNGQyYjE2MjA5MzcgYWxwaGExMDAKKzQxMzggZGEyYWZjMDI5OGE3MGZjZTdkM2MxOTY4YWE0MDYyMjljMmU2NDViNSBhbHBoYTEwMAorNDEzOSA5ZGE0OTQyMzg3NzNjOTE2ZTI1YTZlMzE1ZmQ2ZmJkOWVmMWY0YTIyIGFscGhhMTAwCis0MTQwIGZiNWJiOWU3Y2Q3YTgxOWMxZDRlMmFhODUzNGRkOGEyZDY4NTM0NjkgbGVnYWN5LXRydW5rCis0MTQwIGViZTg2ODFjZjVmZWFmMWE0ZGQ5ODAwNzRlMGI0MDIwNmMwODkxOTAgYWxwaGExMDAKKzQxNDEgODc5ZThkMDRlNTg5Njc3ZmM2NDA5NWQwMDczMmQ2ZWUxNzg0NzhkYyBhbHBoYTEwMAorNDE0MiBlYjExYTA5OGI3ZmYyY2NkZTgzOWVhNzYwMTBhMWM3MzU2ZTVkNzM3IGFscGhhMTAwCis0MTQzIDllN2QyMDZhNDkyMjE2NmEyMTlhYjU5ZDQyMzliNTJkNjMxOTllMzQgYWxwaGExMDAKKzQxNDQgOTNkZjgzMDIyYmU4NzhjMTEwNzZhODYwODhiOGMyMGUwMTc1MzRlZSBsZWdhY3ktdHJ1bmsKKzQxNDUgNzdiYmU1OGFmZWFiNTI1MzJiYWExNzBlZjU5YzQzNjg5MzZmOWZhNiBhbHBoYTEwMAorNDE0NiAwMTVhZjFjNDc3MjY0MjdmZWZiYTZhYzA0Y2Q2ZTRiNTc4ZTVkNjQyIGxlZ2FjeS10cnVuaworNDE0NyAxOTAxZTA4MDg2ZjlmZDY0ZTcwZjFlMTJiOTI3NjQwY2I3NjZkZWJkIGFscGhhMTAwCis0MTQ4IGYxYjA0MGJjYTNlMTJlYWQ0YmU1OWNlYzQ4MDU4ZTljYjc1NGQ1ZTUgbGVnYWN5LXRydW5rCis0MTQ5IDBmYjNhYTVjYTRjMDJlY2UxMDFjM2JkMGNlZDU4NGRlNGJiZTk5YmYgbGVnYWN5LXRydW5rCis0MTUwIGJhOTU3YWE0MjI0MWE5Y2U5MGI1ODc3NTc3OTkwNDdiNzE2ZTU2ZDEgbGVnYWN5LXRydW5rCis0MTUxIDIyMjgwMmYwZDk3ODI5NTQ1ZjQxMGQ3NTAxZmFlNmU0M2JmZjRjZTUgbGVnYWN5LXRydW5rCis0MTUyIDRiYmEzYzkwN2ZmYWU0NzVjYTBiMjM1MWRiMzVkZTMxZDkwZjkzYzUgbGVnYWN5LXRydW5rCis0MTUzIDE5MmQ4NjliZWI5NzM2YTE4MTc2OTA3NDM2YTA1NGI5MGY0OThmOWIgbGVnYWN5LXRydW5rCis0MTU0IDZmODFiMTNmZDZhYzA4ZDQyZTYxODhlZmJiOWIzNjRmYWZkNTRmZmEgbGVnYWN5LXRydW5rCis0MTU1IGRlMmRjMWJjNGJhZTFjYzNjOGM5ZTkzODM3MGRmN2M0NzczMzRlNjEgbGVnYWN5LXRydW5rCis0MTU2IDM3NWI4Yjg2MzEyNmZhZWRmZThjNjA5YjA5Y2IxZTc0YzFhYTRlMTEgbGVnYWN5LXRydW5rCis0MTU3IDU2NTZmODg3ZmZmMzdlZmQ5MzllODdmNmEzYWI1ZDk4ODczZTYxMTUgbGVnYWN5LXRydW5rCis0MTU4IDM2NmEwMjkyYjYxNDJlNjQ1MGRjMzVlYmE2Y2U3YzViMmE3MDM5MTEgbGVnYWN5LXRydW5rCis0MTU5IDJlZjlkNTBhYjY1NGJhNTAwM2JlNDg4YjllODI5NWIwODMxYzMwYTMgbGVnYWN5LXRydW5rCis0MTYwIGJiNTY2ZDI4Y2FhMGQzYWZlOTFiZTY2OGUxNTlmMWNiM2Q5NjhiYWMgbGVnYWN5LXRydW5rCis0MTYxIDU4NDBlNTUzZWI4ZDg5ZmM3NTlkZTMyNjBiZDFiYjlkNTFmZjlmNGQgYWxwaGExMDAKKzQxNjIgZGIwZWFlZjQyY2I5NGU5MjE5YWU4OTZhNzg3NDNhYjg5NTZiMWE5ZCBsZWdhY3ktdHJ1bmsKKzQxNjMgOTkyOGQzMzM4MjFkZTBiYmI4YjhhNTRjMTFhMTFkZDU2ZjM0N2ZmNiBsZWdhY3ktdHJ1bmsKKzQxNjQgNTA0YmZhNTliOTU0ZWY5N2VjMWY0NmNiODIxYmNjNGJhMTUyOWRiNyBsZWdhY3ktdHJ1bmsKKzQxNjUgYmE5Yjc1NWUxN2ZlMGIyZGQyMDYyN2EwNzBiYWNhZDI5YTkwNzYxZCBsZWdhY3ktdHJ1bmsKKzQxNjYgMGQ2MTMzYWJiNmU1ZmNiZjg4M2Y4YTBiYWMxNjkxODRkNzJhODY3OCBsZWdhY3ktdHJ1bmsKKzQxNjcgYTE2MDFmYzJiM2U0NDE0YmEzMjhhMGJlMzMzNzU3ZGQ1YzJhMjZhYSBsZWdhY3ktdHJ1bmsKKzQxNjggMmY5YmEyZWJjYjEwNzNiZmUxN2NiN2U3NDBlNGVhNmEwMjdlODMzMCBsZWdhY3ktdHJ1bmsKKzQxNjkgNDIxMGIwZGVmM2Q3ODE1MDUzYTcxYmEyMWNjYTc3NjdiYWQ5NjY2OSBsZWdhY3ktdHJ1bmsKKzQxNzAgMWRkMzExNTM3MDlkZDVjNjI3OGY2ZWJiYWJjZjQyZjEwZjA2NDM1ZSBsZWdhY3ktdHJ1bmsKKzQxNzEgNDcwYTUxNTQ1ZDZjNGRjZWNjOGExMjVmN2VmYWZlMzBkYjk0YzdhYiBsZWdhY3ktdHJ1bmsKKzQxNzIgZTVhOGY2NDc5MjE2OTFkOWUyODcxMTQwNjM0ZmIwMDYwMWYxNDNiNSBsZWdhY3ktdHJ1bmsKKzQxNzMgZTE2NzY5Y2Q3YTkwMWVkNzQzZmQzMmY4Mjc3OTUwYmZlMWQ2MDNkNCBsZWdhY3ktdHJ1bmsKKzQxNzQgY2RmNDRjMTRjMjcwODkwY2IwZDc1NDBkZjk2MjlhNTRkY2U2NTc4MiBsZWdhY3ktdHJ1bmsKKzQxNzUgZTgwYzcxMzlmNTMzZTRlMzlhYjE0ZWZhMzgwZDVjZmE3NGZkYmMxNyBsZWdhY3ktdHJ1bmsKKzQxNzYgNmIwZjBlZjJjMTMyYzc1OTcxOTZmNTY1ZWM0NDRkM2Y4OGM2MWI0MiBsZWdhY3ktdHJ1bmsKKzQxNzcgYmQxZDBiYTQwZjkwY2U0MjZiNTE1NmJiN2FkM2Q4YTY5NmU0ZTIxMiBsZWdhY3ktdHJ1bmsKKzQxNzggN2YyMGY0YjkzMzVmYTA3ODY1MzQzYzFiYzJjODI3YmJiZGY5MjhhMCBsZWdhY3ktdHJ1bmsKKzQxNzkgZTg2NTFkMGU0YTNjNzE4NjM1ZTQ0MDExMGNkMTIzZTZjOGRiZDUwNSBsZWdhY3ktdHJ1bmsKKzQxODAgNTgxZmU2YmZjOTAyNGEyZWEwNTQ3NzRjZDFhMDliNjU3YmNhNmQ5NCBsZWdhY3ktdHJ1bmsKKzQxODEgYWZjNTc0MDY0ZTYyY2FlODI5NDg2ZDc3OGY2MWIzNmNmYWFiNzcyOSBsZWdhY3ktdHJ1bmsKKzQxODIgMTc1MDBjZjk1MzhmMWE5ZmVhZjY4NzJlZDYyMGU0OTZhZDhlYTRlMyBsZWdhY3ktdHJ1bmsKKzQxODMgMjU0MzI2ZjI0MTVmNDZiZDAyYTI1NzlhMWVhN2Q1MDg0ODQ3MWZkNiBsZWdhY3ktdHJ1bmsKKzQxODQgODZlZDUzODQ0YjA3Y2Y2NDdiMmQ3NGU0ZjIzM2FkZmNmMWJlYjFiMCBsZWdhY3ktdHJ1bmsKKzQxODQgOTA3ZDllN2JmNGI1ODlmYzJmMDJhOWI5MDBjNThmNDFjZTU1NGQ4NSBhbHBoYTEwMAorNDE4NSA5NjAwZDNkNWNjZTdiZGQ5NDMwOTI3NzQ3ZGU2ZDkzYjhkY2M3NmM1IGFscGhhMTAwCis0MTg2IGVlMmY4OGE0ZjllMmJjZTYzOWZiZGMyNWJkOGRjOGFkOWQ4OWY1ZjAgbGVnYWN5LXRydW5rCis0MTg2IDI4NWZlODk3OTk3OTk1NzY1NWU3NmRjMDJiZGIwMDQwOGI4YmE2NGUgYWxwaGExMDAKKzQxODcgNDU4ZDhmM2VmMzA3NTgyN2UxZmZlNGJlNDI4NWI0M2FhOTIwOWUwNyBsZWdhY3ktdHJ1bmsKKzQxODggMjljNzg1MTZlZTMzMzNjMDk1YmU4ZmJkZTJiMmI5OWVkNTdhZWI2ZiBhbHBoYTEwMAorNDE4OSA3ODMxZmZkYjc4N2I4M2YyZDA2ZmUxN2E5YjNjNmM1OTEzMjM5M2QxIGxlZ2FjeS10cnVuaworNDE4OSAyMWQ3ZjkzMjgxOWI0ZGE4ZWU3ZGFjOWJlY2JkZGJlZGNjNDAwZDY3IGFscGhhMTAwCis0MTkwIGU5NWIwNzAxYzhiNTRmMjRkZjhjOTBiODMwNzQzNTc1ZWZkN2JmNjIgbGVnYWN5LXRydW5rCis0MTkxIDk2MDA5ZGFlOWQ2MjYyNmFhNGQyMzdmZTVkZDQ1ZmU4MWVkN2IxMzQgbGVnYWN5LXRydW5rCis0MTkyIGJlZGUzOGM0YTlmNWVjZDQyMTA3MzhlOWRkOTU2NzljMjhmYTM3MTQgbGVnYWN5LXRydW5rCis0MTkzIGJjMTFjMWZmNmNhYzAzMWY5Mjc5ODZiMzRiMGE0YjhkOTJmNTliMzMgbGVnYWN5LXRydW5rCis0MTk0IDU5NTI2NGMyZjA2ZDRhNjA5NjYxNjJhZjVmNDExNDFjOTNmNzJiOGUgYWxwaGExMDAKKzQxOTUgNmMwZTExYjk0MDA5YTI1MjM5OTM4ZjUyM2E3MmVjZGU3NjM2YWQwMiBsZWdhY3ktdHJ1bmsKKzQxOTYgZDViNjdkMmVjN2VlMDMxMDBhNjY4Mzc0MGZkZDBmN2ZmNzEyMjYxZSBsZWdhY3ktdHJ1bmsKKzQxOTcgMzcyOTAzYjYzNzExYTliZGQ4YWZjMzc3MzRlZWM0NTgzMjlkMzU4ZSBhbHBoYTEwMAorNDE5OCAxOTQwODkyZDJmZTNhOGNmM2I3NGNjMTJkNjcwMzk4YzNlNDgwMzYzIGxlZ2FjeS10cnVuaworNDE5OSBlM2E5ZDgxZGYxODUzYzhiMzc1NzYyNmIxN2E4NWFhODNhY2I0Y2Y2IGFscGhhMTAwCis0MjAwIDNmN2RkYjhiYjJmNjNiNzNhYjA3MWZjYjdlMWY4YTYyMmM2NTIwNjMgbGVnYWN5LXRydW5rCis0MjAwIGU3YjVmZTc2ZTVlYWNhZTRjNjYyOGE4ZTNlMjlmZThjZDRjODE0ZWIgYWxwaGExMDAKKzQyMDEgODI4NmE2NjI1MDJiYjZiNWIwYWUyYjFiMmE2NWJhMWM4ZGU3YmFkYyBsZWdhY3ktdHJ1bmsKKzQyMDIgYmNlYjcyMGVlMzYyYjA5NDdlMGE4YzEyNWEzYTcxZjhjNDZkNzZiYyBsZWdhY3ktdHJ1bmsKKzQyMDMgMGI2NDU3MjY5NTdlMjMyOWI5YzgzYWYwOGRhNzE0YmVkYmFkNmFjMCBsZWdhY3ktdHJ1bmsKKzQyMDMgNDYzOWMzYWQ4MzRiN2NjMDgxZDgwZDhmZmRmZmVmMGVlNTNmN2JhZiBhbHBoYTEwMAorNDIwNCBlYzI1YWFkNDM3MjRmMDU1YTNmODI2ZTM5ZGY3MjU1ZGE5MTRjZGZhIGxlZ2FjeS10cnVuaworNDIwNSBjYmI2MmVlODg1NGE2NDNlYzk2NjlmZTNjNjU3ZWFkYzYxZTZhMDY5IGxlZ2FjeS10cnVuaworNDIwNiBiNTQ2OGQ4ODZjYjU0YTIwMzRiZDA2NTY0NmU0YmQ4ZGU1MDdkNGU1IGxlZ2FjeS10cnVuaworNDIwNyBiYmU5ZWE1NTgyNjFlZTZkZWJkYTNmODAyMTk0NDNlZmMzMDNjZGZhIGxlZ2FjeS10cnVuaworNDIwOCA3OGEzNjU0MDZjNGNlYmY4NWRkYzdiMDAxYzZjYTM0NGI3OTdhYWUxIGxlZ2FjeS10cnVuaworNDIwOSBmNTMzNzkxYWNjNzc5N2VmMzNhNmZhZmZmZDNjMGViMjhlMzU5ZGY4IGxlZ2FjeS10cnVuaworNDIxMCA2OTdlZTg5YWRkZmUxZTY1NWM3MmRhYWE2MTBlZWJlNDMxM2MxYTA2IGxlZ2FjeS10cnVuaworNDIxMSBiOTk1NzhiODc4Y2U2YzRjNmZiZTExMGFlNDA0YWQ0MTFmNTFjMzkxIGxlZ2FjeS10cnVuaworNDIxMiA0ZDQyMWY5ZTgzNzNjYzBhMzEwNGUxYmViN2Q2NmI5ZjJkMTk4NTAzIGxlZ2FjeS10cnVuaworNDIxMyA0OGU2YjMxOWYzZTQ4MGQ5OWJmNDAzNWViYTg3NmVmZTA3ZjlmNDJkIGxlZ2FjeS10cnVuaworNDIxNCA3YTJlNzZlY2I5ZWY5MWRmNzNiMGIzZDIxMzkzN2VmNjE3NjYwZmZiIGxlZ2FjeS10cnVuaworNDIxNSA5YmMzZGJmMDg3MWQyNmUwNTFhZjI1NmE2NGU0NWYzZWE5NzUyMDM4IGxlZ2FjeS10cnVuaworNDIxNiBkMzUzNWQwNjI2YjQ2ODAyYjc0ODViZGU4ZmU2MzMxYWVhYjA5YjVmIGxlZ2FjeS10cnVuaworNDIxNyA5NDJjNGQwOTRhMGM0MTljNTVhNDNmNDliZjNiYTUyZGNlNTFkYThmIGxlZ2FjeS10cnVuaworNDIxOCBhMDQ2ODlmOTk4M2U3YWQ3YjE2ZmU2MmZlZGViZDU4NTEyNzc2NWY4IGxlZ2FjeS10cnVuaworNDIxOSA2ZTkxMzA0NjAyODg2N2EwZWViNDlkNjI3NzRhYmNjODczZGM5OGE4IGxlZ2FjeS10cnVuaworNDIyMCA5MDc2MDUzMjBhNWZkN2E0YTUyYjk3NThlOTdmZjcwODk3ODQ5N2Q5IGxlZ2FjeS10cnVuaworNDIyMSA2ODgxMmI3NjNlMGUyYmFkMmI3OTRjNzMzNmYxNzZkMjczZGI0MThkIGxlZ2FjeS10cnVuaworNDIyMiA2Y2I3NTljNmQxNzkwZDA2ZTJjMWRhODNjODkwNDE2Y2VkZDliMzhjIGxlZ2FjeS10cnVuaworNDIyMyBiMGRjYTI5NzJiMmIxOGQ5M2U2YWQ4ZGYwY2U1NzYzYzFmYTg1NzE1IGxlZ2FjeS10cnVuaworNDIyNCA1MWMyZTVhOWYzOWNkMTkxZjJjNGRiMGZlZWMyNjQ4YjBlZTcyNjM1IGxlZ2FjeS10cnVuaworNDIyNSA3YjNhNzY3OTI0YTFhOWUzMmI1NTA3MWYxNTk3NmIyZDA1Njk4ZGYzIGxlZ2FjeS10cnVuaworNDIyNiBkZjdhYTU0YWRjZDI5YmMwMWI0NTkxZWI0MjNlNDFhYjljYmM3MGIxIGxlZ2FjeS10cnVuaworNDIyNyA5ZDM2MmU1ZTRlNzg5OTBmYWFkOGI1OTE3NGY2YmQ3OGMwNTE4YzhjIGxlZ2FjeS10cnVuaworNDIyOCAxN2M4MGE5NTI5MTQzOTM2ZTkzYzMzOTgzMTE0ODZlMjkzNjUxM2FiIGxlZ2FjeS10cnVuaworNDIyOSA1MjU3YWY4MGUxNjEwODdjNjk1NzBlYzIzNTdjMGJiZDYzNDhlNTY2IGxlZ2FjeS10cnVuaworNDIzMCA3ZTAwMWM0ODEwYmJjNzYyYjBmMDVhNzc5Yjk2NzcxNGRhZGQwY2Y5IGxlZ2FjeS10cnVuaworNDIzMSBmZmRmYWYxYjI0ZDU0MGNjZDI5NjlmMzU5NjVjNDU2MzhkMzQ1MTIyIGxlZ2FjeS10cnVuaworNDIzMiA5OGEyMGE0MGY2MTNiMTNkZmE3YTU0YWU0MGMzMDlmNWQyM2YzZGU2IGxlZ2FjeS10cnVuaworNDIzMyA3NmNjODU4ZTMzOTE1ODBkMTU1YTU5MTdkYTM5MzBlMmMzMTM2Y2UzIGxlZ2FjeS10cnVuaworNDIzNCA5MmRmMzBkZjVkNzc5ZTgyMmMwMGNkYWMyYjQ1Njc0ZTkwNzUzM2E1IGxlZ2FjeS10cnVuaworNDIzNSAyMDg5NzgxNmE0YjZjOGRkNjQxOGE2NGViOWVhNTRhMGFiMGQ4NjJkIGxlZ2FjeS10cnVuaworNDIzNiAxYzI4ZjE5MzRhMTFlZWE0YjY4MjhkNWQzZThlYTk2NzUyZTE2NjRhIGxlZ2FjeS10cnVuaworNDIzNyBhM2YxOTllOGJhYzZmMDAzMjE0YjAwZDYwY2RjYmIwZDIxZWE4MWE3IGxlZ2FjeS10cnVuaworNDIzOCBkZDE2N2JmZDdhMDg2YTllZTY2MWFmYWIwODA1YTQzZjQyZWM4N2MyIGxlZ2FjeS10cnVuaworNDIzOSA3NzA3Yjk3MDhmNmNjN2MzZjllYmQ3ZDQ2OTJiYTA2YTMwMzY0YjE5IGxlZ2FjeS10cnVuaworNDI0MCBjYjg0ZGQ1MWMyYWEzMTBlNWJhZTcxZDlkYjRlNzQxY2EwZWU1YmZmIGxlZ2FjeS10cnVuaworNDI0MSA1NmE5ODZlNDlmNTY3Y2Q2ODQ4Nzg0YmM1YjY0NTBmMDBlZWUyYzIyIGxlZ2FjeS10cnVuaworNDI0MiA0M2FlN2ZjZDc4MzUyYTJmN2NlMjk1YWFkYTc0ZGVlZDE4NTE3NTM4IGxlZ2FjeS10cnVuaworNDI0MyAzNjIxNGM4NjExNDRkZDYyYTIwYWQ0ZDNiMjdiOWM4MjkzZjYwNDBmIGxlZ2FjeS10cnVuaworNDI0NCA1MzVhY2E2ZmY3ZTkxMzQ3MThhMDJiNGY0YWZiMjJiYmU5NzYzYjE1IGxlZ2FjeS10cnVuaworNDI0NSBhNTg0YjRiYmJjNTkzNGMxYWU0MWVkNTI4YWU3OTJjMTA0ZGY1MmE1IGxlZ2FjeS10cnVuaworNDI0NiA2Njg1MDQ4NDNkMGY0MTg5Yzg0NTM4MmQwYmQ0YmNkYzU3ODMyYjRiIGxlZ2FjeS10cnVuaworNDI0NyA5YjUzMGJiNTQ2NDJiYTE4NmJiNTc0YjU4OTYwMTJiMjAwOTM3NGRlIGxlZ2FjeS10cnVuaworNDI0OCBmYThiYmQwOWYyZTZiNmM2ZTk3NDcxOTdhMjgzOGNlODc3YzQ0NmExIGxlZ2FjeS10cnVuaworNDI0OSBiNzExYzkwMTAyMzI5MzI2OWIxZGUxNjc4MWZiYmUwNWU3ODlhMDBkIGxlZ2FjeS10cnVuaworNDI1MCBiMTY3ZTMzNTA0OTEyMGVjN2IwZmM1ZTY4NzQ0YzVlNzZmNjBhODRhIGxlZ2FjeS10cnVuaworNDI1MSBmMDdjNGZmMGY3OTQ2ODY3MjBmMGUxOWJlNzM1NWY0ZmI0M2U4OTFlIGxlZ2FjeS10cnVuaworNDI1MiA2MDY2MDM0MWVlMTA3MWI0MGZlZjkzNWEzYzE2NjEwZTU2ZTgyZWQ5IGxlZ2FjeS10cnVuaworNDI1MyBhZDNmMWQzNjJjMTQwNmNmYzAyMmE0MGE3MGVhOTgwN2ViM2E2MGNhIGxlZ2FjeS10cnVuaworNDI1NCAxNDhlZTJhYTYzZTZkZWM1OTFhYzc0NTIwZmFlYzFkMWIxMmNlN2Q5IGxlZ2FjeS10cnVuaworNDI1NSBiODQwMjk2YjllMDU4ZDI3NGE4OTAwNDRkOGNhZDUzY2RlZTA3MjU1IGxlZ2FjeS10cnVuaworNDI1NiBmYWZhNWRjODEwMGY4NDliZmU3MWU0ZjA2ODIwZjhiMzU0OTkyZjA0IGxlZ2FjeS10cnVuaworNDI1NyBiNDA4ZDZhNjM4MTk1MjM5ZTYyN2U3YTA1ODE4ZWRiNDg2ZDdmN2RhIGxlZ2FjeS10cnVuaworNDI1OCA1YjkyYTA4MzkzNGRiZmIzOTQ3N2Y3NGMwNjRjNTYwY2M1MTdlMDE0IGxlZ2FjeS10cnVuaworNDI1OSBmMmNlMzE5MWZjOWRlMzhiNDYxYmY1YmI0NGU5M2M4ZjJhMmE2YWU1IGxlZ2FjeS10cnVuaworNDI2MCA3ODI1MDk4MTNkNTcyYjg2ZjkwY2M0Y2QyN2NiYTVjMDc5M2VjNGViIGxlZ2FjeS10cnVuaworNDI2MSA2Y2ZkNDNkNWMwNzQ2YjBlYzgwZTM0ZTRkYTU5ZjI4ZTc3MGM3MWFjIGxlZ2FjeS10cnVuaworNDI2MiBkOGQ5NDFmYWY1MTEwYjIzMTZkMjM3ZjkzODFhMjRhY2ZmYzNkOGM4IGxlZ2FjeS10cnVuaworNDI2MyBkODkyYWM0YjRmYjk5ZTE0OTFhMjcwNTIyNDEwZjBjNTZiZTliNzc1IGxlZ2FjeS10cnVuaworNDI2NCBlYTViMTNkMTFhMTMwNWJiNDA0ZWQwY2E4YTI4YzFkZjgyY2NlY2MwIGxlZ2FjeS10cnVuaworNDI2NSAyZDViMzZhNDM4YWI5Y2YzODU4YjdkNzBiZDU5NjIyNDllZmNhMzgxIGxlZ2FjeS10cnVuaworNDI2NiBjNDdkNTI2YTk0ZDkyZTM4ZTY2NmU4Y2YzZTIxMzI2NzE1YzA0MTgwIGxlZ2FjeS10cnVuaworNDI2NyAwNDA2YTIwOGNhNWQzYzEzN2I5NWQ2ZGJiYTZlYzNlY2NmNDJhZjQ4IGxlZ2FjeS10cnVuaworNDI2OCA2MzUzZmUyNWNkY2U0YmU1M2M5NTc4ZWZjMDZjZGFmNWE1MmNmODdlIGxlZ2FjeS10cnVuaworNDI2OSAzYjQ3MDMxNzNjYWY4NjY0ZmUxNGYwMDZkYTJlOWU1MmU5NDRkYTk4IGxlZ2FjeS10cnVuaworNDI3MCAyMGUxZDI5NmZkY2M4NmJjZWI4MmQ2Mzg3ZjE2NDA5NDQzMDgxM2I2IGxlZ2FjeS10cnVuaworNDI3MSBhNzEwZmIwMDFhM2ZiNDUxM2MyMWZiMTM0Yzg4MDRiNzY0NjEyNDk1IGxlZ2FjeS10cnVuaworNDI3MiBhMjZiMzFlMTU5YmVjNDFkNzhiOTZmZjNmNWJhN2YwMjRmMzkwMjA3IGxlZ2FjeS10cnVuaworNDI3MyBjZTU0NDdkYjhmNTM3ZTJhMDRiYmEzNTBlZjQ5ZTNlNDU0NDUwZjVhIGxlZ2FjeS10cnVuaworNDI3NCA0MDU5NGY4MGFiM2MyZjI4OWUyMDlmNjk1NGY5MGU0YjFiZWU3ZWUxIGxlZ2FjeS10cnVuaworNDI3NSA3NmQwZjJiM2I5ZWU3MTE3OWUwYWNkNTIxNDkwNDExZmJhZTJlOTYxIGxlZ2FjeS10cnVuaworNDI3NiBhNmVmMmM5N2M3NzYxZWQyMTI3MGJhN2FjNWRlZTNhZWY2M2UxMTM5IGxlZ2FjeS10cnVuaworNDI3NyBiMTFhMDY2OGIxODFjY2JiNDU2ZGI3ODQ4MjJiOThiZDgzNGM5MjcxIGxlZ2FjeS10cnVuaworNDI3OCA3OTMxZGUwMWU2OTM3ZGU1YTRkMzMxZDQzNTU1YjBmMmIzZTYyN2EwIGxlZ2FjeS10cnVuaworNDI3OSBjZTg5N2U3NTJjYTRhYzU1MTUzMWEyMDIyZDI5ZjcxNDAzOGQ0OWQ5IGxlZ2FjeS10cnVuaworNDI4MCBmNWYzZGRmZWMzYzdiMTVjYzlkY2NiYWYxMWExYzUxN2U5NzZlYjEzIGxlZ2FjeS10cnVuaworNDI4MSBiNDY0ZTFkMGIyZmI0MzRjOGY2Yjg4YjI0MjU4YzIzNmZmYWE3NTYyIGxlZ2FjeS10cnVuaworNDI4MiBjMWIwZDdlZWQ5ZmRmYWM2YzBiNGQwOTc1N2QyNTgyZDcxYjFiOGY0IGxlZ2FjeS10cnVuaworNDI4MyBjNDUzNmQ4YWY3YjVkNGU4MDVmOWY1ZGZhZDA2OTA4NjFlZDIwOGMxIGxlZ2FjeS10cnVuaworNDI4NCAyMTZiNzU1NTE1ZTY1ZDAxZWQyNDE3Y2VhOWU3MGFjNGE2OGM5ZGRiIGxlZ2FjeS10cnVuaworNDI4NSA3OWU0MjA4MDVjNjcyMjdiMzg5NDBkYjU5NDAxYzQyMTg1ZTBhNWM4IGxlZ2FjeS10cnVuaworNDI4NiAzOWE0YzE1YWNiMzJkYmUyMTBjZThiYTFmMDNmY2I1OGE1MWZiOTcxIGxlZ2FjeS10cnVuaworNDI4NyBmOGJhYWI1YzAxNjUyODUwNWQ4MTdhNmE5N2RmYjdhZjk0ODRlNmU4IGxlZ2FjeS10cnVuaworNDI4OCBkNzk5ODg5YzAxZTM1YjkzZTg4NGQ5NzJjNmVhNzI2MWJmNzQxNDY2IGxlZ2FjeS10cnVuaworNDI4OSAxMjAzZjA2Mjk1Mjc1MzFjODBiNTk3NDE5NjY4NmRmYWE4MGViOGYyIGxlZ2FjeS10cnVuaworNDI5MCA4NzM2NGQ5ZTM0NDRlOTVmNDdhNDA3YTgyNTQwNjU2MjcxOWQzOGQ2IGxlZ2FjeS10cnVuaworNDI5MSA1ZjZhY2QxYWI1YzUwM2ZkM2ZlOTA4YjEwNzU0NWNjOGMyYzhiOTEyIGxlZ2FjeS10cnVuaworNDI5MiAxZjRhODZkYmNkNzkwNjQxN2U5YTgwMzQxMzk4MGU4ZjQ4MTJlZjE1IGxlZ2FjeS10cnVuaworNDI5MyBiZmQxMTYyMGEyZDgxZTgzMDRmNDhmNjU1MjJiYjcyOTQ4OTAxMDRlIGxlZ2FjeS10cnVuaworNDI5NCAyM2YwM2VmMDAzNjFiYzc3MTc3OTViMzFkZGM5MzE1MGE1NDQyYjU1IGxlZ2FjeS10cnVuaworNDI5NSA2NWNjNzI3ZjE0MzZjMDc5NzI3ZmZkZDcwOTE2Y2I0NTdiNWRhOGE4IGxlZ2FjeS10cnVuaworNDI5NiA4Mjk0YmJkOTQ1MzUwZDQxZDRlYWUzNmU1MTI1ODYzZGIzNDM2ZmI2IGxlZ2FjeS10cnVuaworNDI5NyBkMWU2YzlhNjRhNTYzODQxZjYwMTc3YWM5MDc3MzlmOTUzZjE1NjMwIGxlZ2FjeS10cnVuaworNDI5OCAwOTVjMWNjN2YyYmJiMjJmZjExNmIwMzM3YWMzYmQyZDJmZTM3Y2Q2IGxlZ2FjeS10cnVuaworNDI5OSA1MjQzZmIxODdkMzZjNjBiMDEyMTMzYTFhNWM2NjBkN2EzNWExMjY0IGxlZ2FjeS10cnVuaworNDMwMCAwZDMxODQ3NWY5ZTM3MTk4YjVhMzIwYzhlMTBlNjlhNzUyMjNiMTRjIGxlZ2FjeS10cnVuaworNDMwMSBiNzI0NTk5NDAxZmY3M2ZiYjhkNTk1YjliM2Q2MzA5MzYzNGI0OTk0IGxlZ2FjeS10cnVuaworNDMwMiA2ZTIzYWY2NDViNDBiZGQ4ZTMxZWEwY2M0YzcyZDMwZWY3NzhmMzE1IGxlZ2FjeS10cnVuaworNDMwMyAxZmM0ZGI3OTE0NmFlNWVmNTc3YzA2ZmJhNWNkZjdjNThkMmVlNDdlIGxlZ2FjeS10cnVuaworNDMwNCAxNDUzOTFkZjI2NTc5ZTFjNmZjNDQxMDgwOGVhNmZiOTE0OTQ1ZTU3IGxlZ2FjeS10cnVuaworNDMwNSAwOWRlNzIzYjI1OTY4MjY2NWM0NjYwMjJjMDIyMDJjMWZjMWZlMWFmIGxlZ2FjeS10cnVuaworNDMwNiA5ZDRhZGQ0MmVlMjJmZjQyODkzZWFmMzc3MDI4MDhhMjc1MTU3ZjcxIGxlZ2FjeS10cnVuaworNDMwNyAyNzg2YWNiYTZjZWMxY2ZiOWE1OTcxMWY0Y2U2MTNkMDI1MzZjY2E5IGxlZ2FjeS10cnVuaworNDMwOCA5ZGJkYjgzZDQxNzhmMzkyNzU4ZWM4YWY4ZDQzYmMxM2MyNDRmMzQxIGxlZ2FjeS10cnVuaworNDMwOSAxODIyNDY1YTM1YjgwY2ZjZTQyODM4MmU3NTdhYmI0YjI3NzQyNDYzIGxlZ2FjeS10cnVuaworNDMxMCBlMTVmOTc2MWNiMDM1YmNiNjFkNjI0ZmNlYWE1MzE5ZGE1MGVmODNmIGxlZ2FjeS10cnVuaworNDMxMSAwYjA4MTk2ZTlmZjYxNmVjMzc0NjNkZjMzNjIyMTM3Nzc4ZDAzYjIyIGxlZ2FjeS10cnVuaworNDMxMiA1NGZkYzlhOTVmNDg5MDkzZmY1ZWUzMDg4OWI5NmVmNjczNmU2ODcyIGxlZ2FjeS10cnVuaworNDMxMyA3ODg5OGIwNGE2NWJlZjFlNjIxZmZmOTUxNzUzZjU3MzA0OTU3NGQ3IGxlZ2FjeS10cnVuaworNDMxNCBkNDA1ZTNlOGZmZDM0OWFlNzYzZWI3YjhjZmRjZjRmYjRhZDI1ZDBmIGxlZ2FjeS10cnVuaworNDMxNSBlZjA5NDY1NjA2MjBhY2I1ODc5ODkyZmZhNjFkNGI1MTMzZDI4ZDg4IGxlZ2FjeS10cnVuaworNDMxNiA4NTVjZWZiYjI3MTg2MzEyOWFkMWVkOTlhMDQ0ZmM4ZjQyYTM4ZjcyIGxlZ2FjeS10cnVuaworNDMxNyBhYWYxZTA1ZTY4NDJkOGVkODM1NTk4ZTVjN2I1OWM4Mjk0MmQ2OWE3IGxlZ2FjeS10cnVuaworNDMxOCAyMGU2MDcxNDc4OGM1ZGE3YTc3OTkyZjdkMjU5ZTNiOGUzMzk4OTU1IGxlZ2FjeS10cnVuaworNDMxOSA5YzVkMzMzZDMzMDBlOTMyNDBlMTVmZTIzYTUwMjY4NmRhNjdjMDQ4IGxlZ2FjeS10cnVuaworNDMyMCA3NThjMTM3NGYzMDM0ODJmY2ZjNmYzZmRiM2IzNDEwMDdlYTI3ZGUwIGxlZ2FjeS10cnVuaworNDMyMSA2M2FkMjg5Mzk3ODFhYThkNzU3OWUwODZhY2MyZDU3NjU2NmFjODQ5IGxlZ2FjeS10cnVuaworNDMyMiAyY2VkZTYxZTliMWJhNGViOGJhNDg5ZmI1NDAxZDMyYzMwMjU2NTkyIGxlZ2FjeS10cnVuaworNDMyMyA2MTczOGVkNmNjMTBjNDI5NTJiYTkyZmUxMjE3NGMzYTYzZDRiZGZiIGxlZ2FjeS10cnVuaworNDMyNCAxMGExMjQ3M2VlOTMxY2FkMjRjNzNkNWZmNzI3ZjE0NGUxZGY1NjkwIGxlZ2FjeS10cnVuaworNDMyNSAzMmU2YzNhNjcxZDAwZjdmMGIxNmFkOWUxMTNkNDE3MTNkZjAzNmYwIGxlZ2FjeS10cnVuaworNDMyNiA5MDgxYmI3YWNkNTI4YWU5MzRjNTgyYzI5ODAxNjNjNzFlY2IxNzA5IGxlZ2FjeS10cnVuaworNDMyNyAwNzRhYTI2MzgyNmI0NjY5ZDBlMjQ0ZWEyMDVkNDIzZTEyYmFlN2U5IGxlZ2FjeS10cnVuaworNDMyOCA4YzljYzA1NGM1ZWRjZTZkZWFlOGM0MWY3ZDczMmJkOTYxMjFmN2RkIGxlZ2FjeS10cnVuaworNDMyOSBjYzViZjZiZTgxYTVkMjZmODNkMjk2OGFiZDk2YTQ0MGIyOGZhMDBiIGxlZ2FjeS10cnVuaworNDMzMCAzMmQwMDVmYWY1ZmNkMGJlNzQwYTM1OTQzYTI5MzVmMjYwMDQ2NTJlIGxlZ2FjeS10cnVuaworNDMzMSAyN2Q0ZjFmOTM0NmM1NzQ3NzY3NDcyODI2ODZmMjNmODExZTM2YzE1IGxlZ2FjeS10cnVuaworNDMzMiA5MWJmYjI3NzE1NTRlODE3YWUwOTNlN2QxYzg1ZTI5ZjkzYjE3ZTZkIGxlZ2FjeS10cnVuaworNDMzMyAwNWZiOWRlYzJjOWNmMWM0ZjhlNmY0NWUwMWUyYmQ1YmNlNjc4ZDUxIGxlZ2FjeS10cnVuaworNDMzNCAzYTcwZTljMGQ5ZjUxMWE1N2FlNDRlZjA0ZTdiNDg0YzU1OTRiNjhmIGxlZ2FjeS10cnVuaworNDMzNSBmODRiNjRkZjA5YzNlNjI5NTVhZTllNmRhMTdjMTdmODQxMjNmYTRjIGxlZ2FjeS10cnVuaworNDMzNiA0MjE0YTc1ODNmMmJhODhiODBlNGNlYjIwMmIxMmYyYTNjYmI0NDE1IGxlZ2FjeS10cnVuaworNDMzNyBhZmJmMTE4NmM4OTc0YTBkZWJmNmJmN2IwNGNjZTJkYzU1OTExNzRmIGxlZ2FjeS10cnVuaworNDMzOCBkM2RlMmNhZDJjNjg0YzE2MDM1YTQ5ODcwZDM4MGRjODJmZDkwODljIGxlZ2FjeS10cnVuaworNDMzOSBhYzZhOWY5MGY2ZmQ0OGQ3YzI1NDA4ZGEwNjYwYWRkNjMwNTgzODY1IGxlZ2FjeS10cnVuaworNDM0MCBlN2M2YTE4MzgxZDllN2EzMDVjODQ4ODBjMWZjNDcxMmFjYTcyMjg5IGxlZ2FjeS10cnVuaworNDM0MSBiZTk1NmIxZWZiOTdjY2FhNzVlMWFhOTdiYzVkNzljMWUxZWRkYjRiIGxlZ2FjeS10cnVuaworNDM0MiA0ZTFjZWFlZTI5NjMyN2RlZmNlNGFiNDUwOTI4MzJjZTcwYmI3ZTlkIGxlZ2FjeS10cnVuaworNDM0MyBiN2RlNjc4NWM4YWM3ZDk3MjQyMDIyNDZhNDY5Yzc3NjNjMjM3M2FkIGxlZ2FjeS10cnVuaworNDM0NCAyNGFlN2FmNDBhMDk2MGRlY2RlMTY3ODNmNjM0MThkMmNkZmM3YWEyIGxlZ2FjeS10cnVuaworNDM0NSBlZWMwZGM1YWJhNjAxMWJhYmE1MDhmY2I1NjMxM2Q3ODYwMjI1MDg2IGxlZ2FjeS10cnVuaworNDM0NiBhYmE1MTYyMTI0NGU3YjAxMjM5OGFhYTM3NjZkN2JjMTZjYWE3Nzc0IGxlZ2FjeS10cnVuaworNDM0NyAyYzhiNGRmMjJiYzJmMDQ1YzExZDU2OWU5ZmQyOWEzNjQzOTdlMGI2IGxlZ2FjeS10cnVuaworNDM0OCBjMjM1MGM4N2JlM2ZjYzc5ZTk3NTFiZDcxOTE1ZDVkMTkwZDk3YjY5IGxlZ2FjeS10cnVuaworNDM0OSA2NTRhYTk2NGRjMjYzZjlkYmJlMDU4NDY1M2QyOWVlM2UzOGU1NjRhIGxlZ2FjeS10cnVuaworNDM1MCAzZmJkYTg3Njg4NTUyODYyY2JiNjlhMmI1Y2ZlMTg2YTM4YmU0OGYyIGxlZ2FjeS10cnVuaworNDM1MSAyMGYxN2I1YWNjYmY4MjAwYjg3MmE5MGNjMDIzNTA1NjE1ZWIzYTlmIGxlZ2FjeS10cnVuaworNDM1MiBhNjc3NmE3ODhmNzQ5YWUxZDk5YmE1MjQyMWY1NWM1YjZlMDg1NDQ1IGxlZ2FjeS10cnVuaworNDM1MyA1YmFmMTEzNWExM2QzZjVhNjMyYjdjNzAyYzAzZjNjMDViZTQ0YzY1IGxlZ2FjeS10cnVuaworNDM1NCAyNTllNjlhYTBmMTU5ODg3MzAwMWIwYTkwZDUyNDBiNWU4MWRlZDk4IGxlZ2FjeS10cnVuaworNDM1NSA1M2QxN2MwNGI0MmZiMGYzNDQ5YjRiODU2MmNkYmY4NTU2NzRjYTMwIGxlZ2FjeS10cnVuaworNDM1NyBlNDUwYmQ0MzYzMWE5ODQyODZlYjU0MDNkZTY5MWViZWRkNDJhN2FmIGxlZ2FjeS10cnVuaworNDM1OCA2MTA5MDY5ZDU2MTJmMDM4OGU0MDIwOGRkODgyZWQ1NDU3Y2Y4ZDNiIGxlZ2FjeS10cnVuaworNDM1OSA2MWMzYzFhMmZkYjQ0M2YyYWUxZTBlNjc3NjJmMWFlZjdiMTg1MjkzIGxlZ2FjeS10cnVuaworNDM2MCA5ZDk4MTJmMjc5OGI3M2E2NTBmYTFjYzEyMTE0MmY1MWRhZmNkNDZkIGxlZ2FjeS10cnVuaworNDM2MSBiZDk0MDY4ZjBmZDAzNzU0MGFjNTA0ZmU4MTc0MjMyY2E4ZjIzYzRkIGxlZ2FjeS10cnVuaworNDM2MiAwNDM3NzM4Mjc5YThkNjgwNzkzZmRkZjlkNWFiYWQxYWQ3MjIyM2NmIGxlZ2FjeS10cnVuaworNDM2MyAwYzIzMjE5NGE2NGYxMGM3MWM2MTdhNzJjNjlhNGM4ZGVkYWMxMTkyIGxlZ2FjeS10cnVuaworNDM2NCAzNTk0N2Y2MDUyOGVkMDE1N2UyMTUxNGY1NTQwMzhiZTI2ZGQwZTIwIGxlZ2FjeS10cnVuaworNDM2NSBhN2YyNjk2MTBlYzJkNzlmN2ZkNDlkNTQ4ZjQ2MjM4ODcyZDk2YmFmIGxlZ2FjeS10cnVuaworNDM2NiBhZGExOWFhYWY4YzBjOGU1MDcxYjU3YTRiYTY5NWRmNDMwOGI2ZmM4IGxlZ2FjeS10cnVuaworNDM2NyA4NjIzYWEzOTE1ZGI3MDJiMTAyY2M3NzJjYjMzNjZlYWMyOTcwMzQwIGxlZ2FjeS10cnVuaworNDM2OCA4OTM0MTIxMDEyOTY5ZjAzZDBlOGM3ZTJiMDQzMmVkZGQ4NWE5MWVlIGxlZ2FjeS10cnVuaworNDM2OSA4MDgxOGMxMDZlM2U2ZjQ4NzdhODRlNDI2YzA2MWM3YTdmYmI1MWIzIGxlZ2FjeS10cnVuaworNDM3MCBlMTI1ZjUwMjFlNjczZDE0NWUzZWNkOGM2ZGVjOThkM2Y2Yzg3YWY4IGxlZ2FjeS10cnVuaworNDM3MSAwMTRhMWZiOWM2NDYzNDI5YWM1OGFhNDdhNjM4ZDE2MmNmZjZiYjZhIGxlZ2FjeS10cnVuaworNDM3MiBmMzlkNDM3Mjg3NzI0ZTU2Mjc5NmFiNjUxMTUwZmY4MWQyMzBmNGM2IGxlZ2FjeS10cnVuaworNDM3MyBlMGFlNmY5NWJjZmI0MTljZTI3Mzg5ZjlmZjI5M2VhMmYyNDhhYTNiIGxlZ2FjeS10cnVuaworNDM3NCA1ZjMzY2E1MjE0NTIxMjU5ZTM1ZmViMDNhZjk1NmFlMGZlYTdkOTBhIGxlZ2FjeS10cnVuaworNDM3NSAyNzU5NTFiMDg2MDhjOWNjNGQ3YmVkYTQ3NDU5MzA2Y2VmZWI2NDAwIGxlZ2FjeS10cnVuaworNDM3NiAzODUwNzEzZjZhZWFlNjkwOGQ2NGZjYjM4MTU2Mjk2NjBkMWIxYWQxIGxlZ2FjeS10cnVuaworNDM3NyBjMTA4OGQwYmI1NjIzMDY2Y2U1MTFlMDg3MGEyMGUxN2Y3NTU0ODIxIGxlZ2FjeS10cnVuaworNDM3OCA1OGIwNDY3OTUwZDgyMjM2OGQwZWJiMDVhYzQwNTNjYjIyY2EwNjRkIGxlZ2FjeS10cnVuaworNDM3OSBhMWFiYTRkNDU4OTNiMGFkYTk2MjUzMzE2NjM3NTRhOGMwYjI4MGQwIGxlZ2FjeS10cnVuaworNDM4MCBlYTllODUzM2Q2YzMyYTkzZjBlNGEzMTgxOTFlZGM0MzI4NDc5NDNjIGxlZ2FjeS10cnVuaworNDM4MSBlNTZhZmQwM2NhN2ZjOTQ2MDZkMmRhZWI0MDRlMTgxYzRiNmE5OTNkIGxlZ2FjeS10cnVuaworNDM4MiBhOGI3ZWUwZTU3MmRhN2RlMDAwZTM0ZTM4YzdlZDRkNDhmMzBjZmJhIGxlZ2FjeS10cnVuaworNDM4MyBmMDdkNjZjMTYyY2JmZmI2MDNhY2MyZjgzODk5OWM5MTNmZjMwMzZmIGxlZ2FjeS10cnVuaworNDM4NCBmYWNhN2UzMjhiYTc0OWMxM2VmNTZjMDczNjE0MTYzM2Y1NjBjNWQ5IGxlZ2FjeS10cnVuaworNDM4NSBlM2ZmOWUyYTNlYjdhZjVmMTZmMGZlOGQzOTZhN2EzYzY3OTBiZWZkIGxlZ2FjeS10cnVuaworNDM4NiA1YmNhYWVkOTAyZjU1MGRhZjJlYjk4YWI2MDU1N2YyODQxNzZhOGZjIGxlZ2FjeS10cnVuaworNDM4NyAyMzQ4MTc2NTJkYjA2YzJkNGYxNTlhYTE3NWY2YTVlYjU2NzViYjFhIGxlZ2FjeS10cnVuaworNDM4OCBmM2FlN2MxN2FjMDg3ZDlhMDBmYjAxYzA4N2M5ZThmZjkyOGExYjZkIGxlZ2FjeS10cnVuaworNDM4OSBkOWEzZTMwYjJlNDczYzhjY2FiNjAwNWI2YjMzMzI3NzdhODgwNzQzIGxlZ2FjeS10cnVuaworNDM5MCA0NWM3MzAxOGRkMDFkNzFjZjM4M2EzYTI0ZDVkODQ0ZWFlNTk2NjI4IGxlZ2FjeS10cnVuaworNDM5MSAzMjBiYWVhYjc4N2FjOWQ3MDU0Y2YwOWQwZDFlMGYyODNiM2M3ZjY3IGxlZ2FjeS10cnVuaworNDM5MiAyYjU4MWNlNDNmNGEzNzMzOTgyOWVmNmViYTU0YWNmY2EzNTc3MjIwIGxlZ2FjeS10cnVuaworNDM5MyA5M2RlNTc3NTk2NmU1NTllZjZjMmNiYjc3NjZjMzA0MDc5Y2E3MjcxIGxlZ2FjeS10cnVuaworNDM5NCA4Yjg5N2I3ZjNhZGU4ZmM0ZDk2NTQzY2JmYzU5NzAzMGZiZDIxYjI3IGxlZ2FjeS10cnVuaworNDM5NSAwYTkxNTJmODcxMTE2MDIzODIyYWYwZDZlN2VlZmU2NzhiZDlmZjE0IGxlZ2FjeS10cnVuaworNDM5NiA4NWYxZDJiZWM2MzJjYTM4OWFkMDhjNDE0MTFiOTBlMGNiM2UxZjMwIGxlZ2FjeS10cnVuaworNDM5NyAzMTg3M2JkNmY0YTg3MTY4ZTQ2OGI5YTVlNWU0NTljYmIwYTQ4ZGYwIGxlZ2FjeS10cnVuaworNDM5OCA4ZThmZGRjYmRmZDJiMjVlNGUxMzc2MWE1OGE2NGI4MzkwZTFkZDQwIGxlZ2FjeS10cnVuaworNDM5OSA0YmU2ZWYxYzJjMWRmNWUxZDgzNGY1YWRmZTE2Yjg2OTI4MWE5YTc3IGxlZ2FjeS10cnVuaworNDQwMCBiYmY4MmViNGE2ZDlkMzNmMDEwODAwZTFjNzM0YmI1ZDQxMzllZGQ2IGxlZ2FjeS10cnVuaworNDQwMSBiYTA5ZDkwZjQyYmIyNjMxNzRhNmQwYTUzZTMxMDRkNDZmZWYzZTNlIGxlZ2FjeS10cnVuaworNDQwMiA5YmNhYzhkYTAyNjI0NDVjNWFjMDg1OTVhOGM0M2FjNDFiMDNlYWIwIGxlZ2FjeS10cnVuaworNDQwMyAzMTVkOWM4MjgxNzc0ZDEzMTRlMDlmOWQxYjMyZmE1ZjNhZThhZjQyIGxlZ2FjeS10cnVuaworNDQwNCBmNmI0ZTdhY2M3YTM3NGZhMzBjNTk5ODUxYjMzODRhOTZjYzY0NTQ5IGxlZ2FjeS10cnVuaworNDQwNSBlMTU3YzgxZDAzNTg5ZDY5NDk3NmUxNGY2NzhmMzY2MjEwNzk4ZGVmIGxlZ2FjeS10cnVuaworNDQwNiBiMmM1NmUwNGNiODI5MDVlNDZlNTgzZTU2NzhhZTc3ZTk3MjA4ZGQ5IGxlZ2FjeS10cnVuaworNDQwNyA0YzU3MWQ4YzNjZTEzYmZmN2ZlNTAxODYwY2FhZjI4ZjlmMjBkNjgxIGxlZ2FjeS10cnVuaworNDQwOCA0NGU5NDE1MjQ1ZmIwOWNlZjVmMmExZmJkZmExYTVjNTJmMzUwMjFhIGxlZ2FjeS10cnVuaworNDQwOSA4ODNhMjI4MTc0NzJhZWQwNTgzNmEwNWI0YjA5YjY0YzRjZmY5ODNmIGxlZ2FjeS10cnVuaworNDQxMCA3NjEwNTFhYTQzNGRiMWYwOWRiODU0Y2U3ZjIwYmIyZDFhNWVhZjc5IGxlZ2FjeS10cnVuaworNDQxMSAzOGRjYjA5MGY0OGIwNjM4NTdmODkzMGViOGYxNzRmMmY2ZTk1NzJmIGxlZ2FjeS10cnVuaworNDQxMiA1NDVlMjM1ODMxYjdiYjQ5ZmJjZDc5YWQ2YWJmNmM1Y2MxOGY4N2I3IGxlZ2FjeS10cnVuaworNDQxMyA3MTAwYWNiMGQzNjNkN2ViNzg4MDdjZjc5MmJkOWJkOGFkYWE0MjA3IGxlZ2FjeS10cnVuaworNDQxNCA0MjdjNjE5Y2E1ZDA3MzE5YjY4MWE3MTAyY2NjN2Y3MWJiZjk4NmVlIGxlZ2FjeS10cnVuaworNDQxNSAwNThhNDZkOGZhZjc2NThlYTFhMjllNTY3YTkxMjJlYzM1Yzg4YTgwIGxlZ2FjeS10cnVuaworNDQxNiA2NDFmNmJiZjgwN2I5Y2M5NzkyZTczYjRlMDlmYTUwY2Y4NzIyZGFjIGxlZ2FjeS10cnVuaworNDQxNyBhMTBkMzFmZjM1MjdkYTdkMzJmODhiMWIwNmYyNjg2NzNmM2JlMjU0IGxlZ2FjeS10cnVuaworNDQxOCA3OGJmNjc1ZGY1ZTVkZmZhOTY0ZGVjMDA4ZDY1MzAzNjJkOTFhZWEwIGxlZ2FjeS10cnVuaworNDQxOSAzYmExNzMwNWYwNDdmMTkwMjRkM2Y5OTlkNGQzNGZiYzFmNzdjODQzIGxlZ2FjeS10cnVuaworNDQyMCBkZDdiZTgxMjg0MTA3MTRiMTk0NmUzOTk2MTEzYjY1OWMxM2QwNzc1IGxlZ2FjeS10cnVuaworNDQyMSBkYzFkYmY2YjUyMTEwMDViZGJjYWI5OGY3MWNjNTZjYmY5MzMyNTU5IGxlZ2FjeS10cnVuaworNDQyMiA0ZmIwYTA4MDdiMDU2NzQwMmEyNmIxNThhYmNiZjQ1NTkwNzhhNWQ5IGxlZ2FjeS10cnVuaworNDQyMyAzZGU1YTc1NDk0ZGZjYTJhNTg0ODVkMTYxZTRiN2I4YmI0YmZmZTBiIGxlZ2FjeS10cnVuaworNDQyNCA4NDYzN2NmZGJjMDc0MmE5NzU5NWU0NGQ2NjkyNDdkYzRmOTAzYjE1IGxlZ2FjeS10cnVuaworNDQyNSA4N2E2MjBkODQ3NjYzM2RiOGIzNWIxOWQ5ZTRkMzRkOGJmM2Y4MWQ0IGxlZ2FjeS10cnVuaworNDQyNiA0NDU0NDIxNzg0ZDg0YWM5NGQzOWQ5ZWZmYzYyNTRkZmYwNTJiYTgxIGxlZ2FjeS10cnVuaworNDQyNyBmMjJjYjVmZWU5YzhiN2Q4MjY1YjM3OWI4ZjM1MWYzMDFkNmYyMDhjIGxlZ2FjeS10cnVuaworNDQyOCBmOTVjMTkzYmZlNjUzNGZhMWYzY2Y4MjA4NjU2YzAxY2MxYTVkNTNkIGxlZ2FjeS10cnVuaworNDQyOSBkY2ZlN2ZkMWFjYmM1NjQ0ZmRkZTcyMTdmNTIwMjQ0MWE5MjE3NzI0IGxlZ2FjeS10cnVuaworNDQzMCBlMjM2Mzk4NzljZDA1Yjk2YTVmMjczYWUwNzg3ZDE2M2RkMmZiY2Y0IGxlZ2FjeS10cnVuaworNDQzMSBhZDI1YzUyMzc2YjQ1YjgwOWZiZDJhNmMwNDhkM2RiNjAxMjBlMmUzIGxlZ2FjeS10cnVuaworNDQzMiA0MmY5NWVhNzU4NjczNDdlODI0MDE2OWVkOWQ5MDI2YmY2MjcwMTM0IGxlZ2FjeS10cnVuaworNDQzMiA4MzI2MTVlYzA3NjQ2ZTMxMGM4NTMxNmI4YmE2YmM5YjE3YWQzNTQ3IGxlZ2FjeS10cnVuaworNDQzNCAyMzQ3YjFmZTgxMmRkNWNlNjUzYzEwMWEwN2IxMjA3Y2JhN2VhZDE0IGxlZ2FjeS10cnVuaworNDQzNSA0ZTYzMTAzMmVhY2YyYjljNmY5NzZiNjU4Yzg0MWIwMzk2ZjBmMzNlIGxlZ2FjeS10cnVuaworNDQzNiAzMzUxNTQ4NWVhZDBkNmRlMzNmMjgyMzIzYThiMTIzM2Q2M2ZlYWEwIGxlZ2FjeS10cnVuaworNDQzNyA4MGJkN2FmNzMyMDE5MDdkMjU3MTFmMWY2ODI4YTBlYzZkMWJkMzZiIGxlZ2FjeS10cnVuaworNDQzOCA0MDYxMWNhY2Q1YmQ3YTI2YWMxZjAxNDgwYjRjOTAwOTg1YzJhMGMyIGxlZ2FjeS10cnVuaworNDQzOSAxNWExZWIxMTNhNDMwODM1Njg2MGMxOWVkZjg4MmE5NjYzMjkxNGMwIGxlZ2FjeS10cnVuaworNDQ0MCA1OGVlZjUxZTMwODQ5YzZhNzgzNGVkOWY2OGQyMzVjNDM5NWRjYWQwIGxlZ2FjeS10cnVuaworNDQ0MSA1NThkOWY5NWE2MDIwYWQ2MzNmNmZhOGVkYzcxOTNmMmE2MWVmYjRmIGxlZ2FjeS10cnVuaworNDQ0MiBkYzZlYWExYThmZGRmZWQ1ZTczNmIwMTk3ZTc1N2RlNDQwMjUxOGRiIGxlZ2FjeS10cnVuaworNDQ0MyA3N2QxY2FiZjk3MWNjY2NhMjA4MjY3YTUxYjM4NGQ4NDkzNTExMDhmIGxlZ2FjeS10cnVuaworNDQ0NCA0ZTYwNTZkOTgwZTFhMWMwNzMzMDk3MjFiZDE5MTFjYmNkODVmOTUzIGxlZ2FjeS10cnVuaworNDQ0NSA3NDQyNjUzNzQ0NTA4MDFmMGYxZmFlMDI5ZDgwOWE4ODZjMTA2YjMxIGxlZ2FjeS10cnVuaworNDQ0NiBmNDk1MjdlY2RiM2FkNWNkNmE5N2I3OWVmZTAzNWM4NjQwMGM5MDQzIGxlZ2FjeS10cnVuaworNDQ0NyBhZjI2ZDRkNWMxZDQzYTJiZjM2NGM0OTJlNTVlNjM0Mzg2MjY4ZTM1IGxlZ2FjeS10cnVuaworNDQ0OCBmYjE5OGUxMzE2YjliZGMyYzg5NzhmNjNlZTY1YmViYmI5ZmYyNDkxIGxlZ2FjeS10cnVuaworNDQ0OSAxZGFiOTliODZmYThjM2Y2YTdjNDQwMDRkMjY0ZWYxZTM2MTM3YWQ1IGxlZ2FjeS10cnVuaworNDQ1MCBmOTAwYzA5OTk1ZGZjNDJmMjU2Njg2YzJlYmY4MTBjM2Y5MzAxMzRhIGxlZ2FjeS10cnVuaworNDQ1MSA2M2Y4NzU4NDliZDgzMTkxNDQxMjlhMTA4YzlkNzY0YmRhNzAxN2IzIGxlZ2FjeS10cnVuaworNDQ1MiBjZjRkODg2MmYxOWJmNDU3NDBmOWRmYzAxZDVkZmYzZmRkZjcwY2M5IGxlZ2FjeS10cnVuaworNDQ1MyBjNWE1MTRmOGYzZTNkYWM1YWM3YzFhY2NiNWYxZWQ5MTcxZGIxYTIyIGxlZ2FjeS10cnVuaworNDQ1NCBkNWY0ZDAxM2RjYzE0NDNlM2NjYjQ0MDllNzhmZDk1YjM2ZDkxYWRmIGxlZ2FjeS10cnVuaworNDQ1NSBmMDViNWNkNzlmYmVkYjczYTQ5MmVjYjk2YzliMWEwNGI2ODJjYzQ3IGxlZ2FjeS10cnVuaworNDQ1NiBlODk1MmI4ZGZlZmZjZGFjZjQ0NTE4M2Y5ZWFkMDllYWM3NzNmYzQ3IGxlZ2FjeS10cnVuaworNDQ1NyBhNzA4ODM4MDMzMzhhMDA1NzE4NGU5NDhjZjlmNTIxZDU0ZmFkZGVmIGxlZ2FjeS10cnVuaworNDQ1OCA3Zjg3MTlhMzY2NjIwM2I3NDM3ZGI2ZGQ3NGJiMTU4NzkzNjBiNDUzIGxlZ2FjeS10cnVuaworNDQ1OSBlZDVkMGFkNWVhMmYxZmRlODM2ZDQ0NDMwNDEzZmE5NTExYWE2ODM5IGxlZ2FjeS10cnVuaworNDQ2MCAzYWE5MTg0Y2ZmOGI2YzliZWEwN2E5YTYwODAzYTEzMjllMzU1OThmIGxlZ2FjeS10cnVuaworNDQ2MSA3YzUzZTYxYmM0YmE1NzhlMDRhNjgxODgxYjUxYjgzMmQwMDgwZjQ4IGxlZ2FjeS10cnVuaworNDQ2MiA4MTFjNGU0NjIyYWFiZjU2YmNhMjg3YzI0MTdmNjU1M2Y5ODNlYTU1IGxlZ2FjeS10cnVuaworNDQ2MyAzOTJkYjE4ODExOTA4YzdhYzcyMTg1YTE4YTY5MTFhMTQ1MTIxZTIxIGxlZ2FjeS10cnVuaworNDQ2NCBmNjVlYzNkY2M1NjMxZmQ1NWJhOGJkY2EzMWU4Y2Y1YmYwY2ZmYjZhIGxlZ2FjeS10cnVuaworNDQ2NSBmMjc4MDA5NjVmZjdjZWRiMDdkNmRiYTkyYTllYWQ0ZDYyNWIyZGY0IGxlZ2FjeS10cnVuaworNDQ2NiAwYmFlNmFiOWM5ZTBlNzY1ZTg4OTAyNDg0MjZlMjljNmVlZjQxZGU1IGxlZ2FjeS10cnVuaworNDQ2NyBkYzliNjMxNmI5YjM1NGYyMWYwYTMzYzI4ODg0Y2VlY2FhNGVkNzc2IGxlZ2FjeS10cnVuaworNDQ2OCA2OWQ0OGNiZGMyZDlhMzkzNzQyNzY2NmIxNDY3YjYyZDc5MjdhY2FjIGxlZ2FjeS10cnVuaworNDQ2OSBlYzA1ZDkwMjFiY2NkODIzMDE1MzhjMDBmNjI1MjQ0ODFhYWZjMGQxIGxlZ2FjeS10cnVuaworNDQ2OSA5ODk1NDc1ZDE4YzdiNWYzMmFkYWY3OGY3MTg4NmFlMDQxZTRkMTBjIGxlZ2FjeS10cnVuaworNDQ3MSBhNGE4NTQ1MGViYWZlMzI0Y2QzNGZlZjI3NWJkZDg2NDBhOTZiNmYwIGxlZ2FjeS10cnVuaworNDQ3MiA1YTA3NzVjZTdiMzExZWI5NmE3NjBkZTJhOGY3YmU5YzBiYzAxOGQwIGxlZ2FjeS10cnVuaworNDQ3MyA5ZTM0NjljMGVkNzVjYzI0YTE1ZGYzYjZkY2Q3YTU4ZTZlY2U1MmE4IGxlZ2FjeS10cnVuaworNDQ3NCA3YmRhMGYyYzE3MGNkZWEyOTY2ZTU3ZGQ5ZGRlYzMwMTc5ZDRmZjU4IGxlZ2FjeS10cnVuaworNDQ3NSBlZTEyZWRmYzIwOTU5OWJhMWMzNmNiNGZmZDlhNWZlZTE1YjQxZDA5IGxlZ2FjeS10cnVuaworNDQ3NiBlZWUzZDcxNWYwY2ZiZjFlYTJmNGM0Mjk3ZjcyYmJkMzczN2NjYjBjIGxlZ2FjeS10cnVuaworNDQ3NyAzZDQzMWE1MjExMzJmMjNhMDhiZDZkYzM1NDIyMTVlYjAyMWY5NzNlIGxlZ2FjeS10cnVuaworNDQ3OCA3MmIyYWI1NmU0MDM1MmUzZWRiNjcyZWQ0MWM1YWQ2MDAzMDQ3ZGZiIGxlZ2FjeS10cnVuaworNDQ3OSBmYTdiYzUyODMxNGJjNDYxZGFhNDI5NTVjZGQ2YTM4NTkxYzlhM2QzIGxlZ2FjeS10cnVuaworNDQ4MCA5N2Q2MTRiMjRjMDhjYjU0NjM2MWNlMWZjNzUyNTFlOGY4MjhiMWU3IGxlZ2FjeS10cnVuaworNDQ4MSA1Yzc0YzNhZWRhNzRhZjZhYzcyMzIwMjgwYmI5ZWJmM2E5M2ZiM2U1IGxlZ2FjeS10cnVuaworNDQ4MiBkNGEwNmU4MDU2Yjg3ZjlhMzE2M2I2MTIyZGM0NTM1MTU2OTQ5MGE1IGxlZ2FjeS10cnVuaworNDQ4MyAyYTNjOGJlYmYxNTY4YWYyODk1OTI3NTBhNjlmYmI2N2U5MjRlNmFiIGxlZ2FjeS10cnVuaworNDQ4NCA2NzFjZjFmOGIwYzMzYmI3MTgzOTBlZjM4M2VjNjc1NmNkMjEwYWY1IGxlZ2FjeS10cnVuaworNDQ4NSAxNzM5ZjAwZmZjODYzMWUzMGE2N2Y4YTY1MzY5MWM4YmEzM2VlYzA1IGxlZ2FjeS10cnVuaworNDQ4NiA2MDliZmI4YWU3ZjU0YWVlNzU3MDMxODE2OTE0MzczYTIzM2E1YmNjIGxlZ2FjeS10cnVuaworNDQ4NyBlNDNhMTk0MmU1ODgwNmExMjRmNzA0MWU3OGJlMDFjYmIxYjcyYjNmIGxlZ2FjeS10cnVuaworNDQ4OCBmMjM2YWRjMjhlNzc3MDkyMmUwYzY3MWQwYmZmYWMyMmNlOTcwNTc4IGxlZ2FjeS10cnVuaworNDQ4OSBjZTY5NzQyZjJlNzc3OTVkMTc0MmVkYWJhNzU4MmEwNTJlOTU4MjYwIGxlZ2FjeS10cnVuaworNDQ5MCA4M2ZjYjlkYjRjYThlYzRlOWY3NGI0OGUyNzQwZTMzYmRkYTcxODU2IGxlZ2FjeS10cnVuaworNDQ5MSAzNzBmOGNiZDdjMzIzZTg4NWEzMzAyNGVhN2Y2NjI1NTNhMWNjODg2IGxlZ2FjeS10cnVuaworNDQ5MiA1OTgzZDJkYjU5MDQ1N2FiMDZkYjZhYmQ2Zjc0NDg1ZWVmYmQ4MzhmIGxlZ2FjeS10cnVuaworNDQ5MyAwNzAxNzY5MDkwZjQ5YmYxYTMxNGIzZDVjNTBlYmE5MDMzMzgzZGE1IGxlZ2FjeS10cnVuaworNDQ5NCAzZDgyMmUzMmMzMjk3MDQ0MGU1Nzc5NzRhZDMyNWQ2MGM2YzY5ZDgxIGxlZ2FjeS10cnVuaworNDQ5NSBlMjhlMTBlNWRlYjJjMzEzMjUxMGYyZTZkNjNlZWJmMjdmZTIyM2JjIGxlZ2FjeS10cnVuaworNDQ5NiBlYTY5NmYyNDg3ZmM4NjI4NWI4YzNlMTExZTExZTY2ZDY4ODA3YmRhIGxlZ2FjeS10cnVuaworNDQ5NyA0ZWJlZTkwNDkyNGU2YWE3NzhlOWU0MTBhOGJjMjQ5NzIwOGY5OTZhIGxlZ2FjeS10cnVuaworNDQ5OCAyODFlNDA2NTJlMjM0NTM4NDU1MDA3MjgwZDQ3YzI2OTk3ZGU2OGEyIGxlZ2FjeS10cnVuaworNDQ5OSA2MmJiYmZlNmJiZjY4Mjg2ODg2ODQzYTc2ZTM3M2NlMmI2ZmMyODI4IGxlZ2FjeS10cnVuaworNDUwMCAxY2UzZGJlZWI4OTA5MzgwZTNiMWI3OGM4ZTI5MTk4MzM0ZmI4MzMyIGxlZ2FjeS10cnVuaworNDUwMSBmMThjMTkxNWM3MjJkMTc1MTk4YTM2YjQ3OWM5NmMzZDM5ZGI0YTI2IGxlZ2FjeS10cnVuaworNDUwMiBjODVhYmNjNzUyYjE4NDY0MzA2OTBmY2Y3Y2ExZWNjOTk0OTI4YjJjIGxlZ2FjeS10cnVuaworNDUwMyAwN2NmM2IzYmFmMTZmYzMzNzBhYzk1OGViNmNjOTkyNzI1NTFjZGZiIGxlZ2FjeS10cnVuaworNDUwNCAxOTM2M2Y4NTcwYTJmY2ZmZDJkYTI2MGE0NWQ0YTIwNzU4NDA4MmJlIGxlZ2FjeS10cnVuaworNDUwNSAyM2RmY2E4YWE3M2IwNDA1NmRlNzUwZGY4NGJkM2QzN2NkZmZjOTk5IGxlZ2FjeS10cnVuaworNDUwNiBkN2U5MTQzN2YwYTI3ZTI3NDdjZTAyYWIxYmE1MDhmNGU1ZDhlYzNjIGxlZ2FjeS10cnVuaworNDUwNyBkZTQ5ZDQ5MDQ0ZDc1M2RmMTEzMDQzYjRiNzkzNjI1MDNmNzhkYzQ5IGxlZ2FjeS10cnVuaworNDUwOCAwMzE5YjEyMzIxZDdkZGJmMjBhMGRmZDZmZTVhMjkwMzM5NmQ2YWRhIGxlZ2FjeS10cnVuaworNDUwOSBjZjMxZWFiNmFiNWFlMmUwMWY0YzY2YmNjOWQ1ZmUyY2FlMGMwYTE0IGxlZ2FjeS10cnVuaworNDUxMCBhZmY1ZDdkMDY3MzVjOGZhMGFmOTVkZGFhOGEyNjcxYWNkOGRlNTBiIGxlZ2FjeS10cnVuaworNDUxMSA3OWMxNzFmNTgxZmNkZWUzMDk5M2ZhM2QyY2NlMjQ5MTAyNWI1MWJlIGxlZ2FjeS10cnVuaworNDUxMiA1MDgwMzZkYmJhM2I0ZjJmNmYxMjgzNGRjMDYwMGEwNDg5MWQ2NzIyIGxlZ2FjeS10cnVuaworNDUxMyA4NjZjODEwNjhkYmRhMjcxZWUyMmI4YzA4NWMzMGMyNGE3MThjYjA1IGxlZ2FjeS10cnVuaworNDUxNCAxNDY4OTA2NTNhNTdlYTEzYjI4ZmY0NmQ0NmU5MmZkNGM2MzhlYWIyIGxlZ2FjeS10cnVuaworNDUxNSAxNzJiYTA0YTUxOTE2Y2I3NTA0MTM1NDBlMDNmNmY0MjgxYWY0MWQ1IGxlZ2FjeS10cnVuaworNDUxNiBkMGQwYTY5YjVjYTM0Yjc1ZWM3N2RiZmM4OWE1YWZmZmY2MjA0MzFhIGxlZ2FjeS10cnVuaworNDUxNyA1ZWQwNjU5NDM1MjYyMTU0N2Y1MzY4MTZjNzQ5MDU4MDcyZmY4NjU2IGxlZ2FjeS10cnVuaworNDUxOCAyODBmMzFlNmM2NTNiZTQwZmMzZDU1ZGVmYWYxY2RkOGNjOWZlZWUxIGxlZ2FjeS10cnVuaworNDUxOSAyNmNkNGQ2YzJkMTJiZTNlYjZlYzdhZDMzNTJkZjgyZmIxZTU3YTJmIGxlZ2FjeS10cnVuaworNDUyMCAwMDBhZTY0MmY5Yjg4OWExYWRmOTgyNDk0ZjA3MjI4ZGU5NDc0NmNkIGxlZ2FjeS10cnVuaworNDUyMSAxYjk5NDUxZmExNDM2Y2FkNzg0MmZlYzVjNTlhYTJjMDRkNjJhYjA4IGxlZ2FjeS10cnVuaworNDUyMiA1MjI3MzI0ZDY0ZTQyOTg3Y2I4NmNmOGI5N2ZhNDk2ZDQ0YWQyMWYzIGxlZ2FjeS10cnVuaworNDUyMyAzYWE3YTc3ODQ0NTU5YWM0NzRiNWY2MjllNzU5ZjE2YThlZGZjNzQ5IGxlZ2FjeS10cnVuaworNDUyNCBiZTVhYjhlODljNDk4NmU4MjI5OGFjYTRiYzY1M2JlODM4OTJiZDQ5IGxlZ2FjeS10cnVuaworNDUyNSAwNDhlOTFhNTljNzVlOGNlNjBhMzUzMjFmYWQwY2FjNjA3MmFiM2YwIGxlZ2FjeS10cnVuaworNDUyNiBjZjY1YTEyNGZhNGI3NjljNjkyMWI2YTlmNjVjMjkzNGIwZmE3YWMyIGxlZ2FjeS10cnVuaworNDUyNyA2OGEzOGNmZmNmNTgzYzI5MThhNTM4ODkwNWMxOWJkZWJhMTkxMjgyIGxlZ2FjeS10cnVuaworNDUyOCBhMzZjYWM3OWM1YWY3YzFjMTkyNWE0MWM1MmVjMjkxN2ViOTFiZDI2IGxlZ2FjeS10cnVuaworNDUyOSA0YzM0N2U0ZDEzZjFmMTE2NWM4MGRkOWJhNDE4ZWZmZGFmMWQ4MDUwIGxlZ2FjeS10cnVuaworNDUzMCBhZGMwMjhiOTc3YmRmNmJiN2Y1YWMxY2RlNjAyZTc4NmZhOGViZjU3IGxlZ2FjeS10cnVuaworNDUzMSAzODQ4MDk0ZjI1OWNhN2JhYzY5NDQ2YmU3ZjI4NzkxOWQ3ZWEzNDE5IGxlZ2FjeS10cnVuaworNDUzMiBkZjZmZTgyOTZiYzMxZDUzYzM0OTQyNjVlNzVhYWUzZmRiYTcwMGNlIGxlZ2FjeS10cnVuaworNDUzMyA1YmJmMGE5YzlhNDI4YWM3ODY0ZDMwMDA5OTYzYzYxNGUwYmUyN2Y2IGxlZ2FjeS10cnVuaworNDUzNCBjMjFjYzdiM2NlMjgzMzczY2Y3ZDJlNzEzNjU4OTU3MDNkYjNjNzFjIGxlZ2FjeS10cnVuaworNDUzNSBhZmVjZGVjOTk2ZmY1MDAzMzYyNWI1ZjVjYzZiN2ZjNzJmOTVhNDk0IGxlZ2FjeS10cnVuaworNDUzNiA0YWZhN2ViNDczNGJjZmFmNjUyZmRiZmRjODc3YjI4NGZiZjczZGJjIGxlZ2FjeS10cnVuaworNDUzNyBmMmQyNjdlZGJmZDY4NzY3MDkzOTE1ZmExMzdkZGU3MGRlMTJlYTgzIGxlZ2FjeS10cnVuaworNDUzOCBhYmJmMmE0YjQ4OGIzNzFhMmU2NDU5OTVhYTNjZTE2MWU0NzU3NDdjIGxlZ2FjeS10cnVuaworNDUzOSA4OTIxYTI4ODFmYzdmMjY0NjhjZDg2MjYyNTBiYTRhZjA0MzRlZGQ2IGxlZ2FjeS10cnVuaworNDU0MCAyNjA0ZDExYzhiNDA0NTljMGFjYjIwNWZlNzVhYjJiZDYwOTljNzMxIGxlZ2FjeS10cnVuaworNDU0MSA2NTE0NmI1MmYxNmI5MzRkZGQwZDQ5NWFjYTJkN2I3MWMyYzA5YzJmIGxlZ2FjeS10cnVuaworNDU0MiAxOTQwZTFlMGNlZGY1ZDU1ZTczYzBmZGUwZjUzNmFkYzI4Yzc4MDMzIGxlZ2FjeS10cnVuaworNDU0MyA1M2FhNTE0MzNmN2ZkNWQ1M2MyNzBiYmNkMDEzNGI0NDcxMjcwYjg3IGxlZ2FjeS10cnVuaworNDU0NCBmNzhiMzg3YjU0ZTBhMzk5NWEwZDI3NWQ5YmU0NmE4MmRmOTEyNzBmIGxlZ2FjeS10cnVuaworNDU0NSBiNGQ5ODJjNjQ4YmIzZTc2MDJhOTU5ZjQxNTMwNTg3MTVhNDhhMTgyIGxlZ2FjeS10cnVuaworNDU0NiBiMDNiNDNiZWUxYWIzZWNmZjZhNTIzY2FhNTAxNjZjMDkxOGNkNzhlIGxlZ2FjeS10cnVuaworNDU0NyBlOGNhZmIyYjc0M2E3ZTRjMDNkODY5YTM0MmEwY2Y2Y2VlMTI5MTg4IGxlZ2FjeS10cnVuaworNDU0OCBkMzU2YzQ3M2RiOTkzZmU3NGZiZmZiYmQ3Mzg1YjZiZjkzMDNhN2M3IGxlZ2FjeS10cnVuaworNDU0OSAwZDdlNGFhNTk1ZjdhYTViNGQ5YjgwZTVkYWEwMGI3NTA3NTRjMGRlIGxlZ2FjeS10cnVuaworNDU1MCBkNWM5MzViOWE3YjUwY2U1NGE4ZmQyYTVhMzU2MmMwNGZiMmRjMzQwIGxlZ2FjeS10cnVuaworNDU1MSBlNDU4ODQwNGZkZmYyNTQwMGMwNTgyYTU1MzA2YjkwMTYzNDM5ZTQ5IGxlZ2FjeS10cnVuaworNDU1MiBiN2JlMDM4MmY5ZWU2OWQxNmExYjhjZmY3MmQ5ZmQ4ZWQ4NTU5MzVmIGxlZ2FjeS10cnVuaworNDU1MyBiYTJlMjFhNTRhZTM5OTFhNGJlYTNiOGViYWNjOGYzNDY4NGRkY2ZkIGxlZ2FjeS10cnVuaworNDU1NCA0NTc0ZWQ2NTdjYzlmOWE1NWNhZTQ0NTQxNWU2YTc4ZDk4NzRhODlhIGxlZ2FjeS10cnVuaworNDU1NSBmZGNjYzMyMjJkMGFlNzk0MWNjNDVhYTZkOTMzMDg5MDlmYmMzNDg3IGxlZ2FjeS10cnVuaworNDU1NiAzMDgyMWJjMmRjYjc0NGZiMGFmMTc1ZDdiZDI4ZDI5NWRhYjYyNWVhIGxlZ2FjeS10cnVuaworNDU1NyBiYmZhYzNlMjU3MGQ5YWIyMjBkZmY3ZjYxZDkxMjIyYmI5NWE3YWVhIGxlZ2FjeS10cnVuaworNDU1OCA3NDkzYzY4MDVkYzZlNWNiOTM0N2JlYjY2OGViMTExZTJhYzExMWNlIGxlZ2FjeS10cnVuaworNDU1OSBlYTdiMmJmMGI1MjE2MWY5NmE1YTk3YzJjYThiZTZkMzAwZGM1MWZkIGxlZ2FjeS10cnVuaworNDU2MCAyZWJiMjEyODRmMzQ1MWE3NjliZjU3OGY2YmZlNDRjZGU4ZTQ5NmJkIGxlZ2FjeS10cnVuaworNDU2MSAwMTgzMGRjOGQ2ZTVkMzZiZmQwMWYyMmY1NjcxMmVmMjIzOWVmMWQwIGxlZ2FjeS10cnVuaworNDU2MiBhZjQxZjRhMjE2ODJlYTgyMTM2MjdhZGQ0NTMyMTJlNjBjM2U3Y2YyIGxlZ2FjeS10cnVuaworNDU2MyAwNzA4MGEyOTYwNzA3YmJiOWYwMWVmNjYzMGE5ZmVjMDQ5NWJjMjMzIGxlZ2FjeS10cnVuaworNDU2NCA2YzQ5MDVmZmZmMDFlOWI4OTIwZTQ4MjlhOTI4YjY1ZmZjZDc5MTkwIGxlZ2FjeS10cnVuaworNDU2NSAzMGNiZTAyNGRmNDA5ZWMwZDdlMzJhNDM3NDZkNzgzNjRkNTQyM2ZhIGxlZ2FjeS10cnVuaworNDU2NiAyNjY5ZWYxNGMyMDU0MTk5MGQ2ZGJjZWU5OWUxYmMyZjQzNjc2ZmRiIGxlZ2FjeS10cnVuaworNDU2NyA3NmM4NjBhMThkODIzNDNmYjRlMDc2ZGFkY2U0ZmJiYzUwODBlNzM4IGxlZ2FjeS10cnVuaworNDU2OCA3OTQ3YzBkMTZjYTA0MWU2OTE0ZWM4OTIxODUwYzM4YjQxMjUyNTlkIGxlZ2FjeS10cnVuaworNDU2OSA3ZWEzNjlkMDVjMmVlMTk1ZTEyMmQ0ZDdjZmQwZDg1MTIzMDg4NDAwIGxlZ2FjeS10cnVuaworNDU3MCBkNzNlZWQzNTMwMDEwYzRmZDRjODAyYTA5MDkzYWUwZWY0ZDNmNjE2IGxlZ2FjeS10cnVuaworNDU3MSA1ZGY2OWYyOTRjY2M2ZjZkNDY2MWU4NGUzOWUwNjEzMmIwNzBhNzU0IGxlZ2FjeS10cnVuaworNDU3MiBhZWRhODY0YzExYzQ0NjM5MjVlZGQyMGExODZhZDFkNDhlN2ViZGIzIGxlZ2FjeS10cnVuaworNDU3MyAxZGFlMGQzMDYyZDI2M2JiNmNjNjg1MWU3Mjg5YTA1Yzc2NmEyZTc1IGxlZ2FjeS10cnVuaworNDU3NCA4NGI2MWZlNDQ1NzMwNDg0MDBjZGIxZTcxMWYwNmRhY2RmNGIzMmFhIGxlZ2FjeS10cnVuaworNDU3NSA4NmQ5ZTkxNDA1Yzg1NTM4OTdjODg3MGM0MGVjZWYyYjhjYWY2NWQwIGxlZ2FjeS10cnVuaworNDU3NiBiYTNmZDk2ZjA1NWVmOTE5YjRkODAzMjZiMTY3NWJjMzUyODM4NjY3IGxlZ2FjeS10cnVuaworNDU3NyBmZDVhYjdlODI4ZmNjYzAxNDE1OTY4MjRmOGE3NWNhYWEyNmE3YWE1IGxlZ2FjeS10cnVuaworNDU3OCAzNjg0N2I4YjU3NWRmNjUxZjU4YWVkNTgxMzY5NmViNzZkZjY1MjRmIGxlZ2FjeS10cnVuaworNDU3OSBiZDA2MWRjMzA4NDJlNzUwNGVkZTRkN2MzN2YzZThlMTc5NzkwNWQ1IGxlZ2FjeS10cnVuaworNDU4MCBhZjM2YmFlMzQzZmNmOGRhZWY0OGE5ODU0MWUzN2MzOTZmMjQwOGU5IGxlZ2FjeS10cnVuaworNDU4MSA2OTU0MDE2OTJjNDZmYjYyYzRlOGM4ZGJkN2NmOTExYzBkY2Y1NWRmIGxlZ2FjeS10cnVuaworNDU4MiA5MmRhODkwMTUxN2UzZjE1Yzk4YzkxOGIyZGYyNDBhMDkxYTRjZWE0IGxlZ2FjeS10cnVuaworNDU4MyAwNTM2MGNkNjE2YWUzODg2NzUxMDU0NWU2OTRkZGFiMjQ5ZTZjNzRiIGxlZ2FjeS10cnVuaworNDU4NCBjYTI3YzJmZTBiOGQ0YzZiNTZlNGYwNmI2MzFhNWE2ZDhjNDcyNjNiIGxlZ2FjeS10cnVuaworNDU4NSBmZTkyMmZlZDZiMzFkOGM4NGZmNjBhZThlYjY0NTMyNTMwMWVjNTI5IGxlZ2FjeS10cnVuaworNDU4NiA0ZGRmNTU0NDU3YWQ1ZDFiMjAxY2M5YzZhZjMyMzExZDYxYmY5NDJjIGxlZ2FjeS10cnVuaworNDU4NyBjMTZkNjkzYmZlNzNmNTJmNDNmODA3ODBhOGY1YTFmNTEyNmU1OTBhIGxlZ2FjeS10cnVuaworNDU4OCA5ZDYxYzU3NDliZjgyNzgxYTdhMDYwMzk0NjlkYzgxM2FlMjg0OTczIGxlZ2FjeS10cnVuaworNDU4OSA0ZjkwYjQ3NGJlZWMzNDBmMDU5ZjA1OTY4YWQwYWE5OTdlYjY2Y2MzIGxlZ2FjeS10cnVuaworNDU5MCBjNTdiNWM1MGEyZDI5NTRmNmEwYzFjZDhhMWI1MWY4Y2IwMDIzYmVmIGxlZ2FjeS10cnVuaworNDU5MSBjOTA4NWYxZTk3N2YzMzgwMzQwYmJmYmMxOTFjMWIyZjE1NjMxOWVlIGxlZ2FjeS10cnVuaworNDU5MiAyM2YwNDAzMTc4MjgwYWUwN2NmYjMwODRmYWZkOGNjNTdjZWFjNjUyIGxlZ2FjeS10cnVuaworNDU5MyA5NGUyY2E4NjU5MGE1NmQzODc0ZGMyNGJlNWRlYjczZjk1M2I3ODFmIGxlZ2FjeS10cnVuaworNDU5NCAxNzNkZDAwODc5YWI2MDAwYzgyZGM2NDk4ZmM4ZjcyZmRmN2E4ZDRhIGxlZ2FjeS10cnVuaworNDU5NSA4NDkyM2Q5MmI1M2U3YWMxYTYzMjJhMzI4MGUzNDFhZTdkMzYxMmJjIGxlZ2FjeS10cnVuaworNDU5NSAxNmViNGM1MWVlOTcxNjkwNDYzNDA5OThlODUwYTYzYzY1MjI1YjBhIGxlZ2FjeS10cnVuaworNDU5NyA3YWU4NDdiMWIyNjkyMjhiOWNjMzg0ZTBiYWZkMDRhMzY3OTNiZTFiIGxlZ2FjeS10cnVuaworNDU5OCAwZTYwY2QyMDdhZGJiMjRiZDViM2MyYjg0NGI3YzA4NjczZTA0NGE1IGxlZ2FjeS10cnVuaworNDU5OSBlOWU5M2UwNzM1NGI4YmMwYjM5NDAxNDYyYTcwYTZiOWI5ZGJhMGY5IGxlZ2FjeS10cnVuaworNDYwMCA5YWZkYmY5NDRjMmEwM2E2NDlhNTdmZTBhMzIzY2QxMjI1MWM1NjBkIGxlZ2FjeS10cnVuaworNDYwMSA4MzhlZjk3Njg4MjEwMzAxNjc4NWI5N2Q0MGViOTJjZDlkMzAxZjljIGxlZ2FjeS10cnVuaworNDYwMiBmOTlhMjM5OTg3NzBiYWI3ZTJmMjU2NTZmN2QwMDRhNjViOTM4YjUyIGxlZ2FjeS10cnVuaworNDYwMyA2MDYwZDdmYjA3ZTM0MjQ1ZTk3MzBiZmZkODYyMTA3ZTg4NGY0YTM0IGxlZ2FjeS10cnVuaworNDYwNCA0NDg0MzViZmVhZGMwZDQ2Y2Y1NWM2OGM5MmY1MDNmNmQ5Y2Y2ODExIGxlZ2FjeS10cnVuaworNDYwNSA1ZmQ4NTI0ZGQwM2EyMTBhOTM3OGI2YjMyYWNlMTczYjhmMDAxYzg3IGxlZ2FjeS10cnVuaworNDYwNiAxYTUyMzUxYTAwYjI2Y2QwNTlhNmJjOWUyZDk1MThlNzY5YTFmMWRhIGxlZ2FjeS10cnVuaworNDYwNyBlNTRiODY1NGY5Mzg0ZjEyMjdiYTIxOTdmZWI1ZmUxNjExYWRkZWM4IGxlZ2FjeS10cnVuaworNDYwOCAwNzI4ZmViMWQwMzFiNDg4NDJiNzE5ODM3MGFmMmM3ODY4OGFmNTQyIGxlZ2FjeS10cnVuaworNDYwOSA4NDk3MWQwMTU5NjVlOGU4ZjJmNDFmNDQ1OTNmMjMyZjY4ZDZhNTQ3IGxlZ2FjeS10cnVuaworNDYxMCBjZmJhYjc5YTc5OWY0NjUzNTUyMjcxZGE1MDIwYmUyMjIwNTE2Mzg3IGxlZ2FjeS10cnVuaworNDYxMSAxZTA4MzhiYjhmMjIwOGUyOTJiMzAwMzQxNjIzZWY4MzJiYzIwOWY4IGxlZ2FjeS10cnVuaworNDYxMiAyOTcyMGM1ZDllN2VjNDIyMWZjODdmMWIyMjJmODA1MzE5YmZkNzA0IGxlZ2FjeS10cnVuaworNDYxMyBhNjE5YTYxYWFkMWViYjhjODgwMjQxZmMyY2VkMGYxZTA2MmMwMjJkIGxlZ2FjeS10cnVuaworNDYxNCA4OTliNGUzZGZkNGNmZjk5Y2E0MGVkNzJjMDc1Mzg0NTAyNDE2ZTFmIGxlZ2FjeS10cnVuaworNDYxNSBmMDYyMjJlMDdjYTc1NTM3OTU4MzZmN2U5NDQ0NzE4NWE2OTE1ODdhIGxlZ2FjeS10cnVuaworNDYxNiBjOWFlYTM0YWU0YjY5OTcxNGFlODEzZTQ3NWY0ODc0ZTJjMWRiYmMyIGxlZ2FjeS10cnVuaworNDYxNyBlZTBiM2NiMzdhZjg4Y2M0YzkzNjcwYTE2ZDE5YThlM2MzOGI5ODJhIGxlZ2FjeS10cnVuaworNDYxOCA0NTliZjdkMDRlMDViZWI4MjllMmQ0ZDAyNWI3ZGFmODNjOTZiMDNjIGxlZ2FjeS10cnVuaworNDYxOSBmNDliNjM3MjQ5MmYyOGJiNzNiNDE1Mzc2ZDdlM2I0ZDIxYjg0MDBkIGxlZ2FjeS10cnVuaworNDYyMCA3YTZiNTdmZWJhYzQ2YzEwNjIxY2RjZGQ3MzM5MjE4ZDRjOWJiYmZlIGxlZ2FjeS10cnVuaworNDYyMSBkOTBjOTE0YzU3N2QyMGI0MjFmMTBlNzJhOTA3Mzk1ZTU4YjM5NmRlIGxlZ2FjeS10cnVuaworNDYyMiA5YTlmM2Y1ZDZmODYwMzIyMTJmMDA3M2E1Mjk5MGQ5ZjFlMTgwNDBjIGxlZ2FjeS10cnVuaworNDYyMyA5MmNkODU0NzBhNzY5ZGY1NzdkODBjYTYyNGU2YTA3NThkZWQxMDU5IGxlZ2FjeS10cnVuaworNDYyMyBiNDVjNjg4NzU2ZDA0ZmI4NGQ0YTBkNTE4ZmMzZDdlM2NiMjVmYThkIGxlZ2FjeS10cnVuaworNDYyNSA3ZmY2ZDk5OWYwNTlhMDhjOGM4MmI4M2MwNTJkNTE0ZjZjYmU2NTE4IGxlZ2FjeS10cnVuaworNDYyNiA4YWRjYjgwOGQ4ZGRkODQyOTU1NDgxZmRjMjdmZjYyMjFlZWYyZDYxIGxlZ2FjeS10cnVuaworNDYyNyA2ZjM1YTFhZDFhY2M4MzM1OTBmOTgyNTc3YzUwZWJkNjBiYWU5ZGI2IGxlZ2FjeS10cnVuaworNDYyOCA1ZWVkODMyMTZlNmM1NWI4NTY4YTk5ZjU2NDdjYWM5MGUxZDkxMjEwIGxlZ2FjeS10cnVuaworNDYyOSAwNDQ1NzI1ZmU1ZGU0Y2FlYWJmNDkzOGQ1NGZmYzA2ZjAxMGQ2NzhjIGxlZ2FjeS10cnVuaworNDYzMCAxZTllNzQ5NDRiYjUxZjQ4Zjg2MjkxOWJhNjg5MGMxMjcxYmNkNjYwIGxlZ2FjeS10cnVuaworNDYzMSA5ZjUwMGEzNGMzNTU0MTgxMWM1NjRhODkyZWQyNmY3ODZkZGY0N2NmIGxlZ2FjeS10cnVuaworNDYzMiA2NWQ4N2YwNmYwOGZjMzBiODNhYzBhMzcxMDRkNjZiMGM0MDQ2OTQ4IGxlZ2FjeS10cnVuaworNDYzMyA4ZGEwM2RlY2VmNTkzZGRlMGU0NGFiMTI3YTZjM2E0Y2NkYzBiOTQ4IGxlZ2FjeS10cnVuaworNDYzNCA5YjQ1MWM4NGE3YmY5MzAxMTAxMjYyODU5NGYyYTdiNDRhNmYyMDc5IGxlZ2FjeS10cnVuaworNDYzNSAwMDQ4MDI0YjdlZjg0Y2Q5YzAwZTU3OGQ5NzYyMGMxNTE1OWVjMjVkIGxlZ2FjeS10cnVuaworNDYzNiBkZmFiYjEzYmNlNzBmYzE4MWIyNmMwMmI0MTljZmEwNTUwOTkxODgyIGxlZ2FjeS10cnVuaworNDYzNyA2MmJkZGVkNWYwMGEyMzE1MWM0ODM5NmYyMDcxZDUyMTViN2FjNGM1IGxlZ2FjeS10cnVuaworNDYzOCA4N2Y0ZDZkMmU5Yzg5YTg0ZTk5MDIxNmNhNjU3NWI4ODE1ZjkyNzNlIGxlZ2FjeS10cnVuaworNDYzOSA5YzhiNDMyMzgwOGJjMGY5OTEzM2Q5YjI3ZTJiMTQ1ZTk3OWNkMTIzIGxlZ2FjeS10cnVuaworNDY0MCA5NWNiNTJiODVmNzg2N2ZiNDdjNjg3OTk0MjQ1YmM3YzVkNWI5YTUyIGxlZ2FjeS10cnVuaworNDY0MSA5NjhlMjQ4NGQ5NGRhMzgyZDQ5YzczM2MwM2M0ZTI5OTNkMTE3NDQ1IGxlZ2FjeS10cnVuaworNDY0MiA2NDYxZmYwYzRiZWU2ZjMwNTYyYTE1NDgzMzg3YzVkZTE3NmM1ZjE5IGxlZ2FjeS10cnVuaworNDY0MyBkNTk1NjgzODE0NDdkMGUzMjk5NWY3NWE3M2QyMGEyODU4OGQ4MzRiIGxlZ2FjeS10cnVuaworNDY0NCBiNDBlMTBiZGEyMzE5MWQyZDc2Yjc4ODM0NmQ0ZDEyMmE0ODZiMDYyIGxlZ2FjeS10cnVuaworNDY0NSBmNDg5NTFkYWJhNGZmYzNlNzU2MjVmMzRhNGRmM2U2M2FhZmVlYmVhIGxlZ2FjeS10cnVuaworNDY0NiBmNzhmYmNjYWY1OGNjNjZkMWI4MDY2MzUxOTJiNTFlYjI2MDcyZWUxIGxlZ2FjeS10cnVuaworNDY0NyAxYzAxMmQ4MmE5NzU4YzIyYjM3NDU3OTdiNzRlZmRhOTZlOGIxMzI0IGxlZ2FjeS10cnVuaworNDY0OCA4ZTQ3NmNhM2E3YTNmMmZhZjZmMWY2NTE3ZDZiYmI4ODc0MDY5NjQ3IGxlZ2FjeS10cnVuaworNDY0OSBjY2MyNzlmZjkzNWQwZjU0YTZiYzk4MTVmZTE1MTJkNTA1MjUyYmU3IGxlZ2FjeS10cnVuaworNDY1MCA1ZTU2OGJhY2ZiZTk5YmE2MmE4MmEzOGFjNTI3NDI1YmNmNzgyZGZjIGxlZ2FjeS10cnVuaworNDY1MSA5MWE0M2VhMTFiYTM1OTRjOTAyYzFlYmU2NTY0YjEwMjYxMGFlOThjIGxlZ2FjeS10cnVuaworNDY1MiAyNzU1N2U3MGE4ZjAyOWJjZDc5M2I3MmM2YWEwOTdkMzJlMDgyMzIxIGxlZ2FjeS10cnVuaworNDY1MyBmNDY3MWI2ODFhYjk4ZTc2MjBmZDk3MjljNDM2MTgwZTcwOWM0NjA4IGxlZ2FjeS10cnVuaworNDY1NCA1YWU5MjJjZmU0MDQ5MzQ3YmIwNzQwM2QwMGU1NmRiZWFiZGZkMThlIGxlZ2FjeS10cnVuaworNDY1NSA4ZjFkYWZmZTc5OWJjZjM0ZTA3YWZiYzk4ZDEzNzcwODgzNDZmNGNiIGxlZ2FjeS10cnVuaworNDY1NiA5ODk0ZTU1NDY4ZWM2MGY3NWEyYWYwMDYzM2RmODM0MDAzNDk0NThkIGxlZ2FjeS10cnVuaworNDY1NyBjZGIzNzNmNjViZjM4MGRiZDI5NDcyZDc4ODE0YjJlMDBlMDBjYjRlIGxlZ2FjeS10cnVuaworNDY1OCAwMmRkNjNkM2ZlOWIzMTM3MGVlNTczNjY0YmUyYTIxMTk1YTQ0NDVmIGxlZ2FjeS10cnVuaworNDY1OSA1Mjc4ODlhZTg0NTAzOTA5NzdkM2U4OTUyMWI0YzJkY2ViOTEzNDE1IGxlZ2FjeS10cnVuaworNDY2MCAwZTMwMjc3MWVlNWEyYmZjN2JlZTE5YzI4N2ZjZjliM2Y4MzYyNWJmIGxlZ2FjeS10cnVuaworNDY2MSAzM2VhOWNjN2Q3YmFlNzIzYzg3YTI3MjI2ZDgyMzQwM2M0ODRhODkxIGxlZ2FjeS10cnVuaworNDY2MiBjNjhhMDExM2I3NWEyN2ZlYTMzYmQzNjQwY2ZjNTIwZjFhNTJhZDdmIGxlZ2FjeS10cnVuaworNDY2MyA0MDUzZDRjYjUwZTBkNzAxNzQ2YTc1NzQ5YTY3Y2EwOGI3Y2YwMjg4IGxlZ2FjeS10cnVuaworNDY2NCBlNzM0YzcyMzU3MjdlNzRiNTRhZDc5YjMwY2ZjZWYyZDM1YzI0MTBjIGxlZ2FjeS10cnVuaworNDY2NSBlYjNlNjFkYjBkZGE5YzVhZjQ1NTg5Y2EyMjFlMzgxZTZiMTVmM2M3IGxlZ2FjeS10cnVuaworNDY2NiA2NGViNDg3Y2E0NjVkNmI2YTI4NjA1ZTk5OGM4NzUxY2FhMTc3MWRmIGxlZ2FjeS10cnVuaworNDY2NyA5Mzk3OTFmMjE5YTYzZWQ4NTYxZWM2YmI3NTZjNGU3N2Y0ZTlhZjU5IGxlZ2FjeS10cnVuaworNDY2OCAyNzIyMjkzNDhmZTJiNzdhMTVjNGUzMTc1YTc1NjkxNDFlZWQ4MTVhIGxlZ2FjeS10cnVuaworNDY2OSBhM2JkNjE2MzJmMTQ1ZWQ5ODhhMWMyYWI3ZDU5YTBjNTA0Yzc5NzVkIGxlZ2FjeS10cnVuaworNDY3MCBhYmVkMzY4ZDY4ZWYxODkwYzY3MjVjZDkxZWI5ZjFmMmQyZWVmZjE5IGxlZ2FjeS10cnVuaworNDY3MSA3NmQ0M2MwMzM4NDgxMGI1MjcxMmFiZWRjNmI1OWVhNzFmOWNkMTk3IGxlZ2FjeS10cnVuaworNDY3MiBjZmVhYTUwODJiYTgzMWI2MjFhMDM0Yjc3MjkzYjg0ZWI3YzMyMjhmIGxlZ2FjeS10cnVuaworNDY3MyAwNjEyMTMyZTAwMTg1N2VlNGE4YzRlYTBmOTFmMzU2YzRjMzE2ZWM1IGxlZ2FjeS10cnVuaworNDY3NCA5YmMzYTViYWE2ODBlMzhkNDA1Y2NjNzE5OGU4ZDQ4MmU2ZDA1OTM2IGxlZ2FjeS10cnVuaworNDY3NSA3NGEwYTYxMjFhZjcxYjZhYzczNDk2NWFkY2JkYTcwNWM4ZjhhMThlIGxlZ2FjeS10cnVuaworNDY3NiBiYmI1NmRjM2I1MjZiNTUyYjUzZjY5ZTcyY2IyZGMwM2M3MGZmYmQ4IGxlZ2FjeS10cnVuaworNDY3NyBhYTMzNjU4MTVjMjBkNzViMjAxMzIzZWU2NGUyMTA3MzRmZjVkN2I0IGxlZ2FjeS10cnVuaworNDY3OCAzMjQzNWQzM2YzNGE2ZjQ0YzhlY2ZiNTQwOGQ0YTIzOGQ2ODY3ZTliIGxlZ2FjeS10cnVuaworNDY3OSA0OTcxOTdmMzU3M2MxMGI5NGUzZTEwOGM2ZTljY2RmZTI1MTg3M2RlIGxlZ2FjeS10cnVuaworNDY4MCBjMmQxOGI1ODIzMmVkZWYxNjViMzE1MGU2MjAzNDA5OTU5MDI2MmEzIGxlZ2FjeS10cnVuaworNDY4MSBlNTNkMDE5ZTdkNDc2MTJkMmU2NDZmZjc4M2Y1ODk4YmQ0ZmI2NGNlIGxlZ2FjeS10cnVuaworNDY4MiA5NTg4YzIzOGU2NjA5YzEzMTI0MTJiNWIyMTNkYWZhNjNmY2EwYmEwIGxlZ2FjeS10cnVuaworNDY4MyA0YmNmMWI5NmVmZWM0ZjExNmIzMzA5NDBmMzcxM2EyZmM5NzYyODgyIGxlZ2FjeS10cnVuaworNDY4NCA5MmU2ZjVkOGJlODJhYjkxNDQ4YmM2NzNmZDRlOGZmNGQ3NTZjNThkIGxlZ2FjeS10cnVuaworNDY4NSAxZThiMzQ3YTA1NmNmMzY2NmVmZTUzMTQ2YWUzNzI4M2RjODcyNGFmIGxlZ2FjeS10cnVuaworNDY4NiA4ZDVlMzZiMzdhNDEzMjI5ZmE5MWUxMTdkNzhhMWY1ZTQ3OGE5NzI1IGxlZ2FjeS10cnVuaworNDY4NyAwMTAzNzUzMmMwODYwYTFiYzk5NDExMzdhMjRkOWQ3Y2ZlM2JiMmI4IGxlZ2FjeS10cnVuaworNDY4OCA3YjY1NDA0OTZmNTU0YmI2ZTU3NGYxYTMyZTY1MDBmYjZlZGMwYjMzIGxlZ2FjeS10cnVuaworNDY4OSAwMWVkNGNkMjE1NzZjYmI0NTBjOGI4MTZlZjcxMGNlYTdkNDRmY2I2IGxlZ2FjeS10cnVuaworNDY5MCAxYjY2MjQ5NzQyNmI1M2ExMGUyZTg4ZjAwODM4ODY5Y2RkNjUzY2YzIGxlZ2FjeS10cnVuaworNDY5MSAwYjBiMThkNjU1ZDJlOWMwNWU0ZTU3ZmUyY2ZmOGQ2YTgxZTIxYzU2IGxlZ2FjeS10cnVuaworNDY5MiBiNWRjYmE3YjczMmQwM2IwZGJkYzAwMDUxY2I4MDFlNzdmMTNlNzA1IGxlZ2FjeS10cnVuaworNDY5MyA0NDJiYWU4ZmNmZGM2NTE0ZjE5ZDFhY2ZmOGJhNjExMTVkZjJmYjA4IGxlZ2FjeS10cnVuaworNDY5NCA5NGI4NDUzNWMzNGUxMWQ4ZWEyNWJhYmRiYzBiY2JiZTE0NjFjNTg3IGxlZ2FjeS10cnVuaworNDY5NSBmZWZhZTM3YzA1M2NmZDNiY2VmM2Q5MzlhOGYzZmQ3NTZiNzhhOGI4IGxlZ2FjeS10cnVuaworNDY5NiBkM2I1YmUwYzg3MmYzM2IxZWU5MTA4NjM0NGFkMmM3MGM2MjAyMWFiIGxlZ2FjeS10cnVuaworNDY5NyAyODNhOGViMmUzMTdjYjdkN2IxMTVhYzhiMDRhMmZmZTlmNjM0YmVmIGxlZ2FjeS10cnVuaworNDY5OCA3MmUwNWM2MWMyZmU1OTMzNzdlYTczY2I4ZWI0YjVjODdiMjA2MjU2IGxlZ2FjeS10cnVuaworNDY5OSA3ZmE0OGFiNGJlMGY0YmMzZjUxM2E1MDg0YzE5YjZmZjNhMDJmNjAwIGxlZ2FjeS10cnVuaworNDcwMCAxYWIzNWI2ZjYzOGEyNjZiNzE3Njc3NWY0NDA4Y2QzZTlkYjZhYmM1IGxlZ2FjeS10cnVuaworNDcwMSA4YWQxMzYzMjg3YWE4YmM5ODM1ZDJiNDUxMjk5NTY2ZjQ1MmIxM2MzIGxlZ2FjeS10cnVuaworNDcwMiA0MzhmNTNlN2NmZDE0ZTk1ZWE3MmQ4OWQwYzdiYzQ5ZjVhNTljMjA4IGxlZ2FjeS10cnVuaworNDcwMyBhNzZhNzlmODk2Y2Y1ZmUyMTEzYmI5ZjY2YWM0ZGQ2MDIyZDUzZDcxIGxlZ2FjeS10cnVuaworNDcwNCAzYmVmMWFmZjg3MWJjMzQ5MjA3MDg1OTc0NTE1YTM1NmQxZDU3YzA1IGxlZ2FjeS10cnVuaworNDcwNSBlMGEzMjQyZDVhZTc5ZDE2MjBhMjI2MjQyYThiM2NhYTEzOTRlYjkzIGxlZ2FjeS10cnVuaworNDcwNiBlOWQxMWY5YjgyZTJiNTgxYTk2YjczMjVlMjNjZmQwNzdhMzg5NDkzIGxlZ2FjeS10cnVuaworNDcwNyBjMjNkMDkyMjE1ZDJjM2U1ZjgwMzIyMjIyNWRmNzFhNmMzYTc2Njc0IGxlZ2FjeS10cnVuaworNDcwOCA2N2U4ZWY2OThhNDJmZjI3MjBhZjc4MTUwZWNkOTdkMGMzMzQ4ZDIwIGxlZ2FjeS10cnVuaworNDcwOSAzODJlZGVmMmQ2ZDcwZDM3YzM0Mjg5ZThiNzQxMTM4MjdmMjZiOGU4IGxlZ2FjeS10cnVuaworNDcxMCBkMDkxYjI0NmEzYTdhNWJiMmMxNDE1ZGZhMjEzY2YxOWZlNjRmNjViIGxlZ2FjeS10cnVuaworNDcxMSBlZTRjOTU0Y2Q1ZGY1MmU5YzQwNzM5N2Q0ZGJjZDFjYTEwNDI0NDM1IGxlZ2FjeS10cnVuaworNDcxMiBiMWE2YTgxYWYxY2ZmNDdkMzlhNTA0OGExOGNhOTgxNTU4ZjU3Mjc0IGxlZ2FjeS10cnVuaworNDcxMyA4M2QwNjQwNGY2ZTExNDQyY2QzMTBlNjljYWJhZmU3YTdmMjYwYWJhIGxlZ2FjeS10cnVuaworNDcxNCBhODFiNmRiNmQzM2M5NGU4ZDA5NDg2OWEyMTExYjg3MDg5OGI3MjAwIGxlZ2FjeS10cnVuaworNDcxNSA2NDVlOTYzNDNmODlmZWY4ZGI5OGY1M2Q2YTg4ZjM3NGZmMGQ1YzdjIGxlZ2FjeS10cnVuaworNDcxNiAwM2JkNzk0MzJmMDY5YzYzMmFlNWFlODQyMWY3MjRjMTNlZjcxZGEwIGxlZ2FjeS10cnVuaworNDcxNyA3ODk1YTk3MzEzZTVmNGNmYWQyNGM1YTZiYTU2ZTg0NjQ1MzllMjBlIGxlZ2FjeS10cnVuaworNDcxOCA4NWFhMmU0ZDAxMjNjNTNjNWU2OGU4MzRhNDZmYzcwYjg1MTk1YWNhIGxlZ2FjeS10cnVuaworNDcxOSA0YmNjOTI5MTZmYWJiMmY2YzUxZTRlMTE1MThmNjY3ZWRhZjdlY2Y5IGxlZ2FjeS10cnVuaworNDcyMCAzYTgzYzNjZWY0YjJiNWM4NGE5MzY3ZmUyZmIwMGQzNmI5NDMxZWE1IGxlZ2FjeS10cnVuaworNDcyMSA3NDExYjZhMDY5MjBjZDZkNGJlMjEwNmRhZjE0ZmMyMzg1ZDNiYzgwIGxlZ2FjeS10cnVuaworNDcyMiBhYzZmNjliMWU5OTMwNzE2MjAzYTdhNTRhMTI2ZmI4ZTc4NjIwNWViIGxlZ2FjeS10cnVuaworNDcyMyBhOGM2ZGEzYmQzMDU2ZGQ1NmY5ZmUwMzhjY2MxNGIzOGQ1YWIxOWI0IGxlZ2FjeS10cnVuaworNDcyNCAzYTY1OGVlYzFmMDJlMTQ4NWU2ODMzZDZmMGViZDFjOGI3ZGFhNmUxIGxlZ2FjeS10cnVuaworNDcyNSA4YTEyNDRlN2NiM2JkMmE0ODNjZjNmNjlhNTBmMGVjM2I4NDczMzIzIGxlZ2FjeS10cnVuaworNDcyNiA1OGFhN2YzYjE2OTJiZjU3OThjZWExNjZkZTMyMDE5ZGFmOGMzYmFjIGxlZ2FjeS10cnVuaworNDcyNyAwNzY1ZDBiZDg4ZDZkYTVhZmYwNDE4NjcyNDI0MGYzMzY0ODg0NDUyIGxlZ2FjeS10cnVuaworNDcyOCA5MDg4MGJkMDkyMjFkZWNkM2FiYzhmZjUzZTdjZmZmNjM5ODcyZjg4IGxlZ2FjeS10cnVuaworNDcyOSBlNWI5ZjY0NDA1M2U5ZTBjNGNkMWJkZDkxMDM5ZWU5Njk5NzE5NDE5IGxlZ2FjeS10cnVuaworNDczMCA2NmQ2ZDEzZGY0ZjhhOTgyMDRlYzRiYTQzYmRiNGIzMzczMmVlNzU3IGxlZ2FjeS10cnVuaworNDczMSBkZjdlMjZiNWM5MTg5YmE0M2EwYTBkZjQyZDgyM2I0YTkwZWQ5YmY5IGxlZ2FjeS10cnVuaworNDczMiA2NTY0NDc2NjE1OGFlOGU0Y2E5NzMyYTU3MzI2OTZmNTNiNWI2ZjJhIGxlZ2FjeS10cnVuaworNDczMyA2MTg3MDFjZGY2MDAwMTA2MDJkOWRiYTY5NDI2N2EzZDI1YmE1NmYyIGxlZ2FjeS10cnVuaworNDczNCA2NTBjYjY3ZDc2NTk4NDJkZWU4ZGNhOTliYzU1NWZmYTk1NzI1ZWJhIGxlZ2FjeS10cnVuaworNDczNSBlZWFhZjg3NWY3YjY4MTM5NzNlZTdkYzBmMWRmNzUzNjNmMmQ4NmIyIGxlZ2FjeS10cnVuaworNDczNiBiMDM0YjRlYTJiMzk5MDI2ZWJjZWI1NGRiOTkyYmIxZGYwOGFhMGNjIGxlZ2FjeS10cnVuaworNDczNyA3ODU5ZDNhYWIxYjQwNTE5ZDg5MTNhYjIyMjc1MmYxZDU0ZTZjMmRkIGxlZ2FjeS10cnVuaworNDczOCA3MWMxMWE2ZTRiYzAwZjJiNzljMjE5YTEwNmIyMTQ4MDU0NzE4MDQ4IGxlZ2FjeS10cnVuaworNDczOSA1ZTZjMGNkYWE3YzFiYmNjZGMyZDZkNjEwMmU5MGYyODkxYzBmMmJmIGxlZ2FjeS10cnVuaworNDc0MCA1NTQ2ZjRhNmUzYzM0ZmQyZTMxOTdmNTdiY2YyMmUyNjAyODEyNGExIGxlZ2FjeS10cnVuaworNDc0MSA1NDBmODQ0NGVmOGE4NzMwMDkzNDE3Y2RlYWYzYzJhZjg3OTU2ZDQ4IGxlZ2FjeS10cnVuaworNDc0MiBiNGNhYWMxNDI4ZDBkYTdlZjA5OTkwMjBhNzAwZWVkZTI5ZTVjZmVmIGxlZ2FjeS10cnVuaworNDc0MyAzMTk1ZGI2Njg5ZmQ2MTNlZWFiMTZiNjhiNmVkMDgxZDE4NDY4ZDFhIGxlZ2FjeS10cnVuaworNDc0NCBmNWE2ZTZlZTUyOWMwN2JhNzVjNTY4NGQwNTVjMzZmNWNmZGRiZDk4IGxlZ2FjeS10cnVuaworNDc0NSBhYzhhMjI1YjA1MWI3NTc3MjIxN2I0ZjBlNDkzMWUwMzU4NmY3YjJhIGxlZ2FjeS10cnVuaworNDc0NiAwMWE5NTQxMjQ1NzcyNGZiZDIxYWE3MDE2ODY5OGYwMTYzNjEyMTg1IGxlZ2FjeS10cnVuaworNDc0NyBhMjQxNDYyNDE5OTEzYjc4NTFhMDdlYTU3OGIxM2E5Zjg1ZGEzYmIyIGxlZ2FjeS10cnVuaworNDc0OCA2MjYzZTJmZDkzOTg4ODEzOTg4MTU0ZjNiYjE0ZmU3YmY4ZjJhYTMxIGxlZ2FjeS10cnVuaworNDc0OSAzZDZjOWE0N2VhNDQ1YTUzZmIyMzcxYjZkYjAwZjk1ZDJmOTMxNWY2IGxlZ2FjeS10cnVuaworNDc1MCBmMTdkNmU2YjQwZGFiMTRjNWFjYjE1MjkzZjY5ODI1NDc0YWE4ZjVhIGxlZ2FjeS10cnVuaworNDc1MSA5NzE3ZjZhOGY1ZmFmZTllYmNmMmY2OGRlNzQyNzhmZjJlMDg2ZTE5IGxlZ2FjeS10cnVuaworNDc1MiBmZThkYjc4ZjMxMWM5NmNlZDY4Y2Q4Nzk1M2Y4NmNlMzRlNTUwYmI5IGxlZ2FjeS10cnVuaworNDc1MyA5OTAwOTllZDc4MTA1MWQ1NWU0YzAyZjEzMzFhZjRhMDJjNzY1ZTQ3IGxlZ2FjeS10cnVuaworNDc1NCBkMjA0OWExZDNjYzVjZjFjZDJhZTY1OGMxZGU0MzkyYTJlMzM3ZGFjIGxlZ2FjeS10cnVuaworNDc1NSBhZGFiNjZmYWMzMGU5N2VjNzg2NmZmZTAzZTM3MDMzNThlZmVhZjZhIGxlZ2FjeS10cnVuaworNDc1NiA2YTA0MjU2ZWEwODc3YzA3NGQyYTkzODhjNDYzZmYzYzkyZWYyOGRhIGxlZ2FjeS10cnVuaworNDc1NyA1MDVmYzQ3OGZmMDg1MTRlNTIzZGE2MThkNGY1NTNlMTk3NjgxZGIxIGxlZ2FjeS10cnVuaworNDc1OCAxNzBiOTk4NjJkMDk1ZDk2Mzg1OTMxYTFiYjNkZmMxNDU5Yjg0ZmVkIGxlZ2FjeS10cnVuaworNDc1OSA2NWE2OGM1MWU5ZjJhNzBmZjM2ZmZjZDA5NmUzZDkwM2FlY2FmZDM3IGxlZ2FjeS10cnVuaworNDc2MCAwOGI0NTdkNmI1MTZlZGY0NTZmZjc2MzYwN2EyMDQ4NWEwYTdlNGNkIGxlZ2FjeS10cnVuaworNDc2MSA1YWVlMmM1ZDhkZmZjYWVhM2U4NmE3NzhkMDdiZmFhNGE2YmM2OWFjIGxlZ2FjeS10cnVuaworNDc2MiAxNGIxMjZkMGI1YmUzNGJjOTdiMTJkNjIyOTgwOWVkZWZhZGYwMzc0IGxlZ2FjeS10cnVuaworNDc2MyA1NmNhNjdkZGVjODU4YjU2ZDBmMDAxN2ZmMmJjMWY2YTQ4MTk4N2Q3IGxlZ2FjeS10cnVuaworNDc2NCAwNzkxM2ZiOGY5MmYwNDk5MzkwYjdhYjEyOTM3ZDIwNWQ1MzU5Yzg0IGxlZ2FjeS10cnVuaworNDc2NSBmYzZlOTYyMjEwODhiMDgyMzU3YWQwOGI4NzgyYzQ2NzdjMDZiOWUyIGxlZ2FjeS10cnVuaworNDc2NiA0MGFlYzQ4Y2QxZTIxNDdkOGY5YWYwNmIxY2IwZGQwMGZhY2U0M2IzIGxlZ2FjeS10cnVuaworNDc2NyBmZjcyYTVmOWE0ZWUxMjRhYTBkODhhOTEzMGJkYjg2NTQ5NmU4MWZjIGxlZ2FjeS10cnVuaworNDc2OCA1MTVlMWQwMzM5NGFkODY2OWVjNGQ5OTgzODRkZjA3OTI2MDk0NzczIGxlZ2FjeS10cnVuaworNDc2OSAxNDI1NjE3NTE0YWNjZjhhYTMwYzE1YzU1MzA1MDZmZTg4MjFmZTBkIGxlZ2FjeS10cnVuaworNDc3MCBlZDgyMWE5OWJhMzkyMzk1MDdjMDBjYTVkN2RlNzM1ODhjMGM1MTMwIGxlZ2FjeS10cnVuaworNDc3MSAxY2UwN2Y2NDg2MmU5ZjVmODBjNjU2ZTY4ZjAxNTdjNjNlODZlZDk1IGxlZ2FjeS10cnVuaworNDc3MiA5OWU3YWMyMmJkMmUyZDUxODhjMGRkYzIyODIwZDYxN2FhYzZmMDgyIGxlZ2FjeS10cnVuaworNDc3MyAxZTcyMDcxMjgxNjc4OGM2Y2VkOGU5NThmOTc3NzY0ZTQ1YThhM2JhIGxlZ2FjeS10cnVuaworNDc3NCA1ZjcwNThkODE2Y2Y5MWYyNTMzNDBkNGRjZDBiZjZiOWRmNmM3ZjNkIGxlZ2FjeS10cnVuaworNDc3NSAzMTYxZTdjZjIwNTRmNzM2ZjhjMjhjMTZjZDNiOWFjMWRmZDdkOWI4IGxlZ2FjeS10cnVuaworNDc3NiBkM2UyZjk4OGYxYWYwZTE0ODA1YzU2MTVmYjM4YzQ0MDE1NzllZDBiIGxlZ2FjeS10cnVuaworNDc3NyAzZGZlZjY3ZTBkZWQ5MGU3ZDExMjhhM2ZjMmEwMjQyMGE1YWEyZjMwIGxlZ2FjeS10cnVuaworNDc3OCBmYWFlY2U3Y2NkNmU3MWIxNWQ0ODAzNzIwMjUyMzhkYjYwYTRhY2MxIGxlZ2FjeS10cnVuaworNDc3OSA3YmRlNGIxZGY0OTQwOTdmN2FhMTk5NjU3NGI2M2VmZjg4N2ViZWQwIGxlZ2FjeS10cnVuaworNDc4MCBlOGQyMDc2NThhMDQ1MmIxZDU5Mjc3M2QzZWU4NGI1YzA4YWRiNmY5IGxlZ2FjeS10cnVuaworNDc4MSA0M2Y5ZTc1NDljNzBlNmU4MzdkMGUwYTY2NmFkMjQwNmY0ZTM2YjNiIGxlZ2FjeS10cnVuaworNDc4MiAzZWRlYzgyMTFhMzZhZDU3MTkzZTlkODgxOWY3NTkwMDBmMmUyOWZmIGxlZ2FjeS10cnVuaworNDc4MyAxYjI2MmQxOTBhNGE0ODEwOTgzY2MzZDY2NWI1NTk0NDkzMzk5YzE5IGxlZ2FjeS10cnVuaworNDc4NCA4NDU2MGY0YjI5ZWYwOWEyMDljZGNjNzg4ZDRmOTY1ZjNlYWUzNzIxIGxlZ2FjeS10cnVuaworNDc4NSAyNDJkZDVlZDNiMDg1ZWVlMmY0MjY3MmJhNjUwNDk1MjIyNmEyOTllIGxlZ2FjeS10cnVuaworNDc4NiAzMmU3ZDI2OTZkNzkxYzY5ZWM5OWFiMTEyNTYxN2U4ZjRjNzhhZTI2IGxlZ2FjeS10cnVuaworNDc4NyA2NDY4ZmQwMjUxZDI5NjhlNjMxMTg2ZmE5NDZhNTA0YTYwYWZkMzZhIGxlZ2FjeS10cnVuaworNDc4OCBkOGI0YzdkYjc3YWU2YmZmOGIyNWVhMjc5ODNhYTI1MDQ2OTU1MjJkIGxlZ2FjeS10cnVuaworNDc4OSBlMTFlNmIzNTg1MzEzYWE5MTlkN2E0ZTJmODEzNDU3OTdmZmY2MzM1IGxlZ2FjeS10cnVuaworNDc5MCBiMjI0MTE3N2JjY2M2Mjc3MzMyZThhNWU5NTdmOGNiODc2YmYzNDAzIGphcgorNDc4OSA5ZTgyZGFmNzYwNWJhZDc5NzZhOWFiYzk5N2NiNWUwYWJlNDM0MDc4IGxlZ2FjeS10cnVuaworNDc5MiA3MWU2MDg3MWM2ODFjZTkxNDE5NzRlZmFjM2UwYjMzYzlmZTMyODhhIGxlZ2FjeS10cnVuaworNDc5MyA0YzJmMTQ1MjEyNWQ1OWQwNzVjNmZlN2RhZjkwMTRjYmRmMTc4ZjM2IGxlZ2FjeS10cnVuaworNDc5NCA0MTI3ODkzYTg3YWQwNWEwMjJlZTcwYjU4YWQ4MWM2MzdmYmY5ZTY1IGxlZ2FjeS10cnVuaworNDc5NSAyMWYwZDVmMThjZGFlNjEwOGY1ZmM1ZmQyNTQ1MTk4MmQ2MDE5ZjlmIGxlZ2FjeS10cnVuaworNDc5NiA2M2ZhMzg3YzAyZmViY2IwOGIwNTRhMGVlMjAzM2ViMDNhODc3MDY1IGxlZ2FjeS10cnVuaworNDc5NyA2NzBlNTBhZTM4OWQ1NGNjMzIxMDFjZmI0ZDVhZDY4ZjYwOGYwNTU2IGxlZ2FjeS10cnVuaworNDc5OCA0YjYxN2ZlZTQyN2QzNjM4Yzg3YzBkNjJkOGM5ZjUzM2IzOGI5Yjc3IGxlZ2FjeS10cnVuaworNDc5OSBlZDBhYTRhNWQxMDZiOWMyYjdiMmVkM2Q4NTBlNDg0YmQ3MDY4NDYzIGphcgorNDgwMCAyNzlkNTFhMThhZTRiNGU4ZGNmMDA3NzYwYTk3NzhkOGJmZWY4OGIzIGxlZ2FjeS10cnVuaworNDgwMSA5NTUyZWRiNGVhYmZhYzM0MWE2ZDNlNGYxMDEzZmE5NDhjMDE3NzBmIGxlZ2FjeS10cnVuaworNDgwMiBmMDlkMzI1MmEzOGIyMTNlZWVkMmM3NzZhMThiZjI3YTIyNjM4M2Y4IGxlZ2FjeS10cnVuaworNDgwMyBkMDU2ODU5OTM0NzZkNGNiNzBmNWIzNGFkZGYxMTE4MDEwZjM5ZjA2IGxlZ2FjeS10cnVuaworNDgwNCBlZDQ4NjQ2MWRlZjY3NmYwNjE5OWFjYWZiYWRiZmNjMWRlYTFhZTczIGxlZ2FjeS10cnVuaworNDgwNSBkNjVjNDg1ZTBhZDgyMzYwMDM3ZjhhYjU2YzQzODk5MWU1ZGRhZDg2IGxlZ2FjeS10cnVuaworNDgwNiBhMjA1NDkzMzc3NWIwMDE0ZDYwNWZkZTNmN2YxNGE4NWVlMzgxM2ZlIGxlZ2FjeS10cnVuaworNDgwNyA4NWZhMDJiODVkN2QxMzBhMTRhOTFkNmJjMmU1ZjVjNGU1NjAxZTAwIGxlZ2FjeS10cnVuaworNDgwOCAyNmIxYjE1ZmM4ZWMzNzU2YTU2M2U0ZTcxZTdiYmM3YTgxZWE0ZmJjIGxlZ2FjeS10cnVuaworNDgwOSA4YTg3NjUzNDNjYzBkNDU1YTA2MTg4MmU1N2NhOGExNDJkOWZiMjJjIGxlZ2FjeS10cnVuaworNDgxMCBmYmFmNTQxNjk3MTE3M2IzNjYwNmRlNGU1YzU5YTc1YmY1NjkwMmVlIGxlZ2FjeS10cnVuaworNDgxMSBkZjViNzI4YjhlYjYyZWU3OTg2MDdiYTM4NjUwYTYxM2Q4Y2VhNTgxIGxlZ2FjeS10cnVuaworNDgxMiA2YTk0MTE5ODQ0ZWIzODIwZTQ0ZmMzMzY5NDA5ZmNjOWJhYzczOTk3IGxlZ2FjeS10cnVuaworNDgxMyAxNzQwZmQ3NmZjMzMyZmJjNDc5NWUxZmM4M2ZkZGQwNzNkNTQ5MTZlIGxlZ2FjeS10cnVuaworNDgxNCA0YzQzY2JkY2Q1MjQzZDk5Y2MyNTExZTI5NGZiOWRmY2JjMjU1ZDAzIGxlZ2FjeS10cnVuaworNDgxNSA5MTZhOGZmMzZhODU0NzBiZmE2YTBjN2EwMTU2M2MwNjBmOWU2NDcyIGxlZ2FjeS10cnVuaworNDgxNiA3ZmQ3NDEyZTcxODg0OGUwZjMzMzNjMmI0NmQ2MTgyNDliOTdlMDZlIGxlZ2FjeS10cnVuaworNDgxNyBlODBhY2ZhMTNhYzAwMDQ0OTdkNmIzMWU0YTVkYTU4MjBkMmQ4NmMxIGxlZ2FjeS10cnVuaworNDgxOCA3NDdmMGI3Y2I3YmU0MzRjYjk2NWVjZDE0ZjUyYzRmOTc1ZjM2MTM0IGxlZ2FjeS10cnVuaworNDgxOSAyMWEyM2NmYzQ4NDMxYWU5MWNhMDEzZTAwZWExMWMwMTIzMzUwM2JlIGxlZ2FjeS10cnVuaworNDgyMCA5Njc0N2M3ODdhODMzYzMxOTBkM2QzYzIwMTk0YWIzMmJhOGVlYjFiIGxlZ2FjeS10cnVuaworNDgyMSA4Y2Y2M2MzMGZmYzg3N2VjMGFkOTQ2MDBjYzE0MjE5MjU2NjNhODYxIGxlZ2FjeS10cnVuaworNDgyMiA5NGJmMmYwNWRhMzE5ZTZjZTM1ZTMzZjdhYTk3YTM3Y2YyODRiM2IyIGxlZ2FjeS10cnVuaworNDgyMyA5MTVmYWJlYzY0YTMwYWQ3MzNiMTI5MDIzYTJmMDcyN2Q2M2NmMjlmIGxlZ2FjeS10cnVuaworNDgyNCA2NjNhYTA1OWUyOWZlYzY2ZjAzMzgxOThmYzMyNmQ5YmIxMDMyMGU4IGxlZ2FjeS10cnVuaworNDgyNSBiYTFiNzZjMDkwNDE0YTNlYzgwNjhiNTcxNWQ5NDZlYTEzMmU2Y2MzIGxlZ2FjeS10cnVuaworNDgyNiBlMzg2MDM1Zjg5N2RmZDkxYWM2MzU5NjI2NTRjZGYzY2I4NjE2NTQ2IGxlZ2FjeS10cnVuaworNDgyNyAwNGY2MWE1YTc2NTQwOWM0ZDUwYWY3NDIwYjkzNTc0YWIwYzcyYmNmIGxlZ2FjeS10cnVuaworNDgyOCAwYzgzNWM4MDQzMjI0Y2Y1OTA1NTMyNzQ3MTdlZTRmMjgxNzAwYzNiIGxlZ2FjeS10cnVuaworNDgyOSA1ODJiMDBmYmFiMTYxNDUyM2Y4ZDRmNDMyMzI3MDYwYmVmNDM1Mjk5IGxlZ2FjeS10cnVuaworNDgzMCAzOTc0NzhiY2EwYzRkYWMxZGMwM2UwMmQ0ZDNiNDY5ZTIwZTdjOGU5IGxlZ2FjeS10cnVuaworNDgzMSA1MWM4ODI0OTg1ZjhhNTA4NTBhZDBlZWI2ZWFkZTFhNzNiZDk2NzVkIGxlZ2FjeS10cnVuaworNDgzMiBjMzFlYWVkNzc5OGJiYTQxZjMxNGQzOGU2OTNhNzRmOWU2OGEzNWY0IGxlZ2FjeS10cnVuaworNDgzMyBkYWIzNGNiZjhkN2ZhM2Y0MmE5OTc5Zjg3ZTkyMDJiN2U4YmM1YmZlIGxlZ2FjeS10cnVuaworNDgzNCA0ZTg3ZjNhM2YzM2E4N2FiZmIwOGQ4ZDczYWU5N2Y4MDI1N2E2NDFkIGxlZ2FjeS10cnVuaworNDgzNSAxYTIwZDUwNTg3NDQ0OGJjNzAxYWJlYTE2MTU5MmNkNTQyOGQ4YjNmIGxlZ2FjeS10cnVuaworNDgzNiBjOGE4MzIxOGJhNjE4NzBhNmM3MTc4MDFmYjdlYTViNjRiZmVmZWMwIGxlZ2FjeS10cnVuaworNDgzNyBmZjNmYzMwZWQ3NjA2OWExYjNkZGVlZjBmMWY0ZDNiMzFmMDdlNTc2IGxlZ2FjeS10cnVuaworNDgzOCA2NDUwZDg4MjhkMmI5ODhkNDE0MDIwMjcxNmQ3ZTkxNTRkYmRjNGU0IGxlZ2FjeS10cnVuaworNDgzOSA0Y2M4MTM3Y2NiNTZjZmZmMzkyZjY5YzZiZDU4MzYyM2NhZTczNmNiIGxlZ2FjeS10cnVuaworNDg0MCBmOGFiOTI1ZWZkYTg4YWUwZGEwYTBlM2U1ZTcxNzgwYWM5ZDQwM2EzIGxlZ2FjeS10cnVuaworNDg0MSBjNjUzM2I4OTYyODg4N2EzMTFlOWNmMzhiOWIxZDhlZDhkOTZkMGRlIGxlZ2FjeS10cnVuaworNDg0MiBjMDlkYWJmNzA5OTZmYjlhOWY3ODY2ZjI3YjEzODUzNTY4OTkyMjI3IGxlZ2FjeS10cnVuaworNDg0MyA1MzEzYWM2ZjM0ZmRjYjAzZTY3M2MxNzYxNDBmODA3N2MxZGQ4MGI1IGxlZ2FjeS10cnVuaworNDg0NCBmOTc5ZTViZDZhMjIzMGU3OGM1MjNiZjBmOWU5OGVhMGQwOTFlYTBhIGxlZ2FjeS10cnVuaworNDg0NSA0OWJmZWYxN2IxMmI2NWZhNzZiZmIwOWNmMzRhZGE1YTVhNjhiOGNiIGxlZ2FjeS10cnVuaworNDg0NiBkZGIxMzg2MmZiYjJiZWE3NDdhNjgxN2I5YThkZGVjYTNkZDFhNWQwIGxlZ2FjeS10cnVuaworNDg0NyBlY2JiYWE1ODRmM2MxNjczOThlMDZiNDcxMjVmMjNkMzFjMzYzMDg5IGxlZ2FjeS10cnVuaworNDg0OCA5ZGM4NzVhZDA1MGM4OTk0MGUzYTU5M2FjZDY4Mjg3ZTRjNzA5MGI0IGxlZ2FjeS10cnVuaworNDg0OSBiMTU2YmY0YmU2MmYxYjZhOWM1NzEzNTJhMmQ2MTllZDc2Y2U0MmZhIGxlZ2FjeS10cnVuaworNDg1MCBmYThjZGQzY2M1NDU0MDU1MTk0M2MwMzIwOWQ1YmY0ZmRlYWE1NGRkIGxlZ2FjeS10cnVuaworNDg1MSA0MmI1Njg5YTc0MDk1ZGQ4MDkwMjY1Y2FlYjYwZTAyMzZlOGQ3YTE4IGxlZ2FjeS10cnVuaworNDg1MiAyOWNhNDVlYjNhYjc1MjNiYTc1NTc5OTk3NzQzYTk3MDhlN2IyNjBiIGxlZ2FjeS10cnVuaworNDg1MyAwNzM2YTdlYzJmMjg5ZTVkZWU5MWQwY2U4YTJmN2Y5NWJiMzkyNjllIGxlZ2FjeS10cnVuaworNDg1NCBjYWJiN2M1NzMyZWYxYTM4ZDlmNDE0NmFjNTgyNjE4MjQwYzczZGQ2IGxlZ2FjeS10cnVuaworNDg1NSA0MzhhOGMyNjVlYjlmNTRjODY3Y2VmZjdhY2QyYjkyYmM5NGIxM2M3IGxlZ2FjeS10cnVuaworNDg1NiBkMzFmNjk0YzExYTg5YjcxMTE3MDYyOTc2MzIxNjhkZmFmMzE4MDY2IGxlZ2FjeS10cnVuaworNDg1NyAxMzI1YjNlOGUzZDNjZTFmNjVmMDc2ODAyYTM4NGVhZWNhNDliZDE3IGxlZ2FjeS10cnVuaworNDg1OCBjYWI2OTk0NTM3NzVjMTkwOWJiYWM4NjBhMTkyODI2M2UwODJlODg5IGxlZ2FjeS10cnVuaworNDg1OSA3MmM3MTVjMDA0Yzg5ODYxZDUwNGJlN2VmNGNiNTBiNDY2YzQ3MjkzIGxlZ2FjeS10cnVuaworNDg2MCA3MjQ2Yjk5ZDI5NjZhMmMyYjI1NmVlNmMxZjAzNDVkYWZlYWEzMDkwIGxlZ2FjeS10cnVuaworNDg2MSAwYjYyYjUzZDQzZjg3ODZiNjU0MWEzYTgzYTc0MzJmM2U3OTVhNzRkIGxlZ2FjeS10cnVuaworNDg2MiBlMTQ5NzVjOTEwZjBjYTFhN2Q2NDgyZGJhMGEyMzA2OWZjZTc3MGRhIGxlZ2FjeS10cnVuaworNDg2MyA5YTk0MjkyYWE0YzE1YmJkZDA1OWNlMjY0MjY4NGQ5MmVkZDI2NjgyIGxlZ2FjeS10cnVuaworNDg2NCA3N2ViNjM3MTZiNGY5OGQzYTU0NjBjMGJhOGZjNTFiMmM2ZDg3MGRmIGxlZ2FjeS10cnVuaworNDg2NSA0ZmMwMzNjYjU1NDQ1YmE2ZTFhYmIyNDZhODZiNjc3Yzc5NWU5MjVmIGxlZ2FjeS10cnVuaworNDg2NiA0MDNhNTYzMTIxNGIwMjQ1MTAyYzUzMGJkZGRkODVjZDRiMmM4OTM2IGxlZ2FjeS10cnVuaworNDg2NyBkZDFhYjIwZjgyMjNiMzk4NjQzNGRiNWM1OGI2MWEwNzc2YWZiZTdlIGxlZ2FjeS10cnVuaworNDg2OCA3NWFlMTA0ZjdlNmM1MWVhMmYwNDU2YzcyZmVhMjQ5MWY0OTczY2E4IGxlZ2FjeS10cnVuaworNDg2OSA4MTBiYzE1ZTE4Zjk4M2JlZjIzNWJlMTZhM2IzNWY2ZjEyMDU3YTYxIGxlZ2FjeS10cnVuaworNDg3MCA2MTQyNTE4MzZjZWIyMjczMDk2MjY1OTk1YjgyYjVmYTMzZmYyNjAzIGxlZ2FjeS10cnVuaworNDg3MSBlZThlOTFhMTc3NDVhYmI3Y2ZhMTQyM2M3NWYyODY2YzdjOTEyOTllIGxlZ2FjeS10cnVuaworNDg3MiA3NWFhNTI0NmIyZjZmM2QxZDJmYjA3NWRkMTIzOTlhZTg0MzI2NzM4IGxlZ2FjeS10cnVuaworNDg3MyA5N2U1NzA1MGUyNzYwY2ZhMjcyZjUyZGMwYjJkMDg2ZWI1ODhkZDk4IGxlZ2FjeS10cnVuaworNDg3NCAyMmIxYWIwZTY0NzM1ZGI3Zjg4ODM0YTFlZDRiOTk0YWRjZWQwNmNlIGxlZ2FjeS10cnVuaworNDg3NSA0YTQ2MmFhY2MxZTk5MTQ1YjgwM2NiZjhiMzBhODU1NjU3MWY3MmIyIGxlZ2FjeS10cnVuaworNDg3NiA2YmVlZjE3ODcxZjk4MmQzY2ZiNTRjMGJiMzlkN2ExZTM3YjE1ZWFlIGxlZ2FjeS10cnVuaworNDg3NyA2ZWRhNjQyZjE5ZDAzNzgwYmYwMjkwNzJmYTdlOTE4Yjg1MjI5NDRjIGxlZ2FjeS10cnVuaworNDg3OCBmNGY3MWViZWE1M2YxNDU0MjNlMTBhMzVmZmI0YTQzOTZhMDE4M2EwIGxlZ2FjeS10cnVuaworNDg3OSA3M2VlZmY0ZDQzZjg0YWQ3NmQyYmIyZjBlMGM0ZmI5NDA3MGNiYjE5IGxlZ2FjeS10cnVuaworNDg4MCAwMGY0ZTQwMDU3NWE5NzM0MGU2MDkxMjE2NzY4ZDFkYmE1NGU1ZmQyIGxlZ2FjeS10cnVuaworNDg4MSBlY2NmNDkzN2YxZGM5YWQzNWFlZmVlNTBkNDdmM2E0YmEyZmRmNmU5IGxlZ2FjeS10cnVuaworNDg4MiA5YmYxODk5NmVlZDhjOWRmNmIzZjRlYWQwMGQ1YjQyZGVkNDk5YTE5IGxlZ2FjeS10cnVuaworNDg4MyBiZDNhZDY2MzRlNzY0ODIwNjFmOWZkNGZjZTU5MTE0NTE4ZjliNzJiIGxlZ2FjeS10cnVuaworNDg4NCA3OTI0Yjc4MTlkOGY5NmM3MmExOGFlOGY5OTE3YTU3ZWM2NWJjZDE0IGxlZ2FjeS10cnVuaworNDg4NSBlZmIwNjg1YTZjOTFjYmU2NTg5YTkzNjRjMGM5YWYxNTZlMjYyY2UyIGxlZ2FjeS10cnVuaworNDg4NiBkMzlhYWI2YzEzMGQ0NWRiODk0ODg4NWYzZDZmMjljNjBkMWU3MDNlIGxlZ2FjeS10cnVuaworNDg4NyBjYmI0MDcyZDUzOGJlN2YwNDJhZWY4NWFmZTAwNmJlYjkyYWJmNjY5IGxlZ2FjeS10cnVuaworNDg4OCA0NDViZWE4Y2VhYjFkMDcwODNkM2U0YTY4ZDhiM2NkMTVmM2E2YzhkIGxlZ2FjeS10cnVuaworNDg4OSA2Y2JkMjgzMGI1YTIzOGNmNTgyODQwODU3NjY2NDYyMWFiZmJkYjRlIGxlZ2FjeS10cnVuaworNDg5MCA1YmMzNDFjNDA3MWNkMDkzOTc2ZGE4MDQ3ZWIyOGMxNDMzMGNmN2I1IGxlZ2FjeS10cnVuaworNDg5MSAxZThhZWJhYjg3NGFlMTI1ZTdmZDQ1Yjg2ZDBkNjUzN2E3MGEwZTAwIGxlZ2FjeS10cnVuaworNDg5MiBmYTk4ZGRhMDc4NzdmMDg4ZmIxZWQ3NTY0YmZhYzI2MGViZTkwYTczIGxlZ2FjeS10cnVuaworNDg5MyA2MmViYmNmZWE4MjcyYjg0ZDYzNTk4ZDc2Zjc2NWNkZjc4YjdiZTFkIGxlZ2FjeS10cnVuaworNDg5NCAxZjU5ZjJhMTMzMTI5NmVkZjAxMjEwNTk3MDE0MjYxOWVjMzM2MmZmIGxlZ2FjeS10cnVuaworNDg5NSBjMWQyNzA0M2MyMmY0NWI2NDE4ZjY0N2RhY2I1YTY0MDI1NzgzMTJmIGxlZ2FjeS10cnVuaworNDg5NiBkNTc3ZDc0OTkxOGQxODNkZDYzMmQxNzM3MDllNjAzMGMyMjk5Mzg1IGxlZ2FjeS10cnVuaworNDg5NyAyZjg5ZWMxYTljMzhjN2Q3MjE5MmM3NGYwNTAwODljODVhMjA4YTMzIGxlZ2FjeS10cnVuaworNDg5OCBhNWU5NWY5ZGU5MDAwZTU3ODgyY2JiM2FiODdjODZjZDdlN2QwMjE5IGxlZ2FjeS10cnVuaworNDg5OSAyZGNmNzUzODM0N2E5ZDY4ZjJlOGM5NTk4YWRjYTcyNDMxNTlhYmRjIGxlZ2FjeS10cnVuaworNDkwMCA5OGMxZDg0MTAxYTUwODEzYjQ1YTFmMDFkMTAwNWUzNmI2YTQ3YzU3IGxlZ2FjeS10cnVuaworNDkwMSBmNjE3MTZhZDBiN2Y1MWYzMWMwMjNmMzRlNWFlNDJhODNkOTczMTI4IGxlZ2FjeS10cnVuaworNDkwMiA2ZjEyMTFiMmUwNzc5YjExMDYyYjliMmNjZTY5MGYyNDQ1MDc1M2ZlIGxlZ2FjeS10cnVuaworNDkwMyA3MzQ5OWE2NjdlNzg0ZWRhNzQ4MTM2ODYxZmQ0YjBmNzdhODEzZjE2IGxlZ2FjeS10cnVuaworNDkwNCAyYzY1NjVmMWI3Zjg2NDQ1OGRkNTNhMjlmYjE4OGJlZDI1YzBmZWFmIGxlZ2FjeS10cnVuaworNDkwNSA4ZWVlY2QyMzNkNTY5YmJhOWY4YzIzMDk3ZGRjMjU2OTdmMzI4ZWVjIGxlZ2FjeS10cnVuaworNDkwNiA5NGE2NDM2NjU1ZTAzZmI5NzUzODE0M2VhODZmZTdlYzcwNDQwNjdiIGxlZ2FjeS10cnVuaworNDkwNyA0ODBiMjUxYTA0NjgzNWIxY2I0NTg5MzFlNTFiNGFhMmQwZDY1N2JiIGxlZ2FjeS10cnVuaworNDkwOCA5ZWZkNDA4ZmM5ZjZiYjcyOTM2YmRhNmI2Y2NjNjQxMGU2Y2RhYzA1IGxlZ2FjeS10cnVuaworNDkwOSBjZGQzYTcyMWI0MGUzZThlOTU3NzUzOWQ2NDg4ZThjYmUzNjU1MjVjIGxlZ2FjeS10cnVuaworNDkxMCA4OTlkMjA4NzQ1NjZiOTg2ZDIxNmQxNGZlMzYwOTIxMTA0YzRiZjIzIGxlZ2FjeS10cnVuaworNDkxMSBiNDJhYjc3ZjIyMjYwMzE2NjNjMzEyOTBhNWFhZDM1YWJhYmU5Mzc0IGxlZ2FjeS10cnVuaworNDkxMiBiYzAzMjI1YTQ0OTNmNWRiYTZiM2Y2ZTZhNGZhOTFiMGRjY2Q2YWY3IGxlZ2FjeS10cnVuaworNDkxMyBlMWE3YmRmYWZlYzkzMjM4ODUyNzg4OWRiZjExY2NjZjllZmZhNjFiIGxlZ2FjeS10cnVuaworNDkxNCA2NWJjYjQxODJjMWEzMjA3OTc5ZWViYTI5ZjQwZjRlNDFlMWQ5YzcwIGxlZ2FjeS10cnVuaworNDkxNSBiYWM5NmQ1YzQ2M2Y0NTJmZmE3YTQ0ZjdhZDViZGYwMTNiMGRlYzJjIGxlZ2FjeS10cnVuaworNDkxNiAxYzI5ZjZiZGQ4OThmNmUyNGU3YmY1NTMzYzZiZjM0NTQ5ZWJiODhiIGxlZ2FjeS10cnVuaworNDkxNyBkOTQwNDViZDRhMDQxMmI5YTY5MDBhNDBkNzk2NmQ5NzJjNTJhNDg4IGxlZ2FjeS10cnVuaworNDkxOCBlOWU4NmFlNWY1YTRhODdmMWE0ZGRiMDYyNTgxNjA0MTM3ZDAyMWRkIGxlZ2FjeS10cnVuaworNDkxOSBlNzY0Yjc4YTcwNGY1MThmMWE4MzQyZmRhMWI4ZjJjNDM1YmZjYjIyIGxlZ2FjeS10cnVuaworNDkyMCBlNzI2ZjkwZDJhOWZmMjQ5NTlkYTExOWYyMjU4NTkyNTU1NTdkNmFmIGxlZ2FjeS10cnVuaworNDkyMSAxZjQxNDFhYWZlMzYxOTc2OWE3YmU0ZWFmMjUzZmM0ZGM2YTI2YzZkIGxlZ2FjeS10cnVuaworNDkyMyAzMjJmYzU5NmYxYzQzNzkxMzAwZTgwY2FmZGFhOWExNDU1NjE2YWM5IGxlZ2FjeS10cnVuaworNDkyNCA0ZjdjNjczZGE5MThiNTZhZDFiYTU1ZTZmNGZjZDg0M2YzZWEyNTdiIGxlZ2FjeS10cnVuaworNDkyNSAzZDY3MzRhYjZjZDQwMmRkMDIxZTZkNGEzZDg3OWVjMWYzN2U4M2I4IGxlZ2FjeS10cnVuaworNDkyNiA4ZTM4Y2QwYTNhMzE1ZmUxYmQ3YThlM2M5YzE2ZjUwMjBlMjcyODY0IGxlZ2FjeS10cnVuaworNDkyNyAwZTFmOWExNGZiZDQ5NWE5M2FiNWYzMTJlMjFiZTYwMDM2MzkyZTNmIGxlZ2FjeS10cnVuaworNDkyOCA1YmIzOWE0MmM3MjkxMjI3NGVmYTkxMWE4ZjJiYWIwYmNmY2NjMmFhIGxlZ2FjeS10cnVuaworNDkyOSBkZDI4NDVkMDZlYjM3YWUyOTQwOGZlOGJmZTA3ODA1ZDBiMmU2NmI1IGxlZ2FjeS10cnVuaworNDkzMCA1M2Y5MmE0NzNjNmYxMGE2ZjFjMDYwN2M2MWQ2NDI4MTBjZDJiNjk1IGxlZ2FjeS10cnVuaworNDkzMSBkZTRkYzE2NWJmYjZhMTE1Mjk5YzlhYTFjOWI5YjFlMjRkMTlmMjllIGxlZ2FjeS10cnVuaworNDkzMiAzMDIwNWQ2MzRhMTViNTI4MTI2YWViZGFjYWNmNTZhMzZlZjE2MmViIGxlZ2FjeS10cnVuaworNDkzMyA3MDg5ZDQ4NDM0MDcyZWNkZjQ3OWIwNmU5M2MyN2MwNTdjNzIxYTQ3IGxlZ2FjeS10cnVuaworNDkzNCAxMWI5MzdlYTAwMjY0YTViMWY5M2Q1MTdiNWE1ZDc4YmQyMzE1MTdjIGxlZ2FjeS10cnVuaworNDkzNSA2NDg0MmUyMDZiNzZjYjE1YTlhMDAzMjY5MDcxODAwZmY2NTY1Njg0IGxlZ2FjeS10cnVuaworNDkzNiBhMTdkYTEzMjJjNTZkNTEwYjQyZDYwN2FjMzczN2QxMTVkYTk5ODkwIGxlZ2FjeS10cnVuaworNDkzNyBiZDQ3NjU1NWJlNDJhN2FkNzk5ZmE2ZTI1MjU2OWRmZTY1NWQ2NzQ0IGxlZ2FjeS10cnVuaworNDkzOCAyMmNkMjJiZjQzODRlNGQ0NmJiMDU3ZTM3NGNkNGQ2YzdlZTEwZWViIGxlZ2FjeS10cnVuaworNDkzOSAwNTEwYjk0ODE3OGUwYmE3MDZiNWE0ZTU5NWMxNGQ1OTM1NGJlZjg0IGxlZ2FjeS10cnVuaworNDk0MCA1MTdiY2Q0ODIzYWI3ODZjNzRiMmZiMTM3MTBhZmRmNWZmODUwYzZiIGxlZ2FjeS10cnVuaworNDk0MSAyYTU3NGQ0YjBkNThjMmYwZTM4MmFkYTQ2YTQwMzQ0YjY1NTVhMjZjIGxlZ2FjeS10cnVuaworNDk0MiBkNjMwYzZkMzY4MzlhZDg4NDI2YWU2N2IwZmFjNWJkMzMxMWU1ZmUxIGxlZ2FjeS10cnVuaworNDk0MyBmZTM3ZWQyY2Y3YTVjNTczYmZmYjgyMTRmMDMwZDQ4NjQzNmNiMTdmIGxlZ2FjeS10cnVuaworNDk0NCBlYjE0ZjMyYTk3Y2RjNWM1NDllNzJlYjFkOWEzNDk4OGMwMjA5YzZkIGxlZ2FjeS10cnVuaworNDk0NSA4MDcyOWFmZjkwNTdjMGZmMTdmYWE1YWM3MGRjM2FlNjc5MTllMWFkIGxlZ2FjeS10cnVuaworNDk0NiBjZDY0YTMyYWI4MDMyY2Y3NmJjYjZmZTFiY2M0ODZlOTgwYzg5YTg5IGxlZ2FjeS10cnVuaworNDk0NyA0NDE4ZTg1NDdlZmNmMTUwZjcwMWJhYzk0OTg4MGNmMDFlN2Q2MGExIGxlZ2FjeS10cnVuaworNDk0OCBmYjhlMDhlYzg4ZGQ1NjA2MmMxYTkzNTYwMjFhZTgxNWFiZDE1NmI2IGxlZ2FjeS10cnVuaworNDk0OSA0YjU3NGRiNWRiMTNmMTc1NzRiNjVjNDY5MGIwYmMwYTNiMmMyOWNiIGxlZ2FjeS10cnVuaworNDk1MCBkOTQ4MTM1NGZkYzM2MTk5YmUxYmEzYmU4MzJmZTgzNjkxMDU0MGRkIGxlZ2FjeS10cnVuaworNDk1MSA1ZmM2MjU2MmU2ZWNlMTcwOWRmM2M3OTQ2MTU0Zjc3ZTFlZDcyZDU3IGxlZ2FjeS10cnVuaworNDk1MiA3MThjNjVkMGUxMmRiNDg2NjFhZjc3YjU3NmNjZDFjMzY5MjJjNmYzIGxlZ2FjeS10cnVuaworNDk1MyA2MGU1YWFjZWIzZWIzNmNhMDRkMjRiMTMwM2Q5MjM2MGExOGY1MDNlIGxlZ2FjeS10cnVuaworNDk1NCAxNWE4NjY4N2Y4MzgwNzExNDU3YjMyYjYwYjZjOTI0YjNiMzE4MTJhIGxlZ2FjeS10cnVuaworNDk1NSBkZGY2MGJjN2VkMzAxNWY3Mzc4OTJhZDk0NGMwNjkzNzQ2YmJhOGM2IGxlZ2FjeS10cnVuaworNDk1NiBjMjIxOTU3YTYyNmQ3ZWM1ZmUyNjNlZjg3OGFjNTk3ZTU2ZjE4MWE2IGxlZ2FjeS10cnVuaworNDk1NyBmMjE3YzFiMjdmODY3NmE1ZDRiNjUzYTdjY2JjMjc0Yjk5MzE1ZTM2IGxlZ2FjeS10cnVuaworNDk1OCBiNWNlODAxMTQ0MTYxNTg3NWM0OTQzOGU3OWQwZDZkMDA4NGNhMmQyIGxlZ2FjeS10cnVuaworNDk1OSBkNTk3ODIzOGUzYmE2ZjdjYzc3MzIwMmYyMTNhNzM5NWJiNjNkNDAwIGxlZ2FjeS10cnVuaworNDk2MCA0ZGQxYWYwZGRlZjA4ZGIyNmUyNjI4NGMzMTY5NWM0ZTQ3M2Y3YzE1IGxlZ2FjeS10cnVuaworNDk2MSA0MjU4MzViODgwOTllODIyYjk4ZjA5MmFhYmU1MWJhNDVjOWVjY2ViIGxlZ2FjeS10cnVuaworNDk2MiBlOTIwZTZjMjcyMDgyMWMxYzI2ZWFmODYwMjg2ZGU3ZjcxMGQ0MGYyIGxlZ2FjeS10cnVuaworNDk2MyA5ZDZlOTdkNjY2NzA4ZDQzN2FiZTI4NWM5MWY0ODI2NTk2OTdhMWU3IGxlZ2FjeS10cnVuaworNDk2NCA4YWM0YzBlMWNlMTdhZDI5YmY3YWM5YTI5MWQ2ZDY2N2RhMzFiY2I1IGxlZ2FjeS10cnVuaworNDk2NSA0N2NjNTNhMWZkNDdiM2Q0ZWVjNDhlMzkyYTg5Mjc2NmE1MDI4NzRhIGxlZ2FjeS10cnVuaworNDk2NiBjNmU0ODI4NzBlYzMwYWQwYzQzYzM5ODNlMTBmMzk5NmRiY2QyNGFjIGxlZ2FjeS10cnVuaworNDk2NyBjMjlhZGIzMzg5NjRjYjdmYWMwOTRlZTYwOTZkOTk1YTMwYzQ5NGNlIGxlZ2FjeS10cnVuaworNDk2OCBjNmE2ZTJiMjBiZDgzZGQzOGE4ZTIyZTcxNjU0ZjVlN2I4NTA2ZjU2IGxlZ2FjeS10cnVuaworNDk2OSBjNmYyZDUxMjUxZDA3NWQ3OGRlYTM3OWI1NGJlMmUxYTNjNmZiMjljIGxlZ2FjeS10cnVuaworNDk3MCA1NmUyNTExNGQ0Mzg0NDM1OWFlMDY0YzkzM2U3ODY4M2I4MTFlZGYxIGxlZ2FjeS10cnVuaworNDk3MSBmNGRjNTFmNzhhNTZkYzNmYmIxNDFkNmRiZGViNWNjYjA0MzYxN2NkIGxlZ2FjeS10cnVuaworNDk3MiAxY2U5ZTY3YzY4NTZlOGZjNzhiYTE3NTU2NTFlYjQ5OWU1YTNjMGI5IGxlZ2FjeS10cnVuaworNDk3MyBkMGI5ODEyY2Q5Y2Y0MDUxM2FjOGY3MzlmYjdmYjJmYjBkZjk5YzVhIGxlZ2FjeS10cnVuaworNDk3NCAyZjQ1NTYyN2MxZjBlZDVhZmIyODc3NmQ0OWI1YjdiN2JmZmRkZTcyIGxlZ2FjeS10cnVuaworNDk3NSA1NTYyMTk3MDllOTk4NWJjZmUxMjBlYWE2MDY3NDMzMjNiNWZkOTQ5IGxlZ2FjeS10cnVuaworNDk3NiA0OTVhZmM4YWQ3Yjk2OWYxNGU2YzBjMjViMjRmNWJmZWU4MTc4ZjgxIGxlZ2FjeS10cnVuaworNDk3NyA4NDdkMjQ4NDFjODU2OTlkMTUxODJjNTMzOWRiNTVkM2Q2ZGIxMzIyIGxlZ2FjeS10cnVuaworNDk3OCBlN2Q0ODBjZjE2YmE2ZGY4MTBhZTY5MTA2OTc2MDBiN2Y2NmNjMjc3IGxlZ2FjeS10cnVuaworNDk3OSA5ZTQwMTJiMTc1N2ViNGI2YTZjYmQ5M2EzMmIxZjc3NTc1ZTQ0NTE1IGxlZ2FjeS10cnVuaworNDk4MCA4YjhhMzdiN2NiYTQzOTliOTg5YzA1MjlhYzBkNDI0MTYxYTBkMWRlIGxlZ2FjeS10cnVuaworNDk4MSA2MDAxNDQ4ZmFiODkwMzUwYmVhODNjNjJhYTIzODY1MWQ1ZDFlZWZjIGxlZ2FjeS10cnVuaworNDk4MiAxNmVhMTUxYWVlYzNhNGIwODZiOTNlOTQ3ZDYzMDViMTFkMGE1N2RhIGxlZ2FjeS10cnVuaworNDk4MyBkMTEyM2IxMGNmMjM3MmNjNGUzZTVhNTZmZTljMGNmNjI4YzdmZGU0IGxlZ2FjeS10cnVuaworNDk4NCA4MTVkZmFhNmE3Nzg3NzcyMDYzMzRhN2Q3Y2E3YjE4NjQxY2IxYzI1IGxlZ2FjeS10cnVuaworNDk4NSBhZTJiMDMyNDQ1Zjk5YzMzYjFmNzdiMmIyMjM2OGQzNWIyYjQzMDY0IGxlZ2FjeS10cnVuaworNDk4NiAxNmVhNTdjMzhjNGY3NDFmMzE2OTZhM2M5M2QzNTZhYjZhOWUwYzhkIGxlZ2FjeS10cnVuaworNDk4NyAxYTVlN2RhNDA0YzNkYTNiM2NjNWY1ZmFhNTY3NzY4MzE0MGE1OTZiIGxlZ2FjeS10cnVuaworNDk4OCBlMzliYjI0MGIxYjNhN2E4NDQ1ZDAwMWViYmJkNDYxNmUxYzBlZjlhIGxlZ2FjeS10cnVuaworNDk4OSA5ZTVhMDk4NDE3ODE5NThjMjg4M2RiZmNjYTY1ZWU2OGZjYzk5MzY4IGxlZ2FjeS10cnVuaworNDk5MCBlNTA2ZWM0ZmIyYjEwZDQwMGVlN2Y2MzhmNjlmNzliNTJjNmZhM2JmIGxlZ2FjeS10cnVuaworNDk5MSA3M2QxOTNlYWE5MDBlYTQzOGU4NDUyOThmZDc3Njg0YjZhNDc0NTI0IGxlZ2FjeS10cnVuaworNDk5MiA4NzUxNzNmM2YzMWNiZDIzNDZjYjQ3NzkxM2FlZTc1ZTkyNTg4OWVmIGxlZ2FjeS10cnVuaworNDk5MyBhMTRmYzJkMDRjMDYyNWE4NjVmZmI0M2JkOGM1NDQ5NDVjOTUwOWUxIGxlZ2FjeS10cnVuaworNDk5NCA2ZmNkMGIwMjJmYTc3YmJlNjJkZjdmNzk1MTQ3N2JmZWQyYTJiZjJjIGxlZ2FjeS10cnVuaworNDk5NSA0ZGYwMGIyOTQ3N2I3ZjdiMjY5NzliOWVkM2ExYmY3N2ZiODEyYjdkIGxlZ2FjeS10cnVuaworNDk5NiA1MzRhOTdjNDAwY2M3ZDYwYzUzNWNmZDI0ZTU0ODQwMWYzMWFlNmM4IGxlZ2FjeS10cnVuaworNDk5NyBkN2FlNWZiMWQyNTUwOTgxNDk3ODFjMDFmNDhmZTk1OTc1MDY0Y2I2IGxlZ2FjeS10cnVuaworNDk5OCBiNzJjY2Y1YjdkYmM0N2ZjOGQxMTY5ZGEzZGRhMmNhNzMxMWY3OWJhIGxlZ2FjeS10cnVuaworNDk5OSA0OWRmMTU3NmZiNTRlOTJmZjFjYmExMGE1MmNlNTE4ZDNmNTZkOTZmIGxlZ2FjeS10cnVuaworNTAwMCAxYTQ0OGRkODRlZGMyZTlmM2QyMTQ4Y2EzOWRlNmNhODI1ZWI4NmE3IGxlZ2FjeS10cnVuaworNTAwMiBhYWJiZmI2MWUzODg4NGI2YTBjNGMzMTllZmE2MjdkNGVhYmFmNmRjIGxlZ2FjeS10cnVuaworNTAwNCA5Y2M3NzVmZDZlODRjNWYzMzg1YmVhOTBhMjQ3ZTc5ODFiYWI5MGZhIGxlZ2FjeS10cnVuaworNTAwNSA1NTM2ZmNiYWU4MGFkN2IwMTdkMzM4YThmZTIwYTE1NDAwYjIyNWQzIGxlZ2FjeS10cnVuaworNTAwNiAzMjgxYTkzMWExZDlkYzk3N2JhMTNjNTAxYWY0MGQ5MmFlNGE1YWU3IGxlZ2FjeS10cnVuaworNTAwOCAyY2FjNmM1MDY2ZGE1MDk1OThhYjA2ZWUyOWU5MGRmNjliZmZhNzM5IGxlZ2FjeS10cnVuaworNTAwOSA0MTk2MDAwNzg5YmM1ZTI0MjZlMDM4YTc0ZTUyMTIwYjU2ZjU5MGJkIGxlZ2FjeS10cnVuaworNTAxMCAwZjZmZjQ1YmQ4MTY3ODc2YjdjM2U0NTNiNmUyNTYxZTc2ODYzZTFhIGxlZ2FjeS10cnVuaworNTAxMSBjNTVkZGRiZmNmN2NlOGViNmFmYmY5N2NmNGZkNTk4ODk1MWY0OWYzIGxlZ2FjeS10cnVuaworNTAxMiA3ZDcwMjA5ZjM1NWQyMGVjMDFkYmM3M2EwMmZiMjljZTkyM2YyMTk4IGxlZ2FjeS10cnVuaworNTAxMyBmMzBiYzQ4YzQxN2EyMWQxY2MzYjZlNjZmOTczOWM5NWYzODAyODNjIGxlZ2FjeS10cnVuaworNTAxNCBmNGQyNmEwZTI5NzUxNTFhNmZlZWQwMGRiYWVkM2MyMzUwZjA0NTI1IGxlZ2FjeS10cnVuaworNTAxNSBiMTgxZGZmMjFiMGI4ZTk5Y2YyYzk0NTc5ODkwZDY4MTNhNTFiZTViIGxlZ2FjeS10cnVuaworNTAxNiBmOWIwNzkxNWEwNjE3ZGEwYWU0ZmIwZTliYTU5MzYxYzJjYzQyZGFjIGxlZ2FjeS10cnVuaworNTAxOCAyYWE2YjVhZDQ1MjA0ZTA3MWRiMWQ0ZjdjMWUyODJhYmFiZTU5ZTNhIGxlZ2FjeS10cnVuaworNTAxOSAzOGYzMjI1ZWZmMzFiZGQzNWJjNjI3MDg4ZmU3MmJhMGZjZjUwZDBiIGxlZ2FjeS10cnVuaworNTAyMSAzZjhjOGI5MDE1OGRmZDMyZmJjNDhjYWI0MjkxZjYzYjM2ZGZkZTI0IGxlZ2FjeS10cnVuaworNTAyMiA3ODdiNGRkNmY1ZjNlNmMyMGUxMmQxNzk0YzEwNjllYmI0NGRhNjc5IGxlZ2FjeS10cnVuaworNTAyMyBiMDkyZDkzNmM4NzVlNjZmMTc0ZGQxYWNhNzYxMDFlMmQ2OTliYTZkIGxlZ2FjeS10cnVuaworNTAyNCAzODI4MjA2YzJkYzBjNjA5ZTY0YWI2YzI5ODNkNzlkOTk3NDUxZWNhIGxlZ2FjeS10cnVuaworNTAyNSA4NWMwODE5NjYyYjdiNDliZGRjZTQ0NTk3MWM2ODIwYWYyOGEzYjQ4IGxlZ2FjeS10cnVuaworNTAyNiA3ZmJmZjUyZGIwODc3NGRmOTRkMTQ5NmE0ZWVmZDBmMzAwYjYyYjk1IGxlZ2FjeS10cnVuaworNTAyNyA5MTI4MTNkNTczYjQyZmZhMjIzYTk1NzY2YzhmMzcxZDQ0OWFkYTc0IGxlZ2FjeS10cnVuaworNTAyOCA5MTljNTNhMzVlZmFlYWQzZTlkZjhlMDkzY2I1ZDEyNzZjNzNhMzZkIGxlZ2FjeS10cnVuaworNTAyOSBiNTk2M2M0YjYzOWFkMTQ5NzE3MTM2YjZmMzc3YWQzMGU3MjQxZTJlIGxlZ2FjeS10cnVuaworNTAzMCAyYzYxNzg2MzI3Y2ZmMDU0ZDM3ZDhiOTg4N2UwZThhNDBmNjcxZmY3IGxlZ2FjeS10cnVuaworNTAzMSA3YTM3MzM3MzI5MDFjMTE5ZTVmNWE2OTA5OGZmMTYxMjYzYzY0ZWRkIGxlZ2FjeS10cnVuaworNTAzMiA4YmU0MDAyYjUwODY3YzE4N2YzYmQwZTdmY2UyOWRlNTIyNWVlYzBiIGxlZ2FjeS10cnVuaworNTAzMyAxODA3ODY0YTc1ZjQ3MTQzY2IzMGM0ODc1OGRkYjY1MGRlYjEzZGU0IGxlZ2FjeS10cnVuaworNTAzNCBhYzEzY2FhNzllM2NhNjM0Mjg1NWUxMDNiZDdlNDllNGFmMGZmM2M4IGxlZ2FjeS10cnVuaworNTAzNSAwYmFlYjc0NmE4NTQwMzI5Yzc0MTI1MWUzNzA0YzAxMmMwNTYzMDRlIGxlZ2FjeS10cnVuaworNTAzNiBmMGI3ODcyZGE2ODkxYzA1ZDY3YmE4ZmJkNDRjYWM0ZTkwZWU3Y2MzIGxlZ2FjeS10cnVuaworNTAzNyA5Njc3ZWIxMDVmYWU4MjRkYjZjMDg3Y2U2MDQ3MGUyMzRlZTMyMjFjIGxlZ2FjeS10cnVuaworNTAzOCBmNDdiYzU1NTQ0MTg1YTVjMDliNjMzNzQzNDUxOWMxNzAzMDM2NDA2IGxlZ2FjeS10cnVuaworNTAzOSA0OThkYWQ4MDQ1ZDM0Yzg2YmQ2NWVkYjYzYjdlYTU2Y2IzOTQ3MTViIGxlZ2FjeS10cnVuaworNTA0MCAwYWMyN2ZmZDA1Nzk5YzNmMWRkODY3YmVjZDUxODFiODlhNjFjNzlhIGxlZ2FjeS10cnVuaworNTA0MiBiYzRiM2ZkYTZhODA3OGRjNjM3N2ZhYWM5ZmQwYjAyZThhM2I0NTU4IGxlZ2FjeS10cnVuaworNTA0MyA5MWJjOTA3YjFlNjNjZjA4MmY0MzQ3MTBlZmQyOGQ3ZTc4MzIxMzMwIGxlZ2FjeS10cnVuaworNTA0NCA0ZDI4YjY1NWI3Mjg3MTVlNDJiM2EwYmE4MWRjZjg1ZTkxNTRkM2NiIGxlZ2FjeS10cnVuaworNTA0NSAzNzcwZTQzNDc4MDM4NWVmOTI2ODU0NmQ4ZDg2N2M2ZDE0ZGVhNzU4IGxlZ2FjeS10cnVuaworNTA0NiA3OTE0OTE1NzI5ZTNkNTIxYjcxM2Y4MjBhZmFlNjA0NWU2NmVhYTc0IGxlZ2FjeS10cnVuaworNTA0NyA0YjZjMDc2MmQ2NTliNGQ2MWU3YzI5ZGM1YmMzMTMzODE1Njk4NmI5IGxlZ2FjeS10cnVuaworNTA0OCA3MDQyYWVlNjQwOWVmYzc4MjBmZDNkMThmYTYwNmJiMGRlNDc5MzQ1IGxlZ2FjeS10cnVuaworNTA0OSBhZTEzMWI4YjRlMzE5ZGJmYzEzZDg3MzliOTNmNTJlY2UyOTAxZGQxIGxlZ2FjeS10cnVuaworNTA1MCBkNjk5NTRlMWY1ZDQxOGY0ZmRmMGVkMjNmNTEyYjVmYjU5OGFkYjRlIGxlZ2FjeS10cnVuaworNTA1MyBiYmJmMTc2NDBjNmZhMTVjYmM1OTYzYzc1ODE5MDI1YWYzZWYzZDE2IGxlZ2FjeS10cnVuaworNTA1NCBkNWQyN2RhZDdmZWFmNWQ2ZjUzOWFiZTMwM2EwOTUwOTQ2ZTk0ZGU5IGxlZ2FjeS10cnVuaworNTA1NSA1ZDA5MzgzNTBhZThlOGQ4N2NjODc2MWZlOGFiZDM3ZjY0YjMxNDc3IGxlZ2FjeS10cnVuaworNTA1NiAyYTNlNDg5NzIyNjEyZjkzMDVjMTllNTliYjc1ODI3OWY4NTdjNzdiIGxlZ2FjeS10cnVuaworNTA1NyA3NjNlYjQ3OTc1ZGQzOTdlOTM2ZTQ3MmY3YjA5ZjUzY2M5ZTE3YTc4IGxlZ2FjeS10cnVuaworNTA1OCA4ZGY1NzRhNjU1YWQ2YzNjZDViODNlMzQ4ZDg5YTMzOWU4NjBmMjJlIGxlZ2FjeS10cnVuaworNTA1OSBjZTlhNzUwN2UxZWZlYjcxMDM1NmNhOGU1NWY4ZWNiYzFjNjQ0ODJmIGxlZ2FjeS10cnVuaworNTA1OSAwNjVlMzFjZjU4NjJlMjc1MjFjZjU3MjViMDAzYWVkMjExZjA5MWIyIGxlZ2FjeS10cnVuaworNTA2MSAzMTc3NzYyMmFlOTMxNTdhMjAxMDgxMjkxNDlhZWZjZWZlMmM4ZWRiIGxlZ2FjeS10cnVuaworNTA2MiBjZDVhOTZmNjIzOWJkZTQ1MmEyMGY3NzEwYmY3YTRiYWNkOTYyYzFkIGxlZ2FjeS10cnVuaworNTA2MyBiMjgxYzNjODYzY2NhZTRlZGJkMWM2OTU4ZjlkMzNhYTcwM2RmNzMwIGxlZ2FjeS10cnVuaworNTA2NCBiZGI2M2E3OTc1NTU1NDc4NDE5MjQwMmFmZmNiY2U0MzdhNzExNGJhIGxlZ2FjeS10cnVuaworNTA2NSA1ODhjZDQzNDNlZWQxZmMyNzM2MDlmNzA0MTFhMDNjODRjNjU1ZmI4IGxlZ2FjeS10cnVuaworNTA2NiAzNTIzMzY0MDQ3OWIyZWJjOGJiMmQ4M2RkN2M1NDM0OTJmNzc2ZTU0IGxlZ2FjeS10cnVuaworNTA2NyBiZWUyYWVkNDE2ZDYyNDQyN2FkMGFmOGNhM2MzNmYyMWRhMWNmNTFhIGxlZ2FjeS10cnVuaworNTA2OCA0MDg0ZWNmMjc2Y2YwZjVlNDZjODgyMmYwNmFlNDAzNmI2MmMxNTUyIGxlZ2FjeS10cnVuaworNTA2OSBjNTJiNWM5YmU3ZTIxN2Y0MjQyMjFmOGUyNTljOTBjOWY1N2ExOTM4IGxlZ2FjeS10cnVuaworNTA3MCAyOWI5MGE4NmFjOTZkOGM4OGMzM2YyY2RlMjU1MDdhY2JjMmRjMTg5IGxlZ2FjeS10cnVuaworNTA3MSAxN2M5MjVmMDA2MGI4YzcxOTY1OWViNjBiZDBlODc2MGNmOGUxYmQzIGxlZ2FjeS10cnVuaworNTA3MiAxYzgxNDc4M2VmYzE4NTAwYTMwMjJmZjU3YTM3ZWY3ZTVhNjQ0Yjg0IGxlZ2FjeS10cnVuaworNTA3MyBlZWFjMTcwZjVmMmZmODI1OGM2OWQ4ODIzN2E1YTdmYzhjNmU5ODFlIGxlZ2FjeS10cnVuaworNTA3NCA3ZWY3Mjg3M2U0ZDY4NzQ3ZjUyNmM3ODg5OGE4OWVlZDM5OGNiZmNkIGxlZ2FjeS10cnVuaworNTA3NSBiMDI1NzNlZWIxODI4YzY4MjJkYjI4YTM1MWNlYWM1N2U2Y2IxY2JiIGxlZ2FjeS10cnVuaworNTA3NyAwMTY4N2NlNDM3MDgyYTU1YjdlY2YwMDY0MzI4MDBmZWY1NTc0Y2VjIGxlZ2FjeS10cnVuaworNTA3OCBjYTZiNjBkNGVhOTA2MzdjNjc2YjEwMzAwMDgwYTdjZTk0YWNkM2NkIGxlZ2FjeS10cnVuaworNTA3OSBiMzY4YmU3YjA2MmE1MzAyYTJkMDZiOTNlNDY3ZjcyZjBiYThjOTdhIGxlZ2FjeS10cnVuaworNTA4MCBmNzA0OWQ0NjUzNjU3Njk4ZDk4ZDEyMGVmZmIxYWU1YWY2MmQwMzc0IGxlZ2FjeS10cnVuaworNTA4MSBiYzMyNjA3NGY4NjE0ZTgxYjViZGYzOWYwOWY0NGEyOWM5Y2E4MzMyIGxlZ2FjeS10cnVuaworNTA4MiBhOTJkZGVkNGE3YzRkY2M2MjRhNjgwYzAwOGRlYjY4Yzk3YWJkNGYzIGxlZ2FjeS10cnVuaworNTA4MyBlZDMwYmNhMTg0YmI4MWUyM2E4ZmFhOWQ5YmQ4MGJjZGRkYTA0NmMxIGxlZ2FjeS10cnVuaworNTA4NCA2Y2M2MzdjNjBjZTY2MmFmZWNhMjI4MjNmOTZhNmEyZmUwZmFhZDdiIGxlZ2FjeS10cnVuaworNTA4NSBkYTQ3YjQxNDZhN2M4N2NlZDRjYTQ4NGQ2ZjUzNmNmYzJmOTY5OTI4IGxlZ2FjeS10cnVuaworNTA4NiBiZDA1ZGNlYTdiMDljZDc0NzQ5N2NlYzNiZWU2MDcyMzI0MDk1MmRmIGxlZ2FjeS10cnVuaworNTA4NyAyZjkxMDJmNTcxNDNmMWQ2ZmQ0NjJiZDk1OGU1YzVmMTRjMDkyNzU0IGxlZ2FjeS10cnVuaworNTA4OCA2MWUzYjYwYWVjNDQxOWRhZWQxZTgxZjNmMjY3YjZiZjYyZGE5NjU4IGxlZ2FjeS10cnVuaworNTA4OSA4MzAxOGFhOWIxN2M5NTZjNTQ4NjhiMzM2NGE3YzE0YWM0NjM0ZDg5IGxlZ2FjeS10cnVuaworNTA5MCA2MzQxYTRjMDA4MmIzNDkzNzUxNzFkNWJmMDk5Y2RhNmViMDBkMjA2IGxlZ2FjeS10cnVuaworNTA5MSA1YTMzNzEzMjA5NzU0NWVhZjJlZDJmNWZiNDk0NzliMzRmZDg4YWViIGxlZ2FjeS10cnVuaworNTA5MiBkYmI0MTcxMjE2NWJlNGZhNDJmMGRlNzg3MTEyZGNiMDIxMjAyYmZhIGxlZ2FjeS10cnVuaworNTA5MyBlOWVhMDU3MDI2NzZlN2JjODFkYTY1OTljMTNmMzIwYjhlNTZjMGY4IGxlZ2FjeS10cnVuaworNTA5NCA3YzkyZDQ0ZmE2ZmNhNTEwZWUxYTk5NGU5ODY2NWU0NDI2MDIxMGU1IGxlZ2FjeS10cnVuaworNTA5NSAxNzU2NzFjYzIxZDhjNjQ0Y2VkMTdkYjdjYTcyNTQ4MWE0ZWNiOWE0IGxlZ2FjeS10cnVuaworNTA5NiA2Yzg5ZGY1NzZkOTFhZmFkYzczNzFjYzkzZDM5NjlmYzczM2M3MWU5IGxlZ2FjeS10cnVuaworNTA5NyA5MTIzMTdhMzdlMmIzODU2MTdlYmFmZGRmNjljZjNhMmExMzI3MmVhIGxlZ2FjeS10cnVuaworNTA5OCA3NWU5ZTU2YjVmOWIxYTBkZTNlMDI0ZWZiNDZkMDkzZWYyZGVlYmRlIGxlZ2FjeS10cnVuaworNTA5OSAyMjkxMmYzYTg4OWYxMmZmNjA3ODYwNDM3ZDhhNDAyZmQxZTIxNGRhIGxlZ2FjeS10cnVuaworNTEwMCBmNGVmM2IyMTI2ZWJjYmRkNjViNmM5NjUxNDRmYjMwZjJhNDYxMWM1IGxlZ2FjeS10cnVuaworNTEwMSA2ZjM5NmNlNTI1NWQwOGYxYTZlMzkwZGJmOGMzZGRiNDZhNDQ1NmFiIGxlZ2FjeS10cnVuaworNTEwMiA2N2ZmOWY0N2FiMzZmZTliOTgwMWY3NmM5ZjQwMWQwMmU3OTI5YWI5IGxlZ2FjeS10cnVuaworNTEwMyA0NDA4NzgxOTE0OGUyNzc2Nzg4Y2U4YjY2Yjk1MDI5ZTNlZDA2NWU4IGxlZ2FjeS10cnVuaworNTEwNCA2OGM3YTBhNjFmZDU4MWMwNzZjZjhmZjhkMWVkOGY4ZTIzNzE3M2Q5IGxlZ2FjeS10cnVuaworNTEwNSBmMTFiYTljYzM0MmYyODBjYWE4N2ZjMWMxOThhYTNjZWIxNTlhMGUwIGxlZ2FjeS10cnVuaworNTEwNiBmNWM0MDg2OWRhMTA2NThlYzEwMzE3MGM3YzM5NjI0MTgwMDM0NTAxIGxlZ2FjeS10cnVuaworNTEwNyBmOThhMjIzM2IzMzdiNDk1MzQ1OGI3ZGNkY2Q1NjRhNWQyM2U0NWY3IGxlZ2FjeS10cnVuaworNTEwOCA1MTM0YzAwOWUxYTRmZTU4M2RkOWUwZWU3YTcxODY4ZDg3MDE0YjZjIGxlZ2FjeS10cnVuaworNTEwOSBkOWU0Y2JiYTk1OGMwNjkxOGZlMTZmYTZhY2JmZGRkMTY4YzM0YTAxIGxlZ2FjeS10cnVuaworNTExMCA3YzY5YzRhZWNiMzhjYjQ1NWU3MzliZjE5MDZlMmIyNzcxNjdmMGY2IGxlZ2FjeS10cnVuaworNTExMSBmODc2Y2Q1YzQ0MTdkNzUwMDk1ZDgwMDlmN2MyZGM4ZjE1ZTI1ZWIwIGxlZ2FjeS10cnVuaworNTExMiBkZTI5N2NkZWEzNGVlNjUwZTIxZTJiZWQyZTBhY2JiNGNmNmZjYzNhIGxlZ2FjeS10cnVuaworNTExMyA5YjdlNmQ5YTUyOGRhN2M4OGYzZjg4OGE2NGIwYjg1OGEwNGY0YmRiIGxlZ2FjeS10cnVuaworNTExNCBiN2U4YmMwMDJhMjQzMGNiY2Y0NTZmNmU3NjE4MjhmYWEzZWI5M2U5IGxlZ2FjeS10cnVuaworNTExNSAwNjNhOTZiNDliM2U2MmE5NDgyMWJmMzY3NDRkZTcxYjk5MWU2ZTEwIGxlZ2FjeS10cnVuaworNTExNiA2MDZhMDk3ZGZkMDAyYzRhMDg2YjE1MWU4YjIyNzAxYjc0MDZhYzczIGxlZ2FjeS10cnVuaworNTExNyA4NGUyMjYwZGIxNzk5YjM1MGJiMjg5NjY4MzRmOWI3NjRiMTdlMWZhIGxlZ2FjeS10cnVuaworNTExOCBkNjM1MGEzMTg5OTc4ODJjNjlmYzc2YjhjODU5OGE2NTNmNjk2ZjFkIGxlZ2FjeS10cnVuaworNTExOSBlM2VjYzQwMTg5ODlhZTM4MTFiNzJhZDFiM2NkMWY1MGU0Y2M1ZTQ1IGxlZ2FjeS10cnVuaworNTEyMCBmNGIzZDY4YzcxMjQ0MmNjNzRiODU1ODJlNTViMzEzNTVhYzRjZGEzIGxlZ2FjeS10cnVuaworNTEyMSBkYjNkYWNlMjc4YWMwMTg4ZGVlYWMwMGExOWM0NjZhNWM3YjFhYTg2IGxlZ2FjeS10cnVuaworNTEyMiA5Y2Y2MDRhMzQxMWU5NDViOWY0ZTVkNjIzZmJiYmI2YjQxZTM3NDA0IGxlZ2FjeS10cnVuaworNTEyMyA4NDFmNzJkYzU0NDI0YjNkZWYzNjYwYjVkMWU4ZjIzNDIzNjA2NWEyIGxlZ2FjeS10cnVuaworNTEyNCAzYTNkZjIzMTMyN2MxZDA2NzE0NDA4MzU2MDFjOGE0ZGUxMGNmMjU1IGxlZ2FjeS10cnVuaworNTEyNSAyNjZhZDEzMjg3YTRlMGNhNTk4Y2YyMjgxNWViMTNkZmNmYzg2OWJlIGxlZ2FjeS10cnVuaworNTEyNiA0ZWI2ZGRiOWU5NjFjOWFiNWJhMjZhMTFkM2QxM2E5ZTQ2ZGRhNTgxIGxlZ2FjeS10cnVuaworNTEyNyBiNGZkNDhlM2EzYjg5YjJhZDk0ZmU3OTU1YmY2Y2M5MWE2MjQ5OWIzIGxlZ2FjeS10cnVuaworNTEyOCBkZjNlMWU1MjFmZTY1ZGUzZjBkN2NiMzA2ZGRlNzBjMjVmMmUzYmE1IGxlZ2FjeS10cnVuaworNTEyOCBlNzIyNTdlNjU1NDU0ZDU2OTQ2OGRhOGIxMTg5ZTBlYzMzNmYzNTM2IGxlZ2FjeS10cnVuaworNTEzMCA1MTNmMWNiNzBjZTZhOWVjZjQyOGE3ZTlhNTMyNDNjMjljM2VhYWUwIGxlZ2FjeS10cnVuaworNTEzMSAyZjhlOGI2MTI5ZjczYWM3YTI2MzNmZDI4NDNhZGQ3YjUyMTAxZWQzIGxlZ2FjeS10cnVuaworNTEzMiA0OTE4MzkzOGQwN2U5N2I0YzNjZTJkNjU1NDkxNWZiYzY3ZmI4ZDdjIGxlZ2FjeS10cnVuaworNTEzMyAwYjdlMTRiYjU0YWUwZWVmMTA3Yjk4MzJjOWU0ODg5MDI1NjlmMDYwIGxlZ2FjeS10cnVuaworNTEzNCBlMmRkNzgxOTc1OTZiZmQxOGJmM2NkYjg5ZjQxYmRkMGQ0Yzc2MmRkIGxlZ2FjeS10cnVuaworNTEzNSAzNGVlZmEyMjY3MDlhYThlZGFhYzZkZjRiZDRkM2Y2ZmNmOTc4ZTU4IGxlZ2FjeS10cnVuaworNTEzNiBjOTQ1NzM1YTRhZDcwZjQyMDIxODVjMDJiZGM3MDU4YTBlZTU0MzI4IGxlZ2FjeS10cnVuaworNTEzNyBkMjQxOTBjNjViNTFmMDM0MWQ3OTI1ZWVjOWVkZDczZWZmZmUyODdmIGxlZ2FjeS10cnVuaworNTEzOCAwZmI2NTUyMGZjZDAxMmE3NTA1MWU1YzFkY2EwZDkzMGVjNWI2NWMxIGxlZ2FjeS10cnVuaworNTEzOSA0YzgwY2YwMmQxNTQwYzc4OTUwNDFkZTY2ODAwZTlhN2NlYmJkMWYzIGxlZ2FjeS10cnVuaworNTE0MCA0OTNiODcxZjM3NzU0N2M2Y2UzZWJjNzc3NWI2OWM5ZGRlYmY2M2FlIGxlZ2FjeS10cnVuaworNTE0MSAzMTgxNzJmZjJmMTRjNjk3OWMwOTY2YjlmZTM5ZGYxYWUwNWMwMTZkIGxlZ2FjeS10cnVuaworNTE0MiAxMDdjMTgwMDkzN2UzZjQ3MWUzOTMyZTNmMjQ2NGJjYzBjZGNlYzg1IGxlZ2FjeS10cnVuaworNTE0MyAwYjZjOGE3ZTkzM2E2NmVlYWZiNjVhN2VkY2I2NmZlMmVlYzA2ZmUxIGxlZ2FjeS10cnVuaworNTE0NCAwZTljYWUwYjUwNzJkNjg4MjBkZDA5ZjQ5N2FjMjFiZWQzMmJlYzQ5IGxlZ2FjeS10cnVuaworNTE0NSA5ZTlmMjJkYmVkMWFmMDRlMDk3NjEwZGE2MzljM2MyNjkwMmFiNmZjIGxlZ2FjeS10cnVuaworNTE0NiBkNDY0NGQzOTJhOGZlNjhjNDNiM2M0MWI0YzQwOGY5YjM4NTRiZDk0IGxlZ2FjeS10cnVuaworNTE0NyAyZDliMTY1MjcyNDdkY2IzYTM1N2IwYzBlMThkMDI2ZGI1ZmFiYTM0IGxlZ2FjeS10cnVuaworNTE0OCA2OTBlNDZmMGJmNTk4NTVmY2M4OTkyNjY5ZWZjMTA2NWM0NWZlNTcyIGxlZ2FjeS10cnVuaworNTE0OSAxYTQ4MWE3NWFmNDVmMTI5Mjg2MzNhMjAwN2YyMzg1YWZjNzZmMjA4IGxlZ2FjeS10cnVuaworNTE1MCA4OTI5MmY2YTI1OGRjY2ZlN2MyNjk0YWU2OGNhMTJkMDlmNTIyZmIzIGxlZ2FjeS10cnVuaworNTE1MSAyMTA4MjFmZDU2NTA5NDdhZDAwOGM2NGZiYTkwZWQwYTU2YmRlYzZkIGxlZ2FjeS10cnVuaworNTE1MiA0YjU3YWYxYmEyOTcxMDZjZDdlYzU4YjQwMThkMGRjNGZkOGYxOWM5IGxlZ2FjeS10cnVuaworNTE1MyA5YmRjMjdkMTUxYmFhNmI1ZDRiYjBiOTY1NjE3NmU5OTMzZDk4YmRmIGxlZ2FjeS10cnVuaworNTE1NCAzNDdjZjBlNDkyZDgxMWQ1MGM1YzI4MGM3ZjY1MDEzMzlkNmI4YTVkIGxlZ2FjeS10cnVuaworNTE1NSA3MzM1YzViM2I0M2JkMjQ0YjI5MWE1YWI4YmI5ZjU0MTMwNzY3OWQ0IGxlZ2FjeS10cnVuaworNTE1NiBjMWY0ODg1OGYxODYwZmFjMzBlNjU1ODU1Y2IwOWU2MmUwNDMyNWEyIGxlZ2FjeS10cnVuaworNTE1NyA5MjVkMWJmY2Q5MjU5M2QwYWFhNDYwOWU2MjEzOTgyMzdmNzk5MGVkIGxlZ2FjeS10cnVuaworNTE1OCBlMWQyM2E2YjkzMGI4MDdhNDdlZDBiZjM5MWQ5YTBhNDNiNWI4ODVmIGxlZ2FjeS10cnVuaworNTE1OSAxYWY5MjIwYzZkMTlkOTQ2ZjE3Y2I5Yjk5YjI4ZTA0YTRmNWJiOTBlIGxlZ2FjeS10cnVuaworNTE2MCAxMTU3ZTE0MjcwZDY4NzY5ZDc4OTU5YjcxMmY1YjUxMzNiY2E1M2JiIGxlZ2FjeS10cnVuaworNTE2MSBlMDM5MzY1N2ZmYTQ3NzFkZDNhZWY0ZDc4MGZkNTIxNDFlNWIxOTQzIGxlZ2FjeS10cnVuaworNTE2MiAwNjIzNWZkYzFhYWYzYmRjNzU2NjcwZWZlZmI2OWExNGUwZjIwMDA5IGxlZ2FjeS10cnVuaworNTE2MyAzZmZiMzFjYzhhOWIzYTBmYWMzYWU0ODhkMzQ0MTMzNjA1YzI0N2ZkIGxlZ2FjeS10cnVuaworNTE2NCA1MzhhYjgyZjkxYTcyNzU0MTY0ODA0Y2IzZTgzOWQ1NDlmMDc3YTQwIGxlZ2FjeS10cnVuaworNTE2NSA2ZDkzYjRhMGY0Y2U3YzdlOGM0Njc4MGIyYTk1Mzg4OWE3OWM0MTBhIGxlZ2FjeS10cnVuaworNTE2NiAyZjQyZTI3MzgyZTlkMjM2OGEzZjVmM2Q4MDBkOTI2ZTE4MzIxNTUwIGxlZ2FjeS10cnVuaworNTE2NyAxMmQ4YzgzODU3MzVmY2FiM2ZiNTliNjgzM2VlNDA0ZGFkNzMzNzcyIGxlZ2FjeS10cnVuaworNTE2OCAxOTg2Yjg2OWUzYTEzMTIyYjA3YTlkNTUwNjQyYTFlMDVhMGI4M2E0IGxlZ2FjeS10cnVuaworNTE2OSBmMTJmZjEzMGUwYjVmNDI1NDU5ZjBlNzBiNjYxNWMwZGU0NDkyNGRhIGxlZ2FjeS10cnVuaworNTE3MCA3OTczZjUzODcyNmNhYWNmZTY3Njc0ZTk5YzdhNDBhMWRmZDY3NzIzIGxlZ2FjeS10cnVuaworNTE3MSA5ZWQ0NWRiZjI3NjU4YTBhZjg5YmM1YzJiNGY2MDRiZmVlZTI3MmUzIGxlZ2FjeS10cnVuaworNTE3MiA0ZTA3Njk0NDQ4OGFhYjg0ZWIzYjhiMDJhNzlmOGIxMzYwYjNjODAwIGxlZ2FjeS10cnVuaworNTE3MyAxMzA2ZTc2MWE2MjM4Mzc0MGE1OWY2MzlmMTg3NzlkYmI4YjY4MDRiIGxlZ2FjeS10cnVuaworNTE3NCAzNzNjMTYzN2QzMDEwNGU3Y2FmZWUxZDIxZjU2MjBlZDM0MjA0YjI3IGxlZ2FjeS10cnVuaworNTE3NSA1MDAzMjM0MzllYjM5YjNmNzAwYTQ4OTM3MWQyMDFiMTU0NGE4MzExIGxlZ2FjeS10cnVuaworNTE3NiBiNjg5ZTZmOTJmMTdhMTExMDAxMTJlMzNjMTA0OWU4ZDY3ZDVjYjgyIGxlZ2FjeS10cnVuaworNTE3NyA5ZmViMGIwYjUwYjYwYzQwZmU3NTI1MjQzMzdjNDZiZDQ1Y2IyNzJjIGxlZ2FjeS10cnVuaworNTE3OCA3NDc0N2JmZmI2YTRkMjdjODY0OTBhMGRhOTYyOGVmNTQ4ODJiMGFlIGxlZ2FjeS10cnVuaworNTE3OSBjZDlkODZlY2MxNzUyOTRjNmMxOWQ4OTNkMTRiMGU0ZWNiNGZjMDA2IGxlZ2FjeS10cnVuaworNTE4MCA3NWFmYWFjODU1NjcwN2NmMDNkNTdmOTljNTU2NzFiNGFkNDQ2ZjRmIGxlZ2FjeS10cnVuaworNTE4MSAyYTMxODc2ZjcxMDI5OTA1NmYwMmIxM2M4NzA4NWFlNmI4MDkxM2JhIGxlZ2FjeS10cnVuaworNTE4MiAxOWIxMTk1YTNhZjg0N2UxYTk2ZDY0NTI5ZjM4ZTNlNTg1MzJiODc5IGxlZ2FjeS10cnVuaworNTE4MyA2Yzg2NGFkNTE5YTM2ODRhZmEzYmM3MTk3ZGI1YTQ0MmUyYjIxMzRhIGxlZ2FjeS10cnVuaworNTE4NCA4ODljNmRhN2I0Y2E1MTE5ZGY3ZGFmMzAyNDM2ZjZiNDQyYjI0ZDBmIGxlZ2FjeS10cnVuaworNTE4NSA2MjY3YTVmMjIyYmZkZWQ1ZTM5M2U5YThiZDFmYWRkZDkzZWIzNTI1IGxlZ2FjeS10cnVuaworNTE4NiBhYmYxMTZkYjUyM2ZlNGRiOWI4ZmFmMDIzNjQwOTUwYjE0NzkyOWFiIGxlZ2FjeS10cnVuaworNTE4NyAzNjRkNGE1MjRjZWM4MjFkYmNlNzNlNjkxYzQ5ZWEyZWNjN2M4MmFlIGxlZ2FjeS10cnVuaworNTE4OCBhNWNlYjNlOTNmYTEyNzM1ZWYxYTEwY2YyODVmYzM3OGU2NTY1ODc1IGxlZ2FjeS10cnVuaworNTE4OSBhMGZjOTRiM2JiMjEyNzA0MmExZDBjNmM1YTM4YWQ4ZmZkYjgxNTgwIGxlZ2FjeS10cnVuaworNTE5MCA2YTllY2IwNWM2NzllZDhjNGJjNTcwZDdiZmE5ZGU1ODcyYmZhYzYyIGxlZ2FjeS10cnVuaworNTE5MSA4MjIyMDQxZjVhOTFkNTQzODQ4OThhNTJkNDdjMDgzZDI3ZGFlMmRlIGxlZ2FjeS10cnVuaworNTE5MiBkMDNjY2FlMTcwZWFmMjgyOWNmODNiZDQ5ZTY3YjMzNTRjMWM1YjIzIGxlZ2FjeS10cnVuaworNTE5MyBlODgwYzAxNjRhZWNlMjI2YjY0ZDY2NzMyYTNjODE0NDc4YzdmOTQ2IGxlZ2FjeS10cnVuaworNTE5NCBjMjY3ZTMzMTIwMzA4YTJhZTIxOWM1NzdjYzU2ZWZjYTIwOTIzYTU3IGxlZ2FjeS10cnVuaworNTE5NSA1YWY2ZGIxZjZjMGNkYzQyYWRjYjUwNTFmMmVkMDhmNTcyZjZmNzNhIGxlZ2FjeS10cnVuaworNTE5NiAxMGUxMDVlNGNmOWMzYjhmMDQ1MGFkYjc4YTQ3ODBmMGVmMzg4OGRlIGxlZ2FjeS10cnVuaworNTE5NyA5ZjgyYTZiYjAwMTBkYjYyY2I4ODUwOGU5ZTc3MjhhNTgxMGE0NTgyIGxlZ2FjeS10cnVuaworNTE5OCBkYWExNTBiM2E2ZTQzZTEyYjNlMTU5YjRlNTBjOTVmOTVhZDRkYWM2IGxlZ2FjeS10cnVuaworNTE5OSBkYzY0ZGY3ZjFhZDY5MDBmNTYxZDQyZjJlMzA5MWU5OWQ4NWMyMjIwIGxlZ2FjeS10cnVuaworNTIwMCA2ODZmNGJmYjRkYTYyMjg5YzA3ZGUyZDBhMTE0Yjc1Y2IzODlmZTZjIGxlZ2FjeS10cnVuaworNTIwMSA5MDI0MGU4MTliZWNiOTkxYzI2OGUzM2E4NzM3MzU5YjQyZmNlYzBhIGxlZ2FjeS10cnVuaworNTIwMiAzN2M0OGZkZTYxYjhlZDg1NjJlNjM1MDhhNWFkODAyNDNiZDBiZGFhIGxlZ2FjeS10cnVuaworNTIwMyAzY2Y4OTZkMjRlNTBkYmI0Zjc0MDJhMTM1ZTA1ZjhjZmI1NzQ2NmJkIGxlZ2FjeS10cnVuaworNTIwNCA3ZGY2ZmNiNDI2ZjUxNDc5YjllMDU3NGU2ZTVkZGY4YmNkZWMzNDBjIGxlZ2FjeS10cnVuaworNTIwNSA4MGI1YzgyMjcyYTI1YzFlZjg1MTMxNGUxYmY5MmQyODU5NDQ2YWVhIGxlZ2FjeS10cnVuaworNTIwNiAzZTM3MGE0YjEwM2JlMjA3OWM3ZTJiOGJkYjU1NTBmOGFlYTc5NzM1IGxlZ2FjeS10cnVuaworNTIwNyA5ODJhNWJkNmQ0NmQwNzY3MGYyMDhiOGMzZjM1ZDA4MGU3ZmUyZWQxIGxlZ2FjeS10cnVuaworNTIwOCBhODI3ODAxZWQ5NjMzODRlYWIxNmZkZmUwZWUzYTNjMTljMWZiZTk4IGxlZ2FjeS10cnVuaworNTIwOSBmMTg3OWIxYTJjMmFlOGRiN2YzOTUwOGNiZDAwOTViOTRhODA5ZGRkIGxlZ2FjeS10cnVuaworNTIxMCA0ZjFiMGNjNzM1MDdkNjcyOTU5OTVjNTkwZTYwNTRhMDE4NGJlYWZkIGxlZ2FjeS10cnVuaworNTIxMSAzZDVlYzFjMjIwNTUwMjIxNTZlOGZlZTkzMDYzNWRkZTYzMDhiMTQ0IGxlZ2FjeS10cnVuaworNTIxMiA4NTNjNDg2ODkzYjgyY2U5NWNlYzEwYmU0ZjhmZWE3ZDRlNDE0OTBhIGxlZ2FjeS10cnVuaworNTIxMyBlNDE2NjlhMWRlYTAyNGQ5YmRlMDIyYzdmM2I1OWIzYzI1MGUzMzc1IGxlZ2FjeS10cnVuaworNTIxNCAzOWNkMjU2NzhiNDFhY2Q0MTY0MzZlMTkwYWVmZDBhNWU0NzcyM2JkIGxlZ2FjeS10cnVuaworNTIxNSA5NTE2YmFkOTc5NjEzMTI5ZWQ2MGYwNzFiMzY5NzAyODYyNjEzNjE4IGxlZ2FjeS10cnVuaworNTIxNiAwYWYwMWYzZTA2Y2M5ZTRhMzM1NWY5NTU1MzFlYzJkZjkyZGY2ZGIxIGxlZ2FjeS10cnVuaworNTIxNyBhZTY0MDAzYjJhNzU2NTFjNGRlN2FiYTBmMGVhNTY3YjAyYzkyNTQ5IGxlZ2FjeS10cnVuaworNTIxOCAzNTRlYmRkZDM2MmIwNGM3NmNlMzc1MjE4OThmZmRlMGJmZTY4MjQzIGxlZ2FjeS10cnVuaworNTIxOSA0Yjc0YjNiNDMyNjliNzFmNGI2NjBmODViYmVjMmQzMzZhZGRmNWZkIGxlZ2FjeS10cnVuaworNTIyMCBhMTA4N2FhNjQxY2Q5NWYwZjA4MDNmMDE0MTZlYjAyZTdjMDljNjE5IGxlZ2FjeS10cnVuaworNTIyMSA0Mzg5YTYwZmVkY2U2NjFmZGFiNzcwMDcxZjhhOGU0NGY5Y2IyNjhiIGxlZ2FjeS10cnVuaworNTIyMiA1MjE1NjM1MmZkZDZkMzVjZGY5ZjMyNGE4ZGM4NWM5ZDg1MzkyMGU4IGxlZ2FjeS10cnVuaworNTIyMyA2Y2ZkNjk1ODU2MzZmMDJlZmVjMzlhY2UzNWZjMTRiZDhiODEyMmQyIGxlZ2FjeS10cnVuaworNTIyNCA2OWFiYTZkOWQzNzgzNTI2ZTM0YWNmNzRkMDIwZDI4ZTZlZjg2YWU1IGxlZ2FjeS10cnVuaworNTIyNSBhYWY5MDJjZGZkYzRhMmEyZDdiYTViMzFlZGNjYTk5MzVlMDQ0OTBiIGxlZ2FjeS10cnVuaworNTIyNiAxYjllOTAzNTM1MjkxMTkyMTYxMzNiZjEyZmMwNGI3MzU4NDc1OWM2IGxlZ2FjeS10cnVuaworNTIyNyBiNDBjYWJmZGM5MWRlMjViY2VmZWNmMjZkOGE3OTgyZmE0NmIxNjI3IGxlZ2FjeS10cnVuaworNTIyOCBiZTIxYzNlMGNjMDNmNDhlYjZhYTRhMjBhZDRjNWM0MTAxNjJlYTEzIGxlZ2FjeS10cnVuaworNTIyOSBiOTU0ODk2MGY5NDUwYzlhZDA5YmQ3YmQzY2FiOWNlYjlmMzkxYjM3IGxlZ2FjeS10cnVuaworNTIzMCBhYzZjOGIxMjE5ZTY3MWNkNDU1Zjk3ODVhNTU0NDYwYWUyZDZlNDFkIGxlZ2FjeS10cnVuaworNTIzMSA2ZDhkOTgxZWY2YzQxNTFjMzY2ODY1ZDYxYjQ1ZDRjNjA0MTllOWVlIGxlZ2FjeS10cnVuaworNTIzMiBmZWNjOTM5ZjRkNTk1N2NmYjdiMWU2MGI1ZDU0MWM1Yzk5NzgxZjI4IGxlZ2FjeS10cnVuaworNTIzMyA4ZWNlOTIyN2ZkZTEwNGQ5ZmVkMmFhMjdjMzA4ZWIyZDI5ZjA5NzYyIGxlZ2FjeS10cnVuaworNTIzNCBhMGE0YWZhMzlkN2EwMWNkNGYzNjVhNGI4YmViZDE1ZTk4OGNlNjhhIGxlZ2FjeS10cnVuaworNTIzNSA2YTE2NTZkYjdkZGVlY2I1OWY5ZmZmMmNlZDZhNjI2MmI5NTQzNDEwIGxlZ2FjeS10cnVuaworNTIzNiBkYzJhZGY3OWU1MjNlMTAyZWM1NzJmZThjNDc0Nzk0NTVmNjQxNGI3IGxlZ2FjeS10cnVuaworNTIzNyAwZTVkYWZiODVmYmQyYmI2M2I3MmQyOWZlYjk3ZTlhNjU5ODlhY2UwIGxlZ2FjeS10cnVuaworNTIzOCAzNTQzMmM5YTg3NGUyYzBkMWM2ZmVlOTZjZTRiNWU3ZGVmMTI2MTVmIGxlZ2FjeS10cnVuaworNTIzOSAxYTNmZjAxNDhkZWNkOGZmNjQ2NzkzZTRhNjU1YTE2NDM4NzU2OTA5IGxlZ2FjeS10cnVuaworNTI0MCBiNzM1ZDMzODY2NTFhMDU3ZDdiMGI4YzlkZDU2YjIzMDI0OWU4ZWJhIGxlZ2FjeS10cnVuaworNTI0MSBmZDc3N2FmNjdjMjMxMGQzY2NhOTE4MzJlNDllZWNhZjAwMjM1NWVmIGxlZ2FjeS10cnVuaworNTI0MiA1YmMwZWRkNWIzZjkzMmI0N2Q0OGY2MDJkYWZmYjI2NjdmOGIzNmVmIGxlZ2FjeS10cnVuaworNTI0MyBiZjFkZWQ3NTk2MmQ2MjA2MTU1NzVkZjExNjRlNzk3NWFhOWY4NTYwIGxlZ2FjeS10cnVuaworNTI0NCAxN2ZkZWMyZmIzMDlhOTFlYjFhZWVjZjE1OTU4MDIzOGI4MTQ3ZGFkIGxlZ2FjeS10cnVuaworNTI0NSBhZjdkMGZlYTNmYjJhMmMyYWUxZTIwNDg3NWVlZGNmYTZkZWUzOTZlIGxlZ2FjeS10cnVuaworNTI0NiA0MTEzZjRmYmFhZTUzNzIwMmQwOWExNmUyOTRkYjlkN2ZhZDNjYjhiIGxlZ2FjeS10cnVuaworNTI0NyAxMjAzZTU4NDIyNTVjZTY0ZWYyZjNiYTlmYTI3NjE0MWUyOTQzOGI3IGxlZ2FjeS10cnVuaworNTI0OCBhNWQzNjFlMmIyZTIwYzZkMGJjZDUwNTkzZmM4MTRiODhhNDYyYzRjIGxlZ2FjeS10cnVuaworNTI0OSA5ZWM0NGUzN2Y2YjEzM2MzNmFjODY3YmUzMDQ0NWEyYTJjM2IxNTk0IGxlZ2FjeS10cnVuaworNTI1MCAzYjdmYTU2YTNiOWJjYmZiNjMyMDE3MzlkMDg3NDZjZjg1ZDA0ZTU5IGxlZ2FjeS10cnVuaworNTI1MSA1MGIyZjgyZTZmMGVhNDdhZGI5NzIxMzMxODZlMDA4YzYzMDljNzE1IGxlZ2FjeS10cnVuaworNTI1MiAwNmYyMjhkNjIzNmU0Y2Y5YWRmNjhiZTgyNjRmNTQ4NmJiZjA3ZjlhIGxlZ2FjeS10cnVuaworNTI1MyA3YzNlNGYzZWUxNTJmODhjNDkxNjUzZTlkNzAyNWYxNDIwMTU4YTNjIGxlZ2FjeS10cnVuaworNTI1NCA5YWFiNGViMmIzZjk4MzdiOGRkNDg4YzY4ZGJlOTAxYjdkODI4OWVkIGxlZ2FjeS10cnVuaworNTI1NSA0MTU2NTQ1NmJjMjIxY2NjNTlhZGI0YWJhYjgwZGE1NWEwOTcyNmE4IGxlZ2FjeS10cnVuaworNTI1NiAyNGZjMDYxNmE2OTZjODI5OTQ5ZjBmZTI5NjdkYTA1YWE5YzllYTY2IGxlZ2FjeS10cnVuaworNTI1NyBiYWYwYjliN2MyYTVhYTY5MzhjZDZhOTU4YjVhODAyMzM4ODdlZDIzIGxlZ2FjeS10cnVuaworNTI1OCBhZjNhYWI2YjA3YzQzYTk1NGU3MmJiNTE0ODEzYzU0MmMwNTQ0MWEyIGxlZ2FjeS10cnVuaworNTI1OSBiODkzN2U3NGZkZjU1MWMwMzIxMjMyZmIzNGEzMGE2NTk5MGQ0ZWZlIGxlZ2FjeS10cnVuaworNTI2MCA4MjNmM2E4ZWNmZTQxOTM0NzAxYmNmMzhiNDdjMTJjZjhjYzg5YTY3IGxlZ2FjeS10cnVuaworNTI2MSBlYTM4YzM2M2RlNThiNzViNDllMDM2ZGMwMjdmMTFlY2U1YTc2ZWI1IGxlZ2FjeS10cnVuaworNTI2MiBlYmMxNzE0ZGM3MzhiZGRjMjQ0NDMxNDg1NzI4MjUwOWE1NDRhOTRhIGxlZ2FjeS10cnVuaworNTI2MyA3ZjJjMGU3ZWY4NDI2MmM1OTU4NjQ2MzQyZjg2OGYzMzM4Y2FiMGJmIGxlZ2FjeS10cnVuaworNTI2NCA1OWMyYWNiM2U3MDI1NDYzZjk5ZGZlM2FhN2UzNWVjMzk2YjBlNTg0IGxlZ2FjeS10cnVuaworNTI2NSA0YTk5OGIxYTMzMWYwYWU5ZjBmMzBjN2IxZTM4NzVhMDU1Y2E0ODdmIGxlZ2FjeS10cnVuaworNTI2NyBhYjNkY2E5N2ZmYmViNjM1YTE2ZWM1ZWQzOGZmNDVmNjJmODg4MDhmIGxlZ2FjeS10cnVuaworNTI2OCBlOTExZjJmYjE3OWMyYzMyY2FmOTIzNmJiZTIyY2RjMjNhZDVhMWEwIGxlZ2FjeS10cnVuaworNTI2OSA3NTBhMmRkOGE0MzdiZmM4YmQzMTk5YzhkNzAwM2MyYjQ1NDljZDExIGxlZ2FjeS10cnVuaworNTI3MCBhMjM2M2I2ZTljODZlOWFiYzUzNjkzYjZiNTk4NzA3OWRlYTJkNTYyIGxlZ2FjeS10cnVuaworNTI3MSA2MGM1Nzc3NzM2NmY3NTVhOTcxNDhmYjUwYzNhYmIwZDlkOGRiOGU5IGxlZ2FjeS10cnVuaworNTI3MiBiN2EwNmRiODVjYWZjZTQxM2QwYzU1ZGNkOTI1YWYxZDZjZjI3ODFiIGxlZ2FjeS10cnVuaworNTI3MyBkNzZhNzE0ZDFjZWFhYWRlMDA3ODA4MTRjM2M3MmJiOTMwZDU0NmE3IGxlZ2FjeS10cnVuaworNTI3NCA1Y2E1ZDc3YWZkMjhiYWM3MzdlYjBhYWI5Nzg1ZTQzMWVkZGJjYjRkIGxlZ2FjeS10cnVuaworNTI3NSA5MzE4YWM1MTY5MWU2ZDg2Mzg0ZmZkNDQzMGQyMTY0YTI2MTBkMzQ0IGxlZ2FjeS10cnVuaworNTI3NiA2ZmZjYmUwZmU5ZDNjZDAwZjJmZTMyOTgzNjg3NjM5MTE5YzJmOWI4IGxlZ2FjeS10cnVuaworNTI3NyBmYzIxOTBlYzFiZWFkMjg3YmMwNmUxODExMzI0NmIwNmY5ZDY5ZjE2IGxlZ2FjeS10cnVuaworNTI3OCAwN2ZjNGZlZmI2ODM3NTk1MWVlNzYwYzhhNTE1M2MyMzQ2NzE0ZGVjIGxlZ2FjeS10cnVuaworNTI3OSBmYjNkYWY5YjI0NTZkYzFhM2Q5OWY1NmY3OGM1ZTYyNzBlZWFmMWU4IGxlZ2FjeS10cnVuaworNTI4MCA5OTliNWJkYzE4Y2U5OTZiMDJhMDc2YWE3YzBiZjBhOTUzYWIxNDUxIGxlZ2FjeS10cnVuaworNTI4MSBjNmZlODBjZTdjMjA5M2ExYWNhNTVkZjBhYTJjY2UwNWRkOTM5OWIyIGxlZ2FjeS10cnVuaworNTI4MiAxZTgyZGQ2ZGZlMmVmNDE2ZjRiOGEyOGFmODRmZjk4NDNiY2JhMDJmIGxlZ2FjeS10cnVuaworNTI4MyBjNGMzOWQxNzFlYzNiMDYzZDZkYmRhMjY4YzJiMWY1NWY5NTdlMjgyIGxlZ2FjeS10cnVuaworNTI4NCA4YjhmYjI0ZDQ4Mzc5NGYyZTkzMDMxMzkyZTkzMjA4MzExZDkzMzdkIGxlZ2FjeS10cnVuaworNTI4NSBjOWI3Mjk3YTA3NTg3MjBiN2NhNDMyNWUwZTQyMTdhYjEyOWMwNzk5IGxlZ2FjeS10cnVuaworNTI4NiA4MjI1YzY1ODFiM2QzNmUyNWVhMTA2ZDI0NTQ5Zjk4YjI5OTQ0Yjg2IGxlZ2FjeS10cnVuaworNTI4NyA2OGQ3ZWFlNmNiZDZjNTY3NTEwNDk4Nzk2MThiYWJhNTI0OTUyYjNlIGxlZ2FjeS10cnVuaworNTI4OCA0M2NjZmNkOThlODA2ZWRhZDNmYWFhNmI0Zjk1YzRhN2JiMzI3YjkzIGxlZ2FjeS10cnVuaworNTI4OSA0MDdjNzg0NmI4ODZiODU4YmY4ODAzODRhMmYyYjM4NmVhNmQyMmE0IGxlZ2FjeS10cnVuaworNTI5MCAyODJiMGI0YzFlZWE1OTBiOTBhNWZmMTA5ZjM2YzFkNjFlY2U1Mzc1IGxlZ2FjeS10cnVuaworNTI5MSA2NWM3MTA1ODY4Zjg4OTk2NGU4ZTQ3ZTM4MTJlNjcyYjMyMWUyOTNlIGxlZ2FjeS10cnVuaworNTI5MiBiZWJiMGVhN2RlMjAwY2VjM2JmYTJkZmVhM2M1ODM2MGJmODU3ZmE4IGxlZ2FjeS10cnVuaworNTI5MyBjZDllNjEzNTI0NGE1NzA5MGE2NzI5ZjFiNTIzODgzNjQ1ZDA5NTFlIGxlZ2FjeS10cnVuaworNTI5NCBmZjFmYWE0Y2MxZGZiYzg5YjdhZmY4OTM5MGVhMzY0YmFmMDIwNzZhIGxlZ2FjeS10cnVuaworNTI5NSA1OWE5Njg5YzExYThiMDE0NTE4Y2M0MzBhYzI1ZTZhN2YyMWIxNTdlIGxlZ2FjeS10cnVuaworNTI5NiA5NDNlMWM0ODA0ZDgwMDYzNWFjOTc2NTNlMWZiYzNiYTkwNTIwMzBlIGxlZ2FjeS10cnVuaworNTI5NyBiZDc5Y2Q3NjhmZjg4MGU3MWRlODYxNjA3OWYzMjBjOWE2Zjg0NTM0IGxlZ2FjeS10cnVuaworNTI5OCBlZWRkNmMxZjNhZTdlNGNiZDM2Yzk2ZjhkMTk5YTEwYjJjNTllYmY2IGxlZ2FjeS10cnVuaworNTI5OSAxZmQ4ZjMxNmNiZTkwZjg5NDAwYzg4NTNiOTE4NzIzMmMwMGY3NzBmIGxlZ2FjeS10cnVuaworNTMwMCAxNjQzOTk3ZjE3MThhYTY0ZjUzMjBlNGNjNzdlZjI1MjM5Zjk2MTIzIGxlZ2FjeS10cnVuaworNTMwMSA0ZGVhM2Y1NTQ1Y2YzZDkzNTJmZTQxOTkwOWQ3MzQ0MDVjNmZlZDNiIGxlZ2FjeS10cnVuaworNTMwMiA3YzdiMzcwNGE2OGZhMjExMGMwNzEzYTI4NTM1YzExN2ViZThjOWI4IGxlZ2FjeS10cnVuaworNTMwMyBkOTJlZjk0YWZlZmJlY2VlNjZiODExMTM5MTg0OGViMjYwZjE3MDY1IGxlZ2FjeS10cnVuaworNTMwNCBiOTg4YTRhY2E2Zjk2MGEyOGIyOTVjYzhiYTE5ZTU2MmQ4OTA5MDUwIGxlZ2FjeS10cnVuaworNTMwNSA5YjFhMzI2NzI3ZGZkNzcwYWFlYTA3ZDA0YjlmNGMxZTZmOGYzOGViIGxlZ2FjeS10cnVuaworNTMwNiAyYzczYzhhYjhiODJhZTgyZDQ1ZjgxZTgzMDQzOGE1ODBiODZlYzgxIGxlZ2FjeS10cnVuaworNTMwNyBkNTM5OGFjYWZhMmNjYzkzZWViMTU2M2E1ZDRhMGFlMWU4YjEzMjgxIGxlZ2FjeS10cnVuaworNTMwOCA2NDkyOGY2YThlODBlMDZjZTI0MDE5YjdkZDdhNjFiZTgwNDBhYmVmIGxlZ2FjeS10cnVuaworNTMwOSA0MjA4NzRmN2Q4YmQxZmYwNDg5YjQ2YTJlMTk0ZmVhMzgwYWY2MjIxIGxlZ2FjeS10cnVuaworNTMxMCA4ZDkyYTNiYjljMWZmYWRjYjdjMjFhMWU1YTNkZWUyNDljOThiNzdjIGxlZ2FjeS10cnVuaworNTMxMSAwMjYxYmY1YjM4MTliMDNkODNmMjU0NTYyOTQ3MjQ0NjM0NjA0MDI2IGxlZ2FjeS10cnVuaworNTMxMiAwNTFiYWNhYjU5YWZlMjVlMzA2OTgzZmU0MGI2MWRjMTUyZjhmYmE1IGxlZ2FjeS10cnVuaworNTMxMyBlYWU0YjJiYTcyMmViNGM4NGMzZGVlOWUzMTRkMTU4OWFkYTU4M2ExIGxlZ2FjeS10cnVuaworNTMxNCA1NjBhY2MyNWY4OTY2MDMzMmEyZGIwNjY5MzFhN2YwNGVhMDg2OWJmIGxlZ2FjeS10cnVuaworNTMxNSA0ZjZkNWZlMTk4MTIyZjNkNjJkZDY2YWM5NmE3OTZlMTZmNGQyMzFkIGxlZ2FjeS10cnVuaworNTMxNiA5N2NmYzQ2ZTMzMDJjMTY2ZDU3YmQzNWE5YjkzY2NhYjJkNDE5ZWNkIGxlZ2FjeS10cnVuaworNTMxNyBlMzc5NWRiNGFkZjg5OGZjMjNlODVlMmE1ZjJjYTZmMTQ0ZmJhMDhjIGxlZ2FjeS10cnVuaworNTMxOCBiZWVlZmZmMWM0NDI2NTMzNjQyMWYwZGFmYzdkNGI5OGZlOGE3M2I0IGxlZ2FjeS10cnVuaworNTMxOSAxZWVlYmEwOWEzMDY0OTcxYWE2ZDNlMWNjYjU0YjkzMzg4MmRmZWMzIGxlZ2FjeS10cnVuaworNTMyMCBkNDI5NDFkM2E5NWY0NWY2NjJiNDc3Yjc2M2M1ODNhYjlkYzJlNzMyIGxlZ2FjeS10cnVuaworNTMyMSBkZDhhMzBlNWY3NDQzNGMyODllNjUxMWNhNjgzMWYwNDU4MjI2MGQ1IGxlZ2FjeS10cnVuaworNTMyMiBlNmJlYzE0OWE4ZDcyMzk3ZWY1ZTNiOWRlYjUxYzkwYzRjMGVmMjAzIGxlZ2FjeS10cnVuaworNTMyMyBhN2FmOTcwYTk0YTQyNzJiY2MxZjQ4MGQ1NDQ0YzhmMWMxNGViODI1IGxlZ2FjeS10cnVuaworNTMyNCBlZWJiZGJlZTU0ZjkwMjA3ZDZmMzlmMmQ0ZjczMzRkYzgzMWEyNTcwIGxlZ2FjeS10cnVuaworNTMyNSBlYjFlZDRkODQ2MjkwZDUyOWNhMTg3YWNlOWM4YzRhYmQ5MWIzYzZkIGxlZ2FjeS10cnVuaworNTMyNiBiYTJiMzA5NzJmZmVhNzM1ZTQ3OTViOWNkNmNhMjYyZDRlNzVkOThmIGxlZ2FjeS10cnVuaworNTMyNyA2YWU5YjM3N2U1MjJhNGVkMDIwYTE4YjU2ODg5ZTUzMTJmMGIxMzBlIGxlZ2FjeS10cnVuaworNTMyOCBkYzZiM2U3NmNjZTY2NDI3NzdlMDU4MWQ0OTYzOWNjMWQwMGFiMGUzIGxlZ2FjeS10cnVuaworNTMyOSBkZjhjZWRhODQ1NDVlNzUwM2MwOGNmYWVkYTVmM2VhYzc1NWU1NzBhIGxlZ2FjeS10cnVuaworNTMzMCAxMGUwMDdhZWYxY2ZmMTMwYTdmYWU0YzA2MWZjNjVmZmE4NDczOWVhIGxlZ2FjeS10cnVuaworNTMzMSA1Zjk1MTkxMmU5OTU5MGNiNGYxZjA5Y2UyMmVmNGVmNTg1MWRkZjE0IGxlZ2FjeS10cnVuaworNTMzMiBkNDAyOTBlNDI0NTU1NmU5NTc0M2EwNmQ0YTU0MWE3OWNlZWIwNzg2IGxlZ2FjeS10cnVuaworNTMzMyAxNDExMWQ2NjU3N2RkNTQ2NGFmN2U4OTkyMzE0NjQ2MzkwZGExYjcyIGxlZ2FjeS10cnVuaworNTMzNCBhMTY5ZTY4NzM0ZmYxMGViMTRmNzY0ZTlkNmQ3ZGRlNzdiYjhkZjQxIGxlZ2FjeS10cnVuaworNTMzNSBmNjU3ZDY3ODEyYWZhZThkMDI1OGRhNDE2MDdkZDNmY2ZmNTljNGM4IGxlZ2FjeS10cnVuaworNTMzNiBiOWE2MjUwMWU3NmRjODllOTllYmZiMmQ2ODYwMjFjNDE1MjcxMWE4IGxlZ2FjeS10cnVuaworNTMzNyA1MjBlMTg1NWEyNGQ5MGIyMWQ1Y2RjMmM2NjA4MzlhOWFmZmIzMTZlIGxlZ2FjeS10cnVuaworNTMzOCAwNTM0MDI1Y2VmZTU1NmZhYzdlYzM0ZDQ3OTAzOWVjYmJiZjUyYzc2IGxlZ2FjeS10cnVuaworNTMzOSBkM2IwN2JhM2UxMmRmM2I4Mjc2MTQ1MWIzMGMzODdhNmM5NmRiZDQwIGxlZ2FjeS10cnVuaworNTM0MCAzMTU3NjBiYTAwNDFkMDRjYmJiNzVlMzIxZDI4NmQ0YTM3ZmZlOTI1IGxlZ2FjeS10cnVuaworNTM0MSA5MjdmNDgzOWZiZmExNDhjNTc1NzgwMDM5NjljNzNkYmM4NzNiYjkyIGxlZ2FjeS10cnVuaworNTM0MiA3MTU4NGZlNzc0OWMzNWZkOGVhZjU3N2VlNTZhYmNiMzU3NWMxYWU3IGxlZ2FjeS10cnVuaworNTM0MyA4NTE0MGIzNTQ4OTAxZjg3NzkzNTk4ZDlmMjA5NGJkYmRmYmFlZDdhIGxlZ2FjeS10cnVuaworNTM0NCBiZWVlYTk3NTc4Nzk4OTc4OTliZjI0NzhkYjFlMmQ0YWIxODIwMjZhIGxlZ2FjeS10cnVuaworNTM0NSA1YTUyMTljOGMyZTY3NGZjNDBmYmZjYmMwNzFiMDc2ZWMxYmEzMjQ5IGxlZ2FjeS10cnVuaworNTM0NiAzNjM3ZGE0Yzk4Y2IzMTAxNDdmMDU4ZWFlMzYwZGU5ODgzMmZkMzA5IGxlZ2FjeS10cnVuaworNTM0NyA2ZjFkZGYxMTM5ODJhZGExOGE2YjM4YjllN2ZmZTc2MjE2ODRmM2IwIGxlZ2FjeS10cnVuaworNTM0OCBhMGU4MjQ2ZDUyMzc4ZDUxODkxZTYwYTA2OWZjZWJjNmFhMjcxOWRmIGxlZ2FjeS10cnVuaworNTM0OSBmODhiY2NiNTQ4ZWY0YzE1NTRhNGI4NDExNzAxMjdhMDY4ZTYxNjdiIGxlZ2FjeS10cnVuaworNTM1MCA1MWM5Y2ZmZjMxZjNlMTdlYTM0NzIxYjAwMGJmNmFjODMxNTdkYTJjIGxlZ2FjeS10cnVuaworNTM1MSBlMDA2ZWQ4OGI0YWE0NjdkZWQ3YmFhMDYwMTlkNTk4MmQzMmQ4MmYxIGxlZ2FjeS10cnVuaworNTM1MiAzNjNhZjdlM2VkMmQyM2NiNzliNTk3MmJlNzdiYTJmY2Q1ODJmZDQxIGxlZ2FjeS10cnVuaworNTM1MyAyMWUxMDU0NjBhNDk5OWU4YmYxN2FiMTIxZjZmMGVmZmI3NDVlNTQwIGxlZ2FjeS10cnVuaworNTM1NCBlYzBiNDI4ODkyNDNhN2Y5ZTZiYzc1NjgyMDIzYmMzODc5MWVjMWM3IGxlZ2FjeS10cnVuaworNTM1NSA2YWJkMTQ0ODU4ODRmNjFiOGQxMThiNmYzMTQwNWYzZDFmMTE2ODgyIGxlZ2FjeS10cnVuaworNTM1NiBlNTEzZjBkNjUzNjhjMWU1ODFhZDYxNmFmZDRlOTBjOTUzMDMyYmYyIGxlZ2FjeS10cnVuaworNTM1NyAwNGUxNjkwZmI0ZDExNzQ5NjJiMzdhNjFkYzgzMzQ4ZmE0M2YzZGVkIGxlZ2FjeS10cnVuaworNTM1OCA5NjRkNzZmNDlhNWVjYTk1ZThlZDIzNTU5N2U3N2U0ZWJhZDM5MTkzIGxlZ2FjeS10cnVuaworNTM1OSAzM2IxNTRiNmM2MWJiOWZlOWU0OGIzMDU3NTQxNTFkNjgyYzA4MWU0IGxlZ2FjeS10cnVuaworNTM2MCA0NTBhZDU0OTY0MDc3MDFkZWZjODA4NTE1ZGViYWIwMzEwYmNjMjQ5IGxlZ2FjeS10cnVuaworNTM2MSA0MDk1NzgyYzk0MGVhYzQwZThjYTU4MTQwYjA2ZDQ5OTljY2FhYjAzIGxlZ2FjeS10cnVuaworNTM2MiA4MWI0MTMyNGQyNmViOGU0NmMxNjQ5M2QxMDcxYTQ0M2ZiMDcwN2QwIGxlZ2FjeS10cnVuaworNTM2MyBmMGQ5ZjgwMGE0YWFjN2FkYTFlYjRiZTFmN2E5NWJkMDhkNDgxMGI3IGxlZ2FjeS10cnVuaworNTM2NCA0ZDY5ZmRlZTlmNWQ0MjlhODQwYTFjMTYxMjcyMDMwYTIxOTY5N2UyIGxlZ2FjeS10cnVuaworNTM2NSA1NmU2MjhhNzdjOGQ1OGEzMDA5MzNkZjRiYzRkNGYzYzM3NDQ3OTU2IGxlZ2FjeS10cnVuaworNTM2NiA2NWYwNmZjMzk5NjAwYjA1ZGE0ZjFiZmExOTZkOTY1Y2NjYjE0OGJmIGxlZ2FjeS10cnVuaworNTM2NyAwYWNiZDg1YmNkYmEzNjUzODgxYTRiMDA5YWE2NDZlYTViMGQ0M2FhIGxlZ2FjeS10cnVuaworNTM2OCA1N2VjMjRlMGYzNWE4MGYwMjY1ZmU5NzgzNGUyZTZjMGVjYmYwMzdhIGxlZ2FjeS10cnVuaworNTM2OSAxMzU4MWI0MTc4MzdiODQ1YmNiOTA5MDYwOWRiOWE3MzNhOWE2ZGY4IGxlZ2FjeS10cnVuaworNTM3MCA3MzhjNzQ2MTVhYzQ4OThhY2RjZjAzZGY3ZWJjZjkyYjBiMzAxYWE2IGxlZ2FjeS10cnVuaworNTM3MSAwMjRmZGQ5Y2NkZjI0MGJkNTRmZWJlYWUxMmY0NTQ1MTJjZTA3NzUwIGxlZ2FjeS10cnVuaworNTM3MiAwYWZkNDI5NjBhMWZkMzYwYjBmOTY4MWExMzZkNjZlODg2OWFiM2MxIGxlZ2FjeS10cnVuaworNTM3MyAyMTQzNWEwYjliMTE2YTQ5ODNmOGYzNWVlM2JhNmEwZjNiMmJhZTc2IGxlZ2FjeS10cnVuaworNTM3NCA4OTU3YmNlYmYxMmM0ZmIyOTZhZmUyNDM1ZTEwMmVlYWY5MGZhYTQzIGxlZ2FjeS10cnVuaworNTM3NSA2MTlmMzE2NThiM2JhN2IxYWEwZjMwMWM0OWEzNTg3YmNkOGM2NDI5IGxlZ2FjeS10cnVuaworNTM3NiBmOWIxMDY5YTNlMjY1ZDkwZGVmYmM4MDM3NjNkZjgxZWI4N2VhNDAwIGxlZ2FjeS10cnVuaworNTM3NyA1YTI2MTJmYjZjMGUzMWIwN2U2MjNiNWQ0NmI1YTAzZDIyN2QwYWY4IGxlZ2FjeS10cnVuaworNTM3OCA0MjlkN2UxYjFmMmI4YzM2ODJjYjQ4ZmRiYjFkN2UwZTAwYmYzMjJjIGxlZ2FjeS10cnVuaworNTM3OSBkZjdiMTVjMWU4Yjc5NmZmNGJjMjcxY2U5ZDM1NTJkYTMxNTcyODg4IGxlZ2FjeS10cnVuaworNTM4MCA1MWRkMDY1YTk3YTYxNGVjMjBiMDgxOWE4NjAzZmU0NDAzMWIzZDNmIGxlZ2FjeS10cnVuaworNTM4MSBlMTZlMThiOTYyNmM4ZjJlZWUxYWE2Yjc4Zjc4YzA5ODJkOGVlN2U3IGxlZ2FjeS10cnVuaworNTM4MiA0NTA5ZGZlMTliNjg2MGRmMWE1MjgwZDQ4OWY0YTQxNjYzZGFkMTc3IGxlZ2FjeS10cnVuaworNTM4MyA3NjRiMGZjODY3YTQ3NWM3Yjc0ODgxNzJlMDFhODMzZTgwMWVlMWI2IGxlZ2FjeS10cnVuaworNTM4NCA5ZmFkMDI5ZjgzOGZkMWI5MmYzMzZlOWFiNDM2YzZiMGI5NTAyZmNlIGxlZ2FjeS10cnVuaworNTM4NSBjZmE5YjNhODQ4NzJlYWY5ZDliMjY3MWMwMTQ0ZTJjZmQxMmY2N2E0IGxlZ2FjeS10cnVuaworNTM4NiA4MTFkOWE5OGUxOGFiNDE2MjdlMzhjMWU5M2JjNWUzMmY1MTIxYTI5IGxlZ2FjeS10cnVuaworNTM4NyAxNzdmNTc1NzA4YmIwOTBiMThkMTk2MTQ1MTE2NGM0NWMwOWQ2M2MzIGxlZ2FjeS10cnVuaworNTM4OCAwYzUwZWM4ZTgzNThlOGQ0YTA3NjlmMjJiNzRhNGU1NzBkODU3YzYxIGxlZ2FjeS10cnVuaworNTM4OSA0ZjA4MmJlNTkwMmFlMTUzODZlMTY3ODU0OGIzOWUxMzdkZjFlNGY5IGxlZ2FjeS10cnVuaworNTM5MCAxNzYzNTYwNGJkY2UxNWE0Y2IyY2M2MTU5ZDA2NjFmZDM4ZmI2MDBiIGxlZ2FjeS10cnVuaworNTM5MSA0NDE0NWVlYjYxMDBjOWMyNWVhZTE2ODc5MzkyM2E2NDE2MjgwM2U2IGxlZ2FjeS10cnVuaworNTM5MiA1ZWI4YmRlMzAwYjdlZGUxNDNiYTI5NjRmM2FhYTY4ZmFlMDEzOWI2IGxlZ2FjeS10cnVuaworNTM5MyA0YTUzNDgzOTM5YzFlYjk5MjkxODk2Yjk3YTI4YzNkMWU4MzIyMzYwIGxlZ2FjeS10cnVuaworNTM5NCAwYWQ5ZDEyM2ZmNTVkZjM0OTUyNGJjMjQyMzJjNWE5Njc1MjliMjFkIGxlZ2FjeS10cnVuaworNTM5NSA3OTJlMzlkZmUyMTYxNmE2NDJjNTQxNGQ1OWIyYmM1ZjRjOWMxNDFlIGxlZ2FjeS10cnVuaworNTM5NiA3ZDFlY2VjMjVjMDZlZGZhNDk4Nzk3MTIxOTUyN2Q5OTc1ZjhjNjRiIGxlZ2FjeS10cnVuaworNTM5NyA3MzkyNzkwMzI4YmJmM2ZkN2ZiMzAwNjJjMzdlNzI3YmVlZTQ1MTM4IGxlZ2FjeS10cnVuaworNTM5OCBkY2U5MTU1YjA0MDFlZDg3ZmE0NDk4NWM3YTAzMzcyOWEyZDAyM2M0IGxlZ2FjeS10cnVuaworNTM5OSBlZmJkYzUwZTdmNTRjNTNiNzI3NGVkMzNlMzViYTRlYTVmOTUxZGE2IGxlZ2FjeS10cnVuaworNTQwMCA3ZTEyNjUzMTJkZDQyNzUzYzg2ZWUwNjNhZTRhNmJhNzNmNjU3NjA2IGxlZ2FjeS10cnVuaworNTQwMSBjYjVjY2JiYTE4NTY4ZWIzODgyMzA0ZTJhMTNlODkxNzJiNjkyMmYxIGxlZ2FjeS10cnVuaworNTQwMiA4YWFiODNjYzYwYTA0MWMwNzY2N2M2MzM2ZDA4YmI4YzBjM2YzNWYzIGxlZ2FjeS10cnVuaworNTQwMyAwOTcwZWJkMzE1MzY3NDRlMzg5ZjM3MTJiNDgyNzJkOGFjNWQwOTA0IGxlZ2FjeS10cnVuaworNTQwNCAxZDg2MjZiYzk5YzcxMDI5MWI1MDA1NTI0NzM1MzQyYjc1OWJiODBmIGxlZ2FjeS10cnVuaworNTQwNSBmMDE3ZjVjZGI0YmRiMjg1NDllODkyNGY2MjQ4NDczNzE2ZTM0NjQ4IGxlZ2FjeS10cnVuaworNTQwNiA0ZGZkZjIzNGNkYThmNTAzMzIzOWE2YzJkZWM4ZDRiYjRlNzRhZTM3IGxlZ2FjeS10cnVuaworNTQwNyA3MDgyYzFhMWY5YWI5ODZmYzEyNGM4ZmQ2NmFjMWNjNjUwZTM3ZjllIGxlZ2FjeS10cnVuaworNTQwOCA5N2Y3Y2ZhYmUwN2U3YTk0MGRjYTVmOTFjZDgyYmQ5NjcwN2UwMjZmIGxlZ2FjeS10cnVuaworNTQwOSAzNzE1MjA2Mzk3ZmU5MDYwYmQ0ODI3MmQyZWI0M2ZkYWQ2ZWYwYmUyIGxlZ2FjeS10cnVuaworNTQxMCA4ZWRiZWFhMmJiZjdhNzAyZWViMzg0N2VjMGUyMDllOGJlZjJlYzYzIGxlZ2FjeS10cnVuaworNTQxMSBjMDk5N2I0NjIzNDRiNDA2NjI5MGUxMDg5ZTIxMGMxZTNkN2FjZjRjIGxlZ2FjeS10cnVuaworNTQxMiBmMTdiN2QwYTc0ODI0NGU5NzRmN2MxMDY4Y2UwYTIzMTYwNjQ3YTM3IGxlZ2FjeS10cnVuaworNTQxMyAxMGMxMDMwYjcwYWRlOGYwMTNmNTEzOTA5YTAxMmMxMDUwNTNkZGI5IGxlZ2FjeS10cnVuaworNTQxNCBhOTgwZDA3NjA1MmRhYmRjMTk3MmUxODY4ZTZjMDg1YmEzMzBjZTViIGxlZ2FjeS10cnVuaworNTQxNSAzMDI5ZTgxZWRiYzc3NWI5NjcxMTAyNDU5NzJlYTdjOWYxYWY4OTliIGxlZ2FjeS10cnVuaworNTQxNiBiYzA4MDMwODRlNjBhOTViZDdlYTM3YTAxMDU4ZWY3ZTBmYjcxMzg3IGxlZ2FjeS10cnVuaworNTQxNyBhMWE5YjczNjRiYzM0ODY2Y2ZiYjk0Njc5ZmNmNzJiZjI2NDQzZDJjIGxlZ2FjeS10cnVuaworNTQxOCAxMWQ4OTkxNGM3YjliMWYzZjVmOWNiMzBlNTI5NjllN2FjZmY0OTA3IGxlZ2FjeS10cnVuaworNTQxOSAyMWRmNDIxZjAzZmUwZDk2OGU1MjA3ZjU4OGU2YzA4NDdjMGJlNjQyIGxlZ2FjeS10cnVuaworNTQyMCA0NWFkMWE5Mzk4NmEwZWJkMmM5OTA2NDM0OWIzMmM0ZTVjYWFjMDYzIGxlZ2FjeS10cnVuaworNTQyMSBjNWNiM2E1MzkzM2MzNTFhM2M0M2YxMDIzMTQzZTUzMTVkMTYxMTM2IGxlZ2FjeS10cnVuaworNTQyMiA1MjdkMWIyOTI1MjUwNjI4ZWJjZGFiNThkYTk5YjFiZjQzZDgzZTVkIGxlZ2FjeS10cnVuaworNTQyMyA0ZDdmZDlmZjc5OGQ1NTE5OTVkZmQ0MmFlNGY2NzU4MDM4YzNjM2I1IGxlZ2FjeS10cnVuaworNTQyNCBjYzkyMjJiOTQ3ZWUwYTE0NzVlNGZhYTRkNjM2ZmYxYzFlNmNmMTA1IGxlZ2FjeS10cnVuaworNTQyNSA0ZjlkNGU3MzA1N2M3NjMyMzkwZDZkZTgxOTg1MmJiZjk1MGNjYWJmIGxlZ2FjeS10cnVuaworNTQyNiBlYjZlYjYxYjYwNmZmZDMyNTY5OTZlY2FjNmRmMTJkMmM3NzllMTkwIGxlZ2FjeS10cnVuaworNTQyNyBmM2Y3YzAxYmM5NjZjZDI3ODFmZjI2NjJmYzQ3NjYwNmI2YmQyZTIxIGxlZ2FjeS10cnVuaworNTQyOCAxYzkxOWQwMmE2NDU5NzU0ODRiYzc4MmNhYzM2MWRlZmQyNWExYTcwIGxlZ2FjeS10cnVuaworNTQyOSBmNzJhYmQ2MmQ1MDgzZjU3ZDVmYWEwNjYyYWQ4ODQ3MGQwOTkwNjIyIGxlZ2FjeS10cnVuaworNTQzMCAwMjM1MjczNDI1OTk2YTM2MmQ1OWEwYmFlZTNjYWI0YTRmZjU2OTkyIGxlZ2FjeS10cnVuaworNTQzMSAxMjJkMTQ5ZmE4MDE2NDYwNzU2ODQ3MjA1NDYwOTJlMmQ3ZWMzZTUyIGxlZ2FjeS10cnVuaworNTQzMiBkMDA3MmQxZGY4MmMyYjdmOWRlMDE5ZWZlYzA5NGIyODFlZDkzZTM0IGxlZ2FjeS10cnVuaworNTQzMyBmOWZiZmQ5MDMxNTMwMmRlM2Y5MWNiZTY3YmU0NGM3YzQ3M2YxYTQ1IGxlZ2FjeS10cnVuaworNTQzNCA3NDk1M2E0MTYwN2MxYTYzZTBhNTkzMTk1ODNjMDVhMzcwYzY4OTgwIGxlZ2FjeS10cnVuaworNTQzNSA1MjEzMDY2NzllMzQ5ZWZjMmZiZTEwYmZiYjIwNjBkMDFhM2RhODRmIGxlZ2FjeS10cnVuaworNTQzNiBjMDBmYWUzODBkYzc4ZDJhOWY2MGY1M2NmNWU3NjcxM2UxMDAxYjM2IGxlZ2FjeS10cnVuaworNTQzNyBjZmM2NmI4Y2EyMDI3MDAxZmZlY2I0Mzg3YmVkMjgxMDc3MGNjZWU2IGxlZ2FjeS10cnVuaworNTQzOCBkMjNkNzNiNGU1OGE5ZmZiMGM3MDNhMmQyZjQzODk3NmUyNzE1Mjg2IGxlZ2FjeS10cnVuaworNTQzOSA5OTk0NWZkYTcxOWRiMjIyMWI0NjEzNDA4YzEwMmI5ZjlkOWViNDZmIGxlZ2FjeS10cnVuaworNTQ0MCA5ODY0ZmUwNTllMGRjNGM1MDVhOGMxMjAyNmQ3ZGFlMTgwZDM5M2ZiIGxlZ2FjeS10cnVuaworNTQ0MSBkMWM0NThjODdmNGE2YjBlZGZhYzZiNDZmYjQ2MWI2MDU0ZjM3NDdhIGxlZ2FjeS10cnVuaworNTQ0MiA4MjM1NmJkZGY3MTJjZWJiZTZlMzE3ZjVjNzMxZWYzODMxMjBkMDcyIGxlZ2FjeS10cnVuaworNTQ0MyA0ZGU3NzkyMzJhYTRjMGE0OWQ2MTI4YjY3ZjNmYThmYmZjYzAwMDQzIGxlZ2FjeS10cnVuaworNTQ0NCA0NDE4NjZiZTJlYzk5MTZhMjBhZDc4NzkxOWM0YTNkZDBhZjhjNDk0IGxlZ2FjeS10cnVuaworNTQ0NSA3YTY3ZGJjYjZkODNjZjJiMGFiZjEyM2Q4ZGY0OGFhOWZiYjU3OTkxIGxlZ2FjeS10cnVuaworNTQ0NiA3ZWVhOWI0MjY4MDI0YjUwZDk5ZDQzMmJiNGYxYmI0OWY1MWJiNjA1IGxlZ2FjeS10cnVuaworNTQ0NyBiNmNmYTA2M2I4OWJiMGJiMTNlN2FmMjhmOWNkMjEzYWZmZjI3YjVkIGxlZ2FjeS10cnVuaworNTQ0OCA1NmFkMjQ3Y2JmY2JlZDAzYzNjMzNmN2E0Mjg5MDJmMTczYjBkNDIyIGxlZ2FjeS10cnVuaworNTQ0OSA4ZDI5MDc4NTZiMzc4NDcwMTM5YzFmZDY1MmMzZDNhYWQyOWUxYmQxIGxlZ2FjeS10cnVuaworNTQ1MCA3YjM5MTE5NjA1NjQxNWY1MjZkNGUxYTEzZWJmN2M0YWU5NzdiNGYwIGxlZ2FjeS10cnVuaworNTQ1MSA0YzFkODA5NTM5NTA5YjhlNmJlNzI0Y2QwMzA5YjZiZTRhMWMwOGJhIGxlZ2FjeS10cnVuaworNTQ1MiAwZDcxMDBmZmI2MWE3ZTczOGFmYjEwZjkxOWM1Y2M1NTE0NDhjZjNkIGxlZ2FjeS10cnVuaworNTQ1MyA3ZDI2ODM0MmRjM2EzYWM5YTQ3YTAzNGMyZDY5MDhiOWRiNDVjNjc5IGxlZ2FjeS10cnVuaworNTQ1NCBmOTMzYTUzMGMzOGYxNzA3MjY1OWRjMDNhNGRhNmRjZGJmM2M4OGQyIGxlZ2FjeS10cnVuaworNTQ1NSAyZmU5ZDAzNzFlY2QwNjcxYmI5NWEzMWIzMmVhMTQ2MzhmMmQ4NDc5IGxlZ2FjeS10cnVuaworNTQ1NiAwNGJhZGE4ZDY1ZGU0MzVkNTM4NmQ4ZTVmZGQwZDdiZjZhODdjY2YxIGxlZ2FjeS10cnVuaworNTQ1NyA5NDc3YTQ0NTdlNTY0MzMxNWMyMmZkZTVhOGQxYjc5NjRiMmUzZmMzIGxlZ2FjeS10cnVuaworNTQ1OCA0NDhlZGM5MjNjYWQ0MGQ3MDcyYWM2YzlmNzM4NmVlYWJiYTE4YWRmIGxlZ2FjeS10cnVuaworNTQ1OSBkMjk3YzcyMjA2MTM1ODQyNzdkNzRjMzQwN2Q0YmIyNDc0MjQyOTE5IGxlZ2FjeS10cnVuaworNTQ2MCA1ZDQ3NDlhNDcwYjRkMDIwMGI5Y2VhODdiODYwMWVhNGQ1YzA4NDM2IGxlZ2FjeS10cnVuaworNTQ2MSBhYzAxNTJmNjNiZGRmYjc5OGIxMTY1ZTdlNDVkZWYxYzhkZjM3ZGFlIGxlZ2FjeS10cnVuaworNTQ2MiAxYThkNmM3ZGQ1NjBmMTk1MGU0Y2I2YTc1NTFhZDM2NGE0NDEyYzcwIGxlZ2FjeS10cnVuaworNTQ2MyA1MTNhOTZhNTc1MGZiYTc1MTc0Y2UzYWUwMmQ5MDc5NTA3ZTBlOTNhIGxlZ2FjeS10cnVuaworNTQ2NCBkNGZmNDdkZjU5MjBkZmQyMTQ2ODM0OWVkNGUzNTE0Y2FkMjAzNTA1IGxlZ2FjeS10cnVuaworNTQ2NSA5YmNhOTRhMzZhMDgxMGFmMjA0ZDY4YzA2OTY3ODg5OWYyZmZhMWQzIGxlZ2FjeS10cnVuaworNTQ2NiBiYTJmZTVmODM2YTgzZGUyZDc4ZTVhYWQ2NWU1ZjM0ZDJhYmUwZTRjIGxlZ2FjeS10cnVuaworNTQ2NyA1NTg5NWI1YTMwMDdiNGJjOTFmMzBiYWFkZjk3YmU4ZjJiMzBjYzZkIGxlZ2FjeS10cnVuaworNTQ2OCBkNDZkODMxYmM1ZjMwMTIzZDg1N2M4MDc2NTk2N2JmZjkwZjY4MjQzIGxlZ2FjeS10cnVuaworNTQ2OSA1OTExZjI0YmNjMmRlMDM3MGVhOTA5YWRkZDlkOWZhODU3YWM1NTkxIGxlZ2FjeS10cnVuaworNTQ3MCA4OTg3Y2ZhNzU4YmJkNWI3ZDQ5ODAwY2QxODc3MTU1ODc4MTUxNzQ4IGxlZ2FjeS10cnVuaworNTQ3MSBiZWNkNTgxNjA5MTEwYmViYmVmZGRhOTFjZjdmY2Y0MTg0ZTBmYzIwIGxlZ2FjeS10cnVuaworNTQ3MiBhZDZmMDM5YTVjNDkyMmY4OTBmY2MwNDAxYWEwMGY4NTA2YWNkODQ3IGxlZ2FjeS10cnVuaworNTQ3MyAyMGNhNThlZGM4NTU0OGM4MGI1MTFhMDA4YzNkN2EyMDAwM2E0NjA5IGxlZ2FjeS10cnVuaworNTQ3NCAwMmYyYzUxOGFhNDZiOTQzNjZlY2IzMDFkOGZiOGFmYmQ1ODQwMjhiIGxlZ2FjeS10cnVuaworNTQ3NSBhNTEwMjJmMTk4MGZkNWExNWQ2OGEwZTliMzBlYzE4NjA0MDBlMDllIGxlZ2FjeS10cnVuaworNTQ3NiA3ZmI2ZjIwZTJiYTI5NDQ0ZTI5NDJhOTdhM2JiYmQ1OGNjNzBkNDRkIGxlZ2FjeS10cnVuaworNTQ3NyA2YWE0ZTkyMDlmYmQ4ZWRiNzA1YjcyN2YxZGIwODQzYmZhODFjMzgzIGxlZ2FjeS10cnVuaworNTQ3OCA3MmE2MWExNDllNGU2YzcwMTliMzEwMzJjNThkZTAzMGY1NTQ2NWYwIGxlZ2FjeS10cnVuaworNTQ3OSA2YjljYjY2MzQ4OTc1ZDI0MzIzYmU0Y2MzMmM5Y2VhYTc0MjczY2I3IGxlZ2FjeS10cnVuaworNTQ4MCAyMTA3Mzg4NjYxNjYxMjI4NTBkZGQ1ZGMzZmU4ZTEyMDFjN2NjNjJiIGxlZ2FjeS10cnVuaworNTQ4MSA1ZDNkMjk3MDQ2ZDJjNzAzMTljMmIzMGM2NmY2ODBlNDVlODRjNGI2IGxlZ2FjeS10cnVuaworNTQ4MiAyNjcxODQyYzcyY2ZjNGRjNGY0YTFlZGJhOGNlY2Y2ZDg0MDYyYjk0IGxlZ2FjeS10cnVuaworNTQ4MyA3YWUzMzI0NzI2MjljNGFmOTE1YzJiYTg1ZmU5OGExMjgxZDdhMWMwIGxlZ2FjeS10cnVuaworNTQ4NCA3Nzc0NDAwMzU4MTMzOTgyZTc3NmE1OWQ1OTA0NGIyMTBhMzVlMmNmIGxlZ2FjeS10cnVuaworNTQ4NSAyNzM5MGI1MzY2NDBjNTFiNDU0MGFmYWE5NDVhYWI1ZDBjYjQzNDk4IGxlZ2FjeS10cnVuaworNTQ4NiBkMjk1ZjRjOThjOGE2NDYwZTNkYWY2MDJlODFiYTFiNGQ5NjViN2ZlIGxlZ2FjeS10cnVuaworNTQ4NyBjNzY3MWMzNmM3MjVlNjg1YjEwYmEzZTczOTcyNWM3NzczYTY5NDE0IGxlZ2FjeS10cnVuaworNTQ4NyBlNjNkODNmODI3NTg1M2FhYWEzZDE5NzJjYjg2NTY0NTA1ZTY1NTgzIGxlZ2FjeS10cnVuaworNTQ4OSBjNWQ4NTI3MzVlN2Y3YjQ5MGVjYmNjYmM2MGZiNjNhOTdhMTRiN2MzIGxlZ2FjeS10cnVuaworNTQ5MCA4Nzg0NzIyOGIxNThkOTk3MWZhOWFiM2EyNWZlM2MyMjY3MjMxZGQ4IGxlZ2FjeS10cnVuaworNTQ5MSA1NGFhODdiMWNjZWU0NTlkZDFlMTI5ZWRkNDk5YjMzYmRkOWVmYzRkIGxlZ2FjeS10cnVuaworNTQ5MiAzOTExZDRhODlhYjBjYWQzNjg5MmQzNmI3NDI1Y2UzYmRiZWZlNThhIGxlZ2FjeS10cnVuaworNTQ5MyA3NGM4ZmNkYzk3ZGFhNjFhYWIzNGI0YjdjOTQwNzM4MzBiMThiYTViIGxlZ2FjeS10cnVuaworNTQ5NCBkYzRiZWMwMzY3ODNlNjcwMmZkOTAyNjkyZGUyYzZhMWVmNGZhMGE5IGxlZ2FjeS10cnVuaworNTQ5NSA3Y2QxZGE0MDY0ZDc4NDE2OTMyMmZlNDhmMWNjZmFlNzBlMDM3NzdhIGxlZ2FjeS10cnVuaworNTQ5NiAxNDc1M2MzMmU4YjQyYTEzMmViMTczZjc1OTkzMmQzMTcwMjgxYzEzIGxlZ2FjeS10cnVuaworNTQ5NyA0MDViNDczYWE0YTEzNWM1MGYyZWZlODE5NjViODc3OWFiYTg0YTUyIGxlZ2FjeS10cnVuaworNTQ5OCA5YzQ5YWNlNmIxZTc4ZjE5MTA2NTMxNGZhZDgxNjgyMjRjZTZkNGU2IGxlZ2FjeS10cnVuaworNTQ5OSAzYjNlNjgwNzU4MzMyYjgwOTdhODIyZGVmMTc1ZDUwNjhjNjUyNjc1IGxlZ2FjeS10cnVuaworNTUwMCA0N2Q4YmNhYmQxNzZmNDIzZWEyZDJhN2Q2ZTQ5OGViNGZkMjlmMjc4IGxlZ2FjeS10cnVuaworNTUwMSBiODM4ZDJiOTUyMDEyZmYxY2ZiNmY2NTQ4MWM4YzYwMmI0MWRiYzY5IGxlZ2FjeS10cnVuaworNTUwMiBjZTVmMGI4M2Y3ZTlmNGUwZTY2NzBmMzg4YWQ1MGE2MmY5MGIyNjk3IGxlZ2FjeS10cnVuaworNTUwMyBiYzhlZWZmZDRkMDY4NzZkMmI3MjhmZTAzMWM4OTc3YTNlNWRlMTY4IGxlZ2FjeS10cnVuaworNTUwNCBmOGFiYzAzN2I5NGY4Y2RlNDkxZmI1OWU0YWNiNzQwN2E5ZTZkYjA3IGxlZ2FjeS10cnVuaworNTUwNSA0M2VhMmM4YjMyODZlODg3ODI0ODI3MGUxMGYzMmU1YTQyYzQ0ZDBiIGxlZ2FjeS10cnVuaworNTUwNiAwMTZmMzY2MmVmOTgzOGJiYzgwYmJiNjVlYmQ0YzA4YzMzNWMxNDI3IGxlZ2FjeS10cnVuaworNTUwNyBkYTZkYmRmZDUxZGIxYmNjZTcxZTQyMGMwNmExMTk4Yzg5ZjdjMDRiIGxlZ2FjeS10cnVuaworNTUwOCA2YjljNTc1YzBjYmEwMzgyNGQzNDE2ZDI1Y2Q2NWQ2MmM4OWRlOGM4IGxlZ2FjeS10cnVuaworNTUwOSA2YWYwZmJjODU1M2FiNmIwNTY0ODBkYzcwYjVmNmUwY2RjNDE2NGYwIGxlZ2FjeS10cnVuaworNTUxMCA0NTgxYTBmMDM1M2VhZjMwZjg4NWQ1OTg5NjA4MWYyZGY4YTBmYjYwIGxlZ2FjeS10cnVuaworNTUxMSA3ZTdiYjAwYTBhMmUyNWQ5NWFmZjIwZDMxNTFkYWI0MmIzMzQxZDU3IGxlZ2FjeS10cnVuaworNTUxMiBiZGE1NGVhMjNhODBjYzJlODBjMTkwYmI1Y2Q5ODhiZTU2MzE5Y2ZjIGxlZ2FjeS10cnVuaworNTUxMyA5NDgzNWIzZWRmM2UwNTlkMTdlZDY3ZDc1YTc5ZTlhMWUwM2I0YzhiIGxlZ2FjeS10cnVuaworNTUxNCA2NWVhNzg4NzViYzgxMjkwNWY5YjkyZDdjOWQwNDY3MWMwODMxNDNhIGxlZ2FjeS10cnVuaworNTUxNSAwMWJjMDZjMmU0N2QzYmZjYThhYjEwOGU1NmE3MWY5ZDI5ZmUxMGJhIGxlZ2FjeS10cnVuaworNTUxNiA2YzY5NGVhZDE2Njg3NTM5ODNlMjRlZjIxNGMyMGM2YTg5OWZlNDUwIGxlZ2FjeS10cnVuaworNTUxNyAyY2Q0Y2MwNjVjMWY2MzY2ZGUzMTAwYzEwZWJjYzQ5ODg1N2M0ODdiIGxlZ2FjeS10cnVuaworNTUxOCBhOTQ2ZTRjYzZkNWIwMTcwYzBmNTNmZWNiZTkyZjA0YmIyMzU3NGRlIGxlZ2FjeS10cnVuaworNTUxOSBmZDUwOTg2ZjM1ZTVjY2RhMzg2MmQ1ZjdmNDgwNWUwZGYwMDA1OWM3IGxlZ2FjeS10cnVuaworNTUyMCA1YjkyOGI2OTVmYTRmNzc1OWRjZDlkNmUwOTk0MGUzZDM3ZGY3N2FiIGxlZ2FjeS10cnVuaworNTUyMSAyY2IxNDE2MDEwYjMzNjE2MzFiMzhlN2ZhNTBlYTZhNTk4NGIyZDMwIGxlZ2FjeS10cnVuaworNTUyMiBlZDA4NzQzOTg0MzNkYThmOTRiNGFhNmZiMzQwMTkyNzk2ZDFkOTBlIGxlZ2FjeS10cnVuaworNTUyMyA3ZTJjMDRlNmY3ZTcxNzBiYTdlMTJiNjRiYTRmYzY0MzJmMzYwNzlhIGxlZ2FjeS10cnVuaworNTUyNCAyNGFmOGVhYjdiNzYzYmI0OWQyNzQwMzhmYWVjZmYzM2UwMDBjNTczIGxlZ2FjeS10cnVuaworNTUyNSBkOTRiNTAwY2I5ODYzMDY4MzE3NmUzYjI3ZWU3NGU3MGY1MThiMDJmIGxlZ2FjeS10cnVuaworNTUyNiBjMTIwMzBmYmI1YjYwZmI1Yjk3NTY4ZDkwZGZiZmE0NjE0ZDZlNDU0IGxlZ2FjeS10cnVuaworNTUyNyA2NjBlNmYzNTk5MWNiYTQ3ZWQ5NzNjZmY5OTI0NDE2YTk1Y2UzMmRjIGxlZ2FjeS10cnVuaworNTUyOCBkZDU0ZWVmZGMyYzk3ZjA1ZDQ5ZWI3NDNkNDY3ZDgwYTNhYzQ5MzcxIGxlZ2FjeS10cnVuaworNTUyOSA4ZDUxNzkyNzc4NThiZTk5MDdhMDQzMmU2YjA0MGU2MzZjMGI3ZmIyIGxlZ2FjeS10cnVuaworNTUzMCBiMzMzZjE2ZmI0MTk2ZTkzZGVlZjRmOWE4YzA1NmYwOGMyYTA1YTkzIGxlZ2FjeS10cnVuaworNTUzMSBkZjdkZmFjMzBjM2UzYTkxOGNlNzJiMmJjZGYyNmI1NzMyMzdiZmEwIGxlZ2FjeS10cnVuaworNTUzMiBhNTc2OGU0ZWUwNDUzMjQwY2RmYjFiMDQzMjI1MmY1NmE0NWQwY2M2IGxlZ2FjeS10cnVuaworNTUzMyAxMzRjNmMyZDFhYmY5Yzk1ZDkwYWFmNWVlOGMxNjUzM2NlYmQzODRhIGxlZ2FjeS10cnVuaworNTUzNCA2ZWM4MjBkYjJmZmFmNjZhYWMxNTZiZWZjM2UxNjY5OTVkMmVhMWYwIGxlZ2FjeS10cnVuaworNTUzNSAzMWM1MmEwYTM3MmMwZWVjNzVjYzRiNzIyNGE1NDRkMWY5NzgxMmRlIGxlZ2FjeS10cnVuaworNTUzNiAzMjhhYzc0ZjZjYTY5ODM0ZTllNjU5Nzk4OWIyYWU4M2FlZWM2ZmE4IGxlZ2FjeS10cnVuaworNTUzNyAyNDZkNTQyMjEyNGY5OTljZDE4Y2UxOWI5MWI2ZThjZmJmMDVlM2U1IGxlZ2FjeS10cnVuaworNTUzOCBmYmI4ZWRkYzkzMDlmYjFlODgyMDZlOTI4YjUzZWFlZjVmMDI3NTE5IGxlZ2FjeS10cnVuaworNTUzOSBkMTRjZWYxNGZiZjI3ZTcwYjgyYWYxOGIyYjQ0NjQzMjk1YTViYmQxIGxlZ2FjeS10cnVuaworNTU0MCBkNmIxMzBmYTkxYjY1ZDM5ZjAzZWUyMWFhMGQ3MTU4Y2I3NGVlM2I3IGxlZ2FjeS10cnVuaworNTU0MSA5NzFlNWNhMThiZDFkODRhZTM2ZTk2YmU5Mzg1MTBlNmM0NDc1ZjYwIGxlZ2FjeS10cnVuaworNTU0MiBlNDI5YTdlNzFlMGNjZDIyZDExMWY2YjliNzM5NWEyYTgxNGNkMmVhIGxlZ2FjeS10cnVuaworNTU0MyA2OTljZjhiOTRmODAyZTg3ZmU4M2Y3MGZjNjFjMzU1MGVmMjkwNGM3IGxlZ2FjeS10cnVuaworNTU0NCA3MjI2ZGQzMTc1NWM3MDNiMDBkMGIwMDhjZjhiNTJhMDdlNjVmODlmIGxlZ2FjeS10cnVuaworNTU0NSBlM2ZiY2VkMWJjMDliMzE4ZTU2MmM5MzY0ZjNmZDIxNDM4YTkxNjdhIGxlZ2FjeS10cnVuaworNTU0NiBiZmE0MjdkYTU4MGVjZGYzNGI0NGJmYjFlNjAxMmJiOTRmNWVhYjYwIGxlZ2FjeS10cnVuaworNTU0NyBkYjg5YWFiNDE1YTFiN2JiZTZjMzQ1NTU3NDk0N2VjODQyODczM2VmIGxlZ2FjeS10cnVuaworNTU0OCBlYWRhMjQ4Njc2ZGVmNjNiODA3ZjYwNmM4MjBlMjM0NDUyM2RjM2I4IGxlZ2FjeS10cnVuaworNTU0OSA4N2ZlYTI2MWEyNjNlN2NmMWY5ZWI0NWM4YjQ2ZjE1YjY3NDNkNTEyIGxlZ2FjeS10cnVuaworNTU1MCAwN2NiNTAxNDFkMDcwNzJhYTU3YWFlNGVjYzVkYjAwOWZlZjM1MzY1IGxlZ2FjeS10cnVuaworNTU1MSA5MWMxYmI3NWU5NDVjZjhjYzk2YjI3MDk4MTdiMWI5ODE1MzI3NjA0IGxlZ2FjeS10cnVuaworNTU1MiBhN2M5N2M0MzcxOTFkNDRjY2QxMzBmN2I4NzliMjQ2OWQ0Yzc0OWY1IGxlZ2FjeS10cnVuaworNTU1MyBkN2VlYTkwMTNlNzM2Mjg4YjNkZmE3YzQ3OTA5MzE4ZjM0NjVkNDJkIGxlZ2FjeS10cnVuaworNTU1NCAzMTY4NGM1YmIxNzI3Y2NiNDg2NjMyNjhiZDNhMzFjNTFkNmQwMDg2IGxlZ2FjeS10cnVuaworNTU1NSA3NTkzNjk5MGEzMzBjMGE0NGVjYzhkNWY0NzMzNTNjYWEyMzEyOWZiIGxlZ2FjeS10cnVuaworNTU1NiBlZjlhYzZkZWY3MWQzYjZlYzkzODllMjUxNmY3ZTA0ODA3OGVmZGMxIGxlZ2FjeS10cnVuaworNTU1NyBmYmZhM2QzY2E0ZTA5NTY2ZDM0ZjZiZWJhMTAwYjhkNGYyMGJmYjRiIGxlZ2FjeS10cnVuaworNTU1OCA3ZGRmYjYyOWFjM2ZlOTAzODVhNDVlYzBhYWEwOGI0YWMwNmNjNDNlIGxlZ2FjeS10cnVuaworNTU1OSAxZmYxMjYxOWExNGM3ZGNmZGQyM2UxMzcwODUzM2ZhNDliNWUyOGU0IGxlZ2FjeS10cnVuaworNTU2MCBiM2E4MDEzY2I0ZmEzNjc1NTMyZTY1NTE4NTM5NGM5YjBlNDFhN2FiIGxlZ2FjeS10cnVuaworNTU2MSA1YTFmYmQyMWZjMmE1YTVmODQ2MWQyMWQxMWZjNWIxN2RiNWNmNDljIGxlZ2FjeS10cnVuaworNTU2MiBjMWQ3N2Q3NGZlMzUwNjhmZGJjMzZmNGM3ZjhjZWY3YmU0MmFkM2Y5IGxlZ2FjeS10cnVuaworNTU2MyA4NDEwNGQ2YjRhZTdlZGYwMDU0YmM2NDE2YmE5Yjc5MWMwZTZkYjgwIGxlZ2FjeS10cnVuaworNTU2NCA4YWE2OTE4YTg4YzZiMTU0MWM3ZDBjZDZmNDk2MGM0NDc4OGZlMjk0IGxlZ2FjeS10cnVuaworNTU2NSA0YzgzZjU2OWI0MzQ1OTNiMzg1NTMyNDBmNTE3NjRiZTYyOWFmNmQyIGxlZ2FjeS10cnVuaworNTU2NiBkMjQ5MTExZDRjY2NmZjY4NDFmZTg4MGJmYWY0M2JiNDM5OTViNmQ5IGxlZ2FjeS10cnVuaworNTU2NyAxNzFlZWY2OWEyY2QwODdmNjMxMjViMjhiMzNiNmI5NWY1OWM3N2YzIGxlZ2FjeS10cnVuaworNTU2OCAyMzdjM2IyYTYxODcxYjA3NTdiNThlODJkYTg0ZGQzNGNkY2I1ZmE0IGxlZ2FjeS10cnVuaworNTU2OSA2OTI3MTVhYmJkMGJiZWVmNmYxYzNhNDcyYzc2YzkwYTU3MDkyYjk4IGxlZ2FjeS10cnVuaworNTU3MCBlNTFlMTdiMmQ4OGIxNWQ5YTk1OTg2ZWIxM2FmOGE2MmQ2ZDE3OThhIGxlZ2FjeS10cnVuaworNTU3MSA1NmRiYTAzN2I4ZDZjNjU2NDVjMWY4OWJjNzhlMjFiMWNkMGRkMTQxIGxlZ2FjeS10cnVuaworNTU3MiA0MzhmODhiNTUxNTRhZDRjNDJjNjA1MTY3NDk4MjQzMTkzZjU0NWNkIGxlZ2FjeS10cnVuaworNTU3MyBjNDFhOGU1MDE5NzM0M2M5NzcxOGY2MzZhNzA1MTZhNmE3ZmNkYTJiIGxlZ2FjeS10cnVuaworNTU3NCAzZGM5ZmYzYWJmMzYxNjMyZGVjZGExOWE2MTc2NGVkMWI4ZjViMTk4IGxlZ2FjeS10cnVuaworNTU3NSBhOGZjYzUxMWE4OWE4ZjM3YTkzMzJjNzdkOTI3OGU1YTFiMTFkMWM0IGxlZ2FjeS10cnVuaworNTU3NiAxNDEyM2UwOGU4ODdlNDI4M2FkNjQ4OGE3ODQ2NGEwNWQ3MGZhMmQ1IGxlZ2FjeS10cnVuaworNTU3NyA1YzBhN2Y3ODM2ZmIxZGJkNDA1YmQxMWEwNzQ4NGZhZDFmZjk4NTExIGxlZ2FjeS10cnVuaworNTU3OCA5Zjc2MTg1Yzk2OTM3Y2Y1NWNkYThmZWI3ZTY1NWY4MjI1NDNhNTNjIGxlZ2FjeS10cnVuaworNTU3OSAzNmY0ZDU0Njk5MTUzM2M5NGE0MDI2YTAzNTU3ODIyNzFiZTA2YmZlIGxlZ2FjeS10cnVuaworNTU4MCBhZjgyMjkxMTM1YmQwNmMwZjgzNWI1N2Y0MGM0NWQ3Y2YxMDE1YTY3IGxlZ2FjeS10cnVuaworNTU4MSAzYWFiOTI1ZWJmYjAzNGUwNWNiNzljMDFmNTc0NTU1ZjdmNmFmOGI3IGxlZ2FjeS10cnVuaworNTU4MiA5NDk3Y2RjZGI2YWE1MWI0ZjFhZmU1YmVhODg2ODNlNjMwMWQwYTIwIGxlZ2FjeS10cnVuaworNTU4MyBkYjEzOWE0MTEyZjMyZjUzOGMzNTBkOWRhY2M2NWY5NDM0MDQwNjU3IGxlZ2FjeS10cnVuaworNTU4NCAwNzczOTljYzgyZThjZWIyODhiMDA1NTcyNThiN2EyMzBkZjRmNzg3IGxlZ2FjeS10cnVuaworNTU4NSBlNDc3MDk0YThjYTEwODgyMGY4ZjQzOTAyYjZjMzcwZGM0N2Y0NmJkIGxlZ2FjeS10cnVuaworNTU4NiAxMDcxZDE2YzkzMGMxZDg2OWNlMThkZDBlYmFhNDEzNmY0MmI0OGEzIGxlZ2FjeS10cnVuaworNTU4NyA0YTEyYTU0MzE3NWQwYmE5YTkzMDYwY2FiMzgwNTEwMzU4NGMzN2Y1IGxlZ2FjeS10cnVuaworNTU4OCBjMTBmNTViNDZhMTE1MWIxYjliZjYwYWE1MTgwOWZkNjM2MmYwZDMzIGxlZ2FjeS10cnVuaworNTU4OSAyY2FhM2UyODM1NjhkMDc1YTRjZDIwNjY5NzRlNjA0NDEyOWYzYTEzIGxlZ2FjeS10cnVuaworNTU5MCA5MzU2MmRkZTIyNGFiN2QwOTRlNWM3NjU4NDZhZThiZWU1NzBhMmQ3IGxlZ2FjeS10cnVuaworNTU5MSAxN2YzMTFlYTBjOWEwN2M1NWJkMjBlMGIzMGQ5ZjE5YjY2MmUxN2FlIGxlZ2FjeS10cnVuaworNTU5MiA5MDU2NmM5YzE4OWYzMmQxYjc5NDdjOTgzZWE1ODZiZmZhYjI1MDlhIGxlZ2FjeS10cnVuaworNTU5MyBlOTA2NDNmMzNjNjRjMTJhNjI4MWNmY2RkOWE1ZWEzMTI4OWU3ZjU1IGxlZ2FjeS10cnVuaworNTU5NCA4NzEwZDcxNDljNmYxYmJlZTE1YjI3OTQxZWVhMzIxNGUzY2MwMTdmIGxlZ2FjeS10cnVuaworNTU5NSAyN2EwNzY5ZGI5MjE5MzM0MGU2NzdhZWNmOTBiYmVhYjZkOTIwMmY5IGxlZ2FjeS10cnVuaworNTU5NiBlODM1YTIyYjBiZGRlOTRmZWJjMDFhYzA2NzM1ZTYxZTIwODliOGE4IGxlZ2FjeS10cnVuaworNTU5NyBkY2YyYTM3ZTczZDlkMzZmMTgxYTc0YWE3Y2JhMDhhY2Y1YTNkNTU4IGxlZ2FjeS10cnVuaworNTU5OCA3MWJiNzFlMzA2ZmUyZGNiNjZlOTY1ZTBkZDhlNzQ1OTM4MDA3NTNjIGxlZ2FjeS10cnVuaworNTU5OSA3MGVlNGUzY2IzZDgzODI2NGNlMTRhNzAwYTlkMDgyMTYzZGEwNWI2IGxlZ2FjeS10cnVuaworNTYwMCA1OTEyODdhMjJlZTU5NmRlYzFiMWQ2YmUwYmJmOGU3NmVmNjNhNDBlIGxlZ2FjeS10cnVuaworNTYwMSAyNjc3ZmJiMTE3ZDYyYjQ1MWFmY2M0OTc2NjZmMjhkZTEwNTQwNGI1IGxlZ2FjeS10cnVuaworNTYwMiA5OTlmY2NlNDk2Zjg0OTU0ODk4MmM0YTU0NWMwNWY2ZGI2NGJlZGQ5IGxlZ2FjeS10cnVuaworNTYwMyAxYjRiOGE0ZmI0NjMzNDAxNzEwODc3M2NjYjUwZDI3ODRjOTQ5MTkyIGxlZ2FjeS10cnVuaworNTYwNCBhZGNjOTE2Yjc2MTZkODA3NDZjMWMxMmYwZTlhYzJiYWIzNTFmZWJhIGxlZ2FjeS10cnVuaworNTYwNSBmMWYxOGM1NWQxMzY0MjQ1NDI2OTYyYjkwZjc5ZWE5MDE4YzJjM2U0IGxlZ2FjeS10cnVuaworNTYwNiBkZjA3ZjI4NzExZmRmMzI4OTlmYmFmZDczNTI4YWE5NmUzYTU0MjRlIGxlZ2FjeS10cnVuaworNTYwNyBjZDM4OGNjOWJhOThkY2I4OWZhODAyZTNhMWU5OWQ0YzA3NjlhYmY2IGxlZ2FjeS10cnVuaworNTYwOCAzZjhhNzMzODBjNGJjY2QxODkwODRhZTQwM2MxYjA3YWE5NjZiZjBhIGxlZ2FjeS10cnVuaworNTYwOSAzOTNiNmQ4MWIxMjZiMjc0ZDY3ZGQ5ZDYxZWZiNTA5OWEwOTkzMGIxIGxlZ2FjeS10cnVuaworNTYxMCA3YzVmOTRmNTZmNzkzNTg2OWVjZGJmZjY1NGVhZTJmZWQ5NTEyODMzIGxlZ2FjeS10cnVuaworNTYxMSBmYmY1OGQyNzhkNjQ1ZDBhNTI3YmU5OGU2NTZlNGM0YTRkOGQyZWUxIGxlZ2FjeS10cnVuaworNTYxMiA0M2Y4ZGIyM2VmMTVlMjBjYjU2NTlkYTBmMDIzNjNiNWYzZjNjYTZmIGxlZ2FjeS10cnVuaworNTYxMyBhOTVmZjg2NzU3MTgxMGU2ZTI1NGFjZjY2ZGZiZGQyZmI0YWIxZDIwIGxlZ2FjeS10cnVuaworNTYxNCA3MGE5MzI3ZjZjNGM2YjJiMzU5OGI1YWQ1ZmMxMjY3ZmMyZGY1YmEzIGxlZ2FjeS10cnVuaworNTYxNSA0OGRiNWQ5YTI3OTQxYzJlMTg3OTQxMGM3YWZjNTkwZWRlMjkzN2YzIGxlZ2FjeS10cnVuaworNTYxNiBiYWQ5N2I0MDUxNjY2YTJkZjJmNjFhZGUzMWVhMjA1MzYwMWY2MTVhIGxlZ2FjeS10cnVuaworNTYxNyA0OTBiZTg2NWFhMGQ1NzllZWQ0NGE2YWU4NjlhM2U1ODFlODE5ZTlkIGxlZ2FjeS10cnVuaworNTYxOCBhY2ZmNzlkZDE0Yjc1MDdmNmRjYmE0MzA3NTkzYjU3NTY3MmFlZTI2IGxlZ2FjeS10cnVuaworNTYxOSBhMzZlMzAyNDBkMDZmNGRmMjY3YTlhMzUyNGYwYjMyNmNjNWZjNzJjIGxlZ2FjeS10cnVuaworNTYyMCA5YTg5NjA4NmQzYzM3MDQxNDBkY2M1YjAwNzAxYjJmOTAzMzdjMmE0IGxlZ2FjeS10cnVuaworNTYyMSBjZDdlYWE2MmNjMzFiN2Y2NjM2NDNjYzMzZWE1MzdhMDUwZmQ4ZTVmIGxlZ2FjeS10cnVuaworNTYyMiBkNmRkNTBmZTFlY2FiNzU0NzJjMzRkMTUwNGVlZTJiNjNlY2RjNTY4IGxlZ2FjeS10cnVuaworNTYyMyA5MzE1M2Q1YzMzM2QwN2QxMWI1MTQ1Mjk5MjZhYzVlNjlkYTQ3YjBjIGxlZ2FjeS10cnVuaworNTYyNCA0NjkzNjlhZDJmMmZiYTRjOGUwNmNiMzlkYzNiMmFhMjIyNGEzNmY2IGxlZ2FjeS10cnVuaworNTYyNSA1OTYxYjc2ZDc4OTk2ZTM1ZjVkNGNiMWZmMzc5Mzc3ZjRhNmYzMGExIGxlZ2FjeS10cnVuaworNTYyNiA0Y2IxMjYwNGRhOWQ5ZWE4YTRlNmM5YTA1OWYwOTZlNTA5OTgwN2QxIGxlZ2FjeS10cnVuaworNTYyNyBmZDRmMDA4ZDc3NDNiNTFlZjk3ZDUwNmM3ZmEwNzY2N2JlZjQ5OWY0IGxlZ2FjeS10cnVuaworNTYyOCAyMjA1ZGM0OThhZGZiZWIwZWY1YTlhOGM0MzA2YjI4YzE3YTcxNjdlIGxlZ2FjeS10cnVuaworNTYyOSA0MGM2OGViZDU4OTFkOWI0ZjcyYmUzMTQ2OGNiNGFhM2RjNDY0ZmM5IGxlZ2FjeS10cnVuaworNTYzMCAzMTcyYzM5Y2RhZDgwODdkNWE3MTE4YTc5YmM5YmJmMDhjOGE2NDI2IGxlZ2FjeS10cnVuaworNTYzMSA5NWU4MGI2YjhmMmU0NGNmYmExZGRjNzI2N2E2MzI5YjI0Njk0NmUxIGxlZ2FjeS10cnVuaworNTYzMiA5MmUxNDVmODQxNGU5NjE2NTEyOWMzNTU4MWUzMmNhNzNiMzlkZWY4IGxlZ2FjeS10cnVuaworNTYzMyA5MzhjNDMzYzg3NmEzZDY5NWIxZDA3ZDc4M2Q2ODExYmY3ZTg0MGRhIGxlZ2FjeS10cnVuaworNTYzNCBmZTlmOTViMDQyZmM4Y2YwNjE5NTMxMGRjNDRlYmE3MTJmYmFiOWI3IGxlZ2FjeS10cnVuaworNTYzNSA5NDg5YTM3MmM2ODYyYTE5MjA1NDJlMjI5MTI1NDQwMjc2MDc1NDBkIGxlZ2FjeS10cnVuaworNTYzNiBmZmY4YTc1MGU3ZjYzZGMwYTAxYmIzOTNmMjViMDRkMGFhMzA5NjBjIGxlZ2FjeS10cnVuaworNTYzNyBiOWI5ZTY2MjhiMzUzNTMwMWM1YzQ4MjBmYjljYWQ2NDUzYWZhYWE0IGxlZ2FjeS10cnVuaworNTYzOCAxMzE0NmNiNmY2N2M2MWRlMjUyY2I2YTIyMzg2NWQ2ZDc0Y2M2ZjFiIGxlZ2FjeS10cnVuaworNTYzOSA2YmNjZmMwZWQ2OTU5NDM5NDg1MGQxZmQwODgxNTI0MDU5MTU4ZGIxIGxlZ2FjeS10cnVuaworNTY0MCA2ZDM0YWRlMmU5ZDQ1MjcxYjBmYzY1ZmI2MGYzZjRlMTJhZjBmMzc4IGxlZ2FjeS10cnVuaworNTY0MSBmNzc4OTk0NWI4ZGVlNmNkNzdlNDFlMThjNzA1NTI3ZTljOWUxZmU0IGxlZ2FjeS10cnVuaworNTY0MiA0OWI3ODdiOWJmYWUyNmNkYTU2ZTY0M2FkZDRkZDJjZmFlZmU0YjljIGxlZ2FjeS10cnVuaworNTY0MyAwNmUzNDBmODU5NjFkMWRmMjA1ZTVmNDVkODhjY2I3NGE3MDM1ZGM3IGxlZ2FjeS10cnVuaworNTY0NCBjZjZjMGM1ZGM3M2Y3ODYzZjA3N2MwZGMwNDgzMzkzNTFhNDBmYjE4IGxlZ2FjeS10cnVuaworNTY0NSAzZTFlNWY2OGZkMWNjYTIxYTE1Y2UxMGNiNTAxYmNkNGExNjZjMTBjIGxlZ2FjeS10cnVuaworNTY0NiAyYTRkMTMwMzczZGIyMTk4ODZlZGM5ODM3NmMyMjU0M2RhNzUzZTQxIGxlZ2FjeS10cnVuaworNTY0NyBhNDIwMTJjMTg4ZmQzODc5YjY2YmI5NGM0OTI0ZDlmM2E5YWM3YmY1IGxlZ2FjeS10cnVuaworNTY0OCAyNGI1M2NiMzE2ODA5NDUxMGRjZmNjMzA3NWI0ZjFhNTIzMTgxNmJmIGxlZ2FjeS10cnVuaworNTY0OSA4ZjNmMjVhODM3YjM4MTdkYmE5ZDNhMjdiYTFhOTMxZjdlNDU1ZjI2IGxlZ2FjeS10cnVuaworNTY1MCA2MWNhMTlhMzAwMGZlYzEyODhhZmI1OTZmYjNmMmNiNDlkYjYzMmE3IGxlZ2FjeS10cnVuaworNTY1MSA3YjJmNjk1NDA1YmFmYmZiZmQ4YWNlOWUwMzc1ZjVlNDBkNDM2YjYwIGxlZ2FjeS10cnVuaworNTY1MiBjMDU2ZjY4NWMwODEzYzhlNDUzYTVjOTc0NTQ0NzdjYzQ2OTQ4OGRkIGxlZ2FjeS10cnVuaworNTY1MyA4MzAxZDU1ZWI2NGJlMjY4ZGM1N2U5MTQ4MGM1YjhjZGIzMTVhZGQ0IGxlZ2FjeS10cnVuaworNTY1NCBjYzM5ZDYyYjI3ZmQxMTU5MDJjNTY0MGI2MmQxMWUzNDZlNjc5ZGQyIGxlZ2FjeS10cnVuaworNTY1NSBmNDcyYjdlYzI1YzU4M2M2MmI4ODkxZGUyNmU5MjNiZDg1NmJlN2RjIGxlZ2FjeS10cnVuaworNTY1NiAwMmM4Zjc0ZDA4ZGNkODRkMzYyMGYzYmUyMDE1MGJmNWJhNTIzYTlmIGxlZ2FjeS10cnVuaworNTY1NyAyOGRmYzQ2NzE4NWZjNDI1ODM4ZjhkYjU5NzViOTU5ZTdkZGMwY2QwIGxlZ2FjeS10cnVuaworNTY1OCBmOWZkNTEyMjY4MGYzMzNkM2M5NzM5ZWE4ZWZlZDMzMDkxNzRmN2MzIGxlZ2FjeS10cnVuaworNTY1OSAyYWE3OTgzN2FlZTU2ZWVhNzY4ZjE1Y2I1NTk3NDI1NGE4MDM5ZjBhIGxlZ2FjeS10cnVuaworNTY2MCA4MjI0ZjBiYzVjZGE0OTQyZWFjYWJhMDQxMDkyZDdlODA3ODViZGE5IGxlZ2FjeS10cnVuaworNTY2MSAwNWFlYjkxZTNiOTBkMGQzNjFmMzg1YTM4MzQ4NGYzMjRjZGVlMGYzIGxlZ2FjeS10cnVuaworNTY2MiA2MTE5M2M2MzJmNTFlMTkxMWE4NzJlYjU0MTMyZGVhN2FlYzkyNTM3IGxlZ2FjeS10cnVuaworNTY2MyAxOTVhZDlmYjQ1ODMyYzc5YTMyYzA5ZDM1Nzg5NTQwZDU2N2IzY2EyIGxlZ2FjeS10cnVuaworNTY2NCA1ZDE2ZWNhZThlZTcxMTE4MWRhNjhhMTYzMGM4NGRjZWIwYzViYWEwIGxlZ2FjeS10cnVuaworNTY2NSAyMWNkNTBhNGEzZjc2N2E5M2YwOGQ5YTRiNzg5YTkzYWI1OWE1Mjg3IGxlZ2FjeS10cnVuaworNTY2NiA4ODQxYTRkNWNkNGJlYjhmY2EzZDg2YTc1MjQ2ZmNkZTE1ZjViZmY0IGxlZ2FjeS10cnVuaworNTY2NyA4ZjVhYjFhNmM5MTQyZWJhNDlkMDgzNjNjOWY4ZTRjYTJjNzBiZjI1IGxlZ2FjeS10cnVuaworNTY2OCAxOWI1OGNlNzk0YzkwMjY3NzY4N2I3ZTY5MDUwZjJiZmMxYzcwN2Q5IGxlZ2FjeS10cnVuaworNTY2OSA2NDkxYmQyYmJkZWZmNjg1OWUyNTQ4MWZkMTM3NDM5NDZiZDZkMDBkIGxlZ2FjeS10cnVuaworNTY3MCA0NmRmNjcyYzdjMjcwZGEzNjBiNTdmMDA3MjBlNGNiNTVkMGIxZjJlIGxlZ2FjeS10cnVuaworNTY3MSBkNWU3NmE5NWI1NjY1YzkwOTFiNTVjYWJlMGRmMmE1NWRhNTZiNzU1IGxlZ2FjeS10cnVuaworNTY3MiAzZDEyMmYwMmU2NDk4NzI2OTZiZjg0OTEyODkzZWQ5MDYxMTBjY2Q1IGxlZ2FjeS10cnVuaworNTY3MyBkZjJmMjUyZGNkMjlkZGU3ZmYyNGFlY2FiZDMzN2IxZTA1MzE4ZjZjIGxlZ2FjeS10cnVuaworNTY3NCAwZWQ1Y2Q4ZGY1MWY5ODE2MTkxNGRhMDlmZTlhYmMwNTNhZjJhMmIyIGxlZ2FjeS10cnVuaworNTY3NSBhMjI3ZGNlNDg0NTE3ZGE2MTUwYTBhOTRhNzcwNDcwM2E2OWY5YWM0IGxlZ2FjeS10cnVuaworNTY3NiAyYjVjODczODEzMGNmOTUyMmYxZmJmNGFkYmE4MjUwYWZmMDljNmZlIGxlZ2FjeS10cnVuaworNTY3NyBjZGViZWU0YTNlM2U4NzFhN2U2ZjVmZTZjMTE5NGVkOGRkY2NhMDM1IGxlZ2FjeS10cnVuaworNTY3OCA5OGUyY2FkNDg1N2YxZDJiZDUzOTlkYTM3YjhkMmY4YWQyMDllOTc0IGxlZ2FjeS10cnVuaworNTY3OSBjN2NkZDIyYTQ4NTNhZDhiYTAwOWExZmRmNzVmYzUyZjIxNzc5ZDJhIGxlZ2FjeS10cnVuaworNTY4MCAyMWQ0YTA3YjE4NzViMWFkYmM3MGJhNmQwY2RmNTU1N2E0YzBkNTYxIGxlZ2FjeS10cnVuaworNTY4MSBmZmUwMzI4MzY5MzczNzM1MDY5YjQ0NmZiYzg4Y2MzODcyY2Y4MzA4IGxlZ2FjeS10cnVuaworNTY4MiAzYjJiZTgxMWE2NmFhYTZiZmRmODVkYzM3ZmM2MmU4MGI2ZjA4OWU5IGxlZ2FjeS10cnVuaworNTY4MyBkMDBhNzllYmIwMjczNDhjZGRmNWUyNTQ5YjRlZGM2YzczYzdkMzE3IGxlZ2FjeS10cnVuaworNTY4NCA4MDEyNjViODYxNjQwMjQ0NGFkNzc5ZmJlYjU2NjNjOTFkYzJlMTdlIGxlZ2FjeS10cnVuaworNTY4NCA3ZDc0M2M4NjVhOWFhNmJkZThiNjAzZTMyZTA1NDIwMzFiYmEzYzMzIGxlZ2FjeS10cnVuaworNTY4NiBlNDVmM2QyNjJhZTRhOTIzZWQ4YzQwZjBkZjk5ZGY5NmNlMGY0M2Y4IGxlZ2FjeS10cnVuaworNTY4NyBmMWNjMjQ3ZmZmMTM3ZDk0ZGI4MTJlOWVjY2M2YmJjOGFlNjg2OTRkIGxlZ2FjeS10cnVuaworNTY4OCA3OGUxOTUzZmM5YjJmMzM0NTM2MDJiYjJkZTg3YjA1Y2NjNDY1NzZjIGxlZ2FjeS10cnVuaworNTY4OSAwZjM4Y2VjNTY1MzkxZTUzMGVhNGY4OTIwM2Q4ZTllMDc5NmY5ZjhkIGxlZ2FjeS10cnVuaworNTY5MCBlNzQxN2E1Njg1ODZhYjM5MmQxYTY0OTczM2ZhMzZmNWVjMTA0OTAzIGxlZ2FjeS10cnVuaworNTY5MSAyZmIzOThhYjNlNmFiMDI4M2Q5ZTBkNzNmYjNhZDVmNzA5MTMyOTZiIGxlZ2FjeS10cnVuaworNTY5MiBlNTU0YTYxYTg0Njk0ZmIxNzcwODgxMGQ3Y2Q1ODY5ZGVhMTU1NDQwIGxlZ2FjeS10cnVuaworNTY5MyA4YzBhNTE4MGZhMzZlYWYyNGVjZWM1NDNlMDkxZDk3Y2IwZDZiZTJjIGxlZ2FjeS10cnVuaworNTY5NCBlZmI5NzE0Mjk5MmU0ODk3ODk2OGZiYWJlMGMxY2E3MThmZWM5YWQ0IGxlZ2FjeS10cnVuaworNTY5NSBmNGE1OWZmZTFhNWY1YzFjODIzNTI4Y2NiYjhjMDFkNmUzMjhlYzEyIGxlZ2FjeS10cnVuaworNTY5NiBlMzM3YmYzY2I0M2FlYTM4NmU2MjU5NzI0YzVmYTg0MzYzZjQyMTMxIGxlZ2FjeS10cnVuaworNTY5NyAxMThjMDYzZGY0NTNjMmMyZjNkNjc2MDE3MzUzODA2MDVkZjM3N2NjIGxlZ2FjeS10cnVuaworNTY5OCAxYWNjMDQ0NzhkYzMxMGU4YzQwNTFmMzIzN2U2ZTZmYTk0NjMxNDE0IGxlZ2FjeS10cnVuaworNTY5OSBlYTdlYzRhNGM4ZDJmNTMwYTY3MTBmODdmMjdhMzQ3MzA2MGVjODAyIGxlZ2FjeS10cnVuaworNTcwMCBmZDU3M2FjNzU5NDc0MDM1NWYwNWM0MWM5MTI5Yjc4YjY2OTRjMWUxIGxlZ2FjeS10cnVuaworNTcwMSBhYWZlN2Q2MzQ5ODUyN2VkZjdkOTYxNGI3MWZhYjg0OTRlOTE3OTA2IGxlZ2FjeS10cnVuaworNTcwMiAzZGY5YWIwM2JhZGZmYjJlYzJjZjRmODY5ZWYyYWI3YTNkMjcyMDlhIGxlZ2FjeS10cnVuaworNTcwMyA0NjNiMjZmYTRkN2I3NTY3ODUwYzFiNDUwNmFjYTg2YTRkNzEzM2VhIGxlZ2FjeS10cnVuaworNTcwNCA2MmJiZmRlNDFiMTQ0M2JhNjc2OWZiODU2MTBlMWQ2MTQwYmE1MjAwIGxlZ2FjeS10cnVuaworNTcwNSBkMzUxMGYxMTE4YjZiNzcyYTk0ZTFmYjA0MDNhMTk0OTdjODMwOWU0IGxlZ2FjeS10cnVuaworNTcwNiAyODVkYmE0ZTBlNTE2YzUwNzdjMGMxNGViOWZjZGUzMjE1NTQwZDY1IGxlZ2FjeS10cnVuaworNTcwNyBmN2ZkODViMzJhN2Q4NWU0OTZjZTc4OWFjNDQ1NzJlMjk3ZjZiYjYwIGxlZ2FjeS10cnVuaworNTcwOCBlOTI3ODlhOTYwYTAyNzJiMmQxNDBjMjU2ZmYyYzkyZmRlNGYzOWUxIGxlZ2FjeS10cnVuaworNTcwOSAzMTM2MzdjNzdkYWEwM2EyOTVjYjMxNzczZTQwZWY2ODBlZTc4YmNhIGxlZ2FjeS10cnVuaworNTcxMCA0MDVkYTU1NjY2MWQ2NmFhNDc5ZWFlNjhlZTIzNTZmYWRiNWJkMWZlIGxlZ2FjeS10cnVuaworNTcxMSAyODQyZmZhNTIxMjYwZGQ3NTU0MzUwNmZiNmU2OWJjYzA0ZWU1YjcxIGxlZ2FjeS10cnVuaworNTcxMiAxOGI2MGQ4ZDllMzVhMjY0YjQ2ZWE4ZWE3MzQ1MmNiNzE1ZGExNWQ1IGxlZ2FjeS10cnVuaworNTcxMyA3YjFhNmJiYTI1ODA1YjM5YTNhZGI0YTgwNTc4NGEwOTAxZjU1MDI3IGxlZ2FjeS10cnVuaworNTcxNCAyMGQ3NGZhM2I1MGIxYmYwNzJhZDE4YmY3YTJlYjE3MGIwOGY5ZGExIGxlZ2FjeS10cnVuaworNTcxNSA1ZTEwMWVhZDFlNjk5MDk1MjRmYjUwZDc0NWE5NDM5NzdjZTNiYTE1IGxlZ2FjeS10cnVuaworNTcxNiAxY2Y2ZTEwNTIyZTA5MTU2MDFlMDYwNDhkYTg1YjgyODA1MWEyZGNkIGxlZ2FjeS10cnVuaworNTcxNyBlZDBkMTQ4ZmMwNWM4Nzk3ODZhYzRkNmI3ZGRjMjk3NDE2NTBkNGM5IGxlZ2FjeS10cnVuaworNTcxOCAxYTM5ZDQwN2I0ZDM5MDI5ZDMxMGVmNzk4MjQwMzU5MzQzNDc5YjYxIGxlZ2FjeS10cnVuaworNTcxOSA0NjdlMGYyZDY3OGExMWY0MzFiM2U2YzczZmZlNzkxOGM0Y2E0ZGM0IGxlZ2FjeS10cnVuaworNTcyMCBmODljZGRhNzQwNWFjNGM3MWRmMjJhZDZlNzMxNTQwYzhhMzQ3M2U4IGxlZ2FjeS10cnVuaworNTcyMSBjYzU0NzQyMjFjOGNiMWE2MDIxYzJiZGIxM2Q5YjE3ZjE0NGQ1M2UwIGxlZ2FjeS10cnVuaworNTcyMiAzMzMxMGNiNmE1ZDc2ODM0MjA5OGExZjU2MTQzODk4ZGNkNTBmMzgwIGxlZ2FjeS10cnVuaworNTcyMyBhNmIwNzA0MTA2YzhjZmQ2NTE4ZDJkZTkxN2RiY2FkNDQzOTYzMzNlIGxlZ2FjeS10cnVuaworNTcyNCBiYWQ3ZjU2YzgzYjJiNjJhMThlZWQxMTZiODVmODY2MmM4Zjk2ZDhlIGxlZ2FjeS10cnVuaworNTcyNSA2ZTQ4ZmFiNjk5MGYzMTRmYjc2MTQ1NWIzZmYyNTI2MWMwNmQ2ODg1IGxlZ2FjeS10cnVuaworNTcyNiBkYjExYTJiZmVhNjZkYTQzYjA2MzZhMjBlNjFmODZiYWZiZWE3NDRiIGxlZ2FjeS10cnVuaworNTcyNyBiMWNhNjU5NzFlMzZmYWE2Njg1ZWQ2MTNhZDIxM2ZhMTVhYWM4OGJmIGxlZ2FjeS10cnVuaworNTcyOCA0ZjQwODNhMjZiZjIyMzM5MDE1NTcxN2ZkOTM4MTA0NzQ2MDk2YTVjIGxlZ2FjeS10cnVuaworNTcyOSBiZmI2M2I0NWZmMGY2NzdhYzE3YTA2Mzk2ZGRhYWI3ODRjNjA2ZGIxIGxlZ2FjeS10cnVuaworNTczMCA4YzU4YWI3YWE3MWVmMTAxZjMzM2Y1ZDM4Mjk4OGYzMjc0NTI5N2YwIGxlZ2FjeS10cnVuaworNTczMSAyYzFlM2U4NzUxMDk5NmZiMDNiZjYzZTc2MmUxZWUwZGFjNWFlNDMzIGxlZ2FjeS10cnVuaworNTczMiAyZjgzN2Q4MjQxMjBkODkyY2RmODhiODEyZTg4OTNjMTkzNjczMWZiIGxlZ2FjeS10cnVuaworNTczMyAxNTk3NzRhZjJlZGU2NmMwYzA5MjI4YjM1NzY2YTlhZTFiYjBhNmY0IGxlZ2FjeS10cnVuaworNTczNCA4ZTczM2Y5MmVkYzA5MzRmODM3ZWY0Y2VkM2VmOTMyODUxMGM5NzcwIGxlZ2FjeS10cnVuaworNTczNSA3ZWFjMDJhNjE3NmVkZjI4MWM1ZjQ1MDc1YzA2N2U2MjczYWZmZmE3IGxlZ2FjeS10cnVuaworNTczNiAxMTc2MThkZDBlN2Y1MzMwNDBmODg5M2ZhZDMyZWM1ZTE4MmQ3NjYwIGxlZ2FjeS10cnVuaworNTczNyBiMTZmY2QxMjZiMWMyNGU2ZTk5NzA4ODE2MjEwZGJjYjYxMDU4YmZhIGxlZ2FjeS10cnVuaworNTczOCAwMzE3YWM1MjI2MDU4MTdjNmZlMTc1MzZhYzI1MzlkZTcxMTg1YmI1IGxlZ2FjeS10cnVuaworNTczOSA2MTIyNzMwYjc5ODg1MTZmNDZhZTUzODg3ZDlkMmIwYzUzMGQzYzdjIGxlZ2FjeS10cnVuaworNTc0MCBmOTQ3ODNiOWJmYmFiN2UxNjA5NmE4MDEyNzQyNzFiOTFjOGE4MzM2IGxlZ2FjeS10cnVuaworNTc0MSA5NzVjY2ZhNzIxZjZiZWFmNDUzOTc1MThkZjQ5Mjk1YzEwOWQ3Njk3IGxlZ2FjeS10cnVuaworNTc0MiAzYTgzYzAxN2RmMWVjYTk1NWVhMzFiNDkyMDUwMjFjMzg2M2VlNTZjIGxlZ2FjeS10cnVuaworNTc0MyBmMWZiMzI2YzdlMmZlMWEwOGVjOTM0NTA2ZGI0N2NiZmI2MmFkODdlIGxlZ2FjeS10cnVuaworNTc0NCAzNmExODQ4OTVlYjk4MGE2ZDhlYzNjMWFiOGVhMTY5NjdhMmVjMjFiIGxlZ2FjeS10cnVuaworNTc0NSA0M2M1ZTdhM2ZjMWZiNjJhZTM2N2U5NmY1YzNhYzUxNzViOTExMzljIGxlZ2FjeS10cnVuaworNTc0NiBhODA2NTc2MmEzOGVhMDFjNTU2ZmY0YjNhOTIxMjY3MTE5MTNjODBjIGxlZ2FjeS10cnVuaworNTc0NyBmOGEwNzE3MDI0ZmU0YmY3YzM3Yjk4OWJjN2M1NjE4ZmI3MTg4M2Y4IGxlZ2FjeS10cnVuaworNTc0OCA4NzFjNzY4ZDBkYTIyMDc3MjMyZGJlZTEyNTdmYzgyMTFkNDc3YTI4IGxlZ2FjeS10cnVuaworNTc0OSA2YTE4YzRjYjY4ZDg0NGM2ZWE3YjZmY2M5Y2YzZTY4YzZhMGNjNGUxIGxlZ2FjeS10cnVuaworNTc1MCA5ZmEyZTIxOGUyYTg0YzY4YWJmNmNiYTNlOTUyZjA2ODc4MTEwMjZlIGxlZ2FjeS10cnVuaworNTc1MSAzYTBmODRjNjkwNTBhM2FiMmY4ZDM3NTJlYTAwNjcxNzlkNzJjOGRlIGxlZ2FjeS10cnVuaworNTc1MiAyMTJlYWU1Yjk2NjBiNThlMzFjZmRiMzU1MWRmMTZkMmYxYjZhOGQ4IGxlZ2FjeS10cnVuaworNTc1MyA2ZDRmNzE0MzA3MjJiNWVkYWQ3NmJkMTYxOTEyYjZlNTZiNGE5NWYwIGxlZ2FjeS10cnVuaworNTc1NCBlMzhjMDlkMDA4MDY4Y2ZmOGZmYzBhMWEzMTc0NDIyZWM5YjZmMTY2IGxlZ2FjeS10cnVuaworNTc1NSAyODhlMzM3ZjczZTdlNDM2OGM3MDhlYzU3M2VjMWU2NmE3ZWQwYWM1IGxlZ2FjeS10cnVuaworNTc1NiA2NmY0YmY5NDYyN2ZlZTA4ODk1MDg3NThkNGMyNWMzM2FhOTcyOGViIGxlZ2FjeS10cnVuaworNTc1NyAzZjQ1NTc3N2ZmMjg0MWFkNWYzYTIyMWY2ZmQ0M2NiM2I3OWQzZTI2IGxlZ2FjeS10cnVuaworNTc1OCA0NWU0NDQ1NDdlNWEzNWU4ZmYwMDMzYTExZjIzNTVlZWJiYmZhYmQyIGxlZ2FjeS10cnVuaworNTc1OSA3MjM1Nzk3OGZmZDIyYTE4NTYzOTU2M2RhZWIwN2E1OThlOTA3ZDYyIGxlZ2FjeS10cnVuaworNTc2MCBiYWZjMTA1YmM3Y2Q5OWE1MmFkOWE1MmNkZDE4ZGZjYTYyZDM1M2RjIGxlZ2FjeS10cnVuaworNTc2MSAyYmRkZmIzY2ZjZjFhYThkODExZmRmNDFjNTYzNTgyNzMwNWVhOWM3IGxlZ2FjeS10cnVuaworNTc2MiAzY2ExMTFlMGIxYTc2ODc3ZTRkZTY4Nzc3OGJmZWQyNTI2N2UwYmZlIGxlZ2FjeS10cnVuaworNTc2MyAwZDZiNjBiNzQ4Mzg0Y2FmMjEzYzg1ZGI4YmQxMzA1ODEwZTNmMzU3IGxlZ2FjeS10cnVuaworNTc2NCA1OGVmNGM0OTVkZTc2MmM5NDZiODQyMTQxYzcyNDM2MzZjMDExMzJhIGxlZ2FjeS10cnVuaworNTc2NSA5YTQwODE0NDA3ODMwMThmZWYyZjU2ZjZmNmMyNDVhMDJmYmI2N2JjIGxlZ2FjeS10cnVuaworNTc2NiA0Nzc2M2FjNDRjNDg2YjcyNWI0ZGMzMWRmZGM0NGQ5MWQwNjIxODNhIGxlZ2FjeS10cnVuaworNTc2NyA5N2NkNTc3MWMyM2UyNTdkMmU1NzM5YTlhNDUyMDUyNmZlYmM2YjY2IGxlZ2FjeS10cnVuaworNTc2OCA3ZjViNDMyYjg3YzQ4YzYzNWYyOTRkMTYwZWE3MGQ5MDI1MGY1ODljIGxlZ2FjeS10cnVuaworNTc2OSA1NGYwNjc4NzU3YjAwZjZlMzJjNzg3OTBhYTYyZTc5YzZjMzIwMGQ3IGxlZ2FjeS10cnVuaworNTc3MCBkNGQ1YzlmYTc4NTkyYTE2YjM1NjEwZjYwOTk5NjkzYWJjMmRiMmUwIGxlZ2FjeS10cnVuaworNTc3MSA4YTUwOTdlOWQ3ZWUyZjM2YzY3N2VhMGQzMDc5NWU5M2Y1MWYxOTQwIGxlZ2FjeS10cnVuaworNTc3MiA4M2RhYTU0YzE4MWRkMGJjYzAxODIxN2Y2NTY4NWQ3YTUzMjg0NWQzIGxlZ2FjeS10cnVuaworNTc3MyAxNDBkODIzOWE0NDZlOGYzMWM0ZGMwYWI5NzZmZmI2NjFkNTg3YzA0IGxlZ2FjeS10cnVuaworNTc3NCAxM2IyNGQxMDM0YmQzYmNjNzBjZjUwN2ZlZGYzZDkzOTNhNGE1OWE1IGxlZ2FjeS10cnVuaworNTc3NSBlNTI0NjU3MWYwZmRjYWM3ZDg0MTZlYTdjODAzYjczMzBiODk0YjE4IGxlZ2FjeS10cnVuaworNTc3NiBiODI4YmNjZGExODk4MzVjZjc4ZDBiODJjNDEyYTM1ZGRjMDkxMmFhIGxlZ2FjeS10cnVuaworNTc3NyA2MDRiMWZjMjZkNjMzYTg4ZTAyN2QwYWViOTI1ODAwNmQ4Mzk3ZmI3IGxlZ2FjeS10cnVuaworNTc3OCBkZjBkMDA5MTYyYjY3NTE4NzFiZjA1OGIzMWZiNjViYTFiYzczMWYyIGxlZ2FjeS10cnVuaworNTc3OSBjMDY2NGJlN2Y2NjI0YjZjYTBmODVlNjU4ZTQ5NGY4MDg2NTA3NTNmIGxlZ2FjeS10cnVuaworNTc4MCA2OGZkYzQwYWRkMmNiM2Y1NWQxYWZiMjU5YjA5ZTE0MDM0ZjcxNTY1IGxlZ2FjeS10cnVuaworNTc4MSA1OGE2NzMyMmM4OTYwY2QzMzk1YTU1ZDIxOTQ5ZDIzY2M4MDVmMWM3IGxlZ2FjeS10cnVuaworNTc4MiA0NGY0OGFhY2E4YmZmNDU5YmMyMmYzNGI4NDgzNjU4OGNiNTczZTAxIGxlZ2FjeS10cnVuaworNTc4MyBlNWQxZjI0MmRhZjljMTYwNTFkZjQzNzUwYjg3YzI0YWIzYTZkNjhmIGxlZ2FjeS10cnVuaworNTc4NCBlNGY1N2RkM2QyNDY1Mzk1ODM0YjRmYjljYTQ3N2RiMmQ4MjdlYTFlIGxlZ2FjeS10cnVuaworNTc4NSA4YjhkNjBmYmUzYmY5NWJlMzI0ODNhY2Y0MDM3ZTFmNmU4YzU2MTNkIGxlZ2FjeS10cnVuaworNTc4NiAzMmI0ZThhZGViZWI4NGY3NmNmZjQ0MTQ4MWM5OTJkNGM5Y2U0MzIyIGxlZ2FjeS10cnVuaworNTc4NyA0ZTZkMGIyNmVmYWYzMmViNzc3Yjg1YTgwNzQxYTJmMjBlMzZkMjdhIGxlZ2FjeS10cnVuaworNTc4OCA4ZGRkYTY2ZGJmMmM4OTI2ZjllNDE4OTNlYTcwNjdlMDRhMzNiNjI2IGxlZ2FjeS10cnVuaworNTc4OSA1OTYzNDdkYjZhNjhmNzk3NjZiMzYwNDg4NzY2MGI1MGM1ZTRmNjMxIGxlZ2FjeS10cnVuaworNTc5MCA2MDk4YWFhOGFlN2ZiY2Q5MjYyOGE1OThiOTg0NTY0NmQzODE2OWIxIGxlZ2FjeS10cnVuaworNTc5MSAzNjkyMGJiZDgxYTgzNDQxOTQzZjllMDlmYWNmMmY0ZmUzNDBiNTcwIGxlZ2FjeS10cnVuaworNTc5MiA4OTUxNDQyNmI5YjhlNGEyMDg1Mzk3YjkyMDJhMTYyNDRkMTlkNDQxIGxlZ2FjeS10cnVuaworNTc5MyAxZWFiODQ5NTQ2MmZiNDAyYjkxNDAyMTQ4ZTc4OTRlNWVlNjMyZTM2IGxlZ2FjeS10cnVuaworNTc5NCA0OWY3YTRhMWYwZjZjZTc3YzVhZmJlODA5Nzc3Y2VjZjM5ZTJhOGMzIGxlZ2FjeS10cnVuaworNTc5NSA0YzY1NTExNWRmY2U3ZGZlNDFhOGJkYWYyOGEwZmE0ZDhkN2Q0NmQ2IGxlZ2FjeS10cnVuaworNTc5NiA2N2QzNDdjMzJmZmZiOGM5NjM2MTVmNzlkNTE0OTE5M2VjNjg4MTRlIGxlZ2FjeS10cnVuaworNTc5NyA5ZjFiNmUyZGI4ZTAxMmMzNzgyM2E0NTViOWNmZTJkMGEyZDU4MmJlIGxlZ2FjeS10cnVuaworNTc5OCAwZGEyNGYxYzNkZGU2ZGE0ZmRjN2NkMzM3MTk3ZGQ3MGNmNmJlYzU4IGxlZ2FjeS10cnVuaworNTc5OSA5NTY0M2MwYjBjMGViMDgyYjE2ZTljZWE1NjM0YmY2ZmJlYjg5MDhiIGxlZ2FjeS10cnVuaworNTgwMCA0YjViZmY5NTgwNGU3MmI3NzljYWE0ZWFhNGY1NzAxZDNiZTJkZGFkIGxlZ2FjeS10cnVuaworNTgwMSA5NjliZDkxMWUxMTRmY2YzMmVhNGQzOWUzYzU3ZTk4MmIzNDE0ZjZlIGxlZ2FjeS10cnVuaworNTgwMiA5YmQxZTQxZDZiMTE2YTU1YWQ3M2Q1OGZlOTYzZWE4MGMxYWU5YTY5IGxlZ2FjeS10cnVuaworNTgwMyAyNDk3YzQzZjQ5ODNkYmNjNTZmNzJiMTc1MzkyMWRiYWM2N2FjMzM1IGxlZ2FjeS10cnVuaworNTgwNCAyMDFkZTg0NTVjMmJjOWQxYTI3MjZkNGUyZmViMTRkMTVkMzhiM2Y0IGxlZ2FjeS10cnVuaworNTgwNSAyZGI1ODVlYTIxOGJmZGFjYzgyMjcwMDc0YjY0YmEzYzlmNGJlMGU1IGxlZ2FjeS10cnVuaworNTgwNiAxNmNiMDQ3MzIyNGNkNTE3YTNiNmM5ZmY1NWZlMzdhNzFmY2I5MjJiIGxlZ2FjeS10cnVuaworNTgwNyA5MWMzZTk4MjFkMGEwZDk0MWQ0Nzk1M2U0NWEwM2Y3ZmVmN2Y0Mjc2IGxlZ2FjeS10cnVuaworNTgwOCAzNjQxNjE0MDEwNWEyOTQzYmQ0MGE1MmVhYWNlNTc2NDc2N2Y1ODAxIGxlZ2FjeS10cnVuaworNTgwOSAwMDQ1MzYxM2NkNGM3NzQ5MmM0YTkyYWM5ZmM4MTA2MzAyZTdiZTRlIGxlZ2FjeS10cnVuaworNTgxMCAwMTIzNzZkM2FhMTQ3YjAyZDI2M2UwNTgyODY0OGE2ZjE0ZjJkMmEzIGxlZ2FjeS10cnVuaworNTgxMSAzYjQ4NDgxMmFjZjZlMmUxOTdmZmQ4MGUyM2Y2NjM1Y2JmNzk0YzAyIGxlZ2FjeS10cnVuaworNTgxMiAxNzA5ZDVmZWQ1MjhlNmFlYjFlZDUyMDA0ZGEyMzQzZmY5NzcwMTlkIGxlZ2FjeS10cnVuaworNTgxMyA1Njg5Nzc2MGU5NTg3MjU3NGU2MTJhYjg0MmNmNWNkNmQzOWI2N2U0IGxlZ2FjeS10cnVuaworNTgxNCBmYWEyMWNlMWZmMDFkYzc5M2FkN2E3Mjk1MjVhMDY4M2EyMzJlZTU1IGxlZ2FjeS10cnVuaworNTgxNSBlZmRkZTFkNzQyNGI5MDQ2YWU4Zjg4M2ExNGRlOGJjOGUwMzRlMTc5IGxlZ2FjeS10cnVuaworNTgxNiA4MjA5OTk4ZDY2OWUxNmEwOGZjYTQ5Y2JlN2FhMjg5ZjE0NmQ4MDRhIGxlZ2FjeS10cnVuaworNTgxNyAyYmUwYmRlM2EwNzE4ZTAzNzQ4MDg5ODk4Njk1MzQ5MmY4MTgwY2RiIGxlZ2FjeS10cnVuaworNTgxOCBhZTAwNGE0NTA1MGZkYTQ0NzI3ZGJkNzM4YmU2MDM1MzBjNDkyNmQ4IGxlZ2FjeS10cnVuaworNTgxOSA4MWY0NWY2OTM4OGUyZGU3YmU0ZjI1NWVjYjZkODcxOGJkNTNhZDBhIGxlZ2FjeS10cnVuaworNTgyMCBmNmE4NDBlODNkMmE1MmI4ZjQ4ZmM2MGU4ZTUxODg5Yjc1MjI5ZTg2IGxlZ2FjeS10cnVuaworNTgyMSAwYjAyMWNmNDFkZGFjMGJiMGMyYWEwYjc1NGU4Y2NiYmMxOWU1NWRhIGxlZ2FjeS10cnVuaworNTgyMiBkZGI0NTEwZWViNDY4MzUxZmI4ZDBmNjg2ZGRhZjE5MzNmZjY4NTYyIGxlZ2FjeS10cnVuaworNTgyMyA2ZDc2MmEyZjliNjlkNjgwMzM1NDYzZDY4MTQwNjFiMTJhZjJkMjBkIGxlZ2FjeS10cnVuaworNTgyNCAxYTE3YmE1MGJkNjgxOTE3NzI2NTQzZGE4ODM4M2FmNzFlODA1M2ZlIGxlZ2FjeS10cnVuaworNTgyNSAyMWQ4OTY5ODMyOWM2YjJiMmZlN2VkODY5NDUwNjM1MWYxNWI1ZjFhIGxlZ2FjeS10cnVuaworNTgyNiAwODk4NTQzMTUwMGI3MTZlZDMwMDk5MjliOGI5ODdhN2E0ODBjMTM1IGxlZ2FjeS10cnVuaworNTgyNyBlMGVmMDA5YjI3MDIyM2YyMjcyNTYwZGUxMDgzM2YxYTgwMTI0YWJkIGxlZ2FjeS10cnVuaworNTgyOCBlMjgxMjRiYjdmYWIzMThiMWZmZjhkZjU4M2U0MDQ3MjUwODUwODkxIGxlZ2FjeS10cnVuaworNTgyOSA2Y2E5Nzg3Y2QzYWFhMGY1NmEzZTVhZWZkOWFhNzVmNjU3ZTYxMGE1IGxlZ2FjeS10cnVuaworNTgzMCAzNjliMzBmNzhkNjNmY2U1YTcwZjAyMjY1NWYwY2ZkZTUzOWE1YjlhIGxlZ2FjeS10cnVuaworNTgzMSBiYzE3ZTgzMTNlYTA2YmI0YjE0ZTRiNzY1NjdhM2NmMjJiNTc4NDM1IGxlZ2FjeS10cnVuaworNTgzMiBmOGZmMjgzMjk5NzE2MmQ1ZmMyZTk2NmI2NWFiMTE4ZThhYTU2YzMyIGxlZ2FjeS10cnVuaworNTgzMyBjMjU4NjU4ODQ2NDk1OGQ0ODRlNmY0MDNhMjAzNzYzNjI0YWI4NDJjIGxlZ2FjeS10cnVuaworNTgzNCA0ZTFhZDI0NDEwYTcxMTZmY2Y0Yjc5NDE2MWU5M2I4MDk0ZWQ4M2U0IGxlZ2FjeS10cnVuaworNTgzNSBhZjFjMmYzNmRjMzQ4NjllNTBjYTE5ZDRkY2Y0NjUyNzNhOGMxOWViIGxlZ2FjeS10cnVuaworNTgzNiAzY2YyZDhhMmQ3NGIxM2Q3NzVkNWMwZDYxNzNiMWU3YjI1ZDA5OTdjIGxlZ2FjeS10cnVuaworNTgzNyAwNTA4NGVlNTRlNTQ4ZTJjYjg0NDc3YzdmMmYxNGRiZmRmMWI5Yjk0IGxlZ2FjeS10cnVuaworNTgzOCA2YjBhZjc4YTkwZTVmMTExODcyM2E5OGNmNzdhMzVkMzZmZDUyMGIyIGxlZ2FjeS10cnVuaworNTgzOSAzNTkwOGUzNzVkMWE2Zjk5ZmEyMjE5ODVjYjE2ZDM4OWY1ZjkwOTg3IGxlZ2FjeS10cnVuaworNTg0MCBmZTE5OGRlZTA2NDA4NjI3ZTczYzY2ZjcyYjEzOTkyOTVmZTdkNDA5IGxlZ2FjeS10cnVuaworNTg0MSAwYzg4MjFiZjZkYjU2NmFiZDczMTQ5ZDgwYWU5MmMyMzRlNWNiMDUwIGxlZ2FjeS10cnVuaworNTg0MiAyOGY0MWVjN2M1Y2M0MjM1NTlmNWFmNWI0NzhhNTJkYTI1NTMwM2RjIGxlZ2FjeS10cnVuaworNTg0MyBlMDg2MmYwNWUxODUwNzdlYWYwMzE0NDU0YTI3MTQzZjJkZmIwYTAyIGxlZ2FjeS10cnVuaworNTg0NCA4MjczMzg2OTkwOTQ0NGQ0OWVhNjdkMDlmMjVlODNhNmY4NmMzYWJhIGxlZ2FjeS10cnVuaworNTg0NSA2YTNmZmMxZGJiOTVkODk3MTcwMjMxYWMzYWU0NTY1ZDE1ZDgwMGVhIGxlZ2FjeS10cnVuaworNTg0NiAwNDY4ODhkYTFmNDRhNmY1MTEzY2RmMmE1ZTk4NWI0Yjg5Zjg4NDY4IGxlZ2FjeS10cnVuaworNTg0NyAyZWUxZjkyM2NiMTkzMjE2Y2MyZWQxMDI2NGJlMzlkYzkzZDJiMWY5IGxlZ2FjeS10cnVuaworNTg0OCBiN2IyYzEzYjVlMzMyODYwY2ZiYTFiYzZkZGZlYmJiMTM5ZWE1ZmU0IGxlZ2FjeS10cnVuaworNTg0OSBhNDQyMzVlOTk0ZjM3ZjQ5N2M3YjZiMjJkMTUzOTkzZGIxMzkyMTg1IGxlZ2FjeS10cnVuaworNTg1MCA5MmYxMWFlZmI1Y2EzNWY0NDFkY2IzOGE5NTUwZTBjOWQxNjJhODVlIGxlZ2FjeS10cnVuaworNTg1MSBjNzFhN2E0ZjVmOGVhNTgyNWEwNzhhY2IzZGY1ZjA3MGJkYWZkOGQ2IGxlZ2FjeS10cnVuaworNTg1MiBkNTUzMmE3MWI0NTRiNmMzMjQ5ZTgxZWEyMDAyM2YxMDk1NzEyNzU4IGxlZ2FjeS10cnVuaworNTg1MyA2ZjVmZWIzYjQ4MjlmOThjMDdkNGE1NzIyNzk1ZTM5OTZkMDMwNGU5IGxlZ2FjeS10cnVuaworNTg1NCA5ZmEyMjI4YmIwOTYyMGViZDNkZDgyMDZkOGI0YmFmOGFmMThhZjdhIGxlZ2FjeS10cnVuaworNTg1NSAxNjk2ZmJmMzAyYjYzZmQxZDYxYjcyNGM5NTUwM2JiMGQ1NDU0NWZmIGxlZ2FjeS10cnVuaworNTg1NiBkMTVkMjliYmMxY2UxMWZjZGM4ZjU1NmJhMDM1YmE1M2FmMDk3YWMxIGxlZ2FjeS10cnVuaworNTg1NyA4MzJmMjZkMGUwNjlmNmQ1OWVjY2YzMDVjOWViYWYxMjgzZmU2OTUzIGxlZ2FjeS10cnVuaworNTg1OCAxYzAwZDI4NDZlODQ5ZjY5NjI1Y2M2YjcyMjc5YWMwNTNhZTM5NGI0IGxlZ2FjeS10cnVuaworNTg1OSBhZGEyMjI1ODUzNjZlNmY1OTM0YTk5YzIzYTc2ZDRkY2JiMTRjYjgxIGxlZ2FjeS10cnVuaworNTg2MCBkOWE3OTk3N2IzOGQ0MzllYTNmMTM5NDk1YjVkMjdhOGJmOGIzOGE5IGxlZ2FjeS10cnVuaworNTg2MSA0ZmVhNmNkOTRkZmE0ZDU5MjIzZGViNWY4ZGZlMDEyNTQ4OTFlYTRiIGxlZ2FjeS10cnVuaworNTg2MiBmNTk4NjIzMDUwYTM5OGNhM2IyMjgyY2RhMGIyOTIzYTIyM2UxNzhiIGxlZ2FjeS10cnVuaworNTg2MyA1NDY0ZmIyZDEyOWU1MDgxOTIxOTk4YjE4OTNmNTFjMzE3Y2ExODhlIGxlZ2FjeS10cnVuaworNTg2NCA1ZDdhMTVkZjcxNTU1MjU2OTZlZmZjMzAzYmFhOTRkNzU1NTY3ZGM4IGxlZ2FjeS10cnVuaworNTg2NSA0MDlhODljNWY2NmQ1MmIyMmI0ZTdmNzFhOTA5ZjlkZjgyZGMwZjljIGxlZ2FjeS10cnVuaworNTg2NiAwMjQzNWZkOTUyNzdjNjJkMmJmNGQ3MjlhM2I1NTc2ZDlkZjYxZTRjIGxlZ2FjeS10cnVuaworNTg2OCAxMTZkYjczNDdkMDFjNGM2ZTVlZTIxZTRjMjlhNTNkYzlmY2JjNGZiIGxlZ2FjeS10cnVuaworNTg2OSAxZGY4ZjVhOGIyMTZkMTExNTU3ZWRmODBiZGU4NmVhMThiZDg4ODQ3IGxlZ2FjeS10cnVuaworNTg3MCA1MmRjZTRjZGM5MzBlMDFhOGUyODk3ZWFjOTY4ZmJjNDU5YzcyNzJmIGxlZ2FjeS10cnVuaworNTg3MSBiYTgzZGQ0NTg1MzMxMTg1NTFhOWYzZjJjNDQ4NDU0YzM2ZDQ3NjUxIGxlZ2FjeS10cnVuaworNTg3MiBlOTk0ZTY3YmNiOTUwMDFkZmQ5ZTQ4NTliNzhhMjY4ZjEyNDAxZTAyIGxlZ2FjeS10cnVuaworNTg3MyBjMjgzNDQ3Yjk4NWY1MmVhNDdlYjAwNDFlOTQ3Mzk5OTBlNDEyZjUyIGxlZ2FjeS10cnVuaworNTg3NCA4MTBlNjkwYWE2MDJiMDMyNDY3MWQ1YjFlYzJmOTJlOTU4NTc0MWJiIGxlZ2FjeS10cnVuaworNTg3NSBmMjYxNGFjNzM1ZDBjMjZjNjFhOGQ3ODhmZjNmNzhkOTA2Y2NiY2YxIGxlZ2FjeS10cnVuaworNTg3NiAzOTdlNmQ1M2E3YWRlNThiYjhjOTBmYWIzYjZjZmFmMmFiZDM4YmMxIGxlZ2FjeS10cnVuaworNTg3NyAyNzQwNmMzNmU4YmQ0NDllNzg4ZGI3NTEzMDExNDU0NzhjYTdlODJiIGxlZ2FjeS10cnVuaworNTg3OCAwMjI0NzRhYzI0NTFlNDkwMDZmZmUwNTViZDNlNDViZGM0YjMwYjJlIGxlZ2FjeS10cnVuaworNTg3OSAxNDk5MWM0MzMxZGYwODRkYjE0NGJmZWRjNTk0MjJjNTFhOWEzYjM3IGxlZ2FjeS10cnVuaworNTg4MCBmNmJkZGEzNzBjYjc0YjBmZDIzZTY3NWQ3NjJhNmM3ZGQzNzlmMDNiIGxlZ2FjeS10cnVuaworNTg4MSAyZmU3ZDQ4OTY1NGU4YWQ1YzU3MzFjMDBjNWMwZmRhMTk0ZWU2MDk2IGxlZ2FjeS10cnVuaworNTg4MiAwOThjYmQ2ZDE5NmU0ZjdmZGM5ZmE4ODFiZmI1NjdhNDEzNzk1YzcyIGxlZ2FjeS10cnVuaworNTg4MyBmNmE2YTY5OTI3ZmZlZjIxNTNmMjBlZjYyZGVmY2FhYjVlNDhhNzlkIGxlZ2FjeS10cnVuaworNTg4NCBiNmMwYTQxZTRhNDY1ODBjMmQwMzNmNjk0MzJlYWM5MTUyMWYwNjExIGxlZ2FjeS10cnVuaworNTg4NSBlMWRmOTAyMDVhMzMzOTM2ZDk2NjkxZWI3NDQ0NDZiMDQzYmI4ODYxIGxlZ2FjeS10cnVuaworNTg4NiAwYWM1ZmJhZjhhZWY4YmFhY2Y0OTE2ZTM2M2UyNDUzODQxYjlkNDI1IGxlZ2FjeS10cnVuaworNTg4NyBlMDQ1ZjkxMzJiMDdiY2JkYWU5MDM2YzlhZmU0YTkwYzQ5NTk0ZDcwIGxlZ2FjeS10cnVuaworNTg4OCAwMTNiYmU0ZWY5NDM3YWM1ODA5MGUwMTEzMzFkNWYxZGIxOWM1ODU4IGxlZ2FjeS10cnVuaworNTg4OSA5MGI1NDMxMjY2MWEzNTAzNGU3NjRkMTgzNjU0ZmJmNTEyZGNkNWQyIGxlZ2FjeS10cnVuaworNTg5MCA2N2Y1ZDI5ZDQwNWIyYTkwZjcwMTdmMmZhNWRkNGM2MjhkZTRkYThhIGxlZ2FjeS10cnVuaworNTg5MSAwMmM5ZGEyMGI0MWU2OTM2NmVlMmNiYjY0NmE2NjA1Y2NmNGI4ZDUzIGxlZ2FjeS10cnVuaworNTg5MiAyNGJlZTM3ODNiMzVmM2Y0YzkwZmUwNjMzNGI2MWQyNDFlMzMwMjRjIGxlZ2FjeS10cnVuaworNTg5MyAyMzI1NGRhYTI0N2I4NzUzMjJjODJjMTA2ZGQyYzM5YjgwYWRlYmY0IGxlZ2FjeS10cnVuaworNTg5NSA2NDAyYmUyNjg5YzU3OWQyZGNiYmVhYzI0YWNkZTQ3OWQ1Y2IzNWI1IGxlZ2FjeS10cnVuaworNTg5NiBhZjVmZjUyMzFkNGExZDRhYmY3MGI0ZmE1MTBmNmU2MDVlYWE2YWM0IGxlZ2FjeS10cnVuaworNTg5NyBiYTk4MzE0MDcxOGFhNDdjZTgwYTg0YjQxNmIxMTFmYTJjMjVkYjM3IGxlZ2FjeS10cnVuaworNTg5OCBkYTg2YjNiNTQzNjNjY2Q0M2Q5MGVhOGZkYjk0MGY0ODY1YzQ5MmIwIGxlZ2FjeS10cnVuaworNTg5OSA1Nzg0NjY4ZDA1NzZiZjEyY2E5MzczMDNiY2UyMjk5NWQ2NjJiODQ5IGxlZ2FjeS10cnVuaworNTkwMCAyNmJlYzllMjJlNWQwZjU2NTQxZmQ2OTE5MmMyMzczMmQwNzA4ZGYxIGxlZ2FjeS10cnVuaworNTkwMSA2YWJjNzVlYzZkMjk4MjUwYzYwNzFkMWVhYzZmNzQzYmVkMjgxNGI3IGxlZ2FjeS10cnVuaworNTkwMiA1NzhjYTMwMmE1OThjMzY2ZjgwMDQzZWZiY2MyZmMyNDVmYmQxZjNkIGxlZ2FjeS10cnVuaworNTkwMyA1MjlmNGQ5Y2JlM2Q4ZTcyMTNlZGQzYWRkNDhhZjQ3Y2YxZTI0YzJmIGxlZ2FjeS10cnVuaworNTkwNCBmNzIwNTBkZDYxYTljM2Y3Y2RkOWI1MWUwZmY0YTRkZjM2YmI5MDZkIGxlZ2FjeS10cnVuaworNTkwNSBkYjlmNmVkZTU4YTc2NmMwOWJmZDE4NzU1ODRiMWRjYmRjMjk3NWUxIGxlZ2FjeS10cnVuaworNTkwNiBkNzAxNDkyMDJjOTNkYzYzMmU0MTk0ZWRjNzhjYWE2NjRmNmU3MTMzIGxlZ2FjeS10cnVuaworNTkwNyBkMGQxYTIxZDQ4YjBhZDNjZjdjZmI4MTU5MDUwYzZlYzAwYmZiNzE0IGxlZ2FjeS10cnVuaworNTkwOCAxYWYxYWRjYTgyNDI3NDhhN2NhYjU4MTM0ZDM5ODA0YzdlZmJkNGIzIGxlZ2FjeS10cnVuaworNTkwOSAzYmRlNGI1OWE1ZDJlMGNiYmYzNjJlZjc3ZDg3ZTQ5OGVlZjU5MDgwIGxlZ2FjeS10cnVuaworNTkxMCA1NTgwOGY2MDA5Y2RkMDIzNzVlM2IxMzlmMGJkYzRkNjU4YjAwNTExIGxlZ2FjeS10cnVuaworNTkxMSAwNjZhOGFlNGQ0MDYzYWI5OTk4YTdmMjcxYjYyMDBjNTIwZmYwZDhmIGxlZ2FjeS10cnVuaworNTkxMiAxZmYxMjgwNGZmMmE3NDVlYTliZjFkOWFjZTUxZjM2Y2UzZDkyMzgzIGxlZ2FjeS10cnVuaworNTkxMyBlNzZjYTM0ZDQ4ZjNlZWYzMTU1MjkwNmIxMjgyYzcxMWVhZTczMjExIGxlZ2FjeS10cnVuaworNTkxNCAwNzk3N2JmMGQ5OTcwYjdjMWI5ZDI2YmIyZTFlYTBlZTg0ODk3NzU5IGxlZ2FjeS10cnVuaworNTkxNSA2MjNiYTliZGViMjIxNTFjOTBkNDU2YmQxM2Y5YmI2MjQzNGMzOTFiIGxlZ2FjeS10cnVuaworNTkxNiBkYjc2ZmQzOTBmNzQ5YTFmZDA1NTgyZGIwOThiYjM0MzcyYWZhMTY4IGxlZ2FjeS10cnVuaworNTkxNyBmOTFmNjE5OGIyNzY4ZjZhNTBkYTZlN2EyMGMzNDc4NjZjZjY3ZDZiIGxlZ2FjeS10cnVuaworNTkxOCBjM2U1MWViMWMxNGZkZmJjZjkzYjFiYWExMGZjMDQ4MGViZDJiZTg2IGxlZ2FjeS10cnVuaworNTkxOSA3MTNiZDgzNzczODIwZmJlYTNkN2FiNjEzZjBkYjYzN2NiZDg3ZjMxIGxlZ2FjeS10cnVuaworNTkyMCA1YWJiYzliNWZkZjBiMjdhYTJmMjFiNDdlMjE2OGQxZGFjZTFmOTFlIGxlZ2FjeS10cnVuaworNTkyMSBlYzg0OTQ5ZjgxZWVkZjkzYTEyNDczMzFhM2Y4ZmU3M2Y3NzJlYjEwIGxlZ2FjeS10cnVuaworNTkyMiBhN2MyNzM3Njg3YzIxMmU1NWZhZTYxZDY3YmNlODBjNjNlOGY5YzZiIGxlZ2FjeS10cnVuaworNTkyMyBlNjQ2YWZjNTBhYzczYTlhM2NmYzg3NDRkMzU2YTI3NmE1NzE0MTk5IGxlZ2FjeS10cnVuaworNTkyNCAxNDQ0YTM1MjRlZGUwOWIwNDA3YTA5YWJiYjJjMGI1MGE2OTkyYTlhIGxlZ2FjeS10cnVuaworNTkyNSBkY2M1OTQ5MzQ5OWFlNzBiZDJkYTBjNjBkZDE1NzQwMmY3OWRlMTAyIGxlZ2FjeS10cnVuaworNTkyNiBhNzFkMmZkOTBmYTg3Yjg0ZjliMTRjYTUzYzMwNjFhMDFkMzE4MjUxIGxlZ2FjeS10cnVuaworNTkyNyA0MDhkZmM3MTg5NTE4ZjFkNGZhOTYwMDM4NzBkOGQ3NTg0ZDQ4N2M2IGxlZ2FjeS10cnVuaworNTkyOCA3MDUyMmRiMTEwMTlhOGNiN2MyMWI4MTYxY2FlNGE3ZTZkZTYwZTFkIGxlZ2FjeS10cnVuaworNTkyOSA5N2IwZTk2MjVlYjFkNWY4MGViYjZmNzA0ZmI1NjUxOGEyNjZjYmNkIGxlZ2FjeS10cnVuaworNTkzMCA4MDNmYmNkY2ZjOWY4N2Y3NDdjZDQwZmYxMzg5MzFkZDQ3ZWZmM2RkIGxlZ2FjeS10cnVuaworNTkzMSA4YjNmMmE4NjIwZjU0ZmI4YjQ1NGNhNWU4ZGE1YWY0N2I5YmY3MTE4IGxlZ2FjeS10cnVuaworNTkzMiBkMTk2OGE3Y2M2MjBjMTYxMDFjZjZjYWQxNjNmZTFlYjAxMDUzODM4IGxlZ2FjeS10cnVuaworNTkzMyA4ZGQwMTg4ZTUyYTdjOGM1OWI4Y2ZlMDMyNWMxYjIxZjg4ZTgyNTE2IGxlZ2FjeS10cnVuaworNTkzNCBmMGJhYWRiZmNhYmRiNTJkY2I2ZjIwY2FiYjEwOTc3ODRkMGRmYmE0IGxlZ2FjeS10cnVuaworNTkzNSAxNDI1ZmM2NDkxZWJiZmNkOWIyZmJjNDcyNTlkYzc0MDdmNzAzNTIyIGxlZ2FjeS10cnVuaworNTkzNiA0NTBmNGQ0NmQ5ZGJmMDEzNmU5OGM3M2UyOGViYWUyNDc4YWUzZWE5IGxlZ2FjeS10cnVuaworNTkzNyA2MjBhYjNkYjA3OTM0YzQxODFiZTJlN2RiOWI1NTk3NGRkNWJiZWJiIGxlZ2FjeS10cnVuaworNTkzOCBlOTA0MzIyMzkzNWFkMzRjY2NmOTE0ZDRhMGIwYzkxZmUzZjU5NWYwIGxlZ2FjeS10cnVuaworNTkzOSBiMzhmZGIwMDhmMWRjMzFhOTU4ZGJjMDQxNzAwOTg5N2E2OTY2NmJmIGxlZ2FjeS10cnVuaworNTk0MCBhYThhZGZkZDNhYTFlMWU5YWU1YjJjZTJjMjUyOGJkZDcxMjZlMGQ0IGxlZ2FjeS10cnVuaworNTk0MSA1MGFhMTZmODA5ZDc2MDAzMmMwNDFmZDVkNDY0MTdiZTYzNjgzYTNjIGxlZ2FjeS10cnVuaworNTk0MiBhMjkyYjc1ODNjMDE1YTI4MmExZWY5NjYyYzdhZjdkMGM4NDNhYTUxIGxlZ2FjeS10cnVuaworNTk0MyAxMTI5OWU5NWNhZTg0MGQ3MDEzYjAzNjBhYzE5MmZjYzk2N2VmYTEyIGxlZ2FjeS10cnVuaworNTk0NCAwNzM1NTBlMzEyNzMwNzQ3ZjU2MzQyMTQxNTMyYjkwYzc5MGZjOGVhIGxlZ2FjeS10cnVuaworNTk0NSAzNWM0YTQ4ZDlkYTE2OTRjNTBlNmY4ODNhNTA5MzdlNmMxNjEyMzYzIGxlZ2FjeS10cnVuaworNTk0NiBhNGYwMWQ0M2RhZDY5OTAxNWQxNjA2YTRiYTViNzM4ZWQzMDMwOGRhIGxlZ2FjeS10cnVuaworNTk0NyA4OWNhZmZkMmMwNjE0ODgzNWMyOGQ0NjQ2ZTljNjMzY2I2ODczNzNhIGxlZ2FjeS10cnVuaworNTk0OCBhZWM4YmJjZjhiMGU1ZjAyYWY4MjdkYzQ5M2RlZGI0MGMzZWY2MWY0IGxlZ2FjeS10cnVuaworNTk0OSA4MjdmMTFhZDY1ZGY2M2RkODdkOWRhOWZiYTI0NGI1MTNkOTdjMTZlIGxlZ2FjeS10cnVuaworNTk1MCBlMjkwZmFlYjkyYzg1Zjc4M2I0MzIzZDA3Y2FhY2Q4ZmQ5NjkxZmQ1IGxlZ2FjeS10cnVuaworNTk1MSAwMGNhOTAwYzc3NDJjNWUwNzM0Mjc2NDBiYjMzNWZkZWUwNjZlZDVkIGxlZ2FjeS10cnVuaworNTk1MiBmZWQ5M2QyZDg4ZmM0NmY5Y2I3ZTYwNWU1NDMyZmE4Y2MyYjg4OWY0IGxlZ2FjeS10cnVuaworNTk1MyBjZTI3ZTAzMjg0NjJlZDk2ZjM5MGMyODZmMjIyNDViMTk3M2MxMjljIGxlZ2FjeS10cnVuaworNTk1NCA2MWYxOWE3YjFmZjEwNmM2N2U5NTMyOTYyMTA1ZTg1ZjQ5ZGMzZWE2IGxlZ2FjeS10cnVuaworNTk1NSAwMmEyM2U2ZTQxNGFmZmU5NDc5YThkZWZjNTgxNzhmMmQ5NDY2NTNkIGxlZ2FjeS10cnVuaworNTk1NiA4MzU1NzE1M2Y1NDQ3NDAxMzMzZWM1ZDFiY2JmMDJiMzdhYWE0MWFkIGxlZ2FjeS10cnVuaworNTk1NyAyYzE3OGJmNzBmN2VmMzljMTc0NGFmNGJhODQzMThjNmU5OGRhNmQ4IGxlZ2FjeS10cnVuaworNTk1OCAzYjZlYmY4ZDJhNTllNjY5MGM5MjZhZGQ0NjRjYTk5YmFiODk2ZjcyIGxlZ2FjeS10cnVuaworNTk1OSAxZGZjNTE5ZWEzY2JlNDVmZDdmMDA0YzNjZDFiNjM4NThhMWQ0ZjZiIGxlZ2FjeS10cnVuaworNTk2MCAxNmE1ZjYwNDg0NjFmODM5Y2NlMzY5ODQ5OGY5MmQ4NmIwMjUxZTcyIGxlZ2FjeS10cnVuaworNTk2MSAwODEzMGYwMGMxOGRiNTAzZjRlMzk1Y2EyZTU1ZDFjNzc5MTE5YTk5IGxlZ2FjeS10cnVuaworNTk2MiAwM2M2YzE4MzI1ZWFjYTk2MmMzMTg1NzU2NDIxYzY3ZWU5MzcyZjQ4IGxlZ2FjeS10cnVuaworNTk2MyAxNDJjYmFiZGQ5NDU1NmEzM2I1NGZlMGVhMjQ3NDhhMDdhMmUzYjM0IGxlZ2FjeS10cnVuaworNTk2NCBmNzBkYmU2MDhmMDMxZjdiYWQ4YTFlZWMyMDFmMTU4ZjgyYTRlMWVjIGxlZ2FjeS10cnVuaworNTk2NSA4ZDQzYjgzMDM0MWJiNTZhZWYxYWZiM2YwNmJiNWZmNWExMzNmYTk2IGxlZ2FjeS10cnVuaworNTk2NiBkNjI0NmFlYjRhM2YyNzQyZTJjYjVjMjU2NDcwNzNjZmMwMmQ4ZjFjIGxlZ2FjeS10cnVuaworNTk2NyBjZGVhM2YyN2NmN2M3MGI4MjA5NGU2NjUyYzZjMWI1MmVjZWY5MjA5IGxlZ2FjeS10cnVuaworNTk2OCA1ZjI1MDQwZmQ2M2U2ZjQwZDFlNjdjNmI2ZDc0NzE1MmEyMDRiN2RlIGxlZ2FjeS10cnVuaworNTk2OSBlYWU3MGQ3ZjJlYzdjOGUwYTVlMTFlYzU3N2NkYmZiOTJhNDM5NzIwIGxlZ2FjeS10cnVuaworNTk3MCBlYjViOGQzZDhhY2Y0MjdiM2JjM2VmZTE2NjUxOGFmZjI1ZDE3ZGIzIGxlZ2FjeS10cnVuaworNTk3MSA2MTg5NGJhNTcxZjVhODNmNTNhYzI1YjEwOTljOTM5NTNlNTg5MTk1IGxlZ2FjeS10cnVuaworNTk3MiA4OTlhZWZlYTgwMWM5OWFlMzRiNzc1NmIwMDVkZjZlOGU4OGY2ZGQyIGxlZ2FjeS10cnVuaworNTk3MyBlOGQ1MDFjODhhM2UzZTliZGNkNmZlZjg0ZjFkMDRkNjk4MTBjZmIzIGxlZ2FjeS10cnVuaworNTk3NCBmNmJkNTdkYmQ1MjRkZWViNzU5OWI3OGIzNmFiOGIyZTE2NjZhZTNkIGxlZ2FjeS10cnVuaworNTk3NSBkMjRmOGQ3OWVjYTA3NGMwMjAzNWNmMTgyZWNiYTJkMmExMDlhYmYzIGxlZ2FjeS10cnVuaworNTk3NiA0MzFlOGQwMTA1NDdhMjNhYzhmNzg0NmMyYmJmZWM2ZWI3NjdkZjMyIGxlZ2FjeS10cnVuaworNTk3NyA2ZjM2M2E0MTc2NjExNzJmYjI0OGJiZGUwMDRlN2Y3ZmY3MjUxMTFhIGxlZ2FjeS10cnVuaworNTk3OCA1NThkY2U2NTUzZDkwNWJiMDY1MDE2MjI5OTY0MDFiMzk2MTk4YmQ3IGxlZ2FjeS10cnVuaworNTk3OSBhMWMwYzJhMzg4ODNmYWJmNzlmNDY5YTc4M2M5NzA3YmNjNWU0MDg4IGxlZ2FjeS10cnVuaworNTk4MCBjNWQzMGE1NjQzYmVhZWVkZjU4NmU3ZTk1YWMzYjAxNWEyYmM5MjlkIGxlZ2FjeS10cnVuaworNTk4MSAyYTA5OWZiNzY4MjNiMzJlYzNkOWY2Njc5ZGQxODUzN2JlNWFmZjVjIGxlZ2FjeS10cnVuaworNTk4MiA0MzYxYTVmZmI2MzgyNjAyZGUzYTFjYTA2YmI0YWM2ZmJlNmRlZmNkIGxlZ2FjeS10cnVuaworNTk4MyAwNWFmMjllOGRmMGU3NTZmNmU5YWJkNjU0ZTc5YjliYmVjMDI1MTlkIGxlZ2FjeS10cnVuaworNTk4NCA1NjZmNDZiOWQ3MTI2Yzk5Mzk5NmQ1NTlkYmVhNDRmNmRjNjdjOTA2IGxlZ2FjeS10cnVuaworNTk4NSA3ODc5ZjNiMzk2MDZlY2ZiYzNjNTdmMzU0NDJmMzQ4ZWZiNjAyZjJlIGxlZ2FjeS10cnVuaworNTk4NiA1NDJjODBlNjIxMTE0ZmYyYzlmOWYyYWM3OTlkOWU5YTBiMzQ1YTNlIGxlZ2FjeS10cnVuaworNTk4NyA3ZjIzMGQ0ZjM2NTVkNjZlMzUzNDhkOTJhZWE2OTBiOTYxMzhkZTRkIGxlZ2FjeS10cnVuaworNTk4OCAwNWU4NTA1NTU4MmNiNGEzMmVlM2UxODQ5OWQyNjg4ZjNlN2I2ODQ5IGxlZ2FjeS10cnVuaworNTk4OSAyYjJmYzlhMGI0ZWMxNjk2ODYwNjVhMjdhMjgzYmUwMmY5NGRmZDFjIGxlZ2FjeS10cnVuaworNTk5MCBkNzgwMWE3N2ZjZDU3YmYwNDlkZTdiNDUzMzIxNTkzMjMwYzcxZDBiIGxlZ2FjeS10cnVuaworNTk5MSAwMTQ1YjhhZTJkNWZiOWZkMDhmMmEyMzYxOWQwYjUyMmFjMjJhYjdkIGxlZ2FjeS10cnVuaworNTk5MiA5Mzk5NDUxOTIwMDAzOGVlNzIyM2U2NzI3NWNmMWNjZTcwN2VkN2Q1IGxlZ2FjeS10cnVuaworNTk5MyA0M2FmNTIzYTAwY2FmZDcwNjg2NjFiZGI3MDI1YjhiYjcyZGUzYmY4IGxlZ2FjeS10cnVuaworNTk5NCA3M2JjNDFiZTcwNzRkZTMzYWU0MWY1YTEzNjk0NmIxZTE2OTgwNTA5IGxlZ2FjeS10cnVuaworNTk5NSA4NTUyZTE3YWRhNjhhMThlODhjNzQzOThlZjgwNGUyNzMwNzQ4ZTAzIGxlZ2FjeS10cnVuaworNTk5NiA1MTBkYmZhOGM1OTk4N2NmZmNiNGQwZTQ4MjZjNmVmMzllMjcwZjEyIGxlZ2FjeS10cnVuaworNTk5NyBlYjgzZTRiMGM3MzM3ODA0ZDEwMDQxZjdjNjJmYjEyZDZhNDk1NzhkIGxlZ2FjeS10cnVuaworNTk5OCA1MGU1YjRjNTg5NWZjNTJmNTdhZTM0MzAzNWE1ZDM5MDJhM2IxYjU0IGxlZ2FjeS10cnVuaworNTk5OSAyNGZiOWY0Zjg5ODRiNDdkMWZkNDQ1NTgyMTI0MGIyYWNhZGQ4ZWY2IGxlZ2FjeS10cnVuaworNjAwMCAzOGUxNDgwZTdmODlkYmQ2OGU2Nzc2MzA1MDkzMDZlMmFjNjM1OTk4IGxlZ2FjeS10cnVuaworNjAwMSA3MjhkNTc0NWFlN2I4NjJjZDkyMmE4MzI1NjFhMzJiOWVhMzg5M2M0IGxlZ2FjeS10cnVuaworNjAwMiBlNjdhZGM4YjJmMTY2NzIyNWIxZGU3ZTE3MjFkMGQ4Zjg2YzBlZjY3IGxlZ2FjeS10cnVuaworNjAwMyAyMGExM2ZjZGFlNTRmOTMwMGFmOTQ2MzhjNGE1ZDJjZDY3OTA5YzQ3IGxlZ2FjeS10cnVuaworNjAwNCBhYzhkMjRmMWRmMDgyOThhOTA3Y2JkMjMyY2RmNTZhYTAyZDNlZjI5IGxlZ2FjeS10cnVuaworNjAwNSA4MjMwNzA3MWM2NjVlN2M0ZTFjZjcyM2IxOWM3Y2Q5ZDFjNTI3ODE1IGxlZ2FjeS10cnVuaworNjAwNiAzNWJlYzg4ZDk3MzQyYWYyNzE3Y2ViNTExOWQyOWQxZTJlZDUzZDBkIGxlZ2FjeS10cnVuaworNjAwNyA2YzU0MWM2M2M0M2ExMTJmNDlhY2YxYjQ0Mjc5MDgzMDRhY2VjN2U2IGxlZ2FjeS10cnVuaworNjAwOCA1YWVjNDkxMTE3NzI2YTdmYmM0ZDIyOTJjZjA0M2UwZDAwMWJhYmQ0IGxlZ2FjeS10cnVuaworNjAwOSAyYjE2NmIyMjBjMTEzZGE3OThjNjg5Y2NhMTBhZTUyMTViNDY5MWYyIGxlZ2FjeS10cnVuaworNjAxMCA2YzI1ODA0M2NmYWE1YTgzNTRmMDhkYzUwMWFhYjAzMzNlYTQzMDc1IGxlZ2FjeS10cnVuaworNjAxMSA1ZGYyYWNiYTBmYzUwMTk2MmFhMjdjOWU3ZmY4MmY5MjlhMDZlZTM5IGxlZ2FjeS10cnVuaworNjAxMiAyMmQ3ZjU0YzU3OTI3ZTMzYmY4NjJjNTI3Y2ZhOWZmNGZhMjc2MzZiIGxlZ2FjeS10cnVuaworNjAxMyAyYzkwMGRhZTg3OTkzNWJjYmYwODdhZTNmNjY3NWYxZGJkYTQ0N2E2IGxlZ2FjeS10cnVuaworNjAxNCA2ZjUyM2JkMGEzYWJmZjI5YTk5ZGE0YTM0MjY2MzEwZDNjNjcyZjQwIGxlZ2FjeS10cnVuaworNjAxNSAzZjdjZGYxNjYzZjdhZmYzNDE3NjM2NmFlMDdkMGM2MWMzODY1NGY2IGxlZ2FjeS10cnVuaworNjAxNiA5Y2E4YWU3MWJiYjA4ZDAzY2I1MWVkNGJiYTQwNThlYjE0MDZmNzgxIGxlZ2FjeS10cnVuaworNjAxNyAwNGVkZmNiYjcxMjEzMGE3M2I1OTU4ZDJmNjZhZDQwOTg5ZWVhMTlhIGxlZ2FjeS10cnVuaworNjAxOCBmNjYzMDZiYzA2NjNlNGQyN2MxNTc0YWU4YmZkY2NkN2NlODEyZGY0IGxlZ2FjeS10cnVuaworNjAxOSBhOTViMzUwYTQ0ZGFlN2FjNzZjMWQ0ZWYwZDZiZTYyODQ2NGEyMTdkIGxlZ2FjeS10cnVuaworNjAyMCBlOGEyYTVlNGM3YjA0NjBiODU3Y2RmMDk4ZjEzNmEzYzIwYTg5ZDZlIGxlZ2FjeS10cnVuaworNjAyMSBjN2U4MDg1OTZkMTQxYzAyMjVhNzNkMzQzNzJhZmYzZjJmOWUwMzAyIGxlZ2FjeS10cnVuaworNjAyMiAxZDAzNWUyMTEyMDk2OTE4YWQxYzAxMDJiZDFiYWM3NjI2NThjM2YwIGxlZ2FjeS10cnVuaworNjAyMyAyNDI3OWJhZmE4Mjg0MjkyNzJiYTgyOTYwMTBhM2M4ZjdkMTljYjRkIGxlZ2FjeS10cnVuaworNjAyNCAyOWMxOGZiMTNkOGY0MTJkMWM5ZTBlMTg2NjE1NDM2Y2U5OTlmNjk0IGxlZ2FjeS10cnVuaworNjAyNSA1M2M2NmQxOWQxMjdhMzMwZmEyMTE2YmQ2OGEzZjFlMzViY2ExYmZiIGxlZ2FjeS10cnVuaworNjAyNiBjZWU0YTZkODQxNWVjMWJhZjJhMmY5Y2I4YjgxMmM1MDhhMDgxNTQ1IGxlZ2FjeS10cnVuaworNjAyNyAwOThiODhkMjYwZDEyZmIwNjY2NzdkMDE1Nzk4ZDVmZjkyNzg0OGRkIGxlZ2FjeS10cnVuaworNjAyOCAxOGE5YzYyODA1NDNiNTIyOWI3NzFmNjY3NTk0YWEzNTExMmMxNzY3IGxlZ2FjeS10cnVuaworNjAyOSBiOGIxYjZiOTc0MzM4N2M0N2U0OGIzMzJkMDFhYWNiNTc0MmRmMzEzIGxlZ2FjeS10cnVuaworNjAzMCA5MTg5Mzg3MWJhMDc0MjM0NjYzMjUzN2Y0OTdjZTZjNjcxNDg1NDJjIGxlZ2FjeS10cnVuaworNjAzMSA1MjI3ODQxY2ZhMWZiNzA0ZTljMWRmODBkZDk1MzUxYWFhZjg1ZTFiIGxlZ2FjeS10cnVuaworNjAzMiAzNWIzNTM2ZmI3NjNiOWNmNTlhZWU4NzdmMmYxNjRjYjExM2M4NDNjIGxlZ2FjeS10cnVuaworNjAzMyA5MWMxMDgyMDY5ZDgxMzIyZDRiOGZkMTQ4MmYwNWU5MjU1ZjM1NzkzIGxlZ2FjeS10cnVuaworNjAzNCA0YzBhNWNhMzBmOTRhNjc0ZGY5N2FjZGE1YzU5MWNhODMwMWY2YmNiIGxlZ2FjeS10cnVuaworNjAzNSBhYTExMTJkNTY2NjgzYWZkYTc0Y2M4NDE5MmM5YThmZTYyZjJmOTRhIGxlZ2FjeS10cnVuaworNjAzNiA2ZjcxNWJmZjE3ZTQ4MjI5OTg3OTYyODE3Y2YzZjFlNGViZDdlYmFhIGxlZ2FjeS10cnVuaworNjAzNyA2ZGU0NGQ5NjYyOTI2NTlhZTk0Y2EwMWJiYWIzZjkzZDhhY2JmMTI5IGxlZ2FjeS10cnVuaworNjAzOCA5MjJjMDAxNjVmNzYxMmZhZDc3MTA2NGYxNGIwNTdlNjllYmI0NDUxIGxlZ2FjeS10cnVuaworNjAzOSA5NzdmZjFhY2UwNzAxZTk5MzEyNTc4MmQ5M2VlNTE3ZWVjZTdjNjI3IGxlZ2FjeS10cnVuaworNjA0MCBmNmIyMThjZWM2YmVmNjQ5Y2ZlY2M2ZDY3NDc3Y2IyOGU3ODcxZjk4IGxlZ2FjeS10cnVuaworNjA0MSA2YmUzNjVhNjczYjE0YzAzZjRkNThlYTFlODBlODZjYTFlZmVjMGEyIGxlZ2FjeS10cnVuaworNjA0MiA0YzdiYWI0Y2RjYTZlOGNjMmUwOTdkZGEzZmFjYzNiMGIzODJkNWE0IGxlZ2FjeS10cnVuaworNjA0MyAxZWMxNTQyNDE3NDc1N2YwYjU3ZTk4MDFjNmNhN2Y2YjE3YjAxZWNhIGxlZ2FjeS10cnVuaworNjA0NCBlMmIzYTY5NmQ2OWM3NTdjNWUzN2IwNzE2NzdiOTlmYmRmM2Y0YTZkIGxlZ2FjeS10cnVuaworNjA0NSA0ZWMxY2FjMzQyZGRjN2ZlMjQ1YTIyM2VjY2U3YTMyYWIxMzJhYTVkIGxlZ2FjeS10cnVuaworNjA0NiA2ZWM3ZGYyMDY5N2QwODY1ZThlNDQwZTljZWFiZjFmZDc3NTUwZTRmIGxlZ2FjeS10cnVuaworNjA0NyAyNjRkMTk2YmM0YzZkZThmZjg5OTYyZWE2NzNiMmE4ZDQ4YTQ1NGQyIGxlZ2FjeS10cnVuaworNjA0OCBmZDE2NjlmOGQ4NzQzYmE2NjE2Mjg0ZTViZTgyNjU5NGYwNjkxN2RhIGxlZ2FjeS10cnVuaworNjA0OSA4ZTY2Mzk0NWUxNzQ0NWM1OTI0OTdkY2I1Yzc3NWMyMWM1OWM4NThmIGxlZ2FjeS10cnVuaworNjA1MCBlYzhmNWI3NWRmNjRkYWNhZjMwMTZhZTk0ZGU4NTQxMTkyY2QxMTAwIGxlZ2FjeS10cnVuaworNjA1MSA2ZjQ1YmVlZDM4NzNmNzFjZGMwYjNlODk2NjBjYzEzZTJhNmI0Mzk4IGxlZ2FjeS10cnVuaworNjA1MiA2YWI0Y2JjZWRlYzIwM2I4Mjc4YTAyMjQwZjQ4ZjU2MjRhMmQ1MDUzIGxlZ2FjeS10cnVuaworNjA1MyA3MmFkMmYxZTk5MTlhZmVjMWNjN2JlYWI4ZDg5ODQxYWFmNTVhYjE2IGxlZ2FjeS10cnVuaworNjA1NCA0ZWQwOWEzYzMyMDE4ZTIxOWRhOWI3NjIxMTUzYmQ1ZjhjZjhmZDEyIGxlZ2FjeS10cnVuaworNjA1NSAzNmNjM2VlNTRmMjhiODgwMGVmM2ZjMTBmMjA1NTM1YzA1ZTRiODhjIGxlZ2FjeS10cnVuaworNjA1NiBiNWNjY2YxYzhmMzg2NmJlYWRjMzk0NjRiYjI3ZDZkMTMxNTY4ZTQzIGxlZ2FjeS10cnVuaworNjA1NyBkYWZjOGExMGIxODY4MDQ2MGRmN2UxOWQwZjIzNGExNjM0MjRhY2U0IGxlZ2FjeS10cnVuaworNjA1OCBiZDIwYzA0Mjc0ZmZhNmU2OWUxYzk0YTJjODIzOGI3MjU3ZDYxOGQ5IGxlZ2FjeS10cnVuaworNjA1OSA3MzY2NGVhMjAzMGUwYmZmZmJkZjBhMDY2MWE2ZWNmM2MwM2I5OGQzIGxlZ2FjeS10cnVuaworNjA2MCAxYzE4ZjkwNjM2ZmJiZTA4MTYxMjZhMWU2OGUwMTRlYjI3MzhhMWQyIGxlZ2FjeS10cnVuaworNjA2MSAyNDAzNjIwY2E5MzFhZWZjZWUwNzg5MmRkMjcyNjQwZGE5ZDNmNGQ2IGxlZ2FjeS10cnVuaworNjA2MiBkZTk4N2ZkNjdjOTQzNTAyZDViY2FlYmYyMTgzYzdiNmRjOWZhMDg5IGxlZ2FjeS10cnVuaworNjA2MyA1NjQ5MTIyNjcyOTBmNDQ5ZTFmMjRlZWM5N2IxYjQwZjI4YWIzYmM0IGxlZ2FjeS10cnVuaworNjA2NCA2MjkzNzIzMjA1YTZhODI5NGVlOTBhZTE0Mjk5ODUxYjY0OTMzNTA3IGxlZ2FjeS10cnVuaworNjA2NSA4ODAwZGYzNjZiMTMxZDJhMjY1MmUwMGIxOGU1NjJiNGRhNzdmZTBmIGxlZ2FjeS10cnVuaworNjA2NiBlMDc1OTczODlkNjRiYmZiNThiNjhjMzQ1NjE4NzFkMjUzNzZmZDgyIGxlZ2FjeS10cnVuaworNjA2NyA2YzkyNjBhZTBkMTYzNmE5NWQwMTBjMzZjMGI3NmIxZDg3MDJhYWVmIGxlZ2FjeS10cnVuaworNjA2OCA4NzM4YjBkZDc3ZmQ4NzAwOWNiZThjYTFlZjFkMTIwN2EwNWI1YjQ3IGxlZ2FjeS10cnVuaworNjA2OSA3YzU3MTFhNmE0NzU5N2Q5MzFiZTRlZTgzMjU0YTMyYzE2NTY3N2RiIGxlZ2FjeS10cnVuaworNjA3MCA1YTdhNzYxNjZlN2UzOTk4MTk0ZTEwMTIyMWMzOThlNTNiNDJkM2ZmIGxlZ2FjeS10cnVuaworNjA3MSA0MDQ5NmRiOGNmMWZjYzk4ZDYyOGU3OThiMDI2ZTBkMjJmNjg3Nzc2IGxlZ2FjeS10cnVuaworNjA3MiBkOTA2N2M1ZjUwYWRkNDllMzlhNDJlNGI4M2ZiMTcxZGFlMzlmZWJkIGxlZ2FjeS10cnVuaworNjA3MyBlYjZlZjdlY2EyMDdkMjk4OWI5OGIwYTcwMDdiMWY5YzU1ZDcwZTBhIGxlZ2FjeS10cnVuaworNjA3NCBhYTVmM2VjYmY1NmYzMmQ4ZmNjYjRjNzJkNmE1Mjk5ZjRkODljZjk2IGxlZ2FjeS10cnVuaworNjA3NSAxZDRmMmYyMGEyN2NjYjYxMDk2YTI1MWRkZjBkODkxNWNkZTk2OWJlIGxlZ2FjeS10cnVuaworNjA3NiBkZDc0YTA2MDA2ZTA0MDIxNzI2M2I4MDU3N2U4NDY4MmRkMzFkNGQzIGxlZ2FjeS10cnVuaworNjA3NyA4NTczZTY1ZmE5NDg0ZjI2YmIzZGFmYjdmNGY0NGY2NWE3YWM0OWYyIGxlZ2FjeS10cnVuaworNjA3OCAwYjBjNGVkMTkzNmFjMmQyODUyYzM5NTg3YjljZTY4Mzc4NjA0NThiIGxlZ2FjeS10cnVuaworNjA3OSBkMGE5N2FjMjVkYWI0NzM2NThhNDBkODY3ZGM3M2Q4YWQ2MTQ0M2JmIGxlZ2FjeS10cnVuaworNjA4MCA0NTNhOWY2ZTk2MTg5ZGU2OWI2MzNmZjczNWJiODQ4YTIwOWM1ZTEwIGxlZ2FjeS10cnVuaworNjA4MSA0ODY2YTBmYzJiYmQ0ZTY1NTM2NmZlNTg5OGFiZDU2ZjgwZjE4Y2Y5IGxlZ2FjeS10cnVuaworNjA4MiAyZjMxNGNhMGNkMzM4ZDZlYzQ2MThlNjQ4YzkxOGVlMGRjMWQwODBhIGxlZ2FjeS10cnVuaworNjA4MyAzMjMxNjVjYjFmYTVkNzRhZWZmOGFhN2ZjMzM1NGU0NzhkMzRmMGU3IGxlZ2FjeS10cnVuaworNjA4NCBmZGEzYzA5OGM4OTk1OGY1MjkzNjYzZjk1OTMwYTI1N2IwYzY4MWJjIGxlZ2FjeS10cnVuaworNjA4NSAwZTVhN2IyMjAxNmNkZWUwM2FiMjI0MTNlZTYwZjNhMTU1MDY2MDY5IGxlZ2FjeS10cnVuaworNjA4NiA2ZTczNTg0Y2Y1NzVlZWRhNzU2N2Y5NmEyNGUwOGU2YzFhMjRiMDlkIGxlZ2FjeS10cnVuaworNjA4NyBhM2M5N2UyMDU4NDc5MzQyYThkOTU1N2NkZWJmNmZkYjk0NTlkODg0IGxlZ2FjeS10cnVuaworNjA4OCBlZjc1OTY2OWFhMDQyNjI5MDMyNGViYjgzZDY1ZDE2NGRiNjZkYTEwIGxlZ2FjeS10cnVuaworNjA4OSAyOGMwZGYxY2UyODQ0OTgyMzQ0ODIzODhmNzE1MmQxNTNkNjhmMzA2IGxlZ2FjeS10cnVuaworNjA5MCBmMTU4ZWRjY2M3MmNjYjYzZmZlOGIxYTU5NTk2MDJmOWRkM2RlODA4IGxlZ2FjeS10cnVuaworNjA5MSBiNzVlZGMwZTYzMzNlZTYwYzU2MmQxYmE4MGQyNmMyZTY2NmY3M2NkIGxlZ2FjeS10cnVuaworNjA5MiBkNDFkODllYjQzZTUwY2Q5YmY4YjlmOTVmYzc5ZjAwYTIyZTkyZjlkIGxlZ2FjeS10cnVuaworNjA5MyA1YTk4YTRmZDU4Yjg0MjEwMTIxMmViODM4NTFmYjIyNjllMGQ2MDBhIGxlZ2FjeS10cnVuaworNjA5NCA5ZTQ2NjU3YmI5ZTg0NzljOGFjOTg2YzlkY2I5N2QwYzVhZTQyMzVhIGxlZ2FjeS10cnVuaworNjA5NSBiZDZlYWEyYjQxYWMzNjA3MGU0YWViZTI1ZTU5NTU2NjM3OWMxMmZiIGxlZ2FjeS10cnVuaworNjA5NiBkMTk1Yjg3MWU3MDQ0ZTE5ZDU5YmYxOWE2NTAyNmY3NGE3MjlmMjI4IGxlZ2FjeS10cnVuaworNjA5NyAzNDQwNzc3ZjBlNjU2YWNlM2VkMzgwNGJjMzY4NDEzYmQwNDM0NWQxIGxlZ2FjeS10cnVuaworNjA5OCBlNTRkMzkxMDcyNDk1NmYyYTA2ODkwY2U1YWQyZWU1YzA4YWRlZDllIGxlZ2FjeS10cnVuaworNjA5OSAyZWI3ZTllMjM2YmY1N2NmMDlkM2Q5OTAyZTI4MmM0YzBlOTU2NWRlIGxlZ2FjeS10cnVuaworNjEwMCA5ODUxMzQzNzU2NzIzNmQ4MmQ0YTg3YWM5YThmYmVlYTU0YzlhZTI0IGxlZ2FjeS10cnVuaworNjEwMSA0NDE2MWZiMDRiN2U4MzRiZmM3NzA5YmRkZDY5NzkxZDAxMzAyNmU2IGxlZ2FjeS10cnVuaworNjEwMiBhN2UzYmMyYTdjYWM0NzlkNDA4OTMzNDljZDRjMmYwYmEwM2ZhZTJhIGxlZ2FjeS10cnVuaworNjEwMyAzYWJjZjcyNWM1ZjQwOTc3NjI2NzNiMDJkOTI3YWQxZmE0M2ZhODM0IGxlZ2FjeS10cnVuaworNjEwNCA4OTQxNzg5NWQ5NjNjZWRjMjUwMWRhMjJkMjJlNTA1NWY3MThjMDRlIGxlZ2FjeS10cnVuaworNjEwNSA2NzY4YmJkMThlMDk5ODBhNzA3Yjk4NWI1ZTYyZGQwYjJiODkwNDVhIGxlZ2FjeS10cnVuaworNjEwNiA2YzAwODZmOTI3MGNmOTUxM2NjNDJiOWI4NTg1NzlkZGQ0OTRlN2MzIGxlZ2FjeS10cnVuaworNjEwNyBjMjgzYjdiYmRhMDk1MmIyNzJkN2I3YTg1OWEwZDk1ZWU1YTY3OTlmIGxlZ2FjeS10cnVuaworNjEwOCA3MDE4MzU5MjM3MGU3NGVhNjNmZWQ2MzE0ZDUwNzQzYTQzNWNhMmVhIGxlZ2FjeS10cnVuaworNjEwOSA4ZDUwYTk2Zjg2ODBlYTgxMWU1MDIwMGJhNTQwYTY2Njk3MTRmMTk4IGxlZ2FjeS10cnVuaworNjExMCBlNGZhYWRiNGFiZTJlZGI0ZTE4MWRjMzk3NTZhZWM3Yjk2NzU4OTJiIGxlZ2FjeS10cnVuaworNjExMSBkMDQ5NzVkYjUyZGNmM2I0NzAyOGVkODIyYTM3OGZmY2Q3YmUxYjNiIGxlZ2FjeS10cnVuaworNjExMiAwZDE0NjNhNDViNmY1NWM2ODU3NzAwZTY2MmRlZWQzOGJiOGU1ZDg0IGxlZ2FjeS10cnVuaworNjExMyAwMTdkMzM1NmE1ZWQwNDMwZmQxMzU5NWExYjA3YjZlOTRkMDcxNDZhIGxlZ2FjeS10cnVuaworNjExNCA0OWVlODllMDE3YWJlNTI2YzYwZjNiMmVjOWI3OTM3NWU0NjcyMGI3IGxlZ2FjeS10cnVuaworNjExNSA1NjRmYTZmMTg1YTdkN2NkNmZlNjdjMzYyZTFiNTNkMWU3NDAyNTMzIGxlZ2FjeS10cnVuaworNjExNiAxNmNhOGYwZjNmMTEyNDAxYTBmYzY1ZjM2NmYyNzAyOGJmMzhiNGI1IGxlZ2FjeS10cnVuaworNjExNyBhOWZiNWE4OTVmYTFjMzJlNmZiYWFhYmM1ZjZkNDBiZjA2ODI2NTNkIGxlZ2FjeS10cnVuaworNjExOCA2M2NkZmJiNGEyYmI5OWM0MTM2YjI5NDM4NGFkOGQ3YjhiZWYwMjliIGxlZ2FjeS10cnVuaworNjExOSA1ZDZmZTE0NWY3NzNhMjE0YWFjMjM4ZjFlZmJlMTc0MjFkM2YzODliIGxlZ2FjeS10cnVuaworNjEyMCAwNjAyZGIxZDFkZmY3YTVmN2U1YzdhZWRlZjUxNTY4YWU3MDIzZWMyIGxlZ2FjeS10cnVuaworNjEyMSA3MjhhMzlhM2UwZDU1MDg0ZTVhYmJjYzNmM2Y4N2U3ZTIzMTczNWU4IGxlZ2FjeS10cnVuaworNjEyMiA1MzA5Y2VmOGMxNjkyY2MyNWY1ZTYxMDQ4OWQxZjMwYmFhYWYwYTQ1IGxlZ2FjeS10cnVuaworNjEyNCA2NmVlYWI1YTc1OGM2NzMyZjIyNDY3MGQxMjVmMTg2Y2ZiNjdiMzhlIGxlZ2FjeS10cnVuaworNjEyNSBmODlmYTdlOTViODQwOTVmNDJhMTgyODU0ZDM0YTFmMWM2YzQzOGFlIGxlZ2FjeS10cnVuaworNjEyNiBhZGU5Zjk5NjU5MGE1ZTc4ZjVhOGJiMDc5MmYwNzAzNTk5NTA0YjVhIGxlZ2FjeS10cnVuaworNjEyNyA5YWMxZTBkNTY2NzQxM2NmZDdlNjg5OTgwYTU4YmZiYjA5MGM2YTZlIGxlZ2FjeS10cnVuaworNjEyOSAzNWJlNWRmNmVmNzcyMmI4ZjUwYTIzNWViMWYyY2Y2MTkxMWM3NzU1IGxlZ2FjeS10cnVuaworNjEzMCA4MjViZDhjMTFiMWMxYWM1YzQ5NmJjN2FjZmMyZDlmOGM0NmFkYTY5IGxlZ2FjeS10cnVuaworNjEzMSAwNThkODFkMWQ1NmQ5MzI2ZTM3N2RlNTMwMGY1MDk2MDY3MGRlMjY2IGxlZ2FjeS10cnVuaworNjEzMiBiZDZkMDI4ZDk4ZmNlZjQyNDUyNWIzMjQzNzI2MGQ1MzJkZDk5M2RmIGxlZ2FjeS10cnVuaworNjEzMyAzOTk0NzBhOTU4YzIyZDk3Y2NiODYzZTY3OTRjM2Y4OTdlODVkNzhjIGxlZ2FjeS10cnVuaworNjEzNCAwNzE2NGQzMDQyOWRjNmRkMDczNjJlYzIwYmMyYTkxZjI1ZGRjYjUzIGxlZ2FjeS10cnVuaworNjEzNSBhZDAzZTIxZmRhNTRiY2E1YzEyZWU3NzhmOGQ3YjgxODAyNThhZDkyIGxlZ2FjeS10cnVuaworNjEzNiA1MTg4Mzc0Mzc3YWU5OTYyNWZkMjViZWFlNDVjZDY3ODQ1MzZhZTJlIGxlZ2FjeS10cnVuaworNjEzNyA1NTZlYzgyZjRkOTM5ZTE1ZjJjNmJkNTI5NTc3NGJkZDgyNzlkYTJlIGxlZ2FjeS10cnVuaworNjEzOCBlYWJiYjNjMTgxOGZlNDI5NjJiMWMxNWE5OGE2OWNkMDg2YTgzYTg3IGxlZ2FjeS10cnVuaworNjEzOSBhYjkyNDgwZmE0ZWNiM2M5YjMwZDM0MzU1NTE4Zjc3NzhiYmIyOWJiIGxlZ2FjeS10cnVuaworNjE0MCAxZDEzNGVjZGEwOTRlZTE3N2M4MGJmYzdkMTAxNGFjMzg3NGMxNDQ1IGxlZ2FjeS10cnVuaworNjE0MSAxNjQxM2VlNTg5Njc3NDU2ODQ3NTE0OTdhM2NmZWJhMGFkMGM1MzdkIGxlZ2FjeS10cnVuaworNjE0MiA5YThhNDBmMjIxOGM5Y2IyNjI2NTg4ZTFmYzE1ODUwYWQ5ZjY0NTQ4IGxlZ2FjeS10cnVuaworNjE0MyBjZWMyN2M5M2I1Y2I4MzRjMTAxNzM3ZGQ1MTNlNjA4MTRhYWNmY2U4IGxlZ2FjeS10cnVuaworNjE0NCBmNmFjZTYxYzNkZmU2NGVhMzdlZjk4MGFlZTAwMWViMzQ5NDBkMmM3IGxlZ2FjeS10cnVuaworNjE0NSAzZWFmMmM2NzNhMTFhNzg4ZmI2MjQ0YWYyMjIzYjNjYmUyYmQxMDgyIGxlZ2FjeS10cnVuaworNjE0NiBkNjE3ZGUxNTc3NGIyZTdiNzVhMmI3NjQ3YWVhN2M5MDYwYWFjMjEzIGxlZ2FjeS10cnVuaworNjE0NyA3NDc2NGIzZWMxYmRiNzRhNWU2NTkyNzU2MjQ2ZjlhZjdkZmFhZGYzIGxlZ2FjeS10cnVuaworNjE0OCBiMDUzMTU4MTY1Nzk4MzA0NTJjMDRlMjlkOWEyZDM3ZjIzODRmNmUxIGxlZ2FjeS10cnVuaworNjE0OSBiZGRiYWE1MWFhNWE5MzMxOGFmZWI5MmRhYjJlNGU2M2FlNWVkN2Y0IGxlZ2FjeS10cnVuaworNjE1MCBiODk4MDczNWQwM2IzZTE0MDkzOGE2NDI0NjNmYTk0NDNkNzNkOGZlIGxlZ2FjeS10cnVuaworNjE1MSA4NzIxZmFmZGI2N2FhOWI1YTkyMmQyM2NmODdjOGYyMzJlZmMwNWQ4IGxlZ2FjeS10cnVuaworNjE1MiBhNTI3ZjQ0OWNhMjY2NjFmNWQyOTBkMzY3ZDEwMzI3NmFhZDM5MmFlIGxlZ2FjeS10cnVuaworNjE1MyA5NDY2ZWFiYjY2OWE2Y2YyNjZmZWM2NTVjMWM3MjZkNzNlMDI2OGE3IGxlZ2FjeS10cnVuaworNjE1NCBlYzM5MjY0MzExZmYyNDE0ZmFlMDFhZWQ3NDc5MjZjOTEwYjkwYjdmIGxlZ2FjeS10cnVuaworNjE1NSA2MDZjMzg1MzVmMzA0NTEzNDdkMTk0NjY5MGZhZWJmZTZlMTdmYjhhIGxlZ2FjeS10cnVuaworNjE1NiBhMTM2MmEwNjMxMjI1MjJmY2NjMTg4MDFkNzY1MzY4NmUwMjE0MzczIGxlZ2FjeS10cnVuaworNjE1NyBiZGJkYTkzOWI5OTk4ZjhhZThiNmQ1MWU1NTNiY2IxMzZiYTdiNWI2IGxlZ2FjeS10cnVuaworNjE1OCBkOGY5ZGZjNzZiYmZjOGRmOTZmZjFhZDhhYjZjZDc0YzhhZWY5ZmNlIGxlZ2FjeS10cnVuaworNjE1OSBhNzliOGQ4MTk5N2ZlYWFkOWNlZDJjMTRiNGIwOTNiOTBkMmJiNjY3IGxlZ2FjeS10cnVuaworNjE2MCA2ZGZkNzk5NDQ4NzJmYzAzYzU0OTc0OTNiYTliMTA5MjZkOWViYzAzIGxlZ2FjeS10cnVuaworNjE2MSA0YTA3ZmUxZTBiNTAzY2I1YmNhYzQ4ZDY2NzY4ZjQyNjNhNGFkMzBhIGxlZ2FjeS10cnVuaworNjE2MiBiNWQxNzQxZGVkNGE1YTQ4ZWFmMDhhMDViY2FhNmQ1YWNhMzMxNjhlIGxlZ2FjeS10cnVuaworNjE2MyA4ZGMxZTc0YzE2OTU2ZWIyMDBlYzY4M2FhZjVkODg5MTRhYTVjN2ZlIGxlZ2FjeS10cnVuaworNjE2NCA4MThlZTExNTA1NGEzYjljZTk2MDEyMmMxMTdhODFhMTVhMDc1MTdiIGxlZ2FjeS10cnVuaworNjE2NSA1ODFmMDczZjA3MWQ3ZDc3MGY0NzJmNzE5Y2JiNTAyYzM0ZmEzMDIyIGxlZ2FjeS10cnVuaworNjE2NiAxNDU0MTM4YzZmMmQ0MGM1YTBiNTYwNjhkYThiZmQ3MDZlZjA0MDYxIGxlZ2FjeS10cnVuaworNjE2NyA2NzM5MGMxZGFlYmVkZGNlZWNmNDFjZGYxMWI0NWNjMDkzMTgwY2E2IGxlZ2FjeS10cnVuaworNjE2OCA4MWY1MzVjYTFkOThjZDQ2YTY5NTg5YTY1ZmUwZDJmZDdhYzJkYjNmIGxlZ2FjeS10cnVuaworNjE2OSA5N2IxYzJhNzBlYWUxMWZiN2NkNDM5OWMwZTlkMmVjYmViODc0ZWU4IGxlZ2FjeS10cnVuaworNjE3MCBlMjNhZmJmNzdlZmRmOTU0YjNmOWNiYWY5YjFhZDY1ZmY5YWM5OTgwIGxlZ2FjeS10cnVuaworNjE3MSA5MzEwODZjYjg1Mjk1MDMzN2E4ODY3OTVmZWUxOGY1NmMwMjRjN2JlIGxlZ2FjeS10cnVuaworNjE3MiBmMDRiZWI4MGY4MTY3N2FmMGZkZjYxOGQ0YTY3YTNiNTNlMjRlNDMxIGxlZ2FjeS10cnVuaworNjE3MyAzNDA4NzU2ZWM2MDE4OTAxN2QxNDZkMGVkZGI2ZjI0NzRhZTlmMzRkIGxlZ2FjeS10cnVuaworNjE3NCBmZjdmYTU5ZjYyZTg5MzRhYjdiODQ1NzRjYjdkMWU0MzRjNjRjZDJlIGxlZ2FjeS10cnVuaworNjE3NSAxNzAzMDUxNWY2MjMyNzU0ZDM1MTEyYTU5ZDhjZjIzMGZkY2IxNTEyIGxlZ2FjeS10cnVuaworNjE3NiBjODY3YzI5NGIxNmMwODNhYTk2NjdlZDE4MTllNjIyODdmMDRiNDkzIGxlZ2FjeS10cnVuaworNjE3NyBkYjU3NzA5NGY2ODUzZTE1NzUzYmU5Y2JkNGIwMTY2YTM2YjkwYTI0IGxlZ2FjeS10cnVuaworNjE3OCAwZTk3OTUwMDRjZDI2NzZmY2QxOGVkMzY3NTVmMTRhODRmMTQzZTBhIGxlZ2FjeS10cnVuaworNjE3OSAwZjZmMGU5OGUzYjY0YjRlNTM4MWZmZTBiNjk2MGUxZDQ5YzdjZjcxIGxlZ2FjeS10cnVuaworNjE4MCBkYWQ0ZDQzMzYzZDhmZTFmYmI4ODgwMDU2MTY3MDBmOTBhOWQ4YTI4IGxlZ2FjeS10cnVuaworNjE4MSA3ODc3ZGVmOTQwNjNkNDcxNDljZmY1YjlhMzBlOWZjMTRlYTRlOGJhIGxlZ2FjeS10cnVuaworNjE4MiBjMDQ1MzFmYzI3MDk2OTM5YzMxNDQ4ZWVhYjRmY2I1Yzg2OTY3ZDJhIGxlZ2FjeS10cnVuaworNjE4MyA4ZTQ3OThkMjE5MTVlZmNhYjNjYWM4N2FlNGJkNTk0ZDhkNDhlODE5IGxlZ2FjeS10cnVuaworNjE4NCBhZGM4NjcwN2ZhOTYzODk5YjU5ZTI5Mjk3ZTJmNGMzZWM3NzE4YTUxIGxlZ2FjeS10cnVuaworNjE4NSBjMTIwYTQ4M2Q1OTA5OGQ2NjkxZmNhNTM1NDVjMmY4MWY3OTQ2MjAxIGxlZ2FjeS10cnVuaworNjE4NiA1YzI1OGVmZmU4MWM0ZDk1YmM2MDQ0ZjY2YTYwZTEzYTAxZjc3MTczIGxlZ2FjeS10cnVuaworNjE4NyBkZTUyNzk0MDJiOTQzOGNkZjY0MzNjMzczMzgxNjE3YWRhN2Q0NTAyIGxlZ2FjeS10cnVuaworNjE4OCA1MDEyMTkxZWMyZGFiMTRiYmViNDc4ODg3ODE4MDU4Y2FjZjFmMzUyIGxlZ2FjeS10cnVuaworNjE4OSA5ZTU0NGEyYzE5YTJkYTcwODkwOTc0YjZiMTIxM2Q0ODhhNjhkNTZkIGxlZ2FjeS10cnVuaworNjE5MCA3NmU1ZjM1OThlNjliNGEyOTkxOTE4NTM1ZjE0ODBjNWIzYTZmZmRhIGxlZ2FjeS10cnVuaworNjE5MSBiMzQxZGVmNGVlZjhjYmM2MmEwNzM1NjQyNzg5NTY5NDQ4MDRjZDEzIGxlZ2FjeS10cnVuaworNjE5MiAzMjJmNjFlNGMzODc1YWE0ODE1NjcxNjBjM2I4ODM1MzI2YTkwZTE0IGxlZ2FjeS10cnVuaworNjE5MyBiMmIwNjNhYTI3NTUxMGQ2YmNjNDg0OTcxYjUwMGYzZjY4ZjRjOThjIGxlZ2FjeS10cnVuaworNjE5NCA0M2EzN2U2YjY0NjlhNGQyMWFiMGZjM2MyNjVjMDU3M2QyMzVlOTk2IGxlZ2FjeS10cnVuaworNjE5NSAyNjQ0MmI1ZjljZmQ4NDdiNjNiZTI3ODFkNGZiM2NjYjQwOWJiY2NhIGxlZ2FjeS10cnVuaworNjE5NiAwZmY1YmQ4ZWJiMDFhNjBiNzE5YTc2NjNhMDljNzE4OGU0YzJlZmI1IGxlZ2FjeS10cnVuaworNjE5NyA2NTc3OTBkYjA2ZTNjNTk0NWQ5ZTdhZDljZmMxY2JlYzFmNjVkMjg3IGxlZ2FjeS10cnVuaworNjE5OCBhMTBhMGY2MDE0YzQ5YTVmYmQxYTRjMzQzOTVlMjg4MmY4NTVmZjVkIGxlZ2FjeS10cnVuaworNjE5OSA2ZjNjN2IyZjJiOGRlODI4YjI2NjgyZDM5OTVmM2ZiYTI3ODBmOWQ1IGxlZ2FjeS10cnVuaworNjIwMCAwNjg1NTYzODBjYjA4NjFjNWY4YzAyNDQzMGRhMTYxN2RjODBmZWVhIGxlZ2FjeS10cnVuaworNjIwMSBiYTg0ZDdlODU1NGI1ZWNkNGZjZDY5ZDU3Njk3NjRiNmVhZDMzZjBiIGxlZ2FjeS10cnVuaworNjIwMiBkZTFjYjMzMjE5ZTMxMThhM2Y5ZWEyMDkyMWVhMTgxYTY5ZTc3ZTU3IGxlZ2FjeS10cnVuaworNjIwMyA1MjNmNDlhMWU0MmE1NzA5ODg4MjVmYWFmNmQ2OTY1ZGI5NDFiZjAwIGxlZ2FjeS10cnVuaworNjIwNCBiMjUwYjI3MGRiZDRkMGViMDQwMTM1ZGU2NjhjOGVmYTM2NmZiYjE3IGxlZ2FjeS10cnVuaworNjIwNSAwNGMwNzUzOGNhYzRkYjc3MmNkMTYxMjc5NWMyMzc2NDZiOWE4OWE3IGxlZ2FjeS10cnVuaworNjIwNiA0NjkyY2I0NjAwOGVlMGM5ZTkzM2Y2ZDY4NzhhYTQwNWMzYmU4Zjc1IGxlZ2FjeS10cnVuaworNjIwNyA2YzljMmFjMTVlNGIwMTdmNzQ4NmJiYmQ4YzExN2I0ZDBjMjMxMzc0IGxlZ2FjeS10cnVuaworNjIwOCA2YjFiNjY0ODYzZjQwOTQwMjVlN2UwYjVkYWUwYzU0Y2Q1YjM3YWZhIGxlZ2FjeS10cnVuaworNjIwOSBjZTc0YmJhOGE2YTZkMThiY2U3N2NlNmJjNzI0MWM3OTkyNzQ3YmNkIGxlZ2FjeS10cnVuaworNjIxMCA3OTUyNDgyOWE3MzA2NjZkY2IxYjQ4NDQyMTI1MTRiYTUyM2Y5MjRhIGxlZ2FjeS10cnVuaworNjIxMSBlNDgwN2EwYzEwOTJkZTJlY2Q0MDY4NTU5N2E0Mjg5YzZhMjYzNjg4IGxlZ2FjeS10cnVuaworNjIxMiBlZjU5YjRkMDAxMzQ5MDdhZDM5Mjg2ZDllNDg2NTM2YWM5YjA0MmI5IGxlZ2FjeS10cnVuaworNjIxMiA0ZmM4NWM4MmNjMjIyNTU0YWU2YjljMGI4Nzc3NmVkNWYyYjcwYzZlIGxlZ2FjeS10cnVuaworNjIxNCBiMjA3ODc2ZGYyOWFjYWMwNzIyMWFhMjYwNGUwZWMwMTc4YWM0MmNlIGxlZ2FjeS10cnVuaworNjIxNSBmZmRmMWYwNmNmOGI1YzM2M2Y5YzU0NzYzNzlmZjVmOTVmN2U0YmY5IGxlZ2FjeS10cnVuaworNjIxNiA2MDgwYjJlYmMxZjE0YTVjNDVjMjEwNzY2MGE3NWRhY2FkOTEyODU5IGxlZ2FjeS10cnVuaworNjIxNyA3NTA0ODg0ZThhNzRmYzYwN2E4ODZhMjFlZjUyNmZhMmQ1NDQ3NTUyIGxlZ2FjeS10cnVuaworNjIxOSBhYzcwMThiNTc3NDU2Y2ViYjExNmE3NTBmZTIyY2U2NGI5ZGU3MzBiIGxlZ2FjeS10cnVuaworNjIyMCA1NmQzMzUwY2ExZjE3MmQ2MmVkZjkzMWI1MzJiMzBiMTExNWM5NjcxIGxlZ2FjeS10cnVuaworNjIyMSAxMWUwM2Q3YTcyOTgwNWRmZWVmNzQ0YTU1YzUwZTkzMzU3YmI0MDg5IGxlZ2FjeS10cnVuaworNjIyMiBhMjI0MzhlOTRmZTk3NGI1MTkxMzQ4M2E1MjUyOWEzMTUyYzE1ZTdmIGxlZ2FjeS10cnVuaworNjIyMyAyZGI2MzYzNDU5Y2FmMWQ2OWRlMmE4YmFhYzE2ZmQwMzVjMTQxOTQwIGxlZ2FjeS10cnVuaworNjIyNCAzNTM3YzA4YzFlZmZiYWI0NDcyMzZiOGMxMmFjM2YzMjg2OThkNzFhIGxlZ2FjeS10cnVuaworNjIyNSA5N2QyMjc4YTMzMWI5NDVkNDEzMWJlMzNkNTkyODBlYzZhZDBmYmYwIGxlZ2FjeS10cnVuaworNjIyNiBkMjNmZWEyNDhhMWVjMjViMWNjMTc3ZWI1ZGY0ODU2YzE0ZWViMWE4IGxlZ2FjeS10cnVuaworNjIyNyA2NTk4YTUxODY2OGY3N2FmMjU4YWJhNWFmMjdkOWNkNzMwMWZhOWY2IGxlZ2FjeS10cnVuaworNjIyOCA4MmJiN2QyYTZiMzFlNmY1MGVmNDQ0OWVmNzBmMTdhYjM5ODk1NzUwIGxlZ2FjeS10cnVuaworNjIyOSAxNWIxYjAzYWRlOTNkNzJjZGU1MDE3NTBiNGUzYzFiNmUxNzk3ZmMzIGxlZ2FjeS10cnVuaworNjIzMCBiOTE2ZDYxNGUzNjM0Njg1YWU2NTVkNWI4NjJiY2NhZDYwNzQ4YTg2IGxlZ2FjeS10cnVuaworNjIzMSA1Njc0NmVlZGZlMDM3ODk3NGI4YzM0MDNiNWUzYTgxYzI5ODQ0NjRkIGxlZ2FjeS10cnVuaworNjIzMiBiZjhjMjMwZGY1ZThkZDMyMGUyYzE0ZmY0NDU1MmIwZGUyOTQwZjVjIGxlZ2FjeS10cnVuaworNjIzMyBlNjAzNjAxYzY4Y2Y0NDY4ZTUzZjA2NjUzMzJiM2Y4NTFhZjRhY2JjIGxlZ2FjeS10cnVuaworNjIzNCBjNTdiMzhlNDBiMmRhNTBjNzVlY2VhYTI1MmQ3OGQ3ZDU2MGUwODY1IGxlZ2FjeS10cnVuaworNjIzNSBiYjRjYzNmYTYwMDBiMDliZGFmN2MzOGRjZTY5ZjVmNWUwMGQ2OGMxIGxlZ2FjeS10cnVuaworNjIzNiAyOWZlNmEwZGUzNjYzYjhkNDVjMmM3NDkzZWI1YjQ4NDBhY2Y4NGZmIGxlZ2FjeS10cnVuaworNjIzNyBkYjU0ODhmZTQ5NWIyYTAwNTkzYmI5MTMwOTVmODk0MTM5YTVlZjNiIGxlZ2FjeS10cnVuaworNjIzOCA1MTY0OTBjODE5MmNkZmIwMTZmYTE4NWI5MjdjMjA4YjcwZmRkNjg4IGxlZ2FjeS10cnVuaworNjIzOSA0YjVkZWY0MDc3M2NlYWZhNTc1ZmNlNWIyMDhhZWUzM2IwYzc4ZGIwIGxlZ2FjeS10cnVuaworNjI0MCBkMWFlMGVhOWE1ODVmOTEyZDdhYTNkMDA0ZmY4MTdkMGRlYTExMmY4IGxlZ2FjeS10cnVuaworNjI0MSAyYjgxMGEzYzdlNDE0Y2E0MmU2Yzg5YjRhMTM3YjRjYmQwZTQ2ZWMyIGxlZ2FjeS10cnVuaworNjI0MiA3Y2RjMGM3MTQ2ZDUwYWMyMTk3M2Y1MDYwZDhjZWM2NzFkYjg5MThmIGxlZ2FjeS10cnVuaworNjI0MyBkMDk4ODMxOGI3NTY4YzZhNTNlYmRiZTJmY2Q3OWI4NzFlZGM0MzZlIGxlZ2FjeS10cnVuaworNjI0NCBjOGQwZjc4MjIxY2MzNmU4MTc4NmQ2NDc1MDk4OWU4N2FmMGM0NzBiIGxlZ2FjeS10cnVuaworNjI0NSA2ZTQwYTJhM2U2ZWYwYzRhMzk4NjMzNjA5YTI0MTNlYTA2ZjhlMzQ1IGxlZ2FjeS10cnVuaworNjI0NiA0Yzc4ZDczYzU2Njc1NzIzY2I3NzNmMjNkMGEyYWNmNDI2YjVjYzIwIGxlZ2FjeS10cnVuaworNjI0NyBhYjExMGIxZTkyZmZhMTgyZWFjNGQ2OTNlMDI3ZTQzNGNiM2I2OGRiIGxlZ2FjeS10cnVuaworNjI0OCBlY2NmYWRhNDdmMjg1YWI0YTliZmFhNTQ1ZWU0YjIxZWNkNzdhZGRlIGxlZ2FjeS10cnVuaworNjI0OSBmMzVkZGU3ZjQxNDNlNWY2MTBiYWNlZDk2Y2EyMGYzOTljMzAwMjEzIGxlZ2FjeS10cnVuaworNjI1MCBmOTkwN2Y1NzMyN2VjNTc2MzhkN2E5MjAxZWE0N2EzY2RjYzdiNjg5IGxlZ2FjeS10cnVuaworNjI1MSAxMGI1MDYxZjZjYmNmODU0YzdlODFhNTJkYzQ5MDk0ZDA5YTIzZTM3IGxlZ2FjeS10cnVuaworNjI1MiBhYzExNGE1ZmM4ZmY4NDZlNzk4MjE4MzgzY2Y0YmI0MWFmN2M2NmRhIGxlZ2FjeS10cnVuaworNjI1MyAyN2MzNzc1NzVmNGFjNGRkOWY0ZmIyYjA4YWE5OTgwNmI0MWM1NGI3IGxlZ2FjeS10cnVuaworNjI1NCAzZWIxNjk0ZWRjZTZiMDQyOWRjNWNlODVmOThhYTBhNjhkNjM3NzQxIGxlZ2FjeS10cnVuaworNjI1NSBhNjIwM2QxNzE1OGJhNTJlMGZkMzNkOGMyOGIxYzQ1OWZhZmY1YzM0IGxlZ2FjeS10cnVuaworNjI1NiBiNDEwMTk1NTdiNmU3Y2ZmODhmMmFlMDg4ODE2ZDgxY2U4YzMxOThlIGxlZ2FjeS10cnVuaworNjI1NyAwZDc0MDExMzEwY2QxYjViZWFjZGNhZWE4Mjg0OWRkYTQxZDJjZDc1IGxlZ2FjeS10cnVuaworNjI1OCA3MThjOGFmN2JlMmE5ZmNlOTIxN2I1ZWJmMjQ2MmVjNDkyMzA3OGZlIGxlZ2FjeS10cnVuaworNjI1OSA3NzY2MzYwYjg1Yjg5MWVhOWRiNzg1ZWRmZWI4NWIzZGM4N2FmYmEzIGxlZ2FjeS10cnVuaworNjI2MCBiNjUzNjhlZDg2YmU4OWQxN2ZiOWIxYTk1ODlhZGNiYmU2NTczYzQ1IGxlZ2FjeS10cnVuaworNjI2MSA0Njg4MzdhZDQ1ZjM4MjNhYzg5MjA4NDg5ODRhNTFlOTU2YWY4MTg4IGxlZ2FjeS10cnVuaworNjI2MiA3ZTY1MzY3MzBkMGVlZWQyYmI4OWRlMjkxNGNmNTE2MTgxNjA2NWM3IGxlZ2FjeS10cnVuaworNjI2MyAyZjU3MzkyYjJmZGUxMjliYzZlMzA5OTQ2NzE2NDMyNzI5YzM4MzBiIGxlZ2FjeS10cnVuaworNjI2NCBlOWVlNGM5MDVhYmQyOGY3MmU4NzJlZGZjYjU5YTE4YjkxMWQ2ZWNlIGxlZ2FjeS10cnVuaworNjI2NSBjYTAyZDkyNzgxODAxMWI3ZjA5NjhlMjgxNzY0Zjk0NWE1ODliYTk4IGxlZ2FjeS10cnVuaworNjI2NiBkMWM0N2Y0ZjE1NDE1MDIzZjk2OTBmYWYzN2I0ZWMyOWQ5NjczYTk3IGxlZ2FjeS10cnVuaworNjI2NyAxZjIwZjUxYjcwMGU0NWI4YzM2NTJhYjI2ZmZmNThjYTkyNjVkZGEyIGxlZ2FjeS10cnVuaworNjI2OCBlYzY5NjNjMzc0MWMxNjc0MDcyNjZmY2Y1NTQ4Y2M0NjcwMmRlNWU4IGxlZ2FjeS10cnVuaworNjI2OSA1MWE3YzhmZTdjN2IyOTI2ZDhhYzA0ZjE4NzhjMGVhYzZiNjk5ODcwIGxlZ2FjeS10cnVuaworNjI3MCBhODE2YWJlODZmOTA0NGQ3YWM2NWFhZDNjMGY3MDdhZGMwNzU0ZjgyIGxlZ2FjeS10cnVuaworNjI3MSAyZjI3NTAxZGIzYzNlNDI3ZTExMzZiOTVhOTYyYTcyN2MwZTFjNjVhIGxlZ2FjeS10cnVuaworNjI3MiBhY2YzNWVkMGYwMjY0NzUxZWFkMDEzNzVkMzQ1ZTg4MTQ1Mjg3NDhmIGxlZ2FjeS10cnVuaworNjI3MyA4NDMxMjFhMjI2Y2E5NDYxYjg2ZGVmNmI1YzJhMTRiNzEwOGUzN2IwIGxlZ2FjeS10cnVuaworNjI3NCA0OGU4NTlmMzI4Y2JjMDExZjZjNzZlYTRlYWI1MjlmYjU3NWQ4MmFhIGxlZ2FjeS10cnVuaworNjI3NSAyZWFhMDA4NjBlZGM0NjBiMmM5OTI1NzllZWVhNzk2ZDU3ZTljOGY1IGxlZ2FjeS10cnVuaworNjI3NiA0ODc3NmJmNGJkNDkzYzZjMzExNzNiNTAyNWY3ZDVhOTY0ODkzOGIyIGxlZ2FjeS10cnVuaworNjI3NyA0ZjczOTYyYWFiYTZiYWM4NjQ3ODViMmUyMDY5NzZhYmE3Y2U4NTYwIGxlZ2FjeS10cnVuaworNjI3OCA5Mzg2OGM3YTE1YzkwYmVlYjg5NDQxOTg2MjMzYWJlNmZkYjY4NGEzIGxlZ2FjeS10cnVuaworNjI3OSA0MjZlNzk2ZjYxMTUyMTc5ZWE0ZGI5ZThhMTZkYzA3YjE2ZDJmNTBmIGxlZ2FjeS10cnVuaworNjI4MCAxN2EyODkxZTYyN2ZiODllNTIzZjcxMmZlNjUxZGYxMDBjMmM5OWRmIGxlZ2FjeS10cnVuaworNjI4MSBiZjNmODA5NDFlYzExYzhhMzcxYzU4M2ZjMzQ5YmEwZWU2YzkzZDY1IGxlZ2FjeS10cnVuaworNjI4MiAyZGJkNTA4MWM3MWU3YmZiYTA1NjBlOGRhZmY0MWY5NjhkYzVkNjZiIGxlZ2FjeS10cnVuaworNjI4MyBiOWEwNDM0ZDJjYjZmMTIwMmQ2NGY0NjQ4OTMyY2NhNDdlY2YwMmJmIGxlZ2FjeS10cnVuaworNjI4NCA2ZDMyNGZiYWZhZGMyZjlhMzY1OTMyYTkyNzMzMjA2YzE3ZDYzOTZjIGxlZ2FjeS10cnVuaworNjI4NSBjYTM2ZTMwOGUzM2Q5ZGUyNzNmMWE2OTc3OTZkNDlhMjJlZTdkNjBiIGxlZ2FjeS10cnVuaworNjI4NiAzMWUxMDBkOWQ5MjljOGIwZDhiYWE3NjE2MTRjZGVkMTVhYWE3MDRhIGxlZ2FjeS10cnVuaworNjI4NyBjYzkyZmEyY2Q4NmJkOGVlNmRmNzY2ZDg0YTI0YzI2ZjkzOTE1ZjJlIGxlZ2FjeS10cnVuaworNjI4OCA4OWQ0ZjVkZWQ2NzAzNzc2MDk5OTdlZWUxYjNmM2IzMzM2NDU3Y2JlIGxlZ2FjeS10cnVuaworNjI4OSBmMzI2NzZhYjNmM2EwNjExZDE3MWY4NDk5MGZhZjRkOTZlNTk3ZDM3IGxlZ2FjeS10cnVuaworNjI5MCAzYzVjYTc3Mjc5ODgzYTQzMTJlNjcwNTkyMjQ2OGQ5MjcyMWQ3NjgwIGxlZ2FjeS10cnVuaworNjI5MSA1YjZhNzkxYWM2ZTdkZTRlYWRhMjQ5Yzg4MGNiOTA0OTkyZTM4ZjA3IGxlZ2FjeS10cnVuaworNjI5MiBmN2YzZTRiNTY5M2MxNGJlZDM5ZGVmNjNlNmJiZGJmOWMxNTFjNWNkIGxlZ2FjeS10cnVuaworNjI5MyAyNDBmODM0YWVlOGJiYjQ4NDU4MzM5NDM0NmE5NTU4NzIyNGZhMjMwIGxlZ2FjeS10cnVuaworNjI5NCBkYjRlYTNhYmY4OTEyYzQ3MjA5NTAzZTljNzIwNTYzYzI4MTVjZjM1IGxlZ2FjeS10cnVuaworNjI5NSA5YWFjMzc4OTJlODg4ZmVkODQ4YmExZGFkNGI2N2FhNGI2OWYzMjQ0IGxlZ2FjeS10cnVuaworNjI5NiA4MjBhYmExMDQ2YzM5YWZkZjM5MTY5ZjIwZjczMDAzNDk5YTdmOGIyIGxlZ2FjeS10cnVuaworNjI5NyBjM2VjNjliMWZlMzYwOTMzZGRjNjVmZjIxM2M1Y2RmNzhlNDIyNGExIGxlZ2FjeS10cnVuaworNjI5OCA5ODMxZTBmYzAxZGUwNDcyOGU5YjgxZmVhMmNkZDUzODZjMDNhMzQ2IGxlZ2FjeS10cnVuaworNjI5OSBiYzIyZWI1ZDRhMGExMWJhNjVjZDQyMGE2MDVjMjMzNzJjNDE1NGMyIGxlZ2FjeS10cnVuaworNjMwMCBjMzVkOWUyYTY4NjA4MzI3ZTUyODI0ZDA0YzI0MDlmY2EwZTFiOWRlIGxlZ2FjeS10cnVuaworNjMwMSAwOWJlYmE5NDA5ZGRkNGFmNTMyODc0MDFjMjk2NDI4MTJkMGEyZTE5IGxlZ2FjeS10cnVuaworNjMwMiAzZTNlOTVkZGNlMjJmYjM0ODlmNDQ2YWFiNWQ1ZDMyN2ZjZjAyNmIxIGxlZ2FjeS10cnVuaworNjMwMyA5Njg1MWY1MWFkNmJmOWZlZGFlNWY2YTRlZjZiYzFkOGQ4MzY4ZTk2IGxlZ2FjeS10cnVuaworNjMwNCAwMzliYzNlNGU2NGVhMTIwOGZjYzM5MDAyMjIxMmY2ZTY5ODBiOTRhIGxlZ2FjeS10cnVuaworNjMwNSBmMGVmZmYyOGEyNGRkMWQwNTVjMzZhYzU5M2MwYjZkNGZhYjYxMDkzIGxlZ2FjeS10cnVuaworNjMwNiA3N2Q5MTJmMmFiY2I0ZjMzMDQwZjBjYjkzZDlmODc1ZTdiNDgwNDVkIGxlZ2FjeS10cnVuaworNjMwNyAzNDMyMzJjMWRjOWEwNzQ5Mzk5NzBlNmQxNTFjNDBhOGIzZTlhYmJjIGxlZ2FjeS10cnVuaworNjMwOCBmYTE0ODBlNjBlZDZiNDg4OGNmZWNmNjQxOGIyYzJjOTc2YzlkZTNlIGxlZ2FjeS10cnVuaworNjMwOSAyYjJlZmE0OGYyOGQyNmI5NzNjY2NkZGEwM2QwZDVjYjNhZjc2YmZiIGxlZ2FjeS10cnVuaworNjMxMCA1YWFiM2Y2NjhlODQ2OTZkMjVkMTY1YWVhNzM2Mjc0MGFmNzI4NmJlIGxlZ2FjeS10cnVuaworNjMxMSAyMmUyOWIxNzQ3ZTEzOWQ5NTk4ZWFhNTEyNmM1OTMxM2FmMzk5NDlkIGxlZ2FjeS10cnVuaworNjMxMiAyNmMyMDAyNjY2MTE5ODA2ZTAwN2FkMzY3Y2I4NTM4NWY3MjIxZGE1IGxlZ2FjeS10cnVuaworNjMxMyBmNjY2NzlhYThkZTBhY2UzNmYzNmRiYjNkN2I5NWIzMjk3OTZlMTg4IGxlZ2FjeS10cnVuaworNjMxNCAyMTA4MTZkMzQ4YmE0NWVlODkxNDY5MDc4YmNiYTYyZGEwNTgzZGFiIGxlZ2FjeS10cnVuaworNjMxNSBkZTBhZDc1MjdkZTdmY2U4NDcxZTg2MDk0ZjI4Yjc3ZTFjYjBmNWZiIGxlZ2FjeS10cnVuaworNjMxNiAwZDU0YTE0ZWYwYjhjNzRiZmI2MmQ1MzMyZjIzM2U1N2VjNzg2ODI5IGxlZ2FjeS10cnVuaworNjMxNyBkMTkzMzhmZDM4ZWI2OWU4NTQwNWNlZTFhMDlhMDczNjRmMWVlNmY0IGxlZ2FjeS10cnVuaworNjMxOCBmY2Q4MmEwMTUwN2QyNjIyOTU1NWI3YjA5MTRiY2FlY2Q3NzU1ZGEzIGxlZ2FjeS10cnVuaworNjMxOSA4ZGFiM2FkOTY0MDA2YmVkZmVmOGY1OTQzNDBmMzBkNzM2MmNjYTIzIGxlZ2FjeS10cnVuaworNjMyMCA5N2QyNGFmMzQ4Y2ZlODI5YjQxYzdkMmYyZGE5ZDg5ZmYwYTE4YzcwIGxlZ2FjeS10cnVuaworNjMyMSA2OWRjYzAyZTMxMzVmYWJjNzM0ZTUwZWIxMTI4MTMzZDllMzcyMWM1IGxlZ2FjeS10cnVuaworNjMyMiBkMWNmZjQ5ZTNjYzhkMjgwYTQ2ZDNjYTI1NTc4N2QxNGMxY2RhMTU3IGxlZ2FjeS10cnVuaworNjMyMyAwZmZjMGIzNjJmY2JiOTNmYWJiYmI1YzU3OGE2MWRjNjJiN2VkMzliIGxlZ2FjeS10cnVuaworNjMyNCA5NzUxOWRmYzYzYWViNzlkZmU4YTAxZmU5MjJmMDg1YTA5YTg1YTE2IGxlZ2FjeS10cnVuaworNjMyNSAzYjExNGYwMzE1YzE0NTYxNDkyMTYyYWQ3ODViZGRiOGQ5ZTQ4MDg1IGxlZ2FjeS10cnVuaworNjMyNiAyMzEyNmU4MDQwYTBjMTI2MmVhMThkMGZhZTcyYWQ0ZDY2NGY1NWQ5IGxlZ2FjeS10cnVuaworNjMyNyAwNDU3ZWE5NGVmNzlmYWY5YmM3OWJlZjFmMjRhOGFmYTJmNTQ2ZTBjIGxlZ2FjeS10cnVuaworNjMyOCA1ODMwZWRlNDA4NmM3NDQwNGQ0MTdkZTMyNTFkY2NlMzE2ZTE5ZDkyIGxlZ2FjeS10cnVuaworNjMyOSA4M2E5NWJmNzA4NjdkYmYzNzRkN2RlODU5OTc0NGZhMDhiNWUxZmI0IGxlZ2FjeS10cnVuaworNjMzMCA4YjcxZWE1ZGFjYzgzMTU1MDIzOWQ3Mzc5NGZhYWJhNmVkMDEzNTI3IGxlZ2FjeS10cnVuaworNjMzMSAwODUzMTY2ZjBkNjk2NjBkNmM0MzJlYjM4ZDI1NzBhZmQ0YjdiN2ZhIGxlZ2FjeS10cnVuaworNjMzMiBiNjE5Mzk1MjRjM2NlZmNiNGFlMGUyMTUwNDhjMDA2NGQxNmUwNjUwIGxlZ2FjeS10cnVuaworNjMzMyA4YjU5MDEzOTlhZGRiNGVhMjE2OGJlYjdjOTJmNTQzNTRiMWEwYzk0IGxlZ2FjeS10cnVuaworNjMzNCBkNTVjZGY0M2MyNDAxOWM2NDA4OWVmYTJjNmY4NzI3MDdmZmZhNDYwIGxlZ2FjeS10cnVuaworNjMzNSA0NTY2YTE5YzM0MzhkMTRlMDE2YWEzNzBmMjBjMzhlN2YxMThkZDAyIGxlZ2FjeS10cnVuaworNjMzNiA3ODE5NTY4MzIzYzM3NTNmMzJkMjNiNTcwMjE4MDRjNjc3MjczNmRiIGxlZ2FjeS10cnVuaworNjMzNyA0NTkxMDM1MjI4YTc3M2E1MTZhYTQwZTg1NzNmNGE1OWRmYmNkZTUxIGxlZ2FjeS10cnVuaworNjMzOCBhM2IwOWE3MTE2MmJjMjJiYzRjNGJhMzc2Mzc2ZjI2MDZmNjM4ZDcxIGxlZ2FjeS10cnVuaworNjMzOSBlOWIzNWNjODhiNTBlOTQwZDI3YmNkY2IwNDU3NzJhOWVjN2Y3YTZjIGxlZ2FjeS10cnVuaworNjM0MCAyYWMyYTYwMTIwNWIzMzViYzg2YjA5MTczZTZkNTlkMTRmNTA5NzAxIGxlZ2FjeS10cnVuaworNjM0MSA0ZGRlOGMwNDBmOWVjNTE2NWJlMDM3ZmJlY2MwM2E1Y2E1ZDk1NjZiIGxlZ2FjeS10cnVuaworNjM0MiA1YjE0NzEwOTVhM2EyNjcyMWZiNjQxZjQyNTU2NmE2M2I0MjQyNjg3IGxlZ2FjeS10cnVuaworNjM0MyA5YjE5NTI4NWZlMTc3YjE1ZjRkZTU1YTNlNGE2NTk1ODVmYjcxM2M1IGxlZ2FjeS10cnVuaworNjM0NCA0ZTk3OTE2MTY3MWY0MzlhZTg1ZTIwYmJkZDUwMjk1N2ZlOWYzMGM4IGxlZ2FjeS10cnVuaworNjM0NSBiYzBlZGM1ODlhZDQ5ZDliNWQ0OTBjYWI1MjUzYWQyNGE0ZWJjNzk5IGxlZ2FjeS10cnVuaworNjM0NiBkYzVjMTExNzczMzk4MGU4ZDg3NTQxZTYyNzAzN2I0YTdlNTBhZmU4IGxlZ2FjeS10cnVuaworNjM0NyAyODM4ZGI4M2QwZWQzODYwNGVmNjI4YTQ3ZDEwYzQzMjBhMzk1MGIzIGxlZ2FjeS10cnVuaworNjM0OCAwNjM4ZmRjMjNlZWM0YmE2ZTZiM2UyNDgxODhmOWU2MTdiZDBjODAxIGxlZ2FjeS10cnVuaworNjM0OSA0MDhlMzc0OTM0ZTVhNDI0ZDMwNDNiZmQ2NGI4OTVhYTIxNzU5NzhjIGxlZ2FjeS10cnVuaworNjM1MCA0Mjg2OTEwMDgwYTlmZWFhZmRlM2Y4MTMwNzliOGJkYmQzNzQ4ZDBhIGxlZ2FjeS10cnVuaworNjM1MSBmZWU5MjhmMTY2MWU3NzUyZjU3MjZmZjM4ODJhZGRmMDNiOTgyOWM5IGxlZ2FjeS10cnVuaworNjM1MiBkMGI0NTY2ZTIxMDdhNTM3NDE4MTM3ZWUxMDc4OWVhYmU4MjVkY2E1IGxlZ2FjeS10cnVuaworNjM1MyAyZGExMmM5ZDcxNGY0NzMyYmJkNDA5ZTU4NTY2MTg2YmIyZmUzMTE0IGxlZ2FjeS10cnVuaworNjM1NCAzNTdkNzM5NWM5OThjZGY2NmViZjY0NmJlNTQzZjgzNDY1Y2ZjNDgzIGxlZ2FjeS10cnVuaworNjM1NSBjODgzZDVlMjRhZDhmMzM1YzkyZWFmNmQwMmFjOWE4NDU0YTQ0ZWMxIGxlZ2FjeS10cnVuaworNjM1NiA2ZGM3ZWQ4YTQzNGIxZmYzNjkwZmI5YTU5ODExYTIyNDljMTMzNGUxIGxlZ2FjeS10cnVuaworNjM1NyBmYzliMTY1YThhMDlkMzEyODZiZTA4NjBhOTg0Mzc1MGIzOTQ2OTYwIGxlZ2FjeS10cnVuaworNjM1OCA4MWY2MGY1MmI4NzMyNTg1YWY0ZThjMzdhOWNmNDc3MTljZGFlMDRlIGxlZ2FjeS10cnVuaworNjM1OSA5NTdmNDJlYTBmODQ0NDQ4NmEyMzdjYjc5MmIzMDU3ZWQ3YzMyM2EwIGxlZ2FjeS10cnVuaworNjM2MCAzYzc1MzA2YTY1Y2VkNDE2NjMzNzhjNjkwY2E1YTM0NTRlOWRjN2E5IGxlZ2FjeS10cnVuaworNjM2MSA1NzE2ODI1ZjZlOWIxMzdmZjg2N2UzZDliYWJiNDNmOGUzMTM1YTU5IGxlZ2FjeS10cnVuaworNjM2MiBmOTAzMDE1NDRmYTliZTg5YTZiOGYyYTg5Yzg1YjdhYTRkMTZlYjEyIGxlZ2FjeS10cnVuaworNjM2MyBkOWU3ZjEwODhjM2IzNjNiYTQ4NTJjZDhlYTcxYzgyNzQxZTc2ZTgwIGxlZ2FjeS10cnVuaworNjM2NCBhYjA4ODllNDIxZWQ0N2EyYjJhNTQwNDJiOTY0NDZiNjQ0ODA1N2E0IGxlZ2FjeS10cnVuaworNjM2NSA5NThkNGM2NzUyNmIwOWNkZGQyZTI2MjI1NDIzMTQzZTBiMmRlNDY0IGxlZ2FjeS10cnVuaworNjM2NiBhNTBhZTgzOTNkMzc4MGNjNzQzYmY5YjgzNzA0YzFiOTkwNTAyZWY4IGxlZ2FjeS10cnVuaworNjM2NyAzM2U1ZDFkNDJjYzI2MmY5ODIwNGFiZDkzNTNjMTkyZWE3Y2Q3NTMzIGxlZ2FjeS10cnVuaworNjM2OCBmNGEzYjE2ZTk1ZjA3ZmFhZjRlZjFkMGExYzJkYmFhZTk5MjZjNDFjIGxlZ2FjeS10cnVuaworNjM2OSAzMThlNjg5YzIyMGY5MjE5N2Q5ZWM3NjViZTY5ZWNhZjMyNDc1ZDQ2IGxlZ2FjeS10cnVuaworNjM3MCA5NGM2YmY2ZmQ3ZjRmYTA5NTAyNGM3ZGFmODhhYjRiNDkyMWRjNTNhIGxlZ2FjeS10cnVuaworNjM3MSA1ODQ5MzY4OTBmODY2OTE1ZDIxNTRiZDUyNWU1MGYzZjQ1ZjJkMTc3IGxlZ2FjeS10cnVuaworNjM3MiBjYmE0Y2UxNWEwZDVjOTlhYTY1YTljODU5Njg0ZGRlNWNkZDdjNmJmIGxlZ2FjeS10cnVuaworNjM3MyBjZTJkOTIzOWJhODExNDVkOGM2MGMyYzYxZjkwNWRlYjdiODZkODM4IGxlZ2FjeS10cnVuaworNjM3NCAwODY0YTYzYTEwYTkyYzE3YzUxY2QzMDQxM2UyYmQwM2ZmY2IxY2IzIGxlZ2FjeS10cnVuaworNjM3NSBhM2Y2N2JiOTZhZGM4YzMyNmRmZmQ4NTJiMGU3MWZjOWJlNzMzYWE2IGxlZ2FjeS10cnVuaworNjM3NiBmZTQxMTYzYzAwYzNmZjI5ZGU1ZjU2ZTYzYzMyMjhkNDQ4N2YwMTA1IGxlZ2FjeS10cnVuaworNjM3NyA5N2U3MDExZmIxYjE5MWEzMDRmNjViZjQzYTE1NmMzZmMzNzAzMjBhIGxlZ2FjeS10cnVuaworNjM3OCBhMGZkODE2ODhiZTUyZjVkNTcyOTU4YzljMjRjYzA0OTFiNmViMzE4IGxlZ2FjeS10cnVuaworNjM3OSBhYzFkNWFiZmQ3OGVlNDkxMGQ3ZTU4MzJhNzhjNTQ1MjVkMmEzMjFlIGxlZ2FjeS10cnVuaworNjM4MCA4NjcxNjQyZTE0YTM3OGY5OThiOTFlODIwNmE1Nzg1NWI4YTQwODZkIGxlZ2FjeS10cnVuaworNjM4MSA2ZDUwOTZiNzAzOGQ4YTE2OWE3NDFiMDllMWFlZmIxNTM5M2RkNGMyIGxlZ2FjeS10cnVuaworNjM4MiA5Y2YxMWFmMzYyOGM4OTg1OWM1MzFkNTM1ZmM0Yzc4OTNjMjFjODMwIGxlZ2FjeS10cnVuaworNjM4MyBhOWE5MmRjMmIzNzQ5NDZjMjg2NDE2MTIyM2VjMTdmYTc2OWQxN2ZlIGxlZ2FjeS10cnVuaworNjM4NCA1YmJlMGRjZTJlMjY3MWNhZmI4YTA0Mjc0NmQ0ZTVjYzM4NzFjNjBjIGxlZ2FjeS10cnVuaworNjM4NSBmMjhkM2Q4OTgyYTI1YTczNzVhMWE1MWZmZDM2ZTEyMjQxYTFmZjRiIGxlZ2FjeS10cnVuaworNjM4NiA1MjRjZjUwMWM4NTFmZDg1YTM5ZTcyZTU2OWNhZTgwNjc4N2UzY2EzIGxlZ2FjeS10cnVuaworNjM4NyAzNDExNDYxMDBmMzhjYTk4ZmE2N2U3MGZhOGVhMDA5ZjliZGNjNDJkIGxlZ2FjeS10cnVuaworNjM4OCA4NGUxNmNmOTIxOTkyNWI1Y2UzOGE0OTg5MGQwMjU5OWFlZmMyMjY3IGxlZ2FjeS10cnVuaworNjM4OSA0NDQxMmU0NmYyNjg3N2U5NDczMGY1OTI1N2Y3OGIzOGVhMzlhZTQ5IGxlZ2FjeS10cnVuaworNjM5MCA3ZGU1ZTExNTNiMzkyY2I2ZDU2ZmFlNWMzZDZhMzcxNTk0ZWE0OGRmIGxlZ2FjeS10cnVuaworNjM5MSBmNDg3NzkzZDYwMTg0NmQwZjk2NjIxMzc1OTdiZWQ4OWIzMWYzNDczIGxlZ2FjeS10cnVuaworNjM5MiA5MzY2MTY0ZjVjNGE5M2Q3Mjk3Y2E4ZDc0OTgxMjVhY2EwMTc2MTNmIGxlZ2FjeS10cnVuaworNjM5MyBjMmFlMDQ0MGM0MjRhNzIyODRhNTdlYzg0MjFlOTc1MzU5NTk2OWNiIGxlZ2FjeS10cnVuaworNjM5NCBlOGJkNDMwY2QzNTdlODZjZjk5OGQ3ZDg5OGY5NTA1NDJjZjI1ZjkxIGxlZ2FjeS10cnVuaworNjM5NSBhMzlkMDY0OTc1MjAzNWI3ZDlhNTZiMmM0NmVhNTFkYWQxMThhNjE3IGxlZ2FjeS10cnVuaworNjM5NiAwNjNkODY3NDE0MTBlMmVkODdkMWMyOTZmOWFlMTdlMjNjNGZmNGNkIGxlZ2FjeS10cnVuaworNjM5NyA0YmNlZTYzZDViYjE3ZGIwMzgzNzY2ZmE3MzQwMGQzYTRjMzNhZWY5IGxlZ2FjeS10cnVuaworNjM5OCAxZGExNjgxODVlNGUwNWI4OWE1MDg2YTE4ZGRjNmU5MzE4N2NjZmJhIGxlZ2FjeS10cnVuaworNjM5OSA1M2U3NTdiYjY3ZDVkNjMxZTZiYTk4MWI1Zjg0YzdjODEyZDQ3N2I5IGxlZ2FjeS10cnVuaworNjQwMCAxNjQwZTM1NTliODY2Nzk5ZDljM2VhMDliMjI1OTk5YmI4ZGMxMTVhIGxlZ2FjeS10cnVuaworNjQwMSBmZjY4YTJlYzFmZjEyY2I2MTVjY2JjODcyYTU2YzUyNzA0ZjQ5Nzk5IGxlZ2FjeS10cnVuaworNjQwMiA1MmMxOWVlODNhNmIwZjcxYzg5MDA3YTVkMjJhOGRkYmVmYTE5MjRmIGxlZ2FjeS10cnVuaworNjQwMyA4ODJhMzFiN2Y4NzMxMWY4ZTA4ZjAwODJkYTNhY2I0NGI5MmJlODE3IGxlZ2FjeS10cnVuaworNjQwNCBmZTExOTY5OTUzNDQ2ZDcwYWE5MjExMzRmOGQzODcxMDcwYzE0NWRjIGxlZ2FjeS10cnVuaworNjQwNSA2MGJiNzQzYjhhNWMyMDAwZDNiMDU1ZjcyMjQ3OGU1OTRiYmRlMzg0IGxlZ2FjeS10cnVuaworNjQwNiBmOWFkOThiNTg0NzJiMDhlN2U1OTUwMmU2MzMwM2UyOGY1ODNlODI5IGxlZ2FjeS10cnVuaworNjQwNyBkN2Q4NzA1YmE2NDQ0ZGQwZDdhMWQ1YTIxODQ4YjI1NzE0YjZjOWM4IGxlZ2FjeS10cnVuaworNjQwOCA2ZTBiYmE5M2EwZWIzMzg2MDk0ZGMzYTk4NDk3ODMyODdmZWFkODE4IGxlZ2FjeS10cnVuaworNjQwOSBkZWNkMTNmNjYyOWQ1YTQzMjQwZjVlNWU1ZDhjZGVlMzJiNzg3MTJiIGxlZ2FjeS10cnVuaworNjQxMCA2MWI0Y2FlNzdmN2U4NzM1YWIwNjY2ZGU4Mjg1YWM1NGI4NmE0Y2NkIGxlZ2FjeS10cnVuaworNjQxMSA2NzUzMjhiMDgxMjJiOWNjOTQ0ZWQxMjJmZDJmY2M3ZmI0MzdmMmZhIGxlZ2FjeS10cnVuaworNjQxMyA0NmIzM2NmOGI5MTNlNWQwNzIyZGExYTU1ZTg2YzU1YzkyM2U3ZTJhIGxlZ2FjeS10cnVuaworNjQxNCAwZDQ0MzdkMWMyYjU3ZWJiYmFmYWUyMDBlMmI1OTIxY2FiMGZiZjZhIGxlZ2FjeS10cnVuaworNjQxNSAzODY4NDg1MjM3NmY1NDIyNjEzOTUzYzJkMGQyYjBkNjdkMmUxNDZiIGxlZ2FjeS10cnVuaworNjQxNiA2ZTYwOWUyNjZiZTlkMTBhOWIxYTIzNjJkZDU2NGY2OWY0ZTNlN2M4IGxlZ2FjeS10cnVuaworNjQxNyBmYmFmYjBjZDBhMmE1NWZmMzEzYWQ0ZTcwOTBkMTM3NGY4MDRmODE1IGxlZ2FjeS10cnVuaworNjQxOCA3M2NmNzA4MmI5ZThkNzQxNDcyYzRjZmJlOGM2NmRkMjcxNTM0OTMyIGxlZ2FjeS10cnVuaworNjQxOSA2Zjc4ZDMxNjQzNzZhZTI0MjFmNTAwNDE3ZmYyY2Q3OTAyMDUzNDkzIGxlZ2FjeS10cnVuaworNjQyMCAxMDc1M2U0ZDc2ZTcxZGM2YTA4NWU1MjYyMmRmOTE0YTc0YzA3Y2FkIGxlZ2FjeS10cnVuaworNjQyMSBkZWFkZWE0M2JiNTM2NDUzNWU1ZGQxNzBmMjhhZWYwZDE3Y2ZmOTU1IGxlZ2FjeS10cnVuaworNjQyMiAzYWNhZjdhZjQ5Y2MxMDEzNjYzMGYzNDU3YTAwMjVlYTA2YWQyZjM5IGxlZ2FjeS10cnVuaworNjQyMyA3NWQwMTZjOTdkMWMyY2VlZjQ3OGZlODc1YzMyYmQwODVkMWMwMzBjIGxlZ2FjeS10cnVuaworNjQyNCA5MDgxODE5YWJiZjU1Njc0MmE5ZjlmNDIwYjM1NjU5ZWFmNDBhZGYwIGxlZ2FjeS10cnVuaworNjQyNSA3ZWUxYjEwMGVkMjlhNGZmMWYyMzE1N2JlOGMwY2ZiNDkyYTQzZDBjIGxlZ2FjeS10cnVuaworNjQyNiBmMGY4YjUwYjViNmNkNjg2ZWMwZTZiYjQ5Y2NmMDFkZmVkYWIzYzkwIGxlZ2FjeS10cnVuaworNjQyNyA5ZDhhOTY1ZGU3ZWM4YWM5ZjUzNmRjNTU2NTQxNDk2ZTRhODE2NTI5IGxlZ2FjeS10cnVuaworNjQyOCAyOTAxNWI1OGU5MjIwMjM0NTI5OGVmYjk4MTBmOTQzODc3OTk3OGE2IGxlZ2FjeS10cnVuaworNjQyOSA4ZTMwOWJlODllZTQ1NGYxN2RkMDYwZTFlNTlhZWQyN2I3OTJkMGU5IGxlZ2FjeS10cnVuaworNjQzMCBmMDFlN2FmMWRkNjA2ODNiMWYzMDJlOTMyNTdhYzQ3Mzg1ODZlZDEzIGxlZ2FjeS10cnVuaworNjQzMSBiODZjODA0NDhkMzU1ZTdlODljYmM3NmMyMjQzNTRiY2FiMzEyY2IzIGxlZ2FjeS10cnVuaworNjQzMiA2YWY3YTcwM2FkYWVkYTFjNmY1ZTVkNWQyYjVjMjk0ODQyMmEyNjRhIGxlZ2FjeS10cnVuaworNjQzMyA5MGY1MDU1NTUwZDlhMDRlNTJhNmNmNmQ1MDAyMTUxYzdlYzgxMmNjIGxlZ2FjeS10cnVuaworNjQzNCBiZmQ5YmFmM2E5YzI5ZmU1ZWQ2M2UyYTZhODFhMjEwYzRmNWFhODg5IGxlZ2FjeS10cnVuaworNjQzNSBmMDhkN2YzNjhlYmZhMThlOTlkMDNhNmE4ZDRkZjA3ZDUwNGU0ZmU5IGxlZ2FjeS10cnVuaworNjQzNiAwMDcyMjk5MGI4MGMzMWYyZWQ5ZGRmMjVmNWRhNDgzZjE4NjY2NGIxIGxlZ2FjeS10cnVuaworNjQzNyBmY2ZlYzZhODEwYmE1NDNlNjdiMjBmOTJiMTk0OTc4OGQ2ZmI1YTk3IGxlZ2FjeS10cnVuaworNjQzOCA5YzA1ZmY2ZmIwYTRlNGJiNzVlNWJkMDYzZmU5N2EyMWI3MTI2MTQ3IGxlZ2FjeS10cnVuaworNjQzOSAyODk3ZGFmZWQ5NWE3Mjg0ZWNmOWFhNGNhMjdiZjBkMmU5MTE2NzAzIGxlZ2FjeS10cnVuaworNjQ0MCA1MzAxOWUzYTZkNWEzNDA1OTI4MmU1Zjc3OGYzN2FmMmYxZDNlMjczIGxlZ2FjeS10cnVuaworNjQ0MCAxMjlmMTI5OWQ0ZTk3ZTg4NGJiYmJkZDAwYmFmMTAxZDE3ODk3M2U2IGxlZ2FjeS10cnVuaworNjQ0MiBhZDg4YTAwMDUyMWY3YjNmM2VkYjU1NGViYWRkODc3MGU4ZjAwOGQzIGxlZ2FjeS10cnVuaworNjQ0MyBkYzE0NDI1OTQ5OGZjZTlhYTY4OWIyOGZiYzk3NjAyY2EzYWYzMGQxIGxlZ2FjeS10cnVuaworNjQ0NCAxNDgxNTI1MmM3YTNhNWFlNDFkM2Y4OTFiNWY4YjEyYmI4MzgxOTA0IGxlZ2FjeS10cnVuaworNjQ0NSBiYjBjZTY1M2MyYmEwMjdiYjQxMjk5N2QwYjE4YjRhNzE2ZGJmNmIzIGxlZ2FjeS10cnVuaworNjQ0NiAzZDFlNGI3NmY3NDVhOTJjOTE1YTg2ZGIzYmZkMThmMzc3ZTZkODlkIGxlZ2FjeS10cnVuaworNjQ0NyBmYzUwNWYwMmFkOGEyODA3NTllYjA3NGU1MmI5YjA4MDIwMDU0NjlkIGxlZ2FjeS10cnVuaworNjQ0OCBiNzZmZTY3ZWVkNDRlYTcwOTMwMjBkNzk1NjE3MGI2YTcxZjViZTI0IGxlZ2FjeS10cnVuaworNjQ0OSBhMzQ5OTdiNmVkZjQyYmQ3ZGUxNTIwMzBmMjBhZTIyNTQ3YzJjYzI3IGxlZ2FjeS10cnVuaworNjQ1MCBlYWVjNGY2YThiZThjZmY3ZmUxM2JiMDk3MDIzMDRhYmZlZDA5NTM1IGxlZ2FjeS10cnVuaworNjQ1MSBiOTNjNGNmYzJjZmVhNGI0YzNmNDYzYTRjYWU1MzU4ODgwMDNlZTczIGxlZ2FjeS10cnVuaworNjQ1MiA4N2U1M2M2MmNhYzgyMTYwYzdjZDkyNjhmMDljN2YxM2UxODA1ODcxIGxlZ2FjeS10cnVuaworNjQ1MyA0YjUwOThiMWZjZWYyODA2MGFiODkwY2U5YTAyZmNlOTIzNmFiYTIyIGxlZ2FjeS10cnVuaworNjQ1NCBmYjVmYzAzMjBlNmU1ZDUyZGFhYzk3NTQ1MzY4Y2M4YmE5YzZiMWFhIGxlZ2FjeS10cnVuaworNjQ1NSBjYWYxMTA3MjRjYzE3N2U0NTAzYmY2MDc4ZGI3MjI5NmE1MTI5N2EyIGxlZ2FjeS10cnVuaworNjQ1NiA0NDkwMjUxNjYxNGE5MDFmYzllZDlmY2M2OGRhOTFkMDBmNGFiMTU4IGxlZ2FjeS10cnVuaworNjQ1NyAwNjEzZjE3ZGNmZDg2NTNhMzA0NzQ0NzEzZDAyZjdiMTZhNjdhNTYzIGxlZ2FjeS10cnVuaworNjQ1OCAwMTFjZmU3NDkwZWI1Zjk2ZjQ4MzViNGM2NWU4NmNkYzY5ZmRlMmMxIGxlZ2FjeS10cnVuaworNjQ1OSA5YzJjYmYzMDY4NjRkMmZiOWIwNTNjM2Q4YjJiYzQxZTQ0OGE5MmIwIGxlZ2FjeS10cnVuaworNjQ2MCA2ZmJjNWM2NjU4MTIxZTVhNDA4NTAyMGRkY2MwNmY3ZmIxNjZhZTM0IGxlZ2FjeS10cnVuaworNjQ2MSBlZmIzYTVhMmNkZWFjYmZiMWYzMGUzOTM0ZTdmYWIzYTNkZTc4ODhjIGxlZ2FjeS10cnVuaworNjQ2MiBhODE1NzY1YjQ2OTUyYzFmM2E4ODE2MTgyNDA1ZTEwOGUxN2Y1MDMyIGxlZ2FjeS10cnVuaworNjQ2MyBhZThkMWI0Njk4MTNhNzFmYTc1M2NiNDBkMTAzYWZkZDdjZDkyZGI0IGxlZ2FjeS10cnVuaworNjQ2NCBjZmI4YjdiYzAyMzNhNWYxMmNlMTdmNWFkMTA5MWVkNmRkZTVkZDIzIGxlZ2FjeS10cnVuaworNjQ2NSBhNGFhYzc2NmNiZjAwNTgyOGVhOWQyYmE1NGJjOTc1NjFlN2E3YWRjIGxlZ2FjeS10cnVuaworNjQ2NiA2NDE0ZmZiN2YyODVkMzYyZTMyM2M1Njg5NzU1MDk2NTAwMmU3MzVmIGxlZ2FjeS10cnVuaworNjQ2NyAzZjU3YWIzMmI3NDEyYjMzNWMwZThhMzgxYTQxMjQyM2NhYWFiZGU1IGxlZ2FjeS10cnVuaworNjQ2OCBjYTBlMDVlYzg1YjlhYWQzMGQxOGRhOTBhNGRjM2E4MTFlNWE2MWMxIGxlZ2FjeS10cnVuaworNjQ2OSAwZWMyY2U5N2I4ZTNjYmQwYWFkZWUwMzE4MTM1YTFlMmY4OGMwMzI2IGxlZ2FjeS10cnVuaworNjQ3MCA4MDY5NzkwYjM5NzQwMDkxOWVlOTkwY2QzOTI0NGY0ZDQwYzI0NjdiIGxlZ2FjeS10cnVuaworNjQ3MSBmNjMwYTA2N2FlOGNiMjIxMGI2OGNjNzgyZjg1ZTE1ZWU4OWIxOTM5IGxlZ2FjeS10cnVuaworNjQ3MiBiMDk3NmNkYmQ1OTgwM2IzMDNlNmNhMDEzNjkwNTZjN2IwYWE1NTdjIGxlZ2FjeS10cnVuaworNjQ3MyBiZmZmZDM4ZDYwMGI1ZDk2NWE1Y2ZiZTYxYTQ2OGVkYTU4MmQyMzU2IGxlZ2FjeS10cnVuaworNjQ3NCAxZWQ3NzNlMTU5MzY5MzQ1YzM5ZTI4Njc0NDlmMTllM2UxYmRhMWZkIGxlZ2FjeS10cnVuaworNjQ3NSA0MjQxNTgyNjM2YWRiMzhlY2MxNDM4MmRjZDBhM2ZhNWM4NjhkMWQyIGxlZ2FjeS10cnVuaworNjQ3NiAxMzhmYTE1YTEwMzJlYzFiMThjNjkxZTY4MWNlODM5N2JmOGM4ZWM0IGxlZ2FjeS10cnVuaworNjQ3NyBkM2ExZjYwODhjMjhmMTMxOTlmMGMyNDYwMGZmMWI5Yjg3ZWNkODc3IGxlZ2FjeS10cnVuaworNjQ3OCA3NDk1MzIyNDI3Yzc2YWM2ZTNmNzk1MzY3NjNkOTVkNzExZjJjMjdmIGxlZ2FjeS10cnVuaworNjQ3OSBjMmE2MTFhZTBmZWNmNDk2OTAwM2MyZTlmNTFiYjlmMTQyYTRkODRiIGxlZ2FjeS10cnVuaworNjQ4MCAxYTBhYTk4NmY2ZmE2NDU1YjdiMTNmN2ViNDJhNWEyZTVkN2MxMTc0IGxlZ2FjeS10cnVuaworNjQ4MSAxOGMzMjcxNGY4YmE1NWQxNTVlYTZhODk2MmNlMDkyOTAxYzUzNjE3IGxlZ2FjeS10cnVuaworNjQ4MiA2MTEwNjk4NmExYTRjOWJkNTM1YzYxMTFjNGFjOWRmNDA5YTBjZWVmIGxlZ2FjeS10cnVuaworNjQ4MyBjY2NmOWYyNzMyY2YzZWQ0ZmU5N2Y3ZTUxZjI1Mjg4NzBhNDdkZDNmIGxlZ2FjeS10cnVuaworNjQ4NCA5Mjk0MTFkYjIwYTg1ODdmNjE1NDk3MjBkODBiODc2MzU4MDZhODdlIGxlZ2FjeS10cnVuaworNjQ4NSAyMmEwMzNiYmU2NTVmMTViNDAzZjQ2MWRiNDBiNGRmZTZhNTZmNTIyIGxlZ2FjeS10cnVuaworNjQ4NiBhYTk1NDg4ODViM2Y4MGEzMjNhODcxMjc0NGFhNWZjN2M1NzZjZmM5IGxlZ2FjeS10cnVuaworNjQ4NyA0OTA5ZWYzOWVhZjFkYjgyNDE0Njg0NTAyMWM4ZWYzNDUxOTA3MzY1IGxlZ2FjeS10cnVuaworNjQ4OCAyMTEyMTVjMWM1MGQ0YjI0YTNkNzQ4NGIzMjE5NjM2ZWE1ZjE2NzQ1IGxlZ2FjeS10cnVuaworNjQ4OSA5Mzg5MThmZjM1Mzc5NTBlNjkyNDhlNGViMmZiZjZhZTM1N2M2NjY3IGxlZ2FjeS10cnVuaworNjQ5MCA1ZGM4YzA0MjkwNWI1YzFlYjIyNmQ1ODdhYTY1ZGIzYWE2NzA0YTQxIGxlZ2FjeS10cnVuaworNjQ5MSA0MGM5MjkzMzVkN2YyNDQ0MjI2YzRmN2I3NzE1ZTY2N2E4ZDUyMzBlIGxlZ2FjeS10cnVuaworNjQ5MiAxZGVlM2U0ZjY3ZGYwMjIyNGU4NWQzM2Y4NGI2YjAyMzBlMzYwODc1IGxlZ2FjeS10cnVuaworNjQ5MyBmNDllNDA1N2ViNjgzMDJmMjk5YjM3YWZjZjc2MTIyOTM4OWUyNTE0IGxlZ2FjeS10cnVuaworNjQ5NCBjZjI2MzBhNDFmODc1MmU2ZmY1Mzc1OGMxNmVjZTVhY2FiOTEzNjMzIGxlZ2FjeS10cnVuaworNjQ5NSA0ZmNjZDllZWU2NzljMjBjYzcxZWExNTgwMmQ4ZWIwMDBjNTg1N2RiIGxlZ2FjeS10cnVuaworNjQ5NiA4OTJmNDU2MTY0OGEwOTUwZTFjNWE3YmIxNTFiNTY5ODQ3NjE5ODIyIGxlZ2FjeS10cnVuaworNjQ5NyA1M2Q1MTFjMDAyOWY1NDEzMTg1N2YyY2Q3ZGRlNGUwYjI4MWY5NDFkIGxlZ2FjeS10cnVuaworNjQ5OCA4NTRmMjVmZGU4ZjQyYzBhMjdmODE1Y2I4NjU3NjdiZjQ4OTFlZDY2IGxlZ2FjeS10cnVuaworNjQ5OSA2YmJjMTNiN2RjYTg4YjgzOTYwODE1NTQ4NWM2YThmZTllMDdiZDRmIGxlZ2FjeS10cnVuaworNjUwMCAyY2RiOGY1YWMzNjVmOGRjZmQ3ODQ3NzFiY2RhMTRhYjM5NjM3NGY0IGxlZ2FjeS10cnVuaworNjUwMSBkYTJiOWFlOTFkOTUzZWM2MGI5MTZiZjQ4NzMwYTkwNzU2ZTliMjEwIGxlZ2FjeS10cnVuaworNjUwMiA4MmM5ZGVlMDUzYmM2ZDQ0MWVlNGE5OTY3YThiMzc1MDg2ZjkyODU1IGxlZ2FjeS10cnVuaworNjUwMyBlNzdmYWY1NTY5N2I4ZjNkYzUyZWEwNGU3MDZjOGRhM2RkYTQ5NDA4IGxlZ2FjeS10cnVuaworNjUwNCAzYTIwMDAwMmQ4MGE4ODBlYTM1MDgxZmE2NmFiMGQ4Zjg2NjJiNTUwIGxlZ2FjeS10cnVuaworNjUwNSA4OTM5NDlkMWQyOGVhYTdlMmY3ZDUyODdlZGUxNDIyNWM3MDZkOTk0IGxlZ2FjeS10cnVuaworNjUwNiA1NTkyZGU5NjU2ZGU0YTkyMDA0OWUwNWQxZWIzNGI1YjhmNjVhYzFlIGxlZ2FjeS10cnVuaworNjUwNyBiNDMzMzhjNTIzMWUxMDUzMTYxNGQyMDM3MjU0MWE1Y2UxOWVlZWNkIGxlZ2FjeS10cnVuaworNjUwOCBkMWJhZWM1NzE4NTI0YzMzMzQ5ODU2OWJmOGFkZjQ4ZDRkYjAxMTU2IGxlZ2FjeS10cnVuaworNjUwOSBmN2MyNDNkMDE4NDQ2OWRjY2ZhMjAxNWU2Nzg0MzU2ZmE1NzVkMzk5IGxlZ2FjeS10cnVuaworNjUxMCBjYTM5MzU1YmU1NWEyYmFlYzk5MDM5NWYwZWE4ZWM0MTNiYzIxMTNiIGxlZ2FjeS10cnVuaworNjUxMSAyNjE0NzJmYTk3MmE3NTgwZjM0MzBkYjgwNzNkZWVkYmE4YzBiNWUxIGxlZ2FjeS10cnVuaworNjUxMiAyM2YyODBhYjU0MDliNzllNjE3M2Q0ZTFmODUxZGJiNjc1NTk0ZDMzIGxlZ2FjeS10cnVuaworNjUxMyBmNDFmMGNhZjFjZmNlMmY1NDI0MGI2MTMwNTk0Mzg5NGU2NDY4MmIxIGxlZ2FjeS10cnVuaworNjUxNCA4YTAxMGRkNDczNmViODNlMGU2MzU2Zjc3ZjQ5NThhNTZjNTc4YzFhIGxlZ2FjeS10cnVuaworNjUxNSA2YjRkMGYxYTBhZTljOWJiNTVjMThkMGRjMGMyYWVhYTBhOGFjMjI2IGxlZ2FjeS10cnVuaworNjUxNiBkNmM3ZTQwY2JmZGYwYTM5M2Y2YjQyMjM0MzU1MDQ4M2E4OTQ0OTllIGxlZ2FjeS10cnVuaworNjUxNyBlZjdlM2M0OTlhNGRhMDFjZDJlMTJkMzU2NTEwNzM1YmQ5ZDlmODA3IGxlZ2FjeS10cnVuaworNjUxOCA5NmUwYTcyMDRlMzFkODBmZjdhMTg0ZjBhMjM1NzA5YmE0ZWYxYmM5IGxlZ2FjeS10cnVuaworNjUxOSBlYjlmYzQwNGMwNjYzMTNlNGU5YWU3NmJkM2UwN2M1ZDc5MzMxZDFhIGxlZ2FjeS10cnVuaworNjUyMCAzZTY4NjNjZWEzODMyNjNjNTk4MmM3M2E4NDUyNWQxYTc3MTY4YjBlIGxlZ2FjeS10cnVuaworNjUyMSBmN2IxM2Q0MTgyYjNkYWU4YjM3M2UyMmRhNzkyYmM0NDhkZjYyMGQ1IGxlZ2FjeS10cnVuaworNjUyMiBhMmRjN2NlNGRmYmU3YmQ2ZmMzY2MzMjc1ZGI5ZDYwY2U4OGFkM2JhIGxlZ2FjeS10cnVuaworNjUyMyBiYzA2NWRmMDNlZTRlZjg4YzJjNDg2ZGFmYWE1MDNjNDk3OTE4NjY1IGxlZ2FjeS10cnVuaworNjUyNCBkNmNhNmUyMDc5OTQ3NzIyOTA1YjAyODkwOGMyMTYyMjViMzU3NjVhIGxlZ2FjeS10cnVuaworNjUyNSBlZjZjODlmZTIxZWRlYTFhZGMxOGZiNTVlMDExNTEyNmQ1MDRiNThiIGxlZ2FjeS10cnVuaworNjUyNiBhYzkyNWI5YTFkNjc3MjEzN2U1YzZiZjkzYTBkNmEwYmU0MzY2YTg1IGxlZ2FjeS10cnVuaworNjUyNyA2NjljY2Q5ZTcxN2U4ZWM5ZTJjZWViODhhNmY5ZjNhZjNlNGJkOTk0IGxlZ2FjeS10cnVuaworNjUyOCBmMDExMGM1YzYyMjc5MmI0NjViM2I1N2JiMWMxZGUxZjkzYTlhNDE2IGxlZ2FjeS10cnVuaworNjUyOSA2ZGVlZTNiMjA2Yjk5NDdlNDRlODI2OTBiY2ZlMGZiOTE0MmQyZjI4IGxlZ2FjeS10cnVuaworNjUzMCA4MTg1OTllMzkxMjNjY2I4MWIzOTM3NmIwODU5NjIyNDgzMzQyYzdkIGxlZ2FjeS10cnVuaworNjUzMSAyMWIyOGRjZmE4NjU0M2Q3NWQ3NDJmMDdiYjM4MTI4MjQ3OWI0NTA2IGxlZ2FjeS10cnVuaworNjUzMiBkNjg5NzM4NWMzMTg1ZmNiZGRkOWIxMjgwMjNhMzg3ZGRlNTdjYjY0IGxlZ2FjeS10cnVuaworNjUzMyA2NGE1OGIwZmIxNjcxMGRjYjczNzk0N2NhNjU1OTRjNTBjNDc5NWNiIGxlZ2FjeS10cnVuaworNjUzNCA0YmYwMWM2NmNiNjg2Y2E5ODUwM2Q2MTVhYWQ1MDZiOGM4ZTBiZWQyIGxlZ2FjeS10cnVuaworNjUzNSBkNmRlMmMxNDg4MTlhYzdjM2NmYjgyMmY2NzQzZDU5YjQwMjdkMjFiIGxlZ2FjeS10cnVuaworNjUzNiBhNTg5Y2VkY2JlZjU0NjU0NTE0YWQxNWIyNDExZTg1ZWNkMThlNGEyIGxlZ2FjeS10cnVuaworNjUzNyA3ODg0MzQ3MmZiNmZhMjNkOTY4MGRmZTg1YTRmMTM3ZTY1Yzk4MWY3IGxlZ2FjeS10cnVuaworNjUzOCBiZGUxOWFjZjEwNDVkNDdlNTk4MjkyNmVlOWQ1NTI1ZWY1Y2Y3ZDM2IGxlZ2FjeS10cnVuaworNjUzOSAyYzg5YmYwNGY4MzRlYWFlYWNmMTU1M2RkMzgwZTkxODVhZjllZDI1IGxlZ2FjeS10cnVuaworNjU0MSAyMzFhNDIwOTE4MzAyZTk3ZGM4OTllODEwNzlmYmQ3OTQ5MGZiNzA5IGxlZ2FjeS10cnVuaworNjU0MiA0YzU0ZWNmYWRjZTVlNDg2YjA2OGZiMmU4MDgzMTZiNGE5MGY5YjE2IGxlZ2FjeS10cnVuaworNjU0MyBlZmU4Njg5MWY0MTFiODU3YjlhZWVlY2Y5MzFhZDQ4NWJmMzY2OGM3IGxlZ2FjeS10cnVuaworNjU0NCAxOTQxMjMwNWQzMzVhNjljYjFjZmMxOTFjOGUyMjNkNmViZmZjYWQxIGxlZ2FjeS10cnVuaworNjU0NSBjNTc1YTkyMGU0YTFmMzVhNGY5M2ExNjFlYjZiZWIxZjgxN2VlZDRlIGxlZ2FjeS10cnVuaworNjU0NiBmNjY1NjI1MzZmMTFiM2Q1YzcyYmJjYmRjZDRlMGI3MWRkOTAwMDFhIGxlZ2FjeS10cnVuaworNjU0NyA1ODUwNGM5YTM3ZGM0YTgzZTNmZGMyNDU4YWQyN2RlMjU4ZWUwNTJlIGxlZ2FjeS10cnVuaworNjU0OCA3YjZlZWZhYzZlNDkzNzYwOTczNjg4MDJhYTZhNjU2ZDEyZjdhYzMxIGxlZ2FjeS10cnVuaworNjU0OSA0YTcwMzhlN2EzMTM5YzA5ZjQ5ZjU0ODYwM2Y5MjI1OGMwNWIxNjYwIGxlZ2FjeS10cnVuaworNjU1MCBlZGEyOWJlZjg4MGM5YTVkZWMyN2QxYTI1NjdmNTFhNjU2Y2U3ZTQ1IGxlZ2FjeS10cnVuaworNjU1MSAxMGMwODQ5NDJjZjEyZGQwZmVlZjNiYTJiMjI5NTExYTBiMGM3NjBjIGxlZ2FjeS10cnVuaworNjU1MiAxODQ1MWRjYTk0NjlhMDRlMmIzMDg3ZDVlNzQ1ODEyMjI2OTNmOWU2IGxlZ2FjeS10cnVuaworNjU1MyBhNmU2MmMyMWIwZTNiMDFjZWRmM2Q3ZTJiZGY1YWEzNzEyMjFkZTVlIGxlZ2FjeS10cnVuaworNjU1NCA3NTJiODZiYTE2ZmM2ZTkzODQ5NmI3NmI4ODhhZmZmNDlkYzU1MjVhIGxlZ2FjeS10cnVuaworNjU1NSA1ZjY4NjlhMzhkODUxZjA2OTY1ODA1NDFjYTVhOGJkOGMwYmQ4YTI2IGxlZ2FjeS10cnVuaworNjU1NiAzOTA2ODM4MThmNzM0MTdkYjkxNGZhMWIwMTA4NjBlZDZkNmMxNzRmIGxlZ2FjeS10cnVuaworNjU1NyA0NjYxN2QyOWM1ZDA2MzlhN2Q2NTMxN2FhNmQ3ODM2NGNlMzFmYTkzIGxlZ2FjeS10cnVuaworNjU1OCA3ZjgzZTI0ZDFkODY5YjY3NDcxMDMxZTQwMWFmOWIxYzU5ZWU5ZTYzIGxlZ2FjeS10cnVuaworNjU1OSBlMGY2NDJlZTQ1YmJkYTAxYTJmMWQxMDgxZGQ2MjU5MjMwYzJhNjZlIGxlZ2FjeS10cnVuaworNjU2MCA4MzFiNDIwZTQxMWU0MjFkMzM3YzJjNGU2ZTU2Njk5ZTlhYTg1NDQ3IGxlZ2FjeS10cnVuaworNjU2MSA3NDBkZWY2OTdkOGI4ZTNiY2RhNGRlNmM5Y2YyYTc5NjVjODc0OGZlIGxlZ2FjeS10cnVuaworNjU2MiBmODFkNzg1NDdmMjg5MjkxYWZiMjM1M2MzZjVjN2M0YjU0Nzk2YjA5IGxlZ2FjeS10cnVuaworNjU2MyA5ZjcwZDk5NWQwMjc5Mjk5Y2Q5MmYzNmU4MzdjODg0YmRjYTEwYjdhIGxlZ2FjeS10cnVuaworNjU2NCAwYjQwYzhkNWIyMWQyMjU5NTU5NzBjY2RhYzM1ZWFjOWExZDYwZGEzIGxlZ2FjeS10cnVuaworNjU2NSBkYzk0NmNhYjdiOWJiYmFmMzlmYWU2OTA5ZDczM2ZkNjdlNWYyNTI3IGxlZ2FjeS10cnVuaworNjU2NiA4NTkyZmE0YTExOWIwOGE4OGExY2E0NzYyM2IzOGQwYjE1MzdhYzVjIGxlZ2FjeS10cnVuaworNjU2NyBmMjlmZTcxZjExZTY0ZjEzODFlZmI3Zjg2ZTI4MTkwYzg3MTFkYzJhIGxlZ2FjeS10cnVuaworNjU2OCA4NDM4MTg0ZTQ0OGUwMzc4MjliYTcwNzUwZjk0MzI0MDllN2MxMzA4IGxlZ2FjeS10cnVuaworNjU2OSAwYTU5Yzk4ZGMwMDUzNWZhNzNiOTVmZTUzZjI5YjBiYzEwZjRhNDVlIGxlZ2FjeS10cnVuaworNjU3MCA4NDY1ZDhmYmM3YWMxN2JlOTdkYzgxM2NjZWVhMGEwOWFiZGQxYjRlIGxlZ2FjeS10cnVuaworNjU3MSBlNTM4NjM4ZWRjNzEzMzcyMjUzZTc4YjVhNTIyNzQ1MDliMTkyODc3IGxlZ2FjeS10cnVuaworNjU3MiA2ZjZiYTdjMDA4MjNlYWQ4ZDVlNWFhOWFkNjZmODEyZmI5OWRlNTk2IGxlZ2FjeS10cnVuaworNjU3MyAzYTNiMzY3MTY2ODljNWY4NzEzZDgwY2IzN2RhYTJkYmRjMDkxNTI4IGxlZ2FjeS10cnVuaworNjU3NCA1MzM2YzAzYTEzMWZiNWJmMDJhODQzNjBjNTRkMDQ5N2I2ZWYzOTI3IGxlZ2FjeS10cnVuaworNjU3NSAyZmNlYTVkZDFkMThhMjVhZDYxZTQ1MjZkNjg3NDFkMzQ2MmE4Y2JjIGxlZ2FjeS10cnVuaworNjU3NiA5NTY5NjY0YWMzNDc1M2Y5ZDVkMWE0YzM3ZDYzMThlNDA5N2IzZWViIGxlZ2FjeS10cnVuaworNjU3NyBhNWE4MjY2Njk3N2I1ZTI5Yzc4OGQyM2Q5MjBkYzdhZDdlMzY5NzI4IGxlZ2FjeS10cnVuaworNjU3OCA4NjlhOTQ4MDg1YzEwZmNlODM5ZGE2ZDVlNzRiMTg0NjczZjcyNWU1IGxlZ2FjeS10cnVuaworNjU3OSA5YzFmOWIwOWM0NDI3NTc2MmI4MzQ4NDJhZWM3YmY1MDg0ZThkNDM0IGxlZ2FjeS10cnVuaworNjU4MCBmMzk1MTYzY2E5ZDI1NWNhNGY2YzA4Y2MxYTc1MWMyZWE1ZTRlZDZkIGxlZ2FjeS10cnVuaworNjU4MSAzYWMwMzBjYzMzZjA2ODg3YmI4N2ExMWMwOTYyZGUzYWM1MTJlMTEzIGxlZ2FjeS10cnVuaworNjU4MiA2ZDlkNWU3ZTU4OGM0OWZjZDJkYmRhMThiM2RlMTZhNTI3YzVmMzYxIGxlZ2FjeS10cnVuaworNjU4MyA4YzdiN2U5NGY0ZGQzOWViYmRkMDk1MzNmN2QzMTg1YjE3ZjA1NzI1IGxlZ2FjeS10cnVuaworNjU4NCAwN2EzNWZkMmUwYTEzZWU5NDU3MGFiYjg5OWQ4NjdlNzNlZDU5Yzg1IGxlZ2FjeS10cnVuaworNjU4NSA5MDIxNmU5MDczNDVlYjIwYjM1OWRkZDg0OWUzODhmOGU4Y2MzNzNlIGxlZ2FjeS10cnVuaworNjU4NiA1NzI2YmU4ZWU1OWYzMGJiMzA4MjE3NTQ4OWEzZWJmYjUzODkxYzgwIGxlZ2FjeS10cnVuaworNjU4NyBiM2FmMzI1ZDcxMmRlM2U5N2FlMDg5NDExYjAxYTZmM2E5MGE2NTk3IGxlZ2FjeS10cnVuaworNjU4OCA1ZDUyMzk1ZjQwYjBjOWEyYjVmNWI5M2RjMzIwM2I4MzYxZTYzMDRlIGxlZ2FjeS10cnVuaworNjU4OSAyMzU4OWMwMTZjYjliOGM1MTQ0MDZlNGNlZmYyNzMxMDhkODgxYzgxIGxlZ2FjeS10cnVuaworNjU5MCAzMTkwMzk4YWU1MzNjMjZhMTIyNmZjYmI3MTRiYWUzMjJkZmRmYzRiIGxlZ2FjeS10cnVuaworNjU5MSAzZDExNzU4NzAwNWExZGUxN2FiMTkxOTcxNjU4ODgzMTFlNzY0MzI4IGxlZ2FjeS10cnVuaworNjU5MiBhODY0MDdiM2MzYWM1Mzk3ZGUwNmVhMDcwZDlkYmFlYmEyZjBkZDZmIGxlZ2FjeS10cnVuaworNjU5MyA0Zjg0Y2VlNjViOGM5ZTRlMmIwNWE0ZjA1MDU4MjMxOGQ0NzBjZDZhIGxlZ2FjeS10cnVuaworNjU5NCA2NTAwMzFlMWU0MTkwYmY2ZmRhZjQ3MjRkNDcxN2MzMmI2YjU1MDE1IGxlZ2FjeS10cnVuaworNjU5NSAwODNhN2NkODM1NDU1MjZmNDc3ODI0YmU0OTY2OTRkNDMzZjE0ZTZhIGxlZ2FjeS10cnVuaworNjU5NiBkMzBmNWYwZmQwZTJkMjlkNWVhMjE0NGExMmRkNTE1YTE1NjRlZjk3IGxlZ2FjeS10cnVuaworNjU5NyA3MWI0M2Q0YjdjZDBkMzY3OWVhNmFlZWVjNGY4YzNlY2M4ZjM3NWFkIGxlZ2FjeS10cnVuaworNjU5OCA5ZTY1MDQ0OTRhYzczOTE5OGU4M2M5ZTJkY2FhNzUxNWFkNzIxMTM0IGxlZ2FjeS10cnVuaworNjU5OSAwYjczYzMxYmFiOTA5N2VjMmIzZTBmMGRmZjJhMGM1OWIyMzNmNzM4IGxlZ2FjeS10cnVuaworNjYwMCBjODBjNTE1OTk5Yjk4MzBkZGY0ZDI4NTE4ZWVhNTkxYjJkMjA5N2JmIGxlZ2FjeS10cnVuaworNjYwMSBhN2E5ZDgzNTA1YzQ3ZGZjMGIxMGQ4Nzc3ZjIwMzk1NWRlYzIyNmQ2IGxlZ2FjeS10cnVuaworNjYwMiA1YWRlNDA5NmZiNmI4OWUzMjkxNmU1Zjg3ZGRlNjg1NmYxZjY2NDMwIGxlZ2FjeS10cnVuaworNjYwMyBlZWRhYTU5MzQxYjk1ZDMxM2IyMjYzYzhlYjlhNzlmMzE0OGZhZGVlIGxlZ2FjeS10cnVuaworNjYwNCA3Yjg0ZGFlOTdlZThhOTg4OGJiMzRlYzhmNmM1ZTI5NDNkNWEwYWIxIGxlZ2FjeS10cnVuaworNjYwNSA2YjU4OTMzNGUwZTllNmE4Mzk5ZGYyMzQyOTZlZjI3YjllODNlNTFhIGxlZ2FjeS10cnVuaworNjYwNiBjMThkNTJlMDYyMzg3MDNjNTI0NjJiZjMwYzg2NDI4MDE0Zjc5ZjUwIGxlZ2FjeS10cnVuaworNjYwNyBhMmJjOTQxNTY0YTE5ZmJhNmIzYzE0NWIyY2JjMDRlNWU1NzY2ZDdiIGxlZ2FjeS10cnVuaworNjYwOCA2OWVkYzY3ZTVhNjhmMjBlYWQxZDlkOTRiZDI5MDZhNWQ2YWU5YTIyIGxlZ2FjeS10cnVuaworNjYwOSAxODk5YjkxNTUzZDFlZjMyNzc3MGU2MGZmYWVhNmRlYzMzNTA3MGQ1IGxlZ2FjeS10cnVuaworNjYxMCAyNjJmZDU4MmU0NGIzNGU4MzUzYjAxNDkxZWYyNWFiZTdmMzFiMTMwIGxlZ2FjeS10cnVuaworNjYxMSA4Yjc1ZDVlYTIwN2JkNzllM2JjNjBjOTVkNjU4NzdiYTllNmE1YjNhIGxlZ2FjeS10cnVuaworNjYxMiA3ZDNkMmVlNTRhMmNiMjViYzRlOGIwMjg2OWVlNGIxOWE2YTlhOTIxIGxlZ2FjeS10cnVuaworNjYxMyAwMTAzNDRiNGE2MTYyNTNlYWQwZGRmMjFjNTUwM2E5ZDNiYTJlNDgzIGxlZ2FjeS10cnVuaworNjYxNCA1YmFhMDAzYmYzOWUwYjRlMjc2Njc5Mzk4ZDU1ZDJiNTcxOGUwZjIwIGxlZ2FjeS10cnVuaworNjYxNSA2ZmIxMzE1MDFiYjQ2ZDYzODBmMTI2YjRmMDM3NWJkNTAzZGIxMjEzIGxlZ2FjeS10cnVuaworNjYxNiA0NDg3MmYyNTVmOTM0NzQ3YjQ0MWNlZThjMzg2NTFhY2YwMDM3OTljIGxlZ2FjeS10cnVuaworNjYxNyAzM2JmMzgyYzJiMWQ5YjViNDBjMTQ5ZDNkNDhhYTIxZmIxZDNkZWQ1IGxlZ2FjeS10cnVuaworNjYxOCBlZmViZjFjNGVkYTI5NjU0MDQ4MGY2ODdmZWY5YWM2OTIwMWI5MjExIGxlZ2FjeS10cnVuaworNjYxOSA5NTFlZDlhODNmNTdhNTBkZGE1ZjYxNmYyNWJhMGUwZDUyZmQ4ZTQ4IGxlZ2FjeS10cnVuaworNjYyMCBjNGQ2NmM0MTBjODNjZDAyYWU3Y2IyM2Q5ZjE4ODQyOGUxZTJhOWM1IGxlZ2FjeS10cnVuaworNjYyMSAzMGYxYzAxZjM4NjUwYjY4Y2M1ZWNjNzIzZWYyZjk0MDIzOGRjNGIxIGxlZ2FjeS10cnVuaworNjYyMiBhYjQzNzE1ZWY0ZWUyNGY5NmUwOTUzZjRhMjY0M2JjYmEyNmNhMTljIGxlZ2FjeS10cnVuaworNjYyMyA0Mjk4ZmYyMjJkNzYzZGI3ZjQ5M2EwM2JiNGI4MjFmNDdkNDIzMzFjIGxlZ2FjeS10cnVuaworNjYyNCA4YTBkNDNiMTMxMjUxZDJmNmI1YjZmZGVjMThhMWI4YzdmNTRiYzcwIGxlZ2FjeS10cnVuaworNjYyNSA2OWEzM2ZhM2RiYjg4MTE1MDVjZDAzMTMyZGRhZDc3YTU4NDQ0NzgxIGxlZ2FjeS10cnVuaworNjYyNiA5ODgxYTUyMTRmZDJjNTAxOTkyMDIwMzIyMzhjYzZiYTc5NzBmY2Q4IGxlZ2FjeS10cnVuaworNjYyNyBjYzA2ZTcwMTI3ZmMwYmM4YzRlN2Q2NWY0YTg1MmVmNzQ1NGQ3OTI5IGxlZ2FjeS10cnVuaworNjYyOCAwMjYyMWI4NzdlZTVkZjAxMWNlNWI4M2M4Y2UwNzJiOTQ1Y2E5MDZiIGxlZ2FjeS10cnVuaworNjYyOSA4NmE2MmNhM2EzN2I3YWJmNTU5NDE0ZWIwZGE4ZDU0NjIxZDdhODg1IGxlZ2FjeS10cnVuaworNjYzMCAxNDA1MDhjOWM2MDMxODI1ZWY4NzIwMDA3MDYyNmZiYmUzNjk4ZGZjIGxlZ2FjeS10cnVuaworNjYzMCA0NGE4MmFjNjU0YTQxNzU1NjlkZWVkOGU4YTk0YjBjYzhlZGVlMDhkIGxlZ2FjeS10cnVuaworNjYzMiBmM2EwZDUwMjQ2ZDI3MTNmZDliZGJlNjI1MDRkMDU0NmFjODIxYWZlIGxlZ2FjeS10cnVuaworNjYzMyBkZjYzOTg1YzFjYTk2MGYwZTMwZjNjZDlkYTUwMjRlYjM3YmFlMmJiIGxlZ2FjeS10cnVuaworNjYzNCA4MTFhN2ZmNzgzYjc3Mjk2YWUwYjM4ZGEzYjIyMDBlZTE0MzgwMDgxIGxlZ2FjeS10cnVuaworNjYzNSBhODFjM2RlM2FhZDk1Yzk1N2Q4ODk0Y2RjZjllNjhiOWZkNDRiMjA1IGxlZ2FjeS10cnVuaworNjYzNiA5OTI1MDE4MmM0OGFmZmQ1NzhhNWNmMzZhYmU4YWEyMDczMzk3ZmJiIGxlZ2FjeS10cnVuaworNjYzNyA1ODJkNDkzN2Q0OTk3MWU1YzhkMDg0YWZmYzg0ODIxOTdjYzljNmFkIGxlZ2FjeS10cnVuaworNjYzOCAxYzA3OWUyM2ZkM2I4OTk0MGZkOTVlYWIwMjlmYjY3ZDkxN2RhN2FiIGxlZ2FjeS10cnVuaworNjYzOSBiM2ZkZTUyOTQ0MGZkNjRkZTdkZjJiZjY0Yzc0NDMyMThkMWY0MzA3IGxlZ2FjeS10cnVuaworNjY0MCBhNzFhNDNkMjQ3YjA5YzIwN2MwMmIzNzUyZjI5YzU3ZWU0NzQ4ZTQxIGxlZ2FjeS10cnVuaworNjY0MSBhOTQwMGVlZTA0MGIxOGViMTA3NGJiNDg5ZDRkOWNkMjhmYWQ1YjY5IGxlZ2FjeS10cnVuaworNjY0MiA3NGI4YWE3ZjExMTRmYmYzZjJlMjRkNDc5ZmUxZTZlZDI5MGE3ZGMzIGxlZ2FjeS10cnVuaworNjY0MyA2ODc4OTljNTYzZTNkZTM4N2M0M2QxZjJlNGI0MTJkMWU1OTM4YTM1IGxlZ2FjeS10cnVuaworNjY0NCAzZGMyZTY3NWYxNzgxNzA3ODRiZjk0M2QwNzcxZTlmMzRlZWIwNTA3IGxlZ2FjeS10cnVuaworNjY0NSAxODU1ZTdjNzkxZTIzZGNkMjIzNTczMjAxZWY1Nzg4ZDU0ZjBmODM2IGxlZ2FjeS10cnVuaworNjY0NiA4ODk5NzgwMmZiOWJiMGExODljZDQyNWY4ZjMxY2U5ZDQwNmNjMzJmIGxlZ2FjeS10cnVuaworNjY0NyAyMzZhZGVhOTc2MGIwMGYyNzRjODBkZDhlY2IzZDY1YzNmODA3OTA3IGxlZ2FjeS10cnVuaworNjY0OCBkMjQxYmZkYTdiNzQ2YWY0MmUzZDhkMWJhOTU1NjcxNTlmYjZiMGM4IGxlZ2FjeS10cnVuaworNjY0OSBiYjViOWZmNzJkZTE5NTE4YzYwMGZlNjQ2NDAxNWM3ZjA1NjBlOGNiIGxlZ2FjeS10cnVuaworNjY1MCAzN2QwMDliMWJmNDVkYTk2N2M5OTk2YzllMmUzZTQ4ZjhhZWUyMDY3IGxlZ2FjeS10cnVuaworNjY1MSAzMTVhNTBjYjE1ZTM4ZDg5NzhhMTZlN2I3NWFiMjQxYmFlYzA3MGE3IGxlZ2FjeS10cnVuaworNjY1MiAyODE3NGFhMzhjNzYyNzdhMDA4ZDU0YjM1NmE1ODNiZWY0ZWJhOGQ3IGxlZ2FjeS10cnVuaworNjY1MyAzM2Y0YTkxZjg3MWJkYmI5ZDYzNTQ4YzY5MzY3MWI4NzQ0OGY2ZGNmIGxlZ2FjeS10cnVuaworNjY1NCA3ZWRlMDEyYTM1YzVlZjM0NmJmNzU1OWMwYzFjYjc0YzU4MTQzYzJjIGxlZ2FjeS10cnVuaworNjY1NSAzZDUzY2ZhYjg4MjE4OGMzODlkODRiOWQ2YWY5Y2QwNDk4YzA4YzU0IGxlZ2FjeS10cnVuaworNjY1NiBhMzkyNjQ4NGE2NTgzYzMwN2MzZDU0OTU4NjhmOTZhNGU1MWFmZGViIGxlZ2FjeS10cnVuaworNjY1NyBjMzYzNjQ1YjdlZGQyN2I0OWJkMTYzMTEyZTcxZGE4NzM4MWIxZTU4IGxlZ2FjeS10cnVuaworNjY1OCAyY2NiOTljOTI4NTQ0NmJiYWJjY2ZlOTQ2MzBmZTI2MDcyNWIzN2I4IGxlZ2FjeS10cnVuaworNjY1OSBhMjNmNGY0NjcyN2I5YmZhNTQ2ZGI3MDlhMDBlMzVjMTI1YzJkY2QxIGxlZ2FjeS10cnVuaworNjY2MCA1ZTEyZTliMjhlYWZmMTEyMWRhYzgwMTc0MGM3ZDRkOTM4Y2ZiZWY2IGxlZ2FjeS10cnVuaworNjY2MSA4YmJlY2Y2ODNhNTA0MGY2YWRkM2QzODkyMzY1NTNlZTBkYTNkNTcxIGxlZ2FjeS10cnVuaworNjY2MiBjNzk2YWUxMTU3ODMyZDJjY2I1Y2YyNDhiZDJiYjdjMWUzZWVkMjE5IGxlZ2FjeS10cnVuaworNjY2MyAwM2YyYzIxYWVjYWYyNmEwMzc5YmQzZmVlNDFlMTYyMTE0YTRkY2MwIGxlZ2FjeS10cnVuaworNjY2NCA5NGRhNTgyMTRkNmM3NWZkODA5ODM0MDFjOTYzM2RkOWM4OWU3ZTNmIGxlZ2FjeS10cnVuaworNjY2NSBlNjEzMThjM2FkMWU4N2UxNjQyMjk0MDZmMDhkMmMxMTc2MmU4M2MxIGxlZ2FjeS10cnVuaworNjY2NiBkMjNmNzg3MzBlMDBkMTNkZmYxY2FmNzBiMWI3ZDE2NTM1ODVjM2MzIGxlZ2FjeS10cnVuaworNjY2NyBmMDI1ZDhhMzc3YjU3MDAxOGQ4MTlkZTQ3MTUzNjVkZWE1Njc2NzI2IGxlZ2FjeS10cnVuaworNjY2OCBkZmJkNmUwMGRkMzgzZDJmM2IwZWM1Zjg0ZDJlZDZjN2Q5N2I1MGU2IGxlZ2FjeS10cnVuaworNjY2OSBlM2Y2YWRhMjhlZDA5NWU3ZDAwZDljYmRjNTEwMjU4MmM4ZTVjNjI4IGxlZ2FjeS10cnVuaworNjY3MCA2NzIwNmJiZDViYjU0OGJkNjBkYjY5YTJiNDk0YTFhOTM3MzUxZDU3IGxlZ2FjeS10cnVuaworNjY3MSBiNzBiYWJhMWM3ODkzMmMyNzk2OTM0ODg5NDZhODg3Y2Y4MzFkZTM2IGxlZ2FjeS10cnVuaworNjY3MiAzODM4M2I2M2Y0MTU4Zjk0NGU3NjhhMzJkYjhlMWRkNTEwOTA0YTcyIGxlZ2FjeS10cnVuaworNjY3MyA2ZmI2ZTAxZTJiYTE0NDM2ZGUwZDg2ZDFhOGE1YzNjZDgwZjFkYjhlIGxlZ2FjeS10cnVuaworNjY3NCAyMmFhYzgxYzc1NjBjMWE4OTYwMzMzZjFiMTE0ODA5MmZmMGU0OTUwIGxlZ2FjeS10cnVuaworNjY3NSBjNjI1OWNmMmM1ODE0M2RiNjEwMjMwNWQ1MjE3ZGU0YWNkNzUxZWY2IGxlZ2FjeS10cnVuaworNjY3NiAzNTBkMGRlMDc3MzljMzc0NzFmZTkyOWY5Njk4OTM5MWRhYjgwYjUwIGxlZ2FjeS10cnVuaworNjY3NyBkMWI0NzQzYTlhNjA1M2U5OGI0MDU3MDliY2FmOTg2NDVlNDhmNzA2IGxlZ2FjeS10cnVuaworNjY3OCAzMTI2ZjhhMTQ2YTY2ZjRhNzZjYjA0ZDM4OGRlNWY3OWIwYmJhYWNjIGxlZ2FjeS10cnVuaworNjY3OSBjNzk5NDAwODM3OGQ5ZGU1YTBiZjA0YTM3NmQzNDlkZWEzZWUxYTUyIGxlZ2FjeS10cnVuaworNjY4MCA0MmVjMjNjNTAwMTg2ZDVhYmUyZGJjYzI2MWNiNTczZDQ1NThiMjJlIGxlZ2FjeS10cnVuaworNjY4MSA2M2FmMjU3NGY3MWY2YzQxNzJiNjdiZDU4OWJhY2I4OWNmNDZhYmYxIGxlZ2FjeS10cnVuaworNjY4MiAxYzAwNjQwMDY5ZjhhNTQxNDU2ZjMxZTljYjNmYmI4NWQ5MzYyMjAxIGxlZ2FjeS10cnVuaworNjY4MyAzZmRlOWQyYTM5YjBjOWEyMTFjYmNhODRiZjM4NDY2MDY2OTJhM2UxIGxlZ2FjeS10cnVuaworNjY4NCA2MGZjMDFkNmY3MjcwY2MzMzY4ZGJmMWE2MTIyMGZlYjU4NDdhODUyIGxlZ2FjeS10cnVuaworNjY4NSA0YTkzY2M3ZTdmYjZmM2U1YjcwZmYwODhjZDIxZmI0ODNiMWVlOWJmIGxlZ2FjeS10cnVuaworNjY4NiBkNzAxOGJjNTU4NGUwYTljODg3YmUxMDliMGE0MjQ1NTkxYzZkNTcyIGxlZ2FjeS10cnVuaworNjY4NyBlMzFiNGRlZmFkNWI0NWNkZjRjNjAwNDkzZDcwNjdhMDIyNjFhMWUxIGxlZ2FjeS10cnVuaworNjY4OCA2ODhkNTY2Y2IxNWIwNzlkYTlkOWE2N2I2ZTBjYmNlNTY3ZWVjMzM1IGxlZ2FjeS10cnVuaworNjY4OSAwNDEwZWQzODA4ZWViOGMyNTQxYWE5NTU0MTMzODdkNjBhNzE0YTlmIGxlZ2FjeS10cnVuaworNjY5MCAwYTVmMDFkNDcwMWMwOTkzYjI5MmNkNWEyMWM5MWIyOTE4NDNkNjIwIGxlZ2FjeS10cnVuaworNjY5MSBjNjY3OWIxYzZjZmMxYjRmNWM0NmM1MjQxYTgzNjJiNDQ5MTFiMzliIGxlZ2FjeS10cnVuaworNjY5MiA5ZTBlODQxN2E5OGFlYWRhYjljMmZlYjg2ODZlNDJlM2VjNWNjZjc3IGxlZ2FjeS10cnVuaworNjY5MyA5YmNmYjAzNGI5NjNkMmM3Y2I1MjEzNzQxZjk0OWZmM2U0YTQ0NTI5IGxlZ2FjeS10cnVuaworNjY5NCA0OGIyZDdhNDUzMWRmOGI4Mjc4MGYzMGM3ODU2ZGIyNjNiZWYxMzk5IGxlZ2FjeS10cnVuaworNjY5NSA2NjkxM2NhN2VjNDcwYWVjOTUzM2ZmMmQxNjliZDhiOGY2NWE0MjI4IGxlZ2FjeS10cnVuaworNjY5NiAxZDFmMGM2NDdlNzdiMTIwZjRmZjhjYjIxMjRlYzk5NDE0YjZlNTcyIGxlZ2FjeS10cnVuaworNjY5NyAxODBjMWQzZGFjNDExMTFmNzMzOWM5ZjBlMjExMTg5M2NmMGJmNWQ3IGxlZ2FjeS10cnVuaworNjY5OCAzZmVlY2FkMjk2ZjQwZjRlZDhkOTAwNDRlODZlNDBhOWExM2E1Y2JlIGxlZ2FjeS10cnVuaworNjY5OSBiM2FlMGNmMmEwNmQ3MTMyNGZhODk5ODI3ODc0MGExOGViZGRlYzBjIGxlZ2FjeS10cnVuaworNjcwMCA0ZmFjYWUwMGJkZDYxMjQwNjQyZWUwZWRmYmYxYThlOGE4NmMyM2RjIGxlZ2FjeS10cnVuaworNjcwMSA1NzNlZDVlMzg3OWI2OTk5OThhZWQ4ODExNDJmNGMzNDQ4M2I4ZmI5IGxlZ2FjeS10cnVuaworNjcwMiA4NDQ0NGVhM2Y1ZjY5ZDYwZjZkODQ3YWFhOTY0Y2ZjNjJiMjRjY2I3IGxlZ2FjeS10cnVuaworNjcwMyAxZjY5MmMzZjFkMzJkNDM5ZjI5MmQyMGFhM2VmZWQ2NjVjZjFhMzEwIGxlZ2FjeS10cnVuaworNjcwNCA0MWE1MmFiMjYzZGFhMjUwN2ZlMzMxNTE5MjJjZTk1MDAxMDhmNWJlIGxlZ2FjeS10cnVuaworNjcwNSA1YzM4N2FhMDM3MDg3MzM3ZmIyMjlhN2U1NGFiNWM0NWI5NTJiZGU1IGxlZ2FjeS10cnVuaworNjcwNiA4ODZjMGY3NzVjOTc2ZTJjY2RiOWZmNDZkNzRiNjZhNTkwNTZjZjkxIGxlZ2FjeS10cnVuaworNjcwNyAxMDk5MTU5ZWM4MjE5ZTBmOTZkNTY4ZDIwMmQxMTY4ZDIxYmQ1OGQwIGxlZ2FjeS10cnVuaworNjcwOCA3YmY3MWE4Mzk2NjFiYzI2MDA2YWM4MzAzOGVkMTFkMzYyMGQwZWU5IGxlZ2FjeS10cnVuaworNjcwOSA4ZjI5MWRjOGZhOWI0NjllNjBmMjU2MTc5MjBiZTM0MjQ2ZjFlNjhiIGxlZ2FjeS10cnVuaworNjcxMCA3ODBmYzJiMTY3NGQ3NzJiODg5ODE1ZjZjYjcyZDNkYmNiNGY2MzhjIGxlZ2FjeS10cnVuaworNjcxMSBjYjQ5MDBmYWI3NjQyOGFmOGFlNTVlMzE5OWU5NDY5NTI1ZGVjMWM0IGxlZ2FjeS10cnVuaworNjcxMiA2Yzg2ZDkxMzZjMDkwZDRmZDM0NTNmZTkyMjYwYTNlMTJmZTcwZjI3IGxlZ2FjeS10cnVuaworNjcxMyA2NzAwNTU4YTMyZmIxMzNjOTM5MWQ0MDc5ZWFmMTliNzQ3NmU0N2Q0IGxlZ2FjeS10cnVuaworNjcxNCAyMWU1Yjk0Yjk5YjgwYmRmOGU2Y2NlY2IyMjk5N2ZhM2NjOTEzYzI1IGxlZ2FjeS10cnVuaworNjcxNSBjNjJkMzJjNWZmM2RlY2VlM2ZlYWE1NGM2MjQ4MGU3OTUxMDA5NGUzIGxlZ2FjeS10cnVuaworNjcxNiAzNTQ1YWI0M2E3MmEyMTlmMGZiY2UzMjVlMmRmMTg3NzY3YTNlMmE4IGxlZ2FjeS10cnVuaworNjcxNyAxY2UwMGNkYzAwM2QyNTVlOGIwOGI1OThiYzcwOTJiNTIzY2QwNzkwIGxlZ2FjeS10cnVuaworNjcxOCAwZmFlMzUzYjA0Y2EyZDFhNTM0MTY3OGE2ZWRiMTliZTJlMjkwN2M2IGxlZ2FjeS10cnVuaworNjcxOSA0M2UyZTU5MmEwMDE5ODUxMjBkYTUwODllZGUxNGEwNmZmZjIwOGMzIGxlZ2FjeS10cnVuaworNjcyMCBjNmVmOGI3YjI2ZWJjMTIwNTIzZjg4MTA1Y2UyOTMzNWFkZjIyNTZiIGxlZ2FjeS10cnVuaworNjcyMSBkYTM4Y2Q2MTY0MTI3Y2NkYmE3OTYwOTQ0NjFhOTU0ZTk2YjQwOWIyIGxlZ2FjeS10cnVuaworNjcyMiA1ZjY3MmE1MTJkYzQxZmRiODA3OTE3NjEyYTFhOGFmMDM5OTc4ZTJhIGxlZ2FjeS10cnVuaworNjcyMyAwY2Y2NzE0NTJmYzU0M2Q0MjZkNTNkNmM4M2M0MzdkM2I0OTkyOGZlIGxlZ2FjeS10cnVuaworNjcyNCA0NDcwZjdmZjBjMjM5Yzg5NGNiOWI1MTg4MTI5ODJmNDdiZDBmZDg2IGxlZ2FjeS10cnVuaworNjcyNSBhYzNmYmI2NzcxZjVjMmRiMzliYjYzYTJiNmEyMDI5NjFkN2ExYTcyIGxlZ2FjeS10cnVuaworNjcyNiA2YjZjNWQxMjEzMGNkOTkwZWRhODA2NTYwZGY2ZDRiNDg5NWJhNjM1IGxlZ2FjeS10cnVuaworNjcyNyAwMmEwMzIxZjk0NjhiZWFjN2FkZGVhOTY2YzViMGZlZTAyOGNmYzJhIGxlZ2FjeS10cnVuaworNjcyOCAwNWFlNTcyYzFhYzU2NmMzZTgzNTA5NjMxZTRjYjA3Y2VkMDk5ZjM1IGxlZ2FjeS10cnVuaworNjcyOSA2NDcwNGQzNmIxOTgxZTgyM2ZjZjBmYTVlODg1NzJmYjA2MDM0MDk5IGxlZ2FjeS10cnVuaworNjczMCBlMjI1ZTcwZmQ2NTcxZmE2NDdkNDNiMGJjNDIzY2RhY2ZlOGRlODA2IGxlZ2FjeS10cnVuaworNjczMSAyMzliMTAwODExNzYzZDM0MTk4ZDEwMTk1ZGQ5YjEzNGFmMGFmZWJkIGxlZ2FjeS10cnVuaworNjczMiBiN2U3ZWI1ZWY4MjBhYTg3Nzk3YTE0ODkwNWFkNWMwZTkxZmEzMzFkIGxlZ2FjeS10cnVuaworNjczMyBkYmI3NjA5NWFkZWUwOTU5OTAzMzdiZWU2YmQ4ZGNiYmFhNzdhOTM0IGxlZ2FjeS10cnVuaworNjczNCA1MTZkZGY1MDE5NGQzNjgwNmVlOWZjOWVkZmJiNWZmYWYxNWQ1ZDM1IGxlZ2FjeS10cnVuaworNjczNSA1NDQyMTdkNTQ4YTVmMWQ1OTQ5NmVkZDAyOTRmNTUzNTI3MzBmMWFjIGxlZ2FjeS10cnVuaworNjczNiA2N2QyNThlZGQzZDk5YmNiNmZhMTNlYzg4NmI0ZWU3YzIzODZlOTcwIGxlZ2FjeS10cnVuaworNjczNyA3YjU0YTNjZWRiZTBjNjQ0YzcwNWNhY2I2NjZmNmY4MDhlYjdiYTc0IGxlZ2FjeS10cnVuaworNjczOCAyNTMwMWI5ZWEwY2NkZTlkNmYyN2EyN2JkN2M5MDJiNGVjZDg1NGM0IGxlZ2FjeS10cnVuaworNjczOSA4ODkyZGE5NTU0YTViZDExZmU4YmM3ZDYwNGU0ZmIyNjdmN2M4NDdjIGxlZ2FjeS10cnVuaworNjc0MCBmMGU4MjEyOWJkM2VhMzYxN2EyZjFmNWE3NjE2YzkyZTQ3NGQ4M2E4IGxlZ2FjeS10cnVuaworNjc0MSA2MDgyNTAxZWNiMmU1ODZjMjAwNTBiYjM5M2M0ZTY1YjBmMTU4MWUzIGxlZ2FjeS10cnVuaworNjc0MiAyZTg3YjgxMTc2ZjlkMzI1YTU2OTM4MzMwNGUzNDcxZTU0ZWQ5OTI0IGxlZ2FjeS10cnVuaworNjc0MyAzOGM4YTFjY2MxNmM2MGUwMzdhZThkMGVhYjdjNWRlNGZhNzQ1OWQ3IGxlZ2FjeS10cnVuaworNjc0NCBlZjUxZTRhMmU3OTk0NDlmM2Y1ZDljZGZiZmEzNzQ2NTlkNWE5ZDQ4IGxlZ2FjeS10cnVuaworNjc0NSA2NTEyMGU5MWIwNjFlYTdkZjFhNmY2ODFjMzY3YTQ4NGUwZmRmOGE0IGxlZ2FjeS10cnVuaworNjc0NiBlNzg5MDMzNmYxMDcwNGYzMzQwYjg4YTYwOWQ1MGNlYmMxYjE4YzZhIGxlZ2FjeS10cnVuaworNjc0NyBjNDg3NjRiZjYyZDFlZDA2YTczYzEwZjMwZGQ2NDE0MmZmNzE4YmZkIGxlZ2FjeS10cnVuaworNjc0OCAzNzk5YjcxMTYzMWIyNWVjNjQ2ZWU4Nzc4M2MwYjM1ZGE0YzYyNTVmIGxlZ2FjeS10cnVuaworNjc0OSBjYjg0MWYxYjAyMmVhMjI0Y2M3YzZmNWNjZDk2NjYwN2FmYjY1NWYxIGxlZ2FjeS10cnVuaworNjc1MCBhZTE3OGYxNTA0MDMwMGM2OTBhNTZkMjM5M2E3N2E2NjUwYWY4NTQ1IGxlZ2FjeS10cnVuaworNjc1MSBiZWZkZjBkYzA5NmIwOGVlYzUyZjNlOGJmNjBiYmJhZjRkYWM1MmFhIGxlZ2FjeS10cnVuaworNjc1MiBmNmU4MjRiMjcwMzIzNWQ4YzM1OWIzMjE2MDA5MmZkMjNkNzhiMWY0IGxlZ2FjeS10cnVuaworNjc1MyA5NGI3NjFmYWM0ZDdiYjNjOGFjYzNjOWJlOWUxMGVlMWNiODBmYzgwIGxlZ2FjeS10cnVuaworNjc1NCA1NjkwOTc4MWE3NDFiMTA1MDUyNmI1MjI2ZTJmNjRkOWRkZWU0OTNlIGxlZ2FjeS10cnVuaworNjc1NSA0YmRhZmE3MDNhMDRiNWM3YjZiZTY0OWQ3ZTVmZmU1ZWQ0YWUwNTUxIGxlZ2FjeS10cnVuaworNjc1NiBkYWYxMmY2NGQ1YWEzZDUxODUyMDA0ZTNiNDU5MDFhZGVhYTc0Nzk0IGxlZ2FjeS10cnVuaworNjc1NyA4MzlmNzI2MTBhZTFmOGJlMWJhMmUzMTcyM2IzNjdlODc3ZDNmYjNmIGxlZ2FjeS10cnVuaworNjc1OCBlMjFkM2U3YWVhODcxOTZjNDMxOTY1ZmYzM2MxMjAyOGU3MjM4NjU1IGxlZ2FjeS10cnVuaworNjc1OSBiNjlmNGI4Mzg5MmU2ODg1YjYwODlkY2EwY2U3NjBjY2Y0YjUxNjg2IGxlZ2FjeS10cnVuaworNjc2MCBkYjM1ZDJiOTNlYmEwZjk5NjlmMGIzMmE4NWYxMmFkMTgzNzdiZWI0IGxlZ2FjeS10cnVuaworNjc2MSBmMmY1Y2Q3Y2I1YjU2YjNhNmViYTMzYTIzZDUwOGRlMTQ1ODE4Zjg3IGxlZ2FjeS10cnVuaworNjc2MiA0M2FlMDQ1YWExMGUxMDdjNDliNWFkNTBjYjJhN2M4ZDZkOWFkOTlhIGxlZ2FjeS10cnVuaworNjc2MyAwMDM2ZGNmMjg0MDIzYTliZDg2MzIzMjZmY2NjODQyYTAxMGNhMTgxIGxlZ2FjeS10cnVuaworNjc2NCA5YzZlYWIwY2Y1NDJkZTFiMTQwNWMxMDVlZTNiYmVhZWI3OTRkNzI5IGxlZ2FjeS10cnVuaworNjc2NSAxNDI3ZDYxZjEzMDcyOTlmODI0M2E0MWMxMjlhNWJjNjU5ZjZjY2U3IGxlZ2FjeS10cnVuaworNjc2NiBhYmQwYjlmZjY3NTkyZDEwNDc3MzZhN2VlZjVjZDllYmM5MmJhNmM3IGxlZ2FjeS10cnVuaworNjc2NyA2OWJiYzIxZjU1Y2YyZTM0ZTQ3MzhhYTUzMjRkMjM2MzcwMGVjNGRmIGxlZ2FjeS10cnVuaworNjc2OCA1MjBkZGNiM2Q1ZDY4ZTI3YjA2NzQxMjhhZmE4NjUxYTg4MDU0NDQ3IGxlZ2FjeS10cnVuaworNjc2OSAwMDhiOWZjNTY1YmZkYzI3Mjg0YWE2MzM1NTMwYmUwZTIzNTdmYzUzIGxlZ2FjeS10cnVuaworNjc3MCA3NWQ3NTczMmE5ZTRiZThkNWI1YjEyYzE5MjhhZjhhM2IxYmM1NDRjIGxlZ2FjeS10cnVuaworNjc3MSBjZjlhOTdiZmMwMjMzOWUwM2U0YjQwNjBiOThlNmY0ZDM3ZTQ4OWUxIGxlZ2FjeS10cnVuaworNjc3MiA2ZjcwOTBhODI2NDU5ZDFiNTNkZmJmZGVhMWE3OTI3MjQ4MjI3ZWIwIGxlZ2FjeS10cnVuaworNjc3MyBlYjFlZDc0Mzk3MmM0MjZhOGNkZDNkODAzYmY2Y2JhNzBhNjI4NDU1IGxlZ2FjeS10cnVuaworNjc3NCBlMDVkYTgwNDNiNTAwYjQxNTM0ZGViYzcyNWUyZmNkYmMyYjk1ZmY2IGxlZ2FjeS10cnVuaworNjc3NSA4NjgwNjMxNjE2NjU4ZTVlZDVlYTQzYjcyYjk1MjIwN2EzYTk3ZWNmIGxlZ2FjeS10cnVuaworNjc3NiBmYzRmMTI4OWZlNmNmNmZkOTQ1NmQxNDY3MDBmYzI0YjJiZDJlNTUwIGxlZ2FjeS10cnVuaworNjc3NyAzODhmOWMyMjIwY2U0ZjYyYzJhM2E3YzZjNDE3NzM4MTUzOTAzZjY4IGxlZ2FjeS10cnVuaworNjc3OCA5NWMzMTkzMWI3NmFmNzA4MzdhM2E0MTRmMThkYjQwYjAwYTFmY2Y1IGxlZ2FjeS10cnVuaworNjc3OSA3ODA5YjZiNGZmZDkzNTM4NjY2YjEzZjdmNDM0OWUwNDhkYmQ4OGQyIGxlZ2FjeS10cnVuaworNjc4MCBlOWY0OGQ3ZTczYjFjYWM5YTNlMTVjZDFjZmYwYWNlMWI4NjJkOTU0IGxlZ2FjeS10cnVuaworNjc4MSAyZWVjMzVlMmFmZmY3M2YyOWU1ZDRlZmU5NDhhODNmNzE1NzZhOTljIGxlZ2FjeS10cnVuaworNjc4MiAxYTBmMzRjMTgxNjNjYzA0OTVjYmVhMTM0MTQ0NzRhZjZhZmVjNTNlIGxlZ2FjeS10cnVuaworNjc4MyBlY2JlYjQ0NWY2MmU1MDZmOGY3NTRmMTNjMzY0MDMwZjI1ZTNmNzhhIGxlZ2FjeS10cnVuaworNjc4NCAzZjZkMjYxNjU0Y2EyZTlkYjkzOTE1NjI4YWM0YTE0M2ZiZDJiZjZiIGxlZ2FjeS10cnVuaworNjc4NSBjOTdmZmQyZWJkNTM5NjQxMGRlOWE3M2ZhNjc3YTkzNWFlMzYxZjZiIGxlZ2FjeS10cnVuaworNjc4NiA5MzdmNjlmZDQzZmVhNWU3OGIxNjIxMmI3OTQyYTk4Y2JlNzBkYTIzIGxlZ2FjeS10cnVuaworNjc4NyA5ODQ3ZGU5NDA3OTAyOTlmY2VjZjJkMWI5MDFjNjk5MTU5MDA2MmRkIGxlZ2FjeS10cnVuaworNjc4OCAzYjM4NzBiOWFjZjI0Mzk3NjdhZjg1NWUyOTlmOWY5MDRhMDBjY2Y4IGxlZ2FjeS10cnVuaworNjc4OSA0NmQ3MzZmYjlkYTMyMjgyZDUyOGFhZWNhNTliMGU1ZDBlNGQxMjEzIGxlZ2FjeS10cnVuaworNjc5MCA3NzI4MjhjMWIxZjY4NzQxOWE1MjE3YWNkMTU1YWYxY2YxMGZkNGZkIGxlZ2FjeS10cnVuaworNjc5MSAwZjUxZjFkNzBkNDUyNmZjYWE5OWVlZTYzYjYzYmNlNTA0NzI2MGM0IGxlZ2FjeS10cnVuaworNjc5MiA5N2QzNjUyZTU3ZDM1YzIzYTFkZjJkNTAzNGQ2MzE0MzZmZmU3NzI3IGxlZ2FjeS10cnVuaworNjc5MyA5NzEzMzk5NmUyMmYwZjJhMjA1YTE1YzlkYTM5YTIyY2M0MTk1YWNiIGxlZ2FjeS10cnVuaworNjc5NCBkNTg3MTk2ZjliZWZhNWVhNmVlZWVhMjFhNGM3ZjhjN2MzMDJhYTEzIGxlZ2FjeS10cnVuaworNjc5NSA5ZDQ0NTAzNTA0NTFmMWViZGU3ZDZiNmMwMThjZmIzMzgwNWZlMWRlIGxlZ2FjeS10cnVuaworNjc5NiA3NzM5N2Q1MWY4OTIwNGRlYWFlNGQ3OGEwZTVlZDFkNGU3ZTg2YjUzIGxlZ2FjeS10cnVuaworNjc5NyAzMTRjMTM0NDVhMDJkZjAwMTRjZjFkMzhiNTlhMjExYzkzOTllY2UwIGxlZ2FjeS10cnVuaworNjc5OCAxYWZjZDFjZDMzM2I1N2MzZmYxMDQ3YjlkNTdmMTcxMGM5NmNkZjdmIGxlZ2FjeS10cnVuaworNjc5OSAxMmMzODY1YWVhYTAzNjM1MDY5OTRlNDk5OGI3NjU4ZmY2YzgyYzljIGxlZ2FjeS10cnVuaworNjgwMCAwMjdmZjE1NTRlNjYyYmZmMmNiM2RiOWEyZDhkMzI1YmIwODAyNjdlIGxlZ2FjeS10cnVuaworNjgwMSBmYjczMGZiMTNmYWI1Y2FlNjc0OTVmNjdjNGMwMDIzYzk5YmY5NDAyIGxlZ2FjeS10cnVuaworNjgwMiBiMDNhYjM1ZDUyZGY5NzdjOWJkNzNhZWEyYjU0ZjIwYWZmN2E3NDM5IGxlZ2FjeS10cnVuaworNjgwMyBhMjQwYmU1YmU2YjRjNDYzYTQ3MjE1Yjg5NDAyNmJlY2RjNTBiN2U1IGxlZ2FjeS10cnVuaworNjgwNCA5MDVmN2I0YjEzMjM4NzA3ZmU3YmI5NTU5ZDBkYTFkMTZkMjVlNzA0IGxlZ2FjeS10cnVuaworNjgwNSBjMmViMzhiNjc0ZjMwOTg5MjQ4YzY1NGRhZDg3OGY2MzUwOWVkNDI0IGxlZ2FjeS10cnVuaworNjgwNiBkMDQ0NjlkMDI1NmNlOGVmMWJiMDQxYWVlNjRjY2FlMGZjOTE3OTYyIGxlZ2FjeS10cnVuaworNjgwNyBlZTIwMjYyMTczNDk5YzRlNWM0ZjEyNTVjMThlY2M5MWQxNmEyZjRhIGxlZ2FjeS10cnVuaworNjgwOCBmMzdjYmZhYTczMjgxMjlhMGQ4ZGYyOTI0ODIwOTBkNzUyZDU4ZGIyIGxlZ2FjeS10cnVuaworNjgwOSAzNjZkNzJmMTI3OTRjNTY5NTdiYzc1ZTQzOGM5ZjcyNWFjM2QxNTQ1IGxlZ2FjeS10cnVuaworNjgxMCA0ZGJmZDRkZmUyODFjOTEyNTUyY2IzYWU3M2RmMDQwOTk4ZWM4ZDVkIGxlZ2FjeS10cnVuaworNjgxMSAzNzY4MjJjNjU4MTA4NDNlZjg2MTJkZGQyM2JjMDYyNGM1MjIzMjY4IGxlZ2FjeS10cnVuaworNjgxMiBhZjE2ODRmYzljNjMyNGQ4ZDI0MWUyMmI3ODFiZTY2ZmFhOTQzYzJmIGxlZ2FjeS10cnVuaworNjgxMyBlN2JhMDkyYzNjZjNjNzE1M2I1ZDliNDJkN2EyMzdiMWU0ZmFlZmFjIGxlZ2FjeS10cnVuaworNjgxNCAyZGY2MmRiMzY2Yjc2ODMwMmFiMzQ0ODdkMmI0NjNkOGYxNmYwNjViIGxlZ2FjeS10cnVuaworNjgxNSA1YTc1NTEyMzYwNjM1YWUzMzY3MTkwZmUwZWRkZWVhNDM0YmZjNDM4IGxlZ2FjeS10cnVuaworNjgxNiA4OTcyOTdhYmU1YjQwNWMxNjJiMWQxOGUzYWZhNmUyYzIzYzU5MWFkIGxlZ2FjeS10cnVuaworNjgxNyA0YmJkZTgwNGI2OTc4NGI0YjBmMGM1OGM3MDUwNTNmZDg2MTNkNjAzIGxlZ2FjeS10cnVuaworNjgxOCA1Y2JkYmE0ZDJlMTUyNWQ5NDIwYWVhOTc5YTEzNGNmMGFjMDg3MjVkIGxlZ2FjeS10cnVuaworNjgxOSA0ZmI4ODRiZjE0N2NjMWMxYjYzYzU1MGQ1MGJhOWVkYzI4MjdhNGM5IGxlZ2FjeS10cnVuaworNjgyMCA3YjYwMGU3M2ZkMmE4YTBmZmQxODI4MDkzZjZiNGNhOWEwNDEzM2FjIGxlZ2FjeS10cnVuaworNjgyMSBhNWMyOWFjY2M0MzhlODBiZTIwMTQ4MTAyNWFkZmMwYzA5YTQ3MGExIGxlZ2FjeS10cnVuaworNjgyMiA4NTJjYTIzYzgwY2NlMDBmNTEyYTc5NzM3OGYxYmQ1YmZkZjVhMDZmIGxlZ2FjeS10cnVuaworNjgyMyA5ODNkZjQzNjQ1OTU3MGZkODU2MWJhZWY3NmEwYWEyNTg2NDU1YmM0IGxlZ2FjeS10cnVuaworNjgyNCBhMjA5OTE5NDYyODUwM2FiZTc2ZDcwYzQ3YmEyMzA5NThiYzA2NmU1IGxlZ2FjeS10cnVuaworNjgyNSAwMmEyNGU0OGIzNzZlNTZiNDliY2U4ZmYxOThkNzMyMDcxY2UwN2RhIGxlZ2FjeS10cnVuaworNjgyNiA2ZWMwY2FlYWY4MjMwZDhlZmI2MTA3YjRjNGJkODA1MjUxZGNkODA3IGxlZ2FjeS10cnVuaworNjgyNyBhYWM4YTk5YTFmOWM0ZmEzMDVkMGIyY2U2MzQwYzExNmYyNDgyOGRhIGxlZ2FjeS10cnVuaworNjgyOCA2OTI1MDcwMzk1M2EyYTcxMDcyZjA5NmJjODYyZjk2NWU5ZWRmOTI3IGxlZ2FjeS10cnVuaworNjgyOSBlYjQ1NWQ5OWJhOTgyMjZmYjhhYzRkYWQwYWIzZmJkOWNmZmEyOWZhIGxlZ2FjeS10cnVuaworNjgzMCA5NWZmODlkODNkNjM5N2E4NGVkODFjMTAyNTAwYmUzZTlkNGE1NmViIGxlZ2FjeS10cnVuaworNjgzMSAyOTEzNTk3NDQzYjkwMGUwMGI1ZTE1OTEwZGY0NzYyNTgwMWQzMzMxIGxlZ2FjeS10cnVuaworNjgzMiAwMjEyYjQ4MDk0NGJjMjAzOTdkNjg5ZDk4MTg4NWMyMTUwMTBlMjEwIGxlZ2FjeS10cnVuaworNjgzMyA0ZTAwZTVkYWE2MTI4ZDI4YjA3NTJmY2ExMjhlMzkzZWRhMzFlYjRiIGxlZ2FjeS10cnVuaworNjgzNCBkYmYyNzM3ZDJjODFjYTNlM2NmMzlkYjM0OGFkMzg2NDc4YThkMGFlIGxlZ2FjeS10cnVuaworNjgzNSBhZjc1NDk2MWFjYzUyNGM5MTAwNTAzZDliNzNlNzBhNDI2YWI0NWQ0IGxlZ2FjeS10cnVuaworNjgzNiAzODM2MTFiZGE5ZTZkZWU4OWFiZGE1NTQxOGI2MzUyZjBhOTMzZTEyIGxlZ2FjeS10cnVuaworNjgzNyA3YjFmNmU1ZTkyOTQ2MzBjNGIwYzRiZDI2ODNhNTUxMTcxMzI3ZWI5IGxlZ2FjeS10cnVuaworNjgzOCAzNDE4MmE2NDA4ZTA0Zjk1YjAxZDJiMmI5ZjhiMmYwYWFjZjk1YTViIGxlZ2FjeS10cnVuaworNjgzOSA5MTNmYzlmZjQzYWMxMjFhOTcyMDlhOGM2NDIwZGUwYzI4ZWJiOTcwIGxlZ2FjeS10cnVuaworNjg0MCAzZWI3NGRmNjcyYTM5OTczMDFlYWZiMDE2MjMxNGQ4MWMyNTNhY2FiIGxlZ2FjeS10cnVuaworNjg0MSAzMTVhNzkxOTlmYzhlZDdjZmQ5YWM0YWU5MWYxYWNhYzlmYTM4OWVjIGxlZ2FjeS10cnVuaworNjg0MiBhMDVmOGQ4YzY3NjhmODFjZjIyNWIzMGUyZDJhYTAzNGM1Mjg3ZTNkIGxlZ2FjeS10cnVuaworNjg0MyAzZTc3ZDY2MzdhMmI5MGQzMmE2OTc0MGVkMDkyMTcyODIzZjJmMjZmIGxlZ2FjeS10cnVuaworNjg0NCBhNzA2OTJhNmQ4Y2NmNTg4MGYyZTg0NmM5MWE5MzYxZjFkY2M5MjBhIGxlZ2FjeS10cnVuaworNjg0NSBjMjc3ZWU4YzY2OWNkYjgyMGE5ZDNiYmUyM2Q2MDM1ZDUyNmRmYWViIGxlZ2FjeS10cnVuaworNjg0NiBjYmQ0MzRiNDZjMWE2M2YzMjI0ZjhhODEzMmEwY2FiZmE5MDdkNmM1IGxlZ2FjeS10cnVuaworNjg0NyA5OGVhODAwNTFkYmM5MWQwOTcwMmI1ZGMyNGIyMzcwMDQ4NWM3MDIzIGxlZ2FjeS10cnVuaworNjg0OCA0NjE0MGY1ODU2ZDkwYTBlYTg0NmNlOThlMWE3YmZlMjAwYTFhN2IwIGxlZ2FjeS10cnVuaworNjg0OSAzMWM3ZDhmNDVhZWIwODU1Nzg4M2JmZTdjZjY3MTkwNWQwZDJhNTA0IGxlZ2FjeS10cnVuaworNjg1MCBkNGY2NGZjNDJkODQ0OTA1NGYzMzE3ZWQ3NDkyMDY5YTM0NDYzZjVhIGxlZ2FjeS10cnVuaworNjg1MSA1ZjhhNjUzYjE3NzlhNTBkZTdlY2NjZWMwNDhkOTE5YjZhNDgxNzkxIGxlZ2FjeS10cnVuaworNjg1MiA5NjY5OWFmNDgxYmE5ZTk4MmQ0MWFmZGFlYjQxYmFmY2FjYzJmNWQxIGxlZ2FjeS10cnVuaworNjg1MyAzMDYxNjc2YTY1OWFlM2U4ZTc5NmEwODk3MGFkOWJkZWJkMjYxMzU5IGxlZ2FjeS10cnVuaworNjg1NCBhZjFiZjBmNmUyZGIxMTAwZjRmYTJlMjlhMTBmNjFlNzk4OGEyNDQ4IGxlZ2FjeS10cnVuaworNjg1NSA3OTg3MzJlNjliM2JhMWE2MjRkOGNiOTk3ZDhiNmUyMjJjNjFlZTQ3IGxlZ2FjeS10cnVuaworNjg1NiBhZDQxZGVjYzVmYTkzZjljODhiNWE4ZTY5YmNlMjg0MzI4YjgwNWE0IGxlZ2FjeS10cnVuaworNjg1NyBlMDMzYzc4NmYyOTcxYzc2NDc0OWY5ZjM5NTI0MGMwZTVjMzhjYjFmIGxlZ2FjeS10cnVuaworNjg1OCAwZGU5YzU1NGJhMDBjMGQ2ZWY1ZGEzNTgxMDRkMTFjYzZmYmYxNzQ1IGxlZ2FjeS10cnVuaworNjg1OSA3MGNjMjM4ZDU2M2U2MjI3OTJkZTdmZjgyODFjMzYyZmU0MzFmMTAwIGxlZ2FjeS10cnVuaworNjg2MCAzYzdlZmViNjA3YTA3MGNiNDQ1OTJhYzk5Y2YyZmY3YWNiM2M3YzQxIGxlZ2FjeS10cnVuaworNjg2MSAyZTI3MmJmNWE0M2U4NDQ3YmUwOGI1ZTZiYjcwYWVkZjEyYjhiYmFhIGxlZ2FjeS10cnVuaworNjg2MiBhNzdmNGMyMjY5N2ZmOWFlZjdmNTdiN2NiNTRjYjAwZmZhMmQ5NDY0IGxlZ2FjeS10cnVuaworNjg2MyBhZGJlNjMzMTdjY2IzZGNjNjdhNGY1YjQ1MmY2YjU3YzQ2ZWZiZjc4IGxlZ2FjeS10cnVuaworNjg2NCA3Nzk1NGZlNDM3NmNiNDkxZTI3YjVhNDg0M2E1ZjUwMDZhODIyMjliIGxlZ2FjeS10cnVuaworNjg2NSA2MmI2NWJlMmI3N2YxYjFhOWQ3MTc2YTJiNWVlNmIzMjQ1MGFkN2ZiIGxlZ2FjeS10cnVuaworNjg2NiA3MmEwY2ZkYTIwMDQ0NzQ1OTA4Y2Q4ZDUxOWE2NTEzZDg1NDc5MDgxIGxlZ2FjeS10cnVuaworNjg2NyA3OTgwODYzMjM0NjQ1Yzg1OGI3NTNmZWFmMDUyMzFlODk2YTE1NzIyIGxlZ2FjeS10cnVuaworNjg2OCA1Yzg2ZjYwNTM5Zjc0MjdlMGFkMTNjZjA0MWNhMDYxNGU4N2JiZjI5IGxlZ2FjeS10cnVuaworNjg2OSA0OGQxZjViZWIxNmJhNjQ5YWQ0MmQ2ZWExMmM0N2FiODhlNTc4NjA0IGxlZ2FjeS10cnVuaworNjg3MCBkNThhODQ5MTVmYWRlMTlhZTJkODJmMGQ4YTU5MTYxYjQ0OTNiMTI3IGxlZ2FjeS10cnVuaworNjg3MSA4OTA0MzRkNWJlYzJmOWMzOWFhNmVhNmQxMTE2ZTQ0MTgyMGRmMGI0IGxlZ2FjeS10cnVuaworNjg3MiBlYzRjNDJiZWE2OWQ2Y2ZiMTM5YzRjNDRkY2UxMThiZThiOWRhNTBkIGxlZ2FjeS10cnVuaworNjg3MyBmZGQxMjlmMDU3NGVkY2M2MTdiOWVhMDA2ZWM2NTk3ZmZiMWFhNGIzIGxlZ2FjeS10cnVuaworNjg3NCAwOTE3NzVhNWUxOWIzNWU5NDQ1MWIwNDcxNzYxYmU2MzRlN2IxOTdhIGxlZ2FjeS10cnVuaworNjg3NSBkMTZiODYyMWEzZjBlYWRhMzkwNGIwNmM1ZDYzN2E5OWUwYmU1YTk3IGxlZ2FjeS10cnVuaworNjg3NiAxZDI3NWNkNDJjOWIxODdjNjMyOWFjOGFkMjI1YjZmNzEyYjhmNzgxIGxlZ2FjeS10cnVuaworNjg3NyAzYjNmN2MzZjZkYTJmOGYwZDVlODRlYjZmNjE3NDViZDY3M2VlOGRiIGxlZ2FjeS10cnVuaworNjg3OCAxZTJkMjgwNjA2ZDFlZmY4ZDIzM2Q3MzhmYTk4Zjc1YmMwNTg2YTg5IGxlZ2FjeS10cnVuaworNjg3OSBlNTI4YzBhY2U0ZTVkYTlkMjFjYzNlMjg3YTUzNGIyODVkMTUwY2E3IGxlZ2FjeS10cnVuaworNjg4MCA2ZjAzMmVhMjY2NDJmNmRjZTAwY2VmYWU2MTc4ZDUwMmZiY2EyNzFlIGxlZ2FjeS10cnVuaworNjg4MSA3ZGRkOGIzZjY4MDJmMGUyZTkzMzllNzg2Zjg5ODQ1NDFhMmJlZDE4IGxlZ2FjeS10cnVuaworNjg4MiA2Yzc3MWVhMzhlZWU4NzI5YTEzMWVjYzQ5NjI3N2Y2ZjBhNWQ4M2E4IGxlZ2FjeS10cnVuaworNjg4MyBhOTgwMTFmMGY5Y2E1YjRhYjFiM2NlOGQxYjgxNWQ2ZDIxNjY5ZDc5IGxlZ2FjeS10cnVuaworNjg4NCA0Y2VmMjNlMWRjY2E4N2ZmMTg3MDhkN2JkNTdmNjkwZjk4MzM3YjY1IGxlZ2FjeS10cnVuaworNjg4NSBkNzM4NDkwYzhkYTE5M2MyZmNlYzBjMTg1YTg0Y2U0YjUzNTFhYmY5IGxlZ2FjeS10cnVuaworNjg4NiBhYzMzMjRlNjM4ZTk2YzI0MzhlMTU1YTI4NjljNGZhNmNmZTEwZmRlIGxlZ2FjeS10cnVuaworNjg4NyA3N2QzZDMwMTM2OTJmZGMzYjQ0NDEwYjFhMzk2MGQxOTQwMDdiMTM5IGxlZ2FjeS10cnVuaworNjg4OCAwMmE2OGQ2MjM4MDVjMDEyMTVlMTUxOTI3ZTMyYzQ2NGI1MTU4MjVhIGxlZ2FjeS10cnVuaworNjg4OSAzZGJlZDBmZjljZjIzMzRkNzYyN2ZiNDk3ZGU1YzNmYTdkNGVmNTZmIGxlZ2FjeS10cnVuaworNjg5MCBmY2U0Zjg3ZTU5NzQ5NDdiODEzZTUwNTIwNWZkZGYyZTg3ZTc2NWJjIGxlZ2FjeS10cnVuaworNjg5MSBjMTQzNWM1ZGEyODE3YjMwNjQ1OGVlZDIwYjI3OGQ5OWNjNGRjMDJiIGxlZ2FjeS10cnVuaworNjg5MiBmNDFhYjcxM2Y3ZWFiZTkzODFiN2FmMTA3NmU5M2U0NzY1MjAyZTY1IGxlZ2FjeS10cnVuaworNjg5MyAyZWFjZDJjOGVhYmZmNDM1NTQ2NzBlYTc4ZTM4MzlmNzlkNmI5Y2VlIGxlZ2FjeS10cnVuaworNjg5NCA3ZmZmZjY5NWYyMWRhNzcxOTRiYzVmNDdmMDAxNjhhMmVkMGMxZGQxIGxlZ2FjeS10cnVuaworNjg5NSA5M2QwNWUxNzgyMTY0ZGY3YjBlN2MyZmJlNjQzMDlhZGVhMjZmZWZiIGxlZ2FjeS10cnVuaworNjg5NiBkZDVlOWU4NTcxODY1OWQ2NWM0MWExODUyODdkM2FjYjEzMzU3N2NiIGxlZ2FjeS10cnVuaworNjg5NyBlZjc2MDRjMDc4Nzc4MWI5MTNlNzBlNmZlMDE2OWI5MTc2ODBkZTBhIGxlZ2FjeS10cnVuaworNjg5OCA0ZjZjNTYyOTJkMzRmNmJkZTU4Y2VkMTY2Yzg5NDdkMTM3NThjOGFlIGxlZ2FjeS10cnVuaworNjg5OSA1ZTAzODg1NmZhNTY4ODZmYjZiZjgyMGVhMGQyNjE1OTg2MGRkOThjIGxlZ2FjeS10cnVuaworNjkwMCA3NWFiZTczN2U3MGI2MTcxOWQxMTFmNzA5N2QzZjRhNTczMGMzZDkzIGxlZ2FjeS10cnVuaworNjkwMSA5YzdlZjAzMGJlYzgwMTFhM2IyNGY2MTMwMGUwNGFmMGU1NjczZTgwIGxlZ2FjeS10cnVuaworNjkwMiA5MzhiZTdhMzEwNmYyODViZDcyYjUwNDQ5Zjc3ZDc2N2Y4OWE3MDhlIGxlZ2FjeS10cnVuaworNjkwMyAzNGVlYjYxZjEwMjgzODZkOGE1MjQwMzAzNWJlYWFiYmQ3ODc0ZDE3IGxlZ2FjeS10cnVuaworNjkwNCA5Mjc1MzIwNzE0OTA0NDEzMWVlMmE3NmUxNzdjNWJkMTI1MjdlODc2IGxlZ2FjeS10cnVuaworNjkwNSBmMmY5NDZiZDdmNDdjNWM5YTYzNWE5NjhhZjQ2NWRjNzkwOGYxYjI4IGxlZ2FjeS10cnVuaworNjkwNiAxY2NjZTVlNGY4MDZkNTQ5YzFhYTNmYWI5YzQ4YTcwOGE0YzQ5ODYwIGxlZ2FjeS10cnVuaworNjkwNyAzNDBhZGZhYTk4NTQzZjAxOWViMGZlZTg2N2FkOWYyZmZmMGQ3ZmJiIGxlZ2FjeS10cnVuaworNjkwOCBhYzJhNjI3Y2UzYTdlZjc4MDM3ZTkzYTNkZDM4OTdhOWIyNzMxNjgxIGxlZ2FjeS10cnVuaworNjkwOSAyNWM1MzI4Njc2M2QwMzU5ZWIzMjM4MmYwZGM0MDI3NWI1ZmExOWVkIGxlZ2FjeS10cnVuaworNjkxMCBhMzYyMzU2MzEyNzM3Yjc3Yzk5YjI0ODA3OWM4NTBmNmNlZjdjNjI4IGxlZ2FjeS10cnVuaworNjkxMSA3ZGU0NTdiZGM5NDY2NzkzODY2MTRmZTIzYmYyMmU4ODVhYWE2MGEwIGxlZ2FjeS10cnVuaworNjkxMiBlODhiMzIxNWU5NGE1OTAxOGI4NGYxYTk2NTc3YmZkMzFjOTcxYjU3IGxlZ2FjeS10cnVuaworNjkxMyBmYjEyMzdiZjcwMjJiYjc3NzM5NzhkYjMyMTBhMmFlZTk4MDc3YTdjIGxlZ2FjeS10cnVuaworNjkxNCBmY2UyOTZkYmIwM2UxNjk5ODEwM2I3YTAzZWJmNTIyOTE4NTI0MGU1IGxlZ2FjeS10cnVuaworNjkxNSA3ODAxMGNjYjhhNDYxODgxZWJjYjU1NDM2YzgzMzA0ZmZmYTMzYzYzIGxlZ2FjeS10cnVuaworNjkxNiAwNTQ5ZTM0MjhkNTc4MzVkZDVhY2FkN2E5MGU3ZGM5YWYwZjNhZDEyIGxlZ2FjeS10cnVuaworNjkxNyAxYzI3NDQ5MTMwYmE0NDVjMjExMDE5MzExYjIyOTM4YmM4MTUyZDEwIGxlZ2FjeS10cnVuaworNjkxOCBmYTlhYmY5YTg2MjRlNmY2ZTc0NWFlMTVlY2Y0Mzc3ZWMzMjJiOTkzIGxlZ2FjeS10cnVuaworNjkxOSAwMmIxZjA4ZTMwYTAzY2FlOTRmYmY3MjU5OWNkNjI3ZjcyNWNjMTk0IGxlZ2FjeS10cnVuaworNjkyMCA5NDUyMTg4MDg3MWQxNjJiZGNmOWZjMzViODlhMDRmZDNlZGVlNzRjIGxlZ2FjeS10cnVuaworNjkyMSAxYmEyMmY3NDk0ODlhNDM1NGE3YmMzNjEyOWQwNDA0MzJmZmExM2UzIGxlZ2FjeS10cnVuaworNjkyMiA4NWQzODQ1NmFkZjA5NDg1YjQwNDJiMDBhYjNmOWE4ZWU3NjQ3Y2MwIGxlZ2FjeS10cnVuaworNjkyMyAxZmI5YTU0ZTRhOWMxNTdiZGE0YWYzNTI5NTc4MmIwYzM0MWZiMGJmIGxlZ2FjeS10cnVuaworNjkyNCA5MWM2OTY0NTdmZDRlZDJjZDMxNGIwYjZhMGVmMDUwMzhmMjhiYzc5IGxlZ2FjeS10cnVuaworNjkyNSBjNmZmYjRmYzRkYTQwNjYyNDczMjEzNzA1NzdmZmExZmNjMzJiZDdmIGxlZ2FjeS10cnVuaworNjkyNiBlZGFiMDk3ODgyZDgwZTQxYmQ2Yjk5NDY4Mzg0YTk3Y2I2NjUzZjJhIGxlZ2FjeS10cnVuaworNjkyNyBkY2M0Y2Y5ZmE2MmE4NmNiNjk0ZDEyMzU1Mjk1MGQzYzZmN2JiNWI2IGxlZ2FjeS10cnVuaworNjkyOCA0YzE2MTU0ZmZmYjk3YjQ2ZjI1ZGM1MjBkY2M0NzE3MmFhODI0NzEzIGxlZ2FjeS10cnVuaworNjkyOSA3ZWVlZmQzMjY3ZDQ1MGE3Mjg5NzBlMTk4N2Y5MzhjN2I0OTdkOWE3IGxlZ2FjeS10cnVuaworNjkzMCBhY2IxOTg4Yjg4NTJmYjg5NzZhMDc5Zjk5ZjRlZWUxNjAyNDkwNDg0IGxlZ2FjeS10cnVuaworNjkzMSBhYjYwYzU1ODVkMWIwMDVjZGM1NGJhZGZkNmViMzQzZjZkOGY1ODg2IGxlZ2FjeS10cnVuaworNjkzMiBkODc1OWQwYjVhNjdjYmJkMGEzYzBlYzZiYmE1ZTU3YmY5YTY0MTA0IGxlZ2FjeS10cnVuaworNjkzMyBjOTFhYWNiZjhlZDQ2NTI4OTQwYmIwNmU4NmNjY2QyY2U5YzAxNGExIGxlZ2FjeS10cnVuaworNjkzNCA1MTk3ZTBmM2YwZmZjZWQwYzllYmI4NjY0YTIzMTQwOTk4ZTdiZGFhIGxlZ2FjeS10cnVuaworNjkzNSBhODI2NGQ3MGYyODFjNjA5OGJmMDJiNWMzZDczMTVmOWQxNWFiMGVmIGxlZ2FjeS10cnVuaworNjkzNiA2Zjg5YTQ0YTg2MWM3YmQ5YTJhNjgyNjI0MTc1NDhkNWUxOGMyZmRhIGxlZ2FjeS10cnVuaworNjkzNyBjNmE0Nzg2ZTdmOGVhODMwMWJhYzE0YTc1OTViYWU4ZGZkNGY3ODEzIGxlZ2FjeS10cnVuaworNjkzOCBiYWFiZmI1ZDYyYTg4Y2U0MWE0ODkxZmVhYWRhY2FmY2NlYTZjOGU0IGxlZ2FjeS10cnVuaworNjkzOSBiNTFkYzJmYjQ4ZTE4MDRhZGQ1Nzk5MTc4ZjViNjJjNWRiZDk3NTNkIGxlZ2FjeS10cnVuaworNjk0MCA4ZDA1NmY1M2E3ZjYzMjVhOTA3ZWMzNWJjZDZjZmE1YjQzZGIzMzkwIGxlZ2FjeS10cnVuaworNjk0MSAwZDYxZjZjMzhiMzdlMjU3OGE0OWZhOTc2N2E0M2I1NDRjMGQ5OTgxIGxlZ2FjeS10cnVuaworNjk0MiA2MDBmNWI4YTE2Y2IxYzQ3NWJkYzI5YzUzOGU4ZWVmZTUzZGZiN2IxIGxlZ2FjeS10cnVuaworNjk0MyA1ZDdmYTNmMmNlYzNkNTYxMTZiNmE2OGE5MjJjM2I0MjQ0YTU0YzcxIGxlZ2FjeS10cnVuaworNjk0NCBkOWM1MTU1YmRhNTAwMmYyY2U4OGM1NDllODg3Mzk3ZmNlZTg5MTcyIGxlZ2FjeS10cnVuaworNjk0NSAxMjJjOGZkZmU0ZWY5MWFhNzViZGQwMDI5ZDNhMGI5NWNhYjU4MzFiIGxlZ2FjeS10cnVuaworNjk0NiBmNjM0NjA5ZjQwMjhhNWUyYzc5MWUwZDIzZTdhOTdiNDQ0ZDFlMmZhIGxlZ2FjeS10cnVuaworNjk0NyA1NWZlNjRjMjExNDVjZDg5MzI3MzkxY2VhN2UxZGRlYzQ3NTZlOTY4IGxlZ2FjeS10cnVuaworNjk0OCA0ZDZiYWJmMmU0ZTE5MTNhZDk2YWI4ZGRkYTJmYjNhZDUyNWI1ZTY3IGxlZ2FjeS10cnVuaworNjk0OSBmYjJkMWQ1ZTE0MWFhNDZjZGJhY2E0NTgwZGY5NTg5NTMyMDI2OWQ0IGxlZ2FjeS10cnVuaworNjk1MCA3ZTVmMDM5NTMxMTA1OWJkNDRmNmUyZTNjY2EwYzIzYmQ4MjBmYzRkIGxlZ2FjeS10cnVuaworNjk1MSAyZmRiYTEyNjc2MTM5ZWY1ZmQxYWY2NGY3OGIxZTYwOTA0YTQ5NWEwIGxlZ2FjeS10cnVuaworNjk1MiAyNjdhZTU4MjMyZDlhODZhOWVhYzU1MTQzMzJmMDljOWNmY2I5MWQ2IGxlZ2FjeS10cnVuaworNjk1MyAyMzQzODAzMzE4ZTRmNmY1NjMyMTRhMGMwODFmNDg2MmE2OTI4M2IwIGxlZ2FjeS10cnVuaworNjk1NSA5ZTg1M2E1ZjA0ZmY5ZWMxOTIyZWFjYTcwMGE0NDE2YzIxODQ5MmE2IGxlZ2FjeS10cnVuaworNjk1NiBkZDcwOWVkODIyNjI3MGRlZmUwMWRiOWNmZTk3MzQ2MmNlMjNjM2UwIGxlZ2FjeS10cnVuaworNjk1NyAzMjRlMWUzNmU2NTJiYzIxYTM1ODQxNjVlMDFhMWZjZmQ5OWRiY2Y4IGxlZ2FjeS10cnVuaworNjk1OCAxZmVjODhiMjJlODdmODI0YzQ0MWVjMDRhZGVlMmI1YjBlOWViYzBjIGxlZ2FjeS10cnVuaworNjk1OSBhNjBkODUyMzdmZGI4MWVhNTcwZDA4NzNiMThmMTM0NWMyY2IxNzZkIGxlZ2FjeS10cnVuaworNjk2MCBkOTA0ZjUzOWZmZDljZThlZmVlMTBiMDEyNzg0NGJhZWViM2QzYmM3IGxlZ2FjeS10cnVuaworNjk2MSAzZDQzNTEwYjVlMTlkYTVhNjQ1OWMwZDczYWE2MzVhMGY1ZGZhMzQzIGxlZ2FjeS10cnVuaworNjk2MiBlMGMxYmQwYTc0YTkxMjc0NGNjZmI2MjViZWI2MzEyY2RjZGU5ZTc4IGxlZ2FjeS10cnVuaworNjk2MyA4Y2UxODUzOGUzYmJmYjFlNDI5OTYxMzY4NzBjNTIzMmFmOTUxNjk1IGxlZ2FjeS10cnVuaworNjk2NCAwZTYyM2U4MjMwMWYxZmIxNDZmMDUzM2FjYmU3ZmU0ZTM5NjQzNTIwIGxlZ2FjeS10cnVuaworNjk2NSA5NzRkYzM2ZmVjZDYyYzE2ZjZlMmNlYzllNGM3MTA5YmM2ZWExY2ViIGxlZ2FjeS10cnVuaworNjk2NiA2YTc1YjNjZjAyM2NmYzdhYzNiMTgwN2U3MTMxZmY5ZGE4NDcwY2JlIGxlZ2FjeS10cnVuaworNjk2NyBhZTc1ZDRhMWY1ZGRiMzU3NzVjNjlmY2JjMDBkZTdhZjUzMDY5YTA0IGxlZ2FjeS10cnVuaworNjk2OCA5OWU3MGM0NzJhMjAyZGE1MTI2NjRiZjZjMTk5MGM4MzAyNzIxYzU1IGxlZ2FjeS10cnVuaworNjk2OSBhOTU1NDkyNjlkZTJiMDMwMjQ5OGY1NmVhYmM2MGVlYmFjZDE1N2JkIGxlZ2FjeS10cnVuaworNjk3MCA1NjllM2FmNTIxODc1ZGVmZjY3NDZjM2NjOGJmMTUyMjczZTZiY2JhIGxlZ2FjeS10cnVuaworNjk3MSBlYWU4YWIzZDI0ZTAzMDA5MmUyNzRlNDFkYmJkODE3ZGViM2RlYzE4IGxlZ2FjeS10cnVuaworNjk3MiA5MzM1M2UxZDFjNzYwNGYwNzU3NTI0NTdiZTMxZTI2MmMyM2FhODA5IGxlZ2FjeS10cnVuaworNjk3MyBkODAxMjVkN2RjNzM0YTFmOWUxNDU5ZWZmODY0N2NlODBiZTU0MDhjIGxlZ2FjeS10cnVuaworNjk3NCAyMGZkOTY2NDg1MTA4ZGMyZTA4YTdjNGUxZTIyYzY3NzNiYjkxODFhIGxlZ2FjeS10cnVuaworNjk3NSA0YmEyMGY0NDY1NGJiZTdlMGNjNDkzODY5YTIxZmUyNjkxM2ZhZWM2IGxlZ2FjeS10cnVuaworNjk3NiA1NTlhYTQ3YjJlMmNmY2ZlZTY0YjE4ZjlmYzJjNzk1OWFmZTQxZTAxIGxlZ2FjeS10cnVuaworNjk3NyA5NDFiMDUxYWY2NzVlMmI3ZWU3NjU4MzgzOGJiNmM5NDMwNzQ0YjYyIGxlZ2FjeS10cnVuaworNjk3OCA2NWQyZDhlNjdkYTMyM2I3NGI3MmU0ZDgwNTUzNmZhYTZmZDI0YzFlIGxlZ2FjeS10cnVuaworNjk3OSA4NThmYjJlOWJjMTcyM2M4OGI5ZWU3ODE1YjExODU2NDIzYmY4YTRhIGxlZ2FjeS10cnVuaworNjk3OSBkYjQ5NDk0YzkzZGM3M2RlMDZkNTcyMWM3NGVhYjUzM2E5NDdhOTJjIGxlZ2FjeS10cnVuaworNjk4MSAyYjIxZWEyZjM5YjQ0MzI2Y2IyMGMxNWY5MDhmMDNmN2QwY2ZlODExIGxlZ2FjeS10cnVuaworNjk4MiAxODkyN2FiZGMyNjI4MTk0OGJjYjk1NDY0MmE2ZjhhNzQ1MzQ0ZmYwIGxlZ2FjeS10cnVuaworNjk4MyA3MTg3YzcwOWViZmRlYTQxNDdhZjlkMjU5NzA3NzEyN2UyODJjOGRjIGxlZ2FjeS10cnVuaworNjk4NCA5Y2E1OTQyNDAyMGUwMGY2YmM2ZDExNTE5Nzc2ZWM5NjkxMDdjNzMwIGxlZ2FjeS10cnVuaworNjk4NSAxMWUwYzIyMDg5OTk3OTg2ZDM4N2YwMWE1ZTJlNzJkMDY2ODc1ZTk1IGxlZ2FjeS10cnVuaworNjk4NiBkZjJjMjEyZTRlYTNlYmNhYmVlZjYwZWI4YjQzNjFhYWU3ZGJmMTZjIGxlZ2FjeS10cnVuaworNjk4NyAyM2ExMDRkM2JjZWRjNzVjYzc3N2M0NjMxZTJlZjRlMjczNzlhYzhhIGxlZ2FjeS10cnVuaworNjk4OCA4NDc0NDVhZWFiMmQxOTBhNmM2YjU3MjY2ZGZiY2ZkYTU0MTQ3ZDA3IGxlZ2FjeS10cnVuaworNjk4OSBmNjk3NmI5YTg1YTQzZWY5YjQ3ODVhZTU1MjIzMWExMDU4YjJlODMxIGxlZ2FjeS10cnVuaworNjk5MCBhNzU4NThmZWY1NTA3ZWU3YWZmYjk3YzMwOWU0Y2M5MTA2NmU4YmZiIGxlZ2FjeS10cnVuaworNjk5MSA0YTdjN2RkN2IxZjA1NjMzOTM2MTczNmJkYjEwNTBhNWIwOGM4MGMyIGxlZ2FjeS10cnVuaworNjk5MiBhNGQyYWFlNzU3YThkNTE3NGE5ZjIyZjJkNjFhNmI0MDEwNjhlNTJmIGxlZ2FjeS10cnVuaworNjk5MyA2OTFlMzkyY2FkMzQwYmRiZjg5OTk4OWMxMTA4YzNkOGI1MDE0YTZhIGxlZ2FjeS10cnVuaworNjk5NCBmZDUyNGEwMDFjZTlmZWUyOWY4MTdjYWU1N2NiMjY5MmI1ZjJiMWNlIGxlZ2FjeS10cnVuaworNjk5NSBiNDA2M2MxMDFjMmNjZTMyNDkzOWY3MmJhMzI5Nzc5ODExZjU2M2QwIGxlZ2FjeS10cnVuaworNjk5NiA5N2E2MTc5NWExNjlhZmY3ZTFlYTdhY2RmZDhmMDhkM2IxNDAzODg2IGxlZ2FjeS10cnVuaworNjk5NyBkMjVhMGNjYmZkNmI4YThhMDg5YTU1YTlkMTk5MjcyOTNhYWVhNDdhIGxlZ2FjeS10cnVuaworNjk5OCA0ZDA2ODFmN2NmNmI2YjRiNWU0ZjExOTkwMTViNzZkYzJhZGU1MDE1IGxlZ2FjeS10cnVuaworNjk5OSBkMGMwM2MzMmU4ZDk0MzBkZmNhNDcwZDIzZmRkN2Y3NjU5ODBmM2RhIGxlZ2FjeS10cnVuaworNzAwMCBmZmVmMmMzMGRjNDhmZDA3ZGE4MmNjYTI4OGVkNjU3MzE0ZjBmMmIzIGxlZ2FjeS10cnVuaworNzAwMSBkYjU1YjgwYWFmMTAzOTRhNmU1ODk4YThiNDU5N2E5YTViOWRiZjFjIGxlZ2FjeS10cnVuaworNzAwMiA3ODk0YTBjZDhjNzU0Yjg1YzVkNzhmZDE4ODU2NmMyN2E1NzcyNTU5IGxlZ2FjeS10cnVuaworNzAwMyAyODI0Y2JkYmUxMmM1YmQ2N2E0M2FmZThmZTE2YmU2OTRjMzk1YzM4IGxlZ2FjeS10cnVuaworNzAwNCAzMzc1NjIzMzBmZDBmZDU5MDNmZDQxMmVhZGUwOThjMzcyZTFhNmZmIGxlZ2FjeS10cnVuaworNzAwNSA4MGJjYjAyZWJmNGVmMGFmNTQ4NjE5YzkxODEyMTEzYTlmZGY4OTI5IGxlZ2FjeS10cnVuaworNzAwNiA5NjAzYTYwYzg2OWJlMjkyMmVlOTg0MGE0OGNkYmVmOGJkZjBjMDYyIGxlZ2FjeS10cnVuaworNzAwNyAzMGNlY2EzZjEwNWIwZGE4MTA1NDMyMThkNmFhNzA0MDM0MmY5MGY2IGxlZ2FjeS10cnVuaworNzAwOCA2MmNlZjdlODk2YjZlY2FiMjcwNGYzMjkwMjdkMDk4ZDczYzBkOTMyIGxlZ2FjeS10cnVuaworNzAwOSBkOTBkN2I1NDFhZGFiMmY2ZGExN2RkNjgwZDI1OGI3MDQ5YzQwNGRkIGxlZ2FjeS10cnVuaworNzAxMCA5NDIxZDJmNjMwNzdhOTUyZjY2NmEwYjAwMzMzYzg5MjY4MTE4NmU5IGxlZ2FjeS10cnVuaworNzAxMSAwNTc1MDgzOGY4NDAzZjg4NjM1ZmY3N2RjYWI4NDRkOTIzODYxZTM4IGxlZ2FjeS10cnVuaworNzAxMiBiZjM3NjhiZDMxZjJjOTZkNTc0YTY1NzU5NzdkYTU3NDY5YTg1ZjU3IGxlZ2FjeS10cnVuaworNzAxMyA2NTE3MGRhMWQyY2E1YmM0YjMwY2Y2OWNmYjEwNDFjNWI1MjMyNzk0IGxlZ2FjeS10cnVuaworNzAxNCA0N2U3YzQyYjlkYzYzNTNmZGZkODgzZGU2NDk1ZWRhNzRjMGVlOGVkIGxlZ2FjeS10cnVuaworNzAxNSAxZjRmMWJlOGEzMzliOGNlN2VlNTE3ZTA4ZDA5MTMxODI0ODliNjU5IGxlZ2FjeS10cnVuaworNzAxNiA1NzQ4ZDVlZTE5ZWQzY2MwOTk0NTc0MWMxZTE3YzcwY2U5YzBiN2Y3IGxlZ2FjeS10cnVuaworNzAxNyA2NTIzMDNlZjkyNmIxZjYyZDJiNWU4MGNlYmU0MGNiOTdlYTAyMTBkIGxlZ2FjeS10cnVuaworNzAxOCBlNTIwNTQ0NDBlZmM1YjAyZmE5ZmQzNDYwMzIxNDMwY2JiNWFlOTlhIGxlZ2FjeS10cnVuaworNzAxOSA4ZDBiMDBlZDhjMmI1NmU2N2IzYjhjODFmZTJhNjNlNzlhY2Q2Zjg4IGxlZ2FjeS10cnVuaworNzAyMCA4MjBiZjFhZTdlMjU4MmRkNWYyNTQxMDI1NzJiMWQwMDk4ZWY4ZmNiIGxlZ2FjeS10cnVuaworNzAyMSBjYzY1MjFhMmNlMjFlZTg1ZmY2MWZmODg1ODEyMjY5MjdjZjdkZjgyIGxlZ2FjeS10cnVuaworNzAyMiA1NGM4MDA4ZGU4N2JiYjUzODQwZjJhODdjOWVjY2QwYzU3NjRjZmZlIGxlZ2FjeS10cnVuaworNzAyMyBiZDU1MWZiYjk1OTY1ODdiOTdmMTY5NjM1NTNhZjMzMjA3MmI0ZDgxIGxlZ2FjeS10cnVuaworNzAyNCBkYmM5ODgzNGVmZjJlYTU2ODk0YmM0MDhiNTBlYmU3YzcwZjcxNjQwIGxlZ2FjeS10cnVuaworNzAyNSBmMTI0NDAzNmViYWI2ZTM3MTE4OTJjOWMwZTdiNGUxNjMzZmQwZjY0IGxlZ2FjeS10cnVuaworNzAyNiBjZWEzMThiYjlkMmY0ZDhlNDcyNTRlZWU5YTQzYWQ1OGQyMjdlOTNhIGxlZ2FjeS10cnVuaworNzAyNyBlZmIyOTM4Y2U2NzYzZmNmMTU2NDk5ZDVhMTlkMTIzODYwZDRiMTZlIGxlZ2FjeS10cnVuaworNzAyOCA4OTAwMjEzNzY0YmExOWQyMzczOWRlNzRhOGQ0MmNlMzFjOGJlZjRkIGxlZ2FjeS10cnVuaworNzAyOSBmMDMxNDY2NTMwYWY2NzI4MzA4NGFlYzcwMDdkYjBkZjU2OWM1MzhmIGxlZ2FjeS10cnVuaworNzAzMCAwNDUwNzQyZjM2ZjRmZmQxMGY5YWZkNDQxYjU0M2ZlYjQzYzkzYjE5IGxlZ2FjeS10cnVuaworNzAzMSBiMjEzZDI1OGZmMzI3ZGVkNjM2ZGQ5MGUxZTRkZTQ0OWU3OTIyZmRjIGxlZ2FjeS10cnVuaworNzAzMiAyYzBjNjgwNDA3YjJlYzRjNDJiMDg4YzNjYjQ4OWVhMjMzZmJiNmYzIGxlZ2FjeS10cnVuaworNzAzMyBkZjlkMWViY2Y3ZjMwYmExODFjZWJhZGY5MTZkZDAxNmU2Zjk0NTk0IGxlZ2FjeS10cnVuaworNzAzNCBhZGJjYzBhYjllYjZhZjQwMWE1MmJmZDE5MjA4Zjc3ZGRiMjk1MTFhIGxlZ2FjeS10cnVuaworNzAzNSBiMjE3ZGEzZjliNTRjNjM2NDIwZTkxMTUxNGQwOTUwMjBiZDUyZGNjIGxlZ2FjeS10cnVuaworNzAzNiBjNzEzZGU3MmU3NmVjNDMyOWE5MDVkYWI0MjVhYjRmODk2MDkzYWU1IGxlZ2FjeS10cnVuaworNzAzNyBkMDMwZWE1MzNlNjNhZmFlODcwZGI0MjhhN2VhMTU0NWZmN2NmODc3IGxlZ2FjeS10cnVuaworNzAzOCBlYTQ1ODkzM2ZjMmFmNmIzOWRkMWRmNzg0NDdlMWQ5ZTc1YzRhYThhIGxlZ2FjeS10cnVuaworNzAzOSA3NDVjN2M3MGJlMzEwOGIxNzc0ZjQzZDBiMWE4NGEwNWE2YzZiYmM2IGxlZ2FjeS10cnVuaworNzA0MCA3ZjQ3ZTJiNmM0YTQ5OWYyYjBkNzk4N2JkMTc5ZmQwNjEzZWYwMjlmIGxlZ2FjeS10cnVuaworNzA0MSA2NDAzYzk0ZGU1MGRjM2MxZmU4NDg5OTkxOTAwMzNlYjcyMTE3ZDZmIGxlZ2FjeS10cnVuaworNzA0MiBhMzYwZGMxZmE1NTgyOTdlN2IyNmYyNjQ3NjIzNDM2ODEyOWEzZGYwIGxlZ2FjeS10cnVuaworNzA0MyA0MzQxNTc0ZTE2M2IzZjQ5MTUyNjU5MTdlNzNkNDUwY2Y3Yjc0N2M1IGxlZ2FjeS10cnVuaworNzA0NCBlNzA4ZjU2OGI4YjczZDMwZjQ5Y2M2MTVhMzViMGRkMGZlYTVlNDA3IGxlZ2FjeS10cnVuaworNzA0NSA3YmI4NGEyMjA1NDM1MWU4MzIzNjc3ZmM2YTYxZGRmZjI2ODc2YWM4IGxlZ2FjeS10cnVuaworNzA0NiBhMGVjOGE5ZGI5NjA1NGM5ZWVmNmFkYWMwZDYyYjQxMTM0MGM2OTk1IGxlZ2FjeS10cnVuaworNzA0NyAyNjI2ZDA2YjNiMDFmN2UxNmVjNmI1MjdjZjE4OTE0MzcxNWFlNGY5IGxlZ2FjeS10cnVuaworNzA0OCA3Mzc1OGRiMmY0NjQ2ODk0NzUwNzIwNzllNTVmNTI5OGQ0NDlhYTRmIGxlZ2FjeS10cnVuaworNzA0OSA4MTg2MDM5MDU1ZWRhM2QzZDliM2EzNzViM2IwMzNhYzk0OWQ0NjcyIGxlZ2FjeS10cnVuaworNzA1MCBhYTk2NTA4YTY1ODc5MGZiM2EwNTJkNWExY2E2ZjAzNmRlOTkwMjZkIGxlZ2FjeS10cnVuaworNzA1MSBjM2IwODk1YzkwZmJmMDg3ZDg2OTMzNzBjZjA3NDU2YmQ0ZDA1YmVjIGxlZ2FjeS10cnVuaworNzA1MiBmYWU3OGNmODU0MWQ0YmI3ZWNhOGRmZmQ5NzdmY2MzOGYxNjJjMGEyIGxlZ2FjeS10cnVuaworNzA1MyA2ZjFhMTIwYWU5YzA2MTYxNGE5ZWRiMjk0NThhZDMzMjgyYzJhMzFjIGxlZ2FjeS10cnVuaworNzA1NCBlM2Y3MWNlOGU2YmJiNWYzOGUxODU2OTdjNmNmNDA0MThhNGE1OTQ4IGxlZ2FjeS10cnVuaworNzA1NSAxMWJkNGY0OTc3NDJkODI3YjczN2MyNjliODhiOGFlNGUzMzVkZmQ5IGxlZ2FjeS10cnVuaworNzA1NiBjODM3ZjI1YzdlNDc3NDcyNDFjM2RhMDY1YjA3MTM5ZjgyNDZiMWEyIGxlZ2FjeS10cnVuaworNzA1NyAyZjhkOWMyMmRlNjJlMTcxOGMwOGMxODcxMGI2MWMyOWUwN2I2YWRjIGxlZ2FjeS10cnVuaworNzA1OCA0ZjY0NGVjYzViYWM0YWFhMjg5MjMzMTIyZDg2ODAxN2MxMWUyYTQxIGxlZ2FjeS10cnVuaworNzA1OSAzODcxZWJkMTk2M2M3YWQ4MWI3ZTVlNTc4YjYyY2EyYWJhZTg1N2E3IGxlZ2FjeS10cnVuaworNzA2MCA0YTgxNjViM2I2NjAzZDliMzE4YThlZTE2ZjczMzNkNTMxNTg5MzE5IGxlZ2FjeS10cnVuaworNzA2MSBiM2QyOTkwZDhhNGFmYjY4YjAyOWZjYzZmOWUyZWMwMjI0ODRiZWUwIGxlZ2FjeS10cnVuaworNzA2MiAwOWQ5NGU5ZWIxMDEwMDE5ZDFiM2QyN2Q1MjYyYzljNWY1NjgwZWM1IGxlZ2FjeS10cnVuaworNzA2MyA0ZGM2N2ZkZDllMGI1ZTBlZGMxMzUyZTU3MjNlOGMwMmQ0ZWNmMzMzIGxlZ2FjeS10cnVuaworNzA2NCA5NjFiZjlhMjAwZGQxODQ0OGExZjliZTIyOGU1NTBkMDIzMzE3YTk3IGxlZ2FjeS10cnVuaworNzA2NSAyMTI0ZjRiOTdiZGQyYmI5N2FkNWJmNDk4NGFhZmE1MGU3M2IyN2FiIGxlZ2FjeS10cnVuaworNzA2NiA4Y2RkOTRhM2QwMmQ5OTZjZWJlZTM4YzRkMjJlNjhlYjY2YWM2YjhkIGxlZ2FjeS10cnVuaworNzA2NyAzYmY5ZTJiZWFmOGMwMTk3MzhmNTVjOWFiYTYwYjM1ZDdmODQzMmI0IGxlZ2FjeS10cnVuaworNzA2OCA3MmQwZGZiOTE5ZmUyOGEyMmVlOGEyZDY0MGM1Y2FlZTlhMTA4NDA5IGxlZ2FjeS10cnVuaworNzA2OSA0MTg1NzA3NWQ0NWJhYzgwMDdjODJhMDQyYTY5ODg2NWIzZjY4YzA2IGxlZ2FjeS10cnVuaworNzA3MCBmOGYzZGEzZmRhZWQ1ODI2ODViYmQwODYwYjIxNzAwMmUzMTJiNzUwIGxlZ2FjeS10cnVuaworNzA3MSA0ZmExOTY1OTU5MWVmYTNlZDhjZTgyMzg2N2Q4OWNlYWQ0YmMwZjg1IGxlZ2FjeS10cnVuaworNzA3MiBlNzRiNjA3YTU5OTZmYTk5MjIxM2JiOTUzZGFjYjUzNzc0OWUxODZlIGxlZ2FjeS10cnVuaworNzA3MyA4ZmRiMDUzOWNmYjE1MGExMDc0N2NkMDExYjU4OWQ0N2YzMjAxMTBlIGxlZ2FjeS10cnVuaworNzA3NCBiMmExYzk5Y2E2NDJiOTkzYThkM2M1MTM1NmM5OTkyOGYzNjRlODFhIGxlZ2FjeS10cnVuaworNzA3NSBkMzYyNTBhZWZiODI1MjY3NGMyYmZiMjBlMzY3ZDgwZTgwYTY4ZDYxIGxlZ2FjeS10cnVuaworNzA3NiA3ZDU2YjQ5NmM3ZGMyMWNkZDFkMTc5NjQwM2QyMGRjYWJiMzAzNjU5IGxlZ2FjeS10cnVuaworNzA3NyA3YzY4MDJkODYyMGY0MmU3YTUyNjFkYmYwODQzODMwYjUzNDI1OTUzIGxlZ2FjeS10cnVuaworNzA3OCA1Yzc0MWQyZDk3ZjViMTQ1NDk0N2Y4Zjk0OTA2OWYzZWZkMDY0ZTAyIGxlZ2FjeS10cnVuaworNzA3OSAyMzY4MzUzZDk4ODc1MzAxOTdlM2FhMmEzMmFhZTczNGEyYTFjYmQyIGxlZ2FjeS10cnVuaworNzA4MCBiOThiNDZkZDQzNjdlMjc5NjAxOTc4YTE5NTliNzc3ZTc2NGMxOWM2IGxlZ2FjeS10cnVuaworNzA4MSA3MzliODQ4MGYxYWMyNzA2YTZiMmUyNWRhODBkZmFkYTA4ZTM3NTg2IGxlZ2FjeS10cnVuaworNzA4MiAzM2E4ZTY1ZWVmMjMwOTAwMDEwNTQ1NzkxNjQyN2Q4NTU3NGIwZGE1IGxlZ2FjeS10cnVuaworNzA4MyAzZWU4N2QwODIxNDdjMTY0M2JiZWYwNDNhZTljM2M5NGU2OTNjMzMzIGxlZ2FjeS10cnVuaworNzA4NCA1M2VmNWI1MWE0OGI0ZTBlNzAyZjZkMmM0YjhiYjk3NGZlNDg2NWZmIGxlZ2FjeS10cnVuaworNzA4NSBiYjQwOTRmZjdiZGZlZDRjY2MzYzUxZDQ3ZjU4M2JiNTJjZDBhM2M5IGxlZ2FjeS10cnVuaworNzA4NiBjYmM2NjlmZTM3MGFiMDViNWU0NmZhNDJiYTFjMmU5ZWEzN2JmMGE3IGxlZ2FjeS10cnVuaworNzA4NyA0ZGUwNWNiZjVhZDE5ODdmN2EzYTQyMmRkNTEyOGY1MThkMTk5MGM2IGxlZ2FjeS10cnVuaworNzA4OCAxMzIxMTEyZTllM2E0Y2U4M2M0MWUzNTZhNjgzMDVhM2Y1NzJhZGYyIGxlZ2FjeS10cnVuaworNzA4OSA2ODMwNzY0MzJiN2Y5ZGFlNmRhODQ1Y2QzNWJlYTVkMTA1NGY2MzEwIGxlZ2FjeS10cnVuaworNzA5MCA4NzYxNzcwMWQ3MjFlNzJkNzcxYmMyZWU4OTBiZmYwMzY5Yjc3ZWJkIGxlZ2FjeS10cnVuaworNzA5MSA5Y2VmOTY5YzQ1ZTQ1MDYxYjNiODIzNTBmZDUzODk5ODQ5MGVjZTg1IGxlZ2FjeS10cnVuaworNzA5MiA4Nzk5OWRjNGQ3OTgwMDE5YzIzMDVhODlhMDNhOWNjYjE5ZWJkMzA0IGxlZ2FjeS10cnVuaworNzA5MyAwNmM3YzdkZTY5NzY4OTdiM2QxYTRjZmJjMTM3NjUzY2FhMzQ0MjZhIGxlZ2FjeS10cnVuaworNzA5NCBjM2NhMDA2NTU0ZDQ0NGFjNjY0OTIxZmM4MzQ2ODFhNmM3ZjAyOWE4IGxlZ2FjeS10cnVuaworNzA5NSA5OGMwOGYwYzRhMmVkNmJjOWUyNTM3MDNkM2RjNWE3MDQwYTU1ZGQ0IGxlZ2FjeS10cnVuaworNzA5NiBhMmYxNzFjZTI1ZjgxMDVmZWIwNmI0YTQ4ZmZhNmQxOGQ0MWI1Zjg5IGxlZ2FjeS10cnVuaworNzA5NyA2OGIyOGI4Y2EwNzcwZTRhNTZiMmVhYjE2MjZjODYwNzUxMDYxMmE4IGxlZ2FjeS10cnVuaworNzA5OCAxZmFiOTgxNDY1YzhiZWQ0ZjQzNGEyOTk0OTEzNWEzNDcxNzM1Y2M5IGxlZ2FjeS10cnVuaworNzA5OSBiMTFkOTZjODA3NWM1NzQyZGNiZjc2ZDQ2NDdlNGQzOTU4MzA0NDlmIGxlZ2FjeS10cnVuaworNzEwMCAyMDI2MDJmYWVmYzc4MzJlZWJjZDEyOTIxMjkyMGMwMjI3MGYwYTk4IGxlZ2FjeS10cnVuaworNzEwMSA5NGNlM2UwMWMzMGNjMzAwZGI4N2FiYTcxNGFkYmE0ZjFiZThkM2E1IGxlZ2FjeS10cnVuaworNzEwMiA2Yjc2NTQ1M2IwNDEwZTExYjJhNzUxNzRmMTdmZTUwYTM3ZDVlZTcwIGxlZ2FjeS10cnVuaworNzEwMyA3ZGY1ZDRjZjgyNzc4YTQyNzY4MDY2ZDk3YzQzMzBiNzQ3ZTQ0ZmNjIGxlZ2FjeS10cnVuaworNzEwNCBmZjI2ODczMjY4YTg0MmNkYjYwMzMyNjJjMjhhMThiNjRmZmJjN2M3IGxlZ2FjeS10cnVuaworNzEwNSAwNDVlZDgzMGMwMzVhMGQ1M2FlZGQ5N2I1Y2JkYjlkMzAyMTRmNDg2IGxlZ2FjeS10cnVuaworNzEwNiAyNjQyZmZjYWMyYjRkY2MwYjExNGI0ZDhjZmE3MzZiMzg2NmVlZDBlIGxlZ2FjeS10cnVuaworNzEwNyBjOGQyNDdmZjhkMmY4M2I0Mjg0YmZjMDZlYjgzNDA4OWQ1YzJlMmZlIGxlZ2FjeS10cnVuaworNzEwOCAzZjEwZjk5OGE1ODcxZGNjODVlNDNkOWQ3NWNkMTY5ZTg3ZWJkOWM4IGxlZ2FjeS10cnVuaworNzEwOSA5ZmFjYmFiMTUyY2RhYjBlY2FiYjgxODJhNGYxNTYxMjQzOWIxNGVkIGxlZ2FjeS10cnVuaworNzExMCA0OTc0NWRkYjRmNjk4YjViZjllM2I4ODQwMmUyNTVjOGRjMjBkMTMzIGxlZ2FjeS10cnVuaworNzExMSBiZDI4OTQ1Zjc1MmJiNjQwYzE2MzAwNjZkZTJjYjQ0OWJkNzk1MWMxIGxlZ2FjeS10cnVuaworNzExMiBmNTJjMmFhMDYxZjhjNjEzZDViNzk0NjRmNmJkMmFlZjRjYzZkNTljIGxlZ2FjeS10cnVuaworNzExMyA1ZjdkMjQ2YmJlYjdiNmViMGIyOWZlNTk3NzgyMDZkNDBjMDk5ODFhIGxlZ2FjeS10cnVuaworNzExNCA5N2VjOWRmYmIyYjZlNGFlODBlNTU2NDQ3ZmQ4OTExMDUwNGY3NjFiIGxlZ2FjeS10cnVuaworNzExNSAzNGRiOWEyMWJmYjFkNDgyY2FmMTk2YmVmZWE5NDY3ZTg3NzU5M2M3IGxlZ2FjeS10cnVuaworNzExNiA1ZjhmNjA1YWYzMzg0ZDUzNzA2YjcyMGNhMjZjMDQ4Yzc3YjQ2ZmY1IGxlZ2FjeS10cnVuaworNzExNyA0MzU5ZThkMzg5ZTZmZDg2YzQzZWY3YjFjYzRmMThiZDc3OGMyOTYxIGxlZ2FjeS10cnVuaworNzExOCA4ZDkwOWFlMWYwOTk2NGVjYjRiZDg3MWZhZTA1NzU2OGM2ZjQxNmQ0IGxlZ2FjeS10cnVuaworNzExOSBmNGJhOWUwN2Q5YmYyZjQwNWU2ZTNmM2I2ZTUyZmU4ZDk1NmQwY2E1IGxlZ2FjeS10cnVuaworNzEyMCA2OGM0YjA2Y2ZmZjcwOTU2YjQ0YmE3ODUyOWE1NTI1NjY5MmE2NDJmIGxlZ2FjeS10cnVuaworNzEyMSBmNGE2MGYyNjFmYmI2NmU0NTM3Nzg0ODE5MDQ3YWE0ZmJmMjVjZGRiIGxlZ2FjeS10cnVuaworNzEyMiBhYjYzNzQyNjhjYWE5MjQ2ZmQ0Yzg2ZTc4ODA5YWIyMGJkYmFkMjM0IGxlZ2FjeS10cnVuaworNzEyMyA2ZGQ4NTE0NDVjN2RjMGIxYzhiZjlkMGJiYmNhZDFmYWVjMThmNWZiIGxlZ2FjeS10cnVuaworNzEyNCBkYWIwMWI4NGFmZTY2NGQwZDQzYjFhYzE0MzMwZjVkNjRhNWQwZmEzIGxlZ2FjeS10cnVuaworNzEyNSAyNzQzNzU5ZTM5Nzk3ZmE3YWIwMzViNzNiODk3ZjBjM2M1YjJmZDExIGxlZ2FjeS10cnVuaworNzEyNiA2ZWZmZDEwZTcyMzNhNjg1OWM4NWQzOGUxZTgwOGI4YmU2YmY3MTgwIGxlZ2FjeS10cnVuaworNzEyNyAzZDg3Y2IxYjNkMTdhZDcxOGEzZjZlYzkzOGVkMTY1MmQwZmVlYzc0IGxlZ2FjeS10cnVuaworNzEyOCAzYjdjZDgzYjYwMmQ2ZmQ4MzgwYTE0NWQ1YjExNzcxOWJhYTdkMDhhIGxlZ2FjeS10cnVuaworNzEyOSBkZjgxODU2ZGI1OGM1NDM3ZDI3Njk3NDdkZDk0YjUxZWRmOWFlN2Y3IGxlZ2FjeS10cnVuaworNzEzMCBjNzVhMmYyZGMyMjBhNTc3Njg4ZTYxYjEwZDc3NjE0NTgzNGU3ZDRkIGxlZ2FjeS10cnVuaworNzEzMSAxODZjMmFkNGFiZjMzYzkwZjZlNjZmOGM3MGI2OTNlOWRjNzU5MjE3IGxlZ2FjeS10cnVuaworNzEzMiBkZGJjYzAzODkxNmIyY2Y1M2FhZWYzNmQyYTNlNmE5MjY0YjhjYTExIGxlZ2FjeS10cnVuaworNzEzMyAwZGRkZjQ5ZWE0MTZmM2JlYmMwNjA4ZTQ5M2ZhNWI0MjFjMmU4ODY5IGxlZ2FjeS10cnVuaworNzEzNCBlOTc1Mjg0ODJiYzY3NDI5OTA4MTUyOTUzMzU4ODNkNDU2MGYwMDdhIGxlZ2FjeS10cnVuaworNzEzNSA4ZmI1NzJlMWIxYmExNzFlMTc0M2IxNWNlNmJjMDk0YTdmZTNiMmViIGxlZ2FjeS10cnVuaworNzEzNiBkNTAyM2QwYzU1MDIzNzM2NDhiYTVlODRlZTM0ZWI1MTU1ZjVjYWU1IGxlZ2FjeS10cnVuaworNzEzNyAyMjc4NTEwOGYxZWExM2Q3NGY3NTY5MzMzM2I3ODJmYTA5ZGY1YzIwIGxlZ2FjeS10cnVuaworNzEzOCA0ZWU0YjhiYjY3Yzc0NDI3MGNlZDQ0YjViYTRmM2FmNTcxYzU4YjJmIGxlZ2FjeS10cnVuaworNzEzOSBkY2IyZjVkMzRhZTgwMjYzZmUzNDE4OGMyZTNmOWE2NjExNzNlM2U2IGxlZ2FjeS10cnVuaworNzE0MCBlZDM1MDY3ZTM3OTNlMGZjM2E4MDVhMzE3ZTI2ZmQ5YjI0MjVjMDMwIGxlZ2FjeS10cnVuaworNzE0MSAyOWJjMjhlY2EzZTllZDU1NTNkNDlhNTdjZDNjNzUzZWVjNDk2Y2VhIGxlZ2FjeS10cnVuaworNzE0MiBjNDIzNzllNDY1M2JhOGNlZTkyMWEzYzQ3OWQ0YTVkZTYxODVjN2YyIGxlZ2FjeS10cnVuaworNzE0MyA5NTIwNGFhMmY0NTIyYTVjYzhjZDc4NTY4MTcxZDk3MDc5NTdjYjhkIGxlZ2FjeS10cnVuaworNzE0NCBkNTAxZGFmMGEyZjY1NWZmZGIyOTk1OTk1NDI4NzQwM2E2NDAwNzAyIGxlZ2FjeS10cnVuaworNzE0NSA3OTAxZmU3OWY2YWE4YTI0OTJhMDYxYmY3Y2Y1ZjI0M2M2MGU1ZWY0IGxlZ2FjeS10cnVuaworNzE0NiA4MmRmMTA0MGRmMGY4YTZjYzA4MTQ3YWJiOWYzMGY2MDc4NzI1ODQ0IGxlZ2FjeS10cnVuaworNzE0NyA1YjUzMjY4ZjU0N2EzOWRiMTc3NjkxMDlhODUwMzUxNjk0MzVmOWU0IGxlZ2FjeS10cnVuaworNzE0OCBhM2NkYzgxNjQ5OTBlMzRlMzQzYjhmZmE5MjAxNjU1MGRiYzgyNGY5IGxlZ2FjeS10cnVuaworNzE0OSBiNDNmZjg5ZmM1MGQ5NWMyMjdiNTZhZGM4OTgzZjQ4MzhjMzdkOGNjIGxlZ2FjeS10cnVuaworNzE1MCAwYzAxYTIzYzdkY2RiYWI4MTI5NzIzZjg3ODg4Y2M3YzdiYTllY2YwIGxlZ2FjeS10cnVuaworNzE1MSAxOTM5NTBiYzlkOGY3ZjRhNWY2NWYwNzVhZmUwODFmZDJjNDliYmZhIGxlZ2FjeS10cnVuaworNzE1MiBiODI4ZWI1MGRiZDUwNjM4ZTZmYzI5OTllZjY3MjllMzEzZDkzMmY5IGxlZ2FjeS10cnVuaworNzE1MyAxNTkyOTcwYzc4OWIwOTJjNTlkYThlYTA4MmM0YjdiOWI4ODNlYTIxIGxlZ2FjeS10cnVuaworNzE1NCA4OWIxNjEyNmQ0ZTIyZDFmMTI2Mjg4ZmFjNDM0NjcyMzEwZGRhMzk3IGxlZ2FjeS10cnVuaworNzE1NSAxMGMxYjhmMzkwMmZjYjI4YWNlZjdiZDgxMTZiZWU2NzBmZmFkODIyIGxlZ2FjeS10cnVuaworNzE1NiBmOWM1YTMxM2FmZDkzMjUwMmZjZDBjZmRlMzMwYTkxYzJkNDIzZjAzIGxlZ2FjeS10cnVuaworNzE1NyAxOWM4ZTYxY2FkMmQ4MzVhZTllMmZmZmI4MmFiYTM1YmQzZDM1MzFiIGxlZ2FjeS10cnVuaworNzE1OCAzMWJkMGFkMDI3MmQ1YTA5NTQ1ODQ1NmZhZDUzM2I1Yzk2MTAzODA1IGxlZ2FjeS10cnVuaworNzE1OSBkODAwODQxYjU3YThjN2VmODkwOGM1MTcyNGU5ZDAzMWZkNDJjNTI0IGxlZ2FjeS10cnVuaworNzE2MCBkN2QwNWUyMzQ0ZDczNmQ4OTZjOTk5YmNlMTg5M2FlNzY0NWUwMDU0IGxlZ2FjeS10cnVuaworNzE2MSBjMDQ2ZWZhZjFiZDJjNDZlNjMxODg2YzVkMGIzY2Y3NDNmZDEwMTRiIGxlZ2FjeS10cnVuaworNzE2MiBkMTIyNzUzZTViOWY2MDNjODYyNmMzNjNlNjcyMWY4YzFjZmEwMDE2IGxlZ2FjeS10cnVuaworNzE2MyAwMWY0ZWEwNWE3NjYzZWMxMmIwMzgyMThhNjQwZTBlZjAxOWVjMDc2IGxlZ2FjeS10cnVuaworNzE2NCA4ZjUwYmVjNTA2OGU2ZWZmYzgwNWM5M2ViY2JkYTAyODg4ZGY3NjUxIGxlZ2FjeS10cnVuaworNzE2NSBjMmI4MzFmOTIzYzJmMDNmZDhkNWI0NGUzNDBhN2Q4OTFlM2JlMjg3IGxlZ2FjeS10cnVuaworNzE2NiA4MDE1YzU1NDkzMDk4NGVhYjlmNGQzY2ExMzJjZDBiZjkzMjk2MDA3IGxlZ2FjeS10cnVuaworNzE2NyBjYjQwNWI5Njk2ZDQ4MzY1NzJmMzNjOWJiODc2ODJjOTA4NjQyYjUzIGxlZ2FjeS10cnVuaworNzE2OCBmYWRkZjZkNTVhZjBhNGQ0MDIwZmY0N2IyZmE2NWUyODg4YzlkMGM2IGxlZ2FjeS10cnVuaworNzE2OSAyYzEwMzk1OTIxZTFkMGJiYjFiODg2ZmU5NWEzMzIzMDk2NDVjZDg3IGxlZ2FjeS10cnVuaworNzE3MCBmMTJiMWQ0ZDZhOWJiODgyZjQ2ZTg2NDI5N2VjOGNiZDY4MGE1MWVhIGxlZ2FjeS10cnVuaworNzE3MSBkZTI3ZGE1ZjIyZjE3NTM1ZjdkNjhjZTgwNWVmNGY4NWJiMGVmNjQ5IGxlZ2FjeS10cnVuaworNzE3MiAxZjM2OGZiM2UxZjc4NmI0NDZkNWY3YzEzZjcwZjI2ZmQ1MWE4MWU1IGxlZ2FjeS10cnVuaworNzE3MyBlZTk4ZTQ0ZDRmODU1MWQ1ZTJjN2EwYWU4MTNjZmQ0MzQ1ZDkwMjYwIGxlZ2FjeS10cnVuaworNzE3NCBhMTY5NGU5NWJjYmE3OTIwZTc5ZjAzOTc3YzhkYWY5ODE3NzE5Y2YyIGxlZ2FjeS10cnVuaworNzE3NSA4MjUwMzhkOThhYjYyMmJkMDc2OTUyYWM5OTNlNzQ5ZjczNTQ1ZTllIGxlZ2FjeS10cnVuaworNzE3NiA4YTc1YjhiZjE1MjE4NzU0ZmJjYTgzYzMwNzliN2MwMmUxN2FkMDU3IGxlZ2FjeS10cnVuaworNzE3NyBlNWU1ODc5NDA0MGY0NTQzNDAxOTcyM2ViYmVjNTUwNzQ4OTUxOGQ3IGxlZ2FjeS10cnVuaworNzE3OCBlMGJiMWRhYzJkYmY1NTYyOTc1NGQ4N2VhZmM1NTlmYTBiMGFhMWE3IGxlZ2FjeS10cnVuaworNzE3OSA2YzBlMzVjZjBmODViZDYyM2FlMDVmNzZlNGUwZDA3NzdlOTRhYmYyIGxlZ2FjeS10cnVuaworNzE4MCBjYzUyNTE4MmJiYjFmMzZlZWMxYzIwOTFiZGFhM2NmYzkyMTEyZjVlIGxlZ2FjeS10cnVuaworNzE4MSA5Nzg1MTE0MzI2YWI3NTI1MmQ1NGFlMmNlODZhOTA4M2Q0NTdkY2MyIGxlZ2FjeS10cnVuaworNzE4MiAyZGQyODU3OTRkNjc0MzMwODM2YTU5Mzc5ZTRkZWViN2IzOWUxNGRhIGxlZ2FjeS10cnVuaworNzE4MyA3NzVhN2QwYzI5NjA5ZmFmZDg1MTY0OTg2NWQ3ZDcxNWEzYzc0MmE2IGxlZ2FjeS10cnVuaworNzE4NCA0Mzg5NDliYjQ1MDgwNTA2M2MyMzU4ZDczM2Y5YzZhNjhhNmRlMDA0IGxlZ2FjeS10cnVuaworNzE4NSA3YjlhNjE2NjI4MWExMmMzYWQzYTI3YTk1MjdlMmEyMWRjMDBmY2ZjIGxlZ2FjeS10cnVuaworNzE4NiBkOWZmNmY4M2ExNmFkMGExNTMxYjYzMTBlM2M2OGJiMTg0ZGUyNzE3IGxlZ2FjeS10cnVuaworNzE4NyAwMjUzZWYyNjdiNjhjNmNhNzg4OGY1NDEzYzhiMmE5YmM1YWNhMzFmIGxlZ2FjeS10cnVuaworNzE4OCA2Y2NmNWRiYThiMGJiNmI3NzI3Y2Q3MTljZTkwNmY0Yzk5YTc3NDA4IGxlZ2FjeS10cnVuaworNzE4OSAwYzZjNjliMGQzZTljNjlmYTQ5ODJkMWZjYWZiYWYyMDQ4ZjlhMmQyIGxlZ2FjeS10cnVuaworNzE5MCA2Nzc1OWRmZTZlZThjN2RhNmYyMWZlNjBjZGNjMGQ4MjViM2FkZjI1IGxlZ2FjeS10cnVuaworNzE5MSBhOGE1NDc0OTBhMTI3Y2RlZDNmN2Q0MTI0Y2Q0ZDkzNThhMmEwNTIyIGxlZ2FjeS10cnVuaworNzE5MiAxMjE1NGQwOTEzMTY3NGZlOWRlYWM3OTU3NmY0OTkzZGNlNzBhZDI2IGxlZ2FjeS10cnVuaworNzE5MyAxODM0NjU0YmViZTMyMTJlNTY4NGU5YWU3NGIzOGFkZTVkMDU3Zjg3IGxlZ2FjeS10cnVuaworNzE5NCA3NmJiMjA5OWQ2MTgyOWY2ODcwZDRhMjU3YTI0NWJmZDVlYzJmNjM0IGxlZ2FjeS10cnVuaworNzE5NSA5MDg1N2ZiNTczOTcwNmUwYzAwYTU2MGI2NzRkMDRkZTMyOTdjMWRkIGxlZ2FjeS10cnVuaworNzE5NiBiMjAwOWVkMTUyZmE1YjNiZmY3NTRmNTRiOGMxNjM5ZTVmYTY3N2UyIGxlZ2FjeS10cnVuaworNzE5NyBjMDdlNWM0NTU1NzZkYWFkMTlhOWRiMWEzZmM4ZGEyMWYxNzliY2M4IGxlZ2FjeS10cnVuaworNzE5OCA0Mzc0NGJlMjQzM2Y1OGYwM2I3YTM3MTlhMmE4Zjk1MWRjZmUzN2QzIGxlZ2FjeS10cnVuaworNzE5OSBkZTAxYzY2ZjVmYTU4YmYyODVkM2U5M2Y4MjA0M2U3NTQ4NjhhNzk3IGxlZ2FjeS10cnVuaworNzIwMCA4NjY5ZWRiMWQ5YzU2NTg3YjU0MjNiNWY0MDJmNGZkODBiYWU4ZWMyIGxlZ2FjeS10cnVuaworNzIwMSBmN2E5OTE2MWRmOTJhYTFhYTQ5YzM5MTM5ODI4ZmViMWUxZjliZTQyIGxlZ2FjeS10cnVuaworNzIwMiA5YWM5ZWE4NDhkN2RhNzc4Y2IyMWE3NDY1YzQzMGQ1OWVjZDZmMjg2IGxlZ2FjeS10cnVuaworNzIwMyBiMjE4ZjI5NGI3MjZhYmMwMzIzOTI4OWVkZTA0YmE3ZGQ1MWM5MjU0IGxlZ2FjeS10cnVuaworNzIwNCBlMjdmYTJhM2Y1MjY1MDE5MjA5YTBlM2I5YjNjZTM3NDhkNzNmNGNjIGxlZ2FjeS10cnVuaworNzIwNSA2MmNmN2Q1ODkzMDBlZjlmYzU1YTJjYzJmM2JlNzJlYjIyOWY2Y2Q0IGxlZ2FjeS10cnVuaworNzIwNiAwN2YwZjIxMzYzZTY0ODIxOWY4ZTI2ZGViOGNhZmM2Nzc0ZWE1MmNjIGxlZ2FjeS10cnVuaworNzIwNyBkMzY3MDE0MjAwYmI1YjgwMTE3YWJjZjViOThlMWUwYzhjMzBlZDNhIGxlZ2FjeS10cnVuaworNzIwOCAzYzc4MTJiZmExYTRhYWFiODY3NjBkYmNkYjBiN2UyZDgwNjEyOWEyIGxlZ2FjeS10cnVuaworNzIwOSAzZGI0MjM1MTU2MjZjMmZiYTcxMzJhNzA0NWNjMjgwZWZkYzgyMTI4IGxlZ2FjeS10cnVuaworNzIxMCA0YTNmNDViMzQ3MWFjNTRlNWQ1MzA1Yzg5NjgxYWEwYmJmMzY0NzIzIGxlZ2FjeS10cnVuaworNzIxMSA5NGFkNTZlZjUwNzMzNTk4NDdlMzY2MmY2OGQ4ZmIyZTNkNDYzNGMyIGxlZ2FjeS10cnVuaworNzIxMiA0MjZmODdjNDY1YTAyNjZmMzE0NTQ0ZDI0YWI1ZTdkMDhkZThjZjc5IGxlZ2FjeS10cnVuaworNzIxMyA4ZWRiNTdjMzM0ODdiYWVkOTNiOTA1N2VkN2FjODgwNTMyMTYyN2ZhIGxlZ2FjeS10cnVuaworNzIxNCBiMDE2ODI4NTFhNjMzNjc3YWY3YTg0MTNjYzhiZTRkYWU3OTBlNzQyIGxlZ2FjeS10cnVuaworNzIxNSAwNjJlODg2MDhiNTU1OWU2MDFjZGNkMWM0NTUyODMzYmUyNmQ5MDM1IGxlZ2FjeS10cnVuaworNzIxNiBhNDQwMjAwOGM1NjlkZDhlZjc4OGE1NmQ5YTgxNzhlZTMxNmViYTc3IGxlZ2FjeS10cnVuaworNzIxNyBlZDAxZWM0M2ViMzBmZjQzZjhiZTY3Zjg3YTY4ZWZhNGJjMTk2NWQ2IGxlZ2FjeS10cnVuaworNzIxOCAzNTdkNDU0NDA4NWEyYTZkMWQzMzhiYmY2MmFkOGMwNWU4ZTc5MzRjIGxlZ2FjeS10cnVuaworNzIxOSBlMDUyM2YyZDQxNjM5YzkwNGFhMTI5YTRlYjhlYWI0NTI2M2VlY2RmIGxlZ2FjeS10cnVuaworNzIyMCA3YWNkZjU5ZjMxYzVlYzFjZmZiN2Q4Y2U2Y2M2YTFmYjgwMGY0ZDcxIGxlZ2FjeS10cnVuaworNzIyMSAyY2JkZTVmYzRiMTliZTE5MDA5MTFmZDA0N2RlYTQ2NjAzOWExNjMyIGxlZ2FjeS10cnVuaworNzIyMiA1YjA1YmNiZDQ1NDJjNjQxN2RiODFkYjAwYTM4NWQ1NDg3NzBhNWM5IGxlZ2FjeS10cnVuaworNzIyMyBlYTEyNjVmMjZiMzMyNzQwOTVkZDJjYzM3ZjVkMjk2NDk4MmFhNzk0IGxlZ2FjeS10cnVuaworNzIyNCBkZGVhNjlmOTA3MWJhODJkOWI5ODk0ZTkyNDc1NzFjYWZlNmY2NTMxIGxlZ2FjeS10cnVuaworNzIyNSBmZmZjYzUyY2RjMWU4NmZlM2E5YTNmZjcxOGI2OWY2YmQxZGFjYmE3IGxlZ2FjeS10cnVuaworNzIyNiA3YWI4MzVmODdmODZkMjFjZGJjN2I3NDBiZjRmYzYyYjcwZGU2ODA2IGxlZ2FjeS10cnVuaworNzIyNyA3MzY3ZmIxMDcxMDgzZWUzMzZiMDUyMmY5Y2NiMjMxYWM4ZjY1OWM0IGxlZ2FjeS10cnVuaworNzIyOCA3YjFlNzg0ZTIwYTBlY2Q1MGVmNTUwZDBkOWU2MTg3ZWI0Nzg2ZWJmIGxlZ2FjeS10cnVuaworNzIyOSAzMDcwM2E2NTZkMTM0NWNkZmZmNDhjZGFjNjE0ODkwZjJkODFiOGVmIGxlZ2FjeS10cnVuaworNzIzMCAxZGU5NmM1NzJiMDJiYzRhYmU4MmQ0YTE4ZDJkMTRmZjFjYzQ4NzM1IGxlZ2FjeS10cnVuaworNzIzMSAzMDFkN2Y2YWNmMGE2ZDAxZWQ4NjU3MjFkZTRmNWMyZjc0MDRhOWQyIGxlZ2FjeS10cnVuaworNzIzMiBlMWYxNzI1Y2FlNmRhODMwMDFhM2JhMGE0MzMwOWNhOGQ5MjhmMzkzIGxlZ2FjeS10cnVuaworNzIzMyA2MDVmYmEwMmUxOTUwNzc2MjQzN2ExNDZmNzg5MTYyMDJlZTI4YTQ0IGxlZ2FjeS10cnVuaworNzIzNCAzZmM2MDQyYTJhY2I4NzRhMmRkZDIyNTU1N2JkMDMyNjA3MzM3YjhkIGxlZ2FjeS10cnVuaworNzIzNSA1YjIyZTMyZWFhMTc2NGUzZjY5MTYzNWVmNTMyZDQzN2UxYjgwNzQwIGxlZ2FjeS10cnVuaworNzIzNiBkN2VlYTY5NGNkM2EwNGU2ZTY1MGYwMTE1YzhjMmJmZGZmNDVhYzZkIGxlZ2FjeS10cnVuaworNzIzNyBmOTI2MjYzZmI2NTRjMjliODc4ZjlhODJkYThiODA4NjQxMmQ5MTRjIGxlZ2FjeS10cnVuaworNzIzOCAzODY4OWFjZWFlN2I2MGM1YjhhYzZiZmQ0MGY0N2UzZDNjZmY4MjRhIGxlZ2FjeS10cnVuaworNzIzOSA4ODcxNGZiZjlhMDYyNmFhNjBjZDM0MmRhODM1ZDBiY2U3N2YxZDlmIGxlZ2FjeS10cnVuaworNzI0MCBmOGIzNmMwZWMxMTRhZWRkYjMzZDM3Yjk0Y2RkMjJlNGUyMDI2NWE4IGxlZ2FjeS10cnVuaworNzI0MSA5NjA0ZDY3ODQ2NzVjMmRkOGU1MDJlNGUxZTRhMDAxZGU4YTIzNGYzIGxlZ2FjeS10cnVuaworNzI0MiA2M2RhZTI3M2IwN2Q4NTkzMTU0NGQ4ZjQ2ZGQxZjVkMThlZGFhMmZhIGxlZ2FjeS10cnVuaworNzI0MyBmN2E2MWM2YTY1YzM3OTc0NzFlNjk0NmNiMWUyYzY1ZDI5MzI3NDI0IGxlZ2FjeS10cnVuaworNzI0NCBlZWNiY2M0OGIwZTk3NmMyYmY2MTIzYzEyZmI2ODE3ZWI4OGI0MTQwIGxlZ2FjeS10cnVuaworNzI0NSA3MjEwOGZhYTU2YmYxNDg3MGQ3YTdlNjU4ZDUzZjMxYTQxNjUyMDk0IGxlZ2FjeS10cnVuaworNzI0NiA0NzEwNzAxNjkwYzFjNmJkYjQzNDMzODQ3NmUxNDJkZGIwNDVkMWVkIGxlZ2FjeS10cnVuaworNzI0NyBiODVmMTBhZTQ4NTdmMTE1MWNlZmNlYTUzNzk1Y2JhMDQxNTI3NTMzIGxlZ2FjeS10cnVuaworNzI0OCBkNTVmMzEzMzhmZGNmODUzY2M4MjVlNTFkOGY5ZWYyNjc2YWVjNDgyIGxlZ2FjeS10cnVuaworNzI0OSA5ZTQ4YWJiZWU2YzVjMDU0MTkxZmIyMDMyZmE3ZDk0YTJmNzFlMzdmIGxlZ2FjeS10cnVuaworNzI1MCAwZDBjNDEzYjZmMjUzOTc1Njg4NmMwNWVlOWZmNTZhZTEwMjFiODY2IGxlZ2FjeS10cnVuaworNzI1MSA0ZGU4Yjg2YmEyNTU5MWE0MDU5OGFkZGZlNWQ0MzYxMzg2NzAzMzMyIGxlZ2FjeS10cnVuaworNzI1MiA1MGQ2ZGM0NThhYTJmYmJmZjZmMjg0MmRjY2MzNzc4MjFhNGI4ZmZlIGxlZ2FjeS10cnVuaworNzI1MyAxY2NhYTQ0MWQwODNmMDA0MmMxODFjMGZmMzUzYTlmMzA0MjI1Y2FjIGxlZ2FjeS10cnVuaworNzI1NCBhNTcxYzdmMDg5OTE2ZGNiYzc1Y2EzYTRkNjUzOWE4MTljZDQ5MDdmIGxlZ2FjeS10cnVuaworNzI1NSBhYmVmNTAwNmY4NGJkYzcwNmI3MzMyNmNjMTJkNWJhZjM1MzdlZmM2IGxlZ2FjeS10cnVuaworNzI1NiA3NTYyYTZkZjkxZmI0YmViYzY0NWFkYTU3MWU3NjdkZGZjYjFiMDVlIGxlZ2FjeS10cnVuaworNzI1NyAyNDI2YTIyMDY2NGIxOGIzZGU0NjEzMThlMWNkNDEwMjFjNWM4ZTc4IGxlZ2FjeS10cnVuaworNzI1OCBmZWJhNmQ1OGQyMDQ4OWYwMTYzOGMxYTVjZGU4NzY4ZWVkOTk5OGVjIGxlZ2FjeS10cnVuaworNzI1OSBlNDMzNjI5MTBhNWUzZTNjN2Q1NTlhZmIxOTYyMDk2YTJlYjczMDQwIGxlZ2FjeS10cnVuaworNzI2MCA5ZmMzODBiMWE0NDVhYTE0YTEyZjY1ZGI1NzQyNzRjMDU4N2I5Y2EyIGxlZ2FjeS10cnVuaworNzI2MSAwOTQ4ZjM5ZWU5NjBlNDdlYjk3MmQzZmRkMzNlYTgyOTFkMDBhMWY2IGxlZ2FjeS10cnVuaworNzI2MiBkN2U2NjUzZDA4NGY2ZmJjMGU3NTkxNDJhN2UyMjYzNTEwMmJiMDQ5IGxlZ2FjeS10cnVuaworNzI2MyBmMjMyMWU0MjMwNzE3ZTVjNTk3N2U4OWEyYmRjNzA3M2NiNDc0OTcwIGxlZ2FjeS10cnVuaworNzI2NCBkNDViYTY0YjgyZmQ2YmVmMjk0MzQ4MjRjODllZWY5MWQwODUyZGM0IGxlZ2FjeS10cnVuaworNzI2NSBmMzc1ODIzMTQxMjMxODVhMDVkNGUwYTJiNGY5OWRkM2E3M2RiN2YwIGxlZ2FjeS10cnVuaworNzI2NiBhMmZkODBlZWQyN2ZhMTcyYjYxZmY4NWYwZmYyMTIzNzU0NjNhNTQ2IGxlZ2FjeS10cnVuaworNzI2NyAwYjZiMWI4ODI4NjZiNjBhMThhY2JjZGVlNDQ1MjliNGM1NDEyNjk2IGxlZ2FjeS10cnVuaworNzI2OCBhYWJmNGEwM2E0YjBiYmYxYmJhZjRlZGE4MjZjYzMxODFlNmEwMzM4IGxlZ2FjeS10cnVuaworNzI2OSA4MGMwY2E0MjQ1MTBlNzljYzQ2MjZiMjg4MDRlZGVjNzU2MGI0NTcyIGxlZ2FjeS10cnVuaworNzI3MCBiNjUyMGM0NWViMDU0ZTc3MDUzYzQ3NTllYjk0NTFhYTNkOTgxNTFmIGxlZ2FjeS10cnVuaworNzI3MSBiZjcyYTk0ZWU5NmI5YjNjY2NhZDA1Y2FjYzM3ZTBjNTJkNWY1ZDFjIGxlZ2FjeS10cnVuaworNzI3MiA1MjI1OGIwMjNhYTMxNzgxYmZlOWJiMjMxY2I2OGVhZjJhYTM5MTcyIGxlZ2FjeS10cnVuaworNzI3MyA1ZGI5YWQ2MDMyNmRjOGMxZDk4NzVjMGM1YTM5YjU0ZjJlZWFlY2M2IGxlZ2FjeS10cnVuaworNzI3NCBlNzJiMmVkMzgzYTk4YjRmYmMwZmEwYzYyMzQ1ZGYwZjU4NWE2MWQ4IGxlZ2FjeS10cnVuaworNzI3NSBlMmE3ZmY2ZjQxODg3MThmMzAzY2Y2ZWU3ZjY1N2JmOTM0NjI4ZTVlIGxlZ2FjeS10cnVuaworNzI3NiAyZDVlZTM3NGE3M2I4NWQ3MzNjMjA1M2IzMWYwY2YzODU0Nzk2NmMwIGxlZ2FjeS10cnVuaworNzI3NyA4NjdmZWRhMDA4NDA3ZjBkNzE3YTQ3M2M1ZDk3ZDE1YTI5N2YxNWQ3IGxlZ2FjeS10cnVuaworNzI3OCA5OTY1ZGY3ODJhZmNmNDJiYTdmY2JlMjAwNzVlNTkzN2JhMTBkZGJhIGxlZ2FjeS10cnVuaworNzI3OSBhMmM0MjdmOWRiMDJiOWJmMWI5YWQ4MDk0Y2ZkYzJiZWNlZTYyNmE5IGxlZ2FjeS10cnVuaworNzI4MCBjNzFjYTE1YzhiNTU1Y2Q4ZjRjNGYxZGI1NzhkMTZjOTMwOTYwYjA2IGxlZ2FjeS10cnVuaworNzI4MSBhM2M0NzcyNTk1MDU0NDMwOGJkZjgyYzNiYzM0YWQzYWYwNzk0MmY3IGxlZ2FjeS10cnVuaworNzI4MiA4ZDJjOGIwODA0MDE3ZDQxMzE2NTdjZjRmMGJjOGIwZGYyODBkZjRjIGxlZ2FjeS10cnVuaworNzI4MyAwOWQ2YzU3MDg5OTllNjMyNzg1MTJlNDhkMjAyNDBiZWUxYjc4MDkyIGxlZ2FjeS10cnVuaworNzI4NCA2ZjhiNWMzY2Q2Y2IyZTVmMmE2ZmVmYWExOWNhYzJlOTg1OGRmOGM0IGxlZ2FjeS10cnVuaworNzI4NSAyY2I0NjlhNDIxYTk3ODM3ZmQyNWZlODdmNDU0MjFlMzViMTg1ZDliIGxlZ2FjeS10cnVuaworNzI4NiA5YWUzY2NjZmE3Y2RlMTI5YmRhNTkzMDM2MzM2MmRjNzE3MmQyM2IyIGxlZ2FjeS10cnVuaworNzI4NyBkYjIzMGZlZmE3MDIzOThiNjA2OGIxMzg5MmJkODg5OTk2ZTQxYjRhIGxlZ2FjeS10cnVuaworNzI4OCBiNmZhZGYwMjMxYWY5YjI2MzlmOTI1ZTAwNDJmNWNmMDAwNzc4MTU0IGxlZ2FjeS10cnVuaworNzI4OSA5ODIxMzYwNGY5NDE0ZmQ0NWNmYWUyOGQ4NzhiZTUyZDZmYjM3MGFiIGxlZ2FjeS10cnVuaworNzI5MCBmYjE4Y2U4YzBjZjZhYmIwNjNlNGFmNDNmMjcwODQyNjU5ZmE1MWEzIGxlZ2FjeS10cnVuaworNzI5MSBjNDQ1NDBkNTJkMTM2OTkxMDc2YWVkMDhjODAyZWFhNjk3ZjlmZTNiIGxlZ2FjeS10cnVuaworNzI5MiAwZjc1MTVlYmUzYmY0ZWFkMmRmMDliMzk4NmE4YjRmZTFjOTdjMDhmIGxlZ2FjeS10cnVuaworNzI5MyA2N2E1MjIxYTJmNjBmOTM5Y2MzYjRmY2RhYWMzNDE2ZGY5MjU1NTI0IGxlZ2FjeS10cnVuaworNzI5NCA5YmRhMzhjNjdmNGVjMjVjMGZmNWYyMThhNzczMzhmYmQ3ODE3ZWI5IGxlZ2FjeS10cnVuaworNzI5NSBlNzJhYzFkYzYxNGYyYTA4NjA0Mjg0NDYxMTVkMzkyZTZmODdlZWEzIGxlZ2FjeS10cnVuaworNzI5NiAzOTFmMDhhOTc0NmI5NmQyYmY0MDU1ZWZjOTVlM2JlZTVhMmY5ZmJmIGxlZ2FjeS10cnVuaworNzI5NyA0NGU4NmRhZGVjOTQ0YmMxNDk4YjNhYWY4OWNjNDVjNTM4Y2NjMWM5IGxlZ2FjeS10cnVuaworNzI5OCBmNDJiY2EzZDdiZTIxZDMwYzE3N2JiOTE1MzM3NTFhZTdiMWIyMTkzIGxlZ2FjeS10cnVuaworNzI5OSA4NzgzY2ZkYzdjNmY5OTNjYmE0ODExNmFmODVjMzJkODNjMDMyNDZhIGxlZ2FjeS10cnVuaworNzMwMCBiOGE5N2FkNWY3Y2VkM2E1NDUwNzQzYjExMGM5YjQ4YWViZTA4ODMzIGxlZ2FjeS10cnVuaworNzMwMSBmM2I5MmM5NWU4NWIzNjI2YTBlZWI4YzM0OWZiMDI0YTA2ZjM2ZDFiIGxlZ2FjeS10cnVuaworNzMwMiBiZTQ4MWYzYWRhMGJkYWEzMDhjODU1ODIzMDlhYzU4NDljZmFmM2ZlIGxlZ2FjeS10cnVuaworNzMwMyA5N2FlODQ2NmQxYzQyMDc0ZTIxOWQ1ZTNhZGMxODJmOTBlMjc3MWNjIGxlZ2FjeS10cnVuaworNzMwNCA1YTJlNzI1MmM4OTAyZDRkNmQxODY2NGQ2NDBhYTYxZWM2YzE4N2Q4IGxlZ2FjeS10cnVuaworNzMwNSA0MzQxZmY1YzY5N2NmZWUyYTVkMDNhZTE3MWYxMmI4OGU2ZmYyM2JmIGxlZ2FjeS10cnVuaworNzMwNiBkODdlODc4NTM5NThmM2U5ZTkzZWY3Njc1ODQ4OGIzMmIyYmFkZjU5IGxlZ2FjeS10cnVuaworNzMwNyA1MGY0OTgzYjZiNzlkMTkyMjIxOTM4OWFjYmRmMjFlMDY3ZDM5YzQwIGxlZ2FjeS10cnVuaworNzMwOCAzMzlkMGM0OWYwYjU3MzhhZjQyMjkzNjY3NjRiOWNiZDA4ODcyOGUxIGxlZ2FjeS10cnVuaworNzMwOSBjN2U5OWFiNjI3ZjNiNzQwMjk2OWJiODE0YzMzMDJiNTMzNzFmMTA3IGxlZ2FjeS10cnVuaworNzMxMCBlMDU0ODBkYjcxYWIxMTM4ZGUzNWIzNGNkMmY4ZWQ1ZDUwYjRkZjlmIGxlZ2FjeS10cnVuaworNzMxMSBhY2IwNTAxZDkzZWY5ZDMwYmYwNTNmZDFhODJiZTdmNzhmOGY3YWVmIGxlZ2FjeS10cnVuaworNzMxMiA5ZTFhYzllYmU3OWY1MWRjZDI0M2I1MzNmY2QwY2VhNmQ5MGJmNWM2IGxlZ2FjeS10cnVuaworNzMxMyA1YzE5NTFkNTczYjFkOWJmMzFmZjM3ODYwMDFiY2Y3ZGZhN2U2NDc2IGxlZ2FjeS10cnVuaworNzMxNCA0NTY3ZTE1OGQyMGM1MTI5MmIyY2Y4NzY3MWFmNTM1ZDk2YjAxZmI1IGxlZ2FjeS10cnVuaworNzMxNSAzNWM2NDNlOTAyM2U3MmRjZGRiZWY1NmE0ODNhZTE0MTUzNjRhOTUxIGxlZ2FjeS10cnVuaworNzMxNiBhN2I5YzdjODEzMzc2MzIxYTgyNDIxMTI3NzE1OTk1MDI1M2Q0Y2E4IGxlZ2FjeS10cnVuaworNzMxNyA4NDY3OWY3YmJlNmQ1ODQ4YTYwNWMxNDBiZDhhMDBkMGFiNWFhNWNjIGxlZ2FjeS10cnVuaworNzMxOCAzOGFlMmEwZmM0ZjMzYzZlNmFkMGM3ZjA2ZmZlZThjMDlmMmNmOTg5IGxlZ2FjeS10cnVuaworNzMxOSA1NTVmNmU3NmQyMDdkY2NkM2RiYmNhNDk1ZGVlZmRjMzdhZmU2NjMwIGxlZ2FjeS10cnVuaworNzMyMCAwYmRkMzE1MzhkOGZkNjY2NzBiMWI4N2MyNzA3NzBlNzcyMTZhZmRkIGxlZ2FjeS10cnVuaworNzMyMSA5NzIwMjZkNDcyNzRhZWE1YWQ2ZjNhYmU3N2Q1MzI0Y2IzZGMyNGRlIGxlZ2FjeS10cnVuaworNzMyMiBkNTM4MTJkNjg0MDhjNjI0ZmM4ODJiN2M5NmNiNjkzMDA1NjQ1YWVlIGxlZ2FjeS10cnVuaworNzMyMyA1MjY5NWVmZGYyMmMyYTg1ZThiODlhNTgwNGVjOThhY2NkYjc4NThkIGxlZ2FjeS10cnVuaworNzMyNCAwYTQ5ZDE5MjUwNmRjYmE2MmY3NDIxM2FhNjllOGU5NTFiYjYxZDY4IGxlZ2FjeS10cnVuaworNzMyNSAwZTE4OTdhMWYwZDUyY2IwOWY5YWJlNTI5ODUzMTRkMjkyMGVkMzZjIGxlZ2FjeS10cnVuaworNzMyNiBmODA4MDAxYTNlMDEzN2FjYmZmMTJkOGI1NDEzOTExMjQ2NWVjMzk3IGxlZ2FjeS10cnVuaworNzMyNyAyOWNlZDQ4NWFjYTA5ODM1NmEyYmQzN2FlOGRhNTM0MTM4NDE0YzgxIGxlZ2FjeS10cnVuaworNzMyOCBjZjkwNzQ1MzgxYmZmZDBhNjYzMzVlYzUwNTYxMmM1YWM2YWEwNDk3IGxlZ2FjeS10cnVuaworNzMyOSAxNjdhZDM5NDQ4OGNjYWIxYTUzZWI4OTI4MjQ4ZDg0YWEwM2ZjY2MwIGxlZ2FjeS10cnVuaworNzMzMCA0M2FiMGZlZmU0YTE1NmFmN2Y0NGUyODE0NjE2YWVkYjQ3NWEzOGZmIGxlZ2FjeS10cnVuaworNzMzMSA4OGRiZmEyYmI5ZGNlZmZjMGUzOGI0OTUyNDE1ZmE1NmYwNjZjNWJlIGxlZ2FjeS10cnVuaworNzMzMiBlMGFhZWU3ZmQxZmQ0NTRlNmU0NjBiMjZmMjVlZTllYWMzODllNjc5IGxlZ2FjeS10cnVuaworNzMzMyAxOTg5ODllZTM2ZDU2YTVkM2U1NWU1ODFiOGEzMzdkMjdiYTBiZWFkIGxlZ2FjeS10cnVuaworNzMzNCBhYjQ2MWM3NjI1NTlhNDMxYmM0MDg5ZjQ1MWRkNGI1MDdkYTc0YzY1IGxlZ2FjeS10cnVuaworNzMzNSA1YzZmYmRjNTBlMWQ2NDM5OGRmOTA2OThmNjMxNDAzNmJkNzgyZGVjIGxlZ2FjeS10cnVuaworNzMzNiA2OWNhNWUzY2NjNmRhODI1MTYyYzVhZTljMzcwODcyYzdlOTUyYTNhIGxlZ2FjeS10cnVuaworNzMzNyA3ZDczMTk4MTFmZjBhZTEzNzFlMWMwZTdjNjkyOTQ5YWUwZmI5MTZlIGxlZ2FjeS10cnVuaworNzMzOCBiMTcwN2JjZGMyNjUyNmNjNzU5ZDVmMDY3YjAyNzZlYWY3YThkYWI3IGxlZ2FjeS10cnVuaworNzMzOSBhNTM5MDhkMDlhMDRjMDEwMzAyMWUzOTg2ZTc4MDE0NmE1M2YzNjM4IGxlZ2FjeS10cnVuaworNzM0MCBmNTA3M2UyNDE0N2MwNzg4MTVmNTAxZjg4ZmY0MWViODZkY2IyZTNmIGxlZ2FjeS10cnVuaworNzM0MSAzOTYwMzQwYTMyNTIwOGM0ZTVkNzkwZjEyZmMzZDQ1NWRhYzgzNDY4IGxlZ2FjeS10cnVuaworNzM0MiBlM2YyYWIwYjBhYTE2ZDIwMDMyMmY2NzBiMGU3Nzc3NDk3ZGE4ZTA2IGxlZ2FjeS10cnVuaworNzM0MyBiZjRkYjJhNGJiNTQwNzllZDA3YjBhYTZmMTc4ZWI4NzRlNTAxZTU3IGxlZ2FjeS10cnVuaworNzM0NCAwZWEwZmFjNjhjMWM5ZDhmNzZkNWY3ZDdhZWMzZjJmMjdlNjMyY2E4IGxlZ2FjeS10cnVuaworNzM0NSA2OGY0MTM0ODY5ZGIwM2I3N2NhZDJmYmNjZDA2M2IwMjQ4Njg5ZWIyIGxlZ2FjeS10cnVuaworNzM0NiBhNzE1OWJhMGU0NWQxZDc0OTQ0NjYxZjhhM2I4ODlmYWIyZDFiYTYzIGxlZ2FjeS10cnVuaworNzM0NyBkYTUzZTQ4ZWZlYTg2MGEyZGIzM2RlM2M1YmFjZWMyYWU5NjQ2MjJhIGxlZ2FjeS10cnVuaworNzM0OCAzMmY2YjBkM2E2NmZiZjA4OGJjYzZmM2RhZTI4NDZkYzhhMzQ5YzdmIGxlZ2FjeS10cnVuaworNzM0OSAwM2JjZGQyMmY2YTRjMmEyN2U3ZDdjODRkMTEwMjA2M2RkZWJlOWQ0IGxlZ2FjeS10cnVuaworNzM1MCA5MTEwNDBlMWJiMTE5MTg0YmI1OTM0MjQ3OGY1NDAyODRkZDg3Y2QwIGxlZ2FjeS10cnVuaworNzM1MSAwZjEwZmE3NTJjYTkyNTZmM2M3YmNmODkzNzcwNDA3ZTgxMWE1ZDA5IGxlZ2FjeS10cnVuaworNzM1MiBlNTdhOGRlNWFlYjM5YjMwMWRjY2RkNjk4ZDFiYzVmNTZiNGFkMWFiIGxlZ2FjeS10cnVuaworNzM1MyBhOWU3ZTBjY2FhNGFjMGMxMDVmNjNkNzMyNzg2ZmUxNmZmYzEzNDg4IGxlZ2FjeS10cnVuaworNzM1NCA0NTE0MDIzMTYwYjQ1ZDFlMmNjMGQ1ZmQ0MGE5ZjQ2YjJiM2VlZTAxIGxlZ2FjeS10cnVuaworNzM1NSA5YTdlOWYxMGFlZDYyMDhlYmZkODM5ODk5YmYyODhkN2RmNTg2NGU5IGxlZ2FjeS10cnVuaworNzM1NiAyMjQxZDMxMjY1OGFlNzczZDI0NjZiOTkyNTIxYTQ2MzM4MDQzNjQyIGxlZ2FjeS10cnVuaworNzM1NyA4ZDE3ZDU1MmQwZWMwNWRhYzZhZDgxZWQ2MzE0MzMyY2QxNzNmYmEzIGxlZ2FjeS10cnVuaworNzM1OCBlNzQyYjU5M2MwOTI2M2NkZWRiYmNhNTVlYzc4NmJlYjc4NmE1N2YxIGxlZ2FjeS10cnVuaworNzM1OSA2NWNiMjYxZjc3MzZjOWE0M2RmODFkZmM1Zjc2MmY5ZDUzM2U2MTFkIGxlZ2FjeS10cnVuaworNzM2MCAzODNjNjQ4NjM0NmY2NjMzYThlMjljODU1YzFmMzk5NDBjM2YzNzIzIGxlZ2FjeS10cnVuaworNzM2MSAyMWM0MWQzYzI2YjY1MTFhNzIzOWU2ZThlNDc1NzE2NTcwNjhiNmY2IGxlZ2FjeS10cnVuaworNzM2MiAzNDJkMmVlZDU3M2E1NzhiMmU2NTY5YTNlZGYxZTI1OTg2ZGNlYjgxIGxlZ2FjeS10cnVuaworNzM2MyBmMTI2MTE4NjcyMmNkMjA5ZDRlNWZiM2JmY2M4MDZjOTJkMmJjYmE4IGxlZ2FjeS10cnVuaworNzM2NCA5YzZiNWE2NWNlNjMwMGQ4ZDBjNmU5YmY3YTYxOTAyYjczMWJiY2E5IGxlZ2FjeS10cnVuaworNzM2NSA4YTY4ZjgxYmFhZDZiMTY5MTEzMTZhZGYzOTA2MDZiODZlYjQ0ZjZiIGxlZ2FjeS10cnVuaworNzM2NiBkMzk5YTQ1MzdmNmRlMGYyMDRjOWNhNmVkM2RmZDRhN2MzZThiZTY2IGxlZ2FjeS10cnVuaworNzM2NyAxYzA4OWM1YjY2ZTk5MDk1NGVkNTdjOWQ3YmM4M2E4NDQ4YzBmZDJkIGxlZ2FjeS10cnVuaworNzM2OCBjMmVhYzEyNmU4ZmZjMDg3OGM2NDk5ZjhmNDFlYTNiYTRmNTUyNzNhIGxlZ2FjeS10cnVuaworNzM2OSBmMzFmNDdmZjFmZGQzZjQ5YjI3MWI4YmQ1NTViYzFhMzE0MDYzZDUxIGxlZ2FjeS10cnVuaworNzM3MCA1NTY4MzIwZGE5YjU5YWViZmVmMjkxNzVlNTFlYTk4N2YzMGY4YTFlIGxlZ2FjeS10cnVuaworNzM3MSA1MGFiYjA4NTA3NDA0NjllZDhiZjJkMTAzMzI5ZjRjYWNjZGUzOTM4IGxlZ2FjeS10cnVuaworNzM3MiA5MGMyMWRkZTQyODQzZmIwNGM1NGQ4OGYzMjk1ZTk3ODQ0YzY2Njc4IGxlZ2FjeS10cnVuaworNzM3MyA0Zjg3ZmQyZDA1NjJlYWIxODRhNTc2ODQ4ZWJlNDBkNTAyYjMxOTYyIGxlZ2FjeS10cnVuaworNzM3NCA5ZWZmNzg4MGU2ODQ0ODA1YjkzYjYwODhjMjVjM2NlMWMwZDEyMDdkIGxlZ2FjeS10cnVuaworNzM3NSAzN2U5N2EzMTAyNDExZDIwZDE3MjU2NWI5YzliOWZlZmFkMjEzNmYxIGxlZ2FjeS10cnVuaworNzM3NiA3NzAxMDRjOGY4NGEwYWZhMzAzNDk5MjRlYjNhNDc0MGZlOWIzNWM3IGxlZ2FjeS10cnVuaworNzM3NyBkNDZlNDc4YjU3NjdjMzg5ZjNlNzc0MzNkNjZmYWMxMDliN2I4NzMyIGxlZ2FjeS10cnVuaworNzM3OCA2YTYyOWQyNzhhMThiOTIyZjJiMzhjNmMzMTU1OTlhM2ZhNThmYWE2IGxlZ2FjeS10cnVuaworNzM3OSA1ZGMyMGE5ZTA1MDY3YmExNzAzNjdlOTgwM2UzOTY3NGIxYzMxY2U0IGxlZ2FjeS10cnVuaworNzM4MCAzMjIyMGM1NzI4ZjUxNDg2ZTBkMzE5OTZkNjcwMzQwMmU3NDQyZTgzIGxlZ2FjeS10cnVuaworNzM4MSBmY2U3ODFiMTI3YjkyZjM5ZDNmNzNlNTFiYTM4YmExMzBhNTk3NGE2IGxlZ2FjeS10cnVuaworNzM4MiBmZDM2MjY1MTFkYWRmY2NiNGU1M2U2NzRhMGYzOGM1MTMyZjUxNDI2IGxlZ2FjeS10cnVuaworNzM4MyBjZmExMjgyOTAyZGFjZGEyZWFhYWU4YjNjZGMwNGJmZDk3NWQ1NmI3IGxlZ2FjeS10cnVuaworNzM4NCAwODM0YWFkZGJmMWZlNDRlMjEzYmI0MTYyNmVkYTFmMjZmOTFhMjJjIGxlZ2FjeS10cnVuaworNzM4NSBmY2FmOWQxMTlhYmZkYzA5MGVmODEwNjQ4ZDgyOTYwOTMyOTk5ODFlIGxlZ2FjeS10cnVuaworNzM4NiAyMTg3OGM4NDk2MjZhZTFiNzQyZjhhYWYxYWJhMzJmYTI3OWEzNDlhIGxlZ2FjeS10cnVuaworNzM4NyA0YjU5MGY1OGM2YTdhMzkzZjNhMWQ2ZWExOTIyNmViOGI1ZjlhOTNkIGxlZ2FjeS10cnVuaworNzM4OCA5ZTJjM2M2ZDRmYTE1YzhmYjg0MzYwYjg1MmVmM2RiN2MyMzg4OGZiIGxlZ2FjeS10cnVuaworNzM4OSAyNTBiZGRiMmVjY2YyZGJjZDA0NTE5NDY4MTVkOGVlNTRkMTRmNWI1IGxlZ2FjeS10cnVuaworNzM5MCAxNGVkOTA5YTljODA5ZjdlYWJhZmI3OGY4N2VjN2VkMjAxNTJkMDJlIGxlZ2FjeS10cnVuaworNzM5MSAwNzllYjY5NDcxZTU4MzM5YzFlYmFjZDBiYzdhMzhmYzYzNjk0NGM3IGxlZ2FjeS10cnVuaworNzM5MiAxYmNkNDk3MmRhN2U4NmU0NGJkOWEyZTcwMWIwNWFmZDNkY2U5ZjVlIGxlZ2FjeS10cnVuaworNzM5MyAyYTRkM2Q5OWI4YTQ1YThjMmM2Zjk5YmY1MmMxNTJiYjA2NjllYWI1IGxlZ2FjeS10cnVuaworNzM5NCBmOGU1YmM1MzUxYTk3M2FlODQ4NTMwZDVhYzU4YTcwMzlhOWVhZWU4IGxlZ2FjeS10cnVuaworNzM5NSBlNzc1ODVhZjJhMjE2NTU4Mjg2NGVlODYwN2JiNzIwOTQ0YTkyOTc1IGxlZ2FjeS10cnVuaworNzM5NiA1NThhYmFjNzU5OGQyOTBlZTlkMmRlYmMwMTJlOGRhOGVkZjgwNzZmIGxlZ2FjeS10cnVuaworNzM5NyAyZGVjMzYzNDU2NjU4MzIyYWEzOGY2ZWMxOGU2NTg2ZjY0MDZjOTVjIGxlZ2FjeS10cnVuaworNzM5OCBhZTU3MzkyMmZkY2RhY2NiNjFiYmUyYTMzNDI2NDkzYTlhZDRiMzZhIGxlZ2FjeS10cnVuaworNzM5OSBmMDdlMThkYjM2NmM0OTFjNGViZGUwNmVkMDMxNTgzMGI0M2ZiOGJjIGxlZ2FjeS10cnVuaworNzQwMCA1MDdjNDYwMjA1MjY0ZDU4ZTM0MDhhYjE2MjU3ODdiOTI5YTYzZDAyIGxlZ2FjeS10cnVuaworNzQwMSA3MDY5YTJiZjViYWY2YTlhNTZhOWEyZTdlOTJjYWUwZjk4MDgwMjZjIGxlZ2FjeS10cnVuaworNzQwMiAwNDA0OTNkZTg0OGQ4ZGQ3Mjc1ZDU4NTgwMzk3NDBiM2IxOWVhMzQ4IGxlZ2FjeS10cnVuaworNzQwMyA5YmU2NWU2YzM1YzgyNmQ0ZjcwOWFkN2Y2NTE5YjQ2MzEzMzM0MGM3IGxlZ2FjeS10cnVuaworNzQwNCA1MTI2ZDRiODE5ZTllMTljNWFiMjU0MzY3NWIwMWQ5ODlkMWFjZjgxIGxlZ2FjeS10cnVuaworNzQwNSA1MzY5MzVjMjk0MDE3M2QxYmM0NDJhZWFkNGExM2E1MWIxYjBiMzQ5IGxlZ2FjeS10cnVuaworNzQwNiAxODAyM2U3YzM4NjJmY2M4Yzk4ZGJhNjMyZTg1ZWI1NDFkYTU4YjZiIGxlZ2FjeS10cnVuaworNzQwNyBiMzc4NzUzODI1YTA5MWZlY2I5NGU0Yzg3YmZhZDAwNDE1YjUzOTNlIGxlZ2FjeS10cnVuaworNzQwOCBiNTZiYzI1YWVjODUyYWQyOWZkYmY1MTc2Yzc4YzkxMjNhMGMyODE0IGxlZ2FjeS10cnVuaworNzQwOSA2YjYxOTEyZDVmMzU5YjA4NDE3OWQ1OTQ4MzEyYWE3YTVmODFkY2YyIGxlZ2FjeS10cnVuaworNzQxMCAwOTVjOWVlMjNiNTc2YzAxMzkxODViNWUxZmM4MTU1MzMwNjA0NGU2IGxlZ2FjeS10cnVuaworNzQxMSA3ZDBiZmI0NjgyZjlhZjUyMDUwNTEwZWQ4MDBkMTc3NWNiNDYyNGI4IGxlZ2FjeS10cnVuaworNzQxMiA3ODlkZTdjNjY3MTI5NjYyZjBiYTQ4NTVmYjRiMGIwZTA3YzhiZWQ0IGxlZ2FjeS10cnVuaworNzQxMyA3MGRiNGJlMWRkNGIyNWMxMjVlYjJlOThlYTU3OGI3MjAwNGQyZGJiIGxlZ2FjeS10cnVuaworNzQxNCAyMTdjZmI2MTk5YmUxMTk2MTBjMjI0Y2NiMmE4M2M4YWVjZjM2MzJlIGxlZ2FjeS10cnVuaworNzQxNSA1ZWVkNTE3NTAyODQxNjMwNDNiZTI5Nzc5ZWFjY2I1OTAxZGZmZTc5IGxlZ2FjeS10cnVuaworNzQxNiAzM2UzM2JhN2Y0MjFhZTdmOTZhYzAxMDM0ODE2MTAxZTBhODU1MjI5IGxlZ2FjeS10cnVuaworNzQxNyBhNTIwYzY4NGNlOGRjMDBjYjkzMTFlMzAxNzM0OTIxYmY5MjA4NTRmIGxlZ2FjeS10cnVuaworNzQxOCA1N2FlZDE2ZTIxNjVjOGIyY2Y4NzUxNmVjYzFkNmI1ZjBmNmIxMzBjIGxlZ2FjeS10cnVuaworNzQxOSA1MjhjMzE5YzZlN2ZmMGRmMWI5MTczYWJjODg4OWJiZTYwM2ZkYzg3IGxlZ2FjeS10cnVuaworNzQyMCA2MTE4Y2E1MTQwNGQ4NjAyZmY5MDhiZmU5ZGQzZDJhMTYyYzg2Nzc5IGxlZ2FjeS10cnVuaworNzQyMSBiYTExYjU4YjJiMGEzOGMwYzdlOWQyMDI0Nzg0OTI5NzY2NjdkZWZhIGxlZ2FjeS10cnVuaworNzQyMiA3OGQ4ODAwNDMxMjllMDc0NWYyNTJlMzQ1NWQ5ZmIwYjkzZjAzNDliIGxlZ2FjeS10cnVuaworNzQyMyA1NjkzNDM0ZWE1MzhjODlmZDUzNWNiMThkZTk5NjUzODJiZWY0M2Q1IGxlZ2FjeS10cnVuaworNzQyNCBjYTlhYTQ3NDExZGU0YmEyOTA5ODc2MTYxYWIwMTcyOGZkODY5N2MxIGxlZ2FjeS10cnVuaworNzQyNSAxOWQ4MTliMTZiODI1MmEwMjEyOTNiM2M0YTMzMDBlZTZhYTYxNjdmIGxlZ2FjeS10cnVuaworNzQyNiBkYTJhYmJmOTM4N2M2MWViY2ExNWM5YzhkZTU4YjAyYjMyMTIxY2RiIGxlZ2FjeS10cnVuaworNzQyNyAwNWZkNDMyZDllMmI2OGQ4ZTkyZTM0MjEzNDdmMDY4MTA1NzNiYTI3IGxlZ2FjeS10cnVuaworNzQyOCBkYTRhNDk3YmVhM2E5NDgzOWY4ODVmMzM3MDRlZTc4NGJmYWMwNzc0IGxlZ2FjeS10cnVuaworNzQyOSBiMWVjZGIyZGEyNDAwNTUxOWUxOTY5OWE0ZTIzNDU4YTg2YTFjMDlmIGxlZ2FjeS10cnVuaworNzQzMCBlNmI3OTdhYWE2OWY3ZDIwNWI1MGU4NDkxNmM3OTNhNWEyMzZmYjFkIGxlZ2FjeS10cnVuaworNzQzMSA3MzMyNTAxOWFkMzlmZjViZjFkZTUxYzEzY2YzYTExNTViMjI2OTQ1IGxlZ2FjeS10cnVuaworNzQzMiA5ZDU4ZDBlOTg3N2U2ZTdhZjJhMmI5N2IwNWVhZjIxMzIzNzJkMjdlIGxlZ2FjeS10cnVuaworNzQzMyBjZTQzOGQzNmQ0ZmJmMTFkNGQ3ZjQ1N2FhZGNhZGFkYzQ3YTQ2NWRmIGxlZ2FjeS10cnVuaworNzQzNCA4OWQwNzc5NWZkNjk0ZmU0MjUyN2YyZjZjNGFmMGQ3MmYyNDQwZmUxIGxlZ2FjeS10cnVuaworNzQzNSAzOGY5ZTQ2ZDIzMTdiNTEwNzNiNjViNzZlYmM4YzVhNzEzZGRiZjgwIGxlZ2FjeS10cnVuaworNzQzNiA1ZTYzMzIyZjRjMDYxM2I4MmQzMTg0MDlmODQ3NGE1NTc0MmIyZDI4IGxlZ2FjeS10cnVuaworNzQzNyA3NjVkOTYyZjQ0NDk4MjU2NmZhZTJjNWE5ZTgxOTA3ZWYwMTE5YzI3IGxlZ2FjeS10cnVuaworNzQzOCA1ZGVkMmJjMTkwOGIzNjU3MWIxMjhhNGE5OWE5NDZlYjA4ZGNhODJmIGxlZ2FjeS10cnVuaworNzQzOSA2Y2U2MWYyMTJjM2U3ZjAwMWYxM2Y1OTdhZGM2ODE4Y2Q5OTgyMDFmIGxlZ2FjeS10cnVuaworNzQ0MCBkODRjYTE5Nzg2OGIzNTQ3MWMzYTU3YmIxMmU2MzA4Nzc4M2MyMDJmIGxlZ2FjeS10cnVuaworNzQ0MSA5YmJkNTdkMzYwOWZiYjQxMzNjYTBiNDIyMDUxZTdhOGYzMDYzYWUxIGxlZ2FjeS10cnVuaworNzQ0MiAzNzA1Zjc1YTgzNTVlMjM2NTQ0ZGNlNzBiNmYzNGM0MjQ2MGVkOTY4IGxlZ2FjeS10cnVuaworNzQ0MyAzZDMyZGEzN2Q2MjdkOGJhMDIyMTYwYWI0YjM4NDFjNzMxYTFlNWFkIGxlZ2FjeS10cnVuaworNzQ0NCAwZjFhZTYyZGQzYjg3ZTBhMTcxODBmZGQzYmUwNGMwMDQ5MWNlMzU5IGxlZ2FjeS10cnVuaworNzQ0NSA4MDU0ODdkNTA2MjBiNGY1NDZlMWI4ZDEzMDk3NTcyMjlmMDdlZTE5IGxlZ2FjeS10cnVuaworNzQ0NiA4ZDhjNzZhMWQyNTA0MDYyZTFmZjcyMTk1NDZlOGU5MDdkODgwNTNkIGxlZ2FjeS10cnVuaworNzQ0NyA2ZWNlNWNmYjQ5ZmZkYjNmZGI0M2QzNzdiN2U0ZGY5YmNiOWMwMzNjIGxlZ2FjeS10cnVuaworNzQ0OCA3ZDczY2RjMDExOTgyYTVlNzFjY2RiYzJlMGRkZGZjMjJhZTQ3N2QxIGxlZ2FjeS10cnVuaworNzQ0OSAzOTc0NTU3NGJmMDdhZmM2ZjE4YjFlNDg4Zjk4ZWM4MjQ1Yjg2MDlkIGxlZ2FjeS10cnVuaworNzQ1MCBiNGE0MDBiMzU5NWUyNGNlOTQ4Yzg0MWJhZTI4ZmRmMTc2N2ZiYTAzIGxlZ2FjeS10cnVuaworNzQ1MSAyZTI5NDVkODE2M2M2NzE3MjgzODg3NWYxOTIzN2QwMTNjM2QwMDYxIGxlZ2FjeS10cnVuaworNzQ1MiA5YjE2OTQzOTA4MjBkZDA0NDJhZGNmZTVkY2JkZmIwNjhjNzM4ZTU5IGxlZ2FjeS10cnVuaworNzQ1MyA0N2VlM2I0ZTJkODAzM2NhY2Q5OWQ2MzUyOGI0ZDY0M2MyNmE2MTJkIGxlZ2FjeS10cnVuaworNzQ1NCBiODY0YjQxNGM0NTdjZDllNDQ1NjA1ZTVhMDgyNzZmNDJmNzg5YjljIGxlZ2FjeS10cnVuaworNzQ1NSBhOGQ3YmZlYzdjOTJiN2MxOGFjOWVjODZjOGQyNDgwZDhhOWJjZGJkIGxlZ2FjeS10cnVuaworNzQ1NiA5OTQzNzZhZjkwNjRkMzBmMWU4MmZhOTliMTE0NDU2YzAzZTUwOTc3IGxlZ2FjeS10cnVuaworNzQ1NyBiNWU3ZmM4YmY5MTk2MzY4ZGMzMGYyN2YyY2U4NDg3YmE4MmVkZGQxIGxlZ2FjeS10cnVuaworNzQ1OCA2NmNiYjM3YjRjMGJkNjAwNTMxOTQ4MTk0MGY3NjlhNjM0MDM4YzFmIGxlZ2FjeS10cnVuaworNzQ1OSA3N2Y5NzAwNzY4MzE0MDI3NjAzYTMyY2YwOTBkZWRjMTRlY2ViYTYyIGxlZ2FjeS10cnVuaworNzQ2MCA0MzA5YmM5N2VjYzZhODc2OWU4YTZkZGMwYWFjNjM5YTE3NTI5ZGU2IGxlZ2FjeS10cnVuaworNzQ2MSBkOGQ1NjNiYWY4NzQ3ODY3YzA3MDQ5Y2VhMWQwNzNiM2Q0MGE1YTQxIGxlZ2FjeS10cnVuaworNzQ2MiAxZGVkOTQzOGZhNTE1ZDc3MzhhMDAyY2MwYTAyZjczZDczMDk4OTcxIGxlZ2FjeS10cnVuaworNzQ2MyBkZjM4NWNjMGQyZTM4NzBlZmQ4NjJkN2Q3ZjQ5ZjU3M2EyN2I3MmY0IGxlZ2FjeS10cnVuaworNzQ2NCA2NTE0OGRlZDUxMDg0ZGFmZDZjYmQ0M2JiNTAzNjAwMDRlZjUxNmU5IGxlZ2FjeS10cnVuaworNzQ2NSA2ZTE3ZWY1YTI2Yzg5NDRhODRiM2UzNmFjMDQ4ODhmY2I4ZDJiYTc4IGxlZ2FjeS10cnVuaworNzQ2NiA4Mjc2OTE2ZTFlYThkY2RlNTU4N2MzODhhNWM4M2MzNWJiNzZjZmJiIGxlZ2FjeS10cnVuaworNzQ2NyAxMWJhY2I4ZDczMWFkNmNhZGRjZDBkODljNWUwMWQwYjU5ZTM2ZGExIGxlZ2FjeS10cnVuaworNzQ2OCBiODJkODQ3YjNkY2JjY2Q2M2RlMDc1ZTM4NzlhOTM2OWRmYjM0ZTBkIGxlZ2FjeS10cnVuaworNzQ2OSA5YmM2NTJlOWYyYjQ2ZDI5MjhiMDMwMDNmMDhjNzViODgxNDc5MDU3IGxlZ2FjeS10cnVuaworNzQ3MCAyNjdlZDQ4MGVjMWI4NGMxZGUwN2ZhODY3ZjBkYjI2YjRjNzE1MmRhIGxlZ2FjeS10cnVuaworNzQ3MSA4ZGUxZjZiMDdkZjljZDdkYzBmYzBiNDZlNzJkN2RjMGQwNmMzZjA2IGxlZ2FjeS10cnVuaworNzQ3MiA1OGJiYWYyODRhZDY2ZWYwY2U3ZjQ4MThkMDQwNWIzMGFiNmNlOGE4IGxlZ2FjeS10cnVuaworNzQ3MyBjYzRiYTcyMTRiMThmOTk3ZTk5ZDA3MDMxMDBjOGQxNGJjOWU1ODdlIGxlZ2FjeS10cnVuaworNzQ3NCA0NjgxMjRhMTU2MGEyZDJlYmEzZjQ0YTYwNTIxNGVjM2FlM2RlYjRjIGxlZ2FjeS10cnVuaworNzQ3NSA3YzdhMTg2YjZkODZiMmIyMDMwNTA3MzE1ZGZlMDk5NGVlNjY1YjE5IGxlZ2FjeS10cnVuaworNzQ3NiAxN2M3YTEzM2NjZjcxMTI1ZmQyNDU4ZDRhNGU1Njc1NzBjNzJiN2VhIGxlZ2FjeS10cnVuaworNzQ3NyBhZTNiNDZhNzM3NjU3YjNmNDQwYWI3NTZkY2MxNjViNzBkYmVlOGVlIGxlZ2FjeS10cnVuaworNzQ3OCA2NWFhY2UyMDEyZTUyYzNmMTk0OTFlODljMTg0MjI5MGRkZDFiMWYxIGxlZ2FjeS10cnVuaworNzQ3OSA0YzhlNGU5MzExZTRlMGU1MmU1MDkyZWNiYWQxYmEyNjRmYTQ5ZmY1IGxlZ2FjeS10cnVuaworNzQ4MCBmMTdiYWNlNDhkZDY4YTJjODBmNDRjMDExNWQzYWJhN2QyOGNhMDk3IGxlZ2FjeS10cnVuaworNzQ4MSA1ZjRiMjNlM2Q5N2NiMzhkMGE5M2RhZTQxOGM4ODI5NTQzNWM1ZTZhIGxlZ2FjeS10cnVuaworNzQ4MiBlNGY3YzMzMWJiMWEyZmZmM2UzNThmYmU5NmZiYjk4NGU3ZTNmZDRhIGxlZ2FjeS10cnVuaworNzQ4MyBmNTVlODJlMWU1NjU4YzBmZTQ2MWY0ODM3NTUwYzgzMjE3NGIyYjBiIGxlZ2FjeS10cnVuaworNzQ4NCA0MDJlMzZjODNkMjAyOTAwYTAyM2UxNjA1ZWJkYWRiZGEzNmI3ZTIyIGxlZ2FjeS10cnVuaworNzQ4NSBmMGNmOGQyNzVmYmMxNzUxNDI4ZDBhMzNlZjFlMzYzNzQ4OTFiYTAwIGxlZ2FjeS10cnVuaworNzQ4NiA2ODQwZmY4OWQyNGExZjE5ZmMzMjhlNTFhMDE2NTdjZmUyY2Q5NzU1IGxlZ2FjeS10cnVuaworNzQ4NyA3N2Y5YzI1ZTFmMWZjYWNjOTNmMmU2M2IwY2JiYzJiNzBhNDc2NWZmIGxlZ2FjeS10cnVuaworNzQ4OCA0Y2E0ZTU0YzljZDgzNzZkZjE0MTdlZTI5YzYzYmZiNzlkYTI1Y2Y5IGxlZ2FjeS10cnVuaworNzQ4OSAwYmZhYzg5YWZjODNmZDZiMGE5MjliODJiNzcyYjgxODUyMmUyNDRjIGxlZ2FjeS10cnVuaworNzQ5MCBiMWUyZWVhNjZjYjZjZmRjMmE1ZTY0NjllNTUzMTQ3Y2QxZWU0Nzg0IGxlZ2FjeS10cnVuaworNzQ5MSBmMWFmMDk3YTVlNWQ3OTBjMmE2YjA2Y2FkMDAwNjRjNGQyNjEzZTAyIGxlZ2FjeS10cnVuaworNzQ5MiAxM2QzOGViN2UyMjVkMTgzNTRjYTRhNjdhODRhODgwODI2YTUxMTY4IGxlZ2FjeS10cnVuaworNzQ5MyAwMDFhNTA0MmIxODFhN2RhYjU0YjZjZDEwZWQxMjcyYmI2MmQ2YjcwIGxlZ2FjeS10cnVuaworNzQ5NCAyODkzNTYwOWRmYWVhNjRhYTA2Yjk2YzVlNjA0NTY3OTAyZDc0NGUwIGxlZ2FjeS10cnVuaworNzQ5NSAwZWNhOWQ1ZjdiMmQ0YjFhMDdjYjY0MzQ1MjVhOGI5YmM3M2RkNWY4IGxlZ2FjeS10cnVuaworNzQ5NiBjMjJhZGQzNjQzNTE4ZjZjNDgwYTZmNDY3MTZmZGEwZDdlMmI1YzA1IGxlZ2FjeS10cnVuaworNzQ5NyA2MjY0NTc4N2ZiYzhkOTJjYzI5YzJhNzcxNzhjODk3YWEzMzA1YzA5IGxlZ2FjeS10cnVuaworNzQ5OCA3NWMxZWU4ODJhNGFkNDhhZDZmNDVlYjk2ODJmNDdkMDIxYTA2MGU2IGxlZ2FjeS10cnVuaworNzQ5OSA3ZTUxOTA5OTk2MzMyZGFiMDc2MjllNjI4MGVlYjAxZWQ1N2RjODI4IGxlZ2FjeS10cnVuaworNzUwMCBiZmY4ZjVhZmM2N2ZlYzY0MWU4ZmUzMGYyZjVlMTE3NzVjODhjOTVjIGxlZ2FjeS10cnVuaworNzUwMSBiNWExYmIyZDE3ZmFkNDM2MTMzNmY5NTk0YTdkYzEyMGVjZDUxZTJkIGxlZ2FjeS10cnVuaworNzUwMiAwZWE0ZWE1YjJlYjczZmVhOGVlYTI4ZDEwNWI2ZDgyY2QzZWI2MzYyIGxlZ2FjeS10cnVuaworNzUwMyAwNjc3Yzc3YWE3MGRmMTllYjQ5NmMzMWNjM2RlY2NiNTRkNTgzNzBlIGxlZ2FjeS10cnVuaworNzUwNCAzZjAzN2VlNzczMWJlMzIzODU2ZWM0Njc5OTJlYzE1ZDg5N2QxYmE3IGxlZ2FjeS10cnVuaworNzUwNSAwMGMzY2IxMDdlNWYyNzg4MDZjNGQyYzI2OWVkODg3ZjMxMDkzMWI5IGxlZ2FjeS10cnVuaworNzUwNiAwMTdkNzI1NDRkZjJiZWM1M2ZkOTljMjQwYmFmYjVlYmFjNmJiNGFjIGxlZ2FjeS10cnVuaworNzUwNyBiZTMxZTdlMTkyNDFiMWQ1ZTVlY2ZkMWE0ZjY0MTExNzdhMWJlMmFjIGxlZ2FjeS10cnVuaworNzUwOCA1YjdiNzAzZGFiZmEwNzgzYjkxZjAxNGViMDMxYzE5MmNjZGI5NjAzIGxlZ2FjeS10cnVuaworNzUwOSBkZTJhNzVjN2VhOWZmNDY3Nzc3YjYwZjlkOTc4YjYxMjQwN2VmMTUzIGxlZ2FjeS10cnVuaworNzUxMCBhMGU2MmQ4NWRlNzdhMTUwZTI3OTdiMWRkOGQ4MjY5Njg2M2ZmMjQyIGxlZ2FjeS10cnVuaworNzUxMSA2OTc2NWQ2NDMxZTFjNGE5MzhhYmMxMzkxODMxNGNlZDMyM2E2MWZlIGxlZ2FjeS10cnVuaworNzUxMiA5YWQ3YjhjMzZjNzk0MDUyMzFkMGFiYmY3MWNkZjE4MjIxYjc3NjUyIGxlZ2FjeS10cnVuaworNzUxMyBhODIwZGVhZDA2ZTY3NjJmYzc4YjZiMTJiNjA3YTYzODFhMWVlMWI0IGxlZ2FjeS10cnVuaworNzUxNCAzODAzMjI2Nzk2OGMwMTcyYmE2Zjk0YWZhMDllNmM0YTc0MjJjMDBkIGxlZ2FjeS10cnVuaworNzUxNSA4NzZlNTczNjRjNjIzOTk1Y2ZhNWY0NTU1MjA2MGU0OTJjZjQ0NzZiIGxlZ2FjeS10cnVuaworNzUxNiBjNDk3OTI5YjIzNzExNWEyYzFkNzNlMDYyNWEzNjdlMzM3YzE0ZmM2IGxlZ2FjeS10cnVuaworNzUxNyA5YjdlMGNmNTE5OTA1YWM0OTE5OTgxMWYxMmZlNzJlZGUxZDRjMGRiIGxlZ2FjeS10cnVuaworNzUxOCAxMDRhNjQ2ZmM3YTY3ZjI3ZGYyNWQ0ZTk0MWIyMDAzNWU1ODc2ZjlmIGxlZ2FjeS10cnVuaworNzUxOSBlZTNhYzllMGEwMzIyOTg2MmQxOTA1NmE2NzQzYjE5MzRhMjUwYjY5IGxlZ2FjeS10cnVuaworNzUyMCBiMWQ4MjY5N2MwYjIzNjY3NGQwZTYxYzBlZmNiMGE5MTFlOWM3MmRkIGxlZ2FjeS10cnVuaworNzUyMSA2NTg4MTUyMzA1NDZhNDg5MmMyYWU1MTk0NjhlZGI0ODI3MDg3OGZlIGxlZ2FjeS10cnVuaworNzUyMiA3YTljYWM3Y2I5MTA5ZjQ3M2FjZGRkMWE5ZDIzZTI2OGFkOTVlMGNjIGxlZ2FjeS10cnVuaworNzUyMyBmZGU3MzQ2N2I1ODQ3YmY1ZDUyMjRlNmQ4NTQyMzIzZDlhNjhkNzY1IGxlZ2FjeS10cnVuaworNzUyNCA5NDZiMmIyYTc2MjJmYTE3YWQ0MjQ4MjgzNzZhNWU4OGE3YTAxM2FmIGxlZ2FjeS10cnVuaworNzUyNSA4NTc5ZTM0NDFkOWJjOTk5NWQ5OGU4YmYyNDg1M2ZlZTU1Yjc1NDUyIGxlZ2FjeS10cnVuaworNzUyNiA3ZjZkMTlmYzVhY2FjZmM4NTRhNzNiY2NkZjJhMjg5ZGE2YzEzODdkIGxlZ2FjeS10cnVuaworNzUyNyA3ODQxYzQ4Y2RiNWI0OTY3ZGRhNjNjMDBhZmFhZGY4NTNjM2EzNTZlIGxlZ2FjeS10cnVuaworNzUyOCAyMTliZGQ4YWZiMzhlZjA1YWM0MTdlNzI4YjU5MjI4Yzc0NDU4OTVhIGxlZ2FjeS10cnVuaworNzUyOSBlOWM0NDJkMDkzNmZiNWMzYjkyMmM3YTU5NDRjNWU5ZmY2ZDkyNjlhIGxlZ2FjeS10cnVuaworNzUzMCBmNTdlMTgxZmY2MzhmZGIxYzlhMzY5NjdhMzBiNGM4ZGNiMTk3ZDQ4IGxlZ2FjeS10cnVuaworNzUzMSBlNjI5Yzg4ZjNkZDgwNzczYmZlYzEzMmQzMTc2MjUwZmI4YTE2OGEyIGxlZ2FjeS10cnVuaworNzUzMiA2YzdhNzZmZDVkYzFlOTMyMGUyMTc2ZmQwNzE3OTVhNDE5YjBhOTM5IGxlZ2FjeS10cnVuaworNzUzMyAzNzE0NjRmNjY2NmI2NmQ3ZjFkZDVmNDZkZmExNjE5MTNlNDczOThlIGxlZ2FjeS10cnVuaworNzUzNCAxOTJkNTcxY2M0NjE1Y2U2ODRhZjQxODIzYWZjMTgwN2MxNTc5YTg5IGxlZ2FjeS10cnVuaworNzUzNSA1YTIzMjg3MGNjZWFiNWYzYzRmNWM5YjFlNzhjZTE1ZTFmYjJhZDgxIGxlZ2FjeS10cnVuaworNzUzNiAzNDZmZjliYTlkMzYzNzA0Y2FjMGNjYTBjM2MxMDNiODY3MTQxNWNjIGxlZ2FjeS10cnVuaworNzUzNyBkNjgxNjMxZDk5MmYyMDFiNDQxNTE4YWYyMmMwMDU0NTRkNmI2MGU1IGxlZ2FjeS10cnVuaworNzUzOCBmMDczMWZhNDQ0N2Y1MjYyZjU1MTc4M2M2YThjZGNhZDA0ODliMDNlIGxlZ2FjeS10cnVuaworNzUzOSA3ZGRlZDc4NTFmY2E4YzRiNDY2Nzc4NGFhOTcyOTRhMjk3NWEwYTZhIGxlZ2FjeS10cnVuaworNzU0MCBiNmZjZTcyNDNiYTBiYTg5NmYwNzgyMjcyOGM1NTAyMDZkNzJlOWRiIGxlZ2FjeS10cnVuaworNzU0MSA3NzYxNmIzMDAxZWY4ZjdlMDljNDYzOWMzNmMyODRkZDk3MWRlZTNhIGxlZ2FjeS10cnVuaworNzU0MiA0YWFjYTQyYTJhMTZjOTUxNzRiMmZmZjdhNWMzZDZjYWVmODViODc5IGxlZ2FjeS10cnVuaworNzU0MyA4ZWNmMmQ3YzlmYjFhZGI0Mzg1Y2Y3ZDBmZGFmNDQzMTJiZDEyNDFiIGxlZ2FjeS10cnVuaworNzU0NCBmYTMxNDc2YTI3ODZlZThmNTRkMGU1YzA5ZTVlZDAxN2ZlYjExNmU3IGxlZ2FjeS10cnVuaworNzU0NSBlYjEyZjQwNDZkMGJlMGYwZGY2NGY2ZjgwYzZiZTUxMDIxNjI5MzEwIGxlZ2FjeS10cnVuaworNzU0NiA0NGJkZjBiNTZjMGJkODM0MTQzNGNjZjhiOWEyMzcwOGEyMmEwZTFlIGxlZ2FjeS10cnVuaworNzU0NyBkMjQ4M2MyNzc0MmMxNTRjYzQ2MjBkZjUzZTY4OTllOWExN2U3NjcyIGxlZ2FjeS10cnVuaworNzU0OCBlMjFmMWQyNTk1ZGU4Yjk5YjgwYWRkYTY4NzJlZGZkZmNlMDg0NGNhIGxlZ2FjeS10cnVuaworNzU0OSAzMjczYWNiZTQ3NmZkYWE1ZmFiODlmNmEyMjNhOTJkMTMxOWZjY2ZlIGxlZ2FjeS10cnVuaworNzU1MCA1YjlkNDFmNGMwOGMxMTVmODM4MzViYTE4YTE3OTg1ZDc4OWE3Y2M0IGxlZ2FjeS10cnVuaworNzU1MSA0ZWRhYjQ3NDk3NGNlMDc3NjcwNjQ3MmEyM2U3OWMzZTk0ZjRlNDNhIGxlZ2FjeS10cnVuaworNzU1MiAyM2M0Yzc4MzhhYzJhYjNhNjY3NWMxY2FjYjcxYzAwZjEyNzAxYTMwIGxlZ2FjeS10cnVuaworNzU1MyA3ZjRiMzJlODY1NDU1NzI1MmI2N2FmZTJkYzllYmYzMWUxNDQzOGI3IGxlZ2FjeS10cnVuaworNzU1NCBkNmIyOTJhMzNjZmVmNTNjNzVlYTQ5ZmMyN2NiYmQ4Yzk5NTNjMDQ1IGxlZ2FjeS10cnVuaworNzU1NSA5YThhZGFmNThjZTg2MDc2YjY4OTM1NWNkMGRiNTBiNzJkNmQxOTY3IGxlZ2FjeS10cnVuaworNzU1NiAxYjYxOWI4MTFjMTAzNWE4MTUyM2I2MGIzNDhkNzA3NTg3YTQ3N2ZhIGxlZ2FjeS10cnVuaworNzU1NyAyYzg4MTJlZWE2Mzc5NDE1NTRhNGI2NTZkNGE5ZTE1YWNjMDIyMDBiIGxlZ2FjeS10cnVuaworNzU1OCA3YWIxYWEwOGQzNDhkYjBjZmE3YTM1MmRkOWVhNDM1OWIzOGQxZjExIGxlZ2FjeS10cnVuaworNzU1OSBhZmMzZTRlMDg3NDBiNjM4YWNjNTQwMzNhMTZhMzNiYzE1NmFmYTA0IGxlZ2FjeS10cnVuaworNzU2MCBkMzcwNjU3OTQ2OGU1MGQ2YTFhMTExMjU3MTgxZjYxNDUxMjM0N2MyIGxlZ2FjeS10cnVuaworNzU2MSBhYTczZGE2NjFjZGZmYWUwOWFmOTMzZTJlYzIxNDczNDE5MmM5MDQyIGxlZ2FjeS10cnVuaworNzU2MiA2ZWQ4ZWI0YjY2NGIzMWJlMTg4ODNjZTM1ZTEzMmUzMTZjZWQ3M2ZhIGxlZ2FjeS10cnVuaworNzU2MyBlNDI4ZDJjZmVkNDBiM2E5Y2Y2OTlhNjFkMDA5ODk4MGVlYTY0ZDZjIGxlZ2FjeS10cnVuaworNzU2NCA5MWY4NjMwNmIwN2I4NWZhYmRmOGY1NDZhYjhhODI1YTllYTBlODM3IGxlZ2FjeS10cnVuaworNzU2NSBiNjdjMDJiZDVlMjM2MGU0ODg5OTM2NzQ4ZGU2MTdiMzEzYjcwMjAxIGxlZ2FjeS10cnVuaworNzU2NiAzZmVlYzg1YmJhOWI2Mzk5ZjQ0NWVkNTIzYjNiNTdjNDA0ZTFkMmI4IGxlZ2FjeS10cnVuaworNzU2NyBjYjdhYWRkOWQ5ZjI5MjQ4NGFlZTRlMDY0ZWRmMGFlMTc5ZGFkZDgxIGxlZ2FjeS10cnVuaworNzU2OCBkOTk2ZGM0MmZlNjQxNWFkODIwOTY3MmE4YzY3MzQ2ZmM0ODRiNzQ2IGxlZ2FjeS10cnVuaworNzU2OSAzOGFkYmIzOWYxNWNmNTc3OTU5MDg0OThmMDJhYzQ0NTdlYWQwYzc4IGxlZ2FjeS10cnVuaworNzU3MCAxMTkyMmEyZWNhY2RlNGQ4MThjNDYyMWE2ZTI2ODMxZTM4YWYzOGI4IGxlZ2FjeS10cnVuaworNzU3MSAzMGMxMGIyMjI5NTMxOGVhOWU2ODdiYWI1YmViNDdmNjJjZTQxODAwIGxlZ2FjeS10cnVuaworNzU3MiA1N2I3YTAzYTMyNTJjMGU1M2JhN2RmMjhiOWYyNDI2ZmI5MjA2ZmZiIGxlZ2FjeS10cnVuaworNzU3MyBhNDQ1ODZiZDlmYWIzZjcwOTVhNDgzNzBkOTE2ZTdlZmJjYmMyYWIxIGxlZ2FjeS10cnVuaworNzU3NCBiNDIzMWQ1OTIyODFmMjViMGE1OTFiNjMzMGI4OTkzNzk0MTdlZjQ2IGxlZ2FjeS10cnVuaworNzU3NSAzMjMxMDI1MWQ3Njc0MDg2NDk4ZTBiNjVjZjhkYzAzZGEyOTk2MWEwIGxlZ2FjeS10cnVuaworNzU3NiAyNDk3YzhiMDQxMDE3Yzk2Njg2YWQxMzIwYmRiMWU3OTQyZjlhMDUwIGxlZ2FjeS10cnVuaworNzU3NyBlZTcwYjRjNzE4OTkzYjYwZmRhYjQzZDE5ZTM4MTVmNzVhNThjOTBhIGxlZ2FjeS10cnVuaworNzU3OCA0OTJjMGNhZTFmMDUyMjliMTE2YmE3YmQxMGM5MmM2ZWIyNGY5OGQwIGxlZ2FjeS10cnVuaworNzU3OSA0MTA5YTE3MWM5MDFhNDFmOGIzOTFkZWYzYjAxZTQyOTE5ODkxZjFhIGxlZ2FjeS10cnVuaworNzU4MCAwMGZkNjg1N2Y3NmI5MzljNWI5ZWEwMDBkMWNmODNkNmEzZTYxZjUwIGxlZ2FjeS10cnVuaworNzU4MSA5NDA4MTMxMTVmNzc1Yjg2Mjg4Y2ZjZGIwODA3MzA2ZDFlM2E4MThjIGxlZ2FjeS10cnVuaworNzU4MiBmOWI0NmI1MDM3NTE5ZjQ0MzMzNzQyYTE3YmU3NGZlMzg2MjRhMTMxIGxlZ2FjeS10cnVuaworNzU4MyBhOWE2ZDQxNmI5NDViNzk4OTIxN2JjODQ5MGQ1ODBkZGI0MzQ5ODIzIGxlZ2FjeS10cnVuaworNzU4NCAwYmJmOTc4NjFjZDlhMTYwNDA2NTAwMWUxZDIyYjYyZTYxNDJiODY2IGxlZ2FjeS10cnVuaworNzU4NSAwNzNmMWIzYWQ5ZDJiYWY0MGI0Y2JmMDJiNmQwMjU4MTI4MmFkYzk3IGxlZ2FjeS10cnVuaworNzU4NiAyMWI4NzEzMjVjODUzNGQxYjI4N2JhOTA3N2ZjNzY2NGVjOWZkZWMxIGxlZ2FjeS10cnVuaworNzU4NyBjYTYzODhiY2MwNWE1ZDkyOGE2MjYzNzcyMDQzY2VhZTBkZGFkZWRlIGxlZ2FjeS10cnVuaworNzU4OCBmYjhjZWZjZWZkODFlYTM2OTBhMDEzNjM5ZWQxMTg5Zjk0MDZkZDEyIGxlZ2FjeS10cnVuaworNzU4OSBiOWNlM2NjNTAwNzY3MWE4NzQxY2U2NWEzNDYyNTIyOTFkMTMzMTYzIGxlZ2FjeS10cnVuaworNzU5MCBlM2FiNDg5ODhjNzc5ODUzYzExYjVkYmViYTlhODg3ZWRjNzE2ZWU0IGxlZ2FjeS10cnVuaworNzU5MSA1MDY2NjQ3Njc3MzZlZmI0MDIwZTdjZWNkZjZiMmM5NzZmMmQxOGE5IGxlZ2FjeS10cnVuaworNzU5MiAyYmIwYmRhMTU4NWM3ZmE1NDk3MzVhMDllNTAyZDA4ZGU1YWVkZTMyIGxlZ2FjeS10cnVuaworNzU5MyAwMDI4NjVhZjU1ZTViNThjOGMzMTFmOTA2YTZmZTQwMzUxMDQ1YjUzIGxlZ2FjeS10cnVuaworNzU5NCBiZGEwMWEzNzQ3NjIyNWJhZjgwMWNmMDgxMTQ3NTNkNTgwYTgxNGVmIGxlZ2FjeS10cnVuaworNzU5NSBhNDhmMzY3OGY5ZTFhOGRlOTM5NGZkYjMwZjQyNmRhMjc4NDAxNmVlIGxlZ2FjeS10cnVuaworNzU5NiAyZTZlYjFjNzE1Y2U1YWMxZTc5NDM1MGYzM2JmN2ExMjVhYWJlNzI1IGxlZ2FjeS10cnVuaworNzU5NyA1N2IwZjE2MTllMjgyNDA0MmE3YzFhNWYzNjc2ODI5OGU0YjI4ZjhjIGxlZ2FjeS10cnVuaworNzU5OCAwNWZmZmQ1NWIwMTRjMDE1MGIwMmM5ZTEwNWExMTgyMjJiMzI2ZWFiIGxlZ2FjeS10cnVuaworNzU5OSAxNzE1OTFiMzlmNjMyZWQwYjQ1YmJhYzE2ZGNjODllMTA3NzA3MjdiIGxlZ2FjeS10cnVuaworNzYwMCA1NGE5YWRjYTIxNWM2ZTBiMWE3NDViYmNhNzVkNzViZDNiMTAyY2FjIGxlZ2FjeS10cnVuaworNzYwMSA3Yjk0MGYyOTYyMWI4NWZiOWJkZTVhN2E1NTAzYWQzZDZiYmNmZTI1IGxlZ2FjeS10cnVuaworNzYwMiBmMjIyMTMxOTI1MzE2MTBjN2E0NmI0NzYzZWFjNzg3ZDQ4NGQ5MDY5IGxlZ2FjeS10cnVuaworNzYwMyBiZjFiZDY0Zjg1ZTAxZjI5ZWFhNGVjMjdiNTQ3ZmFmYWI1N2NjNGMyIGxlZ2FjeS10cnVuaworNzYwNCAxMDJlMjkxMmQwZDE3NzZhNzYyZjJmZDNkOGRkMjhhYzQ5ZjhiMjAzIGxlZ2FjeS10cnVuaworNzYwNSAwYmY3Mzk0ZGJhMjIwNWIwMTU0MjMyMTdjNjVjMDU3M2M5N2RlZjIyIGxlZ2FjeS10cnVuaworNzYwNiBlYzQ1Mjc2YTZkYWRiOWJlMTNkYmNhNWE1MjBjMzA2NGRkOWNiOGFhIGxlZ2FjeS10cnVuaworNzYwNyAwZmMxZGFjZGFmZDczOGJkZTM3NTIyZjg5YWQ4ZWVmZTliYjkwNjQ2IGxlZ2FjeS10cnVuaworNzYwOCA2NjYxNTJiNzcwMjcxMDlmMzNjNzAyOGQzODVjN2ZhNDliOGMwZjRjIGxlZ2FjeS10cnVuaworNzYwOSBkZWYwM2QzYjhkZGJmOGJkMjFmOTJiMWQ4ZWI4MjM5YzczNzA4Zjk4IGxlZ2FjeS10cnVuaworNzYxMCA3ZmE5YTY0NDQ4M2U4MmU5YjMxZGViNTdhZmI2ODljOTFiMzk3OTI2IGxlZ2FjeS10cnVuaworNzYxMSBhNTEzZDgzYzA2Y2IwMDFmMGQzYWZmNGZkNWQ5NjdhYzlmODA1ZmQ2IGxlZ2FjeS10cnVuaworNzYxMiA0MGViOGIwZWUxOTI2MWI1YzJjOTIyNGM1NTBjMWIyMTIxMjdlMWUzIGxlZ2FjeS10cnVuaworNzYxMyBmOTNlYzFhYzE3YWE3MTkwZjYwODBiNTA0MDk4ZjAwZmE4MWZhMjRjIGxlZ2FjeS10cnVuaworNzYxNCA5MjE2ZjVjMjVlNGVmNzhlNjc3MGJiZWNmODYxY2NjZTYyNThkNjk1IGxlZ2FjeS10cnVuaworNzYxNSA4ZmJlZDc4ZTgxZTcxMjEyODg3YjlhYjc3OWNiYzBhZjQxZGQ1Zjk1IGxlZ2FjeS10cnVuaworNzYxNiBhNGM4Yjg4NzEzNzYxZmQ2NjRiMGNhZTY3Zjg2NWJlZDkyZTM3OTRkIGxlZ2FjeS10cnVuaworNzYxNyA4YTlmMTU3OTMyMzgyZWZmZjJlZjczMzk0NTM3YjZmNDRkMjA4ODIyIGxlZ2FjeS10cnVuaworNzYxOCA2OTUyZWI5YzNhNmY3ZjE1OTk0NjJiZWNhNzM1ZDVkMDFkNWMzMDNlIGxlZ2FjeS10cnVuaworNzYxOSA2YjMzN2VjOTJiZDBkMGE1NjE0MmU4MDA5NzlkZGIwZmMzYmM2ZTcyIGxlZ2FjeS10cnVuaworNzYyMCAxZTk1ZmFjODRhYjMyZjY0NjRiYmMzMmNiNWVkNTFlYzJjZmM2NzNjIGxlZ2FjeS10cnVuaworNzYyMSA5Y2VmZDA0ZWU1M2E1MmI4ZjYxN2FkNzYzOWI1YzMwNzdjYzdiNTQ1IGxlZ2FjeS10cnVuaworNzYyMiBiMjI3YjlhZjVmNTNkYmEwNDJmZDQzNWY3NDcwOThkMWQyZjg3NWUxIGxlZ2FjeS10cnVuaworNzYyMyA4OWVkYWE4ZWQ1MGZlN2M3YzBlMGEwZjRiY2ZkYjNhMjU2NTE5OGNjIGxlZ2FjeS10cnVuaworNzYyNCA3ODA2M2JhZTNmZDc0YmI0ZjYzYWNhNWVkMmM2YWZlNzhkYThhNThkIGxlZ2FjeS10cnVuaworNzYyNSA0NjY1ZTI4NDlhNGFjN2JlY2RjOTk0Y2UzY2VjODNjMjRlZmZkMmY5IGxlZ2FjeS10cnVuaworNzYyNiAyODI2OTI1YTg0MmUyOTg2YzhiMTcwNmIzZGZiYjYzYmVhOWYzODA3IGxlZ2FjeS10cnVuaworNzYyNyBiZDcwOGZlMTkzNGIzYjhjYjZhODlhOTAwYzI1NWYwZjJjZGQ0ZDA1IGxlZ2FjeS10cnVuaworNzYyOCAxYWU3ZTJlYmMyZjMzMWIyODlmOTdlZDk4ZGEyODRiMjYzNTc2MmM0IGxlZ2FjeS10cnVuaworNzYyOSBmNjIxOWQ3NzU0ODFiYTE3NTAxNmU3ZjNkMWQzNTNiNGE2ZGM1MDZhIGxlZ2FjeS10cnVuaworNzYzMCBiNTY2ZTc3MjgxY2MxNGQ1OTAxZGU4ZjU2YmQwYjU4YjM0ZTY0YTU5IGxlZ2FjeS10cnVuaworNzYzMSA0MTc0NjJhYjhiMDAyN2ZiMGQ0NGQxMjNjNDUyOTQ3NzQ0ZmM0Yzc3IGxlZ2FjeS10cnVuaworNzYzMiA4MjljNDI4OTMxODEwNGYwYjgwMjRjMGVhYmI4YTFjOGM4YTc0ZDA0IGxlZ2FjeS10cnVuaworNzYzMyAzNTFlOTVjNTFkZGIxYWNkZjUxMTViOWRiNzNkMGQ2MDEwOWUxZThjIGxlZ2FjeS10cnVuaworNzYzNCBlZjgzNTFlYTcyYzFjNjMyM2YyMzFjMGQwODQ1NmU1ZGQ0MjhiNjA2IGxlZ2FjeS10cnVuaworNzYzNSBkYzMzZTExYTFjMjhkZjVkNmEzM2UyODI5ODYwMzZlMDZmZDI4MDRlIGxlZ2FjeS10cnVuaworNzYzNiA1YmI3MGQyZTlhZGFkZDE4ZWJhMWFhYWFlOWZiZmY0NTczZmQxYTY5IGxlZ2FjeS10cnVuaworNzYzNyA3MTI0ZTRlZTQ5OTU1NzY0NWIwNzFiNjY3NjBjZDg1MDM5NjFiZGQwIGxlZ2FjeS10cnVuaworNzYzOCA5MDYzZjYwZWEyOGQ0MTkyZjk5ZDcxNjNkYTVjMDgwZGI3MTllYWZkIGxlZ2FjeS10cnVuaworNzYzOSA4YzI3N2YyOWI1MzVlMGIyMTI1MjlmZDcxMDliOWU0YmIxM2JjNzQ0IGxlZ2FjeS10cnVuaworNzY0MCA0ZDE1YmRmMWRiOWMwMDcyNzM1ZTU2OGRkODBlYTE3MzYzMGEyNzc2IGxlZ2FjeS10cnVuaworNzY0MSA3MTUxYmI3Mjc3NzY3ZWQxZTg3ZDg0YjU0YmI4Yzg3YjY2ZTE3OTc1IGxlZ2FjeS10cnVuaworNzY0MiA2MWY4OWJlYmExYWEzYzRiZjBmZGJmMTIyOTE0Nzc5ZWU4ODA4MDQ4IGxlZ2FjeS10cnVuaworNzY0MyBkZmYzZTUwNmM5ZThkNDFmNmZlMWRlY2Y0NDU0ZDliNzJlMThlOTkyIGxlZ2FjeS10cnVuaworNzY0NCAyZWE5YzQyNWE3Njc3ZjIyOTZhYzlmNDY2MjgzOWEyNmUzM2QwMTA0IGxlZ2FjeS10cnVuaworNzY0NSBmNWQ3MDdjZTQyMjNjMTczZWRmOGU3OGQzMzYxZjc4NGZiOTVhZDU0IGxlZ2FjeS10cnVuaworNzY0NiBiMWZjNGViMmFjNWE5NDhmYjE5YTg4OWZjMGQ2ZTg0NjY5ZTllYTBiIGxlZ2FjeS10cnVuaworNzY0NyAzMWIwZTVmMGJhZGYxOTY2Mjg3MjRkNmEwZmIwZDFmMDg1M2JlMWM1IGxlZ2FjeS10cnVuaworNzY0OCBmZjRmOGZhOGEyNzNhMDI5MGYyZjhiMWY5NGMwOWI0NjQwODUxZTIxIGxlZ2FjeS10cnVuaworNzY0OSBjNGU1ZWY5YmMzNjEyNDYxODU2MzBkMjIxNmVkMjVkZjI2YmNjMWY2IGxlZ2FjeS10cnVuaworNzY1MCAxOTdlMzIwNmUzZjMwNzQ3ZTVhYzY1ZDAwMmQ4OWIyNDVhZDFmOGU2IGxlZ2FjeS10cnVuaworNzY1MSAyYmQ5MjBlN2U1Yzc4ODU4NWUyMzliNDdiMjA4ZjRlZjE3MjBlOTRhIGxlZ2FjeS10cnVuaworNzY1MiBiMThlMDNiYTQ4MTc3ZjFmYTQzNjY0NWM2Y2VhMGE0YWQ2ZjY5NDYxIGxlZ2FjeS10cnVuaworNzY1MyBmOTc0MzY0ZjNhODdhMTdlYTIxOGM4NzhkOWM5YjhjMGE5N2JmZTRkIGxlZ2FjeS10cnVuaworNzY1NCA4NjNmZmMyYWI3NmE5OTUzNmY4N2M3YWM1ZDFmZmMwMmI5ODJjOTM1IGxlZ2FjeS10cnVuaworNzY1NSA2YmM1NjI1OWNjNGNjMjdmNzliZjhhZDdjYThkNWE2NTI1ZDVhZjBjIGxlZ2FjeS10cnVuaworNzY1NiA4YTBiODBkYzZlNzExNDg2OTM3MmQxNTUyYmY3YWMyN2IzNmQxMTNmIGxlZ2FjeS10cnVuaworNzY1NyBlMDM2MWQ1NDIxZmYwYjQ1MTRkZDU1NzdiY2IwYjQ4OGRmOGEzYmFmIGxlZ2FjeS10cnVuaworNzY1OCA2MzY3NTdlODEyYTRjNGJmYTRiZGFjYWQwYTcwNmFkYzZmM2UzYmE2IGxlZ2FjeS10cnVuaworNzY1OSA1Y2Y4M2FkMzI1MWU1ZjViMWRmZjA2YjdiOTc4OTc3OGJhMDkxM2UxIGxlZ2FjeS10cnVuaworNzY2MCBjMTcyOWUxNDg5MTZiMzM1NWI1NzQ0MGI2MWFlMzFkNmNkZDEwZTc1IGxlZ2FjeS10cnVuaworNzY2MSBhMTZkZWNiYjk3MTY1ODVhNTg3NDhiOGQyYTExN2JiMmQ3N2M1NTYxIGxlZ2FjeS10cnVuaworNzY2MiBjMWExYzMwNmE0MjliNWZjZmI4NjFkYzYzMDdlZGI4ZWIzNDU1OTliIGxlZ2FjeS10cnVuaworNzY2MyAzZWMzZDg4MDdmOWU4ODk2NjJkMjE1MGY3ZmFlN2U4OTUzOTA5NjhlIGxlZ2FjeS10cnVuaworNzY2NCBiYWI5MTk2YThmMzBjNjI0MTU3Njk2MzFhNjMyMjE2MGFjNGI2YzI4IGxlZ2FjeS10cnVuaworNzY2NSBhNzllY2Q1YWY3ZTViNDE5YjUxNWI5ZTA0MDc2MTdhY2Q1YWQwNTRhIGxlZ2FjeS10cnVuaworNzY2NiBmYTBmYzI4OGIyYzkwYjk2MTBlZWY2YjQ2NTQ3ZjMzNDRhOTBmNzBjIGxlZ2FjeS10cnVuaworNzY2NyBiN2FjN2I0NmIxMGMwMTA1YjQ1YjU4NGIzMmVmN2QyYzQ1MDlhOGNjIGxlZ2FjeS10cnVuaworNzY2OCBmMGZkMTJkNzZlMDc4ZmY1YmIzYmY0YThhNmYxNzk0YTA2OTA4MGQ4IGxlZ2FjeS10cnVuaworNzY2OSA1MmYzZGM0MWY2YzRmY2ViYmRmOTdlYjU3NTFiMGZlODAxYmFkNDZlIGxlZ2FjeS10cnVuaworNzY3MCBhODc0ZjVkMzAzOGVkYmQ0ZjE5MmE0MGMzNmZiNDNiNmZmZjdhOGFmIGxlZ2FjeS10cnVuaworNzY3MSA4ZWU4MWVmNGU5ODJmNGRkNjhmMDgxYjU2NTU0MTk4OTE3MDEzZjhkIGxlZ2FjeS10cnVuaworNzY3MiA3NGMxMjcwNGEwYmQwYzQ5ZTg3MWFmMDRmOGVhMWIzYzM2NDNmZTk5IGxlZ2FjeS10cnVuaworNzY3MyBlMGE2MDVlNjZiZWRhYWQ4Zjk1YWYxNWRkYjhkZGRmOTE1YTE1MmY3IGxlZ2FjeS10cnVuaworNzY3NCA3ZTM4MGRmMDBkMDBmYTFjMzhjMGU2MmI5MmNhOWM0ODNkZGI0NjNlIGxlZ2FjeS10cnVuaworNzY3NSAwMjRlNzM4Njc0YTVjZGE3OGY3YmRkN2IyOGFjNzVmZDRhNDI5ZjUxIGxlZ2FjeS10cnVuaworNzY3NiA1ODc4YTVhZjMxNDhkNWJmYWZhMGMyYWFmZTY4YWQzZjdjYWNkZjQ5IGxlZ2FjeS10cnVuaworNzY3NyBhZjkyZDc3OTE1MmFjMjRmZmJlNzY0NGFhMTIzYjkwMGYxMmMxYzE1IGxlZ2FjeS10cnVuaworNzY3OCAwNWM3ZDhiNGZmZDZlNGRkOWIzZDAwYzI2MzcxNzMxODZiN2I4MjQ3IGxlZ2FjeS10cnVuaworNzY3OSBjMjQ4YTA3ZTUzNDE2NGIyNjA4MGFiYjllMTA2OWM2NmQwNmE4ZjgxIGxlZ2FjeS10cnVuaworNzY4MCBiMzkyMDM5ODNkZTY2MTExZGY5M2FhY2IyOWRjZjZjNDMzNzQ0NWEwIGxlZ2FjeS10cnVuaworNzY4MSBiZDVlMmMyYzFlMDg3MmIxMWE2YzAzZTg1N2Y4M2I3OWQyMmY4ZWExIGxlZ2FjeS10cnVuaworNzY4MiAwMGViZmEzM2NjMDc2MzBlZWRhNzNhMGQ3NWQ3ZjU1NzUwYmEwZmJhIGxlZ2FjeS10cnVuaworNzY4MyA5M2U4N2NhYzQ4M2U1YmZmZDY3Mzg0MjdjOWI5OTViZDAxNDQzNzRmIGxlZ2FjeS10cnVuaworNzY4NCAyZWM5YzkzM2FmYjg3NDZhNDAyNDM5YzM0MTZiODY4YzI0NWUyZDVjIGxlZ2FjeS10cnVuaworNzY4NSBkNGM2YjRiMDU0OGMxYjYwNDM4MDY0M2ViNzc4ODg5YzA4ZTNjNTVlIGxlZ2FjeS10cnVuaworNzY4NiAzMTRkMGQ2MDNmMDZlZTRlMjczOTZmOGJiNGQ4OWY0NGQ5YzQyYmE3IGxlZ2FjeS10cnVuaworNzY4NyAxZjM4ZDVmYjNkMjM4ODFjOTk4ZTlmOGNhMTgwZDk2MjBiZTE0YTlmIGxlZ2FjeS10cnVuaworNzY4OCA1YjQwN2UwY2JjNzE1ZWE2NjczMTAxYWNlNWUzZTE1NDNkNzY5NDg2IGxlZ2FjeS10cnVuaworNzY4OSA5YzE2YmRmMTYwZmY2OGZiYjZjZDc0MWY1NTViOTAzZWMwOGIzMDIzIGxlZ2FjeS10cnVuaworNzY5MCBmNzAwNDJjMTljNTdhM2I3NmVlODQ5NmNiNDkxMTgxZGYwODM4ZWEzIGxlZ2FjeS10cnVuaworNzY5MSA5YmY2NTBmMjNkYTU3MTMwYjViMjhjYzE2N2QwMjFkYmI2MWVjYzcyIGxlZ2FjeS10cnVuaworNzY5MiAzYWI3ZDU4YzI5NjMxYTZhOTVhMGYxYzYzYTlmNjYxMmJjYTJjMGRhIGxlZ2FjeS10cnVuaworNzY5MyBmNWJmYjljNGMzNjQxM2FmNDJiYTdkYmY0MDg4ZmY4MDkxMzlmODQyIGxlZ2FjeS10cnVuaworNzY5NCAzMzRkNTJkNmRmNWRhYjRkMmU5YjZkZTc0OTYxODVlNjI1ODkxNDNkIGxlZ2FjeS10cnVuaworNzY5NSBlMWY2MTMzMjJiMjNjMjdmNjk2MGUwMWM0ZDAwODYwMTQ3MmU2ZmM2IGxlZ2FjeS10cnVuaworNzY5NiBkOTczM2I0ZjgxMWY0NzVhNjRiNjA4M2M3ODkxZjg3NDFhZjBkNmU0IGxlZ2FjeS10cnVuaworNzY5NyA0ZDhiN2RkNWRlMmEyODBhZjUyNDRlZjlhNmY1Zjg3ZTI1NGNlYzFhIGxlZ2FjeS10cnVuaworNzY5OCBiYzg4MzJiNTJiNTBiOGNiMTk2ZDI4YWJiYzk2OTY1YjA4MTU2ZWQ2IGxlZ2FjeS10cnVuaworNzY5OSAwNTc3NGVjMzlhZDIwNWJkYmRmNDc1ODkwOTU1YzI5OTFmNWRlNjczIGxlZ2FjeS10cnVuaworNzcwMCAxYjE0YzVjMWJlMmE1Mjg1NzJhMjZlZjE4MTE2MmJiYmIwZmFlNzAwIGxlZ2FjeS10cnVuaworNzcwMSA4NGM5M2Y2MDE3MTk0ZWE4NTAwYjcyYWE4N2RmZjFjODNiM2RmYTVkIGxlZ2FjeS10cnVuaworNzcwMiA5Nzg1MmY0ZWJkZTZiMDQ0MWVhZDk3ZmJkNWRiZTBjNTBiMTRhNjA2IGxlZ2FjeS10cnVuaworNzcwMyA1OWU4YTAyYTQ3NzRkODZhNTVlM2M0MDAzMmRjNDBmNTgxZmQ2MDkwIGxlZ2FjeS10cnVuaworNzcwNCA3NGNhZGRmNGIyOGE0ZTI4NDA3NWRmOWYzYTdjNDdiODFmNmU5NDQzIGxlZ2FjeS10cnVuaworNzcwNSAwZTYwZGUyYTQyYWY3NTBjNWRjZjgwY2E5NTUwYzU3NWM3MDA4MmQ1IGxlZ2FjeS10cnVuaworNzcwNiA5MzM0NGNiZGY1NDIyYTM2OGFkZTJiYjE4YmQ1OTBkODQ5NmExOTFkIGxlZ2FjeS10cnVuaworNzcwNyAwYTVjZWE0MjdhOWZiYmFlMDM3NjFjYjg5ZTI2NzMwMDBjMzBmZWM0IGxlZ2FjeS10cnVuaworNzcwOCBiNzQ5ZDJkZDc1ODI4ODFlMDFhY2RjYTRmNGYxMzZlOGU0NmJiOWVmIGxlZ2FjeS10cnVuaworNzcwOSAwN2VkNTJlMjAwZGI2OTY5OTU2MmZmZjMzNTgxYzAxNzNhNDBlYWFjIGxlZ2FjeS10cnVuaworNzcxMCA0ZjFmYTdiNjliYTc3OTMzNmU5OTY2NWRhYWE5MTRmNjkyZTM2YjkzIGxlZ2FjeS10cnVuaworNzcxMSBiNGU2NzFiYzEzMzExYWEwOGQwZWIxZTM4OWRmODcwMjM1NTQ5MTlhIGxlZ2FjeS10cnVuaworNzcxMiAxMjM3M2JhMjRlNWQzNzJjNmE1NWNiOGM1ZGY4ZGRhNzdhYTc5NjVmIGxlZ2FjeS10cnVuaworNzcxMyAxNTI4OGM4MzQzYTVhNjA4ODZjZWMxNGUxMWMwYjAxZDQ0MGE5OWUwIGxlZ2FjeS10cnVuaworNzcxNCAyNzYzNTQzN2ZhN2EyZDdkMDRkY2U5OTkzZjdjZWZkNTViMWQ5MmUzIGxlZ2FjeS10cnVuaworNzcxNSBhMzIzMzg2NGNhMzg1ZmVlZTA3Y2I3ZTRjY2I5ZDM5ZDU5NmI0ZTgwIGxlZ2FjeS10cnVuaworNzcxNiBiODlmNTI4MjFjNTJlODhhNTY5YjYwNWVhOGNkOWMwYTI1NTczYTA1IGxlZ2FjeS10cnVuaworNzcxNyBhNTBkZjdmM2ExMGEzM2QyYTc5Mzg2ZDgyZTFkOGE0MWRjMmY3NDZhIGxlZ2FjeS10cnVuaworNzcxOCA0ZjI1MWI4ZTMyOGY1YjVmOWE3N2NjNzkxNzc3MDJhNDVkNjkwMzMzIGxlZ2FjeS10cnVuaworNzcxOSAyNDcxMzlkMjAwZThjNzhjYzExNjdkY2Q0ZmNhMTVjYmE4N2YxNmFmIGxlZ2FjeS10cnVuaworNzcyMCBjNWZkMzI3MDU3YzZjMzU0YTdhMjZmYWRjM2FhYWYxOWJlZGRhM2FmIGxlZ2FjeS10cnVuaworNzcyMSAyMzMzMGExYjk1OTRkOTI4ZjVlOWU2YzUyYzJjYjY3OGIyNDdiNzJlIGxlZ2FjeS10cnVuaworNzcyMiA2ZGI4YWRlOGQ4YTk4MGQ1NjhjMjAxZjBiNjkwM2MxMmZhZjgxYmJhIGxlZ2FjeS10cnVuaworNzcyMyBhNTQ3MjBmOGRkMzZjZmZiZjllZDQzNjg4MmU5NTM3MGFkYjRjY2JkIGxlZ2FjeS10cnVuaworNzcyNCAxMzAwNTg3MmQwNTM0NmZiMDFjNzhkOGY2MDUxMzY0ZTU4ODFiNDhjIGxlZ2FjeS10cnVuaworNzcyNSA1MmUzYjYzZjJkY2EwMGVkNjM3ZjM4YjQ5NDQ0ZTQzODRhYWM2ZDA0IGxlZ2FjeS10cnVuaworNzcyNiAxYmRkYmEyZjEwMGU0OGRhMDVjZDUyYWI4MjcyYmI2YTI1Y2I1NTE1IGxlZ2FjeS10cnVuaworNzcyNyAyZmQ5MjQ2YjBlZTgyMTMyOGRhMzM5ZDU4YmExNTYyODJlNzZhN2UwIGxlZ2FjeS10cnVuaworNzcyOCA2ZmNmMjA3NDk4ZDhhYmUxNzFmMzgwNmE1MDIzMDVhZGIyNjZlMDYzIGxlZ2FjeS10cnVuaworNzcyOSBmZTFjY2I0ZTRjMWM3MzIwMDI3NjJjMmY0NmMwMzI4Yjk5MmVkM2Y3IGxlZ2FjeS10cnVuaworNzczMCBkMDg3Y2QwNjBiYWRkYTc2ZTdlYzUxOTRhNzJkMGNjOTQzYzYxZDNhIGxlZ2FjeS10cnVuaworNzczMSA3MTY5NGExNzEzMjRmZjVlODJiM2NmZDUzZTNiY2UyZmMxN2IwM2QwIGxlZ2FjeS10cnVuaworNzczMiA4MTI4Mzc5NWYxNmE4YTM4ZTI4NjFkYWEwN2U5N2Y2NTI0YmQ4MDI0IGxlZ2FjeS10cnVuaworNzczMyA0MGQyZmQ0NzIyODRhNGU0Y2YwZWY2MDMxMGY4ZjFkY2M5YjMxOTdlIGxlZ2FjeS10cnVuaworNzczNCA3MWRmMjFjMGEzNGVkNGJjNDRkN2YzOTRkYzkwNjk3ZjE2MjU4MzJhIGxlZ2FjeS10cnVuaworNzczNSAxZTVkNjI5M2M1MjRlM2U1Yjk0MjQ3YTQyODkyMDA5NWU5ODI5MjUzIGxlZ2FjeS10cnVuaworNzczNiA3Mjk4NmI3MTY4MjQ2MmE3ZjM0NGVjMWM4OWFjMDFhOTg2MzNiMjY3IGxlZ2FjeS10cnVuaworNzczNyA1YWJjMWEzNmJlZGRjNzM5NjJjYzk1MWIwMTdkNGJjMTkyODc1ZDYxIGxlZ2FjeS10cnVuaworNzczOCA4NmQ2MGMzNGViZGU3Nzg1NzhmMWUzNWQxZTk0NzEyMmE0NTI0ODA0IGxlZ2FjeS10cnVuaworNzczOSAzODg3OGYxY2Q0ZjFmZWM5OTk3YjQzYjE5ZjU4ODczYTNkM2NhMzU3IGxlZ2FjeS10cnVuaworNzc0MCAzYzE3ODhhYjk3NjEwNmYzMDE2MDc3MDg0YzIyMzIxZDliZTcwNGI3IGxlZ2FjeS10cnVuaworNzc0MSAxZWZjNDI3M2ZkYjdlMzQ5MGY5OGQ3NDdhODRiNmUyMmY3ZjdkZjkyIGxlZ2FjeS10cnVuaworNzc0MiBkNDFlZWU2ZDJmZjc2OTNiYWY0ZGMwMGY1ZDQ5MmFmZDg2MWU0NjUxIGxlZ2FjeS10cnVuaworNzc0MyA0ZjMzMWY1YmI1ZjJhNGI5MjE5OTQ5ZDdhNjkzNGNhZTVkYmVjYmQ2IGxlZ2FjeS10cnVuaworNzc0NCA0ZTUzNzQ2ZTUxYWY5MGExNzJiZTQ3MTZhMzAwODFhZGU4Yzk0Mzg3IGxlZ2FjeS10cnVuaworNzc0NSBkZTlkMGM1MjQ5YjBlMmE3ZDQ2MWVjZmRmMWZiMzUwODlkYmVkMWU2IGxlZ2FjeS10cnVuaworNzc0NiBhZmY3MDYzMzc4YThhNjM5Yzk0ZDM1MDY0NDg2OGM4OTdlNjY5NDZkIGxlZ2FjeS10cnVuaworNzc0NyBiMTU5Zjk4Y2JmZWZiZDY1MTg0NDEwNzJjNDYyOTJhZDI3OTQwNjZkIGxlZ2FjeS10cnVuaworNzc0OCAxMTQ4ZTdlYmNhMzU0YjIzZWYzODBjYzlhMjI0NTdmZTU5NjJhMDYxIGxlZ2FjeS10cnVuaworNzc0OSAwZDZlNzBhNWFiNGJkMWQ3MmFmZmMzMGU2YzExYzg0YmViZmIxYTlkIGxlZ2FjeS10cnVuaworNzc1MCAwOTlkYmM2ODRjN2JlNDBjZjY5Zjk2ZDI4MzQyYjRiNzBkNjI3MTRiIGxlZ2FjeS10cnVuaworNzc1MSBiN2NiNjk3Njg5M2Q4NWY4OTIxY2QyZWMwZTQ0MDY3NTM5YzNhZjQ2IGxlZ2FjeS10cnVuaworNzc1MiA3ZGY1YTBkMWY1MjMwYmRmMWEzNGMwZWRjNjA0NTcwMGRkZjc0ZWRjIGxlZ2FjeS10cnVuaworNzc1MyAwMWMzZTY0YmM4MjRhYWIwYWJkMTk2ZTRmYTQxZTYxMWQzOGM3OTlhIGxlZ2FjeS10cnVuaworNzc1NCAxNjM3MmE0YzRjMTQ1YzY5Y2Q1MWE4NzBmOGNiMWNjZmFmOTZkYzNjIGxlZ2FjeS10cnVuaworNzc1NSBlOGY4Y2YzNTgwNTRlZDZiNmQ4OWM0OGIzNmZjMjg1ZTE5M2Y1ZTBjIGxlZ2FjeS10cnVuaworNzc1NiA2MDdmYTMyZmMwNGExZGEzY2I5YTBkMmQwNzVlNTMyNjlmNTA4ZGZiIGxlZ2FjeS10cnVuaworNzc1NyA1MjUwZjQwOWQ1NTg3MjMxZTJkODZlNjk3NjM3YjVkZWI0YzkzODZiIGxlZ2FjeS10cnVuaworNzc1OCA4MmEzZmJkYTMzNjM1MGIzYTRjMzVhNjE3ZGI4OTUxNzI4NDJiYWMxIGxlZ2FjeS10cnVuaworNzc1OSAwMmIyZWRmNTViYWYzOWRmOTQ2NWFkOGM2NGJkZTcxMDYwM2JiZjVkIGxlZ2FjeS10cnVuaworNzc2MCBkMmM5OTVlYzQyOTAxMDA4ZGMxZWY5ZDM0YzkwYmEwNmM3NDRkNjM2IGxlZ2FjeS10cnVuaworNzc2MSBmYmVkYTZmNDZlYmIzOGFiN2JhNTI2NGNkNGFkMzk4ODZjZDIyYzI5IGxlZ2FjeS10cnVuaworNzc2MiA1YWY3NjZhMWI1MzEyNTBmYjY0ODg3ODE2MDg1OGY4OTc5M2RlMzEyIGxlZ2FjeS10cnVuaworNzc2MyAwZjE3MTFiN2QzNjdkZmZiYjljNTE0MjhmNDQxNjhhYWE5NTk0NGU5IGxlZ2FjeS10cnVuaworNzc2NCA0N2QzZDM5NmQ0ZWY4YTIxYTYxZDljOWQ0ZWVlZGM4M2IxZDBlNDJlIGxlZ2FjeS10cnVuaworNzc2NSBkMzJiOGY0ZDlkMzA5MjBjZTgxYzBhY2UxZTEyN2E0MDM3N2NlYzQ1IGxlZ2FjeS10cnVuaworNzc2NiBhNzZhM2EzOWY2YmNmYjc3ZWVjMjhhYzBhZTlmMzQwYmQzNzFkNDBjIGxlZ2FjeS10cnVuaworNzc2NyBjYTU2OGU1ZWJkMTlhMzgwNTVmY2NlNzJjNTRhYjg5MDFmOGQxZmExIGxlZ2FjeS10cnVuaworNzc2OCBiMGQ5ZGUzNzg2ZWMzMjljMGQ2OWMwNGQxNGIyNjU2NjE2YmYxYjQzIGxlZ2FjeS10cnVuaworNzc2OSA1N2EyZWQwNjMwY2Q4NTllOGE1ODhjY2FiYjU3YWRhNzI5NDg5ODg4IGxlZ2FjeS10cnVuaworNzc3MCAyZjI3NjBjM2RkOTA1ZDQzZmRkNTJjMzYzOGEwNGJjMGM0ZmVlYjI2IGxlZ2FjeS10cnVuaworNzc3MSA3YWE0NTY2MDE0YzZhYzA0OTJiOThlOWUyZWZkYmVkNTM5MmIzNjNlIGxlZ2FjeS10cnVuaworNzc3MiA3ZWM3MzNmOWMzMDU3NGJlZDJiZWQ4NGQ4MWM5NTE5MmE2OTNhNTJlIGxlZ2FjeS10cnVuaworNzc3MyA5YTMyYmQ4ZjRhYzhhMWNlNTBiMDY4YjUxYjE5N2Y0MGNiODllOGJiIGxlZ2FjeS10cnVuaworNzc3NCBiNTIzZTZlN2FjNjEyYWRlMWUyMjEwNDU1YjEzNGQ2NTJkMTE3Mzk5IGxlZ2FjeS10cnVuaworNzc3NSBlNzc5NDI1NjJkZDM4ZTUzNWU2NmI4YzljNTQ5NGQxNjU0OTc4NTM0IGxlZ2FjeS10cnVuaworNzc3NiBmYjgxNjUzMDQ5MzkzNDVkYTNlZTc1ZWNkYzliZGFkZWY4ODQ5MTU0IGxlZ2FjeS10cnVuaworNzc3NyA1ZTNiY2Y0ZWJmMjlmNDhjY2NjYTVjODY2YzY1ODJkNGNiZjU2YTNiIGxlZ2FjeS10cnVuaworNzc3OCA5NjQ1NjJiZDc1Y2MzNzZmYTlhMzI5NDRiMTBkZTIwMTBhNzNmOWQzIGxlZ2FjeS10cnVuaworNzc3OSA0NDU5MTcyZjQwYmIxNDQ4OWQzYWU2NmZjODkxNTI5Y2QzMjQ1ZDliIGxlZ2FjeS10cnVuaworNzc4MCAzMzJmZTAyYmYwMmRjNDdhZjkwMzgyOGM0MjJiNjMyNWRhOTQ5NmQzIGxlZ2FjeS10cnVuaworNzc4MSBlNjE0YmNkMzRlMzRmYzRmNTc1ZWJlMDBhM2U4MzFjMGE2NzMzZGNiIGxlZ2FjeS10cnVuaworNzc4MiBjM2VkMjk5ZDU5M2U2Y2Y0NGZlYzNhMGVjOTYxMWNmZTMwNzhhZDEwIGxlZ2FjeS10cnVuaworNzc4MyBkZjg3ZDVkMWJiZGYxN2Y5NzNkYzdkYzg0ZGJkMzBjZDU2NjZiNGM4IGxlZ2FjeS10cnVuaworNzc4NCBlNzU2YjhlNTRjN2MxYzYyY2E2NjUxYWY1ZTQxMDc0ZjU4ZjMxN2JlIGxlZ2FjeS10cnVuaworNzc4NSAxOTJlMmUwY2JjZTUwNjQ4ZDMyNjllYzMxN2E0OTY3ZGJkZDMzOGMxIGxlZ2FjeS10cnVuaworNzc4NiA3ODI1OTdjZjYxNTFkOWRlYTFmOGI1OTQ5MmNlNWFlM2ZiOTM1YmUyIGxlZ2FjeS10cnVuaworNzc4NyBkMGViMTgzMDkyYjBjZGM2OGI1ZDAxNWU1ODM1ZTk4MjBjODkxYmQ1IGxlZ2FjeS10cnVuaworNzc4OCBlODk5Njg4NGU4ZTE3ZTZiN2I0MDAzOTI4N2IzNmYwY2Q1ZmI5YTBlIGxlZ2FjeS10cnVuaworNzc4OSA4ZmMyMTdkMzMyNjc1NDU5N2IxNjY4MWQ1ZDcyNmVlYmVkNzdlNmEzIGxlZ2FjeS10cnVuaworNzc5MCA2NWM5ZTkwZDgxNDI2OTJkZjJiODg5MjYxMmQ4NmFjM2M1MzZlZGJkIGxlZ2FjeS10cnVuaworNzc5MSBjOGUyNGM0YjhiZmJjY2E4Mzk5ZjYxNDE3ZDI3YWEzNTc1NTc2YzY0IGxlZ2FjeS10cnVuaworNzc5MiBjNzJjN2UxOTMwYjNmMmNiMDdmYzRiYWM4YmRjZWNhZWRhODg2M2FmIGxlZ2FjeS10cnVuaworNzc5MyAyYzRiODAyYTNiNWQ4YjU1ZWUwNWQ0YjZlZTFjNTExM2NjNTQxZDJkIGxlZ2FjeS10cnVuaworNzc5NCA3NGExYmMwOTk4Mjc2ZTcyN2YxMWJkNDEyMTZjNjczZWE1YTBhNTcwIGxlZ2FjeS10cnVuaworNzc5NSBjM2RkYjg0YTc3NjFmZGUzYzU1NDE4OTNhNTMzODliM2IwNTU2YzRjIGxlZ2FjeS10cnVuaworNzc5NiBlMmFjMDk4MmNjMzJmMGNmMTE2YmM5ZDliNGI0Mjc1ODIwMTRiMmU3IGxlZ2FjeS10cnVuaworNzc5NyAzODgxODUzOGI4OWMwYWU4NzBhY2NlODcwMDVjZTY3MGM5NDQ3MmFjIGxlZ2FjeS10cnVuaworNzc5OCA5MWY5OTE4MTI3MTg1NTc5M2EzMjJiZWU3MWI2N2Y0YmE0N2I2MDQ3IGxlZ2FjeS10cnVuaworNzc5OSA0ODlkY2EzYjU0Y2NiNjBmYWI2MTRjOTRiNmIwY2NjZDcxMWU1NmYzIGxlZ2FjeS10cnVuaworNzgwMCAzYTA3Nzk5ZGViYTFmNmRjYmNjM2FhOTdkMmRlY2RkNTI5ZGFkMDEyIGxlZ2FjeS10cnVuaworNzgwMSBiNjg5MzEzMzk0MGZlZWIxMzE0MTU0MmIxMzk3YmU2YjY4NGMxM2YwIGxlZ2FjeS10cnVuaworNzgwMiAxNTJiMjgyN2ExYTA4NzNhMzViMmJjNDJjMzEyM2EzMzQ3MzIzYzc3IGxlZ2FjeS10cnVuaworNzgwMyAzNTllOGY4MTVhM2FjYjQ5Mjc3MTU3OTcwMmU5NmFjNWVhZWIxN2ZjIGxlZ2FjeS10cnVuaworNzgwNCA0Mzc1MmUyMDk0NzNjMzhlMWE4NDg1NGE5ZDliMWEyZjFmZWQ1ODVhIGxlZ2FjeS10cnVuaworNzgwNSA1YTIyZjliMzhhYWMyMjY4YWIwODY4NDgzYTdmNWQyNzc5NGE5NTYzIGxlZ2FjeS10cnVuaworNzgwNiA2MjMyYWNiYTdlYjIwYTBjNzU3ZmZjYjgyNDNiMzdjNWY2MjFhOTI2IGxlZ2FjeS10cnVuaworNzgwNyA4ZGZjMjUyOTYzYzcxOTllM2JiYTU4OTZmYTk1MGZlZjI0M2RhY2Q3IGxlZ2FjeS10cnVuaworNzgwOCA2MjczMTZjMDAxZmJkNDUxNzczY2MxYjJiMzQ3YjhmNmIzZmM1MzNkIGxlZ2FjeS10cnVuaworNzgwOSBkMWFjNTFiODcwZTIxOGMwNDc2NjIzYTFlYzkxOWZlOGVlZWRlOWVmIGxlZ2FjeS10cnVuaworNzgxMCBlZTkyNzViMGY1YzgwYWY5ZmVjZDdjZDAzODMyMWQ5MmRlYjUwZmNlIGxlZ2FjeS10cnVuaworNzgxMSA3NDZmNjg3YWNmYzFhZjUyMzFkOTVmNDBmNTQ5YjkxZjI3NWIwMjJiIGxlZ2FjeS10cnVuaworNzgxMiAxNjZjMjIzMjkyMWFiZmNlOGJhY2NkNTNiZjczNjY4NjFkOTAxNDI5IGxlZ2FjeS10cnVuaworNzgxMyA2Nzk5NWJjMTdmNjI1YmMwYmNiNjMyYTM4NzE2OTE1OGZjMmU2ZTM5IGxlZ2FjeS10cnVuaworNzgxNCBiMGEzMTQwY2M5YjFhZGIwN2JmMjNhYmFiZGM5OTE1NWJkMzJkZjhiIGxlZ2FjeS10cnVuaworNzgxNSBkYjY3M2U5OGYyOGRhZWViMmY3MTIxM2NhY2ZlYzUyMTQ4N2FlNjcyIGxlZ2FjeS10cnVuaworNzgxNyA2N2U1MjM3Y2UxNDE4YjM4N2RhMjIzZWUzMjQ1MTYzMTVkNTIxNWM4IGxlZ2FjeS10cnVuaworNzgxOSA2N2EwYjVhYWFlNDMzYmE5ODBlZmFiYmI3NTExMWI0MjgyNDFkZjMxIGxlZ2FjeS10cnVuaworNzgyMCA0YTU0MWJiMGM1MzQzM2M3YWEwOWI4Y2JiM2I2NTU1ZWIxNjIzMzc4IGxlZ2FjeS10cnVuaworNzgyMSA5Y2EyNzE4OGRhMjMyMzIyZjY3MDExYjM1YzIyMmE0ZjAwZTNlNTQ4IGxlZ2FjeS10cnVuaworNzgyMiA1YjJlZDYwODFlYjk0YWUxOWY2MzZkODUyYzAyMTczMmI3YWU1NjM1IGxlZ2FjeS10cnVuaworNzgyMyAzMzlkY2I5YTI4MjU3MGM5MzFmYTY1ZWMxZWRlMTU4NjBmNDBlNWE1IGxlZ2FjeS10cnVuaworNzgyNCAwMDYxZjRlYTk3YmU4ZWMzNTIxZGM5Y2QxNDYzYTZjNTAxMjgwOTYxIGxlZ2FjeS10cnVuaworNzgyNSBhZTAyZWQyYWFjM2Y2YzZhNTExYjUyM2UxOGI1MGNmOWY4ZjZiZDExIGxlZ2FjeS10cnVuaworNzgyNiA2YWIzOTJkN2E1MmZjZDYwNzM3NGVmY2YyY2ZjNmZkOTJmZDk5ZDM0IGxlZ2FjeS10cnVuaworNzgyNyA2ODhjM2ZkNDJjYTYyZDU2MjExMTA2ZDE1MzAxZTg5Yjk2Y2QxMjA1IGxlZ2FjeS10cnVuaworNzgyOCA5OTljMTk3ZGE1N2NjMTZiZjU5NmYxZWY3MDJlMGMyNTM5YjI1ODBlIGxlZ2FjeS10cnVuaworNzgyOSBkNTc1N2FhZDFhNGZlYTc3OGUyNGMxYmE1Njc1ZGFlZmVkYzM4NzI5IGxlZ2FjeS10cnVuaworNzgzMCBkNDBjZDkxMGQ2ODRmMGViNzdiZTNlMDc1NmQ0YzRmNDU0M2VmNTdjIGxlZ2FjeS10cnVuaworNzgzMSAyYzBiMTAxNjVmN2VjYTQxOTZhZTE0NGIxZDY4M2JkMjZjMDRmMTVlIGxlZ2FjeS10cnVuaworNzgzMiAxNzkxNjhlMTdiZmUyNWM1NzcyNGQ5ZTJkYmUyMDMyMTcyODA5NDYyIGxlZ2FjeS10cnVuaworNzgzMyA0NzM2MmZkOTA3MWJjNzkwOWI3MDFlOTc1Nzg0MWEzODQ1ZWZjMTNmIGxlZ2FjeS10cnVuaworNzgzNCBiYzJlMzMzNDA0OGUxM2ExYWMzNTZmODgwOGJhZjcwYWVmZjZlOTk0IGxlZ2FjeS10cnVuaworNzgzNSBkYjQwZGJhM2Y3OWE3ZDUzMDMxNDQ4MDZjYzMyYTZiOGEzY2NhODE1IGxlZ2FjeS10cnVuaworNzgzNiBlZGVhNGYxZDYzZmQwMTU1NDNjMWJjNmNjNGM1NTFiNTk4ZDNlZjA0IGxlZ2FjeS10cnVuaworNzgzNyBmODU4MDM4YjY0YzI2MDY1MzljMmZiOGNiNDA3MjQ5YzczZjk5ODdhIGxlZ2FjeS10cnVuaworNzgzOCBiMWMyYjc5YWE1MWY4NWM0OTBkMTEyNTQwNWZlZWIxMzQwMDhlNDUwIGxlZ2FjeS10cnVuaworNzgzOSA2MWU0MWIyYjFiNjlkNDg4YjBiOGRiNDIzMDBhNzMwYWZjMTU1NWMxIGxlZ2FjeS10cnVuaworNzg0MCBjYzU4NmJkYTYyNzU1MjVkNjc1OGUzMzE4YWNhMjZjNWViZjc4YzE0IGxlZ2FjeS10cnVuaworNzg0MSBlNGFmNDE0ZjVmODkzYjVkOGM2YWUwOGVhMDExZGVmYmQ5NWQxNDgwIGxlZ2FjeS10cnVuaworNzg0MiBiN2NhOThjNmRiYmQ2OGE3YmEzN2MzODRmNTUxNzZiNzc2ODhlYzE5IGxlZ2FjeS10cnVuaworNzg0MyA4NzMxMzMzM2FlM2ZjMzczYmU0ZWM4ODE2MGRiMzQxN2Q0ZWUwZjFlIGxlZ2FjeS10cnVuaworNzg0NCA4OTgxNTMzZTZjYzFhMTI3YWFiODAzNTIwZTUxNDA5YWI3MDIxMjA4IGxlZ2FjeS10cnVuaworNzg0NSBmMjEzMmQxZjY2YTYyOGY1OWM1ZWZjZWQ4MTUwZTZhMWE5Mzk5NWYyIGxlZ2FjeS10cnVuaworNzg0NiAzY2ExNDUwMzE3MGNjOWY5YjkyZmMwODc1ODYwMmJiMjcxNjFmYWU5IGxlZ2FjeS10cnVuaworNzg0NyAxZWExZjAxOTI2OGQ5ZjI3MDc0NTc5ZDcxNWZjYjI5NjYxNjZmODBlIGxlZ2FjeS10cnVuaworNzg0OCA0OTNhMzRkY2E1M2VkZDcyNTQ2Mjk5ODU2OGE3NTI1NTIyZDMwZGI3IGxlZ2FjeS10cnVuaworNzg0OSA0MjQ5MjJhZmMxYmI0MGU5ZjUyMDIwOWY1Yjk0M2Q0NmE4OTMxMGM4IGxlZ2FjeS10cnVuaworNzg1MCA1ODgwMzg0ZDdjNzE0OGI4YzQ1NTEwMWY3NGQ4MDU3YTYzMGExMTJiIGxlZ2FjeS10cnVuaworNzg1MSAxMThiZWVmOTE4NzM2ZDVmODYyZGEzMDkyYjEwODFmMTBiYjg3NWFiIGxlZ2FjeS10cnVuaworNzg1MiA3ZjkwYTY3MWNjMWRiOGE4MTE4ZmFmNmJhM2M0YmI5NDZmZDIxMjc4IGxlZ2FjeS10cnVuaworNzg1MyA5OTgwZmFlZWI3YTUxM2RkODI1MzIyZGMxY2VjZGFkOGI0YmM5MzRmIGxlZ2FjeS10cnVuaworNzg1NCAwOTU5N2E0MjMyMjdjZTMwNjZlZDI3M2E2ZmZkNjFmYWU1YmNmNjc4IGxlZ2FjeS10cnVuaworNzg1NSAzMTllM2VhZWNkZjRmYjc5MDRjMTVhNTAzMjk4Njc5ODA3ZDI1YTBiIGxlZ2FjeS10cnVuaworNzg1NiAxYzlhODRlMDk4MWQzNThiYTlmMDM4MGM4MmU3MTA2NzdlYjE1NjQzIGxlZ2FjeS10cnVuaworNzg1NyAyZDRjNmNiYTAxYmYwMDVlNGJmZGMwYmUyYTFjYWEzZWMzM2JlMTFlIGxlZ2FjeS10cnVuaworNzg1OCAzMzlkNDEyOWQzZjdmMTVhNDg5ZTE2OTg1ZWIwMTBlZjQ0MzA0YmZhIGxlZ2FjeS10cnVuaworNzg1OSAzZjU1OGEzMmM0OTgwMDAzNTI0MGVhOWMzOTBhN2ZkNDljYmNlZTRmIGxlZ2FjeS10cnVuaworNzg2MCAzYzVmY2Y4YmY1MTg5NjFiYzRiYTg1ZmIyZTAwZTBjYzhmOWYwZWVhIGxlZ2FjeS10cnVuaworNzg2MSAzNzE0YjMyNTgyNmQ4OTdjZDE2ZTc5MzRmMjQ5YTkxOTUwYTMxMmJlIGxlZ2FjeS10cnVuaworNzg2MiAxMGU3ZGJhMDFkMDUxMjFmZGExYWRhNTRkYWZiZjMwZjc3ZGM2ZWI3IGxlZ2FjeS10cnVuaworNzg2MyA0M2M1ZTFmOTE1NGU2ZDdhOWIzMmViYjZiMzRkOTc4ZTM2MGNkNDliIGxlZ2FjeS10cnVuaworNzg2NCAwOWM1OGIxNzQ5ODk5MTAyNzA5ZmQxNjkxZTQ1NWQyNWNlYjI1YTZmIGxlZ2FjeS10cnVuaworNzg2NSAxM2EzMGNlYThkYmY3ZDI4NWZjN2NlMWYzNDAwZmU0OGY3MDViMGJiIGxlZ2FjeS10cnVuaworNzg2NiA1YTk3MDY5NjVhNGVjM2ZjMTM5MGNiYjZlYmZiM2YyNjBhODQ4MDkxIGxlZ2FjeS10cnVuaworNzg2NyBiMjRlODRhMGYzMGIzMmFjYzM0MWJlNWIzMDIwY2U4M2VmYTlhOTExIGxlZ2FjeS10cnVuaworNzg2OCBlOTJmMTgyZDc3MjY4Yzg2Yjc5NDkyNjE2NzA4YTczZDM3MWM5NTY4IGxlZ2FjeS10cnVuaworNzg2OSAxOTRkMjZkZjZjNTAwY2ZmZDJmYzE5ZmIwNDUwN2Q0MWYxOGRhYjRlIGxlZ2FjeS10cnVuaworNzg3MCAzMWUzOTk2MzY2NzVmZDQxNDEwYzQ3NTIwZDk3NWEzNzViMGZhMWU4IGxlZ2FjeS10cnVuaworNzg3MSBjMmZiOTc2YmVjZWIzOWRhZDIwMTQyYzVjY2VkYmU5YTc5Y2JjMjAwIGxlZ2FjeS10cnVuaworNzg3MiAyYzgxZDdkNjhlZDNhYWQzYzY3ZTc3NTlmZDE0YTExZDM5NDNhZTEwIGxlZ2FjeS10cnVuaworNzg3MyBkMTQ0Nzk1MGZhMDQ1NjUyZmY1NWJlM2EyYWMyNzVkYTA3MDY3NmM2IGxlZ2FjeS10cnVuaworNzg3NCBmZDdlYjA1OGNlNWRiMzA0MThjNTFkZmI0NmM0MzA2Y2EzZTIxZTA5IGxlZ2FjeS10cnVuaworNzg3NSA3MmIyMzFlZGZiMjUyMzk1NTI5OWE4OTgyNDI1OTQwM2ZmNDUzMWY1IGxlZ2FjeS10cnVuaworNzg3NiAwYTU5OTc3M2E5Y2NhNGZlZGRlN2QwNDNkNzczMDk2NWUxYzQyZTk2IGxlZ2FjeS10cnVuaworNzg3NyA3OTE4ZTg3MzkxNDhhNGM2MGFiNjU3OTRiNzZjZWFhODhmNmRiOWU5IGxlZ2FjeS10cnVuaworNzg3OCA0ODdhZDAzMjdhZTE4MjhiMjdkZmJmYjNiYmVjNzViN2U0MTRmMGNlIGxlZ2FjeS10cnVuaworNzg3OSA4ZjBhNzkzYmIwZTI2OTU3MWM4YmMwZWEyZWYzYTZiZTE3N2E1NzYwIGxlZ2FjeS10cnVuaworNzg4MCA1MGE5YzE0MDk0NmM0ODlmZjIzYTJkYjNlMTMzYzQ0MTljNGY2ZDhkIGxlZ2FjeS10cnVuaworNzg4MSAzNzgwY2NlMTRmN2QwMmNkZGMxZmNkMWI5NTI5NzY4ZGUxN2E2M2I1IGxlZ2FjeS10cnVuaworNzg4MiBiNzg3MWNhOTMwYWQ1YmM1MWE5MDllZTc1ZWMyZTVkYTEzZTA3ZjRkIGxlZ2FjeS10cnVuaworNzg4MyBjMjI1NDc1NDE5MmMyZWFmMTVkZDJhZTQwMjVlZjhlMzM3M2I3YmIwIGxlZ2FjeS10cnVuaworNzg4NCBiN2EyM2RiZTAwNjVlY2Y3ZjgxMGI5NzQwYTczOGE1MzkyYmRlMThjIGxlZ2FjeS10cnVuaworNzg4NSA2NDgxMjRhNTg4MGEzMzI5N2E0NWVjYjg4NDFjNDdlMDg3YTM2YWQ4IGxlZ2FjeS10cnVuaworNzg4NiAxOGQ2YTVhYmQzZjgzMjI3MzZjNWZjODUxMTRlMGMwMjg4NGE3OWYyIGxlZ2FjeS10cnVuaworNzg4NyAzYjJmZGEzMWJmMWJhOGVkYzUwNTc3MGVhZmQ5NzI2ZDQ0NGI2Y2E0IGxlZ2FjeS10cnVuaworNzg4OCA2NzE3MDczZGU1ODY1YTcwNjFkZTBkMDNlZDM2YmZkY2QzZDEwOGZiIGxlZ2FjeS10cnVuaworNzg4OSA3OGQzOTgwMDViYWIwMmE1NDI4NmY5MGJjOWZmMDViYzMyNGFmN2RjIGxlZ2FjeS10cnVuaworNzg5MCAxMDI2N2ZkYzc1MzExNmMxZDNlMjU5ODgyMDMzNWYwYjc4MTcwZjY0IGxlZ2FjeS10cnVuaworNzg5MSAwMTNmZjY5NTE5MDlmMGViNTViNGU3NzE5ZTM5NWIwMDE3ZDkzMGMwIGxlZ2FjeS10cnVuaworNzg5MiA1OTYzODBhNTY3ZDIyMzk0Y2EwMWVmZjA5MDU5MzRjMzRiNTJjZmVkIGxlZ2FjeS10cnVuaworNzg5MyAxNzIyNTRkNDFhNTFkYWZiNzQ2ZDIxNTk2OThhYmQyNmYyNmJjMjI1IGxlZ2FjeS10cnVuaworNzg5NCBhYmYzM2I4ODJjZmRjZTgzODc0Y2ExNjQzMDNkMzM0MmJiZmM5MGFlIGxlZ2FjeS10cnVuaworNzg5NSBhMWI2M2M3M2FkMWRjNTE0Y2IzNmM0MDBjYWEyNjc2NjQ1OTE1NWMwIGxlZ2FjeS10cnVuaworNzg5NiBkOTk0MWE4OTVjMDIwOTQxMTU2NGYyZDRmMDQxNzJmZWFlYWRiMDVlIGxlZ2FjeS10cnVuaworNzg5NyAwMTRlYTlkNzJkMDNjZmU0Zjk3ODk3MWI3MWUzZDE1NDJlZDAwMzRjIGxlZ2FjeS10cnVuaworNzg5OCBkYWNiZmFhMDdjNDA3YzI2YWFiOTg0MmNlNGYwZWUxMzI0YjM4ZmY2IGxlZ2FjeS10cnVuaworNzg5OSAzNzMzMmI2ZjYyODBiZWQ0NzJiZDI5ZDkzOWNmZTVhNWNhNGExYjVhIGxlZ2FjeS10cnVuaworNzkwMCBiY2NiOGQ3NDI5NjQ3Yjk0MWU1ZTdlNmY4N2I1MDQzNjk4ZjVkM2RmIGxlZ2FjeS10cnVuaworNzkwMSA2MzhhOTliYzhmMmNjZjdiOWJhNDBhMjQ5ZDA2MjQ3MmUyYWY2YjgzIGxlZ2FjeS10cnVuaworNzkwMiBhN2UzMDliMTc0YjI3MjVlYmQ1MzI5OGRlOTUxOWEyNDI4MTg4MzBkIGxlZ2FjeS10cnVuaworNzkwMyBkYWI4NjNiNzlkZWJhYzMzODllYjRlYzdlMzMyOWJjYmM5ZTRkNjRmIGxlZ2FjeS10cnVuaworNzkwNCBiMDAyMzMzNTU4OGNlZjdmOTdhOTJhNzI5ZTA5YTRkYWQ1M2RkNzkzIGxlZ2FjeS10cnVuaworNzkwNSA1ZTJjMTdiMzc0ZmIwZWFhMjcwMWRmZjhhNTE5N2QyMzc5MGVlZDEzIGxlZ2FjeS10cnVuaworNzkwNiBhYzIzNWM5ZTY4ODFmMzM4Y2E2MDlmZWNhNDgwNGZlMmQyZDU5Y2YyIGxlZ2FjeS10cnVuaworNzkwNyAyMzI5Y2NmMGU1ODExMWNmMTY4OTFkNTZiYWQxYmUzMjMzMWFiNTc5IGxlZ2FjeS10cnVuaworNzkwOCBhNTZiNDRiMzU1MDU3MmZkMzUyOTk5MDA3NDg1NjFlOTFmY2M4NTMwIGxlZ2FjeS10cnVuaworNzkwOSBjZWU0YzQ1YzU2OGY3NjBmYWJhMTk2OWRlZmZhZmI2ZGZjNjIzODc0IGxlZ2FjeS10cnVuaworNzkxMCBhZDQ3NDFkNTQzMWNjMWJkMGJjZWQxY2IzMWEwMTgwYTIzNjQ2NjY2IGxlZ2FjeS10cnVuaworNzkxMSAzZDc4OTAyMzZhNGU1OTFiMzhjMTMzOGVmMzc2ODI0MDYwZDI0YmMxIGxlZ2FjeS10cnVuaworNzkxMiA1OTFjNjQyMGYxMWQwMjVkY2QyYzkzMWIwYmUxNzRlMjU5MmEzNzhlIGxlZ2FjeS10cnVuaworNzkxMyBjZjgxOGI3MGRhM2U2NWQ2NDFmYmY5YjI0OWMyMDU4NjljY2VhMTg4IGxlZ2FjeS10cnVuaworNzkxNCBjMmRhZTJiMWExMjM1ZDFkMjJkNTcyMWRiYTIxNWNhNjc0OGNiZTNkIGxlZ2FjeS10cnVuaworNzkxNSBlOTI2YzMzMWViYmYxZDMxN2Q3ZTcxOTUyY2YwMzU3MTEwZDVjMTIyIGxlZ2FjeS10cnVuaworNzkxNiAxZGFlNWIxYzhkYmExMmE1MzhmNmE4MGRmMGViYWMxNDMxOTcxZTFjIGxlZ2FjeS10cnVuaworNzkxNyA5ZWFhMmNhZWQxYzNiODQ1YTBmODk4ZjA1ZTRkNjE0MjI4YTYwNzZhIGxlZ2FjeS10cnVuaworNzkxOCAzYzZkYjcxNjViYzNkNjA0ZGNhNGY4NjlmZmFmOTRkZWI5NjY2M2Y1IGxlZ2FjeS10cnVuaworNzkxOSA0NTc5YTc3MDE5NDlkYWJkYzQ1ZmY5ZDA0MDI2ZjcxNDM1ZGE4OGVhIGxlZ2FjeS10cnVuaworNzkyMCA4ODY4ZTlmMTM2NTdkMzBjOWMyMzcxMGYyZWE0YTVkZDBmZDc4MGUxIGxlZ2FjeS10cnVuaworNzkyMSA4N2M0ZjA1YTE3ZTUxZmM2MDcyNGE2ZTk2N2M3ODk5NjQ1MDRkYmNiIGxlZ2FjeS10cnVuaworNzkyMiA4ZjNlMTYxMjM2MDA0OWUxNDZiNzE4NDA3ZDc4NGRjZTcxYjA5ZDQxIGxlZ2FjeS10cnVuaworNzkyMyA1MTVlZDczZGE1YjE0YjdiNWFlZTg4YTExOTY5ZTU3MTk0OTJmYThkIGxlZ2FjeS10cnVuaworNzkyNCAwYjFlNjk1MDg5MDczNmQyNDk0MTMwMWJjYWVhNmEyNzRiZmFiYzAwIGxlZ2FjeS10cnVuaworNzkyNSBlOWY2MTU4ODQ2YjE2YjdjMzgwODMzZTQ1ZTliODM0ODE3YTA2Zjg1IGxlZ2FjeS10cnVuaworNzkyNiAwMWYwMmJmMmI0NDE2N2I2ODQ2YWEzNDMzODUxYTI2YWJjMDcwNGNmIGxlZ2FjeS10cnVuaworNzkyNyA0YTgwZTZjYTdjZDM1ZWY0N2UzMDJlN2EzYzMyNjgzMTJmMTRmZTk2IGxlZ2FjeS10cnVuaworNzkyOCA1YWJkZGU5OWM5ZWFkYWE5ZDgwNmJmYWU4OWUxYmMzOWY2ODc4N2EwIGxlZ2FjeS10cnVuaworNzkyOSAyYTg3NTE5OWE3MWU4NjAyMmEzZWJjMDg4YTNmYThlM2MxNjkwYjBiIGxlZ2FjeS10cnVuaworNzkzMCA5YzZjMDdkNDQ5ZGY1NDAzNjIyOTQ5Yjc5ODhjMmE2NmRiM2NmNGZkIGxlZ2FjeS10cnVuaworNzkzMSAwZjZjOTZmNDhlMWJhNDc2ZTU2NzkyNjgzYjc5ZWU5YTgyNThkYjdiIGxlZ2FjeS10cnVuaworNzkzMiA2NjM1NzlhM2M3ZmViNTQwZTdmYWMyMDQ0YmMxMTA5YjQ4MDMwMTRiIGxlZ2FjeS10cnVuaworNzkzMyA3MzE2ZWVjYjFlNmIzMmU2MThjYjMwNDNmOTFlYmFiOWVjMzU0NzViIGxlZ2FjeS10cnVuaworNzkzNCA1MzQ0MDA5NzExMWZlZjhlMzllMGU5ZTVjNWY4NzIxMDdlYTdkNzQzIGxlZ2FjeS10cnVuaworNzkzNSAxMzA1MmRjMmQ1ZjZlNmU0YjkyNDZjMTJkMGEzZjNmMzcxYzM4NTA3IGxlZ2FjeS10cnVuaworNzkzNiBjNWQ3YjZmY2VlMDNkMjI1ZWNkMzdkNDMxNWYxYWRhMmQ3ZmFhYmJkIGxlZ2FjeS10cnVuaworNzkzNyBhZDZjNDI3ZGNiZDllNGQ1NzRkOWIwODA5MDRlODk2NGZlMDExYmFjIGxlZ2FjeS10cnVuaworNzkzOCAwZGVkNjNiY2Y1ZGUyOWVkZDk2OWVkZjEzNmM2YWZhMDViN2FhMjE2IGxlZ2FjeS10cnVuaworNzkzOSA2MGY2NjQ5ZmQyMzEwZGViYTNjMjM2ZGNjNmZmM2ViYzg3YmZlZGQ2IGxlZ2FjeS10cnVuaworNzk0MCA5NTI4NTFkOWNjZTIwZjhkYzFlMzg0OWFlMGM5NGMzNDYxMGRjOTMyIGxlZ2FjeS10cnVuaworNzk0MSBiMDU4NGJmN2I0ZjUyOTk2MmQ0OTM4MjA2MTNkMjhhNTI0MjM1ZTFjIGxlZ2FjeS10cnVuaworNzk0MiAwOWU2YjRlMzQ1MjNiYWUyMGU1ODI2NjA4YTEzMzhiZTAzY2ZiODAyIGxlZ2FjeS10cnVuaworNzk0MyA0M2M4NmM4MTgxZDQ1NzY2MWQ1ODBlOTI5OGE5NjJlYzNiODlkNzFhIGxlZ2FjeS10cnVuaworNzk0NCA2NGI2OTMxNTE5NTZkMjFhZDVhODNmODVhMmQ4ZmEyNTkwMTMyMzEzIGxlZ2FjeS10cnVuaworNzk0NSAwOGU4NmQ0MzkyODFkZjA1Njg3NGU2YmFkYmEwNDUzYWM3YTBkNzNjIGxlZ2FjeS10cnVuaworNzk0NiA0N2U4MWIyMTY5ZTk1NGVjMjVhZjRjNTE3YWI1ZDZlMWIxZGYzODI3IGxlZ2FjeS10cnVuaworNzk0NyBkOTAyOWE0ZTBmMmFjNzdjNmZjODEyOTE5MWM2MGM1ZjMwNDU5YTdiIGxlZ2FjeS10cnVuaworNzk0OCA4ZTVkNmQzMTAzYWVmODNlOTcyZmMyMjQ5YjgyMzg4MTdiNGZjYTk3IGxlZ2FjeS10cnVuaworNzk0OSA4NGRiMTU0ZDViOTNlOGQwYmUwNTYyNTU4MGJlYmU4MWEyYTZmNTk5IGxlZ2FjeS10cnVuaworNzk1MCBjM2Q0YmZiOGNjZGYwMWQ2YTM1YmQzMjljYjRiNDc2NDNiOTE5ZTczIGxlZ2FjeS10cnVuaworNzk1MSAyNjY2ZTkwNGU0MGIwY2NkNDhlOTJjMjEzMjY2N2NjMGE0OWU3YWU3IGxlZ2FjeS10cnVuaworNzk1MiBhODZlYTJjY2VhZWNkZDViMmU3NTY4Yzc1MWQ2ZWNhZDE4NWMzMjliIGxlZ2FjeS10cnVuaworNzk1MiAwNjJhZWQ4YTRjZTJjOTFjODFiODBlMjlmMDJmYWZmMWNmNWE3NjFiIGxlZ2FjeS10cnVuaworNzk1NCBmNDRhNTZlNjk3ZmIxN2NlNTZiODZjZjQxOWI2MDc2YzI2OGNjMzQ2IGxlZ2FjeS10cnVuaworNzk1NSAyNjZjOWFhOGMxMjc3NjE0OTFiZTg4ODFhMDMxZWQxNmQ0OTNkZGVlIGxlZ2FjeS10cnVuaworNzk1NiA2ZDUzZWJhZWMwMjE1OTFiMzM1MDk2MGIxODhhNTNiNmQzZmM0ZGMyIGxlZ2FjeS10cnVuaworNzk1NyBiOTYxNzZjOWE4NTNiNjlkMjAxZjBiNTAyMGZhNjgzOWE0ZTUwNTc0IGxlZ2FjeS10cnVuaworNzk1OCBmMWFmYzU2OTBiMmFiNWYyMDFlMzA0ZjUxM2RmOTk5NGJiNDc2ODI1IGxlZ2FjeS10cnVuaworNzk1OSA2ZmEyOTc1NmVjNmEyOTQyNzQ3YWQ4YTUzOGFkMGRmZDllZDI1ZWE1IGxlZ2FjeS10cnVuaworNzk2MCA3MzUwOWVmYTcyNGJjY2VjZjk4NTg3ODQ2NjczYjczYzc1MDEyMTM1IGxlZ2FjeS10cnVuaworNzk2MSA1OTVhNWZlMTQwZDQwYzI3NjMxMGFlNWRlYTkwMzU2MTBkYjY4YmYzIGxlZ2FjeS10cnVuaworNzk2MiA0NzhjNjhlYTk4Mjc1MWEyNTJjMjZiOGFhOWZmMTdiZGE2YTg5NDIwIGxlZ2FjeS10cnVuaworNzk2MyAxOTVkNWFhMTk1MWUwM2MyMzlkOGY0MDU4ZTVlOTk3ZmNkZjk3N2FhIGxlZ2FjeS10cnVuaworNzk2NCBlZDAzOTQ0ODQwODJiNjJjOTA0ZjZjNjAxM2ExYmEzMTk3NGVjZTI1IGxlZ2FjeS10cnVuaworNzk2NSAyZTg5YzU1ZDlhMjk1YTJlZmJjNDc4YjMwODAyZjU5ZDI4YWQwNDA1IGxlZ2FjeS10cnVuaworNzk2NiAyZDEzMzI4MDEyOWY3MmM5NzVlODMzMmRkMDg3MWU2NTJlZmY3MGM3IGxlZ2FjeS10cnVuaworNzk2NyBjMWI0MGIwNTc3ZDE5NGYxZTFhZWQzMzA3NzRjNTg2MDFkZjRhZDVlIGxlZ2FjeS10cnVuaworNzk2OCA1MDZiYTdkZjQyZjA0NjMxYjUxNGI5NjVkNjZmNjU2YTE0ZTg4YjdiIGxlZ2FjeS10cnVuaworNzk2OSBhZjFhZWE2Yjk2OGZkNmRhY2MxMzAzYTU1ZmRiMDJkYTVlMjU3ZTU0IGxlZ2FjeS10cnVuaworNzk3MCBlZjkzZDUxZGFiMzYyZGQ1OWJiNTM1ODA3YzQ4NzYwYTY4OGYzZTI2IGxlZ2FjeS10cnVuaworNzk3MSBiZmQwMzE1NDA4OGI2YWMxMTBmMGUwYzY1OThmYmE4YjNmMjg0NDJkIGxlZ2FjeS10cnVuaworNzk3MiBlNjUyYTc5M2Y0ZTcxMmY0NTdiZjU1NjE4YWNiZjZjZmVhNTI1OTY0IGxlZ2FjeS10cnVuaworNzk3MyAwYjE5NDY2MDBiZGRlZDhmMWQwYzg1MWFhMDllNGNhYjRjODk3YjljIGxlZ2FjeS10cnVuaworNzk3NCAzNzdmODY5NWE5ZmJiMjAxZDA2N2YzMzdhMGNkOTM0YWVlOGJlMDY3IGxlZ2FjeS10cnVuaworNzk3NSA5YTEyMjU5MjM5MTgxZjhhMzQyOGFjYWVlYTJkYzZmMmM0NjY5MTVmIGxlZ2FjeS10cnVuaworNzk3NiBiOTA1MzcyZWRkNGZiNDdhN2UwODcyN2I2ZDk2YzBjNGRhMDA0MWE2IGxlZ2FjeS10cnVuaworNzk3NyA4MjE5MTJmZDk2NWExZDBhNGE2ZWQwOTVhZjRhMDU4ODdiNjE0NTE2IGxlZ2FjeS10cnVuaworNzk3OCA0NjYwZmZiOWU0ODNjNzU4NzllMzQ1YzE5NTViYTc0ZjhmYzczYzc2IGxlZ2FjeS10cnVuaworNzk3OSA1MDU4MTY2NmM4NTRmYjEwOTA2ODFmMWY0OTY0Mzk3NmM0NWFmN2Y5IGxlZ2FjeS10cnVuaworNzk4MCBiYTAwNWU0ZGI0YzUzNDM2ZjIzNzA2YTgyYjY5OGIxYTQ4NWM0MWFiIGxlZ2FjeS10cnVuaworNzk4MSBjODhiOWI4Njg5OTUzMTQ3MzhhMTE0YjYwY2E1MDRhOTMwZmMzNzE2IGxlZ2FjeS10cnVuaworNzk4MiA0N2ZhMDA4Nzc5MjQyYTI3OGFjMmQ0NzU4ZTQ5NzQ0Mzk3ZDg5MmNlIGxlZ2FjeS10cnVuaworNzk4MyA1OTQzOGQxOWQ2MDM2NzVmZjc1MDhjZWNmZGRhODM2Nzg0NGRkYmIwIGxlZ2FjeS10cnVuaworNzk4NCA1NmI0M2E0MGE1Mjg1NTcxNzUyMjM1Yzg3YmJkN2YxMDVlN2MyZTJjIGxlZ2FjeS10cnVuaworNzk4NSAzNjQzZjE5ZDVjYTFhNDAwNjlmMzM4YzgzYmFjOTRhY2M2NjFhYTg4IGxlZ2FjeS10cnVuaworNzk4NiBkZGVkZmE1NTY4NGE2MGExMWMzNTlmY2IyMjgyZDM4N2VkY2JmNThjIGxlZ2FjeS10cnVuaworNzk4NyA3MjkwYTkzMGI0Yzk1N2M1YjU2NDE5OTlmN2Q3ZTEwZTUxODA3NzBlIGxlZ2FjeS10cnVuaworNzk4OCBmYjM5ZDI4ODY2NGI1MzllYjRmYTBkMTE0ZjhmMTUyNzMwZDI0NTRjIGxlZ2FjeS10cnVuaworNzk4OSAxNDlkNzQyYjA5NzFjZTFjNWMxODQ4NTQ5ZDc3OWFmZTgwMmI2YTlmIGxlZ2FjeS10cnVuaworNzk5MCA0ZGQ1MDk1YzNiNjdlOWY3N2Q4OWNjYTYwMmUxYzNhOTk5MjM4ZGFjIGxlZ2FjeS10cnVuaworNzk5MSA2NGUyZmQ4ZjFkNjg0OTBkZmI1NGNhMWE5NzZhZWNlOGM1NzNiMWRlIGxlZ2FjeS10cnVuaworNzk5MiAwNjRjODY3MTljYTdiZGZjNjE3YmNjZjczMjBjYTA2MmI5MDdhZTNlIGxlZ2FjeS10cnVuaworNzk5MyAyNDU2ZDhmZjlmYTgyM2UyNjQ2OGUwYmIzNTJmYjE3MjcwNGY0NzgyIGxlZ2FjeS10cnVuaworNzk5NCBjYTEyM2YyNDBiYTljMzY4MGJhNDg5ZjY3MWZkODNjZGI5ZDM4YWVlIGxlZ2FjeS10cnVuaworNzk5NSA1NzZiN2Q5MjdhZmI5MDljOGQ0YjMyY2ZhOTAwYjk4NTY0ZDU3OWVjIGxlZ2FjeS10cnVuaworNzk5NiAxMzgxNTI3M2UxNzFiYmExMzU0ZjMzNjNkODU1MWM4MmQ2MWUzMjIwIGxlZ2FjeS10cnVuaworNzk5NyAzMWQ2NjE5NGE3N2M5ZmZjYjg0NjY4MDllYTZmOWFjODJkNzcwOWU0IGxlZ2FjeS10cnVuaworNzk5OCA4ODAzYmY0MDRiNjk0NjY1NTYwYzE1N2NlYmExYzUyY2E1NWY5NTg0IGxlZ2FjeS10cnVuaworNzk5OSA5ODZjMzA4NzY1YWU5NjdhYWQ3NWY4NTAyMTA3Y2Y1MjNhMTU4M2ZmIGxlZ2FjeS10cnVuaworODAwMCAwYmE5ZjkxNGE3MDg4NzZlZTAyZTExMzEwNGRmMGZkODcwYTgxYWUwIGxlZ2FjeS10cnVuaworODAwMSA5YTIzN2E0Y2YzYTFmNmY4NzZkNjUwOWZhN2E0NGVlYzZjNjg4ZGZiIGxlZ2FjeS10cnVuaworODAwMiA4NTgyZjc0YTFkMjM1ZDNkMzM3NmEwMmJkYWViZTQ1ZWQwYjM3YWE2IGxlZ2FjeS10cnVuaworODAwMyBiYzlkNTQ1MjM4NjI4MDJiN2U5OTE1YjhmYjNjMDYzNjE2NDk5ZWJkIGxlZ2FjeS10cnVuaworODAwNCAyNmVmZjY5ZWQ1NTIzY2JhNDdmNzgyYjhhNzFmZDIxOThjNzljZGNlIGxlZ2FjeS10cnVuaworODAwNSAzMjU4NDYzZjFjYTI3NWUyNjZiOWQ2NzRiMTQ5NDE2MmUxNTZhYTZlIGxlZ2FjeS10cnVuaworODAwNiBmNWRlY2M1ZDcwNzNlZjlmMjU5OGQyODY5ZTIzNDUyZGZiZjgwYTM2IGxlZ2FjeS10cnVuaworODAwNiBjOTQ5OGFjOTg4MzcyNTc1Y2Y3MDI4Yjg2Mzk1YjkwMGM5YjBhODQwIGxlZ2FjeS10cnVuaworODAwOCA1NDU0ZmU0OTI1ZDM2NTY1YjJiNjhiZjQyZGNhZjkwYWViMzUyOWVkIGxlZ2FjeS10cnVuaworODAwOSAzMGQ1NTk4MjcwNDc5NmUxYWM2MTYzOTFkNzNkZjFlNDc5Y2VkNTRhIGxlZ2FjeS10cnVuaworODAxMCA4MjZmMjg5ODViZWFkZjU5MTA1YTQyNTZjNzNmZDdiMzgzMjUwODMyIGxlZ2FjeS10cnVuaworODAxMSA4NGQzY2NhODE0ZmJkMGQ2NTM0OTIxMTM5NjgyNmExZmRkZWRiNGM0IGxlZ2FjeS10cnVuaworODAxMiAyMGMyYjcxNTE4OGVhOTc1YmVjNDgyYzIwZTFmYTNjM2YwZTQ0ZjQzIGxlZ2FjeS10cnVuaworODAxMyBjNmYwNGU5NjU1MDgxODE3Nzc1ZGI0YzEwNDdiMGIwODY0NWM4ZTk4IGxlZ2FjeS10cnVuaworODAxNCBiMWRmOTM4NjU1ZTE1ZDUzOTBiNTY1ZmUyYzMyYjNlZGMwMDEwYjg0IGxlZ2FjeS10cnVuaworODAxNSA0NzJjOGU0Y2M5NzQxZmJlYmZmYWIyNzVjNjNhZWIwNzcxYmI0OWZlIGxlZ2FjeS10cnVuaworODAxNiA4Zjg3MWEwMzBiOGQxNDAyOTg1OTAyM2I5NjZlYTM1NzlmMWE3YjJiIGxlZ2FjeS10cnVuaworODAxNyBhMGNjMDA1ZWNjZDc4N2I0YjE5NTY2YjgwNzE2ZjQwOTJmYmJlMDI2IGxlZ2FjeS10cnVuaworODAxOCBiNTc5YzU5MThmMmNiMzViMGExOWY0NTNlMGYwMjE3YWIyMmZkYWI3IGxlZ2FjeS10cnVuaworODAxOSBjZmMxM2YzZjM4NzY5OWRmYTRiZjc1OTM0OTA0NjA3YWMyNDVmODQzIGxlZ2FjeS10cnVuaworODAyMCAzN2M5MzlmNzBmYWMwMWQwMjYyZTQ4NzY0ZmM3OTU4YTViOTBlMGE4IGxlZ2FjeS10cnVuaworODAyMSAwYmJhOTE0YmY3YjJhY2E1MWFhMzdiMzFhOTYxZjczZDcwMjc3NGJhIGxlZ2FjeS10cnVuaworODAyMiA3ZTQyMjg3ODBmZjhjMWEzNGM3YThkMWNjOGM3ZjI1NGIwYjRjOTA2IGxlZ2FjeS10cnVuaworODAyMyA2YzA3ZDQ0YTcwODEwOGNjNWRiNDQwZDRkZWQ3NTQ2NzAxNzZiMDlkIGxlZ2FjeS10cnVuaworODAyNCA5OGQ0ZTk3ZGFhYzA1NDZkN2ZlNjBkYWIwZGQ3ZjA0MGNiOGY4NzExIGxlZ2FjeS10cnVuaworODAyNSBhMjJjYWYxMjkzNDUzOGU0NDcwY2E4NzliZmY0MWI1YzlkZTVjNDU4IGxlZ2FjeS10cnVuaworODAyNiA1MjYxMGVjZWUzNjdhNzkzOGEwYjQxODM5OWI3YTM3M2FkZjdiOTBiIGxlZ2FjeS10cnVuaworODAyNyA0MzgyMmU0ZmMyN2Q0NzY0MWE0YWRjM2Q1ZWY2OGZiNDc3NmU5MTNiIGxlZ2FjeS10cnVuaworODAyOCAzNDUwOWMwNTI2NmYyMjk4NDE4ZWYzOGQwZWQwNGE3YzhjZWZkYjc3IGxlZ2FjeS10cnVuaworODAyOSAyZGZjNzA3ZDZlNjg1MTk1YmU4NjZlODhjYjdkOThkNjYwODNkYTNmIGxlZ2FjeS10cnVuaworODAzMCAxOGZkMDc4NjliMTNjNDhiOGI1MjdmYjkxNTU4YjNkMzBmZmVkMGZiIGxlZ2FjeS10cnVuaworODAzMSBiNWU2NDhmZGUwOTljOTZmZWMzY2M1OWY2YjE2ZDAxMjAzODE0MGMzIGxlZ2FjeS10cnVuaworODAzMiA5ODlmNGZmNzM0MjkxNWFhMGY4ZWFjNmZkYjM2NTFiZTU5MmNhMTQ2IGxlZ2FjeS10cnVuaworODAzMyBmYTlmYWRhOTE2YjQ1MzAzOWY5OTI3MGJlMWI2OGQ3NjczYzBhYTMzIGxlZ2FjeS10cnVuaworODAzNCA0MzI5ZTQwNzdjZjM5MTUxY2YyYmM2MmJlZDBjM2IyMjdhZDYyMzg3IGxlZ2FjeS10cnVuaworODAzNSBlZjNiYThiOTlkYTJlZmZmYmEzY2ZmYjYwOTkyMjJiY2Q5ZTNlYjlmIGxlZ2FjeS10cnVuaworODAzNiAxZWNlZDFhYWFkNWE4YTY1ZTYzMzBkMGI1YmFlYzI1Mjc4YzU5YWU2IGxlZ2FjeS10cnVuaworODAzNyA4ZWMyOThiMjU1YTIwYjY3MGEzZmFkODJkNzgzM2U4YTVhMjk3MTY1IGxlZ2FjeS10cnVuaworODAzOCA0ZGNmMjZmZTRkYTU5NTFiMDk5ZjVmMGRiZWJmMjhlMGFlYjJiZTljIGxlZ2FjeS10cnVuaworODAzOSAzZjNkMmQ0NzRhY2EwZjVjYTEzYTQ0ZjcxYTI2MGNiZTQ4NDY3MGU1IGxlZ2FjeS10cnVuaworODA0MCBmMWIwMzg3NThiZGE5M2IzM2U1YzhjZmE4MzkxM2JhYzUxZTllMzMwIGxlZ2FjeS10cnVuaworODA0MSA2ZTk0NDI3OWEzMTRmMzAwNDA2ZGYwYmQyZWZmM2NlMjcwNjY2ZmQ1IGxlZ2FjeS10cnVuaworODA0MiA1ZmZhYjY1ZjhkMDUwOTg4YjkwNjg3NDY1MzVmMmU0ZjVmNjg1OTI4IGxlZ2FjeS10cnVuaworODA0MyAxOWQ0YTI4NzQ2NDU0YzM0MTFjMGY2NWIzZGQyNWIzOGJmYTg1NzEwIGxlZ2FjeS10cnVuaworODA0NCA5MzJjZmM1ZmMxMDRiMjRkMTE4ODhiOWVhOTQ2YzM5N2RkYTY4ZDgyIGxlZ2FjeS10cnVuaworODA0NSAxMzlhYjIxZDI2MjliZTQ5OGYxODhjY2Y4NTMwMzkzYjczY2NhZTAyIGxlZ2FjeS10cnVuaworODA0NiA4MThjZmZmM2FhNWQ4YmNjMWI1MDYwMmFjZDZjYTNlNzUzZTMxYzg3IGxlZ2FjeS10cnVuaworODA0NyAxMWUyZTNmZjlmYzdiMTllYmM0MGI5NDA4NTk5ZWQ1NTIyMzhkNWQ4IGxlZ2FjeS10cnVuaworODA0OCAzZTY3OTUzMGFmYzllYzY0YWNlY2JlMGU3MjZjNjZmMDljOTZhNjExIGxlZ2FjeS10cnVuaworODA0OSBiMjMxODU1YTk0NzQ0ZGJkZTIzODQyZGI0Nzc3ZjY1YjY1ZTA4YzhlIGxlZ2FjeS10cnVuaworODA1MCBiZjlmMTA0YWJlNzhhNTVhOWRlNmRmMTU5NzUzOTJiMzYxNjhlMDg5IGxlZ2FjeS10cnVuaworODA1MSA4NGQ3Y2M1ZTYzY2RiNzY1Y2RlMGExOWE4ZjczMmZkNTE4NWY0ZWFmIGxlZ2FjeS10cnVuaworODA1MiA2YTlmMjYzZTJiNDhjYWNjOGI4N2U5MzY3NzlmMWE4MjhiNzA2NTFmIGxlZ2FjeS10cnVuaworODA1MyBjN2Q4MTJlNGFmMGQzZDkzZTM4NDIwYzMwNGRlNWYxYmVmNmQ0OGVjIGxlZ2FjeS10cnVuaworODA1NCA2YzcyYjkxYzhiODNkMWFjM2I0NTFmNTVlMTU3OTAyODExMTVlMjA3IGxlZ2FjeS10cnVuaworODA1NSA5MzdkOWVjMmI1NjA1MTdhMmRhMmY0MmMyZTBhYTkxODVjM2IxYzg0IGxlZ2FjeS10cnVuaworODA1NiA0ODZkNWU5ODkzOGJiYTRkNGJmZTE0NDYzODk4MTQ3MDczZjdlNWJlIGxlZ2FjeS10cnVuaworODA1NyBjZTU5OTczYWNjZGU3ZTA3ZDI5YWNmNGY3NDU2M2MzYzZlMDhjZTU0IGxlZ2FjeS10cnVuaworODA1OCA3ZTJhZDllMzJlMGQ1ZGQ1M2I4ZGY3MjNjMGQ1ZDY5YzU3MjJmNmFkIGxlZ2FjeS10cnVuaworODA1OSA4N2Q1ZDdmYThkMDdlNmI5OTY2NDVmZjkyYjY2NmRhMDZlYzFjZDFkIGxlZ2FjeS10cnVuaworODA2MCBlZGJjZmVkN2ZjN2JmYzg5ZTVlOWNhMWFlYWUxMDQ3ZTJmNDcxNGYzIGxlZ2FjeS10cnVuaworODA2MSA4NWM1MDQzYzkzMTY3N2VjYWJlNTg2ZTg0ZjBjNTY0MTUyZmQ3NWFjIGxlZ2FjeS10cnVuaworODA2MiA1N2RiZGMyYjMwMjI2ZjEwM2EwMWFmN2EzZTU4OWQyODU0MTUzNmJmIGxlZ2FjeS10cnVuaworODA2MyA3ODRiYWZiNDdlMWY2ZGJmNzRiZTBiNjhmYTg4YWMxMTJmZWM1YzI2IGxlZ2FjeS10cnVuaworODA2NCA2YTQ4YTdlNzExZDg2Y2EyMmFhZWI1MDYxMjcxYWJlMDI5YmIxN2QwIGxlZ2FjeS10cnVuaworODA2NSA1M2NkZjk0YjY1MmI4M2U1NjUyZjVjNzEwZTllYjM0ZmRkMzk4MjhkIGxlZ2FjeS10cnVuaworODA2NiA3OTVjYTk3NWQ5NmY4OGUyODNjYmRmNjZiYzU5YzMxMDIxMWE4YmY0IGxlZ2FjeS10cnVuaworODA2NyBmM2Y2NTY4N2U0MjYwZGFkZjdkZGMwOWQxZTY4MTEwNzYzN2FhYjhkIGxlZ2FjeS10cnVuaworODA2OCBkYTQ3NWUxMDdhNjhmNzY4ZGM0ZGEzMWEwYmU4MTc1MGE5M2Y1ODgyIGxlZ2FjeS10cnVuaworODA2OSBlM2Q1MjU4MmQzNjA3ODEwZDVlM2Q5MmFmYzQwNDlkZGQ3NzhkODMyIGxlZ2FjeS10cnVuaworODA3MCA0NTFjN2NjZjM2YjY3ZjJkMWFmOGY0NGMwMDY2M2VjNjE1M2EzMDY0IGxlZ2FjeS10cnVuaworODA3MSA0YzQ2MjFhYTllNzY3N2U2MTA5NjNjM2NkMzAyMDFiMjM2ZDg2YTE0IGxlZ2FjeS10cnVuaworODA3MiBjNWE1NjdhZjEzZWU3Y2YzY2E5MDhkZGRhZjhjYjczYTcwMTE1YmY1IGxlZ2FjeS10cnVuaworODA3MyAyZTJiYmU5ODU2MjAyMjM1NGRiZDU5ZDUxMGJjZTY2MWQxMTViMThjIGxlZ2FjeS10cnVuaworODA3NCA1NTE2OTE1ZmZlZTdkNzgyNzcxYjJmMzM3NzY4ZDMwMjM3ZTIxOGQ4IGxlZ2FjeS10cnVuaworODA3NSAxZjIwNmM5MWRhZWUxODAwZjkzYzllYWMzNTkzNTJlM2I5Yjg1MmU4IGxlZ2FjeS10cnVuaworODA3NiBiNWU1MWFlOWY4MzJlNWEzOTg2MGU4NDJkODQxOGE5YTA3YzIwYjc2IGxlZ2FjeS10cnVuaworODA3NyBkOTU0ZGMyNDNlYjA3YWFjNTNmOTY1MWM3MWIwODgzMGNiMzA1MGJjIGxlZ2FjeS10cnVuaworODA3OCBhNjEwMjNiY2EwYTk3NDM3OWRhNzE1NGEzMzBhMTQ1ODc5MzZkMDVlIGxlZ2FjeS10cnVuaworODA3OSAwMjk0YTY3YmZiZGI0MzdmYWNhYzQyMzhmZGU1MjI4OWUxY2ZmZmVhIGxlZ2FjeS10cnVuaworODA4MCBmNDM1NTlkMjNiM2Q2OGU5NWViNjFiYTM3YTE3MWViZDBmZWNkYzBiIGxlZ2FjeS10cnVuaworODA4MSA4NTk4MGVhNWU4MDVjZjk5MGQyODNkZThkZjUyOGNlMjVmZmU0NDg0IGxlZ2FjeS10cnVuaworODA4MiA4OWFmNWJmOGY4NzMyMDQ3Y2Q2YjlmMjYxYTc5N2U5YTI2MDVhYTViIGxlZ2FjeS10cnVuaworODA4MyA0OTVmYmRlNjRhNzNiNWRiNmI5ZDJjNGJjM2I5MDkyNWQwYmVmOWNhIGxlZ2FjeS10cnVuaworODA4NCBjYmI0ZTNjZjA4NmUyMjFhZDNkZmI1NDRjMjIxOTEyMDIzNjM5YWE1IGxlZ2FjeS10cnVuaworODA4NSA3OWU0OWNiY2UyZWZkMmYwYzZiOWMzODcwOWYwY2UwYjMyMDI3M2VkIGxlZ2FjeS10cnVuaworODA4NiBmMjhlZWEwMmNmOTQ0NjJiYjk5NWZhYjI0OTMxODk2NDgwODJkODFhIGxlZ2FjeS10cnVuaworODA4NyAxMGU5Y2ZhMDEwZjA4OTc2MWZlNzljOTVjZDdjYzEzZjY3MGU2NTU0IGxlZ2FjeS10cnVuaworODA4OCA1ZWQzYTIxY2MxMjI5YzE3OTg4NTI0NTNjMWU3ZmQ0ZDkxYjUzMWEzIGxlZ2FjeS10cnVuaworODA4OSA4ZDQwNWY3MTI4MmY5NmUwMTY4ZDg2MGRmMTI3YTUwMTI1YmIwZTg1IGxlZ2FjeS10cnVuaworODA5MCAxOTBlMzViYmMxNWFlMjMyNzg3ZGU3YjIwOTUzMWZkMjAwYzZiMjQ3IGxlZ2FjeS10cnVuaworODA5MSA3MjU0ZWUyYThhYmRhNzA4OWFkMTQwY2VlZjJjZTY4NDhmYzFmYTE0IGxlZ2FjeS10cnVuaworODA5MiAzYmEwOGQ2ZTliN2YyODQxYjI4MzU0ZTAzNjhjMDg2MmViYjM3MGMyIGxlZ2FjeS10cnVuaworODA5MyBiYWUyYzAxODlmODU5NGE4YTM2NjYyMzczNjY3MGQwN2Y1NTc0ODk4IGxlZ2FjeS10cnVuaworODA5NCA3MDg1NTU3NDUxNmI4NmI5OGM1MTU4ZGVhMWQxMTQyNmMyYWQwYWQzIGxlZ2FjeS10cnVuaworODA5NSBmZGQxZTFhNTMwYWY4YzA3ZDVjMjcyMmVlYWYyYjI2MTkwNzYzYzQ5IGxlZ2FjeS10cnVuaworODA5NiA3ZmRhNzg0MWRiOTE4MmY4ZTc4NDdhZDIwNDIxNTI0ZTcxYTU0YWI3IGxlZ2FjeS10cnVuaworODA5NyAwNTU2ZWE2ODdhOTdkODE4MTA1OTQwYWNkZTg2ZmVhYTdjMWQxZjNlIGxlZ2FjeS10cnVuaworODA5OCBlMTQxM2ZhNjRiODMxYjc0NWRmYTQ1Yzk3OTcyM2MyNmMzYzE2NGI4IGxlZ2FjeS10cnVuaworODA5OSBmOGU0NTJhMWY2NDQ4M2JjZjZlZDBiM2NkMzRiMDVjYTUyZjFiYjVlIGxlZ2FjeS10cnVuaworODEwMCBmYTZjOTFhNWY0MWI3ODM4NzU1ZTMzNzhmNjU2NDY5ZWQyNmQ5ZGYyIGxlZ2FjeS10cnVuaworODEwMSAzMmJhZmM5ZTljNGZjMzZjODA5YWY2MzBmMjcwYWI0ODBiZDI3NDRkIGxlZ2FjeS10cnVuaworODEwMiBhY2ZjZTAxNWRmZGQzNmRlZTBhYWExYjVhMWMwY2I5ZWY3NjA0ODBjIGxlZ2FjeS10cnVuaworODEwMyA2OTZlNzU0MDY0YzM3ZjBiNjkzMWJiMWE1MGIzOTVkODUwZmMxZGIyIGxlZ2FjeS10cnVuaworODEwNCA0ZDEyZTZlOWMyN2QxZTUzNjhhNzQ1MGI5MzE5ZGIzNTY3NWZiMzBkIGxlZ2FjeS10cnVuaworODEwNSA5OTI0ODI1ZGE0YjNhNjg1MDJlMDEwNzJlNzkyMDMxYjZiYWIyZWQzIGxlZ2FjeS10cnVuaworODEwNiBlNmEyMzNmYzhiOWI0MTRhZDI2ODM4NDZmMTI2NWE1MmNmYmQ3YzVjIGxlZ2FjeS10cnVuaworODEwNyA4YWY4ZWU3OTdjMDk1MmNmNzEyZjgzNjg2NDlkYmI0MDIxZDU2MjRiIGxlZ2FjeS10cnVuaworODEwOCA4YzU0Yzc3NzY3NDQ5MGU4M2JjM2JjMDdkYjgyMWRhZGJmYjUzY2ZmIGxlZ2FjeS10cnVuaworODEwOSAwMGZjNDEzYTNiOGJjNzZlYjI4ZTU0NzE5MjQ0OWIzMmYzYjdiYTg1IGxlZ2FjeS10cnVuaworODExMCBjNjljNzU5ZjQzNjZjNTYwNTVkMDRhYjhkYjJkYWU4MDE1YWE3YzMyIGxlZ2FjeS10cnVuaworODExMSBlYzk3ZjQxYzdhMDRlYjQzZDg5NGU3NWQ0MTBiMTg0Y2RhNDhjMmNkIGxlZ2FjeS10cnVuaworODExMiBhY2M1NWQ3MDQ2NzQ3OGUwZWVlODRhYzU5NDI0ODhkOTQ1NTk2MDBkIGxlZ2FjeS10cnVuaworODExMyA3NWJhNjRjNTVmMmUxMmM5NTA0Y2RlYWI1NjFkZWRkMzg4NDRiNDAwIGxlZ2FjeS10cnVuaworODExNCAxN2NhN2U0ZThmZDZlODFmZDlmNDhlYzA1Yzc4N2VlNjhiMGZkNzhhIGxlZ2FjeS10cnVuaworODExNSBmOTE0MzlkOGY2NmU0NzI2ZmYxZjIxMDE5ODc4YTgwZDg2N2FjNjZlIGxlZ2FjeS10cnVuaworODExNiA0MzcwNTY0N2ZlYjkyOTdkNWVlMmZhNTJhYWM2MzdkOTY0ZmZkNTY0IGxlZ2FjeS10cnVuaworODExNyA1N2EyNjFmYTU5NmM2ZjI2NGJjN2RkNzkwMmE0NTM5ZTc2Mjk1ZGY0IGxlZ2FjeS10cnVuaworODExOCA2NWVhNDFmMmQzNGQ4MGY3NzVlOTFmY2ZlMDcyYTlmNTIxNDZmNTdkIGxlZ2FjeS10cnVuaworODExOSAwZWY3MDJiODA0NmJhNmZhMzk5MTg1N2Q0NzRjZWY1YjUyYjBiODA3IGxlZ2FjeS10cnVuaworODEyMCA5Njk0OWI5ZjQyY2I5MDI0ZDUzODliMjk4ZDU1YWU3ODYyZGNkNTJhIGxlZ2FjeS10cnVuaworODEyMSA3YzIwOWRhYmQ4YzgwMDAyY2Y2ZWVmZWQwNDYxZjE0NDgwODI5M2JmIGxlZ2FjeS10cnVuaworODEyMiBlNTkzNzRlMjNmZGY2ZTQ2NTZiYzc1ZDFhOTEzMWIyMDI2NWY3NzZlIGxlZ2FjeS10cnVuaworODEyMyBjNjNlMjgzYmIyZTQ2NjE0OGY3YzFhZjU0ZDA2YzBjNDlkMGJlZmQ3IGxlZ2FjeS10cnVuaworODEyNCBiNDlkODAzN2E1Y2JhZTNmNDA0YzQ3ZjQ2ZjQzMDk5MjZiYzA0ZGFiIGxlZ2FjeS10cnVuaworODEyNSAwY2M5N2U3NWEzNjEzOTI5ZjRjNjA5NTYwNWQ4MWQ1OTIwMzc0MTI0IGxlZ2FjeS10cnVuaworODEyNiAwN2UxYWFiMjMxMTUzNDIzZWVmZDU1MDM1NjViNmJiOGUzZDE4YjNkIGxlZ2FjeS10cnVuaworODEyNyBkNDVkYzdmZTQyYWY5ZTNlOTg2MTc4ZjdkMGZhYzk3ZWJlNGEzYWU2IGxlZ2FjeS10cnVuaworODEyOCA5NWQ2ZTE3OTU1ZWZjOGJiZDkyNGE0NjQ1NTJlOWZjNTNlYTBiYTZlIGxlZ2FjeS10cnVuaworODEyOSA2MDA5ZDUzOTA1ODQ4Y2VmOTM5MWQ1ZDJlMGY3ODQwMzlmNmIzMDA0IGxlZ2FjeS10cnVuaworODEzMCAzMDk2MDJjODc5MjkyNDE2OWNmMDc5YzkxOTM0MWIxMjA3NTRlNGE3IGxlZ2FjeS10cnVuaworODEzMSA4ZTE0ZDU0YTY0MTlkMjljOWYzYTNmZjAyYjJmMjdlMzE4MzFhNTMzIGxlZ2FjeS10cnVuaworODEzMiAwYjU3NDJkMzE4OWEyNDBlZTRlMzk3MzlhZWVjYjcwN2RhYTM0YWFhIGxlZ2FjeS10cnVuaworODEzMyBkMTc1Y2FjNTUwYjk4YTYxOGU0MzU1NzJhZWY1NTM5Yjg2ZWM5MTM3IGxlZ2FjeS10cnVuaworODEzNCBkZGVkNDM5YjdiOGFiMTYxMjE5Yjc3YzcxZTcwOGVhNzhlNjY5MjAxIGxlZ2FjeS10cnVuaworODEzNSAxMjY1Y2E0NGYwNGI5YmNjOWZmOTlkZGI5Y2UyODZkMDkyZGI3NWI1IGxlZ2FjeS10cnVuaworODEzNiA2ZjlhMmM4NzQwMThlZDhiZmRhZTA0MmRiZmJiNWU0OTgyZjA0MDc1IGxlZ2FjeS10cnVuaworODEzNyBlZmRlZTdkNDMyNzA0ZDA3YTM3NTQ1ZGUwYzA1ZDRiZWVmNWY0YTAyIGxlZ2FjeS10cnVuaworODEzOCAzZGI3NTRhYmZmMzYyZjA5M2VkOGI4MWYzMzg0ZmNlN2M5MTJkY2EwIGxlZ2FjeS10cnVuaworODEzOSA2YmQzYTJjZWMzNTMwZmU3YTExZDEyYmU2NTU3NDA3ODhmN2JjYzdmIGxlZ2FjeS10cnVuaworODE0MCAxODE0OTk4MGVjZTk4MzY5ZTczNzRiZTYyYWU1OGE1MGIxZTdlMjA2IGxlZ2FjeS10cnVuaworODE0MSAxZGZhNGYxN2Q4ZmZmNjMxZGUwZDc5MDI2MGQ0N2MxMDUwODU4NDUzIGxlZ2FjeS10cnVuaworODE0MiBiNWJiZTUyMjBmNmJhYTk2MTMxYzkwNjY0ZmY4MGNiZjc1M2U1YmRiIGxlZ2FjeS10cnVuaworODE0MyAzNDcwNjg5YTk3ZDcyYTBhZWFjMDE3MzkwZDg0MzgxMzc5YzBlMzM2IGxlZ2FjeS10cnVuaworODE0NCA0YTU4NDk3YzE0YTgxNjdiMzFjZDlkNTgwZjE3YTIzYWQxYjIyOTRlIGxlZ2FjeS10cnVuaworODE0NSA2NzY3OWYyZWQyMTc2M2IxNDZmODQxMjk5OTYxNzgwMGU0NTlhMDYwIGxlZ2FjeS10cnVuaworODE0NiA4NTEzNGI5N2FlNGQ1NDA3MDZjMzZlN2RmZGQyMDk5MjBhYmFjODdjIGxlZ2FjeS10cnVuaworODE0NyBjMzUwMWE5ZDNjMjA1OWYxZWE4ZjlhMTQ1YzE0NWMyMzY0MjY3YjA1IGxlZ2FjeS10cnVuaworODE0OCBkNjYzMDQ5NjNjYTdmZTkxNjgwY2VkNjdmZWE3NWY1OGM5ZWQ1MDZjIGxlZ2FjeS10cnVuaworODE0OSAxOTI2ZTY0OTJkM2Y3OGQ1NTBiNWNiZjgxMjM1ODQ4ZjIxYjZhNGI5IGxlZ2FjeS10cnVuaworODE1MCBhOWZmZGZmMDU1N2Y5NWVmNjU5ZDM2OTVmMWZlMzdmZGIzMjgwNTU1IGxlZ2FjeS10cnVuaworODE1MSBlNWRlNzA3MzAwZTE3ZjA3NTQ3M2U5NzkzNzYxOWQxYzBmY2FmMGVmIGxlZ2FjeS10cnVuaworODE1MiBmZDZhY2FkN2NjN2E5N2E0ZGQ0MWI1NmQ3OTdiNGFmYzQ2MmVjYTc1IGxlZ2FjeS10cnVuaworODE1MyBlZjhhMTU5MDJhNDg3YWMxOGMzMWM5Yzk5NzIxNDgxNmE0YWNmYjA0IGxlZ2FjeS10cnVuaworODE1NCA2ZmRhMWU2ZTI2MTZjYjU3YjJhMGEwMWM1MzE4NmExNzNlMDRmYTJhIGxlZ2FjeS10cnVuaworODE1NSA2NGU2MTE2NTU4OWE3OTMxOWFkODk2YWNmNDRjN2EyOTMyYjQ0ZTQ2IGxlZ2FjeS10cnVuaworODE1NiBkNTkxMWNhOGQ0ZWIzYWY0Y2ZjMzRmNmQ3Yzk0OTAzNWY0NjJiMTIyIGxlZ2FjeS10cnVuaworODE1NyAxMmQ2NGNkYmFhYTIzZTJjMzc0MmE1NTA5ZTMyNzA5MzYwYmMwYTA1IGxlZ2FjeS10cnVuaworODE1OCBkODhjYjRkMjZmMTNlZDM4MjU5YzlmZDZiNjcwZWQ5YmY0NjhiMzI2IGxlZ2FjeS10cnVuaworODE1OSBlYTcyYmZlMzk1YmEyMTYxZWU5YTVkNTcwMzNmNmQ2NDMxN2RhODcyIGxlZ2FjeS10cnVuaworODE2MCBjZDFhZTYyZWQyY2ZmYzNiOGFiZTBhZmZjNDgyYzUzYjM0ZjJmZGU4IGxlZ2FjeS10cnVuaworODE2MSBhMDgzMWRlMjM1OGMzMGUyMjgyNDI1MGRkNGIwM2IwNTI5NThiYzc3IGxlZ2FjeS10cnVuaworODE2MiAwOWQ4N2FkNzUyNzg5ODdhOWY1NWNiOWU2YjNhNmFkMDVlYTExNmNkIGxlZ2FjeS10cnVuaworODE2MyAyMDc3YTMyZDg1OGVmNjUyNWNmMmQ2MDMzODE1YjkzNmUwNGZkMjQzIGxlZ2FjeS10cnVuaworODE2NCA4YjdmYWNlOWIxYTc4MmE2OTk5MWE0MGU5MTIyZGYyZTExYjBkZGIwIGxlZ2FjeS10cnVuaworODE2NSBlNzhkMWUwZWNjNTk4N2MyM2M0NzVmM2U2Mjc0YzMzMDU5ZTQ2ZTExIGxlZ2FjeS10cnVuaworODE2NiA1MmMxM2YxMzg5ZWZhZDQ4OTliMTk5MGNlMGRlNGUyNmMwZTc0M2RhIGxlZ2FjeS10cnVuaworODE2NyA0ZTgxN2IyYWQ5OTEwYmM5NjAzNmYyOTU1YjYyNjc3MWE3YTQyYzljIGxlZ2FjeS10cnVuaworODE2OCAzODM4M2FkYTM4OGU5YTAyNDkxZjlmN2U1YTIyZWVlYjRkODY5YWNlIGxlZ2FjeS10cnVuaworODE2OSA0NDI4ZjEwODRiNmM2NzAzOGVhZjk0M2U4YzBhNmRhNzg2OWVlZTI2IGxlZ2FjeS10cnVuaworODE3MCBhOTdmZGUyODE4ZmJlNDBmMzFkNzcwYjBjZmI2YjkyMmMxYTAyODAwIGxlZ2FjeS10cnVuaworODE3MSAwMTA5MDlkZmMzM2UyZTA2YzJmNmNkMGI4NjE2NDNiNTAzNjhhMzNkIGxlZ2FjeS10cnVuaworODE3MiAwMmVhOWQwMjE0Mjc0NzYxZmVkYjI5OGUzNDNjYzczM2MzZTBiYjE1IGxlZ2FjeS10cnVuaworODE3MyA5YjYyMWFjMDkyMTIxYzI1NmNmZjM0NTQxN2ExODdlMThjMGU5MGZlIGxlZ2FjeS10cnVuaworODE3NCA4OGIwYjJhM2FhYjU2YTVhOTk3MmVhMDI1ZmZkYmE5ZWU3MzY3ZjFmIGxlZ2FjeS10cnVuaworODE3NSBiYTg2MGRjMGE1ODUxNGYxNjljODBlMTJlNzRlMjUyNGRlYWFlMzU5IGxlZ2FjeS10cnVuaworODE3NiA3NmZkNTI4MWY5OGE3YjhmODM4ZDM4OWY4OTYwMmEwNTQ2YmQwZjdmIGxlZ2FjeS10cnVuaworODE3NyA2MGZjYTQ3ODM3OTM1NmY4ZDkzZGM0ZjJhMWNlMjI1MWViY2RlNzg3IGxlZ2FjeS10cnVuaworODE3OCAzYTFiYjFjOThjMTQwZThiNDgyNDI5MWYxYzE3MmRlMWYyNmQ1MzI2IGxlZ2FjeS10cnVuaworODE3OSA1NzY2NTcwMzgxZjI0YWU5NzkzMjgwY2U1MTRmZTg0NTExNWRiNWFhIGxlZ2FjeS10cnVuaworODE4MCAwM2RkMWRlZDVjYjNlODY0ZTRmZTMwMGM1ZDcwN2E5YWZiY2JjYzYzIGxlZ2FjeS10cnVuaworODE4MSBjNjYyMzZiN2NjNmNhNGI0YzJjNGJhYjE4YWFlMWNkMjY3ZTBmYmExIGxlZ2FjeS10cnVuaworODE4MiBiYTA5YjQwN2EwYmI5M2Y2NGE1NTY1MGQxYWNjOTg3NjgzYWM5OTkzIGxlZ2FjeS10cnVuaworODE4MyBmOGJiZDcxZmI4MTlhNTQzOWJkNzIxYjk4MDNiNzA0ZjU5MjcyYTEyIGxlZ2FjeS10cnVuaworODE4NCA0MDRiYTAxN2FkNDI3YjgwMDIyMjI1ZTkwNTlhY2E3ODRmNDM0MDMxIGxlZ2FjeS10cnVuaworODE4NSA5OWNkMzlmNmE1MmRiMTMwZGYyODJjMWI3MmY5MmE5ZWFiN2ZkMGE0IGxlZ2FjeS10cnVuaworODE4NiA2NzE4MzI0NzBhYTExMzQ3NmVkNTQwZjJhZjFhZTRlMzg1OGI1OTM2IGxlZ2FjeS10cnVuaworODE4NyBmMWRhMjk0NzcyY2YyYjVmZDlmZTMxNmVjOGVjYjdlZjhiY2U3NGI1IGxlZ2FjeS10cnVuaworODE4OCBmYjE3MGNlODI5NTEyOTM3NGQ0M2MyODliNWM2ZWI3MWVkYmE0YTRjIGxlZ2FjeS10cnVuaworODE4OSA0MzNjOWU3ZWRiNjA4OTA3ZmJkOTM5NzZkNTcxZTBjYThlY2ZmYmE4IGxlZ2FjeS10cnVuaworODE5MCBlY2VlNTViYWFjZTMwODk2ZjFiMmViMWQzZDM3YWJhYzQ5ZjNjMGQxIGxlZ2FjeS10cnVuaworODE5MSBkZWUwYTU4YTkxMzIyMjY4MDhhMzRkYTg1ZGRlYjQxZjEzNmUwMzgwIGxlZ2FjeS10cnVuaworODE5MiAzNzYzNWVlYTNiY2M4Mzk3ZGU0MThhNDJhZjM4N2FjZjhkODNlMWIxIGxlZ2FjeS10cnVuaworODE5MyBjZTY0YTgxMzkyMTY2NjA1NWE5MzBiNTI0OTRiMTExMWI0ZDUzZWFhIGxlZ2FjeS10cnVuaworODE5NCAzYzY3NDM2YTI4ZTYxYjAwYzViZDUwNjQzZjM1OGU0OGU3MjY4NGYzIGxlZ2FjeS10cnVuaworODE5NSA1NWRmZjgxNjljZjU0YzAzMWE4ZDg0NjExODk4Y2EzMzhjMjljZDg0IGxlZ2FjeS10cnVuaworODE5NiAzYjM4ZThkYjVmMjFmZGZlY2Q2NDc0MGU1ODcyZjZlZDNkZmQzOTk5IGxlZ2FjeS10cnVuaworODE5NyA2MTNiZDIzN2NkNTVjNTIxMTRjOWM2MDVhNGFiZjgzZGYyYTc4ZTBiIGxlZ2FjeS10cnVuaworODE5OCAxMzhiMTc2ZWM0MGY0M2M0YzBhNWNjNDQ3ZDY1NTIyNjhhNzZlOTA4IGxlZ2FjeS10cnVuaworODE5OSA2Yzk3MzY4NjU2MDg5MDU1ZDhiYmY1NWEzNjVkMmQ1ZWZkMmFhYTFmIGxlZ2FjeS10cnVuaworODIwMCBiZWVlMzUxZjFmNzJhZWZmNTYxZWRmZjg2NmE5MjgxZmI5ZGE2MTdiIGxlZ2FjeS10cnVuaworODIwMSBmOWFlYTczOGQ0MzUxZWQxNDAxODUwNGYwNjE4ZWU5YzFhMTc1NmNmIGxlZ2FjeS10cnVuaworODIwMiA5YTNiMTE1YWE0OTE5MGVmZmRjMGI3ZTljOWViZTM3NTVkYjBiZjY4IGxlZ2FjeS10cnVuaworODIwMyA1N2E3YmExNDEyZTI2NWViYjMwMjE3NGM0MDkxNmU2NzNmOTkwMmQyIGxlZ2FjeS10cnVuaworODIwNCBlMGRhM2Q4OWQ0YjY1ZmJhYjVkN2NiMzNlYWQwOTEwODExYWYwYWNkIGxlZ2FjeS10cnVuaworODIwNSAwNGMyODI3NGMyODE4MTIwOTgwNDA4NzRmYjNkYjI5OTU5Zjk2YzFhIGxlZ2FjeS10cnVuaworODIwNiA2MTdmMjAzMzk0ZTczZjg1ZWIzMDU4NDhiNTljNDg5YjYxYTc1NTU2IGxlZ2FjeS10cnVuaworODIwNyA5OTYwNzk3NDQ1NjY1ZDYyYmM4OWQ1YzI2NDg0MTczMGY2MzJlMTM0IGxlZ2FjeS10cnVuaworODIwOCA3NTc2MmM2NzIwMGNhZjc3MTQxNmVjNDIyOWM4NWJjZDgxZDcyYzg5IGxlZ2FjeS10cnVuaworODIwOSBmMDI3ZGQwYTg1ZTRlNWVkY2IwYTFkZDA0OWQyMzdlNmIzOTFhNWRmIGxlZ2FjeS10cnVuaworODIxMCA4ZjZjYzcxN2Q4MTdjMDdiZmE3YzczNjRmNmI2MGNmOTlhZGI3ZWI3IGxlZ2FjeS10cnVuaworODIxMSBhOTRiMGExMjJjOTg2OTM4NmQzYmY1Zjg4OGFmNjY3MjBiMWFmNTEyIGxlZ2FjeS10cnVuaworODIxMiA2MzQ3MjhkOGJjOThjZWJiNTdlNTBjOTFiYmUwMTdjMmUzZjlhMGVkIGxlZ2FjeS10cnVuaworODIxMyA0ZGNhNTMyOWU4ZmM2ZGQzNTZlN2ZhNTgxNWQyMDUyYjJmOTRjYTNlIGxlZ2FjeS10cnVuaworODIxNCBkMGM2YjQ5ZDcxMDE4ZTM3NDViMDYwNmVkMWM0MjM0ZmE4NTBiNzk5IGxlZ2FjeS10cnVuaworODIxNSBjMjlmYzE3ZDhlNGZkNDk3ODNiOTllN2I2ZWZjMTNmMTM0OWRjM2JkIGxlZ2FjeS10cnVuaworODIxNiA3MWUxMTA4MmQ3MzIzNTQ3M2YxNTgyYTVmMTJjNjk0YmIxZTA4ZmY4IGxlZ2FjeS10cnVuaworODIxNyA2YTIxOGZhOGJhOWI5ODc0ZDBlZGNlNGJkY2NmODc4ODJhYmE4YWNiIGxlZ2FjeS10cnVuaworODIxOCAxMzg0NjM3OTM0N2RhNTBlODFkNzlhNTdlM2IzMGY4NzJiNGQzY2NkIGxlZ2FjeS10cnVuaworODIxOSA4MjdhMmYzZTY0ODMyYWEwMDdmMmZiZjBmZjhlMjZmOTZhNzkwZTViIGxlZ2FjeS10cnVuaworODIyMCBjNjA2ZGQ2MTU0NGFlMDdiMTk3NzVjNTFkOWUyMmYyOTZkYThiZDQ5IGxlZ2FjeS10cnVuaworODIyMSBlYThhMGIwOTA5MDhiZDRkNjhhZjkxNGFlY2JkZTIxMTE3ODNlMDg0IGxlZ2FjeS10cnVuaworODIyMiBlMjJlZWE1ZDEyNmQ5YjQwODg4YjY0MzAzN2YzZmYzZjQ0YjIwYzY4IGxlZ2FjeS10cnVuaworODIyMyBhYmU4NjM0NDY2YjIzNmMxNWYzOGIzMzQ2OTA4YjRlNjk0OGJjNTkxIGxlZ2FjeS10cnVuaworODIyNCA0OWUwZTA3MmQ5Y2FiNTk3YzlmZmFhOGU3ODI1YjYwYzVkMTY2MDVlIGxlZ2FjeS10cnVuaworODIyNSAxYzM0YTBjZTc4NTg1NzNiMmUzMDcwOGJjY2Y3NmEyOWQ4YjYyZTllIGxlZ2FjeS10cnVuaworODIyNiAyMGU2Mzk5ODZmYjliYjJkM2FkYmZhNzFjMTgwY2IwZDRmZTgxODA3IGxlZ2FjeS10cnVuaworODIyNyA1YTc0MjlhYzkwYzgzYjFiYjE0M2U5YzViMzYxMTM4ZTc4OTBjNzQxIGxlZ2FjeS10cnVuaworODIyOCA4N2Q2NThhMTI4ZjkxYjVjNjgyYzE2ZTJhNjUwYTdlOTA0YmIzZDcyIGxlZ2FjeS10cnVuaworODIyOSBmYTZkMDEzYzk0MmIwNzc1YTdiYWUyNDAxZjgyZmI5YzM0NjVjZjgzIGxlZ2FjeS10cnVuaworODIzMCA2NGJjNzgyYTQyZWM3MzE1OWFlYWYwN2I0M2QwOGM1Yzg1YTAwNTU1IGxlZ2FjeS10cnVuaworODIzMSA5ZWQyNmFmZWVhYTUyZmNiMTY1OGFkMDIzNmU5NDA2ZTU5MmNjMjViIGxlZ2FjeS10cnVuaworODIzMiAxOGE2MzlkYjA0OGM3OTkwYWQ3NWE0NTYyMjUwZDc0ZjVjNTdjZTk1IGxlZ2FjeS10cnVuaworODIzMyA0YjQyZWVhMTBhMDI5ZTYzM2ZiOGUzNjc4MTljM2Q2N2ExMmM4Y2I5IGxlZ2FjeS10cnVuaworODIzNCA4YzBmNzQ3ZjExNDE5YWNmZGFkZmZiMjQxNmNmYjYzNmI0MTBmZTQ3IGxlZ2FjeS10cnVuaworODIzNSBiZmU5YmE3NGMxOWVkNzZlZDc4YTMwMjdlZjJiZjNjZmNjNjY5YzY4IGxlZ2FjeS10cnVuaworODIzNiA5MTkzODZmYjNlNTA0MzMyMjc1N2JhYjkwMzUyNzI2NTFlZjc3NDJlIGxlZ2FjeS10cnVuaworODIzNyAyMDFjOGQwNmUzYjc4Njc1MTlmYjM3ZmQ4MTc2YmJlZWQ2MDkyMDI4IGxlZ2FjeS10cnVuaworODIzOCBhOGUzMWQ5MDVkMmMwZmU5NzZmMDJkMzVlMzQ3MzI5M2E1ZTQwOWJhIGxlZ2FjeS10cnVuaworODIzOSA3OWJiOTk5N2NlNWZhYTBiNzg2ZDQ2M2U4M2ExZWQ5ZTRmYTkwMDAzIGxlZ2FjeS10cnVuaworODI0MCBmZDRlOWYyOTNjNzdhOGE4NGU0ZmI4NDMyYmYzNTYzNmQ2YmZiNGIzIGxlZ2FjeS10cnVuaworODI0MSA2MmZlODAwZDE3MWE3ODBjMGUwNTE5OWQ2ZDJjZDlkOTVjMzEzYjgxIGxlZ2FjeS10cnVuaworODI0MiBkNjQyMWIzZWQxZGE2NWI0ODkwMWEzNjAxYWJiMDI1OTc2YTNkNzc2IGxlZ2FjeS10cnVuaworODI0MyAzMDlhYWI0YzBiOThlNTc0NDVhZDk3N2ViYmE3ZjJmZmJlYjQwMTk3IGxlZ2FjeS10cnVuaworODI0NCAwM2E1N2FmNzIyMTg5Y2JmYTdkZmM5MDk3YmE2ZmQ0ZmZmMzkzZDJhIGxlZ2FjeS10cnVuaworODI0NSA3ZGU1OWY0N2U4NWI5Y2FkZjE3Nzk5ZGVkZDE0MWIwODA0NGYxNTI1IGxlZ2FjeS10cnVuaworODI0NiBiNzY0OTQ5MWFlOTI0NmE0ZGVjZjM5NTYxZDM2MzVkNmY0MDIwYmQ4IGxlZ2FjeS10cnVuaworODI0NyAzOGVmMDkxOTY0ZjAyMmZhM2ViOTVlZTQ1OGYxOTgzMTFjYzQ4ZGU2IGxlZ2FjeS10cnVuaworODI0OCBmYjhmMDc5ZTRlZmY4NmY2NTk1YzhkZGY3M2E4MjQ0Y2IxYWI0NDAyIGxlZ2FjeS10cnVuaworODI0OSA1ZjdkZGI3Y2EzNDdjZjhmMDVlMGI5NDVlNWNlNmM1ZGM4YzcwMDExIGxlZ2FjeS10cnVuaworODI1MCA3ODMxOTIyMWVkYjJmMjhjZGFkZDFiY2QyZjE4ZDhlNmY2NGJkYjUxIGxlZ2FjeS10cnVuaworODI1MSAzZWYyNTYzZTgzZWUzOTA5MGFjZDYxMmIxN2I3Zjg2MjI3ZDgxNmViIGxlZ2FjeS10cnVuaworODI1MiBjNjBiZWI1NjI1ZTcwMTY1Zjk3OGRhZDNjMWIzMDA5OGIyODg0YWNiIGxlZ2FjeS10cnVuaworODI1MyBmNmRlMDUwMDU1NzY5NWFhNzE4ZmRmMGU3MzIzOWQzODVlNmM4M2U4IGxlZ2FjeS10cnVuaworODI1NCBiNDQ5Y2Q4NWQ1MTk3MTk5M2YwZjBkMGY3YzM2NmE3NDBlMTE5Y2NmIGxlZ2FjeS10cnVuaworODI1NSAwNDlkOTRmZmMwNmEwMTI2N2JlMjE1N2ZlM2UyOTRmYzRiZDExMDEyIGxlZ2FjeS10cnVuaworODI1NiAzNDI4NDg3YjI5YTM4NWM5NjI2MTBhMTJhMWZkOGUwN2M0M2YwMWMwIGxlZ2FjeS10cnVuaworODI1NyBiYjBhY2ZkNGI3MjBhZmQ3YTA1MWYwZjQ4NDA1OGI2MmU5NWVhNTVmIGxlZ2FjeS10cnVuaworODI1OCAzYjhkMDA0MDNkYjg1ZGMzNzczM2VhYTczZTAyODU3MzBlM2NiNjc4IGxlZ2FjeS10cnVuaworODI1OSBiODNlY2Y2Zjg3MzAwYzFiNDc3MjEzYzJiYzkzNjQxNjI0YjM2NWM3IGxlZ2FjeS10cnVuaworODI2MCA5Y2ZiYzliYjY0MjNiMDhiYjhhZjQ1YmJmMWRjOGVlNmNiODE2NTAxIGxlZ2FjeS10cnVuaworODI2MSBjMDQzOTAxZmExZmViY2JmYTI0Y2M3ZDAzZDU2YmVlOTlkZGNmYThmIGxlZ2FjeS10cnVuaworODI2MiBiMjQ3Mjk3YmU5YTAyNWVjNjRiNTUwMjZjODExMjNlMTBhMzU5YWU3IGxlZ2FjeS10cnVuaworODI2MyBjNTY5ODczZWViMTVkODJmMWJlYjQ4NzdmZDhjNzcyODYzOTZjZmEzIGxlZ2FjeS10cnVuaworODI2NCBiNDIwYjY0YTQwOTY3YmY3NTVmNzMwNGQwODVlOGUyNjliZGQzNzRiIGxlZ2FjeS10cnVuaworODI2NSAzMWNhZTM3NGY3ODY1Njc3MzFjZmJhZGZmNzA3OWU5ZTM1ZGQ1ZWE1IGxlZ2FjeS10cnVuaworODI2NiA4OGU2YWUxMDVhYjU4MTBlZjhjMjkxNzg4YzZmMGM5ZjI3MGI0N2E0IGxlZ2FjeS10cnVuaworODI2NyAxZDQxN2U5YzcyY2ZhYzdiNjNjNmU5YmRhZDEyYTAzYTE5ZGJmNmEyIGxlZ2FjeS10cnVuaworODI2OCAyYjczNzJlY2Q1MDcyYjBhNGJiMWFmNWJjY2NiMmIwNTBjMGMwOGZjIGxlZ2FjeS10cnVuaworODI2OSBkZmZhYmM2MjBlNGU0NmQwMThkYjVkMzZiNzA4MjdiMWQ2YTU1ODlmIGxlZ2FjeS10cnVuaworODI3MCA0Y2U3ODI3YTM2MjE3YjY0OGY3MTQ0MjNhOWYwNGI4NTc0MGExNmI2IGxlZ2FjeS10cnVuaworODI3MSBkNzljNGZiYjE5ODJhMWUzMzYyZDkzNThmYmNlNzM4YWIwNWIxNGE1IGxlZ2FjeS10cnVuaworODI3MiAzZDFkODA1NTA4N2ZiNzgzZDNiOGI4NjM1MGQ5NWZjMGI2OTA4MDA4IGxlZ2FjeS10cnVuaworODI3MyA3M2NmNTgyNjFiODIzNDgxMzMzMmZkMGY5NDFhMzRkMzk5NTg0NmZjIGxlZ2FjeS10cnVuaworODI3NCBkNjg5ZDJjNGY4NDIwYjAxOTU5NWNmNWMzMjkxYzNkM2E1NDgyZDEyIGxlZ2FjeS10cnVuaworODI3NSAyNGE4YzU2ZGUyMTQ0NGViZjJhZWQ5NGNmNzhmMTQwNmQ4MGIyYjk4IGxlZ2FjeS10cnVuaworODI3NiBlODYyZDliMDAyNDZhYmQ3YzZjNDQ5MDg0YjFhZDFmYzMzNDZhNDc0IGxlZ2FjeS10cnVuaworODI3NyA3ZThlZDk2NTBmY2MxMThjNzM3ODBjZTI0ODc3ODY4ZWQ0M2IyNDBhIGxlZ2FjeS10cnVuaworODI3OCBmZTNlN2EwNTU4MzQzNjkwMWFiMTA1NDY4ZmJjZmY5NDQ5YmEzMjYxIGxlZ2FjeS10cnVuaworODI3OSBlNDIzOTFkNjc2ZDEyZDA2ZWI5MjRiZWU3MTJiODRiMDBkZTYyOTAzIGxlZ2FjeS10cnVuaworODI4MCBiNTZkNTI3YTQzM2Y1YTUwNTc5Mjg1NWMwOWNkYTZkN2Y4OGU0YTIzIGxlZ2FjeS10cnVuaworODI4MSBiN2M2MDBlY2MyN2Q0MjAwZTMxYWQ4YmI5ZGZhYzMwYWY0YmNkZTVlIGxlZ2FjeS10cnVuaworODI4MiA1MThkNGYwYzhmY2M0OTgwMjc2MDE4MmE5MDNhNGE4NzNjY2VmOWNjIGxlZ2FjeS10cnVuaworODI4MyA1YTlmM2MyMDczMzY2OWY1YzBiNGFlOWU0N2ZjMjA4YjkwZWUyM2VkIGxlZ2FjeS10cnVuaworODI4NCA1MDgwM2NhNThiMWY5MWUyNWM5YzcyYTY4YzI3NjBhNGYyYzdlNTc3IGxlZ2FjeS10cnVuaworODI4NSBkZmZkMjIxNDZhYWI4Y2NjZjhhMzZjMTQ5ZDZiMzA3ZDhiNjg2MzE3IGxlZ2FjeS10cnVuaworODI4NiA1MTIwZWE4NmIyNWQ2ZDExYWVlYzg1NGM2NDg4MTZjNjY1NWVjMmYxIGxlZ2FjeS10cnVuaworODI4NyA2ZDQwZWJkOTIyMjc5MzAyMjA5OWI5MmYwMTQwN2Y0MzU4ZGZjZjJiIGxlZ2FjeS10cnVuaworODI4OCA1OGFlYjg3MmQ5MTUwZDAwMjE4NTNlOTRjYzJiODE4NjU4NTAzM2QyIGxlZ2FjeS10cnVuaworODI4OSBmNTNkMzYzZWY2N2E5ZWEyOGIzOTlkNWM2MjI5MmIyOWVlMWYxMzI0IGxlZ2FjeS10cnVuaworODI5MCBkMzIwY2E4NDM1MTIyMjQwMjdiNzMzYzI3MThkMDUyMjVhMjVhYmQxIGxlZ2FjeS10cnVuaworODI5MSA1NWVhNTZlZTIwZjZiZDU2NjQzNzEyZDdhODA0MDJmOGNjNGEyMmExIGxlZ2FjeS10cnVuaworODI5MiBkOGE0ZjBkOTIyMWYwNzViMTYwMWY1MzEzYTMxZjRmYWRkMjU2ODM0IGxlZ2FjeS10cnVuaworODI5MyA2YTBkN2NmMTlkMzhmYWM1N2I5Yjk0YjY3OTc4MjFjMTk3Njg4YTEwIGxlZ2FjeS10cnVuaworODI5NCA0OGI5NGRlODViZjM1ZjI0NDJlYTU0OGE3YjRlMzU0NWZkNjg2YWM3IGxlZ2FjeS10cnVuaworODI5NSAzNDY4ZWE4NjQ1Y2E0MjM4YzJiNDUwMjQzNTFlNWUwZmFlNWQxYmM0IGxlZ2FjeS10cnVuaworODI5NiAwYWU4YzdkMzM0NjRlZTBjN2EzYzMwYjE4OTE0Nzc5ZDA1MTIzNTM4IGxlZ2FjeS10cnVuaworODI5NyA5MWRkOWQ3NGYzYjNjYjA2YWUwYjE3NjBjNzEzZjFlYzA4ZmE4MjkyIGxlZ2FjeS10cnVuaworODI5OCA3ODMyMWE4NGQ3M2U1Y2QzN2QxNzVmOTk1ZGYyNmFhN2M2OGQxNDhlIGxlZ2FjeS10cnVuaworODI5OSBkM2YyZGY4YzIyODZjMDVlYjg1MWRhYzMwZDlkYzM2ZDEwYWE3NDc4IGxlZ2FjeS10cnVuaworODMwMCBhZDA0ZDM4N2FjZWVlZTgxY2VlYzI2YzI5ZTAwOThkZWZlNjk4NzFmIGxlZ2FjeS10cnVuaworODMwMSAzYzE1YWUwZmI2YWQ3ODU1YjA0MDY0YmViYzdlZjdiODlmYjVhYWNhIGxlZ2FjeS10cnVuaworODMwMiAwYzMzNjEyZjExZDZiMTYyNzhmMzliNWFiMjhhYWFlMDUyMWJhNzlhIGxlZ2FjeS10cnVuaworODMwMyAwOTY1ZDlmZDE4NjJkZDIzMzdlZjg0ZmNhYWU5NWE2NTI1ODk2OThkIGxlZ2FjeS10cnVuaworODMwNCBhNzlkMGNlZjEwYTE5ZmRkMDRkZGM5NjczNmZiNGM4OTI5YmI5ZmM4IGxlZ2FjeS10cnVuaworODMwNSA5ZmEyYmQ4YTJiNzhhNTI2ZDgwMjliNTUwNGMyMjFjNTQ0YmJmZGVhIGxlZ2FjeS10cnVuaworODMwNiBmMTEyN2Q2ZmNkNzQyNDU0MjA1MzExMGViMjRiMzFhMTEyMjEwYTJjIGxlZ2FjeS10cnVuaworODMwNyAyMjZiY2E4NTg0NmY0MThmOTU5OTMxMmU2NGIzZTdiNGI2YTIyZTUzIGxlZ2FjeS10cnVuaworODMwOCA5ODViN2JmNDc1NWI2Y2ZlOTFhNDEyOTJmYTFmM2NhMDVmMzgwZWYyIGxlZ2FjeS10cnVuaworODMwOSAyODVmYjZhOTllNWY4NWY1NzdiZDExYWY2NTIwODYyMzY1MTU4ZGM3IGxlZ2FjeS10cnVuaworODMxMCA4NmMyNzlhODQ4ZWIyZDUwMTYxMzk0ZDEzN2UxN2E2MzVhYWRlMjY1IGxlZ2FjeS10cnVuaworODMxMSA5MWFlYTFhZjY1NGZmMTU4ZjExMDg5ZWYxYWIyNDY3MTAyMjNhNTFhIGxlZ2FjeS10cnVuaworODMxMiBiOTA2M2Y2ZjgxMWNiZmI5OGU0ODRmOTBkNTVkMzQzMzNhOTJiYjVkIGxlZ2FjeS10cnVuaworODMxMyAzYTc5ODY3NzUwNmNmMDY3NTg2ZmI5MWVjZWRjMDBjN2JiOGVkNTVkIGxlZ2FjeS10cnVuaworODMxNCAyZTkxN2Y5MzcyZTAzYTU0ZDcwODg3YTcxZjcxNDM3YTkyNzU5MjY4IGxlZ2FjeS10cnVuaworODMxNSBlZDVkYjBjMmEzZjM0NDE3MTk2YzEyOGUwYTIzM2VhZmJiYzYxYmU0IGxlZ2FjeS10cnVuaworODMxNiAxNzg2Y2M0MTk4ODZlYTY2YTE2YzNjNDBmM2U2Zjc2MjMwM2NlYzE2IGxlZ2FjeS10cnVuaworODMxNyA5ZjhmZjAyZWRlNmRlZWI1ZDY3NzA2NDFmODhlODZmY2I5MmE4OWExIGxlZ2FjeS10cnVuaworODMxOCBlMTY5OTRmM2QxMDJhYzZhZmQ5NzBjZDI4MGY0NzRjNDU5NGM2ZjVjIGxlZ2FjeS10cnVuaworODMxOSAzNWIxNGQ3OGM2MWQ5NDMyZDc1NTMwZDEyZGQ0OTMwNGM3MDYwYTRjIGxlZ2FjeS10cnVuaworODMyMCA1YThhNWExYTA0NzU3ZjYwZGI2YjBiYjYwYjU2OTY5YTc1YzMxYmQ5IGxlZ2FjeS10cnVuaworODMyMSA1OTYxZjEyYWU0MjY1ODZhMDBhNjg3NGU1ZmU3ZGE1YjAxODAxOWNlIGxlZ2FjeS10cnVuaworODMyMiA2ZTk5Njg2Yjc2ZGEwY2UyZjVkOGYwZGViYzcyZjVhY2VhZjNlNjM5IGxlZ2FjeS10cnVuaworODMyMyA4NTJhMWZhNjJhN2M0ZjZlMWZkNTE1OGQwMzM2YzEzNzY3NTMyZjNiIGxlZ2FjeS10cnVuaworODMyNCBmZjljMDExMDA3OWI3ZTQ2MjEwNDBlMTQ1NjdkNjdjNGU0YzRkNmJhIGxlZ2FjeS10cnVuaworODMyNSBmNjRhNWY3NTA2OTY2MDM5ODExNTc1YTEwZTk2YTM1NTRmYjY1MDRkIGxlZ2FjeS10cnVuaworODMyNiAwZDc4NTFiMzdhZDJkMTMwYjk3MTE2MGZkMjI3OThkMjM4OWNiNzJjIGxlZ2FjeS10cnVuaworODMyNyA2ZjY3YTFiZGExNWEyMThiMWViNTA2MjdjMmJlNDYzYWJjOWI4MDRmIGxlZ2FjeS10cnVuaworODMyOCBlZGFmMWNiNjNkYzBjODlmMzJmNWVmMTA4YjMwZjNjMTQzNDQyNDJhIGxlZ2FjeS10cnVuaworODMyOSA0YTQ3NzhlNjFjMTRlYjE5YjQ3OWI3M2FlMmQ5ODQ1YTQyNGVjN2EwIGxlZ2FjeS10cnVuaworODMzMCA5MmJjZjRjYzk0MjExOWFlOWM3YTcyZWM5OWM5YTlkODdkZmJjZDA1IGxlZ2FjeS10cnVuaworODMzMSAzNThkNzA4ODJhZjYyOWE3MDdjZWQ0MTNkYTRkZmUzMTU2ZDU2M2FkIGxlZ2FjeS10cnVuaworODMzMiBmZGQ4Y2VhMTgxYzA5OTRjZjg2N2VlYWQ0NmMwODVhZmRjNDkwZmI2IGxlZ2FjeS10cnVuaworODMzMyBjNGRkMzMyOWZkN2QwNDRhZDYwYTVlYjk0ZmIxNmE3Mjk2ODdiNzRmIGxlZ2FjeS10cnVuaworODMzNCBhNjY3ZDQ4ZTY4Yjg1Njk3MjIyZmM4NTU5YzRhNzhiNmQ2Y2M0ZjJjIGxlZ2FjeS10cnVuaworODMzNSBmNWY3YzczOTU2ODc2MGViYTUxZGRmYjMwODQwZTZkYTIxNTYxMzlhIGxlZ2FjeS10cnVuaworODMzNiA2NGY5Y2U5OTk0MzdiZDkyODJjMzg5NzMzZGZkZWJmOWYxYjAxOGRlIGxlZ2FjeS10cnVuaworODMzNyA3MjhhMDgzMjQyYTJhNmU3MDhlYTJiZDY0Zjk1ODU0NzE5NTc3ZDAyIGxlZ2FjeS10cnVuaworODMzOCAzMjNmNmExNmE3NjQyY2YxNjJiMDQ5ZWYxYmJhNTVmMmQ2MmRkYjA2IGxlZ2FjeS10cnVuaworODMzOSA0ZGJiNGVjNDRkMTUwZTYyMjlhYzhjZjdlZDNlMzRkMTExYzlkODcyIGxlZ2FjeS10cnVuaworODM0MCAwYWMyYzc0NzA1M2ZkYjc0Zjg4YjRhNDgxNjQwMWU1NDBhNzYzMjc5IGxlZ2FjeS10cnVuaworODM0MSA4NzUxN2U4ZWE1MTkxYjViZDI3MDAxZjlhZDllMTU4NTI3MDQwMmNkIGxlZ2FjeS10cnVuaworODM0MiA5ODQxYmNlMzdjNGQ2MzliOTU3NDlkN2Q3YTY5ODY2ZDFmNGZjOTJiIGxlZ2FjeS10cnVuaworODM0MyBmMWMwMzI3Njg3M2E2MGI0NTIxMmQ3NTVjOTQ5NTdlYjU4ZjNhNGRmIGxlZ2FjeS10cnVuaworODM0NCA5NzgzN2U2NGM1OGM1MmMyOTdkZjJlOWViMzQ3YmZiZDZkNjRmZjM2IGxlZ2FjeS10cnVuaworODM0NSBlNzQyZTQxYTRiMTFiZWZjNjdkMDg5YzA4ODc1OGZmYWE0YjZmNzYzIGxlZ2FjeS10cnVuaworODM0NiBmMmJmN2JjZjhiOGI2N2VjZDE4Njg5YjI4NDdiNzA3OGM5MzZlMWQzIGxlZ2FjeS10cnVuaworODM0NyBmZTRmMWViMTRkNTNmMGI0ZjA2OWZmYTY0ZDIyMzgzZGRlMzk3ODM1IGxlZ2FjeS10cnVuaworODM0OCBlZDkxY2I3ZDM4NzYxOTI4YmJjNmRjZWRjMjJhYmFmZDA0OTFkZDg1IGxlZ2FjeS10cnVuaworODM0OSBkZDBlOWI2NDY2MTY4NTUyOGE5YzI3ZWRkZDU4YTYwYTI3MDgwYWNlIGxlZ2FjeS10cnVuaworODM1MCBjOGE4Y2Y5NTgxMWMzOGNmMjc2NDNjYzc1MzUyZjY3NjliY2NkOWZiIGxlZ2FjeS10cnVuaworODM1MSBjNjdhZDViY2Q0YjIwMjNlM2YwODFlMjAxNzIwOTk4ZWUyMmIxNGNiIGxlZ2FjeS10cnVuaworODM1MiBkMjQwODUxY2M4YzU3NzVmYjUyOGYyOTAwOGM4OTcwNmUzYzcyMjc0IGxlZ2FjeS10cnVuaworODM1MyBhMmQzYzJhNjJhMzBhMzE4YjE0NzE0OGI1NGJjMGU3YmZjMzY2NGE0IGxlZ2FjeS10cnVuaworODM1NCAwNTM0ZTU0ZTgxMDYyYzgwNTY5M2U1Y2FkZDczMDhlZjQ0ZWQ4ZTcwIGxlZ2FjeS10cnVuaworODM1NSA2OGY3MzEyYTMxZjYyOWFkOTkwNzczN2E3MDMwYmM4ODc3YmUzOTBhIGxlZ2FjeS10cnVuaworODM1NiBhNzc1YTQ0MTI0ZDhiMGMyYTU4YTBkMmEwZjYxNmQyYmEzOWI4YmZhIGxlZ2FjeS10cnVuaworODM1NyA1MzBkZGI3MDc2OTVlN2ZjMTczZDA3NGYwNTIwMmZkODM3NmVkM2YzIGxlZ2FjeS10cnVuaworODM1OCBhMTAxYTE3YjhiN2I4YzdjYjYxODhhMzYyNzI5ZTQ5ZjhiMmUwYmQ0IGxlZ2FjeS10cnVuaworODM1OSBkNjUxM2RhOTI0OWQzOTdkMDRjNzcyYTg2YTNjNzAzMjRmMzllOGEyIGxlZ2FjeS10cnVuaworODM2MCA3OWQxOTMxZjE3MjI5ZWVjZjdkODM5MzM2NjRhZjQ1OWQ3NGUwMWNhIGxlZ2FjeS10cnVuaworODM2MSBiNTcxYjZlZTdmMTdlMzc4ZDE2MmIyYjNkYmViNGE0ZWYxMTI4OGMzIGxlZ2FjeS10cnVuaworODM2MiA3NmIxZGEyMWYzYTg5ODFkMDJiMmY1ZWQxY2YwNmEzMGJiNTYyOGI2IGxlZ2FjeS10cnVuaworODM2MyA0YzUyYTFiNmE1NGQ2MmE2MzNlNTgwYmJmNWIwMTAxMDUyYzg5ZjU0IGxlZ2FjeS10cnVuaworODM2NCAyYTE3MmI0OTUwYjZhNmMwMjI5MTdiMTg3MzY1NTBmM2Q2NThhMjYyIGxlZ2FjeS10cnVuaworODM2NSAwY2Q3NGY5MTg5YzZhN2M5ZmQxNDA3Zjc1ZWRiMjBlMzk4YTlmYzBiIGxlZ2FjeS10cnVuaworODM2NiBjZGQxMjVkZTc1YmY2ZjYyMDIxYmI4YjZhMTI0N2YxYjEyYmZhNWNkIGxlZ2FjeS10cnVuaworODM2NyBmMzM0MmIzODE5MzVhNDY0OTliNjBlNzcxYjU0NGY2NTk1OGQ0MjkwIGxlZ2FjeS10cnVuaworODM2OCBjNGQ1NDdjMDFlOTM0ZWQ4NWQ1MmYwNTdmZmU2MWM1Y2Q0OTgzODQ4IGxlZ2FjeS10cnVuaworODM2OSBiOTZjY2M3ODEyZjJmMDgzYmE4YzNiMjYzOTMzNzM2ZTZhOGMyM2RiIGxlZ2FjeS10cnVuaworODM3MCBjNTc5YjlmOThhNWE3MTU2MDUyNjg5MTFiYzEwYmMwNTY4ZGU1YzMxIGxlZ2FjeS10cnVuaworODM3MSBlMmRmOTViN2JlNzg5YTI0ZWZjYzBmODdlMjMwMjY0MDRjYmFlYmViIGxlZ2FjeS10cnVuaworODM3MiA0NmNkMzUyYzc2Mzg5ZmQyMjkyYzRjZjBiOWUyNmY0YTM0MmU3ODA1IGxlZ2FjeS10cnVuaworODM3MyA2NzAyMmQyOGE2NWQyZGZlOGE5ZmEyMmM3M2UyYzA0Njg0ODQxNWExIGxlZ2FjeS10cnVuaworODM3NCA3ZDM1YTA1ODAzNTZlYmRjZDYwZWI0M2ZlNWIwNTQ4YWM3MjFlZmJmIGxlZ2FjeS10cnVuaworODM3NSAyNTMzNzdhNDA2NDQ4NDc1NTk5Y2UwMjcwYThkYzUwMDkyN2MwYmRiIGxlZ2FjeS10cnVuaworODM3NiBmODJiNjA4YWZiNTY4ZGY2YjA0ODZiNzQ0MjRhMDk5MTI5MmQ3MzEyIGxlZ2FjeS10cnVuaworODM3NyA0NjY2NjRhZDM4ZTRjZWYxOTFmODRhMWMyYzczOGMxZWY0ODUwMTlmIGxlZ2FjeS10cnVuaworODM3OCBiYTQ5YTZlZjcyMTRmN2YwNGExNDM1YzU3Mjc0YmMyZGExNzZiZmEwIGxlZ2FjeS10cnVuaworODM3OSA0MTAyZjQ0NzIwMzI5YjA2ZDIzYWVmYWZiNTM3ODAwYzRlNDMwYzExIGxlZ2FjeS10cnVuaworODM4MCBiNmU0OGE0Y2RkMWU2OGIyOTgyZTZhMWEyMjE2YjkwYzU0N2FmN2I4IGxlZ2FjeS10cnVuaworODM4MSBjNTBjYzI4YWY3Yzc5ZjkwNGY0Y2ZhMWUyZGYwYzcxOTYxMGE3YjkyIGxlZ2FjeS10cnVuaworODM4MiBjMjQyMzg0M2EyNmY3MTVlYzI0YjdmYzQwNzg2ZDQzYWU0YmFmNjgwIGxlZ2FjeS10cnVuaworODM4MyBmMzQ0NjA5YTQ4ZTRlYTk2ZDM0MGNjN2E3NWI5Yzc4Y2YxMjY3YmNlIGxlZ2FjeS10cnVuaworODM4NCBhZjkyY2ZmZDA2M2Y1M2MwOTk0MGFiZDQ0MWVlNWI0MjVkM2MxZTJhIGxlZ2FjeS10cnVuaworODM4NSA0ZGQ5ZWExZTk0YTg4MDFjOTVlY2Q4NGU2NzdjNTE1OGNhYmQyYzM4IGxlZ2FjeS10cnVuaworODM4NiBmODI1OWNhOWVlZDM3Yzk5ZTNhNmExZTI2ZGRkNTAyNTgzOWFkMGE3IGxlZ2FjeS10cnVuaworODM4NyA4OTc3MWE0NmNhMzU0ZDUxN2I2YmIyNjM5ZGI3M2RhMjQ3OWNiNDBjIGxlZ2FjeS10cnVuaworODM4OCA2OTg2NzgxYTA3ZWYwZGMxNDM4MGYxYWQwNmRiYWQwM2E2N2U1NDVkIGxlZ2FjeS10cnVuaworODM4OSBmNTI3YzEyZjJlNTUyOGU1YWY0Y2IzNTBkZDY0ZGQwNjk4ZThmZTk2IGxlZ2FjeS10cnVuaworODM5MCA2YjM5Zjg2MzNjYTU0N2ExZDg3MjQ3NDc3YWY0ZWI2MjMzM2ViMGViIGxlZ2FjeS10cnVuaworODM5MSA1MTU1YjJjMzVlMTU5ZjU5ZGQxNzUxMzRiZDA0MjM4MmE4MWMyZTM1IGxlZ2FjeS10cnVuaworODM5MiBkYjljZmIxMDg2MjNjMjVhZGU1MTg4NzE0MWNlY2MzYTZhOGY0YjYwIGxlZ2FjeS10cnVuaworODM5MyBkMmM4MDM4MGFkMGRlNzQyM2RjNmZlNWQ0MWRiYzc5ZDZmNWEzZDMxIGxlZ2FjeS10cnVuaworODM5NCAwNGExYjgyYzgzMmIxYTdlMTdmOTNlMzFhOWFiNTU2NmJlYTg0ZGU3IGxlZ2FjeS10cnVuaworODM5NSA3ODBiNjhkZjQ1NjA3NzRmNWI4ZmY1NjZiZGFkMjUyNWJiODI0NDJkIGxlZ2FjeS10cnVuaworODM5NiA1ZGExOGUwMDJiMWE4ZmU4NWJhNWE5NTU4YzFjMThmODRhOGNiNzRmIGxlZ2FjeS10cnVuaworODM5NyA1ZmIzMDQxM2I5M2IyMTlmODAxNTkzMGRjMmRlYzY5Mjk2MTViMDA5IGxlZ2FjeS10cnVuaworODM5OCA4MDBhNTIxN2U2N2U3ODY5YmRhZTVkNWUxMTU2ZGJlOGQ5YzYwMTA4IGxlZ2FjeS10cnVuaworODM5OSA0NGRkYzcxMWVlMmRjOGMxMmQ0YTc1YThkMmRjYTVmNDRkY2MwYTExIGxlZ2FjeS10cnVuaworODQwMCAzZTE1OGU2OWFjNWQ5MWMxY2EzNGFkMDBkMDBjM2FlZjQyYTdmMWNiIGxlZ2FjeS10cnVuaworODQwMSAwOGIxZTlkODQ3ZTZiNTk5NTlhMmRmYzljZWI2YzFjYmVhYjIxMjczIGxlZ2FjeS10cnVuaworODQwMiA5MzMwNGIyZTE0Y2IzNjg3OWNmNjMxNGJhZGZlNDc0ZTFhZjBmZmYyIGxlZ2FjeS10cnVuaworODQwMyA4ZDIxOTRlMjJlNjczOWNkOTY2MjU0YTRmZTgyYTBiYTY0OWE2NjIxIGxlZ2FjeS10cnVuaworODQwNCA2M2JjOTI4OWFiMjgyOTM5ODVkMDRhZDYyMzk2ZDkxZmViOGRhYWJlIGxlZ2FjeS10cnVuaworODQwNSBjYTI0NWMzNmM2ZjZmODQ4Mjg2MzI5MTQ4YmU5ZjRiMDBhYTQwZjU0IGxlZ2FjeS10cnVuaworODQwNiBiM2M5MTM3NDY5MDBlMTYxY2FhMzc0NmIxYThkZTRiYjcxODExYTI1IGxlZ2FjeS10cnVuaworODQwNyBlMmNjZTRhZGYyYTcwMjllYmU4MGQ3ZDk3MmVmNDA3ZGJhMGRhZDNmIGxlZ2FjeS10cnVuaworODQwOCAxMmZlNWNjMTUxNmQwODJkMGQyN2E2YzgxYmMwMzdkZGMyZDU3MTBiIGxlZ2FjeS10cnVuaworODQwOSA0MGNmYzkwNWM3NzY5NmFjOGIxZTEyYzZlZWM4M2FhM2EzNjk4MDA4IGxlZ2FjeS10cnVuaworODQxMCBiMjEwZDIwNTk4MTIxNmRlZGQ0NWQzYThhMzFmMjE5MTNjZTgxNWIzIGxlZ2FjeS10cnVuaworODQxMSAwMzY5ZDYzYjEwMGIxZjRiYjgwNzZkYjkxZGYxOTBkODk2Mjc1ZDk3IGxlZ2FjeS10cnVuaworODQxMiBkNzdkM2I4ZTg2YjI1YTg5MjA3YTdkMjRlZDMzYTBlNWY2NzQyNTdhIGxlZ2FjeS10cnVuaworODQxMyA4MGQyNDM2NGI5MzI1ZWI2MjZhMWM0ZTM2OGI1MGEwZDA3ZTc3NDdmIGxlZ2FjeS10cnVuaworODQxNCA1YTRkMTgxZmZmZmRmNTczMGNiYjJhMjgzMTdjMzgxM2E5NGUzMDlhIGxlZ2FjeS10cnVuaworODQxNSAyMjJmYWViNDNkMDIwYzk0NmFjNzhjZDlkNzU5ZWE2YWFlYzM3M2I5IGxlZ2FjeS10cnVuaworODQxNiAyYzY1YmI2YWI4N2NkOWJiNjlmM2UzZTQ5YzYyM2I0ZTIzNjIyNWM3IGxlZ2FjeS10cnVuaworODQxNyBlZWY3NmIzY2Q5YWVmM2MyMjcyMmQ3ZmIzMGQ4MzA1YzQ0ODIwMzYzIGxlZ2FjeS10cnVuaworODQxOCBmN2ZjODhmY2ZmYTI0NmIzYjI0NjMxNmNkNDI2ZDM0YjAzNmYxY2U5IGxlZ2FjeS10cnVuaworODQxOSBjMTE5MjhkMjU5N2JkZGM2ZDIzMTJmZjE1NjVjNmQ1MDQ3MzdiNzJkIGxlZ2FjeS10cnVuaworODQyMCBhYzg3N2M0NzY4ZTFjYWJmOWEyNDE0MDA5NjU1NTNhYjBhZmJjOWNkIGxlZ2FjeS10cnVuaworODQyMSAxYmQ2OGU0NDY0Y2UyZmM1NDFlOTJjN2U1Y2UzYmQwMDAxNmE5OTEzIGxlZ2FjeS10cnVuaworODQyMiA3NWIzYWFiY2I3YzEwMDkxOTc2OGM0OWM4MjQzOGIyOGIyNWFmZWQ1IGxlZ2FjeS10cnVuaworODQyMyA5YTU2NDUyYzdlOGU5MjMxM2Y3OWQ4NDU3OTFlNjA5ZmI0ZjhjODkwIGxlZ2FjeS10cnVuaworODQyNCA3Y2E2YTkxMmQ0NTViOWJiMmYyNjU3NzMwOWFjZjRmZmI3MmEzZjAyIGxlZ2FjeS10cnVuaworODQyNSA2YzA2MGJjM2JmM2Q5YjU4MGEzYmQ4OTdhY2Y0ZmQxMGU5OTk5OTdiIGxlZ2FjeS10cnVuaworODQyNiAwYjRhOWRkMDllMGRiMGNkZDlmNmUyYWQwM2UwZjJjNjU4YWJkNjQyIGxlZ2FjeS10cnVuaworODQyNyAzZmJjZGE3NDE2OTY1YTQ0MjA3MDllYWM2ODk0NDJhOGJlNDA3MGI1IGxlZ2FjeS10cnVuaworODQyOCA4ZDdkYzY2OTY4Y2JjNmVjNGVhM2RiM2MzNDljNDU4ZTNmZjA0ZjBmIGxlZ2FjeS10cnVuaworODQyOSBiMmUwMThmYjJiYTkxNWMyMDdkODdkYmIyYTBiN2U1ZjRmZTc4YmVjIGxlZ2FjeS10cnVuaworODQzMCAxYTk5Njk1YTQxY2NmNjkxNDY4NGNiY2IwNzlkNDQzNmI2OGY4YzYwIGxlZ2FjeS10cnVuaworODQzMSBkMzgzNWE2YTE4Yzk1Nzg1YzhkMWIxMDAyNjNmOWZjODliNGRmYjcwIGxlZ2FjeS10cnVuaworODQzMiAxZjJkZmNhNTIyMDcyZDEzOWM4ODYyNmY2ODhjMjQ1ZDIxZDU1YWM5IGxlZ2FjeS10cnVuaworODQzMyAzZDZmM2YwYWUwMDUwNjU2MTQyYjE5NzE5YThkZWZlNWE4NjMyNTdjIGxlZ2FjeS10cnVuaworODQzNCAyNGVjNDYyNGVhOWUzMDk5MmI5ZGFmNzlkNDgwZTdhMWZlN2UxYjM4IGxlZ2FjeS10cnVuaworODQzNSA4MzQ0NjFhOGNhNzY3MTQ2MDhkZGEzM2ZiYzRjMjk4NWQ2OTlmN2NmIGxlZ2FjeS10cnVuaworODQzNiAxYTRmYjZmMTJmZmQ1NGIxMjNkMjNkZTk4MDJhMDUyNzQ4NGRjYWFkIGxlZ2FjeS10cnVuaworODQzNyA3NmJiNDBhMWViMDQ1MzIzODk4ZDZiMDBhMTIyMGU4Y2ViZmVlYTRjIGxlZ2FjeS10cnVuaworODQzOCAzNWU1YWNjNjUzMmM3ZTU0YTY5ZDcwYmUyNTU1ZGNiNDNhNzQ2OTlhIGxlZ2FjeS10cnVuaworODQzOSAyM2UwMTQ4MzlhYjA1N2QxNTk3Nzc3MjNmYzkwZjI1ZTgwMmUxZDY2IGxlZ2FjeS10cnVuaworODQ0MCA4M2RlNTUzOWY4ZTQzMjIwYWQ5ZGY3MDZkZDgzODA1NjljYmEyMTk3IGxlZ2FjeS10cnVuaworODQ0MSA0MzA1NDAyMWJiNTc1MTA2MTdhODhkZmRmMTM4Y2VlYTI3YjUxNWY5IGxlZ2FjeS10cnVuaworODQ0MiA4YWU4M2I5YzM0YTAyNDUwODdjZjJkNzE2MTk5ZDczMmQ1Njg4YmVhIGxlZ2FjeS10cnVuaworODQ0MyA5NmE5N2IyYjcyM2U5ZjUzZTA0ZjBiM2Y5ZjhjNDMyNmE4OGI2YTAzIGxlZ2FjeS10cnVuaworODQ0NCA5ZTRkZGI0NTliMTBkM2IwY2Y5NGIyNDVhNjdlMzQ3NTM4MGZiZmRiIGxlZ2FjeS10cnVuaworODQ0NSBiNzA0OGY1YmU5YTE4ZDM5YWFjNGFmOWE1NzFlMzQwMzg5YTcxNjY4IGxlZ2FjeS10cnVuaworODQ0NiA1ZjZhMmVhZGFiOTc4MzVmMjZlNmI5NTMxNjUwODQ5NTc5OTY5MmZlIGxlZ2FjeS10cnVuaworODQ0NyA3MDFkODU0ZDE5MzBiYjZhMWEyNGYyNzNmZTlkZGYxZWFiNzNkZDk1IGxlZ2FjeS10cnVuaworODQ0OCAzZjJiZmMxNTk4OWRjYWU3NTYxNzE3OWNkYmJmNTVkNjkyNDBlMjc2IGxlZ2FjeS10cnVuaworODQ0OSA4YWJiNGQ4YzMxMzQ0OWRhOTkyYTM0NWM2YTVhZWE2NWQwYjBkNmMwIGxlZ2FjeS10cnVuaworODQ1MCBlNzc4NDdlMTE1OGUyMTM4ODRkNGZjMzU4NDM2MTZlMjYyN2FhNDg1IGxlZ2FjeS10cnVuaworODQ1MSA3YTA4ODBmOGI4ZWMwOGVhMTI1MjEzMTY4ZGM2OTJmYTY2NGYzOGY3IGxlZ2FjeS10cnVuaworODQ1MiA4YmJhOWJiODY0YWUyMzhjNGFmOTNhNzc1ZTQ3OThmZWViYzcyZGIwIGxlZ2FjeS10cnVuaworODQ1MyA1YjJjNTk1NDI4ZmE5MWY5OTE5MzZhY2I3MTkzMmI4N2JhZWNiM2M3IGxlZ2FjeS10cnVuaworODQ1NCBiNzcwNzk2NTE5ZjYwM2ZlYTVlNzhkM2Y2OWU1OTBmNzI1MGFiNmZlIGxlZ2FjeS10cnVuaworODQ1NSA3ODFlYjQ5ZDJkNjZmZDBhMDY0MmQ4MmY0YTdiZDFhODFkM2U5YTU0IGxlZ2FjeS10cnVuaworODQ1NiA0MjI5NjA1MjMyODY1MjE1MjljYjY4YTczNDBmNmY5OGY1ZDcyY2ExIGxlZ2FjeS10cnVuaworODQ1NyAyODk0YmI0OWUyZWVlNjg5OTRkMTdkYzZmNDBiZDEwY2Q1MjI3M2U1IGxlZ2FjeS10cnVuaworODQ1OCAxNzBjNDZhNjUwMjIwZTYyYjZmOTYzMmE4OGFjNTZkZThjZGEwODVjIGxlZ2FjeS10cnVuaworODQ1OSA2YWViZDk3MGI3YTk5ZTg0Y2ZhNWY0N2Q5MDdhN2EyNmI4NWY3ZDEwIGxlZ2FjeS10cnVuaworODQ2MCAzMzM4NWY5NGNhOGFjNDJhMTI3NDc2ZTFkYWQwYzQ4NTg0ZjFjZGVkIGxlZ2FjeS10cnVuaworODQ2MSBiNGJiYmEzYWY0ZThjOGEyZTc2NWQ1OTMwYTU4YTEwNWNhMDY3ZWZkIGxlZ2FjeS10cnVuaworODQ2MiAwM2E4ODMzYjRiNzNkOTk5NWQ1MWNiYzY1ZThiYTY0NmZkNTJjZDA0IGxlZ2FjeS10cnVuaworODQ2MyAzMjEyNzU5M2MxMzRkMWExZTNkMjM2YTVlZTU3MjFlZTc0NGE2NDE3IGxlZ2FjeS10cnVuaworODQ2NCAwYTJjMzMxMjAwZjVmZjA4MjdiZjA4OTkzYmExYWE1OTQxMzExYzZkIGxlZ2FjeS10cnVuaworODQ2NSA1OTkzYTA5OWQ5YjAzNjYzMGVkZjBhN2JiNGVkMGM3NmQyODY0OGJkIGxlZ2FjeS10cnVuaworODQ2NiA1YjkwZGE4YTlkY2MxNzY4NDZhZjE2YWEwMTY3ZDFhOWZiMThmYjcyIGxlZ2FjeS10cnVuaworODQ2NyA1MDM1MDA2NTJiYWM0OGZmNDAyZGUyYmIwY2E3Y2E3NWE2NjQwMTdiIGxlZ2FjeS10cnVuaworODQ2OCBhNTczN2RkOTY5NzkwMDllYmY5OTFiOWNjOTY0YTVlZGM3MDZkMmMzIGxlZ2FjeS10cnVuaworODQ2OSA2ZTVkNGVjMDM3OTFjOTZjYzc5ZDk1YmZkMDgxZjY0ZjM2M2ZlMzViIGxlZ2FjeS10cnVuaworODQ3MCAyZGIzYjczNjE4NTNjNTU2MWZlYTMzYWYxNTUxOTRiMjdkOGE5YTg0IGxlZ2FjeS10cnVuaworODQ3MSAzYmFjNTIzNTJjMGJjN2E2ZGMxZWFlNjM1MjcxMmRjYmMwY2E0ODRhIGxlZ2FjeS10cnVuaworODQ3MiBiOGI2YTg4ZjdmNDQyZGY0MGI0NzA2YzA2NDhkNmFiNWY4ZjdhMTI3IGxlZ2FjeS10cnVuaworODQ3MyA5ZTdkNTk4MmFiM2RlOTZlOWE0NWRjYzg1OTY1MWJkMmQ4ODc4MzQzIGxlZ2FjeS10cnVuaworODQ3NCBmY2VhNTdjMzQ2YTU5YjYxZTNmMzczNjRlOWQ1MzVkYzVjYTIzOWNkIGxlZ2FjeS10cnVuaworODQ3NSBjMjRiNTRjMTk1NzE0MmQxZDNhZjYwZGRjZGMwNDRkZDZlMmM3OGIyIGxlZ2FjeS10cnVuaworODQ3NiBmMmQxMzRiZjY5NzNiYTI2NTQ5ZGM0MjkxZDM5NTg3ZWU2YzgwNGI4IGxlZ2FjeS10cnVuaworODQ3NyBkNTIwZDVkMDExMTViNzAyYmNmY2NhMWEwZWI3YTU1NjUwMWQwNmFmIGxlZ2FjeS10cnVuaworODQ3OCA4MDU2MTY5ZWM0NDhlMjMzZDBiNDUzYmMyZmVlOTcyOGEzZGI1ZjU1IGxlZ2FjeS10cnVuaworODQ3OSBkNDM5YzMyY2U5NjM3ZmZjYTYyYjYzOWM3Mjc4OTg5Mzc5YjhlZGY2IGxlZ2FjeS10cnVuaworODQ4MCA1MDg5MjE5NTBmMmM0MGIyYzBjNmY5ZDMwNmJlMWIwYjhkYzliM2RlIGxlZ2FjeS10cnVuaworODQ4MSAzZjU5YjM0ZWI5MGY5NmEzMTE2OGFjMWU4MDJiZjQ4ODgxYzg3NTBiIGxlZ2FjeS10cnVuaworODQ4MiAwY2RhOWYyNDdkN2FjYjliMmYyNGUyZGNmMjg1MDg3MmJjZDc0ZThlIGxlZ2FjeS10cnVuaworODQ4MyA3MzYxZjJmMTg2YWRhMDA1ZGIzOTE0NjcwZWEwZDA5NWVhNDQ0YjA3IGxlZ2FjeS10cnVuaworODQ4NCA5YmE3MmZjNGY1MDM2NGM3MjM0MDc2MDk1MmFhZWNmMmI3NGNjNjA1IGxlZ2FjeS10cnVuaworODQ4NSA1ZGMyNjdjZjQ4OTUyY2MxYmVhMmJhMWRkMzU3MjA5NTVjYWZkZmM4IGxlZ2FjeS10cnVuaworODQ4NiA4ODc0MDhlZWFlOTkzOWI1MTk1MWFmZTFjNWNmYjVkYWQyZDc2MzViIGxlZ2FjeS10cnVuaworODQ4NyA4NzFmMTM1ZGQ2MTI5YjM3MmEwZjEyMjNkMjRjOWYwMTg4OGQ5NDI1IGxlZ2FjeS10cnVuaworODQ4OCBjYzU3NzAwMWY3ZWNlZWQzZjNiYzcwYjIzNzI4MDM4ZmY4YzNiZThhIGxlZ2FjeS10cnVuaworODQ4OSBkMDJhYzYxY2Q1MGYxZmFlNTc2NTE4ODEwOGNlMzQyOTk0MjUwMzdjIGxlZ2FjeS10cnVuaworODQ5MCAwYjVhMjNlYTc1MTU2ZjI3M2U0YWZiMmYzODJkNDBmOGE5Njg5ODlkIGxlZ2FjeS10cnVuaworODQ5MSAyZjM2ZTBiYjM3YzM3OGE5Y2ZjNDBlZjI2MmU5NjQ0Zjk5YmZjZDVkIGxlZ2FjeS10cnVuaworODQ5MiAxOGFkMTEwNmY2NTFhYjhmY2ZmZDVlNDhkNjQ4OTUyZjc5ZGMzMzIwIGxlZ2FjeS10cnVuaworODQ5MyBkZmYyMDI0YWIwMjFmZTI4ODZmMWFhMDQ0ZTMyZmM1ZGU0ZTA4ZTQ2IGxlZ2FjeS10cnVuaworODQ5NCA1MGE0MTg2M2MzNGE2MDEyNzk5MjM3N2M4NTM0ODBhNTVlOGZmMTRiIGxlZ2FjeS10cnVuaworODQ5NSBmMDU1NDY3NDM0MDYxMDQ2NWM3ZDljOGI0OTMwZTBmMDA1ZDQyMjA5IGxlZ2FjeS10cnVuaworODQ5NiBhMmY5OGQ3Y2FkZWQxZGQyMmQ1OGVkMzE0YzYxMDMxZTE2Y2QyNGZjIGxlZ2FjeS10cnVuaworODQ5NyA1OWMzNDlhMTRhM2FkZTM3ZDU3ZWU5YzU1ZGM0OTNjODgxMTA5NWZmIGxlZ2FjeS10cnVuaworODQ5OCA2MDFjNGVjYTNkZTM0MWU3N2MyYjIzNzdkN2Q1NjIwMTdmMzE1MzZiIGxlZ2FjeS10cnVuaworODQ5OSA4MDI0NzBjN2E1MGYwNDg0ZjkxMjU3MmVkZDEzYTI2MmMxOWViNTIyIGxlZ2FjeS10cnVuaworODUwMCA2YTI1ZDgxMTBiMDA5NDUyYTZiMDAwNjlhYzQ5Yjk0YjI5ZTg4ZDBmIGxlZ2FjeS10cnVuaworODUwMSBkNWY4NzQxYTgxMmNmNTU1MDczMjE2YzdjNDY1YWRkNjQzZTkxMDk3IGxlZ2FjeS10cnVuaworODUwMiAwYWQxNWYzMGM4ZDQxMDhjYjYxMThjZjliODYxYTgyMGQ4YWIxNTdmIGxlZ2FjeS10cnVuaworODUwMyBiNTgwNDE1NGFmNGRmMTJkMmNlNjJjNjUwOGE3ZTY4NmRiNjJhYjQ0IGxlZ2FjeS10cnVuaworODUwNCA0OTRlNTUwY2IxOGQxNWMyY2UxMGQwZGVlOTRkNDI0ZDRmNDA0MWQwIGxlZ2FjeS10cnVuaworODUwNSAyOTIxOTMxNzBkYTE1OWZjZmZhYTEzODliNzc0ZWNhY2QzYTYyZWMwIGxlZ2FjeS10cnVuaworODUwNiA2OGYyZDc3MDQxODBhNzJiNGQxMjc4OGUwMGNhMDVkNzRkNGM0NWZkIGxlZ2FjeS10cnVuaworODUwNyBiZjgwM2RmZDQ0MjhmMjc2MTU2MGVlYjA2YzgwZGU4ZTAxZjU1NjM4IGxlZ2FjeS10cnVuaworODUwOCA2YzQ0OWRmZjJmYjg5Y2YwNTRmZDhhZjY4ZWJmMTIwZDAzY2QwNjgxIGxlZ2FjeS10cnVuaworODUwOSA5YTU3Y2EyMjk2ODFiNjgyY2YzYWM1OGI3MjIwZGQ4OGU4YzhiYTMzIGxlZ2FjeS10cnVuaworODUxMCBhYzc1NTRmMjkzMTM2OWUzNWJmOTk1YTkzYmIyODUwN2ZlZmI4YWEzIGxlZ2FjeS10cnVuaworODUxMSAxY2Y3OWVhOGZmYTJhNThhOTBkOGQxMDYyOTUxNzYyODJjZGRlZWM3IGxlZ2FjeS10cnVuaworODUxMiA2MTQxMThhMTM0OGM5NDIxYjdiM2ZmMmYxY2U0ZDA0ODg2NjE5ZWE5IGxlZ2FjeS10cnVuaworODUxMyBiZTFiNzhlNzA3Mjg3MjgzZDM1ZjIyYzcwM2RlMjIxMTcyZDM1OGI5IGxlZ2FjeS10cnVuaworODUxNCA0YzIyOTJlNzA5YjJkMjdkNTM3ZjdjY2FmNmI2MDMxNTg1Y2NmNmJhIGxlZ2FjeS10cnVuaworODUxNSA0N2FkZjE4ZDAxYWRkNzg2M2UwNmJkMzMyYjM1YzEyN2QzOWVmOThlIGxlZ2FjeS10cnVuaworODUxNiA2MTkyMzIyMzZkZGI4YTU4NmYzMzA0NTBjMDRmNzVhYjlmZTNhOGRhIGxlZ2FjeS10cnVuaworODUxNyAxYTQzNjk5MTA4YTYzNzU2NTYwYjRiMzI3NjY4ZDJkMmM4NzNjOWUyIGxlZ2FjeS10cnVuaworODUxOCBhOWUxZWE4MGVhM2Y0YWE1OWY1M2YzMjU3MjUyN2VkZGY4ZWY5NDIyIGxlZ2FjeS10cnVuaworODUxOSA2ZGIzZDUyZDRhNzhhZjA3ZWZhMjMyYzc1YjNhMzIyMWViZGVjYTQ1IGxlZ2FjeS10cnVuaworODUyMCBjMDc5ZTkyNGM5MjcxODk2MWIzYjlmZTI1ZDVhYTBmODE1YzRlZjcyIGxlZ2FjeS10cnVuaworODUyMSAwYjllYzFiMzRhN2E0MDg4MGNkMjljMmI0N2VjYzEzYWEyYjQxY2IwIGxlZ2FjeS10cnVuaworODUyMiA2ZWIxZTM1NDllMmRiYmE2MjZlZDNlNWYyNThjYzVhOTAyMTRkZDI0IGxlZ2FjeS10cnVuaworODUyMyA4YmE0NmIwNzc4ZGFkMjg4NzJjOTMwMDc4MGUzNGZlNTJmMTY4YTk5IGxlZ2FjeS10cnVuaworODUyNCA5NmZlY2M4MGEyOGY3YzlmMTUwMjQ5NGRjMzE5MDQ5MDZjYmNmZjZjIGxlZ2FjeS10cnVuaworODUyNSBlOTM2NjMxMTc2YjYxZDZkMTk5NzI5NDk2MDUwNGYyZmE1NTI1ODI5IGxlZ2FjeS10cnVuaworODUyNiA0ZjEyYzIxZjg3NDc5NjhiYzQwN2QyMjFjYzY1MmU4ZWRmYjU2NGY0IGxlZ2FjeS10cnVuaworODUyNyA2MDczMWIxOWZlMzRkNTdlOTNmMjM0OTBkZTMyMGE3YzE0ZjU3MGYxIGxlZ2FjeS10cnVuaworODUyOCA2YjBhZmJiZmUwYjc4MTlkZDM4NzJhNjVlYjIxODU2MTU4ZjRjZDJlIGxlZ2FjeS10cnVuaworODUyOSAxZGExMjI3MTg1OThlNzUwMTMzNmNlYmQ1MGVkMDlkOTJiMDIxMjNlIGxlZ2FjeS10cnVuaworODUzMCBkYTNjN2Q0N2YyMTBhNmU1ZDVhMDEwYmMyZjI0NjVkMmQ5MTQzNGU3IGxlZ2FjeS10cnVuaworODUzMSBjYWI5ZWE1ZTRlZWQzN2Q3MTExZjI1Njc3ZGZlMDUzYjkwMzI1YmUxIGxlZ2FjeS10cnVuaworODUzMiA3MmQwMDQ5NzFiMjY3OTdlMDA3NTlkMDJkZjQ0NTA5Y2JjNjY2NzUzIGxlZ2FjeS10cnVuaworODUzMyA4ZWMwMjEyN2M0NGJiNDM1OWU3MTExMmMwYmI0ODY2M2FhYjNlYjk0IGxlZ2FjeS10cnVuaworODUzNCA1NjZkMGNhZTkxOTE1YWIxMjJiZGQxNWVkNzBmYjliNjU2NjQ4NTYyIGxlZ2FjeS10cnVuaworODUzNSA4NzdkYmJhM2I1YTgwNDAyYzU2NTljMWVmYmFiMTJkZTkyNzMxNmVlIGxlZ2FjeS10cnVuaworODUzNiAzODc4NGI4NTNkMjMxZDJhZmVlZTY4NzZmZDZmZDMyMzdlMzUwNzZhIGxlZ2FjeS10cnVuaworODUzNyAxMTQyOTk2OGUyOWQyMmVlNGE0YTQ4MDE1YjhiZjdjMGRiZWU2ZGM0IGxlZ2FjeS10cnVuaworODUzOCAzNmRmNDQzNGIzYjMwM2ExNGY1ODZhMzUwODUwNzA4MzE2NzA3OTY3IGxlZ2FjeS10cnVuaworODUzOSA3NGE3ODY2NmRkYzhhZmJkMzBmMzAyYzdjZWM0MTNmNTkyZTFiMDNjIGxlZ2FjeS10cnVuaworODU0MCBhNWQ1MDNlY2E3NDc4ZGQ0OGU1ZjRmM2FlNWRlN2I4MmU5OGFiMTBiIGxlZ2FjeS10cnVuaworODU0MSBlODhkMmUzMjJjNWViZTgyY2JjZWMwZmQyN2JmOWNjYjk4MGY3ZTQ1IGxlZ2FjeS10cnVuaworODU0MiAwZjQxOTNiZDA4ZDBiY2JhZWQ2MjUyNzRiMThiNjQwNGIwOTQyYWYyIGxlZ2FjeS10cnVuaworODU0MyBlNGNkMDkyZjQzZDY2YWFhODY1ZmVkYjIwNzI5NmJjYzg0NGFhOGM5IGxlZ2FjeS10cnVuaworODU0NCAzZDNmYTg3NzM4N2FlZDMxNjRkYzIyZTkzOGYyZGEzNzkzMTZkYzMzIGxlZ2FjeS10cnVuaworODU0NSA5MjVmOTBiNDhkNzM3MjQ1MzdkMDc3NWRkMDIxOTUwYWMwYzBlNzRiIGxlZ2FjeS10cnVuaworODU0NiBlMGYyNDk5OTNhNGY3ZjU5YzkyNjE4MTk5OGE4MTM2YWEwM2FlZjAwIGxlZ2FjeS10cnVuaworODU0NyA2NDNmYTU0ZjIxMjQ1ODFkNWE2M2YzOGUzOWI0ZTI3MTY4OGM1YmE2IGxlZ2FjeS10cnVuaworODU0OCBkOTFjYzBhNTdkYWEzYTQzMmQ3NmQ5ZGRmMWQzZjhmOWYzZDBkMmI0IGxlZ2FjeS10cnVuaworODU0OSBjN2I1YTcyMmQ5MjY0OTRlNjZlMWNhMjRiN2M5ZjMxZDQ2YjAxZDQ3IGxlZ2FjeS10cnVuaworODU1MCBlY2M5NDkwZWM3MTkyNzgzOGIyOTc4MTFmMDhhNzViMjI5MjhiYzg0IGxlZ2FjeS10cnVuaworODU1MSA1ZTVlNTRhNmRiYTZmYWI5MmE4ZWRhMTQ1YjBlN2ZlOTZlYjZhZDgyIGxlZ2FjeS10cnVuaworODU1MiBiZjNmNDg3ZmNkOGI1N2Y5OTA5ZWFhMjdlYWVhMjBlMzc4YWZiNTBmIGxlZ2FjeS10cnVuaworODU1MyA2NTQwZWIxN2U1YjY0NTdiNWNhNWY5OGRlMTM5NzJiYTY5Y2IxOTM3IGxlZ2FjeS10cnVuaworODU1NCA4ODE0Y2NmMmQxY2RiNjU4Mjg1NDY0YWFiNWIyMzU1YzBhMTBkMmJiIGxlZ2FjeS10cnVuaworODU1NCBkYzVjOTY4ZWM5OTJhYWIzZDQwYTcxODlkZjBjNDQzZDFjN2ExYTY4IGxlZ2FjeS10cnVuaworODU1NiAyZjFhNWNhZDI3YjdhMjMwMWJjMDg4NGFkZDIzNjU1NDU4NjI1MjUwIGxlZ2FjeS10cnVuaworODU1NyBkM2M2MDM1YWMzY2JjYWI3NWZiZmYzZTkzYWJlY2Y2NTNiMWNlYzZmIGxlZ2FjeS10cnVuaworODU1OCAwZWIxNGE2NDg0ZjNmOGY3ZDJmM2E4NGU3NWFiNGZkMzEyYzQ2MWMxIGxlZ2FjeS10cnVuaworODU1OSBkN2NhMDU1NDc5NWVlZjNmYjQxZmJmMTk3ZDFjMGQwOGU4Y2NhMGVkIGxlZ2FjeS10cnVuaworODU2MCBmMTU5MDQ0NTMwYjE4MjcwNDY3MjZmYjM2MDI2ZWQ3MTBiYzFmOWZmIGxlZ2FjeS10cnVuaworODU2MSAwYWE2MmNiZWQ5ZjgyZTkxNzI5ZDM5OTM4OWI1OGIxZTcxYjliY2QwIGxlZ2FjeS10cnVuaworODU2MiBmOWYwMjYyYzRjNTc2ZTdiN2Q1MGJiZTQ0ZTM4YzFmZGRjYmI2OWI4IGxlZ2FjeS10cnVuaworODU2MyBkODlhMjE5YjQ5YTcyMTNjMWIyYzg1MGQ1ZWFmMWQ3ZTkyNTI2NTQ3IGxlZ2FjeS10cnVuaworODU2NCA2MjJjOGQ5ODFhNjk1NWZhNjFjYjA1MmZiNWRiMjQyNWMyMGEyMjkyIGxlZ2FjeS10cnVuaworODU2NSBiMDQ0YzQ3OWNiYzgzMDUxODNlNTNmYTNkMmI2MWU3NjkwMjRiYTI3IGxlZ2FjeS10cnVuaworODU2NiBlZGFlZTUzNzgwMjEzM2I2YmUwMjA5ZWQ0ZDBjZTA1NTc5MTIxY2Y5IGxlZ2FjeS10cnVuaworODU2NyBmMTMwNDllZDMxZmRiOTM0MzE3YWVkNWMyMjFkNjZlOTlhZjcyNzcxIGxlZ2FjeS10cnVuaworODU2OCBkYzkxNmQ4YmJiNTVkODgyNDA1ZmQ4YmYzMmFhZWNkODk0NjY1OGYxIGxlZ2FjeS10cnVuaworODU2OSAyOTQ5YzBhNDBiN2JkMDhjYWRjOGFhZDYxNDVjZTdiYzJlODYzZTkwIGxlZ2FjeS10cnVuaworODU3MCBkMTA5M2YzNDIxYjZmNTI4MGJlYjIyYzdkZjhkYWJjOWM3Y2M0YTI2IGxlZ2FjeS10cnVuaworODU3MSBhMjJmY2E3YTVjNWE3ZDEyNzA3ZmY4YWUxZGVmNzBjNTQzMDFmMjYyIGxlZ2FjeS10cnVuaworODU3MiAyNzQyMjY0ZWZkZGVkZDVkOTU5MmZmYzgwNzk0MzMwN2UwODI3NTU3IGxlZ2FjeS10cnVuaworODU3MyA0NGI4Y2ZiZGE0NDEyNDAzMjI2ZmJkYjM4ZTIzNDExNzdhOWFiYjFiIGxlZ2FjeS10cnVuaworODU3NCBkMTM3ZTYyNGNlNDJiMjM5MWFmYjlhNGMzMDUzZjNjMmNhZjEyZTY5IGxlZ2FjeS10cnVuaworODU3NSAxNzliZmQwZmVlMjRhMjczODhkNWU1OTk5NTA5YTc1N2M1MDBjNjBjIGxlZ2FjeS10cnVuaworODU3NiA4ZjdmNDc3MDA3YjM4ODY1MmM1NjdjMjg1MTg2ZTRjNGMzODU5MjY3IGxlZ2FjeS10cnVuaworODU3NyA4YmIxMjgyMTVkYzU4YzFlODlmOGZjZDBkNjUwYTc0MjkwOTE4OTgxIGxlZ2FjeS10cnVuaworODU3OCBhNjRkMTRjNDkxNGYyMTVlNTAxODIxNmFlODMxY2JmYmMxOTNlYTA5IGxlZ2FjeS10cnVuaworODU3OSA0ZDhlYmY3YWZmYWI0YmRhZGI3MGFiZWQ1ZTY2ZWI4NWFjMWJmNDFlIGxlZ2FjeS10cnVuaworODU4MCAzYmI4OTcwZmI5MTgzMGE1OTAxM2M3MDRiNWE2NzIzNzU3MWY5MWI4IGxlZ2FjeS10cnVuaworODU4MSBmM2MwYzE3Yjk3MDhiZjgyYzlkYTBhZGI4ODM4YTk2NjJlYWUyZjk0IGxlZ2FjeS10cnVuaworODU4MiA3N2ZiODgwZWNhNDkxZmUxMzU5NGU2ZGE0ZWY2NGFkODA5MjkyYmIxIGxlZ2FjeS10cnVuaworODU4MyAzNmIzYjMzN2M1NjYzODQyMWNmYTNiZGM5NTVkZWE3ZjBmMzdjMDVhIGxlZ2FjeS10cnVuaworODU4NCA3YmQ1NjVlNGZiYjVhYTA0NTU3MGM3YTVjNjdlZDk3NWEwZmRhODJjIGxlZ2FjeS10cnVuaworODU4NSAxNjc2ZjU3OTUxODBiY2I3NmY0YWVhMWY0NDgxOGRlMWRmMmQ2NTNiIGxlZ2FjeS10cnVuaworODU4NiA4Y2IyYWZkMTAxMTk1MDBlYjBlMGIzMzg2ZTlhM2IxMWZmM2E0NWFmIGxlZ2FjeS10cnVuaworODU4NyAyNjBiMjE3NjkwNjFhYTkwNmExY2MyYTUyZmYzNGZhOTMxZTJlM2IxIGxlZ2FjeS10cnVuaworODU4OCA5NzNlZjM1ZWY0ODI1NjhmMzk1NjJjMzExNWY2OWE2YWNkNzFmOWU4IGxlZ2FjeS10cnVuaworODU4OSA1ZDFmMzM3Y2VlMjY5ZjkxMWFjNmZlMjZhN2I5ZjY3YTZiYzI5ZDU1IGxlZ2FjeS10cnVuaworODU5MCBkOTFmZDdjZDhiZTdiMmY2YmQ0MjZlMTUwNDg2NmI5NjMyNjBkM2IxIGxlZ2FjeS10cnVuaworODU5MSA3MzdlZDY2NTI4OThlOTQxNmM4MDg5OWMzMjkzMGM3ZWEwYjliOGM1IGxlZ2FjeS10cnVuaworODU5MiA2NWM5YmE4MDAwMzAyYzJmNDZhNWFiODBhNTlkMWZmNzJkMzhlMjQzIGxlZ2FjeS10cnVuaworODU5MyAwN2I3ZDQzMjBiMTRhZGFhNTJiYTg0OWZlNzkyMDYzMDBkMDY1MmJmIGxlZ2FjeS10cnVuaworODU5NCA5OGEyODJjZmIwMTNlNzgyMjg3YWMzNDIxYjE5ZWEwZTE5ZGU2OTNmIGxlZ2FjeS10cnVuaworODU5NSBkMTNkM2MyYzk4NjBhOTM0MmYxMjBlMzgzMzZmNGJkODA0YmRmMzk1IGxlZ2FjeS10cnVuaworODU5NiBjMjBiNjk4MGE4NzBmY2Q2MWM4ZmU3MDVlYmVjZTgwZTljNDAxZDAyIGxlZ2FjeS10cnVuaworODU5NyBkZjI5ZTgzYzMwNGZhYTRlZDJiNDgzYTIxNWJjNTkxMjI5NTM0ZTg1IGxlZ2FjeS10cnVuaworODU5OCBkZjAyOGJjNTRlNmYzMmE1ZjBmOGMwYTE3YWI1YmU0MGMyY2YyNDMzIGxlZ2FjeS10cnVuaworODU5OSBkYjhhYzZlMTA5YjRkYzBiOTI4ZDA2YTljY2VkN2JkNzUzODdlNmJjIGxlZ2FjeS10cnVuaworODYwMCA3NDhmYjVhMDA5YTdjMGMzMDE2YTg1Y2IzZDE5MzVmYWYxYmYzM2I4IGxlZ2FjeS10cnVuaworODYwMSBjYzJjODQ3Njk2MzZhNDI1OWY3ZmU5MDVlYTA5Y2U3OWRmNjJlOGJjIGxlZ2FjeS10cnVuaworODYwMiBkNGU4N2FhN2JmZjA1Njc5MTUyNmYzZWZiNGY0ZDYwNGJjMWExNTQwIGxlZ2FjeS10cnVuaworODYwMyBiNDQ5MzRjMjAxMjVlZmQ4YTMyMjJjNzBhM2E4YzM2NGUwMzY0YzM3IGxlZ2FjeS10cnVuaworODYwNCA0MjU0MDk1YTUwMjk4MDFjMGY5MjYzNDdmMDUyMjk0YmRmNTZjYzQ0IGxlZ2FjeS10cnVuaworODYwNSAwNjBmODM5MzJlOTFhNmY1ODIzZTgyMDE2YzhkZmEyYjhlZjM2ZmE1IGxlZ2FjeS10cnVuaworODYwNiA1ZGMwNzhiMjEzZTU4MmQ3MWVhODFjZDBjMDA2YzRkZmMzM2FmMmMzIGxlZ2FjeS10cnVuaworODYwNyAyZDk1ODJlZWUxMTJlNmU4Y2FkZmQ2NGYxYzI0ZTQ5M2QxM2U4NjBkIGxlZ2FjeS10cnVuaworODYwOCA4NTQyYjg5MDM5ODk5NWY5YzAzMjlhYzI3OGI3MTgyNzA5MTQ0YTRjIGxlZ2FjeS10cnVuaworODYwOSA5NDYwNWIwMDI2ZTdmNmJmMzc3MmE3YzA1MWU4YTYyNjY2OWIzMzY1IGxlZ2FjeS10cnVuaworODYxMCBiNGEwYmU1YzQyYmY3NTliNWMyZjBmMjg5YjIxODFiOTQzZjc4ZTNiIGxlZ2FjeS10cnVuaworODYxMSA1NTI4M2Y2ODFhMWMyMTAxZDE5ZTdmMzcwZTFjZjM5Njk2MTJjZmJhIGxlZ2FjeS10cnVuaworODYxMiAzMmY2NTc0MTc0M2JkN2FjNmJkMTg4MzY2ODYyYTNmYWYwZDRiMDFiIGxlZ2FjeS10cnVuaworODYxMyA1NzA0NWY1MWRkMTJiMDRkMjU4NjU1N2Y5MjhhMjJmMTJjMGRiNDYyIGxlZ2FjeS10cnVuaworODYxNCA0MGFiZjIzZTE2OGJmYzNiYWNkMWQ1OTNiZjZmNjFhYWRiMzUzMjljIGxlZ2FjeS10cnVuaworODYxNSBmODBlNzYzYzE3MTdkZTc5MTEwODJlMjUwODFiNTI0OTMxMzNlMTBlIGxlZ2FjeS10cnVuaworODYxNiBhMjg3YzUwMTRlNjZhODE4OGJhZTI5MTAxZTI2Y2ExZjZiZTgwMWZkIGxlZ2FjeS10cnVuaworODYxNyAzYzk1MTI0MDFmNmQ2Yjc2ZjliMTA5YjNlNmNjYWZhMmFjN2FkNDMyIGxlZ2FjeS10cnVuaworODYxOCA5ZjYxNmE0OTIxOTY2MTkxMDA3OWY1Y2YzM2QyNDgyYzU2ZjQ1ZGY4IGxlZ2FjeS10cnVuaworODYxOSAxNDRkYjYzNWI0OWQzM2U5OWI2ZmQxZTViNzM3NzQ1Y2QxNzU3YWUyIGxlZ2FjeS10cnVuaworODYyMCBjMjMzNGQ5N2NlMTRjYTQxNjk1ZTdhOTkzNmI2NjcwZjA0NTdlODBmIGxlZ2FjeS10cnVuaworODYyMSAxNDE4MjAyNDAxMTEwOWRjZTVlMzU3YjQ4ODlhZjUxMzYxNjk4Y2I1IGxlZ2FjeS10cnVuaworODYyMiAzNDFmY2I3YmFkOTAzYmEyOTBlOGIyYmEwOWVmNDdhMTZjNDVhZjhjIGxlZ2FjeS10cnVuaworODYyMyBhMmExZGYwY2E4MDhmNjIzMzQ5MjMyMmEzNzcxNTNiOGU3YWFjMzVjIGxlZ2FjeS10cnVuaworODYyNCBiNzZhNDQxNjNlMGY2MDNiNmRjNGM4YWVlZTJhNmFjZWMzOTgxOGMxIGxlZ2FjeS10cnVuaworODYyNSA0NTg0ZjA4OTMwYWM5MWI0MDM3OTc0OThjM2ZlNWNhOThkNGZhMTlhIGxlZ2FjeS10cnVuaworODYyNiBiYjAxMTEzMDg3ZWJjNTBhMzcxNThjMDdjZTZhOTliMzg1ZGFlNGZlIGxlZ2FjeS10cnVuaworODYyNyA5YTc4Y2UxZGI4ZjY4ZWYxOTg5YTRjMGU0Yjc0YTA3YWQ5NzhlNGJlIGxlZ2FjeS10cnVuaworODYyOCA5ZmQ2MGU2NDBhZTVkMDk3NzEwYWUzNDFmNWM0YjM5NWY2ZGExNzNhIGxlZ2FjeS10cnVuaworODYyOSBkN2NiZDI2NTFlNTU5YmJkZmI3MmY5ODRmOGE2MDZhYzViZGQwYjhmIGxlZ2FjeS10cnVuaworODYzMCAxN2EyNmY5ODYwMDc4ODQyMzE3NzViODE5YWQ0ZTMzYjE3MzE4ZDE4IGxlZ2FjeS10cnVuaworODYzMSAyZWU5ODExYzkyZmQ0YjJlY2VhNjYyMGM5ZWFmNzI3YjM3N2JiOGM2IGxlZ2FjeS10cnVuaworODYzMiA0Nzg2NzAwNmYwNzZhZTg1NTc2YWQyZDgzMjljYjA2ODA5ZjY3YmNhIGxlZ2FjeS10cnVuaworODYzMyAxYTJiZmE5YTAzZjc0MmY4NjQ5OGQ5ZWMyMDdhYWNhMmEwYzY0NTZmIGxlZ2FjeS10cnVuaworODYzNCA2NDdlNjBmYjNiYWMzZjdjMDRiMzEwZjY0MzBhYjM3MDM2NzBmYTIxIGxlZ2FjeS10cnVuaworODYzNSAyZTBhYThkODEzOTY0YmI2YmFkZDlhODBkMzEzYWM5NTQwZWY0MWNhIGxlZ2FjeS10cnVuaworODYzNiAyYjAzYTFkZmRiZDNmZTZjODQ1MzFmMGUxZjQ5OGE5NzUyNGNiMTQ1IGxlZ2FjeS10cnVuaworODYzNyA3OTU5Mjc2MWIzMzFhMDYzZjNhNThhYzI1ZGE1YWZmNTYzNjdlYjgxIGxlZ2FjeS10cnVuaworODYzOCBkM2Q1YTI1ZjNiNzA1Y2EyNTYzZTFhYThlMWM3OGM0YmIyMTM0OWRjIGxlZ2FjeS10cnVuaworODYzOSA5MTgzYTNjNmI4NWZjYTM2MmJjZDg1YmE0ZmNlNTNhYjU0ZmM2MDY0IGxlZ2FjeS10cnVuaworODY0MCAxMTlkMTg0YmI1ZWQ4OTBlODE3NzI0N2ZjNGVmNmE2OTk2Yjg2OWI5IGxlZ2FjeS10cnVuaworODY0MSAzZWM1Y2E4YWY5MWQxYzYzNThlNWFlZTM1NmZkYjM4ZjUwZmVmNjY3IGxlZ2FjeS10cnVuaworODY0MiAyOWRkZjEwNDk4NDI3NGFmZjJiNTljMzJjOGU0ZDQyMDU5YWQ1NWY3IGxlZ2FjeS10cnVuaworODY0MyBhMThlMWNlYmQyOWZjOGNmZjQ4M2QwMDU3ZmZlZDA4ODU4OTA1YjM3IGxlZ2FjeS10cnVuaworODY0NCA5ZTQzMjQ2OGY3NTYwNWQ2YjA0NDVmYmFhOTJmZTBlN2FjYWM2NzkwIGxlZ2FjeS10cnVuaworODY0NSAyNTE0ZTlmZTI5ZjZkNzM5YTNmMTRmNThiODQ3YmJjY2I4MmRkN2IyIGxlZ2FjeS10cnVuaworODY0NiA0MzNkM2UxYzAyZjdkMDY5ZmFjZjMzNDAzN2JjYjM5NWM4ZDc5MmQ3IGxlZ2FjeS10cnVuaworODY0NyAzZTZkNjg4YjBkMmEyNzJiZjI1MWEyY2EyM2EyYzYzZmU1NWVlMDIzIGxlZ2FjeS10cnVuaworODY0OCA5YTNlNmYwZDZiNWE5Nzc1MjQwZjNjMmNhYjUwZWMyMThiYTA5MjU5IGxlZ2FjeS10cnVuaworODY0OSAyZjYwODM0ZWVhZjVkNjNhOTZjYTljODQwZDc3Y2I3MTk5ZGFlMGQwIGxlZ2FjeS10cnVuaworODY1MCAyNTNlMTFiNjExMDZkOGVkZWRkM2ZiMTU5YWQ4NDRjMDY2NTFhNzQ3IGxlZ2FjeS10cnVuaworODY1MSA3NzEzNWRhOWYzNmNkY2VhYTBjOGJkOWNiZDI1YTNlZTE5YTZjZDlmIGxlZ2FjeS10cnVuaworODY1MiAxOWZlODgwY2E5MTlmYTc1NTUzZDZjNzc3MjUzNzMxYTZlYzlhYmJkIGxlZ2FjeS10cnVuaworODY1MyAxOGY4MjRlNWI5ZWFlOWJiNTE2OWFhZTVhNDViNzkwMTY4MmYxMTdiIGxlZ2FjeS10cnVuaworODY1NCBhYWNlNTAyYjhlOGIxMzQ0OWJmYWMwOWJiNDg1NjQwNzY2NDU0ODhhIGxlZ2FjeS10cnVuaworODY1NSBiNTViMjE3ZjJlMGQ3OWMzZjM4NDI2ZDZiMzQxYzZkZTRkNmM4NzhkIGxlZ2FjeS10cnVuaworODY1NiA2Y2I2NmYwY2E4ZDU0MDhmNGFhODhmY2MyZmI2NTQ5ODhlMGI1ZTVhIGxlZ2FjeS10cnVuaworODY1NyAyZmY3NmU5YmM4NWQ3ZmQyNDg4ODgxNzVlMTFiNmYxYjU4YWY5ZTJjIGxlZ2FjeS10cnVuaworODY1OCBlZjlhMjk1M2Y5MzM0MzllZWE0NGQxMzMxYTEwN2MwN2Y1NDc2Mzk3IGxlZ2FjeS10cnVuaworODY1OSA0M2I4YzRhNjk2ZDExNGNkMGQxYzNlNWIxOTk3MDg5YmI3MzI1MDg0IGxlZ2FjeS10cnVuaworODY2MCA2NGUxOTRjNWY4NTRkMDc1MjRiMDNjNjRhYzA3MjE2NjJkZDQ3ZWRhIGxlZ2FjeS10cnVuaworODY2MSAxMTI0OWQ0Mzk4NDA0OWMwNjIxMjJlNDA3NDA4ZjZlMGUxNjc5NmM4IGxlZ2FjeS10cnVuaworODY2MiAzMmFhY2Q3NTNmMzQzYWEzOGJkODhlYWFmNjM5YzcwODM4NzA1N2ViIGxlZ2FjeS10cnVuaworODY2MyAyZTc1NWQxZmY2NjFmMTUwYTg4MWRlMmM4MjVlMjEwZmMwM2ZiZmE5IGxlZ2FjeS10cnVuaworODY2NCAzZWFiYTI1MWEzMjk5OGE4NTJhZGFiMGY0OWY0ZTUwZTI0OGRhYzg1IGxlZ2FjeS10cnVuaworODY2NSBiN2MyZmYzMDcwMzk5YTJhMDkyNGM2YmIxYWZlOWNhOWE0MTM5OTBkIGxlZ2FjeS10cnVuaworODY2NiBlNDcxMDExOWI0MWNkNjEyNDkwNGNkMWVkZDk3NzE0YmExMjI0N2NkIGxlZ2FjeS10cnVuaworODY2NyBiNTc1N2U4N2ViMzJlYTI4OGIwMzQyNWZkOTIxNjQyN2IxNDBiMmQzIGxlZ2FjeS10cnVuaworODY2OCAzYTZiN2EzNzdkYzNhOTYzZjM5YjQzZTRjNDUzMzNkNjExZmI5NWIxIGxlZ2FjeS10cnVuaworODY2OSAxMmI4YTQzNTk5ZDMzNzM0ODFjZGZjYjNhNGM2MWVlMGU0M2RmMzc1IGxlZ2FjeS10cnVuaworODY3MCBiZjdkNzcwNWRjZTVkY2FjMjZlM2MwMDY1YzQ3MjFjZThmMjVkZTNkIGxlZ2FjeS10cnVuaworODY3MSBjZmYxMDVhM2EzODRhN2U3MmY0OTdkNjM3MmJjZGM5OWM1ZjdlZjQyIGxlZ2FjeS10cnVuaworODY3MiBkOTc5ODBlN2MwNWYzMDVkNGU4ZGUzMDQyYjQ4N2RhYTE2NDg1OTc1IGxlZ2FjeS10cnVuaworODY3MyBhYjA0NWVkMTFiYzk2Nzg5ODBkOTgyMmZjZGZlNDJkYTI3NjM3NTkwIGxlZ2FjeS10cnVuaworODY3NCA3ZGE3YmE1YzY1MjU4NGY3ZjE0NzE4MDA2OWFjMTM0ZTcwYTM3NjEwIGxlZ2FjeS10cnVuaworODY3NSBjNDNjYThkZDAwODE4NzY5Yzc5OGIxYzY5YmJjZWIxMTkxNzE5OGYyIGxlZ2FjeS10cnVuaworODY3NiBmZTg5NzA5YzJlYWMwYmY3N2UwMWUwN2ZlMDU4MDI5ZjEwNGJiZTVhIGxlZ2FjeS10cnVuaworODY3NyBjNTdjZWRlM2M3YzAwMjJmZjFiMGVkZTZkNzE2MzllYWRjNzRiY2YwIGxlZ2FjeS10cnVuaworODY3OCBkYzk3NGIzYTZjZjRmNzIyZjZjOGU3MDE5NjMzOGU1ZjJlNjBkYzZiIGxlZ2FjeS10cnVuaworODY3OSBiYTJmMTFhODJmMjc3YzVmZDVkYjlmNjBiYWE5NmE3OTJjM2JiYjE5IGxlZ2FjeS10cnVuaworODY4MCBmNTdhZTY4YWEzYWU1MjZlZDY3OGRmYzQwZjlkMTk0MGJhYjEyMzhhIGxlZ2FjeS10cnVuaworODY4MSAyNGQ2Njg0NTRjYjAwMDIzMTljYTAxY2Q1OTIwYjYwNDk0ZGViZTExIGxlZ2FjeS10cnVuaworODY4MiBlNTU0YjlmNGEzYWE5MjllMmJkNzFjOTZkOTIyODFiZjZiMWU5NzE4IGxlZ2FjeS10cnVuaworODY4MyA3N2Y1YjZjYmVhNjYyNDA4OGI3NWRhZTEwNjdhNDY5OTQ5ZTZiYmRjIGxlZ2FjeS10cnVuaworODY4NCA5YzJlZTZiYmRiYjMyMzdmNjE2ZTIyN2RiOWY1OTNlYTE5NWViMzE0IGxlZ2FjeS10cnVuaworODY4NSA3YjQ1ZDkyZTM4NjFlMzc2MGQ4ODhlYjI2OTdiMGYzN2Y2OTVlYTBiIGxlZ2FjeS10cnVuaworODY4NiBmZTNmYWMxYTNlNTE3ODQ2YmJiN2E5ZTNlNGNmODg3MGI4MTBhMGViIGxlZ2FjeS10cnVuaworODY4NyA2YTBiZjZiMjYzOTY0ZmFiYTcxMTQ1NWY5NzgyMTcyM2QyNDFlYTc2IGxlZ2FjeS10cnVuaworODY4OCBhMTJlZTI3Y2FkOTMyMmIyMTMzYzFjYjNhYmQyMGI5MGYyMjA2M2Y0IGxlZ2FjeS10cnVuaworODY4OSA1MDg4ZWM1YTEyYTZiMmUzMDUwMzQwNTc4ZDRiMTU3NzU5MjMzMTgwIGxlZ2FjeS10cnVuaworODY5MCAzNmRmYzhjYzFkMDEzYTMzMTg3MjRiNzZiNmM4YTgzOGI3NDA1NjM0IGxlZ2FjeS10cnVuaworODY5MSA0ZTFmODlhMTJmOTkyOTMzNzE0NjcwYzAwMWUxZDcwOTNhZTRmY2FiIGxlZ2FjeS10cnVuaworODY5MiBlYjdhMDFiODZmOTMxNmI3N2U5ZTYyYTdjMTBjM2RhZDNmYzJjMWE1IGxlZ2FjeS10cnVuaworODY5MyAzM2NlZjAxOTYxYTcxMTBiMDI3MmRjZmQwMWY5MTA2OThlZjI2OTNjIGxlZ2FjeS10cnVuaworODY5NCBiNzAxZGY4NWMwNDc0NzY1YzY1NjA4NTY2MzJmYmRlYjBlODYzNDBjIGxlZ2FjeS10cnVuaworODY5NSA4YjU5YzAwNGE0OTljMTI2MWUwZDk3NGFlMTdlMjFkYjU0MDU4YmU4IGxlZ2FjeS10cnVuaworODY5NiA0MThkMzg1YTllNDI0YzRmYzZiNzUzMzMyMGE3ZTE1NTQyZWYzY2MwIGxlZ2FjeS10cnVuaworODY5NyBlZDQ5MjRmM2IyYTU2MWMwYzc1NDdhMmM2MjQ2ZGEwOWY4Y2E3ZDJiIGxlZ2FjeS10cnVuaworODY5OCBlZTViZDA4NTE3ZTg2MmE0NzM2NTY3NzNkYWJhMGJlZmEwMmQ4ZjY0IGxlZ2FjeS10cnVuaworODY5OSA3OGE0YTU2MzJhOTFjNTU5YTc5NDNiNjBhMjZhMTE0ZDhjNzIzYzJkIGxlZ2FjeS10cnVuaworODcwMCA4MGJkYmM0OWI0YzQwYjU5Mjg3MmM1MWNkNjQ5ODQ4ZTBlOTJiOWNiIGxlZ2FjeS10cnVuaworODcwMSA4NTZkODdkMjgyYWM2YmEzYTI4YWUwM2JhMjQzODRjMzdiODlkYjUzIGxlZ2FjeS10cnVuaworODcwMiBhODVjZGYwYmVmYzVjYmZkNDJjNmE3ODBhZWQ3N2E0Y2YwNGE5MzMzIGxlZ2FjeS10cnVuaworODcwMyA5OTg1NTIxOWIzN2Y2ODA3MDJkNjE1Y2JlNjdkODhmNWI1NjdiM2UzIGxlZ2FjeS10cnVuaworODcwNCA2MTNmOTc2YTU3YjQ5MmQ4NmVlNmY0YWNlNzZhZGUxZWM0ZjE2NmM3IGxlZ2FjeS10cnVuaworODcwNSBiNTMzNDdjODI2MGVmMTUyNmRjMDM5NTAwNGQ3ZGZhZmIwMzc3Y2Y4IGxlZ2FjeS10cnVuaworODcwNiA0ZGE0ODA4NzA5Yzk1OTc3NTdlNWU1M2U0NWI1ZjExNTM0ODU4NjMwIGxlZ2FjeS10cnVuaworODcwNyAwZWYwZTA1MWIxZjhkMjJjMTNlMmQ0NWFiY2RmNTIyMzA4MzZlMjE3IGxlZ2FjeS10cnVuaworODcwOCBjODkzOTBlNTZiOTE0MmVjODQ5Y2NkNzhhM2VlZThkOTYwZWYyYmU0IGxlZ2FjeS10cnVuaworODcwOSBmYzVlMWUwMDQ5OTQwYWU3NDA4ZDMzZmFkOTYzZTNjZDQ1MTM5N2FjIGxlZ2FjeS10cnVuaworODcxMCBlZmNlZDgzMjZlM2YyNTBhNmE2NTM5Y2Y3MjU1YjAzYzk5M2Y4MWU4IGxlZ2FjeS10cnVuaworODcxMSA0ZTVmYjhkOWFjYjFjNjNjOTU3MDIwNjM5MTkyNWIzMmYxYTczNGFiIGxlZ2FjeS10cnVuaworODcxMiAyNDg0NTk2ODMyM2Y5MTAyZDQwMmIzNjJhY2FhNmU2MWI0YWY2MmIyIGxlZ2FjeS10cnVuaworODcxMyA2ZGZlYzMyMGY5MTA5ZTE0YTIzNjc4ZDdhNzU2NjBlYTI1NjczZjM0IGxlZ2FjeS10cnVuaworODcxNCAwM2I4NzkzZjc2YzJjYmNlZDU4NjMwMzUzMDlhMjg1NDAwMTcyNmFkIGxlZ2FjeS10cnVuaworODcxNSA0NDYyZDNjNjAwYmY5NzJhYzZhZjYyMWIzNzE2MTU0Y2UxMDYwZTY4IGxlZ2FjeS10cnVuaworODcxNiBmNjA4NzY4MzVhNzU5YzIxZWU0NDdhYTBmNGJlYTFjMDY4MmU5NzY5IGxlZ2FjeS10cnVuaworODcxNyAzYjViYmNhZjkxN2Y4N2M3ZWMxYjc1Y2ZmODA2MWZjZTg1OGE5Nzc5IGxlZ2FjeS10cnVuaworODcxOCBhYjY0MzQ0ZTg3ZGJkYjViMjc2OTQ2ZTQ0ODJiOWI2OGI3ZWViMTEyIGxlZ2FjeS10cnVuaworODcxOSAyMWEyODQ5MGJkOTYxY2U4YzFkZjhjZDdkZTEwM2M0OTdmMmQxYWZhIGxlZ2FjeS10cnVuaworODcyMCA0Mjc5ZjRlYjIxMGEyMTRmMGZmMGY0OTcyNzJkNzc0NGY0ZGM3MzU3IGxlZ2FjeS10cnVuaworODcyMSA1YWIyMWQxYjYxZDg2YmYzM2IwMmUzMzkzZGFiNjMzZTRlZjAyMmNhIGxlZ2FjeS10cnVuaworODcyMiAxNWJjZWMzZDMyNTk5ZTY0OThkMWExM2U3NmQ4Mzg5ZDcxYmI2ODkzIGxlZ2FjeS10cnVuaworODcyMyA0Y2YyMGZhODgzYTkyZTFlNzRhOTE3ODVmYWYwODM3NzZjYjJjYTUzIGxlZ2FjeS10cnVuaworODcyNCAxNDk2NDQ0ZThjOGI4MzA0N2QyNGFhZWZlMmVhY2I1NjAzMzk1ZGI0IGxlZ2FjeS10cnVuaworODcyNSBhZjExNGVkOWU2MWRlZDYwYTdiZTk3ZDk0ZTkzMjA4ZjUxZWE2NTJjIGxlZ2FjeS10cnVuaworODcyNiBmMTBhYWQ3M2UwMjkzMTEwMjU3YTRmMzBjNjQ5NDI5NWYwYjI2NTZhIGxlZ2FjeS10cnVuaworODcyNyAzZmE0YjdhZTBlNmJjMWYwYWFhZTQwMWYwNWNjOWJjODBmNmZjYTBhIGxlZ2FjeS10cnVuaworODcyOCAzZTBhYTcxNjJjODgxZjYzZDdmYmVmYjg1N2YxYzZkY2I2ZWZmNTcwIGxlZ2FjeS10cnVuaworODcyOSA2NDI5ZGI1ZDBhZjcyZDAwOTFlYjA5MWU0NDUwOWZhNjdjMjAzMTM0IGxlZ2FjeS10cnVuaworODczMCA1MjI0ZWQ4NzdiYWU3ZDU2YjRkZTg0NTZiMjM5NzU3ZjRiM2ZiYWMxIGxlZ2FjeS10cnVuaworODczMSA0Yzc2ZWUwMWRmMDhkYjNjNGNhNDFkMDAyNTNkMjY2NzdkOTI2Nzk3IGxlZ2FjeS10cnVuaworODczMiBmNDQ2ZTA4YWMzMDI3Yjg2ZjI3YjNhZDY2YTc3NGJjOTg1ZGM3OWZmIGxlZ2FjeS10cnVuaworODczMyBjZTIwOTI3MTQ0ODQzNjllODhjYWUyNjJiMjY1NDQ4NTJlMDJhOWExIGxlZ2FjeS10cnVuaworODczNCBkZGQyNTUxMGYzZmI2ZjMxYmZmZjFhZjQ4MWU5NTc1MzY3NTYyMWU0IGxlZ2FjeS10cnVuaworODczNSA3YzFlYTg1ZTI2ODQyYWJkNDJkYmVhZTI2MzJjMDllYjBkNTlmODMwIGxlZ2FjeS10cnVuaworODczNiA0ZmJjYzQyODkwMTI2YzJiNmM5OWNhNjQ5ZTM5N2MzNmFkMjM2YzcxIGxlZ2FjeS10cnVuaworODczNyBjMGNkMjNlNzA4YjU4NmVkMjg4ZDJlZDMxZjJlNjBjMGZjOTYyYzRkIGxlZ2FjeS10cnVuaworODczOCBkOTc5NDFlYzVlZWQwMTE1NGFhN2E2YjMxNjk0ZjY0MDZkOWRmZjRkIGxlZ2FjeS10cnVuaworODczOSA1MDc0ZmFiMjkyNWQ4YWMwYTg1M2FhNWM4MTg2ZGJiN2E5YTQxMmZiIGxlZ2FjeS10cnVuaworODc0MCBhYTZlMDUwNGUwZjJhYjY4NzM1MGJjMGE2Nzk4YjFmMWM0OTE1MDgwIGxlZ2FjeS10cnVuaworODc0MSAzZGYyMmVkY2VjYWQ4Njk3MTJkOTVjYTZjNzI2OGIzM2RjZjc3YTAzIGxlZ2FjeS10cnVuaworODc0MiA4YTUwMjQ5YWE3MmYzM2QyYTkyYTY2ZGU5OGIwMGUwZmQzZjY0YzllIGxlZ2FjeS10cnVuaworODc0MyA4YzFlMDIwODkzNzk4ZTBmM2Y5M2ExZTI3MjcwN2YzOTMyZGEwMDVmIGxlZ2FjeS10cnVuaworODc0NCBlYjhkMWEwOThiOWRlY2IxNDZjZjFmMjYwYTg3OTgxOTk1Y2FmMzFlIGxlZ2FjeS10cnVuaworODc0NSAwMjBhM2M4YWIwNzBiYTM2NjQ1ZTAwOWM4NzhjZTJhYzA3ZmMxNTA0IGxlZ2FjeS10cnVuaworODc0NiAxM2M1MzI5ZDJjMmU5MTJmYWExY2ZiM2ZlMDlmNjkzODFjNThhOWMwIGxlZ2FjeS10cnVuaworODc0NyBkZWE4ZGM0YjhlMjI1ZGZiYWQ1MWQ4MDI0MWIxYzkyNGRjOGIxOWIxIGxlZ2FjeS10cnVuaworODc0OCBlOTkyNjI0MWZhYTQwMzJmYmYyZDEwZTIxNGE0ZWFkNWMwOWJmMzU4IGxlZ2FjeS10cnVuaworODc0OSA3NzU4OTk1ODNkYTY5ZDEwNGEzNjE4YTljZmM1ZThhZWJkNzJjNjg1IGxlZ2FjeS10cnVuaworODc1MCA0MzMzNzc1YjU1ZmRkZWY2YWU1YjRjNmI0NGUwM2Y3OTgzNmU5ZjBmIGxlZ2FjeS10cnVuaworODc1MSA3YTM4MDhlZGM1MzkwNDM1MTA3YTExZWI5ZTQ5YzViZDVkYmZmYjkyIGxlZ2FjeS10cnVuaworODc1MiBmOWZiZGU3NWM1MzY1YTVmNTgwODk2NzA0ODE0YjFiNDRkZDkyNDhmIGxlZ2FjeS10cnVuaworODc1MyBlZDc0Y2M1OWM4YTJjNTA0ZDI5MzllZDRmNjlmYmMwYTY0YzdkM2ZlIGxlZ2FjeS10cnVuaworODc1NCBiYjU0NzJmYjQ4ODViOTUwMmNhMmM3M2JkZDdjZjlhNzFkMmYwY2MwIGxlZ2FjeS10cnVuaworODc1NSAyOTg0NDE2YTFiMmIyMzhjNmZjNWZjYmJhODBjNGM0NmNjMjBlYTBiIGxlZ2FjeS10cnVuaworODc1NiAwNzg2MDA0OWYxYzQ1MTVmZjkyNWNjYTVjOTE0MWZhOTMxODhkNDQxIGxlZ2FjeS10cnVuaworODc1NyBhMjY2ZTk0Y2E1ZTFjZDk0MjgzZWFkNjcyZjExZTEzM2M0ZmVjNTZjIGxlZ2FjeS10cnVuaworODc1OCAzM2VmN2JhNmU3NGJhNTEzNmJkOGJjMDhkMGVhZWE2MzRmYTY1YTQ2IGxlZ2FjeS10cnVuaworODc1OSBmNjgzOWU1MzJiZTJiNGVhNTEyNTIxMjgxNDBkYjgzODZhYzcyNTVlIGxlZ2FjeS10cnVuaworODc2MCBlYmRjNDhkMDZjZjg1ZWQwMjk1ZGE2MmM3ZTczMDJlYWRjZmVhZjBlIGxlZ2FjeS10cnVuaworODc2MSBkYWE2MmMyMjY0YjUyNTk5NTY5NzFlY2U4MTUwNWM0ZjA2MjZkYTE2IGxlZ2FjeS10cnVuaworODc2MiAzMzcwNTRlOWQ0ZmE0Mzc1NjVjNGY4MTcyNTIzNGYyNWVkZDVjNGRmIGxlZ2FjeS10cnVuaworODc2MyA4MmNkMmJhYTQxMzY0NmY2Y2M4MGQ1YmE1YjllODBlODdhMjliNTI4IGxlZ2FjeS10cnVuaworODc2NCA0ODlkYjM2MmNkNDhkMDgzM2E4YmE4OTAyOWE3NGE4M2M5YzE0MDM1IGxlZ2FjeS10cnVuaworODc2NSA1ZmE0YjEwMzNiMDZmYzE5NTFlYjU4Y2YwOGE1MzZmNTJiYmNiYjY0IGxlZ2FjeS10cnVuaworODc2NiA2NTQ0NjA0NGZiOGY3MTI5YmQ2ZWI0MGZhYTgyZjY1ZjZmNWQ3ZDVmIGxlZ2FjeS10cnVuaworODc2NyA0N2ZhM2RkZmIwOTBjOTViZWZjYjI3NjAzYzYyZjgyMjQwZDE5NjIyIGxlZ2FjeS10cnVuaworODc2OCAzZDYxNDc0YTE1NTBkODY1NDU3MzE5Yzk4MDdmYjFkNTNmMDZkYjU0IGxlZ2FjeS10cnVuaworODc2OSA4ZTMxZjFjMDdkYzViMmVmMDExMDRlYTlhYmIwMzY2MzI5ZDhjODRmIGxlZ2FjeS10cnVuaworODc3MCA2YzBhMjY1OGExNTYxMDhhMDRlOWUwYjMyYmI1YzlmOTdkMTgxMzc4IGxlZ2FjeS10cnVuaworODc3MSBhODRlZjBhNzExYmEwOTJiNzA4MjdmMDEzYTEwNjc1MDZjNTAyNTkyIGxlZ2FjeS10cnVuaworODc3MiBlYWJkZTg2ZDk3ZjA2OTdmMjU4YzliN2JjOGNmMjRjZTllYjNiOTNiIGxlZ2FjeS10cnVuaworODc3MyBjMGQ0M2Q2ZjUyNDBkZTdlOTkwNjZlODFkOTY1MjdiZWI5ZjBiYjJiIGxlZ2FjeS10cnVuaworODc3NCA1MDk0NzRiODhiMDFjNDE3YzMzOGMzODhkYTE0OGI3NmJmOTQzYzhjIGxlZ2FjeS10cnVuaworODc3NSBlYmQwOTk4ODk3MjFjNDgwOWFmMGZlNThlZDg4ZTA4ZmMzNThlMzFkIGxlZ2FjeS10cnVuaworODc3NiAwMDU0YTM4NDBhNzUyYTUzNzAzZDJjMWRhMTQyMzIzYWE2ZDJmMzEyIGxlZ2FjeS10cnVuaworODc3NyA0OTEwNWI5ZTk5NDc0NDc4ODMwYjU3OTg3MzAyZDU2ZWI5YWNhYzMyIGxlZ2FjeS10cnVuaworODc3OCBhNDMzNTJmMGUxZWU2YmFhYWZiYTg3N2IyNjkwZmQyMzg2NjRhZGRjIGxlZ2FjeS10cnVuaworODc3OSBhNjJkNmQwNjNjMGYwODk4M2EyNmU3MTE3NDZkM2YzZjQxYjAxZTBkIGxlZ2FjeS10cnVuaworODc4MCBjZjBlZmZjM2Y1ODVjNzg4YzhjYTA3MzQ1NjdiYTAyMTFiOTc3MWQ2IGxlZ2FjeS10cnVuaworODc4MSBiMzc4YTA4ODY2MjAxNTFlZGMzODg5N2Y3ZTdiYzRkMjMxNDhmOTMzIGxlZ2FjeS10cnVuaworODc4MiA2ZTFmYTc2ZTc5NDA3ZDI0M2FiZmQwNzliMzdjYTc2ODM5MmZiMmVjIGxlZ2FjeS10cnVuaworODc4MyA1OWE5ZmJmNTkxMjg2M2ZhYTBkMTc4NDkwNzFkZjI3ODhmZTZhZjk0IGxlZ2FjeS10cnVuaworODc4NCBlMWVhNGFkNDYxZjkyM2I5OTk5ZTBlODI4OWUzOTA4ZWJlMmRlZjA3IGxlZ2FjeS10cnVuaworODc4NSBlYTZlNTg3MTM2YjZlM2JiZDAwODFhODg0Y2UxOTJiNjhkZTA2NjdkIGxlZ2FjeS10cnVuaworODc4NiA5MDRhNGQ3ODNhMzM3MmIzZjIxZmQ1MGM0ZWI1MmE5NjUxODgxZDFkIGxlZ2FjeS10cnVuaworODc4NyBlYjUxMjhlOGE4ZThlM2Q3Mjk2ZTg3NjE2YmJmNWQyZGU2OTY0YmRhIGxlZ2FjeS10cnVuaworODc4OCAxM2ZiZDk4ZDgxY2MwNjFjNzM5NWIxYjcxZThiMzZkNGNlZjJmODdmIGxlZ2FjeS10cnVuaworODc4OSA3YmE3OWM5NDliM2E3Mjc4ZmFmYmUwYmU4ZWUyMThiYjllNzE4NjdiIGxlZ2FjeS10cnVuaworODc5MCBiOTQ1OGRjOTlkNTBhMGYxMzk0MDg2ZjgzOWE4YTA2ZjI3MTliZTliIGxlZ2FjeS10cnVuaworODc5MSA0Yjc4NWU1OWU4MzEyMjAwNTUxZWI3YzgzNTQ4ZGJlYWU5MmYyZTgxIGxlZ2FjeS10cnVuaworODc5MiBkMjU0ODljNWEyMmY0ZmZhZmRiMDdhY2Y4ZGU0YzE3ZGFhOWQ0NzQzIGxlZ2FjeS10cnVuaworODc5MyBjMjM1OTY2NWJlODA3MzBjZTEyYTdlZjZkMzI4NzNlMzc5ZjQxOWY3IGxlZ2FjeS10cnVuaworODc5NCA3MWI0MGNjNGNjMDM3MmYzY2RlYmUyOTk0ZmIwYmRlMTUwZjg4ODdkIGxlZ2FjeS10cnVuaworODc5NSBjZGM1YTQwZmNmOTc0ZTk0MmVlNmY3OTk0MWYyNDYyMDVhYjU0MDMwIGxlZ2FjeS10cnVuaworODc5NiBiN2YwYjk4ZjUzMjUxN2Y3NTM4NGE3NzJhYzY1N2VmNzljYTBhOWQ4IGxlZ2FjeS10cnVuaworODc5NyBhNzVjYTc0ZGVlY2FjYzg4YWI5M2UzZDAwYWY5OWFhM2IyM2I3OTI1IGxlZ2FjeS10cnVuaworODc5OCA5MTNjZDFmMzczYmU0N2I2ZTkzMDVmZWNiZTJkNjMzZGNjZDU4MzdkIGxlZ2FjeS10cnVuaworODc5OSAwNWQ5NDNjNDU5N2MyZGMzZWVmODhkOGVlZDQ1MTU4MzU4NTI0NWNkIGxlZ2FjeS10cnVuaworODgwMCAzZjhkN2Y3NGYxYmM1NDlhMzQ2YmMyZDBkZGJhYjU2NWJhOTg3YjMwIGxlZ2FjeS10cnVuaworODgwMSAyMGI1NjQ3YTA2N2ViZmVmZmY1ODhiYjU4YjcyNzM5ZDA4NmRiNjE1IGxlZ2FjeS10cnVuaworODgwMiA1Y2RjM2NhMDUzZDZlODEwYTU2NTU1MGZjMTI0MDJkN2E0ZmJmNzBiIGxlZ2FjeS10cnVuaworODgwMyBiMDE4Mzk5NDAyMWIzNzJmY2Y1MTNhMjg4MzEwNzM4MWE0ZTg3NjNjIGxlZ2FjeS10cnVuaworODgwNCA0YjQ3NzViNDliZmFjNDRiNjE3YTY0Y2Y5MmZhNDBlNjFhYjY4YWYzIGxlZ2FjeS10cnVuaworODgwNSBkZmVhZjk2NWY0OGFkMzJmMGJiMGU5ZTZjNTIwYWE5ZjI1YzgyMTc1IGxlZ2FjeS10cnVuaworODgwNiBmYmRjYTE3MjgzYzIzYmYwMDRjZWZmMjc5OTcyMzIxYzE3NWQ4MmRmIGxlZ2FjeS10cnVuaworODgwNyAxNzJjN2ZlYmQ3NTU3YTUwMGUzNjk3NzJhZmFlMmMwNTEzZTAwMDNjIGxlZ2FjeS10cnVuaworODgwOCA5NzljNzEyMzhlNWJiMmMzYzI0OGE5ZmYwOWFjMjhhNTI1ZjQxM2ZhIGxlZ2FjeS10cnVuaworODgwOSAyZjRhOTI1ZThiNGIyNDE0M2QzMjhjMjA2M2JiZTM0MWY4ZGZmNGQ4IGxlZ2FjeS10cnVuaworODgxMCBkZDEwMjc2NmVhNTEyMWJjYjMwMzIwM2Q4MGVjNmVlYzgzMTgwMjI5IGxlZ2FjeS10cnVuaworODgxMSBmYzFjMGEyN2JiOTYzOGE2ZTBkMTYwNTk5YzA3YTFhYWU1ZGY5NGNkIGxlZ2FjeS10cnVuaworODgxMiA1NzVmNmI5MTBmODhiNDE2YTc2ZTNjMzIzMDI2M2I1MGNjMTU5MjU5IGxlZ2FjeS10cnVuaworODgxMyBhNDJiMzFmZTk3NmY1NTQ0MWEyOWNkNDU5Y2Q1MGJlZWE1MmZiZjJjIGxlZ2FjeS10cnVuaworODgxNCA5ZTQyOTUxOGNiMjAxNzQ1MGRkMmRkYWM1MjBmYTJjNDllZDkxMWExIGxlZ2FjeS10cnVuaworODgxNSA0YjA3NmZjNWJhNDAzZWFhZDVkMDBmNDg5ODExNjg1NzNkMWNlNmQ4IGxlZ2FjeS10cnVuaworODgxNiA2ZjhlYjRhMWZhMDdlYjc5OTE4MWQyZjBjMDE0MmUzN2IyNmFlY2QzIGxlZ2FjeS10cnVuaworODgxNyA1OTNmNTQxMjk2NjE2YTM5YzhkMzkwYWRjNDI0Nzc4NmM1YTg2ZmExIGxlZ2FjeS10cnVuaworODgxOCAxZWQ5MTRmOGJmMGEwZmVjOGM5OWYyZWZiYTNmODkyZGQ1N2EzMTVkIGxlZ2FjeS10cnVuaworODgxOSBlOWVkMDY0ZjM5ZjUwNWNmN2I1MDlkZjc2MjUzYjE1ZDFmZjJhZDNlIGxlZ2FjeS10cnVuaworODgyMCA2ODlkZTYxM2VhMWNjYTI3MTc3OWIzZGYwYTIyZTc4ZGM4Y2ZmYTI2IGxlZ2FjeS10cnVuaworODgyMSBlNDA4N2NkNDBjODVkODAwZGJlZDM2ZGJjZjFmZDY4OGQ2MTNkODJlIGxlZ2FjeS10cnVuaworODgyMiA5OGRhY2M4OTczYTEyMDJmNjQyOGFlYzJmNDY5YWI1NDU5MmU4MjFjIGxlZ2FjeS10cnVuaworODgyMyBhNWYyOWE1NjBjMDlhMzM4ODQxYTdhN2QzMThlNTY4ZWRiNjcxNTI5IGxlZ2FjeS10cnVuaworODgyNCAyNjU2ZDFlZWE3OTIyZGI5ZjJkNTBkZThlYWZhNjRiMjhkNjIzMDM2IGxlZ2FjeS10cnVuaworODgyNSA2YTNiOWU3ZDQzYzEzNzdkMjMzZjM5OGQ3MDJlYjM1YjAyY2Y1M2Y3IGxlZ2FjeS10cnVuaworODgyNiBiNzMzMWJkMGNjZjU3N2NiOWE5YTYxYTgzMDkxMzRiMDYyY2U2ZGIyIGxlZ2FjeS10cnVuaworODgyNyA5YTEyMWIzZmJlYmJiYWYxYTVhNTE1MWQ0NWMwNDFiMTYxMDRiNWM0IGxlZ2FjeS10cnVuaworODgyOCAzODY0ZGYyOTQ5NzlhMDY5NjFmM2NiOTdkYWNlYzVlMGFlNzdmZWNjIGxlZ2FjeS10cnVuaworODgyOSBiNjJhN2E1OTQxNGU3ZjNlMGY3ODU1OTdlZGM1OTRmOTY0ZDU4Zjg5IGxlZ2FjeS10cnVuaworODgzMCA2NjZhY2NkNjY4NzhiNzY4MTAzYmM4MDFmMGE4YmVlNzkzODRlZWMyIGxlZ2FjeS10cnVuaworODgzMSBmNGRjYmMwMjdjZDIyZWU3ZWE0MWI3NjI2M2FkZjdkNTVhMGNhY2U0IGxlZ2FjeS10cnVuaworODgzMiAyZTQwZTI3ZjhiMjYwZmM0NzYwYjQ3MTNkMTk3NGJmZTQ0OTZiOGZhIGxlZ2FjeS10cnVuaworODgzMyBhODU3ZDJmODczMzY0YzBmM2U4Y2RjMmE5OTAwYjVmNDI1NTUyNDIwIGxlZ2FjeS10cnVuaworODgzNCAxNzRjMWJjYzhlMmQwZDgyOGVmOTZjODI4NjczZTc3ZWMyOWJkMjcxIGxlZ2FjeS10cnVuaworODgzNSA5ZTgyZGQ3NjI4OGU4ZjE5MzBhNDliZmMzZjhmYjJkZjczZDQ2NmRhIGxlZ2FjeS10cnVuaworODgzNiA3ZGY3OGY5ZDZkMzQ3Nzc3YWExM2E2YmI2ODllMzNjZDEzZTBlZjZlIGxlZ2FjeS10cnVuaworODgzNyBkNjRlODVlZDdiNDQxZGFkN2RmMjA2OGM1NjBjMmYyNzVmNzBkNjNmIGxlZ2FjeS10cnVuaworODgzOCAwZTdlMjAwNDk2MzcyOGEzNjUyZWVlZmYwZDQ3Y2ZlNGFiNzQzNTc4IGxlZ2FjeS10cnVuaworODgzOSAzMjY2MzI2N2ViNDA2MTk2MGMwNTg5ZTBjYmY4MjFhNGIzOGNjZjU5IGxlZ2FjeS10cnVuaworODg0MCAwYzc0Njg4YmMxZmZhNDkzNjBiOWY4M2E1OGJkZWVkMDQyMWUwZDNjIGxlZ2FjeS10cnVuaworODg0MSBmMzliZWUzZmYyMmJkYWMyZjFlMjJhZDliMDJkMjk4MWE4N2MzODc3IGxlZ2FjeS10cnVuaworODg0MiAyMWI5M2Q5ODkyNmI4MTVhYzllY2UyODRkNGI3YzY0ODJlY2E3NmRlIGxlZ2FjeS10cnVuaworODg0MyA3MWMzYmViMjk0OTk5ZGFhYWE4MmY4NDc1NjdiMDljNTAwZWVkZGY1IGxlZ2FjeS10cnVuaworODg0NSAyYzI5Yjg5ODI2NDMzN2QwMmEwMGY2ZGQ1ZDk0ZWU1OGE1MGRjYTY4IGxlZ2FjeS10cnVuaworODg0NiA5NGUwYjMxZmRmNWYyODMzMTU4ODg3MWZmMWRhYTI1NGM2ODFkOTdkIGxlZ2FjeS10cnVuaworODg0NyBmODIyNDA0NmNjZjhjYjMzNjI1MTRhODZjZTM5ZjlkN2E3YjVlYjE5IGxlZ2FjeS10cnVuaworODg0OCAzNjQwNTMwOTM5N2ZjMjY0OTA2N2I5MjhlMDJlNmJkMTFmMDMyNzMyIGxlZ2FjeS10cnVuaworODg0OSA2NzhhM2YxZDBjODA5YzcwMGJkMmY0ZjY0OTNkOTM3OGI5OTViZWUzIGxlZ2FjeS10cnVuaworODg1MCBjNzEzOWI2ZjczNDA2ZTFiYjI4ZjEwZjQxYmNjODEzNTBlNzdlMTMyIGxlZ2FjeS10cnVuaworODg1MSA0N2E5YTZkZTIzZmZjMjNhZjI4YzIzYzM4Njc0NTU0YWFjNzQwNjJkIGxlZ2FjeS10cnVuaworODg1MiBmNmVmOWFmNGM4Yjk1NGE1NWE3YjRmOGViYWVjZDE2NGM2NThkYzhlIGxlZ2FjeS10cnVuaworODg1MyBiNjgxODVkOTQ3NzdjMGQxYWUyYTQ5YmI0OTUwZGI0OTQ5ZGQwOWRhIGxlZ2FjeS10cnVuaworODg1NCAxYWZjYWM3NjU4ZTU3NDZlNDEzZDRiMjBjMzFlNjM0MTk2Y2U2M2M3IGxlZ2FjeS10cnVuaworODg1NSA0Y2IyMjNmMjkzMzc2ZmE3ZmYwNmQ2MGUzOTYzNmJkNzcyZTExOGFkIGxlZ2FjeS10cnVuaworODg1NiA4OTIyYzdmM2EyODU1MTE4OTcyMTMwMmM4MjJiZjYyZjFkMDUzOGY0IGxlZ2FjeS10cnVuaworODg1NyBiODNlYTJmZWYzMzJiMWFhZThhZDFiM2FiMGYyMjFjYjIxMzE2ZGUyIGxlZ2FjeS10cnVuaworODg1OCAzN2ZmNzFjZDk0MWViMDRlNzQzYmFlNWU2NWI0YmJkZGVjOTE1NDQ2IGxlZ2FjeS10cnVuaworODg1OSA0NDkwNDc2NGRhZmE4Yzc0ZDMyY2Y5NmQ1OTQ1NWMwZDlkYjhhZmMwIGxlZ2FjeS10cnVuaworODg2MCAxNmNkMzk4MDVmZDUxODdhYjZmODJmZmFiZDFmOTMxYjllY2U0MDY4IGxlZ2FjeS10cnVuaworODg2MSAzZjE5NTI1MzQzNjdiOTkxNTQ1MjQ1NjhmNzcwZTk1ZjM5MTcxNDUzIGxlZ2FjeS10cnVuaworODg2MiAyMzhhOGI2MDk2ZTFiYjFmMjdjNTQyNTkzOWExZDJmZjI3M2M2YjdmIGxlZ2FjeS10cnVuaworODg2MyAxNGQ1OGI1YTIxYzQwODY4YmMxYjkwYWM4ODk1NWQ0N2U1NTY4ZWZmIGxlZ2FjeS10cnVuaworODg2NCA1MDVmNTIwMTBmMmFmOWRmNDk2ZjVhZjZjNWE3NjYzM2U1ODgxZGQzIGxlZ2FjeS10cnVuaworODg2NSA4MzNmYjAxNDA5ZjM0OWE0Yjk1YzdiYmI5NjExNDM4ZGQ0MmRlZWUzIGxlZ2FjeS10cnVuaworODg2NiAzN2U2OGI0YTUzOTczMzYzMjBjNmViMTMxMjAzN2ZhMmVlNTJlNmU3IGxlZ2FjeS10cnVuaworODg2NyBiZGY0ZTI3ZjViOWUzZDEzM2VjYzJkNjk3MWYwYTQ0OTlkODllMjk4IGxlZ2FjeS10cnVuaworODg2OCBhMmRmM2M5ZTVmNDNhY2ZiZjQyNjZhYmNmMWUxZjQzMjllNGY5ZGE4IGxlZ2FjeS10cnVuaworODg2OSA3Y2JlZjBkNzRlYTM0MWFiMTgwMjM0MzFkNDdkN2I3N2M5ODRkMDIzIGxlZ2FjeS10cnVuaworODg3MCAyNGYyOTU4NmRlOTY5MDM2N2ZiMGQ5MjhkMWQ2MjJhYjU3N2U5MDdlIGxlZ2FjeS10cnVuaworODg3MSBmNmYyNTExYmI2YmFhMmY4MGM0YThjNWY0MjMzOGJhYmU0NzZjNWEwIGxlZ2FjeS10cnVuaworODg3MiA3ODRhMTZmNTY2NDM0NzQ4ODg4NjdlZmQ4MWE2ZmJkNDg0MmYzOGU5IGxlZ2FjeS10cnVuaworODg3MyAyMmRhZTI2MzdlMDgyZWQwNjg3OWU0YWNhZjhhMzVhNjZkMjMyNDRmIGxlZ2FjeS10cnVuaworODg3NCA2ZWE5MjZiNDZmOGFlYmJmZjBlOWQwYzhhMzgzYmM5NGNhZTMxODk4IGxlZ2FjeS10cnVuaworODg3NSA0ZDU1YmZlMWZlYmJlYzYzNjIxNjYxMmNkZDFhOWFlZmMwNDI2OGQzIGxlZ2FjeS10cnVuaworODg3NiA5ZWQ5ZWI0YTdmMjNhNGZmODE1Mjk3NjE1MjFkYzJkZjc0NTNjY2VmIGxlZ2FjeS10cnVuaworODg3NyBjN2ZlMzg5MGYxMDNlNjY0ZjA4ZDkzMDY3Nzc1ZWNjNTBiZGQyZmQwIGxlZ2FjeS10cnVuaworODg3OCAwNDkwZjZhODRkMzQ3NTE2OThlMzljZmMzYjg5ZjBjOGM5M2EzZDQwIGxlZ2FjeS10cnVuaworODg3OSAzMjI0ODc4YmQ4YjNhOGUwMTkwZGU4NzVjODdhYTExYmVmNDBkMWYzIGxlZ2FjeS10cnVuaworODg4MCA5ZjgxMzRlOTU1NjViNGE2ZTQxZThhMDg5ZDJiZjg4YjRhODMzNmE5IGxlZ2FjeS10cnVuaworODg4MSA5NDUyYjc3ZDY3ZWM5ZmEwZTZmMzMwMmMzMDkyZGE1ODA4YWVmMGY2IGxlZ2FjeS10cnVuaworODg4MiBlZDZmNmYwMzIyMTcxOWIyZjY2MGU4MGYxOWE5MDJiNTdlZWQ2MmM3IGxlZ2FjeS10cnVuaworODg4MyA2NTE3N2FiNmE2OTZjNTE5OWEwY2ZiYmRjZTBmNDBkNmQ3YmM4ZTFiIGxlZ2FjeS10cnVuaworODg4NCA4MTE1NGE1MWMxNmVkMmE2ZGVmZTE5MmJhMWUyYzVmZGQyNzE0MzMzIGxlZ2FjeS10cnVuaworODg4NSA1NzQ4NGUyMWUzMjcxZGIyZDljNGJlMzEyZTlmN2U5YWZiYjIwZDE1IGxlZ2FjeS10cnVuaworODg4NiAxODQwOTNkOTZkMmEyYmI4ZGNmYWEwZmNlYjg0NDkwYThlZDJmYjkyIGxlZ2FjeS10cnVuaworODg4NyA0YWRjN2U5NmFiYTI1MjhkNjcxYzRmNDk4NGY5YmNlMGQ2MTg1N2UxIGxlZ2FjeS10cnVuaworODg4OCA0MzkzODAwZjkyNjE1OTgxMjJiNmQ4ZjFlOWJjZjBlMjQzZjY2NDVjIGxlZ2FjeS10cnVuaworODg4OSAzODY1NWUzYWQxOTI1N2UzNWYxODRiYjNhNzAzZThjMzkzMWZlNTFhIGxlZ2FjeS10cnVuaworODg5MCAwNGYzZDI1OWY5ZTk5YWM3ZTg2N2FiM2E0YTIyYjM3ZTZhZWE3N2I0IGxlZ2FjeS10cnVuaworODg5MSBjMzc4ZTdhMDIzNGEyYTEwMzdiOWFlZWFjMWY0N2QwYzk0YjgzY2ZhIGxlZ2FjeS10cnVuaworODg5MiBlY2M1M2VhOGQ0ZWI2NWMwNjI0YzQ3ZjE1YWNmYThiOTllODY4OWU3IGxlZ2FjeS10cnVuaworODg5MyAyMzA4M2JkOGMyNjE4OTg3OWNmYzQxYjdhMjRkNjliMDhjMDkxOGYyIGxlZ2FjeS10cnVuaworODg5NCA3Zjc3NzEwYTIyZDBhNjcxZWVkZmYxZTM5OTlkOTA1YWRjYzU3MDU2IGxlZ2FjeS10cnVuaworODg5NSA0NDkxZjg0YWMyMjNhMTZlOTEyZmM3MDRjMTYwNmE4ZGJmM2I5YzIwIGxlZ2FjeS10cnVuaworODg5NiA0OGRmMDFlYWEwOWEyNDVlODI1NDA1MDVhM2YzODgwZGYzZWU0ZTg5IGxlZ2FjeS10cnVuaworODg5NyA2ZjA2NDEwZTMwN2FmNDUzNzVkOWNkN2JmMzAzNGI4M2NjZGMxNWMxIGxlZ2FjeS10cnVuaworODg5OCBhYmVkNzU0YzdiN2Y1YjEzMDljYjcwYjFkMDQ4ZDdmNjM3NTlmYTEwIGxlZ2FjeS10cnVuaworODg5OSBjNjJlMzRlYTQ2NGIyZDQwZTdlZDY2NDkwY2YyNjZjMjg3YzkyNmI0IGxlZ2FjeS10cnVuaworODkwMCBmYjliMGQyNDZlZjM0ZWJmNjE4ZjYyMDBlYjc1ZmIxM2I4YzQyMWMzIGxlZ2FjeS10cnVuaworODkwMSA2NDQ0ODRlMWEzN2I3ZWUyYmQ0MzVkYTljMGI2ZWZhNjY2NDE3NWZjIGxlZ2FjeS10cnVuaworODkwMiBhYWNhNDdlZjU1YThkNDgzZTkyOTViZGM4NWUxYjg2ZWFiY2MxZmNhIGxlZ2FjeS10cnVuaworODkwMyA1ZjAyMTYzMDJjZDhmNGM4Mzc1Yzc2ZDQxNDMyZWJkNjMyNDQxZGI5IGxlZ2FjeS10cnVuaworODkwNCAwNjgyNTRmZTU2MTdlNGJhZmIzMjM2OTBhOTVlOWQ3NmRiNmYyOWZjIGxlZ2FjeS10cnVuaworODkwNSBhZWU1NmU5ZDEwZmM5MzU5MmExYjM4YjVhMGQ1ZTExMjNiNzdlYjhmIGxlZ2FjeS10cnVuaworODkwNiBlMzU2YTM0NDgxOWQ3YTIyNjBkYjY5MWNlNGY4OGQ1NzEyNWFhNmU0IGxlZ2FjeS10cnVuaworODkwNyAxNGE3MTEyNjhjNTFiYjY5MzdiMTcwODkyM2ViMDlmMGEyNjFkOWQyIGxlZ2FjeS10cnVuaworODkwOCBlNzhiNjE3NGJlYzkyM2UwYTNlYjhhNzkyOWY4NTVkYjkzNmIyZTliIGxlZ2FjeS10cnVuaworODkwOSAwZGYwMTU5MDUxMDA4ZWI1MWJiZDk4YjUzOGMzZDAxOGEzNjYwNDY2IGxlZ2FjeS10cnVuaworODkxMCBjZTU2YTdjZmU5NmNmZDEwMWM2ZGIzMWU2Njk2ZjY2NzQyMTJiNDUwIGxlZ2FjeS10cnVuaworODkxMSA0MzU2MDZiMjE1YzUyYmFlY2ZlMWE0NGQwOTdiMmQyYWJhZmU0N2Y1IGxlZ2FjeS10cnVuaworODkxMiBjODNhMWIyMWM0MmQyYTA4NjBlMjI5ZmMwZmJjYWQ5ZjBjMzkxNWNiIGxlZ2FjeS10cnVuaworODkxMyAwNTNiYmFiMGVjNTNlMjExMjI4M2UxODkzNjc4MTA3M2VlOTU4NDM4IGxlZ2FjeS10cnVuaworODkxNCBlNTdjNzJhMmIwNjU2ZDFmYTBiMTFlMjAxN2M3M2U3YjI4MTg2MzkzIGxlZ2FjeS10cnVuaworODkxNSBmMzg0Y2MxMWI3NWJmMDYxMzI1ZDhlZTMwZDE0MzZmZTE0ZjYwNmFkIGxlZ2FjeS10cnVuaworODkxNiA5ZTQ2ZWNmMDNjM2U4MzMwZTkzYTFlMjc1ZTRjYjYzZTIwNWY1MWQzIGxlZ2FjeS10cnVuaworODkxNyBkNzc2MGExYmE0Y2E3NjllNjI0N2E1YzFmYzNjZDhlY2QxZTdmZWE5IGxlZ2FjeS10cnVuaworODkxOCA0MmJjNzkyYWM2OWZhZTU1ZmYyMzA0ZjQyZWU1NDdjNzkyNzhmZTMxIGxlZ2FjeS10cnVuaworODkxOSBkOWU1MTQ1MWViZGY5MzAyYzRjNjJmZDBlM2I4OWZjMjUzMzVlNjQxIGxlZ2FjeS10cnVuaworODkyMCBkZGZjZWZjMGQ4MjY4MDdlMWU5YTU4ZmY2M2EzYzBmZTc0YTJkOWRlIGxlZ2FjeS10cnVuaworODkyMSAxMDhmZmYyNTQ2MmQ1NjIyZGQ2YTc1ZTY0NDc5ODNmODYzZjBiNmE1IGxlZ2FjeS10cnVuaworODkyMiA5M2MwMTVlYzJkNTdjYWFmODYwZDM5NGZkNzJmMDQxNzdiMTE0NTQ4IGxlZ2FjeS10cnVuaworODkyMyBiZGU1YWFmM2U1ODk3NDRiMzRjYWIyYmM2MDE5MWY5ZGYzOWExODlhIGxlZ2FjeS10cnVuaworODkyNCA1ODAzNzgyZTczZmZiNzJkZmRkOGY5M2E1ZmJhYmMxNGQ5ZDZhMDUzIGxlZ2FjeS10cnVuaworODkyNSAzMWE1MDQ2ODM2NmJhZTM3Y2NjMTE2ZmE4MDQ4YjJhZTEzODU0NTQzIGxlZ2FjeS10cnVuaworODkyNiBiODU0Y2E0NjA1ZTEyMjk4MTQwYmIyNzBlMzVlYzdiNmM3Y2Q1MGNmIGxlZ2FjeS10cnVuaworODkyNyAzMzUwYzczNTUwZWU4M2QyMzA5MjZmN2I3MTk5MDk2NmI3YzhkYTFmIGxlZ2FjeS10cnVuaworODkyOCA3N2EyMmQ0OWRkODU4NWRlZWMyMWZkNTRkZWY1OWIyZGZiYWVjNmFlIGxlZ2FjeS10cnVuaworODkyOSAxMDQxMzE3OWE3MmE1ODkwM2U0NWM4NWNhZjBhNzEwNTliYWJiNGUwIGxlZ2FjeS10cnVuaworODkzMCA3ZWE0NjU4MzBlZjQ1ZGJkZDMwOWQ3YjVmY2Q4OTQzOTVjMTJhMWExIGxlZ2FjeS10cnVuaworODkzMSBjOWIxMzliOWM1ZmZmNTAzYzdmNWMwZDNjMGEzMmY2MGM5ZDdkNTI0IGxlZ2FjeS10cnVuaworODkzMiBiNWIzNWEwY2YxYWE5MjgyNjI2Y2E5MDllZGJhNDI5ZWZjZTk4MzdhIGxlZ2FjeS10cnVuaworODkzMyAyMTM4Y2YzYmRjNWFiODU4ZmIyNWI0MGFiZjRmNjI0Yjk1OTJmN2VmIGxlZ2FjeS10cnVuaworODkzNCAyYzVjMzk5YjZlYTQ2MzM5MmUyMzYzMTNhODVmYjdlMDI5NGM0ZTgzIGxlZ2FjeS10cnVuaworODkzNSA5MGVlZDlhNWQwN2E4MzU4ZDEyMTA0YWJiYzJhYjA4YzNiZDQ4YmJiIGxlZ2FjeS10cnVuaworODkzNiAzOTM0ODk3NGIyMmU4OTAwN2ZjZGJhOTQxZmMyOGRjNzgwZTk5ZGExIGxlZ2FjeS10cnVuaworODkzNyBiNjVlYjQ0NDIyYmE5MzIyZjc5MWE4ZTQzYWY2M2U0MDUzMjg1ZjgwIGxlZ2FjeS10cnVuaworODkzOCA3NzdhZTUyNjBhMTJmNWM4M2M3ZWI3MTQxZDhiZGE3ZTBjODYxOTlkIGxlZ2FjeS10cnVuaworODkzOSA5OTg2MjcyY2UyNGExNWM0ZWZhYmQ2ZjBkMzZlZjg5MDViZTJkNWQ2IGxlZ2FjeS10cnVuaworODk0MCAyMmJlZDU3OTQ1MTRjNjI3OTEwNzUxMzQ3MTkyNDcyNDQzMmViYjg4IGxlZ2FjeS10cnVuaworODk0MSAwYjJiY2YwNDI0YTA1M2E1NmVlMGNhNjhmN2VjM2RiMmM1NzYxOGRmIGxlZ2FjeS10cnVuaworODk0MiA0ZDU0NWNjNmZhOTljNGIwYWNkN2NhYzFhNGQzZmQ5MDU4NzJkMmM3IGxlZ2FjeS10cnVuaworODk0MyBjMTQyZWI1MzNmYjkwZjliMzIxMzQxYzcxNzU4YmYxZjI0YjA0OGFiIGxlZ2FjeS10cnVuaworODk0NCA5NDE2Mzc1OWNiMDIxYmRhNzc5YzYyZDEwNGMzODczZjM3YTE0NmNmIGxlZ2FjeS10cnVuaworODk0NSA2YTkxYTBmNjQyZmU3YjBhYzM2Yjc0NDMyYzYwMmI1YjlkYzhmNjdlIGxlZ2FjeS10cnVuaworODk0NiAxMDNjNjM5ODNjZGZhNGRiY2EzMDhkNWJiMmY4NjAyYWI4OWFhYjhjIGxlZ2FjeS10cnVuaworODk0NyBkY2E5YmRmNWVhMDhhODBjMWYzYTZjMWJiM2NiNjMzNTY3NDZiNDNlIGxlZ2FjeS10cnVuaworODk0OCBlZTRmMmIxY2VlZGE0YWFjMjZkNDQ0Mzc2MzA1M2YwZGU3Y2VhZDk1IGxlZ2FjeS10cnVuaworODk0OSBkZjY1OWUyMzllOTA2ZDliNjE2N2NmNzE3MjVlNjJiMDNhZjA5ZmJkIGxlZ2FjeS10cnVuaworODk0OSA3NDY2NTRhMGFmNjgwYzdkOWI4MTRiMjEwYTAyNmViOTFiZWM5NTMzIGxlZ2FjeS10cnVuaworODk1MSAyZWRlN2MyYWM5MmNmMWVlODllOGU1MjQxOWM4OTAxYjAzNGI3NTg2IGxlZ2FjeS10cnVuaworODk1MiBkMTUzMjQyYWE2YmIyZGMzYjFmYmVjOGM5YWUyYWU3ODU5NGY2ODFiIGxlZ2FjeS10cnVuaworODk1MyBmNWY3NDRlZDgxMzdjN2NjMzRiZmQxMThkNjVjNjIzZTZlNDE0MTYzIGxlZ2FjeS10cnVuaworODk1NCA3YWIwYjA1MjkzYWE0MjcyMGQxNTFjYTgzYzdlM2JkZWI5YTU1MTFlIGxlZ2FjeS10cnVuaworODk1NSBjNjdkODQyMWZhMjE2NjY4MDhhMjRjNjIzODc3ZTMzMmQ3ZTRjNTNjIGxlZ2FjeS10cnVuaworODk1NiAyOTdhNTQxZWI4NjU3NGMyMzI3YjJjMDIxOGQ2OTEzNGExZjBhOTcxIGxlZ2FjeS10cnVuaworODk1NyA1OGI0ZDllYThlNTEzODQyZjM0N2UzZDVhNDMyZjNlYmZjMTY3MjQyIGxlZ2FjeS10cnVuaworODk1OCA3MjdiNTIwMzEyMTI1NzdkOWVkNTE5NWY5NDdiZjBhZjAxNDcxNGQxIGxlZ2FjeS10cnVuaworODk1OSBjYjA1ZWEyYjYzZDlkMDAwMDY3YjVjMmUxNTcyZmUxNjNjNTA4NzM3IGxlZ2FjeS10cnVuaworODk2MCBkMzExYjY4NzU0YzE4NmU4Y2QzZGU3MDJiYjYzNDBhY2U5YTliMmM3IGxlZ2FjeS10cnVuaworODk2MSA1NjNhZTIxYjIwNTc4MzYzOWQ4NjE4ZjljN2E5ZmMwZDBkZjg5ZWI2IGxlZ2FjeS10cnVuaworODk2MiBiOGUyNjA3OGQ4YjFhZDM4ZjRhMmFkMTJiMGI4ZjRhNzZmNWRmZWQ0IGxlZ2FjeS10cnVuaworODk2MyAyZjI1ODE2MmFhZTJhY2RmZWQ3NmM1NmViYmIyYmRlMzY5MTk1ZGJkIGxlZ2FjeS10cnVuaworODk2NCAxNjE4MDYwNzE2ZTc4MTk1MjNiZjFjNTAyMTUxMmM4ZTEzNDRmYTU2IGxlZ2FjeS10cnVuaworODk2NSA2MzA3MjU4MDVjNjYyMmZmYzcyNGU4ODQwZTI3ZmZkMDE3NmM0Y2I1IGxlZ2FjeS10cnVuaworODk2NiAzN2M4ZDdmOTY3YzcxYzBkZTQxNGJhY2E5MmI3MWU5YWJlNjhmODgzIGxlZ2FjeS10cnVuaworODk2NyA0ZTFhMGZlMGFjZTI0ZjU2Mjg0NjEwMjU4MDY1MmU0NGExOTE2NjJhIGxlZ2FjeS10cnVuaworODk2OCAyZjlkNTlkYTcyZmI4NmY0MDRiN2EwZTQxNWMyNzRjMDA5ZWI0ODVlIGxlZ2FjeS10cnVuaworODk2OSBhZTc0YjZjY2VmNTdkNDM3Y2Y3Nzk2ODAzYWQ1Y2YwZmMwZDIzZDRiIGxlZ2FjeS10cnVuaworODk3MCAyMjJkZDRkMDY1ODEyOTRmMjI5NTY1YzQ0N2Y5YzQ5MWEyODNlOTZkIGxlZ2FjeS10cnVuaworODk3MSBiYjhjMzAwNGQ3NThlYzFiZTllZDczMTY4OWI1MGYwYmE1MDMyNGE0IGxlZ2FjeS10cnVuaworODk3MiAxN2UzZDliNmI0MmU4Mjg1ODEzNGMyYzQzYzA3YjY2ZGQ0ZDQwNWJhIGxlZ2FjeS10cnVuaworODk3MyAzOWQyYTRkYjdjM2I4MGI4MDM2YjM2ZmViZTZiOTIyNDBiNTVmZjAyIGxlZ2FjeS10cnVuaworODk3NCBjZTQ1ZWY0YzY1ZTkxYmU3YjI5YjVhMTM1Yjk3MTRhZjExNjFjN2M3IGxlZ2FjeS10cnVuaworODk3NSBiMzhhNzU1YjhkYjFjODdhZWUzMGNiMjI5ZGIzODQxNjJkNTUzNWI2IGxlZ2FjeS10cnVuaworODk3NiA0OTgxZmQyYjMyMTE0MDZhYmE1ZDE2ZTRjNGVjNGViY2I5Y2U3NzE2IGxlZ2FjeS10cnVuaworODk3NyA2YTA4YjYwZGU4MmM3MjMwYjEyZmZlZDA2NWQ4YzZhYTYxOWI1OGRiIGxlZ2FjeS10cnVuaworODk3OCA4NzkxMzBmMWZmNWZjYjEyMmM3Mjg1MDcyYTQ3ODZhMDQwODFiZjk2IGxlZ2FjeS10cnVuaworODk3OSA5ZWY5Y2FkZDk3OGM1NGE4MTJhOTY1YzViNTkzNzAwMDFhY2ViY2JhIGxlZ2FjeS10cnVuaworODk4MCAyYTJlNWI3MzFkMWM3NzYzMzk5OWExMmM5ODYyMDIxY2Y2NTIyMjQ5IGxlZ2FjeS10cnVuaworODk4MSA5OGIyYTBhMDkzYzlkNDljOTdkZDdlYTVkZGYzZjU5MjdlZmMzODBkIGxlZ2FjeS10cnVuaworODk4MiAwNzFhMGQzYTQ5YjlmOTBmNWMwYmYwZmJhZjBlZmY5OTY4NWJmMjQ5IGxlZ2FjeS10cnVuaworODk4MyBiMDQ5NGJiNTIwMTk5NGY5MTQ5NjY3NGY1ZTRjOWI0NDQyZTJkNzllIGxlZ2FjeS10cnVuaworODk4NCBkZjZkZmFhYzJkMGI1MWEyZWZkMTJkZmNkYzFkNTAxNTM0NmI3NDBlIGxlZ2FjeS10cnVuaworODk4NSBhMDAwNzNmMmUwODdhYjRjZTE3MjljMWIyMGI4YTQ2ZGIyYWZhNDc2IGxlZ2FjeS10cnVuaworODk4NiA4MDczNWZjYzM1YWZmYjcyODE0NGY3NjZlYzFjNTRlNGJhOTZhNzZjIGxlZ2FjeS10cnVuaworODk4NyBmMDIyYmJkMTIzMzg2ODAxZDFkNDY1YTE4YjcwOTQyOGE4OTM5M2M0IGxlZ2FjeS10cnVuaworODk4OCA3NDUxOGQ4ODJlZDMxYWU5NDM1YTJiZTExN2U3NGI5NWFlYjdhM2NhIGxlZ2FjeS10cnVuaworODk4OSBmZGI3NzYzNmMwNzQzMDJmMDZhNTgzNDQxMzUxZDc5ZTIyNDczNTMxIGxlZ2FjeS10cnVuaworODk5MCBhM2RkNTkxMDgxMTk2YTJiY2FjYzNmNjRiZTIwOGI5ODYzOGM5MGU3IGxlZ2FjeS10cnVuaworODk5MSA2YzVmN2U3NGZhODgwMWZlOGNlODEyMjY0MGM1NDRiNzY1MWNhNTMwIGxlZ2FjeS10cnVuaworODk5MiA2ZDljZmI1M2M3ZWQyYzJjZGY0MjkwZDgxYzM5M2Y4MzM4YjNkMzM5IGxlZ2FjeS10cnVuaworODk5MyBlY2NkZmQxNzI3NDA2MTFlYjE1YjVmMDU0MTRkZDZhOGQ5NTA1NDg3IGxlZ2FjeS10cnVuaworODk5NCA3ZTUxNzI3ZDNiN2VmM2U0MjMwNDUxZGIzYTlhNGQ5MDdlYmVkMDdiIGxlZ2FjeS10cnVuaworODk5NSAxZDMwZTUyZGMzNGQ5YjQzNTcxY2UyYjI3MDIxY2E4OGU0NjM0OTQ5IGxlZ2FjeS10cnVuaworODk5NiAxYWZmMTk3ODNkNzQ2ZjFiNzNlOTY3ZWMxYjVlYzljOGU1YTA4OWVlIGxlZ2FjeS10cnVuaworODk5NyAyNGRhMDM1Y2ViNmViZDFjODVjODJhYjExNDMzOWUxNTRlODc1YmE2IGxlZ2FjeS10cnVuaworODk5OCBmMWIxNzI4NDUyYzEzMGIyYjU0NWNmMDc4YmVlNWE1YmVhZGMzNzk1IGxlZ2FjeS10cnVuaworODk5OSAzZjg0NTU4YTI0ZGQ4NGZmMmYzNDgxMmViN2JlMzUxNDVkZDYxODhiIGxlZ2FjeS10cnVuaworOTAwMCA5NjE0ZmRkODEzOTM2ZWNiODhiMTQ1MzhkZDY3ODcwNDU1MWYzNDVjIGxlZ2FjeS10cnVuaworOTAwMSBlZTQ5NmVmMWNhODM5OWI3MmYzZWY0ZTBmNTU1NDJiNjViMDkzZTYwIGxlZ2FjeS10cnVuaworOTAwMiBlOWM2N2MxOTJjZGI2Njc0MmQxMzkwZjI1OWE0MGU5Mzg1YmE3ZWJkIGxlZ2FjeS10cnVuaworOTAwMyA1Y2NiMTJhZmZiNTRjMGM3MTY5MTk4YjE0ZWMzOTEzMTk3MDFjMTU1IGxlZ2FjeS10cnVuaworOTAwNCA0NmZhNDcxN2NmMjRhY2I3ZmNjNTdiOThlYmJlODU0ZGRhMzY0YTM5IGxlZ2FjeS10cnVuaworOTAwNSBiYzE5MDAyNDNlMzM5YTBmZDJmMGUwMmQ1M2I3OTY4NTU3YWIwMzRmIGxlZ2FjeS10cnVuaworOTAwNiA3MjNjODk4ODMxODgxZDA3NWQwODI5ZWU5MTY1ODRkYjUwN2NhNjAzIGxlZ2FjeS10cnVuaworOTAwNyA4OWUyZWFhY2ZkOTAwMGFkZDcxYjhmMWFjNzc3N2Q5N2Y5OGYzNjFmIGxlZ2FjeS10cnVuaworOTAwOCAwY2QxZjJmMWQ4MmQxYzk1ODM3NWRjY2Q2ZDY1OWQ0ZjhlZTY4ZjI3IGxlZ2FjeS10cnVuaworOTAwOSBlNDk3YTdmYzBhYTg1NmM4NTg0NWZiMDE3MDYwODI4OGQ2OTNiMGNlIGxlZ2FjeS10cnVuaworOTAxMCBkMzY5NjI5ZThjMjdjMGEzZGQwYjhmZTAzZmQ5YTEyOWJmNWMwOGZlIGxlZ2FjeS10cnVuaworOTAxMSBiYTY1MzcyNDA4ZGRjNmJiZGUxYTJkZjM1ODNhYjgwMTBmYjU3YmMwIGxlZ2FjeS10cnVuaworOTAxMiAwODY0YTU1NjZkODlhYmRkZDVhZWFlMWY2MTA5YjgzY2M3YTBhODZjIGxlZ2FjeS10cnVuaworOTAxMyA2NGM1ZWZhOWQyYzRlNGMwMGZlZTkyNDY4OWVjY2M2OTljYjczYjA5IGxlZ2FjeS10cnVuaworOTAxNCAxODcwMzUzOGFmNDgxODE3MTgxOTQ3MjNlNDU3ZTAyZjdjYmEzNjNlIGxlZ2FjeS10cnVuaworOTAxNSAyNTUwNWU1NjNiMzdiNzJmZTk3YmFjMjMxNDc1NzYzYTA5MzMzNDEwIGxlZ2FjeS10cnVuaworOTAxNiBhMWEyYjcxMTU5OGNkN2FhZTFiMjU1N2U3ZmJjODUzYzhmMDI4NmVlIGxlZ2FjeS10cnVuaworOTAxNyBkMWY0NmEwOGQ3OGE4NmQyYzU5MTFmNjgwNjhhMTg3YWVlNWY2YmUzIGxlZ2FjeS10cnVuaworOTAxOCA4MGZjMGE5MDY4ODUyZWFlZjhlZjJiMDJhYThhMjdlMGNhOThkODhjIGxlZ2FjeS10cnVuaworOTAxOSBiMmRmZmYwNjc4OWM2ZGY3NzI2NzJkZjM4ZWZiZGE4MThhYTE1M2EwIGxlZ2FjeS10cnVuaworOTAyMCA2MmJkYjFjYmUwZjU1Zjk3NWI2Nzc4MGQ0MTk3MDBiM2NkNDY1NzVlIGxlZ2FjeS10cnVuaworOTAyMSBmYzMyN2VjMTVjN2VkZTJkZjdmYjZkZTMyOGJjZTAxYTc5N2UxMWMzIGxlZ2FjeS10cnVuaworOTAyMiBkMjg5MzJkNjc2YzhiOWU0YzU4NWRmY2FiOTkxZmM0YzVkNmEzOTBkIGxlZ2FjeS10cnVuaworOTAyMyBiNDUwMzIyODU4M2M0YjQ2N2IzYzUwNWE0ZmJkM2Y5NWNiNDk2Mjc1IGxlZ2FjeS10cnVuaworOTAyNCBjOTE1Yzk0ZWJiNmJmM2E4YTAyM2ZkMDQ1YzJiNWZhN2JiOTk2OGFhIGxlZ2FjeS10cnVuaworOTAyNSA3MjQzODJhZjUzMzliOGUzZDBhMDY1MTRiZDdmMWY4Njk2MDZiNDQ4IGxlZ2FjeS10cnVuaworOTAyNiBkZDFlODMzMjNjNDVmZGUxNzA4MTY5NzU2YjdkNzU0OTk3NTc2YTJmIGxlZ2FjeS10cnVuaworOTAyNyBhOGUzYjJlOWY1ZDIyODBjMjE0Y2QyYTVmOGE1YWNkNTkxNWQ1ZDRmIGxlZ2FjeS10cnVuaworOTAyOCBmNDA2ZWMzNWJmY2E2OTc3Y2E1MmVmYWZhYWYwNTE1ZTY2ZDdlODc4IGxlZ2FjeS10cnVuaworOTAyOSBiZGQ0Y2IyYTgzYjU3NTAxN2U1NDNiODNkNGQ2NDRiOWJiMmRkOTUxIGxlZ2FjeS10cnVuaworOTAzMCA1ZGJmZmM3ODQ0ZjU1YTllYzAxOTcwYTBkYmZlNDNmNDYzYzg5ZTBjIGxlZ2FjeS10cnVuaworOTAzMSAyYzZmMmQ5MmIzMTUwODg4MmExN2M0MDEwMzFjYzgyNmI2NmRhZDliIGxlZ2FjeS10cnVuaworOTAzMiA3YzljNGY4MjI0YzhiMjA3NGJkMmFkOGEwNDliOWZmNzA1ZmJjMzg0IGxlZ2FjeS10cnVuaworOTAzMyBhNWY3ZWI4NjlmMjFjMzMyOTI5MzUyZjM0MzZmNDhmNjU5ZGM1Y2U5IGxlZ2FjeS10cnVuaworOTAzNCA0MjgwYjI3MjljY2VjYjA5OWIxYzljNDVmYmUxNmU5N2Y4N2U0NGVhIGxlZ2FjeS10cnVuaworOTAzNSBiMzMxY2Q0N2UwYmM3MTE3MDBlZWQ4ZWE4OWYxNDZhNDFkZmI2ODM1IGxlZ2FjeS10cnVuaworOTAzNiBlZTMwN2Y5ODQ1YTMyNmNiNTM1MDI2MTJlNjc1ODRhOWJmMTgwNGQzIGxlZ2FjeS10cnVuaworOTAzNyAxYTIzM2JlNWZjMTdhNjg2ODA2NTQ2YWY0ZDY3YWYzMmE3N2FkZmY5IGxlZ2FjeS10cnVuaworOTAzOCA2ZTlhYTkyZmFiNjkyNzhmYTIxMzg2NmIxOTRlMGEwOTAxZWUwNjY5IGxlZ2FjeS10cnVuaworOTAzOSBmZDJkNGMwYWU2NDY3MmI5Nzc4NGMzODY2ZTdlMzVhNWRjMDAyMzExIGxlZ2FjeS10cnVuaworOTA0MCA1MzgzNTA0MzUyOGM4YjZmMTA3MDM3NGE4MGE4NGEwNDU5ZGRiMGJlIGxlZ2FjeS10cnVuaworOTA0MSAyYWExM2MwYzhmMmY2NjA5ZTdkNWEwNmNjN2U5NmY0ZjVmMTZhNjZiIGxlZ2FjeS10cnVuaworOTA0MiA4MTJhYWQ4YzA1YzI5MTQxNmY3ZTBlY2MzY2I3Yzk1Nzc0ZmRhZDhiIGxlZ2FjeS10cnVuaworOTA0MyBlMWM4ZDcxODJkNjY3ZDJjNWFhNjJhOTVhZTk5Mzg3MDkxMGEwZTVmIGxlZ2FjeS10cnVuaworOTA0NCBiZTJhMDIzNWFlODRhNGU0OWM3ZjY4MTgwNWRjNTA3ZDdmMjVhNGViIGxlZ2FjeS10cnVuaworOTA0NSAzZmRkNzE1ZTZlZjkwNjFlYjQwMGM1ZGI2YmEyN2U0OTdkMTBiYmQ0IGxlZ2FjeS10cnVuaworOTA0NiBhMGI4Mzk2NjdkMmUzZmM3NDMzN2QyNGM4MzU2MDhmZjhiOGJiOTg5IGxlZ2FjeS10cnVuaworOTA0NyBjMWJhYzUzNjA0NWZjZGI5NGZhZTNhYjg5OTE0ZDdmZmVhNGM2M2EwIGxlZ2FjeS10cnVuaworOTA0OCBiMTE3NDA0NWJjNGFiNjc2YTc4MjRmM2U2YWUzYTM1MmFjNTdmOTczIGxlZ2FjeS10cnVuaworOTA0OSA4YjE0MzEyYTAyOTAzNTlkZGQ5NzJhZDQwNGQzZWI3ZGM2ZGY1MjlhIGxlZ2FjeS10cnVuaworOTA1MCAzYjcyODc4NjcyY2QyZTJjMzIzNWQ3MzExNjI4MTc0ZDA5YjM3MjAwIGxlZ2FjeS10cnVuaworOTA1MSA2N2EyYWZjZGQyMWMxMDJkNTAzYjgxODJiYzFkNTFlNzk4MTdlMDFlIGxlZ2FjeS10cnVuaworOTA1MiA2ZmZhOWNiNjU0ZTJiNGZjYzJjZmU1NTA0MmQ3NTUxMzAyNTE1N2ViIGxlZ2FjeS10cnVuaworOTA1MyAwMGRhYjc1YjllZjEyZTE4MGI3NzNlZjM4MThiYWM0NDAwMWE5MzA2IGxlZ2FjeS10cnVuaworOTA1NCBkMjljNGIyZjQ5YWUyNzIyYjA2NGI1Y2ZkM2M4ZDZjMDc3MjQ0MThkIGxlZ2FjeS10cnVuaworOTA1NSA4NTU5Njk5MGRiNDNmOTlhMzllNmM2ZmVkZjAxNDRkYjgyMTY5OGE4IGxlZ2FjeS10cnVuaworOTA1NiAwMWVlNTYwN2JiMzVmNDU4MjQ2YjNjNWMxMDU3ZTcxNGYyNzkwZWEzIGxlZ2FjeS10cnVuaworOTA1NyA5MjFkMTdjYzI2OTJiMjkzZmYxY2JhYzU0YWM0M2VjYWIxMjQxMmIxIGxlZ2FjeS10cnVuaworOTA1OCBhMWQ4NWMwY2FlNWE2ZWRiNTVmNGIxYmVmMWRjNGRjYWY4ODMwMDY1IGxlZ2FjeS10cnVuaworOTA1OSA5ZTA3ZDViNjllYmFlNmE4ODI5ZGYzYTk2YzYwMmNlYzU5ZWU3NTM0IGxlZ2FjeS10cnVuaworOTA2MCBmOTZlNTdlNjk4NDZmMDc4ZWQ2NDk1MmY3N2E1YzljZDQ4ODk5NzllIGxlZ2FjeS10cnVuaworOTA2MSAwOGRkZTVlNWNjMjc0YWJmNGNkZTM4ZDFiMDY2MWYyOTEzZDYzMmQwIGxlZ2FjeS10cnVuaworOTA2MiBjMjY3MmU1YWJhOGI3OWY0NzBlNDY0OGRhODA1YzI5NWQ3YjkwZjE0IGxlZ2FjeS10cnVuaworOTA2MyBjNTY1MjcyZWQyYzc0MDdmODBhYTIyODFiOGNjNzY5NGI1MjZkYTU2IGxlZ2FjeS10cnVuaworOTA2NCA3NTMwNzdmOWViMmM4YTI2MDUxNjI2OWExYWQ1OGZmYzcwMTQzM2Y5IGxlZ2FjeS10cnVuaworOTA2NSBlMGU2NjdiYmM5NzFhNGZmNDUzYjIwZjcwY2M3NzFhYmRkN2U3YmE2IGxlZ2FjeS10cnVuaworOTA2NiBkYTAwYmI0OTcxZDhmNmYzMTMzZjkxOGEzNzI0NjBiYzk5ZjA2MmQ2IGxlZ2FjeS10cnVuaworOTA2NyAyMTkyYjkzZDUzMzdlNThiMWIyMjdmOTJkOWE0YjYzMTJlZGRlZTk1IGxlZ2FjeS10cnVuaworOTA2OCA1MTYyNDBlZjBlMTUxZGMxMzc5ZWI1MDhmMTRmOTA0YTQxYTUwNTNkIGxlZ2FjeS10cnVuaworOTA2OSA4NmI2NzcwOWMyYjQwMmNmMmQ1OWVjODcyZDk1MDY4N2MxM2MzZWIwIGxlZ2FjeS10cnVuaworOTA3MCAxNDAyNWE0Zjc5M2VjNWVkMTQzZTY3OTkwMDBhYmE2NmM2YzRhOTkzIGxlZ2FjeS10cnVuaworOTA3MSBmY2Q4ZTM4YjliMmFmOWYxMzlkYmJhMDQ3Y2M1YjQ0OTE3N2YwNGEyIGxlZ2FjeS10cnVuaworOTA3MiA0NWU4NGJlNmQ2NDA1YmRjMThjNjQ4MTYwYmQ3OWE5YWY3M2VmYWU3IGxlZ2FjeS10cnVuaworOTA3MyA1ZTBiMTUyYmYxZTY1YjFhOTQ5MTdlMDg1ZGQ5NzU3NmY2OGQxYzRiIGxlZ2FjeS10cnVuaworOTA3NCBmMTVmMGZjMzhjYjE5ZDc3YzJkYjMzZTEzMjMzY2RlYzRjYmEzOGYzIGxlZ2FjeS10cnVuaworOTA3NSBiODhmZDM4OTRkNWE0ZDM5YjU0ZDMzZWU1OTJjY2ZmYTRkMjcwNDliIGxlZ2FjeS10cnVuaworOTA3NiBjZWVlYzhjYjBhMWU3ZjVjNjk1NDRhNzNlMzEyYzdjZGU1Zjg3NDMzIGxlZ2FjeS10cnVuaworOTA3NyA2ZDZmZWMyZWVlZjZhODAzYTI2YmM5MTAwNmNmYWY2ZDIzMGZkYzA1IGxlZ2FjeS10cnVuaworOTA3OCA4M2NjZjQ0YmYxOTUzZjk0NGE1MGRkZmMzYTBjMDkxNDk0ZDgwNjI4IGxlZ2FjeS10cnVuaworOTA3OSAxZTQyOGY1MWVkNGUxM2M5NDFkYTJiZjE4OWYzMzM0MTJjOWE0NjY5IGxlZ2FjeS10cnVuaworOTA4MCA0NTE0YTVlYTNlYzQ2NDQyNTZlZWZiNjU1ODliZTM2MzI3NTQyYTE4IGxlZ2FjeS10cnVuaworOTA4MSA3YTBhNDhkNzMwNzZhODE0NTlhNzIzNTM5ZjU0Y2RmODM3YmMwNjlmIGxlZ2FjeS10cnVuaworOTA4MiBmNjdhNjMzOWVkZTc2ZWQ4ZTdmNzExYzVjNDJkYjNlODE5MTc3M2JiIGxlZ2FjeS10cnVuaworOTA4MyBkYmI0NjFlMjczYWRhYTU5N2RhYTM4YmRlNjAxMGZkNGQxOGNiYjBmIGxlZ2FjeS10cnVuaworOTA4NCBmNWI1NTMxMWU3OWRhZTg1OTRlNTUzNmZhYzNlZDQyYjk0ZDEyYzJhIGxlZ2FjeS10cnVuaworOTA4NSAyZjQ1OWViMjNhMGVmMTlmZjZhYTVhYWUxNjlmNWYyMzI2YzVlMzIwIGxlZ2FjeS10cnVuaworOTA4NiBmMWUzYTNmOGE0NmNkZjJlMWRhMGI3Yjc4MzJlNTBkNTlkZDZlODQ0IGxlZ2FjeS10cnVuaworOTA4NyAwMjNlNWFiMGY4N2Q4Yjk4ZmVhZDdkYjc1NTI3YzU1NGUzZGJkNTY3IGxlZ2FjeS10cnVuaworOTA4OCAyMzViYzZmOWUyMzdhNjgwNWZiNWZlMmE3MjBkZjI4NmRkZmFhMzc1IGxlZ2FjeS10cnVuaworOTA4OSBlNmI5ZDIxYzhlMGMwNjhjZmQ1OGNlOGUyODQxZjdmNzdhYjk2NWQ5IGxlZ2FjeS10cnVuaworOTA5MCA0YjJkOGRjOTJkYjRjYWMwYzE3YzI0NjA1NWI1ZThlYTNiNmJhZWE2IGxlZ2FjeS10cnVuaworOTA5MSAyZTg3NGE1YTkxMmYyZTFhZTk3MTk3MDU4NWY3YWU1ZTgwYzc3NWE0IGxlZ2FjeS10cnVuaworOTA5MiBlMmJjYWE5NmM5NDA4NDFjZGNiYzI4ZDNlNTFmN2Q5YzRiMzMwY2NmIGxlZ2FjeS10cnVuaworOTA5MyBlNTRkNTE3MTkwMmU2YTAxYjhhMWU5ZDc0MmE5NjFiMzEwOWI1Y2FkIGxlZ2FjeS10cnVuaworOTA5NCA2ZmU1YTUxZmVhMzAzZGQ2MDhkMzA5MWI5ZDUyMjhmNDczNzkwZjM3IGxlZ2FjeS10cnVuaworOTA5NSAyZjBiN2JhYzIwMWM1YTJhZDQ5NTU3ZDVlYjA3NWU0MjdhMWY1YmFjIGxlZ2FjeS10cnVuaworOTA5NiAwNDMxM2Q0ZjkzZmY3MzMwYmFiYWJjMzZiMDNmZWY2MzU4Y2I3YTg5IGxlZ2FjeS10cnVuaworOTA5NyAzYzRkNjI3NTQ2NWU4ZjM5MGE3YmMyZmMyZmE3MjEwMTljZmQxNmNkIGxlZ2FjeS10cnVuaworOTA5OCAwMGIxYjc3YzQxNzdjYTBlYjI2YmIyM2E1ZGVhZWJjY2JiMTM5OWFmIGxlZ2FjeS10cnVuaworOTA5OSBiOTZhYWQxMmExNTBiYjZjMzAwNGI0ODVkOWNjZjAyOGZkMmJlOGI1IGxlZ2FjeS10cnVuaworOTEwMCBmMTQzNDhmNzU3Yzc2OTk4OTgxMjBkZGEyNmVhOGExYTE0NmIxOGFlIGxlZ2FjeS10cnVuaworOTEwMSA4MmQ2Nzc0ZGEwYzY5NzFlZWE2NGNmYWEzNzYwNjYzNWYwZDg5ZmVlIGxlZ2FjeS10cnVuaworOTEwMiBiZTA3OTIxZDk3MTMxZTcwNmJiMWIyNWQyNDA5MTc1ZjhjNTRkMGJlIGxlZ2FjeS10cnVuaworOTEwMyBmODhiMGMyNjA4ZDgyZWMxYmI3OWM0ZGMyZTllOTZiNTM5YTI0NjNmIGxlZ2FjeS10cnVuaworOTEwNCA1ZTMxZDM4MWZhNDdkMjVjMGIzNzVhOTAzMjY4ODA4NGQzOWQ4ZDk4IGxlZ2FjeS10cnVuaworOTEwNSBhODM5ZDNlZmFiY2U2ZDYzNzkwMmUxOTZlODU4NGFmN2MwZjFlYzdmIGxlZ2FjeS10cnVuaworOTEwNiBlOTZhODE2NDdmOWM3ZjM0Y2MxMzdkNDk5NTNhZWQyMjE3NzQxNWYyIGxlZ2FjeS10cnVuaworOTEwNyBjZGZlM2I3ZDcxODdkODNiYjQzN2NhYTAyZjQzN2I3Yzk3MDUxNTI4IGxlZ2FjeS10cnVuaworOTEwOCA4ZjRkODlmMGYzMzZjODMzZDU3NWJkMTY2ZTQ0ZmExZjBiN2Q3NGY1IGxlZ2FjeS10cnVuaworOTEwOSBkNTE1MWI3YjlkYmNmZTllNGJmMTNjNzE3M2MyMzhhY2ZiNzlmNzcxIGxlZ2FjeS10cnVuaworOTExMCA1MmQ0MGNjNWZhMDhjYzViOWRlMjEwYWU4NjY3OTAwOWQzYTVjMDczIGxlZ2FjeS10cnVuaworOTExMSBkZjJhMmU0M2JlMThjZWIzZjAxYzdhZTczMGRkNDljMWJlOTE0ODhlIGxlZ2FjeS10cnVuaworOTExMiBlY2ZiYWQ5MDYyMzE0MjBhNGE5YzViOWJhY2VlMWQxZTY3Zjk3YjcyIGxlZ2FjeS10cnVuaworOTExMyAwMmY1OWNiMjg2ZmFhM2FkZDRhY2U0NGVmYWY5ZjcyODljNmZhMzU0IGxlZ2FjeS10cnVuaworOTExNCBmNDA4MjdiYWFiODExMmE4ZTE1MjRlNjEyODEyODNlZDA3NTg1NTFiIGxlZ2FjeS10cnVuaworOTExNSAwMzM5MmMyN2JmOTY4YmZkZWRjMzhjMWM1NTU3ZTQ0MTFlNDRhMzIwIGxlZ2FjeS10cnVuaworOTExNiBlNmQ3ODY5NThmYjMwN2ZmNWE3NTIwNjA2Zjk3NjA0MzM1ZDg0MzMwIGxlZ2FjeS10cnVuaworOTExNyBkYTY2MmIzNDVjODc2MDJmNjZhZjYzZWU3MmFkM2I0ZThmZDdhMThkIGxlZ2FjeS10cnVuaworOTExOCBmOTAzNTFiMTU4MWIyZGYxODQyYmI1YjdmZjkxZjE2NzM0OTVkMmRjIGxlZ2FjeS10cnVuaworOTExOSBhYzRiNDQ0NzM4Njk0M2Y0NjMwZGE0YmIwZjdhODQ0Njc4MzcxNTg2IGxlZ2FjeS10cnVuaworOTEyMCAyNTE4YWM5MjUxZjBmYzJlMjY1MDI2YjQ5YzQxZDJhMzJlODIxOWIyIGxlZ2FjeS10cnVuaworOTEyMSA0MTIxNzA0NTEwNjMwZTAzNWRjOTc1ZjYzMGFlZWJiNDMwNDdjNDYzIGxlZ2FjeS10cnVuaworOTEyMiBlMWQzNTY1ZDJiN2E0OTI1MWU2ZTEyMDc3ZjYxNDNiMDVkNzM5N2Q5IGxlZ2FjeS10cnVuaworOTEyMyBlODY4MWVkYTA4NTQ5NWQ0MTgxZmQ0NmI3MTU3ZGQ3Y2RhZGZhNGQyIGxlZ2FjeS10cnVuaworOTEyNCAxZGE5ZjYwMjc5YzkzMzAyMTAxZTMyMTQ4OGIwZDg1ZDFhNTkzOWJlIGxlZ2FjeS10cnVuaworOTEyNSBhN2VhNzRhMjc5OTM2OTM4MTViOGQ3MjAxMjdlZGJjNGNkNDhmMzI3IGxlZ2FjeS10cnVuaworOTEyNiAwZjI0OThiODQ3YmZjYzQ5NmE3ZWYwNGJjMjAxMDY3MTA1MWMxZTIyIGxlZ2FjeS10cnVuaworOTEyNyAyMDU4OWVkM2U4YmRlNWZmNWM4MmExNGQwM2YzNDJjYTJjNTJhOTJkIGxlZ2FjeS10cnVuaworOTEyOCBmNmJlOWI1YWRiZGI3ZDY2NzcyOWVhMWQyNDBkYjIyMGMyODE2MmM3IGxlZ2FjeS10cnVuaworOTEyOSBjZTUyODhlYzM2ZDAyNTVlNWMyNTE0YjAzYjUxMGQ3NTc3ZTM3MzQ2IGxlZ2FjeS10cnVuaworOTEzMCA1ZWFjMWM4ZGIwNGY2NDE4N2UxMWU0NTNjNWU5OWI0NmMzMjNkYzhhIGxlZ2FjeS10cnVuaworOTEzMSBjNmMxZDEzMzY3N2E3ODU1NWQ5NzA3NmIyODUyN2Y5ZjZjYzM3ZmJmIGxlZ2FjeS10cnVuaworOTEzMiA2ZDk4Yjk2OWUxZjY3MDk3MmRkODRhNzNjMzEzYjliMWE1ZTM5OTIyIGxlZ2FjeS10cnVuaworOTEzMyA0NjZlODdiMTQ3NjcxZjljMzAyNjAwMTJmZjM3NjBkYWNjMzBmYWRkIGxlZ2FjeS10cnVuaworOTEzNCA1MjMyOWExMTNlMGZhM2VmMGY5NzYzNjMzNjZlMmM2Y2E5NDUzYzE5IGxlZ2FjeS10cnVuaworOTEzNSBlNDk5YzdkYmZkZjM1OWE0ZTgyYzVlZTA1MGIwM2JiM2E2MTg0MmJhIGxlZ2FjeS10cnVuaworOTEzNiBkZWFkNmU3N2Y0NjQyOGVlYTRlMWUyMzI5MWI1M2FlMDNmNWViYTY4IGxlZ2FjeS10cnVuaworOTEzNyAzMzRjYmZkNTFkYjNhZWNlMGRmMTQ2MzU1MmQxODJmODJlZWVmYzhiIGxlZ2FjeS10cnVuaworOTEzOCBiYjg2YmI3NmQ2MWRhM2MwZjA2MzBjZWE0MjFhYjVkZmY2MmM1N2FkIGxlZ2FjeS10cnVuaworOTEzOSA5OTk1NWI2NTQwOGRhYTI3Y2I1NzU4NzBlZGJmYmJjZjcwOGExMTlhIGxlZ2FjeS10cnVuaworOTE0MCBmYmZjZjM4ZDJiMzk1ZmJmYjc3NzZjYWY1NmNmZGUwMGM4MmU3NTVmIGxlZ2FjeS10cnVuaworOTE0MSA5ZjAyZWIzNmI1NzM5YTQ3ZmQ2NTIwNzE1ZWI3NGIxYTE2MTI2OGIzIGxlZ2FjeS10cnVuaworOTE0MiA3MzE0YmU2NDUwYWEwOGNiNDlmNjQwZTg0YjA1NjVmM2QyOTFmMTFhIGxlZ2FjeS10cnVuaworOTE0MyBkNmQzZTdjZjg5N2UwYjE4OGRhNTk5YWRmNDBkZTIwMTVlODA5NzJhIGxlZ2FjeS10cnVuaworOTE0NCBiMmYxZmVjNmE3MDIzZTM1YzZmYWM5MGQ5MzEyOWZiZjA2MjE3ZDRmIGxlZ2FjeS10cnVuaworOTE0NSAwODljMDRkODkxNTFlYjBjZmU3YTdjZWM4YmU0OWVjMmZkYzVmYzM1IGxlZ2FjeS10cnVuaworOTE0NiA5ODU1MjcwNGI4OGYyN2E0NzZiMDM0OTc0ODUxNGE3YWMxMWY5NTNiIGxlZ2FjeS10cnVuaworOTE0NyAyZjVjODM3NDgyNWM4NTM3MTE5OGY1YTdiYjJiOTM4MDQ4OGIyYjJkIGxlZ2FjeS10cnVuaworOTE0OCA4ZTNlZTM1NzdkNGU5NTE2ZGJjMTYyNTY3OWI2YjAxOWFkN2Y3YzRhIGxlZ2FjeS10cnVuaworOTE0OSAxNDEwNWRmMzNjMTJhMjFmMjMwZjJiN2RkOTUzZWU1YjRhYjdjMTNhIGxlZ2FjeS10cnVuaworOTE1MCA5OGQ1NTc5M2I2N2ZiYWUzYWFlZTE3OWNjZDc2YTNhMzMyZjhhMGM2IGxlZ2FjeS10cnVuaworOTE1MSA5NzMxODdmMWJkMWQzZGMyMGFjYTA5Yjc5ZDAxMTA0OTU3ZTlhZmQ3IGxlZ2FjeS10cnVuaworOTE1MiA0MzJkMWJlMDE2M2M3NWMzMGU4M2JlMzRiNTZjYmIwZjYyNmFkNDkyIGxlZ2FjeS10cnVuaworOTE1MyBjZGIzMjc5YjA2ZTc5ZDI4Yjg1OTQyYzg5MmJlYzQ3MTNmOGUzNzg1IGxlZ2FjeS10cnVuaworOTE1NCAxYmI4YjdmZTQ1ZWMzZWQwYTI3OGEwY2M3ODVhM2NkYzRhYjc0OGFkIGxlZ2FjeS10cnVuaworOTE1NSBlNDViODM3MDhkOWU5YmJkZDM4NDM1NGU3OTFhYmQ3ZDFjZmQ4MjkzIGxlZ2FjeS10cnVuaworOTE1NiBkZTJmOGY0OTRhZTM3MzdlZjkyYjhhNGVkMDcwNmNlMzc2ODBmZTU5IGxlZ2FjeS10cnVuaworOTE1NyBmOTVjOWFlMmFhZWZlZTk1YTcwY2FhMTcxZTZmYjZiMjZjODk0MTZiIGxlZ2FjeS10cnVuaworOTE1OCBiOGEzYmE2ZTdiYzlkZWY2YTk5YzQyOTU5YzcyYzk0M2ZjNDg1ZTMxIGxlZ2FjeS10cnVuaworOTE1OCA4ZmY1OGI1NzMwZjA2YmUwOGZiYmRjMmJmNTkyMjI2ZjdhNzM2MjAxIGxlZ2FjeS10cnVuaworOTE2MCBlZmZhNjJiMDA2MmI3ZDJjYTVhYmMxNmI0OWY1ZTQ2MmE4MzFiZjRhIGxlZ2FjeS10cnVuaworOTE2MSBjYjg4OWI2NzgwNTNiMDEzNWFlYjk1N2ZiOWIzMTdkYTY2ZmEyNzk1IGxlZ2FjeS10cnVuaworOTE2MiAwMTc0NjdkZTc5MzNlOGM3M2I1NzQ3MmQxNDIzYjU2NGJkYmZkMDgyIGxlZ2FjeS10cnVuaworOTE2MyA4MzE0N2UwMmU4MGQ4ZTMyM2Q0OTBiYWFkZTc2MmM5OWQyMjAwZTI2IGxlZ2FjeS10cnVuaworOTE2NCAyYjdmYmQ3NmNlZjg3MDU0Y2I0YjNiMTBmMzYyNmE2NWQwMTQ2ZjUyIGxlZ2FjeS10cnVuaworOTE2NSBhNTkzYzIyMGVkY2M2NTkzZDUwZjZiODQ0YjhkMmY2MGJhZDJiNDVhIGxlZ2FjeS10cnVuaworOTE2NiA1M2EwN2FkYTQ5OWFmNzg4NjhlNWM2ZjNlZTYzNzI0OWZhYjZkYWQwIGxlZ2FjeS10cnVuaworOTE2NyA4NGI0M2ZmNDJmYTgwZTFhZWIzNzc5ZjBiYWMxMDQxZTM2ZDZiYmM2IGxlZ2FjeS10cnVuaworOTE2OCBjMDc5ODQ4N2I3MjhiODdhMTE2MmJjYWJiMjg0NzczMTNkMjcyM2M3IGxlZ2FjeS10cnVuaworOTE2OSBkNzkwZmUyNWUxNDhlZjkyZWJkODNjYmE2YTMyNThiNzBkODFjZjU0IGxlZ2FjeS10cnVuaworOTE3MCA0YmNiYmViNjNiODk4ZTU0MzIzNDJlZmE2OWRhMjQ3YTM4MDY0MThiIGxlZ2FjeS10cnVuaworOTE3MSA0MGE4NDIwYjRhYjM2ZTRlZTMyNzY0ZmRjZDJhNzJiMWM2MmUzNDUyIGxlZ2FjeS10cnVuaworOTE3MiBhNzJiZjQzYTg4NzBiMWUwZDMzNDM3ZDM2NzY2NDMyMmNiNzhiZjE3IGxlZ2FjeS10cnVuaworOTE3MyBiOWZjYjlhMzQzMzI4MjJmNjhjNjY5Zjg3YjVlZDliMzYxMDAwYThmIGxlZ2FjeS10cnVuaworOTE3NCBlOTIxNTQwMjJiNDhlZTZjZmE3MTk1NWQwNzVmMzVjMTM5ZGY3ZmU5IGxlZ2FjeS10cnVuaworOTE3NSAyZTc1YjMxZDk0Yzg0ZjMxYTkxOWY0YTk0ZDJlYzAxMDgxYjlhNTE2IGxlZ2FjeS10cnVuaworOTE3NiBiNzNlYjRlNmZhY2VjZmVmOWY5MjNhZTg1ZWU4ZjYzNDhjNzQxYzU3IGxlZ2FjeS10cnVuaworOTE3NyA5MDAxYzBhN2JlOTg2MzM5Njk3YTExYjMzMDExNmQyYzk1MTA3OThmIGxlZ2FjeS10cnVuaworOTE3OCBjNjkwMzRhOGIzZjQzNGY3YTRmMTkwZDFjNThmYjMxMDU2YWI3MTFmIGxlZ2FjeS10cnVuaworOTE3OSA0ZDYzYTAwMWMyNWVhOWMxMmJhODU2ZmFjYjdkNDZkMDE1NTI0MWQzIGxlZ2FjeS10cnVuaworOTE4MCAxNTE2MDE5YzkwYmU4OGY1MDM4ZGI0NzEzZmVjZjY4MzQyN2E0OGNmIGxlZ2FjeS10cnVuaworOTE4MSBiOTM2Y2NmNDJlYTJkNTFjMTNhZDY2ZjM4Yzg1ZTkzMDUzMGJlMzNhIGxlZ2FjeS10cnVuaworOTE4MiA5ZDhlNDhmM2I0OTg1ZjA2YzU2ZTE4N2M5MTRiNTVmYzIyNjRhMmUwIGxlZ2FjeS10cnVuaworOTE4MyAwNjE1NzkzOTUwNDY1MDFkNzExNjliOTkzZGZiYjRiYjFmZTUzMTNmIGxlZ2FjeS10cnVuaworOTE4NCBjYmM1ZTdkNmFkMjM1ZmJhOTBmOWI2Njc3MWJmOGFiZDJiOGM4ZmYyIGxlZ2FjeS10cnVuaworOTE4NSAzOWQ5NmQ5ZDNjY2I1NmE2MWZjZTUyMTNiM2MzY2Q3OWNkNzYzYzg3IGxlZ2FjeS10cnVuaworOTE4NiA0N2EzZjNiNjA1MDI2M2FhYzlhZWNkMDY5MmEyZDgyMjlkZmVhMmMzIGxlZ2FjeS10cnVuaworOTE4NyAxMmExYzk4NDUwNzQ0MDc2ZDhlYWM2NmQzMmJjY2QzNGZiMWM1NDg4IGxlZ2FjeS10cnVuaworOTE4OCA5MGM2MzkwYjQ5NDE3M2VkZGU4NDJhNDI2N2E1ZjM5ZWNhODg3NGFiIGxlZ2FjeS10cnVuaworOTE4OSA5OGFhOTI3ZjkwN2NjMDNkNTQ1OTA1YjMyMTY2OTk0NjZmNzRmZTRhIGxlZ2FjeS10cnVuaworOTE5MCBmZjE2NDQ4ZThmMjQxNzA4MGNiZTNlNjdiNjE1MGI0ODg2ODE5MGM4IGxlZ2FjeS10cnVuaworOTE5MSA4YTVhMDEyMzA3YmRkMTBmOTY5YmM3ZWE2ZjVhOWY3MTU4MTFiMDIzIGxlZ2FjeS10cnVuaworOTE5MiBhNWJiMGI4ZGMzMjA0MmJmYzU1YTQ4MTIzNjQ3OGIxZTcwNmMzZTIwIGxlZ2FjeS10cnVuaworOTE5MyAzOWI0MTNhYzJjYzkxYzFiNTlkMmM2YjllNTQ2NDNjNGE2YjlkMjg2IGxlZ2FjeS10cnVuaworOTE5NCBkODU0YTFjN2U3NGQzMzFhNzUyOTNlYmY1ZGQxYTdiZWI0NTdlZjEzIGxlZ2FjeS10cnVuaworOTE5NSA2NGE3NTIxMWNmNzI5Y2Y0YWMwNmVkNzI1NGRlZTljMjgzNjQ5ZGEyIGxlZ2FjeS10cnVuaworOTE5NiAzMmYyZWRhMjk0NmNhZDcwMWI0M2U2YzhhN2VjNjJkNGJlOTMyMTc2IGxlZ2FjeS10cnVuaworOTE5NyBmYWViYzE5NDA0MzI4YjEyYmMyYmMzMTIzNDAyYTU2YzVkMjk1MTU4IGxlZ2FjeS10cnVuaworOTE5OCA5NjA4NTM5MDJlYmU0MTkyZTE0Y2IzZjg0YmE0ZGJkNTI5OWRiMzFmIGxlZ2FjeS10cnVuaworOTE5OSBiYmY5ZTRiMzFkODRjNGMyMTJkM2Y1ZjJkNTk0MTUwYzAxOTBmOTdlIGxlZ2FjeS10cnVuaworOTIwMCAyMWRjZTMzMjUzMjE5NjIyMWJjMGIxYWFkZTFlYWJiMDMxMjcyMjg5IGxlZ2FjeS10cnVuaworOTIwMSBjM2Y4NWJjYjA0NWFkNzNmNjM3NTIxOGNhMzE4MzQ2ZWNjOGI4ZThhIGxlZ2FjeS10cnVuaworOTIwMiAyZTNhY2IyMTQwYmYzYTVmZjgwYzhjZmMzM2Q2YTExODk1NzJhZTI5IGxlZ2FjeS10cnVuaworOTIwMyAyODNkMWNhNTg1ZDk0ZjI2NjNmMTFjYjUzYWZmMzBiZGNiZmUxMjYxIGxlZ2FjeS10cnVuaworOTIwNCA0ZjM2NDJhMjAxMzcyZTY4MjQzY2Q3OWE4NTg1ZTRlMGIyZTRlNGU2IGxlZ2FjeS10cnVuaworOTIwNSAyNjYyYzlmZTFiM2UwM2NhYTI3ZmRmNTYxNjQ4OTIzNWI0MTJiNDFkIGxlZ2FjeS10cnVuaworOTIwNiA3Y2NlNDY5MTYwYzZlYjg1M2IzYThiZjQ0YWE0MTBjZTFkMjhkMGVmIGxlZ2FjeS10cnVuaworOTIwNyAxMWE3NTE3MDU0YTU4ZWE4MDE2YTY0NTNhNWFhYzM3ZTQyYTYyZmU2IGxlZ2FjeS10cnVuaworOTIwOCA5YzlhODdiNWJiMTdlYzAxZWEzYjNlMjUwM2ZiMDRmMDFlMjNmOTM2IGxlZ2FjeS10cnVuaworOTIwOSAyMTY1NjIwNGRkNGZiZDlhNjcxYzY0ODdlOGUyNzI2N2Y2NzQ3YTgwIGxlZ2FjeS10cnVuaworOTIxMCAwOWY2YTQ5YWNhMTJlZjcwNmQyNDg2NTRmMmRlN2ZjY2ZmZjlkMmU1IGxlZ2FjeS10cnVuaworOTIxMSA2NWFlNzExZGIwMGNiNWQ1NThiYjU0YzgzN2Q1NGMxOWI4NzQxYmY3IGxlZ2FjeS10cnVuaworOTIxMiA0YzliMjU2YTNiZWUwYzkxMjhhMWVjOGEyN2RkZWExZjk2YzRlN2Q5IGxlZ2FjeS10cnVuaworOTIxMyBmYWI4YWI1ZGM1Zjg0ZThmNmU5NmFkOThkMmNjMGJiN2E1YjI1M2M0IGxlZ2FjeS10cnVuaworOTIxNCA1M2ZkNDJhYTNiYmZjYWNhMGUxNTQ2YjBkNjRlNTFjMzIxMjgwZmJiIGxlZ2FjeS10cnVuaworOTIxNSBhYjNkN2EyOGUwN2QyNTgyYWRmMDVkOWVkNDE4OGI0ZDE5MmUxZGRmIGxlZ2FjeS10cnVuaworOTIxNiAzYmVmNTVjYjc0NGI2ZTZkZTljZGViMDhkMDZiMmM3YWExODdiOGZmIGxlZ2FjeS10cnVuaworOTIxNyAxZDQxNzVlZDZhOWNlZWUzMTU1ODBmMDgyYTU1YzVlZmVkNDJkYWM3IGxlZ2FjeS10cnVuaworOTIxOCAxODUzYjViYzA1NDhiYTA2MmMzNTQwMzNlODBlMzllMmI4NDE1ODgzIGxlZ2FjeS10cnVuaworOTIxOSA0Y2YwZGEwNzFlMmJlYTNlOWI0YjA3NWMwY2IyYjY1MzAwMTI3MDBkIGxlZ2FjeS10cnVuaworOTIyMCA0ODg3ZDc1NDY5MmFlZmIxMDBiY2FiNDU0MmIzYzQwNGU0MDU1YzUzIGxlZ2FjeS10cnVuaworOTIyMSA0ZjY4YzdhYzUxMTU0ZGNkY2UwZjQ1ODA0MmNlNDIwNzM2NDQzMzVhIGxlZ2FjeS10cnVuaworOTIyMiA4MDg0OGU5MThiY2MxODQxNDNhOWU2YjRkNDRiNWY3MGZhNmFlZGI4IGxlZ2FjeS10cnVuaworOTIyMyAxZGI0MWNhNDVjN2ZjODg1NDQ4Nzk3MjhkNDY0NDU2NmEzNWFiNDI2IGxlZ2FjeS10cnVuaworOTIyNCBhYmUzYWFkOWUwMzg1ZTdlNjVmNzU0MmRkMmIyYzY1ZGRiOTczNWI0IGxlZ2FjeS10cnVuaworOTIyNSBmY2ZmNTMxNjM0ZTE0ZjQxM2Q3NjE1MzZlMjIyYTcxZDViMDE4ODBmIGxlZ2FjeS10cnVuaworOTIyNiA3NGVhMjA4ZDQ2Y2U4MWFhM2Q5ZDc0ODJiZDU3NGM1NGQ3MjQ4OGVhIGxlZ2FjeS10cnVuaworOTIyNyA3OTNjYWY1MTc2NDc5ZTRlNGE4ZTQ3YTFlMzZiMzJiM2E2ZmMxMzQ4IGxlZ2FjeS10cnVuaworOTIyOCA1ZTdjOTEzNThlZDJjZGVhOTFjODdjNjAwYWU1NTgzZTcxZTMzYzVhIGxlZ2FjeS10cnVuaworOTIyOSA0ZGFmMDkwZmYxNjIyNjUxOTU0MzQzZjdmYjQ2NjViOGYzMTliNTNjIGxlZ2FjeS10cnVuaworOTIzMCBlYmE2YWRmM2Y4NDRlZjY0N2ZhYjg5NmEyMzc2Nzg3NzI0NWFkYmY1IGxlZ2FjeS10cnVuaworOTIzMSBlMmU1YmJmYWQxYzgxZjczYWIzMjQxM2ZjNWUwZjUwOTg1Y2FlZjAzIGxlZ2FjeS10cnVuaworOTIzMiAwN2U5NWVmNTVmNjU4ZTdlNjc5NWZiMGYzMzYzMGEwZmFlOTE2YjE0IGxlZ2FjeS10cnVuaworOTIzMyBmZDI5Y2ViZTg4ZGM4YjQ1NjJjNDRhY2I1MmZhODQ4YjY2ZjY3ZDZkIGxlZ2FjeS10cnVuaworOTIzNCBlNDA3MGRjNmFjMzVkNWQyZjNmMjFlMTlkODEzZTRkODMwNzUzYWI0IGxlZ2FjeS10cnVuaworOTIzNSBhZmY2ZmY1MmQ1ZTdlZDMxMmJkODUzNGI4ZmUzZjZkMzEwMTVjNDlkIGxlZ2FjeS10cnVuaworOTIzNiAwYjVlYjMyYjU1MWQyODJhMmE2NjllZTRhOGU1NGIzMGNkMzQ5MDEwIGxlZ2FjeS10cnVuaworOTIzNyBjYWU4YWE0NDFmYmQ0ZDdiNjVlN2UzZDliMmJjMTFiNmQ3MzBlMTk2IGxlZ2FjeS10cnVuaworOTIzOCAwMjA0ZDQ2MWQyMTk2Nzg4ZWMzNDBiOTAzMzA3M2U1YTI3MWZkNWUwIGxlZ2FjeS10cnVuaworOTIzOSA3NDhhYmM3Zjg4MDhmNDg0MzkxNGYyNTUzZGU0YTYzNTE4ZDFlYTgzIGxlZ2FjeS10cnVuaworOTI0MCAwYTNjNzQwMmQzOTUzZDA3ZjAwMGJjMmRhZTM5Y2YxNTUyYThjZTU4IGxlZ2FjeS10cnVuaworOTI0MSAxMjgyNGZlMDRhMDg4NTIxZGM1NGZhNjJlYjM1YzQ2Nzg2NThiMTg4IGxlZ2FjeS10cnVuaworOTI0MiAwNzUyYmJmNzdkODEzYTFmNTdkZjdlM2I3YjNmNDZhODNjMjU0YWJkIGxlZ2FjeS10cnVuaworOTI0MyBlNmMwMzNlOWI3NjkyN2I5ZWI1MWYyN2M2YzFhNTRmMzY4YzE3YmJjIGxlZ2FjeS10cnVuaworOTI0NCA4OTA5MmFkMWU2NjA3MGQxODY1ZjgxMjBlOWJlZWZmMmVjODQyMjg2IGxlZ2FjeS10cnVuaworOTI0NSBlOTdiODIzNzU5MWM1ODE1MTU1ZDYwOWQzNzg3Mjg4ODc3Yzc0ZDQ4IGxlZ2FjeS10cnVuaworOTI0NiBhMjlhNmJmMDNhZjMzMjNhZWY4YTM5ODJkMTBlYWRmZjEyOGUyZDUxIGxlZ2FjeS10cnVuaworOTI0NyAyMmZkZmQyODNjOWNlZDZkNTU4NGNlNWM5N2EyMjA5ZWVkMjgwZjJiIGxlZ2FjeS10cnVuaworOTI0OCBiNWNkNzY4ODEyY2IzMjQxMDgyMTEwNzc0YzdkZDRjYmJhNmFkOTZhIGxlZ2FjeS10cnVuaworOTI0OSAzM2UyMTQ1MjUwYWZlZTgyY2U1Y2I5Yzg3NjNmNGMwODIwZWIyZjU5IGxlZ2FjeS10cnVuaworOTI1MCA4MzJhODA3ZDAwOTg4ZWFkOGM2MmJiNDBlYTRlZGU3ZDYzNWI2NjYzIGxlZ2FjeS10cnVuaworOTI1MSAxNGQ2YjdhNDI5MTk0MjE1NGUwYTY5ZWUyYTRhMzljMTBiYzhmZDA0IGxlZ2FjeS10cnVuaworOTI1MiAwZWYyM2Y1MTNhNjU5NTk3NzNhMTVhOThiNTkyYzQzOGQwMDM0OTBjIGxlZ2FjeS10cnVuaworOTI1MyAzMTE3YWY5ZGJmY2U3OTM0NmVlZTFlZDBmYmNlY2E0NWZlNTEwZDE3IGxlZ2FjeS10cnVuaworOTI1NCAzZGZlMDUxMWJjM2IzMjYzMTUwM2NlNTE4YmMyZWE4Y2VhNzIxN2Y1IGxlZ2FjeS10cnVuaworOTI1NSBkYWE3N2Q5YWYzNGM5MDMzOWY5YzNmOWI4YjAzOWE2MGUxYzdmYzViIGxlZ2FjeS10cnVuaworOTI1NiBiZjZkZTgyYWFiMGQ4ODFhYjc4NzM5ZTEyZDQ3YTI3NjEzMDJhM2QyIGxlZ2FjeS10cnVuaworOTI1NyA0ZGJmZmZjM2MyM2JlMzk0NWRhNDRmNzQ0YWFkYTFkMGZjNGJiYjNlIGxlZ2FjeS10cnVuaworOTI1OCA5Y2Y4ZDE0ZjM1NjUyY2Q5M2ViZjM2ZmMwMGM5YTM3YTFmYmNkMjIyIGxlZ2FjeS10cnVuaworOTI1OSBiOTZkOWZiYjI0ZTU2MTRmYmVmY2U4NmRlYTNmMTE5OTEwM2I0OTRkIGxlZ2FjeS10cnVuaworOTI2MCA4OTgwMjA4N2Y4MDY2OWNmNzliZWZlYzE0NDJhZTI3MTlkN2I4MDI4IGxlZ2FjeS10cnVuaworOTI2MSBjMTg1MDE3NzA4OTU0NTNlNzM5NjM3OGMwZWRlZmIwZTdjYzcxODdiIGxlZ2FjeS10cnVuaworOTI2MiAwODQ4MDA1MDJhNDIwODQyMzZmOGJkNDc1ODNjZDc2N2YyZTdhNGMwIGxlZ2FjeS10cnVuaworOTI2MyBmNGUzYTdhZWI5NDlmZjNlZDY1ZTFkZTEzMGIxMWUxMTJjMjE4MTJiIGxlZ2FjeS10cnVuaworOTI2NCBiYzAwN2NmMWQ2YmEzYTE5N2VjMGQ5NjE5OWUzYjI5NGIxMWUwMDIzIGxlZ2FjeS10cnVuaworOTI2NSBmNjk1NDI3NGUxY2E0OGY4ODQ1MjNiZTBiMGI3MjQzYTFhNjdlNjMyIGxlZ2FjeS10cnVuaworOTI2NiBjZWFiZDUwMzE3ZTMwZWQyMTFlMDYzZGQ3NTJiOGM2YjA4OTY3YTA1IGxlZ2FjeS10cnVuaworOTI2NyBiYjQ0MGEyOTc1YWI5OTE1Y2Q4OTYyYTBiZmM4YWEyMGI4OTMxY2IzIGxlZ2FjeS10cnVuaworOTI2OCBiMWU2YzNmZTVkZTg1NDVkNGYxZGQ1Zjc0YTgxMmVmOWMyNjA4MTBhIGxlZ2FjeS10cnVuaworOTI2OSA5ZTc1ZDk0MjU2ZTBlNmE1MmI2YWNlMzBhMDc1ZGRmODI5N2Q2NjFjIGxlZ2FjeS10cnVuaworOTI3MCBmNTMzYzMwNzk3ODBiZmU5YTU2NzE0ZWNmOWY4ZTcyNTMyOWI4YjE3IGxlZ2FjeS10cnVuaworOTI3MSA4NTdmOTA2NTA0MWQ1MjBiNTIzYTNkYjU1OTg1MTA5ZGY1ZGVlYzJkIGxlZ2FjeS10cnVuaworOTI3MiBiMDkyZWUxOWFlNGZlYzBiYTViMzIyZjg4MzkxNTc3YTg0NGZkMjYwIGxlZ2FjeS10cnVuaworOTI3MyA1YjI0Y2JiMWY5OWJhMjVhZjUyMjE3MzZjZWQwY2FiNDkxYmM2MjIzIGxlZ2FjeS10cnVuaworOTI3NCBkMTAwZDAyNTJjYjFjNWRjZmRmMWY2ZWI3NDBjYWQ1MDM3YzNkYjJiIGxlZ2FjeS10cnVuaworOTI3NSA5NTQ0MTcxOTFmYmZjNzgxZWNlOGY2ZmFhODhhNTM3NTI2Y2RhYzRmIGxlZ2FjeS10cnVuaworOTI3NiAwYmE1MGM3NDI5ZTUxMDM0YjBmYTI5OGEyNjg3NjQzM2E3MDdmOTFjIGxlZ2FjeS10cnVuaworOTI3NyAzNDFhNmU0N2E4ZmY2NDVmZWFjYzZlM2RiYWY3NmJmODAzZGNjOTdiIGxlZ2FjeS10cnVuaworOTI3OCA1ZWRmZWI3YWE2ZWFlM2Q3MDQ4ODYyMmNlNWFjMzkyYjlmNmM0NTY2IGxlZ2FjeS10cnVuaworOTI3OSBiY2E5NDgxOTRkZWFmNDgyOTRmMGRiNjIxZjNhY2Q0YzAzMWY5YTM0IGxlZ2FjeS10cnVuaworOTI4MCA5ODViZTZkYzg5NGYzNWZhYjA1YmI0ODQ4OGViMWU3MDc1MThkMmU4IGxlZ2FjeS10cnVuaworOTI4MSBhZmJjMTFkZDJjNjVlNWZiODNjNmY3N2UzYTNiNmJiOTYyYmVkODdiIGxlZ2FjeS10cnVuaworOTI4MiBlMjI0YzQxYmRhYzY1MDhmMDc0ZmViZGMyODcwMjNkYmUyZjY4ODdkIGxlZ2FjeS10cnVuaworOTI4MyA5M2U0ODBkZWRjZjA5NDA3MWY4NDg3ZTlkNTNmMTVlNWI0ZTIzNTNhIGxlZ2FjeS10cnVuaworOTI4NCBhYzFiMjYxZjE2OTA0YTY2NTlmY2Q2Mjc4ODhkMjgwZGY3MGJmN2FkIGxlZ2FjeS10cnVuaworOTI4NSA3ZjkxOWQ0NzAxMjkzZmM1ZGQ2MGI2ZTZlYmMwOWUwOTgyMmVhNTFmIGxlZ2FjeS10cnVuaworOTI4NiBhODdiYzUzZmMxYWQ2ZWU3NWJhZWFlMmIwOTIzOWEwNTEzYzg0NmI3IGxlZ2FjeS10cnVuaworOTI4NyAxNDBlNjVmODM5NTMzZmE5ZmJlOTcxOTcwMTk3ZTI1Mjk5NmU2MTZhIGxlZ2FjeS10cnVuaworOTI4OCBjYTc1NWZiMWVmYjhhZjQzYjUwMTA5Mjk4Yjk2NTYxMDg4OWFiNjQ2IGxlZ2FjeS10cnVuaworOTI4OSA5YjQwNmM5MjUxNDA4MjU4MjllZjE0MmYzMWIxNDM1M2RhODY1ZDliIGxlZ2FjeS10cnVuaworOTI5MCBkODUxNDdkY2UxODVkMjYyZjJjMDc4ZGFkNTIwNTZjMTc0YzIyZjlmIGxlZ2FjeS10cnVuaworOTI5MSA2NjdhODVlYmZjM2VkMGFiYWY2MDAzYzgzZmNhNmY2MTY5OTZmMWY1IGxlZ2FjeS10cnVuaworOTI5MiAwZmUzZGMyOGI5MmMwYzk2YzI5NWU1OWM1MzgzODFkNjUxMWViZjVjIGxlZ2FjeS10cnVuaworOTI5MyA2MTMxZDNmOWFmMmQ2MDkyOWQwMDIzYTU1YTEyNjQwNTg3YTFlZGJjIGxlZ2FjeS10cnVuaworOTI5NCAyZTNmMjQ0ZjEwNWYzNTczOThmOTI3NzU5NWVlNDBiZjY1ZmNkM2EyIGxlZ2FjeS10cnVuaworOTI5NSA3ZGJhMmYzYjZjODEzNWMzZTc3YTAwMTZkY2M3ZWMwMjAzYjQwOGEwIGxlZ2FjeS10cnVuaworOTI5NiA3NzNmYmM4ZWZiZDc3ZTA3MmQ4ZGMxZjZiN2JjMTAyYWQ0NjJkOTQ0IGxlZ2FjeS10cnVuaworOTI5NyA5NTkyOWIwMWEyNjI0YWEyNmYzYzFlM2NhZGQwNDU0NDU0OWViNTQxIGxlZ2FjeS10cnVuaworOTI5OCA4ZWY0ODFjN2MzYWZjNjQzMDA3ZjNmOWVkNzJiNzJlZGM3MzhkMGQ5IGxlZ2FjeS10cnVuaworOTI5OSBiMTljZDQzMTMxMjY2M2VmNDU1ZDhiNDYxYjUwNTdiNGVkMWU3OTY1IGxlZ2FjeS10cnVuaworOTMwMCBmYzExZmYyYzc1YjA0OTVkZDVhY2RmMGU5ODQxOTAwMDdmODIxYjYwIGxlZ2FjeS10cnVuaworOTMwMSA2NjNhNDllNGJlZDMyNjgyNzhjNzM4ZTZjNDUxYzgxYzU0YzRmNDhjIGxlZ2FjeS10cnVuaworOTMwMiBlMzljM2I3NzcwNDE3MmM4NWFmMDM0NDE5MTc3YWIwZTFiMzRkYWY1IGxlZ2FjeS10cnVuaworOTMwMyBlY2FhNDMxYzU5NjlkOWIzYTM0MjU0NGUxMDUzNWQ3YjM3ZWYwZWEyIGxlZ2FjeS10cnVuaworOTMwNCBhMTU0NWNiZjBhZGY3ZjQ2YzQ5MDBjNzFlODg5NTMwY2JjMDg2ZGViIGxlZ2FjeS10cnVuaworOTMwNSA5ZmU5N2I3NjMwNjhiNjY5Y2I5NTg5ZDY5ZTk1YTU2N2ZhODA0YWIyIGxlZ2FjeS10cnVuaworOTMwNiBlZTg4YzVhYmMzNDFlY2U5MzhiYjFlMTQ1YzMyZGMyODllMTE4MWFjIGxlZ2FjeS10cnVuaworOTMwNyAzNTFjNzBiOGU3MzEzZmRiNGE4YzllYWJkNWZmZGQxNzk0NWVhNzYzIGxlZ2FjeS10cnVuaworOTMwOCA5OTIwOWRjZjI5NDY4Y2U3MzA4YzI4NGQ5NzMxMWZkMGI4NzVhYWYwIGxlZ2FjeS10cnVuaworOTMwOSBhY2YyNDc0NjVmZWJmZGUxYmQ0MWRjZTQyNWFhNmI0YTE3MWVjYjZkIGxlZ2FjeS10cnVuaworOTMxMCA5YTU3YjQxMDc0OGQ1MTVlODRjN2ViMDM0NDBmYjFiZWQ5ODFkY2ExIGxlZ2FjeS10cnVuaworOTMxMSBjYmZjNWYzMzJkOWQ0ZjE5ZjNhNDY5NjNhYWI1YTExMWNlZjUxOWIwIGxlZ2FjeS10cnVuaworOTMxMiBhYWIwODJiZmU2NTRlNTNlZTk3YzE2ZDNhNzUyYjZiYzdhZjBlOTczIGxlZ2FjeS10cnVuaworOTMxMyBkYjE5MWFjZjhlMDY4ZTZhYWM1M2Y4NzZkNTY1NGFhZGYwOWE2MDM4IGxlZ2FjeS10cnVuaworOTMxNCAwMjU1YjVlY2RlMTA2NTQyOTlmMDMxNjgxYmMzOGNlZTk0MmY5OGY3IGxlZ2FjeS10cnVuaworOTMxNSA5NjE4MWE0YTU0ODI0OWJkNmFhOGFlOTFkNmYxMjZhNTdlNDM4ODYwIGxlZ2FjeS10cnVuaworOTMxNiBiNzU1MDBlZWVkOWIxMmQyNzkxZWMwMjE0YTY5NTNiNTFjN2I5OGEyIGxlZ2FjeS10cnVuaworOTMxNyA2MjMzMzgzNTEyYmE5OWExODJlYmRmNWUyYTM4Y2VmNGYxOWZlYzg2IGxlZ2FjeS10cnVuaworOTMxOCA1OGJmZWNlMDE5NjhjYzA5YzE2ZjExZDczOTI0NWE0OGQ5NjNkNDQ3IGxlZ2FjeS10cnVuaworOTMxOSBkNzEzOWJhYzliOTk3ODVlYmQ2Y2NiMTI5YmU1OTZhZjZiYTY4NzQ3IGxlZ2FjeS10cnVuaworOTMyMCA0MTZjNzk1NzJmMTE4NzFiNmVhZDE3Nzg4ODA0ZGY4OGViN2MzOTMwIGxlZ2FjeS10cnVuaworOTMyMSBhYzY1ZGIyMDU0YzljNjc4Y2M0YzJiZTllY2I0YjFiYjdhNjFhMWVlIGxlZ2FjeS10cnVuaworOTMyMSBlYjc4NjU4ZDgxOWZiMGFmMDlhOGU2ZjliZWRjYjY3MDgwNWVkNWY2IGxlZ2FjeS10cnVuaworOTMyMyAzZmZmMzRlYTkxYWI2NDE4ZDkyYzc1MDUyZDYxYmYxMzFjMzIzYThlIGxlZ2FjeS10cnVuaworOTMyNCA1OTllZWE5MzA4NDNjMTRjZjJiYmQ5MzQ4ODcxNDg0NDgzNzA0ZjNlIGxlZ2FjeS10cnVuaworOTMyNSA5ZGVkNGY5ZTAxOWVkMGExZTVjNmVhZjE3NDJjMWEzMDYxNWRiMzI1IGxlZ2FjeS10cnVuaworOTMyNiA4YWRiMzUzMjlhZjAyNGQ5NTM3YjMxZWQwN2IyM2NlNjBmODYwOWYxIGxlZ2FjeS10cnVuaworOTMyNyA1MWY4ZDRkYTgxZTRiMDc3OTg2MThlZWNkNjQ2NWU4ZGNiZmM1MDVhIGxlZ2FjeS10cnVuaworOTMyOCA1MmZkODI4MTY1NjE0NWI1ZTczNDhjOTUxNDRjNDc1MThjMDdhYWQ3IGxlZ2FjeS10cnVuaworOTMyOSBkM2U1MTZlZjljZDExMjJmZDMyNzFkZmVjOGU4NTRkOTU5MzlkNjYyIGxlZ2FjeS10cnVuaworOTMzMCBhNDIzZTNlMGRhNDAxMGNiZDI1NjY1YjFiMmNhNDk5ZDYxMTNlOTY4IGxlZ2FjeS10cnVuaworOTMzMSA2NzJhNjU3YWJiYTg3YzkwYzU1ZjBlN2FjNDM2MzgxNGQxM2JkM2RjIGxlZ2FjeS10cnVuaworOTMzMiBmZDA3ZDUwM2EzM2M1ZTU2ZTFjYmZjMTkwNzNhYWRlNGQ5MGFjYjRhIGxlZ2FjeS10cnVuaworOTMzMyAxYWIzMDc5NTFmNGVkMDg4MTU2MjUwYWQxYmY3M2FmYmEwNDhiNGY5IGxlZ2FjeS10cnVuaworOTMzNCA5Mjc0ZmFiMmM1ZjIwZjViNzIwNWUzZmNhOTM0MzBiYzE5OTcyNTE5IGxlZ2FjeS10cnVuaworOTMzNSA2N2MxMGQ5ODkwOGQyYmViNzcxNGVmNDFiOGRhMDU5YzJhNzAxNWFlIGxlZ2FjeS10cnVuaworOTMzNiA2MWQ5NzNlYjQxMDJjYmZkMTk3YTA1YzcwMjI2ZGFlZjc2MDMzZDAwIGxlZ2FjeS10cnVuaworOTMzNyA1MWM5MzAwNzk1MTQ3NTAwNDQ5NjdlMTQ1Mjk5MTBhMjExZDE5YTQxIGxlZ2FjeS10cnVuaworOTMzOCA5ZjFkM2VlYjc4NGI5MzI1OTJkOWRhMDMzNDFlNDdiYTRiYjAxMTFmIGxlZ2FjeS10cnVuaworOTMzOSA3NDRiODk5NDE0OGFlMzJjMGViNzcwYTJhYTg5YjlkYzEyYjY5NDgyIGxlZ2FjeS10cnVuaworOTM0MCBjNWJmYjFkZTYxYTViNzA0MTlkY2QzNGY3ZGZjMjBhNGIyZmI4NTdlIGxlZ2FjeS10cnVuaworOTM0MSAzMjAyMDA1YTcyMGI0OTc1NzBhYTgwZTJkZmZjMTg5YWRmYjU2MWVhIGxlZ2FjeS10cnVuaworOTM0MiAyZGUzOThmMzcwZTg2ZTE2ZGQ1MTQ0OGU1ZTE0NDYyZDdkNTFhM2EwIGxlZ2FjeS10cnVuaworOTM0MyBjOGNkZTE1ZGQ4Y2U0YzY1MjdjMmYwM2M2Zjg1YzFkYTU0NzQ5NTk1IGxlZ2FjeS10cnVuaworOTM0NCAwYzNlZmRmMjgxMzMwYmVhM2RiY2Y3ZDNiODRiNWE1MTA5NTkyYjkyIGxlZ2FjeS10cnVuaworOTM0NSA4MWRmZGY2NTg5ZjhjZTc5MzJjYmNhYjU2MmEwNzAxOTM3MTUwNjU5IGxlZ2FjeS10cnVuaworOTM0NiAyZjc1M2Y1NDBmNDVmNDk5MDFlNGUxYzgyMjcyM2MxMzNiODRkMjc5IGxlZ2FjeS10cnVuaworOTM0NyAyNzhhYWNmMDE3MDcxMzA0OGRmMGVmZDllNmI3NDQ3NTM0MmM3YzEzIGxlZ2FjeS10cnVuaworOTM0OCAxOTAyOTM4ZTQyYzYyMDY0NTA4MjRiZjNhYTM5MzU4OTUzZWMxOGI2IGxlZ2FjeS10cnVuaworOTM0OSA3OTM3NWY3MWQ2YzgzODIyNmMwMmU0YmVjMTg3NjQwM2EzNTY1MWUxIGxlZ2FjeS10cnVuaworOTM1MCAyZDk3ZmIxZDA2Y2ExNDRjNzhhZmNmZWQwZTc3NGMyYWI5Yjk1YzRiIGxlZ2FjeS10cnVuaworOTM1MSA5YmU3ZjFlMzc1MzU5NDU5NzJlMzkzYzBkZDNlOWQ5M2YwZWNlYWUzIGxlZ2FjeS10cnVuaworOTM1MiA2YWUzYzkxZjJkOTM4MzQxZjgxMjU5ZTg0ZWU5MTE4OGM1MGUzYTkyIGxlZ2FjeS10cnVuaworOTM1MyBkMDNmMmUyZmJmMzY2NmRhYzI2YmVlNjNhMzU0NDRiNGUzZjg2ZDhlIGxlZ2FjeS10cnVuaworOTM1NCA0ZTJjYzUwNDRmYTUxM2YxYTE4ZmVjZDRlMDViYzliNTI0Nzc4MWUwIGxlZ2FjeS10cnVuaworOTM1NSA1ODA5ZWYxNTdjZGRiNGU4ZmJmMWM3YjQ1MzVlNTA2NTYzMjE4Njk4IGxlZ2FjeS10cnVuaworOTM1NiBlMjg1YTE1ZjNhOTJlYTBhN2ZhZTU1OTcxZTQ2ZDkxM2ExYTljYzdlIGxlZ2FjeS10cnVuaworOTM1NyBlYTIxOGRjZjcyN2RkMTUxZTk1NTZjYzY4YmU0ZWQ1YjBmZGUwMmEyIGxlZ2FjeS10cnVuaworOTM1OCBjNDZkODc5MjMzMTdjMzljNGMxMTUwOWU0YTQ1MmI2YzEyMjQ0MDE5IGxlZ2FjeS10cnVuaworOTM1OSAzOGY4YTgyOGFjNThkM2UzMGEyYWJiYWQxZDk5NjJkZjMwYzcxNzBjIGxlZ2FjeS10cnVuaworOTM2MCAzYzEyYzBkNjllMTIzMDJlNGVlYmFiOTNlZGE0NDEwMzkzMGEyMzZiIGxlZ2FjeS10cnVuaworOTM2MSBiYWY2ODZiZjhjYTBiNjQxNGM0MTJmMTg5M2U4MzZhMmY2ZTk1MGU1IGxlZ2FjeS10cnVuaworOTM2MiA1OThkMmZmYmZkOGI1NjIyMmEwY2MwOWMwNTBkYzQ2MDg3MjQzZTQwIGxlZ2FjeS10cnVuaworOTM2MyBlOGQzMjIwOTIxN2E5ZDI1OTQ5Zjg4NzBiNTNjOTkxYTQyN2ExYmJkIGxlZ2FjeS10cnVuaworOTM2NCBiN2Q4Y2NiNDU3NDYzMzI1YzljMDk1NzljMmUyNWMzZTg1MDBmYjZhIGxlZ2FjeS10cnVuaworOTM2NSA5MTMzNDVkNTRmMzA2YzVjM2JjNmM0MThhNzY3Y2I0MWNiYThiNjMzIGxlZ2FjeS10cnVuaworOTM2NiBlOGY5OTc4ODdjMmQ1ZTMyMWJmMTM2OWEwM2UxNzc0OTBkMDgxYzNjIGxlZ2FjeS10cnVuaworOTM2NyBjN2JhYjczZTYzYzZlNzQxODk3NjVmZjMwYmZkNDVhNDE3ZjExYzVjIGxlZ2FjeS10cnVuaworOTM2OCAxZmY5YTMwZjgyNmE0NWFkODEwYzE0OTVlMGIzMzdjM2JhNDIxODcxIGxlZ2FjeS10cnVuaworOTM2OSAwNDdhYmNiZjNmNDMyNTU3YzVhMzc5NTYyY2NkMjkyMmRiNTA5ZTYyIGxlZ2FjeS10cnVuaworOTM3MCA1ZDIwNWYyMmFiNjE4NjNhYTc4YThkODlkZjBkMDdmODVmMTQxYjg4IGxlZ2FjeS10cnVuaworOTM3MSBkMmVmNzk0ZDljMTE2ZGRmMDhkNjExNmIzZjU4NTRmMzcxMzdkMTU3IGxlZ2FjeS10cnVuaworOTM3MiAwNWUyNjdhZWQ4NmViYjUxMDc3NTg4NTY3YTg5NjFhMzE3ZjY1YmNlIGxlZ2FjeS10cnVuaworOTM3MyBkOTQ5YTM1Y2FlMjBjODNhMmYzZjBlZDYxN2MwZGM4M2M4ZDI1Y2M3IGxlZ2FjeS10cnVuaworOTM3NCBlNzBjNGFmMTU3ZDU0MzU0ZDI4OGIyODAwMjc1Yjk4MWNhMjY5ODdkIGxlZ2FjeS10cnVuaworOTM3NSA2ZmU2YTljMTQ0OTkyZjExM2YzM2YzOGU0NzI0NTY4NzIzMmQ0NDk2IGxlZ2FjeS10cnVuaworOTM3NiAzN2VlMTg3MTFjM2MzODE4NDExODk5YTE5YTBmMWVkNmMwY2JjM2E5IGxlZ2FjeS10cnVuaworOTM3NyAyMTRmM2M0ZjU0ODkyZWM3YzhkNWNhNTZjOTc2NTIyZmEwMTMyMTAyIGxlZ2FjeS10cnVuaworOTM3OCAyNDQzN2Q4ZDBkZGMzYjQ1YjMwZDQzNzYyMjJiMTY0Njk0MjZlNjM0IGxlZ2FjeS10cnVuaworOTM3OSBhZGIzMDBjYmQ1NjY4MGQwMTIyNDJmYTk5Mzk3NmNlMTJmYjQ0YTYzIGxlZ2FjeS10cnVuaworOTM4MCAyNTIyYzhmODYxNWJkNTMyOWNjNmY5ODQ3ZWY3OGJmOWNjYzFjYzZjIGxlZ2FjeS10cnVuaworOTM4MSBlMjA3YmViNWEzNjI5YmQwY2Q5NTNjODFhYzQ5YmJmNTJkM2ZiZmM4IGxlZ2FjeS10cnVuaworOTM4MiA5Y2IyZjEwYjA0Mjk4ZWZhMGUxNGYyYmIwZDBkN2E3NjQxNjFlM2FjIGxlZ2FjeS10cnVuaworOTM4MyA3YjU0Zjk2YWYzYmVmYTAzYzJhOTkyNDJhOWJlNjVmMGVkYzc5MWZlIGxlZ2FjeS10cnVuaworOTM4NCA4MGFiNjAzMGI5MDRkYzkyOWVhNjhhNWM4ODUyODI3ZjE5NmRkMzNjIGxlZ2FjeS10cnVuaworOTM4NSA5ZWM2ZTBhOGYzNTNmZDJiZTZhYzVhNmVhMGI4NjhhNmQ4NGY1ZTllIGxlZ2FjeS10cnVuaworOTM4NiBlNGNkMzBlNDUzNzFjZTBhOWM2YTFiN2U0YzZiODI2ZDIwYmE1MmRmIGxlZ2FjeS10cnVuaworOTM4NyAzNTQ3ZmRlYWI0ZGZhYzhhZjkyNzE5OTA5Mjg2MDIxN2I0NWY3NDg1IGxlZ2FjeS10cnVuaworOTM4OCBmNTk1ZTdmYzJiZDllYTUyY2VjMzNiNDQwZGEzNzY2YmZjODVkZTgyIGxlZ2FjeS10cnVuaworOTM4OSAyYzQ5YzAyY2Y3NDc0YWIzOWE4ZTMxZTg2ZmJjYWJiNTA3MWFjNjUzIGxlZ2FjeS10cnVuaworOTM5MCBmMjY2YWI5MWE5OTBkMDBhMzJlMGJlMTMzM2M1NjhhZGNjOTg3ZDc4IGxlZ2FjeS10cnVuaworOTM5MSAzY2ZmNDQ1YmQxMGZmYTk3MTE1YjYxZGNmY2I3N2E1MjM3OWRiYmJhIGxlZ2FjeS10cnVuaworOTM5MiAwMzVlNzk2Yjg5MGVkNjI2Mzk1MDMwMWUwMjZhYjNhNmM0OTZmY2FkIGxlZ2FjeS10cnVuaworOTM5MyAwZDUxYjNiNjYwZDEyOTNlZGJlODMzNjY5YjY5YjJiMWVmNWZjNDMwIGxlZ2FjeS10cnVuaworOTM5NCBiOWEzOTUwMTEyYWVhNTkyMGFlNjY3OTE2MzgxMTNkMzM0MDAzNDQ1IGxlZ2FjeS10cnVuaworOTM5NSA4ZGZiZWVjYzI0MjJiNzk5MTc1M2JjOTMwMjYzMDk2OTc2MTE5MThhIGxlZ2FjeS10cnVuaworOTM5NiA5NTBkMDUxOWI1ZmU5ZTk5YTEzZjA5NWFkZjFjNmUwYTI3YTAxYWU5IGxlZ2FjeS10cnVuaworOTM5NyAxMDAyOWM4YzQwZTBkYzU1YzI1ZTQ0MGM2Mjg2ZmM3ZDk2OTZiNDI0IGxlZ2FjeS10cnVuaworOTM5OCBhZmIxZThhZjdlNGY4YWJjMmZkNjRhODhjNWRlYTA4YzY1ZGExZWI1IGxlZ2FjeS10cnVuaworOTM5OSAyMzZlYTkzYzU2ZmY3OGI3NWI4OGQ4NWQ3ZDAyYjg5ODMzMmU0MGJjIGxlZ2FjeS10cnVuaworOTQwMCA3NjI5YzRkOTg1YmMzZWRlM2UxZmQ4MGU1ZmIyMDcyZWU0MzhkYmZjIGxlZ2FjeS10cnVuaworOTQwMSA3NGFkMjY4MjUwNjA4YTkzZGFkY2Y0Y2E1ZDJlOGY4MWFjNDA0ODZkIGxlZ2FjeS10cnVuaworOTQwMiBjZjMxN2E5YzQ5OWJiZmY2MTU1MjU1YjFiNDI0ZjM4ZGVjZDM5YzMzIGxlZ2FjeS10cnVuaworOTQwMyAzZGIyNGI0ZDljNDIyNzViZDlkMzBkOTdlYjM4ZDczZWM4OGI2NmQ1IGxlZ2FjeS10cnVuaworOTQwNCA4YzkyZWM4ZjYwMzhhNzUwNzBlMmVhMjk3YzFjYTA1NDhjNWRkNmMxIGxlZ2FjeS10cnVuaworOTQwNSA1MjEyNWNlMzc2YTQyZTQyMTI4MTJkYzlmMzllMmYzNWM2MWNlNDRhIGxlZ2FjeS10cnVuaworOTQwNiBiOWQ5YzUzZjFlMWRmNTEyMzBiYjg2YzRlZjdmYjQwNDBlZmUxYzU4IGxlZ2FjeS10cnVuaworOTQwNyA3NDAyNGU5MDdjNjBkNjA1NDZhNjZiOTFkYjEzZWU4MjdmZDQzMmEyIGxlZ2FjeS10cnVuaworOTQwOCA3NzQ0YmYxZTQ4NWI2NWYxYzVjNjVhNTIzN2YzOWQzYjVhYTcwYjUwIGxlZ2FjeS10cnVuaworOTQwOSA0MDkxYjA0ZjkzYWRmMDE4NzU2M2U0Zjg2NDRkYjMwM2FmNDJjYTAzIGxlZ2FjeS10cnVuaworOTQxMCBjNWI5MzliNWE5ZTAyZDZkODMzZTNkMjk1MzA0OTI1ZDllMTlhMmIyIGxlZ2FjeS10cnVuaworOTQxMSBhNzJkYzUyYjk3YWRkNDYxYzM5ZTdiMzhlM2I0NzNmMjYxY2YxODY4IGxlZ2FjeS10cnVuaworOTQxMiA2ODNiYzM1YWI3NTNhZjc4YjdiYjA5MGU4MDNmZTU3YzNjODBjZDNiIGxlZ2FjeS10cnVuaworOTQxMyA2YjZlZjkwOTIzOGUwNWNkMGQ3MDc4YzljZjliOWFmNDRkOTJjNzFmIGxlZ2FjeS10cnVuaworOTQxNCA0NTVjYmFiNGE5YmU3ZDY1NDYzZDdmMTAyY2ZmYjI1MzIxMzJjNTA0IGxlZ2FjeS10cnVuaworOTQxNSBlM2M4YzM0MGE5OTBjOGNkZmFlMDAyZjM4MDNjOTM3ZWJiZDAwM2U4IGxlZ2FjeS10cnVuaworOTQxNiBiM2IwYWQ0NzEyYWQwZjg0YTMyZmVmZWUyMTkyYTViYWIwMzBiY2UxIGxlZ2FjeS10cnVuaworOTQxNyBkYzNjOWMwNGVmMDdiOTMzYTQwM2ExZmQzY2EzZGQ0OTZjZmExNjkxIGxlZ2FjeS10cnVuaworOTQxOCAxZGFmYWQzMDcwMDY2Yjk5MWE3NmUzNzU3ZGY1MTJjN2EwOGU0OWVlIGxlZ2FjeS10cnVuaworOTQxOSA5MTA0Nzg0YWYxNTkwOGFjZDcyMDVhMjkyMTkwOTI5NDIxYTIxNmRjIGxlZ2FjeS10cnVuaworOTQyMCAwNjI5MWYwNGJhOWMzOGNhOWUyMDI0ZmIzYjYyZjljYmE3ODUwYTlkIGxlZ2FjeS10cnVuaworOTQyMSAwYzFjYzJkNmM0ZjAxZGM0ZTE0MGRkNmZkMzA0MGMxNmEwZTdhMGJiIGxlZ2FjeS10cnVuaworOTQyMiBmZWJhM2Q5YTMwYzcyMDBhOGEyMGNjMTYxYjIxYWQzMGFkOTVkNjRmIGxlZ2FjeS10cnVuaworOTQyMyBmMTRlNDQ1OWZiOTRkYmM3ZDlkM2Y1MWZhNmQ2ZTgxZTFiNDUwYTFjIGxlZ2FjeS10cnVuaworOTQyNCA1ZWY0NzAwNzE5ZGU5YTIyNmIxZDYxMTIyMjdlYTFkODBlMDE5NjRlIGxlZ2FjeS10cnVuaworOTQyNSBlN2JmNTQ1M2E2ZmY0ZmY3NjQ4MmYyNDFlOGUyNDRjZTU0MDFlN2JlIGxlZ2FjeS10cnVuaworOTQyNiA4MDBjYjIzNGY2NzZmMWFiMDNlNjg2NzJkNzUwOTU5NWYwNTg3NmYxIGxlZ2FjeS10cnVuaworOTQyNyA2ZTBlZGRmYTQwNGE3MTcwOTFmY2Y5ZDVkMzFkNmU0ZjI3M2VlZWM0IGxlZ2FjeS10cnVuaworOTQyOCAzOTEyZWZhNWJmY2EyNjYzZTY1OGZiYzI2MjZjMGNlMTViYTFlMmU2IGxlZ2FjeS10cnVuaworOTQyOSBjOGFkOWRjOGFlMWViZjY5YzIxMzA4ZjZjY2Y0ZGQ4MjE4ZDZhM2ZlIGxlZ2FjeS10cnVuaworOTQzMCAxMTQ0YTllZDk4ZDZhYjM4MmQ5YzRjOGI5ZDI4MjcwMDY3NTQ4MjMwIGxlZ2FjeS10cnVuaworOTQzMSBkYzA3MzkzNzk3MTQ5ODgxMTVlOWM5OTQ3NTI3OGEwYjViZmNiNWQ5IGxlZ2FjeS10cnVuaworOTQzMiA5NjQyYTI4ZGYyYjE0Yjc3ODc4ZGRlZGUxMjZjNDE2Y2Q1YjQyMDBiIGxlZ2FjeS10cnVuaworOTQzMyAzODQ5M2I5Mzc2ZWFlMTgxYjNhMDYyOTQ2ZDA2NGVhNTI1MjVmODgzIGxlZ2FjeS10cnVuaworOTQzNCA5NzU0YjIyMzM1ODA5MWNjNjdiZTQ1YTU1MGFjMTAxZDIxOTY3NzEzIGxlZ2FjeS10cnVuaworOTQzNSBkZjViNTZhNWFmY2ZkNjMyNGZlZDJjNDVhOGQzZmE2ZmU4ZDNjMWUzIGxlZ2FjeS10cnVuaworOTQzNiAxMzlhZDMxZmY4ZmQ1Yjk4NmI4YzA4M2Y5YTZiMzVmN2Y2NDEwNjlmIGxlZ2FjeS10cnVuaworOTQzNyBmZWRiZjkzMjUxOTBiOGE2YTYwMzA2YjkyMTg0ZTE0ZmQ0NDE0YzFjIGxlZ2FjeS10cnVuaworOTQzOCAzMTlhNTFjMzgxY2VlNGY4YTRmZDlkYzE0YTU1YzZjYWM2NmY4MzU5IGxlZ2FjeS10cnVuaworOTQzOSBjNTg3NGY2ZjU0MzFmMjk0YjlmYzVhZmEzYjkzZDhlNzRhMjc5Zjc1IGxlZ2FjeS10cnVuaworOTQ0MCA0ODRhMWM2OGM1NTg5NTZhZWFmMWFjOTdhYTVmOGQ0OTdiMGJjZDMxIGxlZ2FjeS10cnVuaworOTQ0MSAxMGYyOTIxYTA5MWU3MTRhYzc3ZmNmMmIxZmIxZWIzY2MxOWQ5M2IxIGxlZ2FjeS10cnVuaworOTQ0MiAzM2JlN2Q1ZDQ5OGI2MDcyYjcyYWIwYTcwMTIxNGIwNjIxZmIyZWUwIGxlZ2FjeS10cnVuaworOTQ0MyBkY2U4MzhjZDQyYzE4MDlkNzEzNTI3ODZhZTJkYmM1MTEwZWQzZDk0IGxlZ2FjeS10cnVuaworOTQ0NCBlZWQ2MzA0OWRmOTU5NTVhOTk1N2NiNjVlZDRkY2Y1YTljYTdiMDNhIGxlZ2FjeS10cnVuaworOTQ0NSA3NDRlMmI2OGYzYjZkOTQwYmJmMjUxMTE4NWMxOTc0Y2Y5OWEyZGEwIGxlZ2FjeS10cnVuaworOTQ0NiAzMWVjYTY0OGY3ZmZlYWYxZDJjNjQxMzRmZjM3ZWYwMTlmYmYzZWVhIGxlZ2FjeS10cnVuaworOTQ0NyA0OTJjNmRiMTYwYWM5OWUzZThmZjI1NzJlYmE5MmI4OTcwODE5ZTc3IGxlZ2FjeS10cnVuaworOTQ0OCBlNWFmZjQxMDM2ZjNkNjU5MDYwZTJmZmJmMWZkOWE2NGYxZDdhNjcyIGxlZ2FjeS10cnVuaworOTQ0OSBiYzEyNWYwZDJjNWQwZjE0MTRkMDQ4ODM1OTY3ZTBkZTFkNjVlOGY3IGxlZ2FjeS10cnVuaworOTQ1MCBhNjkyOWU3NDE3ZGQ2MmM3NzQxNTg4MTViNThiMGZlZWY2YWZlNDZmIGxlZ2FjeS10cnVuaworOTQ1MSBiYmFkMmM2ODRhZDcyYmNlNWYxMzQ0ZGZjNGIyZDY3YTg2N2RiY2NiIGxlZ2FjeS10cnVuaworOTQ1MiAyM2IyN2IwYjIzNWIzMTU1MmQ1N2VmOGUzM2JjYWU0ODc2OTZhZWM5IGxlZ2FjeS10cnVuaworOTQ1MyA4MGIxZTI3ZjIwZDQ5Y2UxMTk1ODg1MzUyM2Y1YmU2YjliZjEyZTQyIGxlZ2FjeS10cnVuaworOTQ1NCBjZGE3MjBiMTkxOWRmZTUyMmFjYjkwYmFjYWIzZmM1ZWM4Nzc3MzU5IGxlZ2FjeS10cnVuaworOTQ1NSBhNTY4NmU3NTY4NWYyZDNkZWI1NmQ1NTcxMmVjMzhiZWIxYzYyMDIyIGxlZ2FjeS10cnVuaworOTQ1NiAyZjJlZmI4ZmE1NGZmM2M2M2EyY2UxYTE2N2EzZjkxYmM1OGUzYjVkIGxlZ2FjeS10cnVuaworOTQ1NyA3Njg4ZjMxMDZhZTQ0MWMyY2I3ODczMmQyZDZkNWEwMzMzYWRmOTQ5IGxlZ2FjeS10cnVuaworOTQ1OCBjZmFkNGIwMjk2NDVlOWE3Y2IzZGFkZWI4ZWQzMDQ5MmYyMGRhZjRkIGxlZ2FjeS10cnVuaworOTQ1OSBiNzBiYTRkYjc2N2UwOTc0MGY1ZDFjYTdjMDdlYjg5MmYxYThlMTQ5IGxlZ2FjeS10cnVuaworOTQ2MCBmMzM2NDcwOGMwOWUwNzkwMTBiNmExN2U2ZDAyMDg2MjQyY2Q3ODI3IGxlZ2FjeS10cnVuaworOTQ2MSBmZmNhZjdhZmQ1ZDllM2U5MDFmZDhkYmQ1YmNlZjRlMTQ5M2MzYTQ0IGxlZ2FjeS10cnVuaworOTQ2MiBmNWZkMjM5YjE3OGFkMDA4YTY4MWI0MWRiZjUwNmQzNzQ2MWM3YjY4IGxlZ2FjeS10cnVuaworOTQ2MyBkNGU5YWM3NTdlNWMwN2ZmNTljNmIzODdjZDJjNDI1ZDFhNjM2YzM3IGxlZ2FjeS10cnVuaworOTQ2NCA2MzhkODc3ZWE5OTU4MzUzMzZjMDg4OGIxM2EzMjI2MDMyNjQ5ZmMwIGxlZ2FjeS10cnVuaworOTQ2NSAxYTQxNDE1OGViNjY1YjExMGNkNGE2ODcyZWQzYmFiNWEwNDMwZWQxIGxlZ2FjeS10cnVuaworOTQ2NiAyZTkxZmM3MWNiYjUwMTk4MzQ3MjkxYmI3MzRkNzk4M2Y0NWNjODNiIGxlZ2FjeS10cnVuaworOTQ2NyBmZTEwOGE0YmI4ZDU4ZGFhY2Y4N2M3ZGIzZjFjYjkyYzUyNzA1MTQ2IGxlZ2FjeS10cnVuaworOTQ2OCBiMjQ0NWM5M2YwM2I4OWMwYTA2ODc4ODI4NGJlYzlhY2JjNjYwYTA2IGxlZ2FjeS10cnVuaworOTQ2OSBmMzQ5YmYwZTkzMjI3NmZiNjRjMTc0NzM3YWFjYWMyYjI4ZGFkMjE2IGxlZ2FjeS10cnVuaworOTQ3MCBkMDA1MTVmOTJiNTM0ZDE0ZTVkMDQ2NzMxNGI4MTI0YWVkY2I4MjUyIGxlZ2FjeS10cnVuaworOTQ3MSA5ODdhODMxYWFmMjM2YWRmNTYxMWM3OTY5ZTdmODgxYmNkMzgyNjRiIGxlZ2FjeS10cnVuaworOTQ3MiA2MGNjZmE5NjU2YWNmMGI1MjM1NGExYzE1ZDdjM2Y0Yjg2OWViYjMwIGxlZ2FjeS10cnVuaworOTQ3MyBlYmNmNjA0Y2NlZTA1MTEyOWZiYWFlNmYyNjIwZGJjNGFhMGRlZTA1IGxlZ2FjeS10cnVuaworOTQ3NCA2OTExMjk5MGQ4ZTI0OGI5ZjNiYjgwZjVkZWYwMDI3ZTlmOGYyZTUzIGxlZ2FjeS10cnVuaworOTQ3NSBmYTE5NDMwZmVjNGU0OWZhMzFlNTAwZmJjMjk3YzExYWYxZGRkMTdmIGxlZ2FjeS10cnVuaworOTQ3NiA4YWQxN2U0Y2NkOWJhODk5M2ZiN2ViNTExNzM1Y2YwZGM3ZGM2M2ZkIGxlZ2FjeS10cnVuaworOTQ3NyA3Y2U5ZGEwMjk2MTlmNTViYzUzMTVmN2JkN2I2ZjFhOGM5OTBiYzRmIGxlZ2FjeS10cnVuaworOTQ3OCBmMmFmM2M2NDU3MTAyNGNmNzkwMTFjMDU2Y2RmZjJiOTAzOTlhZWFmIGxlZ2FjeS10cnVuaworOTQ3OSBmZWI4MGVhNTQ4ODg4N2NlZTg1NTI4YjE5NzgwODBjZmU2ZTU3ODZmIGxlZ2FjeS10cnVuaworOTQ4MCBmMGY5YjJlNGY0Y2MwYzUwOWY4ODRkOGIzZmQzNjdlZjA5YzJhYTUxIGxlZ2FjeS10cnVuaworOTQ4MSAyMjQ0NDM5ZmFmY2YwNmMxZGY2NmY0ZmEzNDY2NmM2ZjA2OTcxOTY5IGxlZ2FjeS10cnVuaworOTQ4MiBhMTBjNDUzOTEyN2ExY2YwYzEyMjBmOWYwM2M2ZGRkNGU0ODVlNWJhIGxlZ2FjeS10cnVuaworOTQ4MyBjZGVlZmY0ZDZjYjRjZjcyOWE4ODNiYjA3YjUwMWMxZjhmMmIxNzkxIGxlZ2FjeS10cnVuaworOTQ4NCA5NzczZDM5NDFjOTZlMmQzYmUyNjNiOGUwZDRhNzVkNGFkODU0YWUzIGxlZ2FjeS10cnVuaworOTQ4NSA2ZjJhYjRhZmE4Zjk0Nzg3YzA2ZmNmMGJkMGFkOGYzN2I2NGQ4YWQ5IGxlZ2FjeS10cnVuaworOTQ4NiA0Yjg4NzExOTg1YTI1ODljMzIxOGZlNTYwNTM5ZjRjNWYyMzIxODI0IGxlZ2FjeS10cnVuaworOTQ4NyA0NDRhNmIwN2RhNDY1MTY4YWEyOGRiNzFhODJjOThlODMxYTFiZWQ1IGxlZ2FjeS10cnVuaworOTQ4OCAwYWJhNjQ5YmQ5YmIzYWNkMmNmNmJhM2IzZjI0Mzg0YTA4MzFkOTc0IGxlZ2FjeS10cnVuaworOTQ4OSA3YThjMzA4MTk2ZDE0NjU1YzQyZjMxYjdlNTI0NzVhMjgzMjA5MGI2IGxlZ2FjeS10cnVuaworOTQ5MCAyZGIxNmQxZGJkODdjYmEwNjgzMjM2ODBhMmU4YzI1Y2IzNTY0ZGU3IGxlZ2FjeS10cnVuaworOTQ5MSBhNWRmMDJiNmM3YTgzMDgyYjQ3MmI4ZmYwYjQ4NzMxYTBmODk5M2VhIGxlZ2FjeS10cnVuaworOTQ5MiBjNzVkODk5ZTY2NmYxNjhkN2U0N2IwMDVjMTQ1ZDZmYzI2ZDM2M2YyIGxlZ2FjeS10cnVuaworOTQ5MiA4NDQ2MTAxMWExYTBhYjQwMmUzNTJmMDY3NDhmMjlmYjViNTU1OWU1IGxlZ2FjeS10cnVuaworOTQ5NCBkYzg1YWQxYmEwZTE1NjNhM2ZlYmYwYTkxNGUyY2RhZmRhYzJmODA2IGxlZ2FjeS10cnVuaworOTQ5NSA1OWFhM2UxYzEzZGM1ODIxYjE4Mjk3OTY2MWIzNzMxMGMyMzFjMzU1IGxlZ2FjeS10cnVuaworOTQ5NiAwYTk1MTQ3MGIxYmYzMGZmYjljZjFmOTVlMWFjNDc3YTNjNjk1MzJlIGxlZ2FjeS10cnVuaworOTQ5NyBhZGExMzExZGEyODZlZDY0MDA3ZjhjODFkMjg3N2IwZmEzYzIzNzE2IGxlZ2FjeS10cnVuaworOTQ5OCAyNjFiMTFiMGNjZDY0ZGYwNGY3ZGUwODE2MDdjZjg5MDhlMTFkNjEwIGxlZ2FjeS10cnVuaworOTQ5OSAzODQ0ZGUyYTcwOWY1MGNkNzEyNDRiMWQ4ZjI3MjExZDYyN2U5M2MxIGxlZ2FjeS10cnVuaworOTUwMCBhNjZkZjU1NWYwMjVmMmI4YTYyMWM0ZGI5MmUwMjY1NDJlYjIyZjhmIGxlZ2FjeS10cnVuaworOTUwMSBjY2Q0NzFjN2I4NjNjZGUyMmU0ZDMyNWEzYWEzMWQ5YWM5ZWZkMDA3IGxlZ2FjeS10cnVuaworOTUwMiBlMTdmZTc5MzA1Yzc0MDZiOGM3YjljYzI5ZWZlNDBmOTI4MjBlMjJiIGxlZ2FjeS10cnVuaworOTUwMyBjNWExOGZjNGY5NjYxNGJiMTJkZjM0YTNiNzQ2YjNjMTY0ZTc5MWFmIGxlZ2FjeS10cnVuaworOTUwNCA0ZDY0NTkwOWI4MzQ1NWQyMWJhZGYzZWUxNGIzYWZkZGQ1NzFhYTI5IGxlZ2FjeS10cnVuaworOTUwNSA4ZGEzNWYxYzczOTAxMGJiOGJmNGQzY2MxN2JhMmQwNTBjYTAwODUwIGxlZ2FjeS10cnVuaworOTUwNiAzNzlkMWZkNDJkYmYxZjkxZjkxMjFlZWQ5MWY1ODBjMDUxYTY2NzBjIGxlZ2FjeS10cnVuaworOTUwNyBhMzY3YWFhNjUwM2NiZGUyY2FlMGQzYWY3MzE4YTdjNTVlNWFhYTc3IGxlZ2FjeS10cnVuaworOTUwOCAwNWUwZTQ5OTAxNGYyOTRlZDYyM2NkZWYzNTMzZWUzODQzOTJjNGVmIGxlZ2FjeS10cnVuaworOTUwOSA4ZDExZWNjMTc3YjJiOGM1MDM0ZTQzMzRiMWJkZmY0ZDdmOTNmYzM0IGxlZ2FjeS10cnVuaworOTUxMCBmYTg1YTdmZDc0MGJjNjFiYjM5OTFhZWRmNjQyZTRmZjI2ZmVjYWFlIGxlZ2FjeS10cnVuaworOTUxMSA2MTQ3NDU5YmZjZmI5YTBlNjdjZmE3MmExYzhkYjhmOTZlYmQ1MjA4IGxlZ2FjeS10cnVuaworOTUxMiBkZGY1MmYwMWJjMGE3NmQ2ZDdjOTgyNmVmNjY4NzAxODUxNmQyYTI2IGxlZ2FjeS10cnVuaworOTUxMyAzMTYxNjc0OTkwMDU5OTY4MjU5YzE4M2Q5ZjI2NDk3NGVmYjYxMTQ5IGxlZ2FjeS10cnVuaworOTUxNCBkMGE5NzAxNGVkNDJmMDFmNjI2MTMzZWUzYTg3MTIyZTQwODAwNDNjIGxlZ2FjeS10cnVuaworOTUxNSAyNjEyZjlhYzMxZWRhMTc3NjI3ODM0YjMxM2NmNDhmNGI3YjFiOGNkIGxlZ2FjeS10cnVuaworOTUxNiA0OWNlMThhMTY5OWY0YzYyMDg4ODc2ZDE2YzJiNWJhZjZiNWEyZDAzIGxlZ2FjeS10cnVuaworOTUxNyBhYjRkNjA0ODIyZDBhY2YyNTdmNmFmMWE1YzMzNDdkMmQyOTJiODczIGxlZ2FjeS10cnVuaworOTUxOCAxYzkyN2VjZmNiYjNiMTg4MGQ5M2M5MDEzNWVlYjA3ZTBlNDRhYTE5IGxlZ2FjeS10cnVuaworOTUxOSBhNTJhM2UyNmVkYzRjZTk0MTRlZTEyNWZiZjM0NzBkNTI1ZTA5ODMwIGxlZ2FjeS10cnVuaworOTUyMCA4NGU4NzFlMjAwODdhZWNmODQ2MjJjZGY2NDM4MzQ3NTdkZmFmY2FhIGxlZ2FjeS10cnVuaworOTUyMSA3NmVhZjM2MDQwYmU1NWNhZTJiYjFkYjMwMDRlYmUyNjg5YWRkZWM5IGxlZ2FjeS10cnVuaworOTUyMiAyOTdlYTY3OTI2ZWI5NGFhNDk1NjdkZGE5MDA4Njg0YjM3ZDU3ZjQyIGxlZ2FjeS10cnVuaworOTUyMyBhZTYzZmEzY2IxYzZmOTFmNjM2MjdkZWYwNGEzNjk5M2VmOTI3ZmE4IGxlZ2FjeS10cnVuaworOTUyNCBjNGE3OGI5MjRkZDlhYzg4NjgzYThkZjcwNGE5N2Q5ZDFkN2QxN2ExIGxlZ2FjeS10cnVuaworOTUyNSA5ZmUzMzVkNDU1OTU2Y2NiODk4MTRmYWE2YzZhNjYyYThiOWUzNjg1IGxlZ2FjeS10cnVuaworOTUyNiAzZWNhNWYzNzUwMWE3OWMxMDEzMzNmNTk5MWQzOWFmNDA4ZTE3ZmVmIGxlZ2FjeS10cnVuaworOTUyNyBhZWNlNTEzNjJhZGFjNWMxYWEwZTJjNzY4NzYyNjYzYTA5NmY2OGU2IGxlZ2FjeS10cnVuaworOTUyOCA5MGVkY2IzOGZiMDAzZjI0M2Q1NzZlZmJiMTY5NGI1OGNkMTgxMTI2IGxlZ2FjeS10cnVuaworOTUyOSAxZjJmNTU5NzczOWJhMWViNzFkMGY2ZjE5MWU0ZTExNjBkYjE5NzRhIGxlZ2FjeS10cnVuaworOTUzMCA1MDI4ODBhZjQ2NTRlMzc5ZDlmN2U1MTcwMDJhYTU2MTlhM2MyNzIxIGxlZ2FjeS10cnVuaworOTUzMSBkYjBkZDExNzU0MWQ0NmU4MmEzY2MwYzY4MzhhYjdhNWRkYTFjY2QyIGxlZ2FjeS10cnVuaworOTUzMiA0MjUzNDQwOTc1MGEwNGVhMTE5YmY2ZTJiMWQ4NGI5NGE0OGFjNzMxIGxlZ2FjeS10cnVuaworOTUzMyBkZjA1YjljNGJlN2YzNzcwNTE2ODE0ZGI0MjBhOWZkZjkzMDZjMmM4IGxlZ2FjeS10cnVuaworOTUzNCA1M2U1NGExNGY0MzIzMzlkODE2YjQ5OWUwZDBjYWNiNmIyMjQyNzg0IGxlZ2FjeS10cnVuaworOTUzNSAwODk2ZDMyYjYwYTRiMWNjODAyY2YyNjdhNWFkMTJiMTYxZDIxMGNhIGxlZ2FjeS10cnVuaworOTUzNiBmMmIyYTdlYTJhMWUzNTVjOWY0MTlmYzZkODYwYWM3MWEyMTFjYjY0IGxlZ2FjeS10cnVuaworOTUzNyA2ZTNiNDY5NWZmYWUxY2FlMDA3ZmM0N2ZlYjg4MDI4ZjdmOWUwMzJkIGxlZ2FjeS10cnVuaworOTUzOCBjOTVlNjBlYWQ1ZTA2YTFlNWUzZTk5NmYyZDQwZGFjYjY3ZDQyZTM5IGxlZ2FjeS10cnVuaworOTUzOSAxZDBiOTAyODUyM2M2ZWJiMzFiOGNhYWY0M2QzNTAxNjhiODE5OWYyIGxlZ2FjeS10cnVuaworOTU0MCA2YjRmOGE5NmUxZDQ0NGY0ZmQ2YTc2NDcyYTY3ZDE5NjMwNzRlYWJmIGxlZ2FjeS10cnVuaworOTU0MSBlNjhlZWIzNWQwNGQxZGI3ZTdjYmIxYmU3MmQwYTg4ODc5YjNhNzFjIGxlZ2FjeS10cnVuaworOTU0MiAwYzcwMjY0NTczZGIzZDM1MjEzNjEwYmVjYzU1NGNkNGEwOGU5ODVlIGxlZ2FjeS10cnVuaworOTU0MyA4ODY2YzY5YjBhZmM4ZGM3OTMxYjRhNTE5ZjQxMDU2NWQ0YzgwOGZlIGxlZ2FjeS10cnVuaworOTU0NCBmYTQyMzA2ODU3NTcyZmY4NTNhYTAyOTk2YmE3MGQ4ZGJmNGEzZWE0IGxlZ2FjeS10cnVuaworOTU0NSA5MDY1MGJiZDlkYmI2YWM1OWYzMDdiNjIwYWQyNDdhNTcxOWRlNzcyIGxlZ2FjeS10cnVuaworOTU0NiAyY2RmMTFiMmVkOWI0NDEwZmFiZGUxNjA0N2QyYWQ2MmQ3ZDFiYWM2IGxlZ2FjeS10cnVuaworOTU0NyAwMGU2MTI1NjA0OTJjNmFhMzVhZTQwNWJkZDJkZTcwMDdjNzg2Nzg4IGxlZ2FjeS10cnVuaworOTU0OCA3NWExYWVjNmQ5YjJjZDI0MzhkNjk3ZDRkZGQ4YTI4NzVjODM2MWJmIGxlZ2FjeS10cnVuaworOTU0OSAwMzE0ZWNiYzVmNWQ0ZTI1YmU2ZWFjNzkyNDQyMTI1NTYyZjExYjQyIGxlZ2FjeS10cnVuaworOTU1MCA1YzM1M2M1MjJhNDgyNzgxNDhiNWVmZDRiYzdjODJjYjc3OGNjMGExIGxlZ2FjeS10cnVuaworOTU1MSAzYjUxOWE2ZDI3YmI1YmUyZmU4MGRlMzY2OThhYThjMjU2NDMwMTAwIGxlZ2FjeS10cnVuaworOTU1MiA4Y2Q1NzNiNzJkNGI2MTNjYWIwZTBlM2RkYzdiYWRmMTY2OGEyNWQ3IGxlZ2FjeS10cnVuaworOTU1MyAzZDhjMWI4ZjYwOTkwZTg0YzIxNWQxMTkyY2QxNTMxYmRmNTNhMTZhIGxlZ2FjeS10cnVuaworOTU1NCAyYWU0NDE3YWMzMzA5ZWU2ODI1ODdkMGZmYWYyY2M4Nzk5MWExMzlhIGxlZ2FjeS10cnVuaworOTU1NSBjMWFkMzRiM2MwNjk5NTBkNDc0ZGE4OTMwYTQ3NTZmZjU0MmZjOTY1IGxlZ2FjeS10cnVuaworOTU1NiAwMzE0NTUzNDgyYTI5ZTc0NDM4YTI1MWJjMzZiYzYyM2JmYTY2NzFjIGxlZ2FjeS10cnVuaworOTU1NyAzMjJkY2E1ZWUxNDViZGNiNDdkYmQ0MjRhMGI1MDEwOThhZDlmNTEzIGxlZ2FjeS10cnVuaworOTU1OCA5MjRmOGEwMTE3ZDVmYjAxMWQ1ZjNlNWFkMzE3MTllMzQzZjk2MzI5IGxlZ2FjeS10cnVuaworOTU1OSAwYmFhMmFiNDJlZTkwY2RkYWM2NmYzMzEwMmY2YmI4MjdhYWQ1NjlmIGxlZ2FjeS10cnVuaworOTU2MCA0MTliODZiMDRhZTRkOThiM2U2ZTY4ZjlkYTM1OGZlOTU4OTk5NTVmIGxlZ2FjeS10cnVuaworOTU2MSA5MTNlNDhhYWFjNzYxZWFjNDU0MTQyZGRhMDZlODhjMGQ5NzllNDljIGxlZ2FjeS10cnVuaworOTU2MiAwYzY4ODc3NjU5Mzk1MjRlNDM4MWNkZDI0NzJhNGZmMTgxY2M0ZTYwIGxlZ2FjeS10cnVuaworOTU2MyA5YjA1YzIwYzU3NzZhNGYyNWMzMjkxNzE0Yzc0OGVmZmIyMjM2MjMyIGxlZ2FjeS10cnVuaworOTU2NCBmY2IyZTNlZTg5OTU5NTZiODA1NzZiNTVlOTBhMzM5NTcwOTU3NDE1IGxlZ2FjeS10cnVuaworOTU2NSBhYjUxZGEzNDczMTZkNGJmYWI3NGIwNWUxMTMwNDUwMmRiNzRlYjZjIGxlZ2FjeS10cnVuaworOTU2NiBhMmUwNTQwMzI4OTljNjI1ODZjMDQzNmFhOWQyYTFjMjQxZTEyMDNhIGxlZ2FjeS10cnVuaworOTU2NyAyOWIxNjg2ODc1ZGFhNTE1MTNjNDFkYjYyODVhMjIzNjk4YmMwNmVmIGxlZ2FjeS10cnVuaworOTU2OCA5NjQ2MGVmMzNmZGVkN2VkMTJmZDc1YThhN2I1NTZmNGUyZmU2MWUzIGxlZ2FjeS10cnVuaworOTU2OSAyZThiY2RlNGMyNDhmZmJlNjk5NjdkNzcyMzc0N2ViMWNkODQ2YTUzIGxlZ2FjeS10cnVuaworOTU3MCA4YTU1NjQzZTY2N2ZhMTcyZGRkMDVkMjc2MTNmMzk5MmE5MDAzYjJlIGxlZ2FjeS10cnVuaworOTU3MSBhZjgyNmIyM2YwMDY0MzA4MzVlMGE3MmM5YjYxMDlhMjhmNTM2MmQyIGxlZ2FjeS10cnVuaworOTU3MiBlNTU0ODA5NmI0MmE1ZmI5MTI2ZThlYjYwNjVmNWU5YjhlZjU3ODk3IGxlZ2FjeS10cnVuaworOTU3MyBiYzE5NzZmZjZmZmQzMGZiMzUzNDc0OWU4OTc4NTlhMjc5ODdjYWE0IGxlZ2FjeS10cnVuaworOTU3NCA1YmI4ODQ1Mjc0NDZmOTY1ZDFlMjE5YWFkNjJiY2I0MTAxYzNhZDQwIGxlZ2FjeS10cnVuaworOTU3NSAwMGE4NWFiMDMzN2Y3Zjg3Y2RmNjI2ZDNiZGVkNTA4NWM4NDQ1YmYwIGxlZ2FjeS10cnVuaworOTU3NiAxNjc2ZmFkN2I2M2U3NTI5ZDJmMThiNTE5OWVmNWFiMDkzMmIxZDhjIGxlZ2FjeS10cnVuaworOTU3NyBmN2Y1NWJiNmEzYjMwODBmMmUwOGJiMjUwMTNhYmE5OWYzZGNlZDMxIGxlZ2FjeS10cnVuaworOTU3OCA4MDg0NzlmODVhMjlhM2IxMTllYWY1YjVkY2U3YWQ4ZGFkOWUzMjExIGxlZ2FjeS10cnVuaworOTU3OSAwZGMyZmNiMDc2YWNhNWI3YjRhMmZkMTVkZDAzYzRjMDQ0NzhlNTk0IGxlZ2FjeS10cnVuaworOTU4MCBlZmFhMDFkZWZmZDJkYjA0MjBlM2M5YWI3OGZmNmU2M2QzNjQ5NGIyIGxlZ2FjeS10cnVuaworOTU4MSAyZTVhMTE2ZTU0ZWNkNWNjZTFlNDcwNGM5N2UzMWZlNThmNDA0YTE2IGxlZ2FjeS10cnVuaworOTU4MiBlNzA2MWFiMjQ4NTIxNWU0NGJiNDdhYmU5MjhlNjI3YTI5NTZmN2NjIGxlZ2FjeS10cnVuaworOTU4MyAyOGM3ZDVmY2QzYWM5ZGEzMWY2YTkxZjhhOGQyZTcxYzE2ODExYTYzIGxlZ2FjeS10cnVuaworOTU4NCAzMTc2ZGVhY2I2ZDFmMGVhYTY1MDEwNjllMjkzNmQ3OWVhYTdiODg5IGxlZ2FjeS10cnVuaworOTU4NSA2YzkwMGFkYjFlYzNiMTVhMTAzYzNjOGEyYjZhNjkxOGNjOTVkYjQ0IGxlZ2FjeS10cnVuaworOTU4NiBlZDYyNTQ4MDQ1NjM1ZTU5YmVhZjI3ZWU3NjVlOGRlYmUwYWViMDhjIGxlZ2FjeS10cnVuaworOTU4NyBmNDM2Njc4NjZkNWU1ZTYyMWZhZDVhNTA3OTdlODQxZjg4NGIxMjY5IGxlZ2FjeS10cnVuaworOTU4OCAyODIyMzY4YzI2NmEzZjA5OTZkMDZlYmUwZGY5MDA0ZjU3YTQ4ZjFjIGxlZ2FjeS10cnVuaworOTU4OSBmMDYzZjFlYjI5NjRiYzQzMWE3MGMyMjA2ZDg0ZGFiNjA5ZDg4MDI4IGxlZ2FjeS10cnVuaworOTU5MCBlY2U0MTIzZTM2ZWEyY2M5OWI1ZGUzMmM5MjFiZTdjNzUzMTFiYzQxIGxlZ2FjeS10cnVuaworOTU5MSBmNWYzMDVkN2E2MTc1NzQ0ZTJjM2RjNzFhNGZhZGRmOTA3MjY2NTA1IGxlZ2FjeS10cnVuaworOTU5MiBmYTA5MzcyZjc4NzJkYmFjNDExYmQ3NWIyNTc3YzM2OGI4YWYyYWM2IGxlZ2FjeS10cnVuaworOTU5MyBlYTdkYzUxMGUyZGY1NjllODViMDcwY2JiMTE3ZTA2MmM3NmZjMDAwIGxlZ2FjeS10cnVuaworOTU5NCA0MTUxNGQxZWQ2NjRlMmFmYWMxYmRmNWQzMTVhMGVmZmNkZDNiZjg5IGxlZ2FjeS10cnVuaworOTU5NSA0MTlkY2EyYjNhNjE3OTBiNDNlYzU5ZGMxZmEzMWExYTNkOWNkYTUxIGxlZ2FjeS10cnVuaworOTU5NiBlOTEwOGU5N2E1YTAxN2UwMjdkZjMzY2RiZmE1NTQzZTkxNDgyMzhkIGxlZ2FjeS10cnVuaworOTU5NyA1MTYxODk5ODRiMGNhMzk0Y2UyZjRiZmI1YWViY2JlYzU4M2RjZWQ2IGxlZ2FjeS10cnVuaworOTU5OCAwZWZlZDRkMzMyM2IxMzAyYWNjYTAzOWJkNzE2ZTVjY2Y4ZDJlMzYzIGxlZ2FjeS10cnVuaworOTU5OSBjODc0NWQyMDUxMjI3MTZjOWUxMGRiNzk5ZmI2ZjEyZjllNjg2NDg0IGxlZ2FjeS10cnVuaworOTYwMCA0MWQ2ZGI4ZTI2ZGMwMzM5M2RmODdiNDkyNzJjNWIyNDliYjMyNTY5IGxlZ2FjeS10cnVuaworOTYwMSA1ZDUxN2RkY2JkMmVmNTE5MzNlOGYxZmU0Y2MxYzVkMzIzM2U1MDM3IGxlZ2FjeS10cnVuaworOTYwMiBjMDM3ZDAwYjFlMmNiYTg5ODVjYjYzOWMxMDY3YjNmNjQ1NTdmMTcwIGxlZ2FjeS10cnVuaworOTYwMyBkZTRjODFjMDY5OTQyOWJlZTQ5N2ZkOGIxYWQ3NDRmOGM2OTNkNWY5IGxlZ2FjeS10cnVuaworOTYwNCBkMmMxMTBhY2M2MGMxNjYyNjI5NTU3MGY3ZjZhNTkzMDNmMmMzOTkwIGxlZ2FjeS10cnVuaworOTYwNSAxYzRiYWFkYTU1OWUyMzBkMzQyMTYxNmEyYTFmNmE5OWM5ZTdiNmJhIGxlZ2FjeS10cnVuaworOTYwNiBkZTRkY2E5ZTQ3NzhjZmVmOTdhOWE4Y2YxNzc5ZDc2OTBhZTM0YmI4IGxlZ2FjeS10cnVuaworOTYwNyA5NzMxNWJmMDhmYWQ2MjNkNjIwNGQwNWUwN2I3NmQzNzY2OTkwMDFkIGxlZ2FjeS10cnVuaworOTYwOCBlNGMzMWRjMzA2MjNjNmQ4YTgxNjA3NTA4MTA4NTZlM2NmZjE0YTIwIGxlZ2FjeS10cnVuaworOTYwOSBkZmRlYWM1ZTE4YzYyNWFhZDk5OGEwYWM3ZTYwNGJmNWQ1ZjA3NGUyIGxlZ2FjeS10cnVuaworOTYxMCA5NmZhNjc1M2U5NTYyNzliNWI2OWU1M2M4NmYxNjM0ZmE1Mjg2NDNkIGxlZ2FjeS10cnVuaworOTYxMSBiYTg0OWU0OGY5Y2FlMjM4YzkzM2FiYWIyYzk0YTkzOTZmMGU1YjcwIGxlZ2FjeS10cnVuaworOTYxMiAzOTM5ZjlmZjY2NWY4ZmJlYTM1ZGNhNTc3MWU5OTY0MzE4NWQwMDQ5IGxlZ2FjeS10cnVuaworOTYxMyBlZmEyMjQzM2U4NTVkYTRmNDU1YjFlNWMwYzU1MzY4NzI0NWY2N2Q1IGxlZ2FjeS10cnVuaworOTYxNCA5M2ZmZTY0MWE1MTI3NmZmNGRhMTdjMmY1NGFjOWQxZDhkMDkyYzhlIGxlZ2FjeS10cnVuaworOTYxNSAxNmEzY2RkMmYxZDEzYjgyMDA5OGYzMGYzZjUxNGQxNDQxNzJjNjE4IGxlZ2FjeS10cnVuaworOTYxNiBiZjkxYzBlMTY1YWFkY2Y1ZWZiMTA2MDFiMDNlZmI3YTZkNTI1ZDNmIGxlZ2FjeS10cnVuaworOTYxNyBkYzg2ODdiNTNkZDBmMTc2OGEwMWI5NjhlZDkyNTM4NDNhNzQ0YWQ3IGxlZ2FjeS10cnVuaworOTYxOCBlN2JmZWE0MWY2MTdlODhlODc1NmZjMTVhNDg3MGZlZTNhNjAyYzUzIGxlZ2FjeS10cnVuaworOTYxOSBiODFmYjY3ZDkwOGQ3YTk3M2NlMTAyMmQ2ZmYwMzRlODAwOTQ3YjFjIGxlZ2FjeS10cnVuaworOTYyMCBhZmYxZTdiMWY1MjNkNzMwNWJjM2UxMWQzMmNhNzAyNTQxODg1MDBkIGxlZ2FjeS10cnVuaworOTYyMSAzZjBiZTdkZTdjYTVjYTU0YWNmY2EzZTE5MzRjM2QzMTg5N2ExODQzIGxlZ2FjeS10cnVuaworOTYyMiA0ZWY2YTgzYjJlNjI1ZTE2MzU5Y2VmYTE1ODk3ZjhlYWExMGFjZmE3IGxlZ2FjeS10cnVuaworOTYyMyA2MDc0ODQ3ZmFkMWRlNDk3MDI4ZWE5MmQ0ZmQwZWNmM2E4YjJjNjQyIGxlZ2FjeS10cnVuaworOTYyNCA0OWU0ZTNmMzBlNTg4MDJiYTZkYWIwZWQyNTNlOGZjYzA3YWFjODNlIGxlZ2FjeS10cnVuaworOTYyNSA1MTI4YzYwNzJhYTUxYmE3MTZiYzdmYjNiZGQwMDJhNTg5Y2RkODYwIGxlZ2FjeS10cnVuaworOTYyNiBkNDhiOTlkODU2MTc0MmQ1ZDc3Yzg1ZGY1NTgxMjdlOGQ2YmVkOWI4IGxlZ2FjeS10cnVuaworOTYyNyA3ZWRjMzBkZjczZjZhMmNiMjBlNWFjYjJlNmUzYTBjNmM4NThlN2ZmIGxlZ2FjeS10cnVuaworOTYyOCBiODY0MDI5YTViYzVjNWQwM2EwMTM1OTNmOGMyNTAzMGIxNTY3MzJkIGxlZ2FjeS10cnVuaworOTYyOSBkMzM5OTU0ZWE1N2Q4OTg3OTMxYzQ2NzhjYjljMTU0NTU0YmU4OTBiIGxlZ2FjeS10cnVuaworOTYzMCBkMzlhODA1ODUyYzIwYWU5YzdlZjhkZjdiYmI4ZGVmZWJjOTI3MTc3IGxlZ2FjeS10cnVuaworOTYzMSBhNzY5MGVmNWUxNTkzN2UxMDI4MGU5NTM0YzRlZjFhMjljMzE0YzI0IGxlZ2FjeS10cnVuaworOTYzMiA3NDkxNmM5NmRkYjk2NTE0ZjQ1MmJmNDRmZmE5YTAzODIyMmU5ZmVhIGxlZ2FjeS10cnVuaworOTYzMyAzMGFiMzljMmIxODYyZTRmMGRlYzNiOGQ0ZWU2ZWFhYWRkYjcwNzcyIGxlZ2FjeS10cnVuaworOTYzNCBjZTZhZDE3MGMwY2U3MmU5MDZmZTk3YjJmY2ZlZGM2OWE5MWM5MzExIGxlZ2FjeS10cnVuaworOTYzNSBhNmZhOWYzY2FkMTM3Y2FhNWY3YzVlMmM3OWE5YjY0YjdhZDFmYWVkIGxlZ2FjeS10cnVuaworOTYzNiBmYjcxYjkyZDE0M2FhMWUxNmI1YjAyNGNhMGExYzE4Y2Q5MjFjOTBkIGxlZ2FjeS10cnVuaworOTYzNyA0OWEyMGQwMGUzNGNlNWY1YzZkZjc1OWMwZmI2MTY1MWE2Mjk5NDRlIGxlZ2FjeS10cnVuaworOTYzOCBhNjRhNDIzZDZiNTQwYWE2NDQ3MTE3NmZjNmNkYzYxZjA3MTk0YTFiIGxlZ2FjeS10cnVuaworOTYzOSA1YWI3MDgxODFmYTYyMjMyZjA2NTQ2ZmFkZmYyZTAyOGExMWYyZmQyIGxlZ2FjeS10cnVuaworOTY0MCA4ZmI1ZmQwNzViMmFiMTMyMDM4NGJjZmFiMDNmNTBkZTc3MjY4OGU5IGxlZ2FjeS10cnVuaworOTY0MSBlNTY0NmVlY2VhZTg4NzlmYzBhM2RjNTNkZGM3NzA5NTM1ODAzYmI0IGxlZ2FjeS10cnVuaworOTY0MiBjM2I1YjFjMjVjNTFjN2YxNmNjN2E4YmEwM2VjNmJmNzVmNzcyZWQzIGxlZ2FjeS10cnVuaworOTY0MyAwZDVhOWEwZTdkNjRhMTJlMDJiZTcwNzM1NzI1ODJkM2RkMmI2NjNiIGxlZ2FjeS10cnVuaworOTY0NCA2NmNiMDAzMTdhY2ViYjZmNTgwMzE5YTBmM2ZmNTgwYjNkZjYxZDdlIGxlZ2FjeS10cnVuaworOTY0NSBlNThjN2I1MGU5YjljNmI5NmQ4OTMzYzVmM2QyNzZiNTY5MjU4ZWQwIGxlZ2FjeS10cnVuaworOTY0NiAyMTI1OTdhZjgyOWJiY2FiYzE3OTc3ZGM1ODNlOGQyYjg0NTFlNTMyIGxlZ2FjeS10cnVuaworOTY0NyAzNzNkNzgxMTgxMTNiOGNmNGY4OTA4NjYyZTMwM2RiNTc3ZjJkYzA2IGxlZ2FjeS10cnVuaworOTY0OCBjNWU3NjdlMjJiZDFjM2U2NWQzNmI2MjNmYTg5ZTQ5MWNkNTg4YWVlIGxlZ2FjeS10cnVuaworOTY0OSBjZTQ3NjZmYjNmNTYzZDE3NjM4YzkxYTFjNDI0YjI1NTZiYjY2NTkyIGxlZ2FjeS10cnVuaworOTY1MCBiNWIwYzMyNGNlNTk4NzhmY2FlZWFhMTUzZWZhMWQwOGI3YzM3YjAwIGxlZ2FjeS10cnVuaworOTY1MSAwYTRlMjlhMjg2NTVlNDA0MzBlY2YyNGE4MzlhNzE4ZGQyZjdhNzJmIGxlZ2FjeS10cnVuaworOTY1MiBkYzliYjQ3YjM1NTI4ZDdkZjI2N2NjYTNkNjAxZjYxMzA0M2NmNDUxIGxlZ2FjeS10cnVuaworOTY1MyBhMjhiZjYyYWMzMzViNWYzMDZhM2VlNTdlYzkyZGEyMTdmOGE2MWIyIGxlZ2FjeS10cnVuaworOTY1NCAwYmQxODVjMmU1ODEwM2UxZTgwZDA5M2ZjMzg4ZTIyZDczNGFkN2EzIGxlZ2FjeS10cnVuaworOTY1NSA3YzAwNGZjMTA5ODczN2FjZjAxNTk0MmU4N2JjNjY2M2FmZmQ4MTRlIGxlZ2FjeS10cnVuaworOTY1NiA0MDk4N2I4NmExYzc0ZmI4NWM5NmZkNzk3MmUzNDZhMDdhY2U1NTkwIGxlZ2FjeS10cnVuaworOTY1NyA3ZDYxZmE5YjU3YThjNTQyYTk1NmFmYWIyYTFiMzBjM2IzOWNkMmMyIGxlZ2FjeS10cnVuaworOTY1OCAzYTk2MGIyZTI2Njc3YzFiYzViZTRiNGE1MTg5YjBkZDE2ZWQ5ZWQyIGxlZ2FjeS10cnVuaworOTY1OSA0ZjEwZDIzM2YxZGM2ZDNkMGI0MTZiZjlhYmM2N2ExNDY3MzE2ZDc2IGxlZ2FjeS10cnVuaworOTY2MCA1OTM2MmVhN2UwZjhiNDEwNjRkMTk1MDA5ZmJlYjlmZDI2NzA3NTY5IGxlZ2FjeS10cnVuaworOTY2MSBkZTVjYjc4OWU5ZjBmMmY4N2I5OTFhN2JkOGFlOTc1N2M5ODY5Y2I1IGxlZ2FjeS10cnVuaworOTY2MiA2Zjc4MTk1YmY4ZjY4N2Y3MGVjNTg2OGE5ZGY2MjExZGE5ZDNhNjIxIGxlZ2FjeS10cnVuaworOTY2MyBhNTk2YmJlNzI1NzlkOGI1ZTM0Y2Y0MTMxNzlmMzZmOWZmNWQ3ODQ5IGxlZ2FjeS10cnVuaworOTY2NCA2ZTVlYjg0NTI0NmMwOWJkOWI0NTQzZGYwZDYxNTc2NGVhY2RhNzVjIGxlZ2FjeS10cnVuaworOTY2NSAyYTliYTU5YWJjMzgyYjc5ZjE4MjhkODQzNTMyNjVhMGYwNTU0YWNhIGxlZ2FjeS10cnVuaworOTY2NiBlZTRhMWEzMGQ3Y2U5MjdhNzk2YTQ2MzFmYWI1YmIzNzQ3ZTRlM2NhIGxlZ2FjeS10cnVuaworOTY2NyBmM2NjOGQ1M2FjODAzZGYyYWEzMGQxYjFkMzc2N2IwODU3ZmRjOGM0IGxlZ2FjeS10cnVuaworOTY2OCAxZjlkOTQyZjE1NmNjOTMyZmRlZjkxMzM0NTViMmY4MDRkMGQxZmMwIGxlZ2FjeS10cnVuaworOTY2OSA3MDU0YmU1YWQ3ZjY3NDFhZjliYjA2NTQ3ZjM5OWZkYzY5ZjRkYTQxIGxlZ2FjeS10cnVuaworOTY3MCBhZjk4YjQyMTQyNGNjMzliOGM2YThiNzRhYzZmNmU5NGRlNDZkOWQxIGxlZ2FjeS10cnVuaworOTY3MSBlMjc5NTcyZTJkYTI1NTE2NjcxODJlZGEyNmE3ZmU1MDczZjg1NmIyIGxlZ2FjeS10cnVuaworOTY3MiBiMDA5YTRjMjQxODhkNTI4M2ZiZWIwMmMzMzUzNmFkNWY4YzNhZGM1IGxlZ2FjeS10cnVuaworOTY3MyBjMTIzYTVhNTljZGUyMWQwYzEyOGFhM2RhMmVkZTlhNDA2NmZhMjdmIGxlZ2FjeS10cnVuaworOTY3NCAzMDlmZmZlNzY4YTYyNDIxODU1MjkwMDUwN2Q2ZDdlNDU2Y2Y3MTYzIGxlZ2FjeS10cnVuaworOTY3NSAyNmQwNzczNWJhNGE1YjI2N2FiZmM4NzBlNjNkZjY4OTlmYzUxYWFhIGxlZ2FjeS10cnVuaworOTY3NiA1Y2QyZjY5OWJmNjkxNjZhZDdhNWQ1OWYxZWE2NWZiNTE5YmM3ZDY4IGxlZ2FjeS10cnVuaworOTY3NyBkYjAwN2EyY2E3YjYzNjc3MzUyMWI1YmVlM2RkNzI5MmU1NGE5ZWQ0IGxlZ2FjeS10cnVuaworOTY3OCA5OGE5ZGE1MjBmMWQ4YzE5YWI1YmQ0ZTIwMzMyN2Y0ZThjY2M1MjEzIGxlZ2FjeS10cnVuaworOTY3OSA3MjBlOTE4Mzk2MWVlOGFkZDc0MDEzMjNiOWM1YzAxNTNkZGY1NDQ5IGxlZ2FjeS10cnVuaworOTY4MCBmZWQzZDIwMGZiNTY1ZDJhY2U4MDFiYzYxMTM2YThiMzdmY2JjODFlIGxlZ2FjeS10cnVuaworOTY4MSA4YzEyOWE1Njc4Njc3OTUyYTMwMjhjOWEwY2QwYjhhNGI5ZDliZTdlIGxlZ2FjeS10cnVuaworOTY4MiA0OGFiNjY4NzRiMTE5MWNkZDQ0M2EwZTMxMzBmMDM5OWFkMDllOTIyIGxlZ2FjeS10cnVuaworOTY4MyAwOWZmYWIyNzNlZWI1NjVhNzYxOTU5NGQ5MDU5Njg1MmZmNGQ4ZTFlIGxlZ2FjeS10cnVuaworOTY4NCAzZjI1NWFlZGY2MjFlOTVlMjY3MjlmM2ZiZDA5MDI0ZGI3NGEyNGExIGxlZ2FjeS10cnVuaworOTY4NSAwNmRiMTBjNzZkYzk1MmUzZmEwMTk0ZDgzYjQwYzQ3Mzk3NmJjZGI5IGxlZ2FjeS10cnVuaworOTY4NiBjZTI3MWU1ZjliYzVhYzg5N2MwYjlhNGQ4MmMzZGE3MGU1ODYxNmI1IGxlZ2FjeS10cnVuaworOTY4NyBjOWZlMzVhODI5OGFkODU5NmE2MzExYTcwZGEyOWRkZWI2N2JiMzNhIGxlZ2FjeS10cnVuaworOTY4OCBiY2NkZWNhODE2NjljZTNiZDMwMTRhMzAzMTBjZjcxZjUyZmE1MjBlIGxlZ2FjeS10cnVuaworOTY4OSBjNzY0MjE3YWU2ZWI5MmQzMWQ5MDA1Y2Y3ZWIyOWM4YWM1YzMxNzE0IGxlZ2FjeS10cnVuaworOTY5MCBiOWJiZmExNjk5MjBlNDU1YjEyNzEzZDgzMmE4ODdkOWY5MjFiMzAwIGxlZ2FjeS10cnVuaworOTY5MSBmZjUyNGI2OWI2NjRhM2ZjNjUxZjlmZTkzN2U4ODc0OTkwYjVjYWI0IGxlZ2FjeS10cnVuaworOTY5MiA2MjIyZDMzNzFmYjgwZWI4NDBlZTUyZDgxMjM2YzFmM2I4OTY5NzlhIGxlZ2FjeS10cnVuaworOTY5MyA1YTdmMjY4YTA3ODFhOTRhZGM1YzlkNzUzNWQ4YjE5ZWU4YzQ2Y2U5IGxlZ2FjeS10cnVuaworOTY5NCAxNmVjZjE1NTRhODM1NzkzODBlNzM3NmVlZWJmMTFmZDMxOTVmMTJkIGxlZ2FjeS10cnVuaworOTY5NSBiYzAwODY0MDRhOWE1NTI5MjFiYzMyYWExMTgyYmVlMzViZjBjYjg5IGxlZ2FjeS10cnVuaworOTY5NiA5MGEzNWYxYjkwMDg1ZmExOWYzNDA4NDRlMTA1MjZhNmZhYzIzOTA0IGxlZ2FjeS10cnVuaworOTY5NyA2NDBiOTdkMTA1ZGY3MTE1MmY5NzMyYWQ1MzNkZmJkMzUzZWQzMzVmIGxlZ2FjeS10cnVuaworOTY5OCBkMGNhODE1YzgwNzI1NDgxM2UyM2M4OGM5ZGNkMDJmYzFhYjFjOTg3IGxlZ2FjeS10cnVuaworOTY5OSA5NWMxMDE5NjQ0MTQ5ODU3MzBhODkxZmQzMDY5OTZiY2IwYjRhNjE5IGxlZ2FjeS10cnVuaworOTcwMCAxMGZkZjE2ZjRkZTljMWY5NGY2Yjg1MjM4YmM2NDBiMGMzNTQxNTk1IGxlZ2FjeS10cnVuaworOTcwMSA5ZGRlMDdhNTkzZDgzZmMyMzJjNzBkYjAxMjkxMzMzMDJjMjdhNmI1IGxlZ2FjeS10cnVuaworOTcwMiBkMzNkNDU2MjJlNjcxMWQ4YjFjOTc5Y2Q1MDBmYWEzNzI3MDUwOGRkIGxlZ2FjeS10cnVuaworOTcwMyAxMWYzNGJlMGJlMTFmZjQyNzdkNTBhMmE0NzlmNjlkNDc5YTA0YTNjIGxlZ2FjeS10cnVuaworOTcwNCA0NzgwMmUyZjViZWRiNGYyMmJiYzU0ZDMxNmY4MTE4Y2YwMzgxYmQwIGxlZ2FjeS10cnVuaworOTcwNSAwNDVmZmE0YzU2Zjc4NTZhMjM0YTk1OTRkZGRkNzZlNTAyNmIxY2ZjIGxlZ2FjeS10cnVuaworOTcwNiBiYzY0ODJmN2U3OGZhMzQ2NmI4Yjk0MWVjOTFiOTdhZDlkZDBhZTQwIGxlZ2FjeS10cnVuaworOTcwNyBiYzI4YTBlYTY2NDBmNzdiNGJkYjQwODRmMjYwNjBmNDllYmE0ODhhIGxlZ2FjeS10cnVuaworOTcwOCAzNzU3MjNhNzU1OWM3MTVlMDk0YmViYzI1M2YxNWJmMDFlODg1MTJmIGxlZ2FjeS10cnVuaworOTcwOSAxNzdhZDczYmYxYTkyNWYwMDkzMzVkN2Q3ZmRlMWE4ZDkyMjUwYmI0IGxlZ2FjeS10cnVuaworOTcxMCA3NGM1NzI4OGEwMmI5OTY3YmE2NDhmNGNiNWZiZTMzYjMzZDRjMjk5IGxlZ2FjeS10cnVuaworOTcxMSAwOGM1YmJmYWU1MmMwZGZlMDYzZWZlODAyMzFlNzM2YjAwNjY2NjkyIGxlZ2FjeS10cnVuaworOTcxMiAyM2M1MDlhYTNmMGQ5NDczY2U1MmExNWE3NjAwMjQ3MDZjNzc2Nzc2IGxlZ2FjeS10cnVuaworOTcxMyBkZWJlOGUwODEyNjA4NWY0MDBiM2RhNjNiMGQyM2Q3NjQyNGRjZTZkIGxlZ2FjeS10cnVuaworOTcxNCBmZDdhNTk5M2QwNmRhYTI4NDhmYzEwYzE3YjJkYTcxNTgxYjQ4YjE3IGxlZ2FjeS10cnVuaworOTcxNSBjZGI0YTgxMzc5YWQ3ZTU5NzNmMTViZWU1OWIxNmY1NmU0MjY0MGJhIGxlZ2FjeS10cnVuaworOTcxNiBhYTU0ZDdjM2RhZjkwMTY3YTk1ZmE2YmRiNDNmZjczZDg3M2JhNDdkIGxlZ2FjeS10cnVuaworOTcxNyAzMDZmNzM3YmFiNTc2YTgzODkzMmI1OTg0YTQ2NmRjZjc2NWQ1NmZjIGxlZ2FjeS10cnVuaworOTcxOCAyYjgyMjMxYTk3Y2M2YWJmNzY1ZDgzYTRhMjA5NmRhYjExM2Y0MTE3IGxlZ2FjeS10cnVuaworOTcxOSBiNTk4NTU0MmJhZTFlNjlmNjUzYTQ3NzcwMWZiNjdkYTBmMWJlZTg2IGxlZ2FjeS10cnVuaworOTcyMCBlNzUwMDYwNjkzNjdmYzZmMTE1MzBkNmVjYjVkZGU5ZGE1ZmVkZDgwIGxlZ2FjeS10cnVuaworOTcyMSA1ZjViOWU4NzE4ODZjZDhiOWVjNDE1MTllNmUyNTMwNGNlMTU5NTQ5IGxlZ2FjeS10cnVuaworOTcyMiAwYjUzYzAzOTNjODgyNjNkN2U0MWI4ZjE5YTNiYjFkYjJmZDRiOTc5IGxlZ2FjeS10cnVuaworOTcyMyBhNzExNjg2NDlkYzUxZWY4M2IzNTVmMjZkOTkyN2ViODdkNGMzZGY4IGxlZ2FjeS10cnVuaworOTcyNCAxOTNkNzA0Y2JjYzg1MWFlNzM4YzFmYjhhMTVhNDRjYzJjMGNlY2U1IGxlZ2FjeS10cnVuaworOTcyNSAxMjcyYjU4ZTg0YWViNmMyZGY3YTM5YzBmMjdiZDAwYmFmYWY5NDY0IGxlZ2FjeS10cnVuaworOTcyNiAyODc2MjNjY2UyODk0NTNlMjZjYzg5YmRjOWVhOWFjYjQzNjk3NTAzIGxlZ2FjeS10cnVuaworOTcyNyBmMGJiM2JjZjM5N2IyNTQ5NmMwZDdiZTRjOWYxODBhNGRjNGEzMWM4IGxlZ2FjeS10cnVuaworOTcyOCBjNjk4NjkwYTI3YjI1OTEzNDAwNTFjMGNjM2MwYjg4NzYyNjU5NDBmIGxlZ2FjeS10cnVuaworOTcyOSA4YTA4MDI1ZWY5M2Q4Zjk1NDM2NjlmZjdlMzYwY2NhMTk4OTI4MWRjIGxlZ2FjeS10cnVuaworOTczMCBkM2ZkMjE4MmNmYjhlZDAyZDQyNDAxNmI0ZTZiOGM5OWQxYjM2MTcwIGxlZ2FjeS10cnVuaworOTczMSA0ZTc0MDJjOGU0NjBiZmJmOGEzYjM4YjExZjc0N2UyZWQyOWYxMGI4IGxlZ2FjeS10cnVuaworOTczMiA4MTI2MTVlNTQ1NTBlNjlhZGFkNzBjMWYzODY5YjJkYmQ5ODg4YjNjIGxlZ2FjeS10cnVuaworOTczMyBjYTc4YjA5NWVjZjAxNDYzZTNlNjk1NzVjYWI5MWQ4YWMxMmY4YWNmIGxlZ2FjeS10cnVuaworOTczNCA4Yzc0OWRmYzQ5YmZhMzhlZDZkZjAyYjY0Y2I4N2U0ZGFmMmFiNmNlIGxlZ2FjeS10cnVuaworOTczNSA4YjBkNmI2NGEwZWEzOWNlMzNlOTZlZDk1Y2IyNmJjMGE1YWE5Zjc0IGxlZ2FjeS10cnVuaworOTczNiA2MTRkOGE5MDg0ZWFkNDc1ODAwZDFmM2Q5ZDliZjQ0NzczZTcwYmJjIGxlZ2FjeS10cnVuaworOTczNyA3Y2RhYTQ0OTU1MzA3OTNiYWVjZTcwZTNlN2IzNmY3OTM3YjM0ZGQ0IGxlZ2FjeS10cnVuaworOTczOCBhN2U5NTI0YTJhNTJjNjRhYTI4NjNlMDY1MWUzZThkYjc2NWViZjYwIGxlZ2FjeS10cnVuaworOTczOSBiYmYzNTA3ZWYzZmVmMjg0MGExZDUyNGUwYTk2YjQyM2Y5MDIxNDEzIGxlZ2FjeS10cnVuaworOTc0MCBjMDk5MDcxMDQwOTJhNTkyNTBmN2E3ZjVjNzJhYWJiOTBjNGQyMGY1IGxlZ2FjeS10cnVuaworOTc0MSA0MWE5MjhjYmNjNWVlYjhlMGE2Yjg4NzgzNzE3MzAyNmQwM2QwNmJmIGxlZ2FjeS10cnVuaworOTc0MiBiOGQ0ODQxMjVjOTJkZDYyNTBlNDhmYTczOThlOWMzZmIwMTE0OGIxIGxlZ2FjeS10cnVuaworOTc0MyBjMDAyZmZkMWZiYmZlN2JhNGNhZWZjMDU1ZDRmYTAyNzRhYWMwNGNiIGxlZ2FjeS10cnVuaworOTc0NCA4M2MwZTlkZDQyMjFmODZhZTczYjQ2ZDIyODdhYzNhYjJiZWI3NGRhIGxlZ2FjeS10cnVuaworOTc0NSBjYTE0ZmRiOTU1ZWY4MjdiYjQ3YzY4ZjUwZmU5NDE5YWY1ZDk3MWE1IGxlZ2FjeS10cnVuaworOTc0NiBhMmY0Yzk0NGNiODcyMWJmYzY2ZWIyZjlkNjdjNWJiMzg3OTllZWNjIGxlZ2FjeS10cnVuaworOTc0NyA2ODJkM2U1YjI2N2Y0NzBiM2MxMDE0YjMwMjUzNTJjNGQ4YjNkZWQxIGxlZ2FjeS10cnVuaworOTc0OCBmNTU5NjljMWMzZDU0MTk2OTgyZDljYTJmZmViYzQ3MWYzNTdlOWQyIGxlZ2FjeS10cnVuaworOTc0OSAwMDYxZDM5MTZhZTRiMTVlOWUwNjE5YWY3MzQ4MTU1ZWUyZWRmODc2IGxlZ2FjeS10cnVuaworOTc1MCBjODE3Zjg2Y2U3ZGI2NzE5M2E3NDc0YzQyYTQ4YzVkYmQ0Yjc0ZGFkIGxlZ2FjeS10cnVuaworOTc1MSAxNWJhNjhjMzNlZDFjZWRhMzAzMjQyMDNmYWU2OWY1ZTFjN2I1OTk5IGxlZ2FjeS10cnVuaworOTc1MiBmNWVhMWIzMGNiM2Y3NDllNWI5OGQzMDAwZDMzZDRiOTRhY2Y5YzE1IGxlZ2FjeS10cnVuaworOTc1MyAwMGNkOWZlNGY2ZjJiMDg5ZGI1YjQ1ZGExNGZkOTEzZjNmMWJiOGMyIGxlZ2FjeS10cnVuaworOTc1NCAzOWRlNDk0MzRkZjQyNjExYzQ3YjY5YWY2ODkyNDMxMjY2ZjQ4M2RkIGxlZ2FjeS10cnVuaworOTc1NSBiZjRlNzkwYmQ2MWE0YjliMTM5NTU4MTg1MTQ3MDkzYzUxMWFhMTc3IGxlZ2FjeS10cnVuaworOTc1NiA1OWQyNzYxYmExY2ZjYWEwYzJmMDQ4YTQwMWFlMzExYTcxM2I4ZDc4IGxlZ2FjeS10cnVuaworOTc1NyA1MmZiYjczMTIxMDM0NWIwMTM1NGU2NDBiNDQ3MDVjYTJhNzFlNzgzIGxlZ2FjeS10cnVuaworOTc1OCBmMjE0ZWU4ODM4ZGU2ODI2ZjM2MGM0MWQ3MGI4OTAzZjZhZjAxYzYxIGxlZ2FjeS10cnVuaworOTc1OSAxZmQ3ODczODc5YWY4MmM5YjkzOGI1NWRhZjNiYzFkN2VjMGIxMGRlIGxlZ2FjeS10cnVuaworOTc2MCA2ZDBjNDg1YmE1ZTQxOTNjMjZiMzQ0MzM1YjJmNjI5OWFlMWMzMjg0IGxlZ2FjeS10cnVuaworOTc2MSAzYTNlZTA3NWRmYjY5ODFkYzY5NDVmMTBlOTkyNTVkNjM2ZTUyNmMwIGxlZ2FjeS10cnVuaworOTc2MiAyZjBjZTRmYjgxMGJhMzAxYmRlMmQxZjVlNmE4YmYyYzNhZmJjNWM1IGxlZ2FjeS10cnVuaworOTc2MyBlZjI2OWFiNzcwYmNjNWJlNmViMmE2YzQ3NzYxNGY1ODA4NWNiZjk0IGxlZ2FjeS10cnVuaworOTc2NCAxZDUxMTc5Y2Y3YzdmZTQ1NDk2MjRlODk2YmJiODE5NmMwZGQ4Yzg3IGxlZ2FjeS10cnVuaworOTc2NSBhZjJiYzVmNDU5MThhNzAxMjA4OGJlNTU3ZGExYzkyZDBiNDA5ZGI3IGxlZ2FjeS10cnVuaworOTc2NiA0MTQ4ZTRiYzhiMjg1ZjliMTBkOWM1NDQ1OWNiMWVjYmU2MDA4ZTNjIGxlZ2FjeS10cnVuaworOTc2NyA2ZmVmMDMwYTk1ZDQ5YzY1OTQyZTE4Y2NlNzkwNWU4Mjk2ZGQ3NTE5IGxlZ2FjeS10cnVuaworOTc2OCA3MmQ1MzFkNTQ1NzI5YjAwMzY4OTAyNTlmZjYwNzE1YTFiZjBmZjJhIGxlZ2FjeS10cnVuaworOTc2OSBiN2Y4NGQxNzllNTFhMDNkNWY1YjFkNjIyOWY0ZjE3OGUyYTJmNWI1IGxlZ2FjeS10cnVuaworOTc3MCA2YWQyMzRhZDhkZTVjNmQ1OWY2ZjcwNTM0ZDhjYjBjYTQ3NjRhMjg5IGxlZ2FjeS10cnVuaworOTc3MSAwZGJlYzk4YWNmYzk2NzQ2NDlhN2E1Y2YxNmFkMWZlZThlYTIzNTk3IGxlZ2FjeS10cnVuaworOTc3MiA4ZTY0YzVkNTU0OGEyYTQwYjQ1NWNhYTE3NTQ5YjI2YTFjMmNkOWRlIGxlZ2FjeS10cnVuaworOTc3MyAyODU0NDkyNjhjMzdmMDhmYjBiOGMxOWVhMDRkZjQ2MDJlZmI4N2RiIGxlZ2FjeS10cnVuaworOTc3NCBiMDI0OTkwZDYxZWM4ZTIzZDZkYTg2NWM1OTM2NWYzNjE1N2RlZjFhIGxlZ2FjeS10cnVuaworOTc3NSBmYjBjNWIzMDc0NzZkZWFiMjFmODU5Mjg0NjQzNjliMGRmYzhkMmFlIGxlZ2FjeS10cnVuaworOTc3NiAzNzAzNDk1MzE1ZTlhNjQzMzI5MTk0ZTFiYjUzNDFmYTAyMTljMjFhIGxlZ2FjeS10cnVuaworOTc3NyAwOGY5YjkwMTY2OWJhMWNhMmNmZmQ0NjExMGVhZWNmODU0MmFmYjQzIGxlZ2FjeS10cnVuaworOTc3OCA0NDFhZTRmNGNmY2Y5MTVmM2NhNzcwOGYyOTNkYWYyNGQ4MTBlYTFmIGxlZ2FjeS10cnVuaworOTc3OSA0Zjg0MjAyYzM3N2FjZDFlODU4YTRiMmI0ODMyZjliYTczM2NmODcyIGxlZ2FjeS10cnVuaworOTc4MCA2NDBmMmVmNGRhMjEyNGU1M2JjY2JkY2I5NzJhZmFhNjc4NjEwNTg2IGxlZ2FjeS10cnVuaworOTc4MSA2NThiNzQyZTQzNTAzNWNjNjg5ZTFmYjg2MDgwNjg3MzkyZTg5YzgyIGxlZ2FjeS10cnVuaworOTc4MiAyNmE4ZTllOGNiODQxMWQ2OGExMzdhOGE0MzlkNmM1NjgzMGE3NWUwIGxlZ2FjeS10cnVuaworOTc4MyAwNjdlNDgxM2M2ZDY3YTA4MGNkYTE3YWY3OTFhNTUyNjhlYzFmZTI3IGxlZ2FjeS10cnVuaworOTc4NCBmODllOWNkZGMwOTYxMzA1NTdlNmQ5ZTdmNDJjMGY1MWY3OWQ3MzFhIGxlZ2FjeS10cnVuaworOTc4NSBjOThmZWY5MjJkNTE0NjhjZjIwNDk1MDgwZGEwY2Q4NTNhYTJmMmJiIGxlZ2FjeS10cnVuaworOTc4NiA4MDk2ZmVjNzIyYmE3OTZhZjM3YTI5N2NlZjE0NjM5NmZmMzc4NGMwIGxlZ2FjeS10cnVuaworOTc4NyBkNzI2NjM3MmRkMzcxYzlkMWE3MjM4ZDYxM2MyYjk0ZjZmM2ViOGRhIGxlZ2FjeS10cnVuaworOTc4OCA2MDk1YTQ3MmY1NzQ1YzNhY2E3NDE5NTk1YjcxOTY1MzViNjMzMTk0IGxlZ2FjeS10cnVuaworOTc4OSBkZjc2NGU0MmIyNThmNTc3ZWQ1M2FlYjFjZmE2MzNiMTVhYmZlZTI0IGxlZ2FjeS10cnVuaworOTc5MCA0OGRmMjA4MGQ3ZDQ4MjljMTI5OGE4YzFhZGEzMTYwY2UyMDA5ZWRjIGxlZ2FjeS10cnVuaworOTc5MSA1YWU4N2E3ZjlhMzIzZmQ2NTJiMjliZGI5MTQxMTFhM2Q2ODEyYTRiIGxlZ2FjeS10cnVuaworOTc5MiBkMjNiYjk2OWU2M2EwMzczYzZmZDJjYmQ0M2VhMGZjM2NhOTc2NGVkIGxlZ2FjeS10cnVuaworOTc5MyAzYTU1ZmJiOTlmMjA0NzdkNDBiNGU3YmJkMzUwNjFlYjkxZDAyNDlhIGxlZ2FjeS10cnVuaworOTc5NCBmNmM2ZDRkOTdkYzY1MWE1MzEwZjc0MzMxNTU3YjIwZDFlOGUwZjE1IGxlZ2FjeS10cnVuaworOTc5NSA5Mjc4NDgyNDgwMGMzZGQzNzNkMTRlNTk2NWU0NTI3YTdjNWQ1MWY4IGxlZ2FjeS10cnVuaworOTc5NiA4MzAwMDliNTczZWEwOTRiNzRmYjQ0ZDAzMmQyZjE3NjIyZDAyNjc2IGxlZ2FjeS10cnVuaworOTc5NyAwOTg5MmJmNmE1MGRmZjE1NzcyNDQwY2VkOTgzOTgzNTg0Yzg1ODc5IGxlZ2FjeS10cnVuaworOTc5OCAxOTI4ZjA1YmE0MDBjYTJlYjYzM2U2M2MzNGY4NmMzZTU3NzFiNzgzIGxlZ2FjeS10cnVuaworOTc5OSA5OGVmZDVkOTFmY2E0ZmZkZDZhNWU4MDczZjcwODZiMzFlMmVlOWViIGxlZ2FjeS10cnVuaworOTgwMCA3MjRmODA3MjYwNTUwZGU4MmFlYTYwNGU1YWNjZDU3ZjJkODJiYWRhIGxlZ2FjeS10cnVuaworOTgwMSA0N2VjZjAyYWFmOTdiMTRlMWMxYzg2MWIzNzQ2MmZlYWE3N2ZmMWI2IGxlZ2FjeS10cnVuaworOTgwMiA1NTEyNWIxMTQ0ZmEzYTZhNWUxNjkxYTI4M2Q1YjgxYWQ5MzRlYmM5IGxlZ2FjeS10cnVuaworOTgwMyA2ZTAwZmI3MjNmNjlkYmRkNjNlMmU4Njc0NTNkMTU5MmExZWZmNDY3IGxlZ2FjeS10cnVuaworOTgwNCBmZWM4ZTA4NGIwNzRmNTcwMjdhZTNlMzYzZjc1Mzg0Y2U3NGMxNTdhIGxlZ2FjeS10cnVuaworOTgwNSA0NWI2NmU5YWI1ZWZhMDA4MWJlMzk1ZGIxOTEyZTU1YTRiY2M4ZDRkIGxlZ2FjeS10cnVuaworOTgwNiBjMmEwODY5ODUyZWI4NDViOThhOWZkNjc1MDFhMjgyNDY1ZjQyNWIzIGxlZ2FjeS10cnVuaworOTgwNyBlNGM3NGY3ZjNlNDY1OTRhNGRiOGUxODQ4MzY0ODJkYzU2OGNkNmFiIGxlZ2FjeS10cnVuaworOTgwOCA5YWUyMTVjYTIwZGI0Yjg3NzQ3ODE0NGVkODg4ZjI3MzMxZTZmOGUwIGxlZ2FjeS10cnVuaworOTgwOSA4M2EzMGEzNTgzZDNmMzZhMzk0YjdkYmJiNmYyYmE0YWNmMjQ2ZWM2IGxlZ2FjeS10cnVuaworOTgxMCAyNTI1Mzk4NzE4NzNjMjFhYTA1OTU3MWYyMTBiYWFjOTA5NjExMGE0IGxlZ2FjeS10cnVuaworOTgxMSA2ZTk2ODhjZTdjNTc2MTAyNzlmYzlkMGVkODJmYjdmM2M5NmQ0YWU0IGxlZ2FjeS10cnVuaworOTgxMiAzOTY1YjY5ZDUxMTZlNTk5MGZjNDYzZmIwNmNjMGZlMzgyZjZjZWI5IGxlZ2FjeS10cnVuaworOTgxMyBjMzdhMjhhM2JiODViMjY3YTg0NTQzYjBkYTA0YmM3ZTZhODU2YTJkIGxlZ2FjeS10cnVuaworOTgxNCBlMTQ4Y2UxOGMzY2U0YjNjOWRjZTQxNWM3MTM0NTc3NWVhOTFiOWU5IGxlZ2FjeS10cnVuaworOTgxNSAxMjkzOWM4YjRlMzBhNTQ0ZGQ5ZWY1Yzc3OTk2NTZhYWZjMzEzYTZlIGxlZ2FjeS10cnVuaworOTgxNiBmOTA0ODYwMDkwNWU4Y2Q0MzQ4YzUzZTFhYmUzYzk5NGJkZDQzYzQ0IGxlZ2FjeS10cnVuaworOTgxNyBlOGI4YmExNjliNmRkMGU2YTUzOTFmNDEzYzVmM2NiNTQ3NzliMGIxIGxlZ2FjeS10cnVuaworOTgxOCA2ZGNjYWU3NWIyNmY2YjJhMGM2MzVjMWY2OWEyODRmNmFjNTE0N2E2IGxlZ2FjeS10cnVuaworOTgxOSAwMDY5ZjNlYmE5YTI1MDJjOWZjMTZjYWU0YTQwYWRmY2Y3NGMyNDA5IGxlZ2FjeS10cnVuaworOTgyMCA5Zjc0ZjkyMjNiNDM1NTc4MDc1NDQyYjAzYzU5OThkMWU0YTZhY2M2IGxlZ2FjeS10cnVuaworOTgyMSA0ZmZjYmNjNWU4ZmUzOTMzMzY5YTIzNmQ3YzBiMjUwOWVjNWI4NTM5IGxlZ2FjeS10cnVuaworOTgyMiBiYmEyYjIwNWY4ZWRkNDlmZjRhZGU2ZDczYjZkMDM0Yzk4NGNiZjc4IGxlZ2FjeS10cnVuaworOTgyMyAwODA5NjlkYmZjN2M1MTg5MDVmMDcwYzBkMmNiZTY5N2I4M2Q5NzFiIGxlZ2FjeS10cnVuaworOTgyNCA1YTkyNTZiOGMzMzgyYTNlYjg4M2JlOWEyODRkZTM1NWUyNjEwODRkIGxlZ2FjeS10cnVuaworOTgyNSBkNzZhNGVmYTFmNTFkZjk0NTA2NDM4N2I5ZmU4NjFhNWVjYWNmMzE5IGxlZ2FjeS10cnVuaworOTgyNiA3YmE5Y2Y0ZTBjNDA0MDRkY2EzMjIzMTgwYWYyOWExMmQ0MTIxOWYwIGxlZ2FjeS10cnVuaworOTgyNyAyYmQ1ZmJkNjA4NzA5OWE4NTRjYzQ5YmE5OTNiZGJiN2FjN2E2ODViIGxlZ2FjeS10cnVuaworOTgyOCA0ZmY1YzE0OThkYzhkYjljNmY4ZmQ4MTBkNmExYmZjOTkwNWFkYjVlIGxlZ2FjeS10cnVuaworOTgyOSAxYmFjYTVkMmJhNTdhNGU1YjBjYjJjNmE3OWE4YThkODI2NmFhMTkwIGxlZ2FjeS10cnVuaworOTgzMCAwZDMxYzdkOTY5N2Q3YzVlYzc5YjdhNjNlMDQwZWVhNjgyNjcwZDIwIGxlZ2FjeS10cnVuaworOTgzMSBhNGQ3YmJmZjk1YTRiNWY1NjQ1ZTFkNThkODIxM2IzYzU5NzViNmYyIGxlZ2FjeS10cnVuaworOTgzMiBlNDM2N2QyMDZhNTVmNzYzMDJiM2ZiMDRhM2EyZDkxZTg1ODE0MzUzIGxlZ2FjeS10cnVuaworOTgzMyBiMjg1ZmJjMjY0NmE0OTg2YTVjNWVhOTNlMWY5ZDE1ZDgwM2NlYTAxIGxlZ2FjeS10cnVuaworOTgzNCBjNjMyNTAyOWY3ZGM4OGM2ZGZlYmUyYmNhNDBjNTkzMTI1MzQzNjMzIGxlZ2FjeS10cnVuaworOTgzNSAzZTI3ZjlmYzc1YTI5MGY1MWZhMjI3NWNjMWZmNDBmZTlhMDhmZmIxIGxlZ2FjeS10cnVuaworOTgzNiAxNDIxYWNlYWUzNDY1MDQ1YTU3ODdkZTc1MTExNzhmN2FiNzhkNWQ0IGxlZ2FjeS10cnVuaworOTgzNyBkNzAwODZiMDhhMGZhZjAxYTY4OWM5OGMxMTYyYjkwMWUxZjBiNzAwIGxlZ2FjeS10cnVuaworOTgzOCAyYTA3MjU4YjFmNGUwODZjZjdiMzE5YjYxMTQ1NWQwNGZkZjBkNzliIGxlZ2FjeS10cnVuaworOTgzOSA2MjE0NDBiYjk4YjljMjYwODhjOThjMTMxMzUzOWQ3ZWI4MzVlMTMzIGxlZ2FjeS10cnVuaworOTg0MCA4NWZmMjA0NmUzN2Y4MWNkODRlMDAxMGFlYTA5MTg1OWEyY2MzNDkyIGxlZ2FjeS10cnVuaworOTg0MSBmNGE0NzIzYjk1NTMyYWI5MDRhZjY2MDM4NGJjNzA0ODE4ZWYyODIyIGxlZ2FjeS10cnVuaworOTg0MiBmMWM4OGQyZDEyNWJmZDQzMDZkZDA2NThjZmZiODk5ZDQ1MDM0OTZiIGxlZ2FjeS10cnVuaworOTg0MyAxODdiODk2NzVkZGFlNDBjNDA1MDZiODY3MzU0OWViNzE5NDlhM2E3IGxlZ2FjeS10cnVuaworOTg0NCA3MTdjM2RhY2EwOGU5NTM5Mzc4ODk5ODJkOTJjMTVhYjVkZjYxZmI3IGxlZ2FjeS10cnVuaworOTg0NSAwYzc5Y2FmZWM0YmM1NTA4YzZlNmUzMDcyMWQ3YjIyOTRiNTY2MDY0IGxlZ2FjeS10cnVuaworOTg0NiAyMTY1N2JiMGJlMzViNGM3MWRjYzgzNDQ5ZjJmMzZkMjNhMmViYzBiIGxlZ2FjeS10cnVuaworOTg0NyBmZWQzY2Y3MjY4M2RjMTc0N2VjM2MyYzRiOTYxNTc2MjA1NDY1N2JjIGxlZ2FjeS10cnVuaworOTg0OCAxZjQ2MjVmZTY2ZTJjYThjZTBiYThiZjIzOTRkMjY3MDUxN2M2MTE5IGxlZ2FjeS10cnVuaworOTg0OSBmNWExODlhZmJjZjk5NGRkOWExNDVkYjhmMjQwNThjY2QxYjIxNzBkIGxlZ2FjeS10cnVuaworOTg1MCAxZTY2YzRlMzFkMTUwYWZkOGIwYjllNWJmMjJlNTZlOWRiZjFhN2MxIGxlZ2FjeS10cnVuaworOTg1MSA4OTU1OWVlODVlNTQwZDJlZTRmMDg1ZTZhOWFiYmZjMDlkYTJiZjI3IGxlZ2FjeS10cnVuaworOTg1MiA4ZDExYjM2NzFlNWQ2MTg3ZDkzN2U2ODgzOGI4NWJjNWQxMjdmZmZiIGxlZ2FjeS10cnVuaworOTg1MyAwMDMzOGE4MTNkY2I4YmJlMWMyN2Y1OTQ0ZWFlNDY5OTQyYjdkMGIzIGxlZ2FjeS10cnVuaworOTg1NCBmYzZiZTdhZTAxMmY0NGNkOGQyNDA3NTJkNjgyZTlmYWIxODIyOWYyIGxlZ2FjeS10cnVuaworOTg1NSBmNzhhZjViYzc4ZWRkZTY2YjgzNzVlZDY3NjAyMzJlMTQ1MmU1NmRiIGxlZ2FjeS10cnVuaworOTg1NiAwZTBlODhmOGUxYWQ1MWZhZmQzNjFiMGQ0OWNkYjhlNjQwZGVmOTJhIGxlZ2FjeS10cnVuaworOTg1NyBlNjNmMmFkZmE3Y2M4NDVlOTkxOTAyZDljNTE0YjI5ZDQzZTEyMDYzIGxlZ2FjeS10cnVuaworOTg1OCA2MmFjNTdkZTdhZGJlNDZjZGU4ZWYwODU5NjZjZWYyYWNlYjBlOWQwIGxlZ2FjeS10cnVuaworOTg1OSAxMDg0MGMzNzM3YTdkZDEwOTNkMmFiODYwMDQzZmUyODk1ODcxMDY4IGxlZ2FjeS10cnVuaworOTg2MCA2OWFkZDRkNzczNmYxMDY1NjkwMTRlY2U5OTg3MmY0ZTQ0NmIwNjE3IGxlZ2FjeS10cnVuaworOTg2MSBmOGE3NzIyNGViY2FmNTEzNGJmY2MxZjkzOGM5NTc2ODQyMTNmOWJjIGxlZ2FjeS10cnVuaworOTg2MiBiNThiMmVlNjVmNzVmNTE5MmEzZDkwZjQwODVhZjc0YmIxNTdjMGI4IGxlZ2FjeS10cnVuaworOTg2MyA2ZGQ2NTFjYWY5ZTA2NmUzZWM5MWU4OGVkZmQ2YzczNzgwN2U5ODkyIGxlZ2FjeS10cnVuaworOTg2NCBmNDA0MGYzYmRjYzczN2I2NjVmOWMyOWJhMGE2ZDUyM2ZlYzc2NDc1IGxlZ2FjeS10cnVuaworOTg2NSA0NjExOWQxZTk0MTNmN2EwY2NlNzhmZWZkZDI1NTJiOGRlOTBiMjEzIGxlZ2FjeS10cnVuaworOTg2NiBlZGMwZDAyMWU0Mjc2ZGZiNWY3ZWZmMjljZjU4MjU5YWNkNDFmNTA3IGxlZ2FjeS10cnVuaworOTg2NyA1NDNiMmI0YWY1MzI1OTExNzY0MWQ0YzQxZTE2YzVmMTc3MWNiMWZjIGxlZ2FjeS10cnVuaworOTg2OCAyMjM0MzMwMzhhNDdlNzg0ODU4ZjQ0YWNkODFlMjk2MGUwN2VkYjkwIGxlZ2FjeS10cnVuaworOTg2OSBiNjRhOGNlYzhkNzVjNWFhOTMyNWE4NzFkYTI1N2JlY2ZkOGI5ZGE5IGxlZ2FjeS10cnVuaworOTg3MCAwMzMzZTRhOTUyZjkzZGJkYzhjMzFlYzViMTJiOWVjMDczMDg5NTgxIGxlZ2FjeS10cnVuaworOTg3MSAwMjhmNzBkNTA4YzBiNjE1ZjYyZjgzNDA4NjUwYjU2YTRhMDQ4MTAwIGxlZ2FjeS10cnVuaworOTg3MiA3NjdiZjgwMDRjZmZkZmVkMjIzNWMwNGY3M2YyMjQxMWE4OWNiYzNlIGxlZ2FjeS10cnVuaworOTg3MyA3ODY4NzVjNGM2MmM1MGQ3YzFlMDQxMDc4MGQzMDVkZGU4OWUxNzkxIGxlZ2FjeS10cnVuaworOTg3NCBmYmM3NTUzNWVhOTNjYjNmMmI1NDg2YjEwYjMzZDQ2NWI4YzU2ZmNhIGxlZ2FjeS10cnVuaworOTg3NSA0NWQ2NWJjOGE1NTBmMzM3OWFlZGI5MzE1NWZhNzIzZmU4MzJjM2JjIGxlZ2FjeS10cnVuaworOTg3NiA3YWZjMTVmMDhkODJjYWMzNzIzOWM1MDFlZDEyZmE4OTVjZDUzMjg5IGxlZ2FjeS10cnVuaworOTg3NyBiOGQ3ODY1MGY4ZGYxZDViYzVhNzFjN2EyZjQ3MjZmMmZmMjM3NjU0IGxlZ2FjeS10cnVuaworOTg3OCA2ODVjNTEwZTE0Y2VlYjVkNGUyZmM2N2U0MjRlNDFhYzFlNzY2ZTI4IGxlZ2FjeS10cnVuaworOTg3OSA4YzAxY2ZlZTE0YmExOTI2N2IxYTJiMGMzMjdkZTY5YTMzOTk0OTI1IGxlZ2FjeS10cnVuaworOTg4MCBjNzQ1NGNhN2QzYWNjMTQzZTAyYTBiNmY5YmVlMDUyMDA2MGI5YWYyIGxlZ2FjeS10cnVuaworOTg4MSAxODVjMWQ0N2NlN2EwODc0OWFjNzNhOTg4Y2Y2NzExZTMzOGYwMjI5IGxlZ2FjeS10cnVuaworOTg4MiAzYTc3YmNhMjI2YjkzNzdmZjJhOGRhMjMzNzQ1YmFjOTQwMGJlODk3IGxlZ2FjeS10cnVuaworOTg4MyBjNTFmN2I2ZDI1NTZlNDY5NTA5OGRlMmY3Y2U3YWVjODE5OGRlZTBjIGxlZ2FjeS10cnVuaworOTg4NCAzYTQ5ZjU4ODZhY2FlYjA5ZTYzYmI4NGRmYmQ5MWM4ZDMyYTFmZDdjIGxlZ2FjeS10cnVuaworOTg4NSAyYzU0OTAxNDcxZjVkOTA0ZDBiY2FmNmIzODQ1ZDJhZDMwMGI5N2U0IGxlZ2FjeS10cnVuaworOTg4NiBkODhiZjc2NzE0NTgyNWFiNGM0YTZkYjlkMGM4ZmRlYjdhYmY1OTMxIGxlZ2FjeS10cnVuaworOTg4NyBkZmEyNDc3NjQzMjM3MDI0NThhYjA5OTlmMTZmNmNiNjYzMjRjYzE4IGxlZ2FjeS10cnVuaworOTg4OCBkNzU4ODQxYTc2NjFiYzdmM2M4MDhjYmU3MzE0MGM0NzNmYjk1YjkxIGxlZ2FjeS10cnVuaworOTg4OSBhZDg5MWY2YTE5ZWViYTRkMzI1MTg3MjBkNzljNTg0MjI3ZWU2NGZjIGxlZ2FjeS10cnVuaworOTg5MCAyOTdiZWEyMzNlMDMyZmJkZjc5MzdhYjZkODQ5MzQxNjdlZGIwODc2IGxlZ2FjeS10cnVuaworOTg5MSBkZWRjZTliNjg3NDI0MDUxODg0MDI3MGY3OGQ5MjQwMGExYWJlZDkzIGxlZ2FjeS10cnVuaworOTg5MiA2NTg0OGE3Yzc3Yjk4MjUzMWE2ZTdkYzk3MGYxMWJmNjliOWU1OTU4IGxlZ2FjeS10cnVuaworOTg5MyBhMTQzNWM3ZDMzOWI3ZmMyMTM3NjNiM2JjZTEwZjQ2MThjMjVkMDRkIGxlZ2FjeS10cnVuaworOTg5NCAxM2YyOWI2MmEyMDk1MzhmZDU2MjhhYzM2NjQwZWE0MjY3OTMzM2NiIGxlZ2FjeS10cnVuaworOTg5NSA2MjU1ZGM4NjFmY2YxMzUzZmUyYWQyNjI1NjhjMWE4YWQyY2IwNjQ2IGxlZ2FjeS10cnVuaworOTg5NiBiMWYxOTVjOTdlZjk5YTRmYzZmMjQ5ZWVkMWE2Y2Q3ODQ1YzRhYTMwIGxlZ2FjeS10cnVuaworOTg5NyA3Y2EyYzNkODc2NjIwNmFlMjVmNTQ3OGI0MDM5YzJmYzU2MWQ1MDYzIGxlZ2FjeS10cnVuaworOTg5OCAzZDlmNTEwNTBhYmNhNDViNzJlOTY3NGQ3NjI3NDk0YWM2OWMwYmQ0IGxlZ2FjeS10cnVuaworOTg5OSA0MzkzODk3ODUyYjI0NDg2YjIzOTIxZDBkNGMxOTU0MjNkMjQ5ZTJmIGxlZ2FjeS10cnVuaworOTkwMCAyZDUwODgyMmU3ZjY4ODVhODNlMzkzZThmMWFkYWE1YzY1OWI2OTg2IGxlZ2FjeS10cnVuaworOTkwMSA2ZTczZjQxNjhiMDYyZWNhNWY3N2EwN2I1NThmMjNhMTczMTMwOTkxIGxlZ2FjeS10cnVuaworOTkwMiAxMWU5MzM3Y2RhM2QxNDdlZTZkNGUwMmE3ZGQyZDY1ODNlMmM2YjM4IGxlZ2FjeS10cnVuaworOTkwMyAyOWJkYmUwMzllMDVlYzg1YWQ3OTQ1YjAyZjZjZDQyMTI1NTg1MmFjIGxlZ2FjeS10cnVuaworOTkwNCBiM2UzZGFlOWI2MTIyNDQyZDE0NjIyMWIwNGIzMzI5YWVmNWU5MTY5IGxlZ2FjeS10cnVuaworOTkwNSA1YWY3ZDNkYTg3Y2Y2YWNiNzkyMjYwMmM4MDcyZmEyOWEyZGYyZTcyIGxlZ2FjeS10cnVuaworOTkwNiAzZjIyODQzNDRhNDFiYTI0Zjc1ZDA1NmZkMDNjYzg4NmY4NjFhNTIyIGxlZ2FjeS10cnVuaworOTkwNyA4M2U3NzU5ZTcyOTc4NjlkZGRhMWNkMTc3NDJkMWU1NjQ1Y2Y2ZWI0IGxlZ2FjeS10cnVuaworOTkwOCA3ZGY2ZjA0NTM0NjkxNzdjZDA4ZmNhNThhN2ViMjhhOTAzMDAwMmQxIGxlZ2FjeS10cnVuaworOTkwOSBhOWZiZjIxYWI3Y2U5Y2U3OTM2ZThhM2NjNTk5NDVjZGUwODRmYjhmIGxlZ2FjeS10cnVuaworOTkxMCAzNjU1MjZjNGNmOGJiMzIzODQ2NjU5NGQwNzMyM2RjZTIwNTgyZWFmIGxlZ2FjeS10cnVuaworOTkxMSA0ZjQ1ZGNjZGE5NmIyODc0N2UzM2Q0MWUxNTRkNWJkMWNhNGI0M2I1IGxlZ2FjeS10cnVuaworOTkxMiAzZGUwY2I4MmU2MWFlNjUxYmUwODA4ZTYyMDE4OTA5NWVkZWNkNzY5IGxlZ2FjeS10cnVuaworOTkxMyBjYmFjZDFiZTcyNzVjMDBmM2M2M2I5NWViNWEzODRjZjJlYjAwMGIyIGxlZ2FjeS10cnVuaworOTkxNCBkMTQ2NWI1YzBhMDg5NGUxNTUxMWRjMTdiYWJjM2I0MTcyZjQyMGVlIGxlZ2FjeS10cnVuaworOTkxNSAzNzQwZmYyZWUwNTNjYTkzZDg5MDViZWM1NTBhYTQ2NmI5YTI4OWUzIGxlZ2FjeS10cnVuaworOTkxNiBjZDExNjkwY2IxNGIwNzJlNzBmMjVlOGMzZmRhNzQ4YTExYjlkMTgxIGxlZ2FjeS10cnVuaworOTkxNyBhNjRjODlkYWUxOGQ2MGU1NGE4MmVlYWRlMzI4NmE3NGY2YjMwNDE4IGxlZ2FjeS10cnVuaworOTkxOCA1OTBmNjI1NGY5YTlhZWFhNDIwMjNlZGI1NjhiZThlYjA3MjVkYTdhIGxlZ2FjeS10cnVuaworOTkxOSBhODA1OWI5NmJjMzU1YWE4YjYyZmUxNjUzN2NmYzIwZTkzNGNkMzE2IGxlZ2FjeS10cnVuaworOTkyMCAwNTE4OWY3Y2RiZWIxODQxMThkNjE2OGFkMzMxZjk1MGMxYTlmMDY4IGxlZ2FjeS10cnVuaworOTkyMSA5ODE1YjE4YjIzZTNiNjg1YTlhZjIzNTQyYjUzY2I5OGQxYjM2NzkxIGxlZ2FjeS10cnVuaworOTkyMiAzNzIwZTk5NmU1NTEyNzM5MTQwZGJhMjk4YzlkMWNiMjU1MDM5MjczIGxlZ2FjeS10cnVuaworOTkyMyAxNjY4NDk5MjA2ZGNmYmI1ODJlN2U1MmE2MzQ4YTU0ZDQwZjU0MzlhIGxlZ2FjeS10cnVuaworOTkyNCAyOTMzZmIzNGYzMzNmZDUyYzE3MzkyMGZhOTRmMDU0MGUxODkwYjYyIGxlZ2FjeS10cnVuaworOTkyNSA4MjZjNzE4MDE5MTFjYjBjNjM5N2Q4OTY0YWQ2NjE0OGZmOGU0NjM4IGxlZ2FjeS10cnVuaworOTkyNiBjOWI2ODUwYzQzMzZhNGNkYWZhMmEzZjUwMDJlZGViYWM0YjRmMTc5IGxlZ2FjeS10cnVuaworOTkyNyA1ZWRjZWI4ZjFmYWI3YWM2ODBiMTlhOWNkNDliZDU1YmMzMDJmMmYyIGxlZ2FjeS10cnVuaworOTkyOCAwZDc2NzYxNGM5NDFlYjEwZjVlYzI5MzJjNDNhYzcxYmE5YWRiYTE5IGxlZ2FjeS10cnVuaworOTkyOSAwYTk1NDFhODY2ODkwOTRkZTQxM2Y0ZWM2YzAwY2RlMmQ4ZWI1OWYzIGxlZ2FjeS10cnVuaworOTkzMCAyM2NjMzQyZWUxNTBiYTg0MDFmYmMzYzM5YmFmZTM0MGEzNWEwMGNhIGxlZ2FjeS10cnVuaworOTkzMSAzYzM4YzhhZDU2MjNmYjQwZDRhZmRhMjYxMzMyNWMzNzdiZTliMDA0IGxlZ2FjeS10cnVuaworOTkzMiAxYjRhMmUzOGFiNWVjNjdhZTNlNTE5MGU3ZjhlZDBiMjUzNzY4NjMwIGxlZ2FjeS10cnVuaworOTkzMyA0ODMyODZlMjE5ZTFmNjQ0NDYzYjRkMmJkN2IyZjEyNmE1ZjExYWU0IGxlZ2FjeS10cnVuaworOTkzNCBiZDA1YWI0NzMxZjc2YjNjZTQ0ZDQzMGM1M2U3NzBkNGI2OTQ2ODg4IGxlZ2FjeS10cnVuaworOTkzNSAxYTliMDliM2NhZjhhZTVlMjg1YjcwNGQyZDlhYjdiNGE0ZGFhZWI0IGxlZ2FjeS10cnVuaworOTkzNiBlYzk1ZThkYWU1MDQxNDI1YWU1N2NhNTdjMTk2ZjBlNGU0NDgwZTc5IGxlZ2FjeS10cnVuaworOTkzNyA0YWE0NzEwZDg5NGM4MjY4ZjQyZTZhNDA4MTY5NTZiNmQ1YjZjZDU5IGxlZ2FjeS10cnVuaworOTkzOCBiZDgxNTM4ZDRkZGZkNDc2MTdmZGI0NWJhMzk4NThhOWZkYTY0Y2YyIGxlZ2FjeS10cnVuaworOTkzOSAwMzFkZTg1NDBhN2VhMDVkYjU0ZDAxZmFjZjUyZjhmNDIzZmNlMGNlIGxlZ2FjeS10cnVuaworOTk0MCA5NTQxYjliMDkzN2RkZjE0YzBiNjQ4YjFjYmVjMjMwNDcyYmE1ZjVmIGxlZ2FjeS10cnVuaworOTk0MSA4Mjk0N2ExOTI2Zjc4MmRlZmJlMGNkNzUzOTdjNTc2MDk5ZTU2YzEzIGxlZ2FjeS10cnVuaworOTk0MiAwMjEyMzdiYTUwMDc0MjVlMDIwZTdjZTk2OGQ4OTAzOTU1ODYwYTJjIGxlZ2FjeS10cnVuaworOTk0MyA3YjJmZDQ4NmVmZWUxY2Q4ZmRlMjBhZmNjMTZiODgzNzViZDY4MDIzIGxlZ2FjeS10cnVuaworOTk0NCBjYjFhNTc3YzAyMzljYmIwZDk2ODc5YmMwNGZlMjllMzU2ZjMwYmUxIGxlZ2FjeS10cnVuaworOTk0NSAwMzYwZTNlMzBhMmU0MGM0OTIyZjc4ZDVkNzE4MTgyZmE1NTk5N2YxIGxlZ2FjeS10cnVuaworOTk0NiAxNDlhNTQ3OTg4OTYxYjdhY2U2MjhhZWVjMTZlZTNhYmRjYzYxNmY1IGxlZ2FjeS10cnVuaworOTk0NyBhZDNlNGViMzVkYTc3MjM5MGM1MGMwMjkzNzg2Yjg2ZmM5YTA2ZTE5IGxlZ2FjeS10cnVuaworOTk0OCA2Zjg2OWU1ZDMzY2NiZjc2MzRiN2EwYmU1ZWFhNDEyYWY4MmVmZTI2IGxlZ2FjeS10cnVuaworOTk0OSA4ODFhNWU2NzE0ZGNiNzBhNWNlMDc5ZjUyMWZkYmUwNzFkMzBmMGU4IGxlZ2FjeS10cnVuaworOTk1MCA2YmI1MDZhZDk2ODQ4YWMyYTI4Y2Y1MTcwYjdmNTdjOWJmZGZhMmZmIGxlZ2FjeS10cnVuaworOTk1MSAyY2YxY2FlOWI0NmVmMzdmMDJkNWM3ODY0ZGMxODg1MGQwYWNjYmJiIGxlZ2FjeS10cnVuaworOTk1MiAwNzZiODJlMDQwYTVjOTM1NGU0Yjg1ZGNjYjIxZTIzOTU2Y2RmZmFkIGxlZ2FjeS10cnVuaworOTk1MyA3ODRmZWY4MzdiNTJkYzhkNjAxODFkY2FmNTBjOGMwMDJmZjM0NzdhIGxlZ2FjeS10cnVuaworOTk1NCBjYTY2YTI1MzZjZDU0OWE1OTdkOTZiMTgyNTRlMDNmNDdmNDk0OTgzIGxlZ2FjeS10cnVuaworOTk1NSBiOTQyMWUxN2RkZjc2MzFkMDdmZDIzZjBhZmQ2MWFjNWI2YzRjZjdhIGxlZ2FjeS10cnVuaworOTk1NiA4MDczOWIwYmMzMDI2YzkyYThkMjNkNmE0YmE4M2VmOGY2ZDg5NTcxIGxlZ2FjeS10cnVuaworOTk1NyBiZmU1N2VmYWQ3NTFmYWRmYmU5YjI2NWNmNTZlMzg3NmIwZGI5NjUwIGxlZ2FjeS10cnVuaworOTk1OCA1NWMzZmQxODUzY2ViYjJmNGNlN2I5ZmJhM2EwNjgzNDZjN2Y0NjhlIGxlZ2FjeS10cnVuaworOTk1OSBjY2EzOWQ3MTlhYmE2ZTVjMDQ1OTZkMzk1NDYwNzUyOGQwZDMyNjE1IGxlZ2FjeS10cnVuaworOTk2MCBmMDFmZjI2ZmFjYWViODczODJhMDE0NWRhOWZkN2VjNmVhMzlhY2E5IGxlZ2FjeS10cnVuaworOTk2MSBiYTRhMDJjMGU5MGM3OTJhZmE3ZTFhN2M5MWQzMzQ1ZTRjMTBiODEzIGxlZ2FjeS10cnVuaworOTk2MiA1ODBmNmM5MjI3MGJiODcwMTY5YTBhZWY4NzdlZTZmNGEzYTU1YjIyIGxlZ2FjeS10cnVuaworOTk2MyAxZGZjMTVlMzExMzA0M2Q2MDA4ZWZlZThjMjlmYWRlZjFkNzBjNDViIGxlZ2FjeS10cnVuaworOTk2NCA0Y2FlMmRlMzBiNTdmYzVlMGJiM2Q1Y2NkNmZjMzc4MzE3ZDMwZWUzIGxlZ2FjeS10cnVuaworOTk2NSAwNWQwYjZmYmVhOWI1ZGM2N2NlZWFkMzY1MmZkYzQ4MjY3MjkyYzRiIGxlZ2FjeS10cnVuaworOTk2NiA5ODM0NWFhMWQ1ZmVkMzE2MzNmYzgyZWVkMTlkOTI3OTIxNDYwYjc3IGxlZ2FjeS10cnVuaworOTk2NyA0MjdiODFjMjQ1MmZlMWQ3MmZhMTAwYTRiNzI1MGJkNDBiNGIxYmFlIGxlZ2FjeS10cnVuaworOTk2OCAzZGZjMzc2ZTZmMWE4YmU0Y2U5YTAxMzFmYzk1MGU2YThhNzE0YjEyIGxlZ2FjeS10cnVuaworOTk2OSA3ZjI4OTk3YjJjMTA2ZmNlMjNiZWUyYmMxZWRmMjZmYTIzNzg5NGUzIGxlZ2FjeS10cnVuaworOTk3MCA1NDQ1NmYwOGViYWQ3NTUxMmQ0MzFhZWExYTE4YWRjYTcxYTZlYWE5IGxlZ2FjeS10cnVuaworOTk3MSA2ODU3YWNiZTJlNzRiMDBhZjg2MGFmMmJhODcxZjUxMjk3NWIzOWFlIGxlZ2FjeS10cnVuaworOTk3MiBjNGQ1NmZjNjNkOGYwMzhiNGFiNDE2YzE0Nzk5YmUzYjZlNThhNmE4IGxlZ2FjeS10cnVuaworOTk3MyA2YjAyNjY2NzlmOTY5NTI1OGQ3ZmE0MTM5YzcwOWE5Zjg2NDU3ZTI0IGxlZ2FjeS10cnVuaworOTk3NCBlYzc5NzZkMmQ1ZTllNDEzZTIxODg5MmU5NmQ3ZTc5YzJhYzg2ODE2IGxlZ2FjeS10cnVuaworOTk3NSA1ZTM5MDA3ODQ2MGFlOGU0MmIzZjk1ZDM2Njg3YzEzNjRmOWI4NzFkIGxlZ2FjeS10cnVuaworOTk3NiAxOTA2YTdmYzc1MDk0ZDY4MjZhM2ZjYTViMmNiMmE1YTg5ZDYxM2FkIGxlZ2FjeS10cnVuaworOTk3NyBkOTU5MWM5YjJjNWZhNGQxNWE1YmU5MjZhNjA0OTI2YmJiMjc3Zjk3IGxlZ2FjeS10cnVuaworOTk3OCA5ZGUzY2FkNTA5MDUwYzJhYzZjNDZiZWJiOTEzZGEzZTEyNDk0MjAzIGxlZ2FjeS10cnVuaworOTk3OSBkMTdkYjNlYmZiYzIwNWRjMTg1NzY0YzMyOTU4M2ZhMjJjNTUyNGQ0IGxlZ2FjeS10cnVuaworOTk4MCBmMjNkYjNiNjVjODM4MWZiZWQ3ZWQ3NDQ0ZjYwNmJmZDg5YTk1OThhIGxlZ2FjeS10cnVuaworOTk4MSA3NTQ1ODYwMzljMTFiMWY5Y2ZhNDEwZmQyN2YyNDE5MmYxZTY0NjZkIGxlZ2FjeS10cnVuaworOTk4MiA4OTRjZmZlYjg5YmE1MzUxN2Q2YWNlNmZhNmMwNjI3NzNhZjIwMjQ1IGxlZ2FjeS10cnVuaworOTk4MyBlZjk4MGUxN2I1OTM5Y2FiYWY2MjE4MDRhODAzNDc5OGQyMzYxYTU2IGxlZ2FjeS10cnVuaworOTk4NCA2N2EyYjk2ZjAxODk3MzQ5NDZhZGMzZTAyNWMzNzA0ZTg2MzY4MTU0IGxlZ2FjeS10cnVuaworOTk4NSA1MTBlNTI0NDY3Y2U2MjczZGVjMmJmNDQzODAzYzY5ODE0NzQxMzUxIGxlZ2FjeS10cnVuaworOTk4NiBlZGEwY2ExMzhiM2Q4NGJhOTExOTYzMzhkMGU1ZWE5ZTBhYzJhNDQ4IGxlZ2FjeS10cnVuaworOTk4NyBiNWQ1MmM0MTViMTVlOWU0Y2YwZGRmOGM1Yzc4MjQ3MjdlMjRkM2JhIGxlZ2FjeS10cnVuaworOTk4OCBlYzQ3MzVjZTEzNjA4NDNkY2M2ZTc3YTMwZjdmMzAxZDc4YmE1MDMyIGxlZ2FjeS10cnVuaworOTk4OSAzNWEzY2MyNGVmMDQzMjdhNmJhNmRiNjBlMDQxYWM0OWVlYTAxZGU4IGxlZ2FjeS10cnVuaworOTk5MCBlM2YzN2EyNjAyZDUwNDkwNWJiOTI1ODgxYjYzNzYzOTY4MzY5NmNkIGxlZ2FjeS10cnVuaworOTk5MSA0ODg4ZjQ0ODQ1MGYyM2RhMDJlMmQ2ODI1NWQ2NzkyOWFjZGI0YmI4IGxlZ2FjeS10cnVuaworOTk5MiA5NzBlOWUwNThiNzYxYzRjODQ3YzFiNDQ3Y2QyMmRmY2EwMjk4ZjdkIGxlZ2FjeS10cnVuaworOTk5MyBlYzBmOTlmMWEyZmRiMGFiOWY2OWQzMGY5MGI4NGQ0NDRlYzA5OGVmIGxlZ2FjeS10cnVuaworOTk5NCBiNjA0MjRhNTZmNzQ0ZTVlZTQyYmZkNGZlMTlhYzJjYTQxMjczYTAyIGxlZ2FjeS10cnVuaworOTk5NSA4M2MyYTVhNDVhNDFiMmZhZGI5MzlhM2MzYjZhMGZkYjI1MzU4Y2ZhIGxlZ2FjeS10cnVuaworOTk5NiAzMTJjYTlmZGFjZmYyNzViZTkyMDcwNDQ5NmE5NWMyNWI2NjJjNmQwIGxlZ2FjeS10cnVuaworOTk5NyBjY2U4OTk0ZDUyY2YwZThhODMwMDQzMWZlNzY5NmU3ZGI4ODJmMjcyIGxlZ2FjeS10cnVuaworOTk5OCBmOWRhMzRmNzI2OGI1MWM4NzFmMmYxNDNkYTgwMDY0MjJkNGMzNzk1IGxlZ2FjeS10cnVuaworOTk5OSBmYmM4OTIyNDM0NzdmNmNjYjZlYTIzYWUzYmNkZTU0YTA2NGY5Nzk3IGxlZ2FjeS10cnVuaworMTAwMDAgZGMzNzQ3MTFjODQ4Y2Q2NjEzN2U5YjZhNmU2ZWI0YzE3YzA0ZmFlMSBsZWdhY3ktdHJ1bmsKKzEwMDAxIDVlNGMyODk3ZTYyNTc1ZTllNDY5YTBhZjAwNTlmN2Y3Y2ZkYjU2ZTYgbGVnYWN5LXRydW5rCisxMDAwMiBlZWFjMzZiZmUwMWFhM2YxZmM4ZDFkMWZkNWZlMGVhODczODQ1ZDA0IGxlZ2FjeS10cnVuaworMTAwMDMgODg5OTI2OTZiOWU4ZDE3ZDU1YTg0ZGUzMzJiNTliOWM3ZDdkNTc2OCBsZWdhY3ktdHJ1bmsKKzEwMDA0IDYwZTdiMDAwZjI3Mzg0NjIzZGMxNDdkNTJhYWNjMzM5OWJjNWQzOWEgbGVnYWN5LXRydW5rCisxMDAwNSAyNmE4NzcxYTRjZmQwMDliOTZkNzNhNThlYjU1ZTAwNzJlOGM5ZWI0IGxlZ2FjeS10cnVuaworMTAwMDYgM2NhZjIzOTdjNTA4MTU1M2IzM2NmYjdlOWJmYjVhOWUyZThlOTA5ZSBsZWdhY3ktdHJ1bmsKKzEwMDA3IDAzNDM5ODczNmU2NGM0MThjYmQzMzc3ODc1NWRmZGJkZTExZTQ1OWUgbGVnYWN5LXRydW5rCisxMDAwOCA4OTExMDVkYWM5YjQxODcxNDQ4ODE3OWJlMjgxOWVkMWNhMzVjNGUyIGxlZ2FjeS10cnVuaworMTAwMDkgYjQ2NjBhZDdkYzQxZWExNzRmODk1OTYzZWU1Mjg0YWMwMzJkY2YxZiBsZWdhY3ktdHJ1bmsKKzEwMDEwIGJmMjM2ZmJmMTFkYWFlM2EyMmMxMTQ2N2UwY2I0YjczYTIxNjQzYjkgbGVnYWN5LXRydW5rCisxMDAxMSBlYTgxODRiZmYxMmRhNWMwZDFlYTU0YmM4MTYyMzZiNjM3MTNiMGYwIGxlZ2FjeS10cnVuaworMTAwMTIgZjkxZDVhMDMzOWJmM2FhMzhlYTkwNGY3Mjg1NjQ3OTU0MThhYWQ4YiBsZWdhY3ktdHJ1bmsKKzEwMDEzIDEzYjYwYWJkYjcwZDE5ZWEwNjZmMjIwM2MxMTYzY2VlNGI3MzY4NTEgbGVnYWN5LXRydW5rCisxMDAxNCBlZWRhYzUwZDc3NDQzYjBiYmRjY2Y5YzZkNTI4NzIwZmNmZTExZmJkIGxlZ2FjeS10cnVuaworMTAwMTUgM2ZmNmIzZDNjNGQ1ZTJmM2Y1ZGI3YmNmYTlmNDFiMWRjNTcwMzYyNSBsZWdhY3ktdHJ1bmsKKzEwMDE2IDAxYTlmODRhMjY5YzlkYTBhOWJlMDFmMGFiYzI3OGFhNmU0OWZkNGUgbGVnYWN5LXRydW5rCisxMDAxNyA3ODMwZTFkZTk4MTc0NTdlYjFmYzQyZGI3NTNiZjNiZDkwZTk0NmU3IGxlZ2FjeS10cnVuaworMTAwMTggOWRhZTBhYjM4M2E0OThlMWI1NzI2Njg0MDE4Njk4YTdiN2U5YTU3NyBsZWdhY3ktdHJ1bmsKKzEwMDE5IGM5ZjRhYTJjNDVlZGQ2N2ZkMGM0YzQ1YjQ0MGUzYWE0ODQ0MTg1MmQgbGVnYWN5LXRydW5rCisxMDAyMCBjYTE3MGQ3NjFmMDg2ZTMwNWM4YjVkYjZjNzA3NTcxZjEyMWZiMzA0IGxlZ2FjeS10cnVuaworMTAwMjEgNDhmN2FjNDUyZDk5Yzk0YjkzMzAzMWQ3YjdlOWQ5NmM0YTY5N2Q0MSBsZWdhY3ktdHJ1bmsKKzEwMDIyIGQyMDJjODJkM2M1NzE2MjZkMzZmMWM0NDBmOWM1ZjUxZmMxYzlmMGEgbGVnYWN5LXRydW5rCisxMDAyMyBjMDEzMWZhZTA2ZTllMDcyMTFjODQ0YTkwZGVhNGQ3MmVjODYxN2VhIGxlZ2FjeS10cnVuaworMTAwMjQgNjQyMWVhMWRlMjgyODdiMjRkZDY0Y2M3YjI2NDdiZmZhYzk1MzFiYyBsZWdhY3ktdHJ1bmsKKzEwMDI1IGQ0ZDg0YjU0YzQ0ZDgxODllMjAzYTE0MDNkMzhkNzg5OWQwOWJhNDggbGVnYWN5LXRydW5rCisxMDAyNiA3ZWIxOWIxY2U4NGQ3NGYyZTJjOTU1YTYzMGM2OWE1OTdhY2M0OGQ1IGxlZ2FjeS10cnVuaworMTAwMjcgNGIxMWNiOTYxMDQ2YTBjNGQ4NzJkNWY2MmNjYTUzMDk5YjQzMTRmNyBsZWdhY3ktdHJ1bmsKKzEwMDI4IDY5ODYwODIxY2ExZDVkYTY2NTFkZDQ2NmY5YjI0ZjM2N2RkY2FlNTUgbGVnYWN5LXRydW5rCisxMDAyOSBkMzRmZTMwYjk1ZTg1NjgyMTM4OTNjZGYwN2NmM2MwMzllOGQzODdiIGxlZ2FjeS10cnVuaworMTAwMzAgYzhlNWY3MDQ2MjNkODkwMTFmODZmZmZjMjk0YjA5ZTA1NDA1NTIzMSBsZWdhY3ktdHJ1bmsKKzEwMDMxIDgyZWI4YjNkZjZmODI2NTQzYmJmOTYxZjcwZTUyNTRjMWU4YzFlYjAgbGVnYWN5LXRydW5rCisxMDAzMiA1ZGY2NTZjZDEwYWRlMWQzNWI1NzZjMzYzYWQyYzEyODEyY2E5MDg4IGxlZ2FjeS10cnVuaworMTAwMzMgNWFlY2MyNTA5ZTQ2ZDlmNGJiYzg0ZWFiMGE3ZWMxMmMyNDhjMTkzMCBsZWdhY3ktdHJ1bmsKKzEwMDM0IDczMzk1MDgwNGEwYjQyYWZmYTBiZmI3ZmIzYjcwZThhZDYxNmEyNjcgbGVnYWN5LXRydW5rCisxMDAzNSA2NTk4Mzg0ZDVmNGNiZWQ5YzZmZGEwMmU0MjQyNzY3YWQ1Yzg2MDIzIGxlZ2FjeS10cnVuaworMTAwMzYgMjJkZTUxMTY4MzJmZDY1ZTE5Yjk1NzJjM2IxNzRlOGZjYThiMmYyMCBsZWdhY3ktdHJ1bmsKKzEwMDM3IGMwMmFmMWU3MTNlZGM4YTQ1NjQ3M2JlYWUxNDQ3MjFiZTVjNzk1MDMgbGVnYWN5LXRydW5rCisxMDAzOCBhNDQ3YjI2OGM3NzMyYmQ5MDg2ODJjMTE1MjdmZDA2MDUxOTAxYWYyIGxlZ2FjeS10cnVuaworMTAwMzkgY2M3ZTEyNmYwMDlkMzg5ZDgzYjI1NGU0ZDkzYTA5MTdmMGMyZDhmYiBsZWdhY3ktdHJ1bmsKKzEwMDQwIDQzZjQ3YjhlMzk4ZGE1M2RhOTlhODY0ZmIzMWVkOTJmNzA0OTUyMGIgbGVnYWN5LXRydW5rCisxMDA0MSA1OWIxYWIwMWMyODZlZjMxN2E1OGU2N2VmYjI5YWM1MzY4YTFiZGZkIGxlZ2FjeS10cnVuaworMTAwNDIgMWE5ZjlhNWRmMDRiMTZmMGJjNTdlZTFlNGI0ZTI1MDUxMzQ2ZWRiNiBsZWdhY3ktdHJ1bmsKKzEwMDQzIGJhMTBjNDI5OTliOGJjYTI2OWNiMjBhYWU2ZGZiMTZmMTIwYTkyNzYgbGVnYWN5LXRydW5rCisxMDA0NCAyZmYyZTQ1N2FiODdhYzdhYWUyYmI5YjA3MzMzYjNiZjIwMWEyNzcwIGxlZ2FjeS10cnVuaworMTAwNDUgMDBhZWU0NzQzZDdiYTY5ZWFhOWU4NTIwOTgwMjQwNDY0YThkZmY4OSBsZWdhY3ktdHJ1bmsKKzEwMDQ2IGUxNWU4NWQ5ODdhZjg5ZTY2NjBhOWJmOWUyMGE1M2U4YjY4OWZkNzMgbGVnYWN5LXRydW5rCisxMDA0NyBiOWNiZjE3NGM3MjM4OTIwODY3Y2ZjZmE1ODJlNGNkNmQ5YjQxMWIxIGxlZ2FjeS10cnVuaworMTAwNDggOGFlZTUwYTlhMWIxZmE0Yzc0Yzk1ZjE3ZjQ4YjhmZWYxMTY3NTE3MSBsZWdhY3ktdHJ1bmsKKzEwMDQ5IDk2OGFhYmEyODFjNTNmMDJiM2Y0NWMxOTE0OTVmZTlkZmZhYWJmYjggbGVnYWN5LXRydW5rCisxMDA1MCBjOWY0MTcxMjRlMGY3NjY1NGI4OGE2ZjI0YjhkZWMzNjU3ZmM4NjdlIGxlZ2FjeS10cnVuaworMTAwNTEgYWEwZTgxOTljYzMxODNiM2Q4ODE3Nzg2YTdlZjk3ZGQ4N2E0MmZlYyBsZWdhY3ktdHJ1bmsKKzEwMDUyIDdlN2Q2YjFiOGE0YjJiZGQ2YTY0NzA1YjAzYTZhZmU5YzBhZjE5NjIgbGVnYWN5LXRydW5rCisxMDA1MyBlNjcxMTQ1YWI1MDdlMWQ2ODE3NTJhNjYzODM5ODQ3OTIwODM0YTMxIGxlZ2FjeS10cnVuaworMTAwNTQgMmEwNTZkMTkzZGQzN2E3YmQ0OTE1MDIyMzczMmU0NTkwMWQxODFiNyBsZWdhY3ktdHJ1bmsKKzEwMDU1IDgyN2FlYTVmNTYyMTkwZDA1MDEzNThlMmZiNDI4ZDM0MzUwMzQ2MjkgbGVnYWN5LXRydW5rCisxMDA1NiAyMDQzYzY5ZmYxZDQ1NWQ4MzkyYmM2NGY1YmI2ODFlZWYyMzFlNTM0IGxlZ2FjeS10cnVuaworMTAwNTcgNDJhMjE4MDZiM2QyZmVlNWFjNWY0NmFjOTU2OGE3OWNmZjRiMjRiNiBsZWdhY3ktdHJ1bmsKKzEwMDU4IGQ1Zjg5NTY3YjVhOWY2N2QwYjMyMzA1YTMxNzUyYzdiZTM2MWQyYTUgbGVnYWN5LXRydW5rCisxMDA1OSAwZjU2NWM3ZmU0YmJmZTliNDdjZTlhNWQ1OTIxNTcxYjJmNjgzNzYwIGxlZ2FjeS10cnVuaworMTAwNjAgMGE0YjQ1MzM4YWMyODUyNTZkZGJiZTIzMjM1ZjlhNGUwMjJjNTZlZiBsZWdhY3ktdHJ1bmsKKzEwMDYxIDlkZTBkNTA0OWNhMWI2NWY3OThhNDYyMThlOGJkNGY2YjcxYWEzMTkgbGVnYWN5LXRydW5rCisxMDA2MiBkMmI1ZDkzMjZmMDkxNTQ3MGY2ZmJhZDk4ZGJkMjk4YzI2ZmNjMWUwIGxlZ2FjeS10cnVuaworMTAwNjMgMmVmMGFjYTk2ZjJkMzNhNTVmZjRhZTc1Y2JiMzM3Mjk3NGY3Yzg4ZiBsZWdhY3ktdHJ1bmsKKzEwMDY0IDA3NjViOTU4Y2M2N2ExOWJlMmFhOGY3NDZlOGQ2YmEwYmRlNWZhYmEgbGVnYWN5LXRydW5rCisxMDA2NSBmYzc2MGM2MjY5NTBkZTk3Nzg2YjUyNzYzNGRhMTg2MzdlZGE0Mzg5IGxlZ2FjeS10cnVuaworMTAwNjYgNGI2MzRmMDI0M2Y5N2QwMzJjMTBiYmU0NmNhZDIzZTYzODJiMjcwYyBsZWdhY3ktdHJ1bmsKKzEwMDY3IGJkMDg4NmU3OGYzYjdlMmI0ZTE1YjdjOGNjZTMzZmM4NjJmMzQ4ODggbGVnYWN5LXRydW5rCisxMDA2OCBiNmQ2YTgzNGRiNDlhZjE1ZTQ3NjI3MmRhNmZjNGI5ZTc1MTFjOGJlIGxlZ2FjeS10cnVuaworMTAwNjkgMmYzMjMyMzgxMWM1MzU3Y2E5Y2M2ZThiNjdmNTAxNGQ5Y2Q3NWUxOCBsZWdhY3ktdHJ1bmsKKzEwMDcwIDA5NDQwNjA2YWFjNTg4ZjQ5YzY5YzAzYmFiZThkNjdmNDRiZjA5MTUgbGVnYWN5LXRydW5rCisxMDA3MSBhMTkwMjljZDc2YzUxNTllZjUwMGFhY2VjNzQ1ZjA0OGRiN2E5YTNmIGxlZ2FjeS10cnVuaworMTAwNzIgOTljZWZhYTljNTA5NzJjNWIzYjI1YTY4NTJiNzA3M2E4YzU3ZDFiMCBsZWdhY3ktdHJ1bmsKKzEwMDczIGM0NTZlYmUzNTMzNzRkZTFlNTU3ZmI1MGFhMzFiNzQ0ZDg3YjkyMWIgbGVnYWN5LXRydW5rCisxMDA3NCBhYWI3NjIyMDUwNWVmZGM2OTJkZjRhMzkyOWVkNWJlYTRjMDgwMjJjIGxlZ2FjeS10cnVuaworMTAwNzUgMzliODRhM2RjZWFhNTAzNDBiMTAwZWNkZDdhZDczM2RhZTM1YjQ4ZiBsZWdhY3ktdHJ1bmsKKzEwMDc2IDcyY2FiOTVkMzVlNTcwOWVlOTkwNmMxNDg1ZjdjNDMyZmE2NGU4NTQgbGVnYWN5LXRydW5rCisxMDA3NyAwOTQxNTY4MGJkNGY2YzQ4MTQyYjlkMDFhYzI5YzUxMjU4ZWI0YzE5IGxlZ2FjeS10cnVuaworMTAwNzggNmE0NTM1OTVlNjE5ZTk4MDc2NWU3ZjdjNzg0MzRhNjk2YjU4ODc1MyBsZWdhY3ktdHJ1bmsKKzEwMDc5IGVjYWQyMzRjODdlNDRkOGVhYzBjMDQyNzhhNzNhZTY5ZmI5MWQ0NzUgbGVnYWN5LXRydW5rCisxMDA4MCA3ZjRhNTAzY2U1OGIyNmY4YWMyYjlmMzI1OWE4YTFkZGM4NTE2NGM2IGxlZ2FjeS10cnVuaworMTAwODEgYzBiZjliNjBjMjk4MGIyMzhiNGVhOGI3MWU5MjAyZmJlMjFhOTBjNiBsZWdhY3ktdHJ1bmsKKzEwMDgyIGE2M2Q1NTNlYjY1ODI5MmI5ZDA0OGNiOTFkYmE5M2Q3YmI2MjllNDAgbGVnYWN5LXRydW5rCisxMDA4MyA1OTQwN2Q0NDhiNmFjZDkyMGUzZDFhMzcwNDI4ZmVhZjBmYjUwOGQ4IGxlZ2FjeS10cnVuaworMTAwODQgYzBjMDJlOTI2OWYzY2M5NTY5MzRkMDI3NmUwOGJjZjdkYWViMGJlZCBsZWdhY3ktdHJ1bmsKKzEwMDg1IDAwYWQzMDliZDUwODEwZDhiZGY5ZjkwZDE4MmQ4MTQwMjlhZmNjY2YgbGVnYWN5LXRydW5rCisxMDA4NiA4OTNhMzIwOTUyMjI1NDFmZGY2OTE4Y2VkOWI1ZjNlMmRkMzBjOWRkIGxlZ2FjeS10cnVuaworMTAwODcgYWZiYmZlOGY1NDk2NzA0YTdiYTE5NmQ1ZWI3MDg2YTkxOGM0N2ZkOCBsZWdhY3ktdHJ1bmsKKzEwMDg4IDcwYmNiY2RkYTc0ZjYxYTZmMzUxNWU4MmE0MGVjMzI3NzY1NzFiMDkgbGVnYWN5LXRydW5rCisxMDA4OSBjZGY4MGY3NDU4Y2ExYTczZDYwZTJlYmJkZGNjZmQzMWM2ZWUyMDA0IGxlZ2FjeS10cnVuaworMTAwOTAgNDZmMmM0ZmM5ZTM4MWFiYTI2OTliMmE4ODhhYWM2YjMxYjJlNDdiOSBsZWdhY3ktdHJ1bmsKKzEwMDkxIDE5MmVhOTg4NGViNjdkZmNhNjU0YjA4NzBlMDdlODI3OThhZDA0ODIgbGVnYWN5LXRydW5rCisxMDA5MiBmMzViMjllYjUyZDE5N2U5YjZlNjk3NTFhYmU1YWYwNWM4MGI3NWFmIGxlZ2FjeS10cnVuaworMTAwOTMgZGVjNjVmY2VhMjFlYjkxZTY0MGY4NjJjNmYxNjNmNTlkZDc0YmE4MyBsZWdhY3ktdHJ1bmsKKzEwMDk0IDBlMWU0YjRhMDgyMTAyOWY1OTM1NDM3YjdlNzFkNmQ2MWViYTc1NDUgbGVnYWN5LXRydW5rCisxMDA5NSAwNjhhNjk0MmZlMWExMmVhNTRjOWY2ZDQ5ODQyZjQ1Y2VmYWI5YWQ4IGxlZ2FjeS10cnVuaworMTAwOTYgYTNhNmVjMjU5OTg2MDUzYTY1YzhmYmY2YzhlOTg4N2M0MTQ4M2EzZSBsZWdhY3ktdHJ1bmsKKzEwMDk3IDI5M2IwY2IzNDcwNDA0YzI5YTI3ZTQwMGM1YmI4MmZmYjY3NWJlNjkgbGVnYWN5LXRydW5rCisxMDA5OCBlY2U2MDRlZDYyMjgxODNhOGM5MWNjOTQxZDMyMDYxNjY4MzAxYjkwIGxlZ2FjeS10cnVuaworMTAwOTkgOWNmNmY5NDA5NTk2NTA5MGE3NTc1MGE2Y2IzMmRmYzYwNmM1YjVlZiBsZWdhY3ktdHJ1bmsKKzEwMTAwIDBhMjBjY2UxNzM3MTQ5OGQ0NzNiNDRjMGYwMzNmYTBlY2E0NGUzMTkgbGVnYWN5LXRydW5rCisxMDEwMSBjNTRmMWNjZGU2YTlkZWI2Mjk4ODczYmI2ZjQ4MGQzYTNjODdhYzdkIGxlZ2FjeS10cnVuaworMTAxMDIgYTc4NzQyOWU4NDBhZWIwYmE2Y2FjYzlhNWE4MDdjZDRmZTRkOGU3MCBsZWdhY3ktdHJ1bmsKKzEwMTAzIDBjZTY1OTA0N2JiZjMyMjdjYjJhMWFhNDgwZWMzNmZhYmY5MjNmOTYgbGVnYWN5LXRydW5rCisxMDEwNCA1YWE3MDM3YTFlM2ZiNTBkOTMyMjRkNmJlMDIxYzNiZGJhY2YyN2Q2IGxlZ2FjeS10cnVuaworMTAxMDUgYTBjN2FhMDUyMmRlMTBkOWQ3YmMwMjNjZjNhZDhkOTU0NDI1NThjZCBsZWdhY3ktdHJ1bmsKKzEwMTA2IDE2NTQ1NjI4MjQxMjBkY2Y5OWI4ZjgyNmIxNGZmZjBmNzdiNDAyNGMgbGVnYWN5LXRydW5rCisxMDEwNyA3OTYwZGEwNTQ5YzQ3NDNlMjk2NGI5OTZkOGM2YzY4MmIyYjA2ODY1IGxlZ2FjeS10cnVuaworMTAxMDggZGIxZTUxNGYxNjI5NzMwMmQ0NThjOWRhODRkNWYyNDI0OTFjZjg1YyBsZWdhY3ktdHJ1bmsKKzEwMTA5IDQyMmJiZTg4NWNiZjcxYTYxMmZjZmVjZTBhNWRiZjgzN2IwZWI0YzIgbGVnYWN5LXRydW5rCisxMDExMCBkMjJjZjY2NmZhMmM4OGM1MDg3YTJkYzgyY2FiMDI0YmM3ZjRiYzVlIGxlZ2FjeS10cnVuaworMTAxMTEgNTUzNDVkNmQyYzE0MWMwMmUyMGUyYTIzZmM1ZjYxOTM3ZGRkYzY0ZSBsZWdhY3ktdHJ1bmsKKzEwMTEyIDNkMTU5MGI1ZTNkZGZkZWUyYjI3ODI3ZjZiNGRmOTNiMmJkZGJiYTUgbGVnYWN5LXRydW5rCisxMDExMyBiYmRkMjhkMzZmNDI5NzdmYjZmNDk3MmIyNDUxNDY5MDIzZGE4ZTNkIGxlZ2FjeS10cnVuaworMTAxMTQgNTQ3MmFiNjEwZmU5ZTQ5OTZmNWIxNjY5ZWZlMGQyOTIxOWY2NThlOCBsZWdhY3ktdHJ1bmsKKzEwMTE1IGMxMTI0NDNjYWJlMTE2ZTIyNTFlMDBmMzk4NDhhOWNlNGQ3ZWY0NGMgbGVnYWN5LXRydW5rCisxMDExNiAxYzBmNThiNzYwODFhODcwMjcwOWY5NDAxZGRjYTMyM2Q1ZDZiNDRiIGxlZ2FjeS10cnVuaworMTAxMTcgYzYzODdlMjQyYjc4MGFmYzY4OGMwNmNmN2NkOTM2MDM0MzkyYzU0OSBsZWdhY3ktdHJ1bmsKKzEwMTE4IDA5NTAxMjcxODVlYWI2NGQ2OWI4MGUwOGEwZjM0ZGIyZmViM2U2NGEgbGVnYWN5LXRydW5rCisxMDExOSAyYmJlZmVjMTY1NDIwNGJhNWFjYzdhOTk4YmI4ODVhOWNmNDIwZDYwIGxlZ2FjeS10cnVuaworMTAxMjAgZjc3OTE2MTdjMmIyNWQ5NmQ3ZWJkNTQ0ZTMzYWY0OGMxODJkMGVmZSBsZWdhY3ktdHJ1bmsKKzEwMTIxIGI5NWU1MjNkY2U2Y2NlMTBiMTg2NzIwOTVhMzdiY2JmOTc1NDZlMDggbGVnYWN5LXRydW5rCisxMDEyMiBkOGQ4ODQ0N2YzYzEzMTRjNzIyNmE2NGY4YWMyMzRmM2M2MzQ3YmM3IGxlZ2FjeS10cnVuaworMTAxMjMgN2FkNTIyYTRjNzUzYTEwNGExZGM0ZjcxNTlkNTFiNWE1ZjY1NzVhNiBsZWdhY3ktdHJ1bmsKKzEwMTI0IGQ5MmYxMGM0NTFhMTM4ZGE0MzQ1MWFmM2U1NTVjMDdhNDhhYTg0ZjUgbGVnYWN5LXRydW5rCisxMDEyNSBkZWU1NjAyNWQzOTBiNDFmM2QwZmI1MGNkODgyOTFiODAxYzI2MjRhIGxlZ2FjeS10cnVuaworMTAxMjYgMDJjNjY0MjhmMDQ4NDFkZjcyMzc2NzVhZDUyZGQxNmMwOGU1NDU2OCBsZWdhY3ktdHJ1bmsKKzEwMTI3IDkzMmRkNmI5MGUxM2E3OTIzMGZiNThhZjUwNWE4NGE5NTI3OGY4MmMgbGVnYWN5LXRydW5rCisxMDEyOCBlYTY4NjE5ZmI1NmQ0ZDU0MWQzYTZhNDc4ZTBkZDI1MDhiNGY4NjQ2IGxlZ2FjeS10cnVuaworMTAxMjkgOTU1MmQ0YjNkOWI3ODE0MjVlMzhiMmQ4MGRjMmQ0NGQyNzk2OWU1NCBsZWdhY3ktdHJ1bmsKKzEwMTMwIGQ2NGRiZDFjZDMyZWI0Mzc5MTgxNjA1NzI0MDZkZTA1YTM1NTliNjcgbGVnYWN5LXRydW5rCisxMDEzMSBiODY3NzFiMGQ3ZjkxODdjYjEyMWFhOTU1NTlkZjhkZTIxYmY2YzI2IGxlZ2FjeS10cnVuaworMTAxMzMgNzVkMDA0OGM4NjQzZGI1ZTRiNmUyNTI2MWZhMDU0YzRhZTk4ODRlZCBsZWdhY3ktdHJ1bmsKKzEwMTM0IDczZWViZGFjZmI3NzYyM2Y4MzA1Y2Q1ODA0Y2RmYTE1YmRiNmZhYzUgbGVnYWN5LXRydW5rCisxMDEzNSA2YjNkM2EyODU4MWY0YzBmZGQ0ZWVjYTFhZGM3ODVlNzkwODhjNDA0IGxlZ2FjeS10cnVuaworMTAxMzYgZjAxN2M0ODU4YmE4YzM2YWJmODE5ZTdiNzE0ZjRjOGVhMDA4ZjdkNCBsZWdhY3ktdHJ1bmsKKzEwMTM3IGY3NWZmOGQ0NDM0ZDg3YjUzNTNiNmVlYjRjNmYwYjBhYjQ0ODM2NGYgbGVnYWN5LXRydW5rCisxMDEzOCA4NjkzNzNmYTBiZjhiODY0ZDRjYjc5ZGY3ZDJhMzcxOTI1NmE1MGY1IGxlZ2FjeS10cnVuaworMTAxMzkgZjAzZTY2NWQ5ZjcyODg5ZGJkY2ZhNjJjNDA4MmYwNzRlMjU1ZDQ3YyBsZWdhY3ktdHJ1bmsKKzEwMTQwIDQ3ZGRlYjA3OTU3NTQ2YjMyMDczMjA2ZGZjMjc2NjM1ZTA0NWY0MjkgbGVnYWN5LXRydW5rCisxMDE0MSBlYTJkMzIxN2QwYzcyMTM4MWUwOTFiNjAzNDA2OThjMzZkZjlmNDAwIGxlZ2FjeS10cnVuaworMTAxNDIgYWNkMzkzYTkzZWQwNDRhNTI1NThlMTFhMjU2NzNiNmE3OGQyMGU4ZCBsZWdhY3ktdHJ1bmsKKzEwMTQzIGYyODU1ZDJhY2JkMzk5NDRmMzkyNGJmMjYyMzljODQ4MzU1NTM2YmIgbGVnYWN5LXRydW5rCisxMDE0NCBhYmFlNjhhZjMzNGY2NTJhMzI0YTRmOWY5NDRiOGZkYTQ4ODdiMWE0IGxlZ2FjeS10cnVuaworMTAxNDUgYzkzOTRhZWFhYzZhZGMyN2NmZDJiMzY1N2FhMWI4MjM5Mzg4YTY4YiBsZWdhY3ktdHJ1bmsKKzEwMTQ2IDM1ZjI5YjdkYWNmNTE4YzUyYWI0YjY3NTg2ZjNjN2MwMjZmOTZjYjMgbGVnYWN5LXRydW5rCisxMDE0NyBhZDM0NjcxY2Q0Yzk2MjllNDZmZGYwMjQ2MWEyYWM2YTM0ZjEyNWUzIGxlZ2FjeS10cnVuaworMTAxNDggMWY4YzhlMGJiNWVmNjAwZDU3YmUzNjdiYTYyNTkzMzY5OWMwNjliMyBsZWdhY3ktdHJ1bmsKKzEwMTQ5IDhlNmE1ODAxOTg4NzNlNjBhMGIwMzBkZWVjMTBiNDIxMDZlODgyYzYgbGVnYWN5LXRydW5rCisxMDE1MCAwY2YyZmZhZjRiZDdjNTBlZGJiNDU0ZTI0ODgzMjkwMDkxNjkzZjRlIGxlZ2FjeS10cnVuaworMTAxNTEgMWZiODY4ZjI1NDU5ZmUzNmUyMzA0ODA2NDhiYjliYjc3OGRiNWFiMSBsZWdhY3ktdHJ1bmsKKzEwMTUyIDUyOGUyYjk0ZThiOTg3M2E3NjNkMjM3ZGI4Nzk2N2M0ZDZlZTk1ZGMgbGVnYWN5LXRydW5rCisxMDE1MyAzNTdiNzdlMzQ1ZjM2NTYwZjJlYjY4NWU4NGYxOWM1MTdiNGVjODA2IGxlZ2FjeS10cnVuaworMTAxNTUgNzEyMmZmNGM0YWJlNjljYTJmYTMyZTMwYTQ1MWE3OTliYTU5YTc5ZiBsZWdhY3ktdHJ1bmsKKzEwMTU2IGJkY2Y3MDhhZTRkYWU4Y2M5ODdhYjUwNjMyZmUyMTc5MDI5MjI2NTUgbGVnYWN5LXRydW5rCisxMDE1NyA3MmYyYWJhY2YxNTFlNDE4NDhlZTkxOGEyNTM1OWFiMjQyYzYyZTE1IGxlZ2FjeS10cnVuaworMTAxNTggNDAzMDA1OWNmOTdjMTM0MTBhMzBhNWZjNzVlNjM4OGJjMzNiMGJkNSBsZWdhY3ktdHJ1bmsKKzEwMTU5IGE2MTAxOGEyYTUwMmE0MmZkOTRhMzk0MzY3MzA0MGM3OTc5MmU3MDYgbGVnYWN5LXRydW5rCisxMDE2MCAyYzljMjQ4NTgxYTIwMjNkZWMyYTE0NWNiYTg4MGIyMjc1ZWYzZGRhIGxlZ2FjeS10cnVuaworMTAxNjEgZTFlNzY3NjZkOGNhZTE1NjAyMDgwMjM2MGVlZDU2MTVmOGQ4YTUzMiBsZWdhY3ktdHJ1bmsKKzEwMTYyIDUzMzRlZWYxOTc0YzA1NWNlOTFmZDUwOTBhZDAyMzY1YjNjMzY4YzcgbGVnYWN5LXRydW5rCisxMDE2MyA2YmY3NDI2NGI5YzBjMzE1NDVmNzE3NzU1ZTI3N2E1M2EyMDc2Yjk0IGxlZ2FjeS10cnVuaworMTAxNjQgZjBkMzNmZGIzOTIxOTNmN2ViYWU3YTgzMThmMTk5ZTVkNzQyNTJhNiBsZWdhY3ktdHJ1bmsKKzEwMTY1IGFmZGNiZWYxN2VjMGZkMDY5NDM1MjkxNDY1NzE4NWY0MmQ2NzlmNWMgbGVnYWN5LXRydW5rCisxMDE2NiA0ODM5NzAwNjI5MTUxMTVhYWMwNDhmZTczZGQ0M2YxNzc5YWRkYzU0IGxlZ2FjeS10cnVuaworMTAxNjcgYzJlMWRiMWUxYmI4ZmJkMWNhYmUxNDgzNWY2Njk2ZTk2ODkwMjg0YyBsZWdhY3ktdHJ1bmsKKzEwMTY4IDA0ZDczOTc5NzBjMjA2N2E3ZmU0ZTViNTM3ODYwN2QzNWQ3YTc3N2QgbGVnYWN5LXRydW5rCisxMDE2OSA1NTRmMmI4NzlmYmIxMWNiMjBmMmYwOTdjYWQzYzNjODEzMGU2ZDA1IGxlZ2FjeS10cnVuaworMTAxNzAgZjkyNDcyN2NkMDBiNmFkOTlhNmFmNWU1OWYwODJkNjE3MTU5ZmMwMSBsZWdhY3ktdHJ1bmsKKzEwMTcxIDliZjgxZDkzYjk5NWI0YzE1YTU2ZWQ5MmQ2ZDI3OWU4Y2YyYWQyMjEgbGVnYWN5LXRydW5rCisxMDE3MiA1N2E0MjE4Mzg5N2RjYTg1MjUyMjdlODBhMjNlOGZjMTkxYWU5ZGQ1IGxlZ2FjeS10cnVuaworMTAxNzMgZmZjZGNmOWZmMGViYzY2YWE3ODIxMTM0ZDVhZjZlMDA2ZTEwZTA5OCBsZWdhY3ktdHJ1bmsKKzEwMTc0IDVlM2M5ZDUzMGJjMWQzYmI0MDJkNGY2MmU3MjAxZWU3ZTA5MGE0MWYgbGVnYWN5LXRydW5rCisxMDE3NSAxY2VkMDM2NzE1NzQ5ZWQ4ODA3Y2M0N2QzNWE4NTQ4ODkzMGVjM2Q0IGxlZ2FjeS10cnVuaworMTAxNzYgZDIzYmZlMDYxNzVlZWU3YTlkNjNjYjY2M2M2M2E4NDdkN2I2MmMzYSBsZWdhY3ktdHJ1bmsKKzEwMTc3IGU0MGYyYTZlNTI2ZGQyZGMwZDM3NWM0OTZiMGU5OWE4NDNiNmFjNzYgbGVnYWN5LXRydW5rCisxMDE3OCBhYmU3ZjFmNDc2OGIwMWMwZmVlYjQ5MDlhNTJjYjRkYzlkZGZhNWNhIGxlZ2FjeS10cnVuaworMTAxNzkgOTZiN2MxMzIzZDMwYWVjOWM1OTM0YmJjN2ZmOWQ4ZjJlNmZlOGY4ZiBsZWdhY3ktdHJ1bmsKKzEwMTgwIGFjODc3OTY4NTYyY2NkZDFjYjdjNjk5MTg0YWQ1NzVjNTNhNTdjMzYgbGVnYWN5LXRydW5rCisxMDE4MSAyY2M0YmMwY2QwMzY3NThlZDAwNWYyZGRkNzM5N2M0YmQzNDdkYjUyIGxlZ2FjeS10cnVuaworMTAxODIgNGI4MjllNmMwZGM1NTVhNTAwYWM2OTMwZWEyZDAzNmUzOTY3MTI5NyBsZWdhY3ktdHJ1bmsKKzEwMTgzIDJjZDE0NmUyYTNhMGRiMjA2NjM1YjExOTk1MjVkYjFkN2JhMjMwOWYgbGVnYWN5LXRydW5rCisxMDE4NCBjOWQ1NDY4MDllNGY4ZTM3MGE1MmJjZmUwNjg1MTZkMjUxNTA3ODIzIGxlZ2FjeS10cnVuaworMTAxODUgYTAwM2UxNGZlZDg3NzIzOTMyNTQ5ZjFjMmMzYjRhZWMwZTFkMWU5NyBsZWdhY3ktdHJ1bmsKKzEwMTg2IDU1ZTNmODkxZGJiNWQ3ZGYyY2Y5MmMyOWFiY2I3ZmQ2NWIwYWE1NjQgbGVnYWN5LXRydW5rCisxMDE4NyAyMzYxNDY1MGUyOWIxZGVlZWNjMmY3ZTE4OWI2ZThlNDg0Mjg1ZjZlIGxlZ2FjeS10cnVuaworMTAxODggNDk5MWFhYWIxN2JkZWY1NTEyZWJlM2YxNGJlZGMwNDYyYmY5ZDRkZCBsZWdhY3ktdHJ1bmsKKzEwMTg5IGFiYjgwMmMyMTZhZDI0MzY2NTFhYzZhMmNhMzEyMzU0MTZlODdiMzQgbGVnYWN5LXRydW5rCisxMDE5MCA3MDZlNGI5NTQ4NjI0OGE3Zjk1MTVlN2FiZDFiYzA3NGI2YTM3MTFjIGxlZ2FjeS10cnVuaworMTAxOTEgNTZkY2ZjMjc3MTBhYjZlZjNiM2U2Mjk5ZTU1ZmQ5OTk2ODhlMWFlNiBsZWdhY3ktdHJ1bmsKKzEwMTkyIDBjYmM5ZGY4ODJiNmJkZGY0ZGE0NTE1ZTlhNGU3OWZhMjhjOTRkNDEgbGVnYWN5LXRydW5rCisxMDE5MyAyNGZmNjlhZDRkYTIyMzlmZTJkZjZmYjQ5ZmJmODVmYmU5NzljMzU3IGxlZ2FjeS10cnVuaworMTAxOTQgOGRhNzFjNTE1NzE2YWRjZDYzY2E3NDhkYjE0ODRkOTU1ODA4MzcxOCBsZWdhY3ktdHJ1bmsKKzEwMTk1IDM4OGIwOTdiZGRiOTU1MWFjNzY4YzFiOTc2YjBlZDkwN2E1MjQ0YmIgbGVnYWN5LXRydW5rCisxMDE5NiA5MjcxMzQwYzdlMGNjOTg5NDA5YjhlNzk0MzFlZjYyMDAwMzQwMWEzIGxlZ2FjeS10cnVuaworMTAxOTcgOTk1YWVhMDkyOTE3MzNhNjU4MmQzODdjOWFhZDI3Nzc0MzgyMmViNSBsZWdhY3ktdHJ1bmsKKzEwMTk4IGY4MzQyNWNjN2U5Njc1ZTE4NDA4MTU1M2FkM2JkMGI1YzI2MGUwYWMgbGVnYWN5LXRydW5rCisxMDE5OSBkMjFkYzU5Yzg2ZDc0ZDBiMDFiNDBhYmQ5NzY3M2U1MDdmODMwMmM5IGxlZ2FjeS10cnVuaworMTAyMDAgNWM3YmNlMDUzZDAzODg2ZWZkOTJmZTU1ZTc2NWVkYmFkYTE0N2Q1ZiBsZWdhY3ktdHJ1bmsKKzEwMjAxIGYwOTNmY2ZkNTYyNWUxZGI5NDhjNDI1ZTZjYjI3NmJjNTgxMDFlNjUgbGVnYWN5LXRydW5rCisxMDIwMiA2NzMxOGQzZmE2ZGNkNjRhMzllMzBkZTA5ZmViZDUxZTQ5ZTAzMTFkIGxlZ2FjeS10cnVuaworMTAyMDMgZDEwM2MwMTgwYjJkZTA2ZTU1ZTQ0ZDEwNzU5N2NjNDE1NzZkY2E3ZCBsZWdhY3ktdHJ1bmsKKzEwMjA0IDFiYjk0M2NkMmMyM2RjN2QzM2ZhNzYwNjU0MjRmYTIwNjk2ZTFjMWYgbGVnYWN5LXRydW5rCisxMDIwNSA2NjMzNjdjYTEzZjgxNjQwMWZjZmY4YTJiYjJmNDAyNWM5ZmI5YThlIGxlZ2FjeS10cnVuaworMTAyMDYgMDk1NjM2YjhmYWI3ZTgxMWU3NzI3YzJkZWY5MDA3MWZiZmVkMjM3MSBsZWdhY3ktdHJ1bmsKKzEwMjA3IGNiMjU2Nzk4MzQ3ZWI5NWM2MTkyYzZjZGE4MTYxYjE3MDc0MGYwMmIgbGVnYWN5LXRydW5rCisxMDIwOCA1MmRhYTcwYmIwODQ5MzQ1MjA1MzdiNWY5YWUyMmQxYTRiMTM1M2MzIGxlZ2FjeS10cnVuaworMTAyMDkgODk1ODJmYTE4MjRmYmE5OTU1N2IwMmU5YzdkZjAxNjBhMTk0NDAyYiBsZWdhY3ktdHJ1bmsKKzEwMjEwIGMxMDlkNWNhZDEwMDc1NmY1MDU5NTk2MTFjMGI0ZjQ0ZTgzYzUxMmEgbGVnYWN5LXRydW5rCisxMDIxMSA5YzM3ZWQ4ODY4YjllZmJiYzk2OGY5ZWE1NGY4ZDJlMjMyZjIwNDc0IGxlZ2FjeS10cnVuaworMTAyMTIgYjhlMWUxMDU1NjQ5ZDYzNzc4NTZmZDYyMzY0YTlhMGNiNWE5MTUwYyBsZWdhY3ktdHJ1bmsKKzEwMjEzIDMwZTMzMTQ5NjkzMGI1YmFhOTUzYmNmYTJhMTAxNjI1NGZmNThkNGIgbGVnYWN5LXRydW5rCisxMDIxNCA3MjViMzcwZTg1M2YwZTFmMGNmYWYzNTUxMDcwN2ExYTk2MzQ0NDJhIGxlZ2FjeS10cnVuaworMTAyMTUgN2E5YWZhYmE4OGQ4NDJjYzM5ZTZiOTBhN2MwNjY4ODM4NWYwMTYyNSBsZWdhY3ktdHJ1bmsKKzEwMjE2IGVkMzIwMDAxYzI5YTg3NzFlNzA1ZjI0MjA5YTA2ZGU1ODM2OTllMTAgbGVnYWN5LXRydW5rCisxMDIxNyA1ZDdlNGQyMGM4OWVkZDk5OGI4MGIwNTBjN2QzMTFkMzUwNzI5Y2ZiIGxlZ2FjeS10cnVuaworMTAyMTggYmJmZDk0NmIwYjM4YzhmMTZlNWU4N2MzZTA2OWE5NTQwOTUyNzRkZSBsZWdhY3ktdHJ1bmsKKzEwMjE5IDEwOTFiYTJiYWVhNGEyOWNhNzk3YjMzMTI2NjRiNzhlMmQzNGNlZTQgbGVnYWN5LXRydW5rCisxMDIyMCA0MjNiZTdjZDA0Nzk1MjJiMGMzYzVjYjVmZWRmM2NkMWQzNjc5ODkzIGxlZ2FjeS10cnVuaworMTAyMjEgZTI5MDI5MDI5NDE0YjJhOWM1ZTY4MGM1NWM2NjViMjc4NWY2NWQxMiBsZWdhY3ktdHJ1bmsKKzEwMjIyIDViZjY2YWI0ZGZiNmY2OWM1MjEzYjE1M2M3YjYyOTZiNmZmNjAyMTIgbGVnYWN5LXRydW5rCisxMDIyMyAyNjlhMzI3ZDYzMDVmMjdkNTBmZjQ3MWQyODAzM2VhZjViODI3Mzg2IGxlZ2FjeS10cnVuaworMTAyMjUgYzQ5ODQ1MWM1ZjU2NDE2M2MyNDE4M2U3ZTc5OTY4ZWQwYjFhOGY2YyBsZWdhY3ktdHJ1bmsKKzEwMjI2IDQ1YTNkYWJmMGZhODNjOTAyZWYxM2M2MDQ5OTZjYWUxYTI0ZmViMWUgbGVnYWN5LXRydW5rCisxMDIyNyA3OTJiZmQ0NzNmNTE2ODhkZDI0ZmI5MzQyZGYwMjAzMGJkY2QzODNlIGxlZ2FjeS10cnVuaworMTAyMjggYWVkZDJkMGRjYjMxNTQzYmM1M2U4MmM2Y2MwNmZjZjYwMmNlOTY5NCBsZWdhY3ktdHJ1bmsKKzEwMjI5IGE3M2VmNzIwZmI1NjYzNmY3MzYwYzg3ZWI0Y2NmNjQ0OGI0N2FjOGUgbGVnYWN5LXRydW5rCisxMDIzMCAzYzA4ZmI5ZTEzNGY4MmNjODg4OGViZjNhZTlkNDRlYmU5Yjc2ZmIwIGxlZ2FjeS10cnVuaworMTAyMzEgNjk3MmU1MGYzNDgzZTUxMzUyODZjMDNkM2M2OTA0ODJjMzY2ZDAzOSBsZWdhY3ktdHJ1bmsKKzEwMjMyIDBjODM3ZGFiNWI5ZWFjNWRlNDg1ODE3MjA3ZDFlMDZhYTczMWJkZjUgbGVnYWN5LXRydW5rCisxMDIzMyBiNGIwZTRlNzU5YzU4MWYwODE1ZGVlZDVjNjBmNDljNzRiMzhlNzliIGxlZ2FjeS10cnVuaworMTAyMzQgOGVmMDY3NTU5ZDVhMzgyZjZiNzAwZWM1MGE3MDY0YTZmYTBiNzc5NyBsZWdhY3ktdHJ1bmsKKzEwMjM1IDAzM2RiZTkwOTIxODE1NDFkYTVhMWE1ODdjYWRkM2I0YmY0Yjk3OTMgbGVnYWN5LXRydW5rCisxMDIzNiBmYjRiNGQwNjljYzdjZGI0YjY2NTMyZWI0OWQ3N2FkMDZkMjdiZGZmIGxlZ2FjeS10cnVuaworMTAyMzcgYTQxOTMzNGYzYjM5N2I2NGVhMGJiZjg0ODI4MzYxMGQ0MTBmY2M2NiBsZWdhY3ktdHJ1bmsKKzEwMjM4IDc4YzI3ZTMxYWM3Yzk4MDZlYzMwY2M0ODQ4YjNmZjdkNDIxZjFhOTQgbGVnYWN5LXRydW5rCisxMDIzOSBjMzEyNTdiOTI0NDdlY2U1ZDc0NzY4ZGE4YmEyMmUzYWM4NmRkZjUwIGxlZ2FjeS10cnVuaworMTAyNDAgYTVlMmJlYmUxNzlhZTc2ZmI2YTJiNzEyNzNkZTk5Mjc2NzhkMjYzNyBsZWdhY3ktdHJ1bmsKKzEwMjQxIDZiZmE2NTBmMzExZGY0NmU2NzIyOTUxZmY1NmJhY2EzYjNiODI2OTIgbGVnYWN5LXRydW5rCisxMDI0MiA0NThhMzNhYmIzOWMxYWVhM2FkNDk2MDAxMjBkOTQ4MjQxZWQ1N2M2IGxlZ2FjeS10cnVuaworMTAyNDMgYWNmM2I5NTBjYjQzN2QxYjdlZWRkMTE2MThmZTNiNDM2ODIwN2ZlMSBsZWdhY3ktdHJ1bmsKKzEwMjQ0IDljMDJlMGEyNjUxMWE0ZmYyYzg1M2IwNzI0ZjBmOGI5NWMxMjA1ZTcgbGVnYWN5LXRydW5rCisxMDI0NSA5ZDBkYzExNzc1YTRlNDdhZTU0Yjk3NDZmNTcyMmU0OWU3OTdlMDZlIGxlZ2FjeS10cnVuaworMTAyNDYgOGI3ODY1M2JhZjFmZDEyMmI5ZTc5YmQ5OGJhOGUzNzRiMTk2MjhhNiBsZWdhY3ktdHJ1bmsKKzEwMjQ3IDU4N2QwMTc4ZjhkMzY2ZjAwOWMzY2YyZTRlNmY0ZDQ2YzkzN2Y3NzIgbGVnYWN5LXRydW5rCisxMDI0OCA3ZmQ3OWRkZmJiOGI4ODRlZjk2NGNhNWEwNjcwYzA2ZGJkNmNjZGViIGxlZ2FjeS10cnVuaworMTAyNDkgOGYxNzc5MzNjNDFmYWIzYzMxOWY1N2I4ZmE0NzMwMmU1NTBjN2Y0OCBsZWdhY3ktdHJ1bmsKKzEwMjUwIDQ2OWY2NjkxOGRkNmNiYmU1MmZmNmRlNDVkMjg4NjE5MmE1OGQ3M2YgbGVnYWN5LXRydW5rCisxMDI1MSA5ZjQ2ZTcwZWJmYmIyZDM2NWE2NjZjY2Q3OGI1MzhjYzRhZWIxOGYzIGxlZ2FjeS10cnVuaworMTAyNTIgNzA3ZDA2MmNhZTdiZmYxZWQ3ODU4NTE5YzJiNmJjNjU1Y2QzMGUxYyBsZWdhY3ktdHJ1bmsKKzEwMjUzIDkxNzI5MzFmZDgwYTQ4YWM4NzEwYWRiMThjMDI3M2Y2MGY3MzRhN2MgbGVnYWN5LXRydW5rCisxMDI1NCA4YTU2NzQxMmIyMWJiYWVmNzNhYmZlNjM1NDQxZjVkNDZhMDk4ZWQ3IGxlZ2FjeS10cnVuaworMTAyNTUgNWZiNjlmZjI0Y2RkYzEzY2I3NGUyZTdmYmFiYTViZDZhODJkMjQxNCBsZWdhY3ktdHJ1bmsKKzEwMjU2IDU3ZjExYWI0ZTI5MjFiMTQyMDIyMDNjNDk3N2M0YmUwMWU2ZTNlZTEgbGVnYWN5LXRydW5rCisxMDI1NyBkYjk0YjE1YmQ2NDAwYmU1MzBmNmMzZjk2NzIwMDliY2U3YmQxNTRmIGxlZ2FjeS10cnVuaworMTAyNTggNWUyMTU4OTRjNTU1YTI3Mjg5YTBhZGMwOTJmNzkxMDM1NGVhYzg4MSBsZWdhY3ktdHJ1bmsKKzEwMjU5IGIxN2QyMDBlZGY2MjdiZGY1MWQ1M2E4NWU2YTllZDViOTdmNjgyMzEgbGVnYWN5LXRydW5rCisxMDI2MCAxYzQyMDY5OWQ1OGEzYmEyZTIyYzY2NTdkNDNkMWY0OTlkZWQ5N2MxIGxlZ2FjeS10cnVuaworMTAyNjEgM2UxMTk4ZDIwZjljZTEzMzc1N2M0NDMxZWY1OGIyN2RmZThjYTc4OCBsZWdhY3ktdHJ1bmsKKzEwMjYyIDM2YjNiNjg3NmE1ODBlYjBkZmNmNDJjOThkMzQxMzk4ZjFhODVjMjUgbGVnYWN5LXRydW5rCisxMDI2MyA3ZmMzMmE2NjI1NWE3N2FjZjUwZDFlYTRlZDM1ODYyY2QxNTMwNTMyIGxlZ2FjeS10cnVuaworMTAyNjQgY2ZlNmY1OGRkMGQ4ZWY5MjBlMWFkMThlOGNhYjliNDFiNmVkOWFjMCBsZWdhY3ktdHJ1bmsKKzEwMjY1IDgwYjI2NzQ4MzgyOGU1ODIwM2QyMTNhMmZiOGUwYmU3NTk5ZjgwMTIgbGVnYWN5LXRydW5rCisxMDI2NiAwNTY5MmM2NjE0MzRhMTVkOTVjODE5NDQyZTkyZjk4NzA1Yjg0ZjVlIGxlZ2FjeS10cnVuaworMTAyNjcgNmFkZjkxN2VlNzczMGQ3MzlkMDYxNjBmZjZlZGJlYmVhNjQxYzAwYSBsZWdhY3ktdHJ1bmsKKzEwMjY4IDQ0ZmM3ZmZkZmM3N2ZiZWE3YzMzZTc4YWQ0OGIyNjg5OGZhZGMxODcgbGVnYWN5LXRydW5rCisxMDI2OSBiMWMwOTE1MDE0MTEwZmJmYzZhZDlmZjhjNjIzNmFiODA5OTgwYmFlIGxlZ2FjeS10cnVuaworMTAyNzAgODhjNTM5MjFiZjg4MDllNjZjNTgwN2RjMjE4YTJkY2MxN2NkZWQyMSBsZWdhY3ktdHJ1bmsKKzEwMjcxIGI5ZTMxMTIwYTBjNGVhZTllNWM2ZTY1NTE2NDEwMmUzMzlmNmY2MGIgbGVnYWN5LXRydW5rCisxMDI3MiAyM2QwNDkwMDI1Njg5NTE3YWIxNmQ5NjhiMjljNzhiNmU0Nzg2MmI4IGxlZ2FjeS10cnVuaworMTAyNzMgOGQ0MTQ4MjEzY2MwMmE2ZGMxOTM1ZjljOGVlOGI1OGYxMjRkMGVjMCBsZWdhY3ktdHJ1bmsKKzEwMjc0IDA3NDUzMTQwYTA5NTUwMDg4ZDFkZGI3YTc1N2YxZGNlODg0ZDBkZmEgbGVnYWN5LXRydW5rCisxMDI3NSAzNzVhOTAxMDY1YzFiODc3YTU4Nzk3YWYyYTVkMzY4ZDMwMDVlMDQxIGxlZ2FjeS10cnVuaworMTAyNzYgNDMzYzM4MWMzNzAwZTNiMDE2NTk4NzA2ZjUyYzljNTZiZTRkNzNiYiBsZWdhY3ktdHJ1bmsKKzEwMjc3IDY4ZTJiMGRiYmVjOGViNjIwYTJiOWIwZGZlZDQ0MWM0M2QyMDA3ZWYgbGVnYWN5LXRydW5rCisxMDI3OCAwNjhhNzc2MmUyODYxMzE2Y2JlZDY1OTU2ZTM2ZGZlOWQyMGI3ZDY4IGxlZ2FjeS10cnVuaworMTAyNzkgNDlmMTFlYjRlYjlhMzMyMjMzYWFmNzljMDM3ZjRhNzUxOTdlNTg1MCBsZWdhY3ktdHJ1bmsKKzEwMjgwIGNmNzIzOTkxZDc1ZmFkMTZhYjJmM2U4ZDEwOWVjMzUyMDE0ZjNjYzQgbGVnYWN5LXRydW5rCisxMDI4MSBjZjQyMDFlZjczYWEyYzZhYjRmNDllYmFhNzI5OTlhYzUxNGUxMWI3IGxlZ2FjeS10cnVuaworMTAyODIgMDQ3OTk2NjY2YzgxODk4YjAzNDE4OGEyYzMwYzFiNGZiNWNjZmE0YSBsZWdhY3ktdHJ1bmsKKzEwMjgzIGRmZmUxZTQ3MGU2Y2YzY2YxMTcyNDhiNzFlZTM0YWNmYzU3NzBjMjQgbGVnYWN5LXRydW5rCisxMDI4NCAwNjYwZjE3YWRlNjAzY2EyYTRmZmQxOGIzNjY2ZTE1Y2RjZjJkZjQ4IGxlZ2FjeS10cnVuaworMTAyODUgNmQwNGU4YzgxN2ZiZWZhNjBhNWRlOWQxYzFlNTExMDE2ZDM1YTA3ZiBsZWdhY3ktdHJ1bmsKKzEwMjg2IDRjNmRjMDdmMWI2YTYwY2NiZmMwYzExZTgwY2QxNWNkYzQyMTgzMjYgbGVnYWN5LXRydW5rCisxMDI4NyA4MWY5ODE4ODAxMmU0MTlkMDgxOTY4NDkyY2NhYjUzNzRlYmRlNjNjIGxlZ2FjeS10cnVuaworMTAyODggNWQxNWY0ZmQ2ZDY5ZmVlZTYzMTQ2Yzc0MTE0YjBkY2M4YTM4OThhZiBsZWdhY3ktdHJ1bmsKKzEwMjg5IDcwY2NiYmNjMTBjY2FkNDE4OTE3ODE1ZGRjMmM4YjE0ZGNlMmNkOTYgbGVnYWN5LXRydW5rCisxMDI5MCBlNTgwYWZhMWM4MzM4MGIyNDQyZGU2ZmUwODVmMTI2Y2UwY2ZkYmI0IGxlZ2FjeS10cnVuaworMTAyOTEgOTk2N2JlMWY0MDJiMWEwNjEzNDlmZTMzODhhMzE4YWEyY2IyOTFjMCBsZWdhY3ktdHJ1bmsKKzEwMjkyIDQxMmU2YWIwM2M2ZmZhZDk5MDgzMTcxZWFmNmUzMDAwZDQxMmM1MGIgbGVnYWN5LXRydW5rCisxMDI5MyBjMDQ3MDg0NGM3YmM3YzZlNWI3MDgwZTk4M2Y0YzIzOTRlZTE2MGQyIGxlZ2FjeS10cnVuaworMTAyOTQgNjQzMmNiYWQ4MjhkYzljOGJmM2E0NTU0YjU1NWEwY2IyZTMzZjU0ZCBsZWdhY3ktdHJ1bmsKKzEwMjk1IGE3MjdhZTZiZmU1MGM1ODgwNTRkMDk2MWNiMWEzNmQwN2Q5MGI4MTQgbGVnYWN5LXRydW5rCisxMDI5NiBjYzQ5NDJmMGVjNGM5NGNiYzk3YTllMGE0YTk0MDk5MmU0ZmZhNDIzIGxlZ2FjeS10cnVuaworMTAyOTcgNTEzMjI1OGRhNzhlOGFmN2JlODkzMzU4NzkyMmEyYzUxNTAyNmZlYyBsZWdhY3ktdHJ1bmsKKzEwMjk4IDQ2MTczOGFhYTUzM2QyY2NjOGJlOWFkODVmYjVhODU0NThlMzJjYTYgbGVnYWN5LXRydW5rCisxMDI5OSBhMzViNTQxNGZkZDliYjZiOTc1MTMzNGQ5ZjA2YmJmMDFjNDU4MWI3IGxlZ2FjeS10cnVuaworMTAzMDAgZDdhYmFkNzBmNjgxMTRkNDIxYzY1MTQ0ZjQzMzdiMmQ3Zjk5ZWVjZSBsZWdhY3ktdHJ1bmsKKzEwMzAxIDIwOTBmOGY5ZDVkMmQ0OTYzNWM2MGQ3ZjA2OTZmMjNhZjVmNDYyNGUgbGVnYWN5LXRydW5rCisxMDMwMiBlZDg1NmZjY2Y2Mzk3ZmZlOTQ3Y2FjMDBmNjc1YjgzOWNlYTFhMzZiIGxlZ2FjeS10cnVuaworMTAzMDMgZDFiMjM1MDRiZDk5YzNiMTQzOTZjNWQ4ZDlkMzA4ZDlmMGRmMmQ0ZCBsZWdhY3ktdHJ1bmsKKzEwMzA0IDA1NzVkNWExNzIxODU2ZDIwMWFiNmEyNGE1OTkwOWQ3ZGRjZDk1N2EgbGVnYWN5LXRydW5rCisxMDMwNSBiODVhNjc1YjY1MDNlNTg1OTc5OWE4N2IwODcwNTA1ZDk0ZmEyODQ0IGxlZ2FjeS10cnVuaworMTAzMDYgMjlkYzVkMTkyOGJmZTFhMjE0YzA0ZjRiY2ZhOGFhNDEyNTYzOTVhMyBsZWdhY3ktdHJ1bmsKKzEwMzA3IGI3MWQxYmRkMTg3ZGVlNmM5NzNhZWNmNGZkN2ZkYmY1MjY2YTgxMmMgbGVnYWN5LXRydW5rCisxMDMwOCA5ODZhNzRjM2EyMmNhMGZhN2U0MzI0YzA3M2U1NDM1OTk5NmZkOTM0IGxlZ2FjeS10cnVuaworMTAzMDkgOGYwZTI5Y2U1OWVmNDE3OGU3Y2ExNTA4YmRiMjExOWJlY2ZlZTdjMCBsZWdhY3ktdHJ1bmsKKzEwMzEwIGUyZmIyNTc4NDUzMDQ5ZTA5NDc3MmFkNjYxM2FkZjE4ZjU3NjllNWEgbGVnYWN5LXRydW5rCisxMDMxMSAzNDI5OWUwOTZlMzUzOTBhMzQyZGM3OGQ4NmI5ZjQzNmE2NDhmNmE3IGxlZ2FjeS10cnVuaworMTAzMTIgMWY4ZjIwMDJiZmI5ZjA1YTUwYTU3YWVmNzllNDYyZmI5YjhmYTU2YyBsZWdhY3ktdHJ1bmsKKzEwMzEzIGQxNGI3MTIwYzU1MThkMWVkYmUzMzRjNzJlY2QzZjY0ZTVkMmQ3NmUgbGVnYWN5LXRydW5rCisxMDMxNCA2NDNlOTcyOGFhNDkyZTg0NmU1YTkxNjkyNTY4ZDM0MDZjOTdmZTk0IGxlZ2FjeS10cnVuaworMTAzMTUgMTQ3YzEwNjdjYTMzZDE0ZWE5YjU5NWE5Y2I3MzczNzZiNmQ5ZGM1MCBsZWdhY3ktdHJ1bmsKKzEwMzE2IGNhNzM1Yjg0YTkzOWE1YTM0ZDFlMDMyOTQ0MGRhNWM5MGJmOGJlMTUgbGVnYWN5LXRydW5rCisxMDMxNyA5OGY2ZWQxMzFiNzVjZWY0M2Y4NjcxODVkYjNkNDVhMzk2MWYxNDI2IGxlZ2FjeS10cnVuaworMTAzMTggNTRkOGU4NWQzYzI4N2RjMjU0MDc3ZTFkYjcyYWQwN2E0ODYyZDQwMiBsZWdhY3ktdHJ1bmsKKzEwMzE5IGZjOTUwNDMzZDE1OGU1NmZkMTQ1YTU0NzcyOWFhYjM1ZGVjMTFjYjUgbGVnYWN5LXRydW5rCisxMDMyMCBkNGY1MzIxYjlkOWU4NTZmYzJjNmYwMDk3YTcyMjM5YTAyMWU0YzJlIGxlZ2FjeS10cnVuaworMTAzMjEgYWFhMjA0YTA1Zjg0MjMyNzE1MWQyOTNjNTE0MDgyOWU5ZmY0N2RkMCBsZWdhY3ktdHJ1bmsKKzEwMzIyIGNhMTg1MDQ4MWUwMmE0MWEzMmIzODgzNjliMzg5ZWFkNTRhZDM0NDYgbGVnYWN5LXRydW5rCisxMDMyMyA0OTFlMzAwNWY1NGI1NDY4NmNiZjIyZmY3NDkwOTFmZTgxMTcyYmQ4IGxlZ2FjeS10cnVuaworMTAzMjQgYWFjNTg1ZmU5NDUyZmJkZWZjODZmNGIwNzA5MGMyYmZjOTRmN2FhZSBsZWdhY3ktdHJ1bmsKKzEwMzI1IDY3MDlhMDJmNjcxODAzOGRmMTMyZDFlMWM3NTExNzFkYWNiMDI5NjIgbGVnYWN5LXRydW5rCisxMDMyNiA5NDliNTk4MjAxODVhZjkxMWI4NzRkOTJiOTM2OTg3NDcwNzVjM2U2IGxlZ2FjeS10cnVuaworMTAzMjcgNmM2YTQ4YmM1ODE3M2U3MDRmNTZjZjhkZWFlODU4NGJlZDg3NWZlZiBsZWdhY3ktdHJ1bmsKKzEwMzI4IDNjNGY3MzZkNWUwMTBjY2Q2MjdjNTJjNWRjM2JmNTM0NGVkYjMyMzIgbGVnYWN5LXRydW5rCisxMDMyOSA0ZmJlNmM5YzVkODExZmQ0ZjNlY2NjNDU2ODVjMjdhYzg5ZDRhNTc4IGxlZ2FjeS10cnVuaworMTAzMzAgOWQzYjQwMWJhYzZkZTJjNzA5M2RiODc2ZGM2MmZmNzU3NWM3OWE4MSBsZWdhY3ktdHJ1bmsKKzEwMzMxIGRiMWU0OWQ1MWZlMTJjMjc1OGY3OTEyYTBiNzg4MGE5OGE3Mjk1YTggbGVnYWN5LXRydW5rCisxMDMzMiA2ZTRlYTBlZGEyMmVjYzliZDJmODAzZWQwNzllYzUxZWNkMTViMjQxIGxlZ2FjeS10cnVuaworMTAzMzMgZjM0YTY1OGU3YzE1NjViNjE2ZTRmOTE2Y2QzMjM5MzIyMzFhYjZjNCBsZWdhY3ktdHJ1bmsKKzEwMzM0IDI2MWM2MzliOTg0NzMyNTQ4NzUyNTYwZGNiNTZjMGVmMDMyNTc3YTUgbGVnYWN5LXRydW5rCisxMDMzNSAxZjFmOTQ5NTA1YWYwNGExMThlZWU4Yzc3YmFhZDcyZTZkMTc1MmJhIGxlZ2FjeS10cnVuaworMTAzMzYgYjc1YjJmOWQzY2UxM2U5NmE2OGQzMDY4YzVhYTRkYzljMmRkNzQ1NiBsZWdhY3ktdHJ1bmsKKzEwMzM3IDk1NjcxOWVhNWY1YTZkYmNhNGZmZjkzMmZiYTM2NzBlZTA0ZjIwMmUgbGVnYWN5LXRydW5rCisxMDMzOCBiODQ3ODUwNGI3NzliYjI3N2ZjZDM4ZTJmMmNjMDBjNzY4MmM4MzAwIGxlZ2FjeS10cnVuaworMTAzMzkgODQyZWQ2YmJkMDY2MGE3YWE5NTI1MjU0ZGViYzBhYmE0YzVhY2ExNiBsZWdhY3ktdHJ1bmsKKzEwMzQwIGIwYjMzYTM1N2M3OWVkNjQwMTYyZmI3OWRiNWQ3YmU0OGE1NDBhZDMgbGVnYWN5LXRydW5rCisxMDM0MSA5ZTEwYzg2MmFiZmMxYTI4MGI4YmFhYzZlZmFhOWNlMTM0MTg5YzU2IGxlZ2FjeS10cnVuaworMTAzNDIgZTg1ZDZkYjdiZjk3NzUwYTQwYjQ0YTg5MjI5YWFkYTY5OTlhNmM3YSBsZWdhY3ktdHJ1bmsKKzEwMzQzIGEzYWRiMTZmMDg5NWYwYjI5OWNiNzExMjYyNzFhNjk3MGU4NDRhZTUgbGVnYWN5LXRydW5rCisxMDM0NCBkNzczZGIwNjM1NWMwNjk4ZDFhZmQ3NWM3MGMwODNmMDBkYjZhZThmIGxlZ2FjeS10cnVuaworMTAzNDUgMjFhN2UzYzMyNGRmN2ZhY2U5ZmEwMDNjYTk3YzA0Y2QzYmVkNDhkNiBsZWdhY3ktdHJ1bmsKKzEwMzQ2IDE3NmI5OWU2OTY1YmU5MzI2ODYzMWVhZjVlOGMzZmQ0NjNkZDQwYzYgbGVnYWN5LXRydW5rCisxMDM0NyBiNjlmYTlkMTQyY2E1YTc4YzNkNmZlZmYyNDAwODg4NTc5NWRlNGUxIGxlZ2FjeS10cnVuaworMTAzNDggYzc2YWRhZjUxMmQ2NTUzYWViZjFmNDA3NTE3NDk4YjQ4MTkwZDA1MyBsZWdhY3ktdHJ1bmsKKzEwMzQ5IGE2MWZkYjhhNDQ5ZWUxZjAzNjNiYmVjMGU4MjhmMDMyYzBkZTVjMDAgbGVnYWN5LXRydW5rCisxMDM1MCAzMWZhOGEwZmQxNzg3MmU0MmZkYWQ3NzA5NGQyMTkwNjU1YjIxMTI2IGxlZ2FjeS10cnVuaworMTAzNTEgNmJjNGY4MDcyNWQ2ZTI4ZGI0ZjZkMzJmODc1NDkxZDg3YjE4YTY5MCBsZWdhY3ktdHJ1bmsKKzEwMzUyIGQxNTE4MWEwY2ZiYWI4NjI1YTEyODkyZGY0MWRhNDVhOWJhYzM2NjAgbGVnYWN5LXRydW5rCisxMDM1MyBiNWVkZTEzM2Q5MjE2YWVmZDQyOGM4NTEzYTNhYmQ3ZTEwNGRlMTIzIGxlZ2FjeS10cnVuaworMTAzNTQgZDA3Yjk3ZDI5YTllMzJhMTJjZDE1ODM5YTMwOGQ0YzVhNWRmN2NjNCBsZWdhY3ktdHJ1bmsKKzEwMzU1IDM5MjM4OGM1MmUyMTcxN2VmMjNlM2U5ODBhY2IwYzA2OGNlZjVlZWEgbGVnYWN5LXRydW5rCisxMDM1NiA4ZjQyNWY4ZjRiZTJkZjVkZTBjYjc3YjQ3NzVjNmFmMWZjYTViYjJhIGxlZ2FjeS10cnVuaworMTAzNTcgMGE4NzNmMmI2NGY0MTgyYTNiODIwN2M1OTdhYjhmYTI0M2I4ZjM2NSBsZWdhY3ktdHJ1bmsKKzEwMzU4IDhlNTIyMzY4MGE5ZGE0YzY4OWZiZGIyY2JjNDA1MmE4ZWVhZTBjYjUgbGVnYWN5LXRydW5rCisxMDM1OSBhYzJkMWMxZjE5NzFmMmE5M2RlZDIxN2ZjYzc1NGE2ZGYyMGY4ZGFhIGxlZ2FjeS10cnVuaworMTAzNjAgNDI3YTliMWM5YWJkOGUxMjBlMmJmMGJjOWU3ZWQ2ZjdhNmY0MDFjZCBsZWdhY3ktdHJ1bmsKKzEwMzYxIGJkZTY5ZGZjMjI0ZjBlNzM3Yjg2NjgwNjNkY2Q1NmM2ZmQxYzhkYjEgbGVnYWN5LXRydW5rCisxMDM2MiA2MzcwZjE1OTNjNzIwYjkyYTEzZGY3MjdiOWYzMWNkNWUyY2JiNWYzIGxlZ2FjeS10cnVuaworMTAzNjMgYjBmYmU2YjZkY2JmMTFiMWExMDIxMmMzOTczYTM3ODQyZDY5MjIyNCBsZWdhY3ktdHJ1bmsKKzEwMzY0IGU4MzNiZWU1ZDA1ZmIyNGU3NDAwODJkY2RkNjNhYWQ4ZGIyYzFlYjYgbGVnYWN5LXRydW5rCisxMDM2NSBkZmM4ZGU4ZjFlYzNlNjliMjgyM2NmZmRmZGM2MDk5ZThiYWU4NzQ5IGxlZ2FjeS10cnVuaworMTAzNjYgNDJkM2YxZjcxYzU2Y2ZiOTliOWJlYTAxYWNiZGJkYzBhYzAxYzNhMCBsZWdhY3ktdHJ1bmsKKzEwMzY3IGFlOTc3OGM0ZmZjYWY2MzY4ZTZlMGVhOGVhZmUyODk1MmY2NGNmMmIgbGVnYWN5LXRydW5rCisxMDM2OCBlZmJiN2U1N2U2Zjg2ZmMwZjYxMDBlNDQ4NDIyZDg0NTQyODRjMTk0IGxlZ2FjeS10cnVuaworMTAzNjkgZjhmNjYzYjQzMmI0MzU2YThiYWUyMDcwYTY2N2JiMGU4OWVmZjczNSBsZWdhY3ktdHJ1bmsKKzEwMzcwIDQxYzdkNTI0M2JlOTMxZjgzZmVkNjFiNmNmMjM5ZWQxZTk5NTMyODUgbGVnYWN5LXRydW5rCisxMDM3MSA4YTM4OWM4ZmU2ZWZkMmEzNWJhMzI3OTZkZTlkN2Y0MjMwZTZlYmE5IGxlZ2FjeS10cnVuaworMTAzNzIgMzcyMzRlMWJiNzVmZmRkZWI4NTMxYjU0ZTY4ZmNjNGZkZWY5NWQ4MCBsZWdhY3ktdHJ1bmsKKzEwMzczIGRiZDJkZTI2YzhkMjI1ZmZlYzBmYWJmZDllNzhlYTlkZjA5YWUwZTEgbGVnYWN5LXRydW5rCisxMDM3NCA4YzkzNTQ0Yjk1ZTRiM2MxYzE1Njc0OTg2ZjBiOWQ5YTI3MGQ2OGEyIGxlZ2FjeS10cnVuaworMTAzNzUgMjY3Mzg0ODQzN2MzNGQ0ZWQzYTExMDRiNjhmMjZjY2RlZjRhYWY5MyBsZWdhY3ktdHJ1bmsKKzEwMzc2IGU2MDY2YjgxM2E3MTRkMTVlOTZlNDIxNzUzMzJmNDlmM2IwZjNmOTkgbGVnYWN5LXRydW5rCisxMDM3NyAyOWFiM2Y2MDJkMDAyM2I1YzE5MzczMjZhNDc4YjhkYjUxYTE3OGFlIGxlZ2FjeS10cnVuaworMTAzNzggZGY2MzZkZWQyZTcwMmJkZGZkZjg4MjJhYThiOGM3Mjk2NGFiODZkNiBsZWdhY3ktdHJ1bmsKKzEwMzc5IDZhMDI5OWViY2NlZjkwZDAzZDRjODAwZmUzYWUxNzRiNTRjNmE4OWEgbGVnYWN5LXRydW5rCisxMDM4MCA4ZjNiYjBiMThhODJiY2U0MDcxOWM5NDRkMTMzMGZhOGI0MmNjMTcyIGxlZ2FjeS10cnVuaworMTAzODEgMWVmZWU1MDMyNTllNTFhNDhkZDAxNjYxMDNhZjNjOTU1MjY1MDk2ZiBsZWdhY3ktdHJ1bmsKKzEwMzgyIDlhMjQ2ZDc0ZmNiNzUyYTE0NmQzNGI5ZjhhMTE5MWM4YTljYjcwYTYgbGVnYWN5LXRydW5rCisxMDM4MyBhMTEwNDIxZDg2YjczMTQwMDBmYzE4OWZjMGU3Y2VhZmU3NGJlZjVmIGxlZ2FjeS10cnVuaworMTAzODQgMTczNjhjOTJjNzY5YTUzYmM0MzljMDM0MTEwMTVlOTUyYzY2NDBiYiBsZWdhY3ktdHJ1bmsKKzEwMzg1IDNiZDY2OGRmNmVmZGMyZDYzNTEzZjhlZjZlZDAyNzlkNzBiYzk1YjYgbGVnYWN5LXRydW5rCisxMDM4NiA4MGIyYWM2MWZlMDM4YThiYjY5Y2IwZDM5NDQwNDQ5YTQ5OTE3Njk0IGxlZ2FjeS10cnVuaworMTAzODcgNGI1NjY2ZGZmNWU2NzI0OTY3YTc1MzliOTI1MWM2NTExNmY4ODVmOSBsZWdhY3ktdHJ1bmsKKzEwMzg4IDNmOGI1NTY0ZjBjN2MyOWUxMDdhNTQ0MTQ1NzM4ZGIzODcwM2IxNWEgbGVnYWN5LXRydW5rCisxMDM4OSAxYTFkMzE0N2IwMjdjNGI0ZmU1Nzg3NzI2MTk3NjkyNWRlZjVjYTVkIGxlZ2FjeS10cnVuaworMTAzOTAgNWVhZmQzZWRhMGFmNGNhZWUwYjYyMjUyNTEzZmJiZDdlMDVhNzA2MSBsZWdhY3ktdHJ1bmsKKzEwMzkxIGI3MWExMjU3NzY0YjAzMjU5MmU2MzcwMjVlY2Q2NTcwMjY4M2U5MDYgbGVnYWN5LXRydW5rCisxMDM5MiAzMWY5ZTI2NzUxOTllMTk1NjJkZDhmMTcxM2JjYjMyZWZkYzVlYTBhIGxlZ2FjeS10cnVuaworMTAzOTMgNTQxOGMwNzMwZjAwOTYxNjJhNWJkZTVlMDIxZDNkZTkyZjExNDY3YyBsZWdhY3ktdHJ1bmsKKzEwMzk0IDY0ZjNlOWViZjIxYWNmMzI2ODQxMjUwZTViYzEzMjM0ZjUzMmYzNjAgbGVnYWN5LXRydW5rCisxMDM5NSAxZGFlY2Q2NWE3YzVlZmM5ZTBjZDEyNWM0YzQ4YjZmOGU4YWQ4ZWY4IGxlZ2FjeS10cnVuaworMTAzOTYgYmE5YjFiNGFlYWI5ZWU4YWFlNWU3ZWE3ODRiZmRkNmEwMmJlMTQ0MyBsZWdhY3ktdHJ1bmsKKzEwMzk3IDEzMThhNDc0YmFhMDZkZDY3ZmE2MTJlZDFhM2IzN2VmMDYyMjFmNzYgbGVnYWN5LXRydW5rCisxMDM5OCAwOTA1Zjg2NjY4MDdmMzM4NzQzYTc2ZjUzODIxOGMyMGM5ZmVjM2JhIGxlZ2FjeS10cnVuaworMTAzOTkgNWZhYjU5ZWI0ZmE1YTFjZjQ3MTlmODViYmE3MDRkMjRjNWNhODM4NyBsZWdhY3ktdHJ1bmsKKzEwNDAwIDZiYzA1MzVkYmY1Mjc3OTJmOGRkYWZhZGYzMzc3ZDQzNDQ0ZGEwOTIgbGVnYWN5LXRydW5rCisxMDQwMSBkZGUwZGZmYjFhMDhhYWU0MTg5YmIzNjBlMGQ0OTVkYjI3NjRlZWRhIGxlZ2FjeS10cnVuaworMTA0MDIgMGJkY2VkY2QxNTQ5Yjc1OTUxZWMzZWJlYzBmMTJmOTA0N2M5ZTBjNSBsZWdhY3ktdHJ1bmsKKzEwNDAzIDZiZTdhYjI0NmEwNWI0YzgxYjEyNjNhOGFhNmQyMDNkNTE4OTcyZGMgbGVnYWN5LXRydW5rCisxMDQwNCAyM2NjNmFjNWViYTZjMDc2MzFjN2M3NmM0ZTU4YTgwYWE4NGU4M2NmIGxlZ2FjeS10cnVuaworMTA0MDUgZGU5MGJiZTg1MDEzN2ZlMWVmYjc0YjViNzA4Y2I5ZGUwMThlMGJkNyBsZWdhY3ktdHJ1bmsKKzEwNDA2IDMzNDA3YzBlZjE0ZmZlNTdjMTNjNTVlNWYwMDQwYTI2ZjQ5MmI2ODQgbGVnYWN5LXRydW5rCisxMDQwNyBlMjlkNDM1YWIxNDJmMWU4NWRlY2MzMWM5ZTkzZjg2NzdmN2U5YTQ4IGxlZ2FjeS10cnVuaworMTA0MDggMTEyNmU3MmU1ZWU5YzlhNDlhMWIyZDdjODdmYzM1YjMwNTFjZTllNSBsZWdhY3ktdHJ1bmsKKzEwNDA5IGVmMzAwZTZiMGM3MWRhMGJkNWE4MWVjZDIwOGJjYjZkNzNjOTliNjkgbGVnYWN5LXRydW5rCisxMDQxMCA5ZDhjMDY2NmIwY2JiYzE0ZjRiYzg2OWE3MDUyMTkyMDJkZGE5NzAzIGxlZ2FjeS10cnVuaworMTA0MTEgODY4ZGM4NGJiNWIyOWFiZTJmN2EwZDYxNzY4YzY5MDA5NTJkMDM2NCBsZWdhY3ktdHJ1bmsKKzEwNDEyIDdjN2ZmMWEzNjUyMTdiNDUzYWUxNDUzZDQwOTQ1ZjBhZjliODBmYzMgbGVnYWN5LXRydW5rCisxMDQxMyAwNTIyYWIyMTBmY2JiMDhhNzY1MWZiYzBhNTBmMjdjNjhkYTZhYmUwIGxlZ2FjeS10cnVuaworMTA0MTQgYjJhZGNkNzNjMTUwYjgyYzUzOTk3NzRmODgwNDFjYzVkZDlmNjU5MCBsZWdhY3ktdHJ1bmsKKzEwNDE1IDcwOGRlNGNiOTZlYjIxYmRhYzhiZjY1ZGE0MDk1OGUyMDBkM2Q3NWEgbGVnYWN5LXRydW5rCisxMDQxNiBhYTdkNjlkNjdjODFkN2RhMzkzM2FlMDg1MGM0ZmUyYzFjMWZjYTQ4IGxlZ2FjeS10cnVuaworMTA0MTcgMWYzOGEyYjU0OGJmOWQwNmE2YTI1MWU4NGIwNWJlNjA3ZmI3NDVkNCBsZWdhY3ktdHJ1bmsKKzEwNDE4IGYyMjNiZjYxYjRlZTAzYjhlZjRlZGYzOWU5OWI1ZTY1MjExMWY0YzAgbGVnYWN5LXRydW5rCisxMDQxOSBjYTRlMjVlZjYxZjgwNjliZDY5YTYyNDNjZGNkNDVlM2RjYmI4NDE2IGxlZ2FjeS10cnVuaworMTA0MjAgZDNlYzJlNTFmNjdhMjFiOGU1NDMxZTE0YzNmZTczNjU5Y2RhMGFhOCBsZWdhY3ktdHJ1bmsKKzEwNDIxIDA1N2U0MjJkMmM2MTA5MDA4ZTIwOTUyN2RiMGQ0NjhkYjU1OWVhMTMgbGVnYWN5LXRydW5rCisxMDQyMiA5MWVjZGE5ZDUyNDUxZGY3M2VmNmQwNTEwMGNjYTlhMzYzZTg1YzUxIGxlZ2FjeS10cnVuaworMTA0MjMgZWUyYWFhMmY3MjJhODQ3Y2M2ZGZmOTEyMjZmZWNhOWY5MDI3NmMwOCBsZWdhY3ktdHJ1bmsKKzEwNDI0IGIzMWFiYzEzMWMzZGY5NDNmMDJmNTY0M2I1NTQ1YmUzNjNmY2NhZmIgbGVnYWN5LXRydW5rCisxMDQyNSAxNjJkYjNkMGM5MTY3ZTA5ZDZkNzY5YjA3YjEzM2JiMjEwMjA2NmI4IGxlZ2FjeS10cnVuaworMTA0MjYgZGMxMzJjYzM5NTczYTBlYTZkZjJkMjZjOTk5MDllYWZiNThjNWYyZSBsZWdhY3ktdHJ1bmsKKzEwNDI3IGFkMTE0NjIwZjhjMjc4MmQ1NzdkYjJkMDQzYzE0NzUyZDE5ZTQ4ZjcgbGVnYWN5LXRydW5rCisxMDQyOCBhMmMxYjNlMTc5NTI2ZGQyNGQwMmJkYTc3NGI1MmQ0M2JkNTE0NDc0IGxlZ2FjeS10cnVuaworMTA0MjkgZjA2OTEzODA4ZmUxZGFjZTc1ZTEyMjA5Yjc2NWNhZmYxYzE3OTY4NSBsZWdhY3ktdHJ1bmsKKzEwNDMwIDU4ZDY4MTVhZjAwMmU2NzhmZWI4NzNhOTViZTc4NjY1MDc5YWNiNDAgbGVnYWN5LXRydW5rCisxMDQzMSA5Y2JjYjU5MzFkODAzZDY4OTYwMDFlZWU1ODljZmZjNjYzMzhkNzBjIGxlZ2FjeS10cnVuaworMTA0MzIgZjQyYjc1Nzc1NWViMzJhYmViNmQ4MjQ3ODcyYmM3NDJiNTYyZDQzYSBsZWdhY3ktdHJ1bmsKKzEwNDMzIDcyZDk5NjE1NDBkODViMjAwMzY5NDlmMTRiNGE0MWMyODQ2MmY2NWUgbGVnYWN5LXRydW5rCisxMDQzNCA5MmUzNjExNmFmNDIxYmNmZWVjOWY5MDZiZmJkYmM3NmQ5OThlZGFjIGxlZ2FjeS10cnVuaworMTA0MzUgZWJkZDQwZTI4MTYwMjVjOWY5NDMyYmE5YTM5YjA5M2UwOGIyNzZkNiBsZWdhY3ktdHJ1bmsKKzEwNDM2IGNkOWU2NjRhMWE5ZmE4NGJjYzYxZDJhZDgxZTFlMmQyN2ZkNGJmYTggbGVnYWN5LXRydW5rCisxMDQzNyBmYzA4ZGEyYzlhMGZhN2Q5NjgyZTExZDEwZTVjZDM5YWI1OTcwYTAzIGxlZ2FjeS10cnVuaworMTA0MzggOGYzNjhkZjE3M2U2ODhjNDY0YzkwNjM2NDdkYmM1MGIxOTFiZTNkNiBsZWdhY3ktdHJ1bmsKKzEwNDM5IDllMTEzYWEzNzU4ZGExMDQ4YzdhY2UzMzA3ZWQyNzdjYWFhNzg0Y2YgbGVnYWN5LXRydW5rCisxMDQ0MCBmZWM4ZWIyYTM4MGRkNTE3MWM2NTUwOTY3NjU1NzA3ZTU0NzEwYTk3IGxlZ2FjeS10cnVuaworMTA0NDEgOGNhMDEwODMxNDBjYjk5MmQxMmI2Y2VkNTIzYjE2YmYxMzZiMTQ1MSBsZWdhY3ktdHJ1bmsKKzEwNDQyIGNjZDFjOTYzZTUwOTVkZGU3NDRlYzRkYTBjNDllMjA5MmMyNGVjMjUgbGVnYWN5LXRydW5rCisxMDQ0MyBkNmZjYmQzNzE4NTVlMzY0N2YxODU5NzFhMjI3MTA0YjdjZGEzN2FiIGxlZ2FjeS10cnVuaworMTA0NDQgYWZkNTRmODk1ZGMzMDMwZGQzMGQ4MDk3ZmZiYjVlZTVhNjA5YjVlNCBsZWdhY3ktdHJ1bmsKKzEwNDQ1IGQxZWExM2NmNDZmN2JjNWFjZmU0ZTNiZDJiMDI1Y2RiZDdjYjZjZGIgbGVnYWN5LXRydW5rCisxMDQ0NiBlOGQwYjg3YzhkNmIxZmIwYTIyZjU3ODI2M2FiZDk4ZjhhMTFlYTgwIGxlZ2FjeS10cnVuaworMTA0NDcgOGMyNjhkMGU4ODIyMDU0Y2NiNTNhOGNlMjlhZDcwMjY0OTI2YmFkOCBsZWdhY3ktdHJ1bmsKKzEwNDQ4IGJiZDJiNWQ4ZDBiNmMyMmJjYTRmN2UwMmIwNGUxZGZhYWQ5ODVkNmMgbGVnYWN5LXRydW5rCisxMDQ0OSAyZWY2ZTA0MjQxNzljYWZmOWEzNmU3NzU4ZDBhNzE3MjJhYzllNWY0IGxlZ2FjeS10cnVuaworMTA0NTAgMzM4ZjFkZWY0MzcwOWJmNGYzMmQ1YjhkMDFmN2Y2ZjY0NmI4M2JjZSBsZWdhY3ktdHJ1bmsKKzEwNDUxIDRjZWVlMWVmOTliMDMyODEwZmJiNjIzN2RlYjAxODc3OWRlMGI3MzEgbGVnYWN5LXRydW5rCisxMDQ1MiA0NjkyODg0OTljOWJkZTlkNTNiZjJkZDRiNDEzMzRmZjFiNGU0YjM3IGxlZ2FjeS10cnVuaworMTA0NTMgZmYxMGIwMzI4ZmYzNzUwYmIzMDMzMTM1ZDA2MzI2NGY5M2E3OWY5MSBsZWdhY3ktdHJ1bmsKKzEwNDU0IDA5MTQ4MWRiZTEzZDdjNTEyNzk4MDdiMmZmZGJjYTkyMWMxZTI0NWEgbGVnYWN5LXRydW5rCisxMDQ1NSBjMTJjNjYxZmQxNGVmNGI1N2Y1MzE3YTk0YTIzYzJiYzY4NWY2YmNjIGxlZ2FjeS10cnVuaworMTA0NTYgM2RjNWQwZmNiMTY3YWMxYzgzNWI0YTM0OWQxMTFkYTM3ODkxYTZmNyBsZWdhY3ktdHJ1bmsKKzEwNDU3IDc1MjIzNTg0NjE4MDQxNGRkZDg2YzE1N2UzNzA0ZjI1NDcyMTgyN2QgbGVnYWN5LXRydW5rCisxMDQ1OCA1MWQzMWZjYWVlZjNhMjEwMjQ4MDgzZGY3OWRiYzY1OWRiOGViZGRlIGxlZ2FjeS10cnVuaworMTA0NTkgMTQzYzU1NmRlYjJmODU1OWY1NjRkZTE0N2UwYmQyYmI2NDUxYjExZCBsZWdhY3ktdHJ1bmsKKzEwNDYwIGNjNDc3MzNiNGRkMjJjNTVkMjU4OTg3YWYxYTBiNjFjNTA2NWU1NzUgbGVnYWN5LXRydW5rCisxMDQ2MSA4NWU4ODZkYjE5YjA1OThiOTJjZDFiNWQ3N2RhM2NkZDQzNWJjMDRjIGxlZ2FjeS10cnVuaworMTA0NjIgMDk5NjNhMmEyNGRiMDg5OGU0M2JmMzMxYjMxNWFhYzRkNzg1ZDgxNyBsZWdhY3ktdHJ1bmsKKzEwNDYzIGE5MDlhMjg2OWFjNTlhMGJlY2MwZjY3M2E0MjYxZDUxMmY2MjBjMmQgbGVnYWN5LXRydW5rCisxMDQ2NCAwNjgzMDNmOTI1ZWE4NzJiZDExY2JlOTJmODI3YTY5ZDM0MDYwMmMyIGxlZ2FjeS10cnVuaworMTA0NjUgMWQwZWIyZTk2ZDc2NzllOWY3ZjQ2ZTIwYzc5NDhiNjBlYjFiZmM3NyBsZWdhY3ktdHJ1bmsKKzEwNDY2IGFiNGY2NDU2MWZiYTMyODgxMzRhNzc1YzM0ZDZkZjk5MWM5NmQyNTcgbGVnYWN5LXRydW5rCisxMDQ2NyA5NzFiNWJiZDkyZWMwMjBlYWJjMGM3MzhmMWJjNzdkNGM1YWNlMzljIGxlZ2FjeS10cnVuaworMTA0NjggNjk3ZGY5M2U1ZGRiNDc2NGNiNDE1ZjY3MWMxZTE1OTFjYmJlM2I2YyBsZWdhY3ktdHJ1bmsKKzEwNDY5IDAyNjNkMzMyNGYwYjJlOThlZjFmNjVmMjc0YzdjMmFhYmY5ZTc4NzEgbGVnYWN5LXRydW5rCisxMDQ3MCBiOWViODA1NTc5YmE4NjMxYjkxMjg2ZTMxY2I3M2M1OWFjZTE2NDI4IGxlZ2FjeS10cnVuaworMTA0NzEgZGUxMDU2NmRlYzVjZDFjMjg2ZTViZDc1ZWQyOGJjOGRmNWU5Yjc2MiBsZWdhY3ktdHJ1bmsKKzEwNDcyIDZlNTA3OWU4ZmE2ZTA1MzNkOTI5OGJlNjc1MTEyZjZmNGVjMzY4NWIgbGVnYWN5LXRydW5rCisxMDQ3MyBjZjBjZjIxYjQ1NDU0NzcxYzdlZjVjZTY4N2QwYzlmODkxYjQ1OGQ1IGxlZ2FjeS10cnVuaworMTA0NzQgNmIzZmQyNGNjMDc3NmYzMmExOGY0YWYxYTIxNTZiMTljMjRhMTMwOCBsZWdhY3ktdHJ1bmsKKzEwNDc1IGU4YzRiM2QzODZlNGYyZDMzNzJkOTVjMjFjZGY5MDk4N2Q0OWZmMjYgbGVnYWN5LXRydW5rCisxMDQ3NiBkYWZmZGU3YTY4OTE3N2YxYjExYTIwODliNjEwYTlhNGI5ODRhZGJiIGxlZ2FjeS10cnVuaworMTA0NzcgODkzNTlkMDcyZTcyN2U3MmE2ZDY0NWYxZjlkYzc4ZTdiYTg1NTA5ZSBsZWdhY3ktdHJ1bmsKKzEwNDc4IDFkNTI2NTA3Y2Q5ZWM3M2UwMDliYzY5NDJhOTNmMjhhMzM0ZmQwYjYgbGVnYWN5LXRydW5rCisxMDQ3OSAzZDFkOWUyNWViMjJjNjMyNTdmNzlhOWFhNjViOWUyN2NhNjI5ZjU4IGxlZ2FjeS10cnVuaworMTA0ODAgMDgzNWI4ZGY1NGY4MGQyMzU0NTFlMmU2YTRiNDZiNDY2Yzg4NTg0NiBsZWdhY3ktdHJ1bmsKKzEwNDgxIGJkZjU3Yzg0ZGY2YWI1MWNjMzRjOGZjYzRjYjczYzBkMWQyOTczNDggbGVnYWN5LXRydW5rCisxMDQ4MiBjOGEzMTExNDQ3MjY3YTE0YzMzMDE4YTFiMzE3NGYyOTBlMGI3NzkyIGxlZ2FjeS10cnVuaworMTA0ODMgYjQyMGFlODUyMTNjNzlmMDVjZGMzNjk1OWM3MWExYjA0NzcwZjhmOSBsZWdhY3ktdHJ1bmsKKzEwNDg0IDVkYjM0NmU5YzhmNTYwZGNlYjE2YmFhYmU0ZGFiMGVjNjQyNzFmODQgbGVnYWN5LXRydW5rCisxMDQ4NSA5MDAzMjA0OTFiOTM2YzlmY2EzZjcyMzg0NjRkMDBmY2Q2YWM2M2I5IGxlZ2FjeS10cnVuaworMTA0ODYgZTk4NjY4NjgzYmVkNjM1OGY5YzVhNzMzOWU5NDQwYjdiNGYwMTA3NyBsZWdhY3ktdHJ1bmsKKzEwNDg3IGE4NDJjOWU2MzI4MGE5NmY3Mzk0YzMxYjcyMTA5MmYzOGFkNmY2MGQgbGVnYWN5LXRydW5rCisxMDQ4OCBkYmMxMWRkMDJmMDk1OTIzNTBiOWZhZmQzMDUxNTlkYjhhMTRiYjVjIGxlZ2FjeS10cnVuaworMTA0ODkgNGY0ZTJhYWQxZTBhYjViYTBhYmMyY2U4MjZlMDQ5NzZhMjlkNGZkNSBsZWdhY3ktdHJ1bmsKKzEwNDkwIGJmNmU5MjBjMGU3OTlkMTYxMjk0N2I4YWExZWQwNDc0MjM3Y2QzMjEgbGVnYWN5LXRydW5rCisxMDQ5MSBjYTBjNzI1OTEyMTFjZDkyOWYzZjg3MTQ3YTRhYjY0NGVkZjUxODQwIGxlZ2FjeS10cnVuaworMTA0OTIgODNiYTUzMDlmZjIyNmUxYzRiYjIyZDI1ZDMxZjViY2RiYTE0OWQwOSBsZWdhY3ktdHJ1bmsKKzEwNDkzIDJiMDlhNWQyNjM2ODhkMDc3N2Y2YjZiOGVjZDkyZjMzMTRhMmZjZTMgbGVnYWN5LXRydW5rCisxMDQ5NCA1M2RkZTQyMzI1ZjhhOTk0MTMwNjk0NzU2MWJlZjk4ZDQ4MTNlMzdkIGxlZ2FjeS10cnVuaworMTA0OTUgNmU4YmU2MDk2ZTU2MzAyZmE1NzhjNmQ4NDU5YzVjNTNmYTUwNTAxMyBsZWdhY3ktdHJ1bmsKKzEwNDk2IGJiYmQwYjEwNWUyNzM1ZmVlNzdjOThmNGE4NmFjMWU0NmZhZmQyMjYgbGVnYWN5LXRydW5rCisxMDQ5NyA0Njk5OWRmY2ZhZTNmMDUwNjdmNmNiMWNkMzUzZjU3YzBjMGIwODY2IGxlZ2FjeS10cnVuaworMTA0OTggNTI2NGNhYzhmOTAzNWYyYzc0YjU0NTFiNTdmOWU2NDM3YjQ3NGY5NiBsZWdhY3ktdHJ1bmsKKzEwNDk5IDAxMWFlNzFmZWE5NjQ5YTE3YTQ4N2Y3NmI4MDdjZWFjNDFkOGFiMmMgbGVnYWN5LXRydW5rCisxMDUwMCA5Yjg5MDIzMzhlMTRiNzA5ZjIzODVhY2UxNTA3MDA3YTI1ZDI1ZTdlIGxlZ2FjeS10cnVuaworMTA1MDEgOTJiYTdhOWUzYjlkOTcxOTgyMTllZGQ0NmM4MDY4MzI2MzNiYzljYyBsZWdhY3ktdHJ1bmsKKzEwNTAyIDNiOTFhZmZhMzMzZTk4NGE2MDYxNzdkY2YxMjJlM2Q3ZTkzYTlmMGQgbGVnYWN5LXRydW5rCisxMDUwMyA1ZDJiZDY3MzhlYjYyZTU1MjVhNWU1MjdlZjM2MDcwMDA1MjEzNzFmIGxlZ2FjeS10cnVuaworMTA1MDQgZDE1N2VlODIxNzc1YzA5OTM0NTJjNzIwY2RmNGIwMmY4YjhiOWUzMiBsZWdhY3ktdHJ1bmsKKzEwNTA1IDQ5ZjFjZjRiMTc0Y2M2M2YzYzFkMmRiMzIwZDMxYTg4OWZlZDk0MjMgbGVnYWN5LXRydW5rCisxMDUwNiBkMWMxYjIwNzU0YTgxN2ZmZjUxNDlhOTFjMTBhN2E5OTBmYTY1MGQzIGxlZ2FjeS10cnVuaworMTA1MDcgZDk5YTkwNTI2YWUwYjE5MmVlY2ZjMjFlODE4ZjFlYzFhMTdiZDQwYSBsZWdhY3ktdHJ1bmsKKzEwNTA4IGY1MzI2ZDM1ODY2MmJiMjEwYjhmMTRiYmQ1NTYyZmY2YTliYTdhZTYgbGVnYWN5LXRydW5rCisxMDUwOSA1ZGNmOWI1ZDMzZTZlNmYwYTBkMDQ3NmFjNTA0OWM3MGNiZDBhYzMxIGxlZ2FjeS10cnVuaworMTA1MTAgOTUxNDJjOGEwOWM4NmE5MDc5NDJmMDE2MzE4ZTNlZTA5NTRkNDc0YyBsZWdhY3ktdHJ1bmsKKzEwNTExIDNmMDM2MDM3NmNhMDAxNTE2NzZkOWRmYzE5ZGVhZGM1OGVjNWNkNzUgbGVnYWN5LXRydW5rCisxMDUxMiA3MTBmM2I3ODM1MTUzYmI3NmU3MDk3MzA3ZmViZWI0YjBmYzdlZGM5IGxlZ2FjeS10cnVuaworMTA1MTMgNWNjZTgxZTIzMzQ5OTZjOTk4ZDBmNmYyYTI2MTE1MGE0MWNkNThiNCBsZWdhY3ktdHJ1bmsKKzEwNTE0IDNmZmQ0NWYwNWUzOTU4ZjU4ZTViY2ZlNWNhMDc4OTY2NDgxYTQzMGQgbGVnYWN5LXRydW5rCisxMDUxNSBjZDMwOTIwNjlmNWEzOTM5MTJiYzFhMjA4Y2Q1NjIwYzE2ODIwOGYzIGxlZ2FjeS10cnVuaworMTA1MTYgNmM1OTQ5ODg1NzJhN2RlMjcxMzY3ZTQ2YTU1YzEzNDUwZWM0YTc1OCBsZWdhY3ktdHJ1bmsKKzEwNTE3IGUwOTFlOWQ0OTVkNWE5ZDA2N2M3YzQzZDZiZmYwNDg3NTU0NjYwMmQgbGVnYWN5LXRydW5rCisxMDUxOCA1ZjM1ZTI3ODEwMzJlMjMwY2UwNTFkZDg3YzBiNGQyNzEyNDFmODUwIGxlZ2FjeS10cnVuaworMTA1MTkgNDNiZTBiOTAyNzE3MDg4NzRjMGRmNjJhNjY5ZGJiYjY5MWMxOTVhNSBsZWdhY3ktdHJ1bmsKKzEwNTIwIGEzODU1MDYxM2FmM2Q5ZDhlOWVkYmM0ZjliYjQ5YWYxNDA2Y2Q2N2QgbGVnYWN5LXRydW5rCisxMDUyMSBkZjBmYTVkYzU5OWFlMDY1NGQ3OWNjMjkwYjllMDdlZDVkY2EzYTk2IGxlZ2FjeS10cnVuaworMTA1MjIgZTIzMzM5NjlhMmNhY2EzZjc4OThkOGIxNGE5NDIyMDE5ZTJhZWNiMCBsZWdhY3ktdHJ1bmsKKzEwNTIzIDQ5MTlkZWUxODc4MWMxMzc3MWU1YWQzYjA3YmJkNmUwMDgyYWY3YWUgbGVnYWN5LXRydW5rCisxMDUyNCBiOGU4YWNlNzljZjAyY2NkYTcyNTdlMWQ1NzRhMGZiY2Y5NTg4YWYzIGxlZ2FjeS10cnVuaworMTA1MjUgYmQzMGFjODMxMjE3MjM0MTg4MTkzYmNjYmFmNGNlMWYwNWNlMjQ4YSBsZWdhY3ktdHJ1bmsKKzEwNTI2IDI1NGZjOTFiNmIwZTczODA5NTgwNzRmZWI0NGI3ZWMxNjdiMzg2OGIgbGVnYWN5LXRydW5rCisxMDUyNyA2NjhjZTBlZGI0ZjFjNTQyOWQzZDAwMmI2Mjk4YWFlNWNkODJiNGY2IGxlZ2FjeS10cnVuaworMTA1MjggMDc3MzBiODJhMTQzZjI4ZjUyZmNhNDVlYzhkNjViNDEwODdlMzg1ZCBsZWdhY3ktdHJ1bmsKKzEwNTI5IGE5MzA1MmFlMGRlYjVhNGQxNjBkMDk2OGE3MDBhZDQyMGZiZTUwNzAgbGVnYWN5LXRydW5rCisxMDUzMCA1ZGNjNWM0YTE4YmRhNjQ4NWQ5OGI3MDk2ZGEyNzkwMzk4YzY3ZDYyIGxlZ2FjeS10cnVuaworMTA1MzEgNzA5OWRlODNiMTkxYjkyNDZmYzkwOTkxNDczM2I1NWJlN2UyODEwZSBsZWdhY3ktdHJ1bmsKKzEwNTMyIDliOGI1NzRlZjAwNzFlMWY5MDlmZTc1MzhmMmMzNTlmMjkxMjU5OGYgbGVnYWN5LXRydW5rCisxMDUzMyBjYjhkNzMzODI0OGNlZjc3Yzg3NWZiMzZlYWE4NDZhMDllZmQ5YzkzIGxlZ2FjeS10cnVuaworMTA1MzQgYTNkOTEyYWZjOTA5YWJjZGQyYTUzMTYyZTRmZmE3NDAyYzZjYmIzMCBsZWdhY3ktdHJ1bmsKKzEwNTM0IDQ0YWJhNGQyNmIwMWZiYWUwNDAzZWZlNjU0ZjlmZDAzNDc2MDY3MzIgbGVnYWN5LXRydW5rCisxMDUzNiBiY2FmNDhiOTRiYjMzODNjNGNhMTdhOTE5ZWY4MmZlYWIzZTJkNGY0IGxlZ2FjeS10cnVuaworMTA1MzcgNDNlODAyYzE2YTViMWFmYmI4NjAwZTU4ZDMyMmRiNjFjZDJhN2UyZiBsZWdhY3ktdHJ1bmsKKzEwNTM4IDVhYWNkZDA5Nzk0MTM5M2Q2ZGE2ZWQzMmEyNTI0MWY0Mzg3NDkxOGUgbGVnYWN5LXRydW5rCisxMDUzOSBkOWFjOTI0NjE4MzI5Y2M0MDk5NzIxMWMzNjEyNmY5NDIzNzgxZWFhIGxlZ2FjeS10cnVuaworMTA1NDAgNzdkNGU2ZjY2MmMxYmVlMDc2YjYyMGY2ZTA5ZWI3OWJjZTEzYTVlNiBsZWdhY3ktdHJ1bmsKKzEwNTQxIDQyODVmOGI3YmEwYjJmYjE3OTk0N2JlMjllNjVkY2I4MTJlYTEwYzEgbGVnYWN5LXRydW5rCisxMDU0MiAwNzY2ZGY1MDNlYTUzZGY0MTZkOGE1ZTVlYjFhZmFhMjljYWE5ZjUyIGxlZ2FjeS10cnVuaworMTA1NDMgZDk3MDQ4Zjg5MWJmMDZhZGQ5YWE4NzkxODczYmJkNTQ0MzZiOGM0MCBsZWdhY3ktdHJ1bmsKKzEwNTQ0IDk4ZWM0MjNjYTZmYTk5MTJhODIwZWFhMDU2ZjZkY2ZkNzRjN2NjZDcgbGVnYWN5LXRydW5rCisxMDU0NSAyMjRiNWMzNmFmZWY4NTZiODk5NmYwYjMwNTFjODhjNDgzMTIxNTgzIGxlZ2FjeS10cnVuaworMTA1NDYgZjBiZDllZTc4YTUyMTc2MzExMWVlNDlhNmE1NzI5OWUwZWJiM2E2ZCBsZWdhY3ktdHJ1bmsKKzEwNTQ3IGE3ZGQwZjUyZjJiNjA5NDZhYzQ1MmQzYjZjODhkNzE3NjQwMmI4YWIgbGVnYWN5LXRydW5rCisxMDU0OCA0OGUyMzQ5ZDExYzYwOTM3MmJlOGViZjBlOTBkYmEzZjZkZGViOTdkIGxlZ2FjeS10cnVuaworMTA1NDkgOWYxNmZhNzBkMDkwZWFlYmVlMDA0MDNiNDg3NTk1OGQ3YWFiZGE2ZCBsZWdhY3ktdHJ1bmsKKzEwNTUwIDg2YTYxOTMwNDlhOTZmNDA0Zjk5N2E3NjliZTIyNzAyOTA2YmJjOTggbGVnYWN5LXRydW5rCisxMDU1MSA0YTJmMWM2OWZkZTgxZTk2YTUxYTRkZjI0NDIzYjVjYmFkMTkyYmQxIGxlZ2FjeS10cnVuaworMTA1NTIgMDUyZTc3NjY0MDMyZTE4MDYwYzJhMTkxYjQyMzQzNzdkYjhlOWU0ZCBsZWdhY3ktdHJ1bmsKKzEwNTUzIGI4MTYyZDA4Njg1MDBlOTFmZTk5YWJiOTljYzJjM2U2NGZlODYwZjEgbGVnYWN5LXRydW5rCisxMDU1NCA1YTY3ZDkwNTEwMjYyYTE3YWU1ZjY3Y2NjZDY0ODU3MjQ5MTM5MjJjIGxlZ2FjeS10cnVuaworMTA1NTUgZDBmZjQxNzQ2YTI2MDBlNGJhZmNmZjhjZDY3MjhjN2RlNzg5MzlkZiBsZWdhY3ktdHJ1bmsKKzEwNTU2IGUzOTE0NWExMzA5NjgwMmQ0ZTQ4MWMxMWQ2OTI0YjBiY2Y0OTQ2NDUgbGVnYWN5LXRydW5rCisxMDU1NyBkZTAyOWU2Zjk4Mzg5MWM3ZTBmYmQwYWZhZjQwOGYyMTdlMTJjMWE0IGxlZ2FjeS10cnVuaworMTA1NTggNWJmZjA0MTcxNzk4NThlMzJkOGM2NjRjZjMzN2VhZWQyOGJiMTFmNSBsZWdhY3ktdHJ1bmsKKzEwNTU5IDMzMTdmNzI3MjNiYjYwOTZiODliNzE2MDQ2YzUyZTAwZWYzNWRkYmQgbGVnYWN5LXRydW5rCisxMDU2MCBjMTUzMzBlZWIxOTJhZDY2ZDFjNGUxNDE0YmQzODQzNTU1MTI1ZDM1IGxlZ2FjeS10cnVuaworMTA1NjEgNjU4ZDE4NGU5MjA0MWI5YzY4ZDg3MDZiMTZkMDhlMTE3MmUxODkzNiBsZWdhY3ktdHJ1bmsKKzEwNTYyIDBiMGI2OWE4OGI3Yjk1YjYxMzJmMzBhZjVlYTE5M2E3ZDBlMGVmNzEgbGVnYWN5LXRydW5rCisxMDU2MyA2YjU4Yjc5YTk1OGQ3N2E1OGY0ZTU0NzZhODllNzBkMzU2NjFlODVjIGxlZ2FjeS10cnVuaworMTA1NjQgN2FjZTE3MmMyNTIxYjAyZWFhMWZkNmRjZThlMzgxMDI4M2FmNzI5NyBsZWdhY3ktdHJ1bmsKKzEwNTY1IGJiM2VjODEyZWM5MGYyNDg3ODgzZThiOWE3MGU3MDRmM2UzZWU5ODAgbGVnYWN5LXRydW5rCisxMDU2NiA1ZTNiYjQxNTYwMDQyNWZkOWZmOGYxM2MzNTQ0MTBhOWQ0ZTYzZDkwIGxlZ2FjeS10cnVuaworMTA1NjcgNjkyYmUxMjNmNTQ3ZjFkMzQ3NTFiNGUxYWQ3OWYzYTQ5MzQ0MTU2YyBsZWdhY3ktdHJ1bmsKKzEwNTY4IGUzZGNlM2I4YzI4MjU5YzYxOTk3ZjFhODM5NTViYmIyZDM5MzMyNzggbGVnYWN5LXRydW5rCisxMDU2OSAwNDkzMTM3YTg0MTQ2MWFhNTgyOGE1OGQ0MTU0MmJiOWZhYWY4Mjc2IGxlZ2FjeS10cnVuaworMTA1NzAgYzVmOTJlZTg0OThmNWM4YjJjNDZhNTBiY2RhMDU0N2NiMDk4NWMzMSBsZWdhY3ktdHJ1bmsKKzEwNTcxIGRmMzdjYTQwMzhmNmMyNjE4MWU1MWE5ZTNjMWE2OGVjODc5ZDZjZjMgbGVnYWN5LXRydW5rCisxMDU3MiA5NmFhNTg3MjVjMGU0MDU4YjM1ODhiY2U2MmE4ZGVjYmRhYzI0OTJkIGxlZ2FjeS10cnVuaworMTA1NzMgMDhlMWJiODQwN2U2NTIwNDQyMGQ4OGUyMzgxNDFiNDY1NGE0YzdkMyBsZWdhY3ktdHJ1bmsKKzEwNTc0IGFkOWFhZDgxM2E2MWIxY2JmNTM4ZjZhOTRkZDU3NjMzNjY0Zjc1NjYgbGVnYWN5LXRydW5rCisxMDU3NSA1NzNiYzA2NDI2NGNiN2U0YWFhOWRmMjQ3ZDAyMmFjNzk5MTE0M2JiIGxlZ2FjeS10cnVuaworMTA1NzYgNDdiZGY0NWFmYjY4NjA3MDUxNDMzMzJiNTBjY2QxZGZmZmM0YWYxNCBsZWdhY3ktdHJ1bmsKKzEwNTc3IDhjMWYxNjFjNmM4YzAxZWQ4MGIzMzUwMzE4ZTcxYzNlYmYzOTIxZTUgbGVnYWN5LXRydW5rCisxMDU3OCBhNmNlMmRmZjI3MzViNzcyNWI0ZDgzZDIxZmQzMGM5ZTQxMjhjOTgyIGxlZ2FjeS10cnVuaworMTA1NzkgYjU3Njg0NmM5NGIzOGY1NDQ2ZWI5MzNjN2YwNzQ5YWQ2NGY3MTFhYSBsZWdhY3ktdHJ1bmsKKzEwNTgwIGE1NWNiYTk2Mzc2MTYzZTBjZjZjMWFmZWZhZjcxOTBlOGJmZTRlMmUgbGVnYWN5LXRydW5rCisxMDU4MSBmMmY5MTI4MjNlZTc4NTcxZmZmZGM4ZTJhY2E3MzA5YjNjMTI1M2Y0IGxlZ2FjeS10cnVuaworMTA1ODIgMjY1YzI3OTc3ODFhMDY4ZmE1MjQwNTkzOGMwNmUwMjMzODQ0MzM0MyBsZWdhY3ktdHJ1bmsKKzEwNTgzIDQyN2YzNDg5ZTUyYjZhYzBkYjZkYzVmZjIyYWEzNGY5YTU5NzhhNmMgbGVnYWN5LXRydW5rCisxMDU4NCAxMWExYmFkNmRmNjczM2UyYzYxOTNjOWJhOGY2ZmU0NzgyM2JhN2U1IGxlZ2FjeS10cnVuaworMTA1ODUgOTMzNDhlNWE4NWEyNDBkMTk2M2E0MmY2NTU0YzEwNzkwYjE2NzM0MyBsZWdhY3ktdHJ1bmsKKzEwNTg2IDc5MWVkYTUyYjNkOWNiYWVhZWViODM5YWNhNWY1OTVhY2RhNzNlY2MgbGVnYWN5LXRydW5rCisxMDU4NyA5YjNiMDEzMmMwMjFjN2M2Yzg4YWJjYzdhNDUxMmFmOWJhOGQ1YzBjIGxlZ2FjeS10cnVuaworMTA1ODggMjgxMGZjNjA5YWVkMDcyMDc1NzgyN2IxOTc3ZjExMWEwNTQ1ZDViZCBsZWdhY3ktdHJ1bmsKKzEwNTg5IGE5OTczZjliNTQxNzc3MjRhZjViZTlkMzZkZTA5ZTJiZDE0MzAzMGIgbGVnYWN5LXRydW5rCisxMDU5MCAyZTQ5YmM4OWZhZmEwZGQzZjZlNTZjYTAzYmExMTRlMGM2MDdiM2UxIGxlZ2FjeS10cnVuaworMTA1OTEgZjA3MDdhZTAwNDMzODQ5YWQ3Y2IwNWQ3NzA4NGYzZTViMWQ4NzlkNiBsZWdhY3ktdHJ1bmsKKzEwNTkyIDVjOWJlOThmNTM0NzM5NGUxZGY5ZTkwYjMxOTI2MDc5ZDAxNWNiYjYgbGVnYWN5LXRydW5rCisxMDU5MyBiNmNlMTcxOTMyM2FjN2RlOWYyMWI3ZmY2MzE5YWE0NjZhZjI1MzIwIGxlZ2FjeS10cnVuaworMTA1OTQgZTJkMzNjMDczMmJmYjE5MTc4Y2ZhMTg3ZWM5MjdhNDA0ZTZmZTk5ZSBsZWdhY3ktdHJ1bmsKKzEwNTk1IDUzMGZmM2I5OTcyMmI2YzBkYzU3ZmU0NDZlM2FiNjRjYjIwMDFlNzcgbGVnYWN5LXRydW5rCisxMDU5NiBkOTYyMjNiNzdlMmYzNzA5NDJmYTgwZGY3YWFiNTIxNDdiZGQxN2U0IGxlZ2FjeS10cnVuaworMTA1OTcgNTk5OTdmZGM4MWRmN2YxODMwYWRmZTJjNjcyMThhYTAzNmI4N2Y2NCBsZWdhY3ktdHJ1bmsKKzEwNTk4IDk1ZWZlYTY4ZjE4ZDc4Nzg1NzlkMTBkMDE4ODdiODQ3MjY1NzQ5YTAgbGVnYWN5LXRydW5rCisxMDU5OSA3Y2Y1MTY1N2IwOGNhYWI0NDczYTcwNmJlZGZmZTdhMTRiYTQyZWE2IGxlZ2FjeS10cnVuaworMTA2MDAgNWFlY2MyNzdlNmNhYTAwY2E3ZjU4NDlmMmZhM2MyNzQ0YzA5NDFjZiBsZWdhY3ktdHJ1bmsKKzEwNjAxIDA2OGZlYTE1Y2JjZDg2NGYzOTI5MjcxN2UxZWYxMDlhNmE3ZjUyMjYgbGVnYWN5LXRydW5rCisxMDYwMiBlOTA0ZTZkZmQ3MGIyNTI1ZmQyZWNiMmM3ZjcwMjE1M2ZmNTJlZjhlIGxlZ2FjeS10cnVuaworMTA2MDMgOGM1NTJlZWRiMWFmYWYxZDBlMDk0ZmI3Njg5M2U5NzZhZGQzODI0YiBsZWdhY3ktdHJ1bmsKKzEwNjA0IDBkYjZmNjkzMmI3MzVjNzFjMDNhZGUwYzdlYjA1ODVmMjE2YzY1OTQgbGVnYWN5LXRydW5rCisxMDYwNSBiZDc0NGFmNjg0NWY4YjFhNWM1Y2IxOTMxNWRmNWE1MmUwNDFhNmYyIGxlZ2FjeS10cnVuaworMTA2MDYgMzY0MDRkOWNiNWUxNWNiZjJlNzFkOWI4YzM1MzZiYjBjYWE5MDJjMCBsZWdhY3ktdHJ1bmsKKzEwNjA3IGRhYTU0MTMxNDUzYjc3ZTM5ZDU5ODBjNjdjODhkOTkwNGI2MThkMTQgbGVnYWN5LXRydW5rCisxMDYwOCAwNDc1MzM3ODkzNTlmNzk5N2I0ZjUxZTIyN2NjOGZiY2JiMDBjODIyIGxlZ2FjeS10cnVuaworMTA2MDkgZmRiYTYzOTdiNzI5ZTQ3M2FjM2ZmNjNkNDk4ZDk4YzA1Mjk0OGUxNSBsZWdhY3ktdHJ1bmsKKzEwNjEwIDEwOTRlYmJkM2E0NTc0ZDI4MmNjOGQzMDU5MDQyZTBlZGU4MDJlMDggbGVnYWN5LXRydW5rCisxMDYxMSAxYmM2NTY4NzYyNmI4Nzk0NjRmNjhhY2VkNmYwZWNjYmNjNTE0NzY4IGxlZ2FjeS10cnVuaworMTA2MTIgOGI0OWM5MThhMjVmMzY4MTBhNWUwMTAxYmNiYTkxZDQ2OGI1OTczNyBsZWdhY3ktdHJ1bmsKKzEwNjEzIDQzMjNiMjQzMzU4MWQ4YzhjODkzMTFkZDYwNjBlMDBmNWVhMzY5NzEgbGVnYWN5LXRydW5rCisxMDYxNCA2MDg4ZDY1MmI5MzI4NDFhYmRhYzVjM2VlN2QyZjY2ZDk3ZTg2YzhlIGxlZ2FjeS10cnVuaworMTA2MTUgYzdkOTlmNmQyZTJmOGMxNzllN2QwNjA3ZDUyMmM4MWNmNTE3ZTJiNyBsZWdhY3ktdHJ1bmsKKzEwNjE2IGFjMjg4ZGI1YmM5MWM0NDI1NDBlMmIzN2E4NzJiOTUzZWFiOGEyZTcgbGVnYWN5LXRydW5rCisxMDYxNyBjZDZiOWZjMTE0YTQxNWZhNGViNTQzNTA2OGJkNDZiNDE0OTM4ZDMwIGxlZ2FjeS10cnVuaworMTA2MTggNDQzNTZlZTdlNTc5MDYzNDA0ZGExYjIzNWQ2MjBlYzEwYWU4YTU4ZSBsZWdhY3ktdHJ1bmsKKzEwNjE5IDlkMDMxMDE0MzYwMDhjZTA4ZDJjNjQ1ZjNkYWFiYmM2ZWNhYmViMmQgbGVnYWN5LXRydW5rCisxMDYyMCBhYzNjYTU2NmNiNDE2MWM0MDlmYWUxYjRhN2YzODNjNzEzMzY5ZjA0IGxlZ2FjeS10cnVuaworMTA2MjEgMjNhODM3NzI2MjI2NGI1NzYzYzNmOWJlZTM4YjI5OTZjYmQ4M2MyMSBsZWdhY3ktdHJ1bmsKKzEwNjIyIGIxNDhmYTE1MjVkYjk5OGVlYzMxYjA5YWY4Yzg1ZDZjM2YyYmVlODcgbGVnYWN5LXRydW5rCisxMDYyMyBkNjAxYWY4MDZhNTczM2JmMzc1NmUyOWI3Y2UxYTNmMDM1ZmYwNTU5IGxlZ2FjeS10cnVuaworMTA2MjQgYWEzYjQ4MDAyZjg4N2UzNmFmMmIyMDg3NzA5ZGRmNjFjOThhNmEzZSBsZWdhY3ktdHJ1bmsKKzEwNjI1IGUwMzNlZDUwY2IzNzZjZjZhNWM4NWYwMDMzZjI3MWUzNzI5MmI4ODkgbGVnYWN5LXRydW5rCisxMDYyNiBjY2Q4Mzc1ZGIyNzM2ZGU5ZGE2NTBmNzU5OWQwYjM1NzgwZmEwZmIxIGxlZ2FjeS10cnVuaworMTA2MjcgYzBlMzk0NGI2YTY0ZmUyZTczZjhjZGM1YTAzYmY5ZjVhNDYwMGQ0ZCBsZWdhY3ktdHJ1bmsKKzEwNjI4IGJkYmUwODJlZTM4M2RhOGEwMmM2MmVhM2IwY2E5MThjYWVkYWY4MmIgbGVnYWN5LXRydW5rCisxMDYyOSA5Mjc5ZWY2ODY4ZWJhM2E1NTA5OTM5MmU1YTUwNzA4ZDlmNTg1NDQ5IGxlZ2FjeS10cnVuaworMTA2MzAgOTFhYWVlZjc1YTczNjJmODdiNTBjNjFmNGUwOTNiNjk5NDExMDZiYiBsZWdhY3ktdHJ1bmsKKzEwNjMxIDNhNTIwMjhmZTkzNjNkYTJmNjFjZWRmZTM0Yzk4ZGY5NmY0M2E3YmEgbGVnYWN5LXRydW5rCisxMDYzMiA0NjY4NmQ0MGJkZmQ2YzMxMTc3YjkyYmY0YTQxNWY5ODA2ZDhlN2FlIGxlZ2FjeS10cnVuaworMTA2MzMgMDVmZWJmOTMxZTkxYjRiZjk2MmU5OTAzMWI4NzVmODdlNGNmYjc0MCBsZWdhY3ktdHJ1bmsKKzEwNjM0IDk5NWZiNTViM2U2YWJkMjFkZGEwYzJjZjdmYzZlYjg5ZWE0MTZkZGQgbGVnYWN5LXRydW5rCisxMDYzNSAyNTUyMzNlNDI5MThmMzQ5ZjFlMzM0NjhhMGJjMmFkMTExMTUzMmEzIGxlZ2FjeS10cnVuaworMTA2MzYgYWRhNDBlNjlmZDA5MzZlMzUxNmEwZDJiNzFhMWZhYmU1NzE4ZWMzMyBsZWdhY3ktdHJ1bmsKKzEwNjM3IGU0OWIzMGM2YTgwYWMwYjdmOGM3NmI4YTBhYTQyZmFlNDE3NzYzZTYgbGVnYWN5LXRydW5rCisxMDYzOCBiYmZlOTljMjc4NWM5MzcyMzJiN2UzZjdiM2ViNjVmNTE0OGZlY2E0IGxlZ2FjeS10cnVuaworMTA2MzkgYjFiMjZlMGUwYTBhZGFkM2M3MWRhYzhkOWJiOGMwY2JhYjU0YmE3YyBsZWdhY3ktdHJ1bmsKKzEwNjQwIDA1NjU3MmUwNzgxYTZhMjMxM2IyZDM0OTdkNTY3MWIxNjRlOGQwOGQgbGVnYWN5LXRydW5rCisxMDY0MSBjZTlmYzY0NTI4YTc5ZGQ5MTBlNTQ2NmM2ZTU2YmU5NGQ2OTYxZDQ1IGxlZ2FjeS10cnVuaworMTA2NDIgMTI1YmZkODk2OTY3MTYzMzNjYWU0ZThjMzQ3ZWY3YzVmZWViOGFkNiBsZWdhY3ktdHJ1bmsKKzEwNjQzIDFiYmRkODRjN2E0MDk5NjU2MzhmYzJmYWNkNGIzYTQzMzcyYjg3YTcgbGVnYWN5LXRydW5rCisxMDY0NCBhMzEzNGM2OTcwZWJiZThjNGI1ZWM3YTY5NjY4NjBiMjE2MzFhYmYzIGxlZ2FjeS10cnVuaworMTA2NDUgZWE1OWJiOTIxMzgwNTE1MTA1MTc5MTlkMTJiODgzYmMwZjRkY2ZhOCBsZWdhY3ktdHJ1bmsKKzEwNjQ2IGYzYzhmYmM3OTNmZWE1ZTdjYTg0NmViOGQ4MGQxM2IwMTg5ZWNlN2IgbGVnYWN5LXRydW5rCisxMDY0NyA2ZjVjOTM2YWUyZDIyMjgxZDFmYTIzZDVhZjI5NGVhMzg4ZTBkMzJmIGxlZ2FjeS10cnVuaworMTA2NDggMTU0NmZjNzZkMDBlY2Q1ZWZiMDIyN2ViZWRlZWQ3NDdkYjI1ZDQ5OCBsZWdhY3ktdHJ1bmsKKzEwNjQ5IGI5ZDljMGVlYjQ3YzI2MDgzNzNiYzk0OGEzZWY4MGQ1MDZmNzRlN2UgbGVnYWN5LXRydW5rCisxMDY1MCBjOWQwZDYzMWFiYWFlMGUwMjcyZTAyYTUyZjdiNDU4NTExNzQ5MjA3IGxlZ2FjeS10cnVuaworMTA2NTEgMjg0YWRkNzRmZTM3MDVlYzFkNWQ3MWQ2YWQ5MGUxNDliNTIzZmVhYyBsZWdhY3ktdHJ1bmsKKzEwNjUyIDUzNmU0MzlhNjVmOWQwYjUyM2RmOTMzZDYyZjU2NzM0ZWJmZWZhYmUgbGVnYWN5LXRydW5rCisxMDY1MyA1NzMyZWMyNDg3YzUwYzZkMzllN2RmMjc3NTJmMjFiNzE3MGVlZDkxIGxlZ2FjeS10cnVuaworMTA2NTQgNWJjOGNhMTNjZmUwMWMxODE1NTUyZDk5YjJhNzkyYTQyMWQ0YjRlNyBsZWdhY3ktdHJ1bmsKKzEwNjU1IDI2YzYyMmQzNzE3ZDIyYzcxYzdhMDhiNTc5YmI4NTFkNDgzMzNkZjcgbGVnYWN5LXRydW5rCisxMDY1NiBhOGRmMDkwYTEyYmFmNjhmNTUyNDQ0MWUyMmZiZmE5M2U3MjgxYzU4IGxlZ2FjeS10cnVuaworMTA2NTcgYTBhMGMxNDMzOGMwNzRmZDk2ZjFlNzJjYTI1YzI0MDQ2YTZiZDlhYyBsZWdhY3ktdHJ1bmsKKzEwNjU4IGVlMjdmM2E5MTY2ZjgwMTMzM2JmMzgwMTEzM2IxNjk3NGFmYTQ4YTkgbGVnYWN5LXRydW5rCisxMDY1OSAzMGZiZTMwMmM1MThmZjg0ZWE1OTU4OGE5MThlZTkxY2Q5NDFmN2VlIGxlZ2FjeS10cnVuaworMTA2NjAgNGE3ZmZjZGU0MGRjOGY3MDExZWEyMTBkNWQ3YTJkMTE1MzZjMzczNyBsZWdhY3ktdHJ1bmsKKzEwNjYxIDY4ZWU4YWJkOTc4MjhiMDUzZDA3OGRhYTI3YzkwOTI5N2E3OWRmZDcgbGVnYWN5LXRydW5rCisxMDY2MiBjNjlhZDU2NmFlYjFlNTMxZGI4MmIyNzZjZDA0Y2I5N2ZkM2VmMGI0IGxlZ2FjeS10cnVuaworMTA2NjMgZGU3ZmM2NmMwYjRmZGZhZDE1YWFlYzQwMGFmNzFlMjVmM2EwNGFlYiBsZWdhY3ktdHJ1bmsKKzEwNjY0IDZmMWRiNTM0ZGZhZTRhZGZkNGIwM2ZjMTk3M2E5MjEyZWFlYmVhNTEgbGVnYWN5LXRydW5rCisxMDY2NSAxNDIxNjVlZDg0ZDgwYmMwNTcwNjZkMGY0NTNmOGNkN2UxZWNhYmUxIGxlZ2FjeS10cnVuaworMTA2NjYgOTI5YjdlNmU3NTIwYzVkYmMwMjUyMjk1NWM5MmI4MDQzZDg1YTNkZCBsZWdhY3ktdHJ1bmsKKzEwNjY3IDc3NTgwOGEwOWU0NmI3NzM0MWMxYWI0NjcyMThhZjBmNWY4ZjUyMGYgbGVnYWN5LXRydW5rCisxMDY2OCA2NzM1ZWY2NjJmMzlkOGNjYTNlYjgyZDZkNTc3OWM1MTcyYzZjZDIxIGxlZ2FjeS10cnVuaworMTA2NjkgOTk3ZDVhMjAwMGUwNDUyNmNmNTlmMTM0NmM2NmZkNzNjODdhNDY5MyBsZWdhY3ktdHJ1bmsKKzEwNjcwIGNlMmQxMjBjMzkwM2YyNTRhNTgzZjZjYzYwMTk0YjA3ZGJiZjQ3MGIgbGVnYWN5LXRydW5rCisxMDY3MSAyNWMyYWVhNjQ1MDE3Y2ZiMTQxYzFhYTQzY2Y1ZTUxOTcwMTExNzQ0IGxlZ2FjeS10cnVuaworMTA2NzIgMzVhYTY3ZmM0ZTYwZjZmNjkyN2YzNzMzOGM1NWNiZGU1MGU4NGUxNyBsZWdhY3ktdHJ1bmsKKzEwNjczIGI4MWJmOWNhMTc5ZDNlYjZkY2Q3NzNlMDRmNGRhZTgwYmViYzk4YjQgbGVnYWN5LXRydW5rCisxMDY3NCA0ODk0ZGRkNDUyZWVjYzEyNjk3MTdjNjU3MjA0YTIyMmE3NzE4OTlhIGxlZ2FjeS10cnVuaworMTA2NzUgYjY2ODZmNzUzNzk4ZjgyZjE1N2I2MGVhYWVjMDJjYTlmZDJlZjYxNSBsZWdhY3ktdHJ1bmsKKzEwNjc2IDgyMGQ1MTBkMWRkNjBjMDE2ZTVmYTdmZGJiYWRkNTcwNWFjOGM1OTQgbGVnYWN5LXRydW5rCisxMDY3NyA4ODVkZTQ5YjQ0NWM1M2M1Nzg3MGIyM2ExMmJkMzEyOGVhOWFhYWJmIGxlZ2FjeS10cnVuaworMTA2NzggM2E1NWI0YzVlM2M3MTk5NWRiMmYzOTQ5ZmYwNmI2N2M4YzcyYzlkMSBsZWdhY3ktdHJ1bmsKKzEwNjc5IDgzYTY5MzA1Y2IwNmUxMzhhMDk3YjY4ZWM3YzYyZTdlMDUwMDc3NTcgbGVnYWN5LXRydW5rCisxMDY4MCBjMzFjNTlmMTkyYWYyMjA0MTVlYmM0NThmZWYxNmE2ZjM2ODVlNzY0IGxlZ2FjeS10cnVuaworMTA2ODEgNDgyZTRiYTMzYzA4ZjZhNjgxMmViOGRhNWYzMjM5ZDNlOGQ1YTIxOCBsZWdhY3ktdHJ1bmsKKzEwNjgyIDA1MDk2MDUyZDgyNTdhMDM3ODA4MmRhZDUzMmRmOTkyNjk4NWY3MjcgbGVnYWN5LXRydW5rCisxMDY4MyA5ZjBiYjg3ZGRlNjAwYWM5YmNkOTNhODNiY2JiOTEwNmZjOTI5NGE2IGxlZ2FjeS10cnVuaworMTA2ODQgYzI4YjA1MzhhNDQ2NTQ3ZmU3OTE4NmY3OGJiMzVlOTFmMzVmNGVlZiBsZWdhY3ktdHJ1bmsKKzEwNjg1IGQ2ZjRjMmE1MzEyYzRlMWRkM2UyYTkwYzIzMGJjMjlmYzk1YjFlMDAgbGVnYWN5LXRydW5rCisxMDY4NiBjNDI4OWI4MTM5MjRiMjc1M2MzYjllOTg0Mzk3MzMxNDdlN2RmNjYxIGxlZ2FjeS10cnVuaworMTA2ODcgN2VkMTA3YWY5ZmY0OTUyMjBmZGNkNGRmMDRjYTNmMWZhNDBkMDBiOSBsZWdhY3ktdHJ1bmsKKzEwNjg4IGI1NDk0OTY5MDA3Nzk3NDQzM2RjNDc5MDJiMWZmMzFhZTZkZTMyMjAgbGVnYWN5LXRydW5rCisxMDY4OSBlMjY1NjkzZjA3OTAyMDc3MjQxMjJiMDg3ZDdiZjMxZWFkYWM0Y2RiIGxlZ2FjeS10cnVuaworMTA2OTAgMzRjY2E4MzJhNGFmZTM4OTEyNjBkOGMwNWM3YzM2OWM4ZjhhNTA5MCBsZWdhY3ktdHJ1bmsKKzEwNjkxIDBiN2YzYTkzMjA4NWMzNDIyMGU5OTMzZDQxZDAzMTA1ZGEzMzc5YWEgbGVnYWN5LXRydW5rCisxMDY5MiAyMDNlMmFiNjM5MzZhMjVmZTJiMGExZjY5ZjA1ZTY3YmMxOWYyOTY5IGxlZ2FjeS10cnVuaworMTA2OTMgMTVlYTE1ZTBjYTJhYjg1OGVmNDk0NzU5NDQwM2U2N2EwYWNhNTIxZCBsZWdhY3ktdHJ1bmsKKzEwNjk0IGE0NDRjZDgzNWMwZTA0NjU3MWVhMDNlNzc3NmY2OTVjN2RlNDM5ZTUgbGVnYWN5LXRydW5rCisxMDY5NSAzMGMyMzg1Y2EzODkzYTBiOTJiYWFkNTIzMDI3MGI0NjUwNjMxNTViIGxlZ2FjeS10cnVuaworMTA2OTYgYmMyZTliNGViOGRkNTg0NzIzNjU0Yjk5ZWJiMDE4ZGI1OTkzZGQ4NyBsZWdhY3ktdHJ1bmsKKzEwNjk3IGYzMjA4MDBmMGZhNTVhZmU3ODllMDQwMjFhZThjOGI1ODIzMjdjZWEgbGVnYWN5LXRydW5rCisxMDY5OCBhMTk2NjEwNzY1MjlhOGFmMWZjM2ZmYWQzZmI0M2UzOTlmYzc5MmUxIGxlZ2FjeS10cnVuaworMTA2OTkgZjFjOTYwOTMxNDEzMTkzMzgxNWRhYzQ1ZDkyOWVkNjdlNDQ5NzM4OCBsZWdhY3ktdHJ1bmsKKzEwNzAwIDMyOGQ0NmM0NzNmNGVjMGUyYzBmZDBiMzJiZDlmNTAzODU4OWJiNGEgbGVnYWN5LXRydW5rCisxMDcwMSA5ZDU0YWFmMDE2M2RiMGViNTA1YjIyYWFkY2E2ZThhZDQ5MmQyMzFkIGxlZ2FjeS10cnVuaworMTA3MDIgNmEwODdhZTE4MGJhMzU4YTMxZWJkNzkxNzBhM2RjODMxZWVhNTc0NiBsZWdhY3ktdHJ1bmsKKzEwNzA0IGU4MzRhZTczZGVkZGYyYmMwZjc2ZjkwYzJhMDU4ZmMyM2MxNjVkMGEgbGVnYWN5LXRydW5rCisxMDcwNSAxMzYyYzkxZWZjZDI3ZTI2NTJhZmZlOGVmYTQzZDVmMmJhOTNiODgzIGxlZ2FjeS10cnVuaworMTA3MDYgNWUzOTRhMDdhM2E0ZjEwMWU5ZjQwOWZjMjFiOWQ0Y2RkNDg2ZDI3MSBsZWdhY3ktdHJ1bmsKKzEwNzA3IDlmYzJhZjllNTg1OWEwYmEwNzA3ODNmYjA3YWE5ZjM1YzM5N2FjYzkgbGVnYWN5LXRydW5rCisxMDcwOCA2OWYyZTA1Y2MzNzhlZDM1YjFjNGUwNjkxN2E3M2Q4OTg4YTk2ZGMwIGxlZ2FjeS10cnVuaworMTA3MDkgNGExM2E0ZDI1ODhiMzBkYjA1MWYxYzQ5OGE0ZTQ4ZjRmYTBjMTAwNyBsZWdhY3ktdHJ1bmsKKzEwNzEwIDlkNjQyYTczNWExMzI3ZDFmZmFkMzYyY2U5MDdlN2QyYmY5ZWQwZWYgbGVnYWN5LXRydW5rCisxMDcxMSBkZjc1MmMwOGI0NjIyMDQ0MmZiYjdmZGFmY2RhNGNkNmQ0ODU1MjRhIGxlZ2FjeS10cnVuaworMTA3MTIgODVhOGFlNmRlMjc4NTg0MTczNDRiYTRlYjcwN2ZkY2I4Yzg5ODRjOCBsZWdhY3ktdHJ1bmsKKzEwNzEzIGExMDNjZjZkMzg0NWI1NThhYzdlZWMzN2VmMjcwZDlkNWE0ODFmZTcgbGVnYWN5LXRydW5rCisxMDcxNCBlY2RlOGE0NWQ0MjUxMzE4ZGI3NDM3NmE5ZDI2OTI5MzhjYTM4OTI5IGxlZ2FjeS10cnVuaworMTA3MTUgMGVjOWRjOWQyMDFmMmYxNDQ1NTI5OTIyZDgyZWFmMWNmMWYwZWRhNyBsZWdhY3ktdHJ1bmsKKzEwNzE2IDQwNmRkMmIzNjc5Mzk1OTdjZDFiMWU0MWQ1N2IwNDE4MjAwMjdlNWIgbGVnYWN5LXRydW5rCisxMDcxNyA5MzA2ZjU4Y2RiYTVhMWRhMjRjMzA1YjUxNjcyMDdjYTJjY2RlODNjIGxlZ2FjeS10cnVuaworMTA3MTggMTQxMThiNTc2NzFlYzRhYTliOTQ0ZjBkOTA3Y2I1ZmE5MmNmZjQzYSBsZWdhY3ktdHJ1bmsKKzEwNzE5IDI0MDNlOTJhNGE2YzA4Yjk1MzE3NDY0ZGUwYmY4OTc3OWY3NDA4NDkgbGVnYWN5LXRydW5rCisxMDcyMCAwN2MwYTMzMWMyNjkyMmJlZjI4MTlkMzA3NjE2NWFlODVhZTNlMGJmIGxlZ2FjeS10cnVuaworMTA3MjEgM2JlMWFkOWE4NTg3ZjM2ZmEzY2NlNTk5MjI2MTlmODY5ZTZmMzkwMiBsZWdhY3ktdHJ1bmsKKzEwNzIyIGRlMmZmODlkNmQ0YmVmMmI1ZjllZThhZGVjMDRjMWQ2ZDFlY2M0MWUgbGVnYWN5LXRydW5rCisxMDcyMyA0MDMzZmViMjZkYTg5OWE1ZTIyNzBmMjNhNGNkM2Q3NmRjNGJjM2E1IGxlZ2FjeS10cnVuaworMTA3MjQgMDc5MmRjZGU4ZTMxMWQ5NmYxOGMxMTY5ZjVjMDY3MzQwNjFmZGJjOSBsZWdhY3ktdHJ1bmsKKzEwNzI1IDc0ZWRkNWNkYTlmZDljNTQ5MWU0ZDhhYzgzY2IxMmQ1ZDJhNjFkOGUgbGVnYWN5LXRydW5rCisxMDcyNiAxMDUyYjBiMmM2ZWEwZjUwNjkwY2Q0NGEwOTU1N2IxNjk2NDExNzM0IGxlZ2FjeS10cnVuaworMTA3MjcgMmZhZWI3MmJiNjRhMTljOTE2YmZmNDg5YWE1ZjY5NDJjMzdkMzFlZCBsZWdhY3ktdHJ1bmsKKzEwNzI4IDg1MjNlY2FmNTljNTY5YTkyMzhkYzMzMTVlZWVkMDcyZTIxMjdkYzAgbGVnYWN5LXRydW5rCisxMDcyOSA3MzU2ZDQ4ODhhOGJjYTkzNDQwZTI5YTc5ZmI1OTVhZmNlYTJkYzJjIGxlZ2FjeS10cnVuaworMTA3MzAgMjQ2YWNhZDljODkzZGJkNmU3OWNlMTA5NzMwYzgyMzQ3YjU2ZjYyMSBsZWdhY3ktdHJ1bmsKKzEwNzMxIGFiMGQ1ZjI2NWQ1NGU5OGYwNWQ4Yzc5YzBmZTJhZWEyOWVhYmFiMzIgbGVnYWN5LXRydW5rCisxMDczMiA1MGQzNWJkZjIwNDJkZTIwYzZlN2FhMjFmMWI4OGY0MmM4N2ZhOTU3IGxlZ2FjeS10cnVuaworMTA3MzMgMzdjM2VjNGYzZDNmOWE3M2Q3NjhlZWMwNDQzYzc2ZGU5ODVjNWQyYSBsZWdhY3ktdHJ1bmsKKzEwNzM0IGZjMzM1MGFlNWYyYTk1NjcxZjQ4NTU1YjQ4NmQ3ODhjMjkwZDk0NWEgbGVnYWN5LXRydW5rCisxMDczNSBiYzUwZjVjMjBiYzk2MTU5ZDhkMjU4YmFhMDkzOGZhNDE3ODgzMjMxIGxlZ2FjeS10cnVuaworMTA3MzYgMTAyNmQwMzNjMGRkOWEyYThkYzcxMmU1YTM0ODY4ZWZlN2Q4ZDU4YiBsZWdhY3ktdHJ1bmsKKzEwNzM3IDEwYzYwOWZlN2RlYmM4Yjc4NGVkOTcxYWJkNGFiZWUxMmIyNjFkMGUgbGVnYWN5LXRydW5rCisxMDczOCBhOGMyMWFjY2JlY2RiOTI1ZDFlMjMzMjMzMjE2NmViYWFhMDdiYmZmIGxlZ2FjeS10cnVuaworMTA3MzkgMTA3YTg1MjViZjVlYjVmNjBkNTJmNDNkMWFkZjRjMTI0ZDkyZmFiNiBsZWdhY3ktdHJ1bmsKKzEwNzQwIGViODM1ZWQxZjZmZTgzN2E4MGMxYjVhNTU3YjRiYWQ5ZDVkY2NjMzEgbGVnYWN5LXRydW5rCisxMDc0MSA5YjA3ZDI3YTMxYmQ3OWE1ZDRkYzU2NzAyMTlmZGMyNjAwZmEzNTNkIGxlZ2FjeS10cnVuaworMTA3NDIgZDgzZjFiY2JiMTUwNWM2YzhiN2NhYjZkZjBiMGUyOWE5ZTE0MDRiZiBsZWdhY3ktdHJ1bmsKKzEwNzQzIGI4YmE4ODg3ZDU5ZjdmNmJjYjBmMTU2MzBiZmJkNTBmMTI0Njc4ZmEgbGVnYWN5LXRydW5rCisxMDc0NCA4YjgyMjA4MzcyNmIxYzZiMzZkNjkwMDczYTk3ODcxYmYxMTYzYjczIGxlZ2FjeS10cnVuaworMTA3NDUgYjRkM2QxYTA4ZTRkYWU2MTkzODRhZGVjOGM1YzI3YWFmODgyYTBlMiBsZWdhY3ktdHJ1bmsKKzEwNzQ2IGNlMWVkN2ViNzc1MDc3OTZlMTgyYjAwNDZkN2IwOWIwNzY4M2UwYmUgbGVnYWN5LXRydW5rCisxMDc0NyAwZDNiNzNkOTk1ODg4ZTliOWM2YzI1OGUwZTEwZjlkMmY3ZWU1ZDI5IGxlZ2FjeS10cnVuaworMTA3NDggZWE0YjdhNTRmZDkyZmM0ZGE0NDljNWExZmE5MzJjMjVjMmU1MzYzYSBsZWdhY3ktdHJ1bmsKKzEwNzQ5IGMzNDU3ZmIxOGE1MTA3ZjZkMDdkZDUxOWI4Y2ZkZTIyMjBlODM3MGQgbGVnYWN5LXRydW5rCisxMDc1MCBlMTg0ZjgzYmJiNzk3ZDRjMDdkNTNiZjk4MmMzOTQ1MWU2MzVjZTkzIGxlZ2FjeS10cnVuaworMTA3NTEgM2Q2NWY2MTZmOTNlNWU0NTJjMDZlMTY4MmEyZDhmZjQzZGRlZGE1YSBsZWdhY3ktdHJ1bmsKKzEwNzUyIGFhYTFjOGI1MjlmNTI1ODAxNjU4YjBiZWVmMjBlOTYyNGEzZGExMmIgbGVnYWN5LXRydW5rCisxMDc1MyA2NmEyZWE2M2I0ZDg1NzhhODRkOTE2Y2RiYjBkNDNhN2NjMzc0ODIyIGxlZ2FjeS10cnVuaworMTA3NTQgZTQ2OWE4YWYwNGIyMWQ0ZmUxNGZhZDA0MDhhODE3YTI5OTgxZDVmMiBsZWdhY3ktdHJ1bmsKKzEwNzU1IDJkZDg5MGFmMTg3ZTEwNDQ2OTcyZTBkZDgyNjU0NDU0MGQxMGY4NzMgbGVnYWN5LXRydW5rCisxMDc1NiAxZGI0MDk5YTcyY2U4YjA3OWMyMTA0ZDdmN2FjNjljODMyN2Y0NjY3IGxlZ2FjeS10cnVuaworMTA3NTcgN2IyNTAwNjU3OWY0Y2ZjMjVjNmQxMDk5OTE3MWMzNzA1ZjgwMzY1OCBsZWdhY3ktdHJ1bmsKKzEwNzU4IDcwNzY1MzFlZmI4ZmRiMzNjZTZjZWY0NTBmMzM2OTc1Y2VkYjY2YjkgbGVnYWN5LXRydW5rCisxMDc1OSBkODFmMzE2MTU2N2I1ZmYxNzVjYTY4OWYwMjllOTI1MzQ4ZjI5NWI0IGxlZ2FjeS10cnVuaworMTA3NjAgYzdkMGI5NzFlMGUzOTI1YTM0NWVkZDk4MTg0YmE0ZGJiZDBlYzc1YiBsZWdhY3ktdHJ1bmsKKzEwNzYxIDM1ZDFjZWVkNjliOWVhZWZhNGU0ZjllMzAwYzdmZDEwYzg5NjlmNjUgbGVnYWN5LXRydW5rCisxMDc2MiA2MzFhMTU5Y2YwNDBiMWE5YjMzNTBkOTkzZWEwNTM4Y2ZiMjY1MTNkIGxlZ2FjeS10cnVuaworMTA3NjMgMmIyZDIxZWZjNGQ3MTVlMTliMDgwZjI4ZDZhY2YzNzljYTkwMDYyOCBsZWdhY3ktdHJ1bmsKKzEwNzY0IDY1ODhhZGUwZWZiNzc0ZThiYjhkZDJkZGQ5N2IzOWJhNzFhNTVhMDcgbGVnYWN5LXRydW5rCisxMDc2NSAzODE4YTE5Zjc0N2YwYTg4NGM0ZWYzOTA0OTdhMmE2MDcwOGM5MGFlIGxlZ2FjeS10cnVuaworMTA3NjYgZjgzNGUxOTdiZDE0NmRhNzI4ZTk2N2RlYTVjOTI0MWIwNDI3YzkxZSBsZWdhY3ktdHJ1bmsKKzEwNzY3IDMyYmMxN2Y3Yzc3YmNlN2EzNTU1NmFmOTQ1MGUxMmNhNWQ3NDA3MGEgbGVnYWN5LXRydW5rCisxMDc2OCA0Yzg4Y2M2MmU5ZTkwYTg0MzRmMDc1MGUzNzllNmVkNGE0OTY1Y2I1IGxlZ2FjeS10cnVuaworMTA3NjkgZDNiZjNjMmFkNzVhOWZlNmU1OTU2N2JjMGE4ZWU4YzhiOWM1ZWJmMCBsZWdhY3ktdHJ1bmsKKzEwNzcwIDZlZDhhN2ZmYzU5NTM3MDRhYjhmNDZiZGU4ZGEyZGVmNGFjYTQxODUgbGVnYWN5LXRydW5rCisxMDc3MSA5MjgxYjVkMzU2NDFhMGMwNWNkODBmZTAxNGJkMjkzMDQwNjc0NzdhIGxlZ2FjeS10cnVuaworMTA3NzIgNzRhOTEwYjg2YjQ0M2QzNTI1OTVlZjAzZmY3N2ZhMDVmZTg2M2E0OSBsZWdhY3ktdHJ1bmsKKzEwNzczIGY4YTM4OWIxMDRmMDkxYjJmNjNhMTZiM2M4NjY4MGRlOTMwZWQ5NTEgbGVnYWN5LXRydW5rCisxMDc3NCBmZjYzMTA3YzlmYTVkNzhmZmM4NGNhNDJmMjEwMjE2ZmQyNWY1ODMxIGxlZ2FjeS10cnVuaworMTA3NzUgZjJiYjhkNTE5NWI2Njg3NGE1MjM3MmI2ZjJjNzhjY2MyOTI4Y2Y1NiBsZWdhY3ktdHJ1bmsKKzEwNzc2IDM1ZWEwYzA3M2VhM2QzMTE1NDg3ZjZiNzNiMDgxMTkxNzdlNjU1ZWUgbGVnYWN5LXRydW5rCisxMDc3NyBiNDM4OTg2YjNjMDhkODNjMTMzZDZhZTg0NjFmNzM4Njg4MDdmYTc0IGxlZ2FjeS10cnVuaworMTA3NzggNWRkNmYxZmY2NmJjMDUwOTk1MjA2MWQzMTdjYWNkMGYyNGJhNjNmMSBsZWdhY3ktdHJ1bmsKKzEwNzc5IGJmOGU4NmI5NWM5MjI2YTU3MDk2MTExYjI3MTM3OTM4NjkwYTA2YWEgbGVnYWN5LXRydW5rCisxMDc4MCA5ZGQ3OWQwMTA0ZDk2ZjRhNTg4ZTZmOGIxNTU4ZmZmZDFlOGQ4ZDIxIGxlZ2FjeS10cnVuaworMTA3ODEgNGMzYzEyZTk1NmE3NTU4NWI3MzRkMDY2NzMxYjI3ODViM2UzYTMyMyBsZWdhY3ktdHJ1bmsKKzEwNzgyIGUzZDIxYzRjYTM2MmZkMzA5MDc2ZmEzM2VlNmJhYjRjODkyODBlOTYgbGVnYWN5LXRydW5rCisxMDc4MyA4YjUwNzUxZjI3MmM4NGVlODQ2OTQ2OTdjYjVkYjRiNjFiNjhiNTIzIGxlZ2FjeS10cnVuaworMTA3ODQgZDNmM2EwNTY4YmQ2YTA4ZDA4M2Q3YzQzNzFmNjZkZTQ0YjliYWMwNSBsZWdhY3ktdHJ1bmsKKzEwNzg1IGI1OWI5OTQyYmFjOTYxZWNhNWRiMzdiZTVlYWZiMjlhYmYwZTJkYWQgbGVnYWN5LXRydW5rCisxMDc4NiA2MjNjNDU5ZjhmYmVkZWI3NmRmMGQ0MzU3ZWU2ZTlkMTAyMTUxNTcxIGxlZ2FjeS10cnVuaworMTA3ODcgMGQyZDYxZjUyYjljNTJkNjFlOTVlODI1OWNmMDAyNjQ4NDdiNWYyMyBsZWdhY3ktdHJ1bmsKKzEwNzg4IDQ2NzRjZDJmNmYwNzJiY2U4ZGQ3YWQzZjVhYjJlNjU0ZjkyNDA3MjcgbGVnYWN5LXRydW5rCisxMDc4OSAwOGRmOWNiNTczYWRhYzgxNTY5MDIyOTQ0ZjYwYmJmMWI4ODQ0MzkyIGxlZ2FjeS10cnVuaworMTA3OTAgZmUxZmQ1NmNhZGE3MDIwMDJlY2E1MGU2ODIzNjc0MWY0YzU4N2E2YSBsZWdhY3ktdHJ1bmsKKzEwNzkxIDQwNzA4NTlmZTYyZWVhNDA4NDFlNTc0NjU5YjVkODgwYjIwNWMyNzYgbGVnYWN5LXRydW5rCisxMDc5MiA0MTQyNDdkNGZlZDczYTNiZGIzMmNkYmRkMjc1ZjRkNWZiYzg4NWViIGxlZ2FjeS10cnVuaworMTA3OTMgZjRmYzlkMThhNTNkNDczMzgxNDhiOTE0NDkyNjcxZWNhN2RiOGJjYyBsZWdhY3ktdHJ1bmsKKzEwNzk0IGQ2N2JlMTNkYTNjYzE4ZTQ5NDRkZmE4NzU3YjIyYjBjZDMzN2U5OTMgbGVnYWN5LXRydW5rCisxMDc5NSBjNjIzNjBhYTVlYTQwYWFiOGI5YWVlODdmYTRkOGFkMzAxNThhYTcyIGxlZ2FjeS10cnVuaworMTA3OTYgZjk0ZDVhZTY0MmE5YjFjZGU4ZmViMTA3MmY5ZGY1YzJkYWEyZmVkMCBsZWdhY3ktdHJ1bmsKKzEwNzk3IGU0MmI5NDI3NTY1MmI5ZDU4MWJhNDY2MDdkNWViOGMzNTgxZjcxMTQgbGVnYWN5LXRydW5rCisxMDc5OCA2M2NjZTlkNzc3OTc2MjJlNTk0NTczYThjOGQxYzIyYTY2YjU2MWRmIGxlZ2FjeS10cnVuaworMTA3OTkgODEwNTc5OTZmZjIxZDFjNGFmMmIxMjk5MzFiODU1NTY0ZTJjOTdjNSBsZWdhY3ktdHJ1bmsKKzEwODAwIGVjODdiNjI0NjZkM2FhZDRhNTEzZjNlMmE0YzNmZWExYmIwZDM2ZmMgbGVnYWN5LXRydW5rCisxMDgwMSBkZjQwM2VkMzViZGRlMDBhMGUyN2M3ZTU2YmU5ZDc1MTQ1ZWZlYWE5IGxlZ2FjeS10cnVuaworMTA4MDIgYzE0ZTY4ZjU5MWNlMzA1YmQ4ZGRjZjM4NGM0NWZlMmEwYWIwZTNiOSBsZWdhY3ktdHJ1bmsKKzEwODAzIDlkZGQ2NzkzMTlhOWQ4MTAxNGM1MzliZmNhMGU4M2NjNDM5OWRlZjMgbGVnYWN5LXRydW5rCisxMDgwNCBlNmVmMGUzOWUzNWNlZDhkNjk2MmQzOWMxMDk1N2Q4YmY5YWQ5NDZhIGxlZ2FjeS10cnVuaworMTA4MDUgZTEzOTIxMDUwMzI3ODNjNTg3MmIxNDdkYmVjOTI5YjFmOTI5YjdkNiBsZWdhY3ktdHJ1bmsKKzEwODA2IGM0OWM4ZjdmZGZmMTg2Y2UxNDNiMjI0Y2Y3NjRjNDllOGYzMjk3MjggbGVnYWN5LXRydW5rCisxMDgwNyBhZjExZGJmMzVlZTVlOWZhOWFmNDE4MGE3ZTc3YjJlMmMzMjczNjMxIGxlZ2FjeS10cnVuaworMTA4MDggYTIzYjc1MTM4YmIwZmIyM2ZmYTM0MjQ0YjBjNDExNTJjMGZlNzM0NyBsZWdhY3ktdHJ1bmsKKzEwODA5IDE4OTc3NDc3MzhmNTk4ZmEzMWFlNzE4ZDUyN2IxNzJiY2YxZjcyMmUgbGVnYWN5LXRydW5rCisxMDgxMCA0ODI0MGY1MjVlYzNiZTU4M2M1OTViYTlkZDZlMzQxOTIyYTY1ZGE1IGxlZ2FjeS10cnVuaworMTA4MTEgY2Q4Mjg0NjJhY2JiODJlYzA5YjAwOGRlYmI0ZDBhNDE5NDM1NjBiNiBsZWdhY3ktdHJ1bmsKKzEwODEyIDdhMWU3ZGE5MjJmODcwNTcyYjk4NDMyYjU4MGIwYTVkZDBlY2I1Y2UgbGVnYWN5LXRydW5rCisxMDgxMyBjNTliNTczNmYzMDdmMzUwZTFhMDdiM2M5NWU3NWI2ZGU0ZDBlZmQ0IGxlZ2FjeS10cnVuaworMTA4MTQgOTY3OWU3N2Q0MmUzZDU4ZWFkYjgxOTFjODcyYjVmMzJmODBjYzQzZCBsZWdhY3ktdHJ1bmsKKzEwODE1IGE0YWU3OTJiOWI2ODAyYWQyMGVmYjAzNGRmN2Y4YmIxZGJmMjVhNTggbGVnYWN5LXRydW5rCisxMDgxNiA1YmZiNWVkYzMxM2NiNjYyMTMwMjUzYjdkZWQ2OTZlZWU0NmU4OGUzIGxlZ2FjeS10cnVuaworMTA4MTcgYmYxMTI2MjAyNmJkZjc1MjQ0YzRjYzU4NmM3MzE2NjdiMDMwODI0MCBsZWdhY3ktdHJ1bmsKKzEwODE4IDZiNzA5NWI5OGU1NGNhNWIxMWI3NmU0NDYwYjE2ZWMxYmRhZGQzNjkgbGVnYWN5LXRydW5rCisxMDgxOSA4ZDkwZTc4MWFkYThiYzBhOWIwZGY5MDJiYWZkMzZlMjcxNGZmMjEyIGxlZ2FjeS10cnVuaworMTA4MjAgNzY1OGM4YTE0OWQxODViMzRiYTBhYTA4YmYzZTZjMjE1OWY2MmZiNCBsZWdhY3ktdHJ1bmsKKzEwODIxIDI4ZGFlOTFjNWQwY2NkZmZkMzQzMmRjMDA1ZTAwNzA2ZDIwMDZkZWIgbGVnYWN5LXRydW5rCisxMDgyMiBhODRmNjU4ZDRiYTRjZWNiMjJjNTJlODQzYmYwOWQyMWJiNzVkYjk1IGxlZ2FjeS10cnVuaworMTA4MjMgZWJmZGUwNmZkYjhkOGNkOWRmNWU1M2JmMDMwMzZkMGZjNjhjNzNjOSBsZWdhY3ktdHJ1bmsKKzEwODI0IDIyODE1YTBiMTI2NzU2ZTQxZDgxNDAzZjU1NGZlY2JlMDY1OTUzZDYgbGVnYWN5LXRydW5rCisxMDgyNSAxYjRhMzdmMzczNDUwYWRlOWIyMWUyMGZlZGJmMGNmZmM5NWFjMDI3IGxlZ2FjeS10cnVuaworMTA4MjYgZDJkODJmN2I0MTlhNjAxMWRmYjNmNzIyZmU2NmRkZGI5ODJhNmVlOCBsZWdhY3ktdHJ1bmsKKzEwODI3IDA1MTk2YTRlNTQ0OGJmOGNjNWJjNTVkZGZiMGZhMjViOTE2MDFkNWYgbGVnYWN5LXRydW5rCisxMDgyOCAxYjM5M2RiMDBiMWFiOGNiM2VjZjBiZGM4NDQxMzdhYTlmYTUyNGQ0IGxlZ2FjeS10cnVuaworMTA4MjkgZTdkZDk5MWZhYTRhZjE5MGMwOTdmNDYwY2U4MGEyYzFmMDA5MzAzMCBsZWdhY3ktdHJ1bmsKKzEwODMwIDhkOTM3M2JkODM4NGRmY2M2N2RiN2JiNmE1YWJlOTFmODljNGI2ZjMgbGVnYWN5LXRydW5rCisxMDgzMSA0MTcyZGE5MTQ0MWFhMGY1NjQyYWU4ZjFkYzY1NjM3NGYzMmQ4NjFhIGxlZ2FjeS10cnVuaworMTA4MzIgNTJjMzM5NTI0NjBhOGY0NDdhMmQ5YTRhMTA5NjAxMGJiODJkMTUzNyBsZWdhY3ktdHJ1bmsKKzEwODMzIDI1M2JmY2I2NWI3NzM0M2FhMWE4NjA2ZGI1MjdmZjNhZGJkMzEwMGEgbGVnYWN5LXRydW5rCisxMDgzNCBjNTcxNTU0MTM0ZDE1MDUxNzI2OGIxODA3ZTA1ODQzMjRkODdlZjljIGxlZ2FjeS10cnVuaworMTA4MzUgYzg5MTkxYzJlNjNmMDIwOGY5MDFmY2UyYmJjYWI5MjFmMzQ2ZTliZiBsZWdhY3ktdHJ1bmsKKzEwODM2IGYzMDg5NjFiMDNkN2Q1MWRlZjlmODhmZTAzNDc5YjlkZmQwMjAzZjEgbGVnYWN5LXRydW5rCisxMDgzNyAxYmMwZGY5NmI0ZGRjM2U5MDZmMWQ3YmMxYTgyNGEwZjE0N2QzMGJlIGxlZ2FjeS10cnVuaworMTA4MzggYTc0MjNlNjhjZWU5NDc0MWY2YTU5ODliZDU3ZjNiMzc3NTE3OTExNCBsZWdhY3ktdHJ1bmsKKzEwODM5IDgyMGYwNmJiNDFjN2Y1NmY1ZjU0NGE1ZTY5Y2EyNjRmZjNmOGViMzAgbGVnYWN5LXRydW5rCisxMDg0MCBkYTRiZGNlZWFhZDdhNzY5ZDM2Y2E2N2E4NWYxN2VlNDk0NzdiNDhjIGxlZ2FjeS10cnVuaworMTA4NDEgNzM5ZDVmZGFmYzMyZWIyYTYwOTdlNmE1ZTNjMzU1MzZmMjU5ZmI5MiBsZWdhY3ktdHJ1bmsKKzEwODQyIGUwNzQ2YTBkYTczNjJiMDMyZGU5NjVmYTdjNTBkYjFmNGVmOTA4NzggbGVnYWN5LXRydW5rCisxMDg0MyBlODBkNGMzZGJiNzg3YzhlNWM5NDlmOWY5NTNiMDk1ZWMwNWEzYjE0IGxlZ2FjeS10cnVuaworMTA4NDQgZTQxMjExYTdhZWYzZmE1MTFlNGE4ODI2NzEzYTQ2ZTVjZmNjZDVlZiBsZWdhY3ktdHJ1bmsKKzEwODQ1IDUyZDdhOWU3MTIyMTUyYTlmNzdhM2IwNzRhMmNlYzliNTNiZDJiNmUgbGVnYWN5LXRydW5rCisxMDg0NiA0NTViMjI5NDU0ODJmZjBmNDY2MWNlNWY5ZGQ4Yzg1NGJmZmQ2YWJkIGxlZ2FjeS10cnVuaworMTA4NDcgNWY4M2Y5N2FhZWI4ZTE5MjM5MGMxNjUxN2ViMDZjZTg0MGY1ZDY3ZCBsZWdhY3ktdHJ1bmsKKzEwODQ4IGUxN2EwMTlmOTM5MGY3ZjUwZGZlYWJiZWI4MWUyNjUyZWQxOTAzZjMgbGVnYWN5LXRydW5rCisxMDg0OSBhNDY0ZTljOTg1ZjhlNWJmOWRjNTFiZWRlZTJiZTMzNjIyNTJmZDY1IGxlZ2FjeS10cnVuaworMTA4NTAgMWM3YTgyZDQ2OWUwNjcxNjdhZWZkNmFhMjhhNTQyZTg4YWFmNjhhNSBsZWdhY3ktdHJ1bmsKKzEwODUxIDY1MGJkMTNiZWM5MmQxMTNmZjQ5YzkyM2FjMjk1NDVhNzdiMDY0ODMgbGVnYWN5LXRydW5rCisxMDg1MiBmMmIwODU5ZmVjZTNiYmU3ZjU5NzAwMmI2NjhmNTNkZWUwNDllNTEzIGxlZ2FjeS10cnVuaworMTA4NTMgYTY1OTMwZjVjZGRiY2RiNWY3MmViMTE0ZmJiNDFlZjAyMjdmY2YyOSBsZWdhY3ktdHJ1bmsKKzEwODU0IDZhZDdjMTY1NmQxOGI2OTM0MTlmYzA5ZjE1MWJlOWQ0MTdiM2E2YWUgbGVnYWN5LXRydW5rCisxMDg1NSA2YzgyNmVlM2U1NTM4ZTQxMTU4YzhmYmZiYTc1Mzg2ZGMxMjA2NmI3IGxlZ2FjeS10cnVuaworMTA4NTYgYTFiZmU1YmM2ZDhlYTgxYTQ0MzhjMDc1MGYyYWExZDk3NmJiMzUyMCBsZWdhY3ktdHJ1bmsKKzEwODU3IDI0MmIzYzljNWJlYzI3M2JhOGFkOGUzMzdhNGZiMjZhOWQ2OGUxMWQgbGVnYWN5LXRydW5rCisxMDg1OCA3N2MxZjExZDBhOGFmY2FmNzA4OTAxZDg2YWZhZWI0MmIyM2M5ZWYxIGxlZ2FjeS10cnVuaworMTA4NTkgOTVmN2M1MmI2Mzk5NDc3YzIzNDdmODFlNzQ5MTE4ZTAyYmJlMGJlYiBsZWdhY3ktdHJ1bmsKKzEwODYwIDdhYzE1ZjFlNTMwMjEwOGY0ODMxNjViOTc5ODg5Njc0YzA2OGY5ZWMgbGVnYWN5LXRydW5rCisxMDg2MSBmNWViY2M3YTVhYjI2ZTFmNzEwNTU5MjlmMTc1OTY3Y2JlYTcyM2IzIGxlZ2FjeS10cnVuaworMTA4NjIgY2QyZGZlZDBjNDRiNTNhNDhjMGZhNTIxY2IxMWFkNDMyN2ZkYmI2NiBsZWdhY3ktdHJ1bmsKKzEwODYzIDgyMmUwODEyZjIwYzM1NzJkMGU1NjQ5MmQ2NmE2N2FjOGFhN2RjMDIgbGVnYWN5LXRydW5rCisxMDg2NCAwNTgxOTBjOWE0ZjEyNmU4OGY1YTQ5YTgwYzEyNGY5N2YxN2ZhYjlhIGxlZ2FjeS10cnVuaworMTA4NjUgOTFiYjVhODA5NDgxYTJiMWM5NmZmNWMwNzMyZGQ2MGE1M2NkZTA4NiBsZWdhY3ktdHJ1bmsKKzEwODY2IDc1MmI5ZjU1NTc4OGMwMjc3YzE4MTA3NzIzM2MyZTQ0YmFjYTc2MTkgbGVnYWN5LXRydW5rCisxMDg2NyAzYTMxMDAxODQ5NDk4ZTM3NGMwMjQzN2YwNjgyMzk2ZjUyOGE3NWI1IGxlZ2FjeS10cnVuaworMTA4NjggZDZiODYzZDFiZWI5MjQ0YWNmYjc1YzJmZjUyZDQzNDFlYzE4MTcyMSBsZWdhY3ktdHJ1bmsKKzEwODY5IDhlOWQ1ZTUxMDNmNWRjMTc1YjFhODZiZjlmYTcyYzJiMGQ4MTJlM2EgbGVnYWN5LXRydW5rCisxMDg3MCA3M2EyNTc3OWU4MzcyZTExZTAwMDAzZmY3NWI0NzgxNTUzYmExYjVjIGxlZ2FjeS10cnVuaworMTA4NzEgZGU2OGY4M2MxNjljYTY4OGU1Mzg5MjJmN2Y0MTc0OTkwNTA4MTZjOSBsZWdhY3ktdHJ1bmsKKzEwODcyIDc2Y2QwMzk3OWZjYTQyM2E4NzFmMDQ5NjVjYWU1Zjc5YWJlZmEyZDIgbGVnYWN5LXRydW5rCisxMDg3MyBhNTgyZDcwZTMxMmZlZWQ5MGE5MDczNDk5MGFmN2FmZTcxMDU1OGZiIGxlZ2FjeS10cnVuaworMTA4NzQgZWY5YjkzYjJhMGZhYTMzMGI0ZjNiNzdiZTAyNGFkNDJiZWY2NWE2NCBsZWdhY3ktdHJ1bmsKKzEwODc1IDc2NjlkZGYwZTdkNDk1MGE3Y2E4ZjNlODNmNjU2ZGVjMGQ2YWIzYmUgbGVnYWN5LXRydW5rCisxMDg3NiA5M2FhMDhjNzdlNjBlYjJiZGZlZGVhZTM5YjdjMmQ3NzczOTkyZDY0IGxlZ2FjeS10cnVuaworMTA4NzcgZDdjNTY4ZTc3MDdiZjE3OThkNDVkMjYxMDUzMzZhMDUzZjI4M2UwOCBsZWdhY3ktdHJ1bmsKKzEwODc4IDc5MDcxYTRlMGVjYWI2MzE0M2U5ODNmYmJlZWE0YzdkOTkzOTVkNzcgbGVnYWN5LXRydW5rCisxMDg3OSBjOWI3ZTkyNmZkODY5OTVmMTgxMDYzNTI4MjJkMGJiYmI0YmU5YzYxIGxlZ2FjeS10cnVuaworMTA4ODAgZmYzMWYyNTAxNzQyNTM1MmMzMWZkODI3Y2JiMGQyODgzNmM3NDUyMyBsZWdhY3ktdHJ1bmsKKzEwODgxIDRlZjdkMjYwZmVhYzkzMWVjMThiNzlkMWQzNTFmYWJmNmU1YWE0MzMgbGVnYWN5LXRydW5rCisxMDg4MiA2MjcwYzZiYWQ4MTE2ZmUxN2E3ZWQ0YzgxZDUyOWYxZDBhYjQ5NzBiIGxlZ2FjeS10cnVuaworMTA4ODMgNzBmOTNlMGM1ODBlZWNhZmJhMjkyOTc1YTkwNjc1YjYyNWQ3M2Q0YiBsZWdhY3ktdHJ1bmsKKzEwODg0IDBjYjAzOTRjMmVkY2ZlMTgzY2Q3NzdjODdiZTg2OTliNThhNTllMjMgbGVnYWN5LXRydW5rCisxMDg4NSBjNGRmOGI2NjM3YjY5NDViMmY5ZTgyMzYzYmY2ZDE1YzcwNzYwYTlhIGxlZ2FjeS10cnVuaworMTA4ODYgNjRiODhhMTc4MzI4NjkxY2Q0YzI1ZTc4ZGU3YTVkZmZiMTVjOThmOCBsZWdhY3ktdHJ1bmsKKzEwODg3IDNjNDBhZjJkMWRlOWUxMzRiNWU3ZGJkNWUzYjEwNzJmZmJhOTYyZWMgbGVnYWN5LXRydW5rCisxMDg4OCA0YTMzYmI3YWRmN2Q2MWJiODQ2ZDI0OWEzYTAzN2UxMGE0ODFmOWUxIGxlZ2FjeS10cnVuaworMTA4ODkgMDk2ODU3YjBlNGI4NWRiZGNlMDdjNzY5MDJlMWY5OTg3NjNiOTg1NCBsZWdhY3ktdHJ1bmsKKzEwODkwIDhhNGZlMTk5YjQ1ZGVmNzI4Y2MyZDMyYzFkODEzMDFlZWQ4OTVlZDMgbGVnYWN5LXRydW5rCisxMDg5MSBmMjE4NjdmODAzNWJkMzg5OTVjMmYxYWFlMWMzN2Y4MDVmNzM4YmQ2IGxlZ2FjeS10cnVuaworMTA4OTIgYzllM2NlOGU3NGI1ZDdmNTFiNGYwOTNhMmEyNjdjYmVjYmQ2YzljYSBsZWdhY3ktdHJ1bmsKKzEwODkzIGRiOGIxMGI3Y2NmMjI0OTc1NDcxODgwNmY1MDQxM2IwMWE2ZTdhZTQgbGVnYWN5LXRydW5rCisxMDg5NCA0NTA1MTYwYTdlNWM2Y2UxMzZkZjExMjAyZTk5YTY2NmU5OWQzMWFiIGxlZ2FjeS10cnVuaworMTA4OTUgNTVmYzhkOTMzMDg3NjZmMTg5YzljZjY5MTAwZTgwNjQ2MTZjYjk2YyBsZWdhY3ktdHJ1bmsKKzEwODk2IDQwNjRiNjcyOTUzN2YwMzFjMDg3Nzk5NzhlZTZiYTYzMzIzMzJlZjggbGVnYWN5LXRydW5rCisxMDg5NyBlY2RkNGI0Njg2MjY4NTkyYzg1M2U3NGI2MjA5YTcwYTBkMzI5MWZlIGxlZ2FjeS10cnVuaworMTA4OTggOWVhNTAwMzExNDljMjIwNGU3YjU4ODZkOWMyYmY2MzAwNDBhNzU2OSBsZWdhY3ktdHJ1bmsKKzEwODk5IGYzOTg0MTlkNTBmOTc0YzU1NWViNmYyOTIzZGY5Mzg1MTQ5MmQ3YmMgbGVnYWN5LXRydW5rCisxMDkwMCBiNWZmNjYzZWU3NmQ5ZWMzMDYzMTQzNmE2ZTAwYjgzNDY2M2ZkYzRjIGxlZ2FjeS10cnVuaworMTA5MDEgYzg1ZTE0MjkzYzJlZTFjYzQ1MTYzZjg1ZGVjZmUyMTE0OTQ2Y2QwOSBsZWdhY3ktdHJ1bmsKKzEwOTAyIDMwNGQ0ZTQ4ODdmNGNhNjBhN2M0N2YzMzdiMmJjMjJmYThjMmMxYmUgbGVnYWN5LXRydW5rCisxMDkwMyBkOTZjYmRhY2JlNzIyNGM5Zjk4YjYyMDMwZTlkMjk4ZWNmYmY4ZTk4IGxlZ2FjeS10cnVuaworMTA5MDQgNDcyZTQyNTQxNGQ4MjQ3ZmQ5Mzc1N2M5YjU1MzUyMTE0YzY3NDhmNiBsZWdhY3ktdHJ1bmsKKzEwOTA1IDBhMDBkZDU3MTFlNjIxMzE5ZjlhYWFlOGFiNmVhZTE2Y2M5NzRjZTggbGVnYWN5LXRydW5rCisxMDkwNiA3NTZlMmVmNTFiMTljNjNmZDA0ZTg3OTQ4ZjU2YWJlODY2NDRmMTQzIGxlZ2FjeS10cnVuaworMTA5MDcgZTJkNDFiZjFhMGYwNGNlZDc1ZDMzMDNkNmVlMTUzMGFkMjdiZDEyNyBsZWdhY3ktdHJ1bmsKKzEwOTA4IDBiM2U1NzdhOGRmNDdiZmZlZjlmYTUwNTdjMzJjYWQ3ODEyNThjMDEgbGVnYWN5LXRydW5rCisxMDkwOSBlOTZlM2QzODc2MTFmMDNhMjdjYmJiNmJiZjM5NjViYjEzMjIwMDIzIGxlZ2FjeS10cnVuaworMTA5MTAgM2U2NTNlMjA0YWQ3YmJmZTlhNDZiNzAxN2JmNjIzMDA5Y2Q0ZTU0NCBsZWdhY3ktdHJ1bmsKKzEwOTExIGY3YzU4ZWQyOTgxZDFlYjFiZjUzNTNlNjhkYjQyNGM5OTkzOTNkMDUgbGVnYWN5LXRydW5rCisxMDkxMiAxMmRkYjliZDBkMzM5MWQ1NjMxNGMwOWJkMjYwMTcwOTI4YmQ0OTQ0IGxlZ2FjeS10cnVuaworMTA5MTMgODJmMDIxZWVjZTJjNzg3ZWJhMDIzM2YxMjZlNjg5Zjk5OGJhMGM1YiBsZWdhY3ktdHJ1bmsKKzEwOTE0IDkyYzBjOThiNDJjNTM2Nzc4YjUyM2M4ODk5MDU2YWJhOTE1MmU0NDQgbGVnYWN5LXRydW5rCisxMDkxNSA3Y2RmZjhhYTgzMTgzZjdmNTFkMzFiNjE3Y2JmOGU3NTZkZGU0OTdkIGxlZ2FjeS10cnVuaworMTA5MTYgYWU3NDZlYWIyYTk2MDU1NGE4NWU5ZTg4NzU1OTE1MTA3MWRiNGY1NSBsZWdhY3ktdHJ1bmsKKzEwOTE3IDc4ZWI0MGYwMzI4NDNjYjFlYWExNDQyMGIwODA2ZjQzMTA5Yzg4YWMgbGVnYWN5LXRydW5rCisxMDkxOCBhOWE3ODhjNzRkNmU3YzI1MTVlMDNjMWU5ZjZhZmY0ZTc2YjYzYjc0IGxlZ2FjeS10cnVuaworMTA5MTkgYzdiMDQzMTM2ZmRiZDgxMWIzMDg1YzQ0ODQyMDBmOTU2ZWJhM2Q1NiBsZWdhY3ktdHJ1bmsKKzEwOTIwIGMwNTliYmQxNGIyMzJkM2VmZTI0ZjEyNWU0NjNiNDEyYjIwYjRmNmIgbGVnYWN5LXRydW5rCisxMDkyMSA1MzQ2MDI3NDYwNzlkMTNjOTI5YmY5MTZiNjcwZDNlZTRmN2M4NTNlIGxlZ2FjeS10cnVuaworMTA5MjIgNzc0OWMzZTAzMjRhZjA2NmE3ZThiODVjZjVlYzQ2MTkwZDYxOGU2MyBsZWdhY3ktdHJ1bmsKKzEwOTIzIDllNGFlYTVhNjUyZDIxYWQwYjUxY2EyM2Q2MGUzZDg4M2Y5ZDk4MGEgbGVnYWN5LXRydW5rCisxMDkyNCBmZDVjZWZkZDFmNjFkY2Y0YmU0YmI4MDRkYWFlYzYyYmYzNGFlODEyIGxlZ2FjeS10cnVuaworMTA5MjUgYzU1MGVlNDkzNWIwYzc4NmVmZWQ3NzQwZDhkMzdjYjQyZmRhZWQxNSBsZWdhY3ktdHJ1bmsKKzEwOTI2IDZmNzBjYTdjODRlNjZjZDMyZDYzYjlmNzVhYmE4OWYwMmVkYjAwNmIgbGVnYWN5LXRydW5rCisxMDkyNyAwMjQ3MTQ1NTg2MjBlYmQzMzJlNjc1MGQ3YTRlN2U1OWZhYTM0YTkwIGxlZ2FjeS10cnVuaworMTA5MjggNTlkZmE5ZWI3YzA3MGZmNjVlYjRiMWQzZTI0MWU3NTU2MDE4Y2YxYyBsZWdhY3ktdHJ1bmsKKzEwOTI5IDRlNjY4ZjFhOWRkZGVmNWEyYTRjYTNmNjM0YzdjZGM3ZWUwYThjNjEgbGVnYWN5LXRydW5rCisxMDkzMCBhMzQxNjA5MWMyYTI1YTM2MTMxYWUzODEwNjYyNWIyODM1MmYzMTEzIGxlZ2FjeS10cnVuaworMTA5MzEgMzZlYTEzYmEzMTM2NDQzZjcyYmU1MjgzNDZiMmIwNGZkYzVhMjA2MyBsZWdhY3ktdHJ1bmsKKzEwOTMyIDYxOTEyZDRhZDUyZjY3ODNlOWY5YjA1ZWMwYzU2NjU3MjY3MmI5ZjYgbGVnYWN5LXRydW5rCisxMDkzMyA3NTRkZTYyMWU4YjMwY2U4Y2UyZDViMTkxZGQ4ZTdjYTkwNzgyMzA0IGxlZ2FjeS10cnVuaworMTA5MzQgODRkMWI3Y2Y4MTVhNzllOTIzZGRlMDQzMDgyNjdiOWI4ODU1MzVjYyBsZWdhY3ktdHJ1bmsKKzEwOTM1IDRlNTlkODkwYTRiZGFkOThiZWUyMTMzMjE3NTE0YzI1MThhZDdjYmIgbGVnYWN5LXRydW5rCisxMDkzNiAyYmQ4ZDUyMGZmYWMwMWE1N2UxOGI5NTQ0ODUzNzE5NWVjNjY3MmM0IGxlZ2FjeS10cnVuaworMTA5MzcgYWY5MjczYjEwNzNhYWFmODk3MjFiNDIxZjRiMjc4NGZmNjZkMDY5YiBsZWdhY3ktdHJ1bmsKKzEwOTM4IDkyYzg4Y2E2MmRhN2I4MTM2OTZmZWI1N2RlZmE2YjFmNWQ5ZGRiNGUgbGVnYWN5LXRydW5rCisxMDkzOSBhZjQ4ODg3Yzk3MTc2YjZlODU1MzAwMTk0ZTliZDRhZjA0YzczZTVmIGxlZ2FjeS10cnVuaworMTA5NDAgNTdkYWUxYzdlYTg0N2JiOTUxMDkyZDUxMmJiMWQ4NDJiYTY0ZDVjOSBsZWdhY3ktdHJ1bmsKKzEwOTQxIGY3NTBiMWZmZTM1MjkyZTJkYjc0NWZiYzBkYWY1MjVhMjA1NzFjZmIgbGVnYWN5LXRydW5rCisxMDk0MiAyMDk1YWU2OTBhYWNhMDRkNzQyYmZiYTdiOTRmYTU4NTZmNDdkM2MzIGxlZ2FjeS10cnVuaworMTA5NDMgMTAyNjdjNzU1NWFlNjUxMDE2NjhjNjQ2ZTY4MzAyZmUyNjQ0MzI0MyBsZWdhY3ktdHJ1bmsKKzEwOTQ0IGRhMDc2NjNmOWZmZjQ2ZmQwODE2ZDlhMDY0MTY4Nzg3YmU4NTBiYzIgbGVnYWN5LXRydW5rCisxMDk0NSAxMzNmNDU1NGEyNmQ1N2NlNTkzNGQ4OWVmZDZhNWY3OTIzZWNhYjdhIGxlZ2FjeS10cnVuaworMTA5NDYgNzE2MGU1MjllOWExZWIyYWU2YmNhYjkxYTk3ZmZkNWQzZWM1NTJlYSBsZWdhY3ktdHJ1bmsKKzEwOTQ3IDBlNmZiYmUzYjYzYzE0MGY3OGM2OTVmMmI3MTk4ZjE2NDc1ODk2ZDYgbGVnYWN5LXRydW5rCisxMDk0OCA0MTIwOWQ1ZDFkNjQ5MGM4MDdiZTZmOThlMzBiNGY0MWY3OTM2MTc0IGxlZ2FjeS10cnVuaworMTA5NDkgNzYzOGU0NTk0MjA2NzViNmIwODA1Njc4MTY4ZGYwNGI1MDkwNGE2NiBsZWdhY3ktdHJ1bmsKKzEwOTUwIGMyN2NkNWZjNDZiNTMyZmFkZDQ0MTFhZTdkMmVjMThkYjE1NGU3OTYgbGVnYWN5LXRydW5rCisxMDk1MSA5YzMyY2FjNTYyNTA1ZDNjZGUyMGVkOWQ0ZTk0NjFiYjM5MzUzNzBhIGxlZ2FjeS10cnVuaworMTA5NTIgOTMzODgyYzBlOWZiYTBhMmRmZWRkMDU4ZDk0MDU2ZWEzZGFiYzhmZCBsZWdhY3ktdHJ1bmsKKzEwOTUzIGM4OTE4OWIwMjM2ZWMxZjEzOTM5MGQ0OWM4MTIyNzYxODg5MTQ3YjEgbGVnYWN5LXRydW5rCisxMDk1NCBjNTU1YzcyZjA5MGRkMDg3MDUwYzc0YWUwZTY5NWI1OTMwMTU3Y2FiIGxlZ2FjeS10cnVuaworMTA5NTUgYTlkODhiZmEyNGFmMzcyMzg1MDNhYWJlOWNmNTkxOGUxYzdkZjc3ZiBsZWdhY3ktdHJ1bmsKKzEwOTU2IDA0OWFhM2E4YTE3MjBkMTRlZDM5ODQ0ZThlZDE4M2QwNDQzZDUzYTUgbGVnYWN5LXRydW5rCisxMDk1NyBmOGM2Y2Y1Y2ZhN2QwMTZjMjljZTA0NzRlYTdiYmExNmYxZjRkZjgxIGxlZ2FjeS10cnVuaworMTA5NTggN2Y5NWJiMmYxNzA0ODk0MzdiNzQyMTRiZWYxZWYzMWM3NDUzMjBkZCBsZWdhY3ktdHJ1bmsKKzEwOTU5IDNhODVhZDVlNDExNmNkNTA2ZTVjNzY1ZDJhNGNhMmNiYzdlZTQ5MmIgbGVnYWN5LXRydW5rCisxMDk2MCA0YmE1ODdhYThhOThjOWM4Yjg0ZDk5ZjFiN2UzMWU5ZmY0ZWQ1MmY4IGxlZ2FjeS10cnVuaworMTA5NjEgZTI4MWQ1MDM2NzI1Mjk3ZjUxNWM0NTA5YThmZmQ2ZTQ0MDIwZTZjOCBsZWdhY3ktdHJ1bmsKKzEwOTYyIGQ5M2FlMzc0ZmI5OThhYmRiYTY1YzY2NDcxNDY0MTZhODY5NDU5ZTQgbGVnYWN5LXRydW5rCisxMDk2MyA2MTRhN2ZmZWUxMTMzZTcxMWM4YzJiY2M0M2QyZmZmM2U3NTMyNDYyIGxlZ2FjeS10cnVuaworMTA5NjQgN2UzYjcyZDhhZTk0NjIwMjA3OGMxNjAzMjQ5NGU1Y2YyNWMxOWM2MCBsZWdhY3ktdHJ1bmsKKzEwOTY1IGY2ZTkwMGRhMzdkYjQ1ODI3NGZkMTlmY2Y2M2NiMDEyYWYwYWI1NWEgbGVnYWN5LXRydW5rCisxMDk2NiAyZTRmMTc4ZDdlMTc1OTM4YzYyNzcyYmY1NjY1MTc2YTFkZjk5MjNkIGxlZ2FjeS10cnVuaworMTA5NjcgN2Y5NGI0OTU4MDU2MjllZTZlYjhjNGEyZTM2ODVjOGU3NmZhZGNmNiBsZWdhY3ktdHJ1bmsKKzEwOTY4IDUzYWZjZDI4MzI1ZWY5MTczNzVlNGY4NjI5NmI4OWYyM2I4OWU0ZWMgbGVnYWN5LXRydW5rCisxMDk2OSA1MTQ1Nzc0MGY1Y2FlOWQ1N2QyNjVhNDY2MjhmNzNkZTVhNGFmMmM1IGxlZ2FjeS10cnVuaworMTA5NzAgMzYwNDEzMWY5NDJkNjhmM2E2ZjM1OGVhMjJmNGY4YzEzNzM1ZDc5YiBsZWdhY3ktdHJ1bmsKKzEwOTcxIGJiYjdlMWRhNDY4NjIzNTFkMGU1MWZjMzkwYzVmNmQyM2ExNmNiOGMgbGVnYWN5LXRydW5rCisxMDk3MiA3ZDFkZmU2NmY2NGJjNTUxYzAzYjliOTVlOGU5ODgyMjAwNDliOTRkIGxlZ2FjeS10cnVuaworMTA5NzMgMDM4YTVjNDMzNTg2MWZlZDc1NjJiMmYxY2U2YTFjNTgyMjY4M2ZmZCBsZWdhY3ktdHJ1bmsKKzEwOTc0IGViNmY2NTk2NmZiMjJiOGYzNzBiMjRjMzhjOTk3Y2QwZmRhOTY3NTggbGVnYWN5LXRydW5rCisxMDk3NSAyOGY2YjAzYmI2NGYwNThkOWE1ZDdkODBhMzFjMDk4ZjZkOTk2YzI1IGxlZ2FjeS10cnVuaworMTA5NzYgZmMyOTYyNWRmNTMyNTkyYzU0OGUwNWNhZDVkMDVmZDQ3ZGI1MjViOCBsZWdhY3ktdHJ1bmsKKzEwOTc3IDAzNjNmMTk4ODdkMTViMmU2MGFmM2Y5ZmVhYTZkMzQ2NzljNzRjODkgbGVnYWN5LXRydW5rCisxMDk3OCAxZDhkYWI1YWE3ZDEwZTI5MzljNTg0ZDU5YjIyMzIwZTQyY2E3ZTUzIGxlZ2FjeS10cnVuaworMTA5NzkgMGY5MWMwYmJhY2M1N2M0NDJiYjQwOTI3Y2Y2YTIwZDhmYzMzYzZiNSBsZWdhY3ktdHJ1bmsKKzEwOTgwIDY5YzliYmI2OWFhYjI2N2ZlZjU5OGZmYmMxYmExYzBhZDNmMDc1N2QgbGVnYWN5LXRydW5rCisxMDk4MSAwNDQ3ZWY4NDgzYzhjNzU0ZTczZDEwNDA3NTRkYTlmY2U5MWJlYzkyIGxlZ2FjeS10cnVuaworMTA5ODIgOTJjZjdmNDI3NzIzMGU5MDkzZmI1NzczZGEyMmVmODg1N2RjZWZmOSBsZWdhY3ktdHJ1bmsKKzEwOTgzIGJhMzEyZTc5MGIyYTJjYjYzOWRhZjZhMmQ3YTZmMDg4N2FiNTgwZTggbGVnYWN5LXRydW5rCisxMDk4NCBiOGJiY2MwMDlhNmFiMzVkZmJhNzcyMTEyMTYyZjE1MzNmMzhlYWVhIGxlZ2FjeS10cnVuaworMTA5ODUgODVlNjgyMDQ4MmZmODM1Y2IxOWNiMTE4MjRmZjgxNDA1NmY0OTNkYyBsZWdhY3ktdHJ1bmsKKzEwOTg2IGRlMTFhODhhYzQ5OGViNGYxMjZkNWQ5NmViMjhiMTQxZjc0Yjk4OWUgbGVnYWN5LXRydW5rCisxMDk4NyBlODJkMDI3N2U2NTNjMDk4NWY1MGZmMTkzMTExOTNlZWFiYmRkNjIwIGxlZ2FjeS10cnVuaworMTA5ODggNmJmNWI4N2FmMDJmOWE2MGM4NGUyMjFjNTViYzVhMjA5ODQ1MjNiMiBsZWdhY3ktdHJ1bmsKKzEwOTg5IGY0ODA5ZmYxZjRkYTRlNmE1MmJjZjc5YWU4Y2QwOGRkNDljYzczM2YgbGVnYWN5LXRydW5rCisxMDk5MCBkZWQ2OWQxMmNjNjgzNWViMDQ3MjMxYzI5NDUxMzc1YTNkMTUyNzMzIGxlZ2FjeS10cnVuaworMTA5OTEgOGU4MjA3MTZjZjEyM2UyYzI1ZmU2NmQyNjk5MzExM2ZhMmMxNGRmZSBsZWdhY3ktdHJ1bmsKKzEwOTkyIGRlMGYwYzNlZDQyNGU2YTY1MzUyMDhmNWJhYzQ2Nzk1NGExMGJmZWMgbGVnYWN5LXRydW5rCisxMDk5MyA2OTY2MmYxNmE4Mzg5NjQzNjUwYTU2YjkyNmI5MDUwZjA3OThiNjc3IGxlZ2FjeS10cnVuaworMTA5OTQgNGRlZDQwMThiMGViM2NmZjMyYzM0YTU1YWZiN2QzODFlMGI1ZTZiYiBsZWdhY3ktdHJ1bmsKKzEwOTk1IGRhOWJmOWVlZDFmYzcyMjJhZjU3ZDRiMDc2YjM1NThhMDI2MTY0MjAgbGVnYWN5LXRydW5rCisxMDk5NiAxZWY0MGQ1YWNjZTIyYjc2NmU0MGIzZGZmZjUxNDZlNWFhYmNiMmU0IGxlZ2FjeS10cnVuaworMTA5OTcgMTZiM2ExMjFmZjc3MmUyNGRmZGYyYjI5NmU2ZjA2NTQxYWVhMTY0ZCBsZWdhY3ktdHJ1bmsKKzEwOTk4IDgxZTI5NDc3ZDJhNGMwYzc2MmEzMzJlNGU4Mzg0YzMyYzAwNTkxZTggbGVnYWN5LXRydW5rCisxMDk5OSA1MGU4N2MwOWMyMzY2YzMzMzhiYTNiZDIzZTQ3OGZhZTZlNjI1MTExIGxlZ2FjeS10cnVuaworMTEwMDAgYjU2OTgxYzBkNjFlYmIyYjgxZmYzODkzNTBiYTI2Y2NkNGYxZTU2YiBsZWdhY3ktdHJ1bmsKKzExMDAxIDYxYTljNTI5NDU1YTkwODJiZDllMmRiZGIyZjE2ZjRjZGM5YmY3ODcgbGVnYWN5LXRydW5rCisxMTAwMiBiOTQwMTVjMGM4MzdhZmU2ZDBlNzU1ZDU5MjUxZTA3NjBhMzdiMjU0IGxlZ2FjeS10cnVuaworMTEwMDMgMDY0Zjg1ZWU5YmU1YjA3OTVhMTlmOTMxM2FhZjE0MzZmZjhiNTNjMyBsZWdhY3ktdHJ1bmsKKzExMDA0IDRlNGZkOTU0ZGRhMGZiY2NjNDkwMjM3ZGIyODdkODk1YTk1MDNkYTUgbGVnYWN5LXRydW5rCisxMTAwNSBkOTk5MjBjMGJmYjAxNWU3MWNjZGI0ZWEzOWI5ZjA2OTFjNDMwNWIyIGxlZ2FjeS10cnVuaworMTEwMDYgNDdiZjNiYjk1NTZlMjFmOGMwNmE4YmRhNDNiZTIyY2E5NjVlM2E3ZCBsZWdhY3ktdHJ1bmsKKzExMDA3IGVjMjZkNTE0MmViNDQwMjEzNDhjZDNjNzMwNzg2OGIxZWUyNGFlOTAgbGVnYWN5LXRydW5rCisxMTAwOCBkN2UzOWVlYTc2ZjRjZTM4NmQ0NjRmODhiYjZlNTdlMWUwYzQ0NDJkIGxlZ2FjeS10cnVuaworMTEwMDkgNWYxZTQzMWEwYTgyNjhmNzNhYWI4MWE2M2JiNGFlOWI4ZmU4Y2EyNCBsZWdhY3ktdHJ1bmsKKzExMDEwIDNjOGIxNDliNDJmZjNhNjU2ZTY4YjM5MjBiYTNkNWM5MmViOWNiMTUgbGVnYWN5LXRydW5rCisxMTAxMSAwMzY2ZGFlZmEyM2MyNjk3MGQyNDdhNWIxYzM5Yzk1ZmNmYmUyMmUzIGxlZ2FjeS10cnVuaworMTEwMTIgNDgyOWI4ZmFmMmI0MmI0YzhlODRlM2ZhMzU3YmZmMzNmNTNhNGQ5NyBsZWdhY3ktdHJ1bmsKKzExMDEzIDE4YTkyODlkZjk5YTFmNWQzOGM0OTIyNzkxMGY3ZGJmMjlhYWExNDcgbGVnYWN5LXRydW5rCisxMTAxNCAyMTY2ODY2YWY5MmJiMTZjODU0YTM0ODdlYWY2OWM2YjE3NTYwNzIzIGxlZ2FjeS10cnVuaworMTEwMTUgZTVkMDZhNjAyNDY5Y2Q5ZGZiZDA2ZTdiYTZiZGMzNDI4NjAxMmYwZCBsZWdhY3ktdHJ1bmsKKzExMDE2IDVmNWI0OTJkMTgwNDNiYTYxNGJkYzcyY2Q3ZDBmYjhkZmM0YzE1N2UgbGVnYWN5LXRydW5rCisxMTAxNyBmMzFjZTQ2MjAxYzk1NjAxNzhmZDAwMTA0ZjhkMzU0OTQ2NWNiNzMzIGxlZ2FjeS10cnVuaworMTEwMTggMThhNGUwMzFkN2NhMGE2ODlmYWEyMjQwYmI0NzdkMTUwOGJhMjQxZiBsZWdhY3ktdHJ1bmsKKzExMDE5IDNjNDA2M2YwYTc4ZmFmMjc2NjUzOTcyZjc2MTdmOTc4Yjc2Y2M5YzAgbGVnYWN5LXRydW5rCisxMTAyMCAyMTM1ODdiM2I5ZDBhZjcwZTVlYTI4NjBlYzFjMDVjM2MwNGJiOWEyIGxlZ2FjeS10cnVuaworMTEwMjEgNTA5OWY0NGJhZjI1NWMxOTczOTczMmNmMmJlMTg4ZTdlZjdmMzIxZSBsZWdhY3ktdHJ1bmsKKzExMDIyIGY0YjYzNmQxNWFiY2Q5NWNkN2I4Y2NkOGU0MmZjNWMzYjk1NTRjYWMgbGVnYWN5LXRydW5rCisxMTAyMyBjZjBmYWFmM2MwNGI2ZGViZDA2MzliMDExMTZjMzA5MDY5MDE0NTQxIGxlZ2FjeS10cnVuaworMTEwMjQgNWMyZjE5ZDE5NjQzYTI4OWJjNzZkYjgyODkzODkxMGJlNWQ0YmYyNCBsZWdhY3ktdHJ1bmsKKzExMDI1IGU5NTFiZjJkN2Q5M2IyM2IwMzJkZGRhYWE0ODA1M2MzYTA4MTU1MTUgbGVnYWN5LXRydW5rCisxMTAyNiAzNWEyMTUxZmIxYzNmNjI0NzVhMjVhNTNiNzAwZWYwNjI4NWFjNmJlIGxlZ2FjeS10cnVuaworMTEwMjcgZTYzMzkzZjUzNjcwMjM0ODM5MjM2Nzk4NWE5NDEwZDQ4YTEwOWY5MSBsZWdhY3ktdHJ1bmsKKzExMDI4IGRjOGRhYTc0OGM0MDkzNDUxYWM4YTUyYjZkMGRhZTY4MDA3YjM2MWEgbGVnYWN5LXRydW5rCisxMTAyOSBkODRmMTIwOWNiYTUyOTk4NDY5MzY3N2VmYTJkNDg3YjM5MjYwNzVjIGxlZ2FjeS10cnVuaworMTEwMzAgZmFjMzM3MTZhMjE4MzRmOWU2ZjQ5NTg1NDQ1MWEwZTExNDhkMzkxMCBsZWdhY3ktdHJ1bmsKKzExMDMxIDFlYTE5NWIxNDI0NTk5ODRjZjk1MGExNzM4NTJkY2EzZjNmNzMxMWMgbGVnYWN5LXRydW5rCisxMTAzMiAxZTlkNjVmOWNhNTNjZjM3OWM0MDMzMDk1ZjNkNjMwZjI1YjZkMDlhIGxlZ2FjeS10cnVuaworMTEwMzMgNTg5YjY0MTM1ZWU2NTEyN2Y5ZDUzNWUzZTNhOGZmN2U5NWYwYTkzYiBsZWdhY3ktdHJ1bmsKKzExMDM0IDIyYTA3MjRjNmJhYzUxYTFhYjNkYzBiMDBjMjRhZGM3Mzg0ODJlODcgbGVnYWN5LXRydW5rCisxMTAzNSA0MzU3YjRlYjVjMTlhNjYxMDM0NGVmZTk5NWNjMTE3Y2E1OTM5ZTUyIGxlZ2FjeS10cnVuaworMTEwMzYgZDdjZTlhZTM2MmE5MDQxODFmZTM0NWI0ODMzZTgxZDE4NmYzMjM3MSBsZWdhY3ktdHJ1bmsKKzExMDM3IGY2ZDgyMzM0Y2ViMTU2YzYwM2U0YmQyZmI0MzRlYWZlMTM1ZmFkZjQgbGVnYWN5LXRydW5rCisxMTAzOCBkMGVlYzk2YjRjNTYyM2Q3YWUwY2Y3ZjgxODY5ZjE0ZDc0NGI4OGQ2IGxlZ2FjeS10cnVuaworMTEwMzkgYjAyYzQzYTIwMWFlNWRlYzAzMWE5MThjNzkwYTc3MTc0ZGRmNmUyYyBsZWdhY3ktdHJ1bmsKKzExMDQwIDhlNjBmZjA2NDYwOTkzNDZkM2FjZDE3YzEwZWEyNDJlMTdlNzllMTIgbGVnYWN5LXRydW5rCisxMTA0MSA5MjI2NzgzOGZlYjljYWU3MmZiZWU2OTFiYzM4ZDM2MjBkNTNkY2Y5IGxlZ2FjeS10cnVuaworMTEwNDIgNDZmZDYzMGRjZTYzMzFjYjU4MWUzZTYwMzUyYWIxODZlZTNlODUyOCBsZWdhY3ktdHJ1bmsKKzExMDQzIDg5NzNlNzA4NWNmNDljZDNjODY4ODkzYjhiZmZmNTAyMmY0YjExYmYgbGVnYWN5LXRydW5rCisxMTA0NCBmZjlhZGI1N2I4YjUxYjI5OTM4ZmYyOTZlYmY2NTVlNDVlZDM3MzViIGxlZ2FjeS10cnVuaworMTEwNDUgNDE5ZWU5NWRmMmQ4OGY1ZDkyMDY3YWI2ZDJlNGQ0ZGU0MWQzYmJiMSBsZWdhY3ktdHJ1bmsKKzExMDQ2IGU4N2QyMmM3ZGUzYzNjOTgzOGIyYzY1ZWJkOGI5MDg0MzI3ZWRlYjAgbGVnYWN5LXRydW5rCisxMTA0NyAxOWU4MDE2Y2QzOGNmZTZjYWJlZWZkZDM2NzQyOGQ3NmYxZDIyNGM3IGxlZ2FjeS10cnVuaworMTEwNDggNmU4YjBlNzU0YTdmMzcwOWIyZDQ0ZGQxMjA0Y2IyNWMzMjcyZTM4MSBsZWdhY3ktdHJ1bmsKKzExMDQ5IGJjODYxOWFmMDkyM2JlMTZmNTI1ZGQ4YTI4NjIyMGNlNzg3ODQxNzkgbGVnYWN5LXRydW5rCisxMTA1MCA4NzE2ODE2ZTA4NTk0ZjQwODk2MWJkYTQ3NTU2ODA3YzhhN2VhZDUzIGxlZ2FjeS10cnVuaworMTEwNTEgNDUwMDc2MDY4YjIyYWVlNGQ0ZTQzY2NhMzdmNjQ3NWNhMWFkZmY2OCBsZWdhY3ktdHJ1bmsKKzExMDUyIGJkNjk1ZGUxOGVjZjIzYWRjYmI1YjJlOTdmYzE0N2I5OTc4MDlkNTkgbGVnYWN5LXRydW5rCisxMTA1MyA2N2FhOTk3ZmJiMGUxNGIyMTM3MjMyNDUxNTFiMjU1ZWQyNmExYWJmIGxlZ2FjeS10cnVuaworMTEwNTQgZWE4ZjBmNWFiMDE1N2U5Y2FlOWI4NzhjNGM2YzBjMWZkNDI3YzEzZSBsZWdhY3ktdHJ1bmsKKzExMDU1IDYwNTFmMmU0MzUxNzY5OGY0NTQyZmVhYzk0ZTRlODZmZDEyY2E3MjMgbGVnYWN5LXRydW5rCisxMTA1NiAxMTBlOTczMzk3NDBlYjQ1ZjZmOWM5YWI2MThhMTNiNzc2MmM4YmM5IGxlZ2FjeS10cnVuaworMTEwNTcgOTRjZTc1ZjQzNDUyZjlkYjU2ZjM2NjhlMWQ4NWQxNjg2Y2ZkMmZkMiBsZWdhY3ktdHJ1bmsKKzExMDU4IGEzMzkyNTQ1ZDg2NTJjOGFjYzFlZjYxZWQ5NmRiOTY2ZDFjNTcyN2UgbGVnYWN5LXRydW5rCisxMTA1OSBmMGZhYWQ4ZDU5MzdjZTNkOWE4NTMzYWRmZGMxNmUxNTU3M2MyNTZkIGxlZ2FjeS10cnVuaworMTEwNjAgMmIwNDExMDU5NjMwMjNhZmUzNWFmNWQ1OGIzNGUzZjdjOGFlYWNhYyBsZWdhY3ktdHJ1bmsKKzExMDYxIGIxYjM1ZjUwZjNmYTZhNDBkZDcxNGE2M2E0ZTFlYmNmZjYxNTlkODYgbGVnYWN5LXRydW5rCisxMTA2MiAxY2E2ODk1MDI0ZDlmZWViOGNjZWY3Y2I1NjE5MmQwZjYyMGMzZDA1IGxlZ2FjeS10cnVuaworMTEwNjMgMjIxNjY3Zjg5MDY0ODZjMDk1ZGI5NTMyZjgzYzc3YWUxZjdjMzNhYyBsZWdhY3ktdHJ1bmsKKzExMDY0IGMzNDk3MDI2NTIwZDdhMDg3Y2U1ZTQ4YzllZGIwMmVkMjA2YTU1NWYgbGVnYWN5LXRydW5rCisxMTA2NSBlOGFkZWI1Y2QyZmI3Yjc5NzBiZWYwNDIyODlkZDkyYTJiY2U2OGFkIGxlZ2FjeS10cnVuaworMTEwNjYgY2I3ZmNmYjU2Mjc1NGM3YTM2YTlhMGM2NDg4MzZmZWQ1ZjEyMGRlMSBsZWdhY3ktdHJ1bmsKKzExMDY3IDFlNWU5ZGM2Zjk5Mzk0ODRjNmVjMTIxYjQyNGI3ZDEyNjZmZDBhODcgbGVnYWN5LXRydW5rCisxMTA2OCBiZGZlZjhlNzM0NTcyMzA5OWQ0NDEwZTE3MjRjMDA3ZDhlZmUxYzYxIGxlZ2FjeS10cnVuaworMTEwNjkgMTU4MWM5MzFjYjM1YTY1NDhiNTc1YTdlMjFjNjEyNjJmNDYwNjQ4NSBsZWdhY3ktdHJ1bmsKKzExMDcwIDc0YTEwMGNiN2E2NDNiNTFjOTJiNzg3MmUyMDBhYjEzMzU3YjFjMTggbGVnYWN5LXRydW5rCisxMTA3MSA5N2RjNmFhNTMyZTcyMTRkNGUwMjlmZmMwZTlhMzA3Njg3N2I5YTViIGxlZ2FjeS10cnVuaworMTEwNzIgZTFmZTMwZjMyNWI5OTE1ZDIwYTY4Nzc1ZGQxZDJmMTBhNDg1MTcwYiBsZWdhY3ktdHJ1bmsKKzExMDczIDJmNDNiNjFhOThkZjVhZTE5ZjJlYTdhMzZmNjk1MDNkZTA1NGUwZDAgbGVnYWN5LXRydW5rCisxMTA3NCBlY2YwZDUxNTI5YWM1OWQ1MzRjMWUyNTBlNzQwMDU0ZTY5NDlmYjg5IGxlZ2FjeS10cnVuaworMTEwNzUgZmQxZjRlZTFiMzJhNjEzZDVmMzdiNTgwNmMxYmY4M2Q0MWZhMDA3ZSBsZWdhY3ktdHJ1bmsKKzExMDc2IDVkNzc3YmVhNTQzNTE3Y2RkY2VjZjJiZDBiMmZjNzJmNTgwMTU5MDkgbGVnYWN5LXRydW5rCisxMTA3NyA2MzVjM2Q5NGE5NDgyMTU5NDQ1OTIwMjg5OWMxYjg4ZDgxODBhZDlkIGxlZ2FjeS10cnVuaworMTEwNzggMTI1ZjIxZmRlOGM0MDY1NWUxN2M4MmJhMDcxMWEwYTM0M2ZlNjMxYyBsZWdhY3ktdHJ1bmsKKzExMDc5IDdiYzcxNDE0NGI5OGQ4NGZmOGJmMjMxYzc0ZmUwNDEzZjgzOGFkYzkgbGVnYWN5LXRydW5rCisxMTA4MCBlYWJiODM4MWJmYzc0YWVkOGUwOTcyMjBjMzQ1NTE5NGZiOWZhOTk5IGxlZ2FjeS10cnVuaworMTEwODEgZDRhNjg4Y2NiOTM3MDFjMzFiMjJiZjJhYTgyZjU5YmFhODg1MTUxNyBsZWdhY3ktdHJ1bmsKKzExMDgyIDI4MzYwMmYzMDA0MzI0MWQxYzRmNTE2MTBiNWMyODA5NzdkZTcwMjggbGVnYWN5LXRydW5rCisxMTA4MyAwMTk4YjJmNmIxYzgzYmI1NjI1ZDFmMTc2OTcwNDQ1MmMxZTk2ODU5IGxlZ2FjeS10cnVuaworMTEwODQgY2UzNjJiOWJhODM2MWZlNzVmNWZkMDZkOTdmYmQwODEwZjE5OWY0OSBsZWdhY3ktdHJ1bmsKKzExMDg1IGMwNDQ5NzcxNDhlOTA0ZGNhNDFjMTg0ZDlmOTE5OTViYjU0OTZiYWIgbGVnYWN5LXRydW5rCisxMTA4NiBkMWYzOTJjZGZjZWE2ZDdmYzM1ZTFjNDdkOTNlN2QyYzcwNjExZjU2IGxlZ2FjeS10cnVuaworMTEwODcgM2M5NmZjODQ2Yjg4YmEzYTE5NDQ1ZmRhMmNjYjZjZTNmOTY3ODIyMiBsZWdhY3ktdHJ1bmsKKzExMDg4IGUwMTczNzFiN2VkMWIzMmRjNjU3NDU0YzA4MDBlYjgyY2YzMTkyMDggbGVnYWN5LXRydW5rCisxMTA4OSBjYzBmZGU0ZGRmNDRlYWU1ZWEyYWQ2YWM4ZjhhNzBlNjc3OWViYWU5IGxlZ2FjeS10cnVuaworMTEwOTAgNDVmOWRmZmRiYTNkYzA5MzNjZTJhMWZmYjJmN2YxYTc5YzY5NWY0NyBsZWdhY3ktdHJ1bmsKKzExMDkxIGNlMjk1YmZhY2VmMzdjYTYzZGEzODJiMzdlYTQ1MTFhMzg5NDE1ZDEgbGVnYWN5LXRydW5rCisxMTA5MiA2NmYwNTQwNjU2YTBlNGE2MWYxNWYxZTNlOGNkMDNjN2RlM2M2MDMxIGxlZ2FjeS10cnVuaworMTEwOTMgMDRkNTk4NzM3MGRlMmVlZWMwODk3MDE4ZWZhNDAyNzQ1YzI0ZjMyYSBsZWdhY3ktdHJ1bmsKKzExMDk0IDFiYmZiOTFmOGU4ODZmMjdiN2QwM2U4Njk4MTA2ZDVhYTFiZjc4NzcgbGVnYWN5LXRydW5rCisxMTA5NSBlM2QzYmJiZDkzZjM0YzNjMThlMzVmYTZmNzA4ZjdmN2ZhYWQ4NThmIGxlZ2FjeS10cnVuaworMTEwOTYgNjRmMGMzMTg4ZTcwN2FlMTVjYWFkNzNhNjAzMjhkMDQ5MzkwMjcxMiBsZWdhY3ktdHJ1bmsKKzExMDk3IGU3ODIyYjY0YTMzZDNkM2VjYmYzMzI5NmIzODE4ZGRlNTcyYTgzMjcgbGVnYWN5LXRydW5rCisxMTA5OCAyNDE3ZjE3ZmEzZTVmZDJjODBkNWJiN2FjYzE4YWNjMDdiNWJmNDI4IGxlZ2FjeS10cnVuaworMTEwOTkgNDZiNDcyZWNiMGY5MGE1MThhMGVjZmRkMGM1NzM3YTZlMDUzZTlhOSBsZWdhY3ktdHJ1bmsKKzExMTAwIGE4MDc1NTMxZTIwZDYwYmExMmQzMzc2OWMxZWFjMzNjZTI0YzJiYWUgbGVnYWN5LXRydW5rCisxMTEwMSA2ZWQ1MDNkOWMzZDUyY2E2YmRkMDk3YjJmMTQ3YjQ3MWRiNTgwNGE1IGxlZ2FjeS10cnVuaworMTExMDIgMGEzYzhjMjNlMWRhMmE0OTBlYzRkYTg3ZmQxZjMzOGRlMTNmOTVhNiBsZWdhY3ktdHJ1bmsKKzExMTAzIDlmODRiOTE5OTUyZTVkYzRmZjQwYTlmODFkZDZkMWZjNDc3ZWMxOWUgbGVnYWN5LXRydW5rCisxMTEwNCBmMDU3NzUxY2VmNjE5YzczOTViZTdmMGZhZDQ5NTI3MTZmNDYzMzgwIGxlZ2FjeS10cnVuaworMTExMDUgYmRhNWFjOWY2NGU5NGViYmUzNGIwYzVmZDc3NTUxM2M4MTNmOTQzYiBsZWdhY3ktdHJ1bmsKKzExMTA2IDM3MWMzMTI3NjdjYzk2MDgzYmYzMWY3ZTg5YWRhMjQzOTIwZmI2ZjEgbGVnYWN5LXRydW5rCisxMTEwNyA1MWRjYmY4YTBiOTJhYjYwZGUwNWI4Y2FlZDIyOWFkYTllYjg2MjY5IGxlZ2FjeS10cnVuaworMTExMDggMjZmNDgyZDE2MTQwYmZkNDZiODI1NjYxYjU2YzcwMTI0ODY1NTQzYSBsZWdhY3ktdHJ1bmsKKzExMTA5IDZlZDJjYzI3OTM0NmZkNzEwNGY5MTIzNjIxZmRkZDIwYzk2MDM3ZWQgbGVnYWN5LXRydW5rCisxMTExMCBhZWE2ODQxYWI4OThkMGJhMmU1MTkzNTBhODZkY2NiZmU3YmFiZjg4IGxlZ2FjeS10cnVuaworMTExMTEgMjM5NDkyYjM0ZjY4MmQ1Y2NhZGRhZDliZmNlZTFiODg2MjE5OGM0YiBsZWdhY3ktdHJ1bmsKKzExMTEyIGE5MzlkNGUxNGE4ZDMyNDUwZGU2N2RhYzViNjRiOGE5ZjYzZDk5N2EgbGVnYWN5LXRydW5rCisxMTExMyBkODY3MzM2NzY4MTU4MTUyM2M0YTJlMTRkOTVjMzk3ZDU5Mzc5MzIyIGxlZ2FjeS10cnVuaworMTExMTQgNmQ3NWE0NDM0N2EyMDIxNTJiZWUzMmViYzM2YjkzZDkzYzY2Y2UxZiBsZWdhY3ktdHJ1bmsKKzExMTE1IGNjZGViYjVlZDMzYTM5YjJiMjQwZTQzZDIzOGQ2MzE0ZjMyZjVmNmIgbGVnYWN5LXRydW5rCisxMTExNiAxMTcxMzgxZmEwMWM4YTc1MGMzMjM1YmRkZTk5M2JhOTM3NzdmNTU2IGxlZ2FjeS10cnVuaworMTExMTcgNTc5OGNlM2JmZjM1NGEyZTNlYmM1MTg2NTYwMTU0NzQwYzdjY2M5NiBsZWdhY3ktdHJ1bmsKKzExMTE4IGRjZWM5ODM1NzZkNTE0ZmMzZmMyYjIxOGY1ZmY3MTJhNjg3NDYyYWYgbGVnYWN5LXRydW5rCisxMTExOSA5ZjFlOTVjZGZhMTczMTQ1ZWY5Y2FkYTg1N2U3YjdmZjg0MDA3ZmUyIGxlZ2FjeS10cnVuaworMTExMjAgMWUxMjBhNWQyZTkzNDU0NWVkYmI2MzYwYmE2NzE5YTE2ZDg3OGVmNCBsZWdhY3ktdHJ1bmsKKzExMTIxIDAyN2ExZGFkMTM1MzJmYjY5MGJmMmM4MjFkODRiZTY4MWNiNzAyOTYgbGVnYWN5LXRydW5rCisxMTEyMiA4ZTg2YTc5N2U1OTZjOGM5YjEwYWNiOTljNTk2ZWFjZWVkNWE1MmI3IGxlZ2FjeS10cnVuaworMTExMjMgYjQ4MGU2ZWRiYzA3YmRmNjkzODRlN2JhNzRjOWMzODY1NjI0Y2YxZCBsZWdhY3ktdHJ1bmsKKzExMTI0IDJiZmIxMjM1NWIxMDJhOWI2MjQ2OWRlNWE5YjdlNGFlMjE4MWRmOWEgbGVnYWN5LXRydW5rCisxMTEyNSBkNDljYmVjNTkzOTVjMjhkY2UyYTM4ZDUzYmQzMTAxMjEzZGRmNDg5IGxlZ2FjeS10cnVuaworMTExMjYgOWFlOTFlOTMwN2UwYWVjYzU2OGM1OTdkZjlhNWEwY2FkOWQ0ZTMxMSBsZWdhY3ktdHJ1bmsKKzExMTI3IGFlMGI2YzFjOWU4ZDZhM2RmYjIyMzQzYTFjMjE3NDY2NWJkYjA5YjggbGVnYWN5LXRydW5rCisxMTEyOCBlODNiMzUzZDBhMWNkYWFlODQ3NzlmNGE5OTY0ZDg1YzFiN2EyNzdkIGxlZ2FjeS10cnVuaworMTExMjkgYTJiZWFlZGYwYWVlZjBiNjk0NTI1ZWRlOTQ4MDM5MzUzM2E2MjJjMSBsZWdhY3ktdHJ1bmsKKzExMTMwIDc3NTE4ODE0MGZlMWZhYmRjNWYxNjE1MzUxYzMwZmViNmIwMTU2ODQgbGVnYWN5LXRydW5rCisxMTEzMSA5YWY5NWQ3MjcwZGZlZjU1Y2M2YWY3OGIxN2E2ZTdkNGJhYzI4NDQ2IGxlZ2FjeS10cnVuaworMTExMzIgM2JlOTA2NDY3NzQwOTVhM2YxYjYzMjE0ZWE5N2I0MmY2YzY0N2VhZiBsZWdhY3ktdHJ1bmsKKzExMTMzIDRiYTliNzBjYTU2ZTI0ZjYzYTQ5ZDc2YTVjMTJjYzFiNWY1ZDM1OGQgbGVnYWN5LXRydW5rCisxMTEzNCA5N2ExMTA4YjBlYjI4MTU5MTExNDQ0NjI0NzVhOWM5YTMwZDViMjVkIGxlZ2FjeS10cnVuaworMTExMzUgMmViOWMyMWMyMmY3ZTk1MTU1ZWU3ZGYyNTIxZjBmZmQ1YTk2ZGMxMiBsZWdhY3ktdHJ1bmsKKzExMTM2IDdkNGEzODZiZWQzZmM1MzkyZGZhZTgyZTA0YTVlY2VkNGIwYzMzOGEgbGVnYWN5LXRydW5rCisxMTEzNyBlZDBhMzhjYmMzZTYzZDcyOGY4MGViM2M4YTg4MjA2YWZiNzY3Y2Q0IGxlZ2FjeS10cnVuaworMTExMzggOWU1MzZkZDNkYzk3ZjM5OTU3YTQxOWVjZjUwZTI5MTIxNjViZDAxMyBsZWdhY3ktdHJ1bmsKKzExMTM5IGFjNDNlMjI0NjY5NWJlYzdlZWI1NjNkNWExMjc3M2E0OWY3ZDM4NTkgbGVnYWN5LXRydW5rCisxMTE0MCAxZTkzZmEwMjE0MDU0Yjk1Y2QzMjM0NGU5ZTA3YjY3M2QzYWJlODBlIGxlZ2FjeS10cnVuaworMTExNDEgY2U1NGI1NDQ4Yzg1ZDc1YWE2MTFjNTIzODEwMGUzMmYxYTlkMjIzYSBsZWdhY3ktdHJ1bmsKKzExMTQyIGRlNzU5YWNhMTBiMjUyODliZmZkMGM1MzVmYmVmOTc4ZWY5NTA2ZjggbGVnYWN5LXRydW5rCisxMTE0MyAzMGZiZjE4YWYyOWU4YWM5NWNkNzUxOTMwNjIxMDNhNzFiZGE0ZjFlIGxlZ2FjeS10cnVuaworMTExNDQgNzRmMzg1ZWU0NGNiYmVmODMxOGRkYTYzMTlmMDE5M2FmNTRlYTEyNSBsZWdhY3ktdHJ1bmsKKzExMTQ1IDJmZGRlNzg0ZDg0OWFlMTExM2JjZTM5MjdkYWY0OTM2MzJhZTdjNTIgbGVnYWN5LXRydW5rCisxMTE0NiA4NTY4YWE0OTQ0YTAxZjFhOWE5OTA1OWQ0MWNhZmM4NWM0M2YzZGFjIGxlZ2FjeS10cnVuaworMTExNDcgZjU5NDc3OGE1NmFmOTU0NWYyZDNhYmQ5NGNhNDZkOTkyYzc4NmRiNyBsZWdhY3ktdHJ1bmsKKzExMTQ4IDYyNDViODE5YmRkODVjMjE1YmM3NDY4ZWI2ZTU3MWRiMTE2YmY4NGEgbGVnYWN5LXRydW5rCisxMTE0OSAzYWQxYmZmYmRhZWI0MjA1OTE2MDA0NGI5YjcwY2YwM2E4MjUwZDY2IGxlZ2FjeS10cnVuaworMTExNTAgODI4MTFjNmNiNThmNWJiMjk4YmVlN2Y3ZmI1MWMxMjYzYjkxYTY5NyBsZWdhY3ktdHJ1bmsKKzExMTUxIDJiMmZmNWE4MTM5MWEyNjQwMjE4YzhjZDMyZTMwYzE3ZGY1NjQ1MDQgbGVnYWN5LXRydW5rCisxMTE1MiAwN2U0NzM3MGZjYjhiOWJkOTIxNDJkN2JlMzVlYTBiMzQ1YTMzZmMzIGxlZ2FjeS10cnVuaworMTExNTMgNzQ0NGZlMzhlYWRiZDRkOTY1YzAyODhjNzMwNDJlYjg1OTMyNGFkYyBsZWdhY3ktdHJ1bmsKKzExMTU0IGIxZjFiYTQyOWI3M2YwMmMyMjA4OTUxNDAxNjAyMmViNWIxYjcyMjkgbGVnYWN5LXRydW5rCisxMTE1NSA1YThkOWNlOTA2MzJiOGQ0YjA3NmYyZmJmNTVmNTQzNDc5OTIyYTA3IGxlZ2FjeS10cnVuaworMTExNTYgZDZmNGU0MWIyYzZhZTg3N2IwOTcwNzVjY2ZkYmVmZTEyNmViNjFjYiBsZWdhY3ktdHJ1bmsKKzExMTU3IDQ2OWU4ZjQ1MzM2NWEzOWZjZWEyM2ZlYjdlOGMwNjY1Mjg1OWU0ODQgbGVnYWN5LXRydW5rCisxMTE1OCA3ZDk2ODQyMzgzYmJhOWQxMWE1MDk2NzNkYjhjMDU1MGE2MmRmMDgwIGxlZ2FjeS10cnVuaworMTExNTkgNjE3MDY4M2U5OGUzYjI3ZmM5NjhmMzliYzY0Y2ZkYzk5OTg0YTM0NyBsZWdhY3ktdHJ1bmsKKzExMTYwIDQ4YmM0NzAzNTg4MTVhMThmZmJkOTk2MGI0OTc0NDkwNTE3YjNmMDQgbGVnYWN5LXRydW5rCisxMTE2MSBiYTc0NDQ2MmU5NTgzMWQyODE5YWEwZjNkNzgyZTEwNGY4NjBiZTE0IGxlZ2FjeS10cnVuaworMTExNjIgNDY4ZGIyYjcxMGZkODIzMjAwNjc3NWViOGFkOGJmMWI5ZjA3NzEwMyBsZWdhY3ktdHJ1bmsKKzExMTYzIGNlMWU1OTFiMzEyNjM4NDBiYTViNWNiYzlhOGQyYzc1ZjM4MTU3MzcgbGVnYWN5LXRydW5rCisxMTE2NCA2ZWQ3MTU4ZmYyN2NjZTQ3NzgxZjEzOWViNGQwYzg0ZTY4YmE2MGNmIGxlZ2FjeS10cnVuaworMTExNjUgYTAzMjRhMzA2OGU5NTM5YjViMTQ2OTk3ZjkwMDQ4ZWQ4ODIxZjE0ZCBsZWdhY3ktdHJ1bmsKKzExMTY2IDEwMDQ0NWFlNDVlMzZiZDkxYWUxYWE5MWNkODVlYzdhMWRjNDMwMjQgbGVnYWN5LXRydW5rCisxMTE2NyA3ODE3MzE4ZWNkM2EyZjY5OTcwYWUwZWIwMTgxZmI2ZjdkYzUyYWRkIGxlZ2FjeS10cnVuaworMTExNjggNTUyZTQyZTQxNzBlZTcxODRmYWUzZmNjZjNhYjJkNTg5MWM5YzM0MyBsZWdhY3ktdHJ1bmsKKzExMTY5IGZkNDllZDY1Y2QyMGIyMDJlYWE3NmFjOGVmZGM2NzM3NTY2NDJjNjAgbGVnYWN5LXRydW5rCisxMTE3MCBhMzcyNmZlMzRkNThlYzA0NzY2NmUyOWFlYzExZDFlMDI0MmZkMTg1IGxlZ2FjeS10cnVuaworMTExNzEgZGU1NDAxNjZkNzMyOGNmNTQzMTBhODI1Y2E3MjM5Y2M4NTkzMmFjNSBsZWdhY3ktdHJ1bmsKKzExMTcyIGEwNDc3YmM4MjBiMjcyZGYxNzIxMmUzY2U4MjYyZWEzNDA5MjBmMjkgbGVnYWN5LXRydW5rCisxMTE3MyAzNWUxYTE0MGZlNGUyMDA2YzYwMzUzMGZlNzZhYmE4YzU0OGRiOTE3IGxlZ2FjeS10cnVuaworMTExNzQgYzk1MTRlYjFmYzA2MjdhYzI5NjNjZWY3MTdmMjBiYjZkNGE5YmNlMyBsZWdhY3ktdHJ1bmsKKzExMTc1IDhhYTlkMTI2ZTQ3MzMwNzAwNjk2ZDQ3OGUzMzRiZTAwMzRjZDQwMjMgbGVnYWN5LXRydW5rCisxMTE3NiBmNDE1ODBiNGVlYTE1NDI3ZmUyNmI3ODEyOWQ5NWY4MzczNzZmYTZmIGxlZ2FjeS10cnVuaworMTExNzcgNmQyMTY4YTk2NDFmZTc1Mzc3YTUyNTY1MjQwNzIxOGUwYTBlNDMxYSBsZWdhY3ktdHJ1bmsKKzExMTc4IGY3YjRkYjBjNWIwOGQ1N2U0ZDM3ODY2OWIxMzljYjE4N2E4MGZlMGUgbGVnYWN5LXRydW5rCisxMTE3OSBkYzg1ODA0YzJjNjQ1Njg5ZWJiMDU2ZjBhZGVhMzk1ZWZkNDM4ODA5IGxlZ2FjeS10cnVuaworMTExODAgN2QxNDc3Y2RhODNkMzdlYWY3NjBkYzU3YjE1YWM2MjRlYTA3YmNiYyBsZWdhY3ktdHJ1bmsKKzExMTgxIGYxMGI0NjljOTgxMDU0ZWE1YzMxNzQ0Y2M1YzhiNTJhNjlkMWRjZWEgbGVnYWN5LXRydW5rCisxMTE4MiA5NWYzMjQyNzJmNTQ5NmMxMzllNzgxZWM4MDM3N2Q5ODA1YzE1NGYyIGxlZ2FjeS10cnVuaworMTExODMgNzgyMTRlOGM5ZWI0OTA4YTVhMDdlMmY1MWMzZTA5ZWMxOGJhNWFkMCBsZWdhY3ktdHJ1bmsKKzExMTg0IDJmMjkwNTYwMjYzZmIwZGNmYzY3NGM3ZWM3NWQxNjE3YmJkODRkY2YgbGVnYWN5LXRydW5rCisxMTE4NSA1MDc1NzQ2NWZhNzBkZWNkZWEzYTc0YzQxMjhlNzZkNGIxZWRiYmE1IGxlZ2FjeS10cnVuaworMTExODYgODNjOGFkYWEwODRmNjgxOGZiYmEzYzY0MjcwMzFjZjlkMmNmY2YwNCBsZWdhY3ktdHJ1bmsKKzExMTg3IDg1NzFjMTI0NmYwOTNkMzk1OTZlNTcxMWU1MzRiMjUxNzNkNzJiZGYgbGVnYWN5LXRydW5rCisxMTE4OCBjYTFjNjY5YmIwNDE2OWNhNmY0ODMwZDE3YTliOWE0ODU2ZDQzYTk4IGxlZ2FjeS10cnVuaworMTExODkgNGVkZjM0OTVjNjkyNzZiMThhMTkxMDU1ZmRkZGU3ZDUxYjkxYjg1NyBsZWdhY3ktdHJ1bmsKKzExMTkwIGFjZjQ5YzlkZWY3ZGRiNTQyNTFkY2IwYjQ0Y2E4ZjQ4MmQ4YWI5MjMgbGVnYWN5LXRydW5rCisxMTE5MSAwZTI1NjNjMGViMGQ0YTZiOGZmNjcxYWY0ZDg2NjdmMGIwNDdlZjIzIGxlZ2FjeS10cnVuaworMTExOTIgMjA4NDI3YWI3NTY0NWIxMzU1YWZiNWRiODUxZWVhMGI0ZTA5N2NjNSBsZWdhY3ktdHJ1bmsKKzExMTkzIGFlNmI0MWRjNjUyMDE2YWJhOTg0YjljOGFhMTNhODQwOGRiNzIwNzQgbGVnYWN5LXRydW5rCisxMTE5NCA3OTgzZDg2YjQ4YWY3MzI2MTVlZmI5MmRkNTAwMDMwM2ZjOTU1YTUyIGxlZ2FjeS10cnVuaworMTExOTUgZWQ4ZjRlMmViMTFhMWFhNzhhOGIyYzk0ZGY5ZDcxNWUxMDM5NzY3ZCBsZWdhY3ktdHJ1bmsKKzExMTk2IDk3MzFkOGE2YjRmM2RmNDlmZjQ3ZGMzZTZkN2IyOWJjOGQzYzY1NzUgbGVnYWN5LXRydW5rCisxMTE5NyBjNzUwYzdhMjFlMDM3ODg0Y2VmNTU0MzAzMDcyOWM2NWY2MDY4ZDY3IGxlZ2FjeS10cnVuaworMTExOTggNzYwZGNmMTk3MDQ4MTI2OGIzMzFjYTY0NzBhOGVhM2FjYzExZWI2ZSBsZWdhY3ktdHJ1bmsKKzExMTk5IDk0NmQ2Mzk3N2ZhNDExZDVmMDgwMzkyMWRjMjdmODRiMjYzNTQxNDcgbGVnYWN5LXRydW5rCisxMTIwMCAwMjhlYWZiY2U4YWM3MjFkNGEzMjA2OTk1M2FjMmUzZDg3NTJmNGMxIGxlZ2FjeS10cnVuaworMTEyMDEgODE3NWM2ZTFlNjEzMWE5NTQ1ZDViNDEwZTNhMWZiZWEwNmY0MzI0ZSBsZWdhY3ktdHJ1bmsKKzExMjAyIGUwZDA0NzQ4NDk4MDA5NzlmMDhiNjg1OTY4NzM2MzdmMzExNWNjZDMgbGVnYWN5LXRydW5rCisxMTIwMyBkN2NhNDI5ZWYxYWI1ZmJhOTIzOTRlMTU4ZTY4MTMzMmQzNWJlYjM3IGxlZ2FjeS10cnVuaworMTEyMDQgOGEyOTQ3NmE1OWM1NDM4ODNjMzE2NjcxYjIwNGRkOWYwMWNjMWIzZCBsZWdhY3ktdHJ1bmsKKzExMjA1IDY3OTQyOTRlYjAxNDllOTZlNjdkMTQ2MGVlYzQzMzE4ZTkyNjEzZjMgbGVnYWN5LXRydW5rCisxMTIwNiA1ZDZiZjYwY2I3MzZkMWUzNWM0NjI2NTRhNTQzZWJhNWViYWE0ZmQyIGxlZ2FjeS10cnVuaworMTEyMDcgZjc5NzZlMDJiODczNDMyNzNlNDJiNDAyZDNjYjY4NmJhZjM3NmU5MiBsZWdhY3ktdHJ1bmsKKzExMjA4IDc0ZWE0ZGZkYTgyZDI0MWY2ZDA5OGZmNjUxYTE0M2NkYjU4MmI0MGEgbGVnYWN5LXRydW5rCisxMTIwOSA1M2I1MmEzM2Q0YmE2NDBkYzU5NzE5OTYwZWFiNzI2YmVkMjRiNjZhIGxlZ2FjeS10cnVuaworMTEyMTAgZDVmNDg1MWU3NjExM2JlMjU5YWE0ZjI2ZjY0NjY1OWQwODNlZjQ2NCBsZWdhY3ktdHJ1bmsKKzExMjExIDE5MDdkMTBhMjMyOGVlMDlmNWY5YWE4ZDMxMzlhZmNkNDc3NTNjNDMgbGVnYWN5LXRydW5rCisxMTIxMiA4YTMwNmRmZDlmMzMzZTA1Mjk4NWFhYWQwMzRkYWU2NDY4NzdlN2ZkIGxlZ2FjeS10cnVuaworMTEyMTMgNzUxMzdjZmVkOTU0Zjc5NjQ0YmU5YmU5MDQyNTY0ZjRhNmQ1MjkzMiBsZWdhY3ktdHJ1bmsKKzExMjE0IGE4MDQwYjk0MTg2NDlkOWYzZWNiMWE5MzNhMWJiMWIwN2MxZDBkNGQgbGVnYWN5LXRydW5rCisxMTIxNSBhZWFmYWYzODJhNGJlYzRkZDcxZDAzN2NmNThhZDA1NzYyNmE4MDFiIGxlZ2FjeS10cnVuaworMTEyMTYgZGRhYWMwNmVjMzI2NmY1Mzk4YTNlYjdhZjdiMjc0OTMzNDFjNWRiYyBsZWdhY3ktdHJ1bmsKKzExMjE3IDgwNzc2ZWFiZDAwNWZiYjgxNWQ2NDIzY2YxNTgyOGFiYzA4OTJlYzMgbGVnYWN5LXRydW5rCisxMTIxOCA2YzIwY2E3MjMxODA0Nzg3YWZlNjg2NDg3N2ExMTBmMjYyNzZhZDk4IGxlZ2FjeS10cnVuaworMTEyMTkgOGQwNTQ5NTQ3MDhhMmYwNTBiOTRiMmYxZThlOTVmMWQ4NzQ5MjZlNiBsZWdhY3ktdHJ1bmsKKzExMjIwIDc4MWFkMzJlN2IxZmYzYzVkNmYzOTRlYTM2ZWNmMWEyOTc2ZTJhYTQgbGVnYWN5LXRydW5rCisxMTIyMSAxZjAyMGY3OTk2N2Q5OTU4ZDA4YzFmNmY2ODIxNTNmYTkxZGUwNjU5IGxlZ2FjeS10cnVuaworMTEyMjIgNzRlMDMxM2NkODEwZTM0NWYwNWUyM2ZiZWUyMDA4MzdlZmQxNDBiNiBsZWdhY3ktdHJ1bmsKKzExMjIzIDQzNDY0YjFjODgwZWE5NmYyZTc4MDhiZWVhYjA1MjQ4MWRiNmQ1NWMgbGVnYWN5LXRydW5rCisxMTIyNCA3M2FmZTc3YTM5NDdiZjJlYTIyMDIyZDdmYzBmNDkxYzc3MjIxZmFkIGxlZ2FjeS10cnVuaworMTEyMjUgMmEzMGE4MTg5NGFlMGNjNDlhYjMyYzM3ZTUwMmY3Nzg1ODJmNjdiNSBsZWdhY3ktdHJ1bmsKKzExMjI2IDFkNTgxYTZkZmVlZTExNjkxNTg1ZTMyOGVkYTBiY2E0MDYyYjJjYjYgbGVnYWN5LXRydW5rCisxMTIyNyBlMWJjZjBiZDM0ZDU5MzM5OGY2ZjUyYWU2NjgzZDRjMzViNzI1YmRhIGxlZ2FjeS10cnVuaworMTEyMjggY2ExYjkwNjE0OWU2MjA5Yzg1MzU5OTNkNDc2YWZlNDllNmFlNzUxNyBsZWdhY3ktdHJ1bmsKKzExMjI5IGNkOTk1MjAzMjBhMzFmZDBiYTQ1YmI5ZDdjNzVkNDJjNjE4MTNiYzMgbGVnYWN5LXRydW5rCisxMTIzMCBlYWJlNTc0ZGM5MjFhOTEwYjkwN2ZmYzhlMDU0MjllMWNlYTkxN2QyIGxlZ2FjeS10cnVuaworMTEyMzEgZDg0YzExM2VmZWRiZjVhNDQ1NDhlMjkyZTkwY2JlZGE0NjhlYzM1NCBsZWdhY3ktdHJ1bmsKKzExMjMyIDVlYzg5NzliZjE3Njg1NDdlMzhjNjY1ZGQ0MGM1NzBiMmQzZTA1YzIgbGVnYWN5LXRydW5rCisxMTIzMyA5OTc5MzMwMmQxMGQzZTFhZTJmOTExMTRkOGFmYzAzZTA2NjgyZWMzIGxlZ2FjeS10cnVuaworMTEyMzQgNGUwNWUzODQ0NWNlYjM3Yjg0NmRmOWQ5M2U4ODgzNzlkNWUwNjZlNyBsZWdhY3ktdHJ1bmsKKzExMjM1IDllMDg5MDcwZDRjNWQwZTgyNGJhZDg1ZjU3ZGE3OTIxNzg1MjY0N2QgbGVnYWN5LXRydW5rCisxMTIzNiBlODhkNGU2ZTQ2MjJiNDM4MWY3MmMwZjdmZjRlZDM0MzhkMmFjYTg5IGxlZ2FjeS10cnVuaworMTEyMzcgNzAxYTg1YjA0NGIzNDVmNTBlZmM2Njc4MDZkMzhhY2NiNjc2YWI0NCBsZWdhY3ktdHJ1bmsKKzExMjM4IGZiYTg0NTVkY2I1NGM0MGUwY2EyMjJkNTYzNDgzYTM0MjdmNTg0NDUgbGVnYWN5LXRydW5rCisxMTIzOSBiOGE3MTljOGEwYTYwMTdhMGU0MGMzZjdmZDM3ZmM4ODEwMmVmNWJkIGxlZ2FjeS10cnVuaworMTEyNDAgNjhmZTYzNzUwZjg0ZjUwZmVlZDljNTNiMTNlNThkNDhiNDJjODhlNSBsZWdhY3ktdHJ1bmsKKzExMjQxIDRhYzJkNDM1Y2UzYmI1YmY1YmVjOWJkMzQ5YjFjNzZhMjVhNGFiNzQgbGVnYWN5LXRydW5rCisxMTI0MiAyYjJlZjgyZWRiNWViNzM0ZTExNjQ2MjExNDY5NjM2OGVhNThiODAyIGxlZ2FjeS10cnVuaworMTEyNDMgODYxY2QyMjc4MzQ4YTgzMjlhNDhhNjA0ZjA3ZWU1ZmMzODAzNDBiYSBsZWdhY3ktdHJ1bmsKKzExMjQ0IDQxOTJhNzNjYTQzMGViZGYyZTJhMDRlODM1MjgxOTMzMzFmMTRkZTggbGVnYWN5LXRydW5rCisxMTI0NSA1NWY3OTBhNWY2NGJmYjQ1NjJiM2I4NzE3MmMyY2ZjZTk2ODg3M2E5IGxlZ2FjeS10cnVuaworMTEyNDYgMDc2NjNkZDBmZTg2NTQ4NmRiYWMxNDk3M2Y4ZmNhZjJhZDkwMjg0NSBsZWdhY3ktdHJ1bmsKKzExMjQ3IDYyZmFiZTI0NzdjNGRmN2I0NGM3ZDFmZDBhMGExMGRmZjZjMTljYjkgbGVnYWN5LXRydW5rCisxMTI0OCAwNTg0MTcwNzFiMGU1MjZiYzIzYzIyZGRmYmI0OTJhMmUyNzdmOWVkIGxlZ2FjeS10cnVuaworMTEyNDkgODQzNGU5ZDAwYjVhNWU0NGU3NTY3MzBmMzNkYzI3ODFhOGJiZDIzNyBsZWdhY3ktdHJ1bmsKKzExMjUwIGZjMmE3MDBiMTAwN2E1MmY1MjE3Y2Q5ZTlhOGQzMWVlM2FlZWE5YTIgbGVnYWN5LXRydW5rCisxMTI1MSAwNmY4MGJjYzk1NjkxMWYzNzk2MTk3Mjc5MTQ4NjE3ZGQxMDFjMjU0IGxlZ2FjeS10cnVuaworMTEyNTIgMjU2YTgwZjM5YTg4ZmQ3OTYyMmJmMjdlM2E2NGU1YzhhM2IwOWU4MyBsZWdhY3ktdHJ1bmsKKzExMjUzIDJmNDZmODdhYTgwYWFmNWNkM2NiZjIwOTVkNjM1ODQ3ZmY3YmI2MjEgbGVnYWN5LXRydW5rCisxMTI1NCA3MGI2MzNmZjJmYjc1YzU2MTRiOTQzNTFmMTNiMWU4ZTQ0MzRmYWQ2IGxlZ2FjeS10cnVuaworMTEyNTUgNDViZTQwZWZjYjk1MDQ5MmVlM2M3MzM2M2ZjOTNlYjU4NjJlMjY0ZCBsZWdhY3ktdHJ1bmsKKzExMjU2IGVkYmY2MzFmYjdlOWU0MTI2OTlhNDJiODk2YmY1YjM4ZDkxYWU0MjIgbGVnYWN5LXRydW5rCisxMTI1NyBkMzk2NzhkMjJiNGEzM2QwM2E1OWYwN2FmYWQ5YzZjMjZiMGY3ODEyIGxlZ2FjeS10cnVuaworMTEyNTggMDQ4NDFlZWQ5OGVmOTE2NGIxNWQ2YzlmYWE1NDdhZjg3NWE4N2E1NSBsZWdhY3ktdHJ1bmsKKzExMjU5IDAwNTI0NTU1ZWYxNzQyODM3NjNiMTcxMDlhNjc4M2NkNWY1ZDQwOTMgbGVnYWN5LXRydW5rCisxMTI2MCAzYTFkZDAxMzc1ZTA5NDE2Y2FlNWQ1ZWRmZThjN2VkZmUxOTk1MjQ2IGxlZ2FjeS10cnVuaworMTEyNjEgOTEzODI3MmMxZmU2ZWMzYjFkNzFmN2QwMGIyZDg5MzU4MmY4MGNkYyBsZWdhY3ktdHJ1bmsKKzExMjYyIDZkNjFkNDg5ZDcyODg5MTQzYzk4MDEyNTliMGI5YjQxM2E2MzM3MzIgbGVnYWN5LXRydW5rCisxMTI2MyA5ZTMxNDE1NDM2ZjYyY2Q5NDc3Y2IxZjlkOTE1OTRkOWRjNDQxYWE0IGxlZ2FjeS10cnVuaworMTEyNjQgYWUzZTJlYWVmOWI5NTI1ZjY1YmE2MzMyMDY1ODQ1NDBhODJjZTI1MyBsZWdhY3ktdHJ1bmsKKzExMjY1IDhlOTRjZTkzOTRiZjI0NmUyY2I4ODNlZTI2OWM0ZTljNTcyYzZjYzkgbGVnYWN5LXRydW5rCisxMTI2NiBjOTkwOTA0NjI0NzY2ZWU4N2MxYzU2M2ExMGU0ZjZmNWIyMTRiMjA0IGxlZ2FjeS10cnVuaworMTEyNjcgYzg1YjM4ZDU4YWNkOGNmMDhhNWVkMzgzZDM1NDRhNGU1MWU0NzU3YiBsZWdhY3ktdHJ1bmsKKzExMjY4IDdkMjMyYzBlNGRkNmM5MGJmMzM5YmVjN2U2NzNkNGM3ODc5NTcxN2EgbGVnYWN5LXRydW5rCisxMTI2OSBkMmJmYzg2NTQyODBhNzljMTdkYTI2YzVhY2MwMDRjNzIwNDhkMmVjIGxlZ2FjeS10cnVuaworMTEyNzAgZDY0MmU2NzQ4ZDEyYzNhYmYzNzdkODU1MGFmOWM0MmU4ODI3MGMwYiBsZWdhY3ktdHJ1bmsKKzExMjcxIGQzMmRiYzIwMjYxM2UyOWJhYjM4Y2NlZjZkZjk5N2U1MWFmODg5MDcgbGVnYWN5LXRydW5rCisxMTI3MiAxMDc2YTAyODM2NWEyZWQ1YmRmYzUxOWMyZjk1N2ZlYjFiMjFmZDVmIGxlZ2FjeS10cnVuaworMTEyNzMgMzNkNTkzMzZlN2U2ZmJjNTY3NzRkYmQzNDlkMjA1ZGZmZDVhMmQ5NyBsZWdhY3ktdHJ1bmsKKzExMjc0IDBmNWUwYjQwNWJjMmYyYWI3NDVmODM2NDBjZTY0ZDkyN2U1MzhjMDkgbGVnYWN5LXRydW5rCisxMTI3NSAxZjgwNGZhY2Y2MzU0ZmEyZjJlYjg3YTE1OGZlODE5YWQ1YzdhZDFmIGxlZ2FjeS10cnVuaworMTEyNzYgMGUzMGIzNWI4YTNmZmUzNTYwYTA1ZGU1MjExODYzMzc3M2YwZGExZiBsZWdhY3ktdHJ1bmsKKzExMjc3IGI4ZDJiYTU5NzExYzIyNzAwNDM2OGM5ZjkxYmY5ZTQ3MzAwOGY4ODAgbGVnYWN5LXRydW5rCisxMTI3OCA2ZmJiNTYwN2NkZDYwNGM0MTQyMjdjMjNkMjYwZjA2NDE1OWUzMWU2IGxlZ2FjeS10cnVuaworMTEyNzkgZDUxZDFhNjFiMWNlZjQ3NzgzZWE4N2Q2NTE1ZTU1NzM3NjgwNjc4OCBsZWdhY3ktdHJ1bmsKKzExMjgwIGNhMWU1YmM1MjA5ZDg0NzEyNzNlOTNmNTJlNDQ4YTNkYmRlNGNlZDcgbGVnYWN5LXRydW5rCisxMTI4MSA0NDcyNmIwNTg3MDBhZDkzZmYyMDgzZTkxZDcyMWNjNTNlYzExMmQxIGxlZ2FjeS10cnVuaworMTEyODIgZThiNTZiMzg3MDQ1YWU3NGRkOWMzZjk4ZDhkNGU5MWNjYWE1ZmI2ZSBsZWdhY3ktdHJ1bmsKKzExMjgzIDYxNDY0MDM3ZGE1M2MyZDA1NTIxZjk3ZmFmYzJjZWUzZjg0M2JjYjggbGVnYWN5LXRydW5rCisxMTI4NCA4MWNiOTQwMWEyMWI3Yzg2MjllODI0OWIyZTMwOTgzM2RlMDZkYTA3IGxlZ2FjeS10cnVuaworMTEyODUgNGQxOGViZDRjZjQyM2VmODdiYmJhNzk2NGRjMzJhNGVkMWU4ZmU3YSBsZWdhY3ktdHJ1bmsKKzExMjg2IDVkNWE1YmM4ZGU1Y2I2Mjg5NDVkYTk5YzZmMTI4NmI0MzUyZmM0NjUgbGVnYWN5LXRydW5rCisxMTI4NyBjOWU0NTcwNWVjOWUxMjk0MDAzYmIxOTJlYTdiNjdlMzMwYjQzOTgwIGxlZ2FjeS10cnVuaworMTEyODggOGU5ZDIxNDZhZTkzMDIxNWMxMTY2MTM5NWYzNDY2NzY3ZTk5ODE5YiBsZWdhY3ktdHJ1bmsKKzExMjg5IDY0NWEzMjhlN2ZkNDk0OWNmNmUyMzQzODc3NDNiMjQzZmU0YTIwZGYgbGVnYWN5LXRydW5rCisxMTI5MCA3ODc4NTk4NWEyYWI1ODFiNGU1NTVmOGM1ZGVlZTM3MWVkNTFkM2JkIGxlZ2FjeS10cnVuaworMTEyOTEgYzVkNzJiY2RhOTMyYThkMzZjYTM2MDA1YjQ1YWJhYjhmYjc5ZDc5MSBsZWdhY3ktdHJ1bmsKKzExMjkyIDRhYTc2NDgwZDgxMjU4OTJjNTE1YWUxYmMzMTRmOTBkM2UwNDRmN2EgbGVnYWN5LXRydW5rCisxMTI5MyBlNThhNjE0ZmI4ZTQwZWFhNjcyMTIxMjk2MzIxYjk5ZDA4YmE2ZTFiIGxlZ2FjeS10cnVuaworMTEyOTQgMTQwNjkzNzQ0YTNjODUzZjdiNDQ2OTRmNmEzNzU4YjQxYWNjNmZmNCBsZWdhY3ktdHJ1bmsKKzExMjk1IGRkNjQ5ODM3ZWJkNDg5ODQyNTU3MWVhYjI0NjFkNjFmZDMxZjhjYWMgbGVnYWN5LXRydW5rCisxMTI5NiA2NzM4ZTUzODM5Nzc0ZmFlMjg2ZDdlOTExMGI4NjMzZjJkZjVhZDY0IGxlZ2FjeS10cnVuaworMTEyOTcgODQ2MGJkYzNkYmY3YjdlNmQzM2Q3MzkwNDNkYThjYTFmOGZkMTA3NSBsZWdhY3ktdHJ1bmsKKzExMjk4IGQ4YjQ2MTk4OTIzOGQ4MmY4M2RhZWJmZjU5OTMzNWZmODcwZGZlOGQgbGVnYWN5LXRydW5rCisxMTI5OSAwZWRkMzhkYjIyODg0NTk1YWFjYTMxMTRjNzQ1MTk3YzIxYTdlYWRkIGxlZ2FjeS10cnVuaworMTEzMDAgNzFmY2M0Y2EwZThhZWRjOTE2MThiMmIwMTMyMDNiNWUwNTJlYmFhOSBsZWdhY3ktdHJ1bmsKKzExMzAxIGMyODAxMTAwMGVkMzY5M2Q2M2MyMTRkMzMwYTRmN2IxMjU0MjI1ZjYgbGVnYWN5LXRydW5rCisxMTMwMiA5YjBkZGE5YTU1OGJkNWVlYzk2ZTkzNDYzNmViNWUzNDUxOTAxNDc0IGxlZ2FjeS10cnVuaworMTEzMDQgYTFjMTZhM2ZhN2RiNDBhMzc1NTg3YTIyMzU3ZDBkMDFkZWJjYmQ4NiBsZWdhY3ktdHJ1bmsKKzExMzA1IGJkNDdlZTA2OGI4M2ZiOWYyYThiNmE5ODlhYjQwZjNmODhjNGY5NjggbGVnYWN5LXRydW5rCisxMTMwNiBmMmE0YTJiNjA4NjA3YjBhZmM4N2M2YmRiZWIwZGIxNjAxYmE5Y2JlIGxlZ2FjeS10cnVuaworMTEzMDcgYjA0MDk4YTI1NmQwMDQ2ZDljZWE0Y2M0NmM4OGE5ZGRhMDk2MjFiMyBsZWdhY3ktdHJ1bmsKKzExMzA4IDEyOTg3MGUyMTc5YTkxZDI3OGFkZWY3YWM3YTU5Njk5NzgwYmVmMGEgbGVnYWN5LXRydW5rCisxMTMwOSA0YmZhNTNiZDk3YmMwNjc2MmU3YzNiMTMxMDgzYzRmYmFhMmMzYzUxIGxlZ2FjeS10cnVuaworMTEzMTAgZGYxNjAyYjZhMmE4NjIxNjYxODZkYWI0MDc2MGFkNTg2NGQ1NzM4YyBsZWdhY3ktdHJ1bmsKKzExMzExIDg1MzIxNDFjZmY0YzFmNWRmNmRkNWU2NjNmZWViNWYyMTUwMmU2YWUgbGVnYWN5LXRydW5rCisxMTMxMiAzY2MyZmFkNGUwMjBlMTdkODNlYTBiMGE3NWMzNjZmYmEyODRiMDFlIGxlZ2FjeS10cnVuaworMTEzMTMgZWVjNGRjZWI0NDM2YWFlNjA1ODBlN2E2OWFiNDAwMDY1ZDgwNDdmYiBsZWdhY3ktdHJ1bmsKKzExMzE0IDAwYTZiYjY1ZmYyOTNjMGUwYThkNjIzYzVlMjU0M2M5YjVkMTlkMmIgbGVnYWN5LXRydW5rCisxMTMxNSA3NDFkNTA2MThlYzJjYWE3YzY1NzhlZjA5ZjU5OTgwNWY3OGI5MDA4IGxlZ2FjeS10cnVuaworMTEzMTYgMDQ1ZTkwMGE0MTk4ZTAyYWNhMmQxODE4ODk3YzFiYmFmNWZjODgwOSBsZWdhY3ktdHJ1bmsKKzExMzE3IDMzNmNiNTA5ODc5YTQ5YzI3YzI1NTJkNzc2MTZiMTBjNTMzNGQxODEgbGVnYWN5LXRydW5rCisxMTMxOCBiMDRmOTVmZWRkNTBjYTFhZDViMzkyZGFlYmJmNDdjMWY4MWQ3NmQ0IGxlZ2FjeS10cnVuaworMTEzMTkgZjFjYTQxOTk1ZTYyZTUxNzI5ZmE2YjdjNzg3YjE0OTI3ZmMyZGVkMCBsZWdhY3ktdHJ1bmsKKzExMzIwIDkyOWRiODM4NWJhNGE1M2UwYmEzYjFlZDY4NGY0MzZmMWRlYjYwMzcgbGVnYWN5LXRydW5rCisxMTMyMSBlNWE4MzExNjg0ZTRiZGEzNzJiY2ZmNzcwNjUwNjRmOGRlNDk1OGI3IGxlZ2FjeS10cnVuaworMTEzMjIgYzJmOWU1MDVmNzVhMWRhOTFjYTIxN2IwN2MwM2IwMzk3NDU5ZjkxNSBsZWdhY3ktdHJ1bmsKKzExMzIzIDQ0YmFlZjhhYjVjODlkMzRiMTRmOTA4M2VjZGUwMTk3MmJmMGZkMjggbGVnYWN5LXRydW5rCisxMTMyNCBiZDZkOTdkNmIyYWUwYjc3MGJjODI5NTI5ZjQzNTA0Y2Y3YWU1ZDAyIGxlZ2FjeS10cnVuaworMTEzMjUgOGEzNzA1MjZkZTA2YWQzZGIwZDFjMzE0MDU4ZjA4NmM0NjQ4YWQzYiBsZWdhY3ktdHJ1bmsKKzExMzI2IDFjN2Q4NjA4NzFkOWQxMGVlZGViOWFjY2IzNjE2M2Y5NjEzOTViMWQgbGVnYWN5LXRydW5rCisxMTMyNyBiNjVlYTgxMjc3NTI1YTllNGRkMjc2NzA0NDU0M2Y5ZDMxMmY3ZDU2IGxlZ2FjeS10cnVuaworMTEzMjggYjkzM2Y1ODRhMjZkMDMxMjY0MWU2YzM4YjBlODUxODU3MzlkZmVkOCBsZWdhY3ktdHJ1bmsKKzExMzI5IDc0NTMzNDU0NTg5ODFiZTg4MGQ5NjA0MzliMTMyMDY1NjAzNjM0ODkgbGVnYWN5LXRydW5rCisxMTMzMCAwODY3MDIyNTAxNTM0YTFmMjRkMDEzYThkOGUyZGY1OWI2ZmZiNzExIGxlZ2FjeS10cnVuaworMTEzMzEgMzdjNjkxOGVmZDNiY2ExMmZkMzU3MjYzYTY1MTUxOGJhOTJhNTg3NiBsZWdhY3ktdHJ1bmsKKzExMzMyIDYxZWY4ODE4Njk1YmQ0MzZkZjBjOGRhZjgyNDgwYTQ1N2QzMDcwYjkgbGVnYWN5LXRydW5rCisxMTMzMyBjMzUxNTIzZWJjMDVlZWJkYzljNDQ5NzQxMDg2YWYwZjU2YjNjNWE5IGxlZ2FjeS10cnVuaworMTEzMzQgNTM0YTFhNDM3YWYzYTliOGVhZjczNTMyMzg2MWUyNzI4OTBlZDA2ZiBsZWdhY3ktdHJ1bmsKKzExMzM1IGNlZjIwZWM2ZjI0OWNjNDYyZDljNGYyZmY3OWRiNGRkZGVlMThkODEgbGVnYWN5LXRydW5rCisxMTMzNiBiYmU5ZDcyYmNjZGEyN2E5ZGFhMzNlMDU4ODI5MDNmZDlmM2JlYmVlIGxlZ2FjeS10cnVuaworMTEzMzcgNWY5ZGZmNjgxNzk3ZmY5NDA3OTQ4NDAzYjI4YzA2NzQ4MDUyYjlkNCBsZWdhY3ktdHJ1bmsKKzExMzM4IDM1NGNkMjRlNWRmZTQyYTBmODJmMDMwMWY3OWFhMDA4NzY5MDYwNDAgbGVnYWN5LXRydW5rCisxMTMzOSBkMjgwNDYwOGJlY2QwOGExYTRiNWUyOWVkYTBiMzkwNTBkNGZlZjJhIGxlZ2FjeS10cnVuaworMTEzNDAgZjdkNGE1ODVkYTAxODZjMGI1Yjg4YjgwMTRlN2NhOTRmMzBmNzYzMSBsZWdhY3ktdHJ1bmsKKzExMzQxIDU2NzYwNzA3NmQ4ZjRjNzZhMjkyNzY3YmI0NDM4YzNjMmE5NDgwNmEgbGVnYWN5LXRydW5rCisxMTM0MiA4NjUzZTFmMjE5ZjFiZDIyNjFlMTM3Yzk2ZjcwZmZlMTNiYTUwYTAyIGxlZ2FjeS10cnVuaworMTEzNDMgZDgwOGViYTRiM2M2NTMwNDg4MGYwZTJlNmQ1YjEyMzY2MmJkYmNhOCBsZWdhY3ktdHJ1bmsKKzExMzQ0IGUxNDQ1OGYxMzZjY2FlM2Q3YTZiNDljMTgxNjM4MWFlNjJlYzExOTggbGVnYWN5LXRydW5rCisxMTM0NSBlMDI0YzY5NjI1ZTEyZjhlZDk2NjY1NmE1ZmY1M2QwNWZjMWYzNTFjIGxlZ2FjeS10cnVuaworMTEzNDYgODAxMWYxNDY2OWE4MTdkNGJlOWNmMTUyZDM1MzBkNTQ0YzMyYWJkNyBsZWdhY3ktdHJ1bmsKKzExMzQ3IDVjZGVjYWFhOWJlYjBkMzdkZDFlNDQ5YTgxOWJkZWE0MTI0ZTFlZGUgbGVnYWN5LXRydW5rCisxMTM0OCBmNDU2ZjVhYTU3MTg1YTJkMzFjOTIwYTljMzYyY2UwYmNlMzA0NzZiIGxlZ2FjeS10cnVuaworMTEzNDkgYTFlYzNlYzI2MDJlY2E1ODI2ZWI4MGRmNjIxNDkwODc1ODkzYjYwNSBsZWdhY3ktdHJ1bmsKKzExMzUwIGJiNzhjYzI3NDY5YWI0YmU4NzM4YTBlYzA2ZmExMTg4MjYzMmE5NjcgbGVnYWN5LXRydW5rCisxMTM1MSBmOGUyYWQ0Y2Q0NWJjM2IxYmQxMTY0NTA4ZTIxMmEwZDZhZmFlMDczIGxlZ2FjeS10cnVuaworMTEzNTIgNTcwODlhZDRkNzNjNmUyMGJhZjg1OTZhMjk1YTY2OWNjY2Q5NjYwZiBsZWdhY3ktdHJ1bmsKKzExMzUzIDNiYzNmOTRkNjA2MWU0ZjJhZjM1NzhkNWRlMDBjNmU2YzA0NGEzODAgbGVnYWN5LXRydW5rCisxMTM1NCAwNWMxMTA0ZTA4NGIzMTQ2Mzc0YzkyODc5YjZkYjI0MjU0NjA0Nzk4IGxlZ2FjeS10cnVuaworMTEzNTUgODY4YTI1Y2Y2NTNiZjA1ZWIzOTc1OWU4YTdhMGFmZTc4MWRiZGJmZiBsZWdhY3ktdHJ1bmsKKzExMzU2IGFhY2JmZGY0OTQzZTUyOTg3Y2MzNWFhYTk0MTljNzJmOWRhZmQyNGMgbGVnYWN5LXRydW5rCisxMTM1NyAxMDc5MGYxNGQxM2FiZDI2YWEyMjhmMGMxOGYzYmRjZDU0OTZhM2QwIGxlZ2FjeS10cnVuaworMTEzNTggNzJiNjk4YzMzMjRiOTkwNWE0MzcwM2IxMjhlZTdlYzM5ZjNmMWI5MSBsZWdhY3ktdHJ1bmsKKzExMzU5IGQzNDJlYjQ0ZDdiZGQ1NGY3NTI5ODAwNjc4MzNlN2E0OTkyNWFlZjEgbGVnYWN5LXRydW5rCisxMTM2MCBlYjA1OWEzM2Y3ZmYzMWM5OTI4NjU4Nzc1ZjhjNDk2OGI5OThmMDk2IGxlZ2FjeS10cnVuaworMTEzNjEgODEzZjUyN2YzYmVjMDFjZDdjMmRkOTljMmI0Y2ViMGQzNDNhZThjYyBsZWdhY3ktdHJ1bmsKKzExMzYyIDI3ZWUzMjMxZGZhOWJlYzgwYTgyYjRlNTUzZDYyYzg3ZjEyMzQyZDMgbGVnYWN5LXRydW5rCisxMTM2MyBhOWViMjY1ZDJmNTcwZGViZmQ0ZDk2ZDU0NWYwZDIyN2M2MTUzMTYyIGxlZ2FjeS10cnVuaworMTEzNjQgZmViY2E2YjE4MjdkZGRkYTNhM2QyOWJmOTY4MjVjZDYzNDIxMTk4MiBsZWdhY3ktdHJ1bmsKKzExMzY1IGIyOGI4NGU2YTQyOTQwNWEzMWRlNzJlOWE1MWZiMzMwNTcwNmM4ZjUgbGVnYWN5LXRydW5rCisxMTM2NiBmODhmNDAyNDE3ZjI5ZjNjNDNhYTZiMzc2NGUyZDMyNmVhYjMyNjI5IGxlZ2FjeS10cnVuaworMTEzNjcgODVkY2UzMmFjZjlkNzk3ODhhOWNmYjliNmM0ZmMwMjA3ZjEzMTc2ZCBsZWdhY3ktdHJ1bmsKKzExMzY4IGMwYTllZDIxZGZhMDU2MDJjZjc0YTk5NDgwYjU2YTkxMjA2OWQyZjUgbGVnYWN5LXRydW5rCisxMTM2OSAwNGE0OTJmMTEwZGJkYzcwNmNiNmY4ZDAzY2ZjNmZkYTk4ODM4NTNjIGxlZ2FjeS10cnVuaworMTEzNzAgOGMwNTI0YTcxMjQ0ZmQwZWNhOGViNmVhMGZjMmQyOGNmZDk3YmI5YyBsZWdhY3ktdHJ1bmsKKzExMzcxIDlhMDc1YTJlZGIxZjU0MmY4ODkxYjk2MTRkMjk2ZTczMDIzNmZiNGUgbGVnYWN5LXRydW5rCisxMTM3MiAzNDAxMjEyZTU0ZmMzODA1Y2I2N2M5OTcwMTQyYjUzYzA5ZTNiMWZkIGxlZ2FjeS10cnVuaworMTEzNzMgMzFjMDYzNTE3YzIyZWMzNGM3ZTIwZDAzMzRhNWM4MTliZDA0ZWQ0YSBsZWdhY3ktdHJ1bmsKKzExMzc0IDYwYjRhNjEwZGNmY2NhYTczYjcwNjZhMWU3MDIwOGFjYzJjYTU0NTQgbGVnYWN5LXRydW5rCisxMTM3NSBhNzA4MzI5NWViMzhlYWMwMGJkMWZlNDk5ZmMxM2RjNDNlMWRmMTJlIGxlZ2FjeS10cnVuaworMTEzNzYgMDkwNjNlZWRhMmI3MDNkYTg5YzIyYjc2YzYwN2YzYjhkMzI1ZjE3ZCBsZWdhY3ktdHJ1bmsKKzExMzc3IDc2NGRlNzMxYzgwNjNmYTQzYzU2MjY5OTdhY2Q5MWUzMjVhMmQxMzUgbGVnYWN5LXRydW5rCisxMTM3OCA5YjRiYzNiOGI5ZDRjZDA1ZTgwMWNmZjhlMTM4ZTM0MTA5NTE2ZGVhIGxlZ2FjeS10cnVuaworMTEzNzkgZDI5NWE1MTg3NGE2YWZhMmFmMjE3ZmFiOWIwZjIyN2EzNTQ3MmQ2NyBsZWdhY3ktdHJ1bmsKKzExMzgwIDlkYjhiNWVhNmIyMTIyMDY5ZDdjNjZiYjEwNjkwMzljYjY2OGU0YWUgbGVnYWN5LXRydW5rCisxMTM4MSA0OTIzNjNkNmJjOTQ1MTE4NGMyZWY0NTMzNDBmMWUxY2U3ZmVkMDllIGxlZ2FjeS10cnVuaworMTEzODIgMzg1NDRmODI4ZDc0MDhlMjdmOWUzZDg4ZTAyNGNhNGMwZmE2NTRjMyBsZWdhY3ktdHJ1bmsKKzExMzgzIDZkYzBhOWRjNWJiYjkxYTU0YzM5MTIyYmQ0NTdjYjk1MTU4YmQ3ZjkgbGVnYWN5LXRydW5rCisxMTM4NCBkZGY3MTBiN2U2ZWI2ZmZiNTIwODgxM2I0MTZlZTRjNjgzZDQwZmViIGxlZ2FjeS10cnVuaworMTEzODUgNmY3M2FlMWNmOTM0NmE3MTY5NmJkZDVmYTU5M2MxZTIwMzYyYzY1YiBsZWdhY3ktdHJ1bmsKKzExMzg2IDZkOGI5MmNhZjhjZGI1MmUwNjhjY2NjN2FlYjU1NDUyZTAwMTdjNmIgbGVnYWN5LXRydW5rCisxMTM4NyBkNDFmZjViMTkxZDFkMTE2Yjg3YmRkMzA3ZGM1OWIxMDJmM2ZkNWFlIGxlZ2FjeS10cnVuaworMTEzODggMjlkODQ3YzQyOGY5ZGE3MTk5MGM0OTJhYmVlN2NhZjQ4ZTM2YmM0NyBsZWdhY3ktdHJ1bmsKKzExMzg5IDk4MDM1NTZjMWFlN2MzZmVlZWRhMWMwZWU0ZWI4ODhlZjRlY2VjODkgbGVnYWN5LXRydW5rCisxMTM5MCBhNWI3MWE4YTFhYjU4Njk2MmM0NjYwZWJhYmU4M2Q3Y2IyODU4OTdiIGxlZ2FjeS10cnVuaworMTEzOTEgN2Q2ODEzNTIxZjYxMzU5ZWM3NmIyOTBiYTczNTFlYmQ3ZmNlYjY5NyBsZWdhY3ktdHJ1bmsKKzExMzkyIDg5ZTY1YTk2YTdkM2ZhODA1NTM1NTM0ZjBiN2Q5ZTU0NGFlNWZjODAgbGVnYWN5LXRydW5rCisxMTM5MyBiMWQxZDhjMDA3MWJhN2NkNzM0YjdiMWQ1ZmMxNDAzZjk1ZTJkYjY3IGxlZ2FjeS10cnVuaworMTEzOTQgOWE5ODQyNzZjYzU2NWNhMmZkNmY2NWI2YjM0ZjM1MjMxOTY0YjZiZSBsZWdhY3ktdHJ1bmsKKzExMzk1IDQ1OWJkYTk0MGRhYTI3ODE0Zjc5OTdiZmE1NDYxMjNmMDRiNDAxNjcgbGVnYWN5LXRydW5rCisxMTM5NiBkNmI3Mzk2MjUyOWJiNjYxNGY2M2MyNWVjZWYzY2E3NjEyYmVjN2I5IGxlZ2FjeS10cnVuaworMTEzOTcgOWE0MDU0Yjg0ODVmZjRlYWY2NmM0ZjBiNzAwN2Q4OTdjNDQ2ODQyYiBsZWdhY3ktdHJ1bmsKKzExMzk4IDU1MmM2YjNhYmEzZGU1MDU0YmJmNDY5ZWU0NmY0NGY1NmIxYjkxZGIgbGVnYWN5LXRydW5rCisxMTM5OSA2YjYzM2RmNDFlNTk1MWFhY2M0ZjBiZjg3NTY5NWNiYTA3YzIyMzQyIGxlZ2FjeS10cnVuaworMTE0MDAgZTU1YTc5ZmY4MjI4ZjkyMmE4Y2NjNmU4YWI5NmI2OTEzNmM0ZDA3OCBsZWdhY3ktdHJ1bmsKKzExNDAxIGFjZmZmZTE0NjI4ZTQ0OGJmZWIwOGI1YThkMzkyMTE0OWY0ODZhNGMgbGVnYWN5LXRydW5rCisxMTQwMiA2MTA2ODBlM2I5MjkzZmI2Y2QxZDMxZDFkYTYwNTAzZTM5YWNiMGZjIGxlZ2FjeS10cnVuaworMTE0MDMgMDI3ZjNlZWY2ZTVhNzllZWM0NDI4NjE1MDAxMTM4ZDk2ZTcxM2EyYiBsZWdhY3ktdHJ1bmsKKzExNDA0IGQwZjkzZWJhOWJhYWQwYzRiYWI1OWYzN2FiMmNjZjQ5MmRhNTJiMzQgbGVnYWN5LXRydW5rCisxMTQwNSA4ZTQxOTA2ODYzYmU3YmI0N2QxMTNmZTdlYTBhYjQ5ZmIyZDE2NGMyIGxlZ2FjeS10cnVuaworMTE0MDYgMjhiYzVkOGU4ZGNhMzZiMzNmMDE0ZjMyNTMyZDBkZTJlN2M3MmEzZCBsZWdhY3ktdHJ1bmsKKzExNDA3IDA5NTRhZDRhY2RmZGU1YzhjZjVkNTYzYjBkMDljNTAxNjI2NzMzNDkgbGVnYWN5LXRydW5rCisxMTQwOCBiZTkzNTg1MWRjNTBjM2RkYWZmZmNjODA5MDZiNGM5OTBhMDM5MjE5IGxlZ2FjeS10cnVuaworMTE0MDkgYWY5YmY4NGZiYzVlYTQyYjlhNjEzODdhYWQ5MWE3NTIxMzkxZTYwNCBsZWdhY3ktdHJ1bmsKKzExNDEwIDczZjlhMWU4YWU1MmMwNWE1NDg3YTYxMTViZWU2ZDE5NTBkY2MxMjQgbGVnYWN5LXRydW5rCisxMTQxMSBhODI0OWE2YjFiNThlNDdkZGU4MzMyMzkxMzgzMTViNzkzYWQ4NzUzIGxlZ2FjeS10cnVuaworMTE0MTIgYmE4ZDFiYzk4YjJkODE1OWQ5ZmQwZjdhMDdiNDY1OGU0MTY4NTg2YSBsZWdhY3ktdHJ1bmsKKzExNDEzIGM0NWEyZDkxMWYzMTU2NmYzM2UzZTE2N2VhYjhjZDI0ZDNjZWJkMzQgbGVnYWN5LXRydW5rCisxMTQxNCBkYWUyZjJlZjkwMTVhYTNlMzhiNzEwY2VkNTA0ODRlZGY2NTg4MGMyIGxlZ2FjeS10cnVuaworMTE0MTUgMGJhODFiOTk4OGVlZmVkMWQ2MTAxMDdlMmVkZWU3NjE4YTdhYTBiNyBsZWdhY3ktdHJ1bmsKKzExNDE2IGRjNmVkZmQ0YmFlNWJmYjMzZTVkYTI3MDk2MzY4N2U1YmM0ZTJkNWMgbGVnYWN5LXRydW5rCisxMTQxNyAyMGI4M2NhMDZjZThhMTg3MzYzZTRjZWZmMTA1Mzg1MWE4OTFkYWQ2IGxlZ2FjeS10cnVuaworMTE0MTggMmY5MzZiN2EwOWY5NGYxODA0Y2FjYTdiNzE0ZTQ4M2NkZDQ0NWRkYSBsZWdhY3ktdHJ1bmsKKzExNDE5IDViNzNkNWJhYmM3OGU5MWFiNTUwNWViODY2NmMxMTgxMjI1OTVlNzIgbGVnYWN5LXRydW5rCisxMTQyMCAxOTdhYzVhZDMwY2RmMzYwOTM4NzUxOTMwYTE1MTdhYmJjMDcyZTJhIGxlZ2FjeS10cnVuaworMTE0MjEgYjRlMmIyY2I2NWIxYmQxMDVmN2ZjYjI5NWEyYWNlOTkyOGYzNmQwNiBsZWdhY3ktdHJ1bmsKKzExNDIyIDM0Nzg4NGVjNTMxODEzN2NlMmI3YTRmOGJiYmE0MTE1NTVkNDA3ZDUgbGVnYWN5LXRydW5rCisxMTQyMyAyZDc3NTMwODUzODU5MmRlYThkZGI5Mjk2ODlhMjIxMGQ4YWViNjM3IGxlZ2FjeS10cnVuaworMTE0MjQgNDAwODllNTU4MzA5MGNhZWJjMzA5ZTQzNmE3ZDBhOGNkM2FiMWI3YyBsZWdhY3ktdHJ1bmsKKzExNDI1IGZkYTQ2M2MzYjE3Njc4OTdlODUwNzFhNDE2NjRkYTk0NDk2ODNiMTAgbGVnYWN5LXRydW5rCisxMTQyNiAwZjMzMTg4M2NjMTVmMDUzZWU5N2VkOWM0NmI1MjFhZjE2MTZlOGFkIGxlZ2FjeS10cnVuaworMTE0MjcgM2IwMjkxNjU1ZTMxNjMxMmFiY2VlYjdlYmFjY2Q1NWQ5NDhmMDJhMSBsZWdhY3ktdHJ1bmsKKzExNDI4IDc2MDFhN2U5NTgzZGU1ZGI5MDkzYThiYjM4Zjk1MDA5OGJjNjllZjcgbGVnYWN5LXRydW5rCisxMTQyOSA1MGFmYTI4YWE0YjkxOWM5ZTZjMmQ2YTc1ZmRkNjZmNGQyYjA3ZTg1IGxlZ2FjeS10cnVuaworMTE0MzAgYzkxODA5Y2Q2N2U1NDFiZTY0YTgwZGEyMmU0NTAzMmIzZTE3ZjAyOCBsZWdhY3ktdHJ1bmsKKzExNDMxIDdjZDQyYzg3OGYxNjE5YjJkZTQ4NmQ2YjdkYWEzOTE3YmMzN2MzNmEgbGVnYWN5LXRydW5rCisxMTQzMiAwYTY4OTJiMWE0YWMyODI5Y2Y5YmFjMmYxN2JlNzU4YTRhMTI3MDA5IGxlZ2FjeS10cnVuaworMTE0MzMgY2YzY2ViYTdlZmRkZWQ2MjU3YTk3NjdjZWJjNjVkN2I4ZjdkODU2YiBsZWdhY3ktdHJ1bmsKKzExNDM0IDhhY2M3MmE4MTMxOTk4ZjgwNTY3OGYzYjFiNWU4ODVjYmY1ZTNiZDEgbGVnYWN5LXRydW5rCisxMTQzNSBjYjdhMTUwNjkxOWFmNGY3N2I3MDczZDhmMTZiYzA4OGYzNGIzNGJjIGxlZ2FjeS10cnVuaworMTE0MzYgOTkwMTUzODUzZTNiYjFlNzk3OTdhZmMzOWM0ZWE4N2EwNzU1N2U5NSBsZWdhY3ktdHJ1bmsKKzExNDM3IDM4NGZmZWQyNTJlOTFmZDg0ODg4ZWJlNWVkZWQ0OGVkOTZmZTUxMjUgbGVnYWN5LXRydW5rCisxMTQzOCBjMjY1OTBiMWMzOTZiNTcwZWYyOTZhZjM4MmU2MDJkZWNiM2JlZGU3IGxlZ2FjeS10cnVuaworMTE0MzkgYWMxODgxYzRiYTZkOWQwNmE5NmI3MWMxMTYzOTdiMjE0NjA5MGFmYSBsZWdhY3ktdHJ1bmsKKzExNDQwIGM3OWRlZmI1YTM5YzFiZDczYzNkNjJhYTdhMGIyYTExZjg5MmEzYjcgbGVnYWN5LXRydW5rCisxMTQ0MSAyNDljZDQ0MzNjZjA4ZWJmMmI4Njk1MjgzMjAxNDdjNWI0MmU3Y2ZlIGxlZ2FjeS10cnVuaworMTE0NDIgYTFkZWFmMDQyNzdiYmI4YTBkYTZlM2NlNzVlYTY0MzU4MzUyOGUxMCBsZWdhY3ktdHJ1bmsKKzExNDQzIDk2MThhODY4NzljYWVmYWFhN2NjMDM3NmQxMDhmNTUwYmFkM2VlMGUgbGVnYWN5LXRydW5rCisxMTQ0NCBlNzk1OGU4Yzc3N2E3ODRiOWMwYzY2ZTYxOWM5NTI3ZWM2NDZlZWFiIGxlZ2FjeS10cnVuaworMTE0NDUgZWNkZDk2ZGRiMDAzNWY3YmFhNzEzZmNiNDI2NjY2NDlkYTU5MzU2NyBsZWdhY3ktdHJ1bmsKKzExNDQ2IDRiNjRmMTMxYWE0ZDg1MzQyM2Y0MzEyNzY5OTJhNzFjZTA0NDk1YjQgbGVnYWN5LXRydW5rCisxMTQ0NyA5OWZmZTBhMzhhMWNhZDM4YWJmNTk1NWI3ZDUwODRhYzllMDAyOGJlIGxlZ2FjeS10cnVuaworMTE0NDggYmUyMWFhZGY0OTA4ZjdkOWVmMGRmNTA4NGIyYzM4OWIyMzc5ZjkxYSBsZWdhY3ktdHJ1bmsKKzExNDQ5IGM0YzMyOGFhYmQ4MjVhYWU5ZGQ0N2VkZDBjOWU2MDdmNGM2YmY5Y2YgbGVnYWN5LXRydW5rCisxMTQ1MCBkZTE2ZTE5ZmYxZGQ4YjBmOGE4ODU1NmNlNDU2MTAyMTUwODA0ZjI2IGxlZ2FjeS10cnVuaworMTE0NTEgMTU3ZTRmMjBjZDcxNjA5NGE3ZmQ5NWQ2OWQxZTNjZDQ0N2RlOGY4MSBsZWdhY3ktdHJ1bmsKKzExNDUyIDQ1NjE0Y2Y5ZTkxMWIwZDY0MDQzMzI3Y2ZlYWU1Y2Q2ZjkyMWY5MWQgbGVnYWN5LXRydW5rCisxMTQ1MyA1OGQ2OTBkNGUzMTI4Mzc1YjRjNjUxNzg5NWEyYTQxNjU0Mjk1ZDU0IGxlZ2FjeS10cnVuaworMTE0NTQgNzg4NWYxNWRhMDgwMWM5YTM1NzliNmFhODYxODgyOGUxNzlmOWU3NiBsZWdhY3ktdHJ1bmsKKzExNDU1IDQ2OGNhODRmYmMxNGEyNTVjYTMwZjk5ZGY5ZDkxZTFkZDliYmIyN2MgbGVnYWN5LXRydW5rCisxMTQ1NSBmZWQ2M2NjYmU2ZGMzYWM2NjNiZmU5N2EyZjcwMDZiMWIyODU2OGY5IGxlZ2FjeS10cnVuaworMTE0NTcgZDY5Y2ZjMjNhYTc2NjQzMGMxZDUzMTg3ZGNhMjBjOWFmMjY5YmU1YyBsZWdhY3ktdHJ1bmsKKzExNDU4IDNiY2Q2Mjc4ZTY1ODEwN2VkYmI0NjdhMWM0YjNlMTNiYjcwYzI2ZDUgbGVnYWN5LXRydW5rCisxMTQ1OSA4MmE0M2UxYmZhNGZkYTA2MDIzN2IwMWYzOTc0YjVkOGViZmY4OWEyIGxlZ2FjeS10cnVuaworMTE0NjAgMDdkOTdkMTU0NmQ0YjNjNDQ3OTViY2NmNGMzZDlhZjZhODUxMTk1ZCBsZWdhY3ktdHJ1bmsKKzExNDYxIDBhZmMzODI3OTc3ZTEyYjBmNzNiYmI5YTAzN2NiY2RjOTUyYmQ4OWYgbGVnYWN5LXRydW5rCisxMTQ2MiAyNmMwNDFiMTQ1YzE5NWI0ZGZiODJkZjhiMmMzZTljYTU5NmZlMDE5IGxlZ2FjeS10cnVuaworMTE0NjMgZjFlNDFmYzI3ODNjMTlkZDk2NTdlNWMwNzhhOTBlZTYzOTUwMWU3NiBsZWdhY3ktdHJ1bmsKKzExNDY0IDAzOTgwNTFmOGZmYWUxNzUxMzdjY2E2NjZhOWIzYTNmNmMzZmY2OTggbGVnYWN5LXRydW5rCisxMTQ2NSA3YzJiYzdkYjQ5MzM2Y2MxNjRlMjhiM2E4OGMxMTQxYzJmMDM0MzFlIGxlZ2FjeS10cnVuaworMTE0NjYgNGVmNjQwYWNmMjM2NWFhNzE1Mjc5ZjE3OWY2OTQxZTU4YzBlMTQwMSBsZWdhY3ktdHJ1bmsKKzExNDY3IDZkNGVhMzdkNzBjMjJhZmE1MGFiN2UwZTA2NTgzNGE2Y2Y0NzQ0NjUgbGVnYWN5LXRydW5rCisxMTQ2OCBkNzg3OGIzODZkYWZhODExYTE4OWNlOWQwY2ViYzJhYzNhNzFiMmUzIGxlZ2FjeS10cnVuaworMTE0NzAgZmY2N2Y5M2M0YTliYzBmZjNlMzVkOGM1ZDg1NzM3ODU4YTQzZTIxMCBsZWdhY3ktdHJ1bmsKKzExNDcxIDNlMTI3YmNhODRlNzJmYmQ5NGEyNGFhM2UxZjM3NThkMGU1M2NlODcgbGVnYWN5LXRydW5rCisxMTQ3MiAwNzBkZTRkMzlkZGQ4NmFjOTZkYmE1NmRlOWRjMzk4ZDE0MjE0NGIxIGxlZ2FjeS10cnVuaworMTE0NzMgNWZiM2M2ODNlODYyNjIzNTY2NmM2MTk0ZDQwNjJkZTUyNDU3OTc1MCBsZWdhY3ktdHJ1bmsKKzExNDc0IGQxNzgyMjcxMjQyMTBlY2E0OTQ5OWU4OTIxYmQ0M2UyOGM4YjQyMTQgbGVnYWN5LXRydW5rCisxMTQ3NSBkYjE2Y2E0ZGU0YzQ4NzgxOWU2MTJlNDg4YjM2OWNiNWY4ODM2ZWUzIGxlZ2FjeS10cnVuaworMTE0NzYgZWUzYWY5MTFhZDU2YjZlZDliMTE1ODJhMTQ3NGUwNDBiYTY1N2UyNSBsZWdhY3ktdHJ1bmsKKzExNDc3IDA5MTgzOTQzMTgyZWIzMmE4NmU5MzM5ZDgyNThhZjMwYWJlZmYwNTIgbGVnYWN5LXRydW5rCisxMTQ3OCA5YzljNGMzZWRlYzJlZDAwNzk3ZWVkNWM2NWIxMGM4M2U3OWIyNGJmIGxlZ2FjeS10cnVuaworMTE0NzkgZjE0NzM5MjYxYTM0YzE4MGNiZTczNzM5MTNjMTAxZGU0MzQ5NDU3MyBsZWdhY3ktdHJ1bmsKKzExNDgwIDNiZGQwZTc5MGJjOTg2OWMxMjYwODhjNmU2ZjBmNzBkM2IzY2Y2OTIgbGVnYWN5LXRydW5rCisxMTQ4MSAyOWUzYjFlYjQ2YjE5MGU3ZDM4YmUzMTdhN2Q4NjYyYTlhN2M5NTQxIGxlZ2FjeS10cnVuaworMTE0ODIgZjg2NGM5ZjY1NjA5NTJiNTE5OTc4NmM3NGE2YzdlZWRiZDVjODg2MyBsZWdhY3ktdHJ1bmsKKzExNDgzIGRmYjdmNDY4Yjc4ZDM3NzU4OTk3ZmJmNmM3ZmZhZmEyYTAyODAwODkgbGVnYWN5LXRydW5rCisxMTQ4NCBjMmRkNGYwODZhNDJiZmE0MTFmYWY3ZGZhNjljMWJhYTkyNzAxODU1IGxlZ2FjeS10cnVuaworMTE0ODUgNDQ1MDUwNzU1NTg2YjU5MTIyYzVmYTRhY2Q4Y2VkYjM4YTVlYTg1OCBsZWdhY3ktdHJ1bmsKKzExNDg2IDcxMTZjYjk3MTJiY2M3MDk5OGRmOTRkZWE3NWY1NWIyMzYzMDliMDcgbGVnYWN5LXRydW5rCisxMTQ4NyBmMTZhNmU2NDg1OWJiOGNmNmM5ODZiNTU0OGEzYWQxMzhiZTkyNTc3IGxlZ2FjeS10cnVuaworMTE0ODggOTNiZWM2YThkYjIxYjFmMTM1MzIwZGIyY2RkY2Q2ODZlYWU2NjA0MiBsZWdhY3ktdHJ1bmsKKzExNDg5IGVjMDFmZTljMjg0MTdhYmVlODMwY2NmMGE4ZGUyNDg1ZjM3OTEwYmIgbGVnYWN5LXRydW5rCisxMTQ5MCBhOWY2ZmIxNGFiZDdjYTIwMThiMDA5YTEwZWZkYWY1OWI0YjdhZTUyIGxlZ2FjeS10cnVuaworMTE0OTEgZmYxYThhMzhmOGMxMWFmYjViOWE3YzM0N2U0MzI5OWNkM2RhZjMwNSBsZWdhY3ktdHJ1bmsKKzExNDkyIGVhYmJlMGVkMzQ2OGNjZWM4YjgwYjIxMjVjNzZjYmNkYjlkMGJmMjIgbGVnYWN5LXRydW5rCisxMTQ5MyA1OTkxNjcyODg1Y2IxYWM0ZGZjZDg5NDFiNmY0YThhMTk3NDNjNjNmIGxlZ2FjeS10cnVuaworMTE0OTQgOWUwMWI3NGRhZjc3YzcxYzc3NTgxZmYzZTQ0ZTE5YWQwMDEwODhlOSBsZWdhY3ktdHJ1bmsKKzExNDk1IGExMTBiNjA2OTliMWI0MTI1NTE3YTE1ZmE4N2RkZTc1MDVmZGVjY2MgbGVnYWN5LXRydW5rCisxMTQ5NiAzNmJmYWZkZGE4ZDE0ZjNiOWZjZjI5NjQ2MTk4YzY5ZDllNzA1OWQ3IEJCUFkKKzExNDk3IGJmZDg0NzJmNjk2YjljOGZjNjlhMmM3MzE5MDJlYzE0MWQ5YTQwNDEgT1NBTQorMTE0OTggZDg1ZTgwNzBiMTY0ZjM3NmY3ZTZjNTJkNGJmYmFlNGUzY2QxMzQ5NiBQWVRIT05TQ1JJUFQKKzExNTAwIGE4ZDQ3YTM3MThjZTlmZDhjNGZmNzgzNzY5ZjFhYTU5NTNkOWQ5ZDAgQkJQWQorMTE1MDIgYjRkM2Y5OGJmMjI5NzJkNGExMjExZTViYzNkOTJkY2UzNzUzZDdhMSBQWVRIT05TQ1JJUFQKKzExNTA0IGUxZjMyM2FlOWM0YjUyMzdkZGRmMGUxODUwOWNjYzZlMzJlNTIwOTcgT1NBTQorMTE1MDUgMTFhYmFlMjg0YzA3MWVkYmVlNGU1MTg0NzVmYTBkYzdjZjZiMTJjZCBsZWdhY3ktdHJ1bmsKKzExNTA2IDE3Y2Q2ZTVkMjk0YmIzYTA0YmQ5OThjZDdhNWU2MzVkZGFhYTAyODcgUFlJREUKKzExNTA4IGU5MjFjZGJjYzVkZDYzYWZiNjMzNGFkOTNjNzRlNDQ1NWViMTc0YTYgUFlJREUKKzExNTA5IGRmZjY4ODEyNDY1NzJlYzc5MWE0YjE1OTM2MjIwYTAwZDcwYzI3NjQgbGVnYWN5LXRydW5rCisxMTUxMCAyY2UzZGE0MTllMWQzOWU3NGUwMDdhMDg4NDlhM2ZkNThkYmVlYzA1IGxlZ2FjeS10cnVuaworMTE1MTEgZGQ1ZmExNzU3NTU2ZGI3M2ZjNjMwNGQ0YzQ1YmI3Y2FjMDlkYjJjMyBsZWdhY3ktdHJ1bmsKKzExNTEyIGI5YTA3MDczNmVhY2IzMTFjN2M3MjE4MDhjNmNhYjRjN2EyMTA4M2EgbGVnYWN5LXRydW5rCisxMTUxMyA4OTdjZTA5NzY2OTY1MjBhNGIxZTNmYjdiMjAyZmZhZDI4ZGE4YWJiIGxlZ2FjeS10cnVuaworMTE1MTQgYjE1MGViZjdiMmI3MmM0OGE5MDBmMjIxNTkxM2JjZWQ4MTJkMzhmYiBsZWdhY3ktdHJ1bmsKKzExNTE1IDY3NGY0NTFjNDgxNWZmNGEwNDA2MmVhZDc3NThiNzc3Njk4OWFhYTYgbGVnYWN5LXRydW5rCisxMTUxNiA5MjhmZThiYzllYjZkNjc1NmZlNzE0YTdlMGZlNDRiMzFhY2U4MTRhIGxlZ2FjeS10cnVuaworMTE1MTcgYTk3MjRjOGU2ZTZmZDJiMDMwYzI2YTFiNGVmNDFmMjM1YWJhMzM3MSBsZWdhY3ktdHJ1bmsKKzExNTE4IGI3ZTc3NDdjMTk2OTY4ZjdlYTU5N2Q1MzM1NTk4YTZiYTVkZGJjOWYgbGVnYWN5LXRydW5rCisxMTUxOSA2YTJlOTI2MjE1NDExZGUyMWQ4ZDlhYWE1Y2ZlMzNhZDQwOTc3YWNhIGxlZ2FjeS10cnVuaworMTE1MjAgYTg3YjIzZDQyODgxNGUzOTA1YzI4MWI2YTJlMGJkYTRmY2M5YTlhNiBsZWdhY3ktdHJ1bmsKKzExNTIxIDNkZjViOWQ4MzM1Yjc3NWE5NjRkZWU0YTYxYmFhZjI0YTE1MjZkM2EgbGVnYWN5LXRydW5rCisxMTUyMiBmYjVhNWVjMmVhMWFiMDFiZjc0OTEwOGZkZGU1MmY5N2EyYjY5YjcxIGxlZ2FjeS10cnVuaworMTE1MjMgZDUzMjM3YmNmMTVmNzc0MjE1NDE4ZjczZjhiZmMyYjYwYjc4NTgyZiBsZWdhY3ktdHJ1bmsKKzExNTI0IDY1MTM5NzE5YjY1NjA1OWU1MmM3NjliMmE1ZmM4ODA4ODZkZGY3MDIgbGVnYWN5LXRydW5rCisxMTUyNiBiM2VlY2RlMzY3OWVkYzEzMzAzNDAwM2Q4ZmU0NTQzNzRmMTNiODBkIGxlZ2FjeS10cnVuaworMTE1MjcgZDNjMDY3OTM0YzYzY2JmNzZlZjc5NjJjYTY4ODNiYjY2ZjljZTMwOSBsZWdhY3ktdHJ1bmsKKzExNTI4IGQyNzIyYTRjYmQ5YzYxMjhiNTIxNjg2NjhmOGY1YjhlZGFjZDI2NTEgbGVnYWN5LXRydW5rCisxMTUyOSBiYWY5YTVhNzFkMmQ2ZGRmNjg4MTVjNGQ1YWQ3ZjkzNGIwNGJkNGZmIGxlZ2FjeS10cnVuaworMTE1MzAgOTk2MjgzM2Q0OWZkZGI5MzI2MjE5N2ExNWMwZWQ4ZDNlYzY1YjNkZSBsZWdhY3ktdHJ1bmsKKzExNTMxIDE4MmM5Y2JkZjA1M2RlM2E4MzJkMDgwNTE0YjQ1OWEyOGU1NmMxMTYgbGVnYWN5LXRydW5rCisxMTUzMiAxMWI2ZjBjOWVhYzk5OGNhOGY2YzgzY2VkM2Q0MGU3YjVjZDU1ZGEwIGxlZ2FjeS10cnVuaworMTE1MzMgMTg2OTdmNTlmZDQ4Yjc3YmQ1NDZlYTkxZjk2ZGZiNDMwZTc5ZWY5ZiBsZWdhY3ktdHJ1bmsKKzExNTM0IDYyYjk0Y2M5OGRlNDU5ZTdhODAzOTcxZDE0NzQyZGE1ZDYxODUxYmEgbGVnYWN5LXRydW5rCisxMTUzNSAyNGQwYTU3YWUyMzRkYzgzNTc2ODNlMWUxYzQzMWU1NGI4OTVkZDA4IGxlZ2FjeS10cnVuaworMTE1MzYgZjBjOGI4YTMzZjA4ZWFlMDhkM2ZmMjlkMTVlMGUyMDg3ZDhlOTdlOCBsZWdhY3ktdHJ1bmsKKzExNTM3IGViYzBjMTJkYmQ3OGQ2MGQ4ZmUwOGQ4OTI5NmIwOWIyYzEzOTU1YmIgbGVnYWN5LXRydW5rCisxMTUzOCA4ZDE4ZDQ5NmFmODcwOWZjM2FhYjBjZWU5NjJmZDZjMDE3ZTJiYmUzIGxlZ2FjeS10cnVuaworMTE1MzkgOWZkOTE1ZDIzY2ZhMDNjMDBkM2U4MDgyZDIyYzE1ZjM0M2I2M2E5NiBsZWdhY3ktdHJ1bmsKKzExNTQwIGQ4ZWRlMDIwZGZlYjI5NGI3NWFlN2RjNjk1YWJhOTIzNzBjMmFiMzAgbGVnYWN5LXRydW5rCisxMTU0MSBkNDM3YjY2ODNlMjQxNzZlYWI3NWIzZGEwN2RiODU5OWQyYjQzNGY0IGxlZ2FjeS10cnVuaworMTE1NDIgYWQ2YmMyYzVkMzUzZWVkY2IwMjM2ZWRiNjdlY2FjOTdkNGViYzMyMSBsZWdhY3ktdHJ1bmsKKzExNTQzIDkxZDA4NjA3NDZmYzI3MzNiZDIwYTE0ODZjOTAxMzA2ZjQ2NmRjMzMgbGVnYWN5LXRydW5rCisxMTU0NCA2ZDJlYjU4ZjA0MTg2ODA4NmQ5ODcxY2QxYzRhZjdkODg3M2YzNjAzIGxlZ2FjeS10cnVuaworMTE1NDUgMTE4ZjlmNzNhYmU5MTllOTJlYjliM2RlNjJmZjg1NDdjMjI0OWRiMiBsZWdhY3ktdHJ1bmsKKzExNTQ2IGNiZjcyYjIyMTBhZWE5ZWU3ODMyNjI4Nzk5YmQ3ZDQzN2E4MmY5YzQgbGVnYWN5LXRydW5rCisxMTU0NyBmM2ViZGIyMjc0ZTRhODI5ZjdmN2NkMmZiMDE3ZGEzNWY4MDEwMGI2IGxlZ2FjeS10cnVuaworMTE1NDggODM5YzY2MjJkMTVhMDcyMTBjNzZkNTk3YzUzYzJhZDI0MzE2ZmUxMCBsZWdhY3ktdHJ1bmsKKzExNTQ5IDkwNWJmYWMwZmEzMmUwNTY5NTdkZmI3ZDIwZGFmOWE1MjUzY2NiZjQgbGVnYWN5LXRydW5rCisxMTU1MCAxNmY4Mzk3ZDhmMDQ4ZGU2NGExYjhkMGUyMGFhOTFkYjQ4MDg2NTA1IGxlZ2FjeS10cnVuaworMTE1NTEgZGFiYjJiNmEzYTgxZWIwZmU4YzQ0ZTQ1NjE3ZGYyNjE3ZjI2NDA1YiBsZWdhY3ktdHJ1bmsKKzExNTUyIDViYzY0ZWZjNjVlMDI5ODQxYzMzNWY3MjY3OGQ1NTZmNmE2MTQ3MzkgbGVnYWN5LXRydW5rCisxMTU1MyAwNTE4MWUxMDQ0MjBhYzAzZjUwNjE3OTJlZTQ4MmZjMWRjZGZlNjBjIGxlZ2FjeS10cnVuaworMTE1NTQgMDI2ZTEyMzYyNDNlNmNiYWUxY2I3YmNmYjA1NGEyNTY4OWFhMmNmNSBsZWdhY3ktdHJ1bmsKKzExNTU1IDE5ZWM1MzQ2OTRhZGRlYjg0ZGZlZTIxNGRiYjVkZDZmYmQ3OWRiOGIgbGVnYWN5LXRydW5rCisxMTU1NiA4Njk1MmJkYWJiMjFlMTFmZWM5MWMzMWMxNWM5NDVjNjE4MjJhZWE3IGxlZ2FjeS10cnVuaworMTE1NTcgNWMxZTFmYjM3MmRlMDZlZTI4MWE2Y2YxMGZlMjRlM2I0ZDIwMzAyNyBsZWdhY3ktdHJ1bmsKKzExNTU4IDA4NzZiNmMyNDAwN2Q4NjY2ZGVhMjc3NmRiMjY3YjBlMzZhNjgzNzggbGVnYWN5LXRydW5rCisxMTU1OSAwMDg4YWQ5ZDk2YzM4NmFjNDJiYzU0NjBmZTJjYmEwMDhiN2ViMGUzIGxlZ2FjeS10cnVuaworMTE1NjAgNTQwMWM3MTQyOGVlZmIwZTYyYTY4MTczN2NjN2EzZGE5NzQyMTUwOSBsZWdhY3ktdHJ1bmsKKzExNTYxIDA3ODFhNDk5OTA1MTVjMTYyOTg2ZmRiYzI4Zjc5NjU4YmQzN2RhYjcgbGVnYWN5LXRydW5rCisxMTU2MiAyNTcwNjNhYWUwMDBmM2Y1OTg3YzYyNmFlYzRiYWM4YzRjYjU3Y2I2IGxlZ2FjeS10cnVuaworMTE1NjMgMzQzM2E5ZWJkZjQzOWU2ZDE4YzlmMjJmYmEyZmVlNzk1OWRlOWU5NyBsZWdhY3ktdHJ1bmsKKzExNTY0IGE1ZTNjNjk1ZDJmYmUzNzdmZWY0YTI4YWRmYTQzNTBlNTEwOGE2Y2EgbGVnYWN5LXRydW5rCisxMTU2NSBiMjVkNWE2MmUzNTc2M2Q1ODgzZTkwZDFjYjllM2IxODEyNDkwMDNlIGxlZ2FjeS10cnVuaworMTE1NjYgZWJjOGNiMDc3MDNmODlkNDY1MmQ2OTQ2N2I1ODQ0ZTdlNGQ3OGZkMSBsZWdhY3ktdHJ1bmsKKzExNTY3IGMyY2JlOWFjZmM4ZTU4ODMwY2Q5YWY3YjIzOTMzNGM3OWRkZTU3MmIgbGVnYWN5LXRydW5rCisxMTU2OCAwMTg4ZDYyNTk2OWFiMzEzZmQ2YzJiNDNkYTgyMmYzYzYzMGM5MzViIGxlZ2FjeS10cnVuaworMTE1NjkgOWNlYTZiNjE3ODM4ZTU0MTJmNTNhYTcwNjVjMmFiYzEzMzkxNWY3ZSBsZWdhY3ktdHJ1bmsKKzExNTcwIDYxOGZiODMwYmU2NThjZmI0NDM3OTlkOGQxMWRhZTQ4MDIwOWU5NTkgbGVnYWN5LXRydW5rCisxMTU3MSBhOTgyYjE3ZTkzOGY1MjlkZmEwNGMzNGQ4MTY1ZjM0NjRkMTgyYzJhIGxlZ2FjeS10cnVuaworMTE1NzIgODUwYWNmMjk5ZWEyM2RiYjFjYWQxZWZiMTA2OTEzYTM1NDBmYmQ3ZSBsZWdhY3ktdHJ1bmsKKzExNTczIGMwNjI3MjM4NGYxMThhZmUwZGM2MjkxZWFkMDNjZmM2NmE4M2QzYjYgbGVnYWN5LXRydW5rCisxMTU3NCBjNDQ3ZDFhZDc4NTE3ZDM1OGZmZjdiZDc0MGI5MTQyOTNiMTU5YmM3IGxlZ2FjeS10cnVuaworMTE1NzUgMThmODFmYWY0YmQ5N2I0MWYxN2FiOGZmMDUxYTg2NzhmMzRhNmJiYyBsZWdhY3ktdHJ1bmsKKzExNTc2IDRkMmNiMjEyYzhkMTU4NTQ5Mzc3NWI4NzFmOGEzYmM3MmE5NjA4M2YgbGVnYWN5LXRydW5rCisxMTU3NyBlNDliNWZlZDc0NGM0ZmY3NzFjOThiNWViNzJkNDk3OGRlNWFiYWIzIGxlZ2FjeS10cnVuaworMTE1NzggZWRhYzg2MGFkNzEwYjVhYTI5MjEwZWU0YzlkNzI0MGYwNDgwYTVjZCBsZWdhY3ktdHJ1bmsKKzExNTc5IDZiODU0OTMwNTJlOGEzNmY4MmU1ODI0NWMzODJjYmZjZjY0OTA0NDEgbGVnYWN5LXRydW5rCisxMTU4MCBiYzQxZTg2YzkzOGNmNGI5ZTcwYWU1YTQyYzA0MmRlNTc4MjQxYWNjIGxlZ2FjeS10cnVuaworMTE1ODEgM2Y0YmU3ZTI4ZDVjZTc4NTExNGNkZjJiN2Q1OTk5MGNmYjc0MWYwMSBsZWdhY3ktdHJ1bmsKKzExNTgyIGU5NDNmOWMwOTkwMWFkODE4YmUyM2NhYmVjOGM1ZDc3MTZiMDgzNzYgbGVnYWN5LXRydW5rCisxMTU4MyBkNGViMzVjNmU2ZWZiZTcwYWZmNTRmMjYxNTk0MTQ0NTI1Y2VlZGZkIGxlZ2FjeS10cnVuaworMTE1ODQgYWNmYjNhNjQ4ZGNhYWJmYTYzMjJiYWEwYTc2ZWZiOTYzZGIwYzE4OCBsZWdhY3ktdHJ1bmsKKzExNTg1IDdlNmM0ZjU3YWY2OTkyMGE1OGQ0YWNjZmVmM2I5ZTg0ZmFlMmZhYjIgbGVnYWN5LXRydW5rCisxMTU4NiBlNzFmODM5MjIzOTIwNGE0NWQ1MzhjZDU3MjY3YTg0MzI4NTZiODY3IGxlZ2FjeS10cnVuaworMTE1ODcgMjZmNWJmZDcxNWE0NjU2ZTg5YWNlN2ZiZTdlMjRkMTAxYWZkMjc2ZiBsZWdhY3ktdHJ1bmsKKzExNTg4IDU1NjkyN2Q4NjhkOGQ4ODgyYjY1MjNjZDY5ZWZlYzUyODNmYjQ3MDcgbGVnYWN5LXRydW5rCisxMTU4OSAyZTA3ZjFiMjk4ZTE2ZGI4MWYzNTlkMTVmM2NkMDc3NzVjZDcxOGZkIGxlZ2FjeS10cnVuaworMTE1OTAgNDcxYzZjMjIxODc5OWVlMjcwMGFkNmQyMWRiMDZmZWEzNzAwMWUxMyBsZWdhY3ktdHJ1bmsKKzExNTkxIDAzMTBlZTE2NDk3YTg3ZDcxOTNjYzE3MTA4OTEyZDZjYjVmNGNjYmQgbGVnYWN5LXRydW5rCisxMTU5MiA2MzdmZWM4YTdkZDNkYWZmMTdhN2Y2YjQ3NjAwMmFjN2Q4ZWFjYTI2IGxlZ2FjeS10cnVuaworMTE1OTMgMjA4OGY4MDI1M2RiMDRmMjE0YjVmMmIwNTgzYWZhNWE3NGI0MDVmYSBsZWdhY3ktdHJ1bmsKKzExNTk0IDQyNzg1NjFiZDVlODdmNTlhMTM4Nzc3ZmY0NjQ5NWRlN2E2NWQ1YjUgbGVnYWN5LXRydW5rCisxMTU5NSBiODI2ZTUwZTk1NzNmNGUwOTQwYzgyY2JmNjRhMTFiYmI2OWQzMjM3IGxlZ2FjeS10cnVuaworMTE1OTYgNzI4YmJlYjllNGY5NjU0NzJmODkyYjMwZTNmZmE2MDE2NTg2NjYxZCBsZWdhY3ktdHJ1bmsKKzExNTk3IDY4N2I2NmU2NTNkNjE1YTA4ZmMwYTBlOTIyYzY1YjA0MDM3YTgwZGIgbGVnYWN5LXRydW5rCisxMTU5OCAzMTM1MzE2Y2Q2NzBiMDhmYThjYWExNDQ5M2U3YmNlMzgxZDRjYjE4IGxlZ2FjeS10cnVuaworMTE1OTkgZjIzOTZkNDMwNTZiNmM2ZDFjZDk3NjVhMzVjOTZlYzA3YzZmNmE1YSBsZWdhY3ktdHJ1bmsKKzExNjAwIDc3YTliODVmNzYyYTc2NDhhNzhjMjczZWZmZmViZThmOTIxOTYwMjYgbGVnYWN5LXRydW5rCisxMTYwMSAyYmI3YjY2MGYwMDdiZWY3NDM5YzYwYTEyOTcwNDg2YTNjNjg1MDYyIGxlZ2FjeS10cnVuaworMTE2MDIgOWViMmQ2ZjZmZDNmNGM3MWNhNjdkYWFlMTc3MGRiOTg0OWVkMDMyNCBsZWdhY3ktdHJ1bmsKKzExNjAzIGNlNTJlOTIyZmJiMjZlYmFiNTM5Yjk2ZjM1MjA5NGU5MWE2NTA0MjkgbGVnYWN5LXRydW5rCisxMTYwNCAyNGNhZDRlMGRiOGRkMzljMzI1NDkwYzU1ZTM3MjJlNzIxNWNjMGE2IGxlZ2FjeS10cnVuaworMTE2MDUgYjUyODY0YzVlOWM5NDIzYTUzZDBiMmVjZDFlOTJmZTRiN2U3NDZlYiBsZWdhY3ktdHJ1bmsKKzExNjA2IDllMTc0NTY3OWU3MTUwMDNiMmNjYmJjMDlhYjQ3MzJlOWZlOGU1OTggbGVnYWN5LXRydW5rCisxMTYwNyAwNDIwZjU0MzRmNDQ5MzJhYTY2N2RmYmFjOWZiZTQ5NzMzMThlYzJlIGxlZ2FjeS10cnVuaworMTE2MDggYjA4NDVkMDlmZWRmNmY4MTY1MjA4NDQ0NzUyNDRkNGY3N2VkZjliMiBsZWdhY3ktdHJ1bmsKKzExNjA5IDgzNjYwY2RhM2UzZjM5NzAwNWY4NTY5NzFhZmEyZTZiNTk0NTgxZDAgbGVnYWN5LXRydW5rCisxMTYxMCBkYmE3MTE2MjZiNDMyNDFjNWU4MWVjMGIzNGI5M2ZmNWM0NWU3NmVlIGxlZ2FjeS10cnVuaworMTE2MTEgZDIzN2M4MDhhMDFlMTEzMThkMjUxNmRkMDkyMjgwYTU2NGQzMGFhYSBsZWdhY3ktdHJ1bmsKKzExNjEyIDI5MzgwYTRmYTIzMDg5MDMxNjNhYjVmZDFjZGE4NTY5NmQ2NjkzMzAgbGVnYWN5LXRydW5rCisxMTYxMyBkYjE1NDdmZDQwZTQ2NzViNzI4ZTViNmNhMTlhZGZlZmZjNmNmZWZmIGxlZ2FjeS10cnVuaworMTE2MTQgNGNjMTA5MDhlNmY0NWYwMGZlODI4NzM4OGE3MDE1ZGVkOWRhMzI2ZiBsZWdhY3ktdHJ1bmsKKzExNjE1IDEyMTM2NTQyZTE1NTQ5YjFlM2ZkYTIzYmE0NGFhM2RhOGNlMmQ3YWEgbGVnYWN5LXRydW5rCisxMTYxNiA0NDg2ODYyZDVjYmRkMGZjMDVkZWY3YjFmNDUyMTk5ZjQ2N2U4ZDg0IGxlZ2FjeS10cnVuaworMTE2MTcgNTVjMTgxMWJiOGVmYmEyOWI1MzIyM2Q3MmQwOGQ2YzU5NTJhOGMxMiBsZWdhY3ktdHJ1bmsKKzExNjE4IGZkZWVmMTc3ZjUzNmFkOTZjYTJiODBhZTU3OWI1NTFmYjQxNzMzMmMgbGVnYWN5LXRydW5rCisxMTYxOSA4NmI3MTI5ZDhkMDhiZDk3N2YwMjAzNjZiZjJhMmE5YmVlMjIxOGQ1IGxlZ2FjeS10cnVuaworMTE2MjAgMTdkMGM1MWUwODg3MDE5MjYxMmE3YTQyODRjOTFjOTc0MzdmYjNiNSBsZWdhY3ktdHJ1bmsKKzExNjIxIGIxNjYzM2IyMmU2YWUxNzBiOGI3NmNiYzc2NGJiNTE4YjI3YTBjZTkgbGVnYWN5LXRydW5rCisxMTYyMiA2Y2Q5MzMyMmI4MTBiNmY1M2ZhMTQ2OGZlMGJlMTAzNjg2MGU1YjAyIGxlZ2FjeS10cnVuaworMTE2MjMgM2QzMGRkNTQ0NDU2MjFkMDc0ZWQxYzYyMzI2YmNmNGQ5ZmE3OGVlMSBsZWdhY3ktdHJ1bmsKKzExNjI0IGY0MTI5ZDUyZGZjNWFkZjNmOTVjNjhjM2Y3YmFhYTUyZTA3MWU0NGQgbGVnYWN5LXRydW5rCisxMTYyNSBiYTQwMDY1ZTM5OWYwNDA0MTM5ZGVhZjBjM2VkNWY3NzEzZjczYmYyIGxlZ2FjeS10cnVuaworMTE2MjYgOWYxMDIzYzg4ZjU3MDY1M2IwODk0NTVhZjYyMDZkYjlkZmVjYTViMCBsZWdhY3ktdHJ1bmsKKzExNjI3IGIwZmEyZmMxMmRmYjI4Y2Q4NTI4MmMxY2I5NGQ2ZjJiMDBmZjA1MGUgbGVnYWN5LXRydW5rCisxMTYyOCA2Y2JmMDU2OTYxMjBkMDliMTUxNmRmZDVlYzdiYzMzZGZhOGJjNTViIGxlZ2FjeS10cnVuaworMTE2MjkgZWJiMDEwODU4NzcxYWFjN2QyOTQ0ZmQyNGU5MjYyNzZiOGY4Nzc2MCBsZWdhY3ktdHJ1bmsKKzExNjMwIDA2NjBiZTZlNjc5MTRiOWNmMWE2ZTNhOGY0ZTc3NGQ2MGExYzZhZWQgbGVnYWN5LXRydW5rCisxMTYzMSA4OGIyMjEwOTAwN2MxY2I5MThkNWVjYjJlMzU4MmQ1ZTMxYmJmMWFhIGxlZ2FjeS10cnVuaworMTE2MzIgNWFmNGIxMDIxNDRhZTVkOTA0YTQ5OTVmZDkyZTRkNzY5NDdkYjlmYSBsZWdhY3ktdHJ1bmsKKzExNjMzIGUxYjcxMGUzMGFjZjczYzViNTlhOGRiMTBkZTkzNDJiODAxZjM3ZWMgbGVnYWN5LXRydW5rCisxMTYzNCAwMzI5ZDQxOWU1MDYxODJlOWE4MDhlY2UxYzMwN2VlZjcxN2RlNTIwIGxlZ2FjeS10cnVuaworMTE2MzUgZGVlYjNjZTIwYWNmMWE4NWIxMGM4NjA3MGFjYjExYjYyOWNjMWY3YyBsZWdhY3ktdHJ1bmsKKzExNjM2IGY1ZDI2NWQ1ZTlkYzAyYWRiZmNhMTVmNzZjMDY0MDcxNDI3Y2Y5MzkgbGVnYWN5LXRydW5rCisxMTYzNyA4ZTNiNmQ2YWZlNGNjMWI1NTFjMzhiZmRlOTgzOWNmMjkzZDE1NTc2IGxlZ2FjeS10cnVuaworMTE2MzggODgxYjg2Mzk4YzIwNDNmNWEyMzM2ZTZkYTdjM2FjYjA3NWE1NWY3ZSBsZWdhY3ktdHJ1bmsKKzExNjM5IDk4ZGM2NzVkMDkxM2I2YjMzYmI4ODBmYjE4NTkzNzg3OTFlYWE2ODAgbGVnYWN5LXRydW5rCisxMTY0MCA3ZmFiYmJiN2FkOWE3YTFkNDc4NzdhZGU2OTA5YzFkYTJlMzQyN2IyIGxlZ2FjeS10cnVuaworMTE2NDEgNTIwNTgzYmRmMGIwMjkwY2U5OGEyNTI5ZjA4YWIwY2Q5NTUyYjVhYSBsZWdhY3ktdHJ1bmsKKzExNjQyIGU1Nzg0MzliOTgxZjg1NjE0NGI0MzIzNGEyYzBlNTllNGFiYTM4NDEgbGVnYWN5LXRydW5rCisxMTY0MyBjNDYwMjIzNjQwOWU4YjllMDQ5ODYxMDEwMGVjMzJjM2FmYjc1MGZjIGxlZ2FjeS10cnVuaworMTE2NDQgNmVjYjI0OGU2N2ZmMmMwYTU0N2QxMGRkODJkODZmZWQ5NjExZDE3ZiBsZWdhY3ktdHJ1bmsKKzExNjQ1IGU2MDA1NTIxNmI4ZjlmYzkwM2Q5NTk4NWY0YjgwOWE3MTRiMGI2ZDcgbGVnYWN5LXRydW5rCisxMTY0NiAxYzIyY2JmYjRhMWUyMDZhN2NiMDExOTlhNWJhY2FkYTI5YTY5ZWY4IGxlZ2FjeS10cnVuaworMTE2NDcgNGFmODdjZWQ5ZjNhYWI2ZDlmZGMzOGFkZDY0MzQxNGNmM2YyODljNCBsZWdhY3ktdHJ1bmsKKzExNjQ4IDRmYjRiMDA3NTViNWUwNmQ3N2U4YjAyNjNlZmMzNDBkMmNhMmVlZTcgbGVnYWN5LXRydW5rCisxMTY0OSBhMzA3NjU2Yzc3ODg5NzZjNDQ0ZmQxYjUwYzc1ZGE0MmFmNGJiOTAwIGxlZ2FjeS10cnVuaworMTE2NTAgNDY4MzBlNWEwMzUxZmFkMGQ0MTM3ZGVhM2U0NTVjNjI4OWMxNjdkZCBsZWdhY3ktdHJ1bmsKKzExNjUxIDFlOGYzMTA3NDU0NzUxMDI3MTdhMzVlZTM5YzYyMjNmNmYwYmEyMGUgbGVnYWN5LXRydW5rCisxMTY1MiAzNTI5YmI0Y2FlZmQ2ZTBhNWU1ZGIxY2Y3YzFiNmIzYzRkNjc3N2M0IGxlZ2FjeS10cnVuaworMTE2NTMgZGFmMWQ2MWI5NjExZDdhMjczMTI5NzAyNGRjYmJlMjc4NDI2NWM4NiBsZWdhY3ktdHJ1bmsKKzExNjU0IDlmNzI5MWY1NTAyNmQ0ZDU1YzQyNWI5M2QxMWRiMjNiMGVmZjM4MDAgbGVnYWN5LXRydW5rCisxMTY1NSBiMjYzMGEyOWZlZmRiOGI3ZjQ1ZDhjOWU5MDQ1NTNkNGNhNTc2NzIwIGxlZ2FjeS10cnVuaworMTE2NTYgZjJiOThjYmM1MDMwMTg4YWEyZTQ1ZGFkOGU4ZmE5ZDdlZTliODZkYSBsZWdhY3ktdHJ1bmsKKzExNjU3IGYwYTkyYzBhMTE1ZWNmY2RkNTU1ZjBmMTliYzM5NjczOGVhZTE5MDcgbGVnYWN5LXRydW5rCisxMTY1OCAxZTQzZGY3ZDhiZTNmZmU1N2UwNzM4YjMwZDEzODE4MjhhMDBjODJlIGxlZ2FjeS10cnVuaworMTE2NTkgZTJkYWE3ODNiZDQ3MjhlYTBlODMzODYyMDk2NWYzMzBjZmRiMGEyMyBsZWdhY3ktdHJ1bmsKKzExNjYwIDBhMDg1ZDczMWMxYzc5YThmMzI4NTY5NDBjYzUyZmZlY2IxNGMyOGMgbGVnYWN5LXRydW5rCisxMTY2MSBkMDg2NDE0YWRlNmVjNDllOTM2YTM5YzI5ZjUwM2YxZjBjZDgwMWFjIGxlZ2FjeS10cnVuaworMTE2NjIgZDNlZjRkMTBmYjk1NGM4ZTg1MTMzNDI1MGZhYzRjYjM1YjljYjQyZCBsZWdhY3ktdHJ1bmsKKzExNjYzIDZhNTU5ZGM3OGM5MTNmOGQ2NjkzZTc1NDViMDk2ZTI2MDNhYTYyM2QgbGVnYWN5LXRydW5rCisxMTY2NCBiMGJhMzE5Njc3MTk1ODIzZDg1MGZkNzA0MDk2YmM3NmMyMzFkNmIwIGxlZ2FjeS10cnVuaworMTE2NjUgNzVhODA0N2RmYzExMDNhZmIwMWQ3YWNjZWU1MzJkMDhlODIwYzU1MCBsZWdhY3ktdHJ1bmsKKzExNjY2IDZiZTM0M2RhMjkxNDRhMzkyMDgyN2IwNzk2YjkyZjdlYWU2YWE5NjggbGVnYWN5LXRydW5rCisxMTY2NyBjMDBiMjczMDg1YmVkNzBhYmJhMDcyNWNiYmJmM2ZjNjIxMmY1NDU0IGxlZ2FjeS10cnVuaworMTE2NjggM2NlNTExYmE0MjQyMjYxMzIxMDc0MjBiN2YwNzJlZmE3ZDllNjIwMSBsZWdhY3ktdHJ1bmsKKzExNjY5IDlmZDJiYmQ0NDU0ZTM2NzhiMWNkNmYxMTA1ODBkOWE4YzgyYWMyZjIgbGVnYWN5LXRydW5rCisxMTY3MCAzMmIxOTQ5MWU3MGI1YTc5ZDU1ODk5ZjkxNjBhNmY2ODdmOWQxNzFiIGxlZ2FjeS10cnVuaworMTE2NzEgOWE4OGZlMjA0ZDk1Y2Q4NTY3YWNjOTkyODIzODRiMTAzMGNkZmEwYiBsZWdhY3ktdHJ1bmsKKzExNjcyIDY4YWFkOGVjZmQ3MGVjYWFhOTQxNWY0YzE2ZDkwYzJiOWI0YjQzZDUgbGVnYWN5LXRydW5rCisxMTY3MyA2ZmM5MjBjOTA2NDA4Y2MyZTY3NTkxOTkxY2MwZGUzMDRhNDgzYTc4IGxlZ2FjeS10cnVuaworMTE2NzQgOTU4ZTFmYWEzOGE5MTA0ZmQ4Yjg4NjUzMTc5ODRmNTM1NjU5MTEwNCBsZWdhY3ktdHJ1bmsKKzExNjc1IDA2MjViOTk1OGIyM2JmNjJhZjI4ODE4NTMyMGVlMGYzM2Q1NjRhMjggbGVnYWN5LXRydW5rCisxMTY3NiA1M2VkNmJjZDA2NDFkZjM3ZWIyZjhlZThlNmYzNTI3MDc1OGEzMjRhIGxlZ2FjeS10cnVuaworMTE2NzcgMjUzYzk5M2VmOTM2YWQ1YTFmOTNjNzg1NDJlMTMxYTQ2NzE2ZDRiMCBsZWdhY3ktdHJ1bmsKKzExNjc4IGZhODkzZDU1Nzk0ZWNkOTg2NjM4NDg4MTAwMjM5ZThkMzFjODY5NzUgbGVnYWN5LXRydW5rCisxMTY3OSBlNzVlMjI4ZjgzOTVlN2VjNTBmNmQwNTZjMTVmZmFiODEwMWFjOWU3IGxlZ2FjeS10cnVuaworMTE2ODAgOGU5NTJiZGQwZmEzNzA0NzQ4YjA4NjYyZDFiMjhkYWYwYjVlZWM0NCBsZWdhY3ktdHJ1bmsKKzExNjgxIGYyNjRlNTdkNjU3ZGQzODA2MDM1NjFkM2QxZGQ4MDAxMGYyYzllMjIgbGVnYWN5LXRydW5rCisxMTY4MiBhODZhNzFiZWJkNjQwN2EyY2I4YjdjOTM5MjdhMmEwMzQ3MzVlMGU1IGxlZ2FjeS10cnVuaworMTE2ODMgYWE3M2RlZTIzMDkzMDc1Nzc2ZTRlYjNkZGM4YTYzNDk1MjhiN2VlOSBsZWdhY3ktdHJ1bmsKKzExNjg0IGUyMWQwNzk4YzAyYWFhZGUyM2UyMWQ1NDRjMzA5YjY1ZDg4OTBkNTIgbGVnYWN5LXRydW5rCisxMTY4NSBhMTY3MmU3NzVmMzMxZWNjMzQ2NTZiODVjZDlkYWEzZGY2NGJhMGE3IGxlZ2FjeS10cnVuaworMTE2ODYgNWZlNGQ1OTRhMGYyMTkyNDZiYWYyODg1OWJhMzJjOWJlNDcwNmYwYiBsZWdhY3ktdHJ1bmsKKzExNjg3IDNlMGM4N2JkYjU4ODk2OTQ4NjViNDdkYWQ4YjFlMWUxMzBiNmYwZGUgbGVnYWN5LXRydW5rCisxMTY4OCA0ZmU4YTc2NzBjMGQyYTMwODc4MjIwYjQ2Yzg5MWJhZDZjZTc1NWFkIGxlZ2FjeS10cnVuaworMTE2ODkgYWM2YzI5ZDFmMTBjOWMyZjkwM2UwNjRhNmM1MGYxYzJiZDNhNzk1OSBsZWdhY3ktdHJ1bmsKKzExNjkwIDAyZDhmNzIxNDA5YWJmNGZhYjg0MTE1M2FjMzhjNGY4YmVhZTUwODcgbGVnYWN5LXRydW5rCisxMTY5MSA0YzIwNDU2MTU5ZWJkYmIyODEyNjdmNDRmY2NiZmRlODJkNDdkYjMyIGxlZ2FjeS10cnVuaworMTE2OTIgMTk1ZTc0OGNmNjk2YTY5NmY5ZmRhZDZlN2Q4YjI2YTI2YzIwOGZmYyBsZWdhY3ktdHJ1bmsKKzExNjkzIDMzOTg0ODQxMjExZDVhYzE2MDI0NzJjYTcxN2MwZDUzM2QwMTI4ODQgbGVnYWN5LXRydW5rCisxMTY5NCA0N2NjZGI3ZmI2MjNhZTlhZGZiZDI4MTc0ZDVkMzQ0M2ZmODY4NmQwIGxlZ2FjeS10cnVuaworMTE2OTUgNThlY2VkNTMwOWEwNmI3N2RlYTVjMDI2NmZkNTJmMTE4NWI4ZjVmYiBsZWdhY3ktdHJ1bmsKKzExNjk2IGIyNDA0NjcyMGQ1NjA0NWU0OTEzMjNjOTQ2NzQwMWU4MzcxNzliMGUgbGVnYWN5LXRydW5rCisxMTY5NyBkNTc4Y2Q2NDc5NmQxMjY1ODVmYTBmOTU1OWY5NmE1ODZhMWRiZDNlIGxlZ2FjeS10cnVuaworMTE2OTggZWI4MDNlMTkxODg3ZTZlZDIwZDQ3NDBiYmRhOTA0YTU5OTY4NTdiNyBsZWdhY3ktdHJ1bmsKKzExNjk5IDE0YWQwMmQwNmUzMmQ4ODQyNjIxYTAxMDEwZDE4ZTYyMDY2NmRjZTggbGVnYWN5LXRydW5rCisxMTcwMCAwN2RhZTZmZGFlNzk0MTNkZjkyYmYzMjMwZjkzZWMxNzc2OTBmNDMxIGxlZ2FjeS10cnVuaworMTE3MDEgODg1MDUyNjliNDAzN2RlZWEyODNkN2I2Y2MzZmY3MzY1OWJlYWZhMCBsZWdhY3ktdHJ1bmsKKzExNzAyIDA4NThmMTFjODhkNzI1OGMxNjMzOWYxNWJjYjlhNWJiMGQ0YjZkYWUgbGVnYWN5LXRydW5rCisxMTcwMyBjMWRjMTlmOWFkNjA4ZTZiNGIxYThkYTYzMTcxOGY0YTIxOWU2NWI0IGxlZ2FjeS10cnVuaworMTE3MDQgNjcwOTY3YmU2ZGIzY2ViMzBkZjI3MWFjODQxMjdmYjE2MWFmZGM2YiBsZWdhY3ktdHJ1bmsKKzExNzA1IDgxNDhkNDRmOTkwM2RlMmZkOGQyMmFlOWFjMmI3Y2RjMGFjYjc2MmUgbGVnYWN5LXRydW5rCisxMTcwNiBkM2FmMzEwZjIzMGNiMTU2Yzk2MmI4MThkZjI4NGI1YzY0M2M2MWZkIGxlZ2FjeS10cnVuaworMTE3MDcgNzBlNDlmNzE1OTU3MmYxMzc5NmE5Y2QzNWIwOTY5ZTgyNmY2YWM3NyBsZWdhY3ktdHJ1bmsKKzExNzA4IGYxNzJkNDc0YzVhOTA0YThkNTMxYjhhZDAzMTU2MmJlNDA3MmNlMmYgbGVnYWN5LXRydW5rCisxMTcwOSBiZTNkODRmZjI5ZjlhOTUzYWQwOGY5N2ExZDNhMGI3NjIwYTM4NjljIGxlZ2FjeS10cnVuaworMTE3MTAgODlkOTE2ZGY0NzliMTViMTFhYzYyM2FjNzRjMzk1YmQ2MTU0YzM5ZCBsZWdhY3ktdHJ1bmsKKzExNzExIGMyNTljM2M0ZDBjY2Y5YmMzOWU2MDk5ZmFjYjZkYjY5OWJjNjY3MjUgbGVnYWN5LXRydW5rCisxMTcxMiAxOTk1Y2RiZTMzODQ2ZTQ3NzAyNGU2OTY3OTk3Y2FhMzYzNDY2YjNmIGxlZ2FjeS10cnVuaworMTE3MTMgOTM2OTkxNzlhNTBmMmY0YWM5MmVmZmE0ZDdlNTMyY2JiNjdhYzM0YyBsZWdhY3ktdHJ1bmsKKzExNzE0IDQ0ZmYxYWM1Mjk1YjM3ZDZkNWRkNjJiYzFhYTczMDM0ZDVjOGViMjcgbGVnYWN5LXRydW5rCisxMTcxNSBhNGU4MjMzMTU2OTkwMjE4M2M2YWRmNGZjODIxMzljN2NmMDEwZjVkIGxlZ2FjeS10cnVuaworMTE3MTYgMjk5OWYxZDkwNDI5OTYyODlhNjBlMjVhNDVjOTBjNjRhODAwMDMzMiBsZWdhY3ktdHJ1bmsKKzExNzE3IDU2MjFjZjliMDlkNjMyMGIzNmYwNTIwZWM0Mzk0ZmZjNDU4ZTdjZWEgbGVnYWN5LXRydW5rCisxMTcxOCAzYzlmZWM1N2I4NThhNjRmMDc5ZWU1ODYyY2NjNzU2YTdhMjU2NjFlIGxlZ2FjeS10cnVuaworMTE3MTkgOTg0OGY0MjM0M2M5OThmNGE5M2YxNWJhOWY1OWY0NjRiNmFjNDBiZiBsZWdhY3ktdHJ1bmsKKzExNzIwIGRjMWQ0NDVmMjM3MTg0ZDVjNmQxMjJiNWVjNjc2MzZkOGQ5NjM2N2MgbGVnYWN5LXRydW5rCisxMTcyMSA3M2RmMjRmNmJjY2YzM2FkZjc0ODQ3YzA1M2ZlNWZlZGMyYTVkYzY4IGxlZ2FjeS10cnVuaworMTE3MjIgY2U4ZjNjZWY2YWVkMmJmZjVjNDQxZmY0NTkyODgyOTk3ZDIzMmZlMiBsZWdhY3ktdHJ1bmsKKzExNzIzIDI1ZGEwOWI0MjdiNDc1ZjQ0NjU0NmYxZDEwMWVkOTNlOTc0NWI3YWYgbGVnYWN5LXRydW5rCisxMTcyNCA3OTQwMGQwNzhmMWIwM2ZjNWY5MGE2NWI3YTM2YzRkZTkwY2E1OWU0IGxlZ2FjeS10cnVuaworMTE3MjUgYTAzYzZmZDgxZDRkNmQxYWIzNDlkZTMxZGVhZWEwYThmMTc0NTcyOCBsZWdhY3ktdHJ1bmsKKzExNzI2IDJlMzcxMmU4NDc4MWZiMTI0NjY1MWY1NWNmZGYwNTk5YTZlYmExZTAgbGVnYWN5LXRydW5rCisxMTcyNyAzOGMwN2JhNGI4ZTQxMWY4NmNjMmY0Y2M2ZjAxOWYwMjQwZDk0YWIyIGxlZ2FjeS10cnVuaworMTE3MjggMDhiOGRhNmQ0Y2E2YTA3MjkwZWNiYWJkMWJlOTNjZTVhZjVmMDkzZSBsZWdhY3ktdHJ1bmsKKzExNzI5IDRiZmQyOWQ1M2I5NTBjMTdhN2EyYTY4MTYwN2UxODE3NjIxNDAzYjQgbGVnYWN5LXRydW5rCisxMTczMCBiMThkMWY5MWQ2NjQ4MzI0OTY3ZjQ1YTRiYzRlMzcyNWUzZWU2MGVjIGxlZ2FjeS10cnVuaworMTE3MzEgNDFmODNjNzJlMDk4NGM5MTc4OTdkMWU2ODA1YzNiMDlhMzM3MTUyNiBsZWdhY3ktdHJ1bmsKKzExNzMyIGQ3MjUyYTViN2UxZTdhZDVmYTgyNWZlNmE2OTJkMWIzZDA0MjVhYWQgbGVnYWN5LXRydW5rCisxMTczMyAzOWM0MTIyMGY3ZWQ0NmYyMzY5YzcxYzcwY2VmNWQ4NWViOGM0MDJjIGxlZ2FjeS10cnVuaworMTE3MzQgZGQ4NDQzYmQ0NDc0MGM3YTlmOTEyZmNiZGQzYWQ2NjgyNjI1MDA4OCBsZWdhY3ktdHJ1bmsKKzExNzM1IDRjNGNlYzU0YmE2MzRkZWY0MWI0OGM1MzY1NjYxZjk3ZmMzNDUwMDEgbGVnYWN5LXRydW5rCisxMTczNiBiNTVkYjA4ZGZmN2JmMjU5MjdhMmU3OGNiNTU5ZjhkYzlkY2VhMzA4IGxlZ2FjeS10cnVuaworMTE3MzcgMjI5NDc1ZDI5NTFmNzA1OTFlMWYwMTdlMDJmN2E2NTJjYTZhYjY0ZCBsZWdhY3ktdHJ1bmsKKzExNzM4IGUyM2VjMjQwMzE1NzI0N2IzZGQ1OWI4ZTlkMmYyMWYyMDRjODZhN2YgbGVnYWN5LXRydW5rCisxMTczOSA3MTBkYTEwZGVlOWRiMzRhMGU0ZDExMTg3YThmOTk1OTUyZmUxOTlhIGxlZ2FjeS10cnVuaworMTE3NDAgMDQ4MDAyZjI3YzFkOGJjYTVhOTNjMWRhYmQ5Mjc2NDQwMGQ2NGExNSBsZWdhY3ktdHJ1bmsKKzExNzQxIDE1OWY5ZTc0Njc1NDk0NzEwNWU3Yjc5MTQ2YmQyMzNlNzIzYzg2YjggbGVnYWN5LXRydW5rCisxMTc0MiA4YTg4NWYzYTVmNDZhY2U1NDU2YzY0ZTcwOGEzMzZkN2Y0ZTc1OWMwIGxlZ2FjeS10cnVuaworMTE3NDMgMWM0YmEwZTJmOGU3NDNiNjE2YjlmZDc1MDJlN2U2NTNiMTc2YzEwYiBsZWdhY3ktdHJ1bmsKKzExNzQ0IGI0ODcyYmM4ZDllZjczODYzNGYwYTI2OWFiYjkyY2VkZDI1OGFiMTAgbGVnYWN5LXRydW5rCisxMTc0NSBlMTk5NTRiYTFiYzQxMzc4OGIzM2I3NTZkOGExYTFkNmIwN2I2ZjU3IGxlZ2FjeS10cnVuaworMTE3NDYgMDI4Mzc1OTQwN2UxNjFkZjAxNTE5Mzg2NWUyM2Q2MDlmZDUyOGFmMCBsZWdhY3ktdHJ1bmsKKzExNzQ3IGNhODU4N2QyMTVlNmZlY2FlMzhhNjMyZDQ3ZWUzNmQzNTg3NjJkNDQgbGVnYWN5LXRydW5rCisxMTc0OCA0MzAwMzhlMTY0MzM3YTMwMDExMjk5NmJhNzlkYWQ5OWUxY2E4Njc0IGxlZ2FjeS10cnVuaworMTE3NDkgNTkwYmQ5YjQ1YmY2MGQxODc5YjQyYjYyNTI3ZjFlZDkxYWQwYWE3NSBsZWdhY3ktdHJ1bmsKKzExNzUwIGJlMTQ5MzM5MWM2ZGQzYmM3YmFkMzE3ZTdjMDBiYjQyMWYzZjA2NmYgbGVnYWN5LXRydW5rCisxMTc1MSA5ZDM5M2EwZjcyN2M3NTQ0YTRhZDFhYmEzZmUyMjFjOWE4YjhmZTM4IGxlZ2FjeS10cnVuaworMTE3NTIgMDgwNzk5ZDBjZjJiMmJkOWE0NzYwYWU1MzU3OWM3MDhhZjZiM2JhNCBsZWdhY3ktdHJ1bmsKKzExNzUzIDhkMTQ5MDYyOTJjNjZjYzAwNWY0NTU1ZTMxZTljNDA2YWFkNzk3NDQgbGVnYWN5LXRydW5rCisxMTc1NCAxZTMzYThhNTZiY2E1YjdjNjMwODdmNTY1ZTg2YmIzMGM1MTZjOGQyIGxlZ2FjeS10cnVuaworMTE3NTUgMjU3N2MwY2M3NDgyYTg4ODU0ZjIxYTQwMDU0NzE3NzkxNmMyZmI0OCBsZWdhY3ktdHJ1bmsKKzExNzU2IDZiNmJkMTRkNzUwYjgxYjg0NGZlMjc0NDIzYjQ2ZDlmNDU3MDRjZjcgbGVnYWN5LXRydW5rCisxMTc1NyBhNzNjZDdmOTliOTViZDEyZDBhMDc4MTljMThiNDRjY2ZkNDQxZjc5IGxlZ2FjeS10cnVuaworMTE3NTggYWNkODFjMzIyN2RlYjg5Njg5OTE3N2U2MGQwNjUxOTBlN2ZiNzA4NSBsZWdhY3ktdHJ1bmsKKzExNzU5IDlkMmMxMmYyNDBlNjM2MTJlY2FhNGY4N2M4ZGNhNGJkNmU4OTQ3YjggbGVnYWN5LXRydW5rCisxMTc2MCA2NWYwOGNjNTk1NTM2NDA2NDkyNGY5YmNkOTUzYWU0ZDc1ZWM5Y2QxIGxlZ2FjeS10cnVuaworMTE3NjEgODZkZTFmYTBmYmI3NjcyYzAyYzU2OTJmMzAyZDY0NDgwZmRmYjU0ZSBsZWdhY3ktdHJ1bmsKKzExNzYyIGMxMTZiYjNlMmFkMTg4YjMxMDFkNGZhZmM0YWQ0OWYyYTQxOTJhOGEgbGVnYWN5LXRydW5rCisxMTc2MyBhMGYzMzI1ZmVkZjE5MWU3YzRlZWJiZTU1ZjViNjY5NzJiOGQ2ODljIGxlZ2FjeS10cnVuaworMTE3NjQgNTUwYTQ1NmQ4ZjYxNTg3NmM4MGVlMmI5NTNiMmJkZTQyYzllZDE0NCBsZWdhY3ktdHJ1bmsKKzExNzY1IGFjZWUzNTk1ZTYwM2VkMmI0YjQ3Zjk5ZWU0MmMxMjhjZDIzNTgzMGQgbGVnYWN5LXRydW5rCisxMTc2NiBmYmI0NTA2MGJlMDMyNDNjZDUzYzE3ODFiYjJiZTU5OGIzZjVmMTU3IGxlZ2FjeS10cnVuaworMTE3NjcgNzI0NDExMTMyNDNhODVlMGFjYWNkZTkzZmQxZmExYTk4MzZiMTE5NCBsZWdhY3ktdHJ1bmsKKzExNzY4IDUwZDk4NTBjYzhjM2IxNGIzNDJkMmIwMjkwY2Q5OWJjNDE2OGRhZmYgbGVnYWN5LXRydW5rCisxMTc2OSAyYzZkZDBmYTRlYjk4N2I2ZmQ5Nzc0MjU3M2VmYTVhOGM1MjRlMzY4IGxlZ2FjeS10cnVuaworMTE3NzAgOGZlZDhjODVjNjFhOWE1N2EwZWMyN2UwMjc3ODgxMjQ1MDlhMzI0YSBsZWdhY3ktdHJ1bmsKKzExNzcxIDg3OTE0NTU0ODVlNTJjY2RiZDNhMGYwZWY5MWRmMzIyZjNmODJhZGUgbGVnYWN5LXRydW5rCisxMTc3MiAyZjg4ZDhhYTczMTA5M2E3ZWRmMjQwYzNlY2I1MTI2N2E5NGRjZTdjIGxlZ2FjeS10cnVuaworMTE3NzMgZjM3YmUwYzgyMmRjMmFkNDFhZGQwYWQ0MWUxNjc4YjZlNTdlMTYyMSBsZWdhY3ktdHJ1bmsKKzExNzc0IDI4NGJmOTVkYWI4MGExZjg4MDRkMWMyMWM2NTAzMzZhYTk5YjMzNGIgbGVnYWN5LXRydW5rCisxMTc3NSBjMzkyMThhNjhkZjFmMzc2ZDkxODUxYTlkMzg4MzY1N2NhNmVjZmE0IGxlZ2FjeS10cnVuaworMTE3NzYgNTNhYjhkMGIwZDY0NGUxMWZkMjA5MzkwZGY0ZjZmZTc5MGE0YjdmNCBsZWdhY3ktdHJ1bmsKKzExNzc3IGZlN2NiZDEzMDg2YzNhNDkwZTgzYWM1MzljMTcxMzY1MGNkYjhiMzcgbGVnYWN5LXRydW5rCisxMTc3OCA4MDlkY2MxYmJjMjFkY2QzNTNmODgyNzE5NDI5ZWRkN2ZjZGFiY2JhIGxlZ2FjeS10cnVuaworMTE3NzkgNGI5YzRjZTU5OTljOTJiN2IxNTNlNDA4YjA3YzA1YjJlOTdkNDBkMiBsZWdhY3ktdHJ1bmsKKzExNzgwIDBhNmVkMzg0YWYwNmE1NzIzMDNiMWExZmUyN2QxMzcyMTM3NzM0ZjkgbGVnYWN5LXRydW5rCisxMTc4MSBmYWEzMWIxYzBiNTQwNTcyOWJhM2YwMTdjM2JhZTI5ODE0MWRkNDc1IGxlZ2FjeS10cnVuaworMTE3ODIgNTE1NmNmOGU0MjY5MWFlNWZiMTFkMmFlZjhmZjJiNDM1NDRhMjdkMSBsZWdhY3ktdHJ1bmsKKzExNzgzIGJjNTE1MDY1MmVkY2FkNzBlNmQ0ZDA2NjcxMzFiZWUzZmJhNDJiNzggbGVnYWN5LXRydW5rCisxMTc4NCBlYzNkMmIzNzU2ZDc2ZDk1YTQ4ODFmYjg1NmEyZDQ0ODQzYWU4Y2Y5IGxlZ2FjeS10cnVuaworMTE3ODUgYTZjZmY5YzI5MGU1MjY0NWMxMzExMGM3NjgzMGU2Mzc3NDg3MzEzZSBsZWdhY3ktdHJ1bmsKKzExNzg2IDVkMzQ0NzEwZmNjM2Q2YTIzNzZkYjQ2YmFhZGE5NzUzMDk2ZWY1NDMgbGVnYWN5LXRydW5rCisxMTc4NyAyMzQwZjYxNWRhOGY0Mzk3MDQ2ZmY2ZDI3YTEzZjE2ZDFmMzVlMzk4IGxlZ2FjeS10cnVuaworMTE3ODggYmMzMWQ5ZjZlMGExNGUzNjIzMTViM2QyNTY5Yzg5MDVlMWEzNTFhYSBsZWdhY3ktdHJ1bmsKKzExNzg5IDAyZjM1MDRiMzk4ZGY0NzY2YTUwNjZhNmU3YTY3ZDlmNzRiNzFiNjYgbGVnYWN5LXRydW5rCisxMTc5MCAwYTY3ZGI0N2UxZDBlNDZlZDdiODY0YmU5ODE3ODEwYWIxMmY5ODA0IGxlZ2FjeS10cnVuaworMTE3OTEgMGRlNjYyY2VjYWNmY2FhZTk4NTAxMTEzNTA5ZjQ3MWI3ZmFkNzc5MSBsZWdhY3ktdHJ1bmsKKzExNzkyIGExY2EwODUxNjhmYzgxMTQwY2MxMWRkNjdmZTc4Mzg2ZWRlODJmNGIgbGVnYWN5LXRydW5rCisxMTc5MyBkNjRiNGNjODFiYTYyZDMzOWZiNWM1NmFhOGJhNDBhOGM3MjIxNTFiIGxlZ2FjeS10cnVuaworMTE3OTQgZDI4YjQ5MWY0NTU1NmFhMDUzN2QwZWVmMDNiNjJiYTE0N2I3ZmJiOSBsZWdhY3ktdHJ1bmsKKzExNzk1IGEyMzk3MjU1YTZkMzNmNWQyNGQ1MjVlNDZkNDhiZWQxZmFkMDEzMjkgbGVnYWN5LXRydW5rCisxMTc5NiBkNjQyMDA4MzRhNmI0YWY0NmM5MmFlODAwYTlkNzE5NzI2Y2UyZWYzIGxlZ2FjeS10cnVuaworMTE3OTcgNjkwMzQ4MjQzODAwMWM1ODMxZDc5ZGVjNGRjNTEyNGRlOTNkNzdjYyBsZWdhY3ktdHJ1bmsKKzExNzk4IDQxNDEyOGExNWJiZDlmNGRlNmZhNmI5ZGViNDhhY2NkM2Y4NTNhMzYgbGVnYWN5LXRydW5rCisxMTc5OSAyNDFkMDEyZTgyZGNlNTg4MThjMzMwMTgzODA3YzNiNjk1YzhkYzM2IGxlZ2FjeS10cnVuaworMTE4MDAgM2I2YzdlNzBjYWZmZjZiZGZkZjZiNzBhYTU0NjhiOTJhN2U4MjFiNCBsZWdhY3ktdHJ1bmsKKzExODAxIGNjM2UxNDgzNzM3OTk2M2Q1YTk4NmU2M2JmNmMyMGQ2MTQwMzUwYWQgbGVnYWN5LXRydW5rCisxMTgwMiAwODNlZmEwNzYzNjYxMGY4OWQ4M2RjNDgyMzlhOTg5NjU0MDM5NjdkIGxlZ2FjeS10cnVuaworMTE4MDMgNzk0MzllNGU5OTc2OTU4YTBkNGNjODMxMTRmY2I0Y2U0NTk0OWQ5OCBsZWdhY3ktdHJ1bmsKKzExODA0IDkyOGVhNWE0MDllNTM1MWQ0NjQ1NmViYmQzYTliYTdhNmMyOWMwNTEgbGVnYWN5LXRydW5rCisxMTgwNSAzNGU0MjAyZWRlMjAxZDdkOWMwNDRjZDMwNzRhY2VmNzFmNDQyMDdhIGxlZ2FjeS10cnVuaworMTE4MDYgYmQ5ZDM4ZDY0MzY5NGVjNTIzN2I1NTliNGFkZjI3YmE4ZDNjMmE0MSBsZWdhY3ktdHJ1bmsKKzExODA3IDVkYjY0N2ZlZGJhMDMzY2VjZWEwNDQwYTI4NzJjYzNjMzY1MGI5NDggbGVnYWN5LXRydW5rCisxMTgwOCA0OGM2MTVkODRkYTY2ZGFiODQyNjFkNDE3YzAyNDc1NWVhZWJjMTgwIGxlZ2FjeS10cnVuaworMTE4MDkgNWVhODgzNmQ5NjcwMGI5MmFlZWFmMTZiNjcwNmNkMjQ1MGE4ODk1YSBsZWdhY3ktdHJ1bmsKKzExODEwIDQ2N2RmNjFmZmJmYTk1ZmVlNmMzOTc0MDUwMWQwYTgzYTgwMjVlMjkgbGVnYWN5LXRydW5rCisxMTgxMSA0MTZiNzdiODExYzViODMxYjM5NTlmNzI0NTE3YTM3OTg5MTJiNjY0IGxlZ2FjeS10cnVuaworMTE4MTIgNzg0ODdlNzAxNjg2ZDk0MWQwYmM0YmE2NjY5YWUwYmZjYzg3ODQ2YyBsZWdhY3ktdHJ1bmsKKzExODEzIGYzM2IzOTRlNWQ3ZmNiYzM4NTQxZWI5NThlZjQ4ZGFlYTUzYWJkZWYgbGVnYWN5LXRydW5rCisxMTgxNCAwMDNiNDJjOWYyNGQyMTA4MjdmZGZiMGIxOThhOTAwMzE1ODYzN2QxIGxlZ2FjeS10cnVuaworMTE4MTUgOGEyNmU1NWUxOGI4MTJkYmFlYzVmMTM4YWE3YTY0ZGZiMmU2NzMzZCBsZWdhY3ktdHJ1bmsKKzExODE2IDg5MThlNGY1NGVjYThkMTY2YTQwYTQ3OTcyYWNjMjE2ZDE2ZDFhOGUgbGVnYWN5LXRydW5rCisxMTgxNyA4ZTlkOTc5ZGRmNTUwYjMwMjI1OTk0M2M3MDU3MmRmYzAzYWI5MzhkIGxlZ2FjeS10cnVuaworMTE4MTggNDBkMjFhNWI5OTkwMTU2YjA0OGM3OTI5OGY3NzQwZDczYTBkODg3YiBsZWdhY3ktdHJ1bmsKKzExODE5IDg0ZTIxYWM3ZDNlYTM1OGNkOGY2ZmI0MjEyZTQ5MjlkYTQyYzg5ZmYgbGVnYWN5LXRydW5rCisxMTgyMCAxNTA5MDdjMmMyYzA4Mjc5NzMwMmNlYzRhYzNmNDc5MjE4MWY5YzZhIGxlZ2FjeS10cnVuaworMTE4MjEgOTU4ZTQ4ODllY2FiNTZlMzgzZTlkMjMxYzM2ZDdiNmM0MmVmZWNmNyBsZWdhY3ktdHJ1bmsKKzExODIyIGNhNmUyMjczZmJmNjI3NTQ4MGEwNGU1NjZkYjAwMDk4OWIwODc2NTEgbGVnYWN5LXRydW5rCisxMTgyMyAzYjkxNDMyYmExYTQxMzE1NmIzN2YyNmIwMWVkNGVkMzhhOWQ5MzMzIGxlZ2FjeS10cnVuaworMTE4MjQgYzkxZTRkODdmNjk0Njk3MTVhZjVlMzgyMmY5NzViNGM0ZDMzMmUxOSBsZWdhY3ktdHJ1bmsKKzExODI1IDgxNTc0ZTQ2NDZiNDNjYWRmMTgzYzAwODZkNTYyYzgyNGM4MGY2ZGUgbGVnYWN5LXRydW5rCisxMTgyNiA3ZjI0MmYyOWE0NWZhOGEwMDA3Yjg0OTRiYTE0MGY5Mzc1Mjk3N2VmIGxlZ2FjeS10cnVuaworMTE4MjcgZmQ1YTQzMDliZmRjMmQ0YWY4MjU0ODZhZWZmNWZmMTAwMjY5NjJlNiBsZWdhY3ktdHJ1bmsKKzExODI4IDc1MjM3Y2E1NmFmZjM3NTUyYjZkYWU4MDNhNjdlNTk4YzljMjU4ZGEgbGVnYWN5LXRydW5rCisxMTgyOSA0NjJjY2QwYmJlNTBhYzY5MmZkM2Q4ZmJiODU0NzBmYjA3NDFiMjEzIGxlZ2FjeS10cnVuaworMTE4MzAgOTM0MGNiMmFkM2E4ODc0ZjlkZmVlODlkZDVhY2VmYjE3OGU0M2U4OCBsZWdhY3ktdHJ1bmsKKzExODMxIGI2MDVmMjJhMDk5YWE5YzY5NmQ4YzhmMWRmMzUxMWRhMDA5ZTIwMjUgbGVnYWN5LXRydW5rCisxMTgzMiBmNGRjYjkwYWM0MTlmNjllYTIwZmQ5ZDc5OTJmNDA3ZjAzYTkwNTVjIGxlZ2FjeS10cnVuaworMTE4MzMgZmIyZTdmMzhlMWJiZTY4YWJhODk5OWQyZTdkNTNjYmQ5NjIyN2QyNyBsZWdhY3ktdHJ1bmsKKzExODM0IDA0MWYyMmE1YTM5ZGQ5YjFlMzI3MzBhMzdhYjc3NjBmODVmY2Q3ZTcgbGVnYWN5LXRydW5rCisxMTgzNSBiYTMyNzdjZDMwNjg1ZjUyY2M5OWQ2MzE4YjU2Yzk5NzY1MjJjMmRjIGxlZ2FjeS10cnVuaworMTE4MzYgZDc0MGM5NjEzYmJhN2ExYWRkYTI2NGFiNjY1NGUzYzI3ZDdkYThiOCBsZWdhY3ktdHJ1bmsKKzExODM3IDcwYjMyZjQxYTdmYmZiMzhlZTU3Mjk0NjI5MTYxODQ0MDQ4M2E0ZDkgbGVnYWN5LXRydW5rCisxMTgzOCA1YTNkMjEzMDFhMDUxNDVhZjEwMDI5MjNiNWFlYjYzNjk4Nzk5MWQ1IGxlZ2FjeS10cnVuaworMTE4MzkgZWY2OGYwZTYwOWUxOThhYmU3YTg4ZDdjYjQxMjdmN2VmZDFlMGIxYyBsZWdhY3ktdHJ1bmsKKzExODQwIDRmNzg1MDRhNWY4MWRjNzZiZmI4NThhMDc0ZDI3MjJhOTBhMjllNjIgbGVnYWN5LXRydW5rCisxMTg0MSA1MGEyZDY0Mjc2ZTRiMTI2ZWZlMDg1MjE2MTEzNDQ5ZWQ0NWRiMWU5IGxlZ2FjeS10cnVuaworMTE4NDIgMjMzNjNiYjhiZDkwY2YxOWZlN2U0NGU5ZmM4ZWM3NzNhOWZjNTAzMyBsZWdhY3ktdHJ1bmsKKzExODQzIGUxNmUzNjNlMzkxYjQzM2EzODcxMDdhMmRjYjk2MzM5OGJmODA5MzEgbGVnYWN5LXRydW5rCisxMTg0NCBiYzlhZWE3MThlNGUzMmUzZDcxYjliMzNmYjQ1NzBlOWNkMjMxYzBmIGxlZ2FjeS10cnVuaworMTE4NDUgNjY5MDgzOGJhOGRhNjBlNGY1YzRmMDE4NmVlMmZhMjQxNmU0N2IzNSBsZWdhY3ktdHJ1bmsKKzExODQ2IGJmODlmMTQzNWI3MjhjZDBlZTNiZGUzOGU4ZDAwODZiNjJlMDBmMmIgbGVnYWN5LXRydW5rCisxMTg0NyA0NDIyYmEzODllNDE1NzBiNzI4MGU5NjM4NjUyMDliMzE1YTkyMjBhIGxlZ2FjeS10cnVuaworMTE4NDggZmRjM2M0NTllZDAwYWZjMjgxNGYwNzlkZDViODZlMWQ1OTRlYTA1YyBsZWdhY3ktdHJ1bmsKKzExODQ5IGNkMTlhN2RiODczNTZjZmRjY2Q3MDYyZWVkNmJiZWM5YTI0OTA0ZGIgbGVnYWN5LXRydW5rCisxMTg1MCA2NWIwODgyYTQ0YWJjZDlhZDZjNWEyYjFmODg1OTM1Mjk4MGMyZGFlIGxlZ2FjeS10cnVuaworMTE4NTEgNjFmNDVkZDdjNDNhNTMwNDY4OGMzNDZmZWVjMTgyYTU1ODk0YWRhMyBsZWdhY3ktdHJ1bmsKKzExODUyIDZiNWY3ZTlhMzFjYjllNmUwMzc1MzdmNGQxNmExYWEwZTQwMWM3MDUgbGVnYWN5LXRydW5rCisxMTg1MyBmMGEzYzFmYzdiOTAyNGVmZmMzZDkxOWE3OWQ1MGZmY2I4MTQ3NzdhIGxlZ2FjeS10cnVuaworMTE4NTQgNmI4ODllNGMwNzU0ZTAyMDkxNGRiYjc3ZDcwNzJmZDNlZmIwN2M3OCBsZWdhY3ktdHJ1bmsKKzExODU1IDJmZTdiYmU3MWRkOGMwYTAyYjFlZGQxODcwYmY1NDQ5ZDAxNTZjNDcgbGVnYWN5LXRydW5rCisxMTg1NiBkMWVhZGE5YmJjM2M3YTI3ZDgzY2I4ZjYwYWZkMjU1MTkxNThmMjEwIGxlZ2FjeS10cnVuaworMTE4NTcgNGMyM2FlNmM2ZTgyYzYxY2VjN2FhOWQ1OGYxM2RiOTlhNjQ5NzI2MCBsZWdhY3ktdHJ1bmsKKzExODU4IGIxMDA0YjQ3YmFjMGU3Mjk2ZjVkMTViMmFmZTE2NTFkMTI4MGE3MjAgbGVnYWN5LXRydW5rCisxMTg1OSA1MGUwNjMxY2YxMTcyOThkZDBhMTM4YWQzZDU0YWMxYTJlY2Q5M2U3IGxlZ2FjeS10cnVuaworMTE4NjAgZjM1MWM2NGM4MmVkYjg2NDg2NTUyYWY5YjI5N2UzZWFhZjQ1M2FiYSBsZWdhY3ktdHJ1bmsKKzExODYxIDlmMTM1YjNkOWE3ODMxNWQ5YjMxZTZlZDM4YmQzNzM3OWVhZjM3ODEgbGVnYWN5LXRydW5rCisxMTg2MiBjODAzMjFjMzI4YjVkMGQ5YjQwMWQzNDViN2RmYzE3ZGIzZGQ1NzMxIGxlZ2FjeS10cnVuaworMTE4NjMgOTgxZGQyMGJjNzExNjJiZjAzYzg5NjA1YmQ4MmE5ZDM0MzBkZmJiMCBsZWdhY3ktdHJ1bmsKKzExODY0IGY2ODE5YjkyNmZiMmM2NjEzMWJlNmYyYWY4OTFmYjZiOTBkMTA2MTYgbGVnYWN5LXRydW5rCisxMTg2NSBmMDQyODhjY2Y3N2I3YjMyYmNjNTNkZjI5YTA4NzcyNGRlYTQ4OGQxIGxlZ2FjeS10cnVuaworMTE4NjYgYTY4MDhiY2Y4YWMyOWI0Y2I1YjE5ZmI2MTFkMzUwMzViYmRmODAzNCBsZWdhY3ktdHJ1bmsKKzExODY3IDdjM2JlYTAxMTg5NThlYTM2MzQ3MTIxYTE0NDYyZThhOTcxZmM4MjkgbGVnYWN5LXRydW5rCisxMTg2OCAxMDZmYWYzNjZlM2YwN2VmYTExYzhhNzhjOWU0YjU5YmRmYTVlM2U1IGxlZ2FjeS10cnVuaworMTE4NjkgNmZmMDk0OGZmOTUxYzdhYmM4NTQ0YThjYzhmYjRjNWVlZWM2NDk5MiBsZWdhY3ktdHJ1bmsKKzExODcwIDIyOWY3M2YyYzg3OGZlM2QyMTQ5ZjAzYTNmNzVmY2NhYjBlZmNiNTUgbGVnYWN5LXRydW5rCisxMTg3MSA0ODA1NjczMTAxOTRjYTA3NjU2OTgxYTI1MWJmMzBmMzRkNTRiOTlhIGxlZ2FjeS10cnVuaworMTE4NzIgOWJmNDBlZjIyN2M5MmI2YjQ0Yzk2ZGJmNTJiMzVjODA1MzdiZTlhMiBsZWdhY3ktdHJ1bmsKKzExODczIDQyYTA3YmVmNjBlMDJjNzNhOTMwMDVlMzY4MzQwNmZmODY1OTFjYWQgbGVnYWN5LXRydW5rCisxMTg3NCBhNGI0YmE1YzRhYTIxMWI2N2Y2M2M3ZDY0NDQxMzFjNjdhNTE4NDQzIGxlZ2FjeS10cnVuaworMTE4NzUgZTE4MDI3MTMwYmJlMjBkMzRlNjJmZTZlN2VlM2ViZDQ0ZDZlYzA1MiBsZWdhY3ktdHJ1bmsKKzExODc2IGJmYTdlZDBiMWE2YmQyMGU0NDIwZTUzNGQwZmVhY2I0MGVlM2RmNmUgbGVnYWN5LXRydW5rCisxMTg3NyAwOWI1Y2I0NzU5MmQ0NGFiZTc4NGZhMjk3NWE2NmZhY2RmMTA2ZGRlIGxlZ2FjeS10cnVuaworMTE4NzggYWZlNTBiNjYxNTQ4YzhkMjc3M2Q3NWZlODUzNzk3NGY2YzhmYjNkMCBsZWdhY3ktdHJ1bmsKKzExODc5IDhhMzQ5MzA5ZmRmNDMzMTkwZGQ2MGMzNjE4OGJjNjNjZjc1YTNhNDMgbGVnYWN5LXRydW5rCisxMTg4MCAyYjM0NDYxYmE0YTNhY2VhNjY4YmRiNWMxYzcyN2E0MzNkMzcyZTBlIGxlZ2FjeS10cnVuaworMTE4ODEgNjRjYTExNTZlZGYxOTA2NzY5NDMzNmZmOWQwM2NlMDZhM2JjZjhkNCBsZWdhY3ktdHJ1bmsKKzExODgyIDAwYjA2Y2M1YjlkYTE3ODExNGM1ZjQzY2ViYjRhZmRmNTYyODQ3ZTcgbGVnYWN5LXRydW5rCisxMTg4MyBmNWQzOTc0ZDIwOWYzM2I5MmYxMzNlZjY1ZDJlNDBkMDI0ZGZmNmQwIGxlZ2FjeS10cnVuaworMTE4ODQgZjEwYzZhNzQzOGY1Y2UxMzljMWIxMzZiZDE1MDk4NTdlNzZkYjUwYiBsZWdhY3ktdHJ1bmsKKzExODg1IDlkZDZmNDI5NjQ3OWZiZjdjYTc0NTE5YThiNTdjMzg5MDUyYTVjOWEgbGVnYWN5LXRydW5rCisxMTg4NiA2Y2UwY2U0ZWEzYzE4NDdkNWVjYWMwZmRhZjk2ZTQyNzk0Nzg1YmRjIGxlZ2FjeS10cnVuaworMTE4ODcgYTlhZTk5ZjkyMTU0MDE4NzYzOWQ2YTlkY2IxZWQ3ZGI1ZTBkOWNhZCBsZWdhY3ktdHJ1bmsKKzExODg4IDIxMWM5ZTI4MzQ2NmY2ZTViMmJjNDhlYjIxZjkyNjFjYzQ2OTk2OTEgbGVnYWN5LXRydW5rCisxMTg4OSAzZDlhMGEzZTU5NmIyOGFiYzkzZjllODM5YTk3NzA5ODc2ZTc0Y2JhIGxlZ2FjeS10cnVuaworMTE4ODkgMjFkNzFmMmUyNzI0OGEwZjRlMzkzZDBmYzMyMWVjZjliODkzMjFkMiBsZWdhY3ktdHJ1bmsKKzExODkxIDA5NGMzODViNTYyNDMxMzZiNTkzMmU1MTMyNGQwZWI1NGQzYjI2MzMgbGVnYWN5LXRydW5rCisxMTg5MiA5N2E1NDNiZjlmOWE2NDQwMWU1ODllM2U0YTE4OWY5MjE5YmU1MTVlIGxlZ2FjeS10cnVuaworMTE4OTMgODdjODI1ZWY3ODc4ZGE2ZTM2ZDVjMzY1NTJmZjBmOWM1NzMyOTA5ZSBsZWdhY3ktdHJ1bmsKKzExODk0IDhjYjM4OGU3MWRkOTA1MDc1ZTVkNWRmNDg0NDI5ZmNhMTdhZmJiZmIgbGVnYWN5LXRydW5rCisxMTg5NSBiMDQ2NWFlYjBlZmNlMzAzMGE2MWU2MDE5OGE2Yjg4MzI1YTdiYTUwIGxlZ2FjeS10cnVuaworMTE4OTYgYzE5ZTlhYzJiMGM4Yzk5NzhiMzM0MzIxYjhkOGJjMmY2NmNmZGRhMyBsZWdhY3ktdHJ1bmsKKzExODk3IDNiZmY2NzM2OWIxMTA4NTlmZTk3ZTRkNDZjODIwZDMxNjdkNGE0YzQgbGVnYWN5LXRydW5rCisxMTg5OCBmMzY3MDkyNWIwOThjOTY2Njc0ZDM5ZWNhM2UyMmNjYmYxNDc2NGRjIGxlZ2FjeS10cnVuaworMTE4OTkgOWNjYWVjZDNkZWEzMmJlNjY0ODcyZmQ0OTdmY2Q0MGUzOTA1NzNlOSBsZWdhY3ktdHJ1bmsKKzExOTAwIDU4YTM1ZTVkMTNjYzYyNzE2MjQ1ZmExMGE2NTI5YTFkNDUxNWRiNmYgbGVnYWN5LXRydW5rCisxMTkwMSBmNTBiOWNjNzZjMWU2ZDkxNzM1OTkxN2ZiNzQzMTY0NGYxYWIyYzc0IGxlZ2FjeS10cnVuaworMTE5MDIgMzg4NjE2NWRiYTQyNjc4YzUyZGRlYzAyNTE3NmY3ZjllYzk4NmM2MyBsZWdhY3ktdHJ1bmsKKzExOTAzIDYzZWNmN2E0YzA3MGVjOWIzMzBjZWFkMWQzNzI0Zjc0ZDVkZDQyNTggbGVnYWN5LXRydW5rCisxMTkwNCBlZTk5MmIzMTIwZDNhZWNlNWZhMzk2MTBhNDJmZTI1ZDI3NDVlYmFmIGxlZ2FjeS10cnVuaworMTE5MDUgOWY5ZGEwMTg5YjdiNGRlZTEzNDFlZjFlZWU0NDI3OGFmM2UxZTQ1YSBsZWdhY3ktdHJ1bmsKKzExOTA2IDQ0YzU0NjhmOGQzNjQ1MzU2MTdjM2I1YjgyMGE2MDFkMTE4MTRmMDAgbGVnYWN5LXRydW5rCisxMTkwNyA2MjBlMDIyNTBjODBiYzYwOTMzNjI1YmYzMjk0MDU0ODRjNjk2NDYxIGxlZ2FjeS10cnVuaworMTE5MDggZmJjYTQ4NjMyN2NlMWMxNGIwOThhZTE1NTdlMDE5N2Q5M2ViZTJlNCBsZWdhY3ktdHJ1bmsKKzExOTA5IDAzNzllYjdiZTMyM2U4ZTc5YjExNDE1Y2U0MmQ2MDVmZDAwNzcyMzMgbGVnYWN5LXRydW5rCisxMTkxMCBlNzI1NGUyZjJkYzFjZDExZjI3NWExNjNiM2M4MzIyNDg0MjQyOGZjIGxlZ2FjeS10cnVuaworMTE5MTEgYzAzZmZmZjM4N2Y4YmRkNDI0NTNiMWY5OWQ0MDIyYTA1MGJjYzIzNCBsZWdhY3ktdHJ1bmsKKzExOTEyIDdiYTdmYmViODhlYzNhZGVmMjVkZWFjNmIzNmQxYzJhMzE3YTYxZjcgbGVnYWN5LXRydW5rCisxMTkxMyAwMTI5OTdiOWYxZWJkMTI2NTc2YmJlMTFkZDI5N2NkNTQ2ZDFjYWJkIGxlZ2FjeS10cnVuaworMTE5MTQgZTZlYTJiYzk3NGUyNmZiYmYzNzQxNTA1NTYxOTJjZjU0OTRkNmI1ZCBsZWdhY3ktdHJ1bmsKKzExOTE1IGY2Zjg2YjM3ZjFmYzNiOWE0ZTBjMTU1ODliYjJjYjlhYjk4ODg2OWQgbGVnYWN5LXRydW5rCisxMTkxNiAzYjhiMzFkMmM5Y2EzMTFmZTcyZjM2ZGIxZTZjYjE4NTY2MjBlMmRhIGxlZ2FjeS10cnVuaworMTE5MTcgOGU0ZmRiMGIwYmI4ZTU5OGU0YTlhZWM1YzRjNjkxNzZhZjI1ZjNlNCBsZWdhY3ktdHJ1bmsKKzExOTE4IDAyYjBiODRkZDU0NWU3YmE1ZWI2N2JlOTA4YmE1ZmJmNzY1MDcxNDkgbGVnYWN5LXRydW5rCisxMTkxOSAxYTU5ZjM2NTRiYzExM2EzOTk2MDE3NmM1NmNiNWFjYmQwZTU5ZGUwIGxlZ2FjeS10cnVuaworMTE5MjAgZTE4MDZiMjgwZjUzOTNjZGRhZjNjNTFhNDU2N2RmOTQ3NjhmZjQ3YyBsZWdhY3ktdHJ1bmsKKzExOTIxIDdmOGY2MDhhY2RiY2QzNzBhN2MxNDIzMzBkMzczZGY2YWNiMmJjYWUgbGVnYWN5LXRydW5rCisxMTkyMiA3OTJjZDdjNWZkODhhZDY3ZDQxNDQ0OGQ1NjcwM2NhZWI5NDY1NWRmIGxlZ2FjeS10cnVuaworMTE5MjMgOTBmYmVjNDM0M2RlYzYyZmViYmZmNzdjNzY2ZTViNjVjYzc3OTgzMyBsZWdhY3ktdHJ1bmsKKzExOTI0IDc1NjdlZjQwZGU3N2NiN2JlOTVhOTY0ZDEwZjM1MGQxNWM4MTQwNmMgbGVnYWN5LXRydW5rCisxMTkyNSAxYzk0ZjM0YjQ5ZTNmNzRjMzVhMDg1NzY0YzRhOTg3ZWJiMzZjMmFhIGxlZ2FjeS10cnVuaworMTE5MjYgMzM3YWUxMmQ4MDUwMDdhZDFjNmRmYWM2YWQ3ZGFjMmI0NTUxODQ0ZSBsZWdhY3ktdHJ1bmsKKzExOTI3IDIyYzMyZGQ2M2ZmNWQ3N2NkNzQxZGQxN2Q5MjBlZDA3NzE1OWQzYWUgbGVnYWN5LXRydW5rCisxMTkyOCA4N2I5NTU0YzUxZDRiYTZlYTU3ODA5MjMwOTRkYmEzNWJkMmRkODE0IGxlZ2FjeS10cnVuaworMTE5MjkgZWRmNzU1M2ZiMjBlZmVkZWY5YjkwMTlkMDQzOTc0ZmU3MWJkNTljMSBsZWdhY3ktdHJ1bmsKKzExOTMwIDllYTVjNDJkY2JlZGI1YzNlMTY1NjRmNjAyMTkzMGYyODQwMzRmNjUgbGVnYWN5LXRydW5rCisxMTkzMSA0ZjZmNzMwZDI1NTZkYmU5MzFlMGVhYjg3MGI2NzIwODI2YTFhZGJkIGxlZ2FjeS10cnVuaworMTE5MzIgNjNmZTg1NzM1YmRjZDk1NGQxYTBmNDQ1YmQ3YTQ0Y2EyMTIzZjRiMyBsZWdhY3ktdHJ1bmsKKzExOTMzIDQ5NjIzZGEzYzYzZjNmNTJlMmQ1Nzc5YWEyZDQzZWQyYWNlZTRiNDUgbGVnYWN5LXRydW5rCisxMTkzNCBjNjM2Njg5M2NlZTFkOTc2MGI1MzYxNmUzOGFiNzcyMGY3NWVhNzdiIGxlZ2FjeS10cnVuaworMTE5MzUgY2ViODc4Nzk2MTA4MTY5MTM5ZDRkMzcxYjI4ZjZiYWY5OGNkNjgzNiBsZWdhY3ktdHJ1bmsKKzExOTM2IGUxYzMzMDk0MzIyMWU1ZDk5ZGYyM2E0MmEwOTVkMmNiZDUwNmUyMDUgbGVnYWN5LXRydW5rCisxMTkzNyBmOGRkZDIzNDAzOTg4OWQ5Y2ZmZjk1YzdkMGEyMWEwY2FhZTJmMTVmIGxlZ2FjeS10cnVuaworMTE5MzggOTEzZWIzMWIwMzE3MjIxMjY1MWU3Y2FhODRkMDhjNWY0YmJkZTgwYiBsZWdhY3ktdHJ1bmsKKzExOTM5IDBmZWE1ZDVjNGZkOWRhOGQ3ODMxNDc2OTE1MjM0ZTI0Yjg0YWY0MTUgbGVnYWN5LXRydW5rCisxMTk0MCA1NjIxN2VhYmMwN2FiNGQ1YzU5ODMyYTMyMGE3Yzk3ZTRlNTI4NjUyIGxlZ2FjeS10cnVuaworMTE5NDEgNGJkNTEyOGU1ZWQ0MzQ0ZWQxYjE3ODYwYTc2ZmM2MGI0N2VhNTI5YSBsZWdhY3ktdHJ1bmsKKzExOTQyIDE4ODBlYWQzMjAwY2Q0NWZlMmE5MWVkZDllY2JiNjI3NzZmODExMDMgbGVnYWN5LXRydW5rCisxMTk0MyA0MWM4ODRkZmFkNWVmNGI5OTdmNmM2NWFiNzRmNDEwY2JmZDMzOTc1IGxlZ2FjeS10cnVuaworMTE5NDQgMjViNjkyOWZmYjEzZGUwMDVhODg2MThmMGE3NTNiNTM1YWQzYWIxOCBsZWdhY3ktdHJ1bmsKKzExOTQ1IGYyNDJjZDEwZTE2YTI0OGVlY2ZmMTY3NTQwODg5NDgwZTMyOWFkOWMgbGVnYWN5LXRydW5rCisxMTk0NiBkMzkzOWFkMzgxNzY2YWEzMDE5ZDZmMDY1MzMzNjRiNThhODg4MzE4IGxlZ2FjeS10cnVuaworMTE5NDcgZGE3MWFhMWJlMTkxYzAxYzNlODVkNzk0ODliNWIyOThhZTQxYzQ3ZSBsZWdhY3ktdHJ1bmsKKzExOTQ4IGIzNGY5ZTdlMjY5MTQ2NTRkNDg2M2M2N2JmNDg3ZTYwMDZjOTg2YzEgbGVnYWN5LXRydW5rCisxMTk0OSA0ZDNlMmYxZDBhZTQ3ZWRiNzVlYzEzMTcyYmQxMDc2YmE1MGU1MzA2IGxlZ2FjeS10cnVuaworMTE5NTAgOGJjMGEzMmRkYWI1YTIyYmI5NmUyNzcwODhmMmQyY2E2NmI2NTIyNiBsZWdhY3ktdHJ1bmsKKzExOTUxIGU1OTk2Mjc5ZjU4YzdiMzMxY2EwODMzMzZlMWUxNTQ2NWVlZjQ0NzQgbGVnYWN5LXRydW5rCisxMTk1MiAxN2JjYTRiM2RhOTM1N2NmOWRkOWRiOTU0MDU4OTg5ZThkYWIxZTUzIGxlZ2FjeS10cnVuaworMTE5NTMgMWFmZGM1NTgwMTU3OGNmMWNhNTY3MmQwM2M1ZTBiNmI4ODQ5YTIwMyBsZWdhY3ktdHJ1bmsKKzExOTU0IDU0NDIyYjQ2ZjZkMTgwMmNjOTNjNDc5ZjIyNzgzNjdmZjRlYjg4OTQgbGVnYWN5LXRydW5rCisxMTk1NSBlN2Q5ODRmMjY2Y2M2MWY2ZTZhZmY5NmM4NGViNGUyYzIyZDEyMzlhIGxlZ2FjeS10cnVuaworMTE5NTYgNjJlMWJjYzY2YTkzZTQyNTU5NTlhN2MxODJkNjBjYTVkZTA5OGM3NSBsZWdhY3ktdHJ1bmsKKzExOTU3IDRmYTg4MTBlODVjYWNmNWNmMGUyZGVhMDRiZmJmY2EzZDMxY2VkZTAgbGVnYWN5LXRydW5rCisxMTk1OCA5ZmZkNjA0ODA3YzIxNjczZGEzMGIxNDA5NDgyOGRhNDM5MTFkNGExIGxlZ2FjeS10cnVuaworMTE5NTkgOGRjMGU5N2E0NWVjNzUyMDhjNTJhMWRjMDY2NTc0YjkyZmVhNzU3NCBsZWdhY3ktdHJ1bmsKKzExOTYwIDc5OGIxMDQxZDI2MDZmMDk0NmU5YzU0ZmIwYzQzMWZkOGM0N2M4OTIgbGVnYWN5LXRydW5rCisxMTk2MSBhMTE1YzNkNDkyZGIwODM0NzRjY2I5OTlhMDAxMzI2YmE5MmZjNjgxIGxlZ2FjeS10cnVuaworMTE5NjIgNGRlMDllYTEwZWUwOGUwMjBiMGUzNjRlZDc2OTkxNWI4ZmUwYWYyNSBsZWdhY3ktdHJ1bmsKKzExOTYzIDZhMjQ0ZTY0YjNlNmIyZWMwNzY5NGJmZTlhY2FiNDQ4NTQ1NjFkNDMgbGVnYWN5LXRydW5rCisxMTk2NCBmZWI2YzM4NmFiNzcyNjU4M2U0ZjA4MzNhYzI3Yzc1NjI4MmVmNWFhIGxlZ2FjeS10cnVuaworMTE5NjUgZDA3YmM4YmYyZDg0NTkzZWY3OTEwM2U4MjJlZTFlM2NmN2FhNThiNyBsZWdhY3ktdHJ1bmsKKzExOTY2IDFhYmQ5MWY5NzAzMzI1Yzc0MzQxNTRlOWI3MmY1MTZlZjAyOWEzODQgbGVnYWN5LXRydW5rCisxMTk2NyBjMjE4MTVmYTA3Nzg4NjY1MDYxNjc2MjQyOThjNjQ0NmIxNjVhMzBjIGxlZ2FjeS10cnVuaworMTE5NjggZGUwMDkzMTY5NjQ5YmIzMGY2ZjhhZWZlMzA4ZTI0MzhiODc1ZDA0ZCBsZWdhY3ktdHJ1bmsKKzExOTY5IGFiZjJjZDI1MWIyNGE5YzQ5MWYzODhiYjlkOTFmYmQ4NDZmYmE2NzggbGVnYWN5LXRydW5rCisxMTk3MCAzZjcxNzM0MmYwYTM2ZGU5MWQ2ZGNmMzJkMTk1N2QyMDI2MzI2ZjVhIGxlZ2FjeS10cnVuaworMTE5NzEgYzFmZDgxNDZmMmU5YTc5Yzc3ZTU4NzdhYmFjYjE2MjA1MjkxNjM1NSBsZWdhY3ktdHJ1bmsKKzExOTcyIGY4OWVhOWJmOWE1MjVkOTgzMmQ4ZDIxZDI3NzA4MTZlZDI3NDY5ZWEgbGVnYWN5LXRydW5rCisxMTk3MyAxZWE2ZDIzNTZlNTJkYTQwZjk0N2JkMjI5NmJmNzFhYzA5ZGY4OTcyIGxlZ2FjeS10cnVuaworMTE5NzQgYWZhMGNkMjE3ZjRlYmE3MmRiNDFjMTY1YTMyYWJlMmNkNjljZjIzNiBsZWdhY3ktdHJ1bmsKKzExOTc1IGY2YTg0YTFjN2UwMmNmYjJhZWZjMjIzMDhiY2M0YTg5MmZlYzNjMTUgbGVnYWN5LXRydW5rCisxMTk3NiAzOWZmYzU5NjdiNmJhY2IyNDQ3YjA2NDM0MjU3MzEzMzRhNjlhOGEzIGxlZ2FjeS10cnVuaworMTE5NzcgNGFiY2IzMmY3ZWY1NGEzMzJkYzRkZWIzYjQ4MDMwZDEzYmU5MDJkYSBsZWdhY3ktdHJ1bmsKKzExOTc4IGUxZTljOWRmNGYxMmM4ZjUwMWQ2YzEwN2JiZDkxOThjNTNiMjc3YzMgbGVnYWN5LXRydW5rCisxMTk3OSA2Mzg3NmNkOTk4NGM5MjY4MWRmYTgzNGJhOGVmMzY3ZDU4NDY4Njk0IGxlZ2FjeS10cnVuaworMTE5ODAgMjViZTAwZjMxZGE2MTVkNDM2ZWU1OTNmMGI4YzNlMGY2MjdjNjE4MSBsZWdhY3ktdHJ1bmsKKzExOTgyIGQ4NDcxNTUyMzA5NWFjMjdmN2IzOTkyOTY4YjFjMWYyNmU5ZmVhMTggbGVnYWN5LXRydW5rCisxMTk4MyA2ZTZiZTg5NmVjNDY2ZTk0NGIzOWQzNjkzYzg4ZDM5YmE2MWM2ODk5IGxlZ2FjeS10cnVuaworMTE5ODQgZDM5MjhiOThlMmUxM2U5MjM4YzMxNTM0ZTY1MWYzYjczYjViMDM0ZSBsZWdhY3ktdHJ1bmsKKzExOTg1IDhmM2U3ZmUxZDRmNzYzYzBhZjUxMTRmM2FlNWM5NjI2YTdlMzdjZDEgbGVnYWN5LXRydW5rCisxMTk4NiBiMGNhMmNhNTg2YjE1OGIxZDRjMTA4Mjg2OWM1MTI5YWIzZGM3NjIwIGxlZ2FjeS10cnVuaworMTE5ODcgZGI3Y2NhMDliZWFmZTdiN2MyMjFlODEzZGIyZGU4ZDQ0Y2FhZmI4NCBsZWdhY3ktdHJ1bmsKKzExOTg4IGI3NWQ5M2VjOGU1YTZmN2YxYjNlMTEzY2Y5ZjJiMDdkMzE4MTg2NDEgbGVnYWN5LXRydW5rCisxMTk4OSBhM2JjZjFiMzY1NTE3YjU0YTk5ZmY3ZmQyODEwYzcwMGM2NmRkN2I4IGxlZ2FjeS10cnVuaworMTE5OTAgOTY0N2M2YWQ2YTUwOThjZTg5NWFlMmQ3MjdiOWFhOGUyNDYzZGUxZCBsZWdhY3ktdHJ1bmsKKzExOTkxIDE4MTUwN2NjMWE3MjU5NWE1ZjAwNTU2YWE4Mjc3ODgyYmRjZWZjMjggbGVnYWN5LXRydW5rCisxMTk5MiA1NDk4MzE3MjNlZjg1NzhhMWFhMmYxMWNmZGUzYTE5NTc2ZmZlOWFmIGxlZ2FjeS10cnVuaworMTE5OTMgZWFiZWJjMTYxNTE4NmIxZTJlNGY2ZGIzMzE3ZTY1MDIyZWNmMjEwMyBsZWdhY3ktdHJ1bmsKKzExOTk0IDVkODFlNDJjNmJhMmU4ZTA1OTg4MjgxMDQzMjJlYzc3ZGQ2YjVmOWQgbGVnYWN5LXRydW5rCisxMTk5NSA5NmM3MzRhY2Y4NGY1NWNmOTAzZDVlYTc5NmIyZmQ4Y2I5NTY0YTc2IGxlZ2FjeS10cnVuaworMTE5OTYgNzZlOTM1OTI0ZmFlMGI0OGM3ODUxYjI5YTcxY2ZjNmNiY2E1MmVhMSBsZWdhY3ktdHJ1bmsKKzExOTk3IDYzYTFhODUxM2MxZGNlNzBmZWZlNzM3NzQxNjUyNGY0YmZlZmEzNGYgbGVnYWN5LXRydW5rCisxMTk5OCA0NDMxZTdhMzE5Nzc1YmI2ZWRiNDZiMTJhZDU3MDczYjVmOTIwZTE5IGxlZ2FjeS10cnVuaworMTE5OTkgMzc3NzdlMGY4MGUzNzU1NGVkMmIwN2RjZWE1Yzk0MGYyNTBhYjVlYiBsZWdhY3ktdHJ1bmsKKzEyMDAwIDYwZGZhMjExZGRlOGJhZDY0ODRkOGFlMTQ0NTQ3MTNiNDAyNWQxOTYgbGVnYWN5LXRydW5rCisxMjAwMSBmZWM4NjIzMDFkNmUzM2NlYWEyZGQ0YjExYzQ0MmNiNTUyMzA3Y2NlIGxlZ2FjeS10cnVuaworMTIwMDIgZjU5NjUxOGQwNjkxZTAyNWJjYWU2Y2U3NDdjODE3MTYxZGJjZGNmNSBsZWdhY3ktdHJ1bmsKKzEyMDAzIDI0NDk3NjQzZGNjOTFkMTRkZjY1MmFlYzg2MTg4ZmNmMzU5OTg4OWEgbGVnYWN5LXRydW5rCisxMjAwNCAwNDQyNjIyNDMwMmFhZGFlNGEyMzc0NGM1MWNkMzlhOGM1MThiODEwIGxlZ2FjeS10cnVuaworMTIwMDUgY2Q3OTAzMTBiYzRmMDZmMmEzMTA1NDEyMDY0ZmMxMmZkNjZkNzFhOCBsZWdhY3ktdHJ1bmsKKzEyMDA2IDYwZDk5MGY3ZDdhYjU2YWZjNTljNTUyOGQ0Yzg3ZGYzNzNjZDU2NjAgbGVnYWN5LXRydW5rCisxMjAwNyA0YTczNDRkNTVhZTE4Nzk1MjhkMGE4NjNjMzUxOGVmNjBjN2E0MjA2IGxlZ2FjeS10cnVuaworMTIwMDggODU0NDRhZjJiZTk1ZDA1NWIxMjMzNjA1Y2YyYWRjYzNiNTI0ZmZmYiBsZWdhY3ktdHJ1bmsKKzEyMDA5IGJiZTkyOTMyYTAwNWU1N2UyMjhjZWMxNDJkYTYxYmI5ZGU1ZmJmNTMgbGVnYWN5LXRydW5rCisxMjAxMCBhMmU4M2JkYzFmZWFlZjczYmE1OTZhZTFlNGM0NjFjYWQ2NzFjN2M2IGxlZ2FjeS10cnVuaworMTIwMTEgMzUwZjI0MTgwZGNiNDIyYTE0ZDdmNmViYTA4YjBkNGVmYTBhNGZkOCBsZWdhY3ktdHJ1bmsKKzEyMDEyIGExMjYxMDdjNDMzYTZmOWEwN2M3ZDM2YWQ4OTljZjk1NWQ0ZjAyNGUgbGVnYWN5LXRydW5rCisxMjAxMyA5ODNmNTNmMmI2ZjY4M2NiNGZhZjlhMGI3Y2RiNmFhNjFmYmI1YzQyIGxlZ2FjeS10cnVuaworMTIwMTQgNThmNmRhN2M4YmI4OTQyMTRhZjM5ZjRlZTEyYzY1ZWEwYWY4ZGJiMCBsZWdhY3ktdHJ1bmsKKzEyMDE1IGZlNzgzOTg0ZjkyZWEzYTI0ODg5YWY1NGYyYzRlMGZlMDVhYWFlN2YgbGVnYWN5LXRydW5rCisxMjAxNiAyMzA5MjVmZTViMmRlOWRkNmIzNmIyMWVjMDBiYTcwNTg3OGYzYjNmIGxlZ2FjeS10cnVuaworMTIwMTcgNWFlMWEyMGJiZTcxZWI1NjllNjIxMWM0ZDRhY2NkOWQ2MmQ2MmJjMSBsZWdhY3ktdHJ1bmsKKzEyMDE4IDMxNWNjMDZhODE2MTU0N2RkNDlkZTlmMmIxMmMzMmM4NTkyOThlMGMgbGVnYWN5LXRydW5rCisxMjAxOSAwZjI3MjU3ZmI2Y2Y0ZjQxNWJkNmIzYTY0MDY3MWIyZWQ5MDhkODgwIGxlZ2FjeS10cnVuaworMTIwMjAgYTFhOGRmNzNiZmZmNTIzZmU3YzdkOGQzOThjY2JjOTJjZWIxOWI1NiBsZWdhY3ktdHJ1bmsKKzEyMDIxIGVkNmNhY2RkYzZjNjhlODdiOTA2MWFjZmY0NTM2OTNmMjkxZDE0NmMgbGVnYWN5LXRydW5rCisxMjAyMiBjNmExMTAzZWZhOGFmMzFlNmU3OWE2OWMwZTVlMWE0ODU5MTUwZjQ5IGxlZ2FjeS10cnVuaworMTIwMjMgNDhjNzAwNDEwOTM2M2JiMTUxNDk1NDNlZTZjNmYyMDA1ZjU4OTMxNyBsZWdhY3ktdHJ1bmsKKzEyMDI0IDc1MDRmMjNjOTI0N2Q5MTA2ZTg5YTU2ZmM3ZDFkODQzZmU2NjkyMWQgbGVnYWN5LXRydW5rCisxMjAyNSBmOTAyZWNjODY3ZDA4ZDM0YzlhMGEzOWYwOTAyZjQ4NDQ5NGMxYWQ2IGxlZ2FjeS10cnVuaworMTIwMjYgZTA1OTA0OWIxYTc2MjBjOGUxNTNiNDE0OWYzYzI1NmY2N2ZlMTQzYSBsZWdhY3ktdHJ1bmsKKzEyMDI3IGQ3ZDM5MjYwZmU4MmQ1ZmZlMWQ1N2I2Y2E2NjY0NmE5NmI0ZmQ1NzMgbGVnYWN5LXRydW5rCisxMjAyOCA4M2Y4M2YwMDJkMmVhZTUxZmZiODIzNjg5Y2RiMTM5NDExNjQ3OTk3IGxlZ2FjeS10cnVuaworMTIwMjkgNjg4NjNmNTEyNzZjMDg1MTEwNWJjOTI1YzFhZGM3NDgxMmQwZmE2NSBsZWdhY3ktdHJ1bmsKKzEyMDMwIGRmMDc3N2FiN2M2Mzg1NGY4NjMzMGFlOWEzNjg5NjQ4MDNiMjc2ZWQgbGVnYWN5LXRydW5rCisxMjAzMSA3OWE4YTFhNzQ2N2IxMjJmNDBlMTgyZGFhZmI4ZTFhN2EwYjhkM2ZkIGxlZ2FjeS10cnVuaworMTIwMzIgNTMzMjViOGY4Y2U5YjFjZDNlYjI1ZjhhNzgyZDlkMzI1MWRmZmFjZSBsZWdhY3ktdHJ1bmsKKzEyMDMzIDkzZWNjNTFmNTlkMTJhZjM4M2I1MzRjMmYzMTc0ZDExNzM0MWY5NmUgbGVnYWN5LXRydW5rCisxMjAzNCAzZTUwYzFkZGFiM2EzYmNiMTFhMmM5MGUwMGY4ZmIwODE2NzM1ZmM3IGxlZ2FjeS10cnVuaworMTIwMzUgZjE3Y2VkYTZlNjY2OTI1NzNkM2VmMWUzYTA1YjU0NzBmNTI0MDU1OSBsZWdhY3ktdHJ1bmsKKzEyMDM2IGZmMzkyZGQ3Yjk3MDk3NDRiYzRjNDgzYTFjZjA2YzliMGU5MTMwM2YgbGVnYWN5LXRydW5rCisxMjAzNyA4N2JiYzcyMWJhMmI5OWRmNTcxZjc4YzJiNDA3YWQwZjBiOGU0MDYyIGxlZ2FjeS10cnVuaworMTIwMzggYWEyYzFhOGZhOGNlMTEyNDk0OTRiOTk4NDA5ODA4M2VjM2I0MTIyMCBsZWdhY3ktdHJ1bmsKKzEyMDM5IGI4ZWM5NzRhZmQ2OTU2ZDY3MjU5MjU4MWY2MjczMDg5ZjEwNzZlNDIgbGVnYWN5LXRydW5rCisxMjA0MCAxNDM3YzIzMzViM2I0NmE1ZThjNmMwNDUzNDRlNjkwNWExY2RkMmU2IGxlZ2FjeS10cnVuaworMTIwNDEgNmJhZDY5ZDM4MjE2MjVmODI5MzgxMTZhMGY1MjE5MzllOTJlY2ZiYiBsZWdhY3ktdHJ1bmsKKzEyMDQyIDE2YWYyNTgyYzk2NGNjYzdjNWE1ZTA1NWIxYzZiMzc1OGUxNjY2NzMgbGVnYWN5LXRydW5rCisxMjA0MyBkNjQxNWMyN2IzYjFiNGJmMGJlZDAwZmU5MGZmNWVkZTNhNTkyNDU3IGxlZ2FjeS10cnVuaworMTIwNDQgYWE5NjFhNDZhZTllMDk3NjNiMzEzYTc1ZGQ0ZGRkNWRhZWQxNGU0YyBsZWdhY3ktdHJ1bmsKKzEyMDQ1IDZlMjQ5YjEzNWVkM2IyMWQ2OWYxNGNjMDYzZjgxNWE0YTJiZmY2YTIgbGVnYWN5LXRydW5rCisxMjA0NiA4ODE5ZGVmMWIzOWM2YWNhMDQwMWRiNmY4NDZjYjFlNTU4MDc4Y2FhIGxlZ2FjeS10cnVuaworMTIwNDcgNDg1YzBiZGZlOGEwZTM5ZWZjZTUwOWI5YjUwOTdkY2ZhYmRhMWVmOCBsZWdhY3ktdHJ1bmsKKzEyMDQ4IGQ1OTRlODMyYTU2Y2JjMTkyMzNjNmQyYTM2ODFjMTczMDliODY3NWUgbGVnYWN5LXRydW5rCisxMjA0OSBkZjM5ODVlYjU4NzNiYzhmNzYzYTQ5NGU4YWI2NWIwZTY0NDc0ZTg2IGxlZ2FjeS10cnVuaworMTIwNTAgOWE0ZjViYWE4MjRlN2FiYmQ4YjA0NDc3ZmUzYjkyOTVmOWMxZDc2NiBsZWdhY3ktdHJ1bmsKKzEyMDUxIDE2ODc4YTRjMjYwZDIwYTVkZmU0OGY0ZDRiOTlhMzhlOTczY2Y4ZTkgbGVnYWN5LXRydW5rCisxMjA1MiA5MTc3YzQwOWRjNDUxMmEwOWIyY2MwODA2MjJmY2U2ZDYzMjcyN2FlIGxlZ2FjeS10cnVuaworMTIwNTMgMjIwMDkwNGFiZGRjNTEzNjU0NGIwZGQwOGRkNmE3YjEyNDJjZThlZSBsZWdhY3ktdHJ1bmsKKzEyMDU0IDgzYmI2MDZhMzJlNmY0NDhmOTgwOGNhYjY3YWQ0MzlhMmNiNDNlZGIgbGVnYWN5LXRydW5rCisxMjA1NSBmMDJjNjU0OWVkMWI1NDE3YjQ2MjIzN2ZjNTVjNDI5Yzc5NmJmYmVlIGxlZ2FjeS10cnVuaworMTIwNTYgZmE4NjdkOGVlN2ViYzAzOTBlZDQ3OWZjYjAxZDBkMDM0ZDZkZGI5MiBsZWdhY3ktdHJ1bmsKKzEyMDU3IGZlYjhmODc2OWVmNjJkYzVmYWMxMDljOGQxMWQ4ZWYxZDlkM2I4OWEgbGVnYWN5LXRydW5rCisxMjA1OCAwNjcxN2U1MjA2OGZmZTMwODU3M2ViNTMwMmIwOWE4ZGVhNzBmMzMwIGxlZ2FjeS10cnVuaworMTIwNTkgYWU4ZTE0OTQ0NDE0N2NhZjJkYjU1ZTcwZDQxZWVlYTNjYzRiZDViZSBsZWdhY3ktdHJ1bmsKKzEyMDYwIGJjOWU3NzIxYzkxNjIwM2Y1MzFiMGNhNWNmNjUxNDliNmI3NmMzYjcgbGVnYWN5LXRydW5rCisxMjA2MSBkODVkMmQ5OTRmMWY3ODlmNmZjM2JjZmJkMjMxMTQ1ODMxNzFkZTVkIGxlZ2FjeS10cnVuaworMTIwNjIgZDEzYTYwYjQ0YjQ1ODdjNjViOTA5NGEwZTc3YTc3ZDY2NDg5ZmYwNSBsZWdhY3ktdHJ1bmsKKzEyMDYzIGEwOTExODVjY2ZiNmI0NThlMGJjNTQ4M2FiZDgyMDUzZTYxZmRlZWYgbGVnYWN5LXRydW5rCisxMjA2NCBhYzc0Mjg2MmNhMzYyNzc4ODQwMDRjYmRhMjdiYTYyNjlhYThmNmMzIGxlZ2FjeS10cnVuaworMTIwNjUgYjcxNThkYjM0N2Q5YjlmZWVkZjg5ZTc5MmEyZGI5MDBkYjMwMzM1MSBsZWdhY3ktdHJ1bmsKKzEyMDY2IDU1OTkxMTc2OGRjYmFkYjI4NTNiZWQ3NjcxNzE3YzZjYTUxNTcxYzcgbGVnYWN5LXRydW5rCisxMjA2NyBhYjIwZjVjZGQ3OWY2ZTU0YTVkYWI0YWMzZmFlZTcxMTFiOTcyYmFhIGxlZ2FjeS10cnVuaworMTIwNjggNWNkYmQ4YzA0MDE2Y2M2NDRmYzZlM2RhODAyODg2N2U0YzdiMTlhMCBsZWdhY3ktdHJ1bmsKKzEyMDY5IGIwOWE5YzQxMmJhMjk5NGE5NzlmZmRhNWFhMWIxNDFhMDM5NzNkNzMgbGVnYWN5LXRydW5rCisxMjA3MCBiNjc3NDM2NzUzYTg3MmIzNDRkODM4ZGJiOTQ2ZDUyOTFiNGQyNWQ1IGxlZ2FjeS10cnVuaworMTIwNzEgOGU2ZWE1ZjAzZTczNDBjYjdmZmNjZTBmNTllZWZkMzBhMGQwYjM4NiBsZWdhY3ktdHJ1bmsKKzEyMDcyIGFhMWU0ODI4NWQ3YmNlMDA3YThlNTBjNWM1OTNjODFiNmUxMzg0NDkgbGVnYWN5LXRydW5rCisxMjA3MyBjZGY1NjE3YzIwMjJkMmI3NzE4MDA1OGFkYzJiYzc4OGYxNGI3Mjk2IGxlZ2FjeS10cnVuaworMTIwNzQgOThhZDU3YzM5ZDIwZGMxZjEwNWE1YTY0ODI3MmE0OWFiMTJhMDU0NiBsZWdhY3ktdHJ1bmsKKzEyMDc1IDgxZGQ3YzczZjdiMjFmNDliMzg4NzI0Y2FjNzFlNjJhMTBkNDM4ZTMgbGVnYWN5LXRydW5rCisxMjA3NiAyOTkyODRlZTY2OWRmZmZiN2E0ZmM4YmM3NDQ2YzA5YWJmMzFiZjdmIGxlZ2FjeS10cnVuaworMTIwNzcgZjRkYTk0NDlmMDExMDFlMmQ1NzQ2NjY0Y2RhOWU1ZWQ0NWE0MDFhYyBsZWdhY3ktdHJ1bmsKKzEyMDc4IDlhOGVjZDc1OWUxMzQxMWMyYWUyZjA1MWI5OGNiYzlhODVmNzMxNDggbGVnYWN5LXRydW5rCisxMjA3OSA0NTk1ZWY1YTk2OGFjNTM2ZWI2MjBmMTI3NGY4YzNiY2QzNGM2NGEyIGxlZ2FjeS10cnVuaworMTIwODAgODhkNTkwY2MxMTE2ZTRmNGZhMGE5YTQwMGU5NTU0MDQ2M2I0ZjEyYiBsZWdhY3ktdHJ1bmsKKzEyMDgyIDY0ODNkYmUwOWYwNjE4OGNlM2ZiZTE2ZThjMzFiNDI4MmQwNDk3ZDYgbGVnYWN5LXRydW5rCisxMjA4MyBlNjZlODhmNTI2MDY0M2QzODM3ZWU4MTBhODY3OTQzNDg3NGU0MGQzIGxlZ2FjeS10cnVuaworMTIwODQgM2MyOTdhNmFkNGU4YmY5OWE5YzFjNzRjNjRmY2E2YjA0ZjQ4MjlkMCBsZWdhY3ktdHJ1bmsKKzEyMDg1IDYwZmRiMWRiMTE3NTY2NWI5ZDc1OWYwMmIxZGNhYjEwZDAwNGY1MmEgbGVnYWN5LXRydW5rCisxMjA4NiA1YTljYTJlOTM3YjViZDczNGRmY2QyZThhNTA1YzM3NWI2MGU4NWFmIGxlZ2FjeS10cnVuaworMTIwODcgMzgwMjNhNDI1ZTQ4MzgwYmVkN2I2MmIzYjc1M2IwNDVmMzM0NTZjYiBsZWdhY3ktdHJ1bmsKKzEyMDg4IDAxYzhmZTQ0MDY0YjMyZGQyZjZlNzMwNGYzNTI5NzgwNDY5Nzk0MjMgbGVnYWN5LXRydW5rCisxMjA4OSA0NWJkNmM0MGMwNWFlMDUyZmEwMDUzNmQwNzFhMjAxMDFjNDNhNGVjIGxlZ2FjeS10cnVuaworMTIwOTAgN2Y5MDczNjcwMWEzNTBlMzM5NTUzMDAzYzBlYzVhMjYwMjc0ZTA1NSBsZWdhY3ktdHJ1bmsKKzEyMDkxIDJhYWZjZWUyMjBiYzBiNzY4OWY4MmY0NmUwOWM0ZjllMDBlYmY3ZTQgbGVnYWN5LXRydW5rCisxMjA5MiBmMjJmNzY5YmYzZDk0MjFjOWE5YWExNGU2MDY1NGRlNzRjOGViMDdlIGxlZ2FjeS10cnVuaworMTIwOTMgODZiZjcwYTU1ZWZkZTRkZTc0MjJhMTY4YWM4NDU2MTI2ZTE1MTM5ZSBsZWdhY3ktdHJ1bmsKKzEyMDk0IDYxNmIxNzRlZWI1NDgzMGRlODRlMGRkMjM2MDY5ZTZmMTNmYWY3ZWQgbGVnYWN5LXRydW5rCisxMjA5NSAzNjA5Y2RkYzc5ZGY2MTAzZWU0ODQ1OTYwNmQ1NDU2OTNkMWU5N2JlIGxlZ2FjeS10cnVuaworMTIwOTYgNTgzMWJiM2NhNDJhNDlmODhhZDY2MjE5NWUwZjBhMTdlYjJkY2I3ZiBsZWdhY3ktdHJ1bmsKKzEyMDk3IDU0YWFmZTQyYzBjM2YyMDFlY2Y2ODVlNzcyYmY2NGM0ZmQxNmI4ZGMgbGVnYWN5LXRydW5rCisxMjA5OCAzMDc2ZmZmMzA1MzVmMmQwYjVhYjlmNGY2MDY1NThlYzYxODExNGJkIGxlZ2FjeS10cnVuaworMTIwOTkgZmNiZjIyMmU2ODk4MWFhNmY0NmRlY2YzOTQ0YjQxMDYzYWQ1MDVjYyBsZWdhY3ktdHJ1bmsKKzEyMTAwIDBmM2Y5ZTM2NjM1NmM3YjgxMTg4NWIyMzNiOGQzN2M4MTEzMzViZmEgbGVnYWN5LXRydW5rCisxMjEwMSBkNzk4NmI0YjkxMDA5YzBhMjJjMTQyMzM5Y2IwYzFjYTI1OWMzZTk2IGxlZ2FjeS10cnVuaworMTIxMDIgYzRlMmRhNDc3OTQ5MjljZTA1ZTBhZmEzOGM0MTg2MjJjODIzZGZiMSBsZWdhY3ktdHJ1bmsKKzEyMTAzIDFkYzBlZjI0YjE1ZDMyMDJlMjI5OTFiNDE1Yjk2MDE2OGJhOWQzMGEgbGVnYWN5LXRydW5rCisxMjEwNCA2YjU5ZjlhYjVkYjFhNTEzODQxOTJiNjBiNGViMGY5Y2M1NDgyNDkyIGxlZ2FjeS10cnVuaworMTIxMDUgY2I5ZTNmMDBkNmI2NTQ3NGRmZTgwM2E3MjA3NWU2YTg3NDg5YzdhOCBsZWdhY3ktdHJ1bmsKKzEyMTA2IDg0ODM5NTNhOTI0ODNkN2ViOTUwNDMxZTVkNDE0NTUwMTY2NDcxOGIgbGVnYWN5LXRydW5rCisxMjEwNyA1YTM2YmFkMWQyNDg5Yjg3YWJkNzdhMWNiYzIyMTk5ZWNkYzU5ZmY2IGxlZ2FjeS10cnVuaworMTIxMDggYzFmOTg4NTdjYzViYjdmNjA3OTAyZDgzNTcyZWY1YzM5OTgyNzA2MCBsZWdhY3ktdHJ1bmsKKzEyMTA5IDI2NzhkYmY0YWQ2OWEzMzBkNmU0ZWFlM2ExZWQ0MGUyYjYzMTEyYjggbGVnYWN5LXRydW5rCisxMjExMCA1NzBmZWQ0YWI4ZGFmNmZjOTdiNjQ1MTRhM2Q5ZTQ3MTZlOTA0NGM0IGxlZ2FjeS10cnVuaworMTIxMTEgYWE4OGNmZmMzNWFiOTRhMzJhODFlOWExOTQ3ZTI3MDEzZjNlOThjYiBsZWdhY3ktdHJ1bmsKKzEyMTEyIDU0MjZiZWY4OWVjMzM4ZDA0ZDhmZmRkMzQ2MTgyYjI0NzBmZjFjM2QgbGVnYWN5LXRydW5rCisxMjExMyBjZTc5YzBlNzRmNmZlMWYyOTBiZTQ4ZjZmZmU5MjhmZWVhMTRjY2M1IGxlZ2FjeS10cnVuaworMTIxMTQgYzAzNzg3ZWM5ODExYzk4NmI1ODZhMGZmNmVmOWYyZTRjZmMxOThkZSBsZWdhY3ktdHJ1bmsKKzEyMTE1IDlhYmVlNjNjNmJhYjNjNDZkN2Y2YjZiZTQwODZjMmU0OGViMjhhYTIgbGVnYWN5LXRydW5rCisxMjExNiBjMTJmZWU0Y2UzNjNkOGYzMWIwZGYzZjBiYjc3ZmFkOGUzN2Q3ZGExIGxlZ2FjeS10cnVuaworMTIxMTcgOTkxYmQzNTNjZmViZmJkN2FiNjQ5ZTJmOTNiMzU1MDczNGI3MTgyNCBsZWdhY3ktdHJ1bmsKKzEyMTE4IDkwZmRiMzc3NjRhMjJiMTA2YjRmNTI3MzdjM2U4NDY4ZmU2YWRkYjMgbGVnYWN5LXRydW5rCisxMjExOSAxNzlmYjYzYjE1NTQ3NDczYmIzZGFhMDhiYzJjNzIxODFhMGM5ZWI4IGxlZ2FjeS10cnVuaworMTIxMjAgMDdlZDM4YzI5NmVlOGY4NWI4OWRmN2FiODUwMGIwOTBmMjEzMDRmZiBsZWdhY3ktdHJ1bmsKKzEyMTIxIDU2NzJmNWYxZGI0Njg0ZDFhNzY5YjgyZWYyNzlkZThiMGNjNjQ0ZTcgbGVnYWN5LXRydW5rCisxMjEyMiBmYThmOWZlMGEzM2Q5ODUxNWFjYTQ0ODhlZjczZTUxODIxMjE3ODNkIGxlZ2FjeS10cnVuaworMTIxMjMgYjJmZGQ3MWNhMDA2Y2I0NjNlMzdmMjhkZmIwMzljNWYzMDk3Y2MyNiBsZWdhY3ktdHJ1bmsKKzEyMTI0IDFmZTQ4MDA5ZDhlYThjYTViNzY1MWM4OWJlNzhjZDNhMmViMWNhOGYgbGVnYWN5LXRydW5rCisxMjEyNSA5OGE2ZmM2ODc3YWVlMmMyMTk3M2FjMDE1OGJhNGJjZDMxZjJmYjZmIGxlZ2FjeS10cnVuaworMTIxMjYgNGY1MGM3MDQ1NGE5YjJkMTIwY2FkNmM0ZDYzYWI0ZmVlZjk4M2Q5NSBsZWdhY3ktdHJ1bmsKKzEyMTI3IDgyMDMwY2EwZmEyZWEwMGM1NGY1YzRkZTc5NWU2NjQ3ZmNhOTYzYTUgbGVnYWN5LXRydW5rCisxMjEyOCBjYTIxMjg0ZTg3NWRjZjU3ZTA3Zjc5M2E0ODI4ZTE2ZmE5YmM5MjMzIGxlZ2FjeS10cnVuaworMTIxMjkgZDY2NzEwOTM5YTMyNTQ4N2Y0YjI1MjUxM2UxZDZjYjAzN2UyOGE5ZCBsZWdhY3ktdHJ1bmsKKzEyMTMwIDJiMDBiYjUwODgwMzZhNDA1ODhlMjJmMzRhYWY3NDMzMjRjNDMxOWEgbGVnYWN5LXRydW5rCisxMjEzMSBhYzUzNDU4MTRiYTA5MzNjM2Q1YTkyZjJlM2JkODI1ODI4NmEyMzMxIGxlZ2FjeS10cnVuaworMTIxMzIgZTJkYzNjYjA4YzYwYTdmOTYwNWFkMDY5YjNiOTJhYmJiYmU2Mjk4MiBsZWdhY3ktdHJ1bmsKKzEyMTMzIDg1ODZkOTExZmIzOTAyMzhiMjNlN2VkYWU3ZDI5M2M3OTI4ZmFkNGQgbGVnYWN5LXRydW5rCisxMjEzNCA0NDI2N2I4OGZiNTk0MTBlZjY4ZTQ3MTY2NzljNTNiODQzNDhjOWRjIGxlZ2FjeS10cnVuaworMTIxMzUgZTU4OTU3ZjA2YTE1Mzg0ZTJkN2RjMjY1ZDBlNThkMTdkMjU2OTQwMSBsZWdhY3ktdHJ1bmsKKzEyMTM2IGY1ZTU4NmI1Zjc5MDAwNDVhYTQzZTczNGEyZjY3ZDZhNDUzMjI0MzUgbGVnYWN5LXRydW5rCisxMjEzNyBmOWNjNTIzNzRjNTJjM2VjZWUyYzg5MmU3YzkyY2RmMDAzMGJmOTJmIGxlZ2FjeS10cnVuaworMTIxMzggZGExZGQzZTU0YjdhZTI0YTI2MjNkMGNkNWZkZjAxOWY5Y2JhZmVkYSBsZWdhY3ktdHJ1bmsKKzEyMTM5IDcyYTJmYmIwZTFmOTAwMzhkYzA4ZmM1MWJjODRlMjgxMzRlZTFlOGUgbGVnYWN5LXRydW5rCisxMjE0MCBkMTUyYWRmM2YwOTRjYjIyYjkyODI1YTkwNDYzMTY2YjA2ZDI0MmNmIGxlZ2FjeS10cnVuaworMTIxNDEgMDgzNzljN2Y1ZmE5YjMwMWYyMWVmMGFiMmZhMzgzNjY2MTQ4ZjcxOSBsZWdhY3ktdHJ1bmsKKzEyMTQyIGMyZWMyMWM2NWQwNTAwNWQ2MDc2YTVjNTc1NmE2OWY3NDA5YTkzNTIgbGVnYWN5LXRydW5rCisxMjE0MyAyY2Q1OGE2MWIwNTE2MDczYzQ4YzkzMDU2N2JmYmM5ZjhhYzRiMzQwIGxlZ2FjeS10cnVuaworMTIxNDQgNGUxNWQxNzVlZWQwYzliYjQ5MWYzNWI2OTU3ZTgyN2Y4NWZiNzkyZCBsZWdhY3ktdHJ1bmsKKzEyMTQ1IDQ3NDJjNTI5ZDljOGUxYzlkNjYxN2NlMjljZTM3MjFjZWRhZTRjMWUgbGVnYWN5LXRydW5rCisxMjE0NiBjNGVhZWY4OWE0YTc1ZDk4MGFjZDUyNWY4NzhhZmZjY2EzNjhhNDQ0IGxlZ2FjeS10cnVuaworMTIxNDcgYzY2YjBkMzlhNzM2YmU2MGU3ZWViZjVlNmE2OWZkNzA4OWIzNTNmYSBsZWdhY3ktdHJ1bmsKKzEyMTQ4IDQ3MDEyYzEzZWZlNDdiNGRlYmI5NzA4MTI5OGFlYzU3ZWNjYzk2ZWMgbGVnYWN5LXRydW5rCisxMjE0OSBiNGNkYTM5NDBhYzNmYzk3ZjRmNmFlYmE4MTM1MWRlNzVjMGQ4ZDU1IGxlZ2FjeS10cnVuaworMTIxNTAgYjc3ZDM3Mzk5MzQzN2E5OWNkZTg5ZDBkN2M3YmVjYjBkNmY4ZGRmMiBsZWdhY3ktdHJ1bmsKKzEyMTUxIGU3ZWUxODg0ZmQ1NDkxY2ZlOGVkZTU5Y2JlMmRjZTAxYTIwZDU3ZDcgbGVnYWN5LXRydW5rCisxMjE1MiA2OTQxZjQzZDNiYjgwOWM3MDYxMDI0YTlmM2YwZDY0NGJjYmIyMTcwIGxlZ2FjeS10cnVuaworMTIxNTMgOTE3MzU3YzEyNTUyMjZjOWY4OGJkZWRiNTVlMmQ2ZGNlNDNhNTFjNiBsZWdhY3ktdHJ1bmsKKzEyMTU0IGJmY2U3M2QzNTc2YzMyMDhjZGMxMmMwODY1YjgwMTEzOWNlOGFlNmMgbGVnYWN5LXRydW5rCisxMjE1NSBhZDQ5N2NiNWQyZGMyZjk4OWE3NGMxMzFmZjEyYjk4OTgwZWU4ZTY3IGxlZ2FjeS10cnVuaworMTIxNTYgN2RkZTQ1MDFmNTNhZGEzNGQxMWU2MjAyMWRlZDI1N2FlYTg5MWI5YiBsZWdhY3ktdHJ1bmsKKzEyMTU3IDIzMjM3YmNiNzc0YmYyZWY2M2Y5ZTJjN2MzY2E3ZWYyNjlkOTJjZjYgbGVnYWN5LXRydW5rCisxMjE1OCAwNGIwYTBmMjlmNjVmMzBhYTU1ZGM0YzA1NTUyNzNhZjA2NzdiMDNhIGxlZ2FjeS10cnVuaworMTIxNTkgYTIwNmM2MWE4OTUwOWU1ZDQxYzFkNzFhNWY3MDFjMWMwOGZjNGYxYSBsZWdhY3ktdHJ1bmsKKzEyMTYwIDQ4MDhhOGI1N2FmM2FiYmU3Nzc0YTA1YmJiYzBmMTQ1YzkxODk3NWQgbGVnYWN5LXRydW5rCisxMjE2MSA5YmE3ZjUwYjgyNWFkMDg1MWMzNzM4NjAwYmFiZWIwMzUxZTNhMmZkIGxlZ2FjeS10cnVuaworMTIxNjIgNDQ0OTcwMmEwOTZhNGZkNzQ3YzY5MjhhNTk2OTY4MTRkZTc0ODEwZCBsZWdhY3ktdHJ1bmsKKzEyMTYzIDRlZWUwNjFkYWM0NGNiY2I0NWY1MzNhNTExYjliOGY2NGJjODdmODggbGVnYWN5LXRydW5rCisxMjE2NCBlMTFkNzUwMDVhNWE5NjYyY2YyZTQ3N2IzNTUxMzc5MGFlNTk3YzAyIGxlZ2FjeS10cnVuaworMTIxNjUgOWRhMDFlNThhMGI1NWJhOThmMzY0YjIxODFmMjhiZGIzZjRjZTAwZSBsZWdhY3ktdHJ1bmsKKzEyMTY2IDkxNGY4M2U3ZmEwYTAyODk5YTM3ZjI0ODYwYjYyYWIxN2FkMTE4ZDAgbGVnYWN5LXRydW5rCisxMjE2NyA0MDg1OGFiMjM1NjgyMTM5ZGE0NzljMWUzNzU0NzI4MWY4ZGE0NGE3IGxlZ2FjeS10cnVuaworMTIxNjggMjcyZWNjYzU3M2UyNDA2YWZlYjllZWZjYmJkYmU2YTAwZDEyZmU1YyBsZWdhY3ktdHJ1bmsKKzEyMTY5IDIxNGYzMDQ0ZDE4YzEwY2Y3MWU5YzAwZTNjZjFiNmYzMWYxZWRhZjcgbGVnYWN5LXRydW5rCisxMjE3MCAxZDQwYmMyNTcwM2E1N2M5ZDRhZWJjN2U4MWUwZTliZjk4MjRjODE3IGxlZ2FjeS10cnVuaworMTIxNzEgYjQ4NDNhMDdkNTc5MWMxMzAzNmIyZWYwYzJmMDI5MmJkYjY2MGZjYSBsZWdhY3ktdHJ1bmsKKzEyMTcyIDk5MTZmYzg1YjI4YTU5ZmIyNGY3OGE4Mjk4NDJkYmMwZTVhNTQ3NDYgbGVnYWN5LXRydW5rCisxMjE3MyA1Mzc2NmZlZDlmOGNiOGFlYTAyMjQzN2EzMzc5MTUxNDczZGYwZjliIGxlZ2FjeS10cnVuaworMTIxNzQgYjc4MDQ5ZmVmY2ViMjk3YzY2NzIwYjE5NmYzYjc4M2E2ZTcwMDNhZCBsZWdhY3ktdHJ1bmsKKzEyMTc1IDVkNGYxMzQ3MTUwZWRlYTQ2NTJmYTczZDUwMjFmMGQwMDY3YTMzYTIgbGVnYWN5LXRydW5rCisxMjE3NiAwMGZlZDc2OTgwYmM3ZjcyN2VjYTI0Yjk3ZDM4MmU2NWIwODg5MjllIGxlZ2FjeS10cnVuaworMTIxNzcgZjM5YTE5YTEyMjlhZjZlMWU1ZTY2ZjUxZTMzMGM5NWNmZTY5ZDZjOSBsZWdhY3ktdHJ1bmsKKzEyMTc4IDg3N2QyM2JkNWJkYzJkMzA0ZmEyMWMzNDVjOTliZGNlMWZiZjMxMWUgbGVnYWN5LXRydW5rCisxMjE3OSA4YjYxZTEyNzNiNGJkYTM0YTdmYjg4YjJhNzkyNzFiYjhiODUzNTllIGxlZ2FjeS10cnVuaworMTIxODAgNjE1NGQyZTY4NjAzMjg2NjliNGY2NDc2NTBjNjFhMTM1MjM4YTlkYyBsZWdhY3ktdHJ1bmsKKzEyMTgxIDUzNDVmZDEzZGUzZDlkN2E0ZmY1OTk2Njc4NjBhODk1MGY2ZDQ5ZDIgbGVnYWN5LXRydW5rCisxMjE4MiA1YTZiZDQzZTJkNWE3NTU0NDBhOGNjZjA3ODY3NDY4ZDkzZjExYjA2IGxlZ2FjeS10cnVuaworMTIxODMgMTA5NTVjMzljMGU3YjZiZTY4ZDY0Y2U4YjFlZjkxMTQ2NTQ3MGRlYSBsZWdhY3ktdHJ1bmsKKzEyMTg0IDkzY2IxYWEyNGY3ZDEwNjk3MzhiZmY5M2VlODU4ZDZjYjQzODJkNDIgbGVnYWN5LXRydW5rCisxMjE4NSBiMGI4MTVlZWVkMmM0OTFhOGU1OGVhMDliZGZjMmIyMTEyZTM5NjdkIGxlZ2FjeS10cnVuaworMTIxODYgYjg4M2VmM2IyZDE5NmIyZDljOGUwYjc4NzA0Yzk1MTMyMDlkMjMxYyBsZWdhY3ktdHJ1bmsKKzEyMTg3IGVjZDExNTQyZWFiZTUxOTM5MDM5ZDc4YzI0YjIwMzdhMWEwMzI3MTkgbGVnYWN5LXRydW5rCisxMjE4OCAwYTA0MzRlZmViY2ZlYmNhOTBmMDU2MDU2MmJiODY0NzU4MzY5OTI1IGxlZ2FjeS10cnVuaworMTIxODkgMzE0ODk3OTljOGM2MGEzMDkyNTU1OGJhNDlhMTZjNjc4MzIzN2VhZSBsZWdhY3ktdHJ1bmsKKzEyMTkwIDhkM2MyYTgwODM0Y2MxMGJmMTIxODdmNTAxYzVkZjNhYmIxMWVkNzggbGVnYWN5LXRydW5rCisxMjE5MSA1Mzg5YzZlMzBlNTRiMTMwNzUwZjBmODFmNjkzMzAzOTRjM2I1YWMxIGxlZ2FjeS10cnVuaworMTIxOTIgMjYzNjU1YzZiNjU2NzE4MGQ3YjhlM2FhMTg0Y2UwZGNmMTYwOTc5MSBsZWdhY3ktdHJ1bmsKKzEyMTkzIDYzNzMyNTI5ZjZkZjdlOTc1ZjcxNDdkOGFmYjVkNGJhNzFiYjFmNDAgbGVnYWN5LXRydW5rCisxMjE5NCA3YTRlZWVkNTRiMjQ1MTRlMGIxMTA2ZWVkNjBmZDFmZTU3YjUxYTBiIGxlZ2FjeS10cnVuaworMTIxOTUgMjJmM2E4ZDgwM2E1MTdlYzJkOTYxZTUxMjMxODk3Y2M1ODhmNzYyOSBsZWdhY3ktdHJ1bmsKKzEyMTk2IDkzYzY2YWM2YWYxODk2ZDI2YWQ0YTljNmRkOTAyMmMwMmRhMDg3ZmIgbGVnYWN5LXRydW5rCisxMjE5NyBmN2U4NjY4NGNkNGMyZDM2NDJmYTRiNzllNDA3MTE2N2FjZGExYjM5IGxlZ2FjeS10cnVuaworMTIxOTggOTczYzIxZGYyZDYwMWI5ZGYxN2YxOWIxMjIwZjVmZDFmNTkwMTkxMiBsZWdhY3ktdHJ1bmsKKzEyMTk5IDk3MDFjNTBjNjk0NjA3MzhhNDc4MzA2YTBjODZhYzFiZDU3MmVjNzQgbGVnYWN5LXRydW5rCisxMjIwMCA1NTU5MDI1MWNmNTI3M2I2NWIxM2NiZGU1OWNmZDY2ZjdhOTkwNjQxIGxlZ2FjeS10cnVuaworMTIyMDEgNmJhN2JkNTYzZTNiZjdmYTZhZWZiYzdhZmNmZjY5YTYzN2ExMDVlNSBsZWdhY3ktdHJ1bmsKKzEyMjAyIGI1ZDFhMTYyNWNkNWRiNGZmZGMwZDJmYWNhY2Y4Mjg2MzEwYzczNzUgbGVnYWN5LXRydW5rCisxMjIwMyA0Mzk0MjFjZGE4OWVhNzZkNjczYzAwY2ZmYmNjZjRmNDkzZThjMDM0IGxlZ2FjeS10cnVuaworMTIyMDQgYzIyZGMzMDFiMzZhODFlMmFkZGE3MzQ0YTU0Y2EwNGNkNWEyYzhmYyBsZWdhY3ktdHJ1bmsKKzEyMjA1IDEyNzc5NDYwNTRlOGM2ZTE2MmFlY2YxZWEzMTQ2NGRhZGVmY2I0ZWUgbGVnYWN5LXRydW5rCisxMjIwNiBlMGE0ZmIwYWJiNzY5ZGRlMTgyNTIzYTMxMWRjMzk2YWRmYzcxMWNjIGxlZ2FjeS10cnVuaworMTIyMDcgZjNmNjAyM2ZlYjc4OGQ5MWE4MTk1NzYxNDk1OGQxM2M2N2QxYzc3MyBsZWdhY3ktdHJ1bmsKKzEyMjA4IGQ3ZGQ3MWQwZDE4MzFhNjhmMTNhYjJhYzljZDAxNzBiYmZmOGY4OTMgbGVnYWN5LXRydW5rCisxMjIwOSBlNzhiZGNjZDIyNGZmYzkxZWRlODVmODdmOGRmY2I0NDk0ZDczNzgwIGxlZ2FjeS10cnVuaworMTIyMTAgMmJjZGUzNDc0NmQxY2YwYmQ0MWM0OTY2ZjcxYjEzM2M5YjQwMTRhYiBsZWdhY3ktdHJ1bmsKKzEyMjExIGEzYzljZTI5ODVkZWU5NTFjOGIyMGViODg0ZTY5NmNhYmNlNWY0MzIgbGVnYWN5LXRydW5rCisxMjIxMSBmMDhjN2EyYTU2ZjgwNzQxZjVmMTkyZmQwZWJlMGIwOTY3YTIwM2NmIGxlZ2FjeS10cnVuaworMTIyMTMgY2Y2NTRlZDU4ZmYxNmEwOGRhZGFiOGI0ODY2NzZmOGFiMjdiM2Y4MyBsZWdhY3ktdHJ1bmsKKzEyMjE0IGQxZGI3ZjZhYjc1M2M5ZjM0NTI5ZDg0OTdkNjBlNDAyMzhkZjY0NmQgbGVnYWN5LXRydW5rCisxMjIxNSA4YjI1YmEyNDk0NDY1MmE2MGJmMjI3MjdmMGJiZmM1ZWEzYjg2MjhmIGxlZ2FjeS10cnVuaworMTIyMTYgMmE4OTU0M2RkM2NhYjBlODRjOGRmNmQ4ZTYwNzFkYzAxZTgxNWU3NCBsZWdhY3ktdHJ1bmsKKzEyMjE3IDQ4MmU2M2Q3OWM5ZGZlZTRhOWVkMzkxMzM5NGVkN2ExNjg1NTI1Y2MgbGVnYWN5LXRydW5rCisxMjIxOCAzNTE5ZGU0NDBmODkyYzJjN2UxNTk2NWEzY2Q1ZTc3OWEyOTVmNTNhIGxlZ2FjeS10cnVuaworMTIyMTkgMjRjYTY0MTM0NTk0YWQ3ZjMzNmNlZjFjNzFmNGVhMWE4ZmFkYjA2ZSBsZWdhY3ktdHJ1bmsKKzEyMjIwIDcyYjc2MWI5NDhlN2U5YWI3OTFjYzAzZTg5YzJlZTc3OGRlZjFjODIgbGVnYWN5LXRydW5rCisxMjIyMSAzOTU1Zjc4N2U5YTExYzE0YmM0NGFlNmU1MzQyOWEwZTk4YzM1NTBiIGxlZ2FjeS10cnVuaworMTIyMjIgMDRlNDRjNjA3NmU4ZjJmMmYzNTA5MjI5NDVmODZkZjE3Y2Y2OTZhZSBsZWdhY3ktdHJ1bmsKKzEyMjIzIDU2ZjM4YmYzYWY5ZjJkNjMzODI0MDliNmIxNjJlOWQ2MDFiNGMyMzIgbGVnYWN5LXRydW5rCisxMjIyNCA0YjFiOTQzMmIyNmJmZDhmNjc5ZWRiNzQxM2U4MmE5ZTNiYjMwN2Y2IGxlZ2FjeS10cnVuaworMTIyMjUgNDMzNmExOTA1MDViNjZlMjYzMmNkYTVhMWViNDdmMzM5ZGRlY2FkNCBsZWdhY3ktdHJ1bmsKKzEyMjI2IGVhYWI4ZmViN2ZjMDc2NGQ4OWNjMmM0NWYwMzFlMGM1YzhlZDRlNzcgbGVnYWN5LXRydW5rCisxMjIyNyAyY2NmMDQ1ZjVhMjExZjEwMTQwMTZjMjA4M2Q5YzYxNmFhN2JkYjkyIGxlZ2FjeS10cnVuaworMTIyMjggMjY0Njg5M2NiNDk5Mzc1YWFkMDBjZjllYTU2OGY3YjFhZjBhMGU5OSBsZWdhY3ktdHJ1bmsKKzEyMjI5IDZmMWNhOWRjOTVkYWIxNzUxZDQ1YjZlZDdkYzU2NjQ0ODA2NGE5MDcgbGVnYWN5LXRydW5rCisxMjIzMCA3MmY1MDYzNmRmZWExZTQ1ODNkY2NlMzdiNWRmZmQ2OTQ3YzU0ODE4IGxlZ2FjeS10cnVuaworMTIyMzEgMTBhYjJjNWZiZDhlZTdjMGQ3ZjlhZTAxOTVjOWY2MGU4YTZhNjdlZCBsZWdhY3ktdHJ1bmsKKzEyMjMyIDg1ZDViNWVjZWQ5ZWE5OTg2MzM5MGU1YTUzZjE4MmUzZDAxODYwYzkgbGVnYWN5LXRydW5rCisxMjIzMyA0N2QyZTRmNzExNDc4ZGQ1ZjBlMDc1N2ZjNDQ1YjdkNGZlYTVlMDZlIGxlZ2FjeS10cnVuaworMTIyMzQgMmU5OTMxZjQ0ZWY0Zjc4NjJjYjA4NjQzNWJlYzIyNmFiM2Q3ZDQwZiBsZWdhY3ktdHJ1bmsKKzEyMjM1IDQ3YmJkMGJhOGU4YTA1OWYwOWE2YTExNmIzZDFhYjNmMWJjYTdkYWEgbGVnYWN5LXRydW5rCisxMjIzNiAzNDE1ZDEzZjhiYzhjMDNkMDlhZDczNTc5ZDhiM2U4YzNiZTFjOTU4IGxlZ2FjeS10cnVuaworMTIyMzcgOWZjYzkwMmQ3NDBmYWFlYTk0ZjkyNTAzZDNjNzg5OWFlMDBlOTAxNCBsZWdhY3ktdHJ1bmsKKzEyMjM4IGU2YjY2MmE5YjcwOTYxMTg5Yjc0YzY3ZTQ5NjcyMzEzNzkxNWNmNjMgbGVnYWN5LXRydW5rCisxMjIzOSBlMDZlZjg3YjM0Y2M0YTg4NTg2NGVkNzYwNjBmYzE4YzNhNGFjNjlhIGxlZ2FjeS10cnVuaworMTIyNDAgMDVmYjRkOTY2YzczZmZhYjBkYWFiNjA4OTcxOTY5NzJiY2VhMDMzNiBsZWdhY3ktdHJ1bmsKKzEyMjQxIDI1MDdlMTVlY2E2YjkwYzZiZWYyYTJlZDk1YjFkOWVlMWM0NmU5N2EgbGVnYWN5LXRydW5rCisxMjI0MiAwOTk1YTdhNjM3ODJiYmQwYTRmZjA2NzU5MDEyYjhiYmYxZWM0NGYxIGxlZ2FjeS10cnVuaworMTIyNDMgODVhYjI4NjQ0MjAxNDE0MTEzNmI2NTAyNDMxNmM5MDM4ZDA4OGIzZSBsZWdhY3ktdHJ1bmsKKzEyMjQ0IDZmYzU4ZDc5ZGFjNWRjNWQxNmUyZTA4ZDhiNjMxMjE4ZjQ3ZTlkMTggbGVnYWN5LXRydW5rCisxMjI0NSA5MzQyYzYwZWFhYzA3NWFkMjM4MDM3ZGI4MzYxODM2OWU3NDhkODUyIGxlZ2FjeS10cnVuaworMTIyNDYgZDYzMjhkNzRiNTgwZWZkOTA0NTI3NmVkNjA2NGQzOGYxMDRjNDE1NyBsZWdhY3ktdHJ1bmsKKzEyMjQ3IGZjZTZjMTFjODBmYTFkZTlhYjQxZDJkNDllMTQ5ODEwYzJkNDA3MGUgbGVnYWN5LXRydW5rCisxMjI0OCA5NjdhYzVlODkwN2FjYTk0YzQ2MjA2ZDU1N2YxNjA0MzIwM2QzNjA0IGxlZ2FjeS10cnVuaworMTIyNDkgN2NlYjkyYmE4NmY3NjQ5ZWMxNTViZDIxNzhjODY5MTI3MWIxNjUzOSBsZWdhY3ktdHJ1bmsKKzEyMjUwIDA4YTkzNzM4NjBlODM2YjFmZTZjOWI0ZTM0Y2Q3MTIwYWVjMjIyZjkgbGVnYWN5LXRydW5rCisxMjI1MSBlNDVkZjZmNDU2MDRiOTUzMGNjNzQ2ZDJlY2M5MDk0MTM1ZDc3MmZiIGxlZ2FjeS10cnVuaworMTIyNTIgODhhZjhhNDI4NTdkMzFmMmI2YzIwYjA1M2Y5NjRkOGNlNGJkZTZhMSBsZWdhY3ktdHJ1bmsKKzEyMjUzIDc2NjNjZjk1YmQwZWE4NjI2ODAyNWRlYTZkNGU2NmVmZTZiNTYzOWUgbGVnYWN5LXRydW5rCisxMjI1NCAzMGYzNjMwYjc3Y2E5OTQ1Y2YzNDM1ZmQ5NTkyNGYzMzY1NDIxNTgyIGxlZ2FjeS10cnVuaworMTIyNTUgNTg2ZDFiMDg2MTRlMjYxN2RjMzBmOGZjNThhYWI1OTJmMTc4N2U1YiBsZWdhY3ktdHJ1bmsKKzEyMjU2IGM3MDhkNzBiMTM5ZTIxNWU2Y2ZiMGRlNmFhZWZiZGIyNTVlNDliODEgbGVnYWN5LXRydW5rCisxMjI1NyBjZDJlMDVkYWU0YzI5NWZhNGZhYzdiYTE1YzA1N2I2ZWU0ZTA0OTA2IGxlZ2FjeS10cnVuaworMTIyNTggOWU2ZjViYWMxNWFjMjRhM2ExNzBkYTU0ZWRiMDYzNTdjOTFjYTMyNSBsZWdhY3ktdHJ1bmsKKzEyMjU5IDNlN2M0MzQ1M2U1ZTk5OWM3MTExNWJmYzJkZDQxMWFjNTM4N2ZhMWMgbGVnYWN5LXRydW5rCisxMjI2MCBjZmI5MGRiMzk5NThiMjRhM2RkNjhhNGI1YTU5OTMzMDg2NTllNWY1IGxlZ2FjeS10cnVuaworMTIyNjEgZWQ1MjNlYTA3M2RiYTA0OWY4YWZjZmMxMDE0NDRhNmMxOWM3MzhiOSBsZWdhY3ktdHJ1bmsKKzEyMjYyIDE2YzlhNzE0ODgwZmMwMGYwOGI2MjU3ZmU3MTRkZGZkMWUwOTI3Y2MgbGVnYWN5LXRydW5rCisxMjI2MyBmNzU1MmRkMjM2YjBhZDYyN2JmZmIxODYxMzEzY2MyN2U1Y2RmYjNkIGxlZ2FjeS10cnVuaworMTIyNjQgNjMxZDk2ZDNjZjY2MGZlZjMwMGI3ZDEwOTE0YzJiMjdkMGFjNDU3YiBsZWdhY3ktdHJ1bmsKKzEyMjY1IDBkODg3MzM0MDg0NjIyNTZlYTY1MjI0MGVjNGZkMzI5ZTZhMWZkNTEgbGVnYWN5LXRydW5rCisxMjI2NiA2MWRkZTdlYmZhOTUxNjg4YTg0YjA1OTAwYTA1NjIzYmY5NmMzYmZkIGxlZ2FjeS10cnVuaworMTIyNjcgNGEwN2Q2OTg2NGY1NzUxMjIyMWYyNzVmYmIxYTYxZGMxNjllZDE1OSBsZWdhY3ktdHJ1bmsKKzEyMjY4IGUxNTA4ZjcyYzYxMGJhZDIxMDViZGZiODMzODlkNmEwYTZhYmM5YzggbGVnYWN5LXRydW5rCisxMjI2OSA4NTQ3ZDI3N2EyMmY5NjBjNWRiYzk4YmI2NjI5Y2E0Y2YzMTkxYjRjIGxlZ2FjeS10cnVuaworMTIyNzAgZWFmOTNkNWJiNDZjZjY1Yjk5Y2U4NjQyZTZjNTI0M2YyYTkxMWIzNCBsZWdhY3ktdHJ1bmsKKzEyMjcxIDg4MTM2MjdhYWM0NjZhMDFmZDE5NmM1YTU5YTYzZDFhY2Y5Y2U0MGEgbGVnYWN5LXRydW5rCisxMjI3MiBlMjA4YjI3NGViODA4YzZiZDNlMTQyNWU1Mjg0ZjU3NjhmM2Q2MzYzIGxlZ2FjeS10cnVuaworMTIyNzMgNzcwYjQwZmVkNWY3YWIxMDZjNjUxYTdiYWUwYmE5MzljY2I5MzFmZSBsZWdhY3ktdHJ1bmsKKzEyMjc0IGIxMTZhZmI4MTczMjhlYzJmZGQwZDA4MzhhZGJlNjRmYzNlMDgxNTEgbGVnYWN5LXRydW5rCisxMjI3NSA3NzBkODk0ZTIwYmQ4ZDIzYzllNzNmNWYwNGVmZDNlNDlkNTdmY2Y3IGxlZ2FjeS10cnVuaworMTIyNzYgOGIwODYzNDlhNDg4Y2IxYTFiZWFkNjRmZjdjOTBlNGIwMzI4ZDM5NyBsZWdhY3ktdHJ1bmsKKzEyMjc3IGRhOTQ0Njc4YjAwZTBiOGYzMzFiYzljY2MzNTExMmNhMzU0OTJlNjEgbGVnYWN5LXRydW5rCisxMjI3OCBjNDY5MjA0NmI0ODIwMWJmZjhjZWMzMjMyOWFjYTMzMmQ4ZGJkYjAzIGxlZ2FjeS10cnVuaworMTIyNzkgNGIxOGY4ZWFhMTZiMmJmOGJiMzg0NzcwMTE0YWY0MWNjZjBjYzIzYSBsZWdhY3ktdHJ1bmsKKzEyMjgwIGM5MWNlNDliNDA3NTA4OWFkMWRjN2RlMmJlMWRjMjgzZWM5YjNlOWYgbGVnYWN5LXRydW5rCisxMjI4MSA2NjgwZmFjYjRkNWI1ZTI3YjlkZTk5OTZiYzdkOGRhOWNiOWE1MzIwIGxlZ2FjeS10cnVuaworMTIyODIgYmUyNGI1YjkwZGVjZDYzZGE1YzA1YWI4YzUzZGJkZWMzZTRmOGViZiBsZWdhY3ktdHJ1bmsKKzEyMjgzIDhkYmEwODIyM2RlYmExNjRmMDRhOThmZjVmYmE4NWUwOGI0YjEyNWUgbGVnYWN5LXRydW5rCisxMjI4NCBmYWNiNDU3YjRkMzJlZDZlMjI0Zjc3NzgzNmE0MzUxMDgxNzM2NDE5IGxlZ2FjeS10cnVuaworMTIyODUgNDBmNzIzYWMyNmU4MjgwNzM3NDczM2I0Y2IzMTI1ZjkyMGQyYjhjNyBsZWdhY3ktdHJ1bmsKKzEyMjg2IDFiZWFmOTE3OTEyNWIyNGFmOTliMTI0M2E5MjdlY2EwZjc4MzdjZjcgbGVnYWN5LXRydW5rCisxMjI4NyBlY2I5MTJiZTQzMThhNjNjNTIzZTQwOWY3OWM5ZWJiZmQyMTk1MzViIGxlZ2FjeS10cnVuaworMTIyODggMDhkZmJlZTBhMzJhMTM5N2ZiMWIxZWE2ZDVlZDMxMjk1YjRiMWMyNyBsZWdhY3ktdHJ1bmsKKzEyMjg5IDdjZGNkZjg2ODZiM2M5MWI3ZDAzZjllODYxMzc1ZDYwNTZmZTM0YzAgbGVnYWN5LXRydW5rCisxMjI5MCA5ZTYxMTY2ZWNkZDgxZDViMDgwOTcwNTcwMGNiMWJmZjM3Yzg2NTM1IGxlZ2FjeS10cnVuaworMTIyOTEgZmU3MDE5NjliYzJjZjZiNzkxNWQ1OWFjYTc1NGQyMjQ0YTQ5NDZiYSBsZWdhY3ktdHJ1bmsKKzEyMjkyIDczN2QwNWE5YmI1ZThhOWFmOTRjZDg1NjllY2QwMmI2OTcxYmUwNGQgbGVnYWN5LXRydW5rCisxMjI5MyAyMDllZWQ2YTJlZjY1OGVkMzhjYmUyYzIxYWY2YWYwZjUxYzYyODBlIGxlZ2FjeS10cnVuaworMTIyOTQgODM2Zjk0MDhjOTU2NWFhNTljODAxOGQ1MjlkZjVjYzI4OTNkM2NiNSBsZWdhY3ktdHJ1bmsKKzEyMjk1IDdlZjVhMTUyMGFlNTNkMDExNWVmYzdjOGNkYTI0MmMyMWZkNjYyYjEgbGVnYWN5LXRydW5rCisxMjI5NiBkYjI5ODJmYjYzYzA0ZDVkOTQzMzkzZjRlYmRiZjg3NmYyYmI0ZTZiIGxlZ2FjeS10cnVuaworMTIyOTcgOWNmYzUzZTU5OTZlMGFhMGM4YzVhNDY5ZmI4OWYxYTBjNjA1OTM2ZSBsZWdhY3ktdHJ1bmsKKzEyMjk4IDlkMDJhZmEwMjJjNTJmZDc0ZTk0NGE1NzNhNzQ5YjJmZmVlYmJiN2EgbGVnYWN5LXRydW5rCisxMjI5OSBjMWVhYjFkYzc1MzYzYTM0MTE5MWJkNTY0ODQxMDA2MmY0Nzk2MzlkIGxlZ2FjeS10cnVuaworMTIzMDAgOTI4YzkzZDJjMTA3MWRiOWQwYzZkZGViYjMwNzVkNWUxMWVkYzYyOCBsZWdhY3ktdHJ1bmsKKzEyMzAxIDU2NjhmOGEzYTQzMDRmYmMxMGE0OGUzZDExMjY4MTgyMWM1ZmNlNGQgbGVnYWN5LXRydW5rCisxMjMwMiA4MWIzZTZjYTRhMjlhZmJiMTM4YjYyNGM3MTlhM2YxODM5YmRjMThhIGxlZ2FjeS10cnVuaworMTIzMDMgMTAyNzAxMTVjZDRiODA1Y2ZmMzdlMTM2NTIzNTljNWJhMDk2MDk3OCBsZWdhY3ktdHJ1bmsKKzEyMzA0IDhkNmY4NGM1OTQ4YzI4NTFhMDAwZGY1MzBmNjczZDc1YWUxZGE5ZTkgbGVnYWN5LXRydW5rCisxMjMwNSBhOWFhYzAwMmU4NDM1YmEyYjY2YTlhZGQ2YmIwMzdiMmY4MGFlY2JlIGxlZ2FjeS10cnVuaworMTIzMDYgNDE1Yjk4NDExNzA3ZjEyMjJmZjJhYzMyNjAyYzQ5ODgwNTI3YWJlOSBsZWdhY3ktdHJ1bmsKKzEyMzA3IDBiZmFmZjExYzU3Mzk5NzZiZmFhNDcxMjk1MjAyYzUzNjQ4M2IzZTEgbGVnYWN5LXRydW5rCisxMjMwOCA5M2Q3MDMwOGJlMTcxYmI1OGE0OGE5ZDlmZDNmYWNmNTMzYzAwMzVmIGxlZ2FjeS10cnVuaworMTIzMDkgZjk4MWM5ZDM2YzhhZjg1NjUzNTY1NDlmZTBhZmIzY2Q3NTkyNmIwOCBsZWdhY3ktdHJ1bmsKKzEyMzEwIDFlYWViYWVhYTIyYjlhMmExNjA5NGI3ZmI1Yjg0ZDUwZWFkMTA1ZDEgbGVnYWN5LXRydW5rCisxMjMxMSAzMGVlODYxNzIxNjhhMzFjMTNiNDRkM2RjODg5M2ZlOTQ0NDQ4ZGI2IGxlZ2FjeS10cnVuaworMTIzMTIgODcwMTA5YTQ0ZTBlYmUxOGEwYmI2YjdlYTZmNTAwOGRmMjc2NWMwYyBsZWdhY3ktdHJ1bmsKKzEyMzEzIDRkMDQ0MDA1NjExZTQwZmVjMzY4YTM5Y2EzOWIwMDQxM2RlYTk1ZDIgbGVnYWN5LXRydW5rCisxMjMxNCA0MDEwZTVkMjQzZDY2YjhiMjFlYWI1MTQ3MzAzM2FjZGI3NmY3YWIyIGxlZ2FjeS10cnVuaworMTIzMTUgMTQyMGY4NDAwOTI0OWI4NmQxMTM2OGRlNGU0Y2JiZDI1M2Q4NzhjZSBsZWdhY3ktdHJ1bmsKKzEyMzE2IDY2MzczNzI3ZmFjODViMjgwYmU1YmVkNWRjZWVlOTMzMjY5YjliY2EgbGVnYWN5LXRydW5rCisxMjMxNyBhM2IyNTI1YzkzNzA0MDQyOTkxMzk2ODFiZDUzZmVkMDU3MzhjNTYwIGxlZ2FjeS10cnVuaworMTIzMTggYmQxY2U0MTIwZTZmOTU0NmRlZGY4NWNhOTdlOGVjZjFhNWFjMjM4OCBsZWdhY3ktdHJ1bmsKKzEyMzE5IDQ1N2NiODY4YzI1ZTQ1YTQxYjdhZDJmM2VjNDMzZjAwODU0ZDQwZTYgbGVnYWN5LXRydW5rCisxMjMyMSAyOGQzYTlmY2I1NzdkZmM4NTYyZjE4NDliNGRkYzRlNGI2MTg5Y2E1IGxlZ2FjeS10cnVuaworMTIzMjIgMTdlNGQ4MTk0OWI5ZjFlYzAzOTRjNjEwNmE3ZjkyNzQ5ZWIxYzQyMiBsZWdhY3ktdHJ1bmsKKzEyMzIzIGJhNjNjNmY2MDI1YjRmMjM1YjEwYTAyMWE3NDg2YmY5MmRmOWFlZGEgbGVnYWN5LXRydW5rCisxMjMyNCA0ZTk1MDY1YTcyYTFhNmYyZDczYzk4ZTk2MGYwNDJmNTJlODM2MDg1IGxlZ2FjeS10cnVuaworMTIzMjUgNWJkZjkxNjUxMzc3MjZlYjc3YmViNmU0M2IzOTE5ZDJkMDkxZDgyYiBsZWdhY3ktdHJ1bmsKKzEyMzI2IGNlMGMxN2NjNzdjZTUwZmU4MzcxNmJlN2MxZTU4NGIyNmI0OGI4YWQgbGVnYWN5LXRydW5rCisxMjMyNyBlZjk3YjRmNmQxODc1ZmM2ZWI1MDBjMzUxMzhjNTIxM2Y5ZjIxMjg0IGxlZ2FjeS10cnVuaworMTIzMjggODAxNTBmOWM4YzQxZmNlOWRhMmZjMTNiM2YwNzE5OTA5MGZmM2JmNyBsZWdhY3ktdHJ1bmsKKzEyMzI5IDEzOTliZWY3YWY2MTM1NWQ2ZWViZWUzNmE2MTQ4NzQwY2NiM2Q5MzAgbGVnYWN5LXRydW5rCisxMjMzMCBhYjU1Njk4YmZmMWNhOWE4YTBiMTE4MGJhNjM5OTJkOGM5YTkyY2RiIGxlZ2FjeS10cnVuaworMTIzMzEgMWRhYmM3M2I3YjBiY2M4MmJkY2RjNmE5N2ExMTU2MWE2MDJhNTM2NCBsZWdhY3ktdHJ1bmsKKzEyMzMyIDYxY2FmYTk3ZWI3N2FmMDY2OWI3MmI3ZjdlZmYyZWEyZTkwZGEzZGUgbGVnYWN5LXRydW5rCisxMjMzMyBlNWNiMTU3ZmYwOTMxZmYwNWUzNmJmM2U5YmM0ZWJjNGFmM2MzOTI1IGxlZ2FjeS10cnVuaworMTIzMzQgODI0MzlkOTk4N2IyY2Y2N2E5MDFjNzFmZWJjN2JlNWZmNmE0N2YxOSBsZWdhY3ktdHJ1bmsKKzEyMzM1IGRkM2M3ZmMwYTM0ZDRiOWNmZjQ4ZmNjNTllNjQxZDBhMThiYmYxYTAgbGVnYWN5LXRydW5rCisxMjMzNiBiMDgyMWIwYmNjZjBmZDVlNDRkMzZlZjI4MGUxYzBiMDg5NTY1Mjg1IGxlZ2FjeS10cnVuaworMTIzMzcgZjc0ZGU3N2YwNTEwZWYzYWE5ZTM2MWQwYjk3NWI5ZDYxODJiYmE2MCBsZWdhY3ktdHJ1bmsKKzEyMzM4IDEzZDBmNjI4YzU3MjI5MGYyYzRkODgxMTQyMDU0NmFhNjg3YWExNmUgbGVnYWN5LXRydW5rCisxMjMzOSBiOGZlZGIyMjZmMDljMTA4NGJhYjZlYmFmY2MwMjM2MDJkZjg0ZTViIGxlZ2FjeS10cnVuaworMTIzNDAgYWFiMGYzNDYzYWYwNmJjMDVjN2I2MTVjZjE1NjAzYTM2YTczYjUwMiBsZWdhY3ktdHJ1bmsKKzEyMzQxIGRkZjNkNTUyMjBiOTBkODIxNTVjYjUyNDlhZDcwMzJjYmVjNDYxOTQgbGVnYWN5LXRydW5rCisxMjM0MiA4NmNiNzdmYjE5ZTg4YWRmOGQzMDZkNzBlOTJhOWViMmI3ZWU0YTk2IGxlZ2FjeS10cnVuaworMTIzNDMgZjM0YmI0N2FhZmFjYWNhZDQzMTdiNjQ4YWI5MzFkMzdhZjc2Nzc4YSBsZWdhY3ktdHJ1bmsKKzEyMzQ0IDQ5NjcwMDM3NGZjNDM4Y2IzNDcwZjk0MGY3Mzg3NjI0OTljYTE2ZTEgbGVnYWN5LXRydW5rCisxMjM0NSA5YTI5M2U3N2M1NTQ2Y2Q3YTE5ZjFkYjBkMjUxYWZmMzY1YmE5OThiIGxlZ2FjeS10cnVuaworMTIzNDYgZDY0Y2UyOTgwMWNiMTcwOWFkMDZiYThmZmQzZTBlNWMzZmM0M2NkYyBsZWdhY3ktdHJ1bmsKKzEyMzQ3IDViYWM1NmZmY2NhOGY4MDE0YjE1YzkzMzI0M2JlNWRlNTU1YWEyYzcgbGVnYWN5LXRydW5rCisxMjM0OCBlMTljZDhlYzIwYTJlOGZlNzNjNmE2MDUwMjg0NGZjZjgyYjgzZTZiIGxlZ2FjeS10cnVuaworMTIzNDkgNWU5ZWY5ZDg1NzViYmNiNTc1NDljN2ZjYTA1MzI0ZTdkNzY1MGNlOCBsZWdhY3ktdHJ1bmsKKzEyMzUwIGVjODBhZDI1Y2E4NjEzMjhhZjUwNjgzOWU5ODU4ZjFiNjExYWQ0NTMgbGVnYWN5LXRydW5rCisxMjM1MSA2YzZlZTNiYjNmY2MyMmRjZGViMDQ3ODM2MTM2NjIyMTYzZjZiM2Y3IGxlZ2FjeS10cnVuaworMTIzNTIgMDE0NzdiMWE3NGY5YzFjNTY3NDE5OGRiOWRkZDU0ODgyOTNlODgwMSBsZWdhY3ktdHJ1bmsKKzEyMzUzIGI1MzBiYzYyZTNiOTkxYjgxM2Q0MGZjYjdkZmEzMTE5YjIwOWQ0YzMgbGVnYWN5LXRydW5rCisxMjM1NCBlNmNkNjgzYTIyZjgxODk4MTdiMDc0MDE5ZTM2M2MzZmExNGQ3Y2Q0IGxlZ2FjeS10cnVuaworMTIzNTUgMzBjMWM0MGNkODBmZDM2OWZjNTNmZjgzMGI3NDJjMjI2MzdlOGRiNSBsZWdhY3ktdHJ1bmsKKzEyMzU2IDFlOGZmOGE4NzkyZWY3Yzk4Y2MyNzE3YjQ2ZjNmOTlmNWViYTgzY2MgbGVnYWN5LXRydW5rCisxMjM1NyBjZGI3NzJhYWJiYTI1ZDUwM2JmZTk4NTc0MDQ3YTg1YzhhYTBjYmE5IGxlZ2FjeS10cnVuaworMTIzNTkgNjA1ZWFmOGNjNmQwZWNlZGEyMTc2ODI2Y2YwODQ0NGMzNzBmYzYyYyBsZWdhY3ktdHJ1bmsKKzEyMzYwIGExNTg1ZjY5MjU1ZGEwMGQwZTFlNDU5YjZkYWZhNzAxOGY0ODM1NTMgbGVnYWN5LXRydW5rCisxMjM2MSA1MWU4NjhlZjNiMzFlNWExOThkYmYyZjRiYzBmNWY5NTQyMjM5OGQyIGxlZ2FjeS10cnVuaworMTIzNjIgYjkzYzM5MGZkMjVkNWYxNGRmZWI3NTQ2MzlmOTgxMzNmZTc3ZjdmZSBsZWdhY3ktdHJ1bmsKKzEyMzYzIGE3ZDFjZjk1ZGFkYzU5ZTY0OTQ3OTE4YmEyOWE0NGNlYThlZmQ3YjUgbGVnYWN5LXRydW5rCisxMjM2NCA4YTY1MzZjMWEwYTQ2MjY4MDYxMjM1YTFmNDQwMzY3Y2FlYzdjYjlhIGxlZ2FjeS10cnVuaworMTIzNjUgNjBmNDI1ODY4NjZlYWYyNTM1ZjViMjRjMTAyOTBjODVhODUyYjU0ZSBsZWdhY3ktdHJ1bmsKKzEyMzY2IDBhYWVhNDg5MDJlNDNiMjc2MDczNDgyMTE4ZDU5MTlmODFhNDFhNzkgbGVnYWN5LXRydW5rCisxMjM2NyBmNzdiOTQxYTBmOTM2ZGUzYmQwMWZmNzM3MTMzMzY1YTdjN2RmY2QyIGxlZ2FjeS10cnVuaworMTIzNjkgYzk1ZmZmOGYxODBhOGQ3Y2M4NmUxY2ZkZWU5Y2UzZTA4OTMzZGI4MiBsZWdhY3ktdHJ1bmsKKzEyMzcwIGE1OGYzNjM1MmM0ZjNmZWRjYzMxNGM3MmYwYmIzYjcyMDlkNDYyYWEgbGVnYWN5LXRydW5rCisxMjM3MSAzM2M0YmE3NzdhM2E3ZDFjYTIyMjQzMzUyNTA4NDllMmVmNzAxNDA0IGxlZ2FjeS10cnVuaworMTIzNzIgZWUzNmUxZjEzMGNjYmI3OWY3ZWI5M2VmN2VhNTJlNDkzMzU2YTE2NCBsZWdhY3ktdHJ1bmsKKzEyMzczIGUzYTc5ZjkzZDFkM2U1OGQ5MTQyOWU5YjE4YWQ5MDdmOWVkZjdhNTQgbGVnYWN5LXRydW5rCisxMjM3NCBmMzUyZWVhNjgzNzM0OTM1YzZhN2Q0NjcxMjU1NmZiMTUyZDRmMGFjIGxlZ2FjeS10cnVuaworMTIzNzUgOWRhNDI0OTM1Zjc4NjczODY4NzE4ZWIyNjc0YzJmN2RkMWRhNDhmZiBsZWdhY3ktdHJ1bmsKKzEyMzc2IDJhYjE4OTU4NWQyMzg2NThjOTNkNjMzZDRkYzdkNmVlMmY3YzNiYjEgbGVnYWN5LXRydW5rCisxMjM3NyA3Nzg2Mjk3ODQ3YWNhMGE2MGMzYTg4YjYyYzdhNDIzYWI1YTFhMDNkIGxlZ2FjeS10cnVuaworMTIzNzggZjc4ZmQ5YjY3Mjg0YWRjNGNhZWY0ZTA1NDhkMzFmNzg3YTgwOTFhNSBsZWdhY3ktdHJ1bmsKKzEyMzc5IDFhYzM0ODVmOWUzZTM2NzZiMmZlOGNkODc2NTMxZmRlZDg4Mzk4ZmUgbGVnYWN5LXRydW5rCisxMjM4MCBlMTRmZWVlNGM0NTZiYzg2ZTNlMjliYTQ4ZjYxMTBkMDE4MGRjZGQxIGxlZ2FjeS10cnVuaworMTIzODEgYjBlZGM4OTJmYzc4MmU5MGIzN2M4OTM3NmI1M2YwZDNmMzAzYTQ3YiBsZWdhY3ktdHJ1bmsKKzEyMzgyIDY1OTM3ZmY3MThkZWZjNWRhZTI5Yzc2MmQ3YTIyOTZmY2NkMzkyODYgbGVnYWN5LXRydW5rCisxMjM4MyBkZTQxZThkODIxMWRkMzVkYjZiZmEyMzkxMDRjN2M5YWQ3NWRkODg3IGxlZ2FjeS10cnVuaworMTIzODQgMzU4OWMwZTU2ZWYyNTE2NjFkMzI1MDI3Y2U2MDg4ZTdhOGJhNmI4OSBsZWdhY3ktdHJ1bmsKKzEyMzg1IDcxOTVlYzI5NmIzZDk0NDAzNDJmYjhhNzg4ODE0ZGJlMTBiZTIxZDAgbGVnYWN5LXRydW5rCisxMjM4NiAxNGRjYmIzNGI5ZGQzYWUzMWYzNzQwYjUxNWRmY2VhM2RmZWMzYmM5IGxlZ2FjeS10cnVuaworMTIzODcgMDMwZWU1MGJkOGQxYjQ4NTgwODg2NDMyYzVhYTI1NThkMzcwZWNlMyBsZWdhY3ktdHJ1bmsKKzEyMzg4IGZhZTZkMjRiODk3YmNlNjRhYmQ5Njc5ODY2Y2ViNDQwYjMyM2Q2MjYgbGVnYWN5LXRydW5rCisxMjM4OSBhZTkwOGVmOTFjZjBjYzU2OThmMWE4YWExNzNkZTgzZTA2ZjNmNDA5IGxlZ2FjeS10cnVuaworMTIzOTAgZGRiODNiMjUyMjZlYjcwM2JmMDAwMGNjMmIzMjk0YzBlYWQ0YTAwMiBsZWdhY3ktdHJ1bmsKKzEyMzkxIDlmMTNkNzM4MGJmODk4MzMyMTk0YmVmMjIyZWE3YzQyOTNiYjMyYTEgbGVnYWN5LXRydW5rCisxMjM5MiAyOTFjMmQwYTk2ODNjNGM4ZTRiODk3YTE5M2ViN2NlZGQ3MjI1NzEwIGxlZ2FjeS10cnVuaworMTIzOTMgNWJkNmRjZjE2ZDQxYWJmYWIwMjk3YjFjZDEzZTA1YzgyYmFkZTNhNCBsZWdhY3ktdHJ1bmsKKzEyMzk0IGIzZmI4NDEwZjZhZTk5MjViOWI3MmYzYzA2YmVjZDNlMDBlMGNlNGMgbGVnYWN5LXRydW5rCisxMjM5NSA3ZTJlNTNlNzQ4Yzg1ODViYmVhOWFkZjM1NTdjMTM0Y2EyODRiODRlIGxlZ2FjeS10cnVuaworMTIzOTYgNGQ4NmI1YTViZjllMjRhODkyMTNiMzBjZmQ5M2M5MzIwNzIyOGYwOSBsZWdhY3ktdHJ1bmsKKzEyMzk3IGEyZDMzN2IyZTIxYmE0YmY0ZGU0MTM3NTYxMTk2MzhiYWVlNDdmMmUgbGVnYWN5LXRydW5rCisxMjM5OCBmODhkMTRhZGVkNzcwNDBhZmRlZWJjZWVmZDI5ZWRmY2Q1M2ViNTM0IGxlZ2FjeS10cnVuaworMTIzOTkgN2JkZWY0YmVkZDVjZTYyODgxMjE1YWFjYWM2MzAyYmE5MDA5NWI5ZiBsZWdhY3ktdHJ1bmsKKzEyNDAwIDkyYWUxMTU1NzNhZjI5YmVmMDQ2ZjY2OTEwY2VkZTU0ZjE4NTJiMjUgbGVnYWN5LXRydW5rCisxMjQwMSA1YWQxYTM1ZjU0MGM2NTkwYmUyMmU5MDA4YTkxMTA2NTExMzgxM2E5IGxlZ2FjeS10cnVuaworMTI0MDIgYmFjOTY1NTUyZjdlNmM0ZGY5NGUzNjIxNDgxZGRhMmI0OWQzYTZlNSBsZWdhY3ktdHJ1bmsKKzEyNDAzIDY5NTExM2M2NTBiYjU5NjJiYTI0N2VlM2IxZmEzNDAyMzc5M2IyNDYgbGVnYWN5LXRydW5rCisxMjQwNCA3YWE1MTUzMjAwNmE5ZTMzOGNkMTY5OWVkNmZiZGE5ODk1ZDViYTI1IGxlZ2FjeS10cnVuaworMTI0MDUgMWM0Njk3MDgwZDA3MTlhZDBlZDRkNGY4NDdkZjViNmJlNTI3Y2YxOCBsZWdhY3ktdHJ1bmsKKzEyNDA2IGQ5NWFmZTg3ZGI0ZGNhYjQyNDBjMjNkZTRjMjg3NmYzMzAxZWMzOTMgbGVnYWN5LXRydW5rCisxMjQwNyA2Y2YwMWVhYjA1YTMyYWFiYzA5ZWQyM2NmMTE5Zjk4MmIyZDU2YWY1IGxlZ2FjeS10cnVuaworMTI0MDggNzgwNTljZjA2N2RlZmJhMGVlZTBhNWJiZTEwOTJjNjIwNDZhYTQ1YiBsZWdhY3ktdHJ1bmsKKzEyNDA5IDExNDE0ZjAyM2FkMGExMzMzMTI0YjZjNTk1YmJiMWFhOWIzMjAzNzEgbGVnYWN5LXRydW5rCisxMjQxMCBhOGEwNzE5OTZhNzNkOTdmYjMwOGFhNDdiODFjMGQ5NDU5MjJjOWYzIGxlZ2FjeS10cnVuaworMTI0MTEgMzdjM2FmZmIwNWJhMjNlZjY4OTAwN2RkOWU2OTk5MGUwYjkwYzg5YSBsZWdhY3ktdHJ1bmsKKzEyNDEyIDE4YzA2ZDM5Y2UyYzJhODdjMTVjZDk1MjA5OTdkYzZlNDRmODJjMmMgbGVnYWN5LXRydW5rCisxMjQxMyAyMGQ5OGNhM2QzMmZhYmFjMGZjZjNiM2I0ZjhhNjc3YTEyNWZmMDI5IGxlZ2FjeS10cnVuaworMTI0MTQgOTAzNDRjMjYxZjI0NTBmNTdmYjBmMGFlMDJmYjAyMGUwZDhkYzI3MSBsZWdhY3ktdHJ1bmsKKzEyNDE1IGI3NGY1NWU3ZDIwOGY3MDc1NDBmNDIzNjViZmI1ZmRhOGYyMmNiM2IgbGVnYWN5LXRydW5rCisxMjQxNiA5ZTI1NTVlZGM5NGY0ODg3ZTAzNjVhYzBjMTI3MjU4MGFjZmI2MzE5IGxlZ2FjeS10cnVuaworMTI0MTcgMjQ4NjE2ZDNlZDEyY2RjOWUxYzViZmVjZjM4ZTJmNzJkOTZmODVjNCBsZWdhY3ktdHJ1bmsKKzEyNDE4IDlhN2U3OGU4YmRmYTI5MjIzNzE2NDUxMTlhOGIzMDI2ODg3MjlkODAgbGVnYWN5LXRydW5rCisxMjQxOSAyODY4NTQ3NzFiMTE5MTFmOGE4NTI3MTNiZDA4Mzg3YzEzNDdjMGM2IGxlZ2FjeS10cnVuaworMTI0MjAgMzdhYTg0ZDI3OGM1NTk5ODRmM2JmNjUyMTBiYTY5ZjJjYzk1ZjY4YyBsZWdhY3ktdHJ1bmsKKzEyNDIxIGE3ODEwMDM3MDUxNWNkMTNmYWJlNGMzNTZlNGYwZjg5YTE3ZmZkYzIgbGVnYWN5LXRydW5rCisxMjQyMiA2MzEyNDhjOWM2MmUxNjIxZmY5NWQ0MzYyODljYjQ2Yzg3ZGU1ZWQ5IGxlZ2FjeS10cnVuaworMTI0MjMgMWE3OTlkMWQ0YjVhNmUxOWMzOGVkMTVkZGZkMzg4MTNmZWU2MTI5MCBsZWdhY3ktdHJ1bmsKKzEyNDI0IDZjMTA3NzI4NDAwMWQ2MTFkOTA1NTQ2MDFkMjY2MzYzOGYyYTJjZDkgbGVnYWN5LXRydW5rCisxMjQyNSA3NmJkYWQyM2ZjZGI4YTc1ZWViMjZmZDIyY2E4NjdjNWUyOTQ1OTFiIGxlZ2FjeS10cnVuaworMTI0MjYgNWIxNzdkNTFiYTI3NTgxM2E5MTIzMmNmYmYyYmY4YTFiMjE5OWRiMCBsZWdhY3ktdHJ1bmsKKzEyNDI3IGE1OGQ4ZTQ0Y2UzMmZkNDY3NDA1MDVkYjdiYjI4YjRjOTlkMGFhMGUgbGVnYWN5LXRydW5rCisxMjQyOCAwNDU1NDAyNjc3YThhZGYxYzc4NDMxMTZmYTk3OWZkYTcxNDQ4NTAwIGxlZ2FjeS10cnVuaworMTI0MjkgMzVmNTY4NDgwNzY0YWZmYjM5NmRhNTA2NWE2OTlhYzlmMDIwNzI3MSBsZWdhY3ktdHJ1bmsKKzEyNDMwIDRiZGZlNWQ4MGE2ZjViOTIzYjVkYmZhZTg1NzI4OTdkMTk4YWRmNWIgbGVnYWN5LXRydW5rCisxMjQzMSA1ZjRkMzJiMWE2NTgzZmZiZjNjZGYxOTgyOWYzN2JkMDlmYmYyY2FhIGxlZ2FjeS10cnVuaworMTI0MzIgZjg2N2UxM2RhNTc0Y2U3YmRlYTA0MjRhYWRmNjRhNzIzOGQ4N2NjMSBsZWdhY3ktdHJ1bmsKKzEyNDMzIDAwZmMxOGFjNmFlYjhlN2YzMjQ3NjE0YWQ2YmVhYjIxY2E5ZGE4OTIgbGVnYWN5LXRydW5rCisxMjQzNCAxZGUzZGJiMjZjMmZhMmVhYWUyZjM3MWRmZTExOTcxMjZjY2NlYjU2IGxlZ2FjeS10cnVuaworMTI0MzUgMTg5ZjFlYzVjNjhmM2RkNjdlMmRhNDhiMjY4ZTM2ZjZmY2VhYTdiZSBsZWdhY3ktdHJ1bmsKKzEyNDM2IDE1ZTk3NjFlNTRkZTFkNTdhYzQ4NjU5NTUzOTI1ZGJhYmE5M2NkMzUgbGVnYWN5LXRydW5rCisxMjQzNyBhZDc0OWZiMGJkNGJkNDViYTk0ODk3MWEyNTRhMDM2N2E0YzVjZDIzIGxlZ2FjeS10cnVuaworMTI0MzggYTY0YTYxNWJiNzU2MzMwZjdiOWQ1YTNiZjBiMDQ1Zjc3MTg5OWUxMSBsZWdhY3ktdHJ1bmsKKzEyNDM5IGM1OTJjMTc3MWRmYjVlNjNmZTdlOWY0YTlkYTI1MGI1NzRiMTBkMDYgbGVnYWN5LXRydW5rCisxMjQ0MCAzMzc4NDNjNmExODM2OWQ1NzUwYmViNTA5MDYwYzRlMzcwMTM1OWQ4IGxlZ2FjeS10cnVuaworMTI0NDEgZmFmMzUxZTMxNTcxZDg4YWU3NjkwMDlmOWY3MGExYTlmNjVlM2Q3ZCBsZWdhY3ktdHJ1bmsKKzEyNDQyIDkzYjllYWZlMWYxZGU4MmExYTIwNzFmODg5MGRkNWE4MjI2OWY1YjUgbGVnYWN5LXRydW5rCisxMjQ0MyAwNmM3ZmZmNTI3NGE3YmZkM2M5YzY2Yzg5MTIwMTIzMzE2NjI4MjQxIGxlZ2FjeS10cnVuaworMTI0NDQgNjI2MzI3YTc4YThlZTM2YTlhNGViMzU4ZmQ0ODA2NDdlNTcwN2Y2OCBsZWdhY3ktdHJ1bmsKKzEyNDQ1IDRkYTFmYWYyOTdhYjhmYTM3NDY0NjFhZTU1NTMwNjI5NGVmYmU4YzUgbGVnYWN5LXRydW5rCisxMjQ0NiAzOTZhMzhlYTliODRmYWNlYjI2YWQ1MzdkNjA2NzZiNmQ3MWQxZjE5IGxlZ2FjeS10cnVuaworMTI0NDcgYzM5YzRiYzQ1ZDM5MWUyZGYxZGI4YTFjZjUxOWRkMzlkZmVjYzNlNSBsZWdhY3ktdHJ1bmsKKzEyNDQ4IGM4NzY2MmVmM2YxZGI1OGEyMzQzY2E0Mzk2NWM5ZDA4YWUwYmFlMTcgbGVnYWN5LXRydW5rCisxMjQ0OSA3Yzk5NmYzNDA0NzIwYTIzNzBjMjM4M2M1YWI0ZTdlM2YzNTgxM2VmIGxlZ2FjeS10cnVuaworMTI0NTAgNzUzOTg1OWU5ODVhMTRhNGFjN2E0NGIwY2M3MTdmZWUyN2NiNTlkOCBsZWdhY3ktdHJ1bmsKKzEyNDUxIDk4ZTM3MzQ3Mzc4YjAwNmNlNmZjYzQ5MjA4ZTIyNGFjYzhjM2MzMTEgbGVnYWN5LXRydW5rCisxMjQ1MiBhZTgzZjYxZDNjZDdlNzE5OWZkNTFhMzQ0YjVkYTE5OGVhZTFmMGUwIGxlZ2FjeS10cnVuaworMTI0NTMgNDA0NjNkNTE0ZjNlYTRiYTQ4YTJjMjY4NDU1MzAxZTFhMGVlZWJkNCBsZWdhY3ktdHJ1bmsKKzEyNDU0IGU1ZDBkZjgyNGJmMzgyNzQ4YzFlMGRiYzRmYzM2YTA1ODY2NWQxOWQgbGVnYWN5LXRydW5rCisxMjQ1NSBjYTI3NDUyNzExMTE2NDAxYzAyMTUyODBhZTRjZDljMDk3OTc3MTdiIGxlZ2FjeS10cnVuaworMTI0NTYgYzQwNGE2YjBjZGIxZTI3YTU3YTAwYzBlMzRlNmY1MWQxYzE1ZGEwNCBsZWdhY3ktdHJ1bmsKKzEyNDU3IDlhODQyYjgxZDljM2U5NGRlNzFhNDFmZGVkYTE1MWUwNWNhZmUzYmIgbGVnYWN5LXRydW5rCisxMjQ1OCA3MTZkYzFkMWRiZmY4OTAxYzI1OTEwMWE4OGFmMGJiOTJlYWFjYjRkIGxlZ2FjeS10cnVuaworMTI0NTkgNTdiY2M2ZWM2MzhmNmViOWNlZDkxMjIyOGI1OTE0MmViOTlmZjY1NiBsZWdhY3ktdHJ1bmsKKzEyNDYwIDI3NTBlMWRlNjgyOWFkMTc5YmUyNDdmMWNiMDlhYzE3ODNjZWIxNDEgbGVnYWN5LXRydW5rCisxMjQ2MSA1NzJlMTMxYWUzNjkwZmI1ZDIwNDc5MDQxYjhkY2U4NGM2ODgyODg5IGxlZ2FjeS10cnVuaworMTI0NjIgOTJhMjVkNTFmZjI2Y2UyNTE1ZDQwZTFmOGVkZWY5YmRmN2M5MmMxMCBsZWdhY3ktdHJ1bmsKKzEyNDYzIDg3OWUzNDkxYjY2MWI4ZTVhNWJlYmE4NjIzYTdlNTY5MTlkZTQyNmEgbGVnYWN5LXRydW5rCisxMjQ2NCA4OTQ5NjBmYTkwYmM3NTU5YjdhNWU3OTMyZWFmMzU4YWVmNGZlNDgzIGxlZ2FjeS10cnVuaworMTI0NjUgMGQyNzkxYzcyMDZkYWZiYWM5YWU4YWQ5YzU2ODdlYzFmYTM5ODdjZSBsZWdhY3ktdHJ1bmsKKzEyNDY2IGQ0NGNiODdlNTAwZGJiYzdhMTg5NWIxMzA4Y2EyZGJhNmNlZmNkYmIgbGVnYWN5LXRydW5rCisxMjQ2NyBjMTA5MWU4MmU1YWFiMDZkZDRkMjU0NzJhMTliNTU4NzI3ZmFmM2M0IGxlZ2FjeS10cnVuaworMTI0NjggMDdkMzMzNDg1YTVlMDhiMjRmNzA3NDlkMzIzYzVhY2FjYTQ1NDY3MSBsZWdhY3ktdHJ1bmsKKzEyNDY5IDQ0MTQ2YzA2ZTdlZDNjNzg3ZWIwMTFjZTQ3ODI3YWJjMDEyODg1ZWQgbGVnYWN5LXRydW5rCisxMjQ3MCA0ODU1MDJjNDJkODlhNWQ2OGU0ZmZhOTBiMGJjNTc4OGVhM2VmMmNjIGxlZ2FjeS10cnVuaworMTI0NzEgZWU4NGY0NDVlNmQ3YTFjZjhmOGU2OWM1ODhlZGFiOWUwMTY1Y2ZjMyBsZWdhY3ktdHJ1bmsKKzEyNDcyIDhlZmEzN2E3NzBjNjQ3YjY1ODVlNmZkYTMzNTkwMTU0YzJmN2NmZjMgbGVnYWN5LXRydW5rCisxMjQ3MyAwMzkwYWY2YWNmN2ZhOTg5NWNkYmZkODQ2NDFhYWI2Y2FmMDY4MGZhIGxlZ2FjeS10cnVuaworMTI0NzQgMTlmZGFmMzY3ZDQ1YjZkZDI0MWYxMWQ5ZWRhMTExY2U5NmE2N2NjMSBsZWdhY3ktdHJ1bmsKKzEyNDc1IDRlYzNiM2NiMDdjOGExZWEwMjUyZDcxNTU2ZTFiZmJlN2MyZWUzNjEgbGVnYWN5LXRydW5rCisxMjQ3NiA2MmZhMDNhMzMzYWFmZWRjZTcyYzhlZTllMzdiOWMwZjZhMjMzZTUxIGxlZ2FjeS10cnVuaworMTI0NzcgZjFhNTIwZDI2MzFhOGVjZGJkMmMyNDllYzMwN2YxZDE2Y2FlZjEwNiBsZWdhY3ktdHJ1bmsKKzEyNDc4IDRlMmVmZjk2OGNmNWM2NzFkMTJhNWNmZTQ1ZGM5Y2M4MTQzNmNjYWQgbGVnYWN5LXRydW5rCisxMjQ3OSBmOGZjOTFiMDE3YTE0MzE1YWZiZGU1Y2YxNDY0MzY5MzQwZmMwZTM4IGxlZ2FjeS10cnVuaworMTI0ODAgZjZiMmYyMGRhNTgxNjdkYzg2NjYxNmU2YjcyMzAyODEzZDEzYWU3OSBsZWdhY3ktdHJ1bmsKKzEyNDgxIDQ4OWVmN2Y2NDA0MTBiMmNlN2YzZTk4ZjhjOWVjNjUwMGFkMjkzZTggbGVnYWN5LXRydW5rCisxMjQ4MiBkY2JlNzJhMGIzOTI2Yjk0MmU2YWNhOGEyYTVjZDJhYTI3ZDI4ODg0IGxlZ2FjeS10cnVuaworMTI0ODMgNzU5MTIxZTNkOWI2ZDY3Mjk1ZDg4YzE3ZGFhMDljMWRlNzUyOGRlYiBsZWdhY3ktdHJ1bmsKKzEyNDg0IGFkZmFjYmNiZDkzNjFjOTI5ZTJkZmU0NDYzNTkyNjVjYmE5MTNkNzMgbGVnYWN5LXRydW5rCisxMjQ4NSBjODY2ZjE2NjMzMWJiNjY1NWY3Zjc0YTc2YjNiZmRkNDFhOTk4MWIzIGxlZ2FjeS10cnVuaworMTI0ODYgNGFmMzhhNDVkMjljOGM5MjBhODZiZGU5YmQ2MWYwMzFlMzVmOGQ2YyBsZWdhY3ktdHJ1bmsKKzEyNDg3IGE2Y2I4OGI1ODE2NTIzZjM5MzYxNTIxYjJmZmZjOWE0NmU5YThjZTggbGVnYWN5LXRydW5rCisxMjQ4OCBkNGI4ZGRkOWE0ZmQwZmQ3ZjIwNDIyYTY3ZWMzZDFjYjhlM2FkNDI3IGxlZ2FjeS10cnVuaworMTI0ODkgYjdiY2MyY2RhMWIzYjI2MTgyZjI4YWVkOTAwNWIxMTM3ODNmNzc2NCBsZWdhY3ktdHJ1bmsKKzEyNDkwIGNmYmNhYjgxNTBkYTkxNzQzMDQ3YmEyYWVhNmE3YTU3MTNiZTI1MmQgbGVnYWN5LXRydW5rCisxMjQ5MSA3OGZmMjAzZWFkMjQ1NGQ0ZjBmNjZkY2I0YzZmZWFkMjU3N2Q0NmM0IGxlZ2FjeS10cnVuaworMTI0OTIgMTI0ZWY2OTRjMjg0NDNlNDIwNmYxNDg4OWM0YWQyMWZmNjM5NWY3NyBsZWdhY3ktdHJ1bmsKKzEyNDkzIGRkYmJlZDhjYjgzMGVlNDlkYWM4N2M1MmVhOWY3MTZhMDlhZjEyNDMgbGVnYWN5LXRydW5rCisxMjQ5NCAwMDljOWJhOWY2NThiMjU5YzdkY2NkZTQwZDg2ZDZhYjEyODZkOTgyIGxlZ2FjeS10cnVuaworMTI0OTUgMTZiZDBmZGUwOWFlY2I3MjM2N2Y1NWNlN2U2OGQ1MjEwNjQyOGFlNyBsZWdhY3ktdHJ1bmsKKzEyNDk2IGE3OGQzMDU2YWI2MTA0YjM1MDJmMmQzNTlkNGNjMjM5NDRkNTBhY2MgbGVnYWN5LXRydW5rCisxMjQ5NyBiZGRlOGZiYWVhNThjN2RjZTJmNmViNmE1N2RmNzNhZGI1YWE3OGJiIGxlZ2FjeS10cnVuaworMTI0OTggZWVkMGNhY2Y0YzY0ZDhmZjFlY2EzN2YxNWYzNWVlN2YzYzI0NDJmMiBsZWdhY3ktdHJ1bmsKKzEyNDk5IDhjNmU3MDViNmI5NzFkNDIxMjZiYTMwMDYxODIwNjI4MTNmNWVmNzcgbGVnYWN5LXRydW5rCisxMjUwMCBhMWJjZjNmMjlmNjZkZjVkNDYzMzI4Njg0MWJjNTk0ZmE3NWM2YTI4IGxlZ2FjeS10cnVuaworMTI1MDEgYzBkYWZmZTQwMDM0Njg5ZmNkMjIyZjhlMmM3YTU0NDJhOTE3MjViZiBsZWdhY3ktdHJ1bmsKKzEyNTAyIDQ0MTUwMDAxOWQ1MGFjYzI1YzVmZWI0ZDE1MTZmZGVmNDc4MzBkZWQgbGVnYWN5LXRydW5rCisxMjUwMyAyYjIzOGQxOWFlODhhN2NiYjM3M2M2NTA1NzU0YzBmZDFhMjBlNzMxIGxlZ2FjeS10cnVuaworMTI1MDQgNGFiNWU5ZjgzOWQ5NzQ2ZDlmMmZmOTUzMDg1MWZjN2FlZTkxYjZkZiBsZWdhY3ktdHJ1bmsKKzEyNTA1IDBhNTZlNTA4MjY4MGI5ZjI1NDEwYzE2OWMzYmE3MDdhNWVmYTU2OTEgbGVnYWN5LXRydW5rCisxMjUwNiAzYTQyMDcxN2JjOGE0MmU5NTc1MDFmMDUwMDBiM2IxOTI5ZjdmZmEzIGxlZ2FjeS10cnVuaworMTI1MDcgNzdhOTQ1MzE1MjllYzIxMmE3NGU4YmE4NzQ1MmU2Nzk1ZjU1ZWI3YiBsZWdhY3ktdHJ1bmsKKzEyNTA4IGZlMGI1MjJlNDZjYjNjODYxMzM0OTNiNDJkMzY1ZGM5Mjg2MGU5MmMgbGVnYWN5LXRydW5rCisxMjUwOSBlZjVjZjFhNGU1MmE5YzQ4NTQwYzlmZDM5YzM5MmVkNzc1MzZkMGIyIGxlZ2FjeS10cnVuaworMTI1MTAgNTVmOGM3MDFjOWRhZDExYTU0MWM3MGIwMDM2MTA3MWQ0ZDk0YjVhYSBsZWdhY3ktdHJ1bmsKKzEyNTExIGFiNmRkNzBmMjUwNzZmNjg5MjRhODk5Y2QwZmY3NDhiOTIzOWMwYTEgbGVnYWN5LXRydW5rCisxMjUxMiA0NjcxYWUxMDM1YjM4OTU5OTA5ODM3YWJjNmQ4ZTM2OTQ1OWY0NzJkIGxlZ2FjeS10cnVuaworMTI1MTMgNDJiMjI4ZDc4YmVhZDEyZDMzZTdkMDMwYzRiMzY4NjM3OWU4YzIxMiBsZWdhY3ktdHJ1bmsKKzEyNTE0IDRhMjVkZDg1ZGY2MjJhNWM4NjBkYjk4NzNkNzg2NTQ2NzY1YzMwYWIgbGVnYWN5LXRydW5rCisxMjUxNSA5OGZhNTM1YjlhZjFlZjYwYWYxZmU4ZTc5YTBkYzg4Y2EzMDRmMGNlIGxlZ2FjeS10cnVuaworMTI1MTYgNjM3ZWI5NjFjMTFiZjUyNmI4YzM0MDJlZTc5NzM1YjkxYzUyZTEzOCBsZWdhY3ktdHJ1bmsKKzEyNTE3IDJhMGNmOTY3NzE5Mzk4MzM0Y2ZkZWUyZWU2Njc4MDNjNjRjNGI2NTYgbGVnYWN5LXRydW5rCisxMjUxOCBjNjkxM2M3MzI2ZjA5NmMwMjMwNDJmMTU1MDM1MDMzZDgwM2I2NjZkIGxlZ2FjeS10cnVuaworMTI1MTkgZjI0NTdkNjk3YTJhMjhlMTNlOTM5Yjk2NWVmZDIwNDc5OWU0NzU2ZiBsZWdhY3ktdHJ1bmsKKzEyNTIwIGQ3OTc5ZjRlZDJiNjE2MzU2NWVlYjI4NDc3MzRiZjI0NzNlZTJlNmQgbGVnYWN5LXRydW5rCisxMjUyMSA4MzI3NjY4Y2ZkMTcxNGQxMmRkZmQ4OTk2MTE1ZDkyMDgxMDUzYzM1IGxlZ2FjeS10cnVuaworMTI1MjIgOTQxMjVhMTM0M2Q4MThkZGRiYTAyODZkOGNmNzg3NjUwNmI0MTNmNCBsZWdhY3ktdHJ1bmsKKzEyNTIzIDIxODNmNTA2YTA4ZTFjOGJlNjZiNWVmNmMwOTkzZjZkNDIzMjE5ZTkgbGVnYWN5LXRydW5rCisxMjUyNCAyODE5NGY1MWY3ZmU1NGM0MWNmN2JkMDc3NTI5ZmM1MjAzZDVmMDIxIGxlZ2FjeS10cnVuaworMTI1MjUgODlkY2VhNjNjNDZiZWEwMmI1YzM1ODAyNDdkMzNmNGE5NWM1ZmFhZSBsZWdhY3ktdHJ1bmsKKzEyNTI2IGNhZjJjNjVhNmJjZjI1Zjk2NTBjMzUzMDFjZThlMDYwMjk0YmUxMzggbGVnYWN5LXRydW5rCisxMjUyNyBmNTcyYWUzNmQ1YmFjOWI0NTZhMzlkN2FkYTdlYmNkYjA1NmU2ODk3IGxlZ2FjeS10cnVuaworMTI1MjggNjIwNjg1ZTRjNDc3ZTIwN2E5ZTE4Nzk0N2Y1NjJlMzMxNDdjYmMwNyBsZWdhY3ktdHJ1bmsKKzEyNTI5IDA4MGJkNDZmMzg0ODc5OWNkZjUwMTBlOTdkODI0YjI0NmIyYzAxOWUgbGVnYWN5LXRydW5rCisxMjUzMCAxNjdhZGYzMTc4NmQ3MzQ2MmE3Y2M2ZmFlN2I0NmM2NWYwZTY3ODBlIGxlZ2FjeS10cnVuaworMTI1MzEgMDM0YjQyYmE2OGE2OTkzYThhMWYzYWU0ZjE1NzY3NWYwMGFkYjlhMyBsZWdhY3ktdHJ1bmsKKzEyNTMyIDc0ZDBkMmYzY2IxZGJhOGZjMWE4MTYwY2E3ODA1ZTI5YzZiMzkzYjkgbGVnYWN5LXRydW5rCisxMjUzMyBkZTU2OGVhMGQwNDBlYjYzMGRlZGM1OTJlNjU2ODdhNjg1YTUzMDZiIGxlZ2FjeS10cnVuaworMTI1MzQgMjBlOGEzMzQ0YTBmZjYwY2Q4YzRjNmQxMzU1ZmU5Y2E3OTc4NTYyYSBsZWdhY3ktdHJ1bmsKKzEyNTM1IDEwNTFlZjk5NDMxZTVmZWRjYWUxYzA0ZTc5ZTkxNWVhOTczMDM5ODMgbGVnYWN5LXRydW5rCisxMjUzNiBjOWIwNzAwNzRjODVkM2JjZjJiMzExMGQyZWM0NTliYjMxNzJjODA1IGxlZ2FjeS10cnVuaworMTI1MzcgYjcyYThjNDhmMmQwMDQzZjNmZjA1ODA1ODM3YmEyMDY1ODcwZWMzZiBsZWdhY3ktdHJ1bmsKKzEyNTM4IGY1ZGYyMmZkYWRhODg1OWI4MDFkNjBhZjVhZGU5OGUwMjE2NzVlZmMgbGVnYWN5LXRydW5rCisxMjUzOSBmMTMyZWNmZGIyODU1Nzc3ZjYwNDJjZDUxYTVhZDQ3YWQ3NTVmZTNmIGxlZ2FjeS10cnVuaworMTI1NDAgYmEwM2U2OGRmMGZkNGYwOTBkZDcwNmUxZDg2Mzg0NGIyOGFkNWRiMCBsZWdhY3ktdHJ1bmsKKzEyNTQxIDZkZmY3Njk2ZTM1ODExMmUyYTUwOGRlZjE1ZTUyYTM3YjRjYTVlNjIgbGVnYWN5LXRydW5rCisxMjU0MiAzYWQyYjJlMzFmNTMwOGVhM2ZiMjIzZDRiNWUzNjNlNmEzNDNiMTI2IGxlZ2FjeS10cnVuaworMTI1NDMgMzI2NTJmNjk5NmUzNzQzZTE4YzZkYjY0Zjg0YWJkOWI3ZDllYmIyZSBsZWdhY3ktdHJ1bmsKKzEyNTQ0IGYyYzA3MmIwNTQ2NjU0ZDYyMTRhMDNiNDg1NDhkNTA4YjAyNmZjNzIgbGVnYWN5LXRydW5rCisxMjU0NSAwZGM1MGQ0M2ZiODQ2MzRkZDk3OGVkM2I5ZTg3MTBlN2QyZjEwNTkyIGxlZ2FjeS10cnVuaworMTI1NDYgOGNmNjZiMWQ0MTU1ZWNkMWU5MGMzOTE5MWYzYmU5YjQ5NTRlYWNmMSBsZWdhY3ktdHJ1bmsKKzEyNTQ3IGVlOWE4ZmUwY2ZjYTVmMTEwZDc4Yjg5ZmY0ODM2ODY1MTBlZDNhNmUgbGVnYWN5LXRydW5rCisxMjU0OCBjMDczOWY2NDFiZDFkNTgxYTIyOTIyMjAyNWU0ZTliZWZjN2FmYjdiIGxlZ2FjeS10cnVuaworMTI1NDkgYTBiMDY4OTFkMjg2MDA2NmNlYzk3ZjQ0NmI4NTYzODVkMjE2NDgwYiBsZWdhY3ktdHJ1bmsKKzEyNTUwIDdiODhjMTJiODcwMWNkZTY2MzE1MzQ0ZDUyNjZmZTgwMGQxOTdlZTUgbGVnYWN5LXRydW5rCisxMjU1MSBkY2UxMDRlMWE3M2JiZGNjYWU2NGFhZWU4MTVjYjAxNTE2OTYxMWVlIGxlZ2FjeS10cnVuaworMTI1NTIgNjY4NThmZGY0NjdlYmExYzUyZDYwMzIzZjcxMmRhNDk4ZTg4Nzc1YiBsZWdhY3ktdHJ1bmsKKzEyNTUzIGYwNzIwM2NjMjc0MGE5MTk3MTI3ODk4ZjUwY2JjZDdmNTY2MmVjMDIgbGVnYWN5LXRydW5rCisxMjU1NCA3OTRhMjFhNWFkMzVlMTkxYWM5NmExMjFmZmI0NGQyMjk4NzU0YjQxIGxlZ2FjeS10cnVuaworMTI1NTUgZjMzZWQ5ZTJhNjA3ZmE0YzljZDU4MmE1OTYzMGY3YThkYmU1YTBhNSBsZWdhY3ktdHJ1bmsKKzEyNTU2IDI3Y2M3YTMxNDUwMjY2MGE3NzIzYTUwYjkxNzA5ODVjZTI5ZDhlMzYgbGVnYWN5LXRydW5rCisxMjU1NyA4MGUwYWFiMTcwNWViZDU0MjAyYWMxMzQwMzQ4OTg5ZDg0ZGY2MDI5IGxlZ2FjeS10cnVuaworMTI1NTggYjgyYTYxYTg4NGNmMjg3NjA3YTdlNzJjZTQ2Y2NkZGY4ZWMwZWJkMSBsZWdhY3ktdHJ1bmsKKzEyNTU5IDA3NWY4NzFkODBiNTVlZWFhNTQ5Mzk3ZGZkOWZlMThlMWIzZjg3MTggbGVnYWN5LXRydW5rCisxMjU2MCBlZTYyNTYwODEzNjZkMjgxNWM4YWUxYjM2MzM0OGExMzUzYzUyYjIyIGxlZ2FjeS10cnVuaworMTI1NjEgYzg4YWE5NTkzYTA4ZWQxMTAzMGQ2ZjYyN2UyOGU3OTk4NTBkYTAzMSBsZWdhY3ktdHJ1bmsKKzEyNTYyIDAxNWNiNjIzMWYzZjhlNjZlY2ExZGYwOTQ2ZmQ4YTY1YWY1ZmQ3NmUgbGVnYWN5LXRydW5rCisxMjU2MyBkZGRhNTg1NGUzZWFkNTIyMGQ2ZmEwYjhmNTY3OGQyYTA4MjM0ZmM0IGxlZ2FjeS10cnVuaworMTI1NjQgZDVlNjRhNjE2MzIwMDNjNmM2YTdkZjZjZTgyZmUzNzdjNjdmZDgyZCBsZWdhY3ktdHJ1bmsKKzEyNTY1IDhmZmU0NTA0MjhiMWIzMzkwMTA1YzBjYzk3OGJjMDhiYjlhZTQ5MzUgbGVnYWN5LXRydW5rCisxMjU2NiBkOWI3YTIwODA5NzFiYTMwOWViMGRlN2ZkYzU0OWVjM2RhNTU2YTJhIGxlZ2FjeS10cnVuaworMTI1NjcgNmFiZDg0YWFiMDhhOGU1MjkxYTAyYjI4YjAyMzk4YjE0ZWNmYWMxOSBsZWdhY3ktdHJ1bmsKKzEyNTY4IGQ3ZjQzNGQ3ODRiZjllNjg5MmNkZmU1YzZiY2U5YmFmZDM1M2MyYjAgbGVnYWN5LXRydW5rCisxMjU2OSA3MTAyMjg5MDQyZDVlOGU0NDkwYzRhMjY2MzVmY2U2Mzk4MmU4YTM1IGxlZ2FjeS10cnVuaworMTI1NzAgNmQ2ZjQyN2FiNmVjYjE4MzYzYmY2MmNkYTg0NWIxYWQwMTRhMjM2OSBsZWdhY3ktdHJ1bmsKKzEyNTcxIDVlMDE2NDVlZTQxYjhjMjBjZDZmMDAxMzU5YWRmNjJjNDZmNmY0M2IgbGVnYWN5LXRydW5rCisxMjU3MiAxMzcxNzkxODY5MjdhMDQwYzBlYTgyYWE3M2ZiM2UzMTk2YTg0MGE3IGxlZ2FjeS10cnVuaworMTI1NzMgNjdlZDA1Y2YxNzFkMDhmNTM1YTBhYWEzYmMwZTkzMDg3NDMxOGJhZiBsZWdhY3ktdHJ1bmsKKzEyNTc0IGVjZWJjZDg0ZGYzN2IyYWVmMGUyMjUwNzVlZjkwNzlhMWIyM2E5MjIgbGVnYWN5LXRydW5rCisxMjU3NSAxZTIxZTIyNDUzZGMzYzRjODU4ZDI1ODhkNTk4Mzc3MDFkMTg5Y2ZkIGxlZ2FjeS10cnVuaworMTI1NzYgZDRlOTYzMjUwM2RmZGEzMzA0YmVjYWZiMjUzNWE1ZWM0ODA5MTJkOSBsZWdhY3ktdHJ1bmsKKzEyNTc3IGQ2YmE4ZTVlNTVhZDRjODlhNDg3NjRlN2ZhY2I0MmExNjE0OGE4NGYgbGVnYWN5LXRydW5rCisxMjU3OCBjYmY1NTAzYjMyZDU1OWI2M2IzYzExOWNhOTUxNDk0NzZmZGQwNDIwIGxlZ2FjeS10cnVuaworMTI1NzkgODBiMjE1MjQ5YjE3ZDUxYjI2NTBmOWJhMGU4OGY3NTkzNGJiMWZmOSBsZWdhY3ktdHJ1bmsKKzEyNTgwIGMzZDUwNjc5NDk2N2RmODQxY2MyMWI5ODlmM2NjNmE5MjNiNjk3ZjUgbGVnYWN5LXRydW5rCisxMjU4MSBiYzM2MDJhODNhZDMyOTViMmQ2M2Y4YThiN2NiM2EyZTFmZDVmOGE3IGxlZ2FjeS10cnVuaworMTI1ODIgNmY0MmM4ZmU4NzViN2RlMjI1ODQ3NWYyNDY1YmRjZjFiNjgwNzBhYiBsZWdhY3ktdHJ1bmsKKzEyNTgzIDQ4YWYyYzZiNzQxZTljODBjZDMwY2FhNjRiNzk1MTYxMDczOGI0MjYgbGVnYWN5LXRydW5rCisxMjU4NCBiNTQ1NGRjMjJkY2I4MTFmM2YyMTI3Y2NjMDdlYTVhMmIzMmZjOTVhIGxlZ2FjeS10cnVuaworMTI1ODUgNDg5NGRjZWExMjZiNDA3OWRjNjBlMjA3OWFkNWQ2NTI2Mjg0YzU2MiBsZWdhY3ktdHJ1bmsKKzEyNTg2IDU4MjNiNjE1YzMwMWUzYmI2OWZmOTkxN2Y0MDgwYjYwNDA5YWEzMTMgbGVnYWN5LXRydW5rCisxMjU4NyBkM2U0NGU2MTBlYTE0YjIyN2QwMGYyNTUxZWY3Zjg4YjY3OTIyNWM2IGxlZ2FjeS10cnVuaworMTI1ODggYzcxNDRlN2U4NDk0MjA1MDRmNDIzZjcxZDI5ZDlhZjExMDlhY2ZhNSBsZWdhY3ktdHJ1bmsKKzEyNTg5IDllZmE0MjQ0NWVjOWFmZWVlMzJiOWIwMWNjY2JmM2ExMmNhMmIyYzMgbGVnYWN5LXRydW5rCisxMjU5MCBmNWE1NWQzMjc2MDgzZWJjNTAxYTRjOTdiOTA0NTRiMjU5NWNlNjlhIGxlZ2FjeS10cnVuaworMTI1OTEgMmE5ZWYxZTBmNTQxZDlkZTE4MTUzZGY4MjE0OGY4MWVjYTliNDMxNSBsZWdhY3ktdHJ1bmsKKzEyNTkyIGFhMDMzNjUyN2M0ZTk1NjMzOTRkYjA0YTIwYThmZDQyZDQ2MWU3YmYgbGVnYWN5LXRydW5rCisxMjU5MyA5NjU4NmRiMzc5ZmJhOWQ5ODRjNjM2ODY0YjQwZjdiNDRhOTg5ODdmIGxlZ2FjeS10cnVuaworMTI1OTQgNTc0MDc1ZTlhMjVmNGRiN2I1NDYxOTU3ZjVhM2Q3YzZmYTYwOWZiZSBsZWdhY3ktdHJ1bmsKKzEyNTk1IGQ4YzQzNzhlYjg3ZGFiZTk0ODMzNzUyMDU1YmIwMTY3YmIxYWVmMWEgbGVnYWN5LXRydW5rCisxMjU5NiAxZDI4YzdlMTY2MzY1NzMxNWQ4YmExZTEyYjNkZDgxZjIzZmVhMTc0IGxlZ2FjeS10cnVuaworMTI1OTcgN2VhZDRhMDQ0MjdlODg0MDJjNzU1NmUzYmY0ZTllMjYxYTVlNTIzYSBsZWdhY3ktdHJ1bmsKKzEyNTk4IDNhZTAzYjliNjVlZGMyYTA5ZDhmYjRkZGNiZGQ4MDQ2NTU4YTkxNjMgbGVnYWN5LXRydW5rCisxMjU5OSBmNWYxYjVlOTgxNGE0OGVhMmVjY2IxYzE0MTk3NWNiZDA0YmJiYTNmIGxlZ2FjeS10cnVuaworMTI2MDAgM2Y3ZGMzZGUwNjE3MGQ0OThjMTZjYjAwMWI1MDc1NmFlYjYxMmE0NSBsZWdhY3ktdHJ1bmsKKzEyNjAxIDlhM2E0NjkyOGRiZmViOGZiMmMzOWVmY2FiMmMyOTkyYmZlMzg5ODMgbGVnYWN5LXRydW5rCisxMjYwMiA5MTg0ODYyYmQ4ZDFlOTJkYzIzZjdhNmYwYWY2NzM5YmRlMjBmNzM0IGxlZ2FjeS10cnVuaworMTI2MDMgNmIyOGI1ZjE5N2NmYjA0ODJkMDRlMzA4MTVhY2E0NDFmNWIwNjVjZSBsZWdhY3ktdHJ1bmsKKzEyNjA0IGM3ZGZkNjE5MzUwYmM3ZjRhOWMzNzg5YmM2NGE3MDdmMGI4YWVmZDQgbGVnYWN5LXRydW5rCisxMjYwNSBlZmYwOGJkODE2NWQ4MmFmZjJkNzMzOTc2NTQ0MTA1YmE0OTg4YTMxIGxlZ2FjeS10cnVuaworMTI2MDYgNThlN2NjNWEzODQxMzAwY2E1YWIxMjZhMGY0ZDRmZmY0ODQ4MzMxMSBsZWdhY3ktdHJ1bmsKKzEyNjA3IGU2YmJhMDJmZjYyNDY4NGJiMDc2Y2Y3MWQ2ZjhhNTRlODkxOGQ2YWEgbGVnYWN5LXRydW5rCisxMjYwOCAxNmFhNzM1ODhkOTNiNjhmNTAyMDNkMjFhOGFkOTY4NzViMDdmZDQxIGxlZ2FjeS10cnVuaworMTI2MDkgNjk3ZTBjOWQwOTQwZWM5NTNjMDM0OGU4YmQ5YWU4YTA5OTMzOWNiYSBsZWdhY3ktdHJ1bmsKKzEyNjEwIDUyZDU3Y2MwM2Y0MjllODJlNDdlYTI1Yjc3YzA4ZjhlYTIxZTc2NWYgbGVnYWN5LXRydW5rCisxMjYxMSAzZDU4N2U2NTNmMmQ2NThkOThlMTE2MTc4NDhjMDkwOTFlN2NhZjlhIGxlZ2FjeS10cnVuaworMTI2MTIgMzFjMTEyNTk0YWI2MzdhZThiNGMyZjlhYmJmYWQwZmM2YzliODY3NSBsZWdhY3ktdHJ1bmsKKzEyNjEzIDNmOTM4NTg3ZjJhM2YwMmEwOWVlNzBjZGUwM2E2ZGE1NzU3ZDUzMzUgbGVnYWN5LXRydW5rCisxMjYxNCBhYmY0OTMwNjQ3ZTI4MjJiNzgwZjdkNGMwNjU4Mjk0ZjdjMTRlODY5IGxlZ2FjeS10cnVuaworMTI2MTUgZTlmNTk4NWI2ZWE0NjRmODFjYWQzYjI0OTNhMTVkZWNmNDMwNmE1NSBsZWdhY3ktdHJ1bmsKKzEyNjE2IDUwOGE2MzlkOGZlYjM1YWY2MjNkNTM1M2IzM2VhZjY0MDc1NWQ1NTggbGVnYWN5LXRydW5rCisxMjYxNyBhOTk4ODVhZjM5Zjg4YzRlZThlNTExMzMyZTkyYzA4N2YzNzczYjJjIGxlZ2FjeS10cnVuaworMTI2MTggNDllN2UyMTg0OWIzY2M1MWZkYjY1YzVhNDFlODE2MmI1NzkzYTM2NSBsZWdhY3ktdHJ1bmsKKzEyNjE5IDMxNDVkZWY1ODNlMmNhMTRlMzk5YTljNzI0ZjQwNmJiMWVkOWQwOTkgbGVnYWN5LXRydW5rCisxMjYyMCBhOWZjNzM5OGNlN2JiZjdmNjY3ZmRmZjJmMDMyMTRlZDhhMmUxOTVlIGxlZ2FjeS10cnVuaworMTI2MjEgYTYzYzljM2U5ZWNjMDFkNGY3NTM2YmUyMmMzNjU5YWQ5ZWI5Nzg3NCBsZWdhY3ktdHJ1bmsKKzEyNjIyIDViMTU2NDJlN2JkZjRhMjhkNzc3NzhlODQ5OTFiZmMxZmU5ZmRmNjggbGVnYWN5LXRydW5rCisxMjYyMyBiN2Q4MTI1YzI0MTdkODdkYzNjYjA0Y2JkOGJjNzNjNWNhNzAyYWE4IGxlZ2FjeS10cnVuaworMTI2MjQgY2JiM2IyYzU1NWQ3YTcwYTE2OTY0MTJjODc5MTBiYTE2NWQ2Yzg1YyBsZWdhY3ktdHJ1bmsKKzEyNjI1IGJjMjg3YzZjZmEyMzBmMDU2NmUwNGY2NzNkNGJiMTBjMjdiZWM1NTAgbGVnYWN5LXRydW5rCisxMjYyNiBmYjk2NjU2MmRiMGU2MWU2MTFlY2EyNjY4MTNlMDdhNmNiN2NhNDYwIGxlZ2FjeS10cnVuaworMTI2MjcgNjQ3MjhhNTFjYjU1MWU4NmI0M2NlNjE0MDE4YmYzMDM4M2Y3ZDg5YyBsZWdhY3ktdHJ1bmsKKzEyNjI4IDg5ZjY1NTZmMDU5ZWI2ODNjMGYzNGQyMjdhNjdkZjAxNGZmODA1MzcgbGVnYWN5LXRydW5rCisxMjYyOSBiYWZjZDdiNjIzMjc1Yzc1M2UyZDVmOTU1MTI2OTU2Y2FhMmIyNDFlIGxlZ2FjeS10cnVuaworMTI2MzAgMGRkNGZhZmVmZDZjNDhhNGMzODZjODI4ZDZlZGI2Njk0NGM1N2U5NyBsZWdhY3ktdHJ1bmsKKzEyNjMxIDhiNTVjNTE1NjgzZDkyN2NhYzMwYjBiZmM5NGEwMTU5M2YwZTY0MjMgbGVnYWN5LXRydW5rCisxMjYzMiBlNTY5ZjliMGQ5NjlhMTFiNmVjN2QxOWUyZjFlNmY2NTM0Y2FlMTVmIGxlZ2FjeS10cnVuaworMTI2MzMgMWFjMmE4YmI3ZGMxMDg2NGMwOWE5NzBhNTMzMGIxM2QzZWNkNDI3NiBsZWdhY3ktdHJ1bmsKKzEyNjM0IDY0ZTY0ZWYwOGQxYzkxMTU2YWIwNzYzNWYzNjYyNzAxOGRkNGFkYWIgbGVnYWN5LXRydW5rCisxMjYzNSA1NzE4ZTgzMDIwYWU5NWU1M2JiYmQ1MTFiM2E3NmRjZWFhZjliYTkzIGxlZ2FjeS10cnVuaworMTI2MzYgMTM5ZDVmMWE2Zjg5OWQ3Y2IzZjA5ZDdhNWZkNzVhNjhkNDc5YjVkMSBsZWdhY3ktdHJ1bmsKKzEyNjM3IDBjMDdjMGRiZTMyODJjMDRiOWQwNzVlNTUxZGM0YWQ3ZWFmMTVlN2EgbGVnYWN5LXRydW5rCisxMjYzOCA2NTczMTY5OGM2ZWRmNGE3NmFmNmUxNDZlYjI5NGM4M2VkNzgyNTU0IGxlZ2FjeS10cnVuaworMTI2MzkgNDljZjE0MTI0NDVmMzIwOTYwYzAzZjFhNDA0NTdmY2RiMTdhOWFlMCBsZWdhY3ktdHJ1bmsKKzEyNjQwIGIyMTkxNWU2NTg5ZTA0Zjk4ZmMxMzdhYmExY2Q1MTI2YzM2OTQ5OTEgbGVnYWN5LXRydW5rCisxMjY0MSBiYzAzNDc2NDNlY2ZjNmNhYjk1YjgzNTE1NDYwNzExNDkwMDYwYWNlIGxlZ2FjeS10cnVuaworMTI2NDIgOTIzMjM2MTI5NGJiNjkyNDVmZTFjNWNmODgzNjMzMTQ0ZjYxODc2NSBsZWdhY3ktdHJ1bmsKKzEyNjQzIDA5OTAyZTEzMDUzNzM0NGUzY2ViMjFjMTYyNDYxMjcyMzYzMmMzNDkgbGVnYWN5LXRydW5rCisxMjY0NCA1YmRiNzJiMTk1N2UxNmU3YWI4ODczZGMwMjA0ODI0ZmUzYmI1ODE1IGxlZ2FjeS10cnVuaworMTI2NDUgM2M2OThiNTNiZTU5MjExNmZiMzBkMjg3NjY0MDcwNDZiODA4NWFiMiBsZWdhY3ktdHJ1bmsKKzEyNjQ2IGFiZDNmMDY2Yzg3YWM1MzlmNTRiYzJmOTA0MjFkNmJhNjJkYTk4ZmYgbGVnYWN5LXRydW5rCisxMjY0NyA4Mjg0OTI3MDI1YmU2ZmQyYjRhZDc5YzUzMmE1Njk5NWRkNTliZDJlIGxlZ2FjeS10cnVuaworMTI2NDggYmQ0OWY5MWQ1OWIyZDMxYTQyODk0NWM4NDM3ZTE2ZjU5ZDQ2Y2Y2NyBsZWdhY3ktdHJ1bmsKKzEyNjQ5IDNhYzdmMDA2NjM3NWZjODYxZjM0OWIxZDAxMTFlMmRmMDQyNjRkODEgbGVnYWN5LXRydW5rCisxMjY1MCBlNDBiY2Y2YmMxYzhiYTM2MDZmNDE4ZDAzZTI2Nzg0MmQzNzEzOTMzIGxlZ2FjeS10cnVuaworMTI2NTEgOTU5ZTgxYjM5YjgxMTIyZjY3MzBhODY4ZmIyNWVhMjU2Y2U0NWMyZCBsZWdhY3ktdHJ1bmsKKzEyNjUyIDlhNmMzZGMxZGNkM2YwZTE0ZWNlYTY4NDM0N2Y4MjcxYmY0YTgwNzggbGVnYWN5LXRydW5rCisxMjY1MyAxZDNmZTdjODhjYzhjNDMzZDhlNTJhYTU4YzJkNDMyYjA1ZjI2NmQ1IGxlZ2FjeS10cnVuaworMTI2NTQgNjJkYzlmZjljZDRjMzkyY2NkZWQxNzU5ZmIwOWI0YTg5MTI5MmIyMCBsZWdhY3ktdHJ1bmsKKzEyNjU1IDlhYTQzOTBiZTM4YjdjMGFjMjhhZTFlNDNjYmEzMjYzZDMxZDM0OWMgbGVnYWN5LXRydW5rCisxMjY1NiBkMzdmMDMxMjRjNTRmODIzZjRiMmNhZjk0ZWM1ZWE2MzI0NjUzOTUxIGxlZ2FjeS10cnVuaworMTI2NTcgODQ2NGUzMTM3NmVkOWJmMWEzMGI4NzMwMGQyYjhhYWU3MmZmNDlkMiBsZWdhY3ktdHJ1bmsKKzEyNjU4IDBmN2Q2OTRiYzMzNGVmZjBmMWNjMDAxMDMxMTVkNGEyYzU5MzQyYjYgbGVnYWN5LXRydW5rCisxMjY1OSAxMzIzOWI0OGM0NjljMWE4MjkxYzA1ZjkxYzczYjIyN2NmNWI2N2MzIGxlZ2FjeS10cnVuaworMTI2NjAgNjI1YjdjZWJmZGUyYjJkOWQwM2Y4OTMyMjljYjQ5MDQxZTkwN2Q3MyBsZWdhY3ktdHJ1bmsKKzEyNjYxIDNiN2I2ZDVmMTkzMTY3ZGM5ODRkYWIwYmMzYTI3ZGRmMzU5MmNmMTQgbGVnYWN5LXRydW5rCisxMjY2MiAzYmEwMjViYTdmMDk1MDRiNzE4ZTlhMGQ5MGFiYjFlNGQwN2FiYWM0IGxlZ2FjeS10cnVuaworMTI2NjMgNWMxZWJmMjNmMWQ3N2I0M2RlNDE3M2E1YjM5ZWMxMDdmZmIwYTI5YyBsZWdhY3ktdHJ1bmsKKzEyNjY0IDU2NGYwMzYzMjkxNjI1ZGNjYzRiMzU2ZDdkYjVhYjI2OGI3MzUyZmIgbGVnYWN5LXRydW5rCisxMjY2NSBkZGY4NjFkODRiYmI5MjI4NGIzNDRlMzlkZGRjOGNiYzIwM2E2YTQ5IGxlZ2FjeS10cnVuaworMTI2NjYgMTU0YzY0MDhjM2MyZGRjZDZjYzRmNDE0ODEzYjY4ZGQyZjFlODAwMyBsZWdhY3ktdHJ1bmsKKzEyNjY3IDljOWNmNDU3MmE5NzdlZjZmN2JkZjU5YTc5OGM0YzE4NmUwZTVhY2EgbGVnYWN5LXRydW5rCisxMjY2OCAzZjEzZWU1OTJhNDBmODNlMjkxMmUwMWRlYTdlZWQxOGYxYjNmNDFkIGxlZ2FjeS10cnVuaworMTI2NjkgYmQ4YzQzZGFlZjg1ZTIwNDFhZDk5YTFjMjkxNGI3YjdkZWY2YTc3ZCBsZWdhY3ktdHJ1bmsKKzEyNjcwIDc2MmNmZTk2ZmFmOWQ3MWVkYjdhYWM3YmEwZDNmOWNmN2FiMTFiN2EgbGVnYWN5LXRydW5rCisxMjY3MSBiYTI1YjJkM2Q3ODRkN2Q3ZTU2M2M1N2MwN2QxZTQwZjRmODlkMTllIGxlZ2FjeS10cnVuaworMTI2NzIgN2NmOTc2NThjYWU3ZTM2ZjM5NjM1NDMwNjc1OGE5NjA0ZTcyMTI5NCBsZWdhY3ktdHJ1bmsKKzEyNjczIDczZTVlM2Y1MWI4NzRmYzk3MzliMDJhYzI2MzdhMDNiNzU1NjEwM2UgbGVnYWN5LXRydW5rCisxMjY3NCA5NjU1MGI1ZDA5ZTE0YzJkNjhmNWJiNzAxNTc3NTNhNTEyMjA0NzM0IGxlZ2FjeS10cnVuaworMTI2NzUgNmExY2I2ZjM3YTUyYzViNzBjNDNlY2JlNWJjMzAzYWNlZjc3OGUzYiBsZWdhY3ktdHJ1bmsKKzEyNjc2IDc0NGRiODZlMDMxMWFmZGY2NjM2NGQwMTM4OTQ2NmI2MTNjNjkwY2YgbGVnYWN5LXRydW5rCisxMjY3NyA0OWQ3NzZmMzg3OGQ4ZGQ1MDQ1N2FjNjU3MTU1ZGQzMTU2ZjA3NDIzIGxlZ2FjeS10cnVuaworMTI2NzggYTc5ZGNkMjdiZGMzYTZiNWY5ZmE5MDgzMzY0MTBkOTRkMWY1MmE2ZSBsZWdhY3ktdHJ1bmsKKzEyNjc5IDM1ZjkxY2FlYWE4ZGEzNzU0NzNmODQ2NjdhYWMzOTg1MzE0MGIwNjIgbGVnYWN5LXRydW5rCisxMjY4MCBmMGE1N2NjZjIzM2NiMzU2ZDk3ZTM1MTIyOTI4ODYwMjUxYWJjYzU2IGxlZ2FjeS10cnVuaworMTI2ODEgMDRiODgwNDJhOTJiOGZjMmRjODViMGFlZWRiZGRhODYzNGExNDExNiBsZWdhY3ktdHJ1bmsKKzEyNjgyIDAwNWJhNDEyYThlY2I1MmE0MDY5NTAyYzZhYjlkY2UzMmM2YjU5YjUgbGVnYWN5LXRydW5rCisxMjY4MyBiODkzMmFiNDFhZGQ0ZjIwMWNmOTNiMGJlN2Y3ZDkwNjcwYmRmNTllIGxlZ2FjeS10cnVuaworMTI2ODQgNTUzOWFlYmY4OTM4YTg2NDU5ZDFjZTY1ZDE4MTEzZDU1YzAyYzY0YiBsZWdhY3ktdHJ1bmsKKzEyNjg1IDZkYmNkNWE2ZTVlNjE4Yjc1MWIxYmFkMzVkM2RmNmEzNjhiNTI3ZDEgbGVnYWN5LXRydW5rCisxMjY4NiBkODY0MDA1MDBhYTAzNzMxNTM1YWUzN2FmOGViOTUxN2NmYWQ5ZjRjIGxlZ2FjeS10cnVuaworMTI2ODcgYjI2ZTI1MTU4OTIyZWY3ZDIzMmU3YzBjMWFkMzVmYzRhMjllMjMyZSBsZWdhY3ktdHJ1bmsKKzEyNjg4IDYyZTYxMDU4NDgwYTM5OTMyZmQyNGJhN2MzZGIwOGY4YWE2NzdjMDcgbGVnYWN5LXRydW5rCisxMjY4OSBlZTFkMzJmN2EwNTVmMGI4ZDFiNTc4Nzg2M2NlNDAyMjM5N2I5YWYxIGxlZ2FjeS10cnVuaworMTI2OTAgNjYzM2MzZmNhNjI2M2YzNmVhNjEwYmRhNzQxNWE1N2YzNzkyNTYyOSBsZWdhY3ktdHJ1bmsKKzEyNjkxIGJkMzBkMzk3OTdhNDA5ZWJkM2JkYWE2MGFiMGUyZTU4ZGUzYzQ1ZmUgbGVnYWN5LXRydW5rCisxMjY5MiA4ZjRhZDE0YzM0MDczY2M4ZWMxNDc1Y2QzMDVmMWZiODFiMTg0YjE4IGxlZ2FjeS10cnVuaworMTI2OTMgYjBmMDRiN2M5NDA3MWU3MmQ4YTk2MWNkMzI1MTY4YzA0MTU1ZDE5YSBsZWdhY3ktdHJ1bmsKKzEyNjk0IDRhZjg0Y2RjZmRiNTNkMjA5YjQ2YWMzNDM3YzMzNDE1YmE3MzNjZmMgbGVnYWN5LXRydW5rCisxMjY5NSA2N2YxZDZiZDU4Y2ZiYTEwOTMzZWQ1NDg1ZGY2OWNiMzEwYmY5MzE5IGxlZ2FjeS10cnVuaworMTI2OTYgMWQ5NDI0OGZlMmI5OWEyOTllNDAyYzQ2NGJhNjI1YTI4MzU5NDVmMiBsZWdhY3ktdHJ1bmsKKzEyNjk3IGEzNjk4NjU2OWFmMThkNjg0MWQ5NjE2NjVmZDdiYzgyOTQxNDU1N2MgbGVnYWN5LXRydW5rCisxMjY5OCAxZTBkZDJlZjM5NzFjMmFjYjBkMDc1N2UxNGFlOGU0NWFjZDVjZTQ3IGxlZ2FjeS10cnVuaworMTI2OTkgZGU3YzAwMDM1NzhmOGFhNmUyOWZhZDcwYTc4YWZhZmEyMjkzMTgzMCBsZWdhY3ktdHJ1bmsKKzEyNzAwIGI1ZjA3YTRhNjU0YmYwNzFjMTVjY2I4MzY5NGY1MWY0YzNmZDYyYWQgbGVnYWN5LXRydW5rCisxMjcwMSAyNzkwMjU1NWY2NzIxZGQzYTAyMTFiZTJmNDZjYTNiZDg1YTYwODM2IGxlZ2FjeS10cnVuaworMTI3MDIgMDQ5YzkxMzQzZjk1ODhhZjUwNDE5ZGVmNTM3NmZlNTk2OGE4OGI5OCBsZWdhY3ktdHJ1bmsKKzEyNzAzIGMwZjY5Y2JlODA1ZDE3ZTZhOTQzZWRhNDFkZDNiYzJlNTNhNzBiOGUgbGVnYWN5LXRydW5rCisxMjcwNCBlMWRhMjkwYWNjNWYxMGVkZDAzOWE3YzliZTU4M2QwM2ZhZGU1YTdkIGxlZ2FjeS10cnVuaworMTI3MDUgZGZkZmY4NzI0ODg3NWRmNTZhNDFhM2RjMmZkZmM0NmIyMjAwMWY2MSBsZWdhY3ktdHJ1bmsKKzEyNzA2IGJmNDE4NDBjODE1MDcyMmFhMGI4YjhhYjY5Y2NmMmJiM2M2YzE5NTAgbGVnYWN5LXRydW5rCisxMjcwNyAxYzU5YTk5ZTk5NzBmMDY5NTM0NDk1OTI0YWI0ZmUzODdmMTY4YTNlIGxlZ2FjeS10cnVuaworMTI3MDggMDJiMTcyYTVkODkzZDdhNzExY2E4NjMwYTUwMmNjZGY4OWFkYWMyNyBsZWdhY3ktdHJ1bmsKKzEyNzA5IDI5ZDFkM2IwOGNhN2Q0ZjU5NmUzMTRhYjgxOWQ1ZDY4YWFlNjc5NjAgbGVnYWN5LXRydW5rCisxMjcxMCBhODZmZTFmM2NmNGU2NWIzNzUyNmM5YThhZWY5YmQ5NGU4ODgxZWVlIGxlZ2FjeS10cnVuaworMTI3MTEgZDI4MjI3NGZiYjcyMmZkODU1Yzc5MWY3MTIxNGY3MjM2MTlkZWJiYyBsZWdhY3ktdHJ1bmsKKzEyNzEyIGIxZDQwZmIxMGFmNmNiZDlkZTU4NWFmNjgxNTI3NDBjNWE5MDhhMWQgbGVnYWN5LXRydW5rCisxMjcxMyAzMmI0M2U1ZDg4ZDM1ODFkYTYwMjExOTk2ODVhYzM1ZDBkZTQ5YTdmIGxlZ2FjeS10cnVuaworMTI3MTQgZTMzOTdhZTg4MTI5MjFlODU2MzQyNDY5Y2FhMjFmNTJhMGUyODJmOCBsZWdhY3ktdHJ1bmsKKzEyNzE1IDAyZTEzM2VhYmFjNjk2ZGY2YTdiYmEwMTg4YzI0ZGM0NjMyNmFmOWMgbGVnYWN5LXRydW5rCisxMjcxNiAxZmJjNGJhZTI4Y2YwNTg3MTc0YjFkNzdkNmQ5MGJkNjE5NzgwMjZlIGxlZ2FjeS10cnVuaworMTI3MTcgZDE2ODZjZjA4ZDExNmM3MTdlNWYzNjgzYmU2YmMyZmI5OGJkNDJlOCBsZWdhY3ktdHJ1bmsKKzEyNzE4IDYxZWRkM2I4NWQ2MzY5ZDJjYWM3NDdkZGIyOWYxNDczN2RiNzAzYzQgbGVnYWN5LXRydW5rCisxMjcxOSBjZDQ3NjQ0MmVmNzE1YjYyNGU2OTkxZDE0YzkzZDVlZDUzMDA5ZmJjIGxlZ2FjeS10cnVuaworMTI3MjAgNDc3ZTk4MTA5YzdkNjYxNTE4ODBmYjJjYzMzNWI4NzE5YzQzNWRkMiBsZWdhY3ktdHJ1bmsKKzEyNzIxIGEyOTE5MmYyZDQ3YWZjZjY0MzMwODU3NzlhMzk2OThhZWM2YmZlNDYgbGVnYWN5LXRydW5rCisxMjcyMiAwZWYxMDcxY2I3ZmVlZDkxNzM1NzdiZWY5NTk2YzA5Y2I5YjIzMDAyIGxlZ2FjeS10cnVuaworMTI3MjMgZmViNDE1MDA4NzY1ZTQzZWU2OTEyNDI1OWVkOGQ5M2E2MzA0ZGMwNCBsZWdhY3ktdHJ1bmsKKzEyNzI0IGIzMDA3N2M1NzM0ODU0MmJkNjFlNmQ4MWY2MWRlZTRmYzI0Yjk3NzIgbGVnYWN5LXRydW5rCisxMjcyNSA1NTNlZDZhZTllN2E4NWZhNGY4ODZlMmNlY2RkOWY1YTc5OTkxNjNiIGxlZ2FjeS10cnVuaworMTI3MjYgZGY0YTk2N2E4MTQ2MmViZDJmYzFmZGI4YTY1MDE5NGM0MGQ1YTk4ZCBsZWdhY3ktdHJ1bmsKKzEyNzI3IDdiYmU3MTYzMWMzZjAyODgzYmUzNmU2MWE4ODVjZDAxMmViZThkNTEgbGVnYWN5LXRydW5rCisxMjcyOCBjZDEzMGM5NTU4ZGIzOGI2ZWU2MDljMDg0ZGJmOGQ4MzdiMGVkNDQ3IGxlZ2FjeS10cnVuaworMTI3MjkgYWU2MTM1Mjk3NTc0MmZiOTA2MzkwMjNjYWFjZjliMmRkMTg4MDYzNSBsZWdhY3ktdHJ1bmsKKzEyNzI5IDhmZTdlYzRiNGZjMTUxOGZjYWM4OWU2YmY2NzRmYmJjZTE2MTUwYTkgbGVnYWN5LXRydW5rCisxMjczMSBjZTU3ZWIzMDk2OGE1Yjg5MmM4ZDE3N2NhMDhlNTFmOGE3ZmZlYmM1IGxlZ2FjeS10cnVuaworMTI3MzIgMGUxNDdhNTE3NGExNTIxOWUxNWRiNmVjMzc1MGY2YjAxODk4NmRiMiBsZWdhY3ktdHJ1bmsKKzEyNzMzIGE2NWY4NzU4NDM1NGFlNjZhMjI0ZjA2ZTcwNWUzMmNjMmRiMzE5NTcgbGVnYWN5LXRydW5rCisxMjczNCA4Y2NjZmM2ZDYyNzIzNjc0YWIzZmM0OGYzNjNmZGE4ZmFmZTY0MjFjIGxlZ2FjeS10cnVuaworMTI3MzUgMjQ5ZDlhMmI1YmM5NjhkZjQ5MjlhMWZmODVmZDVmMzM2YWViNjZlNCBsZWdhY3ktdHJ1bmsKKzEyNzM2IDkyZmNlNDE0ZjM4MjMwOGQ0YzZkNDEyZjUwZWFmYTI3NjIxMjExNGYgbGVnYWN5LXRydW5rCisxMjczNyA1NzQ0YTZkYjJkNGY4NDE5NTUwNjI1MDU2NWZiN2VkN2M3NWQ1NGU2IGxlZ2FjeS10cnVuaworMTI3MzggYzVlODM0N2ViODA5YzI4YzU1MjEyM2M1NGU1NDYzMzkxMTQyMWE3ZSBsZWdhY3ktdHJ1bmsKKzEyNzM5IGYxY2NiZDZhOTRjZTMzM2QyYzRmMTNmNDc2ODQxY2I4ZTE2NmNjZTggbGVnYWN5LXRydW5rCisxMjc0MCA4NjY0MmI3YTdhNjBmNTg0ODgwNWM1NjQ4MTJiYzFlOTk1NzU1NzBlIGxlZ2FjeS10cnVuaworMTI3NDEgYzFiZWZkYmQ2NGU1NzIyOWU1MGM1NjU1OTU2ODVlOTY5NzBlMjVhZiBsZWdhY3ktdHJ1bmsKKzEyNzQyIDM1OTI0NGZhNmI1MmFiMGViYmFmOWNmMDMxNzY2NTBlOGIwYmVhNjAgbGVnYWN5LXRydW5rCisxMjc0MyBmMTM4YmE3MmJmMmQ5ZjJlM2U4ZTE4MGUzOTVjMmY3ZmNhNzJlZjdhIGxlZ2FjeS10cnVuaworMTI3NDQgYjZiOTMwMDZkMDc2ODQwMDY3MzMzMDNmYjRmMDgxM2FjMjg3NmQwOSBsZWdhY3ktdHJ1bmsKKzEyNzQ1IDU3NWM0ZWEyNTQyYmMwZTJmNDRiNjNhYWMwYWQxMmY4YjI5NTBmZTcgbGVnYWN5LXRydW5rCisxMjc0NyAzMmM0MjA0NzQyYmFmZDZkM2M2MjI5YWNhMWNjMzZlZGIyNDkxOGNjIGxlZ2FjeS10cnVuaworMTI3NDggYmRiZmUwZWM5NzBmODkyZDZiYjgyMGE1MzBjNWM1YzkyNzFiYzkyYyBsZWdhY3ktdHJ1bmsKKzEyNzQ5IGM1ZjExYzViZjViMjIwMDYxNDgxYWMyYWVlNDkwZjQzNzJjMzAyZDkgbGVnYWN5LXRydW5rCisxMjc1MCAxYTJhMGEzZTlkZGIyZTEyMmZjZmIxOWYxNDc4ODdjNTk4MzEyMDM2IGxlZ2FjeS10cnVuaworMTI3NTEgODk1ZDg2MWEwODcwMWZjZGM4YmJlMmE5YjU0NGM3MWM4ZjRjMGNhZiBsZWdhY3ktdHJ1bmsKKzEyNzUyIGU1OWNhNWQzNDZmNGRmMmM4NDQ2YzNjMmEwMjE1YzNiODcxNTBhYmIgbGVnYWN5LXRydW5rCisxMjc1MyA0N2MxMWU4Mjc2OTk5ZjAwNzhjMDcxZGUyYjk4MzgzYzc3MDJmOTU2IGxlZ2FjeS10cnVuaworMTI3NTQgZDgzOTM1ZDE0MDg0NTY3ZjhlYTQ5ZDY0OGQ4MzU2N2IwZTZkYzNmMSBsZWdhY3ktdHJ1bmsKKzEyNzU1IGMyN2MxMGM2YjlmMjgyNzQwMWQ4ZDAzYWVjODE0MWI0Zjc4N2JiZWEgbGVnYWN5LXRydW5rCisxMjc1NiAxM2I0NWM3NGU5N2I1MzA2NjIyNjFiMmRhMzdlOWFiNWQzMmI1OWUyIGxlZ2FjeS10cnVuaworMTI3NTcgOGZlYjI5NTBkYTdiMjYzMjM4ZmEyYjQwZmI0NjRkOWM0ZTA3Y2M4NiBsZWdhY3ktdHJ1bmsKKzEyNzU4IDA2MTRlN2YxNjc0MWYyYTE1ODhlMjRkNGUyOTBjNDBhMGU2N2IzZTkgbGVnYWN5LXRydW5rCisxMjc1OSBhNDkxM2JhZTlmOTNlN2Y0MTAwMDA5ODI1NjU4ZTYyN2QyMzNiYmNkIGxlZ2FjeS10cnVuaworMTI3NjAgMGNiOGU1ZWE4NGE4ZGFhYzBlOTVkNDQ0Njk3Y2E5NmE5MDJhNmZlNiBsZWdhY3ktdHJ1bmsKKzEyNzYxIDE2M2ZkM2Q5NWMxN2U0MDQ4MjI0YTFjODkyMTFlZjg3MWE0MTBkNWMgbGVnYWN5LXRydW5rCisxMjc2MiAwYTVjZGQ3ZTVmYzNmODUwYTZiZGMxOWVkMmQ1YzQzNDZlNmM4OGQ4IGxlZ2FjeS10cnVuaworMTI3NjMgMjZhMDIwNjBiYWIxNzQxNmNmODI0Yzc1ZjVkZDVhYWY5ZjMzNTU0MSBsZWdhY3ktdHJ1bmsKKzEyNzY0IGI2NGYzMzU5NGEzMTEwNjk4ZjBlYmRjN2NjNTRiYzVjY2YxYzc3ZDAgbGVnYWN5LXRydW5rCisxMjc2NSBlODNmNjc2ZDE1YzI4OWNlYjZkN2M5MDNiNTVjZjBhYjQyMWRhMGY4IGxlZ2FjeS10cnVuaworMTI3NjYgMjk3MDFlMjkwNGFjNTQ5NzA5OWZkMDQzZDAzMTYwNWZkM2YxM2QxMiBsZWdhY3ktdHJ1bmsKKzEyNzY3IGI5YmI3NWRlZDgwNGFjYTU3YmU5NjNhZjJkY2RkNDg1NmFjOTJmNTMgbGVnYWN5LXRydW5rCisxMjc2OCA0ODcwMGY5OWM2YTZkMzFkNTIyZDFjNzRkM2ExMGYzNTIyZTMzZmRmIGxlZ2FjeS10cnVuaworMTI3NjkgMmY0MjVhNTdkOWFmZTcxZWY0NGVkZWY5ZTkxMDMwODNhOGIwYTk4MyBsZWdhY3ktdHJ1bmsKKzEyNzcwIGFiYWM3ZjYyNzU3YzgzMTE4ZjVmM2ZkY2I1ZTgwNzliZDBlYzZhODkgbGVnYWN5LXRydW5rCisxMjc3MSAzNWRmNGRjMmQzMGQ1NDM2MmQ1YTI5MTc4YWFjODgxNWZkZTViYjEzIGxlZ2FjeS10cnVuaworMTI3NzIgMGUzNTVkZmQ2ZjdkMTVjYzMyZGYyNzI4MDY0ZjFhYTY2YzQyM2FhMyBsZWdhY3ktdHJ1bmsKKzEyNzczIDY0YmNhM2JjYWEzNzRmMTc2NTBhMTQyMjJkNjhkMTI3OTI5NDI3YWYgbGVnYWN5LXRydW5rCisxMjc3NCA2NWEyNTM5NzFlY2NlODY2NTNlNTAzMDA4MGNiZmRlNTU3NzhhZjlhIGxlZ2FjeS10cnVuaworMTI3NzUgYTJhNzY4MWIyNWYxZjU5YmVjZWNhNTg1ZTBmYmUxYTM5M2UyODdkOCBsZWdhY3ktdHJ1bmsKKzEyNzc2IDA4ZWFkYzY1MGVmMDk1YzdhNWVkNmZiYWUzZmU4NWRiOWIwMzk0YzYgbGVnYWN5LXRydW5rCisxMjc3NyAxOWQ2MTIxZmU0ZjM0M2M0NjNiZDRjYzM4YWQxYzRmNjcyMDVhOWFiIGxlZ2FjeS10cnVuaworMTI3NzggNjMyYmQzYTVkZGVmNWJkZDA1YzE5M2FmNTU5MzhiYjcxOGFjMjNiYiBsZWdhY3ktdHJ1bmsKKzEyNzc5IGJhNWM2MjkwODEyMjVhMmE5M2VlYzZiNzk5YmRjZDI2Mzc4MmVhZTggbGVnYWN5LXRydW5rCisxMjc4MCA4NjAzNWFlNTMwNmMxMTdhZjdkZmRkMjk1MzY2ZTUzZDhiMjAzOTcyIGxlZ2FjeS10cnVuaworMTI3ODEgNDZhYzExYjc4ZTkyNzgwNTZhYTk2ZTc5NmRhZTdmZDgyZWI4YzMwNyBsZWdhY3ktdHJ1bmsKKzEyNzgyIDg4NmVhMjU1ZjM4MWZmMGM2ZGI3MGUyNzkxMjIyYjJlYjcyMTg4YzIgbGVnYWN5LXRydW5rCisxMjc4MyBjYzlmZDUwNjMwYTY5OWNiMDNjMmFmMGIzMjRmMGI3NDgzMjE5MWZmIGxlZ2FjeS10cnVuaworMTI3ODQgY2VmMmExMzQ1Njk1ZDE4ZjgyMTMwZDYxZDU2MjYzNmNjODFkM2Q2ZSBsZWdhY3ktdHJ1bmsKKzEyNzg1IDAxZGFmYzU3MWEzMDMyODUxODY4YzE1MDVkN2ZmYmI4MWM4MTEyODcgbGVnYWN5LXRydW5rCisxMjc4NiBkM2JlY2U0NjQ4NmUyOWQ3YTJjNWE2MmY5ZmJjMWM1MTFmMzlkZDNiIGxlZ2FjeS10cnVuaworMTI3ODcgMDZkYTNiYTNhYWRlMmU0N2VmNzJiYzhlNjUyYThiYTA0YzJiM2UzYyBsZWdhY3ktdHJ1bmsKKzEyNzg4IGNkNGM0NTEwYWRiZDQ3ZTk4NTMxOWRmMWMwNzBjZjFjNTQ4YzQ2OTAgbGVnYWN5LXRydW5rCisxMjc4OSAzYjgxYTdkNDE4Y2JlZTg4NDc2MzAyNjg3NWNlOTllYmIzODc4NGNkIGxlZ2FjeS10cnVuaworMTI3OTAgM2UzYzA5ZTE0NTAzMWQ0MDM5Yjg4YzlhZWZkYjc3YjBjODcyYjYxMCBsZWdhY3ktdHJ1bmsKKzEyNzkxIDVjMGMwNjFkZTJhZWJhNmY4ZWQ0ZWNlZDYxMzU3ZmY0MDdkZmMxYmIgbGVnYWN5LXRydW5rCisxMjc5MiAxZTc2NmRlNzE0ZGViYjBkMzcxODJlNTgxNjgxODgzYWY2MDFhMzcyIGxlZ2FjeS10cnVuaworMTI3OTMgNWNjNzEyMjY3MWFlYWZhOGUzMTAzNzY3NGQyM2QyOTYxOTk4ZTI2OSBsZWdhY3ktdHJ1bmsKKzEyNzk0IDliZTI3MjZjOWIyNTRjZDhhZGE2YTFlN2VhMWMxNjVmYWMwZTllNTkgbGVnYWN5LXRydW5rCisxMjc5NSAxYzZiMTBkZWE5ZjA1Zjg1NjQ3ZTBhY2FkYjkzMDE2ZDMxMzA1ODQxIGxlZ2FjeS10cnVuaworMTI3OTYgMjZkYjFlOTZjYWYzOTQ2OWZlOThhNzhlNmM2NTY5ZjdhYWJlNTkxYiBsZWdhY3ktdHJ1bmsKKzEyNzk3IGI3ODEzNWIxMGE4ZTFlNmJmMzBjOTU0NzcwYzg4NWI0OTdhZGM0ZDkgbGVnYWN5LXRydW5rCisxMjc5OCAyNGRlZjZjMjViMGEwNTBhZWUxZmJlZDBlMzM3Zjc3MjU4MDNkYjMzIGxlZ2FjeS10cnVuaworMTI3OTkgNTAwMzZkMDZlOTRhYTg0MGRmZjU0NmJiNDlkNWQxOWE4ZmIyY2I5NiBsZWdhY3ktdHJ1bmsKKzEyODAwIDMyNDExYWY4YzAxMjk3NjAzNmIzMWEwOWEwNjg2OWE0MDk1MWNjM2EgbGVnYWN5LXRydW5rCisxMjgwMSBjYzBjOTA2YzI0MTU2NjhkMzE1MmMzZGU2MzY1NDEyNmYyNmVmZTIyIGxlZ2FjeS10cnVuaworMTI4MDIgYTk1YzdkMmE4M2Y3ZDAxNTFhMDQxZDg1ODE3MTFjYjdiZDc5NGRlZiBsZWdhY3ktdHJ1bmsKKzEyODAzIGZkMDliM2ZkMWVkYzRkYTRmOThkMzc3MTc2ZTFiNzc0NGQ4MDUyZDcgbGVnYWN5LXRydW5rCisxMjgwNCA1ZTg5ODljMmY4NWRmZGZhZWY5OTcyNWRjY2VmZmI2Y2I3MmJjNjk5IGxlZ2FjeS10cnVuaworMTI4MDUgODhhN2Q4NTk5MDBlM2ExMzc3ZTgzMmUwNDNmZTk5MmExNjIxYjFjNiBsZWdhY3ktdHJ1bmsKKzEyODA2IGYxZjYzNjRhZGRiZGVkYzE5OTRkZWYwMWNiNTkxZDVhZmQ1MWYyMDggbGVnYWN5LXRydW5rCisxMjgwNyBiNjQ4ZjllOGIzZWRhMjlmYTEyNWM1YTdiYmYyZjU2ODkzNzU1ODZjIGxlZ2FjeS10cnVuaworMTI4MDggNWRiY2RkYmRlZDAwYjJkOGU4MDBhNzg0YjZkMWYyMzhiZGQ0MzE3OSBsZWdhY3ktdHJ1bmsKKzEyODA5IDQyYzlhOGQxMDgzNDRmMTc1ODI3YTU3MWM1M2ZmMDMyZjZkMzVmMDIgbGVnYWN5LXRydW5rCisxMjgxMCBlN2MwOWE2MmJmMWYxYTYyMjZhZjRjODRlZmIwZGEyM2NjNTRmMmE4IGxlZ2FjeS10cnVuaworMTI4MTEgZTMwODkzOTYxMzk4MjdmNzIzMzcyOTc0ZDY3MTZhNGEyMjUwYmZlMyBsZWdhY3ktdHJ1bmsKKzEyODEyIGRiMzJkZWIxM2M5ZjA2ZTA5ZmM3MWFlY2U4NmVhN2Y3ZTdmYjI5NDEgbGVnYWN5LXRydW5rCisxMjgxMyBhNGQ5OTYwNzM0NGYwNzhiODZiNDZjMWZiOWI3NTk4OThkMmFlMGI1IGxlZ2FjeS10cnVuaworMTI4MTQgY2RhZTZjMTE0NWY0YzNiOGU3MjBmMGNkYThmZDE2ZGJlNTQwN2MwYyBsZWdhY3ktdHJ1bmsKKzEyODE1IDFlNTdhZWU1MDU2NTRlZWVjNWE3OTUxMmMyNWU3NWY1OTY4MDMzZWIgbGVnYWN5LXRydW5rCisxMjgxNiBmYTE4YjBmYzBjMTgxZTQzZTk5YWY2YjdlMmUwNzFhMDhhMWFlMmY4IGxlZ2FjeS10cnVuaworMTI4MTcgOTBjNzUyYWU0NGE2YjkxZjk0ODgzMDUxYmU1MjI0Y2E4MWM4OThkZCBsZWdhY3ktdHJ1bmsKKzEyODE4IDQ0YTM3NWUzMWFlMmZlN2Q4MGNkY2Q4MzMzOGViOWIyZDllZGQ2YmEgbGVnYWN5LXRydW5rCisxMjgxOSA0NDZiMDk2N2Y3ZDk2OWNmMDYwMGYxMzNjOTkzMjNiOGUxZTQ3YjA1IGxlZ2FjeS10cnVuaworMTI4MjAgMzliZDdiODQ3OGRiMzVjZGU4MmRiMWE2NjdhNWU5ZGY0YzFjNDVhMSBsZWdhY3ktdHJ1bmsKKzEyODIxIDRkZDc2OGFlODk1ZTY0Y2M4MTBlZTUxNjVkZmNkOTNkNmI1MjUxNDcgbGVnYWN5LXRydW5rCisxMjgyMiA5MDAyZjRiNDcwMDBhM2ZjN2MzMTg0ZTY2YTQyYzJjM2YyYWU0NGVhIGxlZ2FjeS10cnVuaworMTI4MjMgZTkzNWQ4OTQ3ZTMzOTZlOGQwN2EwNzMzNTk2YWE3YWY0OTUyYTZlMCBsZWdhY3ktdHJ1bmsKKzEyODI0IGJkMDc2NzRjM2M4YjA3NGVmODQ4YTkwZWRlM2Q5OTgzY2UzNjRhNGEgbGVnYWN5LXRydW5rCisxMjgyNSBhODdjZmVhMzBiMDRkODBhMzc2NGJkY2VkZTNmODc1MjUyYjc0MjM3IGxlZ2FjeS10cnVuaworMTI4MjYgZmVkNjZiZGRjZTYzODFlYjM0OGRiMzc5YzI0OWNhNjU1NWUyMjU0NSBsZWdhY3ktdHJ1bmsKKzEyODI3IDBkMGUyMjM5ZGZkOGMwNjg1OGI0OGUzZmMxZDQ0Y2FlNzc5NDEyOTMgbGVnYWN5LXRydW5rCisxMjgyOCA0YTNlNjM5Mzg0Njk0MTExZTkxZDVlMjViYzI5MTlmN2JkYTg4YmYwIGxlZ2FjeS10cnVuaworMTI4MjkgNGM0ZjM2MmZhMGE2YWQ4NTIwNDdlNTA4MzI0MzAyZTc4Njk0Y2M5NCBsZWdhY3ktdHJ1bmsKKzEyODMwIDY2YTdkNjFjZmQ4NGEzZGRhOWQyNTFjYjAxZjJjMGFkMmFiNjJhZGEgbGVnYWN5LXRydW5rCisxMjgzMSBmNDM4YzZlMmI2YzE4ZTU3Y2Q5MjRkNjY0NGZiOTI5YTk5MzNiODYwIGxlZ2FjeS10cnVuaworMTI4MzIgMjA3YjQwZWM5YTdlMzkxNGJmYWNjMmQxYTZkZmIzZmIwMThhNzM3YyBsZWdhY3ktdHJ1bmsKKzEyODMzIGJlMDU2MDk0NzhiZWYwNDM5NTViNDMzNGQyZTllYzJiOWM4N2M1NTggbGVnYWN5LXRydW5rCisxMjgzNCBhYmQ0MjAyOWZhMDEwMWQ1NDNmZTYxMTViZDcwNmYzZjBiMmFkOWIyIGxlZ2FjeS10cnVuaworMTI4MzUgZmZmODJkMmZiMzY5ZWZkMmVjMDlhNmJlMGY2OWRkOWRjNmQ4ZmRjYSBsZWdhY3ktdHJ1bmsKKzEyODM2IGI2ZWRlYzFlZmU2NDI3ODUxYmExOTA4OTRjMGZmODgyNjIzNzQ1Y2MgbGVnYWN5LXRydW5rCisxMjgzNyA2MTIyNDQ1OWJiMDkzNjFiMTFmMzQwYjQ5ZjNiMjg5ZTEwMTUzZjNjIGxlZ2FjeS10cnVuaworMTI4MzggMDkzZmMyOThhZmQ2YjBlMDJlNDExYTY0NWQxYzFlY2E4N2JiOTc2YyBsZWdhY3ktdHJ1bmsKKzEyODM5IGRkYmYxYWNiNzE3MDJkZDUxOTM0ZWRmYmY1NTJiNmQzNThkMmNiYjUgbGVnYWN5LXRydW5rCisxMjg0MCBhOGRjNTliNjZmNDk2NmNhYzgzZmNhMDViOWExMTk5YTM3M2M1OWU3IGxlZ2FjeS10cnVuaworMTI4NDEgNWM3MGVjZGVkZWZjMzM2NDlhN2M1NWIzZTJlZmYwOTUxZTczYWZkOCBsZWdhY3ktdHJ1bmsKKzEyODQyIDZlZTBlY2ViNzc1ZjJkMjJlOTAxYzBjYWE4ZjU0N2NmMGU4ODI3YWQgbGVnYWN5LXRydW5rCisxMjg0MyA2NWFlZDUyOWFkOGFkYWYzNDZkMTZkM2Q5YTc3Y2RlZTEyMGU2NDE5IGxlZ2FjeS10cnVuaworMTI4NDQgMDhkMzE5NGEzYzNmYzhkNjUyODMyMTA3ZWRkNmU2NDNiZmU0NWVkZCBsZWdhY3ktdHJ1bmsKKzEyODQ1IDhkMDkyYTY3MmQwOWJiMThkODVmNTAxMjk5MDE3ODUxZmE2YzdmY2IgbGVnYWN5LXRydW5rCisxMjg0NiBiOWE4MGJiYmU0YTVhNjg1YjM4NWMyZTFlZTAxM2VlOWVmNzdmZDE0IGxlZ2FjeS10cnVuaworMTI4NDcgNmRiMzVlZTkwYmZhYzAzZTVjMGZjZTM2MGExZDBjZjhhNmE2Zjk1MyBsZWdhY3ktdHJ1bmsKKzEyODQ4IGQ3MzllMWViNjE3NTFjMTk5NWEyNjdjZDJkNzY2Y2IwYTlkMmQ3YTAgbGVnYWN5LXRydW5rCisxMjg0OSA0ZTJkMTg5NzNiOTRhMDM3N2YyNWIyYThkZTZkZDRmMDE3ZTE3NzMwIGxlZ2FjeS10cnVuaworMTI4NTAgMWQ4NTdiNTk3NTgyMzc4NzYyNjIyMzViMTY4N2RiZmJjYTlkYWE0NSBsZWdhY3ktdHJ1bmsKKzEyODUxIDg5MmRiYTdmNDBkZWVmZWVlYmU4YmE3NWVjNDc4MWQyOTZhNTc2NDUgbGVnYWN5LXRydW5rCisxMjg1MiA3YTM5Yzg3M2RjODE4MGM5NzRmMWUwNGEzYzc2ZmZjYzk1YmJmYzNjIGxlZ2FjeS10cnVuaworMTI4NTMgNjdmZjllN2RjOGFmZjRhMDBlNWRhZTNiNWQyYTRkYzk5MWQ5NWRhOCBsZWdhY3ktdHJ1bmsKKzEyODU0IGE3OTdmMGM2YzJlMWRkMTM5YzE0OTU3MzZjYzIzYTNiZDlhZDlmYjEgbGVnYWN5LXRydW5rCisxMjg1NSBlNmQzNGNjMGM3OWM5NjJjMzlmZTYzYWRlZmQ4Mzc2NmMyZjZiZjQ3IGxlZ2FjeS10cnVuaworMTI4NTYgNmI1NzkwY2UyNTM2ZGM2ZTQ2MTI3ZTFlMjEwN2VhOTU4MDU2NjgxMiBsZWdhY3ktdHJ1bmsKKzEyODU3IDUwZDMwOTlkNTBjMjFkM2M3ODZlMGY5NjgxZjUyZmJjM2YzMWMzZDQgbGVnYWN5LXRydW5rCisxMjg1OCA0MDcwMjJjZjE5MzFjMTU4NzQwZTllYTNkZTU3Y2E3OWQ3NWUyMmZlIGxlZ2FjeS10cnVuaworMTI4NTkgODkyM2FkN2UxM2YyYjAxNTllZGUxYWIwMzZjY2E5MzdmYWRmNjliMyBsZWdhY3ktdHJ1bmsKKzEyODYwIGU5OGUxZWE1MWYxNjI2ZDVlNmY0ZDU4OTZlMTZjM2RiMTMyMjU2NmEgbGVnYWN5LXRydW5rCisxMjg2MSBkYTBjMTMzMGU2NmVmMmNkMGZjMDU5MzBlYzk1YzViMjExY2YwMTVmIGxlZ2FjeS10cnVuaworMTI4NjIgNzBhM2ZiMWNlMjNiNDFjYjgyNjBlMDkyOTIxYTkzMmQ4MTZkODczNSBsZWdhY3ktdHJ1bmsKKzEyODYzIGVhMGJiYzNiZjFkZmE2MThiNGNhYTE5ZTMwMDdhNjY5ZjRmMDRmN2IgbGVnYWN5LXRydW5rCisxMjg2NCA1MGU0ZGRkYjgyOGIyMDcxMmU1OTQ5Mjk4ODQ5NTk5ZGI5NWFjMmNiIGxlZ2FjeS10cnVuaworMTI4NjUgMTQwOWU3Njg3YTlhMDNiMjc4ZGZhNGI5NzViNTgxMGQ5ZjJhN2YwZiBsZWdhY3ktdHJ1bmsKKzEyODY2IDRkYWFiN2E5ZjU2NmFkNDIxNTUyNDY5MjZmOTU4N2RkNGNiNDRhZWIgbGVnYWN5LXRydW5rCisxMjg2NyBkNTE2NGM2NmFjYzk2M2JiYmZmMjAyMDYyZWFmZWRjZTkwZGM1YThhIGxlZ2FjeS10cnVuaworMTI4NjggMjVkN2Q0ZDczOTlmMTBjYWFhZmY5MDgzMWVhY2VmMjc5YjExMDU5NyBsZWdhY3ktdHJ1bmsKKzEyODY5IDY1ZTcyMTJkZjFiY2YxY2MxN2E0Yzk2ZDlhMjg0YTg3MzI4NjJkZGMgbGVnYWN5LXRydW5rCisxMjg3MCBjNWY0OWQ0ZTI5YzUwMzk4M2UxMjU4YzE2YmVhNGVjMmRhYzViOGRlIGxlZ2FjeS10cnVuaworMTI4NzEgNzk1ZDUxYWQyMjhhMjQwZGQ0NjY0NzNlYjZhMjhkZDEzYTNlYWRjMiBsZWdhY3ktdHJ1bmsKKzEyODcyIDEzMmY5NDY0MmM3NGQyODcyNDM1M2RmM2IwZWU2OTJjYTBjYmM4MzggbGVnYWN5LXRydW5rCisxMjg3MyA5NWI5MjI1YTUyZTQ1YmIyNTZkYmFlMTVmNTExNDFmNjgyMjhhODg4IGxlZ2FjeS10cnVuaworMTI4NzQgOTY5MTM5MDdhZTY4ZDk0NjljNTEyZDNmODQ5MDZjZDgwMDQ3MzRkYSBsZWdhY3ktdHJ1bmsKKzEyODc1IGZiN2ZhNDc2MjExZjM1ZDE1OWMyMTE0YzE0YTRiNzliNjI5YWE5ZTkgbGVnYWN5LXRydW5rCisxMjg3NiAwN2VlNzk1Nzc0ZDg5YjQxYmViM2JkNTdmZmY3ZDg5NGVjMmRlYTUzIGxlZ2FjeS10cnVuaworMTI4NzcgNDgxNDFkYTUxOGRmYTdjYWMyOWQ3YTZlYTcxNDAxNTQyNWI4YjhlYiBsZWdhY3ktdHJ1bmsKKzEyODc4IDQxN2FhNDI1MDEzYWQ3M2VhMzgwMmY1ZjAzNmViM2NmOTlhYWIzMzIgbGVnYWN5LXRydW5rCisxMjg3OSAzMzc3MzNjZTk1OTNmYjFlYTA1ZDY5NzZhNzlhNDllMDI2OTAwNjQ5IGxlZ2FjeS10cnVuaworMTI4ODAgNGNiYjIxMjJjNzM1OGY0ODUyMmE0MTEyM2Y5YjFlNjM1ZTNhZjJlNiBsZWdhY3ktdHJ1bmsKKzEyODgxIGQ5ODA4NWRlOTdkMWZlODhhNWNhOGQyMTg0OTg2OGQ2NjAwOGY5NWIgbGVnYWN5LXRydW5rCisxMjg4MiA5ZTk2OTVlMzE0Yzk2MDcwMzYyMjZmOTU2MmI2ZTM2MmUzOGU1MzgyIGxlZ2FjeS10cnVuaworMTI4ODMgNjk4OThhY2IyM2YyODFiZDY5Y2EyZWY3NGRmOTVjNDhkZWI0Mzg2OSBsZWdhY3ktdHJ1bmsKKzEyODg0IGZiNTFhYTgyNGRmMmQ0NzIxN2Q0NjdmMWM0YjRhMzI5MWU0YWI1YjEgbGVnYWN5LXRydW5rCisxMjg4NSBlMmEwOGE4MWU1NmY0ZWUyODU2OTVlMjFhOTg4MzM0ODcwNmFhYmU1IGxlZ2FjeS10cnVuaworMTI4ODYgNzBkZDkxYzIxNTEzNGZhZTRlZGZjZTE4NTZlNzQ3ZTdkMWJkOTIyOSBsZWdhY3ktdHJ1bmsKKzEyODg3IGQzZGM2MjAwNDc3NmRmMDJmNDMwNzBkOWU1ZmUxMWM4ODJlNjhhZGEgbGVnYWN5LXRydW5rCisxMjg4OCBlOTMzNTIyODZhYWM2ZDE5ZTgzZDU2MDdkZjUwZjFkODYxMTkyMmE1IGxlZ2FjeS10cnVuaworMTI4ODkgYzU4OTAyMWM0N2M5MzM3ZWVmNDcyNTAyMTY2Njc3N2UyZjVmYTkwZiBsZWdhY3ktdHJ1bmsKKzEyODkwIDljNWQ5YmRmN2U0MjM0MTliZGZiYmRjOTg0OTczMDViMDRkNTgyM2UgbGVnYWN5LXRydW5rCisxMjg5MSBmNGU2MDViZDhmMWI3NmI2NjJmNzZlMDAzOWUxM2RmN2ZhOThhNDdmIGxlZ2FjeS10cnVuaworMTI4OTIgMDE3M2E1ZjQ3MjA2ZGJlNDFmYTI5M2ZiODZhYWM0NWRjMzJhMmZmNSBsZWdhY3ktdHJ1bmsKKzEyODkzIGZiODE2NTk0ODlhMTY2NTY0YTFlYmFjOGE4ZDRiYmYxYzE4ZDgwYTYgbGVnYWN5LXRydW5rCisxMjg5NCA3YjgxMGFhMzViNWNlODZkYjE4MDAyYWQ4NTA5YTFlMTdiODIwZTQ0IGxlZ2FjeS10cnVuaworMTI4OTUgZjU0YmFjNWFmOThjYTAxNDdkODVkYWZjNDE3Yzc4NjEwODQyODBiMiBsZWdhY3ktdHJ1bmsKKzEyODk2IDc0OWUxYjNkODE3M2EzMDkzYzM3MGI5MjEyZWUxMDBkNWNjMTUzY2EgbGVnYWN5LXRydW5rCisxMjg5NyA1MjIwNjUzMmQzODkxYTA5MzNhMmFjOWY5ZDMzNDYwZDg2ODcyNTZjIGxlZ2FjeS10cnVuaworMTI4OTggZjM0MzMyOTUwMGJlNzliMTI3ZDYzNjgyZDk2NzY2N2UyNmJhYTI5NyBsZWdhY3ktdHJ1bmsKKzEyODk5IGMwNjZmZDg0MzNiYTg0ZWMwNTNkM2ViYTRiN2MwN2I4NWZkYmQyZjcgbGVnYWN5LXRydW5rCisxMjkwMCBkYzliMGQ0MThjMDA5YmI4ZDY4YTRjYTYzYWJkMTFiNTUwNTYyOTRiIGxlZ2FjeS10cnVuaworMTI5MDEgN2YxNDdjNGU0MjE5YjE2ZDZlMzRkYTMzNDI4NjZhODIzNDhiODMxZSBsZWdhY3ktdHJ1bmsKKzEyOTAyIDJhNGMxNzZkZTZjZGQzYzg4OTE3NjZkMzEwOThjMTgxNjlhNjNkZjUgbGVnYWN5LXRydW5rCisxMjkwMyA5NGFkOTBmZDI3MTI2ZmU1YmY2ODg4OTk1ZTI2OTEzNjI2YmVlOWE2IGxlZ2FjeS10cnVuaworMTI5MDQgZjgxZGI3MzhhYmQ5MmMyNmIwZDQxMzBmYTcxYTQzYjRkMTE5OThlYSBsZWdhY3ktdHJ1bmsKKzEyOTA1IDlkNGVmY2UxMWYwOWIxNTk4NmExMTA4NGFiMmEyOWUzMDliNWJiZDUgbGVnYWN5LXRydW5rCisxMjkwNiA5YzZkYTMwYWU2NzVkY2E1YzY5ZGVkNzA1Njg2ZGFmODhmMWFiYzI5IGxlZ2FjeS10cnVuaworMTI5MDcgODBkMmI5YWZkMTljYzU1NDBmMTYyYWMxOWQwYTgzNzg5MmM3NDdiNyBsZWdhY3ktdHJ1bmsKKzEyOTA4IDJjMDM5YzAxMDQzNzdlOTQ1ZmVlMjNjODA2Y2MyYWViYzBkOWMzNmUgbGVnYWN5LXRydW5rCisxMjkwOSAxNTlmMWMzYWZlMjg0ZTllYzlhZTUwNGRlNzM0YWJlNjBjZTE2MWY4IGxlZ2FjeS10cnVuaworMTI5MTAgY2NlZjVjMGU4ZGRjNjhjZTUxOTcxYWNkOTZlM2FlMjZiNmU4MTM5MyBsZWdhY3ktdHJ1bmsKKzEyOTExIGExNTQ0ZmM0OWE3NjM0NTVhM2UwN2NlZjVjOTM3OGI2ZTBhODhiZGMgbGVnYWN5LXRydW5rCisxMjkxMiAwNTA4MzJkODM4Y2E1ZWY4NmY3YTcxYTY2YWUxZjRiNzJhZWM1Mjg0IGxlZ2FjeS10cnVuaworMTI5MTMgOTc4MjMxODQyNjZhMDE5MDIwMGViMzljY2E5MGQxODZiMGQ2OWZiNSBsZWdhY3ktdHJ1bmsKKzEyOTE0IDk5NTJmMTZiYmU4Y2UzZTk3MmYwMDVlMjEyYTRjYWNlMTQ2YTU2N2YgbGVnYWN5LXRydW5rCisxMjkxNSBlOWU2OWIwMmQwZjBkMTBmZjNhZWY4NjNmZDcwZmM1ZjliYmM1NmIwIGxlZ2FjeS10cnVuaworMTI5MTYgNDM2M2ZiMmQ0MzQ1MDNmNzUxYTg1NjhjNTQ4MTg0NTgxNjU5YmY3NyBsZWdhY3ktdHJ1bmsKKzEyOTE3IGE2MzBlNTRlOTdmMjkzYmJiNjgxZjg5NDNiOGUxZDgzZDMyZTg5YWIgbGVnYWN5LXRydW5rCisxMjkxOCA0OGZiYzU1YzA1NTM0MTg4MGY5NTEzZjI5YWQyYjgzY2Y1YWU5Y2EzIGxlZ2FjeS10cnVuaworMTI5MTkgNTI0MzhjODdmZWRjYzIyNmE2N2FhNTI4NzY5Y2ZkNDUzYWIwYTBlNiBsZWdhY3ktdHJ1bmsKKzEyOTIwIGRjNTAyY2U3NTc1YTIwNzIxMDE2OTQwNmZhYzE1MDI5OGU1MjNhMjAgbGVnYWN5LXRydW5rCisxMjkyMSBiOGU0ZGUxYzM1Y2RhZDkwOTZkYTA1NmU2MGM0M2UxMTM2NTI2YjgzIGxlZ2FjeS10cnVuaworMTI5MjIgY2FiYWIxZjU1OTZlMjg1MjhiMmIyZTlkOGJhNjRhYmI3MmU3ZDcyZCBsZWdhY3ktdHJ1bmsKKzEyOTIzIDZkNTgyNzBkYmNkNDNkNDQ4YjFhOGQ4MzE3NDJhZWJkMDkwODA0ZDkgbGVnYWN5LXRydW5rCisxMjkyNCAwZDZiZDM5MWFjZDgzNzA5NzVlNzQ5MWZiNGQ1ODI3MTlkNzlmYjVmIGxlZ2FjeS10cnVuaworMTI5MjUgYjM2NDY5Mzk4MjYyNjllM2VlYTg5ZjcxN2VlZDhiNzE1OWRjMzdiNCBsZWdhY3ktdHJ1bmsKKzEyOTI2IDlhNGJhZjBjNTdlYTE5NDE5ZWRkNzk5ZmFiMDAzMzhjYjRhZmQ4NTIgbGVnYWN5LXRydW5rCisxMjkyNyA1Y2NkM2I4NmIxYTYzN2ZkMzAyY2I3Y2UwYjM5NDUyMWViMDVjZGUwIGxlZ2FjeS10cnVuaworMTI5MjggNGU4ZGVmZWMwOWY4NTA0MDc1YzlmMDYwMDMxNGVhZDczYTdmMzQzNiBsZWdhY3ktdHJ1bmsKKzEyOTI5IGMxNzY5NjhiYzkxYzEwOTMyOGM0ZDkzMTgxMGVjNmVjMWZmNGM2YmYgbGVnYWN5LXRydW5rCisxMjkzMCBlNjc5OWE4NTVhZjc4YzU0N2Q0ZThjMmQ4ZTkzOTFkMWIyNDcxZDk3IGxlZ2FjeS10cnVuaworMTI5MzEgMzU3MWI0YzFiYzBlM2QzN2NkZGY3OTE1ZWY1Y2JjM2M4YzdlZDA5NyBsZWdhY3ktdHJ1bmsKKzEyOTMyIGY5YWQxNDhjOTgwY2NlMGJmNzJmZDllNTQ5MGQ1NWY1NGY4OTIxNjAgbGVnYWN5LXRydW5rCisxMjkzMyBkNTkyZmU1ZTA5ZDU3NGQwZGYzNTdkNTY1YTdlYTRkOTdhMmE5N2U1IGxlZ2FjeS10cnVuaworMTI5MzQgMDc4OWUwYjU1NTg3YmIyMTgxZjNlY2Q2ZmUwY2JlNjViZjA4M2I2MCBsZWdhY3ktdHJ1bmsKKzEyOTM1IDFjYzVkMjBkMmVkODQyOTY4MWQ1Yjk2NDQ3YjEwOTVhYTVkZGNkOWMgbGVnYWN5LXRydW5rCisxMjkzNiAyYWIwZWM4NDcxODQ3NjdjMzgzMGM3ZjIzMTRlYzk1ZTk1ZDM2YTBiIGxlZ2FjeS10cnVuaworMTI5MzcgYTQ3NjgzMTU5NDhkYzMxMDdjZDBmYThjMWRmYTEwNGI0YTQ3MDM2MSBsZWdhY3ktdHJ1bmsKKzEyOTM4IDMyNDQ1MGVhNTQ1MDJiODkzNjIyMjA3OTExNmEwYjk3YmVhZWNkYjAgbGVnYWN5LXRydW5rCisxMjkzOSA3ZDNhNjBmNGUwYjQ3MzQ2ZWVhMDFhYWUwNjY1NjcyNjAxMzFiNGM5IGxlZ2FjeS10cnVuaworMTI5NDAgM2JjOGY1MzA0MWMwMTViZGFmNDgxNTg2MmNkYzZjNTYzZDRhODg2MyBsZWdhY3ktdHJ1bmsKKzEyOTQxIGVlNmZhOWI4Njg4NTRhYzEzMDc0YjFiMTYwYTZiZWVmNzFmZTJmZTcgbGVnYWN5LXRydW5rCisxMjk0MiA5Y2UxNDc0YWJkZGQ3YzM2OWQ4NGQyNmIxMGRkNDMyZTA2Y2ExYzZiIGxlZ2FjeS10cnVuaworMTI5NDMgYjk0MTQ0ZGUyZjMyYjUzZTJmZDUxODI1YmRhOTIwMDEzODlkYTZkMiBsZWdhY3ktdHJ1bmsKKzEyOTQ0IDliYTVkZmZjY2IxYmRiNDM2MzYyNzE4ZTJiYmMyOGVmMjFiMGEzNDggbGVnYWN5LXRydW5rCisxMjk0NSA5MTg0YzllMTA4Zjk3YmI2NmNlMTIzM2Y5NzM4ZjkyZGMyYjFmYTJiIGxlZ2FjeS10cnVuaworMTI5NDYgZjNhNGM0ZjQwNDQ2Nzg1ZTg1NjY4NDc3ZWQzODRmNGFhMWI5MTA5YSBsZWdhY3ktdHJ1bmsKKzEyOTQ3IDJhMTQ5ZTk0ZWY0YWMxNDVkNWQyMWU2NTIxYWNkNzcxN2YwNGEwNjMgbGVnYWN5LXRydW5rCisxMjk0OCAwMGMzN2NiNzVjMjg1NDlkMDQ5N2ViNmY0YmU4ZGIzNWU1ZDBjNzI2IGxlZ2FjeS10cnVuaworMTI5NDkgYmYyNmI3YzFlNmRlYzE5Y2E3Y2E5OTEwMmRiZWQ2MDk3M2ZiMDZjMiBsZWdhY3ktdHJ1bmsKKzEyOTUwIGQzNzYyOTMzYmZmODg5YTkwODM2ZGQ1NTMwNmQ2Y2JmZTIwNDA1MzUgbGVnYWN5LXRydW5rCisxMjk1MSA5N2EwNmVjN2M2ZjQ5YjcyM2JhNTQyMWY0MzRiNGRmNWRhMDBhN2RhIGxlZ2FjeS10cnVuaworMTI5NTIgN2ZlZjYwZjhiYzQ1NTVlNjNiNTcyOTZmMGQxZTA4Y2IwNmJkN2Y1MCBsZWdhY3ktdHJ1bmsKKzEyOTUzIDVjZmJkNDg5YTVkMzRkMDlkOWUxZjk3Y2M1NzRmNTZhMDcxOTU5NzkgbGVnYWN5LXRydW5rCisxMjk1NCAyYjFkZmMxMzk1MWRmYjYzMGFhNjZmNmZkM2MyYTI1NjdiMTEzNTRhIGxlZ2FjeS10cnVuaworMTI5NTUgYzllMTBlZDI2ZDlhYjEwMDA1ZWIwNmRjOWNmYzA1ZDU1OGM1MTk4YyBsZWdhY3ktdHJ1bmsKKzEyOTU2IDViNTRmYTc3NWU1NTBlY2Q4ZWIyMmYyYmJmOGRkMzk1NjFiYzgxMWIgbGVnYWN5LXRydW5rCisxMjk1NyBkYWQxNGZmZTFjMjJhMDZiMDVmNTk2ZjAxMzFiMDBmZjU0ZTdkOTlhIGxlZ2FjeS10cnVuaworMTI5NTggMTExNzhjOGQ2YmUyYTZjMjkzYTliYzQ1NjBlZGU0MWIyNzViNzZhOSBsZWdhY3ktdHJ1bmsKKzEyOTU5IDNmMjEzYThmYzA0ZTA2ZmRmZWFhMWI4NzI1YmZiOGUyMGU4OWNiZjQgbGVnYWN5LXRydW5rCisxMjk2MCA4MmFkYzU0ZGQzNzdjNDY0NGYzNGIwZGY5NTk4ZjBmOGY4NzIzNTdiIGxlZ2FjeS10cnVuaworMTI5NjEgNzA5MTBlMzEyNWEyNzYzMTQyZmIwOGE4OTY4MWRlZDdiMmU4NGVmZCBsZWdhY3ktdHJ1bmsKKzEyOTYyIDRjMWJiZWRhZDE0YmU2M2NkMGY0ODUzZDQ1NGUxOTM1ZDk1MDZhODQgbGVnYWN5LXRydW5rCisxMjk2MyA2Mjc4MTkxNGZhZGI4OTNjZDZhZTNmY2ExYmY3YjYzZWUzNTVlNzJkIGxlZ2FjeS10cnVuaworMTI5NjQgNGFiYzVhYmFlYzlhYjg4MGY1MTI0YTE5ZWYyN2U4M2Q4MDJhZGU1OSBsZWdhY3ktdHJ1bmsKKzEyOTY1IGE2NDY0ZWI5ODdlOGNlYWYzOWZjMWM4ZTM1MDAwYzcxMDY2NzhjZTYgbGVnYWN5LXRydW5rCisxMjk2NiA1M2MxZmFlYzFkNDY2NmE1MDY0MzUyMGI5MTYxN2M0NTc5NjljNzNlIGxlZ2FjeS10cnVuaworMTI5NjcgZjc0ZWYxOTcxYmQxMjY4MDg0ZTU2MjdkMjNkMGVmODdjYmUwOGJjZiBsZWdhY3ktdHJ1bmsKKzEyOTY4IDU4Njg4NDYyMDFlZGUyMDEzOWYwMjY3NjE3YjBkMWJiZjI1YTA5YmEgbGVnYWN5LXRydW5rCisxMjk2OSAzNmJhNGRiZmY2ODZlODUzYWIwYzRkMDYyZTY5MDBkMWY2YTM1MWM4IGxlZ2FjeS10cnVuaworMTI5NzAgMjU1YWJhYjNjNTc0MzA1MDhiZTMxZjNmNTJiMzk1NjIzNThmMzEwOSBsZWdhY3ktdHJ1bmsKKzEyOTcxIDljZDRmZDkyNmRmNjQ0OTliM2EwNGE3NzJiYzgwODAzZGVkMzVlYmMgbGVnYWN5LXRydW5rCisxMjk3MiA2MDFiNGYyZDVmYzg1MjQzYTBiYjA2YjcyOGZmOTQ4MmMxYjhlZjVkIGxlZ2FjeS10cnVuaworMTI5NzMgMDIyYjE3OGZkMGVkNTc3ODA1ZTRmMWRmNDEwNGVmMjZlZmE0YTUzOSBsZWdhY3ktdHJ1bmsKKzEyOTc0IGFjM2E0NjVlNTBhNjdiZTkxYTdlMzNjYTYxMDMwZGQxOTdmODViNTUgbGVnYWN5LXRydW5rCisxMjk3NSA0ZWU5MDAwMDVlZDg4ZTY3YWQ4YmFhNTI3MGI3MDUxNjQzOWJjMmEzIGxlZ2FjeS10cnVuaworMTI5NzYgNjNjNDYzYTg1MjkzNmVmNDAwYWFiMjEzMmFkMzVmNGRhZGZhZWFiOCBsZWdhY3ktdHJ1bmsKKzEyOTc3IGY4NTBlZjNkYTQzYWY0NGRkZTQ0NzczOWVhMDdlZTAxNzZmZDk1NDAgbGVnYWN5LXRydW5rCisxMjk3OCBjODJhODViYTFkZGVmOGU4Mjg1YmUwYTRjZGUxODExY2RlZWY4OWRhIGxlZ2FjeS10cnVuaworMTI5NzkgNTc3MDRmMGFkOWIwNWMwNzQwMTQ3MjYyNDQ2ZmRlNmRkNGYwNjgwOCBsZWdhY3ktdHJ1bmsKKzEyOTgwIDRiMTk0NjE3ODBiOTlhMGM1OTY0NzhlZTkxNGY2ZTE1OGY3YjBiOWEgbGVnYWN5LXRydW5rCisxMjk4MSAwMTI1MGI4MzIzNzRhYjJjNTZmZmFiODhiNjZkZmRmMjk3ZWE5MWQzIGxlZ2FjeS10cnVuaworMTI5ODIgZWU2MTA5NDlmOTAyMjY0ZWFjMTAzMGYyMTNiYzMyYTQ0ZWNiNGRkZiBsZWdhY3ktdHJ1bmsKKzEyOTgzIGMyNTU0YmY2MTdjMzI1NjU5NmJmNTE5MmYyZTZkMWU2M2EzOWNjZDEgbGVnYWN5LXRydW5rCisxMjk4NSBiYWU2NTBmNTdjNDE1MGJiMGM0ODE2ZWE4NzI5MzQyMjFjNTM5YWEyIGxlZ2FjeS10cnVuaworMTI5ODYgNzU2ODNmZDM5ZTkxZWE0Y2RmZTNiY2Y0ODY4NWY3NDVhNDQwOWZiOCBsZWdhY3ktdHJ1bmsKKzEyOTg3IDc0NzRhZDdlMGE0NDlhYjkxNTAyMjk1YmNhZThkNWFkNGE2OTc5MTYgbGVnYWN5LXRydW5rCisxMjk4OCA1MDBmOGVjOWRlZDE4ZDZkZDQ5ODVjZGNjZDg0YzQ2OGQ5OWRjODczIGxlZ2FjeS10cnVuaworMTI5ODkgOGQxMTVlMTExYTE3NDBlOTNlMjU2OGM5NGU2N2UyNDNjZmZlMWYwYiBsZWdhY3ktdHJ1bmsKKzEyOTkwIDMwYzk0Y2Q0OWE2ODhhNjYwOGJjZTI4Y2IyMTE2MDZhY2RhMWNmNjEgbGVnYWN5LXRydW5rCisxMjk5MSAwNWU5N2Y2YTM2MzhiMzUwZWMzOTVlMDFlYjFhNDk5NTEwNDRmYzI5IGxlZ2FjeS10cnVuaworMTI5OTIgZWNkZmNlYTEyNDM4NTZjNjI3ZDY1MDBlZmMwMjdmZjBlODAxMDlkOCBsZWdhY3ktdHJ1bmsKKzEyOTkzIDg3NDllODhhYjQwNjYwY2MxMThmNzkyYzI0OWE0NWE1NzljODUwODkgbGVnYWN5LXRydW5rCisxMjk5NCAzOTBlNGMxMDNiZTI2ODhlMGEwY2E3YWVkNWVlNjMxZDRjYzc2YjY1IGxlZ2FjeS10cnVuaworMTI5OTUgYjIzNTc5MjRhOWE5MjZjZGNmMzliNTNkOTMyMDQ3ZmMwMjM4YmZjMSBsZWdhY3ktdHJ1bmsKKzEyOTk2IDQzMDUyZDViOTgwODM0OTI2MWE3ODk2MzE1NTMwNDU1ZWQzMWFhYjkgbGVnYWN5LXRydW5rCisxMjk5NyBmNWQ3YzQ5NDVkNWY1YjRkYzkyYjEwYTllODExODIyYjA1MjhlOTNlIGxlZ2FjeS10cnVuaworMTI5OTggZTY0YzhiODRlMjRiNzk1ZmIwMGU5N2ZkMzBhNDFkN2ZhYTI0NTE4YSBsZWdhY3ktdHJ1bmsKKzEyOTk5IDI0NmIxMzQxMGEzMTdlNGQwYWNiNDI1NDRjMGIyOGI2ODViYzIwZTcgbGVnYWN5LXRydW5rCisxMzAwMCBiYTFhMjdkNzNjZGIwYTMzZmFiYzM3NjhkZmY5Y2IzOTE5Y2UxMmNiIGxlZ2FjeS10cnVuaworMTMwMDEgOGQ0MGU2YmE0YzllMjE0MTZhMjhiZTM4ZDc5OWUyZDI4MTQwOThkOCBsZWdhY3ktdHJ1bmsKKzEzMDAyIGZlODY0NWU0OTMxNDgwYzViN2U3N2Y4MmM1NTgyY2M1YzM4NzlkMjYgbGVnYWN5LXRydW5rCisxMzAwMyA5OTM5MDgyODZhYzcxNjVjYWRhMWRkYTEwYTEyZDc3MTc5NDFkYjU2IGxlZ2FjeS10cnVuaworMTMwMDQgYzBmMTQ3ZjRmMTAwZGI5OWI5OTlkNDUzN2Q3ZWQ4ZjhlN2RkYmJkNiBsZWdhY3ktdHJ1bmsKKzEzMDA1IGUwOGRhMzRjNDU4MmZlZGExZWQzZTdhNzdlN2EzNDM0YmJkNzY2YmYgbGVnYWN5LXRydW5rCisxMzAwNiBmZTg4MWY0NDZjNWQyOGZlYTk3ZWZhMTg2MjVjMjYzMTI2OGQ1ZGUxIGxlZ2FjeS10cnVuaworMTMwMDcgNTM5M2NlNTIwN2M3MDY1MTYwY2RkY2QwZGQxNDk5OGVhYThkMjJmOCBsZWdhY3ktdHJ1bmsKKzEzMDA4IDQ4Y2RkZDBjYzczMzA3ODIyMGEyMDY0YmRlY2YxZmIwZjNhMGQ5YjAgbGVnYWN5LXRydW5rCisxMzAwOSAyMGZlYmE5Njc0MzcxN2I1ZDQ1NTVlYjYzY2Y0N2FmNWViN2NkOWJiIGxlZ2FjeS10cnVuaworMTMwMTAgNDVlOTk3NWNiMDkzOTQ4NTc2MDI5MGQyZTJjZDViOWM1MmEzOGJjMCBsZWdhY3ktdHJ1bmsKKzEzMDExIDc1M2YzZjk1YzUwZjE1YzhkMmFjNTk0YjMyM2YwNDM3NjU0NDhjMDcgbGVnYWN5LXRydW5rCisxMzAxMiBkNzk5ODlhNDM1ZDkyZTMxYjcyMmJhNzA2ZWVkMDhlM2ZmNDVlYTRkIGxlZ2FjeS10cnVuaworMTMwMTMgNjViM2NmZTZlNjY2OTI3OTcxMDVjYjdhNjY2YzgwZTVkNzFmNzk1YyBsZWdhY3ktdHJ1bmsKKzEzMDE0IGMzZWRjMTRjMzg4MGEzOTRkZTMxMWFjOTcxNDc2YmQ1NDlmODk0OTMgbGVnYWN5LXRydW5rCisxMzAxNSAyMTk5ZjcwYjBlZGE3MmM4OWMwYzA4NjQyN2Q0Yjc3MTgzOTYyNmIwIGxlZ2FjeS10cnVuaworMTMwMTYgY2E0NGZmNzQ4MmM3NzVkMTZiNzc2ZDJjOTIwYzZmMTU2NWM3Y2E1NSBsZWdhY3ktdHJ1bmsKKzEzMDE3IDgxZjRhNzdlNzMzNzMwMWIzNjY1MjBkOGM5N2NmNmNiZDM0NTFiMTIgbGVnYWN5LXRydW5rCisxMzAxOCA5NmJlYWVhZDg3NGY3NmEwNzkyZGIzZWE0YTVjMDQzM2NkOTZkOGY3IGxlZ2FjeS10cnVuaworMTMwMTkgNTYxMDU0NDk3NzFhNjg0MzNiOWZhNmZkNzNmOTFhMmU4YmIwNjBhNiBsZWdhY3ktdHJ1bmsKKzEzMDIwIGQzODQ4NjhhZDQ2MjJlYmI5MGM4NjgxYTJmMTI1ZjM5Mzc0YzhjMmEgbGVnYWN5LXRydW5rCisxMzAyMSBlM2Y1OWEwNjQ3MmUzYTU2NDMzOTk3Y2M2NTkzNjBjNzRkOTlhYzZmIGxlZ2FjeS10cnVuaworMTMwMjIgOWFhNjVkNDhkZDA1MTc3NWRhMTI2YjM2NDY4NTg5YjE1ZmY5OGRhYyBsZWdhY3ktdHJ1bmsKKzEzMDIzIGIxOWYyYTk4MjAzMDVmOTI1NDQ3M2JlYjc1ZDUwM2I5M2MyZGMyODQgbGVnYWN5LXRydW5rCisxMzAyNCA3ZWUxZTMxMzQxNDczZjUxYzI0ZGUwMWU4M2ViMWI1YWY2YjFlOGI1IGxlZ2FjeS10cnVuaworMTMwMjUgZjAwNWFjNzM1ODYzNDEzYWRhZWZhNWFiMDFiNTk1OGI0M2UzYzZiNyBsZWdhY3ktdHJ1bmsKKzEzMDI2IGI1ZGVhNGM3OWQyNGUwYTBiNTYwYmY2NGE4N2EyM2U2MDcyMDA4NjcgbGVnYWN5LXRydW5rCisxMzAyNyA0NzRjNWI4MmQ3ZGU5OWY3ZWUwNDJhMGM2ZGZiZjFhMDNmMmU3ZWFiIGxlZ2FjeS10cnVuaworMTMwMjggODc4YTU0YTA2MTE3YjM5Yjk5NGI5ZTgzZGFmMzE4NzM0ZTE5YWM0OSBsZWdhY3ktdHJ1bmsKKzEzMDI5IDYxYmVjMWU1ZmE1OTNhOTc1Njc5MzQyNTFiNmFjM2JlNDc3NGUyMDAgbGVnYWN5LXRydW5rCisxMzAzMCA0MTU3ZjM4NjJhMDlkZjE3MTc0NmIxYmRiN2FlNzAzYmI0ZTM4M2MyIGxlZ2FjeS10cnVuaworMTMwMzEgM2VlZmU2YjA4NjYyZjQ1MjlhMzJmMWJlZjIwZDQ2NGFlN2E2NGNkZiBsZWdhY3ktdHJ1bmsKKzEzMDMyIGQ0Y2U5ZjFmNjI2NjZlNGQ4OGQ4YjJhY2M1ZGM0N2Q4YzdiZGZkNDUgbGVnYWN5LXRydW5rCisxMzAzMyA1NDBjODE3M2U0ZmRiZmVjYmEyNDY1NDdjN2I4MWFmOTUzOTA2MTBkIGxlZ2FjeS10cnVuaworMTMwMzQgZDgzNGVjZGY4YzI2ZTBkZjkyMzE4N2YyMGJhNDdhY2E2ZWYyZTIyMCBsZWdhY3ktdHJ1bmsKKzEzMDM1IDllYzlhYmZlYzc5NGVjMTQxZDdjZDY5YzBlNWQwNmQyMTM1ZTU1NGEgbGVnYWN5LXRydW5rCisxMzAzNiBjMDRmMDNlODJhNzU0MzgyMDgwNzczM2E2ZmY3ZWRmZDUwZDIwMzdkIGxlZ2FjeS10cnVuaworMTMwMzcgMzJiYTA5Yzg2OTE3YmI3MGY1YTQ4NjhiNjRiZDY1ZWJhNWVkZTM2NCBsZWdhY3ktdHJ1bmsKKzEzMDM4IGE0YTI2OGI3MjViMmE0NjIzNmY4MGU3ZmNjMWIzZmI2NjFiOWNlNmIgbGVnYWN5LXRydW5rCisxMzAzOSBiNjI3MjRiMDkzMDJlNzQ5Y2M1OTNmMzg1MThlMjg4MGNmZjZmOWFhIGxlZ2FjeS10cnVuaworMTMwNDAgOTM0NzE5YzI1YWY4MmVkZWYxNThlYjdlMmZjYmQxZjdkZmQ3ZTJiOSBsZWdhY3ktdHJ1bmsKKzEzMDQxIDNmZTk1YzJiMzcxMzRlYTY5NmUwZmUyZTYyMjc4MzRhMDcwNjdkMTEgbGVnYWN5LXRydW5rCisxMzA0MiBjY2VlM2MyOGI3ZWZmMWJmNWUxZDEwNzFjZWQ3NGY3NGI5MGIyYTk4IGxlZ2FjeS10cnVuaworMTMwNDMgNWY0NTRiNzA2MTU2ZWEzMWM4OGM5ZmFlNzBmYzZlMDE4YzVlNTRlYyBsZWdhY3ktdHJ1bmsKKzEzMDQ0IDBiZWI3ZDM2YzFhOTc2OTQ3MjYxMTIwOGYzNjQ0YTg3MDcxMjNkZmUgbGVnYWN5LXRydW5rCisxMzA0NSBmMjhlNmEzYjkxMzRlMTgzZWYxZjE4Y2YzYzBlNGYwZWEwMWI0YmVmIGxlZ2FjeS10cnVuaworMTMwNDYgZWRjN2IyOGQ5MDUyMTEzNmI1M2RkNDc0Mzc5YTUzMjg5ZjU2NzFhYSBsZWdhY3ktdHJ1bmsKKzEzMDQ3IDVlOWVhM2VhYjc3YzgxMDI1MzA3NzE1ZDUxNTMyZWJlZmVmM2EyZGQgbGVnYWN5LXRydW5rCisxMzA0OCAzNDAwYWExYjAwNzNmYzc4YzM2Mjg2ZDZlMjNlNDU3MDNlNzI5MmJjIGxlZ2FjeS10cnVuaworMTMwNDkgYzBhNjllY2Y5NjQ2ZjYxYTYwZWQxZjY4YjNmMzUyYzNhMDUwNDU4ZCBsZWdhY3ktdHJ1bmsKKzEzMDUwIGU2OGQ1MzdlYjUwZmVhYjc3MDVmYTIxYTQ0NzVlOGM2YmNmMmRhNWUgbGVnYWN5LXRydW5rCisxMzA1MSA1OTgwYmIwMDFmODY0ZWMwMDY2ZTRmM2ZmMDg3ZjU5ZDAwYjBkNDAxIGxlZ2FjeS10cnVuaworMTMwNTIgOGMxY2ZlOTY1ZDliMmRjMzFmMTA1M2Y0MDhhZDgzMTJmNGJjYzgzMiBsZWdhY3ktdHJ1bmsKKzEzMDUzIGFlNjFiNzBlZmRiM2E5NDhiZmE4MWM5NTk3ZDAyZjEyNjFiZWRjYzYgbGVnYWN5LXRydW5rCisxMzA1NCBjNjliZmUwZWNiZDg3MDZhMzVjNzdkZGVhYWI3YzkzNmI0YTM1ZjZmIGxlZ2FjeS10cnVuaworMTMwNTUgYWZmMDdlMDQ5YWVlZmEyYmU0MzIwOGFkMGQyNmQ3M2M0OGIzM2FkMCBsZWdhY3ktdHJ1bmsKKzEzMDU1IDM5ZmIwZGNjODNkYzM3NWMxNTY1YmE2NWRiY2UwZWQ1OWIxMzU5YzkgbGVnYWN5LXRydW5rCisxMzA1NyBhODM3YTZhZWQ4M2U2ZGUyZjM0NzcwZWI0NGIyNWQwZmY4ZjJkMGUzIGxlZ2FjeS10cnVuaworMTMwNTggMDVjZmEyOGU2NWY2MjQ1MzcyMjI0OWNiODRkOThiNGJhNDc0OGFmZiBsZWdhY3ktdHJ1bmsKKzEzMDU5IDI0M2NjNmQ5YzViOGZiZTBlZGExN2YxNTY3OWMzYTcyNGRmMTVjYWMgbGVnYWN5LXRydW5rCisxMzA2MCBlM2U1ZDc2MzY5NTg2NzljNDEzNmE5N2U4ODk2NTcxMDJmYzVlOThkIGxlZ2FjeS10cnVuaworMTMwNjEgMjg2YjJjZTY1MjQ4ODY0OTNkNTAzZWVlZDUxMzJkZmUyZDhlNzk4NyBsZWdhY3ktdHJ1bmsKKzEzMDYyIDhkMmE4YTQ5ZDk4MzkyMTIxOGJhNGEwNDE1NGE4MzJhNWMxMDU3ZDYgbGVnYWN5LXRydW5rCisxMzA2MyBhZmFhM2FhODM1Zjk4MzM3OWE3Nzg5MzU5MWI5YjNjYWIxZjQyYzE0IGxlZ2FjeS10cnVuaworMTMwNjQgOTcwZDYxYmI2YWNmOTM4M2IzNTZiZTRmMWY1ZjBhYzM0OWNhZWI2MCBsZWdhY3ktdHJ1bmsKKzEzMDY1IDNiZTA1MjViZjQ3ZjFhYzQzNjhlOTY0MmRkODViYjc1Yjc1ZmZkMjUgbGVnYWN5LXRydW5rCisxMzA2NiBhNDI4MjRjZjBiMTgxZTI4NmIyNTNkNWMwNzcyY2U1YmVmZDM5MWUwIGxlZ2FjeS10cnVuaworMTMwNjcgZjZmYzY3ZDcwNWRlYWQyYmQ0MWUwODc1MzM2MjVkMjc1NjAwYzdlOCBsZWdhY3ktdHJ1bmsKKzEzMDY4IDA0YWZjMWFjMWEwZmQ5ZmM4YjNlOThkOWJiOWE0ZDE0ZTk3MTcyZDAgbGVnYWN5LXRydW5rCisxMzA2OSAxMDRhNDQxYjJiYzhjZDkxZDUyOTAwMjcyODdlOTQ5YWY4MDQwMTAyIGxlZ2FjeS10cnVuaworMTMwNzAgN2JmM2Y0MTJlMTM3ODYxYmZjNjkxOTI3YjJhODdkMmRhY2U1Zjk0MiBsZWdhY3ktdHJ1bmsKKzEzMDcxIGRhMTVlZDMxNGUyNDI4MTQ3NjNmYTQ5YTMyOTRkYjYzNzhmMDg4ZDIgbGVnYWN5LXRydW5rCisxMzA3MiBiZmYzMzgyYzZkMmY1MWVmODhiMTY3NWI5OTlhM2JhM2E1ZDM5MzVkIGxlZ2FjeS10cnVuaworMTMwNzMgZjU4MDQ2MzM5Y2JmMzVkOWI1ZjA4OGMyNmRiZjY5Njg3YmMwYWUyZSBsZWdhY3ktdHJ1bmsKKzEzMDc0IDRlMGNjNmUwMmEwZGU5Y2M1NjZmMWYxZDYyYmNlNTJlNzc1OGE1MDYgbGVnYWN5LXRydW5rCisxMzA3NSA0YWZmMzkxNzUxMzcxZGE1Zjk1NDg1NGE5ZTdkMjJlYjNlOGUxYmJmIGxlZ2FjeS10cnVuaworMTMwNzYgMTBiZDJmYjJhMGQ2N2Q5ZDNmZWRjYmQxMGNhMzhkMDA3Yjk0YzIyOSBsZWdhY3ktdHJ1bmsKKzEzMDc3IGFmMWU4MTljMDQ0NTY5YmZhYWRkMWIyMTBlYWQzODI0OGJhY2Q4YmUgbGVnYWN5LXRydW5rCisxMzA3OCBmOTZiMjcyOTgxYmNhNjRhZDJjY2RiNzBkNTFmNTk5YjkyMTY0OGYwIGxlZ2FjeS10cnVuaworMTMwNzkgNTYxNzJlMGVmYjc1MmVjNjUzNzQ4ZjI2YjExNGRkMDUzZTI5OWQzMCBsZWdhY3ktdHJ1bmsKKzEzMDgwIDZlN2YxNGFmODliNzFmZTI0YWQ1ODFkZGIyYTZhMjliOWVmZGQ4NTYgbGVnYWN5LXRydW5rCisxMzA4MSA4ODViZTYwMTA0ZDQyMzU1MDgzMDBiYjRjYjgzMGM0ZjJjM2EzZTQ3IGxlZ2FjeS10cnVuaworMTMwODIgNjM0MmNlNGZmOTQ2NTRmMDM5ODRmYmRhZmE1YTlmNjY0YTIwYTMyYyBsZWdhY3ktdHJ1bmsKKzEzMDgzIDFlZDFlYjViYzZlYzBhZTgwNDJjMzRmNjU1ZGM0YzZkMTRmZTgxYzcgbGVnYWN5LXRydW5rCisxMzA4NCA0MzlmYzg1MzI0Y2RkMjIzNzQwNmU5OTU4NjQxNGYzM2NkNmUxZGNiIGxlZ2FjeS10cnVuaworMTMwODUgYmJiNWFmNzhhMjU5Mjg5MDhiOGZmNzBmN2RmYmIwY2Y2ZDEyYjY2MiBsZWdhY3ktdHJ1bmsKKzEzMDg2IGY3YjhmODg2YjUxYTc4YzQwYWUzMmI5MDYzMmIwYWVhYTdmNmJjNGEgbGVnYWN5LXRydW5rCisxMzA4OCA0NGRhMDM2NTFiZDAyYWQ2NGIyZmYxZDAyYzg2NTU4MDk3NzVlOGQ4IGxlZ2FjeS10cnVuaworMTMwODkgZTQxMTEwZmY4YzJmYTA3YjEzNmY0MGVjNWRiYTQxNzE0ODdmMWVlYyBsZWdhY3ktdHJ1bmsKKzEzMDkwIDcwMGRhYTc1ODQ3YTVkNGI0Mjg2MDBhMDMzNDU5YTg5MTIzNjBkYzQgbGVnYWN5LXRydW5rCisxMzA5MSA4ZGE0NmQ2YjhhZjNiMjQxODY1MmE0YjgyNGNiMzI1NDUyYTVkZjZmIGxlZ2FjeS10cnVuaworMTMwOTIgMDQwYjUyODY4ZmU4Y2UyMjY4MTU5NDZhZmMwYTk0MTI3N2QwZWVkMCBsZWdhY3ktdHJ1bmsKKzEzMDkzIDI1MWJhYTAzMmFmMGMzY2IyYTkwMDVkMzNhMmM5NDJiZjMzYzQxNDkgbGVnYWN5LXRydW5rCisxMzA5NCBjZTg2MWI0M2VmNTM1NmYwOTRhZmI3M2EzZjFjNzhiZDY3NGZiYzY1IGxlZ2FjeS10cnVuaworMTMwOTUgMDk2NWFhMmRmNWNhZDhjOGM4MGYyNDk5MDBjYWI0ZDEyOTZiZGNhZSBsZWdhY3ktdHJ1bmsKKzEzMDk2IDgzZDM4YzRhZDFkZWZiMDhlMTVmNjFjZWZmYjBkOWM3ZTNkMzQ3YTMgbGVnYWN5LXRydW5rCisxMzA5NiA2MWM5MWM3ZjEwMWJhYjMxNDlhZGZjZDU2NDZhZTQwZTA0OGRlNzEyIGxlZ2FjeS10cnVuaworMTMwOTggYzMxYjg4MGFlODRmOWQyMmIwMzU0NmViOWViNDkxZThlNzA3NDVmNiBsZWdhY3ktdHJ1bmsKKzEzMDk5IDI5YWJiN2Q5NmMyNTk1MThjMTJkYjc5M2U1ZWUxNDFlMzA1YzQ3MGMgbGVnYWN5LXRydW5rCisxMzEwMCA0ZTI2OTQxNGVlZTUzMGE2N2QxNDM4NjU4NWI4Njg5MzlkZDZlYzI5IGxlZ2FjeS10cnVuaworMTMxMDEgNjNjN2E4YWM0ZTRjZjljZDMwOGZjZTJiYTQxNWFmMjU2YWUxNTlkNyBsZWdhY3ktdHJ1bmsKKzEzMTAyIDU2NmJkODdlMDAzMmU2OTJiZGY3Zjg4M2ZkZTI1NmY2ZGJiMDAzZTkgbGVnYWN5LXRydW5rCisxMzEwMyBjODc1OWJhODM1NTJhNTZiOWY2MWMzMDAxZTY4ODlmNzE5MzhlNWJhIGxlZ2FjeS10cnVuaworMTMxMDQgODc2ZDdlNzkyMjUyYzVlMDUyMjJkMzQ0ZWZhZmNmY2Q0NGFiMjkwOSBsZWdhY3ktdHJ1bmsKKzEzMTA1IGRjZGJiMTAwMDYwZjJhOWY4YjBmYWZlOWJhNmJiNTkwOTA0ZjhhZjUgbGVnYWN5LXRydW5rCisxMzEwNiA5MGJkZjhmYTc4YTliOGViN2E4MGViZDI4ZTAzMDA2YjhlNzZjZmQ0IGxlZ2FjeS10cnVuaworMTMxMDcgMmFiOTY3Zjg0ODk1YjBkZDgyZmNmMjYyYTMyYmM2ODk5ZWQwZGQ2NyBsZWdhY3ktdHJ1bmsKKzEzMTA4IDI4YzQ0MzcyZGUzODQxZTJhMWMxM2YzNzI2MTBkMTRmYzU5ZGM0YTIgbGVnYWN5LXRydW5rCisxMzEwOSAzZGUwNDRlNjUwYTFiNjNiZWYzMzM1Njg0M2FmNTE0NTc3YjFkZjFmIGxlZ2FjeS10cnVuaworMTMxMTAgMDI3MDFiOTlmOWJhYmI5NjhhZGM1OGZlM2ZkODcxNzM4OGIxZmUxMiBsZWdhY3ktdHJ1bmsKKzEzMTExIGZlNWZjYjdlNzNmNzliZDU1MTAyMzEwNzczZmZlM2VlNjg3ZTY3MzggbGVnYWN5LXRydW5rCisxMzExMiBmY2FhYzQxZjZmM2EwMzNmYjRiYmU5ZTY4Njg0ZTFiNGMxM2Q1MmNmIGxlZ2FjeS10cnVuaworMTMxMTMgYjQ4ODlmMTA2YzNiMTgwNmRjZjc3ZDNlNzgzNmEzYmEyOWZkNGIzYSBsZWdhY3ktdHJ1bmsKKzEzMTE0IDI0MTlhNmM5ZjYyODEwNjNmOGZiZDdhZjhkMTIwMWJhZmIxYWYyYmUgbGVnYWN5LXRydW5rCisxMzExNSAzZjFlNzJjNzFiM2E1Y2JkNmY2MWVkM2U2YjdhMDgxZmI3NmU5NmMyIGxlZ2FjeS10cnVuaworMTMxMTYgNmY4Y2RjN2UyMjVjOTE3N2Y2OTQ1M2I4ZjA0ODA2ZTYzYWU5MTYwYyBsZWdhY3ktdHJ1bmsKKzEzMTE3IGY0MjVlNjBhYzcxYTQ2ZDgyYzI5ODEwYzdjMjczZGRjOWJiZDM3MmYgbGVnYWN5LXRydW5rCisxMzExOCBmNjE0ZjVjZjJkZWM5ZTNkYzg0ZjdlZDc2MWZhNjQyYmEzMTQyMGM4IGxlZ2FjeS10cnVuaworMTMxMTkgYTA3N2U1ZGE1ZmE1NzMwYTBhODZhNTNkMjk1OGE4ZjdlZGFjZGZlMyBsZWdhY3ktdHJ1bmsKKzEzMTIwIDU2OGU5NDcyN2EwY2M4ZDlmYmJlOGNmM2FjNzc4NzNjOTcwNWEwMjggbGVnYWN5LXRydW5rCisxMzEyMSBhNmI5ZDQ1MDAzMTc1Mjg5MDgwYzMwYzQxNGJkNzcyNTVmOTE5MmViIGxlZ2FjeS10cnVuaworMTMxMjIgMDEyZDM2MWZkZjIzYThhMzQ3YzMwMThmMjhmM2I1MzdhZGQ1NTgwZSBsZWdhY3ktdHJ1bmsKKzEzMTIzIGY3ZTliYzhkYTEzZDIxNjMzZWFhNDJmMjE0YTc4Y2NkY2NlM2UxODQgbGVnYWN5LXRydW5rCisxMzEyNCBmYTQ2ODVmZDVhZGZmMTM0NDhiY2U0ZGFhNWQxNTM5ZmY5NmJmM2I3IGxlZ2FjeS10cnVuaworMTMxMjUgODkxZDA4OWFiYTQxMmJhNjA5NWRhZTlhMGVjOGU1MDZkYWVhMWZjOSBsZWdhY3ktdHJ1bmsKKzEzMTI2IDViMTcwZjBkYTlmZWJkOTkyMmMzZDQ1ZWVlMzliYzBiZTk1NzFhYzUgbGVnYWN5LXRydW5rCisxMzEyNyBkZGNlZGRlZjU4YTFjNzFhN2NlY2ExOGVlNGY1MWYyOTVlOGJiOGRkIGxlZ2FjeS10cnVuaworMTMxMjggODRkNGYxNzI2NjlhNmZkMzdkMzFlY2JmZTJlNjYwYzNmMDkwNjg5OSBsZWdhY3ktdHJ1bmsKKzEzMTI5IDM0ZmQyNTI0MjczMTlmMjMxMTNlYTMzZmE4NjFjNjEyNjIzZTI0ODMgbGVnYWN5LXRydW5rCisxMzEzMCBhZDU1YmRiYTVkZmZlZDhjYTIwYjQ2MjA4MWE0ODhkMWM3MWQ3NDNlIGxlZ2FjeS10cnVuaworMTMxMzEgMzdkZDhiOGIxZDg0MDM5YTI4ZWI0YmM3YTNlZWIxZjNmMDI2YWJiZSBsZWdhY3ktdHJ1bmsKKzEzMTMyIDc1ZjEyODcxZWVlYTdiNWM5MmQxYTUzNGNiNGM3NTdhYTllMDk2ZGMgbGVnYWN5LXRydW5rCisxMzEzMyAxOGM3NGQ2YmNhZTg4MDc0MTQ0MTVmYWE5ZTIzODEzNjliODc2NzNlIGxlZ2FjeS10cnVuaworMTMxMzQgMWJkZWExN2JjNDcxZjI1ZjdhOTc3MTQ3OTljYWQwYzVkODllY2EyMyBsZWdhY3ktdHJ1bmsKKzEzMTM1IGQ3MTk3YjMyZmJmZWExZWNjMTlkNjhiNGYzNDEwYTEwZmNmYWRhNGMgbGVnYWN5LXRydW5rCisxMzEzNiA2NDcyNzI4ZGYyZDBjZjJkNjQyMzYwNjI4NzFmNTJlM2YxODRlODU3IGxlZ2FjeS10cnVuaworMTMxMzcgNDZhNzA4YjBjYTM4ZjAxMDY5YzI4NTMyODRmYTJkYWZjOTMyNDRmOCBsZWdhY3ktdHJ1bmsKKzEzMTM4IGFhNGVjYjcxNmU2ZTFjOGE2YzY5ZjI0YWYwNDljZGVmMmEwZTJjMmYgbGVnYWN5LXRydW5rCisxMzEzOSBlMjY0MzkyZTE1MzYxZjk1Njk3MmJjNDNiMDNlNWQyNGMzMTQwZmNjIGxlZ2FjeS10cnVuaworMTMxNDAgM2MyNTkzNzBhYzU3YWIxZWE1NDBkYWM1ZmY0NGQyMDg2NWMxZGIyMyBsZWdhY3ktdHJ1bmsKKzEzMTQxIDlmZDI5MDIxZDE0N2VhYzlkMjZjY2YyZDc4M2QyZDMzODI5MTVjMTQgbGVnYWN5LXRydW5rCisxMzE0MiBiZWQxNWEwMTVjMWMzOTRlYzliODZmNDExOTdiYTYxMTE3ODcyOTMxIGxlZ2FjeS10cnVuaworMTMxNDMgZGY4YTFjMjgxYWQ3ZDc0ZDQ4OThjY2FlYzYwZjJlMzRkN2YyNjY3MyBsZWdhY3ktdHJ1bmsKKzEzMTQ0IDM2MDQ5NGMyNWUwZTVhOWQ4MDJkZjg1M2NmNDEwN2JkZjlhZTE2N2IgbGVnYWN5LXRydW5rCisxMzE0NSBlYWNhMzc3NWI0MjVkN2JkMzg0NmZmNjRiNGUzZTJjOTI5ZDMxYzJlIGxlZ2FjeS10cnVuaworMTMxNDYgZjZlYzRhOWNiMGIzOTNmZDIzN2JhNjc0ZGVlOTA1Y2MyZjVmYzhiMSBsZWdhY3ktdHJ1bmsKKzEzMTQ3IDYzNzJjMmE0ZDQ3YmQ4MTRkYjJiZWEyMTUzY2ZkYmQ5ZDBlMTRiNGEgbGVnYWN5LXRydW5rCisxMzE0OCBlM2EwODk4M2NkMjUxZjhlZmU3MjMxZjUwYjEzMWI1NTRhZmZlNjE3IGxlZ2FjeS10cnVuaworMTMxNDkgY2Y2MmFmZjEwNDY4N2E0YjNjNDE0MzlkYTNjOGYzNTVkNWZjMTFkZSBsZWdhY3ktdHJ1bmsKKzEzMTUwIDQ2Nzg4ZjE2NjUwYjA3YjgwNDI5MTBhNjQ0NWZkMzNmNzBlMWEzNmQgbGVnYWN5LXRydW5rCisxMzE1MSBlMDlmMTk0NDExMzZjYTM5ZDY3NjA1NmY2OTZhMDMxZWQzNzQyNjg5IGxlZ2FjeS10cnVuaworMTMxNTIgYzc0NzBiMTRkZWM3YzNkZjA4MWMxNjEzNGY0M2ZlM2IwYjExZDM0OSBsZWdhY3ktdHJ1bmsKKzEzMTUzIDQ4YzMzZDA1MzY3ZjJhNWU4MjUxMDVkNjA0NjJlNDIyZmY4Mjg0OGIgbGVnYWN5LXRydW5rCisxMzE1NCA0MzY5NGQzNTM0NDIxOWJjOTUyYmUxODIyYWRiM2U3ZmVhZWM1YzNlIGxlZ2FjeS10cnVuaworMTMxNTUgYzk5ZTY4N2QxYWM0YWM2NTFhMzQzYTVhNGYyMDgzMGRhMWM3NjNjMyBsZWdhY3ktdHJ1bmsKKzEzMTU2IDhiMzhjZTQyMjgzZWNiY2ZkNWUzY2Y2MWNhNTMwMTVjNTUzMjkyMWUgbGVnYWN5LXRydW5rCisxMzE1NyA2YzI2NTExM2U3ZThjNmZhNzFhNzEwZTI5ZDQzOGJmNWQ2YzBjYzUxIGxlZ2FjeS10cnVuaworMTMxNTggNDJkYmZkNDk4Mzg3NjczMmRkNmEzMjNlYjBiNjU3OGVlMDhiYThkMiBsZWdhY3ktdHJ1bmsKKzEzMTU5IDk4ODNlMzBhY2FjNTkyODg2MzBjNDg3NjZjM2I4ODJkZDJkMmRiZjkgbGVnYWN5LXRydW5rCisxMzE2MCAyOTliZjUzZTY4NjE2ZWZiZmE4NGU5MWNjMzM5ZjAyNWFjY2VhMTBmIGxlZ2FjeS10cnVuaworMTMxNjEgOGU3MmZjNTdmNTVmZDQzMWY0YjNmMDkzODc5NmI2MmU2ZjBmYjA0MyBsZWdhY3ktdHJ1bmsKKzEzMTYyIGQyMDNjYjllY2UzNzI3N2RmMTVhMTYwMzU0NjI0YjdlNDZhNDEyYmUgbGVnYWN5LXRydW5rCisxMzE2MyA5OTY4MWVlODY2OTgyZDA2NGQ4ZDkyNmMzN2U3ZmJkOTYwMTAxOTg1IGxlZ2FjeS10cnVuaworMTMxNjQgNjlmYjgxZmFjYjAzNzg0YzUwNTAxYTE2MTNkOTNhMWVmY2U4MWIxMSBsZWdhY3ktdHJ1bmsKKzEzMTY1IDk1YWMxYzhjMDg1ZTU0Y2UyYzc5ZjY1NzNjMjlkODllOTRlNWJkY2QgbGVnYWN5LXRydW5rCisxMzE2NiBhNzFjNjM2Yjg1ZDE0YTM3MzBmYjJiMTYwZGRiZjg2YzQ0YmYxZTJiIGxlZ2FjeS10cnVuaworMTMxNjcgYWIwMjMzNDQ1M2Y5NmQ0NzAyZWZlZDRhYjQzMmI0NmRkNzQyOTJkYiBsZWdhY3ktdHJ1bmsKKzEzMTY4IDM3YTIyMzZkNDcyZjJmNGYxNTk3N2ZhNjYzNjQxMzBiOTMwMDNmYTMgbGVnYWN5LXRydW5rCisxMzE2OSA5MzM3MzIwMjZlOWNkNDlkODdjMGQ4NDhmMGRlYWIzZmQwNjE4ZTEyIGxlZ2FjeS10cnVuaworMTMxNzAgN2QwNWJiM2UxMzVmNjI3NzY3MWUyNzZiMzE2YTk5ZDE2ODEzZGExYyBsZWdhY3ktdHJ1bmsKKzEzMTcxIGJlYmU5ODMwYjMzY2RhMTk2YjY1MzYxYmZhMmE1YzY4Y2ZlNWUzYjUgbGVnYWN5LXRydW5rCisxMzE3MiAwMmViNzQ3NDkyNjJlNTViNWYzMmMxMjgwYWFiN2RkODQxY2JiZTQyIGxlZ2FjeS10cnVuaworMTMxNzMgOGM2ZmZlNjcwOTYzYjAxZWM5NGUyZTQyZDRiMWMzYWE1YWIwOTA4ZCBsZWdhY3ktdHJ1bmsKKzEzMTc0IGUwNWY2YmRjOGI1MjA0NWMzNWFlOTlkMDNkYTQ3MGZlYjIwZWY2ODEgbGVnYWN5LXRydW5rCisxMzE3NSA4YzBhNjBmYjZhY2Y2OWNkNTY1OWEwMjg5ZDMzN2M1MDFjM2QxOTNjIGxlZ2FjeS10cnVuaworMTMxNzYgNzk4NjU1NTU2NDU2NTUwZGJlZDI0ZTRlZDgxOGFjY2QxZTk5NjZmMyBsZWdhY3ktdHJ1bmsKKzEzMTc3IGY2MDYyZTU5MjM4ZjNlMzVlYTAwZDVjMmE3Y2M5M2NkMGVjOTc4NGEgbGVnYWN5LXRydW5rCisxMzE3OCBlMmExYzhkMjMzZGY3MTkyMDcyNzI0OThjOWIwMzI0YjRhZWU4Y2ZhIGxlZ2FjeS10cnVuaworMTMxNzkgYjI2MDZhOGZjYWFiYTk2N2RiMzM0M2M3Mjc4ZWU1NzI4ZDAzNzhhOSBsZWdhY3ktdHJ1bmsKKzEzMTgwIGVlODYxZDdiYzBlOTMwY2ZjNzhhMzNmYjY5NjIxZTg1OTcxN2JhMmQgbGVnYWN5LXRydW5rCisxMzE4MSA1OGRkZWUxMjU2ZTk1NDA1ZTc3MzMyZjY4ZjJjOGU0MTNkNjRjMzhiIGxlZ2FjeS10cnVuaworMTMxODIgOWU0YzU3M2VhNDliYTZiMzJjYTYxMWQ2YmJmNzIwN2UwYzI0ZGQzNiBsZWdhY3ktdHJ1bmsKKzEzMTgzIDE5YjQ4NzAwYWNkYmJmNzRkYTMwZWQ3YmYxYzljNzM2YmEwZjA3Y2UgbGVnYWN5LXRydW5rCisxMzE4NCA0Y2I4NDk0YWJhNjIwZWYyN2VlYWE2MTRkNTI5ZDMyYWVlOTU1NTA5IGxlZ2FjeS10cnVuaworMTMxODUgYWUxOGU4ZWViZTA0ZGE4ZDRmNGFkOTAzMDAxYzVlMWYwMjJlNTAyNCBsZWdhY3ktdHJ1bmsKKzEzMTg2IDYzM2QyZjdhMWU0ODgwNWMwYThhNDhhMWVjYTZlNTMxMTgwODUxZmUgbGVnYWN5LXRydW5rCisxMzE4NyA3MTM3NDAwMDM3ZTAxNTkwMTU0Y2E2ZDY1MDZmN2VmYWE1ZDE4Nzk1IGxlZ2FjeS10cnVuaworMTMxODggM2JiMDI5YzZkZDM3ODIyYTA5ZGMzZWU5ODJkYmI3MWQ5N2I1N2IyNCBsZWdhY3ktdHJ1bmsKKzEzMTg5IGY2NzExOTVhZjAyMGVkOGRiNDgzYjlmY2U5M2RiYWI3N2RkOWQwN2EgbGVnYWN5LXRydW5rCisxMzE5MCA4NWNmNDc2NjU3YzVkZTYxOTg0ZTVkNWZmMGJkNDc2NWUxYTc4MDg0IGxlZ2FjeS10cnVuaworMTMxOTEgYWUwMzA2YWFhNjg4ZTExYmU1ZDhkMjJkMzQ3ZGIwYTA0MGI1YTJlMSBsZWdhY3ktdHJ1bmsKKzEzMTkyIDNiODc2MmI4YzE0MGQwMTZjZTQ1MjU4ODdlYmQxYTIyYzE0ZWUxNzggbGVnYWN5LXRydW5rCisxMzE5MyA5MjFmZjM4NWYyNTZhMThhYzI3MTgwMmMwZmRjN2RlYzBlZjFmZTQzIGxlZ2FjeS10cnVuaworMTMxOTQgOWI3ZDhlYzliOTEwYzMyMjRiOWM0ODg3OWM2Mjk2YzI1MmU1ZDBhYSBsZWdhY3ktdHJ1bmsKKzEzMTk1IGE5ZDYxM2FiNWE3NjVlMzM1MTllMDUxNDg2ZGQ0N2FhMzY5NmRjYTEgbGVnYWN5LXRydW5rCisxMzE5NiBhYjEyYzYzMWQ3MzVkNDhmZjdjMGM2MmUwYWRkNmZlYTBjYzNkNTJhIGxlZ2FjeS10cnVuaworMTMxOTcgZDMwY2NiMDBiZDdiODBiNTgzNzRiMDFiMmY3YjJiOWNkZjFiMTI3NyBsZWdhY3ktdHJ1bmsKKzEzMTk4IDllMDQwMmVlMzgxMjA2ODk3NzE5NmFjNjI5NzZiN2Y4MzM1NDIzMjIgbGVnYWN5LXRydW5rCisxMzE5OSAyNWNjN2YwZDQ1ZjM4ZGFkYzg5YzJlY2FmYTE0MTk3OTZjMmNhZDc4IGxlZ2FjeS10cnVuaworMTMyMDAgMGI4YmE5MzUxYTA2MzUxNjg0YjM1ZDAzNTNkOGFkY2E1M2JmM2Q5OSBsZWdhY3ktdHJ1bmsKKzEzMjAxIGU3MDM5NzlmZjVlNzQ2OTI4Yjg2NGE1NDA2NzNiZGExNTJjNTZjMWMgbGVnYWN5LXRydW5rCisxMzIwMiA2N2E0YWNlZDBkODhlNTNhODNjMGI5ZDcwNzdhM2MzOGI4MmE3NjViIGxlZ2FjeS10cnVuaworMTMyMDMgNDgyMjYxN2IzOWYxNGE3Mzc3OWM1OTE1OWI2ZWRiMjhhZGI5ZDI5ZCBsZWdhY3ktdHJ1bmsKKzEzMjA0IGFiYTFjZDBkMTNlYWZiZDQ1NjlmNmUwMGIyZmQyMjE5ZDUyYWM0NzUgbGVnYWN5LXRydW5rCisxMzIwNSA4MWY1MTEwNWY0Mjg4ZDIzYmVjZTU3M2IyNjkwNTBmZDg4ODBmNWIwIGxlZ2FjeS10cnVuaworMTMyMDYgMzQ2ZTlhMGYwZjhjN2NlNmE2OTBlYmVlNDY5NmZhNTNhYWZkZDViNyBsZWdhY3ktdHJ1bmsKKzEzMjA3IGM5MDNlY2VjYmE2NjliYjMwZjBmNzE2MDVhOGI5OGYwYjI4ZDhjYWIgbGVnYWN5LXRydW5rCisxMzIwOCBlNGU4MDBhNzhkOGRkMjc5OTQ5YTVjM2FhYzI0NmExZTU1YWUzOWIyIGxlZ2FjeS10cnVuaworMTMyMDkgNThiMTkxYmFkYjlhOGI1ZTAzYjUwZGJjYzZjODJlZjczOTVhNmQzMiBsZWdhY3ktdHJ1bmsKKzEzMjEwIDQ3ODhmZDA3MGEzMGIzZTFkMTRmNDVlOGEzODIwOTk4ODQxNjdjNTMgbGVnYWN5LXRydW5rCisxMzIxMSA4NTExZWZlYzczMDljN2UzNTQ2Y2ZmYjkzNWUyYTBmYjE2ZjlkNTE5IGxlZ2FjeS10cnVuaworMTMyMTIgY2FkN2I1NWEzNjNmZjU0NjNjODA1ZTc3ZGQ4Y2QwZjA2NDNhODJhNCBsZWdhY3ktdHJ1bmsKKzEzMjEzIGIyYWFlNzE5ODcyMzg2Nzk1ZjNiMTIzZWZlNjM0Y2E0ZjY2NGNjZDUgbGVnYWN5LXRydW5rCisxMzIxNCAxNGY2ZTBkYzk2MjI5ZmNlMWQyZDA5YmFlOTcwOGVmYjNlMzFmNjQ0IGxlZ2FjeS10cnVuaworMTMyMTUgZDhiMmY4MmYzM2VkMmRkZTQxNTA4M2FhOGJhMTEzZWMzZjQwYTRhYiBsZWdhY3ktdHJ1bmsKKzEzMjE2IGNkMDFiYTEwYTk2MmMwOWZjNDUyYzhhYjBkNzJhZGY5MzQxYzFkYjAgbGVnYWN5LXRydW5rCisxMzIxNyA0OTBlYzBjNDBjYzYwMGNjN2YwYjA1NTAxMTMzNTk1MGVlZDZiNTUwIGxlZ2FjeS10cnVuaworMTMyMTggY2ZkMDkzMmE1M2U0OTFmODNhZjI0NzkyMzY0MTBmNTI4ODgzOWE4ZCBsZWdhY3ktdHJ1bmsKKzEzMjE5IDc2NjhiY2RlOWMwYWQ2NDA4NzIxMjhjYjcwYzVlYjg4NWEzNjZhMjcgbGVnYWN5LXRydW5rCisxMzIyMCA2NzEyMWEyYzYyYmY5MzE0Y2QxZDlhNGRkOTRiY2M4ZGQ5OTk2ZDBlIGxlZ2FjeS10cnVuaworMTMyMjEgYmFmNjZkNmUxYmMxNmQyMWZmMDEyNzIyZjllM2VlZDU3YzBiODQ5MiBsZWdhY3ktdHJ1bmsKKzEzMjIyIDgwZDQ4ODVlZGQ2NjQwOGFlMmFiZjljOGZjMzNjMWNiOTBhNzY4OWYgbGVnYWN5LXRydW5rCisxMzIyMyBmZTFlOTgxOTBhZjZlZTgzYTNkNDUyNDU0ZGNiY2ZjNTI5MjFhMzY3IGxlZ2FjeS10cnVuaworMTMyMjQgZjA5NTA3N2QyMGIwMmUyZjU3Yzg2ZDUwZGM2NGRmNTFkOGRmYjg5ZSBsZWdhY3ktdHJ1bmsKKzEzMjI1IGU5OTViY2M0Y2M4MjI0YzhlODc5MTNjOGQ3NmMwMDk0ZTE3ZDA4ZjAgbGVnYWN5LXRydW5rCisxMzIyNiA5ZjY5NWE1NDk4NjU0OGM5NzRkOTI1NzdjODlkN2M2OTU4ZDZhODdkIGxlZ2FjeS10cnVuaworMTMyMjcgZjMzNWZhMWQ2ZTcxNWVhOGMzM2Y5YWMzZmI0NTdlNjQ5MGQzYTJhYSBsZWdhY3ktdHJ1bmsKKzEzMjI4IDQ4MDM3ZjQ4MTRiMTEwYzBjMTQ1ODE4OTg5Y2FhMDcxMmE2NGIzYmYgbGVnYWN5LXRydW5rCisxMzIyOSBmM2M3ZmY3YTZlODFhYjU2NDI1OGIyMWVjMDA1ZjdhNjA2NTJkNzg4IGxlZ2FjeS10cnVuaworMTMyMzAgYjZkMWEzMmFlZDc2MzhiZWI3ODMzZTZmYTQwMThiOTM0NThlMjA5MiBsZWdhY3ktdHJ1bmsKKzEzMjMxIDhkZTdkOTBiMGIzNGZlNGVkZDM2Yjk2ZjNlODg0MTg4NWMxNTJkM2IgbGVnYWN5LXRydW5rCisxMzIzMiA5ZTVkZjRjNDlhNTY3NTRkZmNhOWNjNDE3Zjg4YjRhZTRhZjVhZDZjIGxlZ2FjeS10cnVuaworMTMyMzMgZWVhMWFiMDI4ZjQzMWVjYzZkZWY4ODI4ZDMxMDkwNzA1N2E3YjVjOCBsZWdhY3ktdHJ1bmsKKzEzMjM0IGYzODc2OTMwODQzODYyZTFjODdkOWNiYmFhNjYyYjk5MmUzOTMwNGYgbGVnYWN5LXRydW5rCisxMzIzNSBjNWY0NDlhYTQzNDU5MjE0MTU5ZDU1NGMxMWEwMzExZmE1MTQxOTUyIGxlZ2FjeS10cnVuaworMTMyMzYgMjQ3NWMzY2ZlODM5MDMyNmU4ODJjMmQzOTY5YmM5YzQyMGY3ZGMzYiBsZWdhY3ktdHJ1bmsKKzEzMjM3IGUwNzUyNzJmNDNmMjY1Njg4ZjllZWNhNTEwYTExZGU1YmU3MjZjZmYgbGVnYWN5LXRydW5rCisxMzIzOCA2MTA1MWZkNjVhYWIwODEwNWE5NTc3OWIyMWNmNGM4Mjg4ZWNiZTQ5IGxlZ2FjeS10cnVuaworMTMyMzkgMjY2NjRkMDc5NTk3OTk1OTJiYmZhYWQwOTUyNjVkYmVjOTAyNzk5ZCBsZWdhY3ktdHJ1bmsKKzEzMjQwIDc0NDJjY2VkZDVmZDNjMDJiOTFjMzI3YTNhMDE2ZDMxYzI5NmE2MWYgbGVnYWN5LXRydW5rCisxMzI0MSBlYzY2NDI1NGVmNWFhYTllMWMzNzc0ZmVmZTNhMmZkOTMzOTQwNmM0IGxlZ2FjeS10cnVuaworMTMyNDIgMjczNzFiNmQ3MGMxMTFkNmE2YzE1YjcyNjVhNWNmNzkyZTlmYTA2NiBsZWdhY3ktdHJ1bmsKKzEzMjQzIGRmMTU0ZGExOGYwZWEwZGZjMWVkZjdkYjIwNzMzN2ZlNjRhZGYxM2UgbGVnYWN5LXRydW5rCisxMzI0NCBlNGVlOGVhNGU4MzY4ZDJmM2RhNDE4YTIzNjI3ODRkZjM2ZjFhY2Y3IGxlZ2FjeS10cnVuaworMTMyNDUgMDNlNzRjNGIxODljOWRhNTQ5ZjJjNTA5MGUxMDlkNTM4Zjk0OTE0YSBsZWdhY3ktdHJ1bmsKKzEzMjQ2IDA5YzZiMmNlYmVlOWM2MWU4NjVhMjdjYzAyMmI0OTYyNDc3NjA4NWIgbGVnYWN5LXRydW5rCisxMzI0NyA2NzZkZThhN2EzY2JkMjVhMGZkOWZmZWRmYTNlMWQyYzE4ZTkzZGFmIGxlZ2FjeS10cnVuaworMTMyNDggODU1ODg3YTJjYzYwMTdjNmQ4YTc5NmY4MzIwMGNhMTA2YjQzMWYyNyBsZWdhY3ktdHJ1bmsKKzEzMjQ5IDRjOWRlNmZkMjY3YjkzZmFjYmNjMTJjYjg0NWE1OGU2ZTM1ZWE5NjMgbGVnYWN5LXRydW5rCisxMzI1MCAzZTViMDUwMzVlYjk4NDI5ZTZhZmRkM2UzNTBiYmQwMzVlY2I3ZmQ5IGxlZ2FjeS10cnVuaworMTMyNTEgNGRiMzY5MWI5Yzg3MTVmY2JmOGQ4NDU3YjQxMzA5NjZjYTc2Y2E4ZiBsZWdhY3ktdHJ1bmsKKzEzMjUyIGU3ZWJjZmRlM2I1ZTQyNzFhYzYxZGNkNzdlMzdlMThmMTc5ZjRlYTEgbGVnYWN5LXRydW5rCisxMzI1MyBmMGE2MTllZWJlOWEyYTI3MzMxZTVkNzEyZTEyYWJkYzBmOGIzMjk0IGxlZ2FjeS10cnVuaworMTMyNTQgYTBkNGE5NTdmZDkxYzExZjA3YWE1ZTY3NTBlZTFmYWMwMjg3YTIyYyBsZWdhY3ktdHJ1bmsKKzEzMjU1IDhmMzY2NWJiOWUzZTBjODEyZGFmMTczNDgwNTE4ZDhhOTNmMThjMGYgbGVnYWN5LXRydW5rCisxMzI1NiA4ZWRiZDVhYjYyMTc1NzBiZWFkYjAxYmVmMmYxMWJlNjFjNzcwZGIxIGxlZ2FjeS10cnVuaworMTMyNTcgOGVlZjZmNjc1Njc3YzU3YzBkNDk4OWMzMmI1NmU3MzgzYTZiN2I5YyBsZWdhY3ktdHJ1bmsKKzEzMjU4IDgxZjU0YzAwZTIyNGZlNWIxZGZjNDlhODE1YzdkZmNiYjNkNzhlOTYgbGVnYWN5LXRydW5rCisxMzI1OSBjZGU5YjJlNjRjMDA5N2UxOTA5NGM3ZTg1N2ViZjkyMjBjNWU3ODM1IGxlZ2FjeS10cnVuaworMTMyNjAgYmZhMGM3NDMzNDdhOWRjYzkyMmYxYThlN2M3YWVkZjEyYWRhODg5NyBsZWdhY3ktdHJ1bmsKKzEzMjYxIGYxYjJiYjUzNWViMzYzYzQwOTEyOGNmYzFiODhkZDQ3MTc5MWEwMWIgbGVnYWN5LXRydW5rCisxMzI2MiAzYzRkYjZjNmU5NzkzY2ZmNjFhM2U0MzQ0NjhhMGRiNDgzYmU4ODQwIGxlZ2FjeS10cnVuaworMTMyNjMgZWNlMDk4ZjNlMWRjOGVkMGI0ZWE0OWExMDBhZGM5OWNlZDgyZDEwYSBsZWdhY3ktdHJ1bmsKKzEzMjY0IGFhYTVmOThjYjJkNmQ5YzVlZTViYTg2MWYzYmZlZTIzNGNhZmU2MWQgbGVnYWN5LXRydW5rCisxMzI2NSA2YTM4ZTY2N2QzNDk4MDhjYTNkMWRkODIxYTVlZTc5MjUzYjlkYTljIGxlZ2FjeS10cnVuaworMTMyNjYgMDVkNzAzMDE1ZGUxNTRmOWJlZDk1YjkzYTgxYjc2OGI1Y2Q0MzdjZiBsZWdhY3ktdHJ1bmsKKzEzMjY3IDM5M2E2ZGFmMjg5ZGUzODk0YzY1ZjliMDU4Y2VhZjU2NDM2Zjk1MzAgbGVnYWN5LXRydW5rCisxMzI2OCAxNTBhYzBkNzA5MjkyMjQ5NGFmMjY4YjY2NGNkOTEzYmExNGQwMjEyIGxlZ2FjeS10cnVuaworMTMyNjkgOTJhOTJkZTk1OWI5ZTI0YmRmOWIyZTMzNjk1YTM4YjZkMzhlZjE1YyBsZWdhY3ktdHJ1bmsKKzEzMjcwIDNmMGE2YjE1NjllN2U2ZWE4ZTcxYjNmODQ4OTk5MzBhZWQ5ZjYzNjAgbGVnYWN5LXRydW5rCisxMzI3MSBkYmNhNDcwYWY4ZjI0ODcxOTM0OWM2OTBlMzAxNGJhNTU0ZDRhNGJmIGxlZ2FjeS10cnVuaworMTMyNzIgZTM3MDc0YjZlNzhjZjRhYjcxYTFjOGY1ZWRhNDUwYzI3MDQ3MTdhYSBsZWdhY3ktdHJ1bmsKKzEzMjczIGM2YTRlNDZmMWIwOWRkZTMyNTA3NTM3YjIyYzY1MjE2NzM1ZWYzYTggbGVnYWN5LXRydW5rCisxMzI3NCAxYWY3YTE0NjcwODgzOGFlMGYwODRhNGVlZjc3NTg0NjgwZmE2OWNlIGxlZ2FjeS10cnVuaworMTMyNzUgZmIxNzMzYjZiZWY1ZWFjMGViM2M5NTA3NDMyNmFiYjUxNjMxYzYzMSBsZWdhY3ktdHJ1bmsKKzEzMjc2IDJmNmIxMjc2ZTVkYzY0MjlmYTQ0MjQ1NzkzZTc4YmYxYWM2MzMwYTkgbGVnYWN5LXRydW5rCisxMzI3NyA0NDI0ODNmNDUzNDU1ODVhNzJiYjIzOTY0NjEyZWE0MTEzMjFiY2RkIGxlZ2FjeS10cnVuaworMTMyNzggMmIwMTY2ZDIyNTUxM2U0ZDQzNWZiNTgyNDIwNGYwNzUzZjBhNjI3ZiBsZWdhY3ktdHJ1bmsKKzEzMjc5IDFkN2ViYmYxZjBmMjc1NTA4OTU0ZjVkNDA0MWM4ODc0NzRjYzExNzggbGVnYWN5LXRydW5rCisxMzI4MCBlMGU5M2U0MTY2Y2UyZDUwODI4YmUzNjU4MzM4MDc3OGJkM2JkODRjIGxlZ2FjeS10cnVuaworMTMyODEgYzFjNzBiNzQzZGYyZTc4Yjk4N2Y2OGJiZDcxMTg0OWM2NGU3MmY5MyBsZWdhY3ktdHJ1bmsKKzEzMjgyIDk2NjU5NGM2YjFlMjU2YWRhNTFjMWZlNTc0NGYyYTUwMzYwYzdkNTQgbGVnYWN5LXRydW5rCisxMzI4MyBiNzA4OTZlYjg5NDQwZTkwN2QxMDUwYWFiNjY0OGU2MzQ2YzFhYjBkIGxlZ2FjeS10cnVuaworMTMyODQgOWYwZjFkOGU2ZWJhZjdlNzNmOTFiNjU5MDEwYzVhYzA5N2ZhNDhmMyBsZWdhY3ktdHJ1bmsKKzEzMjg1IGIzOWZlNTEyOTliZTlkYWU5NGQ4NWQ0NjVmYjNjZTQ1NmI5YThjYWYgbGVnYWN5LXRydW5rCisxMzI4NiA0NzliNGQxYzBiNDcyODVkZjY2YWNiNjI3MDRmYTZkNzcwYmYwMWRhIGxlZ2FjeS10cnVuaworMTMyODcgNTRhMzBkNmIwMWYxMDhhODA1NDA4ZTM1MjIxMDBlNjY3MDg1NjVkNyBsZWdhY3ktdHJ1bmsKKzEzMjg4IGMzOWMxNDBiMDRiY2M5Y2YzYTAzMzJjZDdhZjlkMjMyMDViZTI0YmYgbGVnYWN5LXRydW5rCisxMzI4OSAzMmU3OGM5ZmI0OTZjMzg4ZGQwM2ExYmQ0Y2I5N2JmYTY0ZmFhMjNlIGxlZ2FjeS10cnVuaworMTMyOTAgNWRiMmMwNDI3Y2FkMzRhNDk5YzI5ZTg2NTAxNTJmNzhiN2ZlYWU1ZCBsZWdhY3ktdHJ1bmsKKzEzMjkxIGEzNGQ2NjU2ZjhlMmRkZmE5MmY3YzQyNzFhYzg2YzNjNDQ3ZmViN2EgbGVnYWN5LXRydW5rCisxMzI5MiAxYmZhYTUzNzRkZjk5NzU4YjE0YTkxMWZhNmUzYTJkOGIyN2I3MDI1IGxlZ2FjeS10cnVuaworMTMyOTMgMzM1YjRjMDJmMTBkZjBkOTAwYmE0NDM2MzM5MGFlN2M3MTIyYzk5ZiBsZWdhY3ktdHJ1bmsKKzEzMjk0IDc2NzM1MWY0OTQ0YWJhZGU0MWMxZTVmMGRlMmI0N2I2ZDUxZDUwYjAgbGVnYWN5LXRydW5rCisxMzI5NSAxMDViZWVkMDY4ZjhlNjJkMjczYjNkZDVmMWViMDY4ZGQyZDMzZDVlIGxlZ2FjeS10cnVuaworMTMyOTYgMmQzNmYwNjg5YjhhM2UwNTU5YjdlYmEzNDUzMTVmYmMyNmQzNDRkZiBsZWdhY3ktdHJ1bmsKKzEzMjk3IGIwMTVkNWYxZGExYjU3MTc5MWY0NDBmNGJkOTVhMmJmMDg2NWMzZmMgbGVnYWN5LXRydW5rCisxMzI5OCA3YzQwZDdjMWVlZjk0Zjc3MDM1YWFiODc4OTBhZGZhZDA4YTNmYzZmIGxlZ2FjeS10cnVuaworMTMyOTkgODg1YWJlMDhlYTJkZWFjOTMzNTA3ZDIxNzk2NzcwYTI3OWNlOTY3YyBsZWdhY3ktdHJ1bmsKKzEzMzAwIDllZmUwNjc5NDBlYWE4N2Y4YjExOTJjZTg2YWJmZDcyMWYzN2E2YTIgbGVnYWN5LXRydW5rCisxMzMwMSA5NGM3YTNmMWMwMDVlNjU5NDcyMWM5YTg1ZmJmMTc1ZTMxZWZiMjg5IGxlZ2FjeS10cnVuaworMTMzMDIgOGYzMTEwM2M4OGE4ZTA3ZTU1ZDkyMzI2NzgzMGE0OTA5OWY5OWRkZSBsZWdhY3ktdHJ1bmsKKzEzMzAzIGQyMGU0ZDBhZmI0MzYyZDg5MjU5OTM3ZTQ3YjI0NDdjMmVjMTY2YzMgbGVnYWN5LXRydW5rCisxMzMwNCAzMTJlYjQ4MDFhMWM4MTZiYmU5NDY5Y2RhYWY3YzZkMGQ5NzBiY2QxIGxlZ2FjeS10cnVuaworMTMzMDUgM2QyZWE1NWJjNGU2OGE0ODBmNTk0ODZiNjAyNzQwOTNmMDQ3NzZkMCBsZWdhY3ktdHJ1bmsKKzEzMzA2IDg3OWQxYWU1YzdhNWJjZWQyZTA0OWZlOWNiMWYxY2JmNjljNjZmMTIgbGVnYWN5LXRydW5rCisxMzMwNyA3ODEyMzgzNjFmNTMxZTNjNTAxOTk0NTgxYWMyNDYyZWJjYWQ5OTU5IGxlZ2FjeS10cnVuaworMTMzMDggYWViMTNjYjdiNzhjYTVlODA4NGIzYTYzMGZmMzgxZDI3ZDM0MWFlMyBsZWdhY3ktdHJ1bmsKKzEzMzA5IGI4OGE2MDUyNDI2OTA5ZDYyYjc2ZTUzZWQwYTEwODgwYzdkMjhkNTUgbGVnYWN5LXRydW5rCisxMzMxMSA3ZWEzODU5N2U3MGZhYmJkYjQ1ZjIzYmMzNjk3NmI2M2Y2NmMxMTBlIGxlZ2FjeS10cnVuaworMTMzMTIgZmZiMmE0N2I2NDVlYzdiZjFhNWJiZGFmZGUzMGE0NzEwZDk2Y2U4OSBsZWdhY3ktdHJ1bmsKKzEzMzE0IGYxNjRkOTE5MzM0MWM5YjRmMDhlNDM2ODQxZGJjMzQ2YmUwZWIyZDYgbGVnYWN5LXRydW5rCisxMzMxNSAwZmU4Y2Y3YWM2ZDVhMzU2NDM5NDE1MTc2ZjJlZWRlNDI5YjhjZDNiIGxlZ2FjeS10cnVuaworMTMzMTYgZGZiZTI1OGUyOGMxODE3ZGEyMjI5MTA3MWEyNWZlOGNhN2I0YjAyYSBsZWdhY3ktdHJ1bmsKKzEzMzE3IDY4Nzk5YTIwMjc2NmExNDQxYTdmMTljNDY5NjM1NDlmMGQ2YTgwODEgbGVnYWN5LXRydW5rCisxMzMxOCBkNzNhMzI5M2M0N2IyY2RmMWU4NWY3ZDAzOGI2Y2U5MmY4MzU2YzhlIGxlZ2FjeS10cnVuaworMTMzMTkgNWFkMjdhZWU3ZTU4ODYxZjYyNWZlN2VkODY3MDA2MzMyMDQxYTQ5NyBsZWdhY3ktdHJ1bmsKKzEzMzIwIDJmZTBiYjhiOWVlZjc5YmJkYWExYjc3NTMwMWZhMDMxMTkzNzFjZmYgbGVnYWN5LXRydW5rCisxMzMyMSA4ZGUxM2NlYTk2NDExMjI2ODg5ZGEwZThiMWQ1Y2JmMTEyNDk5ZjQ2IGxlZ2FjeS10cnVuaworMTMzMjIgMzMxYzg1YWNhMTk1NzJjMmY1OTNjYjA1NDE4MjhhYzM0NjNjZjUzMCBsZWdhY3ktdHJ1bmsKKzEzMzIzIGMxMmY3Y2YxOTJmYjMzODYwOThiODYxYzU5OWMzZTNlMzA0ZmRmYjcgbGVnYWN5LXRydW5rCisxMzMyNCBkMjZhOWY5MjU0ZjE0ZGMzMTc5NjYwNDY5MTg1NWM1ZDRmZWEyNDA4IGxlZ2FjeS10cnVuaworMTMzMjUgZWI3YTYyYWNkZDFkYzViNGY4M2RlNGQ4ZDM0ZWUxMzg1NDNhMGIzZSBsZWdhY3ktdHJ1bmsKKzEzMzI2IDVlMDNlYTY5MjdmMjA2ZjU2MDA5MjM0YmQxMmJjMTVhZTE4YzhlNDUgbGVnYWN5LXRydW5rCisxMzMyNyBkZmI1ZmRhM2IyNzNhZDc0Y2FjZmZkZGUyYzA4ZmI0ODJiOTI2ODFhIGxlZ2FjeS10cnVuaworMTMzMjggZDNjNmU5YTEyNmIyOWZhYzZkNzhmMjdiN2M3M2RkMjRiZTNiNzAxOSBsZWdhY3ktdHJ1bmsKKzEzMzI5IDQ5YTBiOGRjYjM2YTRlMjY5MjhhMjZkMTYwYjJmMDljYzkxYmNmZmMgbGVnYWN5LXRydW5rCisxMzMzMCAwYmM3YzUwMmViNGQyZWNjM2E5Njg2ZjRjZTk5ZjI4NGIwOGFjMWYzIGxlZ2FjeS10cnVuaworMTMzMzEgOTYzODlmMGI1ZWYwODZiNGYzOGYzY2E3NmZiMGJlMjQ3NjllZWQ1NyBsZWdhY3ktdHJ1bmsKKzEzMzMyIGZlNWI3ZGVhNWExMGZmYWRjMjczZGVhZWE4NDMxMjJkMzAxYjFjZWYgbGVnYWN5LXRydW5rCisxMzMzMyBlYTgzMmMzYzZlNmRhMjYzYTQ4Y2I0MzgwMDlhNjk4ZjllMGIzZTkwIGxlZ2FjeS10cnVuaworMTMzMzQgMmEzMGVkOTExMmM2MWQ1OWM5YTBkYWMxZTkxNjRiMDkyYTg5NjZmOSBsZWdhY3ktdHJ1bmsKKzEzMzM1IDY5ZDg5ZjdmNTMwYzVjNzllOTU3ZjNmNGY1ODFlZjZlMmM4YTJlZjIgbGVnYWN5LXRydW5rCisxMzMzNiAzOTFhOWNiMmIwNzI5ZjcyYTAxNTdiY2E4ODlmYmIyNmZkNWNlYzFkIGxlZ2FjeS10cnVuaworMTMzMzcgMDAzNDRkYmYyYTYwNTI5NDllZjU4ODhjN2I0N2E0NTAwOTMxMzQ2YiBsZWdhY3ktdHJ1bmsKKzEzMzM4IDY1ZGI1ZTI2Mjk4ZjI2NmQ4YWI0OWFlMDM0ZWM3MmNiY2I3ODIxYjcgbGVnYWN5LXRydW5rCisxMzMzOSBhYWUxNGM2MTgxYjlkODhkNWRjMzlkZDVhOTM5ZTYwZDViMmY2YTM3IGxlZ2FjeS10cnVuaworMTMzNDAgMTM1YzFlYzk2MzZjNjg2YTIwZDAzZWQyNzdhMzUzODI0Yzk3NDI0YSBsZWdhY3ktdHJ1bmsKKzEzMzQxIDU1ODEzMDdkYjJmNzM3ZTZhMzhlMmQ1YzcxMzQxNGJlMjEwNmU5MWIgbGVnYWN5LXRydW5rCisxMzM0MiBlNjUyNDM0NmQ2NmNjMTg1OWI5ZDU5NmU0MDA5MzUwNzc4MTlmZWFlIGxlZ2FjeS10cnVuaworMTMzNDMgZWZkMTU3M2E0YjAzYjIyZGEyYTEwN2VkZjdmMDEyNTM2NDkzZWM0NSBsZWdhY3ktdHJ1bmsKKzEzMzQ0IDBiZjMwMTk0MWVmZDhjNTMzNTdmYWMxNGE0OWU3MWE0ZTJjOTEzYWQgbGVnYWN5LXRydW5rCisxMzM0NSA4ZmRhYzQwMjUwMzI1Zjg5YmU3ZTk2ZDIzZDIwY2VhMWM2YmM2YzIxIGxlZ2FjeS10cnVuaworMTMzNDYgODRhNGVjZDJjYjk1MzgyNDg2ZGRlM2ViYTA0NTZhZTg4NGI4ZWVlZCBsZWdhY3ktdHJ1bmsKKzEzMzQ3IGFlZTc0ZTk3N2FkZDBmZjdhMGFiYTcyMjlkMDU0YWViYTRjZTU3MjYgbGVnYWN5LXRydW5rCisxMzM0OCBmYTZiZTFkMGI4NjQ1YTMzZmU1YjViMzFmYzk2OWUwMTk2MzZjYzYxIGxlZ2FjeS10cnVuaworMTMzNDkgMzUyZTU4MjRlZGE2NjYwYTQxMTQ4ZmNlZGYzMDQ2MmI5YzQ2NDJkMCBsZWdhY3ktdHJ1bmsKKzEzMzUwIGUxYjg2ZWY0NTU3YzU3NTkyZmFiYTllOTA1Zjc1MzdlNmQyZDRmNDEgbGVnYWN5LXRydW5rCisxMzM1MSBjZGY3YWU1YjMzNjdlZWU2ZTRkYTI0NGUzZDY3MDU4MmViOTc5NzlkIGxlZ2FjeS10cnVuaworMTMzNTIgNWVmNGIzY2E1NTY0NTcxMmY1NjNkZmMzMmE0YjI1YTY5MzBhY2E2NyBsZWdhY3ktdHJ1bmsKKzEzMzUzIGI3Mzc4ZGYzZGI1NmQ3MDQzMTYyN2MxN2Q5YmFiY2FjYmQ5MTdmMmIgbGVnYWN5LXRydW5rCisxMzM1NCBjN2FhOTk2NTgzODNmMjdmYjI0MmU1NjVhMjc5ODdjMWUzYzA3MzUyIGxlZ2FjeS10cnVuaworMTMzNTUgZDc4Y2MyNjc2YzU1MWI2NzE4NzQwNDMyZWYzYzM3NzEzYzllOTVjYSBsZWdhY3ktdHJ1bmsKKzEzMzU2IDRkYTc2ZjgzOGE1ZTRlZDVjM2UzYjMzMTZhM2IzNmM2OTBkMjcwMjMgbGVnYWN5LXRydW5rCisxMzM1NyBhMTQxNWVjZWEyM2Q0YTMyMWQ3MWRhZGM2NTYyNDA5NTQxYmNiNzI3IGxlZ2FjeS10cnVuaworMTMzNTggZmNiMjUzMzVkNmFlZGYyYzFlNWVkOWE5ZTE2YzliZmQ2MDBiMzc3NSBsZWdhY3ktdHJ1bmsKKzEzMzU5IGIyN2FkNTA5YjQ0YjM1MDI1NjYzOWM1Mjk4MDBjNjc4ZmIzNDE3ZmYgbGVnYWN5LXRydW5rCisxMzM2MCBlMmZlNjVlODc3NjFiODgwYzQwYmZjNmU3NmQ5OTVlYzU4YjUwZjVkIGxlZ2FjeS10cnVuaworMTMzNjEgZjJlMTIzYWYyYWRhNDQ3MTNhN2M0YTY0ODAxZGQyMmNiZmNkYmEzYiBsZWdhY3ktdHJ1bmsKKzEzMzYyIDI4ODg3ZjQwZTM0NDJlMGI1MWQ0NDkwYTcxMjUxNjc0NzMxNjcwZDMgbGVnYWN5LXRydW5rCisxMzM2MyBiZTBhYzVhYmU4M2I3YjZhYjc4MWVlMmNlYmQxY2FlNjY0ZjI2M2JlIGxlZ2FjeS10cnVuaworMTMzNjQgMWFhODBmNWJmOWFjOTFkM2MwMTJiZDZhYWI3NGM5MWMzY2I5MDI5NiBsZWdhY3ktdHJ1bmsKKzEzMzY1IDgyMDJmNWFjZTI0ODQ5YWY3NTFmM2IxZTlhOTQwOTkzNWQ3Yzc3MGYgbGVnYWN5LXRydW5rCisxMzM2NiBlNzUyNTBlNTU0MjRmNDFkOTQ4YjY2MTMwYjUzNDg2MDI4NDQxN2E5IGxlZ2FjeS10cnVuaworMTMzNjcgY2ZlNDcyOTEyYjdmOGIwMjgyZTc0ZGE4ZTRjYjA3YTQ5ZDIzODVkMCBsZWdhY3ktdHJ1bmsKKzEzMzY4IDlhM2EwNDY4ZjUxYzdmOTdmYjM0MjJlOWRjMDdkNzhmN2ViZDk0MGUgbGVnYWN5LXRydW5rCisxMzM2OSA0ZjVkNDk0NTYwNWM2N2QzNGM3NTljN2E5ZTgyNTdiZTM1MTNjNmY4IGxlZ2FjeS10cnVuaworMTMzNzAgZjdiNDFiMjcwNTU0ODIxODNkYzJmZGJmYjg2ZjRmYTFjZjNmOWFhZiBsZWdhY3ktdHJ1bmsKKzEzMzcxIGNkMmEyNWI3YjQzODU4ZTU4NTNmYWI5ZGU0ZDdiY2VkZTdjMWI3Y2UgbGVnYWN5LXRydW5rCisxMzM3MiAzZWRiMzI5ODIzNGNkMGIxOGUyYzQ0N2U1OWRkZjZkZDk3MjQ2Yzc0IGxlZ2FjeS10cnVuaworMTMzNzMgMjUxMzhkYjM1Y2UxZWRlN2Q3ZjFkZmVkYThlYTAzOWRlZTJlZjNlMSBsZWdhY3ktdHJ1bmsKKzEzMzc0IGJiYzJhODc4OTRkMDgyOTMxZjA3YTIwMTc2MjA3ZThkZGZhZWZlMmQgbGVnYWN5LXRydW5rCisxMzM3NSA3ZDExODJkMGM0MTkzZWExMThlZWZiMTFmMDYzNmY2MWRhNmZlNDc4IGxlZ2FjeS10cnVuaworMTMzNzYgZmZmZjY2NWY4YTdiZjI5ZWZmNTU2MTY1YTIzNmI4NTU4YTdlOGQwYSBsZWdhY3ktdHJ1bmsKKzEzMzc3IDVjNWFlMTYxZjI4YWMwNDA2YjliM2NlZDEzMzgxMjdhYTIwYTE1ODQgbGVnYWN5LXRydW5rCisxMzM3OCA3NTUwYTM1ZDgwZjliYWZmY2JhYWEyOGI5YTI5OTUxZGJhZmMwMjM1IGxlZ2FjeS10cnVuaworMTMzNzkgYTU2Mzc5MjAwMDc3MGUxNjA5YjNjZDc3ZmFkYzVlOWU0NTRlOTJjMCBsZWdhY3ktdHJ1bmsKKzEzMzgwIDk4NjhjODA3NzMyZDU4NzA4ZDY1MDMzNjM5NDYzMjhkMjgzOTBlMmMgbGVnYWN5LXRydW5rCisxMzM4MSA4NjM0ZWEyZWM0ZTJmZGMyYTcwZDU0ZGYxNmZmNzQ4MzViZTQ2NGRkIGxlZ2FjeS10cnVuaworMTMzODIgMTgyMWU2NGUwOGZjZWRhOGZjMjhlMTBkMTJkOGQwYWY4YjQ1ZGM0MyBsZWdhY3ktdHJ1bmsKKzEzMzgzIDE3YWUxNzhhMzAzODhjNGNkMWYwM2U2ZjA3NDAxMzM2NjQ0NjI1MzYgbGVnYWN5LXRydW5rCisxMzM4NCAyNjY5YWM3Y2Q3NmE5NmY4NzEzMjBlYmY5MjdlZjliMDM2MTJhNDBhIGxlZ2FjeS10cnVuaworMTMzODUgYjllZjQyNDE2NWQ2MjUzZDJiZDVmZDQ2MDgzNjRhZjcyOWEyNzQzMyBsZWdhY3ktdHJ1bmsKKzEzMzg2IDUwMjBiZmE3NDJlYWE3NTExYzYwODUxNTg2ZDYxODAwY2RkNGZkMzMgbGVnYWN5LXRydW5rCisxMzM4NyBmODhkM2E3NjM3MjNkNWJhMGJlNzU5OWNkYTNmZmJjZTYwYjY2ZWFhIGxlZ2FjeS10cnVuaworMTMzODggODM4Y2IzNGFiYjc5MTljMzQyZjI0M2E5NjAzMjhiMzY2MGQwYWZkZCBsZWdhY3ktdHJ1bmsKKzEzMzg5IDA2ZGVmODA0MmQ4ZTE2ZmEwMTA2NTVhMDdiZWMwMTZhNTMzNDFhNWIgbGVnYWN5LXRydW5rCisxMzM5MCBjMjA5ZGQ5OGI4Njk1MjVhMWRkZjk4OGI2N2YzMDNlMTk2MTY4ZWFmIGxlZ2FjeS10cnVuaworMTMzOTEgZjAzMThhMWM5ODkyY2I1NzI3Zjg2ZDEyN2UzOTkyZmYyYTZjOTcyYSBsZWdhY3ktdHJ1bmsKKzEzMzkyIDYyZWQzMmU3OWI1ZDI5NjI0NjMzNDA3ZDBkY2EzMzk0MjRlY2RhZGEgbGVnYWN5LXRydW5rCisxMzM5MyA4MjJjNTI4MmMxNDU2OTc4OTc1NTdlNzU0YmRmOTBiMjVmZDUxOWE4IGxlZ2FjeS10cnVuaworMTMzOTQgYWYwNzM4OWM4NTE3NWZiYTU5NDgxNTcwMmZkNmJmMmIyZGRiYjgzNCBsZWdhY3ktdHJ1bmsKKzEzMzk1IGJhNmQzYWUzYTAyMTQ3YTIxNmZhZTgwNzEzNzdkOWMzMDdiZGQ4ODEgbGVnYWN5LXRydW5rCisxMzM5NiBhNjI4YzM3MDU4OTdhY2ViYTZmODRiMTIwMjczN2M0ZTUzNTJjYzE5IGxlZ2FjeS10cnVuaworMTMzOTcgNjMyYjY3MDViZDlmYWRkNjAzZDE0OTBmYWNiNDA0OGFlM2M3ZGEwYiBsZWdhY3ktdHJ1bmsKKzEzMzk4IGI4MTM2NTY2Y2FmNWMwMGUwNzk1ZDhiM2Q1ZDU5ZTdhNDM2YjU1N2YgbGVnYWN5LXRydW5rCisxMzM5OSA2NzgzODQyYzEwNDI0NWMwMzZkM2Q5YmYxMTA4MTdhMjFjNGNiNzIxIGxlZ2FjeS10cnVuaworMTM0MDAgZDM4ZDNiOGVhNDYzYmZjZjFlYjA5NGRjNjVhOGU1YTM5YjRiNjNmNCBsZWdhY3ktdHJ1bmsKKzEzNDAxIGUxODNiYzAwNDlkY2RkYzAwMzY1ZTU5YTA4MTNjOGI0Njk3MDMzZmQgbGVnYWN5LXRydW5rCisxMzQwMiA3NDg2Nzk2ZmFlNWI5NDQ1ZmRiY2NiNzk1OWM2ZTFiNWI1ZmVkNTU0IGxlZ2FjeS10cnVuaworMTM0MDMgODE3ZDA1MzgzNTBkMzM2NDQ3MTAwYzNiMWNjNzk3N2EwMDE2YzQzYiBsZWdhY3ktdHJ1bmsKKzEzNDA0IDNlNDE5YWJjNWJhYWRjZmIxMDkzZmI4ODJiYTU2MDUwNmIwMTY4NWIgbGVnYWN5LXRydW5rCisxMzQwNSA5NTgzN2UyNzMyNTc1OWQyMzQyNzhhZDJmZWRjOTcyOGY3ZDQwNTc5IGxlZ2FjeS10cnVuaworMTM0MDYgODVjZjQ5YTliMDBiY2VlNzNmYTE3NDc3NWI0NjI0Yjk2NzE5ZmMxZiBsZWdhY3ktdHJ1bmsKKzEzNDA3IGE1OWU5NWQyZjE4MTBiNDM2Njk3NDI3ZWJjN2JkNTUzZmEyMWU5ZDggbGVnYWN5LXRydW5rCisxMzQwOCAxN2NhMmY2NGI2ZDY3MTdiNzg4Y2VkY2JiMjQ0ODVlMDg0YmJjNGUxIGxlZ2FjeS10cnVuaworMTM0MDkgN2U1NmQzOWQwNzQxMTQzMjZjNjljYTgyZmMxMDFhYjNhM2NkODFmYSBsZWdhY3ktdHJ1bmsKKzEzNDEwIGYwYTIyMTM0NDRhMDQ5NDVkNWQzOGY4YjVkMWI3OGEyYWZiN2U5NTkgbGVnYWN5LXRydW5rCisxMzQxMSA5NTdjMzM1MDRjYzEyNGRhZjcxYWZiYWZkZjJlZmRiZTk5OWQ1OTkwIGxlZ2FjeS10cnVuaworMTM0MTIgZDMxNzQzMjBlM2NlYzliZWFkNTk5MjNhYjMzMGRiMjk1ODAwNTk3OSBsZWdhY3ktdHJ1bmsKKzEzNDEzIGY0YzZjZTU1OTNiOWQ2MGQ4YmRmNjJhNmM0OGMxNTI5YjE4Y2NhNjEgbGVnYWN5LXRydW5rCisxMzQxNCBjMjQ1MTYxNDY4NWFjNGQ4ZWI2NDg2ZDg1ZWE1NGZhMzVhZDZiYTE4IGxlZ2FjeS10cnVuaworMTM0MTUgMjllOTYyNzVhNDJkY2I3OTVkNTVlZTgzYzk1ODAzMjAyN2RiNTJlMCBsZWdhY3ktdHJ1bmsKKzEzNDE2IDhhMzEwOTc0MGM2YWZmMGU0NWE1YzAzODY3Y2ZhYTViMDVkOGE1ZjMgbGVnYWN5LXRydW5rCisxMzQxNyBkODNhNGFhNzBlYjQyOGQyMmQ5M2RjYWI4MTZlODg0OTIxZjM0MGNmIGxlZ2FjeS10cnVuaworMTM0MTggY2ZhYzgzZjVjMGVmYTQ3MmMxMzY3NzhhODU4M2FmMzk4ZjNmOTU4NSBsZWdhY3ktdHJ1bmsKKzEzNDE5IGIxYTFlYjMzNDlmMzdhZDFiNjM4YmUzNGUwZTkyYzUxNGU3NGVhOTQgbGVnYWN5LXRydW5rCisxMzQyMCBkMWI0ZmQwNTdiNGE2MzRlYzRhYWE4ZTg1NTY2NWMyNGU4ZGY4YWViIGxlZ2FjeS10cnVuaworMTM0MjEgM2ZkZjFjN2Q5Zjk4OGY5ZTkxYjA0NzE5NzQ2ZmRiY2IzMjVjY2MyYiBsZWdhY3ktdHJ1bmsKKzEzNDIyIGJhNzk3MTc5ZTJiYTYzOTBhNWZiMjFjNGVmZGQ1NDRhODdlOGMzZTMgbGVnYWN5LXRydW5rCisxMzQyMyBiNzVkMDExOWVkNTFhMDdiOGNiYjYwM2QyM2ZiZDExYmY3NmIyYWEyIGxlZ2FjeS10cnVuaworMTM0MjQgNmIxY2I4NTgyYTFmOTJiY2M2NzQzYzZhZTRiZjlhNGQwNGZjMDBiOSBsZWdhY3ktdHJ1bmsKKzEzNDI1IGE4YTFlYjk5MzQxYzIxYjhlNjEyMjk1YjVkOTM4OWI2MDU5ZmMyMGYgbGVnYWN5LXRydW5rCisxMzQyNiBiZGQ2YjA5YTM3MWM0MGRhZGRhODZlYTk4ZmI1YmJhOTcwYTRkYmRiIGxlZ2FjeS10cnVuaworMTM0MjcgM2ZhYTYzNDMwOTI0NmY2NDM1ZTc2ZjhmM2M0ZjZmZmQyNDIyZmNiMiBsZWdhY3ktdHJ1bmsKKzEzNDI4IDljNDAzNDg4NzU1NzI5MTM3YTE2NzMzMWFmZGUyZWUxNGNhYmQ1ZTAgbGVnYWN5LXRydW5rCisxMzQyOSAxYzU1MmRjZDQzZjk3NWNkODhjOTFhYmJkYjk0ZmQwOWNhMjhkMzM0IGxlZ2FjeS10cnVuaworMTM0MzAgODIzNGJiMzZmYjhjMzVmOTAzOTg4NGYxM2ViZWM2ZDA4OTY2NTZkYyBsZWdhY3ktdHJ1bmsKKzEzNDMxIDUyNTk3MDNmNGI1YzAyMDIyNTU0ZTQ2YzU1NjcyZWIxZWE1MjJiNTggbGVnYWN5LXRydW5rCisxMzQzMiBiMzViYWI0NTczNTBiNTBhYTVmMTk2OTExMTQzNGQ3MWFlZGU1NjgyIGxlZ2FjeS10cnVuaworMTM0MzMgZjljMDNiM2QwZjE0NmU5MTgxNjJjODVhNDNhZWFiZmQ2OGUyM2JmZCBsZWdhY3ktdHJ1bmsKKzEzNDM0IGU0MTA0OWFjODI4YjQ5YzA2ZGE4M2Y1ZmVjYzdkN2FiYzBkYmE5NDggbGVnYWN5LXRydW5rCisxMzQzNSA1ZWQ5YTJkZDE4ZDllNmY4YTA1ZWMzYWVhNTc5M2ZlOWJiNDdhNDkwIGxlZ2FjeS10cnVuaworMTM0MzYgODRmMWNiZTAwOTQzMzVhZTZlNWFkMDUwODU0MzM1OWJjMjAwNjQxYyBsZWdhY3ktdHJ1bmsKKzEzNDM3IDQ1MWIwODQ5Yzk3NzI1ZGJlYzEwNzQ4ZThkMDRmMzU3MmI2MWZjYmEgbGVnYWN5LXRydW5rCisxMzQzOCAxOGEyOTIxOWY1ZTA2ZjRkY2U1YTFhNjIxYjBjOWU4NWY3ZDA0MTU0IGxlZ2FjeS10cnVuaworMTM0MzkgNTBjM2IzYzIxN2EzOWU0NmE3YWY1NDc0NGI0ZDg2YjJmYWVkYzAxMCBsZWdhY3ktdHJ1bmsKKzEzNDQwIGNjNmFiYzk5ZDJkZGYxNDE0MTg0Yzg4MDA5MTljMTQwOWNiNGFkZDcgbGVnYWN5LXRydW5rCisxMzQ0MSBjMDg5MDIwYTdhMWU1NzY1ZmY5OGI1OGRmOGU0MTUwYjkyMDU3YWViIGxlZ2FjeS10cnVuaworMTM0NDIgZGNjYmY1ZTgyOTRkZDkxZjZmZTNhMjNiNGQ1MWIwMGM5YTgwNDcxNCBsZWdhY3ktdHJ1bmsKKzEzNDQzIDg0MTY1NTNjMzNkZjE3ZmYyYmI3OTUxNzU0YmM1MmY3YTg0Y2Y3NzYgbGVnYWN5LXRydW5rCisxMzQ0NCBlOGZmNGIxMjk4YzIzM2QyZjU1ZDNlMjllM2JmNDcxYzU3Y2I5YTVmIGxlZ2FjeS10cnVuaworMTM0NDUgYWY3NjUzOGRkMDc5ZDI0ZjBkNjc4MWI0MTQwYTgxZjdhMDY3MmUyMCBsZWdhY3ktdHJ1bmsKKzEzNDQ2IDcxMjhjMGZkMmJjZjUyNGU3NDNmNDVjMWI3MjcwMjUwOGU5MzA3MjIgbGVnYWN5LXRydW5rCisxMzQ0NyA4Y2MwYzg5OGY2YTc0NzgzZDE4MzFlNDgwMmNlM2E0YjliMDcwMjI2IGxlZ2FjeS10cnVuaworMTM0NDggZTdlYWU2M2U4YjkwNzc5MDQ5ZTVmOGUxM2FmNzg4ODAwYzY4ZGZkZSBsZWdhY3ktdHJ1bmsKKzEzNDQ5IGQ5NzY0NTFiNDY1ZjIxMmI4MjRkZTcwYzBkNDk3ZTYxMzU3MGE2ODYgbGVnYWN5LXRydW5rCisxMzQ1MCA2ZWU2NmZlMTc5YWQ3MmUwYjA1MmJiMzk0YmQ1Y2I4YmRlNzU2MjhjIGxlZ2FjeS10cnVuaworMTM0NTEgMzVkNWIwNzM2MjQyMjYyMWJlODY0OTU4YWQyMWY5NTMxZTdjNDhkYiBsZWdhY3ktdHJ1bmsKKzEzNDUyIGJmNmEwOTgzOTUxZGRkZDlhMWE5MzY5Yzk0NDI0YTk4ZTIyYWI2NjIgbGVnYWN5LXRydW5rCisxMzQ1MyAxYWJjMjc4NWIzNDQ2YzBiZjg4YzY3NTc5NTRmYTcxY2EzMjRkNDcwIGxlZ2FjeS10cnVuaworMTM0NTQgMzg0MjUxOGNmODAzMDEyY2U1MGQzZjk4YWZjZTNjM2Y5NmYyMzE1NSBsZWdhY3ktdHJ1bmsKKzEzNDU1IGI5MjhmN2I5ZGZhMjNkM2ZlZDQ2YzNjMjI4NjMwNjhiMzAxMDQ4MDUgbGVnYWN5LXRydW5rCisxMzQ1NiAwMzUzMGVhMjE0OGM4NTg0NjUwYTQ4YmJhN2YwMmM1N2ZiZjdjMmI1IGxlZ2FjeS10cnVuaworMTM0NTcgMGZjMmU4NTdlODIyODUwMzg3MDJkMzk0ZmI4OTlhYjA4ZjEzMjFjZiBsZWdhY3ktdHJ1bmsKKzEzNDU4IGI2ZDNkMTcxOTVkY2JhODY1NTU2YTEyOTVlMWYxYWY2ZjRiNmQ5YWQgbGVnYWN5LXRydW5rCisxMzQ1OSAzMTcxMWEwNTg3MzgyMzY4ZjFkZDg0YmFlZmMyOGZjYTE0MWJlMDljIGxlZ2FjeS10cnVuaworMTM0NjAgZTA1MGQ0YzAxMzI3Y2Q5YzZmNWIxMjk0MzM4ZTVjN2YxNmVkYTE2NSBsZWdhY3ktdHJ1bmsKKzEzNDYxIDRkNzZjYWJiZjk5ZTY1NTgwYjEyY2Q4NTA0ZTVmNTY0MDkwYjg5MmMgbGVnYWN5LXRydW5rCisxMzQ2MiA0Mjk0MGVkMjJjZWJkNzhiMDc1ZTEyZWFkZWFhNzA4MjgzOTEwYjM1IGxlZ2FjeS10cnVuaworMTM0NjMgNjY2ODliMmRjODk1NGI1YzczYWFiMjM4NTA0MDUxYjQ3ZjA2ZjNhOCBsZWdhY3ktdHJ1bmsKKzEzNDY0IGJkYzE3MDNmZjkyY2U3ZjUyNGJlZDBlMmNmYWJiODI0NzA1MGU2MDYgbGVnYWN5LXRydW5rCisxMzQ2NSBjNzc5MDI1NDFiMTNhNTdkYzEwODg0MTY2ZTA5MTQ3NzYwMGZlYjk4IGxlZ2FjeS10cnVuaworMTM0NjYgYmJiMDM4NjhmMjFiNjI3MTI3ZWY3YzExYjlhMjdmZTI5NzNmNWIwNCBsZWdhY3ktdHJ1bmsKKzEzNDY3IGFhMzI3NmU1ZGNjZjViMjIxMTM2M2VhYjEwYjdkM2E2MzU3YzE4NTkgbGVnYWN5LXRydW5rCisxMzQ2OCAzNmZhODM1MmQwMzg4MTY3ODAzNDE4YTNkYTc5OTJiNjM2NDZlMDA0IGxlZ2FjeS10cnVuaworMTM0NjkgNGRjOWVlZTI2MTU3MTQ1NjdjYjFhMWU4NzBkZTY2NGIyM2M1NDBmYSBsZWdhY3ktdHJ1bmsKKzEzNDcwIDJiOWFmOWQ3ZGEyZDhhN2ViNDVhZjgxNWMzMzdlNGRmNDM3NTU2MjUgbGVnYWN5LXRydW5rCisxMzQ3MSBkYTIzNjA0NGNmNmM4YTk4MmZjMjgzZTgwNGE4ZTVlNWRjYmUxMjg3IGxlZ2FjeS10cnVuaworMTM0NzIgMzA5ZDhjZjgzYTExNzk4MmExNzEzYzIwZGVlMzlhY2QwY2ExZTM4MyBsZWdhY3ktdHJ1bmsKKzEzNDc0IDUwZTdlYjIwYmIxZDUxYmE1NjkyNjUzNjFkNDZkNTk3M2RlN2UyYTggc3RyaW5nX21ldGhvZHMKKzEzNDc1IDI1OTIzN2IyNWI5MzVmOWQ3ODQzNWMyMDkxZjQ2NjZiMGE0MDYyYmYgbGVnYWN5LXRydW5rCisxMzQ3NiA3MGNmMTM2MDlhZWQ2OGEzZWE5Zjk2ZWQ5Yzg0MzgwYzYwM2Q0M2NmIGxlZ2FjeS10cnVuaworMTM0NzcgZmJiNGVkYjcyMDJjYzVlMWZlNjUzYWI1YWMxZDBlYWEzZTBjNTRjOCBzdHJpbmdfbWV0aG9kcworMTM0NzggNWJhMmU0Y2U1OGNiNGJhYWQzNTJiMjk1OGI5NDExZGZkMTk5MGYwZCBsZWdhY3ktdHJ1bmsKKzEzNDc5IDU0ODA5MjFhZTdmM2ZlZTY5ZDY2ZTU4NDIwODliNmM1OTkyMTUzMDUgc3RyaW5nX21ldGhvZHMKKzEzNDgwIDlkNzFjMmMzYTY3NTZmMjZlMzRmNDZjZmMzMmQxODgzY2Y1NjRmYWIgc3RyaW5nX21ldGhvZHMKKzEzNDgxIGUxNDA3ZDYzMjBjYmI3YzEwMmYzN2YyZjk4MzQ3ZWIwNjYzMmMwOWEgbGVnYWN5LXRydW5rCisxMzQ4MiA2ZmZjOWQ4ZGM1Yjk4NmE4ODI5MTE5NGJkNmI3MDhiZDFiNmM4NzY4IGxlZ2FjeS10cnVuaworMTM0ODMgMTdjNGRiZDM2ZTY3NzY0NDg0NWE1MTE4YTNlM2VmNzcyNTk4OWVmZCBzdHJpbmdfbWV0aG9kcworMTM0ODQgNzhjZWY1Njc2Y2NmNjEyZWZhN2RhMDc3NDdhNGYzODdhOTc3YjlkNiBzdHJpbmdfbWV0aG9kcworMTM0ODUgYWU4NTA4MTNjYjdiNDhjYzk0M2RjNjE0ODQxZTFlMmY5Y2RkY2RlMyBzdHJpbmdfbWV0aG9kcworMTM0ODYgZmYwZTU3NmU3NThhN2I0ZTg1ZjQ1OWZmYTUzY2FhNGFmZDE5NGM5NiBzdHJpbmdfbWV0aG9kcworMTM0ODcgMWRjYzk1NmZjZTY0OWY0ZjRhZWZmYjdhMmZhNDg3NDAxNTUzMGU3MyBzdHJpbmdfbWV0aG9kcworMTM0ODggZWVkNWViNWI5ZDRmNTljZjAzODZmN2Y0YWRlYmNiOWYzMDZhYjBlNiBzdHJpbmdfbWV0aG9kcworMTM0ODkgZGRkMjE2MDAzYmQxODcxZDM2NDVmMjU5YTNjNjk0Y2JiZDljNmU2OSBsZWdhY3ktdHJ1bmsKKzEzNDkwIGNiYmYyOTdhZWE3YTkzNzk3YjhmZDlhYzFiNGY5NWIwYzJiMzcwMzEgbGVnYWN5LXRydW5rCisxMzQ5MSBiMmQ2OWY3NTEzODM5YTQ1MzI5OWQ1ZDEzODQxOTFjY2UzZTNhMDVmIGxlZ2FjeS10cnVuaworMTM0OTIgZWM2YzhhZDk4MzQxMDc5NDYzYWY5ZjYzODQwMzgxNTRkYTkwMDljYiBzdHJpbmdfbWV0aG9kcworMTM0OTMgNTE5NjlmZDczYzRhN2U3Y2NiNjYxYTVjYTUyNzg3YTFjYzk2NjQ1ZSBsZWdhY3ktdHJ1bmsKKzEzNDk0IDJlYzA0ZmYyYjliNzMyZjk1MjlkYjgxZTU5NDM2N2FkYzNmYWZjODAgbGVnYWN5LXRydW5rCisxMzQ5NSBjZmVkMjk0OTNlZDY1NjFjYmVhYjE3OTY1OTNlNWM2YTFhMDY2MjM4IHN0cmluZ19tZXRob2RzCisxMzQ5NiAwZjBhNjZjMWRlYWNhMjY4OGFlNGY0NGVlNjgyMjI5NmY2OTk5NzY0IGxlZ2FjeS10cnVuaworMTM0OTcgMGYyMjkyZjU3YTgzMTc0MzY2OTIwYmE5YzU3NTc4MGIwZTk5MjQwZCBsZWdhY3ktdHJ1bmsKKzEzNDk4IDk1ZDc4MjgxNTkwMWQ4YmFlNTY1ODIyZmZmNzBmZjFjNWM1MGQ1Y2YgbGVnYWN5LXRydW5rCisxMzQ5OSBiMmZiZDlhNWExYjU1YzEzMmQ3MjZkNzBlZDIwZjE2YTliZWRlNzY4IGxlZ2FjeS10cnVuaworMTM1MDAgYWU5NmIxYTEyOGY4YzE2OThhMTI5NTE2YzJiYzNkNzliYzk4NjJlMSBsZWdhY3ktdHJ1bmsKKzEzNTAxIGY5MGVkOTY2MzE2ZThjNjk0MjM5N2FmZDlmNjMwMzYwNjEwOGJiMWUgc3RyaW5nX21ldGhvZHMKKzEzNTAyIDRiOTY5MjY1YjlkMjFiY2NhODYyZDQ4NmY1ZjdmMGUyYzc1ZDU1ZWQgc3RyaW5nX21ldGhvZHMKKzEzNTAzIDcxMTM4MDM3MmJjOTE4YTJmZjBkNjk1NTlhYzAzYWUyZDZmYmI0ODkgc3RyaW5nX21ldGhvZHMKKzEzNTA0IDE3ZWMwOTAyZWFmYTA2Y2Q3NDBjYzM2MjBjN2JkNWI5MTU2MDc3M2YgbGVnYWN5LXRydW5rCisxMzUwNSBiZWY0NmVhNWVmNzVjMDRjNGRjNjVkMzU2MmNhODhjODQyYjMwZWQxIGxlZ2FjeS10cnVuaworMTM1MDYgMzlmMjQyYmY0NjIyODM2ODc2YTI2ZTNlZGVjYjZmMWJjNDRhOTViOSBsZWdhY3ktdHJ1bmsKKzEzNTA3IDFkY2NiZWVhZjc2YWNlZjQzNmMxMDQwNmU5OThiOTdlMTg5ZWE5YTUgbGVnYWN5LXRydW5rCisxMzUwOCA2M2I1MzBjMDMwYzU0YjAxZTc3ZmM1MWQwOTg2N2NmMmJiZDAyOTk0IGxlZ2FjeS10cnVuaworMTM1MDkgYzczZjUzNzYyZjliMGYyZjExMjUwZTczZjdjMWRjNjZiOGRlNDM3NSBsZWdhY3ktdHJ1bmsKKzEzNTEwIGUzOWE5ZjEyOTE2MzI2ZDUyZTNmNjFkMmZlMmRkZGI4ODYwNmVlYTkgbGVnYWN5LXRydW5rCisxMzUxMSA3YTEyN2YxOTkyZDE5NzVkZGViOTA0Y2Q3NWUxNjA3ZjgzMzE5MjIyIGxlZ2FjeS10cnVuaworMTM1MTIgNmNhZmEzZDRlMjI5ZThiMGZmNTBiNDk4NjQ2Y2JiMzBmNjJkZDk5ZiBsZWdhY3ktdHJ1bmsKKzEzNTEzIDEzNDYyY2E2ZDk0NzU1ZWFiZWI4ZWFiMTZkMWNiZGVjMWM3NTkzZDcgbGVnYWN5LXRydW5rCisxMzUxNCA0MDUwOTk1YTY2MzliYjg4MmNlNjc0YTRiZWEyMjdiM2JhNTE3YmRlIHN0cmluZ19tZXRob2RzCisxMzUxNSAzYzM1MTI1NWYxNzNhYTk3MzIxMzQ0NzcyNTVkZDgwYTI1OTQ2MGE2IHN0cmluZ19tZXRob2RzCisxMzUxNiA0NmE1NjE3NzMyMmViMDZhYTQ5YjE5MWIxYmU2MTQzOGY3NTIzNzM3IGxlZ2FjeS10cnVuaworMTM1MTcgODdkM2Y5MWU0NGQ0ZDdjNGNlNTEyNjNlZWFhOWJjYjg4MjA1NTUxYiBsZWdhY3ktdHJ1bmsKKzEzNTE4IDNlMDVmY2FhYWVkMjE5MjE4ZWJhODYxMjdhOWRkYTIwNmQzODdkNTcgbGVnYWN5LXRydW5rCisxMzUxOSA3MDg2MjhiNmMwNGJmMjJlNGU3MDE4YzJjNjM2N2M5NmJiYjAxZmI2IGxlZ2FjeS10cnVuaworMTM1MjAgMGQxODZjMTBhNzBlMjRiZDljYjQ3OTU1ZWIyOGIyZGQzMGU2OWM0YiBsZWdhY3ktdHJ1bmsKKzEzNTIxIDg0YWIxNGQ4NTc2MzQzMGMzZGM1MWMzNzIzY2JlYjgxNDQzZTZlMDAgbGVnYWN5LXRydW5rCisxMzUyMiBlNjhlNjA2YzEzMGY1MWFlOTBhYjg1NzU5ZDVmNzQwM2Y0YjRlN2U0IGxlZ2FjeS10cnVuaworMTM1MjMgNjk2MTVkNTBmNThjMDA1ZDJkZjU5ZjM0Y2U3NGNiMWY0YTY5NjhlNCBsZWdhY3ktdHJ1bmsKKzEzNTI0IDhhNGZjNGRhNzY4ZDhlY2NlZDZhMzgyMTVjZDI0NmRmOTdlZDZkY2MgbGVnYWN5LXRydW5rCisxMzUyNSBmY2FjNjQzMmE3ZGZiM2Y1MTk3OGI1ZTFkZjdjZjQyNGRhN2VmMTY3IGxlZ2FjeS10cnVuaworMTM1MjYgOTI2Y2I1YTVlZTMwOTMzNTk3ZTA5OGFhODJhMDlkMTFjNmI1YTdiMiBsZWdhY3ktdHJ1bmsKKzEzNTI3IGU1MjcyM2FmM2NkNWU2ZjEwZWQ5NWRlZjhiNGQ5ODRiZDc5M2ZhMWUgbGVnYWN5LXRydW5rCisxMzUyOCAwODZiMmJjNzU3OGY5ZWYyYzVjNWMwMzYwNDNlYzliNDY0YzRhYjE0IGxlZ2FjeS10cnVuaworMTM1MjkgOGMxMTRlZGUwNTY4NjFkZDVlMjViYTMxMTliZjRiNmMzZjk3YjQwNCBsZWdhY3ktdHJ1bmsKKzEzNTMwIGM4ZWQ1YTE0NDg4ZGU2ZDMyNGQxNjdhMTVjYjFkY2NmYzUwMmI4ZDUgbGVnYWN5LXRydW5rCisxMzUzMSAwODcyZGEzZjNmNTYxMjEwOWZjMDYzMWY3ZTIwZTY4NzUxMjk3YjEyIGxlZ2FjeS10cnVuaworMTM1MzIgYjlmNTVjYzEwYWIzZjEwYWE0YjQ1MzRlOWQ3MjA5MDY1Y2U0NzY5MiBsZWdhY3ktdHJ1bmsKKzEzNTMzIDQ4MThjYjhlMTExMDFkZjQwMGQ3YjdlNzdkMzJjMjYwYjE1YTlkNjYgbGVnYWN5LXRydW5rCisxMzUzNCA0OTJhNjk0ODkwMjg2YTJhZGM0YTI4NmIxZjM3NjkwNWI5ZjIwMTgwIGxlZ2FjeS10cnVuaworMTM1MzUgZTk0NDI3MzRiYzQ5NzNkOTJkOWVjNDIyMzIzY2Q4NzIwYjQ5Mjg5MCBsZWdhY3ktdHJ1bmsKKzEzNTM2IDNiM2M3YjhhZGU3ZmZjODk3NmYzYjZhZTUwYTg0NDdiYzdhZmEwZjQgbGVnYWN5LXRydW5rCisxMzUzNyA0MDc3Y2EzYjI2NTYzMjg5OGJjZGNmNDc1YTlmN2M0NTRlOTAzNWExIGxlZ2FjeS10cnVuaworMTM1MzggMmEyZTk5YWYzODI5MTRlNjI5NmJlYmI3MDk2MTE2MzVkZTBmYzc5NSBsZWdhY3ktdHJ1bmsKKzEzNTM5IDZjOTJkYjNhNzdjZjM3YTAzYjgzZGQ2MzNkNTVmOTI2MDIwNzAyYjkgbGVnYWN5LXRydW5rCisxMzU0MCA0MTM4NWQ1MGExMGM3NDY1MjQzN2Q4Y2VmNGJhNWY4OWFjNTI3MDNlIGxlZ2FjeS10cnVuaworMTM1NDEgNzQ5NzExZjg4NWNkM2U1NjBlYWVhOGYwNWZjMTMwZmYwNjJhYzRjMyBsZWdhY3ktdHJ1bmsKKzEzNTQyIGY0YzYzMTg1Y2UxMTA4NzQxOTRiNDBjMjk0YmM3NDI0N2I3YjYyM2EgbGVnYWN5LXRydW5rCisxMzU0MyAzMDhjZTIxODM5ZDYzZmEwMTk5OTMxZGQ4MmM4MWNjZGU4ZmRmMDM5IGxlZ2FjeS10cnVuaworMTM1NDQgNjEyN2I3Mzg1OGJjOTFmMzUzMTk4M2VlNGY3Njg4MTczZmJiOGQ0MiBsZWdhY3ktdHJ1bmsKKzEzNTQ1IDNhZGMwMzQyZDA4YmQyNWY2ODNkYjA0YTQyOGIzNmQ3NzgxZGVmOGUgbGVnYWN5LXRydW5rCisxMzU0NiAxMTllMTE5ZmNmNWFjMGIzNzA2M2E2YTg4N2Y5NTEzZWI3Y2VhMzZkIGxlZ2FjeS10cnVuaworMTM1NDcgMTI2YTljZGYwNTcyOWUxNWY0MGM1YWQ1MWQzM2MzODE4MzcyNTc0NiBsZWdhY3ktdHJ1bmsKKzEzNTQ4IGU2YWJlZGJjNzljNjllZTllOGQ0ODkxYTgyNWJmZTRkN2QwZjM0OWIgbGVnYWN5LXRydW5rCisxMzU0OSAyNzFhZjI5N2FhM2VhNzk4NTM0YjhmYjZmZTg3YjZlMGZiZGZlYmQ3IGxlZ2FjeS10cnVuaworMTM1NTAgMzFmZDRlZDczZDI5ZTUxZWU0MWJiOWNkODQ2YWU1MTMxMGI1ODg4NSBsZWdhY3ktdHJ1bmsKKzEzNTUxIDY0OWRhYWQ2Y2Y1MTY3ZmQzZGJiN2I1YWE3OTJiNzZkM2Q1NTllYTcgbGVnYWN5LXRydW5rCisxMzU1MiA3NzFhOWExMDBkNzViYzhkNzA5NmUwMzc4Zjk5MzczMDBkNDZjMzk2IGxlZ2FjeS10cnVuaworMTM1NTMgMzgxOWViN2M4MzRiMzU4ZTQxYWUwMGZkMDFiNmQ0YzdjNzNlMDk2OSBsZWdhY3ktdHJ1bmsKKzEzNTU0IGY5YmE4MDIzOTc2ZDY2MjBhOTJhNTk3MTMwNTFjZDZjZjliYzc1MzcgbGVnYWN5LXRydW5rCisxMzU1NSAzYmU5MzViZTM3ODFmY2QzZDZmMDMzZjEyOGY0YWVmOGI2OGEyYThiIGxlZ2FjeS10cnVuaworMTM1NTYgOGI3ZjY1YjBkYjE4YTM2Yzk4NGQ1OTYxM2EwNTk3YjNlYTY0MmE4MCBsZWdhY3ktdHJ1bmsKKzEzNTU3IDM2Njg0Y2UwZDQwZDYzNjkwY2U5MWFkZjA3ZTdiODcwODNlNDMzZjkgbGVnYWN5LXRydW5rCisxMzU1OCBjYjM2NjMyMTE1MmNiMmU2OTcxZWJlNDZmMjcxMGNiYzRjNWJlMmQyIGxlZ2FjeS10cnVuaworMTM1NTkgYjZhNDM4Y2MxOTViOTk3YmFjMjQ0OGEwMGNhNWE2MmMyMTBiMjBjZCBsZWdhY3ktdHJ1bmsKKzEzNTYwIGFkMTVhMDM5NGY3ODI4ZmQxZTdiNDU5ZTcyNjg0NGMyNWJkMDY0NDAgbGVnYWN5LXRydW5rCisxMzU2MSA1YWRiYjNmMDRjYmMyZjkyNzg4ZDMwODY2YTg0NDM4ODRiYTRjMTgyIGxlZ2FjeS10cnVuaworMTM1NjIgMTJjZjkwOTY2ODIyMzAzNjI4MWIzZmVhZDBkYzZiOGRmNzVlMDM2OSBsZWdhY3ktdHJ1bmsKKzEzNTYzIDVmYTk2ZDA1MDMxOWQ4NGJiY2MwYTJhYjRkM2E0NjYyMzg0NGZjMTUgbGVnYWN5LXRydW5rCisxMzU2NCA5Nzg5NmMwOWVmMWIzMzFlMDkxNGJjMzc5NDEyMjViYjk1Y2E4MGY4IGxlZ2FjeS10cnVuaworMTM1NjUgNjI2Y2FlY2E1MzVhMjQzYjBjODFlZDc0NDYzMWVkY2UzZjE4NGY0YyBsZWdhY3ktdHJ1bmsKKzEzNTY2IDI3YzQ4ZGYxY2ViNzk1OTFmYjJlYWRjOGZiNGI5NzY5MzQwMTQ1NGUgbGVnYWN5LXRydW5rCisxMzU2NyBmNzhmMTZmZWE0NTU3ZjRkNGJhODA0NzY4OWM5ZjczZGNjNTcwNjM2IGxlZ2FjeS10cnVuaworMTM1NjggY2MyZWIwMWExNmY0MjNiZmIwNDcyMmQwODBiYmJhN2RhZTBmNDc5ZiBsZWdhY3ktdHJ1bmsKKzEzNTY5IDgxNDk4YzRlNTY5ZDM0OThlNDFkYjRkZGMyM2VlNWVhMDVkN2E5MjAgbGVnYWN5LXRydW5rCisxMzU3MCA1YmI0ZjUwZGE0NzRhNWI0NTcyMTRlMmEyZGU0ZmJjODhkNTM2NDJlIGxlZ2FjeS10cnVuaworMTM1NzEgZmQ1NDZjYmRmYjVmODY1YTkxZWVhNDc4MzczZjQ0YmYxZDQzMTRlZiBsZWdhY3ktdHJ1bmsKKzEzNTcyIGFlYjEwY2MyMzAwZDZlNmE1Yzg0MDE3YmRkMmVhMzIwYzhmYWIyMmEgbGVnYWN5LXRydW5rCisxMzU3MyAyMjJhZWU5NmRjNDI1MTBhOGE3N2QwN2I5ZGQyZWJlOTVhNzhjMjA3IGxlZ2FjeS10cnVuaworMTM1NzQgNGY1MWU5N2E2ZWRmNWQ3OGEwOWYyZmNmMzdkZmNkODU2MjIwYzczMiBsZWdhY3ktdHJ1bmsKKzEzNTc1IDVhODJmYjRmNzhlNTk0Y2RmOGI4ZjAzYmUwNzEzYzUxOTdjODgyYWIgbGVnYWN5LXRydW5rCisxMzU3NiAyN2ZiYjA4ZjhjMzhkY2FlNzQxZmU5MWQ2YTI2YWU5MzlkZmQyNTQ5IGxlZ2FjeS10cnVuaworMTM1NzcgMjUzOTcwYTJjMDVkNjY0NTVjOTFmN2FjNGViNzk2MzY0YWI3NDRmYiBsZWdhY3ktdHJ1bmsKKzEzNTc4IDI1NmI4Nzg2ODlmM2IxZTRhMDg5OTkzZDRkOTgwNGI4YTEzMzc5YzYgbGVnYWN5LXRydW5rCisxMzU3OSBiM2FjZDU2NTIwY2Q5ZmFmNzIzMjFlMzczMmUzN2VlMGVlNjAxODJlIGxlZ2FjeS10cnVuaworMTM1ODAgYmNjMGJlN2NiNDA4MDFkYjFhMGFjOGUwZjhlNTNlNDA3N2FkOWE1ZiBsZWdhY3ktdHJ1bmsKKzEzNTgxIDEyMDk4YThhOTVlY2I4YjU3MzdjMDhiNDRhNTJhOWQwNTEzODNiM2IgbGVnYWN5LXRydW5rCisxMzU4MiA3OWVlNmRjOTNkMGU5ZTNjYmQ5Zjg1ZGIyOTk3ZDkxZDFlZjQxMDE4IGxlZ2FjeS10cnVuaworMTM1ODMgOTYzMWY5NzI2YTcwNWI0OTA3OGY2Mjk3ZDE3NTMwMzUzODg0YjQ3NyBsZWdhY3ktdHJ1bmsKKzEzNTg0IDA3YjA3Mzc2Y2E3Mjg4YzQ5MzE0ZWI1ZGMyM2NiZTlkYzUxYjE3MDIgbGVnYWN5LXRydW5rCisxMzU4NSA5MDIzMTZjNzJiNDNmOTUzZTBkM2M0OWZlZjk3OTVkMThlOTVhMDdiIGxlZ2FjeS10cnVuaworMTM1ODYgZTNkZGI4NzYxNjM3MWNiYjU3YjdjNzQ5N2U5N2Q5NzYwNDc0MjIzNSBsZWdhY3ktdHJ1bmsKKzEzNTg3IDQ5ZThkZTBiNWVhNzRhODU1YmI1NDU0YjA3ZjRlZjc4MWU0ZGU4NTYgbGVnYWN5LXRydW5rCisxMzU4OCA3ZWQ2ZmJhODI2NWNiNzlmNjExN2VmN2Y5NWNhOTk4MWIyMDFmYjk1IGxlZ2FjeS10cnVuaworMTM1ODkgZjExMTQ4YzVmYmVkY2NmMmI0YWEzMjI3YTBhNzQ0OTIzZmM5Y2Q3OCBsZWdhY3ktdHJ1bmsKKzEzNTkwIGQ2Y2E5MTA2M2NlYzkzY2JlYmM3ZjgyZjU5NjEzZTMzZTBhNmQyNDcgbGVnYWN5LXRydW5rCisxMzU5MSBmNTI2ZGI5YTZjZjgzNmRmMDFiZjgzN2ZlZDJlMTQ0MmFkNjJiZjQ3IGxlZ2FjeS10cnVuaworMTM1OTIgZGZiNWFkZDY4NGMzZTgxMjE1ZDM1ZjY5NDZjYzE1Y2Y4MjY3N2E1MyBsZWdhY3ktdHJ1bmsKKzEzNTkzIDYyODJhY2UyNzk1ZTA2Y2JjNWEzMDYyNGQ0NjU2ZTgxYmFkNWJmYzEgbGVnYWN5LXRydW5rCisxMzU5NCBiYWUzZmJlMmI1OTFhZjlkZWEzYjYxNGM4MGNlZGY5OWJlYTg2NTdlIGxlZ2FjeS10cnVuaworMTM1OTUgMGI2NTgzNWUyYjI5MDlkNjViZTJiZTlhNDA2MmFkMzM1MzYzZTgwNCBzdHJpbmdfbWV0aG9kcworMTM1OTYgOGU0ZGQ2YTE2MWZmYjdjYzQ3ODBlMTdmN2M3OGJlNjAzMDI2YWQ3OSBzdHJpbmdfbWV0aG9kcworMTM1OTcgMGRkNTBhNzBjNDdlMjJkNjJmODEwYzY2ZmFlYzJkOWRmOTU1YTlmMiBsZWdhY3ktdHJ1bmsKKzEzNTk4IDJmZDY1ZDBmM2Q0MTUwODNjYzFmNzMwZWI4MmQ4YjMyOTM1YjYxMDUgbGVnYWN5LXRydW5rCisxMzU5OSA5ZGQ4MTlkOTkzMjYzOTI2YzJhNGY0ZWFhZjdmZTcyYmNjNmFhNTAxIGxlZ2FjeS10cnVuaworMTM2MDAgYTg0ZjlkMzk5OWFlODQ2NTk0YTEzNDNkZmU4YmI3MmEwMDFhZmZhNiBsZWdhY3ktdHJ1bmsKKzEzNjAxIDY2MTNkZmQ3MzkxNzE4Y2RjNWY0MTQzYWY2MTNhMDRhMWUxMmEwNzAgbGVnYWN5LXRydW5rCisxMzYwMiAzNmUyNThiNTc3NTA2NjkzYzQxMjExODg2NmM3ODQ3MzJjZjcxMTFjIGxlZ2FjeS10cnVuaworMTM2MDMgNGExZDZjN2IwOTUwMWY5M2M3OGU1MmI5YmVhNGI5ZDZiZmE1YWQ5NyBsZWdhY3ktdHJ1bmsKKzEzNjA0IDYxOTNjYzE0NWI4YzdhZDhlMWNjOTdkZThkMTk1OTFkMGM5ZDc4MWIgbGVnYWN5LXRydW5rCisxMzYwNSBkMWI0OGVlMTQ2MDFmOGE1NDQ2OWI1MTY1NTZhODliZDQ3NTkwNDlkIGxlZ2FjeS10cnVuaworMTM2MDYgODdhMzkzNWU2NmFhY2RjYjFkNDhmMzU3ZDg0NmRhNzczMDNkN2QxZCBsZWdhY3ktdHJ1bmsKKzEzNjA3IDNlNWY2OTY0Y2QzMzE3YjAyZDRlNDY2ZWRhMWVmYWIwNzlmMTFlM2MgbGVnYWN5LXRydW5rCisxMzYwOCA3NjAwOGY4YTBlNWY2Y2RlMTcxNWZlZDFlZDQ2NDI1ODZkYmU5NTM5IGxlZ2FjeS10cnVuaworMTM2MDkgZDA0NjA5YTM3ZGMxMTY2M2IxNjI0M2FiYmI1ZmNhMDQ4ODM4M2EzYyBsZWdhY3ktdHJ1bmsKKzEzNjEwIDViZTk0MDZiYmIwNWNhMTEwMzc1Y2M4NWFjZjQzMDY0MTBhZmI4ZmEgbGVnYWN5LXRydW5rCisxMzYxMSBkNDUxYTIxMWMxNmEzZDY3ZDhmZmNiMWQ5NDcyNjQ4Y2EwOTEwZmM3IGxlZ2FjeS10cnVuaworMTM2MTIgMjU2NzM4ODRhM2QwZjNjZDI3Mzg3ZjkyMTU1Y2JiMWJkMWQzNGRkNyBsZWdhY3ktdHJ1bmsKKzEzNjEzIDg0NjEyYTU2ODhmYzkzYzI0ZTFkNWYwZDQ2NjYzZmFkMGE2NDczMjAgbGVnYWN5LXRydW5rCisxMzYxNCBkYzZiZTBlZDM5OGNmZDM3Njg4YzY3YWI0ZDVmZjdmY2IwZWMyMjUzIGxlZ2FjeS10cnVuaworMTM2MTUgNDQ2M2RkN2JiM2U4OTVmM2UwNTljN2FkZGQ5ZWNjM2E5OWYwZDhmMyBsZWdhY3ktdHJ1bmsKKzEzNjE2IDRhN2IyYjRkMTY2OWFlZjVmMGRlOWM3NzE1NGVhODNmN2Q2OWRmM2QgbGVnYWN5LXRydW5rCisxMzYxNyA0N2UwMDNiZDM1ZWQwNTNhODlmNTlmM2I0Y2Q3NDM3Zjg4ZTYyOGI3IGxlZ2FjeS10cnVuaworMTM2MTggNGI1M2Y0YTBhOThhY2QxYmZjZGZjNjMwMzNkZjViNzVlMDNlMTc0NSBsZWdhY3ktdHJ1bmsKKzEzNjE5IDcwMjllMThiNGYxMWU3N2M0OTU3OGFmYWJmYzRkM2U3YTZjMjU3Y2UgbGVnYWN5LXRydW5rCisxMzYyMCAyZTAwYjg4OTAzNWYyZjQ2N2Y4YTQwZjg0ODc0MWYxOTUyNDYzM2RkIGxlZ2FjeS10cnVuaworMTM2MjEgNzI4YTI1MDBlYTQyZmI1ZmE4MzFiZmM5MGM1NWU5OGZiZDQ3YzRjYiBsZWdhY3ktdHJ1bmsKKzEzNjIyIDFkNGY1ZjQ5ZGU0ZWNmMzhmMTk2MDljOGNlM2Q4ZmM4MmFlZjE2MmIgbGVnYWN5LXRydW5rCisxMzYyMyA3NjljNmI0YzViODg3YzM0ZTc1M2ZmNTY2ZTg5NDc0YjM5MGUzMDQ1IGxlZ2FjeS10cnVuaworMTM2MjQgNGM3NTU5NmU5MmY0ZjhhZGVmYmUwM2NhZWM1Mzc3ZDlkODNmN2E2OCBsZWdhY3ktdHJ1bmsKKzEzNjI1IDljMjkyYWQ4YTZkNDYzYzAzNGY1NDJmYWUzMDdjZTk5OGY4ZGI1MWEgbGVnYWN5LXRydW5rCisxMzYyNiA3MWVkMGEyYzI3OWE2MDVmMWJkZDk4ZjY3N2JlNTY3M2NlNWNkYTBhIGxlZ2FjeS10cnVuaworMTM2MjcgZmEyZTNkMDZjNzkwMmUxNmJkN2EyMGU3M2I4NTM4YzA0MzQ1NDAwMSBsZWdhY3ktdHJ1bmsKKzEzNjI4IDg3MmE4MmZkMGVjNDFkNDg3NGIyNTBmNDAyNDIwZjUwNzdiMjhhZDkgbGVnYWN5LXRydW5rCisxMzYyOSBhYTZjNWY4NmRmODdhNGU1ZWIzY2Q2ZDE2YjY5OWVlY2FjMTk1OTAyIGxlZ2FjeS10cnVuaworMTM2MzAgZmJmNDBkN2ZkNGRhYzI2NWMxMjE0Mzc4M2E3ZWRkNTVlY2RhMmQzYiBsZWdhY3ktdHJ1bmsKKzEzNjMxIDY3YmQyYWFlMjczMmVhYTVhMWE5ZDY2MTczZDc5YmQ3NDRmMzQ4OTcgbGVnYWN5LXRydW5rCisxMzYzMyAwNjhmYmY0ZjU1OGEyMzNjNTQ2YzZhMzdhMzE2YjgzYTFlZDVlNDNhIGxlZ2FjeS10cnVuaworMTM2MzQgNWU4NDhjM2U5YzVjNzFjNDRlNDMyZDJjNDU1Njk2OGFiNjk1MjAyMiBsZWdhY3ktdHJ1bmsKKzEzNjM1IDE0Mzc0YmEzNDFhNjdhOGY2NTU4NWVhYzI5YmNhN2U0NmFjY2NmZTMgbGVnYWN5LXRydW5rCisxMzYzNiAxY2RlNTIzMGM1MDgxOWUzZDI0NzNjYzEwZDI2NzE0YmExYjhjN2Y3IGxlZ2FjeS10cnVuaworMTM2MzcgNmJmNjIwMzc1OTc2MzQ5YTk2ZGViMTQ2NjU2ZjgzNzEzMWQ0N2IyMyBsZWdhY3ktdHJ1bmsKKzEzNjM4IDk5Mjg2ZGFhOTAwZGQ0OGU1NDBmYjc5MmNhNDY5YzQxYWNjODc0NzkgbGVnYWN5LXRydW5rCisxMzYzOSAxMmYyMDhkYjQyYjBlOTJmYWM2YThmOTM3NmYzMjRiNTIwZDZiYmUyIGxlZ2FjeS10cnVuaworMTM2NDAgNzhmNWJmMTc5NzUwNGE5ZTY2OTUyNWZiMGI1M2ViMmY1YWVjMDVmYSBsZWdhY3ktdHJ1bmsKKzEzNjQxIGJlOGVjODI4YzA3MjM3MjhjMjcxOThiZjQxN2MzMjIwMzE5MzhjYmUgbGVnYWN5LXRydW5rCisxMzY0MiAwMTBlN2I2OWQ4NmJmMGUwZjFiNzM4OTRhM2U4YTJmMjExZTMxNmQ0IGxlZ2FjeS10cnVuaworMTM2NDMgZGNjMDkyMjhhM2QyNDIyM2M3OTFhMWVkNDhmMDVkNWI3ZmNjOTc2NCBsZWdhY3ktdHJ1bmsKKzEzNjQ0IDkzOWQ5MTRhZjU4MTZmZmM0NmNmZjc3MjU1NjkxOWI2NDIwZjZiMzIgbGVnYWN5LXRydW5rCisxMzY0NSBkYTljODNiNWZiMDc0NWVjYWFjNGJiNTIzNDRiOGIyYmNkZGM0OTc2IGxlZ2FjeS10cnVuaworMTM2NDYgM2IxOTgwZGI0YWU5OTA0NmNlZDJhODBjMzEzMTU0ZWNmYjc5MGNkZiBsZWdhY3ktdHJ1bmsKKzEzNjQ3IDE2NGI0YmM0ZGRkZDBmODI5NTg2NWRjYzY3MjFhMmIwNjk5MGYwODggbGVnYWN5LXRydW5rCisxMzY0OCAzYTM5ZWJlMjc2YzhmNGY4Yzg5Nzc4ZjMzMzAwMGNlMDhhNWE1OTY1IGxlZ2FjeS10cnVuaworMTM2NDkgZDQyM2Y1Nzg0NGIyNmI3MmI4MWQyZWFmMjY4NTdmNDIxMWQzZjUzZiBsZWdhY3ktdHJ1bmsKKzEzNjUwIDMwNmI0OWQ2ODIzMzdjYjk1NmQwNWVjMmRmMDA5NmJkOGNmZjFjMWEgbGVnYWN5LXRydW5rCisxMzY1MSAyZWIyODc5ZDU2N2Y0YjMxNjlmMmFkYTlhM2M4ZmYwM2E2MjIxMzdlIGxlZ2FjeS10cnVuaworMTM2NTIgN2MyMzk3MTEyMjFhMjQ3NDVmM2IxZTYwZjkzMWY0YjYwNjBkODQxZiBsZWdhY3ktdHJ1bmsKKzEzNjUzIDQ0MmZmZTlhNThjMTNjOTcwMWM0N2VhNzM2NmNkMDliNDcwNWU1NjAgbGVnYWN5LXRydW5rCisxMzY1NCA1ZTc2Yzk5NjVmZTgzOTAxZTBiMTc3MjVmZThiODBmYjZkN2I2MjhiIGxlZ2FjeS10cnVuaworMTM2NTUgOWEyMDAzOGYwYjk5N2VmMGRjMjAwY2ZmMTUxMGFmZDY4NmQxZWE1NCBsZWdhY3ktdHJ1bmsKKzEzNjU2IGE0YjcyNDJhNGI3NGNiZjQ3YzliNmNhNjA0NzJlYzA1MWFmNmVlODkgbGVnYWN5LXRydW5rCisxMzY1NyAxYzZmZGM4YWRhYjBhNGM2ZmRjNWRkMTZlYzYzYjcwYzA5MGFhMTZkIGxlZ2FjeS10cnVuaworMTM2NTggZjcyOWJiYzRhOWYzMTBmOWY3ZWE1ZGZmOTg5ZDViYmQzYThiNGFkYyBsZWdhY3ktdHJ1bmsKKzEzNjU5IDBkODhlMGQyMTg0Zjg5MzlhYmQwZDdkMGYwNDAxY2I1ZjkzZjU5MzkgbGVnYWN5LXRydW5rCisxMzY2MCA0MWE0Njk3OGE0NDRhNzI5ZDc3MmYxODc3MTdkMjYyYmUzZjExY2M3IGxlZ2FjeS10cnVuaworMTM2NjEgMmM1ODU1MjY0NDdlOTVlYjhmNDNlZjljM2JiYWMwZmEzNGE2OWEwNyBsZWdhY3ktdHJ1bmsKKzEzNjYyIDgwNDlkMmRlMWU3OTRhYWM0NjYzZmZmY2IyNDhiYjg4MjRhZTVjNjkgbGVnYWN5LXRydW5rCisxMzY2MyA4NGUzNGQ4MTM4YWM5MDQzNTFmZjhkNTY3YTJlM2YxYTljYjllMGY1IGxlZ2FjeS10cnVuaworMTM2NjQgYzJhYzg5NjkyNmNjNGE3OTg0ZTg1MjhkOTM3NTdhMThmMmU5NmEwMiBsZWdhY3ktdHJ1bmsKKzEzNjY1IDBhNWE4ZjUxM2QxMzYzYTdhNzkzMWM0OTYwYTRlMGI2ODMxNzdkOGMgbGVnYWN5LXRydW5rCisxMzY2NiBiNTZiZGExOTAwZmMwZWQwMGM3OWJkNmFiYjNhNGFhOTRkMGQ0OGNmIGxlZ2FjeS10cnVuaworMTM2NjcgMmMzYWY5MGYzZmFlYjQ1NTZhNTMxN2ZkMjFjMzNmYmU3YTVjOGEwMSBsZWdhY3ktdHJ1bmsKKzEzNjY4IGNkZmE5Y2Q0ZTcyYmIyNmE3ZDVjNDI1NDcxODg0NzQ5YjM0NmZkMzggbGVnYWN5LXRydW5rCisxMzY2OSBjMDk1NDExMjhjNWE0MWRlMzU2Zjk0MGQ2MDFmNmI4ODYzMWY2NDZkIGxlZ2FjeS10cnVuaworMTM2NzAgYzk1ZTFmZDg3YWYwZjA2OTZmYjI3OTdjZDBjYzVhMjg4ZGYxM2I0ZSBsZWdhY3ktdHJ1bmsKKzEzNjcxIDJiN2M0M2Q0YjQ2OWIwZjIyMjBjOTVhNjZhMGYxMWE0YmU2OGE0MmQgbGVnYWN5LXRydW5rCisxMzY3MiAxZGJjNWU2OTc4ZjlkZDJmNTg4OTQyYjQyMWJmODQwZjA0MTVjMGQxIHN0cmluZ19tZXRob2RzCisxMzY3MyA0MWZjYjQwZTg0MWZkNmE2MzEzY2VkZjJlY2FhYmQ3NTYxYmU2OTlhIGxlZ2FjeS10cnVuaworMTM2NzQgZDk5N2UyN2UzMzEyYmMwZGM2NmYyNzA5OTVkNTg3MzFmODlmM2MzMSBsZWdhY3ktdHJ1bmsKKzEzNjc1IGY2MmU0NjVjNGQwMTRiOGUzNmI4NTI0OGZhODEyOWRlMDY5MThhZTcgbGVnYWN5LXRydW5rCisxMzY3NiBiYmQwMzVlNWE5NzJjZmExZWFhNGVmYWM3ZjQ0M2MxZTBjMzY4ZDVkIGxlZ2FjeS10cnVuaworMTM2NzcgYjhhMjlkZTllZDU0YjI0M2FiZDM0NDcwOTk1YjllNDY2YmUwZjcwMSBsZWdhY3ktdHJ1bmsKKzEzNjc4IDg3OGFjMGNkMGU3NjgxOGUyNTYzZGVlZTNlMmE5MTYzZTI5Yjg4ZWQgbGVnYWN5LXRydW5rCisxMzY3OSBmNGVmYmEzMjMyMGVjNDNhODE5NGMyMWI1OGEyY2Q4OTM1ZDViMTM5IGxlZ2FjeS10cnVuaworMTM2ODAgODNmMzlmYzg1NzYzYmVmNDI5YjlmZjI1YTA4ZTFjNTlmY2E3M2JiMCBsZWdhY3ktdHJ1bmsKKzEzNjgxIDM2YTY1NDYyYzI2OWQwY2NkMjVjNDEyZWViZjdkNmFlMGM4NTg0MGMgbGVnYWN5LXRydW5rCisxMzY4MiAxYTY4Yzk3MmQwODQxZTM1ZDRlM2UxMzAzOTE1NDIxODc5MDQ2NzgzIGxlZ2FjeS10cnVuaworMTM2ODMgNjg1MmZmMDMwMzA4ODRiZGZlNzU5ZjJmMzRjNDFhMjRjNWM5NzcxYyBsZWdhY3ktdHJ1bmsKKzEzNjg0IDJjNGQ0OGUzMWJkNWU3OGFiNzA5M2MyZmFhMzhlOTUyZDFkM2U4NmUgbGVnYWN5LXRydW5rCisxMzY4NSA0M2NjYmNmNDM4NGYxMjMxMTMyMDJkOWFhNmE4OWRjZTZmMzZjYmRiIGxlZ2FjeS10cnVuaworMTM2ODYgN2NlNWJhZTdmNzY1YTQ2ZWNlMTU1ZDBlNDE2NTNiOTIxMmJhZjRlNiBsZWdhY3ktdHJ1bmsKKzEzNjg3IDJmMTAyNmRiODIyODBiZWZlN2Y2OGJkM2VhNTk1OTE5OWVmMGNjZmIgbGVnYWN5LXRydW5rCisxMzY4OCBhZWQxOWFmNjBlYTMyNTJjOGRmMGNhZWU2NTZlNGZjMmRjZTliNjNjIGxlZ2FjeS10cnVuaworMTM2ODkgMGJhZmYxMzVjNGI0ZTFiMDhiYTBhZTc4YmQwNjQxYmQzZDRiZjlhMCBsZWdhY3ktdHJ1bmsKKzEzNjkwIGQxNTRhZTdjYTAxNGY3OTEzMGU0NjAyOTQ2YmFmNzMzYTI5YWY2NDggbGVnYWN5LXRydW5rCisxMzY5MSAzYzhjNTU3NjEwOWMzNTdmMWY2YjU0OTk5YjNkYzg0NTFmYTc0MWRjIGxlZ2FjeS10cnVuaworMTM2OTIgNmU2YmRhZTg4MDhhNTMxOTQ1NGI3ZTZkZGJjNmUzYmYxYzYyMjU3NyBsZWdhY3ktdHJ1bmsKKzEzNjkzIDk4ZTU5Yzg0ZWMzMWEzZWJkYmY4NjI4Mjc5NmUxODcyNjA2ZjdhOWQgbGVnYWN5LXRydW5rCisxMzY5NCBhNGFiYTIwNTAzOGViNWEyYWI5OTI2M2UwMmYyMzAxZjg3NDM4ZmJkIGxlZ2FjeS10cnVuaworMTM2OTUgM2UwYzdlNjkzOWJkMDJhNjc1NTBjYTEwNTJkODAyZGEzNGI0ZDRlZSBsZWdhY3ktdHJ1bmsKKzEzNjk2IDFhMjdkZDA2Y2NlMTY5ZGFkYzI4MWQ2YWRjNDQxNzAxODAzMzEyZmEgbGVnYWN5LXRydW5rCisxMzY5NyA2MTdlMTBmYzVkOGQzMjhmYTAwOGZkMTM3YzdjOTQ5YzFhOGFlMDljIGxlZ2FjeS10cnVuaworMTM2OTggNWRhNTdlYTVmYzY0MTgxM2I1ZjI1MDYwNTdmZDAxMTdkNGI2ODlmZSBsZWdhY3ktdHJ1bmsKKzEzNjk5IDMyMDY1MjI0MmU2YmEwNmM1MTVhM2I2OGU1MDY5MmZmNzI0ZTk3YzIgbGVnYWN5LXRydW5rCisxMzcwMCAwNDkyOWFiY2FkODZiY2I1Mjc1NDc4ZWQwY2RkNWFjOTY5YTU1MDg2IGxlZ2FjeS10cnVuaworMTM3MDEgOGU3NGVkMTU0ZjYwODdmZWM3MmY1ZTYzODRjN2M3NjBmNzA0NDcyNSBsZWdhY3ktdHJ1bmsKKzEzNzAyIGY3NjZmYjZmODUyNjVhNDliODM4YjdlM2Q2NWE2YTFjNjhhODE4MjQgbGVnYWN5LXRydW5rCisxMzcwMyAzNDg1YTdlNDYwMGI5ZmVkZjE4ZTY1NWZiZjhhZTlkZTU0NjQ2MTNkIGxlZ2FjeS10cnVuaworMTM3MDQgZmFiODFkZjU2NmQwY2ZjZTQ2NGJmYTg0YzhiNTA0ZWIxYzUzMDQ1MCBsZWdhY3ktdHJ1bmsKKzEzNzA1IDY0YjE1ZTkwOTFhOTJiYjYzNTg5N2NmZjk5ODc1N2MzNTUwNGIyMjYgbGVnYWN5LXRydW5rCisxMzcwNiA1ZjVmYzEwMzE5NTdhYTVhNDJmZTFiNjI3YTQzYzhlMjczNTYxZGQyIGxlZ2FjeS10cnVuaworMTM3MDcgMjQ1ZDJiNjA1MDM2ZDE0ZjE0OTQ2N2M4MDliOGNhMzVhMWQyZDNjZiBsZWdhY3ktdHJ1bmsKKzEzNzA4IGQ2YWI3MmNiMTYyNThlOWMxMTExYTU1OGJmYTRkNmU3NTFkNWVhZDYgbGVnYWN5LXRydW5rCisxMzcwOSA4MTc1YmZkZmJlYTllNDBmODE5ZjBmNmNkZTZhOWQ3MzJmNmFlYWNhIGxlZ2FjeS10cnVuaworMTM3MTAgNmMxMzA5ZDgyY2IxMTQxZmZlMzFiNmNmNDIxM2VlZjg1YmE1YmFhYiBsZWdhY3ktdHJ1bmsKKzEzNzExIDM1ZTBkMDNmMmIwMmY5ZjhjNWRkZmIzMTBhYmI5YWJjZmM1ZmMyMDggbGVnYWN5LXRydW5rCisxMzcxMiAxZTBiMTk2N2JlN2YzZTVkOTRiMjhjNGNkNGY1ODA1MTZhMDM0MjM0IGxlZ2FjeS10cnVuaworMTM3MTMgOTM4YjQ2ZmE2Mzk0ZTg4OGUzZGJkNzhjMDkzODcyNTY2NDc5NGE0MiBsZWdhY3ktdHJ1bmsKKzEzNzE0IGRiYjgwODNmMGNlNzFjMzljYzIyNmRiMjk2MTdkMGNhY2E2OTQxYjEgbGVnYWN5LXRydW5rCisxMzcxNiAyNGM1YmM2YmZjYWFmZThlZTViNWY2Njk0ZDY0N2MxZDNkYzU1MGU4IGxlZ2FjeS10cnVuaworMTM3MTcgZjZlNmNkYmFkYmI1MDRlMGMzMmJlMGE2ZjQ2NWE2NWM5MzhjZmUzMSBsZWdhY3ktdHJ1bmsKKzEzNzE4IDEyM2MzOGRhNmY0MzgzZjgzZmRjNjljM2Q1ZDNlNjZmOTA4OTVhYWEgbGVnYWN5LXRydW5rCisxMzcxOSBlY2VlOWRlNzliMWVmNTczNGY4ZjFkY2ZjZDYwZTFjYTNhYWJlNWQ1IGxlZ2FjeS10cnVuaworMTM3MjAgM2Q2NmExOTcxOTM2OTgwYTVjMGM5NDE2MDgzZTNiZDlkNTk3ZDYzYiBsZWdhY3ktdHJ1bmsKKzEzNzIxIDAxYzUxYjI2OGMwNDk2MWZmMmNhNWU2YmRmZTQ1YWFhOTcyNTZkN2QgbGVnYWN5LXRydW5rCisxMzcyMiBjNzIwMzE4ZTNjNDkyMDc4MTdkZmRiMGMzNjljMTM5OTk1NTJlMTQ2IGxlZ2FjeS10cnVuaworMTM3MjMgODk5NjFiNjgxM2FjMzkxOWI0N2FiOTJlYWE1ODhiMDI5OTQyMGYwNCBsZWdhY3ktdHJ1bmsKKzEzNzI0IGM2Mjc3MzRlYWY5MjlhNzljNjJhMzM1YTlkYTdmNmE0MTUwZjE2OGYgbGVnYWN5LXRydW5rCisxMzcyNSBhODE5NWZhMzI5YWMzOWJmYzJhMzkxZmIyZDFiY2E1NTUzMWI0YzFlIGxlZ2FjeS10cnVuaworMTM3MjYgMWM4ZTQyMjdkOTg3OTFiYWE5ZDgwOTk5Y2Q0YzU4MzVkNjY1NDlkZCBsZWdhY3ktdHJ1bmsKKzEzNzI3IDRmZGQzMzkxNGVkYWI0ODIwMjk2NWEyOGI5Y2UxMTQwYWZiOTI3NWIgbGVnYWN5LXRydW5rCisxMzcyOCBlOGIyNGNkMTdkZjIzZDg3MmUyNmU3NTZiZmEzNmEzZWM2N2Q1NzEwIGxlZ2FjeS10cnVuaworMTM3MjkgYzUyZmJjNmJkMzhhOTE3MDE1YjM5MmQ5YzllMDNhOTRkZTYwMDIxNiBsZWdhY3ktdHJ1bmsKKzEzNzMwIGJjYTJkMTRmM2UzNjUwZjZiMTdkNDIzM2Y4YzFmY2U1Nzg5NGM0ZTMgbGVnYWN5LXRydW5rCisxMzczMSBiZjU2NWIxOGNmZGM0ZmJhZDEwZjA3ZWRhOGY5YTM4MmExYTIwZWEwIGxlZ2FjeS10cnVuaworMTM3MzIgN2VlZWIwZDJiMGE0MDFiMTg3MjgyN2IwNWE1NjYwZmI2NjczN2UxNSBsZWdhY3ktdHJ1bmsKKzEzNzMzIDcxZTBiNDVkNTU4YzJmNjllNGIyMzcxNzVmY2JiMmMyOTI0NWU2YzcgbGVnYWN5LXRydW5rCisxMzczNCA5MTU3YzZkYTc2MTkzYTE1M2E0NmFmZGRmN2RlYjQxMDE3OTU0ZTk5IGxlZ2FjeS10cnVuaworMTM3MzUgZGU4ZmZkMmU3MWI1ZmFlYWQ2NzAyMmYzODBhZjlhZTY3YmMxNmRkNiBsZWdhY3ktdHJ1bmsKKzEzNzM2IDk4ZDQ1NzM4M2EyZDNmNGIwNWZjNzdhNmExNzI0ZWMzN2Q3N2ZjODYgbGVnYWN5LXRydW5rCisxMzczNyBjMzg4ZjAwYWZmZTdkY2IzY2FhMWZiY2YzNmMzN2I1ZTIzYjM5NjMxIGxlZ2FjeS10cnVuaworMTM3MzggNWZlMjYzZmI2NzRhYjFhMDA2N2U2Y2FjMDkwYzQ0MDY2NWFhMTdkYSBsZWdhY3ktdHJ1bmsKKzEzNzM5IGE4YjVhNWIzOTJmYmM1MmMwOTY4MWUwY2EyYzVhMzU3ODRhMzQzNmUgbGVnYWN5LXRydW5rCisxMzc0MCBjZjdjZDdiMDRmYTY1OWE1YzIxM2EyODE4ZTBkNzczZmIyZmNkMzQwIGxlZ2FjeS10cnVuaworMTM3NDEgZDVmNDZmNTk5NTg1YmI2ODQ1Zjc4MmVjN2U5NzQxZWY3ZTE3MmNhMyBsZWdhY3ktdHJ1bmsKKzEzNzQyIGQ1YjM3MzQ0MGY5OWEzODI1ZWNiODdhNDgwNTYwM2U3Mzg1NjQ1NjAgbGVnYWN5LXRydW5rCisxMzc0MyBlYWY5ZWVhYjNiY2ZmOTFkY2RkZTE5ODlmZjUxNjFhM2E2Y2ExNzY5IGxlZ2FjeS10cnVuaworMTM3NDQgOTY1MDFjYzNhNjYzYjQ3ODUzMjU0N2MwMGI2Y2VmNWFkODdmNmZlMyBsZWdhY3ktdHJ1bmsKKzEzNzQ1IGI1YmQzZjk3OWRjOThjMzFjYWI2NWU1ZDA3ZDdiZmExOTU2NTI4YTcgbGVnYWN5LXRydW5rCisxMzc0NiA0YWFlNWFmZTFmMTQ0NDQyZjU2ZWNjYmQyNDA3NzBjODU3MjIwMjVjIGxlZ2FjeS10cnVuaworMTM3NDcgZjQwNmU3OGVjMTBiY2RmNmNlZmQ5Y2EyNWZkOTlkYjI0NjRkMDRhNCBsZWdhY3ktdHJ1bmsKKzEzNzQ4IDQ0NWNiZThkYjhmNmY0N2U2MTc2MmViY2M2NzljMWRkNmI2MTc1ODcgbGVnYWN5LXRydW5rCisxMzc0OSAyZDczMzFmNGRmZTM1MWJjOWZiOGZhZTg0YjgxYjFiYzE5MTJkNTNkIGxlZ2FjeS10cnVuaworMTM3NTAgOGJiMjdmNGViZTE2ZTVhOTc0YzA5NTM2ZWI5MzJiM2Y5ODYxNmNlYyBsZWdhY3ktdHJ1bmsKKzEzNzUxIDMwODk0NjE5NjNjNGI5NTc2M2U1MzA1YzMwN2ExOWI1ZTMwNjM1M2QgbGVnYWN5LXRydW5rCisxMzc1MiBlY2ZlM2Q4Y2IwYzM0NzEwZDZiZGVjZWUxYTQwNmZiYjA0MzRiNWM2IGxlZ2FjeS10cnVuaworMTM3NTMgMjg1NmFkNWM2NzlhZTczOWM2NjMxMTI5NzViYTViZTMwNjQ2MDY0OSBsZWdhY3ktdHJ1bmsKKzEzNzU0IDlhNjZlNzgwN2M3NzM0MTllMTU4NjZiOGY3NjZlMjE4NmVmODRmMTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzU1IGFhNGM4ZTJlZjViNDI5ZTkwODZjZTgxZjY3YThkMTYxYTkzZGY1ZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzU2IDkwNTIyNjQ3MWI0YzdmOWZiMTkwOWMyOGZmOGMzMzg5MzNjMDJmYWEgbGVnYWN5LXRydW5rCisxMzc1NyBlMDFmMjM1MzliNmNhOGIzMmM1MGNiODBhNzFhODFlMGQ2ZDNiMjYyIGxlZ2FjeS10cnVuaworMTM3NTggYTBjNTIwYzFkMTJkNDZiNWU5NDgzOWE4MDJjOWM4ZGZlYzE4YjMyNSBsZWdhY3ktdHJ1bmsKKzEzNzU5IGU3NzNkMmYwNzQxZGM1ODcyNDkyZWU4ZTY1OTk0OGU5NmYxMjhkYzUgbGVnYWN5LXRydW5rCisxMzc2MCBlMGU2N2NmMmZjNjQ0NTE5ODBiNTQxZjJkMjU3MTM0YjY2ZDM4MzBlIGxlZ2FjeS10cnVuaworMTM3NjEgMTBlYmIyNWIyNDJkN2EwMDk0YTU5YTcwMjlhNzdjZjlkMmZjNjIyNyBsZWdhY3ktdHJ1bmsKKzEzNzYyIGI2OTg1OWI2OTc2MzljZWRmNTY5ZTU3MzUyZGZjNWJlMWRiZWQ1NTIgbGVnYWN5LXRydW5rCisxMzc2MyA2ZGM0Y2MzMThhNWM4YTEwMzNiOTk4MTgzODYzMmNmZWFhZjgyZTY5IGxlZ2FjeS10cnVuaworMTM3NjQgZTc0Njk0NGU5YTRhNjc2ZjljODM3MjNiMmYzZjdkNThjNTNjNjdiMSBsZWdhY3ktdHJ1bmsKKzEzNzY1IDgzM2ZkMjMzOGM2OThkYjQ2MzQzZjc2ZjBkNzhiMTBjNjdhMTU5YzggbGVnYWN5LXRydW5rCisxMzc2NiAwMjg3ZjViMzIyNGNjNzgxN2IzZDRlZmYzMDUxODQ0YWZkYTYzMWE1IGxlZ2FjeS10cnVuaworMTM3NjcgMDVlMGNiMzY5MTQ2MjdhNjkyMmJiMDM1MDA3OWMwNGJkYzNiYjMyNSBsZWdhY3ktdHJ1bmsKKzEzNzY4IDdmYjJmNDU2MmY3NjU3ZGEzNDliNGZhMWUzNDk1Nzc1ZDIwNTgwY2QgbGVnYWN5LXRydW5rCisxMzc2OSA3NzljZTQ2ZTM0MzBhOGFkNjVhZDkxNmNlMmEzNDZkZjdkZmUwZjQ1IGxlZ2FjeS10cnVuaworMTM3NzAgNTZlZjRjMmUwZDdlZmJiZDkxY2E1OGMwZDZkM2JmYjQ2ZTM4ZDY4YiBsZWdhY3ktdHJ1bmsKKzEzNzcxIDU3N2VhMjYxYmRmMjU5YWEzMjQxNjcxMGIwMTcyNmEwOTg4NmI1YTUgbGVnYWN5LXRydW5rCisxMzc3MiA0Y2M0YmFhMjRhNDAwNmUzZGYyMWI0M2Y2NTcxZGUzNjM3ZGZhODExIGxlZ2FjeS10cnVuaworMTM3NzMgNWYwMzI2ODZhMzcxMmQ2Y2Q4M2M2ODkyNjM0MWNiNzNiYjk0ZjY1NCBsZWdhY3ktdHJ1bmsKKzEzNzc0IDAwNjFjYTQ4NjVkNzM0YzhlODhiMWNhZGE2Y2UyMzA5YzY1YTI4ZmQgbGVnYWN5LXRydW5rCisxMzc3NSA2YWFjMzFjZDIxMDI1ZDgyNDFkNjYyNTQwZTc2MzE4ODY3Zjk0OGJjIGxlZ2FjeS10cnVuaworMTM3NzYgNDM4NWIxYmNiYzNiM2VhYjkxZjQzOWEwNjcwYTI2MTRlZjVjNTJhMSBsZWdhY3ktdHJ1bmsKKzEzNzc3IDg1NGI4MDEyNTNmMGZmYzZiN2Q3MmMwMWZlOWQzOWZkNWU0ZjU5NzEgbGVnYWN5LXRydW5rCisxMzc3OCBkMTNkYTE5NDE4ZWNhOGRlZjI3N2FjMTgxNjczNWE4OTkyNTQyYzgwIGxlZ2FjeS10cnVuaworMTM3NzkgYzljMTg4NDI2ZTc2YzJlOTNjMzNjYzMwMWE0MTRhNWU1ZjZlOGY1NCBsZWdhY3ktdHJ1bmsKKzEzNzgwIGU2MWM0ODZiMzU4YTUwNDU0MjU1NTA5MzZkNDMzYjg4YjlkMThmYzkgbGVnYWN5LXRydW5rCisxMzc4MSBhZWRlN2IyZGQ0MmZlMGZlMmQzNTg0NmNjMTVkZTQ5YWI5ZGM4YjQ3IGxlZ2FjeS10cnVuaworMTM3ODIgYjNmMWFiZDMwMjdmZGI5ZmMxMGMyY2M1ZjI5YWJkZmUyMTc0YjEyZiBsZWdhY3ktdHJ1bmsKKzEzNzgzIDJmMDdiYzU2ZTk3ZTdhYzc1YjRhYTAwMjFmZmU5MWRhZTQzZjdmNmIgbGVnYWN5LXRydW5rCisxMzc4NCBlY2M4MDE4YTQxOGMzNDc1N2FlMDcyNTdhNTVlNWUxNzdhZmIxOTBiIGxlZ2FjeS10cnVuaworMTM3ODUgYzZiZGYwMzJiNzA1NmUyYThkYmE4MmUxZjA4NzJlZmQ4NmMyZTc3NSBsZWdhY3ktdHJ1bmsKKzEzNzg2IDBkNzNjZTZkNjIyNjdjYWU3NDMzZmVkNjc0MTM2YzM0NDJiMjIwZDggbGVnYWN5LXRydW5rCisxMzc4NyA0MjdjM2I1MDA1OGVhYjBjOTBhNDY3ODAxZDgzYjY2NTBkOWQ0NzE4IGxlZ2FjeS10cnVuaworMTM3ODggMjZmYmM4MGZhZGYyNWFkYzBlMjkxZWI3ODJkMDFlODE5MzkwZTYyNiBsZWdhY3ktdHJ1bmsKKzEzNzg5IDBkNDRiMGRiZGQ5NTFiMTkwMGRmNmRlZTE1OGI3ZWE1MGQ2YmJiNDcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzkwIDdhZDRlMzk4ZjNlYTNkYzI0MjM4MmZlY2ExMjU1YjU2ZWY0MWZhOTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzNzkxIDkyODZkM2UxNDc0YzU0NjM1OTY1MTM0MWJlOWI4MTU3YmZhZGE2Y2EgbGVnYWN5LXRydW5rCisxMzc5MiAyMzQxYmU3NGI3NTgyZjc2MzhhNzQxZGZkMjg1NGJiNzBhMzJkMzdiIGxlZ2FjeS10cnVuaworMTM3OTMgMGE3MGEyYzVkOWU2OTk3OGNlYTQ5MmU2MzAzYTkwNjA5YzVkYzI0MSBsZWdhY3ktdHJ1bmsKKzEzNzk0IGVhZWVhOWU0MjM2OThhMzI3NzM4MzM5MjMzNWNmMzBhMmNmMmE5NGQgbGVnYWN5LXRydW5rCisxMzc5NSA2OTY4ZmRiYjFhM2ZlYzkzZDM4NzE1YjY2YjM3ZGY4MzE0ZjBhMzMzIGxlZ2FjeS10cnVuaworMTM3OTYgODEwYzI1ZDUwNDFjNGE1MzRiMmY1NWNkMTdjZTgyZGRlMGJlZDQwOCBsZWdhY3ktdHJ1bmsKKzEzNzk3IDQ3MTcxZjJkN2Q1ODVkMDA4YjI4MmU4NmE3NzdhYzJjYWYyMjZiMWMgbGVnYWN5LXRydW5rCisxMzc5OCAzMWJlY2M0MzI1MjM5ZTBkZjQ5NDIwNDE5YzY2MWM2ZGYwNjNkOWYxIGxlZ2FjeS10cnVuaworMTM3OTkgODMzNjE4OGEzYzEwMDUyMDY0NTM5OGJkZTFlZTVlZmUwNWNkOTU0NyBsZWdhY3ktdHJ1bmsKKzEzODAwIGMwYjg2YTQ0YTEyMDNhNDU0ZjA4ZjFjOGI2YjZmZmE1ZTljZjQ5MTEgbGVnYWN5LXRydW5rCisxMzgwMSAyYjI2ZTQ4YTg1YTZhMjRlMDUzZWJlYmE4ZTZiN2RlYjFmZTgwZDJhIGxlZ2FjeS10cnVuaworMTM4MDIgM2ZlOGQxMzMyOGM4MTMyOTM0NzI1NTE1ZGE4NWU0ZmU3Mjk4YWRhMiBsZWdhY3ktdHJ1bmsKKzEzODAzIDJlMDg3NTM5ZGE2MDRkY2I1OTVmM2IzNDQ3ODc0MmEwNzdiYzNiZjQgbGVnYWN5LXRydW5rCisxMzgwNCAyY2M2YTEyY2Q0MTE4ZTJkZmI3NzRjYTYwMzJlNDg0YTRkNWFiOGMxIGxlZ2FjeS10cnVuaworMTM4MDUgOTJmN2FmNDJlZDkxYzVhYTc1YWUwMzQ4NjE3MjU3ODJhMDBhYWVhNCBsZWdhY3ktdHJ1bmsKKzEzODA2IDIwMWFjMDY5YjBkMGI4YTg4M2ZkYjQ3ODVhYmZlNjQ2OTY4MTJkOWUgbGVnYWN5LXRydW5rCisxMzgwNyBmZmNkYjA3MTE2OTU4NGZmOTdmMTE5OGU0ZGE1MWYwMzNlNDE5MjA1IGxlZ2FjeS10cnVuaworMTM4MDggZWZhNzVjNjk4NTdkMmIyODJmYzhmOGE0Njg0NzE1NzQ2OWMzNWJkNyBsZWdhY3ktdHJ1bmsKKzEzODA5IDY3MmRiYmMzOWJhMDgzNGI5NmM5MWMzYTJiNzY2NjIwMjJiYmU5NDUgbGVnYWN5LXRydW5rCisxMzgxMCA0Mjg4NjVkMDBlZWVmNTUyZTEyYzBlM2UxMDNiNmRiNTBhOWM1NGMxIGxlZ2FjeS10cnVuaworMTM4MTEgMmUyMGEwZmMyYzVmM2IyYjk4OTk0OGUyYjk5Yzc1YjdlOWY0ZmQ4NSBsZWdhY3ktdHJ1bmsKKzEzODEyIDNiOTgxZWFjYWQ3YjQzOTM0ZTk2NzZhOWE5MmFmZTI4ZTM2M2YxZmEgbGVnYWN5LXRydW5rCisxMzgxMyA3MGNjY2NhNmJkZjA2MWUzOWZjMzQ1YzQ1YmFkNTY4OTYxOWZiOTY3IGxlZ2FjeS10cnVuaworMTM4MTQgYTQ5OWQyMGEzNWNhMmNlYWQ4NzZkMmEwOWViMWZmZDFjYWFiMzkzNyBsZWdhY3ktdHJ1bmsKKzEzODE1IGNhZTRiMDkyNzNiMzBjNzg2ZDViZDMxNDA4ODc1YTNmMDc5MjMwMGEgbGVnYWN5LXRydW5rCisxMzgxNiBhZGY2ZDIxY2NkN2YxYWE0NGQ4YzZjOTk5ZTkzZDZkMDFhYjQyNmEyIGxlZ2FjeS10cnVuaworMTM4MTcgY2RkOTI4ZDIyOTNjMjgyZWYwYjlmY2ZiMjA1NWQ1ZmQwNDQ2MzFlOSBsZWdhY3ktdHJ1bmsKKzEzODE4IGQ0MTEyZDRjNWJiMTgzZTY0YWI3N2RmZTEwYzk3OWJjZDJjZTMxYjIgbGVnYWN5LXRydW5rCisxMzgxOSA5OGUzMDM5MzliMzllMjJlYWUyN2I2ZjIxNmJmNWQ4Y2M1YjY3OTI5IGxlZ2FjeS10cnVuaworMTM4MjAgMjAzNTBlY2NhNmU0YjEzMjgxNjg2MjVkYWI5MjJjNTM4M2RmMmU0NCBsZWdhY3ktdHJ1bmsKKzEzODIxIGY2N2NlMTUyNzE5YWFmZTljYTFjZmIyOGU3NTFlOGI4Y2U1ZWNhMjcgbGVnYWN5LXRydW5rCisxMzgyMiA4MzdmZTc1ZDZkYzE5ZTAzNjAyMWM4MGEyNjE4NzAyYTM4MGY0MjE2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyMyA1MTg5ZWE2ZTRiZjZlZTQyMzEzNzFiY2QyNmQ3NTc0YmQyZWJhMTFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyNCBhZGY4N2QxM2EwYzFhYWYxMTNlOTQ1M2ZjMGI4ZTIyNWZmMjk0MGU5IGxlZ2FjeS10cnVuaworMTM4MjUgZjJjOTIwZDAzZjQ0Y2UzMWQzOTdkODA3YjBhZWE3YzdhY2QxYTBiZSBsZWdhY3ktdHJ1bmsKKzEzODI2IGNjZGY1ZGMyYWNmNjUyNjQ3Yjg4NDQ0NTZjM2I4MjMxOTA5ZGQzNjkgbGVnYWN5LXRydW5rCisxMzgyNyA5NjQxODY3NDVlYTZhNGQxODU2OThiNzM5MWU0MjMxOGMzYmZlMDJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzgyOCBkOTcwYWYwY2VjZTk2MjBkMjQ3MTFiNmZjMjQ2ZDNiNWRkMDgzMmY4IGxlZ2FjeS10cnVuaworMTM4MjkgMzMxZWU0YWZlOWJlZDg2YmRlOTMxMDFlZDVlZDU1YWU3OTM5NzA1NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM4MzAgYjdhZDE4MDliZTA0OWYwMjM4YzFmN2I4ZTJiMjRmNjliY2Q0MGZmNSBsZWdhY3ktdHJ1bmsKKzEzODMxIDc4ZmRiNmMwYzBhMTUxMjMyODI3NDM3MzYzMDg5Y2VkZGMwZmYwNGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzODMyIGE5ZDI4YTA3YTMyNzZmODk5MzlmM2I2YjQxZmRmMjA2YTZkZjZjNTAgbGVnYWN5LXRydW5rCisxMzgzMyBkMzY5NmJmMDhlZWVhODYxZDgwNTk5M2Y3ZDVjMmQxYWVhZTU1NWJlIGxlZ2FjeS10cnVuaworMTM4MzQgYzZhYTMyZmIzY2Y4ZmFmMTYxZDM3NTRmYTQ3ZDc1MjA2OTM4MDUyNCBsZWdhY3ktdHJ1bmsKKzEzODM1IDAwOTRiZjE4ZTY4ODg1YjAxY2U1YjIyM2E4MjBiMjVjNzkwZmYwYzYgbGVnYWN5LXRydW5rCisxMzgzNiAyNTYwMjM2ZWNlZGJhZGFiYjc5M2EzYzUyYzMzZGVkNDE0ZjZlZmI5IGxlZ2FjeS10cnVuaworMTM4MzcgNDhmMmIxOGJhZDVkMWZmYTEzZDZjODRjNzliZDMyYWJkOThiODk4ZCBsZWdhY3ktdHJ1bmsKKzEzODM4IDZkNjQ2ZjdlMWExYzdlZjRiMTU2ZTFlYTIwZDExYjYxODg1YmJkYTYgbGVnYWN5LXRydW5rCisxMzgzOSA4ZWM2ZDJjNmM1OTgxZWYyNjVhNGZkNmQwYjBlODM2OTMyMjM4Y2Q5IGxlZ2FjeS10cnVuaworMTM4NDAgN2YxNzVjMzIzYjhlNDZhOGM1ZGRlOTE3MGJkNDBmNjY4ZDI3Mzc4OSBsZWdhY3ktdHJ1bmsKKzEzODQxIDgwMjg5MDhhOTg4OTkxMjM2OTJjNjY2ZDdmZDZhYTlmNmU3OWIwYjQgbGVnYWN5LXRydW5rCisxMzg0MiBhZGI1YjZkZGMxZTVlZjVjN2YwNGQwZWFkOGFiN2VlNDgwZTU1MzI2IGxlZ2FjeS10cnVuaworMTM4NDMgNDI0YjMxYWY2ZDUxMGUxNTVkODE1MTc2ZjlmZDg5ODZkNGVjMDI2OSBsZWdhY3ktdHJ1bmsKKzEzODQ0IDQ0YzgyMmE0ZDk1MDE4NjU2OTM4OWM3NWYzZmNjZmI3MjU5YzQzYzcgbGVnYWN5LXRydW5rCisxMzg0NSAxNTg0OWZlYWMzZmEwMWRjNjFkMDQ1MmQ3ZjU5ODE3MWRlZWU5NmJlIGxlZ2FjeS10cnVuaworMTM4NDYgZDNjNGMxM2UwMTM4YzI0Y2VmNGQwYzcxMWYyMDkyNmFlOGQ2NzQ3YiBsZWdhY3ktdHJ1bmsKKzEzODQ3IDc3YjMzMmRjMjA2MzY0NGVmMTRhNTQyM2E0ZDA0ZTg1NWJjMmRlMTMgbGVnYWN5LXRydW5rCisxMzg0OCBlMzQ0YzFmZmNkYWY1MzZlMzMyODVkY2IxOTQ2YTM3YmMxNGIyMTliIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg0OSA0MjMyMDNhYWJlZmI0OGNjZDY2ZDY4YTdjY2Q1ZjE1NjRiZTBhODRhIGxlZ2FjeS10cnVuaworMTM4NTAgNThiOGQyMTZkNzIxNGNlM2MyYjNlNjhkMjI4ZGI1MGQ1ZWVmY2ViZSBsZWdhY3ktdHJ1bmsKKzEzODUxIGU2ZTQ1YTYwZTFlMDI3M2FmODgwYjczODBkYzFmYzc1NTE0NzAyMTMgbGVnYWN5LXRydW5rCisxMzg1MiBiNDQyNDBiMjczY2ZiNTMzZGNkMzQ3MjNlNmU0MTFjMTI3YTRmMjEzIGxlZ2FjeS10cnVuaworMTM4NTMgYjFiYjZkN2EzMzVmNGY1MjQ0Y2NhYWNlYTU4NjVhZDQ2YmI4ZjE4ZSBsZWdhY3ktdHJ1bmsKKzEzODU0IDE1ODEzMDc2Y2JlZjZhZjU3MTg3MTIwOGNkZTUyMDRkN2ZiNWQxMzggbGVnYWN5LXRydW5rCisxMzg1NSBmZGNiODlkMDA2OTU0YjhlOTM5NjAxOTMyZWI4ODkxMDc5NDVlNGM4IGxlZ2FjeS10cnVuaworMTM4NTYgMDBkNTc3ZTQ0ZDM0MWU4NmIyMzBhYzI3MDdjMzdkMTJmOGNkNWQ0ZCBsZWdhY3ktdHJ1bmsKKzEzODU3IGE1OTRkMWU4Y2QxYWE1YTgyMDZlY2MxMGZhN2U3OGMyODBkNDhlYTMgbGVnYWN5LXRydW5rCisxMzg1OCA4M2E5ODYxODBmNDFkNjg3ZTA3YTU5NGZhODViMWFlZTI3NGY5ZmJjIGxlZ2FjeS10cnVuaworMTM4NTkgNTU2NjY0YzYzOWZjMjY0ZWEzZWE0NDNjYWRlZTQzOTIxZGMxZjcyNyBsZWdhY3ktdHJ1bmsKKzEzODYwIDNjNDQwMjhiOTE5ZDRiZWY2N2VkNDljZjY1YmRjZmE0NDkxNWRlNzggbGVnYWN5LXRydW5rCisxMzg2MSA4OThjMzNlMjE2YmIzNjA3YjE3ZWY2MTExYzE1Njg0MmVlYTljNTc4IGxlZ2FjeS10cnVuaworMTM4NjIgYjRkMmY1NDY1YjNmODk4ZmQ2ODVlNGM0ZWRlNjUyZWE3YmRiODM0MSBsZWdhY3ktdHJ1bmsKKzEzODYzIDA1ZjY4ZDdmOTFhYzQyMGM0NDEyN2VkMTY4NWFhOThjNjZjN2YwZDcgbGVnYWN5LXRydW5rCisxMzg2NCA1NWExZWY5ZWJkNGNkZWM2OWU1YWExZmZjNGM2ZDQ4OTYxMjkxYWY2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg2NSAwYWUyNDQyMGM4YTlmMjZmYjAwY2Q3Y2U3MTcyMzVmYmQ5MjE0NGJjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzg2NiBjMWI3MjViMWExNDQ2MmNiMzEzMTAxNDFkZWRhNTExNWMwYjAzZDEzIGxlZ2FjeS10cnVuaworMTM4NjcgYzcwMmExMmQzMThkNjg2YzM1ZDM2Mjc3OGZmMTBjN2NjZjNmNzY1NCBsZWdhY3ktdHJ1bmsKKzEzODY4IGVkMWI0OTgyMmY3MDU1ZTM4MmY5OTMzZjVjM2E2MjE2ZmEwZTVlZmIgbGVnYWN5LXRydW5rCisxMzg2OSAwODJmNDJkNWVhZTMwZWNkMjVlM2ZmYTVkNGExYjQ1NTYxNGExMWVkIGxlZ2FjeS10cnVuaworMTM4NzAgYTJiOTYzZjdhYzk5MDcwNTEzYzY2MmZjZjU1ZTZjOGRjYjdlMzIwOCBsZWdhY3ktdHJ1bmsKKzEzODcxIDU5NWNiMjlhODg2N2VlMmFlNjY5YmUxYzg0NTU5NTExYzUxZjEyNDEgbGVnYWN5LXRydW5rCisxMzg3MiBhZDc1N2FmZjhkMzc5NWMxMWUwNGQ3MmI1NGVmZWRmMjZmZWM1MGI2IGxlZ2FjeS10cnVuaworMTM4NzMgNGZkYzljMWVjYWY2YjdjY2ZmYWE2N2I4YjA4ZjcwZGY3ZDIzMWE3NCBsZWdhY3ktdHJ1bmsKKzEzODc0IGZhZDU1ZWVjNWRmY2RhMTNmMmI4OTM2ODUyNWFiOTZiNmU1NWY1ODEgbGVnYWN5LXRydW5rCisxMzg3NSBmOWVmMzY4YjhjMmQzZmFkZTdjZGU1OGI5MjE3MDM1NDE5NTUxNDcxIGxlZ2FjeS10cnVuaworMTM4NzYgNDg3NjIyMjg4ZjljMjk5NDUwNDJhNmViZTNiZTdkY2I1NjQ4MmI1ZCBsZWdhY3ktdHJ1bmsKKzEzODc3IDNkMTU0YmU4NzE2MjllYzZiNmNhYTdmMTJjNDI0ZWI2N2YwZTYyY2IgbGVnYWN5LXRydW5rCisxMzg3OCA3MGFkY2NkNDUyM2E0OTFmMmVlZjI4YjAzZjMyNTZkZjNlMjgzZTRiIGxlZ2FjeS10cnVuaworMTM4NzkgMzM0MTAwMjE4YTRiMWRkMjAxNjdlNWI4Y2FlM2I0MmYxMzEwMjk3YyBsZWdhY3ktdHJ1bmsKKzEzODgwIDQyOTQxZTJlYjlkODZhNDhmMjNkYzJhYTNkNzczMjc5OTcxZTIyOWUgbGVnYWN5LXRydW5rCisxMzg4MSA2Zjc1MDdlZjJiMTE1YTUzYmI5Y2Y0NmI4ZjFhNDM5ZWU4Mjg2ODNhIGxlZ2FjeS10cnVuaworMTM4ODIgN2FlNWM0MDUxMDQxZTVhMDNlODcyMDVmZDZiNzYxNmRjZDJjNDdjMiBsZWdhY3ktdHJ1bmsKKzEzODgzIDhiODE1ODA1ZjEwY2I3MmJkOGUwZGQ5OTVjZDI1ZTMxMWQzMmNiMzAgbGVnYWN5LXRydW5rCisxMzg4NCBkODNmYTFkZDdiNzk4MTk5NDgzYWI3YjQ2MWMwNThjMDg2YzM2MDViIGxlZ2FjeS10cnVuaworMTM4ODUgY2JjNDYyODRhNWFjYjg0Y2I1M2ZiMjIyMDZhOTM2YTNhMjY5ZTAwMyBsZWdhY3ktdHJ1bmsKKzEzODg3IDRjNmM4ZWZmY2I0MmExMmJlMjVjOGZiNzcwNWQyODUyMTU1ZmI3ZjkgbGVnYWN5LXRydW5rCisxMzg4OCA1M2IyOTc0ZWQzZDM2ZjcyNDI1NzRmN2RmNjc4NTBhZmYyNDM4ODBlIGxlZ2FjeS10cnVuaworMTM4ODkgMTA2NjhlOGEwOTc1NmMxNGRlNzhiZDg5ZWNmNWU3NjlkY2MxNjg5YyBsZWdhY3ktdHJ1bmsKKzEzODkwIDgyNmVmOGYyODc4MmNlOGQyNzIxOTU2OTY3MmNlZGVlZDc0MGVmMzYgbGVnYWN5LXRydW5rCisxMzg5MSBjZmM2NTE1OTM3YTY5NTRiZGI4MTJjNWFhMzM0MmVlYTIyNWZkYzZmIGxlZ2FjeS10cnVuaworMTM4OTIgYzVlZGQ4NmUyNjk4MGQ0Zjk5ZjQ1OThjYzExODkwMTVkOGMzMzRmNiBsZWdhY3ktdHJ1bmsKKzEzODkzIDY3OGE5YTc5YzdlODViNzI2MjJlNGRjYWE4NTQzY2RmYjUxZTJlY2MgbGVnYWN5LXRydW5rCisxMzg5NCAwM2QxYjk4ZDE3OGRjZmU1NTUwZGQ1Y2FkNzBmZWFkOTY0ZTkyOGI0IGxlZ2FjeS10cnVuaworMTM4OTUgOTE1ZmFkZjIyOTQxMTM5YWNiM2M4MWE0NjY2YjE1YjQwODg0ODI4ZSBsZWdhY3ktdHJ1bmsKKzEzODk2IDM3MWI5NzYyZDYzZGU0NTUxNDNkOTU5MjI4YWI0MjM3N2Y4MjkyN2QgbGVnYWN5LXRydW5rCisxMzg5NyA1ZDU3YzY4YjJiMzIxMjc0YjdjMDllYjkyZWE2MTEyYzQ1YWFhOTkyIGxlZ2FjeS10cnVuaworMTM4OTggMDRmMDI0ZDg1NDFjOGQ1OWM3NDllOGVmMjI5YWRmYWZjOTg0ZmM5NSBsZWdhY3ktdHJ1bmsKKzEzODk5IGU1NTViYTA0YjkyMjc2ZGM4ODUxYTBlZTFlZjY2Yjk1NjU3NWFmZDYgbGVnYWN5LXRydW5rCisxMzkwMCA1ZjQ2Yzc3ODQ5NzE1MGUwYWY3MDFlZDlkZTE3MGM5YTVhYjRhYmRmIGxlZ2FjeS10cnVuaworMTM5MDEgYmU2MDNmY2JhMDAxYWFmZTc0MjgzYjIzOGFmZDVjODdkMmYwOTBmMyBsZWdhY3ktdHJ1bmsKKzEzOTAyIGNhOWJmNjkzNWM1MmE2M2U1Njk0MGNiYWU1YmJjYmZmOWYxZDNlNjYgbGVnYWN5LXRydW5rCisxMzkwMyA0YzdkNjA0M2I0M2EyODk0NDQzMzY0ODQ5YWNhOTcxNWJkNTdlYTYzIGxlZ2FjeS10cnVuaworMTM5MDQgZGZkMmM3ZDM0ZDQ0M2M2OTk0YzYwNTU0MDdiZTg4NDMxMDgxM2IzZiBsZWdhY3ktdHJ1bmsKKzEzOTA1IGQzNDU5OTZmY2I2NTIxZmJjOTM0ZDQxOGIwNDNiYjRjMjM4MjY4ZGEgbGVnYWN5LXRydW5rCisxMzkwNiAyNWMwMjAyZTAxYTYyNjM4MWYxYTExMDRlN2ExNjdiNjUwN2IxNWFlIGxlZ2FjeS10cnVuaworMTM5MDcgOGZkYWMxNjU0NGUxYzdjNjc4ZDliNWJkZWY2OWJhN2RjM2ZmM2Q2NiBsZWdhY3ktdHJ1bmsKKzEzOTA4IDA5ZThhYWUxNmU5OTgwMzI5NzExMmRkMWY4NzQ2MDkxYzA1ZDRmYWEgbGVnYWN5LXRydW5rCisxMzkwOSAyM2YyNzg2NjBjYTlhOTI1M2Q0MzkyYzgxZWY0OGQ4MTYxMjI2OWQzIGxlZ2FjeS10cnVuaworMTM5MTAgOGI2M2E2ZjdhNTIzYzRlMTVlNWZhMzE3ODYxNWJkNjQyM2E4YmFiNSBsZWdhY3ktdHJ1bmsKKzEzOTExIGI5YmJlODhkOTU1NDc3YTNmNDBiNGE4Y2Y3N2Y1NDVmMWVlOGM5YTUgbGVnYWN5LXRydW5rCisxMzkxMiAyOWNlOTU2ZmE3Yjc1ZTdhZTEzNjIxMTRlYTRkMDc1ODYxNzFiOTM1IGxlZ2FjeS10cnVuaworMTM5MTMgNDE5OTBiY2UwMjNhODEwMzg2YzZlOTY3OWQwOGIxMDIwZDIwNTJlMiBsZWdhY3ktdHJ1bmsKKzEzOTE0IDg2MTg0MTVlN2E2NmM3MWJhZDI5ZjQyZjgxZTIxNzk0OGI5MDBhOGYgbGVnYWN5LXRydW5rCisxMzkxNSBkOTE5Y2Y5ZmRkODllNzJiMTFjNGVmOTM0YTBiMGUxNGU3ZTlmYjA1IGxlZ2FjeS10cnVuaworMTM5MTYgN2UwNWE3ZDBiNTExZDVkZjA1OGM1MjAzMmZiZWM0OTBjODNlN2MyOSBsZWdhY3ktdHJ1bmsKKzEzOTE3IDY2MjE2ZjMyNDAzZDFhOTFiNDYyNjA3N2MzNjU2YzA3OTMzZTFiYjcgbGVnYWN5LXRydW5rCisxMzkxOCAwNDBiMDU4MTZiMTdmOTgxMTA5MDhlYWYyNzA3ZWM1YjZkODcxYTc4IGxlZ2FjeS10cnVuaworMTM5MTkgYTEwZGI1YjY4NDNmMjkwZDJiZGNhOGM3MDY5NWEwNTgyNWMzMWRjZiBsZWdhY3ktdHJ1bmsKKzEzOTIwIDMyMjliMTM4MTIxZTJhNGNhYmY0MzM3ZjY0ZmY1NTUzYzliMDUzYWIgbGVnYWN5LXRydW5rCisxMzkyMSBkYzlmMWY5NjQ2OTBiYTQwNThjMTYzNTEyMGE2YzljYzNlMGRhYTYyIGxlZ2FjeS10cnVuaworMTM5MjIgM2ZhYTEyMTg5NTBlZWNlMzNlYTJkZWM4YjI2NmQ0MDFhNzY3ZWFhZCBsZWdhY3ktdHJ1bmsKKzEzOTIzIDNlM2M3MWY0ZDJkZWQxZTRmMWZlYmFlYjkwNjQzOGMwMzk5Y2E0NjEgbGVnYWN5LXRydW5rCisxMzkyNCA0YWQxNGU0ZGM3ZTUxNjAwYzA5ZTk0NWNmNjUzODYwYjRiNzVlNWQzIGxlZ2FjeS10cnVuaworMTM5MjUgMWVmMTgwNzM3N2JmYTllYzhhZDNkNjdiMWNlZTUxYzg1YTRlYTVlMiBsZWdhY3ktdHJ1bmsKKzEzOTI2IDMyYzA1M2M3OWNjYjNjMmNlMDA3NDgwNmVhYWI1MWM0OGM2MGU5NmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzEzOTI3IGFjYTdiNWVhZjVlODJmOGEwZjAwYjRjOWY5ZjQyYzM5ODAwMmFiMDkgbGVnYWN5LXRydW5rCisxMzkyOCBjMjRjMjQxODUzNTE2ZmYyYmYzOWQ4ZjMzMGVmNDYwMDkyODA4YTIyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkyOSBkYWY4OGU4ZWRiYzBlNTNkYWJkNDJiYWI0MjdkYWFlZjk3NjFkNGNhIGxlZ2FjeS10cnVuaworMTM5MzAgYzIwOGM0ZTllMmFhY2Y4ZmQyODI1NDZjOGE4OWIyNzFjNmUwOTUxMyBsZWdhY3ktdHJ1bmsKKzEzOTMxIDE0NjYyODBlNmJiMGEzYjQxZDM0MGRkNWQxYzVmYjA3NGQ1YjNhNjkgbGVnYWN5LXRydW5rCisxMzkzMiBjN2U3MjNjZDYzNDk3Y2I5MzgzOTQyYmFhNDAyNWQwYWYyNjY1MWI1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzkzMyAwMTljZDIxYzhjOWZjYjY1ODQzYzdhMzY3Mjc5ZjVlYzVkN2U5YzUxIGxlZ2FjeS10cnVuaworMTM5MzQgNjFhMGYwMjE1YTk3NmJjZWRkYzQ1MTA4ZmRlNTI2MzY0MjUyNmMzZCBsZWdhY3ktdHJ1bmsKKzEzOTM1IDg5NTEwMmVlYTQ4NTFhNzc4YzA1YWFlZWNmZWM0NTYyZTc3NDgxMzMgbGVnYWN5LXRydW5rCisxMzkzNiA2ZWJmNjkzOGM4ODcyMDE3NjIxODhiNTNmMjg3NDRmZjgyNmQzY2M4IGxlZ2FjeS10cnVuaworMTM5MzcgNTQ4NmRjZjEzZDc3NGNhY2QzNDYzMWJkMjdhODI2YmMzNjQ1MDVhOCBsZWdhY3ktdHJ1bmsKKzEzOTM4IGExNGQ5NjE0ZGEwMDdlMWE5MzA2YjQwOTUyODYyNDU5MjJlZDQwMDggbGVnYWN5LXRydW5rCisxMzkzOSAwYjJlOTk0ZWYxNzVhNTk3NzAzOWYyYzQ0Nzc5MDFkZjVkMzY1MDJmIGxlZ2FjeS10cnVuaworMTM5NDAgNGNhN2I3YjhhODQ5MTZmNTQyMGE3NjU1YTliZTBmZDNkYzhkZDMzNyBsZWdhY3ktdHJ1bmsKKzEzOTQxIDhjNWVlM2MzZDM4OTAxYmRmNGM1MzYzMWVkODZiZWJiOWQ1OTVlOTcgbGVnYWN5LXRydW5rCisxMzk0MiBlMGVjZjFhZWZlMDRlMmRlYmUxZjBkNGM5MjY4ODI4YzNhMmViYTdhIGxlZ2FjeS10cnVuaworMTM5NDMgNjUwZTg5ZDE1NTdmMTQ2MGZmMDk3MTc0ZjEwOTNkZGE5YzA2MTdiYyBsZWdhY3ktdHJ1bmsKKzEzOTQ0IDg3YzVkMGIzZGU1OWViZTAxOTMwOTU5YjVkOTYzNjQ5MWIwNmZiN2QgbGVnYWN5LXRydW5rCisxMzk0NSA3OTFjZjcxN2MwYmU0YmYxYmJhNjFiZDVmM2E4NzU3YzI3OTZhNzI3IGxlZ2FjeS10cnVuaworMTM5NDYgNmM0NTE3MWMxYTFmZTdiYzgyMjNmOGI5YjU4YWEwN2UyZjNjYmIxNyBsZWdhY3ktdHJ1bmsKKzEzOTQ3IDQ4ODJiMmU1MmNiMjQ5YTg5NTA2OGY5ZWQxNmJhN2FhZGRjODMxYWQgbGVnYWN5LXRydW5rCisxMzk0OCA5NWU5Njk4ZmM5MDhjMmQzZWQ0NGI5ZmE2MDllMDNiOTU1ZjI3M2U1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk0OSBjMTYxZDJiODUyMDdmYTc4ZTAwZjllYjNhZjZjMmVhMjgyODYzN2NiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk1MCBhNWE1MTNmZWU1YjFkYjNhNjIxNDNmNWVmZTA5ZTBjNGQwZmU2YzU4IGxlZ2FjeS10cnVuaworMTM5NTEgNTNmNjliODY3NmYzYzFlNThmMWVlOWM4OGJhYWZhNDAwZDc4NmU1NSBsZWdhY3ktdHJ1bmsKKzEzOTUyIGJmMzY4ZjJmN2MwMDZkNWU3NzNmZTM0MzQwOTM2MzJmNGExYzYxNGMgbGVnYWN5LXRydW5rCisxMzk1MyA1MjViNWE5YWNmZDVkZGU1MWM5YWI5NWI3ZDhiODAyNGE1NzBkZWNiIGxlZ2FjeS10cnVuaworMTM5NTQgZjQ2Yzg3YjY2MTU0MjA0YTI2N2QwODc2ZDgyMmE0YTRkMjFhZjNhOSBsZWdhY3ktdHJ1bmsKKzEzOTU2IDUwNzU0NmE4N2RjZmQzYmI1MGZmODgzZTMzZGU5ODkxNjExZDg2YzMgbGVnYWN5LXRydW5rCisxMzk1NyBiNTUxMWMwMTcxMzFmZTYyOWEyNGYwNDg2ZTAwOGY3YjE3YTU0NjdmIGxlZ2FjeS10cnVuaworMTM5NTggMDYxMTU2NDUxZDM2YWY4MjFmODk2NDljODUwOTEyYzg5YjI1OWI0YSBsZWdhY3ktdHJ1bmsKKzEzOTU5IDA2MDY2ODJjN2ViYzM1YzQyZjJlMTFlNzU4ZjgxODMzYjg1M2YxYWUgbGVnYWN5LXRydW5rCisxMzk2MCAyNDEzOGVjM2YzOTYyMTFlNDY0YzAwODkyNjYzYzA0MTlhZTNhMzZjIGxlZ2FjeS10cnVuaworMTM5NjEgM2ZhYjM3MTFjN2RjNjg3MzMwOTQ2MTAyZTkzYmYyYjIwMDZmZWY0NSBsZWdhY3ktdHJ1bmsKKzEzOTYyIGZiYzJjNDg1OGNjZThhNTAxN2EwZTEyZWFmMzJmNTU5NGU1NzBlMmQgbGVnYWN5LXRydW5rCisxMzk2MyBjODE1NWQwNWQ5Y2E2ZmFmOGUxMTJjMjVmMmUyMTRkZWRkOTlmOWY1IGxlZ2FjeS10cnVuaworMTM5NjQgMjg4NzQwNzY1MDg4ZDM1ZDZhOTRjMWYxOTc1M2RmMWRkMzg0ZDllYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjUgNTNiMmYyMWFkNjdmMDgxNmRjYjY2YjliMmExNmI1ZmQ3OGUxY2Q2NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjYgMmY5YjY1YjM4YWYyZGYwNzUxNTExZjIxODFkMWQwMTZiMWU1ZTAzYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjcgYzU4MjFjM2JlZmNhY2JjYTk0YzFmZDU0MDViMDM4M2RmY2UwNmRmYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjggYzZkMDk5YjRlYjQyYTQ0MTk1NjFhMTNiYjYxZGVjNzJhNDFjNDVjMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NjkgMWUwZmJlMzM3NTE4NTczY2NlZjM5NWE0YmQwNmEwYmM5ZGMyMDU4ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTM5NzAgYTYwZmE3NGFhZWFmZDlhNWE0OGQyYmExMDZjNmE4MDAwNzIwNjM0ZSBsZWdhY3ktdHJ1bmsKKzEzOTcxIGNhNzY5ZDk4NjUxNGJiMjkwMmZiMzZhOTExODdhNDdjODJlYzIwZDkgbGVnYWN5LXRydW5rCisxMzk3MiAxY2U0MTk4OWEwM2QwYWVlYjQyODRlNGUwMjFiYzRmNDI5NWZiMjI3IGxlZ2FjeS10cnVuaworMTM5NzMgNDFlMDA3MWRiNTNhODAwODQzNTI2ZmZlNTExODgzZTFiNTllYmVlZSBsZWdhY3ktdHJ1bmsKKzEzOTc0IDEwYWQzNzBiYzViZDFhYTZjY2MzNzJkYTA2YWE0YWY2YWU5MTFmMDAgbGVnYWN5LXRydW5rCisxMzk3NSA3YTE4OGFhYmVmMTE1Yzc0MGM1ZTQyYzY0MmZkYWEzODkxZWZkN2QwIGxlZ2FjeS10cnVuaworMTM5NzYgYTk4OWVlODcyOTYxYzA2ODcxMzZkNWI4ZWJiNWRlMThjZjNhMzBjYiBsZWdhY3ktdHJ1bmsKKzEzOTc3IDdmYjhiMGYxM2RhMGEwOTQ3M2E5YzBmMzM5MDBkMDE1MGVjNzNmNGEgbGVnYWN5LXRydW5rCisxMzk3OCAzMzMwZWI4ZGEyMjI3NGNlMGRkMTFlN2U2MjFlYjE4NzZhMDUzOThmIGxlZ2FjeS10cnVuaworMTM5NzkgYmMwODU2NjBkYmMxMzM4M2JhN2I0NDQ0MmU5ZDRmYTA5ZmU4OTlhMyBsZWdhY3ktdHJ1bmsKKzEzOTgwIGYzMDg2NTQ4NDQ2ZWM1YjA3NDJhNzNhM2MzYjhlMDdiYTZiMmFmYjkgbGVnYWN5LXRydW5rCisxMzk4MSA5NDA0YTViNDE2YjVmNzY5ZDcxZDg0M2JkNmQyOTY5ZDg4MDJhZGUwIGxlZ2FjeS10cnVuaworMTM5ODIgOTg5OTdhYTQ5MTY0MjM2NDIyYmMzZTYyNGYwMWNiM2U3ZTU0ZTNjNCBsZWdhY3ktdHJ1bmsKKzEzOTgzIDg0ZGZmNWNjNzIxNjIxYzEzZTk1ZDk2ZmIxOTJiZmFmNTViMzA0YzkgbGVnYWN5LXRydW5rCisxMzk4NCA0ZmI4OTM0NDhhNmI5NWExNDBjYmRmMzU2NmZjZTIzMWZjMTRjMWRlIGxlZ2FjeS10cnVuaworMTM5ODUgZTNkYzU4NGU5NjIzMGM0YzM0NTc4ODQ3ZWUxM2E3ZjYwN2I3ZjhhNyBsZWdhY3ktdHJ1bmsKKzEzOTg2IGEzMTZjZjlmODFhNzY4ZjlkMzcyZGJkZTJiZGQ4OTJmMGRlYzdkYzggbGVnYWN5LXRydW5rCisxMzk4NyA4ZWRiODFmYTBhNWYyNmQ4NjUwYzNmYzUyODMxNzA0NTgzZjQ3Y2JiIGxlZ2FjeS10cnVuaworMTM5ODggMDljNjNkOTEzYWUwNWFmNDFiODliYjUyNzNlNmQ1YjM5N2MzZGY2MiBsZWdhY3ktdHJ1bmsKKzEzOTg5IDNkNmI5N2E1OGU5Y2E0MGM0ZjhmM2E4OWVlZjYzZjg1YTQ0NGI5ZDQgbGVnYWN5LXRydW5rCisxMzk5MCAwNjY3MDI0MWE3YjFkYTIyN2VlNmYyNWE4YmM4MTYyYWI4MjZjMWJlIGxlZ2FjeS10cnVuaworMTM5OTEgZWI4NDZiNGQwMzg1NjQ4OGU0YTFjMDFjYjM0YWEzYTQ1MWY0MDllOSBsZWdhY3ktdHJ1bmsKKzEzOTkyIDMyYTQ4MGQwODIzY2ZhMWM0M2VhMDkyN2JlMjkxODlhYWIwNjI3MzMgbGVnYWN5LXRydW5rCisxMzk5MyBjYzkyMmE5YTQ4YzAyMGIwNWYxZWU1N2Q0N2Y4YjM2NWUzY2ZkN2ZhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxMzk5NCBiZTI1YWFjYTExZjQ1NmY0YzExMGQzODcwMmRiOTBmZmIwMGM4NGQ5IGxlZ2FjeS10cnVuaworMTM5OTUgMzE2YmUwOGM5ZWNkYTFkOWZkMmY3ZTI5M2IyMTZlYjU4ODBlOWE2MyBsZWdhY3ktdHJ1bmsKKzEzOTk2IDVmMThlNzg1M2Q5MjQzZTJjMmYzNTUyNjJlYzEzMzczNjdlNGUyZmMgbGVnYWN5LXRydW5rCisxMzk5NyAxZGMzOTM2ZTg0ZGIyODE2MWE2MDczOGZkYzRjYTVkOGIxZWY0MWUzIGxlZ2FjeS10cnVuaworMTM5OTggMDEzZGQzOGE1MDMxZDBiOTgzNzA0NzEwZDVhZGY1MjMwZjkxNjdkOCBsZWdhY3ktdHJ1bmsKKzEzOTk5IDBiYzJiYTE3NTIzMDU4OTE4NDZmMGZkZmM2YWU2NjQ2Yzc5NDhiNmMgbGVnYWN5LXRydW5rCisxNDAwMCA5MGY0ODMwZTIxMjJmMmRhYTBjMWY4MTcyNTZhMTgxNjU1MGQ0ZjJmIGxlZ2FjeS10cnVuaworMTQwMDEgZjAyOWQ0N2RkMjk2NGE2YzQ5Njk4MmRmYmUzNmEwZDQ4ZmVkZmQzYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDIgNWI4MDI0MzhkOGZjOGQyMzYwMWY1MmRhMTJlNTMyNzEzZGU1YzQyNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDMgM2E1MDZhYjFjMTM4OWQwYmU3ZjlkNzg2OGJiZjRmYjc1M2NmMDM2YSBsZWdhY3ktdHJ1bmsKKzE0MDA0IGFhYmZhMGQ3MjEzYzNlYThjODE3YTE3YzgzNGQ2ZjIyNzJmMDk5M2UgbGVnYWN5LXRydW5rCisxNDAwNSAyMzljYTQ3ODhiZWMwYmZhY2JjMDdiNzRiZmNlZTU4OTFhMjYzZmExIGxlZ2FjeS10cnVuaworMTQwMDYgOGE2ODcxZTk1ZDgwYjBlYTUxODRjZjcxMWZiMGQyZTZmZGQ1MjczMiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDcgY2MxOGIyNGRlZTNkYjc5Zjk3N2FiMjJlYzU4ZjM5MThkNWZhMjBkYyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMDggMmQ3OWI0OTFhNTI5YzU0OWE2NDQ4NTJlZTVhYWRjMzA4NTU4MzAzNSBsZWdhY3ktdHJ1bmsKKzE0MDA5IGUwZmU0YzdhOWVmZjMzZGViZjAxMTRjZDdiM2U2NzA0ZTY1N2UzYmIgbGVnYWN5LXRydW5rCisxNDAxMCAwYTNiYjQwM2E0MzA1YTFkMDk1MzI3MTQ5MzhiOGE2OTQyY2ViOTkwIGxlZ2FjeS10cnVuaworMTQwMTEgMzhjNzQ0NGY2MzNhYjgwMmZhNTA0NzJkODFjMTlhMzIyMjNkZjE2MSBsZWdhY3ktdHJ1bmsKKzE0MDEyIGUxMmJlOGY1MTg4ZmQ3NjI1MzU0NDZjNzM5ODBjMmJkZTRhNzQzOTQgbGVnYWN5LXRydW5rCisxNDAxMyBhMDVhMDU2MDI5MDI4YTgwNTgzZDZhZmVjZjI0ODNlYjNiYjIxNTIxIGxlZ2FjeS10cnVuaworMTQwMTQgZTc0ZWYyYjUwNTU1NmVkM2RlZThhZTAxMTkwNDk5ZTNiMmZiYmM0NSBsZWdhY3ktdHJ1bmsKKzE0MDE1IDdlNDI5ZTQ2OTY4YTI0NjFhMWQzZTlkMGI0ZGI0MTY4NzhmOTQ2MTcgbGVnYWN5LXRydW5rCisxNDAxNiA0MjY5OGYzNDViZDMwNDBjNDI1NjlmMjI0OTg0YThjZjVhNzBlMmFmIGxlZ2FjeS10cnVuaworMTQwMTcgZWYwM2YxNmFlNWViMjc1MzQ4M2MwNmUyNGFlNzc4ZjU1Mjc5NDZkYiBsZWdhY3ktdHJ1bmsKKzE0MDE4IDZjNWUxMmM1YTYxNjRkMmQxYThiNDUxNDZmY2E2N2UxMTZhNjg2NjYgbGVnYWN5LXRydW5rCisxNDAxOSAxMmY0NjJmZDI0Zjc1M2VlMjUyYWU2YTI3ZmEwNjFjNzVhN2Y1MWQ4IGxlZ2FjeS10cnVuaworMTQwMjAgZDBmNGE3OWI5ODVkNGRmZGJiZWE1YzYwMTYxMjc3NzUyNjc5ZjQ3NCBsZWdhY3ktdHJ1bmsKKzE0MDIxIDI0NTlmMTE3NjFmMDk1N2Q4OGU4Y2MwZTBjN2FlNTY5ZTQwMGYxZWMgbGVnYWN5LXRydW5rCisxNDAyMiA5NWE5ODMzYjAwMGU5N2RmZTJhZGMxMjFmZmEyODBmMzQ3YzMwODg2IGxlZ2FjeS10cnVuaworMTQwMjMgMTdlMTIzMDU5NzNlYWIwYTdiNjVlYzE3OTBjNTQ4OWUwY2UyNzA0MCBsZWdhY3ktdHJ1bmsKKzE0MDI0IGFhYWVlN2IyMzM4MDIxNWM4NmI5NTBjMTFlNGE1YTA0NDFjNWNiOWEgbGVnYWN5LXRydW5rCisxNDAyNSA2OTgwZDA2ZTM2MDc1MjgzZjg1MDQ0ODg4OTE1MjYyYzlkYTUwYmQxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDAyNiA2NzU3ZTgwYzc0NzgzMjY5YTIyYTA1ODcyMWFjOWY2ZjkwY2ZiZGE0IGxlZ2FjeS10cnVuaworMTQwMjcgMDc3ZmY2ZWZjYTM1ZTg0NjEyOTUxYTcxNTRmNjI0YTRhNWQ0YjU5OSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjggYTE3MGI3ZjA0YzY0N2ExYzRkMTVmZWMwNTEzOTgwZDUwMjEzZTNiMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwMjkgYWIyYTZmOTEwZjY1MzEyMDk2MmZlYTJhMTExZWVhMWU4MWZkYTc5NSBsZWdhY3ktdHJ1bmsKKzE0MDMwIGEyNjczYThiZGNhMjgyNDI1YTlmNDc5OWRkY2RkMGU0MTU3YzhiNDEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDMxIDE0OGZkNDc1YjM5M2RjNzJiYjgyODc2MWRjNjUxZmVkZGRlZjg3YmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MDMyIGI0ZDA3YmVhYzA5YmVlZDU3M2FlM2IzNTljMTAwYzc5ZGNiMjgzYWQgbGVnYWN5LXRydW5rCisxNDAzMyAxODU1MTMxYTRkY2Q0N2EwNDBmYmFjNzI1MTcyZjhkZDI4ZGU2YjI0IGxlZ2FjeS10cnVuaworMTQwMzQgYzA1MzYzY2YxYjczYjBmMjVmYzcxNjQyNjI2MGQ5OTlhMjZlNWNkNyBsZWdhY3ktdHJ1bmsKKzE0MDM1IDk2ZjNlYmFjYTZhZTU4MGYxMTJlMmE3MDFiYWU0NmM2ODc1ZjczYjUgbGVnYWN5LXRydW5rCisxNDAzNiA0ZjI3Njg5MzMzMTNhZDQxMTRjNjA2NjQzZjZmMmFjNDNlM2Q1OTdhIGxlZ2FjeS10cnVuaworMTQwMzcgMDlkMzUxODgyYzUxMGY5NmY5NmFiZGVkMDQxYWM2MDlhNTQxOTI2ZCBsZWdhY3ktdHJ1bmsKKzE0MDM4IGFmMTFhZGMzY2JkNzE3YzZlZmVhOGYzZDc1NzBkYmM2ZDMzMDNhZjkgbGVnYWN5LXRydW5rCisxNDAzOSA4YjQ2ZWUzMjVkYzAzZTYyOGNhZjc3MTJiZjMwNTA2YmRhMzgyZmJjIGxlZ2FjeS10cnVuaworMTQwNDAgYzljZDRiYmVkOGUyODNlMjY1NzExZDk4ZTYxY2I3NDIzMmQ2OWVhMCBsZWdhY3ktdHJ1bmsKKzE0MDQxIGYyMWYxOTg4NmVlMzhmNWY4Y2NhYmFhOGEyNTA3ODM1YjY2NDMzNjEgbGVnYWN5LXRydW5rCisxNDA0MiA1YzVhM2E1Y2M3OWZjZGU2MmQxYzQ4ZmQwYWVmM2M0NWNlNzAxODRhIGxlZ2FjeS10cnVuaworMTQwNDMgZTI0MDg3NDRkYzdmMzllNzY5ZmI2OTI2MTZiYzM3NzM4YWVmNjBhZCBsZWdhY3ktdHJ1bmsKKzE0MDQ0IGJhYjQ2YWNhMmJlY2U2NjAzNGI4MWU0ZGRkYzRlZDIyNjY3YWYxNjYgbGVnYWN5LXRydW5rCisxNDA0NSBhOTdlNjI1ZWQ1ZDA0ZDA1ZDFlMGY2ZDhjOTYzNDY5NWRiMjc4ZmExIGxlZ2FjeS10cnVuaworMTQwNDYgN2RjOTI3MjA0ZDY1ODJlMTJlMzk3NjlkMmRkNTA4ZTQyYTc4MTNhMCBsZWdhY3ktdHJ1bmsKKzE0MDQ3IDA2ODBlNjdhMGQ0OTU3MzdkMjEzMmMwN2RkZjk0ZGI4N2Y2ODhlYmQgbGVnYWN5LXRydW5rCisxNDA0OCA2YjhmNzQ2YmJkNWFhMDJhMjNiMGNkYzNiYzVhMDU2NzA5YmU2YzM4IGxlZ2FjeS10cnVuaworMTQwNDkgMzRiNmE5MmZhMDg4NDJmZGM3NzBhYjIwYzBmY2YxODNiODcwZTU0ZSBsZWdhY3ktdHJ1bmsKKzE0MDUwIDljZGYzZmFkZGE5Mjc2YzYyYTUxNGJkNWE1NTg3MzMzNWQ0NDczZmQgbGVnYWN5LXRydW5rCisxNDA1MSA1ODUxM2ViYTU2NjQzMDA2NTQzMDEwOGJiMzQyYmRiMGZjNDJhZTFiIGxlZ2FjeS10cnVuaworMTQwNTIgYmRlMDZkOWQ0Y2I0ZjE2MmZhODFmNmUxMTczMmEwNTgxMmRjNjYwNCBsZWdhY3ktdHJ1bmsKKzE0MDUzIGJkYWU2MWFlYmE1NWU4NzM4Y2UzZjMzOTY1N2ZkODE2NzcyYTYxYWQgbGVnYWN5LXRydW5rCisxNDA1NCA3MDM0Yjc1YWFkMDNiNzE0NmZmNTE1ZTY2ODc1YTIzOWZlZmY2NDE5IGxlZ2FjeS10cnVuaworMTQwNTUgM2IyMGU1MGYyZDgzYTMxNzNkM2EyZmVkZjVkYmVlMDg3Y2QzNTdlOCBsZWdhY3ktdHJ1bmsKKzE0MDU2IGQwMjNkMWM5YWM0OTE0NmYxMTg3NWJhOTU1ZGVmYjE5ZjZkYTZhZTEgbGVnYWN5LXRydW5rCisxNDA1NyBjZWIwNmRlMjNmYWE5MmUxZTVhMWQ4MWYyMjkyNmViODc1OGZhYmRmIGxlZ2FjeS10cnVuaworMTQwNTggNjEyYjgyMzBjNmU3ZmM2OTcwMWY0MWM4OTYyNTY0MGYyMGMzNmI5NyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNTkgMDJhZTJlNTU1ZWY5ZDI2ZWZmZmQ0NzY2NzA3ODBjMmMxMWM2OGYzNyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjAgNTkxMTRiZTIxYTc1Zjg5N2NkNGJkODdhOWE4YTcxNDA3ZmJhYWRkOSBsZWdhY3ktdHJ1bmsKKzE0MDYxIGRmZTM3MTlkNzhlOWRjNmVlYWNiZTM2NGM0MGRlNmJhZjc0NDRkYjEgbGVnYWN5LXRydW5rCisxNDA2MiAzM2Y3YjEyYzc3NmNmYjZkOTRmM2RmYzVhMTkyYzhmMDE5NDRjNmU5IGxlZ2FjeS10cnVuaworMTQwNjMgY2RlODgzN2M4MjU5YWQwOWQyNmZmYzQ2YTFlNTk1NTU3ZjU2Y2Y0MyBsZWdhY3ktdHJ1bmsKKzE0MDY0IDkyM2I0M2RiMzgxNDYyYjJmNzQzYmJlODhiMDRhMGZkNWE3ZmQxNmYgbGVnYWN5LXRydW5rCisxNDA2NSAxNmIxMWFjZDNlOGMzZDU4ZDNmOGNkOGMxZTNmODEyY2FiNDY1YjFlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA2NiA3NTYzNTE3MDdjYWNjNWJjZDBiOWUwMWRkMGM5NzBmZjY0ZjYzNjdhIGxlZ2FjeS10cnVuaworMTQwNjcgZDcxOTliOWY5MDkxMmFhMzc1NDIwOGU0MDdlNThiOWYyNjAxYjg3YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwNjggNGM1MDMwZDQyYzZmZmVjZDMyN2U5M2JhNmJlNGU1MTk3YjIxYWRhNSBsZWdhY3ktdHJ1bmsKKzE0MDY5IGIwNGJmMjc3NGQwNWVkYzc0ZTUxOWIzNWI3NTA4OTA2MzU5OTc4MmUgbGVnYWN5LXRydW5rCisxNDA3MCA3ZWZlY2M1YTM5NGM2OWE3ZmQzMDA2NGQ0Mjc2ZmE1YWU1NGMyZWE5IGxlZ2FjeS10cnVuaworMTQwNzEgN2U1ZjUxZGMxYjRiOWExNDk1NzAzNDYzNDkzNTFkMTY5NzgyMTI4MyBsZWdhY3ktdHJ1bmsKKzE0MDcyIDk2MzZhNTAyZjc5MTdkMWQwZDIyYzdkMzA1ZWM5Yjc0YzY4M2RmNTUgbGVnYWN5LXRydW5rCisxNDA3MyAzM2U4ZTc0MDliMTIwMjAzMWFhNDk5NThkMDM1MGVlNTAzMWRjMjVkIGxlZ2FjeS10cnVuaworMTQwNzQgY2E4OGU1OWE2ZWJjYTNiOGQzMWIxNzE3ZTQyYjVlYjYxZjI4YTgyYiBsZWdhY3ktdHJ1bmsKKzE0MDc1IDNiNzFjZGZhMDJjNzQyYzI2MmQ4YWMxOTYyZDg0MTE2MWE5OGE3YmEgbGVnYWN5LXRydW5rCisxNDA3NiBjN2YwYWE0NTEwZTI2MzhlMDQ5OTllMThlM2U0ZTAzMTU4NzIwNGNiIGxlZ2FjeS10cnVuaworMTQwNzcgZGE2ZjE2OTNjZDY1MTNjMDMyMDc3ODNhYWNiZGY0NmYzMmEyODAzZiBsZWdhY3ktdHJ1bmsKKzE0MDc4IDllYWNkMjllNjA2NjE4MDQyZGU1Mjg0YmMwODNmZmNlMzM1ZTllMmEgbGVnYWN5LXRydW5rCisxNDA3OSAzZjI3NDQ3OGM0ZGFhOTg5ZDA3Njc0ODE4NzlkMWE1OWJlNThhY2VmIGxlZ2FjeS10cnVuaworMTQwODAgNTNkOWMxNTYwZmUxNGYzZmI5NDA0YTU3OWNjMDFlYmViMTIzM2EyZSBsZWdhY3ktdHJ1bmsKKzE0MDgxIDY2NDM4NmQ2OTY3Y2FlZmNjZDdhYzljMmEyNDc5MzY3NDJhMzIyYzIgbGVnYWN5LXRydW5rCisxNDA4MiA5Y2EzMDQ1M2RkNGU0ZTQ3NjFiZmVkYjI1MzMwYjEzMTI5YWQzOTdlIGxlZ2FjeS10cnVuaworMTQwODMgZjlmNzViMjEyZGE0MTg5Y2ZhZjI3NTBjOTY1NWZhNzVjYjA5YTI2ZiBsZWdhY3ktdHJ1bmsKKzE0MDg0IDAxZjdhMTM2YzY3N2YxMTk4M2MyNWUyZTM3ODc5YzNjYWMxZjQxZjggbGVnYWN5LXRydW5rCisxNDA4NSAxNzVkN2Y2ODA0ZDdhM2I2YzkzYWRhNDY3ZDJiMTZlMDdhYjY1ZGMwIGxlZ2FjeS10cnVuaworMTQwODYgNzEyODFmZjhjNmEyYmE1NjA5MTY0NDBhY2MyOGJmMTkxZWY5NWM1MiBsZWdhY3ktdHJ1bmsKKzE0MDg3IGNjNDEyZGZkNzlmNzdjN2RiMDg4YTJiYmMxNGI1OTU2ZTVlYzIxZGIgbGVnYWN5LXRydW5rCisxNDA4OCAxNmZjNzE3YmVhM2M5YWViMzgwNjMwN2YzOWVlNjUxYjZjNmY0NGE1IGxlZ2FjeS10cnVuaworMTQwODkgYzBlYjYzYzhmMWZlYmI4Y2E5OGYzMGI5MWFjNjFhYjkxZWE3ZGU5YyBsZWdhY3ktdHJ1bmsKKzE0MDkwIGJhMDdmZmY3MjUxMWIyYzk0ODFjMjBlN2Y2N2JlNjcwOTE2NTU2YWQgbGVnYWN5LXRydW5rCisxNDA5MSA0ZGJiN2M2MDlhYzFmNWI1ZDAxMzczN2VhYzlhODI2ZDU3ZWU4MjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDA5MiBjYmY1OGNkMGJiNTc0MjkyOTI5MjY2NGIxYzkyNzZlYTMwYWRjOThmIGxlZ2FjeS10cnVuaworMTQwOTMgODJmYjAyZGU1NDIxMTM5MzdjNDNlZDdiZGMzYjA2MGM0OWY4ZDcyMyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTQgNWEyZjEzYTdiZDQ1ZjA3OTMxODUxMzAyMTJjZGQ5YWFjMWJlNzBhMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTUgODBhYzA3NjgxYWJlYjEyM2JlMThhZGExMzYzYWE0OTE5ZmY5NGNkZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTYgOTA2NmY2MjdkMzYyZjExOTM1NDBlNDUwNDQxNmNmNDEyNjMwYmVjNiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQwOTcgYjViYmNjYjc1ZjJkZDkzNWQ2ZWQ1YmJlMDRjMjI5NGNjNjlkODk2ZiBsZWdhY3ktdHJ1bmsKKzE0MDk4IGE0NmM5Y2I0MjEyM2U5ZTljNzUwZDFmNWNlNWM3ZTU5MzYzY2UzNDIgbGVnYWN5LXRydW5rCisxNDA5OSBiMTJhMTFhZTEyM2NmODViMDlkOWYyNDMzYmIyZDI5ZjA5ODNlMzI3IGxlZ2FjeS10cnVuaworMTQxMDAgNWMxMzVjZWFiMjBjNTQ0ZGQwMGE1OGYxN2U4ZmRiOWY1MWQ4YjY1OCBsZWdhY3ktdHJ1bmsKKzE0MTAxIDc2MWQyNWNmYzI1OTQxMmQ1OGZiZTA5NzU1YzQ4MmRiM2VjZTczNTIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTAyIGY4ODZmZGU3NjVhMDU3MDA0NDkwOTliZjc5MTM3YzYxYjJmYjA5NDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTAzIDI4Yjg1ODUzNTRkZTU4MDg5NDNlOGUzOTMyMjFmYzg0NjEyNzlkZjUgbGVnYWN5LXRydW5rCisxNDEwNCA1MzVmNDBmOWY4N2RjNjc5ODg5NzcyMzQ3MGRhYjNkYzk0YTZmNWRiIGxlZ2FjeS10cnVuaworMTQxMDUgZjgzYjc0MjczZGEyM2EwMDhjMjQ3NTU3Mzc0NWIyNmI5YmVkZjJhMCBsZWdhY3ktdHJ1bmsKKzE0MTA2IDgwNTY5ZDcyNTMyOTFhMDBlMTJhNTMwNTA2MGJiMDBjYTI1MTcyNDYgbGVnYWN5LXRydW5rCisxNDEwNyA4Y2ZjZDI3M2ZhNWNhMmI2NDRlZmY3YjdkZTEwOTU1ZDhkMzE1ZGI4IGxlZ2FjeS10cnVuaworMTQxMDggMjk1MWUyZDI3ODUyMmVkNDAzN2NiODUyMGZkNTRlYWNkZjhhNjFmOSBsZWdhY3ktdHJ1bmsKKzE0MTA5IGE4M2QyYTFjZTE5N2EzOWE3MjJlZTgyY2ZiYzM0YTI1MWE5YzUzNWIgbGVnYWN5LXRydW5rCisxNDExMCA2ODM2NGJmMDAyZjEzODkwYjJhOGQ1NDU5NGIxYWQxNjVhODI2YzdiIGxlZ2FjeS10cnVuaworMTQxMTEgYmJkM2E4YWQ3Y2I3NjY3MjlhNmMxNjRiZDc0ZDZiMzRiOTRkOTRjOCBsZWdhY3ktdHJ1bmsKKzE0MTEyIGIzZTU1Y2UwZWJkNzVmNGIzOGE0ODljNGI5ZGI0NjdlNjBjZjIwYTcgbGVnYWN5LXRydW5rCisxNDExMyBhZmI5ODdhODQ0ZGJhMjE3ODM0MWY0NjExNGM4OWU2YjEzOTRmYmQ4IGxlZ2FjeS10cnVuaworMTQxMTQgMjYwZDQwZjIwMDc3OGZlZjhjMmIwZDkzYzRjZGRmYjE3OThmZmJjNCBsZWdhY3ktdHJ1bmsKKzE0MTE1IDRjNjkzZWIzMjNjNmYzMTczMmVmNWVkOGMzNmJlZGQwNzQ2MTQzZTIgbGVnYWN5LXRydW5rCisxNDExNiA1MGY3ZDM0NWYxNTdhNmUwNzVkMTdkNWU0MDg0ZTA5ZjhkOWY1YjJhIGxlZ2FjeS10cnVuaworMTQxMTcgYjYwNWM0NjZkMWMwZThmYzE2NjNjZmIwNjZmMjVkMjQwY2U5ZWVkNyBsZWdhY3ktdHJ1bmsKKzE0MTE4IDE4ZmMwOGZjOWZkNDc4ZTJkYzYyMTc4ODczZTI0ZWRlMWQ4MzQ2ZGUgbGVnYWN5LXRydW5rCisxNDExOSA4ZDRjYTdiZTczNzk4Yzk3MDAxOTc2MDdhODRmMjdhMDE1NjM4MWU3IGxlZ2FjeS10cnVuaworMTQxMjAgOTBmZmMwN2Y1ZDEwZjAxZDZmMjRhMTUzNzRhZWY5NGU4NDBiZmZlYSBsZWdhY3ktdHJ1bmsKKzE0MTIxIDc1NTU5OTBlOGRiOWE0MTNhMjQ2MmVkZDkyOGM4N2EyNzhjZDFhNjggbGVnYWN5LXRydW5rCisxNDEyMiBmNzAxZTkxNjNjNzZkMTM1Mjk5ZTgzNGJjYWM5M2FmMmJjMGNjZDRiIGxlZ2FjeS10cnVuaworMTQxMjMgMjM2ZDg0MjhjNGM1MGRiZDFiMjhhZTBlMGVhOGRhMTc2MTY1ZjcyOCBsZWdhY3ktdHJ1bmsKKzE0MTI0IGMwNDJlNDE0MGYxZWUzYzg5Y2E0ZjYxY2NiM2YxNzYzZWVjMzg2MzMgbGVnYWN5LXRydW5rCisxNDEyNSA3M2VjNjZhZGQ5NDc4ZGVjY2RmYzY1YjdlMDhmNTUxNDUyYmQyNWNmIGxlZ2FjeS10cnVuaworMTQxMjYgODE5OGM1MzFiYmM0N2Q1ODE5MWI0YmM5MzA3ODJmMDgzNDU3NWIyMSBsZWdhY3ktdHJ1bmsKKzE0MTI3IGVlYWM1NGNiYjFkY2VkMGVjOTc2MWRjYmQwNTM4NzI0YWMxNjkzNzMgbGVnYWN5LXRydW5rCisxNDEyOCA4OTQzYjc3ZjIxOWFmMTcyNjAxNjkxNTY3YmUzZWE3YTk4MmZlMjcwIGxlZ2FjeS10cnVuaworMTQxMjkgMzlkNjZhMDY3ZDBiZjM4NjIzMTNjY2I5OGVhM2FhM2U5ZjAxZWI3ZCBsZWdhY3ktdHJ1bmsKKzE0MTMwIGJlZjg2Njg2Yjc1MmI3YWExODIyMTYzOGFlNWVhOTk2MDc0ZWI1MTAgbGVnYWN5LXRydW5rCisxNDEzMSA3YTRmNjI0OWM5Nzg3ZGM2YmEyOTE2NzJiMDllYTA1MjUxZmI0MWQzIGxlZ2FjeS10cnVuaworMTQxMzIgYjE3ZWY1NGM5MWM0MWZlMmI0MDNjZDI3MWM1NzBjNjU3YzA3OTQyNSBsZWdhY3ktdHJ1bmsKKzE0MTMzIDE1NmIxYmZlYzNiODlkN2MwNjEwZWE3YWY3MmEwMzZkNjkxNmZjYjAgbGVnYWN5LXRydW5rCisxNDEzNCA0NTIwZjY5M2I3NjVmNjgzMjkzZmFlZmUyZGNiNzBlNzlkYzM3YzExIGxlZ2FjeS10cnVuaworMTQxMzUgMjJmNGNmMTZiNWEzMTYxOGIzMzJkODUyOGU2NzcyNzFlNzYwMmI1NCBsZWdhY3ktdHJ1bmsKKzE0MTM2IDJjYjU2ZTk4Y2Y1MjNhYzVlOGUzMzU0NDJhOGM5YmNmZjU5ODEyY2QgbGVnYWN5LXRydW5rCisxNDEzNyAxZTdlZmMxOGE4OWRiNDUxNTAyYWVjMWY0ZWJkNDcyYzY2ZjE0MGE3IGxlZ2FjeS10cnVuaworMTQxMzggYzcxMTU1Y2UxMjE1OWZhZjJjMGFkMTgzMmQ4ZjEzMDMzM2I4NzE1MyBsZWdhY3ktdHJ1bmsKKzE0MTM5IGNhMTVjY2MyNmYwYzJkYjU5MmViZjdmMjRiNWEwMjZlYmRmZGQ5MzkgbGVnYWN5LXRydW5rCisxNDE0MCA4ZWZlYjg3MTIxNWI0OGYxYTNjZmFmMjE1YWMxOGYxZjYxYTk1NTFiIGxlZ2FjeS10cnVuaworMTQxNDEgMDRhZmI4N2QxMTAzZDEyZmM2NDdiMGViYjA2N2Y5M2RkZDk0NjcyNCBsZWdhY3ktdHJ1bmsKKzE0MTQyIGUyNjYwYWZkYzM4MWI4YzY1ZjE4ZWMyY2NhNGE2ZGI4OWRkNGYwYjggbGVnYWN5LXRydW5rCisxNDE0MyA1MjU1ZDA1MDQwYzI1MjIyNzVkZDMzNTQ4MjEwN2YyZWFmZTBkMzk3IGxlZ2FjeS10cnVuaworMTQxNDQgZDQ3MzFlNDNmYTYwNTNhNDJjNDNhMDliMDAxNTNmMDc0NmM3NGJlMyBsZWdhY3ktdHJ1bmsKKzE0MTQ1IDZhYmM1MGJiNDcwNzRkMzhiYzhhZWNiYTM4NDAxMjcxY2Q4NWQ1OTggbGVnYWN5LXRydW5rCisxNDE0NiA4ODU4MjBmYTdlMzE4Nzc4YWI3NmJmZmFhZWU2YTY2MWQ0ODRkNWZiIGxlZ2FjeS10cnVuaworMTQxNDcgMDdkMmVhNzFhY2RjNjYwMDYyZGRmOTRjYmMwZGZkODdhM2QxYTJiYyBsZWdhY3ktdHJ1bmsKKzE0MTQ4IDIyYzAzYWI0ZmIxNjUyNWQ1MzMyYWZjYjMyMWZhODAwY2M3M2M1ODMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTQ5IDZhZGMzYzVmYTE4NWExMWE5ZWM0MzZmYTg1MTFmMWJiNzBjZWVkNjggbGVnYWN5LXRydW5rCisxNDE1MCBjNWFiYzgxZGQxZWVkOTAyNDQ4ZDVmMDM1OGFiYmJiZWRiYzNhNDY0IGxlZ2FjeS10cnVuaworMTQxNTEgZmQwZDMxYzM0NmIyYmI0OTgzYWJkMDM4NjQ2YjFhNmI1YTFhZDYzOCBsZWdhY3ktdHJ1bmsKKzE0MTUyIDU1ZGYzNzAzYzk1M2I2N2UwNmQ1MGNlNWIzZDQyMDhkNjcwYjNmY2IgbGVnYWN5LXRydW5rCisxNDE1MyBmNTdmZjQyODlmYzY0YjZiOGQyNmRlNjE0MzFmN2UwZDY3Zjc5ZjQ4IGxlZ2FjeS10cnVuaworMTQxNTQgNTdjMTY4NWFjYjE2NzNlZWZlNDAyY2FiZmYwNzIxNTE3YWIzN2YxZiBsZWdhY3ktdHJ1bmsKKzE0MTU1IDRjM2U1NWM4MjhkM2JlM2EyZmM3YWNlYWEwMDI2YmUwZjNhNmIyMzkgbGVnYWN5LXRydW5rCisxNDE1NiA0OWQ2ZDMwMjc3ZGE3N2M5YmRmNDlkYTQyYWJkYWIwODIxYmMzYzA0IGxlZ2FjeS10cnVuaworMTQxNTcgNjZhYTIxZjUwZWEzNTEwY2ZlMGFjMjlhNWY5MzcwNTllNzgxNDEzZCBsZWdhY3ktdHJ1bmsKKzE0MTU5IDNmZTI3YmIyZjExOTM0MGEwMzE0ZGViZWQwMjI1ZmMyZWRkOTY5ZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MTYwIDI3M2E1ZTlhYTYzM2UzMDNlMmM2YjdlOWY1NzAxNDEyMTM5NTRmOGUgbGVnYWN5LXRydW5rCisxNDE2MSA4NmExNjNhNTNiMWNhYjdlODk0ODRmNDJlZDNiMGFhM2JlNmNiOGFkIGxlZ2FjeS10cnVuaworMTQxNjIgZjM2MTFjYjNhMjYxNzM3NDIxZjE5ZTkyN2FlYThlNmVmNzYzMDRlNiBsZWdhY3ktdHJ1bmsKKzE0MTYzIDE3NzU5MDBkYjEwODc1NGY2ZjUwYmVlMzliMzk5Njc1NjRiNzQyOWMgbGVnYWN5LXRydW5rCisxNDE2NCA1N2FhMjc3ZDdhMDBkZTdlMzFkZWE4YmUwODMxYzdhNzg1NTlmZGQxIGxlZ2FjeS10cnVuaworMTQxNjUgYzYyMDViYzcxMGVlOGIyYjFkMmRkMmYzZWQ4NTU1ODY0ODIyNTNiNSBsZWdhY3ktdHJ1bmsKKzE0MTY2IDNmZmRmMDVmNTYzNWRmM2JjNDhmYjBiMjAzZjg4M2U5YWIyMTczNDggbGVnYWN5LXRydW5rCisxNDE2NyBhZjVhZDVlZGI3YTVkYTFmMDE4ZGU3OWNhYWVlOWJjNWQ1M2UwZTNkIGxlZ2FjeS10cnVuaworMTQxNjggNGJkNGJkM2I1OTdhYmU2NWY5NjZiN2JjOThiYTc4ZTllYTg3ZjQyZiBsZWdhY3ktdHJ1bmsKKzE0MTY5IDY0OGQ5N2JkM2FjNmMzNzc1YzhkNDFkZTgwYjQ1YWI2OTE2ZDNiOWYgbGVnYWN5LXRydW5rCisxNDE3MCAxMTMxYmZhMWFkOTkzMjM2ODlkZjdhMjNjMmM3ZGNkYzE2MTZhNjZkIGxlZ2FjeS10cnVuaworMTQxNzEgMWIyZTNlMmEyNDM3OTNmNjBkYTAyZGNmOTVjOGQ2MDM5ZjhkMzhlNSBsZWdhY3ktdHJ1bmsKKzE0MTcyIGNhYjNmZjU1MWY0YmM2MjY1NGUyOGUxYWE3NjU4ODQ3YTZlNjBhM2QgbGVnYWN5LXRydW5rCisxNDE3MyBmMjQ5NjVlNzdiODU1NmJhZDVkZWYwYTA0ZTgxN2E2MGU5M2RlM2IxIGxlZ2FjeS10cnVuaworMTQxNzQgZTBlMDExZTQwNzNjNWE1YTJkYjEzNGYzYjVlZGYwYTBlOTA0YjE4OCBsZWdhY3ktdHJ1bmsKKzE0MTc1IDE1ZTViZDg5Mzk1YTdkNTIwN2QyMzgxZjcyYmUzMThjMmU3M2NhZjkgbGVnYWN5LXRydW5rCisxNDE3NiAyMzhiNDM5ODgyZTUyM2I4ZDU5MDZlOWJhMTYwMDk3Y2Q3MmQ2ZTEyIGxlZ2FjeS10cnVuaworMTQxNzcgMDExNzFiZTQ3NjlkMTNlNDM3OWY1Yjc0N2VmZGU4N2QzY2E4ZmZmYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxNzggNzcwNjE4ZDlhN2ZjZmEwZDc4ZTJhYjM3NWZiZmY1ODkzMTI0ZDAzNyBsZWdhY3ktdHJ1bmsKKzE0MTc5IDc4ZmU4N2NlMGRlZDEwNjIzNzAzNjA5OTRkMzc3NDRkNWUzYWQ1YmUgbGVnYWN5LXRydW5rCisxNDE4MCAxNDU2MWU4Mzk1YmI5ZGVmZTg1M2UwNjkzZjIzODExYzIyMDc4ZGI4IGxlZ2FjeS10cnVuaworMTQxODEgMGJhZDlkOGI5NDVmNzIyMzk0ZWYwZjE3MjI3OTYwMjMwMTExZDE5YiBsZWdhY3ktdHJ1bmsKKzE0MTgyIDU3MzhhZDczNzExNDQ3MzlhMmVmM2MzYTRmNDJkODJkMGJhNWM0ZDMgbGVnYWN5LXRydW5rCisxNDE4MyAyYWFiNDc0ODQwMTIyMmU3MGI2ZDdlMTViNTAzMmVlOTBjNDQ3NWNlIGxlZ2FjeS10cnVuaworMTQxODQgMWNmZDgxNzY4ZTcwMzVkMzlkMzE0NzgwYjI3YTM4NGY4NTEzN2JkMiBsZWdhY3ktdHJ1bmsKKzE0MTg1IGVjZDY2Nzk4Y2YwYmRiY2Q5OWYzOWJjZGQ2NTUyMGRhYzdjNmViNTcgbGVnYWN5LXRydW5rCisxNDE4NiAxM2RhYWQ4YTZlZWUxMDhjODQxOTNjNzMwZDFiNzRhNDg2YTliNGVjIGxlZ2FjeS10cnVuaworMTQxODcgNjkyMTZjMTFhMWJkN2M2NmYyMjRkOTM0NDI3ODcwZjU4MmMxYzg4ZSBsZWdhY3ktdHJ1bmsKKzE0MTg4IDllYzdkOTc4ODAwZDI2Njg4M2ZmZThmYzQ1N2EyMTJkNTA3OGQyMjYgbGVnYWN5LXRydW5rCisxNDE4OSBiMzYwNDEwZDYzYzY3NzFiODE4YzdjYzZiZGU3ZmM5OWI0NGFhZjkxIGxlZ2FjeS10cnVuaworMTQxOTAgNmQ4Y2I2NmNkMjM4NTY0NWMwNTY3YTA2OGRkNjdiZjI3NjYxNDI0MyBsZWdhY3ktdHJ1bmsKKzE0MTkxIDA4MzEzYWMxN2NmM2RhYzY2MjUyN2QxMjNhYmIyMDFjMDRkMzM5YmEgbGVnYWN5LXRydW5rCisxNDE5MiA2NzUyODQ0OTc0NDNlMjI5NjkxMDg5YTAyNjRjYTBiYzA5MTk3ZDY2IGxlZ2FjeS10cnVuaworMTQxOTMgMjBhZjAyYTU3YTVmMWUzNTgxNDg5N2E1NDQ1OWUzNjZlOTYyNmJmZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQxOTQgNjhjMjU5YjZlNmNkZjhjZDNhNWZlYjdlMmYzM2ZiYmQxMjM0ZjVhMyBsZWdhY3ktdHJ1bmsKKzE0MTk1IDU5MDI3MmFiZTY5Yzg1YmMzZmZjMDVkMmRiODgwNjdlMDcyNDFiM2EgbGVnYWN5LXRydW5rCisxNDE5NiBiYjFmNDNmMjVjZTA5YTUzYjliYWZmM2QwNTRhOWU0MGIzNWZiMTk5IGxlZ2FjeS10cnVuaworMTQxOTcgYTcwZGM3M2EyOGRlMDkzMjQ1MGI0NGI5MmZmNjhlNjRkYzRjOWExYyBsZWdhY3ktdHJ1bmsKKzE0MTk4IDEwN2NlMjliMDRhNDVkODQ4MzgxNTAwNTc2NTYyYTY5NDk1N2Q5NDQgbGVnYWN5LXRydW5rCisxNDE5OSA1Mjg1NTlhMGIyZjI1MjBlOTg3MWQ5MDQ2Y2Q4M2RmNGFlYmI5NjY3IGxlZ2FjeS10cnVuaworMTQyMDAgOTEyNDVkYzk0MGViYWYwMjFmNDM3OGU2ZWJlY2QzMzhjMTlmZmY4MCBsZWdhY3ktdHJ1bmsKKzE0MjAxIDhjZjdiMjNmYjk1NTE2ZTAzY2IxOTAyYzI2MzA1YWNlNzMzMTBjMjQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjAyIGM4N2I4NjFjNmVjNjA2MTFiNzMwOWJjZTAxMjE3OGRiMGNjNjcwOWEgbGVnYWN5LXRydW5rCisxNDIwMyAwZWM4MDNjYmQ4NzIyNWFlNWYwM2Y0ZTdmYjhkN2Q0NjA0NmM5NzhkIGxlZ2FjeS10cnVuaworMTQyMDQgNjVkYzA4MmY3MDA0YTFkM2ZhNTg4ZGE2ODAzZGYyMTM2NTg4YmE4ZiBsZWdhY3ktdHJ1bmsKKzE0MjA1IDZmMjExOWNkOTlkMjU2YWM2N2U3ODIzODM1ZjU2NzE5ZDE2NjUyOWMgbGVnYWN5LXRydW5rCisxNDIwNiAzYzIxM2UzNzJiMjI4OWY3ODdhM2U2YjI5NDRkYTcxNDc4ZTA4MThhIGxlZ2FjeS10cnVuaworMTQyMDcgOTJjNTNiMGIyZWU1YTBkNjkwYzU1MDhjOWQ3ZDkyODQyNDI1Nzc1YiBsZWdhY3ktdHJ1bmsKKzE0MjA4IGM2ZTE0M2RmYzVhMzMyYjA1OTBiMGI1Y2M0Zjg4ZjFhZjUzYmU4NWMgbGVnYWN5LXRydW5rCisxNDIwOSBkNGVhMTM2MTczMWI2MzU2MGE4MTBjNjA1NjkwYzU1Yjg2MmRkYTJjIGxlZ2FjeS10cnVuaworMTQyMTAgNDdmOTNhOTY5MzY2YWJhNmU0MDM5OWM4NGVhMGI1MTA0ODlkOTdiMiBsZWdhY3ktdHJ1bmsKKzE0MjExIGQ3ZTk2Y2RlNmI0N2JkZDNmYjU2NjUzYjdiNjNhY2NlMWMyNDZiYzYgbGVnYWN5LXRydW5rCisxNDIxMiBjMzVlZWY4YTIxNzFhNTI1ZGZjNzNmZjNmYTA2MDEyNzQ4NTgzMzA0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxMyA0ZTMwOTVjNGFlYTBlNzdiY2RiYWE2MTIyNmNjNTgwYzU0NzNhYWVlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDIxNCBkZmUyYmZjODA1MGNiOTI5MzhlZDY0ZjM3ZGRlYmE0ZjkwYjQ0ZTdkIGxlZ2FjeS10cnVuaworMTQyMTUgYjgyNzNlNWRlMzc0YmZiMDc3MTMzZjdkZmJiZWFkNDk3Yzc2OTAwMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMTYgY2Y3YTBmMWI3YjQ4YjZjOGVmODBhODY0YmU3Zjk1OTE1YjE5M2ZkMyBsZWdhY3ktdHJ1bmsKKzE0MjE3IDRjZjkyNWZjYjU2MTllNmI2NzY3ZjRjZDE2ZGY1MDQyZTdiZWQ2MGIgbGVnYWN5LXRydW5rCisxNDIxOCBmNGNjNjAzZGQ3OTkxYjMxYzQxYmRkMzFmZjZmNzU2YmMxMjFhOWVkIGxlZ2FjeS10cnVuaworMTQyMTkgODE3NTg5MTU2ZjIxNjE3Zjg3ZGZhMmMxZTQxM2IzYTc0YjFhMzhhOCBsZWdhY3ktdHJ1bmsKKzE0MjIwIDc3ODU0NmRjYmEwNTJiYTBmYmQ1ZGJhNDUxZDFkMGY4NmM1YjU0MTggbGVnYWN5LXRydW5rCisxNDIyMSAzMzIyOTg4MDEwYjVlMTcyZDQ4MzE0NWU0MmNjZWIwMDk1NWY1ZmEyIGxlZ2FjeS10cnVuaworMTQyMjIgYTdmMjdmMzAzOTk1ZGI1NGUyMTRmOGJhNzg3NTZlMGI2OWY2MzhiOSBsZWdhY3ktdHJ1bmsKKzE0MjIzIGE5NGMyOTZhNmZjY2NjODExNTZkN2ViMDJlMjA2YjBiOWM2MjA4ZTIgbGVnYWN5LXRydW5rCisxNDIyNCBjZjdmY2IwYzViZGUyYjFmNTM5ODY1ZGQ1NGY1MTJlNjhiZWM1YzUwIGxlZ2FjeS10cnVuaworMTQyMjUgMWZjOGU2NjczYjQ4ZWQyNjIzYzNlY2MyMTUwMGE0NTA3YWFiN2VlZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMjYgODRmZDMxZGQ0YjEyMWI5YTcyMWVhY2VjZTY3YTBlYTI0ZWQyMWZlYyBsZWdhY3ktdHJ1bmsKKzE0MjI3IGE3ZGY3ZDUyM2QyOTM1YmE3NjI1OGE3NWZiNGRlYjljNDI3M2M5Y2YgbGVnYWN5LXRydW5rCisxNDIyOCBiY2IwZDYzOWFjZjIxYmQyNGQxZDRlYjNhNzRkNTIyNmYwODcwMTM1IGxlZ2FjeS10cnVuaworMTQyMjkgMDY5YTFmZDQwYWJiZDc1ZDY3ZjkyYWU5MjM5ODEzZjk1NTJiYTFkMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzAgODY4OTBjMDczYzNiZmJjYWViYTIzZGMxYmY4MDk1NzEwZjgyYjQyMSBsZWdhY3ktdHJ1bmsKKzE0MjMxIDFkY2Y5Yjc1OTM3NGYyMTNhYTc5YzI4MDJkZjIwZjZjYWQ1YTVlNTQgbGVnYWN5LXRydW5rCisxNDIzMiA0YTMyNDdlZGRjNDM4NjljZjAyZjE0NGE0YTA0MTViZWJjN2Y4NWU1IGxlZ2FjeS10cnVuaworMTQyMzMgNDcyYTE3ZjJjYTlmY2UzMTcwMmFmZDUwNDVlNmFkZjdjZGExMzZlMyBsZWdhY3ktdHJ1bmsKKzE0MjM0IGMwZDRlZTkzOTFiNjgyMjYxNmRmMGQ3YzRiZTQ0YzM0MjhlNTM5MjcgbGVnYWN5LXRydW5rCisxNDIzNSBkMDkzNGE4MDM4ZjZhOTY3YmFkODlkNGU1NDFiZjUyYTQ4NDAyZmUxIGxlZ2FjeS10cnVuaworMTQyMzYgODcwNWVhMzkwZGJhMDUyYjA5NGFlNGExMjdiYzJhY2JlY2U0M2RlYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzcgZGVkOTYzNjdlOGNhNzJiZWIyZDQ4NWFkZDllMWFiYjM5ZGE0MTA5ZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzggZDMzNTIwODIwZmFmYWM0ZGFhOWQxMmUxZDU3NGFjMzlkNjMwMGZmNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyMzkgZTgyNzY3MzNkYThmYmU4YzhkMGY2MTVjMTg3M2NmYTdlM2E5NWE5YyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNDAgMGIwMTk0ZDQzNTJmMzEyNGM4ZGUyNWJhNjY4NGJmNDllMjIxZGY0MyByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNDEgMzg1NjBhM2EzMjQ5MTJjNTY5MTM0OGU4NTk3NzI3YzBlODA3YzBhZiBsZWdhY3ktdHJ1bmsKKzE0MjQyIDk5YTAxY2IzZGRiNWVmNWQxNWJjNDFjMDczYWViYTBmMzcxNWQ2OWIgbGVnYWN5LXRydW5rCisxNDI0MyBkODg5OTZlNDZjYjJjZTAxMWYwZWZiZDAxOTc1NzZhM2Y4MTAwODhkIGxlZ2FjeS10cnVuaworMTQyNDQgOTljOWIxMjY2OTBkZmIwNTAyMzU4NDc2YjBhMWQ2ZGM4MjdjNjE2NSBsZWdhY3ktdHJ1bmsKKzE0MjQ1IDRjM2NhNmMwNWJjYjMyMWY4ZDdmYTliNDA4MmYzZTUzNmM3NmYwZGYgbGVnYWN5LXRydW5rCisxNDI0NiAwYWQyMzMyNDAxNmU0ZWQzMTJmYjk3ZDQ2MDNlNTYwZDMxZjM3OTkzIGxlZ2FjeS10cnVuaworMTQyNDcgZmQ1Y2VhZDczM2I2ODI4OGQwOTMxMDBkMTU4YzFjZDNlODIzYTcyMCBsZWdhY3ktdHJ1bmsKKzE0MjQ4IGRiNzU2ZDMxZTcyN2EzYmJjZDZlN2M1ZmEyNDI0OWJmYTM5MThlMGQgbGVnYWN5LXRydW5rCisxNDI0OSAwMjNlZDI2NjMwNzQ2M2NkMjA1ZmYxZDgyZGVlOWYyYjExMmFjYzVjIGxlZ2FjeS10cnVuaworMTQyNTAgMGQyN2U4ZDhmMDRjMWEyMDI5NjQ0ZmZhMWVjM2Q3ZWY1NTZiNDc4ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyNTEgNjc2NDY5Zjc1YWU2NzIzZDcxYjY1YzZjYTExMjA4YjY4NjQzMTBkMyBsZWdhY3ktdHJ1bmsKKzE0MjUyIGVhNjEwNDRmOThhZWQ4NjJmMmU5ODcwZDYwZDNmMjYwZDZjZTJlNGQgbGVnYWN5LXRydW5rCisxNDI1MyBhZDg1OTQwODQwY2JiNWI1ODhiN2MyODJhYTNjODMwZTI0YzhhYmUwIGxlZ2FjeS10cnVuaworMTQyNTQgYjg5NmMxMmMyZWVhNWNhMzQ5NzA1ZDhmN2IxNmQ2MzRkZTI1YzkwNSBsZWdhY3ktdHJ1bmsKKzE0MjU1IGM0MzRmOTQyN2M5YjAzYzUxOWM0N2FhYzg3ZjA1MDc5ZDk3MTQ4OGQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU2IDI0ZjgxNGQ5ZTNmZjU0NTQ1YmUyN2Y3ZDk0ODMyZDczMDU4MTFlY2MgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjU3IDAwMDE3MjI1ZjA3Nzk1NTUxM2M3NjgyYTU3MDFhZmVlMzJhMGFkOTkgbGVnYWN5LXRydW5rCisxNDI1OCAyYWI3NGIxOTMyODZkOWM4ZGJhNjFkYTZmN2ZhODM2MDExY2I0YzI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI1OSA1MjhlZjM4YjNkM2E3NjdhMmE4NDVlZDc0YjgwOWUyYmY5ZGI2YjA2IGxlZ2FjeS10cnVuaworMTQyNjAgN2ZkZmFhYTY1ODI3MDk2NDMxNTJmN2YzMjgyMmIyNjBjYjY2NDU0MyBsZWdhY3ktdHJ1bmsKKzE0MjYxIGU5OThiMzUwYTRiYjFkYTEyYmI4ZWNlYzE2ODljZGVkZWZlNzhhNjMgbGVnYWN5LXRydW5rCisxNDI2MiA4MjgzNTU0ZjEzMTlhNGQzYWQwY2JkMjRjMTQzYzZiY2Q2YTNhM2YwIGxlZ2FjeS10cnVuaworMTQyNjMgNzcwOWM5ODM1MzgyOGMyYmIyM2JhYmRlYWQyNzA4ZDMxZmU3Njg2ZiBsZWdhY3ktdHJ1bmsKKzE0MjY0IGI3ZjI2Mjg3M2JlMDRiYmU0YWZjOTg0ZjY2MjZiMzUxZGQ4OGRlMDIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjY1IGEyMzg2YjlmNDc0ZDhhYjFhNTQ3ZmRjZDYzNzBiOTZkZGE5YWM2ZmMgbGVnYWN5LXRydW5rCisxNDI2NiA5NTUxMWYzOTMxOWE0YTFmNzlhNDAwOWQxYWNkNTVkZDE1ODg2YjNiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDI2NyBiODAwZTM2YWVkNGViZGFiZWNjZGRkMjg1ZTIwZmNlMTFkMmMyM2I3IGxlZ2FjeS10cnVuaworMTQyNjggNDQyZDRjYjQ0MGM4ODIyODg3ODEwNjExMTRlYTVjYWI5NDM3YmIyYyBsZWdhY3ktdHJ1bmsKKzE0MjY5IGRmZjdhMDNlN2QyNGVkYTA5MTdhOGZlMjIzYTI1ZTY3YjFiMjFiNTUgbGVnYWN5LXRydW5rCisxNDI3MCA4YWZkNmZiNTg4ZWU3YjljNjUzZmU4MjI1MWY2MGI0YmFhYTM2MjUzIGxlZ2FjeS10cnVuaworMTQyNzEgNWU2ZTllODkzYWNkY2VmZDQzYWViNTM5NmZlYjMxZmIwZDllZTU1NCBsZWdhY3ktdHJ1bmsKKzE0MjcyIGExMjZmYjVjNjJkYzc0Nzg4NGY4MjY4YThmMWY5ZGZiMDIzMzY0ODIgbGVnYWN5LXRydW5rCisxNDI3MyA0ODM3MGM2N2RkOWU2YzdmYjE5MmRhMzI4MGRjNjJkNTI2NWM5MjJlIGxlZ2FjeS10cnVuaworMTQyNzQgNDg5NDgzYjY1YjNhM2ViMWJiOTUzMzg0Mzc0M2JkNDA5YTRmNjE2OSBsZWdhY3ktdHJ1bmsKKzE0Mjc1IDY5Yzk5NTE2MjI3MDY0NzQxZWY1ZTcwZjM2YmMyMDYzNTE5N2MyM2EgbGVnYWN5LXRydW5rCisxNDI3NiAwNzU2ZGZlZWM0ZWVjYmQ4Mzc3ZWQ1MTQzYzhkMGJlNDM0ZTFjYTEyIGxlZ2FjeS10cnVuaworMTQyNzcgMjE2ZWZkYWQ5YTRiNmZmNjU0NWViMzdhYTUwZjhlMTdjZjNiYWY1YyBsZWdhY3ktdHJ1bmsKKzE0Mjc4IGZmOTE5ODUzNjJjN2NjMGQyNWJjZWIwMmE0MTdlYTNlYWNkZGUzYWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mjc5IGY5NGQ2NjAxNjkyMWU5ZDBlMDZlN2EzZjk2NzViYjJkZTAzOTIyZTMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjgwIDkxOWIzN2M1MmE4NDJhMjY1ZDY2ZmVhNjgwN2MzYWRmOGU4NGJlZjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjgxIGNiZjQ0MTAyZDQyYWZjNWRiODJiODYxZDRkMmQzYWVmODg4MjMxM2UgbGVnYWN5LXRydW5rCisxNDI4MiA2ZDFkNWYzY2NhNWZiNjJiOTc4YTY5YjViYmMwMTFmNzk0Zjc4ZDczIGxlZ2FjeS10cnVuaworMTQyODMgNjdjNjIzOWM3YmM3YWZiZmFiNTE1ZDFhYjFhZGM4NTRmNmFkODhjZCBsZWdhY3ktdHJ1bmsKKzE0Mjg0IDQ3Zjc1YTE3YjEwMzc0YjJjZDRjYWM2MGRjYmNhNDAwYjYxZjVkN2IgbGVnYWN5LXRydW5rCisxNDI4NSBhOTQ3MTNkNmQ5ZjZhODMwMDg0NGMyMmE0ZWJhYWNiZWQ1OGQ4NGFlIGxlZ2FjeS10cnVuaworMTQyODYgNWVmYjYyYWNmMjZlZjNkOTNmN2U2MmViNzdiN2I0ZGViNzY1MWZkOSBsZWdhY3ktdHJ1bmsKKzE0Mjg4IGI1YWVjMzM3OTBjOGU1NTI1ZGU0MjgxODIwZGNmMzNiMjFkMzQ3OGEgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQyODkgOTNiZWQ2MDM1NWU0ZTllNTg0ODc2YmJmMjI0ZTBkOGNhYTdkYzRhMSBsZWdhY3ktdHJ1bmsKKzE0MjkwIDhiMzQ4MTg3ZTMwMzMyNmM0MDQwMzM4MWVjOGQxMThjODU3Njc2MmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkxIGVmMWU2M2Y3NzQ0NTk5MGFiZDQ3YmJkODMwNWEyMzZlODNkYmRhNTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkyIGY2ODBhYjEwNmU4NjFlMDdlMjZiNTE1MTUyZjQ2MGEzODIwZGY1M2MgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0MjkzIDQ3ZDcwZjRmNjM1ZjMxMGU5MWFmNGYzZDMzMTQzOTY2NTBiY2I5MDYgbGVnYWN5LXRydW5rCisxNDI5NCAxYzQzNTRiYmE0MmI5YTE5YmVkZGYyMDdhYjg5NjVjYzY5ZDM4MGFmIGxlZ2FjeS10cnVuaworMTQyOTUgMDlkYmI0NzAzNGUwZjUyYmY5MGRmMTlmOTQ3OTc2ZGI3OWUzMmY1NiBsZWdhY3ktdHJ1bmsKKzE0Mjk2IDRjMTZmNDI1YzcxMmM0MjM3MGZmZTNiODcxM2FlMDQ4YTlmMGMxNjUgbGVnYWN5LXRydW5rCisxNDI5NyBlMzQ5OTEwMjI1NzE3NTExMmEwMWNhZWMzMTNiZmRiNDNjM2EyZjQzIGxlZ2FjeS10cnVuaworMTQyOTggZjRmOWI2YjQ0ZTllNDdjNzM4ODE2MjNjNTAzODcyNGUzZWQ5ZTcwNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQyOTkgMGRkNTIwZjRkY2U4ZGMxZGRkNDZiNTBjMjhlMzdhZjQ4ZmZjODg4ZSBsZWdhY3ktdHJ1bmsKKzE0MzAwIDhmODhiMzE4NDNhYmM1MjQ0OWYwZjRjYTdkODMzYjAwNGE4ODU0MzEgbGVnYWN5LXRydW5rCisxNDMwMSA4OTBiMTFhYTJlYmM3MmY4Njg0ZTBiODMyOWNiMWJiNjNjMmNkNTQ5IGxlZ2FjeS10cnVuaworMTQzMDIgZGU0NGY1MTE3NjhhYzY2NzBkYTU0Y2YxZDZmZjcwMzM1MmRjYzMyNyBsZWdhY3ktdHJ1bmsKKzE0MzAzIGIwZWI0MjFmOGFlOWJlYjdkOGExNzhhZTNmYzMxNWQ2YzdiNjBiODQgbGVnYWN5LXRydW5rCisxNDMwNCA1ODgzNzEzZTJkYTNhNjFmMTM5YTRjYmU4ZTg1NjJlMjMxZTQ5MmRlIGxlZ2FjeS10cnVuaworMTQzMDUgZGFjYWEzNGRmY2E0NmY5NDNjMGI5OTdmZmZjYThiNzdiYzQ3MTE3YyBsZWdhY3ktdHJ1bmsKKzE0MzA2IGQzNmQzMTJjZjkwYmVlODYwZGFlNzdhYjEyZTZkNzNlMGU0OThmYTcgbGVnYWN5LXRydW5rCisxNDMwNyBmZjc5ZWU0M2I4YTFmYTc1OGUwZDk5NGJhMjNkMTQ4OTdkYjhjYjRjIGxlZ2FjeS10cnVuaworMTQzMDggODZlN2U1ZWNhZjc5NjBiMTYzMTM4ODlkZDhkNjUwMmJmY2JiMjcwYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzMDkgNDk3ZTAxMWVmMWEzMjVjMDc1ZmUyZmZmMjc4MzU0OTA1NzBlZTMyOSBsZWdhY3ktdHJ1bmsKKzE0MzEwIDdmMjkzMzllYzNhNTBhM2E1MzQyM2EyMzNiNmE4ZDFhNDI5NTYyMDEgbGVnYWN5LXRydW5rCisxNDMxMSAzNGY1M2MzNmJhOWExYjFkMGM1MTdlNTI4MmM4YzZjNDE0MWM5MjU3IGxlZ2FjeS10cnVuaworMTQzMTIgNzE2ZmI1OTU0OGJlNDlmYzM5NjlhNGZiZGM0ODEwYjU1N2UwM2MxYyBsZWdhY3ktdHJ1bmsKKzE0MzEzIGQxMGMxMDhkM2ZkNzYyMTI1MmY5NWRkYjEzMzY0ZWU2Y2NlYTZjMjkgbGVnYWN5LXRydW5rCisxNDMxNCBiNmY1MmMxZWY2ZGE4YThhY2IwZjcyNjZkZDFjZjRmNjhhMWNlZTI2IGxlZ2FjeS10cnVuaworMTQzMTUgNmY0MTQ2ODQ2MzM3ODc4YzBiYmYxNDk4MmIyYzBiNDAxZDUzZDg3ZSBsZWdhY3ktdHJ1bmsKKzE0MzE2IDRhMjNjYzQ5ZTJiMDY0ZDlkMjZmM2E0MGM0NDk3YTUzZTA5ZGM4YjIgbGVnYWN5LXRydW5rCisxNDMxNyBkOTAwMGVlOTU5ZTUzN2U4ZDkyODYzNGMxZjIwNzE5ZGE3ZGU2Mjg3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDMxOCA1ZDYyNWEzNjVlNzY1N2EyOTI4MDNmMmNkYTI5YzllODU1YWRjMmQ2IGxlZ2FjeS10cnVuaworMTQzMTkgMzhjNGQ2MWRiN2VhMWY5MTA4NGIzNTE0NDA2NTU0NDlhMDEzNGY1OSBsZWdhY3ktdHJ1bmsKKzE0MzIwIDY1NDZlYTA2ZTE1NzA5OTI1NTcxYTQ5MzAyZjFhZjcwODQ1YTdiODkgbGVnYWN5LXRydW5rCisxNDMyMSA5MjUwZTVkM2FhMzFmZGQ0ZjlmNmZjYTE5MWUxY2ViNjA3MjA5YmUwIGxlZ2FjeS10cnVuaworMTQzMjIgYWJmYTFjYjFlZDA1MmE1NDJkMmE4NmE5ZjkxNDFlMjEwMGM1ZTMzOSBsZWdhY3ktdHJ1bmsKKzE0MzIzIGIzMjIzZjAzYzllYTg4ZGY5NWY2NjVlYjhkYTBhZmNiOGUxN2NhMDMgbGVnYWN5LXRydW5rCisxNDMyNCA2MjdiNGRiYTExOTJlMjViMDk4YjAzYzFmOTRiNGJjMWM2NWVjYzhkIGxlZ2FjeS10cnVuaworMTQzMjUgZTQyNTU1NmU2OThlYmZhMzM2YTlmNjhkNDVjMTBhMTUxZDhkMWQxZiBsZWdhY3ktdHJ1bmsKKzE0MzI2IGU5MTY5YjE5ZTllNWM0NDdjNjVhZDllZWI1MjBmNDczMTVjNjNmN2UgbGVnYWN5LXRydW5rCisxNDMyNyAxMTYzYTdhMWNjNjc5YjgyMGEwMjFiYTg5NjZiZjVmYjg3YTYyN2Q2IGxlZ2FjeS10cnVuaworMTQzMjggODM5ZjhmODZjY2FhM2FhMWVlMzFkOTQxOWJkOTE3MGZiNDE5YThkZCBsZWdhY3ktdHJ1bmsKKzE0MzI5IGZkYzllZWI4OWUwYjMwZTY2ODFhNGEyNGU2MGUzNTQxOGQxMjJmN2EgbGVnYWN5LXRydW5rCisxNDMzMCBlYjM4MWZmMTdhMzE5OGMyMzI0YzY0NGYzMTY0MjYwYTZlZWJhN2UxIGxlZ2FjeS10cnVuaworMTQzMzEgNDIyMzM3YzMyMjlhZGVhMWY3NzYxYTAzYWJmZTM1ZWI2YzRjZDdjYSBsZWdhY3ktdHJ1bmsKKzE0MzMyIDY3NmU2NDdiMWJlNmI5NDNjOTg1ZWY1NjJiOWExODYwNzQyMTc1NjIgbGVnYWN5LXRydW5rCisxNDMzMyA3MWQwMzhkYjBkZDIzYzJmMTIwNDU0MmUzYjBmMDFhNGQ1MDA0MDU1IGxlZ2FjeS10cnVuaworMTQzMzQgYjdhZWJjODRjYmMxNjRhNWUwMGM5ZGVjNTdmOGFlZmU3M2I5OWI4ZCBsZWdhY3ktdHJ1bmsKKzE0MzM1IGE1MzI5MzJhYzQwODM4N2QxOTRiYTU3YmEyN2NmMmUxZDk1ZDI4YzEgbGVnYWN5LXRydW5rCisxNDMzNiAxZTk1MmQ5MzNhYmJlZjVkM2Q5YmUyNjIzZTlkNGIwMjU5ZDEwNmY3IGxlZ2FjeS10cnVuaworMTQzMzcgOTg1NzIzNDk4YjFiYTY0MmNjMjY5NWU2MDk3MWU4YjliZjhlNmQyOSBsZWdhY3ktdHJ1bmsKKzE0MzM4IDYwMjViMDdjNWMyOTY2ZTU2YzM3MGM5MDI4YjA1OTRhZWQzZDliODMgbGVnYWN5LXRydW5rCisxNDMzOSAwYjQ2ZDI1MGUxOTljZmE2ZThhNzFiMzA4MmNiYzkyY2RkYmYwNmZjIGxlZ2FjeS10cnVuaworMTQzNDAgNzJlYmY5MWRhYTA1ZDVhNzMwZmEzNzM5MWI1YWZmMGM1MzdiNmQ5YSBsZWdhY3ktdHJ1bmsKKzE0MzQxIGM5NzZkNjkzZGRlYjM2NDA1Y2Q5NzE4MDM0YWZmOWU2ZWZhNjFjMTUgbGVnYWN5LXRydW5rCisxNDM0MiA3OGYwMDk4ODEyYjc0YjI1N2IyNWM1NDFiMDJlMDQwNTUzOWQ5NzAyIGxlZ2FjeS10cnVuaworMTQzNDMgNmE5OWZmMDY5NDU3ZDcxOGQ0MTg5MTAwYWU1ZWFjMzdkMTFjNmMzYSBsZWdhY3ktdHJ1bmsKKzE0MzQ0IDg5ZDMwOGZjZjZmNDU4MzYzYjRkZmYwMzJjNjk0NWZjNmU5YzkzMTYgbGVnYWN5LXRydW5rCisxNDM0NSBlMTlhMzUwOTk0Yjc1YWZjMWJkNDc5MWMyYzFiN2EwNWZmZWEyYmQyIGxlZ2FjeS10cnVuaworMTQzNDYgNjUzYTkzNTBhODE3MzM5NjliM2U3MDI3NjNmZGE1ZTA0ZDA3YWIxYiBsZWdhY3ktdHJ1bmsKKzE0MzQ3IDgzZDM1MWY5NDhhYjc1Y2VkYzhhNmU2ZmJlMzJkYjhlNGIxOTc1YzcgbGVnYWN5LXRydW5rCisxNDM0OCBhODZiZGZlNDU3MjU4NGQ2YzZjNjZhMmIyOWM4YjlkY2QwYjdiYzEyIGxlZ2FjeS10cnVuaworMTQzNDkgMjNlN2Q5NzgxMDEzMTE1NjkzY2RlMDI5NDAzNzkwOTMwNDY0ZTA2OCBsZWdhY3ktdHJ1bmsKKzE0MzUwIGRhN2Y1ZjZhODQ5ZDBlZThhODJhZTc2ODljZjM0Y2I4MDgxMmE0ZGUgbGVnYWN5LXRydW5rCisxNDM1MSA4NDBlMThlZWMwN2Y0ZjU1Yzg3MzkwMjJhM2I1ZjU2YzM0Y2Y5MjBjIGxlZ2FjeS10cnVuaworMTQzNTIgYzk3OGEyM2E0ZGFiMTA3NTkxZThkMDc2OWYwN2FiZGMxN2Y0NTE2YyBsZWdhY3ktdHJ1bmsKKzE0MzUzIDNjNzdkNmM1YzhlOTE4MGYyZmJiOWZiYzA5MzYyZDhiNzQ2OGFmMDggbGVnYWN5LXRydW5rCisxNDM1NCA0NWMzNWI1Mzc2ZTRiZGJiNWJiM2E2MWRiNzBhYjg4ZTRiZDVmYTllIGxlZ2FjeS10cnVuaworMTQzNTUgNzc0NjVkOGI5ZjVlMjkwZGJjMzQyN2U3Y2YyMmIwZmRlN2NkNDQ5YyBsZWdhY3ktdHJ1bmsKKzE0MzU2IDdlZjM5ZTA3MTIwYTdkYWI1ZjM0ZjZiZTNhOTRlMDJkOWVjYzE3YWMgbGVnYWN5LXRydW5rCisxNDM1NyA3NmE2MDlhOTQ3MzAyMjM4ZjUxNDhhNTM0YjhmODI1MWZkMjQxMWY1IGxlZ2FjeS10cnVuaworMTQzNTggNWMyNzcwMTI0OTA0ZWRiM2MyM2IzMTE4ODQxNDgxNzAwYTI0OTQ2NSBsZWdhY3ktdHJ1bmsKKzE0MzU5IDc3ZmEzMzE2YmY1ODI1NDcwNzBmZTQwYzA3NjFiNWNhYmJjYjNjMDMgbGVnYWN5LXRydW5rCisxNDM2MSA0ZDkxMjIxMjA4ZmZiMGI0OTQxMTI0MGU0MDAyZDJlODFiOTBjN2U0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDM2MiAzZjFkYTA1Y2VkNTUzNmEyMWFjYTIxN2RiODBlNmFmYzQzZmViOGQ1IGxlZ2FjeS10cnVuaworMTQzNjMgM2RjZGRiNDc5YTdlNjQ3MzllMGM4YWQ3OGQyMjBmMTJhNzZmOGQ0OSBsZWdhY3ktdHJ1bmsKKzE0MzY0IDYwNTZjZDUwMjk3ZTRjOTkxOTE3OGNmZGY2ODAzNzFiNWQ5MTU3YjEgbGVnYWN5LXRydW5rCisxNDM2NSBkZmZiZDkyMWVlZWQ0NWNiMzA4NGQ3YzdhZTk1NDY1OWViZmE5OGNjIGxlZ2FjeS10cnVuaworMTQzNjYgNTdmYjM1MDFhYjIyYjJmNjQ4OTg0OWM2MGU3NWIwYzVhZjIwNTBhOSBsZWdhY3ktdHJ1bmsKKzE0MzY3IDYzNjdkODI5ZjM2YmMyMGM5NmE2NTk3ODg4YTc3OWE5NjlmYTZjYjMgbGVnYWN5LXRydW5rCisxNDM2OCBlMzYwNmQzMDg4NmYwMzgzN2FjNzJmMjFmZDI5NzQxMDJmYjIzMTQ4IGxlZ2FjeS10cnVuaworMTQzNjkgOTQ1Y2U2MGQ5ODc5MTczNjhiMDk4NmNhZTg1OGI4MDZjYzVlNmZmMyBsZWdhY3ktdHJ1bmsKKzE0MzcwIDAyMDUyNmU3MmVhY2YyODM1NGNkNTUxYTZmNzIxODdjNTEwZDdiMDcgbGVnYWN5LXRydW5rCisxNDM3MSA5MDkyZDMwYzJiYjdkNTg2Zjc5MDZiMWYyZmI0ZmY3MWFlYjYzOWZjIGxlZ2FjeS10cnVuaworMTQzNzIgNjJmYThlYzg1OTVmMDJlYTJmNzhhYTVjOWFlM2NjZDYyMmNhYzA3OSBsZWdhY3ktdHJ1bmsKKzE0MzczIGE0ZWVmMDgxM2Q0Y2JlMGJlZjg3YWRhNGQzODUyZjkyNjIyYmZiMGMgbGVnYWN5LXRydW5rCisxNDM3NCA5ODc2YTY0YzE4MWFhYTYxODI3ZGE3NmI1YTljYWYxMjM4ODYyMTdmIGxlZ2FjeS10cnVuaworMTQzNzUgMzU3OTk3NTUwOWQ5MzU3OTYyOWVhMmMxNDc2ODg2NjA2YjEyNjE3OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQzNzYgNGNmODRkZGY1MTI5MDQzZDI2OTFhMjc0NWY5YTM5OGJiZGIwODgyMiBsZWdhY3ktdHJ1bmsKKzE0Mzc3IDNjZGUxMmJiM2RhNWQ3NGM3YjYxY2Q1ZWMzOTgyZWU1OWUxZTFlYTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Mzc4IDAzYmQ1OGY4YzlkMDNlMTJiOWJiYTViNGRmMWFlMmFlN2M3MjAxMWIgbGVnYWN5LXRydW5rCisxNDM3OSBiMDM2OWU4ZGFhMGJmZjM5NjU0MWNkYjBiNmRmNTllODllZmM0Njk1IGxlZ2FjeS10cnVuaworMTQzODAgMWEyNWJjMmQzMjcyYWRjNmExZTEwZjQ4OGMxYTc1YWE0YjE4NzU5MiBsZWdhY3ktdHJ1bmsKKzE0MzgxIDEwMzNhMjRjNGE1Mjk4ZjBkMDk2OTEzNmJmZjNkN2NkZWJiNTZjNTYgbGVnYWN5LXRydW5rCisxNDM4MiAzNmM2NzUwY2YyMjc1ODYzZjNlY2ExNmFlMThmN2NhNzE0ZGI1MGI5IGxlZ2FjeS10cnVuaworMTQzODMgOGQ1YjkwZWJiOTE5YmIxN2I4OTcxOTI3MTc5ZDQ5ZmE0MTY1NjUyOCBsZWdhY3ktdHJ1bmsKKzE0Mzg0IDcwN2QxNmYwZDM0NWFhODM0M2UyOGE5Mzk2NWI2YjRiMGJkMjgxMDggbGVnYWN5LXRydW5rCisxNDM4NSA3ZjUwZjcxYWU3YmYyNTYxNTZmN2FmNDcxZGM5ZGUzZGVkMTJkZTM3IGxlZ2FjeS10cnVuaworMTQzODYgMjgzOWQ4NGNmZDk2NjZkOTY4ODg4MmM2NjdiOGRmYTVlODQ3ZjFmNiBsZWdhY3ktdHJ1bmsKKzE0Mzg3IDhiNmUyYjIzNmJhYjUyMzQ0OGZjOGMxNzNlYTkzMGMzZWEyM2U0NGYgbGVnYWN5LXRydW5rCisxNDM4OCA2YjhkYWYzMzdkNmJhYmNjZjM0OTNlOGQ0YmJkMmM2MGFlMDNlZTEyIGxlZ2FjeS10cnVuaworMTQzODkgY2FlOGU4ZWRkM2UyYWIyOWNhMjA4ZGY2ODUzMzViOTMwYzQ3NjkzYiBsZWdhY3ktdHJ1bmsKKzE0MzkwIGRjMTliNTkwMGRhZWJiZGYxODczYzkxY2JlNjc5NDkyY2Q1NjliZTMgbGVnYWN5LXRydW5rCisxNDM5MSBhNzQyMTQ3Mzk2ZWVlMDRkYmQ0ZTNkZDU1YmRkNTkyOTkyNjY5MzY0IGxlZ2FjeS10cnVuaworMTQzOTIgZTJiYmMzZTQwY2RiOTY0ZDU3OGNjMmMxNzFhMDcxMDU2OGZmODc1OCBsZWdhY3ktdHJ1bmsKKzE0MzkzIGVjNDZmYWE4MzU5NTY3ZGEzMjQ2YmEwMjhjNGU5M2YzNWQxMjY4OWIgbGVnYWN5LXRydW5rCisxNDM5NCBiN2NmYzJkYmE1ODZiYmFkMTFiZDg4OWRiNDc1MWQ1OGI5NjNlNzQwIGxlZ2FjeS10cnVuaworMTQzOTUgMDQ5YWI4ZjM0ZGYxNjRmYTUzYTA1MGFiNzg5ZThjYWIzNjUzMDQ0NyBsZWdhY3ktdHJ1bmsKKzE0Mzk2IDQxZGMyNGIyMGExNzVhNDI0ODMwMDAwYmE5NGMwNjgwZDg2YTIxYzEgbGVnYWN5LXRydW5rCisxNDM5NyBiNmYxMjg3ZTE5NzA3MzFlNWVkYzg4M2VjN2QwNjdiZDcyZDcwNGYxIGxlZ2FjeS10cnVuaworMTQzOTggNWFmMDE1NzE4Mjg1ZTM1NjE0ZjUyMTI1NTY1Y2I3ZDAwZjFkNWI5ZCBsZWdhY3ktdHJ1bmsKKzE0Mzk5IDQ4NjcyMWVjOWRkNzQ2ZmM1NDBlYTU2ZmRlNjMwMjJiZmQ4MzQyNWYgbGVnYWN5LXRydW5rCisxNDQwMCBhZThkZjA3ZDRiNmExYjZlZDZkODA2NTBjOTE5YjE2YmEzNThmYzQ3IGxlZ2FjeS10cnVuaworMTQ0MDEgZjgzY2RjYmNhMWIwOGYxMzY5NWIzOWFiNTM0OWMwZjBiMDlkYTQyNiBsZWdhY3ktdHJ1bmsKKzE0NDAyIDg2MDUyNDE4MmI5YzhjYWNkMWJmNWY1NDExYjJjMWI1NTA4ZWYxM2IgbGVnYWN5LXRydW5rCisxNDQwMyA3Mjg0OGM2YjYxMWNlZDQwNGEwMGU0MjczZTI4ZTk1NWYwOWE0Mjk4IGxlZ2FjeS10cnVuaworMTQ0MDQgZmQ0ODE0YjU5YjczYTY4MGRjMTY2ODU3YWQ1Y2EwMDRhZmMyOGY2NCBsZWdhY3ktdHJ1bmsKKzE0NDA1IDdlYjEyN2FkZTA2OTRlYjIwM2ZjMzcyOTYzNWE4Njg5YmIyNzNiY2IgbGVnYWN5LXRydW5rCisxNDQwNiBkMmFiOTU1M2Y4NzEyZTNmNjI3NDE2MThkYjc1ZDExNDYyMWNmZGYwIGxlZ2FjeS10cnVuaworMTQ0MDcgMDlhM2E2OGNlOTY0MDRlYThkOGIzNWEzMDE3ZGJkNGRhYTQ4Y2JlZCBsZWdhY3ktdHJ1bmsKKzE0NDA5IGU5M2E1YTkwNmQ3M2EyOGY4NGU4ZDAxZGZkNDYyMTQwYTBjYmU4MDQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEwIDczM2VjNmU4NjlkZDMxNzNiNzRmOGQ2ODRkMWU0ZjIwOTIwMTE0ZDggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDExIDhiYzg3MTA4MTcyNDc3OGIwNGVlYTQ4YzY1N2YxY2U4ZDY2MzQ4NTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEyIGY0NWQ4YjI2YmIyNDUzNGQ5NmMxODEwYmU4NGRiOWNlNDkwZmM2OGEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDEzIDcxZWMzMWY5N2ZmYzdlMDRlMjE5YmFmZjRmMDIwNTZhM2FmZTc0Y2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE0IGE0YmIzODQzYTU4MjIzMTY1OWU4NTQyMTU5MjUzNWVlYWIzNWNjYmEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE1IDQ1NDE5NjExNGZkMjQ1MzU5YTEzMGEyMTYzZjM3N2IyODE3YTVmNjMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE2IGNlZDhkZDYyMjdkZDJkMmMzYjU1OTQ2NTI5NzJkNThhNDZiMWUwN2QgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE3IDVhZjNjNWI3NGM1NDU4OTMwMThlNzU5NWQ5ZGFmODMwNmVkM2EzZDUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE4IDI5NWZmM2IxNzUyMmEyZWM2ZTk4MzEwMzlhYjgwYWU1NzM3OTVhNzMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDE5IDYzY2UwOWRmNjA3ZGUxOWY1ODEzMzk2ZDU1ZWI2NTE3N2VhZDljMjkgbGVnYWN5LXRydW5rCisxNDQyMCBmNTNmZWMwYzc0MmJmNWI0NGI0YmNlMDNhZjQ3NmFlYWVhYzRhN2EzIGxlZ2FjeS10cnVuaworMTQ0MjEgMjllNzRjNzBkZTE4YWZkNTNkOGUwMjhkMjFmMGZjNGMxOTAzNTVmZSBsZWdhY3ktdHJ1bmsKKzE0NDIyIDUwYTZhYjNmYTAzNmEyZGQ2Mzg2OTE0NjM2ZGFhNDkxMjVkNDMwYmUgbGVnYWN5LXRydW5rCisxNDQyMyAzNjc4ZGQ2ODU4NjcwNWQ5Yjc5N2EwYmZlM2Y2M2JhMDE5NjkwOTYyIGxlZ2FjeS10cnVuaworMTQ0MjQgNDQ5YjA3NGMzMDUxYjE3MWJkMTU2OTRhNDAzZGFiYzk2YjY3YTM1MSBsZWdhY3ktdHJ1bmsKKzE0NDI1IGZlOTYwYWQzZGI2NWJjMjQwOTZiZDIxYzUwYmM3ZjQ4ZTgwZmI4YmIgbGVnYWN5LXRydW5rCisxNDQyNiBlNzdhMjg2ZDBlYjEwMzBkZDNkMzFhOWY1MzIxOWFlYWZlNjVjMzc4IGxlZ2FjeS10cnVuaworMTQ0MjcgYzIyODZhMWMyZjI5NTg1YjRhNjJmNTViNzk0YmFjYWYzY2VlMmEyMiBsZWdhY3ktdHJ1bmsKKzE0NDI4IDU3Nzg4ZGExNjQ4ODk2OTRmMjdjOTQ2N2ZjMjQwYTNiMzYyNzc4MjYgbGVnYWN5LXRydW5rCisxNDQyOSBmZmJlMGEyM2EwZjE3NThmZjkzMDY1NjBjNTQyNGVhZGRmOTY5NzRhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQzMCBiZDE2MWE5MDhiM2JkYTVhMGM0M2FiMGVjNDMyYzY5YmFmZTA4ZTE3IGxlZ2FjeS10cnVuaworMTQ0MzEgNTcxNjc3MzFkMTI0MmUzODcyNDI4NzcxMmFiMGJiZGUwYWY1MDM4MSBsZWdhY3ktdHJ1bmsKKzE0NDMyIDMwMjI4NmIxNjBhN2EyNjhlMmZjYzU4Nzc0ZjcyMzRhOTJmY2Q2ZTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDMzIDhkMGIyZmVkN2Q1NTk4MWMyZDBkNTllMGY1NTM1YzAzZjIxYzg1MjggbGVnYWN5LXRydW5rCisxNDQzNCBjZjhmYTkyZWJmM2Q5NGU0ZGExMGQ3NzQ5YWRhZjVkYzk0YWVjZmViIGxlZ2FjeS10cnVuaworMTQ0MzUgZTJiNjMzOTkxZTAxMzU0Njc5NmU2NDMyZmMxOTk1ZTZiMjQyMzBlMyBsZWdhY3ktdHJ1bmsKKzE0NDM2IGZiYzEzZmI4MDM4Y2E1OTVmNGQ1Y2M3Mjg1ZGZjZTg2NDM5OTU5YjIgbGVnYWN5LXRydW5rCisxNDQzNyAyMGNhNzIzMGFlM2Y4YTk1NWY4ZjkzN2Y1NzA4ZjYwNWU5ZmQwNzQ4IGxlZ2FjeS10cnVuaworMTQ0MzggNmU1ZWE3ZGNmMWY1NWI2MzdkMzJlMGUzM2ZmNzM0NmEzNjM4ZDE3ZCBsZWdhY3ktdHJ1bmsKKzE0NDM5IGVhZWRhNDYyMWY3ZGNkNTU0ZTZjOTlkNWIzNGUwZWQ2ZTVhNDUzYzQgbGVnYWN5LXRydW5rCisxNDQ0MCA4NGY3N2MxOWQxNDNiNGIxNDJkNWUyMjNlNGYwOTg2MWY1MjRhYjViIGxlZ2FjeS10cnVuaworMTQ0NDEgMDM5MDJiYzAyMTRhMTUxZDU4YzQ4ZmM2YjYyMWI1MjQ1MjY2NGI2YyBsZWdhY3ktdHJ1bmsKKzE0NDQyIDUwZjEyODgzY2RkNzljYmY0Mzc1ZjM5ZTc3MDdjZDIxZWQ5Njk0Y2EgbGVnYWN5LXRydW5rCisxNDQ0MyA0NzZlYWEzOGUyZDZhYTc3ZThmNTI5N2I1MmE2NzY4NzBiNGM5Mjk3IGxlZ2FjeS10cnVuaworMTQ0NDQgYjdiY2EwNTBkN2RlYmNmZTYwZDNhYTAwNDg3MWQ2OTYxZDk3ZGI5NiBsZWdhY3ktdHJ1bmsKKzE0NDQ1IGJmMTUwMWNmNWYwODJkOWI1YmRjNWI2ZTVjNzM1MDJmMDhiMjgzODAgbGVnYWN5LXRydW5rCisxNDQ0NiBiZTk1MDBlNjQ3N2ZkMzE2MDg2NTViNzlmYjU4NGE3MjlhMTFlOGY2IGxlZ2FjeS10cnVuaworMTQ0NDcgMTlkZTZkMTk0YWNlOTgzN2NjNmE1NTM5YjIyNGE0NWJlZTJiMjU4OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NDggYWEwN2M0N2Y2ZWU4ODI4MTA0MzczY2JlYjU2NTNiYzY4YTFmMWNjNyBsZWdhY3ktdHJ1bmsKKzE0NDQ5IGM1ZmI2NTA2ZWVjNDBlMjhhMzRlYzZmZTYzNmFjMWRlZjA3MDRlODAgbGVnYWN5LXRydW5rCisxNDQ1MCBmYzBmY2VhMTRiYTA3MjNlNmRmMjJiYjYzMzY5NDkyNDMyNWM1ZWE5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ1MSA4ODc4YzA5NmZhMTllNzM5YWY2MDVhZTc1ZTY2YTAwMGE5ZDZkYzQ1IGxlZ2FjeS10cnVuaworMTQ0NTIgN2MyNTVlN2EyMWMyYzU3NDg5MTNhZDhmY2U1MWJiNjcwYTk4MjU1MyBsZWdhY3ktdHJ1bmsKKzE0NDUzIDM2ODRkNWM3OTAzYzNlZGRlNzU4NTRlYjJmZGUyYzg3NGU1NmY5MTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU0IDdiZWQxZjBlYzYxYWM1NjhhMWZiOGEwYTIyYjFiZTkxMjFiNDdhODIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU1IGM2Zjg0Y2QxZmY3MDVhMGU1NDI1OGJkM2IzODhhZGYyZjAyNDZkMDMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU2IDNiNmQ4YWQyNDY4ZTM1YTI3Y2MwYjdkMTEzZDljZWRmM2VlMzRjMWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU3IDRkNWQ1Y2ZhOGE1MzkzMWIxM2EwZTNiMmY4N2QzNjBmZjdjNDgxOTcgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU4IGViNDgzZDlhMGY2MmNmMDI4OTVkOTQzM2YwMzg2NTQzZmQzYmI0YzkgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDU5IDQwODBjN2EwZjFlZDZjOWY5ZDE3MTFhZmM2NTFhZDYzYmQ0ZDFjYTggbGVnYWN5LXRydW5rCisxNDQ2MCAwYzBiZmFkZmY3N2FjYTM0NTFhZGQ0MmRjYmU5NDI2NzcyMGNjMThjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2MSBiMmQ0YjJlMDNjOTk1M2ZiNzA4YTEwZjA5Nzk1N2E3Y2ZkMWExNWUzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ2MiA5NGI2NDIwNzkzOThjYTY3NjU2ODRjZDVjYzdmZGE4YjE1NDM4ZDk4IGxlZ2FjeS10cnVuaworMTQ0NjMgNzE4ZDIyZGEwMDE3ZjVlMjZkODVlODY2NmQ4NWFlY2I3NWQ4Mjg5YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjQgZTI1MTJkNGZkNDcwODMxZmU3NDM1Njc0MTcxNmUzNmEzM2E4MjhhNCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjUgNjgzNDQzZDhkYTNiOWQ0MzllNTRkOWFjNDcxMmQ0ZmY4YTQzYzQ5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjYgZmU3NjMyZmJkNGY1MzY5YjdjOGE0YjdkMjJkNDUxNjNlN2U1YmI4YSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ0NjcgNTk0YTc2YmI5ZmYwMzE1NzlmODU2YzE2N2ZiNzBjNmMwMTA5MmMzMyBsZWdhY3ktdHJ1bmsKKzE0NDY4IGEwMzEzMDAzY2IyZDUyMDY3ZDBjNjBkYzBmY2FmMmZiYTAxZjg1YTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDY5IGRkMGFlMTBiNzIwNjBmNTc0ODI5ODM3ZjJiZWQzYTQxODkzZjk3NTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDcwIDljNTljYmEwNGQ4NThhYTZhNjdlODY5ZmQxMmY4NzAwZTBhNGEzZTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDcxIDUxYzIxNzQ1NDk1M2Y4MjM0YWM1ZjMzZjVjYWUxOTU0MTM4MzI3MWMgbGVnYWN5LXRydW5rCisxNDQ3MiAzZTUyZjNkYmUzZGNkOWYzNmY4NzhiODU1NDYzOWI1OTA5ZTM2MzQ0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDQ3MyBlY2RjNzgxNDg4MTE4OTczMzJjMWFlMGZkYjI4NDZiY2VlMzQyYWNjIGxlZ2FjeS10cnVuaworMTQ0NzQgMTg5ZGVlNzBkMzJhMGNiMDdkNThkYmIxMTFkMDE1Y2MxYTE0MjQ3MSBsZWdhY3ktdHJ1bmsKKzE0NDc1IGEwNDY5ODNjYjU3NjEyZDkzOGE3MGU5NGFiMTk4OWYyMGRhZjgwNWMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDc2IGJhMjExMTc0ODAzOGUwMjg1ZmI5NmM1ZGYwMWZlYzQxMDhjZTQwYWIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NDc3IDMyODdjY2QwZGQwMTMzZWU3NGVkM2E5MzEyZDA5NTkyNzE2ODE1NWYgbGVnYWN5LXRydW5rCisxNDQ3OCBkMjI5YmI3OTI2NTkwMDEwM2E5YTJlOGZjZDA4MzQxYzI5YjUyOTE1IGxlZ2FjeS10cnVuaworMTQ0NzkgMWI3MzFlY2Q5ZWQzMmJkYzI1OGU1N2VkY2IwYTNlYWFjZDcxYzkwOSBsZWdhY3ktdHJ1bmsKKzE0NDgwIDJjNzI1NmUzOTg5Y2Y5YjA2ZjI4NzI5MTBjZjkxNjRkNTRlNTQ3MjcgbGVnYWN5LXRydW5rCisxNDQ4MSA3OTdkOTk2ZjdjNmRhMDA5NGJmN2Q0YjkxYjIxMzM3ZWVmMzk1NTAxIGxlZ2FjeS10cnVuaworMTQ0ODIgYjBjNGYyNjFlNDcwMzI2Mzc1NzNjMmFjYjk1YWQ2YzMwZTE1MWJhNiBsZWdhY3ktdHJ1bmsKKzE0NDgzIGNhNTM1Mzg2N2JlMjMzMjIwY2IwZWM3ZDQzMGQzNzM3NTkwMTJkNjIgbGVnYWN5LXRydW5rCisxNDQ4NCA3MjY5MjE2NzQ2ZDAyZmFkZDk2MzA5NjRlMDY0YTM4NDY4ZTdjM2EzIGxlZ2FjeS10cnVuaworMTQ0ODUgOTFjZmI2ZTY4Y2E0NzE5ZWEzZDA5YjNmNTg0YzU4NDZmMWZjYzUwMyBsZWdhY3ktdHJ1bmsKKzE0NDg2IDMyZjk3NWNiOWY1ZmYyMjA2NTZhNDIxNjMwZGJkNzY0OGRiNzVjMWIgbGVnYWN5LXRydW5rCisxNDQ4NyBiZjZmMTc0NmIxMGJhMGZmYTFhOWEwYzdlNGMyNzY3NmQwOThiNGZiIGxlZ2FjeS10cnVuaworMTQ0ODggZTExOWMwMjUwYjIwOTE1ZDMyNjM1ZTU4NTRhZjA2MzEyOTIzZGQ0NiBsZWdhY3ktdHJ1bmsKKzE0NDg5IGMwNGUxYzcwZjBmMTI2YTEyZTVhMWFkY2I0MjZiZWUwOWQ4YTgyZWIgbGVnYWN5LXRydW5rCisxNDQ5MCBlMTIzZTY1ZWYyNTViODQ2OWIyYjI4YzBmNTAxYTdjNWUwMGJjM2VlIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NDkxIDI1MTc1NjlhYTFkZDQxYjhlYTJlMjNhZjgyNWIzMTA3ZjRjYzAyMjQgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ0OTIgMTA0NzMxM2NlYjViYzk4MzM0OTlhZTQxODAxYzJiMzhiMmY5MDI3NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDQ5MyAyNTNlYzk1ZjM5MWUxYzVhOTlmMjYzNGUyODcxNDE5MWE4ZDIyM2JmIGxlZ2FjeS10cnVuaworMTQ0OTQgZTU2NzgwYjc0MzZhNmE1NzQyNTk2MGRlYTliZDAwYzdhM2M0YWM1MCBsZWdhY3ktdHJ1bmsKKzE0NDk1IDhiNzBlYWFhZGY0YjQwZDg2MzQ3MGMzMTE4MTNiNDA5YzQwMzE4ZDEgbGVnYWN5LXRydW5rCisxNDQ5NiBkMTVkOGY1MTQxYTg4OGZiMTY0YTRkMzM2MGI1MDhhMzAwNDJhNTkwIGxlZ2FjeS10cnVuaworMTQ0OTcgNmY5Nzk5YTE0NWU1ODJlNDY1ZTg4Nzk0NTY5ZjdlZTE5YjE0NjJkNCBsZWdhY3ktdHJ1bmsKKzE0NDk4IGVjMDYyYzdjMzhhNTk4MzY3MTNhMzRjZjEwYWM5YjQyOTljMTQwYTUgbGVnYWN5LXRydW5rCisxNDQ5OSBiNzBkZWU3MTUzNGE2Y2E4MjFiN2FiYmJmNTEwOWI3MTc1ZmMzNTM1IGxlZ2FjeS10cnVuaworMTQ1MDAgMGNkZTcyZjZlYWNlYjBiZDY5MGI1Nzk0ZTM2ZmFkMjUxZWUxODQzMCBsZWdhY3ktdHJ1bmsKKzE0NTAxIDg5YjUyODk1MzEwYzdlMjQ3YjdjNTMwYmJjNjJjMTk0ODhhNmVlNzIgbGVnYWN5LXRydW5rCisxNDUwMiA5MTk3MWViMjE1MjdmYTk0MWUwODk4Yjk4OGNkZjAwYmRlYTFlOGIwIGxlZ2FjeS10cnVuaworMTQ1MDMgZTY5NWI1MjI5NWE4NmE4MWIwZDJjNjc5OGViMmY2MTU2ZDI0ZmNlNCBsZWdhY3ktdHJ1bmsKKzE0NTA0IDc5ZWExOTA4NWZiNmFiOGM4M2I3OWVmNmNmMGRmZWY3OGQyZGRiN2IgbGVnYWN5LXRydW5rCisxNDUwNSAxNDUxNTM5YTI3ZWNmNGFkZWU0NWQ4NzJiMzJkZWE2ZWNiZDQ1NzViIGxlZ2FjeS10cnVuaworMTQ1MDYgNzgxZjQ4MjkxYTI5NjkzZmU1MDNmYzQyYmEzMmI4MmEyY2M5MzM5ZCBsZWdhY3ktdHJ1bmsKKzE0NTA3IGJiYjc1MWY1NWQwNDhlYjAwZmE4NDM4M2U5NjU0MTExMWQwYjRjMjMgbGVnYWN5LXRydW5rCisxNDUwOCAyZDg3NDA2NDdlOTk4YzNlMDNmYmFhYjkzMGU0YWM1MmIwOTc2NjA3IGxlZ2FjeS10cnVuaworMTQ1MDkgOTg2YTg3MzYzYTY2OTEyYTNmZjgzMjQ0MzdhMjI1YzcwYTc0Y2JiNyBsZWdhY3ktdHJ1bmsKKzE0NTEwIGUwMDU5NDM2NmVjNGY3NDQ2M2U4NzE4ZjkzMjNjMDJjOWVjMWFiM2QgbGVnYWN5LXRydW5rCisxNDUxMSA1ZTFmNGY3ZDc5YTc1NDAwMWEzNDk0ZWU2M2RkYWE5OWZkMTliYjdmIGxlZ2FjeS10cnVuaworMTQ1MTIgNDFiODVhMjZjZWVkYWE0ZWZjN2VmMmQ1ZTFlOWQ1YTEwM2Y3ZDkxNCBsZWdhY3ktdHJ1bmsKKzE0NTEzIGNhMzUwYTcxOTg4NzMzZWQ3NTdlYWYxNzhkN2RlOTQ4NTE2NDFkZWQgbGVnYWN5LXRydW5rCisxNDUxNCAyZmE4OWU2NTdhNGVkZGVmMzEwNzk0NTc2NDEyZDNmMGMzNTkzMmQwIGxlZ2FjeS10cnVuaworMTQ1MTUgMDY5ZWE1NzM2ZmY2MDdhODFmMzgyMzRiOTZjYjUwOWUzYjJkZDQyNCBsZWdhY3ktdHJ1bmsKKzE0NTE2IDA2MTA0YmNmMDZhNjRmYjA4MTkwNjYyZDc3MDY5YjQ1YmQ2OGEyMDcgbGVnYWN5LXRydW5rCisxNDUxNyBkN2U2NmVmMzQ1ZDA3YjljY2JhOWNjNDM0ZDU2NzRjZDdmYWQwY2I4IGxlZ2FjeS10cnVuaworMTQ1MTggMzJjNTllMjg4OWM0Y2M0YWEwMTg2YzAyNmMzNjY3MTUwYWRiZGExMSBsZWdhY3ktdHJ1bmsKKzE0NTE5IGQ3ZWNhNWIwOTYwYWJiMDIxYjQ4MWVlMTJhNWNhMzk4Nzk4ZTc3MDIgbGVnYWN5LXRydW5rCisxNDUyMCAyZmU5NTY4YmRlZjJiOTFiMWI2MDc4MTZjOTkxMmQyZjcyMTkwOTQ3IGxlZ2FjeS10cnVuaworMTQ1MjEgYzkwYWM2OTgyMTRkYjczMGI1NDdjNWZkYmU1NWI1YjE1YTg1ODBkMyBsZWdhY3ktdHJ1bmsKKzE0NTIyIDQ0NGI3N2NlZWJlNjkzMTBlMmNlN2MyNmVkYWMyM2I5OWQ2YWM5YjggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTIzIGI5MWQ4NDhjOWExYWQ0ZWI0M2RhNmU1ZGNlNjdkODIyZjRiZmM0Y2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI0IDcxNDIzMjA5ZDdmYzJjNTFmN2U4MTBhZjNmM2EwNzc1NzQ1MGFiZmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTI1IDdlZDEwNGM0MGRiMzM2NTk5ZTI1ZjA1ODYxZGQ1NDg4M2EzYzM1YTUgbGVnYWN5LXRydW5rCisxNDUyNiBjYWIwNzFlOTJmMzIxZjUyYWM2YjMyYzk5NzE2NzliY2M0YTdhNWJiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDUyNyA1MmEzYjQ2NDU3OGYyZTg3MjM0ZjA3ZGQ0YTQ2NjE3OGU2Y2UwYWI4IGxlZ2FjeS10cnVuaworMTQ1MjggMjg2MzAzZjAwNTQ2YmNlZjUwNzc2N2I5OTZkYWI4NDRjMGJlMWNmZCBsZWdhY3ktdHJ1bmsKKzE0NTI5IGMyN2QzZThjNDVjNDY2NjdjY2FkOThkNTJiY2QxMzVjYTg4YzNjY2EgbGVnYWN5LXRydW5rCisxNDUzMCA1ZDA4NzllMWZmMzdjNTdlYTAyMmMzZmVhYzRkM2U1MzhiNzNmODU2IGxlZ2FjeS10cnVuaworMTQ1MzEgM2Q3M2ZmYzEwNWQwYTQ4Yzk4ZGNkYmE5ZmU1MGZhMmM0ZWQzZWNjNyBsZWdhY3ktdHJ1bmsKKzE0NTMyIGE3ZDYwOWVhOTBjYzY4MjY2NDBlYmM1NzE0ZmYyY2VjNTNmZGZjNDUgbGVnYWN5LXRydW5rCisxNDUzMyBkMjc2ODRhYjIxNWE2YTVhY2I0MDc0NzQ5OWVhNDlkMmQwZjI4MDFiIGxlZ2FjeS10cnVuaworMTQ1MzQgZWZkNjMxNWFlNjc4ZDYyZTU1OTc0NTNhZjJiZWFmYjI3NTEyZGIxYSBsZWdhY3ktdHJ1bmsKKzE0NTM1IGRjNjVjNWY2YWQ3YzE0Y2E0NDY5ZjZlZDI4ZmYxMzRjYjA5ZWMwODcgbGVnYWN5LXRydW5rCisxNDUzNiBkMjRhZDU1MDM4MzFhN2Q5ODE5NTA3OWEwMjY2NTQwZGU2Yjg4Yzk1IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0NTM3IDliZWQzMzU5OWMzMzljMTVhMjZmMTBiMzllMDM4M2Y5MmMyMmNjNTYgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ1MzggOWM5M2YxMGRjZDY5NjhjZDkwNGNjNjRkZGI5YzM1OWJjOWJmOTk5OSBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDUzOSA4ZWU3NTlkNzk5NjQ2ZWQxMTQyMmZlZTFmZDIwNzM3YjJlZWYzNjVmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU0MCAwYzQ3MjllMzhjM2RiOGY0OGQwZGRlODI1MmQ1YzliMjlmMmY5YTAwIGxlZ2FjeS10cnVuaworMTQ1NDEgNTRjZjNiYjNiOGI3Y2Y0YzcxMDFjMTcyMzY5MTRlOTg0NGNmZGRmOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDIgMTBmYmZkMDdmMzg5NDFiM2RiM2MwNmU1ZDMyZWRjMDgzNTI1NmFlNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDMgYTM4ZmJjYjdkMzM1NjgwZjZhNTkxYWFkMTRlYjEzMjljNWJlZTkwZCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDQgZTM5OWFiY2M1ZGU2MzBlYTg1NWNkYjYzMDc4NTMxMWFhMGI2YzM3OCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NDUgNzU4YTg3ZjRjYjJjOWU4ZDhiNjc5NDgzZTgzODliYTQ2NTdkYWJlYiBsZWdhY3ktdHJ1bmsKKzE0NTQ2IDM5YmIwMTc1NTA3OTA5NzIzYzI0MzA4YWI2N2QzNmYxOWJiNzExMDcgbGVnYWN5LXRydW5rCisxNDU0NyAyNzBhMTE0ODhjNmM1YzNkMmVjOThlNTE1NWU2MWMzNDNjZGRkNmViIGxlZ2FjeS10cnVuaworMTQ1NDggODFmMTA2OWUxNTU4Njk5MzljNzNkMTIzOTZjMzVjMTFhZDNkYmYwMCBsZWdhY3ktdHJ1bmsKKzE0NTQ5IGE0NTcwZjQwOTg3MTBmNGZkN2VjMzExYmRjZWE4OGVjNDBmMDk5NTUgbGVnYWN5LXRydW5rCisxNDU1MCAxYTQ5YjYxNDRmMGRlMzI1YjU5NzhkMTJjNjQ4M2UyZTAzY2QwMGM2IGxlZ2FjeS10cnVuaworMTQ1NTEgOTQzMmQ4YjE1Yzk3MTRmZDI3ODRjNzBjNzFjYTg2YjI0ZjkzOTZkMSBsZWdhY3ktdHJ1bmsKKzE0NTUyIGU4MmE5NjMzMDc4YmM5MjU1ZjhjM2Q1NTI1NGVmYTQ3NmQyOTVmMjggbGVnYWN5LXRydW5rCisxNDU1MyAwMDE2NjMzZmJkMzIwYTFjNTg2N2QzNTkyYWQ2NDZhYTE1NDUwMGUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU1NCAyMzEwOGNjZTE2OWI0NWRmYmIzZWRhYzkyNjVjN2JlMDI2OThkM2I0IGxlZ2FjeS10cnVuaworMTQ1NTUgZWY4YjA2MmI1Nzk4MDQ0ZmYzMzM0ZmFkZDEwYTc1NTA4ODNjZDVlYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NTYgNjEwZDdkNjQyOTE3ZTVmY2JkMTNiNjQ2NzljZTAyNDdjNzc1NTFiMiBsZWdhY3ktdHJ1bmsKKzE0NTU3IDc4NDJlY2Y1YjQyNDg5ZjJiMjMzOGUyZmYzODZiOWUxYzc1MDAwYzggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU4IGNmY2ZhYTM5NTBkNjQyYzlhMjBiMzI4YTQzZDYzZjY4MzgwNmEzZTIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTU5IDU4ZDFlNzc5MTk4MDViODdlN2UwMWE2NDBmYjA2M2Q4YmQyMTZkYzYgbGVnYWN5LXRydW5rCisxNDU2MCBjZDU3Zjc3NmMxZGY4NTE1Zjc3OGEwMTUxN2JiNzRiOTkzYzMwZGE5IGxlZ2FjeS10cnVuaworMTQ1NjEgMjgwMmZiNTJlOTliYzc5YTY1YmQwMzRmMWU2NzMxMDhiYTlhMGY5NiBsZWdhY3ktdHJ1bmsKKzE0NTYyIDAxN2U1OTJjMGZkMmMzZTg1M2M3NDM5MDgxN2UzMTY3NjM1OTY1YmQgbGVnYWN5LXRydW5rCisxNDU2MyA0Njc5YmNlZjdhNGY2NDVhYjM5ZWY4YjViMTgyMTNhZGUxNTBlMDcwIGxlZ2FjeS10cnVuaworMTQ1NjQgNzIzZWZjZGNjZTFiZGE1ZDA2YjJiYWZjOTIzYjk1YTA1NjkzNDNiNyBsZWdhY3ktdHJ1bmsKKzE0NTY1IDYyZWJlOGM3MTU2NTliMWZkMjU5OWE5ZDZjMmQzMDdkYzcyN2JmY2YgbGVnYWN5LXRydW5rCisxNDU2NiAwMWQ1YjdkMTFmYzEyOGUyY2UxNWIwMjM1ODIxYjQzMWVjODdhOGY5IGxlZ2FjeS10cnVuaworMTQ1NjcgNjkzMmUxOGFmZjk4YWQ3ZjE2ZjA5ZDkzZGI0NzBjZmZhYWJjODk1MyBsZWdhY3ktdHJ1bmsKKzE0NTY4IGY4NTE4ZjA2MGJlZGY4ZjhmNWNmZWVlYmZjNmE4YzA5NmRhZTAzNWQgbGVnYWN5LXRydW5rCisxNDU2OSBhNDBjMmZlY2Q1MjY5ZjNhZTgyNjEzODgzZWRhYjYyOGFhYjMwODQyIGxlZ2FjeS10cnVuaworMTQ1NzAgMGE0YmFjY2JlOWZlOTM0ZDAxYWEzYmUwODViNDQzNzFhNGM3ZGJjMCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzEgNDliMTA5YjQ1MGRhN2Q3NmE5MTMyMDExYjIwMDcxY2Q1NTQ5OGM5NCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzIgYWIxZWYxYWE0MDJlYTUyMzZiZTI1YWY0MDViNzkxMTY0YWJjN2M1MCBsZWdhY3ktdHJ1bmsKKzE0NTczIGIzY2EzY2FhMzc0YzUxOGJiNThkYzViODhkYzRlNmE4NzExZWRkZTUgbGVnYWN5LXRydW5rCisxNDU3NCAxMWFlMWVmZWM4NzFhMzdhMGNmN2U1OWM1NjkzZGUwNzBiMzYyOGQzIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NSBkNzRlMTJkNDY1ODBkMzdiMTc1NTkyNWU1Y2Y0MmY1OTQ2MGM2NGRhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NiAwMGE5ZWY3NDQ3YmFhNTM5MzI1OWY4ZjczZDdhNzUyMzIzYWJiN2QyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDU3NyA4NTVjNzhmNWI1ZGRkNGZjNTNhZjZiMjhhODViNWNhY2U5ZTdmYWUzIGxlZ2FjeS10cnVuaworMTQ1NzggOTk0OGZkNTMyZDNiNGNiMmE4NDJkZmE3NmViOWVmOWRmODdmOTY4MCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1NzkgYjk3NWEwNTZkZWI2NjY1YzdkOWI4MzE1YzRmYmU2NzIxNDhlYjVhZCBsZWdhY3ktdHJ1bmsKKzE0NTgwIDBlY2E1NjdlNTMyYzI4NGI2ZjVkM2FmY2UxMTFjZGU2OTY5MDUxMjAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTgxIGZlNDg1YTVkMDQzZmM3YmI3ZjViNTQ3OTE0N2IxZDRiYjgxNTQ0ZjIgbGVnYWN5LXRydW5rCisxNDU4MiBjMGYxOGUxMWY0ZWYzMjkyMGQ4NWJkYWVlNzhhZjczNzA2NjhlYjI0IGxlZ2FjeS10cnVuaworMTQ1ODMgYzE2NzExZmRkOTcyNDQzM2M3Yzk5MDEzYmY0ZTMyMjQwYWMzZGQyMCBsZWdhY3ktdHJ1bmsKKzE0NTg0IDFjOGE5ZmFhMzUwMWVjNDcyOTFmZmI1ZmM4ZTI2NjUzMWM5MTJiNGIgbGVnYWN5LXRydW5rCisxNDU4NSBjOWQ4N2E3YTcwYjBhMjkzMjQ5MzM0NWJiM2EzM2E1YWIxMDExMzcwIGxlZ2FjeS10cnVuaworMTQ1ODYgYTZlNWYwMjc0ZTUxNzJjNWQwOGUzMmEyMzJlNjVlZTdhYzg1YTFkMCBsZWdhY3ktdHJ1bmsKKzE0NTg3IDc5MjJkMDg0MjZjYWFlN2EzYjdkMTg1NWMwMTM1NTcwZTk2NzMzZGYgbGVnYWN5LXRydW5rCisxNDU4OCBkMTM1OTgzMWU1ZjI2NGM5YWIzODg4OWEzMjU2YmZiM2RkMjY4OTllIGxlZ2FjeS10cnVuaworMTQ1ODkgNWIwM2M1Mjc4MzE3ZDY0OWE0MGI0YWQ0OTgwZDdmZGZkNjUyYzkwZSBsZWdhY3ktdHJ1bmsKKzE0NTkwIDE1Y2JiNTdjYTc0NzI1N2RlMGZiNWMwNGQwNjk5MWE0OWQwNTE4ZDAgbGVnYWN5LXRydW5rCisxNDU5MSBhODUxZWYzMjZkOTMyZjcxNDc4ZDhkYTZjMmQyY2RjZDEyYjY0ZDkyIGxlZ2FjeS10cnVuaworMTQ1OTIgN2NiNDkxZTM5OWU2MTlmNGU3ZjU1OTVhYzQwZGYzNzdhNzc3NmZhYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ1OTMgMjljNWM1NDE1ZGE3MWRlY2JlYmNkODI1YjMwOGEzYTkzMDZkYzUzNCBsZWdhY3ktdHJ1bmsKKzE0NTk0IGY4MmI5MjNhN2E5NmMyYWY1ZDQwZGYzOWJhZDRiMTA1MDVlOGQ1ZGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk1IGNlMjY5OGQ4ZGZlYmY2ZDg4NTJhNDYwZDUyYjVhNDYzNDU0Zjk2MmUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk2IDA2ZmIyZGQzOGQ3ZDI5OTkwYWNiNzJjZjI2NzgzYTNjZjE4YjRlMGIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk3IGNmZWMxMWI0YThhNzJjYmU4YTcyZjcwN2EzMDBmZDgzMGE2ZjkxOTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NTk4IGFhMGQwYjFmMWJlM2UxMWI2MmExOTAyZGNkNzQxY2I1YjJjYTMwNTcgbGVnYWN5LXRydW5rCisxNDU5OSA4Y2M0NDI4YzdiYWQ5MWU2NGZkOWEyNGU4ZDUwMmZhYmJlNTUxZjNiIGxlZ2FjeS10cnVuaworMTQ2MDAgZDA5N2JjNWFhN2YzNDQ0NGU1ZjRlNDk5NmUyZGJiOWEyMDIwNjhiYyBsZWdhY3ktdHJ1bmsKKzE0NjAxIDRiOGJjOWFiODE3NTU1NmY5ZTg3OTM4ZThjZGJiNzljNmVlMzdjNDIgbGVnYWN5LXRydW5rCisxNDYwMiAyYTYyODA2Nzk2OWI5M2NhNTYwNGEzYjdmZjJmNDI5MzJhZjlkZmNmIGxlZ2FjeS10cnVuaworMTQ2MDMgYTQ2OWFhOGIzMzJhNTg0NjM1NTc3MWVkMWU4ODlhOTlhMDYxNmJmYyBsZWdhY3ktdHJ1bmsKKzE0NjA0IDc5YjZhNmE4ODJkOWU4ZDU3MTM3MDkxZGFhYWQ3MDZmZmFhM2VhNzggbGVnYWN5LXRydW5rCisxNDYwNSBiZGI1ZjZhNTI0YjVlM2Y2NDE3OTE5Nzk4ODNjMjVkYmU5MDE3NTQ4IGxlZ2FjeS10cnVuaworMTQ2MDYgOWQ4ZjQ3Zjg0NDdmOTc2MjAxMzhkMTRmYWNmNmRhMmQ0N2RiZTAzMSBsZWdhY3ktdHJ1bmsKKzE0NjA3IDFiNTRiMjEzNDZkMjRmYTI0NjkwYTc2MmNlZjFiN2NiYTI4ZGIzMGYgbGVnYWN5LXRydW5rCisxNDYwOCBhZWY1YTdjNjIyOTFlYjY5ZWU0MzhlODdjMWJhYTMyYzI0YmRmMjU3IGxlZ2FjeS10cnVuaworMTQ2MDkgMjVhZGM1YzhkZDY4MDA0ZTNmZjE3ODBkNjAwM2MwYTFhOTE5MjFjZSBsZWdhY3ktdHJ1bmsKKzE0NjEwIDY4ZTBlZjA1MjgxNTA1OGYwMjI1NDc4YjQ5MzlkMmU5NjllZDI4MDkgbGVnYWN5LXRydW5rCisxNDYxMSA3YmQ5N2MzZGQ0MzJmZDk0NTk4ZDhjY2RjNWRkMzI0ZjYxNjBmOWE4IGxlZ2FjeS10cnVuaworMTQ2MTIgYzk0NTcyYTUwOTk1MjMxOGVhMTM4ODMxNDA2YThkNThkYzRiZmRiNCBsZWdhY3ktdHJ1bmsKKzE0NjEzIGMwZDM2ZjkxNmFmZDhjYTcwMWRkNTY1ODhkNjQxZjkyY2FjZGFlNDEgbGVnYWN5LXRydW5rCisxNDYxNCBlZjk4ZWU2YWViNDJhZTAxZTRjYzBmNjhmOTY1M2JlMTFhYTM3MmYwIGxlZ2FjeS10cnVuaworMTQ2MTUgMDQ1NmE4YzJlYmY3YzJhOTcwZjE2NzM2MTYyYmIzMTRiZDE5MDIwYSBsZWdhY3ktdHJ1bmsKKzE0NjE2IDczZGZiZWUxNTAyNzFmM2E3YTBiZGY4MTkyM2Y3NjljYmE2MDg1MTcgbGVnYWN5LXRydW5rCisxNDYxNyBkZTg0MDQ1NzNmZTUxMmM3Y2RhNjljYzYwNGNjOGM5M2MxNTExMTI0IGxlZ2FjeS10cnVuaworMTQ2MTggZjZkMWQwZmRjMWM3YzcyMDFiNDkwYWM3NTk2MDc4NDA3NzM3YWM2NyBsZWdhY3ktdHJ1bmsKKzE0NjE5IDQyMWIxNjIwZjU4MmY5YTdiODNmYzNiOTBjYWE4ZWY5NDlmYjMyNTQgbGVnYWN5LXRydW5rCisxNDYyMCA4MDIzNzBhNjBlZjdlM2Q3MWY0YWE3ZGJiY2I0ZmU2Yjk2NzU4YTRmIGxlZ2FjeS10cnVuaworMTQ2MjEgNzM0ZjNjMDdhNmJiOWYzZDVjYzI3OTIyZWQwNzJjNjkyMGU2OTAxYiBsZWdhY3ktdHJ1bmsKKzE0NjIyIDFhNThlNmZjM2E5NTRkZjc5Zjg1ZjM4ZDEzMDMzODAxMjQ4NTU5NTUgbGVnYWN5LXRydW5rCisxNDYyMyA4MjY2OTBiYTFhZTY5YjhiNTg0ZTRmNjk0N2Q2ZmVkYzU1ZTMzZTIyIGxlZ2FjeS10cnVuaworMTQ2MjQgMmE0MGU5Y2FlODU5ZGNhMDQ4OGZkY2RlODE2OGM4ZjUwOTg1YzIyZCBsZWdhY3ktdHJ1bmsKKzE0NjI1IGQwNDA0NzgwZjAzYmY0ZTJmMmEzMjA4Y2VlYTZhYWFkYjM0ZDYyYjIgbGVnYWN5LXRydW5rCisxNDYyNiA1ZTQ4ZDgzYzBmY2UxNzIwNDE5YmFlZTYzN2EzZDA0NzczMzU5MGQ2IGxlZ2FjeS10cnVuaworMTQ2MjcgYTM5OTJhNzg5ZTJlN2JiMTU3ZTdiMjk4YTU3ZTg3OGE3MWVjNDU3OSBsZWdhY3ktdHJ1bmsKKzE0NjI4IDViMzNmY2EwMmI3ODViYjZkYjcwMTVjMTE1OTE3MDJkNThkNjA1NGUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjI5IGFkZGVhMTE1N2FhN2Y5MDcyOThiYWI5ZTk5NzA1MjI0YjI2NWRjZTEgbGVnYWN5LXRydW5rCisxNDYzMCBlMTA1MTVlN2QzNTZjY2JhN2Q0NzQxNjRjMTdhNGY1Mzg1MTg2MzQzIGxlZ2FjeS10cnVuaworMTQ2MzEgZjlkYjM2NTRhMWZkMDg3NjZhMDU2ZTM2MDM3MGVhNWY5YzdlMDBhZCBsZWdhY3ktdHJ1bmsKKzE0NjMyIDM5OGE0NTk5ZWVlMzNjZTliNzM0YzNjZTlhODQ5MzQxZmM2M2JjZGIgbGVnYWN5LXRydW5rCisxNDYzNCA2ZTNjODFiZDgyOTFlZGVhN2Y3ZjRkNzYwNDU0ZWRlNTI2NTQyZWJjIGxlZ2FjeS10cnVuaworMTQ2MzUgMjNmZDdkMTAwNjRlYjE2MjFmY2VjYmZhMDJmMmIwMTVkYTljNzZkZSBsZWdhY3ktdHJ1bmsKKzE0NjM2IGQ0NjYyZDM4MTc0OGFjNmNhNmI1NTBhZTMxMjY5ZjUxZGQ3MzVjYTMgbGVnYWN5LXRydW5rCisxNDYzNyBmOTE0MWJlYmVkNDhmNGU1OWExMWRiMTJjZTYwY2E1NDViYTBlMjVhIGxlZ2FjeS10cnVuaworMTQ2MzggM2U1ZmJlZjliMWY1MWNhNjE0YWVjNzNlMzM0MmNmZGM3YWI1YWI5OCBsZWdhY3ktdHJ1bmsKKzE0NjM5IDI0YzE4N2I5Mjc3Mzg0ODZhZjBhYjQ0ZTA2ZGQwMjNmZDFjNzk3MTEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NjQwIDc0MTA2OTA5MjgzMTliZDgxMmQ2YzIwYjI0NmI0NzNiODQ5NThlOTggbGVnYWN5LXRydW5rCisxNDY0MSA5ZDUzZmM4MDQzYmE3OWY1NGEyOTYwMWI0NDJkNmZkMTJlNjUyMDc3IGxlZ2FjeS10cnVuaworMTQ2NDIgYmU5OGUwNTVlMzlkOTkxNDU3ZGQ2N2M4ODhmYmFlYTQ1MTlhNDk2MCBsZWdhY3ktdHJ1bmsKKzE0NjQzIDI0MTk5YzFiOTE4MmEzNmNjNzkzYzI2NDQ1ZWEwYmVlNjNiZTljMDcgbGVnYWN5LXRydW5rCisxNDY0NCA0NDEyYzdhMzI0OTdmOTBjMjk3MWIyZDFkMGExYTBjNzVlZTEwYWFlIGxlZ2FjeS10cnVuaworMTQ2NDUgOWYyNjFlOTRiMmIyNWIwNDFkYmZmYTNlYjJlNTM1MmY3NDQxNTU4MSBsZWdhY3ktdHJ1bmsKKzE0NjQ2IDUzMDVmOWIwMWZjNzU0NTc4MDJiMTcxNjI3ZjRmOThkYmU2ZjkxNzQgbGVnYWN5LXRydW5rCisxNDY0NyA1MDc4MzNiMTgyMTNiNzBiN2MyMjNlYjk2ODYzN2Q1MmFhNTU1OTc1IGxlZ2FjeS10cnVuaworMTQ2NDggMTNiYzY4ZmFlYjY1NWI2NmRiNjUzZDQ2MWRlODBmYzcwYTE3ZjYxMSBsZWdhY3ktdHJ1bmsKKzE0NjQ5IDc0YjcyMTNmYjYwOTIwYTAxZTQyMWM5NDUwY2U2ZTQ2OTZlZjQwZmIgbGVnYWN5LXRydW5rCisxNDY1MCBmNzZiZjYxY2IxOWM0YTc4M2FmYTNmNzg5ODcwYWE1ZTkxNTY3MTU0IGxlZ2FjeS10cnVuaworMTQ2NTEgNTc0MjgzZGIyYjNkZGRlZjM2OWRmZDAzNjljZThhODhlMmIwMmQyNCBsZWdhY3ktdHJ1bmsKKzE0NjUyIGQwZTA2ZWZiMzE2NTFmMGU0Y2RjYjQzZjYwNzg3NzU1ODE5YTBhYTMgbGVnYWN5LXRydW5rCisxNDY1MyA4YmRjMjVkMjI5MjVjMjFhMTM2YzUzMzEwMTc4ZTkxM2RiZTA2Njk0IGxlZ2FjeS10cnVuaworMTQ2NTQgMjgwMDNhZmExYTJmMDkxZjMyZmZmMzNhYmIxNzVhMmYyYjI5MDg1MyBsZWdhY3ktdHJ1bmsKKzE0NjU1IDg3NmYzNTgyOGU4NzBhMmYyYTcyODg2ZjMxMjU5ZjJhOWRkOGQyNGYgbGVnYWN5LXRydW5rCisxNDY1NiA1MTMzNTRkODdhODVlNzdlMzExMzk3ZWU4ZjkwNDZiMzU5OWNmMGZkIGxlZ2FjeS10cnVuaworMTQ2NTcgOGI4OGUxYmMwZTFiNGIwYzgyZWM0MjNhZmFjNGUzMWRjZWVjYjBkNiBsZWdhY3ktdHJ1bmsKKzE0NjU4IDNjNjIwZjY1ZWFhNWI1ZWI2NWI0ZTZmYzYxZTEyOTFmM2Q3ZDZiYzEgbGVnYWN5LXRydW5rCisxNDY1OSAzMGQ5MjQ4ZTExYmJiMjMxZjczODc0M2YzYzJkMWU1NWIyMDQ0OTExIGxlZ2FjeS10cnVuaworMTQ2NjAgYTliNWEzMWZmOGNiMTkxMzcwNzVmOTNhYTdmYTliNTZiZmYyYjVhNSBsZWdhY3ktdHJ1bmsKKzE0NjYxIGQ3YTRhNWFlMmRhZWM0N2Q2NzVmMjY2YzM2NjI2ZGIzODkwMDk0ZjAgbGVnYWN5LXRydW5rCisxNDY2MiBhMTMyOTRhZWYwMmVhNGZlYjM0YjU2ZThmOGY4ODU1ZWUwMTA0NWM3IGxlZ2FjeS10cnVuaworMTQ2NjMgNGM3YmM4ODVmNDIwYWZhNThhNjY2Zjk0MTZiYTI0MDI3MTdiYjU5MSBsZWdhY3ktdHJ1bmsKKzE0NjY0IGVmYjNhNDVjNjZmMzFhYzg5YTg0ZDdiYzQ3OTMzNGFkOGVkYzkyNGYgbGVnYWN5LXRydW5rCisxNDY2NSA4ODIyNWRmMzVlZmJhYzQ2YmI1YmMxNzY1ZmRjMjhmNzQxOTQ3N2NmIGxlZ2FjeS10cnVuaworMTQ2NjYgMzMwM2E1YmFjNmRkZDQyMDEzMzgwMWU2OTVjNGNjYmE4MDFmM2MwMCBsZWdhY3ktdHJ1bmsKKzE0NjY3IDBmZGFjMWY1NGVjODEwMzUxMTVlZjZmZDc3YzAwNGE3YzVkMDZlZmYgbGVnYWN5LXRydW5rCisxNDY2OCA5M2RhYzQwNTMxODljMGY1NTBiZjU2OWE2ZjgyZjk2ZDcyNjE1MDEzIGxlZ2FjeS10cnVuaworMTQ2NjkgZWU2NDkyYTVmZGVlNjZhODM0MjE1YjE2YWJjODg2Mjk1NTE1ZGJkYiBsZWdhY3ktdHJ1bmsKKzE0NjcwIGYxMDQyNTFiNmY4ZjM3ZWY1ZmIwMDExNDhiZWU2MTc3MTNkM2YwOTIgbGVnYWN5LXRydW5rCisxNDY3MSA4MTcwMmE3MzU0ZWNiNTBjZTA0NjMzNGRkMDlkOGJiZTlkZWQ1ZjhjIGxlZ2FjeS10cnVuaworMTQ2NzIgMTc4OWZhZTVmMDc0MWEwM2M5ZDQ1NmI0ZTNjMzZkNDY3M2Y2YzY3NCBsZWdhY3ktdHJ1bmsKKzE0NjczIGI1ZTgxMjcxYzRjOGJiY2M1YWY1NmM1ZjUyOTVmNmU5OTJjMzE4ZWYgbGVnYWN5LXRydW5rCisxNDY3NCA0YjhiMmUyOGJlMzQ5MjU5OGZjOTFmMWQ5YWFiZGVmZjU0NWJkYzc5IGxlZ2FjeS10cnVuaworMTQ2NzUgOTZmYTQ2ZDM0ODk4YWNkZDdiYzZhZmFhM2MxOTkxMTNlNjMzZWYwYiBsZWdhY3ktdHJ1bmsKKzE0Njc2IDMyNjI3ZGNhZmFiZmY3MmY1M2M1NzY0YmY5NDRkNjA3NDQyYmJhODAgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Njc3IDIzZGM4OWFkMDk5NmU4OTU2MWI0MGUzODVhMDNjNTkzZjFiZDU0ZjkgbGVnYWN5LXRydW5rCisxNDY3OCAzODMxMGViMDY1OWUzYTRjNDE3MzVjOGZkOTMzNzRkOTk5ZjIyNTI2IGxlZ2FjeS10cnVuaworMTQ2NzkgZjk0ZDEwYjZkMGY0ZDEzMzY2ZDZjN2VmYzIwYzZiM2U3ODExYjcxOSBsZWdhY3ktdHJ1bmsKKzE0NjgwIGM5NDI0N2I1YzM1NTU3OGY0NjI2ZDNmNjdiOTVkOWU5MDE5MzJlNzEgbGVnYWN5LXRydW5rCisxNDY4MSA4NjUxZjJkYTdjNGM4NzAxZTVkOTI5M2Y0YjY1YjljNWZiNzVmOWQ5IGxlZ2FjeS10cnVuaworMTQ2ODIgZTM2MmYzMjYwNDhjYTJkMWQ5MmYxMTEzNDM4YmU5NjFiOWYzZjJlZCBsZWdhY3ktdHJ1bmsKKzE0NjgzIGQ1MGZhMzY3MGI2NmExN2Y1NjMxNTlmMjBjZDU5NTliOTRkY2ZlZDMgbGVnYWN5LXRydW5rCisxNDY4NCAxNDhkYjYzMjIxNjFmZTI4NDk2YTQwNjZhOWY3MWM2ZGFkM2Y3Y2ZkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NSAwMWZhNWNhOTg4MTNiNDU1YzgwYzA1OGYwYTg5ZjkzMTZhY2I2ZjU5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NiA3NWQ2YzdjM2VjNTUwMGU0NmEzMWFlNTM5MWQxNTZjZmRmNjgzM2RiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4NyA3NjEwZWVkM2UwMzMyODNmZmNhOWFjNTE1ZDMzODdlYjg5Yjg5OWM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY4OCBmNzhmNDc3MjU2OGVjNjFjYWYxY2UxOTQ2ZjMxZjE4ZDM2YWJjY2JjIGxlZ2FjeS10cnVuaworMTQ2ODkgNzRkOTdkNzk1YzRlZTczY2Q4NzczOTQxNjQzMzVkNDUzMGJmZWViYiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ2OTAgM2Y1NmNkYTNkMmZjNDE3MTM4YWEwZTM0ZmIwNTdlYmQ1M2NlNGRmYyBsZWdhY3ktdHJ1bmsKKzE0NjkxIGM3NDU4OTIzZjZhMmQzMzAzNDVkMTEwOWVhYzJhZDk4ODNlZmU1NDEgbGVnYWN5LXRydW5rCisxNDY5MyBmMjdjYzE3MzUxN2UzNDJjMzEyN2YyMDA3ZGYzOWY4Yzk3MDk4ZDEwIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NCAwZjZlYWIwM2YyODgwMWI2MzE0ZjQ5YTliMWJlYjhmMTlhZjUyYWFmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NSAzNjZjMWU5OGY3MDc4YmY4MGM0MWM2NWE1ZTA1MTFhZDQ2YmRlODAxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NiAwYTcwNjA3MmQ1MGFmMGY2Y2Y3OTkxODIyMWE0NmExY2JiZjZmNTI2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5NyAxYzkzNWNhMzc4NWM4ZDgwNTgwMjQ2OGYzZTMwMjg5ZmJiN2Q3YmFjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5OCA0MzhhNDQwYmIwODVlNWU5NTJjOWY1MTNhYzEwMWFmM2RhMjQ5NmFlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDY5OSAzZjg1YzRiOTlkMzMyMjA1YjU1ZGMzNzc4MjliODU0ODQ1NjdmYzllIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMCBmYWYwYzllOWI5MmZlYjM5M2VhZTE1YzJhNjNkYTRjZTYxOTUyYWExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMSBmMjM4NjRlNGFkMmNjNTUxMjRjMWNkYTBjYzg1MmI3YTM4MWM5NDdmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMiBlNTdjZTRkZjU3MDdhNzJmYTUyMjExMTA1MTY5MTQ2NjBlMDI3MThmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwMyA0ZmJmNjk2MjA4N2Q1OGYzYjEwZDk4Y2ZhMmNjYjVlN2Y3OGVlZGI1IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNCBiZGFiOWM1NWYxNjgyOTdlY2QwOGQyZjZkNmE1ZjM1ZTAyNWMwYjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNSBhMzNmMmEzZGI4OTI3ZWIyNTQyMmVhMjZlMmU5ZDNlZjJjNjdkZDJjIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNiAyZWFhZWQ3NTg5YWU1ZTBkOTY5OWJmYzIzMDVmMGE4YTdhNmQ1NjM5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwNyAzYWYzYjFlYjY3ZmUxNGMxYTkwMDBmZjRkY2FhNDhhMjgzOTU0ZDI3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwOCAyNjEyYjk2Yjk5YWM0NGZiZjcwNDNlMjE2NjMwOWM4YTI4ZmEwNjVhIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcwOSAyOGM4Y2U2NjViMDMyMGRlOTdiYTMzYWQ1YjM3MzVjNzY0MjE1YTViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMCBiNThmMmYwY2Q1NWIzZTQyODE5YjZjMGQ0ZDI5MjZmNjBjNDkyMDQ2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMSA5NjM0OGJlYjkzODQzODlmYmU3ZjJkOTA1ZDViM2JiYTI2MzMyYmZmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMiAxNjlhZGQ2YTRkYzFiMGEyMjk2MzE5NGRhMzZhOTE4NDBjZDc1NjkxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxMyA1MDAwZWFmMDU4ZGI3OGNkNzg0MjZiYzIyYTY2MDlhZjZmMGQ0OGY3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNCA3MDNkYTdlOTRiMjE2NWQyNTg5Nzg2M2FjNDg0YzYyMWRjZThmODRiIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNSBkN2I4N2YwZmYwZDJhN2Y3MWZjYTY2NDViMDIyZDA0NmFhZDgyNDVlIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcxNiA5ZDczNTYzOTQyOWQxM2FmY2I5YWRjYzA0MDEwZDRmMWJkZDcyNWY0IGxlZ2FjeS10cnVuaworMTQ3MTcgZTBmYjA0ZDFiZDkzNGI5MGIzOGE2MGI1ZmZhMGVlNDgwZjNiOWNhOSBsZWdhY3ktdHJ1bmsKKzE0NzE4IDc0ZmI2MDJiNzZjMmZmYjFkZTkzNzViY2U0YTMyYjhkYjkyMmFmMDYgbGVnYWN5LXRydW5rCisxNDcxOSAxMjdmNzBmNTliMDI2NjQzYTIzMmI4OWUwNTQ1YzIwNDI5YzNjNmZkIGxlZ2FjeS10cnVuaworMTQ3MjAgNjYzMTI5ZjNhYmUwMDFlYmQ3NTcwZTIxYWNlNDEwOTMwM2I5NzY5ZSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjEgYjQ3MjQ4Y2U3YjZjOTQ1MDQ5YzZkZmU1ZTdhYzg5YmUyN2M3YzMxMSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjIgMzk1MjMxODk1N2NmYTMzNjRmYWVhYThmYmU2ZGE5Zjg5YmM0ZjlmNSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3MjMgYmQxMDE0MjE1ZjYyMjU0YTZkMDRhNWI4M2ZlNTY4MjljZWFjMjVjMyBsZWdhY3ktdHJ1bmsKKzE0NzI0IDRmYTI1YTI5MjI3M2I3NTRkYmFiMGRkZTA2NDc5MTA2ZTBhMzEwZDcgbGVnYWN5LXRydW5rCisxNDcyNSBjMmVmZDE3Y2VjYmYxZDZmMjVlZmQ3OGViYzJiZDI5NmQ5ZjFlZjNhIGxlZ2FjeS10cnVuaworMTQ3MjYgZTZjNDY4MTlkYjkyNzI5NzZhMmQ4ZmY4Y2ViMGI4ODFmNDAxNTU5ZSBsZWdhY3ktdHJ1bmsKKzE0NzI3IGJhODBjOTA2NDQ5MTgwNjdlNmY3NThjYTZjNjQ5OGQ5MzcyNWRhM2UgbGVnYWN5LXRydW5rCisxNDcyOCBhNDExODM2NzAzODZlNjJmZjM4OThlMTk2OGU3YjhmZTM0MmMxNjIxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDcyOSBjNjAzY2RlZGFlMTc3NGUwZWZjNTliYWE1NWQ4ZjkwZGM4NDE2OGIyIGxlZ2FjeS10cnVuaworMTQ3MzAgMTNmZDBkZmVjNTYwYTdkZDU1NmFlMDY4NjlhNWE0ZmNlZjc1YWU0ZiBsZWdhY3ktdHJ1bmsKKzE0NzMxIGU3ODIwMzUyY2I4MGQwZjNkN2IwZWFhY2M1MWIxYjNmODc3YzZiMDYgbGVnYWN5LXRydW5rCisxNDczMiAwNTY5NzI1MTcxOTEyZTViN2Q3ZDFhNTk4NGIzZTk3OTI3NTA3ZGE1IGxlZ2FjeS10cnVuaworMTQ3MzMgNjliMGZjZWY0YzBmMjFkNzY4Yjc0NzU1ZTRkYmU0MmQxNWUyZGJjMyBsZWdhY3ktdHJ1bmsKKzE0NzM0IDc2NTE2MjA0YjYyMGJlYjg0ZmMxZGRlOWZhZWRiODQzNDRlMjJlNTIgbGVnYWN5LXRydW5rCisxNDczNSAxZTFhZWJiM2U0ZjY5ZTU4ZjBiNGQ4ZDIwNTM3MDQzMzdkNDQ3OTZmIGxlZ2FjeS10cnVuaworMTQ3MzYgODZkOWNlMTU4MDg5OGVmNDc4Njk3N2QzZjZhNmE0MTRkM2M4YjFiNCBsZWdhY3ktdHJ1bmsKKzE0NzM3IDkxNGVkNTI4ODk2ZTBlZDVhNTBjMmQ1NmFkMDA5ZDE3MzM5Mzg5MjQgbGVnYWN5LXRydW5rCisxNDczOCBhMGE5YzY5YWY5Zjc4Nzk0NjUzYjZmMDljMDc5ZDE5ZTMzMTE3Y2I4IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDczOSA2ZmQwYmIwYzAzMzFlZmJlN2IxZjE1NDVkYWJiMWU3MzUxOWY0OTYyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MCBmMDdjMzMwNTU3Y2ZmODYzZjVlMzE1ZmI4ZDVmMWQ2MTIwNTIzYWY0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MSBkNzRlYWE5MmYwYjQ1ODM0NDkyZjQ1ZTI0NjRjNGFkYzYyNzk0MTExIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MiA0M2QyMjQ3ODZhNTgxZTQ1ZDMyNmNlMzUzNzNjZDZkYTVhYzM3NWE3IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0MyA2MjhjYTFlOTA1OTFlNTBlOTU4OTg5OGI3ZjVjMWRkMDAxYWQzOGZmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NCBmMjIwZmJhNTc3NDlmYjgwMzA1Y2ZmZTkxYmEwN2Q1NmFhYjc2YWVmIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NSAwYjk2MzNhNDVkNjhlYjgzYmJiYWM5ZThiMjc5NGIzY2E3NDUwNDljIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NiBjYTAxN2RlNGYyZmQ5NGM2N2JjMmVlMjBiY2ExYjU3MDIzYzFhYTE0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc0NyAyNWQzZGQwYjFjYTI5MzgwMzI5ZjQ0YWRhZDY2ODQ4NmIyODQxODE1IGxlZ2FjeS10cnVuaworMTQ3NDggNzk5NGQ5ZGI3ZjRkNWRmZTUxZWJhZDMwMDQ3MWQwMWViYmMwMDI5YiBsZWdhY3ktdHJ1bmsKKzE0NzQ5IDAwOWQ4ZmFlODFlYWU2ZWRiYjdmZDczZjBiMGY5MDdlZmQ2Y2UyYTUgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUwIDBjNDQ3YzI4OTE0NjZmZDEzYTEyZDIzZGU1NGQ5NDJiODc2ODYwNjIgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUxIGQyYTAwNjEwOTJmODA1MDE1NWQ0Y2I5YjQ0ZDI2OWNiYWFkZDlmY2YgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUyIGRhZjRlZmMzYWJhOTFiYzFlOWE5MjVkMjk4M2Y5ZDFmNTk1Y2IxZTQgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzUzIDhkYzA5MThhZTJjMmZmY2U3Y2FhNGVhMGQyM2FjNmY0MmVhMDE2YWUgbGVnYWN5LXRydW5rCisxNDc1NCBmOTU1ZmJkNTEzZWU0ZjZkNGE2Yzk4NjY4ZTM0OGEyN2FlMDFhODI5IGxlZ2FjeS10cnVuaworMTQ3NTUgNTU2YzI3YjNhYjZlYmY1NmQzMzc4MjQ0YzgzNzA0YTQ2MjJlMmU4NiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTYgYzhlMDAxMGMxMmVmMzFlZGNiZTMyOTJkZjY2ZTYzZDIzYWRmYzcwYSByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTcgODdhZWU0ZWYyOWY1Mjg2YWM2YWM4MzAwNGEyNGE0YjdhZjliYjMwZiByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTggMzI1OTM4MzAwYTc4NDE1YzYxYjdiODQzY2IxNWU0OGMzYmIzMDJjOCByZWxlYXNlMTUycDEtcGF0Y2hlcworMTQ3NTkgNmU3ZWM5YTAwY2NlNWNiMDlkOGQ2NTdhOTE2OGQwYjljYzc5ZmVlMSBsZWdhY3ktdHJ1bmsKKzE0NzYwIDM2OTBjODdhOWJjNjY0YzY1MzRjMzM2OTA1OTQwODgyZjhhMDAyMjkgbGVnYWN5LXRydW5rCisxNDc2MSBhZmFiN2JkNzJjNDc5NWQ0ODU1ZWFiM2UzOTg0ODIzNjRlNTEzMWRkIGxlZ2FjeS10cnVuaworMTQ3NjIgYTA1ZDgzMzhmYWM1NzM3NDFlYTBiZDM5ZThhN2JjYmFhZjMyOTNhNyBsZWdhY3ktdHJ1bmsKKzE0NzYzIDljYWNkMTE2Njk4NjIzY2ZkYWQ5MDMwOTAxNjYyMzk2Y2M2OTg0MGMgbGVnYWN5LXRydW5rCisxNDc2NCA4NTZkYWRmNTZjZDk3YjI4ZjAzYThmMzJjNGI3MmJiM2IwNjY4ZGM0IGxlZ2FjeS10cnVuaworMTQ3NjUgMjNmY2U5YjlmM2JjOTMxN2NjMjgyZGE1NjRkZjlhZjljZTc2YjA2OCBsZWdhY3ktdHJ1bmsKKzE0NzY2IDZmMGQxZTMzNDZmOTVhNzAxYzg4MGM3ZWI1NWI2YWEzY2RjMjg5OTcgbGVnYWN5LXRydW5rCisxNDc2NyA5NDA0MTk1ZmYzZmVmZmFjYmUyNjA5MWMwZTEwZTBhOTI1OTNkMTczIGxlZ2FjeS10cnVuaworMTQ3NjggZDNlNGE0NTY5MjhiZTFkYTQxNGI2ZDRlMDQxYjI2YThmNWUyZjI0ZSBsZWdhY3ktdHJ1bmsKKzE0NzY5IDE5NTZlYzA3Njc4ZTg2ZjA1ZWExZGM0MmM4MzMxYTg3YjhmMzExMWIgbGVnYWN5LXRydW5rCisxNDc3MCA3NDBlYzA4ZTZlYzFjNTkyN2Y2M2U1MWNkYWY0ZGIxM2I5OTdjMzM0IGxlZ2FjeS10cnVuaworMTQ3NzEgNDFhNzI1YzEyNTUxZjYxYjRiMjhjZjM0MWU1MDE3ZTMzYjM0MWJkZiBsZWdhY3ktdHJ1bmsKKzE0NzcyIGQ2YmMzYmQ1MjQyNGU2YTFiY2E2MWE5OWZkMGM4NmQ0ZWFjZGE3ZGMgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0NzczIGUxMjA0MTczMjMwNDA5MzU4OWUzZGU3ZmY0MDIzODQ0NGRhMWJiMDggcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc0IGE0YTc4NWEwMTM2MGFlYWUxOWFjNDE4Mzk3NGRlZDY1YWMyZmY2NzEgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc1IDAxYTYwYjkzYzJmNTAwZjM1NzMwNmIzOWZhOWYwZWU5NTY4N2ViNjYgcmVsZWFzZTE1MnAxLXBhdGNoZXMKKzE0Nzc2IDAxOWMzNDI4MGZjMjFmM2I3MjlmZTkzOWFiNTU4N2FmNGZkMzJkNTAgbGVnYWN5LXRydW5rCisxNDc3NyBhOWExZTU5MWViM2ExYjFlYTA1ODAxNDg1YjYxY2RhMzliZDRmNGUxIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3OCA4MWMyM2IzODdiYjA4NDhiMGY1ZWFlZGJhZDliNDk4NmRhMWY4ZDk2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc3OSAyZTIxYWQxYzYwZmY4NjYzMDEzODY0MGY1YTRiNzAwMzRhZWU0Nzk0IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MCBhZjQ3NzhhMTMwNTU2OTE3ZGJhYWRlM2ZhNDIxNjMxNWJjMzk3YmY5IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MSA2Mzc0YzY2NjkxNDc4ZTY3MmFlOWQ1ZjViYTI2ODQ3MWZjZDdjMjIyIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MiA0MmNiZWE2Nzc3YjdlZTlmYWNhNmJjZjc3NmI1ZmJhZDA3MWU1ODViIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4MyBjYWU1NmY3ZTgwZmZlZTczYTg0YjYxNzdkMmE3MGI0NWJjZjZhYzA2IHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4NCBkOGIyMmE3ODE5MDVjMTkxMTRlMTAxYzM4ZTM4NjAwZDAyMzAzZDdkIHJlbGVhc2UxNTJwMS1wYXRjaGVzCisxNDc4NiA1Y2FjY2FjZTFkY2Y4ODQyZDRjNDU4NmVmOWVjMGU5NTBmNjcyYTM2IGxlZ2FjeS10cnVuaworMTQ3ODcgMTc4YzZlZmFlZDhiYWUzMWIzZDUzZWVhYWZkMzcwN2M4MTVmZWU1MyBsZWdhY3ktdHJ1bmsKKzE0Nzg4IDE0MDkyYWJiOGJiNGJlNTQ3Yzg0YWU5MTRjZWE1NTE0NDhhZDA0MzYgbGVnYWN5LXRydW5rCisxNDc4OSBiMmQ0NGJiNzYxZDRiNWExNGRjZWRmNDdmYjk2OTZkODVkZjJlODU3IGxlZ2FjeS10cnVuaworMTQ3OTAgYTM4NGIwZjY5NTEyZjZkZGVlNjIzNWNkY2RjZjRmYWIyZTYyOTY0ZiBsZWdhY3ktdHJ1bmsKKzE0NzkxIGZhMTJhNTYzMzY4ZDUyZjJhNzI3ZDg4NzJiZjlkOWYxYjhlM2FlNjAgbGVnYWN5LXRydW5rCisxNDc5MiBmODdiNTZlZWJhY2M3MmMzZWFhYTQ5MWY3MWQyZTNlNDljMTQxOGU0IGxlZ2FjeS10cnVuaworMTQ3OTMgZGRhMzc5NGM5Y2Q5MDQ5YmFlNTc0ZWNlYTk4MmMyNjYyYmRiMzUwMyBsZWdhY3ktdHJ1bmsKKzE0Nzk0IGI5MDg4MGMwZTVlYjIyNWMxOGYwMDcyMzEyMDRkNjk0YWQwOTAzYmEgbGVnYWN5LXRydW5rCisxNDc5NSBkODk1NTZjMDRlZjk5ZGJjOWZhNmIzOGI3ODZiMWY4MDg0MjIyYmM0IGxlZ2FjeS10cnVuaworMTQ3OTYgNWQzMTY1ZTMwYmNlNjMxM2M0NTgzYjFmNDRkNTEwOGZjMDMyMWJlNCBsZWdhY3ktdHJ1bmsKKzE0Nzk3IDg4YjBiMzIxMDhjZmEyZDRlMzQ4MzRmOWViMzIwMmM2OGQxMzY5YzcgbGVnYWN5LXRydW5rCisxNDc5OCAyM2ExYzUyNmM2ZjAyYzViZGIwNTZlYzZlZGY5N2E5NjA3OTRhNmQ2IGxlZ2FjeS10cnVuaworMTQ3OTkgNWQ0NWNmYTFiYzkxMzg5YTg2ZTNkNGM4ZjlkMDY3MDZjNWMzNzNlMyBsZWdhY3ktdHJ1bmsKKzE0ODAwIDFlNWNkNzBjZWUxMDc1NmI4ODhhNzU2NGQyMDFlZjZjMmQ4Yjc3OTYgbGVnYWN5LXRydW5rCisxNDgwMSA0MmQ4ZDc2ZGFlNmQyYzVkNWJjMTA4YjMyMmIxMTY1ZDY3MTI5OGI5IGxlZ2FjeS10cnVuaworMTQ4MDIgYzZjYjBkMjY2ODM5MzAyYjhjOWM3NWU4YTkxYzBjNjMxNWNmZTM4YiBsZWdhY3ktdHJ1bmsKKzE0ODAzIGRlMjk2YTc4YWJmZGM0ZTUwMmRhMzY1N2ZiZmYyYmQ1YTJkYzVjMmMgbGVnYWN5LXRydW5rCisxNDgwNCA3Nzk1NTczZWMzNTgxYzUxODE5NTczNzdlOGRjMzlhMDc3ZDlkODlkIGxlZ2FjeS10cnVuaworMTQ4MDUgMDQ5ZjAwYmZiOWNlZjM0MDI4ODZlNTY5MGExNzA0N2NhMTQ1ODczYSBsZWdhY3ktdHJ1bmsKKzE0ODA2IGM0M2IzODA3OTIyOGYzOTkxNTU4OTg3NWIxOGEzNGI1MDFjNzM5MjggbGVnYWN5LXRydW5rCisxNDgwNyBjYTg4ODBjZjM2NzRjYTBmODI2MzUwZGFjNGNjZjdlYWUzNTU5YTUyIGxlZ2FjeS10cnVuaworMTQ4MDggZGIwM2EyOWNmMTZiNWMyMmNiY2U0ZDE1NWMzODEzNzg4ZmQ2OWM4YyBsZWdhY3ktdHJ1bmsKKzE0ODA5IGI5ODFhN2E5YjczOGU5YzE5MzViMDNhOTE1MjU1NmJmZDBjMjA3ZDAgbGVnYWN5LXRydW5rCisxNDgxMCA4NmNmZmU1MGZiMTcyYzAyNTNkMGIxNDA5ODhlNzA0Y2ViNDliYmY5IGxlZ2FjeS10cnVuaworMTQ4MTEgYmNhYjE4OWRkZjg2YmRlY2M2NTYyZjVmMWQzMDE1MGMwY2JiZDc1MSBsZWdhY3ktdHJ1bmsKKzE0ODEyIGUyNDM1MTkyNmUxM2VhNjA3NTNkMDFhODYyN2RhNjhmMGZmNjE5OGMgbGVnYWN5LXRydW5rCisxNDgxMyAzMzIzMTBmZTNkM2FmMzcyNzRlODY5ZjUwZWVhZjI5MDY2MDQ5MWYwIGxlZ2FjeS10cnVuaworMTQ4MTQgYTFiZmM4ZDRmYzAwNmM4MTgwODU5Zjk2MjgyZmViMWFlNzhjODUyNCBsZWdhY3ktdHJ1bmsKKzE0ODE1IDk3NTBhZjVlNzFiMDEzOWFlY2MwZDRhY2ZkMTRkNjY2MzEyNmNiNmUgbGVnYWN5LXRydW5rCisxNDgxNiA2N2Q0MTI4ZGEyNTQzYTFiNDBhNDQ5NTI1NGFiYWE0MDkyOTc0NzhlIGxlZ2FjeS10cnVuaworMTQ4MTcgZTQ5NDNlYmI1ZjdkMjI1MTEwMDdmOWU4MGQ1MjdlZDBmMjljMmNiYiBsZWdhY3ktdHJ1bmsKKzE0ODE4IDY1ZjM1YjczZTM1MDU0ZDk1YWZlYWFiZDI4OTcwZGQzODY5ODU0MjYgbGVnYWN5LXRydW5rCisxNDgxOSA5ZWRlZGU2NTFmYjFhNDhlNzBjYjA4ODBjYTI4MjVlZGY1ZjkzZDg2IGxlZ2FjeS10cnVuaworMTQ4MjAgNGE2MWNjODFmMzY3MzVkMTYzNTYxNmQ4NWVjMzMxM2FlZDE5MTU4ZiBsZWdhY3ktdHJ1bmsKKzE0ODIxIGZkMmIwNmM2ZmY1M2I3MjM3NzMwMWMwM2E0ZDU4NzI5NDJhODBiZmMgbGVnYWN5LXRydW5rCisxNDgyMiA4OTdjZjBlNWE0MzRhNjBkMTdhMmJhZjQxY2U3ZjUzNTkyZGRkMDE5IGxlZ2FjeS10cnVuaworMTQ4MjMgODM4ZGMzODBlNDY3N2VlODg1NzBhMDVjMGE2Yzc3MzQ0NzgyYmVlMyBsZWdhY3ktdHJ1bmsKKzE0ODI0IDQ0Yjk0MmY3ZmViNzY2ZWIzZTViZGQ0ODM5MGIyZjRiNzlhNmZkM2YgbGVnYWN5LXRydW5rCisxNDgyNSBkYzhhYTk1MWRlZjgwNDVjMTM4YmYwNTk5NjFkYjVkNGE0MjI5MGZkIGxlZ2FjeS10cnVuaworMTQ4MjYgNjAzZGIwZDBhZWQxNDM0NWM5MDAwNDRiYWQ5ZTY1ZjFiNmMzMzJlNCBsZWdhY3ktdHJ1bmsKKzE0ODI3IDdlMDA2MzQyZTc5MDdjNjk5NThhMGVjNDVmYjA3YWJmMjQzYWQ2ZGUgbGVnYWN5LXRydW5rCisxNDgyOCBhNmU1MjJjYjU5MTg0YTVjMGFmMzI1MWZhMTExYjZhMDNiYjBmMzk1IGxlZ2FjeS10cnVuaworMTQ4MjkgMjViNjMzNjczODVlYjA2NTNhYjJiYzI4NGYyOWYwMDYzMTVhZDI4YSBsZWdhY3ktdHJ1bmsKKzE0ODMwIDk2ZWExYTgwMGIyMzkzYzk2N2JiNWYzYzgyYjdjOWUzODhhZWQzYWYgbGVnYWN5LXRydW5rCisxNDgzMSBlMmRiODlhOThjYjJmNDliNDJjOWYxNTcwMThlNzA1ZGU1MTNiMjVmIGxlZ2FjeS10cnVuaworMTQ4MzIgMzc4OWI2NDNmZTg5ODEyOTBjMzUyMDY0NjMxZTJhNjQ0MWViY2E4NiBsZWdhY3ktdHJ1bmsKKzE0ODMzIGJiOTAwNDQ5MjAzMDUzOGJkNjExZmJkNGVmMmI0NjE3Y2UyNGQ5YTIgbGVnYWN5LXRydW5rCisxNDgzNCA5ODc3ZTk3ODE3MGVhNzViMjY2MDcxNGQxY2U1YWIyZjg5MThlNmJmIGxlZ2FjeS10cnVuaworMTQ4MzUgYWUwNjVkZGJhMGYxNDY3Y2EyMzczYzQxYmE0NzQ0NDYwMjVlYzkwMiBsZWdhY3ktdHJ1bmsKKzE0ODM2IDJhNjBkNmY4MzRmZmI0MTIwMjA3MDg3MGExYTRhN2NkMjJlNzcwZGIgbGVnYWN5LXRydW5rCisxNDgzNyBlMDlkNzQxNGQzZWNmODE2NTdmNmJlMzJjMjE4NzQ5YmEzYjMxZGE0IGxlZ2FjeS10cnVuaworMTQ4MzggOGQxYzY5YmRjNGYyYzJjOTVjMTRiMmQyYzhlZTAzOGQwNDgxZDQ0ZCBsZWdhY3ktdHJ1bmsKKzE0ODM5IDQzODc2MDZhMTI4MWI1YTBmOWYzNzdmOWEwYzhhZWU0ZmY5YzNkZmIgbGVnYWN5LXRydW5rCisxNDg0MCBjMGU0YTkwZGM0ZmY5Zjc2ODhiYmY0YWVjNWRhN2EwYjVhZjQxZTFjIGxlZ2FjeS10cnVuaworMTQ4NDEgN2E1MTVmYzEwYzFkNzdjMzkyNjI4MTIxZDkyNDgzMzUzOTc4MzJmYyBsZWdhY3ktdHJ1bmsKKzE0ODQyIDg4MTI1N2QxZTg1NDRiZjhhZDUxNWFlMzJlZTk4YjI1Y2U4Mzc1MTEgbGVnYWN5LXRydW5rCisxNDg0MyA0MGEyNjg5ZGFmMzc3NjZjMjFkN2Y1ZmYyZTY0ZDU1M2U2ZjI5OTM3IGxlZ2FjeS10cnVuaworMTQ4NDQgNDFjYmQyOThmZmM2YzFkMmI2NjJiOGU1NzllY2I5NDAzMGY2OGM4MiBsZWdhY3ktdHJ1bmsKKzE0ODQ1IGYwZTAyYWRiOTFlYmExOWIzN2Y1MzU5ZmVmNDY3ZTlmMDk0NGRkMjggbGVnYWN5LXRydW5rCisxNDg0NiBlODFiMTM5YWI4YTQ5NTlmZWFkYjNhNjkyMzkxNmI3MjdlYzZmNTA0IGxlZ2FjeS10cnVuaworMTQ4NDcgZDczMWNlZjgxMmIzNWU2MTRkMjYzODUzMzdiNDg4ZTQ5ZWU0MGUzZCBsZWdhY3ktdHJ1bmsKKzE0ODQ4IGU5ODc3MGRlMzE0NzJkMzY3YTg4MjgyMGUzMWU0N2JiYTBjOTMxZTYgbGVnYWN5LXRydW5rCisxNDg0OSA2NmYxNGZmZThlYjcxNmY5NmU4YTQ4NWQ5NmIxYWZmMjY0NzI3YmJlIGxlZ2FjeS10cnVuaworMTQ4NTAgMmE5MTBhNzc1NzlhNGQ4MzJmNmQ5YWI4OWIxY2MyMWQ1NDQxMWQyOCBsZWdhY3ktdHJ1bmsKKzE0ODUxIDMyNDA3YzA4Y2FmNGQzNTg5ZWFlZmZkMjA1YzkyYjIxMTAzNDI4OTAgbGVnYWN5LXRydW5rCisxNDg1MiA2ZmQ0Mzg2N2FhNGZiMDdmOWZmZWIxMzc3YTlmM2I0MjIwMTZlNTRmIGxlZ2FjeS10cnVuaworMTQ4NTMgZjdhMGQyOWZiOGI4MWUxNDQ1MDI5YzEzYjI2ZGMyZmNkMmYxNjE5MyBsZWdhY3ktdHJ1bmsKKzE0ODU0IDkyZWM3OGUyMTdkMjlhZjg5OTA0ZDNmNzM0YWMxMmNjYWM2MGM4NjMgbGVnYWN5LXRydW5rCisxNDg1NSBlMmIwMmQ0MGExNDI1YzNjODU4MmY2NjE4ZGYwOTc2NmFjZTllMzZiIGxlZ2FjeS10cnVuaworMTQ4NTYgZGZlM2JhZjBhZWNkY2U0ODA0OTVhYjljN2E1NjU3ZGUwMGQ0Y2FhMiBsZWdhY3ktdHJ1bmsKKzE0ODU3IDJmMmYyYjFjZTU2OGQ2MWUxZDY4NzJhNzRmMDg0ZWQ2OTI2NDI4ZDIgbGVnYWN5LXRydW5rCisxNDg1OCAyNzIxYzdjYzBiMjcxNWYzZDFjNTFlYjk1ODc0NDg5MzA5YmEyYjcwIGxlZ2FjeS10cnVuaworMTQ4NTkgNjMzMzZmMjA3ZDUxMjhkNTVkMzhlZWY4ZmQ2N2I5MDAzZDBlNTI2OSBsZWdhY3ktdHJ1bmsKKzE0ODYwIGU2YWIzYzYwM2ZmOTEzYmE2MTdlYWI2MjE5NTY2NjllYTQzOWZkOTcgbGVnYWN5LXRydW5rCisxNDg2MSA1ZjIyMzk0MDZkZDIwZDM3NDQ5OWNiMGVlMjRjZWJlNjE5ODA1MWI3IGxlZ2FjeS10cnVuaworMTQ4NjIgMzBhNDlkMTVkYTk3NWMyNjM3ZWU5YzJkM2U1ZDlkM2Y3ZTA3Mjc0MiBsZWdhY3ktdHJ1bmsKKzE0ODYzIDA2OTlhN2RmZDczN2MyMzUxMzk0ZWRkM2ZmZmYxMzhmNmI2ODFhNDMgbGVnYWN5LXRydW5rCisxNDg2NCBlYzU4YjUwM2I2NzAwYzVmZDZiNTA1OGQ1MWRkMDJmNjU0ODc5YTE4IGxlZ2FjeS10cnVuaworMTQ4NjUgMDcyN2ZmMzllNjRmYjkyNjQ3ZTJmZGRiZDVjNWY4Y2ZiMjA5OWUxNSBsZWdhY3ktdHJ1bmsKKzE0ODY2IDNkNzg1YzJjZGE4ODE1ZGJhNjczMjFkODc2MzQxNTU0NTgwMTYzYWUgbGVnYWN5LXRydW5rCisxNDg2NyBhMGVmOGZhNGIyNDg4YjQzOGRhZWExNWRkMzUyNTc5N2M0NjcxYzhjIGxlZ2FjeS10cnVuaworMTQ4NjggZWMzNjBiNGU4ZjY2ZmU3ZWJhZDE2MDA3ZmEzMDNjNGJjYzY0YjMyNyBsZWdhY3ktdHJ1bmsKKzE0ODY5IGUyYjMyODNjNWRiMGE0ZDY4MjAxOWIyOTRmOWY4YWQ0MzkwZTg3ZTggbGVnYWN5LXRydW5rCisxNDg3MCBlNjIxNGFkMmE2MGNiMDdiMWRkOTQ5ODhjNjgyMTI3YzBkOTAyMjNlIGxlZ2FjeS10cnVuaworMTQ4NzEgYjNhNGU0NTFjMDZjODZhMGIwMmY2ZDk1MDgwN2QyMmM3NzVkOWY2MCBsZWdhY3ktdHJ1bmsKKzE0ODcyIGI1ZmNiNTM5Njk5OTQ3Y2ViNDc1MzliNzc2ZGI0ZDA3NWU0YzcyNTUgbGVnYWN5LXRydW5rCisxNDg3MyAyY2Q5YzQzNmJkNDJiMzc5YWYxN2FkNGQ1ZTIyOTRhNWZjMWVhNjlkIGxlZ2FjeS10cnVuaworMTQ4NzQgMTAzOGU1ODYxMDc5OGU0YzgwNjc0MjBkZGMzNWJiNWJmYTY2N2ZhNiBsZWdhY3ktdHJ1bmsKKzE0ODc1IGI0MGY2NzliMTA3Y2U1NTgyOWM2YjZhZjZhOTQ5YjA3MTA2OTkzYWYgbGVnYWN5LXRydW5rCisxNDg3NiAxYjY4ZDBhZDc4MzU2YzBmYTIwZGQ3NDMzYTI5MGIzMjRlYTU4ZjNkIGxlZ2FjeS10cnVuaworMTQ4NzcgNzExMzQwZDQ0Nzc3NjM5MTQ5NjA4MDE0OWNlYjJlOWJjZTAxN2YwOSBsZWdhY3ktdHJ1bmsKKzE0ODc4IGMxNjA3NDlhY2ZmODU3MWI1YWMyYzQxNWViMWU2MmFkYzNhZDdmMmUgbGVnYWN5LXRydW5rCisxNDg3OSA2Njc4Nzg3NzY5MzM2YTM1ZmIxODkwOWI4MmI2Nzg3YTM0NTE0MzkxIGxlZ2FjeS10cnVuaworMTQ4ODAgOWI5YWJkZTAzMmIzMjQ1NTExOGVjZDE0YzRlODFjMzFkN2E5ODZlMSBsZWdhY3ktdHJ1bmsKKzE0ODgxIDViNTU4MWFmOTUxYzVkNGRhODBjOGZhMTE5MjI5MzY2Y2ViMTg2ZjcgbGVnYWN5LXRydW5rCisxNDg4MiA1NzIwZDFjMThmNGQxMzE1ZTFiNWU5MDQ2ZDJmYzU0ODBiN2YxNjJjIGxlZ2FjeS10cnVuaworMTQ4ODMgMzM4ZTA1NWI3Y2MwOWM4MDM5MzkyYjliODE1NmRjNWZlNTY4ZjU1NCBsZWdhY3ktdHJ1bmsKKzE0ODg0IGRhZGU4MmI5ZWUxOWNlMGYwODg5ZWI5YmViZjkwMDk4YWE0OGFhMjAgbGVnYWN5LXRydW5rCisxNDg4NSA0YTNmZDJjMTM3MmYyMjgxZTE4MzVmNzQxY2NhZDdlMjRmMDE1NzA5IGxlZ2FjeS10cnVuaworMTQ4ODYgNDNjMzZmNjNmODY3YzkzOTIwMTUzMmIyNzJhN2YzOTNlY2UxN2ZiZCBsZWdhY3ktdHJ1bmsKKzE0ODg3IDk5OWZjM2VlZGE5OWE5OWI4Yjk1NGI2YmE4NDFkZDg1MTA2YzUwYjEgbGVnYWN5LXRydW5rCisxNDg4OCA0Y2FjMzc2NDhhN2Y5ODYwMjRiNTAyY2E1OTMxNWEwZDcxNTZiYmZhIGxlZ2FjeS10cnVuaworMTQ4ODkgNDllMDI3YjQ4NjI3ZjA1MWJmZDI3NWU1MTU1OGQ0YzUzMDM0ODZlMCBsZWdhY3ktdHJ1bmsKKzE0ODkwIGU4YzMwZTY5NjY2YjBlNDJhOGIyNzQxZTg2ZGM2MDgyOTQ4NWUyNGMgbGVnYWN5LXRydW5rCisxNDg5MSAxNGU5M2Q4OWQzNGViZDFhNWM3OTAyZGI5ODZiYTUwMTMzNGVmYTc2IGxlZ2FjeS10cnVuaworMTQ4OTIgODA0NDMzZjAxMTJjOWI4MGIyZmZmYjk5NGI0OWRjZWMzNzdkN2Y5NSBsZWdhY3ktdHJ1bmsKKzE0ODkzIDBhYzU3N2ViODI4MmYwN2FiYzQyOTY0MGVmYmFlOGI5NGJlYWYyYjMgbGVnYWN5LXRydW5rCisxNDg5NCA4MWU1ZjgwMDAwOTQ0ZmM3NTRlNDUyNDUzOTMyNGYxM2I0YWI3NjIyIGxlZ2FjeS10cnVuaworMTQ4OTUgY2E5MzhmMzhkMDg3ZGZiMWYzNzM5YWU1Nzg0Mzg0MzE4YTdmM2Q2NSBsZWdhY3ktdHJ1bmsKKzE0ODk2IDIxYTliYmI1NzJkNzM3YjlhMGY4MzkwZDMxM2RhZWYyMWEzMTlmOTAgbGVnYWN5LXRydW5rCisxNDg5NyA4MzBkZDU4MWU5MzRmNmM3YjUxMzBiZDViZmZlNWI3ZTA5MWNhYzNjIGxlZ2FjeS10cnVuaworMTQ4OTggNzhlMzZlMDZlNTM2OWQyMGUyOTA2N2JhODdiZDRjZmZjMTNlZjFjMSBsZWdhY3ktdHJ1bmsKKzE0ODk5IGZlZDg5YjU3NjM3YTZlNDJmMDIxN2JlYTUxYjU3MzBhYWRlNTc2YWEgbGVnYWN5LXRydW5rCisxNDkwMCBkYjVjMDNmYThjNzNmNTVkOTY3NDM4MWVmOGM3ZjI3NGNlN2I4MWM3IGxlZ2FjeS10cnVuaworMTQ5MDEgYmUyZjAwM2Q0N2NjNmYxZTEzZDQzNTk0ZmNlNjA2NTM4OGMyNWEwZCBsZWdhY3ktdHJ1bmsKKzE0OTAyIDllN2FiYjI4ZTkyYTE3MTI5NDNlNTdkMWM4YjNjNGVjZjViMDBlNGUgbGVnYWN5LXRydW5rCisxNDkwMyA3NWFkZDk2NDRmZjM0YTI5ZjJjMDk5NDE0YmQ2OWM3OTE4MGU2MzJkIGxlZ2FjeS10cnVuaworMTQ5MDQgNTIyZWVhZTZjMDY2MzJlMmE5MzFkMzNmMDllYTZmOTAxYTM4NDBjMCBsZWdhY3ktdHJ1bmsKKzE0OTA1IDIzNmFjMWViMTg4ZTNkMjY5ZmJmYWI3YjNlZmNmOTBiMjY3YWZhYmIgbGVnYWN5LXRydW5rCisxNDkwNiA5OGIwOWM0MGQ5N2NjOWQ4Y2E5YWZhNTRmMWNmZTczOWViYTE3YmVmIGxlZ2FjeS10cnVuaworMTQ5MDcgZmViOWFmNzUyN2E1N2Y1YWRlMjU1ZTBhNGRkYjUyNDJhMGYwNjJkNCBsZWdhY3ktdHJ1bmsKKzE0OTA4IDQyMzg3YWRlNmFmYmU1MmUzOThhY2FjZjU4OTQ2NzM5Mjc0ODUzYjMgbGVnYWN5LXRydW5rCisxNDkwOSAzNTZiOGU4OWY4ZTMwNjQ1YTMwMGU3ZDM4MDQ3YWYyOGIwZDliOGVlIGxlZ2FjeS10cnVuaworMTQ5MTAgYzg4YzhhODUyNzQ0MDViNDAyZmY2MTAzZTEzNTE2MGE0YTBhNzgwNiBsZWdhY3ktdHJ1bmsKKzE0OTExIDZlNjhjN2RkY2RiNTdmNmZhODJjMGJiNTFhZTM4ZDRiMmRiMTViMjQgbGVnYWN5LXRydW5rCisxNDkxMiBhMmZiYzBmZjdjMmUwNzJlM2RjMzc5N2U2M2RlZmI2Y2RhMGE3NGYyIGxlZ2FjeS10cnVuaworMTQ5MTMgZmY2YzFhODJjMzIyYWNjNDVmMDUxM2M2NDY4YThlYWU1N2U2MzhkYSBsZWdhY3ktdHJ1bmsKKzE0OTE0IGY0MDdmYWIyNzM1ODlhMzNkZTIyMmRjNmZhMzUxNGZkN2U5OGM3ZDQgbGVnYWN5LXRydW5rCisxNDkxNSAyNjUzZmQ1MTZkNGUyZWUyMDE3ZmI3YzVmNzVjMWFhNGYzYTU2ZTA1IGxlZ2FjeS10cnVuaworMTQ5MTYgYjczMDNmMmZmNjEzYTNhNDFhNmJmMGMwYzcyMDM4ZjgzYTZhYjM3YyBsZWdhY3ktdHJ1bmsKKzE0OTE3IDBkM2RlNGMxM2NiNzI0Y2JmMGVmYjhkYjNmM2QzZDZlNzc4M2RmNmIgbGVnYWN5LXRydW5rCisxNDkxOCAyNzQ1ZGFlODcwNWYxOTQyZDQ0NDgyMzI4N2E2MTFmNjhlYmIxM2NkIGxlZ2FjeS10cnVuaworMTQ5MTkgMDE1NWEzYjEzYmYwZTBjOWI4Njk2NTk3MWViZmIwMDJiMWJlYTAxMCBsZWdhY3ktdHJ1bmsKKzE0OTIwIGRiODNlNjNiMzg0YjZkYzcyZjBmZDUwZjdmMmUzN2MzZjU2MGU2ODMgbGVnYWN5LXRydW5rCisxNDkyMSBmMDNlMmE4MTg4YWEwN2NmNWMwN2NjYzFlMDExODMxOTU4NzU2NTVmIGxlZ2FjeS10cnVuaworMTQ5MjIgNzcxOTNlOGUwMTM3MTkyZWFiNTM5ODQ1Y2ZmMDczMzE2NjQyN2ZjNCBsZWdhY3ktdHJ1bmsKKzE0OTIzIGU3ODllMmJmMDViM2VlZTFiZmMzN2NhOGI5OTM4ZGQxYmVkZDRkNjggbGVnYWN5LXRydW5rCisxNDkyNCBjMjljZGRlOGViZDgwMzA4ODhmODlhODQ4MTlhYjIwOTlhNWZiM2Q2IGxlZ2FjeS10cnVuaworMTQ5MjUgYjU4YWVkNzFjZDYzZjM3N2JmN2M0OTQyMzYwNTNjNjk0OTQyZGE0YiBsZWdhY3ktdHJ1bmsKKzE0OTI2IGM4ODg3OTJkZTZhNzcwODgwYTY3YzUyYjk5ZDVhNDRhYWE3OTU3ZmUgbGVnYWN5LXRydW5rCisxNDkyNyAyNDI0NTg1MDNiMTMxMWI1ZDY4Yzc4MTY2ZmY0ZTkyMzM1YmM5Zjc1IGxlZ2FjeS10cnVuaworMTQ5MjggZjVhMWU5NTQ0YzVkZTZlZTc0MzUyNDk5MjZiNzIzMmI5OTdjNDg4ZiBsZWdhY3ktdHJ1bmsKKzE0OTI5IDgzMjU3ZjMzOTRhZTMxMGM5Y2FmYWFkMDBhMTEwZmU2ZTVlNjg0YmMgbGVnYWN5LXRydW5rCisxNDkzMCAxNzE5ZTQxZTIzMzAzMWVkN2ExZjMxYjdkNzA0YTI1NzAyYWVmZDA2IGxlZ2FjeS10cnVuaworMTQ5MzEgMzliOTFjYjgwYjQxYzFhYmE0ODQ0MmZiMjA0MzBkOTk5MmZiZDdlNCBsZWdhY3ktdHJ1bmsKKzE0OTMyIGNkZjY4Y2U1ODZjNDM5ZWM1NTM3MjExY2I4ZWVlOTZkMjkyOTI0MzQgbGVnYWN5LXRydW5rCisxNDkzMyAxNTFiOTEzZTc0YTEzNzYyNjc5NTQyMTFhMzBmMjNkOGE4YWJiNmY0IGxlZ2FjeS10cnVuaworMTQ5MzQgOTRiNjAxZmFlYmFjZWFmMmM0ZWI4MGI1NzU5NjVlZmUxOWFmNzg2ZSBsZWdhY3ktdHJ1bmsKKzE0OTM1IGU3NWFjMjkyZWY0YzFmYWE4NWYxOGIzODc1ZTk0Y2ZlMzdmNmIwZTAgbGVnYWN5LXRydW5rCisxNDkzNiBmMDllOWQ2NTZhMTE1NGViZGU5YWM4Y2VmNTljOWY1NjdhMjE2ZTAxIGxlZ2FjeS10cnVuaworMTQ5MzcgYzNmYzJiNDYxN2ZjZDk2ZTI3OTlhZDgxZGNjZGZhNTg4MGZkY2RlYyBsZWdhY3ktdHJ1bmsKKzE0OTM4IDRkZDhiNmEzYjljNWRkYThiNGEzNTk4YzVjNDYzYWExNmUzZjA5MjQgbGVnYWN5LXRydW5rCisxNDkzOSBiYzg2MWFkZDVkNzEyYTE4MzViYmY2Y2RkOGJkMDE3OTNjZDM0Mjc5IGxlZ2FjeS10cnVuaworMTQ5NDAgNmQxMDhkNTA5MzQ2YTg5MjA0ZGYzYjk4ODMxYjZhZjZiYTBhZTJiYyBsZWdhY3ktdHJ1bmsKKzE0OTQxIDdmMThmOTc5YTkzYWZhM2NjZGY3YWQ0NzAxM2NjZTk4ZTI3MjMzZGMgbGVnYWN5LXRydW5rCisxNDk0MiA0NzYzYTNkNTlhYjlhMjU1ODIwMzc0M2U4NTQ4NjIwMzU4ZGZkMTk4IGxlZ2FjeS10cnVuaworMTQ5NDMgZjI4ZTkyZGJiOWU4ZTE0ZDhiNjQwODBmNDY4MzBlYzU2NGI5Mjk0YSBsZWdhY3ktdHJ1bmsKKzE0OTQ0IDQyZjIxZTQ3YjQ4NjA3MDcyZTlmYzc3N2Q2YjQ4NWI1YTBlMDk0ZDIgbGVnYWN5LXRydW5rCisxNDk0NSA0MWRmYzdkNGEzNmIyMjZmYmY1MjNiMjM3MmRlZmI1ODNhNjQ4MzliIGxlZ2FjeS10cnVuaworMTQ5NDYgNmZmN2Y3NmE2ZjJlNTgyZTEwZjliOWRkYTFiOGQzNjY0OGZiM2IzNSBsZWdhY3ktdHJ1bmsKKzE0OTQ3IGZlM2NiNzM0MWI3MDg0MmI0YWY1MTJjYTEzNTIzNDdmZjg2MGQ0OWIgbGVnYWN5LXRydW5rCisxNDk0OCBmODNlNDA4YWViMDVkZjEyOTFlN2Q0NjA3NmQ4MWM2MzI1ZDA4ODc4IGxlZ2FjeS10cnVuaworMTQ5NDkgMjUzY2RlZWFmNDJlZjZlODdkZDE3NWE2Nzk1OWYzZGY1NWUzOTY5YiBsZWdhY3ktdHJ1bmsKKzE0OTQ5IDYwNWViOTMyNmZmZTFmZDFlNDNmNDBlMjMzOGQ2NjUyYWI0NDlmZGYgbGVnYWN5LXRydW5rCisxNDk1MSAzZTNkMTUyYTg1NTQ3MDQwZjNmYTg1M2I2Mzk1Mzg0YmNkOTBjZDcyIGxlZ2FjeS10cnVuaworMTQ5NTIgYjczYzlmOGM1MzdjMWFlZDE1M2FhYzNmNmE3MjkwOGRlMzU0NmE2OCBsZWdhY3ktdHJ1bmsKKzE0OTUzIDA5MDlmNTYyM2Q0ZmEyYzJjMDVlYzFhNjMyODNiOGFmNmViNGY5YzIgbGVnYWN5LXRydW5rCisxNDk1NCAzN2Q4MjI3MmYwZjQ0NWJlZjAzNDJhN2MxMWY3YmNmODY2NzIxZmQ4IGxlZ2FjeS10cnVuaworMTQ5NTUgNGJmOThjYzM4ZGI3MWFjNjE1YTEyZmFlNWQwODM3N2NmMzcwMjM4NCBsZWdhY3ktdHJ1bmsKKzE0OTU2IDI2M2JlZTRlZjEzYzU5YTRlMDI4YWExOTRiYmFkMjJjZjUzNjVkOGEgbGVnYWN5LXRydW5rCisxNDk1NyAxZGMwYjYzN2ViMWIzYTU5MzE1OTE5YjliNzQxNmFhYjYzY2MwZDIyIGxlZ2FjeS10cnVuaworMTQ5NTggYTIxNmZlNzlhZTAwYjQxN2JkZDRhZGY0N2YxYWQ2NTYxOTg0OTg4YiBsZWdhY3ktdHJ1bmsKKzE0OTU5IDc3NDgxNzI4NWI4Y2EyMDM1NTUwZDQ1ODFiNmYxNTFjOTA4YTA4YWIgbGVnYWN5LXRydW5rCisxNDk2MCAzM2JmYzUxZGVjMDVjZjM5NDc2ZmNhNTU0YTgyOGQxYzVkNGE3ZjU4IGxlZ2FjeS10cnVuaworMTQ5NjEgNWVhNzczNDEzNTMxOThlMDdiMjU3MTJiZTRlOGE3MDlmOTI4YTE1OSBsZWdhY3ktdHJ1bmsKKzE0OTYyIGY5N2JiNDJkNDM0NDg1YzFkNjlkMTM5MzY3YjM3MTQ3YTQ5NTc1MDggbGVnYWN5LXRydW5rCisxNDk2MyA1MzBjZDlhZmE4MGQ1NDNiYWJkZTNhYTA4YWEwODBmNTgzMzE3ODk3IGxlZ2FjeS10cnVuaworMTQ5NjQgNWE2MjAwZmY3N2FhYzQ1NDdjNWMyODMzYmZmZDlmOWY5ODQ4MDg3MCBsZWdhY3ktdHJ1bmsKKzE0OTY1IDE3Y2U2NjM5NjdkODQwOGM1MzVlZTFjMGY1MjViODA1Mzc1NTMzYjggbGVnYWN5LXRydW5rCisxNDk2NiAzZTlhMWMxYTlmNTY3NjFlOTJlY2M1MDcyNDQ1YTc4ODkzMTJhNzNjIGxlZ2FjeS10cnVuaworMTQ5NjcgZTgyZTgyYjNiOWFkNTY1YWM4ZGY4MTM1YTY3ZmE2MTEzNTZkYmU2NyBsZWdhY3ktdHJ1bmsKKzE0OTY4IDJkYzFiZGI0MDg4ZWQ2ZjE4ZDU2ZDI1ZDczYjQ2ZjYxOTZiOTVhOTUgbGVnYWN5LXRydW5rCisxNDk2OSBjNDA1ZGJkZDI2YzllYzVkY2JlMGM3MDg4N2JmMmZkMTI1MTRiMWY3IGxlZ2FjeS10cnVuaworMTQ5NzAgZmZkMjQyZmVkMGUyZGM5ZGM5ODcyNzgwYzE5M2NkMDZkMzE5MTU1MSBsZWdhY3ktdHJ1bmsKKzE0OTcxIDIzNjYwYjY2YmNhMzBjMGU1ZWVkODQwMGI2OGZlNGI5ODNiZDM0YjcgbGVnYWN5LXRydW5rCisxNDk3MiA3N2IwMmU1M2Y2NjYyZjRjNDI2YzZjODgwZjBkN2M0OTNiYTdkMWY0IGxlZ2FjeS10cnVuaworMTQ5NzMgNzg1OWMwYTRhZDk1NDMwYmFiNTJhODBmZWExZDFiN2RhNDJmNjg2NyBsZWdhY3ktdHJ1bmsKKzE0OTc0IDdiZjhiMTBjZTJhYjVjMGQzYjM4MDc4OGMxOGU2MTM2NWFjMTk3NDcgbGVnYWN5LXRydW5rCisxNDk3NSAwNzRjMzBmZjMyMDZmZDlmZmRiNzRmYzMzOWQyZjE2NDExOGFlZDhjIGxlZ2FjeS10cnVuaworMTQ5NzYgNjMxMzVlOWRlZjI0MWU2ZjBhMGE1OTczMmEyNzE3NTNiMTc5M2M5ZCBsZWdhY3ktdHJ1bmsKKzE0OTc3IGQ0OTIzNzc1MjAyOTc2ZTNkMTQ5NzE1ZjhhNjhlNWZlYmNkN2VlNTQgbGVnYWN5LXRydW5rCisxNDk3OCAxNDVjMDA3M2Q3ODU4MWI0YTQ4ZDVhY2E0NWIyODdhN2EzNmJiNzJiIGxlZ2FjeS10cnVuaworMTQ5NzkgY2UyNmQ1ZjNkM2NlN2ZhNWM5ZDkyNDdiOTdlMzc5YWExMTJhZGZkNCBsZWdhY3ktdHJ1bmsKKzE0OTgwIDkyMzVhYzc2MTc2ZDQ1MjI4NTQzNGEwMGIzNTUwYjA0NjE0MzMxNGQgbGVnYWN5LXRydW5rCisxNDk4MSAwY2QyMmM4NGE0ZjE0ZDZmYmNiZjlhN2Y0NTQ3MjQxYTJjYWE0MTM4IGxlZ2FjeS10cnVuaworMTQ5ODIgZGUwZjkzZDkwZWU0ZDE5NTUzYmJmZjgzMzRhMjVhNWE4NTk4MDAzMSBsZWdhY3ktdHJ1bmsKKzE0OTgzIDA4Mzk4MzgyNzIyNDFlZDc1YTY0OTdmM2Y1MjA3NTg5YmMwODIwYzMgbGVnYWN5LXRydW5rCisxNDk4NCA3MjlmMzE1Mjc2NWNiOGY1NmJkYzBhOWJhYjU5NzZjYTliNzkzMjViIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg1IDFiN2M0OTQ1YzYxYzE4OWE0NmE5NTQ2ZDFjYjFlOGZiZTkzMjgwYjAgbGVnYWN5LXRydW5rCisxNDk4NiA3ZmEzMTc0ODQ5YmRiYTdiZDI4ODRjYmQ1ZTViYzhiMTIzMzQ3OWJiIERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTg3IDE5MGE5MjQyZjgzYThiMDBkMzAxY2QyMDk4MzlhMDQwOTk2ZTE5Y2EgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5ODggYTBhMjRkM2NmZDk2MTFiNmRlZTJjOWY3MTEzZTE4Mzk1MWMzNDU0ZiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNDk4OSAxNzYwNTI0MTY2M2MxOWMwNTBkMTM3NTNhMmNjYzdjMjVlMTQ1NGQ3IERpc3R1dGlsc18wXzFfMy1icmFuY2gKKzE0OTkwIGZiZmZhN2ViMmE0Zjc0ZjU2ZTk1MDNmOGUyNWNkMGFhYTg4OGE0YTkgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTQ5OTMgN2U5YTVjZjU1Yzc2NzZhNTk2OTYxNjg2NTM5MjZlODNhMDdlYTZmNSBsZWdhY3ktdHJ1bmsKKzE0OTk0IDFjM2Y5MTk1MWY3MzdhMDM3MzJlZGU3MzYyN2QxMDZlMTExMmMwYTggbGVnYWN5LXRydW5rCisxNDk5NSBiZTNlMGQxOTc1MjIzZWU2ODEwMDYwZGY0NzViMjBjYjUwNWVkNmQwIGxlZ2FjeS10cnVuaworMTQ5OTYgM2RhYzg1NGU2MTE4NTBlZGU3OTBlMTI0NTk0M2NlYjhlMWJhMGJjYyBsZWdhY3ktdHJ1bmsKKzE0OTk3IDYxMmJlMWJiNjVmZmUxYzFiZDdmMjZiNjUwNDU2Y2ZjMzZjZjgzMjAgbGVnYWN5LXRydW5rCisxNDk5OCBiZGZjYTU0YTE0MWNiYzNiYmYxOTM3YjNlZDlkNDYxNDNiNTYyYTk5IGxlZ2FjeS10cnVuaworMTQ5OTkgNjlkMTFkZjg0M2MxNTQ0YjJmMjA0ODM5NjU4N2E5M2ZjNTk4ZTFmOSBsZWdhY3ktdHJ1bmsKKzE1MDAwIDcwMTU0ZTJlOWM4OTBlOTNmMWU5YjI1NzA3ZTA5YTU2NWM3ZDIyMGYgbGVnYWN5LXRydW5rCisxNTAwMSA5ZWI3NjllMTVmODFiYzI0MDY3ZjViNDNhNDAzOGFlZGFkOWEwNzFlIGxlZ2FjeS10cnVuaworMTUwMDIgMGEzY2IwODJjNWRiZGI0ZjllNzg5OGNkY2FiNGE0NzNhNTlkNjU3MiBsZWdhY3ktdHJ1bmsKKzE1MDA0IDlkZGUzMTVjZGUzOTY5YTYwZDFhYzQ4ZjEzYTBkZDRiYzg3NjI5OWUgbGVnYWN5LXRydW5rCisxNTAwNSA0ZGEwNmZkZDNlNjM4MWJiZmViOTE2NTRhOTQwYjQyNWE1ZjY0MmM3IGxlZ2FjeS10cnVuaworMTUwMDYgNDE1ODVlODUxZjU1YjYxNDk0NWMyMGExZjRkN2I4MGFmNjM4MDNkMCBsZWdhY3ktdHJ1bmsKKzE1MDA3IDY2OTAzYzNmMTRkYjQyODZkNDZmOTNhMTI2MjEyNWQzZWM1ODBhNTIgbGVnYWN5LXRydW5rCisxNTAwOCBjMzQxZTY4ZjE5ODhlMzkzZDA2YjRiMTc2NmQ4NmM5NWM3NThiMDQyIGxlZ2FjeS10cnVuaworMTUwMDkgMGJhODU3MDlhNjcxMjk1MWE3NzBhMWI1ZDU5NzMzOGFkYWM3MGEwMCBsZWdhY3ktdHJ1bmsKKzE1MDEwIDIzMjY2MzUyZjEzOGMwMGNlN2E5ZmIwYjE1OGJmNzQ3OGQ1MWFjMzMgbGVnYWN5LXRydW5rCisxNTAxMSA2NWJjNWVhZjQ3Y2U5NmUxMmViMDZkOGFmN2M3ZGNkYTc0NjQ5OTRmIGxlZ2FjeS10cnVuaworMTUwMTIgZDFkMDE2YWNjZTc0ZWIyODlhNDEyMmY3ZTcxMmM2ZDZkMmQ5ODM0ZSBsZWdhY3ktdHJ1bmsKKzE1MDEzIDhjMGY4NjNiYTUwYzY3ZTM4YmY3NDdlNGI3ZWQ3MWJiOGMwMjZkMDQgbGVnYWN5LXRydW5rCisxNTAxNCBmYjIwZjZmZGQxNmQ2ZDA0OGJjNzFiMWM0MmZjNTkzZmIzOWFhMWQ5IGxlZ2FjeS10cnVuaworMTUwMTUgYWFjMTEyY2NhNzliNTE2ZDlhZTIxM2ViZTY3ODFhMzhmOTBlMGEyMiBsZWdhY3ktdHJ1bmsKKzE1MDE2IGZmNzVlNDczNGRkOWZlZmRjYTdiMGY3Mzg2ZTYxOGU4MGYwMmRkMWQgbGVnYWN5LXRydW5rCisxNTAxNyA2NGZjYWU3OGQ0N2FmNjM1NjQ3Yjk2ZTViMjU4YzBkZmZiODFlNDhlIGxlZ2FjeS10cnVuaworMTUwMTggNjZlOWM5N2Y5ZjY3N2MwYmM2NzhiMDhmNzZiNTAzOWM5NmUwNTE2ZSBsZWdhY3ktdHJ1bmsKKzE1MDE5IDc2ZWQxMzlmY2U1OTczNWZjNTBlZDhlMTUwYTJiNzU0OGNhZTk3ZjQgbGVnYWN5LXRydW5rCisxNTAyMCAzZmRhZWNmZmM0ZGRkYmM1MjU0NWFjYzE4MjI3NWFlY2JkM2MwMGUyIGxlZ2FjeS10cnVuaworMTUwMjEgOWUxZjYwOTc2MjA5ZjI3ZmMzZjhkYWYyNDNmZTUwMDRlY2YwNGQ1MyBsZWdhY3ktdHJ1bmsKKzE1MDIyIDI2MWU4OTU0NDA4NTRmOTBkMjEzNDNkOWEwMjQwZjZmOWVhY2YyNDIgbGVnYWN5LXRydW5rCisxNTAyMyBmNmI1OGIwMjFlNTY4OTI5N2IwNmVmZTYyNDViMGE5YzBhN2VjYWYwIGxlZ2FjeS10cnVuaworMTUwMjQgOGExZWM4ZmMwMGZlYTY2YTYwMzMwNzE4NmQ5MDNlN2U2OGQwM2E2ZSBsZWdhY3ktdHJ1bmsKKzE1MDI1IDBhYzQwZTQ3YmRiNWUxZjIyNjA5ZmQxODAzZGE3NDFiZDY0ZTE0NGYgbGVnYWN5LXRydW5rCisxNTAyNiBmZDc1NjExMjQyMDc2NGIwZGZhZjZhZmFlYzkxNDZkMmE3MWQ3Zjk1IGxlZ2FjeS10cnVuaworMTUwMjcgNTU5YjI1YTc5MDMyYWNiYzZmZGQ5Y2U0YTczYWVjNGZlY2FkZTEyYiBsZWdhY3ktdHJ1bmsKKzE1MDI4IGNmMTMzOGJjMjFjMDAwYmY1ZWQyMDZhYmQzNGVlNWM0ODFjMTU1ZTIgRGlzdHV0aWxzXzBfMV8zLWJyYW5jaAorMTUwMjkgY2EzMWU2NzkwMjRiNWM4OGEzMWM2ODkxYmU4Yzk4YzI1YmU1ZTM0NiBEaXN0dXRpbHNfMF8xXzMtYnJhbmNoCisxNTAzMSBjYmZhOTVhNmEwM2VlNjlhZTc4ZWJjYmZhMmRlZjgzNDE2NDU4ZjE4IGxlZ2FjeS10cnVuaworMTUwMzIgOGVmMzY3MjM0MjY0OWVhNTM5ZDM3ZDgxMzk5NjNhM2I3OGQ0ZGRiNyBsZWdhY3ktdHJ1bmsKKzE1MDMzIDU3ZmRmYTAwZGE5MzM3YTg4ZjJmZjVhMWNjZTkwNmFiMzA4NmRlYzggbGVnYWN5LXRydW5rCisxNTAzNCA2NDdiZjcxOTEyZjAyYzE0NjM4ZTM0OTc0ODk4ZjRmMzBhYmM5NjkzIGxlZ2FjeS10cnVuaworMTUwMzUgYWY4ZDIxMTNiYzFkMDI0YmMzNGU1NzYzNTI1ZmIyYjgxNTQ3NTBjNCBsZWdhY3ktdHJ1bmsKKzE1MDM2IGQwNmI1MGJhODFhNjJjYzFiZjMxZjdkNDEwYjczOTk4MjhjZjc3OWIgbGVnYWN5LXRydW5rCisxNTAzNyA1MWMwYzNiNmQ5MTllZmZjNTYxYmFhZTIxMzBlOGQ0NGUyOTViMzdlIGxlZ2FjeS10cnVuaworMTUwMzggM2E5NGM3Zjg1NTUxZTg5OWVlNWZjNzA3ZmU0NzhlMTRlOTA4YmNlYiBsZWdhY3ktdHJ1bmsKKzE1MDM5IDk2MDE5MjUxODgyOWIxZWVlOTYyNGFjODlkZDBmNmE2MDg2MzY4NWUgbGVnYWN5LXRydW5rCisxNTA0MCA5Yzk2ZTVkNDM3YTgyMWI3NDk5NGUyZDg5OGZjZDNjZmEwZDRlOGI0IGxlZ2FjeS10cnVuaworMTUwNDEgODE4NjE0NWM0YTA3ZDZlMjg2ZWU4NWJiYTcxMzFhNTk4NjE5NTlhYyBsZWdhY3ktdHJ1bmsKKzE1MDQyIDRjNmMyNDgxNjkzZWQ0MDY5MWI2ZWNhNDI0NjUzOWZkNjRkZWM0ZjkgbGVnYWN5LXRydW5rCisxNTA0MyBkMWQyMmEzNjI2OGY5NTM0NTk5Y2FkM2RjNTIyN2JiZGQ3OGI5YmIzIGxlZ2FjeS10cnVuaworMTUwNDQgNWYzNjI0YmZhNTk0YzM3Y2RlYTdjOGJjN2NhNWFlMDJjMGE1MWU3ZCBsZWdhY3ktdHJ1bmsKKzE1MDQ1IGZiNzVlOGFjZmIwNTc5OWU2NzEzNjJkZTY0Mzk2Yzc1ODRkZWZmMDYgbGVnYWN5LXRydW5rCisxNTA0NiAxNWQ0MTE0OWJmMjQyOTQyOWNhZDRhMWQzOTQxNDVkNWQzNTc0ZDVmIGxlZ2FjeS10cnVuaworMTUwNDcgYjdmMmIyMjVkMGMwMjA1NjkxYWQ4ODEzOTcyOWQyMzdlMzE1Y2QzNCBsZWdhY3ktdHJ1bmsKKzE1MDQ4IDBkNjRjZTczNTRiOTk5ZTQ2ZjE0YjcwNTgzNjBlNDIxMGQ2YjQ0OGEgbGVnYWN5LXRydW5rCisxNTA0OSA5YWY5OTcwNjU3ZmFlYjg1MzRkNzU5OWM1OTM3YzYyYWFjOWI1ODY0IGxlZ2FjeS10cnVuaworMTUwNTAgMzVhMTE5YWExOWI0YmVlMzFiOTQ5ZmFmNTE4NmE0NmJhOWQ4NGVhMCBsZWdhY3ktdHJ1bmsKKzE1MDUxIDIzNDZhYzA3ODBjZTkxMWIzMzE5NTVhNDFkY2I2NWYwMzBjMGViNGMgbGVnYWN5LXRydW5rCisxNTA1MiBiMTU3MjU2ZGJhNzY5N2M5YmRiOGVhZGY5YmU3NGExZDU4NTVkZjU3IGxlZ2FjeS10cnVuaworMTUwNTMgMTYzMTk4NmRiMTNhNjY0ZmY4YzBmYTVmZDRkMmNiYmU3ODg5NWJjMCBsZWdhY3ktdHJ1bmsKKzE1MDU0IGQ2NDBlN2Q0YWVjNDhjNWQ2MWM0MGRiNmQ5OTdmMjFiOGZlYjI2YTQgbGVnYWN5LXRydW5rCisxNTA1NSA5MTcyZWRhYWVmZjU4NjkxMGRjNGI1MGU0YzhiNDRjMjhiMmY2OWQwIGxlZ2FjeS10cnVuaworMTUwNTYgMTdmYzlmOTU5OTBiNDhlMTc4MjdjZWQ5M2Q3YjY2NjBlMjI3ZjNmZSBsZWdhY3ktdHJ1bmsKKzE1MDU3IDQwZTU4YzViNmY4NGZhZGMyOGE2N2JkMTE4ZDQwMGQ5M2JiNWUwMDIgbGVnYWN5LXRydW5rCisxNTA1OCBmZDkwNWJiMmY2YjYzMTAzMmYwMmU0MzkxNTI4ODNkNjhjODkzZjFkIGxlZ2FjeS10cnVuaworMTUwNTkgMGM2MmQxYzc2YzA2NDk3ZGMwZDM4MTI0YmQ2OGNiZTM1MjBmYTY3MiBsZWdhY3ktdHJ1bmsKKzE1MDYwIGJiYWFkYTQxYTIwYjY5ZGQ0MGY0MmE4ODZjMDAyZmJmZDZjMzI3NGUgbGVnYWN5LXRydW5rCisxNTA2MSAxZjdjMzI4MDFkYzExZTg1MDI3YmNiODc5MTJhOTRkOGExZWE1MjY1IGxlZ2FjeS10cnVuaworMTUwNjIgMGE0NWI5NTNmNGMwM2U4ZGYyOWY0ZTFlOGY2ZmRmOTliODExMDA5MSBsZWdhY3ktdHJ1bmsKKzE1MDYzIGU1NDA5MzA2NDI5NTVhODdmMDhiYWI4ZjliY2QzZDlkZTkyNjg5ZWUgbGVnYWN5LXRydW5rCisxNTA2NCBkZGM0ZTYyYjIxNmIyZmNiYzU2Y2NhZmEwMWJlNzA1MDk0NTM1YzJlIGxlZ2FjeS10cnVuaworMTUwNjUgZDMyMzliN2MwNWZlOThkYTUxOTk5ZjgxYjc3ODUyZjgxNDlmMDBlNyBsZWdhY3ktdHJ1bmsKKzE1MDY2IDNlNzBjNDVmOGQ2YmI4ZWIyOWNjZTY5ZjgyM2NmNzU1OWY3OGNmMGUgbGVnYWN5LXRydW5rCisxNTA2NyBhM2IwNDYyMzRjMDkzMTIxYTRlZjg0ZTNiMGQxMDA2ZWJhNzdlYzIwIGxlZ2FjeS10cnVuaworMTUwNjggZjc4MjQ0NjM5NWRiMmQzZTU5YjlkYWI5ZTZkZWM5OTRmOGFhOGYyMiBsZWdhY3ktdHJ1bmsKKzE1MDY5IDkwYjJhM2NkMzY1ZmUzMGExNzQwZGUxMWFjOTFhNTBkZWYwNjExMDEgbGVnYWN5LXRydW5rCisxNTA3MCAyMGE1Y2JmOWZjYzAyYzUxYzU4YjA0YTRkYjQ4ZjU4NWRkYzQ2M2E5IGxlZ2FjeS10cnVuaworMTUwNzEgZjFmNjY1ZTA3NWNhMzA1OTljNTZkNzFjNTA4YzMzNzIxZDJlNmRjYSBsZWdhY3ktdHJ1bmsKKzE1MDcyIDU0MGYxMDg4MWE1OTcyOWZlNDEwZDJjOWMwMWYyMDUzM2VhZmMxNzUgbGVnYWN5LXRydW5rCisxNTA3MyAyOWU3NTM0OTNkOGU1ZDc4OTliNmFkNzk1NDk4ZjQ1ZmE5N2U1MWIwIGxlZ2FjeS10cnVuaworMTUwNzQgMjBhMzcwZjFhZjhkZmE5YTY2ZjgwMDVjOGIwYzQ0Y2U1MWNmMWUxMiBsZWdhY3ktdHJ1bmsKKzE1MDc1IDU3ZjM0ZTE2MmU2NzYyNThkODJhZWNhZjNmMjlmZjQ2MjA5MDIyMGUgbGVnYWN5LXRydW5rCisxNTA3NiA1ZGUwYjkzOWZlNjFjY2JkZjc0MjI0NTViM2M4NzYzZDdhNmUwYzlkIGxlZ2FjeS10cnVuaworMTUwNzcgYjMyMTYyNzM4MmJjMTQ1OTdlYmYzYTkxNzg1MmI4YmJhMjY5YzE1NCBsZWdhY3ktdHJ1bmsKKzE1MDc4IGQ3NjI5ZmEzYjI5ZjU4MTdlZjcwNTgyYTJkMWFkMjRiYjI4OWIzZGEgbGVnYWN5LXRydW5rCisxNTA3OSAxYTIwN2M2OGU4YjRkNWY4Y2VmNTNhZGVlOWNjYjQ1NWFiZWZiZDFhIGxlZ2FjeS10cnVuaworMTUwODAgNzI5NmNkZGU4YTVlM2JlOTE4YTk5MmQ4MDM4YjdjMGRkMGMyMTU2NSBsZWdhY3ktdHJ1bmsKKzE1MDgxIGI1ZjZiNGJjZWY5MGVjZjYzNzM3NGM5NWZmZDViN2YxMDYwMjhiYzEgbGVnYWN5LXRydW5rCisxNTA4MiA5NDg4ZTRmZGFmZTQ2YjI1NThhYzI0NWI3ODkxNTNlZmE4MTE5MTQ4IGxlZ2FjeS10cnVuaworMTUwODMgNjZiNDkwNmQwZmM2YmU5ZWE3Y2ZmMWI0MzYxOTE2Mjk0YTczODYzZiBsZWdhY3ktdHJ1bmsKKzE1MDg0IDRmNTY3MWEzMTM0NzNjNmFkMmI1NDI4NmFiNTgxMzcxNGM5NjFhMzggbGVnYWN5LXRydW5rCisxNTA4NSAzY2M3Nzg0OGE2MmFmN2I3MDYxNmIwOTZjMWQ0MjU3ZDZmMjgxZTkxIGxlZ2FjeS10cnVuaworMTUwODYgNzdlNGYyMWUzZWU2NGE5NWRiZWY4NmY2OTRlZjY1YmQ3MmNmNzM2YyBsZWdhY3ktdHJ1bmsKKzE1MDg3IGQxOTVmMTdmMjkyNzMxZTYxYzkxNzliYzUyNDNhNjdiMTRiNmZlOGQgbGVnYWN5LXRydW5rCisxNTA4OCA2YjQ2NjdmYTQ5MzgxZGJlZDAwZTAxNjY4NjVmOWY2YWQyMGQ1OTJmIGxlZ2FjeS10cnVuaworMTUwODkgNTI1YjIzNTg3MjFlOWU5MGY3NTU1MmEyYmI2NmRjODA3ZjBmNzc0NSBsZWdhY3ktdHJ1bmsKKzE1MDkwIDM3ZmQyZTZjODFjN2Q3MGU4ODRiMTI4OWNiNWM0MzQ4MzJlOGNlZDcgbGVnYWN5LXRydW5rCisxNTA5MSBlNjllZWY2OTI2MTI1NTMzNzYyMDFjMjdiYTBjZjc2ZTYxOTc2OGZjIGxlZ2FjeS10cnVuaworMTUwOTIgZDMzNzQzMTAyZjhhZDNmMjIxZTkzMzZjOGY5N2M0MTFlZTEwZGQ5ZSBsZWdhY3ktdHJ1bmsKKzE1MDkzIDg1MTBiNGFiM2MzZGViYzMzYTFkNzM3ZTViZWNiNzU1YWM1MDVmNjMgbGVnYWN5LXRydW5rCisxNTA5NCAxODVkZTRlN2NlZjEwZTJiZDQwMzYxZjA4NjA4ZDNiN2M0ZDVmZGZhIGxlZ2FjeS10cnVuaworMTUwOTUgOWU5NjY2ZjY3OWY3MmMyNTY4MGE4YzY3YmRiOWQxNGI5MGRhNmYxMiBsZWdhY3ktdHJ1bmsKKzE1MDk2IGUyNjIwYWFiOWYyZDZjYjFjZTg1ZGNjMGFiYmI4YjM3MzRjNjlhMjQgbGVnYWN5LXRydW5rCisxNTA5NyBmYzU1N2Y0MzFlODdlMGRkYjYzMTg2NWFhNTFlOTlhNzNjOTRlYTU0IGxlZ2FjeS10cnVuaworMTUwOTggYWEzYjAyYTAzOGEzN2FhYTdkYTI1NmI3NWViMjg3MzE1ZTQyYWUxNSBsZWdhY3ktdHJ1bmsKKzE1MDk5IGJlNTEwMGFmYTFiN2VkMWE5Y2RlZmJmMTc5MmMyNGNkNzQyYjY2NWYgbGVnYWN5LXRydW5rCisxNTEwMCBmY2Y1ODhkODZiMTQwOWVmZWYyN2ZkZTdjNzhkMDI5YTYwYWQyZWE2IGxlZ2FjeS10cnVuaworMTUxMDEgZTk1MmE0YjkyMGFkZjA3YjUwMzQwNDgxOTE2ZmEzOTYwZDU2NjEzZSBsZWdhY3ktdHJ1bmsKKzE1MTAyIDI0ZDQxMTY4OTdkZDQ0N2I4MWMyNmZiODlhYzgxOTA1NDc0YWIwN2EgbGVnYWN5LXRydW5rCisxNTEwMyBmYWNjMTA1YjY0MWIwMWI5YmRlNjhkZTk1YTg2ODc1YmMzMjIwZjI4IGxlZ2FjeS10cnVuaworMTUxMDQgMTY4MDRiMzdkNzUyNWNlOTEwYmY2MmVlNmY5OWZhYWMwMGI3NjRlYSBsZWdhY3ktdHJ1bmsKKzE1MTA1IGU0MzQ5YjYyZmQ5YjQxOWMzMTQ4MzI4YzZmN2Y0MmZjMWJjNjIwZDIgbGVnYWN5LXRydW5rCisxNTEwNiBjNTliZGM3ZmQ4YTYxZGNhY2RlMTIwNTlkNjJjMzYyMTg3YjA5NDBmIGxlZ2FjeS10cnVuaworMTUxMDcgNjc4NTYxOWMzM2UxY2IxYzk1ZTgxYzcyMjc2MmJlODIxMzZjMTAxNCBsZWdhY3ktdHJ1bmsKKzE1MTA4IDE3OWE2ZTI4NTBhY2E1ZDBjNzUxNzZkM2M4OGFmMjllNDUyYTM0ZWMgbGVnYWN5LXRydW5rCisxNTEwOSA1NGU4MGRiNDk0MjM3NWViOWMxZGM1OWQwYTk5ZmJhYzVlOGQwOTc4IGxlZ2FjeS10cnVuaworMTUxMTAgOTk2ZWIzYjNiMzNlYzUzMjNmNTA2YzQxZjRlYjVjYTdjOTA1NjJjNSBsZWdhY3ktdHJ1bmsKKzE1MTExIDA0ODAyYjdlOGExZjA4NDZlNzBhNDAxMTY3MDdhNzgzN2Y2NDZhOTkgbGVnYWN5LXRydW5rCisxNTExMiAxZTc5MWQyZTg4NzUyZTJlZTc2ZDk2NjUxN2U2YjFiN2FmNTJlY2VmIGxlZ2FjeS10cnVuaworMTUxMTMgNWI1OWVhNDFkYjRlODY5MGIxNjc2ZTRlNTBjNWQwZGQ2NmIyYjFiMiBsZWdhY3ktdHJ1bmsKKzE1MTE0IGZiYzhkYWZhNDQ4NGM3ZTBiNGNhNGNjNjMxY2M1ZGNkNzg0ZmFlZGEgbGVnYWN5LXRydW5rCisxNTExNSAxMWVjYjY2NzBmNGY5ZTQ4MDE2NTYxZTE4MzBlZDUxYWRkNGNkYTI5IGxlZ2FjeS10cnVuaworMTUxMTYgZjczYmY0OTI0Mzg2ODJmMzhjZmQ4OGRiNWZhNmQ4OTZiNjhmMzdiMyBsZWdhY3ktdHJ1bmsKKzE1MTE3IDc5MWExMTJiZTNiY2Y4YmFjYTgxYzI2OWQ5N2UwYmEwYzM2YThhM2QgbGVnYWN5LXRydW5rCisxNTExOCA4Nzc5NjllYzA5NmZkNGY2MTA1ODZjYjViYTliNmI5OTEyZjA5OGQyIGxlZ2FjeS10cnVuaworMTUxMTkgN2Y2NTBkZjI3MWM5ZTNlZTlmM2M5YjUwMDg5ZGM4ZjczZGNkZGVlYiBsZWdhY3ktdHJ1bmsKKzE1MTIwIGU2NGZhYTZlMjcwMjJkMzNiNTFjMzE1ZGViZDIxZGRhMzdkYjc1OTkgbGVnYWN5LXRydW5rCisxNTEyMSA3ZmE3NmNjZGYyZGU3M2YzNjgyNDQ2OTA3ZTk3ZTY0ZWRjMzM2MDBmIGxlZ2FjeS10cnVuaworMTUxMjIgMDQ4MTA5NmEwZjQ1YmM5NzA4MTdkNmZiOWNmMTE0MDRkNDlhMzc0MyBsZWdhY3ktdHJ1bmsKKzE1MTIzIDY3N2UyMTQ3ODI5YTlkMmNhMGI5ZmY0ZGNkYTc3ZjE4NWEzZjc4NmQgbGVnYWN5LXRydW5rCisxNTEyNCBjMmQwZDY3NDRiM2JiN2U1MTQ0YjdiMzk4MGE5MDFlYTgxZmJmMjFhIGxlZ2FjeS10cnVuaworMTUxMjUgNjhlNDhiYjk0MDcxMWZiMThhNmM2N2IwNzZlMzMzZThjNzczMzU5NSBsZWdhY3ktdHJ1bmsKKzE1MTI2IGFmODdmY2FlODgwZmQ5YzhlNDc1ZmRjZmNmODhjZjNkYjZmMjY1ZmQgbGVnYWN5LXRydW5rCisxNTEyNyA0MjlhMzdmZjlkYjVjYzI3YmU5MTYwZDgzNzcyNTY3YjY1Mjg5MDhiIGxlZ2FjeS10cnVuaworMTUxMjggMjE0MzAzZDMyZjc2NjRkNDNmODRiZGQwYTY1OGNhYWQzZDIzNGM0OSBsZWdhY3ktdHJ1bmsKKzE1MTI5IGQ2M2I1N2FjNjE3ZDRkYjIzYmJhNmE0ZDYzNGJmMmM5ODc0MzY2YjcgbGVnYWN5LXRydW5rCisxNTEzMCBmNTdhZjM2MGI3ZTVlZjM3ZTYzYTg4NmZjYzg0YTk3MWI5YmVhMmNlIGxlZ2FjeS10cnVuaworMTUxMzAgMDExYmVlOGZkOWY3ZjRkYTQ1N2VjNzE1OTY0ODRmYjA4ODJjMDYxNCBsZWdhY3ktdHJ1bmsKKzE1MTMyIDZjZTZjMjNhY2QxNDIxYzg2MTRhZGI0YWE3NmQyNzM5YjEzZmNlMmQgbGVnYWN5LXRydW5rCisxNTEzMyAwNTJmYmQ5MzE0OTIxZmY3YzdlODJkZTE4ODJiMzI1NjI5YWUxZGRiIGxlZ2FjeS10cnVuaworMTUxMzQgNjNhZDc1NGFhMzBlZTJlNjZlNmU1MDA1YWE1ZWQ2ZjI2MzJlYmEwMSBsZWdhY3ktdHJ1bmsKKzE1MTM1IDNiZTJmNzU0YzAyMzliODFiZTEyMzY0MjY2ODAxMjRmMDc4ZGUwMDYgbGVnYWN5LXRydW5rCisxNTEzNiAzN2Q5ZGVkNWFiOTE0NTA5ZjQ0MzJlNDMwYTZmNjdhY2I4NTFhYzY0IGxlZ2FjeS10cnVuaworMTUxMzcgMTE2YzNhYTNjY2Y3MmQxNWRlOGM1NmRkMjQ0ZjdiNzkzOTcyODYxMyBsZWdhY3ktdHJ1bmsKKzE1MTM4IDVmMjlkN2MwMjQzMzg3MTg1OGRjYzQ3MjE1OGEwZGYwYmE1YzZmNTIgbGVnYWN5LXRydW5rCisxNTE0MCBiZTgyNTczZTQ0NDQ4MmQ1MDkzZTA0NWQ2NTAzYTcwZTIyNDNiMThjIGxlZ2FjeS10cnVuaworMTUxNDEgYWEwMTNmMmNmODBiZThiZDAxNWFhODdiYmRhNDk4OTQ1NzNmMjY4NiBsZWdhY3ktdHJ1bmsKKzE1MTQyIDYyNzIyNmRmOWYwMTgxZDlhNzUxMGRiNDRlMWFlZmI1ZmNlZjZkYzAgbGVnYWN5LXRydW5rCisxNTE0MyAzMmU5ZDBlNzg5MzUzMzQzNjQ5YTI1YTllNmE3ODVlZTM4NjBkMGU2IGxlZ2FjeS10cnVuaworMTUxNDQgZWVmNmEyNWYwOWM1MzE2ZGI4YTIxOTM1MzFjNTI2ZTBmYjNmMjU0MyBsZWdhY3ktdHJ1bmsKKzE1MTQ1IGM0ODE3MmFmMTNkYzE1MjhjYWVlNjVhMDZlMTcxZWUwZjUwMmYzMTEgbGVnYWN5LXRydW5rCisxNTE0NiBlNWIwYmVhMDNjZmE1MDU1NmVjZWExMDA1YWE4NTQ3ODBmMWZkNDNiIGxlZ2FjeS10cnVuaworMTUxNDcgNmVkYmFlNmRiY2Y1NWE4YjdiMmM2ODc5Mjg5NDUwNzNmYjlkMjNjYiBsZWdhY3ktdHJ1bmsKKzE1MTQ4IGE2ZjBiMzk5ZjY2NTY5NTkxOTgwOThiMTdhOGNkNmVmMjEwOTY0ODcgbGVnYWN5LXRydW5rCisxNTE0OSA4ZDdlMDc3MzdiNGM2YTE0YzJlZmVmMWE4YWE0NDdhMzRjMzFiNGQ0IGxlZ2FjeS10cnVuaworMTUxNTAgYTA0OThiMTUyNDRjZDEwYzhkYmFhMjAwNjNkOTUxY2Y4NGYwMzJiOSBsZWdhY3ktdHJ1bmsKKzE1MTUxIDYwZGQ5NWM3NTk5OTkzNjI5YzQ5NmRlMmM0NjMxNDAzZTZlNWI4NDYgbGVnYWN5LXRydW5rCisxNTE1MiAzYmIzOTg5OTYyOTFmOTNmMjFmNzQ4MWIyZDNmNGIwN2QxMzY2NjdlIGxlZ2FjeS10cnVuaworMTUxNTMgZjgyYjI1NzdmYTBjZjA2NzI2ZjdhNDhhZTEyNjg3MTNjYjRlOTcxZSBsZWdhY3ktdHJ1bmsKKzE1MTU0IGYwNzA1YmNmNjczYjJjNzUzYTE0YmEwNzMzNjc0MTJjMDhkNmNiMGQgbGVnYWN5LXRydW5rCisxNTE1NSAyMzkyZDEwZTIxZjE2OTRmNjdhOTQ3MjQwYzM4ODcyMDk4NjA0YTNhIGxlZ2FjeS10cnVuaworMTUxNTYgOGJmOTEzMDIwNjA0ZWNkZWQ0Nzk4MmQ0NjQ4NTMwOGNjNmVhZDU5NyBsZWdhY3ktdHJ1bmsKKzE1MTU3IDlmMmM3ZjcyNzJmYTcxZWRiMGMxZGE5Nzc4ZjU3MzA0MTViZTZiNTYgbGVnYWN5LXRydW5rCisxNTE1OCBhNTc0M2UxNDc4NjBjMTZhYTY1YjNjODVjYjY5ZGZkYTY0MmI1ZjljIGxlZ2FjeS10cnVuaworMTUxNTkgNGM1MWE5NjZkMmEzOTBlYjM2MTQ0ZWU3MzNkZTUwY2RkODc0OTI1OCBsZWdhY3ktdHJ1bmsKKzE1MTYwIDgxYzk2NmIzNWMxMjYyMjAxYmY2Y2NlNWZiNDUzM2FkMTk4MGE1MTYgbGVnYWN5LXRydW5rCisxNTE2MSA2N2U5NjE1NzdkMGViOGZhMzhlZDljYTk2NGRlNTQ3MDNiNzI4YzE5IGxlZ2FjeS10cnVuaworMTUxNjIgMTU1NTRkM2E2OGM3MTVjODM5NWVkMTQ1YzIzMTZlZmIxMzBhYzFkNyBsZWdhY3ktdHJ1bmsKKzE1MTYzIGVjNmI2Y2E1ZDExMTYyM2FmNzViYzZmZDA1MmRiYmFmMjk1NmYwMmIgbGVnYWN5LXRydW5rCisxNTE2NCAwMWNmZjlmZTJkNDUyMTI5NTU4YjQ3ZGQ3ZGY3YzFhZjI2NjQyNDgxIGxlZ2FjeS10cnVuaworMTUxNjUgMmZiNmM3MzlkMzI0NzFjMTFkZGUxZGU1NzQxZGJlNGU2ZWU0MmYyMiBsZWdhY3ktdHJ1bmsKKzE1MTY2IGNiNGYwZDgxODgwZDViNGI1ODM1OTIyZWI1NzJiYWZlZTIyNGM1MWUgbGVnYWN5LXRydW5rCisxNTE2NyA1Yjg3MGMwZWE3YjYxYTBmOGRiNDBiYmVlNjE2MTJhNDY0Mjc5ZWM1IGxlZ2FjeS10cnVuaworMTUxNjggNGM1ZDYyZTg2NzViMzg5MTI0YjYyYzkxZDg4YTExNzRlM2RkOWNlYiBsZWdhY3ktdHJ1bmsKKzE1MTY5IGFlNTI1YWIyM2VlZmM2MWVjNTJkYmU5NzcxZTI2ZTQ1YjI4ZjY4ZjUgbGVnYWN5LXRydW5rCisxNTE3MCA3ZGU5MDJjMWY0MzllNTZkMWU5MDhmZjgxMDNiNmY0NDMwZDAwZTc0IGxlZ2FjeS10cnVuaworMTUxNzEgMmZjNTNkZGEyMGViNjNlNDU3MGNjYjQzNGE4NTdlYjY0N2E3ZmEwMCBsZWdhY3ktdHJ1bmsKKzE1MTcyIDBiNjg5OTAwODlkMjE0OWUwMzQyZjAyYzZmYzFlNTRlNWE0YjgzMjAgbGVnYWN5LXRydW5rCisxNTE3MyA5NWUyOTZlNjdhMTJjMDFkZDYyOWQ4OGMzZTY4NDc3OGE0ZjhmOWNjIGxlZ2FjeS10cnVuaworMTUxNzQgMjU5YzRiOWM0Yzg4OTc2ZmIyMzE3MWZmYzliOWRiY2VlZjY2ZTI0MCBsZWdhY3ktdHJ1bmsKKzE1MTc1IGFlMTA2Mzc5ZTc1NmMyNzc2Y2E2OWMwNDNlMWZjYWYwZDk3NGI0MWQgbGVnYWN5LXRydW5rCisxNTE3NiAxYzg1YWU2NzZiYTdlNWRiYjgyMTA2NmY4NDQwNTM5M2IxZmNhMzFhIGxlZ2FjeS10cnVuaworMTUxNzcgMzYyNjI2MTE4OWI0OGQ5YjE3YTM2YzdlNTMxZjBmNzM1ODMxYWQwYiBsZWdhY3ktdHJ1bmsKKzE1MTc4IDY5Nzk5NjZlZTk0ZGExNjdhMGVjMTZhZDUyYzllYThiMGJlMzU3NmMgbGVnYWN5LXRydW5rCisxNTE3OSA2ZmI0MGE4NWE1MTk3NTg5OTU0ZjYyMjMzNmUwNDg3YmVkODkwYTc4IGxlZ2FjeS10cnVuaworMTUxODAgMGQxM2NlMmUxNTViOTM4MjY3ZjNmNDE5OWEwOWJkNjg0NGE0NWU5YyBsZWdhY3ktdHJ1bmsKKzE1MTgxIDBhZTYzNTIzZDUwNGJkZmEzODhjMTY2OWI4MzM3NzhmNGVkYjMwZTYgbGVnYWN5LXRydW5rCisxNTE4MiBjMGJmM2VkOTM4MzU4MGZmZTA3MmU5ZjViYWQ2NDMyODllNDEyOWRhIGxlZ2FjeS10cnVuaworMTUxODMgZTg3ZTZiZGZjYmRjNjc3ODkxZDIzNjUwM2Y2ZDBjNjY3NTY1ODUzZSBsZWdhY3ktdHJ1bmsKKzE1MTg0IDk3OGM5Njg3YmVlZjRmZDY0ZGViNTU0ODRjYzJkMWQ3OTg2NjZkNTcgbGVnYWN5LXRydW5rCisxNTE4NSA2YjJiOWEyM2E0MWYxZjhjYTU2NDg2ODVjNGVjNjQzYzBiNTE1YmVhIGxlZ2FjeS10cnVuaworMTUxODYgZDk0MDBjNDc2YjlkYzJlNWUzMTE2NDdkY2FiYTQzYzkwZTFjZjQ2NSBsZWdhY3ktdHJ1bmsKKzE1MTg3IGM2MDU5ZTcwYmFiMjNiZWJkNDg2N2Y5MDJlYzY0YWU2NzM0ZWQ5NWIgbGVnYWN5LXRydW5rCisxNTE4OCBjYTk4OTQyZmUxMDNiOWNjMjIwMjEyODE4ZWU0ZDcxYTViMmVlYzM2IGxlZ2FjeS10cnVuaworMTUxODkgM2ZkMTMyMjJhODc2ZjNhMTg3Nzg5OTk2YzgyZTY3OTgwMzE3MDYyNSBsZWdhY3ktdHJ1bmsKKzE1MTkwIDgxNjEzMzQ5NDJkNGZmNWIzMWE2MDE5OGE5NmQ4MGUyYzE5NzBlYmQgbGVnYWN5LXRydW5rCisxNTE5MSA2YThjZDA2ODIwOTYxZWFiOTAwYjI3M2VhZjMzYTE3N2YwZDg2MjZiIGxlZ2FjeS10cnVuaworMTUxOTIgY2E3Yjk5ZDI3YTQwNzFhMWUxYTljNTU5OWQ4MTdiNzIwOGY0NGEyMiBsZWdhY3ktdHJ1bmsKKzE1MTkzIGRmZjdiMjYxMTZkZWJkM2JmNGRkMTRjNWRmYTIyNWJmMThkYTdiMWUgbGVnYWN5LXRydW5rCisxNTE5NCA4Mjg5YzBlNTUxY2QzMTI4NGZmYjhiZmJjYjkyODUyZjlkYTdiM2NlIGxlZ2FjeS10cnVuaworMTUxOTUgZjBiNzE5MTNjMGFhN2IwOGNjMzA3Mzc0ZmZlYTAzN2I5YTY1MjljNyBsZWdhY3ktdHJ1bmsKKzE1MTk2IDQ1Njg2OWVhYTdkNTkxYTVkZGI4N2I1ZDVhYWQyNzhkODMyZTgxYmYgbGVnYWN5LXRydW5rCisxNTE5NyBkNDc0NjBiMWE2Nzk5NzI3NzA0M2ZjMjUzNWYyNjI3ZTRmMWRmNWMzIGxlZ2FjeS10cnVuaworMTUxOTggZDc2MzM0MWQzMzEwYmUwZWI0NmY1NWNhODBiNGM5ODAxZDQyYWY1MSBsZWdhY3ktdHJ1bmsKKzE1MTk5IGM5OWJiYTllOTIxMmNiMTBkZTM0NTM2NWZkZDVmMzU5OWUyYzZkYWIgbGVnYWN5LXRydW5rCisxNTIwMCBmODc2MTY0ZmExNTE0OTg5ZDFmNDMxNzIzZTU0M2UxMzk1YTE0OTNhIGxlZ2FjeS10cnVuaworMTUyMDEgMDNiODE5MTI4MzVlYmU5YjVjMWFlZjE4Yzc5MTgyZjEzOTY5N2YwNCBsZWdhY3ktdHJ1bmsKKzE1MjAyIDljNGE0ZTZiZDU1NWFlZDBhNzYxM2FmNGRlMTg1NWYyZTY5MDljMWMgbGVnYWN5LXRydW5rCisxNTIwMyBlMzY3YWQzZWE1OWE4NjFkMzFiMTBjOGUxZThjMGYxODhjMmRkZTUzIGxlZ2FjeS10cnVuaworMTUyMDQgOTUxZDg0ZTFkNTRiZWIwMDc2NDkzZWYxNWUwYzE5MjU2NWRkZWMyNiBsZWdhY3ktdHJ1bmsKKzE1MjA1IGUzYmIyMzliMmRiZjVlMDVkYjdlNGQ4MjJhMWE3M2JlNDg5NDRhOGIgbGVnYWN5LXRydW5rCisxNTIwNiAxOWY1M2Q4YmQyOTgxMDZjMjg2NzY0OWNiOWUwMmRhZTUzNjZkYzkyIGxlZ2FjeS10cnVuaworMTUyMDcgMTZkYzgwNzMxYzIzYTIwYzE5MDM0ZjA3YWI2OWU0MTJmNjVlODcyZCBsZWdhY3ktdHJ1bmsKKzE1MjA4IDMzYmEwNjI2ZWY3MmE5ZTEwM2E4NWUzNTM4OTliNjk1YWU5YTU3NTUgbGVnYWN5LXRydW5rCisxNTIwOSAzNDY5YjJmMTc2MjRmODYyNzIxNGMxNmI5OWFlNWRmMGQxNmFlYWQ1IGxlZ2FjeS10cnVuaworMTUyMTEgZDBmMjkwYjNjMGIyM2JjMDU4NGFkOTRjMWMwOTcwNzcyMGMzNmQ2YyBsZWdhY3ktdHJ1bmsKKzE1MjEyIDQ4NjE2MTg5NDUwN2Y0MDU4ZTdlNGU3YjU3NDY4NjVkNWM3NWI4MDMgbGVnYWN5LXRydW5rCisxNTIxMyA0Y2IzMzM0ODIxNjBjOGY4MjMwOWNjZGExZTljNDY0MWQ4NGI0ZTFiIGxlZ2FjeS10cnVuaworMTUyMTQgZGUzNjViNjVjMTdiYzhkOWYzMmYwY2U2OWE0YThjNGRlNGJjMDNiNiBsZWdhY3ktdHJ1bmsKKzE1MjE1IGQ1ZmRjOWIxZTQ3NGM3MjFjZWVkNWZjNjI1OTFlZTY5MmJmOWU3NzEgbGVnYWN5LXRydW5rCisxNTIxNiBjMjhmYTAxZTczMjljM2M0MTZjMWZkNWVhYmZlNWZkYTdjNzI4OTdhIGxlZ2FjeS10cnVuaworMTUyMTcgZTc2MjNkMDE5MjdjOGM5ZmI1YmQ5MjkzZTUxMWQ4OWIyY2ZmNmFjZiBsZWdhY3ktdHJ1bmsKKzE1MjE4IGU1YjMxYWNiMTBjZWI2YmYxMzhkMjllZmY4ZjBkOWU2MTIwMjIyMWIgbGVnYWN5LXRydW5rCisxNTIxOSBmZDBlNWRhZWY4NmFlNmRhMmU2ZjdlMGI4OGQyYWY5NjI5ODcxYTZhIGxlZ2FjeS10cnVuaworMTUyMjAgMTQ0YTg5NTcwYTM5Y2YwNWM1MTQ3ZWVhM2MyYzdhMmZhOGZmYjcwYyBsZWdhY3ktdHJ1bmsKKzE1MjIxIDc0ZDRlNDUzYTdmN2RhMzk2NWUxNTM4YjBjZWQzOTYwMWM0NjhkMWUgbGVnYWN5LXRydW5rCisxNTIyMiAxODk1MWEwMjRkMTFkZjJhNzU4OTA2YmI2MjdlNTk5ZjQ2NmE4ZDRiIGxlZ2FjeS10cnVuaworMTUyMjMgNmY1MDk2YThkMDNhMjBiOGM1NzVhYzZjOTk3OTYxYzg0ZDRiNTc4MSBsZWdhY3ktdHJ1bmsKKzE1MjI0IDQ5YjBiODQ2ZjY4MzQ3MmQzNDMwNjFlZDAxMWVmM2YwZWQzMTAzOWIgbGVnYWN5LXRydW5rCisxNTIyNSAwYmY4YWJkMDJiZDhkN2NkMWU2NGU3NGFiMThmY2E2ZDcwMDI1YTQ4IGxlZ2FjeS10cnVuaworMTUyMjYgMTgxYzZmOTVmNmY2YTVlYmJlM2M3YzNkZTlhNzg4NDNkNWRjMzgyZSBsZWdhY3ktdHJ1bmsKKzE1MjI3IDc2MTNmOGIzYzFjZTRjZDUwOThkZWUyNjc5MWUyM2QxYzc0MjJjMmIgbGVnYWN5LXRydW5rCisxNTIyOCBlMzllYjkwYjI1MGEwMmE2MjQxZGZjNDk2NzA3NjIyNjQ4OGM3MTE1IGxlZ2FjeS10cnVuaworMTUyMjkgMmEyZDVmZjkzMzA4MDc3MTg2NWI5YmEwZWUwYzNjZDM5NjkyY2VlZiBsZWdhY3ktdHJ1bmsKKzE1MjMwIGU1NjdlMzNkZTY0NWJmNzBkMjVlNmE0YTYyOGFiMDc5ZTJmZTM2ODQgbGVnYWN5LXRydW5rCisxNTIzMSBmY2I5MmI5NmYxYWZiNTYwMzkzMTJjMDIyMzA1ZGNmNzg3ZjcxMTVkIGxlZ2FjeS10cnVuaworMTUyMzIgNjk5ZGZiMTI1NGNiZjcyMzhiZjI5MmY0OWViN2MxNTdiMDExOWNiNCBsZWdhY3ktdHJ1bmsKKzE1MjMzIGMyN2Y0ODRhZWZmZmE3ZmU0MzA2ZmYxNDY1ZWE2NjQwMTQzZjA2NzUgbGVnYWN5LXRydW5rCisxNTIzNCAzNTAwYzQzNTBmNjI2ZTExMGMwODkyNTU0MmU3ZTgzNjhlMWM1NjZhIGxlZ2FjeS10cnVuaworMTUyMzUgZjFiZmYxZWM3OTZiNjQxMDkzMjExNWMxNjQ4ZGY3OTMwZTQyNDhjZCBsZWdhY3ktdHJ1bmsKKzE1MjM2IDg2NmFmMWQ4Nzk3MDg0YzY3MmFmYzhhNjUzNTdhMTM4NzdlNTdiY2IgbGVnYWN5LXRydW5rCisxNTIzNyBhM2UxZmVjYjQzYzZlNTE5ZGRhZGQxNTA3MGUwNzcxMGZlMGZmNTlkIGxlZ2FjeS10cnVuaworMTUyMzggYmUxZDc1ZTE2Y2I4MTYyOWU0YzE5OGU0ZmRkZmM0YWU5ZmQxYjljMCBsZWdhY3ktdHJ1bmsKKzE1MjM5IGE4ODk4YTE3MmZlMmYwNzY5NzI1NzU3NWYzNDY1OTM0YTY5ZGNkNzMgbGVnYWN5LXRydW5rCisxNTI0MCBhM2MwYjZjZGQxNjhhNjk0MzEzZmJhZDg5Y2I4Yjc5NTkzMzAzNWQ5IGxlZ2FjeS10cnVuaworMTUyNDEgMTllM2U4ZjhjNTc0ZDIyYTY4NmJhMzkxZDI0OTFmNjAwZDM3ZTg3MiBsZWdhY3ktdHJ1bmsKKzE1MjQyIGZjMjc2ODc3NWY4MjE5ODM5MDJlYmE1MDkxNjFkMjhiMjM3Y2Y2YjEgbGVnYWN5LXRydW5rCisxNTI0MyAwZGI1YTM2MDI1MjYxZmY4ZTY3MWYwNDdhNmU3NDhkZjIzOGIwYmY1IGxlZ2FjeS10cnVuaworMTUyNDUgMTBhZGJmODE4M2U2OGUwMjdkNTU5OTk1ZjEwN2YxMjhiZDZmYjRiNyBsZWdhY3ktdHJ1bmsKKzE1MjQ2IGYxZTg2N2FkN2Q4NWFjM2EzMDQwMmNjNDkyM2M5YTk0MjZkMGMzOGIgbGVnYWN5LXRydW5rCisxNTI0NyA4YjMzMGQxNjM4MDA3NzE4MDU2NTgwNzA3MTc1Y2ZhOGM1ODQyZjQyIGxlZ2FjeS10cnVuaworMTUyNDggMTk1ODU3MWQyNWMxNmJjZTRkZmNjNTk2ODgyODVlYmYzMjVhOTRkNSBsZWdhY3ktdHJ1bmsKKzE1MjQ5IDRjZWUyZGEzZGFjZmQ3NWRjN2QxMTczOGIyOTRhYzNlMzViYzQ1MzIgbGVnYWN5LXRydW5rCisxNTI1MCA3MjBkMzU1NmIxNDM4NTIxN2ZmMzU2MTZiMmJlNTZiMzY3OWYyMDE1IGxlZ2FjeS10cnVuaworMTUyNTEgMTcyNWU4MDJlM2ViZDUyZTdkYTViZDlhODQyNzYwYjdhNjU5YzdlZCBsZWdhY3ktdHJ1bmsKKzE1MjUyIDA0Y2ZhMTM0MWE1MDljMTc5NjlkOTFhNGYyN2U3OWFiNTA1NTZiNTIgbGVnYWN5LXRydW5rCisxNTI1MyAxY2JhNjU4OWNlNjY3Y2VmN2M0NTY5OTU0OWZmZGVlMDgzNjA3MTZkIGxlZ2FjeS10cnVuaworMTUyNTQgYmVmMjRkNDhhZmM4YzViNGQzNmFkMThjNjA0MjIwNjY3Y2JlMTkxYyBsZWdhY3ktdHJ1bmsKKzE1MjU1IDJhNTNhM2E0Nzk2MmE4ZmYyZjA4NGVjMzZjZmRlZDc4Y2JlYmVkODIgbGVnYWN5LXRydW5rCisxNTI1NiBlNTBiYmI4ZTk4ZGFkMmFlOGJjMmM4N2M1MjE3N2M0ZTQ1YjhkMjcwIGxlZ2FjeS10cnVuaworMTUyNTcgMGQ3NTU1NWVkNmViNmQ5NzA5MDZlYWQwYWNhNjU5MjNlZWM0MmJkZiBsZWdhY3ktdHJ1bmsKKzE1MjU4IDA3ODBhYmE5Nzg5ODkzMThhZjIwZmU0ZWQ2MjM1NmYxNjA5ZDAzNjggbGVnYWN5LXRydW5rCisxNTI1OSBlYjQzM2VmYTI0ZGVlYTg0NjJkZjA1MDg1OTA0OWRiNDhiMjljZjVhIGxlZ2FjeS10cnVuaworMTUyNjAgYmQ5MmM1M2IxNjY5OTMzNDRhMTRiNTI4NDU0MTQwM2I4OTcwNWJlOSBsZWdhY3ktdHJ1bmsKKzE1MjYxIDJjZTJhODMyNTNlODAzMTdjNDI3YmZmYTY1NmJmNjhjZWM1ODhiN2IgbGVnYWN5LXRydW5rCisxNTI2MiAyMTE0ODNiZDBhNTE4MmRjYjYzNjBjM2U2ODAyNTNiN2M4Njk4NWZhIGxlZ2FjeS10cnVuaworMTUyNjMgNDRlNTIxYTkzNjQ4YTUxMjdlYTRkNzBhOGY1Zjg4OTRmY2Q1MzEzZCBsZWdhY3ktdHJ1bmsKKzE1MjY0IDVjM2U1OTk5ZGFhMTZiODExOTY5M2Y3OTk3NDIzNTY4YmVjNWQzMDggbGVnYWN5LXRydW5rCisxNTI2NSBmNGRkN2M4ODQ4ZmNhNDVkOGIzZWIwYTNlZGUyYjA0MTA3YzMzZWMwIGxlZ2FjeS10cnVuaworMTUyNjYgNTY2MWY0ZjlhNDdmNzk4NDg4YjQ5ZmE1OTdjZDcyMTE3Yzg3YTI3YyBsZWdhY3ktdHJ1bmsKKzE1MjY3IGI3NmJhY2NjZDM0NjMxMGQ2MmE5NzliZTdkYTliMWY0NDE4NzE2NmIgbGVnYWN5LXRydW5rCisxNTI2OCBlNjNlY2NiYTg3M2I3NjQ3NDFhZTU0MjRkYTQ2MzFkZTEzNjQ3OWRjIGxlZ2FjeS10cnVuaworMTUyNjkgMTNhMTY3OTNiYjFjZjA4MDk4Y2JkYWFjNzRkMGYwMGI4Y2ExNWM4ZCBsZWdhY3ktdHJ1bmsKKzE1MjcwIDg3NDdmMWM4YjVmYmViMWY3OGRmM2EzOWY2N2YzYmE3OWZlYTA5ZmIgbGVnYWN5LXRydW5rCisxNTI3MSBhNjExNTczMjhiMTIxZTE1ZGI2MTExM2JiZDVkOGE0NTMyNjJlOGI4IGxlZ2FjeS10cnVuaworMTUyNzIgY2EwZTlkOTdkNTU0YzQ4NWFkZDZiYjhhODU1OWUyMTkxZDg1NThiNyBsZWdhY3ktdHJ1bmsKKzE1MjczIGJhNTQ4NjJjODc4NWMyMGVmODg3ZGY0OTY1MGE3YjNiZTRmOGYyYjEgbGVnYWN5LXRydW5rCisxNTI3NCBmYjQ3NzUxMTFlZDlkNTEyZjUxYzgwNDRkZDFlMzcwYWY1MThmZjAzIGxlZ2FjeS10cnVuaworMTUyNzUgZTZlOTE0ZDViMjA3MmZlNDZlZGQ1ODZkZDQzZDc2ODM0NTg5MjQwNyBsZWdhY3ktdHJ1bmsKKzE1Mjc2IDZlYmUwYWNiNzc3NjQ5MTJjYTNlMDhhYTMyZGFjODg2ZTJmY2NhMjUgbGVnYWN5LXRydW5rCisxNTI3NyA5ZTUzYTcxMTIzOTVmYjQwOWQ4MDU2ZDM4MzNiYjJiNjgxZTM1MWUwIGxlZ2FjeS10cnVuaworMTUyNzggYWY5ZDYyM2JhYmIwNzcxNzc1MTBiOGNmMDA4ZTg4NjYxNGY5MWU5YSBsZWdhY3ktdHJ1bmsKKzE1Mjc5IGI2YjdiZDIwYzg0NWI3Mzc2ODliMTI5MGM1MTA3YTBhYmJkNDIxOTIgbGVnYWN5LXRydW5rCisxNTI4MCBkMzU3YWU4ZmJmZTU5MGFhYWIxY2Y1ZTZjYTRmNGFhODcxY2I0MzA1IGxlZ2FjeS10cnVuaworMTUyODEgMGMyOGM5Y2FiYmRhZWIwZmI5N2VkNjUyZGZiOTYwM2Y3YzM3ZjBkNiBsZWdhY3ktdHJ1bmsKKzE1MjgyIDAxOWVhZWY2MzdmZjVmOTljZTYxMmExZDlmODhkNGFkOTNjMjNlMjQgbGVnYWN5LXRydW5rCisxNTI4MyA0YWUxMjczMTJiYmZkNzg1ZWRiN2ZkMzE3OThlNGQ4ZjQwYmVmYWQxIGxlZ2FjeS10cnVuaworMTUyODQgYjQ3NmU0YThjODkxMWQyYzRlZWFiYWRjZjFkNzUxOWIzZGU0NDZiMiBsZWdhY3ktdHJ1bmsKKzE1Mjg1IDZmNzM4NDhiODQ1MjE5MTkzZjBlMGQyYmFlMGM1ZWIwYWQxOWI4NjkgbGVnYWN5LXRydW5rCisxNTI4NiA1YWU4NWJkYzVmNjE2NTBhNTRkZDgxZjgxYTNiMzgwNjIxYWMzMzNlIGxlZ2FjeS10cnVuaworMTUyODcgYzBhZGJjOWNhNTgxMzE4ZDY0NDI5ODZjZGMzMmFiNGU0NjYyNmQyMCBsZWdhY3ktdHJ1bmsKKzE1Mjg4IDU0MGQ5YmIxNjQzOWYwN2JhY2UwN2FmN2EzODYxNDQyYjYyZTVlNGMgbGVnYWN5LXRydW5rCisxNTI4OSBjMmJiNWU0YjA0YTg5ZDYzZjcwMjg0MzQyNGI2ZmMzNjYyNWQ1MmExIGxlZ2FjeS10cnVuaworMTUyOTAgODRjZDUyYjU2MGU1NzFlYmEzNzFkNzEzNmFiY2M5YzQyYzI3YjAwMiBsZWdhY3ktdHJ1bmsKKzE1MjkxIDgyY2JiMmRmZThiZGIyN2JlMTIzNzBiZGE4MzBjOTI3NTYwNDhkNDQgbGVnYWN5LXRydW5rCisxNTI5MiA1MjM1NjU2ZjlkMGYwZTIyZGNkMTEzYTUwODg3MWZiNjBjYTUyMDk0IGxlZ2FjeS10cnVuaworMTUyOTMgMTg5Mjk4YTFmYWI0YzIyMzI4NmZkZDI2ODc3OTMzZTExZTQxZTg5MCBsZWdhY3ktdHJ1bmsKKzE1Mjk0IDhhNTAzNjU0NDcyNzc4ODM1ZjFiNWZiMmZjZTcxMzA0MjNiYmIyZGIgbGVnYWN5LXRydW5rCisxNTI5NSBjYzA1ZWRjY2NmNTJiYTM3YWY1MmRlNDgwNjlmNjgyMzUyYzQwYWUyIGxlZ2FjeS10cnVuaworMTUyOTYgN2NjM2RkN2NkMzFhYzZhNWNmODI2ZmIwYmM4M2Q2ZGZmYzM5NmMyMSBsZWdhY3ktdHJ1bmsKKzE1Mjk3IDg1OWU1MDBmMDc2MDA0NjNkNTdkYmI5ZjY2ODdlNjEzNDlhNzY2ZjUgbGVnYWN5LXRydW5rCisxNTI5OCBkNzQ4NGE3NDMzNTQxYWE5NzhmMDQzNzI2YmM3OWY1MjE3ZGEyMDA5IGxlZ2FjeS10cnVuaworMTUyOTkgODFhMTIxZDIxMzQwODNmZGJiZjMyNmU2MTc0ZjEzNzk3YjM0YTA0ZiBsZWdhY3ktdHJ1bmsKKzE1MzAwIGMzNGJhM2UzY2ZjZDM4NTBkY2M0MTdlNmJiYTljN2I1NzI4OTk0NGMgbGVnYWN5LXRydW5rCisxNTMwMSA1OWVlMTcxMjQ1MTE1OWM5MThhZDI5ODY2NGU5N2Q4MWI0ZWEwZTQ3IGxlZ2FjeS10cnVuaworMTUzMDIgYzhkYmQ1ZjcwMjg4Yjg0OWM3ZTBhZjkzMzdlYzdhMDg0NjM2Yzc1MiBsZWdhY3ktdHJ1bmsKKzE1MzAzIDU5OWJmYTRmZmQ0OWMxNDU5NGJjYjU0NDIwYzBiNDMxZDE4YTc3NDUgbGVnYWN5LXRydW5rCisxNTMwNCA2YjY0N2UwODc5MjVhYjc3MzhkNDFkNTgxOGZiNDhiZDQ3YzdiMzg3IGxlZ2FjeS10cnVuaworMTUzMDUgNzY5ZWRiMmRhOGI5M2ZmN2EyMTRhODJhMDExYmEyNDA1YWYwYWYwNiBsZWdhY3ktdHJ1bmsKKzE1MzA2IDE3N2U2MWM1NTQyNmRiNDE2NjgyZjlhNjc4Y2I0NGFjNjE3ZWY2MTMgbGVnYWN5LXRydW5rCisxNTMwNyAzZTZlOGY3NmE5ODgzODM2MzhkYzg3NTg3YWU0YzhiMzEwOTRhZTZkIGxlZ2FjeS10cnVuaworMTUzMDggZWZkMWU1ZDIyODRhZjU0ZWEzM2YzMzgxZTAzYTYwNGJjOTg3MjVjZSBsZWdhY3ktdHJ1bmsKKzE1MzA5IGRjOWQxYjcxY2MzODBjNmY3ZWU1ODU3MmU1NDZlYjY4YTBhODI1ZGIgbGVnYWN5LXRydW5rCisxNTMxMCBiZWY2NzVkYzExY2MwYmMxODQ0NzJkZjY3MGY2ZmQ3Y2FjZTYzNGFkIGxlZ2FjeS10cnVuaworMTUzMTEgNjZlNDdlODVlYzUzYjVlYmE4N2IwMGE1ZWUxMGNlN2MxZTI1YmMzOCBsZWdhY3ktdHJ1bmsKKzE1MzEyIDEyYzc0YjEwMmQwMjdkN2RiMDZlM2EyYTAzMDM5ZDVjZWNjYjM2MTIgbGVnYWN5LXRydW5rCisxNTMxMyA4ZjdiMjRiNDBkZTczNjE3M2E0M2M0OTEzNGEwNTQxN2U2MzJlZTlhIGxlZ2FjeS10cnVuaworMTUzMTQgMDRjZjc4OGQ4NjJiZTA2YWE5ZmZmOGQ5ZjFmMmU1NDg4ZDkxZDcwOCBsZWdhY3ktdHJ1bmsKKzE1MzE1IDc4MzgwZGZiMmE5MDZkYWUyNmRkMGNiZDRlOWUxM2FhNzc5YTA5M2EgbGVnYWN5LXRydW5rCisxNTMxNiA5YTg0MWQ2ODQ1M2E3YzhkZWVmNTIxOWNkMzJhNjcwYjkwNGJhM2VlIGxlZ2FjeS10cnVuaworMTUzMTcgNGRmODQ2MmEyNTlkZWI4ODBmMmE3OGY0YzVlNDY3ZDhkMTE0ZTAxYiBsZWdhY3ktdHJ1bmsKKzE1MzE4IDNiOGQ5ZTYzZTRlMTU3YjcxNWU3OTY4YTg2ZmE0YmM0YzlkODcyOTQgbGVnYWN5LXRydW5rCisxNTMxOSAzOGQ1YTExZDljZDRiMDAwZWY2MWE0MTY3ZmE2Njc4NzNlYjhlODk2IGxlZ2FjeS10cnVuaworMTUzMjAgN2I4ZDBhNDdkYWE5N2I2NjYwMGQ5MjZmMmVhNzViYTY0YzdmNTI1ZSBsZWdhY3ktdHJ1bmsKKzE1MzIxIDdiMGUwYjU4NjdlMmQzOTY2MTAzM2JjYjc2MzU4MzM5Mjk0YmY5NmQgbGVnYWN5LXRydW5rCisxNTMyMiBiODdkNzU3OThkODE2YzMyYTE0Y2NlZmUxODBiZTYyOGZiZGU1YzRmIGxlZ2FjeS10cnVuaworMTUzMjMgYjBhNDM1MGQ1YzAzMTM3ODgzNDEyYWFlNGI0MjdmMWNmNTcxYjU0NyBsZWdhY3ktdHJ1bmsKKzE1MzI0IDUzOWExYTk5YTc4YjQ4MjM2ZjAwYzJkNjI4M2I2MWRlMjYwYWRhY2UgbGVnYWN5LXRydW5rCisxNTMyNSAxOWU2MWI4ZjRlMDA2Y2RmMmJmNjQ4YjU1MTVlY2U2ZWI5ZWQzOWIzIGxlZ2FjeS10cnVuaworMTUzMjYgMWJlMjMzMTU4OGIyMzhiM2Q4ZmQ4MDJjMmMzNjE0M2FmMTQ4NzhjMyBsZWdhY3ktdHJ1bmsKKzE1MzI3IDY2ZGQyOThlYWY4YTVkNGFhNWY4MmE2NjhhMmM4OGJjYWIyNWNlYjIgbGVnYWN5LXRydW5rCisxNTMyOCA5YTk3YTcxNGExYmUwMzAxZWZjNWE0OWJhYmJhZGFhYTI2ZTg1NzE2IGxlZ2FjeS10cnVuaworMTUzMjkgM2RiZTQxMzgwMjY2NjA4NDNhNmQ2YmVmNTRkY2QzOTlmMzkxNjE5ZSBsZWdhY3ktdHJ1bmsKKzE1MzMwIDhiY2QxNDMxM2MxMWNkYzkxNzY4YzE2NTAxZjdkY2JkNWEzYzA5ZDggbGVnYWN5LXRydW5rCisxNTMzMSAwZGYxOGY5NDcyNjc4YzZjMGMzMjRjODYwNzczYzhiYjM1M2MxNzY1IGxlZ2FjeS10cnVuaworMTUzMzIgNTk1MmVmNjc4NmMyMDA4MzNmY2MzYjFmYWE0YzcyOTE3MWEzOTIxOSBsZWdhY3ktdHJ1bmsKKzE1MzMzIGFlZTdjNDRiYjRmZTViZWZiZWRlN2E4ZjhhNDY3NjBmNGZlOTZmNTYgbGVnYWN5LXRydW5rCisxNTMzNCA4YmE4YjU4NTdlODk3NTZjOGFiNzFkZjczOGE3NWM4NTljNWU3ZjA3IGxlZ2FjeS10cnVuaworMTUzMzUgYWY4NmNmODgyZDBmZmMwZDYxYWUxMmNmNWVmN2VlYmVjNTcxMmNmYyB1bmxhYmVsZWQtMS45OC4yCisxNTMzNiAxYzdjMmRkMWJlYjFmODEwNmE3YWZhNjFkNGI4YmFiY2M4M2UxNzU3IGxlZ2FjeS10cnVuaworMTUzMzcgZGM3ODliM2UyYjliOThkODQ2MGYwMGUxZjFjOTE1YTQ1ZDIyMTFhNSB1bmxhYmVsZWQtMi4xMDguMgorMTUzMzggODVmMDBmOGNkNjc0YmJjNjM3YzE4MWZlNWFjNzVhODE3MGU1YWY0MSBsZWdhY3ktdHJ1bmsKKzE1MzM5IDA3NzQ1NmMzMjRiYzU5ODkwMTQ5MGJhMGE0NTE3NzAwNWU1YzEwZjkgbGVnYWN5LXRydW5rCisxNTM0MCA5NzgyNTM1NDIwNzYwY2JlZTk2MGI4NmMxM2YzOGFkMTdkOTlhNzlkIGxlZ2FjeS10cnVuaworMTUzNDEgZTBhMTIwOTVmYWMyZTEwOGRkN2RjMzQ2NjI4YjcwZWQwZjQ1ZmYzNCBsZWdhY3ktdHJ1bmsKKzE1MzQyIDZhYzNhMmMwMDQwZmNiMWRmYjRjODhkOTJlY2E4NmIzZTZkOWMwYTkgbGVnYWN5LXRydW5rCisxNTM0MyAwYmFiMWUzNmEzYTZjMjNmNzM2YTA5NTE5ODA5YWU5MTMyOTBkZWE5IGxlZ2FjeS10cnVuaworMTUzNDQgZGI5NDU4YzJiNjMxMDdmMzUwNTYxZGEyZmZmZGM3YjNkNWU4ZjE5YyBsZWdhY3ktdHJ1bmsKKzE1MzQ1IGNkZTRkYTE4YzRmYTA5YWFkODIxOWQ2NTk2ZjFiZmUzOTk3YjIwNzMgbGVnYWN5LXRydW5rCisxNTM0NiAwYjkxYzNiMzg0ZDhjYzM2ZWRkMzRhYTQzNjEzMjg4ZTNjZmQ2ZDg4IGxlZ2FjeS10cnVuaworMTUzNDcgNmNlMjFlNDVhOTZlZWJiODg5NWE4Mjg2ZmJhMTEzMmM0OGUyYWUzMyBsZWdhY3ktdHJ1bmsKKzE1MzQ4IDQ4NWQ1ZWFmMGY3NTcxMDZmMDQ2YjQyYzk3OGVhNzUyMGRhMDkwOWUgbGVnYWN5LXRydW5rCisxNTM0OSA1NDI3NGJlYjI0NGQxZDliMGM2ZTM0ZGYyNDNjOTczMjg0ZDNlMTc4IGxlZ2FjeS10cnVuaworMTUzNTAgMmNjNmU2ZGZlOWJiNzU2NWUzMTdiNWY2YjdjYWYxMTQ4NTc0ZTA0YyBsZWdhY3ktdHJ1bmsKKzE1MzUxIGNlZjQ1ZjFhNzk0MzA3OGNiMDRkYTVjOTcyZjM2NTY0ODNhMDI2MTQgbGVnYWN5LXRydW5rCisxNTM1MiBlNDQyNjYyYjI4ZTE4OTAwMTcxZWI5ZWMzNDczYzYwNTg5YzViYTIyIGxlZ2FjeS10cnVuaworMTUzNTMgNzZiMzM5OWIzNjRjZGQ2NjE0OThjODFmYjA5YWY4YWVjOWFiZDU0MiBsZWdhY3ktdHJ1bmsKKzE1MzU0IGVhZWU5MjRlZmIxOTJjZDk5NDBlMDE5NmE3YmZiYjU4ZmViYWVmMmMgbGVnYWN5LXRydW5rCisxNTM1NSA1MjhjZmU4Nzk2NjUyMDdhMWU0Y2U3ZDAyNWQ5MGE5MTMyMzgzN2M5IGxlZ2FjeS10cnVuaworMTUzNTYgMDVjMDY3MTU2NTdiY2M0ZTA5MjZhOGM1MmNlZGE3NTAzN2JlNGNkZSBsZWdhY3ktdHJ1bmsKKzE1MzU3IDU2NDIzYjkzODBmNGY3NmIzNmMwNmMyZDJkZjNmMmFjNTNjYjg0YTQgbGVnYWN5LXRydW5rCisxNTM1OCA2MjZjOTdhYjEyOGNmZTk5NzY4NmQ2M2U3YTEzZjkxNzhkYjc4MzQyIGxlZ2FjeS10cnVuaworMTUzNTkgOTJkMWRkYzFjNTdmZGI5ZTA2YzY0MGE3ZGQyZjJjZWExYzU2YmE5MCBsZWdhY3ktdHJ1bmsKKzE1MzYwIDY0NTVkOGZiNzg3NjFlNjk2N2Y5N2VlMGM3NjY3OWNlNDA1YTViNzIgbGVnYWN5LXRydW5rCisxNTM2MSBiNTcwZDRjZDY0MGFjMzhkZmViZjNlMzZhOWU5NjcwYWNmOGI1NTc1IGxlZ2FjeS10cnVuaworMTUzNjIgODJmMTc2YjcwNjdiN2NmMzJjNjZkOTJkOTdmMWM2YWUyMWE4OTYxNCBsZWdhY3ktdHJ1bmsKKzE1MzYzIGRkNjA3OGQyMGY3ZjgyZTA1YjliMTgzMWY3NmQ5YWEwMjM2YWY3N2YgbGVnYWN5LXRydW5rCisxNTM2NCAzNWNkYjNkMDNmZDM1MmM1MDBkZWQ1NWNjMDE3OWY5NDllNmYyNDE5IGxlZ2FjeS10cnVuaworMTUzNjUgYjVmN2FiMjcyMjM3OTUzMzRjOTk0MDMwMGYzNGRkMTQ2Yjg2YjQyYyBsZWdhY3ktdHJ1bmsKKzE1MzY2IGExMTEyOWNlZWNhNWRmNjllNDdjMWJiYzdiYWZkMGU3ZmY4OTg1NzggbGVnYWN5LXRydW5rCisxNTM2NyA1MTI1M2UwOGY3Njc4ODEwY2RkMTQwZDhhNjcxZTk1YzRiOGMyZjY0IGxlZ2FjeS10cnVuaworMTUzNjggYThhYjA5ZWY0OGI3YWY1NWY1NzU0NmU5NzU1MjUxOTA0OTQxYjA0MSBsZWdhY3ktdHJ1bmsKKzE1MzY5IDMyYmQ0YmFkMTA4YmE4Y2NjNGI0NmE3MjA5YWM5Y2QwODdjNTJjNWQgbGVnYWN5LXRydW5rCisxNTM3MCA3MWU0MjAyOTZlZjExMjdlZTU1MTUwNGIxZTRkN2IxNDJiNmYyMWI3IGxlZ2FjeS10cnVuaworMTUzNzEgYzE5NWZhMTU3NTQxYzYxY2ZmN2Q4M2RiNjEzOTc3Mjk2OTFlMjNkNiBsZWdhY3ktdHJ1bmsKKzE1MzcyIGIzMjBjZjNhOThiOTA2ZmRhZjdmNTdmMGE3NTZkNTAwMDFjOGZiMmYgbGVnYWN5LXRydW5rCisxNTM3MyA1NjQ4ZGY3NDM5NWY5YjQzN2JkOWZhYzI0YzkwMGY1NGEwOTY5OWFmIGxlZ2FjeS10cnVuaworMTUzNzQgODIyOGMzYWU5MTMwYWE4ODA4M2I0YzI2NjczNjcwZGMyMjM0ZjMwYiBsZWdhY3ktdHJ1bmsKKzE1Mzc1IDhkN2FkMzgxOGVhNmU3MzhjNWU5Y2U4NzA5YWNmNTdkYjJkMmU5NjAgbGVnYWN5LXRydW5rCisxNTM3NiA2NzIzM2RmMTMwMzczZTc3ZTE5MmEyYjY3M2ZiZWNjZTExZDU0NmQ3IGxlZ2FjeS10cnVuaworMTUzNzcgODFiYWJiYTViZDM0ZTk5YjMxMDNhMWM5Mjg3YjA0YTM5ODI1YTU4MiBsZWdhY3ktdHJ1bmsKKzE1Mzc4IGQ5Y2ZhMmU2Zjc4MjA4NTA3ODE2N2VkMDBhY2MxY2RlNWQzYmU5ZjEgbGVnYWN5LXRydW5rCisxNTM3OSBjYzQzNTBiMWI5MWZjOTUzNzIxN2E4YzQyYWI1ZDUxN2I4MjE0MWI4IGxlZ2FjeS10cnVuaworMTUzODAgZWI0OTE0MWQ2ZTEwZjA3NTQ0NjFlMzdmNmRkOGVjZDhmOTQ0NjViNCBsZWdhY3ktdHJ1bmsKKzE1MzgxIDllYTZhZThjZjA1Y2JlY2Y4OWIxODRjNzgwY2U5Y2FkMjU2YjdhYTIgbGVnYWN5LXRydW5rCisxNTM4MiA4YTgyZGRhZWJhNmFhMTQwYWMxNmZkNzNmM2QyY2FjYTBhZTRlNzc4IGxlZ2FjeS10cnVuaworMTUzODMgZjdmOWE3NDBlZDFjYjVkMjNiMmQ5NGExMTg5MjA4MjI1ZDkwMmU3NSBsZWdhY3ktdHJ1bmsKKzE1Mzg0IDlhNzcyNWVhNzhlYjBiMGE3MTE0MzYwZjcyNDU3MGZlZTU0MzM1YmIgbGVnYWN5LXRydW5rCisxNTM4NSA2ZTA3M2JhNTE0MTQyZDk5MDA3NTA5OTE0YWE0ZGE4YTkwYWRjNzViIGxlZ2FjeS10cnVuaworMTUzODYgMTExZGM5MTY4ZTQzNWMyYzJlN2ZhM2I0MTFkNTg0NzU3ZDczMjI2NiBsZWdhY3ktdHJ1bmsKKzE1Mzg3IGE2Yzg0MTNiM2M0ZmY1Mzg2YjU1ODdiMjg5NGJjYjQ0YjNkNzdjNTggbGVnYWN5LXRydW5rCisxNTM4OCA4N2Y1OTQ2YzU2ZjU2NmI1ZmMzNzIxYzk3ZTdmMDA4YWUzOGNkYWYwIGxlZ2FjeS10cnVuaworMTUzODkgZTdjOThhZjAyMDg0OTFkOWNjMWMzOGQyZDQyYjBkYWQ0NjRjYmUwZiBsZWdhY3ktdHJ1bmsKKzE1MzkwIDNlZmVhYTc1MjFlNDFiMmZhZGQ2OGRiMTgxMzkxZWExNDA5ZjU3YmMgbGVnYWN5LXRydW5rCisxNTM5MSA1N2Q0ZmM4MzA4ZTNmMTdjZjczMmIwNzI5NjYxZDk5ZWU0NDE1MzA1IGxlZ2FjeS10cnVuaworMTUzOTIgMTMyZTI3MTQ5ZjlmM2Q2NzhlMWNhZTEzZmY0NDQ0ZjA2ZDJhMDE3NiBsZWdhY3ktdHJ1bmsKKzE1MzkzIDM0ZDJiNTBlZmYyZWI5MzFkNTEzYjBjY2U4NGEwYjlkN2MxODNhMTAgbGVnYWN5LXRydW5rCisxNTM5NCBhNTY3MDdiMDdiODFkZDQ0MTdhNDYxZTQxNWViNGVhZTNiNWJjNDZiIGxlZ2FjeS10cnVuaworMTUzOTUgZGRmOTg2YTk3MWI1NjhhNDIyYjM1ZjRjNWJjYmNlODBhNzQ0OTFhMyBsZWdhY3ktdHJ1bmsKKzE1Mzk2IGJlYTNkNzcwYmUwYWM0ZWViMGU0NWFiM2EyOTIxYTZkNjBjYWU1YjIgbGVnYWN5LXRydW5rCisxNTM5NyA3NWRhOWQ2MzUzMWQzMjU3OTA0NDg2ZWM3YmRlNzZjNDE2MGVjNDQ5IGxlZ2FjeS10cnVuaworMTUzOTggNjk0ODFjZGU1MTFkODY1ZGY3MTlhYzBlNjY2MjBiZTFmYjE5MWE1OSBsZWdhY3ktdHJ1bmsKKzE1Mzk5IGRlZjk1OTM1MjQyMmQxOGQ3ZGIzZDYxOWJkMjhjZTE5OWU1OGJiYjQgbGVnYWN5LXRydW5rCisxNTQwMCA5MTdkODQ1ZTZlNWYyMWU0OTllNWU5N2E1NjI1OTkzYWNiYjU1MWNhIGxlZ2FjeS10cnVuaworMTU0MDEgM2YwNmY0NzY1YmE0MjFiMmZlNzg3NTQ1YmE0MmI1MWE2OWQwNWFjZCBsZWdhY3ktdHJ1bmsKKzE1NDAyIDAwNGJiMjBkYjExZTA4NjdlYzU0MDA5NzM2Y2VlNzA3YWJkODgzZjEgbGVnYWN5LXRydW5rCisxNTQwMyA5MWIyZWMyMDc2MzM0OWVmNDBlYTMxMjk4Y2ZhYzIxOWNiMTY5MjM5IGxlZ2FjeS10cnVuaworMTU0MDQgMDZmZjk2NmY2OWQ1MmYzYjAzNzA4NGQ0M2NhNWE5OWYwMzJiYzkzNCBsZWdhY3ktdHJ1bmsKKzE1NDA1IDAwYWE2M2Q2ZDI2ZWEwZDUwMDIxOTI3NTY4MzZmNWJmYjM1ZGQ3OWMgbGVnYWN5LXRydW5rCisxNTQwNiBjNGViNzBkMjRhODczZmNjNDNjZTVlMTkyM2YwZDUyMDRhNmNmM2MxIGxlZ2FjeS10cnVuaworMTU0MDcgMTdkMWEzZjFmMDg1ZDdhNjRlMzZmNTBiZDMwZjUzNGE0YTQ5MmY3MCBsZWdhY3ktdHJ1bmsKKzE1NDA4IDAzNWFiYjkzMDMxN2YzZGM4MGVkNDgzZjFiMjc3Mzg0NDg5NzNiMzQgbGVnYWN5LXRydW5rCisxNTQwOSAyYTUzZjVkYzA1OTBmZGQ4MGIwNmI5Y2NkMmMwYzczMzk1ODhlYTkwIGxlZ2FjeS10cnVuaworMTU0MTAgYzkyNjY4NzY2ZjVkZjliOWFlMzQzMjI3ZjAyZjdiNjIzZjk2MDY5MSBsZWdhY3ktdHJ1bmsKKzE1NDExIDFiMDgzZmVkOWE0OGYzYjRlNTVhODg0YzFkOTY0ODUwZTA5OWQwN2YgbGVnYWN5LXRydW5rCisxNTQxMiBmYWE5OGM4ZjNmNDIyNTI1OWY0MDQwNDliYTk3MWI4MWZlMmI4ZDc1IGxlZ2FjeS10cnVuaworMTU0MTMgODY2MzY1YjQ0ZjIzNzQ4NTdkNzkxZTZjMDY0Yzg3NjliNGE2ODZmMiBsZWdhY3ktdHJ1bmsKKzE1NDE0IDBhMzA4MWRlNTVhMTg1Nzg3ZGJjNDM2NThiZDYyOTM5NWJlNjgzMWEgbGVnYWN5LXRydW5rCisxNTQxNSA2YjE0M2NhNGZkN2YyMzRlMDQ3MmJkZjE0YzQ1ZDQ1MGI4N2RiMDczIGxlZ2FjeS10cnVuaworMTU0MTYgNGNjNzRiZjgwZTBiYzdmYjI4MjM3NTFiYjJiNGE1MzI1NzBkNmFjMiBsZWdhY3ktdHJ1bmsKKzE1NDE3IGY3YTg5OTY0N2NiM2ZiMGYwOWI5ZGMxNDA5NWIwM2JiNDZhNjEzMjYgbGVnYWN5LXRydW5rCisxNTQxOCA4MDViYjkwYWYxNGQ3MTBmNDNmMThmYTE1MDZiNWMxZjQzMzE0OTVhIGxlZ2FjeS10cnVuaworMTU0MTkgZTJlNDM2YTYyODk4MTkxMjIyOTFhMmRmNzdkYTVjMzNkZDdmZTM1OCBsZWdhY3ktdHJ1bmsKKzE1NDIwIGI2NTYzZDlkZjA2ZDA3MmUzMjI5MzQyZTdmMWUwNjE2ZDFmNjcyN2UgbGVnYWN5LXRydW5rCisxNTQyMSAwNTQ5MzNmYWY3N2ExMTdkZGYzNzQ0YmZiZjUwMDk5NDY2YTYwMjE0IGxlZ2FjeS10cnVuaworMTU0MjIgYjkxZmRjMjljNWJkMmMwYTM2ZDI0MmQzMmZjNGUyZmVjN2Q5YmE4NSBsZWdhY3ktdHJ1bmsKKzE1NDIzIGFhOWE2MzVhNmY0NzdhODc1OTliOWIyZDBiMzVhNDk1ZTY5NmU3NDUgbGVnYWN5LXRydW5rCisxNTQyNCAxZWE4Y2Y4ODVmN2JkOTMxYmY4YzU5ZGY2ODYxNmQ4NjEyMTdkMWZiIGxlZ2FjeS10cnVuaworMTU0MjUgYjc3ODkxZmE5M2IwZTQzZDAzNGNjN2MzOWQ5NTA1MjA5YWQ3YzM1YyBsZWdhY3ktdHJ1bmsKKzE1NDI2IDA1NzA5Nzc5NjEyMGI4NjNjZDg4ZGQ4YzY1MWY2YjgyOWQzMTQ2YWYgbGVnYWN5LXRydW5rCisxNTQyNyA0ZGY1MjM5OThlNWQ5NDk3NjNhMzI3NzI3NTI2OTVjZGRkMWE1YWQ2IGxlZ2FjeS10cnVuaworMTU0MjggN2QwMjU1YmVlMGY5OGE4MTNkYTU3MDkwZjkwOGEwZTczN2ZkNTA0YyBsZWdhY3ktdHJ1bmsKKzE1NDI5IDA2YTM0NmViM2NiZjAzYjA2NWZkMTFhMTQ0ZDc2ZmJkNTQxOGEyMjIgbGVnYWN5LXRydW5rCisxNTQzMCAyYTZkYzY1YzA2MGY1OGRkMzAxZWE4ZDk5OGMzYWE5YjhhZTdkYWJmIGxlZ2FjeS10cnVuaworMTU0MzEgMmZlYjk3OTBiNDA0NTZmZWM3MzY0Y2JhZGE5NjgzNTljNzcwZGE3ZSBsZWdhY3ktdHJ1bmsKKzE1NDMyIGEwMmU2YTQzY2ExNWIwOTkxZTE3YzU0YmIzY2FiNjhkODliNDk3ZjggbGVnYWN5LXRydW5rCisxNTQzMyA0N2JkYjYzNjE1OWM4MDVhMzU3ZTJlYjE4ZDBiMDE2MDkyNjA1ODBhIGxlZ2FjeS10cnVuaworMTU0MzQgNTY0Njc3MzMyMGJlYTZkYWQ2NGI1NTQ1MDgwNmEyNzU3NzgxYTkyYyBsZWdhY3ktdHJ1bmsKKzE1NDM1IDExNmZjNDMwNWEzOWIxMzJlZDJlZmY3Y2ZkZGFlYjQ1NTk0NmFiYTkgbGVnYWN5LXRydW5rCisxNTQzNiBkZTQzNWE1OWE0ZDUzNTU1ZDE1MWUwNDEwZjE1MDRlZDQ5MjczODJkIGxlZ2FjeS10cnVuaworMTU0MzcgMDdkYzNlZDE3ZGQ1ZDk1YjZlNGU2YWY1NjgzNWM1YzhmZGNhNWMzZiBsZWdhY3ktdHJ1bmsKKzE1NDM4IDIzNDA3NDU0NWViNGUxOTdhN2Y4ZGU4YjM1NjU0YjM1MmQ0NjZkYTMgbGVnYWN5LXRydW5rCisxNTQzOSA4NzVlNjc3MjM2YTcxODk4ODI2YmU5ODIwNDYzYzEyY2NlZmYwZDI0IGxlZ2FjeS10cnVuaworMTU0NDAgOGU4MWM2YzUyNGIyMDVhZDUxMzI1ZjVhNDZhNTJiYTJjMGQ5ZTU1YyBsZWdhY3ktdHJ1bmsKKzE1NDQxIGI4OWRhMjAyZDE4ZDc2OWMzYWE4M2Y2OTlhM2ZhMGYyOTg1YWQ0YzMgbGVnYWN5LXRydW5rCisxNTQ0MiBiZGFlNmI5MDkzNGY0NmRkNDY4YTNjMzA4OTQ5YmQ2YzMwNjczNzIxIGxlZ2FjeS10cnVuaworMTU0NDMgN2M4OWVlNDA3MzBmNDBlMzA1NDdmZjAzN2ZhNWQwMTFjZWNmZGEzOSBsZWdhY3ktdHJ1bmsKKzE1NDQ0IDJlMWIwNDgzYjEwMWIzMDc2NDgyY2Q3Y2Q0NTNmYzJjMDc0MzE4ZGIgbGVnYWN5LXRydW5rCisxNTQ0NSAzNGYwOTA2ZmU4MjM0ODQ2MTRkYjlmYjVhMTYyOWZiMzJiN2IyYmUxIGxlZ2FjeS10cnVuaworMTU0NDYgY2JmOWQ2N2I1ZmMxZjViMGEzNGU5YzRkZmFmNmYzOGE3MDIwOWIxYyBsZWdhY3ktdHJ1bmsKKzE1NDQ3IGJjOTZjOTEyZGNlOGNkNTllZTBjZDg0NmQ3ODU4OWZiMTZiNWIxMzkgbGVnYWN5LXRydW5rCisxNTQ0OCA2YmFkMTY3ODlmNzliNDUyNTMzZDI5MTc2MDdhZjkyMjg4ZjlhNzFmIGxlZ2FjeS10cnVuaworMTU0NDkgOWNiOTYwODYwNTI4ZjMzN2ZmZDQxNTNlN2M1ODUzNDhlOTY5NDc4NiBsZWdhY3ktdHJ1bmsKKzE1NDUwIDIwYjNiOTc2NWNlYzY2YmRhYTdjYTRiZDUyNDZkODI3YjYyNzI5MTMgbGVnYWN5LXRydW5rCisxNTQ1MSA3MjhjMTYwNTMzNjhhZWRjNjBhZDZkYjgzYTEwNGM0MGIzNTQxZmRhIGxlZ2FjeS10cnVuaworMTU0NTIgN2I0NjZhNzNjOTYxNjYzZThiOGMyNDdlODM5ODlmYWJiOTJkOGU4MCBsZWdhY3ktdHJ1bmsKKzE1NDUzIDQyMGY5YWFmODgwYmRlMzFkZTRkMTBjODhmMmExYjMwYTU5ODg5YzQgbGVnYWN5LXRydW5rCisxNTQ1NCAxZGVlOTNlYjllZTMyMTVhN2Y1ZmY2YWFkZDY3MTI4NTllNDU0OGQ1IGxlZ2FjeS10cnVuaworMTU0NTUgYTk0MjY5YmQ2NTg1OTE5NGFkNTFkYWU4MzQyNDhjMDA2MWFjNmU3OSBsZWdhY3ktdHJ1bmsKKzE1NDU2IGE0OGI2MGI2ZWI0ODM3ZGM2OGUzNjFmODdjMDM3NGY2NTA1M2VkNzYgbGVnYWN5LXRydW5rCisxNTQ1NyBhNDllNDUwNjg4ZTJlMGQ2ODA1M2RmMGQ5ZWRlYjFkZmQyMzA4NDJhIGxlZ2FjeS10cnVuaworMTU0NTggOTAyODAwZDhlOGJlMTE1ZTUyZTViMjRiYjE5MWNjZDcxMzBiODZhYSBsZWdhY3ktdHJ1bmsKKzE1NDU5IGViMTcxOGM1YTU2YzBkYmVhMDNmZWQ5MmNiY2UxY2Y0YmM2Njc3ZmMgbGVnYWN5LXRydW5rCisxNTQ2MCBlZTk3MmNhNjVjMWMyMzE0YWExYWY3OGQ0ZjA3MTgxNGEzZTQ5OTJkIGxlZ2FjeS10cnVuaworMTU0NjEgOTRlZGUwNGI5YTllZWFkZmEyNGMxNjhlZTNiMGE0YWVhYWU1OTgwNyBsZWdhY3ktdHJ1bmsKKzE1NDYyIDkwYzc5MDZiMDk5OWI1MWE3NWQ4ZGE1MWY3NTllYjMwODFiNjJlODggbGVnYWN5LXRydW5rCisxNTQ2MyA1OGFkNjE5NmQ4MWYyYjQ4OTk1NGUxNGYzZmFjNzJiZjFiNTlkOGI3IGxlZ2FjeS10cnVuaworMTU0NjQgZjU1NWZkODA1MDg1NWVhOGMxOTk4NGZkYmI3MzgyYTY3ZDJlZDlmNSBsZWdhY3ktdHJ1bmsKKzE1NDY1IDYwNTlhOTI3OWQ5OTk0YjA1ZGE2MGMyMmY1YWJiZjYwZjllMzlkOGYgbGVnYWN5LXRydW5rCisxNTQ2NiA3ZmY1YWUxMGE3NzFkN2M2ZDlmZDg4YjJkNTA5ZGY2YjJiNjFjYzcwIGxlZ2FjeS10cnVuaworMTU0NjcgMjk3NzVjMjg3MjM3OGY1NDM4ZGE3ZTRlOTVkOGRmMjlhOGNiMDkzMCBsZWdhY3ktdHJ1bmsKKzE1NDY4IDlhYmVmYzViMWQ4OWEyZmI2MzEyYjc0YjBjNmEwMjhiYjRiZDc1NjQgbGVnYWN5LXRydW5rCisxNTQ2OSAzNTMwNTk5MTcxOWI1MTdlMjlkZDVmMWE5YWExMjNlMDg4NmU3NTZmIGxlZ2FjeS10cnVuaworMTU0NzAgMWJmNzE0ZTBjMTBmNWFkYzZkMjUyYWNlYjE4ZmJmNzhjZGMzZjlhZiBsZWdhY3ktdHJ1bmsKKzE1NDcxIDk0MmNlMjIxMTI4YTI4MzAxNTUzMGY2OTM3N2Y1OGM0MzI5Y2NmMTkgbGVnYWN5LXRydW5rCisxNTQ3MiBiODE3ZjE2Mzk5MzljZmQ0NGYzOTZmNmViNmIwNGRkNThhYjUwMDkwIGxlZ2FjeS10cnVuaworMTU0NzMgYmU1NWY1ZGRjNjE1YmQyMTVjMTg0NmNmNTIxMjA4MmI4OGRlNWMzYiBsZWdhY3ktdHJ1bmsKKzE1NDc0IDdlZmJiNGU2YWZjYTgzMGRiMWZlOGRhZmQyNDkzODJjNmU5NWU4ZjggbGVnYWN5LXRydW5rCisxNTQ3NSA4ZGNhNTU4Njc5OThhNTkyY2YwOWMzZjM5NDY5ZDc5YmIwNGExMzkxIGxlZ2FjeS10cnVuaworMTU0NzYgNmFkOGNkMzRhZDhjOGYxYWNiMThmMmJmNTdhYmNkOTIzMDM1MzE5ZiBsZWdhY3ktdHJ1bmsKKzE1NDc3IGFlY2YzNWYwYzE2YmEzYzllOTM5YTIxMjMzNDVkZTNmZjU1MjVhYzggbGVnYWN5LXRydW5rCisxNTQ3OCAwYTZhZjU5ZWJmZmQ5M2FkNWI4OWIyZDAxNjY1MTIwZDk5NGIzMGM0IGxlZ2FjeS10cnVuaworMTU0NzkgNTNlNTRiZDRlNWY0YWNiMWJhZjU4ZTg0YTAyMzI1NDJmOTQ4MzE2MyBsZWdhY3ktdHJ1bmsKKzE1NDgwIGZmODFhNjVlMGE5YmIyMjA2N2ZjNmE1ZjRjM2NjZmEwODVkNGJkM2IgbGVnYWN5LXRydW5rCisxNTQ4MSAyZWE5OGQ5ZGM2Njk0NDlmNjkxN2JhOTdhZjkwM2NlZGZkZjU1NTI0IGxlZ2FjeS10cnVuaworMTU0ODIgYTU5OGFjZTAxOTQzOWM1MDMzOTVlOTU3OGU4MzA0NmY1MGM0YjllNyBsZWdhY3ktdHJ1bmsKKzE1NDgzIDA1MmFmYjc0OTUyZWNmZDMyOTgwZDFlNDgwYzE1YTk1MDdiM2M3NDEgbGVnYWN5LXRydW5rCisxNTQ4NCBkMDQwY2ViZDc0YWMyZjI1MzUyMDc5NGYzZjdkNjUzMmQwYWNlMjJkIGxlZ2FjeS10cnVuaworMTU0ODUgMmI0OTg4MzdjZDg1ODY4Njc3MWNjMjZhOTE4YzI1NTVjNjU0YTY0YiBsZWdhY3ktdHJ1bmsKKzE1NDg2IDQwZDZkMmZjOWNmZmY0Nzk3MjE1NmJkMWJkZjJlYWYzOGU4MjQ2NjIgbGVnYWN5LXRydW5rCisxNTQ4NyA1ZGQzYjM1YmZkNTIyZjhhMzBjOGY3Yzc4ODU0NjRiODNkNzExMzFlIGxlZ2FjeS10cnVuaworMTU0ODggY2UzZGUyOTQzNjJiOGE4NTJiYjEwNzE3YmJjNzU3OTUxZjQzZGM3NSBsZWdhY3ktdHJ1bmsKKzE1NDg5IDRmZDg0NTkyMmM0OWFlMGU0Y2U5MjBlODU1ZmQ3ZTNmYTc1ZGY2OGUgbGVnYWN5LXRydW5rCisxNTQ5MCAyNGFiODRkYzQyYWJmMDk4NDBhNmM0ZGUyY2FiMWQxNjRjY2JjYzk5IGxlZ2FjeS10cnVuaworMTU0OTEgMTQ3ZDBiNDE0NGVhMTdkZjBmODAzYzU0MTliMGRkZDNmMWQ0N2RkNSBsZWdhY3ktdHJ1bmsKKzE1NDkyIDQxMThmMDAyZTczNzczMmVkMDc3ZjFmYmRlN2I5ZmYxNzYyZjIyZjYgbGVnYWN5LXRydW5rCisxNTQ5MyA3OTU0ZmY5M2VlM2JjNjlmNzljOThjNGZkMzAxYWIwMWE5Njc5YjlmIGxlZ2FjeS10cnVuaworMTU0OTQgODEzODMyMjIwOThhM2Q5ZDQxOGZjMmJlZGU1Mzk1YWVmMGM5MjY0ZSBsZWdhY3ktdHJ1bmsKKzE1NDk1IGNhYjIyYmNiZjViNmRjNmEzZTk0ZTQ4YzljNWJmOGQwMTI1MjRkM2QgbGVnYWN5LXRydW5rCisxNTQ5NiBkMmQ4NjVkOTU4NjEyNjQzYjA5MGNiZTY1MTgwZjU0YzJhMjU3ZGM2IGxlZ2FjeS10cnVuaworMTU0OTcgZDI1NzNkYmY2ODUyNTQ0ODdkYzg3Yjg4N2VjZGU2YjcwZjc2NGUwOCBsZWdhY3ktdHJ1bmsKKzE1NDk4IDc3YTVhMTQ2OTViMzJhOWUxNzdhMjU0NzFlY2Q0ZDRlNGU3ZWQ5ZDggbGVnYWN5LXRydW5rCisxNTQ5OSAzZDI2Y2IzODA4YTdkMjIwZGRmN2NmMTI0YTc1ZDJmOTdjMzk2YTliIGxlZ2FjeS10cnVuaworMTU1MDAgMThiMDM1NjUwNWE1YTRhYzI2Nzc4NDhiZmI1NjRlN2ZmN2I0OTU4MSBsZWdhY3ktdHJ1bmsKKzE1NTAxIDg5ZjQyMDk5YzVkZDZmNDJmNDJlNDJmNGI2MGI5YzZmNGMyNTA3ZTMgbGVnYWN5LXRydW5rCisxNTUwMiBiNTBiZjdkMzk2MWY4N2U1NmEyOGFjYmUwZjU5ZDk5MGEyNmVjNzdhIGxlZ2FjeS10cnVuaworMTU1MDMgNTcwZmFjYjczZTM2NGY3NzcyNTVmNjJmZTk0ODk5MDE1ZGY2ZTMxMSBsZWdhY3ktdHJ1bmsKKzE1NTA0IGU4NzhhNjQ3ZTA2ZWFmOTFmYzRkODM0NDJkNWEwOTA3NDdmNGIyNjUgbGVnYWN5LXRydW5rCisxNTUwNSBlZWFmYWI4YzkyNWJlNjg0NGZmYjUzZDgwMWExZmRhODE1ODE3Y2QzIGxlZ2FjeS10cnVuaworMTU1MDYgZGFkMjA1ZDEzYmI1OWRiNjM0Mjc5MmRkMGE0MmJiMGMwMGQwYzI0OCBsZWdhY3ktdHJ1bmsKKzE1NTA3IDNjMzBmN2I1MTBkMzQxMzZmYTZhZDM3NmZkYTQ4YjU2ZjQ1ZDA4MDQgbGVnYWN5LXRydW5rCisxNTUwOCA2YzY4NDRhMmZhMzA0ZjAyMDMwZDU2ODEyOWI0ZDkyMjU5MTE2NDQ5IGxlZ2FjeS10cnVuaworMTU1MDkgZWI1NjJkZjBjZWJlMGVmZWZjZjBkZjYyMGJkODIwYzRjOGY2ZTNjNiBsZWdhY3ktdHJ1bmsKKzE1NTEwIGJjZTQ5YTZmYThiOWU1YmQyNmIyM2U0NTk3ZGQ4YzI2NDFkZmM1OGIgbGVnYWN5LXRydW5rCisxNTUxMSAyNDk3ZTFjOWViY2VlYTcxODhlMzg1YmJhOWE2NWM0M2M3NGUzNmQ3IGxlZ2FjeS10cnVuaworMTU1MTIgMmMyYjQwZWIzYTY1NDYzMTkwNzMxMTQwNzZkY2M1M2YyNTBmMWNhNCBsZWdhY3ktdHJ1bmsKKzE1NTEzIDdiNDkzMzRhNjM2OTZhY2M0YzgzZGQwN2RiOTFlNmMyNjFlYTU5YzcgbGVnYWN5LXRydW5rCisxNTUxNCA4NmVjNzVkYWMyNzJiYWZjN2U2YWRkOTk3MzlhY2NjMWNjY2ViMWY4IGxlZ2FjeS10cnVuaworMTU1MTUgNTIxM2FiZmU1MjMwYmViMDNmYzE5OTYwMTAxNzY1NzA0ODhhYmM0YyBsZWdhY3ktdHJ1bmsKKzE1NTE2IDg4OWYyY2IzZjcyYWFmODIwOTYzNTkxMmI2ZWY2N2NkZTI5ZTAyNTggbGVnYWN5LXRydW5rCisxNTUxNyBlY2RkYjJlZDRjNzU2YTc1Y2RiZGZmNGE3N2E1YWFiODUwZTc5OGYxIGxlZ2FjeS10cnVuaworMTU1MTggZjBkMjI1M2I2NjRmNThkM2NhNDk5YjJhMmU1NzM4OTFmNDcyMjZhZSBsZWdhY3ktdHJ1bmsKKzE1NTE5IDQwNmIwZTI0ZDYyZTczZjhhYjhiNGU1NmY1OWQxMzQ3MGFlNmIzMWEgbGVnYWN5LXRydW5rCisxNTUyMCAxZGUwMDE3ZTEyMjY3YjEwMTE5MzZmNTcxZjMwNmM4MGI3NzM3OTA5IGxlZ2FjeS10cnVuaworMTU1MjEgMGYxZTRlMzkzNWQ3YzQwMDM4YmY5ZDIwMDAwYzkzOTJjNGViZWQzMSBsZWdhY3ktdHJ1bmsKKzE1NTIyIGRhMDJhODkyZDYxMTg2NDU5NjY5NzEzNjk5YjdiZGYxM2UxOWMyMTQgbGVnYWN5LXRydW5rCisxNTUyMyA5ZTFiODA1MGRlNjNhNDVlYTRkMjA4M2M4YjEyN2YxMmM1ZWE4ZThiIGxlZ2FjeS10cnVuaworMTU1MjQgM2MxNDlkMzhhYmY5ZmM0ODlmOTQ3Zjk5NTQ5OGI2MzQ1NjJmYWViYSBsZWdhY3ktdHJ1bmsKKzE1NTI1IGM4YTlkMTc2NjQ2NWNlNWFmYmVlOWMwMDk5MWI3OTA4ZjZhYjBhNjYgbGVnYWN5LXRydW5rCisxNTUyNiBlMGVmNjIyZjhjMjNjZTk0ZWMyOWRiNTkwYzRjY2RiYTE5OTA5NzY5IGxlZ2FjeS10cnVuaworMTU1MjcgOTY3NzMyZGQzZjk1OWJhODZmMTZmZWQ4ZDljYjllNTllZDk2Nzc0MCBsZWdhY3ktdHJ1bmsKKzE1NTI4IDljYmNhZDJlODcyMzg0NTkxY2E5NmNmYTYzYjlhOWNkODVjYzIyMzcgbGVnYWN5LXRydW5rCisxNTUyOSBiNWFiNDczNjViYWQ2NThhYzIwYTNhOTFmYTdiOGViMTFhMWYxYTFhIGxlZ2FjeS10cnVuaworMTU1MzAgMjYzY2RmOWM4NDJlZTc0ZDQxYzUwNDlhNmY0ZGE5ZGIxNTdmNDM2MSBsZWdhY3ktdHJ1bmsKKzE1NTMxIGZiNDAzOWIxY2Y4ZDc1ZjEyYmQ1ZjlmODgwZWU5NjFhNzljYjRjMDUgbGVnYWN5LXRydW5rCisxNTUzMiA1MmM2YWMyZDE2YThjYWVlYjgwNzg2NjEyZThjYjI0NjYyOTljY2VmIGxlZ2FjeS10cnVuaworMTU1MzMgN2E0ZjY0MDJjNjdmODg3NWM2NmRmODAyNDk1OWMwYzY2MjQ2YmJjMyBsZWdhY3ktdHJ1bmsKKzE1NTM0IGIwNjk0YzFjMTI4N2Q4YjZkZjkzOWEzNTNkYTdiMWJhZGQyNTFiNDQgbGVnYWN5LXRydW5rCisxNTUzNSA0MGRiOTA5Y2UyZTMyYWFmNmE3NGU4MjliYWE2NTQwMjY2NDM0OWM2IGxlZ2FjeS10cnVuaworMTU1MzYgOGUyYjM1ZDM4NmFhY2FjNzZkNzk1NGNkNmNiYTNkZTIxNmJmODQ4NiBsZWdhY3ktdHJ1bmsKKzE1NTM3IDM0Mjk0N2YyZmI1MTQzMWQ4NGI3NDMzNDNhMjYwOTM4YjhiMWM4NDQgbGVnYWN5LXRydW5rCisxNTUzOCAzOGRhODY0YTBjODA2NmFjNWQyODQ5ZjE4ZWQ0OGE0ZTI1NGI0ZWYxIGxlZ2FjeS10cnVuaworMTU1MzkgMDI2M2E5OWQwZWIyODg4ZGM5YTk3Y2NkOGZhM2UzYjgxMTk5ZDVmYiBsZWdhY3ktdHJ1bmsKKzE1NTQwIDA1NzBkZTljODIwMmQ1YmUwNjNjZWZkMThmZjAwNjA5NWFiZjdiYTIgbGVnYWN5LXRydW5rCisxNTU0MSA5MzM1ZGFhOWRkZDNiMDM4NjI2MTRiMjFlM2RmMWZjMWEwYTFhYWUxIGxlZ2FjeS10cnVuaworMTU1NDIgOTM2ZWZkYzAxZDUyNDY5MGZlMjE4OGIyOTExM2FmZTgxZTYxZTNkMyBsZWdhY3ktdHJ1bmsKKzE1NTQzIDc3MWIzZTFhNzcxYzhmODc3NDM0MDU3ODc4MWEyMjFjMTZjYzU4NDEgbGVnYWN5LXRydW5rCisxNTU0NCBiOTFiMzVjMWQ0YzAwOGVkOGI5OWY5YTljMDcxOWViOTBlNWI2NjAxIGxlZ2FjeS10cnVuaworMTU1NDUgNTM5OGIxOGY4MzE5ZDFlNDRmZTU0MjZhNmRkYjczMWFjYmM1ZWYyOCBsZWdhY3ktdHJ1bmsKKzE1NTQ2IGY2ZTczMGY2NWJjZTYyZWJmOTVjODJhNTdhOTkyYmU2ZGIwMGUyN2UgbGVnYWN5LXRydW5rCisxNTU0NyBmNzY4ZDRkYWQ5YTYyYTM3ZWRjMGZjNzg4Nzg0ZDcyNjg5MTAwNGNlIGxlZ2FjeS10cnVuaworMTU1NDggNmY3ZGY5ODVhODBjNDdkNjBhM2JiNTNhZWU4OTk3YmE4YzE5YWY4OSBsZWdhY3ktdHJ1bmsKKzE1NTQ5IDgwMDRkMjljNzdiOGJkMjk2MjllMDdjNzhjNGMyMzExM2UyYTA0N2EgbGVnYWN5LXRydW5rCisxNTU1MCBmMGQwMzY4OWMxYWUwMDRmZjdlYzE2Mjk4M2E0Y2Y5ZmEwMDQ4MTYzIGxlZ2FjeS10cnVuaworMTU1NTEgZjhjMWM1YjdkYzlmNGI5NzM3MDQ2Y2I4NzQ2OTNhZWViN2FhZjIxMyBsZWdhY3ktdHJ1bmsKKzE1NTUyIDkzN2Y5ODU5YzlkZTFiNjk2ODhjNDRmNmE5NWY2ZTY3Y2I5NWM5YzUgbGVnYWN5LXRydW5rCisxNTU1MyA1Y2U0MmUwN2FmZDg1YWU5Y2Y3OGQ4NDc1NDU0NDE4MjIxZjQwMDc2IGxlZ2FjeS10cnVuaworMTU1NTQgNTM5NzQ0NTFlMzFmMTE2Njg4MjhkZTk2YWM4MDIzYzNiMGJlNDhlOSBsZWdhY3ktdHJ1bmsKKzE1NTU1IDA3NDgxOWFmZGM5NWFiMWQxNjMyNDMwZjc3MzI4NjMwMTVmMjUxMjYgbGVnYWN5LXRydW5rCisxNTU1NiBlZTExOTA1MWRmNzdmNDE1ZGFlYjViOTExMTg5NmRkMjJmODJiNDcxIGxlZ2FjeS10cnVuaworMTU1NTcgNWMwZWRiMzUxYzA3Mjc5MTg4NTQwYzQ4OGU0ZDkwNGFlNDlmNjM0MiBsZWdhY3ktdHJ1bmsKKzE1NTU4IDA5ZjcwZjkxYmRhZTJlOGY1YWM5YWUxYjJhZDc2ZGI0MGJkMWYwZjcgbGVnYWN5LXRydW5rCisxNTU1OSA4OGQwYjMzODNmZTI1NTY0MzllZTMwNjUwZjM3NmE0YzEwZGY4MThhIGxlZ2FjeS10cnVuaworMTU1NjAgZDgxYzk1ZGQ0MDM5ZGRhOGY1YWQ2OTY1MzFmYmNhYjA2OWMzN2MyNyBsZWdhY3ktdHJ1bmsKKzE1NTYxIDNhYWIwYzUxOTAwOTBhZjY5NjE1YWQ4Y2UzMTQ0NDE0ZTZmMDE1MWEgbGVnYWN5LXRydW5rCisxNTU2MiBlZWYyYjkxOGQwN2FjODY5MjRkYjBhZTUwMmNiYjhhMWE4NjFhZGU4IGxlZ2FjeS10cnVuaworMTU1NjMgMzNkZGMxMmRmMjY3ZDg0ZDEwODMxMjJmZDdjMGI4MTFjZGU1MDhmNyBsZWdhY3ktdHJ1bmsKKzE1NTY0IGY2ZDdlMzI4NjYwOTI2MTFkNDQzYTYyYzk3OTBhMzc2Nzg0N2QzNjEgbGVnYWN5LXRydW5rCisxNTU2NSAzYmU5MmNlZjE5MTc0NDk5NmZiMDBiZjc2ZmM5ODNmNWYyZTI0NjJlIGxlZ2FjeS10cnVuaworMTU1NjYgZTM2YmU3ZmI3NmNjYzdmYmFmODQwMmM0NjQ2MmZmMWUzMmY4ZjgwNCBsZWdhY3ktdHJ1bmsKKzE1NTY3IDU4M2RlZjhjZWRmNDMxMGRjMWQxNWU2Y2VjN2ExYmU5NGY1MjZiYzMgbGVnYWN5LXRydW5rCisxNTU2OCBiY2U1M2IxNDcyMWU5MTliYzk1MjFlZmMzNzg1ODMyMDIwNTk3MGE3IGxlZ2FjeS10cnVuaworMTU1NjkgYmMxZmU5NTYyMzk5ODNmMjJlZDM2ZmEzZGJhNmM2ZmQwN2QwNGMxZSBsZWdhY3ktdHJ1bmsKKzE1NTcwIDI1OGVlZDQ1NzBjZTg5MGMxMGY3MzQ3ZDVlMDZhOWNkNzNiOWFkOTcgbGVnYWN5LXRydW5rCisxNTU3MSA3MTFiMzI5NjA5MzQ3ZDVkMjcwNjgxZjk1NDNiYjYzODIyNmU1YjFhIGxlZ2FjeS10cnVuaworMTU1NzIgYjEyYWRhMmViMzEyYjA2ZDAzOWUxNDA3MTMyMTM5NzNjYzVkZmVjMCBsZWdhY3ktdHJ1bmsKKzE1NTczIDBjMjE3ZTVmMDU1Yjc2ZTQ5MGIxODIzZTQ2MTNhMDZjNGQzN2Q4M2YgbGVnYWN5LXRydW5rCisxNTU3NCBmMWY5YzMwYTQxNTY5NTc0OGI4ZDliNTQwNDM3MTU5MjUzMWZkMDFlIGxlZ2FjeS10cnVuaworMTU1NzUgYjFiMjYwYTJkZTk4N2U4Nzg1Mzk4MTc3NmEzZGRkZDI4NmFmMGIzZSBsZWdhY3ktdHJ1bmsKKzE1NTc2IGZmMGY3MjgxYmZiODRiYzI2NDQ0NDhmODJiODA0ZmMyNTA3YzExNzIgbGVnYWN5LXRydW5rCisxNTU3NyA0MjcyYjM2OGJmNjlmNmNlYWEzZmU3ZjliYjE4YmI1Yzg1NTZiZWJiIGxlZ2FjeS10cnVuaworMTU1NzggNWYxZjhkZGMyYTBjZGU0OWE4N2U5Mzc4ZWQyNTE5OTIzMjkxYTdiMyBsZWdhY3ktdHJ1bmsKKzE1NTc5IDY2Njc4MjMyNmQ0MmMwZGIzNWIwMTMxMmFlNjJiOTA2ZDJlNWM4MjggbGVnYWN5LXRydW5rCisxNTU4MCBhMjRkOWFkNjc4NmQ2NjM5MjY2MWFhMjU2ZDZjNThhYTQ4NDQyNmJmIGxlZ2FjeS10cnVuaworMTU1ODEgMzVlYTVkZTFlZTgzYWI1ZjU2NzljMjE3MjA1MGQ1OGY0ZjhhNGU0ZSBsZWdhY3ktdHJ1bmsKKzE1NTgyIGYyZGI2MDk0M2Q2YjgzMWI5NDJmZjA1NGRmNzY2MDEzNWIyOWEwMTAgbGVnYWN5LXRydW5rCisxNTU4MyA3MjNkZjBjODAxZDFkYzRhNWE1Zjc1ZjRlZGUyYWRlMTZiNmQ4YTVmIGxlZ2FjeS10cnVuaworMTU1ODQgMmM3YTQ3YzY0ZTMwNmU2Y2FhMmZkODI1YzhkNDAxMGU1MmU3ZGNmYyBsZWdhY3ktdHJ1bmsKKzE1NTg1IGI1MzE5ZjQyMjU5MTNmMDQwMTY3NTljMWYwMmVkM2E1Yjc4MzY2NDggbGVnYWN5LXRydW5rCisxNTU4NiBjOTI5OGVjNjM3YzVhNjEyZDc0OWQyOTk3OWY4NjE5MTgyNTQyNzM1IGxlZ2FjeS10cnVuaworMTU1ODcgN2QyYTAwNjNlMjZkZmZlYmUyZDI1M2EwMjI3OWVhYTAwMjA5YWQ0MSBsZWdhY3ktdHJ1bmsKKzE1NTg4IDA0Nzc0ZDYyMmVhMmRlMjE5YmU5YTg1YzI5MTk1NDkyZWE0NTNkNWUgbGVnYWN5LXRydW5rCisxNTU4OSA2MmFkMzU3MDhiOGM2Zjc3MDIyYzlkNGNmZDhkZTY1MDFjYzViYWYzIGxlZ2FjeS10cnVuaworMTU1OTAgYWYzOGE3YTdhZjEwYjc2YzNhYTg3NWQzMDJhM2Q5MjRhZmU4YThhNiBsZWdhY3ktdHJ1bmsKKzE1NTkxIDJmNjA2ODY3YWI0ZTdiMDYxNzlkZTMwNDllNjEzYzU5MjU3YmQ5YmEgbGVnYWN5LXRydW5rCisxNTU5MiAxZjUzMTIwOGJlMTE3M2I3ZGUwM2IwNDYyZWU1NzgxMzg5ZDE3YTIwIGxlZ2FjeS10cnVuaworMTU1OTMgYjkwZDYwMWQ0ZDU5M2E4MmY0ODdhYzhiZTUwMDEyOTMyNDRiOGMwNyBsZWdhY3ktdHJ1bmsKKzE1NTk0IDQxYzBjNjBkY2FmNWY1Mjk2YTYzNWNjZDVhMzgwOTA2NjY0MjNiYjkgbGVnYWN5LXRydW5rCisxNTU5NSBjMmEwZjJhODFmYThhOWI1YTljZTIzNWRlOTc1MTNhMDYzM2JkYTE3IGxlZ2FjeS10cnVuaworMTU1OTYgYmMzNTY0N2ZlNDcyOWMxYjM1NjVmYTUwODY4ZDNkOGU5ZGNiMzFiZCBsZWdhY3ktdHJ1bmsKKzE1NTk3IDNmZTMwNDA1MDQzNGUzYTAwNjZkNzk5ZDI1Y2EwYzk0OGE2NzZmYmMgbGVnYWN5LXRydW5rCisxNTU5OCA0ZTllYjg2NmFhYzZhNTgzNWQ3MWRlYmFjY2YyNTU3NGI4Nzc2ODMwIGxlZ2FjeS10cnVuaworMTU1OTkgMTYxNTU5ODlmYTkzMmE2MjE4MWRhNTBiOTFkZGI4ZDBlZTkwODViZCBsZWdhY3ktdHJ1bmsKKzE1NjAwIGI0YmEzMmJiNzU4YmVjM2M4OGQwODg4ZGQ0NGRkYmIzNzI4YzcyMWQgbGVnYWN5LXRydW5rCisxNTYwMSAzOTEyZmI2YzYzZjYxMzNkYmZiNDZhY2U1NmJhYzZmNWM1Yjg5YTc4IGxlZ2FjeS10cnVuaworMTU2MDIgNjQ1ZDU3ZWYxNjM5NTY3M2NmNjdlMWI1OGFkMjY4ZDgwNTJlZjY1YyBsZWdhY3ktdHJ1bmsKKzE1NjAzIDRlOWY3NzI0YWM1NTk1MDJjNTQwNzAxMDgzYjIwOWVkYjM2NTBiYzcgbGVnYWN5LXRydW5rCisxNTYwNCAwNDBjMTA5N2NkMzUyNDRlOTlmZTY4OGM0ZjQyODkzYmQ5ZjU4OWQxIGxlZ2FjeS10cnVuaworMTU2MDUgYWZkN2NiZTFjNDkyZjYzNTZmOWE3ZDI1YTVmMDVhNWYxNThkZGQzNCBsZWdhY3ktdHJ1bmsKKzE1NjA2IDIyOWZkM2E1YWZhMDgxZDRhMjRmN2FhNTg3Yjc3OGUwMjc3MGY4YWQgbGVnYWN5LXRydW5rCisxNTYwNyBiNThiOTAzM2M2NWE0MmVjMDI3MjY0NzQ3YTA1ZDIwNWUzZjM2ODZjIGxlZ2FjeS10cnVuaworMTU2MDggNDkxNmQ0MGQ5Njc3NmE5Yzg0NGM4MDNmOWExYjNlZWRjYWI3NzA5YSBsZWdhY3ktdHJ1bmsKKzE1NjA5IDA1N2FkODhhYWU5YTYzNTk3M2M4ODJmYTViODFjODFmZTk1NDQ5NGYgbGVnYWN5LXRydW5rCisxNTYxMCA1OTRjMjdjODcwYWRlZGZlZGZlNjNjNjIwYzI2MzQ3M2Q5ODAxYTI0IGxlZ2FjeS10cnVuaworMTU2MTEgYTkyYWRiNzgwZjQzZDkyZTQ1M2M0YzMxZDU0NGNiM2RiMjhhMGM4MyBsZWdhY3ktdHJ1bmsKKzE1NjEyIGU3ODdmNjY0MWFmYjhjOTBiOTgwZjdhNTU3YWY2OTNiNmU0Y2I4OTEgbGVnYWN5LXRydW5rCisxNTYxMyAyODkwOWU4MGYzNmNmNThkNmM3NDZhZjViNDRkN2NkOTVhODc1NzdmIGxlZ2FjeS10cnVuaworMTU2MTQgMjE1NTNiZDJlODc1ZjJjZDZjM2M3MWJlYWRhOWE2MzMwY2JlNzg2NiBsZWdhY3ktdHJ1bmsKKzE1NjE1IDYzZDM5MzU4ZGIwOTM0MmUwN2JmMTM0N2FmOTIwZTYzODc3ZTE4NjYgbGVnYWN5LXRydW5rCisxNTYxNiAwZmUwMjE2ZjZjNGU0YTEzZWIwNGU0NjI4NDcxMTQ5NmIyNjgyNGYxIGxlZ2FjeS10cnVuaworMTU2MTcgMGM4ODRjOGQxZTc1Y2RhMDQ3Zjc1YTZiN2EwOThjZmE1YWQ4NzdiMiBsZWdhY3ktdHJ1bmsKKzE1NjE4IDZhZTA0NmQ0Y2QwNDIwM2VhMmQ1YjAwOGIwYTFiMWY4MDBlNzcwNzggbGVnYWN5LXRydW5rCisxNTYxOSAxNGIxYjVkYjZjYjJkZWJiZTBkYmFlMTNiMWYyY2I2MDY1MGFjNGQ0IGxlZ2FjeS10cnVuaworMTU2MjAgMzc5Nzk3ZjNlZWIyMDYwNDQ1NTA3NzRlYjRkZWVmMGFmMmE5ODA5YiBsZWdhY3ktdHJ1bmsKKzE1NjIxIDQzMjNkNDg1NTA0N2I4YzcyNGI1NGQ5MjdkMjAyOGYzNGY2Zjg0ZjggbGVnYWN5LXRydW5rCisxNTYyMiAzOTcxZTZiMTRhMDk3NDk3ZDUxYjBiZGQzOWRlZjYwZDZlMGE5NDJhIGxlZ2FjeS10cnVuaworMTU2MjMgYWYwZGVmMDYzNjU4MDM2Y2VhYTgxY2NmNTA2ODhlOWYyNTc2YWEwMyBsZWdhY3ktdHJ1bmsKKzE1NjI0IGMwZmQ4OGYyYTY1YTkxNjRhYzgyOWU2YjljNGYxYTY0YTRlMDhlODIgbGVnYWN5LXRydW5rCisxNTYyNSAzMWQwOTg4ZGE4YTk3MzE0ZjYyNmYwZWUxOWZjMGQyNjNiYzUzOWZjIGxlZ2FjeS10cnVuaworMTU2MjYgZTU0NWEwYzQ0ZmUxNWNiMmYyZTMwZjUxZGNiMDNhY2VmMTc5NGRjZiBsZWdhY3ktdHJ1bmsKKzE1NjI3IDU0OGNjMTBkZjllYmFjODA4ZTViNjQwNThiMDFjYTdhZDEyM2UxNDcgbGVnYWN5LXRydW5rCisxNTYyOCBlMDQ2NDljM2NlZDAzZGIyMTM5MDY4ZjhjMWIyMDEyOTY4YjE1NDE5IGxlZ2FjeS10cnVuaworMTU2MjkgZjRiNDg3ZTM1MjE0MGNlNDFiY2M4MWQyODYyNDE3Y2FhODFjNGFkNCBsZWdhY3ktdHJ1bmsKKzE1NjMwIDg4ODcyNzkxOTk4YTBkYTE5NjA4MDMxN2MzZGRlY2IwYjFlYjYxOGQgbGVnYWN5LXRydW5rCisxNTYzMSA1MjdmN2UzYmI3NmQ3ZWE4NGVlZmIzYzZjZWM4MTlkYTJjZDcxODc5IGxlZ2FjeS10cnVuaworMTU2MzIgZGRhMWNhNTNlYThhMjYxOGU5NmNmMmMxZTc0N2RiMGIzMTZhNTEyYyBsZWdhY3ktdHJ1bmsKKzE1NjMzIGUwMjRlZDJkYjYyNWI4ZTNlOGQ2ZjU2OTliNzdiMmQ1YzMxMmZiZmQgbGVnYWN5LXRydW5rCisxNTYzNCBlZmM2ZDc3ODlkOWU2ZjczMzljYzIyYWQ0N2UwMzU1ZDM2YTlkZDA0IGxlZ2FjeS10cnVuaworMTU2MzUgZDk4YTc1NTczMjZhNGQ4MGVjOTA1YjY0NmFmY2RkZTVhYzkzNTQzNSBsZWdhY3ktdHJ1bmsKKzE1NjM2IGE4Y2UxOWMzMmRiOWE3Y2Y3YWFjMjM3OWZjNDUzY2U3YzA1N2ZiODAgbGVnYWN5LXRydW5rCisxNTYzNyAyNDM1OTNmMTFmY2Y2OGU2NzVmYmEzYTkzZmExMzVmODkyNjYyMTA4IGxlZ2FjeS10cnVuaworMTU2MzggNzgyMzFiYmU2MDVkYzJlYTdjZmE4M2FiNTU1NWViZjU2YjliYTA4MSBsZWdhY3ktdHJ1bmsKKzE1NjM5IDZkNzkxNDg4NWQ2M2YxYzM5YWY3OTYxMDJmMTgyYzY0NTA4OGQwOTYgbGVnYWN5LXRydW5rCisxNTY0MCAzMDFmZjE0YjJhMGVhNjFmYmMwZWNiOTIxZThmNTQzZWYzMWU1NDUzIGxlZ2FjeS10cnVuaworMTU2NDEgMjZlMjBhMjhkMDUxYzZjZWQ0Yjc0Y2EwN2JhZTg2MWNjZmEyODM4NyBsZWdhY3ktdHJ1bmsKKzE1NjQyIDY4ODlkZTI5YzU1ODRiMjhlYTlmMzA2MGYxMGIwZjlhNjBhMmJlZDIgbGVnYWN5LXRydW5rCisxNTY0MyAxMWU1YmY4ZWI0NzM2OWFmMGQ1ZWJjMzMwODQ5OTljMGQ2MWI2MzZlIGxlZ2FjeS10cnVuaworMTU2NDQgN2JhYmY5MWI2ZDc1YzY2NTAyYTU3ZTMwZDdlOGMyZWM5MjZjMDdhYiBsZWdhY3ktdHJ1bmsKKzE1NjQ1IDA5MmJhZjY5ZDZhZjg3ZDYwY2JiMzVlN2FkZDAwMDNiZWQ1YmZhNmUgbGVnYWN5LXRydW5rCisxNTY0NiA1YTBkMTU2YzQyMGFjNzEzYjAxMjVlMTFjNGE4OTZmYzI2Y2Q5NDNhIGxlZ2FjeS10cnVuaworMTU2NDcgMWFlMDM1YTMxY2I0ODM1ZDAxZTkzMjU2NGE2Mzg0MzI0OTBjZTRlYyBsZWdhY3ktdHJ1bmsKKzE1NjQ4IDExZDEwZTliNTA4ZDgwYjBhNDg0Y2YwOWRhYzUzY2FjODAxZTlhMWYgbGVnYWN5LXRydW5rCisxNTY0OSBiNTc1MmRlMGNmYTQ2NzM1NGQxMWY1MjQzNDYwYTcwMzdmYzVmNzJlIGxlZ2FjeS10cnVuaworMTU2NTAgZjU0YzM2NzdiYWU3ZDg2MWFjYjg3ZDAzY2NiMTNlNTRiMzM4Y2VhYSBsZWdhY3ktdHJ1bmsKKzE1NjUxIDE3ZjM1ZjY2ZWNkOGJjOTU0ZjcxMDk3ZGQxNTY1MjVjMjRkMzBkMzIgbGVnYWN5LXRydW5rCisxNTY1MiAwYzhiOWY5NmIyNmFjNzMwYmE3Y2MxMDNiZjM3NDA1MDgzMGY1ZWZiIGxlZ2FjeS10cnVuaworMTU2NTMgMGMyY2RkN2NmN2RjNmM2MjcyZWIwOWU0M2U4NjlmYzNiY2RmMjc3MyBsZWdhY3ktdHJ1bmsKKzE1NjU0IGZkNTg4MWUxNzQyN2IzZjZiYzI1NGMxNjIzMTZjNWVkZTA0MWYxNjcgbGVnYWN5LXRydW5rCisxNTY1NSA2MWY2YWNjNGFhNzQ4ZGQ0MGU4YzM4MThjNzJjNzExZDE0MDEwODIyIGxlZ2FjeS10cnVuaworMTU2NTYgZjBhOGYxMjczNDU2NGJjMmI2YjE5NDk5ZDg4MDRjOWMzYzBhNjUyZCBsZWdhY3ktdHJ1bmsKKzE1NjU3IGFkZWY5N2YzZmVhMGY1NDA3ZGUyNTIxYWU3YTM4NjcyZjU4Yzc4ZTggbGVnYWN5LXRydW5rCisxNTY1OCBlNDdiMWEwZDY0ODQ3OTc3MTExZDhjZTBjY2RhNzVkNDljMTM5NTRiIGxlZ2FjeS10cnVuaworMTU2NTkgZjMxZGNkMWFkOGM0MTE4NzliNjc5YjIxZDViMWVkMTRiMmIzYWE2ZSBsZWdhY3ktdHJ1bmsKKzE1NjYwIDlkZjkxZjkxZTVjYzlhNDQyNDAwYmI3NDk3MTBlZDUzYjk0NDQzOWUgbGVnYWN5LXRydW5rCisxNTY2MSBmODJiMTU3ZjQ1ZTI5YzEwNmI2NTZlMWRmYzIwYWE5MTE2NDlkYjc1IGxlZ2FjeS10cnVuaworMTU2NjIgZWZmMjQxMDY4NWNjNDYwZjc1MTg5YjRkNjgzZjA0MjA5ZWEyMzNkMyBsZWdhY3ktdHJ1bmsKKzE1NjYzIDk4ZWIzMDU5YWU3NjBiY2RmMTlkZTZkODMzNWNhY2JiMDk0NDA2YWIgbGVnYWN5LXRydW5rCisxNTY2NCA5ZWUxZTU5NDU3MWQ3MTU1ZDhlNWUzNjk2YzVlNzE4NTRhMTAxNzI5IGxlZ2FjeS10cnVuaworMTU2NjUgNzUyYWE4ZGZmNTIwYjk0ZWRjNTE2OWY2NGE4ZmZkNzcwYjNiNTYyZiBsZWdhY3ktdHJ1bmsKKzE1NjY2IDI1NDMxOTcyMjk0YjRmMzdjZDY3YzY4MDQ1OWQyNmMwNjdiMDI0Y2EgbGVnYWN5LXRydW5rCisxNTY2NyBmNjkxMDJjMWY0MTNmMWM2NmE0ZTM3ZDkwMDAyMDdmY2ZmNWFiYWJkIGxlZ2FjeS10cnVuaworMTU2NjggZGRlN2U5MWYyZjJlNWMzMTZkOGQ0MGJiYjk3OTFhM2I3Y2NmNDg5NyBsZWdhY3ktdHJ1bmsKKzE1NjY5IDFlNzg0Yjg3OTAzOTBlMzM2NjBjYmU5YjJhZjQ4MGRjMmU3YmE5OTcgbGVnYWN5LXRydW5rCisxNTY3MCBiZTM2ZjEwM2E5NTM5YzNkZGRkZGJmNTU5Zjc5MGFlMzc2MGRjMzFjIGxlZ2FjeS10cnVuaworMTU2NzEgNTEzOThmNzFkMzAxMjI3ODQzNjQ0MmZkNGVlZTE4NTkxMjUwMDUzOSBsZWdhY3ktdHJ1bmsKKzE1NjcyIDNjZWUwZDc1MTkxZTIzMWMwMzZmYmRlOTI5ZmIwZjIyZTg1ZmI4YjQgbGVnYWN5LXRydW5rCisxNTY3MyAzNDQ1MmI4ODNhNzFkNWY3MGI4ZDgxNjE4NjU2MGRlMWFhYzNjNDJhIGxlZ2FjeS10cnVuaworMTU2NzQgZTVhYWM5ZGZhY2Y4NzE1YmQ5MmQyYjRmZGQ3MmJmMjJhZDNhNTkyMSBsZWdhY3ktdHJ1bmsKKzE1Njc1IGM4ZTEzNTM1ZmRjMzE5YWIyMDcxN2E3NWJkMzRiN2Y1MzhmMDJkYzUgbGVnYWN5LXRydW5rCisxNTY3NiA1N2UyOTQ1NDM1YzkwMDQ5ZTY0ZjYwODExMmU3YWYxMTlkMzI3M2YxIGxlZ2FjeS10cnVuaworMTU2NzcgMDBmNWQwZGY3MGFkODBlMWQ4ZTdiYmRkZDQ4MmUwODY5MjIzN2Y3NCBsZWdhY3ktdHJ1bmsKKzE1Njc4IDJhMmNhYWVlNjc5NzNhOGRiZTExOWYyYmY5MWZjZGNkYTk2YzM0YWQgbGVnYWN5LXRydW5rCisxNTY3OSA4YTIzYWIwNTdhZjYxNzZjZTJiZTM3ZDQ4NTJiMWQ0NzhlZWZmNjM1IGxlZ2FjeS10cnVuaworMTU2ODAgMzFjNzI1ZDcwZTY1MjEyZDNiMTg3NTM1MzgxZGM0OTc5Yzc5YWI5ZSBsZWdhY3ktdHJ1bmsKKzE1NjgxIGRlYWYyNWRmMTVmZTI3ZTY0Y2I2NTFkY2YwZDBkNTIzMWEwYzUyNWQgbGVnYWN5LXRydW5rCisxNTY4MiAxMmQwYzQ2NWIxMDNjZmU5NDA4OWRmYzBjY2NmMWE1YmU5ZDgyZjZhIGxlZ2FjeS10cnVuaworMTU2ODMgYThhZmVmYzRmY2VkOTk0N2I2ZTc5NjA0NTAwMmRmYjcwYzU0ZDVlYSBsZWdhY3ktdHJ1bmsKKzE1Njg0IDFjYWFkZmI4Y2E3MTBiZDkxZDgxNDZlY2UyOWE0NjM4YTY4ZTUzY2QgbGVnYWN5LXRydW5rCisxNTY4NSAyZDBiOTk3NzhlZGYxYmE2Y2FiZTg0Y2UwNTU5NGQ3ZTZkYjc3NGVlIGxlZ2FjeS10cnVuaworMTU2ODYgMTI4ZTdiOTk0NTA1OWM2MDBiNWE2Y2FlMWU0YjA1MWZlNGY5NTRiYSBsZWdhY3ktdHJ1bmsKKzE1Njg3IGRmNjg2OWJlYmUwM2M1N2MzMTQ5NTA1ZjA2YzJkOWM5NWYyNzNhZjEgbGVnYWN5LXRydW5rCisxNTY4OCAxNWRmM2ZhMGZkNGQ3ZGE4ZTIyOGZjMGExMDM3ZDAwNjQ0ODRjZDExIGxlZ2FjeS10cnVuaworMTU2ODkgNTllNDk0YzA4MDJmYzkyNTZhNjVhZTZkNDY1ZjY5MjI0ODAwY2JkYyBsZWdhY3ktdHJ1bmsKKzE1NjkwIDJlZWY2MzZiYTFiNjJmNmUxMDBjNjJjMTgzMjI0YWJiMDUyZDhhYWUgbGVnYWN5LXRydW5rCisxNTY5MSA2NjE4MzI1NTc0Y2I5NTNlZjI3ZTRmZjE1MzRkMzY1NDU0ZTI4ZGRlIGxlZ2FjeS10cnVuaworMTU2OTIgMGFhM2Y4MGRiYjIzYWU1NmQ0MDI3NzdmZWE0ODNiY2JlOGZhYjM2NSBsZWdhY3ktdHJ1bmsKKzE1NjkzIDFmYTdjMTE5YjdhNTZmMjBhOTg4ZDViYWNiOGViYjg1YTNkZGQyNDEgbGVnYWN5LXRydW5rCisxNTY5NCBiNjYwZWNiZWFlYjhlMzJhZDg0MzhlZjYwYzI4YzhmNjg5Nzg1ZjA5IGxlZ2FjeS10cnVuaworMTU2OTUgNzUzZjkxNjNkZjBiYjNmMzc5MzE5NWIyYTljYTViZmQ4NjZhNTNiYSBsZWdhY3ktdHJ1bmsKKzE1Njk2IGE5ODAwOWE0MzkxZTc4NzkxNmYwNmE4ZmYwMGY5YmUwYmIyNzM1NDcgbGVnYWN5LXRydW5rCisxNTY5NyAzNDI3YjBmODVhN2NlNzFiYWI5Y2QyYTE2NjNjNWE5NzA0MTQ1YTcyIGxlZ2FjeS10cnVuaworMTU2OTggYWJiY2ViNmEyNTMyNGI1YjQ0YzUxYmZkNjFhNzU1ZWU3MWI2ZmRhMSBsZWdhY3ktdHJ1bmsKKzE1Njk5IDdhYjViMWVlZWJkZTkyODM5MzRmYTliYTY1ZjRjODIzZjJiOWI5N2QgbGVnYWN5LXRydW5rCisxNTcwMCA4ODAwNGYyNWRjMjVhYmJkYjM1MDdjZTBmNDBkZjFkNjU2NjgzNmIyIGxlZ2FjeS10cnVuaworMTU3MDEgM2Y3YTM1Nzk4YWNlYTEwOWI0ZTVlODQzNzA3ZGJmZTEyNWM0YzRhNyBsZWdhY3ktdHJ1bmsKKzE1NzAyIDhjOTU1NGVkYmViYmI0OGY0NmRlNjkxNTkzYTI0MjBiNGM2NzAxZDkgbGVnYWN5LXRydW5rCisxNTcwMyBhODUzMGQzNjAyMWM2YzgxZTU5OTY2NzJkNzFjZTU0MWQ2ZWNiYzczIGxlZ2FjeS10cnVuaworMTU3MDQgNDI5ZGQwMjI3MmQ2ODA3OTI2YjFhMjNkMmY3MWZmNjc1N2JkYWY4ZSBsZWdhY3ktdHJ1bmsKKzE1NzA1IGIxZWM0OWIyYzVjMmE5MDNiM2I5M2RmMTcyYzMzOTNhODJiNDIzN2QgbGVnYWN5LXRydW5rCisxNTcwNiA1ZDJmYjY3NDA4YTdjYzYzMjRiODlkMjExNjlhZDA1NWU5ZjA3Mjg3IGxlZ2FjeS10cnVuaworMTU3MDcgNzU1YzlhYzllNmFlYmI1ZjE0NjgxMzE3NmI1YjhmYjg3MTk4ODgzYiBsZWdhY3ktdHJ1bmsKKzE1NzA4IDZiMmVjZDE3MjIwM2I0YTExNzcyY2U1YWM5ODYyMjY5ZWE5MjNiYjkgbGVnYWN5LXRydW5rCisxNTcwOSBhY2IwMjYxYjY5NDJmM2JlN2IwYmEzNzRlZGIxZjAzOGJiOTIzMDU5IGxlZ2FjeS10cnVuaworMTU3MTAgMmE2NGYyMjVhMTA1MzFjMjRiNzU4Mjk5ZDljYmYyY2U4ZDAwMGI1NSBsZWdhY3ktdHJ1bmsKKzE1NzExIDg5NGVmZWE3MWFjZmVlMjVkNzBiZDRiZTYxZWYyOGJlYzkwZGZjZDEgbGVnYWN5LXRydW5rCisxNTcxMiA3ZjAyMmUyNjBhNGQ5MzM3NzA5MGFmMzRhMjQyMWZiMDdhNzhkNWNjIGxlZ2FjeS10cnVuaworMTU3MTMgNTE5NDlkZTc2MzY1YjFiNTQwYzk3NDhhYWIzZjM0YmI0YjlmNTdiMyBsZWdhY3ktdHJ1bmsKKzE1NzE0IGEzZTEyODgxY2MzYzIzZTM3M2QwYThlNzNjY2VmNmMxYzQ5OGU1MTggbGVnYWN5LXRydW5rCisxNTcxNSA0MzA5ODVkNTdkYTMxNmY1ZDM0YzkxYjYyMDJkMTM5YjFlOWQ4YjZkIGxlZ2FjeS10cnVuaworMTU3MTYgY2FhZTc1MDFkYmE1NTY4NTE1NGI5ZjgyZTE5YmQ0MjI4MzMyMjRhNCBsZWdhY3ktdHJ1bmsKKzE1NzE3IGRjMGEyMTJmYjM1MzkwZmRiZGI5MDliMjc1NjgzZmI4MTE3OTA2NDMgbGVnYWN5LXRydW5rCisxNTcxOCA5N2RkNmRjMzM1MDM2N2Y0ZTYxZDQzZWQ5NTFhN2UxNjQ0NmY3ZjhlIGxlZ2FjeS10cnVuaworMTU3MTkgM2M2NjQxYzgxMGRiYTJiNTc1NjRjOWNkMGQ4Y2E4ZTY5ZjViZGNlNCBsZWdhY3ktdHJ1bmsKKzE1NzIwIDI1MTNjZDc0MTQ3YzczODk0MWJiNTc2ZDkwMTM0MThiMjQwODAyYTEgbGVnYWN5LXRydW5rCisxNTcyMSA0NWFhYTc1ZjA4YTM3ODAyZmNkMDI4NzY0YWEyODRhNGVmMTY2ODU2IGxlZ2FjeS10cnVuaworMTU3MjIgZWI5MTFlY2E5ZWU5ZTgxOWMwMDAyOTUzNWMzMTkwNDI2NDMxMzYyNyBsZWdhY3ktdHJ1bmsKKzE1NzIzIGJhYzA0NWI4NTI2M2YzNTlmNGRlNjE0MTA0YjU1NWUzNTRhZjE3ZDggbGVnYWN5LXRydW5rCisxNTcyNCBhY2UxMzcwMWYzMzRkODdiZDk5MjQ2OTBiZWJiZjNjNTVmODMwMDEzIGxlZ2FjeS10cnVuaworMTU3MjUgOTM2NjFkMGViNWNjNTFkY2E1NjU1NjdhYTRhMWY5NGIzNzUyMThhNSBsZWdhY3ktdHJ1bmsKKzE1NzI2IDA0Yzg5ZDc3ZGZkYmY3ZDU1ZmRkNTZmMDIwNDMwMDM2OTU5YjRlNWYgbGVnYWN5LXRydW5rCisxNTcyNyA0NDdlZmI2NGM3MmRkY2IzYWQ1MTA4ZjVkNzk1MDczNTI1MjM2OWE2IGxlZ2FjeS10cnVuaworMTU3MjggZDExNWE5MWNhNWZhN2YzY2ZjOWU0NGUwNDFiZDg3NDY3YTRlN2JjNSBsZWdhY3ktdHJ1bmsKKzE1NzI5IGYzMWZmYjM3ZDcyY2Y3MzM2NDhiZjBjMzAzMTRkYmFjMTY1MzVlY2EgbGVnYWN5LXRydW5rCisxNTczMCBlNmI0MDdiYTQ3MTUzZWNiNmY0OWU3YzdlNzE3M2E3MzE0NWEzZmEzIGxlZ2FjeS10cnVuaworMTU3MzEgNjM0MzY3MTlkMTJlMDJiZDkzZDBkYTE4ZjJjYTlkNjY4ZTAxOTNjOCBsZWdhY3ktdHJ1bmsKKzE1NzMyIGJjMGQ0OTY4MGFhM2RmNmFhYzhiNGQwNDAxOTAxZTJkY2MxNjk5MmUgbGVnYWN5LXRydW5rCisxNTczMyBmYzc3ZTM0ZWYyNzQzZjgyOTU3YmRiMDIyNzIyYzFlZmJmMzYwNmRlIGxlZ2FjeS10cnVuaworMTU3MzQgMGI0MjI2NGFjMDIxNTQ0YmFmNmU0ODk3NzBkNWVhMDE2MDZjYzZhYiBsZWdhY3ktdHJ1bmsKKzE1NzM1IGU3OTkyZDBkNjgwODI4Y2MyNmQ2YTAwMDdlZjFhZTQ1OGM3ZWRkYWIgbGVnYWN5LXRydW5rCisxNTczNiBkZjYyN2U2MTkxNmUyMGExMDRlMWM5OTBmNWY3OTIyMjQ5YjMxZTRkIGxlZ2FjeS10cnVuaworMTU3MzcgZjc5M2M0N2M1MTBlMTM2NzMzNGI2N2UwNGNlMGFiNTBjOTEzOWNhNCBsZWdhY3ktdHJ1bmsKKzE1NzM4IGRiYjEwM2U5YTU2ZjUxM2Q4MGRmOWFmYWMzYmZhOTAyMjAxNjA2NmQgbGVnYWN5LXRydW5rCisxNTczOSA3N2M2NTExMzE5ODRiMmVlYjM3NzI3MjFmMmMwZTA3NThkYzczNjYzIGxlZ2FjeS10cnVuaworMTU3NDAgNDAwMzgyMTkwMzY0OTdjNDQ2NTlhYzllYjE4ZTM1Mjc5MzhlMzhkZiBsZWdhY3ktdHJ1bmsKKzE1NzQxIGRmYThkOWYxYzEyMzE4ZTk4YzJjZDQyMjAzMDhmZWZiZTE2OTcyNzMgbGVnYWN5LXRydW5rCisxNTc0MiA5NTY5YzU2MjU3NjU3ZTA2MWVmZmY4ZDYxNWU1ZTM4ZWFkMDRmYjFiIGxlZ2FjeS10cnVuaworMTU3NDMgODk2MDJmMzMyNDQ3YjRlZjMyYzFiODhhN2Q2ODkzMDRmM2NmNjZhNSBsZWdhY3ktdHJ1bmsKKzE1NzQ0IGI1NDQyOTllNjhjNWZhNzRmYTQ1N2NkYWJhMTUzZDA5ZTlkNTQ1ZTMgbGVnYWN5LXRydW5rCisxNTc0NSA1MzZjNjMxMjk5MzI5YjJiYzIyODU1YzBlOGI5MDJjYzYyZjZmZThiIGxlZ2FjeS10cnVuaworMTU3NDYgNTVlMmZjNGQzNDBlNDgyOTk3ZTQwZjBjM2VhZTA3YjAzMmQ2NTZmNCBsZWdhY3ktdHJ1bmsKKzE1NzQ3IDUyNzlhNmUwMGQzNjdiMDBmNTRhZjRlMDc5ZWY5Y2RlNTU0ZTJmZmUgbGVnYWN5LXRydW5rCisxNTc0OCA2NThjNTVjMDgxMzljY2Y2YjM5Mzg5MjEyZGRhNzdmMDI1MzBhZGJjIGxlZ2FjeS10cnVuaworMTU3NDkgMGViNTMxY2UwOGQxOGJjYTdlOGZmYzBlOTQ0ZmJlZjQyYjM1N2QxZCBsZWdhY3ktdHJ1bmsKKzE1NzUwIDI3MmRiNDYwNWJlNDdhZmE0NmVhMmM4OTU4Mzc5NzczOTQ4MWVkZTYgbGVnYWN5LXRydW5rCisxNTc1MSBlNjE1NTk2YzVjNDdjMDAxODQyMDcyY2VmZTYyMmU5OTZkYjljNGQ3IGxlZ2FjeS10cnVuaworMTU3NTIgMWE0MGYwMGE0OGJmNjQ5YTBiZmM2M2I1ZGNmMmM5ZTM5NjViY2YzMSBsZWdhY3ktdHJ1bmsKKzE1NzUzIDNmOTkwZWY2NjY2NzlkN2VlYmEzNmVjNmU3ODQyOWI0MmZhNjRjOGEgbGVnYWN5LXRydW5rCisxNTc1NCA4Zjc5YzViNjllMGFkYTNjN2MwNTM2NGFhODFiMjMyYTI4YTg4M2YyIGxlZ2FjeS10cnVuaworMTU3NTUgMDFjZTg5ZmM3NDVmZTFhZWRlN2Q2OTJhZjExMDQ2MjZiYjUzOTE4ZCBsZWdhY3ktdHJ1bmsKKzE1NzU2IGM5MTBiOWQ5YTBjMGU4NWUwYzIxZmQzNjk4YWQ0OWM0ZmRhZjRmOTUgbGVnYWN5LXRydW5rCisxNTc1NyBjNzU3MThmYmQ4NjI2ZThiZWVlYzY0Yzg3YWIyNDc0NDU4MTA4NDI5IGxlZ2FjeS10cnVuaworMTU3NTggMjdmM2ExOGZkMjk2NTdiNjVlMjAzNjI1MWVjNzdjNmUxZjJiNWFhMCBsZWdhY3ktdHJ1bmsKKzE1NzU5IDg2ZDQ5ODk0Njg2OGNmNWE2NzIwNmIyZjJlOTJmYzM5MDFmNDZmZWQgbGVnYWN5LXRydW5rCisxNTc2MCA3MTYwYjUyY2E3NGEwNmIxYjAwM2U1MmE2YjUwNDYyNDU5MGJlODVhIGxlZ2FjeS10cnVuaworMTU3NjEgYmMxNDdlMTg5YjdmOWI0NzkwM2ViYWJiZWI2Y2RhYjk2NWZjNDNhNCBsZWdhY3ktdHJ1bmsKKzE1NzYyIDdjZDE1MmUxNTM5YzVjYmM2OWE4ODA5MDc2ZjUyNmE5NmJkMGMyMGMgbGVnYWN5LXRydW5rCisxNTc2MyA1ZjM2MjZmZTU4Y2E4ZWQyYTEwOWNjZTA2NDQyMDk2ZWM0MzViZjI4IGxlZ2FjeS10cnVuaworMTU3NjQgNTc3MDdkYmNjMjQ1YzgxMTZiYTI1YzBkYzg3ZDQ3YTE1OTljZDhkNCBsZWdhY3ktdHJ1bmsKKzE1NzY1IDM3YmE3MDU2ZDRhYmZiNmRmMGY2NTI3NzAyN2NiODg0MzNkMzQ3MDAgbGVnYWN5LXRydW5rCisxNTc2NiA4MjE4MWU4MjBkZTNjODg4Y2NiZDg3Y2VjYWIxNDg4MmE0YzI2NjBmIGxlZ2FjeS10cnVuaworMTU3NjcgODcwMDM4NDJmYWVjYTZlZmMyOWJhYjIzNjAyOTI3YTljODE4MTU5NiBsZWdhY3ktdHJ1bmsKKzE1NzY4IDVkOGVmMjJhZGNhNTE0NjgzMzcxMGMxYzRmMzQ3OTIyZWU0ZDZiYjkgbGVnYWN5LXRydW5rCisxNTc2OSA2ZTE4NjFlMGVkNjg3NmJiZjcwMjdlZWI5ZGQ5MGY5ZmMyYzRkNTllIGxlZ2FjeS10cnVuaworMTU3NzAgN2IzODY3OGIzNjUyNjVlMmJiOGU4NTY4YzFlMGJlMzBhNGIyNGE3NiBsZWdhY3ktdHJ1bmsKKzE1NzcxIGZiYWNmNmQ1NWRjNjkzODMzNjA2MjE4ZDFhMjlmODA0ODUzYWJmNjMgbGVnYWN5LXRydW5rCisxNTc3MiAzNzQwMWVjMmU5MTBiMGNiYmVkN2M4NmQ0NDc4MDQ4ZjI3ZGFjMGFlIGxlZ2FjeS10cnVuaworMTU3NzMgOTA3NmVmYWM4NDIwYjc2MDgwNjE1ZGE4NjBiNDg5OTllYmNiODllZSBsZWdhY3ktdHJ1bmsKKzE1Nzc0IGRhZGIwY2M1YzJkMjg1ZWRlZDk4MmJjOThkNTE5Y2JkMjQ1MjFlMGQgbGVnYWN5LXRydW5rCisxNTc3NSA0ZjEzYzJiODMyMGJjM2FhMjkwOTVhNjlmMDAxZjA3ZTE5YjViNWVmIGxlZ2FjeS10cnVuaworMTU3NzYgYWZmZTEwYzNiOTJlY2UyMzBjYmJjMTBjMGRiZTYwM2Q3NGE5OTJlMiBsZWdhY3ktdHJ1bmsKKzE1Nzc3IDdhMjkyNThjNTVkZGFkZmZlM2Y2M2Y4YTE0OWE5N2E4ZDE1MWRhYjYgbGVnYWN5LXRydW5rCisxNTc3OCAzODNmNDA0Yjc2ZDdmYjE2MmIyNzA5ZjhiNGZlZWFlY2MyOWIzZDEwIGxlZ2FjeS10cnVuaworMTU3NzkgMmUyZWUxMTdkNDBmZDZiMTQ0MTFjZDUwZDZhMjAwNGQ3YzhjZDM0MyBsZWdhY3ktdHJ1bmsKKzE1NzgwIDRhM2U5ODcxYjQxYmJhMGI1NWQ4ZTI5YTY2YmMyMjg5YmQxY2MyN2YgbGVnYWN5LXRydW5rCisxNTc4MSAxZGFjODliYmJjZDIxNzMzZDZmMTMyZjJmYzVmMWFiMzViMDg3MDZjIGxlZ2FjeS10cnVuaworMTU3ODIgMzBhNGUxMzk1MjExMDM1YmJmZmYwZWMxYzRlZTdkNjY1M2E5OWU3ZiBsZWdhY3ktdHJ1bmsKKzE1NzgzIDg3ZWNlMTI3Y2JhMmQ2OWViYTkxZmI4MWZmMjU2YmRmN2ZhMjFhMTAgbGVnYWN5LXRydW5rCisxNTc4NCA0MTAyZjdlZGU4ZTk5OWNlMTAxYWVhNzk0MDg1M2VkZWQwNTczNTkyIGxlZ2FjeS10cnVuaworMTU3ODUgMjNlOGFhNDg1YTcwZDU2ZTJlMTU4YzFjZDdhMTFlYzIwMTYwMjE3NSBsZWdhY3ktdHJ1bmsKKzE1Nzg2IDU4NjYxYTU1N2RjNjkzNGRkNGViZDQ1MTQzNmJmNGZkOTQ0ZThhMzUgbGVnYWN5LXRydW5rCisxNTc4NyBjYTk2ZDhjZTEyZjNkZGUyN2YyOTIxN2NkOTVjNzZhMDEzMjc0ODgxIGxlZ2FjeS10cnVuaworMTU3ODggYmYyZWU4NTY3MjAxNTQ4Zjk0OTNkODZlNDcwOWNhYTMzYjlkNWQyNiBsZWdhY3ktdHJ1bmsKKzE1Nzg5IDk3NDgxZDdhYzU0OGFkNGNhOGNmYWFhY2NjMGE5MmY0MjQxZWNjMDEgbGVnYWN5LXRydW5rCisxNTc5MCA3MGIxNmRjNjEzN2YyNDkwMGRhNDU1MWZhNWY3YTI2Y2I1MmJhZGNiIGxlZ2FjeS10cnVuaworMTU3OTEgNWRmMDM0ODI2NzM1MmFkZDMzZTNhN2VlOThlYjI3YWMzY2U4OWZlMiBsZWdhY3ktdHJ1bmsKKzE1NzkyIDAwYTk4MTE5NGNhNjlmZjBmNGZhOTliNzc4MjI4ZDQyNGJhNWZmOGEgbGVnYWN5LXRydW5rCisxNTc5MyAxMjQwYmM5OTdjOGZiODY5NDM4MDk1ZTI2NjE4Y2Q3MjRhZTBkNDAxIGxlZ2FjeS10cnVuaworMTU3OTQgZjdhZDdlNzkxNWU5OWY1NzNiNDkwOWZmYWE0YmRjOTI0NTJjYjZmNiBsZWdhY3ktdHJ1bmsKKzE1Nzk1IGYxZTQwYWJiZWRiM2UzMWI1NjkwMDlmY2I2MzQ0MGMxNDdiOGRkYjMgbGVnYWN5LXRydW5rCisxNTc5NiAxZjYxZWY2NDUzZDU0ZjEwNDg3YzcyMTRjNDU4OTJhOTRlMzYxZWRjIGxlZ2FjeS10cnVuaworMTU3OTcgYzA5YTU3MGViNmViNWZmNzQwYWMwZDEyNWJiMjMwMTE5NzFmNzVkNSBsZWdhY3ktdHJ1bmsKKzE1Nzk4IDM2MDMyMGQyZmU5NDRkNjQ4ODBkYTgxYWM4MjRkM2MzZWZkZjJiOGQgbGVnYWN5LXRydW5rCisxNTc5OSBlYWE0YzZmYWYzYzRiMjNiZTlhYTI2NzhiYTMyNDJhNjQzYjhhYWE3IGxlZ2FjeS10cnVuaworMTU4MDAgMWM4YzEwMWYyYmUxZTMwZGRhNWE3NTEyZTU5NGRkOWFhNmMzOGRkYSBsZWdhY3ktdHJ1bmsKKzE1ODAxIDEyYWMyYzI2N2I5MzJlNWMzNjhkMmFiMjRjMTBhNmM0ODIwY2M5OTkgbGVnYWN5LXRydW5rCisxNTgwMiA4NGMyYTRkMmRmOWY0ZmYwN2VjYTM4ZWU5MTQxM2JkZWI2ZjVhOWM0IGxlZ2FjeS10cnVuaworMTU4MDMgMWYyNDQxOTc4YWIxNDAwNjM2ZTBmZjQwY2FlNzM5ODE0ZWRhMDY4MSBsZWdhY3ktdHJ1bmsKKzE1ODA0IDdkZjc0NTJkMTNjZDQzMzkyNDM1MjFjMzgzYmIyZWJlYTNhYjYxZWIgbGVnYWN5LXRydW5rCisxNTgwNSAwZDMwOWY3ZjAyM2ZjNGFlYzhiYWIzOTE0ZDFhMzhkYjRjNzFhNDQ0IGxlZ2FjeS10cnVuaworMTU4MDYgNzIwNThkYzdkNTQ1Yjc3ZTFkMTdmNjc2NWI0YjEwNjE1NmY3ODdiMyBsZWdhY3ktdHJ1bmsKKzE1ODA3IDAxZDFlMTAxODQ5NTBmMmE0MzgxZTc1NmUwZmZiMTJhNTNlZDZkOGUgbGVnYWN5LXRydW5rCisxNTgwOCBmNzM0NThjNWMzNWQwMWRkOTFjNzc5NDViY2I5NDhjMzc3NmY2NWUzIGxlZ2FjeS10cnVuaworMTU4MDkgNzAwOTg0MTA5Y2I5OWZlYmU4YmFhYzI4ZGQ2ZTgwNTcxNTYyNTgyNiBsZWdhY3ktdHJ1bmsKKzE1ODEwIDBiZTRiN2I2NTBlMzNkZGEwODI4OWQ3ZjZlYWJkMmM1NDQ3NDdhZGEgbGVnYWN5LXRydW5rCisxNTgxMSBhMTk1OTYyZTM4OWNiMmEzY2ExMjZkNWRmMGM3ZjM0OTNjZDc1ZTE3IGxlZ2FjeS10cnVuaworMTU4MTIgZjEzMzg0MTA1NTI4OWM3YmM2ZmNiZjU1ZTRmOGQwNDc2MjNlMTMwYyBsZWdhY3ktdHJ1bmsKKzE1ODEzIDRkYmUxMzAyN2NiMzE5Y2UxYzg5NTM4M2NkNzkwMTk5ZTFhZTYxZWEgbGVnYWN5LXRydW5rCisxNTgxNCBiMDA3NDQyMzc4NzcwZGZlZjc4YzdkMGM2Yzc0OGZjZWNkODdlOWIwIGxlZ2FjeS10cnVuaworMTU4MTUgMjc3YmE4MjZjZmM5N2ZmZWQyZmEyNWRlY2MwMDc5N2M3ZjFlNzIxMiBsZWdhY3ktdHJ1bmsKKzE1ODE2IGNiODEwOWU3Mjg3NzFjZjc1ZTE3MmQxNmViMjJiNDc5ZmMzM2E1OGUgbGVnYWN5LXRydW5rCisxNTgxNyA4YTA3NDAyZTIzZGVhZmM0ZWVjYTA4NTU0OWQ2YzVhZWE5Njk1NTI4IGxlZ2FjeS10cnVuaworMTU4MTggMmIyMWNjMWJiNTY0OTEyYWI5NjRiNzUyZDE5YWJhMGFhNzYzYjcwMCBsZWdhY3ktdHJ1bmsKKzE1ODE5IDUzZjQwMjJjMGNkNTg3Yzk3YWQ0N2ExNTgwM2E3MzFiNjY1MzJlMTcgbGVnYWN5LXRydW5rCisxNTgyMCBmNDAyMDU3NTYxYjNhMWM2YzQ1NzBmYzI3NjlhNDJiNjkyNmRlZDk0IGxlZ2FjeS10cnVuaworMTU4MjEgNGI0ODIxYmY1M2RjZjMxYjBlN2JkN2MzNGM1YmI4NDM2YmVlMTY5MyBsZWdhY3ktdHJ1bmsKKzE1ODIyIDliMmU3MGI1NWM3ZjE1ZjM0ZTcwMGI0ZjM2N2MxODE3MTgzNzEyMzMgbGVnYWN5LXRydW5rCisxNTgyMyBjYmRiMDU1ZTc5ZDkyNTAyNDcyZDZjMDIxODJlOTdjNjE5Y2QzODk0IGxlZ2FjeS10cnVuaworMTU4MjQgZWIyNDM0NDNiODg0MGU4MmZhYjdkMzIzODBjNDczNzFhZjJiMGNjYyBsZWdhY3ktdHJ1bmsKKzE1ODI1IGJkOGRiNzE0MjJmNjA4OWY2YmYwNjEwYzJkMjIxMzlkMjgxODE0MzEgbGVnYWN5LXRydW5rCisxNTgyNiA3YjI0YzgxOGUyY2YyZDMxOTdjOWQzZjk4YWU4MGJkN2RlMzY0NjRjIGxlZ2FjeS10cnVuaworMTU4MjcgNWJhYmMwYWRkNjRmMjc5YmZmMmYwMzZhYzc0MmE1MWMzODFiNGRiNCBsZWdhY3ktdHJ1bmsKKzE1ODI4IGE2NzliZGI0M2ZhZGM5MWVkNGUyZDc1OTE5ODEyYzE1ZGFiODJkMTAgbGVnYWN5LXRydW5rCisxNTgyOSA3MDUxMzI2NjdmN2JhMmNkN2JjNzIzODcyMjNiYzY4NDE0NjhjNThiIGxlZ2FjeS10cnVuaworMTU4MzAgYjc2ZGY2ODA5OWE1Zjc5NjMxYmY2ZDhkZWZhMWM1YjBmNGYxNmE5ZCBsZWdhY3ktdHJ1bmsKKzE1ODMxIDczOTJlNzFmNmNjZTAyNzJiYTcxMzkzMWJkOTAxMzY1ZjQ5OWIwODUgbGVnYWN5LXRydW5rCisxNTgzMiBjODc4ZGM2M2Q3YWVmYWJjYWZhNjZlNWE4NDA1ODJhNDljNzE4OGYzIGxlZ2FjeS10cnVuaworMTU4MzMgNmFiOGUxYmIxNjdjZDMzNzJmOGQ1ZWVjYmU5ZTZhYzUwYTdkMmIyMiBsZWdhY3ktdHJ1bmsKKzE1ODM0IGVmM2Q0OThhYTMzYzJlZTQ3MjI2ZjBkOTczMzcxMGM2YWM1Mjc2MTAgbGVnYWN5LXRydW5rCisxNTgzNSA0ZmYzY2UzZjNjYzYyMWU0YzU5MmIzNmI1ZmI5NmY3M2RhNTE0MzJkIGxlZ2FjeS10cnVuaworMTU4MzYgMmNmOTg3NGI2MjExNGZmZTg0NDc2MzVjMjU2OTc2MWM1ZjQ0YTliZiBsZWdhY3ktdHJ1bmsKKzE1ODM3IDVhNzA4MzY5MDg4NGI3Y2MxNTE0MDA4NDc0YjJiNzZkNDgwMTRmZTAgbGVnYWN5LXRydW5rCisxNTgzOCAwM2IxY2M0N2E4NmQwMTQyMjczMzYzZTE0MDkyODRmZmE0YjRmNzRlIGxlZ2FjeS10cnVuaworMTU4MzkgMWQwNDA3OTYwOTUzYTZkODAzMjRhZTM2Yjk5ZTIzMTBjOTljOTE4OCBsZWdhY3ktdHJ1bmsKKzE1ODQwIDE4NTAwM2QwOWU3NjZjODNiMmJmNjEyYmJkMTU5NzdjMzBmYThlZmEgbGVnYWN5LXRydW5rCisxNTg0MSA4N2I0NjZiNzAyZDYwODNkYmZiNDc5ODI0YmM5OTc0NWY4ZDg4NTZiIGxlZ2FjeS10cnVuaworMTU4NDIgMGFjZWMyMTFhMjA5MGZjODg0MzFhMzAwY2E1NzhlNzlhMTgwN2U5YiBsZWdhY3ktdHJ1bmsKKzE1ODQzIDZiMmM2OTYzYzQwYjY4ZjExZThiMzJkYzA1Nzg0Y2Q1M2Q3Yjc4OWMgbGVnYWN5LXRydW5rCisxNTg0NCBlMGM5MDMxMTJlNGVkNGY0Y2EwODcwMzFiMTVhY2UyMDExMDlhMjFhIGxlZ2FjeS10cnVuaworMTU4NDUgMDgxNzRiZjIzNzAyZmMwODc0OGNlMTFiOWYxNDlhZWQ5OTM0YjlmZiBsZWdhY3ktdHJ1bmsKKzE1ODQ2IDkyNDY4ZDQzYTIzZjAzNDg2NGUyYjMzNzU4N2Q4NjIwMzNiNjJhMmQgbGVnYWN5LXRydW5rCisxNTg0NyBkZTRlMzA5NjJmYWJhMDA2NTk4OWZlNTQ3NDQxNjllNjQwZWI2OGE3IGxlZ2FjeS10cnVuaworMTU4NDggMGYyMTZhNTRkMzRiNDkwM2UzZWU0YmNhNDMwNDk4OGFmYTYwMDRmZCBsZWdhY3ktdHJ1bmsKKzE1ODQ5IGE4ODM0ODhiOWRjYmYyOGFjZTI3NTBhOGYxMjBhNmEzYTFhN2EwZDMgbGVnYWN5LXRydW5rCisxNTg1MCBiZjFlYmU4Njk4NzgxY2Y2NTgwMjNhZmZjYjVjZTIzMjkyZGQ4Njc4IGxlZ2FjeS10cnVuaworMTU4NTEgZDA2MDEyOTY3ZWFhMjJlYzgyZjkzZGMzMTJiYTU1NmZkNmNkZmQzZiBsZWdhY3ktdHJ1bmsKKzE1ODUyIGI5YWIzYjJhY2M4Y2U0MGY3MDZmZWQxYThjMTY4MDU4MjNmNTI4ZDUgbGVnYWN5LXRydW5rCisxNTg1MyA1NTJmYjQzYWU4MjM3NzY0ZGJjMjkyZWFlYzM0ODYyNzU4ZDE2YWZiIGxlZ2FjeS10cnVuaworMTU4NTQgY2JlMDJiOGFlZTA3ODkwZmY4NzQ5Yjg1MTIwY2U4ZWM3ZDVhOTVkNyBsZWdhY3ktdHJ1bmsKKzE1ODU1IDA3YTRkMTYzN2UwNmRmOTNiMDA4NjQ5NTFlNzdiODU1MGJmOGVkYjggbGVnYWN5LXRydW5rCisxNTg1NiAyMjMwOWU5NTdmYTczZWUyZDc1OTE0MmE1ZDBkOTQ1NDczOGM1N2YyIGxlZ2FjeS10cnVuaworMTU4NTcgOGM4ZGU1YjczNmRjMjFmMGU0ZDQyNjAyZjQ3ZTJlNGExZjE5Y2Q1YSBsZWdhY3ktdHJ1bmsKKzE1ODU4IGQ4NDlhMGQyMjkyN2FkMzYyNTNjYzEwNmYyMDZiOTFlNmZlYjIxNWEgbGVnYWN5LXRydW5rCisxNTg1OSA3YmU1NDgyNDI2ZDFlZmM2MjFiZWIzMTI2NWFjZDYyYTg3MThhZDYzIGxlZ2FjeS10cnVuaworMTU4NjAgOTljZWUwYzg3ZjZhMDRmMDkxYzRjMDM4YzFmMTc0NTUxOTcyMDQ0YiBsZWdhY3ktdHJ1bmsKKzE1ODYxIDM2NTg0NGU3NTU4NjY5Mzk5ZWQwODFmYjZmZjNhYzMxMGQyZmE3YTggbGVnYWN5LXRydW5rCisxNTg2MiAzY2VhNzNhMmJiZDhjMTI2NjcwNDJlMjg2MjQ4MDk2Mjg5MzEyZDM3IGxlZ2FjeS10cnVuaworMTU4NjMgNDU5ZDE5N2FkYjA4ZmM2N2Q5MjAyODMzOTZlNDg2ZWI2Y2EzZjkyZiBsZWdhY3ktdHJ1bmsKKzE1ODY0IGU4MzllOGU4ZDNlOWMwYTEwNmQwZmYzZjBjODA2ZTc5OGIxOTQ1ZTQgbGVnYWN5LXRydW5rCisxNTg2NSA3OTdhY2YzZmZkMjY2NTczMWMxOGMxODkzNjUwYzFkNzFmZjI5NzVhIGxlZ2FjeS10cnVuaworMTU4NjYgZmQ4NDY3ZDEzNzVkMjA0YTU5OGRmZDQ5NmM0YTkyMzZkZmViYWFhNCBsZWdhY3ktdHJ1bmsKKzE1ODY3IGE2NzI1YWNkZjMzYjFiOThmNDBhOTMyNjA2NWUzMGFmZTc3N2Q3OGUgbGVnYWN5LXRydW5rCisxNTg2OCBmNjFiNGE5OGI5NzI5MmNkNmQ5NzM3NTBjZTZlNzE5ZmNhYmNjYmNmIGxlZ2FjeS10cnVuaworMTU4NjkgNjhlNTdjNWQxYmVjMDcyODc3YmUzMmIwZWM1MTI1OWQ1ZDM5NzM5NSBsZWdhY3ktdHJ1bmsKKzE1ODcwIGMzYTAxYjY0MmM5NzE4OWFkYTQzMmYwZTNlNmZjMGY0YjVhNzdjY2UgbGVnYWN5LXRydW5rCisxNTg3MSAzNDZmMmExYzAyYTBhMzRhMzcwZGFjZGU1MGNmNDcwZjNhZTVjNzQ2IGxlZ2FjeS10cnVuaworMTU4NzIgNTJkNWZiNDcxZTE3MjBmMDVmMWVjMTcwZjU1OTUxNWMyMTFhZmQ3ZCBsZWdhY3ktdHJ1bmsKKzE1ODczIGY4YmM3ZjYyZGMyM2FmZGNlNjA5ZDc3ZDRjMzRiN2VhNGVkNmNmYTIgbGVnYWN5LXRydW5rCisxNTg3NCA1YmQxMjczM2E2NGFjNDhiMjNiYTBmZmQ0NDBiMDdmNjkwNmY2MGEyIGxlZ2FjeS10cnVuaworMTU4NzUgOTBlYjU4MjI0ZTQzMTcyMzdmMmVjYzA5YmYyNGUxNGM1ZTgwMGJjZSBsZWdhY3ktdHJ1bmsKKzE1ODc2IDgxOTNlMDQ1Nzg3YmZmMDgxNmUyNDQ2ZGEzZGEyNTZjNWExYTIxNzAgbGVnYWN5LXRydW5rCisxNTg3NyA4OTQ2MTNiNGViMDc1YTg1MGZlMjUzNTA3ZGI2M2UwMmFlYTI3NzM1IGxlZ2FjeS10cnVuaworMTU4NzggMjZlYzFiMzBlZmE5M2ZkZjVkNGIzM2U4YjA2M2Y0NWIxYzk2OGZlZiBsZWdhY3ktdHJ1bmsKKzE1ODc5IDdmZjQwZGEwOGMyYTY0NjUwZWUzMjcyOGNlMmUwMGNlNGFjZDdmYmEgbGVnYWN5LXRydW5rCisxNTg4MCBmZDEyY2Q5OTYxNTQ0NDRmYmMxMTgwNDBhMzhhZmRiZTNiYWU1OWU1IGxlZ2FjeS10cnVuaworMTU4ODEgODk2YjM1OWQxYzdkNmQyNDIxZTM5ZmU0NGE1M2I3N2JmMTk0M2I0MyBsZWdhY3ktdHJ1bmsKKzE1ODgyIGZhZWZmZjQzZTU4YTk5YjJlNTMzOWE1NjM0MzM4YzY3YjNhMGQ4OTMgbGVnYWN5LXRydW5rCisxNTg4MyA1M2QwMGU3YzU4NDg0MzY3YjBiYzMxY2YwMTQ3MDJjYTk3M2FhMmQ3IGxlZ2FjeS10cnVuaworMTU4ODQgNDYyMTc1ODI3YTc0ZWViZjkwODA3NjMxN2M2YzBmYWI5M2U5ZDZlNiBsZWdhY3ktdHJ1bmsKKzE1ODg1IDUwMjFkYjY3NDAxOTMxZjZjZTQ5YzM4MGZlMDU1Y2U0ZmY5MGY4MDEgbGVnYWN5LXRydW5rCisxNTg4NiA0MjU1OGYxYmJmYzRkYzcxOTM1YTVhODJjZmI4ZWM5ZjdiMjc2YWQxIGxlZ2FjeS10cnVuaworMTU4ODcgNzhhZDRmNjRhZGM1ZjQxODI1ZWVkYjFhYzY0YWZjZjkzN2NjYWFiZSBsZWdhY3ktdHJ1bmsKKzE1ODg4IDA3MDQwZDU2MWYwOTEyNDM4ZjkwNzU3M2MyZDRhODU4YjIxOTk4MDcgbGVnYWN5LXRydW5rCisxNTg4OSBjYjkyOGQ5MjZmMjczZGI5MTRiNzhkNDk0YWFlZGM2YzZiMTVjNGZkIGxlZ2FjeS10cnVuaworMTU4OTAgZTA0MmM0YzM4NjA1NmE4NDM1YTgyYjU3OTFhMmQ2MTZlMTdlNGE0YiBsZWdhY3ktdHJ1bmsKKzE1ODkxIDdhNzg3MTUzNTcyNzFlN2Y3ZjgyNTk1Y2ZkMTU4YmExMWUwOTE4MzQgbGVnYWN5LXRydW5rCisxNTg5MiAwNWNjNDVkNTdhN2ZhMTYwYjNiYmVhMDc4MDE2YTQ2ZTdiNWU4ZGMyIGxlZ2FjeS10cnVuaworMTU4OTMgZWFjYTllMjVhMDQ4OTYwN2RkNTFhMWIyNWExN2Q4ZGFmZjJiN2M4MiBsZWdhY3ktdHJ1bmsKKzE1ODk0IDE1NjUxNDkwYWYzNDJmMDYyNTQ0OGIyM2IzN2NmYWQ3ODU3YTQzMTAgbGVnYWN5LXRydW5rCisxNTg5NSBmODI2NTI1NGQ4YTlmY2M1NzE4NzkyMTQxYmJjODZhYmFjOGE3MTM4IGxlZ2FjeS10cnVuaworMTU4OTYgYjMxZmZmNTk2MjJhM2RmMzdjYmM2ZDhkMTJhMzJlOGM3OTk4MTNhMiBsZWdhY3ktdHJ1bmsKKzE1ODk3IGI2ZWQ4ZmEyNjc1Yzc3ZDQxYjJjZTE2MTIyNGM2Zjg2N2RhYmU3ZWEgbGVnYWN5LXRydW5rCisxNTg5OCA3MmUzY2RiMzJhNmM2MTQ0N2E2MWRmNTYzZTNjNWYzN2Y2ZmEzM2NiIGxlZ2FjeS10cnVuaworMTU4OTkgNDA0MTU2MDkyZjc4MWI4OTdmNGFmNjU5Y2M5YjEwZTQ0ZWY1ZDRjMyBsZWdhY3ktdHJ1bmsKKzE1OTAwIGMyMjA3ZDZjMDNhODE4ZWY1M2Y1NWJkOTFjNjFjYTAwNDEyY2NkNDYgbGVnYWN5LXRydW5rCisxNTkwMSA3YzZiMTJjZWNlZjI2ZTMzOGU5YmUxNjkyNmFmNWEyZjI2NTM5MmFkIGxlZ2FjeS10cnVuaworMTU5MDIgY2NhODQ3NDVkYTNlMDBjYmY4M2E0ZjZjZTRkZWJiNWMzYjQ4YjFhNCBsZWdhY3ktdHJ1bmsKKzE1OTAzIGY4NmVhNWE2OWM1ZWFkYjgwNDBmYzE4ZjY3ZjUyOTg0MDg4MmMzNzggbGVnYWN5LXRydW5rCisxNTkwNCBmNWYwZjAwZjkyMmEzNmFhYWM4ZmEwNjkyYmZmNzhmMmM3ZWIyNjZhIGxlZ2FjeS10cnVuaworMTU5MDUgZmZhNGI0YjQzNzAzMWQzNGYwMTAwYWVmYjYzZTNkZmJkYTFhZGM2ZSBsZWdhY3ktdHJ1bmsKKzE1OTA2IDBhMTQ2M2JhMjkzNDg3ZDZlYTU2YzA4YjFiOWI2OWI2OWU3M2NmMTcgbGVnYWN5LXRydW5rCisxNTkwNyA3OTViMzI3YTk1ZmViZGFiYmZjOWJkZGFjMDIwMWE5MTNhZGFiYWY4IGxlZ2FjeS10cnVuaworMTU5MDggMmYzZTQxODY1ZDNkM2JmYmJjM2Y5YWIyZjkwMWUyNjYxMGFkOTNmYyBsZWdhY3ktdHJ1bmsKKzE1OTA5IDYwN2U1Mjg0MWRmMjc4ZmNlMmE0MTA3OTQxZWYyMWI1NjRlZDQ0ZjUgbGVnYWN5LXRydW5rCisxNTkxMCA2N2U3NzQ2NjE5ZGE3ZWQ3Y2I3NWNhYjYwMmM5NGFhNzNkMjVhODMyIGxlZ2FjeS10cnVuaworMTU5MTEgZjFmNGQ4MjJlNzYxZTdhY2VhOWZjZDI0NTI1NjUwOWI3OTFjY2IyMCBsZWdhY3ktdHJ1bmsKKzE1OTEyIDNmODA3M2M2MzAzM2MxNjNhNzk0MGU2M2I3OTc1ZjcyMmQ2MjNkYjEgbGVnYWN5LXRydW5rCisxNTkxMyAyYjcyYWFiYTc4OTUxMTE1NjRlYTczYWIxYTBkOGRlNjFhZjIzNmRlIGxlZ2FjeS10cnVuaworMTU5MTQgMzI4MTZjZTYwYTQ5YjA5YWRlOTc1OTE3MjllMjgwMzMxNmZmYzM3MiBsZWdhY3ktdHJ1bmsKKzE1OTE1IDM1N2I3MWM2OTMzYjg1MTNkMjViZjkxZWY5NGE3NTMwNDZmYzM4ZjcgbGVnYWN5LXRydW5rCisxNTkxNiA5OTE5ZDY1ZWRjNzZjYWZmYmQ2ZmMyODAwMGI2OGJmMjdmZTEwZWNhIGxlZ2FjeS10cnVuaworMTU5MTcgYzMzOWFjN2I2ZDRmMWUxMTJiOGJmZmU2MWY3YzUyZmI0Zjk4MWU2NSBsZWdhY3ktdHJ1bmsKKzE1OTE4IGZhM2RjMjFkMGUwODgwZTVjNDJkMGQ5NjI4NDE4NDg2MjE5NjJjZmMgbGVnYWN5LXRydW5rCisxNTkxOSAxYTQyYTlkMTAzNTdlMTQ2YWZhZGRlN2I0MjEwYTY3MGM4MDdlMTEwIGxlZ2FjeS10cnVuaworMTU5MjAgNTMzNTVlZDYxMjg4OTI4MTg3Yzg1Y2I3ZTYxYzc0ZjJjMmNjMGM1NSBsZWdhY3ktdHJ1bmsKKzE1OTIxIDEzOWVhZjJmOTZhYjY3MjFlMzJhMThiYzI0ZGViZDc2MWY1MDRhMDUgbGVnYWN5LXRydW5rCisxNTkyMiBjY2UyYzdhMzhiZDU2ZGUxMjY2MzQ5NzgxMWM5ZjU2NDFkYTZlY2Q0IGxlZ2FjeS10cnVuaworMTU5MjMgYzM2MDgwNmMwNmM3NjMyNjFhYzVkZGQ4MjQxNmI0ZTg4YjQzNTg5OCBsZWdhY3ktdHJ1bmsKKzE1OTI0IGEwOWU4NjM1NTM0ZGUxMmI0MmUxNzkyNjgyYTEyOWY0YTVkMzY1OWQgbGVnYWN5LXRydW5rCisxNTkyNSA2ZmFhNDExYzYxZmI0YWVkZjMxMDJhMjIzNTA1YmY5ZmViYzdkMGM4IGxlZ2FjeS10cnVuaworMTU5MjYgYzliMWYxOTg2YzQwMjk0OGQ3MjI3ZDhiM2M4MmU0YWMzMWEwNDcyZSBsZWdhY3ktdHJ1bmsKKzE1OTI3IDAyM2EyMDE4Yjk2ZGViYTg0Zjk3Nzc3MjAyMWVkMTUwM2NiMjk3MDEgbGVnYWN5LXRydW5rCisxNTkyOCBmNzI5NDI0NmQwNGY4ZDRjNTZkNjZhMTAzMWNhOTY0OGUzNDA1Y2IwIGxlZ2FjeS10cnVuaworMTU5MjkgNWY2ZjA4ODY5MDVjZDMzMTg1MDBlZWViMTYxNTA0MjExYjAyMDg0MSBsZWdhY3ktdHJ1bmsKKzE1OTMwIGI3OGI5OTZlOGViYzJiMDYzMjFjZmFiZjE5NzNjNmE1ZTlmNDkxMDAgbGVnYWN5LXRydW5rCisxNTkzMSAyMDgzNDZlOTI0Y2IwMjkwYWQ0MDcxNzk1YjI2NDE3MDU2YWVhNTEwIGxlZ2FjeS10cnVuaworMTU5MzIgYzE3ZmQyY2E2NjU5YzAxNDhhOGI2OGI1ZWViNGRhZTU0MjMyMDIzMiBsZWdhY3ktdHJ1bmsKKzE1OTMzIDA1ZTQ1YzVmMmRlNWI3Y2VmZDY4MGQ4ZjE2YjdkMDQ3NDYyN2E2ZmIgbGVnYWN5LXRydW5rCisxNTkzNCAwMDIxZjNjMGIyMzgwMzIzOGVjYzU0MjI3YTljOTllNTBiZTljOTE2IGxlZ2FjeS10cnVuaworMTU5MzUgOWQ5ZTVhN2MxMmRhYmQzOTE5OGQ3NzRiNGM4MzBmMzNkMWRkNWQ3MiBsZWdhY3ktdHJ1bmsKKzE1OTM3IGQzN2MwMjdlM2ZhZTk3YmQ4YzUwYjY5NmU4OTA3ZjVmYTFiNTA2NGMgbGVnYWN5LXRydW5rCisxNTkzOCAyOGE4YmI3OTRmMTlkNThjODIyMmFiYjk1NzIwZjUzMDRhNDkzZmJlIGxlZ2FjeS10cnVuaworMTU5MzkgN2E5NmVjMDEwMzMzZGM4MjYxMjE5Nzg3ZDI4OWJlNDQyYWM3YWE0MiBsZWdhY3ktdHJ1bmsKKzE1OTQwIGQzNzM3NDU1MmExNWY5YjZkYzJmOGM0ZDA3NWM3ZTFiNGFkZjY0MmEgbGVnYWN5LXRydW5rCisxNTk0MSA5MTVkOTg1OTE4ZTIxZDNhOWNkYmQ3ZDczY2NmZDk3ZjYxNDAzNDI2IGxlZ2FjeS10cnVuaworMTU5NDIgZWYxMzI0MmRlNDMzZTc0ZDBjMjc3ZGUyOTg0ZWE1OTZhZTM3NjY0NCBsZWdhY3ktdHJ1bmsKKzE1OTQzIDZmNDY2OTgxNDg4NGEzMTA2OGViMDg1M2QxMmY5NTQ0OWFiODMzZTQgbGVnYWN5LXRydW5rCisxNTk0NCAxZTMwMmQ5OTZkNThkOGNiNGE5OTAxYjM5OTlkMzJiMGM5YzVmMmU1IGxlZ2FjeS10cnVuaworMTU5NDUgNTRiZmZkZGRjMGVmMDgzMTVkNjUwZTlhZjJlYzk4NDMwNDU0ZWFkZSBsZWdhY3ktdHJ1bmsKKzE1OTQ2IGVmZWNiYmY3Mjc2NTNkNzdhNjJhYzgwNzZjOTJhNjdjYWRhYWI0NmQgbGVnYWN5LXRydW5rCisxNTk0NyBlOWMzNGNjYTBjOTY4NjI0MzU1MmU2ZDdjMGFmNmY0NDc5ODM4ODgzIGxlZ2FjeS10cnVuaworMTU5NDggYzQ1YmMyNThmODMzYzEyOTBhNmUwOTY1ZWJiM2FjZmUyZWY4NDQ4MiBsZWdhY3ktdHJ1bmsKKzE1OTQ5IDU5Mjk0ZGQ0YmZkZGYxZTE0MjgzNzE2OGJkYjY3NjA2ZmE4ZTJlZjcgbGVnYWN5LXRydW5rCisxNTk1MCA5MmJhOTI4YzA5YjhiOGNjMWE3NjIxMTM1NDRiN2RkMjExMWU5MjE2IGxlZ2FjeS10cnVuaworMTU5NTEgN2UyNDViYzU5OGI3YmMzNzE4M2E1NWE2OWUzMzUxZGIyYzA1MDE5OSBsZWdhY3ktdHJ1bmsKKzE1OTUyIGM3YmU4NDc4MjZiMTcyNDEwZjJkMGU2YTkxZmJjNDk2NGRhYzIwYjYgbGVnYWN5LXRydW5rCisxNTk1MyA3ZTcxOTc1ZWE1ZjA5MGZmZmMxNDNlOTE3N2NmNDk0ZGY1NGI5NDI2IGxlZ2FjeS10cnVuaworMTU5NTQgMzEyOGMzY2QxOGU4NmNlYTQ1ZjIyMDVmZjE3NDJjYzIzYjMxYmZkYyBsZWdhY3ktdHJ1bmsKKzE1OTU1IDU0MWRiNWY2MjU5ZTk2YWMzNGM3M2NkOWIwYjc5Nzk1ZDQyOTM3ODAgbGVnYWN5LXRydW5rCisxNTk1NiA3NTNhZjYyYWI4YTE5YmY5YWViMzM2OGUyNDRhYmIyNTE3NWExMTJlIGxlZ2FjeS10cnVuaworMTU5NTcgOTYxNjdhZjkwZmEwMzExNGYxOThlMzJkY2I3NmViMDE0MWEyZWZmNCBsZWdhY3ktdHJ1bmsKKzE1OTU4IDE4OTIwZWFhMTIyNjRhN2FmYThkNzRhYmI5MzQwYjViZGRmZjFmMDEgbGVnYWN5LXRydW5rCisxNTk1OSBlZGUxOGZkNWVkMTVhZThkNmZlZmFmNTJhM2Y0YTYzMDE3MjE3MWYxIGxlZ2FjeS10cnVuaworMTU5NjAgNGRlZWVkNThiZjc2NGNkNTY3YjQ4NWRjY2RhYzllNmMwZGVlMjg2ZCBsZWdhY3ktdHJ1bmsKKzE1OTYxIGM1Mjc5YzBmNzE2ZjA1YjI3ZWMwZmMwMmQ2ZmFiOGYzODI3MzE5NzUgbGVnYWN5LXRydW5rCisxNTk2MiBlZTFhMzRlNWVkYjEyNzVjY2IzZjU3NTg3NThhZmZmNjczNzFlZjYwIGxlZ2FjeS10cnVuaworMTU5NjMgYTA5M2ZhZDkyY2NmODk1MDQ4OGRjZDZkODgwNzE4OWNmZTY2OTgxMCBsZWdhY3ktdHJ1bmsKKzE1OTY0IDc5YzRhMDU0MjU3MjQ0MmY0ZjRkZmQ4M2YyODRhODg4NDVjZGIyNWUgbGVnYWN5LXRydW5rCisxNTk2NSBhNjI1Y2UyZmJmYmQ4NTUyYWFhMzRlNzljYTk1YmVmYWU4NDEwYjllIGxlZ2FjeS10cnVuaworMTU5NjYgNWE0ZGY5ZDljN2JmNTZlM2I0N2Y2ZGJhMmVmNTBiYzI5NTJhYzFhNCBsZWdhY3ktdHJ1bmsKKzE1OTY3IGI5YTU2ZTVlM2QyMjdmZDlkMDFkNzk2Y2Q1Y2RlNzZmMGNlYjBlNzEgbGVnYWN5LXRydW5rCisxNTk2OCBkNjY0MzUzMzdlMWMyYjU1M2I0Y2NiODNhYWNhMDk3OTRjNzFkYmNhIGxlZ2FjeS10cnVuaworMTU5NjkgZWE0YmJhYmM3NDk3MzA5YmZlNTBjMmJhZGE5MTVlMjkyM2I3ODc1ZiBsZWdhY3ktdHJ1bmsKKzE1OTcwIDlkMjA2ODczYzViZDRiMWZhOGU4OWRmZjc1ZGE0YjFiOTU2NzM1M2YgbGVnYWN5LXRydW5rCisxNTk3MSBiMTFlMGE4OThkZTA5NTViZDRjZWZhZGU4NmFjODUzZmYyNTA2MjlmIGxlZ2FjeS10cnVuaworMTU5NzIgZmYyNDNiMGYxNmVlYjg4NTU5MjdjMTI2MDk1YjU4NWY5YjVjOGE2MCBsZWdhY3ktdHJ1bmsKKzE1OTczIDgyN2I1NzZlMjY1Yjk2MDhkOTI1ZjMzM2MwYzRhOGYxMDgxODA5NzMgbGVnYWN5LXRydW5rCisxNTk3NCBmMjlmYmE1Yzk4YmRmN2IwODMzMjYzMGUwNTViZDM4MzU5MTJkNmRhIGxlZ2FjeS10cnVuaworMTU5NzUgYzI5MDllYzdkNGNkY2EwMjUzODVlYTJiYzZlZWM4OWIwODJjZTczOCBsZWdhY3ktdHJ1bmsKKzE1OTc2IDU1NWIyZTIyZWU4OTgyZGEyZGE2ZjBkYjlmYWJhNDdlZDE2MzRhOWIgbGVnYWN5LXRydW5rCisxNTk3NyAwOTc2ODRiOTNjYTljMTA0OWE4MjZmMjc2N2Y1Yjc2ZDU3ZmUxYTc5IGxlZ2FjeS10cnVuaworMTU5NzggNjNlYmI2OTA2ODc3NDlkODIwNGVhYTFiZTE5OGIyOTJmNDQzMzM2MyBsZWdhY3ktdHJ1bmsKKzE1OTc5IGUyYWVlNjE5MGIxOTg1MDAzZTAyYjhiNmZiMzJhYmFhOTUyYTc3OGQgbGVnYWN5LXRydW5rCisxNTk4MCA3OWRjMWVmNWMyMmQxOTY5MTg5MjQ3NmNjNzE5NjA2NWUyYWE4OTk1IGxlZ2FjeS10cnVuaworMTU5ODEgYTkyZjQzZDIwZWNiMTVmODM3OGI1MmFmOWYxYzRhNmQ1MmU2ZWE0NCBsZWdhY3ktdHJ1bmsKKzE1OTgyIDA0MmI5NmNkZjdkNzk0NTAwODIwYzcwZGY0MDc3Zjg1MWUzYWZiZjIgbGVnYWN5LXRydW5rCisxNTk4MyBkN2I0OGM4NDkxODk1MzRiNTNmNGEzNDNkNDcwOTk4YTY0YjZiMTA5IGxlZ2FjeS10cnVuaworMTU5ODQgNWRkMzgxYWViMjNiMjdhODhhMjQ0Y2I0Y2ZkNGU0NDc5NTUyMjc0MyBsZWdhY3ktdHJ1bmsKKzE1OTg1IDA1ZDVkM2Y5YTE4Y2JmYWZkYjgwNzU0NzcyODQyYzIxZTc4OWRmZDAgbGVnYWN5LXRydW5rCisxNTk4NiAxY2Y1NDRiYTIzOWU1NjE2NThkZTRiNTM2NDBlM2EzMTI5MGJmMDM2IGxlZ2FjeS10cnVuaworMTU5ODcgMmViZmZmMTM5MzZjMjRjMGQxYmZmMWRjNWUxNmUwYjgxMzE0ZmJiMSBsZWdhY3ktdHJ1bmsKKzE1OTg4IDEyNDM3ZGViMDY4MGFiYWZjMTE3NDdkYWUxNmE5MDA4OTNjYzFhNzAgbGVnYWN5LXRydW5rCisxNTk4OSBjMmRmNWQyODAzNGRhNTc3Yjg5YjViZWQwYzgyZDIwYTI4OTJiYzZlIGxlZ2FjeS10cnVuaworMTU5OTAgZjE5NWM5OTgxZmExYTlhNjUwZWJkM2I1MDYxYmM1MWFjZWYyZWIwMiBsZWdhY3ktdHJ1bmsKKzE1OTkxIDM0NGFiMzQ4ZjFlOWM5ZDhiMDA3MzMyZjg2MDhjMGRlN2EzNThmODQgbGVnYWN5LXRydW5rCisxNTk5MiA3MDY2YmUyZWRjM2I2OWQ1ZjY5MzFlNTFmNDE5N2QxOGNjMWYzZTQ4IGxlZ2FjeS10cnVuaworMTU5OTMgMjA5ZWI0NGNkYmY3ZTExNDY2MjI1OGEyNTRjODhjNTgxM2QzNjJiNCBsZWdhY3ktdHJ1bmsKKzE1OTk0IDY4ZGQ0MDMwNzE3MjZlMWY5OWFjNDlhNTY5ZTY5MTU3NzdjMjY0MTkgbGVnYWN5LXRydW5rCisxNTk5NSA4NmM5ZjY5MWYzNzkwYTM5MGJiNzIzOTBkMDI0M2M5ODc4NGE1ZmU0IGxlZ2FjeS10cnVuaworMTU5OTYgNzlmOGY2Yjk2M2MyNjlhMjQ5ZjQ2ODA5MDRiNWVhMmMxYjA0NWZlNiBsZWdhY3ktdHJ1bmsKKzE1OTk3IDc4YmZjNzQwYjYxY2QxZDljZTFkYjZlZjRhM2MwMDY4NTRmZTY1NTAgbGVnYWN5LXRydW5rCisxNTk5OCAzMWY5ZmE0MmRmNjAwYWFjZjVlZTA4Mzc1YmFiNGM2ZDlmZTExMGUyIGxlZ2FjeS10cnVuaworMTU5OTkgYWY3MjgwNWU5OTQyYWQyZmRmNWFmYjkyNWM5ZDI1M2I1M2FjMjkxMSBsZWdhY3ktdHJ1bmsKKzE2MDAwIDA0OTM5NWIwMjYwMmEzNGQxMGI0NWE2Mjg4OTAxZDFmOWQ0MTUxZDMgbGVnYWN5LXRydW5rCisxNjAwMSA2NTAxNTQyOTJlZTExNzNhNjMwNGUyYjY2ZjExYTQ4Yzg3MTE3ZGRhIGxlZ2FjeS10cnVuaworMTYwMDIgNTNiZTI4NWNmZDJjYWM2YmI5YjY4NmRhNDQzNzJiOWEwMDQwM2I5NCBsZWdhY3ktdHJ1bmsKKzE2MDAzIDYxMDRiNjEyMTVlNjdjYTYzZDZiODUzNjIyMGU0N2Q1ZWM2ZjVhN2IgbGVnYWN5LXRydW5rCisxNjAwNCA1NDY2MjcwZGJjOTI2OGEwY2ExYTk3ZGRmYjkyNTdlMzlkOTBjMWQ3IGxlZ2FjeS10cnVuaworMTYwMDUgMWU0NmMyM2IxZGFkYjc0ZTZlYzMzN2UyNjg5YjBmMjJjOTAyYzE4NyBsZWdhY3ktdHJ1bmsKKzE2MDA2IGE3OTJiNzRjYzllOGMzNTI2N2I5OWFiZDhlOTk5NzM1NzZiZDRhNTggbGVnYWN5LXRydW5rCisxNjAwNyAwOWQ5MTcyZmIxZDM0Y2Q3MjAwZDA2NWE3YTY5NjFhNzA1YjU3NmIzIGxlZ2FjeS10cnVuaworMTYwMDggNTdkNmEzMWVlNDBlMDE0OWQxOTg3OTkzNjk2ODc1M2RhNjFmNWZjNiBsZWdhY3ktdHJ1bmsKKzE2MDA5IDU4OTIwMmM2NDg4NzkxZDBlN2M3MzI3YzhhYzQ5YWIwOTIzZDAwMDIgbGVnYWN5LXRydW5rCisxNjAxMCA4ZWRlNGIwODAzZmI3OWZmYzM3Y2IyZDA3NmRiMTc3NTg2NmFiMWMyIGxlZ2FjeS10cnVuaworMTYwMTEgYWM0ZDNjZmJjMWM5ZDE4NDE5NGNiOWMyZTU5YzNhZmQxMjc3M2RkYiBsZWdhY3ktdHJ1bmsKKzE2MDEyIDg4NjQwZWNmNTUwNjFmMzI1Y2VmOGIxMjIyYmE0ZjhhOTcxMGRiZDYgbGVnYWN5LXRydW5rCisxNjAxMyA4NjE3N2ZiMGVkZDgzNWNjYzRiODhkNzZkMTJjYzg0NzZhMTA5ZWJmIGxlZ2FjeS10cnVuaworMTYwMTQgMzEwZDdjYmJhMzI5MjM5YzliYzY3YTJiNzM3OTc1MWQwYzA5Mjk1OCBsZWdhY3ktdHJ1bmsKKzE2MDE1IGE2YTY0ZTlhYjIzOGQwZmU0MWMyNjg0ZjZlYTA1YWI5Zjk1ZWRlNTMgbGVnYWN5LXRydW5rCisxNjAxNiBmZjA5NzRlODgyMWJlZWMzMmQ3NjFlMDFjOTkzMWZmNTNjNmY2ZTEwIGxlZ2FjeS10cnVuaworMTYwMTcgOTE2ZmIwMjRjZTk0MmQwOTdiMDhjZTU3Nzk0NzRjYTZkNmJhNmI2NCBsZWdhY3ktdHJ1bmsKKzE2MDE4IDg3ZWU4MmU1YzU2ZDMxYjc3MWY3NmVkNWNlMzBhY2I2MzM0ZjlmZjQgbGVnYWN5LXRydW5rCisxNjAxOSAzNGE2ZTVmZWNhMThlM2U0YjMyYWY1MmQxNjI5NDRkYmUyNzFkYzU0IGxlZ2FjeS10cnVuaworMTYwMjAgYmFiZTdiOWNjNjE3NDU2ZjQyZDM1NWYxYzI5OWUwNTM4NWJhZTA5OCBsZWdhY3ktdHJ1bmsKKzE2MDIxIDNkYTQ5MzQyMTllNWY0NzdlNzVjNDg4N2I4ZDZkZThiNDQ1YjI2MmYgbGVnYWN5LXRydW5rCisxNjAyMiA1ZmMxOGJjYTdmNTVhYzMzYTUyOTBjNTI0MDk4MDcxMTRiYjMzZDk3IGxlZ2FjeS10cnVuaworMTYwMjMgMWM1YTVhZGUwNGUyNzYyYzliMTFlMjlkYjkxMjlhMmYyNjVhYTJkZiBsZWdhY3ktdHJ1bmsKKzE2MDI0IGM2ZmQ2ZmZiY2IxNWM3ODFjYTRkNGViODUyNWI2ZWQ2ZmVhZTI2ODMgbGVnYWN5LXRydW5rCisxNjAyNSA4NDg3OWFiNzFiOWYzZmQ4ZGFmOTZiZmI3N2JkZjExYTEyNjc4NzgxIGxlZ2FjeS10cnVuaworMTYwMjYgYjlhZGI3OWNkZWI2MzQwOWY5ZjUxZDRiNDE4YjFmMjM4MzYwZjg1ZSBsZWdhY3ktdHJ1bmsKKzE2MDI3IGU4YmIwZDUzNjYzM2FlNzk1MjMwOThhMjU3ZjE4YzRkNTIzNzRkMzQgbGVnYWN5LXRydW5rCisxNjAyOCA0YzRlOTUxNDcyNTgxMTEyNTgyNzRmNTQ0ZDVkZWU3NTZmZGQ2ZGEyIGxlZ2FjeS10cnVuaworMTYwMjkgNGNlMjU1NDk1ZGEzNDAzMDQ0MGE1OGI3YzcwZjRhNTVhYmI5YmFjNyBsZWdhY3ktdHJ1bmsKKzE2MDMwIDgzMzc3ZmMyOThkODNjOGFmNGVkN2VmZDNkOGZjZGU2ZTU5MjkyMWMgbGVnYWN5LXRydW5rCisxNjAzMSBlNzJjYjQyMTc2YmM3MTkzZDk1MjIzMjRkN2QzNWM0NWFjZjRjNTcwIGxlZ2FjeS10cnVuaworMTYwMzIgNjE1NWY1MzJmMWZjYzQ4ODdiZmU4OWE1MDkxOWJhZGM0NTBkNWZlYSBsZWdhY3ktdHJ1bmsKKzE2MDMzIDg5ZjBhNjY0ZTI4MzBiMWNlYmVkM2U4ZGIzZmI5YTFlNTAyN2NmYmUgbGVnYWN5LXRydW5rCisxNjAzNCBmZGI3OGNmZDllNzY3ZDkyYTgyMTE2MzAwODU2OWQyZWIwOTI5MzFhIGxlZ2FjeS10cnVuaworMTYwMzUgZWZiNGIwYzY2Njg4ZTQzNjMyZGMxMzU1YjljOWViNzAwNzk1YjVjMiBsZWdhY3ktdHJ1bmsKKzE2MDM2IGI1MzI5MGI3YjU0NjhhMTliN2U4ZDA4ZjQ4MGJkMWE3OTQwNWFkNTggbGVnYWN5LXRydW5rCisxNjAzNyAxYzI3YjM3ZWQxYTFhZTc3ZjI1ZTY1ZTY2YjgyM2U0NjFiNjU4M2IzIGxlZ2FjeS10cnVuaworMTYwMzggYmM3MTRhN2EwMDQyODRiZWRjNzQ3OGI0NTVhNzU0YWVjZTUyYzA3ZSBsZWdhY3ktdHJ1bmsKKzE2MDM5IGUyYjM2MjFlNjUyMTM5MmFlYjZiYjdjY2M3NWY1OWIzNWJmNTI2ZWUgbGVnYWN5LXRydW5rCisxNjA0MCAzMzcwZWRhZDA4Y2VkNWRmODg4ZWFjYmE3OTZmOWFhZWVhNjA1Nzk2IGxlZ2FjeS10cnVuaworMTYwNDEgZTJlZTM4ZWE3ZjM1ZTRkNGEwM2UwNzNjZTExNDMwMDIzYjRkZGMzMSBsZWdhY3ktdHJ1bmsKKzE2MDQyIDUwM2E3Mzk5ODIyMmM1MzEyNDY5YzgxYjZiMDlkNjJiNmM0Y2U2YTcgbGVnYWN5LXRydW5rCisxNjA0MyAzZjU5OGI5OGQ3ZjkyMjQwNmZjNGQxODM3YmJiMDNiMjQ5OTA5ZDcxIGxlZ2FjeS10cnVuaworMTYwNDQgOTFkZTNmMDNhZTg5MjdhZjJmNzc5MDExNzIyZDQ1NWIxMDc2YjEyMiBsZWdhY3ktdHJ1bmsKKzE2MDQ1IDNlMDdhNzMxNWFmNTJmZjY4NDVmOThjNDkwNmE0ZGVmZmQ0YTU2NWYgbGVnYWN5LXRydW5rCisxNjA0NiA1MTAyZWZmYjBjNGI0YzVlYjVlNmMyZGU4NWM5OWM2Zjk4MDhiNmE1IGxlZ2FjeS10cnVuaworMTYwNDcgZTBlYjQzMWU0MzkzYWNkN2Y2MjZiMWMyYmE3Mzk2YjJjZGZjNTljMyBsZWdhY3ktdHJ1bmsKKzE2MDQ4IDcyOTVmMzYwMjY0ZTQ3Y2M1MWU2YWUxYTYxMDdmMTA3ZjExOTAwNTAgbGVnYWN5LXRydW5rCisxNjA0OSA0MDExYWNmZTE0MzNmYTk2MTViYjJkNjVkZDRhYjNkNjkxMTcxNTBlIGxlZ2FjeS10cnVuaworMTYwNTAgZjExOWMyZDhkNTYwM2Y3ZmY0YzE5OThkYmJmOWJmNGM1M2Y0ODhkYiBsZWdhY3ktdHJ1bmsKKzE2MDUxIGNiMTg2NDAyNTk5YTcyN2ZhYTEwMjQzMjk3MjkwNzc4ZDQwM2E0YjIgbGVnYWN5LXRydW5rCisxNjA1MiA3ZWRjNDgwYmI5ZjM5OGU5ZDI0MWVmNThhNDNmNTNlNDc5OTM2NDljIGxlZ2FjeS10cnVuaworMTYwNTMgY2ZjNjRmYWYxMmNlNTk5MDM5YWUxOWZkZDRiOWVkNDUyZWU5MjM0NCBsZWdhY3ktdHJ1bmsKKzE2MDU0IDE4YzgxZjFhMGRhMjM0ODkwMzk0YjcxNmYyY2FlNmMyZjlkZTc1ZmQgbGVnYWN5LXRydW5rCisxNjA1NSBlMzhiZTg3MTdlYzAzMWI2MTJiOGVmNTU2MWJhZTMyNjM2ZDNjYmZlIGxlZ2FjeS10cnVuaworMTYwNTYgODAwYTc1ZDA3ODdmMGEwMWE4ODk1Y2M2ZDg2ZWNiOTk5YjNlYTRhNyBsZWdhY3ktdHJ1bmsKKzE2MDU3IDZlNGRmMzQxNGE1ZmNmNTAwYzU3OGJhM2MxMmI2MGY5ZmVhZDUzYjcgbGVnYWN5LXRydW5rCisxNjA1OCBiOTFiNTc2MmIxY2QxMTRhYjdjMDM3ZmQzNjRlODk4NWRkZWFmYWYyIGxlZ2FjeS10cnVuaworMTYwNTkgYTVlMjBkMDc0NzBjNWU3YjgzMTlkOTA1NGZkMTNlNGM5OTAzOGE2ZiBsZWdhY3ktdHJ1bmsKKzE2MDYwIDQ2ZWUyNzE1ZDI5ODM5YmQ2M2VhYmFiMjQ2OWJiMzU5ZmNlM2ZiYTQgbGVnYWN5LXRydW5rCisxNjA2MSAyZmIzZmI2NDZjYzU5NTk2MzA0YTM1OGQ1NjM0Y2NjYjgzOWUyZWRiIGxlZ2FjeS10cnVuaworMTYwNjIgM2RiNjJjNzVlNjViMTU3MjlmZTY2MGU3YjAyZGUyMDQzMGJiNWEwNCBsZWdhY3ktdHJ1bmsKKzE2MDYzIDFjZjY3MzgyNDlhZmY1ZTMzMzliZTc5MWYzYjQ5ZWFkMDNkNmEyMGEgbGVnYWN5LXRydW5rCisxNjA2NCA5MDU0MGNkZjljOGQ5NjQ3YTZmNGU2Yzg4ZjZmYTljMjlkZjg4YTU5IGxlZ2FjeS10cnVuaworMTYwNjUgMzYwNzQyMjIxNjFjMGIxYjRlN2Y5OGE1ZDQ1YzZmZmZiNDM3YzE1NiBsZWdhY3ktdHJ1bmsKKzE2MDY2IDUwZjk3N2UxZTJhYjcwZDJiZTc4OTNmZmQyOWI1ZGQ5ZDQyY2IwMzEgbGVnYWN5LXRydW5rCisxNjA2NyAzM2NlNjNiMDYzNTkwOGZhM2ZjMDIzNzcxNjBhZDE1MGJkNzk0OWMxIGxlZ2FjeS10cnVuaworMTYwNjggMzg0ZmE5YjllMjUzY2EwZjc0NDA3YWNjM2ZkMGY0NGNhMGNlMWRmMyBsZWdhY3ktdHJ1bmsKKzE2MDY5IDA4NWIwMTVhOTI5MWQ5ZDVhMTM2OThlYzM4MDdjMGQ0NDJiNzYxN2YgbGVnYWN5LXRydW5rCisxNjA3MCBmYzJhZDZmYTA4ZWNlOTEyYjM4ZDUxNzZlNWExNjc3ZTQ3NTI5ZTkwIGxlZ2FjeS10cnVuaworMTYwNzEgYzdlZjE1ODU5ODNjNDY2NTRjYzRjN2EyMTEwMmEyOTk1YzA4ZjkyNCBsZWdhY3ktdHJ1bmsKKzE2MDcyIDNjMzViZjdiNTgwYjAyMmU4YjdiZTc2MDM0ZDgwZmRiNDc5MGI0NzggbGVnYWN5LXRydW5rCisxNjA3MyAwNjk0Y2UzYmQ0OGY2N2IxMTVkYjVlNzg5NTQ4MDRjNmFiZGRmZGYzIGxlZ2FjeS10cnVuaworMTYwNzQgNDIwYWI0NDMwMjFlOTY1ZDNiY2NiMmMzODFjMjQyNjIwMDg3NGQwZCBsZWdhY3ktdHJ1bmsKKzE2MDc1IGEyYmM4ZGZmNTVkZmY1NDc0NGE0YzEzZGYxNjQzY2ZiZDQ3MGU3OTggbGVnYWN5LXRydW5rCisxNjA3NiAwM2FhMjY4MTlhYzI3NjUxZDljZDkyZTBiOTRhMjMwNDdjYTgxNjIxIGxlZ2FjeS10cnVuaworMTYwNzcgNTgxODM2NzljOTBhMjIwOThiNjA5ZTFmMmI0MGVlNTAxZTI5ZTcwNyBsZWdhY3ktdHJ1bmsKKzE2MDc4IGZkNzhiYzVmMmIyY2NiMWJmNGQzODQ0MTExNzc3NGM4NDQ1YTMzYjUgbGVnYWN5LXRydW5rCisxNjA3OSA2NmQ0MmM1MWRmMTZhZWY5MmVhYmU0MjA4ZWQyYzkzNjFhNjQ3YjkzIGxlZ2FjeS10cnVuaworMTYwODAgY2Q4YTQxYmY0YWMyMGI5YTcyYjRmMGY3MTgyNGJlN2VmN2M4NjFkOSBsZWdhY3ktdHJ1bmsKKzE2MDgxIDM5MGU1ZDUxZmY3MzMyYjY1MTJiOGY3ZTQxZDg5NzhlN2Q1NzEyZDggbGVnYWN5LXRydW5rCisxNjA4MiA2N2EwNDgxNmVhNTAxMWEzMDBlZTM3YTA2MzZlYTQ3M2JmMzQ0ZTA5IGxlZ2FjeS10cnVuaworMTYwODMgYWMyNGQ4MmQ4ZTMzYmFhNjNhOWU3ZWMxODBlNjY4NjgyMGUwOGVjOCBsZWdhY3ktdHJ1bmsKKzE2MDg0IGFmMTBkOWI3NDE0M2QyYzNhYjE4ZDg4Y2I4YTNmZTIzOTQzZGRhYWYgbGVnYWN5LXRydW5rCisxNjA4NSBjZWQ4NjBmMmQ4ZDJjYTVlMGVjMmZhMGM5NGRhYzI5Njg0ZTcyOGNjIGxlZ2FjeS10cnVuaworMTYwODYgMzQxOGQ1YzBmOTYwMjJjYThlYzNjZTVlMDc3Y2U2YWQyOTQ1MGE2ZCBsZWdhY3ktdHJ1bmsKKzE2MDg3IDdiYWMxMGE5YmI2MWNmNmVhMGJkYTFmMDZjM2RlOTUyYzM5MmNjM2IgbGVnYWN5LXRydW5rCisxNjA4OCAyNDcxNzQwNWRkODk5MGY5YjFhOTYyNThmMWY5MjMwYjIwNjNmMjA5IGxlZ2FjeS10cnVuaworMTYwODkgYzE1NWJjY2I3YTIyZmIyNDY4YTFlNDBkZjRiOTI2NTE4YjdmZmQwOCBsZWdhY3ktdHJ1bmsKKzE2MDkwIGQ4YTQwNzc3N2E2ZjRiN2E0YTgxMzE0YzU0MzcyZjNlZDk3ODkzNzkgbGVnYWN5LXRydW5rCisxNjA5MSA0NTQ5NDA0NmMyZmI2MWM1N2JmM2E3OTU0Y2UxZWQxNTIyOTVjY2Q1IGxlZ2FjeS10cnVuaworMTYwOTIgNjNkMjg4N2JhZjExODQyNmQzMmZjNDkzNGMzNmJjYzFkNTMyZDg2YSBsZWdhY3ktdHJ1bmsKKzE2MDkzIDdlM2Q2MDQ1NTk1OGZjNzM4NjNiNjVlNDRjMjlkMTBhNDI3NDA3MDEgbGVnYWN5LXRydW5rCisxNjA5NCA1NjI2ZDQyNTVmY2VkNWNjOTM2MTYwODM5ODc0M2M5ZGVjYmU3Y2ZkIGxlZ2FjeS10cnVuaworMTYwOTUgODllNDdlYmEyNzcxODliYzg4ZjRkOTFhODNjYzNmNTY4OWI2OTRjZSBsZWdhY3ktdHJ1bmsKKzE2MDk2IDg3ZGYxYWU0ZjExMGM1ZDA5N2QyMzI0MTVhNDUwOTViMDY2ODFjM2QgbGVnYWN5LXRydW5rCisxNjA5NyA4ZDMyNGQ5ZDUxOGZkYmQ1MGUwYzg5MzE0NGFiZmYxODkwYzgxOWE4IGxlZ2FjeS10cnVuaworMTYwOTggZjBkNDAyZDQ4MTgwYmU5NDg4ZGI5ZGRlNmMyMjkyMGFlNGRjYjEwYSBsZWdhY3ktdHJ1bmsKKzE2MDk5IGUxMDE2MDBhZGVlNDRhNjMxMmU5ZjEyMDIxNmJlMWZjYTVjNTQzNmQgbGVnYWN5LXRydW5rCisxNjEwMCBhN2Y3MjAyMmI5M2FjODk3MjM4YzI2ZGNmY2FiMzc5ZmRiZGYyMTIzIGxlZ2FjeS10cnVuaworMTYxMDEgZjk4ZDZkNjNhZDcxYjZiYzE0NGEwZGY0N2UxYzQ3YWJkMWMwNjBhNiBsZWdhY3ktdHJ1bmsKKzE2MTAyIGRmZjI3N2Q1ZmViMjViMGVlOWRjYTI1YWQ4MzAyMzIwN2UxMTNlNjMgbGVnYWN5LXRydW5rCisxNjEwMyAzZjFiZDQ3ODI2MjhiNmEyZDVmNDc0NjM0NjUxNjQwOTgzNmRlMGUzIGxlZ2FjeS10cnVuaworMTYxMDQgMmE1YTNjYWQ1MTc0YTVmYmE3NTc3MmFjM2ZkY2E0ZWNmY2I4MGViZSBsZWdhY3ktdHJ1bmsKKzE2MTA1IGFiZWQ4MGI1MGEyY2NhYmE0MzMyZGFlZGNjNDk5Njg2MDdhNGZiNDYgbGVnYWN5LXRydW5rCisxNjEwNiBjMzAyOWYyNzYwNDcyY2Q4NTRiMGY5NjJlMmNmZWM1MTFkNDNjN2I1IGxlZ2FjeS10cnVuaworMTYxMDcgNGM0MGVmNWRjZDgyN2FmOWZhZDgxZmMyOGFlYTM5ZGFkNmQ5M2Q5NyBsZWdhY3ktdHJ1bmsKKzE2MTA4IGZiMzA5OTYxMDFiYzgzNGQyOWU4YTMxNmJlYTRjMGIwYzg3M2IyODEgbGVnYWN5LXRydW5rCisxNjEwOSAzODQ4MzVlYTBhNWExNmIzODVlMjA4Y2JjYWQ0NGY3ODk2NmJkM2M3IGxlZ2FjeS10cnVuaworMTYxMTAgNzYyODg4MmRjY2NkZTg3ZTA2OGVkNDMxYzkzYTRjNTU5ODM1MjczYyBsZWdhY3ktdHJ1bmsKKzE2MTExIGIzNTMwZGFlMDNiZmI5N2ZkOGEzMDc3MjNjMjJkMmZkZGM5MGM2ZjQgbGVnYWN5LXRydW5rCisxNjExMiBlMGQ2NzZlOWNiNjZjMTQwYTc3ZWI1ZDA5ODU3ODg4MTMxMDVlOGZjIGxlZ2FjeS10cnVuaworMTYxMTMgNTYxOWMzZjdhNDRiZGM1YWQxNjQzMDc2MTQ2ZTljZDIwY2U1YzhiYyBsZWdhY3ktdHJ1bmsKKzE2MTE0IGQ4ODUzNWNjYWVlNWMyNjljNjg0MmY5NzVlN2Q0NGRjMTUxZjYzYTEgbGVnYWN5LXRydW5rCisxNjExNSAwYjI4OWUwMGQ1MmEyNzQ1NTIxM2FlZGNlMGIwZDBiMjFjZWNkNGQwIGxlZ2FjeS10cnVuaworMTYxMTYgOTlmMzQxYTk3ZmRlYjZmMDc5MjRhZTVkODBjZmVjNDY5NDk1MTA4ZCBsZWdhY3ktdHJ1bmsKKzE2MTE3IGI0YWVkZDkwYzg2NDJlOWRhMGVhNGMxNjEyYzI2ZDdhNmE5ZTE5MzggbGVnYWN5LXRydW5rCisxNjExOCA5YTFiOTYxZTBjM2FmNTA0MWIwOWE1M2RmZDI5MmNmOGY1ZDU2OWUyIGxlZ2FjeS10cnVuaworMTYxMTkgZDgwMzgxMzM2NjEyZDYxZDdlMjhmNDE1OTAzOThiOTVkMjYyZThmNCBsZWdhY3ktdHJ1bmsKKzE2MTIwIGM4NzA2ZTVhODgyZmEyMTJkZjMzYzBlNThkYWFmOTU0MTc4MjlkNzggbGVnYWN5LXRydW5rCisxNjEyMSA2MGE5NzI2ZDg1ZjhlMzAzNDZjOGZjYTBiY2VjMWVhMTVlNWZmNGJiIGxlZ2FjeS10cnVuaworMTYxMjIgNDg0YmZkZTcwZGNjYmY0Y2I2YmM4M2M2MDg2OWQ0OTZiNTQ4NjgxYyBsZWdhY3ktdHJ1bmsKKzE2MTIzIGJlZjdiNjI5YWM5NTliZTEzNWM3Y2RkMDVkMWU5NTljYjU0NTdiNjggbGVnYWN5LXRydW5rCisxNjEyNCAwMmY4NzA1YmRhMDVlNTIwNmZkODYxMTFlOWU4YjA4OTU0NmQxZTFlIGxlZ2FjeS10cnVuaworMTYxMjUgZjM2OTM2ZDQzZDAyYmJjNjNiZTAzMDlmNDFhYTY4YmFlNGZmZWE1MiBsZWdhY3ktdHJ1bmsKKzE2MTI2IDNiZTI5NDQ5NTlkYTczYzU3OTcxNzViZjkwYTRmYjgwMGQ2ODJiZjYgbGVnYWN5LXRydW5rCisxNjEyNyBiNTk3MDY3ZTA1NmY3OTFiMzQ1OTkwMjgyMmZlYmNhNjdlODZkOGExIGxlZ2FjeS10cnVuaworMTYxMjggYTExMTBkYTY1N2U1MGRkZTUzZTBmYTkzMGVhNDY4NTIyMjI1MWJhNCBsZWdhY3ktdHJ1bmsKKzE2MTI5IGNiZjY2ZTRmZjA4ZjBlZTljYTBiMTJhOWViMWNlODYwZmIzOTc5ZDQgbGVnYWN5LXRydW5rCisxNjEzMCA5NDc5MGIwYzU1ZDA0YWNjY2YzOTZjZDYxNjM4NDMyZjIzMzcyNzU0IGxlZ2FjeS10cnVuaworMTYxMzEgZjBjODBiODM2NGUyMGIzYjQ4ZDI4ZWFkYjYzNzFiYzg4OWY3YTI4MSBsZWdhY3ktdHJ1bmsKKzE2MTMyIDNhMDAwMzFmOWQ2MGM3YzJkZjJlMWZjMWQ4MmFkYmFhOTBjM2M5NjEgbGVnYWN5LXRydW5rCisxNjEzMyBjZDhiOGJhZmJiMzM5NzNiMTk0MTA4ZjY3YTc1MzIyZWJmY2FiOTlkIGxlZ2FjeS10cnVuaworMTYxMzQgNzQ1MTc3YmUxYTcxN2NmMTUzMmExNTFmMjdhNWM5Y2Q5NjEwODE5OSBsZWdhY3ktdHJ1bmsKKzE2MTM1IGQ2Nzk3NDVkOTg2ZmRiNDkwYTcyNzZhMzE0NGM0ZmUxMDRlZWZmYmQgbGVnYWN5LXRydW5rCisxNjEzNiA4ZmI3MzExZDEzODEwODhlNThkNjcwYjE5YmYwZWYzNWExMzkxNWI4IGxlZ2FjeS10cnVuaworMTYxMzcgY2JiZTUxMmQyNGUwNWNlZDM0N2EwZDZmODIxOWFhMWY5NmFhM2E5OCBsZWdhY3ktdHJ1bmsKKzE2MTM4IGJmZTIyY2Y2ZTc3MDhiYTY0MmE0MGFkZDI2ZjFmMGIzYjE0NDhhMWMgbGVnYWN5LXRydW5rCisxNjEzOSAyMDE3ZjU0YjAzMjVjN2E2OWIyN2NlMmRjNjdjMDQyOWRhMWU5M2E3IGxlZ2FjeS10cnVuaworMTYxNDAgMTEzZDgzM2VlYTdlMDdhOTE4YmI1MTZhYjU0NTQ5ZDk0NDA0MTgzOSBsZWdhY3ktdHJ1bmsKKzE2MTQxIDYyZTE0MGJhNzgyZGMwNDAwOTRkMThkZjg1Y2Y3ZTQzNTdmYTc0NmQgbGVnYWN5LXRydW5rCisxNjE0MiBkMTY2YTFlNjA3NjBmZDI2ZjYxMWEyYzMzM2U5NWIyYjQ4MTM4MWRkIGxlZ2FjeS10cnVuaworMTYxNDMgODlmZjU5MTdiYzhiYzdmMDljZGFlNWMzNzNlYTkxN2IwODIxNDkzYSBsZWdhY3ktdHJ1bmsKKzE2MTQ0IGIyZDEwNDA3YWI5ZGJjYWNhNmRjMGU3YTRlOGJlMjQ4ZTY4ODY4YjYgbGVnYWN5LXRydW5rCisxNjE0NSAzZmYwMjJlMWI5NWQxYWFmMDViMTgyMmZhZTM1NmVkNzhjMjFhMTg4IGxlZ2FjeS10cnVuaworMTYxNDYgZWFjYjJlNTFlMTY5NjUyMGJkYzg1ZjAyNzNmZjdjYzRiNTE4YTM0OCBsZWdhY3ktdHJ1bmsKKzE2MTQ3IGFmZjFjNDE0NmMxYzJmM2E4NzRmOTZiNTM0MmQ1M2NhYzE0NWRjZGUgbGVnYWN5LXRydW5rCisxNjE0OCAzZjA4YmVkYzFjMjYxNTE2YzUyMjNjYmU3ZTllMjJkNzYzYmE1YzA0IGxlZ2FjeS10cnVuaworMTYxNDkgMWJlNDY2NTE5MGYwNjk1MWIzODIyYjM4Y2RkZTgyOGJhODRiMzIxYiBsZWdhY3ktdHJ1bmsKKzE2MTUwIDg4MDQ0ZjlkZjgzM2Q1NjRkODNmY2M1Yzk3MzM4OGMyNDYzYzk5Y2QgbGVnYWN5LXRydW5rCisxNjE1MSAxYzBkMzViYTE2YjFjNjJiMjFjMDYzOGQ0MjU1ZTNhNjIxMzkyZDgxIGxlZ2FjeS10cnVuaworMTYxNTIgNjI3NTRiOWVjN2RmYzA1ZjU2MjBlYzY3ZDRjNTBlZjlhODZiMDlmOSBsZWdhY3ktdHJ1bmsKKzE2MTUzIDFiNDM1OWEyOTc2ZGFjMzMxNjQ3NWJiMWJlMjQzMGFkNWRhNmE5NzMgbGVnYWN5LXRydW5rCisxNjE1NCBiMDVkZjY4NzIxNWVmNDRjOTdmNWZlMTBkMDgyMWE4YWM3YjNhMjU0IGxlZ2FjeS10cnVuaworMTYxNTUgYmNiMTQ2MjdiOGY0MWNhMTExNmQ1MDdmZWY0YzU3OWM1YzNlYzc5YiBsZWdhY3ktdHJ1bmsKKzE2MTU2IDgxMDdkZTI4YmM4MjEzOWQwNDc4MzEyZGEwYWM5ZWRiM2M2ZjQ3MWUgbGVnYWN5LXRydW5rCisxNjE1NyAzMTdlOGUwOWNlODc3MWM2MmNiYzZkN2NhMjQ0YjYwM2RjMjRlODBhIGxlZ2FjeS10cnVuaworMTYxNTggNzU5ZjY5ODc0MGNjZjNkNmNlOTZiZjczMzk5Zjg5MDY4YzVkMGVhNyBsZWdhY3ktdHJ1bmsKKzE2MTU5IDhlYjVjMzZlZGU5ZTcxM2Q2NWUwZmI4Y2IyYjg1Njk4OWExOThmNTUgbGVnYWN5LXRydW5rCisxNjE2MCBlOGNlMWJiMDU2YWVjMjFjZGQ2ZmFjYjk5ZWRjYjgwYjc0NDJlZmVkIGxlZ2FjeS10cnVuaworMTYxNjEgMjExMTkxODllZTE4MmNiZTgwOTEyZmRkMGE4YTViNmVlZTA1YjZkZSBsZWdhY3ktdHJ1bmsKKzE2MTYyIDk4ZGIwYzNjMWZiOWRjMDA0OTczYTAxYWYwMmE4NDkzNzIwOTgxMWIgbGVnYWN5LXRydW5rCisxNjE2MyA4ZjFhMmRlZWI5YjAwMGQ0ODNlMGE0YWM4YTQ4MDhhZGUyNTQ4MDM0IGxlZ2FjeS10cnVuaworMTYxNjQgN2ZiZGI1ODE4MzhmNjMxYmRkNzRjMmNkYjJlMTQ4ODc1MTZmYWJlNSBsZWdhY3ktdHJ1bmsKKzE2MTY1IGU5NWZmMjExYjlkM2M3YjhhMDBmOGUwZGM5ZWI2MWJkODNkMWU4NDYgbGVnYWN5LXRydW5rCisxNjE2NiA0Y2YyMTg1MmZkNTIxNjAwOTE3NjAyZTYyNzI1M2YzYjQ5OGQ0MWVjIGxlZ2FjeS10cnVuaworMTYxNjcgNTM3MTQ3OGY2ZjViODZkZTNlNmQyNTFmNWNhNGIxYWQ0MzY0N2I1NSBsZWdhY3ktdHJ1bmsKKzE2MTY4IGE1MDNhZjdlN2ZiN2JhNjdhNGUzMGY1MTc4ZjY1MTc1ZjNhZDRkYzQgbGVnYWN5LXRydW5rCisxNjE2OSBmMjYzM2M5M2UyZTU3ZTdhOThmODcwNzQxOTQxNWU1Mzc4MmUzNjM4IGxlZ2FjeS10cnVuaworMTYxNzAgZjUyMTJhZjllNjQxM2YzMTc0ZmNiMDE3MTFhZjQyZjNhZmU2OWRmNSBsZWdhY3ktdHJ1bmsKKzE2MTcxIGMzOGJhY2Q4ZWZhZDJmZTIyODAwNjRlOTYxMmYyYTE2ZDEwNjUwZTggbGVnYWN5LXRydW5rCisxNjE3MiA1MTU3ZWI3YmUyMGQ3ODAzMmU5YWRlMjYyYzY1ODgzYmM0N2Y1MDY0IGxlZ2FjeS10cnVuaworMTYxNzMgOWE4MzkxMDU0ODQwOTI3NGQyYTAzYTY0Y2Q2YmY3ZTRiYjIwNzczNiBsZWdhY3ktdHJ1bmsKKzE2MTc0IGU3MTA2YzJmYzI2Y2M0NzQzYWI4Y2IwMmRkMGI1MzQ4Yjc2NGM4YjcgbGVnYWN5LXRydW5rCisxNjE3NSA3ZmVhNGExYWYwOTA5ZmVhYTY5Y2YwMTEyNGM0ZGNjZmNhMzFmZjIzIGxlZ2FjeS10cnVuaworMTYxNzYgNmE3OGVhZDEzOTg3MDQzNjhiNWNmODRhZmVmYzA0ZTI2OWJiYzgxMyBsZWdhY3ktdHJ1bmsKKzE2MTc3IDJiYTc2ZTMxNTAxNmIyMzZiZDUzZDlkYWQ4NDUyYzkxODZhZWIyMmEgbGVnYWN5LXRydW5rCisxNjE3OCBkYTYxMDkzMDYzOGI0Nzg1OTk2NjE5YzljYzJhZjA4ZWZhNzk2NTlhIGxlZ2FjeS10cnVuaworMTYxNzkgNzBlNGNiZmMzYjI0NzljOGVhZTM5NGEwY2FkYzA1Zjk1YTNlNDVjYyBsZWdhY3ktdHJ1bmsKKzE2MTgwIDg1NTIwYzIyMDA2N2EyOWFiMWE2YmQxZDVlN2ViNmVkZjcyOTg0NmQgbGVnYWN5LXRydW5rCisxNjE4MSBkYjkzOTJhMDRiZWQ0MjFjZTllMDI2NmYwNWRkNDg0ZWVhMWQ1ZmFkIGxlZ2FjeS10cnVuaworMTYxODIgZDNmMWVlZmRjYjNhOWNhMTZiMTI5NGZhZDAzYWJhNDJmZTQ2OWM2NyBsZWdhY3ktdHJ1bmsKKzE2MTgzIDM0NmRmMTkyMDg3MzdhYmRlYjZjOTNkZjNkYzc4NDQwMzU4NDU1OTcgbGVnYWN5LXRydW5rCisxNjE4NCBhYTNkM2JlY2U3NzQ1NDVkMjJmNjE4ZjczZDg3ODNiODM5YjgwMzA5IGxlZ2FjeS10cnVuaworMTYxODUgYTg3ODAzZWI5ZGZiMTQ0N2Y1OWZmNjU0MWJmNjNiYzBmZmU1NjczNyBsZWdhY3ktdHJ1bmsKKzE2MTg2IDY0YTE0YmE3NDY0MTM4NTNmMDBkOTVmNjhjM2MyMjE5Y2RkM2E2YjcgbGVnYWN5LXRydW5rCisxNjE4NyAyNjNiNDQ5Mjg0NGEyMDZhM2I5NTRiNzEzODU4OWU3M2M2MjJiYjg0IGxlZ2FjeS10cnVuaworMTYxODggNWViYWQ2ODliN2E3OTIyNGUwN2E0NzRjMDk2YTc2N2U3MzQ4YTM4NyBsZWdhY3ktdHJ1bmsKKzE2MTg5IDYxOGE3MjgwZjZiZTUwYjk3NjdmOTc2NzI5YzU3MWJjNDNmYjg0MWEgbGVnYWN5LXRydW5rCisxNjE5MCAwZDZhZjMwM2E4NmNiNGQzNjc3NmU5NGQ4OWFlOWQ3ZmQ3ODZlMjE2IGxlZ2FjeS10cnVuaworMTYxOTEgOGEzZDUwZWQwNmY3OTdjNzM3MDY0NDJjZDMwMTBlZWQ5ZWY1ZmQxYiBsZWdhY3ktdHJ1bmsKKzE2MTkyIDA4OGM1ZjNiNzA5NGM5NTkyNDk5ZGJhNTI4NDZmNWZjN2JhZGRmZDMgbGVnYWN5LXRydW5rCisxNjE5MyBjNzExMThiNzgwNTk0YmJiYTkxODA3MTZmNDBjZDU5YTc5MDkwY2RkIGxlZ2FjeS10cnVuaworMTYxOTQgZDE3NjY0YmQ5YjY1N2VjNTRiYmE2ZmM5YjJiYjJiODJkMDJhZjlkMyBsZWdhY3ktdHJ1bmsKKzE2MTk1IGZjNzhlNWE3ODEyYTUxMGE1OTU4OTY0YWUxNjBlNzM2N2QxYzIzMDggbGVnYWN5LXRydW5rCisxNjE5NiBjZGUyNzMxOGNmODdiNWJlODJjMTYyODE3MTIyZDBjZTViNjhkYWUxIGxlZ2FjeS10cnVuaworMTYxOTcgN2UzY2Q5NDgwZjY2MzhhYzE0NjRlMDczOWZmYzA3YjAxYzY1OTQ5YyBsZWdhY3ktdHJ1bmsKKzE2MTk4IGJjOWUyMmFkNWM0NjA4MTE4MmI5YjM2NzgyYTExY2VkNzc1OTAyMjUgbGVnYWN5LXRydW5rCisxNjE5OSA5ZmQzMzM2OTMzNTA4MWRiNzRiOGZlMjUyZmZlNjk2MDlkN2JhZThlIGxlZ2FjeS10cnVuaworMTYyMDAgZGRmMDc0ZWM2NTA2M2Y4ODFhM2QzMWVmMTI2OGQwODczN2Q0ZGVlOSBsZWdhY3ktdHJ1bmsKKzE2MjAxIDk2OGEwMDZlNTQ4MGMyNjhjYzA4NmNkMzc5NjYyN2QzOTY2ZTNmMWYgbGVnYWN5LXRydW5rCisxNjIwMiBmOGQwODRlM2Y4ZWNmMWY4M2VhNWIyMGJkZTIxMzMxYzEyNjQ5NzAyIGxlZ2FjeS10cnVuaworMTYyMDMgNWVkZWU2ODc4OTQzMjYyYjdkMDA2ZWNkMGM0ODM1Yjg1YmE5MTkyNyBsZWdhY3ktdHJ1bmsKKzE2MjA0IGVkNzIwNjdhYWMwMzI4ODQxMzM1NjBkY2IzNDIzMDA1ZjJiZGZjZDYgbGVnYWN5LXRydW5rCisxNjIwNSA3ZTU4YzA2MGQ1MzQyZDQ4MzIyMjY3ZjQ4ODU5MjRmOTk5MzMzMDY3IGxlZ2FjeS10cnVuaworMTYyMDYgNTcwOWRkYmE0MjNjYzhkYmZlZGMxNTU4YzhhNmZmOGFlYTk0ZDA2NyBsZWdhY3ktdHJ1bmsKKzE2MjA3IDA5MWNhNmI5MzQ4ZjUwZDUxOGYzZjY0NWY3MDA0ZGJhNmRiNDRkMWEgbGVnYWN5LXRydW5rCisxNjIwOCAyM2Y5Njg5YWNlNTA2Mzc3YmMyZThiNTJmMTdhNjhjNWUwZjE0YmE0IGxlZ2FjeS10cnVuaworMTYyMDkgYTg5ZjdmMjY4ZGU0NWYxMTQzYjRkOWI0MWY2MTQ3MTU5YzRkZGJmMyBsZWdhY3ktdHJ1bmsKKzE2MjEwIDNlMTBhYzdhNWJmMzZmZDNjNzY3MzczNjk3NTY0OGMxOTZkYjNhZjcgbGVnYWN5LXRydW5rCisxNjIxMSAwNDA5YTk4Y2Q1ODJlMzY3NWMzMDI1ZTg4OWQ3MmZkNDNlNWY3MWQ2IGxlZ2FjeS10cnVuaworMTYyMTIgNGFkMjY5Njg2NjJiZTA2MjY2MmI2YjJiN2YyZjJlYzIzZjk3MmE4ZSBsZWdhY3ktdHJ1bmsKKzE2MjEzIDgwOGI0NDZhZjk3Yzc2MzYxMWVhN2E4OWFiODZlYjMzYTkyYTlmM2IgbGVnYWN5LXRydW5rCisxNjIxNCBlZDRmN2EyMmU5MjhjYWEyMzNjZDkyMmY1NzJlZTYzMGVkODljZTVjIGxlZ2FjeS10cnVuaworMTYyMTUgZDYxOThlNzAzNjAyYmUzMDcwYjE2MDgyNzlmMGQ1MGQxMzViOWM4OSBsZWdhY3ktdHJ1bmsKKzE2MjE2IGZjYzc1YTM3NDhmNTQxOTY3MGY5ZDNkYTA4MjJjODQyNDk0MThlOTMgbGVnYWN5LXRydW5rCisxNjIxNyA0MzE1MzhmZmIzYWQzMjE0NjVhMTFkNDhhMjlmODk1MTcwN2I0MjVmIGxlZ2FjeS10cnVuaworMTYyMTggNjIxMTMxNWViNTkyY2VkMmRhMzc5ZmIxY2JjZDM5YWFlMmJkM2IxYSBsZWdhY3ktdHJ1bmsKKzE2MjE5IGVmMmViYjNiMGM2NDdmZmFjMWVjZmU5ZTgyMzUwNDdkZGQ4ZDc2OWUgbGVnYWN5LXRydW5rCisxNjIyMCA3OTA4ZWM4NTU2NjVkY2JkNGQyNmM0MjRmNmE2YmVhMmUzNTNmNGRhIGxlZ2FjeS10cnVuaworMTYyMjEgMGY5NWM5M2YyMDBiZGVlYjJmMDVhOTRmNDFhOTVkYTg3Njc2Y2VhYyBsZWdhY3ktdHJ1bmsKKzE2MjIyIGU2ZDE3ZjE1YWU2YWVmYWU5NWI5YTE0MTIyM2QwOWY5NTMxZDE2NzUgbGVnYWN5LXRydW5rCisxNjIyMyBmNmNkZWFjNDRhMTA1MjhkZTYyNDIwMzg1OGEwNmY5NGM2MTY3MWMxIGxlZ2FjeS10cnVuaworMTYyMjQgNGNmMGRlMjljMDhjNzFhYmVlOTViOTFlZjdlNmIzMGE0NzA3MDUzZSBsZWdhY3ktdHJ1bmsKKzE2MjI1IGI3MDY2YmI3OTU4MTBjYjE5NGZhMTA1MTAzZDgxYzdhZTk4ZDg4ZmUgbGVnYWN5LXRydW5rCisxNjIyNiBlYTgyMzVlZGZjOTYxNTgzNzJmYTk5YjhjODY0ODRiMTNhMTg1MzY2IGxlZ2FjeS10cnVuaworMTYyMjcgOGU5MmQ5NDFlMDdmNTA0NDljODdiZGJjNTcxMmE2ODY0OGZkY2JmMyBsZWdhY3ktdHJ1bmsKKzE2MjI4IGJmYWRkMzYzYTIwMGEzMWE2OGYxMjE4NThiYjkxNGVlN2ZhZGQ0M2QgbGVnYWN5LXRydW5rCisxNjIyOSA2NjkwMzc0YTFkYzFhNWEwZWFiODA0ZGU2OTA5NWYxOGE1MmUyOTBhIGxlZ2FjeS10cnVuaworMTYyMzAgYjkwN2ViZjNiMDUyYjkzMjE0NDY0ZDhjYmY1MmNjOTIyMjc3ZTg0OCBsZWdhY3ktdHJ1bmsKKzE2MjMxIGRkN2UxMzkxNTMyOGZjOWE1OTE3NGI4ODE5ZTNjMDg2MjIyNTcwMGYgbGVnYWN5LXRydW5rCisxNjIzMiA3NWIwZThjYjA3ODMxZDNkZmNmZGRjZDkyNzJjNGU3N2E0ODI2OWIyIGxlZ2FjeS10cnVuaworMTYyMzMgZGYxODlmOWNkMDEwZGVhMGVmY2Q4OTlmMjI0MDE5NDBhMDc5OTE2NyBsZWdhY3ktdHJ1bmsKKzE2MjM0IGRiZTgzZmQyMzM5M2EyMTA5OTlhYWI0NDIyZDAxYTk2N2ZiYTIzMmQgbGVnYWN5LXRydW5rCisxNjIzNSAzMWIxZjY5MWE3ZDkxODllN2I3NzllZWEyNjhhNTIyZWYxZmJhNzIxIGxlZ2FjeS10cnVuaworMTYyMzYgZTFiMDcwZDcxNjJjOGRlNzY2YWJiNDM4MmM2ZDJkZDczYmM3ZGYzOSBsZWdhY3ktdHJ1bmsKKzE2MjM3IDJmZjI3ODVlNTI5MTljMWNjNjFjNWNjMTBlOGEzZTVmNjBmNDc5YmQgbGVnYWN5LXRydW5rCisxNjIzOCA4ZjY2YzVmZmEyNmM4NjA1MjUzYzRkNDUxYzc5NGViNzUwYjQ0OWY3IGxlZ2FjeS10cnVuaworMTYyMzkgMTYyMmJiMjRkYTU1NjY0ZDM4ZDQ1ODIwZWJhYzAyYmI4OWJjNDM2NiBsZWdhY3ktdHJ1bmsKKzE2MjQwIDcwZDM1MWZjYjhkNTkwMGM4NmVhYmZiMjRjNzUyYzYwZmU3OTc5OGUgbGVnYWN5LXRydW5rCisxNjI0MSA5M2FlMzRhYTIwYWIzNjM1NjdiMWEyZTBjYjQzZDg4YzNlZWQwOTBjIGxlZ2FjeS10cnVuaworMTYyNDIgNjA4NGY4ZDNhODI1YzBhNzY0N2IyNDJmM2I4YWRkNWEzMDA3Zjk1NSBsZWdhY3ktdHJ1bmsKKzE2MjQzIDNhYmVjYjM0NzM3ZmNjODA2ZWRkMjJkY2M2YjkyOTRhZWY3ZDZiYTAgbGVnYWN5LXRydW5rCisxNjI0NCAwMDBhMWM3ZWIwOWZiY2ZhODhmYTQzZTZjMmVlMGU1OTM0ODY2MjdjIGxlZ2FjeS10cnVuaworMTYyNDUgODdmODM5Njg1MWIyYWE2NWYxNGE1M2NiOTU0NTRlMGYyZTgwOTJiNiBsZWdhY3ktdHJ1bmsKKzE2MjQ2IDY3ZmQxOWQ3NDUyODE4ZDY5NGFiNmI0Yjk2ODU5OTJkYmUwNjUyZDcgbGVnYWN5LXRydW5rCisxNjI0NyBlNGVjNzc4NzlkZGQwMmVkODhhMjY1NjVmNGExMzNmYWEyMjU3NDhlIGxlZ2FjeS10cnVuaworMTYyNDggMzJiNjg2ZGEzZTUxOTEzYTc0NzQyYWRiNzFiM2UyNGQxMDdiOGMxMSBsZWdhY3ktdHJ1bmsKKzE2MjQ5IDg0MjRlYzRjNGJiMjAzMGNlMzYxMjljODE2NWFhODFhNjIzMGMzMmMgbGVnYWN5LXRydW5rCisxNjI1MCBiMzEzMTFhNzhhNWRhNjUzMTcyOTUxYmYxMTQ4MWVlZGZkZTIzYjY2IGxlZ2FjeS10cnVuaworMTYyNTEgZjUwYmRjYjBkZDBlYWUwMWQ5MDA2ZTEyZmYyYmFiYjBmNDJiMzRlZiBsZWdhY3ktdHJ1bmsKKzE2MjUyIGNiNTM5ODI0NDQ4ZTg1ZTJiNTNjZjJiNWZhYzhkMjVmMjg5ZmNlYzMgbGVnYWN5LXRydW5rCisxNjI1MyA1ZGE4NDU2ZjJlNGQzNDQzN2JjMjlmMGI5ZjhhOWExMjRkOTc4NzlhIGxlZ2FjeS10cnVuaworMTYyNTQgNTA4N2QxZDQ1ZjFkYTY2Y2VlN2Y1MTUyMzk3NmFlNmNmMWNiYmY5OCBsZWdhY3ktdHJ1bmsKKzE2MjU1IDhiYWNmODYzMWExMWNlY2U1ODBkZTM2ZDMzN2Y3ZjBjOTcwOTRiMjkgbGVnYWN5LXRydW5rCisxNjI1NiA0YWExMmU1NWJmOTVkMWRmMjIzYjY0MGFhMTYwZjA4MjZhM2RhZjZmIGxlZ2FjeS10cnVuaworMTYyNTcgNDIzYTViOTUwY2M5ODNjYTI5NTQwOGIyNWI2NzU2NWU4MzA1OGY1MyBsZWdhY3ktdHJ1bmsKKzE2MjU4IDAzYmM1MWU0M2Y3YWY3NTViZWUwYTJkNzI5OWEyYzg4NmUwNzMyYTQgbGVnYWN5LXRydW5rCisxNjI1OSA5NTQ1NGI3M2VhOTFkM2Q2YmEyZGY3MzEzYzBlZTUwNjM3NDEyOWZjIGxlZ2FjeS10cnVuaworMTYyNjAgYzgzMDg1NGZhNTA3YWRkYTgzZDVmNjRiOWRhNzQxYzg4N2NmMzBiMyBsZWdhY3ktdHJ1bmsKKzE2MjYxIDA0Njc5OWEwODA1N2MyOWZiOWRmOGYwMmYwN2MyMThiNmQwNjc4NzcgbGVnYWN5LXRydW5rCisxNjI2MiBkOWNjNjIwZmYxODZlZjhhYWZiNjFhZTVlMzhjYjY1ZWVmOTVhOTEwIGxlZ2FjeS10cnVuaworMTYyNjMgY2EzMmZmN2EwNjdlNjk1YzFkM2IyMmY1OWE4YjJiMTcyZWNjYTNjYiBsZWdhY3ktdHJ1bmsKKzE2MjY0IDczNDhjY2VlZThmYWE5ZDRiODc1NWJiNGYyODY5MzlmNDYxYWQyNDEgbGVnYWN5LXRydW5rCisxNjI2NSA2NDg0MDk4ZjQwZmMzZDI0OGQ0ZDVkYjJhNTI1ZjBjNjc4YzI1NWQ4IGxlZ2FjeS10cnVuaworMTYyNjYgODI1NmQ2MTk4ZWMyZjdiODliMjQ3ZDkyZmMwMTUxYjI0YWMzZTA5ZCBsZWdhY3ktdHJ1bmsKKzE2MjY3IDBlZGViNGVmZTZkYmMzOWNlNzc5YjNlMzI3MTJhODYzY2MzOTdiNDEgbGVnYWN5LXRydW5rCisxNjI2OCA4NmIzNjdkMmU3YWZhYmNmMDdiYjBmYTBmMmJiYTgzODkyNjIyMjQ2IGxlZ2FjeS10cnVuaworMTYyNjkgYzA1ZWI5MDJlNTYwMGQ1ZTUwZDU1ZDBlNDZjODE4NmY1NzNiZDQ4MSBsZWdhY3ktdHJ1bmsKKzE2MjcwIDdiMGY0NDgzYzMzMTc2MDRkNDliMzdjZWIyYzlhNjAwZjdiODUyZjggbGVnYWN5LXRydW5rCisxNjI3MSBmYTc0MTk4OGRiMTc4NWQ4MzNhODZhZDc3MjAyODI5NmViMDgzYjM5IGxlZ2FjeS10cnVuaworMTYyNzIgZDAxODQ4NTI3MWZiNGUwMDJjNzIxOGVkMTkyOWI3ODhkZjg3NDY1YiBsZWdhY3ktdHJ1bmsKKzE2MjczIDE4Mzk1Y2E1YzMwZWZiYjdlMjFlMWI0NjUwODUwZDAzZjQ4OTdlYTcgbGVnYWN5LXRydW5rCisxNjI3NCA5YTQwZjE4ZjA1NjFmZmYyYzY0YjQ4Yjc5ZGEyZjkxYmI4ZGMwMDcyIGxlZ2FjeS10cnVuaworMTYyNzUgNjA1N2Y0NGIwYjdhYzVjYzQ3OTkxNDVlNjQ1MTY5ZTM5YTdmMjZlNiBsZWdhY3ktdHJ1bmsKKzE2Mjc2IDUzMDRiODhmZTNjY2YwNzllNTY0MzVmYjYxNTMyMTc4ODA3NDg3Y2UgbGVnYWN5LXRydW5rCisxNjI3NyBjZDdhYmI0ZmViMWJhNmYzZjVhM2FhYzNmZDc4ZmU2MThiMGMyYTRiIGxlZ2FjeS10cnVuaworMTYyNzggZTQ0Y2E2MWRiNzE1ODRmNTRiZDAzZDA0OWU0ZmY2MDJmYzU1NjliMiBsZWdhY3ktdHJ1bmsKKzE2Mjc5IDRmMTEwNDQxZGIzOTE4MmFhMzcxYjI5YjI0NWUxOTMzZThlNzE2MjQgbGVnYWN5LXRydW5rCisxNjI4MCA4NjcwNDQzMmQyODNhNWQ0YTdkYzUwOTYzZjI4ZTM3MzNmYjlmOTQzIGxlZ2FjeS10cnVuaworMTYyODEgMDcwZTQxZjI2OTdiNmNmOTc2ZTgxMGMwMzQ2YmNmY2IxNzA3OGM0MSBsZWdhY3ktdHJ1bmsKKzE2MjgyIDI3ZDg3ZTA3MmJmYjA1MmM5OTcyY2ZkNGFjM2U2OTgyOTE2OTNkZjAgbGVnYWN5LXRydW5rCisxNjI4MyA0ZGJjNzVjMTg5YmNlZDljZTA2MzVmZDhjYjY3ZDY2M2I4NDM1ZWEzIGxlZ2FjeS10cnVuaworMTYyODQgYWNjNDYzOGYzN2Q1N2E2MGUyNWFlODc3M2Y3Zjk3OGM3ZDU2NmU2YiBsZWdhY3ktdHJ1bmsKKzE2Mjg1IDAyNDc0ZGY1NDZmNjAwYTNkYWYyNzc1Y2YxNDgxZjI5YWMzMTNhYmMgbGVnYWN5LXRydW5rCisxNjI4NiAxNmU0OTA0NjJlNmJmMTk4ZDE1MTc4NjdmMGQwNDhkN2NlZTQwN2ZmIGxlZ2FjeS10cnVuaworMTYyODcgZjMzNmEyNjdhMmEyNTYyOTY0Y2I5N2E1YmY4ODY1MTkzYmE1OGViMCBsZWdhY3ktdHJ1bmsKKzE2Mjg4IDM2ODZkMTIzNjJiOGMwOTYwZmI5N2Q1NDRiZDQ1NDg1M2RlMzRmNmIgbGVnYWN5LXRydW5rCisxNjI4OSAwN2MzMTE4MmYyMzcxZDA0MTIzY2FkOTJjZjU1YzEyNTkwYjk3NmMwIGxlZ2FjeS10cnVuaworMTYyOTAgZTg0OGQ2ZWQzZWI5ZDAzYzYyNjIyZDFhZjQ5Mjk3ZTYxY2U3MTY5MCBsZWdhY3ktdHJ1bmsKKzE2MjkxIGJhYmFlOTEwYzJlMTNhMzYyMjlmOGY2OTc0YmZhMmMxMzZjNjIwOTMgbGVnYWN5LXRydW5rCisxNjI5MiBlZDU2NWIwZmU2NDg0MTc4YjFiM2E4NDc4NzE5ZTZhNTk4OWRjM2FjIGxlZ2FjeS10cnVuaworMTYyOTMgMzA0OTVkNzNiOTQzNjE1YTY0N2ZmMzVlMTFiZGM2MWEwZGFlNGNiMCBsZWdhY3ktdHJ1bmsKKzE2Mjk0IGIwNjM2YTUyN2E4Nzk5OWFkZjkzMTAyNTQwMWZhMjUxMGZiZTM2ZjcgbGVnYWN5LXRydW5rCisxNjI5NSAxZTdjMzJiZGRiOGY3MDA0MzRmYjUzZjk4NTZlNTBmMGMyNzIyM2MyIGxlZ2FjeS10cnVuaworMTYyOTYgNDdmZWM0OGNhNDk1OTQ2OWIxYzY4NjllMjQ5NWM1ZjA2MTRhMTU0YSBsZWdhY3ktdHJ1bmsKKzE2Mjk3IDhiMTM0NWZmOTgwMTNmOTJmOGVkODdjYzM0NTk5ZTVjNGVkNTIzOTggbGVnYWN5LXRydW5rCisxNjI5OCA5N2NkNDczNjM5MmMxNzc3OWIwYzk3MTZkODc3Mzg0YWJiOTcyN2UwIGxlZ2FjeS10cnVuaworMTYyOTkgYjlmOWRhMWEzZmM0NzNmNTEzMDU3OTI0NTFiY2FhZTM0NTE4NDFjNiBsZWdhY3ktdHJ1bmsKKzE2MzAwIDQyMjg3NzVkNDU1ZWQ1N2IxNGE5OWIyYWQ2OWU2MzA4MWQxMTJhYjYgbGVnYWN5LXRydW5rCisxNjMwMSBmZWFiNjc3MjY5ZTA4YzE1ZWMwZmFhOTVlZjY5MzdmYmIzNWRkODliIGxlZ2FjeS10cnVuaworMTYzMDIgMDYxNWRjZWYwMjRkZTA1ZDM2MTI3NzU0MGJkYWNlMWQ2ZmM3OWM2MCBsZWdhY3ktdHJ1bmsKKzE2MzAzIDlkYmVlNGI0YzAzZmRhYzhkM2IzZTYyYjZkNTNkZWMwZDY3MDI0MzUgbGVnYWN5LXRydW5rCisxNjMwNCBkZGQ2MTM4YzllNmZlNzYyZGJhMWU3MzFjYWY4MDcwYTMzM2YwYTVlIGxlZ2FjeS10cnVuaworMTYzMDUgN2FhNTFlYmY0ODNmOTkyZDNlNDkwMjZhOGJkNzQ5YTA2NGQzNzA0MSBsZWdhY3ktdHJ1bmsKKzE2MzA2IDNjZjRmNWFlZTAwZTJmYWMzZmQ0MDk0Y2JiNjBmYmZlNmJkN2U1YTMgbGVnYWN5LXRydW5rCisxNjMwNyAxZDY2MzA3OTIyMTI1OTExYTYzZWM1MGQyODkyMDI4YzUyYjliZGVjIGxlZ2FjeS10cnVuaworMTYzMDggMWY4MmE0YmZkMjk0NTU4ZTVhODE4Yjc4MTgxMDljZTVhNzQxMzJmYSBsZWdhY3ktdHJ1bmsKKzE2MzA5IGRiOTYzYTYxNWJjOTMxMmMxYzk2YzMxMzQxMzkyMDkyZTAyYWJmMjIgbGVnYWN5LXRydW5rCisxNjMxMCBkOGI4NzQ5ZGUwNGFiYTYxZDY5ODFmOGE5MDFjZTNmOTM5NWRiNDJkIGxlZ2FjeS10cnVuaworMTYzMTEgMzMzODg5MjdhYzJmYWE3OTAxZmE2NDVmZmRlMDViYTFmNGZkOWMxMCBsZWdhY3ktdHJ1bmsKKzE2MzEyIDk1YjlkZGIwMDM1MjNlMzY3ZWJiNjhlN2M3MjRiY2IyMjcxNGNmOTggbGVnYWN5LXRydW5rCisxNjMxMyAxNWIxOGUwY2MzZmQyNDgyOTAwODM4OWE2ZjM3YjM0YzI3YzU2OGM5IGxlZ2FjeS10cnVuaworMTYzMTQgZGQyYjUyMThlMDY5ZWEyOWU4OGJkMzBlMGM0ZmI5YzQyZDc0NzBhNyBsZWdhY3ktdHJ1bmsKKzE2MzE1IDYzMWI2YTAzYzE2MGViOWMzMmE2MDhlMDMxOTEwMjJhMzUxMmY5MzggbGVnYWN5LXRydW5rCisxNjMxNiA5MDZlZmMxZGEyNDdhMzYxNTcxZmYxYmRmY2NiODdlMjExNGJmMzllIGxlZ2FjeS10cnVuaworMTYzMTcgOWM3NGI4MjM5ZmY4MGY4NzJkNzk3NTdlMGQ3ZjUxZTZmYzQxOTYzNCBsZWdhY3ktdHJ1bmsKKzE2MzE4IDM3YjFhMzk2MDZjZThiZmI0YTdlODAzNmQ0M2UyM2JlYmM5MzRmZWEgbGVnYWN5LXRydW5rCisxNjMxOSBjMzk2YjYwMjYxN2RjNDYwYjc3OWQxODUwOWYyZTBhMzVjYjM2Yjc4IGxlZ2FjeS10cnVuaworMTYzMjAgNmE0NDM2ZDY5NThiMGM2NzQ5M2VjMzYyNzQ1MTVlYjg0OGJmYzUwYSBsZWdhY3ktdHJ1bmsKKzE2MzIxIGI3ODY1MzZmMjFhY2JmODM4MTAxOWRmNGVmMDcyZTRmZjIzMjYyMzEgbGVnYWN5LXRydW5rCisxNjMyMiA2OTg3ZTk0NTA2MTliN2NiZGU3ZmM3NGU3OWQ0MDA0OWE5NWVhOWIxIGxlZ2FjeS10cnVuaworMTYzMjMgZWE3MzI3MTliM2ZkMDdjMDE0MzEyY2QxM2NjNTYzOWJjYTE0YTI3MyBsZWdhY3ktdHJ1bmsKKzE2MzI0IDkxOWYzZDUxNzJhOTVlZjMzZGM1MTAyZjRlNGFmY2NmZTk4OGViZWYgbGVnYWN5LXRydW5rCisxNjMyNSBkMWY2YjY1NjEwM2IyYzIwMDhmYzI3MDgzZTQyYjE1ZmU1ZGRkMjA3IGxlZ2FjeS10cnVuaworMTYzMjYgNzk5MWFlYjM1OThmZWIyZWU3YjFjN2Q0ZjdlNGYxYzdmMGI1YjgzOCBsZWdhY3ktdHJ1bmsKKzE2MzI3IGU1NThlYjIyOGE0NjNmNTRkZDVjZWE5Y2RkZTlmZDBlMWM5ODMyY2QgbGVnYWN5LXRydW5rCisxNjMyOCA0N2E5NDcxOTU2YWY5YmZhYmQxNmVkMWNlZTg2OTYyYTFjODAxODBmIGxlZ2FjeS10cnVuaworMTYzMjkgY2ZiMmEwZDBhODY5NmYzNzc0MjM0MDg2NDEyZGI0MjNlY2JmYmEyZiBsZWdhY3ktdHJ1bmsKKzE2MzMwIGFjMmJiNzcwODMyMGRiZTQ3NTJhOTkwYzliZGEzMTlmYmJkOTcyYzMgbGVnYWN5LXRydW5rCisxNjMzMSA1ZDYxYjZmMmFlYTNjZGExYTczMTM4NDNhZWU0ZDA0YjQ1NDdiYmNjIGxlZ2FjeS10cnVuaworMTYzMzIgZWYzZWQ3NWYxOTVjNzgwYTc4OGM0YWU4MjI2ODBmNDczNGNiZDdlOCBsZWdhY3ktdHJ1bmsKKzE2MzMzIDNhOGM2NzAzMDlhMjFkYjRiMTc2NmM1ZGQ4ZGViNmYwOTk1YTQ3YzggbGVnYWN5LXRydW5rCisxNjMzNCBlNDE3ZDk1MjhmZDYxMTU0NGMxZmUxMzQ3YzI2OWE0Zjg5ZTU5MjBiIGxlZ2FjeS10cnVuaworMTYzMzUgMDFiMjMwNzJjYzc2OTY3NjIyMTI1ZjRiMjgyZjBjZjBjNWE2YTFjOSBsZWdhY3ktdHJ1bmsKKzE2MzM2IGNiNzZkN2RhNjcwMjc5ZTBlNjg5Zjg1NGM4NDhjNDUxZTJmNDU4ZTAgbGVnYWN5LXRydW5rCisxNjMzNyA3YzExOWYwNTAyOTBlM2EyZDlmY2UxMzA4NzRjZDk0MmIxZjcxNzY2IGxlZ2FjeS10cnVuaworMTYzMzggNjFlNGMyOWQ1M2Q4ZDI3N2JjOGMyNDllZmExYjczYWFkMTBkNjNiMSBsZWdhY3ktdHJ1bmsKKzE2MzM5IDJlNDViN2MyM2RjNjg2NWY4MThhZmM0MWM2NDY0NjgyOWRiOWM3YzAgbGVnYWN5LXRydW5rCisxNjM0MCBhMDMyMTAxZWQ5MjY0NGMyZTYyYTM2YTVlMDEzOGEwNDUxM2FiODk4IGxlZ2FjeS10cnVuaworMTYzNDEgZmZkNWU4YjY3Yzg0MzMyYjI4ZmQ0NmViYTVhOTVkMzY2NzA1NGM5ZiBsZWdhY3ktdHJ1bmsKKzE2MzQyIGI0YjZmMzk2MmJkMTIzOThiYTAzODZkNWExY2E3MDZlNjJmZTBiZDAgbGVnYWN5LXRydW5rCisxNjM0MyBlODcxYmQwNWM2YTc0NGQyNWJjZWI4ODRkMmE0NGNhMTY5OTM2NWUzIGxlZ2FjeS10cnVuaworMTYzNDQgMDg0YTc1ODA1MWUwZTFjNmUyYjZkZTA2YzYzNWM5MTAyNWVmZmZmZCBsZWdhY3ktdHJ1bmsKKzE2MzQ1IGFkMWM4MjcxYjZmODI4ODYwZTU2NmYxMzExZDFlYTE4YmIyOGIwYWQgbGVnYWN5LXRydW5rCisxNjM0NiAyOTc3ZmJhZTRjYTUxYjRhMDQ0MDhlMGUzMDAyNzg4Y2M2ZTRlZjQ5IGxlZ2FjeS10cnVuaworMTYzNDcgODlmOTA1ODcwYzBhOTBkZTdiYWM2Nzc3OTc4ZGNjOWFlYjljYmViMCBsZWdhY3ktdHJ1bmsKKzE2MzQ4IDE0Y2ViMTU5ZTQ0OTlhMzc2NmUwYTMwZjIwOGY1YmNjNzNjZDM1YzkgbGVnYWN5LXRydW5rCisxNjM0OSA3YzEyN2E3OWEzNjllNTc0ZTdjOGJhNDdkMWQwYzNmMWEyYmEyMjFlIGxlZ2FjeS10cnVuaworMTYzNTAgNGZhZjhjMjJkYTYwYmUyYTJkNzgxZTNiMWJkZDk2MzlmNjFkMTU2NyBsZWdhY3ktdHJ1bmsKKzE2MzUxIDUwMjUxMTVkMjNjZjJiMWYwZDMxYTg5ZjlkZDQ5ZmI3YTJjODlmZDYgbGVnYWN5LXRydW5rCisxNjM1MiBjNTAzZDhlNDc0YjM3MGMyYTNjOTAxZDA0NmQxYzI5N2UwNDNiNTgzIGxlZ2FjeS10cnVuaworMTYzNTMgMjA3N2JmMTQxYjM3N2E0NDI2ODRkZDQwODVjOTZiMmYyMzYxNjBmOSBsZWdhY3ktdHJ1bmsKKzE2MzU0IDljYTUwZTI0MzNlYjQxZWYyNDk2YzM0MzQ5MmJjZjExMThmM2M0NWUgbGVnYWN5LXRydW5rCisxNjM1NSBkZjY0Y2MwZTg0ZTJhOTJhNzRlOTZlNDA0MTg5M2IzYjM4Mjk2NWYzIGxlZ2FjeS10cnVuaworMTYzNTYgNTk0OWI0NzU4N2Q5NTU1YmE0NmRhMjVhNjFmNmNkMmE5NDIxODljNiBsZWdhY3ktdHJ1bmsKKzE2MzU3IGExM2NlYTQzMGMxMzYwZTRlOGMyZTEzYzhkMjMzOWEzZWQ5MzZlOGEgbGVnYWN5LXRydW5rCisxNjM1OCA5MzBmNGJiYmQ5M2FhNmQxNTU5M2Y1YWY5NzY4ZTMyYzEzZTlmZTVhIGxlZ2FjeS10cnVuaworMTYzNTkgMjU4NDY4YTIwZDc0NTc2ZTVkZDdiMzFkNjAyODg4YTc1OWRlMDhiYSBsZWdhY3ktdHJ1bmsKKzE2MzYwIDA3ZDc0MDNjZWIwZjI1YWNjM2M2NGJlM2Y4YTMwMDRlMDI5NDA5YTcgbGVnYWN5LXRydW5rCisxNjM2MSAzMjYwMjIwYWFlZTQzZDJjNTdmNjg2NzRmYWY1MGI0NDA0MTFjZTM0IGxlZ2FjeS10cnVuaworMTYzNjIgMzlmNTRiOWE3ZjljYjY5NjIyNDMwZTNkOTc5NjNiYzZhODk5NzU0NSBsZWdhY3ktdHJ1bmsKKzE2MzYzIGVmOGIyMGI5ZjZmNTM3MTgyNzYyYzBjYzRjNjUwOGM5NWM4OTg5YmYgbGVnYWN5LXRydW5rCisxNjM2NCBkN2FlYzE3Y2QwYjUwNDZiNTk0ODBkNmQ1OWE2OWUwYzczZTNlZmIxIGxlZ2FjeS10cnVuaworMTYzNjUgNDJiNjcyYTA5YzRhMTAzZTU1OWZkNjEwMzNiMDJmOGI2OGI4NGFlNyBsZWdhY3ktdHJ1bmsKKzE2MzY2IDQ4M2U3NWVmYzExMTIxODBkZmE0ZjBjZDQzMDBmMjU3ZGY1YjgxMmYgbGVnYWN5LXRydW5rCisxNjM2NyBkYzE3ZWYxYTc2MTM4MGNiZWVlMmFmYTQyMGYxN2YyODJhNDQ4MTBjIGxlZ2FjeS10cnVuaworMTYzNjggYzlhNGExMzE2MTcwODA5MGIwNzNmODQ3OTZmYjM4YjFjMzRiMDc4YSBsZWdhY3ktdHJ1bmsKKzE2MzY5IDU1ODNjZmE2ZDJiMGYzY2RiMTQzYjQ5YWQwNDg3YTRjMzI4MGU3NTcgbGVnYWN5LXRydW5rCisxNjM3MCBhOTAxYzJjMDE2NmJhYTZhMTk1Mjg5YmVjMzM1ZTMwYzM5MWNiYzRhIGxlZ2FjeS10cnVuaworMTYzNzEgMjk1OTg3ZjNmYmQyMjAxMjc0MTk5YTRlZGVkYzE4OGVhZDI3MTQ4ZiBsZWdhY3ktdHJ1bmsKKzE2MzcyIDJlY2E0MDUxZjA1Y2I1Zjk0MTVhZjlkNmIyOTJjMmE0MDBkMDFjMTYgbGVnYWN5LXRydW5rCisxNjM3MyA4OGI0ZjNiNTA4ZGFhNTk4OWI1YzI2OTQzZWE5ZGFhODQ3NTQxNmFkIGxlZ2FjeS10cnVuaworMTYzNzQgZjM0MDFlZDEzMmExNGNmZjRhNjI4M2VmMzcwYmNjZWFmZTE1MzA4OSBsZWdhY3ktdHJ1bmsKKzE2Mzc1IDI2MDc1YzAzZjAyMjc5NTk1YjAyYjI3NTVmNzgyMzk4OTI2NDBmN2QgbGVnYWN5LXRydW5rCisxNjM3NiBlNzhlZGMzY2ZhZTZlYWU3MzIzNmQ4NzA4NTZkNTE2MWMyNWZkZTI1IGxlZ2FjeS10cnVuaworMTYzNzcgODdhNDE2ZDlkOWI2Zjc0MDE1NGU2ZTNhMGUzODViZGQ5YzM1ODVhYSBsZWdhY3ktdHJ1bmsKKzE2Mzc4IGY3ZDllNjE4NWY2MjIyYzFlYjJkNzRmYjRlNmIzYTY5ZGM4NjhmYzIgbGVnYWN5LXRydW5rCisxNjM3OSBmYTg5NDk2NTg0YzYyN2IzZmRlYzIzMmQzMmRlZTY1YTM1MzAyN2ZmIGxlZ2FjeS10cnVuaworMTYzODAgMDg2OTQ3Y2QyMDJjYzEzNTZlYTE4M2Q3MDhkMzhkMTRiYmE5YWZkMCBsZWdhY3ktdHJ1bmsKKzE2MzgxIGI3NDU0OGE5MGE2M2MwMzY5ZWRkMjQ3OTI5Y2Y3NWE1MjJmNGFmMmMgbGVnYWN5LXRydW5rCisxNjM4MiA1YjcyN2FiMzcwOTJkNTcyYWE3ODk0ZjYzOWNjZTEwMGM2ODk4ZjExIGxlZ2FjeS10cnVuaworMTYzODQgZjExYzQ3Mjc2NGFkMzcxNzE3Y2ExOWUzMTY4MjE0ZTkwZWFlZDA3NSBsZWdhY3ktdHJ1bmsKKzE2Mzg1IDM3OTE5NjdjYjMyZWY4NmZjNDkxNDUxNzAwMjBhODc2YTMzZGQzM2IgbGVnYWN5LXRydW5rCisxNjM4NiAxNjdkZTQ5NTM4MTJmYWNhYTZhZDFiZjIwMzAyNDJiZWFlZDA2YTkzIGxlZ2FjeS10cnVuaworMTYzODcgODNhNTk1ZTY5MWU0MjYyYjdjMjQyYjYwY2I4NWFkZWZkYTMwN2U1YyBsZWdhY3ktdHJ1bmsKKzE2Mzg4IGZkZmQxMDQ5ZjM2ZTk0M2U3ZDU5NDY4ZWQ4YTRlOTRkMzVmNDllNDkgbGVnYWN5LXRydW5rCisxNjM4OSBmNGRhNDM1NWFjZGU2MmZlNjJjYTY2ZGIzMGM4YTdmN2QyZWFkN2NiIGxlZ2FjeS10cnVuaworMTYzOTAgZjQwODRmNDQzZjMxOWRhNTk5NGE1NzIyNzBiNjFlNzVjMTI2NGI0NCBsZWdhY3ktdHJ1bmsKKzE2MzkxIGQ2ZDIzZDVlMjk2ZDQyZjRhY2FiZjUxMGQ3NzMyNjY2ZmRhYjVkNmEgbGVnYWN5LXRydW5rCisxNjM5MiBhMWFkNzkxZTE4MjE4MmVlNmM3MTQxNDhlODgxZGE5ODQyZjY0NjAzIGxlZ2FjeS10cnVuaworMTYzOTMgNzNjNjYxYmUxZWEzZGU2M2Y3Mzg2ZGY3OTM4OTgxNmYyM2FjYjkyZCBsZWdhY3ktdHJ1bmsKKzE2Mzk0IGZmODJmZDQyMmYxYzFhMzI4ZDJlM2FiMTY0YTkxODEzZTlmNWJiNTAgbGVnYWN5LXRydW5rCisxNjM5NSAwODU5NjA3Y2EzZTUzYmFhZjM1MWNkOGViYWRmM2I1NThhMDllNTNhIGxlZ2FjeS10cnVuaworMTYzOTYgZTE0NjliN2EyZTY4ZGIyOTI2ZTIwOTBiNzQxMmI1OWUyY2VhYWFhZiBsZWdhY3ktdHJ1bmsKKzE2Mzk3IDZmMGQ5NmU2YjVhNTEzY2I3YjE0MDdmM2M2MTJjMzRmYWY3NDRkNjUgbGVnYWN5LXRydW5rCisxNjM5OCBkZmI3ZWNmZmZlM2Q1YjFjNjZiNjRiN2YxMmE5NTc2Mjc0YWQyODQ3IGxlZ2FjeS10cnVuaworMTYzOTkgYjUxMjBmNThjNWRhNTgzMTBmOGRmN2MxY2U2ZmQ2MDVhNGNiMThjMiBsZWdhY3ktdHJ1bmsKKzE2NDAwIGQ5MDFjNDNlN2Q1OGNlOTlmN2FmODQ5MGMyYjM0YzgzZmZkYWUzN2MgbGVnYWN5LXRydW5rCisxNjQwMSA1ODM5OGMwZjk0OGJjODk2NzYzNzg5MDliZGExNDQ5YTQxYzU4ODQ2IGxlZ2FjeS10cnVuaworMTY0MDIgZTJlMjVlZWU2YTRiMTQ3YjhjZDMzMzc5MjdjZTMxODExZDZlNzkyYyBsZWdhY3ktdHJ1bmsKKzE2NDAzIDM3MThlNTM5OGZhZDM0Yjc2ODJhOTE2MmNhN2RmYzQ4MGY4NWI2OWYgbGVnYWN5LXRydW5rCisxNjQwNCAzOGVhMjc0NTVjYmIzY2I4ODc0YTg5ODYyNzYyNTBhN2ZiZWM0NzY1IGxlZ2FjeS10cnVuaworMTY0MDUgZGFjYzlmMTY3ZTk1OWZmNzBiNmJmZmY2ZGFkODIyODJhNDBmZWQzNCBsZWdhY3ktdHJ1bmsKKzE2NDA2IDE1MjhiYzNhYzczZDUwMzE5NDhjNmU0M2NjODg4ZDBlN2I3NDIzZjUgbGVnYWN5LXRydW5rCisxNjQwNyAyZDVhYTIxMmEzMjJiMmY5OTU4MzM3MjMwNmU0M2FlNDZmZWMxNTg4IGxlZ2FjeS10cnVuaworMTY0MDggMGMwOGRmYTYzNGMzNGU0N2JjMzM2YzU1ODVjZmFhY2NiM2QyMWYwZSBsZWdhY3ktdHJ1bmsKKzE2NDA5IDUyNTk1YjcwYTU2ODQ4OGZhMzU2OTViYTkxYjA1OTlkMjU4NDNkMDUgbGVnYWN5LXRydW5rCisxNjQxMCBiMmZiZDlmY2UwNWU1ZTUwMDViZTIzZDkzZDRkYjMwZTdiMmYxZjYzIGxlZ2FjeS10cnVuaworMTY0MTEgOGVlNGEyMDlhOWVmNWJhYmQxYmYxMDgwNDA4YzZkZTNmYmU4ZTNhMCBsZWdhY3ktdHJ1bmsKKzE2NDEyIGY4MDU3MWJiMjkxM2U3ODc3OWE0NDE5MzFlMzZjOTdiZjdkZjY0NzMgbGVnYWN5LXRydW5rCisxNjQxMyAzZDZkMjE4YjY3M2QwY2YxNDU1YTMwODJhOWMxMGExZTQ0ZGRmOGFjIGxlZ2FjeS10cnVuaworMTY0MTQgOGEwNjM0MjNlMGI3ZGY5OTc0ODhmMzFlNmJiNmVhYzU3Yzk3MjEyNSBsZWdhY3ktdHJ1bmsKKzE2NDE1IDExN2QyMDk2OGExMDQyZDAwNTE4ODQ1Mzc3YWMxMjVhOWZjMTkyZjEgbGVnYWN5LXRydW5rCisxNjQxNiBhNzRhYTQ5YjBjMzdmYWQ5ZWU2Y2FhMGZkYTJiOWIyMTZkNzNiYTVkIGxlZ2FjeS10cnVuaworMTY0MTcgMGJiNDliM2RiZGYwYWNhZGJlMzZkMGUwMGEwNmIwZmU2ZTgzYWQ2MiBsZWdhY3ktdHJ1bmsKKzE2NDE4IDEyNjUyZGE2ZDYzMmJhMDhkMjc1MGZkZTE4YzdhYzc2ODI0Mjk4MWYgbGVnYWN5LXRydW5rCisxNjQxOSA5OWRkMWM5MzMxNjE2YmRiODk3N2NmMTQyNDlkOTI1MGU0NTg4Zjc5IGxlZ2FjeS10cnVuaworMTY0MjAgNmE1MzE0YTZjMmMyOTllMzNjNzNjNzk0YWYzMWRhM2EzYTEwMmU4ZiBsZWdhY3ktdHJ1bmsKKzE2NDIxIGY3OTQzNGVlNDFmYTg2MDE5MjE2MjQwYmEzMmJlNjYwYmNmYzU0MTkgbGVnYWN5LXRydW5rCisxNjQyMiBlNzgxNTNlMTc5ZmJjY2FhNTEyOTdhMDkxMTVmM2Y3YTVhYWU2M2M5IGxlZ2FjeS10cnVuaworMTY0MjMgYTFjZTA3MjE4NzgxMzRiMzZkNTBkYjExZmQ4MmYwN2Q4NDNkZmVmYyBsZWdhY3ktdHJ1bmsKKzE2NDI0IGVmMjVmMzJjNDUyMzkzZjBkNGQxMDFjMzI3MzQ3YTE0M2UwMTdlZDMgbGVnYWN5LXRydW5rCisxNjQyNSBhMzg1NmFiNmIyMDZkN2QyY2Y2YmE2NzZiMGI1MTk5N2NlYWYzZjZiIGxlZ2FjeS10cnVuaworMTY0MjYgMjlkYTM1NTQzODMzMjE2MDM2ZDk0MTUyNzVjYzNlY2M2MGNkYjdjMyBsZWdhY3ktdHJ1bmsKKzE2NDI3IGVlMTA4MzRkNjdhMzZjNGY3YjI2MzA4M2Q3YmE3M2Y2YTJiNDc0MTUgbGVnYWN5LXRydW5rCisxNjQyOCBlYWZiNzk5NjNlYTY0ZWU5MTUwNGRkYjRlMjg4MWUyYzdkOTVjMDQzIGxlZ2FjeS10cnVuaworMTY0MjkgMzZkZTdiNmFiN2ViOTk0MTcwMTMzYzFjYzM5ZDhlMDdiMDZhZGNhOCBsZWdhY3ktdHJ1bmsKKzE2NDMwIGE2YzdiZmRkNjc3NzQ2NGFiZTk0NzlkMjgyYjU1OTlhZjk5OTk5Y2QgbGVnYWN5LXRydW5rCisxNjQzMSBkN2Q4MWVhOWM4MmRlMDE3NzE5YzUzY2ZjODE3NDEzZWZiOWZmNjE2IGxlZ2FjeS10cnVuaworMTY0MzIgZTk0YzA1MzUxZDQzNzRiZWE1ZDlhMGJiNGI2MTdlNTJiYWFkNTZhNyBsZWdhY3ktdHJ1bmsKKzE2NDMzIDQzODgyNDk1MDZkMTkwYTc2YTRkYmJiYzcwMjk0ZWY2YmEwNjU2ZDUgbGVnYWN5LXRydW5rCisxNjQzNCAyNjY4NWJkMmMwOWU2MWJmMzg5NjU1ZjgzZWYxNGY0MmI1NjA1NWQzIGxlZ2FjeS10cnVuaworMTY0MzUgYmZjNWIyYThjMTFmNWU2MjY2ODJiOThkMzc2ZmEyZWY2OTcwYTM5ZCBsZWdhY3ktdHJ1bmsKKzE2NDM2IGNjMGMwZGM5ZmVmMGRjNDQxYjg1NjNhOWI0NGM4ZDA0MGMyZTAzYjkgbGVnYWN5LXRydW5rCisxNjQzNyBjOTBkOTRkMjg3ZDc5Yjc0NWU0YjVhMGJkNTUxNWNlZGE3MzE3NGU2IGxlZ2FjeS10cnVuaworMTY0MzggYjE5NTlmMDA2NTY2NTkxYjNiZTE0MDFiOWNkMGYxNjQ1MWViYzYwMCBsZWdhY3ktdHJ1bmsKKzE2NDM5IDU0MjNiMTMyYmM5N2FmNGQyNDA3NmNlZjE2ZjI3M2I2NGZhZjA0ZDMgbGVnYWN5LXRydW5rCisxNjQ0MCBlZGIxYThlNmI4NTk1OTYwYmJkZDc4YmJjNjBhZTFmN2RlNzViZDkyIGxlZ2FjeS10cnVuaworMTY0NDEgMzE3N2UyODI5MTY3Nzk3ZWEwODE2Y2Y3MDcyZTQwM2NmOGMyN2FlOCBsZWdhY3ktdHJ1bmsKKzE2NDQyIDYxZjY1ZGUxOWUxZTY4ZWFhYzk3NWUzYmM1NTI0NzExMmJmYjA0MmIgbGVnYWN5LXRydW5rCisxNjQ0MyA5ZjYxODllODkyMTIxNTk0NjlhNjE1ZWE3MjQxMDU5ZGRhODJmMmEyIGxlZ2FjeS10cnVuaworMTY0NDQgYjBlODM5NjJmNGRhNzA4ZGI3OGVmMTcwYjQ0MzEyM2JhYjNiMmQwZiBsZWdhY3ktdHJ1bmsKKzE2NDQ1IDdkZTE4ZjA0Zjg1YTc3YTFkNTVhYjYxOTFiZmUzYmM1OTVkYTc1NWEgbGVnYWN5LXRydW5rCisxNjQ0NiA4Y2IyNGUwYmVmOWJlNTljM2RmNTA4ZmQ2MTgzYjVjZjM4NGQ5OWJhIGxlZ2FjeS10cnVuaworMTY0NDcgZWMxOWEwYThjZDY4NzdiMTlkNDI1ZTQ4YzdhYWYwODVjN2I0N2I4ZiBsZWdhY3ktdHJ1bmsKKzE2NDQ4IDEyOWM5Nzc1Y2MxOTMyMGNlNTg4ZTA0Y2E4N2EzNDc3MGVhZWQ1OTggbGVnYWN5LXRydW5rCisxNjQ0OSA5YTU4NTVlYTNlNTZhZTU0Mzk0MDU3M2Y1N2JmMzlkZWY0OTA1M2MxIGxlZ2FjeS10cnVuaworMTY0NTAgNjM4MzJlZGU1NzdmYzU5ZjliNDhhZWM5OWViNGY0ZWQ1YTBmNjMzZiBsZWdhY3ktdHJ1bmsKKzE2NDUxIDk1ODk0YzMxMDhkMTk4NWY2MDQ4NWUzNDViMTAzNjgxZjgxMWExMzYgbGVnYWN5LXRydW5rCisxNjQ1MiA5ZGI4NmIyNzI3OGZjOTIzNjVhOGU0Njk4Zjc2MzY2ZmEyN2VhYTk1IGxlZ2FjeS10cnVuaworMTY0NTMgYzA5YzAxNzE0NzRmMGY0OWMxZGFiYzA4NGRhZDg0Mzk5NmI5OTBkNSBsZWdhY3ktdHJ1bmsKKzE2NDU0IDBmMWM2MDUzZThkMDkyMjM3MjhjYTc4YWRjZTA2ODc2ZTMzYzdhYmUgbGVnYWN5LXRydW5rCisxNjQ1NSA3OTNiYmFkNmQwOWNmMDgzOGM1ODBiYzYxZTA0OTI0ODFiMmY0NzM2IGxlZ2FjeS10cnVuaworMTY0NTYgMjVmYzY4MDc3YjY2NTQzNDAyZTcyYWY4OWEyYmRjMGFiZTM0ZjA2YiBsZWdhY3ktdHJ1bmsKKzE2NDU3IGI1NGYxMWFkYTkxZWEwMTM4ODVhMzE0OGFkNWJkMDYwYmNiZTZlYmEgbGVnYWN5LXRydW5rCisxNjQ1OCBhMjhlZDhjNWU2MmUwMjZjYTI4MzVjYTg0YjdlNWYzNzEwZWNkMWQyIGxlZ2FjeS10cnVuaworMTY0NTkgYmIzNjRkNmY5ZjY5MjU2MDQxNjBiZTM2YzQyZTI3ODUwNzQwMmNlOCBsZWdhY3ktdHJ1bmsKKzE2NDYwIDVlMmU5MWZmYWRjZDhlNDg1ZWZhNDEzZjJjOGFmYTRlY2RlMzliNDMgbGVnYWN5LXRydW5rCisxNjQ2MSBjYjI5ZDRhMmMxN2IwYjNmZWZiNGM2N2MzOTNlZTA3MjlmYzg1NWI2IGxlZ2FjeS10cnVuaworMTY0NjIgMDI2ZTEyYWM5ZjcxYjQzOWVjYzcwNmZlZjQ2ZDNhM2YzMDE1Y2FkOCBsZWdhY3ktdHJ1bmsKKzE2NDYzIGQ2ZGRlZDNjODUwNzc4ZWMxOWJlM2NlODc4NzY0OTNjMTM1MmU4N2EgbGVnYWN5LXRydW5rCisxNjQ2NCBjNjgwMDNlZmI3OTZhM2ExZDA4ZDBjYjFiZGQ3N2Q5MmJhNjJlYjU3IGxlZ2FjeS10cnVuaworMTY0NjUgZjg0MGJmNmEzMzUxZTYzOGNhNDMxNDA1YTY2MDExYTcyMzkzZGY0NiBsZWdhY3ktdHJ1bmsKKzE2NDY2IDk3OTcwMTY5OGNkMjk3MTE1ZmRjMzNhOGFiNWMwYTZmZTA2MmE2OWMgbGVnYWN5LXRydW5rCisxNjQ2NyBjOWZkNTJkN2NhMGFlN2M5NDNjOTlmOTRmOWViYjE4NGVjYjk3MDQzIGxlZ2FjeS10cnVuaworMTY0NjggNDYxZjliNmVlNTU1NzViYTU2MWFjYTUxNzk1NjU4YWY0M2UxMGI3ZiBsZWdhY3ktdHJ1bmsKKzE2NDY5IDJlNjAzYmQwYzFhOTNkN2M0NzEyOTI0YWY2MTY1MzIzYjdiODE2ODMgbGVnYWN5LXRydW5rCisxNjQ3MCBkZDlmZmEwYTZiMTEwN2UwNzc2MTEyZWI2YWE5YmM3YmNjYjc2M2Y0IGxlZ2FjeS10cnVuaworMTY0NzEgZmU4OWVhMWM5MTA4OThiYTNkYmExOTk3NGQ1OTNmYzAwZmZhZDM0OSBsZWdhY3ktdHJ1bmsKKzE2NDcyIDRlMmFhZjFlNzIyYTc4NzI1MTcyNzA2MDhjZjFlMjg2MjgzZjczMzcgbGVnYWN5LXRydW5rCisxNjQ3MyA2OTdjODhjYzQ3MTRkZmIwMmQ2M2VhMjJmZDExYzhlMDM1MTNlNjQ4IGxlZ2FjeS10cnVuaworMTY0NzQgNDg4ODZmYTgyYWQ1MGU4NmFhNWY4NWVjZTVmODJkYTk1NWZkNzZmMCBsZWdhY3ktdHJ1bmsKKzE2NDc1IDAwMDMwZWI4ODEzMWY4NDBmM2IyYmVlOTJkMDM3ZWM0YzkzNjFhNDEgbGVnYWN5LXRydW5rCisxNjQ3NiBjODdhMzdhM2QyZTY1Yjc2MTRkNzFjZGQzYTM1ZGJkMTkyNzUyYWNhIGxlZ2FjeS10cnVuaworMTY0NzcgYzlkMDM5MTk2ZGI2MTA4YjIyZWFlM2JhNmEwOWE1YzVhNzZhNzM5ZSBsZWdhY3ktdHJ1bmsKKzE2NDc4IDA2ZDQyMjU5MTlkNGQyNjM3MjY3OWNlMzA3MTBjNmE3ZTllNmY5ZDEgbGVnYWN5LXRydW5rCisxNjQ3OSA2NTc4ZmFmNDhjZDFkNDljZDk4OTcwNDVlODk4ZjhjZWU1NjNmYjZlIGxlZ2FjeS10cnVuaworMTY0ODAgNWMzZWU3NmQyNDJlM2U4ZjFlZDY2ZGExOWFhM2JkNzY3OWMzZGUxOCBsZWdhY3ktdHJ1bmsKKzE2NDgxIDE3MjkzZjEyZTg4NDBlYjJlN2Y4NDAxMDhlNTBjYWE5MzQ3MjMxNDIgbGVnYWN5LXRydW5rCisxNjQ4MiA3NjdiMmY3YmU0MGU2M2RmZTU0OGUwZDJiZmY3ODUwYmRkZjI1MTJiIGxlZ2FjeS10cnVuaworMTY0ODMgZDNmNjk0MDIzNjQyNWJjZjg4YTAyMjVkMjM0MTkwNTQ5N2M5OTNlZiBsZWdhY3ktdHJ1bmsKKzE2NDg0IDA1ZDU5ZjQ0NzZhZDUwZjZhOTQ5NjRkMmE2YmJlMDc5ZjEzM2RjYjIgbGVnYWN5LXRydW5rCisxNjQ4NSBiM2U4ZDJlM2RjNzNiMDRiMGVkMTNkZWMyNGYyZWU2ZWMyNjU2MjM5IGxlZ2FjeS10cnVuaworMTY0ODYgYjdjOTNjNjc3ZTU2NTg5ZTY2MDM3Y2VhMWE3NDdkOTJmMDNlODMxNSBsZWdhY3ktdHJ1bmsKKzE2NDg3IDU3ZDAyZjYzNGEwMmI3Nzg5MGM2MDkyZGJmZDE3YmZlMDJhZWEzNzkgbGVnYWN5LXRydW5rCisxNjQ4OCA0NDlkZDNhMDBiZDcyOTI5ODk2ZWIxMDczNGNkZjg5Y2M2NDczZWU2IGxlZ2FjeS10cnVuaworMTY0ODkgZWNiOGFhY2ZmMmUzYWU4NmZmNTM3Y2UwYjBkYjkyYjUzNDZjMTlmZCBsZWdhY3ktdHJ1bmsKKzE2NDkwIDA1MTc3Y2Q0NDFhMThlNzg2NzhlZDk3YTZmNDJiZDJiZDNmMTBhZTMgbGVnYWN5LXRydW5rCisxNjQ5MSBiNzY5ZTJkZDZhNTFiZmZkNjYwN2UwZjU3NzlmM2RhMDI1MmQwZGEwIGxlZ2FjeS10cnVuaworMTY0OTIgNTQ4NjFiZjY3NDhkYTYzZjc4NGY2ZGU4MjhhYzg0Yjc4MGNjMTFmYyBsZWdhY3ktdHJ1bmsKKzE2NDkzIDY4OWYxOTAwNDA2MzU0MzZiOTAxNzJmY2RjYjcxZTUzNTY0Zjg5NTAgbGVnYWN5LXRydW5rCisxNjQ5NCA4ZDk5NmY5YzU5MDNiZjBjZDZlN2I2OGJlNjZlYzM5ZmRjN2YxZTBlIGxlZ2FjeS10cnVuaworMTY0OTUgOWNlM2UwNWI3ZmRiMjc0YTZhNzU1OTk1MWUxODUzMjFkMDdlODY5NSBsZWdhY3ktdHJ1bmsKKzE2NDk2IGJhMzZhOWMzZjQ3NzE0MjAzNDYyZDJjMmRkYTgzODk4ZDUwNzFhYzAgbGVnYWN5LXRydW5rCisxNjQ5NyAzYjY5YTlkMDQ0ZjFjNDMxZjc4MzIyMTIyM2ZlZDIxMzU4YTZjYmRjIGxlZ2FjeS10cnVuaworMTY0OTggYTk0OWE3MmFmOTY5Y2IyZmY5NDAyYTFmODQ5NWU0ZmQwYTU3ZGYyYSBsZWdhY3ktdHJ1bmsKKzE2NDk5IDMyY2UyNTRmM2JlYTZmOTBiYTQ2NmMxMjk1YjY4MTE3YjI4MDI2NmMgbGVnYWN5LXRydW5rCisxNjUwMCBjMzFiMTNiN2RiNzQwNzUxMDY4YjZjNzRiZjQ1ZWIxMDc4YjZmNmM5IGxlZ2FjeS10cnVuaworMTY1MDEgMTQ3NWMxY2MzYmYxZWU5YzAxNTk1YmQ4N2Q2MWNiYTA2ZjM0NGFiNyBsZWdhY3ktdHJ1bmsKKzE2NTAyIDgyZDljMmYxMzA5OGU1Yzc2ZmY0OWFjY2JkNmVlZmRkZTZiZDE0MzQgbGVnYWN5LXRydW5rCisxNjUwMyA5OGQ4MTY5NTYzZTcxZDc0YWFlMzZhMzFkNDljYjZiNGQ2YmY0ZGJiIGxlZ2FjeS10cnVuaworMTY1MDQgZjY1Yjg2NzM4ZDNiNThjMjFiMTM5NmY2ODExN2I2ZjUzYmRkZmQ2YiBsZWdhY3ktdHJ1bmsKKzE2NTA1IGVlOGYwOWU0MTM5NTQ2MWJhYjhhOGUwMTg4MDdkMzY1ODQxZmFjOTMgbGVnYWN5LXRydW5rCisxNjUwNiBjNzZlNzRhYmI2NWJhZjNkZWY1NDQ1ZWIzMjQwNzU1OWM4MGIwYjZkIGxlZ2FjeS10cnVuaworMTY1MDcgNWEzMTE0ZThjMDI3YTk0NjNlYTg0OTM4Mjc4MmUyNjhmYmM4NTA2YyBsZWdhY3ktdHJ1bmsKKzE2NTA4IDVjMDY3YzFiNWVkMGQ4YTVlNjkxZjc5MzY5ZDkzMWU5NzJkNWM1NTMgbGVnYWN5LXRydW5rCisxNjUwOSBhNDRkYmJkZTVlY2ZkYTU3OWE5NjU5YjlkYmIzYTY2YzI5YTQ1ZGE5IGxlZ2FjeS10cnVuaworMTY1MTAgN2FlOWZhNDA5YjQ2ZjI2YzUyMzEwM2Y2MWIzODNjZmY1NDJjY2VlNCBsZWdhY3ktdHJ1bmsKKzE2NTExIDA4M2I0ZTU0NzE3MWVmOWE0ZGJlNDU3MmQxZDU0ZjBmNzE0MDQ2M2IgbGVnYWN5LXRydW5rCisxNjUxMiAxZTlmMzBlZWM0ODI0NDgxZWRiYWEwMzE0MmQzY2YwZTA2YTBkNWE2IGxlZ2FjeS10cnVuaworMTY1MTMgZGZkYjkxMWNiZWMyNTJjOTM2NjViYmMxZDdhOWY4YWRhZmI0YjRiNyBsZWdhY3ktdHJ1bmsKKzE2NTE0IDgzZGJhM2Y1ZjdiNDZhMDA4YjkwMDFkOTQwYjU1NTdhMGI3NjgwNzAgbGVnYWN5LXRydW5rCisxNjUxNSA4ZDEwNzU3YTU3NWIwYTZjZmU1MWZkODhhMzQzMjhiMDU5NzNjMWZlIGxlZ2FjeS10cnVuaworMTY1MTYgODRmODU3OWEwNzljZGFhYmZkYmVkOTU1YThlMTQ5NTA4NWYyZDNmZiBsZWdhY3ktdHJ1bmsKKzE2NTE3IGU4ZGMwYTBiZTRiYWNjMDgxN2ExNDVhNTY2ZDcyMWY1NzA5MGExNzAgbGVnYWN5LXRydW5rCisxNjUxOCA2MzJiZTk5Y2MyY2IxMzg0YzAyYzVmNWRiZDA4M2VhNzdmMzI0NWUyIGxlZ2FjeS10cnVuaworMTY1MTkgMDBlZDRiNzQzMDJmZDdlODY3OWUwNWIxN2ZkZDFjMDhiZDVhNjVmNCBsZWdhY3ktdHJ1bmsKKzE2NTIwIDY3YjliMDVjZTVhNWRmYjI3NTIxNjAzYzBlNjQyNzVjNzYzYWQ1OGUgbGVnYWN5LXRydW5rCisxNjUyMSBiYzM3ZTZhMzM1ZjIxNWQ5YjljYTkzZDVmMzZjNTRjMzEwYThkY2FjIGxlZ2FjeS10cnVuaworMTY1MjIgNDkzYjEwNjU3NjNkYmZjYmMzZjI0MjBlODVlODA5Y2MzNDc2MDE2YyBsZWdhY3ktdHJ1bmsKKzE2NTIzIDE2YjYwYmQ2YzM3NWRhOWJmNGZhZTY4MGQ1MGE4MGU0ZGQ4ODEzNzQgbGVnYWN5LXRydW5rCisxNjUyNCBkODlkYTE3YjQ2ZjYxMGFhNWZjZjk2MjI5MTAzZmVkMDdiYTgxNmI2IGNucmktMTYtc3RhcnQKKzE2NTI1IDZmOGQyNGIzMzJkMzVkNTk1Y2Y0ZjJiMmQxYWRlZDUwMGE3NzFmNGQgY25yaS0xNi1zdGFydAorMTY1MjYgNTlmOGNlZGNmMDQ5NTFjMzBmZDhhMGMyYTI5Y2ExM2NiODUyNTQ3ZiBsZWdhY3ktdHJ1bmsKKzE2NTI3IDJkMDBiY2VkNjAzODcwYTMyNzM2OGExNjU2MjljZWRkMzBjODE1N2YgbGVnYWN5LXRydW5rCisxNjUyOCBjMWZjNDA2NjQ2MDM4MmYzZDMzOTIyNzZlZDgzMzQyODcxMmEwOWVhIGxlZ2FjeS10cnVuaworMTY1MjkgZmRiYzg3MzBkMzU2OTg5NzBkZGRlNDBmOTU1M2FlZDBlOTJmYzQwZSBsZWdhY3ktdHJ1bmsKKzE2NTMwIGIxYjQ3NGNjODk2NjQzN2RhNGVhMjE0ZWUxNjY1MTQ3OGNhNzMxNjggbGVnYWN5LXRydW5rCisxNjUzMSBkYWQwMTMxN2JlZDcyZmFmNzA1ZWI1MDk2ZjE5ZDI5ZjMxMjI3YjExIGxlZ2FjeS10cnVuaworMTY1MzIgOGJiYzBlNjQzMmFiNDgyYmI4NzhiY2Q5NzgzNjAzNjYxNjY1MjBlYyBsZWdhY3ktdHJ1bmsKKzE2NTMzIDMyM2RlM2E4ZmY4ZWJjMjViOGYzNmI4NTUyMDk1OWZjZTM4YzczYzAgbGVnYWN5LXRydW5rCisxNjUzNCBmNzFjZDI0NTM1YzQwNjE5Y2M5MTYyZDlmMzI0NTNkN2UzMmNiMzAwIGxlZ2FjeS10cnVuaworMTY1MzUgYjA4YWIyY2RmNzQyZDEwYWRjODJmMjQzMTcyYTA4Y2M4NDBhMTMyOCBsZWdhY3ktdHJ1bmsKKzE2NTM2IDJjZmZjZDcxZDVlNDE0NzE0ODJkM2NjY2E0YmEzYzExNmU1NTY0ODkgbGVnYWN5LXRydW5rCisxNjUzNyBlZWE1MTI3NWFjYmZiNDQyZmFlZGFjNDNmZDAzZjg1ZjNhZmFlZjAwIGxlZ2FjeS10cnVuaworMTY1MzggYjZkOTNkYmExMjBlYWI1ZDU2MTAyMjM3YzNmMjM4YTZkZjUyOGYyOSBsZWdhY3ktdHJ1bmsKKzE2NTM5IGYxYzk3YWY0Yzg0NzA5YmU2MmE3MGY2NmIwNGZmMTEzMDgwODdkY2QgbGVnYWN5LXRydW5rCisxNjU0MCA5ZmJjZmJmOGExZDI5MmI4ZmVmMDNiZDM4ZGZjNTYzNGU1MDVkNjllIGxlZ2FjeS10cnVuaworMTY1NDEgMzNkZjNiNTE2NzExOWUwNTNiMGRlMzIwYWRjMzU2M2ExMjFmOWUxNSBsZWdhY3ktdHJ1bmsKKzE2NTQyIGIzOTAzZTA1MDE3ZjE2MDQyYTY1MDkxNjBmYTY4NGM0NzhmYjYwZDUgbGVnYWN5LXRydW5rCisxNjU0MyBmNmU0YTlkZDY3Y2RkM2VhNGFjY2VmNzY5NjY2M2FmMjM1NWQ5M2NlIGxlZ2FjeS10cnVuaworMTY1NDQgYWI0MmQ0NTQyNDI0ODUyZjkwZDU5ZTNlZjI4YmUyMmE1NDBiMjg2MyBsZWdhY3ktdHJ1bmsKKzE2NTQ1IGUyMGZlMDA1MjY4MDk1NTRjMDhiNGY2MWI4OGU0YTBjZTZjODE2OGMgbGVnYWN5LXRydW5rCisxNjU0NiBhZDM5MDI0MGVmYjNiMDk1YWMxYThmYmMxMjhlMDYyYjdiMDI4ODYzIGxlZ2FjeS10cnVuaworMTY1NDcgZmYxMTFkMjg5OTA1ZDUyNDc3YzM1OTExMDkxNjRkN2M3OTk1MWI4MSBsZWdhY3ktdHJ1bmsKKzE2NTQ4IGMyNGY3NzU1YjFmNTI1NTFkMDViZGJmMzliNWQzMTRhOWYxMDg0ZDAgbGVnYWN5LXRydW5rCisxNjU0OSAxYzE4NjAzMDY4ODIyOTcxNmNlZTNhYmIxMzM3YmNlYzI2YzVjNmQ4IGxlZ2FjeS10cnVuaworMTY1NTAgNDIwNDU2NGFiZjIwYzUzZmZlYTY0YzY1MDBhYjFjZjgyOTA3ZDEwYSBsZWdhY3ktdHJ1bmsKKzE2NTUxIDY2NTc5NTZhZjMxZTBhYTY1ZmQwNThlOGZkNTNiODJlYmJmYTI0YzcgY25yaS0xNi1zdGFydAorMTY1NTIgYzkzNjg3ZDZjNzMxNzE4ZjlmYzI0YzkyYjJkNWUyNzU5OWE2ZTAzMyBjbnJpLTE2LXN0YXJ0CisxNjU1MyBmMTI5MGFiYTI5ZGE0YTI3OGFhZThmYzQyZGE5ODhkOTMwNjJmNDFiIGxlZ2FjeS10cnVuaworMTY1NTQgMWY5NjZmMGQ0NjdjYTFkYTc0YmY2MjU1ODEzMmIwNTE0NzA0YjdjNiBsZWdhY3ktdHJ1bmsKKzE2NTU1IGY2NjUxM2EwZGVhNWE1NWUyYWZhMjRmODE0NDhmMWJhMzFkOTM1ZmQgbGVnYWN5LXRydW5rCisxNjU1NiA0ZWRkMTNlYjc1OWQyNmMzZjYwOGE2ODdmMTE3YTIzNjMxZjE3MWNiIGxlZ2FjeS10cnVuaworMTY1NTcgYzY2ZTk5MWI1ZjIxN2NiYTY5OGQ3ZDA3ODcwY2NmMzQyYTZjOWIzNiBsZWdhY3ktdHJ1bmsKKzE2NTU4IDA2Mzc0MTNlNTkzOTdlNzQ4NWM1YTU2OGY2YmU5ZGFkNzI2NjVmZWYgbGVnYWN5LXRydW5rCisxNjU1OSAxYjc4MTM1NzVhZjdkYzk0MjhkZmVhNmFmNjAwOWUzMTQ4ZTkwMTk1IHVubGFiZWxlZC0xLjguMgorMTY1NjAgMzUyOTY4ZWU0MGU2MjlhZDI3ODNmZmRhMGNjNWI2NzkyOTA3NzJmNCB1bmxhYmVsZWQtMS44LjIKKzE2NTYwIDZmN2FiNzRiMTI5OGRhYzUxYTIxNDNiMmY4M2IyYjY4MDNlYTEyZDUgY25yaS0xNi1zdGFydAorMTY1NjEgOGZiZjMwN2I5MGE2YzJmNGU0N2FmYWQ3NGJhNTRlZTg4N2NiYzA5MCBjbnJpLTE2LXN0YXJ0CisxNjU2MiAxMzZkM2Q3MjY2NmE3OTUzZmM3NDJlMzhkZTE3MWE1MGI1ZDU0N2IxIGxlZ2FjeS10cnVuaworMTY1NjMgNGMxMGJjODExZmVkYWFkNmExYjliNzkwZjc3NmY5NDAwMTVhMDk1OSBsZWdhY3ktdHJ1bmsKKzE2NTY0IGJhMTM4M2M5ODdjOGRlOTg4Mjg5NjQwYTMwYjJjYWI1NDMyZTE5NzkgbGVnYWN5LXRydW5rCisxNjU2NSA4Mjk1Zjg1MDZlYWVhNzU5NmY5M2M3NWNlYzAxNjI1ZGRhYWIxOTFlIGxlZ2FjeS10cnVuaworMTY1NjYgNDJhNGE0MTdiNDc1MDNmZDMxYzExY2Y1ODUxNjVmYzBiODgzMjc5YyB1bmxhYmVsZWQtMS4yMy40CisxNjU2NyAyYzc4Njg5NmU1NDlkNGVlYjc1ZjFiNDRiYzM3OGNlYzE0NDcwODlmIGxlZ2FjeS10cnVuaworMTY1NjggZTAwZDNjZTcxZjg5M2FiY2U1YjE3NjcwYWU4YThiZmFmMTQ3OGI3MCBsZWdhY3ktdHJ1bmsKKzE2NTY5IDAzMWRhZTA4YTBhOTg4MDJkYTZkYWRlZjY4YTBmODRhNzg3OWY4OGEgbGVnYWN5LXRydW5rCisxNjU3MCBhYzQ4ZDA3N2VhYWM5N2JjNWNmMzIyOTQ4MDQ4ZGFhZWM4ZWYxNThjIGxlZ2FjeS10cnVuaworMTY1NzEgNTQ2NjMyNGJiODExNGVmN2JhODg5ZmE4ZjQ3MWYyNDI1Mzc1Nzg2NyBsZWdhY3ktdHJ1bmsKKzE2NTcyIGZkNDM3Mjc4NzYxMWFhNzFlY2M2OTlkYmRiNmI5ZTA3ZTQwYzY5MTEgbGVnYWN5LXRydW5rCisxNjU3MyBiMWE3ZjYxYWI3ODExYjFjZTI4ZDc0YjUyZWIwY2UwZjE0OTVhOGIwIGxlZ2FjeS10cnVuaworMTY1NzQgZThiMjJiYzg4ZDk1ZWEzZjdmMWFlMDVhYmM1OTM2YWI1ZjM2MzYwYSBsZWdhY3ktdHJ1bmsKKzE2NTc1IGM3N2Y4ODczZGE4NDEzMjQ4MmMyZGY3ZTk1MTZjMjc2ZTkwMGVkOTIgbGVnYWN5LXRydW5rCisxNjU3NiAxMTYyNTYzM2QwZjY3MDBmYzAyZTgyOTRlOGY1M2RlZDZmNmM4ZmEzIGxlZ2FjeS10cnVuaworMTY1NzcgZGU5MDY2MmYyZWFiMTU0NmNjZWU1YWQ0NzcyMjBkNjYyZDQ3MjRiMCBsZWdhY3ktdHJ1bmsKKzE2NTc4IGJhOGRiOTZlYTRkOWZkNDVjZGU3ZWU4MzY2Y2Y5ZDU3MWY1MDQ1ZWIgbGVnYWN5LXRydW5rCisxNjU3OSAzNzRkYTU4MmVjMTJmNGRhYThmZWIwNmJkZGJmMTAyZTA1MDIzMGQ1IGxlZ2FjeS10cnVuaworMTY1ODAgZjM5NjhkZDE3MTFiMjVhYjdiNzU5MGM0ZjViODhkMWNiOTk2ZTU5ZiBsZWdhY3ktdHJ1bmsKKzE2NTgxIDc2MjM3YzBjYmYxMzNmNmRiOGE2ZGNkOTVhNWFlNjk5ZWUzZDFiZDYgbGVnYWN5LXRydW5rCisxNjU4MiBmMzhlMzIxYmU4YTQzNjQxNjAxYTI4NmUxMGMwZmQ5ZWY3NjQ3MTVlIGxlZ2FjeS10cnVuaworMTY1ODMgNjQ4NzNjZjIwYjE2YjQwZjk5MTEzOGFlMGM4OGYxOWU3ZGRiYjdkNCBsZWdhY3ktdHJ1bmsKKzE2NTg0IGFjZDA3NTVlZTc3MjUxMzhmNzI1MGZjNDc3YzRkODFkMGZiMDQ2MzYgY25yaS0xNi1zdGFydAorMTY1ODUgNGY3MzdmYjA0NTI4ZGJkYjFlZDI1Y2IyZjc1ZTQyYzk1NWNmOTczMCBjbnJpLTE2LXN0YXJ0CisxNjU4NiA0MWFkMzZmYjAwZWU5MzVlZmQ5NmUzZjdiNjE0NGU1MjZmY2M4ODczIGxlZ2FjeS10cnVuaworMTY1ODcgNDVkOGYyM2RmMjE4MmMxZDc2NjY5ZTQ5OGZhNGRlMGIxODM1MGFjMSBsZWdhY3ktdHJ1bmsKKzE2NTg4IDUxZjI5ZmNiZDliYTVhMzBlMzRmYmI4OTE4YjI1ZDU1Y2FlMmM5M2MgbGVnYWN5LXRydW5rCisxNjU4OSAzM2ZmNGQ0ZDkxYWMzZDhiMzc3MjM2ZjU5NTMxYWJlZGRhNzE0Zjc3IGNucmktMTYtc3RhcnQKKzE2NTkwIGFmYmJlNjc0ZDU4YTBiYWJmZTlhOWM0ZjdjOTNhYjdlNDIzNTY2YmIgbGVnYWN5LXRydW5rCisxNjU5MSAzYzBmNzVhMjE5OGZmMTkxMjMzMThlNDNjYTNiZTFjMTU4OTIwNTljIGxlZ2FjeS10cnVuaworMTY1OTIgNjYyMmQ3NjMxY2NmZjFmNzBmNTA1ZGYxNzMyOWVhOGIyYjc2ZjliYiBsZWdhY3ktdHJ1bmsKKzE2NTkzIDk1ZWVlODY4NjExZWM2OGY3YzI5MDJlMWFjYjM5YTZlYzI0YTk2NDEgbGVnYWN5LXRydW5rCisxNjU5NCA4YmQ4MmNmMzYxYWE0MjQwODU0Y2I0Mjg2MTg5ODdiMWQ0NWI4MDlkIGxlZ2FjeS10cnVuaworMTY1OTUgMzVlMjI2Njg2YzJlZDgwMGEzODc0ODY3MWFkYWM5MzNjOTdkNzk1YSBjbnJpLTE2LXN0YXJ0CisxNjU5NiBkNDMwMDk3ZDFiZmQxODk5ZTMwNDY3OWU0ZmQzMDY4NmY3MDZiN2I2IGxlZ2FjeS10cnVuaworMTY1OTcgYzU3YjU3NGU2NzY2NGRjMmM4YzBiZDQxMzBjNWI5ZWE1Yzc2NjY5MyBsZWdhY3ktdHJ1bmsKKzE2NTk4IGVlZWQ3YmM4YTI4M2Q5NWEzOGM5MzMyODM3ZWU5MWU5NjQwOTE5ODQgbGVnYWN5LXRydW5rCisxNjU5OSAwODRjNjNkODVmOTA4Mjk1NGQ1NTE2NTI4MzA3ZjYwYmUzM2ZiNGU3IGxlZ2FjeS10cnVuaworMTY2MDAgYTEwZGM3MjE1YzFlYzE3NWJjMzA0OTFiNjJkNzMyOWRhNzNhNjViZCBsZWdhY3ktdHJ1bmsKKzE2NjAxIGM2Mzg2M2FiZTFhYTlkZGVhYjEyZDYwN2EwMzU5Mjk2NDk2YjA0MzQgbGVnYWN5LXRydW5rCisxNjYwMiA1ZmQ4MGM4MmExNWE5MTQzNDg3MGVjNmExYjlhMTg5MWU5MzE2ZmRmIGxlZ2FjeS10cnVuaworMTY2MDMgMjU0ZjhiN2M0YTgzODEzNjU5ZjIxZGExMDFmMmUzMTU0OGU1NjRjMCBsZWdhY3ktdHJ1bmsKKzE2NjA0IDYxY2M1NGMzMTNmNmNkMTU4N2ZkY2UxNGEzMDFjOGEwNTM4MDg0ZjMgdW5sYWJlbGVkLTIuNTQuMgorMTY2MDUgMDJlMDgxNmU0YjM3MTdiOWYwMTcxYWZlZGNhNjY2N2NhNTJhMjc1YiBsZWdhY3ktdHJ1bmsKKzE2NjA2IGU0YzM4MGVlOTA3OWY3MTM1MjczNzU0MmM3OTFmN2RhNmZkMTdkZmMgdW5sYWJlbGVkLTIuNTQuMgorMTY2MDcgMjNhNjJhODc1MWI0NzYyYjg1ODk3MjRjZDkxNTFhNjkzMzk3ZmEyMiBsZWdhY3ktdHJ1bmsKKzE2NjA4IDE1MTE0ZTAxNzY1Mjk0NjAzODdhZDFiODIyZTdhZDc1MGFkNDNkYWUgY25yaS0xNi1zdGFydAorMTY2MDkgNDAzYzk3MGQxYTVlNGFjOWNiMWFhNjk2NzdkZGMyY2JiOWVlMGNkZCB1bmxhYmVsZWQtMi4xMDguMgorMTY2MDkgOWFjZmQwMzdjYjk0ZGExODM2MDYwMjQzMzgzNGFiZGJjMjlhZDk0YyBjbnJpLTE2LXN0YXJ0CisxNjYxMCBjMzc4M2EzM2Y4NGJmMDM1NzhlOTI2ZDZiNDZiMzhlMzg4ZDk1NzM3IGxlZ2FjeS10cnVuaworMTY2MTEgYjAxNmVjODczOGY5ZDIzZGU4ZjJiODE1YmU5ZWIyNWM4MmVmZTZjMCBsZWdhY3ktdHJ1bmsKKzE2NjEyIDUxMzZlMzdmZjU0OGU2OTEwMTczMjE0NTliZmRlYzZkZmI2YTU3MzQgbGVnYWN5LXRydW5rCisxNjYxMyA0YWViZDBmMmEwNjI2OTIzZjVjMTc2NTgwYzUwNGY5MmIyMTIxNDM5IGxlZ2FjeS10cnVuaworMTY2MTQgNjMxYjVkZjQ0ZGU2MDk1MTM4OWVmNzBmYjczYmVhNzJmYmEyMDc5ZiBsZWdhY3ktdHJ1bmsKKzE2NjE1IGIzNjhhYTgyMDhmM2ExZjRlNmNmNWFkYmIxMTQyYmU3ODk3YWQ5ZDEgbGVnYWN5LXRydW5rCisxNjYxNiAxMWQ4ODIyMGZiNTIyOGZmOGM4MjJkOTQ4MWI2ZjBmMGIyNWJhMDAwIGNucmktMTYtc3RhcnQKKzE2NjE3IDJiYWRiMzIyMzU1ZmNlNDk4NDM0YzY3ZmJkNDZiZDRhNjAyMDU0OWQgbGVnYWN5LXRydW5rCisxNjYxOCA5MWQ5NWE3Yjc4NTgzNzQwMzExOWIwOGVmNjBjMjcxMTUwNWU4YTkwIGxlZ2FjeS10cnVuaworMTY2MTkgM2FlMDZjNTdkMDllYThjYjgxYmRlOWFmNWYxOWM5NTM4NjExZjg1YiBsZWdhY3ktdHJ1bmsKKzE2NjIwIDQ2NTE0NGFiZjAyYTJlYTk5ZTBjMDY2MGQ0ODM4MDVkZjE5YmViMDAgbGVnYWN5LXRydW5rCisxNjYyMSAxZTlkMWNjMmJjM2Y3YWM1OGExMmRkNjdlYjI2NjFiOWEzNGYxYmZhIGxlZ2FjeS10cnVuaworMTY2MjIgOTI0ZjA5ODFiZjc2ZGNkOTE0ZmFiNTFkNGUxZDIyZmIzZGQwMmE3MCBjbnJpLTE2LXN0YXJ0CisxNjYyMyA5NzU3M2NmOTFlNmFkZTk0NzhiZTBkYjQ2NWZlNjYyZWZkZDY4YmE4IGNucmktMTYtc3RhcnQKKzE2NjI0IDg3NDg4YzMxMTNmMjc2ZDY3ZGE0NTU4ODhiNWUyYzU1NDI2NjYwMTQgbGVnYWN5LXRydW5rCisxNjYyNSAwMGE1YzgwNmNmN2NiOGFiYTk0NTYzZjE1MzM1ZDhhNjE3MzZjOTRhIGxlZ2FjeS10cnVuaworMTY2MjYgYjM3ZjA4NjM1MDIzZjI2NzNhYmZjMjZlNWMyNzkwYWRlZDY4MTY1MyBsZWdhY3ktdHJ1bmsKKzE2NjI3IGZjODczY2EwYzdkM2Y0OGQ3ZjdkMmJjOGIxZTc4NTliZmQ4NWRhYTUgbGVnYWN5LXRydW5rCisxNjYyOCAwNTI1ODUxYmEwYjc3YWI3MGMzNDJjMzY3ZGQzZTFhZTQ0NWI3NTZhIGxlZ2FjeS10cnVuaworMTY2MjkgYTU1ZTQ4ODNmODg2YjljYzk2ZjcwMjIwYmJlMzk2YTRlN2EwMWVhMSBsZWdhY3ktdHJ1bmsKKzE2NjMwIGRkMDQyZjVhOGZhMjIxNDQ4ZWFiYmQ5MDEwYzgyMGMyYWZhNTY4NWIgbGVnYWN5LXRydW5rCisxNjYzMSAwOTg4MjVlNzRhMDVhZDkyY2RmZTdmYjA1ZWVhYmQ5NDEyOGM0MjVjIGxlZ2FjeS10cnVuaworMTY2MzIgMzQ4YTdjMThlMGU2M2E3ZjMyNjMwNWFlMTZlZGEzZmIzNDg4MmU0NiBsZWdhY3ktdHJ1bmsKKzE2NjMzIGI3MzFhMjA2MzAyYWU3MGE5YTQzNDhkY2Y3ZTJiZjY3OGIwMDg0YmIgbGVnYWN5LXRydW5rCisxNjYzNCBjNDgwNTI5ODA3YWIzMzA2YWE0ZmEzMTFkM2FmNzNmNDcyMjMzOWRhIGxlZ2FjeS10cnVuaworMTY2MzUgMDdiODVmYzdlZjY4NGY3NzgzYTQ1NTllNGEyYmU5NzFmNmY5OWM0MiBsZWdhY3ktdHJ1bmsKKzE2NjM2IDY2NTg5YjA2YzYzMzA4NjE0ZmNkZGRmNzA2ODhlYmJjMDUwMjlmZTEgbGVnYWN5LXRydW5rCisxNjYzNyAwNGEzNmU5M2RjM2RkODA2NmY1MDgxYWI5ZTYwYmE5YWQxYzA3ZjEwIGxlZ2FjeS10cnVuaworMTY2MzggNDVlZGMzMjVlODlhNTc2OTBkODZmZWYyY2QxNjhjNmM5N2VhODdhZSBjbnJpLTE2LXN0YXJ0CisxNjYzOSA5NGFkZDg4ZWYwOGMwNmI1NTE4NGY2MmY4MWMzZTAwN2Q0ZWMzNDRiIGxlZ2FjeS10cnVuaworMTY2NDAgNjY4MmZmM2UzMThmNWYyOTQyODM5YWZhZDgxZDYwYjE2ZGFlYWFkYiBjbnJpLTE2LXN0YXJ0CisxNjY0MSBhMjk2ZmY1NTIyMWY3MTIwYjU2ZjdlZTU3ZTAwYjFiNzE4N2ViMzRiIGxlZ2FjeS10cnVuaworMTY2NDIgOTlmMDQxM2VmNzk1ZjMxNWIyNTFkMTcyYjcyZTljMDk1ODczYWE1MCBsZWdhY3ktdHJ1bmsKKzE2NjQzIGJmOGQ1NmUyN2M3YmJhNTZkZmY4NDQ3YTBlNDljMGZkMDQ3MGQ3NTUgY25yaS0xNi1zdGFydAorMTY2NDQgOTRmNmVjODc5MzBhYmU1ZWRkNGJmZGExMjFlMjUzM2U5NjU0ZTBlOSBsZWdhY3ktdHJ1bmsKKzE2NjQ1IGQ3NGE0YTQzZjQ1ZmI4OGFkYzg3Y2MyZGI2NjAzNTZhZDQ4MTViZTAgbGVnYWN5LXRydW5rCisxNjY0NiA0NjhkZjVhOGNmNGFjZmQzNDJjZmZiM2U5MTU2MDA4MzBjZjQ3ZDA2IHVubGFiZWxlZC0xLjIzLjQKKzE2NjQ3IDk2YWQzMjQ5OGRiNzgyMTQ4NjkwMWIwMmUyYTNmMzNkMDE5YTg3ZTIgdW5sYWJlbGVkLTIuNTQuMgorMTY2NDcgMWMyYWRhZTQ1MDY5N2RmYzMxYzY2NTMzZmI3MmM4MDYzZmIzYmFjMSBjbnJpLTE2LXN0YXJ0CisxNjY0OCBmM2Q1ZjcxY2NiYjQ1ZTczNmY4Y2MzY2E0YmE3ZTNlMWI1Mzg4MjhiIGxlZ2FjeS10cnVuaworMTY2NDkgNGMzZjk3N2NlMDZjZmU3Y2I1YmQ0ODc5MWE1ZDUwZjlmODgzM2FiZiBsZWdhY3ktdHJ1bmsKKzE2NjUwIGE5NGUzN2VjZGJlYjZmYjY4ZDBkZTZkYWZlYTkzZjQyMzI2YzVmNjkgbGVnYWN5LXRydW5rCisxNjY1MSBjNTgxNDljMDY3MGFhOTkxZWQ3NDhhMTZkNWVkZTEwYjA4NDU4NDAyIGxlZ2FjeS10cnVuaworMTY2NTIgZmM0OWEzYjM4NjNiMTk2YzVjMTBiMDA3NzMwMmIyOGU1ZTc5ZGIzMSBsZWdhY3ktdHJ1bmsKKzE2NjUzIGRmZGI2MDFjZWUxY2Y1MTQzNWJiMzM4NmEyZTZiNmIxZjM4YzRjOTMgbGVnYWN5LXRydW5rCisxNjY1NCA1OTJhYzI3MjY0MWQyMmRmMzVmZjcxNDdkNWM5MzQwMTZhNTU3YmY0IGNucmktMTYtc3RhcnQKKzE2NjU0IGE2OTg1ZDg5NDY0Mzc2YjkxNzNjOWE1NzdjNjcwYjdkMGI3NjdkM2QgY25yaS0xNi1zdGFydAorMTY2NTYgZTI2M2EyNzNlMzIxZjk2ZTk3YWRhY2M1MzBiOWJlZTgwN2JiOTIzZCBsZWdhY3ktdHJ1bmsKKzE2NjU3IGVlOGM1Y2ZhZDMzNWU2YmM2ZmRmNGE3NGE4ZjYyNDNjY2FlZTkyYTMgbGVnYWN5LXRydW5rCisxNjY1OCA0ZWY0NjFkZjMyYzE5MWU5MTMwZGM5YmNiN2I5NTFlYTBhMTE0ODcyIGxlZ2FjeS10cnVuaworMTY2NTkgNThmZWZlZjcwZmFjYjczMDBhMmU0NTZmYzc1Njc2MjA5MDgzODNjNCBjbnJpLTE2LXN0YXJ0CisxNjY2MCBkZjdkZWIyZWJhNDE0MTA3ZWRmYmNiYWJlOTY1OTU0NjhhOWQ2NDk3IGxlZ2FjeS10cnVuaworMTY2NjEgODMwNzQ0NmJjNmFhZDY2MGRkNTExN2U2MzExOGY4MGU3ODBiNTJiYyBsZWdhY3ktdHJ1bmsKKzE2NjYyIDM1ZmM5NTExYTM2ZmYyYzQ3YTZiYTY2NzgyYTQzMDA5YzQ0OTY4NmUgbGVnYWN5LXRydW5rCisxNjY2MyBkMDE0YzhhYjZhODI0MzUzZDMzMDAxYTIzMmIxMDEwNmI4NDE3ZDQ2IGxlZ2FjeS10cnVuaworMTY2NjQgMjY2ZTExYTIyNmY3Y2Q4MzljMjI2ZjM0MDE3OTkwNmEyMDdhZWNmNiBsZWdhY3ktdHJ1bmsKKzE2NjY1IGVhNWViNTFlZDBmNjk4YzRiNDY2MmNkMDc5MDgyNTQ5MTM1MDg5M2QgdW5sYWJlbGVkLTEuOC4yCisxNjY2NiBmOTExNjE4YTBlYTBmYWM0NmNlOTZlMmNiNjVjZDNmMDM5MWQwMmE3IGxlZ2FjeS10cnVuaworMTY2NjcgMWMwMGZlYTlhZTQwYzBmMWZiNDJmZWQzZWFiMzgyMThmY2IzZDk3MCBsZWdhY3ktdHJ1bmsKKzE2NjY4IDc1NWUyMTM1YTE5NDhhOGQzYzEzMWYxZmI3NjNiZDMwNGIyNGI1NWEgbGVnYWN5LXRydW5rCisxNjY2OSBhYmZhNGU0YjJmM2U5YWNlMmVmMjgyZGVkZmFkNjc5ZGM4ODQxZGMzIGxlZ2FjeS10cnVuaworMTY2NzAgMGY2ODAxOGNjZTU4ZjlmMWZhOWRiNDI3NmJiZmY3N2VmN2E2MTA0YiBsZWdhY3ktdHJ1bmsKKzE2NjcxIGRkODMwYzllNWMyMThmYWU1OTE4MjZlNDAxNDVlMzI0NTk0ZjgzOGUgbGVnYWN5LXRydW5rCisxNjY3MiBjNGUzMjE4MzQyNTAzYWM2MjY3ZGEyMTUxNTZkMzE1YzNjMzJkYTE5IGxlZ2FjeS10cnVuaworMTY2NzMgODgxZDM5OGE0NGUwNzEwYWUwMGZkNzA2M2UwM2YzZTYzYzU1NzEzZCBsZWdhY3ktdHJ1bmsKKzE2Njc0IGJmNzA2MmU4ZWVhY2Y0M2UzZTc2NzJkNzc4NDQ4MTNlMDlkZjI1MWUgY25yaS0xNi1zdGFydAorMTY2NzUgMzFhN2IwMDQ1NThmYjdjM2E5MTNlMGRhMWY5ODNmZDVjMThiZDU0OCBjbnJpLTE2LXN0YXJ0CisxNjY3NiAzM2ZkNjBhYmQ0ODIyYzRhYWQ1NzFiZTk3OTY3YTA5NWIyNDg4ODZmIHVubGFiZWxlZC0yLjEwOC4yCisxNjY3NyAxNWFkNDA4OGE3MDBiZmIwNWJkMzAwYTg2YWY3MGJjMjlhNTA1Mjc5IGxlZ2FjeS10cnVuaworMTY2NzggOGVlYWZmOTZiNGMyNDQyMmZhYWYyNzE2ZjMxYzJhYWM4MDBjMGFmOCBsZWdhY3ktdHJ1bmsKKzE2Njc5IDA5NTY1Nzg0NzE1ZTFjNjY1NWU2OTg5OWY2OTI5YTAwNWZjZjIxOTIgdW5sYWJlbGVkLTEuOTguMgorMTY2ODAgM2E1YTdkMjdmMWI3MmI5ZGUxZjk4OGExOGNkMDQ0NGI4NmQ5MTBhNiBsZWdhY3ktdHJ1bmsKKzE2NjgxIDYyNDk0YTk2ZGNjYWI1YWEyMzllNjdlZGU5YWY2MWI2MGVlZWZkZWMgbGVnYWN5LXRydW5rCisxNjY4MiBjMGMxNzM0N2RhNWJiZWNjYmVmZjFjNzVkMWVhM2YwMWRhNTA0NDM5IGxlZ2FjeS10cnVuaworMTY2ODMgYWE0OWQwNzRmNzE2MWIwNzI3Yzk2NTNjYWMwOTY5OGZiYmJhNTFkZCBsZWdhY3ktdHJ1bmsKKzE2Njg0IDk4ZjA4Y2FmZTE5YjEyNTQxZWFmM2QxYTNjYTZmZTIzZjU2NjlhMzIgbGVnYWN5LXRydW5rCisxNjY4NSA4ZjBmYzBiNWY3ODRjY2QwNmEwYzcxMTQ0ZmJkZjFlM2E4NWI0M2YyIGxlZ2FjeS10cnVuaworMTY2ODYgMDhmZWI1MzhjODM3MTYwZWI0ODVlOWMwNDRjYjE5OTk1YTc3YTg5NyBsZWdhY3ktdHJ1bmsKKzE2Njg3IDIxOTBiNzU5OTgzNzM0YTBjNGU5NGRmMGQ1MjFkYzhhMTNjODY0MmEgbGVnYWN5LXRydW5rCisxNjY4OCAxYzViZGI2NjIzYzhjMTE0ODVjMjU4OTE4ZmMzM2U4YzEyNDBiZDM1IGxlZ2FjeS10cnVuaworMTY2ODkgNzdiOWUwNDFiNTk1Y2I1MDlkMGQ4MjI1MTA3NDIwMGM0OWI5NGZhZiBsZWdhY3ktdHJ1bmsKKzE2NjkwIGMzMzIwZDI0ZDdkZTQ2YWRkMGVlNGI3MzM4MDBiZjkyZjhjNmMyZmQgbGVnYWN5LXRydW5rCisxNjY5MSBlMmVhMDA2MjBlZDY4OTlhNGQ0MTc0NjkwNjE2MTU0YjgxMjVmNzQ0IGxlZ2FjeS10cnVuaworMTY2OTIgMDQzMGExMzA5NTk2Yzg3OTBkMzdkNzZmZDc5Zjc3NTBlMTFhNjAyYiBsZWdhY3ktdHJ1bmsKKzE2NjkzIGQzYmY5N2Q1MzJhMDhiNGYxM2YyZDNmNTA3OTU1MzYxZGM1YTIzOTEgbGVnYWN5LXRydW5rCisxNjY5NCAyNWRlNzE5M2Y5ZmNlYTY1ODM0NTA0YTc2ZjU4ZGZmMmU5N2NiZWE1IGxlZ2FjeS10cnVuaworMTY2OTUgYTBiMzY1OThiMzFkMGQyOTg5OTExNzQ1OTNmNGFiZjJmYWZmYWIyZCBsZWdhY3ktdHJ1bmsKKzE2Njk2IDljNjliZDFhMjgyMmYwZTUwNWYwOGRkNGMzNDA4YWMzNTMzY2VjY2QgbGVnYWN5LXRydW5rCisxNjY5NyBlMzBhMTk0ZGNhMDE0ODJjNGRlMjFjNjhkYjY0MGYxNThlNWUwN2ZmIGxlZ2FjeS10cnVuaworMTY2OTggMGVmZGY0NWJmNmJiNmI4ZDE2Mzg2MDgzMTdkOWNjMzViZjQwOTRlZCBjbnJpLTE2LXN0YXJ0CisxNjY5OSAwYWM5MTljYThlNjk2MjQwNTllODdhNWNjZGU1MDVlY2JlNzg3YzU0IGxlZ2FjeS10cnVuaworMTY3MDAgOTllMTljOTgyZjk0NDVkZjhjZjhjMzFjZjJmYjQxMWRlOGE0MTY4ZSBsZWdhY3ktdHJ1bmsKKzE2NzAxIDljMWU2ODk4NDAyNzNmOTQyMzdlMjE3MjJkNWNmZjRmZDg0MTY1MzQgbGVnYWN5LXRydW5rCisxNjcwMiBjNDVhY2NjOGU2ZDAzNmZmNzVhZGE1YmM1MTU4YTY4YjZhYTU3MDM2IGxlZ2FjeS10cnVuaworMTY3MDMgNDQ2YzM2MTZjMzIzYjBmNDdiZmZlYTljM2IwMWY2OWM3NDkyZTgzMiBsZWdhY3ktdHJ1bmsKKzE2NzA0IDUyNzU3YmFmMDMwZGRhMGYwODM5MTQ5NTJhNTM2YTI4OTc2MzJlYmIgbGVnYWN5LXRydW5rCisxNjcwNSBiMzQ3ZmM1ZGFlYjcwYzcwMDZkMzU4ZjdkNGE1ODY4NjhjOTU0NDMzIGxlZ2FjeS10cnVuaworMTY3MDYgYTQyNTliZmNhNWJmZThiYTJmMmYwMWZlMDM0YTMyZTk3NTA0ZjE5MyBsZWdhY3ktdHJ1bmsKKzE2NzA3IDZiZjEyODFlYzc2MzliZGU0MTcxNjhjODRkYTQ1OTM1YTIyMjI4MDEgbGVnYWN5LXRydW5rCisxNjcwOCA2MDI0Mzk5Yjc4YmZhNjJmOTNkYWQ5YjBmMDVkMDY1NmZlYmQ5ZmY5IGNucmktMTYtc3RhcnQKKzE2NzA5IDk0MTRkMDMxYTJjM2E0Y2JmNjRjZTgxOGY1ODQyMTY1YjEzNTRhNGUgbGVnYWN5LXRydW5rCisxNjcxMCBjOGZmODBjZWE0ZjdiZTYxOTFkNWQ3Y2M5NjA5NGNjY2ZkNmE4ZDVjIGxlZ2FjeS10cnVuaworMTY3MTEgOGY0M2U1OTJjZjlhNGY2OGE1YjBlNTIxZTJkOGM0MTYyMzJkYTgwZSBjbnJpLTE2LXN0YXJ0CisxNjcxMiBkNzBhZWMyZTM0OWNlYWI1ZTlmMjRjOGRjNWUyYmZmMjFjZjM4NDBmIGNucmktMTYtc3RhcnQKKzE2NzEzIDQ2NmU1ZmYyODkyNjIwYTAyN2MyZjQ5ODFmNWU4ODNiZWQ5Y2Y5ZjQgY25yaS0xNi1zdGFydAorMTY3MTQgZjQwNWZjYmFhZWY1YTk3NTQ4MGM4YjgxMzhjOTAwODg4OWE3ZmUxOSBjbnJpLTE2LXN0YXJ0CisxNjcxNSBlNmVmY2ZjZjE3NGE4N2RkZDQ5MWRhZDE1MDc3NTkxMjZjNjViMmYzIGNucmktMTYtc3RhcnQKKzE2NzE2IGNmNTAzNDUwZjA3YjI0YzYyZDY2ZDM5MTc5YTFlNWMxOTIyN2UzMDAgY25yaS0xNi1zdGFydAorMTY3MTcgYmQ2N2E0ZDZmNGY4YzFkNmQ3NWFlODI5ZmY2NDIxYzNhY2FhMTkzNCBjbnJpLTE2LXN0YXJ0CisxNjcxOCAwODAyM2QyNmEwY2U4NzUwOWUyNDY5YWE1ZDYxYTkzNWI4YTYzMzkwIGNucmktMTYtc3RhcnQKKzE2NzE5IDU5YzZlOTgzMmEyMDQyNTI2ZWUxZGRhM2YzMTVkOWI3NDQ1OWEwMDMgY25yaS0xNi1zdGFydAorMTY3MjAgNjkzYjYxNTgxNzQ2NjkwN2NiZjc0NjQxYzc0ODc2YTZhN2JkMjQ0ZCBsZWdhY3ktdHJ1bmsKKzE2NzIxIDRkMTZjOGRkODk5YzRlZWEyMTA5NDY5MWE3OTI2YmU2MzFhOTRmMDkgbGVnYWN5LXRydW5rCisxNjcyMiBiYzAxNTNhNzM5YWVmNDY3ZTVhMmNkMzFhMDdhOWIwMWQ3ZGJlNWZjIGxlZ2FjeS10cnVuaworMTY3MjMgMDNmYTQwNTI4ZDE3OWZhYjY1MjgwNzk4NzcyMTg2MmE3ODExZTcwZiBsZWdhY3ktdHJ1bmsKKzE2NzI0IDA4MDkyZDFlYjI2YWY5N2M5NmZiMjczODJhZDQyMDVmOWU1YmE2M2MgbGVnYWN5LXRydW5rCisxNjcyNSAzMzk2OTc1MWUzNTFmZDc5MDQ5ZjdkOTRlZTNhN2U5Yjk1MmJiMTEyIGxlZ2FjeS10cnVuaworMTY3MjYgNTJmY2QwOTg1NDdlOWVjYjM2ODFhNjc2Mzg3ODkyNTA4MmI1YjQxNyBjbnJpLTE2LXN0YXJ0CisxNjcyNyBkMDU3Y2Q1NDNlZDk2NmRmMDM2MTJhNmM0MmUwNzExYWRjNzYwYTE4IGxlZ2FjeS10cnVuaworMTY3MjggYzdiM2ZlODQzMzU4Njc1YzJiNzExZjA0ZWRlNzRiOTI2NjU4NmRjNSBsZWdhY3ktdHJ1bmsKKzE2NzI5IDFkMTdjNWU2N2VmNTcyNTI0ODgwMDhhMmY4YWU1NjlhODUyNmMzOTggbGVnYWN5LXRydW5rCisxNjczMCA2NThiMDg1ZTE3NWJmODQ3ZDc2ZDZlMWExNmNlZjEyNjBhY2JlMTlkIGxlZ2FjeS10cnVuaworMTY3MzEgZGRmMzAyZDY5MjExM2U2ZTRiOWRiMjFjYzUzNzZjZDYxNGQ1Y2IxZSBsZWdhY3ktdHJ1bmsKKzE2NzMyIDJhMDRmYmI3YzA3ZDk2NDc3ZGIwNzI1NmEyZDA4ZTZhNjlhMWU4Y2EgbGVnYWN5LXRydW5rCisxNjczMyBiNmUwN2MyNzI0ODc5MDBmZGQ5NzY5MGZmMjMzZDU4MzcyYWFkNWM2IGxlZ2FjeS10cnVuaworMTY3MzQgMjY2ZmI2MzAyZjMxMTdkNzFmOGMxNjczOTg3MjUzMDRjZDE3YmExOSBsZWdhY3ktdHJ1bmsKKzE2NzM1IDM5MjdhNGQ5YzJmYjAyZGEyNzE4ZjNjZjQzZDRiYzA5OTRhNmJjY2EgbGVnYWN5LXRydW5rCisxNjczNiBmMTk0ZDhiMjQ4NjU5MTJiZDE2YzE3NTUzMDFlOWJlMWEzODc3ZDcyIGxlZ2FjeS10cnVuaworMTY3MzcgNGVhYTQ2M2MwMzFhMWJkYjVlNzc5MWMzNzBkMDQxMDhlMDY4MmRkNCBsZWdhY3ktdHJ1bmsKKzE2NzM4IDYwYzdjZGEzNWNmYTQ4NzdlY2M1YTE1NDhlOTAzNjIxY2E4NTgwOGYgbGVnYWN5LXRydW5rCisxNjczOSA3MTcyYzJkOGI5MmI2NThmMmNkYzZkMmY0ZjIyMmM3MDczY2VmN2Q0IGxlZ2FjeS10cnVuaworMTY3NDAgNGQxNGVlZjhlYTA3NjU2OGJhNzUyOTA2NzJjNTAxOGFiNTgzMDIyYSBsZWdhY3ktdHJ1bmsKKzE2NzQxIDJlMGQxYWVhOWMzNzQxZTA0YWRmZjhkYTE1Mzc2MjBmNGY1MzJiOTEgbGVnYWN5LXRydW5rCisxNjc0MiA0NGIxYjgxOGYyOGU5MjU4MzMxYWRjNGI0ZWYzMjNiYjYwYThiZGU5IGxlZ2FjeS10cnVuaworMTY3NDMgMjVmZDk4NDZiZDU0MmMzNDRmMGNlNTgwNzM0MTIzZWI5YzJjYWUyMiBsZWdhY3ktdHJ1bmsKKzE2NzQ0IDQ2NGEyMTkwZDliNjc2YTY5MzU3ZWJmY2VjYmY5NTYzNDE5NzJkMDcgbGVnYWN5LXRydW5rCisxNjc0NSA4MDA4OWE0NTBjMzRkMGI1YmRhMWY0NmIxZTNhMDYwYjlhNDA2MjA5IGxlZ2FjeS10cnVuaworMTY3NDYgODdhZjJjMzQxYjc5YmEwYjU1OTEwNmQ2NTA0OGYyM2VhNDEzOWIyNiBsZWdhY3ktdHJ1bmsKKzE2NzQ3IGVjZTc1YjA3YjEzNjA4MDEwY2I1YTI5N2Y0ZTBjYTU2M2E1MjBlNTggbGVnYWN5LXRydW5rCisxNjc0OCBkNTZkZDE1MzBjZTExMzJjMjU3YzFlZmFjZjExMWM5MDUxYzM0NzBhIGxlZ2FjeS10cnVuaworMTY3NDkgMzFiMjVhYzFmMDE5YWYzMDNjNjYyYmExMDcwYWE3ZmYwMjdjM2MzMiBsZWdhY3ktdHJ1bmsKKzE2NzUwIDU3ODBiMTk4YWJjODk5ZWE3ODc1ODFiNDlmY2UxZDBiNzgxY2UzMjggbGVnYWN5LXRydW5rCisxNjc1MSA2NDhiYTQwNDQ0NTU5ZmI0ZmE1ZGY0MmE2NGJjZGY0MDQ0NTBiNGJhIGxlZ2FjeS10cnVuaworMTY3NTIgYWZkYjNmNDg1ZDhmOTNlMzg3ZjFlNDdjODZiNDYwZDI5M2M2MjlkOCBsZWdhY3ktdHJ1bmsKKzE2NzUzIDdhOTk0NTBkYTJkNjRmN2IyNTA1ZWZhNGM5ODZjNDQwNmM1NjI4YjcgbGVnYWN5LXRydW5rCisxNjc1NCAxOTFmMjBlMDQ3M2VlMWZmYzQwZThkM2UzYjZjNDhjNGVkYzU1MWU1IGxlZ2FjeS10cnVuaworMTY3NTUgMjY4OThhOThkYjZlZDBiYzFhZDA1MTQ4MjY4MGNkYjIxYmIwOTQwMyBsZWdhY3ktdHJ1bmsKKzE2NzU2IDI4YWZiYzVlMDc3MDA0YWU3MmQ3ZjE3ODAyMTMwNmI2NGU5ODY0NzUgbGVnYWN5LXRydW5rCisxNjc1NyAzNzBhZGU4OGE1MmE1NDRjYmQ2NDM5ODJlZjlhMmNiNzM4M2Q0NTZkIGxlZ2FjeS10cnVuaworMTY3NTggMWIxNTZlZjgyODFiOGJlYWJhYmZiNzkxNTU1ODljOGViZjgwZjEwYyBsZWdhY3ktdHJ1bmsKKzE2NzU5IDcwYzQ3YWIwMWE4NWUyYmVjZTMwYzg4NjA5MWJjMzc1NTY5MDE5YmYgbGVnYWN5LXRydW5rCisxNjc2MCA3NDQ1ZDk5ZGE4ZGQ4ODI1NTE0MjY2ZjNkZDE2Njk0YjExZDQ2YmUyIGxlZ2FjeS10cnVuaworMTY3NjEgODJhMjJkODI5NjA3MTBlYTk0Njc4MDdkMDVhYTQwYmQ4YjgwNDNhNSBsZWdhY3ktdHJ1bmsKKzE2NzYyIDQ5NGNmNWZiOGYxNzRlZjA0MGM0ODI1ZWI0Y2NkNmI2MjY3OWEzNzAgbGVnYWN5LXRydW5rCisxNjc2MyA4ZThhOGRmMGZlNzM0ZjJiOTBjOGFlMzA1NjdlZjAwZWEzOWY2ZWE0IGxlZ2FjeS10cnVuaworMTY3NjQgYjkwMDJkYTQ2ZjY5M2FjN2Y0NzI4Mzk4ZDc3M2FjOWE5MDQzYjQ1YyBsZWdhY3ktdHJ1bmsKKzE2NzY1IDBiYjBjNzE2N2QxZmM3YjBjNDcxZmM0YTkxYzAxNDg3YTJmODNjOTAgbGVnYWN5LXRydW5rCisxNjc2NiA4YmU3NTI0MDg1ZDYxOTRhNjM4MjkwNzI2Yzc3NGUzNGY0NjZjMGNiIGxlZ2FjeS10cnVuaworMTY3NjcgN2RkZTc0YzFlYmJlNGNmNTIzODc5N2U1ZmFiMTU3ZmJjOWVjNDBhNCBsZWdhY3ktdHJ1bmsKKzE2NzY4IGM5YWE0OWU4NzQ4ZTcxNWI0ZDUzNzJhYTAzMGQ4MWUwOWUxZDg3NjUgbGVnYWN5LXRydW5rCisxNjc2OSA3MDc5YWEwNWJiZDA1OGM5NTY3OTA5ZjY5NjM3ZGFhY2JkNGUyMDc5IGxlZ2FjeS10cnVuaworMTY3NzAgMmVlMGY0N2YxNGQzYjBhNDRkNThmNmQ2Y2JlZjYwYTkwNDNiMDFkOSBsZWdhY3ktdHJ1bmsKKzE2NzcxIGEyNTZjMTAxYmYyNzk1ZWMyMWVhMjQyYzkzNTU2M2NlNDg0Y2ZjYTYgbGVnYWN5LXRydW5rCisxNjc3MiA1NjAxNzU4MDBhMDdlNzEyZGQ4MjZkZjgwMzEwYjg5M2VjN2NmNDA5IGxlZ2FjeS10cnVuaworMTY3NzMgOTFkZGVlZDEyZmE3MDNhNmNjNDg3MjFiYmI3MGE3MWE5ZGM1MzA3MiBsZWdhY3ktdHJ1bmsKKzE2Nzc0IDdiN2VlNTg5MDFmYjBmMGE3ZTBmMmYwN2QwOTJjN2Q4OTA2YWQxZjMgbGVnYWN5LXRydW5rCisxNjc3NSA4NDFjZjkwMTJhYzNjYmZmYWExODJjYmVlM2I5ZDliZDI5YWJiNGM4IGxlZ2FjeS10cnVuaworMTY3NzYgNTVlMzk4ODIwNWIzNDgwYmNlN2VkMDVlZTBjYWUxNjhkNGUzYTA0OCBsZWdhY3ktdHJ1bmsKKzE2Nzc3IGQ5OTE4M2NkYmJkYzk3YTliYjkxODBmYWNmMWFkNzYzYWZkYWUyN2UgbGVnYWN5LXRydW5rCisxNjc3OCA0ZWFiZDdkMzkyNWZjOThjODk3NjBkZDEyY2VhYWIzNWU1YWJiYjQ2IGNucmktMTYtc3RhcnQKKzE2Nzc5IDgxNTVhOGIzMDQ0NGE0YTRhNmVmMGY1MGEzOTg3OThjZGZkMWE4ODYgY25yaS0xNi1zdGFydAorMTY3ODAgNmUyYzBkMGMzZmQ1NmQ0YWU5NzRhMDM0MTljMDA1Y2VhOGM1NDc5MyBjbnJpLTE2LXN0YXJ0CisxNjc4MSBkZTJiZmMxNWY5ZWNlNWE1YmU0NTMyNDJlZGViNGIwMDVlNjFhYzg0IGNucmktMTYtc3RhcnQKKzE2NzgyIGFhNDIwMjcwMjI1MjYyNzExZWQ2ZTAyNjcxMGExOGIyNWIwZjg5NzcgbGVnYWN5LXRydW5rCisxNjc4MyBjMjU4ZjA1ZWI4NWRjOThiMzhhMzk0OTVlYmY3YjE2MWQ3YzBiZWNiIGxlZ2FjeS10cnVuaworMTY3ODQgNGUyOGNhMzQ1Y2ZlZTc2ZmJlZDU1NWI5MWRjYmUzOTdlYTAwZmE5NyBsZWdhY3ktdHJ1bmsKKzE2Nzg1IDNlNmUzZDA1ZDAwYjdkNWYxNmNjODdiNmU2YWIzZGYzMGIwM2Q2MTIgbGVnYWN5LXRydW5rCisxNjc4NiAzMDcxM2Q1Mjg4ZGY0OWM0NDI1MmU5MDdiMWZhNGNiYmE3MmEwMjg4IGxlZ2FjeS10cnVuaworMTY3ODcgOGE0YTE3OTQxNGQ0YWE0ODQxYjM0MGVkMDljYmZmYWRlNTViNjZlNSBhdmVuZG9yCisxNjc4OSA1OGFjODMwNDAxYmQ1Yzk0OWZlMDUxYjBiNzk5ZmUzY2Q4Y2RiYjlmIGF2ZW5kb3IKKzE2NzkwIDVhZGE5ZmE1NDgwMTViZWI2OWFmNTA3MjhkYjhmMDM2NTJhMWY2NjEgbGVnYWN5LXRydW5rCisxNjc5MSBlYjlhMzYxNjNhOWVhYTk5NDMxYzllZDM0MGQ4ODYzYzU4NGE0MzE4IGxlZ2FjeS10cnVuaworMTY3OTIgYjJjZDY2ZTVlYTRjMjRiNzNkNTNjZjZiOGQ5MzJkOTFkMTA1OTg5NyBsZWdhY3ktdHJ1bmsKKzE2NzkzIDYzZGU3ZjAwYjViY2NiZTliYTk3Y2JjNDBhZWE0YzliYzhkNTlkYWUgbGVnYWN5LXRydW5rCisxNjc5NCA4OGY0ZTcyZDcyNDUzOWRkZDMwY2Y0NDM5ZGNmMDcwMGI3NjlhMWZkIGxlZ2FjeS10cnVuaworMTY3OTUgNzJmNjgyZWI5YWRiZTQxYjJhOTJlNTRkMzE4NTRhYmNjNzNlNzQyZSBsZWdhY3ktdHJ1bmsKKzE2Nzk2IDQzZjRmOGQxNTk3MWVhMjQyZmI5NGYzNTQ0Y2I0N2UyYWNiMzU5NTEgbGVnYWN5LXRydW5rCisxNjc5NyAxYjEwN2M5YmE3MDIxMzY3OWE3MWNjZWEwMDQ4YjY0OGNkNjcyMjgwIGxlZ2FjeS10cnVuaworMTY3OTggMmM0MjQzOTU5NGI3ZTgwMzQ5MTM2NjRiNjhkNTVmODY3ZDIxZGI4MSBsZWdhY3ktdHJ1bmsKKzE2Nzk5IDYxMzQ3ZWNiOWIwMTM3ZWU5ZmQ1ODY2NTQwM2IzNTY3ZjM2MzVkNWEgbGVnYWN5LXRydW5rCisxNjgwMCA0MDBhNWUzYWM3NmM5NGFhYmQ5NTE1OTAyODAyOGUzNTBjMjNjMjg0IGxlZ2FjeS10cnVuaworMTY4MDEgZjNiZmNlZTc0NWE3NjM2Y2RkZThiMzg2YTJlZGZiNWNhZTNiNTE3NiBsZWdhY3ktdHJ1bmsKKzE2ODAyIGU1YTc0Y2ZjYzk3MWMwNWViODIxYzY4M2M0ODk2NDk5ODUyMDllZGEgbGVnYWN5LXRydW5rCisxNjgwMyBmMjc5MmVhZDFmMDZlZTg4OWRmMjdmNzg4NmRkYjQ2NzE0MmUzOGZlIGxlZ2FjeS10cnVuaworMTY4MDQgYTk1NWZkNWRlMDM1MDU0OGRlYzdmNDBkNWM2YTNiNjRhMzQ5NTk4ZCBsZWdhY3ktdHJ1bmsKKzE2ODA2IGEyODRlZDIxYTBkZGFlNzFlY2Q1YTgwZjc3NDYwOWEyNTRkYmM3YjggTm9uZQorMTY4MDcgNzgzNGExMTNjZTI0ODAxMGRhYzA0Zjg0OGZhN2MzOGQ1ODYzYmY5MiBsZWdhY3ktdHJ1bmsKKzE2ODA4IDk3ZjUzODhhNmRjZTA1N2FmMDg1NmJiY2MyNDhhZDRhNmU3ZjQ3MjEgbGVnYWN5LXRydW5rCisxNjgwOSA3MTZlMWM0ZTNmNzg5NDcyNmY5MjNhOTA3NDNlMjUzN2E2MTQyODUwIGxlZ2FjeS10cnVuaworMTY4MTAgMmU4N2JiYjg3YWQ0NDA1YzZkMjExOGRlODJlMDcyNTZjMTE4MWI4NiBsZWdhY3ktdHJ1bmsKKzE2ODExIDY1YzFhYmY0NTFkYzA1MzBmNzJmM2Q2YWU2NTU4MzhlOGViYjdjNGUgbGVnYWN5LXRydW5rCisxNjgxMiBkODA2OWVmY2Q3NmU0ODM0N2M4MGZlYzU3MDlmZGY5OTc1ZmRiYzhiIGxlZ2FjeS10cnVuaworMTY4MTMgMTQzZmZiZjg3ZTUxYmIxYjIwYTE1ZThhMTVmMTJjZmQxZTM5OTc3OSBsZWdhY3ktdHJ1bmsKKzE2ODE0IDMwZGJiMzBmZjAxOTE5YjBlNTVlZDJmMGU1ZTU0NDVjYzhlNjI0YzcgbGVnYWN5LXRydW5rCisxNjgxNSA0NDNmM2M3N2Q4OGNlZDY4NzdhMmQ5ZjMwNDBkYWEwMGJiYWE4MTY3IGxlZ2FjeS10cnVuaworMTY4MTYgNTVlNGY0Mjg5ZTE4ODMzYjU3MDJmNTE1Zjc1NzNhN2YyMzM5NGU0NCBsZWdhY3ktdHJ1bmsKKzE2ODE3IDczZDk3NmFmYThkNDNmNDllOWNmMTcxNDJiYjExZTYwYzU5NmM1ZTggbGVnYWN5LXRydW5rCisxNjgxOCA1OTFhZmUyZmM4MjMwYjYwOTRlZjczMWMwY2Q2MTBiNjc5MWJhMmExIGxlZ2FjeS10cnVuaworMTY4MTkgZjM2OTM4ODc0Y2U1YWJiOTgxMGQ3MmYxMzExZTA1MTg2OWY3ZTEyNiBsZWdhY3ktdHJ1bmsKKzE2ODIwIDlhMDUyNjk2Y2ExMjM3YmI3MmNkMTY1NDNkMWUxNjRmNzNjMTU4MWEgbGVnYWN5LXRydW5rCisxNjgyMSA5Y2RiNmY5NzlmYTU1MGFmZmI1NmFkNTlmOGEzZWQ4YTNjYmVjMDg3IGxlZ2FjeS10cnVuaworMTY4MjIgZWQzNjlmMGFhMzJiMzk2M2FiOWE0M2NkOGEyZWM1MzRiZjdkMWRiOSBsZWdhY3ktdHJ1bmsKKzE2ODIzIGVkYTA5ZjgyNGE5ZmI5MDhjNmM1MWE4ZWI4NTgyN2E3ZDE5MTE3ZGQgbGVnYWN5LXRydW5rCisxNjgyNCA2YzkxYWQ5YzBlMDZjM2NlYjg1OTUyZTg4NDczYjRhOTg3OGE3MWFmIGxlZ2FjeS10cnVuaworMTY4MjUgZmFhOTcwZjE1NDBmZjk0ZWI4NzcxZWExZDBjMjFlMGJmZTliODBiMCBsZWdhY3ktdHJ1bmsKKzE2ODI2IDQ5YzdhNGRkOWY2MTVkNzQzZDMzNmQ2Y2ViM2RlMzNmZWE2ZWZkYTEgbGVnYWN5LXRydW5rCisxNjgyNyA0OWM4MzA1MDA0ODAxZWRjNDFhYWI1OWI5M2FhODgxMWFlNWNiODQ3IGxlZ2FjeS10cnVuaworMTY4MjggODJmNzk2MThiNDQyODUxODA2YzVkMGE0NDYxODMyNjYxMWJhMzc4OCBsZWdhY3ktdHJ1bmsKKzE2ODI5IDZjN2ZhNTIzNzI2ZmM1NTZmYWFmMTI5OGE3MjI2NjEwOTM1ZDMxNWIgbGVnYWN5LXRydW5rCisxNjgzMCAzZDY4ZDViY2NkNDA2ZTg4ZDViNTQ3YWJlOTg1ZDVlMmQzZWYxZjg5IGxlZ2FjeS10cnVuaworMTY4MzEgOWI5NDYxYTY1NmRkYzU1N2FjMzlhNzM5ZWM1YTI0YmRjOGU3MzdlYSBsZWdhY3ktdHJ1bmsKKzE2ODMyIDlhMjkxODg5YWI1ZjE3ODg0NjdjZTI2NTAxZDlkNzcxZmM3YWVlMDkgbGVnYWN5LXRydW5rCisxNjgzMyAxMjhmNjQxMTkxYzMzYzg5NTMyNWJiZjgzYTc3ZWZjOWM2NWRhNDkxIGxlZ2FjeS10cnVuaworMTY4MzQgMGQ4MDVlMjM5ZDhmNDRjZmUyM2E2ZDg2YzlkNWY4OGVhMzc2YzI5YSBsZWdhY3ktdHJ1bmsKKzE2ODM1IDU5ODRjM2Q3NjFmNzg0NDJlMjgwOTAzNGM5NTlkODY4YjgxOTNlNGUgbGVnYWN5LXRydW5rCisxNjgzNiBiNGIyNjEyZWEzMzMwZmQ3Y2JlY2ExZmM2YTQ4NjVjYzVhODU2ZjE2IGxlZ2FjeS10cnVuaworMTY4MzcgNWIzNGI3MGVjZjIyZmRiNGE5M2YwOTUxMjBiMmY1OTQ5ZmEzNTFkMiBsZWdhY3ktdHJ1bmsKKzE2ODM4IGQ0NDYwM2YyYjkyODliNGE2ODI3OWUwNTBkMzE3OTJkMDgxODczYmYgbGVnYWN5LXRydW5rCisxNjgzOSA3NDAyOTBhNTYxOTBhMTMzY2QzZmQyNTMzYjJlYmY2NzdhNDBkYTgyIGxlZ2FjeS10cnVuaworMTY4NDAgMDQ2MGNjY2VmZTRlM2I2ZTQ4YzZkZjNmNWI5ODE5ZjkzNWFhZjAzOCBsZWdhY3ktdHJ1bmsKKzE2ODQxIGFlMjI4YTY0MjkzZTEyZGNiYzEyNDZkYWEyYjZiMWE4NDVjNzhlYWMgbGVnYWN5LXRydW5rCisxNjg0MiAyMTljZTk2MjIzNTI1MTRkYmYyMjQxNzM3MzllZDEzMThiYTVmMzM1IGxlZ2FjeS10cnVuaworMTY4NDMgNjdhNTQ0OGM5YTBmMjVhNzQxYzZmMDVkZjAxZmU0MGU3ZGVkNmMzMyBsZWdhY3ktdHJ1bmsKKzE2ODQ0IDViMGYzYzQwMDYwZmMxODIwMmZhODJmNTJhNGQ0YzY2MjkwYzgyN2MgbGVnYWN5LXRydW5rCisxNjg0NSBmNWQ4ZTczZDc3YjdmNWJiYjY1OGE2ZTQyZGFkNzYyMDA1ZTUxYWZjIGxlZ2FjeS10cnVuaworMTY4NDYgYTk2ZDdjNDVkOTYxZjMzNjI5M2FhYWVjZjI1NDY4MTlkODJhMTFlYiBsZWdhY3ktdHJ1bmsKKzE2ODQ3IGQyNmNjNWJkZDI0ODIxZTZhYTZiNTRiYmU1MDY0YTQxYzhiZGRmMmEgbGVnYWN5LXRydW5rCisxNjg0OCA3N2E2MTVjOTIxN2UxOTllOTNjZDY2NDcwOGVhMWY4NmJjZjQ3ZmQ1IGxlZ2FjeS10cnVuaworMTY4NDkgM2RkZmEyZDY3YmU0NjdjYzJmNDVjYTBiMDFkYmU3YmYyNDFhNWJiYyBsZWdhY3ktdHJ1bmsKKzE2ODUwIDkxYzY1OTk2OGE4MDE4ZTI2MWZmYjNkOGUyNGE2NWFmZWEyOWRmOGQgbGVnYWN5LXRydW5rCisxNjg1MSA3OWJmNmIzOGI3ZDVlZTk2OGI2NDg5NzE4ZDk0NzMxZjlkMjA4ZDFmIGxlZ2FjeS10cnVuaworMTY4NTIgMzIwNDVkNDIzYTc4NjlmMDAyNTcyYjFiMmZiZWFiMzQ5MzdjNTk3ZSBsZWdhY3ktdHJ1bmsKKzE2ODUzIDkxZjg0N2E3ODNkMmEwMjdmNWY1YzgyNThmYTBjYWZjY2ZlN2VkOGEgbGVnYWN5LXRydW5rCisxNjg1NCAxODM4NTE3MmZhYzBiNzA5OWJkMmQyMjY0ZGY2MTRlZDQ0NjZmMDgzIGxlZ2FjeS10cnVuaworMTY4NTUgYTI5YThjZjVlNjZkZDNmN2YxNjc3ZGViYjUzODI5MGYxNjNkNjU3NSBsZWdhY3ktdHJ1bmsKKzE2ODU2IDgzMDgwNTM5ZjdiNGI4NDk5MzhhYzE4YWI5YjI2ZTZhNGQzYWI4ZjQgbGVnYWN5LXRydW5rCisxNjg1NyA1M2FjM2UyMDYyZWZhOTY4NTVmOTAzNjJkZDEwNGNkZjM3OTcxZDk4IGxlZ2FjeS10cnVuaworMTY4NTggOThlMzI1NTQ4Njc5MDI2NGMyZmQwNmQzNzdjYjY2MjQ2NGY1ZjI2NCBsZWdhY3ktdHJ1bmsKKzE2ODU5IDAyMzQ2ODExNzUxNGY0OGVkZTcyYzE0MjEyNDU1YmQxMDQxNDU0NmUgbGVnYWN5LXRydW5rCisxNjg2MCBhOTA1YzVhYTA2OTFjZGI5ZWFhNmM0NWVjMTcyZjZjZDliOGE4ODZiIGxlZ2FjeS10cnVuaworMTY4NjEgYzQ0NDRmNjhlYmY5Njc3M2ZiZGFiYzlhMDg3NTBkZWEyYmViZDczNiBsZWdhY3ktdHJ1bmsKKzE2ODYyIDFmOTRhMTFkMmI4MGJmNDg3ODE0YmI2N2E2NTA4ZmVjZWQxYWYzODMgbGVnYWN5LXRydW5rCisxNjg2MyAwYTg3YzViNzVmZTNkNWVmNGQ2NGE5Y2RiMjNmNWExYmVmZGM2NDEwIGxlZ2FjeS10cnVuaworMTY4NjQgOGNmNTYxNDdkN2I1ZGJmOWZiNDc2MjQ3ZDFhOTg1N2YxNTQ5N2NmOCBsZWdhY3ktdHJ1bmsKKzE2ODY1IGI5MTMxMjU2MTljOGJiNzQwZjUxMDE2ZmQxMDllMWZhYTU3MTY5Y2IgbGVnYWN5LXRydW5rCisxNjg2NiA2ZTJkYmE0NWM4M2U1ZGU0MTNjODZjNGM3YmNkNzcyNTQ0OTk3OGE5IGxlZ2FjeS10cnVuaworMTY4NjcgZmVlMGY0MDJlY2NiNGUwODU4OWI4NzExY2IxY2JiNzczMGY4YTI4MSBsZWdhY3ktdHJ1bmsKKzE2ODY4IDI3NWJjNGY5ZDUwZDE3NTg4MzBjZTk0NjE2Y2QxODc2NWZlZTg0NzUgbGVnYWN5LXRydW5rCisxNjg2OSA4MGE0MTkyOTQyY2U5NWYyM2I1ZTNjYjQ2NDlkMjg0ODIwMTU3MjIwIGxlZ2FjeS10cnVuaworMTY4NzAgZTgzMDE2MTJlN2Q4MGI5Mzc1NzIzZTlhYTcxZjJmYzcyNjY2NjM1OCBsZWdhY3ktdHJ1bmsKKzE2ODcxIDdhNmM1ODY5ZjQ1NjY2NDJkOTQ5Y2NkYTBlY2M2NjBmZDE2YjVlNGMgbGVnYWN5LXRydW5rCisxNjg3MiA2MzY1YTg1YmY0ZmIxY2VmMzkwM2Y4MDMzODU2YjRmYzIyYjcyYzBiIGxlZ2FjeS10cnVuaworMTY4NzMgY2E4ZGMxYmFlNjdkN2RjOTdhNzdmMWUyOTRiYTk1YjA5MDEzMjZlZSBsZWdhY3ktdHJ1bmsKKzE2ODc0IGY2OWEzNzI0MDlmYzBmMDEyZDI0ZTNkZjg1NDBiMjliZGRkNTRhMzUgbGVnYWN5LXRydW5rCisxNjg3NSBkMDM0OGEyNmIwOTM5ZWJhYmNhNjMwNWE3OGQ0Y2E2YWUwZjFlMDUwIGxlZ2FjeS10cnVuaworMTY4NzYgZGMyZGVkY2E5M2Y3MGVjYjFmZjU3MWM1NjBlYTA3NGM2ZTdhMDkyZCBsZWdhY3ktdHJ1bmsKKzE2ODc3IDY1MzFmYjFjODc5ZmU5MTg4N2NlNzEwYzIyOTJiYzg5YTZlOGYwMmQgbGVnYWN5LXRydW5rCisxNjg3OCBjNzIyYjRjNDIyOWE2MTE1NGM5YmZjMmVmYzFjY2RkYmY2M2RiY2UwIGxlZ2FjeS10cnVuaworMTY4NzkgMTdiN2ZjNDQwMTk1YmQ2YTA3Mzg4OTVjNjcyYzI5OGU0OTQ0OTBhMyBsZWdhY3ktdHJ1bmsKKzE2ODgwIGM3ZmU3NTY5ZTRlMTc3ZDc1NmZmZDI2ZjQ1NDVkNzFjMmFmNzBiNmYgbGVnYWN5LXRydW5rCisxNjg4MSBjNTBmZWZmYWU4MjIwOTQ2OGU0OTMzNTU1MDhmYjBjMmVjZDNkYmE5IGxlZ2FjeS10cnVuaworMTY4ODIgMjVlZWE4ODA0N2U5ZWNmY2NhYzI3OWFlMzM2MDlmYmVhYWI4MWRjMyBsZWdhY3ktdHJ1bmsKKzE2ODgzIGRjMmRiNDU2MmQwNjAyZDdlODRjYzRkOWYyZGExNDQ5MmRmMWUyNDEgbGVnYWN5LXRydW5rCisxNjg4NCAwMzQwMWFmMzZiNWMwYTEyZTc5YjUyNzY0MDNlMzhkYzllN2NhMTRhIGxlZ2FjeS10cnVuaworMTY4ODUgOTIwZmMyODY4NTQzOTZmZDJhMTM1Y2E1YWM2MzRjZDJhMzFiM2U3MiBsZWdhY3ktdHJ1bmsKKzE2ODg2IDI2NmQ3ZWFmMDY5ZThlNzJiMDEwZTY1MTY5ZWVlMWQ5ZWFiY2NhZTYgbGVnYWN5LXRydW5rCisxNjg4NyAxZmNmN2I0MzhjYWI5YjQ5MjhiM2IyY2EzMGFmOWNjNTQwNjkwZjZiIGxlZ2FjeS10cnVuaworMTY4ODggMDA4OWIzOWZlNDljYmMzMjM4OGYwYWFhMWY3ZTYyMDJhMTE1YmU5NyBsZWdhY3ktdHJ1bmsKKzE2ODg5IDMxNGVjNTllNGUxNGNlMmZlNThmYmRjNWVlMzNjMWZmZWI0NmRjM2EgbGVnYWN5LXRydW5rCisxNjg5MCA3MTNkZDc2YmUzN2JhYzc4MmE3NjIxYjdkNTM4ZGFiODM2YmZlNTRhIGxlZ2FjeS10cnVuaworMTY4OTEgYzY0YWM4M2QzZjE4MjI1ZGU0OWE0OWE3ZTk4MjhlYTQzMTkyYWRmNSBsZWdhY3ktdHJ1bmsKKzE2ODkyIGY4ODQzMTAxYzk0M2I4YTdiNTNlMTI0MmYxZTFlZDZkYmUyZTM0NWUgbGVnYWN5LXRydW5rCisxNjg5MyBiNjc4NDkxZjdlMTE2Zjg1MDNkMzkwMzJkYTE5NGMyN2IzZWI2NzQ0IGxlZ2FjeS10cnVuaworMTY4OTQgYjY1MmE5YWE5NGYxMzM1MWExMzZjY2NhNTE5NjdhNzg1NmQxZWM1OCBsZWdhY3ktdHJ1bmsKKzE2ODk1IDUxYzJlZWQ2MDE1OTBjZjgzYjI1ZjU3NGVhYTIyN2ExMTYxOGRmOGEgbGVnYWN5LXRydW5rCisxNjg5NiA1Nzc4ZjkzY2YyMmI0YzIxODU3ZWY1NTU0MjA1ODEzOWFlMGRhMzQwIGxlZ2FjeS10cnVuaworMTY4OTcgZGU3NDIzMDNjNDU2OTEwZDZkZTFiNjVhNTNhMWZjNmIyNTIzYWYwYSBsZWdhY3ktdHJ1bmsKKzE2ODk4IGU2NzhlNTgwNDliNGM1NDBkNjEzZjU3MDlmMTcxOWU4YWZiMzVkOWMgbGVnYWN5LXRydW5rCisxNjg5OSBmMTliZWE2ODFiNjY3YzQzODRlODQ5ZmRmMDVhOTc5OTg2YzNiMjE1IGxlZ2FjeS10cnVuaworMTY5MDAgMDJhYmY3NzE3Yzk2ZTE3OWQ5YzNkNGU1MTAyZDVhNmIwNWUzZjk5MCBsZWdhY3ktdHJ1bmsKKzE2OTAxIDBhNjNiNDc4OWRmY2U0YmUyMGM5ZGI1YTZjZGI2YjA1MzYwNWFmNjYgbGVnYWN5LXRydW5rCisxNjkwMiAwNjEyYTFjZmJiZjY4OTUyYTRlZTIxNmFhNDVhZTIwNjVhMDc0ZGJmIGxlZ2FjeS10cnVuaworMTY5MDMgNWJmNTYzOTI0MTk0MzgzNjNmNzFiZmUyMWJkNTUyNTVkMWMxN2IyOCBsZWdhY3ktdHJ1bmsKKzE2OTA0IGQ2MzhmNTM1ZjQwM2M4ZTE4ZWVlOGE4NGMzNTc5NGNiMjIwODAwYmUgbGVnYWN5LXRydW5rCisxNjkwNSA1NzllNWM3MDM1ZTJkMDAzOWQyYjg5YTIyNDUwNzlmMjYwN2FlNGNlIGxlZ2FjeS10cnVuaworMTY5MDYgOTUzNDYxOWRhYWExMmY3NWQ2NWUzNjNhMDA0ZTg5NDNmMzI3YjE3ZiBsZWdhY3ktdHJ1bmsKKzE2OTA3IGQzZjViNDUzYWRlODRlMWRlYTZhZTIwNTcyNmZiZGYzODA1M2U3NjkgbGVnYWN5LXRydW5rCisxNjkwOCA0NjVjN2MyZThmMjE0NmQ3NjFmYzQwNjc2MDBjNmJhZDQ1ZDRjODY1IGxlZ2FjeS10cnVuaworMTY5MDkgZWM2YTBiNGE2NDc5YTU1ODE3NTUxODJlMzZhN2RiMDY0MjBhYTFiYSBsZWdhY3ktdHJ1bmsKKzE2OTEwIDYwNjcxNGZhZTFiNTA3YzkwOTFhNjgxNmJiYjExNThlZTNiZmFiODAgbGVnYWN5LXRydW5rCisxNjkxMSA4OGQxMWY0OGEzODQ1YjQ3ZjExOGU5MjhmNzI4YTVlZTQ2MmY0MDYzIGxlZ2FjeS10cnVuaworMTY5MTIgMDNkYjdiMjM5MmFlODhhNDAyYjgyNDBkOTI4Y2UwNTkxOWQ2OTY5ZCBsZWdhY3ktdHJ1bmsKKzE2OTEzIDc0NjM4ZDIwYzRmZDBmNDE2OGY0ZWNlYzM2ZjEwNTQzMmVlNjkxNGUgbGVnYWN5LXRydW5rCisxNjkxNCA0NGU2NjZjYzhjMDdiZGVlYzJiYTE0NWI3ZDk4Y2I2NjFiZGYxM2EwIGxlZ2FjeS10cnVuaworMTY5MTUgNDY4NDgxMTM1YzQ5MGIxYTMxOTQxZjU1NTBhZWVjOTlkOWVhYmJhMyBsZWdhY3ktdHJ1bmsKKzE2OTE2IDJkZTBjYzE3NGMzYmU5MWFlNDU1MDE5YjBhOTVkNDJlZGRkNjUyMjcgbGVnYWN5LXRydW5rCisxNjkxNyBlMmVkNjliODJkOGQ3MTgxODUyOGUyMWM5ZTYwYzA0ZjhmYWZiOTc1IGxlZ2FjeS10cnVuaworMTY5MTggMjk2MzZmMDIwZDRjN2I0YTViM2FmMzQ0YzVkY2Q0NmNhM2E5MWI0ZCBsZWdhY3ktdHJ1bmsKKzE2OTE5IGY2NTdkYzhmZjI1ZTkzYjg3NzMwNWJiY2ZjNDVlMzYwMTkxYmIzMjYgbGVnYWN5LXRydW5rCisxNjkyMCBkYTY5YjdkMWYyMGYwYTZjYmE0YWYyZjAzNmYyYjdmNDljYjIwMjlmIGxlZ2FjeS10cnVuaworMTY5MjEgZDgwOWI5Yjc1Yjk5MzkzMTlmNzQ4NWU0NmIyNjIyZWI5OTU4MGQwMSBsZWdhY3ktdHJ1bmsKKzE2OTIyIDRkYWM5ZTMxNDliZWFjOTkwZmYxMGU0NDY4YTEwZjkyYjllNjY1MWYgbGVnYWN5LXRydW5rCisxNjkyMyBlOTQzNDJlZWE0Zjg4ZTQyZDVmZDIzYTkzZDJjM2EzMTE2NGRlYjhhIGxlZ2FjeS10cnVuaworMTY5MjQgMTdkMzEyODQ3OGMzYjkzZjFiOWQyNTg4MzhkYjU0OGQxZWQ4OTA0NyBsZWdhY3ktdHJ1bmsKKzE2OTI1IDMxNDhlZmU1NjA2ZmMxODE4YzMzY2NlMzgxMzVmMmY2MTEyNWUwODggbGVnYWN5LXRydW5rCisxNjkyNiAwYWJmY2EwMDM1ZGNjODMyZmExNWMwZTJkMzI1MGNjMDgxYzhmYWNjIGxlZ2FjeS10cnVuaworMTY5MjcgODdiOGYwZWE1MGU4ZDE1NjA2NTM0OTYzYjdiZGVjMThiYjZkOTYwYSBsZWdhY3ktdHJ1bmsKKzE2OTI4IDNlYTIzZTNjMWIwNmUyYTY0OWUzMjY5ZDJhOTlhOTI2NDFiM2NhYmUgbGVnYWN5LXRydW5rCisxNjkyOSA0ZWFjYzBjOTEyMDkwYmEwZTU2ZjA2MGQ2MmExZDBlMDA1MmViOWEwIGxlZ2FjeS10cnVuaworMTY5MzAgM2EzYWRmZGRjMjlkMWYwODIzZTYxNWFjNjc1N2I5ZWNhNzY3MzJmMiBsZWdhY3ktdHJ1bmsKKzE2OTMxIDBmODM0MWRjYzNjYmM2YjRhZjY4NmZiM2Q5ODk5NjZmZjBjNDVhZGQgbGVnYWN5LXRydW5rCisxNjkzMiA5Mjk4MDkyMGQ1ZWQxMGRlNWI1ZmVjNzFmNzExMTA1MTZlN2YxZjg0IGxlZ2FjeS10cnVuaworMTY5MzMgYWM4ODA5OTU5ZDAxNjQ0MTQwZTcyMWRjNTE0OTI3ZTExN2ViOWVhMCBsZWdhY3ktdHJ1bmsKKzE2OTM0IDQ0ZjRhODRhODBhODI1ZDhiZjBjMDgzMDk0M2Q1NjQ0NTE1MjM1MmUgbGVnYWN5LXRydW5rCisxNjkzNSBmNjMzOGQ3NGRjYTEwN2FiYTg2ZTQ3ZTZjZTVhMTllNTg2YTFmYjE5IGxlZ2FjeS10cnVuaworMTY5MzYgODBkNDY2OGYxZTEwMzdiNTJkNDg2YjVlOThkYWY0NTM4NDhlZjBmYSBsZWdhY3ktdHJ1bmsKKzE2OTM3IGMxNGNhMjBkMWZjOGQ5NWI1MTFiMjJmMGYzYjBlZGE4ZTNhOWRjODAgY25yaS0xNi1zdGFydAorMTY5MzggNzNjNTY0ZTRhMGYzNTI3YWViZGU2NmJjZmI0YjI3M2U0M2ZiNWU0NSBsZWdhY3ktdHJ1bmsKKzE2OTM5IGU4YWU3MGMzYWJiNDNhMTc5Y2Q5ZDJiMTc3MTRmZTI4N2VjODlmNjUgbGVnYWN5LXRydW5rCisxNjk0MCAyNjg5NjdjOTkzNGEwNTg2NDE2YzNiNDg2ZTc5YmY1MWI5NzE5NjM1IGNucmktMTYtc3RhcnQKKzE2OTQxIGRjNWY2N2U4YTJhZjE5Mzg5MGUzYmQwNTVlYThmOGZkMDFlOTFiZjMgbGVnYWN5LXRydW5rCisxNjk0MiBjZWY0ZGE0MTQ3YzgzZDU4OTg5MzkyZTZmYzc4YTBmNWNkZTE0NTc3IGxlZ2FjeS10cnVuaworMTY5NDMgZmQzZjhhY2YxMDNkMWU3YTNmOGYwMmVlYWQ5NDk0MjUwMzU1N2ZiMCBsZWdhY3ktdHJ1bmsKKzE2OTQ0IDQxZWI3NTVlNGVkMTUzZjY1OGI4NjNhOWNlNmFiYjEzYzE1MGMwYzUgbGVnYWN5LXRydW5rCisxNjk0NSAyNjc2OGUyMWFjZjkwZWNmNTAyZDVkNWM2NTQ5YTRmNjkzYmMzNmE0IGxlZ2FjeS10cnVuaworMTY5NDYgMDM5NTgzYzA5MGM0MzQyNGI5YTg0NDMwYzFlNzk1ZGNmZDJlOWRlYSBsZWdhY3ktdHJ1bmsKKzE2OTQ3IDJjMmFlODZkZmU4NzcyNTlhYjA5MWU5YzljM2E2MzU0MTYwM2FhNmYgbGVnYWN5LXRydW5rCisxNjk0OCA3YWFkN2Q5YjYxNmU5ZGRiZGRiYmEwNGYyZmJlYTk5NWEyMDU5ZWZmIGxlZ2FjeS10cnVuaworMTY5NDkgNDQxZGEyYzVkZTQzYTk1M2FjYjY1YzY1OTc2NzI4Zjg2YjY4OWVkYyBsZWdhY3ktdHJ1bmsKKzE2OTUwIDQ0MjEyMzM2ZDcxZWE5N2VmZTdhZTIzNzQzMmY5NzQzMDM4YjQ3MTIgbGVnYWN5LXRydW5rCisxNjk1MSAzZWIxMzVkNjJlMmFlZDJjMzFmZGMzMjdjZDNjMmIyNTBmYTg2ZmY4IGxlZ2FjeS10cnVuaworMTY5NTIgNzZlNzMzODljMzQwNzAxMjBlNjYyZjI3ZmU1ODI0YmYxZGU1MGU3MCBsZWdhY3ktdHJ1bmsKKzE2OTUzIDk5NmNjMDY3NWRiNjc4NjllOTZlMDI2YmY5ODRiZDZiYjVhM2QwZDMgbGVnYWN5LXRydW5rCisxNjk1NCBhYWUzN2RjOTlmNTc1NTcwOGNkMWEwMjk2ZTYyYjZlMjNjNGVhMDkxIGxlZ2FjeS10cnVuaworMTY5NTUgMDcwOGNhYzU5ZGVmM2E2Njg0NjgzM2JmNWQ4NmY0MjY0ZTQwNDQ5NCBsZWdhY3ktdHJ1bmsKKzE2OTU2IGY2ZTVjYzJhZjZmMTk3YTQ0MzAzMTViMGZlZDM5NWY4OTE2NWM4ZjIgbGVnYWN5LXRydW5rCisxNjk1NyAzMTE2YjBiOTEyZTk3NWM2MTg2OWRhNTllNDYwMDRmMjcxNjUxMDc1IGxlZ2FjeS10cnVuaworMTY5NTggZjdhOGM0MGIzODgwYzQxMzczMmEwMTFlNGUwNzNhNmM2YjNkZTEwMSBsZWdhY3ktdHJ1bmsKKzE2OTU5IDQyODcyOWZmODgyNDlmZGViNTE5N2I2YTAwMWRhNGNmY2Q1Nzc1MmEgbGVnYWN5LXRydW5rCisxNjk2MCBmNzA0MjRlYmIzOWI0YTFmNDhjMjI0MDU4OGRiNGZlOGYyOTJhZTg1IGxlZ2FjeS10cnVuaworMTY5NjEgMjJiNTkwZjhjZjUzODI0MTBlMGMzNWQ0MGIwM2ZiMGVhOTM5MDNjZiBsZWdhY3ktdHJ1bmsKKzE2OTYyIDMxY2RhODdlOWZmNGVhNDczMThhNjhjNDNmOTdlZGQyNzMxYjBmMmYgbGVnYWN5LXRydW5rCisxNjk2MyA3M2U0ODg0NzEyNjMwOGIyMGM3ODk5ZjkyMWRhOWFiMDUyODZiZTNiIGxlZ2FjeS10cnVuaworMTY5NjQgZjVmODc4NGE0YzI3YzhhNTEwYWUzZGRlZmIyM2Y3NDQ3NGZlNWE4OSBsZWdhY3ktdHJ1bmsKKzE2OTY1IDIxZWM2OWE1NjIyODg2M2Q4OWY4N2M2ZDQ5N2FkMjE2ODk2YTk1ZWEgbGVnYWN5LXRydW5rCisxNjk2NiBiOGU1ZTkzMzgwMWUzNmFmYmQzNWM2OGM4NmZiMDNlNjg3MGE2ZmQ2IGxlZ2FjeS10cnVuaworMTY5NjcgOGRjZGRjZjEzMzBhNzdkNTgyZTBiODg5ZmE1MTIwMjNmNDg3MjkyZSBsZWdhY3ktdHJ1bmsKKzE2OTY4IDMwMmRmZDUzYjNjOGZjMjI1OGFkODhiMjE3NTIwYWQzNWE5YzYxNzggbGVnYWN5LXRydW5rCisxNjk2OSA3MmQ4YTNiMjAzYjE0ZjZiMWRiNmY0MzQyOTkwMmE0NWU1NGU3NzMwIGxlZ2FjeS10cnVuaworMTY5NzAgM2RhNWJmM2M1ZjE1NzQ4NjRlMTg0M2MyNDFhZTgxODZiN2VkYWYxYSBsZWdhY3ktdHJ1bmsKKzE2OTcxIDQwNDQ3YjY3MjA2NGI0MjA0OThlOTZhNzAzYTU0YjIzMDllMGI1MTIgbGVnYWN5LXRydW5rCisxNjk3MiBlYzNlMGZlMTdiM2Q3N2E5OWMzOTg3YzU1OWY2NGQ0MzIyMmQ3ZWMwIGxlZ2FjeS10cnVuaworMTY5NzMgZGFkNTRkNDRkOWVjYzI3MzQ0NjQ3MWJlMTM4ZmI5NjczOGZlOTQzYSBsZWdhY3ktdHJ1bmsKKzE2OTc0IDA1MWRjZDdjZDE5OTFkZTllMTZlZDAzMGFhZTZiMWYwNGJjMGU2MTEgbGVnYWN5LXRydW5rCisxNjk3NSBlN2M4YjU5OGZmNzVmYTIzOTUzNjZmZDVmMjFkODBjNzQxMjQ4NWYzIGxlZ2FjeS10cnVuaworMTY5NzYgYzEyZTc5NmJjNGI2NzViMDg0OTA5NTA2NmIxZTBmNjA0YjdlZGE2ZCBsZWdhY3ktdHJ1bmsKKzE2OTc3IDZiZjA2MWEyZmM3ODAyZjc2YWVjNjNiNmVmZDNmODZiNjc1ZjcwNjEgbGVnYWN5LXRydW5rCisxNjk3OCA1NDY4YjZlM2I5NmE3ZDE3ZjU5YjA1NTFmNDc1MTRkMDgxOGRiNjU1IGxlZ2FjeS10cnVuaworMTY5NzkgNTJmZDQ5NmQzNTMyMDljNTNmN2E3YWMwMmZjMDY0NzUzMTU3YjhkOCBsZWdhY3ktdHJ1bmsKKzE2OTgwIDI3ZDdkODljNzc0YjEwMDAzYThlODMzMzBiYzYzZjY0NDRmZjA2MjQgbGVnYWN5LXRydW5rCisxNjk4MSAxYjlmZDBjYmQ5MTQ5NDdjYzQyMWJhN2U0NWFhMDkzZDdiYTlhZjAwIGxlZ2FjeS10cnVuaworMTY5ODIgZGJhNGFlYzk3MGU2Y2RiNTBkMTc2NTEyYzFiN2YwYmM2MGFiNTIxNiBsZWdhY3ktdHJ1bmsKKzE2OTgzIDAxODQ2NTY4ZDE0N2QxNjcwN2VkOTU5MmQ4NjliOTA2Y2YxYWRkMGYgbGVnYWN5LXRydW5rCisxNjk4NCBlOWMyZjgzMGY5YmE1MmJmNTk2OGNjN2NkMjY4ZDJjZTcxNzVhMmRlIGxlZ2FjeS10cnVuaworMTY5ODUgNTFhMzNhM2IyYmE5MzU0NTdmZDVmYzg2Y2E3OWRlYTE0ZjBjN2E3MSBsZWdhY3ktdHJ1bmsKKzE2OTg2IDkxZGVhZGZkYWUzNmJhYWU2YTJhZDdjY2UyZjlmNjQxN2MyMjM3YTAgbGVnYWN5LXRydW5rCisxNjk4NyBiOGVhZGVlZDhlZDM1MTgwMzY2NGE2Yjg3OGYzOTkxZmY3M2FmMzkwIGxlZ2FjeS10cnVuaworMTY5ODggMDE5MjY1YjNhODU2NTljNDI2OWE5Y2FkN2Y1Mzg4MDBjZGZmNmFmMyBsZWdhY3ktdHJ1bmsKKzE2OTg5IGM1NjM3MmFkOTM0MzVmMWZjYzVjZGM1MGViNTk5MGUxMTM1MGExNWIgbGVnYWN5LXRydW5rCisxNjk5MCAyYjZhNjM3NTliOTdjZjk3ZjNlN2ExODQ1ZDU3ZjFmZmQ0YmM2OGFjIGxlZ2FjeS10cnVuaworMTY5OTEgZjY2ZTg2M2EyYTViMWU0MjdkNmZjMTcwNTIzYmVjMjQyY2UyYzY5NiBsZWdhY3ktdHJ1bmsKKzE2OTkyIDM1Yjc5ODliYTIwYzhhMTUzYTQ3YzAxNDhiYzYyNGZjMWQyZWZiMDcgbGVnYWN5LXRydW5rCisxNjk5MyA4ZDFhMDU5YWU5OWQ0NGUyMjZhM2UyNTMwOGI5Y2E0ZWY4OTAwZTdmIGxlZ2FjeS10cnVuaworMTY5OTQgYWNjNzI4NThlYjcyYzgzNjAxNjlmZGIxYzhhMTY5YTEzMTY5Yjc5MiBsZWdhY3ktdHJ1bmsKKzE2OTk1IGFiYmMwMjc5NWM0ZGVmZWNhMjllOGM2ODU4YTE1ZWZmZTE4MjBjYTEgbGVnYWN5LXRydW5rCisxNjk5NiBkZmYyMmQ0YTQ4ZGFlMzZmYjBhOGE0ZGIyNzgwZmY5YmRiM2U2YWM2IGxlZ2FjeS10cnVuaworMTY5OTcgNTc3MmM0OTgzZGQ4N2QzODIwMjkwODdkYmM2YWFjNDc3YTFlMmNhZCBsZWdhY3ktdHJ1bmsKKzE2OTk4IGVhNzA0MGFiNzI4NmYyMmFjYjEyNjAxYjg1OGIyMDgyZjdjY2VkMzQgbGVnYWN5LXRydW5rCisxNjk5OSA4OWY4MTUzZmQxYmExNjFmODIzZjE5NjFlM2Y0YTg0MWI4NTYyMmFlIGxlZ2FjeS10cnVuaworMTcwMDAgYzg1YTgwZGI2ODQ1YjA2MmY1Nzk5NGJiNWVhYTBjYmM5MGY4NzI0NiBsZWdhY3ktdHJ1bmsKKzE3MDAxIDIzODVlYTU4NzJlMTkzYmU1NGJiN2EwZGZhOGI1MzI2MjFhMTNmNjcgbGVnYWN5LXRydW5rCisxNzAwMiAyODYzZmJiMTM1ZjFmOWNjNmM5N2ZmNDUxMGU0ZDRkZTZiNjllZThlIGxlZ2FjeS10cnVuaworMTcwMDMgOTMwMTNlNGJiZTAyZTI0YjAyY2EwMzc3MTViMzY0NTgwNTFiNjRkYSBsZWdhY3ktdHJ1bmsKKzE3MDA0IGU5MjEyMjhhZjQzNTY3ZWZjOTAxMjM1ODdlMDE2ZTkxNDVmMGViNWYgbGVnYWN5LXRydW5rCisxNzAwNSA1ODE0NjBmY2YxNDI1NjAwZTUxYTlhNDEyNzc4ZGE2YjAwY2Y1YTU1IGxlZ2FjeS10cnVuaworMTcwMDYgNjIyMzM5N2JkNmEyNjYxODQzMzYyMjA5ZmE2N2UzYjgxOWZlM2VkYyBsZWdhY3ktdHJ1bmsKKzE3MDA3IDI3N2ZkZDk2NDdmZTA4YjFhN2FhMjdiODBhZjVlYjE2MjNiNDQ0ZTIgbGVnYWN5LXRydW5rCisxNzAwOCA0ZTY2YTNhYjc1N2RhMzJmNjY4MWRlY2ViZWRmMGQwMDVjMzg5ZmJmIGxlZ2FjeS10cnVuaworMTcwMDkgYmQzZDE0MTFiNjZjMWQ0MDVkNjM2MmQ1NDliOWY0ODE3NGZiYjhhNSBsZWdhY3ktdHJ1bmsKKzE3MDEwIDliZjE1OWZmNDkxMjkyM2VkMmQ0NTIwOWEzMWVhNTdhMjEyNzAwMmYgbGVnYWN5LXRydW5rCisxNzAxMSAyMTE5NzYwMzRjZjdlZTM5MGMzMGY3OTc2Njc2MTZlZGQ0YTdjODU3IGxlZ2FjeS10cnVuaworMTcwMTIgOWQ4Y2U2ZWQ0YTI5YWI0MjAwMzU4MDE5YjcyZTFiNjk4MjY2NWM3OCBsZWdhY3ktdHJ1bmsKKzE3MDEzIDk5OTY3MWY2OWRmNGQwNWZmNzRmZjE5MTM1MDlhZmI1YjBiMWY1ODUgbGVnYWN5LXRydW5rCisxNzAxNCA0MTIzNGFlOTVkMmEwN2U1ZGIwMzQxMWFlNDUyY2YxMGVhZDk1ZmYyIGxlZ2FjeS10cnVuaworMTcwMTUgMjc4N2U5MzgxN2M2YTBhMThkZmJlOWEwZjMzZTU2NWZhZWMxNDIyMSBsZWdhY3ktdHJ1bmsKKzE3MDE2IDM0ZTdkZTRhZGE3MGFmM2NiYjYwNzZhM2RkZjU4MmI3NGY5MTUwZTcgbGVnYWN5LXRydW5rCisxNzAxNyA5MDBhMTc3NTQwMjEzY2JmZGE1NGYzYjAxYzNmYTQzZWQ4ZDc3OTZhIGxlZ2FjeS10cnVuaworMTcwMTggZWM2YTIxZjU1ZmExY2U3ZDc0NWEyZGM5NmFkZDAwMTg0OGE4ODdmMyBsZWdhY3ktdHJ1bmsKKzE3MDE5IGQyMjM2MjBhODExMjY4OWM4YjFmYzg0NjJiOGZlM2U3YThiMjU3MTEgbGVnYWN5LXRydW5rCisxNzAyMCAxYjBkYWJmZmM1MWNmMDkwMDQwZWFhOTdhMzhlZTE2ZGI5MmU3ZTNiIGxlZ2FjeS10cnVuaworMTcwMjEgMWMzNDQ1Mzc4ODc5YmEyNmI0ODFiMGMyZDk1ZGFjYWY2MDY1NjBmZSBsZWdhY3ktdHJ1bmsKKzE3MDIyIDY4MTZkYjI2NTBjYWJmOWIwMWRjZTA1ZmNhYWU2ODk4ODZkY2VjN2MgbGVnYWN5LXRydW5rCisxNzAyMyAzYWUxODViOGZmMDMxYjE0OGU1NjRjODI3YTQ1MzZiNDIyZWI2MDc3IGxlZ2FjeS10cnVuaworMTcwMjQgNGU5MDdhNTFhN2FmZmMxZjNjYzJkYjk4NGJhZGVmOWRjNDVjMWE0ZiBsZWdhY3ktdHJ1bmsKKzE3MDI1IDhjN2RjZDFlZDA4YTU3ZjYzYTc4MWViOTY4Y2ExMTk3NTNjOWJjM2MgdW5pdmVyc2FsLTMzCisxNzAyNiBjMTZmMmRjOWMwODllODZhNWNjYzAwMWJhNGI3YTFmNDk2MzU4NjU4IGxlZ2FjeS10cnVuaworMTcwMjcgOTRkNzFmMmZjOWE4M2NkZGM3MDM1YTg5ZmU1MjFmYWI3YjMzYWI2ZSBsZWdhY3ktdHJ1bmsKKzE3MDI4IDBjMGVlODg2ZmIwM2I3OTA1N2YwMGJiNTE3MjM3NGEwZTc4NmI5NmYgbGVnYWN5LXRydW5rCisxNzAzMSAxOTEyNmU1NTdjZTg0MWY3NDUzNjBjMDY2YmNhYjU5YzhlMzYxMjA0IGxlZ2FjeS10cnVuaworMTcwMzIgYTg1NmM5MmIxZDdiZjFhM2RlYzBlMzAxYWZjZTNhZTVjNDUxNzc3MSBsZWdhY3ktdHJ1bmsKKzE3MDMzIDU4OTExMmM0ODI3MzQxMDA4YWM4YTkxMmNlMmE5ZmNkYTU4ZjJlZDUgbGVnYWN5LXRydW5rCisxNzAzNCA2M2VhMmEyZGYwNmYzZDE4YWU1ZDRiMmVjNmVjMmNjNWUyMTgwZDc0IGxlZ2FjeS10cnVuaworMTcwMzUgYjVmYjE3NWFkNTI4MjU0MWM2YzIzZDcwNDJlYTk4OTdkZTY1MzdlZCBsZWdhY3ktdHJ1bmsKKzE3MDM2IDA3OTdmZGIyNWE3NzllMTdhOGJjZGVmMzQzOGNlYjE2MGU5ZDE2YmYgbGVnYWN5LXRydW5rCisxNzAzNyBkMzMxNzljZGM1MTEyMWQzYjkyOTU0OGRhODFlZWM4YWI5NzUzM2Y5IGxlZ2FjeS10cnVuaworMTcwMzggYWUxZWRjNmZmNTQzNWZhZGY4YzYzZmQ3NzQzNzZmN2Q5ZmY1YTM0ZCBsZWdhY3ktdHJ1bmsKKzE3MDM5IGU3OWQzY2Y0NDQzZWQ5ZDdmZDcxZjVmOTRjYmFlY2Q5MTEyM2U4YzMgbGVnYWN5LXRydW5rCisxNzA0MCAyYzMyODMwOTQzMTE2Nzk3M2ViNTkzZWNjMmE2ZWMzYjg1MzRkMTJjIGxlZ2FjeS10cnVuaworMTcwNDEgMzAzYzM2ZTQ4NzY5ZjkzOTUyN2MyZDI4YTQxMGUwNjc2NTgyOGQ0OCBsZWdhY3ktdHJ1bmsKKzE3MDQyIGU3NWViNGQ4ZTMyOWI0N2FiMzlhMGNhOGI1NDNiZWU1OTMwZDU4YzUgbGVnYWN5LXRydW5rCisxNzA0MyBkOTc0Y2Y1NDVjYTZhZGIzYzIyMzM1ZWU0NTE4OWRjMWNhMTY5MjE0IGNucmktMTYtc3RhcnQKKzE3MDQ0IDhjNTI2OTMzOTdkMjRhMTFkZGNhMjg4YThjYzBjNWUyNDY3MDM0YzggbGVnYWN5LXRydW5rCisxNzA0NSBjMzk3MzNiZTBkYzgxMWFhOGIxMTA5ZWY5Y2NkOWI1YzQxOGYxYmMyIGxlZ2FjeS10cnVuaworMTcwNDYgYTRmNTMyOGNjZjE5MjI3YmZkZjBlNWU2Mzg4YzU1MDgzYTA5Y2U0YSBsZWdhY3ktdHJ1bmsKKzE3MDQ3IGNiZTk1OTBkMjM0NGM0YjgyNmNjYzliYWFmYjY1YzYwZWU1YmM5MTggbGVnYWN5LXRydW5rCisxNzA0OCAxMWEyNmU5NjNkYzkwOGY2ZDQwMGFlZDBjY2IzMDA5ZDQxNTUxZmFlIGxlZ2FjeS10cnVuaworMTcwNDkgOWY5ZjMyODBkYzY4YTAxNzhiNjRjNDMwOWM4MjhlZjQwYTI5ZGU4OCBsZWdhY3ktdHJ1bmsKKzE3MDUwIDIwMzc3ZjE1Yjk2YTdjYmYxZjE4YzEwZTZiZDRmNTI0NzJmMGM0MGIgbGVnYWN5LXRydW5rCisxNzA1MSBhYjBlYmYxMmQ0ZGUyMjJjMDc0NTFhZjk3YmVlZjhkMjNmYTc0ZmVjIGxlZ2FjeS10cnVuaworMTcwNTIgMzE5MjVhYjQ2YjIzNTQyYTFjMzQ3ZTNmYzMxNWIyNmFkMjc1NDBlNyBsZWdhY3ktdHJ1bmsKKzE3MDUzIDM5NmI0YWIzYjljMmE5Y2JkY2IyNWQ3YWVmYTQ3MTFjNTMwZTQ4YzMgbGVnYWN5LXRydW5rCisxNzA1NCAxZjFhMTU2ZWQ1YWY4ZjdhNTBjZTA1ZmM4NWY4NTQyM2EyNGYyYWE0IGxlZ2FjeS10cnVuaworMTcwNTUgYjk3ZTYyMDJmMGIxOTY4YmQ5ODkwMzFmMmExMTg1OTAyM2I2ZTI5NCBsZWdhY3ktdHJ1bmsKKzE3MDU2IDNlNWQ2ZTIwOTNkZmUxYzViZDk2NTliNjFhZGI5YjVmOWQ4Y2MxOGEgbGVnYWN5LXRydW5rCisxNzA1NyA2M2Q4NTg5N2M2OWZhNGQ1N2MxNzFlM2I4OWFkMzUwYTdiMzRlNjdlIGxlZ2FjeS10cnVuaworMTcwNTggNThkNzk5NWNlNzk1Zjc5ZmViMDJjZmQ5ZWNiZjhjZmUwMTdiZTc5YSBsZWdhY3ktdHJ1bmsKKzE3MDU5IGQ5NjQzZTljOTBlYjFhNWNjOWQwMWU3ODgyM2VhMWNkMzE5MDcwNDQgbGVnYWN5LXRydW5rCisxNzA2MCA3NGY3ZjIzN2Y3MzlkOGQ2YzkxZTQ1MzcxNjQzYzc0ZjM0YzhhYmU2IGxlZ2FjeS10cnVuaworMTcwNjEgMGU2NmI3NzQwOTRiZmU1NTE0NTRjZTdiMmM5YjFkNTI1NmJiNGU2OSBsZWdhY3ktdHJ1bmsKKzE3MDYyIDM0ODNhNzhkMTM1ZmQ0NjI0MWJjNmYzYTY4ZTdjZGY1OGQwNDU0ZDIgbGVnYWN5LXRydW5rCisxNzA2MyAzZmNhYzM1YzdmNWUyMWZmZWUxN2IyNWI1Y2MyMjdjNTc5MzM0NGIxIGxlZ2FjeS10cnVuaworMTcwNjQgMDY3MGM0ZjkwMTcxMGYyZDA5YzIyOTQ3ZjQxNmQ1YmY0NzYzNWMwZCBsZWdhY3ktdHJ1bmsKKzE3MDY1IGIyYTgyOTJjMzlhOWEyZGYzZmU5OTE5MjAxZmFhYTczNTUxNmQyMTYgbGVnYWN5LXRydW5rCisxNzA2NiA3YjMyY2NkZjFkNGEyMDI0ZmNmMzhmY2IzZmYxNmQ2YTczMzY2NzBlIGxlZ2FjeS10cnVuaworMTcwNjcgNTk5NGJiNjE5MTYzMzJjNWZkZTkxNGM1MmY2ODIyOTBhZmMyNDJhOSBsZWdhY3ktdHJ1bmsKKzE3MDY4IDljZDJmNzkwYzUwYzM4Mjg2NGVhMzZhY2QyN2U2ZDdiMGQwNThmNWEgbGVnYWN5LXRydW5rCisxNzA2OSBhMTQyZWEyMGZlOTRmMTg0NmY0NWM4OWEyOTgzNGY2OWY3ZTdiZDgzIGxlZ2FjeS10cnVuaworMTcwNzAgNDM4ODcxZTcwNTMyYjE3YmUyNzBjYjhkNWQ4MmYyNjE2N2QxMWQ0ZiBjbnJpLTE2LXN0YXJ0CisxNzA3MSBhMWIyZmIxN2JkZTdlZDdhYjdjYWYzZjA2YWUxMDlhZjY4NjMzN2E0IGxlZ2FjeS10cnVuaworMTcwNzIgNGUzNjQwYTA2ODU3MjA2YmYxNjZlZmY1YWJmNjc4ZjczZGI1ZGVjMiBsZWdhY3ktdHJ1bmsKKzE3MDczIDRhZmIwODg5YTE2NWMxOTc1YjRhMTA2MTMyYjhjMmU3ZTk4OWE0NzYgbGVnYWN5LXRydW5rCisxNzA3NCA1OGYzZjkzNjI3OWZmNjgyYzYwNWM4MWI1MjNkMjRhOTc3YWZlNWI1IGxlZ2FjeS10cnVuaworMTcwNzUgYTk5ZmFiMGJhMmRmODhjOWE4YzE2NjA3MDNiMmU3NmNjNWM0ZTdhMiBsZWdhY3ktdHJ1bmsKKzE3MDc2IDc0NTkxNTliYTI0OWY0NmZmMWQ0MzA1ZjViYjE4YmNlMmZhNTFjNDYgbGVnYWN5LXRydW5rCisxNzA3NyA4MzBkZTY4ZGUzMzA5NWFiNzNlOGUxNDhkOTBjZDgxODBlYzg5NzVkIGxlZ2FjeS10cnVuaworMTcwNzggY2RkOTVkNjdhNzE0MjU4MjlkZThiODU5MDg1M2JlODc3MGQ5MDczZiBsZWdhY3ktdHJ1bmsKKzE3MDc5IDFmYzMzZGZjZWM0NDJjY2ZmOGUzY2Y5NDE4MDBlMmYxNmM3NWZkMTcgbGVnYWN5LXRydW5rCisxNzA4MCA1ZmZmNGZmZWIzNWQ1YzVhZjFmN2MzZmQyYmI4NGNiZGIwNGQ4ZjNjIGxlZ2FjeS10cnVuaworMTcwODEgNjM5NjUyOWE0MjFjOWVhNDMxMzI2NWEwMjEzNTU2YmI1ZWVmN2I4NSBsZWdhY3ktdHJ1bmsKKzE3MDgyIGFlMjc1NjQ0NDU3YjU1NGFjZTQ2YmVhZjdiOGM4Y2ZhZGFiMTdlYjkgbGVnYWN5LXRydW5rCisxNzA4MyBkODdjZTJkMmU0MjU3MzE2NTY4NDBlNTExMDc4MDhkMTRlMTMwOGZlIGxlZ2FjeS10cnVuaworMTcwODQgYWRmM2EyODRhMmNmMWQ2NmU2YWIwMTQyYWU1YmMxN2IzY2MxZmVhOSBsZWdhY3ktdHJ1bmsKKzE3MDg1IDliMjBhNjlhNTA1ZTBlNmYyODg3Yjg2NjcyMjY5MzBjOWNlMDkzZGEgbGVnYWN5LXRydW5rCisxNzA4NiAzNjM4NTFjY2NmMmFlZDIyYTc1ZjZhYjZjNjc5YjUwZWUyNjI5NDI3IGxlZ2FjeS10cnVuaworMTcwODcgNjYwZGJjYzE4YjllYzZlOTZmY2UxYTA0ODgzMTU0YjNkNDRiZDQ1ZSBsZWdhY3ktdHJ1bmsKKzE3MDg4IDFmNzZmYzk4YjRjOGRmMDA3YjA4ODY1NjBhNmViMzk3MTQ1YzE1YmQgbGVnYWN5LXRydW5rCisxNzA4OSBkM2Y5MmYzZmMwYjA5MDI2ZDkzYWVhNWZhZjk4OTVhZmM5YzI5ZDNiIGxlZ2FjeS10cnVuaworMTcwOTAgOTg2MDg0MjljYTZlNDI5MjQzMGQyMmEzYzg0ZGE0ZjJjZTYyMjQ0YyBsZWdhY3ktdHJ1bmsKKzE3MDkxIGNkOGI4MTVjYjE5NjU3YTBjZjUyMWFmMGViNWRkNGIyY2Q3ZjdlNzkgbGVnYWN5LXRydW5rCisxNzA5MiA5MGNhNmFiMjY5MDllYzM0MWUwNTFkYjI0ZWZmMDNiZWU3MjVhYjc4IGxlZ2FjeS10cnVuaworMTcwOTMgZGM5ZDllYzQ0Njc5Mzk1YTBmOWM2YWY1YjE3MzhhZmE0YmU3ZTIwNyBsZWdhY3ktdHJ1bmsKKzE3MDk0IDE1YjZmYzI1ZjYwNTA5NmY5MzY2YzczNzEyOTc4YzE4MGJmYWViMzcgbGVnYWN5LXRydW5rCisxNzA5NSAyMTU1N2JhNGFmYmNlZGJjZmRkNDc2ZDA5ZjkxN2RlN2FhNWFhMDU3IGxlZ2FjeS10cnVuaworMTcwOTYgYmJmYzQ5YTg0Mzg5NjQyZTk5MGE4YmJhZDhjN2NjOTYwNDkyMjAxMCBsZWdhY3ktdHJ1bmsKKzE3MDk3IDE4ZGEyYmM1MDU4YzBmZGY4Yjc4ZjY0MWQ3Y2MzNjE0ZTM0ZjE4OTcgbGVnYWN5LXRydW5rCisxNzA5OCBiZDk1MGM1MDE2N2ZhMWQ4MWMxNDRmODJlNzFlYzhhZGNhZDNmMmQzIGxlZ2FjeS10cnVuaworMTcwOTkgZjNhOGY2MDM2NTY3MDk5NTNhNGU1ZDRhMmY0NDUwMTc0ZWYwNTdhMCBsZWdhY3ktdHJ1bmsKKzE3MTAwIDk4NGFiZDIwZWVjMjYwZDI1YjQyZTQ3M2Q5ZTU1N2Y1OGM1MDdlYTkgbGVnYWN5LXRydW5rCisxNzEwMSBmYjhmYjUzYTJlZmYwMTNjNTZmYzFhOWVkMWJhNzBiYmFlZmViNDllIGxlZ2FjeS10cnVuaworMTcxMDIgYjFhMGZkM2RmMWZjOGQ2MTA3Y2NkOWRmZmIxNDg2YzMyMWMzZGRhMCBsZWdhY3ktdHJ1bmsKKzE3MTAzIDY4YjYxYWExYWE0YWEwOTQwNGI5Y2IwZjY0NDc5ODhkNzVkYmRhNGUgbGVnYWN5LXRydW5rCisxNzEwNCA4Y2Y2NjMxMjY3MjNhZGFmZTY0ZjNkZTRlODFlMDljYTgxZDg4MzU0IGxlZ2FjeS10cnVuaworMTcxMDUgNGQ1NjUwOTVhZTk5MzMwMTcyNzJmOTc4MDExN2U4Yzg5NmU1NjM4YSBsZWdhY3ktdHJ1bmsKKzE3MTA2IGRmODkyMzhhYzc0NzcxOTE4NzU4ZGVkNDlhOTU3MzQ4Nzk4MTgwOWUgbGVnYWN5LXRydW5rCisxNzEwNyBlMjVhYTU2YTUyMDdkZjhhOTBhNTcxZDYzYmIxMGFlYTFhYWZjYjViIGxlZ2FjeS10cnVuaworMTcxMDggZDM1N2FkMzY3ZjI2MGZiYjljYjJiMzcwZjI0MTVmNjY3NjhlNmRhYiBsZWdhY3ktdHJ1bmsKKzE3MTA5IGVhOTVlZWVlMDRlNzI0OTM0OGU1ZGFmN2UzY2JlOGMxODYwNWUwYTEgbGVnYWN5LXRydW5rCisxNzExMCA2YWI1OGM1NWUwYTNjMDY4NDA2NTA3MGE3ZmY0ZmViNzY2NTU0NDhiIGxlZ2FjeS10cnVuaworMTcxMTEgNzdlMjQ0M2FiZjliZGUzMjUxODlmY2NjZjZlYmYwZjVhMGE5MzVkNyBsZWdhY3ktdHJ1bmsKKzE3MTEyIDJlMmZiZWU1M2U2OWZlNmNjZTZmMDZiZTc3YWE2ZmZlOTFhOTgzMzQgbGVnYWN5LXRydW5rCisxNzExMyA1OWMxOTA1MmFlNGZiMDIxZTgwMzdlNGQwMjhhODFmMmRkMjBlNjZiIGxlZ2FjeS10cnVuaworMTcxMTQgYmZlMzA0ZmMwNmFiOTEyMjQ0NDg1NzZkOTNiNWYzNDI0OTExNmQxMCBsZWdhY3ktdHJ1bmsKKzE3MTE1IDExYTg5M2NiYzFhMDEyYTdkZjg4NTk0ZWRiNDI0NzIxYWUxOTVkMWEgbGVnYWN5LXRydW5rCisxNzExNiAyNmRjNjJkZTliNmUxNWFhNTg5Y2U1OTc5ZmMxNWVhOGE2NzgxNjhiIGxlZ2FjeS10cnVuaworMTcxMTcgMDUzNjI3ZTdhYzE0MWU0OGUzYzI1YjI2M2FmNjk4NDZkMWZiNTk1MSBsZWdhY3ktdHJ1bmsKKzE3MTE4IGU1MjUzYjY5MmU5ZmJlMzY1YWI0MzY5Y2Q3NTliMjRiOGI4NmQ2MDkgbGVnYWN5LXRydW5rCisxNzExOSA4MTcyYWM5ZDIxOTY2Y2ZiYTUwOWZiY2RlMjE1ZWYyNmVjYWQ0YmEyIGxlZ2FjeS10cnVuaworMTcxMjAgZWRhNDQ5ZjU0ZTQ0OWVmMjJlNzNjYWFkNTNjZTM4MGFmZmUzMTA0YyBsZWdhY3ktdHJ1bmsKKzE3MTIxIDEyMDViMTgwYmE5MDNjNmFhMDRkN2VkZjNhMzRlMjAyNjU0NjUzZjAgbGVnYWN5LXRydW5rCisxNzEyMiBiZWNiMWVmMGE1NzM1MzkwNzZhNjliNzFiMjc0N2IzYjRmZjFmM2JiIGxlZ2FjeS10cnVuaworMTcxMjMgNTE2N2VkNjgzNmZjNGExYWEyMDFjNjFjMDFjNGE1MjMyM2EzYjQxOCBsZWdhY3ktdHJ1bmsKKzE3MTI0IDAxM2NlN2VlNzE2N2MzOWZmMzllNDVhNzg4ZmYxNzIyZTVhYTU1MTkgbGVnYWN5LXRydW5rCisxNzEyNSAzMTY0MWVhODlhNTM0ZDcwNmMxYjA4MzQ4NzE1N2I1MzE5ZTQ3ODgxIGxlZ2FjeS10cnVuaworMTcxMjYgZjhiMjBkOTBjOWFmMjU0MDgwNjBlNmNmZTk2ZWY4Njg5NTE4MjQyZCBsZWdhY3ktdHJ1bmsKKzE3MTI3IDAxOThkMjAyMDM5MDM2ODMxNDU1YWZjOWFkNTVkYTc3ZWViOTc0NWEgbGVnYWN5LXRydW5rCisxNzEyOCBlMzc3OWVlOTQyZDBhMDA1ZWIzMjZhZTliNjE2NjA5MDRkYjc2ZTcwIGxlZ2FjeS10cnVuaworMTcxMjkgNjJlYzBiZmQ5M2Y4MDhjNjdhM2IyOGY2ZTQwN2NhMGNkYmZiZWVjZiBsZWdhY3ktdHJ1bmsKKzE3MTMwIGIyNGRiNzcwZGZmZGRhOWMwOGRmY2FkZjliNGU1OGJiMjE5ZTU5NGYgbGVnYWN5LXRydW5rCisxNzEzMSBiOGIzZjc2ZmZkNTFkMTI0MWE2ODJmODJlZDcyZDAxZjg1Mjc3YzkyIGxlZ2FjeS10cnVuaworMTcxMzIgN2Q0MGJkMDdiMTI5NjYzNWJhODBlYzZhYjhmZmQ3ZTdhM2QyYTNkOCBsZWdhY3ktdHJ1bmsKKzE3MTMzIDJkYjgwN2YzNDViY2MwNzc1NDY5MWFjODE3NzcwNmZjYTc4YTg2OTUgbGVnYWN5LXRydW5rCisxNzEzNCA5NzY1MWYyOGIwMDRjNWI2ZmJlYmRjY2Y1Y2IyMTUwNjQyMjkxNTU3IGxlZ2FjeS10cnVuaworMTcxMzUgNGI5OGRmZGVkNDlmNDBiMDlhNjE0MzBmZGUzMTljMGNhMTU0OTkyNSBsZWdhY3ktdHJ1bmsKKzE3MTM2IGMwZmUxYThiODcyYzA0MDczMmE5NTMxNTZlZmIxMWJhZWMxOWU3MGIgbGVnYWN5LXRydW5rCisxNzEzNyA0ZDQ5MWFlYjk4MGZkMWQzM2E3NmNlNjUxMTQ5MzRhZjM0YzI0YjgwIGxlZ2FjeS10cnVuaworMTcxMzggNGRmYmQ5YjM0MTJiYWFlMzYzNjNjN2YzMWE4ZjliOGNhMTAwZWNlOCBsZWdhY3ktdHJ1bmsKKzE3MTM5IDUxMTEyM2RkODQyNDNkMzQyZGMwNmY2ZjdhY2RhMWViODdmODg2NmMgbGVnYWN5LXRydW5rCisxNzE0MCAyZGNmYWQzYjIxMTVkZWI2NTc2YWZkOTQwOGM3NjhhNzk1YjkyNzE5IGxlZ2FjeS10cnVuaworMTcxNDEgMzNjN2RmMGM1NDlkNzJmZTNkYWYzZjU1ZmFiZGU2OWUxNDg4MzJlMSBsZWdhY3ktdHJ1bmsKKzE3MTQyIGRkYWVmNDU1OTVlMmQ3NjJiZTNhMDJmZDg0NzdkMjE3NDBjZTBkZGQgbGVnYWN5LXRydW5rCisxNzE0MyAxZmFiOTI4MzY3NThmODA0M2JjY2E2NTNiNDFjOWZlZTMyM2NhZDJiIGxlZ2FjeS10cnVuaworMTcxNDQgYWRhNGVjNGNmZmQ1MDFkYmNkYTg4YzA5ZjA0Mjg5YTVkNGZiMGFjZCBsZWdhY3ktdHJ1bmsKKzE3MTQ1IDU4ZjEwMGFjYzNhYzBlZmEyYTU4ZmFkZTNmM2MwMTc1ZjY3MmM5YzMgbGVnYWN5LXRydW5rCisxNzE0NiA0NjBmZjNjZjMxOTViZTJkYzFlZDY0OGM0YWFlOGIzMjhmNmU0MjhjIGxlZ2FjeS10cnVuaworMTcxNDcgNTg4NDJjYmE4ZGJjZDIzMWY1MzRkMjhkNTY2ZWFmNTk0OGJmZjA0MSBsZWdhY3ktdHJ1bmsKKzE3MTQ5IDIyYjJlYmQ3ODM3MmYyNTUzZmVlODgwNzE5MmYyZDkwNDhiOWUxOWIgbGVnYWN5LXRydW5rCisxNzE1MCAxNGEyYjhkNGZjZmYwOGJiZjNkMGU3NmYwZGZkYmNhODM2MGMwNGVlIGxlZ2FjeS10cnVuaworMTcxNTEgNzNmMzllYTRlZmI3YTc0ZjY5MTM5OTYyZTBlMzIwNTQ3MTRkYWNjYyBsZWdhY3ktdHJ1bmsKKzE3MTUyIDhmMmU2MTM0Y2VhMDBhNTA2YTk1Y2VmOTQzN2JkODcyNDUzZjc4MWEgbGVnYWN5LXRydW5rCisxNzE1MyBiNTdlMzYwYTZkMTYxYTlhYzZkZWZjMzYyNjY2YjU0NjJmNTkzNDFlIGxlZ2FjeS10cnVuaworMTcxNTQgNmRlZTE5ODVjNjgxYzEwYWM1MDJjMmU2YzkwOTZkYjM1NGE4ZTQxOSBsZWdhY3ktdHJ1bmsKKzE3MTU1IGNiZTQyM2IzYmEzYTA2NWJhNjVkNjM4YjM5NDA2OGZjNjliNmVkNDcgbGVnYWN5LXRydW5rCisxNzE1NiBlYjdjMjdlOGZlMzdlZTdkNGFjNjAyYzAyYzlhMTdlMWJmNDQwMGQ1IGxlZ2FjeS10cnVuaworMTcxNTcgZjU1YjY3M2Q5YWNkNzQyNWNhZjk1ZTBkZTExODljZjE4ZTEyNzI2NSBsZWdhY3ktdHJ1bmsKKzE3MTU4IGJlYThmMTRlN2Q2MWNmODBlNTMyM2MxZGM5OWQyNzM4YzMwZTEyZmEgbGVnYWN5LXRydW5rCisxNzE1OSA5NTFlYjNhZjM0OTQ4M2JkNTcxNjNhNDA3YjUwOGFkMjMyNzg5YTBjIGxlZ2FjeS10cnVuaworMTcxNjAgMDExNWY0MDNmYWRkOGZiNTBkZDMwNGZjMmM1MWJmNzAwYTBhZjc5YyBsZWdhY3ktdHJ1bmsKKzE3MTYxIDNiODRjNWZmODlkYTg5M2ZkOWZiYjQ3NmRmYzVkOGE0MWIyOWNmYjUgbGVnYWN5LXRydW5rCisxNzE2MiAwNTdjN2NlYjkyZjA0NDg2ZjI5N2JiZjc2ODYzZTY0ZjE1MmU3Zjg0IGxlZ2FjeS10cnVuaworMTcxNjMgZjQ4ZWQ5NDQ4ODRiZmZmMmE1NTE3MzRmNDk3ZDJkZTE5OTE5NzJkMyBsZWdhY3ktdHJ1bmsKKzE3MTY0IDgwMWEzMDRmMjQ4ZmJmZjc2OGNkNGVjMmUwOWMwYzIyMzY1M2VmODUgbGVnYWN5LXRydW5rCisxNzE2NSBhYjYxYzMzNWEwNGRjZDFiZjQ5NTViNmRiYzBhNTE3MjhmMzQxNTA5IGxlZ2FjeS10cnVuaworMTcxNjYgZDQxYzQxMzcxZGMxMDg5MDQwZGI3NDdlMTVkMzI4NTk0Zjc5OWQxNCBsZWdhY3ktdHJ1bmsKKzE3MTY3IDY5NDliNTAzNjRkZDA4YzgyMThjZTdiNzM0YzY5NjEwNGQ5MjMyNzcgbGVnYWN5LXRydW5rCisxNzE2OCA3YjUzZWMyNzA0ZTAwYTNhNWU1ZDc0OGQzZTBmODJhMjhmNzAyNWFkIGxlZ2FjeS10cnVuaworMTcxNjkgNDMyZDMwOGM0NWU4ZDhiNDFmYzFhYzcyNDcwMjg3YWVkZmRlZTJlZSBsZWdhY3ktdHJ1bmsKKzE3MTcwIDUzOTdmZGY4OGVjMjVhMWI1ODM3ZGVjOWZjODUyODM5YWJlNDQxZTAgbGVnYWN5LXRydW5rCisxNzE3MSAyZGUxZmI1MzAyZWQ4N2VkNjhmMmJkOTdkMGY1MzFlOGViZjkzOWQ1IGxlZ2FjeS10cnVuaworMTcxNzIgNmQwZjY0ZjdkZWRkMTgzNTRlNThjOTJiM2ZhZGU2YTc0NzY5ZTVhOSBsZWdhY3ktdHJ1bmsKKzE3MTczIDIxYmY5ZmE5MjI1NTg1M2VlNDJjYWNjYzI0NGU0ZTRlYzVjYTgyOTggbGVnYWN5LXRydW5rCisxNzE3NCA3MzUyYmIxNjMyYmMwMWE0OTE2MTIyMDNjZmE1YzYyNjk2Y2NiY2FhIGxlZ2FjeS10cnVuaworMTcxNzUgZWY5Nzg1MjAwODVmMTBlNTk3ODI2YjI1OWFhOTA2YjFiN2I5ZTY0NiBsZWdhY3ktdHJ1bmsKKzE3MTc2IDkzZGFiZmMzYTgzZmM4YzUyYmFkODgyYmNiNTM3NjUzY2I4Y2FlNjMgbGVnYWN5LXRydW5rCisxNzE3NyBkZWI3Mjc0MzVmMzkwNjRlMzVmNjgyNWQ3OTQ4ZDIwZWM4OTAyYmVhIGxlZ2FjeS10cnVuaworMTcxNzggMGY2ODA5ZWJhNTBhODhjNzczZDFkNzExOGJjMzY5N2FmYjU3YTYyZiBsZWdhY3ktdHJ1bmsKKzE3MTc5IDYzMGM4YWJmYThkN2MwOGU1NDU2N2U3OTQ5MTU5MjA5ZmMzODMzOGMgbGVnYWN5LXRydW5rCisxNzE4MCAzYjJkZmJjMzQ2ODlkZWQwYjBlNzI2MjY4MjI2N2ZhNjcyYTkyY2YzIGxlZ2FjeS10cnVuaworMTcxODEgYTM4ZTEyZTRhZmI3MGM1OWRiZTVlNjQ3ODQ0MWE0YWY3NTUwMDE1MSBsZWdhY3ktdHJ1bmsKKzE3MTgyIDNlZGEzMDEwYmMwYTBkYjg1ZDE5ODE4MjhjOTY2YmZhMDY4ZjEzNDkgbGVnYWN5LXRydW5rCisxNzE4MyBlYTllNjI1YjAxYTJhMDU2ZDFlNTIzNTk1OGU2ZmJjNTdmZjA5YTU5IGNucmktMTYtc3RhcnQKKzE3MTg0IDM1NzYzYmU3NWRkYjdjYTZmNzIyOGQ1N2Y4MmNjYTQ2NGYzM2NlZDQgbGVnYWN5LXRydW5rCisxNzE4NSBkMWQ1ZTJkYzI5ZGI1MGQ3NDhkOTJkYTBjOGU0NGRlYmVmOWZmNTUzIGxlZ2FjeS10cnVuaworMTcxODYgNWM1MWMwOTZkZTNiZmU2Y2MzNmJhNzE4ZGJmMGUzNGY1NGQwYzg5YiBsZWdhY3ktdHJ1bmsKKzE3MTg3IGE2NjViZGM0OTIyZjVkZmIwZGFkZGJhOTI2ZGM3ZmMyM2Q4ZmM5YWIgbGVnYWN5LXRydW5rCisxNzE4OCA1ZGE0MDZlYmVmNTUyMDRmN2RhMWI3YTliYWZhOTgwY2MwMzRkYTM3IGxlZ2FjeS10cnVuaworMTcxODkgNjY1YjE5ZTc3NzZiNTNiMjAxZTU0Mjk2ZWZiMGEwZDk0YTQyNzU4ZSBsZWdhY3ktdHJ1bmsKKzE3MTkwIGM3ZWQ0MTJhMDc1YjAxOWRkNTBkN2NmYTYwNjViODM2NTZjYjM0ZWYgbGVnYWN5LXRydW5rCisxNzE5MSAzNmQwYjViMDk0ZTQyMWZiN2U3OTY2YTBiNTRhNTM2Mzc2MDgwMTFhIGNucmktMTYtc3RhcnQKKzE3MTkyIDdhMWZlY2MwOGQ3MGE4Y2EwMGUyMjA0ZTViMjJjNTZlYmViM2QyMjIgbGVnYWN5LXRydW5rCisxNzE5MyA2NDhhMTJhNzgwZDkwODM0NGFiZjdkZjk0ZmUxNmNiZWI5YjhiNjAyIGxlZ2FjeS10cnVuaworMTcxOTQgMDM0YmYxMDgxMzA0NzUwMjM4YTQ2NTY2OTZjOGE3Yjk1ZmMwYTYxYyBsZWdhY3ktdHJ1bmsKKzE3MTk1IGNhYzkzOTA3NmM3ZGJlZTcyMjAxYmRlMzBjNjBhMzMwODcyNDY0MjQgbGVnYWN5LXRydW5rCisxNzE5NiBjZDA0N2E4NThhY2UxOWJiYjUxZDc2MGM4ZTk4YmVhODQ4MDlkMTZlIGxlZ2FjeS10cnVuaworMTcxOTcgMDlkY2ZmNTE5MzJjNzdkZGU1MmJiZjYyYTZjNWQxNmYyOTQ5YWY2OCBsZWdhY3ktdHJ1bmsKKzE3MTk4IDY0YzI1ZmQyOWQ2ZjY3MTdiZGNhZmY3MTBiYzhjNjc2ODAzYjc0N2EgbGVnYWN5LXRydW5rCisxNzE5OSBlZDE0N2E1MzcwMWI4MDA2NTI0NzgxNGE1NWFhYzk1ZGQ2OWIwMDc2IGxlZ2FjeS10cnVuaworMTcyMDAgOGRmMTY2Y2EwOWIyNWFlOTI1YjcyMzYzMTVhMzQ2OTliOTA4ZjUwNCBsZWdhY3ktdHJ1bmsKKzE3MjAxIDZmNmY5NjVjNWUyZGI2NGI5NDdkNGZjYzczODFlODNhYTBjYjA3NTYgbGVnYWN5LXRydW5rCisxNzIwMiBmZDQ3OTk2MGU1ZTBjMmMwNzc4ZWM0MjA4MTI3NmI0MTdhMDJiNTQ2IGxlZ2FjeS10cnVuaworMTcyMDMgZGQ0NzY2YWEyZmQyZjc3Yjc2YTgyODc3ODI5ODVhNDg3YTZhYTk1OSBsZWdhY3ktdHJ1bmsKKzE3MjA0IGNhNzMxNmEwMDQ2NGVhNDhmMThmMGVhODUxOWRkYTkyNWRjZmZkZWYgbGVnYWN5LXRydW5rCisxNzIwNSBiMDY5ZDdkOWNlOGEwMGRmYWY3MTI0MGI5MTJlM2FjZDIzZWJjZmNmIGxlZ2FjeS10cnVuaworMTcyMDYgY2QwYzRkZDQ5MDRjOTYzNDEyYmMyYzY1Mzg1NzNlZTg1ZjQzY2U4YiBjbnJpLTE2LXN0YXJ0CisxNzIwNyBlOTliMGRiMTZkZDdkM2M5M2NhODg1ODVlMjZjMGU2OTBjYTgyODI1IGxlZ2FjeS10cnVuaworMTcyMDggNzk1OGE4OGVkZGExNzczODk1Mjc1OTJhOGMwYmI4OTg2ZmQ2ZDYzOSBsZWdhY3ktdHJ1bmsKKzE3MjA5IDJkNmNmNjhhYTY0YTU1ZDJmYTJiMmY3Y2QzZGQ1MzJmMDg0ZDUwMzMgbGVnYWN5LXRydW5rCisxNzIxMCAzODhjNzIxYzIwY2ZiOTUzNDEwZTgwMWVlYzE2ZTVkNTMzMTZkYTU0IGNucmktMTYtc3RhcnQKKzE3MjExIGNmZDA3NDMyMWFhZDlkMWE1MmNkZWFlN2UwMGVkZmQ5N2Y4ZTg1MTEgbGVnYWN5LXRydW5rCisxNzIxMiA3ZTQ3YjM3MGViNjc1NTE5Yjg3NTI4NjQ3MDI2NjE2MDY0Y2ViZDg2IGNucmktMTYtc3RhcnQKKzE3MjEzIDZmYjYxYjgzNDM1ZGExYjZmODdkNmJiMGE4ZmMzMjU1NjAwMDgxMzkgbGVnYWN5LXRydW5rCisxNzIxNCBkMzk1Y2FjNzg2YjIyNGIxODYxZTMyOGNkZGFmMzA1MmUwZWFjY2RhIGNucmktMTYtc3RhcnQKKzE3MjE1IDA1MDdlNTY5ZDc0YWU2NTE2ZWFkNjczZGRiY2QyNTRmNmRjMzkzYTIgY25yaS0xNi1zdGFydAorMTcyMTYgOGE5MzNlYzQ3ZWY3MzM5Y2RiMTVlMTJhYzkyYWI4MTY1MTYzYjNiZCBjbnJpLTE2LXN0YXJ0CisxNzIxNyAzOWFiMjg1NzIzMDdmODE4OGFlNTUyYzJhY2Q2ZDg4Y2U5YThmZmU1IGxlZ2FjeS10cnVuaworMTcyMTggNTc5YTFlNzMxZmM4NDI0ZWU4NTFlMmRhMGU1ZDA2YTc5OGE4YTdkZiBjbnJpLTE2LXN0YXJ0CisxNzIxOSAxZmRjYTBhZjcxZDM0M2U4OGU2YmY1MGY3OTU0NDIxMzE0YzliYmJlIGxlZ2FjeS10cnVuaworMTcyMjAgYWZkNmZhZTQ2N2U1OTI1OTUxYmU5OTk5Mzk1ZWNhN2EzZmQ0YmIwZiBsZWdhY3ktdHJ1bmsKKzE3MjIxIGVmMjcxNGJiMDczMGE3NTI1NmU4MzJiNzA3NzJhNDczYjdhM2FiYzcgbGVnYWN5LXRydW5rCisxNzIyMiA5ZjAzZDJmYWYxNTZhZGU5ZGMyOTZiMTA1ZjA0OWYyNWQyNzY4ODUzIGxlZ2FjeS10cnVuaworMTcyMjMgMWM0MzhmZDVjMGU5MzQwMDZlYjQyYjljNTYzYWE1MTBlN2EyMzMwMCBjbnJpLTE2LXN0YXJ0CisxNzIyNCA0NGZmN2U0MTYzYWExZTBjYjIyNTAyYmMwNjg0YjhjOGVhZTE5OTQ4IHIxNjEtYnJhbmNoCisxNzIyNSA1NThlYTkwZjViMWNhMjhjM2Y2MDQyYmM0NmRlMTJiOWM1NTgxN2NmIGNucmktMTYtc3RhcnQKKzE3MjI2IDliMWRhZjNkZWUxNGQ0ZTQxY2QyNDdjYzczNzY4OTE1YTUzODUxMTAgbGVnYWN5LXRydW5rCisxNzIyNyBmMWJkMzA0NDdlMzBiNTljMDhmMDIxYzU5ZjE3YzY4ZDg4YzY4MzlkIGNucmktMTYtc3RhcnQKKzE3MjI4IDFmZDY0YjNhZjc2MDIyOGJiNWViNTEzNGE2MjRhZTA4MWQ2M2M0MzkgbGVnYWN5LXRydW5rCisxNzIyOSA2M2Q4MjQ2NzliMjg1MzNiZmFhMTBlMzRjZjQ5N2EwNTZkMGM0MTFkIGxlZ2FjeS10cnVuaworMTcyMzAgN2U0ZjYwMmRjNjg1NzZiMmU4ODZiMGY1MjIxOTI2ZDA5ZTExNzMzZCBsZWdhY3ktdHJ1bmsKKzE3MjMxIDJlZWI1OGI0M2ViMTg4M2JkZjQ0MzcyZmY0YzgxMWM3YjgzMWJiZjYgbGVnYWN5LXRydW5rCisxNzIzMiAwNWYxMjEyOGMzOGRiZTQyNGMyOTdiNGZjYWEzZGY4NzY3MGJlNzNmIGNucmktMTYtc3RhcnQKKzE3MjMzIDUzMmM5Y2U2Yzg3YzE3ZDliYjUxYjA3YWEwZmNjNGNlMzgwOTBiY2IgbGVnYWN5LXRydW5rCisxNzIzNCBhMTBhZmIzYWQyNzUwYzBlMjYyNDEzNGIxZjU5YmM5MDA5MGI3MjQzIGxlZ2FjeS10cnVuaworMTcyMzUgNTQyZDEwYmQwNGY0NzdhNGI4OTk4N2ZiMTI2NzUwZmU5ZTRkMjJhMCBjbnJpLTE2LXN0YXJ0CisxNzIzNiBjZDZmNzA1YzU0YjhjNDUzYjljZDM2OWM4ZjE2NzAxYWIxNDA0ZDA5IGNucmktMTYtc3RhcnQKKzE3MjM3IGY2MjlhZjFkNGJkYWE4MmNiNWZlNjA5OTJiMzU4OGVlODhiN2ViZDMgY25yaS0xNi1zdGFydAorMTcyMzggOGQ0NzEwMTQxOWI4NGNhYjkzZGM1YWNmMmQyMDExMTMyYjE3MmQxZSBsZWdhY3ktdHJ1bmsKKzE3MjM5IGNkMmJlMTUzZjIyOGY3ZmNlNzY5MDNkMWM4YzlhNmY2ZjM2YzAxMTIgbGVnYWN5LXRydW5rCisxNzI0MCAzNjdjYTQ5MTkwYmM1MjY1ZTZkNzFlZmZhYmRjNzk1MDI0ZDZlMTc5IGxlZ2FjeS10cnVuaworMTcyNDEgMzIwMTU4MDI2YTRiYzRlZTkxNjUwZWQ5MDdiZDQwODMyZTE0ZjczYiBjbnJpLTE2LXN0YXJ0CisxNzI0MiA4ODg1M2MxMDMwODc5N2M4NWNhYzU4ODc1OWNmMDkxMDcxZTVhMTE0IGxlZ2FjeS10cnVuaworMTcyNDMgNmE1ZmJlOGM1YWE2YTg4OTM4ZjgxMjJkYjIyMDc4NGNkYWE5N2RjMyBsZWdhY3ktdHJ1bmsKKzE3MjQ0IDNlMzc2OThjZDczN2Y0ZjdjYWNjNDQ5MzllYTAxNzI4NzRmODdiNzAgbGVnYWN5LXRydW5rCisxNzI0NSA4YjQwNjg1NmJjMzFjMTJhZjRiNzgwYzU1NTY3Mjc3Mjc1N2E4OWIyIGxlZ2FjeS10cnVuaworMTcyNDYgMDU3YmMxOTcwMzQ1MjZhNWRmMTBjZTVmMWE1YmE0MTMzZTA5ZjNkNCBsZWdhY3ktdHJ1bmsKKzE3MjQ3IGQ2ODliOGNlOWQwYTkyOGJhNjUyMzkyNjg1MjFiMGRkM2U0MDFkZjEgY25yaS0xNi1zdGFydAorMTcyNDggODcyMTkxNWE2YWNiODMwN2E1ZWMxMjBhODcwZWUyMjhiM2FiY2JlNSBjbnJpLTE2LXN0YXJ0CisxNzI0OSBiMTc1OThmZjJjZGQ3NDAxZDhmODY2NTFmNWZlMDAwZmJiYWE2ODBkIGNucmktMTYtc3RhcnQKKzE3MjUwIGQ4ZDE4MTJkZmNlMDY0NmIyZmRlNTU5YmQyNjJhOTFjODE5MjVhNzkgY25yaS0xNi1zdGFydAorMTcyNTEgZDg0NjY4NTUwMjZmNWU5YmRhYmFiN2EyYmEzZDY4Y2QwMzI2YmMwNyBjbnJpLTE2LXN0YXJ0CisxNzI1MiA2NTYzZDcxZTdkOTVhZDBiZjhkYWExNmM0NDcxOGYwN2QxMzQ4MjgxIGNucmktMTYtc3RhcnQKKzE3MjUyIDc4NmE1N2I3ZGM2Y2NmNTZlNjMwZWI5MWEyNjIwMTZiOWExNDk4MmYgY25yaS0xNi1zdGFydAorMTcyNTQgYmVlZmE4NWEzOTI0YzNlMjJhNTgzN2JkM2ViNjE4NmQ3NmVjODQ5YyBsZWdhY3ktdHJ1bmsKKzE3MjU1IGZjMTBiMjI3YzE3ZGRjMmY5MTg5NTJhYmM4NzM2ZTYwNDJkYjAyYTUgbGVnYWN5LXRydW5rCisxNzI1NiA4ZDAzNWMyZmMyMzQwODU4MzUwOWM4MjVmZTc1MDdkODkyOTczYjlmIGxlZ2FjeS10cnVuaworMTcyNTcgZDFjMzk1YzQ3MTAyYTE1NmI0MjJiMmJmNWQzMDk5NTU5MjQ3OWIwMSBsZWdhY3ktdHJ1bmsKKzE3MjU4IGE3NmFiN2M4ZmMyOTIxYmJjMWVjMDI1MmFjYzAyOTAwODkzZTk3MDAgbGVnYWN5LXRydW5rCisxNzI1OSA0MzA2MTA3YjEzOTU1MThkOWQzMjk3ZTE4MzNhYmVhMGFlZmQzNzE3IGxlZ2FjeS10cnVuaworMTcyNjAgYTcwN2E1ZjE3MTM5MzI0YTg0ZGMyZTZlNDUxMDMwZWNkZjZjYjAyZSBsZWdhY3ktdHJ1bmsKKzE3MjYxIGIxOTQ0Y2U1NDkyYjJmMmJjMzJmMGZkYTdhOWEwMTQ3NzI4OTE3MWIgbGVnYWN5LXRydW5rCisxNzI2MiA4NjI2NmY3NjNkNDQxOTcxN2VkNjQwZjIwN2Q2MDM4MjI4OTNlM2VmIGxlZ2FjeS10cnVuaworMTcyNjMgOTBmMDk0NmY2NGU3ODFlNzMyZDZmNTY3Y2VjYmQ0NmU2MzVhOTAyOSBsZWdhY3ktdHJ1bmsKKzE3MjY0IDYwNzI2NGU3YmY1MTQzNDBiNjIxNzkxMTM1MGJmMDA3NmNhZGQ4ZTYgbGVnYWN5LXRydW5rCisxNzI2NSA2YmU0NDZmZmEyZDlhYmM5MTNhNzJkM2NjNmI5MjhlMGRkZWY5NTYwIGxlZ2FjeS10cnVuaworMTcyNjYgZDQyZmMzYzcxNzNlNWM3M2M3Yjg5ZmIyZWVhNjA5MWQ0Yjc2MGY2ZCBsZWdhY3ktdHJ1bmsKKzE3MjY3IDEwYmU5NjgyYjAwM2YyM2MyMjc2ZDEyNzFkMjViNWIzMWMxMDZlNWQgbGVnYWN5LXRydW5rCisxNzI2OCAwZGNhZTg0NTA2YmFhOWNiNzM1MmMyNzc2NGI3MTliNzY5YmIxMjhkIGxlZ2FjeS10cnVuaworMTcyNjkgYmEyMmE1ZWQ0NjQxMGJjZDkxYWEwZjU2NmNjYTA3ZWZjNmJmOGI0YiBsZWdhY3ktdHJ1bmsKKzE3MjcwIGUzNmFmZjUyZmI0ZTBmYzM2MDhjMGQ1OTIyMjZjZGRjYzg4ZmJhMzIgbGVnYWN5LXRydW5rCisxNzI3MSBhY2Q0MTEzZTMwMWEzYzdiYTNkMmE3YTAyZGE0MjEyNDZhM2IzMmEwIGxlZ2FjeS10cnVuaworMTcyNzIgMjRiZTA0OWQyMDM3OTM0MmE1ZTA2NzdjMDk0YjNiNGM4MzRhNTUzNSBjbnJpLTE2LXN0YXJ0CisxNzI3MyBmOTQ0OGY0NGU3MDFjYWQ1NmM3Y2Y1ODE1OTZmMTUwMzU1MGM4ZjU5IGxlZ2FjeS10cnVuaworMTcyNzQgNjQ2MDQxMWY0NzNlZmZjZmQ4NjA2NWM2ZDA3YzdhOTA2MzBmYjAwOCBsZWdhY3ktdHJ1bmsKKzE3Mjc1IGM2MTZiNzkxMDc0NThkZmViNGZhZDVlOGYxODEyYTdjMjUwYzAxMDMgY25yaS0xNi1zdGFydAorMTcyNzYgYzM4NGZhYWU1MDUyYzVmMzllNjgzYmFiYTIwMTFkYzI4ZGU4NjdkOCBjbnJpLTE2LXN0YXJ0CisxNzI3NyBmOGU2Njg0NDdlMmExZDI5MGQ1NzFhNDk5YWJjMTZkYTg2ZDRjNDMxIGxlZ2FjeS10cnVuaworMTcyNzggNDQ4YmRmNDQxNzkyM2ZhYjdhYWNkOGY1NTYyNzg4NjE4MzM0ZWQ4MSBsZWdhY3ktdHJ1bmsKKzE3Mjc5IGJiOTA4MzMxMmQ4MTRjNGViNGRhY2ZmMTdlMWMzZGVjOTAxMDc5YTkgbGVnYWN5LXRydW5rCisxNzI4MCBjY2IzN2UyYjI0NjAzYjdjMjIyZDU4ZDA2OWUxZjc5YWU2OGZhZGE4IGxlZ2FjeS10cnVuaworMTcyODEgOWYxZjBhNmJjMThlNzU3ZjUyNzRjYzcyZGUzNGFmYWM0NDk4NjNiOCBsZWdhY3ktdHJ1bmsKKzE3MjgyIDgzNzZhZDY2NDVlM2RkYzU5Mjg3YjVlZjFkYWE5NTU0YTgzMzMwOTUgbGVnYWN5LXRydW5rCisxNzI4MiAzNWM0ZmMxNDE0YTU5ODg4NjE0YjliZTc4NGEyNWYyMzNiYTY3OTg0IGxlZ2FjeS10cnVuaworMTcyODQgNzdlOGU1NTBhZTEzZjc1ZTFjNjQzNzAyMzA0NzU5ZTk0OTEyYzk0NyB1bml2ZXJzYWwtMzMKKzE3Mjg1IDRmZTAxNDgwODg4NWE0NmY0N2I4MTNhMzUyNzM4Nzk5NGFiNTdlNDEgbGVnYWN5LXRydW5rCisxNzI4NiA3ODg2YjNiNmM0MGY3YmQ1ZWVjYWU1YzM2Y2ZmZjE4ZTI2Nzk3Y2Y0IGxlZ2FjeS10cnVuaworMTcyODcgMzQzNzkxMjdlZTNiNGQ5MWZmMDVlMzBlNTgzZjI2YTE2NDY4MzU3ZiBsZWdhY3ktdHJ1bmsKKzE3Mjg4IDlmYTNjNTcxZGFmZjIwMmUzNzdkMjMwYmRlM2U4MjA5NjdkMTQxNDIgbGVnYWN5LXRydW5rCisxNzI4OSBjMDUwOTk4OTQwNWVjMGVlYmE3NmNiN2YyZjE1OWE5ODFjMjc3MDc4IGxlZ2FjeS10cnVuaworMTcyOTAgZTM0OGVkOTQ2ZDFmNGMxYjBiYzE4Yjg1ZmZiOWRiYWZhOTk3OTY2MiBsZWdhY3ktdHJ1bmsKKzE3MjkxIGFjMzkxNzhmYTg1ZmM5ZTRjMjRlMWQxNjkxNjE5ZjJmODYzYmQ5NGUgbGVnYWN5LXRydW5rCisxNzI5MiAzYTkzMmNjNjQzMjMzZmRjZDhkYmFhOTJlZjYwZGMyODgzNDZjNDJhIGxlZ2FjeS10cnVuaworMTcyOTMgMTk0NDM1ODVjY2NjMjU1ZTg3YzU3ZGE3ZWExOGQ2NGYxMjhkODVjNyBsZWdhY3ktdHJ1bmsKKzE3Mjk0IGY3ZmQwOTVjMzFhNmFhYzk5YzllMjgzYWU3MzVlYmIyZmRmN2Y4ZjYgbGVnYWN5LXRydW5rCisxNzI5NSBjNzM4MDQxZjk3NWRiZTgzZWE2NGJjMWUxZGY0NThhMjFkZDRiNWIzIGxlZ2FjeS10cnVuaworMTcyOTYgZjRjOTJhMjQyMTFiZGRkMDMwY2U1NDM1ZDcwYjE3MWY3NzYwODc0OSBsZWdhY3ktdHJ1bmsKKzE3Mjk3IGYwNTFhYzgzNDBmN2I4YTFmYzA3ZjIzYmRhMjIwOWY5MTQ0MzE1MTMgbGVnYWN5LXRydW5rCisxNzI5OCA5M2IxZGFiMDk3Njc2ZDkyOTQ3MDMyYWMzZmMwNWNmMmU5NzFlZDA5IGxlZ2FjeS10cnVuaworMTcyOTkgNTIwY2U3ZWNlMjUzOTg1YWYwODllNjE3YzE0MzBlNzY4ZTU3NmRlMyBsZWdhY3ktdHJ1bmsKKzE3MzAwIDVkMTJkOTY2MGMyZWE4ZDM4NzdlNDgyZDI2MTI0MTJjZGZkNzQ5MDUgbGVnYWN5LXRydW5rCisxNzMwMSBjOWVlNmY3NDY3MGRhZjU1ZDVlYjJhNmEyNDdmNzFlNDhjNmU3MjdjIGxlZ2FjeS10cnVuaworMTczMDIgM2UzODc1MDdhOTkxOWIwNTUxMzI4Y2YyY2I3MzJiZTEwNzcxYjFjNCBsZWdhY3ktdHJ1bmsKKzE3MzAzIGZjNWI0MDYxNjI2MjM3M2VmNzQ2YmRhZDdlZjMxYWRkYmNjMTM4MGMgbGVnYWN5LXRydW5rCisxNzMwNCBlNWNkY2UyYTJiMTY0OWY2ZDYyZTcyOTQ1OTdlNzdkZjViYzJhOTJiIGxlZ2FjeS10cnVuaworMTczMDUgMGQwNjEzYjk1NzU4ZTdiY2Y5ZDA5M2I1MmU4YjRmZDkwMjcyNDMyNiBsZWdhY3ktdHJ1bmsKKzE3MzA2IDBkMTAyNWFlZmViZmYyNDg4YzkzNWQ1MzMyOTc5MzkxODFlYTAwNzIgbGVnYWN5LXRydW5rCisxNzMwNyAwMTVhMzRiZmJjY2JhMDk5MmJkYTc0NTE5NzhmMTRiM2I3ZDk2OWMwIGxlZ2FjeS10cnVuaworMTczMDggNjkxOWQ4ZTE0YTMwMzY5MDA2Mjg5M2ViZjdmMzhhZWYyMTEwZjg5MCBsZWdhY3ktdHJ1bmsKKzE3MzA5IDIwYWNlYjhlZGZhNWU2Y2E0ZmFkZjljNTI5ODdjNDI0NmMwZWU1MGQgbGVnYWN5LXRydW5rCisxNzMxMCAwYjY2ZDAzMDBlZWJlOWMyMDdiOWZjOGNjMTAzMTU3NjVhMjY0MDY4IGxlZ2FjeS10cnVuaworMTczMTEgOTVlZWIwNjFmYzZkNGQ0NTUxZTc4Mzc5YWU4MmQzZTAxMGMwMTRmNSBsZWdhY3ktdHJ1bmsKKzE3MzEyIGVkYTI2ZjEyMzIyNzRiZjZiZjE4YjA0YTkxZmM3YWUxODViNmMzNjQgbGVnYWN5LXRydW5rCisxNzMxMyA1ZWRkNDlkMzQwZWE5YWEwYTRkYmI0OWI1MzBlYzQwNmM5YmM2NWQ4IGxlZ2FjeS10cnVuaworMTczMTQgZGIwMjYwOTJjYjdlNDlkOGU3NjVmZjVjNTM4MmU3ODhhMDhkMjY0OSBsZWdhY3ktdHJ1bmsKKzE3MzE1IGFhNDQ1MzdkODBiNTNmZWRkNTZjMmU0Nzk1NmMwZDRlMTVlOGI0YWUgbGVnYWN5LXRydW5rCisxNzMxNiBlYzE2NWQwM2Q0NmNhODYxNzZjMDQ3OGY1ZmE0MTE1Y2Q2NGEzYWJkIGxlZ2FjeS10cnVuaworMTczMTcgMTdjZWM5NmY3NWJjMWQ1NjA5ZDIyMzE1Zjg3YTAxOGRlNDEzMjgzZSBsZWdhY3ktdHJ1bmsKKzE3MzE4IGUxM2RmNGU5MDc2Zjc1OGJjN2Q5MDQzZDhlODc2MzEyOWJkMzk4NDcgbGVnYWN5LXRydW5rCisxNzMxOSAwNzIxZGY3ODkyNzBlNzk0MzhkYThjMmVjMGY5YzIwZGZjMzJmMDk1IGxlZ2FjeS10cnVuaworMTczMjAgMTQyY2I0ZTczMTBjZGVhNGM1ZTA4MWQxNDNlNjUzNjgyOGNjMTIzMCBsZWdhY3ktdHJ1bmsKKzE3MzIxIDBlZjZlYTU4NTkwYjYwYTVhMzZjODcwOThkYzc3YWQ4ZmFjMWQ1M2IgbGVnYWN5LXRydW5rCisxNzMyMiBmOTBiODIzMjA1ZmYxZTFjNjhiYjJlN2RlYzI5OGYyMDYxYjY0YWRmIGxlZ2FjeS10cnVuaworMTczMjMgMzlmZjZiM2M0M2FmYzNlYjNhYjRkODZmNjY3MWFhNDc5ZTZiODZlNyBsZWdhY3ktdHJ1bmsKKzE3MzI0IGMzYzQ5ODU5ZTgwYjA4ZmQxMTBkZTRiYTIyNTdhNjUyNjQ5Yzk4YTUgbGVnYWN5LXRydW5rCisxNzMyNSBmNmI4NmUyZGM1NWJiZmYyNmE4Y2EzNDc1MTJhNWQ0ZmEzMzA3NGVmIGxlZ2FjeS10cnVuaworMTczMjYgOTUzN2U3ODkzZjNjM2Q0NTNhYzUyZjY0NmVkNzkwYWM2ODQzZjY1OSBsZWdhY3ktdHJ1bmsKKzE3MzI3IGI3YmI0YTM1YzEyMTg5Nzc3OWE4ZTFkOTk0YTc4YmYwNWU4MzhmMjQgbGVnYWN5LXRydW5rCisxNzMyOCBlNGNhOGMyMTM3N2EzY2I3M2I5M2MyNWUzNTgwOWQyZjVhMzMyZTEzIGxlZ2FjeS10cnVuaworMTczMjkgNzE0NTY3ODJkOGZkNWExZjMwYjk1ZmQwMTAzZTJkZjY3YjExNTI4NCBsZWdhY3ktdHJ1bmsKKzE3MzMwIDk5OThiNzA4N2VlNjA0OWFjMGZlYzFmZjdlMGZiMmNlY2NiMzY5OGYgbGVnYWN5LXRydW5rCisxNzMzMSBjYzY4M2EwYWM1NjhlYjg0NDcwNTA4MGNiMWYzYTNiZmUyODE2ZTQzIGxlZ2FjeS10cnVuaworMTczMzIgODllM2I2YTU0ZmU5M2M2ZGM1MzgyOGNjOTliOWU4MmM0ZmRkMGQ0NiBsZWdhY3ktdHJ1bmsKKzE3MzMzIDBkMTVjODA1MzcyNmIyN2Y0ZjJiMDJmZDE5NGExMzFmNGJiN2ViNzMgbGVnYWN5LXRydW5rCisxNzMzNCA1MDA0MzQ5ZWRlNGRmOGVjYTQxMWVlZmJjNDhkODJkZjUyNWQ0NmYwIGxlZ2FjeS10cnVuaworMTczMzUgOGE2M2M2MDRlZTU5OGZiNjQwZjFlZTUyZjk1ZTIzNTcwYTdkOWQzNCBsZWdhY3ktdHJ1bmsKKzE3MzM2IGMzMmY1NDkwZjVlM2FjMmU4MjkyODFiOGU0YTNkM2Q3MWQ3Zjc1ZGUgbGVnYWN5LXRydW5rCisxNzMzNyAzNGY5YTAxN2NlNjMyY2NkYzhjMTcyOGQxMjU2ODQ2NzQ0ZTRkOTFhIGxlZ2FjeS10cnVuaworMTczMzggYWMwMjQ2NTg2ZDUyNzgyYjVjZWZlYjE3OTY3MWVkMTcxNDgxYTYyOCBsZWdhY3ktdHJ1bmsKKzE3MzM5IDUxMzY5YTU3YjBhYWI0ODBhMDc5YzZlOGJkMTNlMTNhOTI3NWE3MTIgbGVnYWN5LXRydW5rCisxNzM0MCA4YTcxNWQyZGZlYjlmOWE2MWQ3YWMyNjBhYzYzZjUzMWM0NTVlZTdkIGxlZ2FjeS10cnVuaworMTczNDEgYWJhN2ViOWQ4ZDYxNDU0Zjg5YTVmZDg3ZTk5ZGIzMzYxYjM5MTBmMCBsZWdhY3ktdHJ1bmsKKzE3MzQyIDUyYTYwMGIzOGY3ZWU1OTgwYzBlYmU2MjBmOTg5YzFmZjMzMjFjNWIgbGVnYWN5LXRydW5rCisxNzM0MyBmNzhmMjg3YjNhZGRiYzg4N2MxOTQ0YjViODczZTY5NDFmZTAxOTJmIGxlZ2FjeS10cnVuaworMTczNDQgMzM0ZDlhZWJhYWYxMGEwMmVkMTNhMjliNzBkMjExNjVhNDM5ZmEwOSBsZWdhY3ktdHJ1bmsKKzE3MzQ1IDc3MjhiMGVhOTM0NDFjNTMwMGFjYWZlZTMwNjhjNjhjMjIwNGViMDEgbGVnYWN5LXRydW5rCisxNzM0NiAyYmEwOGQ5OTFjNDMzMGFmNGQ3ZWU0NjgxMGMyOTE3NmUxOTI4OTM5IGxlZ2FjeS10cnVuaworMTczNDcgYjE5ODg2YmVhMzc4N2ZhZmMwZDIxYjhkNDVhYTJhNzBhZWE0YjY4ZiBsZWdhY3ktdHJ1bmsKKzE3MzQ4IGU2YTlkNDEyNjUyZDI4YTljZTUxYzU0YzI5OWI1Y2M3NGRiZjBiNjUgbGVnYWN5LXRydW5rCisxNzM0OSBhZWQzN2Y1YWE0NzVlNzQ3M2Y5ZThkNmFkY2QyOWZhNGMwOGMxYmQ4IGxlZ2FjeS10cnVuaworMTczNTAgZDMyN2ZjNDdmOGZkZGZhZDk3ZGQ5MGRkZDBjMWI4YjNhODYxZWU4MSBsZWdhY3ktdHJ1bmsKKzE3MzUxIDM3MWU4OGFmNjQ1ZjFlODU3NDk1ZmRhNWVlM2EwMzA1NDYzZDA1ZmYgbGVnYWN5LXRydW5rCisxNzM1MiA3ZjIzZWM1Y2Q5Y2E4NDU4Yzk2YThmMWVmYmQzZGNkNmYwZDM4MGZhIGxlZ2FjeS10cnVuaworMTczNTMgMjFkODQ3NjUzZjU0Yjk1OTkwMzI0MDMxMzliYTM0YTA5MzM3ZDVhYSBsZWdhY3ktdHJ1bmsKKzE3MzU0IDU4YmE5MGU0ZTk4NWYxYmFhOWNlZmFhZWQxZGM0N2U5YThkMzMyNGYgbGVnYWN5LXRydW5rCisxNzM1NSBlZWYyNTczMGU2NGRhYWU3ODIxMjQyOWRmODgzN2IzOTNlZDgxNDgxIGxlZ2FjeS10cnVuaworMTczNTYgMTVhY2Q1YzU5MWZkNGMwNTE4ZGYyNGViOWIzMTA5ZTBmOGRlZWUxNyBsZWdhY3ktdHJ1bmsKKzE3MzU3IGRlYjNlOTY4NWExZWRkYzJlMWJhOWVjY2U1Y2YwMWY3OGZkNDQyYzcgbGVnYWN5LXRydW5rCisxNzM1OCAzODIzZmM3MjJiNTBjNTMwOWQxNzRkNTVjNWI5YmExZDQ5ZmQ1NDkyIGxlZ2FjeS10cnVuaworMTczNTkgMjhhYzE0OGQwMTI5YTc4MDJjYzc1OGZmYzE4ZDg2YTNmYWVlNDIxZiBsZWdhY3ktdHJ1bmsKKzE3MzYwIGM4NzI3YWNhMTQwNGM4OWYzNjZiZGVmMGRmMzZhZTQ4YmYzMGQ5YTcgbGVnYWN5LXRydW5rCisxNzM2MSBjMmY3YWQwNzBiOWVmZjMwMTNlODhmYWU5ZTM2ZTZkNzViMjAyZDBlIGxlZ2FjeS10cnVuaworMTczNjIgYTAzOTJmNDM4OTYwNWY4NzA1MDdiMjlkMzJkYTIwNWE2ZDM4NGNmMCBsZWdhY3ktdHJ1bmsKKzE3MzYzIDc1ZWQ0MjYzNDM2NjI5ZWFiNDk3MGRkMmI5OWI1MjlkYWIxYTk4YzYgbGVnYWN5LXRydW5rCisxNzM2NCAyOWZhY2I3OGQ2ZjQxNjc0MDhlYzZmMjI4Nzc5NzUwNGQwNmY3Yjk4IGxlZ2FjeS10cnVuaworMTczNjUgMGQ0OWRkMGYxYmNlMzEzNWQyNjE5Yjc4MjI4NDcwNTNlYmU4YWQyMSBsZWdhY3ktdHJ1bmsKKzE3MzY2IGIzNDA5NWU0ODhjZjFhYzg4MThiMjIxM2NiZGMyOWFiZTg5NDJlOWIgbGVnYWN5LXRydW5rCisxNzM2NyAzYjYxOTM4NWE5MGU0N2M5NjhjZjAyY2ZkYzlmYjdiMzc4NGVkODdiIGxlZ2FjeS10cnVuaworMTczNjggMWRiNDUzMjk2Yzc2N2JkYWNlZmFjZWZmMDYwYWY1ZGU3YWZhYzU2YyBsZWdhY3ktdHJ1bmsKKzE3MzY5IGI4MjgwMmJmN2ZmZjJkZmNjNGE5YWU3MTkwZjBhNTEwYmJkMzQ0ZjUgbGVnYWN5LXRydW5rCisxNzM3MSBiZjg0NGFjMmM4MWFiZjMwMjMyNWM4MjEyYjI0YmVmMDMzYjYwOTllIGxlZ2FjeS10cnVuaworMTczNzIgNTE2N2QyM2JkNmIwYmYwMWRhZDIwOGUwM2I2OTQyZmE4ZjkxYjdiMCBsZWdhY3ktdHJ1bmsKKzE3MzczIDc0MzUzMzFiNDhlZTY1ODQwNTExNjVlNjEwNzRmMzFjNzhiMGFjNzMgbGVnYWN5LXRydW5rCisxNzM3NCBhZGRhYmE5OTEwNzdkNDgzOGJiZDYxZjY0NmU1YTgwNmMwMGFhMmU4IGxlZ2FjeS10cnVuaworMTczNzUgOWZlZDRlZWJjNTg2NGZjZDhlNGVlYTUwNzM5ZWNjYzU1NmZhMjdlYSBsZWdhY3ktdHJ1bmsKKzE3Mzc2IDIzNWJjZDNlNWYxNzQ0NjkzZjZhOGQ4MzdjM2ZlODQ1ZTQ1YWY0YjYgbGVnYWN5LXRydW5rCisxNzM3NyBjZDNlNGQ3M2RmOGU0ODYzZjYzMmM1M2UwYzAwNzkwMzk2YzUwNWY1IGxlZ2FjeS10cnVuaworMTczNzggOTE5ZDM2ZmRhOGM4ZDE4NTcxMTg3MThhNzY2NTEwM2VmMzMzZmVhYSBsZWdhY3ktdHJ1bmsKKzE3Mzc5IGZjNTRlMzk3MTY5ZmY2ZWFkYmNiMDlmNjU0ZTg4MzUxZDNkZjFmMjUgbGVnYWN5LXRydW5rCisxNzM4MCBmZjRhZTY5MWJlOWI1MGY5YzJlNmUxMmUzYjQ0MDJjNmRhNzI4NzA0IGxlZ2FjeS10cnVuaworMTczODEgODZkNDc4NjczNGNhMWRkNjUwMGU0ZGUzOTQwZGRkYjAxMGQwOWQ0NyBsZWdhY3ktdHJ1bmsKKzE3MzgyIDczNjZiYjk1ZjIxMjk5MGE4MGJhN2NmNjczZmU0Mzk0NjAxYzJkN2QgbGVnYWN5LXRydW5rCisxNzM4MyBiZTFhYjE4NzM1OGM4MWYwOTYyZGJjODJjYWI4MDM1MDk4MzcwOTQzIGxlZ2FjeS10cnVuaworMTczODQgOGQxYTQ2OGY4ZTU5MTU0YjcwMmI5ZTRjY2M1ZjMxNzRiM2VjOTEyNCBsZWdhY3ktdHJ1bmsKKzE3Mzg1IDMwNjdhZTI3NDU4YzI0MDU5MmVjYzJlZTVhOGM2Mjg0NDQzMmE0OWUgbGVnYWN5LXRydW5rCisxNzM4NiA3MTUwOTc5Zjk2OTQxNTY1NTFlZjhmNjQ0M2RkYWIyZjgwZjNlM2M1IGxlZ2FjeS10cnVuaworMTczODggNjM1ZjY5MTIzMzQ5M2U1Yjc5MzVhOTQyODc0YTAwY2M4MzJlZjZjMyBsZWdhY3ktdHJ1bmsKKzE3Mzg5IGE1ZDY1NDU5YTdiNjkyMDMwZTU0NTExMzRjMDY3NzRjMDhkYWI0YmYgbGVnYWN5LXRydW5rCisxNzM5MCA2ODc5NWMxM2FjZWEwMDExNmExNWUxMTZjZjQzNGNiNTY3ZjMxZGY4IGxlZ2FjeS10cnVuaworMTczOTEgNDE3NWVlODBhMDg1OGM5ODc2ZjA3MzA2ZjcxMWM4YjlkYmY4ODJmMCBsZWdhY3ktdHJ1bmsKKzE3MzkyIDA1MmIxMTNjNzVkNGNiZTZlZDk2MDE0ODg5MWNkZjBkZGJkY2IwMTQgbGVnYWN5LXRydW5rCisxNzM5MyAzNjlhYzE4NTA1NWQzMTFjMDFkYTMwODkyY2RjYWRmYTc0NzgzZjg5IGxlZ2FjeS10cnVuaworMTczOTQgZGMzYmVmNzcxZDA3MzJjNjkxY2U1ZGE5NWE5NTBlMjQyNmRjZGEyMCBsZWdhY3ktdHJ1bmsKKzE3Mzk1IDM1YWU4ZGZmOGVkMDk5YmVhOWQ5YTVkMmIwNzIzMjBiNmFhMmNhOTYgbGVnYWN5LXRydW5rCisxNzM5NiA1NjFjMGIxZDUxNGIzNGY4OWFiY2IzYzJjZTQzNjFjZGZhNmZkMDhlIGxlZ2FjeS10cnVuaworMTczOTcgYTQ1Y2ExZjdmMjQxNWJiNzI0MWVkOTc4NTY4Y2FkYjllNDU0MWIzNyBsZWdhY3ktdHJ1bmsKKzE3Mzk4IGMxNjM5NjUxMWFhMzU2YWExYzlkYjdkODhhM2Y5ZmRjNDU1MzBjMjYgbGVnYWN5LXRydW5rCisxNzM5OSBmZjcxMmRlOGJkODEzNDVkNzQ4YzQxMmFjMmExZmRlMTJlMzg3NDhjIGxlZ2FjeS10cnVuaworMTc0MDAgMTIyNzc1ZmZhMzZjOTNmZTAyZGNkNTQwNTRkNWNlYjdhOGY0MWZkNyBsZWdhY3ktdHJ1bmsKKzE3NDAxIGVmYmEzMDcwY2RkZWM4YWY5YmFjOGE3NjFhYjE5ZDZlODI5MDFkMTMgbGVnYWN5LXRydW5rCisxNzQwMiBhZWQxMjI2YTdmYzRmMzRkMTBjYzM0YTA3MGNhNmVkYTFiNzg5OWMyIGxlZ2FjeS10cnVuaworMTc0MDMgZTljMzEzNzQ1MzAyMTdhNjY4YzM4MDRkNGY3YzhkMzEwMGVmOWNhMCBsZWdhY3ktdHJ1bmsKKzE3NDA0IGQ0OTBjMmExODZkYWZjZDlhZjM4ZTNkZDZmZDAzMjU3NWNkM2M2MjcgbGVnYWN5LXRydW5rCisxNzQwNSA3ZmE0MzAyYTVhMDg3MGYwNDYzMTkzYTI1MGFiZjQzOTRjMzdhODAxIGxlZ2FjeS10cnVuaworMTc0MDYgMjhkZjRmNDU5NjdmYjY0ZWI5MmI4Y2NlZjUxOWVmMGEwMTM5ZDViMCBsZWdhY3ktdHJ1bmsKKzE3NDA3IGE4ZDFjMDMwYjE5ZmU2ODBjNzBiNjc2OTVlNDM2MTM5NTViMTFjYjIgbGVnYWN5LXRydW5rCisxNzQwOCBiM2YxNTYxMTYyNzEyM2Q5MDlmOTlmNTJjNjNlNzdiZGE4YWIwZWYwIGxlZ2FjeS10cnVuaworMTc0MDkgODc3NDVlNTU0NzI3MTRkY2MyODhiMzVmNzQwOGViZjNjODUyYzg4YiBsZWdhY3ktdHJ1bmsKKzE3NDEwIDIxOWUwMDIyMWM4NDM1Y2ZiN2ZkNDhmMzYzNzk3MDdmOWRjYzhlZGUgbGVnYWN5LXRydW5rCisxNzQxMSA0YWMwOWU5NzA4MjgyZGY1NzFjMDVlYTI0MWMwMzM5MDJjNzdmZDQ1IGxlZ2FjeS10cnVuaworMTc0MTIgYTcxMzg1ZjhiNGRhYmZkODFmMzNkMWVkYmJlODg2MzliODllNzQ3YSBsZWdhY3ktdHJ1bmsKKzE3NDEzIDVmMmI5ZWYzZjJhZWMxYzM4MjNhMzkzM2EwNGMyOTYyNzk0NGUzNDIgbGVnYWN5LXRydW5rCisxNzQxNCAyOGNhYWEzZTI5MmZmZTFjM2IxMDg4NmU1MTAxNWQ5YjYyY2EyYjM2IGxlZ2FjeS10cnVuaworMTc0MTUgZWViOGVlNDg4MTA2YTdjYjliOWViZjNmOWIwMWM4MzI2MTM0MTAyZCBsZWdhY3ktdHJ1bmsKKzE3NDE2IDA3YTJkYzFiNzJhZWEyZmVkMTQ5ZWNiOWM0NDBhMzExYTY4ZTY2ZDQgbGVnYWN5LXRydW5rCisxNzQxNyBmZThlZjQxYzMyMjNmOTlmOWIxN2RhNjBkNTJjYjYxMzZkNmRlYjM2IGxlZ2FjeS10cnVuaworMTc0MTggMDNlNjE1MGZkOGQ1MjRhODJkZTUyNzVmNjdjZjdjNDMxMDVlNDViZiBsZWdhY3ktdHJ1bmsKKzE3NDE5IGJjZjIzYjUyYjAyZmQ5YWViMGFiNjg1ZDliYWQxNDdiNjU5OGIzNzIgbGVnYWN5LXRydW5rCisxNzQyMCBhYzgxZTBjYWM1ZjZjZDhiMDlmNmEzMThlMmMwNGYxNjYxZmM0NTBmIGxlZ2FjeS10cnVuaworMTc0MjEgYjdlZDU0M2Y0YzU2ZDJhNjIxZjZhYzUxNGQ3ODEzNWY5ZWU1YzQ5NyBsZWdhY3ktdHJ1bmsKKzE3NDIyIDYyOTc5YzdiOWE3MTliMzEyNDM5MmJlMTI1ODA2ZDJhMmRkNjFiNjcgbGVnYWN5LXRydW5rCisxNzQyMyBmNDQ0Y2ZkNGZhMDc1NDEwOTIxOTY3MWUxZGEwYzMyMDc3MTVmZjJmIGxlZ2FjeS10cnVuaworMTc0MjQgNTVkNjczMDI0ZTVmOTZiN2I0NjY5MTMyNWVjYzVjMzc0YTE5NmEyNSBsZWdhY3ktdHJ1bmsKKzE3NDI1IGJjYTFkMjAxMzYyNmI5MjQ1ODE3YmM5N2U0ZGE1MWU5MzE5MjQ4MDEgbGVnYWN5LXRydW5rCisxNzQyNiA2MDA1MTU3NDdjNTFhMzVhMjRmMjZiOWY4NDI5ZGRkZDRhOGFkMTg4IGxlZ2FjeS10cnVuaworMTc0MjcgMjViN2FjMDU2ODllNTA5MmRkZWNmMDY3MzBmNjhiZTIyNWViYTZjOCBsZWdhY3ktdHJ1bmsKKzE3NDI4IDg1NzM3NmQ2OTliYjlkZjQyOWE1MDhjNzdhZDBhZmFjZTI4NmJhYWEgbGVnYWN5LXRydW5rCisxNzQyOSBiNGEzN2FiMzI5ZGEyNDgxYjk1YzNjMzFhNmQ5YWFiMGRlZjhlMTlkIGxlZ2FjeS10cnVuaworMTc0MzAgYmE1NDIxZmYwMjU2N2IwMmU3Mzg2NWI2NGJlOGQ0YWI5N2RjNDgzYSBsZWdhY3ktdHJ1bmsKKzE3NDMxIDgzNjlmY2Q3OWE2NGJjZGY0OGY5OGE2YzRlODYxYjlmMjQ1NTQyMDAgbGVnYWN5LXRydW5rCisxNzQzMiAxODMzZDJiYmY3NmE0OWNhMTBmZWZmMzc0Y2E0NmUyNTNhZTYxZmNhIGxlZ2FjeS10cnVuaworMTc0MzMgMzQ0ZDIyYjlkYjMyYWQ5MmI4ODUzY2YwNmI4YzUwYmYzMTkzOGI2OCBsZWdhY3ktdHJ1bmsKKzE3NDM0IDIwYjIyZmRlMWNiNzlmOGYzZDNiZDU4MjRkZGZjNzRmYzNhMDQ1MjIgbGVnYWN5LXRydW5rCisxNzQzNSA1Zjg3ZWVjN2I2YjhmNjZkMmI2YTYwZWE4ZTU1OGIyZDA4NmYxMGNlIGxlZ2FjeS10cnVuaworMTc0MzYgNGQ3NDQ1MTVhNzNlNGIyYjQzMmUyNjViNTk4NWY1ZjQ3YzNmMGI4MSBsZWdhY3ktdHJ1bmsKKzE3NDM3IDY0MzVjYzQ3ZmNjNmZmMjQ4YjE5Njc0ZTc1NjBiM2ZhMGY3ZTQwZWIgbGVnYWN5LXRydW5rCisxNzQzOCAyMTNkYmM4ODAxNTk5NjdmYzAwM2NjMTc3MGM1ZGJhNDdkZjk3MDM3IGxlZ2FjeS10cnVuaworMTc0MzkgODljZTQ4MDk2M2Y5YmI0MGU0Y2VkZmEwOGFiMTMyMzU1MGU1ZTFlMCBsZWdhY3ktdHJ1bmsKKzE3NDQwIGQ4NGQ1NzU5NDgxNTU2YWE3YTgyMGQzOWZhOTBhYWQyMmNmNjczMTUgbGVnYWN5LXRydW5rCisxNzQ0MSBjZDFiOWQ4ZDA0NWRkOTRkZTJlYjM5MWMzMzIzMjI3N2FiMzY1ODUyIGxlZ2FjeS10cnVuaworMTc0NDIgZThkODc1OGFkZmRiNjM4YzYyNGQyMzMxOTNiOWY5YTg4Y2E2NGRjYyBsZWdhY3ktdHJ1bmsKKzE3NDQzIGRjYmMwODRkMDQ2ZWJhNWQwMjRiMjQzNWI5ODMzNDQ1NDM3ZjUwOTIgbGVnYWN5LXRydW5rCisxNzQ0NCA5YWI0MTlhNWUwNTI4OTE5ODlhNDcyOWU0NjdlMjYzMDVmODU2ZjQ3IGxlZ2FjeS10cnVuaworMTc0NDUgYzQyMTA1YmRiNWZjNGViMWFlNDYwZGU2Y2ZhZDAzZTcyM2Y3OGI2ZCBsZWdhY3ktdHJ1bmsKKzE3NDQ2IDE2YTljMDU3ZGMxMTlmMmM1MzU3ZTIzODNjMjNmZjIzNzYxNDU1NGUgbGVnYWN5LXRydW5rCisxNzQ0NyA5MGYwNzg5ZDU3YjcxN2QzMGQyNzRkZDlmNmY0ZWI2YTQ4M2NkNjEwIGxlZ2FjeS10cnVuaworMTc0NDggNmMzMTdhZGMxOGE5ZTJiYWRmMWFjYjZiOGQ2OTlkZTMwMzkwZWIyNiBsZWdhY3ktdHJ1bmsKKzE3NDQ5IGExZTJlOGQ1NWVmMDA1MDA3YTBmZmQ3M2JlNDM0YmVlNzEzMDdlNmEgbGVnYWN5LXRydW5rCisxNzQ1MCAyYTQ0MTZhZDgzN2M0NTk2YTQyZjkzNWU4ZjFiNTdjNmQ3MTdiMTIwIGxlZ2FjeS10cnVuaworMTc0NTEgMjU2ZDFiYjYzODg4OTQ3ZmM2MTYwZDYyZjA4ZDQ1NGI3Y2ExMzhiYyBsZWdhY3ktdHJ1bmsKKzE3NDUyIGY0ODYxNzZmNTZmODcwODcwYWE0NzFmOWQ1NDdiM2JmYTA1YjVlYTUgbGVnYWN5LXRydW5rCisxNzQ1MyA2OWY5NmI2Y2FkMjkyYjQwNjBmMTJjNDM4NTg4N2M0OTAwZjFlNGY5IGxlZ2FjeS10cnVuaworMTc0NTQgNDlhMDQxMzMwNDYxY2U4NGE4NDVlMGVhYThlZmQ0ZWEyOGIxMWNhYyBsZWdhY3ktdHJ1bmsKKzE3NDU1IDAxNGNmNmQyOTM5ODcyZGFhZTJhODEwZThhMDJiMmUxOTM4YTRmYTMgbGVnYWN5LXRydW5rCisxNzQ1NiA4ZTVjYTNmYmNkYjY0NjMyYjk1MWMyNDI2YjRhZmM2OTA4NGJmMGU2IGxlZ2FjeS10cnVuaworMTc0NTcgMjRmYmJmMTNkYWE1YmQ2NzZlM2YzMThkNGVhOGM3MzNlYzJmMDVhYyBsZWdhY3ktdHJ1bmsKKzE3NDU4IDgwYTc4MjA4NmE1N2YxOWI3YzJlNmFiY2FhZThmOGUxOTExNjE0MzIgbGVnYWN5LXRydW5rCisxNzQ1OSBkMjYwOWQ0MzA0ZWZjNWNhY2ZjNzMwZDg1YThjY2E5ZTAyNDA1NzJmIGxlZ2FjeS10cnVuaworMTc0NjAgOGFkOWJkOWNhNjBjMDA0YWVjYjdlZThiYWI0OTQwYmZhY2RmZWQ5MCBsZWdhY3ktdHJ1bmsKKzE3NDYxIGYyZmM2NmE2MTUzYjQwNTZlNjJkOWFlZTVmMTBjODk0MjEzNjJjMGEgbGVnYWN5LXRydW5rCisxNzQ2MiBhYzU4M2U2YTNjOGI1MWE1ZjIwYjYzNTg2YjA2NTU5ZDQyYTAzYWYyIGxlZ2FjeS10cnVuaworMTc0NjMgMTQyYTkwZWVhOGY0YTE4OTIxNjkxNDdiMTNjOTFkYjExMDNkNTExMiBsZWdhY3ktdHJ1bmsKKzE3NDY0IDBiNjMzMzI1OGY1NDdkMWU5MDBjZGQyN2Q2ZDllMjczZDlhZjkwN2UgbGVnYWN5LXRydW5rCisxNzQ2NSAxM2M3M2EyMTljYjExZDllZTM3NzgzZDQ3MTU1MDI1MGZhYzJjY2Y0IGxlZ2FjeS10cnVuaworMTc0NjYgZGNiOTI2ZTcyOTZlYzBhZDJmYzRiYTAzZWMxNDU3NjA2M2VjOWE3ZSBsZWdhY3ktdHJ1bmsKKzE3NDY3IDFlNmMwNDRkOGU1OTg1MTU3ZDZhMGRmNmJiNTA3NzUzMTg1NzE0ZTUgbGVnYWN5LXRydW5rCisxNzQ2OCA1YTUxMmVjOGE3YWRlMjhkOWU5YzE1YmM4ZWQ1ZTk1MjU5OTU1MTk1IGxlZ2FjeS10cnVuaworMTc0NjkgMzNlMmVmMzM5ZTUwZDE5MTNkNWY1Y2I0Y2QyNjMzMjI5OGFlZGNlYyBsZWdhY3ktdHJ1bmsKKzE3NDcwIGM0ZDA1OTg1YzZmMzA2OWM5MTJlNjFmNTA3MWZhZjMxNmVmMGEzZGUgbGVnYWN5LXRydW5rCisxNzQ3MSAyODQ1MDhjNjUzYzdjM2U5MzFiMWJlMjNjMWM1NTlmNTYyMzJjMDY0IGxlZ2FjeS10cnVuaworMTc0NzIgOWQ3OThhNzYzZDI0MTc5OGQ3MGYwNTJkMTY1MzdjZTVkODg5MWE1ZCBsZWdhY3ktdHJ1bmsKKzE3NDczIGNiNzYzODM1YjE3NjFkYTdlNzFlZjczMWY3OWViYjM1NDU0Y2E5YTggbGVnYWN5LXRydW5rCisxNzQ3NCA0ZjA2OWY1ZGZhN2I5NzgwYjBhNTJhNjZkY2Y2NmFhMTQ1ZTg0MDFmIGxlZ2FjeS10cnVuaworMTc0NzUgNGFjY2M2M2Q1NmRjNTY2ODY0ODE1NzQyOGUwMGZkMjAyMGQ1MTg4ZiBsZWdhY3ktdHJ1bmsKKzE3NDc2IDQxYWZjZDA2OWE2YzUxODRkMDM5ZTkwZWQ0NDIzNDhiMjE3MWEwNGUgbGVnYWN5LXRydW5rCisxNzQ3NyA0NmY3NjJhNjFiOTk2MzAwNTIxMzExNWFkZTU1NWQyMzEyOGI4MjM5IGxlZ2FjeS10cnVuaworMTc0NzggYWFhMWRjMTYxY2UzZDJmMzBiMWMzODE1NTY0MDRkYzk2MDdlNDgzNSBsZWdhY3ktdHJ1bmsKKzE3NDc5IDk2MTg2MGQ2YmVhOTNiYTU0ZjQxMmU0NTJlNDA2MWYzMTYyZDBmYTEgbGVnYWN5LXRydW5rCisxNzQ4MCBhZjM2YmE1MDYxZjZlODQ1Mzg4ZWYzMjU5ZWQwZWUxYWE3ODc1NjY2IGxlZ2FjeS10cnVuaworMTc0ODEgZmU0N2QyMzhiNTBkZTI1MmMwZDg4MjA3NGE2NzMxNGQzZDc0MWI2OSBsZWdhY3ktdHJ1bmsKKzE3NDgyIDQwNTk1MDE3YTk5MmU1NTJlM2JjYWUzZTlhM2JhM2E3M2RjOTBkOGUgbGVnYWN5LXRydW5rCisxNzQ4MyA3MjExZmJlMGRiOWQ4NzA5YjgyYTIwZmMyYzg5OWZmMGZlYmZiNGIzIGxlZ2FjeS10cnVuaworMTc0ODQgOWQ5OWEyZGY2NzVmNDk2YWI0YjA3NmFkZTkyODE3M2IwMDFlMmIxNiBsZWdhY3ktdHJ1bmsKKzE3NDg1IDc4OWM1YjZjMGYwOWEwOTc5YzU5MjRmZTExMGViMDdhNmViNTgyZWEgbGVnYWN5LXRydW5rCisxNzQ4NiAzY2QyMTc0ZWUxMGQxMTYyMjM0NTM0YzI1ZDQ2YzQ4MDNhNjdiNzkyIGxlZ2FjeS10cnVuaworMTc0ODcgNGQ2YTVlNWZlOThkYzg5MTA2OGQ0ZTgyYjQyMTBmOTc5ODhjNWRlNCBsZWdhY3ktdHJ1bmsKKzE3NDg4IDdkMGUzNDUwZWU0MTA3NDZhNDZhNjgyN2Q1MDEyODdmZjljZTM1YTYgbGVnYWN5LXRydW5rCisxNzQ4OSA4YmQ1MzQ5ZTdhYThlMDRjNjE1YzM3MzQ0M2IwMjY3ZTdhNjA5ODEyIGxlZ2FjeS10cnVuaworMTc0OTAgZGI5ZWE1YjVmMzM3ZTdmNWYyYWUyNmMzYTZhMzI3ZDA1OGFkMzU1NCBsZWdhY3ktdHJ1bmsKKzE3NDkxIDBjMzAzYTIyZDlhNDk3MTE5MTE0ZDYzNmUxNDY3OTEzMTFjOTViZDMgbGVnYWN5LXRydW5rCisxNzQ5MiAzNzM5N2JkMWY4YThkYjRiMTg2ZjEwMTU1MjU0ODkwNTk0OThmMDkzIGxlZ2FjeS10cnVuaworMTc0OTMgMmUxNzBjMmY2MWUxMzhiMGU3YjVhZThlZjJmZjU3MDUxMTIyNWNlYiBsZWdhY3ktdHJ1bmsKKzE3NDk0IDEzMzYyNGFiYzUyNWFlY2RlYmYzZWI1ZTBhMjc4ZGQ1Y2Q3YjJlOTUgbGVnYWN5LXRydW5rCisxNzQ5NSAzZmVmZWFmYTNmNGEwZjVhMmE2ZTZiMzQ1NTkwOGQwMzM5NzA3Mjk3IGxlZ2FjeS10cnVuaworMTc0OTYgOGE3ZDQ3ZDA3OTgxMjJiNGU5M2E3ODhhMGQ0ZTlhNDFiZmY5Y2FjYiBsZWdhY3ktdHJ1bmsKKzE3NDk3IDA4ZTFjM2M0MWU2MDdmNDYxZmVhM2EwMDE5YjdkMjljZDIxOTJiOTYgbGVnYWN5LXRydW5rCisxNzQ5OCBiOTU0YzMzZjBiNGIwY2Q3OTM0ZjBhOTIyYTdmNzJiYTc1MTE3MjA1IGxlZ2FjeS10cnVuaworMTc0OTkgNjYzN2MwOTFmZjQ0ZjM2MmI4OTNkMWFmYjdmN2U4ZGMzYWVmNDcwNiBsZWdhY3ktdHJ1bmsKKzE3NTAwIDJkMzBjMzVmZWViZTUwMzFhZTg3NTUxZTJlODFhMDM5OTBlMWMzMWIgbGVnYWN5LXRydW5rCisxNzUwMSAxYjgwNjU1MzkwOWY1ZGJiZjIyNDY4MjZiODE5Y2E5ZTY2MGY5NDk1IGxlZ2FjeS10cnVuaworMTc1MDIgM2I3MGU2MDI5OWEzMTg3NzUwNjEyNWJiNjliZjUzYWRmMTk4MjgxZCBsZWdhY3ktdHJ1bmsKKzE3NTAzIDE1Y2JlMzk5YTljM2I1ODVjMjA0MzQ4ZDI4MTRjMzg5MGU1OWNhZTEgbGVnYWN5LXRydW5rCisxNzUwNCAxZWM2YzYzMzQ3ZWEzODMzZTI3N2E1NmNhMmFiZWE0YjU0ZWZhZmE4IGxlZ2FjeS10cnVuaworMTc1MDUgZWRkYTM1M2JkZTEyYTFkYjZiZTgyMDc2ZjgwNWIwYjI1NDNjOWM4OSBsZWdhY3ktdHJ1bmsKKzE3NTA2IDdmYzQ1NjlkOTYyNTA3MDUyY2Q2YjMzN2U4NDBmNDQ0Y2QwYmNmZjcgbGVnYWN5LXRydW5rCisxNzUwNyBmNGYzODQxYTI2ZWRkMTRiYmM0NjkzMjY0ZTE5N2YwNWE1ZTNjODEyIGxlZ2FjeS10cnVuaworMTc1MDggM2Q2ZmU2NGJjZDIxOGEwYzRjZTdiMmVlYTFiNmIzYWE2M2E1ZDhmMyBsZWdhY3ktdHJ1bmsKKzE3NTA5IDBiZDc0NmJjNzYyN2Y3ZjQwN2FmMDE0N2JiMDNmMmRiZTU2Zjc5ZDIgbGVnYWN5LXRydW5rCisxNzUxMCAwMjI4OTE0ZTBjNWYwZjcxMGI2ZGIyNDQwZTNmNDYzNzNmNjBmYThmIGxlZ2FjeS10cnVuaworMTc1MTEgNjAwMjllM2UwNWVlYThlMWZkYTAwMTI5NzZhOTYyNTk4YmU0NWYxNiBsZWdhY3ktdHJ1bmsKKzE3NTEyIDk0NjcwOWU4MmJlMDJkNzA2MWEwOTZjNmQ3ZWQ2NjgzMDM4YzNjNDEgbGVnYWN5LXRydW5rCisxNzUxMyA2ODZkM2NjYWViNGE3ZTFhMDMxMjQxNDZkZGVkYzE1MmMyYWE3NjhmIGxlZ2FjeS10cnVuaworMTc1MTQgNjk5ZmJiYmEyOWE3MzBjOGEwODM4MTljZmY2ZGE2YmNlZjEwMDU3MSBsZWdhY3ktdHJ1bmsKKzE3NTE1IDk4MzUwMmIyY2Q0M2E0M2Y4YWI3ZGFhZWM4NzM4ZmM3MDQ3YjliOTYgbGVnYWN5LXRydW5rCisxNzUxNiBlN2Y3M2QzNWVjZDhjMmY4MmYxYjY0OTJkYmNjZGRkYWFmMjAwYzA1IGxlZ2FjeS10cnVuaworMTc1MTcgMmQ2MTg4YzJlYTU2ZjFiYWY5ZWE5ZjdhOWMxNWQyMmMxZGY2ZGQ5MiBsZWdhY3ktdHJ1bmsKKzE3NTE4IGQxZWQzMDgyNTgxYTYyODE1ZjRmMWY2OTkzY2MyZDYyMDUzZDliODAgbGVnYWN5LXRydW5rCisxNzUxOSBmODM4NDA5ODYyNjg0NDFmMWJhOWNiYTExMTQxYTVhYmY3MjY2M2Y0IGxlZ2FjeS10cnVuaworMTc1MjAgNmZjZjVhNzA1MzNjZjBjZWNlYjkyMDIyZjZlNzg2ZDYzODU1NmExYSBsZWdhY3ktdHJ1bmsKKzE3NTIxIDE1NzA4NTQ5MTFjZTA2ZTdmZmZlNGUwZWFiNTMwYzhmM2NkNmE4NTAgbGVnYWN5LXRydW5rCisxNzUyMiAwODAwNTRiMTIzNTY1YTc0YjNhNWY1Y2VlZDliYzk5ZTI0ZmQ3ZThhIGxlZ2FjeS10cnVuaworMTc1MjMgNDJjNDFkYWRmMjkzNmZlNDBjNjI5ZDIxYTg3NDA5ODI3ZjQzYzY5ZCBsZWdhY3ktdHJ1bmsKKzE3NTI0IGE1YjQwMjk1ZGMxOWJhN2UyODc4YjNmYThkOGU4MmUyYzY5ZTFlNWMgbGVnYWN5LXRydW5rCisxNzUyNSA4ZGI4NjA2ZDg0ZWFhMGE1NmMyMTNkZTU1ZjY5MWViZWVlZmY4ZWVkIGxlZ2FjeS10cnVuaworMTc1MjYgMGM2YjlkZTE5MTAwZjQ5MzcyMjE3MGJiY2Q3ODdkYjA2M2UyMzM4OCBsZWdhY3ktdHJ1bmsKKzE3NTI3IDFiMjBhZDZlYjUwMTk0MGQ3MzFjODY1OGRmMjMzNjRhNWIxNjY5NGIgbGVnYWN5LXRydW5rCisxNzUyOCBkZjhkNTc1ZDk2N2Q4OGQwNTgxMWJkNmVkNDYwYmJmYTY3MWQ4MWQ5IGxlZ2FjeS10cnVuaworMTc1MjkgNzU2YzhjNjUzNWZlMmRkZWMyZjBlZGNmOGEyNGQ0OWEwODM5Y2ZjYSBsZWdhY3ktdHJ1bmsKKzE3NTMwIDIyMDExZDk3NjkxNzM4NGY2ODk4ZjEwOWI5YmM4MDYxNTcxMTZjMWQgbGVnYWN5LXRydW5rCisxNzUzMSAzYzU4NzE2ZmFmZGU4YjNmNzNmNmE4YWU3ZDZmODE4ZjYxNDAzYzE5IGxlZ2FjeS10cnVuaworMTc1MzIgYTc4MTNhZDczYTRlZGVlZDAzMmNiNWY5YTMzMDFkYzE5MWRlMzEzYSBsZWdhY3ktdHJ1bmsKKzE3NTMzIDk0Y2E4N2EzZTVlZWUyOGM1ODBmYTdkZWM5NjRjNWMwMGI1YzBlNmYgbGVnYWN5LXRydW5rCisxNzUzNCAwODgyMzA5OWFlNjI2ZTExMjJiNGI5NDYyZTNlOThmNjJkMWJiMWYxIGxlZ2FjeS10cnVuaworMTc1MzUgZTJkNjJkNzQ3ZjdhODJjMTgzY2U3ZjA0YzUwZjlhOWQ4ZmM4MzI4NyBsZWdhY3ktdHJ1bmsKKzE3NTM2IGU0MzJhMTg1ZjRkYjgzMzFiMzFlZGE2YzBlZjg2M2IzMWU3NzVmMzMgbGVnYWN5LXRydW5rCisxNzUzNyAyOTUxMjY0MzM4NTZjZDMzM2EyM2EwMmMxYmI4ZjhhMWI1N2U2NjMyIGxlZ2FjeS10cnVuaworMTc1MzggZWRmMWUxNWM2NzFhMDg0ZTUzOGUxMWJhZGFlODYxZmUwOWFiYzhmNyBsZWdhY3ktdHJ1bmsKKzE3NTM5IGM1MmZmMDJiYmQ3MDRmZTQ3YzljZjUyYjY0NTRmZjlkNDM1NTZhOWIgbGVnYWN5LXRydW5rCisxNzU0MCBmYWYzZTczNDI1NGRkNmY2MTFhZmNiYjgwNGM2ZjhlNWExZWFhYjI0IGxlZ2FjeS10cnVuaworMTc1NDEgZTM4NGY1MDE0OWM5NDA0NDUwOGFlOTM1N2YwZjcwOWYyZWFkZTEwOSBsZWdhY3ktdHJ1bmsKKzE3NTQyIGU4NmZhN2U4NTBmMTQyMGJjYjU0NDhiOTJmMWZhOGYxZjQ3MzZhOTkgbGVnYWN5LXRydW5rCisxNzU0MyBkNmZmYjZkN2ZlOGFkMzY1ZmMxYzU1ZDk5NDcxMWEwNzkzMmMwMDI5IGxlZ2FjeS10cnVuaworMTc1NDQgY2VjMDAzYmEzYzdiOTc5Yzc0MDNiZjFiODhkZTE5NzYyOTc4MjI2MiBsZWdhY3ktdHJ1bmsKKzE3NTQ1IDY3YTQ5MTNjMDc3ZmVmYzkxMmVmN2IzMWRjYWZkMmVjMzdjZTFjY2IgbGVnYWN5LXRydW5rCisxNzU0NiBiYWI0ZmE2YzNjMjQxYjZhOWRhNGEzZDZjMjYxMGQ5ZmQ3MGY5NjE4IGxlZ2FjeS10cnVuaworMTc1NDcgYzZmNDNjNjAzNmJhMTA1MTM3YmI3MTJkNDUxNzIyZGVhNmRmMWYyOCBsZWdhY3ktdHJ1bmsKKzE3NTQ4IDM0MTEwNTM4YjExODQ0ODU1ZDhjMTJhMTQ4ZjU3MmY4MDZhMDUyOTIgbGVnYWN5LXRydW5rCisxNzU0OSAyYjliMTU5NjU5NTE1Zjg4OWVhNTQ2YTE2YmNiYjk3M2UwYzA0OWE1IGxlZ2FjeS10cnVuaworMTc1NTAgZWYzNzA3OGQyNzJkNjQyYzExMDU0ZWQ1Y2RkZDBjMmYxYjQ4ZWRiOCBsZWdhY3ktdHJ1bmsKKzE3NTUxIDg1MDM4YTAyNGIxOTFhODg4MWFkYzZmZGRkMzQ5NjU5MmJhMzAzOWUgbGVnYWN5LXRydW5rCisxNzU1MiA5ZTNkYzdjNDdhZmEyOWYxMDc1OWZhMzFhOTE4OTU0N2UzMTMzYThmIGxlZ2FjeS10cnVuaworMTc1NTMgNDA3Y2UxYzk5ZTk4ZTMyOTE1NjY2ZDQxZTUxMTA2ODhkN2RjNjY1YiBsZWdhY3ktdHJ1bmsKKzE3NTU0IGZhODI4MjBiZDNmZjNkZDNjMjdhNzdlY2U2OTlkYmFhMDA4NjhlNTQgbGVnYWN5LXRydW5rCisxNzU1NSA5NWZlMDgzYzc4ZWU1ZTBiNDgzMmQ0NDRiMTAyN2RkYTBmYmZkNTMzIGxlZ2FjeS10cnVuaworMTc1NTYgNTgxZDFlNzdlMzVlNzVkZWQzMzdiZjY2ODU2NzIwMDEyMGI3NzlkYiBsZWdhY3ktdHJ1bmsKKzE3NTU3IDkxZGRlN2JmZmU3ZDllM2MyMDlhYTU2NWM0ZDJmYjE0NTY1YzIxMTkgbGVnYWN5LXRydW5rCisxNzU1OCA0MzkzNmEyNWVhZjEwMDM0ODkyNjI0YzY0ZTdkZDRiNWE4NTk2YzBkIGxlZ2FjeS10cnVuaworMTc1NTkgMDRjMzk4ZTc0ODc4OWM3YzQwMTRmMmRiNDI2ZGQ0NDNmNmVhYzg4OSBsZWdhY3ktdHJ1bmsKKzE3NTYwIDQ3MTJmNWI4ZjI3OWFmMmE4N2Y5NTExMDhlNDdiYzhlNTAxNDU1MzAgbGVnYWN5LXRydW5rCisxNzU2MSBmZWY5Yjg5YWQxNjIyYWU5N2FjNjFmNTE1MThlMzQxZjFhNGRmMTEwIGxlZ2FjeS10cnVuaworMTc1NjIgMmZjYjk5MGI5NjVmODZmNWYyYWE1MmI0NzUzYTE1MjVlZTVmNWI0OSBsZWdhY3ktdHJ1bmsKKzE3NTYzIDg5YjJhZWU0M2UwYmQ1MjdkZjJlNmJhNzlmYjQ2ZTA1MDI3MzY4Y2EgbGVnYWN5LXRydW5rCisxNzU2NCBlMDI0NDM4NTIyZGQ3MGJiMzdjYWVkZjU2NGI5NGY2YjhiODRjMTZkIGxlZ2FjeS10cnVuaworMTc1NjUgYWM2ZGYwNDk0YzU4MjZiYmJmODNhYWQwMmRmMTcwOWFhNTQzYmJhNiBsZWdhY3ktdHJ1bmsKKzE3NTY2IDE5MjIzYmJmMWFhMTllNTUwYWU1YTJlMmJhMDMyMzY3YjVlNmEyZGYgbGVnYWN5LXRydW5rCisxNzU2NyBhNjk3MDQ0OWRmNDI1YTVmNGRjNTNjNzU4YjEwMDlhOTY1ZWU5ZTc2IGxlZ2FjeS10cnVuaworMTc1NjggNThiODMyYjg3NDVlZTJlZTYzZWI2ZTc4ODFlZWRkOGY3OThmZmIyMyBsZWdhY3ktdHJ1bmsKKzE3NTY5IDJlYzU5YTExZDNjNjFlMzE2YWYyMjVmNjNmYTA0Yzk1NTA1YTRkZGQgbGVnYWN5LXRydW5rCisxNzU3MCA4MzBlOGVjZTY1NjM5YjUzYmRlNTZhZDUwNWY5NDBlZmRhZDBlZTM1IGxlZ2FjeS10cnVuaworMTc1NzEgNWFlMWQ4YTlmMWRkOGVmZmI3M2U0NjI3YTY4NjM5ZjE4N2YzYmY0MCBsZWdhY3ktdHJ1bmsKKzE3NTcyIGMzYTI3YjZlYmUxYmNiMWZlMDI1YjAxZWMyOTliNWUyYWY5NWNiYTcgbGVnYWN5LXRydW5rCisxNzU3MyA2OWNhNDZhZjQzNmE2YzIzYjRlNGJmNDFiYTdjM2QzZWQ1MmM5YmM4IGxlZ2FjeS10cnVuaworMTc1NzQgODcwMjM3MDg5YmEyOGU3NjM1MDc1Njc2MmUyOWMyZThiMmQxMDA4ZiBsZWdhY3ktdHJ1bmsKKzE3NTc1IGQ4Yjc5ZTM5YzQ3ZTE0NDJmZjA5OWExMzE2YmJmMjIwOTliYWU4MTMgbGVnYWN5LXRydW5rCisxNzU3NiA3ZjQ5YzU4NjRmNzc0MWI1MGY2N2Q2OTlhNDJkMzg3OWYyNGU5ZjQ2IGxlZ2FjeS10cnVuaworMTc1NzcgNGQyZTljZjFlYjIwYjZiZGJhMjBkYWZhMDFmZjFiY2UxOWQ4Y2Q2NCBsZWdhY3ktdHJ1bmsKKzE3NTc4IGMwNGFhYzE4NjU2YWIyOTgzYTE4YmE5YWUzNDBkNDYxNDY3NzQ1NmIgbGVnYWN5LXRydW5rCisxNzU3OSBhNmY4MDEzYmJjM2QxNmYwYTU5NGVhM2M3M2QyYmE4M2E0ZjkxOGVkIGxlZ2FjeS10cnVuaworMTc1ODAgMDZiYjVkNWQ4OTkyN2Q1NjUxY2YwMTk3OTAwNTlmNTQzNTBkODMxMyBsZWdhY3ktdHJ1bmsKKzE3NTgxIDE3NjY2MGZmMGM5NTk2Njk0ODkwODhjNDI0NDUxMzM3Mjk3NjVkNTYgbGVnYWN5LXRydW5rCisxNzU4MiBiZjQ2ZjE4NWM1ZTRjMGMxNjI2ZmRhYzQ3MmM0NTNhZDMzYzk0Yzk5IGxlZ2FjeS10cnVuaworMTc1ODMgZTJjMDNjMzBiMDZkZGZjNmZlYWNjODNkYmY3YTExOWFiMjgzYThkYyBsZWdhY3ktdHJ1bmsKKzE3NTg0IDg3NDljYzg0Nzk3MDIyNjVhMTIwMTA0OTZlZTlkNjFmMmQ1NDU0MTQgbGVnYWN5LXRydW5rCisxNzU4NSBmZmMzMDBlOWQ4NjdiZDFkOTg0MDdmZDA3MTg4OTFhNjNhNzFmMWM3IGxlZ2FjeS10cnVuaworMTc1ODYgZjFhYmUwM2IyZjE2ODQ2NzI5OGRiMGQzNWY4MzcxOTdiZjAyYWU1NSBsZWdhY3ktdHJ1bmsKKzE3NTg3IDMzNmE2MTc5ZTA1OTcyNGRlZjgwMmQ1N2FjYTNkOGU3YTA2ZTgxODcgbGVnYWN5LXRydW5rCisxNzU4OCA4MTRmNDIxZTAzMjY3MzE2ZDdiN2RhNDI3OGIzMDJkODI4YWQ4MTg4IGxlZ2FjeS10cnVuaworMTc1ODkgOGFhMTEyZjllMTMwYzMyZDE3ZmI4OTE4NDg4ODg5YTBjOTc2MDk4OSBsZWdhY3ktdHJ1bmsKKzE3NTkwIGQ0NmEwNDM2ZDZlMTk4MTdmM2ZlMDZmM2EwN2RkZmQ3Y2Q4YTk4YmMgbGVnYWN5LXRydW5rCisxNzU5MSAyYjlhODkwMTYyYjA1MzhlNDc0MmQzYjRlMDQ3MmU2NGMyYWVmZDk5IGxlZ2FjeS10cnVuaworMTc1OTIgN2VkMDgwYjhjZGFjYTc3OWE4ZjdkY2FmZGM3MmNmYzZmZTZkYzhmZCBsZWdhY3ktdHJ1bmsKKzE3NTkzIDIyMTQwNjI2OTVlNzk5ZTY5NjM2NWNlM2JjYmE5OTAwZDUzZDU2MTggbGVnYWN5LXRydW5rCisxNzU5NCA1NzA0MzczNDFhMDlkMDdmZmI2MmQ2ZWFjZDBlZjc3YTY4NWYyNDMzIGxlZ2FjeS10cnVuaworMTc1OTUgOGJiNmRjYTY2ZWNkYzQ4YTdlNWE0YjlmZmI2ZjQ3NGIwMWY1OGUxMSBsZWdhY3ktdHJ1bmsKKzE3NTk2IGMxZGUyYzNlNDVjYTY0NjdhMjNjOWUyNzg1OTNjODhiZGMxOWMyMzMgbGVnYWN5LXRydW5rCisxNzU5NyBkNzMyYTNhMTM5OGViMDhmYmE5Yzc3ZGE2YTNmNTY2NDNjMzczYmE5IGxlZ2FjeS10cnVuaworMTc1OTggOGRiMDk2Yjc4MmY5NzMzZDJiZGVlZWVhMTg5ZDA2NmIwMGJhYjQ2NyBsZWdhY3ktdHJ1bmsKKzE3NTk5IDRmOTVjZjFiMjY2NGY3YzcyYjkxYTRmNmI0MzM0ZjAzZjM0NDkzZTYgbGVnYWN5LXRydW5rCisxNzYwMCA3MDk0Mjc2N2RjODEwYzhiZTUzZjA1ZmU3NDM5NWQ3ZWVlNzliMDM0IGxlZ2FjeS10cnVuaworMTc2MDEgMDI5ZmY0NmM3OThjN2MxMTY1YjNlYzRmMDI4NTQzNDZkMzBkZjJmMyBsZWdhY3ktdHJ1bmsKKzE3NjAyIGUxNTRlNzlmNGQyMmJmOTZiZDE0MzU0N2ZlYzk5ODYwN2M2ZGI3NWUgbGVnYWN5LXRydW5rCisxNzYwMyA5ZjhiMjEzYjg0MTU3NzEyZTE2ODUzMTUzY2Y5YzlmNmU3MDM1ZjYyIGxlZ2FjeS10cnVuaworMTc2MDQgNmYzZmQ3YTJhN2JjYjM4M2JiYTI2M2IzMjllYTJkMGFkYTk4NGFkZCBsZWdhY3ktdHJ1bmsKKzE3NjA1IDAwZTgxNzJhYzBjYjk1NGI1NDg1NmI4NGI3MmJhMzdkOWYxNTU4NGEgbGVnYWN5LXRydW5rCisxNzYwNiBmODk4NGYwM2RlMjAyNTMxOTFmNWE0OTAzMmJlYTNmNmQzZjZkOTRhIGxlZ2FjeS10cnVuaworMTc2MDcgNDZhNjk5MDc2OWQxNzBhYjU2NjA2ZjYwMDNiZGMyMjlhY2MxZjUxYiBsZWdhY3ktdHJ1bmsKKzE3NjA4IDlmZmNmNzQ5YzE1YTlmYmJjNjU4ODE1Y2FlYmRlZWFlZTZhMzVlYWMgbGVnYWN5LXRydW5rCisxNzYwOSAyZjc3Y2I4NTQ3YTFjMDE0MmY0YTFlNmVlMGY0MzNmNWVlMTA4YjYxIGxlZ2FjeS10cnVuaworMTc2MTAgOTMyMDcwNzZkNjEyMThkMGNlOWQ5ZjZiMGY0NzQxMGNiNTU0ZGZhOCBsZWdhY3ktdHJ1bmsKKzE3NjExIDZlOTMzMWU2OGEzYmQ3OGU5Zjg0NWU1MmFjNTQzZTJiNGM1N2I3YmUgbGVnYWN5LXRydW5rCisxNzYxMiBiNGVhNTc4NzBmMmFhYzU5ZDIwY2ZkMDMzODkzYTY3OTY1YmZkNTA5IGxlZ2FjeS10cnVuaworMTc2MTMgYTg2NTY4ZjU0Mzc1ZGRjNDgyNTA1YWY3NDMxN2NlMGZmM2E1MjlhZiBsZWdhY3ktdHJ1bmsKKzE3NjE0IDVhOWRmZmZmMGRhMmI0NmQwMzAxMjkyMGNkMzQxOTkxMjZiMTU3M2IgbGVnYWN5LXRydW5rCisxNzYxNSBiNTQ1MWE2ODcyYTI5OGExNzQwYzRjNjJlYzEwOTNjOTkwOTUzNzUwIGxlZ2FjeS10cnVuaworMTc2MTYgYzU2NmFjOWM1MmQ3OTJlY2NkNWIwZjgwNzhiN2Y0MTViZGMyNTAxNCBsZWdhY3ktdHJ1bmsKKzE3NjE3IDVmNjM4YTI5OTg4OGM3MDRkN2U0MmRlZTU4ZDg4NzdjOWQ2MzZhYjkgbGVnYWN5LXRydW5rCisxNzYxOCBkMjcwNTg0MDQ5ODEwNjM2Mzc0YTYxYTcwZTlkNTgzMzk0MDUwNDU2IGxlZ2FjeS10cnVuaworMTc2MTkgODI4ZWY3ZWNkMWY3NmNkODMzYWM4ZWVlZjkxMzA5OWVjMTk2NjU1MSBsZWdhY3ktdHJ1bmsKKzE3NjIwIDlmZTVjODJjNGM4YTBiOGM0YWU0N2I2YzdhNDNkMTcxN2IxZmQ3ODQgbGVnYWN5LXRydW5rCisxNzYyMSA3Mjg2MGVmMDMxNzE0ODY3MWZhZTcwYTJmZWJmYWNmNjFhZWM0ZjBkIGxlZ2FjeS10cnVuaworMTc2MjIgNjBjZTM3ZjA2NmQ4Y2VhMTA4MmVjNmU2ZDJkYWVjMzU4NWE2NDhmYiBsZWdhY3ktdHJ1bmsKKzE3NjIzIDkyYWVlMzFkNzYxMzhiYTc0ZGQ4ODI4YTIyYjIyZDMzMGJkOGVlMGYgbGVnYWN5LXRydW5rCisxNzYyNCBhYTE4ZTUyMzliNDY5YzNiZjIwMWFlNWIxN2NhODFhN2JjNDRmZTQwIGxlZ2FjeS10cnVuaworMTc2MjUgM2ZmYWNmMWRjOGYwNWY2ZTlmOTBkMmQwNzY1NDlkMTdjNTM1YjQ2YyBsZWdhY3ktdHJ1bmsKKzE3NjI2IDEzMzAwNzY0NmZiNDc3MGY3MjRjOGFiZDA1YzE4YWRmN2NjNGMxNWIgbGVnYWN5LXRydW5rCisxNzYyNyA2NDg2M2M1NmNlOGUzZTkwOTI0NTIyY2RlZDFhODVjZjI4NGU5ZDY0IGxlZ2FjeS10cnVuaworMTc2MjggYzVlYzBiMTFmOGM5NTgzOGZmZjFkNjM1ZjVlMTY4YjY0MzJiNTFlMCBsZWdhY3ktdHJ1bmsKKzE3NjI5IDUyMTc0YjAwMmYxZmYzN2YzMGFkNTUxMGNiZmFjOTEyNTdiMzg4ZjYgbGVnYWN5LXRydW5rCisxNzYzMCA3NDU2Yzk3Yzk5ZWZhMDY4NjQ2ZDhiZGI3ODE0NzRhYWU2NzM1MTZjIGxlZ2FjeS10cnVuaworMTc2MzEgMTc5ODc3MGNhMzZiMjBhYzc5ZWM4ZTBlZTczZWI4ZDJjZGRlYmYwYSBsZWdhY3ktdHJ1bmsKKzE3NjMyIDZiNzcyYzUyN2NhNzRjZmU3MGI5NjFjODU1YWFlMmFkNjBkZDkyZjAgbGVnYWN5LXRydW5rCisxNzYzMyA4ZmFlM2Y5MTE2MWY4ZWI0ZGIyZDU0NDhlODgwMjI5NjRmN2VkODY5IGxlZ2FjeS10cnVuaworMTc2MzQgN2JhNDkzYmMyNGEwYzBmODFmNDY5ZmZhMmE5ZDY0MjA5ZGQ0YWYyYyBsZWdhY3ktdHJ1bmsKKzE3NjM1IDA2NGU0MzRlNzQ0ZjE3MjQzZjBmMjcxMzY3MDY2MmNkNzMzY2FmNGYgbGVnYWN5LXRydW5rCisxNzYzNiAwODE2NzFjZWY3YzFiNmRmZDE4NzYyZGY2ZmNhMzNjNDczMjQ1ZmI5IGxlZ2FjeS10cnVuaworMTc2MzcgM2MwMWY5MjFjNDUzZWMzNjg0NjQ3MDMzOTVkNTM4YjE1ZDhmMGIxNyBsZWdhY3ktdHJ1bmsKKzE3NjM4IDc3ZWRkZGRiYjdjY2Y5NDE4NzY4ODc4MjNmNWJiMDc3YmY2M2M0MWEgbGVnYWN5LXRydW5rCisxNzYzOSAwOTg1ZGRmZDQ0MmJlOWIwODgyNjA4MTNjNzdkMTgwYjc3MThlMjRhIGxlZ2FjeS10cnVuaworMTc2NDAgZDBiNzc3ZWM5ZTAyN2FkYzFiZmY1ZTI0NDMzMDUxYjY5ZDk1N2NkYiBsZWdhY3ktdHJ1bmsKKzE3NjQxIGFkMGQ5MzJjY2UzMmQ3NjNlN2RkOTgxNDM5OGYxNDdmYWM0YmIyMWUgbGVnYWN5LXRydW5rCisxNzY0MiAxZWRiNmI2ZTNiNWI1OTQyMzc2ZTg4MWY0ODNmYmZkZDc2MTdjYzllIGxlZ2FjeS10cnVuaworMTc2NDMgMTc5ZTA5ODIzOGU4MDk2MzliZWVjNzAzNDg2ZmZlMjExMzg1NmFkZiBsZWdhY3ktdHJ1bmsKKzE3NjQ0IGJlMmRmOTkzNWVkZDhmYTFiYjEwOWRjNjhhNGExZmU4NGRhOGM2MTQgbGVnYWN5LXRydW5rCisxNzY0NSA0MzI5M2NmNzUzYzE1YzAxYmY1OWFkYjc1OTEzNzg5ODg1MGJhMGQ1IGxlZ2FjeS10cnVuaworMTc2NDYgZmY4OGM2NGNmZjJlNTE5NWEyMWNkOGUxYzQwZmNhM2MyOTQ5ODc0YSBsZWdhY3ktdHJ1bmsKKzE3NjQ3IGFmYmFkYWM2MGZmNzRjOGYwMTQxMWVmOTNjZDE1NzE2M2Y2YzkyMmMgbGVnYWN5LXRydW5rCisxNzY0OCBmZmQzZTlkYTg5YjBlYjhmNDQzMThlMzE2NGM1ZmM0ZTFkMGUwNzZmIGxlZ2FjeS10cnVuaworMTc2NDkgYzM2MDJhZTQ5ODkwNjlkM2E1NmM2NmMzZGI3Y2MxYmYxY2U3OGRlNCBsZWdhY3ktdHJ1bmsKKzE3NjUwIDdjNTc0YmZhNmUxMzhjZjNkMmQ2YTYwZTgzMTYxNmI1MTgwYWU1MGIgbGVnYWN5LXRydW5rCisxNzY1MSBkNjgyOGRkOWE5MjcwNTk1MTM4M2VjOTQzZDRjMmM5MGJmNTZjODE2IGxlZ2FjeS10cnVuaworMTc2NTIgYTkwZGFjNGJmODhhMjRhMTAwYjA2YzdkZDUxYmM0M2IzNzA4YTU4MyBsZWdhY3ktdHJ1bmsKKzE3NjUzIDNlM2MyZWZjNzljNzNjMDFjOWNlZmM3MmQ2MjNlOWIzOWEyNWVhNjggbGVnYWN5LXRydW5rCisxNzY1NCBjZjlkOGJmNTZkMTQ1MDc1ZDk0MTE5MmFiNjMyOWU4MTgyMDZmMzFhIGxlZ2FjeS10cnVuaworMTc2NTUgZmNhNWY4ZjFhOGY0NzFlOGQ0N2NkYTkyMGZlZWUwOTMxNWZjOWEwYSBsZWdhY3ktdHJ1bmsKKzE3NjU2IDI1NzQyOTU1NDVmZjdjMTYwZDljYTNmNmQ4NGE1MzY3YWZjZDgzOGMgbGVnYWN5LXRydW5rCisxNzY1NyAxZDc4MDMzYTUzZDc3MmEyNzY4MGUzYzEwZWQyYTQ4NDE5YzI5MDEyIGxlZ2FjeS10cnVuaworMTc2NTggMjk5MDJmNzc0OGZhNjc4ZTliZjRhYmQ3ZjU1ZDMwYTY4ZjhkNWU5MiBsZWdhY3ktdHJ1bmsKKzE3NjU5IDdkYTM2ZjZmZDU0NGJhNzdmMjUxZGVhMDlhMjc3M2Q4MTBiY2I2YjYgbGVnYWN5LXRydW5rCisxNzY2MCA2OTg3M2EzMGI3Yzk5NzM4NDAxNTZkZDU1NDEyOTJjZWYwNmVkOWRlIGxlZ2FjeS10cnVuaworMTc2NjEgNzQ2MWVkY2QyNDlkNDUxMjg0NTc0Nzc3ZGEyNjcwODBiNTRiMDk5ZCBsZWdhY3ktdHJ1bmsKKzE3NjYyIDZkYjY5NTJkODg3YWM5YjU3N2ZjM2NhZDMwM2E0Mzc4NzY5MjQ2ZjAgbGVnYWN5LXRydW5rCisxNzY2MyAwM2VlYTdlYTdlNWNiZGIyZDJhZDgxNWQxMjBlZDRjYWY4NzhhZGMyIGxlZ2FjeS10cnVuaworMTc2NjQgNGQxMGExMzU2OGFhM2Q5NTExYTZhMjQyZjFlYmU4NDNiZDM3M2UwOCBsZWdhY3ktdHJ1bmsKKzE3NjY1IDUyM2ExMmVkMzFmMGRlM2MxNzkxZDc0NDRmYmJmOWQ4Y2U3MGZhNGQgbGVnYWN5LXRydW5rCisxNzY2NiBmNTY1M2FhZTFjYmQ3Y2M3MjA1NjUxZmUwMDQyODgxNzRmOTBkZjg0IGxlZ2FjeS10cnVuaworMTc2NjcgZDU0M2RhYTE1ZDcxNTg4NmQ2YjY2ODJjYTc5YWM5ODQ4Y2NjMTllYSBsZWdhY3ktdHJ1bmsKKzE3NjY4IGI3ZmIxMjE2ZjZiNjIyMjI3M2ViMzFkZDFiNzk3YmE0YTFlNjZkYTAgbGVnYWN5LXRydW5rCisxNzY2OSBiNTZhODgyNzdlOGNlZjU5ZWMxOWI0OTkxMzczODUxNjcwOTBhYjZlIGxlZ2FjeS10cnVuaworMTc2NzAgNGZmODRlNzM0NTg4ZmFjZDE4MWViYzFkYzE5NmYzYTgxYzgyZGMxNiBsZWdhY3ktdHJ1bmsKKzE3NjcxIGI0MTNlODdlZWVkNDIzNzM5MGFiMmEzNWVjMTg2NTAyOWZkMjExODQgbGVnYWN5LXRydW5rCisxNzY3MiAwZGQyMDRkOTM2ZTE2MzUyMjY2ODRhNzllNTI5MWVmMTRkNzJmZjAwIGxlZ2FjeS10cnVuaworMTc2NzMgYzk1YzY3NmIxODQwNzAwNDViZWExMjEwYTkwZmIzOTc5Zjk2YThhMSBsZWdhY3ktdHJ1bmsKKzE3Njc0IDE4MmQ4MjRmMmI0NzNiZTA4Mzk5NmVkNzY2MjA3MDUyNjM2MGIzMjYgbGVnYWN5LXRydW5rCisxNzY3NSAwNzk2MzQyMWZhZmNjOWZlNTQ0ODUwMTJlMWFhYjIzZGVkNDRmNDY4IGxlZ2FjeS10cnVuaworMTc2NzYgYzUzNjk1ZjNkODQwZDE0YWMzODBlYWM5ZWE2MGJmMTI0MTVlY2I2OSBsZWdhY3ktdHJ1bmsKKzE3Njc3IDNlMzkzZjliMTI5MzkyNjgyMDdlMzliMzBhMzY1ZTkzZDE5Y2QwNGMgbGVnYWN5LXRydW5rCisxNzY3OCA0OTQ0ZTM4NTlhODYwOWVkMzYwN2Q1Mzc1NjZhYzljOTBhMzVmM2E4IGxlZ2FjeS10cnVuaworMTc2NzkgYTEwMzMyODNhMjVkYzYwYmRmNTViMWZjYTA3NzNkY2UwNzczY2UyZCBsZWdhY3ktdHJ1bmsKKzE3NjgwIDlmZDAzMGFmMmZlMDM5YWNlNGI4YjQ0YjUxMzhhNGU0MGEwYWFjYTEgbGVnYWN5LXRydW5rCisxNzY4MSA5MmRjZWEwODU5MzA1ODc2ZmYxNmMwZWUyOGM5ZjEyMDM0MDgxODBjIGxlZ2FjeS10cnVuaworMTc2ODIgYjFhMGZiNTU0NDU2Y2FlMGEyNjczNjIzNTg3MWI5MGM0MDA1MjYxNyBsZWdhY3ktdHJ1bmsKKzE3NjgzIDlmOTZjOTJmMDNlM2JlNmMzYjE2ODdhZmI3MjFlMjY3OWNhMjVmY2QgbGVnYWN5LXRydW5rCisxNzY4NCBiMWYyMjBmNjM2ZWRkMWU4Y2MwMWNhMjg3N2Q0ZGZlMGUxZGM1MjY2IGxlZ2FjeS10cnVuaworMTc2ODUgMDcyODhkMmRiNTk2NDI0NmFjYTM5NmI3NGY1NmM3ZWJjZTMxYjFiNyBsZWdhY3ktdHJ1bmsKKzE3Njg2IDFhMWI3OTVmMGM5YjllZGQwZDg0MjFlNjllNTVmN2VhYmVjNTYyZWIgbGVnYWN5LXRydW5rCisxNzY4NyA1NGFkYjdiNGY4Yzg0ZGU4ZGM3YmI1M2JkODY0ZTdkOTNhMGI1MmRiIGxlZ2FjeS10cnVuaworMTc2ODggZWU4MTNlODQzZjNlNTcwZTM2YzdlOTc0NDBkMDI4MmI2ZjkwNzI2YiBsZWdhY3ktdHJ1bmsKKzE3Njg5IDFkNjI3MjQyZTI5YTJjZmI2YWNkY2RlODZkODE0YTkzYzJhMWFmODkgbGVnYWN5LXRydW5rCisxNzY5MCA5NmQzMWExNDM4NTdjZjhiNWYzNTQ5NGI3ODMyYWMzYzMwNmQ1NWEwIGxlZ2FjeS10cnVuaworMTc2OTEgNjdlMGZmNGFhN2I5NzdmMWFiNTY1YTFmNWMwM2Q2M2QzMDliYWRmZCBsZWdhY3ktdHJ1bmsKKzE3NjkyIGI3Nzg3YTkwNTJlM2QwODFkMDBmNjk4ZjE4NzQzNjk1YzE4NWVjNzcgbGVnYWN5LXRydW5rCisxNzY5MyA3NmFhZDViMDY1NDNhZmM3NDQ0Y2I3YTc5NmJjYjc2OWMxZTYzNzgwIGxlZ2FjeS10cnVuaworMTc2OTQgM2IwY2EwY2MzNzUwZTIyMzNhMWJjODQwZTkyMjg5Y2MzNTI4ZDhiMSBsZWdhY3ktdHJ1bmsKKzE3Njk1IDYyNWE5YTY5NTQ2OWI1Y2M0YmUzYzk1NGJiN2RkYzU1NDcwZGNkZjIgbGVnYWN5LXRydW5rCisxNzY5NiA2ODE4OTI4NTY1OGYyMjg4MGZmNTFkYWM5OWQ2NzU3ZDE1ZDRkOTBlIGxlZ2FjeS10cnVuaworMTc2OTcgNDYwYWIxOWEzMjg5YmI5ZjczYWZjYzEwMWU1YTJhZmYxZDc3NDA5OCBsZWdhY3ktdHJ1bmsKKzE3Njk4IDk0YzI0NmU2Mzk5ZDIyMDFhMzhkMWY2OTFiMTc4NDg1ZDhlM2EwZWQgbGVnYWN5LXRydW5rCisxNzY5OSBlN2Q2Nzg5OTA4ZDcwOTM0YjNjOTJkYWExYTFhNmQxMDBlOTE0M2ZhIGxlZ2FjeS10cnVuaworMTc3MDAgODhkM2E4OTc0NDA5ZWU3MmM2MjkyNTdlZDc4ODg1ZDZjYmY0YWZkZSBsZWdhY3ktdHJ1bmsKKzE3NzAxIDQ1ZWM1ZGY5YTYyZDMxZWFkNTUyOWYyYzdhM2Q2Yjg0YjA1YjQxNWUgbGVnYWN5LXRydW5rCisxNzcwMiBmNmU1MDFmYzMyYzc3MWRmZWY1NGUxMTk1ZTFiNTk2ZjdkZGU5NTcyIGxlZ2FjeS10cnVuaworMTc3MDMgZTUyYzI0MzE5YWVmNTE4YjQzMGU3NzcwNDQ1OTliMTJhNzc0YmM1MSBsZWdhY3ktdHJ1bmsKKzE3NzA0IDkyY2RiYzBmNTVkNTAzMmY2NGY3YWRkMGQyNzYwMDZhZTljZWVmNjIgbGVnYWN5LXRydW5rCisxNzcwNSBjOGNhOTMxMDdmMmVkYzRmZjg5ODY5NjgzNzUyNjU5NTBlOWIxNzYzIGxlZ2FjeS10cnVuaworMTc3MDYgNTQ0OTMwMmM0ZDJlMTQ4ZDQ3ZWQxOWVmMDM2MzBmNGMxZmQ4MWNlNCBsZWdhY3ktdHJ1bmsKKzE3NzA3IDQ2M2ZhZjAxNjg1ZTcxMjcxODMyNTcxYmU1ZGUzMzc3Y2ViNDEwYWUgbGVnYWN5LXRydW5rCisxNzcwOCAxMjkzNDkyZGZlNjAzZWE0YWI3N2E5MjhlMzVmYTM1NjdmNjhiZjgwIGxlZ2FjeS10cnVuaworMTc3MDkgODliYzg0NzVmYzg0ZTE3MGQ2NjA0Zjg2ZjVkMTViZWFjYmVkMzFkYSBsZWdhY3ktdHJ1bmsKKzE3NzEwIGFlMTJiOGMzYzNiMzNhYjZmMDU4YTdlNDJjYTgxMTQ4YjM5YTkzN2IgbGVnYWN5LXRydW5rCisxNzcxMSA4M2FmZjFlYTViNzBkZTY1MjRmZGExMTcxYzhlYWJhMzdlOTFlMGExIGxlZ2FjeS10cnVuaworMTc3MTIgNmVkYTZhMWE2OTNjNTQ3MjVlNTE3MWNiYTg2ZDg3NjFiYTYwN2MwOSBsZWdhY3ktdHJ1bmsKKzE3NzEzIDE2NjExOWVjMzE5NTViNTllNTdmZTNjYjM5NzRiMTI4MmNhZmMxMjEgbGVnYWN5LXRydW5rCisxNzcxNCBlOTc2NjBkMWYxYWFlYjEyZTNjZjBhNTY4ZWM5OWMxMjY0Mzc1YzA5IGxlZ2FjeS10cnVuaworMTc3MTUgMThiM2RlZjZjNGI4Mjc2MmMzNjAxOGY2OWY3NDA1MjM3NDQxNWQzYiBsZWdhY3ktdHJ1bmsKKzE3NzE2IDA5YzE0YWU1YzJmNTQzNTc4YjhjYzE5NjVlYmQ1YTc1NzA3ZjRjOTQgbGVnYWN5LXRydW5rCisxNzcxNyA1YjhjZGE2ZjNiNWY2OWVjMjQ3MzA1YTA0ZTkwZDNmYTAzNWJlNjQ4IGxlZ2FjeS10cnVuaworMTc3MTggYzNmMGQ2ZjE5ZjdiZmZjM2RkNjM0MGZkOTc5OTkyMWZhMTJhMDViZSBsZWdhY3ktdHJ1bmsKKzE3NzE5IDU2ZmRhNGU5ZWNlOWY3YzIyODg4MTA0ZWUyYzM5MWMwNThkN2M1Y2QgbGVnYWN5LXRydW5rCisxNzcyMCA1YmFmN2Y3NDM5NmYxZGFmYzJmOGFmYTZlMTA5NmE2ZWZjZmJiNTBiIGxlZ2FjeS10cnVuaworMTc3MjEgNGMwODlhZDI5ZWVhYzQ1YTRhOWRkNmFjZDk1YmIxZDgwNmRhNWYxOCBsZWdhY3ktdHJ1bmsKKzE3NzIyIGM4OTJlNmFhOTk5NzZjODMwMTkzZjQwYzRhNDdhYzk2NzgxMTFhYjEgbGVnYWN5LXRydW5rCisxNzcyNCBiNjgwMDZhNTY0NzExNmIwMWM0MjYxMTQ5Mjg3NzhjMTMwNDMzNDliIGxlZ2FjeS10cnVuaworMTc3MjUgMjVkZGQzZGM3YTdhMmU0ZDU3YzMyYzQwZTliMGIxNDRiNDlhN2JjOSBsZWdhY3ktdHJ1bmsKKzE3NzI2IGUzNWEzYTc3MmRjYTllZmIyNTY4NjVjMmYwNmNkNzFiMDQxMWQ0Y2YgbGVnYWN5LXRydW5rCisxNzcyNyBmYjZiNTEwMzNjM2I2MGUxMTc2ZTE1OGQ3M2IwZTRhZjFjZjY3MTQzIGxlZ2FjeS10cnVuaworMTc3MjggYWMxNGI4NmYwZjhiOGY4MGVlYTUyZGEwODUwYzU5NmI0M2M2ZjRkYiBsZWdhY3ktdHJ1bmsKKzE3NzI5IGE5M2IyZjE3NmE1ZTJmMTVlYzkwMWU0ZWQxZWNjYjQxZGY5Y2Q4YTQgbGVnYWN5LXRydW5rCisxNzczMCA2NDMxY2Y1YzhhMDA0YzY2NjUxYzRmNDc5MDYxMjA4YTU1M2RmMzY5IGxlZ2FjeS10cnVuaworMTc3MzEgMTdiNWM0M2MwOGE2YzRkOGFlZjBjNmQ2MWY5NzZmYjIzZGU2NzdlMiBsZWdhY3ktdHJ1bmsKKzE3NzMyIDczZmRlNDQ1NjNkMWVmOTI4ZDFlZjFhMmM2MGI4ZDY1OTA5NWVkOGYgbGVnYWN5LXRydW5rCisxNzczMyA3OTg2YTQ1NTM5MzBiMjYzMDFlNzBjMGRjNDhjM2E4ZmJhNTYyZTY3IGxlZ2FjeS10cnVuaworMTc3MzQgNjhlMjNmMWZmNWRiN2EyODhjM2Q2ZmVkNmQ5YTliY2E5MTg4OTIzMyBsZWdhY3ktdHJ1bmsKKzE3NzM1IDI4MDk2NjJhZTljZTE4Mzg0ZTdjYWM2YjdjZDdkNThlNzkyODFhYjAgbGVnYWN5LXRydW5rCisxNzczNiAzYTU5YTA3MzNkZjhjMTZmYTNlMTZjOTllMGFjNGVmYTA0ZGE2YThjIGxlZ2FjeS10cnVuaworMTc3MzcgNWQwODkwOTVmNDBmNWNlNjVkYjBjZDQ2N2U3NzFkMWU4ZTg3YTIzOCBsZWdhY3ktdHJ1bmsKKzE3NzM4IDUyOGI1MmJkNGJjMzJlZDIzZWJlZjM3NzBiZjZiOGQ0NGVjYTAxZmUgbGVnYWN5LXRydW5rCisxNzczOSBkNmJkY2IwODk5ZGRhOTBkZjMxMTljNmIyZjYyZmI2OWNhNWYzZTM4IGxlZ2FjeS10cnVuaworMTc3NDAgOTY4YWU1NWZlNmVlYWIyOGQwZmM4ODJkMWE3MGNmZmU2MGNkOGJjZSBsZWdhY3ktdHJ1bmsKKzE3NzQwIDU1YmJhMTk3ZDQ4NzBjZGFlNjJhZWNhMDBlMjAyNDBhNzU2Yjg0ZjggbGVnYWN5LXRydW5rCisxNzc0MiBmNjU3OTMwZmQyNzRjM2I4MWYyZGE1NDA4YzA1MDUyMmJmZTk3MmQxIGxlZ2FjeS10cnVuaworMTc3NDMgNGZkZjY2MDBkOGFhNzAxMGMyOWZlMjQ1NjY1Y2ZkNDM0MzBlN2I0YSBsZWdhY3ktdHJ1bmsKKzE3NzQ1IDY1Mzc0OTAwM2RiOTc2MzkwMmNjODIyMWMzNjg1NjcyYmNmNzY3MDMgbGVnYWN5LXRydW5rCisxNzc0NiBjN2Y1NTU1MWZlMzFiY2NjMGIxYmEzODdkYWYzZTllYjAxODM5OTY0IGxlZ2FjeS10cnVuaworMTc3NDcgYWZkN2VjZTM3YzQ2OTVlZTY5ZjU5Y2JlNjIwNzk3YTljODM1OTQxZCBsZWdhY3ktdHJ1bmsKKzE3NzQ4IGU0NjQxZDE5MzIyMGYzODZjMGQ5N2E3Mzg1Njc0ZDg4ZDE3N2U4ZDMgbGVnYWN5LXRydW5rCisxNzc0OSAxOTY3YmUxMzU5ZWU1OThiYTkzOGQxMWI4ZjFlNjVjYTUzNjE4N2Q0IGxlZ2FjeS10cnVuaworMTc3NTAgODM0MDYyZjY5NWUwZjIxYzc0YjkwMTdlYTkyNjYwMDRhNzc1ODNiOCBsZWdhY3ktdHJ1bmsKKzE3NzUxIGRlMTg5MmVhY2NmZmFjYWJlZWMwODg5MDU5ZmU4ODkxZjcxYjZmMTcgbGVnYWN5LXRydW5rCisxNzc1MiA0MjBkM2M1N2VmZWM3Mzg3NGVkYTdiMmRmMDE5NWFiNTY2MDA5NGM1IGxlZ2FjeS10cnVuaworMTc3NTMgYWQ5OGMxMzY0NzVlN2IyMzczMmI5YmQ4ODdlZGNlOTE3M2Q1ODAzNiBsZWdhY3ktdHJ1bmsKKzE3NzU0IDQxMTFjZjIyYTBhZDk0MWNhMmU0NTI4ZDllZjk1MDQzNDRmYzgwNDMgbGVnYWN5LXRydW5rCisxNzc1NSA0YmVhNGY1OWM0ZTQzYzljNWM0YTYyNjUzYjhmZTQwZGZmN2VhZDhlIGxlZ2FjeS10cnVuaworMTc3NTYgNjA2YTgwODM0YTg2MjIzOGM3Y2E5N2NlNWE1YmI0NGE5MzYzYmYzZSBsZWdhY3ktdHJ1bmsKKzE3NzU3IGY5MzJjMTI4Mjc5YmNmM2ZjNDc3NzZmNzA4Y2RkNDdkZGY0ZDkyYmYgbGVnYWN5LXRydW5rCisxNzc1OCAyOTFhYmViZWE1NWIyZWQ3YzQwOGUxYTA5ZDU3NjQyOTY5ZGJmMDkwIGxlZ2FjeS10cnVuaworMTc3NTkgZWM3NTZkNThlOGE3MGVmYTc3NWRiNGY1MzVlYTI3NjAyNzQ4MWVhYSBsZWdhY3ktdHJ1bmsKKzE3NzYwIGY0YTFkM2Y4ZjI2Mjg5NzcwM2IwNWYwZTVmYzc3YjhkYzY5MDNlYTcgbGVnYWN5LXRydW5rCisxNzc2MSBiMTVmY2U4NjhlNTBiNzdhMDY5OTQ3ZWY2MTJmYjhiOWU1NWNkMjcwIGxlZ2FjeS10cnVuaworMTc3NjIgNDU5NjdmZjFiNmRjMThlNTcxMGQwNjAxZjU0ZjZkZmM3OGU3ZTFkMyBsZWdhY3ktdHJ1bmsKKzE3NzYzIGEwYTEzZjEwY2U0YmY1Y2VjYzI1ZGNjMGMwMjZhMzUwYzg2MzMwMDQgbGVnYWN5LXRydW5rCisxNzc2NCBkMDEzOTRiMGFhNjk4ODBhNGI1ZDU5YTliZDhkYWE0Y2MwM2ExODEwIGxlZ2FjeS10cnVuaworMTc3NjUgOGY1OWJkOTU3OTUyNTc3NjhlOWNlZjI2MjcwMzdmYTZmN2E2ZWU5ZSBsZWdhY3ktdHJ1bmsKKzE3NzY2IDEwMTg3MjdmMzIzMTc2Y2FmZDBlMmVjOTFhOWEzZDIxM2ZlNjU4NjIgbGVnYWN5LXRydW5rCisxNzc2NyA2ZmIyYWY3NjY4OTJlYjg3YmJiM2Q2YzQyYzBlMjAyMWNhMmUwZmQ0IGxlZ2FjeS10cnVuaworMTc3NjggYWY4ZDc3YWE5MGY4ODU4NzBiN2Y0ZWU5MzJjZTU5ZTg3NDg2NTJlOCBsZWdhY3ktdHJ1bmsKKzE3NzY5IDJjZGY3YWM5MTYyZDkzNTA0ZGUyZWRlNjRhN2Y1ZThmNDJjYTQ2MTIgbGVnYWN5LXRydW5rCisxNzc3MCBhMDYyNzQ5YjgwZjhjNTAzZWU0Y2RlZTdlZjI4MjIxODBjYjkwOThhIGxlZ2FjeS10cnVuaworMTc3NzEgNzljZGVlZWVmYWZhNTc1NWU5MzEwYmM5ODZmMGM1ZThhMjQ0NTgwMSBsZWdhY3ktdHJ1bmsKKzE3NzcyIGVhMmJhOTEwZTVmMDVmZTZjYWNjYmMwNjYxYjI0MWIwYThjZWEzZTIgbGVnYWN5LXRydW5rCisxNzc3MyBhYWQyYjVhM2Y3YmY0YzM3YWEyMTdlMjVkZTRiNzZiMjQ0MDI4NTU5IGxlZ2FjeS10cnVuaworMTc3NzQgY2VmYjE5MTBhZDBkN2I4NGRmYjNmZDk3Y2FkNzRhZjg1Mjc5ZDgyZCBsZWdhY3ktdHJ1bmsKKzE3Nzc1IDkxNGFlN2Y5YzY0Y2Y3ZjAwNjE0YjM5YzcxYWVjMDRkYjY3MTRkOGEgbGVnYWN5LXRydW5rCisxNzc3NiA5NWIyMDAxOWI3MTE0NTRjNDc1N2M3Y2Q2NWJkNTcxNzFkMzIxODBmIGxlZ2FjeS10cnVuaworMTc3NzcgZmFkODI0N2VmMGE1MmRhNzM0YzcyODhmNWViOTAxZTQ5ZjJkYzVjMyBsZWdhY3ktdHJ1bmsKKzE3Nzc4IDNkYjhiODAzMWE2YTQ3NDQxODQwNTk4NDk3YmRjNmM5YjZkZjdiNmQgbGVnYWN5LXRydW5rCisxNzc3OSA5YTg3MDBmZGM1MmJlODA2MGYzN2RmOTdiZDc2NDNiMDllYjlmY2RhIGxlZ2FjeS10cnVuaworMTc3ODAgNzVmM2Q1ZTdiODljYTJlMTg1YWMwMzAxOWYyOTQ1MDlkMzM2ZjZmNSBsZWdhY3ktdHJ1bmsKKzE3NzgxIDE1MzU0MWY4MjRhMzYzOTY3OTI1NzZmMWUwYzY2MjY2ZjhkMWUyYzkgbGVnYWN5LXRydW5rCisxNzc4MiBiNGY3NDQ4MmY5YWZlMTA3ODAzMDY3YTdkZDA2MjA5ZmRlM2NlYmViIGxlZ2FjeS10cnVuaworMTc3ODMgNzZjMWU0MGM1YzVkZTkwNjFlNDYwYTZiOGFkY2VmZjllZGIyZjk5OSBsZWdhY3ktdHJ1bmsKKzE3Nzg0IGM4ZjIyZjE1NDk5ZjhiMTdkZTY0MTYxOTgyMGUxMDI5MmMyOTgxMGQgbGVnYWN5LXRydW5rCisxNzc4NSAyZWEyOTc4NjliMDI3MWUwZWI1MTkyOGU0Mjc1MjllMzAwNmY5N2NmIGxlZ2FjeS10cnVuaworMTc3ODYgYWYxZGU0ZjUwNTA4OWIzNDZjZDQ3ZmM4NWExMzNlY2I2ZTQ2NWJhMSBsZWdhY3ktdHJ1bmsKKzE3Nzg3IDU2MTBlY2QwN2RjMDM2ZTRhYTIxYjYxZWNhY2VmZGNhMTVjZWUwYjYgbGVnYWN5LXRydW5rCisxNzc4OCAwYzkzZDJlMjdhYzA3YzEzMDM4ZGNjN2ExNzgxN2U0MDNjMDFlMmFhIGxlZ2FjeS10cnVuaworMTc3ODkgODI3ZTlkMjFhNzgxNjRkZWZiM2M4YTVlZjcyNjg0MTliYWVjOGRkZiBsZWdhY3ktdHJ1bmsKKzE3NzkwIDcxNWEzZTkyNDczNzE4MjgwNmE5YjUwNzIxODMzY2VhMzVlMGIxNmEgbGVnYWN5LXRydW5rCisxNzc5MSAzZGE5OWYwYzE4NGYyNmJhNGNiZTlmZjQ4ODQ5OWQyOTIzOGE2NTE2IGxlZ2FjeS10cnVuaworMTc3OTIgMTM0ODg1MzlmMDJiZmUyOGJiYWFmMWIzZjQ3ZjkwYWZjNjZlNWM1OSBsZWdhY3ktdHJ1bmsKKzE3NzkzIDAxMWRmMjY0N2Y0MTNkMmQxNWRkODRkNzczY2I4MDQ5MjBmNTk0MGMgbGVnYWN5LXRydW5rCisxNzc5NCBmZDdmODc5YWZmODFjNWFiY2QzZDVhYmJjOTJiZmUxMTQ0YTExOGU0IGxlZ2FjeS10cnVuaworMTc3OTUgYzEyODc1ZGVmYzBlNGUzOTYwN2YzMDRlOGIxOTVhNTdiYmU5NWEwMCBsZWdhY3ktdHJ1bmsKKzE3Nzk2IDE2MjllZjczOGIyZjA5NjdmYjMzOTA0NDk5NTA4YTY4ZGRmM2NlNWYgbGVnYWN5LXRydW5rCisxNzc5NyA5Y2VhNGRiNDFkOWZhZmVlZDRmYzQzZjZjNjQ4ZTcwZGJiOTUxMmYxIGxlZ2FjeS10cnVuaworMTc3OTggZjljZjYxMTA5NmJmNTAyZjhmZDc5YjI1OTU1ZTg2MDBjMzM1NmZiOSBsZWdhY3ktdHJ1bmsKKzE3Nzk5IGUxNWU5N2E2YzE0YTgzNDY1MTgzZjdjOWQ0Y2MxNDQ3YjAyNmViZGQgbGVnYWN5LXRydW5rCisxNzgwMCAxOTkxOWUxNDZmZjhmMzFiNWUzZmJjYTljYjdiNmFlZGRmZTIwMTZkIGxlZ2FjeS10cnVuaworMTc4MDEgNzU5MmY3MjE5YjdjNmNhMWQxMTM1NzVmMjkxYTg5MmNmY2IzZjVhZiBsZWdhY3ktdHJ1bmsKKzE3ODAyIGE1OTYwMGE5NzVkMTI0NzBkMmVkODZmYzQ0NTI0ZTU5NDY4YmRmN2EgbGVnYWN5LXRydW5rCisxNzgwMyA5ZTQ0NWRkY2EyZDc0YTAwMTgyZWE5MjU5NjFjMGJlYzVjZGZhZTk1IGxlZ2FjeS10cnVuaworMTc4MDQgNzNjZWE1OTY1N2JhYmM3ZTYzZDZjZmI2ZTNkYjlmMjUzMzg3OTM3NyBsZWdhY3ktdHJ1bmsKKzE3ODA1IDdhY2I4YmJjMjE1YmI3MmEzMzA4ODYzMmJmZDk5M2U2YTgyMGQwYzUgbGVnYWN5LXRydW5rCisxNzgwNiAxNGI2NDdkNTUwZDM3OTMxYTkyMTA4NWM0NjM5MzYwMzI1MmNhOGViIGxlZ2FjeS10cnVuaworMTc4MDcgZjhiNTI2ZmMzOWY2N2ZkMjY0MTkxODI0M2U5ZWFlOTc4MWE2NWJhYSBsZWdhY3ktdHJ1bmsKKzE3ODA4IDAwNWEwYjRjMzgyZDM1ZjQ1ZGQ2YjJjMTIzNTdiMWM3NDQyN2Y2NzcgbGVnYWN5LXRydW5rCisxNzgwOSA2ZTcwNTI0NzM3Nzg2YjM1ZTI2MjlhZTMzYTg1M2EyMzI3OTgzNTJkIGxlZ2FjeS10cnVuaworMTc4MTAgZDllNjZhODNlNDMzODRhNjM0MWU3NjFhMDY1ZGIxMjBkYjJmN2FhZCBsZWdhY3ktdHJ1bmsKKzE3ODExIDM0MjQ5N2FkOGZlYzk3NjMyZDQwZTI5NjRkYWI1Mzg1MmFiMGRlMTggbGVnYWN5LXRydW5rCisxNzgxMiAxZjlkMjM3NzdmZDAxNzQ0OWViMjg5MTk2ZGM1NGFjOTFhYTE3OTBhIGxlZ2FjeS10cnVuaworMTc4MTMgYzc4ZTc2YTU3MWI2NWRiOTM5MmIyMDEyYjAyYmVmM2I3MTU5NmEzOSBsZWdhY3ktdHJ1bmsKKzE3ODE0IGRiMWNjZTFmZmI2MDgyNjgxMTUzYjYyNjMyNmQ0OGI5OTg5ZjhiZTkgbGVnYWN5LXRydW5rCisxNzgxNSA1MDM4NmM3M2JhMjI1ZDI5ODVmZDI2NTA2NDU5NGJhOWU0OWRkOGYyIGxlZ2FjeS10cnVuaworMTc4MTYgYjAzMWFiY2EzZTkxYWJlMDVkM2UwNjBiOWQ1MjhhMGQ0YTg0MTg2ZiBsZWdhY3ktdHJ1bmsKKzE3ODE3IDU2OTIxNGE0MTgyYzkzZTRmM2MyNjcxYjM5YjVhZmJhNzViZmUxYmQgbGVnYWN5LXRydW5rCisxNzgxOCBlYmFlYjE5ZTAzODA5Yjg4NjFjYmQyY2YxYjFkZWUxYTQ0MGRlNjRjIGxlZ2FjeS10cnVuaworMTc4MTkgOWMzYWVmYTVjZDdmNTkzMmFkMzRmNzgwNjM4Y2EyMmRlYzIyZDZmYSBsZWdhY3ktdHJ1bmsKKzE3ODIwIDczZDA5MzIyZjJjMzYwMDc1NDdmMTU2MGNhOTMzNzg0MTQ5ZDQ0NzEgbGVnYWN5LXRydW5rCisxNzgyMSA1NGVjNWVjMzIzNTJmMGVhODdiM2U0OGFhYThiNDkwMTRkMjI1ZTEwIGxlZ2FjeS10cnVuaworMTc4MjIgMWFhMzcwMDhmZDJjODI1ZTEwYWI3ODQyNTIyZDAzMDJiMTRlNGI1MyBsZWdhY3ktdHJ1bmsKKzE3ODIzIDkzMTRjYzc5ZDZlMTJlN2MxZGFmZGVhNjU0NDFhMTJjNjljNTZjMjggbGVnYWN5LXRydW5rCisxNzgyNCAzMTRlYjhmN2FlMTM1MjlhNTc4ZDZjYmNlODEyMDg5ODQ3ZTcyYjMyIGxlZ2FjeS10cnVuaworMTc4MjUgNTMzNjk0NmI2NDk1YTE2NDBlYmIyZDBiNzk2ZDQ4YWM0ZDc4NjkzMiBsZWdhY3ktdHJ1bmsKKzE3ODI2IGI0MTEyMzhkZTlkMTBmMTJhMTgyYmU1ZDNiNWFmN2IyZjY4ZjRhZjQgbGVnYWN5LXRydW5rCisxNzgyNyA2YWY5YWExNTY0N2Y5OGY3ODc0NzE5ZjhiMGU4OWE0YjQ2YzQzOGExIGxlZ2FjeS10cnVuaworMTc4MjggMzJkMjYzZDQ0N2I3ZTEzYTc2YjViYmEyMDgwMzI2Mzc3ZjAxZTc5MyBsZWdhY3ktdHJ1bmsKKzE3ODI5IDNlZWNkYTJiYTkzYTM4NDY2NjIwMjc2NWEwNGFmMGY3OWUxNzQ2NzQgbGVnYWN5LXRydW5rCisxNzgzMCA0OGI0NWEyODEyNzcwMDE2MTg0ZGRmNGVlZjUwZTZmNDA3OTU1MTQ4IGxlZ2FjeS10cnVuaworMTc4MzEgYzc5MDczNzlhNmJkMjI4NTNkMDY3NDRmZGQ5ZmQxYzhlNDFkMTI2ZSBsZWdhY3ktdHJ1bmsKKzE3ODMyIDI3ZWFiODAzMjc2NjJhN2VlNTVkZmYzYjExMmRmOTg2Yjc3NTU3MDYgbGVnYWN5LXRydW5rCisxNzgzMyA4MzliYTM1YjBhYTMxNDQyODVlNDE5MjAyNWM2YTAxMTc4ZGMxMGQ5IGxlZ2FjeS10cnVuaworMTc4MzQgYjAxMmFlYmJiZTUxNzhmYTBkOTFlY2IxNTBkZTRjM2ZjZDhhYmI4NyBsZWdhY3ktdHJ1bmsKKzE3ODM1IDE3NGQzNGVhYzUxNjNiOWM5NGMxMjI3N2VlM2VkNDAxYzlhMmY3YmIgbGVnYWN5LXRydW5rCisxNzgzNiBlNzlkMDdjMjQ1NzFlMzhlMjE5OWM3ZTliZjJiNjQwMjljZDA3ZDBhIGxlZ2FjeS10cnVuaworMTc4MzcgMjZkMmU0ZjU4YWRjYTk3MGJkZGY5OTg0NDIzY2QzZjQ4ZGE1NTBiYiBsZWdhY3ktdHJ1bmsKKzE3ODM4IDgyMTIzY2UwMjY4NGZlMjUwMWZkYmEyNWIzMTA3Njc0OWJiN2FhOTMgbGVnYWN5LXRydW5rCisxNzgzOSAwZmE1OGZlYTMwY2YyMTZjMjM3ZjJlZjJlY2U4YWU5MWRiMjBhNzUyIGxlZ2FjeS10cnVuaworMTc4NDAgYjYxY2QxYTQ4OTYwM2JjNDc5ZjZkYjJlNzZjZWQzZmI2NWFjNDRlZCBsZWdhY3ktdHJ1bmsKKzE3ODQxIGVjZTZjMTllZGNjMTU1YjRmZjdjNGJmZTY1ZTc0MmRiNTgwYjljZmIgbGVnYWN5LXRydW5rCisxNzg0MiAzZmM2YzVhZGRmMWVjMWFjMjU2M2YwYmZjNTk0NDc4NjdlNDY3NDIzIGxlZ2FjeS10cnVuaworMTc4NDQgYTlkMjRhNTNjNTUzMzRkYTIyYWFiY2IwNjdlMTcyYTU3MzdiOThkNiBsZWdhY3ktdHJ1bmsKKzE3ODQ1IGJiZTA5Y2NjYjQ5YmUwNzA0ZjA4MDA2MWVmNGEzYjg5OWNhMDNkYTMgbGVnYWN5LXRydW5rCisxNzg0NiBlODU3NTRmYTY5MTc0ZmE3MmVjNjE0YjE3MmFjYmEwOWM1MmYwMWM5IGxlZ2FjeS10cnVuaworMTc4NDcgMmI0MjM2NTgwZTBjNGZiYTBlNmY2Zjg4M2ViMWFmMWM5NThiYzA5ZiBsZWdhY3ktdHJ1bmsKKzE3ODQ4IGJiNmNjYTU3ZWI4YjBjOTRiMTY2OTlkOGNiZTQ5ZTQ2ZjUyOWMzZmUgbGVnYWN5LXRydW5rCisxNzg0OSA1ZDQxY2E0OWExMGFkYzJlOGNiMmU5NjhmZjEyNDk0ZDlkYjY3YmQ4IGxlZ2FjeS10cnVuaworMTc4NTAgNGM0OTM0Y2E4NTc5NjIwZTIxYjgzMjdjMGZjMzMyNzJjY2Q0N2E1YiBsZWdhY3ktdHJ1bmsKKzE3ODUxIGZhNWM0ODIzNjdjN2FmNTAzOGRlYmVmZjZlN2M4NDdkM2Y3OTMyZjYgbGVnYWN5LXRydW5rCisxNzg1MiA3ZjRlMjgwNDVkZmI0NTg0MTI0NjI1ODFlNzQ4ZGM2OWJiOTVkMzc5IGxlZ2FjeS10cnVuaworMTc4NTMgZWVjMmViMTIxZGFlMGNjMWQwYzgxZjQ2OTM5YzVmMzkwNjRhN2Q2NiBsZWdhY3ktdHJ1bmsKKzE3ODU0IDVlNGVlZDA2MmI1NGE5ZTZmMjM4MDAxYzI3MDJkNjZhMmY5OTUyNmQgbGVnYWN5LXRydW5rCisxNzg1NSAwYzViMDJjYzU0ODkzOTJhMmNmY2JmOTBiMjc5YTVhZDA0NGEwM2ZkIGxlZ2FjeS10cnVuaworMTc4NTYgYzE2YmRmNTU1Yzc5NzgxMTA4ODc5NmMyMjFkZjcxYzBiZTI5ZjcyYyBsZWdhY3ktdHJ1bmsKKzE3ODU3IDFhM2I1YzhkNjczMGQ5Nzk3M2Q5MDJjODAyZDA5M2VkYzZlZjZiNWYgbGVnYWN5LXRydW5rCisxNzg1OCAwYTk3ZjVkZGUzYTc4ZGM3YzM3MzliZjgyYzM4ODQ5MzI0OThjYzk0IGxlZ2FjeS10cnVuaworMTc4NTkgYTM0OWI4OWJmMTBlZTVkNTFkN2IyYjI0NDc3YmEzMDM4YWFiMTk3YiBsZWdhY3ktdHJ1bmsKKzE3ODYwIDlkNTE0MmM4Y2YyZGRkZDk3MzhiZDRmNDU1NjhmNzNmYmNjNTc5ZGQgbGVnYWN5LXRydW5rCisxNzg2MSAwMDMyZGZmZWIxNjNiNGZhZDgyNWE4MjE0MzkyM2FjNDE2MDAwMzhmIGxlZ2FjeS10cnVuaworMTc4NjIgZGRiMjAxOTA1OTFkYmJmMTZmNTIzZWYwNWY4ZTZlODc1ZmY5MTM3OCBsZWdhY3ktdHJ1bmsKKzE3ODYzIDBjZjUxMTFiZjA5Y2IxYmYxNzA1MGVmZWYyMjlhZWUxOGQ4YzBiZjAgbGVnYWN5LXRydW5rCisxNzg2NCA4YjZmZTZiOTk3YzJkYjdiNGEzOTEyY2ZmZjg3NTM0NmZkMzMxYTcwIGxlZ2FjeS10cnVuaworMTc4NjUgY2I0YjJhMTZlYjg3MTI1NTk4OGVmMTYzMGRmZWM3ZWFhM2RkZmY2OCBsZWdhY3ktdHJ1bmsKKzE3ODY2IGFhMDUyYTUyZWY4NzEyZjA4NWY2ZWY1NWRmZjg1ZjVjZWExYTg0MzcgbGVnYWN5LXRydW5rCisxNzg2NyA5ODQ3YjQ4NmQxNWZiYTgwOWY0N2YzMDQwZmFhODY4YjNhNTMwYzlmIGxlZ2FjeS10cnVuaworMTc4NjggYzVjZjZmYmE1NGRkYjhiNzM2NjI3MjMwZjBmMzNmMWU2Y2FlZGZkMyBsZWdhY3ktdHJ1bmsKKzE3ODY5IGRiM2E5NTc4YWIwYmVmY2ViYzM5YjQ3NGVjN2QyZTcwZjIzZWRlMTEgbGVnYWN5LXRydW5rCisxNzg3MCA2YzUxYjVhZjFiZGUxMzA5NjIwZWVjYTk2M2RiYmMxNmMwNWVhOGU0IGxlZ2FjeS10cnVuaworMTc4NzEgMjViYzE2OTUyYTI0ZTU0NzdiOWI4NDQ1MmMwYjcyODhlOGYyZTAzYiBsZWdhY3ktdHJ1bmsKKzE3ODcyIGIwZDFkZWMyMzUzYTQxMWFlY2Q5Y2IzMzM0OThlZDk4NTBhYjNhYzIgbGVnYWN5LXRydW5rCisxNzg3MyBkYTNlOGM1MDY0Y2FmM2JkMjJiMWQxM2RjZmNmYTdlODg5NTIwMGExIGxlZ2FjeS10cnVuaworMTc4NzQgZmI3YWM4YTQwYTk3YzI0ZTBkYTNjMjdhNWM1NDYxZWZmN2U4YWE3OSBsZWdhY3ktdHJ1bmsKKzE3ODc1IGMyODVkZjE1YTA1MDM4MzAxNTlkZmU0YjcwZTkyYzM0NThmYmViM2IgbGVnYWN5LXRydW5rCisxNzg3NiA5OGIxZmE2YzE2MDAwZTdhNGYzNTQ4MTNjYzc3YzkxODhhYzk4MzhlIGxlZ2FjeS10cnVuaworMTc4NzcgYTZkMzVjYzRiZjVlZTVkODMyMTc0YmIwNmFkNGVlYTI2NDZkZDQwOSBsZWdhY3ktdHJ1bmsKKzE3ODc4IDQwNWFkMGE3ZjdhNjEwOTllN2JiZDhjNTc4N2Q2YWNkYmYwMjk1YTYgbGVnYWN5LXRydW5rCisxNzg3OSBmMTJkMzVmOTk0ODg1NWZjMzRjOTY1OTdkNGJhMzRiZjI2OTI0YzIxIGxlZ2FjeS10cnVuaworMTc4ODAgMzdiMWNhZWVkNzA1NTdhNTkwNjMzMmY2MmYxZjZlZDQ1OTgyZTMwYiBsZWdhY3ktdHJ1bmsKKzE3ODgxIGRiOTEzNWYzODA2ODlhMjNlYTAwMjQyM2YzZTUxZWZlM2JlYzFjMDIgbGVnYWN5LXRydW5rCisxNzg4MiAwYmIzNDg5ODZkNTI4MWIyZTNkOTY2OWNlNzUwYmUyY2VmYzU5Yjk2IGxlZ2FjeS10cnVuaworMTc4ODMgMjljMmQ1ZTUyMTYxMmI4MTIzYjZjOTRmMjE4YzhjMzk1NGE2NzVjNSBsZWdhY3ktdHJ1bmsKKzE3ODg0IGIzNjhlMDZhM2I2Mjc1ZTkxNDY1NjkyMmEzNjc1N2M2NWNlNjA0NzggbGVnYWN5LXRydW5rCisxNzg4NSA1ZmZhNTE1ZTYyMGU0ZDc2NDQ4NTczNDI0NTZlODZlYjVkNDJkNjg1IGxlZ2FjeS10cnVuaworMTc4ODYgMjVmMTA5MmVjZDg2ZDU0ODBmMjg5MjQ4ZWIyNDM5Y2FlZGVlMDRjNiBsZWdhY3ktdHJ1bmsKKzE3ODg3IDUyZWI0OTlmMjViMDlmZDU3YmU1MDg3YzMyOWRlNzZlMDgyMzQ2ZjUgbGVnYWN5LXRydW5rCisxNzg4OCA3YTVjMzg1OWEzNjEzOThmYTE2MmNmYWYxMzBlZjAyMTZlNDkwMjE4IGxlZ2FjeS10cnVuaworMTc4ODkgOWJjNTI3MDZkMjgzNGY3YThjNTM4NjllMzI4YTlkNGU1NzgxODk2MSBsZWdhY3ktdHJ1bmsKKzE3ODkwIGNlNWRmZjMwYTkzNWQxOWYxOGVkZWI0MmU0YzE5N2JjMzljYjcyZmIgbGVnYWN5LXRydW5rCisxNzg5MSA2YzkxYTA0MWMxZDJiMmM5NWZlNmVmZWRiZjA2MDc5ZDQyZjc1NjYzIGxlZ2FjeS10cnVuaworMTc4OTIgOTRjMDMxZDdlOWMyZTgyODllNGExYmYzMzQxNjY3YTkzZTJiYTYyOSBsZWdhY3ktdHJ1bmsKKzE3ODkzIDg5NGRjYTIyNWQyNGFlYzI4NTljYWU5ZDI1ZmEzYmJhMmI1NjZhNDQgbGVnYWN5LXRydW5rCisxNzg5NCA2ZTlmZjA2MGE3Mjg4Mjk5Zjk5N2UxNzI0M2JjZDIzZWRiZjljYWM0IGxlZ2FjeS10cnVuaworMTc4OTUgYzdkNDZlYWU5NWQ4OThkODgwNDhhMTRkZmRlZTBkYzgwMGVjOWIyMSBsZWdhY3ktdHJ1bmsKKzE3ODk2IGU5NzEzY2JlMmJhOGQzMDdkNDk3MWZmNzljMDY3OWVlNGVjMmMzOGEgbGVnYWN5LXRydW5rCisxNzg5NyA5MjFjNzQ1OTc3MWI0MTJlY2EyNGVmYTgxYzMwMDBmNTZhODRmZGNmIGxlZ2FjeS10cnVuaworMTc4OTggZDEwNmRmZGZmNDgwYWViZjFhMzU5YzY5YTNiOWI3MmRmMjI0ZDRkOCBsZWdhY3ktdHJ1bmsKKzE3ODk5IDdlZWZkZTkwZWMwZWU0YjRjZTFmNDkwODQzODE1MmVjODI4ZTgwMzEgbGVnYWN5LXRydW5rCisxNzkwMCAyOTNjYWYwZTYzMmExNzQ0OGIyNmMxM2I1YTFjMTdhYTlmNzdkMThhIGxlZ2FjeS10cnVuaworMTc5MDEgYzBjMjU0ZmJkZTU3NmJjMDE5ZGRjOGMxNTE1YTM1MjQ4MmJlNDRmZSBsZWdhY3ktdHJ1bmsKKzE3OTAyIGRhZTdjZWY1OGFjMjZhZGRjMjEzMDUxMDg1ZDZhY2ZiZDgwMGVmNTYgbGVnYWN5LXRydW5rCisxNzkwMyBjOTBjM2FhYmQ4ZjUwMzZhNWY4MTg3ZTE3MjA1MWVkNDhmNDM2MjdiIGxlZ2FjeS10cnVuaworMTc5MDQgYzY1NGIyMDE4NDAzOWM4OGM1ZTcwNzAwZWEzZjI2Yjg2MjY4MDZlOSBsZWdhY3ktdHJ1bmsKKzE3OTA1IDQ1N2YwZGY0NmRkOTgwNTVlYjhlYWQwMDFlN2FmNjBlYzNkNmY4NTQgbGVnYWN5LXRydW5rCisxNzkwNiAxZGQ3MmE5MmU5MjJjMzVhZDNkYzVjZmFhMmZjZWUxYWFkYzk5ODZjIGxlZ2FjeS10cnVuaworMTc5MDcgNDNjNDlkYmQ0NTQ2ZThlY2FkMTQ5MGMxZDIyMjgzMmYzYWQ5NTgxZCBsZWdhY3ktdHJ1bmsKKzE3OTA4IDc4YmNhZTc3ZThjNzAzZTg2NmJhYTkzNGJkZDg4ZmUyNTQ2YWE3ZDEgbGVnYWN5LXRydW5rCisxNzkwOSBmY2Y4NWM5MGEyNzQwYmZjNmZiYzFiNjQxNjMyNzZlZWVmODUzYTRhIGxlZ2FjeS10cnVuaworMTc5MTAgMjU1NzljZDZjZGQ5MDM4MDdmZTQ4Mjk4ZjlhYzgzODc5MWMwZWQxYSBsZWdhY3ktdHJ1bmsKKzE3OTExIGJlNGZjOGI2ZTFjYjgzYTAzMDYyODZmODFkYzE4M2NhMWRlM2Y5YzQgbGVnYWN5LXRydW5rCisxNzkxMiAwOGU2ZjEwMTkxNzE0OThiMDRiNzgwM2Y0OTIzZjE2Y2E0MjQ5ODJhIGxlZ2FjeS10cnVuaworMTc5MTMgNjI3ZmY1NzhmMTJmOGY4NTE5MmYxNzMyYjk0YjQ2OWU1Njk5MDU1NCBsZWdhY3ktdHJ1bmsKKzE3OTE0IDQxYmZjOWE0MGZlMzk0OTZiODM0ZDIzNTU5ZDZjODE4ZWRlOGY4MzAgbGVnYWN5LXRydW5rCisxNzkxNSBiZjI3Y2FiYTNkMGU0MDkyMzE4NTk4YzQzM2QzNzU0NDJlZjllYTk2IGxlZ2FjeS10cnVuaworMTc5MTYgM2EwNGJlYmI2NjZhZWIwZTBiY2U4ZmRjZjEwZTc5NTRiMGEzNGM4NCBsZWdhY3ktdHJ1bmsKKzE3OTE3IGFjYjg4NjA3YjRiZDdlOGJjMGRlNDJhNGY5ZmJjYmUyZDdhMGUyOTYgbGVnYWN5LXRydW5rCisxNzkxOCAxNzdhZTFjNTIwMzc2NTAyMDZhY2RiNTdlMzQxMzRjOTk2MDc0YjdiIGxlZ2FjeS10cnVuaworMTc5MTkgMTAzNjEyNTE2YWE4ZDM1ZmNkZGVhMGZkY2Q5OTllYzdkOGQ5MDQ2MSBsZWdhY3ktdHJ1bmsKKzE3OTIwIDY3NTc0ODM3OGM4MTk5ZDk3NDliNTRhODkxY2VmNzE3ZDI2ZjNjZTEgbGVnYWN5LXRydW5rCisxNzkyMSBmNzgwNDY5YTk1NzdmOTVjOGM5NzVmMTIxNGMwMzBlOTg4NjkyMWZhIGxlZ2FjeS10cnVuaworMTc5MjIgYzA1OGJjMzU2NDBmNzhhZTg4NDBkYjYxMmYyYTliYjkzYmVkODdjYSBsZWdhY3ktdHJ1bmsKKzE3OTIzIDExOGFjODVhZjMwYTA1YzRiYzEyMTcxYWNiNmNkOGQzNDI4MWM4ZmMgbGVnYWN5LXRydW5rCisxNzkyNCAxODc5YTQ4YTMxMzM2YTRlYjRjZDI1ZWQ3OTFhYTQzMDE0NjVlZThiIGxlZ2FjeS10cnVuaworMTc5MjUgNjkwYjQxZDQ3YzFkNmFkNTY1ODZmZGE2Njg5YzkzYjAyMDAyZmM0MiBsZWdhY3ktdHJ1bmsKKzE3OTI2IGE1M2YxNmIyMGYxZDkxYmQ5ZGIwMzMzNWI4OTA5NmRkZTFhMzE4NDUgbGVnYWN5LXRydW5rCisxNzkyNyA1N2ZlYTg3MDk3NThmMWYzN2ZmODBiMTRiYTgxODQ0MmYzNWM2YjYzIGxlZ2FjeS10cnVuaworMTc5MjggNzFhNGFhZGRlMDE5OGI4NjZhNDYwNmYxYzczYTYxZjU1NzJlN2E3MCBsZWdhY3ktdHJ1bmsKKzE3OTI5IDYzZDIzN2EyNWY0OTFlMjY4ZWNhZTc2MjRkODQ5YzZkODhlMjUyNDkgbGVnYWN5LXRydW5rCisxNzkzMCBiMjVlYWJmNjZkOGQzNzVjNDU1NTI4MjNiNTFiNzU2NDg4NjQ1ODU3IGxlZ2FjeS10cnVuaworMTc5MzEgN2NlOTA2MWY3OTY3ZmZjNzMyNTI1OTU1ZDNhNDdlY2ZmOWZlMTE1NSBsZWdhY3ktdHJ1bmsKKzE3OTMyIDc3ZDFkNzlhNjVkNzVlODRhODQ3NzNjMzdkODFjMzJmNTBmZmZlYTcgbGVnYWN5LXRydW5rCisxNzkzMyAzMTQyMDI3YjU5NzlkYWVhYmQ1MjYxNzUxNWY0MTg0YjkxNTc2YTI2IGxlZ2FjeS10cnVuaworMTc5MzQgYWQ4ZWYxNTVjYTM5MGU4YTY4MTAyMmFlMzExZDQzMzhkOGJhYWIxYiBsZWdhY3ktdHJ1bmsKKzE3OTM1IGRjNGNhZWRjNTk2MTFiMTcxYjE0OTc4YzE2YTZhZjFkYjcwNjI2NDEgbGVnYWN5LXRydW5rCisxNzkzNiA0N2U2ODA3NzExN2U0MjExNTA5ZGMyODNhM2U3NjdhMTIzOGU1ZjUwIGxlZ2FjeS10cnVuaworMTc5MzcgY2RmZWMzNmYxMmNjOWZhMWI4ZTlkYTVlYWE1NjBhODY1NzkyZTliZCBsZWdhY3ktdHJ1bmsKKzE3OTM4IDBlMGVhNTZlNGJlODRjMDQ4ODIwYjEwMjg2NWMyYTA2ZmRmYWJmYzUgbGVnYWN5LXRydW5rCisxNzkzOSBhMTE5ZTBjOGI4MGIwZTRkMTk2M2JiMzM0YzYzZWEzODJiN2JiMjkwIGxlZ2FjeS10cnVuaworMTc5NDAgYzJmMTNjMzk1YjlhZTdmODg1ZmM0N2E4MTZhYWIwNmYzMjg4ZTFlMSBsZWdhY3ktdHJ1bmsKKzE3OTQxIDAyYWQ5Y2I1MjIyMjc4MzA2YTU3ZDg3MzdiZGQ5MmM1ZThiYzFkZmEgbGVnYWN5LXRydW5rCisxNzk0MiA5YmU2N2M1YTgyM2FiMWRhMWM5MzIwYTYxMWFjYzUxZTNlNzMzNDZmIGxlZ2FjeS10cnVuaworMTc5NDMgZjlkNGJkNzliNDY0ODBjMTRhYzRhZDdhMjc3MjMwZTExNGEzYWMyMCBsZWdhY3ktdHJ1bmsKKzE3OTQ0IGYwOWE4NGFmNjRiZDg2MzIwMWJjYjY1ZmZlYmY2MDlkNmNkMWExMzYgbGVnYWN5LXRydW5rCisxNzk0NSBhMTNhMmFjYmUyMTRlZjhmYzA2YmEzNWUzODAwYTNlY2MzNGIxNTlmIGxlZ2FjeS10cnVuaworMTc5NDYgMWE2ZjkxNTg2MzBmMWQ2ZWZhOTViZWQ4NzBiMDkwNmU0MDViYWE1MiBsZWdhY3ktdHJ1bmsKKzE3OTQ3IGQwYTZkNDQ0ZDZiYzc3YjE2ZDg2NjM3YjM2YmExZTVmYmI2NTJhOGMgbGVnYWN5LXRydW5rCisxNzk0OCA1ZGE5NjIyZmVkN2I1NDc0YjVkYzRlOTFiYzdiNWUyODdjNDdjMGNkIGxlZ2FjeS10cnVuaworMTc5NDkgNDFjNDJiMWJkNTgyOGI5NDg4ODBjOTVjZTc3ZGIyNjA0YzBhYjY3YSBsZWdhY3ktdHJ1bmsKKzE3OTUwIDQ0ZmExNmYwMWI0ZTEyMjlhY2MzZDI0NTZlYzY3YzY2NDg5NmE2ZWMgbGVnYWN5LXRydW5rCisxNzk1MSAxYjM0YzQ3NWRhODdmYWUzZWE4ZDVhNTQ2NjQ3MTNlYWZkNzM4NzZiIGxlZ2FjeS10cnVuaworMTc5NTIgZWMxZjIzNjViYzJkNTdiMTFlNjBjMjU1NWRlNzJkNzc3YWU2MDYxYSBsZWdhY3ktdHJ1bmsKKzE3OTUzIGMxOTk0NjBjY2RlOTA2NjAzYzkzMjZiODAzODE2MDg1MTg5MTYzOTIgbGVnYWN5LXRydW5rCisxNzk1NCA5NWJlNDNkMWQzMzI2NTcxOTM2ZWRlNTk3NGE5MGVlMjA3NTFhNjZlIGxlZ2FjeS10cnVuaworMTc5NTUgNWZiOGRjMjg5ODEyZGY5ZWI0ZDY0NjIwMDk4ZTg0ZDIzMzBkMjAzMyBsZWdhY3ktdHJ1bmsKKzE3OTU2IDdkZTA4MDhmMWZlMzIwN2RiYzY1YTExMGYwYzYwNDY0M2UyYmVmZjMgbGVnYWN5LXRydW5rCisxNzk1NyAxYWNhYzQ3NTZhMDNiZWJhNDBmZmJkMjQ3NzBkODAwYTA0YWY3ZjgxIGxlZ2FjeS10cnVuaworMTc5NTggZjhlOTYyNTA2MDYzZGRhZjUwODBkMTM2ODY1ODE3N2U0NDNlMjliNSBsZWdhY3ktdHJ1bmsKKzE3OTU5IGEwMmY5ZGFjMjE2Y2Q5ODk0MjRmZjA5Y2Q5YzMzZmIzY2Y0NmY3YjAgbGVnYWN5LXRydW5rCisxNzk2MCA4YmZhOTcwM2E0ZTRmNDAzNzBlNWU5YTRjYzQ3NGJiNjgzY2JkMDQwIGxlZ2FjeS10cnVuaworMTc5NjEgYTVhOWNmYzAwOWI1YjNjMGFiOGIzZWRhOTE0ZGIyN2IxZGM2NDNhMSBsZWdhY3ktdHJ1bmsKKzE3OTYyIDI5MDA0NTIwMjZjY2Q1ZWUyMjI1ZGQ4N2Q4ZjFkZTgyYmJmNGY4Y2UgbGVnYWN5LXRydW5rCisxNzk2MyBmNzZhMWVjZDZiNTkxNmFmZTBmNTY1NmU2Njg1MjQ1ODhkMWFmNmE4IGxlZ2FjeS10cnVuaworMTc5NjQgNjY2MDkxZjBkNzE0NDcxYWVkNTVkODc3ZTMzODk1NjA1OTZiNGI3NyBsZWdhY3ktdHJ1bmsKKzE3OTY1IGQyYzE3YWRmMmYwYzQ1NTY5NTJiYTc0NDBkOTNlNzVlY2Q1YjA4MDAgbGVnYWN5LXRydW5rCisxNzk2NiBjZTA2Njc5OTEzM2VhNDc1MDU1ZjEzZTNkZTA3ZGU3NjAzYTJlYzg5IGxlZ2FjeS10cnVuaworMTc5NjcgMzA4MWQ3MDFiZTg2MTVmMzJjOWE4OTEwMjcwZDJkZDFlMWI0MDYxMyBsZWdhY3ktdHJ1bmsKKzE3OTY4IDE1NGI3MWUxNjU2NTAzYTY5ZThiMTNlYTlmMmRmNWY3MTA1ZjYzY2MgbGVnYWN5LXRydW5rCisxNzk2OSBhODA1NDEyNDViNjYzMjAwZDFlMmM4YzE4NGJlODZhMWNhN2U4YmM2IGxlZ2FjeS10cnVuaworMTc5NzAgZTk2ZDY2NGRlMjU2YWNiOWRlZDg2MDcxMzZiMmJmYmJkNDNkYmY5YSBsZWdhY3ktdHJ1bmsKKzE3OTcxIGM2ZDlhZmE2ZTZhMDVjNWU3YjM4NGQ4MmRkMjk1NmUwYzQ2NjJhNGEgbGVnYWN5LXRydW5rCisxNzk3MiBmYzY4NmRlODYwNTliODQ1NjBmMTRhODdiOWJjNDgyZDFkNDAyZTU3IGxlZ2FjeS10cnVuaworMTc5NzMgNGUxZTlmNWMwNzk1MDY4ZTQzZDJhZThmMmVhZTlkZjAzZmM2Mzk3NCBsZWdhY3ktdHJ1bmsKKzE3OTc0IDFjZDAyODVlM2NmZWQ4N2MyMTg4NzhlNmJkN2ZkNzIwNjU5YzI3ZDQgbGVnYWN5LXRydW5rCisxNzk3NSBkMTZiNzQxM2RjNjk2ZGY3NGZmOWVjY2E0YzJiMmE3NDc2M2Y3NzgzIGxlZ2FjeS10cnVuaworMTc5NzYgNjZkMjQ4MzI4OTY3MmQ3NWUyYzhkM2JkY2Q4OTM1YjhiZDJkNjYzNiBsZWdhY3ktdHJ1bmsKKzE3OTc3IGEzNThiYTcwN2U0ZDM1MWU1NDVkNGI0OWViNGNhNWUyZTliMGZiNTkgbGVnYWN5LXRydW5rCisxNzk3OCAwYzBlOTA5YjhlZDIzYWQ0MGQ2YjhkMmE5MmM5Y2JkOWI0Nzg2NzU1IGxlZ2FjeS10cnVuaworMTc5NzkgN2QwYWY0ZTgxM2Q4NWRlZWFiZmE4OTlkMzNiZDQxN2U3OTM1ZTI1MCBsZWdhY3ktdHJ1bmsKKzE3OTgwIGVmMWY0NzNhYWVlYmViM2YyZTY0Y2I0MmY4N2RmOTZjNTQ4OTZjMjQgbGVnYWN5LXRydW5rCisxNzk4MSAzMmI4YzVhNDgwYWRlMzVjZGI1NWZiNWIzNjkzZmQyZmFiOGRkMjZlIGxlZ2FjeS10cnVuaworMTc5ODIgM2FlOWQzMTNiYzMzZTBiNGZhNWZhZTY1NWE3MzIzYjM4YzI0MmM2NiBsZWdhY3ktdHJ1bmsKKzE3OTgzIDY4MDM0MjkyNTBlOWJkMDhmYzc1MGE5MTgyNjM2M2RiMGNhMjU4YTIgbGVnYWN5LXRydW5rCisxNzk4NCBmNzcxNDUzYzNhZjU4ODY0ODgyZmMzMzk3M2Q1YTlkMGY4NWNjYzVjIGxlZ2FjeS10cnVuaworMTc5ODUgZWJhMzIzZDc0MDdmYTEzNmViMmYyNGQzNjMwMjMzMzBkMThkODdhMSBsZWdhY3ktdHJ1bmsKKzE3OTg2IGNmMjY2MWE0NTk4ZWJiMjdjNjdlOWQ4MjYxMWRhODJiYzM5MTc0NzMgbGVnYWN5LXRydW5rCisxNzk4NyA3ZTZlNDBlNDFjNmU0YTdjMzY0NTQ1MTNlOTA1ZTJiNWU5NGZiMWI4IGxlZ2FjeS10cnVuaworMTc5ODggYjM5MTc5NDBlMWZhMWMxYTA0YTY5ZjFiOTUyNGFlMGY3ZWVlMGVhYSBsZWdhY3ktdHJ1bmsKKzE3OTg5IDM0YTZlM2VhZDFjMDQ4NTU3MGYyMmZiNDE1ODIzODcwODUyYTRiMGQgbGVnYWN5LXRydW5rCisxNzk5MCAwNTY4NmY5N2YzOGQyNDZkZDM0NWZlYWJiYzhlMzY1MjUyZDFjOWZkIGxlZ2FjeS10cnVuaworMTc5OTEgYTVjMzQ2OTIxOGU5YzQ1NGNiNWFlMjRkYjY2Y2Q2YmJkY2MyNWU5MyBsZWdhY3ktdHJ1bmsKKzE3OTkyIDlhZDA3NjRmMmU4NDFiMTY1OWJlNzY3MTcyZjQwODNkMmY4NDA3YmUgbGVnYWN5LXRydW5rCisxNzk5MyA5MTIwMWRlMjVmMzZkNjQ5MDI4NDA3ZTRkZDU4YmMwNDAwNGM4YWQwIGxlZ2FjeS10cnVuaworMTc5OTMgZTI3NjMyOWNjZTAzNmE1ZjllOWQzNDUxMjU2ZGNhNTk4NGU1NDNkYyBsZWdhY3ktdHJ1bmsKKzE3OTk1IGRhOTA2N2JjOTQ5NDI4ZjZkODg0OGJkNTE2MjRjYmNkYjk3ZWUyZDkgbGVnYWN5LXRydW5rCisxNzk5NiA1NzE5MmYwYWMxM2E3ZDZmZGY5M2Y1NmE4MTYwMjgwNWY1ODM1Nzc3IGxlZ2FjeS10cnVuaworMTc5OTcgZGQ0OWYyOWQ5ODc5NWUyNWQxMzQyNmJjMzdlMzAyMzQ2YjdlYzZjYyBsZWdhY3ktdHJ1bmsKKzE3OTk4IGZiOTk1ODkzM2IyNThiNTgzNmVhMzdjYTY2MTQ2Y2U3MzE3MmY5ZTMgbGVnYWN5LXRydW5rCisxNzk5OSA0MzMxODc0NjY5MDE2OWQyYjQ5NTQ0MjU1NzhjZTI1ZWIzMWJhM2JhIGxlZ2FjeS10cnVuaworMTgwMDAgNTYzZGVlNTk4ZDNhOWY0NjNkMzgzNjQ0MjdmZDNkZTllYTg0M2VjYiBsZWdhY3ktdHJ1bmsKKzE4MDAxIDc0YzAyMGFkZDg0NmVjNGI2NmEyMGM5YjgyOWM2MGFiMWVjM2E0NDAgbGVnYWN5LXRydW5rCisxODAwMiA2YjAxZmMyMmVmNmVmOGVkM2RmZTM5OThjOTA5NTBiOGUwOGYxYzg0IGxlZ2FjeS10cnVuaworMTgwMDMgYTE5YjFkNmE1OWNlMWM2OGU2MmFiYjNjNjViNTUwOGUwYzQ1ZWM1YSBsZWdhY3ktdHJ1bmsKKzE4MDA0IDVjZjBhMDJhNTc0YjExOTk5YmNlM2M3Mzc4ZWFiNWRlNzRkOTZjN2QgbGVnYWN5LXRydW5rCisxODAwNSA1ZTViNDMxMThjNTJkYTZmYzZiYzliZWU0N2IwMjRjNTIzMDFkNzVkIGxlZ2FjeS10cnVuaworMTgwMDYgYTJmY2M0ODdiOWRhMTg1ODc2ZmQ3ZTljZTAzMWFlYjE1YjZiZDM5MyBsZWdhY3ktdHJ1bmsKKzE4MDA3IGZkYzJhYmRmNDc3N2ViZDJmOGQ5ZGQzM2E2ZjlmYzk4ZGNlMGVlN2IgbGVnYWN5LXRydW5rCisxODAwOCA0ODZmM2ZmMTRkOTVhYzk3ODJhNTNjZWJlMTliMzVmZWEyZWYxZGY5IGxlZ2FjeS10cnVuaworMTgwMDkgY2E5ZjZhOGU5ODg1NzEzYmM3ZDgxOThmNjAyYWMzZDEyNWYzZjhhZCBsZWdhY3ktdHJ1bmsKKzE4MDEwIGVkNDlhNjc4NjllOWMyMGY0YjZjM2U0OTljZjY2NjNjN2RkMGI5YTQgbGVnYWN5LXRydW5rCisxODAxMSBlMTdkOGNkMDk2ODlmMDFhYjdjYWFjMmRmNmI0NjNmMDg3ZjRlNjM1IGxlZ2FjeS10cnVuaworMTgwMTIgMTczMDU5MWQ1ZDVkYThhMjUzYWJlM2NjMGY3Nzk2ZDAwNmRhODBkOCBsZWdhY3ktdHJ1bmsKKzE4MDEzIDc0ZjE2NWRjMGI1YWU3YjVhYmYyMDQwMGE0MmY1MzNjY2FkZDU1OTYgbGVnYWN5LXRydW5rCisxODAxNCBiZWNkOGExMjE0NjRmMzZhNGFhOWRiZDI3YTY3NGU4YTc3YzM2NzY0IGxlZ2FjeS10cnVuaworMTgwMTUgNDU5MjMyYTliODA0YzBhMGNmNjQ5NTdjOTIzYWU5NjE3YjgyNjQ0OSBsZWdhY3ktdHJ1bmsKKzE4MDE2IDdiMDdkNjJkMmM3OTYxZDQ1NGY2ZGUwNzg3MzQ0YzFmMzIwZTRmZTUgbGVnYWN5LXRydW5rCisxODAxNyBlNzE5NzFhNDAyZDMxOWFlZmM0ZTNjYWIyZWM3YTI3NjRiOTNlNjlmIGxlZ2FjeS10cnVuaworMTgwMTggM2MyMTA2NGU4MjE0YzI3ZGRlZTYyMTZhMjgwMzQyYzUxYjJjYjc0YiBsZWdhY3ktdHJ1bmsKKzE4MDE5IDAwN2E5MWQ3NzcwM2ZlYjZiYzJhNTY0ZDIzMDBhMzNiNTY5NGY2NTQgbGVnYWN5LXRydW5rCisxODAyMCBiMDc1MzU5ODAzMDE2NTQwY2ZiOTQyNzc4NDhlYWMwNTUwMWIwNGM0IGxlZ2FjeS10cnVuaworMTgwMjEgYTgwMDZiYmI2MjI1Nzc5YzNhMGQ3ZWJhODBmZTg4OTc1MGFjOGExOCBsZWdhY3ktdHJ1bmsKKzE4MDIyIDg5MzBlYzNiYzAwYTkxYjcyMmEyN2ZjNGZjYmQyODhhMWZjZTc1MDcgbGVnYWN5LXRydW5rCisxODAyMyAyNTc3NTE5ZDVlYTEzOTc0NmE2ZTI5NzBkMDRlMzdmMjhmMDhkNDM4IGxlZ2FjeS10cnVuaworMTgwMjQgZTYxZTY0ZDFiNWVjM2I4MWM3NDIyODM4ODhmYmRiY2JkZGZjMmQyOSBsZWdhY3ktdHJ1bmsKKzE4MDI1IGU1ODJmNTczNDNmNGQ1YzgzNzQzZGVjYjdiYTgwNDFmZDMyYmRiYzIgbGVnYWN5LXRydW5rCisxODAyNiAyZWRmMzY2ZjU2M2M4ZGI2ODc2YjIxM2E4MDE0MGM5MDk3ODA4YmE2IGxlZ2FjeS10cnVuaworMTgwMjcgZjYxMDJjNWQzZjljMmMzMmQ5OTlmYjM4ZGY1NWY5MzEyNDUxNjI1NiBsZWdhY3ktdHJ1bmsKKzE4MDI4IDA5YzdhYzE4OGNlMjE3OGI4N2IwNjUwNGIwZTRmZTU1YjNiYzRkYjkgbGVnYWN5LXRydW5rCisxODAyOSA4NWEwMmNjMzc1OTBhNmY0OTBkZDg4Y2JkOTg4NjA2ODk0NjViOGRmIGxlZ2FjeS10cnVuaworMTgwMzAgZDJmNGQ3NDhjOTIxZWJkYjA5MGYzMjc4ZGNhMTZiODRmNDg1ZWY5ZiBsZWdhY3ktdHJ1bmsKKzE4MDMxIDc0NGFhMDYyZjQ3MDFhNDE1NDBkZDQ2ODI3YWNlNWMyYWFlOTBiODAgbGVnYWN5LXRydW5rCisxODAzMiAzZWI4Njg3Yzk4YzZmN2MyYzRjYzc5MTI5NWI1Y2NhN2M1ZjM3YjU1IGxlZ2FjeS10cnVuaworMTgwMzMgYWIxZjkwZGQ1MDJmOGFhODU5MjAzN2RiNjc3NDNkY2YyYzVlZDc0NCBsZWdhY3ktdHJ1bmsKKzE4MDM0IGU3ODIzZjBjYTIxYTA2MTJhYTA1OTlkY2M4NTE2NWMzZDU2NjU0NzkgbGVnYWN5LXRydW5rCisxODAzNSA1MmQyZDM2YjhiZjdmNzg1NmVlYzc2NTIzMjY4ODRlMGQ1YzM0ZTBlIGxlZ2FjeS10cnVuaworMTgwMzYgMWI3M2IzNTE0YjU4NTVkNWVkNDdiNzIzODViMjM5NTc1ZGUwMmFkYSBsZWdhY3ktdHJ1bmsKKzE4MDM3IDAxNWRhMTNmMDAzOGMxNjZmMGU0NmViNzRjMTY5YjlmNjA5MTcyODQgbGVnYWN5LXRydW5rCisxODAzOCA1NDI3Mzg1OGVhZDljNjI1MTA1NGU5NTQ3N2FhNTQ3OTY3YjMyYjk5IGxlZ2FjeS10cnVuaworMTgwMzkgMmVkMzU4NDQ2ZjJmZTMzOTAyMzkxZThmNDgyMzU5ZmQyMTFlOGZlMSBsZWdhY3ktdHJ1bmsKKzE4MDQwIGIzMzg3ZWViYTY4ZGZlNGNhOThkNWY5MmFkMmQ0ZTIwZjM0MGY1ZTIgbGVnYWN5LXRydW5rCisxODA0MSA0ZDIxODcyNjRjZmE3YWQxMTMwMGNlOWVkODI1MzNkMDkxZTBhYzBjIGxlZ2FjeS10cnVuaworMTgwNDIgOWU5ZWUzYzVhNjA3OGYzYWVmYjEzYTU5ZTRjYWRiZjE2MWFlOTBmMyBsZWdhY3ktdHJ1bmsKKzE4MDQzIDEwMGJlZWJkZTlkZmY1NGQ0OGI0NTA1NTcxMjFhMjExYjQ3ZGFlMmUgbGVnYWN5LXRydW5rCisxODA0NCBiMjg5MmNiYzYzZGI3MzQ0MTgwY2I1MjcwMjU5MmVkNTZiNzk5NTNmIGxlZ2FjeS10cnVuaworMTgwNDUgNWFhOGM1YWFmZmFkZDY0MjQ1ZDQwOTczOTY3MGE2NjExNmQ5N2EyOCBsZWdhY3ktdHJ1bmsKKzE4MDQ2IGYwNDRiMDZlMzE3ZGFhMjQwMmQzNzlmNjQ4NGM3ZjE0OTBkNWE4ZjAgbGVnYWN5LXRydW5rCisxODA0NyAzMTljNmUzNzE4MjUxYzk4MzUzNDM2MTFmZDI3MzI4MGY0MGZjMTNiIGxlZ2FjeS10cnVuaworMTgwNDggNjU2ZDQzNDM4OGM4ZTIyODMwMjJhYzE0ZDk2ZDRjYjUyMmM0MmM0YSBsZWdhY3ktdHJ1bmsKKzE4MDQ5IGRiNGQ4MGE2NzM4OWEyMDYxZDFhMWEzZGUyMzA4YzM0MDAxMGZjMDQgbGVnYWN5LXRydW5rCisxODA1MCAxYzYzZTIyNGY2MTY2NDBjNjhlYTQ2NTljNWJkODdlODQ0ZTdhYWIxIGxlZ2FjeS10cnVuaworMTgwNTEgZTNkODM2NWVhMjMxNTEyNmU4MDNkNDkyZDdmOWQ4YTcwMWI1ODg5ZiBsZWdhY3ktdHJ1bmsKKzE4MDUyIGFmMDJhYzU4MDAyOGM5ZTVkMWMwOTJmMjAzNTJmNWNhYzRhMmZiZWMgbGVnYWN5LXRydW5rCisxODA1MyAzNzQzYTZkYmM0YTc3MmI1YjA4YmRjZDExMmIzODI3NWY4NmQ2MDkzIGxlZ2FjeS10cnVuaworMTgwNTQgNDhjYzc3YjYzYWQ1ZGY1ZGVjMGMzYjA1OTc4MjY5MTEzMTZjNGYzZSBsZWdhY3ktdHJ1bmsKKzE4MDU1IDIzYmYzMDg1OGVmNDUzMWVmMTQyNjJmOTA2MWUzOGU2MTdhNTM0M2MgbGVnYWN5LXRydW5rCisxODA1NiBkNDY5ZDE1NzIzZDM1ZjA1MmZmYjY0YzA0Y2RmYmI0ZTIwNGYyY2IwIGxlZ2FjeS10cnVuaworMTgwNTcgNzdlYThmY2VmMjRjYjM1NWIwYmUxZmQ2ODIwODM1ZTNmMWIxODQzNiBsZWdhY3ktdHJ1bmsKKzE4MDU4IGM1MGI3ODZlYmM0ODRiMjRmYjkwN2JmMjAxZDg3YTk5YWY1M2JiNDUgbGVnYWN5LXRydW5rCisxODA1OSA0ZWViMDI4MTdiNWQ4MGU0MTNiN2E2ZWFkYzViM2U1Y2ZiZjI3YWVkIGxlZ2FjeS10cnVuaworMTgwNjAgOWI3ZGRkOWNhZTMzZTI3NzFlOGQyNzJlNjM0MjU5ODk2MWViOTM0ZiBsZWdhY3ktdHJ1bmsKKzE4MDYxIDY0MTdjZTkxNGRhZTg3ZWRkMjg0OTE0OGFkMWY2YjQyMDk5ZTQwYjcgbGVnYWN5LXRydW5rCisxODA2MiBlMGE1ODM1YWY4MzM1MGEwNzg2MGFiN2UxYTc5Zjk1ZjQ5ZDA4YjdkIGxlZ2FjeS10cnVuaworMTgwNjMgMDRlNzZlMDhlMTBmZjQxZmUyYWVjOGE1NmJlYWU2ZmRhMzUxZGJhYSBsZWdhY3ktdHJ1bmsKKzE4MDY0IGM5NGYxYzc3NjE1MzZlYTcwNjMxNjcxZmMwY2UzOWMxZTEwNGRkZjUgbGVnYWN5LXRydW5rCisxODA2NSA3MDFhNTYxYmRlZmE4MTY0ODY0Y2FhOTI4MmE0YWIyZTVhODViYWFkIGxlZ2FjeS10cnVuaworMTgwNjYgNzgzOTY3YjE2ODc5YThhODRiZTU4YjE5MmZlMTZiOTdhZTkyMmE1OSBsZWdhY3ktdHJ1bmsKKzE4MDY3IDlmMzA3NzUwNmQxYTE2YmE0ODdiYzUxMGIwN2ZmMDFhMTZkOGRjYmQgbGVnYWN5LXRydW5rCisxODA2OCBkMmMyMDVjMzZkOGE0MThmNzBkYzkxMWYwOGY5M2I0NDRiZDM0YjYzIGxlZ2FjeS10cnVuaworMTgwNjkgZTRjOWI4MDVmMzlmYmQ3ODNhMDkyNTBhMTA5ZGMxNzdiMzM3ZDEzNiBsZWdhY3ktdHJ1bmsKKzE4MDcwIDUwYTg4OGVjNTdjMTI3MTFmZDUxMWEyOTNjZTA1MzY1OTEyMGNhYmQgbGVnYWN5LXRydW5rCisxODA3MSA4ODJjZWZlMjFkYzM2ODE4NWQ3ZmZkNzkwOTg2M2NiMDY3NTgyN2U4IGxlZ2FjeS10cnVuaworMTgwNzIgN2Q0NTI0OWIxNDc3ZDljNzhiOTU0ZmEzOTQwMzU5NmI0NWJjMDdmYiBsZWdhY3ktdHJ1bmsKKzE4MDczIDk1OTg2NTBmMmJjOTAyMzIwYjdlOTIwY2VjODJjNjBmZDQ4ZDAzMWIgbGVnYWN5LXRydW5rCisxODA3NCBhMzk3NWQyODExZjAwODlmNTJkYTJjZTNjNTg2YWE3ZTdiNmNhODhjIGxlZ2FjeS10cnVuaworMTgwNzUgYTgyZTRjMjk1YjkzMDBkMzA4YjI2ZDE0YmY0MjA5YmIxZjMwNzg1OCBsZWdhY3ktdHJ1bmsKKzE4MDc2IDViNTY1NGNhNzU1NWI5OGIwZTJiNDFjZjY2MTEwOWQ2MDNlNDNjYzIgbGVnYWN5LXRydW5rCisxODA3NyA5OWYzOGM3NTVhYmViYTQ1NTAxMDk4ZjZhMmFiNDA1NjYzNTkwMWU3IGxlZ2FjeS10cnVuaworMTgwNzggM2U3MDE2Yzc5ZGFhMGU3YWZjZDNlNDUyZmRmMmRmNzAwYzVlMzNjNyBsZWdhY3ktdHJ1bmsKKzE4MDc5IGQ3YzkzYTc4Yzk0OTI4YWZiOWMyOGMzYjQ0YWI5ZjE3Zjg5MmUwNDUgbGVnYWN5LXRydW5rCisxODA4MCAzZDkwZTFkNzYwNWY3MTI3MjNjNGI0ZDZiY2UzMGJlY2M0YjI0MGQyIGxlZ2FjeS10cnVuaworMTgwODEgZTQ3MGE5NjE4Y2E3MmFiYTM1ODZkMTRhMzRhM2QyMzQ2MTQyNzBmZCBsZWdhY3ktdHJ1bmsKKzE4MDgyIDdlOTJiN2E1MDU3YzUxMGYxZDNiZWUyNzkyZTM0M2RmMDNhY2Q3ZTQgbGVnYWN5LXRydW5rCisxODA4MyA0ODZhMzFkOGEzYjM1YzVmOTFmZTE3MjdjNTQzYzhmYTc2YzA2M2Y1IGxlZ2FjeS10cnVuaworMTgwODQgNDg3YjM1MDJhNDViMzEwZmNkYTcwYWEwOWZkYjJkNjU4Y2Q1ZDFhZCBsZWdhY3ktdHJ1bmsKKzE4MDg1IGY3OTI4MjBmM2NkNGJlZjU2MDUzY2FkZmU4ZTRkZTVkMDEyNjQ1YWQgbGVnYWN5LXRydW5rCisxODA4NiBkMmI5Y2M0NDBiOGRkNDJlMDMxNWYyYjhkMzI2MWYzMTBjN2EwYjAxIGxlZ2FjeS10cnVuaworMTgwODcgYmQ4OGRmMjBkYTJmNTlhYjRlZGRkNTkyYTM5NTM3NjAyNDBjYTU5MSBsZWdhY3ktdHJ1bmsKKzE4MDg4IDEwYjNjYmRiZGZkOWZkOTE5NWY1ZjU0MDIzYTJkNDNmNzAxMzIwOTcgbGVnYWN5LXRydW5rCisxODA4OSAzOGM3OTVhZmIzYjgwNTNlYjZhOGQyYWNkZjZlODdiNjliNmQyYWQzIGxlZ2FjeS10cnVuaworMTgwOTAgODY0ZjE3MTRhZjI4NzFiMzA3Y2U0MzcxZjk2YTlhYTU2YzA0Y2JkZiBsZWdhY3ktdHJ1bmsKKzE4MDkxIDAzNzIwYTI2Y2ZlNzM2NTQ3Zjg2N2Y0NzgxMzg4ZDAyYjdjZGRkYmUgbGVnYWN5LXRydW5rCisxODA5MiA4ZmUyYTc5ODFkNzBiMzJhOThkYmE2NDBhNjQ0MjA2MmYwOTA3ZWQxIGxlZ2FjeS10cnVuaworMTgwOTMgYzk0YzJhZTc0NmYxY2IzYTY0MmE1ZmQxNGE4MzAzYzBhN2ViZTU5ZCBsZWdhY3ktdHJ1bmsKKzE4MDk0IGYxYWRlOGFiMTg2OTU1MzdjY2VjOTBmN2NlMzNhODZkNjY1Njk1NTcgbGVnYWN5LXRydW5rCisxODA5NSA3NWJmYmUzN2FiN2E2YzA5MDM0YmZhN2MwYTA2ZWI3NmM3NDZlOTllIGxlZ2FjeS10cnVuaworMTgwOTYgOWFmN2ZjZTM2Mzg0MTMxNzNhMDA3ZmNkMzQyMjQyZWVmMTlmOTA4MyBsZWdhY3ktdHJ1bmsKKzE4MDk3IDAyMjdiNTk2MWVlZjc0YTg3ODIzMGE2MDhkMGYxZjJhOTlhNWI4MGYgbGVnYWN5LXRydW5rCisxODA5OSBkYTQzYjE2OTg2YjY3NzAxZDhiNzA0NDU4N2M3MTVkYzJjNzkzNjYzIGxlZ2FjeS10cnVuaworMTgxMDAgNjU3NzUwYzFkNzgzNTRkODc4NzczZGNmMmMzMmQ4ZDkyNDg2NGM3MCBsZWdhY3ktdHJ1bmsKKzE4MTAxIDJjZGZjNDZlODA2OGQwZDhhZDk4MjNjNDVjODExZjQ2Yzg0ZWZmYWIgbGVnYWN5LXRydW5rCisxODEwMiBlOWU4ODI0ZTNkOGRmZDlhM2JmYjJlZDlmZDQ3YWMyNGI2ODQ0MDYyIGxlZ2FjeS10cnVuaworMTgxMDMgNzFlYTJiYjAxODg5NTcyZjk2ODc4NjY4ZDExNmQxNzY0MTQ5YTlkMCBsZWdhY3ktdHJ1bmsKKzE4MTA0IGU0ZWE0NGIxMGFiYmVmMjVhZDEwN2UwZmUxMTY0YjljOWVlNGQ2ODQgbGVnYWN5LXRydW5rCisxODEwNSA2ODM3MTM1MDgxZDQ3MjdlZWZkZTc0NzU0YmRmMmIwMjBhNjFkMzI3IGxlZ2FjeS10cnVuaworMTgxMDYgZGQwZDE5OTY3NGY4MmE0Y2Y1ZTMxZjcxMzE5M2MwZjRkMmY5NzE4MyBsZWdhY3ktdHJ1bmsKKzE4MTA3IDg2ODZmMjg0ZmE4ZDc0OTAxM2VjZjQzZDk3OTc2ODBkMDM5ZWY0YTggbGVnYWN5LXRydW5rCisxODEwOCA3MzVlZDg1NmRlNjBlNDE4ZjY3NTdhYzczY2JhZTRiYTBjMGE1NWMyIGxlZ2FjeS10cnVuaworMTgxMDkgMmEwNWMxZmJkODk0N2RkMjMzMDFmOGY0ODBlZWZlZGE1MWRjNTliMiBsZWdhY3ktdHJ1bmsKKzE4MTEwIGNjOWViMTg3YjczMDJjYTM3NzBiMTE2YTlhYzJjZDRhZGRjODg5NDUgbGVnYWN5LXRydW5rCisxODExMSA5NzIwYzJjNmY0MzVkM2Q2Y2RlYjNiOTAyZjRhYjIwMmIyY2Q2NTY3IGxlZ2FjeS10cnVuaworMTgxMTIgMGY5ZmQzZmQ3Nzk5YThhY2NmMWY1NmJiYWNlZmQxOTA5MzExMTBjOSBsZWdhY3ktdHJ1bmsKKzE4MTEzIDA4MTMwMjBiMjk3NzVlMWNmMmNmYTM0MTgwZjNhYWRlNDdlNjdlNDYgbGVnYWN5LXRydW5rCisxODExMyAyZmE0ZTM1MDgzZTAyMzQyY2EwMTRiZjViZmJhNDZhZWNiODE2YzMxIGxlZ2FjeS10cnVuaworMTgxMTUgYmQ0Y2Q3M2NiMGQ2ZDVmODhjZWQ3ZGY3NGQzMGQ3ZDE0YjIyNmJiNyBsZWdhY3ktdHJ1bmsKKzE4MTE2IDYxZjgyMzAwOTE0NWNhMTNhOGZiNWY2OTg3YTE2MjkyOTk2NjMzY2MgbGVnYWN5LXRydW5rCisxODExNyAzMTQyNjk4ZDE3MmM4NTdiYjk5MThjNTEyZjFlYjhmMDU2NjIyNjBiIGxlZ2FjeS10cnVuaworMTgxMTggYTE4N2FkODJjMzNmNDcyOTNmNDRhNGMzNDIzOGQzZDQ0YzYwNGFjMCBsZWdhY3ktdHJ1bmsKKzE4MTE5IGQyYWEyNjZhZTQxYzg4ZWI3ZWMwZTIxODkxZmVhMDZjNDVkOGJjMDcgbGVnYWN5LXRydW5rCisxODEyMCBiYzRmODllZWZiMDRkNDJlYjdlMWIxYzIzZjRhMzY2ZTgwMzAwNGRiIGxlZ2FjeS10cnVuaworMTgxMjEgODc3ODBkYmY4ZDE3NGIxYmRlNzUzYWY1MGU4NjE1NjEzZTg4YWIzZCBsZWdhY3ktdHJ1bmsKKzE4MTIyIDBkM2JhYmFjNDM5OGZiZTM4YjVmNDcwYWQ5YTg4YjRmMDJhMTAwNGQgbGVnYWN5LXRydW5rCisxODEyMyBiNTE2Mjk5ODBjODg2YzI4NGViNDNiNWRjYjQ0MjZiOTFjYTMxNWM5IGxlZ2FjeS10cnVuaworMTgxMjQgMzg3ZjMxYWMzMmU2NDhjNTQzNzk3ZjQzYTJmZjIzOTBiZDhmZmMyMyBsZWdhY3ktdHJ1bmsKKzE4MTI1IGM5NGMxYjY2MGRkYjE1NmE3ZWZiNGVkODFkMDBkODRmOGM0MTI1YzUgbGVnYWN5LXRydW5rCisxODEyNiBkNTAzMzVhYzU1ODAzYzA0OTExZjRjOTEzNTFjMjI0MzllY2Q1MWI1IGxlZ2FjeS10cnVuaworMTgxMjcgMDgzMjgxMGM0NjEyNDMzNzhjNTMwNTgxYTU4NDdjYjUwYTAwMTNjZCBsZWdhY3ktdHJ1bmsKKzE4MTI4IGQ1NzQwZTEyZWE4YTI5YTlkYWE0YWRhYjVkYWU1OWYzOTdiM2U1ZjQgbGVnYWN5LXRydW5rCisxODEyOSA3NGM2MTUzYWJiYzEwZDBkN2RlZDI0MGZjNDdlYjI1YmI4NzkwMjY5IGxlZ2FjeS10cnVuaworMTgxMzAgOTI5YzkyYzUwY2IyYmJlYzgzNjdjMDU4YmUwMTkxMjQwOWFmMDU3ZSBsZWdhY3ktdHJ1bmsKKzE4MTMxIDNlOTZmZDQ0YjlkMGY3OGZkNDkyNTk4MWM0MmFmZDVjY2I4ZDM4MDQgbGVnYWN5LXRydW5rCisxODEzMiA2MzgxZmE4ZDdkZjMzNzA0YmMyOTZkODA0ZWI3Yzc2ZTMwZWM5N2UyIGxlZ2FjeS10cnVuaworMTgxMzMgNjgxNThkNjRlODc0ZTk1MDc0Yzg5MTY3MGRkYjQ0YzBkMjdmM2Y0NCBsZWdhY3ktdHJ1bmsKKzE4MTM0IDg0N2Q5OWU0ZjI0YWQzZTIwN2U5YTZiOGQwYWJlN2UxOTRkODA2MDEgbGVnYWN5LXRydW5rCisxODEzNSA2NWQyNjVkODlkOGY0MjU1YzczNTdiOTk4ZDIyMGU5ZjZjMDc4MmNkIGxlZ2FjeS10cnVuaworMTgxMzYgYmEzNjc3ZTFmODFiNjVkYzc0YzQxZGVmOTVlZWQ1ZDYwNmJjOGQ2MSBsZWdhY3ktdHJ1bmsKKzE4MTM3IDExNjc2ZGRhZmYwMTVlMjg3YTBlNzgxZjI3YjliNjcwZTg2YTIwZDkgbGVnYWN5LXRydW5rCisxODEzOCAyNTQxMDYyZWQ0ZGQ5OGJhYzljYjFmYzcwOTRjY2YwYjI5NTIyYWQ1IGxlZ2FjeS10cnVuaworMTgxMzkgYTVjYTU0OTY5YTNmZmU3MjhhZjUzNjE2ZTc2ZGNiODMzOTEyYTczOSBsZWdhY3ktdHJ1bmsKKzE4MTQwIGFmMmFhODA3YWNkZTdmYTRjYTA4ODY0MzA0MjI0OTIxYmE2MTZlMDEgbGVnYWN5LXRydW5rCisxODE0MSBiZjIxZTQxN2JlZDIyMzQ5MjA1ODVjMzJiMzk5YmI4ZTQzYzg2YTUxIGxlZ2FjeS10cnVuaworMTgxNDIgNGM3Yzc3OWJhZDg3OWI4ZGViNzBkZGQzNWNlN2EyYTQ1NDhkYzI4YiBsZWdhY3ktdHJ1bmsKKzE4MTQzIGI5NDBhMGZjMjllMzM5NDkzNjUwNzdhMGY1YTFlODU3NzMzNzNiZjQgbGVnYWN5LXRydW5rCisxODE0NCA4ZjQ1OTJmNTQ5ODhkYmVkNDYwYTcyZDkzMTY0YzYzNGIyMWMzZGRmIGxlZ2FjeS10cnVuaworMTgxNDUgMTMyZTY5ODkyYWE1ZDE1YWU1MDg4MGFkMWM1YWExMTFiZmQ5YTRlMCBsZWdhY3ktdHJ1bmsKKzE4MTQ2IDNhN2FmZDNlNmM5NzgxNGI0MDQ4NDc4MTMwMzEwM2U3MTUxMThkM2QgbGVnYWN5LXRydW5rCisxODE0NyAxZjRhOWFkZTMwZWNjMTdjYjFiNzgzNDFkMWUwYjA1YjhmMzlmYTMzIGxlZ2FjeS10cnVuaworMTgxNDggMjcyYzI5NjUwODFjNjUxODYwMzY4ZDc0MWM1YzZlZmM5MTRjMTljYiBsZWdhY3ktdHJ1bmsKKzE4MTQ5IDIzYjExMDhkNmM4YjVmY2FkNzI4MjgwMWIxMjc4ZDRkMWJmNTE4YTEgbGVnYWN5LXRydW5rCisxODE1MCAxZjlkNWViODRiMGIyMGMwYmI2ZThhYmE2ZGIwNzZlYzg0NjM5NjkxIGxlZ2FjeS10cnVuaworMTgxNTEgOWRkN2VhYjgzNmQ3Y2ZjOWM1OWMzZWVhNmI5NjA0YTcwY2U0MzIzZCBsZWdhY3ktdHJ1bmsKKzE4MTUyIDA5YmY2ZDMwMDI0ZmIwODhhNTA4ZjY5MDJlZWY1MGU1MDM0ZWQ3NzYgbGVnYWN5LXRydW5rCisxODE1MyA4NDdkYzYxZTMwZjVjOGU4OGU5NzY5NWI0NDdhOTQ1YTA5YzY5NmRiIGxlZ2FjeS10cnVuaworMTgxNTQgNzU3ZmY4OGUxN2FhZGJkYTNkMzFjZjg4YzZhZjRmMjkzMGRmYjJmNCBsZWdhY3ktdHJ1bmsKKzE4MTU1IGU2YTEwODU3MjVhY2Y0NzhhOWU4MWViMzc1ZTQ3MzA1ZjhjZDBjZmUgbGVnYWN5LXRydW5rCisxODE1NyBmMjBkZWFlYWY4Yjk3YzIxZDZmZTAyOTU0YmVkZmI3ZmQwNDU2ODAzIGxlZ2FjeS10cnVuaworMTgxNTggODVhNTA5ZmFjY2M3OTZmMzAyZGZmOTY0ZGJmYTI5ZGJkM2I1NTUyOCBsZWdhY3ktdHJ1bmsKKzE4MTU5IDY4YmNlNWQ4M2Y3YjkzYTcxZWUyZDRhN2UzZDljZDg3ZjYyYTY1ODggbGVnYWN5LXRydW5rCisxODE2MCAwZGE0Y2NjN2U4Y2YzNmU2ZmIyYmY1ZWNlYmZiOGQ1YTM4NjVhM2I1IGxlZ2FjeS10cnVuaworMTgxNjEgMmE5ZDI3NjU2MjVlNWE3NzVkZDViZGE2MGQ0MzU1NGE3NjdjZDIyNyBsZWdhY3ktdHJ1bmsKKzE4MTYyIGIyMTEwMjZjZWY4NGNhODAzZDg2ZjlkYWEyYjk2MzY4MGU1NjJhYzggbGVnYWN5LXRydW5rCisxODE2MyAwODIwOTk0ZTJkNWU4NzZmMWUwOWJmMmM0NzVkODc3ZGMxYWMzNzNjIGxlZ2FjeS10cnVuaworMTgxNjQgYTZmM2VmMTA4MTVlY2I4ZGMxMGQ4ZDdiOWNhMDk0YWFkZGNhMGZiYyBsZWdhY3ktdHJ1bmsKKzE4MTY1IDA3ZjI0MjYxYzZlNmViZTNlZmNlNDQ4Y2U0OTQ2YzUxNmY3ZmIyNmEgbGVnYWN5LXRydW5rCisxODE2NiBhOTk5ZDA1OGZhYjU1ODE1ODM4YzAwMDYyMzViOTg3ODg5YTQ3YWU4IGxlZ2FjeS10cnVuaworMTgxNjcgZjg3MjFlODQ5NDI0NmNiYTQxODMwMTkyZWRiN2EyODQ3ZWNlYmM4OSBsZWdhY3ktdHJ1bmsKKzE4MTY4IDg0N2FlNDAwNzRkNGUwMDczNGIzMGEwZDRmNzZiZTI1YWJhNjQ5NDcgbGVnYWN5LXRydW5rCisxODE2OSAwNzU4Y2NiMzM2M2NmZDY0ZTlmNzZjNDg4MDExY2VkNmU1Y2NiODZlIGxlZ2FjeS10cnVuaworMTgxNzAgNWQyYTIxODVjNjUxYTQzMzliYTRlYTgxNjdkNjBhNjRiZjU2MGM2MCBsZWdhY3ktdHJ1bmsKKzE4MTcxIDMzMzM3ZTVhNDMwMGM5OGRhYTE1OWFjZDhjMGYxNThmNzUyNWVjMzkgbGVnYWN5LXRydW5rCisxODE3MiA4NmQwNjk0MTQwOTlmZTk4MzYzNTQyMWY5ZTViODcxMzJhYjA3MTNlIGxlZ2FjeS10cnVuaworMTgxNzMgNDk0NjhjMDA3YzBjZDVhZjI5YzM5NzFlZmY3NDk2NGM1NDE1YjNiNyBsZWdhY3ktdHJ1bmsKKzE4MTc0IDg3YjVlNDgwNzYyZjg2YjE3OTcwYzViM2NhOTAxYmE2NDY4MTcwMTkgbGVnYWN5LXRydW5rCisxODE3NSBiNDlmNTIyYmY4OTNlYTUyYWIwNTk5NjhhZjYyMTVkYWVhZDUwZjRmIGxlZ2FjeS10cnVuaworMTgxNzYgOGU4NjVmNWVjZjc4NDFmZDQxOTEyYWIwNGUzMGJkMTNmN2M4MWY0ZSBsZWdhY3ktdHJ1bmsKKzE4MTc3IDEzOTc1YWVjNTE1MjE1NjAxNzMzOGZhZmYxZTI5NmUzZjhiM2NkY2MgbGVnYWN5LXRydW5rCisxODE3OCA4YWE5NDdlMWVlZTgyYTJlZjJlMmNmNjBkMDAxMWMwNDM4YWZjYmE1IGxlZ2FjeS10cnVuaworMTgxNzkgMDllYzg4MmNkZTYxNDQyMGI5NTUxYTM4YmMxOTdiMGRhNzZhYjZkYyBsZWdhY3ktdHJ1bmsKKzE4MTgwIDNiZDEzYTJmYzgzODI0ODRlMDAyYzUyZTczY2UxYjVhNWEyMzQyOTIgbGVnYWN5LXRydW5rCisxODE4MSAxMWUzYTZlMTZhOWYyMjVmYTYyYTg4MTRkZWMwNGZlNGMwM2UwNmQ4IGxlZ2FjeS10cnVuaworMTgxODIgZDE3YmExNDE0ODBhZTdhNjNiNzc4MjcwYWNlNDZmZTFkNGY5ZTU5ZCBsZWdhY3ktdHJ1bmsKKzE4MTgzIGZkMTcyMTdkNWJhODY4YWYwZmVhMzQ3YzhhOGNjY2E5ZmIzYzgwZjAgbGVnYWN5LXRydW5rCisxODE4NCBkOGFjYTNjODkwZjdhNGZjMzUyODU2YjJjMWVlNDhiNTYyMzUwNzI4IGxlZ2FjeS10cnVuaworMTgxODUgNjU1OTRmZWI1NTI3NTdlNzZlYWQ5NjcwZTUzZDBiYzQzZWJmNjcyOSBsZWdhY3ktdHJ1bmsKKzE4MTg2IGU1ZDRjNDI0YzQ0ZjkzNmI3NjRmOGE1MGEzZmNhZGNmODMzMjNkZDcgbGVnYWN5LXRydW5rCisxODE4NyBjMTg0NmQzMzFkZTlkMWQzOTc1MmQ1ZTUxMTMwMWYzYmZlYjc5MjQ3IGxlZ2FjeS10cnVuaworMTgxODggMGQ2M2MwY2E3YWU0MjIzOTQ2NTNlYzFiMTQ3MzM0ZWEwNGY3M2Q5NCBsZWdhY3ktdHJ1bmsKKzE4MTg5IDVkNTg2ZDQ1Y2I1YTUyNGFkOGEwM2Q4MTg5ODUyNzFlNzc4ZTk0ZjkgbGVnYWN5LXRydW5rCisxODE5MCA4MTg5MDRhOTljYTM3MzE3ZTFjMjM3YjE3ZWJmOGI3YjcwOGVhMTY1IGxlZ2FjeS10cnVuaworMTgxOTEgNzg4YjUyM2Q0ODI3YjI0Njk0NmMwNTNjNTVmODQ4YjYwNGNmOTJlZiBsZWdhY3ktdHJ1bmsKKzE4MTkyIDEyYWVjMzM4MWM5NDZiYzdiMTg4NzBmMjM1ZDBhZjlhZDAyNzk3NmQgbGVnYWN5LXRydW5rCisxODE5MyBkNTE1N2M4YmIxMWE0ZGRhMTJjMGM3ZjFjZmQ5MmI4ODM0MzhiMjVlIGxlZ2FjeS10cnVuaworMTgxOTQgMTAwYzUzM2Q5YTNlNjE1NjZkM2M1MWVhNzA0YmI2YzQxYjg3N2JiMiBsZWdhY3ktdHJ1bmsKKzE4MTk1IGVjNzk4MDBmNGMyNzcwMjVmMDA3Y2FkMzNjZDViZWE3ZTA0NjQ1ZmEgbGVnYWN5LXRydW5rCisxODE5NiBiYmM5OTFhYjZkMzIyMWE2ZjUzZDUyYzVlZjUyMjE4ODZmZWRmODg0IGxlZ2FjeS10cnVuaworMTgxOTcgYTgxZjkyMDI4MDNkYmQyZTU1MTYwYTE0OTU1OTU3ZTMyMDRlZDFhNSBsZWdhY3ktdHJ1bmsKKzE4MTk4IGNhMWFlMjFhMzAzOWIzNDFkM2U2NjU1Zjg0OTZkZGI5MzcwYzA3YjkgbGVnYWN5LXRydW5rCisxODE5OSBjMmQ3NDUxYjQyZjY2YzUyOGI1MDMyNmZkYWE0ZmUxYzI3ZjAwYWJlIGxlZ2FjeS10cnVuaworMTgyMDAgZDk5YTBmNmNmY2UyMGM4YWU5OTYyNjY2ZTZjZTM5NTVkMGExNjEyOSBsZWdhY3ktdHJ1bmsKKzE4MjAxIGMyZDEwMjc0YTIxNDg5MmY1M2Y3MjNlMjE2Y2IyYjhkMjkzNzc5ZWQgbGVnYWN5LXRydW5rCisxODIwMiBjYjExZmE1YjExZjQyM2RmYjUzMzg5YWQ0ZDIyMzE1OTkwZWU3NTVmIGxlZ2FjeS10cnVuaworMTgyMDMgYWNmMmIxOWU0MzQ0MzIzMTRhYjY3MDIxM2I3NzJjZGVkM2I4MWY4NCBsZWdhY3ktdHJ1bmsKKzE4MjA0IGU1OWY1MzhiYjgyOTNhZjI4ODUxMWQ1OTBlYzQ2NGJlZmQ2MTMzMWQgbGVnYWN5LXRydW5rCisxODIwNSAwM2RjNzYxZDJjYzQ5ZTg4NDg1NmFkMjExNWFlNjU1MzZlNzdkNmM3IGxlZ2FjeS10cnVuaworMTgyMDYgNTYzZGNmZWMyYWU5ZTZjM2FlMTlmZTViYzdjOTc1Yjk4NTkxY2ZhMiBsZWdhY3ktdHJ1bmsKKzE4MjA3IDMwNDg3MWQ2ZTg2NjI0NDY3ODQ3N2JlMTk3MzkyNDFiYjMyZDM3Y2QgbGVnYWN5LXRydW5rCisxODIwOCBkNGE0NjMyNmZhZjQzNjk0ZWE2NzM5ZWYyMGU3NjA3MzU0NmRhM2Y3IGxlZ2FjeS10cnVuaworMTgyMDkgMGMxOTY3MmQ0N2JiMWUxNzExY2Q0YmIyOTEwZDY3MzllNTBhM2IxYyBsZWdhY3ktdHJ1bmsKKzE4MjEwIGIzZGViZjY0N2I1M2VhODMxMmJiODYwYjc1MjU4MTAzOGI0MzViOTYgbGVnYWN5LXRydW5rCisxODIxMSBhNjIyNGRhN2I0ZTQzNWNiZmYyZTE3YTk0ZTFiNTg1ODU5MWY4ZDY5IGxlZ2FjeS10cnVuaworMTgyMTIgM2U1NGNlZmM1OGM2MDFlOGYyMGUyOWQ5NzY3YWU5NDAyM2Q4YjJlMyBsZWdhY3ktdHJ1bmsKKzE4MjEzIGY0ODBkNTJjMDc2MGFkYjE0OTJlMmMyMzVkZjI2NmE5NmY1Zjc1OGIgbGVnYWN5LXRydW5rCisxODIxNCA3YmU5ZWRjNGQ1ZGIxMWIwMjZkYzdjYTQ4ZDkyNjFkOWViYmEyMDRhIGxlZ2FjeS10cnVuaworMTgyMTUgMmEzNjk2ZDMyNzIxZTcwMDlkMjlmODdjMWQwNTEwZjI2ZjA3MWM0OCBsZWdhY3ktdHJ1bmsKKzE4MjE2IDZlNzBiYWE0ODdlZDUyMzRkNGIzZmJkNjVmYmQyNGVhYmUwN2EyZTkgbGVnYWN5LXRydW5rCisxODIxNyBlZTI3MWMyMGIwNWYzYjI0OWEwYzIyN2ViZTBjNmRmN2RmZGI4ZmJmIGxlZ2FjeS10cnVuaworMTgyMTggYWIzNDM4Y2YxZjNlNmIzNmE5OTBjYjhhMjVhYjEyZTJjOTViYjYzMiBsZWdhY3ktdHJ1bmsKKzE4MjE5IDEyYjkyYTM1NjQxYmUyZWVjYmE2OGVmZWFjYWQwYmVmZTQyZDgzOTEgbGVnYWN5LXRydW5rCisxODIyMCA3NGUxZDc5NTIwZmQ0Y2RlY2NlYWZhYWNkZDNmYTFhZThiYzdjM2M5IGxlZ2FjeS10cnVuaworMTgyMjEgYTNhZjE0NWQyNTMxZTBjMzY0MjdmYzUxMzc3NGYwM2EzZTM0NTkyNSBsZWdhY3ktdHJ1bmsKKzE4MjIyIDlhMTdjZGNkMzMyMDM1OGRjMTY1MzNkNDY4NDcyYTFhMWI4YmQ0NjUgbGVnYWN5LXRydW5rCisxODIyMyA0N2Q5ZmJlNjUzN2M4N2NkNmRiOTNjMmJjNjc2N2FmOWQ2YTZjMjAyIGxlZ2FjeS10cnVuaworMTgyMjQgMDk5NTJkNmVkMzcyNTlmMTZkNTYxNjUyYjIwMDUxYjg1NmM0YWM4OCBsZWdhY3ktdHJ1bmsKKzE4MjI1IDFlNGRlNjAxMDUxYzE2MjQxMThkZWEzMzY0MzkxZTU3NDc4ZjI5OTUgbGVnYWN5LXRydW5rCisxODIyNiAzYzYwODMyNDdjZTc1NWM5NjAwMjc1MmVhOWM1OTNlNzc0NWY2NDk4IGxlZ2FjeS10cnVuaworMTgyMjcgODI3NWQ4NjQzZTc5ODkxMzRlZGIwNDdhNTNhMjMxYjQ5MDk4OWVmYSBsZWdhY3ktdHJ1bmsKKzE4MjI4IDkwMGYyNjZjNWQ4ZTJjMTkyNzI0NmY3NzRkNmFiOTI4MDRjNDUxMzkgbGVnYWN5LXRydW5rCisxODIyOSAzYWJjYjY5NjY2MTc1OTI2NGNhYjZhNTYyODY5ZWU4YTBlMzlmMzEwIGxlZ2FjeS10cnVuaworMTgyMzAgMmUxYWIwYzk0MWMwZWNjMjdhZGVhMDkzM2MzYWYxZjc5OTAzMDU1OCBsZWdhY3ktdHJ1bmsKKzE4MjMxIGM3ZjVkZDJiZGM3ZDY5ZjUzZTllZjc5YjA5OGMyZTZmZmM0ZjQ1MTQgbGVnYWN5LXRydW5rCisxODIzMiBmNjIzMzkzOGZmODliMGU2NDhmNmYzMTAyMGU5ODFlNWFkNjk3YzQ2IGxlZ2FjeS10cnVuaworMTgyMzMgMDE5MjJhMGY2ZjkyYjJlM2ZlYjNmOGM4OWVhOTllMjE5OTI1ZmM4NyBsZWdhY3ktdHJ1bmsKKzE4MjM0IGE4MjZhNDZiYWU1NGFjOTBmMGZhOWVkMDFmZDI2NTIwZGJhY2VkZDEgbGVnYWN5LXRydW5rCisxODIzNSBjZWU5NmIzOTFmZmMyNjA2NzVlYjU2OTgxMmFkMjE2ZDZlNjE4YmM0IGxlZ2FjeS10cnVuaworMTgyMzYgNDkzY2E5ZTQyNjBlNTJhMjM3ZjQwZGQzNDc2NWJjYTRjODgxOGE4ZCBsZWdhY3ktdHJ1bmsKKzE4MjM3IDgzY2RkNDU0ODVhNTczYTJhZTViZjg3MjRiNzE1MThlOTZmNjE1MGIgbGVnYWN5LXRydW5rCisxODIzOCA5YjFiZTFkODQ4MTA0NjczOTc0NjgwYWNmYzRiNDhmNzMwOGM1NzE5IGxlZ2FjeS10cnVuaworMTgyMzkgN2E4MmY4NDI5MGY3YmJkMzA0ODhhMTU1YTg2YjM5ZDJiODMxZjJkNyBsZWdhY3ktdHJ1bmsKKzE4MjQwIGJiMDA2YWQwMGQ5ZWFjNmNmOTU3ODM3YTEyZDNiYTgzZmJmNGY4MjIgbGVnYWN5LXRydW5rCisxODI0MSA1MmMyN2I3MTE2ODY5MDA3MjQ5YjYzZjE1NTVjMmE0ZDA2MmUyOTYzIGxlZ2FjeS10cnVuaworMTgyNDIgYzEwNGYwMGM5OTA5ZWIxODYwNWQ4NzgzOTAyODNjYTk4N2QxNWJmYSBsZWdhY3ktdHJ1bmsKKzE4MjQzIGVlYjdjOGE1Yjc5ZjY0M2MyZGI3N2I0NzA5ZGI3YzY5NDMzNTNhZmEgbGVnYWN5LXRydW5rCisxODI0NCAzY2IxMmUwZTdhY2QxMDJkYzM4YjZjZjRlNWI0YWIzMDE3ZTQ1ODY4IGxlZ2FjeS10cnVuaworMTgyNDUgMjJkYmNmZmM1NGVmMTBmODgwM2NlY2E0Y2FkZDVkMTI0ODBhYTIyMSBsZWdhY3ktdHJ1bmsKKzE4MjQ2IDE2YzEyZDE2OThmNmFkNjBkMWQ2OWQyYmQ2YzUxMWUyYTRjOGE2MjcgbGVnYWN5LXRydW5rCisxODI0NyBiMzQ2OWViNzhiYzY2ODExMzNkYTI1ZGRlNTBiYTczMjcwYzI1NmE1IGxlZ2FjeS10cnVuaworMTgyNDkgZjI5MDFiNmFjNWVkOTQ2OGM1NjJjOTA0ZjI4MzI4MWJjMDgxMTYxZSBsZWdhY3ktdHJ1bmsKKzE4MjUwIDg3YTViYWUxYjk0NGE5OTkzMWY3YjVjMWI3NzcyZGI5NmIwZTBkYjEgbGVnYWN5LXRydW5rCisxODI1MSBmNjJlM2U3ODcxYmU5MjM5MmNiOTNlZDIxNGE2MDIxZmUzZGQxMTliIGxlZ2FjeS10cnVuaworMTgyNTIgNTE5MmJmZDdhOGJiZDU5MDE3OTMyNGUwMmRjNjliN2ZlOWNmNWJjNyBsZWdhY3ktdHJ1bmsKKzE4MjUzIGZhZTViMWU0MTQ5MWQ2MzZhOTRkZjUyYWM0Y2RmYzgwNzZiNjExZDEgbGVnYWN5LXRydW5rCisxODI1NCA4NmYwNmMxNTNkZGE0YTNhMzQzNmI3OTczMjEwMWUyMWZhOTVhNWE2IGxlZ2FjeS10cnVuaworMTgyNTUgOTZjMzk0YTQzYjViYWZjNjcxZWJiMDQwZjNlOTEyMDNkMGQzZWViNSBsZWdhY3ktdHJ1bmsKKzE4MjU2IGQyNjViZjRhZGE3YzkyMTBmNTZkZjNkOTUyOTgzNWI3MzU4YzFjZDkgbGVnYWN5LXRydW5rCisxODI1NyBiNzE0NTlhZWRhOTU2OGRlNzljYTM4YjQ0ZTllZmQ2NjczYWMzMWMyIGxlZ2FjeS10cnVuaworMTgyNTggNWQ1YzUxMzA0ZjdjNWFhOGM3MDUwMjY5MjRkZGNiMTNhNjk1MDVlZiBsZWdhY3ktdHJ1bmsKKzE4MjU5IDNhYjdmYWFlODAzYWYyNGMzYzY3MGNlMDE4YTY2ZWI2YzI3ODIxMDIgbGVnYWN5LXRydW5rCisxODI2MCBhYTFlYzI3MGYyZDM4Yjg0ZTAyYzE3YTllNmM0OGI5OTcyZWRiZmMzIGxlZ2FjeS10cnVuaworMTgyNjEgOGY4MjMxNmY2OWQ0MDUxZmI5ODFiZGVlZjc3ODkxYjc4MjQ5ZTc4NiBsZWdhY3ktdHJ1bmsKKzE4MjYyIGM0NWM1MDgwYzg0NDgxMGYyYWQzMWM5MTZkZTNhOGM1NzNkNTcwMzIgbGVnYWN5LXRydW5rCisxODI2MyBmZGVkNWM5ZWNjOWJiZjRhMGQ4ZDQzZmNiMGUzOGJkNTEwYWU5MzY5IGxlZ2FjeS10cnVuaworMTgyNjQgNWI0YWJjZWZmNTNkNGQzOTVhYmMyMWFiNzk3NDdlYzFjMmQ0ZDA5MSBsZWdhY3ktdHJ1bmsKKzE4MjY1IDlhNjg5NGY4ZTFhMDk3MzVkOTkzZjI0Mjk4MDhmZjZlMWRlYmYzMDggbGVnYWN5LXRydW5rCisxODI2NiBhZjFlOWU2NGVkOWQyNDE4OTBkZWE2NDVkNzNjMGZjMjUwOWRiZTk2IGxlZ2FjeS10cnVuaworMTgyNjcgNzcxNzEzMThlMzIxMjg3Mjk4NDJlNjcxYWQyNjQ5OGFmM2FhZWEwNSBsZWdhY3ktdHJ1bmsKKzE4MjY4IDM3NTIyOWMzYWMwZDk5ZWFjYWM5YmU0MWI5Njc4NGZmNDBlMDEyYmYgbGVnYWN5LXRydW5rCisxODI2OSBkZGQ5MDNmYjZhNzEwODAzN2NkNDk4MjM5ZDkwYTFmMGJlMGI3MDdkIGxlZ2FjeS10cnVuaworMTgyNzAgOTljYTQxOWNhNThiYmI3ZTEzZGUwOWRiMTBmZDE4NzFjZjIzNGIzNSBsZWdhY3ktdHJ1bmsKKzE4MjcxIGI2NDhjYjBkMTk4OGYxN2Y0NDU5ODRiMTAxYWQ1NTA2MDY3MWY1YTMgbGVnYWN5LXRydW5rCisxODI3MiA1NmU5N2U3Mjc1NjljM2EyNjMxMDg3ZTc3MzgxZTZlMjQ5MmNkYzFiIGxlZ2FjeS10cnVuaworMTgyNzMgODc2Y2Y3YjNkM2RmYjFiNWI5ZjEyNGQ3OWFkNjE5ZGY5MDAxMzBlOSBsZWdhY3ktdHJ1bmsKKzE4Mjc0IDRhZTQ5MjliMTJmZmUxZDg3MzE2ZTdmODAyN2YwZDg1ZDNjZWFjOGMgbGVnYWN5LXRydW5rCisxODI3NSA4NmY0ZTFlZjgxY2FhYzA1NWI4ZGM2MjAyYTJhN2M3MzkwNWY0ODIzIGxlZ2FjeS10cnVuaworMTgyNzYgMGYwMGI2YzdiOWI5NWUxMzY0ZDBiMjY2MWIxODFmMzQ2OGU0ZTNjNCBsZWdhY3ktdHJ1bmsKKzE4Mjc3IGM4ZDRlNmYxYjVmZTk3NWMyNzZmMTk1ZmE4MTRkOGIwNmJmOGFmNDQgbGVnYWN5LXRydW5rCisxODI3OCA2YjI1MjRlOWM2NzJlODA1ZDYwZDY1NWU4MTYzMDhjZTJlOWU2MzRjIGxlZ2FjeS10cnVuaworMTgyNzkgMDY0NjVlZDgxODI2MzA1YTg4N2RhYTIxODY4OWZhZDVkYTM0NmQ3YyBsZWdhY3ktdHJ1bmsKKzE4MjgwIGJkNDFlNjI3M2VkOWIzMTQ2NjljNzgyYTM5OTVjMGY0Mzk1Y2JhZjUgbGVnYWN5LXRydW5rCisxODI4MSAyN2U0ZjU2MDFhYTU4OWMyMGRmNzYyOGZmMTJmYTUyZGJjYzZjMjQ5IGxlZ2FjeS10cnVuaworMTgyODIgNDkxODUxN2VkNmI0Y2I0ZjBiM2ZhZjgxNDU5YmI2NmUwN2QwZDk4NSBsZWdhY3ktdHJ1bmsKKzE4MjgzIDM5YWI4MjdlNzJiZDZlNzdiZGUzZDkzNDJhOWY1YmM1OGNlYjBmY2MgbGVnYWN5LXRydW5rCisxODI4NCA3ZWJkZmU0MjVjODFlYjYyMzY3NjJiODM3ZDI0NmRkYjU5YWI2MGMzIGxlZ2FjeS10cnVuaworMTgyODUgOTdlYTBiNDk0MjJmZmYyYTg0YWI5YjlmMmI4NDFlZmQ0NTJiNjcyYyBsZWdhY3ktdHJ1bmsKKzE4Mjg2IGJlMzMwNzkzNjBjNjY5NGFjZDA1NzE3OWVkYWFmMTE3Yzg3ODFkY2IgbGVnYWN5LXRydW5rCisxODI4NyBhOTM1MTA1MTkyM2UwYjA0NTE1YTIzODk0YmMwMzFjYjg4YjVhMzdiIGxlZ2FjeS10cnVuaworMTgyODggYzBmMWViZDMyMDcyMzkwMDgzNTA2MWY1NTAxM2M4YjA0ZGVkOTk0MiBsZWdhY3ktdHJ1bmsKKzE4Mjg5IGM4MzNkY2RiM2ExNTU0N2E5YmQ5MTFmNjkzMmU2M2NkOTAzN2E2NjkgbGVnYWN5LXRydW5rCisxODI5MCA3OGE3ZjhhNjRmODVhNzQ4MTdiNTliYWY3ZTdkMTNiNTA1YTRlMDBlIGxlZ2FjeS10cnVuaworMTgyOTEgZDVhNTQyOGU5NjVjNGQyNTBiYjQ1YzE0NWQ4NTQxYjNlN2U1MDQ0MCBsZWdhY3ktdHJ1bmsKKzE4MjkyIDg0OTY5ODU1MGIzMmE2OGI5NWY1ZDEzNjM3OWZhZjNiM2YxN2UzMTggbGVnYWN5LXRydW5rCisxODI5MyAyMDQ5ZDU3MGNhNWE3YjBlNDNjYTE1NTcxZDA1MTc3YTY0NWI0YjM5IGxlZ2FjeS10cnVuaworMTgyOTQgYWM2ZmJhMGVjYzI5MDI0Mjg4ZmJmN2E2OGI4M2I0YjFkMjUwZTZjOSBsZWdhY3ktdHJ1bmsKKzE4Mjk1IDUzYzlkMTVhZDk4ZWQ2OTM0ZjExMTQ4YjI0NGFlMmFlOWE4Mjc4OTkgbGVnYWN5LXRydW5rCisxODI5NiBmYjEwOTM3MDYwY2NiYzM4OGQ4ZGQ2MzdiY2VlMmRmODU3ZjUzNzhjIGxlZ2FjeS10cnVuaworMTgyOTcgNGU4NTc3ZmI5NDA3ZmY2ZTRlNDAzMTg5YjMwZDc1N2YzYThlNmM4ZCBsZWdhY3ktdHJ1bmsKKzE4Mjk4IGQ1ZjA2OTZjMzdlODFiYWIyZjkwN2JmOWM0ZjljMjBiNzZhZDdjOGMgbGVnYWN5LXRydW5rCisxODI5OSA0MzM0NTg2NTFlYjQwMjc5NTRmYjczMjVjMDM2OWMwZGI3YzQzOWFhIGxlZ2FjeS10cnVuaworMTgzMDAgMzI4ZmFjMWNhMjEwZmNiNjAwYjM1YmZhNjQyNTY2NGUzZWNlMmZhYiBsZWdhY3ktdHJ1bmsKKzE4MzAxIGVmNDY2YTE5ZTNiYzZhMjU2ZDAzNDM4MDk0ZGU3NDFlNWI2NTZmODAgbGVnYWN5LXRydW5rCisxODMwMiA0YWM1NTVhODc2YTIzZjUwMGY3NjRmODY0MTc1MzY0ZDZhNzhmYWIyIGxlZ2FjeS10cnVuaworMTgzMDMgYjg1NWM4OGM2YWY2YTQxNmQyODEyNTE1YmU1NmMzNzgwNzkwMTk2NyBsZWdhY3ktdHJ1bmsKKzE4MzA0IDY4ZGU5MTg1YjQxZTJhMzFjZTIzY2E2ZTNiOGNjNGI2NDhmMmMwNTggbGVnYWN5LXRydW5rCisxODMwNSA3ZTUxNGYxZmUzMWZjZDRmYWZjNjA3YmYwZjgwMWVjNDZkZWEzNWMyIGxlZ2FjeS10cnVuaworMTgzMDYgZGNkMmJlYmMxODBlZjQzYjVlMGE2NTRmOTA2ZWVlOTNlZTc1OTE0YiBsZWdhY3ktdHJ1bmsKKzE4MzA3IGY4MTNlZGUxMzRiZjY4ZDQ1YzcyY2MwMzBiMDRhNzYwMmE2ODJiNmYgbGVnYWN5LXRydW5rCisxODMwOCBmODIzYjlhYTBjMDM2MTUxNDk4NDZiNzUyOTU2YTk0M2NlOGQxOTI4IGxlZ2FjeS10cnVuaworMTgzMDkgMzFmNzBjYTA2YzY4Zjk0YTc0ZjRhNGQ2ZDc3NjQ4OTVkMjY3MjFiMCBsZWdhY3ktdHJ1bmsKKzE4MzEwIDlhYjdhNTk3ZWVmZTkxNDI5ZWRkMDg4N2IzYzIyZjNkODc3NTg0ZTIgbGVnYWN5LXRydW5rCisxODMxMSBhZTQ5MDA2YjJkOGZhYTZhOGI4MDgwNWJhMzVjYjc0MmUwNzdkNmU3IGxlZ2FjeS10cnVuaworMTgzMTIgZGI2ZDliYjdlYzk0NTNiNzc0Yjk4OGY0ODFkNDM5MGI4YTk1ZTczOCBsZWdhY3ktdHJ1bmsKKzE4MzEzIGYyYzE3NmQ4NDZhNGE1YjkwY2MxYzdiYjI5Nzg0NmI5NDE5Y2NmNzggbGVnYWN5LXRydW5rCisxODMxNCA3NzIxZmI1MDk0NjIzMWQ5Zjg2M2UyM2NjODc2ZmUzODYxNzg5ZmZmIGxlZ2FjeS10cnVuaworMTgzMTUgY2U3NzczOGI4MWFjYmY2YmRmZjQ5MTgxNWQ4M2NkYThjZjQyOWY5YiBsZWdhY3ktdHJ1bmsKKzE4MzE2IGQwMTQ2ZDEyODg5N2U3MzU0NjYxZDkxNDg4Mjk2OGMwZDcxZmUxNGEgbGVnYWN5LXRydW5rCisxODMxNyA1OTcwODlkZDI2MDlhNWVhMmUxZWQ1N2E1NjUzOWM5ZjFmMWIzMjkxIGxlZ2FjeS10cnVuaworMTgzMTggYWYzOTdmN2RiYmQ1ZWI1MDc1N2U5ZTViNTY2ODhmNGE0YTM4YWI0YiBsZWdhY3ktdHJ1bmsKKzE4MzE5IDVkNzU4Y2Y1MTExZDdkOGNmODQwMTBmMTQ5MWE0NzI3NzY2ZTljMzYgbGVnYWN5LXRydW5rCisxODMyMCBhNzlkMzYyNGY4NDU0YTZkNDI4MjE4YjhjZTQ0ZTdlZTMyOWZmM2ExIGxlZ2FjeS10cnVuaworMTgzMjEgZDM5N2Y2Njc3NWU4YmM0MWNhNjNjNTUwNjUxMzZjNjk4NzA4Yjg1YiBsZWdhY3ktdHJ1bmsKKzE4MzIyIDlmNzc1ZTI0OWJhMTgwODQxOTZiNTYyMTlhN2U0YzU0NTliZTE0OWYgbGVnYWN5LXRydW5rCisxODMyMyBiYmU4YTY0ZTIxOWU1OGY1ZmI1Mjk4NDlkNWExY2U2MDI4OGZjZDM4IGxlZ2FjeS10cnVuaworMTgzMjQgYWFhOTFlZDNmY2ZkMjlkNTk0MDMyZDEzYzc4YzI1MTgxNjc2ZDg4NyBsZWdhY3ktdHJ1bmsKKzE4MzI1IGM3ZjIyNWFlMzE2MDViMjAxMzUyZjVmM2VhYjE1ZTQ5ODBjYmE3ZTIgbGVnYWN5LXRydW5rCisxODMyNiAwYjg0YjMxYWE5NzUxODk3ZmI0Zjg2NTczYTJiZmFmN2ZlOTdjNmQ4IGxlZ2FjeS10cnVuaworMTgzMjcgOTczMWJiYjUyZmI0YWM0OWI2ZTNlNWM3YjY5Yjg0NzQ1MTRmNDMyMiBsZWdhY3ktdHJ1bmsKKzE4MzI4IGQ3ODY0MzQ1YjFjOGE4YzRlN2FiOTJiNTkyZjBkM2NkZjMxZTAyODkgbGVnYWN5LXRydW5rCisxODMyOSAyMTk4NmNjMTRiYjJhN2QwYzQ1NzFlMjc1OGZhODQ1ZWU4MjMwOGY4IGxlZ2FjeS10cnVuaworMTgzMzAgYWMyMjBjMzFkZGQ3ZTlhYjAzZDIwOWEyYmZmZDdlZDM5OWE1Y2I5MSBsZWdhY3ktdHJ1bmsKKzE4MzMxIGUwZDhhNmYyZDA5MTFiMjZkNmZhNWM1MzQzY2JlODRjOTY0YjVmM2QgbGVnYWN5LXRydW5rCisxODMzMiA4NmNmNjQ4MGQyZmE2M2I3ZTRkYTMyYjMxMTNiNDVlNDc1OTk5MTQ1IGxlZ2FjeS10cnVuaworMTgzMzMgNDg4MDRkYWI3ODhjYTZkYTVjMGVkZTUwOWU0YmQyZGRlNTYwNmI0OCBsZWdhY3ktdHJ1bmsKKzE4MzM0IDJlY2U4ZmE1NjgwODA3OGI3NDU2NmZhM2U2YmU3MjRlMjFiMGVmNTUgbGVnYWN5LXRydW5rCisxODMzNSBlZjkxMzkzMzc1NDc0ZmE5ZDZkMzQ5OTQyYzM2ZWI3NzllZjQ0NzMxIGxlZ2FjeS10cnVuaworMTgzMzYgNjU1ZjRjNGJiOTQ0OWIxZGE2MGQ0ZGIxY2NjY2VhMzE0YmNmYTU3MyBsZWdhY3ktdHJ1bmsKKzE4MzM3IDNiZTFmNWM1MjBhZDUyNWYyZjU3NjkwMjViYzAwNGM2OGE1ZTFjNWQgbGVnYWN5LXRydW5rCisxODMzOCBhNWNmZjhjMWY0ZTRhNDIxNGI4ZjM5Y2VmM2MwNjg2NzMyMDYyZGRlIGxlZ2FjeS10cnVuaworMTgzMzkgODU2YjJiYzIxNmY5ZmIzODI2Y2YyMTUxNGE1NDYxNGMzYTE1NDY0OCBsZWdhY3ktdHJ1bmsKKzE4MzQwIGU5ODk2NGJjMjY4MTQzMjMxNDBjZjE5NGUzMzdlMmU0ODcwZjRiMGUgbGVnYWN5LXRydW5rCisxODM0MSAzYzMzZjJjMzU3ZDNiNmM3NWY0YzMwNjllZTE5YWQxZDBhYTdkNjU0IGxlZ2FjeS10cnVuaworMTgzNDIgMDdjMmUxMzYyNjBjM2VjZTQwMjY1ZDg1MjBmMjJlMWQ5OWNjZjFjYSBsZWdhY3ktdHJ1bmsKKzE4MzQzIDY4MzhlNzJmOGRkMjcwN2RhMDhlMjEwNTk2ZWU2ZDliOGQwZDQ1ZjYgbGVnYWN5LXRydW5rCisxODM0NCAxMDVjMjUwNTJkZTk4ZWM2YTQ2NDU2NGQwNmUxZjljNjQ0NzkyNGQ5IGxlZ2FjeS10cnVuaworMTgzNDUgMDc3MDUxNzdjYTZiZWQ5NWE4ODI2NjQ5ZDU0OTljMTA0ZWU3ZjYzZCBsZWdhY3ktdHJ1bmsKKzE4MzQ2IDEwOTFhZDlhMDMwM2NmYzhhMjZhMzlhMzVmZTQ4ZmU0M2ExODY3ZDkgbGVnYWN5LXRydW5rCisxODM0NyBiMzM5OGM0NTJkOTU5MWEyMTQ0NTA0MDYwOWFiM2EzMDI3ZDdhNDcxIGxlZ2FjeS10cnVuaworMTgzNDggZjBjYTRjNjc5NTdiNTdhOWYyY2M1YWYwNmI5NWEwY2VhZTFjYjJiNSBsZWdhY3ktdHJ1bmsKKzE4MzQ5IDJkMWJiYmFjNzZkMzA3YTBmOThiZWVjZjVkYzM0MDNlMjQ4ZGVjNTcgbGVnYWN5LXRydW5rCisxODM1MCAxMGY2ZTE5NTY3MWRmZTdmN2E4YjhlOWEwNWQyMmUxODUyY2VkY2FiIGxlZ2FjeS10cnVuaworMTgzNTEgOGE1OTZkMTBiYzcwODUzYmJmYmFhOTFjYWRjMmY5MDcyMTFjYjMzNyBsZWdhY3ktdHJ1bmsKKzE4MzUyIDU4YjRhZTRlYzU1YzZlOGNlMmIwYmFmMjc5ODcwMmZhZjdhNTEzMmQgbGVnYWN5LXRydW5rCisxODM1MyBmNjQwMzkwMjNkNjQ5MjNhMDlmYmU0OGI4NDhjNDQ2OWYxMWY0OGQ5IGxlZ2FjeS10cnVuaworMTgzNTQgZmQ4NGIzNTI0MTQ1NzYxMzg5ZDZjYmQ4Zjk5NjkwY2NiYTdmYjQ4YSBsZWdhY3ktdHJ1bmsKKzE4MzU1IDhiNTk2NDUxZjFjMThmMTc0ZmRjZmE5YWVhM2ViYTM5NDkzZWY2MjYgbGVnYWN5LXRydW5rCisxODM1NiAzMmM0NDBkMmIwZGZkNmRkMWM3NmRmYzQ3MTc5YjJmNGUwYjFkMTU1IGxlZ2FjeS10cnVuaworMTgzNTcgMjZkNDE0YzBhMDkyMDJlMGJmMDUxZGI3ZDhjOTA5MDRhMGE2MTNhNyBsZWdhY3ktdHJ1bmsKKzE4MzU4IGYzYmY1ZjA4MmEzZjhhNzlmZjIxNmI0ZmNmZDU2ZGU2YjE0MmJmMTggbGVnYWN5LXRydW5rCisxODM1OSA0NjI3NTYxMWNkNTliZTg4ODI1M2QyMWYyYjNjOWUxNDM2MDFkMWFkIGxlZ2FjeS10cnVuaworMTgzNjAgOGJlODg5ZTgxMTViY2IwNGQ0ZmM5YWE1ODliYjU1ZTBmNjdmZjJjYyBsZWdhY3ktdHJ1bmsKKzE4MzYxIGQxMzdiOTRmM2RkZmQxNmViZTM1NGYzZWY0MWNhMzRkOTliNTM2ZjIgbGVnYWN5LXRydW5rCisxODM2MiA1NWY0YTZlOGI1YjNhN2U0MzFiOTMyOWJmNDlhNjliODU2YmQwZDRhIGxlZ2FjeS10cnVuaworMTgzNjMgZGFhZGQxZTg1MzE2NTgxODRjODY4ZDc5MzZhNDIyNWY2ZmE2MjhkZSBsZWdhY3ktdHJ1bmsKKzE4MzY0IDM5NzQyYzkxYWRkM2U0N2UxMTI4YzQwOTEzN2Q5NWZkZDJlNjkxMjEgbGVnYWN5LXRydW5rCisxODM2NSA0YjY1OGMwNTljMjNkOWRmOWNiY2JjNDhjNzI2ODkyYmM2MDQ1YWNlIGxlZ2FjeS10cnVuaworMTgzNjYgNWU5ZDAxMjdhY2U5YTFjYzYwMWE3MDU0YmMzMTQzZjJkYjg4ZGEwYSBsZWdhY3ktdHJ1bmsKKzE4MzY3IGFjODMwYzllOWE4MzcyYTMxYzFiNzVmNzg3MTdmNzA5OTBiY2I4NzUgbGVnYWN5LXRydW5rCisxODM2OCAzNDA1OGFmOTc2Y2VjZWVhZGYxMDMyNDBiZWMyNWU1YzljYzcwNjQ4IGxlZ2FjeS10cnVuaworMTgzNjkgZWNkZTc3MTQyOGY5ZWI0NzJlODY1ZTlkMzBmMjZjZDFhMWUxMDdkNSBsZWdhY3ktdHJ1bmsKKzE4MzcwIDMwNTQ2YTJiOTQ1MGU1ODljOTgwOTUxMjAzZTJkNjAyMzFjOTY5OTAgbGVnYWN5LXRydW5rCisxODM3MSBkYjc1NzAyMjVlZjg0MjE5YTkwMGJmYTdiMThmZjQzNjgxMmUxZDI2IGxlZ2FjeS10cnVuaworMTgzNzIgMzQ4MGU4M2UxN2FiYjFlODQ3YWMyMjE0YWU5YThlNjg1YmFmMWMxMSBsZWdhY3ktdHJ1bmsKKzE4MzczIGUxMWMxMjMyM2ViZjVjNTA5MjUxZDk2MmMxODQ4MDc0OTc0NWRhYTYgbGVnYWN5LXRydW5rCisxODM3NCBlZmM5NmFhYjcxYzI4OTFkMDdlMTAzZWIzYmQyMThhMTg0OWZmZTdmIGxlZ2FjeS10cnVuaworMTgzNzUgM2U5NGNjMmEwNDczZmY1ZjhiZDc1ODY5ZWMwNDUzMzE5MmYxZGI0MiBsZWdhY3ktdHJ1bmsKKzE4Mzc2IGRkNTgzYzMzZjQ1NWFjYTM1M2U0OGI4MjVjNTQ4ZmE2NjcyZmQxYjAgbGVnYWN5LXRydW5rCisxODM3NyBjMTMzMzY1NzJmNGY0MWEwMWJjMzhjZjVjOTE5MDhhMWYwMzBlYjdmIGxlZ2FjeS10cnVuaworMTgzNzggNWU0MWViZGZhOWEwMGU0M2Y1NmM4ZjM4Y2E5OWYxNjQxOTY0MmI2YiBsZWdhY3ktdHJ1bmsKKzE4Mzc5IGMwYWQ0YzJlZjQ0NDYxZmNhMjg2ZjM3MjdiOWQyMzgwZTI4ZTIzM2UgbGVnYWN5LXRydW5rCisxODM4MCBlZDI5ZGY3ZWI1Yzk2MTg2ZTdkMjAwMjc5MWNhZmNlNWI5ZDdjYmM3IGxlZ2FjeS10cnVuaworMTgzODEgODg1NGQ5ZDVhZGQ1ZjQ2MjFlMmZlNzE5NWYzN2NjMTFmNGY1ZjA5ZiBsZWdhY3ktdHJ1bmsKKzE4MzgyIDA3MGVlMzFjYWYyOGI3MGVjMDUxMjJiMWYyMTQ2YTNjMDZiM2ZhYWUgbGVnYWN5LXRydW5rCisxODM4MyBhYWE1NDc1MmU0YmFkMDM5NjA1YWNjODM5ZGYwOWZlOTYzZGU2Mjc5IGxlZ2FjeS10cnVuaworMTgzODQgMTAyMjFhNmM3YzNjNWY2Y2VjYWZmM2IzMDgyYTUxNWFjOWFkZDhjNSBsZWdhY3ktdHJ1bmsKKzE4Mzg1IGNmMTc1MGMzZjdmN2Y5OGQwOGVkZjAwMGZhZmM0YjBmNzk1NzA2MjMgbGVnYWN5LXRydW5rCisxODM4NiAzMmM1NWY1NzQ2ZGVkMjBhMjM1M2Y3NDhlMjkzZDgyY2U5NzhhZGFkIGxlZ2FjeS10cnVuaworMTgzODcgOGQ5ZmZmZWQzNGY0MDY0YmRjOTBkMmE3ZjVjYTgzM2U1NjViNDZhNyBsZWdhY3ktdHJ1bmsKKzE4Mzg4IDA0MWQ1N2UzYTJiOTA0YmU1YThmZmYwY2M2ZjI5OGY1MDdhMTExYTUgbGVnYWN5LXRydW5rCisxODM4OSA1ZmUyZWM1MDQ4MzZjMTBmMjA5OTk0NjhmNjU2OTUwOTUzZWU4YWJjIGxlZ2FjeS10cnVuaworMTgzOTAgYTkzZDc5ZGE0ZjhjNWRiY2YzZjg0YmRjNDA3MDc2NjU0ZTlkNTI0NyBsZWdhY3ktdHJ1bmsKKzE4MzkxIDc5ZmNkMmIzMTgwOGJkZTZjZGExNDc4NjMxNWViNjJhYzlmNTM1OTUgbGVnYWN5LXRydW5rCisxODM5MiBhZDE0ZGRiZDA5YTcyNWVmNmI0M2VlYTE0M2JjNzI4MWM2MDU3ZDAwIGxlZ2FjeS10cnVuaworMTgzOTMgMjlmNDI2OTQ0MDJiODBjZDk0Mzc1YjAyOGMyMTA1NmRhY2M5ZDI2NyBsZWdhY3ktdHJ1bmsKKzE4Mzk0IDVkOThkNDk3MTNmMjFhMWM2OTNkY2IzMTQxODE0NzI0MjgyYjAxYjUgbGVnYWN5LXRydW5rCisxODM5NSAwY2I3NTFiNTYzOTE2YzMwZThlN2E2ZWIzNTU1ZWI1ZjZjYTAwN2ZkIGxlZ2FjeS10cnVuaworMTgzOTYgN2VlMzllMTRjZjJiMGY4MmM0YmU4NWFlMDllYjJjNDdmZWQzMDY5MiBsZWdhY3ktdHJ1bmsKKzE4Mzk3IGM1OWY2NDVkYWVkZWQwZGRhNGU4YjAxMTI1OWU2MDVjNDZmZjA3NWEgbGVnYWN5LXRydW5rCisxODM5OCA1MDM1OGQ2NGRjNDM3YjdlNWFiMzkxNWMyZGI4MmFhNDRlNjY2ODkxIGxlZ2FjeS10cnVuaworMTgzOTkgM2IwNGQzNDI1ZmYwZjMxMDg5NGNlNzI1NTg3MjMyNGNiZmQzZDkyZSBsZWdhY3ktdHJ1bmsKKzE4NDAwIDVhYWM1ODczYWFhZTdkMDRkZjdjZDM5ZTI3NmQ2YjBlYzg3Zjg5YmYgbGVnYWN5LXRydW5rCisxODQwMSA5ZDQzMTI5YzhjNTVmMzM3YTliZjU5NTZiMTdiNjI2NDkxNTkxOWI4IGxlZ2FjeS10cnVuaworMTg0MDIgNThiYzk5ZTAxMmE4NWZhOTk3NzE1YjhkZmQ2MDZmZGEwMDg3NjUyMSBsZWdhY3ktdHJ1bmsKKzE4NDAzIDYzNTk0ODAxMDZlY2ZhOTlhZDYxOWM0ZWJkNzJiY2FlMDBjNTQ0ZmQgbGVnYWN5LXRydW5rCisxODQwNCA3ODUxNTVlMmNmY2EyOTQ5ZjBkNzdmYjYwNjBlNWY4OTQ0OTg5OGJkIGxlZ2FjeS10cnVuaworMTg0MDUgY2JkNGYzNTViYjk2Zjc5OGMzMGMxZmViN2YzMDI1M2Y4Njc4NjhkNCBsZWdhY3ktdHJ1bmsKKzE4NDA2IGQ2OTYxMWNjZTg3NzY4M2JjYzU5N2QyZTI1NmRkZTI2YmNkMzVjZTQgbGVnYWN5LXRydW5rCisxODQwNyBiYjkzYjFkY2E1NzE5OGQxOWFkMzg0MjhkNzVjZWI1NDg0ZGE3YzJhIGxlZ2FjeS10cnVuaworMTg0MDggYWY3YzYyM2Q4ZDMzYmQ3YTkwMDNjMTM1YjEyOTkxZTZiYmI4MTkzYiBsZWdhY3ktdHJ1bmsKKzE4NDA5IGYzYjA2ODJkMjZkNjAxMWEzN2Y1YjE3NzJmZGJjMmM0Y2Q2MDI0MGQgbGVnYWN5LXRydW5rCisxODQxMCAyZmRiY2RlZTJlMWYyZWQ2OGE1ZTlhNmVkYmM2MTkwNWQ5MzNiMTM1IGxlZ2FjeS10cnVuaworMTg0MTEgODQ1NjQ2YjA5YmY4MjQ1ODJiODcxZDA5MjdmZjk3MjBhNGIyZTUxNCBsZWdhY3ktdHJ1bmsKKzE4NDEyIGY5YjE4NGE1NzIyMzk1MDE3OWIxYzZjZjEwM2RkYzMyN2YyZGI4YzAgbGVnYWN5LXRydW5rCisxODQxMyA0ZDljMzFmMzJjMDljMjRiZmUyNDQwY2E2OWNhNmNlMDA0MzE3ZDI0IGxlZ2FjeS10cnVuaworMTg0MTQgNTc0MzkzMzZjMmUwZWU5NmVmNTkyMjAxMmY3Y2IyZWYxNTg3ZmE2NiBsZWdhY3ktdHJ1bmsKKzE4NDE1IDQzNTQ2YzVhZWVjY2VhN2VkOTk5MDg5Yzk5Y2Q2MDA3ZGM4ODE3NWIgbGVnYWN5LXRydW5rCisxODQxNiBmNzIzNDViNDM2NjIwMWNmZTU2NTRlMWZkMTFlM2Q2OTRjZjMxYzI1IGxlZ2FjeS10cnVuaworMTg0MTcgZDNmNmYzMTU1YzI0MDRiZDFjOTFkNjdhMDJjYTQxN2U0NTliOWQ1MCBsZWdhY3ktdHJ1bmsKKzE4NDE4IGIxNzU0MDBlOGIyMmFmZDMzYzk0N2IzMWY4NGEzMWEzNDNhYmE3ODMgbGVnYWN5LXRydW5rCisxODQxOSBjODFiZWQwMTY4YTA5NDljYjE5Y2EyNDQ5ZGE2ZmU4YmFiNjE1ZmIxIGxlZ2FjeS10cnVuaworMTg0MjAgZDA4ZjhjZWIzZDU1NmUzZWU0NWY0NjFjZWJlMWI3MWVkNTkzOGFkZiBsZWdhY3ktdHJ1bmsKKzE4NDIxIDE0MzY0NmJhZmQxYmU4OTBmNmRmZWZiMTU3YjNjZWFmZWYwYzM5NWQgbGVnYWN5LXRydW5rCisxODQyMiA5NDUzZjZmYWNlZmE0NWUxNzY5ZDM2MTlkNTVlYTgyMzE2ZTBjODA4IGxlZ2FjeS10cnVuaworMTg0MjMgNzRlZTY2MTU4MWI2ZDQ3ZTg2ZTU0NGQyYmE3NWIzOWI3YjQ4MDM0NCBsZWdhY3ktdHJ1bmsKKzE4NDI0IDM1ZThhMjllNTQ4ODRlMDNiYTUyZWZhNDY0MWZjODFmNTlhYTk3MmQgbGVnYWN5LXRydW5rCisxODQyNSBjMTA0MjZkYTdiY2UyNDIwZDU5MzA3ZDVjYTQ3ODFlODY0NDlhYWM0IGxlZ2FjeS10cnVuaworMTg0MjYgNGMyMDM3OWU2NjNkNDU4MmJmMGE0MjE2YmFmNDU4ODAwZjI1NTdjMyBsZWdhY3ktdHJ1bmsKKzE4NDI3IDk5NDIyZDYxMGRiM2FlOTZmMzEyOGI4MDRkZWFjODJiZTZmZWExOWYgbGVnYWN5LXRydW5rCisxODQyOCBkMzg1MTZjZTZmMTQxOWQ3ZTI5Mzg3MDg0NDMyNTZjMWRkZjkxZGY1IGxlZ2FjeS10cnVuaworMTg0MjkgYjM0MjBiMDAyZDU1Y2Y3MTkwYTQ3YTNjMmNjYjNjZTAxYzhkNjU1ZSBsZWdhY3ktdHJ1bmsKKzE4NDMwIDU2YWRjNjhlMDZmNjkxM2RjOTQ3MzljNTQ5NGRmMzI4M2NjNDU3MWMgbGVnYWN5LXRydW5rCisxODQzMSBkNDEwZjZhZDNjNjAxOGVlYTMxNDEwN2FmMWI2M2E5ODUzYTU5Nzg2IGxlZ2FjeS10cnVuaworMTg0MzIgMDI3ZWU5YTg3MGQyYzIzM2M4ZmQxNTU2ZTVhODYzOTIzNzE5OWZlOCBsZWdhY3ktdHJ1bmsKKzE4NDMzIDIxNzVlNTY3YmQwNjI5MGRiYmE3MjgwYjI4MDgwOTY0Nzk2NWE2MzAgbGVnYWN5LXRydW5rCisxODQzNCAyNDA3NGY5NzIzNWM0OWQzYjM5M2Q3YWQxZTZmYTI0YTA5NjYwYjkxIGxlZ2FjeS10cnVuaworMTg0MzUgNGE5ZjE1NTJiYTY4ZTBiZjAzOTg3MDM5NjY1Nzg1MDMxNzBjMDFhNSBsZWdhY3ktdHJ1bmsKKzE4NDM2IDAzYzMyZmFhMWE0OWI0YzdjNTQ0MmMyYTA3ZTJjMGJlODYyMWYyNjAgbGVnYWN5LXRydW5rCisxODQzNyA1OGZlOTM3ZjczNGE0ODc4YWY0NDliOWE1OTlmYjlmZjhkNDZlNWIzIGxlZ2FjeS10cnVuaworMTg0MzggOTZjM2FlMTNkZGNhODE4YjIxM2NjMTQ2ZDNkMTdkM2U2NDFhOTE2MyBsZWdhY3ktdHJ1bmsKKzE4NDM5IGUwNzY1YzU1MTJkNzE5ODk3ZDA1YWE0YTQzYjJlNDc1ZjFmNWY2NjcgbGVnYWN5LXRydW5rCisxODQ0MCAzMWQ3OGYzNjE1MzBjZjA4NzNlOTM0MTZlNjIwYWQwMDk0MmMyMjE1IGxlZ2FjeS10cnVuaworMTg0NDEgNjY4MTY2YTUwYzcwNzFiNjU3NjI5MTVkNTAzNDFjZmU0NGVhMjc3ZCBsZWdhY3ktdHJ1bmsKKzE4NDQyIGFmYjQ1YjdmYTI1MjhjZWE5MDQ3MjJiNmQ2NTJkZWNlYWVlNDBkM2MgbGVnYWN5LXRydW5rCisxODQ0MyA2MTc5ZDRhZmE0ZTRlNWNmZjNjMjU2MmFiNjgwZmYzNTI3OGUyYWRlIGxlZ2FjeS10cnVuaworMTg0NDQgYjhmNWI3MjY3ZjE0OTdjNDU2MzhhMWUyYTgxZWI5NTM1YWIxNjc0NyBsZWdhY3ktdHJ1bmsKKzE4NDQ1IDY3YzI0Yzc0ZjE4Y2M0MzQ0YzQxNGIyMmE3MjM4YzE3NTMyMTFhY2IgbGVnYWN5LXRydW5rCisxODQ0NiBiMmE5YmM5MTY2OGE3ZjI0MGY0OTNhODY2MWVkODIwNDg2NWFhMzRiIGxlZ2FjeS10cnVuaworMTg0NDcgZmY4NDExMmRhYmM4OTUyMzYwNTgyMmYwZTdhYzUwNjY5ODI0NDc4MSBsZWdhY3ktdHJ1bmsKKzE4NDQ4IGViY2U5YjI2N2JiOGVhNjE5MmQxOTlmMWE2ODNjODM5MTFlZGU0ZWIgbGVnYWN5LXRydW5rCisxODQ0OSBjZTkyMjMwMjgxNjQ4Y2ZkNWMwNWFjMjYxOTc3ZjYyOTViNDNjNDA0IGxlZ2FjeS10cnVuaworMTg0NTAgODU3YTU0MDBiZTg3ZWFkYWNlODcwZmEzODMyNTg4ZWIwZjY3ZmVjZSBsZWdhY3ktdHJ1bmsKKzE4NDUxIDFlNzU2ZjkzYmY1ZGExZTk3ZDM4ZjIzZDJiYTY3YmNhZTg2Y2Q3NjUgbGVnYWN5LXRydW5rCisxODQ1MiAzNjI4NjYzMmZmM2E5M2NmMjNmOTJiZGFkOWQ4ZmFjYjNmMDMwYWE4IGxlZ2FjeS10cnVuaworMTg0NTMgNTI3NTZmNjEzYzE4MmE4YjMwMTQ2NTZhMTU4Nzk2OTlhMGE3ODYxYiBsZWdhY3ktdHJ1bmsKKzE4NDU0IDk2OTQ5MDlkYmIwYTc5ODg2YzUyMGVmMjg3MThjMDQ5YmMyNmEyNTggbGVnYWN5LXRydW5rCisxODQ1NSAxNzc5Zjg1NzRhODNhMGY0N2NiNmU0MjZlZTQyZjY5ZTA4MWNmNzM5IGxlZ2FjeS10cnVuaworMTg0NTYgMGY0MmY2NjY5ZTgwMmMyZWYyNDZjOWQwYzZhZjVjY2VhMWY0NjRlZSBsZWdhY3ktdHJ1bmsKKzE4NDU3IDU5YTQ1ZmE5NTMxOGZlZWY3NzkwODVlYzEzOGZhNzUxMmM4ODAwMTMgbGVnYWN5LXRydW5rCisxODQ1OCAzZmU1OWVkMTFhZjEwZTU0MTI4NmY2YmI5NDJlMGI3MmQxZTEyNTVhIGxlZ2FjeS10cnVuaworMTg0NTkgMTQ4YjhjMWI3MTNhOWRhOWEwOGIwMTVjZDVkNDQ2OTg0N2U3N2I4NiBsZWdhY3ktdHJ1bmsKKzE4NDYwIGQ1YzlkZDI0ZDk3N2I4YzcwNDUyYjI5ZWVjNTNhZWY0OGU4ZGViOWUgbGVnYWN5LXRydW5rCisxODQ2MSA2NjMwY2NhMjk4Y2MwZWI5ZmNkYTcyYTUwODdjMDNhODI0YzEwM2JkIGxlZ2FjeS10cnVuaworMTg0NjIgNTM0MjNlYzBhNzI4ODRiMDU3ZjQ2MTI0ZWNlZGU5YzIwMzc4NWY3NiBsZWdhY3ktdHJ1bmsKKzE4NDYzIGUyM2Q1YjJlMjI4YzQyYzIzOGI2MzQzMmQxNTI0NzIyYzhkYWUyNzMgbGVnYWN5LXRydW5rCisxODQ2NCA5ODdjNzRjODg0Mjg5N2Q2ZjgzNjY4OWUyYjdhMWQ4NjFiYTE0Yzc5IGxlZ2FjeS10cnVuaworMTg0NjUgMTVlMWViMTAxOWI4YTM3YWY0ODhhY2YzNmRlYmZmYjdiY2Y1YjE0NyBsZWdhY3ktdHJ1bmsKKzE4NDY2IGUxZjJlM2VjNzZkNGZlNmFmYmY0NmZjN2QwMmZmYTk0ZjVmOWNiNmMgbGVnYWN5LXRydW5rCisxODQ2NyBmOTliYjZhOTJlODRmNzgxYTY3ZWJmY2U2NTEyODc5NDRlODI2YjkxIGxlZ2FjeS10cnVuaworMTg0NjggNTliZmJiZTU4MWMyZDBiYTllNzZjODRhNzFiYjViZGIzNDdjZDk4OCBsZWdhY3ktdHJ1bmsKKzE4NDY5IGZmMDc2Nzc1M2Q4MTNkYzA4MGI0MGNjMTYwYWRhYWI1NWZmYzJlMDQgbGVnYWN5LXRydW5rCisxODQ3MCAwOTA2YzhlMmM5NjFjM2IwM2YxYjNhYWYzZjgwYzUzN2YyNDViZDQ4IGxlZ2FjeS10cnVuaworMTg0NzEgZWQzMTViNTVmMTllNjJmYWYzOGNkZDAzNzRiN2VmYzMzYTA0NzU1NiBsZWdhY3ktdHJ1bmsKKzE4NDcyIDJmZTc0Mjc1OTFlYTk2N2ZjODdiMGQ5MWRjMjY5OTkxYzZkMTBiMjggbGVnYWN5LXRydW5rCisxODQ3MyBlNTdmOTNhZTRmZTlmNjg1MmMyY2U5YmE5NzA4ZTExN2U0MWJjNTNlIGxlZ2FjeS10cnVuaworMTg0NzQgMzU3NDlhNTU3ZjFlNWQ2ZDBiYTVhN2Y5YjNlZmM1MDJmMTNiY2Q5NiBsZWdhY3ktdHJ1bmsKKzE4NDc1IDdiYjdiNzJmYTY2NjZjMTUyZjA0MmE1YTEyZWRiZjE2YTM4NjRiNjkgbGVnYWN5LXRydW5rCisxODQ3NiAwNzg5ZGQwNjJkNmMwODMzZDAxZmJiNGZmMWI0MjMyNTZjODUzZTg0IGxlZ2FjeS10cnVuaworMTg0NzcgZTEyYjY1MGYwZmFjZTZkMWY4N2ZkZTljZWU5MWFmZjU0OTIyYzAzMSBsZWdhY3ktdHJ1bmsKKzE4NDc4IDA1MmUzNzJjZTE1MWM4NDc3N2YzZmRkOWEyOGIwYjIxMmY0ZTVmMDAgbGVnYWN5LXRydW5rCisxODQ3OSBkM2U4NmZmODkzYjEwNTZkN2UwNjUxN2QxZTlkODZhNTg0NmJjYzU5IGxlZ2FjeS10cnVuaworMTg0ODAgNTBkOWI1OTA2MjdkNjRlMzZkMjlhMDU4M2JiNzRkNzNlODllNTFlYSBsZWdhY3ktdHJ1bmsKKzE4NDgxIDMwZWM4NzMzMzhhZDE1NjQ0ZmRlN2ZhZWUyNDY2MWQwYzllYTdkNGIgbGVnYWN5LXRydW5rCisxODQ4MiA4MjYyYmZhNTE0YzJjMDAyOTNlNzM2ZDI2ZjViYThjNjc2NjYxMzRlIGxlZ2FjeS10cnVuaworMTg0ODMgZjU5NDkzOTdjOGE1ODhmZjZlZDAxZDM4MGVhNDY5ZGUxNDVjYjYwZCBsZWdhY3ktdHJ1bmsKKzE4NDg0IGRiNjljMDkyYzkwNmQzOTc5MzRiMzAyM2Q2NzgyOWI4OTMxMWM3ZTkgbGVnYWN5LXRydW5rCisxODQ4NSA1MGRlM2IxOThhNjIwNWIwNTcwMGNjMmEzYjgwN2ViZGZhZWRiMzM3IGxlZ2FjeS10cnVuaworMTg0ODYgMzhmMDlmYjE4YjgwMjBjNzdhMmM2YzlkNjhhOWY0ZGZmM2VjNmNhYyBsZWdhY3ktdHJ1bmsKKzE4NDg3IDUzODA5NzE5OTc4Mzk4NmQzNGI3NWVhZTY4MGNjZDVkM2VmNjcyZWIgbGVnYWN5LXRydW5rCisxODQ4OCA3ZTJiYjk5NGMyZDNhYzZlNTYzMDJlMTJiOGQzNDg2NDIzY2NmNmI1IGxlZ2FjeS10cnVuaworMTg0ODkgN2YyMmUzNGNlNDBlM2VhYTJjYjkyZWM1NmNkN2ZhOGQ3ODllNDJjYyBsZWdhY3ktdHJ1bmsKKzE4NDkwIDUwYmJlZWRiY2U0YTY4M2JhMzA2M2Y4M2JiMjAyZDgyMzQxNzg2ZmMgbGVnYWN5LXRydW5rCisxODQ5MSBkYjdlZTVjNjBhZjBiODdkMjMwNmMwMjA4NjQ5Yzc2NjEwOGQ2NzUwIGxlZ2FjeS10cnVuaworMTg0OTIgNTUyZGI4ZDgzYWNkODk2ZDIxZDYzYmFlNmRmMGI5ZDY3ZDI1MjBkMyBsZWdhY3ktdHJ1bmsKKzE4NDkzIDE5NzU2YjkxODA0MTY2MjZmOTU0OGU3ODJhMTM2ZWM2N2ZlMTFhYTkgbGVnYWN5LXRydW5rCisxODQ5NCAyYTYxMmFlMjUwOTU5MmEyYzM4MDk4YzM0YWE1NmIxZjcxMWVlYTVhIGxlZ2FjeS10cnVuaworMTg0OTUgNDQ2ZjNmOTM5ZGYwMzk3NjY1N2UxOTFjYjNjMmI5MDI2ZGYwMGI0NiBsZWdhY3ktdHJ1bmsKKzE4NDk2IDgzODU1MTg2OTc5MDRkODkzYjcwMmM0MDVkZTQyNDljOTI5ZDZmYWEgbGVnYWN5LXRydW5rCisxODQ5NyAyZDZlNzY4OWRjNDIwNTc5NTJiYzYyZjI3NDVkZWM1YWFjNzY2OTNjIGxlZ2FjeS10cnVuaworMTg0OTggN2ZiN2M1MWEyZTYxNjIwMDdjM2ViM2M1YWQ3NWMxYjkzYWE0ZDJkNyBsZWdhY3ktdHJ1bmsKKzE4NDk5IDc2MzlhOTU1MjQ3OWUzMDkzZGFjYTgyZDM3MGVjMGFlMTE2NTZiOGIgbGVnYWN5LXRydW5rCisxODUwMCA3ZmI1MDk5YmUyMDI2OWJjNTBiNzIzYjU3M2EwYjhkOGI5MDNhYWRhIGxlZ2FjeS10cnVuaworMTg1MDEgYzRiZWM3YzRkNmZmNjQxMzhkY2UyYTJjODBkZjY0YzJiOGU4NzQyOCBsZWdhY3ktdHJ1bmsKKzE4NTAyIGYwY2RhMGQ0YjUzYzIwODI2YThlNTgzYWEwMzAxNzU0NzU3ZTczNmEgbGVnYWN5LXRydW5rCisxODUwMyAxOWM4YTJkMzgwN2Q1OGRhMDQwZWFhN2QzY2U2ZjM4OGMxZjg0N2ExIGxlZ2FjeS10cnVuaworMTg1MDQgNjNiODBiNzdmNWIyZGIzMDlmOTg3MmE2ZWFhNTExMDI2ZmM4MmQ2NCBsZWdhY3ktdHJ1bmsKKzE4NTA1IDhjZmUyNmVkNzI4ZDk0MmQwZDUyZjFhNDU2MzFkY2JjZWQ1MGQ5YjIgbGVnYWN5LXRydW5rCisxODUwNiBjMTNmNWEyMGVhMzEyMzM4YTFmZDY5YjM0ZGRlMWE1Y2UyOGMxMTQ2IGxlZ2FjeS10cnVuaworMTg1MDcgNWIxNThmYzBlZDU1NWExYWIxZTg0MjQ1MTkzMjMxYTAxOTAxZTY3MiBsZWdhY3ktdHJ1bmsKKzE4NTA4IGU5ZjRiNzY2OTlhYTIzMTBkY2YxOTY1YzEzMzg3OTc4NTU4YzE3MDQgbGVnYWN5LXRydW5rCisxODUwOSAxYTRhNWE5MzZmNTA4Y2U1YzU0N2ZhMDA4NDQ3MTg5MDgyMjJhN2FhIGxlZ2FjeS10cnVuaworMTg1MTAgNTZjNzQ0ODNiMDUwY2MyMTY3MGVmNTc0OTNlMGU0MTkzNTIzMTQxOSBsZWdhY3ktdHJ1bmsKKzE4NTExIDJmMTc4YmRkZGMxNjM3ZDFiMTVjMjhiYmNmYjkxYTc2NzY0ODY1YTMgbGVnYWN5LXRydW5rCisxODUxMiA5MjdiY2MzMTVlNTZlODMwMWYyYzU1ZTdiMWNmYTQ3NTk2N2Y5ZGE5IGxlZ2FjeS10cnVuaworMTg1MTMgM2UyNTRmNTZlZWYxY2Q1YzRmMjc2NWY0MjE5Zjg5ZGQ0NGMxNTU2OSBsZWdhY3ktdHJ1bmsKKzE4NTE0IDgyYmVjMzg4YzYzNjI5YWFjNWI4NDBhOGE4MWQ0NjU0ZThmMjk4OTEgbGVnYWN5LXRydW5rCisxODUxNSA2NDA1ZjMwYWEwOGMyY2M1MTA4ZWNhNmUzM2Y3ZTM5Mzk0YTgzNWE2IGxlZ2FjeS10cnVuaworMTg1MTYgODNkNTk5NjUyYjYyMmI1MzlhYWJlZGM4YTBkZjgyMDc1MzExNjI5OSBsZWdhY3ktdHJ1bmsKKzE4NTE3IDE3M2Q3MGU3MmM5ZjY1YWU4YTVhOTZkMmVlOGE0MTc0MTFkYjhjNTkgbGVnYWN5LXRydW5rCisxODUxOCAwMjZhOTIxMDUxNDUyOGM0ZGJlZmRlZTdlOWE2YzIzNWI3NzAyZjhmIGxlZ2FjeS10cnVuaworMTg1MTkgNTZjZTM4ZTU3NTAyNmJiM2MyYjA2OTY3NDc5NDI5ZWQ2NmE0NTEzYSBsZWdhY3ktdHJ1bmsKKzE4NTIwIDY1ODVkM2MwNGEyOWQ4NTY5YWQ2NGQ2OGJhMGFmNTFjZGYyZDkyNzcgbGVnYWN5LXRydW5rCisxODUyMSBlYWY1YTc4YmQyODI3MTE4YTI2MTY2YjMwOTAzYjRkNjRhODEyZDA3IGxlZ2FjeS10cnVuaworMTg1MjIgYWZhZDY1OTc1YTgyZTVjNDk5YWNlMzEwNzIxODMyMTM4Y2MyYjdiNyBsZWdhY3ktdHJ1bmsKKzE4NTIzIDVmM2VlNWYxYjNkNzk3ZjllZGY0OGNiZTJiN2JiNzM3NzM2Njc4NDIgbGVnYWN5LXRydW5rCisxODUyNCAxZTQxNzE3MTdlNzdjY2YxODFmYzZjMWQzYjcwODkyZTlkODQzYWNjIGxlZ2FjeS10cnVuaworMTg1MjUgMTgzZDBiZDJmZDY2ZGMyZWM1NGEwODY3NmY0MjBlNTJmODQxNmU1ZCBsZWdhY3ktdHJ1bmsKKzE4NTI2IDE2OTA3NTVjNTk4NmJhYmQzNDQwNTVmNmE4ZmRkYzg2Y2I1ZmVhZTYgbGVnYWN5LXRydW5rCisxODUyNyA5MGVhMWUzZWVlYjE0ZDM0M2RkOTFhNGIwMDFkYjFlZmQxZWE2ZDcwIGxlZ2FjeS10cnVuaworMTg1MjggM2Q1NWJmNjU2OTlhZGRjNDZhMGZlODI2MTI5MDVhYTUyODA3NzQ1OSBsZWdhY3ktdHJ1bmsKKzE4NTI5IDhiNGNhNWRhN2RjMjY1ZDg3NmNiMzEyMzcxOTllYTY3MTk1YmE2ZmIgbGVnYWN5LXRydW5rCisxODUzMCA1YzY1ZTY3NmYyOTk2YzUwZjA4NjRiNGYwNDgzODJmYTk4YmY5OTU0IGxlZ2FjeS10cnVuaworMTg1MzEgNTFiNTg5ODA0MDUxNGY4M2JlNzRhNzM0MzM3NzE0YjkxMDNmZTk4YyBsZWdhY3ktdHJ1bmsKKzE4NTMyIGMzYzhiZmFkMDdjYTMyYzMyOWM4YzJlOTNkNmVjNjJhNmY1NDdlY2UgbGVnYWN5LXRydW5rCisxODUzMyAyNzdhN2ExNWViOTRiMDUzNjE1MmM1NWVhZWQwYzgyNmU3YTY3MTBjIGxlZ2FjeS10cnVuaworMTg1MzQgNjdiM2FjNDM5ZjY0MDIyODBmOTU3YzMxMDkxNWEzNWYyZGU4NGM0ZCBsZWdhY3ktdHJ1bmsKKzE4NTM1IDc1YzNhNjQ4NDdjNDlhZjIwNzY1MzJmNWJmNTNmMTBkMDQ0ODMxYjIgbGVnYWN5LXRydW5rCisxODUzNiA5M2E1NzViYmEwOWY2Zjg1Njg4YTdiNmViNjdjZTk5YWI1NDhhOGVkIGxlZ2FjeS10cnVuaworMTg1MzcgM2YyZmYzOGNjNjU3NGVkOTljMTIxODBkYWVhZWVlNGVkOWU1MDMxNSBsZWdhY3ktdHJ1bmsKKzE4NTM4IDI5YTJhMTE0ZTljOTMzMmM2OGQwYjQwMTQxOTBlN2Q2NjY2NTFhZmQgbGVnYWN5LXRydW5rCisxODUzOSAwMWE0ZGMzMWI1NzliMjRkMWI2NjdlNDUyNGIwZTA1ZDlhNzNiNjI5IGxlZ2FjeS10cnVuaworMTg1NDAgOWM3MWFkZDdlMTYwODE4YWVjY2EyN2NjMWIyYWE5MzZmZDlkMDhlNyBsZWdhY3ktdHJ1bmsKKzE4NTQxIGVhNDgzMmRlZWFjNTlmMTdhMGI3NTNlMDY1ZGM0ODcxZGEyYWUwZTIgbGVnYWN5LXRydW5rCisxODU0MiAzY2E3MDJjYWE2MWFlYWNjNjk5NWQwY2JmZGE4YTg2MmE0ZWUxMGY1IGxlZ2FjeS10cnVuaworMTg1NDMgYTUxOWYyMDdlZDM2ODcyM2RjMjA5NmNkYjhiNGQwOGExNjQ2NGVmMCBsZWdhY3ktdHJ1bmsKKzE4NTQ0IDEwNjEyY2JiNDYyM2FkZWZiOTZjZjY5ZGU5ODJiZjBhMTdhNTQ2MGUgbGVnYWN5LXRydW5rCisxODU0NSBlY2RhY2Y1MTc1OTQ1MjVkYWE1YjhlOGMyNDQ1MTRlMzA5MzI4YTAzIGxlZ2FjeS10cnVuaworMTg1NDYgZDZmODY2MTlkYmM3MzRmYWUzYzNkZTQ3NWU1YTlmMTEwMmM1YzhkYiBsZWdhY3ktdHJ1bmsKKzE4NTQ3IDk4NmQxYzNjY2RkZTkxYTE0MTZjOTM1ZTg4ZWU1M2QyOWViMWMwMWYgbGVnYWN5LXRydW5rCisxODU0OCBlOGY1ZTYxYThiOTQzNWE4MzY1OTUxMWNhMTRhYTAxNmFiZDkyZTRkIGxlZ2FjeS10cnVuaworMTg1NDkgODRjZGM4OWFjNTYxZjk4MmFiN2I5OGEzZDQ2ZDU2NWE2MGE3NGY5ZSByZWxlYXNlMjAtbWFpbnQKKzE4NTUwIDE3NWEzYjE3MjA2ODgwYTI4ZDdmNDE2ZmMxMTBjOGVhMjk4MDU0OWMgcmVsZWFzZTIwLW1haW50CisxODU1MSA1NTZhNGU1M2MyNjk3NzMzOTE4ODFjNjE1ZGZhMTdhMTBkM2VkMjhhIHJlbGVhc2UyMC1tYWludAorMTg1NTIgZTYwNTYyNDAwMGJmMTkxMDUwNjliMDdhMGM2OGIyNDZhZmI2N2E1MyBsZWdhY3ktdHJ1bmsKKzE4NTUzIGY0MTcwNTMwNGFmNDQyZjMyY2U5MDZkZDJmNGQ4OTkxMTQ2Y2YwOWEgbGVnYWN5LXRydW5rCisxODU1NCAyODBhNzhlZDAwMzU1MjgwOGRjNDRjYmJmN2M1NzYyNjZhZTE5ZDRhIGxlZ2FjeS10cnVuaworMTg1NTUgNmYxNDUzYmJkNTY5MDJlYjRmYTc1MTcxMTAxMDcwZjFiNDBmOWVmNiBsZWdhY3ktdHJ1bmsKKzE4NTU2IDEzOTY4NGE5MDA0MWEwZWNjODkwNzZhNzY1YTRiZjYxY2Q1OTNlNTIgbGVnYWN5LXRydW5rCisxODU1NyA1N2E0ODU3NDMwZmY1ZDI1NzcxZDVjZjI0MzI1MzdmMWU0ODNiOTljIGxlZ2FjeS10cnVuaworMTg1NTggMzZmN2MwOWMyZDdmMjQzZTZjM2E2ZjVjZjc3ZmMwOTdmZTVhMDI3YiBsZWdhY3ktdHJ1bmsKKzE4NTU5IDBjMjJhZjJjZGQ2ZmIzN2E3MTA5ODk0YmI2MjE3YjIxYTI0NDdmODggbGVnYWN5LXRydW5rCisxODU2MCA4ZTAxNDE3ZWMwMDE3YWI0ZTRmMjU5NjQ3ZjNmNjRkODNmOTgzMzg4IGxlZ2FjeS10cnVuaworMTg1NjEgNGIxNjhlZWI2MWIzYjdjNzRjNjhiZGRiYWYwY2U2MjM0NGY2NDEwNiBsZWdhY3ktdHJ1bmsKKzE4NTYyIDVhNWU5ZTdmYjZiMjEyNzA5YzQ1YWJiYzhlNjRlYzQxYjRiYjVhNmYgbGVnYWN5LXRydW5rCisxODU2MyAxOTk3ZGZlZDhkMjFkNmQ5ZjVlYmRkNGQ1ZDBjOGU4ZWY0MTE2NWQ2IGxlZ2FjeS10cnVuaworMTg1NjQgZjZlZTBkNDY3MmQ2Mjk2MDY1ZDZiODgxNmVhMDgxNWZlMzRiYjMxMCBsZWdhY3ktdHJ1bmsKKzE4NTY1IDYxMmZiNzcyN2ZhMjk4ZTE2ZjFjYzk0NGFmM2Y4ZDY2NmY5NThlOTMgbGVnYWN5LXRydW5rCisxODU2NiBiNDA4YWNkY2FmM2VlZWNjNWZmMGYyYTFiZGNjODBkZTc4MDBkYmEzIGxlZ2FjeS10cnVuaworMTg1NjcgYmY5YmIwZTNkZDM0MTNmMzA2NzYyZmNhMTliZTgzZGE4OTUxOTZlZiBsZWdhY3ktdHJ1bmsKKzE4NTY4IDMwNzVhMTUzYTA4M2UyMjliZGNhMmZlYmFmMDE5MzBlMWUwMWY0YjggbGVnYWN5LXRydW5rCisxODU2OSBlMjk3OGMwYjdjYmQ2OTIxYWY5NmEzOWQzNDFiMGJmMGE5NTIwN2E3IGxlZ2FjeS10cnVuaworMTg1NzAgMTYxODkyYmY3YzE1ZWZlOThlZGY0OTkwM2VmYTkwMWUyYjRiNTMxZSBsZWdhY3ktdHJ1bmsKKzE4NTcxIGE2MjZlMzlkNjg0ZGMyM2ZhNmY1ZjRhYTYxZGU3OTg2ZTVkOWYwZWMgbGVnYWN5LXRydW5rCisxODU3MiAyNDgxYjVmZTg2ZDZkY2U3YWM0NjAzYzMzYjk1MTVhNmJmNDMxOTE2IGxlZ2FjeS10cnVuaworMTg1NzMgOTAxZjM4ZjdmNmY3NTUwNzc1MmQwMzZhMjA3MDQwN2E1YTFiM2NkMSBsZWdhY3ktdHJ1bmsKKzE4NTc0IDM2OTNhYmQwZWFjMWQ0MWE0NzA4N2UwMjc2ZTc1NGM1NjNmZmMxODkgbGVnYWN5LXRydW5rCisxODU3NSAyYTMwNTEyOWQ1NjZlYzE0M2U0MjcyYThiMDUwYmYyODU2MTlmYzkwIGxlZ2FjeS10cnVuaworMTg1NzYgNGQ5NzhhZDhmYjA1ZDYwNGVhOTc0YTA2ODY3M2I3MmQ4YjkwNTE1YSBsZWdhY3ktdHJ1bmsKKzE4NTc3IDM2MmU1M2Y0M2RkMjM2MWI5MDk4OGZlNjRjODI4MmVkOTQzOGRlOGMgbGVnYWN5LXRydW5rCisxODU3OCBjNjU2ZjMwOGFhMWY4N2ZjZmRkZmEyM2FkZmI4MGI1ODAwYjUyMTA4IGxlZ2FjeS10cnVuaworMTg1NzkgNmUyZWM4ZjdjODcxZjc0YTNiZWMyZWExZmU2MTI3ZjFhZmE5ZDVmMyBsZWdhY3ktdHJ1bmsKKzE4NTgwIDI2NWY0ZWY3ZDdiMWQwZDYyNWEzNDMwNmVjMDZhZDhkOTA2ODNlYzcgbGVnYWN5LXRydW5rCisxODU4MSAwNjEyNTJmNWM3Mjk2Y2QzNDY4NDhlY2MzNDFhOGVmNjJmNDhlNTk2IGxlZ2FjeS10cnVuaworMTg1ODIgZWFkOGI1Yjk5NGFkN2NlNjEyY2Y2MGViYzQ2MDJjZWY1ZTRhYTM3NSBsZWdhY3ktdHJ1bmsKKzE4NTgzIDNlODYyYTUxODYxZmQ2YjZkY2YxOTJlMTdkOGJmN2QzNTBkYzVhMzIgbGVnYWN5LXRydW5rCisxODU4NCBhYzdhZTNlYWQ4OGE0NGFhYTM1NDlhZjAwYjVmZTdmZTgxYmEzNmU1IGxlZ2FjeS10cnVuaworMTg1ODUgMmRjYzRhODZhODc2YTcxZjdjNmE5ZTczN2FjNWE2M2Y1YzM2MGEyMCBsZWdhY3ktdHJ1bmsKKzE4NTg2IDhlNDAyYWVjYTBhM2QxY2RmOGRjMzRiZmEwZTVmNDc4YzdlOWIyMzkgbGVnYWN5LXRydW5rCisxODU4NyBkYjlmMTg5M2JlMDE2ODE2Njc2MjVhYTM0OGUzYThiYzlkMDU1NDJhIGxlZ2FjeS10cnVuaworMTg1ODggNjQxYWQ2YzgzM2JlODA0Y2FkZjVhYzgwNWUyYWEzNzNjYWEzMDJiZCBsZWdhY3ktdHJ1bmsKKzE4NTg5IDRkZDBiOTdhYTZlMTY2OTI4YjBjNWE1YTI2YjkwZmQ5ZDk5Y2QwOTkgbGVnYWN5LXRydW5rCisxODU5MCAyYjNiYzA4ZDRkODUzYWVmNDA0ODRmMTNkOTdhNWE1ODI1ZmExYmI3IGxlZ2FjeS10cnVuaworMTg1OTEgZDNjN2VkMTVjZTI1Nzc4ZWI5NTExZmJmMTA3MWE4M2Q4NGZmNjVlNyBsZWdhY3ktdHJ1bmsKKzE4NTkyIGEwNjQxNTk5NGNiNTZhNzg2ZjYxZjVlMTAzMDA5NDU3NGJkYTdhMDMgbGVnYWN5LXRydW5rCisxODU5MyAzYWQzMDA0ZGZlNmRiNmQ5ZDQzYTg2NjgyNzc1NGZiMjA2MDBmMzIzIGxlZ2FjeS10cnVuaworMTg1OTQgMDBjNjg1NWQ3NDJhOGQyYTUxODgzZjY4ZTc5NGU3Y2ViOGE5NmEzYiBsZWdhY3ktdHJ1bmsKKzE4NTk1IDMxN2MyMDNhYmVlNjg2Y2I2YmRhMjg3YWJmYTFkNTJlOTlmMGZlM2YgbGVnYWN5LXRydW5rCisxODU5NiA4NWRjMGNlMDE2MmU2ZjNjZTY1NjQ0M2UwYTQ2NDBlNmI4OWU3ZTE1IGxlZ2FjeS10cnVuaworMTg1OTcgNjEyNGNlZGY4NDM4ZGM4NmEwZjgzOTUyNDNmYzk0YTE2ZjM2YmU2OCBsZWdhY3ktdHJ1bmsKKzE4NTk4IDI3MjkwZWI5YzUyNjRiMDdiOTVjNWM5ZGNkZmZjZDU0NmQ5MWYzMDggbGVnYWN5LXRydW5rCisxODU5OSA3NmNhZjA4NTVkMWZmZTdlOTcxYmMxMTAyY2E4OTI5MGE5OWNmODNmIGxlZ2FjeS10cnVuaworMTg2MDAgOTc4MjFhNDZlMDAwMzAzYTZiODJjMDkyMzE2MWZlMGJjMDVmYjBjOCBsZWdhY3ktdHJ1bmsKKzE4NjAxIDBhNzcwMTNjNTBhY2EyMDQ1YjE0ODg0ZjU4MzE4MDc1Yzc3ZDMxOTIgbGVnYWN5LXRydW5rCisxODYwMiA5ZDE1YmFmNzE0NWFmZjJlNTA1YzBmMmIzYmY0NWFlZGJiMWQ4ODk0IGxlZ2FjeS10cnVuaworMTg2MDMgYWJiOTQ2MDkzMThlNmM0MzQwNDc3ZDBmMjE2YjNiNjIyM2E0Njc4ZCBsZWdhY3ktdHJ1bmsKKzE4NjA0IGJmODA4NjY4MjRlY2I1ZWY4YTc4YzU5YTM4ODhlYzExOTcwMGMzZDkgbGVnYWN5LXRydW5rCisxODYwNSA0YzA0M2UyMjdjNDQwN2VhZGIwOWYxZjFiZDM4ODk5ZmRmMjRkNGNmIGxlZ2FjeS10cnVuaworMTg2MDYgZjVjMDQxMzRmNGUyYmQ3YWQzYTlkYzhjNWFiY2E2N2EwM2IxOTJmNCBsZWdhY3ktdHJ1bmsKKzE4NjA3IDRkYmJmMzIyYTlkZjJjZmJiNTU4OTBhYzQxNWE0M2I2Y2YyYTZiNzUgbGVnYWN5LXRydW5rCisxODYwOCBmYTNmNTM3YzgyNDljNDRhYWY2NjA1NTZhNWExZWQzMjI5ZTI3MDgwIGxlZ2FjeS10cnVuaworMTg2MDkgNzlmOWUzMzMzMTZlNmJjZGUyYjA5YWMxYzA3YWU0NTk3YTY1ZDhlOSBsZWdhY3ktdHJ1bmsKKzE4NjEwIDc3Yzc2MWNkMTI3MmU5YjAzMDQzYmU1YTI2YWIzZDY0MzYyNzkyZTMgbGVnYWN5LXRydW5rCisxODYxMSBkNjdjZmNjMDY4M2VkYTg0ZmQxNjQxNTU1YmI4ZTAxOTUyZTRjZjYzIGxlZ2FjeS10cnVuaworMTg2MTIgOTM5YjhmZmZjNDUyZTA1MjViMzgwMDYxYjYzMjg2OGQzNTVlNmU5ZCBsZWdhY3ktdHJ1bmsKKzE4NjEzIGMwODIyYTA1ZTkyM2I2ZjUwMDk0ZDg1OTBkNDI0MGVhODE5ZmQ4YjUgbGVnYWN5LXRydW5rCisxODYxNCA4ZDAwZjc1NTVlZWMyNzgyZjg1MGNhMGZjZmI5ODY3MGZmM2FmZWI4IGxlZ2FjeS10cnVuaworMTg2MTUgN2M4ZmFjNGFjMzFhYmQ1OGM5MzFiYWJlMjZmZTNjMDlmMDA0M2IxNyBsZWdhY3ktdHJ1bmsKKzE4NjE2IGE0M2E4YTFmNDZlZTFiYjY1Yzc0NzNiYzliZTY5ZTJhM2ZiNTM2MGMgbGVnYWN5LXRydW5rCisxODYxNyA0NTk3OWNkY2QzNjk3MzljYmI4NTlhODVmNWY2YzVkNjU1YTQ5NDc1IGxlZ2FjeS10cnVuaworMTg2MTggYTllMTViY2FiMzJjYjYwMTMzZGI3NjEwZjAxYjNkMjZlOWNlMTUyYyBsZWdhY3ktdHJ1bmsKKzE4NjE5IGExZDg4YWIwMjNhMGJlY2Q1ZGVmYTUwYjhjMzUzNmYzNGNlMWU3MjkgbGVnYWN5LXRydW5rCisxODYyMCBhMzFjMzg2OGM4MTJmY2U3NjY2ZDEyNGI4Y2I1NDQ1ZjZkZWRmYWMxIGxlZ2FjeS10cnVuaworMTg2MjEgYTU2YzAwMGU1NzljZjdlNDM1NjcxZWZjYjhhNzUyMzczOGY1MjkwMCBsZWdhY3ktdHJ1bmsKKzE4NjIyIDk1ZWU3OWRmZDc0NjIzMTg2N2Q3Mzg0ZWIwYjAzN2E0ZmE1MTA0ODEgbGVnYWN5LXRydW5rCisxODYyMyBkZWY0MTZjZDkyM2RmMjJhOGIxYWZkYTQwYzRjYTY0OWQ4NjkwZDBiIGxlZ2FjeS10cnVuaworMTg2MjQgMzVlMDhkZDM3ZGYxMzdlMTY1Mjg1NjgwNWU5Mzk1YzJlYTZjZmUyNiBsZWdhY3ktdHJ1bmsKKzE4NjI1IDdiM2Y4ZTc2MWEyZDgyZGIzNzZjMjgzMzA3OGI0ODU5ZGUxMzg1Y2QgbGVnYWN5LXRydW5rCisxODYyNiA2ZDhmN2UxMjQyYzAyOWQ4MTYyODk4YzMxZDY2NDZhMDViMjAzZDI3IGxlZ2FjeS10cnVuaworMTg2MjcgZDZlNmE1Y2ZlYjNkNmI3ZDAxYWU1ZmVkZTZjNDY5N2VjNDI4MzgyYiBsZWdhY3ktdHJ1bmsKKzE4NjI4IDg3NDVmYjNhMTE5MTcyYWQ4ZWIzZjgwNGY5YTA3MTBlMGY1ZmJmODMgbGVnYWN5LXRydW5rCisxODYyOSBlNzkxZjQ5MDVkMjU2MWMyN2ZkYTE1ZGEzMmUzNWFkNzFmMmI3MGM0IGxlZ2FjeS10cnVuaworMTg2MzAgZmIxNDNmYjIzNmQwYWY0YjY1NGYyMTBmYjY4OGFmZWI0YmU4M2Y5YyBsZWdhY3ktdHJ1bmsKKzE4NjMxIDE4YTZlNmQ5YjRmODhiZWYzOWY2MzRkNGJlN2MzNTA2YzAyNGVjMjQgbGVnYWN5LXRydW5rCisxODYzMiAwODY4YzM2MWFmNWFmZGEyZmYyYWNlMzkwMTM2NzkzNjU3MmVjMWI3IGxlZ2FjeS10cnVuaworMTg2MzMgZWRiOTY2NmMwN2MwNGE4ZjllODc5Y2MzYTljNDVlNWYwOTIwNGZjNiBsZWdhY3ktdHJ1bmsKKzE4NjM0IDA3NmJiMjlhNjVkYzRiMDkzY2NhYzMyODdiMDE4NDVhOTQzOWQwZjcgbGVnYWN5LXRydW5rCisxODYzNSA1ZDZmYjdmZjY4Yzc5YTY5ZmNlNDRjMDRiMTNjYWMwY2YxNDczYzEyIGxlZ2FjeS10cnVuaworMTg2MzYgZThhYWQ4NDI0NzNhNGE1ZGJjMTlmNWRlNzgwNzE4ZWYyNDE5Y2I1NyBsZWdhY3ktdHJ1bmsKKzE4NjM3IDQzNzBmYzE5Njk3ZTRhOTY5MzBkZTBiOWM4Nzk2ODllMGU1Y2UwYTQgbGVnYWN5LXRydW5rCisxODYzOCA1MDc2NTQ0YzMzOGIxMzlkYjlhNmNhMDgzOWM1MGExYTM5YzNhZDliIGxlZ2FjeS10cnVuaworMTg2MzkgYjVhMzdiZjlkMTJkYTdhMjExNDhlMjVjYTdhZjY2Y2VmYWEwNzhmMSBsZWdhY3ktdHJ1bmsKKzE4NjQwIGM2NjljMjlkMWI4Y2RmOWJkZDgwYTI4M2FlYWIwYjc5MjE0ZTIzMjAgbGVnYWN5LXRydW5rCisxODY0MSBkNjQ2ZDYwNjg5MjQzMGQxNjIyMmM1ZjBmZjU4NGZjMGVlMDM2YTA5IGxlZ2FjeS10cnVuaworMTg2NDIgYjFjNTc3ODQ4MGExOWY5NTYzN2IwZWUxODQzZWE3NWZkMzBhODkyMiBsZWdhY3ktdHJ1bmsKKzE4NjQzIGFiNTM1MjQ0NDIwNTdlZGEwZTIyOGY4MmNhZTMwZjQ5NzlhZDZiYzYgbGVnYWN5LXRydW5rCisxODY0NCBmY2EyY2Y4NTBlNGFjZjEyMmI0ZTEyMDBhMmVmZGMwYjEzNTNhMmM3IGxlZ2FjeS10cnVuaworMTg2NDUgNzhjNGI2M2I1YjlkMzU0ZjcyZTNkNjlmNDA5ZDk2MzllNjEzMmNlNyBsZWdhY3ktdHJ1bmsKKzE4NjQ2IGVmZjExZmFjNWYzNjM5YTk5MWMyNDEyNmFkZTVlYzZiNDY0ZGU5NGEgbGVnYWN5LXRydW5rCisxODY0NyA4M2UxNDY5NzRiNzJhNGE5N2YyODYwYjIyZjUzODVjMDYzZDk4YzlmIGxlZ2FjeS10cnVuaworMTg2NDggYjMxYTA0NmY4OGE3NzI0MTI5ZWRhNTgzY2E3ZDg0MzlkZTBiOGJkYyBsZWdhY3ktdHJ1bmsKKzE4NjQ5IGRkZDNkOGMyY2NhMDUyOGE4YWQ1Mjk0N2VmZTBlZDFkYmIxYWY4ZWYgbGVnYWN5LXRydW5rCisxODY1MCA5ZTk1NTY5MjRiMGE3NDIxZThjYmI0NDY3YmI3ZDNlZGQwOGM5MmEzIGxlZ2FjeS10cnVuaworMTg2NTEgMWRiM2NhOTUzMGMyODYzZGU3YmZiMGJkMDk5ZDdkZjFiNmZjNTE4NCBsZWdhY3ktdHJ1bmsKKzE4NjUyIDQ4NTRlZTU4NWUwZGY4ODFjODAyNTYwODU2YjY4ZDBkMjRiZDBhNjAgbGVnYWN5LXRydW5rCisxODY1MyAwMTMxNzkzNzZmYTM1ZTUzZTA2MGVlNTcwZjc5ZTExNTUwY2FkMDlmIGxlZ2FjeS10cnVuaworMTg2NTQgMGZkZmFhZWE1ZTJmOTAzMWNlMzAxYTgxOGJhM2EwZTE5Y2ZiZTQzOSBsZWdhY3ktdHJ1bmsKKzE4NjU1IGI3ZDVmNjhiZTAxN2Y0YzgwMzliYjg1N2FmYmRiMTlkOTJmMmExOTkgbGVnYWN5LXRydW5rCisxODY1NiA2M2MwNDgzZWZmNjhmZjhkMjI3NDQ5NjhjNWZkNjgyOGM2YjNmODhiIGxlZ2FjeS10cnVuaworMTg2NTcgYjU3ZTNlMzc0MzE0ZTM1M2I1YTg3MGFlZTZmN2Q3NDM3YmFjNTQyNSBsZWdhY3ktdHJ1bmsKKzE4NjU4IGVkZDE5MjE3YjM5Njk1ZGE5YmE3Njk3NmViN2NjODQ2ZDEzMjk2NTAgbGVnYWN5LXRydW5rCisxODY1OSBkMDI3ZTg1ZTIwOWY3ZDg0ZDE5ZGZjOGRmZDUzMTQwNjQxYmMxZjYzIGxlZ2FjeS10cnVuaworMTg2NjAgNWEzMDhhOWY5OWE1NjY0N2ZkYjNjMmQzYTQxY2Y4MjRjZWQ1OGEzNyBsZWdhY3ktdHJ1bmsKKzE4NjYxIDNhMjYwMjc0YmNjNmExNWI0ZWM2NzAyZjhiMTBjMzEzOWQ3YTlmYjkgbGVnYWN5LXRydW5rCisxODY2MiAyMjhmZmQzNmEwZGRjNzM5ZTBiNzkzYTQ2MDQ4NGZhNjY3YTAwYTNlIGxlZ2FjeS10cnVuaworMTg2NjMgZWIxNzY3YjA2OGZlYzIyNzZmNzMyYTkyOGU0ZDE2ZDI2YzQxMTcwOSBsZWdhY3ktdHJ1bmsKKzE4NjY0IDliNjgxNGJmYjJjMGQ5ZjUzMjIzOTkyODFjZTlhY2FiMTE4MzZmYzggbGVnYWN5LXRydW5rCisxODY2NSAzNzgxOWE3NzdmYzBjNDllZjQzMGU0N2EwY2EzZDNkNzkxNjI2ZmEzIGxlZ2FjeS10cnVuaworMTg2NjYgNTQxNTgwNGZiMzQ1YzY5MjI0YmZmMTdmOTFmYWZkODViYmFjMzhkZSBsZWdhY3ktdHJ1bmsKKzE4NjY3IDNiOWI4ZjJkZGZlNzk2YmNkODczMDgwOTRlOTc4MmVkNGIzOGRhZDMgbGVnYWN5LXRydW5rCisxODY2OCAyMmZlZDJiMTVhNTRiMmI1YzFhNTY4NGFhZmFiNzVmNmUyMzViMmY1IGxlZ2FjeS10cnVuaworMTg2NjkgMzdkMTIwMjFkZjA1MTEzNDU5NzQxYjgyZjQ1MzNlYmRiNjgxMjRiNSBsZWdhY3ktdHJ1bmsKKzE4NjcwIGY5NzcyZjg3YjEzZTNkMGZjZTZkYTVmN2JhMjUwN2ZlZGQ2OGJiNjYgbGVnYWN5LXRydW5rCisxODY3MSA5NTQ2MTFmZDM1ZTFlOTQwZDQ2Y2YxMjZlYmMxYmE3MWE0ZjkzOGI5IGxlZ2FjeS10cnVuaworMTg2NzIgMWEwMGQyMTkxMGM4OWYxYjM4YjEyYTg2NTNjMWEyNjJkNmU1Nzk5YiBsZWdhY3ktdHJ1bmsKKzE4NjczIGE1NjNlZWM0NmMxYWJlOTFmNmExM2MwMGE2MTkwMDIzMTZjMTk2MjMgbGVnYWN5LXRydW5rCisxODY3NCAwNjQwMjZkYzc2NGU4OWU1MGU3YTgwYWE3YjFlZmRhZDQ4MzA1ZjA5IGxlZ2FjeS10cnVuaworMTg2NzUgZmFhZjlmMTBkODQ5NDM5ZTc5MTNjOWQ0NTI4NjBkMzQzYzMyNDdjMSBsZWdhY3ktdHJ1bmsKKzE4Njc2IDg2OGQyYWNmNzQ1ODA4YzkwMzNmNTdjZDU4MjlkOTdhNjllY2Y1NmUgbGVnYWN5LXRydW5rCisxODY3NyBjNjhiMDYyNDlkOGEyMTQ2N2E3YWU1M2M1ZjNiNmM0YmViYWQ5YTA0IGxlZ2FjeS10cnVuaworMTg2NzggNjQ1ZjhmZDZmYTlkY2M1OTk1MWNjMmQyOWQyNjk4MDUyODhmMDdlOCBsZWdhY3ktdHJ1bmsKKzE4Njc5IDJkMzk5MDY1NjI0ODAwNDE4MjYwZWY3ZjlkNDNiY2VjOTg1NTI2YzEgbGVnYWN5LXRydW5rCisxODY4MSA3OTc3MGNhMTVjNWE5ZjUyOTE0YjE2MmNiOTAxZTVlNGIzZWU3MGExIGxlZ2FjeS10cnVuaworMTg2ODIgMzNiNDQ0Y2JhZGI5OTJhN2U1NzI5MWJiOWU3NTM5MTNiODdhNmJlZCBsZWdhY3ktdHJ1bmsKKzE4NjgzIDBmMjJmZWI5Mzk3ZGI5YjFiODA3ZmNlNjA0ZDdmODZkOTRhMDY3OGUgbGVnYWN5LXRydW5rCisxODY4NCBjN2RmYmEwZGI4NzkwYjAwNGQxMWZiYzNiNWJhNTU3MWZiZDE2NWY2IGxlZ2FjeS10cnVuaworMTg2ODUgOTgyMTc3N2Y4ZGFkNmMwZjQ1ZjMyZGI4MzUzZWE5OTA3MWRjZmZmOCBsZWdhY3ktdHJ1bmsKKzE4Njg2IDdmN2VmOTQ0N2U1OWZjYTRiOGUyMGE1MmJkZDMxNTMzNTdkZmViMDQgbGVnYWN5LXRydW5rCisxODY4NyA0MzI4ZmZlNjQ3YmY3YmVhZmNjZGQ3NTU4MTM4ZWUyZDhiNzgzOTgzIGxlZ2FjeS10cnVuaworMTg2ODggMTc0NDkwZTkyNGQ0N2YxOTJiZDk4ZmE4ZGQyZWU1M2Q2OWY1MDdmMiBsZWdhY3ktdHJ1bmsKKzE4Njg5IDgxZGI5MmU4MGVhODg2M2RiOTk5ZmM5ZWVlYTM2NGZjZjcyNTU3ZjUgbGVnYWN5LXRydW5rCisxODY5MCAwNWFkMjk3ZTE0NGZlOTdkZTUyZWUwMmI3NTA0NDg4ODBjMTIwY2Q3IGxlZ2FjeS10cnVuaworMTg2OTEgOTMwOGRjOGM4NWUwMzVjNDQ0YjVkNGZhN2EyOTkxYjE3NDAxMzA3YiBsZWdhY3ktdHJ1bmsKKzE4NjkyIGUwMGY3MThlNGQ4YWIzOTVlNjgxOTRlM2RjY2UxNThlN2NjZmJkYTYgbGVnYWN5LXRydW5rCisxODY5MyA5YTIzODVlZTFkOTk0NDY0MDc2MTc4NTVjODRkNjI0ZWU2YmRkOTMyIGxlZ2FjeS10cnVuaworMTg2OTQgMGFlMzg5ZTkzNWZjNDE2ZWI4NzQzN2JjZDM1Y2UzOTE4ODE0OGMzYiBsZWdhY3ktdHJ1bmsKKzE4Njk1IDdlYTMwYTE2MzQ2MzZkOGZlYWMyZDY0ZThiYjU4YzNjZjljMmIxMWEgbGVnYWN5LXRydW5rCisxODY5NiA2ZTMyOWYzZTE3ZjBlNTM5YTYyOGQ4OGQzMDM1NmJhMWQ2ZjI4MTUzIGxlZ2FjeS10cnVuaworMTg2OTcgYjFiMGE3MDNlYzRlNmEzYjA2NzNkMTNkMmIzYmYxNTc0MGI2ZWI3MSBsZWdhY3ktdHJ1bmsKKzE4Njk4IDBlNGY0OGM1ZmM4NGQ4ODA2MDUzZDljNjg1NTM5MDg2MzQ3YmRiZGMgbGVnYWN5LXRydW5rCisxODY5OSBiYjMwM2E3NmE0NzgzN2NmMDQ3MjY2YmI0Njc5ZTdiNGNiNmQxNTU2IGxlZ2FjeS10cnVuaworMTg3MDAgNjdjOGFiZDIxMDI1YTU0MmZlYTc2MzZjYzgzYTE0ODhlNTcwNTc1NSBsZWdhY3ktdHJ1bmsKKzE4NzAxIDNiNjQzNjUzZTA3ODIwYmY1NzM1YjI2ZDU2YTY2MTc4NTNlYmQ4NzkgbGVnYWN5LXRydW5rCisxODcwMiA3ZDUwMjViYmEwMzdjNmM0ZmE1MTA5MWI5ODhlNTk1YTY1YTk1NTFiIGxlZ2FjeS10cnVuaworMTg3MDMgMTdlYmE3NDA0MDk5Y2U1M2QzZjU4NjIxNDFhZGJmZTI5M2UyZDFkZCBsZWdhY3ktdHJ1bmsKKzE4NzA0IGY2Y2QzNjQ5OGE1MDNmMzE2NTE2NzMxMmZkZDVhYzg2NmE4OGMyOTIgbGVnYWN5LXRydW5rCisxODcwNSA2MDFjNTNhOWU0OWRmMWZiMjBhOTJlOGY2NDFmMGM2ZDIyZTAzNzZkIGxlZ2FjeS10cnVuaworMTg3MDYgMjgzMzU2ZmI2ZWZjNzU5ZGFhNzlkNDUxNTcxODQ0ZDBlMjIyN2E2YSBsZWdhY3ktdHJ1bmsKKzE4NzA3IDIxMGJiZTUzYjZkNGFjNzhiZGViNDc0NzMzZDFhOTQ5M2JlNzA4ODMgbGVnYWN5LXRydW5rCisxODcwOCBkNDFmOWIwYTQwY2FhNjE0Nzg5NWVlNGNhMjU3NmEwZWZiODJiNTE3IGxlZ2FjeS10cnVuaworMTg3MDkgNjc5ZDUwNzA1ZTA2OTVlMTE2NmI0MzUyMTIwYmMxZWY0M2NhNzVjNCBsZWdhY3ktdHJ1bmsKKzE4NzEwIDQwNWE1OTczNTg0MTZkMDJhNDA5MDVkZjQ5MmNhZjZhNDliMDRlNjkgbGVnYWN5LXRydW5rCisxODcxMSAxN2QzYTYzZTIyYzc0MjgzOTBmODIyMTI1N2MyYjg3ZTNkZmVjOGIyIGxlZ2FjeS10cnVuaworMTg3MTIgYzcwNDIxNDMzOTlmMzE4NDRhMmQwYTIyNDIxNTMxMjAzZmNlNDA2ZiBsZWdhY3ktdHJ1bmsKKzE4NzEzIGEzYzFhMjM0Y2VlNzE4NDE0Y2MyN2M4Y2VlZDBlNjgwYmMzZGVkMTAgbGVnYWN5LXRydW5rCisxODcxNCAwZDhiNWIzZDlkODNkMDY2Y2VkNjgxYjk5ZTNhMmNmNjJlNmM3NjhlIGxlZ2FjeS10cnVuaworMTg3MTUgYTg0YjUzYmE5MGM0MWRiZWRjYTMzY2Y0MzYyMjdlZWViY2VhNmYwMiBsZWdhY3ktdHJ1bmsKKzE4NzE2IGZjNzY1NDY0YjE3ODAxMmM3Y2MyYWI5YjQyNDgxYjcxYmQwYmQ1OWMgbGVnYWN5LXRydW5rCisxODcxNyAxNTJkMDA3MTgwMDYwOWQ1MGIwY2E0ZTk2MmZlZTdhNzc4NTIzZDk1IGxlZ2FjeS10cnVuaworMTg3MTggOGM3MTQwOWFjMGMzOTRkMTk2NjU4Njk4ZTg5NTQxZGU1MjIxNWExMSBsZWdhY3ktdHJ1bmsKKzE4NzE5IDBhOGRhNmYzOTdiNzhmNTgxOGQ5MDc4Nzg0MTcwOWRlZThiMGRhOGEgbGVnYWN5LXRydW5rCisxODcyMCA4MWUzZDg2MjZhZGYwZjc5MDU3OWJhODk1MTEwNDI5MWFhZmVjMmFiIGxlZ2FjeS10cnVuaworMTg3MjEgMzE5NjdhMjMzNjAwOTJhNWM4N2Y4N2RiMDlmODQ4MmRiYzFiYWE0OCBsZWdhY3ktdHJ1bmsKKzE4NzIyIDA4M2E1Yzc1ZWQ5MDQ1MjIxM2I0ODQ2MDQ2MDg5NjJiOGQyMmMxYTkgbGVnYWN5LXRydW5rCisxODcyMyBlN2Y2ZDU0YzAxNGQzNDFlZTUzYTM3NWM5ZjVlN2FhMTIyOGMzN2RiIGxlZ2FjeS10cnVuaworMTg3MjQgZmMxZTU4MzFmZTEwNzdiNzgyMWVlM2Q1ZmZlMDU1OGY5NjY1YzZlZSBsZWdhY3ktdHJ1bmsKKzE4NzI1IDcxYjE5ZDM2YWFmYTkzZmViMDAzYzIxNDAyNzkwMmE3M2RiNzI1OWEgbGVnYWN5LXRydW5rCisxODcyNiAxYjAzZjc2YWIwM2VhNzQyNTVlYjc1NDUyYjk2YTQ5OTViOTRjOGVlIGxlZ2FjeS10cnVuaworMTg3MjcgNTU3OGU5YjQyNGQ0YWE4ZGRjZTU2ZWEwYWNmZDJkYzA0YmJmMzI0ZSBsZWdhY3ktdHJ1bmsKKzE4NzI4IDcwYTU5ZTNmYjI3OGJiNTIwZTk3MTM3YmNjZGM1NWE4ZDg4ZDY5ZmQgbGVnYWN5LXRydW5rCisxODcyOSBmNWEzZDk4YTM1YmM0YmRjNzRhODRmYmE2ZWVkODU5ZDBmMDdhZDI5IGxlZ2FjeS10cnVuaworMTg3MzAgMzA2MGNiZmEwMWJlNmRmYzZmZGI4OGYwZjVjMTBiNzNiYmZiZjA2ZCBsZWdhY3ktdHJ1bmsKKzE4NzMxIDFhNGMxYzBlMTRhMTNmNTk1MjY1YWI2NGNiMTRjYzQ5MTM4NjYxYTggbGVnYWN5LXRydW5rCisxODczMiAwMTBkMDM4NTM1NDY0NmYxNTcwMDUxZjE5MzZmNjUwNzQzMzFkZTBiIGxlZ2FjeS10cnVuaworMTg3MzMgNjJhZWVmYTAxZmRkNTU0ZTMwYjUwNWU1ZTAzNzc1NGRlNzFjNTRlNCBsZWdhY3ktdHJ1bmsKKzE4NzM0IDM2ODVlZjJhNTVhNDhlM2Q2YzAwYTkxOGViYWZmNzMwZjNiMjRkZjUgbGVnYWN5LXRydW5rCisxODczNSAzZGQyMTdmYmRkNTliMWVkMjY4MzcyMTg3ZGM4MWQ5ZjE1ODA5ZWFjIGxlZ2FjeS10cnVuaworMTg3MzYgNGMwMWVlMGE4MDczZjlkZTQ4ZDJjMGY1N2Q4YmFmOGY1ZDYzNzExMyBsZWdhY3ktdHJ1bmsKKzE4NzM3IDE5NTU1N2EwZjA1MGI4MTI3MmUyYTVhNjE1N2UxMDczNGE5MjIzYzcgbGVnYWN5LXRydW5rCisxODczOCBhMzNkZTIzYjMwNjZmYmNkYmIyN2U5MTZmNDJlODQwODg3ZWQ4M2FlIGxlZ2FjeS10cnVuaworMTg3MzkgOTNkMDU2N2M5ZmM5Y2IxZjE0ZTgzNzJmMTExZjNmNWNhOGQyM2U5YiBsZWdhY3ktdHJ1bmsKKzE4NzQwIDc1MTIxNWZhMGRhN2YzYzMxMjY3NDY1ZjRjZDA5Njc1ODFiMmEwMWQgbGVnYWN5LXRydW5rCisxODc0MSA5MDk5MmM4MmQ0NmU5ZmNmZmM0ZjVhZjQ2MDgxMTRjYmYwNDZmYjM5IGxlZ2FjeS10cnVuaworMTg3NDIgM2VhMTBlZTkxZTljNWU1ZDQ5OWI4NGIwMDk4ZDEyYTRkY2UzZWIxZiBsZWdhY3ktdHJ1bmsKKzE4NzQzIDQxNTQ2MzUzMjU1YzdmMGE5Yjg0MzQ1ZGYxMGE0MTI4YzVjNGYxN2QgbGVnYWN5LXRydW5rCisxODc0NCAxOTBkMTRiNzBjMjdiOGY1NTMyMGM1OTkyNDQxYjEwMWM0NDdlNzNmIGxlZ2FjeS10cnVuaworMTg3NDUgZjQ3ZDFjYmZiZTcwNjMyNGI5YTZlM2Q2OGYzZjUyMzlkMjBlZGRkNiBsZWdhY3ktdHJ1bmsKKzE4NzQ2IDdjZDQ2ZmY4OWJmYzNiMGVmZmUxOGM4OTU0YzZmYzk2YWZlZTI2ODkgbGVnYWN5LXRydW5rCisxODc0NyBlNmEwZmQ1NGI2MDcyZmE4NGEyOGVlNTY5MGEyODBhM2VlMmZiMzZlIGxlZ2FjeS10cnVuaworMTg3NDggYTcwMjVmMDcwOWM1Yjk5Zjk1MDhiODIyNmMxOTk5NTA2MTQ0YTVkMyBsZWdhY3ktdHJ1bmsKKzE4NzQ5IGY4MzExNWVkZjE2YWY2YWQ2YjQ3ZTg3ZjBmZWVjOTViYWM3YmM5YzMgbGVnYWN5LXRydW5rCisxODc1MCBiNTMyMDYyOTViZGZlZjc1NDI0Mjk1MmM0YWMyNGZkOTM5ODAyZDBmIGxlZ2FjeS10cnVuaworMTg3NTEgYjBiYTQ2YjE2ZTA3NTA5NGZiMDQ0Yzk1ZWI5MzdkNTQyYWE3MjRhZiBsZWdhY3ktdHJ1bmsKKzE4NzUyIDdjYmU0NWQ3OWFiNWMwYmQwNjIwNzIxMTZmMTdiMjJkNzk2ODczOTAgbGVnYWN5LXRydW5rCisxODc1MyAxOGM0YzdjYTkzZWEwNmExOWNiMzMxNzFhYmU2MWJmNWI1ODNjOGJhIGxlZ2FjeS10cnVuaworMTg3NTQgOGVmMzFhMDM5YTk2NDBhMDU3NTFhMTM2NjEyZWJlOThiNTk2NjczMyBsZWdhY3ktdHJ1bmsKKzE4NzU1IDU1M2EzMTVmNThlOTJmZDEzMmQxNGQ2ZWQ4ZDg3YjdjYzc1OGNjYTIgbGVnYWN5LXRydW5rCisxODc1NiAxYzZiMGQzYTU4ZWFkYjU1NjdmY2NkZGJkODYxZmM3ZDk0ODQ0YzQ1IGxlZ2FjeS10cnVuaworMTg3NTcgODc2NGRmZmJhZjIzNGUxOTY4N2YyMjlmYzgxZGE0M2I5ZDMzZTc3NCBsZWdhY3ktdHJ1bmsKKzE4NzU4IGM4N2UyYTJlMzM1ZDBhMjkwMjYyNWI1MmUxZGRmNGZjZjIxMTBmYmYgbGVnYWN5LXRydW5rCisxODc1OSBjNTY4YmE5ZGMxODBhMmNhMjMwOTI0ZjUxNGEwMTJkOTgzNjdkY2JjIGxlZ2FjeS10cnVuaworMTg3NjAgODM2NmZjZmI2MDkwNGNmYjVmYWY2ODNkNjI0MWM5NTI4YmQzM2FlYSBsZWdhY3ktdHJ1bmsKKzE4NzYxIDE1MjgxNGY2Y2QxMTMzZTdiMzJhMjc3NmFmYWU3MjRlMzM0ODgyMmQgbGVnYWN5LXRydW5rCisxODc2MiAxMTI5ZTE2YTExZGZiMzU3OTE3ZDVhNmE4YzFkMTQyOTE5NzExZTJlIGxlZ2FjeS10cnVuaworMTg3NjMgY2Q4M2Y3YTljZGNkMWYzMTU5ZTYzOTFiYTE2YzEwNmI2MGVjMGExYiBsZWdhY3ktdHJ1bmsKKzE4NzY0IGVlZjMyMWI2ZTQxY2U2NjNjNjg2YjdmYjYzOThmYTZmZDM4ZGU2ZTkgbGVnYWN5LXRydW5rCisxODc2NSBjOWRkYmUzNDA3ZmE0NDAwZGE5YWNjZmY0ZjA3ZTc1ZTI5YjM4ODFhIGxlZ2FjeS10cnVuaworMTg3NjYgMTQ5NDU4YTU3NDBhZjFmNTk2ZDVhZWI3OGI4YmZkMTg1YTIzZTZjNCBsZWdhY3ktdHJ1bmsKKzE4NzY3IDEzZTVlYjAwNmViMzIxYmJmZTQ5MzljMzJhNDE3NGJkZGFhYzUwYWYgbGVnYWN5LXRydW5rCisxODc2OCA1MDg5MGUzNDU0Yzk1MGE4OGViNDMxM2U1MDRiYTZhZThhMTA0M2JjIGxlZ2FjeS10cnVuaworMTg3NjkgMTMyNWJkZTk0ODk2ZGQ1ZGQzNmY4NTlmMTUxMTUyYzNmZDQyNDdhNyBsZWdhY3ktdHJ1bmsKKzE4NzcwIDk4ZTk1ZTBmNWJlYzc0NWU5ZTAxMDI3OWZlN2UwYWY5NjdiZTk1YmIgbGVnYWN5LXRydW5rCisxODc3MSA4ZGIzMTlkZGZiMzc5ZTdjZjZhNzc5ODIxNzMxMDg2OTE2ZWRlNTI5IGxlZ2FjeS10cnVuaworMTg3NzIgZjdmM2JlM2QwMGI5YzlkZWQ2YzRmYjYxMDM0ZDFlY2VlYzRiMmNhZCBsZWdhY3ktdHJ1bmsKKzE4NzczIGE4ZWRiM2Y3ZjRmODNiOTVhMDUzYmVkMDU0MTM1YzE5M2YwMWYwNmMgbGVnYWN5LXRydW5rCisxODc3NCBlODI0NjQ0MGE4MjVjOTRkZWE5YWQyNzlmZjZmNmJiYmQzMTQ4MzY2IGxlZ2FjeS10cnVuaworMTg3NzUgZDdkMTY2NTUwYzQzMzlmYWVmOThiYjIxOTdhYzIzZTg3YzA4NjJlYiBsZWdhY3ktdHJ1bmsKKzE4Nzc2IDg4YTEyNjdhMzM5NWVhZjEzM2UxOTg0OTE1YjAyZDZjZmVjODY3NDYgbGVnYWN5LXRydW5rCisxODc3NyAxODUxMWUxMTI4NzAwZDFlZDViOGQ2OTJlOWJmYWY4MmEwYmZlZDUzIGxlZ2FjeS10cnVuaworMTg3NzggYWU2MzZiOGFjNDgwOGRmNGJiYTljZmFiYjk0ODIxMTMzOTYzZmYwZSBsZWdhY3ktdHJ1bmsKKzE4Nzc5IGEzODE5MGY3MWJmMmI1ZjU3N2FiNTIzM2QwZmU1MjRlNTM4MWUzMzAgbGVnYWN5LXRydW5rCisxODc4MCBiYTZkNGI1MjE4MGE3N2ZmZGM2NjIxMzBlMmI1NjI4MjBhNzdhYmEwIGxlZ2FjeS10cnVuaworMTg3ODEgYmUyNTdhNzU1M2EyMjcxNjYzZmJkMTA1ZDNmMTY2NmQyZTQ5ZTA3NCBsZWdhY3ktdHJ1bmsKKzE4NzgyIDAwN2Y3ZmFmNjJiMjAzMThmMjdkYTBkYjFiNDg0MTk2ZDQzMzU0NWEgbGVnYWN5LXRydW5rCisxODc4MyA0ODk2OTJlNzkxNTE0MzIxNDE0ODBlMWNjMDRlZTg2MmYwMGQzNTc2IGxlZ2FjeS10cnVuaworMTg3ODQgZmRhOWY4NmRjNGU4NDQ1NWRiOTM5YjU2YjcwMTIwZGJjYzg0MThiYSBsZWdhY3ktdHJ1bmsKKzE4Nzg1IGZmNmMzMGU4Y2E3M2M4NjljZmJkMTJjNDQwZmM5MGRlOTBiNGZlNDMgbGVnYWN5LXRydW5rCisxODc4NiA3MDJlZDk5NjUyMjhiYjA3YjYwYTdmN2YwYTUwZTZhNjI2ZTMyNGFkIGxlZ2FjeS10cnVuaworMTg3ODcgOWQ1YmVlZDBiOTNmZGYzNWFjZjIxMTk1ZjU2YTliZjRkNGQzN2YyYiBsZWdhY3ktdHJ1bmsKKzE4Nzg4IGFjMTNjZWY0MjNjODMzZjVkMTI3OTcyMzIwMzE1MTM2OTQxNTI0NzggbGVnYWN5LXRydW5rCisxODc4OSBjOTU5ZjRiM2VmYTExYWU0OWEzMTc5NmI4YWRhZWUyYjI3MWVkODViIGxlZ2FjeS10cnVuaworMTg3OTAgMTg3MmU2MDlhNjM0YzAyYzE0M2IxODcwNzljNWI1MmM0NDNlMWNmYiBsZWdhY3ktdHJ1bmsKKzE4NzkxIGE0ODQ1OTNjZDQwN2UxYzY2MTU3NGEwNzFmYjFmZmExODY3NTNkODQgbGVnYWN5LXRydW5rCisxODc5MiAxNGEyN2FjYzc1NWFiNDM0MWZiNzdjYzhjNjZkOWVlNDIyNzEwYTBiIGxlZ2FjeS10cnVuaworMTg3OTMgZGMzYjlhNTgxNjg2Y2Q4YzRjNGE5MmRhYmIyMWE0NmUyNDg3Mjc0NSBsZWdhY3ktdHJ1bmsKKzE4Nzk0IDE4ODFiOTY4OTg5Yjg4ZGE3M2RiODQ2NTA1Mzc0NTUwNTZkNmRkMWQgbGVnYWN5LXRydW5rCisxODc5NSAzNWE0MTk0ZjllYWQ5Yjk2ZmM2M2Y1MjIwMWVlNzIyNTk5ZmE0MzM3IGxlZ2FjeS10cnVuaworMTg3OTYgYjFhNWVkYjgwZjVjZmNlY2I1YjMxNmJhMjYxNDExODcyMzliNGVjYiBsZWdhY3ktdHJ1bmsKKzE4Nzk3IDBiMGZjZTE0ZDRlODgyNmJmYzZiY2FiMzFkYzhiNzc0OTE1NzlmZWQgbGVnYWN5LXRydW5rCisxODc5OCBiZWMwZjYxY2ZjZDU2ZTA2MzRkYjdmN2UzMTQ5ODJhNDRkYzc4NjI4IGxlZ2FjeS10cnVuaworMTg3OTkgZDlkMGRjYjczNWQ3ZjdhYzQ1NzI3NWQxYzE1MDdhMDE0ZjhkNmZiYiBsZWdhY3ktdHJ1bmsKKzE4ODAwIDhmZDIyMWFlZDM1NzU5YmYwOWRlYjgzNjIwNDlhYjcyY2Y0YzA4MzcgbGVnYWN5LXRydW5rCisxODgwMSA4NjdhNGE2ZTdjZGE4NzdmODdiNmNlMDBkMzc1ZjgyOGM2YjQ5ZTFiIGxlZ2FjeS10cnVuaworMTg4MDIgZWE0NjRlZGE2MTU4NGI4OTg5NDIzMDU4NWQxYTM0NDQ2YjI3MzRhOCBsZWdhY3ktdHJ1bmsKKzE4ODAzIDVhYmFlNzk1NzQyZWE5NjkzN2RmZWIxYmVkMjZlODYzZDAwNTBlMzQgbGVnYWN5LXRydW5rCisxODgwNCA2NDM5MGNlYWFjMWFmOWNmOTY4ZmMwMGZlNDMxNjc1ZjU4ZDhmODU5IGxlZ2FjeS10cnVuaworMTg4MDUgNWIwNjNiYWViZWY4YzZkNTdjZDk0ZmRmMWUwNTBlMjA4ZWI1MjA4OSBsZWdhY3ktdHJ1bmsKKzE4ODA2IGY0NjRhMDNiZTg1YWU2ZDkxMmFhYmUwZDU1MzRmYTFhZjg2NzlmMWQgbGVnYWN5LXRydW5rCisxODgwNyAyZWRmNWVkMzA1ODM5YjFjY2YyNTQxMTczZTYxODQ4N2E0NDc0ZDBjIGxlZ2FjeS10cnVuaworMTg4MDggNGY2MjE3MDg1MTRiMWFhNWYyMWEwNjEzMTA0MTI1OWVmYmMwMDlkYyBsZWdhY3ktdHJ1bmsKKzE4ODA5IDZhODUyNDhiNDM5ZWFhM2Q5MDhlYzEzYzYyZTA5OGIwMmVhNmI1MzUgbGVnYWN5LXRydW5rCisxODgxMCAzYmMyNDQwNDI3ZDMzMWNmZDIxN2E5MGY2NWQ2MzZmZmU3MDQzOGIwIGxlZ2FjeS10cnVuaworMTg4MTEgNzZhZDJhOWEzZTUzNGUxYzA1NjRiNDYzMzUzMzlhZGY1YWRjMjBkNyBsZWdhY3ktdHJ1bmsKKzE4ODEyIGYyZTEzODk1YmRhN2RmNTE4MDc3MTZmZDBhZTAxY2QwZWE1YzA5YmIgbGVnYWN5LXRydW5rCisxODgxMyBkYjI2YjQzYzkyNGYzMGRjYTA3NGViZGI3MzUyNDUyNzUzMTE3ZTg2IGxlZ2FjeS10cnVuaworMTg4MTQgMWY5MmQ2M2IyMGYwMjMxMDdmYTU5ZWVmNDA3OTk3ODRlOGZmNjMyOSBsZWdhY3ktdHJ1bmsKKzE4ODE1IDgzNDliNGRmYzUxYWRlNjNkMjRmYzljMGIyNzFmMjFmZjE3Y2U1MzAgbGVnYWN5LXRydW5rCisxODgxNiAwMWVhZTQwODU3ZDgzZGJlNTlhZWY4MzlhODY4M2Y5ZWRmNGE2NzM4IGxlZ2FjeS10cnVuaworMTg4MTcgMjgzYTBiMmFhZGM1ZjJhYTk0YWJmM2ZhNmNjNjNiNzQ2ZWVlY2ZlMyBsZWdhY3ktdHJ1bmsKKzE4ODE4IDg1N2FhZDg0MmFlN2Q5OWQxMjgyZjMwZGZmMDhjZWFmY2MwOTgzM2IgbGVnYWN5LXRydW5rCisxODgxOSBjMWE4ZGViMTVmMGUwNjZlZTFhMTBhMTczNDI3NjA3MGEwYmYzMWNiIGxlZ2FjeS10cnVuaworMTg4MjAgYzgyMDU1NTJkZGUxZWI2OGRlMGM4YmI1ZjY1NmE5NDFhOTA5OGUwNiBsZWdhY3ktdHJ1bmsKKzE4ODIxIGZkYTNmZjE5ZDFjNGE5NjllYTY0ODU0ZWYyNDNkY2M1ZGI3YjMyMTEgbGVnYWN5LXRydW5rCisxODgyMiBkNzNiMjFkYWUyOWEyZWU4OTg5M2QwNGE5NjRmMzkyYWMwZWE0YWEwIGxlZ2FjeS10cnVuaworMTg4MjMgYzAwMDBiZDYyNTJjNjgwMzI1MDRkMTRmMjE0NzM1YTgxNjEwYmI1YiBsZWdhY3ktdHJ1bmsKKzE4ODI0IGYxNzUxYWJmNzcxZmZjNGFjYjYxMTk5NjMyYzJhMTk3NWVhOTQ1ZGQgbGVnYWN5LXRydW5rCisxODgyNSBjZjE3YTNjZTUzODc0M2VkMjNhZjMyYWU2ZDBjYWE1YTQ3MTVlZTU3IGxlZ2FjeS10cnVuaworMTg4MjYgZGM4YTMwYjg4ODdjODA3M2JlNWE3ZDIyZDllODNlNzhjNTUzYmU2NCBsZWdhY3ktdHJ1bmsKKzE4ODI3IDVhYmI0NzMwNGJjNzY4NWU2OTBjNWRlMDgyOWE1Zjk5Y2EyMzNkYzIgbGVnYWN5LXRydW5rCisxODgyOCBlNTliODM1YWQ4OWE1MmVjZjk3MWMyNGU1Y2MxZjI2NGRlOWIxYTg5IGxlZ2FjeS10cnVuaworMTg4MjkgZGNhZTNlMDhkODQ4NDg1NzNjMmYyYmM5NzQ0NGU3N2Q5YjNjN2Y0ZiBsZWdhY3ktdHJ1bmsKKzE4ODMwIDViYmE4NWQ0OWU1YWY4YjZjMjk0ZDRhYTE5ZmZiYTJhNzkxMDU4ZDkgbGVnYWN5LXRydW5rCisxODgzMSBlMjFkYTg0ZDBjNjVmMGExMDI0MjRlZDhkODY4Yzc3OTVkMTRkNGJmIGxlZ2FjeS10cnVuaworMTg4MzIgNzcwMDhmMDdjZTI1ZGFhMDNjNDcyODM3YTVhYWU2NzdhNGIxMzY2NyBsZWdhY3ktdHJ1bmsKKzE4ODMzIGZmOWM3OWJiYzNlZWQxYjIxNTZmN2EyZTc3N2I0ZGM0ZDYyMzcwMTYgbGVnYWN5LXRydW5rCisxODgzNCA4ODliN2JhZjhiYmI0YjNjOWRkMjAzNmRkNThkNGE5ZGE3ODQxNzYzIGxlZ2FjeS10cnVuaworMTg4MzUgNzIxMzkyNjNmOGE3OTc1MmQyMzFlOGQzOTljMDQ0NmFkNTAwOTkzNiBsZWdhY3ktdHJ1bmsKKzE4ODM2IDViOTEwM2U2MmZhYzNkYTRjZjI4MjVmOWMzYTdjNjNmYWVkZGM5MGIgbGVnYWN5LXRydW5rCisxODgzNyA1NDIwNTgyOGIxZTE3M2M2ZjkyZThmMmQ5YTMzNDFkYzgyNjBlZjJlIGxlZ2FjeS10cnVuaworMTg4MzggNTFmYzQ1Mjc2YTQzM2Q3YTA1YjUzMzdjZGJhNjc5YTllZDMwMmYyNiBsZWdhY3ktdHJ1bmsKKzE4ODM5IGYxNjU0NWY1ODM0NTYwOGI1YWRjZTg0MzczNDkwN2NjNDEwZjEyMzcgbGVnYWN5LXRydW5rCisxODg0MCAyNGRhZmJiMGRiNThmNjYyZTVlMGUzYjcyMTBhZmU4NzZhYjRjNGUxIGxlZ2FjeS10cnVuaworMTg4NDEgYTM2YTQ5MzJlMzk5MTM1YzE1NDA0ZDY1NzZhYjlmZmU1YjgyNWQ2YSBsZWdhY3ktdHJ1bmsKKzE4ODQyIGFmYWU0MDY4ZDJkZDk4ODI4ZjIzYzY0Mzk0NmQ1MmQyZGQwY2IyODQgbGVnYWN5LXRydW5rCisxODg0MyBkMWNiNDEzOGZkMzRhNGE5Njk3NTIwNzRiNzcwMjg1ZWFkYmNmNWNjIGxlZ2FjeS10cnVuaworMTg4NDQgOTEzMDRjNGM3MjU2ZjgzZDYwMjc1Y2EzOGNlNWE4NTg2NjAzMDViNiBsZWdhY3ktdHJ1bmsKKzE4ODQ1IDJiMjkzMTlhZTY4MTk0MDNlZjAzM2MxOGZjYjAxZmYzZGYzODBjN2MgbGVnYWN5LXRydW5rCisxODg0NiA2YzE3NTFmNmFmZTIzZTBkZWI0MzRiNDVhZmI0YjU0MDMyNzQ5ZGUyIGxlZ2FjeS10cnVuaworMTg4NDcgMTdmMjNmOGNkOGM3N2YyZDU5NThjNTMzYWZhODAyYzA0OGRiNjAwNCBsZWdhY3ktdHJ1bmsKKzE4ODQ4IGJkNWFlZTZiODM5MGQ0ZGIyMjBmMzkzYzcxYjI0MGRhM2JlY2ViOGQgbGVnYWN5LXRydW5rCisxODg0OSA1ZmI4NjUwNzUxOWMwOWQ5YWRlY2NjMWZhMmM1NTRlNjk0NzJmNjY4IGxlZ2FjeS10cnVuaworMTg4NTAgYWUyOWE4OWI3N2MzYTEyNjRkZTg1M2UyODc4M2M2Y2NiYTA3YmVmMCBsZWdhY3ktdHJ1bmsKKzE4ODUxIDFmMWVmZjA4MWEyYTc1MTJlODIyZDkwMDRlMzhmYjhhZjUwOWNmM2IgbGVnYWN5LXRydW5rCisxODg1MiAzZjRiNjAwMmMwN2QzMTNkYTYzNzNjOWI1Yjk3ZTFkYjZiMWJhZDYwIGxlZ2FjeS10cnVuaworMTg4NTMgNjIwODRjZDk1N2JkNmQ0ZDI0ODFmNTY3YWJmYWQ2ZDI0MTRkYzk4NiBsZWdhY3ktdHJ1bmsKKzE4ODU0IGFhY2JhMzc0NzZkNDI2ZWQyY2E2NWQyYjk4NmIyYTdiMDM4NTgyOTIgbGVnYWN5LXRydW5rCisxODg1NSBlYWUyNjExNzk4NmZhNGI4YjIyMjU4MTliNDVlNzVmOTEwNjA4NzE5IGxlZ2FjeS10cnVuaworMTg4NTYgZjlhMTVhNTgzYzc5ZDlhNjE5MDc1ZDIzYWY4ODYwZTU3Y2VmMzlkNCBsZWdhY3ktdHJ1bmsKKzE4ODU3IDg4MzI1YjczYTZhM2IxMjk2NmE4ZTNjZTg0NmY3MDg0YzNiOTRmNTQgbGVnYWN5LXRydW5rCisxODg1OCBjNTAzZmE5YjI2NWUyMmJlMmU1NWFkNGE1Y2RkMjllZTk3MTQwNjFkIGxlZ2FjeS10cnVuaworMTg4NTkgNjk2NWMyMDViNjAzNjRmZTg4ZmViOTUzNmE4ZWE4NDJkYjU4ODAxYyBsZWdhY3ktdHJ1bmsKKzE4ODYwIGYzOTBmNDNhYzRiNjQ5YTlhYTgzM2ZiZWEyYTJjNTliN2MwYjUxYzMgbGVnYWN5LXRydW5rCisxODg2MSAxZGMwMmIyMjk1YTk3NDY5NWVjNGE2ZDRhYzJkOTNkYjI4ZDJkOTE1IGxlZ2FjeS10cnVuaworMTg4NjIgM2Y2MWVmNzJhZWYzNTA2ZTI3YzRlZGEyMGIyNWUyYWNjNDRmYzY1MSBsZWdhY3ktdHJ1bmsKKzE4ODYzIGYzNzQwNjc0YWM1YmYzMjk5ZWZmOTU2YWU4ZmEyOTcxYTYyODcxNmEgbGVnYWN5LXRydW5rCisxODg2NCBlMWU3NmZlM2NiNTNiMTUyNWVjYjVjN2MwODRiYjdjYzlhOGQzMzVkIGxlZ2FjeS10cnVuaworMTg4NjUgZThlZTA3ODVjODQ2ODY4Y2RkZDQ4NzNjNjE1ZWQ3MDE5NGI2MzUwZiBsZWdhY3ktdHJ1bmsKKzE4ODY2IDkyNTFjZjcwZWQxZjhiNWVkNWIzYzAyYmNlMTcyMGQ5ZmUwZTU4NDIgbGVnYWN5LXRydW5rCisxODg2NyBjZWQ4MDQxZWI0ZWE3ZGE5NTU0NmJkNzQxMzk3MzZjMzRiZDg1ZmYwIGxlZ2FjeS10cnVuaworMTg4NjggNTE4MTFkNzhhOWRhYTY0ZmU1OWEzZmE1YTQ2YjZjMGYyNzc1ZTY2ZCBsZWdhY3ktdHJ1bmsKKzE4ODY5IDMyMzUyZTEyMGMzNzk0ODJjMTg4MTJkOWFmMjY0NTYxMDUxYmIxOTggbGVnYWN5LXRydW5rCisxODg3MCA0Yzg1NmExODA0NTg3YjA1MTc3MDU0OWI4ZjRkZWMwNDY1N2I4OTk1IGxlZ2FjeS10cnVuaworMTg4NzEgMmRmNDU3NGQ5MGZlNmQ4ODg0MGNlN2I4Y2I0MDY4ZTcwZmQzNWUzOCBsZWdhY3ktdHJ1bmsKKzE4ODcyIDMzZjVlZTZhMGViZTc0OWZmNDVkZjJlYmY4MDY5NDU2MjI2OTY4NzkgbGVnYWN5LXRydW5rCisxODg3MyBkOTBlZWFiNWY5YTQxOGVkZjgzMTMyODE0MTlmNzVhYzYzYWY3OTA2IGxlZ2FjeS10cnVuaworMTg4NzQgOGU0ZGZiNjgxNjg5YmEwYzNmNmVlNGQ5NzkxMzMxZjFhNTU5ZmFhMCBsZWdhY3ktdHJ1bmsKKzE4ODc1IDliYzc1NDQxM2E4YzJkYTNkYmQzMDVhY2I3ZmM0NWEwN2MyMTA0YmMgbGVnYWN5LXRydW5rCisxODg3NiA3NTRlY2QyMWZiZWY2NWUyZWUxNTQ5NjU3NWM0MmI5YWFhZWMyMWVjIGxlZ2FjeS10cnVuaworMTg4NzcgYzgzMmVmNzI0OTlkYjNiZDU1MjgxZGRiNjgxYzM0YWRjMTE0NmNhNiBsZWdhY3ktdHJ1bmsKKzE4ODc4IDhjYTZkOGNhZmNkMzc2NzRmMGMyZjE4ZjZhMWQ2NGQ3MGNmZDE4OWIgbGVnYWN5LXRydW5rCisxODg3OSA3MjM0ZDdjM2MyOWY5NzVjOTQwNDAzODI3YWUyMzhjODQwNzJhNDlmIGxlZ2FjeS10cnVuaworMTg4ODAgMjFlN2ExOGRlYmU2ODFiNTQ1M2ZiZGIwNjY2NTcxZTBlMjRjNzZlNiBsZWdhY3ktdHJ1bmsKKzE4ODgxIDQ2Zjc3MmM2YTIwMDNjZTkyMTJkN2JkNjUzMmIzYTI5ZDE4OTIyZmQgbGVnYWN5LXRydW5rCisxODg4MiA3YzEzYmM3YzQ4NWZhN2UxYTQ2ZjdlMzBjNjk3ZWM3MTY1NDAzNjgyIGxlZ2FjeS10cnVuaworMTg4ODMgY2ZhYzIyNDVhMmM3MmUxMWYwMDlhMzQzMTc2ZWEzODFiYWM2OTdjZCBsZWdhY3ktdHJ1bmsKKzE4ODg0IGQ3ZjUzZjEyZGJlZTFmZjkxZjdkZjc2YWNjY2YzZmU5NmY2YThjYWYgbGVnYWN5LXRydW5rCisxODg4NSBjZTBlNDFjZTc4N2ZmZjkzZDUwZTY1MzVlMGVmNGJiMTBhOTE4NzljIGxlZ2FjeS10cnVuaworMTg4ODYgMGY4MTI3MzY2YTNmN2JlMjcxNzQ1ZTUwNzI0ZmQ2ZWJhOWRkMTU4MSBsZWdhY3ktdHJ1bmsKKzE4ODg3IDVkYzE3NzNjN2Y3Yzk3ZTA3ZTgyODNmN2Q5NTIzZjJjNjYyZWU2YzggbGVnYWN5LXRydW5rCisxODg4OCA4NjUyNjYwMTFkZmE5MmEyYjFhMDBjMWVhOTYzNDM2NTRlMmYyNWFlIGxlZ2FjeS10cnVuaworMTg4ODkgNTk4OGY3NjQ4MGQ2ZDlmYTg3NDBhYWYxZDEwZGY2YjlhNjk0MDM2OCBsZWdhY3ktdHJ1bmsKKzE4ODkwIDgzZDMzZjdlOWZkNDU3NDc4OGViNzZhOTc3OGZmNTliZDFjOGRhMDIgbGVnYWN5LXRydW5rCisxODg5MSA1NWQ4OWE4ZmU5NjNmZWIxN2IxMWMzNWUzOTAxMDlkZjAzZTllYTE3IGxlZ2FjeS10cnVuaworMTg4OTIgOGJhODkwOWZiODIzMDRlY2M5N2U5NmNkN2QyZmQyN2I5MTc4MGE5ZCBsZWdhY3ktdHJ1bmsKKzE4ODkzIDFiZjVkOGI0Y2ViZTg4ZWQwOTJmMTQ5NzlkZGUyYTM5NTI0MzYwYTAgbGVnYWN5LXRydW5rCisxODg5NCA1YmE0NTkxNmFmYzdmMDc1YjJlOGEzMWFiZDBjNTMyY2ZjN2Q4ZDQ2IGxlZ2FjeS10cnVuaworMTg4OTUgNzYxNTUxMTIxODdlMGFkZGIxNWYzNWZmMDFhNzkxMjliMjc1MTBhZCBsZWdhY3ktdHJ1bmsKKzE4ODk2IDE5ZWVlMmRiMmIxNmNiNTg0OTk0M2NiMmUxNmQzZDgxZjI3OTY3ODcgbGVnYWN5LXRydW5rCisxODg5NyAxMTQ0YWZiOTQwMTljZGEwOWZhOTI1YjU0Yzk5OTI3MmE5MmY3ZTY1IGxlZ2FjeS10cnVuaworMTg4OTggNzNjNDFiNDlhOWI4MGVmZWQ0OGNkMWUyZDg4NGU5MWNlNjBlMzM5YyBsZWdhY3ktdHJ1bmsKKzE4ODk5IGJhMjk1ZTJjNzNlYTYwOGJkZTFkOGU1N2QyYzlkNTBkZGEyOGQ1ZTkgbGVnYWN5LXRydW5rCisxODkwMCBiNjg2M2JhODg5ODk2MmQ1OWM5ZDg2YmM2ZTlhZGYyN2ViOWFjNGIxIGxlZ2FjeS10cnVuaworMTg5MDEgNGE2NjU4ZTE4ZjM2ZjEwMGM2OTRjMWU3ZGU3ZmE2ODg5OWVlYzIyNiBsZWdhY3ktdHJ1bmsKKzE4OTAyIDYzYTBhNmQxOGE2MDQyNTY4NDhiNTU4ZGJhNWM1MzRjYTMwYzM0NGEgbGVnYWN5LXRydW5rCisxODkwMyAzMGUzMWMyYWI2MGZhNTliYjgzMGIwZGQ3ZjQ4NzcyMjJiZDc3ODZmIGxlZ2FjeS10cnVuaworMTg5MDQgNzhiZDk3ZDg0MTNjY2Y3YmY3YjQ0M2YxNWU2MGQ0MzMzMzk4MjUxMiBsZWdhY3ktdHJ1bmsKKzE4OTA1IDhiYWMwNjU5MzkzZWJkZmZkZTQ3NjZiODUzNzhlM2FmNDUzYmY3MTggbGVnYWN5LXRydW5rCisxODkwNiAzNWRmZjQ3MTJjOGU2MjVhNmRkMTY0OTM0NGY3MDllMjZlZTg0YTJmIGxlZ2FjeS10cnVuaworMTg5MDcgM2E1NmY2NTA5OWFhNzhkZGM4NDJlYjBkMjNmZDdkOTMwYzUwZDliMiBsZWdhY3ktdHJ1bmsKKzE4OTA4IDc5MzdiY2JiZGQyNGEwOGQ4ZmE2NDdlYjI0NjMzMGRmZWUyMjBiMmUgbGVnYWN5LXRydW5rCisxODkwOSBlNTBjZmE1NDc1ZjM0MjA3Y2UxOTFmNzFhN2RlYTFkMDY1ZjUzNmMwIGxlZ2FjeS10cnVuaworMTg5MTAgNzBiYjExMTkwNDRhY2VlZWIzMDdkNTllNWJlMTIxNzNlMzljOTRjYiBsZWdhY3ktdHJ1bmsKKzE4OTExIGJiODA1Y2NlYjQwMzAwYTg0MDNlNTczMmIzNzMzYWQyYjg0ZWIyMWQgbGVnYWN5LXRydW5rCisxODkxMiBlNjJkNWFmZjBjM2FmMWQyNDQ2NTM4ZDhlOTE5ZWI2YjU1Njc0MjQyIGxlZ2FjeS10cnVuaworMTg5MTMgNDc5OGRjNzM5YzE5YTM5ZjY0MTFiYzlmYzdlMWNlNmI4MDBkMmJmNiBsZWdhY3ktdHJ1bmsKKzE4OTE0IDc1YTIxYzIzMGEyNjgxOWYxZTc3NzhhZDhlM2YxMjk4OWY3ZWM4MDggbGVnYWN5LXRydW5rCisxODkxNSBhY2EwNWQ3NWQyMzJmMTAwZDk2ODAyYTJhZDFiMmRhNGQ5YjdmN2VjIGxlZ2FjeS10cnVuaworMTg5MTYgNGNjOWExZWJlYTYyOGVkMTg0NmQyNDc5OTg5MGIxMzhiZGI2ZTgyOCBsZWdhY3ktdHJ1bmsKKzE4OTE3IDY0ZmFiMDA0N2ExNDI5MmE3MjBhOTZmYTc1ZTQ0Y2VhODMyMTU3ZGMgbGVnYWN5LXRydW5rCisxODkxOCA4ODNjN2Y2MTU3ODkwOTljNjRlNTdiZmMxNTA1MmQ0NDUwMTFmOTU2IGxlZ2FjeS10cnVuaworMTg5MTkgZTMyNTllNGJlYzYwNjM5MmQ3NDAzNDYwMzZiZGVhMWEwOGQ0OTNkZiBsZWdhY3ktdHJ1bmsKKzE4OTIwIDRjNDBlOWQ3NGM1YWE1ZDIwNDViODA5NTI3MjZhM2FhN2E5NGQyMmYgbGVnYWN5LXRydW5rCisxODkyMSA1NjRiYzI0MmZmMGYwODNlYjJiNmJjNzA1MDY3ZWYzNWEwNzg0ODNkIGxlZ2FjeS10cnVuaworMTg5MjIgNTk2ZWRmODEyOWEwNzgwZDU2ODZiNDM0MGJlNWNiODkxYTBlNjY2OSBsZWdhY3ktdHJ1bmsKKzE4OTIzIDZiNjQ3YTVkNWI3ZTM5MWVlOTJiMTdjZjAzZWIzMTFhOWJkNGZiOTkgbGVnYWN5LXRydW5rCisxODkyNCBhZmM2ZjExMzdlYTQ3YzkyNDI3MDY0N2RiNjgyNDIzODU2NTZhZTk0IGxlZ2FjeS10cnVuaworMTg5MjUgODEyODVmNTQ1ZDU0Njk2OGFhMWUzM2M5MjA3OWQyZTVkZTIyNjIwYyBsZWdhY3ktdHJ1bmsKKzE4OTI2IGE5N2FhOTIzODc3MTEzYzE2NTYxZDU4NjcyMDRiMmM0MTVlZjUwNmMgbGVnYWN5LXRydW5rCisxODkyNyBjMjlkYTJjMTQ0MTdkOGUwNjllZTNlNTU3NzU2Y2FlMDc2MGFhOGZkIGxlZ2FjeS10cnVuaworMTg5MjggZDliNjlkNzgwYTE2MGIwNTJjNWJhYzhiM2FkM2RlNGQzMmU3OWJmZSBsZWdhY3ktdHJ1bmsKKzE4OTI5IGZlMzZhYjRiM2U5NzMyNTQzYWQyNmZjZjE4MTlmZjQyNTViMDVhNWUgbGVnYWN5LXRydW5rCisxODkzMCA0ZGI2NjQzODk0MTUyMDJkYjlhOTFhZTFiZGJmNmRkNzAwM2Q5NWEwIGxlZ2FjeS10cnVuaworMTg5MzEgNjhhODAzYjRkNjE4MmFiNGM3MmE1ZTBhMmZkMTBjNTY1MTc1NjJiMSBsZWdhY3ktdHJ1bmsKKzE4OTMyIGI1MzQ1ZTk5NTk2YmVhOTg0NGI3MDU3ZTI1MTBkMTM1NTgzZjNiYTggbGVnYWN5LXRydW5rCisxODkzMyBhZjdkNzkxNGZiZjk5YmNiMjQzY2FjMTdkZjIxYmMyZDkyMzM5YWNhIGxlZ2FjeS10cnVuaworMTg5MzQgYmFlODg5ZjQ0Y2QxZmRkZDIyNTE4NmRlOTJiYjlmMTFlYTk0ZTc2NCBsZWdhY3ktdHJ1bmsKKzE4OTM1IDcxM2VkNmM2YmNiNTM0ZmQzZjBlNTQwOGEzZmQ4MThjYzMyNzMzNWQgbGVnYWN5LXRydW5rCisxODkzNiA3ZTU1ZmE5M2Y0ZGJjMjg3OTBlNGFjMDMwZDY2OWM0YjRmYmEwMzdmIGxlZ2FjeS10cnVuaworMTg5MzcgNTBiYmU4MTFiMzQ0YzkwNjUyNWZjNGFmZDBjMTA5MjZhYTk1NzhkOCBsZWdhY3ktdHJ1bmsKKzE4OTM4IGVhYmQwMDhiMzZlZTdmZWNhN2UyYmU4NjQ4NmZkZjNhOWVjMTYxNzYgbGVnYWN5LXRydW5rCisxODkzOSAyZDNlNjAxNzlkN2FmZWFkNzE2MGU0Y2MwMzcwYmU2NWQ5OGIzODRiIGxlZ2FjeS10cnVuaworMTg5NDAgOTFhNjNkZjdlZWU0MThkMTg3MTZiODUxZDVjYzUxOThiMTQ0NjllNSBsZWdhY3ktdHJ1bmsKKzE4OTQxIGM0MzU1OTA1YjA0NGRlMTBkNTI5OGM4OTViOGZjNGU2NGNiNzcxY2IgbGVnYWN5LXRydW5rCisxODk0MiA5M2Y4MzY0MzJjMmJkMmEwMjhkMTIzYTU5ZDU2OGEzMzk5YWQzNWMwIGxlZ2FjeS10cnVuaworMTg5NDMgMWI2ZTQ1N2QwM2FiNmNiNWUzMjgzZWYyNjRhODA4Nzk1MDlmMzcyMSBsZWdhY3ktdHJ1bmsKKzE4OTQ0IGUyYjJiMDQzYWI0ZWY5NzU1MTE3YmFkNTI5NmNjMGE4ZjZmZjU5YWUgbGVnYWN5LXRydW5rCisxODk0NSBhYmZiMTFmOGUwNTFhMDEzYzM4MjJiYjljNDVmNGYzNmU1YzJkMmIyIGxlZ2FjeS10cnVuaworMTg5NDYgNGMzMDdhMTJkY2I5NzZhNDcxNjY2YTY1MzE1OGU3NzgwZmUyY2Q0OCBsZWdhY3ktdHJ1bmsKKzE4OTQ3IGQ1NmI0OTI2NTMxMGZlYTRkYTY1NTEwNzI0MGJjMDc5NTc4Y2RjNzIgbGVnYWN5LXRydW5rCisxODk0OCA0ODFjM2Q1MGE0ZTU1NTdjNWI1YzcxNWNlYTQ4ZjY4NTVlMjdlODIyIGxlZ2FjeS10cnVuaworMTg5NDkgMjYzMDM1YmVhM2FmMjEwZTI0NDg5ODljNzQyMzA0NGIwZjI5OTQ5YSBsZWdhY3ktdHJ1bmsKKzE4OTUwIGRiYTgzODA5YTc3NTA3NzEzMDIzNDE3ZTI0YTFmZTU2YzEzOTNlMjYgbGVnYWN5LXRydW5rCisxODk1MSA2ZTE0M2FmODQ5MjdhODZhMTU4YjVkMzE0NTE0MGYyOTA4ZGVmYWUzIGxlZ2FjeS10cnVuaworMTg5NTIgOGFjNDBkNDhhNTgxNGJmOTcxYmFmZTAxMTEwMDMzMDNiZjVmNDMzZCBsZWdhY3ktdHJ1bmsKKzE4OTUzIDQ1YzA2NTY2OGVhNWM4Zjk5YzEyODFiNzZkZmE0ZWM3YzU1ODgxNDcgbGVnYWN5LXRydW5rCisxODk1NCBmM2Y2Yjc1OThiYzVhMDUyMzYyNDY3ZjkxM2MyM2ExNDZmYjhjYjY3IGxlZ2FjeS10cnVuaworMTg5NTUgMGMxYWNjMTU0NTVmMGI0YjBlMjkzY2UxMGRlZTgwMzllN2NhYzg2NyBsZWdhY3ktdHJ1bmsKKzE4OTU2IGNhNDZkMzQ1NDI2OWU2OWQ3YWFhNWE5MzBlZDVhMWE2YzVmNmVjNDIgbGVnYWN5LXRydW5rCisxODk1NyBhYjAyZjE3NDFhMjhjN2NjMTcwN2NkZTE2MDdhZTA4NjkyMjQwYzg2IGxlZ2FjeS10cnVuaworMTg5NTggZmI2NzEyMmU1YzFlZGJhZTdiNTExZjczNmYwOTYyNjJiM2NkOWIwZiBsZWdhY3ktdHJ1bmsKKzE4OTU5IGUzNTM2YWE3YWU0YWM0YTRhMWE1ZTFhMzZjYzYwZTgwYWRhZWM2ZGUgbGVnYWN5LXRydW5rCisxODk2MCBmYjc2N2E0NDk2MWU3MTkyNTk3OWEzYTNmYjI4OTY5ZWY5ZjM5MzFjIGxlZ2FjeS10cnVuaworMTg5NjEgOTY3YWJiZWNjNDA0MWEyMmUxMTMyNjQyM2Q5MWRjMTY3OGY0ZTdhYSBsZWdhY3ktdHJ1bmsKKzE4OTYyIGFlMjk2MjI5ZjQyNjk1N2U2OGI1ZDQ0Yzk4NDE5MTRjMGIwOGJjZTYgbGVnYWN5LXRydW5rCisxODk2MyAzZmNkN2Y0NjVmMzQ5ZmNiOGY2MzI1YmYwYWRhODBlMWZmMDljM2JkIGxlZ2FjeS10cnVuaworMTg5NjQgN2NiOTQwYzE1NjQ1MWVlM2U1MGUyNjVhNmVlMWUyMGE5MDc1YzdiMyBsZWdhY3ktdHJ1bmsKKzE4OTY1IGUwNDE4YjFmNWNiN2NiMTcwZDIyNTlmN2ZhNTgwN2U3M2M0NDcxZDcgbGVnYWN5LXRydW5rCisxODk2NiBiYWU5YWJhZGVlMjJhNDg4MzgwN2RiNmExZjZkY2E4MjNiNGEyNTRkIGxlZ2FjeS10cnVuaworMTg5NjcgZDY5NTcxYmY3ODQyNjdiZGVkNzQ0Zjg3ZTRiODZlYzAzMmY1MmJlYiBsZWdhY3ktdHJ1bmsKKzE4OTY4IDI4YzQxNGRjYjNlMThlNTQzZjAwMDkxNjQ4MmRhOTQ2N2IwMTU1ZTUgbGVnYWN5LXRydW5rCisxODk2OSBkYzFjNTc3MTRiM2RkNGYyNDNmNjBjZmZkMTQ1MmE3MGFmNTNiMjRjIGxlZ2FjeS10cnVuaworMTg5NzAgMjhkOGNjYmUyMzdmNjgzZDIxNTE5NjgxYTNkNTAxY2QyOTJhYmU4NyBsZWdhY3ktdHJ1bmsKKzE4OTcxIDRkNDUxYzkyYmM1MGIyZDY0NDVhOWY2MThlY2MxYWQwYmI5NjVjOTEgbGVnYWN5LXRydW5rCisxODk3MiAxNDBkNDVhYTA5ZGMwOWQ2MDFlNzk0Y2M2Mjk1MDE1ODlmMGM1ZjhjIGxlZ2FjeS10cnVuaworMTg5NzMgZTA4MjRiMzU0NGZiZWU4MWIyNjM3NzFkY2ZiYmNlNDA1OWViMjE0YSBsZWdhY3ktdHJ1bmsKKzE4OTc0IGEwNTlkMTM2MDVhMGUxNzk5YTJjNDA5MDI3YWQ3OWY4MTJhMWE4MzEgbGVnYWN5LXRydW5rCisxODk3NSA3MDY2NmIyN2MxYjFhY2RkNzEyZjNmYWFlNzFhNWRiMDhjN2VhNTU4IGxlZ2FjeS10cnVuaworMTg5NzYgNDRmZDFhN2NiMjc5MzlhZjFkZWE0ZjQ4NDdiMTg3MGVmOTJmZTNiMCBsZWdhY3ktdHJ1bmsKKzE4OTc3IDNlMTM1MjRlZDg2Y2MwZWMzNGZhNTE5ZDdjNDA2YjlhNjlmOTM0MzggbGVnYWN5LXRydW5rCisxODk3OCA2MGZhYzYyZjZjMTVlYTA2MDA4NmNlNGFlYjM3NThiMzJhMGRjZTVmIGxlZ2FjeS10cnVuaworMTg5NzkgOGUwMTJhZTlhMDQyMzI3YTdkNTFmOTlhODBlZTVkYTA1M2EwYTYxZCBsZWdhY3ktdHJ1bmsKKzE4OTgwIDY0NTQ1Yzk4NmI5OGIyNmYwZDQyMjhlMDgzMjYxNmU2ZDZmNzg5ODYgbGVnYWN5LXRydW5rCisxODk4MSA5MmIyMTRiYjQyODg0ODU4NDE2ZDVkOTBkZGNjZjYzOGY1MTRlY2I1IGxlZ2FjeS10cnVuaworMTg5ODIgZTA1MjNhNDJjNzhjYWU5MmVhYWU4NjcwMTUzNTEwOGI1NWEwODdjZCBsZWdhY3ktdHJ1bmsKKzE4OTgzIGY2ZDhhMTM5MjlkNzI3MDUyNDQ1MTYzMmZmNzY5YjYwNjc5Y2M0YjkgbGVnYWN5LXRydW5rCisxODk4NCAyMzljNzM3MmMzZDM3ZjhjZTRiNjQ5MWI0Yzk2NTkxMmE1ZDJlNjYzIGxlZ2FjeS10cnVuaworMTg5ODUgZjk5N2RlZDRlMjE5ZjMwYWRiMGI4OTQ0YmE2YjMwYTUyZjc0ZDJhNCBsZWdhY3ktdHJ1bmsKKzE4OTg2IDQ1NDBlNDE4YjgzYWI0ZjEwODUxNjNhZTFjMDE2MzliODk0ZGZkZWMgbGVnYWN5LXRydW5rCisxODk4NyA1NDhlN2E1NDI5MTg1ZmYwYWVkZGFkY2ZiZjNkNTc0MDJjM2RhZGUwIGxlZ2FjeS10cnVuaworMTg5ODggZmJmMDdlMWYzY2EwNzFkOTI3MGU3MTJiNDMyZjdkMmUwMjFlNzhjZSBsZWdhY3ktdHJ1bmsKKzE4OTg5IDZmMWZkODUwMDM5OGNhOTFkOWZkOTZkNWE5OTk4NmIwMzEzNGU5YzEgbGVnYWN5LXRydW5rCisxODk5MCBkMDg2NDkwMmM4YzdkODk5NGZlZjRlOTUxMDFkMDQzYTJkNDIzOTliIGxlZ2FjeS10cnVuaworMTg5OTEgNTYzNjhkMzUwOGRlNTYwMjQ0NDkwZjg4NTU4MTU3MDNkZTIyMjU4ZCBsZWdhY3ktdHJ1bmsKKzE4OTkyIGE5ZTNhNTI4MTVlMmJiM2UwZWJlN2JmNWNhMTg2YTU2OTUyNWZkODggbGVnYWN5LXRydW5rCisxODk5MyBhYTAzYzIwZTg5YjdhZWY5MmQ4NWIzYjYxZmQ2Y2NmNGRkMWJlYjlmIGxlZ2FjeS10cnVuaworMTg5OTQgOGY2NTUyYzcwMzBkMDU0ZmEwZWFjOGRkYjI0NTZhOTVkNTE4NjJlMSBsZWdhY3ktdHJ1bmsKKzE4OTk1IGQ0ODAxOGIzM2UzNTdmNDlmZGFiYTAwNjFiOWMzYjI3NDM1YjQ0ZWUgbGVnYWN5LXRydW5rCisxODk5NiBhMDZiNzNhZDM3MWVhNzc2MGY1YzQzM2MzNzJlZTM0OTU0NWMyNDBkIGxlZ2FjeS10cnVuaworMTg5OTcgNTEzZTU5YjNiOWE5MGI0MjUwZjZmZjI4Y2Y0ZjNhZTY3OTcyNDMzZSBsZWdhY3ktdHJ1bmsKKzE4OTk4IGZhOWVmMGUyZGMwN2RhZGUzZTc1YTJlNzNhM2YwZDAwMDMwNzJmZjggbGVnYWN5LXRydW5rCisxODk5OSA4ODNjYjBlMzFiYjJiM2Y1M2EyZGE4MjU5NzU1ZjMyNjgwYmRjMWJiIGxlZ2FjeS10cnVuaworMTkwMDAgNDliN2MxYmM2MDA0MjkzYmUyMmU0YTBhMGNiMjg3OTg5N2ZmNGJhMyBsZWdhY3ktdHJ1bmsKKzE5MDAxIGQ5NmNlOTcwOGMwMDdjN2RkMjhmMGZlZDk1ZmM0MzIzZjQzMjYxYzcgbGVnYWN5LXRydW5rCisxOTAwMiAzOGRjZWMwNjYxN2JkZmExZjUyYjhhYjAyOGFiYWY3NDA1YmRlMTU5IGxlZ2FjeS10cnVuaworMTkwMDMgMDU4YmQxYmZmMDA4MGU1OWIwMmM1MWE1MGUwNzFlOTdjYTc2ZDU4ZSBsZWdhY3ktdHJ1bmsKKzE5MDA0IDQ5Zjk0YTJiMWRkNDBjZjkxNDg4NDAzOTFkZGRhYWMxMTBjZTQwNzQgbGVnYWN5LXRydW5rCisxOTAwNSA2YWE5NzJkZjgwZDU3NjJjZjI0N2EwMDIzZGZjMzgzZTYxYzVmMjAzIGxlZ2FjeS10cnVuaworMTkwMDYgZDEyYmRlNGIyYWU5MmNkMWVmZGQ5YzcxMzM4YzBkZjE4ZjhjYjllZiBsZWdhY3ktdHJ1bmsKKzE5MDA3IDI2ZTgzMWJiMGQ2ZWM2ODhjNTBhOWQ0NGQyNDE3YTBhYjU2OTQ2YTYgbGVnYWN5LXRydW5rCisxOTAwOCBjZDlkZGRkODk3YTk1NTNlMmY4NmIyMmU5MDVkMzdiMzJiM2VjOWI3IGxlZ2FjeS10cnVuaworMTkwMDkgZmJmOGFiZWM5M2QxOWZjMDM0N2FlN2NkYTAzZTJkMWEyMWEwMjVjZSBsZWdhY3ktdHJ1bmsKKzE5MDA5IGI2MDgzMWVlYWI1YTA2ZGQzYzVlODI5N2E5OWUzOTI5N2FhODc5NGIgbGVnYWN5LXRydW5rCisxOTAxMSA3ZDc2NWMxZDQ5ZTJmMzE1N2E2ZjE4OWNjNTc4NGQzNjU1OTg1ZDkwIGxlZ2FjeS10cnVuaworMTkwMTIgY2EwNTU2MDZiM2ExMWMxNzViMzRmOWU2ZjgzMzg4ZjY4MTg4Mzk5MCBsZWdhY3ktdHJ1bmsKKzE5MDEzIDQ5NTFmNWM0ODEwNWJiZGRmNzI4MzRlZWUwYzdiZWM3M2FhYTJlNmQgbGVnYWN5LXRydW5rCisxOTAxNCA4NWUzNWU2OGUzZGIwNTc4OTZlNDZkZDBiMmVlNWJmZTI4OGU1ZWFhIGxlZ2FjeS10cnVuaworMTkwMTUgZGY3YmZiMzRiMmEyZThkZDY4OGYxMzFjMTEwYzBiNTg2M2M0MGUzZCBsZWdhY3ktdHJ1bmsKKzE5MDE2IDNlZTU1ODYzNDE2NGRhZjQ5OWY3NzY1NzAzNWFkODRkNGU2MWZmODIgbGVnYWN5LXRydW5rCisxOTAxNyBiMmM4Nzk1YTM0NDg5ZWIyMmY2NjhjZGE2ZWY2ODM3N2Y5M2NhNDNiIGxlZ2FjeS10cnVuaworMTkwMTggODNjMWYxNDY4MmEyNTYxYWQ3YzRmNWU3MmI3ZGZiNmM2ZDU1N2IwZiBsZWdhY3ktdHJ1bmsKKzE5MDE5IDYyYmY3Mzk5OGNkYjIxYjQ5NGMzNmUxMjg5ZWRkNjBmZDk0ODU0MWMgbGVnYWN5LXRydW5rCisxOTAyMCA2Mzk2Y2M2YjFmN2ExMjdlZDIxN2E5MTMzYmY4NDRiYTk1ZWNkMmQzIGxlZ2FjeS10cnVuaworMTkwMjEgNjgwZDZhNTBjMmU4NDRmMTE4OGE4Y2ZhYzYxY2VkMTdiYzVmZjhkYSBsZWdhY3ktdHJ1bmsKKzE5MDIyIDQ2OTIwYjYwY2QzMzQzZjI2MzM1NTQ5NDRhNzc4OGQ0MGZiMTNjNWMgbGVnYWN5LXRydW5rCisxOTAyMyBjMGRlNzEwZjMxYzAzZjgwMTk0NTVlMWRjYTM0MzI4MzhkYzc5MTBjIGxlZ2FjeS10cnVuaworMTkwMjQgZmQyNzgwMzFmNDQ5Y2I4NTE3NDRmZGJjNDQ3NTY1MDc1MmQwMmU2YyBsZWdhY3ktdHJ1bmsKKzE5MDI1IDVmNDBmZGJkZDAyYzQxOGQxYWUzZTFjMmJkOGFlMjRkMGFhMGQ3ZTIgbGVnYWN5LXRydW5rCisxOTAyNiAyMjA4YTAzZDA1YTNhZGQxZjMyYzU5NjBhMTAzMmQ3MDYzMDg5MWI2IGxlZ2FjeS10cnVuaworMTkwMjcgMGE3MjA3MGVhYjZlYmE2MzBjNDg4ZGM3NDZmMzg1OWMzMTQwYjI4MiBsZWdhY3ktdHJ1bmsKKzE5MDI4IDEwNjQ2ZDA5MmE1MmZiMmQzNjMzZmZlMmRkMGIxODJmNWI0Njc5YzMgbGVnYWN5LXRydW5rCisxOTAyOSA3MWNlYWJhM2Y2MTUxYjQ0ZjllN2NiODA4YjA0NjY3Y2YyZDM2MjEzIGxlZ2FjeS10cnVuaworMTkwMzAgYTBlNTIwMzhjYzRlMWM4MTNjNjRlODQyNzQ3YzMwYzZiMWI2MWNlNiBsZWdhY3ktdHJ1bmsKKzE5MDMxIDc4Y2RkYmE0NTgwNTMyZmFhNzdiYjU1NmEzNTMyNWM3ZjQ1ZGY5ZWEgbGVnYWN5LXRydW5rCisxOTAzMiAyYzdkZjQ1NDk2YTYyNzZlNDYzOWJkMjQyMTcyMDNhMjJjMjE0ZjI1IGxlZ2FjeS10cnVuaworMTkwMzMgN2FlNmEwOWQ0ZDAyZGVkZDVlYzlmNjE1ODkzMGQ2YjUzY2EwNzg4MCBsZWdhY3ktdHJ1bmsKKzE5MDM0IDcyNWIxYmFmM2RhYjkxYzJiNDMxZTUzYjlkNTk3ZGUwM2RlOTEyMWUgbGVnYWN5LXRydW5rCisxOTAzNSBmNzViODY0ODk5ZmIxNTMxNWQ4MTA4ZTg0Zjg2MzY3YWJkNjU5ZDUwIGxlZ2FjeS10cnVuaworMTkwMzYgMzBjNGM0ZTllM2Q1Njc3ZjQ0ODAyOWQ2NTFiOTI0ZmI5Y2UwOWFiMSBsZWdhY3ktdHJ1bmsKKzE5MDM3IDQzODQyOGQxYmYyNzBlNjk3MGYyYjRhZTU2MWU0OGU2OWRiNGM1NmQgbGVnYWN5LXRydW5rCisxOTAzOCAyZGNiYzFkZmNhOWM1NGRlNjMwNzE4NjQ2ZDdjZTM3NjhlOWE2YjVkIGxlZ2FjeS10cnVuaworMTkwMzkgMjc3NDk4MTgzMDMwNzQ4YTBkNjE5NTJmZGY5NDZmMTU1NDdmNWM5NiBsZWdhY3ktdHJ1bmsKKzE5MDQwIGQwZThlMTk1OWMwYmU0MmYxMjBiOWQzODg0MTAzM2Q5ZGJmZDNmNjQgbGVnYWN5LXRydW5rCisxOTA0MSAzYTBlYjQ1YjJiNWUwMjZkZmQzNTE3NTM2NDQ1MzQ1NTk2MzY0YTY3IGxlZ2FjeS10cnVuaworMTkwNDIgNmY5MjkyMGMxMTUwMDlkZjQ1YTAyMzg4MmY2MzFiN2Y0MDIxODE5NyBsZWdhY3ktdHJ1bmsKKzE5MDQzIGE1NGMyODJiZmI2M2RhMmI3YTc4ZTVlNmM5ZmI0ZjFmYWM1MzI0MDQgbGVnYWN5LXRydW5rCisxOTA0NCBiODgyZjRjODU2NjY4YWYzMzI3NDg3NDI1OGU0ZmM0OTQyNzgzNGEzIGxlZ2FjeS10cnVuaworMTkwNDUgYTEzMGQ1ZjdlNThhZWIyMTk2NGRjZTY0YTQ3ZDljNGRlYTJmYjFjMCBsZWdhY3ktdHJ1bmsKKzE5MDQ2IGUyNmY4ZDZjZjI4OGVmMzZlMmJiNDc0ZWVjYTJmZmZlZjM2NWJkMzMgbGVnYWN5LXRydW5rCisxOTA0NyAxMTVmZGM2MWFlOTE0YjgyYTljOGZiMTM0MzhkMDgxMmYyN2QxNjI0IGxlZ2FjeS10cnVuaworMTkwNDggMDFlOGE2ZDhkYThiYjY1ZWZlZjUxNTE1OTkxMTExN2VkNWQwOTJjOSBsZWdhY3ktdHJ1bmsKKzE5MDQ5IGQ3MjE4YWM5OWMwOWFiMmNlZTZkYTc0ZWIwMTdiYmVhMmRmY2JmNWEgbGVnYWN5LXRydW5rCisxOTA1MCA0OTllMjI5ZTZjZWRhODkyZWY1NzIwMzVlYTU5Y2Q2NmE0ZGExZmJjIGxlZ2FjeS10cnVuaworMTkwNTEgOTkxYTE3ZDYxMDM2Mjc2OWNhNDI1YmNiNDdmZWJiNjVlNGYyOTBhMCBsZWdhY3ktdHJ1bmsKKzE5MDUyIGMxMmQ4NjIzYjI5NDkwZTEyMGI5MDBkY2FlNTM0OTQ5MTU2OGVkNzggbGVnYWN5LXRydW5rCisxOTA1MyBjMDJhZTdhZTAxMWQ2MjgyYWIyMTkzY2EzOGRlN2RmOTNhOWE5ZmUyIGxlZ2FjeS10cnVuaworMTkwNTQgNGZlNjlhOWY4YjMwNzZiOWVmMTcxZjk0ZjE5ZjIzMDViNTM1MGJiNiBsZWdhY3ktdHJ1bmsKKzE5MDU1IDFmZjRmODkwMWQ5NjA2MDk1NWQyN2I2OWUxZjU3ZDE3NzhlMjIzNzAgbGVnYWN5LXRydW5rCisxOTA1NiBmNGFjMDYwYTg0MWIzOTljMDcxNmQ3NmU3ZjQ3ZDhkOTA2NjNhNjMyIGxlZ2FjeS10cnVuaworMTkwNTcgMWFhODM0OWY2Njk1NTgwNmIwMDVkMDQ3YmFlZWMwNjQ1MDg5MjcwYSBsZWdhY3ktdHJ1bmsKKzE5MDU4IDU3MTI2MjAyOTg4ODJhYzA2OTcxZjA5ZGNjZjliZDE5MGI1OTBkNjUgbGVnYWN5LXRydW5rCisxOTA1OSAxYmI3NjUxNjgzZTc0MTI4NGExNDJjNTczZjU4MWM4ODVlY2ZiOTdmIGxlZ2FjeS10cnVuaworMTkwNjAgMzI3NTViNDU2MzY5ZDgyMjY5YjQ3M2ExYTFmNDI4ODBlNWRmYjVlOCBsZWdhY3ktdHJ1bmsKKzE5MDYxIDAxZTVkM2U1ODgzM2FkOWU5OTBkZjg3ZTQzMmY2ZjdiMjBmNjk2NDAgbGVnYWN5LXRydW5rCisxOTA2MiAzNDg0NjcwYzM3ZjJlOGRiZjIwNjAxMWMzZDk5ZWZlNGNiYjBjYTk4IGxlZ2FjeS10cnVuaworMTkwNjMgMzg2NzhjYjBiM2NkYjhkZDYyMjA3ZWVlMmRjMzMzODMwZTEzYTNiOCBsZWdhY3ktdHJ1bmsKKzE5MDY0IDM5N2FlNTNmMWE0ODk5MDZlNTYxNTE5NzlmZTM2NGQ2MDA2M2RjNTYgbGVnYWN5LXRydW5rCisxOTA2NSA3NDNkNTIwNzViZTVlZmNiZjA3ODE5MmE2ZWM4ZDI4NTMwMzFhOWQwIGxlZ2FjeS10cnVuaworMTkwNjYgMjNhYjU5OTIxMjJlODE0MDhmZmUyMzQ1MmQ3NWE3ZDc1OWRlMWJiNSBsZWdhY3ktdHJ1bmsKKzE5MDY3IGEzZjU3ZWQ3NTdlNTBhOWI1NDk2NDAyZTRkZDcxMTc4NmIyMzU3YjAgbGVnYWN5LXRydW5rCisxOTA2OCBhNjQ1M2NmYjczM2YxZDdhZjgzNWZmZmQyYTZlYTIzYWY2NjdmNWRiIGxlZ2FjeS10cnVuaworMTkwNjkgNzQzZjE2MzM2ODI3M2IzYjVkNWY0MDI5N2U0NzE5NDEzZjQ3ZDgyNyBsZWdhY3ktdHJ1bmsKKzE5MDcwIDhkNGEyNWM4MWE5Yjk0MzBmYjAyZGE5MGQwZDU4ODNiNWVkZGNkYTggbGVnYWN5LXRydW5rCisxOTA3MSA1NWU4YzAyNmUxZTNmZjIyYzVlNjI0YmUyNTBhZDlmMzI3ZTNkMzgzIGxlZ2FjeS10cnVuaworMTkwNzIgMWU0M2EyNDU2ZThmZTRjY2U1MWQ1MmE0MmIyZmQ0MWM3ZmJhZTMyNiBsZWdhY3ktdHJ1bmsKKzE5MDczIDk4YjY1NDg0YWRlNmE4NGNlODExZGFiYjhiMGQzMTNmNWYxYzg1NTcgbGVnYWN5LXRydW5rCisxOTA3NCAxZGY0MGQ3NzI0Y2NkZTQwNjU3YzM4Yzc0NTE4YTkzNjY0NTUxNWU1IGxlZ2FjeS10cnVuaworMTkwNzUgYzBmNjFkNGY1YTA0ODgxMjM0NjlmYjNjYzMwYzU1OTZmN2E3NTM4MCBsZWdhY3ktdHJ1bmsKKzE5MDc2IDYzNWU5ZGNmZWQyY2M2NTg0ODk1Y2NjNDIxNzA0YjZkYzMzNDM2ZDUgbGVnYWN5LXRydW5rCisxOTA3NyA3Mjg2MGVlOWVhZjA4OTBmZDBlMmI2YmE1OTMwMzUyMzFjMGM5ZTZkIGxlZ2FjeS10cnVuaworMTkwNzggNWFlYTE1ODE1NDNiNDQ4Mjg1MGE1YjIxYWEzODVkNjM4NzZlMDYxNiBsZWdhY3ktdHJ1bmsKKzE5MDc5IDM5NzQ5MWFhMjBhNmViY2E3YzkyODkxYjVlNWRkNzBmMzdkODU4MmMgbGVnYWN5LXRydW5rCisxOTA4MCBhNGU1NGJmZDNjMjlkNjU2OTExZWFhYjhiY2JkZjA5OTI5MDQwZTRlIGxlZ2FjeS10cnVuaworMTkwODEgMjU5Zjc5YTM2ZTJmMzZkMGIyZGUxYjRiZGE4MjUwNjZkNGZlYjFiYyBsZWdhY3ktdHJ1bmsKKzE5MDgyIDE4NWRmYzE0YTkzNDJmYjc2NWJkMTUxYjRhZGM1ZTllOGU2MThlMTIgbGVnYWN5LXRydW5rCisxOTA4MyA1ODg2OTFmODA2ZjRkMDgxYTM0NDE2NzAyMTM4YzFmZDhiZjMwZWUwIGxlZ2FjeS10cnVuaworMTkwODQgYTBlNDZjM2JlNjNlZjJkZjRmNDFkNDU5NzE3ODYwNmFlNDhjNWViNiBsZWdhY3ktdHJ1bmsKKzE5MDg1IDU0NTM0MTQ4ODczZTZmOWMxNzkyY2U2ZWZkZDJkYzJjYTU2NmFhODMgbGVnYWN5LXRydW5rCisxOTA4NiBkMzI5MmVlNWI2ZTI0YTE1YzU0NWUwYjFiOTExMmJlOWI4MmU3MzQ5IGxlZ2FjeS10cnVuaworMTkwODcgZTU2ZGQyZGQ5OTYwNzJhNzk0OTY4OWU0ODdhMzRmYjE1MDUxM2FiMCBsZWdhY3ktdHJ1bmsKKzE5MDg4IGM3YzQwNGIzNWYzM2EwZDU0YzgyZjY3NTg5OWYxOTBjMTNlNTBmZDcgbGVnYWN5LXRydW5rCisxOTA4OSA4YzRkYjhiOWFmOWI5MGU1MzZiZmI1MDBlNDcwZTYyMDYyZTFmOGYwIGxlZ2FjeS10cnVuaworMTkwOTAgYWJiOTQ1MDY2NDM2NzUwODA0NGY5NGZkZWIwMmU0YzQxMGFmMzFiZCBsZWdhY3ktdHJ1bmsKKzE5MDkxIGUzMDI1ODY0NTJhMzA4MzgwY2JhNDllNjA2MDJkODhlMTA3ZTc2NjkgbGVnYWN5LXRydW5rCisxOTA5MiAzOWExNGJjOGEwZjc5MGI4NDhiZWRmZDNjNmQ0ODdiOTlhY2VhNmNkIGxlZ2FjeS10cnVuaworMTkwOTMgM2EyMGRhMjg5M2M0N2Y1OGJkNmRhOWFhMjY1ZGU3ZDQ4NzYyYTlhMiBsZWdhY3ktdHJ1bmsKKzE5MDk0IGRmMmVkNTY2NGJlNTE1MjJlMTJmZGY3ODUzNmQ3ZGFkYzM3YjAzZTYgbGVnYWN5LXRydW5rCisxOTA5NSA5YmY0MzhjOGY1Yzc5MzhhNWY1ZjU1MTdjZDMyOTYwNjBiNTAxYTJiIGxlZ2FjeS10cnVuaworMTkwOTYgNDFlZDRkODZkYjc3NzI1MGM2MmM0MWJhNmUzZDA4NzEyY2VlYzVjZSBsZWdhY3ktdHJ1bmsKKzE5MDk3IDVjNjAxODRmN2Y1MmFiMWQ1MjIzM2VjOWUzOTgzNDkyMGFmYzk3NTcgbGVnYWN5LXRydW5rCisxOTA5OCBlNWQ1OWE5ZGJmYzAyOGNkZWYwZWQyNjdhMjM5YWMyYzAzNTI3YjRmIGxlZ2FjeS10cnVuaworMTkwOTkgM2ZlNzU5MjRlYWMxMGRjYWE5NzM5YTYzMjM0ZWUyYjczYjE5NTNlMyBsZWdhY3ktdHJ1bmsKKzE5MTAwIGI0ZDRmMjAyMTExNDRhOWM4ZTI4MDMxZjQ4ZGZhMmVhNTBjN2QxMTMgbGVnYWN5LXRydW5rCisxOTEwMSAyZmY4MjYzMThlODllZGZiZDBkNzZlYTdjYTU4MjU0ZGExNGM0MzYxIGxlZ2FjeS10cnVuaworMTkxMDIgN2Y2MThiYzEzOTgxMTA5MjJjNTU1NmQ2Y2JkZTNiNTNkMDlkMmZiYyBsZWdhY3ktdHJ1bmsKKzE5MTAzIDA1YmU1Zjg1ZjNiZjYwOGQ2YjlkOTI4NTcxYjVhM2RmZDhlOWYxNWQgbGVnYWN5LXRydW5rCisxOTEwNCAzYzVmMDk0MjJiNjlhOWZkODcyMzBiZTc0ZWU5YzVmNzAyMWM0YmQzIGxlZ2FjeS10cnVuaworMTkxMDUgOWZkOTZlMjQ1NWI2MmM3NzU3ZjFlMGUxN2RkZTVkNDU5NjBjMGZiNSBsZWdhY3ktdHJ1bmsKKzE5MTA2IGZhMjA5Y2M4NGNhY2UzZWM4ZDNjOTg4Mzc5YjdmMTY4NWU0MTc2ODUgbGVnYWN5LXRydW5rCisxOTEwNyAwOTczNmFlYWI4MzExZmYyMzdkYmE1ZWMwMjQ1YTYzYTIyYTcwYTlkIGxlZ2FjeS10cnVuaworMTkxMDggYzQxZGQyMjA0YjljOGUwYjMwM2QxMjIxODBjMTdjZDVkYTA1MjhkOCBsZWdhY3ktdHJ1bmsKKzE5MTA5IGE2OGM3MDMyY2RmMjk5ZjJiM2VmODEzOGRjYTdmYTQ1NTIzZDI5ZjQgbGVnYWN5LXRydW5rCisxOTExMCAxNDBjNTI4NThmNjVlNDA4OGFiMTVmZjU3OTZhZWRkOTdhMzAzZmJlIGxlZ2FjeS10cnVuaworMTkxMTEgZmEyNzFkN2IyYTYyYmNhZmRmOTM2ZjRjMTZjOTY5ZDg1MjNiOTI1NiBsZWdhY3ktdHJ1bmsKKzE5MTEyIGFhYjg3MTYzNWZmYWU0OWI4OTA5ZWY2NjBlZGIyNjRmNjAzMGFlZDggbGVnYWN5LXRydW5rCisxOTExMyBiZDhkMjk4YWY4ODBjMmExZTAyYzE4ZWQ3OTlmMjM0ODZhNTAyZTFmIGxlZ2FjeS10cnVuaworMTkxMTQgM2Y4OWU3MjQwMDg2MDU2ODM5NDEzZTM5ZjA0YTdjOGJiNWNjMjIzMyBsZWdhY3ktdHJ1bmsKKzE5MTE1IDRiNTFkMDY5YmUzNTBlZDlhNTQwNGYwMjQ3NjM5NjlhY2JmMDAyYTYgbGVnYWN5LXRydW5rCisxOTExNiBjMWNmNWQyYzI2Y2FlNzBlMzBjOGMzNWUyODQ2YjFlMWIwMDExOGU0IGxlZ2FjeS10cnVuaworMTkxMTcgZjgwNDUzZTQ0NWI1YTQ0MTU4ZWQ5Njg2MmFkMDJjNWFiZWIxMGRhYiBsZWdhY3ktdHJ1bmsKKzE5MTE4IDA3MDcxODcyZGUzZTExNGIwMTI2YzNlMjdhYjdlNmY3ZTk1MDYyMDAgbGVnYWN5LXRydW5rCisxOTExOSBmZDhjNzIwMzI1MWZmMzdkYmIzOTdmN2Q0MjNhZTQxZjE2YTAzYzY4IGxlZ2FjeS10cnVuaworMTkxMjAgZjQ5NGNhMGEyYjM0NmZmNjhmYWFjY2M2NTA4YmVhMjgwMmRhOWEwOCBsZWdhY3ktdHJ1bmsKKzE5MTIxIDkzODZiMzJiZmYxZGFiNDI0ZDBiNTU0ZjY5ODYxOWJjYjU0M2E4ZmEgbGVnYWN5LXRydW5rCisxOTEyMiAyMGVmODQ5ZWM4NzdjNzJlNTRiNmE0NGJmNThkNDVhZTNhZDQzNTFhIGxlZ2FjeS10cnVuaworMTkxMjMgYmRmYzZmMWZhNDc1Y2U2NzMxM2Q5M2RjMWUzM2FlMmJjZWJhZjUzZCBsZWdhY3ktdHJ1bmsKKzE5MTI0IGE3MDRlYTVlY2ViNmIzZDFhZmMxZmFkY2RjODg1NDQxY2VkZjc4NGEgbGVnYWN5LXRydW5rCisxOTEyNSA3NjNhM2Q0MmJhZWRmMTY3ZDI5MjU5MDc0OGFmM2EwNjcxMmQzMmY2IGxlZ2FjeS10cnVuaworMTkxMjYgZTE4ODg5ZTM5NDljMDY5ZjFjMzQxZTBlNzdjMmI2NDY1M2IxZmNjNSBsZWdhY3ktdHJ1bmsKKzE5MTI3IGQ2MTRiNmU5ZmI0ZWQ5NGUxZjAwYjcxMDkwZTk0MWMxMzljN2FjZTIgbGVnYWN5LXRydW5rCisxOTEyOCA5OWYzNDY3Mzg0MTVhMDZiMzJmYjdhNGJiMTE4OTAxNzljZDE4OTJiIGxlZ2FjeS10cnVuaworMTkxMjkgNjBlZTMzOGYwZDY2NmZkZWZlMDAzNjAyMTUzMTk2NmZjYzYxZjkwZiBsZWdhY3ktdHJ1bmsKKzE5MTMwIGMyY2U5YjJlNWJiNDIzYWFlZWRiMGYxZDk1NDk4OGExOWUxOTdhMGIgbGVnYWN5LXRydW5rCisxOTEzMSA3Nzk1ODI2NmM3ZDdhYWJmZWM1MzlmYmI3MWU0NTQyZjZkNmUwZGVlIGxlZ2FjeS10cnVuaworMTkxMzIgOTAyNTVkNDQxY2Q1ZjYyMWQwODVhNDhlM2JlMTY3MjRmZWUzMjI5YiBsZWdhY3ktdHJ1bmsKKzE5MTMzIDdlZjIzODJmNjEyM2EwNjVmOTA3NjIxMGRhN2MxMjQ1OTNmOWVjZjEgbGVnYWN5LXRydW5rCisxOTEzNCA4MzVlOWRkNTRiZmI4YWM2M2ZlYWUzOTNkOGUxZjRjYmZlMWU4ODQ5IGxlZ2FjeS10cnVuaworMTkxMzUgYzg1Y2E4YzYyMTI5Y2M4MTE0YzUzYTcwNDFmM2FjYjFiYTZlNDk3NyBsZWdhY3ktdHJ1bmsKKzE5MTM2IDJhZWIzYTM0YzdhY2RiMzNmZmE1Zjk4N2U0NWY3YjJiYzZhNmFjMzkgbGVnYWN5LXRydW5rCisxOTEzNyA5Y2U1MTQ5ODI1ZjZhZWFiZDBkN2NiNDY5MGY2MDJmZDViMGE4NGJmIGxlZ2FjeS10cnVuaworMTkxMzggY2E4NTU0N2ZjYjVlNDI0ZjUzYmY2YzRkNDQ2ZWMwYzc5NTk2NjE3NiBsZWdhY3ktdHJ1bmsKKzE5MTM5IDE2ZTIxNzcyY2EzZjE0NjIwMmRhZDc1OTlhZWQxOWM0MjU0OWJiMDAgbGVnYWN5LXRydW5rCisxOTE0MCBiNDZmOTU2YWJjZjg1MmY1NjBhZTk5MzQwZTQyZmUxYjFlOGFiMzcwIGxlZ2FjeS10cnVuaworMTkxNDEgNzg1Y2U2MTk2Nzk2MTQyODM0MzBkZjQ5MzBkZmYwNjI0Y2ZlMzcwNCBsZWdhY3ktdHJ1bmsKKzE5MTQyIDhiODFhN2U1OGExZDE5YzhiZjZmOTVhYmY0NTg3ODI3NTVmN2YzNmUgbGVnYWN5LXRydW5rCisxOTE0MyAyYWJjYmU0NDI3MWFiYjA3NjM0NTM3Mjg1OWNjNTE4YmMzNWYyMzFlIGxlZ2FjeS10cnVuaworMTkxNDQgZWE0YTJmM2IyNjZlMDE4NjVmZDY0YTMyNTgyNjY0YjhjZmI3OGI0OSBsZWdhY3ktdHJ1bmsKKzE5MTQ1IDY1YzZhMjk5OGIxYmRlZDBjOTk2NTNkNjIyMDczMjI1ZmU3OTQzMmQgbGVnYWN5LXRydW5rCisxOTE0NiBhMDU1OGViZjY2MTI3NTNlMDM4OGI2ZDdhZTNjMGMwNDY1NWRhNDU4IGxlZ2FjeS10cnVuaworMTkxNDcgMTVlMGMxMDA5MmJiNGRiMGFkNjczMjcyZmEyOTczMTI4YTFjOTg2MiBsZWdhY3ktdHJ1bmsKKzE5MTQ4IDIwZTNjMGQ1ZTQ2ZmQzNDNlMThmMTFjNjBjM2FlNWZmZGFhNmExNDkgbGVnYWN5LXRydW5rCisxOTE0OSA0YjcyODg4YzllMmY3ZWRkMzM2NjkzZjg1ZjJmNjZhMzJjZTM5Y2JiIGxlZ2FjeS10cnVuaworMTkxNTAgYzBhMjQ0MWE0NDU0YmRmMzBkYTFkMjc4NGRiYzJhNGIxYWU5M2U4YSBsZWdhY3ktdHJ1bmsKKzE5MTUxIDkzYmEzM2RjMzMzYWYyMmM3YWFkZWRjN2IwYjExY2IxMDZiODE1ZjcgbGVnYWN5LXRydW5rCisxOTE1MiA3YTI1MTQ0MGNlNjdkNjg5NGFiZjJmYmRlOGIzMjZiNjJmNjAyY2ExIGxlZ2FjeS10cnVuaworMTkxNTMgMDk0MDNjNWNkYWZiYzA4YTYwYjI2ODU2ZjFkNDI4MGRmM2I2NmFjYyBsZWdhY3ktdHJ1bmsKKzE5MTU0IDA1MDFjMmExMDMxNWZjNGYwZDRjMTQ4NTNlYzEwNjQyNjM3Y2YyZjYgbGVnYWN5LXRydW5rCisxOTE1NSAyN2E0YTE3YWVjMjUxNGNkODg2NDY3OTk3MjllOTU2ZDE4NWY1M2Y3IGxlZ2FjeS10cnVuaworMTkxNTYgMjhjNmVjNTgxYWE2OTY4MjJiOTllM2NmMjkyYmFhMzEyNTNkNmI3NSBsZWdhY3ktdHJ1bmsKKzE5MTU3IDdiMzQ3NmMxMzgyZWJjYmZjYTVkZDc3NzE0Y2RlMDk1Y2FmNTY3MjIgbGVnYWN5LXRydW5rCisxOTE1OCBhYjk5YmQzOTQ3MGNlMzkxYmFjMmY4Y2NjNjA3OTk5OTcxM2ExMGQ1IGxlZ2FjeS10cnVuaworMTkxNTkgZDBkOGM5ZDUyZjE4NDk5ZDBhYWRlY2ViMDExYTQwMjgxYTQ2NmNkYSBsZWdhY3ktdHJ1bmsKKzE5MTYwIDJkYjI5OTM5NTgwZGJhNzhkNTA2YTMyMWEwNjJjMmE1MjQwOTJkZjQgbGVnYWN5LXRydW5rCisxOTE2MSBlMWUwZTk5NmIwMDM1ZGEyMmQ5ZGI1NmU4NGJmMDYyZTBhOGUxN2VhIGxlZ2FjeS10cnVuaworMTkxNjIgMjZjMWZmZmRmZmYyZjA4ZTc0YzlmNGNhYmMwM2YzNjRiNzFjMzZhMCBsZWdhY3ktdHJ1bmsKKzE5MTYzIGJkZmI4MWQzYzYxMGVhZDhmMzlkYzZhNTM5NjczZWM2MWEzYjc4NTIgbGVnYWN5LXRydW5rCisxOTE2NCAzYTFlNjU4ZTQ0NzQ2YzAyMTZjNzBhZjZmZDU1MjlhOWU4NzkyMTQ5IGxlZ2FjeS10cnVuaworMTkxNjUgZTdmNDEzZDRlZTE1YWI4NmQ0NjRhMTViZTNmYzdkYWQxZDQyZDkwMCBsZWdhY3ktdHJ1bmsKKzE5MTY2IGZjM2Y1MDU5NDVkNGNkMDgyZDY1MDZjYWUzMTg3MzIwNjMxNzRhYmUgbGVnYWN5LXRydW5rCisxOTE2NyBmYjBmNTZiYjE0MDU5OTczZTU2NDU5NmQ4Njg5Y2RhODdkNjJjMzFkIGxlZ2FjeS10cnVuaworMTkxNjggOGU4NzNmYTU0NTBlYmY1NmJlNDA2ZjE5NmE1OGQ0ZWE4ODY1ZGE5NyBsZWdhY3ktdHJ1bmsKKzE5MTY5IGY4NGY4ZDgxZTMyY2U3MDcxMTJiMzg2NTA5ZDk5OTczYjQyNjMxNzEgbGVnYWN5LXRydW5rCisxOTE3MCA4ZTY2ZWE2MDI2MTZkYThmZWU5MThhYTcxMTkwZDQ4N2M0YTc4NTY5IGxlZ2FjeS10cnVuaworMTkxNzEgOTY2M2Q1ZWJiNjQ2YzEyMmM4YzFiNTM5Nzc1NDQ3MDczOTVmNTgyNiBsZWdhY3ktdHJ1bmsKKzE5MTcyIDU0YjBhZWY2NTBjNTI5ZDA3NmU4NzgwOTFmNzcwNjlhMGQ2NGU4NGIgbGVnYWN5LXRydW5rCisxOTE3MyA4YzQxZjM4NjFhYWRkY2NhZjJkMGYyYmFiMTVmOGU3ZjQ5ZDg3MTkyIGxlZ2FjeS10cnVuaworMTkxNzQgYjgwMTgxNDVlMmE1ZTc5NTI2YjU2OWU3MmEwZjdkNzU3M2U1NzFiNiBsZWdhY3ktdHJ1bmsKKzE5MTc1IDY2MmFkZjAzZTRmYTJmNjZkYTZmODgwYTgxYzA3MTAyNWM1OGEyZWYgbGVnYWN5LXRydW5rCisxOTE3NiAyNGU0NTdiYTFmOTI2YzViNGM3NGM4YzIyMTY2ZjhiMDQzNjA2NWUwIGxlZ2FjeS10cnVuaworMTkxNzcgMjhjNjBlZjQ4ZmEzYTFjYmExZTE5MzgzOThmZmJkNDJlMmU4YTIwMCBsZWdhY3ktdHJ1bmsKKzE5MTc4IDc5ZTcyY2UyMmE0MzBmMDFhMDRiYmZkYTU3ZmRkMjJmOWI1ZmMwZWYgbGVnYWN5LXRydW5rCisxOTE3OSA4NjFiZjhkY2ZiNThiODY2N2Q4NWU5NmEyMDczMjgyMzkwMWZmZTgyIGxlZ2FjeS10cnVuaworMTkxODAgMTdjYWM3MGNhZTc2NjIxNzBhMmE5NThlNDdlY2RlZjYzNmVmNmUzNSBsZWdhY3ktdHJ1bmsKKzE5MTgxIGIzMzVkNGRkMjIzZjM4ODRhNjc2YmM0MDAyNmJlOTc5MTE0NmJlNWUgbGVnYWN5LXRydW5rCisxOTE4MiAwZWZhNmM5N2E0ZmFiNTY1ODZhZDQ3YzAwYzllYjU1NjkzYzc1ZWQ0IGxlZ2FjeS10cnVuaworMTkxODMgYTU4Yzk5M2Q5MjM0NTcyZjgyOWQ4NThhNGU4MmIzZDc3NWVmYWZkNCBsZWdhY3ktdHJ1bmsKKzE5MTg0IDkyNWIyMzNmMDJlYTBkY2UxOTQ0Njk2NDc5ZGRmMWQ0ZTYyMzZmN2QgbGVnYWN5LXRydW5rCisxOTE4NSBhZmQwOTMwZjg2ODM5OWFlYjI1MGZlNGQyZDMxNjBhM2IyNTRjZmRkIGxlZ2FjeS10cnVuaworMTkxODYgOWQ1NzIwMzgyMDZlMDI3NjA4OTU2MzEzYmY3ZTkxY2VhMzA5NGZlMyBsZWdhY3ktdHJ1bmsKKzE5MTg3IDMzMDIzOTU3NWUxZTY3NTdmY2ZlNzdhNjdmZGY0YWUzYjZmMmFlMjMgbGVnYWN5LXRydW5rCisxOTE4OCBmZmQyNTFkZmFiZjQyYWQ4MmE5NzIwNjQ1ZjMyOWMxOWVlYmMwMDliIGxlZ2FjeS10cnVuaworMTkxODkgOTNhZmIyYmIyMmVkMDliYWY4Zjk2MDcwNDgwMzY1MTcyZDg4ZTFiNSBsZWdhY3ktdHJ1bmsKKzE5MTkwIGFiZDM4M2YxOTA1YzgxZWNlOTBmNGUyMmNlM2RlNDE4YzVjNWI1Y2IgbGVnYWN5LXRydW5rCisxOTE5MSA0ZDQyNGQxMzk3YjJkOGI5ODU0NzgzNTc5ZWJmMzIwZDU3MTIxNWMyIGxlZ2FjeS10cnVuaworMTkxOTIgYmUwNmJmY2JlNTFhMmVhYzUwMjU4Yjc3MmNmNDI1NmFjMjdlYWZhMyBsZWdhY3ktdHJ1bmsKKzE5MTkzIDI0ZThjNjljZDM0ZGE1NGE1ODI5NzcwMzNhMDBiODJhY2UzYjkwYzQgbGVnYWN5LXRydW5rCisxOTE5NCBiYWNiYjQ1ZmU4NDQ4ZmUyMzY3ZjQ1MjIxMGQ0N2E4MTcwMjVkMTcwIGxlZ2FjeS10cnVuaworMTkxOTUgMDFkNWI4MGEzYzAzODIzNzVkZjk0NjQ4YTc0NmNjYjg5MzhkZWYzYyBsZWdhY3ktdHJ1bmsKKzE5MTk2IDM2ZGIxOTM2MDhiZWUxNTQ1YjdmOTU5NDE1ODgxMjdjZGNmY2YzZTEgbGVnYWN5LXRydW5rCisxOTE5NyAyODUyZWFkYjdkYWJhNTEyY2IzMWVkY2M0MzI2NjM1MmJkNDg4ZDYwIGxlZ2FjeS10cnVuaworMTkxOTggMmQ4ZTAyOTAyZDY3ZTk4ODk3MTRkOTAwM2FhZmU5ZjI2YTBmZDZmOSBsZWdhY3ktdHJ1bmsKKzE5MTk5IGZhOTNiZDFkODcwOWQ4Y2JiZGNiZTA0YmI5N2MwNzZhN2IwOTI4ZDYgbGVnYWN5LXRydW5rCisxOTIwMCA2ODdmOTNkZGYzZDczNDNiYTAzYmNhMjNjZGQ5OWE5MzhiZDgyZTQ5IGxlZ2FjeS10cnVuaworMTkyMDEgNjU0OTgyYTQ2NjA3NzY5ZWViMjBmNWNhZDQ4MjFjOTg2YjhmMWYwYSBsZWdhY3ktdHJ1bmsKKzE5MjAyIDIwNzA3NDU4OGI5ZmRlMDRkMWQ2YzFmMzA0NTZlMjA5NGI0ZmZlNTggbGVnYWN5LXRydW5rCisxOTIwMyBhNGJiYTNlYjM0YzFmMTczNmUyOTM1NjYzNWRlMWFkMzUwMzc4MDM1IGxlZ2FjeS10cnVuaworMTkyMDQgMDVhOTEzZmY5N2E2ZTIxMGY2YTIwMTk4N2I5NTk0NzFmY2FjNDMzYSBsZWdhY3ktdHJ1bmsKKzE5MjA1IGY4N2E0MWI5NmUyOGNjOThkMTAxNDRlNGIwYWU4NDZkNzZiY2RmNWUgbGVnYWN5LXRydW5rCisxOTIwNiBhOGQ4ODU3YWIwZjFlY2Q1YmFhNjBjZTlmNTU5YjMwMjhhODQ1MzNlIGxlZ2FjeS10cnVuaworMTkyMDcgMGNiNDc5NTUzNDRlNDQ0ZTAxMWFiMzc5MjUwZGRjYWMwNzZhZGJlYyBsZWdhY3ktdHJ1bmsKKzE5MjA4IDkwZWRlNTE2NWQxZjNjMTVlYTA4YTJiODc4OGIzMjdhNTE3MGFiMDcgbGVnYWN5LXRydW5rCisxOTIwOSA2ZjFjMzdlODExNjA1YmZhMDUxMTVjY2VmNjdkMjk5YmU4MWYxODhmIGxlZ2FjeS10cnVuaworMTkyMTAgNmRmMTI3MzJlMjYyZjNjNzgzYjJjMDY5YTdkZDZjYmVhYjhiOGViNSBsZWdhY3ktdHJ1bmsKKzE5MjExIDdjNGViNDBkNGZmNzkyOGU1MGRlMTNkMmQ2MGQ4NzUwMWIwOWRlMTkgbGVnYWN5LXRydW5rCisxOTIxMiA2NmQ0YmY1NmUzMmRiYjE4NWIyZWUyYzM2MWU0MjAzMDMyNjYxYmMwIGxlZ2FjeS10cnVuaworMTkyMTMgZWYzMmJmYTVmNWM2ODEzNDgwYjRhMTM4YzYxNGQ1NzM1NTAxYzg5MiBsZWdhY3ktdHJ1bmsKKzE5MjE0IDBlZWIyZWUyMDc5OTlkYWFlYjFkYjZmMWEwNThmNGZmOTU4NDEzZjcgbGVnYWN5LXRydW5rCisxOTIxNSBhZTA0ZDYxNGEzZTAzM2I0MGViZjdkYWE4Njc5NzljYjhhN2I0NzliIGxlZ2FjeS10cnVuaworMTkyMTYgYzNiNzVhN2ZhZDNmNzgwNmM3NDkwOTc1YjJiN2I3MjIwOTcwNGE4NyBsZWdhY3ktdHJ1bmsKKzE5MjE3IGU0NDIwYzI0NjhmOTBhYTZiMWI2MWZmMTcwYjNiZjIwZmE4MDUyZjMgbGVnYWN5LXRydW5rCisxOTIxOCA0ZmYyODU4ZDdhODU1Njg2NDY5NTc2ODEyZmY1MzJlNGE0MWNiNDNjIGxlZ2FjeS10cnVuaworMTkyMTkgOWYyY2E4NTVmYTQ0ZGI2NGExNjhjYjkyZWRkYmY5ZTc1ZDI4MGY4YyBsZWdhY3ktdHJ1bmsKKzE5MjIwIGZhOGJlMjg3MzBjOTg1MzI0M2I0MjdmYzBjZmYzNzMyNDIwYmJhYzAgbGVnYWN5LXRydW5rCisxOTIyMSAxMDljNmEyODBlNTFhYTJjN2VmMmMzNWZkNjAxNjY2NTQ2OThiNGU1IGxlZ2FjeS10cnVuaworMTkyMjIgOTVkYWU2MWNlZDUxODMzZDhmMTg1OTFmODcwMTYwY2ZkZjc2OGM5MCBsZWdhY3ktdHJ1bmsKKzE5MjIzIDhjNWQ4YjYxNzk3OWFiYjFlNmJkZDI1MWY1Zjk4YWRiNDcwMDdkZGMgbGVnYWN5LXRydW5rCisxOTIyNCA2NTVhYWNjZDFjYWY4YTU1OWZmYzMyZjE2M2QxMDIyOGU1OWM0MTJiIGxlZ2FjeS10cnVuaworMTkyMjUgYzI5Y2ExOTgwMzAzOGJjYjRhMmYwYWE0OTY5Y2ViYmZhMWNlYmMzYiBsZWdhY3ktdHJ1bmsKKzE5MjI2IGYxZTJmOThmMDEyMDc4MDM3MWQyMGFiZGFlMTZmNGJkNmQyOWFiNjAgbGVnYWN5LXRydW5rCisxOTIyNyA1MGY3ZGQxYTUzNTdkOWM5NTkzMjdiOWIxNjc3MzIxZjI1MzljYjJmIGxlZ2FjeS10cnVuaworMTkyMjggMzhjYTljYzlmYzQ4YTFjZjMwMDdhOWE5MDliY2YyMDg3MmQ5NTc1YiBsZWdhY3ktdHJ1bmsKKzE5MjI5IDNjMWI0MjZiM2ZmNGM2ZWNjZWIxZTEyNmZiZWZhNDdkMGY3MzRmM2UgbGVnYWN5LXRydW5rCisxOTIzMCBjNjk2YTUyYzI2MjE4NDU4MjMxZmQ4ZjYzNzFkNmJkYjllMzc5YjdhIGxlZ2FjeS10cnVuaworMTkyMzEgYzA0Y2E2Y2JhMWUzYzhlOGI1MmQ1YTM2MTUxMTQ4NzA1YjdjMTAyNiBsZWdhY3ktdHJ1bmsKKzE5MjMyIDRiNWJlY2ZhMmViM2FjZDRmMWY1OWNkNzljMzA2M2M3MzAxMzdjZjYgbGVnYWN5LXRydW5rCisxOTIzMyAzZmU4NTU1MjZjNTU2MDQ5ZDg5YzQ0ZTA2YjJmMTFiZDZhNWE2NzU0IGxlZ2FjeS10cnVuaworMTkyMzQgNjcwYTAxOTRhOGRhN2U4YmU4ZDE5NzkxOTY5ZjgyZmE2ODllMmRmZCBsZWdhY3ktdHJ1bmsKKzE5MjM1IDVkZmQ3ZTE2YzYyZjE3MmU2NGFkNGI0ZWQ4NTAzMTdkOWI5ZDJmNDcgbGVnYWN5LXRydW5rCisxOTIzNiA2MzI1YmQwNjNmMGE4ODMzNmZiYTU1MDdjOTQ1NjZjOGM0ZDlhNTUzIGxlZ2FjeS10cnVuaworMTkyMzcgNmZkNjNjNWMxOWE5MjE4YjI4OTllY2UyOTQzZGJlOWE1ZjBjNzA2NyBsZWdhY3ktdHJ1bmsKKzE5MjM4IDhiMWEzODIyNGFkZTliNTc1YTU1M2IyNTg1ODY5YTEyOWQyMzFhN2QgbGVnYWN5LXRydW5rCisxOTIzOSAwZDRiNmJhNWVlZWM4NTA1MjJjZDkzNTc3OTNiM2NlZTgxZmYxZWZlIGxlZ2FjeS10cnVuaworMTkyNDAgNGNkNTc0NDY5ZmUxYWE4YzlkYTBkZThmMWNjNjI3NDJhNjlhMWUyOSBsZWdhY3ktdHJ1bmsKKzE5MjQxIDVmMDY4M2E2OWVmYzY4ODRjNjQxNzNhMDNkOGNkMDNlNTQ2Mjk2NmEgbGVnYWN5LXRydW5rCisxOTI0MiAzYTRkMmJlZmJiNzQ3MzQyZGYzMzBhOGUzM2JhNmQ2NzgwYzhhMzhkIGxlZ2FjeS10cnVuaworMTkyNDMgNDhiNGFjZjczYWQ3YWJkMjAzZDMyZDNjODk1YTAzNmMyZWNkOTQ0MiBsZWdhY3ktdHJ1bmsKKzE5MjQ0IGVjOGY0N2ExY2M0ODM4ODc4MWQ4MmM0MmM3NzFlN2JhODZiY2I1ODMgbGVnYWN5LXRydW5rCisxOTI0NSA5OGE4OGFiZTU4ZDQyZWI3ODkwZDkxMjhlMjMyYWIwMTRlYzk5MjczIGxlZ2FjeS10cnVuaworMTkyNDYgYzg5OGNlYmEyMjYxODQwZWI5Y2Q0YTExOTFiNDhiNzUxZmQ3NmMwNSBsZWdhY3ktdHJ1bmsKKzE5MjQ3IDFmYjY2NzJiMjBlZjNjY2FmMjEwNDg2NzgwMWI5MTFjZDBhZDY3Y2IgbGVnYWN5LXRydW5rCisxOTI0OCBjMjU1NWI0ZjM4YTMxNDBmNjEyMTE5YThkNmJlMDQ1MTQ0NzhjZWFkIGxlZ2FjeS10cnVuaworMTkyNDkgNTU2ODg3Mjk2ZDJhZDhhZTFhZGQ0MTg2YWIwMDA2NzY4NzI4Y2RlMCBsZWdhY3ktdHJ1bmsKKzE5MjUwIGZkNGE2MzU2NmJhMWY0ZDk5YTI3OTU5OGExNmMzMDhiMTM2ODBmNDUgbGVnYWN5LXRydW5rCisxOTI1MSA0NmE4Y2ZlOWFmYTYzNGQwYzM4YzNkNDFjMWI5Y2YzNDNhZWI1MTM1IGxlZ2FjeS10cnVuaworMTkyNTIgZDM0ZjI1MDQ2YWQ0YmE0NjlkNzdlN2E0NDRiN2VhODExZDA5MmNjZiBsZWdhY3ktdHJ1bmsKKzE5MjUzIDJhYjI4YjIxM2Q3MDVkY2M5ZmQwMzNhMjU0MzRiYTRkYmE2ODZmZWMgbGVnYWN5LXRydW5rCisxOTI1NCAyZWNjZWI5ZDg3ZjU5ZTIyMGZkYjQ2ZGFmMDE2NmU3ZWQxMTFmYzI3IGxlZ2FjeS10cnVuaworMTkyNTUgMDM5NDI3MGQ0ZDA2ZDVhMTg3MjU3ZTQ5NDVlNDEzZWYyNzQ3OTIzZCBsZWdhY3ktdHJ1bmsKKzE5MjU2IGY3MDBlNmI4ZGUxZmE2MDU5ZTI3ZWJkNGUyNjcxYjAxNDAxNDIwMDAgbGVnYWN5LXRydW5rCisxOTI1NyA3NGQxNDBhM2YwMzQ2MzU0ODQ4MjRhMjI5NmNmNWEwZDZhMGIxMjgyIGxlZ2FjeS10cnVuaworMTkyNTggYjIyZTRkY2E0NTFhMzU3Njk3YzZiYmQ1MWM1NDllNWMzMDI3MmQxOSBsZWdhY3ktdHJ1bmsKKzE5MjU5IDBiYjU4Y2RmYTY4OGZmMWQ5MzdmYWI5YzBlYTI5MDJmZjc3NmJmNjIgbGVnYWN5LXRydW5rCisxOTI2MCA4MGMwYjI4MGE0ZjkxMWVmNmI3YzgyZmUzMmM5ZDRhMGMzY2ZlNDJmIGxlZ2FjeS10cnVuaworMTkyNjEgZGNlN2I0ZTZkNDIxYmNiOGNjNzEzZGU0YTRjMzI2MGU3YTFkNjFhMiBsZWdhY3ktdHJ1bmsKKzE5MjYyIDE2NmU4NzgzNmU4ZTYwNTkyNjBjOWFhN2QzNjExNmQyNmY4MTE0NzMgbGVnYWN5LXRydW5rCisxOTI2MyBhYmU4NWQyNjIyZjlmYmRlZjUzY2I1NDBlNWI4ZDJmZDEwMDkxNWQyIGxlZ2FjeS10cnVuaworMTkyNjQgMDhhYzU1NmYyZDEyZGU1OWViYTY1ZDM0NWE0N2Q5N2E3ZDVmNjkzMCBsZWdhY3ktdHJ1bmsKKzE5MjY1IGMyMmU4NzI1MDFhMGM5NTJlNDZmZjQ1OTk5MTFkNThiYTQ3YTZhZDkgbGVnYWN5LXRydW5rCisxOTI2NiAzOTBjYTQzZTVmNzlkMGYyZmIwOWZmYzFjMGE1OGNkZDRkNGZhNjY1IGxlZ2FjeS10cnVuaworMTkyNjcgN2FkOTc4MzJhNWNkMDViMTdhNWVlMjBhNDUxYjJlNjdjZjIxNWMxOCBsZWdhY3ktdHJ1bmsKKzE5MjY4IDJkNzJkYjlmNWNhNTQ0Y2RiZWQwOTJmOTA5MDRhZjNiYjhjYjc5MDAgbGVnYWN5LXRydW5rCisxOTI2OSA5OWVkZTIxOTA4NzI3MzY0MTYyYzE1YmUyYWM2MjRiM2E3NjRhYWFlIGxlZ2FjeS10cnVuaworMTkyNzAgZWM3MDllZThlNmZhNjUyN2JhZGIwM2ZkMTRhNzMyMGY3ZmQ2NTNkMSBsZWdhY3ktdHJ1bmsKKzE5MjcxIDc0MzBlYmFiZGJkY2FlZTMyOWNjYjFjN2JjMmQ3YWVjMzQ5ZDM2ZTIgbGVnYWN5LXRydW5rCisxOTI3MiAzZDRhN2NkMGJmMTc4YWQ2M2UzOGJkM2NlZWY1MGYxMzI3MjQwMmRhIGxlZ2FjeS10cnVuaworMTkyNzMgYWVkYjkzZjljNmI4MGQ1OTkxYzAyZGM5NjVlOGIwYWY4ZTA2YWNiNCBsZWdhY3ktdHJ1bmsKKzE5Mjc0IDEwZWE0MDYwYzhkYzU1YmQ1M2Y4YWZlYjAxYmYyMmFjY2NmYzVhZDkgbGVnYWN5LXRydW5rCisxOTI3NSA4ODE5ODY3ZjE0ZWY2NTliZThmZjgwNTFjMDEyNGE0ZDljNWQ0MzllIGxlZ2FjeS10cnVuaworMTkyNzYgMTg1YjkxOTY3MTQ3ZGQwMjc2NjE1ZTI4YTMyZjJiNzYxZDJmYjk5OSBsZWdhY3ktdHJ1bmsKKzE5Mjc3IDEyZDAwNDhlZDZjYTViNjhjMmU2NDdmNTZhMmYzNzg4MGE0NTdjZTkgbGVnYWN5LXRydW5rCisxOTI3OCA3ZDM5ZDlkY2YyZDYxMTM3OGZhY2M2ODA0MDgwMjRiZmI3NTU0ZGNmIGxlZ2FjeS10cnVuaworMTkyNzkgOTAxYjk0NjU2OTI4YjBkMGFlZWI2YzA3MjgwYTI5YzhmMjQ3OThjMSBsZWdhY3ktdHJ1bmsKKzE5MjgwIDFhYzdlNjE4NmI2ZTNmNzdiYTdiMzg1YWVkZGM0NjkyMDQ2NWRlOWYgbGVnYWN5LXRydW5rCisxOTI4MSAxZWY3ZTQzNzE1ZjU0MGMzMGJkZDYxMDdjNWFmY2IwZmMzOGQ2OWMwIGxlZ2FjeS10cnVuaworMTkyODIgMzgyMDQwOTNkOWM5MjlkNjQ0ZWY5YzU2YmI4OWRhZjk5NDU4N2MwYSBsZWdhY3ktdHJ1bmsKKzE5MjgzIGFhODQ0NzExNDYzYWE4OTRhZmZjZTA5YTg3YmJhYzNmNGM3ZTBlMjcgbGVnYWN5LXRydW5rCisxOTI4NCA4YjMxOGI4ZDc4Yzk0NDY2ZGNiZWY1YmE5MTI1Y2I1M2IzOTZmMjkyIGxlZ2FjeS10cnVuaworMTkyODUgNWM0MDExMzQwOWMzMjc3YzY2MjQxYzliYzdmM2NlNjFlZTkwYWM3NyBsZWdhY3ktdHJ1bmsKKzE5Mjg2IDI1ZWM0ZjhjNjBhYWNmNmEwMjgzNDliYzcyODcxMjYxZWNkNzJlMjAgbGVnYWN5LXRydW5rCisxOTI4NyAzZmZjYzliM2JhYjg3ZjcxNDg4NDM3MzA2ZDdjMDJiYmIwYWY0MWVjIGxlZ2FjeS10cnVuaworMTkyODggN2VhN2ExYzVhOGQyMDNiM2ZiMjUwMmU2OGVmMTU1YTk4ODA5ZGE4MSBsZWdhY3ktdHJ1bmsKKzE5Mjg5IGM4ZWY4NjRiYTg2MWYyMzRjYjUzNWFhZmQ4ZjgzNzVlNmFmZjNiNDQgbGVnYWN5LXRydW5rCisxOTI5MCA2NDk2ODQ0YzRhNDI4MDkwNmI3NTI5Y2QzOGQ0OTEyNDNkNDc5NWYzIGxlZ2FjeS10cnVuaworMTkyOTEgOGE0NDBmZjI3NGVjYmNiMWU1MzU2NjQxOWI4OWNlMzRlMDVjZjVjMCBsZWdhY3ktdHJ1bmsKKzE5MjkyIDJiZTdjOTBjMWRkZWQyZTY0MTBjMTc3ZDk1NTE4ZDU4ODQ1M2QxMzYgbGVnYWN5LXRydW5rCisxOTI5MyBjMTZlMDYxZDIzZTg4NmJiMWIxMWNjYmE0Mjk0OGQxNjYzNzc3MjJjIGxlZ2FjeS10cnVuaworMTkyOTQgNmI1ZTIwZjY5ZTllZTlkNTZjYmY1MGNkZTA0NjM0NDZmOGM5YTdiZSBsZWdhY3ktdHJ1bmsKKzE5Mjk1IDAwNzZlOGQyOGY5ZWJhOWVmZjQ1MDg2OTZkYzMzNzMwYWYyYjQwMDEgbGVnYWN5LXRydW5rCisxOTI5NiA1YTRiZGZjNjYwODNlY2MzM2MzYzIwMGQ4MTg0ZWFmNTI2ZTlmZjg0IGxlZ2FjeS10cnVuaworMTkyOTcgYTYyMTk5NTA3NjZlNzhhZjM4NmQ5ZTRlZTVlN2FlMmEwNWYwZTNiZSBsZWdhY3ktdHJ1bmsKKzE5Mjk3IGIzODJmMWYwN2VjNmIyYzk1NTUxNjU4YjMwYzYxMzllZWIzMjA3N2EgbGVnYWN5LXRydW5rCisxOTI5OSA2NzlmODI2YjI0Y2EyNjliOGYxOGM0MDQzZWNmNWMzZDVhZDg3ZmY2IGxlZ2FjeS10cnVuaworMTkzMDAgMjQ2YjNhNmFhN2E5NDExZWE3Nzg2MTM0YTMyNWZkMDIyZDRmMmZlMSBsZWdhY3ktdHJ1bmsKKzE5MzAxIGQ1NTdmZjBhMmY2Yzk3ZDQyYTgwMzI0MzY5OWM1MTAxY2U1YjFiMGUgbGVnYWN5LXRydW5rCisxOTMwMiA3YTM5NzA0YTUwNDdlNGY2ZmM3MzAxMTA5MmJlMmRlOTIxNThjZDMyIGxlZ2FjeS10cnVuaworMTkzMDMgYzQ1M2ZiZjMwZjYxMzc3ODFmNGY1ODRkMDY5ODE2ZDg3ZDFjNWIwMyBsZWdhY3ktdHJ1bmsKKzE5MzA0IGIyYzUxNmJiNzM0YTcyOWVhZjJkZTZjYzc2NjZkZWNlNDBjMzRhMjUgbGVnYWN5LXRydW5rCisxOTMwNSBjZTk4NTAwNTExMjA0OTBkZTMwODUyZDNlYmM5N2MwYTBkMjU4ZWVjIGxlZ2FjeS10cnVuaworMTkzMDYgYjc4YzhkOGM1MmU2MWY2YTE2YzY5NTgyNWVkNzNiYmRkZjNkZjA3YSBsZWdhY3ktdHJ1bmsKKzE5MzA3IGY5M2UyM2E4MmE3M2QyZjFiYTlhNmUwYjAyNDA5MDc4ZDU2MWQ0OWMgbGVnYWN5LXRydW5rCisxOTMwOCA1NzU4NzI1ODRiMGNmYzZkZDVmMzI2MTA4MTYwODlhMGYxOTJmZWQxIGxlZ2FjeS10cnVuaworMTkzMDkgYWM1MmQzNzI3ODY3M2ZjZjQ3Mzk0ZWU3NzE5NThlZGVjMzhjMzdlNCBsZWdhY3ktdHJ1bmsKKzE5MzEwIDE4NzcwNTdhYTkyNjIwNzYxN2I5NWY2YzllODQ2ZjQ4NjUzNGM3YTMgbGVnYWN5LXRydW5rCisxOTMxMSA2NGEzMmRmNWMwNjM0NWQ4OTA2ZWIyNWY3ODIzZGRiZWRmYzQwZmUyIGxlZ2FjeS10cnVuaworMTkzMTIgYWYzOWRlMjYyYjljOWI4ZjFiN2Y4OWFhYmNlZjVmMzE4NGZjMGExNCBsZWdhY3ktdHJ1bmsKKzE5MzEzIDk5YmVmZWFjODQwMGZmYTgwNjI5OTBiMTY1OGFlZTc1ZmVlMGI3MDggbGVnYWN5LXRydW5rCisxOTMxNCAyODg1YTMzOTYzNWVkZTlhMDI3MWMyOTBkMzJkMzU1ODhiOTkzMjAxIGxlZ2FjeS10cnVuaworMTkzMTUgMmUzZGQ2MmNlYWM1Zjg4NDM5ZTM5YzM4MDEyYTNiMzZiMThjYjU5ZiBsZWdhY3ktdHJ1bmsKKzE5MzE2IGRkY2U3MTVlNDliYTA2Nzc4N2Q1YWEwOWJhMDAzNGI4YmY5MDg4ZGMgbGVnYWN5LXRydW5rCisxOTMxNyBiMzA1YzE1MzZiN2FhNGQ0MjBiZGJkODdkZmJiMzVjZjM3MmI1YTVlIGxlZ2FjeS10cnVuaworMTkzMTggYTUwNmYzYjc1Njk0MTQ5OTNlODE0ZjA3NzVmODEyNGM4NDM3MjYxMyBsZWdhY3ktdHJ1bmsKKzE5MzE5IDNjYzg2MzU1ODc5MzNlYzVhOTFhYjYwY2IzNmI5MzgzMThjMGM3YWQgbGVnYWN5LXRydW5rCisxOTMyMCBjOTlkNmQ1YWZkNzVkMGJjYjAwZWJlOGFiOWJhNTc2MzIyNGJkMmU1IGxlZ2FjeS10cnVuaworMTkzMjEgNWVmNzFjYjY2NDk1MzYxNDFmZGVmZGQ4NWVhYjZlMTNhOTk2YTI3ZCBsZWdhY3ktdHJ1bmsKKzE5MzIyIGMxOGFjOGMyZjAzNjViYTdkM2E1OWU2NzI1OGQyMDE5NGIxOTY0NjEgbGVnYWN5LXRydW5rCisxOTMyMyAwYmIxNzEyN2IyZjhlYTNjMjhhOWZhYWQ2YzRjZGM3M2M3ZjExZmQyIGxlZ2FjeS10cnVuaworMTkzMjQgYTRmNmI2MzMyMzBjMzcyMmQzN2E4ZGI1YjY3YWI5YTFmMzI5ZTM4OCBsZWdhY3ktdHJ1bmsKKzE5MzI1IDJjYTg3ODNjZThhMzVhZTdlMmNlOTIzYzE0Y2Q4ZmUxZmMyNjhiMGIgbGVnYWN5LXRydW5rCisxOTMyNiAyODZhOWQ5ODczNzUzNjNkM2UyYTU5MjU4OGU3MTU2ZDkzNDk1NTBmIGxlZ2FjeS10cnVuaworMTkzMjcgNjVhNzA4OTUwOTIyYjZmOGY4MzI0ZjkwOGI1MGE2YzAzMmJjMGQ1MCBsZWdhY3ktdHJ1bmsKKzE5MzI4IGVhODhjMmE3MzE3MzA0NGYxNDgwYTliZmYxMmFkOGEzNTYyY2MxOWQgbGVnYWN5LXRydW5rCisxOTMyOSAxYzcxYWE3ZDU1MTMxYWJmMmQwMGJjMWEyMGY2NDI5ZjJhY2VmNTA1IGxlZ2FjeS10cnVuaworMTkzMzAgZWQ0MzM4YzdlOGE0NWM4OTdiZjg0MDNlZjU4ZGRkOTM0NjU0MmJlNCBsZWdhY3ktdHJ1bmsKKzE5MzMxIGMwYjBmYzEzMjc5ZTIzMjE2NDdjMjQ4ZGE3MDdkNjQ0ZTk1Y2Y5M2YgbGVnYWN5LXRydW5rCisxOTMzMiA4MDdjYTY5NzYyMGFlZTE4YmMyNmFlMzBkMTAyZTNkOTlhYmY5ZWE1IGxlZ2FjeS10cnVuaworMTkzMzMgYWIwMmJjNmE1YWIyY2FkYzA4ODU5NmM2ODE4M2VmMmUyN2EyM2Q3ZCBsZWdhY3ktdHJ1bmsKKzE5MzM0IDU0OWU5OTNhNDc2Y2Q3MGYyNTM2OTMwMzFhNDQ0YWYxOTU2YmMyMjIgbGVnYWN5LXRydW5rCisxOTMzNSBmNWJjYmE1ZmE0MWM4YjBjNmYyYTk3ODRiNjUzNDIwMTRmNzYxY2FlIGxlZ2FjeS10cnVuaworMTkzMzYgNGQ0MDZjMjZjMTZlYTc5ZGE3YTM2OTczMjczNjAxZDJjMmU1MDRjNiBsZWdhY3ktdHJ1bmsKKzE5MzM3IGI2MzEzYzkxMTRlZDZkMTJjNmE5Y2RmMTYxYTNkMWQ4Y2Y2NGMzYzAgbGVnYWN5LXRydW5rCisxOTMzOCBmN2IxNjdjODMzMTg1OGRkNzQ4MzVmZDRjODE5YzgyN2MwMTQyZGJiIGxlZ2FjeS10cnVuaworMTkzMzkgNTdjZTkyYTE2YjNjOWVlYjI4YTYzMGI3NWMyODk2Y2M2ODc5YzliZSBsZWdhY3ktdHJ1bmsKKzE5MzQwIGVkYzBjOTlhNjlkNmQyMjU2MjI3M2RiYmI1OWM0NWM5YzZiNmFjMDIgbGVnYWN5LXRydW5rCisxOTM0MSBkNTk2NjNkM2U0MzNhMzU5OTdjZTg2OWRjMzM0MGFiMGFhMjQ2MWFiIGxlZ2FjeS10cnVuaworMTkzNDIgZTk3MjE3ZjViMzIzMTlmM2E3Zjk4N2UzMjJlZmNiNjdmZjJkZDk5ZSBsZWdhY3ktdHJ1bmsKKzE5MzQzIDgxMWIwY2NiNjJhZWNlOTM3ZDEwM2RiOWVjNWEzZmM3NDEwOGU5ZDEgbGVnYWN5LXRydW5rCisxOTM0NCAxZmI3YmVmYjU5ZjA3M2IwMWJhMTQ0N2RmMzU2MTFhMDdlZWQ5N2JhIGxlZ2FjeS10cnVuaworMTkzNDUgYzIzM2VmY2I0ODllNWJmNWY0N2M0ZTY5NGZkZTEwZDQ4YzNhZmNjMyBsZWdhY3ktdHJ1bmsKKzE5MzQ2IGJmOTc4MThkZDllMWUyOGI4YWQxZGRjOWFmNTk4ZTMyMTIyZDFlOGYgbGVnYWN5LXRydW5rCisxOTM0NyA1ZjEyZGY4OGEyMDg1YWEyMzg5ZTBlMjUyZGIxZTlkZTliNTE1NGE5IGxlZ2FjeS10cnVuaworMTkzNDggNDY0ZGU4ZGZhNTllOWE3NWRhZDlkNDcxOThmNmM4MmVkOTU1YjA2NyBsZWdhY3ktdHJ1bmsKKzE5MzQ5IDc3MWRiYjE1NTU3NWZiY2ZlOGRhNWQ3ZDhkY2U0MjhlMTkwMDVjNjUgbGVnYWN5LXRydW5rCisxOTM1MCA5MmNiZWZkYjY3NGE2NWNkNzgyMWJjYzY3YWVkZGFhMjg5YjZjOTkyIGxlZ2FjeS10cnVuaworMTkzNTEgYTY4ODg0ZGUxMmVjNTRlNTRiNjhjOTZkNzM1NTNmZGZhYmRhMGZkMiBsZWdhY3ktdHJ1bmsKKzE5MzUyIDg3ZjJhYmI3MzE4NDhiNmZmYTJiZjI0OTY4YWVmZjY1OTY2YTdjOGQgbGVnYWN5LXRydW5rCisxOTM1MyBhNGM2ZTQwMWVlMTg0YzNmZmQ1MjU4MDQ4MzM0MzEzZTIzYjMwMjc2IGxlZ2FjeS10cnVuaworMTkzNTQgZmM0YWNlMDI0MmNiMDk0YjZiMzZlZDYxZGIxNjY4M2U3OGM0NzNhZSBsZWdhY3ktdHJ1bmsKKzE5MzU1IDZlNWFiNzg0MGIwNWQwYmM5NGQ5YmZlZWMxOTA1YTJjZmJjNTBjMzUgbGVnYWN5LXRydW5rCisxOTM1NiBmNGQxNWZkZDE1ZGQ3YjFlZTc1MWNiNzY5MjM3ZjJlOTA4NmM2NDYwIGxlZ2FjeS10cnVuaworMTkzNTcgNjlmMTYyZGNkOGI0YzA5YzVlZjRkZGQ0YjU3YjkwN2I3OWQ2ZjhjOSBsZWdhY3ktdHJ1bmsKKzE5MzU4IDFmZjlkNTcxYmFjMDlhNzgxNTY3ZTA2YTkxN2RhNWUwOTlmODBlODIgbGVnYWN5LXRydW5rCisxOTM1OSBkMzI5NjA2MzYxZjhiM2JjNWRlNTg0ZDMzZWYzN2Q5ZDUyY2U4ZTg5IGxlZ2FjeS10cnVuaworMTkzNjAgZjc1MWI5NmRlNjIxZWU3MTRlNWFhZTViYmU4YzY4MGUxYzg2OWU3NCBsZWdhY3ktdHJ1bmsKKzE5MzYxIDU4ZGUyODI5Y2ZkZDNiODk4MTAyNTUzY2Y5N2VkZjgxMGM5NGNlYTEgbGVnYWN5LXRydW5rCisxOTM2MiBjOTdlNjE4OWFkOTZhOWVhZDUyYWJhNTFmNGI5MzhjNWUyNzk4YjUzIGxlZ2FjeS10cnVuaworMTkzNjMgYjExNzgwYjA2OGZhNmMxMjI5Y2JlZDI5NWRmM2NiZTk3NDA3NWZhYiBsZWdhY3ktdHJ1bmsKKzE5MzY0IGJmMDMwOWQ1ZmMwYTkzOWU5MGFlYjFiNzYzZTEyOGJmNDE2NzJhNWQgbGVnYWN5LXRydW5rCisxOTM2NSA4ZDc2NTVhYzhiZjg2OGE1MzRlMDQxMzg5NjkwNjY5Y2NhZDIwZDg3IGxlZ2FjeS10cnVuaworMTkzNjYgNmZmY2U4YmUzZTBiOGRkMzE0YzY5NmU2NjFjNjQ4MDZlZGE0YWY2YiBsZWdhY3ktdHJ1bmsKKzE5MzY3IDg4Yzg3Yzg5YjQwNjgwMDc4OTRhMTE5MjVhOGI2Y2U2NWM0ZWNhMjIgbGVnYWN5LXRydW5rCisxOTM2OCBiMjZjYmMxZmU0ZTNiNWJmNjE5NmJhNjk1Mzg5MTZkNjRjOTM2ZDQ1IGxlZ2FjeS10cnVuaworMTkzNjkgYmRmYzZiZjdiMGRhZTdkMjI4YWE3ZmZkNzUwOWZkNmRiYmRlZWFiZSBsZWdhY3ktdHJ1bmsKKzE5MzcwIDVjM2JmMmU4OWQ4MDExYWZiNWZlZjY4Yjk4YTcxYTI2YjM3NTljN2YgbGVnYWN5LXRydW5rCisxOTM3MSA1ZjU4OGRkNTQzOWJmMDA2YTE2ZGYwZjE0NTFkMGRmNGI5MDkwZjExIGxlZ2FjeS10cnVuaworMTkzNzIgYzg3ZmRmN2RlMGU2YjhmOTE3NzAwZDEwOGYxYWUxNzJhNzJmY2I2MiBsZWdhY3ktdHJ1bmsKKzE5MzczIDE4ZWYzZDVlYWI0ZjIyY2I5M2E3YzcwMDJhNmFjNmZhYTg0NDdkNjAgbGVnYWN5LXRydW5rCisxOTM3NCA4OTNhNTE1ZDMzMWE3M2FhYjM2N2Q5ZTFiYWY5YWFjZWJmZGY1Yzg4IGxlZ2FjeS10cnVuaworMTkzNzUgNTY0M2UzN2I5OWFlNjllZWY2M2JiZWU1ZTRiN2MwOTY4MTkxZjdjZSBsZWdhY3ktdHJ1bmsKKzE5Mzc2IDkwYzYwMGE4MTllOTZkNDYwNjk3OWUyZDY4ZTM4ZGQxNGZkYjQxMTIgbGVnYWN5LXRydW5rCisxOTM3NyA4YmE2YmM4YzJlMDkzODFmMzc2ZjExOTM5YTk4OWM5ZDNjNDExNGM0IGxlZ2FjeS10cnVuaworMTkzNzggYWY4ODQ2NTk5OWM3YTZjMDMzNDZiYjBiOGY3NWQ3ZThmYTFlZTI2MCBsZWdhY3ktdHJ1bmsKKzE5Mzc5IGVlZTY3YTg0ZTVmYWFmMzAwYTFlZjI2ODFiODk5ZTM2ODAxZDJmZjkgbGVnYWN5LXRydW5rCisxOTM4MCBiM2Q5MjNhNjYxNTJjZDhkNTM2OWY2OWVjZmE0ZmQyNDhkOGUxMTU1IGxlZ2FjeS10cnVuaworMTkzODEgNjMxZDRjOGRiNzg0MDgwMjg2N2Y5M2IzOTZmMjI1YTYxZjU3YzM1NyBsZWdhY3ktdHJ1bmsKKzE5MzgyIGM4MDIzODVhNmFjM2U2NDIyNjkyOGFjMDNlMjhjNjg3ZDVkNDUzYjggbGVnYWN5LXRydW5rCisxOTM4MyBlM2Q0ODgwNzQ4YjVjNDc1YzRjNThlOGZmMDAzZWVhNTNkMWI0NDlmIGxlZ2FjeS10cnVuaworMTkzODQgZjQyNzk5YzY4OTI5ZWU2NGM5YzgyNGY2ZjkyYWFkNWRlOWFiODI5NSBsZWdhY3ktdHJ1bmsKKzE5Mzg1IDlkNjI1MzAzZjkxNGJlODMwYTk5MjdkM2E1NGEyNTEwNWQ2MTU4NTUgbGVnYWN5LXRydW5rCisxOTM4NiAyNGU5NDZlOTUxZmEyYTM1YTE4YTU5MjFjYTRkNjlhYTQ1MGMyMzU4IGxlZ2FjeS10cnVuaworMTkzODcgYzM2OTY3YmRjOWRkNGRhYmI3OGJjNWY3MjQwY2UzMjA5YjdkNGIwYSBsZWdhY3ktdHJ1bmsKKzE5Mzg4IDU3ZDI0OGRkYmUyYWJhYjRkZmY0YWE2NmM1YjA4NjhiODM3ZGU5ZjYgbGVnYWN5LXRydW5rCisxOTM4OSBhOGUxMjNkZjI2OGI5Y2JmYTA1MDE4NzAwYjZkMWE2ZTU5MzQ3MjE3IGxlZ2FjeS10cnVuaworMTkzOTAgZjNlODNlNTE0ZGQ4OWFmY2VmODA0OTgwZjdmNDAxZGNmMWJmMWNiZiBsZWdhY3ktdHJ1bmsKKzE5MzkxIDc1MWU5Y2M0NzdkOWQwMzQ5Mjc1ZGFiOTNhY2JhOGE0YTI0NjJjMDUgbGVnYWN5LXRydW5rCisxOTM5MiBhODBmNjdiNzIzMDhlOWQwNTE1YmRiNDlhZmZhZGVmYmVjMjU2ODVlIGxlZ2FjeS10cnVuaworMTkzOTMgMDZkZDk0ZTIwZjNiODFiY2MxNDA4ZDUzNzI4YjAxMjY1NDBkM2VlNyBsZWdhY3ktdHJ1bmsKKzE5Mzk0IDdmYzY0ZGYxM2RiMGFjYWZjNjMzOTFkMDJkYzRhYTNiNjE1MTYwNzQgbGVnYWN5LXRydW5rCisxOTM5NSBjNDhhZjM5Y2IyOTJlMDFiN2M5MmI3MDA3NDZmY2RmNjhlOGE5ODJjIGxlZ2FjeS10cnVuaworMTkzOTYgYjU5ZjNhMWViMTIzOTFiYzFhZWRhNzVhNjlkOTJjMzM5NWYxOTBiNSBsZWdhY3ktdHJ1bmsKKzE5Mzk3IDA4NGIzZGM5YjZmZjMxMDJhZThkNWY5ZTliN2NiNGI3OWI1NDkyYmEgbGVnYWN5LXRydW5rCisxOTM5OCA1NGY3MjA5Y2M3MWU3YjY5MDlkMzJmMmMzNmQxNGM4ZWY0MTdmNGQzIGxlZ2FjeS10cnVuaworMTkzOTkgZjRlNzFiYWI3ODUzYzk3YjU1Nzk3OTA5YzBlZmU5NjY0Y2ExZDNkYyBsZWdhY3ktdHJ1bmsKKzE5NDAwIGE1NDBjNmZkMGNlZDFkODgxZGJlY2ExN2I4MjFiMjEyN2UzZjQxN2MgbGVnYWN5LXRydW5rCisxOTQwMSBhNDdkOTNlZjEwM2E3NjczYmMyMmYzYjY1ZTdmNTJkY2FiMzJiOGQ2IGxlZ2FjeS10cnVuaworMTk0MDIgODIzNmYzZTc1ODVlMTRmYzgwMDBhNGE5MjZmNGUwNTUxN2M0MDY3NiBsZWdhY3ktdHJ1bmsKKzE5NDAzIDhlZWQzNzNiY2U3ZmU1MGFkZTJhNjFmNTc4NGMwNTBhNGY5OGE1YWIgbGVnYWN5LXRydW5rCisxOTQwNCBmZWY0YzAzOTczM2RjYjgxZGM3Nzk0YmMyOTU5Y2U0MTZhYTBjM2JhIGxlZ2FjeS10cnVuaworMTk0MDUgMTIxNGFiZWEwYzdiMmE4MzUxMTcwZDg4ODQ1NWEzZTZkZDJlMWQ0MCBsZWdhY3ktdHJ1bmsKKzE5NDA2IDQ2NTI3MjNlYTY1NWNhODJhOGZlMjY4YTFlMWM0NjY3YTcxM2ViNmQgbGVnYWN5LXRydW5rCisxOTQwNyAzOGVjZmQxMWQ5YjUzYTI2YzRjZWIzMWNjYzE3ZTQ4ZWI5YWU4YzY3IGxlZ2FjeS10cnVuaworMTk0MDggNjBhMmU5OWM4NjNiZTk3MTllMzE0Mzg5NTY4ZGIzOGE5ZTA1MWEwYyBsZWdhY3ktdHJ1bmsKKzE5NDA5IGNjOWNiMWU5MGIzZDI0YmQ3OGQzNDAzYjM3ZmFiYTg1M2QxNTcyYzMgbGVnYWN5LXRydW5rCisxOTQxMCBkYTg2ODFmMTdiNTAwZTY0ZTFkZTY3MWQ0NGU0NTNiNGZlYjU3Y2IzIGxlZ2FjeS10cnVuaworMTk0MTEgN2U5ZjQwNTFiYTRhZjEzZmZkNWE1Y2M5ZjFlNGVhYzAyY2YzM2QyNiBsZWdhY3ktdHJ1bmsKKzE5NDEyIDhmNzBiNWRkZDVjMDhmNjQwODhmNjc4M2NhYWNkNWM1MzdmN2ZiNmUgbGVnYWN5LXRydW5rCisxOTQxMyA3ZGU1MDQzODI3ZjcwZmRjMTg2YjZkZjZlZWVjYmMwMjE4NzFkNGExIGxlZ2FjeS10cnVuaworMTk0MTQgZTU1OTJmMWVmNDFmODY1MWYyN2UzZmI2NWM4YjEwNTUxZDZhOGFmZSBsZWdhY3ktdHJ1bmsKKzE5NDE1IDlhOTU3OTRlMGY3ZWM2NWI1MzY5ZGQ4NDVmN2IwZjAwYjhiYjk2N2QgbGVnYWN5LXRydW5rCisxOTQxNiA0NDRjMGVlZDVhNjZjNWFjOTU1MjFiNDczZDA3ODc0YTRmMTI0YzM4IGxlZ2FjeS10cnVuaworMTk0MTcgZDM4YWZiMjBjMzM2YTcyNGFlZTIzMjQzODkxNzkzNWI0NWQ2NGFlNiBsZWdhY3ktdHJ1bmsKKzE5NDE4IDI3ZmNlMmQ3ZmFjZGI0MjdkOTc2OGFiODFhNmNjMmNlNTRmZDBiODQgbGVnYWN5LXRydW5rCisxOTQxOSA5Y2U5ZTAzNDJjYzFmMGYwMmU1OWJlY2JlZTc2MGIxNjlkNzliYmVlIGxlZ2FjeS10cnVuaworMTk0MjAgMTkyZTk4NTVjN2MwMDY1NTZhZDI3OGUzMGViYTY3YTlkNWY1ZDRjZSBsZWdhY3ktdHJ1bmsKKzE5NDIxIDhjMWM3ODdiZDZmOWUyYjVhNWRjZDM1ZWQyNGQ2ZTMxOGQ1MmFhNjEgbGVnYWN5LXRydW5rCisxOTQyMiBlOGU2MzZjYzFhMDkzM2Q2ZTc3Y2NkZjBjMTMyYmYwMjMzMTU0MTNmIGxlZ2FjeS10cnVuaworMTk0MjMgMGQxMzA1YzgzZGU0YzllMGRjNTgxZGYzZjAzMTZlMmIzNjE4YjUwMSBsZWdhY3ktdHJ1bmsKKzE5NDI0IDYyMzQ1NjU3NmQ2YThlNTRkNWU5MGI0NjgwNjhiZDhmYzEzNTU4ZDIgbGVnYWN5LXRydW5rCisxOTQyNSAzMGQzNGJiZjg2MjAxYWE5OGM4YjRhODZhNjhlZjNhOGYxMGQzYmY5IGxlZ2FjeS10cnVuaworMTk0MjYgZDM0ODRjYTQwYjhhMGQ3ZjkxMWNhYzEyNDJkNjJlYmEzNjZlNjlkMCBsZWdhY3ktdHJ1bmsKKzE5NDI3IDIzYjVlN2QwM2Y3NmZiYjg1OTQwYjAwMjAwOWFlZDExMjU2ZGQ2YzggbGVnYWN5LXRydW5rCisxOTQyOCA0Y2VkYzgyNmJlZThiNmQxOTg2NDg4ODk5MTM5Y2M0ODRhZjIwOTY2IGxlZ2FjeS10cnVuaworMTk0MjkgYjRmZjFjZjRhMTBmYWZiODc4Mjk0NjFiN2Y1NTI5OGU1YzQyMWYyNiBsZWdhY3ktdHJ1bmsKKzE5NDMwIDkxNzYzMDEzYzM2ZmNmNWM2ZTFlMDliYzBjMmNjNDMxNjIzZGMwYzcgbGVnYWN5LXRydW5rCisxOTQzMSBjOTA0YTQwZTE0ZWE5ZmYzZTQ3MjAxMzI4NmIxNWEyMmEyMzA3N2Y0IGxlZ2FjeS10cnVuaworMTk0MzIgODY1NzM4NGRjYzRhYjI4M2VkZDNhNzJkMzdjZGQzYjg2M2M3NmYwZiBsZWdhY3ktdHJ1bmsKKzE5NDMzIDJjNjQxN2VmNDYyODUwYmRlZjg2N2VhYTZiYTBjOWEyMzg1MDk2MTEgbGVnYWN5LXRydW5rCisxOTQzNCBlZTBkZDBjNzk2NGVkYmNhMDY2M2EyNjRkYTVhMDY3NDkyOTI2YTE1IGxlZ2FjeS10cnVuaworMTk0MzUgNDc3MmZlMmRiMmM0NmMyNDVhZTM0ODViODM2OTE1Y2JkNTczYjkxYSBsZWdhY3ktdHJ1bmsKKzE5NDM2IGJmOWMyNGJlZGE3ZDU3NTM0ZTkzMGY2Njk5NTk4ZTcwMmZiN2UzMDcgbGVnYWN5LXRydW5rCisxOTQzNyA1ZjNhODM1MDYxNWM4YjljZTYzODcyMzQ2OGEyOWI1MzNjNjc3MTUzIGxlZ2FjeS10cnVuaworMTk0MzggZjY1NDQ2OGI5YWU4YTlhMDUxYWFhMjhkY2U3ZWYxOGE0NjMxMmZmNyBsZWdhY3ktdHJ1bmsKKzE5NDM5IDA2OGNiODQ5NGI3YjFlNjYxZmYwMzQyMjY5OTdkOTdjMzk2ZTA4MzMgbGVnYWN5LXRydW5rCisxOTQ0MCBiNDM5ZWVkYTAwODI4ZjNiZjBkNmFlNTA1MWE3MmVkNjQ3YzdlMjhhIGxlZ2FjeS10cnVuaworMTk0NDEgYTYzZGM1OWJlMGY5ODZhMjQyYWIzZjQ0NDA4OTgzYjA4OGMyMzIyNCBsZWdhY3ktdHJ1bmsKKzE5NDQyIGRhMTVlNWY2ODY0NGE5NjBkZWIwYjZjNzI1NWI1OWZlMWEzOWE3NWYgY25yaS0xNi1zdGFydAorMTk0NDMgZTJiMmZlN2ZhYmI4OTQzOTA0MWUxYTVjODI0NzM2NzZiZDhkZDgxNyBjbnJpLTE2LXN0YXJ0CisxOTQ0NCA5ZDA4YzM3NDczY2I5MjZhYmY5NjM5ZDY3NjY1ZjE5Njc1ZGMyZWU0IHJlbGVhc2UyMC1tYWludAorMTk0NDUgYzBjZGY4MjU5OWUwM2YzOTRjODUyMTZmMGI2Y2NmMTdkYjI1YjEwMCBsZWdhY3ktdHJ1bmsKKzE5NDQ2IDlhOGU5NjFiNTA1ZjAzMDY5NmQwMmNmMWM4YTJjMzAyODcwNDFiNTMgbGVnYWN5LXRydW5rCisxOTQ0NyA4MTdkZjllZmFjYmFlNzQzMDE2ZjU4ZWY3NzFkMGFmZWYxMGU3NGE4IGxlZ2FjeS10cnVuaworMTk0NDggM2Y2YzA1ZTA0MDgyNmRjNzIyOWQ0M2RiMzc0MTQyNDE2ZjAyZDhlOCBsZWdhY3ktdHJ1bmsKKzE5NDQ5IGFhZTJiYjhhYzM3MzllMGM1OGU0ZjJkZjdiZDViZGNlMWEzOWE2NGMgbGVnYWN5LXRydW5rCisxOTQ1MCA1ZmEyNTU0MmI4OTY3NWQ0MmIxNWQ4ZGZhNTViNmY2NjIzMmIzYzQ1IGxlZ2FjeS10cnVuaworMTk0NTEgOWJiMmI2OTYzYzgyNWFhOTBlNWVlNmJjMGY3OTExYmE3Y2FjNTdmOCBsZWdhY3ktdHJ1bmsKKzE5NDUyIDU2YTgxMDZiYWY2MzVhZGEyOTAxOTRiNjE4YjA1YzFkNWU5ODhkZTEgbGVnYWN5LXRydW5rCisxOTQ1MyBiYTg0NDYzZWZjN2JjNWNiZWVmZDJhNzMwYTRiOGI5MTI2OGNkMjAwIGxlZ2FjeS10cnVuaworMTk0NTQgZjgxM2U5ODdlNjVjZTQwYTgzZjRlOTM2MmNmMGViYjQ1N2JlZjY5MCBsZWdhY3ktdHJ1bmsKKzE5NDU1IGRmN2Q1MmFlMjBlNGNkMDUzNjBjOGExZTdhYTA4Y2I5ODM3OWE1ZWYgbGVnYWN5LXRydW5rCisxOTQ1NiA3NGFlODBkOTBmYTZjYzI2NDM2NTlhODg2NTljMWZjMTA0NTJkZWNjIGxlZ2FjeS10cnVuaworMTk0NTcgYjM2MjUxMzE2ZjZhZWRhNmUzYjlmYjUxZDk2MDc4OGFhMTJkM2IxNiBsZWdhY3ktdHJ1bmsKKzE5NDU4IDllZjk3OGM2ZjAzOTU2NTBjOTliNzJiOGEwMTE0ZDgyYjA0ZDliMzQgbGVnYWN5LXRydW5rCisxOTQ1OSBmZmRjNzE4NWJkYWJkNjNlMDQ5MzBiMDE1NzZhOGY5MjY3ODlkMGFjIGxlZ2FjeS10cnVuaworMTk0NjAgMDg1NTExOTE2Nzc2MjY5NmM2YTE4YTRhZTU3Y2FmZTA4MDY0MDQzYiBsZWdhY3ktdHJ1bmsKKzE5NDYxIDA3ZmZiMGMzYmQ1ZWU2N2MxOGJlYjdiMjIxNDJmNDUzZDU0MGFlMzIgbGVnYWN5LXRydW5rCisxOTQ2MiBlMTA0MzY3MjU2ZjAyMDM3NTRkNGZmYTVmNzNiODA3NmU0OWRjNGMwIGxlZ2FjeS10cnVuaworMTk0NjMgMjYwZjAzM2FlN2RmMzg5OGI5MzNiNmYyZTc1Y2NhYWNmMWQ0MGUwZSBsZWdhY3ktdHJ1bmsKKzE5NDY0IDg4NWQ1NDUyNDhkYjM4MDc5MzM3MTUxMDNhYzAyNjJiM2Q5Zjk4YmMgbGVnYWN5LXRydW5rCisxOTQ2NSAwYjQ1NWE0Mjg5Njc3ODdlMDRjY2Y4YzM4Yzg0NmE0OGM5NzJjNDk5IGxlZ2FjeS10cnVuaworMTk0NjYgOTZkODg2OGEwMDI4NGQ5OWM4OGUzOTQyODI0YTc2NTE5YzIwNjA2MiBsZWdhY3ktdHJ1bmsKKzE5NDY3IDBjZDg3YTVkMWVmOTc0ZWFlN2YwMWMyOThiZWE5NDNhZGM1ZmQ0NmUgbGVnYWN5LXRydW5rCisxOTQ2OCBlZjJiZTEyYjE4ZmVhMzk2NmE5N2U4YTYyNDRiMzY1ZDQwM2RiMGVhIGxlZ2FjeS10cnVuaworMTk0NjkgYjA1YjhiNmMwYjQzMDk4OWM3YjdiNmQ4YzQzOWI1NWZlMTg2OGUyOCBsZWdhY3ktdHJ1bmsKKzE5NDcwIDQ0ZWY2NDRjYjUyNmVlYjdmZGMyYTQ0ZDhlN2Q4YTA0Y2NhYTQxMDcgbGVnYWN5LXRydW5rCisxOTQ3MSA5NDFhNzZmMzg3NDc0MjU2MTQxOGRiOWRjNDY3ZjhjMTlkYTAxYThlIGxlZ2FjeS10cnVuaworMTk0NzIgZjQyNWQ4NTIzNDgwYjAxZmMzNjQ2MTA5Mjk1NWI3YWU2OGUxNjRjMSBsZWdhY3ktdHJ1bmsKKzE5NDczIDczMzA2OTQ5MTE5YzA0ZDM1OGExMDU2OGFlMGQyM2M2ZjU4NDk2MDEgbGVnYWN5LXRydW5rCisxOTQ3NCBmMGY1NzI5ZDYwM2ZiNTlmOGE5NmY2NzM3MTU5ODMxNmM2YjZlZDk0IGxlZ2FjeS10cnVuaworMTk0NzUgZTNjZmZjMDM5NGJmYjZjMDQ1MmI1ODY1Yzg3NzczMmQ2ZDYzMDY0NSBsZWdhY3ktdHJ1bmsKKzE5NDc2IDhlZjI0NjdmMDE5MWJiNjEwMDRiMzAwNmFkZjBmOWYwOTdmN2VkNDkgbGVnYWN5LXRydW5rCisxOTQ3NyBmNjhkYmZmZmY5MjdiZmE1NjZmZDJjM2E5ZThhZWZiNWI2MTMwYWQ5IGxlZ2FjeS10cnVuaworMTk0NzggMjBlNTJlNWE0MDhhMTZmMDI4NjZhNmZhZTIyODYzZDA0MmE0YTFkNiBsZWdhY3ktdHJ1bmsKKzE5NDc5IDhmZjRjZjQ5MjY3ZWM1NDc5MDFjMGRlNmY2NTIxOGZiYjEwMGM2YmUgbGVnYWN5LXRydW5rCisxOTQ4MCBlMmE2MzU4NDU2NmY4MmRiOTM3ZTBhMzMxYTFiM2JkZjhiMjUyN2U2IGxlZ2FjeS10cnVuaworMTk0ODEgZTA1MGI5NGYwNGQzYzk2NzI3OTNlZjZhNDljZDE4M2UzZmY5Mzc4OCBsZWdhY3ktdHJ1bmsKKzE5NDgyIDU2OTE0ODg0YWFiNjMwMWI0NzYyNGVmY2IwNjA4ZDZjNWMxNzIzMTkgbGVnYWN5LXRydW5rCisxOTQ4MyA0ZTJkMWM2ZjI5MDRkYTY0YmVmM2M1ZDEyOTFkZjlhZDgwODM4Y2UzIGxlZ2FjeS10cnVuaworMTk0ODQgMWM2YmE5NDZkOGZhMGJlMmU0NDAyMTNmYjRjZDNhNzQ1ZjVkNDE5OCBsZWdhY3ktdHJ1bmsKKzE5NDg1IGM5NTg2Nzg3MjBmZGFjNDI0NjU0NWY1YTg5ODU0NWRkYjEzMDJkMDYgbGVnYWN5LXRydW5rCisxOTQ4NiA5MTc4MGVhZDhjMjViMjcyN2M0MjJjYjhmN2VhNWZjNGU2ZTI2NGM5IGxlZ2FjeS10cnVuaworMTk0ODcgM2E2YjRhMDAzYTE3ZTRiOWFmNmZkZmIxZDMzYTczNDllOTlmNzIyYyBsZWdhY3ktdHJ1bmsKKzE5NDg4IDY3YTA2NjZmMTFlMzIzMDcwZjUzMjg1MjMxMWZhZDc1YzM0MTY2MDkgbGVnYWN5LXRydW5rCisxOTQ4OSBjOWYyM2Y4MGZjOTMwZDg1ZmIyOWZhMzNlYzg0NGViY2E2YTRkMjk5IGxlZ2FjeS10cnVuaworMTk0OTAgNjExNzY4MzQ5ZGQ5MGYzOWFkZjEwOWNkY2Q5ZTFhZTA5M2ViMGUxYyBsZWdhY3ktdHJ1bmsKKzE5NDkxIDA2M2Q1YzRmNmNlNThiMzQwODgxMWM5ZDQ3N2FmNzU4YTUyOTEzNjIgbGVnYWN5LXRydW5rCisxOTQ5MiBjODdlNzAxN2Q2NmIzM2E4OGFiZDk5ZTM5MWY5NTkzNWJkNzFiOGU0IGxlZ2FjeS10cnVuaworMTk0OTMgOTZlOWNjYmYxNjVmNmE0ZTIwMTVmNzlkMTcxNDgyZjNhOTA5YjE1OSBsZWdhY3ktdHJ1bmsKKzE5NDk0IGM5NTA5ZDg0ZjNkZjdmOGViMGY2MzhjODI4MjMwMWViNjg0NGE2NmYgbGVnYWN5LXRydW5rCisxOTQ5NSBlMzgxNDUzMDYyMzEyNjM1YTc0MTYzMzE5Njg3YjRjNWE5OTk2ZWEyIGxlZ2FjeS10cnVuaworMTk0OTYgMDU2NGIxMzRiNTg0MDM1NTFiZGJhMWQwOThjYTJmNDUwY2ZkOTk0NiBsZWdhY3ktdHJ1bmsKKzE5NDk3IDIxNzI3NzU4MzQ2OGQwNTY4ODRlNGYzYjVhZDViNTlmZmZjNzllMjIgbGVnYWN5LXRydW5rCisxOTQ5OCBkNDU1OWI3NDU3YTBlMzJhMzE1MjVkYWFiNDI2OTk4MjFjMWQwYzBlIGxlZ2FjeS10cnVuaworMTk0OTkgMmZiNjQ5ODM5NjVmZjIyM2FlYTI1MjM5MWZmMzRjYTFiNTNhNGFlOCBsZWdhY3ktdHJ1bmsKKzE5NTAwIGUzMGMxOTc1MzJhYTEyNmE2ZGFhNGIwN2ZjNjk4MzZhMDYxYmFjOTIgbGVnYWN5LXRydW5rCisxOTUwMSA1OWY0ZjY5NjAxMDE2OGRhMThhOWJhOWE3OTBkMmY0ZTJlM2Y3YTNkIGxlZ2FjeS10cnVuaworMTk1MDIgNzk1NjhjMGQzZTc3YTY5MzYyYjM1NzljY2Y1YjQ3NTAzNTY1MGExZiBsZWdhY3ktdHJ1bmsKKzE5NTAzIDE0NmRmZTdlMDMzODJjZWIyMTkwY2IxOWNlOWI3ZDY5MTlkMzBlN2MgbGVnYWN5LXRydW5rCisxOTUwNCA3ZDFlN2I2ZWM4Mzk0NTM0ODZkYjJhY2U4MWVmMWY2MjU5MmNmZTljIGxlZ2FjeS10cnVuaworMTk1MDUgMzhmNjk3MmRjOGI0MTdmZjJiYWI5ODUzMjE1NWVjOGQ5MWNjNjE2NCBsZWdhY3ktdHJ1bmsKKzE5NTA2IDE1ZjAwNjRjODQwMDk2ZWZkYzlhZGM1NTZmMTczNWM3NThhYTE5MWQgbGVnYWN5LXRydW5rCisxOTUwNyBmN2E5Nzc2NzcxYWIwZWZlMWQ2NzIwOTJlOTAwMTBiYWFhNWQyM2U1IGxlZ2FjeS10cnVuaworMTk1MDggN2YxMjdiZTA3YzUwOTU3NzgxZTFjMzgxZWRmNzdiMzc5MDk2YTYxMCBsZWdhY3ktdHJ1bmsKKzE5NTA5IGQ2ZDVjMTFmNzVhOTIyZTk1Y2UyYjkzNzRjYzBlYWJiZDYwMWY4NzggbGVnYWN5LXRydW5rCisxOTUxMCBiOWU1NDgxZjY0NGMzMGFmNzQ2MzRkNmM3ZTVkNDljMTM2ZjE0YWUzIGxlZ2FjeS10cnVuaworMTk1MTEgNzI4YzExNTYyMTg3MmYxNzAxY2VlM2RjZmU3ZjM1M2I4ZjNjZGNjMiBsZWdhY3ktdHJ1bmsKKzE5NTEyIGE1MWI5OTYxZjNiYmIwYzA2MDVkYTdlMTJkMGU5Y2I0ZWYwNzk0N2EgbGVnYWN5LXRydW5rCisxOTUxMyA4ZDg1MDk2MTc4NzQxZjU5NDA4ODc4ODg4ZTI4YmQyMGZhMmM4ODJjIGxlZ2FjeS10cnVuaworMTk1MTQgZDNlOGI4ODA2NTFiN2Q0NzM1NGU5ODk5MWIxMzNmMTJjNGIzMjE5MiBsZWdhY3ktdHJ1bmsKKzE5NTE1IDkxNTIxYzUyYjFkYjU1YWZjNmQ2ZmNjYTQyMDQ4MzljMzlhYTRmZGYgbGVnYWN5LXRydW5rCisxOTUxNyBkYTlhNGExNjk4ZjFmNjg0ZTc5NjkxYjk2NjRiN2M2MDdiYmUxYzkyIGxlZ2FjeS10cnVuaworMTk1MTggYjlmZThiZDllNWY0ZmJiMDZkMjk5NjdhYjJmZTZiMGMwZGJkNjc4NSBsZWdhY3ktdHJ1bmsKKzE5NTE5IDU5MjFiMTI5ZjM1MDQ4NDM1YzA2ZWM3NDlkOWY4ZDQ3MDYxMWFmZDggbGVnYWN5LXRydW5rCisxOTUyMCAxZDdhZWQwNzY5NjQ4MTI2YTVmNjA0YzkzYzE4MmY3MWRmOGJiMzA1IGxlZ2FjeS10cnVuaworMTk1MjEgN2Y4ZTgxN2FjNDIzYzQ1NjlmODkxNTY4YjdkMTAxYTdlMjBjNzllYyBsZWdhY3ktdHJ1bmsKKzE5NTIyIDc5ZDUzMzkzNGFjMWIzMDk1ZTBjNGY5YTRiNzMxZTIxYzBlZmZmMjggbGVnYWN5LXRydW5rCisxOTUyMyAxYTVhNDQxNzcyZmY2M2FhOWY5MThjMWJlOWViNTliYjJiMDZhMWJjIGxlZ2FjeS10cnVuaworMTk1MjQgZGVlYzZmYTgwNDcxMDgzN2QxNzY4MTJkZjhlOTVhZDE5MzI4OTUzZSBsZWdhY3ktdHJ1bmsKKzE5NTI1IDAwNDlmNzdiMzZjNjIzMjM3ZTcxZDI5NjlkMWJlMTY3N2ZmMDk4N2UgbGVnYWN5LXRydW5rCisxOTUyNiA2YWY0MTVmMGMwMWViMDBkMjM3MjQ5NjVjZTIzOWU3MDIzZTYxNjc5IGxlZ2FjeS10cnVuaworMTk1MjcgODljMWNjZWY1Y2U4MzYwZTNiNDY2NDAzYTAzZDcxMDQ1ZjUyNjYxOCBsZWdhY3ktdHJ1bmsKKzE5NTI4IDk0YTM4NDQzZjk5YmI1NzA1NTVjYjE3MWQ1NDVhOTkyOTljNTM1NWUgbGVnYWN5LXRydW5rCisxOTUyOSA1NzQ2ZDBiZjVmMDRkZjdmMjUzYjljYjIwZjU0NjYxNTZmNmQyOGMzIGxlZ2FjeS10cnVuaworMTk1MzAgZGUwZTg3NTJkNWI3MmNlNzQ1MGNmNDg1NTBjMzgzYjExYTJkMzIyZSBsZWdhY3ktdHJ1bmsKKzE5NTMxIGU5ZmNiNDZjMWYyY2FjYmMzOTc0NmQ1ZTdmNTQ4MzZhZGVmNjIxZGIgbGVnYWN5LXRydW5rCisxOTUzMiA3MjUyMzgyOTM4NjljYzVhYzlmNjY1YTcwYzcxNDYzYWU3ZWYzNzk5IGxlZ2FjeS10cnVuaworMTk1MzMgNTdhOTcyMmM1ODhkNGRhMmI4YTVhMGU4OTFmOTJiZmQ1N2M1Y2Q2MSBsZWdhY3ktdHJ1bmsKKzE5NTM0IDk5MGZhMjVjZGUxY2NmMTU2OGM4Njk0MzBhOGRlNjYzZWVmMjJiMDEgbGVnYWN5LXRydW5rCisxOTUzNSBhOGEwMGRlMDI0ZTczODBhOWZlODRkY2JkNzI1ZjJhN2NiNTZiOWFkIGxlZ2FjeS10cnVuaworMTk1MzYgOGJjYzEwZGI1NjJlNGY5ZmY4ZTIyZjI3YzEzNThkMGZkN2UwZDFiYSBsZWdhY3ktdHJ1bmsKKzE5NTM3IDBkM2FlOGYwODQ5ZDkyYTUzOTdlMWU0OGNhODhlN2JkNjY5MzRmNjggbGVnYWN5LXRydW5rCisxOTUzOCA1YmNmOWM0OWI2ZTc4YzQ1ZmI2ZWEwZTc3MmM3YmFmMTkyMWJiMGM4IGxlZ2FjeS10cnVuaworMTk1MzkgZjRlOTdlYzFkYzlhYjYyZTYxNTJlZmRjYTI4OGMyNzQ5YTY5ZmZmNyBsZWdhY3ktdHJ1bmsKKzE5NTQwIDk2M2Y5NWViNzY0NmRhYTE4ODE4YTQ5MWYzMTI2MGVlNjI0NDNkODYgbGVnYWN5LXRydW5rCisxOTU0MSAyOTRiYTE2YjBlODhhNDc2M2QzZWEwN2I1ODFhNTRkNGE1ZWE4NWFjIGxlZ2FjeS10cnVuaworMTk1NDIgYjk1NWU3NDk1NWQ1NGM5NThhNjkyMjI3OTE3MTgyMmYwYmQxOTgzMyBsZWdhY3ktdHJ1bmsKKzE5NTQzIDA2YWQ1MDUzZjQwYTA2MmM5MDc3OTdlNTAzYzBiMTM1YmU0ZmY4ODkgbGVnYWN5LXRydW5rCisxOTU0NCBkYjRmYzgyYWE0NGJhOWI1M2I2ODRhNjgwY2ZiNWFmYWExMjU1MGNiIGxlZ2FjeS10cnVuaworMTk1NDUgMTdlZDYxZmQ1YjY1NDA5MzNmMzU5NmM3NGEzN2MwYjA4ZDBhMmE4MSBsZWdhY3ktdHJ1bmsKKzE5NTQ2IDI2YWNjMjQ0NWYzNzM3MzJmMTdkZDUxODJhYzBmMmUxYzA2MWFhMjkgbGVnYWN5LXRydW5rCisxOTU0NyAzY2IwMGNiZTc0NTUwODRlNzIxZTkxY2NhYThkMzU1M2Y2NDlhYzIwIGxlZ2FjeS10cnVuaworMTk1NDggZDk0ZmVhNTc4MzRjMzNhMDFkYWIwMGM5MTM4ZGNiNzU4MDc1NjEwNSBsZWdhY3ktdHJ1bmsKKzE5NTQ5IGY3YWUwZDkzN2NkMDc0MzFhMzAwYzcyMzMwOWZlODI2MjBhMzY0MTUgbGVnYWN5LXRydW5rCisxOTU1MCBhNmYwODBmZTUyNTExZjkyODZhYTMzNTI4NzJlOGQ5MGYxZmY0NjBlIGxlZ2FjeS10cnVuaworMTk1NTEgYTBiYWY0Y2Q4MzVjZjJmNDBkYjkxNTQ0NjkyY2I2OTJiMDU4NGU1YyBsZWdhY3ktdHJ1bmsKKzE5NTUyIDEwMmZmZTE2MTFlMGY4NDc0OWQ4ZmRmYzAyYjhmOGFlZDJjYTNiODUgbGVnYWN5LXRydW5rCisxOTU1MyA2ZWJiMTRiMTQxYWQ1MWI5Y2M0Yjg4ZjIxN2I4ZGIzYjE4M2VmMDg4IGxlZ2FjeS10cnVuaworMTk1NTQgNzM2YmNlZWNhM2RiZDYzYWY4MzI4OGRiMmJiYjE3NmY3MTdkYTRmNSBsZWdhY3ktdHJ1bmsKKzE5NTU1IDQxMzRiNTk3MjIxOWNmYmM5ZWZlNjNhNzU3MzNiYjgwNTVmMDkzNTUgbGVnYWN5LXRydW5rCisxOTU1NiA2NjI2NmM0NmNjZmRjZDYyYWE5N2E4ZWNiM2YyZDY4N2Y2YTYxMmY1IGxlZ2FjeS10cnVuaworMTk1NTcgMmE4NmQ1MTlmODBlNWU4ODUyMTM3Y2Y5ZGViYzgzNTYzN2U0M2ZkMyBsZWdhY3ktdHJ1bmsKKzE5NTU4IGRlNWE4ZGQxYzZmMjQ3NTZmYTQzYTQxNjNhMGM3ZjMxY2I5YzVlODEgbGVnYWN5LXRydW5rCisxOTU1OSAzYmRkNTY1Yzc3YmRkZGQyMjgwNGYwNzNlMTU5N2VmMmI3NWZkYWFhIGxlZ2FjeS10cnVuaworMTk1NjAgZTE0YzVmMzRmYTA1ODU2YTU0MTJjYTg1ZDAzMmE0MTkyYjNhOTRkYSBsZWdhY3ktdHJ1bmsKKzE5NTYxIDU2NDkyN2M1NTc0MjVmOGJmNThjZGJhY2QzODYyZGFiNDE1Zjk5NGMgbGVnYWN5LXRydW5rCisxOTU2MiBjMDJhOWRiNTZmZTE1ZDViMDUzMjYwM2E0MjVjZDlhYWY3MjIxYzVjIGxlZ2FjeS10cnVuaworMTk1NjMgMWI0MDBjODU0YTJjMmZmZTQxODlkMjg0ZWU2ZjI5M2RiNjRkOGI5NCBsZWdhY3ktdHJ1bmsKKzE5NTY0IDczMzRiMmNlZGRhOGU3NTBiZTJlYjUzNDhkMGI3ZTdjMTljN2EwZDMgbGVnYWN5LXRydW5rCisxOTU2NSBkMmE4NDE0YTFlYWIzZDFlM2Q4NWQyOGQ2Yzc0ZTM0MmQ0OWVmYWE0IGxlZ2FjeS10cnVuaworMTk1NjYgNjBjOTBmZjljMmY3OGFkNmQ4ZTgzOGIyMzRhMDcxODEzNDNhODhjNiBsZWdhY3ktdHJ1bmsKKzE5NTY3IGY5ZjRjMjMzZWUwMzdjZDUzNGM1NjhjZTEwNjU3MDI1YTQ4NzNkMjUgbGVnYWN5LXRydW5rCisxOTU2OCA4MTcyOTA2YzZkYzhmYjM3ODYxNTg4YmJiYzBlYTZlNmE1YTQ3YTlkIGxlZ2FjeS10cnVuaworMTk1NjkgMDQ2ODU5NmUzMDE4NzQwMDhkMDdlNmE3YThhMzVlMDEwZWU4ZThjNiBsZWdhY3ktdHJ1bmsKKzE5NTcwIDkzMmExZjhkOTJmNzA5MTcyYzI3ZDZhOWY4ZTRiMmNkNzI1OGRiYmQgbGVnYWN5LXRydW5rCisxOTU3MSA2MTdjYjQwY2I3NGI4Zjc0MjAwMWQxNjc5MzNiZTIxMjNlZWZmZjNkIGxlZ2FjeS10cnVuaworMTk1NzIgOTY5NmM5NWQwOWI3NDI0Y2QxMjNkNDBiZThmOTk3YWUxYjdjMDBmMSBsZWdhY3ktdHJ1bmsKKzE5NTczIDU3Nzk5ZjAxM2FhZDI1NGE4Zjg5ZGY2YjYxNGE4YjRiZDk2MGU4NDQgbGVnYWN5LXRydW5rCisxOTU3NCAxY2YzNmViNWEyNWMwZjU2MDJmY2UwNzNmYzQzNjFjOGNkOThlNzY4IGxlZ2FjeS10cnVuaworMTk1NzUgNTg5MDhiYjQ3Y2NhY2FkN2E2MTcwZGQwZTgxNWQ3NjNlZDBkZTgxNiBsZWdhY3ktdHJ1bmsKKzE5NTc2IDJjMWY4ZDNiYmEyZjgxZWJiNTI3YjY2NGQ1MjE5MDk3NjFlOTU4YWMgbGVnYWN5LXRydW5rCisxOTU3NyA2MzQxZjhkOTA5YWM1ZjU2YzFjMmY3NGQ2ZjlkYTA2MjM5YjY0ZDkzIGxlZ2FjeS10cnVuaworMTk1NzggZTRiNDdiNDM5M2M4YWQ0ZDZhY2QyNWUyOGY4MWI5M2Y4NDAyYTI3NyBsZWdhY3ktdHJ1bmsKKzE5NTc5IDZkMWZkOTI0NGRhZGFhYmVmMmE5ZWVlZTIxNmNlNzExMTY1ZmNiN2IgbGVnYWN5LXRydW5rCisxOTU4MCAzZTkzOTZhYzRiYTA3ZTRkY2Q5ODYwNDU1OWY5NjRjMTUyNDQzNzQ4IGxlZ2FjeS10cnVuaworMTk1ODEgZWY2NGRjNjg1MjBmZGI5OTJmYWU1MmRmOTQzNDdkNmI1ZWRmYTA5YyBsZWdhY3ktdHJ1bmsKKzE5NTgyIGExZDhiYjY4NjU5YTQ3NDM3ZWVmNzBkZjdkZDIzMTQ0OWMzMDg1ZTIgbGVnYWN5LXRydW5rCisxOTU4MyAwMWMyNDcwZWViMmVhMDM0MTU4NzZjYTM3YzU0NmRkZmMzYmY3ZjlhIGxlZ2FjeS10cnVuaworMTk1ODQgODljMTI2ODg3ZGYwOTNlMGQzN2I3NTQ5MDJhZTgzYWZhYjY2ODg3NiBsZWdhY3ktdHJ1bmsKKzE5NTg1IDQwN2Q0MDIyY2M4YzA0MjhiMTU0ZmU5NmE1OGU1MGQwM2UxZGM0MDUgbGVnYWN5LXRydW5rCisxOTU4NiA0ZGIwZmRkYjY5MTc4ZGJmY2ZkN2JhMWFhZjM5M2Q3NjA5MDQ3NWMwIGxlZ2FjeS10cnVuaworMTk1ODcgY2MzMzhhNWMxNmU1YzQyMDNlNGZlMzFkMTY1MTVmMzM1ZTExNDg2ZSBsZWdhY3ktdHJ1bmsKKzE5NTg4IDU5ZjFiNTdiYzkwOTk4ZjA3NDk3Njg2Y2FjNjZhNTI1NzIyOWRmMjMgbGVnYWN5LXRydW5rCisxOTU4OSAxMjA2MjFiZDMzZmNhNTlhMTAyNmExNmI0YmRhNWI0MTZiM2M2NzVmIGxlZ2FjeS10cnVuaworMTk1OTAgZDE3MGMxZTc3MmM1NTNhOWI1ODk2YjZhNGExNGRlZjVkN2U0OTNkOSBsZWdhY3ktdHJ1bmsKKzE5NTkxIDU4M2E4MTJjNDVjODg2MTM0NTU2N2E1Y2U3Y2I4YzFiNzVkNDNhYmIgbGVnYWN5LXRydW5rCisxOTU5MiA4MDBiMDA0YWNjNzE3ODBlNmQ5OTNkMzJiZjgxNDM0M2NhOTE1OTI2IGxlZ2FjeS10cnVuaworMTk1OTMgMjU2ZTE1OTlkOGQ5NmMzYmJkNzQ3YmMzNjFmZjVhMGYxNDY5YjRjMyBsZWdhY3ktdHJ1bmsKKzE5NTk0IDc0MTQ1YWIxZmRjNWJkOWRmNTAzZmE2NzViNjQ5OTJiYzY2NWIzZDUgbGVnYWN5LXRydW5rCisxOTU5NSBlODFkZGE1ZDM3YzRiMWIwNjMwMjA2Mzk4ZDZiNTFmNDI1MGU4ZTJlIGxlZ2FjeS10cnVuaworMTk1OTYgODZjNzY4M2I2MDZhOTBiZWU5Y2M5MDg0MGVhYjVlYjY4OTQyMDIxOSBsZWdhY3ktdHJ1bmsKKzE5NTk3IDhmMDM0YmNlZTg1NmJhZGYwZjU0NjRmNzIzMjc2MjI3ZGU4MDhiMTQgbGVnYWN5LXRydW5rCisxOTU5OCBjOTlkMTlhOTZlOWViYmVjZjYyZGM3NzE1MTY2YWU3ZmVkYjliYzE4IGxlZ2FjeS10cnVuaworMTk1OTkgMDVlYzFiMDU0YjRkOTNmZTA2ZjI4OWU3ZThkMzczY2ZkZDdmNmQxZCBsZWdhY3ktdHJ1bmsKKzE5NjAwIDlmODZjYmE0NzY2YjU0ZWU5NTE3MDBkZDgwZjUwZDViNzg3Y2IyZTAgbGVnYWN5LXRydW5rCisxOTYwMSBiMzI3OGJmNGYwOTE4MjM3MTNjZmM0NzExMzMyMGMyYmJjZGE5ZTc0IGxlZ2FjeS10cnVuaworMTk2MDIgMzg2Y2M2OThhZWY5NTU2ZjZkYjQwYmIxYzQyNzllYzFlYjJjMTMwNyBsZWdhY3ktdHJ1bmsKKzE5NjAzIDg0NGZkZTYwMGE2MWQzMzg5YWFiMWJmMWRlZDZmNmE0NWNmMDZjZmMgbGVnYWN5LXRydW5rCisxOTYwNCBkZGFmZGJmOTE0OTg1Yjg5MTRjZDhhMDRhNTcwOTk0ZjZhNjMzYzc4IGxlZ2FjeS10cnVuaworMTk2MDUgYzEwMDU2MTAwZWE1ZGQyZmU4NGQ1MmMyZTMyNzBkODliYmU5ZWUwYyBsZWdhY3ktdHJ1bmsKKzE5NjA2IDg0NjZiYjM3Mjg5Y2Q2ZTc2MTBhYTg4ZDM4ZmVhMjQ3MTQ1NjhmYmYgbGVnYWN5LXRydW5rCisxOTYwNyBkYjYxODk0YjBkNmZjM2U0MDBlNDAyNDRjMDVmOGM5ODY4NDEwOGVmIGxlZ2FjeS10cnVuaworMTk2MDggODVkMmFmOTcyZTYyMzA0YzBiOTIwNjIwOTc2ZGZhM2VmNzRjMmEyZCBsZWdhY3ktdHJ1bmsKKzE5NjA5IDM1ZjU3YzcxNzBiZDQwYTc1ZDhkYzMyYzIxMDU0ZWZiMWJmMmEzMTUgbGVnYWN5LXRydW5rCisxOTYxMCA0Y2E2MmFmZWMwMDQ1MjVmYzNjYjczNGZhYWY1NjYwY2ExZTkxMjUyIGxlZ2FjeS10cnVuaworMTk2MTEgYjQyYjIyYTkyMjhjYzg2MDVhNTlmOTE2YjA1NDk5YWJkMDhmMDczMSBsZWdhY3ktdHJ1bmsKKzE5NjEyIGUyYTBkYjgzOWViMWE0M2I0NTI2ODYzOWQyZTU1ZjI5MmM0NjdjMGYgbGVnYWN5LXRydW5rCisxOTYxMyBlNDQ0YTUyNzExODEyY2NjYzcxMGE5YWRjMDAxNTQxYzlkZDMxZmIyIGxlZ2FjeS10cnVuaworMTk2MTQgOTUxODg5M2NjOGE3ZDZmNWQyMjZlY2Q3ODBjZWMyNTQyZjMzZDA5YyBjbnJpLTE2LXN0YXJ0CisxOTYxNSAwNmY2ZjBlMWUxMDYxNmM4YjY2MzRkNzdkMWY5OTYzOTkxMDVjYzAyIGNucmktMTYtc3RhcnQKKzE5NjE2IDNjMGEzNTAwMjEwOGQyZTEyMDQzMWQ1NGQ2YzNjYmJmNTE1N2I1YWMgY25yaS0xNi1zdGFydAorMTk2MTcgNmE1NWI2NzdmNTA5NjQ1ZjNjODdiYmVhOTUwY2IxOTgwZWVhMTYyMCBjbnJpLTE2LXN0YXJ0CisxOTYxOCA3ODE1OTE5ZTJhZjhiNjNlMGVhNzYxNjZkZDM1YTkwZDA1NjMxZTdjIGxlZ2FjeS10cnVuaworMTk2MTkgOTBlOTBjOTIxOThiN2RhNjA5ZTU2MGZjM2IzZmM3NjdlNTM2Y2VjMyBsZWdhY3ktdHJ1bmsKKzE5NjIwIGNhMWJlN2QwMDQxM2U4YWFhNWUzOWNmNWFkYzM0MTYwY2FjZTc4MGYgbGVnYWN5LXRydW5rCisxOTYyMSA1YzNhZWRjOTY5ZGE0NTY3OGNjOWIwZWQyMGYzOTM0ODVlOGIwZTQ0IGxlZ2FjeS10cnVuaworMTk2MjIgNTE5NzdhZjIzMGZhNDdiZWU5NDgxMzc2MzFjMDViNzE4MjkwNzJlZCBsZWdhY3ktdHJ1bmsKKzE5NjIzIDIzYzdhMDEwOGY1OTBjZmM3YzFiOTgxYjAyYWVjYzUzNTE4NTdiZTEgbGVnYWN5LXRydW5rCisxOTYyNCAyZmI0ZDYyNWJkMzlmMDFhNGEyY2JmODdiY2Q4OWJlOTJkNjVmMGExIGxlZ2FjeS10cnVuaworMTk2MjUgMzQ0ODU5MWU4Mjc1ZTdhNzVhNDcyZTAyOTVmNGVmYzgxNTE3Y2M5YiBsZWdhY3ktdHJ1bmsKKzE5NjI2IGUxZmE5OGZkMjM5ZTc1YTEzZjA4Zjc3NWE4MmE5ZDM1NjI4NGU1MDkgbGVnYWN5LXRydW5rCisxOTYyNyA4OTk2Mjg4YTg4NzNiMWM0ZTc4MTRiYmIwYThlY2RhNTI0NWZiOWVmIGxlZ2FjeS10cnVuaworMTk2MjggNmM5NmU4MzI4ZDUzMDFiN2I2ZDVjMTQyMWM5OGQxMjZhMGJlNDdkMSBsZWdhY3ktdHJ1bmsKKzE5NjI5IGE4ZTUxZjZiNWNmYzA5N2M1ZDRmYWJkODI0NTIxMTM1YzVlNDI4NWYgbGVnYWN5LXRydW5rCisxOTYzMCBmZjEyMmM0MDRmNjQzMWM2ZjQ1OGE0YjFmZjc3NDRkMzk4NWRmYzk0IGxlZ2FjeS10cnVuaworMTk2MzEgZGI0OGQwYjEzYjFlZDAxMjIzNzE5MDU1ODM5NGYzNzc3NzUzMzQzOSBsZWdhY3ktdHJ1bmsKKzE5NjMyIDJmNTg1Y2JlNzFkYTU5ZGUzOTdhNzdjMGE4NWQ3MDhiNWEzMTAzNDcgbGVnYWN5LXRydW5rCisxOTYzMyBhN2M1MTRlMTUwMDM2NzBhYWI5MWZjYzU5ZDA3M2ZmYTM1MzA2ODEyIGxlZ2FjeS10cnVuaworMTk2MzQgYTgwNGM5MWMxODJlMWMxNWUxNzk2YjE1MWZjMGYwOGNkMjdmMzY2ZiBjbnJpLTE2LXN0YXJ0CisxOTYzNSAwYTM4ZjRkOTY2N2VjZWZkOWExOGYxZjY4NTgxYWI2MzdkNjE5ZTA3IGNucmktMTYtc3RhcnQKKzE5NjM2IGY0ZjI4NjBkM2E1ZjNlMDk5OGM4Y2QzYTZmZDJmYzYwMDYyMGRlMDcgY25yaS0xNi1zdGFydAorMTk2MzcgYjRlNDJkMjk5NjNkZDRjYmQyZDJjNTZlOTBlODI5MWRiMjJmMmVmZCByMTYxLWJyYW5jaAorMTk2MzcgN2VlMzc4ZDVhNDFkMmQ4MzE2ZWUzMjZmODE4OTkyNDE5YTQ4MDRlMiByMTYxLWJyYW5jaAorMTk2MzkgNjM0OGNkNDU5ZWU0OWUzZTU1N2U3ZjViNTEyN2UwNzhiMzBmN2IyYiBsZWdhY3ktdHJ1bmsKKzE5NjQwIDY4MGM4ODVkZmFjZTkxYjk0NjE2MmViNTYyMmZjZjNjZTZlMTU5NWUgbGVnYWN5LXRydW5rCisxOTY0MSBiNmE1MmU0MzgzNDQxZjVhMzMxNDAxYmJiZDIyYjNmOTlkZTEzMzM0IGxlZ2FjeS10cnVuaworMTk2NDIgZDQ0NmU0ZWM5YjdiMzk3NzBjZmY3ZmE5MjllNGY2OWIzMDQ2MThhNSBsZWdhY3ktdHJ1bmsKKzE5NjQzIDkwNTAxMWU4NzQwYzU0NTljZjhiYjFiODc5MjNhMDVmNGRkN2ViZjkgbGVnYWN5LXRydW5rCisxOTY0NCAxNGFmZmJkMDM3NTA2YzRkOThiYzk4MDc0MGUwMmEwNjU0NjFhOWE4IGxlZ2FjeS10cnVuaworMTk2NDUgYjIzNTE2MGYxMzQ2NzA4NTE5Y2UyNWY1MmExMDA4YmY2MzUxMDhkYiBsZWdhY3ktdHJ1bmsKKzE5NjQ2IGU0ZDliYTBhYzBiMmNhMTRjYjM0MThkMjc2Y2Q0N2NhNzBmY2Y3N2UgbGVnYWN5LXRydW5rCisxOTY0NyA2N2VkOGE2OTA1YzMzOWRhOGU1YTlhMTg5MWZjNjA2NWE0NGU1YmMzIGxlZ2FjeS10cnVuaworMTk2NDggMzgzOWYwYWExZTdjY2VjZThhMTIwODczMTNmNDkyZjM3NzllYjc0OSBsZWdhY3ktdHJ1bmsKKzE5NjQ5IGE0MTgyYzY3OWM2MWM0NDgyNTI0MGY2M2M0ZWE0MmRmZjUzYzM3YWMgbGVnYWN5LXRydW5rCisxOTY1MCAyOTE1ZWIwN2JkMjVhMzRiOWZlODRlZjNjNzkxMGE4MThlZDA2NDU5IGxlZ2FjeS10cnVuaworMTk2NTEgYjllNWMxMjIyMTJlZjM0Nzg2YjEwOWI1Mjg0Njk4MjExYjdjZjdkOCBsZWdhY3ktdHJ1bmsKKzE5NjUyIDY4YmQ5NmU0MjZlMzJiYjFiOTkyYmExMWJmMTAxMmFkZmU5YjRjZDQgbGVnYWN5LXRydW5rCisxOTY1MyBlYjI5OTI0YTMzNzBlMWZhODIwYWFiYjgyMmRhZWM1Njk1YzQ3M2MxIGxlZ2FjeS10cnVuaworMTk2NTQgYmY4ZDJiOTJlYTBlZjMyNTFjY2FiNmMzM2IwY2FjMTBjOTJiMDhkNiBsZWdhY3ktdHJ1bmsKKzE5NjU1IDVhMTIzMGRlNDM2YTg2MDU3ZjdmZDQ1ODI4MzIxZjYzMWU2MmM4NGQgbGVnYWN5LXRydW5rCisxOTY1NiA1ODY0YTljNThjODFjMjI4MWE2MTc4NTRkMTlkN2NlNGE5MTE2OWE1IGxlZ2FjeS10cnVuaworMTk2NTcgNGZlZWE5OWJlNzc3Zjk2MjdiNDBkODY5ODJhNzBiZjgyYWQ3Y2E2YyBsZWdhY3ktdHJ1bmsKKzE5NjU4IDYwZmQ5ZDQ1NDIwNmRhNTdlZjVmMjM5OTIyNzllMzZkNmFjMmUzZWQgbGVnYWN5LXRydW5rCisxOTY1OSA5OTc3ODA2Yjg2MTc0ZDk2ZGI3NzYxMzM4ZTY3YTRiYzc0MjQ1YzkwIGxlZ2FjeS10cnVuaworMTk2NjAgMjZkM2U4ZWFjZWRmYWRlZTZiOTA5YTVlMTRmNGRjNGE0MmU3NzYxMyBsZWdhY3ktdHJ1bmsKKzE5NjYxIDk1MTljYWQ2YmY5ZDRjNTNiNmIxODNlMzYwZDRkMjBhYzdmMGExODIgbGVnYWN5LXRydW5rCisxOTY2MiAwMGZlYTQxNzMwY2Y0M2M1Y2M4MTg4OWYyZDg3MjJkZDM1NTM0MGJmIGxlZ2FjeS10cnVuaworMTk2NjMgZTk5MWQ4ODQzYWI0N2U5MTZiOWM0YjRmNmEzYTkyZTgyMTRlYzYxZCBsZWdhY3ktdHJ1bmsKKzE5NjY0IDY3YmFkOWYyMGIyOWMxNzkzZWU5YWM3MWZjZmU5YmIyNTMzNzg3MWUgbGVnYWN5LXRydW5rCisxOTY2NSBhODlmNzgzYzEzM2E1MDI4ODhmZTcwZjMyZTdjMTQzMTU2OTYwNmRjIGxlZ2FjeS10cnVuaworMTk2NjYgZGFlMzllYmJjMDA0MWNjMTViZTJjZmI1Yjg2M2E3NjhlMTkzYmU1NCBsZWdhY3ktdHJ1bmsKKzE5NjY3IDdmOGY3YmViZDFmNjQ2NzY3OWY3MmVhMjk4YTM5MTFhZDE4ZmRmOWMgbGVnYWN5LXRydW5rCisxOTY2OCAyOWFhODMyYjg3ODc0Nzg2NmQ3OGY5ODAyZGNhZGZjMDY0ZjNmYmQ3IGxlZ2FjeS10cnVuaworMTk2NjkgYjgwMjQzZjdmOTdjYmU2YTc4NjQwNWRjODljNTlhMTg0OGVkZjhjOCBsZWdhY3ktdHJ1bmsKKzE5NjcwIGFjMTgwYzk4MjI5NTAwMWE3ZTQ2NjI1NDBjYjhlNDNiNWM2MTU0ZDYgbGVnYWN5LXRydW5rCisxOTY3MSAzYzIxNDJmMDc2YjQ2ZmUyYWIyYmQwNDY1Zjk1NWM0ZmRiNDdhYmE2IGxlZ2FjeS10cnVuaworMTk2NzIgMjU4ZGNhZmUyZDBiOGRjNmJjZWMxNmUyYTIzMmQ5MTg3N2EwMjY4ZSBsZWdhY3ktdHJ1bmsKKzE5NjczIDA4ZDkzNzEwN2ZlNmNjMjA5NWIxOGE2NTQ5M2M4ZGQyNGQ5MjRmNWQgbGVnYWN5LXRydW5rCisxOTY3NCBlMDA2MmU4OWQ4ZjQyN2E1ZmE4OGU1MGZlNTEzNWE2ZTkyYmZlZDBhIGxlZ2FjeS10cnVuaworMTk2NzUgMmM5MTg2ZTQwYjMwNzc4ZmQwNzAxYjE0YTczNDFiMmFhZjExNjNhYSBsZWdhY3ktdHJ1bmsKKzE5Njc2IGE4Njk1MDUxOTU4NjNjODdhZWYyMDM3MzJjZmRlZWVjMTNhZjUwNTcgbGVnYWN5LXRydW5rCisxOTY3NyA0NDQ1OGZlOTQ3ZGRiMDU1NDVjZjhhODQ2ZmU4YjI1NzhjYmI2NTljIGxlZ2FjeS10cnVuaworMTk2NzggODE1Njg3OWZlNjBkMWUyZGFiMzA3OTZiOTI0ODk4NmVkMzE5MjA0YSBsZWdhY3ktdHJ1bmsKKzE5Njc5IDgzODk1YjRjZTBiYmYxZWVmNWU0NzBmM2M2Y2RiZTM0NmQzZWZkN2EgbGVnYWN5LXRydW5rCisxOTY4MCBiMjU4NWQ4ZmRiOGJiZjQ0MjI1Y2Y3MmRmNjFkZjg5NTExNDNlYTM3IGxlZ2FjeS10cnVuaworMTk2ODEgNzRmZDE5NTljZjQ0ZWUyYjNmYzAyMTZkMDIzNzA2ZDE1YjM4ZmIyZCBsZWdhY3ktdHJ1bmsKKzE5NjgyIGFlN2Q3MjA3ZGE0ODgwMzZlMmY3MThmZGFhOGJlOWY3NmQ3OTg3ZDkgbGVnYWN5LXRydW5rCisxOTY4MyA4YmYwYzQ5ZmNlMTAxYWJhOTE3OTZiNGUwNDE4OGExMDgyNWVjMDMzIGxlZ2FjeS10cnVuaworMTk2ODQgNTBkOTE1OWVkYWFiNjc2YmJmZjJlZTc3NGUyYjI2ZTQzZjVmMzljOSBsZWdhY3ktdHJ1bmsKKzE5Njg1IDFkMWJmNjgxM2VlNTY5ODc5ZGM1MDc2OTMxOWY5YjNkY2U2YzgwYWQgbGVnYWN5LXRydW5rCisxOTY4NiA1ODBhZDY4NTQ0NWY1MTgzYTYxNjFhNWRjYzYyNDk0M2YzZTdhNTM3IGxlZ2FjeS10cnVuaworMTk2ODcgYzNmYjA0NGQ3ZTZmMWFjOGQ2MDYxOTYzYTdiYmFiNTUyMjhiODY3MCBsZWdhY3ktdHJ1bmsKKzE5Njg4IDRlYWRkZjQ3OGU5N2E0NjNiNzdhOTkxN2E3M2Y2YWEwZmEwOWU4ZjQgbGVnYWN5LXRydW5rCisxOTY4OSBiMmNmZjU3MDU3NzVlMjY5OTM5OGNkZGM3OTE2MTA1MTEzMTI2ZmEzIGxlZ2FjeS10cnVuaworMTk2OTAgNzY1ODAxZGUxNTEyMDgzZDZhNDk2MGMwYWJiY2QzZmVjNWU1OTBhMCBsZWdhY3ktdHJ1bmsKKzE5NjkxIGZmY2IzY2ZmOTQzOTRkMDUyMzI2MzE1MGE1NTI2NGZkMWZkMWYzMzAgbGVnYWN5LXRydW5rCisxOTY5MyBmZDJhODY5NzY5YjI0OWI4NzY3MzEzOWQ5ZTE2NGVlMTcyMDI4NTk0IGxlZ2FjeS10cnVuaworMTk2OTQgNTNlOGViZDExNjIwZDQ1YzA4YTcyODRkNzMxNTU4MjVkYmE0NjU0YyBsZWdhY3ktdHJ1bmsKKzE5Njk1IGY1NGJhZTg2YTJjNmJjYzYxNmJlMGNlMmVlN2M4MTFmNzBlN2NkOTQgbGVnYWN5LXRydW5rCisxOTY5NiBmNzk2YTg3NzExN2U3MTViMzQxZjFiYTdlMDBkYzA0MjRlMjAzZjNlIGxlZ2FjeS10cnVuaworMTk2OTcgMGYwZWZjMmQxMmYxNDNhNjg2ZWNlNzY2OGMzNWMxNzg1Mzk1YWVmNSBsZWdhY3ktdHJ1bmsKKzE5Njk4IGFjYmU3NGYzYTc4NmYyZjQ1NzljNmY3ODQzYzZjMmM3ZTM4ZDE2ZWMgbGVnYWN5LXRydW5rCisxOTY5OSBkNGEzMTVlNDA5NGM0ODcxZGY0MzNkMGY2ZjY2MWIyMWJiMDIwOWU2IGxlZ2FjeS10cnVuaworMTk3MDAgNTFjZjQ1MWZhYWU0NjAxOThmOTcwNDZjMGJmNTQwNTBiYzAxY2RlMCBsZWdhY3ktdHJ1bmsKKzE5NzAxIGE5NTY5MzQ5MWVjYWFmNzEyZGViNzg4NjcyZTdmYTBlY2MzZjI0NDUgbGVnYWN5LXRydW5rCisxOTcwMiBjZTQ3NDk4YTMxNTg1OTczYmE3ZDNjOTU1ZjMyNzk4MDRiZDk4YWMzIGxlZ2FjeS10cnVuaworMTk3MDMgM2IwNTIxMmMxNjE2MDI1NTcwMzhhYzg4ODBlNjRmOGIyZDBjNmNlMSBsZWdhY3ktdHJ1bmsKKzE5NzA0IDY3MzI5MDU2ODZkNDBlODFjYmYwODFkMjlkOGFlN2QzYWYwMWVlODggbGVnYWN5LXRydW5rCisxOTcwNSBmNTM3MGUxZTIzOTJlNmU0MmFkNDM5YTlkNjFhNTllMDVkMWQxY2Y1IGxlZ2FjeS10cnVuaworMTk3MDYgMjdmMDRkNzE0ZWNiYzUzNmNlN2FmZGYyM2VhZTFmZDI2YjVhM2UxOSBsZWdhY3ktdHJ1bmsKKzE5NzA3IGI0NjNhY2Q2ZGEyMjI5OWVkMWEwNzBmZThmMmJiYjdjY2YyOWVkMmEgbGVnYWN5LXRydW5rCisxOTcwOCBiYmRlYjZkNGRlYTE1MmZjMzZhNTE4YWEyOTZmOWNjN2YxZmQzMTIyIGxlZ2FjeS10cnVuaworMTk3MDkgNTJmZTM3N2YwN2YyY2UxNjBiMDMyNWYwYWVjMjI0MDU3MzZlOGY4ZCBsZWdhY3ktdHJ1bmsKKzE5NzEwIDU5MDJiNTc5NGExN2ViN2Y3MzBmZjM4NmYwMjAyY2NiNDNmM2Y5MzYgbGVnYWN5LXRydW5rCisxOTcxMSBmMjljNzY2ODY0Y2I1YTM4OGYzNDI3N2U1Yjk3Y2Y4ZWQyOGE2MDgxIGxlZ2FjeS10cnVuaworMTk3MTIgMGU2YTNkYTRmOTU2MTMwNTIxNjY1YWI2MGE4Y2NiYjFkOTg2ZmJhMyBsZWdhY3ktdHJ1bmsKKzE5NzEzIDA5ZjZjMTM3MjA1Njk5MzcwODg2ZWY2YzdjNjZmMWFjNzliNTY2NzggbGVnYWN5LXRydW5rCisxOTcxNCBlMWIxZTY4Y2JkOGMxNWI4MWNlOTIxZTRkZGY2ZmU4OGQwMzE0NjgzIGxlZ2FjeS10cnVuaworMTk3MTUgOTUwZmMyMjYxZGE0NjFhMTI4ODk5YzJlNGUwMWY5Yzc0ZDIxMzlhNiBsZWdhY3ktdHJ1bmsKKzE5NzE2IDNkMjk2OTBhMjRlODk1NTA2NGQwNzM5ZDdlMzIzY2QyNzA4ODUzNDEgbGVnYWN5LXRydW5rCisxOTcxNyA3NmE2ODRmZTNmN2ZjNWQ4MzkwZGEyNGEwMjM3ODdjYzg5MmFmOGUzIGxlZ2FjeS10cnVuaworMTk3MTggMzI2YTRkY2JjZDIyYTc2NmYzOTZlNDEwNGFjMTc3YWFmNzRmNWUwMiBsZWdhY3ktdHJ1bmsKKzE5NzE5IDgxNTZkZWIwZTYyZGU1ZTEyMTU5N2E4OTZhNWFiODI1MDU5ZGFkYzggbGVnYWN5LXRydW5rCisxOTcyMCAwOWRjZjVlYmNkODAzMmZjOWJlMzA3NGNjOTU3NTNhYTFmOWEzY2JmIGxlZ2FjeS10cnVuaworMTk3MjEgMmQyZWUzMGY0M2VhZGQ1ZGNkMmQ3YWMwODdhZWNkOThjMWU3NTAzNiBsZWdhY3ktdHJ1bmsKKzE5NzIyIDk1YTdjNTg5OGZhYTFkYTdhMGM0YjZkMzUzYTFmODAyOGZjNTk2NjAgbGVnYWN5LXRydW5rCisxOTcyMyA0ODk0YmEzZWRkMGE1MzQ0ZjRhMTlmMTJlMWYzMmY4ZGMxMWZlOTJiIGxlZ2FjeS10cnVuaworMTk3MjQgYTg3NzFhNTJhYmIzN2ZlMDdjOWM1ZWVjZTFlNWI4NWYyNTZjYzU1OSBsZWdhY3ktdHJ1bmsKKzE5NzI1IDJkNGRhNmNmZWU2MTgyOWY4M2I0ZDZkZDlkYjMyNzJhMDRjNjdkOWYgbGVnYWN5LXRydW5rCisxOTcyNiBlNWYyYWI4MTFlYzNkODE4YmQ0NjdjNjVjYTgzY2E2ZmRmMTBmOTg1IGxlZ2FjeS10cnVuaworMTk3MjcgODQ3ODQ0MjQ4YzZmOTI3NzI5NjhiZTk0YzlmMzAzNzlkMTM3NTE3YiBsZWdhY3ktdHJ1bmsKKzE5NzI4IDA1Nzg1YmRmMjg5Y2QwNjA4YTMxNTJjMWZkNWI5N2VkMWE2MmIwMmMgbGVnYWN5LXRydW5rCisxOTcyOSBiYzg5ZjExNjE2MGI5NzRhYzI2ODg4NTNhOTNkMWZkOThiZjY4MTY5IGxlZ2FjeS10cnVuaworMTk3MzAgZWM5MDgzYWMyNmRmN2RkYzFhN2JiYmY3YjdhYjQ3YWQyMzE0MGIzYyBsZWdhY3ktdHJ1bmsKKzE5NzMxIDI2Y2U2ZWZjOTc0NDI3OWFjNjdmYmMxYmIxOTY4NWRmOTRhYmExOWMgbGVnYWN5LXRydW5rCisxOTczMiBjNTU3ODA4MTVhNmU1YTM1ZDMzYWYwYTY2YjZjMDY0NDgwYzA1Y2EyIGxlZ2FjeS10cnVuaworMTk3MzMgYjBhYWY4Zjg1ZDEyOGUyNDBhNjJkODk0MTM3YWQxNmM2NmMzMTkzZCBsZWdhY3ktdHJ1bmsKKzE5NzM0IDhkN2Y3MmNjMmVjYzgxNDU0YzQ5MWQ2NjliYzAzYjg1OGE5YzI4NDAgbGVnYWN5LXRydW5rCisxOTczNSBjZDQwODVjZWUzMDkzYWE1ZjQxMDI5MmYzNjhhYWE2YWVmYjc4ZjcwIGxlZ2FjeS10cnVuaworMTk3MzYgOWZhMjAwOTgyNTgzM2M4MTg2MTg1NDVmNTZiZjNjN2Y2NWUyYmVmNCBsZWdhY3ktdHJ1bmsKKzE5NzM3IDc3YTU0NzAyOTlkYmU0ZDI3ZTQzYmFjNTE0NmRiYjdiYWJiNWQ5NDkgbGVnYWN5LXRydW5rCisxOTczOCAxM2NkYmZiNTkxYTQ3NDNhMTc1MGI5ZjM0YjEzYzRkNjAwY2Q5MTQwIGxlZ2FjeS10cnVuaworMTk3MzkgZDA1MmRkZGJmZDQ0NTBhMTE5MzVkMjAwMDc2NzllOGI1YWYyODUzZCBsZWdhY3ktdHJ1bmsKKzE5NzQwIDI1MTRmY2ZhMGYwODI1NGZmMzQ1Y2Y1ZDI0MjA5M2MzNDE1OWZjNjIgbGVnYWN5LXRydW5rCisxOTc0MSAzYTQxMWQ0MWVlYjRmZjA3MDRkMmViMmI0NWYxYmVlZjNjZmNkZTU1IGxlZ2FjeS10cnVuaworMTk3NDIgNzk3NmNmN2ZkMTk2ODNiNThhNDRlNGM2NDMxZmEyOTU2YTY5OGVhYSBsZWdhY3ktdHJ1bmsKKzE5NzQzIDdkYzY2ZDViMTAwZWVhZmYwOWM1MjRlODg2ZjQwYTE5N2U4ZTEwNmIgbGVnYWN5LXRydW5rCisxOTc0NCA0MTI2ODAzZTFhODVkY2FmZGRlYTFlYjZmNTg2NTcxOGRhN2QyY2JiIGxlZ2FjeS10cnVuaworMTk3NDUgZjM5OWU2YTg4ZjY1ODQ5NTgxNjIxYzc2MWUzODM2Zjk4YzQwYjMyNyBsZWdhY3ktdHJ1bmsKKzE5NzQ2IGQ2NzVkNzVhZjgzOTVlYjg0YWU4ZjMyYWIxY2VkODA5N2RlZTEzOWUgbGVnYWN5LXRydW5rCisxOTc0NyA1MjgwZTg0MzlkNTU2Mzg0Mjk0MDQ1NGJhMTdmN2Q0OWY5MGQyMjNhIGxlZ2FjeS10cnVuaworMTk3NDggOWQwMThhM2Q3OTQ2YWE3MWQxOTc1OTYwZTA2MGY3Yzk0MDVhNjQ3YiBsZWdhY3ktdHJ1bmsKKzE5NzQ5IDc5YmJmN2FkMGZjMTc5YjI2YzRkYTQzNmUwODIzYzEyNWVkYWMyMGIgbGVnYWN5LXRydW5rCisxOTc1MCAxMGI4NDA2MGI3ZjM5YzY3NWNmOGVkOWQ4NmIyYzc0NTVmM2ZkNmMyIGxlZ2FjeS10cnVuaworMTk3NTEgOGQ3NDg2YThkNjlhYzBiMWE1YmNjYzg5ZGVjMzA3ZTM2NmE5MWE3NSBsZWdhY3ktdHJ1bmsKKzE5NzUyIDMwYmE4ODM3NjRlYmI0ZTE5NTRmNjFhNzI5YzFkYzgzZGIyYjdhZjYgbGVnYWN5LXRydW5rCisxOTc1MyAxY2Y1MjUzNmMzODFlZDBkYzMxYjVjNmRhZWM2ZmZiNmIyNjU4YTJiIGxlZ2FjeS10cnVuaworMTk3NTQgYWJhZWE0NDNlMjhjMmZjYWI5NDE0YTQ3YTI2ZjE2NjY1OWIyYzZjNSBsZWdhY3ktdHJ1bmsKKzE5NzU1IGJkY2Q3OTg3MzkyNGNlNjQyYjBhYzNkYmIzMDk0NWNkOTY4NWY0OWQgbGVnYWN5LXRydW5rCisxOTc1NiA4NTk4MjkzODQ2NjNiMzZkOTBmOTRiOTBhODgxZTZkZmUzYTExOGEwIGxlZ2FjeS10cnVuaworMTk3NTcgYWQ3MzQzNzM3YWVlOWUxMmVlNzQ2MmU5YTJiYTZkMTg2N2MxZGI2ZSBsZWdhY3ktdHJ1bmsKKzE5NzU4IDdiNWI1NzU2YjJjYWQwZTFmMTRlMjMzOGFkYjBmZjI3ZWIyYmFhN2IgbGVnYWN5LXRydW5rCisxOTc1OSAxY2U3NTFmYTY3ZDgwNmVlN2I1NDkyNzBjYTZkZjkzNzI2NTk5MjAxIGxlZ2FjeS10cnVuaworMTk3NjAgZDNmNjQ2NDA0YTQzNTcyYTU2YjA0MWM3NTFkZTg3NmNiMGNlNmM3NCBsZWdhY3ktdHJ1bmsKKzE5NzYxIDY4Y2UzMjg2MTYyNmY4ZTY0MzM1NmZjOGU5YjFjMGY1YTNlMjBlMjUgbGVnYWN5LXRydW5rCisxOTc2MiAxNGRiZGUxZWNkZWFiOWMzMzY3NzU4MjA5NmRlNmM5MTAyMjMyMjJiIGxlZ2FjeS10cnVuaworMTk3NjMgZmNmYjQ0MmQ3YjM0ZTI5NjUzMDU5NGRmYzE0NjdmYWU2Y2RjNjc3MyBsZWdhY3ktdHJ1bmsKKzE5NzY0IDBmZWI2MzQ5MDA5MzVhYTZiMzc3NGEwNGNmOTNjNDRiNzU3ZmUxY2YgbGVnYWN5LXRydW5rCisxOTc2NSBmMjg3YzY4NGUwNGM0NWU2ODAxZTlhYjE5ZjY3ZjkyZTdkMjkxZDBjIGxlZ2FjeS10cnVuaworMTk3NjYgODA2YzZhZTIzMTAzMjQ3NTU1N2MwODc4NzY0NTA4OTA2ODEyNTcyYyBsZWdhY3ktdHJ1bmsKKzE5NzY3IGYyN2QzMjk5ZGYzOTA2MjA2YTllY2ZlZjBhOGVmMDljYTI3OWVmOWUgbGVnYWN5LXRydW5rCisxOTc2OCBmMWM4ZWE5MmVlODUyZWU0YTdhYmNmMTljODBkNzU2MzBiNGQ2NDdmIGxlZ2FjeS10cnVuaworMTk3NjkgYjNkNTA0YmRkOTc5ZmEzNmU0MGE2MTI0YjQwYWRkN2U2NDEyOTZiYyBsZWdhY3ktdHJ1bmsKKzE5NzcwIDhhZWNkYjIyMzQ4ODE3MzBhMWQ4MTE0NDhhYmUyMzYxN2U3YzdkN2EgbGVnYWN5LXRydW5rCisxOTc3MSBmYTg0ZjlmNDEwOTIzMTE2YjFjZDU3ODc3MWUwNTA4NGQ5ZTlkMWVkIGxlZ2FjeS10cnVuaworMTk3NzIgNzRhOWQwYTQyMzFhNWViMGExYjM4NjRiNmUxNDJmNWUwNmJmMWY0OCBsZWdhY3ktdHJ1bmsKKzE5NzczIGRjZWEwOTM4ODMzMmNhYjg1NzI5MzQzYTgzZjc1Mjc5N2JhZTA2ZTIgbGVnYWN5LXRydW5rCisxOTc3NCAzMjBmYTUwYTFhN2QyNTU2MTgzZDExODZlZTBmYTEwMGZiOTY0M2JlIGxlZ2FjeS10cnVuaworMTk3NzUgOGQxZTg0NGZiYjFhYjVhZjBjYjAxNzY5OTVhY2Q5NWVmOTZjMmQ3MSBsZWdhY3ktdHJ1bmsKKzE5Nzc2IDU3MmI2NTRiZjRlZDU0YjA3Y2UzMDZkZjM3MjI1MDBiOWVjMzQ2OGYgbGVnYWN5LXRydW5rCisxOTc3NyBmNTVmMzVkYzUzMjAxYTU0OWQ0Y2M4OTc5NjA4ZmFkMDNmOTU1ZTQ2IGxlZ2FjeS10cnVuaworMTk3NzggZTg2ODc1ZjA2OWIxNmUzNGQwOTZiMDM3M2I3YjQ4ZTg2NzcyNDQ4YiBsZWdhY3ktdHJ1bmsKKzE5Nzc5IDQxZjNmNGIyZmU0YTY3NjJhYjAxMDg1YmRkNzU5ZGE4ZmY2MTRlMWMgbGVnYWN5LXRydW5rCisxOTc4MCAwZjA3NzBhNzkzYWNkMmZiODViOTg5NGI5MjNjYTFkNmMxMTE5MTdmIGxlZ2FjeS10cnVuaworMTk3ODEgYjczMjQ5YzhkZTE4MDE2OTNkMzY0ZDk5MTMyNmMwMjlkNDRmMTFlOCBsZWdhY3ktdHJ1bmsKKzE5NzgyIGYxZDQ1ZDZjMTJhMjhjMjJhMzlhOGFjMTRmYzczMDg5YmMxNjExYTkgbGVnYWN5LXRydW5rCisxOTc4MyA2YzkzZjE4ZDMyMzM0NWVhZjZlYjdmMzc0NGQ4ZmQxN2U4ZTVmY2QzIGxlZ2FjeS10cnVuaworMTk3ODQgZmE4OTA2ZWNkYjcwMjQ1OTUwZDhlZmQ3M2UzYTYwZTU2NmZkODQ1ZCBsZWdhY3ktdHJ1bmsKKzE5Nzg1IDIwM2FkNmYzZWY4Y2UxMmUyYmZhMTkyYmNiZGYzOTlhOTlhNmU0Y2MgbGVnYWN5LXRydW5rCisxOTc4NiBkYTYzOGM0ODRkMDhjNjNkNjU2NTZlYTU5OGU1ZGFjY2EwYjAzMDk3IGxlZ2FjeS10cnVuaworMTk3ODcgYTQ2YTEzMjAxZWViODg0NGMxMzkyZDcxMmYyMGU2NDVhYTNlMWY5MCBsZWdhY3ktdHJ1bmsKKzE5Nzg4IGYwN2ZhN2Y1MjYyYTkyZmRjNDUzZTdiZDhhNmM2MDRkZjg1MzFhMzcgbGVnYWN5LXRydW5rCisxOTc4OSBmMjkwMjY1OTM3NGFjODhlODI0YjJiMmExYmI0ODc1ZjdjNjk2YzFiIGxlZ2FjeS10cnVuaworMTk3OTAgNDkzNDEwMjIyNzE5MmVjYjY3ZTIyYzdjYTc5YzczNTE2NDIwNjBmZSBsZWdhY3ktdHJ1bmsKKzE5NzkxIGIwNDU2ZDNhMGYxZjFkM2VjNjMyZGYxNmIwYjNhZWIwZmRkODkzMzkgbGVnYWN5LXRydW5rCisxOTc5MiBiYjI1ZjJiN2JkYWUwM2I4YzQxNjFmZWZhMzdmMGQ5NmE4YzA1NTM4IGxlZ2FjeS10cnVuaworMTk3OTMgNmQ1OTgxN2NmNzkyOGViZWI1Mzk2YmU0OWY0YmZkMTE2YjM4ZWM0ZSBsZWdhY3ktdHJ1bmsKKzE5Nzk0IDQ5MWZiNDliNDZlNmZkZWQ5NjU4NTgyYTliNGY4OWVhNWZjZGUyY2YgbGVnYWN5LXRydW5rCisxOTc5NSAwMDQ5ODVhNWFkNWE4MDYzYTU5YTg1MTgwOThkNTk3MjI5MTY5NjliIGxlZ2FjeS10cnVuaworMTk3OTYgNDE1MjA1YjJjZGIyZGRjZjI1MWFmOGE0NGY5NmJmNDk4NzE5OGY1NiBsZWdhY3ktdHJ1bmsKKzE5Nzk3IGI1ZGIyM2M3YTgwNGExOTJiYWJkYjBjZmVhZjJlYzJjYzc5OTQwYzAgbGVnYWN5LXRydW5rCisxOTc5OCA1YWI0ZGE2YWQ0ZmM3YmM4ODQwYzZiZGY0NmI3NmFkNGVjNjlkYjliIGxlZ2FjeS10cnVuaworMTk3OTkgYjBhOTgyYzkxYWYwMTMzZjM2NWFkNGYyNjBhYjY0Njc1ODgzYmQzMiBsZWdhY3ktdHJ1bmsKKzE5ODAwIGZhYTdhYWViMDIxMGRmOTE4YzBjZjJiOGVhMTRlMzNhNjNhM2VmNzkgbGVnYWN5LXRydW5rCisxOTgwMSAzYzY1YmFiZjMyMmZiM2M1ZmFkMzZkNzJjYTE2ODg2ZjMyOGI5NGQ3IGxlZ2FjeS10cnVuaworMTk4MDIgMjU0OGQxYTcwMTgwMDJmNWE2NjYxZWRjZjQyYmYyYjJjOTJkZTIwNSBsZWdhY3ktdHJ1bmsKKzE5ODAzIDAyZTA5N2Y3MmQ0N2IwYTNiNWM5MzUyODQ2YTlkNWZhZDYwM2I4M2QgbGVnYWN5LXRydW5rCisxOTgwNCAzYTJlOGEzZWRlNDgxOTM5NDY2NTdlNzhjM2U0NDBiNzdiOTZkNGYxIGxlZ2FjeS10cnVuaworMTk4MDUgOWM5MjFhOGVkM2E3MjNiODRkYmY5ZDhmOTE3Njg4MjlhZGI5ZGRmZiBsZWdhY3ktdHJ1bmsKKzE5ODA2IDUyYTNmODI2MTdjNDBjN2U0ZmUxZjFmNWVmOWM5ODM2NzcyNTA0ZjQgbGVnYWN5LXRydW5rCisxOTgwNyBhYmM4YzZjMDI1Y2U4MzcxMTk2NDcyOWJlYTZkZjJmOThlMWRiMTY4IGxlZ2FjeS10cnVuaworMTk4MDggYjA0NmEzMWFmMmUwNmU4M2ExMzI3M2U3NzA4ZmI2MzVhNDYxNDEyZiBsZWdhY3ktdHJ1bmsKKzE5ODA5IGViNGVkOWYyM2QyMDY5OGU1MWE2MTVjNmY4ZGNlNGYwZmFmOTFkNmMgbGVnYWN5LXRydW5rCisxOTgxMCA5NDY4M2M4NWVjNzZlNmQxNjA0YzA2ODRhZmQwZjUzN2Q3YzNmZDNjIGxlZ2FjeS10cnVuaworMTk4MTEgOGM2NGRkYTFkMjZmMzBkZWFhM2YwZTZlNjM4M2E3ZTdjZmI2N2Y0MCBsZWdhY3ktdHJ1bmsKKzE5ODEyIGI4MjU5YzdmZjQ5YzliZGViNThkNjI2YWFhZTViMzVkN2E0NzkwN2UgbGVnYWN5LXRydW5rCisxOTgxMyA1ZDdlMGVhMzE4MTgwY2ZiMDRiZTk3MTg3N2NiN2U2ZTgyMWZlN2IzIGxlZ2FjeS10cnVuaworMTk4MTQgMDlhZWM2NjhkZjNhZTI4YzI2ZmUzZGE4YWI0NWJiNTU3MGFmMDQ5MiBsZWdhY3ktdHJ1bmsKKzE5ODE1IGMyOGRmZTVmODdhNzNiZTE5MDhjODdlMTk5MWU2MmE3YTQ1ZWJlNmIgbGVnYWN5LXRydW5rCisxOTgxNiBhMDE1YWVkM2ExYWMxMDk4ZmUzNGU0NTkxNjkxMWMwNjRmNGQzNTQyIGxlZ2FjeS10cnVuaworMTk4MTcgYWY4MTBmMDg0MjViZWYyNTQ4YjVmZmI1MDg3N2FhODE2MjAzYTU1ZiBsZWdhY3ktdHJ1bmsKKzE5ODE4IGU5NDQ1YzUxZmYyOWY2OTIzMTY2NzA1ZWMyNjBhM2RmZjQ0NmUyMTUgbGVnYWN5LXRydW5rCisxOTgxOSA0YmFhNWE5NTU1MzJhZTU1YTg4MWQ1Y2I0NTA0NjEzMjQ5ZGM4MTg1IGxlZ2FjeS10cnVuaworMTk4MjAgOGE0Njk2ZDdmNzRjMGMyMWU2ZWZmZmM2MzgyYmQxNzlkOWZmNTMwNiBsZWdhY3ktdHJ1bmsKKzE5ODIxIDMxZTMwMmU5NGRhODgxYjJkZTNiN2RhODJiOGM3NzcyZmQyNTRmMDEgbGVnYWN5LXRydW5rCisxOTgyMiBiMjUxMzFiYzZlYzdjODgyNTQ3MTUzOTk5ZThkZWE0ZWY1NzA5ZGUwIGxlZ2FjeS10cnVuaworMTk4MjMgZmFhNTJmMzg0YWY2NTI0OGRiNGJjMjYyZmIyMDczYTE4MzMxMzgxNSBsZWdhY3ktdHJ1bmsKKzE5ODI0IDA5YmExNWVlMTk2MWJhMzM1N2RhOTE5NzJjMjRlNjE1YTM2ZDQ2ODIgbGVnYWN5LXRydW5rCisxOTgyNSBiNmMwY2ZiMWVmZWFjY2M2Njk1YjY2MzViZjZhMDIyYjFlMWY1OTg2IGxlZ2FjeS10cnVuaworMTk4MjYgZGZlYjNhZTY5MmMxMTE5ZWQ3MDkxNDA5MDMyMDBiNDM1Mzg2OWM3ZSBsZWdhY3ktdHJ1bmsKKzE5ODI3IDgzMmU0MDkwOWVmNDg0ZjRhZGYxMTA4ODk5OGJjOTM2ZjgwYjczNzcgbGVnYWN5LXRydW5rCisxOTgyOCA5ZmQyMGNhZTdiNzY2NzU0YzU2YzdiMjQ4NDJlZmU3OGM1NDUwNTQ5IGxlZ2FjeS10cnVuaworMTk4MjkgYzdjNTM1MzYxNDY3ZDQ5MDFkMTk1YmI5ZTBmOTIyZDY4Y2Q3NzdiOSBsZWdhY3ktdHJ1bmsKKzE5ODMwIGFjZDUwNjA4NDcyN2U3MzRkODdiMzAyY2NmYjZmNmNmOGZmZDE5MGUgbGVnYWN5LXRydW5rCisxOTgzMSBhMWIzNDQ2YzcyMGYxYTRmZjc1OGUyZTE0MWEwZjAzZmI3ODNhZThmIGxlZ2FjeS10cnVuaworMTk4MzIgY2Q2ZTRiYzk5Mjk1Yjg1NWZmNDc1YThjN2YxOGVmNzEyODE1YTg1MSBsZWdhY3ktdHJ1bmsKKzE5ODMzIGU1M2IzMjg0NTIyNGU3OTMxOTUyMTZkYTg2NmI2NGFmYzViNDg1ZWMgbGVnYWN5LXRydW5rCisxOTgzNCA5MTIzMWJiYjM4NDJmNDc2ZjA4YzZlM2Q4YWJmMGUwYTg1MGUwOTQ1IGxlZ2FjeS10cnVuaworMTk4MzUgYjgzMjBhMjZjMDY1NzZkNzM4YTVjMDQ0ZGEzZjQ4YWYwYTYxZDMyMSBsZWdhY3ktdHJ1bmsKKzE5ODM2IDBkNGU4MDZjNDJjY2JkM2VjMmJhMzkzMzU4ZWNmYWM5OGNhODllNTkgbGVnYWN5LXRydW5rCisxOTgzNyA2MDJlYjA0NmIzZTdkMzQ0NDc5NzIyMTE3YzFlODEwMThkZjMyNDI4IGxlZ2FjeS10cnVuaworMTk4MzggMmMyOTBkNGMzYjM4MmY3YTg3ZmI1ODYzY2Q0ZjRhNWYyMWQ4NWZkOCBsZWdhY3ktdHJ1bmsKKzE5ODM5IDZmNDJjMWQ1NWU2YWYwNjg0MDFmMWE0NGUwZjUzOTQwODEwYzllMTQgbGVnYWN5LXRydW5rCisxOTg0MCBlYzI5ODk1ZWU0MGNmZDI2MTFmOWY1NGE3MDQyNzNlNmEyNjMyMjAwIGxlZ2FjeS10cnVuaworMTk4NDEgMzhlMTdhMDg5NDkyOTA2NGYyNzU5ODAxY2RmZjczZDA1MTMzNDY4MyBsZWdhY3ktdHJ1bmsKKzE5ODQyIDZiYmUyNjhmOGFkODQ5MThjZjRhYWJiNzI3MjcwMDE4YTM0N2IzN2YgbGVnYWN5LXRydW5rCisxOTg0MiBkMGM4MzBkYjVlNjhlZGQ0YWFhMzQwMTIxNmU2MTBjOWZmMTQ1ODI2IGxlZ2FjeS10cnVuaworMTk4NDQgOWE5ZWFlY2YwZmQ4MjkyNmJkMjMwMGU2MWViOWQyY2JlY2Q0OTk3MCBsZWdhY3ktdHJ1bmsKKzE5ODQ1IDcyM2NmNWUzNzhlNTdkYmQyZmFlZDg3YzdiN2IxZDQ1YzU5Njk2ZmMgbGVnYWN5LXRydW5rCisxOTg0NiA2NDUzMmJhNWRjZWQ1ZGZmM2U1YzUyODk1Y2QyZmYzZjVjODI4ZDFkIGxlZ2FjeS10cnVuaworMTk4NDcgYjgzYTNiNzgzMTRlYjg5MzE5OTNhNWVmY2RjYzI1OGZjYWJmMmRmNiBsZWdhY3ktdHJ1bmsKKzE5ODQ4IGQ4ODhkYzdiZWEzMmViZjUzMTgyNjU5YmQ4YzQ2MWZlMjYwYWViMmMgbGVnYWN5LXRydW5rCisxOTg0OSAyZGZlZTMzM2E2NTEwMDYzNzgwMjZkZmE2YjUzMzg3ODMxOWQwNGM2IGxlZ2FjeS10cnVuaworMTk4NTAgYTc5ZWJiYTY0NjZhNjM3YmYzNTlmYjgxNmIzYmU2MWY5NTcxNTc1NyBsZWdhY3ktdHJ1bmsKKzE5ODUxIGU2YzViYzViZWFiM2EwN2M3MWE0NWNlM2U0MGJmZDZhMGUxMDYzZTYgbGVnYWN5LXRydW5rCisxOTg1MiAwYjRjNTdhMjU5NzdlZGE3YTk3NTYxZWMxYzQwMTZlMmNkMWM5OWM2IGxlZ2FjeS10cnVuaworMTk4NTMgZDVlNTNjZjlkZTdjMzMwOTM2MmY0YzdkZTA2NzUxNzUxNzcyMTJhNiBsZWdhY3ktdHJ1bmsKKzE5ODU0IDJiOTM1NGY0ODUyZmFhYjA1ZmQ4MzczYzIwYTYzZmY4OTNkYjk0NjggbGVnYWN5LXRydW5rCisxOTg1NSBjMWUxOTQ5ZjM5ZmVhMjE1MmU1YmZmOGExZWFhOTBiNzNlY2EzMzljIGxlZ2FjeS10cnVuaworMTk4NTYgNjcwMmMwZGYxNmI2NjhhYTAzZGU3NmY4NGQzZmFjOGI1MWUxYTVlYiBsZWdhY3ktdHJ1bmsKKzE5ODU3IGM3OWRhYjY1MmVhODQ0MTNjOGMzNGI3NWY5MWQ2OGZhM2FjZDZjNjAgbGVnYWN5LXRydW5rCisxOTg1OCBkNmVjZTdjM2IzNWVhZjZhNWU5ZDc4ODk2MGZiZmY2NTM3N2RkOTkyIGxlZ2FjeS10cnVuaworMTk4NTkgZjVjYjZkNjZhOTc3YmRlMzMwODc0NGMwMGQxMjE2MjcyOTAyNTZlYiBsZWdhY3ktdHJ1bmsKKzE5ODYwIDFhNWEwM2UyZGE3Mzk2OWUyMjY1NWZlY2Q2ZTBjNTNkYThmNDM4MWMgbGVnYWN5LXRydW5rCisxOTg2MSBjNWE0MTdlOGQ4NGM4MzYzNzRhMjkwYzFmMDg3ZGVmODJiOTFjYzRmIGxlZ2FjeS10cnVuaworMTk4NjIgNjFjOWZhOTRjZTlkOWE0YWQ5YTE4MGNhNTg2YmU0OWMwZGQxMDFiMSBsZWdhY3ktdHJ1bmsKKzE5ODYzIDFjOTViNmIwNmFlMzFkMjdhNWFiNDE1ODY5NTJhZDA3OWE2NjgzMGQgbGVnYWN5LXRydW5rCisxOTg2NCA0MTUyODU1ZWY5YThiNjM1YTg0MTAxMGRmZTM0OTU3YWY1ZTExZmQ4IGxlZ2FjeS10cnVuaworMTk4NjUgYTk3NWYyYzE1NGMwNjA0NTk5OTEzYjYzY2UxZjFhMTFkNzZlYWQ1OCBsZWdhY3ktdHJ1bmsKKzE5ODY2IDdjN2NjZmI1ZGIzZWYxMzc1YmM2NzA3ZDhiN2ZlNmMyY2MzMjRiNzYgbGVnYWN5LXRydW5rCisxOTg2NyAxZGRjNzBkZDFkMWJiYWQwMzE5ODhiYzM1MzYxNjIxNDdlODAxMTZjIGxlZ2FjeS10cnVuaworMTk4NjggODYzMTg3MzNmZTcwOTM1OWZhNzE5OWNkYTZiZjExYWU2NDBmNGQxZSBsZWdhY3ktdHJ1bmsKKzE5ODY5IDQ1OWM4ZWYwYTAxMDM1OTgzNDljMDUzM2RjYzVmZDU2MzI5NGZkNDYgbGVnYWN5LXRydW5rCisxOTg3MCA5MTA0ZWQzOGFjMDUxYzlkNTA5MWFkYzJkMTk5YmU5NGY1NzcwNWFkIGxlZ2FjeS10cnVuaworMTk4NzEgNDFiOTI0OWU0ZDQ4NjNiZDVhYTJiYWM3NjJhMzU4NzkxNWIzY2ExMCBsZWdhY3ktdHJ1bmsKKzE5ODcyIDg2ZmQ3MjNmMjkyODZhMmMzZmQ3MzY3Mzc3ZjcwN2JmODg1NTIxNmYgbGVnYWN5LXRydW5rCisxOTg3MyA0ZjlkYjgzNDgyNWNhYTBjM2ZkOGIxNmVkNjdmYjc5YWNlOTkyMTUyIGxlZ2FjeS10cnVuaworMTk4NzQgZWVlN2QwYzVhZTU5MmFmNGRlOTUwZmI3MmIzNjIwOTRjMThiYTUyMyBsZWdhY3ktdHJ1bmsKKzE5ODc1IGU1OWVkYTUyNWZjMWU3YjUyYjc0NWViM2Y4ZjBhMGZjZGMwYmNkN2MgbGVnYWN5LXRydW5rCisxOTg3NiAyZGMzY2ExZDg5MGM3NzMxN2U2MzRjZGI2NTVhMDMzYzE5YTE0NDc1IGxlZ2FjeS10cnVuaworMTk4NzcgZjNmYjA1YmZlZWViMTM1YzZlOTI2NmY2MTBiYmUyOTY3YTI1ZDI3OCBsZWdhY3ktdHJ1bmsKKzE5ODc4IDUzNGE5M2Q4MmVkY2ExYWRmYjBlOGUwY2U2NmE4MDE5ZDYyNzMwMzggbGVnYWN5LXRydW5rCisxOTg3OSBiN2IwNDhkYTE2NzM1ZjA0YzE2MGMxZDYxMjE4MjJhYjZhMTVjNzI4IGxlZ2FjeS10cnVuaworMTk4ODAgNTQ4NzE2ZTJmMWYxM2MzOGI4YjVmYWQ4MmFlMDBmODM4ZTAzNjQ3MCBsZWdhY3ktdHJ1bmsKKzE5ODgxIDNiNDk0YzVjNjIzNGRlYWQxMWEzNWI4Njc2MTM5ODI0ZDQzYzhiNjkgbGVnYWN5LXRydW5rCisxOTg4MyA0YzE3Y2IyYzYyMWU5YmQwOWFiYjdiYjIwOTA2NjYxZGU5YTBhMmU4IGxlZ2FjeS10cnVuaworMTk4ODQgYTFkZDBiMDcwOWQyMDYzZmYzZmY2Y2U3ZDUwN2FiMDU1OTI0NmNhYyBsZWdhY3ktdHJ1bmsKKzE5ODg1IDk5ZGU0YmYyYjllNTUxOTNiMjgwYTcwY2E5ZDA5YjJlZTBhMzJlZmQgbGVnYWN5LXRydW5rCisxOTg4NiBkNTZkNzdmOTM3M2JkZWY5OWJiM2JmZjgxMDlkM2ZmYjIyMTAzOWUwIGxlZ2FjeS10cnVuaworMTk4ODcgZGI1NTYwNDM1M2IzYTJhNGRhMmM5MzZjMjE3YTYzNjZhOTgxNjU2OCBsZWdhY3ktdHJ1bmsKKzE5ODg4IDhlYWY3NGExMTFlYmQ5MjA1OTgzYWU4MTJhNzExOTMzODAxY2Y3NDYgbGVnYWN5LXRydW5rCisxOTg4OSBkMTVhY2UzMjExMDI2NmY2ZTNkNTAwYmE5OGI0ZjAyOTk1OWYyNmRmIGxlZ2FjeS10cnVuaworMTk4OTAgNmJkZjU2M2M3NjNiM2E0ZDAzMzc3MGM5N2E2YTUxNWEzYTkzZGY2NyBsZWdhY3ktdHJ1bmsKKzE5ODkxIDNjNjUwZDljMzhlNzRlZWFjM2ZlNDBmN2JmYzY3ZjgyN2U0NWM0OTQgbGVnYWN5LXRydW5rCisxOTg5MiAxOWMyZjUwZTUzOTU3MWM0ZWY5ZGE1NzJjNjg2NjkxYjY1NjZjMTViIGxlZ2FjeS10cnVuaworMTk4OTMgM2Y1YTU0YThhMWZiNTA1ODk2N2EzZjBiMGRkZmQ3ODA5YWFhYWM0OCBsZWdhY3ktdHJ1bmsKKzE5ODk0IDdhMzZmNjIwMWM5NDAwNzJkMmYzNjFhY2I4MDJhOWM0NGJiY2I0ZjQgbGVnYWN5LXRydW5rCisxOTg5NSA4OTU0NmJkZGMyMmNjMGRlZWYxYjRkYzY2YzI2NDAyMGM5ZTM0MjNkIGxlZ2FjeS10cnVuaworMTk4OTYgOTUzYzUwZjEyMTg0YWFlMmM0MDIyYjRkYmJkMjY3NGI0NGUxZTU0ZCBsZWdhY3ktdHJ1bmsKKzE5ODk3IGYwZWZkY2QyNDUxMmZiOGQ0YjRiNGYwZTA2MDMwNzc5MGFjNGZhYTIgbGVnYWN5LXRydW5rCisxOTg5OCBjZDdhYzRkOWFkZDAyMDc5YTI4Yjk3Mjg2NWJmN2RiOTM4NTkyYTRmIGxlZ2FjeS10cnVuaworMTk4OTkgZTIxZDRjMjA1NjVkMDBjYTQyNDczMzQ0YTUyOTg0YTM3ZDA2ZWU2YyBsZWdhY3ktdHJ1bmsKKzE5OTAwIDNjZmJiY2JmNzEzNGQxMTdiODIxMzgwZmIyYjU1NmRiYTlkZWNhNTMgbGVnYWN5LXRydW5rCisxOTkwMSA5NzFmZjZiNThlZGJmYjdlNjZmYjUxNGVlMjgxNDgxOWM4YzJlMGYzIGxlZ2FjeS10cnVuaworMTk5MDIgZjQxNDZjYTBmMjkyMWUyMGI0ZDc0MmM1OGY3MzFmMTgxMjgwODUwMCBsZWdhY3ktdHJ1bmsKKzE5OTAzIDJhODAxOTFkMTIwMzBlODM5ODFiZDA3OWEwM2JiYjUyZjEzNmZlMzEgbGVnYWN5LXRydW5rCisxOTkwNCA1MWM2YTJjYjAzZDFiNDE5ZTFkNGE2YTdhMzFhMzhiOTMzMGNjODQxIGxlZ2FjeS10cnVuaworMTk5MDUgNjVhNjM4YTI0ZjdlOTU0ZjQ4MDc3YmJlZDM4NTcwNzRiNjMxYzk3YSBsZWdhY3ktdHJ1bmsKKzE5OTA2IDNlYzUwMDQwM2YwMTBkOGVmZDU0MzA3MWNlZWVhMzlkMWQwMjdjNTggbGVnYWN5LXRydW5rCisxOTkwNyBiNDBhYjMxMDU1MjFmMTk0NWNkZGI3NWM5NmNhYWM1MzMxMzMyOTFjIGxlZ2FjeS10cnVuaworMTk5MDggMWU1OGQ3ODJjMDlhYzlmM2ZjMTM1Yjk1NDBjM2M3NWNkOGM1OWI5MyBpdGVyLWJyYW5jaAorMTk5MDkgZDU4MTFhZjhhY2YzZGQ0ZTMyOGJkYmQxNmI3MjgxYzdkYWFmODQ0OSBsZWdhY3ktdHJ1bmsKKzE5OTEwIDUzM2NjOTA3ZWRiZDJjYjYxMzc5ZGQ3NTA0MGYwNWEwODcyNTBiMzAgbGVnYWN5LXRydW5rCisxOTkxMSBiYTgxZDc5ZGMzYTMxZGFmNTcwMWY3ZmUyNGYyYWZlZTM5YTQ5NGQ1IGxlZ2FjeS10cnVuaworMTk5MTIgN2UxZTY3MjU1MDllNmM1OTcxYzllOTRkODJlNGRjZjc5NDJkNDdkNCBsZWdhY3ktdHJ1bmsKKzE5OTEzIGFkNzQxNzQ1Y2I2YzA5NDE2MjZmY2E1NDA0YjMyYWVlYTQyYmNhNWUgbGVnYWN5LXRydW5rCisxOTkxNCA4YTM0ODMwODMxNmQ1NDRmYjA2ODFlYzQ5NDhhZDgxMzJkMDZjMjdlIGl0ZXItYnJhbmNoCisxOTkxNSA0MjBhMDc4MWJiOTJmN2M2MDExYzdlODhhNjgwMjFjYzFmNjU0NGNmIGxlZ2FjeS10cnVuaworMTk5MTYgYzFlZGIxNGYwNDNiYmI3MzJhMmVkMjQ3MWMwNjllYWJlZTc0MmNmYiBpdGVyLWJyYW5jaAorMTk5MTcgNDBhZDBhMDc2MWQyNGZhNjU0YjAxNWJlZDg3YjE0MGQ3YzZhZjIyOCBpdGVyLWJyYW5jaAorMTk5MTggZjM5NGFmOGM1ODBmMDU1MWU0NjA5M2FhZDJkNDk1OWE0N2U2OTBjMyBpdGVyLWJyYW5jaAorMTk5MTkgNjJmNzRjMjU5NzYyZGZlNWU1ZWQwNDgzYmNkMjBiNjRhOTIxMWQ3MyBpdGVyLWJyYW5jaAorMTk5MjAgM2Y1NTg3YzI4YTUwZjkxM2E3YzBkMDVjYmVkZGQyODhlMjhlZDY3YiBpdGVyLWJyYW5jaAorMTk5MjEgZjRkNDk4YTlkOTg5MDNmYmMxNjgxMDAyZGUxY2UyOGJmMDEwYmUyNyBpdGVyLWJyYW5jaAorMTk5MjIgNTI3OTdiNGIzNzViYzk0MjZjZDFiMDc0MmVhYmRkMmVlMzk1ZDM4MyBpdGVyLWJyYW5jaAorMTk5MjMgZDI3Zjg0NGY2Y2ZlNTYyZTI3M2E1OGUwOTk2NDhkY2UxNjZmZmY1ZCBpdGVyLWJyYW5jaAorMTk5MjQgOThhMmJiOTA1MjBkNmNmNWUyODMwODg3NDhiYjUxZmI4NWQwMjhmMSBpdGVyLWJyYW5jaAorMTk5MjUgYWZiMzNmZWYxNGNiOGUzNmU0Y2Y0YmE4ODE4NGYwNTFlMmY2YThhZSBpdGVyLWJyYW5jaAorMTk5MjYgM2E4NjY2ZTEyOWFkZjllYjZlMGM2YjA0OGQ3YTRlYWJiNDE3OTFjZSBpdGVyLWJyYW5jaAorMTk5MjcgMjIwYjYyNzM4ZDc0MjgxMzM5MDJjNDNlZDJmNTAwYWY2MTVmOGY2MyBsZWdhY3ktdHJ1bmsKKzE5OTI4IDVkNjhhZmM1MjI3YzkxYjFiZjNkZjJhYTY5OGMxOTIxNTExODE2NWQgbGVnYWN5LXRydW5rCisxOTkyOSAxNzJkMmEyODE2YmZhM2EwYWZlYjEyNmYwYmUwMzU3ZjQyODk0NTEyIGl0ZXItYnJhbmNoCisxOTkzMCAwOTViODBkMmU3ODVkOWY5MjBjOWViMjQ0ZDJjNzJmNjllZjNlODJjIGxlZ2FjeS10cnVuaworMTk5MzEgMmVkN2M1ODk0M2U2MTEyYWYyNWY5YmFhN2RjY2Y4NGE3MWU4ZThjNCBpdGVyLWJyYW5jaAorMTk5MzIgYzU3YTFiNjc4MWIwNGZiNDUxN2QzMWVhOTg3YTZhZjMwNjg3YzQ5NyBpdGVyLWJyYW5jaAorMTk5MzMgN2JiMTI1NmI1MDZkYjQ2NGRlOGFjOTk0NGNmYmI0YjExZjY1N2IyNSBsZWdhY3ktdHJ1bmsKKzE5OTM0IDMzNzVhMmE5OGU1NjZmZDEzZTQzYzJiYmY2OWJmODM3YWRjZDE1ZGQgbGVnYWN5LXRydW5rCisxOTkzNSBlYjQzNjZiM2UzOTFhYTkwYzNjODM3MTM1NTg4OTBjYTUzOTVlMTFjIGxlZ2FjeS10cnVuaworMTk5MzYgNmNhNzJkNzE1MzZlMGM3ZjFkZWViODRmNjc4NTcxODNkNDEwYzkzNSBsZWdhY3ktdHJ1bmsKKzE5OTM3IGZmNzVjMzgyZjBkMzJlMGY3MmQzOTAzZGRiMWE4Njk2ZTE0M2Q1MDIgbGVnYWN5LXRydW5rCisxOTkzOCAxZjcwMGE3MjA2YjJmYzQ0ZmIzYTcyZWMxZDk0YjE2MjBjZGFhMDEwIGxlZ2FjeS10cnVuaworMTk5MzkgNWU2YWI5MzliZGJjYzRkYTZjNGVkZDA0Yjk5NzlmYzllOGM3NzA5MSBsZWdhY3ktdHJ1bmsKKzE5OTQwIGJkNDBiMTNmYTVhYmZhYjkzZGE0YTM1NWE2ODUzYWZlMTA2YjM5YmUgbGVnYWN5LXRydW5rCisxOTk0MSA3ZWI1YTZlOGM5OGQ0NTBjY2JkMzhiMDlkY2FmNjc4NWQwNzk4MTZhIGxlZ2FjeS10cnVuaworMTk5NDIgN2E0MTc1ZTEwNjI2Y2Y3NDk4YzM5MjhkNDExZTU1OGY4OTczNTEzNCBsZWdhY3ktdHJ1bmsKKzE5OTQzIGQ1OGU5M2RhZmI5OGMyZmRkZGY1MDUxZWYzNjgzYTZkYTA3MTNjNjIgbGVnYWN5LXRydW5rCisxOTk0NCA0ZTZmMTRlNzU1N2U5OTAwNTQ3NmM0YTA5MGJmZjEwODFkNDJkZDNjIGxlZ2FjeS10cnVuaworMTk5NDYgOTBlNDA2NGNhMDQ1ZWNlOGQxYTk4NTAyZDgyYzdmMDA2ZGVkNGVkZSByZWxlYXNlMjAtbWFpbnQKKzE5OTQ3IDQxNWExOWJiMTY3NWM0Nzk0YzE2OGM2NGViOGQ0MjUyZGJmZjUxYTggcmVsZWFzZTIwLW1haW50CisxOTk0OCA3NDMyOTZjZTA1MmIxODdhYTA3NDMwYWZkZWE1NDYwNjhjOTNhNjgwIGxlZ2FjeS10cnVuaworMTk5NDkgMTRiN2E3YjhkNThkYmJmMmE0ZGUyZGJiMTg0ZjYyMWU4NWI3MjQ5MiBsZWdhY3ktdHJ1bmsKKzE5OTUwIDc5N2ViYjcwMzNkNzI2ZWYwZTkyOGVjNDhiOWFhZWE0MTQwZjdlYTAgbGVnYWN5LXRydW5rCisxOTk1MSBhMTA2NmU1YTEwNjVjYWQ0MTZlZjRjMWJhZmY5ODRjMWRlZDM3MDJlIGxlZ2FjeS10cnVuaworMTk5NTIgZGMwZjYyZTc1ODhiM2U4OTVjZGQ0ZDgzNDhiMTY0NzY2ZmM3ZDI1NiBsZWdhY3ktdHJ1bmsKKzE5OTUzIDNmNTI3NmNiYmM0ZGEyNDRhYWZjNDhmOTI5ZWM2NWUyMWFhZjliY2UgbGVnYWN5LXRydW5rCisxOTk1NCBhNTgxNGY2MjBlODZkOWE3MDNkNjk3YzlmMDJjZGQ4OGM4YzE3YjllIGxlZ2FjeS10cnVuaworMTk5NTUgMzNjODY4MGIzYjM1NDA0NmQyMzI0YTg2YzE3ZmMyYWQ5OTkwNTJhOSBsZWdhY3ktdHJ1bmsKKzE5OTU2IGQ3ZTAyYjllZTE3OWMxZTQzYWRjZmQ0YTlkYWM5ZDc5MDIyNTA3MmQgbGVnYWN5LXRydW5rCisxOTk1NyA1NDY5MjJmYThkOTk0OTBhMzQwMjNkODZlZjcxYTFjYjYwYjJlY2E0IGxlZ2FjeS10cnVuaworMTk5NTggZGQwNGJiZmQ1YTc2Y2VlYWEwNTJkNDEzMWEzMmY4Y2FjMWYyODVjNyBsZWdhY3ktdHJ1bmsKKzE5OTU5IDJjMWJlNzkyNGIwNGFmYWY3NGJhYzdjM2M3N2UxMjA2YmU0NTgzNmIgbGVnYWN5LXRydW5rCisxOTk2MCAyNmNkZWQ1OWMxNzI1M2Y5N2M2NWUxNGQzYzcyNDkwZTJmM2RmYzEwIGxlZ2FjeS10cnVuaworMTk5NjEgZWI0YTVmZjBmNzJjYzg1MzcyOWRjOWJkZjM3ZmMyMzNhNWVkM2RkYyBsZWdhY3ktdHJ1bmsKKzE5OTYyIGVlNjc5M2FlMDZjMTRlMDAzODcyOGI2NGYzY2NmN2ExZWZmZGUxMjMgbGVnYWN5LXRydW5rCisxOTk2MyBiNjUwZDdkYWE1OTNjYzk2YjIzMzAwNmIxMGMxOGM3YjNjYzg2MTgzIGxlZ2FjeS10cnVuaworMTk5NjQgYjQ1YWU4YzQ2N2FhZjQ0ZDBhZWJjYzgyMjcxMDI0NjcxNjU3ZDc3NCBsZWdhY3ktdHJ1bmsKKzE5OTY1IDQzMTcyODg5ZThlNjZiMTg5OGM1ZWYyMjc2MzQyOTUxYjc3YmI2YWYgbGVnYWN5LXRydW5rCisxOTk2NiA0NjJiOGRmZTg3NTM5MWU5NjMxNjA5NjI3Y2Y3OTVjYjBjZmE4MWQ0IGxlZ2FjeS10cnVuaworMTk5NjcgODMyM2IwOThjNmNlMGIxYzYzMTFkMmFlNTNkMjhjYzE4YmQ0NDRhYiBsZWdhY3ktdHJ1bmsKKzE5OTY4IDkwNzlmNzBhNWI4M2Y5ZjIyOGU1ZGE4MjQ3ZDY2MDQwZGNhNTdjMGQgbGVnYWN5LXRydW5rCisxOTk2OSA4NWQ3NGYwNDA3MTJlNjRkYTUzMDk0OGZlYzBjYWRhYzA0ZWUxODc1IGxlZ2FjeS10cnVuaworMTk5NzAgZjdlMmMzZDljMzg3OTFkMzE3OWNiNTRhMzQxMWEwNTZjYmU4YWU0ZCBsZWdhY3ktdHJ1bmsKKzE5OTcxIDdlMTgxZWJhNmI5YmQ0ZDgxNGI5NGIwMTFlMDk0MTM1ZDZhMTNkNWIgbGVnYWN5LXRydW5rCisxOTk3MiBiYzA1NTViZTIyMTIzYTRkNWE4ZGMzMjRjYjVjYzE4ODdkNDc4MjQzIGxlZ2FjeS10cnVuaworMTk5NzMgNTJjYjBjNWZkZjIzODA5OTI4MzkyZDMyMzQ2MWFkMWM2YTIyY2UzMyBsZWdhY3ktdHJ1bmsKKzE5OTc0IGYyNzE3YjAxMzdkMDcyNzRkZWFhZmE1MDFmNzM1OWEyMWI4MDljMjggbGVnYWN5LXRydW5rCisxOTk3NSA2NDM0ZGM3NzZjYjk3NWEyYzM1OTUwNjRhM2Y3ZGI5MDBmYWNmZDE3IGxlZ2FjeS10cnVuaworMTk5NzYgMTM4MGE1MmYxYTIxODYyOTBmOWVhNWNjMjU5YTI5Yzc4NTc1MjdlNiBsZWdhY3ktdHJ1bmsKKzE5OTc3IGNlOGFjMzdkYjMwMGE1YTc0MDQ4Zjg1N2IzOWJiNDVjNDdkMzY0MGQgcmVsZWFzZTIwLW1haW50CisxOTk3OCA2YTUyN2JlNGM0ZDE5MDdkODRkOWViNDM2MjBlNTY4OGYzYzhmZjk1IGxlZ2FjeS10cnVuaworMTk5NzkgM2YyMjgxZTI0ZTJkYzRjYzlhNjE5OWY0ZDk1N2E1ZjA0NTM0MjcyZCBsZWdhY3ktdHJ1bmsKKzE5OTgwIGMwNjRjMGQzYzQ5YjkzNjIyNDlmNmQxYmNkYjRlNjZlY2U1MDY3M2MgbGVnYWN5LXRydW5rCisxOTk4MSA3NDA0Njc4MjA3MmQ2MDhjOGFjMGQ3OWNjZmY0OTk4ZTlhNzgyYzQxIGxlZ2FjeS10cnVuaworMTk5ODIgYjFhYmIyNjIyOTc5M2RmN2M1ZmRkYmU4ZWI5MzMwY2EzZWE2MGRjOCBsZWdhY3ktdHJ1bmsKKzE5OTgzIDdlOTM4ZjBlOWE0OTc1NDhlODk5ZDQyYTZkNTg3ZThiNDY0NGM2ZWEgbGVnYWN5LXRydW5rCisxOTk4NCA3NzE5NjU1N2ZkMzE2N2NhZTQzM2RiODA5Y2E3NzUzMWMxZGI2MmQzIGxlZ2FjeS10cnVuaworMTk5ODUgOWNmZDljMzI5N2RkNDI5M2M2MDIzYzZiMGM1NGVhODcxODdhZjAwMSBsZWdhY3ktdHJ1bmsKKzE5OTg2IDQ1YWQ3YTQ2OGJhMmEzNTNiZmM2ZDZmMjQ4YWFiODVlYzZhODM1ZDcgbGVnYWN5LXRydW5rCisxOTk4NyBkZDVhMWIyODA0NDA3OWMwNjIyZjA1ZTcwM2NhZDYyNzQ0MGQ0YzM2IGxlZ2FjeS10cnVuaworMTk5ODggNTc5YWM4ZTM1ZjViNWU4Mjc3ODc3ZjU1NWQ4MzRlODk1MWUwNDQyMCBsZWdhY3ktdHJ1bmsKKzE5OTg5IDhmMzM5MjY5ZTAyN2Q2Zjg5MTZjM2YzZGVkNmM1ZDlhMDI1YmViNzQgbGVnYWN5LXRydW5rCisxOTk5MCBjMjE0ZjM3MjA2NThlMmI4NjUzNWYwODYyYmM5NzQ3ZGYwNjlmNDFjIGxlZ2FjeS10cnVuaworMTk5OTEgOTg5ZmVkMjhiNzRmMzNhNDQ4ZTA0ZjYzOWNkODRmNzMxYjQ3MjA3NiBsZWdhY3ktdHJ1bmsKKzE5OTkyIGQ5ZWU1NmI2ZGIyNmE1NDdmZDczZjhjNWVkNjhlNmVjNzlmMDk0MWMgbGVnYWN5LXRydW5rCisxOTk5MyBkY2Y3M2YxMGY3Y2NmMDNkNzljZGYxMWJkNDg5MTUxNTE4MDU2Mjg3IGxlZ2FjeS10cnVuaworMTk5OTQgOWJmMzc0OTMzODcyMDVhY2YzZGRiZWE3YzgwYTc0MGRmMmExZjNhMSBsZWdhY3ktdHJ1bmsKKzE5OTk1IGVkZGE0YTQzMjM5YmNjMzBiNTBjMjAzMDRlODhhNjdlYjc4NDIyNGMgbGVnYWN5LXRydW5rCisxOTk5NiBhMzhjY2UzZjQxYjQxZGZjMjIwZGEzNTZjNWNmMGE1MDY1MWVlNWExIGxlZ2FjeS10cnVuaworMTk5OTcgYTQ4OGE2M2NiODY3NGU2YjcwNDI0Yzk2NzAzMTgyZTRlNjk5OTllMyBsZWdhY3ktdHJ1bmsKKzE5OTk4IDhmZjI0YWJlYjM4ODExMGNiNGM1ODI3NTg1YWJjZGQ5ZWYzNDBlZDEgbGVnYWN5LXRydW5rCisxOTk5OSAxODIzZmEyMzE1MjE1YzA0ZTg1ZTBkNGEwMmQwZTA5ZDhiMWM0NDZmIGxlZ2FjeS10cnVuaworMjAwMDAgYWRjOGE0MWJlZTlmNjk3NjkxM2IyYjI1MTkxZTE5NDc3NmNlMjg5NSBsZWdhY3ktdHJ1bmsKKzIwMDAxIDMzZjc3NjlhMjE4ZWQ3YjU0ZjZiN2E4NWQ5YTU2MjViMDI4MDVmNzcgbGVnYWN5LXRydW5rCisyMDAwMiA3ZWI4YjI0MGRkNmM0YjAxNzc1ZmE4OWJjYjhlMGZhMzdjNTBlZWJiIGxlZ2FjeS10cnVuaworMjAwMDMgN2VkM2U3YTA4YTMxMDE5ZGM4MzkzZDcwMjRhNzFmNDMzMjdiNDc4ZCBsZWdhY3ktdHJ1bmsKKzIwMDA0IGJmNjc4YTExYzIxYWVjN2QxOWZiNzQ1OGU3MGMzM2EzYjg1MTM5YjEgbGVnYWN5LXRydW5rCisyMDAwNSA3NmVhYjJlYmNlNThhNDRiNDg4MGU1ZTJjZjNhMDIyMDlmNjc2Zjc3IGxlZ2FjeS10cnVuaworMjAwMDYgNDg2M2I1OTViZGFlODYwMDEyNDZlMTRiZjIxMzMzYjVkMTU5YWY5YiBsZWdhY3ktdHJ1bmsKKzIwMDA3IDZmZTEzZDAwOGUyNWY3YTkzMmUzM2NmMDE1MGVkYWM5MDZlMWQxN2UgbGVnYWN5LXRydW5rCisyMDAwOCBlMTIxNGY5ZTEyYTNjY2YxODY4ZTNmZDVmMjU4ZmQwMjc0N2NkYWVjIGxlZ2FjeS10cnVuaworMjAwMDkgZDMxYWRkOTlhODQ2OGNhOGNiMTMwMDUyY2RmNGQ2YWZhMzljMGVkYSBsZWdhY3ktdHJ1bmsKKzIwMDEwIDMzZDhkZDAyYWE5OTEyOTE5ZmU2MmJjNzgzYTYzZjg2NzNjYmVmMzEgbGVnYWN5LXRydW5rCisyMDAxMSBmOWEwN2U5OTkwN2U2ZWI5NzRlNDkzYTQ0ZWM1MjlhYWE3ZmMxYTE4IGxlZ2FjeS10cnVuaworMjAwMTIgM2I2ZWE0Y2ZlZWUwNjJlY2JiYzBmNDY4Njk0ZTk2NGNlZmEyMThlOCBsZWdhY3ktdHJ1bmsKKzIwMDEzIDg0OGYwODU1OTkxNmQ0YTczMTg5NmRmMzI4M2M0MDI1YTE0ZDFkMTcgbGVnYWN5LXRydW5rCisyMDAxNCA2NDZlYzJhNGQ3ZjRlMGNiMjc2MDkwMjg2MTI5MGY2N2M5OWRmNjhjIGxlZ2FjeS10cnVuaworMjAwMTUgOWU2ZTRmNWU1NjA0NWY4NjQzNTIyMjVkOWU3MGQ3YzRjNjNkNWMyZCBsZWdhY3ktdHJ1bmsKKzIwMDE2IGRhNmM2NjI5ODJiNjQ0NDNhYWUxMTlmOWRkNjE2MjU2Njk0NDMxZDMgbGVnYWN5LXRydW5rCisyMDAxNyBhODMwMWQ0ZWQyYjFiOTU4OTZlMGI3YTQ5OWU4ZWY4YzJiNzA2N2M4IGxlZ2FjeS10cnVuaworMjAwMTggMjA1NGNlYTM4NzU0YmQzYmFkYmNhM2ZjNDQwM2M0M2ZiY2Q0NmEzYyBsZWdhY3ktdHJ1bmsKKzIwMDE5IDFiODc0NWZhYTJlZDJjOWYxNGJlYWM1ZWNjMjViMzczMmY3ODdhNTggbGVnYWN5LXRydW5rCisyMDAyMCA1NGI2ZDI4YTY4NzhjOWIxMDJjNjhlZDRiZjM5ODM0ODFiMmU1YWJmIGxlZ2FjeS10cnVuaworMjAwMjEgMTE0NjA3MGY0N2VjNmI3ZWFjNDQ1ZDVjODY2ODlhYTU0M2UxOTc1NyBsZWdhY3ktdHJ1bmsKKzIwMDIyIDMyYmNiNGUyMTAwNTRmZjE4MmY0Y2I1MTI4NjM0NTA3OTIzNzU5ODggbGVnYWN5LXRydW5rCisyMDAyMyAwYjMzZmM2N2NhNGU0OWQ3ZTNhZjQ0Y2QwMTdiMDBkYTE3MzZmMzRmIGxlZ2FjeS10cnVuaworMjAwMjQgMWM5MGExY2Y3OTVjOTY4MGI3ZTQ3OGMzOGY3Y2FjOTJmYzFlZTI0OSBsZWdhY3ktdHJ1bmsKKzIwMDI1IDU1MjE4ZTA0OTViYzQ3ODRmM2JhN2VhNTQ0YzhkMTk0Mjg2MTNiYjUgbGVnYWN5LXRydW5rCisyMDAyNiBkMGZkNjBjNTlhZWZhZDBhOGVmOGViYjk4YjlmMjM0ZDk5YzdkZjVjIGxlZ2FjeS10cnVuaworMjAwMjcgMGZhMmMwNTE4OGEwYjc5YzZlOTJlNDA1NGU2MjdlOTVmOGE1Yzc4MiBsZWdhY3ktdHJ1bmsKKzIwMDI4IDIwNmE5ZjE5NzhlNTAwYTg2OWNmYTNmODIwNWZkNjA5YTY3ZGY1OGIgbGVnYWN5LXRydW5rCisyMDAyOSAyZWQ4NDVmODFiMGM1ZGY4ODQ4MTZkYTJmMDlhZGZlMDQ2MzM2MTFlIGxlZ2FjeS10cnVuaworMjAwMzAgODE2ZDg2MDAyNjgzMWIyNDA5ZGYwNjUzMzdkZDdjMDYzNjljMDIwZiBsZWdhY3ktdHJ1bmsKKzIwMDMxIDcyNDNkZWIwMjBlODdlMzJjMDc1YmJkNDE0OWU3OGI3Y2ZlMDVjYjAgbGVnYWN5LXRydW5rCisyMDAzMiBjOWI0ZWZmMTVkY2RhY2Y3OTA0ODQ1Y2I5ZDcwMGI0YTU1ZjI1ZDIwIGxlZ2FjeS10cnVuaworMjAwMzMgZjU4YTY1ZDRjYzIzNzgzN2VkNTRmNzNjNmIxNDQ0ODkxNTExNWM4MyBsZWdhY3ktdHJ1bmsKKzIwMDM0IGY0MjllZTk0NDhhYWQ0ZDJlYjM3NjQ1NTNjNzU1NGYzZWM0NzZjYzMgbGVnYWN5LXRydW5rCisyMDAzNSA4ZmIxMGFmZmI2MTU3YWNkZTU3ZWNmODIxZmIxM2I5N2U1YTAzZGMyIGxlZ2FjeS10cnVuaworMjAwMzYgYzJlNGJhM2M4NWNjOTJjYjgzOTI5MjA3MGFiYmZiN2E0MmVhMTYwYiBsZWdhY3ktdHJ1bmsKKzIwMDM3IGJiZjVlYTJhMjJlNTU5N2I5ZDdjNGRhNTk4NmU5YmZhYWEyZmQ5OWYgbGVnYWN5LXRydW5rCisyMDAzOCA4MzY4NDA0MzczZWNjZjI2MzdmM2ZiZTMwMDUzOWU2NTI0ZTAzMjFjIGxlZ2FjeS10cnVuaworMjAwMzkgZjA3YmM0ZjhkYjllNjk4N2NkMmY2Njc1ZmYyMzEzOTUyNzc2ZjA0OSBsZWdhY3ktdHJ1bmsKKzIwMDQwIDM0OWM4Nzg4NjA0ZTI5MzI0OWI5ZWVhZDkyYjNmZjBjMzFjNDI5ZjUgbGVnYWN5LXRydW5rCisyMDA0MSAyMDY4MDllMjViNTBkMmRkZTIzODhhYTgxOTI5YjllNTViM2UxZmI4IGxlZ2FjeS10cnVuaworMjAwNDIgNTA4MDdjNDY1MDM0YjY5YTIzYzI4NDY2ZGY3MGFlODYxZWY0MjQwNyBsZWdhY3ktdHJ1bmsKKzIwMDQzIGM3NGM0YmRjYjQxMTIyZjM4MDgzYTlkYWRkOTk2ODBkMzYyZTYxZDYgbGVnYWN5LXRydW5rCisyMDA0NCAyNjA4NjhjYWUxYTFkNWRmZDg3N2ZjNGYxZWZlODk2ZjRlNjRlZTlkIGxlZ2FjeS10cnVuaworMjAwNDUgY2U5MGY1NjdmYTQyMDJhNTljNGQ3YWUxMTcxYjllMDdjNzk1YjUzNCBsZWdhY3ktdHJ1bmsKKzIwMDQ2IDBiOGI2Zjg0MDZkY2ZiODA2ZDJlZDhmNTkwZWJmZjhmNDFlNmZiMDEgbGVnYWN5LXRydW5rCisyMDA0NyAzYjhhNWJiZmQyZTU3MjBkNmU5NjE0MGU0YzQwZDUwYmY0OTU5MWFhIGxlZ2FjeS10cnVuaworMjAwNDggMTU1MDg3MjI0OWU5ZTg1MTkzMTBmMWJmZmNjOWI3ODQ5ZDk0MDc2ZCBsZWdhY3ktdHJ1bmsKKzIwMDQ5IDFiZTBkMWM1NzgzNDAyNWRkNWQxYzMzNWQyYjA5MGZmNTA1NzE5ZmEgbGVnYWN5LXRydW5rCisyMDA1MCA4YzZmMjJjZWY4NzgyMmQ2ZTAwYWI2NWUxMWFhNjlkMmM1OWVmYWJmIGxlZ2FjeS10cnVuaworMjAwNTEgZjcyMTczYzc5M2I2ZDgzMmNiZTQ3N2Y2NjY1NmYxYzJkZTM0ZTk2OCBsZWdhY3ktdHJ1bmsKKzIwMDUyIDEwOTQwNTYxZTg5MWMxMDBjOTkzNWExOWZlNTI4NTEwYzA2Yjk3YTAgbGVnYWN5LXRydW5rCisyMDA1MyA3MjkxODkxY2IwYmY3Njg3Y2M1ZGYwNzNiNmU5MjNiZTA1ODk3YTQxIGxlZ2FjeS10cnVuaworMjAwNTQgZTNiNWQwM2UzZDdkYjdjNmNmYmIzZjYwZGVhYzYyYmIzODZlOWFjMyBsZWdhY3ktdHJ1bmsKKzIwMDU1IDE0M2VmODhlYzg1NjM0YjQ0MDY2ZTZkZDdlNjc0NTUyYjI3NGFjNTAgbGVnYWN5LXRydW5rCisyMDA1NiBhZDY4M2YyMGJiMTQwNzViMWFjMjExNDFmZjAzMmZlOTE2ZmZiYmU0IGxlZ2FjeS10cnVuaworMjAwNTcgYjQ0ZTc3YTEyOTc4OGRlNWI5MDYyMjlhODIwOWFmZGE3YmU1MjhhYiBsZWdhY3ktdHJ1bmsKKzIwMDU4IGRjOWExNTFhMGJkNTJhOTY4MmJkMDc3MDBlOGQyMjliOGEyNjkwMjAgbGVnYWN5LXRydW5rCisyMDA1OSA5ZGJhYjNkNTRkZWVlYzNmYTBjNTQ2ZmUwYWU4OWI4NTJiMGFjNGM1IGxlZ2FjeS10cnVuaworMjAwNjAgMzQ2ZTk3ODYzMGE5YzNiYzdkZTFiZjA2ZjA3NjU3NDEwOWZiMDRkOSBsZWdhY3ktdHJ1bmsKKzIwMDYxIDBkNTIzNThjYjI4ODM0MTk1NDhkNGE3Zjg1NDI2MjI1MTQwOTQ4YWEgbGVnYWN5LXRydW5rCisyMDA2MiBkODA3NDg4ZGZjN2ExMmI3YWUzZmFiYzkyMWM5NTI0ODljY2EyMTRkIGxlZ2FjeS10cnVuaworMjAwNjMgOTYyMTk2Y2U3MjMxNTYzZmIwNTg0NGZiNjNlNmU5YjEzZDg4ODYyYSBsZWdhY3ktdHJ1bmsKKzIwMDY0IDRmNjhkM2Y4ZmRjODIwMDgwNTk3NzlhODQ1YWQ0ODk3Y2FlYzJmOWQgbGVnYWN5LXRydW5rCisyMDA2NSAxMDkwMmVjYWJjYTljNzMwYTFkZjBlZDA2MTdlNzkzODJmMDkzZmZiIGxlZ2FjeS10cnVuaworMjAwNjYgNzNmNDFiMGZmNzc3NWFmZGU1ZjQyNmFmMWEwZDBkMGFhOWQ1OWMzZCBsZWdhY3ktdHJ1bmsKKzIwMDY3IGNkMjQ1NWNiMTNlZjU1YzY1ZWM2ZjU4NDAxYzFlYjBiZWMwZTNkN2QgbGVnYWN5LXRydW5rCisyMDA2OCBlNDkwNzgxMDFhNjg3NDFkNzdhNWYwNGI4Y2I3NGFiNTEyMWE3ZGUxIGxlZ2FjeS10cnVuaworMjAwNjkgNTk2ZWZhN2U3ZGY4M2NmYWZkN2JhOGE0NDFhMzBhNjA0NjkzOWQ3NSBsZWdhY3ktdHJ1bmsKKzIwMDcwIDYzY2FjZGViODA0NWJkNTE5YTI2ZDZkNmE3OTcyMDAwMTg5NWNjOWQgbGVnYWN5LXRydW5rCisyMDA3MSA3MDdmOTVkMDVlNjkwNzY0ZTg4YmQxY2M0YTY3YjI0ZGQwMzk0ZDI5IGxlZ2FjeS10cnVuaworMjAwNzIgOGRmMGY2NWUzODYwMzU4NzgxNmQxOTU3N2RiNGI5ZjAxYTk4ZGE0ZiBsZWdhY3ktdHJ1bmsKKzIwMDczIGE3YmJmMzNmY2UwNWFlNGJiZjAyMjllMTI3OTliYjVmYTM5MmU4OWIgbGVnYWN5LXRydW5rCisyMDA3NCA3OTE2ZDMyYWEwODEyNWQ4YzlkZjZlZGZjNjJkZDI4ODNjOGZmNDA3IGxlZ2FjeS10cnVuaworMjAwNzUgNWVlMzU0M2VhMzNmNDI1MGU5N2M4MWZlOGM4NTU0MWY0NmQ5N2NmMiBsZWdhY3ktdHJ1bmsKKzIwMDc2IDllNjQ2ODM1NmEwYjMzNzE2NWY1YjI1ZGYwN2QyNTU2Y2FjOGQ5NjAgbGVnYWN5LXRydW5rCisyMDA3NyA1NmQxOTVmMjFiNGZlMGRhOGU1YWNkYTllZWFiOWY0MmQ3ZWY5ZDQ1IGxlZ2FjeS10cnVuaworMjAwNzggZjlhMzAwMTVlOGIwZmNiNGZjYzdmNWNmMmNmNzg3YzJlNDEyZTg5YyBsZWdhY3ktdHJ1bmsKKzIwMDc5IGYyZjhmM2UyYWMyMzFjMWJmNDlhY2RjNWYyNzQ3NjhjMGIxN2JkMWQgbGVnYWN5LXRydW5rCisyMDA4MCBkNDhkMDljNzg3YTg0OWQxNDA1ODJlNzg1ZmJiOWFiNDNhZjU5NGQ3IGxlZ2FjeS10cnVuaworMjAwODEgZjVkMzhjNWIxNzUxZTNkNzE2ZDVjMTU2M2EwODc0OWY4MmRlZGRjNyBsZWdhY3ktdHJ1bmsKKzIwMDgyIGQ3MThjMjkzYTFmZmEyYjdmNGY5ODE4YmM3MDgyNmMwZTEwZWIxMDUgbGVnYWN5LXRydW5rCisyMDA4MyBiYWNhYzc1ZDIyZmRlOWU4NmEyNGQwZDYwYTc4NTUzMGRhMzMwYzhjIGxlZ2FjeS10cnVuaworMjAwODQgZWIwNmEwMmUwNTA3NmJlNGNlMTZkNGFkOTkwNjc3ZGIxYTA0M2MzOSBsZWdhY3ktdHJ1bmsKKzIwMDg1IDExNTM3OTZkMjFjMjQwNzA2YmQwOTMxMjBlODMzZjFkN2Q1MmY5OTYgbGVnYWN5LXRydW5rCisyMDA4NiA0MTIwZWJlMDhkZDA0MTZjYzNkN2M4N2NhY2FjZTVkMGYxN2IxMDkyIGxlZ2FjeS10cnVuaworMjAwODcgMzRlZjA1NDQxNDEzZjI2YjY1Y2IxNTQwMGNhZTgyYTI3NzY1OGUwNyBsZWdhY3ktdHJ1bmsKKzIwMDg4IDM4ZWY0NjYzNTk0OTI2NTY5MDNjNzQ0ZWIyNGQ2ZDA1ZDFlMDc5YjQgbGVnYWN5LXRydW5rCisyMDA4OSAyZTdmNDczMTRhZGFhMzE3NzgzNGJjZjEyZDRiZmQxZjdkNGE4M2ZiIGxlZ2FjeS10cnVuaworMjAwOTAgNTcwNWQ1YThiY2IzY2Q5NWU0ZmFiMGQzM2MxMmE5ZWYzNmQ4YTdkYyBsZWdhY3ktdHJ1bmsKKzIwMDkxIGM1OGI2ZDg2OGQwODE2ZjVhNjk0ZTEwYTZiZTM1MjQxMjU0ZGVlODkgbGVnYWN5LXRydW5rCisyMDA5MiA3YTQ5NDBhNGFjYTZmNzI5ZTI5MDgwY2I5ZmRkOTM2ZDc2MGViNDI4IGxlZ2FjeS10cnVuaworMjAwOTMgNzA1N2I2YWE0NmVjNTVmY2ExODBjNWZkZTU4ZDcwZTBjNTZkYWQ3YSBsZWdhY3ktdHJ1bmsKKzIwMDk0IGFjNjU2YzgzN2I2Yzc2NGJhYzEwZWI5MmQwOTZmMzM5NzJlYTZhZmEgbGVnYWN5LXRydW5rCisyMDA5NSA2Y2ZhM2Q2NWFiNTQ2OWJmMDY4YjkyZTUyYzZhZWFkNDgxZTNlMzUxIGxlZ2FjeS10cnVuaworMjAwOTYgOTA1NDZkNmU1NDQ1NGZjNjg1OTRhMjA1ZjkxMTJlNjYxMTIxZTFjOCBsZWdhY3ktdHJ1bmsKKzIwMDk3IGI3NDJjYWYwYTg2MmE0NWMzZjE1NjU1NzBhOGJlNzNiMjA1N2VjODUgbGVnYWN5LXRydW5rCisyMDA5OCA0MDdkNjBiMmZhNDFhOTRjOWRmNGUzYzY2NWNhOGMwN2VkMzNlYTBhIGxlZ2FjeS10cnVuaworMjAwOTkgNzgyMjM5NDg4MDU4NWJmN2I2YTViYTJkMmFmN2U3YjIxY2JiNGU5ZiBsZWdhY3ktdHJ1bmsKKzIwMTAwIDE2ZjE0NWFhYzJlYzEyZTVkNjEyMTc4MzJjNDc0OWE3YjlmMzYxZjYgbGVnYWN5LXRydW5rCisyMDEwMSBjODgxN2E5YmJiZGRiYzRjMGNjZGFiZTFhNmIwNmE3OWNiNmM3NGIzIGxlZ2FjeS10cnVuaworMjAxMDIgNTJkYTA5NGI1M2VjMzliZjk1MDVhZWY2MTk2ZWI4ZjAxZDg0Yzc0NyBsZWdhY3ktdHJ1bmsKKzIwMTAzIGQzZjdjN2ZhZGVjMDM5ODljYWVkNzk0OTBiZTljZDAyODgxYmVhYmYgbGVnYWN5LXRydW5rCisyMDEwNCA2NDg3NmJiOGFhY2RjNWIxZGY5ZDA2Mzc0ODQyNWIyY2QyNTVhYTU0IGxlZ2FjeS10cnVuaworMjAxMDUgMjE1ZGM3MjVkYjg0MDQ5ZWQ2OGY1NWE3NWI4ZDdlZjUxYjZiNWVkNiBsZWdhY3ktdHJ1bmsKKzIwMTA2IDRkNmVlN2YyYmVlNjYwOWEwYzMwNjc2Y2RiMTJhODY3NTQxYTI0YmMgbGVnYWN5LXRydW5rCisyMDEwNyBmMWE0OWVlYzdjMmJmMWRiNzU4NWQyZWMyNzMxMDk2OTFmMGQxNTIzIGxlZ2FjeS10cnVuaworMjAxMDggZjZlMWZhMmRiNDhjYmI3YTRmNzJkMjViZTdmOTBmMDNkMDRmYTYwZiBsZWdhY3ktdHJ1bmsKKzIwMTA5IGExYjk5ZDA4OGNlYTgyOTRkNWI5MjEzMjdkMmI0MzRhMDMxODMzODUgbGVnYWN5LXRydW5rCisyMDEwOSBiNTlhNTM2YWUxZWYzNzc0ZmQ4NWMxN2Y2MjNlODkyNmI3YjZjMDk1IGxlZ2FjeS10cnVuaworMjAxMTEgYjNkY2UwNjg2OGQ2ZDM1ZjU5MDM0NTJlNmU5MGQ3ZjBhYzQxN2MzOCBsZWdhY3ktdHJ1bmsKKzIwMTEyIDNmOTEyZmI4YzE4MDgxODRlYmE2MzI4NjdiMjBhYjFkYmJjYmEzNTggbGVnYWN5LXRydW5rCisyMDExMyBiNjAwOTZkNTAwMWE2ZTBkODM2YTA2NjBmZjk1Yzc5Y2QxMWUwMTkxIGxlZ2FjeS10cnVuaworMjAxMTQgZTNjYzIwZTllYTM2ZWNkZDc4N2JmYjdiZmQ2ZGYwMjExYTNlZDc0OCBsZWdhY3ktdHJ1bmsKKzIwMTE1IGVlYzM5MWE1NWY4NDQwMTllYjRmM2Y5YzY0YzE2ZTMzZDgyMzFjNjQgbGVnYWN5LXRydW5rCisyMDExNiBiMjkxODMzYTBlZmI3ZTFkMTQ2NmQzZTQxNzJlYjAxMzRlM2FjMWI5IGxlZ2FjeS10cnVuaworMjAxMTcgZjkzOTVmNzYyN2M0YjdiZjI0YWY0YjY5OTM5NmQ0NWZlMGRjNWQ2YyBsZWdhY3ktdHJ1bmsKKzIwMTE4IGFiNzA3MjA5NDA5YmI5NTg1NzRhZDM0NjEwNjVhNDE1YTgxMGQyODcgbGVnYWN5LXRydW5rCisyMDExOSAwMmE0YjBjZmM1N2UxMzU0YjBlZjdlMGE2NmUzYzk1MzI4MDk0YWMyIGxlZ2FjeS10cnVuaworMjAxMjAgM2ViOGQ3MjU5OTY5MjRjMmE3NTdmYzBhYzk2MTk2ZDQwZmQ2NzE4ZSBsZWdhY3ktdHJ1bmsKKzIwMTIxIDMyZmI2NjQzYWRmMWYwNGNiODc4ZWI2ZmFiNTU1NWNlNmJjNzE1ZjggbGVnYWN5LXRydW5rCisyMDEyMiA5MmIzZTA4MzE5NzAyYTRjNzMzYjRiZjQzMmNhZTBjMGM5OTI2NmIyIGxlZ2FjeS10cnVuaworMjAxMjMgNDVjZGExYjM5MzU1YmM3NjYzOWUzZjVhZGQ5NzE3ZjcyMGM1MjJkZSBsZWdhY3ktdHJ1bmsKKzIwMTI0IGJmNGNjOTlkNzExZDBhYzc0ZjAwMTQ1OWE1Y2MxYjVlZTNkODNjMTQgbGVnYWN5LXRydW5rCisyMDEyNSA0ZTE5ZmI4Y2YxZmJkMzk4NzBlY2JhZDZiNmQ3ODgyMDc4ZTdiZTI3IGxlZ2FjeS10cnVuaworMjAxMjYgZDJiMDFkNGUxN2U5ZGNmZDJiMjc2YTk4Y2E3M2Q0OWRkZDBmMTBlMyBsZWdhY3ktdHJ1bmsKKzIwMTI3IDcxYWYzYjYwYWE2MjkxMjNhNTY0MzI5NGM5ZGZlZDViODYyMWZlZDUgbGVnYWN5LXRydW5rCisyMDEyOCA1ZjcxMTg1ZWYyYjVhZGRlZGU3YWMyMWJiZGU3Y2YyZjg3MzM1ZmM2IGxlZ2FjeS10cnVuaworMjAxMjkgMTQxMjMwOTU2MzI1NmUxZTQzMDE2M2ZjN2ZmZWVjNzY2ODVlMGU0ZiBsZWdhY3ktdHJ1bmsKKzIwMTMwIDM5MGE4MzE1ZDYzNDJiNGMyZjcwZjhhMjFiZWEyNDRlYzhkYmVjNzkgbGVnYWN5LXRydW5rCisyMDEzMiA3YzA0NzI5MzJmYmY5NjBiZDU5YmIyOGQyYzkyYTE3NjIzMmU1ZWYzIGxlZ2FjeS10cnVuaworMjAxMzMgMjJkODUwMTdiZWNlODk4OTliNzIxMDYyZjMwYjI5Y2RlOTIwMTcyOSBsZWdhY3ktdHJ1bmsKKzIwMTM0IDUzNmU4ZGQzNTk1MzI0NGQzMDI2ZmRmMzE5NmI2YTg0ZTI3YzYzZWEgbGVnYWN5LXRydW5rCisyMDEzNSBlZTQ4MDM4MjY3ODQ3OTY2OTM1Nzg5N2IwNDA0M2YxNzYxOTkxNTIxIGxlZ2FjeS10cnVuaworMjAxMzYgMWIxMmU2MzQwMDM4OTRjYzE4Yzg0MTIxNThmZDllN2UxZjhlOWY4ZiBsZWdhY3ktdHJ1bmsKKzIwMTM3IGEzNDBiYTRhYWMyNzBkODRhZjZiOGQxZTAyMmE3ZjdkNjcyMWZhMDkgbGVnYWN5LXRydW5rCisyMDEzOCAyNWU5M2EwMWY4NmQ5ZWYwNWRlNDgyZmZhMTJjNjc4MDNiNDk2MGUwIGxlZ2FjeS10cnVuaworMjAxMzkgMDM3N2Y5MjdjYWZhMzM4NDYzODYzNDBiMmZlN2Q0NDlhZjA3ZmJkNyBsZWdhY3ktdHJ1bmsKKzIwMTQwIDc1MTAzYmVmMGMyNDU1ZDMzODZjYWYwNDQ3ZGZiYTQyM2YzNTI3NDAgbGVnYWN5LXRydW5rCisyMDE0MSA1OTQ3MmJjYmZiOGU4YTVhYmQ1OGIxNzI3ZDAzYjU1N2E3MWM1Yjg2IGxlZ2FjeS10cnVuaworMjAxNDIgMDJjZWMwMGYyMmJiNTNjZjYwOGQyZTMwNmYwYjgxMjJmOGZlZDEwYyBsZWdhY3ktdHJ1bmsKKzIwMTQzIDZkMzA1NTJjYjRmOTkwODdhMWYzOTBhZmRlYjEyNDNlOTI5NmNjMTUgbGVnYWN5LXRydW5rCisyMDE0NCA0YWE3YWZiZjI5ZDgyMTU3ZTI0OWM4MzBmMWI5NzZkODEzNDRiMmFlIHJlbGVhc2UyMC1tYWludAorMjAxNDUgZmRjNTIyZGM5ZGY1NTZjY2FiYmNhN2ZkOTY3NDg2ZGUxYjQxNDNhZCBsZWdhY3ktdHJ1bmsKKzIwMTQ2IGI1NTNmYmFjMTQ2ZGRiZWFkMDY5YjQ2OTE5YTEyYjIyODM0ZWNiYjMgbGVnYWN5LXRydW5rCisyMDE0NyA4N2Q1MDlkMDg1YTBmYzM4ODUyZDcxOTg1NjRlZmVmMzRkNjgxODAwIGxlZ2FjeS10cnVuaworMjAxNDggODcwZGEyNGQ0YmFmMjRlN2FmMDc4ZjE2MDUxMjkwNGVjNTVlODQyZiByZWxlYXNlMjAtbWFpbnQKKzIwMTQ5IDIyZDM0OTc0ODM4NGY4NjY2YTgwYTg2ZTg2OWI1MzM2YjM5YTkzYzAgcmVsZWFzZTIwLW1haW50CisyMDE1MCBjNGE1YmQwODg1MWJjZmFiNWY3YWQ4YTYyMDY5NjdkODE1YmJiNjIyIHJlbGVhc2UyMC1tYWludAorMjAxNTEgZWUyNjQ2NjliNjc4MGU5N2VkZTUwNGY0MDJlYmMzZTMzNmZkMzY1OCByZWxlYXNlMjAtbWFpbnQKKzIwMTUyIGEwMDI5MThmYzBjMjc2NDRjNDc5OTBjMTM3MWI5ODYzMzJjZGE3ZDIgcmVsZWFzZTIwLW1haW50CisyMDE1MyAxMmZlZTdmYjAxOWIzYjg0MzU2YjMyMmZjYzc2YmJjMmVjOWU3ZWY2IHJlbGVhc2UyMC1tYWludAorMjAxNTQgYmViMjk4MmQ4NWFhODIyYzQ1NGZlZmU0Yzk3MDQyZmZiMTUxMGM5YyByZWxlYXNlMjAtbWFpbnQKKzIwMTU1IDExYTIxZDU5MjgzNDg3YTVlM2NhNjE3MTg2OWVhNGY4YzE3NDMyMDQgcmVsZWFzZTIwLW1haW50CisyMDE1NiBhNjI2YWNjMzBmYzIzOTlhYmQ5YWJiOTk2ODllYWQ2NjQ2OWViOTFmIHJlbGVhc2UyMC1tYWludAorMjAxNTcgZjRjYTkzZThhMmQ0Nzk2NGM4N2Q3OGE2YTBkNjhlM2U2NzQ0MjIxMSByZWxlYXNlMjAtbWFpbnQKKzIwMTU4IDYzOTNmNTVkYmQ3YmU5ZGY3ZTI3OGNiZTdiMDNjMTkyY2E1ZjA3MTEgcmVsZWFzZTIwLW1haW50CisyMDE1OSA1ZWQ0YzdlOGI0Zjk4ZWNmZGY0NjM1YWM2NzUwYmEwOTNmZTMyZjdmIHJlbGVhc2UyMC1tYWludAorMjAxNjAgOWRkYmI3NmMzMTE0NTQzNWJlMmZhZmNiOTE2ZWFiMzVmMTVjNGE4NSByZWxlYXNlMjAtbWFpbnQKKzIwMTYxIDQyYjFhNjk5YTVkZGMxY2Q1MDBiNTk0ZGVhZWE2OTZlZTI0NmI5M2YgcmVsZWFzZTIwLW1haW50CisyMDE2MiBkNDY3ZDE4NGI0MjkzMDRlODNjMWMwMjhjMTAzZmRjMGZiMTMxMTE2IHJlbGVhc2UyMC1tYWludAorMjAxNjMgMDkzZTlhMjRlZTc2N2ExZDRjY2RlZjE5NmQxNWJmYjk4NTkyNzA5ZSBsZWdhY3ktdHJ1bmsKKzIwMTY0IGUyZTkxNDZmNGFiNGQ5YzI5YmYzNGIwYjExMDQ0NWM5N2U4NWI5MWIgbGVnYWN5LXRydW5rCisyMDE2NSAyNGQyMmVlZTk0Y2YzNzE1NzNkMTIzMmI2Y2QwMTNlMzI2NGE5MjcyIGxlZ2FjeS10cnVuaworMjAxNjYgNzJmZDI2NTdiZTM0Mjg3ZjU5NmYzNGJiNmI3YjFkNTZiMWIwZjMwMiBsZWdhY3ktdHJ1bmsKKzIwMTY3IDUzNmNjMTI2ZmI5ZjhhMDcxMTJiMDUwYmQxYjc0MmJhZmYwOGU4OTcgcmVsZWFzZTIwLW1haW50CisyMDE2OCA2ZGM0M2UwYzZiYmY1MDM1MzQzMzAwNjJlNzNiNzI5ZWUwYmUxOTBjIHJlbGVhc2UyMC1tYWludAorMjAxNjkgZTUxMGM0Y2M1NzM3NjNkM2RjZDE0YjYxMmZjOTVhYWUwZTMyMmMzOSByZWxlYXNlMjAtbWFpbnQKKzIwMTcwIGE0Njk2NGQ3MTExZGRlZjRhMmEyOTIxZmQ3NGQwYzNjNGQ0NjY3Y2QgcmVsZWFzZTIwLW1haW50CisyMDE3MSBkN2UwZDIwY2RkYWRiMzYzMmU1ZTAwMDZmNTIwYjkxYTM4YzBmNTk0IHJlbGVhc2UyMC1tYWludAorMjAxNzIgZDlmZjEzMTAwZTJmMjEyMmNhMjNhOTk0NWY2NTU5MWE1YTZlM2U0YyByZWxlYXNlMjAtbWFpbnQKKzIwMTczIDVjZjM1NWY2N2FhMzdiMWY2ZmNkZDUwYjhmOWJhZTNiNGNhYTY5NWIgcmVsZWFzZTIwLW1haW50CisyMDE3NCA1NzNhOTEzODg3MDViNTAwZmNhNWI0ZDczYWMxZjNkZjAwMWFjMDM4IHJlbGVhc2UyMC1tYWludAorMjAxNzUgY2NlZjAyZGE4OGE2N2Y5OTE4Mzc0ZThhN2VhMGMxODQzZjRiMTc1OSByZWxlYXNlMjAtbWFpbnQKKzIwMTc2IDMxMjAzZDk5MzU4MjczY2Y3MzNiOWZlMWRjMjNmYzZmNzg3YmUxMTUgcmVsZWFzZTIwLW1haW50CisyMDE3NyA5OTU2YTFjNWQ0NDA1NGQ2NGY2MWY4ODVhZWIwZjgxZTRlY2JjMTAxIHJlbGVhc2UyMC1tYWludAorMjAxNzggMTkyZjI1ZTQxZmJiZWU5ODhiZjFiNWQ5OTUzODZkNGQxZGYxODJhOSByZWxlYXNlMjAtbWFpbnQKKzIwMTc5IDJiNTc2OGMxMzU5OTIwMjkzZTU2ZTBlODYzNWFkMmEzNzQ2NDMwNDEgcmVsZWFzZTIwLW1haW50CisyMDE4MCA5OTI0NjBjNjY4YzE1YmY5MjY0ODRjZWUzMDM2YzkwN2UzODg0ZDk1IHJlbGVhc2UyMC1tYWludAorMjAxODEgOGRlY2E3OWVhNmFiYjU1ZTMzZjhiMzgwNTdjOTU2YjhmYTBkODc4YyByZWxlYXNlMjAtbWFpbnQKKzIwMTgyIDA0Mzc3NWIzYjhiMjk2NjM0NzQ5YmY5MjFmOWFjODBmOGM3ZTY2NmIgcmVsZWFzZTIwLW1haW50CisyMDE4MyBmMzRjOTA5ODkxMzgzNDVkY2Y2NzNhZDIzMjM1NWI0OTY4NWY2MmViIHJlbGVhc2UyMC1tYWludAorMjAxODQgZDFjMTM1MGEzYTVmNDJiNTg1YzY4YzQ5OGFhMjRlYzhkNDc5ZGFkNyByZWxlYXNlMjAtbWFpbnQKKzIwMTg1IDVhNGUwODM5Y2NlNzZjZjA2ZGUyNGYxMzRlNjZiZWY0N2VhYWUzMTEgcmVsZWFzZTIwLW1haW50CisyMDE4NiA1YmQ2ODZlMGVjZDQxZjYwMDE5ODcyOTRiZmE4N2JmY2YwM2U2NmRjIHJlbGVhc2UyMC1tYWludAorMjAxODcgZDE2ZWRjNzA0ZGExZjU4Y2M1NGQ4MjhmMmFiMzhkYTJkM2Y5ZGMxMCByZWxlYXNlMjAtbWFpbnQKKzIwMTg4IGQ1M2E5Njc5YTkzYmI4YmU4MWFkOTVkM2UwM2JlZjNkMjVkMTY4ZjUgcmVsZWFzZTIwLW1haW50CisyMDE4OSA5Nzc2Y2Y1ZGJmZTM4ZDBjNzg4MWI2ZGVlMmQxYjU1ZDZiYjBiM2YwIHJlbGVhc2UyMC1tYWludAorMjAxOTAgNzZiODlmYTNlZjM0MDYwYTNjYzFkNDZlNGY5YTNlYTVmNDQyNmRlOCByZWxlYXNlMjAtbWFpbnQKKzIwMTkxIGMwMTE0ZWRmZDMxMzc2YTg4NmNiZDdjYWE4ZTEzNTMxOGRmMDViNGUgcmVsZWFzZTIwLW1haW50CisyMDE5MiBlZjEyMjNkODQ0MmRjNTY4MWQ5ZWE0OGVmYTE5NTQzNjcyMDJiYzU1IHJlbGVhc2UyMC1tYWludAorMjAxOTMgNmIwZmY1MjlkNjE1MDI0M2I5MGUwOWU4NmUxYmI2NzQ0ZGRhNDI2NiByZWxlYXNlMjAtbWFpbnQKKzIwMTk0IDdkMDQyNDVlZDc1ZjM5YmYyZTRmZDM0YmNkYTY3MWZhNzVlODg3NmYgcmVsZWFzZTIwLW1haW50CisyMDE5NSBkNjU0N2ZmOTQxNmJhYjgxOWFiODliZGE5ZWIwOGUwMjdmY2EzNTNkIGxlZ2FjeS10cnVuaworMjAxOTYgMDNiYTA2MjQ3NDg2NjMwYWFmYTdlMGY0ZWRjYTIzMDhlMWVmNWUzYyBsZWdhY3ktdHJ1bmsKKzIwMTk3IDgzNmNkZjhkMTI0NWQ1ZjkyYjNkNWQzNmE4NTM2OWQ5NDkxMmQ0Y2IgbGVnYWN5LXRydW5rCisyMDE5OCBlYTMyNmViNDc3NWNjMWM0MGVlMWUyMTJkNWRkNzU5NjhlMDE1MWVkIGxlZ2FjeS10cnVuaworMjAxOTkgNDZhNmMyOGQzNWU1ZGI4ZDE0YTYxNzFjMzQ3NjkyYjRmNDkzZDU2OSBsZWdhY3ktdHJ1bmsKKzIwMjAwIDMxMWU2YWVlZjg1OGFkNTA1MjNlMDZlYTY1MTA1MzMxOTU4OTI0ZTMgbGVnYWN5LXRydW5rCisyMDIwMSAyODhkODA1YWYxNDIxOGYzZjQ5Mjk5NWJlYmIyNmRhZTBkNjQ3ZjQ5IGxlZ2FjeS10cnVuaworMjAyMDIgNTA2YTA4MGQzOWVjZmMyMjkyMzk4NzRhZmUwY2JlNjFiYjJhMWJjNSBsZWdhY3ktdHJ1bmsKKzIwMjAzIDM3ZDllZDU1NDE2ZmYxOWFkNjRlNGYyOThlMzMzNmUwNzQzNjkzNTcgbGVnYWN5LXRydW5rCisyMDIwNCAwY2RmY2NkYjY4NzEwYTEwYzU2NjhkZGRmMzJhZDM0OWU5NDY1YTQyIGxlZ2FjeS10cnVuaworMjAyMDUgYjBhN2ZhZjk4YThlZGIzZjNhZTAzYWM0MGYzZmMzNDdlZWM5NjFkOCBsZWdhY3ktdHJ1bmsKKzIwMjA2IDc2MzVmODgzOGM2ODkyZTI5YzE2MGI4Mzk4Y2QyYTRkNDllNmZlNjEgbGVnYWN5LXRydW5rCisyMDIwNyBiNzM1NDdiZjhiYzI0ODcyOTFjNTBmNWRiM2JkZWY1Yzk3OTdmNjVjIGxlZ2FjeS10cnVuaworMjAyMDggMTFlYmE1YmJmYTE0YWI1MWEzMjJjM2M0NzIyZWQyMTUxZTQ5YTlhNSBsZWdhY3ktdHJ1bmsKKzIwMjA5IDZiZThiYjQ4MDhlMTRlZjlkZGY5ODg2YjhlYzU2ODU5YmI3MmYxN2QgbGVnYWN5LXRydW5rCisyMDIxMCA1N2E1ZjZiMDMzN2QxZTE3Mzg4NGViODU0YTZmOGRmMjE2YjI5NWFkIGxlZ2FjeS10cnVuaworMjAyMTEgMzEwMDY2Yjk5MmYyZjhhOGUxYjc4NzBkZjJhZTkzZmI4YjhhNzRhNyBsZWdhY3ktdHJ1bmsKKzIwMjEyIGIyNWEyNDEzMDIwZTIzNThjZWQ3OTlkNzFkMmRkOTA5ODk1MWYyNjMgbGVnYWN5LXRydW5rCisyMDIxMyA5OTA2ZGIyYTFmZmE3ODYxMTQ3Yzc3OTMyNGJjNDdjNjk5YTk1OGJkIGxlZ2FjeS10cnVuaworMjAyMTQgOTJiNjVmMTIxYTNlOTc2NzIwMWVhNzEwNmQ2MzZhMDViOTE1ZDlhYSBsZWdhY3ktdHJ1bmsKKzIwMjE1IDliOGVhNjM4N2RjNjA5ZmQwYTkzZjRmNDY5YmM2ODgwODEzZTQ3YzAgbGVnYWN5LXRydW5rCisyMDIxNiBiZDExMGVhZGMxOWFkNDA5OTUxYmYzYWYzMDJjMTRkNDlhNDVlNzcwIGxlZ2FjeS10cnVuaworMjAyMTcgZTdmNWI3MGIwNjA2YWJiMGQ4YjVkOTg5M2I1Yzg4YjU3NjAyMjg5MCBsZWdhY3ktdHJ1bmsKKzIwMjE4IDkxMWUyMTFiODkzMGI5MGUyNGZiZTIyZDE5ZGE1YjNhMjAwNzMwOGYgbGVnYWN5LXRydW5rCisyMDIxOSBhM2RlYjIwMWVjZGExMGY4MTVkYWY0YWQ5MjZhMTQ4MzRhODdkNDk3IGxlZ2FjeS10cnVuaworMjAyMjAgYmI5ZTIxNDAzNWUxMjViOTEzNDg1YzI3NTM2ZTM2MGM0ZjU2MzQ3NiBsZWdhY3ktdHJ1bmsKKzIwMjIxIDc2MDc1NDQxOGVlMDI3MGFjNGVkZWI4NWE5YTM5YTZjYzE4N2Y0ODQgbGVnYWN5LXRydW5rCisyMDIyMiAwODA4MjhiZjhkYmRlOGZlMThiMTQ1M2I2YTk2Y2Y3OWE5OTI5NjVhIGxlZ2FjeS10cnVuaworMjAyMjMgNGIzNDZjYzM5ODliYWE5OTNlYTU3NThkYzk0ZGIyZjQ5YjcyZThlMiBsZWdhY3ktdHJ1bmsKKzIwMjI0IDEyZjdmMTY3YWM1MzNkNDZhNGZlZTQyY2MxYjYxYzUwNmU5OTQ1YWQgbGVnYWN5LXRydW5rCisyMDIyNSBkMzI4Y2ZlYjBjNzViYzA0NjRkZWQwMGFkNWM3OGY3ZmEzZDAwNjYyIGxlZ2FjeS10cnVuaworMjAyMjYgMTgxZDAxMzIwZWY0M2UzZjU2NGU3NmQ0MGU4ZmExMGZkMDYxNzM5ZiBsZWdhY3ktdHJ1bmsKKzIwMjI3IGIzZmQ0NGZmYWIxZTkxNjEwMmUyZjZhYjEzZmViMWU4YTQ0NDBlNDQgbGVnYWN5LXRydW5rCisyMDIyOCA5MmI2MGRlZTdmMDgzNWRmMjg5Y2NlNTY4MjE2NjE1YjdiODA1YTU2IGxlZ2FjeS10cnVuaworMjAyMjkgY2NhZTQxMmJiYzNlMjJjZmE2MjQ5YTcwMmE5N2M4ZDI3YjIxMDY0MiBsZWdhY3ktdHJ1bmsKKzIwMjMwIDIxNDZhNzNjZTM1YzBiZGQ0NDk5ZjNlZTliNGIxN2JlODU0ZmYxNmUgbGVnYWN5LXRydW5rCisyMDIzMSA5NmVhMGVjY2RiMzE3Mzc4ODgzNTg4MTZiNjc3MTY2ZmJhMGYyOGM1IGxlZ2FjeS10cnVuaworMjAyMzIgYzMyNzUyYTI4NjUyMjEzZTJjMzdlNjc4MzdjMjFkYjBkMTE1MDUyNCBsZWdhY3ktdHJ1bmsKKzIwMjMzIGE1NzEwNTc4YzJlMDIyMTY2MjkzMzRjMWExYjdjZTFlNWJhYmY4MjMgbGVnYWN5LXRydW5rCisyMDIzNCBhYjRlNGNiMDk0YzFmNjQzMGQ0MzhjOTNmN2FmYzczYWE5ZjI4NzczIGxlZ2FjeS10cnVuaworMjAyMzUgODNlZTYzYmNmMDM2NTk4NzI3ZmI2MjcwM2JhMTJlMGYyMDUzZjhjMSBsZWdhY3ktdHJ1bmsKKzIwMjM2IDk4NzZkNmJhZjg0Mzg5NjM4MWNmYzg2MmVjZGUwOWZhNDFkNTM3ZWQgbGVnYWN5LXRydW5rCisyMDIzNyBkZTk4NTg1MzBhNTUzZGM4NGVhYWRkZTgyMTY5NmJkMTEwYWI5NzMwIGxlZ2FjeS10cnVuaworMjAyMzggZjFkMmU4OGZhMTFkZTMyNjA1ODM1OTBlMjE5NWUzMWY4YWZmZDc3NCBsZWdhY3ktdHJ1bmsKKzIwMjM5IDVhZmZmY2E2NmUyZmFlMjZmMjA2MDI3ZmFiYjBmYzA5ZTcxOWFkNjIgbGVnYWN5LXRydW5rCisyMDI0MCBmOGZkYmViNzM2NjcwOGI3MzM5Y2YxZDdkOGM4NDY0ZTI1YTYwZGVjIGxlZ2FjeS10cnVuaworMjAyNDEgODc2ODYxZjEzNTQzNmNlN2M3OWNmOTZlYzA1YjI5NzAxNjVhYTNmMCBsZWdhY3ktdHJ1bmsKKzIwMjQyIGE5ZWY0NGJiZDk2ODI5MDU5N2I1Njg2NjY5NGYyMzA3ZTgyNzY4ODYgbGVnYWN5LXRydW5rCisyMDI0MyBlNzIyZDQ4ODNlMTk3MTVlZjI4OGE1MmUxNjUzZGYwY2MwM2U0NzdhIGxlZ2FjeS10cnVuaworMjAyNDQgMzMwOGFmY2FhMTMxNTVkNzNkNjNiM2ViZWIzZGQxODM3NGNhN2ZkMyBsZWdhY3ktdHJ1bmsKKzIwMjQ1IDJkMzBhMDk5NzA1ZjM5ZmNkY2VhYWVkODVkNjM0OTk2N2UyN2IxZWIgbGVnYWN5LXRydW5rCisyMDI0NiBlZDNlNjZmMzA4MzdjMjIxMTY1MTZmY2NmZDdlM2I1ZjYzNjkzYTZmIGxlZ2FjeS10cnVuaworMjAyNDcgYWVkNmIxNDM2ZGI0Nzg3MGY1YzgwMDU5NDIzMGE0NDM5OTBiM2RhMCBsZWdhY3ktdHJ1bmsKKzIwMjQ4IDE5NDMzMThmYWUzMTc3YTU4ZWNiZWVjMGYzYzk0ZGM4MTY0OTk1MjQgbGVnYWN5LXRydW5rCisyMDI0OSA0NDY4YThkYTY3Y2EwMTA0MjRlYWVhNzRhNzgyOGNkYmYwZjZmNWY4IGxlZ2FjeS10cnVuaworMjAyNTAgMjhjZjBhNzk0M2NmZDdiMjM1MzFiYzJkZDY4YjE0MzA3MzJhNGJkYyBsZWdhY3ktdHJ1bmsKKzIwMjUxIGNjOGEyMWJhNjQ0OTk4Y2NlYWQ0Mjk2OTI0NTNlN2JmZDhkMjRhM2YgbGVnYWN5LXRydW5rCisyMDI1MiAzYWFlZGJhYzk1YjMxMmJlNWYxMzkxODg0OTk0OTU0YjZmYzYxODZlIGxlZ2FjeS10cnVuaworMjAyNTMgYTE4NDBiOWIxNGYxNDVmMGQxZjEwZDk3MmNhNmI3ZDNmY2U4MDlmMiBsZWdhY3ktdHJ1bmsKKzIwMjU0IDk2MjFkMGZiYzJlNTJmMGQ3ZjQ5ODFiNzNmOTcwZWJmMGU3ZjMzNjYgbGVnYWN5LXRydW5rCisyMDI1NSBjYTU2NWUzZDNjYzVjMDY5N2ZjYTNkM2JlNTE4MzlkZjE1NzZhY2M3IGxlZ2FjeS10cnVuaworMjAyNTYgNmI4ZDkxZWE5ZGUzNDM0MGZkZGE2ZDQyZjIxMmJkZGVlMWFkOTg0NSBsZWdhY3ktdHJ1bmsKKzIwMjU3IGQxMDllYzY2N2VjMjVkOGZlZDEwNjJhMzQ3NmYwZmU2OGYxNDIxYTggbGVnYWN5LXRydW5rCisyMDI1OCA4YTNiYTEwZjEwZjZhMjU0OTE2YWQ0ODBlYWJjYTEyMzg1YjdjMWIwIGxlZ2FjeS10cnVuaworMjAyNTkgMTFlOGJiNGQ4NDVkMmMwYmU1M2ZlMDFhYmJmNTY2MzgxMTdkYzNhNCBsZWdhY3ktdHJ1bmsKKzIwMjYwIDUwNzlkNmUzYjYxNTA4MDA3ODY2NWZjYjRkNjJmZDI0N2JkMGIyYjIgbGVnYWN5LXRydW5rCisyMDI2MSBlMmIzZTZkODUzNDMwYTIxMGZjYmFhZmVmZmFlM2FkMTE1MDMzMWViIGxlZ2FjeS10cnVuaworMjAyNjIgYmI3NWQ5M2Y2YTMxYzkzMzRkZWE2YzM1YWVkODBiZGM0N2FhZGE3NyBsZWdhY3ktdHJ1bmsKKzIwMjYzIGYzOThlNTg1NmZhNzQ2NTMwNTViOGJiYzM4YTYzOTMyOTAwMWIxZjUgbGVnYWN5LXRydW5rCisyMDI2NCA2NWYzNjMyMzZlY2Y3ZmE2YTgzNmFhOWYzNWNkYzFlMjM3NDIxOTAxIGxlZ2FjeS10cnVuaworMjAyNjUgZTg0M2VlZTdhMzNlODYyNWIwNjI2YTQ5N2ZmYTY0MjIzMjlmMWI1ZSBsZWdhY3ktdHJ1bmsKKzIwMjY2IGQzODI3OTIyOTA5Y2EyNTc1NGRiOWM3NjUxZTFkNTE1NDQxNTJjZTIgbGVnYWN5LXRydW5rCisyMDI2NyBlNTRlMTFjMzBlNGIxNTQ5N2MzZjcyY2ZlNDY5ZTE4NGQwMjAzYTAyIGxlZ2FjeS10cnVuaworMjAyNjggY2I0MGU3NzBjOTAzZGQ4ZTBiOTk4OTkxZjJhMTM0YjVmOTI0MjFhZSBsZWdhY3ktdHJ1bmsKKzIwMjY5IDBjODdhYzY3NGNlMTgyMDY3NGE5ODNkNGNmNWQyMzFhZTdhMzQ0OGQgbGVnYWN5LXRydW5rCisyMDI3MCBhODBhODQ3ZjVmNGViYTU4YmUxMDA5NTA0NDZmYmJjNTRmZDE2M2Y2IGxlZ2FjeS10cnVuaworMjAyNzEgNWY2ODc1NGViM2I2YmM4MDA3YzMzZTk3MGZkMGVjYzkxYjhkODFkZiBsZWdhY3ktdHJ1bmsKKzIwMjcyIDMwZTUyNzBkYjEyODNiZjhjZGEwYWE4NmQxNjI2ZGZkODRjMzkyM2QgbGVnYWN5LXRydW5rCisyMDI3MyAwZjZkOGZlNGEzYTkxY2ZkN2NkYzcwOTI3ZjVhNDJhZmVjZGNjYzQ5IGxlZ2FjeS10cnVuaworMjAyNzQgNDYyMmFmNGRhOWUyODJmYjFkY2U3OGE1YWUzMTE5Y2ExOWQ0NGExYiBsZWdhY3ktdHJ1bmsKKzIwMjc1IDhhMmRkOTc4NzNmMjU3NjJmZjRiN2NiMzM5NzBmYTYyNWNiOTM0ODkgbGVnYWN5LXRydW5rCisyMDI3NiBkMzY4NTUyYzJiNzI2MTAxZjlmZmI4NjlhYzY1NjU1NzlhZDk2ODFmIGxlZ2FjeS10cnVuaworMjAyNzcgN2M0YmFjMmY3YjNhYjcxOGUyMzliNzAzNDUxY2U4NTE2M2M5ZDU5ZSBsZWdhY3ktdHJ1bmsKKzIwMjc4IDliMjk3YWYxOGUyZjMxNTA4NDQ5Y2U0NjYyM2I3ZTQ4MTg3YzhmZDYgbGVnYWN5LXRydW5rCisyMDI3OSBiNjEyYjUxOWQ0MWE1NDY5ODc2ZTUzMDlhOWU2YzcxMjZmNGVjNTIxIGxlZ2FjeS10cnVuaworMjAyODAgYmJjYzk4MzczMTJlOGU1OWY2YmM1ODA5ZDUzYTgxZjdlM2NjYTM0OCBsZWdhY3ktdHJ1bmsKKzIwMjgxIDBlYzA2YjQ3NTVkYjcyNGQ1MjZlZGEzOTI0M2UzZjM0Y2M3NGY4MTIgbGVnYWN5LXRydW5rCisyMDI4MiBlNGFiZTc0YmM5NzMyZDcyOGIzMWE1ZjRhNTM5NTEyOTAzYzJlNmU3IGxlZ2FjeS10cnVuaworMjAyODMgNDcxY2UwZmFhNzc1MGY0MjA4ZTY5NTIxNmVjNzQ0ZDc0MWRmYmZjZiBsZWdhY3ktdHJ1bmsKKzIwMjg0IGIyYmM1NjMzMjA0NWFlMDI1MjVhYjkzMWY4ODJjNDA3YzUxZTVkOWEgbGVnYWN5LXRydW5rCisyMDI4NSAxMTJiZDQ3ZTA3OGQzMTkzMGM2YzVjODE3MmE1OGEwZWNhNjY3NDcwIGxlZ2FjeS10cnVuaworMjAyODYgNjg3MzU0OWQ0ODRjNzU4NWQ2MGJkMmJmMzQ3NGU4OGEyYTMyYjAyYyBsZWdhY3ktdHJ1bmsKKzIwMjg3IDRiMDZlNGRiMDA3NWRjM2IwNTViZmVmZGMxOGU2Y2VhM2U0YzNiNDggbGVnYWN5LXRydW5rCisyMDI4OCA3MTdiMGM4ZGU3MWU5YTEyNjdlZTYyY2M4ZDhmYjZkN2MyZmZmZTQ5IGxlZ2FjeS10cnVuaworMjAyODkgODYzZTgwNzNjN2FhZjMxZjMxN2JlODcyZmQxZDc2NTdkYzNjMDlhZSBsZWdhY3ktdHJ1bmsKKzIwMjkwIGJlYjlkMmIwMjg0NjU3YmUyM2ZhOWY5YjM0NDk4ZTJkYWE4OGM4OWYgbGVnYWN5LXRydW5rCisyMDI5MSBjZjhhNTk1Y2VjMzM3NDhiNTIzNjI0MDRmNzMzNTNhNWE2Zjg5YjU4IGxlZ2FjeS10cnVuaworMjAyOTIgMDA0YzliMDMxOTI0MWM1YzA1NDZhYzEwY2I1OWI1NGI5MDQ3YjdlNCBsZWdhY3ktdHJ1bmsKKzIwMjkzIDcwNzYzYzQ3NTJlMmZhM2Y3ZWM2YmEzOTAxMjUwNDZiZjAwMzlhODkgbGVnYWN5LXRydW5rCisyMDI5NCAxMzg1N2ZiMzMwMTc3MGNkMmNhNDI3NmIxYTBiZjI1OWQ0MTBhZmI5IGxlZ2FjeS10cnVuaworMjAyOTUgODUzZDZhOTdiN2Q5YjRkMzg2YzczNWY2Y2YwYTI3MGM2ZTg2NTM1YiBsZWdhY3ktdHJ1bmsKKzIwMjk2IDNiOTA1ZjI4ZjIyNTY5OGM4YjRkM2Y1NmM1MTMwNDdkOThlYWYzOTEgbGVnYWN5LXRydW5rCisyMDI5NyAzNGVjNWUyZmEzNTYxZWNiZjAzYWVhZWNhODU5OWFmYzljMDYyMGE0IGxlZ2FjeS10cnVuaworMjAyOTggMDE3OTFhMDk3NDU2YjZmZTc1MTJlNjA4ZDcxMTEwNDNhMjEyYjBlOSByZWxlYXNlMjAtbWFpbnQKKzIwMjk5IGFmYmI2NWI2MGZhMjAzODE5MzI0MWI1MDU2NjI0NzBlOTMyNmVhOTMgcmVsZWFzZTIwLW1haW50CisyMDMwMCBjOWUwN2JjMzAzYTIzZWQwYzc4M2I5OTA2MWEzMTkyNzBkNjljMjJlIGxlZ2FjeS10cnVuaworMjAzMDEgOWQ3NmQ4NTUyYzM2MTI3NzRkNmFhYWY0NzhlNjQ3OTg2ZDBlMGY5MyBsZWdhY3ktdHJ1bmsKKzIwMzAyIDY5NGI4YzNmMjVlN2M2ZDM3MzFmMTQyNTU5YTg0MmE4YzQ4ODdkMjQgbGVnYWN5LXRydW5rCisyMDMwMyA4NGEzZDcwZWM2ZjQ0ZDY1ZmFlYmM3NDlkOGU5MjM5ODI1NTk1NWQ2IGxlZ2FjeS10cnVuaworMjAzMDQgZjk2NzQ4OWVlM2I2NGJhZDg2ZTc0NWQxNWZkODY3ZTRkMjViZjZmMyBsZWdhY3ktdHJ1bmsKKzIwMzA1IGJkODQ0YjIwYjljODU0NGZiOTE5OTc3OGFmZTc5ZjA4OTcyZGUxNGUgbGVnYWN5LXRydW5rCisyMDMwNiAzNzA0YmUzZGIzMDI4NjI2MGY2MjhiYmZiNmFiYzE4ZWZhZWRlNGZhIGxlZ2FjeS10cnVuaworMjAzMDcgYmFkMmRhZWI3NDQwYzMzMTIwNDJkNTZmODY0MGZlZmQyZDI3Y2Y2YSBsZWdhY3ktdHJ1bmsKKzIwMzA4IDRjNDk3YzVlNzJhZGNlMWRiOGRjYjg1YTI2YzQ5MjEzMGQwMmYxZDYgbGVnYWN5LXRydW5rCisyMDMwOSA2NWE5MjI1MWQ2Yjg1Y2FjMjM1OWUyNjNkODM1ODY2YTdiZDExODg5IGxlZ2FjeS10cnVuaworMjAzMTAgOWRjYjRiZDY1MTU0OGU4NzY5OWE2MjBmMGJjNmY5MGIzZGFkOTZjMyBsZWdhY3ktdHJ1bmsKKzIwMzExIGI4ZmNmNDVkYzZmZGM3NDM5MjNkYjc2NjRjOTQwNGEyYjU3YzU1OWIgbGVnYWN5LXRydW5rCisyMDMxMiA5NjVlZWI0NGU0NTQ0MTIxYzIyMTc0NjkwYzAyNjEzZTEyZTBjMmZjIGxlZ2FjeS10cnVuaworMjAzMTMgM2ZhZGMzN2NmYTkyMDllZDQwNjc2ZTVhMDljMjY0MGEzNzc2YzU2YiBsZWdhY3ktdHJ1bmsKKzIwMzE0IDY0Mzk2MjQzYzExNDFkY2Y5MDg3NjBkNzNjMWQ0MDcwNDViYmI0M2QgbGVnYWN5LXRydW5rCisyMDMxNSAzNDAyYzcxNjZkMzA4MTE0NGNjYTRjYmYyNDJlZWMwMzY4NTU4NDY0IGxlZ2FjeS10cnVuaworMjAzMTYgZjNmOTY0MTc0M2EwN2U4OGRmOWVmYzc5ODY1MjlhYmNmMGRjNjliNCBsZWdhY3ktdHJ1bmsKKzIwMzE3IDYzMmM0ZDViNzViN2E5NmRlYzNmY2EzMmQzYWFhYWI5YTJhYTIxMjEgbGVnYWN5LXRydW5rCisyMDMxOCA3YzYxNzE1NzUyYmUyMDI2YWJiNThiMDQ1MTM4NDA3OTAxMDlkMDFkIGxlZ2FjeS10cnVuaworMjAzMTkgOGVjN2Y2NTZmODA4MzFlNmRjNjYxMmEyNDNlNWU1NjEwNzc5ZjBhMCBsZWdhY3ktdHJ1bmsKKzIwMzIwIDI1N2I1N2JjY2RmM2JlODk0YjJiZDhmZDk3NjdlZDc5MjE2M2E2NDcgbGVnYWN5LXRydW5rCisyMDMyMSAzMTYwZGE0ZGRkODkxYWUwYmU4MDZmZDFmZmUyZWI2N2NhMzA3Nzk4IGxlZ2FjeS10cnVuaworMjAzMjIgZWMwNzVjYzgyYmRiM2Y1N2MyZWY1YmY3OGZjZGQ0NzM4ZjM3YjJkMiBsZWdhY3ktdHJ1bmsKKzIwMzIzIGMyZmIyZDQ3NmJkMzhjZGYyN2FiMzg1YzM0OTQ4MzYyODJiYjAwODUgbGVnYWN5LXRydW5rCisyMDMyNCBlNTAwOTAyNWU2MmYyYzFhZjk4ZmMzNDcwZjMwMTVmYTAyZGM2ZjE0IGxlZ2FjeS10cnVuaworMjAzMjUgYjRiM2NmZmM3YzM1NWZmMjE0YTRiNDRkNTdmMDBmMWFkY2UwZGQ4NiBsZWdhY3ktdHJ1bmsKKzIwMzI2IGJmYzEwYTgwNTQ1YmFhZDg4OTNiMmI5MzE0MWI4YzQ0ZDZkOGI3MjQgbGVnYWN5LXRydW5rCisyMDMyNyBiMDA1ZWI5YmM4NDJkOTdhNWEzMTVkMjFkOTVhYzExYmEyZTgxZjEzIGxlZ2FjeS10cnVuaworMjAzMjggMmNjYzBmMmM5ZTFmMjgxZmEyY2ZjYzFiMmZhMDYzYzc0MmQ5MTU4NCBsZWdhY3ktdHJ1bmsKKzIwMzI5IDBmMzJhYjVhZmZmODllNjQ0YjE2NzcwNjE0ZDg1YWE2NjI2NjUyNGYgbGVnYWN5LXRydW5rCisyMDMzMCA5OGY2OTI0NWJiNjljZDI0N2FmZDQzMjk4NDQ2YmNkOTNhYmI3NDY3IGxlZ2FjeS10cnVuaworMjAzMzEgMDJkNjlhODg3MDM4OTEyMTRiNzg3MjhjNTJjMzRhYWYxYTU0ZWEwYyBsZWdhY3ktdHJ1bmsKKzIwMzMyIDQxYTQyMzI5NGNiNTEzMTI4NTlhNWVjNjA2NmRjMzJmYzNiNWRhNjggbGVnYWN5LXRydW5rCisyMDMzMyBmYmMxMmQ2Y2QwNTExYjk0ZTY0MTRiMDVkNTcwZTAzOWI5YWZmZmU5IGxlZ2FjeS10cnVuaworMjAzMzQgMWNkZmYyODM4YTE3OGVmNDYxZDkyNGJiOWY4Nzk2NDU0YmE3MDRiMyBsZWdhY3ktdHJ1bmsKKzIwMzM1IDc0YjlmYjFjOTYzMzk3OTI4YTNlNWMwZWM4ZGM4ZjlhZTUxMzFhMmQgbGVnYWN5LXRydW5rCisyMDMzNiAyZDUyMTQyMGRiOGYxZTI5MmJlMmQ0YzFjZDcxMThkZTFhZmMzY2Q5IGxlZ2FjeS10cnVuaworMjAzMzcgOTIzN2Y1OGRjYzE5MjI4ZjA5MGQ1ZjYzMmVkODBhMzA1ZDZiZTUzMSBsZWdhY3ktdHJ1bmsKKzIwMzM4IDExMTkwMmM5OTFhOTA0ZjNjYTJlMTQwMjRmYTc4YTBmNTQ0NTQ0MDcgbGVnYWN5LXRydW5rCisyMDMzOSBmMGYwNDY3YTMzMzQyZGFjODY3NjllYzE3YjkxMDM3ODQxOGMwNmY2IGxlZ2FjeS10cnVuaworMjAzNDAgMDE4NGM1MGE4NzUxMGFkYTgxN2ViNTk5YWVhNTkzOWViNDQ1YWJkYSBsZWdhY3ktdHJ1bmsKKzIwMzQxIDA0NzVjOGI3MjIzYmE1OGI4NDcxOWE2OTg3MWEyMWZmNzkxOTc2N2YgbGVnYWN5LXRydW5rCisyMDM0MiA0NWMxODI1MTk2ZWQ2NjAzYTdkMmRhNWQ1OWUyMGFhMjg5ODE4MmFkIGxlZ2FjeS10cnVuaworMjAzNDMgNTFjOGNlMWEyZTI1OTk1M2YyOWRjZjI2YzZiMjAxYjVmY2U3Zjg3ZiBsZWdhY3ktdHJ1bmsKKzIwMzQ0IGY3NGY1YWFmZGM3ZTI1MGE1ZDU0ZDMzNTIzOGY4Zjk0NWU0Y2E5YTcgbGVnYWN5LXRydW5rCisyMDM0NSA5OTQxYzQ0ODE2YzFjNzMwNjg5YmQ0ZjVmYTk0MWU3ZjdmNjg0M2MzIGxlZ2FjeS10cnVuaworMjAzNDYgMWEyZmQ1YzRkY2Y1NzBmZDEwZGNlNDQzODUxMzAwYTg3ZDE0NmUzNiBsZWdhY3ktdHJ1bmsKKzIwMzQ3IGYzYjZhYzEyOGRlOWYxMzc1YjhhNGY4ZDA3NDg3NzhmODlhOGQyZjcgbGVnYWN5LXRydW5rCisyMDM0OCBkOTE1Nzc3ODMzMzU3NjQxNDYxZTQ4ZDkxNmYzMjdiYzFjYmNjOWJiIGxlZ2FjeS10cnVuaworMjAzNDkgNGVlMzQ2YjM1NTI0YTg4NWRkZGVlNDA5OWNiYWFhMTkyNWU0NGYzOSBsZWdhY3ktdHJ1bmsKKzIwMzUwIDNiZGE1OTA3MTM4OTUxMzQxNzA0MWU4ODFlMWI5NGNlYmUwOGRmNTQgbGVnYWN5LXRydW5rCisyMDM1MSA2NmE3YzhjOGRkMjcyMzhmNjQ0MzBiMjJkZmMwZjI4NmRmN2Q3M2JmIGxlZ2FjeS10cnVuaworMjAzNTIgMGQwNTQ2YmQ4NDQ4YWM1MjIwYzAxZmRiODNiMjAxODg3YWNlN2U5ZSBsZWdhY3ktdHJ1bmsKKzIwMzUzIGU4NDZlOTYwZTdmNjMxZmJiM2FhMDYxYWQ1MWMzZTUwMGZhMTQyMTMgbGVnYWN5LXRydW5rCisyMDM1NCA5OWM0NzFjZWQxNzAxODVjZGZjZDgyZGJkZTYwNGI3Yzc3ZWQ1MWU3IGxlZ2FjeS10cnVuaworMjAzNTUgYTAwNGM2MmU2OTZlNmUyMjkxMDZmN2EzODc4MWNhMTkzMWZiYmRiNSBsZWdhY3ktdHJ1bmsKKzIwMzU2IGU4NzQxZGMzNmFkMTNiOTE5NDE5NDg5NGQ2MmFjMjI5M2VhOGEzOTkgbGVnYWN5LXRydW5rCisyMDM1NyBjMjllZTM3M2Y3MThmNzhhYjQyMzQ2ZDVhY2MxNGVhOGNiNjNiNWFjIGxlZ2FjeS10cnVuaworMjAzNTggZjFlYzUyZWY3NzFjMTFhNmI0YmRjNGI3OGI1YTE1NmEzZjcwYTliZCBsZWdhY3ktdHJ1bmsKKzIwMzU5IGYyNDI3MmU4OTYyMTUyNTc4ODUxZGM5MTI5MDNlM2IyMDA1Y2U1YTQgbGVnYWN5LXRydW5rCisyMDM2MCBiODRmMDg0YjI5OTJhODFlNmIwNmMyMDliYjNjZWMzNWY3MDY3NjIxIGxlZ2FjeS10cnVuaworMjAzNjEgNGI5ZTY4NGJlYmI4NzJlYjNiZTI1ZmQ0N2VlNWFjMzNlNmM1YjA1MSBsZWdhY3ktdHJ1bmsKKzIwMzYyIDhhYTRkZTIwN2FlMzY0YjQ0YmFhYzIyODY4ZWE5YjhiZTAzMjFlNmIgbGVnYWN5LXRydW5rCisyMDM2MyA5MjZiNjRmYmE1ZTdlZDU5YTJmNDAxM2FjZDYzNDMxM2I5MDU0ZDJmIGxlZ2FjeS10cnVuaworMjAzNjQgYjRlMmI4ZTlmMWU2ODQyMzY4Zjk2ZmE5NDM5OTVmMjU5MzFlMjdhNCBsZWdhY3ktdHJ1bmsKKzIwMzY1IDI0ZTgxYjQzMDY3ZGM2NWY1YWEyMzgxNWQwOTQwYWM0NDhhMmQ4MjAgbGVnYWN5LXRydW5rCisyMDM2NiAyODg4ZmM2MGJmOWFjZWFkNjRkZTEyODNkMWE3NjY1YmM5ZDkyMGQwIGxlZ2FjeS10cnVuaworMjAzNjcgMzM5YTkzYjAwODRjNzViM2FjNDE3ODZkNjIzMWZlNTQ1NTU4Njc2OCBsZWdhY3ktdHJ1bmsKKzIwMzY4IDE0MjU0NWQyYWFmYzgwYTc3NzNhNmY5MGZhNzUwMGJjZmI4YjY1NDAgbGVnYWN5LXRydW5rCisyMDM2OSA0YWI1ODYyNDY1M2U3ZjU1YWUxYjkwNGEyODBmOTIxNWI5ZDM2ZjRkIGxlZ2FjeS10cnVuaworMjAzNzAgMjVmNTViMmUzOGFjYzgzZDJiZDJlYTE1NGExNzdkOWQ5YTRiNTEwZCBsZWdhY3ktdHJ1bmsKKzIwMzcxIDBiNjllMTdlMDU1ZmE3NGUyNTk3Y2YzZTc2YWUxMWQwMTZhNDEwNGEgbGVnYWN5LXRydW5rCisyMDM3MiA2MTNkY2Q1NDc2YjZlNmRhOWJmZmVlMzNiZWYyZjJiNGU3M2QxMGUwIGxlZ2FjeS10cnVuaworMjAzNzMgZWQwN2Q2YTg3M2U3MzQwYzVlZDljYTJhMGY5MzkyYmQ4Y2U4YjRmOSBsZWdhY3ktdHJ1bmsKKzIwMzc0IDA0ZGFlZTNhYjYyN2EwYTY5MmJhYjkyMTk0ZDUyYjljNmI0OTM3ODMgbGVnYWN5LXRydW5rCisyMDM3NSA5OWFkMDI1N2I5NDJkZWRjMTdjNmIyZGZkZTBhZjhlNTYwMGQ3OGJiIGxlZ2FjeS10cnVuaworMjAzNzYgMjI2NTAzMmVmYzlmMGY0YmM2MjhkYjI0ZjlkM2Y2MzU1MjllNDM3ZCBsZWdhY3ktdHJ1bmsKKzIwMzc3IDcxNzUyYTQxYjU3Zjk4YmE2Y2M2NWZkODhiMTExODJhNGZjY2NiODcgbGVnYWN5LXRydW5rCisyMDM3OCA3ZTgyOWRkMDNmOTdhOGI2OWNmMDlmZjFhYTJmYzYzZjMzMTk1Y2ZjIGxlZ2FjeS10cnVuaworMjAzNzkgNjQwYWZmZGY5OWU1MDdlYTUxNDEyZWI4NzI3MTlkMTlkYWMyZTAxYyBsZWdhY3ktdHJ1bmsKKzIwMzgwIDc0ZTdlOTNlY2Q0MTQxOWRhNjk1NmFkYmYyY2Y3YTFkYzc3NmMyM2IgbGVnYWN5LXRydW5rCisyMDM4MSA5NmJkNGE4NGYxYTQ5NGMyN2U1YzRhY2FiM2RiNWQ0M2Y2YWQxNWJlIGxlZ2FjeS10cnVuaworMjAzODIgZjdjMTJiYTQyNzM3MDhlYzhhOTI5MmE3NzAyNzAyZTYwNGQyNDJlZSByZWxlYXNlMjAtbWFpbnQKKzIwMzgzIDVmNGZjZmI4ZDNkZDM2NjcwMWFjZTMwODNiNGI4MDJmNGZhMDUwNGEgcmVsZWFzZTIwLW1haW50CisyMDM4NCAzNTEzOWE5NDU0ZDQzODAxNWFlN2IyMGE3MjYyZDkyNWYzZjY5NDBhIGxlZ2FjeS10cnVuaworMjAzODUgMTViNzYwOWUzZTJjODkxZDRkNjAyMzRmZTYwZjVhNzI2YmZjNzQzNyByZWxlYXNlMjAtbWFpbnQKKzIwMzg2IGI2NWQwODllODg0MTg5MGExMGY3Yjg4YWQ5ZWFmN2E2YTFlZjFmMDcgbGVnYWN5LXRydW5rCisyMDM4NyA2ZWVhNGNlYjc1MTY1MjgyZTJiOWI4MjljNjBjYjJmZTgyNjkzNDlmIGxlZ2FjeS10cnVuaworMjAzODggYTM0MjkzY2VkNjNiNjEwOWY0NzVlNjVkODgzNjZmMTJjMWY3ZDRjYiBsZWdhY3ktdHJ1bmsKKzIwMzg5IGU1MjZkOTI0ODk2NWY0N2Q0NzM1Y2I1NTRlZjA5MTU0OGRhMDBiYjYgbGVnYWN5LXRydW5rCisyMDM5MCAwYjA2MGNmNzYyY2U3Mzg1MTllOTJlOWVhNGZjNDcyYWQ4MjcyMGZhIGxlZ2FjeS10cnVuaworMjAzOTEgNmEzNzc2MjAxNzUwNzVmZDNjYjk3NmRmZDAxZWI0NWZhM2M3YTczNCBsZWdhY3ktdHJ1bmsKKzIwMzkyIGY3MmRjZDY3Y2NjYjA5Y2IxYTgwMTQ5ZDQxYmQ1NjRlNGE1ZTBjMWIgbGVnYWN5LXRydW5rCisyMDM5MyA4MDZmZDg4MDE1ZjUzYjczOTE2MjY2ZWE0YTZhNjE3MTJlOGZkNjMyIGxlZ2FjeS10cnVuaworMjAzOTQgNWU5OWExZDBlYTRkZDc5MDQ0YTcwYzAxMTRkMjcxODdkYmYxZTk0OSBsZWdhY3ktdHJ1bmsKKzIwMzk1IDYxZDk1NGU3YmU5OTIzYTQzNGVjOTc4M2M2ODA3ZTNlNjQ0MWFlZTkgbGVnYWN5LXRydW5rCisyMDM5NiBjNWJhYjc5NGRjZGU2NDQ5YzI4NTdiMGEyY2I2NzI2YTYyNjczNmY5IGxlZ2FjeS10cnVuaworMjAzOTcgMzI3ZWZiNTlkYmNkZTdiNjBjYmEzOGMzYWM5YzM4ZjJhZjczMTc3ZiBsZWdhY3ktdHJ1bmsKKzIwMzk4IDhlMTQxNWVmOWIyOGQ4MzI2ZWJmZTI1YmNiYzVjNDExYzYyM2M2NzAgbGVnYWN5LXRydW5rCisyMDM5OSAxMTE1M2MxNDE5OTkzMWFhYTY0NmIxMTYyYzc5ZDdmYTU5NTQ4MWMzIGxlZ2FjeS10cnVuaworMjA0MDAgNTVlZTE1YzRlZWU2ODNmNGFhYTI1MGIwOTQ4MmY1ZTRiNzJlYjQyZCBsZWdhY3ktdHJ1bmsKKzIwNDAxIDA2OGZiNThhMTFkNDg2ODFjMTVhZTk3MDNiODVjMjAyMmFmYWM5NzIgbGVnYWN5LXRydW5rCisyMDQwMSBkNjExMjc2ZTlhZDUzYjVkMzJkMWU4MDY1ZTFkODExYzMyZjdkOTZmIGxlZ2FjeS10cnVuaworMjA0MDMgN2I2N2ViMjZiMzlhYjY4YmY1NjJmNzM2MmRjOTVkYjVlNGFlNjQyNyByZWxlYXNlMjAtbWFpbnQKKzIwNDA0IGZkMDY4M2NiNzMwMTJmYWFjMDVmYjNkMGM5MTY2NDhkNDJkMTM2ZmUgbGVnYWN5LXRydW5rCisyMDQwNSA5MGFlMzdmZjYxN2ZjZWI2MDQxNjM5MjkwMTcxY2Y1ZDMzNWI3OWU3IGxlZ2FjeS10cnVuaworMjA0MDYgNzZmYWU2MTQ1MjZjZWMxZWI2YjU1ZGE5NWI5YzZlZGUyYzcwODdhYSBsZWdhY3ktdHJ1bmsKKzIwNDA3IGM2NTFjZmQwZmZkNDg4YTVjYzM3Y2M5ZDhkOTYwYmFmY2Y3NTRlOWIgbGVnYWN5LXRydW5rCisyMDQwOCA3NzNjNjRkMzhhYzY4OTdjZTRlOTk4YWI0ZDZlYWE2MDUyMzhkZGY1IGxlZ2FjeS10cnVuaworMjA0MDkgODE4MjNjZmI1YjE0NjgyM2IzNjIxNzJkZDgyOGIzZDAzYTgxYTlmZiBsZWdhY3ktdHJ1bmsKKzIwNDEwIDMzZDcxZTgwYTA5Yzc3MzE5MDk0ZGRhYTA3NDIwZjY5NGUzMjE5ZDIgbGVnYWN5LXRydW5rCisyMDQxMSAxZTIzZDkxYzBhODIxYzA2ZGM2ODI3MmI0MDJhZWMwZjY2NWZkMDVmIGxlZ2FjeS10cnVuaworMjA0MTIgZjkzOWNlNTJhNzM0ZDVkMmY2YjA0YzIwNjgwZDcwYjEzYjEzNmNlYyBsZWdhY3ktdHJ1bmsKKzIwNDEzIGY5ZGZkNTg3YzE0MmI2OGRkYmRmZTljY2ZjOWRiZTM3Yzc1MTdiOTEgbGVnYWN5LXRydW5rCisyMDQxNCAwNWJhZDJmMDViZmE2ZWNlZjJmMTRlNDA4NzNhZjZiYjhkN2ZkYjVkIGxlZ2FjeS10cnVuaworMjA0MTUgYzljYWU1YTcwYjQ4Mjk3MjEyNTA3ZWJjNDhiZWIxNDdiOTkwY2UwNyBsZWdhY3ktdHJ1bmsKKzIwNDE2IGIyODQwYTNjNTYwMWQ3NzQzMDAwMjQxZjY4NzFlNDVmYmY5MmU0OTUgbGVnYWN5LXRydW5rCisyMDQxNyA4Mzg5YzRkZjQ4OGRiMDViM2UwMTUwYmI3ODczZDAzNWIyZTM2N2NiIGxlZ2FjeS10cnVuaworMjA0MTggNzllZmJjOWEwM2RlZmMzMmUzNzAwOWUzOWQ2YTVhMjdjZmE2MzI0MSBsZWdhY3ktdHJ1bmsKKzIwNDE5IDVmYjBjNDY3NTNmOTgzMDEwNzczYzI5MjlkZjE3NzFlMjViODdjMzQgbGVnYWN5LXRydW5rCisyMDQyMCAwZjVhMjZhYTRlNGEzMGFlNjRiM2QzZDFmNmRmNzkyZjQwYTQ5NTc0IGxlZ2FjeS10cnVuaworMjA0MjEgMDFiZTA4MzMzMzA4ZWEzNTNiYzQ3ZDZjNjQ5MGMyMzE4YTRmMGEwNSBsZWdhY3ktdHJ1bmsKKzIwNDIyIDUwMGQ1MzQ2MGY1NjA4MzU4YjA2MWFhNTg2MjM5MWVlZDUwZjFjNjEgbGVnYWN5LXRydW5rCisyMDQyMyBjNDQ0MmZiOTlkMjY1ZmIxNDk4YzkxMzg1ZTI0MWNjOTU4NjA5ZTI3IGxlZ2FjeS10cnVuaworMjA0MjQgMTdhNzFkMmI4MWY3Y2Y3ODU0MmNiMzUzOGY3OTY5Mzg5OGU4MWYwOCBsZWdhY3ktdHJ1bmsKKzIwNDI1IGM0OTdmYTNmZTM4YTJlM2M4NWQ5MjZmZTFjYWYzOWY1MmNkYzRjYzEgbGVnYWN5LXRydW5rCisyMDQyNiBkZDZiZTYyNWE5MjMzZjg1OTU5MDIxODk0YmUwOTNiMDI1OTM2ZjI3IGxlZ2FjeS10cnVuaworMjA0MjcgMWNmZWY4YWRlMjcwNzM5MDM0MGU5NzIyYjYwZmUzNGRjMWNmMTM4NCBsZWdhY3ktdHJ1bmsKKzIwNDI4IDAyNTkyOWMxNTMxZDNkNzZmNmRlNGNmN2JmMmNlOTFkY2RjNWVmNGQgbGVnYWN5LXRydW5rCisyMDQyOSA4M2M3YjRiNzU2NjhmZmNkNDcyMmVlZDUxMzljMTBmOGI3YWQwZTI0IGxlZ2FjeS10cnVuaworMjA0MzAgZDJkYTY4MWNjYjU0ZGY0YjBiMmU2ZTNkZTc2M2MzYzBjODBiYWE3NyBsZWdhY3ktdHJ1bmsKKzIwNDMxIGUxYzUwN2NkYzZmMWY3Y2ZkNzcwMGU4ZGVhNDBmOWQzZjllYmY1NDYgbGVnYWN5LXRydW5rCisyMDQzMiAxNjJmYTZiMTM2NmYzYjRhNDdjMmNkYWIwYjQ5MmE3OTczMGI4Zjg2IGxlZ2FjeS10cnVuaworMjA0MzMgZjE3YTgzMGUyNWVhYjM0ZTIxODAxNTU3M2E5OWFjMGVhODY2YTVjZCBsZWdhY3ktdHJ1bmsKKzIwNDM0IDUyYThlMzVkZjEyNzk5NGMyOGI1ZTUxMTcxZjhjYzBlOTY4NDYyNWQgbGVnYWN5LXRydW5rCisyMDQzNSBlMGE1YTYzYWQ3NTY5NjFiZGI2YjQ0YjAwODA0MWRhNGQ2MjUzYWJhIGxlZ2FjeS10cnVuaworMjA0MzYgNDQ5MzE5OWQyYjk1NmVjMThjYmJjMmJmMzNlODIzNDA1ZDY5MGUyNiBsZWdhY3ktdHJ1bmsKKzIwNDM2IGZmMDY1ZTY3NGFmNmM5YWI4OTViZDllZmY3ZDllOTAzOWEzNzZjN2QgbGVnYWN5LXRydW5rCisyMDQzOCA0OTA4NWJiN2JjZDk5NDE2OTljOWEwYWYyOTVhZGRkZDY1MTZjMTQzIGxlZ2FjeS10cnVuaworMjA0MzkgZTUyMmVkODBmYjM5MzNhNjFiNmE1YWEwYzdiZmNlZTViM2ZjOWE1NyBsZWdhY3ktdHJ1bmsKKzIwNDQwIGRhNWVhYjMzMTQ3Yjk1OTViMDRjMzI0YmQ3ODNkM2YyYTUwNTUwYzggbGVnYWN5LXRydW5rCisyMDQ0MSA2MjUyNjkzYWZkOWFmMWNiZDlkNmQ2OTQ2YTMyMzc5YjA2Y2RlOGMzIGxlZ2FjeS10cnVuaworMjA0NDIgMzU0YTU3MWEwNWI0ZjRlNTEwODE4N2M1M2U0M2RkMzUwMjljMjhlOCBsZWdhY3ktdHJ1bmsKKzIwNDQzIDY5M2ZhNmI0MWRmYTVlMGJjZTZhMjVjZjU1MDg3Y2NiZDIwZDhkNjIgbGVnYWN5LXRydW5rCisyMDQ0NCA4NGQ3ODM5YmRjZjYzZGMwZTM1OTRhYzg5YTQ5N2M4MWRlNzA5ZmQ1IGxlZ2FjeS10cnVuaworMjA0NDUgY2JjOWY4ODY1NTk1ODljYzRkNDA4OThiMWMwODEwMWNmMWZjOTM3YSBsZWdhY3ktdHJ1bmsKKzIwNDQ2IDA1NDM2YTc0MDEyZDFjNjAyNmQ5MjkyNTFlYWNhZDZhY2E3OTYyN2MgbGVnYWN5LXRydW5rCisyMDQ0NyAxZDk5NTFkMTI2ZjVjMzQ1OTA4ZTMyMDUyNTQ1ZDc4ZTM2ODMwYWM4IGxlZ2FjeS10cnVuaworMjA0NDcgMDIwZTk1ZDgxODBkNzk0M2ZlNTQ3MDFlMWRiMGE3ZDdkODdlMmIxZSBsZWdhY3ktdHJ1bmsKKzIwNDQ5IDE5Njg2YTYyNzlmNDc1ZWI4NzExNzU4YjRjYTMzZDI3NjNjMjZkYjYgcmVsZWFzZTIxLW1haW50CisyMDQ1MCBmZmYzMDIyMWQxOWEzNGMwZWViZmRkZGEzMGI2NTk3NWE2ODZjNDhlIHJlbGVhc2UyMS1tYWludAorMjA0NTEgNzMyZGRlZTY4OTU3MjA4YjFlN2VmYTI4MDk5NzMzNDk3NTBjOGM0NyBsZWdhY3ktdHJ1bmsKKzIwNDUyIGQwNmJiYjhjNDkzYWMwMTY5N2VlZjQwMTQ4NGExYjRjODVkOTRkYTQgbGVnYWN5LXRydW5rCisyMDQ1MyAyOGMxNGE3OWFkMjI1YjUzMjE1ZjNjZjQ0Mjc5Y2VmYTIwZTg2N2FjIGxlZ2FjeS10cnVuaworMjA0NTQgZGI5MjhhMjc3ZjhiMmU4NDg1MzNkMzk5ZGJiMjYyMzI1ODcwNTc4ZCBsZWdhY3ktdHJ1bmsKKzIwNDU1IDM2MjMyZjU0MzIyMGVlZGM4ZDNhZjdhMTE0OTMzNjM2NTdmNzZmNmYgbGVnYWN5LXRydW5rCisyMDQ1NiA4OTVmYzVjOTU3NjNlZDEwZDdhNGQ3NGRiOTgxM2MxMWRhMTQ3MzhjIGxlZ2FjeS10cnVuaworMjA0NTcgMjgzNjgzYjVlNzY3Yzc5MTRlODE4MGVlZmU5YTA4MGM2ZGUzNjc4OCByZWxlYXNlMjEtbWFpbnQKKzIwNDU4IGI2ZjA4ZDI3OTViNWUyNDQyYzhmYWFmMDUxZDlmOWVkMGVkNDg3NjcgbGVnYWN5LXRydW5rCisyMDQ1OSA4OGE1Yzc2ZmZjOGQzZDhhZWUzNDI0OTYxYzlkYzdlNWQyZTIzMjhhIGxlZ2FjeS10cnVuaworMjA0NjAgNDJiY2FmZmE1ZDliMWFlNzQ3YjNjNTJhNjgwZmM3OTdhMTUwNGJhYSBsZWdhY3ktdHJ1bmsKKzIwNDYxIGQ5NDQ0MjNlNmZmZjZkYzI2Mjc2ODNjZDAyY2U4NmIwYzEwYWM0OGUgbGVnYWN5LXRydW5rCisyMDQ2MiBhOWFkOGRlYWMxN2Q1YjJmYjI2ZDM5MTNiYjZiYzQzY2E0NmM4OTM3IGxlZ2FjeS10cnVuaworMjA0NjMgMDQwNWM2NTdkMmFjOWZkZGYyZGZmNjdkOGJiNTNjZTNjODc0ZGM2ZiBsZWdhY3ktdHJ1bmsKKzIwNDY0IDc1ZTMyMmQ2MDRmMTZlMjk4NzJlZTMxZjlkMDFmMTA2ZGFlZDg3OGYgbGVnYWN5LXRydW5rCisyMDQ2NSAzZWFjMjBhZmQ1NGFhYWQ3NDc3MjY2ZGFjYzkwNDJmNGQ5MjY2NTNiIGxlZ2FjeS10cnVuaworMjA0NjYgNTE4ZGI0NTQ4NjMwMTlhNGU4ZmFiYjNjMTRlMmFmODk0NTQwYzNhOSBsZWdhY3ktdHJ1bmsKKzIwNDY3IGQxMTJmMTM1YWY4ZDE0MTlmMzc2NzJlYWZjY2U5NzU0Yjg4N2M5MGYgbGVnYWN5LXRydW5rCisyMDQ2OCAwZGQ1ZDZkOWE5NTJhNmYxMTEwNTQ2MDgzNDQ1MmE0YWMyMWEzN2U2IHJlbGVhc2UyMS1tYWludAorMjA0NjkgNzA3NDMwMzg0NjAzMTkxN2MyNjMwZDNmOThjZWVhODU2ZDEzZWI3NSBsZWdhY3ktdHJ1bmsKKzIwNDcwIGNjYzQ0ZTU0M2JlZWYxN2ViODQxMDhiNDU5ODFmN2NlM2ZjNTAyMjcgbGVnYWN5LXRydW5rCisyMDQ3MSAzZGQ5ODYwZTRlMmQ0YmQzZTdkODI0NjI0YzI2ZGNlNDlkNGNhZmUyIHJlbGVhc2UyMS1tYWludAorMjA0NzIgMjI4ZjRiOGQxOGYwMWE5OTA4NzM5YjQxYjcyZmI2NTc1MDgzMzM1YyBsZWdhY3ktdHJ1bmsKKzIwNDczIDQ1MjY2NmNiMjgzZGY4YjkyNDViMzM5MDVmYThkOTkxN2YwMzBkNDYgbGVnYWN5LXRydW5rCisyMDQ3NCBjNjU3YTM5Mzc5MDIwNzcyNjVkZTBhZGM0YTA2ZWI3MWU4NTkwNTFkIHJlbGVhc2UyMS1tYWludAorMjA0NzUgYzE5MzdmYWFiYjIzNzQ4YTRlMjgzZTdjNGU5MGM3ZDJhYjc3YTBhMiByZWxlYXNlMjEtbWFpbnQKKzIwNDc2IDJmY2IzZmE2N2UzYjY4Nzg2NjRjNTJhMzQ3OWNjYzFiYjMyYTcwZGQgcmVsZWFzZTIxLW1haW50CisyMDQ3NyAwZDcwZGFlYjg5NmUxZWYzOWI5MDQwMzIxOWZmMjRjOWU0ZWZkMDJmIHJlbGVhc2UyMS1tYWludAorMjA0NzggZjk5ZGYyYTBlMmNmOWM2MjMxMThhYzZlOTkwMDE4ZjNiZmIwZDJjOCBsZWdhY3ktdHJ1bmsKKzIwNDc5IGQxNmRjMjZlYzQyN2FiMDBiOTU0MGU4YzgwYzE2MGUxNzgyNWMyZTMgbGVnYWN5LXRydW5rCisyMDQ4MCBjNWY3MTkxY2U2N2U5MzRiZDFmMTJiYzVkZDE3Y2UzYTU4NjFiZThkIGxlZ2FjeS10cnVuaworMjA0ODEgN2ViODdjZjE2YTUzNjBjMTQ0YmM1MjlmMjlmMDAzM2FiY2M0NjNhYSByZWxlYXNlMjEtbWFpbnQKKzIwNDgyIDVhNTgwNWE0NWRiZjQ5NDExMWUwYWFmOGY0MjFlZjYzMWY3MTg1NmQgbGVnYWN5LXRydW5rCisyMDQ4MyA5NmY5Yjg2YjdiM2RkZDY3NjBkMGVhM2Y3OTYxMWZjNTgwNGQxODIxIGxlZ2FjeS10cnVuaworMjA0ODQgMWUzMDQyYTRlNjBlMmUzY2YxMjQ3ZjcwOWNjZmI5YWE5YTE4MDQ3OCByZWxlYXNlMjEtbWFpbnQKKzIwNDg1IDQ0YTNhYzU5YzI2OGRkOGVhNTIwZjhmYWRiODA4MmU4ODVkZWIzYjkgbGVnYWN5LXRydW5rCisyMDQ4NiAxZjNhMTk0ZTIxZjMxZjQ1N2ZiZGQ0M2I3ZTZjYzkyMjk0M2MyYTlhIGxlZ2FjeS10cnVuaworMjA0ODcgMDBhNmIwNjA1MTEzNTM1ZTNmMzE4ODM4ZTQ4NTcxNjU4OWY2YjZiYiBsZWdhY3ktdHJ1bmsKKzIwNDg4IDU2ZjFiOGJhNWNhMTdkMWJkMjk1MWFmYzU4NTVmNDE4NDk1ZDE1ZTEgaXRlci1icmFuY2gKKzIwNDg5IGJmOTRhZjM5NmIxZTEwN2FkM2NkOGYxMTY3MTZiMjc2ZWE4MTJkYjggbGVnYWN5LXRydW5rCisyMDQ5MCAxZDcyNmY1Y2Q1N2EwZmRmYmE2MjJmYWFhMzVmZWMyZDY3NmM5ZTJiIGxlZ2FjeS10cnVuaworMjA0OTEgMWI0OWIxNzdhMTA1ZTEzY2NhMWYxYzRlN2I0MWZlZWJjNDY1ZGIyNiBsZWdhY3ktdHJ1bmsKKzIwNDkyIDMyZTdkMDg5OGVhYjg1ZGU4MTM0ZjkzMjY4MGE4NWM2ZTdhYmNlYzAgbGVnYWN5LXRydW5rCisyMDQ5MyBjM2JiMGZmMzk2ZGNjNjMzY2I2NzE5NmE0Mzc3NjEzM2Y3MDIzZmY5IGxlZ2FjeS10cnVuaworMjA0OTQgZTE1YWI0ZTY1MmFkY2I3ZmE1NTZhMTgxNTRjYzExNmQ0OWM3YjU2MiBsZWdhY3ktdHJ1bmsKKzIwNDk1IDFmZThlNTBlNmUxYjk4MmQ3YjdkZDFmNjhlNmE5NGQ0MDZhMzViMzUgbGVnYWN5LXRydW5rCisyMDQ5NiBiNmRiZmM0NWFjOWJmMTkwMzhlMWNkMzI1OGQ5YjlhYzIwODQyZjM5IGxlZ2FjeS10cnVuaworMjA0OTcgZjYzZjc0OTM2NGVmZmRkMzZlMGY3Yzg0OTkxOGQ5YjY3OTMyOTU1NCBsZWdhY3ktdHJ1bmsKKzIwNDk4IGQ2MzhlNDE5YzMwNDUyZDlkMWQ3ZmU5YTk4NjFmZDBiOWQ0NWVmM2QgbGVnYWN5LXRydW5rCisyMDQ5OSBkMzI0YWUyODkyZmZhNGFiZmIyMTdmNWE1OTg5YTdkMmQwOWE5MGU5IHJlbGVhc2UyMS1tYWludAorMjA1MDAgNGQ3ZmIyNGZlNzk1M2Y5MGY4MzY0YjJhMWZhZDkyNmIyZTZiYmE2NSByZWxlYXNlMjEtbWFpbnQKKzIwNTAxIDRhYmQwNzJhYjNkNWI1YmRhMWNkNmFjYmQwYWY3MTI5MjIxM2FkNWEgbGVnYWN5LXRydW5rCisyMDUwMiAzODdlODBlMTFhNzk1ZmNlNTY3NjdjZjQ5ZmFjMzIxYTNlN2NkZjFlIGxlZ2FjeS10cnVuaworMjA1MDMgMjJhZjE1Zjg0MTBhOGIyNzczNDM0ZDlhZmNkYWMyMjhjMDQyMTg0MiBsZWdhY3ktdHJ1bmsKKzIwNTA0IDc5ZjBjZDNhNzFhMWU5OTZlZDg0M2EyMGM3MTcwY2I4ZGNiYzkyY2UgbGVnYWN5LXRydW5rCisyMDUwNSA2MjRmYzk3MTNkMThiMTEwMTU2ZGZiNjY5MmQ2YTVmMjYxZjBhZjg0IGxlZ2FjeS10cnVuaworMjA1MDYgMWViMDBhMTIzYTBlY2Q3ZDY4MTQ2MjA5MDQwMzViMGJjNTk1MWJkNiBsZWdhY3ktdHJ1bmsKKzIwNTA3IGMxOWQ2ZGI2ZTk5YjdhYWM3Y2Y3YzhlYzlhMjBmYWM1NTgwNjgyNjQgbGVnYWN5LXRydW5rCisyMDUwOCA3ZGNkYjE2YmQwNjhjY2FlYzU5MTc0NzU2ZDc5OWMzYjQyOTc3NDQwIHJlbGVhc2UyMS1tYWludAorMjA1MDkgMTg4NTQxN2Y0NWRhMzk4NTViOGM0MjAyODM2YTJmNDNiMDA2N2UwYSByZWxlYXNlMjEtbWFpbnQKKzIwNTEwIGI4MzBkZjA4M2E5YWRkMDcwOWI2OGQwYjUxOTIzMTZhMDExMTg1ODYgbGVnYWN5LXRydW5rCisyMDUxMSA3YWNiYTc4ZTFlMDkxZGJiN2VlYzI5MDgzMDE2ZjViYjkxYzE3OGU2IGxlZ2FjeS10cnVuaworMjA1MTIgYWFjNjVmNTBkZjZmZjE0NGI2NzAxZmU1MWExNjNiMzBhNmJjZDAyYyBsZWdhY3ktdHJ1bmsKKzIwNTEzIGI0NGJhN2MwMTIxNzc1ZDY0NDEwY2YxYzkzZDAyNzViNWM4MmE0YjQgbGVnYWN5LXRydW5rCisyMDUxNCAxYjczMGJmM2Y4ZDJhYzFkMTUyMzdlYzllZWU0ZDUyZDI2N2RmYzZkIGxlZ2FjeS10cnVuaworMjA1MTUgZWZiNWM4MTRmZmI2YWI0ODU2Y2U4MjJiZjNjZWE3MzE2MzNiYzZkMSBsZWdhY3ktdHJ1bmsKKzIwNTE3IDk5ZTk0NmE4MjY5OTIxNzA2MGI5NWRhNDYyYWI3ZjdhZmIwMDZiMmEgZGVzY3ItYnJhbmNoCisyMDUxOCBlMmFmOTBiNjFiMmJkMjY3OWI0ZWFjY2UzZjg0ZDM1ZGM2NjRkYzE2IGRlc2NyLWJyYW5jaAorMjA1MTkgYjdhNzEzNWJjY2M4YjNlMWFkMTQ4NWU3Zjc3MGVlNmQ0MTFkZThhMiBkZXNjci1icmFuY2gKKzIwNTIwIDBiNWQzZTAzMTIwMThhZGNjZDA5MDA3NmViZTExZjBhOGRjYmZiMDcgZGVzY3ItYnJhbmNoCisyMDUyMSBjOTdiMzcxMzZkODNlMzUzMDA1MDliZWE1MmE0NWIxMWFlMWVhYmEzIGRlc2NyLWJyYW5jaAorMjA1MjIgNjgxOTMxMGRlODI4NDQ3Y2RkZmZmMGQ2MDE2NTA2OTFhZmQ1NTliYSBkZXNjci1icmFuY2gKKzIwNTIzIGExZjA3ZmNjM2Q0MTNmNzUyN2Y0ZmQ5NTIyMjBlM2M5YzcwM2VjMTMgbGVnYWN5LXRydW5rCisyMDUyNCA0NGEwYTlhMjc3ZWY2OTFhM2NiM2RiNjg1YWYxMDU3YjkzODYwODQ1IGxlZ2FjeS10cnVuaworMjA1MjUgMTY4NjA4MGE3YzZjMzc2ZDM3YjA1ZWUyNTIyOTdmYjkwNDc4ZDQ5MSBsZWdhY3ktdHJ1bmsKKzIwNTI2IGQ5MWZjMDIyNjhkOGQwMTBiNzI1YjEwZjAwYjU3NGM5ZTEzZTdjYWYgbGVnYWN5LXRydW5rCisyMDUyNyA5YzExMzJmMzA5NWEwNjNhZTRiZTZjMzg3YTYwNzIyZTE0NTQ2ODM2IHJlbGVhc2UyMC1tYWludAorMjA1MjggOTUwZjFjM2E4ZTZhYTE1ZjFkNDM3YTI4MjIxOTAzMTZkYjJhMDM2NSByZWxlYXNlMjEtbWFpbnQKKzIwNTI5IDdlOGVkNmUzOWViZDBkNzU1OTNmMDFhZDMxMzg3N2U5MWRlYmIwN2UgbGVnYWN5LXRydW5rCisyMDUzMCA5MWNiZDAxYjg1Y2JkZjkxYWMzNTFmN2Q3ZDEwZDYzYzcxOTkxNmY5IGxlZ2FjeS10cnVuaworMjA1MzEgYTk0ODVkNDA0ZjA1ZDI0MTA2MzcxMTQ1MGExOTc3NmNiODg1NDU4ZiBsZWdhY3ktdHJ1bmsKKzIwNTMyIGRhNDgwOTk0N2EzMjEwNWI4ZjRkMmI3NTI2MWNjZjFlNTU2ZTI0MDEgbGVnYWN5LXRydW5rCisyMDUzMyAyNDkxMjNjMWY0ZGMxMTM0MGE0YjQwYzdkZjQ1ZDJmYzMzZTQ0NjdhIGxlZ2FjeS10cnVuaworMjA1MzQgZmNkZGU2ODAzMzFlNWFlY2M0ODQyYjIzZjEwMDM5ZDAxNjU4MmYyZiBsZWdhY3ktdHJ1bmsKKzIwNTM1IDdmNWUzZTZiMmEzOTIwNzUwMGMyMGUwOWM3ZGIxZmE1ZGE1NTRjZTUgbGVnYWN5LXRydW5rCisyMDUzNiAwYmMzMzc3ZDBkNzIwOGJjMjIzOWJhYzQwNDc4YzYwZmU2NjAzNjg4IGxlZ2FjeS10cnVuaworMjA1MzcgYjdkZjg4YTc4YWRiYWI4MWQ5Zjg3YjY4MDU5OTk2OWY1YWYwZDZkOCBsZWdhY3ktdHJ1bmsKKzIwNTM5IDk5MjFhOWQyN2Y3MjhjNjE5MDU2MTNlZjYyZWFiMDNmMTljZTIzYzUgbGVnYWN5LXRydW5rCisyMDU0MCA4ZmY3NmNmMzBhOGNjMzdjZjZlZWEzNmNmNjA0YjRiZWI3OTliODQ4IGxlZ2FjeS10cnVuaworMjA1NDEgN2Q2NzZiNDIzN2E5OTMyZjkxM2ZiMjgxMzE3ZGMyYzkxOTEwMTAzOCBkZXNjci1icmFuY2gKKzIwNTQyIDMyZTczNWJlZjBiYzI5YjA1NjkzNjY0NzRkMTEzY2NiM2VhODg1YjcgbGVnYWN5LXRydW5rCisyMDU0MyBiZDY1Zjg4OTNiZTNhZWY0MDUwMTRjNWEzMjc5Y2NhYTMzM2QxMTljIGRlc2NyLWJyYW5jaAorMjA1NDQgYjEyNTQxNjM5NGZhY2EzMDY0ZmZkN2YyMTI4MjBkYjRlYmY2NzM2OSBsZWdhY3ktdHJ1bmsKKzIwNTQ1IGExOWU2OGUzNjVjNzU3MWQ5Nzg0OTQ2MTMxYjM4ODU3ZGMyMWZmYzMgZGVzY3ItYnJhbmNoCisyMDU0NiA5OTM0MjI1ZmUyOTc4Mjc0MGJmMGJmZWYwOGUyYTYwMGZiNjg0ZGMwIGxlZ2FjeS10cnVuaworMjA1NDcgOWJlNzc1OGE4Yzk0Yzg4OTY5NzQzMTlhNjMzMGRlMjRkZDMxMDhlNiBsZWdhY3ktdHJ1bmsKKzIwNTQ4IGIyODIzNjM0OWRlNTE0NzM3MTExZDNjNWU2NmM0ZjExMTIyYWIzNzggZGVzY3ItYnJhbmNoCisyMDU0OSA5ZTgxZDM5MWI3NjU4OWQ4NmZhY2M0NWRhYzJhZDM1NWMzNzAwNTY3IGRlc2NyLWJyYW5jaAorMjA1NTAgOTg3Y2ViOWVjMDIzMzNkYzBiMWQwMzUzNjU0ZGI3ZDc4NWQyOGM5OCBkZXNjci1icmFuY2gKKzIwNTUxIDg4N2I1Mjk3NjUyYTNjNmZhZmFmMGQyZWU0YWJiNjJiMDdjYTE0YzMgZGVzY3ItYnJhbmNoCisyMDU1MiBlMDZjMzZjMTNmMTI4NjI0M2VkMDg1ZGYwNTA1NTQzNTc4MWU0OTE0IGxlZ2FjeS10cnVuaworMjA1NTMgNTNlZTBmYTY3NjYxN2E5MTdjOWE4MmE5ZTcxMWRjMjZlNGFmMDBmMCBkZXNjci1icmFuY2gKKzIwNTU0IDAxM2RlYjVlMTcyYmY1Yzk0YTEzNmUxMTdmYTA1MTVlNzdkMGI3YzUgZGVzY3ItYnJhbmNoCisyMDU1NSA3MDM3ZDFmNmU3OWFlYjQ2OTQwMDFmN2Y5NjEwODQ2NmY1MmNmNTI0IGRlc2NyLWJyYW5jaAorMjA1NTYgNTg3ZGEyOWQ2OWQ1ZDBjZTk3MTQzNTQxNDE0Nzk2ZDZiZTc5M2MxMCBkZXNjci1icmFuY2gKKzIwNTU3IDE3MjEyNjJhYmFhODJhMzM3ZGJhZWI0NTczZjIxZjk4MTc3NGZlOWMgZGVzY3ItYnJhbmNoCisyMDU1OCA0YjgxMWE3MWJlNWMyZmFkOTdhZTVjOWZhMjIwYWIyOWNmMWM3MGJhIGRlc2NyLWJyYW5jaAorMjA1NTkgYWUwNzU5OWFkZjMzZjdhODZkYmQ3NWU1Y2ZiN2VmNjcyODExZjc3NSBkZXNjci1icmFuY2gKKzIwNTYwIGUyZGFlZjA2ODQ5NmJjMTM2YjYxMzE3NGM3NDUwMDgzN2JhNGUxZDYgZGVzY3ItYnJhbmNoCisyMDU2MSA1NmM1NDQ1ZWM4MzU4NmU1Zjc3N2FhZmNhNWQwNmE2MzNmMzZlNThmIGxlZ2FjeS10cnVuaworMjA1NjIgYWE3MDg3YWM2ZDk1NTliYzk5MWY4ZGQwOWY0ZGVjZDRiNzQ2NzAwNSBkZXNjci1icmFuY2gKKzIwNTYzIGJkMzEzYTVlMjBkNzg4ZmY5MGQxMTA1MDU3ZjM2ZjlmNDFkZjY0MGYgZGVzY3ItYnJhbmNoCisyMDU2NCA1ZGJmZTgzMTYyMzYzODljZTdhM2Q5ZTYwYmQ4ODMzOThjNGExZjc1IGxlZ2FjeS10cnVuaworMjA1NjUgYjVmNTgzZWVjYjIwM2M0YzI4NGIyMGNjMzQzYjA0Yzc1MjAwMTE3MCBsZWdhY3ktdHJ1bmsKKzIwNTY2IGQxZWM2NzliYWEzZGI4MmFiODVhZGM4MDdjMmFkMTlkMGUxNTBjNDMgbGVnYWN5LXRydW5rCisyMDU2NyA1NTdhYWQzZTc0YmE2MzRiMDJmZWI4MDc2ZDEzYjc1YjJhMjk0M2YwIGxlZ2FjeS10cnVuaworMjA1NjggNmM4MjI3N2U3N2YzNTdkNzRhMzU3MTgwNDc2ZDRjNDA1ODBiZTA2ZSBsZWdhY3ktdHJ1bmsKKzIwNTY5IGRkMjRhYmNiMjMzMWM3OGNkNjhkNWVhNGQ3MjkyOTE1ZThjYzk0MTcgbGVnYWN5LXRydW5rCisyMDU3MCAxMTE4MWNkMzg5N2RjMWI4MDFjYzFkMTk3NjRiYzMxYTcwNWNmNWE5IGRlc2NyLWJyYW5jaAorMjA1NzEgN2EzNjdhZDQzZjM1MjM4ZDQ2NjRjY2ZiOThhZjRlMDE5NGFjNzM3OSBsZWdhY3ktdHJ1bmsKKzIwNTcyIGZhODMyNmNjNzYxY2IzYWZmZDY4MDJlZTAzZTEzYjM1YTVmMDRhNzQgbGVnYWN5LXRydW5rCisyMDU3MyBlYmMyNGExMDQxMzI5YzVlZWYyZTUwYWU5YzlmNmE2NDg2Mjg4ZWQ3IGxlZ2FjeS10cnVuaworMjA1NzQgYTg0ODc0Njg3Y2IxY2RlMzg3MTc4MDk4NjVjNTU3ODhhMDc3YjUxMSBsZWdhY3ktdHJ1bmsKKzIwNTc1IGE5N2UxOGU0OTlhOWNmN2IxYmI0YzBhOWEyM2Q0YzkxNTZmMDU4NDUgbGVnYWN5LXRydW5rCisyMDU3NiAwNDcwYmFiZGFlNDlmZWU4MzM2NDg0ZTRkMTIzOTc4N2RjZWU4ZWQ4IGxlZ2FjeS10cnVuaworMjA1NzcgYTY2OThhMDE2YWZlMjA2MWY3Nzc0NWIxNzJiOGUwMjYyNDE0ZjcwMCBsZWdhY3ktdHJ1bmsKKzIwNTc4IDA4NWY0NjBiMGUzYjU5OTRhMjRiZDg0MGIwMjI5YWVhZjYwZGJjYjcgbGVnYWN5LXRydW5rCisyMDU3OSBkNjQ5OGIxZWY1MGQxY2Q5M2YwZDcyNjQyOTNiOGVmNTMwMWZhM2MyIGxlZ2FjeS10cnVuaworMjA1ODAgZGViOGE1ZTE1MWEzNDZjZDU0YTY0YjA0NjdjZGZmMGExZGUyODZiOSBsZWdhY3ktdHJ1bmsKKzIwNTgxIDMwZDc1MThlMTdlNWJmYTkzNTJkMjU2OTg1YWM2NGM3MDYwZTQ1ZmQgbGVnYWN5LXRydW5rCisyMDU4MiAwZmY0Y2RmMzRmYzFhNTBmM2UwYjZmNDVhN2Q3NGFkZWYxZDA2YTVmIGxlZ2FjeS10cnVuaworMjA1ODMgNjQ1MjMzMDc3OTRlOTM1NDdjNTg1NjI1YTA2YjRiNzFmM2ZiZmMzNyBkZXNjci1icmFuY2gKKzIwNTg0IDViNmQ1OTYxYzllMzhlMGY2MmYxOTQ4ZGJiMzYzMzNjNjBmNmJlNzQgbGVnYWN5LXRydW5rCisyMDU4NSBkNzY2NDliZDM4ZDAxYzk2ZTVkZTI2YzFjZGY2YjAwYmMzYzE5MTRmIGxlZ2FjeS10cnVuaworMjA1ODYgYjkwNzZkODcxOGFiMWQyZGJhZDBhMGM0NGRhYTA4ZmQ5N2YwMTdlMiBsZWdhY3ktdHJ1bmsKKzIwNTg3IDRjMjliMDRlNGQ2ZmMxODZjNTFmZGYxNDIyZThhMTI2OWI3NTE3NDUgbGVnYWN5LXRydW5rCisyMDU4OCAxMmM4MGI1NzBkMDBhMGVjYjkyOWI4Y2JlNjdhZmJkNDVjYzExMjQ2IGxlZ2FjeS10cnVuaworMjA1ODkgNzZlZThiNjJlZTJhODJkNjIzYzZjNGUwOTFhNGM4Y2ZmMTBlZGM2NiBsZWdhY3ktdHJ1bmsKKzIwNTkwIDE1Y2NlM2Q4MGQwZmQ4ZDNiYjFhNzZkMzA0MDdhYTk2MjQ4YjUyYTUgbGVnYWN5LXRydW5rCisyMDU5MSBkN2QwNTEwM2MwMjNmYzY0NTk5Y2NhZTM0ZjFmZDEyNDM3YjEwMmU2IGxlZ2FjeS10cnVuaworMjA1OTIgOGQ5ZWI1YTRlYmNkOThkZGI1ODRlOTQ4NzBhZDJhY2FiNGVlNzU4MiBsZWdhY3ktdHJ1bmsKKzIwNTkzIDk5YjA2YTY0OWIxNDdiNzUwYzdkOGFkZjVlNjEzNmI4OTI5OTJjMDYgbGVnYWN5LXRydW5rCisyMDU5NCA3OTQ4Y2Q0Zjc2NjM3NDI0M2ZjYTE0ODdjYjZlNGFhZTdlNDdmY2IxIHJlbGVhc2UyMS1tYWludAorMjA1OTUgODY0M2U2ZGUxM2RmYTcwMzVhNGU4ZGU0M2IyM2I3ZGEzODRlYjBiNyBkZXNjci1icmFuY2gKKzIwNTk2IGU2ZTgxZGNlYmZkZTVkOWU0YzI1NjNhODEwYzAyZjllMGU0Y2Y1NGMgbGVnYWN5LXRydW5rCisyMDU5NyA5OGYzNGM0NjQzZTk4MDAxMjRjYmU0ZGRmMGY2NGY4N2M0MWZmMmE4IHJlbGVhc2UyMS1tYWludAorMjA1OTggMGJlMjc3MDM5ZDkzYjQyZjM2ZGE3Y2Y5MzUxZmUzMmM4ZTczYmVjNSBsZWdhY3ktdHJ1bmsKKzIwNTk5IGQ4MDUwMDA3NmU5ZmI5NWNmZjgyYjgwZTI0MjlkOGZiNTU3MTY0OGIgbGVnYWN5LXRydW5rCisyMDYwMCBiZjdmMTY2ZDNjOTc0NjBkYjBlODkyMmUwYTU3OTE3ZWE0NDY0YmQwIGxlZ2FjeS10cnVuaworMjA2MDEgNTVlMzIwMTg5NTA4N2IzZWQxMTUxNTMyZjk1ODYwYjVmMjk2YjVjNSBsZWdhY3ktdHJ1bmsKKzIwNjAyIDFjMmQyNmVlZjdlZDFiNTljOTgyZDc1NWExNGQ4NGU0NjM5ODAzOGIgbGVnYWN5LXRydW5rCisyMDYwMyBiYjZjNTlhODVjYTE0N2RkMTRkNzdjN2M5ZWJlZDM3YmVhMGIwN2FhIGRlc2NyLWJyYW5jaAorMjA2MDQgOGIwYzBjNDgyYTU1ZmQwNmQ5ZWNlOWQzN2Q3YzBmNjY3ZjQ4MWQwZiBkZXNjci1icmFuY2gKKzIwNjA1IDgzOWY2ZjJjZDY2ZjNjZmRhMjYxOTk2ODE1YWUwZWI5ZjhlYWNhZmUgZGVzY3ItYnJhbmNoCisyMDYwNiAzMDkxZmI4M2Q1MjcxY2NkMzkxMjc3YWI1M2E3ODBmNjZkMzY1ZTY2IGRlc2NyLWJyYW5jaAorMjA2MDcgOGZjN2JlY2Y3ODM5NDcyOTI3ZmY2NDhjZGY2ZjliZDk4MmVlMThmZSBkZXNjci1icmFuY2gKKzIwNjA4IDBhOWUzYWE3MWRiOWYyMzBiODU3ZTg5ZDgzODQzZWQ1YTk4YzM4YmQgZGVzY3ItYnJhbmNoCisyMDYwOSA4MmY4YTJiMWI3OWNjMzJkYjE2YTc2OThmMmM2YWZiYTIwYzJlM2ExIGRlc2NyLWJyYW5jaAorMjA2MTAgZmM2NThhZGNlZGM4ZTliNGJjMjg2ZTk1ZmU1YmYyYzk1NTYzMmI1YSBkZXNjci1icmFuY2gKKzIwNjExIGY4OWU4NTE1M2QwNDc1MzljNGY0NzQzNDRhMGM5NjgwMmI1ZmMwZjUgZGVzY3ItYnJhbmNoCisyMDYxMiAzOWNhYmQwYWFlMWViZDI4NTNlNWNjNThjZjM2NmM3YjFkMzRkYjNiIGxlZ2FjeS10cnVuaworMjA2MTMgOWQxZTMwNGVjYjE4YTU4ZGI0ZmRhY2MzMDgxYWQyYTc1NTg0ZDUyOSByZWxlYXNlMjAtbWFpbnQKKzIwNjE0IDU1MjdkNjJmYWZlMDVlNmI2NmE1ZTgwYTlmNmUwZmIxYWZkZGM1OTQgcmVsZWFzZTIxLW1haW50CisyMDYxNSA2ZjhlZmRiZGZmNDgyM2JjYWZlZGUyMWMzOGE2ZWE4YTFjMWI1NmUwIGRlc2NyLWJyYW5jaAorMjA2MTYgMTYyYjk0YzhkMmQxYTk0YWU2YjhjNDVmNzUxMDhlYWNhZTc2MjlhOSBkZXNjci1icmFuY2gKKzIwNjE4IGU5YTRlMjdlOGQ0ZTE2ZTE0YjMyYWIyNjY5NTMwMzdlYTI0NjgxMTUgbGVnYWN5LXRydW5rCisyMDYxOSAzOTlkOTk2MDFiMmRjMGQyZTdiYjRiNTUwZDg0MjE4YzM3NzNkMTk1IGxlZ2FjeS10cnVuaworMjA2MjAgMGM5ODc3MTIwZjM4MTc4M2Y3NTAzYmRjYWI0ZDU2MDA1MDY5M2Y2YiBsZWdhY3ktdHJ1bmsKKzIwNjIxIDNjZDRhZjY2NmRlNmIzZTZmMDBjODEyMjIyMGIxYWQ5Zjk3NTdjMzkgbGVnYWN5LXRydW5rCisyMDYyMiA5ZTA5M2JmOGY2YTkzZjJjMzNkN2NmYWIwOTE2NmJlNmQxOTY4ZTU5IGxlZ2FjeS10cnVuaworMjA2MjMgMWViYjRlNTY2MjU3YWE4OWRlZDBmM2Q2ZjAxMDgzNGY1YWEwMTRhZiBsZWdhY3ktdHJ1bmsKKzIwNjI0IDQ5ZDliYTU1NTg4YjY3YjZjYzYxMWJjMzE0ZmI5YWFhNjM5YjQ4MTEgbGVnYWN5LXRydW5rCisyMDYyNSBlZTRkMTc4NjJiNjE4MGIxNDA3NTgwZmY1NzY5Mzc3NDY1NDgzZDMyIGxlZ2FjeS10cnVuaworMjA2MjYgMDAyZWM3MzNiNWRjNWI2MzhkNWNkZDUwMDQ3YWE4NDA0NzRlZTQyOSBkZXNjci1icmFuY2gKKzIwNjI4IGQ0ZDA2NTI5YzIxODExZDMwZWNiNzJhZTJjMjExMjI0N2VmODIxMDQgZGVzY3ItYnJhbmNoCisyMDYyOSA5ZTUzYTVkNzFmMWRhMWVmMzEwNDVmNWYzM2EzNjk2NjNlZGQxZDkwIGxlZ2FjeS10cnVuaworMjA2MzAgMTgxMjQ3NmI3ZmU0NTcwMjE4ZTNkNmM1M2FmZTk1ZGQ4ZmE2ODQ2OCBsZWdhY3ktdHJ1bmsKKzIwNjMxIDY4ZTcxZTliYzIwNDU0MmE5YTJjZGRhZDE1YjI4NTAwYjE3Yjc1MGYgbGVnYWN5LXRydW5rCisyMDYzMiBhYWI2YzFmMTkyODlkY2ZkYmRiYTJjMTk4NjYxY2U5NzExOGM3MDMwIGxlZ2FjeS10cnVuaworMjA2MzMgMzA2NGI3M2FkYzFhZDc3MDRhMTllZTdjMjE0NjZkMzUyNWJmY2FiOSBkZXNjci1icmFuY2gKKzIwNjM0IDQ0MjRlMDZkNDE1OTU0ZmExMjI3N2IzYjZiMjcxZmNmNDMzNTM3NDMgZGVzY3ItYnJhbmNoCisyMDYzNSAxZTkwMmZjNzM2NDUxODU0NzNkNzQ1NDEwMjhjOGI0NmQyMjFkNzE0IGxlZ2FjeS10cnVuaworMjA2MzYgZmZjMjkyM2JhZDFhOTY0NThiYzZhODk4YjJhMmQ4MDEwZGI3NjI4ZCBsZWdhY3ktdHJ1bmsKKzIwNjM3IGY5NzAxOTUxOTZjNGZiZTc2MzEyY2RmZjU4NGY5OGMxOWQ4NmJlY2MgbGVnYWN5LXRydW5rCisyMDYzOCBhYWQwYWRmODA2YWRjODJkYjI2YWYxNDcyYTEyOThmODBlOWQ0NTIxIGxlZ2FjeS10cnVuaworMjA2MzkgMzc5ZmU4ODc2NDRmYjgwYzYzZDc5MjcyOTFjMTcwZmMzN2ZiMmJhMSBkZXNjci1icmFuY2gKKzIwNjQwIDU0NjIzNjI2ZGE0ZTNhMWZlOTE4YmViMWVlMzcwZjBlNDg0ZTQzY2EgbGVnYWN5LXRydW5rCisyMDY0MSA0MzMwMTNhZjQ1OTg3OGE4YjBjNDQ1YjNiNWZmMDM4ZTJmNDFmODlmIGxlZ2FjeS10cnVuaworMjA2NDIgZGVkNDFiZTg0ZGE0ZmFjYzE1ZDlmYzA3MmQ4MzdiZjQ4ZmE1YTM2OCBsZWdhY3ktdHJ1bmsKKzIwNjQzIGUzZjBmZDM4YzI0YjcwYjA5YjU5MTZkMzY5YTgxYTVkN2ZmNGVlMTggbGVnYWN5LXRydW5rCisyMDY0NCBmM2I4Nzg1YmQwMjIyYTYxZmUyYmJhMzgwMzI0ZGM3YjhhYzM5OGQzIGxlZ2FjeS10cnVuaworMjA2NDUgYjQxZjZlZjZlYThmNzhmMTZhY2FiYzgwODBiYTY4YTdkNTM3YmU4OCBsZWdhY3ktdHJ1bmsKKzIwNjQ2IDJmMTYwNjJhMWI3Yzc1Y2ZiZTY2MGE5ZjhlYTc3ZWVlYWNmODkzNjkgbGVnYWN5LXRydW5rCisyMDY0NyBhZDI1YmZjYzQzNzcxNWY3MGNmZDM3N2Q5ZWZhYTk4YmVhMjlhMzFmIGxlZ2FjeS10cnVuaworMjA2NDggZmU0YzEwMzRiNDgwMTNiNGYyMmRjNzcxOGQzMTVjMWVmOWQxYWUxZCBsZWdhY3ktdHJ1bmsKKzIwNjQ5IGJhOGY4ZTRkNDJiMDQ3OTI1ZjgxNjE2MDlmMTBiNjg3NGE0ZWE2NTkgbGVnYWN5LXRydW5rCisyMDY1MCAxYzg2YzhkMWM5Yzc2MmE3MjJhNjZlYTZjNGFiN2FjYjcwNTcyNmFmIHJlbGVhc2UyMC1tYWludAorMjA2NTEgNjE5OWU1YmQzNzBiNTYwYzQ1MzM4ODUyYzFjMTdmMmMzNmM4YjgwNCBsZWdhY3ktdHJ1bmsKKzIwNjUyIDM1MGJlMTljYTZhNWY4OWRkY2E2YjYyOGE1YmJjMDZiZmUxYTU3NGQgbGVnYWN5LXRydW5rCisyMDY1MyAyYTdjZmMxNzJhNjg0YTBhMmQ3NDIwMTY5Yjg1YzY5YzQ0NmM3MmFkIGxlZ2FjeS10cnVuaworMjA2NTQgNWUzYmFiOGFlZjdiMGZhYTI3YzFkYWVkNTgwY2Q2OGNiYWM2YTJjZCBsZWdhY3ktdHJ1bmsKKzIwNjU1IDY0OTNkNWU5NDFjMmE4MGZmZWE1ODJmYzI3NDFhYjRhODhjNjkyODYgbGVnYWN5LXRydW5rCisyMDY1NiBmZjgxMGZiNTk1MTMyMTlhY2QyY2VkNjkyNGNkOTMwYjMxNzk3YmY2IHJlbGVhc2UyMS1tYWludAorMjA2NTcgNzVlNzgxNDA0MWRhY2I4ZWJkM2Y5NDMyZTc3MzM5N2NjZWU5ZWVjNSBsZWdhY3ktdHJ1bmsKKzIwNjU4IGE2YTM5OWFjZjYyMDY0ZjlhYzJmYTQxMmM2NTMwNDQ3NWZlMmEwYzkgcmVsZWFzZTIxLW1haW50CisyMDY1OSA5OTQ5Yzg3MGUxNDQyMGEyNjgyNjdiNGE4ZDYwNjA4ZjkxNjU2YmY1IGxlZ2FjeS10cnVuaworMjA2NjAgYmIwOTUzNDBhYzk4NzU5M2VjMTk0ZTI0YThmYzAwZWZmNjZmZTI3OCByZWxlYXNlMjEtbWFpbnQKKzIwNjYxIGVkZTI5YWQ2NDQwYWMwMjhiODM3MDhiNDBmNTVmNTg1ZDc4NmU4NjAgbGVnYWN5LXRydW5rCisyMDY2MiAxZGVhNDMxZmIwYTA0MTEyMzE3ODcyNGEzMGYxOGJhZTAyMzY5NzM0IGxlZ2FjeS10cnVuaworMjA2NjMgY2Q5MmMwZDdlYWM0N2Y5ZDQ3NTY2N2IxMTZiMTJlNzEzMTBiN2JjMyBsZWdhY3ktdHJ1bmsKKzIwNjY0IDlmNmNmZGY3MWQ1MDY5YWE0MzMyNGM1OTk2NzA0Mjc5OTc3Mjk1ODUgbGVnYWN5LXRydW5rCisyMDY2NSA2ZGMzNjA3OGY1M2UxZTg2ODdlYTNiMTBkMTdiM2UyMjA3ZmE1ZGJmIGxlZ2FjeS10cnVuaworMjA2NjYgMWIxZjBjYjI4NWMyNTgzNmE2MjJmMTc4YzJiNjQ0MmJjY2QzYzBlMSBsZWdhY3ktdHJ1bmsKKzIwNjY3IGJkZWQ2ZDMxODZjMGQyOThhZDY3ZTkwYmNmODc5ZWRhNDlmOTlkMWYgcmVsZWFzZTIxLW1haW50CisyMDY2OCA0ODk2NjMwNTkzNDEzMjJkMjczZDA5YzRiMDkwYWZhNTIzNGE0NDExIHJlbGVhc2UyMS1tYWludAorMjA2NjkgYTYyNmZhMGUzZDc1MDRkNmNlNzA5YzViMTQwOTkwNDA5ZDAzZDMwOCBsZWdhY3ktdHJ1bmsKKzIwNjcwIDBjZmFkZDc2MDdkNTFlMjU0ZDIyNTliYzk3YWVhZTIwZGU1MjUxYTYgbGVnYWN5LXRydW5rCisyMDY3MSAwNmQ3ZGE4MTQwOWRlMWMwZmM0ZjMzMjk0M2I2NmUwYWJjZGY3YjlhIGxlZ2FjeS10cnVuaworMjA2NzIgZTEzZWVkZDA0YTRhODFjNzVjMTM1ZmI5MGE2MDQ2NmU3ZjIxNDYwZiByZWxlYXNlMjEtbWFpbnQKKzIwNjczIGU3ODVkN2JkNzU5OGZhNDlmMGVmNTA4N2M5ZWNiNjIwM2FkY2UyMDQgbGVnYWN5LXRydW5rCisyMDY3NCA2MGY4YzE1YzAyNTVkYjk4N2UzYjc2NjA3NWQ5YzJlMDg4ZjY1YzAwIHJlbGVhc2UyMS1tYWludAorMjA2NzUgMzliZjFmNmNmMGY5YmQ1ZjgyMDY4MTVhZjZhZjFlZmY2MWVmNTBjNiBsZWdhY3ktdHJ1bmsKKzIwNjc2IDE0NzYzMmFkMWJjYzNhM2Q3MzMzMjM3M2YyMzNlNjFkYTk5OGU1NmIgbGVnYWN5LXRydW5rCisyMDY3NyA0Mzc0ODJmZTU1ZTY0NzdjNTUyMzM4MTVmMjBkZmViY2E4ZGQ3NDRlIGxlZ2FjeS10cnVuaworMjA2NzggMGViZmU5YTFlYjQzZTk1YzQ0YmNkMGZhOTA3OTA3ZGVmYTliNTQyMSBsZWdhY3ktdHJ1bmsKKzIwNjc5IDgyMGU1YTBjMzExMmZjZjNkNzliN2Q5YmViMzY2NDQxYTNjMWVhNDEgcmVsZWFzZTIxLW1haW50CisyMDY4MCBmOTcxZjI1MmQ5Yjg3YTY1NjI3ZmJkNjVjMjAyYzhhMjgwNGY5NTQ5IGxlZ2FjeS10cnVuaworMjA2ODEgZDA1ZGJmM2YzNmY2NzI5NDI4Y2I5ZWU2NTExZjJhZGE2MjA1NGQ2NSByZWxlYXNlMjEtbWFpbnQKKzIwNjgyIGVkNzcxYjVkYjVhYWYzYTc3NjcwNGUwMTYxM2FlZDlmMzMwZjEzZTAgbGVnYWN5LXRydW5rCisyMDY4MyAxYTIxZGQxM2U2MGE2ZTc0MmVhMWIwYmQ1OTg3NmYwMGJhZTczMmY1IGxlZ2FjeS10cnVuaworMjA2ODQgM2VlOWEzZjYwYmM3OTY0YTE3MjFkMTViZDQwMjZkNGU3NTdhZWM3OSBsZWdhY3ktdHJ1bmsKKzIwNjg1IDUzYmJlYjI1YmRlNzE5ZjQ2YWI2YjhjNmE5M2ZhZGY0MzkxNzZjZTggbGVnYWN5LXRydW5rCisyMDY4NiBiMTZmYzg5YzE5NGY2YTM1NGYxNWM0MTc4YjhkYzdmYWI5ZmY1M2FmIGxlZ2FjeS10cnVuaworMjA2ODcgYjc2ZDFiNWU4ODYwMGQ2ZWVmZTM3YmUxYTg3MTJhYTRhODk2NDM4MiBsZWdhY3ktdHJ1bmsKKzIwNjg4IGM1N2NlNzVkY2RlMGM4MmYxNzZkOGMxZTJmZjRmNDY3ZDViYTczNjUgbGVnYWN5LXRydW5rCisyMDY4OSAyNjExOTZiZDE2ZDdlZjIyY2ZjOTk3ZWJiOWNkNzg2MTk2N2E2YTQ4IGxlZ2FjeS10cnVuaworMjA2OTAgZjQ2NWNhZTMwMWVlNjE1ZDMwMTg4ZGI0MGIzNWI4NDRhMDZlMjVjYyBsZWdhY3ktdHJ1bmsKKzIwNjkxIGIzOTI2NmY3NDg0YzQ0ODA1NGUzNjlmYThhNjFlZDVmOGEyYTg3MGYgbGVnYWN5LXRydW5rCisyMDY5MiBjODg2Y2QxYzIxODQ3M2QyY2ZmZjc2MzZlMjQzMDQ2ODE1MGY1ODE4IGxlZ2FjeS10cnVuaworMjA2OTMgZjQzNzRkNzkzMWJhOWZmYmViNTM1YTQxNGY5MTZhY2I5ZjQ3NTE1YSBsZWdhY3ktdHJ1bmsKKzIwNjk0IGM0N2NjOWE5ODY0YzRlNDIxYTA0Zjg3ZmU5MzFhMmE0ZjcyNWYxOWEgbGVnYWN5LXRydW5rCisyMDY5NSBlZjZmM2UxODE4Nzg2NjMzYjRhYmEyNWZiZjNjNmE1Yjk4MzgwOTAxIGxlZ2FjeS10cnVuaworMjA2OTYgNDdkMTg2MDJkNWVhNDU1MTA2ZTQyZWRhOTZiMmQ2YzAzM2U4MWNlYSBsZWdhY3ktdHJ1bmsKKzIwNjk3IGEwNmE3MDQyNjBlOTZhMWQ1ZmU1ZjQ1NDdhMDdkMmJhNzk5NDk3OTggbGVnYWN5LXRydW5rCisyMDY5OCBhOTg3Y2YxODE0MzQ5MGRhOGFkYjk0N2M4YWNmNGUzNmUzZjYwMmU2IGxlZ2FjeS10cnVuaworMjA2OTkgNWUwZWMzOWM0Y2VjYzRjNDg0ZTYzNGU2NGYwNzJmMWJjMTcxOTk2OSBsZWdhY3ktdHJ1bmsKKzIwNzAxIDA4MGExMjkxYmY2YzlmODFmNzYxMmM0MTE2MjBiZTZhZmI3OTgzY2UgbGVnYWN5LXRydW5rCisyMDcwMiAzMzI2OTdkZThkYjhlMmQ1Mjk0YTdjM2JkYjU4NDE1ZjZkZDMxNzMxIGxlZ2FjeS10cnVuaworMjA3MDMgYjUzNGYxMDczOTg3Y2QzNjAzMDY4NmI3M2NhNjdkNWVkZDk5ZTUxOSByZWxlYXNlMjEtbWFpbnQKKzIwNzA0IDA5OGQ2Zjg2OWE5ZGU4NTUxNzRkNWY3ZjBhZTMyYTQ3ZWYwMmNmOWQgcmVsZWFzZTIxLW1haW50CisyMDcwNSA2ODYwNTRlMDNhYzU5YzViZDIwYzYwNGYyZGQwMWE0NjFiNTU3YWEyIGRlc2NyLWJyYW5jaAorMjA3MDYgZWY2NWJjZWU3MmNhMjIzNmNhN2IzY2EwZTgxMDQzZTg2Njc5N2MzOCBkZXNjci1icmFuY2gKKzIwNzA3IDY1ZTI2MTEzYjNmYjJlMTFmOWI2MTFkYWUzMGQ4YTRkNGMzNDQxMzAgbGVnYWN5LXRydW5rCisyMDcwOCA0ZWYxYjZhODNhNDc5NGUxNDRiNjhlNGJmNjU5NzU1ZTJiNzg1M2M5IGxlZ2FjeS10cnVuaworMjA3MDkgMmYwZGY5ZjBiMDg4NzgyZDg2N2ZkYzhlNzc3NTgxM2NlNDc3NmRlYSBsZWdhY3ktdHJ1bmsKKzIwNzEwIDY1OGMwNzdkZDM1MTMxMzVjNDlmMjE0N2Q2ZDhmODU5ODY5YzBkMzUgbGVnYWN5LXRydW5rCisyMDcxMSA1MWFhNDI1MDI5NzU1MGRiMWVhYWI1ZTBiNzZmYTY1MzE0MmU0Mjc3IGRlc2NyLWJyYW5jaAorMjA3MTIgNDdkNDRkODU0MmI3YjJmYjY1MTIyOGJlMDQ1MzM3ZGIxYWMxMWJmMyBkZXNjci1icmFuY2gKKzIwNzEzIGRkNmY4YzljYWZmMGVjNWUwNDVlZDU2MTE2MGY5OTcyZGFhY2FiMzQgZGVzY3ItYnJhbmNoCisyMDcxNCA3YTlmNmMwOTc5MWE4ZWVkMjY0YTQ4NDJkYTk1YTE4MWRlODYzYzAwIGRlc2NyLWJyYW5jaAorMjA3MTUgNDdmNGQwNTY4YzdjYjczMjc0ZGNlOGY0MTYyYTQ3ZjdhMTExYzA5NyBsZWdhY3ktdHJ1bmsKKzIwNzE2IGMxODgwZjZiMzE4OWNmODRjMzRlZjJlMDM4MDQ0N2ZkNGRkNjdhZTEgbGVnYWN5LXRydW5rCisyMDcxNyBjZTM3MzQyZjZmNmUzZjMwZTYzNmEwN2UxZTZiZGE3NjM0MjRkYmVhIHJlbGVhc2UyMS1tYWludAorMjA3MTggY2M4ZDE0OGMzOTZhZTkwOGM5YjQzMzQ2YWQ4OGVkYzE4ZjVlMzRlMCBsZWdhY3ktdHJ1bmsKKzIwNzE5IGZiMTAzZTNkYTJhZWFmZjNjOWZlMTljMjJjOTYwNmUxNzRkNjM5YzYgbGVnYWN5LXRydW5rCisyMDcyMCAwMWI1MDQzYTQ1MDlmNzA0NDQzNDA4NzFhMTQwOGRlYTQ0NjE0NTE5IGxlZ2FjeS10cnVuaworMjA3MjEgNjY5NjA0ZDkzNDNmMDVkMTdjYTgzNWI3YWE1NTlhZmJkMjU3ZTU5YSBsZWdhY3ktdHJ1bmsKKzIwNzIyIDRiMmZkYWViYmZlNWRlMzFjODcwYjM0ZjA2Y2RkNGFhMThkYjdiZDYgbGVnYWN5LXRydW5rCisyMDcyMyAwZWEwOTEzZjgyNGRhYjNmZTFiNWIwMTM3N2U5MmJjMzNjOTA5M2E1IGRlc2NyLWJyYW5jaAorMjA3MjQgZDdjY2I5MzFjYTc5NTU1ZWY4Njc4MjQ2MTc1NWIxMmNhZWUxN2YwZCBkZXNjci1icmFuY2gKKzIwNzI1IDdhMmExMjJjOTk3YzIwNjM3NWJkMTMwMTQ0N2VkYzA2Nzg1MjYxOGUgZGVzY3ItYnJhbmNoCisyMDcyNiBkY2UxZjUzNDUxYTVhZjQ2OTJlNWQzOGE2ZmU5NWI2M2NjNzM0MzhhIGxlZ2FjeS10cnVuaworMjA3MjcgNTk2MDRmNWI0ZGQxMjkwZTFlYzRmZDFhYmM2N2ZhMjk0NzgxZGE1MCBkZXNjci1icmFuY2gKKzIwNzI4IDQxOWViYzY3M2VkOGRmOWM2Zjk4MTBiOGY2MDBhNTY0ZGU0MTBiN2EgbGVnYWN5LXRydW5rCisyMDcyOSAwZWJiOTE1MjFhZTZiY2VkYmJjMDVlZWM3YjkyNjE5MmIyMTI4YjZiIGxlZ2FjeS10cnVuaworMjA3MzAgYjRiMzY1N2NiMWZhYTQ1NzNhNGQ1NGRlNzRkNjk3Mjg2NDk4NzlkMSBsZWdhY3ktdHJ1bmsKKzIwNzMxIDk5M2ZiMTgwMWY0MWIyNGE2YWMwODA4ZWRhZWI2YzRiZGM1N2Y1NTUgbGVnYWN5LXRydW5rCisyMDczMiBhMTU3NWRiZjdkODEyYjE5ZTg2NTdiMDAzOTI2ZjRiOGI3YWQyYTUxIGxlZ2FjeS10cnVuaworMjA3MzMgYWIxN2I4Yjg4Njk2MmQ5MTAwYWU2MGJiYjE2ZjA4YzllMzY0M2I0MCBsZWdhY3ktdHJ1bmsKKzIwNzM0IDUzODdjYjc2NzA1OTRhMmY5ZWZkNmM0ZjNjNDY3ZjRlNjIxNzdlMjEgbGVnYWN5LXRydW5rCisyMDczNSAxZGFjZDBkNjA2MzdjODczYzkzNzFmZDRlMDM5ODA1NGYxMTIwNjNlIGxlZ2FjeS10cnVuaworMjA3MzYgMTI5NmU4NjMwNGVmNThmNGYyYmU1YzU3ZTVkZGRiMzZiZGRiZjEwMSBsZWdhY3ktdHJ1bmsKKzIwNzM3IDBlZDhjNWYzZjUzMDYyNDEyNTIxYzQzMGMzMDZjYjNlM2YyZDRhMDUgbGVnYWN5LXRydW5rCisyMDczOCA5OWM0OWYwMDkzODhlNTJjYjQ4MjQ5ZDJlYTNhNjY1MWU1NjFhYWY2IGxlZ2FjeS10cnVuaworMjA3MzkgODk5ZjM2N2ViYTU2YjUwYzkyZTEwNmE0ZTdkMzg0MmViM2I5ZjY1NiBsZWdhY3ktdHJ1bmsKKzIwNzQwIDQ3OWVhNjllYzg1YjMyMGI5YmI2MGIzMzdkMjczMDdkNzE0Y2NhYzQgbGVnYWN5LXRydW5rCisyMDc0MSAyMmEwYjJlMzI5MWYwMmE4ODllNGRlYzg1NGEzMTE0NmYzM2MxN2U2IHJlbGVhc2UyMS1tYWludAorMjA3NDIgNzhjNjRjMGY2NjFjYmM0ZjUzYTg4NTRmNTJjYzA5MTA4ZTU0MjIzZSByZWxlYXNlMjEtbWFpbnQKKzIwNzQzIDgwNDI1YjJjMWU0YzcwMjNjZDVlYjE3ZmNiZWYyN2NlMmJlYTkxMmQgcmVsZWFzZTIxLW1haW50CisyMDc0NCAyZTAxNWY4YTFhYzIwMWIxMmYyMjUzNGY0MWViMGEyYjY2MjAxOTRlIGxlZ2FjeS10cnVuaworMjA3NDUgMWM2MDRiYzZiOTFlNTRmZGYxNjE2N2FiZTkxZGJmNWEyZDM5ODQwMiBsZWdhY3ktdHJ1bmsKKzIwNzQ2IDFmYjNlY2E4OTY5ZWE4Y2ZlNzAwMDc1YWI4MjFmZjhhYTMzM2Y4OWQgbGVnYWN5LXRydW5rCisyMDc0NyA2ZTAwOGM2MTk4NTUzODU2ZjExNzc3OGI4NjFhMmZjZWJjZmU0ZTJmIGxlZ2FjeS10cnVuaworMjA3NDggM2I1YmViOTI3N2UwNDdiZTMzMTFiOTZmOTM0MGE5NzkyMzNlNWQ4OCBsZWdhY3ktdHJ1bmsKKzIwNzQ5IGE4ZmE5YzBmMWUwYmI1Y2NkNzg5MmJhNzc5MGQ2OTBlMGQxMDMxYTIgbGVnYWN5LXRydW5rCisyMDc1MCA4YWVlNTM5NTA1ODMwOTI1MzM4NGFjZmNiMmEzZTVjMjBlNTFiYjdjIGxlZ2FjeS10cnVuaworMjA3NTEgYTJiNjU2YTUyMjk0M2ExOTE5M2MxMmE0OTFmN2VkZDQ0Y2I5YTA0YSBsZWdhY3ktdHJ1bmsKKzIwNzUyIGMxOTk4MGMwM2UyZGUxNWY0Nzg3NmJlNzA4MmE0MDk0N2I0ODk3ZTcgbGVnYWN5LXRydW5rCisyMDc1MyA1NTk3ZDRiY2RlMDc1ODViMzkzMTU3ODllY2VhMzZiNDYxOTczZDcyIGxlZ2FjeS10cnVuaworMjA3NTQgN2ViMzI4OGM4MWUzNTViY2Y3ZTc4ZWUyMzUxYzk4YTYxZGI4MDY4OCBsZWdhY3ktdHJ1bmsKKzIwNzU1IDUzZmNjZjRkNmE0MTQxMzU3MjdlZTI0ZDNkMGNjNDcyNDVhNGUyMTkgbGVnYWN5LXRydW5rCisyMDc1NiA0OWU3MWE4M2Y3OTBmYTIyNGExN2E1NTg5N2ZkMzliZjUwZjVkOGE3IGxlZ2FjeS10cnVuaworMjA3NTcgYmY3MGQxZjRmNjFmNmNkMTUxNzQzZWViZjMzMjc1M2VlNTAyMjVkOCBsZWdhY3ktdHJ1bmsKKzIwNzU4IGNlOGMzNTY1NDJhYjdjZTY2YmMyYmQ0MjFhMzE0NjZkMDY0OTRiZWEgZGVzY3ItYnJhbmNoCisyMDc1OSBkZDVmYjM5ZTY1ZWYzNjUzZjJkZjAwNjc1MzU2ZGY1MTY2MDg3ZjMwIGRlc2NyLWJyYW5jaAorMjA3NjAgMzM4MDI3OTYxMmEzM2M4YmM3YjM5M2I4MjQwMDRkMGEwMjhlYTJjNSBsZWdhY3ktdHJ1bmsKKzIwNzYxIGZmOWE4MzM5YWQxYjRiMjk1OWI2YzY1ODcyMjE0YjQ0N2Q5OTUxZjcgZGVzY3ItYnJhbmNoCisyMDc2MiA5ZjU1OTdlYTk2ZmMxNGVkMTdmZTFlOGYwOTkzZGRkMzczNDY2ZGE1IGRlc2NyLWJyYW5jaAorMjA3NjMgN2YwZjVlY2U0NTYyOGJlOWM0MjNlMjg2MzMyYTFlOTk0MTg3MDAxNCBkZXNjci1icmFuY2gKKzIwNzY0IDE0ZmQ0YmI3Nzk5YWMxNWY3ODk4MzkzYjc3Y2Y0ZTVhYzdkMDkwZWIgZGVzY3ItYnJhbmNoCisyMDc2NSAxNTc5ZDMwOTY3NmUzNTA3Y2E5OWE2M2RjNTg4NDhmNDY1OWU1OGIzIGxlZ2FjeS10cnVuaworMjA3NjYgNTRkMzk1NDI1ZTkyOTM0NjdkNjFiZjc3YWEzYzhjYjZjNzA5ZjAwNiBsZWdhY3ktdHJ1bmsKKzIwNzY3IGMzNGNhYjg3ZDcyMTlmYmY4MGZmYTgxZTM2NDRkNzVlZTMxNmFjZjQgbGVnYWN5LXRydW5rCisyMDc2OCBjODM2MjMwM2VjM2IxZTMzMjIzYjJlNjZmMjNiOGZjMmQ5MzVjNGQ1IGxlZ2FjeS10cnVuaworMjA3NjkgMjIyNzY3ZWIyOGY3NWNlZTBhMWE4YzZjZjMxYmFjMjM5ODc5NGNlOSBsZWdhY3ktdHJ1bmsKKzIwNzcwIDRmMjA0OTViOGJlZGM1OTllZDc0MWU3ZTM1MzM2ZjhhNzJiYjVlZjggZGVzY3ItYnJhbmNoCisyMDc3MSA0YWY4NjViMjIxZWRmMGMyMTk4NDgyYWY0MTY4YTAyY2YyOTMzYjU3IGRlc2NyLWJyYW5jaAorMjA3NzIgYjg4MWRjM2JjZmIzZDNiMzIyNWQ1ZjlhNmMzMDYzYmFkOGY2YjQwNiBkZXNjci1icmFuY2gKKzIwNzczIDRiMDhmZDA4N2QzNjQzZTQ4YmE0NzU2NmQzZGU1ZDMxODU4M2ExYzUgbGVnYWN5LXRydW5rCisyMDc3NCA4Y2Q4NzQxZWJlYzBkNDQ4MzFjZDlhZWI4MTYxZTdkZDM3Yzg2OGJhIGxlZ2FjeS10cnVuaworMjA3NzUgMjIxMWM4OTk1YTVmOGQ4NWFjZmNmOGFhMTg5ZTE5ODMwOWNmMjEwNiBsZWdhY3ktdHJ1bmsKKzIwNzc2IGQ2ZGY4ZDM3MWI2NzQ2NzhhZjkwYjUzNWMzMzQ5NWVhOTQ3MGU1MGEgbGVnYWN5LXRydW5rCisyMDc3NyA4ZjVjZTU4MTE5ZTA1NGFiNzIzNjU4ZWZkZTI1YTIxNTM4YThmMjQ2IGxlZ2FjeS10cnVuaworMjA3NzggZjdjMzg1MjI2ZjY1YTg1MzVlZDUyMjI5ZDM0MzYzODQ2OWJlODQ5YiBsZWdhY3ktdHJ1bmsKKzIwNzc5IDI5ZDg0ZjkyMGQ1Yjk3MzFiMDc0Y2JmNTVhYzJjNzJkZjRjMzgyODAgbGVnYWN5LXRydW5rCisyMDc4MCAxOWE0NDhmZGVkZjcyNGI2MTRiY2Y4Njg4ODE5ZGQ2NTljMDZkNWQzIGxlZ2FjeS10cnVuaworMjA3ODEgNGJjZjg4ZTRhYmZmMjA5OWM0NWE2MGM5YzEyMDUyYjlkN2FlYmMxNSBsZWdhY3ktdHJ1bmsKKzIwNzgyIDc4MDI0OGNkMWQ5YWZhNWI3MDY3YzA5YzUxMTk3Njc5N2I5OGRlZTAgbGVnYWN5LXRydW5rCisyMDc4MyA1MDM3NmQ0NzA2NDgyMTc3ODc4MWRlNWVjMjA1MjhjMTY0MWY0Y2M0IGxlZ2FjeS10cnVuaworMjA3ODQgZjEyMzk2YzUxYWVhZjRkNDlkMmU2Y2ZjMTc2ODY4ZTZhNDAwYTAxYSBsZWdhY3ktdHJ1bmsKKzIwNzg1IDBhZGZiZTMyODlkNWFlM2NiMGUzNTI4MjBiOGU4ODgyYzc1ODc3YWIgbGVnYWN5LXRydW5rCisyMDc4NiAwYmUxNmQwZWNmNjRhNzk3MTIzMzg3MTllMTc4MjY3NmNjMzNhMmUwIGxlZ2FjeS10cnVuaworMjA3ODcgMDdhODc1MjAwMWJhY2I5YzE1ZDE0MDhhZDg4NmQwODY1MTk3NTc4MiByZWxlYXNlMjEtbWFpbnQKKzIwNzg4IDBiM2RhOTk4MjRjN2Q1ZGZjYWEzMjI4OWJiMDYzZGEwN2Q0YjE3YTQgbGVnYWN5LXRydW5rCisyMDc4OSAyNjc0NTA1M2Y4NDA1OTZhYzM0ZDkxMWRjYTZjMDVmYzk2ODEyNzUyIGxlZ2FjeS10cnVuaworMjA3OTAgYjU0ZGJlZjFmOGQzNjU2NGZmZWNmMDhlMGFhNjZlZDdiZjEyNTZjOSBsZWdhY3ktdHJ1bmsKKzIwNzkxIGQ4OTBhMjFiZWJkYTJiOGExNGYzMTkyNDZhMjMwY2Y2ZjE5YzhkZTYgbGVnYWN5LXRydW5rCisyMDc5MiBjZWY1YjYwMGZhMTYyODQ2ZmFlYmRmZTgxZWNmMGIxMDUxMjhjMTExIGRlc2NyLWJyYW5jaAorMjA3OTMgNzUwOWVhMDcyY2NiNDIyZDFjZjczYTc3Y2QwMTg0NzcxNDNlMTFjNiBkZXNjci1icmFuY2gKKzIwNzk0IDVjMDZhOTU5NmZiZmZkZDExZDNiNWJkMWQyMTViNWRhZDdlNTAxM2MgbGVnYWN5LXRydW5rCisyMDc5NSAxYmVjZjQ0MmQ3MzU1OWJjNTY2YjhlZDUwYmE5YTFlMzEzNzJjOWRlIGxlZ2FjeS10cnVuaworMjA3OTYgYzNmZjU3MjI2M2QzMzJmODUxNWFjYjBlMzE4YWE1NTAxMjk4ZjhlYSBsZWdhY3ktdHJ1bmsKKzIwNzk3IGVkMWU4YjZlMjZlY2IxYzczZmYzZTc4YzBjYjM2M2VlMzkwNGQ3YmUgbGVnYWN5LXRydW5rCisyMDc5OCA5ZWE4N2MwYTdjMDQzNzgwZDU2OWI2M2E3MWQyMjQ0ZDg2NmZkODhjIGxlZ2FjeS10cnVuaworMjA3OTkgYWQ1MDBiNTI2NzNjNjM5ODZkNjRiZDA1ZTVlNTYwMjgyNjc1MDhiNCBsZWdhY3ktdHJ1bmsKKzIwODAwIDI4OTJhYTI2MDdkNWY1ZTc0NzhhZDgzYzQwNzZmMTZjNmUyYmQ1ZDIgbGVnYWN5LXRydW5rCisyMDgwMSBkYjA3NGFiYTllMzY0Y2E3NjI3NWNiMTYzOTI5ZjA0YWQ5MTA1OWUxIGxlZ2FjeS10cnVuaworMjA4MDIgM2RkNDk1NDJjNGQwMWExNjFjOWUyOTMwMjhhZWM0MWZmZmViNjMwZiBkZXNjci1icmFuY2gKKzIwODAzIGM4NzJmZGYxMDEzMGY0NjllOTJmOGEwODgyMWEzYWY4NmE4NjEyMGQgbGVnYWN5LXRydW5rCisyMDgwNCBmMThlODA4YzAyMzBkMDM4N2FkNmMyMmRlMzZlOTI0MTBlYmZkZDA4IGxlZ2FjeS10cnVuaworMjA4MDUgMmI1YTliZmYxYjExZTkzODJkNWE5YWY4MmFiZDUyYjBlNjZmYzEyYyBsZWdhY3ktdHJ1bmsKKzIwODA2IDdlZDBjYWViZGQ4NjFjZTJkYWEyZjI1NDIyNTkxMmIxZDZlNzMyYzggbGVnYWN5LXRydW5rCisyMDgwNyAzZTI1NmY5ZDk5YWRlMGE5MTUyODk3YTMwNGQzZDY4OTQ5OGE0MjQ5IGxlZ2FjeS10cnVuaworMjA4MDggYWRhM2JkMWI4NzEzNDdjY2IyYTBlZmQ5OWZhNTIyZjE5YTU2OGVkYyBsZWdhY3ktdHJ1bmsKKzIwODA5IGZiMzFjMzM3NjFjOTY1ZjBjMDhiMWEyODU1OWUxM2VkYzExYjZkNWYgbGVnYWN5LXRydW5rCisyMDgxMCA5ZmYzNWY3NjYxYmQ3M2VkNjAxYjU0MjQyNjI3MDAzZTk3ODhmMzQyIGxlZ2FjeS10cnVuaworMjA4MTEgN2Y0NTU0YTFjYWUyMjhmMDI5MTk3NmM5ZTkzNGZhM2I3OGVmNzgzYSBsZWdhY3ktdHJ1bmsKKzIwODEyIDY5NjBiMmJiYmZjYWEyMTFiYmYwYjEwODlkMzdiN2IzNDViMTRjNTcgbGVnYWN5LXRydW5rCisyMDgxMyAwMTdhNjRhNGJkYzdhOThjNjAxOGM0ZDc3NGM4MGRkYzUyZmI4NDM0IGxlZ2FjeS10cnVuaworMjA4MTQgMjk1YTJmNDkyN2FiNjlhNWNhY2EwZDM5M2VmNzI5ZjkxM2YzNjNjMyBsZWdhY3ktdHJ1bmsKKzIwODE1IGEwZDA4YzQyZTcxMDJiYWVhYjMzMWExNDkxZmQ5NjlmMTBhZDA3OWEgbGVnYWN5LXRydW5rCisyMDgxNiBiYTk3MTExYTZhZDlmOTk3ZjAxMDg4NjVlMjMzMmNjMmYzOTZhMzkxIGxlZ2FjeS10cnVuaworMjA4MTcgMDU1ZmMwNDZlMDgwZWMwZTJkYTRhMThmZDBmYWEyMDEwNjkwMzJmZSBsZWdhY3ktdHJ1bmsKKzIwODE4IDAyOGExZDM5ZWZiNjVjNGIzOGZhODU0Y2VhNDI0OWMxNjM3NjBlMTIgbGVnYWN5LXRydW5rCisyMDgxOSBkMmQzZjg4NjYxYTNlOTk0YWY3MTc4MjU2MGZkMmZjNjA0ZGNjMzZkIGxlZ2FjeS10cnVuaworMjA4MjAgMjgwNzk0OWUwYmE1OTFmMTRmZjFkMjMwMWRhNWIxOTk4ODMxOTM3MSBsZWdhY3ktdHJ1bmsKKzIwODIxIDc5YWVlNDk4YTJiZTUxYmY4ODlhMTg2NjVhN2MxODJiNTgzNTdkYjIgbGVnYWN5LXRydW5rCisyMDgyMiA3NzYzNTQ5Y2NhNDU2NGE0ZTUxMzFlNWU1NmRjNGM0Mjg1MmYzN2VjIGxlZ2FjeS10cnVuaworMjA4MjMgYjc3YzQ4ODhkN2NjYWRkNmY3NDc2YmZjZjMyNTZmNDMwZjNmNDM5MSBsZWdhY3ktdHJ1bmsKKzIwODI0IGI1M2I2MGYxZWQ0NTk2Nzg3ZmYxYTRhYzM0YzIzZDk0OWYzNWEzMzcgbGVnYWN5LXRydW5rCisyMDgyNSAzMzVmYmRlZTdjZjgzYzI3YmZhY2JhMzM1MjQyZjc1YmI2YmM0MTI4IGxlZ2FjeS10cnVuaworMjA4MjYgOTdlY2U5MzIxYzUzNjRmZTg3OWU4ZWM2MTE0YmI4NTkzMGJhMzMzNyBsZWdhY3ktdHJ1bmsKKzIwODI3IDBlODZiZGViMGI5MjYxN2ViNzA4MmNlOTRkZjA0ODdkNzdlMjUyNzIgbGVnYWN5LXRydW5rCisyMDgyOCBiZTk2OWU3MTdiOTFiMGEyOGJmNTJjMGNkYWVjYTkxMmJhZjIwOTllIGxlZ2FjeS10cnVuaworMjA4MjkgZmRlNTUwOGU4MmRlNmNkOWQ4ZGQ3NzBkYTY4ODliMjM3MmNjOGY1YyBsZWdhY3ktdHJ1bmsKKzIwODMwIDA0MmRjYTFkNDUyNmUxNTkxY2NkOTY1ZTNkNWU3ZGVjZjk3N2YyYTIgbGVnYWN5LXRydW5rCisyMDgzMSBjY2I2ZDc2NjMzYmU0ZDlkYTI3ZWE4ZTZhNDNhNDRiZmYzZDc2MWZhIGxlZ2FjeS10cnVuaworMjA4MzIgNjhiZjA3ZTdiY2NjOTRkZDZlMmRhYjhhN2Q1MGM5ZGQ3NjM0ZTc0MyBsZWdhY3ktdHJ1bmsKKzIwODMzIGI4MjNhMzMxODNmYzY0YmJmOTZjYjc2NzFlODAwNzRiOWUwZjcyNTkgbGVnYWN5LXRydW5rCisyMDgzNCAwOTRjZWU2ODk4YzEwMjZjNGE5ODY3Zjc5NWY2ZWNjZjYzOThmNzYwIGxlZ2FjeS10cnVuaworMjA4MzUgNDNiN2VlNzE4ZjUzZmZhOTFjM2U2YTY0MmVlZjA1NjMxNmQ5ZjFiYSBsZWdhY3ktdHJ1bmsKKzIwODM2IDIwMGYzYTVkZTFjOWFkYjJlZThjYWQ3MmMzZmExZmRmM2MzMzg3NjIgcmVsZWFzZTIxLW1haW50CisyMDgzNyAxZWIxMjI1OWZlZWE2NDc5ODQ4MjY3ODY3NWVlYjM5MmRhMWE4MmY5IGxlZ2FjeS10cnVuaworMjA4MzggZWIwM2M2ZmMzMWU1YmQ5ZmI1MzEwZTA4MTU5NTA3MmQ3ZjZkZmRlNSBsZWdhY3ktdHJ1bmsKKzIwODM5IDE1MWEyZmEyOTZmZTQyYWZhNDFmZGNlNWU3Y2U4NTg1YTJiMTE3YWEgbGVnYWN5LXRydW5rCisyMDg0MCBjYjExYzU5YzE4ZGQzYmZmYWNmZTFiZTYyOTU1Mjk0Mzk4Mzg3ZTE4IHJlbGVhc2UyMS1tYWludAorMjA4NDEgMTNiZGI1YjIwN2QyNmQ5MzY5NjU5NDZmZmQwOTNmZTBiNGU1ZmY0MiBsZWdhY3ktdHJ1bmsKKzIwODQyIDUyNGUwZjNjMTY5YjI3MDdiYWE1ZTk1MTI5NzY2MzcxZGYyMGMxM2EgcmVsZWFzZTIxLW1haW50CisyMDg0MyAxN2MyMDBhN2RiODVhZDZkNDhlNWFkOGVhNjVkNzRjNGM1ZmVlOTgxIGxlZ2FjeS10cnVuaworMjA4NDQgNDNhYjlmODI0ZDg5MGQ1NWNiM2E4NGFjOWMzMjI0MmUxNWE1N2Q4ZiByZWxlYXNlMjEtbWFpbnQKKzIwODQ1IGQ1NjY2NmRlYjk1MzhmZjNhZTAzOTU5MDQ2N2RmYzhhZDE2YzA3ZmMgbGVnYWN5LXRydW5rCisyMDg0NiA2MDI3ZDNjZjgwNWNmNzA3YTNiNTk4YWQ4OTkzZjcwOWFlN2E5MTZmIGxlZ2FjeS10cnVuaworMjA4NDcgMjA2MGVlMGE3ZDkyYzQxZjNkMmIwOWQ5NTkwYjAxZjRlOGEwODkzMyBsZWdhY3ktdHJ1bmsKKzIwODQ4IDIxMzVkN2RlODZhZGIyYWE1ZDg3MTFhMWMzYTNmNjVmMWMyYjc5ZGQgbGVnYWN5LXRydW5rCisyMDg0OSBhOTNkYWFmYmQxM2Q3NDhjZTk1ZDE2YWM5ZWRjYWJjZGE1YmRjMTI3IGxlZ2FjeS10cnVuaworMjA4NTAgMGFmODI0Yzg4MjAzMDYxZTQwNGVhZDA1YmMzZjFmOWNhN2JiOGUzYiBsZWdhY3ktdHJ1bmsKKzIwODUxIGZkNWY4MzE4ODc3ODZkMzEyYzM4YjM2ZjdhYmRiYWYxYTk2YzM5OGQgbGVnYWN5LXRydW5rCisyMDg1MiA5M2I1OTA3MjliZGM4OTkwZWVmNzFjYTU0NTFlYmIxYzNhYWQ2NmI2IGxlZ2FjeS10cnVuaworMjA4NTMgZmQxMmU4MmI3NzI3ZmIyODJmNWVkN2RkNDEwN2JmMDk2MjJkOWQyNiBsZWdhY3ktdHJ1bmsKKzIwODU0IGExZGRjNDA4MGNjNTcyMTk3ZWNlODY3OThmODk5YTM2Zjk3NzBkNDcgbGVnYWN5LXRydW5rCisyMDg1NSBmOTViYWRhNTI3M2UyODk5MGNjY2MzNmYzNmIzNGVmMDY0MjczNWZkIGxlZ2FjeS10cnVuaworMjA4NTYgOTM5ZTNkYTU5YzYxMjIxMjYzMGExNGZjOTU3MTAwYTZiN2E1ZTc5YyBsZWdhY3ktdHJ1bmsKKzIwODU3IDViMDk3ZjYxNzE3MzUzODkyZDA4ZjQ3YmZhMmE1NGVkNjU1MGUyMDcgbGVnYWN5LXRydW5rCisyMDg1OCA4ZGE5NDczZjA3MzZiMDQ4YmE0Y2FlMTRmODUzNGIzMmVkYzQ1N2MzIGRlc2NyLWJyYW5jaAorMjA4NTkgMTRkYTUzMTQ2NjRkOTQ4MmNkYTIxMDZlMDQ5NTE4NGRmOGVhZWUyMSBsZWdhY3ktdHJ1bmsKKzIwODYwIGM0ZjU1NDAxZThhZWQ1NzAxZTE0MTIzMmFkNTc1Y2M3Y2YzZmU0MjEgZGVzY3ItYnJhbmNoCisyMDg2MSBlMjA4MGRiNzFiMWIwY2JhYWI2NmZlYzk3NzZjNDhjYTY4ODI0ZWJiIGRlc2NyLWJyYW5jaAorMjA4NjIgYzEwYjQxODU1MjAyOGFkN2JmYzExYmVkNTM0YzZkYjYyMGRlMDBmYyBsZWdhY3ktdHJ1bmsKKzIwODYzIGYwYzNkZTIyY2FlZGRlYTIyNGI3ODEzNDU0ZjJiYTc0YjMwYmZkZGQgbGVnYWN5LXRydW5rCisyMDg2NCBjYzk4NGVkMjY1ODZhYzA2YzZlYzg5ZDZmNDc3MGRlZDdiM2Q1M2Q3IGxlZ2FjeS10cnVuaworMjA4NjUgNWQ1MGQxZmFlMDc4N2Y1OTJkNTdkZGIxNzNkMGRkZjA3MmI4YjhiYiBsZWdhY3ktdHJ1bmsKKzIwODY2IDM4ZmRmOThkYTk5ZmRkMTYyZTJkYmYzYWZmNGM3ZDZhOWM1ZjYzYmYgbGVnYWN5LXRydW5rCisyMDg2NyAzNGIxNTA0ZTY2NDRjN2U4ZGExMGRhMjM0YjBiMWQ0ZjdiNDQ0MTUyIHJlbGVhc2UyMS1tYWludAorMjA4NjggYWU4YzRmNDcwYTBlNDQ3MjdjNzM5MjQwMzVmYTEwMDgwOWUwNDY5ZCBsZWdhY3ktdHJ1bmsKKzIwODY5IDUzZGUwZWVhNGQyNWM4NmU5OThlZWM1N2EzNzIzYjhkNTU0YWQ0OTIgbGVnYWN5LXRydW5rCisyMDg3MCA2OTczN2Q3ZjQ3NzZmZDZjMzI5NDNkNTBiZDYyMWNhMjEzOGQ2ZDI1IGxlZ2FjeS10cnVuaworMjA4NzEgYTQ2ZjFmN2E5Yzg2OWEyYzc1NDllMWI1NzYxYjUzZDVlNTNhOTQ1MSByZWxlYXNlMjEtbWFpbnQKKzIwODcyIDBhN2FmMGU1MzhkNGFiZGNjMGI1N2ZhMzM2ZDY3NzVhZWMxNDExYTcgbGVnYWN5LXRydW5rCisyMDg3MyA5YWY4MDZiMjg2YzYxNjU0NzY2ZDNlMzBjMTQ4YzE1MDQ5YzBiMTE3IGxlZ2FjeS10cnVuaworMjA4NzQgN2I5NzcxZjY4NTZiMzA5ZGQzMzJjYTlhNmQyZWJjNjQyNGUxMTc4YiBsZWdhY3ktdHJ1bmsKKzIwODc1IGQ4ODQyMzVmZTc1YzNmNGY2NTEzMTM0MDNkMTkyMDcwZWNlNmUxZTYgbGVnYWN5LXRydW5rCisyMDg3NiA3Nzg3MWM0OTkyMTVmYjE5Yzc0Njc0ZmNlMzI2YjdjMzIxMzg2MWU0IGxlZ2FjeS10cnVuaworMjA4NzcgNjE5ZmQ4ZTA2N2RhZWNmMDc3MDgzZDk3NjVmYTQ0NWYxOTc0ODA2MiBsZWdhY3ktdHJ1bmsKKzIwODc4IGZiZmZiNmRlMjVkZGNiM2I4M2VkYzJmOGVkMTdkYWY3OWVmNzEwYzEgbGVnYWN5LXRydW5rCisyMDg3OSA0MjFiMWQ2NjA0OTUwODg2OWYxYzdlNzI4ZTI5NjRkZTJjNWUwM2JkIGxlZ2FjeS10cnVuaworMjA4ODAgODRmZjE5NzdkNzcyNWZiNTI0MDU3ZWQ3M2ViZjlhYzc0YzVhZWE4MyBkZXNjci1icmFuY2gKKzIwODgxIDQ2OTA5ZjIyMTcwYzNlODY4MjYwMmQ2NjdkMGVhNWZiYTEyNjBkYzEgbGVnYWN5LXRydW5rCisyMDg4MiBmZjZhNmQzNDcxOTVhZDRkMjQyM2Q4N2M2YmNjNmQ1Y2NjZDAwZWNjIGxlZ2FjeS10cnVuaworMjA4ODMgMWJlNmQ2OGFlMTJjZTdiMWE0ZmMzNGFiMzY2OTE2YjhjY2JiZmE4OCBsZWdhY3ktdHJ1bmsKKzIwODg0IDZjNWE4MDBkYTc5MWY0MjU5Y2QxZTFkM2Y4NjZkZTAyMTdmZjU4YTQgZGVzY3ItYnJhbmNoCisyMDg4NSBhNjQzYTg3YTRiMmNhYTQ2MzFjODMyMjRlNzM1ZTlhOWVjMDdmMWQzIGRlc2NyLWJyYW5jaAorMjA4ODYgNzBjZDlhNDE5MDc2OTQyNzQwNDI3ZmQ4ODM0MjVhMzBiZTRlNWFjZCBsZWdhY3ktdHJ1bmsKKzIwODg3IGJkNTM0OWI0MTFmNjFhNjlmMWFmNTAxZmQ2ZWYzNTQ1OWMyMGRlZTkgbGVnYWN5LXRydW5rCisyMDg4OCBkNDI2OTQzN2U4YjNkYzFmYzVmMTdkNTc3NDkxYTFlOGM5OWQ0NzY4IGxlZ2FjeS10cnVuaworMjA4ODkgY2U2OWZiOWM4ZDU2MTcwOGI4OTI5ZTNhOTI3ZWYyY2I0NTE2NjZjOSBsZWdhY3ktdHJ1bmsKKzIwODkwIDE2MDA1YjI4NTU3NjJkZjFkYTAwYjEzZGU3NGNlMDg4ZmRhNzM4NDMgbGVnYWN5LXRydW5rCisyMDg5MSBhMWZjZmRjYjM0Nzk2NjgxNTMyZGZkYjJiZTM3ZTRiYWZiNzcwMDZiIGxlZ2FjeS10cnVuaworMjA4OTIgNWFiYzIzMjk5MjJmZWQ2YTMyNjBkZTgxNmVmMDNjMWI3YjMxMDU0MSBsZWdhY3ktdHJ1bmsKKzIwODkzIGE4OTVkN2Q3MzlhZDQxNmI3NGUyZjhkNTZkZWE1MzY1ZDY0OGQxZWEgbGVnYWN5LXRydW5rCisyMDg5NCA0NzRlM2RlMDBiMDUwZWNiYmIwNTEyZTM0ZDc4MGI4ODk3OTU5OGUzIGxlZ2FjeS10cnVuaworMjA4OTUgMjk3YTI2NmFjNGVlMTcyYmRkNWZmMmVhZWZmMDQ5M2Q5ODA2OTc1YSBsZWdhY3ktdHJ1bmsKKzIwODk2IGRlYTBiYWRlNjU2ZDQ5MTUxMGYwOGFiZWI0ZmVmYTZhYmI5ZmYyYTUgbGVnYWN5LXRydW5rCisyMDg5NyA2OTRjOWYwY2Q4MTQyOTc5MzQ4ZDZiMzQxMmNlZTUzOTBiMmFiYmExIGxlZ2FjeS10cnVuaworMjA4OTggODMxYzI3Zjg3NmFjOWRiY2Q5Yjc3YWI3NjYzMDBhZmI2NGEwYmUzNSBsZWdhY3ktdHJ1bmsKKzIwODk5IGJiZjcwMjA0OWVjNmIxYmYxZjliMzYwZDAyZjk2MTkzN2RiZmI4NjcgbGVnYWN5LXRydW5rCisyMDkwMCBlNGU4NTNkNTU2NzVhMjk2YmUzZTZiN2JlZWRkYWNkYTAyMmI5M2YzIGxlZ2FjeS10cnVuaworMjA5MDEgZWEwY2FkOTJjZmQyN2I3ZjZkY2NhNzNlMDJlZDQ0NTM2MTc1NjdhOCBsZWdhY3ktdHJ1bmsKKzIwOTAyIGNlN2YwZTM4MDgzMDQ4N2JkOTNkOGUwZjFkNjdmODBkNGE0NTI0YmQgbGVnYWN5LXRydW5rCisyMDkwMyA1NjIxNzYxOTFlNjA0OTg3NTlkYjZhMDBiMmJjNzhmMjUyZDBmNTdhIGxlZ2FjeS10cnVuaworMjA5MDQgZTE0YjQxZmQyYWIyNTE1MjE4ODY3MjM0ZjI3MTgxNzQ1NGIwYTQ3NSBsZWdhY3ktdHJ1bmsKKzIwOTA1IGNmZTA4MWM5NTUzZWM3ODQ3NmZkNzU0YWM4OTNiYzE3MWIzNjc3YzAgbGVnYWN5LXRydW5rCisyMDkwNiAzZTY5ZDdkYjVmOGQ1MGZiNTUzOWU0N2Y4OTdhODRlMzUyNDIxNWE2IGxlZ2FjeS10cnVuaworMjA5MDcgYTQyOTEwYjU0NDJhOGZkNzc0YWY2ZTQzZGM3NTcyZDMwZTNiZTcxZSBsZWdhY3ktdHJ1bmsKKzIwOTA4IDIyYjUxNTJkMjNmYzJiZWUwODBmZjI2OTEzNmFkMjM4MGIzNzM0MjggcmVsZWFzZTIxLW1haW50CisyMDkwOSAyMjM0NDE1NDA0NDMxNjY3OGI3NzdhMWM4YjY4M2M1ZDliOWIxNDdiIHJlbGVhc2UyMS1tYWludAorMjA5MTAgYjg2ZWVlZGRhZTIxMzQ2ZTRiY2ZkMmY2ZTA2ZDQ0ZTI3M2FmMjQzNyByZWxlYXNlMjEtbWFpbnQKKzIwOTExIGRiNDNiZTE5ZDNlMzNiMDAwMTU5MTcxNDM1ODhiMTNiZDY5NmRlYmQgcmVsZWFzZTIxLW1haW50CisyMDkxMiAwOTYwNzJkODg3OTg2OGFjYjBkYzJiZDhmYmEyNGRmNWNmOTkyNDA5IHJlbGVhc2UyMS1tYWludAorMjA5MTMgZDA3OThiM2EzOGMxNTZlZjE3YjI4ODRlMzc4YjQ1NWZiOTdiM2Y2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE0IDJlZGFhOGU5ZjM4MTUxNWNiMGE3ODdlNzNkOWVmZGM4MmI4YjE5ZDggcmVsZWFzZTIxLW1haW50CisyMDkxNSAwNzExZjNjZDQ0ZDA3NzA3MDM5NDNmNjZmZDVkNDg5ZTJmNDg4ZTNkIHJlbGVhc2UyMS1tYWludAorMjA5MTYgZTE4MTZmNjQ5ZmY4ZTEyMzY0OTgxMTcyN2ZkNmJmYTkzZWMxMTQ2NSByZWxlYXNlMjEtbWFpbnQKKzIwOTE3IDVkODk0YTVmY2UzOGMyYzk1ZGUwMDY3Njc2NWMzOGEyNjZlNWQwNjUgcmVsZWFzZTIxLW1haW50CisyMDkxOCBiMzhmZDJiZDY4YzBhMTllNDUyNDA3ZjRlMmZiNTY3YjBlZWFkNTYxIHJlbGVhc2UyMS1tYWludAorMjA5MTkgMTQ1OGI1OTZhNDM0YWM4YzNjZDA0NzkwNzZhNzRmZDc5ZjU0MmE5NiByZWxlYXNlMjEtbWFpbnQKKzIwOTIwIDc5M2I3NTU0M2YxM2Y1YjViM2I4MmYzYTViNTUxMDhmMmY4YTRlYjUgbGVnYWN5LXRydW5rCisyMDkyMSA4YzQ3ZDlkYTMwZGUyNmRjODg4OWJjOWJkMjI1NWM4MzkxYTExMDhhIHJlbGVhc2UyMS1tYWludAorMjA5MjIgOWRmZDIyZThlOWI3NmRkMTk3MTAyODY2ODA1ZDg2YzliMjIzMTU3NSByZWxlYXNlMjEtbWFpbnQKKzIwOTIzIGE0MjlkYTdkYjcwNjk1NDY3Y2Q2MmNlNWY4NmRiN2RkMWY5MjBjMWYgcmVsZWFzZTIxLW1haW50CisyMDkyNCAyNDg0MThjYmQwMDUyN2Q0N2U1NWY1ODc2ZmI0NWQ4MzI2MGE4ZjM3IHJlbGVhc2UyMS1tYWludAorMjA5MjUgNGVkNjU3ZDM3Y2VhN2JkOGMzZGE4MGU0ZGExMmI2N2RiNWNjODZkZiByZWxlYXNlMjEtbWFpbnQKKzIwOTI2IDU2OTZkZGRhM2U0MGY5NzFmYmExNzNkYTI0Zjk0NDEyOWMyZWQ1NTggcmVsZWFzZTIxLW1haW50CisyMDkyNyBmYzY4ZjZlZDcwMTQyMDQ1NWY2N2QwOGI0ODhlZDg5YjRmNDcwYjA5IHJlbGVhc2UyMS1tYWludAorMjA5MjggNGFkN2EyYWI0MmI0MmU4YzUwYzk4ZTlkYTcxNTM0MDkzNDE0YjJiZSByZWxlYXNlMjEtbWFpbnQKKzIwOTI5IGU1YmEwZDJiNDdlMjk0MjUyZTFlYWI0ZWYzNTFlYzUyYTNlMmUyODggcmVsZWFzZTIxLW1haW50CisyMDkzMCAxMDMxMTFhZDk5ZjFmMGUyZWJhNTA0MzE2MzY5ZGRlY2RiZTAyMTU3IGxlZ2FjeS10cnVuaworMjA5MzEgYWY0ODk1ODc1MDlkY2RkZTYzYzA5MmU4MDNkY2NhZGVjOWExZjhjOSBsZWdhY3ktdHJ1bmsKKzIwOTMyIGQ4NmIyNDVlMDg1ODAxYzI0YzcyNDE0MzhkMjhkZTViOTVkM2M2OGEgbGVnYWN5LXRydW5rCisyMDkzMyA5NWJhYTMzM2VlNDNjYjgwMTc4NzVhZGFmMjg4N2M4ZmRkNTk3ZjIyIGxlZ2FjeS10cnVuaworMjA5MzQgNWUxMTQxMTU3ZDUzZmQ5NWU3NjhjYTBjZWMwNjc0ZjI2ZWI5YjcwYyBsZWdhY3ktdHJ1bmsKKzIwOTM1IDc4ZjY3MDcxYzk0OWViMmM5MmMzZmVlOWRkMmEzNzcwY2Q5ZjRiYzggbGVnYWN5LXRydW5rCisyMDkzNiAxNzhiZWRmOTUzNmQ4Y2UxYzBmYzY2NjZlZTMxMDg1NWM3MDcxZTJhIGxlZ2FjeS10cnVuaworMjA5MzcgMDVhYjBhNzE0ZTRjYWVhOTc0MGNlMjU4OWNkNDc1OTEyZWMzYTAwYSBsZWdhY3ktdHJ1bmsKKzIwOTM4IGIyMDE4ZTVkMjE0MmI5NDFkMjE3MTIwOGRiNjg3Y2E3YzFiNWY0ZDIgcmVsZWFzZTIxLW1haW50CisyMDkzOSBlZDhiNzljNmNiNGIyY2RhYWM0M2Y3NmFiOThkMWFhOGI5MmU2NWNkIGxlZ2FjeS10cnVuaworMjA5NDAgZjlhMzRhYzE0YzhiZTk5NjIyMjJiMjQxYjc2ODc0OGVkMmMzZTYxMyBsZWdhY3ktdHJ1bmsKKzIwOTQxIDczZmNjNGY0YTE4MjI5MGVkMTUzMDRiOWQ4MDg1M2FmYTk2NmFiMzYgbGVnYWN5LXRydW5rCisyMDk0MiA0MDFjY2ZjZjI4YzM4ODQwZWE3ZTc3MmRlMjEwMGRjODczMzUxYjY4IGxlZ2FjeS10cnVuaworMjA5NDMgMmYyZWU1ZGFhNjBkYjY1Nzk3MGNmNTZlNzU4MTlkZmU3ZmUyOThmNSBsZWdhY3ktdHJ1bmsKKzIwOTQ0IGIwYjQ2ZDc3MzRlMGVkM2U0OGM0YmY1MmE0YzQyOGNlYmQzZWIyNzEgcmVsZWFzZTIxLW1haW50CisyMDk0NSA1MjdkMGZmZGYwOTkwMTYxMWJmNjM2MWMzMzhiYmYyYzMzNTZiNjJjIGxlZ2FjeS10cnVuaworMjA5NDYgZDU3OWE1ZDhiM2ZlYTgxYzExNWNmZmM2NzRhMDBlMzgwODQwMmNmNSBsZWdhY3ktdHJ1bmsKKzIwOTQ3IDJhOTRiZjIzNWRhYWNmYWVmNGU3OTM3N2UwOTFiNzhlZjBlN2Q1MzYgbGVnYWN5LXRydW5rCisyMDk0OCA1ZTg3YTA4YWJiMDU3YTE1Y2E5MmNkMmFjOWJiMGFhMDVlMzMwNTkzIGxlZ2FjeS10cnVuaworMjA5NDkgMTkyZDM2ODY5NDQ1NThhM2YzNTk3ZGNmNGRiOWM2YjEzYzBmYTkwYiBsZWdhY3ktdHJ1bmsKKzIwOTUwIGRiMTNmYjVjODU4YTUxOTMxMTE2YjI0NGZlNjdiM2U5ZjYwMDA2NGEgcmVsZWFzZTIxLW1haW50CisyMDk1MSBhMmI5OTZjNzE2YTFjNTA0NDU5OTFiZjU0ZDEwYmFhZmI0NzdhMDQ4IGxlZ2FjeS10cnVuaworMjA5NTIgNjJlZWMyOTM2Y2QzZjllMWI2MDA1ODVmYTkxYTM1ZmM2YjBmMjk3NSBsZWdhY3ktdHJ1bmsKKzIwOTUzIDk1MjZmMGVkMDY2YTA0N2U0YzRlOGZkMDU0ZGVkNWU5NzcyMjQ4OTMgbGVnYWN5LXRydW5rCisyMDk1NCA0N2M3YzFlYjk1NzRkMTk5Y2U1NGU1ZTMyMmI0M2I0Njk4Nzk2OTI5IGxlZ2FjeS10cnVuaworMjA5NTUgNzA2YmI2Yzk0NWRmZjU4MzM3YTdmOTM0ZjQ2NjUwMzZiMjQwYmE0MiByZWxlYXNlMjEtbWFpbnQKKzIwOTU2IDg1ODUwNDFiYTU3YjFiZWNlMWRmN2QzOTQ0ZDYwN2ViYmY0MGViMzcgbGVnYWN5LXRydW5rCisyMDk1NyBhZTA4YTAxZjJmMmRkMmY1ODdmYTY5N2RjYzVjMzAwNzJjYzIzZDA1IHJlbGVhc2UyMS1tYWludAorMjA5NTggZTgxOWNjMGE5ZWY2ZGMwYmVkZjE5ZjUzYmU0NTM5NWUzZjMzOTlmNCBsZWdhY3ktdHJ1bmsKKzIwOTU5IDgzNjE0ZDBlMDBmMTVlNzQ1ZjBlMjRjOTk4YWUyYTkyNDY3Mzc0MTUgcmVsZWFzZTIxLW1haW50CisyMDk2MCBjZGY4OGJhMmQ5NjhiOTNiMGJhYzVlNDM4MDljZjg0YjE5NTQxYjc3IGxlZ2FjeS10cnVuaworMjA5NjEgMDc2OWUxMWQ5ZDVmNDhmM2UzNjFhNTRhOTU2M2UxMGViNzA0MzczNiBsZWdhY3ktdHJ1bmsKKzIwOTYyIDllZTIxODI0ODFhZjlhMTQ3M2E2YWI3MGI4MmQ5YmU1NDE5NzZjZWYgbGVnYWN5LXRydW5rCisyMDk2MyA0NDdlYTY1MTgxYzI4NWMwNjc0Nzk4MmJhNDdkN2VkMTdjMTBlOGFlIGxlZ2FjeS10cnVuaworMjA5NjQgMjk4ZmIyOWRhYTgxYzI3MzQzNjJjNjdhZmUwOGVmNWJlNzU0YTZhMCBsZWdhY3ktdHJ1bmsKKzIwOTY1IDgzNzgyNWE3NzljMTZlYTMyMWM1MzI2NjE4NGIyMDQzZmYwNmM5NjEgbGVnYWN5LXRydW5rCisyMDk2NiA1YTlkZWJiMTQ0NDBlMjUyZTMzNTVmMzNiYTQ5NWJjMTRiOTZiOWI0IGxlZ2FjeS10cnVuaworMjA5NjcgMjdmMjQyMmVhMzM1NzgwYTc3MGZlMTQ3Mjg2ZjZiYzI2OTRhYzhhZSBsZWdhY3ktdHJ1bmsKKzIwOTY4IGM4Y2I3OTc3MjM2NGU0ODYwYWIxY2FmNDBjMzJiODhiYjNkMTg2NGYgbGVnYWN5LXRydW5rCisyMDk2OSBmZjY0NGU2MDg1MjhjZjZjNDc1Y2EwM2M5NWFlNzIxOGM0MzdiMWM1IHJlbGVhc2UyMS1tYWludAorMjA5NzAgZWM5MzQzYWQxZTYwOWE3YzViYTVkZTg0YzJmNDNhZDMzMjRkNjYxNSBsZWdhY3ktdHJ1bmsKKzIwOTcxIDk3ODA2YTU5OWM3ZWI1YTY5NzY3Y2MzYjM4OTE1MGIxMzBkMDdkZWIgcmVsZWFzZTIxLW1haW50CisyMDk3MiA0NWJhZGZiZmIwMGVmNjEzNmYwNTczZjFlNjExNmFmYWNiMDdkMjU5IGxlZ2FjeS10cnVuaworMjA5NzMgMjdlZGU4YjA5NWQ2ZGYxZDE0ZTE5ZGEyYWRhNTVjZDQ3M2U5ZTlkOSBsZWdhY3ktdHJ1bmsKKzIwOTc0IDY0ZTFlYTM0YjU1MzAwZDNmMmU1NTk0Zjc0ZTBjYjNlZTE5ZDg1ZjMgbGVnYWN5LXRydW5rCisyMDk3NSBiYWYyMTM3ZTk2NzZjYjQ0NmM5ZjdkNGJkMWE5MzJlMjRhYTBlNmUxIGxlZ2FjeS10cnVuaworMjA5NzYgZTYwZmMwMTc2MmEwZjkwMTc3NDY2NDQ4NzQzY2FmZWE3ODZmZjI2NiBsZWdhY3ktdHJ1bmsKKzIwOTc3IDZhMmUyNTQ4ZTZjZjM5YTFkOWYxZDM1NzRiMWVhYmUyY2MwOWI5NGQgbGVnYWN5LXRydW5rCisyMDk3OCBhNDMwMTQzMWIyYWM4ZTc1ZWZjMzhjOTI2OWQ3NGNmNTY5ODFjOTZhIHJlbGVhc2UyMS1tYWludAorMjA5NzkgNTBlMzM4MGIwODZhMWQ0NzYyMWUzZjk4ODVmMWVjNjYxYWNlZmE2ZCBsZWdhY3ktdHJ1bmsKKzIwOTgwIDUzYjBmNjVhMGEwNWQ3NWRmMTNhZGU0NWYzMjYyZWU3YWIzY2FmZTMgcmVsZWFzZTIxLW1haW50CisyMDk4MSAxODA3MTA5MTFmMTVkN2RjNjdkNGE0MDg2Nzk2ZGU2ZGQ2ODk0MzNlIHJlbGVhc2UyMS1tYWludAorMjA5ODIgNTgyODQ1ZTE0ZTVjYzE1Y2MwOGNkMTg4N2YyYjcwMmQ4MmY0Njg2ZCBsZWdhY3ktdHJ1bmsKKzIwOTgzIDk5YWVhNmY1Y2ViZDI4ZWY1MTljODEwYWYyZGU2NDZkMjNmMmUzNTIgbGVnYWN5LXRydW5rCisyMDk4NCA5Zjk3MTY3ZjE2NDMwMTY3M2NlZWNiOTZhN2VmYTc0NDAxMTA3M2NmIGxlZ2FjeS10cnVuaworMjA5ODUgMGMxYTA0ZTk4MTM0MmZkNWI5NGQxY2EzYWM4ZTU4Njg2Zjg1ZjQ3ZSBsZWdhY3ktdHJ1bmsKKzIwOTg2IDBkNmY3NjBiNmVmMWE2NDQzNmIxOGZhNzExNzc4OTE1MGU4OWJjMmQgbGVnYWN5LXRydW5rCisyMDk4NyBmYWNmZjVmNTBmY2NhZjI4ZTlkZDkwMDZhNGFmNTY0YmVjYjVmN2Q3IGxlZ2FjeS10cnVuaworMjA5ODggMDM4ZTJmNzQ4MDBkOTc4MzAxZWU0MGNkODFkYjUxMmJkMzk0MmFmMyBsZWdhY3ktdHJ1bmsKKzIwOTg5IGNhN2UyZTFhZThkZjk2ZTU4NjY5MDJkNDJmNjM3MzIyMmU4Yjc0Y2MgbGVnYWN5LXRydW5rCisyMDk5MCBlODZkMzMwODFiYmE5NGJlOWQ3ODZlNjY4NWY5M2Y5YjU1Yzc0ZGRmIGxlZ2FjeS10cnVuaworMjA5OTEgYzk4N2RjZDg4MmI5YzczMThkODUxZjc2ZGRkYTAwYzFiODBiNzQ2MyByZWxlYXNlMjEtbWFpbnQKKzIwOTkyIGJkMWM0ZmU5NzdjYmRjNzU3MzJmNWYwMWNiZDFhMmZjYWNhMWY2ODkgbGVnYWN5LXRydW5rCisyMDk5MyA4ZDJiYmJiZjJjYjlmZGMyZmE4N2JhM2I4M2JkZmRiYzMzMjBjNDk3IGxlZ2FjeS10cnVuaworMjA5OTQgMTliNTA0ZmI5ZDE1NmU3YjE3Zjk4OTIyMWQxNWQ2Y2E4M2UwZmI0OCBsZWdhY3ktdHJ1bmsKKzIwOTk1IDUxMTU4N2FiMmRkMmU2ZjI4MmQ2ZmFkZTgwOTJlMDg4ZTNiMjVjZDkgbGVnYWN5LXRydW5rCisyMDk5NiAwMjQyNjc0NDE3NjFlOTQ0YmZhYWYzZGNhYzgzZDYzMTU1ZGE2MjUzIGxlZ2FjeS10cnVuaworMjA5OTcgNTM5MWI5ZDAyMmFjMTI3NTcxNTFmNzg3YjM0MWZjYjQwYmIwY2E4NiBsZWdhY3ktdHJ1bmsKKzIwOTk4IGVlNWYwMTY1ZTRlM2ViMWRiMGQwOTQ0Y2NiZmZiNWE2ZmRhNDk4MWYgcmVsZWFzZTIxLW1haW50CisyMDk5OSA0ZDYyYTJmZWM5MzBhMmE4ODQwMTc3ZDdjZDVkNWY3NTQxMzIzNTA1IGxlZ2FjeS10cnVuaworMjEwMDAgNmFlNjEyMjkxMmQyZWRiOWQ0MjUxMGI4ZjY4ZmVlMzBmOGRhM2RkOSByZWxlYXNlMjAtbWFpbnQKKzIxMDAxIDllYmU4NWU3MTU1MDQxMDRjMDBiY2RiM2RmNmU2OWExZDZmY2NkMDEgcmVsZWFzZTIwLW1haW50CisyMTAwMiBiOTk5NzlkMGY5ZTdjMDgwNGRiNDliNzVjMWE2OTY0NTI1NGY2OTEyIGxlZ2FjeS10cnVuaworMjEwMDMgYmQ5N2E0ZmRiNmYzYzVmODI2ZDY2NmVkY2JkYjc0MzU3MzQ5NDA0MyBsZWdhY3ktdHJ1bmsKKzIxMDA0IGMwMDM3MzE3N2JiYjZkNmE4NjhhNDZhYjM3OGMwMjdlMmI4YzhjYjkgbGVnYWN5LXRydW5rCisyMTAwNSBmYTIyNTVkMzE1MDBlOTJkNDQ3NjJkMzY4MDFjZTI5ZmM0OGU3ZmYxIHJlbGVhc2UyMS1tYWludAorMjEwMDYgYTAyMDg1ODcxYzNmZTRmYzY2NWEzZDExNjY2MWVmYTVjZTQ2MTg2YSBsZWdhY3ktdHJ1bmsKKzIxMDA3IGRmMWM1M2E4MTUwMjkxMjY1ZDY3OWNkNDNlYzU3M2ExNTI0OTY2MGMgbGVnYWN5LXRydW5rCisyMTAwOCBhNmY4YjJmYTJlMjAxODNlNTExMTk0MmZlYTdjNjc2YmIyN2EyOWY4IGxlZ2FjeS10cnVuaworMjEwMDkgOTE2MTlkN2RmNThiOWIwN2FlOTQ4MWRiY2RlZWIxMTUxMmM3YTVjOCBsZWdhY3ktdHJ1bmsKKzIxMDEwIDZmZGNlNzZkNDA2NjVlMGRkNjIzMjUyYzBkMjcwNDMzYTc1NzZkMjUgZGVzY3ItYnJhbmNoCisyMTAxMSBiZjE2YzNjYTU4MGVjNjQ3NzRiZTlmZmFjZjQ5ZjJiZTU5MDhlZTdjIGRlc2NyLWJyYW5jaAorMjEwMTIgNzNhMWU5ZjdjODNmMjE2NjE5NjNlNDAzYmM1NGZhMTlkMjkxMmFjZiBkZXNjci1icmFuY2gKKzIxMDEzIDhjNDVhNjRlZTgzMWI3ODkyYmZiN2I5MDY5MzYzNmUwMDBmMWQzMzYgZGVzY3ItYnJhbmNoCisyMTAxNCBlOTE5NDczMTc2YzgyMzRkY2I1ODE4NTIzNTEzZTM1MjEwNjkxN2YwIGRlc2NyLWJyYW5jaAorMjEwMTUgZWQ0MjUyYmYwODBjOTdlMWQ4Njc5MGU1MDNjNjcwZDAyNzFiNTNmYSBkZXNjci1icmFuY2gKKzIxMDE2IDQ5ZjBmZjZlYjRlYjEzNWRjMmE1ZWM1NDI2YTIzODJlZWMzZDI4NTUgZGVzY3ItYnJhbmNoCisyMTAxNyBjMDc0MzAyNWIyM2RiMzhmMWYzMDM4MmQ5OTI4NTQxNjBjY2UyOGRhIGRlc2NyLWJyYW5jaAorMjEwMTggNTQ2NmNjYmIyZjk3NDk4ZWJiYjBmNzU4ZmEyZGJjNGMwODUwMzI2YyBkZXNjci1icmFuY2gKKzIxMDE5IDViNTA1NmNmMTQ4OGM3NWNjNGMzYTNkOGYzNjE5YjAyNDQ0NWYyNjUgZGVzY3ItYnJhbmNoCisyMTAyMCBmYjkzZGZiZDgwNTIzNTdlOGQ4NTg0ZWZmODk3YmNkZmVmZjA5ZjNmIGxlZ2FjeS10cnVuaworMjEwMjEgYzJkNDlhNzMyMTY2ZGJiMWQ5MmU5MWRhYjgyZmJkYmUzYjU1Mzc4MSBsZWdhY3ktdHJ1bmsKKzIxMDIyIDk1N2Y5NDI4NjYwZjIyOTY0ZDUyZmFjMTYwZjBjN2FkMDMyMDJjZTEgbGVnYWN5LXRydW5rCisyMTAyMyAzY2JiODU3MjZmNmVkMjE0MjYzZDlmM2M4ZTExMTVkMGMxZGI2OGNlIGRlc2NyLWJyYW5jaAorMjEwMjQgZTBmMGY3YmM1ZGE3Njk0YmFjNzA1YWIyYWU5YmEwYmY5ZGVhODI0NSBkZXNjci1icmFuY2gKKzIxMDI1IDNhYjZjNDM0YTljODc1M2MyNGFiZmU1MmZkMWU3MDBmMjkxOWQyOWEgZGVzY3ItYnJhbmNoCisyMTAyNiA2NTMyMjEwMzk1NWEwNGQwOTBmMDg3ZTkwMTdkOGU4Y2ZjZDAyMTAzIGRlc2NyLWJyYW5jaAorMjEwMjcgMGQ0NmI3YzcxMDVlMmUzZWUxMTRiZmUyZTlmMmUxYzY1MTQ4YTEwOCBkZXNjci1icmFuY2gKKzIxMDI4IGE3ODI2ODQyNDg2OGExOTFhYmI0YWI0YzMwYzUzY2RjZjU1ZGQyYWQgZGVzY3ItYnJhbmNoCisyMTAyOSAwZTUxOGE1M2VjNWJlYWQ5YWRiZmNiOGQ5MWI4Njk1MmM0ZmM0ZmQ5IGxlZ2FjeS10cnVuaworMjEwMzAgZGNiMWMzYmQ4ZTBlODk3NjZkZmVjZTQ3MzE4ZWQ4OTk4YWY2OTc2ZiBsZWdhY3ktdHJ1bmsKKzIxMDMxIDk2ZDExMjE1MDEzYWIyMzMwZTk5ZWRjYzBmY2U5Y2Y4MjNmM2EwMDQgcmVsZWFzZTIxLW1haW50CisyMTAzMiA5NjMzMGNjYzg3MGE5NDQ0MTMwMTQ0MjczZDBkMmFhNzM0OTkyYzE1IHJlbGVhc2UyMS1tYWludAorMjEwMzMgZWE4MzA4ZmQwNmYyM2Q5YTM5ODg1NGNlM2NjZDBkYWI0NmUzN2JhOCBkZXNjci1icmFuY2gKKzIxMDM0IDg1OTNiN2UwYjY0NTQxNjNmZTMwODJjNDM2ZDhjOTg0M2Q1NzJlOTQgZGVzY3ItYnJhbmNoCisyMTAzNSA2NTY5Yzg0OTliMTcwZmE3YjUxZDBiNjY2NWRmMTljNzJhMGJiYmQyIGRlc2NyLWJyYW5jaAorMjEwMzYgZTc5YmI1YjhhNWQwZTlhYTUyNGZkMTFhNjIxYjdlNzRmMGMyNjY0NCBsZWdhY3ktdHJ1bmsKKzIxMDM3IDFiOTI3MDFhMGVkMmRkNWZiNDcyM2ZhOWMyODNjNDE5MzJlZjdhOGMgZGVzY3ItYnJhbmNoCisyMTAzOCBiNzNjMjgxN2NjMWFjMDIxY2M3MjBmNmY4NDkyYmE4MmRhMzBmNDk3IGRlc2NyLWJyYW5jaAorMjEwMzkgMTRkYzc1YTU2MDBhYzVhYmEyOGJlNjYwMWQxZDhkYmIzYTdiM2M2MCBsZWdhY3ktdHJ1bmsKKzIxMDQwIDgxYThkMTgzMGI2M2FiYzk4MWRiZDI2M2NjNmM5MTk5MTRjOGQzOTEgbGVnYWN5LXRydW5rCisyMTA0MSA2NWEyZTNlOGJmNTZkMTA5N2Y0MzA1ZTY4MmMwZThiZTU3OTJiM2E3IGxlZ2FjeS10cnVuaworMjEwNDIgNTg2ZmQ3OWVmNGQ5N2M4ZDc0OTE3ZDJjYjRmMGQxNmM4NmRkOGIwMiBkZXNjci1icmFuY2gKKzIxMDQzIDEzYThkY2E0YjA0MGFmODgwOWRiMDhmNjU0MTYyZDU4YTEwYTcxNzEgZGVzY3ItYnJhbmNoCisyMTA0NCBiMGZjODM2ZjJjZWFkMGIyMGE4MGRkOGRkMmZlNzI4MDNkZmYwZWFjIGRlc2NyLWJyYW5jaAorMjEwNDUgZTg5NzU1MGI0NzQ4NDBmNzYxNmI1MDNlMWFmYjExYTJmNDMxNDFjNyBsZWdhY3ktdHJ1bmsKKzIxMDQ2IGY4NDc1ZmE2YmEzNmRhNWM1YmE4ZWU4MTcwYjM3ZGU1NWVjYTQ3YTIgZGVzY3ItYnJhbmNoCisyMTA0NyBjNDAxNmFiZDZiN2YzZWExZGQ1MDVkNTZmODcxOWM5NzFmOTYyMTQxIGxlZ2FjeS10cnVuaworMjEwNDggYTNjMzI5ZjY5ZTNhNjBiZTQzYTYyYTgzMDAxMTZjYWY5ODQ4NGY2ZSBkZXNjci1icmFuY2gKKzIxMDQ5IDJiMDE3YjJjOGY3Y2I1MmZhNmE4NTQ2OGE0MGVmODUyYjY2NjI5YjQgbGVnYWN5LXRydW5rCisyMTA1MCBlNjZjZjlkNmFkNDNlZDA1NWZjOTMxNjcwN2RmNTVmYmZiMjg3NmI1IGxlZ2FjeS10cnVuaworMjEwNTEgOWEyNjgzMmRhMGY5ZTY1Nzc1OTg3MjNmY2MyZTI4NGE0MTg4OGE4ZSBkZXNjci1icmFuY2gKKzIxMDUyIGExZjM1NzY5NjI2NGIzY2JlZmFmODUzYTQ3ZDY1Mzg3MWViMDdjYTQgZGVzY3ItYnJhbmNoCisyMTA1MyA4Y2FmMjE5NzFmMzc4NzllY2UyOGY1MDg3MjZhYmIwNjc0MWRkZDY0IGRlc2NyLWJyYW5jaAorMjEwNTQgN2RlN2QwNjk0YmE4N2E0ZmZiNGMzM2U0YjUyZjRmNjBkYjU1ZTI2OCBsZWdhY3ktdHJ1bmsKKzIxMDU1IGEyMzJhNmMzZmM4YzdkZmE4M2UxMmY2NzM5M2FkMGI4ZWFmMjdiYzMgbGVnYWN5LXRydW5rCisyMTA1NiAxNWY0MzgxY2ZmMGYwYzY4YmY0ZTM3YjQ0MGEwYWNlNTA5ZWNiZTAwIGxlZ2FjeS10cnVuaworMjEwNTcgZDkzYjQ5Mjk4YWZkNmYxMjFmOTJhOWM3ZTdkYWNiZTIyNzMyMWFmYyBsZWdhY3ktdHJ1bmsKKzIxMDU4IDJlYzA4ZDZjN2QxMjA0Njk1NDdhMTA4Nzc4MmI1MTA4NjJlMjE4ZGMgbGVnYWN5LXRydW5rCisyMTA1OSA5OTliMTNkZTM5YTQyZGM3N2I3ODQ5NTNjNjk1MTlkMjY0OTRmMDVkIGxlZ2FjeS10cnVuaworMjEwNjAgMWMxODNhZTVjOTM0OTJiYzhmMmEzZGVlZmYxZWZlMWNkNTY5ZTc5MyBsZWdhY3ktdHJ1bmsKKzIxMDYxIDVhNmI4M2Y0MTUyN2I3ODBiMDZmNDI4YzdlNjkxYWQwOTQ5OWJmODYgbGVnYWN5LXRydW5rCisyMTA2MiBiYmFjMmE2YTVkMTZmYzI3MmIxYTdjYTYwN2FkMDY3MzdmMWExZTkzIGxlZ2FjeS10cnVuaworMjEwNjMgYWM1NDg5YTI1NDhkZTQ2MzU3YjBmZDc3NTFmMDljMTEyZTdhOTE4YSBsZWdhY3ktdHJ1bmsKKzIxMDY0IDg4OWRiNmQ1NTUwNjAxYzUzMmIzZWFiNDBjNzRhMzJhMTI2MThkMDMgbGVnYWN5LXRydW5rCisyMTA2NSBiZGUxY2Y1NzQwZWM2OWY4Yjc0NjhjZGVjYWYwZDI1MDAxOWQ1ZjE4IGxlZ2FjeS10cnVuaworMjEwNjYgMTA5OTIxOThjOWQ2N2FhNWRlZDI0Njc5ZTEwZTMxZjhlM2RkNWIxNCBsZWdhY3ktdHJ1bmsKKzIxMDY3IDYyNDcyNjU2ODA3ZWE5OGU0ZTZhMGE4NzUzNjY4MGMzZTg1ZDk1ODggbGVnYWN5LXRydW5rCisyMTA2OCA4ZTE4Nzc0MGFhOTZhNjgzMTNjZTVjNWEzYzMzMDg4ZGY4ZDY1ZjdjIGxlZ2FjeS10cnVuaworMjEwNjkgZjkwMWE3ZGM1ZmI0Y2I4ZjE2N2UxNzZiMGIyMTFmMWExN2QwNmZmNSBsZWdhY3ktdHJ1bmsKKzIxMDcwIDFmODNlNDE1NWZjZDE3MmI0NzM5NzgxOTQ0NDlhYjJhNTU4NmIwYzEgbGVnYWN5LXRydW5rCisyMTA3MSA3ZGU1ZDM3ODU3OGNkZTFkMDA3NmIwYTBlYmM3MmJjZDJlMTk0ZDM0IHJlbGVhc2UyMS1tYWludAorMjEwNzIgZTg0OTQ4ODY3NGRhMjY2MThkNTRhN2EyYzQ4MTJmZWU3NzBhNDI4YSByZWxlYXNlMjEtbWFpbnQKKzIxMDczIDQxMGJiZjVkOThmOTdhYTIzNTgxZjgwMjUzZTEzYjlhOGY4ZjAxYmQgbGVnYWN5LXRydW5rCisyMTA3NCA3MmIxNTczMWE4NzY5YTNkZTQ2ZTlkZjcwN2U5ZmU4NTkwOTNiMzc2IHJlbGVhc2UyMS1tYWludAorMjEwNzUgOTAxOTM3NTBjYzgzNzZiZjNjODAxZDU5MGFmZTVlOTBmZmIyMDY2ZSBsZWdhY3ktdHJ1bmsKKzIxMDc2IGYzYmFiOTI5ZDcwZWUwNzcwZjVkNjhmYzQ3ZDNhMmI2YTQ2M2RhZmIgZGVzY3ItYnJhbmNoCisyMTA3NyA2MjI4NjdlNGQ4MzJmYjAzYTFhMWQyNDA0ODFjNmYyZjI0YzViYTM5IGxlZ2FjeS10cnVuaworMjEwNzggYWRkMDk1NjM5ODUzMGRlNDllMzU2NTczODk4NzZjNjU5ZjllMTAwMCBsZWdhY3ktdHJ1bmsKKzIxMDc5IGJjMDViMGI1ZTA1NzgxMzJkYWI2NTI3NGI4YmM4YWQ5MTk4ZTZiNTkgbGVnYWN5LXRydW5rCisyMTA4MCBmZjJkN2MxODM3MTUyYjY5ZTE5NjgyZTBiZDMzNmUxYjU1ZmM1OTQzIGxlZ2FjeS10cnVuaworMjEwODEgNGNjYmI4ZTVmYjI0Y2JjNzM5NWZmZTE4OTRhYWQyMjcyYWNhMmViMiByZWxlYXNlMjEtbWFpbnQKKzIxMDgyIGI4ZmJmYTU2OWMzNDgwM2I2YzUwZTEyNTc3NjA1MTQzNDdkYTYyN2EgZGVzY3ItYnJhbmNoCisyMTA4MyA2YjZlMGIwZGI0Zjc1NTExYzdmNmYxZWZlMGI2MjFjNjYwZjZlOWVkIGRlc2NyLWJyYW5jaAorMjEwODQgYzkwYmRlOGI2N2I4ZGM4NzU3YmI5NjdmNGZiZGZkYzA5YmM4YmY1OSBkZXNjci1icmFuY2gKKzIxMDg1IGRhYmU3MTAwYjIxZjMwN2Q5YzE3MGU3NDFmNDhhNTFiZTRmNDMzY2YgZGVzY3ItYnJhbmNoCisyMTA4NiA0Y2MyYWY4YTJmNGU2NjMwZDFkYWQ2NWMwOTJlYWEwOTQ1MGI0NjcxIGRlc2NyLWJyYW5jaAorMjEwODcgNmZlNTZhOWIzMDIxOGY5MjA0ZDk0OGNlZDI1OWQ1N2NmMmQ5MmRiZSBkZXNjci1icmFuY2gKKzIxMDg4IGRkMDlmMTFmYTQwZGM5NWRmODVmMGI2OWIwMTk3YTFjN2UyNWZkZDEgbGVnYWN5LXRydW5rCisyMTA4OSA1ZmM2ZDAyN2U4NjExOGVlYzcxMWRjZTljYWEzNzQ1ZjdjZDVmMGUwIGxlZ2FjeS10cnVuaworMjEwOTAgYmJjZGJkOGY0NDY5OTUxYWMwNWUwMDkyYTkzOTJmNTg3YjY5YTA4ZiBsZWdhY3ktdHJ1bmsKKzIxMDkxIDdlNDU5ZmIzYzMzMjliZTJlZWViOTMxM2M5MzdkNDI3N2JhOWU4NjEgbGVnYWN5LXRydW5rCisyMTA5MiA1OTIxMDlmMmE2ZmQ2OTYwNjlmZWQ2M2QyY2QwYzdmOGNlNWRiZTU3IGxlZ2FjeS10cnVuaworMjEwOTMgNjI1NDczN2NiNjI5NjgwMTMzOTk2NWQzNGJhMjg4MDc3YWQyODlmZiBsZWdhY3ktdHJ1bmsKKzIxMDk0IDg2Y2NmOTNjYzk1MjI4MjJkNDQxZTdkN2Y5ODQyMjY2ZTE5NmQ2YTMgbGVnYWN5LXRydW5rCisyMTA5NSAxOGExZTA5Mzk3ZGFjOTVjNmVmZThjNzM1NDc4NTMxNTdlZjIyMzhiIHJlbGVhc2UyMS1tYWludAorMjEwOTYgNDEwMTY2NzUwMDJmZTRkOTlmMjQwZDkzOGE2NzkyNzExYWIyMDQzMyBsZWdhY3ktdHJ1bmsKKzIxMDk3IGEwMDFmY2I3NjE3NzlkZTQ1OWNkYTgyMzZmZDU3Y2ZjMWYxYTk3NzEgbGVnYWN5LXRydW5rCisyMTA5OCBiZDAwNTZlZTFhNmU0OTA1ZjM5MmQzM2NmYTBlZWYyZmI5MDJhZDQ0IGxlZ2FjeS10cnVuaworMjEwOTkgNmVhMzY2YTJiMmE2MzRmNGMxNTE2OTU2ZTFjMmRhNGFhMjA0ZDMwZCBsZWdhY3ktdHJ1bmsKKzIxMTAwIDIzNjdiN2EwMDFhN2U3ZTY5YTlmNGFmNjg3Y2Q4NDA4ZWQyZDdlMzggbGVnYWN5LXRydW5rCisyMTEwMSA3YTlhNjkyNzI5YjQwMzljZjc0MDMxZmUxNmIzYWQ5ZjY2Mjk0ZTE1IGxlZ2FjeS10cnVuaworMjExMDIgYzJmY2E3N2JiZjNhYjhkNmZjMjdiMWQyZWRlOTM1M2JiMTQzN2YyNCBsZWdhY3ktdHJ1bmsKKzIxMTAzIGRlN2Y5YWEwYTYzYTUyM2JmMjcxNjRiODQzYTU1OGVmZTUxNzYwYmYgcmVsZWFzZTIwLW1haW50CisyMTEwNCBmNzRlOTJjOGVhYzFhNjllOThmMTcxZTgyOGI3MmI0MzA3NjhkMDlmIHJlbGVhc2UyMC1tYWludAorMjExMDUgMDM3Mzg2YTJiMjQ3Y2JlOTMyMGYwMzg3YzZkZDgyYzYyMTI5NzliMSByZWxlYXNlMjAtbWFpbnQKKzIxMTA2IDE0MjEyOWU5YTk4NTY0OTA2MDc2ZDUwODJhNDMwY2MxY2FiY2RmYjEgcmVsZWFzZTIwLW1haW50CisyMTEwNyA5ZGRhMGMxMWUwMDY5OWE5NDQwMjhmYzFjMDE3ZjZkY2MyNmVhNWIzIGxlZ2FjeS10cnVuaworMjExMDggYTNjOWI0MTQwY2M1ZWM1YmZmN2EzYjNlMWQxNGE3ZmNkMDgwOTA0NiByZWxlYXNlMjAtbWFpbnQKKzIxMTA5IDAyMjQ4NzNjMGFjNzRiMDFiMDEzN2RjZDE1NTgxNjRmODRlOTYxZDkgbGVnYWN5LXRydW5rCisyMTExMCA1ZDZmYzE4YzQwMDk4NWRhZDc0OTE2YmFkNDk4MDY4NDMyNDg1ZDc3IHJlbGVhc2UyMC1tYWludAorMjExMTEgMTVjMDRmZTI0ZDg1ODY2MmRmNTMyZmUyMGM1NzIxYjNhM2JmMzI0MSByZWxlYXNlMjAtbWFpbnQKKzIxMTExIDgzNDU5Y2MxOTFjMWM5YzhjYzZiMDhhZGE5OWMwMmYwYWY2YWQ1NGYgcmVsZWFzZTIwLW1haW50CisyMTExMyBjNTc4Yjc1YWQ2MmZkZWQ3MGI2NGFiNzM1MWZkNGEyODg2OTU5N2RhIGxlZ2FjeS10cnVuaworMjExMTQgOGNmNzJiMTg3YjNhYjk4NjZlOGQ4NDFkZjkyZjE4NGE3NjBlNTI4MiBsZWdhY3ktdHJ1bmsKKzIxMTE1IGJlMmRkYjI1YjY5OGIzOWE4NzljNDY0NTE2MTZhZWNhOWJiMmIxZmIgbGVnYWN5LXRydW5rCisyMTExNiBlMjFjZDQxMzVmM2RiMWFmMjNiM2U1ZjcxMGIwN2Q2MzgwMzNkYmE0IGxlZ2FjeS10cnVuaworMjExMTcgMDk5YWU0OTE4MDY5YTViYjk1MDgzNjQ0ODc2OGMxYzUwY2I0ZDIyMSBsZWdhY3ktdHJ1bmsKKzIxMTE4IDdmNWQ4MDQ0Zjk5NGMxZjUxNDA2OTUzZDU4NzkzZTJjMDcxNTlhYjIgZGVzY3ItYnJhbmNoCisyMTExOSBiMTQwYjc4ZjE3ODVjYmE4ODRkNWJhNWNiMTFmYzhlMDNlOWRjOGJlIGRlc2NyLWJyYW5jaAorMjExMjAgYTYyMzFmMjRkYmI2ZTBhNDc0ZTQ4M2ZlZTE1ZDAwODU5NzM4OGJkMyBkZXNjci1icmFuY2gKKzIxMTIxIDllYjQ2OWE0MzE0NDE3NjhkZTgxMTEyMTA1YTM2ZjFmNjFiZDI4YjMgbGVnYWN5LXRydW5rCisyMTEyMiBlNjRjNzAzMWQ5NGZjYjcyYTQ0NTJjMzIwYzFiOTFhZTUyNzZiNjhlIGRlc2NyLWJyYW5jaAorMjExMjMgYTQ3NjNiZmVkOWYwZTkzMDc1NTNiOGMyNWNiZWY1MzNmOWY5YTBkNyBsZWdhY3ktdHJ1bmsKKzIxMTI0IDMxY2QwZGIwZjA5ZmNkOTk1ZDE5ODU4MTQ5MDkyMWY5YzY0YjFjNWIgbGVnYWN5LXRydW5rCisyMTEyNSAyZWNhZjllMjFhMDQ2ZDZmZTkxODQ5YjhlY2Q2NTFhYjdhMGMyOWU5IGxlZ2FjeS10cnVuaworMjExMjYgNzUxN2ZjYTMyMjYyY2JhZmQzODljOWMwMjI0MjIyN2ZlODVjODZlNiByZWxlYXNlMjAtbWFpbnQKKzIxMTI3IDY5OTEwMTk0OTU5OTQ0ODQwMTM4ZmMyMGNjOTQ5ZWM1Yzc3ZThjNTAgbGVnYWN5LXRydW5rCisyMTEyOCBjMDYxNmUwOTY0MzBmMjBkNzExYzQ0OWY2Mzg0MzVkNGVhYjRlNjA0IHJlbGVhc2UyMS1tYWludAorMjExMjkgZTQwNjgxNTc4MmFmZDQ3MWI4YTRhNzU4ODdjNDQxOTg2NjhiZGU0OSByZWxlYXNlMjAtbWFpbnQKKzIxMTMwIDQwZDc5NGI1MDQxZGYwNDE0NzA1MWExNjc0YzJmODExZDRkMjIyNDggZGVzY3ItYnJhbmNoCisyMTEzMSAwMjUzMDc3N2I1MjE4ZDQxYjk2OTYwZmM5Zjk2ZWFlZmQ4MTBhZDlhIGRlc2NyLWJyYW5jaAorMjExMzIgMDUwNTRiZDc5NTliNjQ1MTU4OWQ3ZGMwM2YwNGFiMDQ0ZjhhNDM4ZCBkZXNjci1icmFuY2gKKzIxMTMzIGM2MTY2NTU3ODJmMWFmYzE5MDg3OTA1ZjYxNDFiNmEyMTdiNjNiNjggZGVzY3ItYnJhbmNoCisyMTEzNCBjMjlmMzEzNWEyMGNiMDQ0NDk1NmNiMTU0ZWM1N2VjNDlkNTc5YWU1IGxlZ2FjeS10cnVuaworMjExMzUgMzMzYTJjNmViNzQzOGE1MTcxNWU1YWM4MzJhMjg4YmE4ODRlY2Q2NiBkZXNjci1icmFuY2gKKzIxMTM2IDE2NmI3YjM2NTg1MTkzY2E3ODZkM2Y3ZDc0ZGUxNWJiNTA3NGMyNWQgbGVnYWN5LXRydW5rCisyMTEzNyA5NTIyOTc2ZDFlOTk2Y2NjYjM1NDEzOWY3ZjAzZDEzNDQyZTg5ZTY2IGxlZ2FjeS10cnVuaworMjExMzggYWM3ZGNmMGU1MTA0YWZhMTQwZjQzN2JlMDVhMTY1NGJjM2QyMWMyMCByZWxlYXNlMjEtbWFpbnQKKzIxMTM5IDFmMTM2NDgwNjU5OWNhMzFlZThiZDUwYjFlZjI1OTg4NzhjNDdiZDIgbGVnYWN5LXRydW5rCisyMTE0MCA5ZTllZGRhYzI1Yjg1OGY2ZmMwYTFlZDlkYzAxMTM1NmExZGI3NGVjIGdlbi1icmFuY2gKKzIxMTQxIDI3ZGQ5ZWMzMTYyY2Q4Y2FiOTRiZDczNDA5NGUyMDQ1NzAzNTFlYjMgbGVnYWN5LXRydW5rCisyMTE0MiAwYWY2ZWFmOWY4OWVlZjRhOWRhZWQxNGQzZjM1OTJlZGM5YjgzMjZhIHJlbGVhc2UyMC1tYWludAorMjExNDMgMzY0MjQ0MjY5NTA2M2E5ODEwOTJlYTRlOTc3NmI5ZTVkZjIyMTY5YSBnZW4tYnJhbmNoCisyMTE0NCA2YWNiYTllNDc1OGNiMDE4OTBiZTA2OTE3MWY4ZGVmYmZjYTE2NjM3IGdlbi1icmFuY2gKKzIxMTQ1IGUzMjgyMTg1NDZiNTk4YmZlNDZmNjg5NDUyYWEzYmYyOGZhODYxY2MgbGVnYWN5LXRydW5rCisyMTE0NiBiN2YyZTIzMTI2MTBlYzRmYjM1MWQ3ZGVmNDNjMTA4M2M4MmIwMDFjIGxlZ2FjeS10cnVuaworMjExNDcgOWQ1MzNhZTU3NGQyMGQxNGMzZGNhZDJiNmJjMDQzNmI2NDcwMGY2MyBsZWdhY3ktdHJ1bmsKKzIxMTQ4IDhlZWEyZWZiMzRjZDFmMTZlNmNiZjcxMjcyNzVjOWU1MTcxYTI5NjggbGVnYWN5LXRydW5rCisyMTE0OSA4NWUzZmExZWI4MzZjODgyMjBlZmY0YTBiNzVhYTk3MTc3ZDJjYzI3IGxlZ2FjeS10cnVuaworMjExNTAgZTg4N2Q2ODYyZjc3YjQwODMwZDc0N2YxYTA1YTE2YjQ2OTBhY2EzZSBsZWdhY3ktdHJ1bmsKKzIxMTUxIGI0OTk0NWU4MDQ0YTgwNmZiMmJhMjhjNTAxNjg4ZDVmZmJmY2RjYmYgbGVnYWN5LXRydW5rCisyMTE1MiBlZmY4ZGE3YzNkY2I5YmViMGU4NWJiZmY4MDg1NzI5MmM3ODUwOTQ3IGxlZ2FjeS10cnVuaworMjExNTMgY2FjMjA3YjNhNDNmZDhhODk0NjRkZDJjZTBjYWU0YzNkMjNmZDg5OSBkZXNjci1icmFuY2gKKzIxMTU0IDdhMzM4ZjUzN2U0MmJiMmEzZDFhYjRjNjBkMTBhNDAwYTM2NTE5MWQgZGVzY3ItYnJhbmNoCisyMTE1NSBhNDQ3ZmM5NDcyOTk5YTE2Mzg4MDI2NGYzNTQxOGM5ODlhODVkOTg3IGRlc2NyLWJyYW5jaAorMjExNTYgMjhjNGI2NmVjYmM1OGRhYjRhMzkxNmE3OWNhZDU5ZmNkNWY5ODM0MyBkZXNjci1icmFuY2gKKzIxMTU3IGE3YzJmZmViYmQyNjZmYWZiMDE0ZTgxMjQ5MWRmNTExZjM5NjA1NjIgcmVsZWFzZTIxLW1haW50CisyMTE1OCA0Y2IzNDMxNGJkOTcwOWMwMDU2ZjczM2VhNzMyNDk5Mjk4ZjZkMTU2IGxlZ2FjeS10cnVuaworMjExNTkgNTQxZTA5NWE2ZWQ2NTE2OTI1ZTY2MWY4YjliYzhjN2Y3MWVlNzZjMCBsZWdhY3ktdHJ1bmsKKzIxMTYwIDQxOGNhYmNiNzYzZjBhYzJkNTViMGZhNWQ3NmM4MTgzZTJkOThlZGYgbGVnYWN5LXRydW5rCisyMTE2MSAzNTRhNGRmMDllMzg1Yjg0OTNlMDJkODMwZTk1YTdhNWM3YTlmMDA1IGxlZ2FjeS10cnVuaworMjExNjIgMzFjYjVkMTczMTFhYjUyODkwOTExZjcyNWVhYTUxZGUyYzIyMWIzZCBsZWdhY3ktdHJ1bmsKKzIxMTYzIDAxMTZlNDU5ZGFkMmNiZGU2ZTkyMjY0ZGYxNzdkYzA2NTZmMWQ4MjEgZGVzY3ItYnJhbmNoCisyMTE2NCA0ZTMwMTlkYTkxYTkzNjVlYmE1MTU3MjJiMjhkMGU4MTQyMGJhMWQ2IGRlc2NyLWJyYW5jaAorMjExNjUgMjJmZWJhOTY1OWNlNzkyMGRkNjEyY2Q4NTM2MmVjOTQyZjM0MWE5OSBkZXNjci1icmFuY2gKKzIxMTY2IDExYWMwMmMwMzY5MGQ0MTQ0YTBiZmVmNTI1YTdkNDRmNWMzNGQ0NTkgZGVzY3ItYnJhbmNoCisyMTE2NyA5N2EyMDgyOTFjZDhiYjA4NDliZDU1Zjg5NTcxYTY5NDgzYzY1NDU2IGxlZ2FjeS10cnVuaworMjExNjggNDdjOWQwY2I2ZTMxNGRiYjc5NmQ5ODEzYjM0NzEwODBiNjA2N2EyNCBsZWdhY3ktdHJ1bmsKKzIxMTY5IDc2N2M0YjI4MjEwYWRlYjRlZTI4YzNkYWI2ZmE2YmViYzBhNTBjNTEgcmVsZWFzZTIxLW1haW50CisyMTE3MCBkYmU4MmE5YzZmN2Q3M2Y1OTkzYzQ1MTA2MzY4OWNiNzk5MjNjOWI2IGRlc2NyLWJyYW5jaAorMjExNzEgODA2NDdiODJlMWIyZDg3NDZjN2NmYjcxYWNiMGUxZWQ1NTJjMTEyMCBkZXNjci1icmFuY2gKKzIxMTcyIDBlN2NhZDUxY2Y2NjUzMGU4YTRhZDdhNzcxZmI0YzgyMWVhOWY1YzkgbGVnYWN5LXRydW5rCisyMTE3MyBhNzFmZWU4NGI0ZTQ5MDFiOTU3MjQ0MjBiNWUxODhiZjU3MjMxYTQ5IGRlc2NyLWJyYW5jaAorMjExNzQgOGNkNGEzZjAxOTUyMWQ5YTdkNDc1NjA2NDEyNjIxYTJjMGY5ZmI3YSBsZWdhY3ktdHJ1bmsKKzIxMTc1IGI1MWI0YzJiZjVmOWVhZmE4OThmMDBlODNjMTkyODJiOGYzYjJkOGUgbGVnYWN5LXRydW5rCisyMTE3NiAxN2IzZWU5Y2M0M2ZhMmY5MTM1OThjM2ZiZGUxM2RiMDM3MGZkNGM4IGRlc2NyLWJyYW5jaAorMjExNzcgZTFiMzA2MjVhNDY3NDA4OTMzZDQ4YjA2NTRkOGJlY2Q0NjdkNjIwNyBkZXNjci1icmFuY2gKKzIxMTc4IDJjZTcwYTg4M2FmNmE3YzA2MGUzZTc1NzliOTAwYjNjZWVlMDBhNmEgcmVsZWFzZTIxLW1haW50CisyMTE3OSAzMWMxMWFiMWEzZTg1NzRlYTQyYjJlZDY0ZmY1YzUyMWZiNTNiNDY5IGRlc2NyLWJyYW5jaAorMjExODAgMDQ2M2I5ZTU3MDRlYjI4Nzg1N2U4Y2MzMjZkM2VkN2ZlOWE3MTA5ZiBkZXNjci1icmFuY2gKKzIxMTgxIDdiYzQ3M2IyYzY1NDI0MzA0Mjc4NGI4YWNhMjY0Y2MwMjVjY2RjODkgbGVnYWN5LXRydW5rCisyMTE4MiAxYmNlOGJiNDFkYmQzZjA5ZDcwZTAyZjkwY2Q4MjMxNmYwOTliOTZiIGRlc2NyLWJyYW5jaAorMjExODMgMmU0YzZiYTdkMDljMTRkMTBiODE0ODc3YzQ4ZWU5YTBhNmFiZGYxZSBsZWdhY3ktdHJ1bmsKKzIxMTg0IDljZThhOTk1YmYxMmU1ODNkNDc0NGE0MzNlMmE4ZWViNmJmYjNlZjEgbGVnYWN5LXRydW5rCisyMTE4NSAwNjc2ZWEyZmY4NjdhOThkYTQyZDllNWQ4ZmRjZDRhYWZkOTkwYWQ1IGxlZ2FjeS10cnVuaworMjExODYgNTRmNzYyOTNkOTI2OTg1MTVkNTAzMzdjODkyNWQzNDc4YTkyNWE3NCBsZWdhY3ktdHJ1bmsKKzIxMTg3IDhlZjg0YjgzZWMxZmE0MzU1MTRjYjE1ZTBmOGUwYjdhYjU1OTE2OWMgbGVnYWN5LXRydW5rCisyMTE4OCAxMjZhNjZiMzQxM2NkMmJiZmY0MmE2N2ViNmY4MjJiOGYyMTZkZTljIGRlc2NyLWJyYW5jaAorMjExODkgYjFmNjMyODBiMmMyOThlYzkxMTUxOGZlYzg1ODFlOGFmY2M4YWQ2NiBkZXNjci1icmFuY2gKKzIxMTkwIDY1MWM2NjQwNmJmODIxMWMwYzEwYmQwYzVlOGU0ZjJhZWI0YjgzMTMgZGVzY3ItYnJhbmNoCisyMTE5MSBkNjM5YTFlMWYxZjQ4Zjg4ZmU0M2MwNzFmMTUwN2ZjMTY2MDdmYWI5IGxlZ2FjeS10cnVuaworMjExOTIgN2MzNDg5OWFkNTA2MjNlMmMzYjUxZDcxMGMzYjU2ZDk4YmI5NjcyNCBsZWdhY3ktdHJ1bmsKKzIxMTkzIDBlYzAzZTFiZTU1ODhlYjdlYWNmMmMwZDg4YmRjNTY4N2FhNDk1N2EgbGVnYWN5LXRydW5rCisyMTE5NCA0ZDFjNzg0OTMyMjFhYmFhMzIxYTZkOTAzNGYxNDJhODcyMjdhOTQzIGxlZ2FjeS10cnVuaworMjExOTUgZTViMjczZTk1Zjc0Yjg0OThjODNjOGFjMzc5YmZhOTViYTM0NDM0NCBsZWdhY3ktdHJ1bmsKKzIxMTk2IDMxYmQyNWEyZDhjNWI4ZDdhZjcxODk1NWQxNmMyYWZiZjA0ZmI3MzEgbGVnYWN5LXRydW5rCisyMTE5NyA2ZmJjNWYyMDFhMWY4NzYwY2U3YTE1MWU3M2U5ZTU4Y2Q3MDk2ZWUxIGxlZ2FjeS10cnVuaworMjExOTggYTY2NTcyYWM3MWU3ZGM3ODRiOTUxYTc5MjcxNzc2Y2ZjODdhMTI3MCBsZWdhY3ktdHJ1bmsKKzIxMTk5IDAyYWExMzNkZWI1MzhlNGU4N2YyZjQxMGQyZjk5Y2Y5Y2M5YTFkNzEgbGVnYWN5LXRydW5rCisyMTIwMCBmOTI2ZWIxZjU3NzAxYzIzMDEwNzJkMTA3YjlhZWZkYzM5YmFkMGZjIGxlZ2FjeS10cnVuaworMjEyMDEgZWZiNTA2OWNjNzRmZTcwOGMzOGJmNTYxZDM3YWQwYzJkOWU5NDhkZCBsZWdhY3ktdHJ1bmsKKzIxMjAyIDBiYWQ0MmU1NjMyMDQxNWMyZDEyNzUyYjFiNjdkYzA0YWM4MTA3YzggbGVnYWN5LXRydW5rCisyMTIwMyBjZjZhODY0Mzg3ZDM3ODgxYWQ3Mjg1ODY0M2Y2ZmFmYTk3ZjRlZTg4IGxlZ2FjeS10cnVuaworMjEyMDQgYzVhYzZmMDU1YzYyMzVjMjQ3YTA0ZGIzNDg5MTZjYmQyY2QwMTdhOCBsZWdhY3ktdHJ1bmsKKzIxMjA1IGQzZTQzOTlmZTJmOTQzMTYxNWFkYmFiZjZhNDNiN2RmNjRlYjhlNzYgbGVnYWN5LXRydW5rCisyMTIwNiBjNjM4YTdhMmZlNzdiOTMyMjJmMDdmYzBkZmIyODBkNmYxZDUyOWZhIGxlZ2FjeS10cnVuaworMjEyMDcgNjc3MWRhYjFmZTMyZmYzOTA4MGM2YmU0NDg1N2VmZGY4YTNmMWIyYyBsZWdhY3ktdHJ1bmsKKzIxMjA4IDM0MGU5MzAxZTg1YjMyNGZjNWMxNTU4MTFiYjBmYzk3Yzg0NWEyM2YgbGVnYWN5LXRydW5rCisyMTIwOSAxMmQ3ZDRkYjY5ZjJmNmYwNTE2YWZlMGIyZDUxYjEwZDY5MzViOThhIGxlZ2FjeS10cnVuaworMjEyMTAgMDlhMDhhMWU0N2Q2OGFhNzZmY2ZmNmIwNGYxMDdhYTE1YzU5N2IyOCByZWxlYXNlMjAtbWFpbnQKKzIxMjExIGU3ZjdlZWYxOGM5ODYzY2MzYTc2Y2MxODY2OTViOTRjNDAyZWNlMGMgcmVsZWFzZTIwLW1haW50CisyMTIxMiBiNzMyNDFlNTA1NTY3MGVlNGY0OTI4YmU0NjMxOGIxNzliMDNmOGU1IGxlZ2FjeS10cnVuaworMjEyMTMgY2M3NjMxZmJmN2Y5MmUxM2Q0ZDRhNGFlN2JiOTY5YTk1Mjc4YzlhOSBsZWdhY3ktdHJ1bmsKKzIxMjE0IDgyNjAwMGE0MDg2NjUyMjhjNjc1MDBkZGQ3MGI3MzAwZGQ1MDY5ZjQgbGVnYWN5LXRydW5rCisyMTIxNSAyZjIxZmViZjZkNDYyYjdmNzRiNWQ2NzliZWMzOTY0OGM2MzY3ODAzIGxlZ2FjeS10cnVuaworMjEyMTYgZjVhYjM0NzlhY2Q0ZDUzMmE4MmZlZDhjODIzNDAyNzVmNTNmNGIyNCBsZWdhY3ktdHJ1bmsKKzIxMjE3IGMyNTg3NmE1MWYxYjU5NjMwZmRjMGYwOTk4N2RhYWFkOGNhYjEyZDEgbGVnYWN5LXRydW5rCisyMTIxOCBhMmU2ZmZmNDcxYjAyNTMyMDA5NjdkYWRjYTE0ODk5YThhOGVmOWUyIGxlZ2FjeS10cnVuaworMjEyMTkgMTVhMjRlMGJmOTRmMjJkMTJhNWY4NThiZDE1YjU1OTNjZDljNjM3MiBsZWdhY3ktdHJ1bmsKKzIxMjIwIGQxMjIxZmJkZDg1ZDhjZGY5NGNkYTU2ZDI4NTgwNWRmN2Q5ZDhjOGEgbGVnYWN5LXRydW5rCisyMTIyMSBiZDM5OTNjNDk0YTFiZWVhMWE3YjZlYjQzNTE0MjE2MWEyNzkyNjFhIGxlZ2FjeS10cnVuaworMjEyMjIgZDNiMTk1NmUzZGUwYzEzZWMwNGQ2YTg1N2FiODllZWZjYWU2ODliMSBsZWdhY3ktdHJ1bmsKKzIxMjIzIGFlMGYwOWM3YzFlOTExNjA0OGM3YzdjYzE1MmI5ZWJmYjM4OTIzYzYgbGVnYWN5LXRydW5rCisyMTIyNCAzYTU4MDI3Y2FlNGU3ZGRmN2Q0NjM5Mzg2YTZhNDgwOTg4OGI4N2IwIGxlZ2FjeS10cnVuaworMjEyMjUgYTc4MjU0NDFjYWE0YTc3N2E3ZWMwMzRjODRjNTBhZDZjMDcyODhjYSBsZWdhY3ktdHJ1bmsKKzIxMjI2IGE0MzhhYmEyZDEzN2I3YTU5MTMyNzM2YjU5N2E1NDNjMGQ0ZWVkNmIgbGVnYWN5LXRydW5rCisyMTIyNyBhZWRjM2U5MjBkZWJjYWRhOGQyZjhlMTNmYzhmY2UzMjFjZDIzYjM2IHJlbGVhc2UyMC1tYWludAorMjEyMjggOGU1YjUzN2Y4N2ExOTE4Y2MyNzUzYTg2MjFkMzlhOWRkOTExNjU0MCBsZWdhY3ktdHJ1bmsKKzIxMjI5IDE5YmM2M2E4NDQzOTBlNGE4MmI3OTFiZTUyNGEwMGI2OTMxMDdiYmYgbGVnYWN5LXRydW5rCisyMTIzMCA1OTY1MzM5NDI5YzljZDIyZmU1YjA1MzAwYTY0NmMzMTAzY2FjYjJhIGxlZ2FjeS10cnVuaworMjEyMzEgOTkwYjczZmEwNzRjZGE0Y2FiMzEyZWI4NGU2NjU5ZTgwNmU3NzY3OCBsZWdhY3ktdHJ1bmsKKzIxMjMyIDM2ZTgyNTY2MGEyNDUxYWNjOGI2ZTU1MWU1YzhiZGQ5NTkwZjVjMGUgbGVnYWN5LXRydW5rCisyMTIzMyA5YTRjYWMyYjhiOGZjOTg2NzAzMTJjOGFkNmQ4MzUzZWU2NDE1YzEwIGxlZ2FjeS10cnVuaworMjEyMzQgMWE2YjhmNjlmZWQ2MjE4NGZhMTc1NmE3NzdkOGY0MTBjMDMyNDY5ZiBsZWdhY3ktdHJ1bmsKKzIxMjM1IDVlNDM1NzNmMGRmMWYxOWE3Mzg5NjQ3ZDEwMTZjNGNiMWVkNzA2M2UgbGVnYWN5LXRydW5rCisyMTIzNiBlZDM3NDVkYTc0MTkyODA4NmM3NGI5NjQ2ZDI2MGIwM2EwZWRjZjI0IHJlbGVhc2UyMC1tYWludAorMjEyMzcgYmU0MmNlMjk1ZWRiNTNhMzU5NDg3ZTA0ZGFiY2U1MDg2YzEzOTFkNiByZWxlYXNlMjAtbWFpbnQKKzIxMjM4IDU4NzM2Y2E5MTQzYzBmNmY3NWZjZDNiODkwMDMzYzg4YjUyZGE2NGQgcmVsZWFzZTIxLW1haW50CisyMTIzOSA5MDA1OTQzYzc1NGVlOTIwYTBiNjgyZjU2Njc2YWU5Y2IwNDE0MWVhIHJlbGVhc2UyMS1tYWludAorMjEyNDAgNGE4NzI2Nzc5YmJhZjczYTM2ZjJhYzFhMzE4NmY0YmEyOWY5N2RhMSByZWxlYXNlMjEtbWFpbnQKKzIxMjQxIDI1NjQwNmI1Y2YwYzRmNGI4ZmQxMzhiYjNiZGZkNDQyZmZkMWZiMTEgcmVsZWFzZTIxLW1haW50CisyMTI0MiA3NmMzZmY1N2ViNmQwNjZmMjE0OTA0MDRhZDhjNzU0YzgwYjE4Zjc0IHJlbGVhc2UyMC1tYWludAorMjEyNDMgNjI1M2QxMjhhNzhiZjkyYzc2N2Y1MGQ3MzM5ZThkNGNiOTM5NDNkNiBsZWdhY3ktdHJ1bmsKKzIxMjQ0IGUzNzA4Y2IxZTBkMDdjYjljNWNjYzFkMDEwYjIxZTIwNzA4NDJjM2EgcmVsZWFzZTIwLW1haW50CisyMTI0NSA4MjY5OTQ5OWIzOGVjMWQzMDQyOWM4ZDI5OGMxMWExYzJhMzhlZTdhIGxlZ2FjeS10cnVuaworMjEyNDYgNTQ2Yzc4NTJiYWM1NWNkOTIyNjc3YTM3NWQzYjlhOWQxMWRiM2EwZCByZWxlYXNlMjAtbWFpbnQKKzIxMjQ3IDBkNGFkODllZDMyZDg3ZWNhZWRiM2U4YTVkYzEzYjIwOTkwMWQ3MjcgcmVsZWFzZTIwLW1haW50CisyMTI0NyA3M2RlOTRhNzIyZDIwNmE0NWMwYjQ5ZDMwMTFjNjI5ZWFkNGQ2MmIxIHJlbGVhc2UyMC1tYWludAorMjEyNDkgMDc1N2I2Yzk5MzA0MTQzN2QxZmIzMDA4NDQ2YWJkNTQ4NDNhMGViMSBsZWdhY3ktdHJ1bmsKKzIxMjUwIGY5ZDEyN2FiMzJlYzlhYWQzMzcyODgwNjA2NGVlM2EwMzY1YWE2OGMgcmVsZWFzZTIxLW1haW50CisyMTI1MSBiNjY0YjAyYzNlOTFjZjQ5ZTJlMTJlZWYwZWM4NzM5MGEwNjJlMzFhIHJlbGVhc2UyMS1tYWludAorMjEyNTIgNDA5YWJmMjI1MTg1ZDIxZDM3MDRiOTMxM2JmMDRlMGI0NjEwOWI3ZCByZWxlYXNlMjEtbWFpbnQKKzIxMjUzIDA4NjE5YmYxODI5OTA0MjM3ZTdhMGNjOWRhOGE3ZjkyZWNjODkzNTYgcmVsZWFzZTIxLW1haW50CisyMTI1NCBlMWRkNDYzMGVmM2I5MWJhZDdmMjFkNTgxZDM5YWU2OTQ4NzlkMTdmIGxlZ2FjeS10cnVuaworMjEyNTUgNjk5MWRkYWZlMzgyOGEyZGMxOGZlZDVkMmY4YTNhZDNhOGRjZmUxMyBsZWdhY3ktdHJ1bmsKKzIxMjU2IDZlZWYyMWU1MjNiNjQ1Njk0OTE0Mjc4MmIxZjhjNTNmMWUzNjU2OWUgbGVnYWN5LXRydW5rCisyMTI1NyAzYTg3MzJjNjc4OThjNmRhYTRjZmEwYWE1ZDQ5ZTA0M2RiNWFjNzQ5IGxlZ2FjeS10cnVuaworMjEyNTggYWNkM2RhNWQ1NjNjYzgyY2ZiMDc0MGE1NWM4NDRjNmViNmEwMjg0MyByZWxlYXNlMjEtbWFpbnQKKzIxMjU5IDQ5NzUxNzNlMWEwMmQ4MmFlZDg4OWMwNzMzZjZhNWU2Y2M3Njg5N2EgcmVsZWFzZTIxLW1haW50CisyMTI2MCAyMjA0MDVjMDcyMzI1OTNhNGNkOWE3MTI3NGMzMjhkYjJlZmJmZjBhIGxlZ2FjeS10cnVuaworMjEyNjEgODNjNDc0OGI5MzkwZThjZTQyNDQwZmEwNThmMDMxOGM5YTc0YzVmZCBsZWdhY3ktdHJ1bmsKKzIxMjYyIGFhOGUyMzhhYjBhZDc2MzRlN2RkZDY3ZGE5ZjFjYTc4YWEzMzQxYWEgbGVnYWN5LXRydW5rCisyMTI2MyBhNGRjMjFiNDc3NGRjOTk3ZTA3MDM5ZTFiZWJhZDc5MTExYWIzOGU1IHJlbGVhc2UyMS1tYWludAorMjEyNjQgN2QyZTZlMWQ2MGNlNThiYTRmOWRmZjA5ZWFkMWU2YjcwYzgzNWNjMSBsZWdhY3ktdHJ1bmsKKzIxMjY1IDRlYmQyOTJjOTc1ZjgwOThmMWY1YWI0YTljYjI3NTljODcyYTY4ZmMgbGVnYWN5LXRydW5rCisyMTI2NiBmMDM2MTgzNzMyM2Q2ZDZhNDgyNzQzMTJjNGJhMWQ4M2ViMjU2ZDE1IGxlZ2FjeS10cnVuaworMjEyNjcgYjg5M2QxMjA0NWNiNDYwOWVhMjIxMzVmNTdjMmRiNjVlYmYxODU4YyBsZWdhY3ktdHJ1bmsKKzIxMjY4IGY5MjYxOTA0Y2ViYmM1NTlhNGNlMDRlYWM2MjI3MTY2ZjY0Y2EzYjIgbGVnYWN5LXRydW5rCisyMTI2OSBkOTIzYjNjOGIxNTI2OWFjZjI3YzdkMTAwMTg4ZWJjNzkyNDliNjUzIGxlZ2FjeS10cnVuaworMjEyNzAgZWFlNjZiZjI0ODc4ODhiZDQ2OTE2NjI4Y2NmM2QzNTcwYWU1MjcyNiBsZWdhY3ktdHJ1bmsKKzIxMjcxIGZlNDA3MWJlZmY0MTg2OGY4YzBmNDY5MDRjZGUzNDMxYzg3YmViNTkgbGVnYWN5LXRydW5rCisyMTI3MiBlYjUyNDMyMmExYzMxYzYzNTI5NzlkMjU1YTUyMTUyMzI2N2FhZTYzIGxlZ2FjeS10cnVuaworMjEyNzMgZjgyODdkODRiNzU1MTcxNmY1YWM4YzIxZTM1YWQ1NTJkOGNkZWVkNiBsZWdhY3ktdHJ1bmsKKzIxMjc0IGYwMjYwNWI4ZmRjMWU1OTcxNTYyMWY4ODFmNWRiOWUwODFlOGNjNWIgbGVnYWN5LXRydW5rCisyMTI3NSAwMzdjOGJlNTA1ZTA1OWQ3NzRjODczNDVmNTExNWYxNThjYmQyM2ZiIGxlZ2FjeS10cnVuaworMjEyNzYgYTFlZjQzYTZkNmUxMzEzZjQ5YTkxN2RhNjYxZjliYmJjZjBiODRlNCBsZWdhY3ktdHJ1bmsKKzIxMjc3IDA0MzljODJhOGZmNDc1NjEzMDY1YWJmNjQ0ZmQ2OWM1NGVhNjdiOTcgbGVnYWN5LXRydW5rCisyMTI3OCA0NTE3MDkzZWI5OWVhY2JhOGFkMDhiMTJlZjNmMGYwYTk1MWY0YjMwIGxlZ2FjeS10cnVuaworMjEyNzkgZTRkNjU1YWU5MTQwZTMxM2Y5OTUzMzkzZDliZjk3NGQ5YjRlMjZjMyBsZWdhY3ktdHJ1bmsKKzIxMjgwIDQ3NzE3ZTU2NjdlYjE1ZjE4NGUwYTc3MmQzMmI1ZDdjOGFmNWZmNTggbGVnYWN5LXRydW5rCisyMTI4MSAyNGMyOWIzNzE1MTAyY2RiMzU2OWYwYjZhNDhjMGMyYzJiMGVlMTYxIGxlZ2FjeS10cnVuaworMjEyODIgOWZhNTRiZDdhN2NiNTZlYzhlOTRkZDQ0MDMwOGRmMjIzNDE3NDE2YyBsZWdhY3ktdHJ1bmsKKzIxMjgzIGM0ZGIwOWI4NzQyNDIzMGQyMmU5ZmZlZWZkZjNlNWM0YmI3YjMwOTkgbGVnYWN5LXRydW5rCisyMTI4NCBlM2NmMzM0OGZlY2E1MzBhZjQ4M2RlZGM3NGE3NDU4ZDFmODhhMmMxIGxlZ2FjeS10cnVuaworMjEyODUgZjFiNWZiZWVjYzBlOTkyMTcxNDcyZDllOGVmZTEyN2JkZjVmOGQyZCBsZWdhY3ktdHJ1bmsKKzIxMjg2IDQ4MjZhNmNkYWZjNDBkZTIyYWNiZWNlNDM3ZDAwZjM4ZmY2NmYxNjYgbGVnYWN5LXRydW5rCisyMTI4NyA0NWRlMWFjMmEzNzY3YjY4NWNhMGJhMTA4ZDU4ZTRhOGY3NTk1MzEyIGxlZ2FjeS10cnVuaworMjEyODggNWQzZTdmOTljZjUyY2Y0NmRmYzlhNTgxYmZkNzhhZDRiYzliZmY2NCBsZWdhY3ktdHJ1bmsKKzIxMjg5IDA2NWIxN2ZjMGQyZWUwNmY2NTEyOGI1YWJlYjI2MjFjZDNlZWYxNzAgbGVnYWN5LXRydW5rCisyMTI5MCA5ZjFkZmE3ODZiYTY1NWVkYTEyN2YxZmU1YzYyODg5ZjZhNDhkZTkyIGxlZ2FjeS10cnVuaworMjEyOTEgMDUxNGIxNmMxYTY4M2YzYmQ1NDdhY2Q5ZmEwZDQ2NjNjMWJlYjcxMSBsZWdhY3ktdHJ1bmsKKzIxMjkyIGZiN2M0NGFlNGE2Mjc3ZDQyYjY2MzFmZTYwZjZhYWI2NmE3ZjQ0YjkgbGVnYWN5LXRydW5rCisyMTI5MyBkNTBkNGY4MWFhNGM1YTdjMDBlZGY5MDQ1MzNjNTg5NWRhZjAwMTRmIGxlZ2FjeS10cnVuaworMjEyOTQgMzU4Y2I3NGMwODY0ZjlhOGI3OTNhNjcxZGYyYTM2YWE0MWQ2ZTNhNSBsZWdhY3ktdHJ1bmsKKzIxMjk1IDU3ZGQxM2I2YzgwMzEwZDQ0M2IyMGZmNTVjY2ZkNjNmMjhiMzhmNDAgbGVnYWN5LXRydW5rCisyMTI5NiAzMDlmYjAyNmM4NGVjZDU3ZmQyNTcwOTVlN2M4MzVkYjAyMjk3MzhmIGxlZ2FjeS10cnVuaworMjEyOTcgMWEyYTkxNGIyNDZjMjJjNmYxMzFlYmNhMDRmNGU4ZDE5MjE1OGIyYyBsZWdhY3ktdHJ1bmsKKzIxMjk4IGM4OGY0MTQ4NjA1ZmQ1MmNlMGViMjA2MjYzNGQ3OTg5NDFmNjI5YTkgbGVnYWN5LXRydW5rCisyMTI5OSA2YjBhODE1N2JlM2I2ODA2ZjEzZTBhMzJiMDRmZWVhYzBiN2Q3YWI2IGxlZ2FjeS10cnVuaworMjEzMDAgNDE0OTFkMTk2NzQ4Y2Q0ZGZmOTAzMjI5ZjBkNjUxMWQyNTc2ZTQ3YSBsZWdhY3ktdHJ1bmsKKzIxMzAxIDNkOTE2NGQ5NWU3ODlmNzE4ZDY3OWQ4MjYxODExNzgyN2Y1ZjM0NjYgbGVnYWN5LXRydW5rCisyMTMwMiBhNDZlMzVhY2Y5YzFjNjRiYTkwMTYzYmFjMGVkNGVjZDliNmYxODU3IGxlZ2FjeS10cnVuaworMjEzMDMgMTZlNGViNDI3Nzk3OGY2NmJlOGI0NjZjZWU1NDhjZTk1M2U3NTM4MiBsZWdhY3ktdHJ1bmsKKzIxMzA0IDc4YmZiZTJlNzE5Y2IzYmQ5MDM1NGQ0ODQ5NzY2ZDEwZTk0NzJhOTcgbGVnYWN5LXRydW5rCisyMTMwNSA0MjZlMGM3MjFiYmY2ZWIyMGE1Mjk3Y2JlMDc0Y2QxODE5NDFkMGY5IGxlZ2FjeS10cnVuaworMjEzMDYgZWJmNjFiNWI1YWViYmNhNzExY2M2Y2E3NTRmZGEyMTE1MGM0YWVjNiB1bmxhYmVsZWQtMS4xLjEKKzIxMzA4IGZkODMyMTJlYjhmMjRlZmQ2NDk0Yzg5YTQzMjYyNWM1ODU3ZWY0MDUgbGVnYWN5LXRydW5rCisyMTMwOSBkZWU0OTg5NjFiZmUzYzkwZmM3NTllMDJhYjRjNGE4ZGQ4ZDNkN2YyIGxlZ2FjeS10cnVuaworMjEzMTAgNGFkODQyZjlkNDMxNDdhODAxOGJjMGY4YjFkN2Q5YTMxOWVlN2M3NyByZWxlYXNlMjEtbWFpbnQKKzIxMzExIDQ0MTIyZTdiNDljZjJjOTQ3M2U2OGRhMjEzZGNhODkyNWZjNDljMDIgbGVnYWN5LXRydW5rCisyMTMxMiA5ZTMyNmM5ZTZiZTU5NDIxMDFjMTAzZDZhOGM2N2Q1NTQ1NmRmYTI1IGxlZ2FjeS10cnVuaworMjEzMTMgODZkYWIwZDQzYjczMTJmMGI4ODdlNTc2OTFjNGZlNzhkNTg3ZTczOCBsZWdhY3ktdHJ1bmsKKzIxMzE0IDk3MzRmODk1ZjRmYmVkOThiNDdmYTYyZGQxMjY2OThmMGY0N2Q5MmEgbGVnYWN5LXRydW5rCisyMTMxNSBkMmM5NTAwMzIzOTMwMDFmN2JkMjMyZmM4YThmZTQ1ZDFiMjY1NjU0IGxlZ2FjeS10cnVuaworMjEzMTYgN2M4ZGFkNWYyZDk2NmRjMjFkYmRkZDcwZGRiOTBmOTFlMjliN2QwNiBsZWdhY3ktdHJ1bmsKKzIxMzE3IGI1NjU4YTIzMGUxYTUyNzYwNDVlMjdiZDQ2YTNlOWFjMTNmZjhmMzUgbGVnYWN5LXRydW5rCisyMTMxOCA4YjdmZjQ0YjQ2Njk1OTdhNjQ3ZjQ4MDYyM2QzNWRhOGY2ODdhYzkwIGxlZ2FjeS10cnVuaworMjEzMTkgMDYzMmRjZDY5ZWEzYWYxOWE2OTgzNTY3NGI0ZDY0NWE3MTQ2YjY0MiBsZWdhY3ktdHJ1bmsKKzIxMzIwIGUzYmEzNzM5ODU1YWQxZmY3N2Q4ODRiZDdmNTdiZGMwODlmYzNlNDkgbGVnYWN5LXRydW5rCisyMTMyMSBmMzg5MjNjZTNjNmIwZjRhZGJhMzE2N2JmMjQ5MjU4NDY3ZjdmODViIGxlZ2FjeS10cnVuaworMjEzMjIgMWYxZDJjNTBiM2M3ODQ4MTFjNzRhMTNhNGM2NmNkNjU4ODgzNDg5OCBsZWdhY3ktdHJ1bmsKKzIxMzIzIGY3YzAxYjkzOGExNzM4YWQ3NTI1ZjE0MTEyNWEwZjE4NmFhMDk0MDkgbGVnYWN5LXRydW5rCisyMTMyNCAwNDNlMjAwMTc0ZjFiN2U5YzM0ZjRlZDYxZjFkMmM4ZWVjNjk4MmM5IGxlZ2FjeS10cnVuaworMjEzMjUgZTMxYTM0OTE2NmY0ZTBjZDFlMjVlMTk5ODBlZmEyN2MzMDEzYjQyZCBkZXNjci1icmFuY2gKKzIxMzI2IGJjMDVhOTUyNDJhMzc4MDNhNTFiZGU1MjkyYTFkOWJkYmQxOTMyNWQgbGVnYWN5LXRydW5rCisyMTMyNyBmNjA3OGEzMGY3MGEyODBlYTZlYjU4NGUyMzNiOWVjODM2YTY4NzZkIGxlZ2FjeS10cnVuaworMjEzMjggNjgwMGJjY2UwNDU1NWI5ZmEzZmUyNGYzNDA1MDk1YWU2NTI3NmFjNSBsZWdhY3ktdHJ1bmsKKzIxMzI5IDRmYTMxZWNhM2JlNGE1NGQ4ZTkxN2QzNTA4MGI0MWNjZDMxMzZkMDkgbGVnYWN5LXRydW5rCisyMTMzMCAyOTVhY2MwNzU1ZjBjN2ZlYzhhMWQ5YWRlYzUwMmExZmVhMzllMWJiIGxlZ2FjeS10cnVuaworMjEzMzEgNTVmM2EwNGUwNjQxMWVjZmYyNzY1ZDA3ZjAzY2Q5YTcwNDM5YWQ4MSBsZWdhY3ktdHJ1bmsKKzIxMzMyIGZmYmI5YzkxOGFjMDQ2YjBjZTZjNWJiNmI3YjE0NDBiMzQ4NjZmNzAgbGVnYWN5LXRydW5rCisyMTMzMyAwMzQ0ZTRhYzcwYjBjOGY5NTVlMjE1ZjAzZDY2NGQ1MmRjOWQ2ZGI1IGxlZ2FjeS10cnVuaworMjEzMzQgYjE0NTIxZmQ4ZTM5MTYyMWEzMWQwZmJmY2IxMzVmZWQxZTExYzgwYSBsZWdhY3ktdHJ1bmsKKzIxMzM1IDIwZTNhNmUxMGMyNDhmZTAzY2NiY2RmNDUyY2Q3ZDcwN2FmNzA1YzUgbGVnYWN5LXRydW5rCisyMTMzNiAyMmY4NWM2YTY1MjBhNjk1OGIzYTkxMTg1YzhjZDk1ZTViMDIzOWViIGxlZ2FjeS10cnVuaworMjEzMzcgOTMyOTAzYzdkMDU0YjAyYmI4OTcwY2UyZjIyMTRmOTcxMjYwMThlZCBsZWdhY3ktdHJ1bmsKKzIxMzM4IDk4MjE2M2M0ZTlkMmJlMGEwMzJmNmU2MTg1MWM4Mzg5ZTAyMmIzMDkgbGVnYWN5LXRydW5rCisyMTMzOSA2OGMxMmQ1NTU2ZGY3MTZiZDA0NmNkZjg4MzE1MDA3MzQ2MmZhZDdhIGxlZ2FjeS10cnVuaworMjEzNDAgMGZmNzZkNzgxZDJjNjExOGQ2OTgyMTk4OWM0ZGU0OTQ5YjI2ZjFkMiByZWxlYXNlMjEtbWFpbnQKKzIxMzQxIGZmOGUxODNhZTU4Zjk0MWVlMjY5NjY1MjYxMjRlNDRmY2UyNGE5NWEgcmVsZWFzZTIxLW1haW50CisyMTM0MiA3Y2Q2ZTUxNWZkMzBhNjkxNjE3OTQxYWM2ZTExZjRhNmJhNjRjY2I1IHJlbGVhc2UyMS1tYWludAorMjEzNDMgMzE0ODQyZGNkNTJlOTRlNzQxZWM3OWNlOTIyZWEyYTZhZmU3Mzg3MiByZWxlYXNlMjEtbWFpbnQKKzIxMzQ0IDg5M2JhMWYwMzc4YTFmNjQ0YmMwNWFkNGM0OGI2MGI0OGYzZGQ3MTQgcmVsZWFzZTIxLW1haW50CisyMTM0NSA2N2M4NDFkODIxZTA3NGE5YjdmNGNlNzE0MDFiNTVkMTM1MjJkMDU3IHJlbGVhc2UyMS1tYWludAorMjEzNDYgOTA5ODQxNTk3MWQwMTcwMWJjM2YyYTk5Y2MyNzI0MWQyMmI5Yzc4OCByZWxlYXNlMjEtbWFpbnQKKzIxMzQ3IGJlOTY3MWU2MWY0YTYwODY3YTRmZjExZDAxYThiZWVjMmFmN2QzMGYgcmVsZWFzZTIxLW1haW50CisyMTM0OCAzYTZhMmU1OWRlMDNjMzcxZmYzOWY4MDI2MzgyMjlhYWRmMTE2OWI1IHJlbGVhc2UyMS1tYWludAorMjEzNDkgYWMwMDI3ZTJiM2I3YTRmZDNmMmIwMDRmNTVlZTc2ZTNjZTQ5NWIyNSByZWxlYXNlMjEtbWFpbnQKKzIxMzUwIGU4NjUwZDc1ZTVhNDU0Yzg4YzUwNmRiMjY1NjJiOTVlNGYwYjUzMDUgcmVsZWFzZTIxLW1haW50CisyMTM1MSA3NWMxZjljM2YwZDFmN2I4MzA2YTg2NzM1ZmNjYTEwMDk2M2NjYjI3IGxlZ2FjeS10cnVuaworMjEzNTIgOWMyYmMzZTRkZjczODM3MWZhOTc0MGY4N2RlNTkyMzY0MmNhMzg3YiByZWxlYXNlMjEtbWFpbnQKKzIxMzUzIGQ1MmU2MzVlMjA1Zjg3NjM0MzRhYmU3NTg4MmU0NTNlMTkwM2JhMTcgcmVsZWFzZTIxLW1haW50CisyMTM1NCA2Y2VjNzYxZGYyYzM0YWUxOThhNTk0MzVmMjMyMjNkYWJiNTY5ZDlhIHJlbGVhc2UyMS1tYWludAorMjEzNTUgZmE0YTc3ZTQyNGRkYjM1ZTg5MzExMzc0NWZlZjJiMzg1NDIwM2UwNCByZWxlYXNlMjEtbWFpbnQKKzIxMzU2IDA3MWM5NTcyMjFlY2M1OWQ4NTU0NWEyMDk2MGMyZTdkNTAxNmUwOTUgcmVsZWFzZTIxLW1haW50CisyMTM1NyBjODIzZWM0N2RmNDk1ZTU4Y2YxNzM4NTEzZjAzMDQ1N2FkNzdlNDA1IHJlbGVhc2UyMS1tYWludAorMjEzNTggMWFhNTkxZTQxODE1NDVjM2JkYzg1MDk4MzQxZTU0N2MyNDQzNTk2ZiByZWxlYXNlMjEtbWFpbnQKKzIxMzU5IDE0MGNiMjQ2Yjg2NGFlYTAzZjVhYjY3ZTFlYTA2ODcwNzQ1OGU3MjcgcmVsZWFzZTIxLW1haW50CisyMTM2MCAxNTlhYmZjOGIxYmM1MWJmYzkyZDE2YTBiZGQ2OGEwNTc2NTA5NGNlIHJlbGVhc2UyMS1tYWludAorMjEzNjEgMGM5Nzg3MjhlYmFmZWM4NzMyZDg4OWM0M2YwZWRhN2Y1YzlmYTEwMyByZWxlYXNlMjEtbWFpbnQKKzIxMzYyIDBkMjg3NDM0MTQ0YjU5YzJjMWU3NmY0Y2JkMmM0MDU5MTc3OTA3ODAgcmVsZWFzZTIxLW1haW50CisyMTM2MyBjZGE2Y2E5ZGZkNTkwZDQ5ZjgxOWUxZmE3Y2UzNzQ2YThhYTk5NWVkIGxlZ2FjeS10cnVuaworMjEzNjQgM2JhN2EzNThjZTAyODg1YWY0ZDVhM2I1YjJlZDY1ODI0OGQzZTQ5MyBsZWdhY3ktdHJ1bmsKKzIxMzY1IGZiMzViM2EyMjYwNDYyMjFmN2I3ZDM0YTJiNjY1YjQzYmEzNjI5MWEgbGVnYWN5LXRydW5rCisyMTM2NiBlNDI3YWZiNTYzN2YwOGMxYzI0MGVmZWFlMTk1MmIzMjkwOWEwZmRlIGxlZ2FjeS10cnVuaworMjEzNjcgOTNiZGM1ZWNlMWJmNjk4N2I2MTdiODljYWI0Y2YyNTlhNmFkNzdiMCBsZWdhY3ktdHJ1bmsKKzIxMzY4IGU0NTI3ZDQ1ZTk0MmQxYzk1ZjYyMGVlMTk2MWJkMzViMmJhZjgzNjYgbGVnYWN5LXRydW5rCisyMTM2OSBmOTk1YzRmMjUxMjAwOGIzYTVhNjRjOTljOWQ0ZTNjYjMyY2ZmZDg2IGxlZ2FjeS10cnVuaworMjEzNzAgZDAxNGI1MjI2OTAwZDczMzIxMTliNjhmYTM4N2NiZWFhYzdhMjM1MiBsZWdhY3ktdHJ1bmsKKzIxMzcxIGJmOTM2YzUyOTYzNTNjMjY5NGNhM2VmYzVjZGM3MDIwMzgzNGZjOWQgbGVnYWN5LXRydW5rCisyMTM3MiA0OWFjYzhhYzYwYzIzMjQxNWQ5YmQ1N2RiY2JlYjQ2MjIxYjg3YmY3IGxlZ2FjeS10cnVuaworMjEzNzMgNDEyNDNjYjRlYTA1ZDc3NzEyYTU0NmM4OTY0NTE4MDU0NTQ4NGM1NiBsZWdhY3ktdHJ1bmsKKzIxMzc0IDk3NmIwYWU0ZjUyN2MxYTFlNzVjNWI1YWM0MzUxMjMxZGFlYmVlMTIgZGVzY3ItYnJhbmNoCisyMTM3NSAzZjBiZGQ0YWU2ODQwMGY2NDg4N2MwODY2YzMzYjY1YTAxOGRiNWE5IGRlc2NyLWJyYW5jaAorMjEzNzYgNzU0ZGViODY4MjBlNWY1Y2E4Y2ZiYTYwZjI0ZjJhMzk5NTBjMDZiZCBkZXNjci1icmFuY2gKKzIxMzc3IDZjYTNkZDgyY2IwN2VkNDM1NWFiNWIyMzIyZGFhZDU4YjRkM2YwMzcgZGVzY3ItYnJhbmNoCisyMTM3OCAwNGE2NGQyZDhiMmQyMDU3ODkwNWM1N2RjZWM0NjMwYWQ0NTJiMzU4IGRlc2NyLWJyYW5jaAorMjEzNzkgMDIyNmQwNmUzZWZmNTkyNzQ5MGVhN2NlNjc1OGMwNDZiOWQ1NzhmZiBkZXNjci1icmFuY2gKKzIxMzgwIDdlZjY2MmFlZDlkZTRlMGE2N2E1OWNjMjQzOGM2MWE3NzU3MzU4NzAgZGVzY3ItYnJhbmNoCisyMTM4MSBmNzMwMjljNzFiMGRmMDllZTA3OTU1OTIxMWI0YTQwNmE5NGVmNzc5IGRlc2NyLWJyYW5jaAorMjEzODIgMmQwYjY5YTY3ZjY5NGM2NWIzOWI1ZjM3ZTJlMGYwOWIyMDgxNDMwNiBkZXNjci1icmFuY2gKKzIxMzgzIDQwNWVhYmEzNmIyZmM4NjJlYzJiYTdhNGQ3ZWFmOWViMjhjY2EyMmYgZGVzY3ItYnJhbmNoCisyMTM4NCAyNzgzOWJhN2VjMjJlZDQ5ZTJjMzE0ZjkxNjNhYmQ2OWE1OTRiYzUzIGRlc2NyLWJyYW5jaAorMjEzODUgODVkYjk4OWY2YTczYzZjY2M1NmFjNDM5ZGI2OGI0ZThmNWE5MzJhMiBsZWdhY3ktdHJ1bmsKKzIxMzg2IDZhMTYzMDExNzgwNTE2N2VhYjljMDhkNDZjZDNhOWY5NzQ1MDg4ZjcgbGVnYWN5LXRydW5rCisyMTM4NyA3OTQ1ODJmYzA2MjNlM2I5NTg3N2FkOGZkNWRlYWYxNTM1MjFjYjMwIGxlZ2FjeS10cnVuaworMjEzODggYzJhNjBkZTkxZDJjNzEzODEzZjNjZDIyMTI3NWVlOGUwMjRlYjA1NyBsZWdhY3ktdHJ1bmsKKzIxMzg5IGVkYWRmYTI4MzU5Zjg1MjUzMDBkYWNiNDMwNDQwMWEwZmQyODk0MTcgZGVzY3ItYnJhbmNoCisyMTM5MCA1ODQ2OTIwMmVlOGQ4YjFiNWM5N2QxZDVkODViYWU2ZjQwMTJhYmNmIGRlc2NyLWJyYW5jaAorMjEzOTEgZmU2MzM1MzRmNDQ3ODYzNzU0N2EyNzQ3OGI5YzM2OTY2NjM1MjEzMCBkZXNjci1icmFuY2gKKzIxMzkyIGExMmVjODg3NjUxNWMzN2U3NjM5NmI2YWM1N2FjNTc2ZDdmNDJmOTkgZGVzY3ItYnJhbmNoCisyMTM5MyA1NjY4YTg1NTBiZTQ1NDViNGJlNGQyMTUzY2Q4OWUyOTczYmU2OTgwIGxlZ2FjeS10cnVuaworMjEzOTQgZTkwZmMzNGQ3M2QwMGZhMjJhMWI1MmFhZjU5NWFkMzM5OWEyNjg2MiByZWxlYXNlMjEtbWFpbnQKKzIxMzk1IGU4ZGM3MzM4NjcwNjJhMTQ5YWExMjc3MzI4MGY5NTdhYjc3NGJiMzkgcmVsZWFzZTIxLW1haW50CisyMTM5NiAwZmRjMjc3OWU4ZDQzYzRjZDdlZmMyYjI2YjZhY2ZlMzI5OWY3MGIyIGRlc2NyLWJyYW5jaAorMjEzOTcgOGRiOTQzNjdmYWUxYzgwODA3MGIxYzFmYzIxMTlmNTQwMDdiNTk4NSBkZXNjci1icmFuY2gKKzIxMzk4IGIzYmEwZjQ4YWRjNGNlODA1YjUxNmUzZGZjZGY4N2ZiY2IxNDQ3ZGQgZGVzY3ItYnJhbmNoCisyMTM5OSAxMTY2MDExYTljZmNhOTgyZTAzMDI4M2Q1MmY2MjMyZmU5Y2JiZTAxIGRlc2NyLWJyYW5jaAorMjE0MDAgZjcwYjJkNjNmMzA5YThlMjYxMWY2NTFhYjgyN2RiNjQ4YTM3NjQxMCBsZWdhY3ktdHJ1bmsKKzIxNDAxIGQzMmZlNDhmYmI5NjhkNzBjMTAwZTZkZWI3YzJlZjM4NzUyOTJiMjAgcmVsZWFzZTIxLW1haW50CisyMTQwMiAyNjRlZDU1ZGVjNmUxYWQzNTQxOWNmOWRkMGJiMTM2NDZiMzQwNWE3IHJlbGVhc2UyMS1tYWludAorMjE0MDMgNDQ5ZGE4NTdkY2U1OTQ0MWE5MWZkMjdlMjBmN2UzM2ZkZGY2NTZmOSBsZWdhY3ktdHJ1bmsKKzIxNDA0IGMwMjliNzQzMzJkMmFhZmNiYmMwY2Q4MDcxZDU0MmZiNmIxMTVjNTUgZGVzY3ItYnJhbmNoCisyMTQwNSBkMmM5OTYzZTQyOTE1NTU2ODE3YzFiZGM2YjZlYjU5ZDdhOWRhNmNhIGRlc2NyLWJyYW5jaAorMjE0MDYgMWRhNzI0Y2VlMjJkM2Y2NTU5Y2RiYTAxZDEyN2VkZTkxYzBkM2I3OCBkZXNjci1icmFuY2gKKzIxNDA3IDVhNzg0MTM0MGRjN2MxYzkzMGQxZDU5ODQzNWYyMjljYjgyOWU4NDQgZGVzY3ItYnJhbmNoCisyMTQwOCAwOGEyYzJlNzk0ZWZkZTZjOTQxYzhhNjE1M2YxOWZmOTExY2IzNmVmIGRlc2NyLWJyYW5jaAorMjE0MDkgMDIwMGNkMjI0OTJlYzI2MDljZjE0ZmQ0MDYzMDQyMzk4Y2QxMmZmMiBsZWdhY3ktdHJ1bmsKKzIxNDEwIDRiYWI5ZWNmM2UwNWUyZjY2OGZmMGJmZmIwZmVmMTA2YTdhOWZjNTYgcmVsZWFzZTIxLW1haW50CisyMTQxMSAxNzMzMDQyOWNkZmViNTgwOGIwODFiODNjZWViOTc3ZjJjMmY0MzUxIHJlbGVhc2UyMS1tYWludAorMjE0MTIgNzk4YjVlNmI0OTE1ZjBkZTk0ZWE2MjgzMTk5MzEzYWFiNjNhNDJiZCBsZWdhY3ktdHJ1bmsKKzIxNDEzIDU1OTY1MDRhZDQ5YWZiMGE1Y2ZhMDM3NTY3YzllZjY5YTQ1YWNmMjYgZGVzY3ItYnJhbmNoCisyMTQxNCBlNTg3OTllZWZhMzk3ODFjMDFiODhkYmNhYjkyMDQxMDc5ZWI5MWE3IGRlc2NyLWJyYW5jaAorMjE0MTUgMjdiODY2NTE0YzllYmRjZmQyYTA2ODA4NTA3ZTg0MzQwMDQyNDIwMiBsZWdhY3ktdHJ1bmsKKzIxNDE2IDI1MTNiYzFkYjEyZmVkYWE0MzA5ODJjMjhmMWI1MThlNTUwNWY5NGUgcmVsZWFzZTIxLW1haW50CisyMTQxNyA1MjBlMWY0MDEwMWFhMDFkMzgxYjQyMDgwNmE0MTMzMzU5NWZkMWI2IGRlc2NyLWJyYW5jaAorMjE0MTggODkzN2QyMzRiMmE4ZDY1MmZjOTViNjAzZTNhNTNmMjU1MDg0ZDFjOSBkZXNjci1icmFuY2gKKzIxNDE5IGM2NzIzY2Q1NTQ1OGIyNDhkYTc4MGM1MWMxMmM3MTNhMDRmNzhjYWMgZGVzY3ItYnJhbmNoCisyMTQyMCA2NTBmNzAwNGU2ZDM5YWEzMzYyNzQ2ZDNmYTZkNDA0NTQxMjcxZmZjIGRlc2NyLWJyYW5jaAorMjE0MjEgMjNiYjNmNDljYjk0MjQ5ODNiZGJhYWZjMzliYTlhM2ZmODgzYmQwNiBkZXNjci1icmFuY2gKKzIxNDIyIDQ0YTg3YzMwMGYyYmE0ZjNhMGY4NGNiNDNhMTgyMjEzNjYzN2I2ODEgbGVnYWN5LXRydW5rCisyMTQyMyAzZWRhNjIzMWUxYzI1ODQ5MDhhNDgxNDFhMGUxN2UyZmM4ODIyZDM0IGxlZ2FjeS10cnVuaworMjE0MjQgZDIzZjk5MzFiMDMzNTlhODVmY2YyYzI5N2M4ZTMzZmY4MjA4NDQ2NyBkZXNjci1icmFuY2gKKzIxNDI1IDRlMjZiNDFkMmYzZGJjYjZlNzRjNDQ4ODBjNzI0NWFjMmVlYzdiMWIgZGVzY3ItYnJhbmNoCisyMTQyNiA5ZGU2NTYwMDQyMGI2MDcxODM0MWZiYjljYWMzNGU3MzYyZjY3ZDZhIGRlc2NyLWJyYW5jaAorMjE0MjcgOWM1OGRkYzQ3MTk1YWQ4MzMxMTgxZTllOTcyNGQ2MzBmYjZhNjBiYyBsZWdhY3ktdHJ1bmsKKzIxNDI4IGJlMDk2YmI0ZTNmMjI3YTc0NDQzM2EzNDJiMmQzNWRkNjc0NTNlOWYgbGVnYWN5LXRydW5rCisyMTQyOSA5ODU1NmNkZmU3MTY5NGViNWMwZWE4YjcwMzA2ZWNjYjAwOWMxMDI1IGxlZ2FjeS10cnVuaworMjE0MzAgYTgwZTBkMzlmMTBiMjdmYThhZDRlOTUxYzYwZGEzZDAyOTJhYjQ0NCBsZWdhY3ktdHJ1bmsKKzIxNDMxIGZhM2E0MjA3ZDk1NzA4NDc1MmNkNWFkM2QzY2Y5MmM1MTAwNTk4MTMgcmVsZWFzZTIxLW1haW50CisyMTQzMiA1NjY1MmU2ODQ3MzdiOWRiMmZjNTJlMGRlMGRmNTNmYmMyZmFjYzVjIGxlZ2FjeS10cnVuaworMjE0MzMgOTAzMjEyNjEyNzcxMjkwYTQ5ZjYwN2I2NjI0YjI1YTRmMmNkOTc3YSBsZWdhY3ktdHJ1bmsKKzIxNDM0IDExNzM3MWFmNTQ0YjA5MGE1NDA4YjMwMDJiNWE3MjliZmU0YmVkZDcgcmVsZWFzZTIxLW1haW50CisyMTQzNSBjYWE4ZmZjM2NkMWM3MGUwN2I3NjdmNDQyZTUxNmUxMDIzYmY1N2U1IHJlbGVhc2UyMS1tYWludAorMjE0MzYgNzdmNDE2Mzg3OTIyZWE3ODE4YjI2NDVmYTgzM2JhMmZkMTg0M2M0ZiBsZWdhY3ktdHJ1bmsKKzIxNDM3IGMwMjg4NjcwMjMwZTkzMjViZjQ2M2U0NmUyOTM3OGViMDA3OWMzYmUgbGVnYWN5LXRydW5rCisyMTQzOCAyZTFhZGJlODllNGE1ODQ0MWViN2UxMjliYmFjODI1MGVmNjI2NWNjIGxlZ2FjeS10cnVuaworMjE0MzkgODExODQyZGFjZDM5ZTFlOWM3OTkxZTFiOWY0MDU3ZGJjZjMwZjY1OCByZWxlYXNlMjEtbWFpbnQKKzIxNDQwIDQ1MWMwYWJiZjhhOWY1NDUyOGUxYzBiZDk1ZjExNWQ1NGNjMzdhYzcgbGVnYWN5LXRydW5rCisyMTQ0MSBlYWFiY2ExMzE3NGUwM2ZjNGRmNjllYTJiMmM5Y2I1YTkzMjAxY2I0IGxlZ2FjeS10cnVuaworMjE0NDIgM2ZkZTFkMjAzMzFlYWY2MWRmMTBkMDMyNDJhZjU3M2IxNmZkMTJlZSBkZXNjci1icmFuY2gKKzIxNDQzIDQ3MmVmNjgzMThhOGJmOGZkMjcxOTIwM2FjOTMyM2VkOWE4MTU0MWMgbGVnYWN5LXRydW5rCisyMTQ0NCA0ZDM3YjcyYWUyZDI2MDQwMDU2NmM2YzEyMTA1NTg0NDE0M2RmNDA1IGRlc2NyLWJyYW5jaAorMjE0NDUgZjI0ZWMyM2NkNDdlZGZmNzZiNDJkMmI2OGFmMjY5YzgwODFkZTM0NiBsZWdhY3ktdHJ1bmsKKzIxNDQ2IGM3NmRhZDA2NDYxYjg4ODQwMjA3MTAzYWZiM2RkODdhNzJlYTUyOTAgbGVnYWN5LXRydW5rCisyMTQ0NyBmYmUwZGVkNWU0YzFiZjAyOTFlNDdkYjM5YzI0YzI1M2NkNDdiMTlhIHJlbGVhc2UyMS1tYWludAorMjE0NDggZmI5NmE3OGU3MmFjNmY1NDg3ZDI4M2M2NTNiNDU3MzI3YjhlZDk1NCBkZXNjci1icmFuY2gKKzIxNDQ5IDc2NDQ5MmE4ZjZhNzU5MzczZTZhYmUxMzRjNWM5ZTE1NWEyMDc4N2MgZGVzY3ItYnJhbmNoCisyMTQ1MCBlM2VhYzIxZTFkMzA0YmMzNzZjMzcxZDQ5ZmU2ZTMxMTY4YjY3NWRlIGRlc2NyLWJyYW5jaAorMjE0NTEgOWQ2ZDExMTZiZjJjY2U4YzQzMjlkOTA5YWU1ODY2YmQ0YWJmMTdhYiBkZXNjci1icmFuY2gKKzIxNDUyIDE2OTRhYjg3ZjFkN2MzMzM5NWU5OTNhYmRiYWViMjYyYjg0NzIxNWMgZGVzY3ItYnJhbmNoCisyMTQ1MyBmMzk5ZTZiYzUwYWZkNWYzZGU0MjI0ZTE4MWQ1M2Q3NGY0YTQ1NjEwIGRlc2NyLWJyYW5jaAorMjE0NTQgMDFiOTIwZWE1MmYxNmZkZWQ0NTc5MDc1YjU5Yzc2Zjg3NmZhMTdmOSBkZXNjci1icmFuY2gKKzIxNDU1IDJlMzE2NjViYmRjMjU1MzE0ODllMDYzYjU1YzliMmE2OWNjOTAwNDAgZGVzY3ItYnJhbmNoCisyMTQ1NiBiZmVkMjEyM2IxNGQ3YzQ1MDY3OTZlMGNiMjk4MzEyZWZkODczOTkwIGRlc2NyLWJyYW5jaAorMjE0NTcgMGJkNjdjOGE5NjllMDUxOGRhOTg5NGMyN2ZhMGRjMGYyOGI2MzkwMyBsZWdhY3ktdHJ1bmsKKzIxNDU4IGI2MWYzYjZjZTFmZjkwZDI0M2M4NmViMTNmNzI0ZGQ0NjQ1NDIwMzcgbGVnYWN5LXRydW5rCisyMTQ1OSAzYjI5NWNlMjcwNWY2N2FjNmYxMmI1NGFjMmRkNjEyZWMxYTY3OTExIGxlZ2FjeS10cnVuaworMjE0NjAgZTEwMGMwNWQ0NDRlZTkwMTY1Y2M5ZDNjZjA5YmFlZDNlOTBmZTE0NCBkZXNjci1icmFuY2gKKzIxNDYxIDI0YTBmODRhZDc0NjVlN2IyMTMwY2VmMzI0YjQwZGRiNTdiMTIwNWEgZGVzY3ItYnJhbmNoCisyMTQ2MiAzMzhhYWExNGM0ZTVhZWViZTMxYTdmYWY4ODM2ZmExNDljMGU4ZGFlIGRlc2NyLWJyYW5jaAorMjE0NjMgYjIxZTcwYzZkMDlkNGEzMDM3ZjU5MjU4ZGZlNTA4YTgxOWVmZmVlMSBkZXNjci1icmFuY2gKKzIxNDY0IDYzMGM4NmQzMzMwYmQ0OTdjYTYyZTQ3ZWI1ZjA3OTdmNjJmOTcxNzkgbGVnYWN5LXRydW5rCisyMTQ2NSBiYWYwNGNkZjY1YTMwMGRlNmE0NDYzZTJlMmRiYTAxMTYxMWIxZWI3IGxlZ2FjeS10cnVuaworMjE0NjcgZmRjM2IxNjIxNWM3NWYzMmRhMmQwNzNkZTJiMjlmYTdiMWI1Yjc3OCByZWxlYXNlMjEtbWFpbnQKKzIxNDY4IGY2OTI1YWQyZDE5MTFiMzhlODcyN2U5MjNiMGQ0MzViNzI0ZTE3MzIgbGVnYWN5LXRydW5rCisyMTQ2OSA0MGQxOWY5MDdlMTIwMTU0NjAwOGU5NTk5ZDIyMjUzMDg2ZjA1YTUxIGxlZ2FjeS10cnVuaworMjE0NzAgZDFjNjBiMDcyMTdmOGM2MmRmNjQ4YTVkYTYxZmNkYzMxNTY2ZjhhMiBsZWdhY3ktdHJ1bmsKKzIxNDcxIGRjNzQ4MjNiNDllYTU3MGRlYzRkOTlhZmQ2YTI3YTFkMjJmODM5YzcgbGVnYWN5LXRydW5rCisyMTQ3MiBmNmIzYTdhOTBkODNmYzBiYTAyNGUwM2EwYzFiM2Q1M2ZiOWJhMjBlIGxlZ2FjeS10cnVuaworMjE0NzMgMDgwMTAwNjQ3Mzk2YzhkMDM0ZmM2ZTMwNmQ3N2Y0OGUwY2I1NTFiZCBsZWdhY3ktdHJ1bmsKKzIxNDc0IDk1ZTM5NDdjYTNjZWExOTQ1MDg3OGZkOGI1ZDc1ZDg2NmQ0NDE1ZGMgbGVnYWN5LXRydW5rCisyMTQ3NSA4MzQ3OTI1MjMwOTQ4OTEyMmY4ZTg5MDI5OTVmNGU5YTZjZGViNWQzIGxlZ2FjeS10cnVuaworMjE0NzYgOGNkZmY1NDVjYmRlNTBlMjk1NmZmMGUxZjY2ZDM1NmRhMzE1ZTE4NiBsZWdhY3ktdHJ1bmsKKzIxNDc3IDljNmE4ZGNkNzIyZDU1NTMxMDZhYWFjOWY1NzdjNzllOWJlMmQyYTAgbGVnYWN5LXRydW5rCisyMTQ3OCAwNjMzMmIzYzQzMzVkNDMzMDBiMmQ0NDJlMmU3MTcyMGEzZmNjZmYzIGxlZ2FjeS10cnVuaworMjE0NzkgNjEzNWMxMmU4NDQ4NjcyYjEzZGM0YmM4ZjRiOGIwZmUzZDMzNTZiNSBsZWdhY3ktdHJ1bmsKKzIxNDgwIDFlMDJlMjAxNGUzNmE0MDlkNDY1NmNjYmNlN2RjNWVkNWVhZjhkMGQgbGVnYWN5LXRydW5rCisyMTQ4MSBhYWRkOTk4MzA1MzFhZjUwNjUzOGExZDllMDk4YTUzODUwYTkzMDgwIGxlZ2FjeS10cnVuaworMjE0ODIgNzRiM2M0ZTNmNDg2MTEwYTQ4YWEzYTFhODdiMzJjMzFhNzUwMTg3NiBsZWdhY3ktdHJ1bmsKKzIxNDgzIGY4MGY2ZTkyMjhkZTZkZTQzZjAwYTlkZDZlNjhjNjRjNjY1MjM2ZDEgbGVnYWN5LXRydW5rCisyMTQ4NCAxMTY1MzIxNDFhZGVlMzgwNDM4NDM4ODA0ODE1NzVmZjFmZGY5MzAyIGxlZ2FjeS10cnVuaworMjE0ODUgMWQwZDNlNmEzMjAxYTAxMzY3NWY1ZDRjMmQ0MTdmMWUzZTgxNTZjMyBsZWdhY3ktdHJ1bmsKKzIxNDg2IDcyNmU1ZjJjZDM2ZWQwZDdkZWJhODM5MGU4ZTk0NjlkOGM0NzhjZjcgZGVzY3ItYnJhbmNoCisyMTQ4NyA3ZGU1YzM3NjIzMmNiNGEzODA2NjE5N2NjNTAzOWVjMzFjNWNiNjc1IGxlZ2FjeS10cnVuaworMjE0ODggODI0ZDYxMTEzYTcxMjIwY2M5MzNjZjJmODVlODQzZDU1ODNlODM3MyBsZWdhY3ktdHJ1bmsKKzIxNDg5IGM4NjYyNTQzY2E2YTY4NWQ0MTY3ZThkYzdjZGMzZDAwMmRmZWMzNjEgcmVsZWFzZTIxLW1haW50CisyMTQ5MCBjYWRjMTg5NDJhMzQ0NTc5MTFmZWQ2M2JmODgzNjk5YjYzNzhhYTc3IGxlZ2FjeS10cnVuaworMjE0OTEgN2Y4M2VlMzc5N2EyNjQ2NmRmZjRjOTkzZjU1ZjA3ODUzYzEwODlmOSBsZWdhY3ktdHJ1bmsKKzIxNDkyIDdiMDNjMTUwNzU0YTA5ZDQyZmM5Y2E1Zjg2MDNkMWNmNDIxNGEzMWYgbGVnYWN5LXRydW5rCisyMTQ5NCBhZmRhNWZmZjUwMjcxYmQ0MmM0YzA2Y2YxOWFkNTViMjNjMmE1OTMyIHJlbGVhc2UyMS1tYWludAorMjE0OTUgODJmOTUyNGNjODQ0MTJhYWI0MTMyNDA3ODc1NjA1OWMyMDAxODVjOCBkZXNjci1icmFuY2gKKzIxNDk2IGI0YWYwOTFlMzFjNGE0NjE3M2Y0Y2Y0NzIyOTQzZjU5ZTk3YjBkOTYgZGVzY3ItYnJhbmNoCisyMTQ5NyAyZTZmYjZlNjQyOGZhMDk3ZGNmNWUyYjY4YjU5OTk5YzA5OGIwN2E0IGRlc2NyLWJyYW5jaAorMjE0OTggZDk0ZjhiMzIxM2U4Y2RmZWRlNTk1MDUzMGZiMDY0MTFkYzRmN2NmOSBkZXNjci1icmFuY2gKKzIxNDk5IGE0NTc3NjI3MGM4ZTExYWNjODI4YTg2NGQ5OWVjOTIzMGNkZmJhYjMgZGVzY3ItYnJhbmNoCisyMTUwMCAyMzIwOGYzMDI3ZjY4MzFhM2NiOTQ4M2VhZDE4ODFiOWE4OGQzNmEyIGRlc2NyLWJyYW5jaAorMjE1MDEgYTMxODkxY2JhZDQ0MjdiNDg3MmM4MmFjYzExNjI0YWUwMDAwYTRiOCBkZXNjci1icmFuY2gKKzIxNTAyIDY5Yjg4ZDM0ZTcyMmRlOWYyODY3ODAxYTE3NmM3ZTI0MmY2NjM2OTAgZGVzY3ItYnJhbmNoCisyMTUwMyA0N2JiMDYwMjNlODA1OTNhOTQ3ODhjZDJjNzI0NWM1NjFlYjY1MjFlIGxlZ2FjeS10cnVuaworMjE1MDQgZjQwMzJiZWQ0NzBmMzhmMmRmZjA4MjIwYzAzZTFiZDY4YmRmODVlNyBkZXNjci1icmFuY2gKKzIxNTA1IGM1ZTQ2NjM0YzdkOTc4ZTQ3MWJlODdlNGE4NTJiMTZjZTE2YjBjZDYgZGVzY3ItYnJhbmNoCisyMTUwNiA1M2Q0ZTcyYmI0NDNiMGIzNThiODEwNmM1MjRiODdmNTIzNjY3ZTA5IGRlc2NyLWJyYW5jaAorMjE1MDcgZmY4MWU3MzVlMTg0ZmUzNTFlZGY5ZjczZGZhZGQyNjI0NWY5MmViNyBkZXNjci1icmFuY2gKKzIxNTA4IDIzOTI3NjY0YzcyOTVlODZlZjYzYWEzZTMzNzhjYWQwMjJjNWIyYTcgZGVzY3ItYnJhbmNoCisyMTUwOSBlYjgwYjQ5YzdiMTVmZmM2ZDZkYTVmODcxMTRhZmEyYjBkMDBlMjM4IGRlc2NyLWJyYW5jaAorMjE1MTAgZTZkZWZlMjRjZTg1NTY1ZDhkMDA4ZjE5ZTAxMTA3NGEzNDY3MDkwZSBsZWdhY3ktdHJ1bmsKKzIxNTExIGI2ODk0MGNmMjAxNzIxMDRiOGEzY2IwNmMyNTdiMDZhNjU5M2I3YTAgcmVsZWFzZTIxLW1haW50CisyMTUxMiAxMTY1ZDNmN2VhZjNjYTVmZDA0ZTdkZGEyNjhmZjFjZWRlZTM1MzBkIGxlZ2FjeS10cnVuaworMjE1MTMgOTUxMjc0N2FmZTllOTQyYTc5YzQ0OWNjYzcxNmE5ODJmNjQwZjhiNyByZWxlYXNlMjEtbWFpbnQKKzIxNTE0IDU2ODJmOTZmMjVkZTI0Mzg5YTFhOWRlODBmNmE0YWM3ZGJmZDZkNDEgbGVnYWN5LXRydW5rCisyMTUxNSAyODM2YjI2ODYxODA2YzY5NTU1NGEwYTk0MGQyYWVlMzk4YjcyNDkwIGxlZ2FjeS10cnVuaworMjE1MTYgZmMxNjgwZmM5ZDIzNjg5Y2MyNDEzZWVkNzhlM2E3ZjljY2FhZTg5OSByZWxlYXNlMjEtbWFpbnQKKzIxNTE4IGJjYmJjNTFmMGJiM2Q5NmNiYTNjNjVjNTQ1ZmEyYzNkYWFmNWZkMjkgZGVzY3ItYnJhbmNoCisyMTUxOSBiMGY5ODQ3NTkxN2Q0ZTVlMTAwNGFiNWMyNWI0OWIxNTdiODZmMDA1IGRlc2NyLWJyYW5jaAorMjE1MjAgMzdkOWQyYTdjYTUwZGZhYmM5YzBiMjgyNTlhMWU3ODM0MGFlMTFiYyBkZXNjci1icmFuY2gKKzIxNTIxIGVlYjJlNzdjNWJhZDJhYTJkNmM5ZDBhZTAxNWQ5OTU2MzY2YTM2MTQgbGVnYWN5LXRydW5rCisyMTUyMiA3YWIwOWZiYjg2OWEwZTVjNzlmZjM4ZDRkZTQ3OGVjNjE2YTExYzVmIGRlc2NyLWJyYW5jaAorMjE1MjMgYTI5YmVmNDU3ZWQ4ZjAyYmNjYzUwNTQ2NTA4ODQwODdlMmE5YjBmMSBsZWdhY3ktdHJ1bmsKKzIxNTI0IGMxZTQxM2VmOTgxNzc2NTE0Y2Q3NmQ2ZWZmMmE4ZTQwMzkxN2YwOTIgbGVnYWN5LXRydW5rCisyMTUyNSBkZmNjMDM4YzJkNGNhNjk5OGZlMTRjNDM4YjA3MDkxZThkZTFlNmM1IGxlZ2FjeS10cnVuaworMjE1MjYgZDg0MTRmNTFkNGY1OGVmNzljMzZiZGNjMzQxNzY2Y2E5M2Q3NjYzNCBsZWdhY3ktdHJ1bmsKKzIxNTI3IDMzYjQzNTdhZWJiOGMzYjFiMmJiMzNjOTYzN2ZkYzMyMGZjMjQ5NmEgbGVnYWN5LXRydW5rCisyMTUyOCA0ZTVlOTc3YmQzZTJhNzQwZjI1NDMxOTZmY2Y0ZWJiNGQ3Y2M3OTEzIGxlZ2FjeS10cnVuaworMjE1MjkgMDkyMzViZTc0NjQ5Mzc1MTg2MTExYjYzMDA4NGNhNmZlM2YwMzk5ZCBsZWdhY3ktdHJ1bmsKKzIxNTMwIGQ1NmVjYWU1N2UwYzI1MjkzZDllNjY3OTZkMWQ5YWJjZDk1OTEyMGIgbGVnYWN5LXRydW5rCisyMTUzMSBiNmNlYmJlYjA3ZDFiMjkyMjRlYTZiZTQwNmUyZWRmNjgzYTRhZGJhIGxlZ2FjeS10cnVuaworMjE1MzIgZjgzYmRkMDc1MzYxYjFmOThhMjUzNDEyMGY0NDI4MDYzNTgzMDQ1YSBkZXNjci1icmFuY2gKKzIxNTMzIDlmMDEzZDEzYTI4YjFkYWYxODVmMjllYzVjMWI1YTliZmJkZWZlZGIgZGVzY3ItYnJhbmNoCisyMTUzNCBiNDQxMWRlMDE2NjJmN2Y5MjQ1OGYzZjQ4YmQ0NTI5OTYwMWY4ZWFkIGxlZ2FjeS10cnVuaworMjE1MzUgNzYzNjBhZmRiOTcwMjdmMDNmYWY2Njk3MmUzNTY5MDZjODI2MGIyYSBkZXNjci1icmFuY2gKKzIxNTM2IGZhMWU4OGViMTk5NGE2YmRkMmIwMWQwYmQ5MWNjNTIxN2VhNmI0NDggZGVzY3ItYnJhbmNoCisyMTUzNyAxNDE3Y2Y0NzBhZTllNWRmNDcxODllNTY2OGUyYTdiODFlMjAwMThlIGRlc2NyLWJyYW5jaAorMjE1MzggZDJlYjIzNjM2Y2M2MjdlYzk5NTUyZGY0ODBlZDkzZDYzN2QzYmY2NSBkZXNjci1icmFuY2gKKzIxNTM5IDQ2ODI1ZWQyMzUyOGEyYzNiYTAwYmZkZTkyMmVjNzk4Y2Q1YTExMjAgbGVnYWN5LXRydW5rCisyMTU0MCBmMzE1ZjU2NzRiOTVmNjJiYTYzMjkyNmE4OTJkMGVmMWEyNzk1MWQ2IGxlZ2FjeS10cnVuaworMjE1NDEgYTk3MzM0OTcxYTgxODZiNGE3OWM0NDgwODZkMTYwYWUxODNiZmE4ZSBsZWdhY3ktdHJ1bmsKKzIxNTQyIDJmZDEzNzdlYzQ4YzBkMmIxYTZiM2MxMzBiNzkzNThhYzk3MzdmMTEgbGVnYWN5LXRydW5rCisyMTU0MyBhODNmZjc3Mzk5OTI5ZjVjZmZjZGFiMTNlZjBiZDlmZjc3MWU2ODAxIGxlZ2FjeS10cnVuaworMjE1NDQgNmE1ZWYxOTk0MTUzNmUxYmQ0ZDI5NTU5ZTNkYzVlNGU0YjFiOTJlMiBsZWdhY3ktdHJ1bmsKKzIxNTQ1IDk5YzhiNWIwYzg5NjM4NDU4YWI3YmI2NTg4MzM1ZmNmYzg3NjlhYTUgbGVnYWN5LXRydW5rCisyMTU0NiA5YzM1NGU2OWE0ODllODU5MWJiYzZlNTIxYWEwOGZmMjNkOWU0OWMwIGxlZ2FjeS10cnVuaworMjE1NDcgMGI0MDYxZWVjNjhlMDM5OGMwYmJjM2Y1YmRiNWY3YzE4YzhlY2Q1NSBsZWdhY3ktdHJ1bmsKKzIxNTQ4IDQ1OTE3MzIzNzkxNTAzZDhjYTc2OTcwNmFhMDRlNTVkOGQ0ZjQ5MTcgbGVnYWN5LXRydW5rCisyMTU0OSA3MWYxNjFlOGExZDcxNjg2N2U4ZDgxMWUyN2QxYTFjODY1YWVmNjkwIGxlZ2FjeS10cnVuaworMjE1NTAgNDBlMGY1YTMzMmU5MGE2NmFlMDQwZGRhY2JkYjRmMWM0OGI5MzJlZCBkZXNjci1icmFuY2gKKzIxNTUxIGQ5MDUyY2Q5ZTBhNzYzZTFjMTk3NDZhOTM4YWFlZWNiYjNkMTFiNTUgZGVzY3ItYnJhbmNoCisyMTU1MiBmMDRhMWRkZDc0MWEzNDg2NTRlYjcwMzk3MmNiZTFlOTczZmUzY2UwIGRlc2NyLWJyYW5jaAorMjE1NTMgYmE4YTU2MmJlMzgzNThjZjVkNGU5MTIzMDRjZGUwYjlkODY2YjQxNiBkZXNjci1icmFuY2gKKzIxNTU0IDZhNWZlMWE5NDNjY2Q1YzE1ZDU1ZGVlMDBmNmU3NzVlZGFiZjcxMDQgZGVzY3ItYnJhbmNoCisyMTU1NSBlYWNiNzhkOWNiOGVkYjBjY2Y3YWJmZTQ1OWE5MDk0MjMyNjJiYzVmIGRlc2NyLWJyYW5jaAorMjE1NTYgNjYzNzAxNmRmNmUyOGY2NmY5NDI2ZjFlYWMyMDdmZTUyMjNjOTI0MCBkZXNjci1icmFuY2gKKzIxNTU3IDE3M2JjNzI0ZDExMGUyOTgwMzYxZjNkZjgxOThjNjQ0MDhlZDI2OWEgZGVzY3ItYnJhbmNoCisyMTU1OCAzZGFlMjUxYjVkZjVhMzI3NWRjYWY3NjE1OTliYTExZDJhOGQyMzQ5IGRlc2NyLWJyYW5jaAorMjE1NTkgNWM5NzY5MDE2NzNlNWQwNmY0MmQ1NDlhZDYxNDIwNDFmMTYzYzZlMyBsZWdhY3ktdHJ1bmsKKzIxNTYwIGY3ZGU5ZTA0ODdjZjE0YzJlMTQ0NjI0NTRlMWRiNGIwMWYwNmI2YjAgZGVzY3ItYnJhbmNoCisyMTU2MSA4OGVlOTY2NWRlMDU0M2RiZmY2M2ViMzA2NWNlMTY1MzcwNGE3YWI5IGRlc2NyLWJyYW5jaAorMjE1NjIgZjdmMDc2YmZjYWU5YzhjMmQyOGUzOWY2ZDcyMGVjYjkxMjc5NTJiZSBsZWdhY3ktdHJ1bmsKKzIxNTYzIGI2NmE2NTJlM2MzZmU3YjhhNzFmMDNlZDQ3MmE1MTIzY2RjMWZkZWIgZGVzY3ItYnJhbmNoCisyMTU2NCBhYTc2YzE3YTVmMDhjZDk5OWY4ODkxODhhYjg3YzdkYTEwNjBjZGJkIGRlc2NyLWJyYW5jaAorMjE1NjUgZGU4NTYwYzY4YzZmZGNkNjY3MWE1NjQ4ZmQ5ZWM5ZTBiOWZiNTQ0ZCBkZXNjci1icmFuY2gKKzIxNTY2IGU4YzY2MWRmMzAzODE0YWVkOWNjZjY4Mzc1MTZjYzhiYWU1NjU3M2EgZGVzY3ItYnJhbmNoCisyMTU2NyBjMTVhY2YyZTAxMTA4Y2FkM2JmMjM2M2ZhNTJjM2Q1M2M2NmQ1ZTJkIGRlc2NyLWJyYW5jaAorMjE1NjggZWIwNGEwNTY0YTgxODYwN2IxMDlkNzRiMDhmNDc0NGEyMzY4YzJkZiBsZWdhY3ktdHJ1bmsKKzIxNTY5IDk2NTMyNzJmMDM2ZjQwYTMzNjgxZWVlMTc1MjY0ZGQ4MTFhZDVmZDkgbGVnYWN5LXRydW5rCisyMTU3MCA2ODRiMDA5OTAzMmQ0NjJjOGEyYTNhZTliNjMzMzU2MGVhMDE1OWFjIHJlbGVhc2UyMS1tYWludAorMjE1NzEgMDVjNDkzNDZiNjhiOGRmNmU5MDYyYWIyOWRlMTQyYmNhNGVmODcyYiBsZWdhY3ktdHJ1bmsKKzIxNTcyIDMxMTE5ZDBhMThlNmZjMjkzZjA5OGQ5ZmYxMzg3ZDY4ZGIwZWMwOTQgbGVnYWN5LXRydW5rCisyMTU3MyAxMDMwMjg3MjUyNTNiMzg3ZDczZWViNGUyOTUwZWVkMjY5YTZhMmFmIGxlZ2FjeS10cnVuaworMjE1NzQgNTFjNTAxYzY4NjA4YzUzYWYwNjdkOWJiMWVjNmMzYWRiYzMxZTlkNSBkZXNjci1icmFuY2gKKzIxNTc1IDY1YzkyODdhYmY4NWJhODhlMDA5N2U2ZjI4ZGZlYWI4ZjA5YjhiMzQgbGVnYWN5LXRydW5rCisyMTU3NiBlZTdhODZmODczODM1ZmM1N2I2YmQxMzcyMTYwMjNkNDE3YWI4OWZkIGRlc2NyLWJyYW5jaAorMjE1NzcgYTRmYmMyZjAxMzlhODJkN2VkN2IyZDU2OGU2YThhYTNkNjYxOTRiNCBsZWdhY3ktdHJ1bmsKKzIxNTc4IDljMDRlMjNmOGQ0M2IzOTE4NmUyMzQ0YTVkZDI3ZDYxNjBlNDViZWIgbGVnYWN5LXRydW5rCisyMTU3OSBkNDVhYjcxNDZiMzdjZjg3NjhkNDBmZDU5N2VkYjY5ZDkxYmQ1N2RlIGxlZ2FjeS10cnVuaworMjE1ODAgNmRhODYyMzM5YTBlOTlkYjVkOTdlNWQzNjE0M2FiOGUzNWM2Nzc5MyByZWxlYXNlMjEtbWFpbnQKKzIxNTgxIDI5MzNhZTQ5MjE2ZjI2MzgyYzJhZjUwMjdiOWRiZjZkNGU2MjQ5MmYgbGVnYWN5LXRydW5rCisyMTU4MiBjYTJlYTc1ZGYzZjI1MmIwNzI4ODYxMzZhMzNiZmI4ODY1NzliMzYyIGxlZ2FjeS10cnVuaworMjE1ODMgOTQ2YjgxNmFkNWNiOGZkZjgzZDcyNWJjYmM2YzI4N2QyZDZmMzk5YiByZWxlYXNlMjEtbWFpbnQKKzIxNTg0IDlhZDRkYjk3ZTJkOWI2ZWQyOTEwOTM3OTFlY2JjYzk0Mjc4Mjc2OWMgbGVnYWN5LXRydW5rCisyMTU4NSBkNGZiOTQxNTNiMzA4MjA5ZTVmOWIwYzcxODk4NmZjZWY1NGZjNmQ0IHJlbGVhc2UyMS1tYWludAorMjE1ODYgZmJjY2YxOGFhNTdiZmViMGMzZDdmZTBhMTdlNDg0OWMzMDU3YTJmNSByZWxlYXNlMjEtbWFpbnQKKzIxNTg3IGE3OGY0YmQ1OWUxMGEwYjNlZjNkM2RlMzBkZWVjODQwNDAzNjliMzQgZGVzY3ItYnJhbmNoCisyMTU4OCBhYmM0YTNiN2QxOGUwMWM3OTFiMThhZmYwMWQwMDdiOTA0NGEyY2RmIGRlc2NyLWJyYW5jaAorMjE1ODkgMmYxYjRjZGNiYjA2YzQ0MjIyOWJiNjJmZWRhNzM0Njg1OTVhNThlOSBsZWdhY3ktdHJ1bmsKKzIxNTkwIGU3OGE1MTI2OGM4MWRmYzc1NzA3ZmJiNzA0YTI0OTkyNzA3N2M4ZDYgbGVnYWN5LXRydW5rCisyMTU5MSA4YzM4NDQ5ZGY3NDYwOTQxMWMxMzRhNGJkYmJiNDA3NWMzYmVjYTA5IGRlc2NyLWJyYW5jaAorMjE1OTIgZmVlNWI1NzE3ZGJiYjg5MGQ0Zjk0YWQ3ZGIwZGMzZWQ5YmYzY2I1MiBsZWdhY3ktdHJ1bmsKKzIxNTkzIGM2ZDg2NDVkNGM4ODVmZmY5OWEwMzI4OWI2YjhlNGZlOGRhYzU2MTkgbGVnYWN5LXRydW5rCisyMTU5NCA3MGFmNGExNzNhOTU2NGYwODgwOWU2OTY3MjcwMmZkNmUzYTdmOWNiIGxlZ2FjeS10cnVuaworMjE1OTUgY2IyZWFmNDU3Mzg2Yjc4NjkwMTQ0NDc4N2U0NTI3ZDYwOTIwYjU4NyBsZWdhY3ktdHJ1bmsKKzIxNTk2IDZiOTMxYmY2YmRmNjdmOWI3ZTg4NjkzODdjMGY0ZTk2NmQ5MGE4NjIgbGVnYWN5LXRydW5rCisyMTU5NyBjZjgxNDljZWRjY2QyMWFmMmVmNmM0MjYxMjg2YzZlNGRjYmRlY2ZiIGxlZ2FjeS10cnVuaworMjE1OTggMDA5MzRkNjJlNzgxNjcyMzJkYzM1YThiNjk1MTJmZGU2ZjU1ZGVlYSBsZWdhY3ktdHJ1bmsKKzIxNTk5IDNkYjkyMWYzZWRlMGJhNTVjOGI2MTk2ZDUyNzRmNDljYmIxN2YwYWUgbGVnYWN5LXRydW5rCisyMTYwMCBlZDBmMGQ5Njc1MGNkZTY1NjY0OTRlNTZhYzgxODQ0NTAxYjdhZDAxIGxlZ2FjeS10cnVuaworMjE2MDEgOTM5YmJjNTFjZDIxOTNkMmRjMjFkMzQ1NDU2Nzg4OTMyMjc3MzRlMiBsZWdhY3ktdHJ1bmsKKzIxNjAyIGMxYTVlNTE3NTkwN2IxMjYxZDY0Yjk2YTVjMmJjZDNhMzZlMDhkNDMgbGVnYWN5LXRydW5rCisyMTYwMyBjZGExNjM4M2JjNmJhYTJlYmQ3NWU0ZTk0YmU1Yzc1Njk3OGNjN2MyIGRlc2NyLWJyYW5jaAorMjE2MDQgM2IxM2IyNjk1YjdhNmI3NjAzYTJiYTRkZDdmZGU4YWNjY2FmZjNlNyBkZXNjci1icmFuY2gKKzIxNjA1IGI3M2UxZjQyMmVhOGJmYWEzYjI0YzYyN2NhZGU3NjAyYjdkZDIzYzMgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjA2IDQwNGM2MGUwMDM0NDcwNjczYjkxMmNlMTJjY2MwZDEwYjBiZjJmOWYgcHktY3ZzLXZlbmRvci1icmFuY2gKKzIxNjA4IDhkNmI0YWMwNDQwYjRjMGMyMTc3ZWFmYzJkYjBhZGE0YzIzMWY4ODkgbGVnYWN5LXRydW5rCisyMTYwOSBmZWVhM2QyZjM1NjNmMGJmYWY1ODZlMWI3YWYxYWM0MDAzYTAyOGUzIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYxMCAxMWQ5ZTQ2ZjE0NzA1MTcxOWYzODhhN2JjMmMyMmNiNmFiM2IxYTkwIHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTYxMiA4YjkzZDA0ZmE3YTliOWY1MGE1ODZmMGE4Y2FhYmE3YTA5ZjcwOGM5IGxlZ2FjeS10cnVuaworMjE2MTMgOWY3NDk2NWUwZjM1ODU1Yzg2MGM4ZjE4NGVjYjBiZWU4ZDA1MjYyNSBsZWdhY3ktdHJ1bmsKKzIxNjE0IDM0ZDVlNDhjMWVkMjYyNTdjNWFkZjU3OThiNWQ2OGE2YTk4NjBjYTYgbGVnYWN5LXRydW5rCisyMTYxNSA2YzUwMWQ4OTIwMDMwYTkyYWRkOTZhNGNmNzIxNGI4YTE4MDNjZDU4IHJlbGVhc2UyMS1tYWludAorMjE2MTYgNDk4ZDdkZDk5ZGE0MWU5MjY2Mzg5ZjFlMzE4NjEzMjUyZDlhMDVjYiByZWxlYXNlMjEtbWFpbnQKKzIxNjE3IDk5YWQ2ZmQyNzllOWJmNWE2MDlhMTBlNTRhOGYxNDM4YzE0NjMwNGYgcmVsZWFzZTIxLW1haW50CisyMTYxOCBiMWExZGUxOGY5MWZiY2QwNzQ2NDU4MTk4MzY4MTkzZWMxOTJlNWFjIHJlbGVhc2UyMS1tYWludAorMjE2MTkgODdlZTFjM2ZkMGM4MjI3NTU4NWU3YjA3YTdhNGY4YWQ2ZmIzOWMzYyByZWxlYXNlMjEtbWFpbnQKKzIxNjIwIDgyYTM0OTMyZWEyMmQ2MjlkMTRjZTJmODdmMzg3MjY2YTYyMWNiODUgcmVsZWFzZTIxLW1haW50CisyMTYyMSBjOTkxMjlhMGE0N2Q5MDdiYjdkNGYzMjVmMDA4ZGNmY2Y3NDZiNjhiIHJlbGVhc2UyMS1tYWludAorMjE2MjIgMDRlMjVjMDE4NDliNDRiYjQ0ZmUyOTQ3NGI0Njc5NTkwY2NjODU5ZSBsZWdhY3ktdHJ1bmsKKzIxNjIzIGMzOTdkNGNkODM3ZDIwNmY1YTEwYTMxZDljMmQzYmFjZTAwNWE1OGUgbGVnYWN5LXRydW5rCisyMTYyNCBhNGQzNTA4YWVmYzBmOTU4YTk5MDA4Y2MwOTQ0MWEwOTEzM2RjZmQyIGxlZ2FjeS10cnVuaworMjE2MjUgZGZiNzc0MjJjNjA3NDI5NjcwMjA3NDFiMmQzMDEyNDczMmZiNTI2ZCByZWxlYXNlMjEtbWFpbnQKKzIxNjI2IDEwNmM5OTk1ZGI2OGFlNWM4Zjc2OTgzMGM3MjYxYjA0ODcxNDc5YTkgbGVnYWN5LXRydW5rCisyMTYyNyA3OTVhYTQ1OTAyMTEwYTk5ODYxZDczZmI4NzM2YWJmYTIwNmFlYmQwIGxlZ2FjeS10cnVuaworMjE2MjggMmUyZWY0NzExNGY3NzI0MGQwNjhiMWMzNzNlMzY4MmE2NWYzN2Y0OCByZWxlYXNlMjEtbWFpbnQKKzIxNjI5IDJmYmIyNWMzMDcyZWI2ZDQ3ZTY2ODExMzQ5NjAxN2VkODE0NzNlNWMgbGVnYWN5LXRydW5rCisyMTYzMCBlMDYxMTU1Zjk5ZThlYjA3NzA0M2YyMDQwOWNkMGE5YzliMzgwY2Y4IGxlZ2FjeS10cnVuaworMjE2MzEgOThiZGU2ZTVlNzQzMmRjN2Q3NzY3ZWY3NGNlOWIyNzk4OTk0YTUxYSByZWxlYXNlMjEtbWFpbnQKKzIxNjMyIDI2ZmM5MDVkZGMxMmU1NWI3Yjc4MWNkYjQzZjYwNDMzMTkxY2ZmZGYgbGVnYWN5LXRydW5rCisyMTYzMyA2ZjhhMjQwMmY2ZmE0YjNmOTFlNTBkZWMzMWY0NDc3NTYxZDRhMDljIGxlZ2FjeS10cnVuaworMjE2MzQgOTk3N2NmMjA2NTMyYjE0NmYzMTkyNzJhYTgyMzBiYjljZGQ0YjhmMSBsZWdhY3ktdHJ1bmsKKzIxNjM1IDRjMzNkYzM0NTkwMmE5MTU3ZmYwMzk0MTg2YTdiNTZlNWUzY2ZkNzQgbGVnYWN5LXRydW5rCisyMTYzNiBjN2EyNGQzYjM1OTczOTY5NzI5N2JmMGQ1MWU5M2NkMTM0M2U0ZmFhIGxlZ2FjeS10cnVuaworMjE2MzcgNGI3ZmQzYWUxZDkzMGI5MjI1OGU0Zjk3Y2YwNmU4OTIxYmIxZmU0NSBsZWdhY3ktdHJ1bmsKKzIxNjM4IGY0MDkyYTVmN2JiYzcxNDBiMWQ0MDk3MTYzZDIwODZjOThjZTg2MmEgbGVnYWN5LXRydW5rCisyMTYzOSAwNjliODE1MTliZTc4NTBiYjQwYWEzY2U2NGRiNDNiMzJkZTQxNmNhIGxlZ2FjeS10cnVuaworMjE2NDAgNTg0NmMyNThiODg5NjM2OTZkOGU1NWVjOGZiYWI4MzQ3OTdkYzZkYyBsZWdhY3ktdHJ1bmsKKzIxNjQxIGM0Zjc1ODU3NTAyYTZkM2Y2NzE4ZjA3NmFiZjYzOWQwNWE2ODdmYWUgbGVnYWN5LXRydW5rCisyMTY0MiBiYTFmM2RlMTAwODU0MzRmMTFlZjk3MTE3MzVmMWUwNWI1Yzg4ZTQ1IGxlZ2FjeS10cnVuaworMjE2NDMgNDI3NDFlNjc3MzM4NDFmMjkzZDhiZGE0ODkxMGI4ZmRiZTIyODEwZSBsZWdhY3ktdHJ1bmsKKzIxNjQ0IGVhN2M3N2ZlNTBhZTk5ZGFhNGQwNWU5MDE5YmZmYTg3MmM2OTM4NzUgbGVnYWN5LXRydW5rCisyMTY0NSAyYmI3NWExZjMxODQxOTI4NWNkOGMyODc4OWQ5ZDRlNzA5NjcwMjQ4IGxlZ2FjeS10cnVuaworMjE2NDYgZTZlY2Q4YTA3ZWE4OGYyN2JmNTUwNDhhZTZiYzI5NTA4ODU1MTRhOSBsZWdhY3ktdHJ1bmsKKzIxNjQ3IDQ2ZGQ4NzNkMjZmNjQ0ZjQ5ODMxYzZmODRmNGNiNWE3YTg2YTMyYTkgbGVnYWN5LXRydW5rCisyMTY0OCAyMDJkZGRiN2M5NzQ3NGNhNzA2ZjY3NjY0Y2YxOGM0YjdkMmE1NWVkIGxlZ2FjeS10cnVuaworMjE2NDkgODYyNjE3MWIyYzcyNTI4NTUyYzE2MGFlNmM2MzU5NTBjNTY5NWQyMSByZWxlYXNlMjEtbWFpbnQKKzIxNjUwIGNjMjQ4Njc1N2M4YmYzZTIyYmI5NGM2YjMzNTJiYzAyN2ZmNjNiZGMgcmVsZWFzZTIxLW1haW50CisyMTY1MSBjNWI1MDU1MmQ1NmQxZjYyNzNjMzFjNjNjNmJiMTNkNTA4YTZiMjU5IHJlbGVhc2UyMS1tYWludAorMjE2NTIgMzJjYjI5NWQwODYyYzIyYTFiMDdlODE0NTkxNzZlYTBmN2U5NzI1OCBsZWdhY3ktdHJ1bmsKKzIxNjUzIDg2YjFjODIxNjBlYTk4ZDU3YTBmOWY0MWEyZDBiYjg5ZThiYjIxNmMgbGVnYWN5LXRydW5rCisyMTY1NCA4ZGU5MTA0MjE3M2Y3ZjRlMTAxZmE0ODI3ZGMwOTJhZjhhYjc0ZWViIGxlZ2FjeS10cnVuaworMjE2NTUgMjU0YTRhOWFmMGZiYzZlODU4MGU0OWJhMmM1YjcyMWI1ZGFkMTMzYyBsZWdhY3ktdHJ1bmsKKzIxNjU2IGY0ZWEyMWEwZjk1NDJkMzdmZDM4YTRhYzU2NjM3NjM0ZjNkMGQ1NzEgbGVnYWN5LXRydW5rCisyMTY1NyBkMjExNzA5ZjI1ZjFlZWNiNDE3YWM1MjE5MTBlZTE4MGJjMjM4NjRjIGxlZ2FjeS10cnVuaworMjE2NTggYjJiZjg4ZTA2ZmM1OTk3YjVmZGRmNjJkNDEwOWMzYTRjMWZmODEzOCBsZWdhY3ktdHJ1bmsKKzIxNjU5IDY1YWZhYzg0ZDRmNzMyMzZlY2ExM2U3ODM2NDA0ZTg3MTc2OGM0YmMgbGVnYWN5LXRydW5rCisyMTY2MCA3MzI4YzhjZDkxN2Q5ZWY2MGVlYjE4NmQwYWMzYWZjMDhhZjkyOTBhIHJlbGVhc2UyMS1tYWludAorMjE2NjEgYTU5Y2E4NDQ2ZjkyYjZlZGI3N2ExOWMzMWIzOTkyOTRhNzk2Yzk4MCBsZWdhY3ktdHJ1bmsKKzIxNjYyIDQ4NjEzNzM5NTkxNzZjNThjZDI2N2ExMWI0MTM3NDljNGQ3NmQ0MDMgcmVsZWFzZTIxLW1haW50CisyMTY2MyBmNzJiY2VjZGQxZjdlMmZjYjFkMWExYzIyYjkxMjA0ZGNjZWQxYzhhIHJlbGVhc2UyMS1tYWludAorMjE2NjQgZDk3YzgyY2JkNzY2OTFjY2MwMzZiYjE1ZGJhOTVjZDRlNmNmNjc1MyBsZWdhY3ktdHJ1bmsKKzIxNjY1IGQ1MDI2NmI1ZGM0OGM1YWUxY2YwNjQ0ZDU3OWI5OTBhNDQ1MGVhMzcgbGVnYWN5LXRydW5rCisyMTY2NiBlYWU5MjcyOTAzNTcxYTI3N2NiMDhkZDRiOWE0Nzg4NzlkNmFmYTMwIGxlZ2FjeS10cnVuaworMjE2NjcgYjFkNmFlMzI5ZGQwNThmZDVhNTY1NWI0ZWIzMzM5MmM2MTRmNmMzNyBsZWdhY3ktdHJ1bmsKKzIxNjY4IGZkOTQ2MTM3M2NhYjMwMDhiODI5MmE1NTEzOWNhNWJmNDMwNzE2ODggbGVnYWN5LXRydW5rCisyMTY2OSAyMWI1YjJlYWViM2Q0MWU2MjgyM2ExMzNlODRhNjE2ZTkxNWEzYjNhIGxlZ2FjeS10cnVuaworMjE2NzAgMWZiY2Y1NDljMWM0NTM1ZjNiZTgwM2ExODQ0ZDgwNjg0MGM3MjI0ZiBsZWdhY3ktdHJ1bmsKKzIxNjcxIDY0ZmE3MmE4NDM0NzQ5MDAzOTA1ZjgwZDVhY2U0YmYwYThhODc2MDEgbGVnYWN5LXRydW5rCisyMTY3MiAyM2Q4ZWIyOWU0ZmEwZmZlNjgzZjJjMDFjOGE5MTdlNDE4Mjk1ZDE2IGxlZ2FjeS10cnVuaworMjE2NzMgZTRkNmE3Mzk5OTdkOTYxZDJkNDgyMDZkMzAyZDYwYzdkMWY2ZmQwZiBsZWdhY3ktdHJ1bmsKKzIxNjc0IDM3ZWU5Y2Q1NGExMTNmY2IyNTI1MmJjMzE3NWE0NDc5MmMyNzI0M2MgbGVnYWN5LXRydW5rCisyMTY3NSBlMDY0ZjUyNmE2ZWZlODE5MmEyYWNjM2E5ZjlkYWM1MjZhMTZkZTc3IGxlZ2FjeS10cnVuaworMjE2NzYgZmM1YTNlYzA3NDVlMWQ2Yjg3ZjU5MGEwNTcxZmNiOTcwNTU5ZGU5NSBsZWdhY3ktdHJ1bmsKKzIxNjc3IGVjOWFhMGRjOGI3MzYwNmE3MTZlYjFlYTBmOWMzMjcwMDQ1MjYxYmUgbGVnYWN5LXRydW5rCisyMTY3OCBiZjU2MjQxOGRmYjgxZTBmNjZhM2E0YmFiMDU0Y2EyNGJjYmRlZWViIGxlZ2FjeS10cnVuaworMjE2NzkgY2QzYjRkZDNlNGNhMTkxNzk0ZWZlYjMwMzUyYWExNGJmNjA4NTc2ZiBsZWdhY3ktdHJ1bmsKKzIxNjgwIGVhMjZjOWI2NmZiZDlkMmVhYjM1M2ZkY2MzN2RjY2FkMGZiZTNhZjYgbGVnYWN5LXRydW5rCisyMTY4MSAwYzcwMTM1Mzg5OTgzY2M0NWM1NDJhMTM3MjNhYWVlZWY3ZmYxNDEzIGxlZ2FjeS10cnVuaworMjE2ODIgYjI4N2YyOTI3ZGIzOGEzZTUxZDBkYzA1Yzg5MTE0ZWExMTQ5NTg5NCBsZWdhY3ktdHJ1bmsKKzIxNjgzIDNmY2Y5OGNhNmM0YTE0NmY1YWY3YzhmYTMwOWQ0YWNhMmYxNzZlMmIgbGVnYWN5LXRydW5rCisyMTY4NCA5MDYwYzA2YmVkYmM0MzE4NDQ0YWIyMGE4YTkxOTM3Y2ViNmFmYTljIGxlZ2FjeS10cnVuaworMjE2ODUgYzQ5MzAxMzFmNWUzYWM3Mjc1YTY3YzRkMzUyNjE5Y2Y4YTNmNmM0NCBsZWdhY3ktdHJ1bmsKKzIxNjg2IGMxZWM4N2YxMDQ0YTQ5Y2QxNzg2ZTgwZTllYWIwZGI1MGRhN2JiZjYgbGVnYWN5LXRydW5rCisyMTY4NyA3MDQ2MWYyZDIxMDk4ZDFjNTI5Mjg0MzAyNjBkOWUyZjMxOTQ2ZDU0IGxlZ2FjeS10cnVuaworMjE2ODggZTY3NWZmNTc0OGYwNWYyNzlhYzQ2OWY0NDNlYzE2MmQwMDNmM2Q0ZSByZWxlYXNlMjEtbWFpbnQKKzIxNjg4IDIyYmVkMmRkMWIyODY1NjRkZWE0ZDlhNjdkNGVkODBkYzMyMjUxOTMgcmVsZWFzZTIxLW1haW50CisyMTY5MCAxMzc4M2UwYTM0MjM3ZDUwZDUyYWE5MjBkMDc1NTlkMGVhMTI1MGMxIHJlbGVhc2UyMS1tYWludAorMjE2OTEgNmQ0YzhhMjliZTcwODdmOTA2ZWUyZjQ2OWM4OTRhNjVhY2Q1NGIxZSBsZWdhY3ktdHJ1bmsKKzIxNjkyIDA0N2Q3YzQ4MDY4YWRkN2EzNTA0ZDQxMmQ2NzJmNTRiMzNmNWM0MjAgbGVnYWN5LXRydW5rCisyMTY5MyBmNTNkOGM1MmM4MWY4ZDllMzRkMmYxOGMwNjliNGJlNzk5ZDkwMWJkIGxlZ2FjeS10cnVuaworMjE2OTQgZjYwZTg1Mzg0Yjc5ODFhNmVmOGU4YTExZWJlMTU5YmMxMmIyY2MxMiBsZWdhY3ktdHJ1bmsKKzIxNjk1IDAwMjNhNzhjMWM4MmM3MTUyMGQ0NTM1N2FhN2NhZjdiZTBkMzIxOTUgbGVnYWN5LXRydW5rCisyMTY5NiAwOWE1ZmUyYTc0MjY3Mzg4OWMxOWIxMjM0OGEwMzVhMjRiNTZhNDUyIGxlZ2FjeS10cnVuaworMjE2OTcgNzI5MzlhMjIzMGQzYmYxNzA4OWEzZDI1MmNmZmYzOGYyMjI1MzU2MSBsZWdhY3ktdHJ1bmsKKzIxNjk4IGJmYWE5N2ExOWIzMDgzZjM0Zjg3YWNiNDllZTFjOWFkZDFkMDAwMmIgbGVnYWN5LXRydW5rCisyMTY5OSAyOWJlODcxYmQ4NzY4NTY2M2RiODUyMjdhOTY1OGVkMmE1MTE3NWE5IGxlZ2FjeS10cnVuaworMjE3MDAgNjQxN2Q1ODgxNmNmZGQ1Yjk2NTQwOTA2MTdiOTJjOTZhZjQzYzRjNSBsZWdhY3ktdHJ1bmsKKzIxNzAxIGEwNjgzMWIzNTQwNzYxYjA4NWJkY2RjOTMxNWE1MzAyYzA2OWJhZDEgbGVnYWN5LXRydW5rCisyMTcwMiBmZDg5NmI3Y2FiYjc0MjI1MzJjMmVlNDUwNmY0M2I3ZjdiN2I1ZDkzIGxlZ2FjeS10cnVuaworMjE3MDMgNzQ2MTM0OGQ5OWRhNDQzNmZmZDI4NjZjOTg2Njk0NzkxMGFjNzA3MSBsZWdhY3ktdHJ1bmsKKzIxNzA0IGVhZTE3YzU3NjcyNzQyNTk3YTA2Y2ZhNzQ2ZGUzY2RlYWZhOWE0ZTUgZGVzY3ItYnJhbmNoCisyMTcwNSBjZmU1M2E2MjBjZmZlODEyNzM2OGU2OWIwMGFiZGFkMmYzYjBlNzY1IGRlc2NyLWJyYW5jaAorMjE3MDYgNDljMDdhY2M2ZTgzZTdiN2I2NzFiZjcxOWU1YzY2ZjVjYTI5ODI3NSBkZXNjci1icmFuY2gKKzIxNzA3IGM5NDAyODdkYmE3OWJkZjU2MzkwYWFkOTNlNWZhNjM4Njg2YWIyYzUgZGVzY3ItYnJhbmNoCisyMTcwOCA2NDZlMDUyZTA1YmVkNTFlZjJkNDMwMWVhNDVjMTdjN2JhZjJlMDVmIGxlZ2FjeS10cnVuaworMjE3MDkgNThlYjUwNTI4NjkyYzhlNmM0MzgxNzJiOGVjZWNiZDAxZjE5N2U3MyBsZWdhY3ktdHJ1bmsKKzIxNzExIDEyZTdhZDEwODIyOTE2MDVkZTU1NGI3ZjQ5MjA5ZDRiNjc2MTY0ZjcgbGVnYWN5LXRydW5rCisyMTcxMiA5YjQyZGY0Yjc0ZDQ1NjNlYTRmOWIzZmFlZmMzMzUyMGEzZTBmNzVkIGxlZ2FjeS10cnVuaworMjE3MTMgZjQwMTQwNTg4YjFlODNhNzVmYWE1NWUzYmIzOWM0ZWQ2ZDUyYjY3MiBsZWdhY3ktdHJ1bmsKKzIxNzE0IGU3NjBlZWQ1ZjY4ODJjZDQ3NjBjNTA3MDgxNTAyNTVlN2M0MjI2MTYgbGVnYWN5LXRydW5rCisyMTcxNSBhYTM0NDM2MTQ1ZDAzM2RiYjAyNDE0MGM2YzI3M2FkZWUyZTA4YmJiIGxlZ2FjeS10cnVuaworMjE3MTYgNWQzOTY0ZTYyMmE4NTJjYzNiOWU5Njc0NGZiNjFhNjhhMzUyMmMxMCBkZXNjci1icmFuY2gKKzIxNzE3IDYzOGQ5MDQ0ZmJlMjFlYjhmYTYzOGQ1YjBlYzg3NzQ5NDU3MTc2NmEgbGVnYWN5LXRydW5rCisyMTcxOCBhNzVjYTIxN2Y3Mzc3N2Q0ZGZmNjY1ZjZlNTAwMDcwY2VlOTcwZjVkIGxlZ2FjeS10cnVuaworMjE3MjAgYWNlNzBlMzI3OTI5Y2FiYmRlNWQ5MTlhNWQ1MmQxMDU4MGY1OTBiNyBsZWdhY3ktdHJ1bmsKKzIxNzIxIDU1NTExY2FhMjRlZWI1OTZlYzZmNzgyNjMxYjVjNWMxMDg0MmE3MTcgbGVnYWN5LXRydW5rCisyMTcyMiA1ZTFhMTRkOTkzYjM1YjkyMzU2Mjk4YjUzYWFhOWRiMmU3NTEwMDBlIGxlZ2FjeS10cnVuaworMjE3MjMgOTliNWQzMzRkZTFlNDMxZmRiNmYwMGQwNWVjZWUxMTkyOTNkN2Y5MiBsZWdhY3ktdHJ1bmsKKzIxNzI0IDE0NGEzMDA1YjViYWUzZGE1MWMyYTRmM2VjODc2NWE2Nzc1ZTk1NGEgbGVnYWN5LXRydW5rCisyMTcyNSA5Yjg1NjRmNmUzNGQ1MWNhZTI5NTgyZGJhMmNhZDhmZjAwYmI2OTI5IGxlZ2FjeS10cnVuaworMjE3MjYgYzQwNDEwNzJkMTAxMDEwZGIyZDNjODU0OWY5Nzc4NWYyNTkzYzBjNSBsZWdhY3ktdHJ1bmsKKzIxNzI3IDM0NmRjYWZjODc4YjQ2NmU2ZTA4MWYyOTdjZTdiMWU5M2RjNzQ5ZWMgbGVnYWN5LXRydW5rCisyMTcyOCA2NzA0NjRjOTRiOTJhNjgyMzIwZDE3OTQ5MzEzNWM5YjBjM2E4YTNiIGxlZ2FjeS10cnVuaworMjE3MjkgN2Q3NzYxNGZkMGI3ZmQ3MDFjNzg2MTgzYmFhNjkzZjMyMDc4OTA0ZSBsZWdhY3ktdHJ1bmsKKzIxNzMwIGM2YzMwZTQ1YWI1YmE2NjJiNTg1ZjM0OTMzY2Q2OWM2NDM4N2U5MDAgcmVsZWFzZTIxLW1haW50CisyMTczMSA0Mzg0ZjkxOWI0NDg1NDFmZjEyOGNlOGMzMDBjYjk2MjY0NjhiM2Y1IGxlZ2FjeS10cnVuaworMjE3MzIgOGQ2MmRkZTc2MjdjZWY3Y2YwZTRmODhjMDNmYzNjNjQxZjFlYmExZCBsZWdhY3ktdHJ1bmsKKzIxNzMzIDEzMmEwNmFkOTZlZWMxYTVlODlkOWI2ZjMyMmFkMGVmMjRiNTU3YzkgbGVnYWN5LXRydW5rCisyMTczNCBhODYxOTVlNmM3ZTMzMmE1N2I2OGJhYjBjM2VkMmY4MTRkZWYxMjY3IHB5LWN2cy12ZW5kb3ItYnJhbmNoCisyMTczNiA2YjYwZDBkOTc0YzMxZDViOWRjOTZlOTdiOWU4MjUxMzFkN2M4YTdjIHJlbGVhc2UyMS1tYWludAorMjE3MzcgMjg4MTg3NjZhNjRjYTVmOTViYmQxZjY4ZTZkM2E4ZTJlMjA3ZmM2MCBsZWdhY3ktdHJ1bmsKKzIxNzM4IDYxZTUwZDBhYTU5YTFkODk2OWQ5ZDg5N2U3MzQxZWI5YzI5ODVkOTYgbGVnYWN5LXRydW5rCisyMTczOSA0MDUzNTJlYTUwYTA3ZDMxZjY1ZDdiMWJkMDUzMTI4MGMxYWQyMmMyIGxlZ2FjeS10cnVuaworMjE3NDAgNDI0N2I0YjJjNDhlNjkxNDdhOThiMWUxYTM3MjJhZTg4MjNhZWEzNSBsZWdhY3ktdHJ1bmsKKzIxNzQxIGZlNDQ0MjhmOTc3NGRmODQ1YmJmMzczNWNmYThhYTVhMzk2ZDE2MjUgbGVnYWN5LXRydW5rCisyMTc0MiAzMDQxNGI0MWZhYzk3ODRiNmYxMzViYTc1YjFlYTI5NDEzMDNiM2ExIGxlZ2FjeS10cnVuaworMjE3NDMgZTk5NTQ1NjdjNTRiMDJmNzA0YTljZmQwYTEyNWRkNWRmMGRkNzRiOCBsZWdhY3ktdHJ1bmsKKzIxNzQ0IDIxYTA0ZDE1ZTM4YzI2ZDgzM2QxZTAxYjk2OWRmZTNiYTJlNzg0MTMgbGVnYWN5LXRydW5rCisyMTc0NSA1YjgyMGQ3YTNlN2MxM2UyOWYzZjM0MmNjOTQ2NmQ4YWI0Y2ZmOTExIGxlZ2FjeS10cnVuaworMjE3NDcgMjc4MzE4MzA0MzU3OTE5MmRmNTAzNDk3Y2I4OTIyMDQyMjczNjQ4MCBsZWdhY3ktdHJ1bmsKKzIxNzQ4IGM3YmVmNmFhNmY5MjY3MjdkMTE5OWZiYWNhN2E1ZTU2YWMwNzJkN2EgbGVnYWN5LXRydW5rCisyMTc0OSAyMWM1NDliNjY3MDI0MTFjOGU2Mjg3MTUzMTM3YzRmMjU5MTI5MTJlIGRlc2NyLWJyYW5jaAorMjE3NTAgMTE1Mzg4MDU5N2NjNzJhOGNlY2JkMWViM2U4MzUyMDMxOWU3MDQ2NiBkZXNjci1icmFuY2gKKzIxNzUxIDlhMzczYTE0M2ExMzBmMmFiYzg2MzQwMGI4MjMxYTAzZTIzMWY5ZGEgbGVnYWN5LXRydW5rCisyMTc1MiAxOTI1MGY5MTgxZGM0NGUxYTk1NmE5Mzk1N2Y2ZGI2Yjg0MmM4MjA4IGxlZ2FjeS10cnVuaworMjE3NTMgMjNlNmJiYTg4ZDZhN2ZjN2Y1YjljOTg2MjEwNjk2YjYzZjYwNTk4NyBsZWdhY3ktdHJ1bmsKKzIxNzU0IDI4YjYyOTFlMmE1Y2Y3ZjU1MmQzZGI5OWZiN2U5MDA2Y2I3NmQ1MWEgbGVnYWN5LXRydW5rCisyMTc1NSAzZjI4M2M5OGU4MTUwNzliNTRjZGZkM2EwNzNkMDYzOWNjZDNjYjEzIGxlZ2FjeS10cnVuaworMjE3NTYgMTE1MWFiOGEyY2RmZTU4ZTI1MGI1MDU2MWRkYmQxYjVlOTExYzg3MCBsZWdhY3ktdHJ1bmsKKzIxNzU3IDdmZGI0MTYwM2U5YTNjM2MzMTBjYTk3YTc0ZTAwNDQ3ODQ4Njg0ZTIgbGVnYWN5LXRydW5rCisyMTc1OCA4NTk1MDUyMjQ4NTAyMGVmYjAxZjhiMjM4ZmNlODVkZjM1YTJhZTk5IGxlZ2FjeS10cnVuaworMjE3NTkgNzIxZjFhODkzZmJiYzI0OGNjMDcxZmUzMjNmNThjYzNlZTI1NWU0ZiBsZWdhY3ktdHJ1bmsKKzIxNzYwIDlmNDNlM2E5YmI2ZWUyNTI2ZTI4OWM5MjZkNTliYTgyNjc0NDk1ZDYgbGVnYWN5LXRydW5rCisyMTc2MSBiOWQ0N2QwODNkMmNhZjM0Mjg3YjVkODk3N2Y0MzI3OWY1OGU3NDdhIGxlZ2FjeS10cnVuaworMjE3NjIgMjc1YWZiNWE3NjdlMmJkOTExMTBiOTc5NTYwM2VjMGJjOTdkOGI1OCBsZWdhY3ktdHJ1bmsKKzIxNzYzIGY4NGFjYzlkZmQwYjVjZGNiYWQ5Y2YzMTQwMmU3MDA1ZWQyZjUyOWIgZGVzY3ItYnJhbmNoCisyMTc2NCAwODU3ZmI0ODlmYTNhNjMxMDc3YTk3MzFkOGU2MTVmNzAzOTM5ZTZmIGxlZ2FjeS10cnVuaworMjE3NjUgNzMwYWIwYmVkNmFiNDZmMGExNzA4NzhjZjFiNDhjOTc1NDcyYWU1MyBsZWdhY3ktdHJ1bmsKKzIxNzY2IGZhZjdmMTcxYTlmMzIyNDA5YjUxOGUwMTZmYzM1NWU4ZGEwZTdlNDQgbGVnYWN5LXRydW5rCisyMTc2NyBkY2QxYTBhYWFlY2I0OWNhNzk3Y2E2Y2VhN2U1Yjg2ZmQ3ZTc2MzMyIGxlZ2FjeS10cnVuaworMjE3NjkgMjFkN2JhZTlkYzJkYjZjMmNiM2Q3MmQ5ZTNmNzNkOTJhOTNhODA4NSBkZXNjci1icmFuY2gKKzIxNzcwIDU5NDQ2ZDBmODM0MWRkMTczMGYxNjFlMDNlMWQ3Mjk2MjE1NzQwOWMgbGVnYWN5LXRydW5rCisyMTc3MSAxZjljN2I0Y2VlNzdhZmU5ZmE4YTRhNWU0ZGVlMTEwMDA3NzZiNTJjIGxlZ2FjeS10cnVuaworMjE3NzIgZmRiMzZhMGM3ZTZlOThlNjIwYmZmMWZhMDY0ODg2NTYxMGU2ODEzNSBsZWdhY3ktdHJ1bmsKKzIxNzczIDRhYzk4ZmU3YWJkMmI1MTY3NjI2OTg2NzQ2ZGU0MmM0NjQ1MzE0NDMgbGVnYWN5LXRydW5rCisyMTc3NCA2MjM4YTIyMmI3Y2Q2NThhYjQzMzllYTZjM2E2YmE0Nzc1Y2E4ODljIGxlZ2FjeS10cnVuaworMjE3NzUgMzg0YTYxZmE2ZjVhMjA0N2RjNGYzOWVmNmZiMzU5ZDY3NzdjYjE0MyBsZWdhY3ktdHJ1bmsKKzIxNzc2IDBhOTBlNWVjNjFiNjk4MWU2NTZlN2VjOGQ0OWEyOTY0ZjgzNzU4NzcgbGVnYWN5LXRydW5rCisyMTc3NyAwMWZjOThiYTM5OWYxYThhZjFmMzlkNGY3NDM0NGJlNDBmMjE0ZTM0IGxlZ2FjeS10cnVuaworMjE3NzggMTlkY2ZiOTM1ZjYwZTRlMGY4YWNmODYxMjhiYzMwNDI4ZDRjYzc3MSBsZWdhY3ktdHJ1bmsKKzIxNzc5IDI3MTA2NGRhMWQ1MmNjZWM5OGZlMTg1MzEwMGI4NTgzNGM4Y2Y1ZGYgbGVnYWN5LXRydW5rCisyMTc4MCAxZjNkNzY2ZGFkOTFlNWVlMjY5MjhlNTkyNTk0YzIxY2Q1Y2ZkYmIxIGxlZ2FjeS10cnVuaworMjE3ODEgOTE1OTIyMmU2NDYzZmQ1OTQ1MDQ4YjY3ZDNjOWQ3NjJiYjZhNWFkOSBsZWdhY3ktdHJ1bmsKKzIxNzgyIDEwNzE3ZjhhNmQ5Njg0YzI5N2UxNTA5YmFjZmU0ODVhZjRiMDNkMmUgbGVnYWN5LXRydW5rCisyMTc4MyA5OGQ4MWNiZThiYmQ3ZmRiMzk2MTc0MDVhMmEwZWE3MzIzYWFjNzM0IGxlZ2FjeS10cnVuaworMjE3ODQgMzVmZWM0ODdiY2VmNzc3MzhkNWZiM2ZmYTlkODM4YzcyZDE0YWEwMyBsZWdhY3ktdHJ1bmsKKzIxNzg1IGU1ZTViYjU0ODJkM2I3MmM2NzExMjZhODk3MTM4Y2I0MTg3ZTdhMDAgcmVsZWFzZTIxLW1haW50CisyMTc4NiA5MjBlZTdmMmE1OTIyZTY4NWVhOGM1NDMyMDdkOTNlYzY1YzYxN2VmIHJlbGVhc2UyMS1tYWludAorMjE3ODcgMmI1ZTczODNjNzdhMTZmMzRlZGU0ODc2ZTNmZjgxZjhkN2Y1ZjRiMCBsZWdhY3ktdHJ1bmsKKzIxNzg4IDI5NTUxOGU2ZmNlYWJlMTkwNzYyNWQ4NTRiZWQ5OTAyMmFmZTBmZWUgcmVsZWFzZTIxLW1haW50CisyMTc4OSBjMDZkODE3OWU5ZTNiMzM2ODk2YTU2ZDlkMjA4ZDM4NmQxNzg1OTg3IHJlbGVhc2UyMS1tYWludAorMjE3OTAgOTE0OTQwOTQ2ZTJlYTFmY2NhZTAwM2ZjMDEwM2RiYzgwOTBlY2I4MyByZWxlYXNlMjEtbWFpbnQKKzIxNzkxIGM5YjRjOGFlNjE3OTIzMDUxYTYxZmYyNjMyN2I4YzgxZWFmODExNjMgbGVnYWN5LXRydW5rCisyMTc5MiA0MDMwYzkwMTkwNjdjNWMyMDY3ZTg4MzBhMzJmMDFiMGM2ODRlMjU0IGxlZ2FjeS10cnVuaworMjE3OTMgZmRkZTlmYWNiYjZlYTdkMTU1ZDBkNGRlMjhhYzZjYzFlZDZlMDg2ZSBsZWdhY3ktdHJ1bmsKKzIxNzk0IDc3YzgyODI0ZGY0MTI5ZjM3YmRhNjExOTc3YWIxOGQzODgxNDQwZmYgbGVnYWN5LXRydW5rCisyMTc5NSBkNTlhODQ3NmFmYWI5ZGY1NGFhMDQxOGVkNWNlMDQzYzdhMzcyZTIxIGxlZ2FjeS10cnVuaworMjE3OTYgYzhlNDcyOGQyYWIwZjNjYThhMGQyYjIxNjlkZmZhNGMwNWNlZjU1NSBsZWdhY3ktdHJ1bmsKKzIxNzk3IDFkM2M1N2NjOGQwODVjODY4N2I3OGQ4OWU2OThhZDBjMzM2ZGQyNTggbGVnYWN5LXRydW5rCisyMTc5OSA5ODNhY2FjNTY0NjZiM2JjZmNkZGQyYzQzMTgyOTBlYTdjOTUzNmRjIGRlc2NyLWJyYW5jaAorMjE4MDAgMDVjZjZiM2U2M2RlNTU0ZTE3YjkzNTY2NTM0NDBkNmJjNTNkYmE0MyBsZWdhY3ktdHJ1bmsKKzIxODAxIGU1M2JjYmMzMTY1ZTM5Njc5YWY2Mzg5OTNlZTI1YmI0NTA3NTZjY2YgbGVnYWN5LXRydW5rCisyMTgwMiBkM2MyNWIwNmI3ZTViNDRkYzUzMDFmZGZjYzI2NDg4MDA5NjY1ZGYyIGxlZ2FjeS10cnVuaworMjE4MDMgNTdlNTk1MjVkMjE3ZGZjZTM1ZDE4YTQ2ZWI4ZDI0OGViYWI4Y2VlZCBsZWdhY3ktdHJ1bmsKKzIxODA0IGZkZjhkMDgzMTI3ODk1M2EyODU3OWMxZGNhMDMyYjcwZDcwNWQ1MzQgbGVnYWN5LXRydW5rCisyMTgwNSBmNzE5NjQ4NmY0MmQxODA5ZDVlOGE0YTZlZGQ3YzFjY2FmZDUzNTJhIGxlZ2FjeS10cnVuaworMjE4MDYgNmE1MDkxMGNhMzAzYWQwNGEzN2NmOWQ4YWVmZTk5YzNlYTZjOGNmZSBkZXNjci1icmFuY2gKKzIxODA3IDU1NzE3ZGMyMjdmNGRlMTBiNDkwYzhmNWY2MzNiNWQ2NWNiYzFlYTIgZGVzY3ItYnJhbmNoCisyMTgwOCA5NGZiY2YxOTY1NDk1NTdiOGUyNzFmYjZkOWVhZjY3ZThkOWRhNTdmIGRlc2NyLWJyYW5jaAorMjE4MDkgMDc3MmVhYTE3NjMxOWFiNGZmYzU5NDhlNjgwMzhmZWUwNDUwNzc4NSBsZWdhY3ktdHJ1bmsKKzIxODEwIDczMzVhYzdjNTMxNTdmYzAwZDljMWRlMzhhNTIwYWEzODhmYmEwN2QgbGVnYWN5LXRydW5rCisyMTgxMSBjYjVlYTRkOGU4YmY5ODExZDY2NmRmNDRjM2I0MGEwYzc2OTQ0M2E5IGxlZ2FjeS10cnVuaworMjE4MTIgZTVhMmU4OTE2ZTBiNGU2NGMzZjI3ODBiYmUyNTA0NjYxZTM3YjE3YSBkZXNjci1icmFuY2gKKzIxODEzIGM0M2ZlMjEzZWUxMDhmNTM1MzM5YjliMjkzYjU1NzljZTZiNGJhZTQgbGVnYWN5LXRydW5rCisyMTgxNCBhZDgyY2FmZTQ1YWNmNDkxZjg5ODYxNWRhZjkyYTNjMmQyNzQzOTQzIGxlZ2FjeS10cnVuaworMjE4MTUgMzM4MThlYzYzOTViYWQ5MGE4ZGNjMzI4ZmRiYTVmMzIxNDc1ZmRmMyBsZWdhY3ktdHJ1bmsKKzIxODE3IDFmMWM3OGJhNTdmZjQ1N2Y2MDBhMjRjNTQ2MzU2MjkzODY0NWQ2MTEgZGVzY3ItYnJhbmNoCisyMTgxOCBkNjIzM2Y3Yjc0YzE4ZmU1Y2FmNjQ0NTc1NjE1N2YxNzYyM2VmMzZhIGRlc2NyLWJyYW5jaAorMjE4MTkgOGFhNjNhZWE3MjY5NTk4YTcxM2JlNDQ3NDg2YWM1NmU4OGE4MjAxNyBsZWdhY3ktdHJ1bmsKKzIxODIwIGNiNjZhOTgzMDk2ZjdjZjM5NTE1YjRjMzNhZTRhZWUxNTY2YzUwYzUgbGVnYWN5LXRydW5rCisyMTgyMSAzYjg4ODg1OWQ1MmIzYTYwN2JjODViNTlkNmE4Yzg5NDBkZWFlMGMzIGxlZ2FjeS10cnVuaworMjE4MjIgY2E4YTQ4YWJhMjJlY2UyOWJkNjc3MDlkNTVlYWI5ZDU4ZGZlMWNlNSBsZWdhY3ktdHJ1bmsKKzIxODIzIDVlYmVlNWMwNjBkMGU3ZGIyMThjN2MxYmZlMjEwOGRhNWE3YjY0ZDIgbGVnYWN5LXRydW5rCisyMTgyNCA3NDhmNmIzYThiZjYyNzQ4MWYyOTc2MmRlYjIyNTQzOGMyY2M5ZjA2IGxlZ2FjeS10cnVuaworMjE4MjUgYWMxMWFmN2Q4NjBhMzVmNWNlNzY2OTQ3NjE0ZGUzZmM1Mzg1NTEyZiBsZWdhY3ktdHJ1bmsKKzIxODI2IGZjZGI4Yzk0YjVkOGYzM2RlYjhiNDY3MGI2ZjI3Y2VmY2M3YjllOTggZGVzY3ItYnJhbmNoCisyMTgyNyBjZDYzOWE5NDcxYjhmNzkwNWVmNTgxZWM5NDZhOTBhYzBmYzEzN2VhIGxlZ2FjeS10cnVuaworMjE4MjggZTYzOGYxMjA2ZWUwYmQ5OWE5YTkxZjI0NTJkODkzOGQwYTUzYTJhNCBsZWdhY3ktdHJ1bmsKKzIxODI5IDcwMjc1MDM3ZjEyZDhkZWQ2YWQyMmJjYWY5M2FkNzQzMjNjMGZiOGUgbGVnYWN5LXRydW5rCisyMTgzMCA3NDYyM2IwNzZkMWJlOWUzM2QwOGZjZGY2NWUxMWQ3ZWZiNmVjOTY1IGxlZ2FjeS10cnVuaworMjE4MzEgOTVkZGNkNDQ0ZDM5MmZiYjEzNmM3NjdiMWEzYTIzN2FhMTQ4MmExNiBkZXNjci1icmFuY2gKKzIxODMyIGQ4OWU5MzZlMWIxMDY1YzVmNTcwYzAyNTllNzMzMDJkZDY0M2M1ZGEgZGVzY3ItYnJhbmNoCisyMTgzMyA3MDcxMWE5OGQ5ODk3Yzg5Mzc5YmFkMDRhZmU0MzljMzE1ZGM5ZjhiIGRlc2NyLWJyYW5jaAorMjE4MzQgZTA5YmVlOWI1NzI5MmQ3NjEzZWU3NjI0NGJlODQyNGE1Njc0N2FlMiBsZWdhY3ktdHJ1bmsKKzIxODM1IDU4NGJlMGJiZDk0MmI2NDU1YzM5OTJmYWI0ODZjZjE2MTZjOTBlOWMgbGVnYWN5LXRydW5rCisyMTgzNiBmNjVjZTU5OTA1NDdkNTEwNGNhZGFmYTAwOTY1MmM2ZWY4YjYwMTE4IGxlZ2FjeS10cnVuaworMjE4MzcgYjc3NzVlYmJmNDQ5MDk5YTRlMWIwNTQ5ODI1ODUxNWNmMGU2M2Y1YiBsZWdhY3ktdHJ1bmsKKzIxODM4IGYxNDgwMDIyOTY3N2RlYTBhYWI2ZThmNWE3ZGIyZjRmYjk1OGZkODggbGVnYWN5LXRydW5rCisyMTgzOSA5MjYyNmY0MmUwNDMzY2VmNjZmNWRlNjYwZGVlOGE0OGI2NTI4NTZmIGxlZ2FjeS10cnVuaworMjE4NDAgNWZjMmJhMWMzZjI0MjNlZTkzOTMwMzMyOGJkYTY2YTU4MWUwNmJlMyBsZWdhY3ktdHJ1bmsKKzIxODQxIGEwMjc3OWZkOWI5MjBlYjdmYTk1Yjc5YzVjNDEzMmI5ZTU5Mjg3ZWYgbGVnYWN5LXRydW5rCisyMTg0MiAxZjk3NDNhMWVkN2IwYjA4YWE5NDE4YjhlNzNkNzJiMjJjMTU1MjJmIGxlZ2FjeS10cnVuaworMjE4NDMgNmQ0YTUzMGZlN2MxNjIyMTExNjg5ODBkNmUwYTkxMTlkNGZhYjE5NCBsZWdhY3ktdHJ1bmsKKzIxODQ0IDM4NGI5MTEzYTJlMGM2OWFkZmI0MmQ1YTcxZDkyMDMyYTFkMmE3ZDAgbGVnYWN5LXRydW5rCisyMTg0NSA3OTI3ZThjZjQ2MTUwYWM0ZDEyYWUwODcyMmM3Zjc1YTkzOGM5ZWU4IGRlc2NyLWJyYW5jaAorMjE4NDYgMzgyMDZmMjliMGZjMWM1NDc1ZDc3MTg1YWFiYTUzZjIyMmNmMWJiOSBsZWdhY3ktdHJ1bmsKKzIxODQ3IGNmYjU3ZGI0YzM4OGU3NTVmOWRlMWEwNWQ3MmVhY2NlNjBiNjM4ODEgbGVnYWN5LXRydW5rCisyMTg0OCA0OTJhMWJkNGQwYzVmZTFhMmRmYzZkYmMxMjE1N2Y1YWU1YjNkOWJmIGxlZ2FjeS10cnVuaworMjE4NDkgOWVlOGYxNmIwZTI3MmY2OWVhNDQwYWY1OGYyODk1N2I4NTA2NTg0NiBsZWdhY3ktdHJ1bmsKKzIxODUwIGY3YmU3ZTlhNmYyMDI4MWNiYmU1NjgzYTBkMTgwNTg1MWJiOTJhYmMgbGVnYWN5LXRydW5rCisyMTg1MSBkM2JjODJkMWM1YTkyODU1YzA0MDg3NDQzY2QxZTkyYzliNzg0NmY0IGxlZ2FjeS10cnVuaworMjE4NTIgZTQyMWFhNDUwNDBjZDA4NjkxY2EzODIyNDk1NWYyNTczYjJhYzBjNiBsZWdhY3ktdHJ1bmsKKzIxODUzIGE3YmMzMzllZTJmMzUwODk3Y2E1NzUxY2EzYzExNjMxY2YyZmExZTggbGVnYWN5LXRydW5rCisyMTg1NCAyYmExZDlkOTk2YTM4M2VlMjEyNGRjM2I3NzE2MWU3Zjg2MzZhNWZjIGxlZ2FjeS10cnVuaworMjE4NTUgMDUwNWQ5ZGM4MzNkNzQwMzU5NTI4MzUzMzFkYTJjZDRjZTZhZjZlZSBsZWdhY3ktdHJ1bmsKKzIxODU2IGM2NTlkNGMwMDljYmZiMzdmMTQ0Y2Q4ZjA2ZDg2OTk5ZWQ3MTE3M2EgbGVnYWN5LXRydW5rCisyMTg1NyBhZDJmNTI2ZjAwMTlkNDE5ODFlOTkyMDgwNDI3NTI3ZWFiZTQwOTkxIGxlZ2FjeS10cnVuaworMjE4NTggOGNhNzBjOWMxOTcxMzc2ZTU0YjU1NTU5NjRiOTgwZmExZWJmYmJmNSBsZWdhY3ktdHJ1bmsKKzIxODU5IDQ3OTMyZDgyYjhlYjFmZjYwMThhZDFjOGFiZDMxZTZkNzAxYzQ2NTYgbGVnYWN5LXRydW5rCisyMTg2MCBhMzhlNzcyNDBhNjczOTgwZWU4ZDk4MTgxNDYxNWYzMTI3MmQyNDQyIGxlZ2FjeS10cnVuaworMjE4NjEgNTRkMDQ1OWM4ZTBmZGJkNjNjMjRiZWEzYjQ1YTU4NzY1MDE1NzhkOSBsZWdhY3ktdHJ1bmsKKzIxODYyIGZkNzRjYjViOTU3MzJjODlmNGY5MGY2ODNhMmE1NTAxNjQ4YmQ4MWYgbGVnYWN5LXRydW5rCisyMTg2NCAwOWM2ZmU3ZGJiMWM1M2NkN2FlMWU4NWJkNDEyNTYxODVlNmIxZTM5IGRlc2NyLWJyYW5jaAorMjE4NjUgNDVmNTNmZTQ0YzBlNmQ1Y2E2YzUyZjQ3NGI0NDI0YjFmNjVlYjE4NiBkZXNjci1icmFuY2gKKzIxODY2IDYyZTI0YmM0N2I2MjA3MmQzMTU3NDEzZTQyNDIwMmRkMzlhMmNhNWQgZGVzY3ItYnJhbmNoCisyMTg2NyBiMjFkZjA5MWZiYmZkNmQ3YzdmZmU4NjgxNmM4NGJlNDFlNDEyYmMxIGRlc2NyLWJyYW5jaAorMjE4NjcgZDI1MDk1OTEzM2I1YTk5NmIxZWRmOGE0NzcyZmEwMmU1OGEzYTk3MiBkZXNjci1icmFuY2gKKzIxODY5IDRjNTllOTM0ZTc2NWRlNTAzYmU5MzY5ODk4ZTY5MTE2NjlmZjdlOTIgbGVnYWN5LXRydW5rCisyMTg3MCAwNjRkZTg0Mzg1Y2FlYTBkMjdkN2U1OWQwNGU2YTljZmEyMzg5MzdjIGxlZ2FjeS10cnVuaworMjE4NzEgNTFjMzgyZDU4NTFiOTE5MmY4NmQxYzQ1YzYxODJlNzk0YTViOGFkNCBsZWdhY3ktdHJ1bmsKKzIxODcyIDA3OTE3ZjE0MzQ4ODYyMTYwM2VjNTY3MTlkNzk5Yjc0MGQyMTNmMjIgbGVnYWN5LXRydW5rCisyMTg3MyAwMDY5NTU1MWQ3MjEyMTE3MDVkZDczYTIyNTE2MzJmMjFkODZiZDk1IGxlZ2FjeS10cnVuaworMjE4NzQgNDM4MTQ2MWNjZTVkZjkyY2UxMzVkNWE0ZDRiYzNmMGYyNmU3ZjE1ZiBsZWdhY3ktdHJ1bmsKKzIxODc1IDkyMThmYTY1MjM5MWYzYTg5MWM3MjRjNGI5OGQzN2Y4NmI3Y2M0NzUgbGVnYWN5LXRydW5rCisyMTg3NiAyNTI0NGJkYjE2M2Q5MjFlMjEzMGNlNmFlMGUwMmUyYWYzZjYxYTQ3IGxlZ2FjeS10cnVuaworMjE4NzcgMWMyZGE3OGI4MzliOWIwNThkNjZiNjczNWEyOGU1MGYwNjUwY2IyOSBsZWdhY3ktdHJ1bmsKKzIxODc4IDY3OTRkY2FlNWQwY2Q5ODRlMGQwZDc0ODNhYTVhZTgyNDhkMGJiMzYgbGVnYWN5LXRydW5rCisyMTg3OSBjNzY2NzU2ZDg0ZDMzNzU4MzM4ZTk0OWY0YWU3ZWJkMmQ3YzVmNzAwIHJlbGVhc2UyMS1tYWludAorMjE4ODAgZGFlYTk0ZjA2NDI5NjA5ZjRiZmJkZDliZmI2NDBjZTc5MzYxYjgzOCByZWxlYXNlMjEtbWFpbnQKKzIxODgxIGExZjE5ZWUwMWFhZTBkNWVlM2MzMmI5N2VmYmMzYzNmMWI1MzFmNTQgcmVsZWFzZTIxLW1haW50CisyMTg4MiA1MzU0NWMzNzFmZTM4NDBkMTIwOTQ3YzU5MWM0MGMzZDgyZTE2OWQwIHJlbGVhc2UyMS1tYWludAorMjE4ODMgM2NkMzA4MWRmNjAxYzIwYTkyZjgxYWY0MjUxODhhYjE3YzA3MjNiMSBsZWdhY3ktdHJ1bmsKKzIxODg0IDk1ZWE2MTBmM2Y1NGQ3MmFjODY2ZTM0OTdiODE2YjgxMjVlN2RkNjEgcmVsZWFzZTIxLW1haW50CisyMTg4NSAzNmM1NjFlZTk2YjUzMjlmNTBiMDMwY2RiOTNmNWE5YmJlZjAzM2ZlIGxlZ2FjeS10cnVuaworMjE4ODYgOGRmNzc0MTVhNjFkNTY0Yzg2Mzk1NjgyMzU5YjRjYzFiOGNmNmZhYSBsZWdhY3ktdHJ1bmsKKzIxODg3IDAzYzIwZTdjY2U2YWNkNGQyODA0NDgwZGI0YjdiY2JlMWRkOTM1ZjYgbGVnYWN5LXRydW5rCisyMTg4OCA3MGUxODU4YWQ3MDMyMjFhNjI2MDgzN2VjYWI5Mjk4ZmM4Zjg4ZDUyIGxlZ2FjeS10cnVuaworMjE4ODkgMjM3MzY4NjQ0YzEzZDUzN2M3YzJjYzg3M2E1OTMzMTVmNDQzMjUwOSBsZWdhY3ktdHJ1bmsKKzIxODkwIDcyNmY0ZDA2YmQ0YmQzODgwMjkxZWNhMTYzN2NhOWUyMDU1MWIxNTIgcmVsZWFzZTIxLW1haW50CisyMTg5MSAyNGQwMDU1N2ZiYzk1YWE3ZmQxZmRhMzM4MTJmOGI3ZTEwMGMyOWFkIHJlbGVhc2UyMS1tYWludAorMjE4OTIgYjA5NDk2NTk2MGFmOTFkMGE5MzE2N2EyODlmZDE0NTllZWI0ZDM1MyByZWxlYXNlMjEtbWFpbnQKKzIxODkzIDRjMGFkYjhhNWJjNjUzOTM0MjhmNjQ1MWE0MDQ3YzhiNDczMzIxMzEgcmVsZWFzZTIxLW1haW50CisyMTg5NCA4Y2Y1M2QwZjg1Yzg3NGU3YTFlN2Y3YzAxNWZlMmEyNGQzYjVkZWRmIHJlbGVhc2UyMS1tYWludAorMjE4OTUgNWM3MzYyMWM5NTU5YjU4ZmJmY2MwNTY5Y2Y3ZDgzZTA3YTU5NzE5YyByZWxlYXNlMjEtbWFpbnQKKzIxODk2IDViMDc0NzAyMzlkYjg5MjRiODczNjQzYmY0NjczMzM0ZTk3OWI2MTAgbGVnYWN5LXRydW5rCisyMTg5NyA0Y2E5YWNlZDU1MDM3Y2YzMTY1NzE5OTcxYzg0MzYyY2FlZWEyNDcxIGxlZ2FjeS10cnVuaworMjE4OTggNTUzMjBkNjI5MWM5ZjVhYjhlOGQ2MWVlNDUwYmViYTYxZjc0YjcyMiBsZWdhY3ktdHJ1bmsKKzIxODk5IDNjMDUwZDFlMzViMTAyYTk2Y2QxMzEwNWRkMWI4MzhmZmRkZjliNjcgbGVnYWN5LXRydW5rCisyMTkwMCAxMWY0Y2Q0NWE4MGMwNzgzN2QwODQ5NWRjZGVkOGQwNGZkZmY4Njg3IGxlZ2FjeS10cnVuaworMjE5MDEgYmFhYWM5NGZlYzU0NzUyMGFmZTcxNjY0NmRmNTI0ZTQ2ZTY4YjU3NSByZWxlYXNlMjEtbWFpbnQKKzIxOTAyIGVlOWI0NTgwNDMzNzcwYjQyN2RlNmYyZWUxZDI3MzI5ZjZjNWYwYTkgbGVnYWN5LXRydW5rCisyMTkwMyBjYTlkN2E2Mzc5NGYwMTViOGI4Yzc4NWU1ZDEzOWU1N2E0YWM4OGExIHJlbGVhc2UyMS1tYWludAorMjE5MDQgOTE3MTY4ZmJmZDk0YjNkZjdmZTZhM2U4ZWIzMWRlODIwOWZiMjE4NCBsZWdhY3ktdHJ1bmsKKzIxOTA1IGE1NTdlOTViOTJmMGJkZjJlZTFlNTcxOWIyOGRiZjYyOWIzZmVkYjggcmVsZWFzZTIxLW1haW50CisyMTkwNiBhZTY3NmNmMTQ5NWQ0ZmNmZjM3ZTc4OGNjZGE1Mjg4ODc1MmE5NDczIGxlZ2FjeS10cnVuaworMjE5MDcgYzc4MGM2MWIzNWNlYzk4ZGI5MmU5M2I0ZjViZmUyODdhODMyNGYwOCByZWxlYXNlMjEtbWFpbnQKKzIxOTA4IGFkNmM1YzI3ZWNiZTYzZTg2MTZhMjNmMzY4ZWExOWUwOWRjODE3Y2EgcmVsZWFzZTIxLW1haW50CisyMTkwOSBmOGUyODY5OTc2YjBlNTA3NTA5MTQ1MjIwYWE2Yjg1MjI0OGE1ZDgyIHJlbGVhc2UyMS1tYWludAorMjE5MTAgZDUxYjJkOTMzODE0Nzg2MTljMjdjZmE0ZDMwYmRmNWU5MDRlMTJkYSBsZWdhY3ktdHJ1bmsKKzIxOTExIDMzNWU3NWJjYjUxYWQ4NmUwMGJiNzU4ZTQyNWU1MjQyNjhjMDljNjEgbGVnYWN5LXRydW5rCisyMTkxMiAyY2U2YTliMGE1MWQ2ODQ3NzkyMDc1MDRhOWM5MjI0NmExZjQyMDBhIHJlbGVhc2UyMS1tYWludAorMjE5MTMgMTQwYjcyOTEzMGQwYzVmMGJlMzI4ZGRmNTcyM2JmMzQ0NDQ4OTg3OCByZWxlYXNlMjEtbWFpbnQKKzIxOTE0IGIwMzI5NjQ5YjhjZmNmYTViYTM2MWZhMTYyYWU5NDc2ZmVkNWQ2NjEgbGVnYWN5LXRydW5rCisyMTkxNSBjMjVmMmMxM2QzODA2ZjRjMzg3NjU3ZWNhYjM5ZTU2Njg5MjRkMTQwIGRlc2NyLWJyYW5jaAorMjE5MTYgZGY0YjZiNWVhOWI4NWM1Yzc4YjhkZmU4NzBlOTRhNDU3Yjk1YTQ4NiByZWxlYXNlMjEtbWFpbnQKKzIxOTE3IDU5ZDE0Yzg4NjUxY2I0NDRjYTBlOTI1NzVhYmExMjViNDExNzVjZjAgbGVnYWN5LXRydW5rCisyMTkxOCBmZWM4ZjQwMzVmYjI4NjZhZTQ1ZTgxNDgyM2RlNjkxYzlhYWU3NjU1IGxlZ2FjeS10cnVuaworMjE5MTkgZGU2ZjE1ODk2ODYxOTgwY2E4ZDcyZjNmODFkM2E3N2Y5MGMwMDUyZCBsZWdhY3ktdHJ1bmsKKzIxOTIwIGIyNmZmMTY0MzIxMWYxNGMyYzYwZDRhMzhlOTExYzljZDIxMWUyZGUgbGVnYWN5LXRydW5rCisyMTkyMSA3MDQ0ODY2NDIwNzlmZTYzMTM3YzNhMTM4NWU2MWI2MmQxZDkzMzg0IGxlZ2FjeS10cnVuaworMjE5MjIgMWFhN2UyMTlmNTJkYzgyYTlkNTZjNjgwNDgyZWNjOTZkM2E1OTlkYSBsZWdhY3ktdHJ1bmsKKzIxOTIzIGM3Y2IxYzllOWQ5YzU3ZGI1MjYxNzViN2YzZmZjZDI4NTJiNTkyNGUgZGVzY3ItYnJhbmNoCisyMTkyNCBjNzEyYjE2ZmZhY2Q2M2I1ZDYyODJiMTMzOWQwMTI2ZGJiYTQyNmFhIGRlc2NyLWJyYW5jaAorMjE5MjUgYjE0MmI1MTczMDljNzUyZDExMWE1NDU1MjQwZWVhODQxMWExZTA4NiByZWxlYXNlMjEtbWFpbnQKKzIxOTI2IDkyMGUwMzYxZGQ2ZTNlNzQyY2Q1MDMyYzRjZTcwNDU2ZWM4NDEwZjggbGVnYWN5LXRydW5rCisyMTkyNyAxMzNlNTcwMTUxMDE0ZjlkZjA3YTIyMDZkYzIyNjE0NjMxYjZmZDY4IGxlZ2FjeS10cnVuaworMjE5MjggOGNhMmVmNjYzYWQyMGNiZDllODIwM2I4MmRmODlmNjk2ZDM1NDJjOCBsZWdhY3ktdHJ1bmsKKzIxOTI5IDI3NmJmNTk2ZThkMTgwODYxNThlMGViODYyMWM4OGJlODdkYzJiNzAgbGVnYWN5LXRydW5rCisyMTkzMCBkZjljNGM1NGVmM2VmOWQ2MzQyNTg1NzNlYmEyZmY1ZmM2NThhNDdmIGxlZ2FjeS10cnVuaworMjE5MzEgNzRiN2I4YTk2MjhiNjYyMDBmMDE0MjI3MDAzOWQzNGIyNmQ2ZGI1NSBsZWdhY3ktdHJ1bmsKKzIxOTMyIGU1YmFmZGRkMWRhMDQyZTljNDBmMGE0MWQwZGExY2I5NGJjZmRjYmUgbGVnYWN5LXRydW5rCisyMTkzMyBkMDkzOGJjMTJhMTFlNjdiM2JlMDhlMWViYzYwMzU1MzE1MDQ0N2E0IGRlc2NyLWJyYW5jaAorMjE5MzQgYzZlZjcxZTk0M2RkNjQwYjRmZDIxZWUzYmI5MmZkNjNmYWVhODM2MyBsZWdhY3ktdHJ1bmsKKzIxOTM1IGFhYzYyYWFhODQ2ZGVmYWQwYmM0NTU0OWNhMzM0NWZlZjI3ZDRmMmQgbGVnYWN5LXRydW5rCisyMTkzNiBkYjY0N2Y3YzgzMWJjNThhMjMwMjZkYWZiYWU3NDM4ZWYwNjJjMTNhIHJlbGVhc2UyMS1tYWludAorMjE5MzcgOTJmODE0NDllMTZjMjFlN2Y4Zjk0YTQ1YzRhMThhMTExMjE4ZmY4OCBsZWdhY3ktdHJ1bmsKKzIxOTM4IDAxNjkyYmYwMmY5Nzg1MDU1N2E2ZTQ0Yzg4NjYyZTMxOWJkZjEzZjcgbGVnYWN5LXRydW5rCisyMTkzOSAzY2QwM2E2NGMzMzhjMDAzNDM5OGEzMjQ2MjFkOGJlMTYzMWZkZTc5IGxlZ2FjeS10cnVuaworMjE5NDAgZjhiZDE0YWVmNGQ2ZmI1ZGRmNGU5ZDdjNzI2ZjJmZDg2ODljNDk3YyBsZWdhY3ktdHJ1bmsKKzIxOTQxIGFmOWFkOTBhNDQ0NThiNmUyZDQ4Y2NkOGRkZTFjMzE0MzgyZDY1ZjcgbGVnYWN5LXRydW5rCisyMTk0MiA0ZDQ2YTFiMzNjNjIxM2JlMDBlN2U3Yzk0NTllNGNkM2QwZTMzODRmIGxlZ2FjeS10cnVuaworMjE5NDMgZTcwOTI5ZTEwNjYzY2VkZGE4MGI2YjQwYzRhNzQzYjhlNTU3OGI4ZiBsZWdhY3ktdHJ1bmsKKzIxOTQ0IDgwMmE4NGU4NGVhOTQyZjYwNjQwOGQxZDQ2NjcyMzRiYjU2MWYzNjEgbGVnYWN5LXRydW5rCisyMTk0NSAyOWUwOWI5NmVkMzYzNWE5M2MzOWNkZWRjZjdmNTVkNjEzODUxMzM0IGxlZ2FjeS10cnVuaworMjE5NDYgNzRkZmUzMjAwNDIzZGQzNmMzY2FhMGRmYmZiYzRjNjIwODg0NzM0MyByZWxlYXNlMjEtbWFpbnQKKzIxOTQ3IDFkNTA4M2U2ZDE3ZTZjY2U1N2U2YTlhMDBjMmI4M2JmODM4MmQxMTEgbGVnYWN5LXRydW5rCisyMTk0OCA2YmVmMDlkYTliOTMyNGYyODJkOWFkNmIzM2YzNjQyOTc1ZjdhZjU4IGxlZ2FjeS10cnVuaworMjE5NDkgMGViZmIyNTllY2M2NWU4Y2MyNzE1ZTZhNGU5NTk4NDBlMDk3OWZkMyBsZWdhY3ktdHJ1bmsKKzIxOTUwIGNiZDIyYzkwMjdiMmIzZDNmMzQ5NjY2NWY5YTAxZTQ2NDJjYWJhZDIgbGVnYWN5LXRydW5rCisyMTk1MSBmZjhlMGNlMWQ5ODY5ODA2ZmM2OGQ2NTI2YWQ1YjAwNmNhNWFiNjExIHJlbGVhc2UyMS1tYWludAorMjE5NTIgMTQxYmQ3MGUwYjcyMzA1OWM2ZGQ1NDhmYmM3OTdkNGVjNDBhZTY4NCBsZWdhY3ktdHJ1bmsKKzIxOTUzIDJlMTczZGExMWQyZDE0NmM4YmI4MjNhNzJmZmM1OWYzZDY4NzFiZmYgbGVnYWN5LXRydW5rCisyMTk1NCA4MjQyOTA3Yzg5NTczZjhlZWIzNmFjZTIxYjRjMDkyOTE1Mzc3ZmY3IHJlbGVhc2UyMS1tYWludAorMjE5NTQgNTcyNTMzYTMwMzhkMTgzMmM4YTIwMGZiODcxODExMmRkODM3NThlOSByZWxlYXNlMjEtbWFpbnQKKzIxOTU2IDc5ZDMwNGUzYmEyNTdjOTBjYTkxNGE5ODUyZmYxNGI1MWQ1YjVkMWIgbGVnYWN5LXRydW5rCisyMTk1NyBiMTBmZjMzNzg5NmJlNTc3ZWQ3YzNlZjQwMWIzZDlhYjYzZGI1NmQwIGxlZ2FjeS10cnVuaworMjE5NTggNWRlMjNhNjM4YWQ2NGU5ZjU5NWRjYWQ5Nzc0Y2QwMmYzN2E5YTliMyBkZXNjci1icmFuY2gKKzIxOTU5IDc0M2Y4ZTFkOTUzY2JjMWJlZjY4OTRhZWMwNmUwOGFiMmE4ZWE3YTEgbGVnYWN5LXRydW5rCisyMTk2MCA1NzY4NGQzY2VmY2U5MWMwMzkxOWIxYzUxZGI0M2Q4ZGM1ZjU0Y2FjIGxlZ2FjeS10cnVuaworMjE5NjEgMmQ2ODYyNjE0M2E3OWM5ZmFmNzFiMDllN2JjNGM1Y2MwNDEwOTliYiBsZWdhY3ktdHJ1bmsKKzIxOTYyIDIyYjJmNGI0MzZhZmY4MzkwMjVhNTM3N2M5NmQzMTMwY2ZiODk1Y2YgbGVnYWN5LXRydW5rCisyMTk2MyA0ZDMzYWNiZGM1MDhmNGJkNzk2YmYxYjhmMmNiYjA0ZDgzNzY1ZWEyIGxlZ2FjeS10cnVuaworMjE5NjQgMjNhZTQ3ZTAwMTE5ZjNjNjk2MmViNzQ4ODYxOTA1MzgxNjRjMzdiOCBsZWdhY3ktdHJ1bmsKKzIxOTY1IDQ0MTU1MTIxZjAyYjFlMjgzNzQxZjU2MmIyMjQzYWI2YjUwZmNhNTAgbGVnYWN5LXRydW5rCisyMTk2NiA1ZWI0NjBhNjVmZjcwYTM0ZTVmNDU4ODVlOWMwNzljNjQ1ZDU5NjA3IGxlZ2FjeS10cnVuaworMjE5NjcgMDFhZTk2MmRmODg1ZTRlNmU3YmNjYzhmMjU1NDYxMDIzOGNjMzE3NCBsZWdhY3ktdHJ1bmsKKzIxOTY4IDk4NDg0ZWYyMjVmOTI4OWY2MjE4MTU5Y2E3ZjNiODRmNzE2YzgwMDcgbGVnYWN5LXRydW5rCisyMTk2OSBhYzEzYTZjZTEzZTI0Y2QwZGFhMThjZjQwMmM4OGMzNzQ1OTRmYzU2IGxlZ2FjeS10cnVuaworMjE5NzAgMDFjNjM5OTcxYmZmMTNiZmQ1NGY4NDQ5NmU4MmJlYzk2MDUwMjE5OCBsZWdhY3ktdHJ1bmsKKzIxOTcxIGI0NjVjZDUwY2YzNjRhOTYyMzVhYjIzN2M0NTRkOTk2OTdhZWYxNzkgbGVnYWN5LXRydW5rCisyMTk3MiAwZTIyMzEyYzQ3MzM0YmJkODljYjlkZTMyMWI1M2NkNTVkZTA2YzdjIGxlZ2FjeS10cnVuaworMjE5NzMgZjk5OWQzNjA5Zjc0NjZkYzY0NTI3MzJmYjdhNWJkNTczZjAxNTgwNCBsZWdhY3ktdHJ1bmsKKzIxOTc0IDI0MDIwNzBlZTAyNGMzMmUyMWJhNWMwNzc4ZjAyNzU2NGNmMDdlOWIgbGVnYWN5LXRydW5rCisyMTk3NSAxOGRmMDk3OGRlNWQyZTExMjI4NzZkZmRjOWQyMDU2YWUyODY2MDI2IGxlZ2FjeS10cnVuaworMjE5NzcgYjMwN2U1YThiNGQ4ZDU5MWY5ZmU5NDYxODkyYzJlM2Q2MWRjYTYxNyBkZXNjci1icmFuY2gKKzIxOTc4IDAxNDYzOWRjNjVmOGM3NjRkOTE2NGJhNGI0ODRmYzIzODVmZDc3OWYgZGVzY3ItYnJhbmNoCisyMTk3OSA3Y2QyMmJmNTZkN2JjMjE4MWM0MzJkZTY3N2Y1MDlhN2NhYThiMjEyIGxlZ2FjeS10cnVuaworMjE5ODAgZDExMTk2MzNhNzNlOWNkZGE2YjdkMWRmYzQxY2Q1YzU5MGFkNWFiMiBsZWdhY3ktdHJ1bmsKKzIxOTgxIDAyYjgxZGYwNDhiYzU5ZjY3ZmM2OWE1YzEwNmYyM2U0MmVlNjY4NjYgbGVnYWN5LXRydW5rCisyMTk4MyBjMmZiYjU5NDFlZTU2ZmI4YTk4NTZlOTNiMzAzZDQ0N2YwOWMyZmRmIGxlZ2FjeS10cnVuaworMjE5ODQgNGQwZWE0YzIzODZkNWQ4OGM0MzM3MTkxZjBiMTc3MGE5Yjc3ODBmMiBsZWdhY3ktdHJ1bmsKKzIxOTg1IDNkNTNiNTlmNDhlNjZjODM1ZDAyODYzOWM4Njg4ZTYzYmE5MTBhNGUgbGVnYWN5LXRydW5rCisyMTk4NiA2MDQ3OTBkNDkzZmE3MzU5ZDY2ZTgyZjlkMDhmOTI4ZmNkYjJmYThjIGxlZ2FjeS10cnVuaworMjE5ODcgMThhM2UwZDg4MDhlMGY3NTU2NGIxM2M5MWU4YmMxMzBjYTdkYmY5OSByZWxlYXNlMjEtbWFpbnQKKzIxOTg4IGQ1OTFhOTZhZWQwNjQzZDU5ZWU2NzU0YmJlZmE2Y2NjYmNkNTFiZjUgbGVnYWN5LXRydW5rCisyMTk4OSA5NjQ1NWY0YWJhZGQzM2U3YmE0MTEwNGYwYjQyMjJlOTY3Njc1MTliIGxlZ2FjeS10cnVuaworMjE5OTAgNGE0MzE5NTI2NzZiNTdiMDJlYmIxN2IyMjgzNzkwNTc1ODViNzZjZCBsZWdhY3ktdHJ1bmsKKzIxOTkxIDZkOTg3NGJiOTc4ZmJmNWM1ZmQ5ZjYyZWU4ZTM3YWQzNWQ2YTZkZjggbGVnYWN5LXRydW5rCisyMTk5MiA5OThmODA1MTRhMTMxMjk4OGIzNTQ0OTU4MGQ0NDRjN2IwNWZkNjQ2IGxlZ2FjeS10cnVuaworMjE5OTMgNzYzYmI2ZmFlMjgwZmY3MDI3ZWQ3NGZlMDBlN2U0NTY2ZGVjMjk3MyBsZWdhY3ktdHJ1bmsKKzIxOTk0IDcwYjliNmY0ZTc5YzJhODI5NjRjZjk3ZTg4ZTdjMjQyZDQxMmZjMzUgbGVnYWN5LXRydW5rCisyMTk5NSA0NDYyYzU3ZjZjOTQ4ZGRkOGQwMjZiY2U2Y2U1ZDE2ZGZjYTcwNmNiIGxlZ2FjeS10cnVuaworMjE5OTYgNzRmMDUwZjdjMzY0ZGVmYjU4YzE5YTU3OGI2Zjc0NWYyNmM1M2Q4NCBsZWdhY3ktdHJ1bmsKKzIxOTk3IDFiNjg2OGU4OWEyM2U4ZjBhMGUwN2NhYjFkOGNlZWMyNzk0MmIyZjggbGVnYWN5LXRydW5rCisyMTk5OCBhOGIxYWNjN2EyMWY1NGQzZDUyZDRlZmVmNGUwNzNiODY0YzVkZWYwIGxlZ2FjeS10cnVuaworMjE5OTkgODEzMTViNmY5NDY5NTEwMjA3NGY0YjFjMDQ3N2YzMmMzM2E4ZTBkYSBsZWdhY3ktdHJ1bmsKKzIyMDAwIDQxMDA3ZDUwY2NiNzNkMjc1NjAzZGNlNjQwNjNmOWJmMTg4NGNiYjMgbGVnYWN5LXRydW5rCisyMjAwMSAyOWU2NjFjNTJjMGI1NWU5YjU4YmJiMTdmMDI1NmE3ZWI0ZmVlOWY2IGxlZ2FjeS10cnVuaworMjIwMDIgMGMzYWQ1MDNhZDZjNDkyMDI4MWUzNmNmOWUzOTg1MzlmOWYxOTQyYiBsZWdhY3ktdHJ1bmsKKzIyMDAzIGMzMDcxYmQ2YTcxMzMxOGNiMGFiNzllZjk2OWZjMzNmZDVjMzAwNjEgbGVnYWN5LXRydW5rCisyMjAwNCAxMDczMjY1MTU0MjVkYjc5YTkyOTQyYjA1NjkwNWI4MTZhODRlNzVhIGxlZ2FjeS10cnVuaworMjIwMDUgNjkzYjM5ODMxZjcxODEwNzI1NTc0NmUyMDE0NWI1NDY0NGNkOTE5NyBsZWdhY3ktdHJ1bmsKKzIyMDA2IDUwMDA0YmVkNGU2NWE5MTZiM2I1MTUyMzRhN2FmOWI5NTMzY2FlY2IgbGVnYWN5LXRydW5rCisyMjAwNyAzMTViM2NiMTI3YzA2MjIxZDg0MmVlYWVkYjViMDAwMTg0MjExMGMwIGxlZ2FjeS10cnVuaworMjIwMDggY2ViYjRlMTg3NDQ5OWQ0ODMwNTc3MDExNTUwMmI4NjIyYzY0YWUzYyBsZWdhY3ktdHJ1bmsKKzIyMDA5IGRjOWJhZjgwYzQ1YWZkOTI2NzY3OWE2NTY2M2Q5ZTFhYTQ3ZGRiMTAgbGVnYWN5LXRydW5rCisyMjAxMCA0Njc3ZDJmZjMxNTA4ZjVmYTZhYWI2NDBjNTgzNGY1NTkwNjMzZjQ5IGxlZ2FjeS10cnVuaworMjIwMTEgYTYzNjFjMmU1MDQ0YWNkNDQ3MWFhODU0OWMzYWQwNGNlMTBlOTk3OCBsZWdhY3ktdHJ1bmsKKzIyMDEyIDMzZjgyMDgwNTU5ZTE2OThkNDA3OTIzOTIyYzQwYzE3YWU2YWE2OTYgbGVnYWN5LXRydW5rCisyMjAxMyAzYWE4N2YzNGNhYjAxYjY0NGQyNjIyYTAzOTBmMTI2MWQzYzk0OTlmIGxlZ2FjeS10cnVuaworMjIwMTQgNmY5MjQyZDg3MDU5ZTg0ZmE4YThhYTY3ZWFlNDliY2ZkZWQ2MjY2NyBsZWdhY3ktdHJ1bmsKKzIyMDE1IDQwOTAwNjIwMjkzZTZkNmRjYzAxY2Q1ZGFjZmUyMjk2MDM5ZjExZjMgbGVnYWN5LXRydW5rCisyMjAxNiBiODBhYzhlMzFhODAyZWZlNzQ5NjBkMzM4NzUyODEyNDMzMDM3NTczIGxlZ2FjeS10cnVuaworMjIwMTcgN2M5MjgxMTZiYWEwMGRlMGYzZDFjMjQ2NTA1ZWI0YTNlZjg5ZThhZSBsZWdhY3ktdHJ1bmsKKzIyMDE4IDA4MWQ5NmZiY2Y0MzJjYmI3NTE4ZGZlNzYwZDU3YzBmMWI2NWU4MGQgbGVnYWN5LXRydW5rCisyMjAxOSAxYmMxZmRmMTQ4MmIwNmM3N2ZhY2E1NjBhNWMyYzZiNmNiNmM1YWE1IGxlZ2FjeS10cnVuaworMjIwMjAgZmRiMzg4ZjJkZjRlYWE3MzE5MGI0MjUwMTg0NTRlMGU5MWQ0ZmViNiBsZWdhY3ktdHJ1bmsKKzIyMDIxIDEzMmM0YmZkYmE3NDgwMThjZDA2NjBlMGM5MjM0OWMyNzg5MzlmMjggbGVnYWN5LXRydW5rCisyMjAyMiAxMzFhOWY3NWUyNTgyZGQ1NGVmNmMxM2RhOTY1NjU3MGNlNWYyZDQ4IHJlbGVhc2UyMS1tYWludAorMjIwMjMgM2NjNjY3NTA2ODdkNWNlODM0ZTY1MThkZDZmM2Y1MWEwZDk1ZGJmZSBsZWdhY3ktdHJ1bmsKKzIyMDI0IDdlNTJiZjUyYWUzMzQ4N2RjNDc1ZjIwMzQ2MzhmYzViYzkwNzljNmUgbGVnYWN5LXRydW5rCisyMjAyNSAyZGVhNDBlNDBkOWQ1NzNlNTA2N2E1Yzc2MGU5OTBhMzc1MjRkMGM3IGxlZ2FjeS10cnVuaworMjIwMjYgMDMzMDU2MDJiYTliODViM2JmYTgxYTMzN2IyNmQ0NWU0Y2I4YTQ0OCBsZWdhY3ktdHJ1bmsKKzIyMDI3IDVlMGE0MGNjYjlkYTRjZmM5NWE3MjdlNTQwYTBiM2VkYzQ5ZjA2ZmQgbGVnYWN5LXRydW5rCisyMjAyOCBhODU3NWYzNThiOWZkZjdkNzBhNTRjMTM1NGU5YWFlODBmMGFkN2FkIGxlZ2FjeS10cnVuaworMjIwMjkgYWI4YWE0MzAyMTA5OTEzMjI2ZTMxN2YwN2E3OTE2NWRlMzNlYzdiYSBsZWdhY3ktdHJ1bmsKKzIyMDMwIGMwMzJhYWY2YzgxMjMyMGRmMjEyMTg1MDhkZmQzOTY4MDc5OTcwNDAgcmVsZWFzZTIxLW1haW50CisyMjAzMSBhMWY2ZmQwMTIwNWYwMjJjY2VlMzAyNmRmMGU1YmE4ZjBkYzAxYTZiIHJlbGVhc2UyMS1tYWludAorMjIwMzIgZTY2ZDY0N2I3MzJmMjNmNzViNDFhN2ViZWU4NTc5NjdiMWI2NjljYSByZWxlYXNlMjEtbWFpbnQKKzIyMDMzIDFjNWQyNTZiMTI1YTRjNDhhMDk4M2NkMjg4MGVkYWZiZGU0Y2JlZjcgcmVsZWFzZTIxLW1haW50CisyMjAzNCAwNDVmNTUxMzVhZDAwNGE0Y2JiMWZlZDdlNTUzNThkYWM1Y2RjMDVkIGxlZ2FjeS10cnVuaworMjIwMzUgODc2YWVjZWY2NDgzZjM0ZTM5NTIzY2M4OTJhODMyYzA3OTMzMmM1YiBsZWdhY3ktdHJ1bmsKKzIyMDM2IDNlNWNlOTk0NTk4NjJhMjIyNzY5Njg0MmY1MWVlYjdkYzg1ZmRlMWMgbGVnYWN5LXRydW5rCisyMjAzNyBlMTQ2NDE0M2M0NjMzMDYyNDQ2NGJkZWY5YWMxNDQ3ODIwNzRmOThmIGxlZ2FjeS10cnVuaworMjIwMzggMTJjYmM5NDJmNTQ5ZDUzOGVmZmYwNWQ5NzZjZmE2NzA3MDA5NjgxNiBsZWdhY3ktdHJ1bmsKKzIyMDM5IDc3ZmQyMGJjYzc2NjFhNzBiODRiNWIxNGQ0M2JhY2Y4YTJhOWI0MmEgbGVnYWN5LXRydW5rCisyMjA0MCA0M2FjMTgwNGQyYWFjYmRkY2I1YzkzOThiODk4ZTUxMzBkNDc2YzA0IHJlbGVhc2UyMS1tYWludAorMjIwNDEgZWYyMDMxYzU0ODc1NzYzMjRkNjdmMzY3MWI5ZDUxYjg0M2YwNTg2ZSBsZWdhY3ktdHJ1bmsKKzIyMDQyIDUzMzFmNDcwNThhMTk5MTIzMjAxYTIxZmZkYzI3NDcyYmVmYmM0MmQgbGVnYWN5LXRydW5rCisyMjA0NCAyYjE2NTI2YTM1YTRkZTEyMWViN2YxYTJmNmU1ZjZjNjhjNTExYzI1IGRlc2NyLWJyYW5jaAorMjIwNDUgZjUyYzA4M2I1NTg4MTZlMTNiNjM1OWZmOGU3NDc0NDcwN2JmMjMxZSBkZXNjci1icmFuY2gKKzIyMDQ2IDMxNDdlZmUzMWViODk4MjE1MzY5Y2I3MWQxYTgxMGI2OWFlYmM1MjYgZGVzY3ItYnJhbmNoCisyMjA0NyBkOTcyY2ViNGRjMDY0MGNmMDUxOWI1ZDM4MjY3NWNjOTM0OGMyZDc1IGxlZ2FjeS10cnVuaworMjIwNDggZDY0NjI4Y2M4ZmZjOGE4NmRmZjczZmMxM2I2NzVmM2Q1M2FjYTQ2MiBsZWdhY3ktdHJ1bmsKKzIyMDQ5IDZmMzAxYjNjZjMyM2VjOTM1NDljNjg4NmYwMWIwNWI4MjllNzU4NzQgbGVnYWN5LXRydW5rCisyMjA1MCA0ZWUxZmVlMWQ0YWRiNzQzMDQwYmU1YzljNjRjOGQ0NTdkNzFiMWVlIGxlZ2FjeS10cnVuaworMjIwNTEgZDE2NjlhZjlkMGVjNTJkMzdiNzQ5NWUxM2MzNTMwZDYxM2VlNTFlYiBsZWdhY3ktdHJ1bmsKKzIyMDUyIDczNDM2MjJmMmI4NWQxNDEyNGE0YzNiNzhlOTgwZTYwYzViOWI4ZTUgbGVnYWN5LXRydW5rCisyMjA1MyBkM2Q5Y2VhMjMxNTY2OWEyMWU3NGU0ZThjYTIyYTZkYzAxZjA1MTQzIGxlZ2FjeS10cnVuaworMjIwNTQgYWUxOWM2OTkwNzQ5NjIwYjBhZTkxOGE3ODdlNzIwNDYyYzM2ZGFiZSBsZWdhY3ktdHJ1bmsKKzIyMDU1IDlhYzFkMzVmODEzNjZjZTJiMjU0ZTgyMmI1YWY4OGViYmMyZTFhMTYgbGVnYWN5LXRydW5rCisyMjA1NiBlYThlOTYzZDllNjcyNDQ2OWRjZjYzNjE2MDFiYTZmMWMyNzk5ZGExIGxlZ2FjeS10cnVuaworMjIwNTcgNmY1OTAzMmFmMTU4ZjE4NTYxNDYwNWU5M2EwZTk2MzUzMDljN2VjMyBsZWdhY3ktdHJ1bmsKKzIyMDU4IDgxMzM3ZmJhN2RkYmUwNTliMDkxODJmMTVmOGRmMTUyNzk5OWQ0NDMgbGVnYWN5LXRydW5rCisyMjA1OSBjMDc2NTVmNzI2NDdiMGRmZDk0NDJkZjYwMmRjMmIyZWFiOWIxODAxIGxlZ2FjeS10cnVuaworMjIwNjAgYTVhYWY2OGZmY2RhYWFiYzkxODdkZGFhYWU0YTI3ODY5M2NiMmQzZCBsZWdhY3ktdHJ1bmsKKzIyMDYxIDllY2NmNzhmZWExYWMwM2ViNTg5YmM3OTA2MWZiOGE2M2M0YjlmMGQgbGVnYWN5LXRydW5rCisyMjA2MiA0MzI0NTdmMDIyODc4NDEwOTZiYmZmNDFkNWFkYWRiZDczMmEyZjY1IGxlZ2FjeS10cnVuaworMjIwNjMgY2I3NjExN2MxYjRiYjgwMDliMzllNGQ4MTgxMTZmYjFlZTc0NzM5NSByZWxlYXNlMjEtbWFpbnQKKzIyMDY0IDI3NjM2YzkxY2IyN2M1YTEwNTQ0ODc0YTY1MWFlMjM2ZWUwMzdiZjEgbGVnYWN5LXRydW5rCisyMjA2NSAxYjA5YTljYjA2ZDU5ZjUwMDBlMzI3ZGQzN2FkYTI3YWVkNmEzYjUwIGxlZ2FjeS10cnVuaworMjIwNjYgM2MxMmVlZTdiYmQ0MjM2NDc2YmFjNDQxYTdjNzRhMzVhMDE4YjIxMiByZWxlYXNlMjEtbWFpbnQKKzIyMDY3IGEzNTY2ZWU1YjFmOTQ4NDQ0ZDlmNGI2YTA0MDUzNzUxNjRmNDg3YzIgcmVsZWFzZTIxLW1haW50CisyMjA2OCAxMTExMmI3MzZjN2I1YWMwZTI3YWFlN2U0MDQxZDFjNzRiNzdlOGM4IGxlZ2FjeS10cnVuaworMjIwNzAgMTJiNGJjNGE4MDQ4OGU1ODNhMzAwMTY3ZWNkYTQwM2Q1NGJkMmQ2ZiBkZXNjci1icmFuY2gKKzIyMDcxIDQwODFiNTZmMjBmZjU5YmZiMTEzNTY0NGE4YmEyZWVhMTA2NDJkMmMgbGVnYWN5LXRydW5rCisyMjA3MiAyZGZmYTNkM2Q5NGZmMWFkYTJiN2RmMDBjNTA1ZDg4M2NmMTU3OTk3IHJlbGVhc2UyMS1tYWludAorMjIwNzMgMGUyMTJlODhkMzNkMDkyZDlkNDcxNjdlZTZhNzQxNjIyYjA0NTQ1OSBsZWdhY3ktdHJ1bmsKKzIyMDc0IDRkOWViZWVkYmQwNDVmZTE4YTk3ZGM0NmE1MWQwZWIyNmNhZWY4MWIgbGVnYWN5LXRydW5rCisyMjA3NSA4YzQwMmFkZWVjY2JiNWIwM2FhZTZkZTZmM2ZjYzAwMGM2N2MyOTJlIGxlZ2FjeS10cnVuaworMjIwNzYgMGI5Y2VhNjNiY2ZjZGNjMzNjOTg0Mjk5NDM3NDZlYzY5OTBmNWY1OSByZWxlYXNlMjEtbWFpbnQKKzIyMDc3IGY1ZTI1ZmU0NjZhNDE5MWRkNWQwZDYyMzE3Nzk5MjQ0NmVlZjcxZWYgcmVsZWFzZTIxLW1haW50CisyMjA3OCA5MmVmMzhiMDEzNDYzYjI2M2UzNzliNTUwZTBmNWM0OWMwZDMwZTBiIHJlbGVhc2UyMS1tYWludAorMjIwNzkgMGNlMzVlN2Q2ZTMzNjYzNTM2Y2NjYjk5YTA0ZWRkNTQ3ZWRjZWM0OSBsZWdhY3ktdHJ1bmsKKzIyMDgwIDY0MzQzYTEyNzIwODNjMDUwY2MyZWM2YjY4YTVmNjVhYzE5NGMyODggbGVnYWN5LXRydW5rCisyMjA4MSAyMjQ1NmQwZWU3Mzc5OGM0NzIyNjYzZjY3NzRmMWI5ZGQ4NjA0NDhlIGxlZ2FjeS10cnVuaworMjIwODIgYzdiYjk1NjNiMTQ5ODAzN2MzYTAyYmZlZWViNzMzMzNhNTIzYTAxMiBsZWdhY3ktdHJ1bmsKKzIyMDgzIDliMjkxY2E2NTQ2YzRiNGY5MjRmZTZmYzFiMmVjOWZmMjUzNmRjYzYgbGVnYWN5LXRydW5rCisyMjA4NCBmMTJlMWE3NjZhMTQyZDU0NzU1NDdkZDQzNTdkNzIxNjI1Mjk2YTM3IGxlZ2FjeS10cnVuaworMjIwODUgYWFhZmM4NTJjMmQ1M2Y4ZDI5MjUyZjc3ZTg5Mzg4NDdhNTIzMDY5MiBsZWdhY3ktdHJ1bmsKKzIyMDg2IGZiODM3YzVhZTVkM2YzNmIxODY5ZWYzMDkwYTU1OTA4NTBjNWQwODAgbGVnYWN5LXRydW5rCisyMjA4NyA1YmRiZTYxYTBjMjhiYjJjM2Y5NjA1ODUwZmRiZDEwZDJjMjcyNDhhIGxlZ2FjeS10cnVuaworMjIwODggNTliN2U4ZWNmYjk2NjczMjFkMjlmNGEzMzc2YmNiNjUxNDRhMjc1ZiBsZWdhY3ktdHJ1bmsKKzIyMDg5IDcxZmVhZTdiZjU2MDk0YmYzNDAxNzE5NGNmMGE2Yzk5OTFhMjFjMDIgbGVnYWN5LXRydW5rCisyMjA5MCBiZGJiN2M0ZGM2M2FkYzU3NzY3NTBhMTVkMmRkNmI2MzEwMWRlNmYzIGxlZ2FjeS10cnVuaworMjIwOTEgMjIxNTVhNzE4MjU0MTVlNzNiZjg1YWE5ZTJlMTQ3NzYwODA1NjJmMyBsZWdhY3ktdHJ1bmsKKzIyMDkyIGRlYWQ5ZmFiYmVmYjdiNTdhMDE5ZWNlYzRlOTU1NDBmMDFhMGM1ZjUgbGVnYWN5LXRydW5rCisyMjA5MyAwYjE2MjVhOWU4OWE3MmNmZWM2N2NmN2NlYTI4MmNmNzBlNWUxMzRhIGxlZ2FjeS10cnVuaworMjIwOTQgZDIwYTRjYTA3MDVjMWVhZDkzMDlkMzZhMjY0YTJhYTk0ZTEwYmE4NSBsZWdhY3ktdHJ1bmsKKzIyMDk1IDAxMzJhZjYzNTA2YjljZGUwZDdkNzZjNzFkOTI0ZmFhZDdmMmZmZGEgbGVnYWN5LXRydW5rCisyMjA5NiA4NTg0MjE3ZGRjOGQ2ZDIwODIxZmEyNzk4NzdjM2M5MWM4NzcwMzRjIGxlZ2FjeS10cnVuaworMjIwOTcgY2JhYmU1MjJiOGYxNjc2ZTVmN2E4MWUyNzFhYTgyM2QxMjExNTRiYyBsZWdhY3ktdHJ1bmsKKzIyMDk4IDIyZTgyMzE0NjNiYTZiMjNlMTVlNGRkYTE0NWM2ZGM5YWJjNmNmNjUgZGVzY3ItYnJhbmNoCisyMjA5OSBlZGYwNThiMTZkZGYzZmFkM2YyMjU1MGQ0NWQ1NmJiMjRhNDNjZjM4IGxlZ2FjeS10cnVuaworMjIxMDAgY2JmZGY2MjNjMjY2ZjY5M2ZkYTI5ZTU1MWNjZWIxNGI4N2U1YjQ2MyBsZWdhY3ktdHJ1bmsKKzIyMTAxIDVhZjFlZTQyMjU3NTI3YjUyNGFkNmFkOWMzZWY3MWEwYWMzOWQ0NjEgbGVnYWN5LXRydW5rCisyMjEwMiA3NjI4YWE4MTZhZGE5ZGE5NjhhMjRjMzUzNGQxMGJlOWIzMjNmYmYwIGxlZ2FjeS10cnVuaworMjIxMDMgMjkxMDQxNzNhMDcyZWJkNjNjMWNkZmU2NzJjZGZjYWEzMDg3NTAxZCBsZWdhY3ktdHJ1bmsKKzIyMTA0IDQ0M2E4NjIyZTg1MWFiY2Y2MmUyODY1ZmFjYzI1OTE3ZmEwMjg3NjQgbGVnYWN5LXRydW5rCisyMjEwNSA3OWM2NzZmOWIzNGE5MTQwYjk4NDdlNzljMDU4MTlhMDUwYjFkYjgzIGxlZ2FjeS10cnVuaworMjIxMDYgOTc1M2IwMjY5ZjNhYzBkZDY4NDBlYzhhMjE5NDNmZjJlYmY0OTZjMiBsZWdhY3ktdHJ1bmsKKzIyMTA3IDM0ZjAxYzZjYzgxODYxMzcyZWY5ODk4MGFhY2QzODM3OTZiYmQ4Y2YgbGVnYWN5LXRydW5rCisyMjEwOCA1NWI0NWI0N2ZjNDg3OGZiZjQ1NDQ4ZGM3Mzc5Mzg2ODljMmI0YzUyIGxlZ2FjeS10cnVuaworMjIxMDkgMzZlN2QxZWFiZDkyMWFiMDQzNGU3NTIwZGFmYWMxZDMxOTdiNGM0OCBsZWdhY3ktdHJ1bmsKKzIyMTEwIDkxNDEyMmZiZWFkMmRjMmRkYmE5OThiM2RkMWFjNDUzNGUwYzM4OWIgbGVnYWN5LXRydW5rCisyMjExMSBmNjFkZjhmMGNiNDM4YTY3NTM5NGU3MDk5YWE5NDNkZTI1OTBkZDY1IGxlZ2FjeS10cnVuaworMjIxMTIgZGVhZjdiMTM5YmM4ZjRiYmMwYzZjZDNlYTE4NTJmNzNhZTdkZjQ4ZSBkZXNjci1icmFuY2gKKzIyMTEzIGYwODIxODlhNDQ0Mjk0YjQ2ODk4ZjY1ZTVhOWQ2ZGQ1YjUzNjE4MzkgZGVzY3ItYnJhbmNoCisyMjExNCA1MTBmN2Y2YTg3N2VjZjc0YjU2M2ZlZmQ4NmU0OWM0MGIxNDZlZDRmIGxlZ2FjeS10cnVuaworMjIxMTUgMmJjNjQ4OTMyZDQ0ZmIxNTMzZGM0NjZiODcwYWY0MGQ0NDk4NDc3ZSBsZWdhY3ktdHJ1bmsKKzIyMTE2IGI3MzI2OTBmNTYxYzZlNzY1YjUwMzc1OGEwZTBlOTU2ZDNiYzU5OWQgbGVnYWN5LXRydW5rCisyMjExNyBlN2MzYzliZjUyYjI3ZDU4ZWFiNmM5YmJmMWExNTUwZGIzZjc0MWRjIGxlZ2FjeS10cnVuaworMjIxMTggNDJkZDYyNTFjYzNjYzRmMDFiZDQxMWViMDkxMzE5YzMzNzQyODQ1MiBsZWdhY3ktdHJ1bmsKKzIyMTE5IDcyYTM2OTFmMTA3MWZhZjJlMjYxMWJlOWJjMWQ3YmEyYjRiZmU0N2EgbGVnYWN5LXRydW5rCisyMjEyMCA1MmJkOWUxZGIzZDkwYTUyMTY5ZWUxYTI3ZTA2YWQ3YmZmMDMyNGY3IGRlc2NyLWJyYW5jaAorMjIxMjEgNTJlOTJjZmFiMjM3NmEzZDQ1MGEwOGQ5ODQ4ODFhYTFkZDIzNDI3NCBsZWdhY3ktdHJ1bmsKKzIyMTIyIDJmMjc4MzhkOGZjNTk0Mjc1ODYyNDg2ZjAzMzUwNTAxMzhlMDU3NDggbGVnYWN5LXRydW5rCisyMjEyMyAyZTQ5ZjBlOTJiYzVhYTVjOGI4NmZkZTliY2YyZWQzYmUzMmViMGU3IGxlZ2FjeS10cnVuaworMjIxMjQgMWVmZDY5YmYxODRjMzkwODUyM2IzOTE4NTc3NWE1YjEyZGNiMGIyZCBsZWdhY3ktdHJ1bmsKKzIyMTI1IGZhMDJmNzliYjQ5MWNjNzExMGY4NzRhNTA1YWIyMjhiYjYzNmFhMzEgbGVnYWN5LXRydW5rCisyMjEyNiAwYWExOTE2Y2YxMDM0OTFkYzdiNmQ0ZWNkODliYmFmNWQ2ZjM1ODdjIGxlZ2FjeS10cnVuaworMjIxMjcgOGUyZjYyOTZmZDdiNGE2NzVkNWMwYmE2YWMwMGFlMmY2YWNjZmVhZiBsZWdhY3ktdHJ1bmsKKzIyMTI4IGY0OWExMmU3ZTI0YTQwYTBmNDc0NTM0NzgyNDI5MThmZmIyNDY4ZDIgbGVnYWN5LXRydW5rCisyMjEyOSA0YmZkOGE1ZGEwYjFkZjFiN2Y3Nzg5ZDY0MTQ0YWQxM2E1ZDZlZmY0IGRlc2NyLWJyYW5jaAorMjIxMzAgMjNmNTViOWY0YmM3NDRiMTEwZjViNTU1ZjQ0MTRkOTQ1Mjg3MGJmMiBsZWdhY3ktdHJ1bmsKKzIyMTMxIDRhOGRlZDA4NzI2MmYyYzU2NmUwN2FkZDMwYjYxYzEwZDQ1YzU2YTMgbGVnYWN5LXRydW5rCisyMjEzMiAwZGVkYWU3YmUzYWExMDQ3MWJhYzBlZTk3Yzk2ZTZkZTA2NjU5YTMzIGRlc2NyLWJyYW5jaAorMjIxMzMgMGZkYzVlZWJlNDJkMWM1MTg3Yjk2NGM2YjUxMGI3NjExOWUwYzlhMSBkZXNjci1icmFuY2gKKzIyMTM0IDZjMDE4NWRmNzE0N2MzOTgzMDQ1MmY2YzVmYzM0OTY2YjhhNDA2YWMgbGVnYWN5LXRydW5rCisyMjEzNSBkYWI5NWNhOGFjZmMyYTRhNzA2NTIwNDVjNzU5YWFmOTMzNDMxNGViIGxlZ2FjeS10cnVuaworMjIxMzcgNDE5MDg2OTM3NzQ2NzVhYjZhMDFlODc4YmVhOWYzYmIyYzY1NDgyOCBkZXNjci1icmFuY2gKKzIyMTM4IDY1MDk3M2UyOTI2Y2ExZjQwNzgyZDFhNzMxMmJkMDgxY2I0MTc2ZDIgZGVzY3ItYnJhbmNoCisyMjEzOSAwOWRmMzI1NGI0OWQ3YzkzMDY1ODUzMDJmZTgxNWFiMGJkYjUzNDM5IGxlZ2FjeS10cnVuaworMjIxNDEgMTU0MWQ1YzZhOGYxODEyMDhhYTczNzZlNTc4YjA3YTA3MmM5ZWVkYiBsZWdhY3ktdHJ1bmsKKzIyMTQyIDkwMGUzODUyNGJmMjkxYjFjZDZhZWUyZTEzYjA5ODU5NmRmMzY0N2IgbGVnYWN5LXRydW5rCisyMjE0MyA3MTQ5MTczZThlZGNkYWM2YmZiMjZhZTU1M2MwZDAzYmE5OTIyNDYzIGxlZ2FjeS10cnVuaworMjIxNDQgZjg1OGY5ODdlNzcyYTI5MjAwNmU4ZjQ2MmNmZDA0NWM5NTRhYzZhOSBsZWdhY3ktdHJ1bmsKKzIyMTQ1IDZjMjFlOTM5NGI0NGY0ZmUxZWQ4OGQ2OGI3YzlhMmE3YzEzNmRiNjcgbGVnYWN5LXRydW5rCisyMjE0NiBmZTNiYzRhNGFkODQzNmU5YWUxZDhjNTMwOTA3YzMzMDA0ZmIzYzZiIGxlZ2FjeS10cnVuaworMjIxNDcgYTVlNGQ0YTMwYzk4Mzg1MzY3Njk5YzFkMmMzNzMwZTE0YWE2MjBlNyBsZWdhY3ktdHJ1bmsKKzIyMTQ4IDAxM2NmZmNmZDhhM2I0MDE5YWE2MzJkMGM1MjUyMWQxNDljYThhY2IgbGVnYWN5LXRydW5rCisyMjE0OSA5MGQwNmNiY2UyNmE0YjAxNDU3ODk1M2NkYzIxMjcyODBlMWQ0Njg1IGxlZ2FjeS10cnVuaworMjIxNTAgZTAxZDI5NjM5ZDhlNWQzYzdhNTdlMzdjMjdmNWY1NTE5NGI0NjdkYyBsZWdhY3ktdHJ1bmsKKzIyMTUxIGEwODE5NzA4ZmU5YzcyZDU4YjRmZTYxNzUwOGFmNTEwMzFhNGIyNWMgbGVnYWN5LXRydW5rCisyMjE1MiBmOGZkZDUwODNhZjM2NTkzODBmZDU1OTE0ZjA1YjUyMDk2YzY4ZjZlIGxlZ2FjeS10cnVuaworMjIxNTMgMmIxNGYxMzA4Mjc1NTI3ZDJiNGQ0ZWEyZTY2YTIzYjdmMjYyMjBjNiBsZWdhY3ktdHJ1bmsKKzIyMTU0IDEzNDZlY2YzMThmMjc3ZDBiZTUyY2FjMDk3NWM0M2VhMzA5ZGY2MWUgbGVnYWN5LXRydW5rCisyMjE1NSA5MzA2ZGFkZGMyNmZkYWI3ODU4MGNlMDY4Yzg5MWRmZWQ2MWM0YjNkIGxlZ2FjeS10cnVuaworMjIxNTYgMzg4ZGY0OWMxYzM4MjI4MjhjMzUzYWIxOTE0ZTZkOTY5NDQ2ZWIzMCByZWxlYXNlMjEtbWFpbnQKKzIyMTU3IDRkZGM1YWI5YmVjNDE5ZjYzMGMzYjRlNzQ4NGFjNzgzYmJkNDRjMmQgcmVsZWFzZTIxLW1haW50CisyMjE1OCBmNzJkNjFiMTI0NmVlMDFjMTMxODY4YTI5ZWU4OTE3MmJmOWUyYmNjIGxlZ2FjeS10cnVuaworMjIxNTkgZTkwYTY1OGE1OGQ0ZjYzM2FmYTE2MzhiOWMwYzA3M2NhZjVhMTVkNyBsZWdhY3ktdHJ1bmsKKzIyMTYwIDQ4ZTBmYjA1NWMzM2NhYmEyNDllMzc1ZTRiNzI5NmM5NWU4ODc0OWQgbGVnYWN5LXRydW5rCisyMjE2MSBmZWZjYzFlODBjZWUzNTYwYWI1YTcxMjRjZGMxNjcyYzcwZDk0MDFiIGxlZ2FjeS10cnVuaworMjIxNjIgMWRiNjkwMGEwNzgzNWEzZjVjM2U5ZWE4OTQ5NTI3NzQyN2RmZjdhOCBsZWdhY3ktdHJ1bmsKKzIyMTYzIGI3NjIyMjBhNjE1OWZjMzNjYzJlNzcyMTlmZDI0YTg3ZGEzZGZlNWYgbGVnYWN5LXRydW5rCisyMjE2NCBmMjg4NWIwZGRiYWViNjBhY2IwNjA4ZWJiNGFhMTgyOTMzYmM2NDM0IGxlZ2FjeS10cnVuaworMjIxNjUgNDc4OWMxMmE4OWYxYmY0NDMyM2JiMDdmM2Q4OWI4ZGFmY2FmNDZlOSBsZWdhY3ktdHJ1bmsKKzIyMTY2IGNmOTI1NDIxMDAxNWRiNmY5NjY0MWZiYmM5YmEyZTQ2OWExZGJjOWYgbGVnYWN5LXRydW5rCisyMjE2NyA5YWE1ZDY2Y2QxM2RjZmEzZDIyZTVkYjZkODA4ODBiMjI2M2E0YWQ0IGxlZ2FjeS10cnVuaworMjIxNjggZWVkOGE4YThmNjIyYzhkOTlkMzljYzg4MjZhMDE0YzYxNDBiOWYxNyBsZWdhY3ktdHJ1bmsKKzIyMTY5IGQ3NTkwMTIyZjlhMjYxMzczMTEzM2EzYjYyZTZkNGY2ZDA5YzQ4YjUgbGVnYWN5LXRydW5rCisyMjE3MCA5MzEzYjQ4ZjExYzNmOGM2N2JkMjcyODVmOTA1MTEwN2Y4NTU1MjY5IGxlZ2FjeS10cnVuaworMjIxNzEgOTE5ZTYwZDc3MzM0MmNhNGFhYmEzOTFhNDk5ZTU1YzYyOTJjMjFmOCBsZWdhY3ktdHJ1bmsKKzIyMTcyIGY5NDZiN2Y3ZDgzMThlZjMwNGQzZjU2NWU1MmQ5ZGIyOTg3YzBiOWIgbGVnYWN5LXRydW5rCisyMjE3MyBlZDYyYWQzMDgzNGViMGI1MzU1OGRhNzExYWRmNTIxNzY2MjkxNjMyIGxlZ2FjeS10cnVuaworMjIxNzQgMWFlNzE4OTc2YWM2ZGMxMThlYjI0YmYzNDc3ZGU0YWIyYWQyODViNSBsZWdhY3ktdHJ1bmsKKzIyMTc1IDBjMzA3ZmEzNDRiNWNhNjM1NjMxOTFhNDY4Njg3ZGIyMzcyY2RmZTEgbGVnYWN5LXRydW5rCisyMjE3NiBiMDBlN2IzOGY3N2YyNzUxZjRkNzUwYTcyNmM5ZDhkY2ViM2NhOTMxIGxlZ2FjeS10cnVuaworMjIxNzcgYmQ5NzJmYTg0MWM1ZmViNmFjZDQ3NDA1YTY4NjQ0OTQ1NDgzZGYwMCBsZWdhY3ktdHJ1bmsKKzIyMTc4IDljM2Q1Mzk1ZTNmZDkzMDkzOTJiYzZmZDNiM2YyZWIxZDNhMzk0MjUgbGVnYWN5LXRydW5rCisyMjE3OSBkMTQ0YzgxZWFmNDQ2ODBmOTUwNzZjODI1MzA1ZGNlMmFjMTllYjk1IGxlZ2FjeS10cnVuaworMjIxODAgZGM0YmU3YmQ2NzQ2MTA0MWUwMDE2OGMyNTQyNjIzNTRlNGY5ZTE5YSBsZWdhY3ktdHJ1bmsKKzIyMTgxIDY1MWU2Mzk0MjA4YzhkOTFkODMyYmNiNWVhODhjZmI4ZThhZWYxM2IgbGVnYWN5LXRydW5rCisyMjE4MiAxZTY4NmIwODk4YTJmNjg3M2VmM2UxYmI5ZmU2MzEwZTMzMzc2OWViIGxlZ2FjeS10cnVuaworMjIxODMgNDcxYTkwMTgxMjljM2ZkMTkxOTFkNjc3ZWY3NTA5NTA3ZDkzODZmMCBsZWdhY3ktdHJ1bmsKKzIyMTg0IGYxY2YyYTQ0NDE3NDlmYjIwMDIzMjllYWRmYzcxYmEwMjhkYzk0NGMgbGVnYWN5LXRydW5rCisyMjE4NSAzNDI4NDIxNjIwMWJlYTk5MzViNDE4MjNjMWU5ZDE5MzVlYWI2YzBjIGxlZ2FjeS10cnVuaworMjIxODYgM2RkOGU2NGY1MTJlODRhZmM0YzM4OGJmNDY1NGI4N2I0Y2ZiNzcxOSBsZWdhY3ktdHJ1bmsKKzIyMTg3IDllNGMxMjY3M2ZhYjQ0ZmJlNTI2ZWRiYzZiYmNlMDkyZDRjOWJlMDMgbGVnYWN5LXRydW5rCisyMjE4OCBkYWM5Y2NhNDkwMTIxYzFhYjYwYTUxYmFmY2FmNzJiMGQ3ZDgwOWRkIGxlZ2FjeS10cnVuaworMjIxODkgOGI5ZDg3YWY2MWViZGJmNjk1M2JmYTBhOGFlNWVjNDM0NTJhOTNiZiBsZWdhY3ktdHJ1bmsKKzIyMTkwIDExM2YwYjU3NDRjNDBjOTFmMDkwNTEwNDVmNDExMmE2MGY0OWQyMTcgbGVnYWN5LXRydW5rCisyMjE5MSAwMDkzNTAzMWIzNzNjNTQ5MDg2ZTJkMDM2ZGM3NjM3ZGZkNDhjZjg1IGxlZ2FjeS10cnVuaworMjIxOTIgYmE5ZTRmNTUxMzNmOTNiZTM2NDEyYjFjMzk2YWJkZGMyZWZjYzlmNyBsZWdhY3ktdHJ1bmsKKzIyMTkzIDlmNzg3NTlhNTFiMGY3M2M4MzhmODZjNTM1MDkwYjJmODBmYWRkMjggbGVnYWN5LXRydW5rCisyMjE5NCA0ZjRkODMwM2RlNjBjZjZjMDZmZGU0Zjg5ODJkN2I1ZTJlYTMyMWIxIGxlZ2FjeS10cnVuaworMjIxOTUgMDhjZDgxY2RmZmE5ZGQyZjRkNjY5MzkyOGUzNjdmNzZkMDhjMzg1YSBsZWdhY3ktdHJ1bmsKKzIyMTk2IGFjY2YxOTI1NDMxYzc3MGU4MzFmMTZiNTc0ZDVkZGU3YmIxZWNiNWIgbGVnYWN5LXRydW5rCisyMjE5NyAyYjExZDE2NmIwN2I3MWEwYzUwNzQ1NjM5ZjllOWVmMmZkODczMjkxIGxlZ2FjeS10cnVuaworMjIxOTggMzYwY2VjZTc2MTIzNTVlM2ZhZTRiZjRhYzI4YmI2ZDExYTIyMGVhYiBsZWdhY3ktdHJ1bmsKKzIyMTk5IDdmYTFmODdjYTZiMmQzZjYyYWI4YTg3OGNmZDFkNDIwMGFkODE2NjMgbGVnYWN5LXRydW5rCisyMjIwMCBiMGFhZjc4MGJjYTY2YzdkZjQxYzhlZDc5MjMzOTIyYWJhODY1NzZjIGxlZ2FjeS10cnVuaworMjIyMDEgMTE0YTkwYTQzZGI3ZTllODA3YmZkNDE1MjQ4MWZjZjg2NGIzMTZjZSBsZWdhY3ktdHJ1bmsKKzIyMjAyIDgwNTA5MGNlMzI4YTAwMTdjOGVlMDkyOTcwYzc5MWFlMjRmYTJjYTQgbGVnYWN5LXRydW5rCisyMjIwMyA5MDU5ZTdjMWQ4YjAxOGI3ZDE3MTVmN2U1ZDgyMWY1NjYxZWRiNGM1IGxlZ2FjeS10cnVuaworMjIyMDQgOWZjNGE1YWJiMzY5NDNhZmYzZTMzNGZjN2JjOWM3YzQ3N2QxZThiYiBsZWdhY3ktdHJ1bmsKKzIyMjA1IGFlNDNmOTliNDdlMWUyNzY2YmQyOTg4Njc1M2NlZWNhZjJmNjZkMjQgbGVnYWN5LXRydW5rCisyMjIwNiBhMmIzNTg3ZjU5MmE4ZjVkZGU5ZGU3YzY0ZDFiYzE3M2Q1OTBjNDljIGxlZ2FjeS10cnVuaworMjIyMDcgOGVhNjBlMmIwZjIxOWU0MjMzYmZiYTViZWExNjgxNDBlMTA4NTdkOCBsZWdhY3ktdHJ1bmsKKzIyMjA4IDI4ZjBlYThkNjI3ODFiNGFjMmM1NGU4ZmJhYWNlNDlmMDA3N2JiMzAgbGVnYWN5LXRydW5rCisyMjIwOSAyYWUzN2NmYjE4OWY5ZTlhYjQ4YjIyNTNmNWVkOTRjNjkyNjRjODIwIGxlZ2FjeS10cnVuaworMjIyMTAgMTlhM2M2YWY0Mzc0NDY0ZTAxNzJjMTZkNjQ5NWE0ZWRhYzZjOThiYSBsZWdhY3ktdHJ1bmsKKzIyMjExIGIxNmY4ZDAxYzUxZTNhMzNhODM1ODE2NWU1ZmFlNDJkZDU2YzQ4ZDQgbGVnYWN5LXRydW5rCisyMjIxMiBjOTQyYTk4MjFkMDk5NzM4NmI0ZTRhNWM2OWQ5ZmRkZmZlZTM0MDAyIGxlZ2FjeS10cnVuaworMjIyMTMgODExMTQyMDllZThlZWU4OWE2Mzk2MjhkZDU5MTU5NjczYTg4Yzc1MiBsZWdhY3ktdHJ1bmsKKzIyMjE0IGNlZmRjZDYwYThiMmIwMTY0NGNlYzdkZjYyZTRlMTQxM2RkYmUxOWUgbGVnYWN5LXRydW5rCisyMjIxNSBmNWI3YTFlYzRiOWYyYjFkNDY3ZDUxNjQ5YTgxOWFjNTA5NWYyZTZiIGxlZ2FjeS10cnVuaworMjIyMTYgMWJjNjdjZjU3ZDBhYjZhNmI3MzE2Mzg4MDZkNmQ5M2IwNmExNWFkOCBsZWdhY3ktdHJ1bmsKKzIyMjE3IGZlMjBkMWNmZWMzZDlhM2MzOWUxZmIxZTA4ZDZiZmNjZTU0ZjczYTYgbGVnYWN5LXRydW5rCisyMjIxOCBjMWRhYTk0YzIxZDgzMGUzMmU4YWMxODVmNTlkYTNjYTM4YzUzMWM4IGxlZ2FjeS10cnVuaworMjIyMTkgYmI4NWNjYmQ0ZmVlNTU0M2RlOTJlZjhhZWJkOWY5ZjQ3NGM3MWMwNyBsZWdhY3ktdHJ1bmsKKzIyMjIwIDdkMjdlMzg4ZWM2YzllZDAyMzUxNTk4NmE4YTE4NmQ1MmQzNmNhODIgbGVnYWN5LXRydW5rCisyMjIyMSBlYzY3NmUxNDA3M2Q3ZmNmYTUyMWNkODgxYmZkNDU4ZTc3MTY5ZTI3IGxlZ2FjeS10cnVuaworMjIyMjIgNTBkYTYzNzM0MWFlNTIyZmJhMmFjYjUyNWFlYzAxZjBkNTNlZWUzNiBsZWdhY3ktdHJ1bmsKKzIyMjIzIDAzODQ5OTQ2NjcyNzI4ZjFhN2MyYWIwN2RhMmYwMmU1YmQ2MWU5YTUgbGVnYWN5LXRydW5rCisyMjIyNCAwNzhjMTk2MWUxNzUxNDYwMGQ2NWZhOGM1MjEyYzY0YWIxODRkMGE1IGxlZ2FjeS10cnVuaworMjIyMjUgODIxZTM1NzA2YzA3MTU5ZjViMTEyMjMxYmU4YjM3NDdkMWM2Yjc3MSBsZWdhY3ktdHJ1bmsKKzIyMjI2IDMwYWUzYWZmMDNiZDk4NDg5OWY1YTcxMDI5NWU0M2M5ZDUxZmI3OGUgbGVnYWN5LXRydW5rCisyMjIyNyA2MDBhYzVkYmM2NjY0ZjU0YjYzMTU2MzI3MjA0Yjk2NDZmZWUwMDA2IGxlZ2FjeS10cnVuaworMjIyMjggZTU3NTRmMDQ4ZjBiYzM1ZmJjMDBlNDVmZjUxNDJmMmQzMzNiNGQ0NyBsZWdhY3ktdHJ1bmsKKzIyMjI5IGJhZDQwOGM3ZDlkNzg1NDA2Y2Q1YTliNjgzMjZiZjkyM2QzODA3MDYgbGVnYWN5LXRydW5rCisyMjIzMCA3YjFhMDgwNDE2MWVlZDg3MjQ1ZGJlZWZiY2IxODE4Nzc4MzY5MDAzIGxlZ2FjeS10cnVuaworMjIyMzEgMGFiOGY5MzdmZjY2NWI4NThkYWRiYjk3Mjk5NzEzNDliNGRkOWE4OSBsZWdhY3ktdHJ1bmsKKzIyMjMyIDIzODc2ZTJkODRiNmYxZTUxMjI1MDEwZWU1ZjM1NjVjMzI5YjEyYzkgbGVnYWN5LXRydW5rCisyMjIzMyA2MGE3NTAwMmE3NGNmZDAyYjU3Yjc5ZGIxYmQzMWZiZGVjYWY4ZDBiIGxlZ2FjeS10cnVuaworMjIyMzQgOTgzMTVmMGUxZDI2ZDc0MjdmNjdiNjAxZTY1ZTQ4ZDJlZTJhMTliMCBsZWdhY3ktdHJ1bmsKKzIyMjM1IDZiOGI2NWZjY2IwM2Q5ZjFmYzgzNmIxZmExODE5NmY1OGU5ZTY5OWEgbGVnYWN5LXRydW5rCisyMjIzNiAyNjNkY2FmMDBlZWRjZTBjZjJiNmNiNGQxOTI1ZGRjYzA4MTkzN2JmIGxlZ2FjeS10cnVuaworMjIyMzcgZTRiNjcwNWRjODRmOTBkZDE4NTAwNTI1ODdhZjg0M2U2OTU3ZDU2YyBsZWdhY3ktdHJ1bmsKKzIyMjM4IDllNTc4ZmNiOGRkYWI3M2ZkMTMwY2MyYWUyMDk3NjdiNzlhZDlkMGIgbGVnYWN5LXRydW5rCisyMjIzOSBkMzI2OGQ2MmU0NjIyMWQyNmRkZjhkOTc3YzgxMmE5ZDEwMDU0YzU4IGxlZ2FjeS10cnVuaworMjIyNDAgZDkxNWEwZWRiMmVhMzExMWQ3MzZhZDIwZGFhN2MzMjFkMTM4OGVhZSBsZWdhY3ktdHJ1bmsKKzIyMjQxIGIxNTMwN2QyOWJlN2JjNGZkZWM4ODM2NDJiMWJlNGZmMzI2MDA1ZTMgbGVnYWN5LXRydW5rCisyMjI0MiBjMTcyOWNkYzA3MzQwY2U2MjBkNGJlOGRlNzJkMjgwZmE3YWZiZDM4IGxlZ2FjeS10cnVuaworMjIyNDMgM2E3ZDY3ZWUxMDExM2U4ZmIyNTZkYzQ3MTkxZDRlYjI3Mjc4NDNjOSBsZWdhY3ktdHJ1bmsKKzIyMjQ0IDgwM2E3YTE0NDhiMmQxZmFmYTE1NDAwNzkzMmRlODUwNzY3MGE3M2YgbGVnYWN5LXRydW5rCisyMjI0NSAyZDBhMDRlMjc1ODFlOGFkYmRjZjFhMDQ5ZTUwM2MwYWY0NTkyOGM1IGxlZ2FjeS10cnVuaworMjIyNDYgZjY2Y2NmMmM2M2ViM2E5M2UwMmFkZmM5MGJiYzQ0OGU4NzcyY2RlNSBsZWdhY3ktdHJ1bmsKKzIyMjQ3IDRkZjcyZWE3OGFlODA2MjgwYzJlN2M3NjkyNGZmYzRkMjExZDNjZGMgbGVnYWN5LXRydW5rCisyMjI0OCA5YTg4ZTUwYmYxMTQ1NmUxOGU1ZTAwNDBkZGJjMGRjYmIwOWRhMjBjIGxlZ2FjeS10cnVuaworMjIyNDkgYWQyYjgwNzU1ZDJkNGM2YmRiZTQ3MGJmOTg3ZDJhNmEyYTdiNWJmYSBsZWdhY3ktdHJ1bmsKKzIyMjUwIDhkNDdhMjFkOTVlMDQyMDdjYzc0Yjk1NDhlZjIwODM5ZWYzM2UzN2QgbGVnYWN5LXRydW5rCisyMjI1MSA4ZTYwZjMwMDM3YTFmY2Y5OGQ4NTZhMjNhNWUxOGZiMjgxZTY0ZDQxIGxlZ2FjeS10cnVuaworMjIyNTIgNzQ1Nzc0ZGJlZDU4ZTc1ZjhiYWQ2MjJhZmZiODQ2N2NiZjU4NzhlNCBsZWdhY3ktdHJ1bmsKKzIyMjUzIDdkYjViNTQyM2NjZjk5MDNkYzFiMmZkM2Y1YzgzMTY3NmZiMzdkY2MgbGVnYWN5LXRydW5rCisyMjI1NCAzNTA1MGQxODhhNmFjMWMxYzQ5ZmQ3ZjljNDc5NTRjN2ZmZTk5NDRlIGxlZ2FjeS10cnVuaworMjIyNTUgZTI4MmQ2YjJiNzU4ZTY0ZjM0ZDI1MjI3Y2M1NDk1MWQ3YzJlYjg5NSBsZWdhY3ktdHJ1bmsKKzIyMjU2IDI4YjY0M2JhZDc0ZDJiNjg1MDdlYzNlYTY2YjJjZjM3NDM4MjIzYzEgbGVnYWN5LXRydW5rCisyMjI1NyAwYzVlNTE2OTRiMGY3ZWY0ZGZmNjQwN2EzMTZkNWEyOWVjNTgzNjhkIGxlZ2FjeS10cnVuaworMjIyNTggZjIwNzI3Y2MzZDBmMmYzYmYxMjRkYWUxODhmMGI5YWM1ZjIzOTE3OCBsZWdhY3ktdHJ1bmsKKzIyMjU5IDM5NjlmY2JmOTUwMDg2ZjRlNjcyZTA4ZjdhNTE2ZmJlNWE2NGJmZmEgbGVnYWN5LXRydW5rCisyMjI2MCAyYmIyNDJkYzY5ZDhlNDlhNzZkYmMwMTRhMGFkYjI3ZWZkNjJjMTY1IGxlZ2FjeS10cnVuaworMjIyNjEgMTFiYmEzMGU5YzI4NDBlMDQzMWU0NWY3NmIzZDdiMWI1M2YwODZhNCBsZWdhY3ktdHJ1bmsKKzIyMjYyIGM5MGYwMDM2MTA5ZDRiYWE3MWFjNjIxZjBiN2UxMDgxMDQyYThhNTMgbGVnYWN5LXRydW5rCisyMjI2MyBhMzA3N2Y5NmQ0Nzg5NTlmMmQxNGU1Y2ZjOTFjMGJiYjI4MTdjNjQ4IGxlZ2FjeS10cnVuaworMjIyNjQgNjVmZTZiMDcyNDdiMDA3MDdiNWM4OTRhNDdhODcyOThkMjgzMGEwNyBsZWdhY3ktdHJ1bmsKKzIyMjY1IGY5NDk0MTM1YjU3OTA5NWQwYmNiZDJlZDdiODY2YWQxYzk3ZTQzNTkgbGVnYWN5LXRydW5rCisyMjI2NiBjOTc5NjI1ZmViNDk2ODkxZTU0Mjk3ZmY2Njk5NzI0MDUxYmM1MzYxIGxlZ2FjeS10cnVuaworMjIyNjcgOGJkMDZlMzI0OWJiNWUwYzFiOThhMDg0YWViOGIxOGY0NDI2Njc2ZCBsZWdhY3ktdHJ1bmsKKzIyMjY4IGY1MWIxM2JmNWQ1NGY5ZjJhOGUwZGFhNDBlYTRlMGQ5YmE0M2ZjYmUgbGVnYWN5LXRydW5rCisyMjI2OSBlNDI2MjMwZWE1NzMxYzlmMTYxMTU2MmEyZTlmOWYxZWVkZGJjZDVjIGxlZ2FjeS10cnVuaworMjIyNzAgOWNjNjdhYWZlYzZjMTg4MDAyYmY5NGRhZGU5ODg3OTNlN2RhMzYxYyBsZWdhY3ktdHJ1bmsKKzIyMjcxIGU1N2E0NjE0NDY5ZTZmNGNiMDM3YmNjOTk3YzE5NDg2MjY1NjhjN2IgbGVnYWN5LXRydW5rCisyMjI3MiBhYjJmODA5NWM0ZmNjNmQwMmI4M2E0OWE5YmI1NTFjOTJjZWM0OTg1IGxlZ2FjeS10cnVuaworMjIyNzMgYTFiNGYzYTFlZTA3OTY1NWNiZWI1Y2JhOTM4NGNiZTA1ODQxNjI3OSBsZWdhY3ktdHJ1bmsKKzIyMjc0IGQ3OTg2NWMwZjgwNDU4OWQ4YjdiYTFjY2ZkMzI1ZTBlMGI4YTNjOTkgbGVnYWN5LXRydW5rCisyMjI3NSBkMDA4MDJjNzRiYTRkYzQxOTAyNDFlMzA0NGZkMDViOTgyOTUzNWUxIGxlZ2FjeS10cnVuaworMjIyNzYgYjYyYzgwZDU4ZDFlYzNiZTVkMDc3NzdiNDVlM2U4NmFlZjc3YTg5NCBsZWdhY3ktdHJ1bmsKKzIyMjc3IDM5YTczYzY3NzNmMTJlZDk5YmJiMGRiNmU5MThjODE5ZjdiNzBlN2IgbGVnYWN5LXRydW5rCisyMjI3OCA3NjQ5MjNkOTg1YTc2ODE0ZTRhN2M5MmJlOTRkN2ZjZDNlM2Q0ZmYzIGxlZ2FjeS10cnVuaworMjIyNzkgMzEwYTkxNzBhYWQ0NzZkYWUxMmQ2YzQ5OGYwM2RlNWVhNDZkNDM0ZSBsZWdhY3ktdHJ1bmsKKzIyMjgwIGVmZGRjZjcxOWZmMmVmYzcyYTI1ZmQ3MTRkN2Q1MzE4YzFhZjkwNzQgbGVnYWN5LXRydW5rCisyMjI4MSA5NGNhOGViYTdlNGYwOTdiYTE2MjBkMjQ1ZWU2ODhmMzYyZDAwNzQ0IGxlZ2FjeS10cnVuaworMjIyODIgZTJlNTg5ZmVhZDMwZjFhZDhmZTc0YzIxN2QwMzViZDc5NmRjNjA4NSBsZWdhY3ktdHJ1bmsKKzIyMjgzIGY3NTEyNWVhZDBhMjNiOTYzNDgwNmFhYzFlODZiYzViNjBjOTA1YzAgbGVnYWN5LXRydW5rCisyMjI4NCBjM2U4ZjQ3ZmU3Yzg0ZGY1NWM2YzczMzI3MzM1ZTA4NWNkMzQ0NmMwIGxlZ2FjeS10cnVuaworMjIyODUgMGE5Y2U4MWRlMzk5OTE2YTcxY2FjYzRiOTljMzM2ZDBhZTVhNWZjNSBsZWdhY3ktdHJ1bmsKKzIyMjg2IGNiOGZkY2U5ZTY1YTZkMjljOTk5YTU2YjNlMThlYjhkM2IxZDNiZWMgbGVnYWN5LXRydW5rCisyMjI4NyAyN2I0ZGJkNDI4ZmU3ZDViMDA2NmU5YmNjZjhlN2ZjMTk1ZWMzMjBiIGxlZ2FjeS10cnVuaworMjIyODggMzZjYTM3NmU1ODY0NjVlZGUwODhmODc2MTE1Y2QwNDFjZGExZGFjYyBsZWdhY3ktdHJ1bmsKKzIyMjg5IDg4ZDEyNGM3NDc2NjA2ZjZkMmMzMjIwZmJjNTE4MGVhY2M2OTM5OWYgbGVnYWN5LXRydW5rCisyMjI5MCA1YzI3ZjBlNGY1MGY3MzZlZjg1ZTYxNjdhN2U3MWMwMDllZTRiMTRjIGxlZ2FjeS10cnVuaworMjIyOTEgOWY3ODUwNzNlNDhiZGYzYzQ5ZGY0M2EyYmNkYTc0NmEwMzRlZWE1MCBsZWdhY3ktdHJ1bmsKKzIyMjkyIDZlOTU4ZDVlOTg4YmQwNWMzNDZjNzM1MmQ1MzA3ZDkzOGQwMDhhZTkgbGVnYWN5LXRydW5rCisyMjI5MyBmM2UyNzhiYzQzOWUyNzA4YTFhZDA3NDIyYzljMjBjNjAyZTRlOWYwIGxlZ2FjeS10cnVuaworMjIyOTQgOTZlYmYyYjg4NmY3NjgyOWI0Zjk3OWE5NzYzYTgxY2NhYmFiYzM0MiBsZWdhY3ktdHJ1bmsKKzIyMjk1IDE5NjBjZWVjMWEwMGJhNTYyMzkxNGEwYWY0MzBjZTIzYzBmODg2ZDYgbGVnYWN5LXRydW5rCisyMjI5NiBjNGIzMWJlN2UwODBiOTViYzk2ZWUxYjE5YTlhMGVkODU0OGU0NzRkIGxlZ2FjeS10cnVuaworMjIyOTcgZTQxMWJmYjlkYjU3NjRhYmI0NWUzNzVlYTgzNTc3NGZiNDMyZGVlZiBsZWdhY3ktdHJ1bmsKKzIyMjk4IDZmYWVkNjE1YjA1OGRmYzAyYTI5YTY1YjMwYmUxYWQ0ZWRiOGQ3MzYgbGVnYWN5LXRydW5rCisyMjI5OSBlNzlmZDM5MzRmNjEwMjdmZjA0NDkzYWVhOWQ1ZDc1YjhmYTZhYmNhIGxlZ2FjeS10cnVuaworMjIzMDAgOTdkZTg2OGFkMGY0MDI4NDNjNTZjMTE1Njc4OWZiMWYwNmU0ZDM5NCBsZWdhY3ktdHJ1bmsKKzIyMzAxIDhlYmY3MWUxZWQyOThlYTkyMWI2ODIxY2FiNjVlOTgyYzI2Yzk4MzIgbGVnYWN5LXRydW5rCisyMjMwMiAxMWE5NzY3ZTVkOGE1M2YyNWU0YzE1NTdiYzhhMzE3NzY4ZjBiMzI1IGxlZ2FjeS10cnVuaworMjIzMDMgNDVjY2YzYjg4OWI1MDM2OGRkMDE1ZmE5MGFhYzc3NzkwM2IyMGQ0OSBsZWdhY3ktdHJ1bmsKKzIyMzA0IDllNmY3ODA0ZWYxNDVkZDhjMzc1NjNmNTdiMzNhNjI4MTQ3OWMyNjYgbGVnYWN5LXRydW5rCisyMjMwNSBjOTVmMGExMmI1MWE1OWQwNmE3NTFiZjc2MDlkMGEwN2UwZjc2YzQxIGxlZ2FjeS10cnVuaworMjIzMDYgZGU1ZDdhOTQyOGVmOTBjYjdmMzk0YWE1MTY2NTMxYjFiMzQ4ZTE4ZiBsZWdhY3ktdHJ1bmsKKzIyMzA3IGMyMzg3NDVlMGFhZTZjMDY2Y2UyMjA4Mzk1MjI5ZmE3N2Y4MjdjNjkgbGVnYWN5LXRydW5rCisyMjMwOCA2MzUwYmJhYTYzMmE3NTVkODM5YzNkNjZjYTBkODQ0ZmYxMDVkZjllIGxlZ2FjeS10cnVuaworMjIzMDkgOWVjNTYxMWNmZTljMDMzMDM0MzJiYTc1OTBjOWExM2QxZmZkMmUwNSBsZWdhY3ktdHJ1bmsKKzIyMzEwIDM0MjBjOWU2YWYxMTI5ZTViYTY0NTgwZjdjZDcxOWIxNjQ2NGEwOWEgbGVnYWN5LXRydW5rCisyMjMxMSA4NzVhYzhlOTM1NDI0YmQ2YjAzNTMyODQxNGIxNzJkY2JiZjg4MWE4IGxlZ2FjeS10cnVuaworMjIzMTIgZWVhOGRmYmJlZTg2MDI5MGY3ODMxZmI5ZTJhN2U3ZTZiNDA3Njg0MCBsZWdhY3ktdHJ1bmsKKzIyMzEzIDEwZWMzOTY4NDI4ZGM4M2M4NWMyMTFkZjYwMDNhZGM4NGE4MjgxYzYgbGVnYWN5LXRydW5rCisyMjMxNCAxMzFhMDFiNmY2YzcxNGU1OTE4YmVlZTVkNTBhODhjMDZkNzI2ODY0IGxlZ2FjeS10cnVuaworMjIzMTUgYjc5ODRjOWJiZjJjZGUwMzhiNDNhMDA2YTVjNTcwYmMwYWE3NTdhYSBsZWdhY3ktdHJ1bmsKKzIyMzE2IDM3M2NjNTk0MTU5MDBiNDRiNTliZTI3MzZjYTA3NDUzZjBjZTM0MWIgbGVnYWN5LXRydW5rCisyMjMxNyAwMjAxYmI1ZTNiODM2YjM3YjZmYTVjYzRiN2NmY2NjZmFiY2EyOGRmIGxlZ2FjeS10cnVuaworMjIzMTggNmJhNDQxNTA3MjIwNGE2MWJjMjdiMThlMjljY2ViNzAwYjk0NGNiOSBsZWdhY3ktdHJ1bmsKKzIyMzE5IGI1NTQ3OGJkOTE2NWM0ZmUzOWY0MjY2MmY3Zjg0MjhlYTE5ZWE0OGMgbGVnYWN5LXRydW5rCisyMjMyMCBiMzU1Mzc2ZDA3MzEyNzhhZWM1ZmFkMWU5Mzk5MmJhODc4OTdkOTMyIGxlZ2FjeS10cnVuaworMjIzMjEgNzgyNmNjMzdhMjM0YjhiMTBiZmE1ZTVhZDg1OTc4ZjYzYzM5OTE2YSBsZWdhY3ktdHJ1bmsKKzIyMzIyIDE3NTI1YjZjNTMyYzU5MjRlNjFmODJjMWMzNzE0YzU5NzFiZTk3OGEgbGVnYWN5LXRydW5rCisyMjMyMyAxM2QwZjM0YjZhMTYwOTk5ZmVjMTFiZjc1MTlmODk2NDAwNzc3MDQyIGxlZ2FjeS10cnVuaworMjIzMjQgOGNiZjk4NGM5YzEzZjQ3NWE2YzA4ZjBhNzk2NGY4MDRjNTg5NDViZiBsZWdhY3ktdHJ1bmsKKzIyMzI1IDkxMjk5NDE4YjcyZGM5YThiZmNiMmU2MTI2MTJiMmU3MDUxNTI5OWMgbGVnYWN5LXRydW5rCisyMjMyNiA2MDBhOWEyYjdhMTgzMTMwZjBiNjRmZGUyYzBmMTJlY2NhYmU4ZDZjIGxlZ2FjeS10cnVuaworMjIzMjcgOTU1MTVjNmI2OTRhYjVjZmFkZGM2NWU0ZTUzMjI4N2MyODAwZGQ1OCByZWxlYXNlMjEtbWFpbnQKKzIyMzI4IDc3ZTQwNWYzYTk0MmE5MTdmZjFlNDU4YzYxMDczYWIxZjhlOTgxZjkgbGVnYWN5LXRydW5rCisyMjMyOSA2NzI5YmYzMGQzYWU1YjE4ZGY2NTY1MjZlNTE0MDM0ZTgyNDRhN2ZmIGxlZ2FjeS10cnVuaworMjIzMzAgZTA4NDdiYTFkNmY0ZWIwNmEzZTg2ODE0NzRmNGFhODFkOGM0MzQ4ZiBsZWdhY3ktdHJ1bmsKKzIyMzMxIGFmNDgyMDU1ZDVjZTQ5MGEwZGNjYmRmNmJjZDUzMTAwYzY2MGU0NzMgbGVnYWN5LXRydW5rCisyMjMzMiBmOGI1MWM4Y2EwODI2MzE4YzZmMjg3YTAzYWVlYmFlNTg0ZGM5Nzg5IGxlZ2FjeS10cnVuaworMjIzMzMgNjdiZTNhNjhmZGU0OTI0MTRiYTIyMzcyZWY0MzM1MDhlYTkzOTQ1ZiBsZWdhY3ktdHJ1bmsKKzIyMzM0IDc4NzUyZWFlMTMyZTFiMmNhOWQxNzMxYWFmOWM3NWUzMjAxZjFhMGMgbGVnYWN5LXRydW5rCisyMjMzNSA0OTAxYTkzNTQ5MGRkODZiYjQwNzJlYWZkMTQ5NjFhNTYxNzE2NzZmIGxlZ2FjeS10cnVuaworMjIzMzYgYzM5NTlmNmU0MDQ0NzhiZDU2MzM5YTNlMTZjMDMxYTYyYTAyMTZmZCBsZWdhY3ktdHJ1bmsKKzIyMzM3IDk1N2RkNjQ2YjViNzQzNGZkODlhMzA2MTc0MDc3YjMxMmI2NTIyYmQgbGVnYWN5LXRydW5rCisyMjMzOCA2NzY5OGQ2ODkyMDMyMGZhOGUyMWFlZTNlZmVmYjAxNGE2YjgyYTNmIGxlZ2FjeS10cnVuaworMjIzMzkgNDBhMTdkOTUwMGE4YjZlZTdmMjk0ZjYzYjI0NmNkMzJiYWE3YzUyOCBsZWdhY3ktdHJ1bmsKKzIyMzQwIDk4YmJhOTgzYmZkMzdjZmY5OTA5MmRiNzAyNDlmNDg5NGE1YzNiYTYgbGVnYWN5LXRydW5rCisyMjM0MSBkOTgxMjE5MzBlNzA2MWY0Y2JmNzI1MmYwN2Y3YzQwYWQ1YTQ3MjhkIGxlZ2FjeS10cnVuaworMjIzNDIgM2Y4YTU2ZjUyY2Q2MWJiYTU1Yzk4MGViZDk0YzVlOTE0NzliYjAzMCBsZWdhY3ktdHJ1bmsKKzIyMzQzIDY0NjNjZDlkYjJmY2VlY2Y1OGMyZTY4ZDQzOTU5MzIwOGQ1ZGUwMTUgbGVnYWN5LXRydW5rCisyMjM0NCBmYjEyZWE5MjkwYjJkMjE3MjkxNmFhMzVjMzJhNzMxYzFmOTAyZTA1IGxlZ2FjeS10cnVuaworMjIzNDUgODE1ZTc4MTI1MzU3YWY3OThkNTgyODU1NWU1MTkwZTU2ZTIyMjUwYyBsZWdhY3ktdHJ1bmsKKzIyMzQ2IDRhOGFiNjc3NzNhOWM2YzUzYTUzMDVjZGQ2MThiNzA2YjUwZTYzYjggbGVnYWN5LXRydW5rCisyMjM0NyA4YzM3OGY5MDg2Y2Q3M2I1NGJmYmIyMWJiZGUwNjY4MDJjMDNjZDNjIGxlZ2FjeS10cnVuaworMjIzNDggZTAwMWE5Y2RlNmJhZjZjOGFjZGI2ZTVhMmRlOTM3ZGVkOWQ4YmY2NSBsZWdhY3ktdHJ1bmsKKzIyMzQ5IDJkNjdkMjM4ZDRlOTE4YmFiZWMxYjM0YTI2MGVjMTE1YWMyZDNkMzUgbGVnYWN5LXRydW5rCisyMjM1MCA4NTI5MmQ5NTllMWI4NzdlOTU3ODM5ZWI1MTY1ZmVjMzNiNzNkZDBhIGxlZ2FjeS10cnVuaworMjIzNTEgMDhjZmQ4ZTk5ODA2NjI4NDE5OTIzY2JkYmJlMGQ4NzkzZGEwMTM0YSBsZWdhY3ktdHJ1bmsKKzIyMzUyIGYwZDUyYThmZGU1ZmU4ZDk5Mzg5ZDE1YjFmNTFlNTViYjQ1YTJmMWYgbGVnYWN5LXRydW5rCisyMjM1MyBlZGY4ZDJkMWE5MGI2OTg5M2Q1YWU2YjU4ZTA0M2Y4YmFhOGMzOWRlIGxlZ2FjeS10cnVuaworMjIzNTQgMmYzYjE4MzA5Y2NlNjc4YzQ2ZmNkZWNiNjY4NDU0YzU2NGYwMmIxMyBsZWdhY3ktdHJ1bmsKKzIyMzU1IDgwOWFlYzY0YTc4ZWJhMmY4MTAyOWMyYWI0ZTkyOWE3OGFjYjFkODAgbGVnYWN5LXRydW5rCisyMjM1NiA0ODFiODFkMzAwZGY4MmU5NGU5ODBmNDViYzExMzk2ZGZjNTU4YzliIGxlZ2FjeS10cnVuaworMjIzNTcgM2YzNGY3MjRmMDE0ODliY2JkNjE5M2U4OGFkMDY2NWEwM2NkYWY4MyBsZWdhY3ktdHJ1bmsKKzIyMzU4IGNkNDQyNTQzNjBiNmVhOTRjN2Y0ZDE3ZGMyMjI2ZWNlZjFiZjVlNTEgbGVnYWN5LXRydW5rCisyMjM1OSAxZTZmNGJiNjUwNjlkMjNlMjRjNjAwM2JkNjBhZjZiOTZiNmI5MWUxIGxlZ2FjeS10cnVuaworMjIzNjAgNjRkNGFkNzNhODg3NWUwZTgxODIxMzBkNDBhZDA5Y2NiZTc5NmJjZiBsZWdhY3ktdHJ1bmsKKzIyMzYxIDdhMWVmNjc1ZDhhY2YwNDRhZDAxY2E0MDhiYzc3YmFhMDVjZTQwOTMgbGVnYWN5LXRydW5rCisyMjM2MiAyZjQxYzk1MmJlYjA1OGVkMzhmNjkzM2ZlYmY1YTAxM2QwNDcwYTQyIGxlZ2FjeS10cnVuaworMjIzNjMgNzc2NjI4ZWVhOGY3MzY3NDYwZmFkMDlkNTNhZGQ0YzY5NWY3ODU1NiBsZWdhY3ktdHJ1bmsKKzIyMzY0IGI3NjU4ZTY2NWQyZWM3YTM5ODc0ZDhmZmM3N2JhMTNhMTg5MWYwYTMgbGVnYWN5LXRydW5rCisyMjM2NSA5N2EzZDNkNzAyOWY4ZmIyNmIyNDQ1MGRlZGM1NDdmYWUxOWU0NTcyIGxlZ2FjeS10cnVuaworMjIzNjYgMzUzNzA2MmIzZGMxYmUwODFkNGI4ZTQ2ODI3MTRlNGQ1YzFmYThmZiBsZWdhY3ktdHJ1bmsKKzIyMzY3IDlkMDI0YWUwNTgzN2M5NGJlODY1M2VjZDEyM2U4NjljNjRiOGE1NGMgbGVnYWN5LXRydW5rCisyMjM2OCBkNjRlMDU5Y2QxOTlkYTM4ZWExMmY2NDM3YTRjMjBkY2E4YjE1MWRkIGxlZ2FjeS10cnVuaworMjIzNjkgYjA2ZDlkYmRhZjhmYmU3NWJiMzEzMThjYjUzNDBhZjk5MDQxYmFjOCBsZWdhY3ktdHJ1bmsKKzIyMzcwIGIxNjBmYTYzZjQwYzU3YTQ0MTM2ODQwNGY1MWI1ZWQxYjAzYjlhMTEgbGVnYWN5LXRydW5rCisyMjM3MSA1ZDZiMmMxN2VhMmNkN2E4NzE4MTIwMDY4ZjM2NWM2OTljZGM4NTEzIGxlZ2FjeS10cnVuaworMjIzNzIgMDM5ZTNkMjZlYTM1Y2E2MTMzOGFhMjUxMDk2OWRlODYzOWZlNjcwOSBsZWdhY3ktdHJ1bmsKKzIyMzczIDY3ZjM1NGQ0MzQ3ZDU4MjI4MjM2YjZhYThkZjVmNWViYWMwODhlOTggbGVnYWN5LXRydW5rCisyMjM3NCAzMDg2MGJlM2FlN2JlOWY0ZGRmNWYxN2M2MGI3ZGFlNTJiNDc1NGIxIGxlZ2FjeS10cnVuaworMjIzNzUgODAyYzRmOTQwYTRlYTMxYTA5OTM2MWIzYTZjMDAzYzI0OWExYTIzZSBsZWdhY3ktdHJ1bmsKKzIyMzc2IDk2NjEwOTNkM2UyYWZmYzNmNzY5MzAzNzBmZWM1MjkxZGE3Nzk1NTAgbGVnYWN5LXRydW5rCisyMjM3NyA4MWY0Y2RmODY4NTU3MjI2MmIyYjk4MWU5ZDVjNTU1OWFkOTc3ZWZjIGxlZ2FjeS10cnVuaworMjIzNzggMmY2NTkzYmY1OGFmYmY5M2ZkYTQ2ZDZiNTA0NWEwNjc0MGQ3ODM2NCBsZWdhY3ktdHJ1bmsKKzIyMzc5IGNiMzQ2YmFlZGFkNmM0YTQxOGJjYmNkODA2MjE0MGE1YjFhNWU5NGUgbGVnYWN5LXRydW5rCisyMjM4MCBmMGRiMzQ1NjIxYmE3ZWZjYWYyZDAyNzUzYzExNDRiODI5NWI3YjY4IGxlZ2FjeS10cnVuaworMjIzODEgNzA0YWQ4MzRkZTI3Njk2YmU1YTUwZTkxZWRkYmU2ODczMDViOWI1NCByZWxlYXNlMjEtbWFpbnQKKzIyMzgyIGIwMDAyZDdjMjJiMWYwY2RjYTk2ZWE1NTExODI1ZmIwMDNkYmQxMjIgbGVnYWN5LXRydW5rCisyMjM4MyBmZmY2YzY2Mjg1OWQ5YzBhMDliODgxYTdkYmMwM2IxNjE1ZWIyOTRmIGxlZ2FjeS10cnVuaworMjIzODQgNTBmODhlZTcxZDQ1YTNkN2YyODA3MjA2OWJiNDE4ZDM3MzZkYTI4ZSBsZWdhY3ktdHJ1bmsKKzIyMzg1IGNhMTJlMWUzMzNlYTEwNDAzNjAyODkxMzllZTM3Yjg4NWM0OGQyNDYgbGVnYWN5LXRydW5rCisyMjM4NiA2MzcwYTBmOTg4ZjBkM2Y2NWEyMTc5YzlhZjY5ZjZlOTE2YWJjMjM5IGxlZ2FjeS10cnVuaworMjIzODcgZmRlM2IwZjcyZTM4OTAyZWVjZTU3OGNkOGE0MzU1ZTEzZTQ3NTYwZCBsZWdhY3ktdHJ1bmsKKzIyMzg4IDFkNDYyYjczNzgxMGRjODIwZDk5N2YyZTgxMzQ2M2IxNWViYmM1NTIgbGVnYWN5LXRydW5rCisyMjM4OSBmYzM5YzIyYjVhN2FkMTViNDc0OGVjNWUxMDA3OGVkYTRkOTZjYzdjIGxlZ2FjeS10cnVuaworMjIzOTAgYjE0OTUxY2QyNTY3M2E2MDE2NmM3MGU4YTQ5MTQ3NTZlMWExNmMxZCBsZWdhY3ktdHJ1bmsKKzIyMzkyIDI5NjdjYTk2ZDA3ZWU3ZWUwOTk3YmI2ODA4MzkxNTU3NDZjNWM5ZjQgbGVnYWN5LXRydW5rCisyMjM5MyA3OGQwMGY3MDIzYTIxNmYxYjc3NTgyMTM2OGJmZTFmMGExZjZkYWEwIGxlZ2FjeS10cnVuaworMjIzOTQgY2RkMGM3YTQ1NTc1YTI5MTFmOTViOTBjY2YzOWI0ZmZmOWRlYzljMiBsZWdhY3ktdHJ1bmsKKzIyMzk1IDMwZjhiNjU0YzJlNWJmZjNjZGFmMTJhOWIxODEwMWNkNWRmNWMwMTYgbGVnYWN5LXRydW5rCisyMjM5NiBiY2ZlMzBjZDFmMGRlMTZjOWVkOTU4MmM0Yzg3MDdkYjg0ZTg4NGVmIGxlZ2FjeS10cnVuaworMjIzOTcgMTE1ZTQwOTlmM2Q5NzlmYjBkZWI0NGM5YjZiM2IzOTZmZmYyMTBkNyBsZWdhY3ktdHJ1bmsKKzIyMzk4IGJlZTc1NTcyMTNiMjI5OTMyOTY0NjNkODg5MDMyMzllMmM5NmM3ZjkgbGVnYWN5LXRydW5rCisyMjM5OSBhOTdjODA2NGM5ZDgzYTQxNThhN2FlNjkyZWQ5ODhiMWYzNzEzNTNiIGxlZ2FjeS10cnVuaworMjI0MDAgNjgwMjMyZmI2MWYzMDIwN2YxZGM3ZmZkMjc0ZjhkNDY5YWE1OWZjZiBsZWdhY3ktdHJ1bmsKKzIyNDAxIDA5NWM4OWE4MjVhOTBhMWJmOTdkODgxMTViMDU1NjYwODEzYjdhYzUgbGVnYWN5LXRydW5rCisyMjQwMiA3ZTlmNWM1OWU5ZjI3ZjAyNjRkYTI2NTcwNDc0ZjlhZDM1YWY0ZWVlIGxlZ2FjeS10cnVuaworMjI0MDMgN2U0NDg3M2RhZjdiZGMzN2JhMWVmYzkzYjFmMjIzMTg5ZGJkYzFkNyBsZWdhY3ktdHJ1bmsKKzIyNDA0IDMwMWJjYjAxYjUwMzQ1ZjFhZDYwMzc0OWRmODZiNzhhZDk0ZmNhMmUgbGVnYWN5LXRydW5rCisyMjQwNSAwMWE5Yjc4MDcxNjBiMTgxMDhhMzg5NDJiN2YzMTIwM2ZiNjhmN2NjIGxlZ2FjeS10cnVuaworMjI0MDYgM2MxYzk5NDhmZjY1NTdjZWRjMGNjNDJmNGNiMjg4YjVkYzkwNmJmNiBsZWdhY3ktdHJ1bmsKKzIyNDA3IDM4MzdkY2NkMTFjYWQzNTI3NTAwZGExMjRhZmYzODBhODQ3NTdjODUgbGVnYWN5LXRydW5rCisyMjQwOCA1MGZiNDY4M2E0NjE4NjM3OWZkNTdiMzE4ZGNjZTc0MzNkMzEwZWZiIGxlZ2FjeS10cnVuaworMjI0MDkgMmM0YzJjYWFiY2ZjZDkzYjM0YmYyMzljZDJlYjczZmRlMzQxOGU4ZiBsZWdhY3ktdHJ1bmsKKzIyNDEwIDQ3YTQ1ZGEwM2IwOWFjODEyNWZjNTA3NWNlMjc5OTUzMDkyNzdhNDIgbGVnYWN5LXRydW5rCisyMjQxMSBjZDEzMTBlODdmZTIxNTVmMzQzYzVhNTc4OTM4YmFhODg1ZjY3OGNmIGxlZ2FjeS10cnVuaworMjI0MTIgNjdkY2YwNGZhNzU0MTg1NGM1YWFhZTgxOGY5NmRmNjY2Nzc3MDhmYyBsZWdhY3ktdHJ1bmsKKzIyNDEzIGFjYzBmZmFiMDc3MWM5MDM3NDM4ZGZiZTk1NDc5ODNkNWQwNzQ1ODkgbGVnYWN5LXRydW5rCisyMjQxNCBkZTFjMmQ0ZDcyYmExNzdhMmE4ZmUzYTA2ZGZmNDkzMjEzNGRhMDQzIGxlZ2FjeS10cnVuaworMjI0MTUgZmIxNTNlMzA2MTUyODg2ZTM0MGQ1YmQxZGFhNDc1ZTQ0NWVjMzcwOSBsZWdhY3ktdHJ1bmsKKzIyNDE2IDdiNTNmYjNiYTAxMTkyYmVhMDQ5MzExMzU2YTQwY2RmYTAwNmI3NGIgbGVnYWN5LXRydW5rCisyMjQxNyA4NjkxNDg0YzViZWY1MzNkZGEwNGNhZGJmZDU1NTIyZDIxODFmM2VkIGxlZ2FjeS10cnVuaworMjI0MTggYjQ4NGIyMDdlOTY0MTllODBjNWIzYzQ2MmRiMTY0OTUzMDU0MzZjMCBsZWdhY3ktdHJ1bmsKKzIyNDE5IDRkZDM4ZDkzMDE1NzNjOTBjY2Q5NGU4ODUyZmIyZjhkMDNjNTYzZjMgbGVnYWN5LXRydW5rCisyMjQyMCBjOWE0ZTZkMWJjMzBiMTk4ZWJmZmFmMTEwNDdiMjcyNGUzYzg1M2U0IGxlZ2FjeS10cnVuaworMjI0MjEgYzBhMTZiNGM5ZWRiN2UxYTA5YmI2YTMzMWE1NmRjYjZhOGVlNzE5OSBsZWdhY3ktdHJ1bmsKKzIyNDIyIGQzN2UxNzY1ODA0OGRhYjhlZDNlOTgwZTA4YzBiOGI3OTA2ZDAyNWUgbGVnYWN5LXRydW5rCisyMjQyMyBmNTEzYzZjN2QxNjcwYmNjZWQ1OTYzYTEyNWJjOGExNzMwYzExNTc5IGxlZ2FjeS10cnVuaworMjI0MjQgZThiZTQwYzc1YTNmNzE3YzdlNTVjNGM4MWRjZmE4Y2NlMzkyMDBiOSBsZWdhY3ktdHJ1bmsKKzIyNDI1IDc3NjQwYzM4ODQ3YmEyNTdiMzlhOThiYzAxNWM4YjVhMWEyOWNjMzAgbGVnYWN5LXRydW5rCisyMjQyNiBkMTZhM2E1YzhhODZiMTMwYjI5ZDJjYTEwYTJlZGYxZDdmY2I1N2E4IGxlZ2FjeS10cnVuaworMjI0MjcgMzczYjZhYmFkYzUwMGZjYzhjZmNjNjYxMzZmNjI0ZmIxMTg4MmM3ZSBsZWdhY3ktdHJ1bmsKKzIyNDI4IDI0MmFjNDI3ZjBkMGYwZDNkNmY5MTdiYmUwOTUzZmQ4MWEzYTc3NTMgbGVnYWN5LXRydW5rCisyMjQyOSAzYzdhZDUwMzdhYjFiYzVhMjIzYTk0NmM5ZDM5MTExZTI1MjRiMzhhIGxlZ2FjeS10cnVuaworMjI0MzAgNDE3ODU3OTNhOGEzNzVlMGJlMWZmOGFmYzAwZjQzOWZiZDlmODNjYSBsZWdhY3ktdHJ1bmsKKzIyNDMxIGNkMWMyNzg3ZWJiNGE5MzAxOTRiMmE0YzNkYWM4YTYwMDIzNzM3NTggbGVnYWN5LXRydW5rCisyMjQzMiA2ZTQ2YzdjZDM3NDkwZTE0MTQ0OTBkMzBhNDIwYWQ4ODU3MDI1ZTU1IGxlZ2FjeS10cnVuaworMjI0MzMgNzFmMDVmZDMwZTczZDVjYjc4Mjc1NDM2NWNjNGVlOTQ2MzRkZDc4YSBsZWdhY3ktdHJ1bmsKKzIyNDM0IDI1NTkyNjY5ODY5MmQ0NmM5MWExMGZhNDBkNzBkMWMwNThmNWE1YzcgbGVnYWN5LXRydW5rCisyMjQzNSA4NGI2MDIxMzE1OWIwMjIzNjgwOTI1YWQzYTkzNjkxMWRmZjA4ZmU2IGxlZ2FjeS10cnVuaworMjI0MzYgMGY2MTJkNjg3ZWJjZDc3NDc0ZWQ5MTMyMWI3OWJjMTcxYmEwMWU1ZCBsZWdhY3ktdHJ1bmsKKzIyNDM3IDUzZjM5OTU5ODc5OTllYzNmNjEyNmE0NTljN2IyMjI2ZDJlOGMxNDYgbGVnYWN5LXRydW5rCisyMjQzOCBhY2IxOGM5ZmIyMGY2YTUxOTA4YWIxZGUzY2NkMTU2MTE1YjUyMjMxIGxlZ2FjeS10cnVuaworMjI0MzkgZTI5YmE4ZjFlN2Y4MGEyZTYyMjVlYzUyODMzNDdmNTM0MDM1OWE4YSBsZWdhY3ktdHJ1bmsKKzIyNDQwIDY1ODg1ZWE3NmMzNzcxNjQxOGRkMTJkNmNhZGRlOTBlMWY5NDFkYTEgbGVnYWN5LXRydW5rCisyMjQ0MSBjYjdmYjU2NWM4OWI5NGZjODMxZjQ5ZDMzYWQzZTgwMDJjYjM1N2RjIGxlZ2FjeS10cnVuaworMjI0NDIgYzMzNjNlNGQ2ZDFkNjBhZDRhZWVhMmFjYmZlNjM2MjM5NWE3YWQyZCBsZWdhY3ktdHJ1bmsKKzIyNDQzIGM2MTI5NDI4ZTA1M2NjYWQwMWJkN2U2MWNkZmJmY2Q1YzhmZmRiNDMgbGVnYWN5LXRydW5rCisyMjQ0NCAzOGI1OTA2ZmYwMzFkM2NmOTNjMTI2OGQ1ZDA5NTExMjRkMDgxYmQ4IGxlZ2FjeS10cnVuaworMjI0NDUgZTExMGNkNGZjM2M2MjUwZDE2MGRmMzYyNjUzZTc1OThkODcyNjI5NCBsZWdhY3ktdHJ1bmsKKzIyNDQ2IDViODdlZTQ0MDAwYmFhMDZiODViNDkzYjM4ZWQ5NTU3YjYyYzQ2ZGUgbGVnYWN5LXRydW5rCisyMjQ0NyBhMDhkMGU1ODYxY2NmMjU4YWIzZDQ4Zjk1NTYzNjNkM2YwOTU1ZDMxIGxlZ2FjeS10cnVuaworMjI0NDggYWM2ZDljNzQyODY0MzI1MzE2ZDhmNjhmODBkZGViODNmZTVhYzYwMCBsZWdhY3ktdHJ1bmsKKzIyNDQ5IGQzZGQwZjJmYjFmNDQxYTg2NTRmYmM3Zjk0MzFhNGVhMWQ4NDNjYjAgbGVnYWN5LXRydW5rCisyMjQ1MCBkOTljMTI0MGQwYWMzZWU5OWI0ZWM0MzZkMGY1Yzg2ZmM2NWUxNmY5IGxlZ2FjeS10cnVuaworMjI0NTEgNzg4YTE2MzUxZTE4OTQzODg2OTUyZjZmZTU4ZWY0YjUxNjg0MTQ5OCBsZWdhY3ktdHJ1bmsKKzIyNDUyIGZiZTIwNzRjNWZhNWEyMTkxNDIzZTk0ODkxYmQ1MzhiNDQyYzRlYTcgbGVnYWN5LXRydW5rCisyMjQ1MyAzYjk4Y2YxNjkyZDQxNTVjZjkyZmNkMTU5NGE1YjQzOTYzZjVlNWZjIGxlZ2FjeS10cnVuaworMjI0NTQgYmUwMjRjMjc0ZTAyY2Y5YTI3YzQzZmY0ODVhODY4NmFmYzg0Y2ZhYyBsZWdhY3ktdHJ1bmsKKzIyNDU1IDM4OGJjZGVlNTEyOWEzZGZhZGM1ZDA1NjAxNTQ2OTU5NDI4ZmFkNzcgbGVnYWN5LXRydW5rCisyMjQ1NiA5ZjgwYzcwYTdhNTFlYmY3MDEyMzI2NThmYmVkOTU1M2I5YTZmMWJmIGxlZ2FjeS10cnVuaworMjI0NTcgMDZmOTAyNzE0MWZmOWFiOTIyODBkYjIzMzkzYWUyZjc0NDdhNDBhOSBsZWdhY3ktdHJ1bmsKKzIyNDU4IDJmZjU3MDJhZGI1NmRhYjg0MjljMDMwYzY0MDNmYjM3MjVkOGIzZDkgbGVnYWN5LXRydW5rCisyMjQ1OSAzOTU2YjIyZDVlMjkzNGY2MmViZDcxZTM0ZDQ0MWE3NTcwMmZmNWQ4IGxlZ2FjeS10cnVuaworMjI0NjAgZmJmMWFlNzY5MzA2NjAxNWNmZmQ1MzliYjk2OWI0OGNmZjZmZGVlMCBsZWdhY3ktdHJ1bmsKKzIyNDYxIDk2OGQxNjk1MDFmMjc2NmFiZDBiMmU1MTM2YWEyY2NkYTdjYzFiNjUgbGVnYWN5LXRydW5rCisyMjQ2MiA2NjE3MDMwYzUxZTNhZDg1MDMwYzdkZTFkNTMyNzU0NGM1ZGY2N2NlIGxlZ2FjeS10cnVuaworMjI0NjMgYWYxYzY4OTMyNGY1MzE2YWY2NWUxNTA1N2FhYzVkZmVjZTY1NmFkMSBsZWdhY3ktdHJ1bmsKKzIyNDY0IGZlZGJhODY4NjVlMjk0Yzk0YjBmYzljZTVjODY0MGUwZDRhYTE4NTYgbGVnYWN5LXRydW5rCisyMjQ2NSAxYzM5Yjk2ZDI5YzMyNWZhZDExNTI5NTc4ZDUwY2RhZDkyMTNlMmRhIGxlZ2FjeS10cnVuaworMjI0NjYgMTRmNzgyYmE0MGY5MTJmNzU4OGM2MDhlNjNiZDkyNWNlZTc5NTAxMCBsZWdhY3ktdHJ1bmsKKzIyNDY3IDA0NjQzYTE4NDU0NmExMTY3ZjlmYmZjZmU5NDZkZDIwMGU4ZGMyMmMgbGVnYWN5LXRydW5rCisyMjQ2OCA0OWZkNzI0MzUxZjRhODU0YjdiMjJiMmYyNWUyNWE4YzE1Y2NlMjE0IGxlZ2FjeS10cnVuaworMjI0NjkgY2E3ZGJhY2JiZTE4NjZiNmRhNzRkNzA3YmQ1OTBjN2I3YjUxMzU1MiBsZWdhY3ktdHJ1bmsKKzIyNDcwIGMzYzg3Y2U0YWZkY2E2YjM3OGJlYjNkMWJmYzQwODQ4ZGYwMGU3OGYgbGVnYWN5LXRydW5rCisyMjQ3MSA3ODYxZWU5NTFhOTFjNGU5ZjVmZjcxNDAyYzI0YzJlZTRkY2QyNDQ2IGxlZ2FjeS10cnVuaworMjI0NzIgZWI1ZTJiNjgzNTRmNWRlYmYyM2QzMDIwZjhhZWMyNDM0ZTcwZGQ5MiBsZWdhY3ktdHJ1bmsKKzIyNDczIGJkOGNiNjY1YjVlMTA4YjJmOTRjZjA0ZDQ4YzVlZjZmMjczNDMwNGMgbGVnYWN5LXRydW5rCisyMjQ3NCBlOWE5N2IwMjg4OWIwODBmODNjOWRmNDkzOWU3NGNlOTljODFkYjRkIGxlZ2FjeS10cnVuaworMjI0NzUgYTlmZjBmNmZmMjYwZWE0MTM2MTE5OWFiOGQ2OTJiNjRlYzgzNGI3NiBsZWdhY3ktdHJ1bmsKKzIyNDc2IGRkODJjZDQ4NmQ4YTFkMTlhMjQ3OGNmMDFjMGRjNzBhODU3ZjE2OWMgbGVnYWN5LXRydW5rCisyMjQ3NyAzNWM2NWQ5YWE4NmEyNmY4NzliYmVmNjBmOGQ3YzlkOTE4NmZjMTMxIGxlZ2FjeS10cnVuaworMjI0NzggYjY1MzEyMjM4YzBiNjY0YWFkMzJkZWM4ZWFmODdlZmIyNzUyYTJlOSBsZWdhY3ktdHJ1bmsKKzIyNDc5IDFjZTVhOTBmYjE5MmI4NDY5ODJjZmFmMjc0NTgyMDlhYjg4Y2VhZDEgbGVnYWN5LXRydW5rCisyMjQ4MCBkODk5YmZiZmZiYmExNzk0NzU3Y2YwMTc2ZjNkNTUyM2Y2MzEzODdkIGxlZ2FjeS10cnVuaworMjI0ODEgYzM0YmJmMTczODVlNGQ0ZDBjODVjNDY0Mzc2M2FjYzM0ZDI4ZjdmYSBsZWdhY3ktdHJ1bmsKKzIyNDgyIDU1MDE5NThlZGMzNjFkMTRjODFlMGRkNzIwMzI4ZTViNGVkNjZkZjYgbGVnYWN5LXRydW5rCisyMjQ4MyA0YzhkNzg2OGE4ZTc2MTAwMzUzYzRhNjczMGQ1Y2Q1MjAzYzUzZjEyIGxlZ2FjeS10cnVuaworMjI0ODQgOWZiNDljZTI0MGQxOWViZTRlY2Q5MWNhMGVlMGQ2MTJlMmM2YTMyYyBsZWdhY3ktdHJ1bmsKKzIyNDg1IGI5NTAyZDFhMjdhN2E1OTc4YThiYWNmNzFjYWRlZGUyZTM5ZTQ4ZWQgbGVnYWN5LXRydW5rCisyMjQ4NiAxYWZjMzExNmM2MDIzNWJhMzBkZTkyZmZkZGU0MjZmM2Q1ZGZkOGU0IGxlZ2FjeS10cnVuaworMjI0ODcgMWJhOWUzNjg0ZDM1NDgyYjczYTM3NGZmNTc0MmI1NjRjZTM2ZGRmYiBsZWdhY3ktdHJ1bmsKKzIyNDg4IGYxMGI2OGVjZWVmYzFhYWZlMjk0NWVlYjlmMzFlMzNjNTM4YTY4OWEgbGVnYWN5LXRydW5rCisyMjQ4OSBiZTg1ZjY4NmFkOTdiYmJlMjBmYzRlMDVlYmNmM2IyNmU2MDNlMGQ0IGxlZ2FjeS10cnVuaworMjI0OTAgNmY2YWNiZjc4OTM5NDNmODM0YjVjNDIzYzllMzkwODFiMjBmNzkxNyBsZWdhY3ktdHJ1bmsKKzIyNDkxIGI4NjVjZDVjMTkyNTAzNmRhZWFiM2Q4YjJhZGZjM2I2YTM1ZTUwYzYgbGVnYWN5LXRydW5rCisyMjQ5MiBhNWE5MzJjMjE1ODMwZTA5NTA1N2Q2YzI2NjU5ZWNmMjI3M2U1MWRmIGxlZ2FjeS10cnVuaworMjI0OTMgYmE4YzYyZTVmOTJkNjlkZmEzMWNiZWIwMmQ4ZmZjNWQ2YjY0YWM5MCBsZWdhY3ktdHJ1bmsKKzIyNDk0IDE0ZTYwNTFkNWYxZjA3YThiNDQwYTI3Y2MwNTNjZTgzNGFjMGE0YmMgbGVnYWN5LXRydW5rCisyMjQ5NSAzYWEwNjA2NDQ5MDMxNjZlOTFkNzVhYzdhMTI0M2FhNDFmOGU4OTQ5IGxlZ2FjeS10cnVuaworMjI0OTYgNWFkNzFmZGIyMDViMzU2N2FiMmIwYjA3NzRjY2E2YmZmMTlhMjJmOSBsZWdhY3ktdHJ1bmsKKzIyNDk3IDVjMmJmNmNkZTEyMzAzYjFjMmFjMjIzYTliMjdhMjdmMDYyYThkZDcgbGVnYWN5LXRydW5rCisyMjQ5OCBmN2EyMTMwYTI1NjM2Nzc0NGRlNzM4NDNkZGY2OTI4ZDdmOTU4NzA4IGxlZ2FjeS10cnVuaworMjI0OTkgMzc1NThlODY1ZWFkNTRjMjc5Yzk2MTU3ZGRhNTU3YjI1NmM0N2JhYSBsZWdhY3ktdHJ1bmsKKzIyNTAwIGMzZDUzZDM0YWI0NGRlYmM2OTRiMzBiMzZkZTNlYjk2ZDA1ZGQ4YzIgbGVnYWN5LXRydW5rCisyMjUwMSAxZTg3ZGIwY2EyNDgyZTFjOGU1MzEzNmM3YzY5NzIyZTg3MDQyMWJjIGxlZ2FjeS10cnVuaworMjI1MDIgMTQ1NmVjNzM1MDg3MmQ2N2E5NTJiOTUyZjBlNTk0ZDI2NzY5NWRjMiBsZWdhY3ktdHJ1bmsKKzIyNTAzIDE1N2JiYjg5NjE5OGI5OGMxZmY5YzlhMzUzMWNiNTY4MzA0NjRhNzkgbGVnYWN5LXRydW5rCisyMjUwNCAxMDY5MDkwYjEyNGVmODdmM2U1Y2QzZjM3ZTg3OTljNTc2OThmMDU1IGxlZ2FjeS10cnVuaworMjI1MDUgM2RkYjIxMDkzMmNhNmRkMWM4YzM0ZjY1MjNhZTIyZTFjNzgwMDlmMiBsZWdhY3ktdHJ1bmsKKzIyNTA2IDZjNGE4NzMwNjYzYWRlMGU4ZTM4NDdlOTg5OTVlZDAxOTkzMmExYzUgbGVnYWN5LXRydW5rCisyMjUwNyA2MzAzMDI2NjY0NjYyYjlmZDBiOTQzZTdmNWU4NzgzYzg3NjdiMTkxIGxlZ2FjeS10cnVuaworMjI1MDggODE0NDBkZDMyNmJiZTE3NTJlYWZkMTA2ODVkZTg1ZjIyOWViOTA5ZCBsZWdhY3ktdHJ1bmsKKzIyNTA5IGI5NzAxNTM4ZjgyNzZhNjk0YzVmYWI1YTdjNWY2Y2Q5ZGY1ODQyNzYgbGVnYWN5LXRydW5rCisyMjUxMCBlZDlhYmFiOTcxMDc4Y2RhZmIxMWQ4YmNlOGZiNzEyYzQ2OWFhNzJiIGxlZ2FjeS10cnVuaworMjI1MTEgY2VhOTQ1NzY0ZGIyMTlmZDk0YjY2OTliYzg2MmQ3YTI2ZTMyNDYwOCBsZWdhY3ktdHJ1bmsKKzIyNTEyIDExOTAzZWIwMDlmNjcwMjFjOWJkNjQzOWY1YTU0NjZlMWM4NmRlYWMgbGVnYWN5LXRydW5rCisyMjUxMyBmYTc4NmY4YTc1NzBhNWIzYzI2Mjg5YjAyM2U4YWFmNTJiMTgwY2FjIGxlZ2FjeS10cnVuaworMjI1MTQgYTdiYmFjNjljOGVmMjI2NjA2N2U2OTE4Y2VlYzFmZTJiZTVjMjZmNSBsZWdhY3ktdHJ1bmsKKzIyNTE1IGIwZDJkZThjZTI0ZjRjMjU3MzM0Y2JkNjZjMjY1NzI0MTE4M2RlODcgbGVnYWN5LXRydW5rCisyMjUxNiBhZjAwMThiYjhjZmMzMTllY2JiOTYxMzIzMjc3NWFhMTdhNmIyMDI2IGxlZ2FjeS10cnVuaworMjI1MTcgMGMyYjQzOTFkZjdkZDBjNGU1YWRlZmI0N2E1YjM2MDk3NjgwOTExMSBsZWdhY3ktdHJ1bmsKKzIyNTE4IDZjYjlmNTM4ZGNlNDk4N2QwZjJiZGFkMzM2ZGNmYjg5ZDMzNDYxZDkgbGVnYWN5LXRydW5rCisyMjUxOSBmYzc2MTczMTIxODI4M2Y3YjFiNmUxNzY1ODkyN2M4MDliNjYxNzVlIGxlZ2FjeS10cnVuaworMjI1MjAgYTYzYTY5MzM1NTRmOTUwZDgyZTM5MTRiZjJmYmI0OTZlNGQwMDhkMCBsZWdhY3ktdHJ1bmsKKzIyNTIxIDZmNjJmNWE2MmEyYzZiZDA2YTkxZWQ3NGFhOTM5MDkwZGRiYmYwMjIgbGVnYWN5LXRydW5rCisyMjUyMiAyZDg4ZGVhNDY0MTc3Y2E1N2MyNzJkZGVmM2M2NGExMDY4ZGJjM2UzIGxlZ2FjeS10cnVuaworMjI1MjMgMWY0ZWI4YzkyNWQ1MThlNTliY2E4MDI2YTQyNDJiYTQxZWU0NGE1NCBsZWdhY3ktdHJ1bmsKKzIyNTI0IGY3ZGMyMWNiMTY2MWRjMzc4YjIzOTM0NWQ4ZDIxYmM0NWIzODMzMTAgbGVnYWN5LXRydW5rCisyMjUyNSAzZWEyOTA5ZTA1MWZmYjY2NzcxOGQ1MTQ3NmUzYzdiODM5ODU5ZTMzIGxlZ2FjeS10cnVuaworMjI1MjYgY2JhYTU0NWM3ODhkYWE5NzkyMTA0NjA2ODE1NGYyYjdmYmI4MTg3YSBsZWdhY3ktdHJ1bmsKKzIyNTI3IGQzNzBhNThmYjdmZDhmM2RkMDU5MmZhZGE0YWQzNDYwMzNhN2U3OGQgbGVnYWN5LXRydW5rCisyMjUyOCA3OTU3YjNmNWQ0NjJkN2RkMDE1YTMwYWNmZTM1NzM0NmI2YWM5N2JiIGxlZ2FjeS10cnVuaworMjI1MjkgNDIyNDZiOGM1OGJiYTg5NjBiM2NiNzQ0MmQwNzJkODA0NTY3ZDg2MSBsZWdhY3ktdHJ1bmsKKzIyNTMwIDFmZWMwMzAxMjM0Njc4OTU0YzAzYzJkNjgzNWY3YTYyZGE2MmU5N2MgbGVnYWN5LXRydW5rCisyMjUzMSAyNjFlMjhlN2ZhMDFmYWExMjVlMzRiYjJiNDdjMGQyOWY5ZDY0MGYwIGxlZ2FjeS10cnVuaworMjI1MzIgYjUyNWU2MDJmNmMyYTQyODU5NjQ5Y2RjOTc0MThmM2YyZjZlZTI0YiBsZWdhY3ktdHJ1bmsKKzIyNTMzIGRiNDg4Y2M5ZjI1OTg4NmU2NmU3MWQ4NTFlZTYzYzM5ODI3NjBiOWYgbGVnYWN5LXRydW5rCisyMjUzNCBlZmRjZjQyZjg4NTI3MmViZGQ4YTkxYTJiZmIwNzg1NzI4ODZiOTU1IGxlZ2FjeS10cnVuaworMjI1MzUgNzNmNjg1ZGI4YzBjNzkyOTdmOGI3NWYyY2EyNDJjNjUyOWZmZGIyMiBsZWdhY3ktdHJ1bmsKKzIyNTM2IGI0MTYzOGExMWU0ZTQzOWVmZGJlZmIwMDVhYWNmNWQyOGVlMjg3YTggbGVnYWN5LXRydW5rCisyMjUzNyBmOTNjMTZjMTBhNTVjMGU5ZGRhMzczMGJkY2EzYWEwNmEyY2I4MTMxIGxlZ2FjeS10cnVuaworMjI1MzggZWE5Y2ZjMzhlMTFiZDgwZTE4N2NkOTEzMjZhZDMxMzQ5MTBhNzBmMiBsZWdhY3ktdHJ1bmsKKzIyNTM5IGJhODdjMjQ0ZmI1OWJlNjU0YjdmYmFkZWQ3MTY2N2ExYzA3OWVhMzMgbGVnYWN5LXRydW5rCisyMjU0MCAwNjEzZmE1N2FlNmQ5YzczNTRmZWY4NGI1ZTI1NjgwMDJjZjA2YWNhIGxlZ2FjeS10cnVuaworMjI1NDEgMDVjOWEzNWYyMTRmMjhiNDlmNTc1ZmVkN2NlMGQ3MzAyMzRiNjBjMSBsZWdhY3ktdHJ1bmsKKzIyNTQyIDYwMjY0ZDFlMTAwZTlkNjRlOTIxZjQ0YjkyNmVkZmZjNDQzMDQ5NTggbGVnYWN5LXRydW5rCisyMjU0MyBkNmIwODRjMjViYThiZDExNzRmMGY0MmI5ZTI5MDhlOTJlNTJiYmU3IGxlZ2FjeS10cnVuaworMjI1NDQgZWJmYjc0Y2U3ZTU2ODEzNDc3NDkyMTJiMjc1ODAwYjE4NzdjZDQ2MyBsZWdhY3ktdHJ1bmsKKzIyNTQ1IGIxMTEyYTJjMzU0ZmYzYjRkNWY0OTAzNjhhM2RkYTk0YWU0NzM4NDYgbGVnYWN5LXRydW5rCisyMjU0NiA3ODZhY2VkOTM3YzUzODliMWM1ZjkxODUxMTdjMWVmMWE5ZWY5MGFiIGxlZ2FjeS10cnVuaworMjI1NDcgNjEzMGRlZWI0Y2M2MTViNGMwMmMwZTY1MWU0YjA4ZmMzZjZlMDVlZiBsZWdhY3ktdHJ1bmsKKzIyNTQ4IDg2Y2Q1N2Y5ZGI5Yjk2ZjBlZDZjZjk1OTk2M2ZiM2QwZTEzZTI4NGQgbGVnYWN5LXRydW5rCisyMjU0OSBkNDY2ODJiZGE4MmZmNWNkODAyYTYxYWRmNDkzMjE4YjEzZGUyN2FjIGxlZ2FjeS10cnVuaworMjI1NTAgODE0NDcyMmRjMDc2NWVmOTJhM2YwN2ZlZTc2YmI5NGNiNjBjMjY3ZCBsZWdhY3ktdHJ1bmsKKzIyNTUxIDcyNTdlODdlMDcyMDE2YTM3ODAwZTE2Y2M3Njk3NjE3MDJhZDAyOWYgbGVnYWN5LXRydW5rCisyMjU1MiBkYjk3NjI1MjlmNDU0NjY2NjQyYjBlMDQ5NzQxZmVkY2FmMDBkYTNkIGxlZ2FjeS10cnVuaworMjI1NTMgMzhiZTE3N2JkNDkzYTA4ZjEyNTc0YzIwOWVhYjUxYzJiZGExZWQ0MCBsZWdhY3ktdHJ1bmsKKzIyNTU0IGE0OGEzZDc1NDc1ZWNmMmYwMzVkNWM0MDQ5OWEyODVlNDU1MzQ2MmUgbGVnYWN5LXRydW5rCisyMjU1NSAzZDk3YTRiNWM2YWE1ZTQ3M2E5MDg4ZDg2YWZkOTNjMjE4NWU5NThhIGxlZ2FjeS10cnVuaworMjI1NTYgMTNmNGJhMDU1Njg3ZjQ3ZTcxODkyNTQyODcyMmNkZDZkYWM3NzY2YyBsZWdhY3ktdHJ1bmsKKzIyNTU3IDliNWEyYzFhMDJmM2MwYjlkNTc4NjQ2ZTIxMWM1ZWUyYjgxNWYyYWQgbGVnYWN5LXRydW5rCisyMjU1OCA1YjZhNmQ3ZDQ0YWVkMmIyMDFiN2U0MjU0YTZjMDFjMjBiODg3YTVkIGxlZ2FjeS10cnVuaworMjI1NTkgZjkyMGRkYjc3ZDhiM2Y4NDA3YTlhOWQ5ZDhiMzY2YTFjZDU4NzQzNiBsZWdhY3ktdHJ1bmsKKzIyNTYwIDk0OTA1ZWI3MmY0ZmNiNWIyMzU4OTkxZGY3YmIyOTdlMmRkMThmZGEgbGVnYWN5LXRydW5rCisyMjU2MSAwNTFkOGUzODBmMzgyZmVkMWE0NmZkYzFlZDJhYTc0ZWU0ZjcxZWEzIGxlZ2FjeS10cnVuaworMjI1NjIgZTkzZjVjMzg1ZmY0NDM0YzM0YjEwODg3YTMwOGYzYjI1Yjg5YjE4YSBsZWdhY3ktdHJ1bmsKKzIyNTYzIGQ1YWNmZjE3OGFkNWU2NjQzZmVlMmUyMTY3NmE3NmU3ZjMxMWZjZDEgbGVnYWN5LXRydW5rCisyMjU2NCBjMGVlMTBlMGUxM2UzNWU1NDI4MjhmMDRiZDUwODdkMjA2MGY2NDU2IGxlZ2FjeS10cnVuaworMjI1NjUgYmU5YjUwNzA0ZTRjMGE4MDMxNDljNTgwYzQxZTBmZmI3ODdmNDgwYiBsZWdhY3ktdHJ1bmsKKzIyNTY2IDBkYWQwZGM3MTQ5YjJiN2MxZGIwN2QyZGU3ZDNjMzNmY2QzYmFkN2MgbGVnYWN5LXRydW5rCisyMjU2NyBlZmY4Y2E2NzliZjZhZWNhNjczZDBhZTQ1Y2NkOGI2YTIyZjk5Mjc2IGxlZ2FjeS10cnVuaworMjI1NjggZWExMzFmZjFkOGNkODJmOTk5MDg5ODMxZGVmMWJhZjA4NTgyMzA2YSBsZWdhY3ktdHJ1bmsKKzIyNTY5IDkyMjJiNmUzYjM2ODdlZjAyOTI1YzIyNjhhYjg1NDI3NmMxZGUxZDcgbGVnYWN5LXRydW5rCisyMjU3MCA3OGRhY2I1NDM4ODdlZmI4MWI1ZWRjZDk0NjdiYTQyZjM1ODEwNTMxIGxlZ2FjeS10cnVuaworMjI1NzEgZjE5OWQwYWE5ZjgxMGY3Y2E1ZWE0MWIyOWEzODliYjM5ZTE3YmU5ZiBsZWdhY3ktdHJ1bmsKKzIyNTcyIGI3Mzg0MjgyMzhmMTk1MDBjYjEwYWQ1MGMwZmUzMWQ5ZDMyNTVmMzcgbGVnYWN5LXRydW5rCisyMjU3MyBhMWFkYmYwNzU2NTc3M2M5NzEwZjVmZWU3Y2M1NDliOWRjNzhkNDgzIGxlZ2FjeS10cnVuaworMjI1NzQgNjNiOWIxNzdlMzUwZmQ2NmQ1MzY0MDc0OWUyNmRjMWU1YTQ3NGM2NyBsZWdhY3ktdHJ1bmsKKzIyNTc1IDE3ODAyMDc3ZTc3Y2Y1OWZkMTQ3YzkyYjQwYTVmN2IzYTQ0MDQ1YTggbGVnYWN5LXRydW5rCisyMjU3NiAzYjMwNzliODU3Mjc0MzUyMGE3N2E3MDk3ZjQ1NDZmODdkNDkxMjJiIGxlZ2FjeS10cnVuaworMjI1NzcgOGMyYTI5Yjc1NDhlZDYyNDJlMTVkMzUwMjBjZTI5NTFlMjEzZmE3OCBsZWdhY3ktdHJ1bmsKKzIyNTc4IGJhZmJlNWNjOTQxZmYxYWM3MjA3ZDU3YTVmZjE5ZGJhNjEyNDQyNjMgbGVnYWN5LXRydW5rCisyMjU3OSAyYmYyNjkwOTY2ZmZkMzIxYWM2NTNhMWUxZjY2N2Q2M2NlOWE0NTdhIGxlZ2FjeS10cnVuaworMjI1ODAgMzZmYThlOWJjMmRhOWU4MjU0MzkwYTk0ZDI1YjBlNjQ2NjNkOTk2NCBsZWdhY3ktdHJ1bmsKKzIyNTgxIDAzMzQ2MmRmMTdiZjU4YjdiN2RiNzc5ZDZlM2MxNWI1MDYxYzk1ZjMgbGVnYWN5LXRydW5rCisyMjU4MiBjNGIyYTZiMDRkMGI5MGMxMDQzMDRhNGRlMWZlMGJiOTkxNTg0MDRiIGxlZ2FjeS10cnVuaworMjI1ODQgZmNhYjM2YzkzMzI3Y2E1YTU2ZmMwYTA2NzBiYWZmNDU0YTIyMmJiNSByMjJhMi1icmFuY2gKKzIyNTg1IDQ4NGMwNWRjNDk5ODQxNzdkMTVmZWRkYjk2MjFmM2U3MmQzNWQ3OWMgcjIyYTItYnJhbmNoCisyMjU4NiAyOTRhNTZiZjczMTVmMDAwNGJmZDVhMWQ3ODhjYmNhYzU1MjQ2NmY5IHIyMmEyLWJyYW5jaAorMjI1ODcgZmQxMTk4OTkwNDVjODM4NGNjZWVkODYzNjBlZTQwZTIyMWQ2MmI1NiBsZWdhY3ktdHJ1bmsKKzIyNTg4IDllNGY3MzllOWE4NDg2OGVhMDVmNjBlNGUxZmY4MTFhYmViMzkzMTQgbGVnYWN5LXRydW5rCisyMjU4OSA2Mzg2ZjAxZjI0MDE2MmQ5N2EwOGI5ZWUyYjg2NzYzOWU0ZjgyZDY0IGxlZ2FjeS10cnVuaworMjI1OTAgNWYxZTc1NzFiMTI5Y2IwN2I5MmE1NTFlM2FjODYwNzgwY2Q3YWIzYiByMjJhMi1icmFuY2gKKzIyNTkxIDhhNmNkYTE3NTVlYjk5MWQyNDM0NjdkN2Q5MDYxYjk0NDMyNGU1MzkgcjIyYTItYnJhbmNoCisyMjU5MiA3MzQwNjZmMjE2NGYzNmU0MmIyNjUxYzAxNzAxOWYxMTNiYmFkZTFjIHIyMmEyLWJyYW5jaAorMjI1OTMgNWM4ZGU2OGIzY2RjYmM0NjNkYWE1MzM1OTRiN2UyNDJiNzNmYmY5YyByMjJhMi1icmFuY2gKKzIyNTk0IGFmMDU4ZDY5ZWFlZGQ3OTIyYmYxMmJkNmViNTEyOTczZmViYzRlNTUgbGVnYWN5LXRydW5rCisyMjU5NSBkNzY0ZDU1NjkyYTE0ZjQxYzY1M2ZmOWQ3YTYxMGRmMWM0M2RiZjRlIHIyMmEyLWJyYW5jaAorMjI1OTYgNDc5YjU2MGRlY2E3MDE3MTdhYTlmMjIwOTUzNGZhOTgzMzc4MWEzZCByMjJhMi1icmFuY2gKKzIyNTk3IDkzNWFhMDc0Y2RiODZhYmM5MTUzMmJiNTZiZDY0YjA3MzY1NWVlMGEgcjIyYTItYnJhbmNoCisyMjU5OCAyYTA4M2UwNTA2MTdiNTkyMWQyMjJiY2JhNjhjMjI4YjVhNzQxMTUwIGxlZ2FjeS10cnVuaworMjI1OTkgNTBkM2IzNjZlOGM4YTkwZDZmMzBkYzcyZTE0MTk4MThhODY0MzdhNyByMjJhMi1icmFuY2gKKzIyNjAwIDg4NDIyMDgxMDk1YWY0MDhlY2I4ODY4ZGEzYzhhNTczODZhMTgzNWYgcjIyYTItYnJhbmNoCisyMjYwMSBlOWI3OTVkNGMwNjBjZDcyMjA0M2Q3MjI5Mzc3NDYyOTY1ODdjMzY5IHIyMmEyLWJyYW5jaAorMjI2MDIgN2I1NTNiMWMzZThiZDE0ZDBjOGI0MTY5YzRiYzIzNmFhMzRhZDlhZiBsZWdhY3ktdHJ1bmsKKzIyNjAzIDYwZDVjYmJlYWRjM2I4NjhmNmVlZjVlZmM2YmVmZGExNWRjNmI0MTEgbGVnYWN5LXRydW5rCisyMjYwNCBmYjQ3ZGI4NTQxMGU0OWY4NTU4MzAwODdmMWRjZmQ1ZmJmZjY1ZTNmIGxlZ2FjeS10cnVuaworMjI2MDUgYzJkYjE4YzA3MGZlY2RhMTZjNGRmNDUxNTIwODRkZGVmOGYwYjM5YiBsZWdhY3ktdHJ1bmsKKzIyNjA2IDVlYmRjM2FkODg3NzlmZThhZGVlOWQyZWE3ZTRhZGU3NjJkMDliY2EgbGVnYWN5LXRydW5rCisyMjYwNyBjZTZlYTQ0NDllOTdjYjFlYTI5OTAzNmJiYjg2MDFlMmMxNGE5NjE5IGxlZ2FjeS10cnVuaworMjI2MDggYjljYWY4Y2IxMmEyZWMzOGY2MWYzYTFiOGJkYzI1MzA1MTMzNzcwZCBsZWdhY3ktdHJ1bmsKKzIyNjA5IGI0NTA4NDczMDkxNmQ5OWUwMTIwMjc0Y2FlMDEyNWNkZTBkYTcyM2MgbGVnYWN5LXRydW5rCisyMjYxMCA3N2Y0OTVlODIyYzE1ODIwMWFmOWVhYmU1MzgwZmJhNDIxY2U2Y2UyIGxlZ2FjeS10cnVuaworMjI2MTEgMGU3YWVkNTNiNTgzMzMyYmRiYjY3OWFjN2VkZGRiNGZlNTgyZDI5ZCBsZWdhY3ktdHJ1bmsKKzIyNjEyIDNhMmZlNzQ1YTBiYmZhZmY3NTU5YzgyODFmNDU0ODBiMjI1YWRhMTIgbGVnYWN5LXRydW5rCisyMjYxMyBiMjI2NThhNDY4Y2ZhYWQ0MzY1NDJjMDFjNzIyOTc2Mzg2YTU3YzBjIGxlZ2FjeS10cnVuaworMjI2MTQgNjIxODQ5OWFlYmRhMmI5OTkyNjI0MTYwMzAwNjU4OTdjOGUwZDg5NCBsZWdhY3ktdHJ1bmsKKzIyNjE1IDBmODczZDA2YWMxM2ZiZTE1MzE3MzgyNTJmY2JjN2M2YmUwNmU1YTUgbGVnYWN5LXRydW5rCisyMjYxNiBmYjMxOWU5Y2MyYWRmZWQzZmE1ODdjMjAxZjFlYWFiNDY1ZmEwYTdhIGxlZ2FjeS10cnVuaworMjI2MTcgNzc2MWFjOGJlYjgxOWUyY2FiY2NlOWJhMWIzNjQ3NjAyYjdmZjAxYSBsZWdhY3ktdHJ1bmsKKzIyNjE4IDBjNmM2ZTg3ODM4OGI5YWM0OWNhZGJiYzUzNDgxNjZmNzBjYTY4NjIgcjIyYTItYnJhbmNoCisyMjYxOSA4OGIxZWNkMDQ4ZmJjMjNjNTA3ZTkwOTJlODQxNDY3OWEyOWFmOWRjIHIyMmEyLWJyYW5jaAorMjI2MjAgOGJjN2JjYTMyYTk1NjhjNmFjMmQ2MzgzMTI4MTc1MjgyMDVhNTljMiBsZWdhY3ktdHJ1bmsKKzIyNjIxIDJmYzEwMmI4MzhlZDgyMGY3NjgxNmE0NWZmY2M5MTkxYmI0NzNmMDUgbGVnYWN5LXRydW5rCisyMjYyMiA5NjI2M2NmYjJjOTY2Mjk5OWJjNmFhN2EyNDM1ODJkN2VlZGY0MDU0IGxlZ2FjeS10cnVuaworMjI2MjMgZTg1MWU2MTQ4YWQ4ZDllNTY1ZmYzOGZmODM1NDhmZTg2MjMxMDc3ZiBsZWdhY3ktdHJ1bmsKKzIyNjI0IDEwMGRjYzllNmYyZjNhYWQ5MDAyOTFkNjYzMDc3MjkyNDY4ZWQwZjIgcjIyYTItYnJhbmNoCisyMjYyNSBiOTRjZTdkNzBjZmNhOTA2NTVkYmU2ZGY4YjY3NzBjMjFkOGVlNmZmIHIyMmEyLWJyYW5jaAorMjI2MjYgNjBjMGNmZjVkNTdlY2JlMGU5Y2YxYjc1ZGNjZGZkMzhlYTRkYzJiMyByMjJhMi1icmFuY2gKKzIyNjI3IDg1M2RiZTEyYmJlNjhhNjYyYWVjNzZiNTI0YzBiMjljMTMwZTRiOTcgcjIyYTItYnJhbmNoCisyMjYyOCBiZTViZTk4OWNhZmZlYTA0NmJhMGUzMzBjZmM3ZTU4NTZmMmExNmRmIGxlZ2FjeS10cnVuaworMjI2MjkgODYwN2JjODkwYjFmMDI1ZDJkZGVmYzhmMGNjMWYzMTRiMTUzMWM3YyBsZWdhY3ktdHJ1bmsKKzIyNjMwIGEwMzg5OTM4OTBiMjNlNmMzMmNkZTk0NTgwMTQ5NjUxZmZiYzc3OTYgcjIyYTItYnJhbmNoCisyMjYzMSA1NTQ0NTA0MDlhNzM4ZTIxZjk4MDA5MzcwYTBmODA1NzNlNjk3NTRmIGxlZ2FjeS10cnVuaworMjI2MzIgZDllYTk5YTZmNmI0NDY2ODZlN2M4N2VkNjEwYzgzYzBmNjdiYTYyZCByMjJhMi1icmFuY2gKKzIyNjMzIDViY2JjNTkwZjRhNzExNjBjZTg2MTExMTYwNDYzODAyN2UzMDdjYzYgcjIyYTItYnJhbmNoCisyMjYzNCA4OTk2ZGM1MjBiNTdiYjcyNGE5M2ZiYzZhMWY3NWM2NTM0YzZhNWZjIHIyMmEyLWJyYW5jaAorMjI2MzUgYWM2YmZhNTVmY2ViZjRiODAxMDZiNTE2Mzc5MjU2MWM4Zjg4N2RiMSBsZWdhY3ktdHJ1bmsKKzIyNjM2IDYxMjVkOWY5MjQ0MWRjMzJhNTNkNjExNWM4ODI5MWM0NmVjN2UzNzggbGVnYWN5LXRydW5rCisyMjYzNyA5ZGU4M2RkYTlmMDlhM2QxNmJhZTI5YTljYTQzMTU1OTU3YzViOTU0IGxlZ2FjeS10cnVuaworMjI2MzggOTMwNmY4MjhmYmI3NzM0ZmIxMmQ1NzdmNGYwOTVmNzYxMDk1ZjM2OSBsZWdhY3ktdHJ1bmsKKzIyNjM5IDAxZTY2NzgwYWY2MTYzMWJlYjc2ODE2NmRhNWU4MzNjZmYxYjQ5YjYgcjIyYTItYnJhbmNoCisyMjY0MCA4MWM3NTY1YTU2YWNjZTg1OGU2ZWRmY2VhZTg2MzM1Yzc3NmFiMzRlIGxlZ2FjeS10cnVuaworMjI2NDEgN2U1ZTk3NGIzZDM3NmQ0YmI1ZWZhMTMxOThhYmYyYWM5ZGI3NDU3NyBsZWdhY3ktdHJ1bmsKKzIyNjQyIGJjOWM4Y2ViYzJlZmM4MDc4NjA1MTRhOWVlZjBjOGNlNWQwM2JmMjUgbGVnYWN5LXRydW5rCisyMjY0MyBjNDAzYWYwMDM4ODRlNmFkYjVmNTIzZDkxZjc2ZmRmODRlOWMxYWQ5IGxlZ2FjeS10cnVuaworMjI2NDQgMGQxYmJlNjVhMWQ4NzdiODU3NTA0ZTgzMmIzNGE1NGZmMzE1NzcyOSBsZWdhY3ktdHJ1bmsKKzIyNjQ1IGQ0YmE2ZTJhYWFlMzRhYzNlMGJiMDM5MTE3OWY0N2JmMWRlZDUzODAgbGVnYWN5LXRydW5rCisyMjY0NyBjY2M0YWY2ODdjYWM2Y2QyMThlYzAxMzk1YmExYWI5ZGFhZDg5Nzg0IGxlZ2FjeS10cnVuaworMjI2NDggNWY3MzExMTVlMzUyNmJkYTc4YTMxYWNmOWE5NzAzZjAzNjBiZmViMiBsZWdhY3ktdHJ1bmsKKzIyNjQ5IDQ3NjMzYjc5ZWMxOWYzYWU2NmVkZGRmYjYxY2Y2Njk3NzYwMzI4MjUgcjIyYTItYnJhbmNoCisyMjY1MCBiMmRhZDRkMTdjYTlhZTFkZmYzZmI1YzIzOGYwNWRlNzM5OGNmYTJiIHIyMmEyLWJyYW5jaAorMjI2NTEgMDkyOGNkNjJkZGVhNWQyMGMxYWM4MDI0MDc4MzJjZmI2M2Q4MzMzNCBsZWdhY3ktdHJ1bmsKKzIyNjUyIGE2Y2UyZDE2ZDczOWY3MmIyNGI3MTlkOGZhMDk1MjllMWY3MWY3N2IgbGVnYWN5LXRydW5rCisyMjY1MyAwYjExZjA5Y2YxZTQwZDNjYzA1MTdjOGY3NjA0OTJmZmJlMmYwNGE0IGxlZ2FjeS10cnVuaworMjI2NTQgMjkzYTQxMmM5ZmQ5N2Q5NTI0YmU1OWVjNjYxMTc4YzE2ZDE3M2M4OSBsZWdhY3ktdHJ1bmsKKzIyNjU1IDEyNTc4NWYxZTEyZmU3YjgyYTUxODgyZTUwYjY1OWFkNzE3ODZkMWQgbGVnYWN5LXRydW5rCisyMjY1NiA4MTFmMjg5NjM3YWQyNGVmMWUyZjI0Y2NkZjFkYzg5OTMxYmZmNzUwIHIyMmEyLWJyYW5jaAorMjI2NTcgYjE1OWNlMzMxNWNiOGRhNjhjMGJlZDUwYjhjNzU1ZGQyMzViODFhYyByMjJhMi1icmFuY2gKKzIyNjU4IDM0YTc0YjgxYzliMmZhNjg1NjQwMDgyYjIxODNjMGQ0ZWY4MjNmYjMgcjIyYTItYnJhbmNoCisyMjY1OSA3MzBkY2Q2ZDU5MGIyYmJlMWNhOGVhZDJhYTdiZDllYmIxODZjMTgwIHIyMmEyLWJyYW5jaAorMjI2NjAgZjUyZmEyYjcwM2Q3MmM2ZGQwMTlmMjVkZGY2NzRjMTVlZTJmNzMzYyBsZWdhY3ktdHJ1bmsKKzIyNjYxIGU3NmY3YzgzZWIwZDU2MDk3OTdhNjQ4YmM1MGRhNTc2ODFjMzdhYjIgbGVnYWN5LXRydW5rCisyMjY2MiA1YzAzNTg0Y2YzY2MxYzY1ZGRiMTk2YTUzOGQ3MDA2OThmZjYxYTFmIGxlZ2FjeS10cnVuaworMjI2NjMgMmI3YzBiZWRmZmRiZDM5NDI5NDYzMDVjZjAxNjQ1ZjU1NjVlOGUxNyBsZWdhY3ktdHJ1bmsKKzIyNjY0IDg1ODYyOGNmNmUyNTY5NDU0NzJhY2M5NjlkZWI2Yzc3Mjk3N2Y1MzMgcjIyYTItYnJhbmNoCisyMjY2NSAxN2U3YjFhMzMxZjM1ZGZlZjAyZGI4OWRmNDg5YjAxZTQxYmMyNGU2IHIyMmEyLWJyYW5jaAorMjI2NjYgZmEzOWYwMGRkNWMzMzNiZGFjY2FkOGQ3ZWEwMGViMTdlOTQ4Y2UxYSByMjJhMi1icmFuY2gKKzIyNjY3IGZmZWY0ZTQxZjA2ZWRjNDFmZDgyYWRjMWM1NDUyNGYzNGJjYWVhYzkgbGVnYWN5LXRydW5rCisyMjY2OCBjNjM3ZjI5YzgxOThhZTAzNzJjNTgyZDAyNjY5MmM0ZGViMWU3MGJhIHIyMmEyLWJyYW5jaAorMjI2NjggZDdmNDJjOWRlOTQ0MGQ3YTZhMjUyYzUwZjNkY2IwNWM5N2ViZWNjNCByMjJhMi1icmFuY2gKKzIyNjcwIGRlMmZiYzUyYzFlYjlmNGQ4MTliMjdkMjE2N2JmZDFkMTMyNzdlMTcgbGVnYWN5LXRydW5rCisyMjY3MSA3NTI2OWFiMjZkMDMxMzc3YjE3MDI2MTRjOWYyZTRjZDA5MjU5ZTljIGxlZ2FjeS10cnVuaworMjI2NzIgOGQ2NDA0NDUzNDQ4NTdlNDhkNWEzNDk3MmFlZmJjNDMxNjYyZDc2ZCBsZWdhY3ktdHJ1bmsKKzIyNjczIGM3MjYxNmQ2MTQzYzJjODk3MjcyYWYxMDgwYTQyMjc0NDE2ZWM5OTMgbGVnYWN5LXRydW5rCisyMjY3NCA5Y2Y2Njk1ODExMTAzNGJlNjMyODEwN2ZhYjQ5MzVkZTBlNWY1ODc0IGxlZ2FjeS10cnVuaworMjI2NzUgNTAwYzM1OTAzOGM3YjIzNWY5OTE3ZmEwOGQyMzk4MmVhYzFhMmEzYiBsZWdhY3ktdHJ1bmsKKzIyNjc2IGIxMzliZGI2ZDQ4YTRiY2Q1MDk5Y2M4ZmUzN2Y4NDJhYWQwMWU5MTEgbGVnYWN5LXRydW5rCisyMjY3NyA5OTlkZTU0YWM2YTYyMWU2ZTdmYmYyZjk4OTU5YmY4YTgxYTA5ODZkIGxlZ2FjeS10cnVuaworMjI2NzggNWQ4MWM2YmZmMzA2ZTVhZjBhNjU4MDE2MmY5ZWZmNmI1YTJjYTRmYyBsZWdhY3ktdHJ1bmsKKzIyNjc5IGMxNDBiZDdkM2JkY2ZmY2VmZWUwZTg5OWI0Zjk5NjczZDYzYWY1ZGYgbGVnYWN5LXRydW5rCisyMjY4MCBkYWQzMjA5Y2U5NzMzMmE5ZGEyNTU5ZTZiOWY1ZTkxMDliYzg4OWJjIGxlZ2FjeS10cnVuaworMjI2ODEgZTE2YWQ1ZjdmMzg3MjIxYmY3ZWUwYmU3Y2JlM2ZjYjc2NjdjNTBhZCBsZWdhY3ktdHJ1bmsKKzIyNjgyIDVmZWMxYzlhMjFlYWRmNGU5NTVlMDJiNGM2OGRjOGIxZGY1ODgxZTMgbGVnYWN5LXRydW5rCisyMjY4MyA3YmU0YzczYmFjNTNlMTQ5MzdhNGI4OGI4ZDA4M2VlYjIzZDk1NGQwIGxlZ2FjeS10cnVuaworMjI2ODQgZGU3NDgzNDdhNDA0ODBmZjQyNDAyOWZjNzhkZTdiMmE4ZTg2NjY1NiBsZWdhY3ktdHJ1bmsKKzIyNjg1IGNhMWI4Y2MxYmEyYmQ2NWJkZWVjMDI2ZmRjMDU2MmU3MDE4NTAzZTAgbGVnYWN5LXRydW5rCisyMjY4NiAwNzU3MDk4MzUwYzI4NTdkNTA2ZjRmMDMwYzk3NDg4OGZkZTY1MDNkIGxlZ2FjeS10cnVuaworMjI2ODcgNGQ2OWQ3NDJkYjJmNDRiZDg2NGUwOGE1YWNhM2ZmNzMxMzk1YjY3MiBsZWdhY3ktdHJ1bmsKKzIyNjg4IDA5MjJkNjA5YWNkMTI1MmE3N2VhMDk1ZDljNzZiZDI0N2I1ZGY2YjQgbGVnYWN5LXRydW5rCisyMjY4OSA3MTM3MmEwZjUwZTFiNGQ1MGQ4MDQxMWE3YzEzNjI1N2JjMTFjM2ZkIGxlZ2FjeS10cnVuaworMjI2OTAgMmFlYTM5NGY0N2RkNDBlMWYyYzY0Yzc0MWEwNmJhMWM2MmUxZDk1OSBsZWdhY3ktdHJ1bmsKKzIyNjkxIGY1ZDg3YzQxZjY1YjIwMjdiNjA5MGFhZTU3ZmU2MTMwODY2OTMzYjIgbGVnYWN5LXRydW5rCisyMjY5MiAzYmZjZGNhYmE3MDM0MjU0NGNiNWM1MTk4NmMzZWVhNWVmYzcxZmEwIGxlZ2FjeS10cnVuaworMjI2OTMgMjVkMmY2NDgzMzg0MTlmYjVhMGE5M2QyM2RjYTY5OTk4ZjNhN2Q3MyBsZWdhY3ktdHJ1bmsKKzIyNjk0IGY5NGM0YmI3ODg4YjJjNzgyNzlhMzFiNDVjZTZlY2QyNzJkOGU4NDcgbGVnYWN5LXRydW5rCisyMjY5NSBjZWUxZGVjYzRmZjIwOWEzZjQyZWYzN2U1YzQzZjRjNGFlNmJiNzgwIGxlZ2FjeS10cnVuaworMjI2OTYgMjgxN2YxZDNhZGJlMzAzZjBhYTA1NGExYzg3OTRhNTdlNmI5NTFkOSBsZWdhY3ktdHJ1bmsKKzIyNjk3IDEwYjQ0ZTNiMzkwNTQ3YTE3NmZhNDBhYzU0NDM2ODQxMDEyYmJlZWIgbGVnYWN5LXRydW5rCisyMjY5OCA3ZmI1ZjE1Njg1ZGQwNmE5MjY4YWI5NGVkNWM1ZTA5MTNkZWY0MjdiIGxlZ2FjeS10cnVuaworMjI2OTkgOWFmZDlkNWZiOTdhMGI2MGU2YzE0MDYyMDkzNjk0NzgzNWFiYWVkMSBsZWdhY3ktdHJ1bmsKKzIyNzAwIDI1YjliNjM0ZDllM2QxZWFmZjU3MDUzMTE5NWM3MTdkMzkxMDFiZWIgbGVnYWN5LXRydW5rCisyMjcwMSAzYjVmMzRjNWJjNmM5M2ExNzAwODBkNWI0NzU1YjI0ODljNDU0M2FiIGxlZ2FjeS10cnVuaworMjI3MDIgNmMyYjdiNjI0ZWYyM2YyMmQyODQ3ODU4Nzk4YzdmYjUwNjUyMzhiMSBsZWdhY3ktdHJ1bmsKKzIyNzAzIDhmOTBlMWY1MGMxMTgzOGZjYWQwM2JmODAyZmVlMWI4ZmMzNDc3NDEgbGVnYWN5LXRydW5rCisyMjcwNCA1MDAxOWNiNzg0ZTBkY2VlYjNkZGExNTRmNmFiOTAyMzk3MDc3OGI4IGxlZ2FjeS10cnVuaworMjI3MDUgNzUzMzQxMmRjNThjZDZhOWZjZWJmYjY5OTNkOWE3NGRmYzg0ZWNmMiBsZWdhY3ktdHJ1bmsKKzIyNzA2IGY3YWFmNzIxYTgxYjNjZmI3NWM4NWJjNTZmOWQ5NTk4NzZlMDQ2MzUgbGVnYWN5LXRydW5rCisyMjcwNyAxMzRlMTMzZDhjNDQ1Y2M2ZGFmYzY1OTFkN2I1N2IzZGEzZWY4MDdkIGxlZ2FjeS10cnVuaworMjI3MDggMGI2NDJkMjIwYjAyZTJkMGRmODkzYWMyMzg4ZGQ3NjlhNTFmYjZhZSBsZWdhY3ktdHJ1bmsKKzIyNzA5IDQ1ZDBlMTE0MjEyZTk4MDUxNjQ4YmMxYzY4ZTk3ODA2ZWQ3M2Q3ZmQgbGVnYWN5LXRydW5rCisyMjcxMCA0YTMwZWM3OThlNmMyZWI4NThhMDcwYjg1MjQ2YTY4NDQ0MTZmYzMxIGxlZ2FjeS10cnVuaworMjI3MTEgNjFkNTNjMDUzZTQzNGU5ZWEwNjYyYzUxM2MyMGQxZjIzYzRiZGVmYSBsZWdhY3ktdHJ1bmsKKzIyNzEyIDZlNmZjN2I2YTM2MDFiZGU2ZWY0ODM3MzhhZGZiNjI0YzI2MDhkMjkgbGVnYWN5LXRydW5rCisyMjcxMyAwZGNlZTliY2Q4MTNlODYxNjA1Mjc4ZWQ5NmVjMTc0MTY3YTA4M2YxIGxlZ2FjeS10cnVuaworMjI3MTQgYjNjOTJmMDEzODY5ZjA2ODllZmZkNTJjYjVhMDE5OWFhNzlkNWM5ZiBsZWdhY3ktdHJ1bmsKKzIyNzE1IDQ1ZWEzYjVmY2JlNTc4N2IwNWNiZWM2NTc2MWY2NWQ4YWZiZWE2MDcgbGVnYWN5LXRydW5rCisyMjcxNiA4ZDJiMmNiMmZlYmNmMDRlOTUxMjFkOGE2OGViYThjM2Y0MDNmMzkwIGxlZ2FjeS10cnVuaworMjI3MTcgNTUzZDY4ODQzOGM0MzQ1NmVhNzQ1ZTU0OGNmYTIzNDgxMzI1OTE0NSBsZWdhY3ktdHJ1bmsKKzIyNzE4IGMzOTJjM2U0OWRkNTZlZDE0MmZlYzZlYmFjYWEzMTUwMWQyMjZmZmUgbGVnYWN5LXRydW5rCisyMjcxOSBmOWY0YmRjYmMyNWFhZTNiODUyZGI0YzEyYzQ4OWEyODdhMDIxN2ExIGxlZ2FjeS10cnVuaworMjI3MjAgYmM2M2FmYzcwMWVmNzBkYTY1ZTBmN2Q2OTg2ZmMzMjg2YjljZGVkYSBsZWdhY3ktdHJ1bmsKKzIyNzIxIDBlNzBkZjk4NDI0ZWRjYzM2Yjg4ODFmY2IwZGEyZmY0MzNiN2IxYTQgbGVnYWN5LXRydW5rCisyMjcyMiBlMWM5MWFjNTVjY2E4MDRjZTdkMTI5MjNiNDU4MzY3ZTQyM2U0NGQ2IGxlZ2FjeS10cnVuaworMjI3MjMgNjdiMzI1Y2UwMjI2ZDQwYWYxMDEyNGRiYTM5NTZmZmUxZDIzMDcyNyBsZWdhY3ktdHJ1bmsKKzIyNzI0IDQ3OTZhNjdhOTk4Yjk5MGNiODIzMzc4YjhkN2UxZTFjZGNmMWVkMzUgbGVnYWN5LXRydW5rCisyMjcyNSA5ODRmZmExMjQ2MDYwOWI5OTI3YzFiOTc3MTUzMjI0Mzc4NjM3MjI1IGxlZ2FjeS10cnVuaworMjI3MjYgNzdmZWE4ZmExZjE2NDMxYzM5ZmVlNzJkZmM0N2JkYWNjMWVmYWNiOSBsZWdhY3ktdHJ1bmsKKzIyNzI3IDkzY2I1ZWM0NDAxNzk4ZDUyM2E2ODFmMmFiZDY1MGZmMDMxYTI3NjggbGVnYWN5LXRydW5rCisyMjcyOCBjMTcxYjA3YmY2YTllOGRlZWZjZDk3YWNmYTZjOTk2YWFhOGMwMGU3IGxlZ2FjeS10cnVuaworMjI3MjkgZGU5NzdkNzYyN2ViZmZjMTkxNzEyMDZjYTQxNTAyZWVjNjUxYmNmMiBsZWdhY3ktdHJ1bmsKKzIyNzMwIDAwM2EwZmU5YzM1MDNlZWQwNmFlNTg5YTQ3NTM0YTZhZWJjOGNmYmMgbGVnYWN5LXRydW5rCisyMjczMSA1Yzg1OWQyY2IzN2JkYzUwNjk2NTJjYTgzNDBiMzNiMGE0ODdjZmFlIGxlZ2FjeS10cnVuaworMjI3MzIgM2U2OGUxYTAyYWQyMDhhZGQ4ZjMzYmFjYzJkNzAyMGJmNGM2MjAxOCBsZWdhY3ktdHJ1bmsKKzIyNzMzIDQyYjJmMTkzNjI1NDZlZDNiODE1MTdmYmRiNzM4MWQyNjA2ZWIyMGUgbGVnYWN5LXRydW5rCisyMjczNCAzZTc0MzE4YTFiNzYzYmRiNGIxNGIzODgyNjYwMTM2YjdkYjA5OGZmIGxlZ2FjeS10cnVuaworMjI3MzUgYzYzODUwMzhkZTM5YWZlNWM3MTI2MjZiZDE4MTRiNzA2ZTgxZTU4YSBsZWdhY3ktdHJ1bmsKKzIyNzM2IGMxYWM1ZjgyN2JjMjYzMDAzYzZjMmY1OGU0Y2FiMzM2YmFjMGIwMzMgbGVnYWN5LXRydW5rCisyMjczNyBkNzliNTE4NjdjZGI1MTkwMWE1ZWQxMjRmOTNlY2ZjMDNlNTQ2NGEwIGxlZ2FjeS10cnVuaworMjI3MzggNTZiNTBlNGQ2ODdlYmE1MTIzZGQ5MDE0OWI4NDA5ZmE2ZTE0NDAzMiBsZWdhY3ktdHJ1bmsKKzIyNzM5IDY3MzRjODA2NTExNDhmNWEwODU1YWY2OGQ3ZTdkZGQ4MzZiNTFjMTUgbGVnYWN5LXRydW5rCisyMjc0MCA0MzU0YmE0NzM1YTA5Njc3NjE0NGM4Njc5MjFiZTI3NWFkYmU5ODQ1IGxlZ2FjeS10cnVuaworMjI3NDEgNjE3NTU1NTc5NjExZmEzYmIyNTc2OTkwZmU3MzJhMTg5YjQyM2EzZiBsZWdhY3ktdHJ1bmsKKzIyNzQyIDU0N2I2ZWYxMTA4Yzg0OTQ3OWQ5MDZhMzRiYWRmYjFlY2ZhYTQxNTAgbGVnYWN5LXRydW5rCisyMjc0MyBmYzVjNzU4MDdlMTk1MmNiNmRlOTYyMjJiMDI3Y2Q5Zjg1OTYxNWNkIGxlZ2FjeS10cnVuaworMjI3NDQgMDc4MjkyYmY5NGNjNzIxMGE3NWFlZWQwNGQ0Mjg0MDhiNWJmYTUwYSBsZWdhY3ktdHJ1bmsKKzIyNzQ1IGQwY2UwNDYwZjRhN2M2MWFkZDQ4NGJiNWViYTdiYTBhYTc5ZDhkMjYgbGVnYWN5LXRydW5rCisyMjc0NiBjZTRmMWU5OGJhN2U0MzY5YjNlYzkwNmU5M2E3ODNmOGFjNjYzN2NjIGxlZ2FjeS10cnVuaworMjI3NDcgNjJiZjk0MDFhMWFjZmRkZmI5ZWM5ZTRlNTMzYzgwYmJkMWY1ZmYxOCBsZWdhY3ktdHJ1bmsKKzIyNzQ4IDE3YjJhZmJhN2E2ZmIwNGEzMTIxZTI0MTZjOTk5ZTcwZWJkOTRhYzQgbGVnYWN5LXRydW5rCisyMjc0OSA1OTkzMWRiNTcyYjI0NDlhODgyNzM1NGIwZmQxYmJkYzNiOWFhN2ExIGxlZ2FjeS10cnVuaworMjI3NTAgZmVmZTk1MzE5ZjI0YjBkMjIyMjBmMDIzYzg0NWIyMjBjYjM2OTczNiBsZWdhY3ktdHJ1bmsKKzIyNzUxIDg3NjI4MDMwYWQ3NWQ2ODdiZmRlNDk2ODViNTlkOTc5ODM1YTBjNzcgbGVnYWN5LXRydW5rCisyMjc1MiAwNzZhYjhjYjQ1MWVhMDIzNzY5Y2MwYTYzMWVmOGM2ZmU2MTk4YTY5IGxlZ2FjeS10cnVuaworMjI3NTMgZGJiYTJjYTdkYzFlNWQ0ZDM2ZWRiOTlkYWNkNWVhYzQwNTU2MDA0YSBsZWdhY3ktdHJ1bmsKKzIyNzU0IDMzNGY0MTc4NDc3YWE3NzcyMTY5MWM0NGMzMDJjN2RlYTczMjY3NTQgbGVnYWN5LXRydW5rCisyMjc1NSBjZTMxOWI4MmE4ZTRkZDlkMzJmYzI2NTI2ZWVlN2Q5YTdkMDliZDhhIGxlZ2FjeS10cnVuaworMjI3NTYgNWNmOTI0MWQzNWIwOWE5YjBkZGZjM2Q5MjllZGU3YzczYTJkY2I4ZiBsZWdhY3ktdHJ1bmsKKzIyNzU3IGNjMDIzNDFkZWRlNDdlMDU4ZDVkNjQ3NzE0MmRlN2ZmYjcwYWZhNGEgbGVnYWN5LXRydW5rCisyMjc1OCAyNDQ4MGE2ZDI3YzRkNDc5MzVjOTQ0Y2QxMDljMzVjNzAwZmVkNzUzIGxlZ2FjeS10cnVuaworMjI3NTkgYjFhY2JjZjdkNTg2ODQyNmNlY2ZiNDBmODk2OGU1MTY5NDc1NWU2OSBsZWdhY3ktdHJ1bmsKKzIyNzYwIDU0NmVmMzE4YmE1ZGNkNGE3M2I5ZDc3YThiODUzNmNiYjQwOTYwZWIgbGVnYWN5LXRydW5rCisyMjc2MSA0YWVjOWNiN2ZlNWQ5ZDU4MzMyMDA1Y2I1NTgwOWU0N2Q3NWViYzY2IGxlZ2FjeS10cnVuaworMjI3NjIgMWE2Y2YzMjUxNDFlMGQ5NTVmMjBmZmVlMjI1YjQ4MWM1OTExNDM0ZCBsZWdhY3ktdHJ1bmsKKzIyNzYzIGZiYjM1MjY4ZmVkNGY4NzhiMWVjYTgyMzRjNzlkMDVhNmE3YmUwYzggbGVnYWN5LXRydW5rCisyMjc2NCA5OWU5NTNjNjcwOWNlZWY0NzE4YjNlMjE3Mjc1NDc1M2VjODYwZjdmIGxlZ2FjeS10cnVuaworMjI3NjUgYzBjNWZlNzkwMmNmMjcxYzI2MTRjNzQ0ZWI5MjBlZDlkZDBmNzRlZSBsZWdhY3ktdHJ1bmsKKzIyNzY2IDQxMmQwZWI1ZDRiYTUyMTQyNmQ4MjRhNGUxOWI5NGE0NzhkZjMxMTQgbGVnYWN5LXRydW5rCisyMjc2NyBhMDg0N2I3YTg5MDI4Yzc2NjE1ZjgwYjFiMjllN2M2NjMyNWQ4NjBlIGxlZ2FjeS10cnVuaworMjI3NjggM2E5MDIxMWEwMjk1OGZlYWU0ODdlMzAzZTk1ZGFkOWUyNmI1MWRiMiBsZWdhY3ktdHJ1bmsKKzIyNzY5IGFiMTk0ZjFmMDUzYjY2ZmRmODZjZmNiYWZmODNjYjc5ZTFlM2JmYjEgbGVnYWN5LXRydW5rCisyMjc3MCBmM2VjNTQ4ODkwOGIzYzQ5OWQ4NjAwMjAzNzIyZGJiZGJhODBmMGQ5IGxlZ2FjeS10cnVuaworMjI3NzEgNDQzM2ViYTczOWU3ZjE2YTdjMGRmMDEyMzAyOWY5ZDU1Y2E0ODAzZiBsZWdhY3ktdHJ1bmsKKzIyNzcyIGVjNTFlMTBhNjIyOWM2ZWMxNjI5N2RlMmY1ZWQ1MTgyZTU4MzIyZjkgbGVnYWN5LXRydW5rCisyMjc3MyA5NmEwYmIzYTg1MjFhMWI2YjU5ODIzN2U0ODdkMDk3MDZhZWQ0YTgxIGxlZ2FjeS10cnVuaworMjI3NzQgZGQ4ZDYxNTNhOGM2NWRiOGUxYzQ3NWM1NDQ5ODhmZDgxYzcxYzFmYSBsZWdhY3ktdHJ1bmsKKzIyNzc1IGVkZTdmY2I4YjBiMjM3NzFmNzE4MGZhOGNkMzhiOTc2YmRhZWYyOTcgbGVnYWN5LXRydW5rCisyMjc3NiBkZWFjZDYwMjcyYmUzMjQ3YmYwODZkN2QwNWYyYjI3ZGJjNWZmNGQwIGxlZ2FjeS10cnVuaworMjI3NzcgMjAyZDhkZDY1ZWI1YjJmZjRmNzBjOTdmMzBlNGE0NzdhOTY1NDdkNyBsZWdhY3ktdHJ1bmsKKzIyNzc4IDNlNzg5NzgyMjQ1OTdmNDE2MTMwOTg2MTU1ZjVhYTI4M2VkZGUzMTkgbGVnYWN5LXRydW5rCisyMjc3OSBkZTEwMTUxYTdmNjNlZGJkMTlmNDg1YWE1YWYwZjNhNDQ1MzNiMTNkIGxlZ2FjeS10cnVuaworMjI3ODAgOTc1MzYwOGUyZDU3YTNkM2M4MDcyYzFjNDMwNWJhM2FjZGNkZTE5NSBsZWdhY3ktdHJ1bmsKKzIyNzgxIGNmOWUzNDE4ODc2M2MwMjE0NTIzYzc5MDg5ZmJlMjMzODMyMGUwNWQgbGVnYWN5LXRydW5rCisyMjc4MiA0N2ZhNGFjMDQyZDdmMGUzMmU4MTI5NmNhZTYxZDNkZGE4NGU3ZjljIGxlZ2FjeS10cnVuaworMjI3ODMgYjRhM2ZjMTQ3OTI5NGI0MzkzYzQxYTVlMTVhYjU4MTc3OTQyMTU3NyBsZWdhY3ktdHJ1bmsKKzIyNzg0IDcyZDliN2MwZDIxMWRiNzY5NWIzNzdiN2I3MzI2MzYxODg2NjFlOGEgbGVnYWN5LXRydW5rCisyMjc4NSBlMTQxYjM5MmI2MWRkMmI0M2U1NjU3ZjdmZDJiODE5MTk4NDk5NzYyIGxlZ2FjeS10cnVuaworMjI3ODYgM2UxMGMwODc0MDFjZmNjZWI1ZDBlMDBjZWYxMDA3MjA1M2QzZjE0NiBsZWdhY3ktdHJ1bmsKKzIyNzg3IDJkMjUxNmUzNzI5OTMxMmNhNzQ2NGNmZDk1YzBmOWEyN2RmMGIxM2EgbGVnYWN5LXRydW5rCisyMjc4OCAxY2Q4NzY0MjM1OWNhNTk1MjlmODkzNWYxOTRiMzliZGI4MmFkOTI0IGxlZ2FjeS10cnVuaworMjI3ODkgZDcxMWU4MmVjZTIzMzJmMTAxOTk1ZWY3YzA4NzkxOWE4MjQ0NDY4YiBsZWdhY3ktdHJ1bmsKKzIyNzkwIDg1NjA1YzkzNjUyYjVhNGUwM2FiMjBlZjA0Y2RlMjUzZWQwZjhlNjEgbGVnYWN5LXRydW5rCisyMjc5MSA0NzdiNmRkZDQyNDI1ZjYyZDA4MzZlNjY3ZDQ0NmI5MTE3M2UwOTFmIGxlZ2FjeS10cnVuaworMjI3OTIgN2U2MjhmNjAyNDVlOWIyZDNiMGVmZGM0NzYwMjJmZjI3MGI5NDNkOCBsZWdhY3ktdHJ1bmsKKzIyNzkzIGRhNWVlYmJmZTQxZGE1Zjc1OGJmZDRkM2VlZmNkOTM4NTAyNjUxM2YgbGVnYWN5LXRydW5rCisyMjc5NCAxMWE3NThjNTYwMjc5MGY2OTM0YTMwMjdmYTBmYTU1MzQyMTU1MGU5IGxlZ2FjeS10cnVuaworMjI3OTUgMTlkMjcxZjI5N2RjNzU4Y2UzN2U3NTA2NmVmMDkyZDVlMTYyODdjZCBsZWdhY3ktdHJ1bmsKKzIyNzk2IDAxYTY5MDFjZDMwNWUyOWVhYzcyZTUyZTJhNzc2MWFhM2U5N2JkZDkgbGVnYWN5LXRydW5rCisyMjc5NyA2YzMwZDIwZDI3ZjJjY2E4YWFhNWU5MjViYThlNTIxOWM5NjcyYThiIGxlZ2FjeS10cnVuaworMjI3OTggN2IzOWQ5MTQyNGEyYWYwYzlmMTJmNjUwNzBmODFlMzg5ZWJjZjg0NCBsZWdhY3ktdHJ1bmsKKzIyNzk5IGRkYzRjMmY1ZWZiYzk1OThjNWE4MWQ4N2VmMDJiNjEyZWI2NWEzYzEgbGVnYWN5LXRydW5rCisyMjgwMCBlYTc2ZGVhNjQ0MGY5Nzg1NzY5YmM0NDNlMTNhNzI4NzJmZDU3OTg0IGxlZ2FjeS10cnVuaworMjI4MDEgMzdlMGIwZmNjYTU0MGY2N2IzODE2OWU1YWQ1NGVhYTc4OWVlNTNiYSBsZWdhY3ktdHJ1bmsKKzIyODAyIDJjMmNjMzFiZGYxNTNhYzY3MDVjMmNlNDQ1OWMyYWMzNTEwOWVmZWUgbGVnYWN5LXRydW5rCisyMjgwMyAwMjI1MWIwNDhiYmJmMTkyY2IwNjYwN2U0NDA0ZDg3ZTc2ODA4NTAxIGxlZ2FjeS10cnVuaworMjI4MDQgMTg0OWY0OWFhNmY4NjY1ZmI5OGU3ZjEwMjg4ZmRjNDQwMjJhYzFjYiBsZWdhY3ktdHJ1bmsKKzIyODA1IDA3Mzg4YTZhNTUyNmI5NWE0NDIzZmEwM2RkNzMzNDk0NDY3Y2I5NDAgbGVnYWN5LXRydW5rCisyMjgwNiA4MTE2OGVmNGNiNjU4YmY1Y2ZmNDc5YjEzNGUwYjY5YWU5ZTQ5MGQ5IGxlZ2FjeS10cnVuaworMjI4MDcgNDliYjQxYTY5ZGZjMzhlYmM2YzRhNzgwOTAzMDAwOTNjZDczMmUzYiBsZWdhY3ktdHJ1bmsKKzIyODA4IGQ5ZWNiMjE3MDM1NGY1NjJkZmE2YmNiZGU4ZTkyMzY2ZWIxZjJmYTkgbGVnYWN5LXRydW5rCisyMjgwOSAzODExNTgwZmRjMzczY2NkNzJkOGVjZmM5NGY0NGVmNTE3ZTY5Mjg0IGxlZ2FjeS10cnVuaworMjI4MTAgM2ZhMjljZjczMTlkNDg0NTA1NjhkZDlmNWMyOWJmMzAxYjY5OGI2NSBsZWdhY3ktdHJ1bmsKKzIyODExIDg1NmUzZmExNGNiYTY4ZmY4NDNkMDZkOTgzOWNlYTAyOWJkNjdlMzggbGVnYWN5LXRydW5rCisyMjgxMiBiOThlNDM0NjI1N2JmYmMzN2MxOGY4MzEwOWIwYTljNzY3NTA2ZDk4IGxlZ2FjeS10cnVuaworMjI4MTMgYjBmNTI3OGEyYWI0MzdmMmQxMTY3OWZlNTE4NGJjMzI1NjdmMWI2MSBsZWdhY3ktdHJ1bmsKKzIyODE0IGNlYTdmZWExNzQyYjQwMzg0MTYzNTRiMDJmMzRiNzE2MTJmMTk2NzIgbGVnYWN5LXRydW5rCisyMjgxNSA5ZGE2OGMwMzc5YWJiOWJiZWI1YjFmZGI5MWFlNTJkMDE3NDE1MzNiIGxlZ2FjeS10cnVuaworMjI4MTYgYzQ4NWQ3NzM3NmZhNDA3NTA2MDhmMzUzYzU3N2YzNDU4MmVhZTcxMyBsZWdhY3ktdHJ1bmsKKzIyODE3IDQ3NmViN2RjZWVlYzI0OTdkNGIxN2YyYjBlMGI3MjYyNGMzOGIxMTAgbGVnYWN5LXRydW5rCisyMjgxOCA3MjU3NjJjYTI3NzQ5YWQ2ZWE5N2MzNzU5YTg0OTJhZDk3YWYxZGZkIGxlZ2FjeS10cnVuaworMjI4MTkgMjY1ODhkNzAzNTMwOGYxMGMzOTU0MGY0MzI4YzZhOGQ1NjFlNTY2ZCBsZWdhY3ktdHJ1bmsKKzIyODIwIDdlZGMyZmNlMWY4ODE1NzQ4MjhlZDhkZWFhZmQ0YmQ0ZmNkYzliMmMgbGVnYWN5LXRydW5rCisyMjgyMSBiNjczMDk0MDdjZmM4ODU0YzEzNDBmMDBjMjQ1OGQxNmY3Y2ZmZmNmIGxlZ2FjeS10cnVuaworMjI4MjIgZmJkNDlkMTcxN2M0YzI4MzhhZGNlYWEzNWFmZmNmYzlmYWU2MWFiZiBsZWdhY3ktdHJ1bmsKKzIyODIzIGY2ZjkzNDE5YmZiNjgwMjNjYzI0YjgwZmVlMGYwZmUzNDA3NzM4OGYgbGVnYWN5LXRydW5rCisyMjgyNCA0M2RkYzQ2YzVhOTk2NzhjNzkwMmUyNmU4M2RkYTUyNjk2MzcwY2VkIGxlZ2FjeS10cnVuaworMjI4MjUgZGMyNzgzOWMwYjgwZmFiMWVmMGEzMDc4YWZmNzJlNTQzODBkODg0OSBsZWdhY3ktdHJ1bmsKKzIyODI2IGZkNDhhNTVhYzM2NGZlMzA3ZmFjMjZhNzg2YmE4NDEzYjQxYmRkOTcgbGVnYWN5LXRydW5rCisyMjgyNyAxM2E5M2E1ZGNiMWRlNjdlNzJiNjJiNDJhYmNmZjRkZDgwOWFiZDgwIGxlZ2FjeS10cnVuaworMjI4MjggNDRhNjJlM2I3MDZmOTI3ZjJhYjMwMTZiNDliMjRlZWQyZGM3ZmI2OCBsZWdhY3ktdHJ1bmsKKzIyODI5IGMwY2YxYTI0ZmMxM2RkOWQ5MzE0NDdlMzIyYmYyNmZkNWMyYjhiMzYgbGVnYWN5LXRydW5rCisyMjgzMCBjNDNkN2E4ZjAwYTQ1OTVhYTAwMmZlNjJjZTRlYjZkMzRiYWU2OTA0IGxlZ2FjeS10cnVuaworMjI4MzEgYzU5ZjA2ZjM4YTQ2OGY5ODAzZTBlN2ExZGRlMzY0OWI3M2QxNjgyNCBsZWdhY3ktdHJ1bmsKKzIyODMyIDUwMDlmYTZkZGZlYjMyMjg2NzViNTYxYjU1ODdmMTc5YTFiNTAyZTggbGVnYWN5LXRydW5rCisyMjgzMyAyZmUwODkxOGZhYzY2N2M5ZjBlMGExMWY2ZDdjNzI2ZjE0ZDhkNzFmIGxlZ2FjeS10cnVuaworMjI4MzQgODQ0NTUzNDczZmE0NjY4ZjAzNGE5ZDgxMmRjYTRlMjkyNzVjZWMwMiBsZWdhY3ktdHJ1bmsKKzIyODM1IGJmMmM3Nzg0MGYxY2M2ZmZiMDg3MmExOTU4OGE2NzE2MmYxNzRhOTEgbGVnYWN5LXRydW5rCisyMjgzNiA0N2UwYzBmZGQ0YzhhMDA3OTdiYzdhN2ZlNWZlMjVjOWEyMjJiZDA2IGxlZ2FjeS10cnVuaworMjI4MzcgODU3NjVlNjFkZWIwYzMxZDgzZDQwZGQ1OTAyMmMwYTIyN2E3MDY3ZSBsZWdhY3ktdHJ1bmsKKzIyODM4IGE4MGI0YjAwNmViN2NmMzNmODM4MmIyMWIzYjM2OTE1MWI3YjEwNjAgbGVnYWN5LXRydW5rCisyMjgzOSBjNDg2NTQ5NTlkYzQ2ZmQwMTQ5ZTkxM2JkYmUwZWMwYjIxYmRkNTE4IGxlZ2FjeS10cnVuaworMjI4NDAgZGIzNmUzOTZmMDQzMTcyMmFhNmIwMDMyYWU5ZTI3MDY2MzZlOWQ3OSBsZWdhY3ktdHJ1bmsKKzIyODQxIDFiZTE4ZWY4NjlhNDc4ODkzNzNkYTMyMTk5YjQ0Y2ZjNzk3MTc1OGEgbGVnYWN5LXRydW5rCisyMjg0MiBiYmRmODZmMzU4ZTk1NTg4OGI0MDRkN2Q1MWQ1NDBjNzkxOWUwZTRiIGxlZ2FjeS10cnVuaworMjI4NDMgMDY2MzE1NDQ3OTQxNmIwOTdiNGZkNTJhZGQyNmFkMmRiODMwNmUyOSBsZWdhY3ktdHJ1bmsKKzIyODQ0IDAwZGU3MTlhZTgzMTk3Nzk0YjU1ZmI5YzVhZjAyNDhkMTUzYmMyZWMgbGVnYWN5LXRydW5rCisyMjg0NSAxY2VjZTc0M2E3MDg0M2FjMzMxZmJiYjZkYWRjNWZlZGQ3ZTJjODNmIGxlZ2FjeS10cnVuaworMjI4NDYgMDRmZDM4NjljNmJiZWIyMDVkMTE5MWQ3MTFkZDk2Yzc1YmYyZTJjMSBsZWdhY3ktdHJ1bmsKKzIyODQ3IDkwNGIyZjk4MTFhMjkxMmVkZDVhZjU1NmExOTEzNTU0NGNkMGRlOGYgbGVnYWN5LXRydW5rCisyMjg0OCA1ZDk3MzQ0OGU2OTFkZjMzODU0ZWI0NmNmMjFlN2FlMjFlYTVlMWNmIGxlZ2FjeS10cnVuaworMjI4NDkgNGFjOWE0NGM3ZTQ3OGM5ZjliOGYxZmFhOTYyYTkwMzcwZjNhOTE3MSBsZWdhY3ktdHJ1bmsKKzIyODUwIDEwYmY0YmVkNTA5NmY4NGIxNzMxNGRlMDUwYTdhZTk2NmI5NWM5NjYgbGVnYWN5LXRydW5rCisyMjg1MSA2ZDVhYzNjNDM0MTYzNGY2MTQ2ZDJhYjlkMjJiN2ZjNzEzNjU3MjNmIGxlZ2FjeS10cnVuaworMjI4NTIgNDNmZTkzNzdlMmNmNjAzNjU2ZDUxNGIzOWMyYjI4OWM2Y2UxZjgxOSBsZWdhY3ktdHJ1bmsKKzIyODUzIDZiZWJhOGI2ZjYwYWRkOTZiMGE2ZWQ4OTUzZDBhMDNhODQ2MWU5ZWEgbGVnYWN5LXRydW5rCisyMjg1NCBiNGU5MTg2MTJkYzk3NTBiZWUzOGQxYTE3OTc2YTc2NzQ0MWU3MjJiIGxlZ2FjeS10cnVuaworMjI4NTUgYzc3M2RhYTQ0ODQwNmU4Yzk0ZGQ5ZGI0YWY2NmRmZjMyOWYzMjgxYSBsZWdhY3ktdHJ1bmsKKzIyODU2IDhmMDM1ODAwYTM3M2Q3NmM5OTY2ZmQ3MmZmMDc2YzNjNjhiZmMyY2QgbGVnYWN5LXRydW5rCisyMjg1NyBjMzk2YWZlZjFhYTkyMzI5YTQxZTcwODMxZDRlOWQyMzM1ZTI0NTBlIGxlZ2FjeS10cnVuaworMjI4NTggZjdjZjg5NjFjNjY3OGU0MGUzZDU0ZTMwZDRmNmM2OTI3MTZiNzY1NCBsZWdhY3ktdHJ1bmsKKzIyODU5IGY0YTg5OWU3ZWM5M2FmMDU2OGI2YjI2MjdhN2U2YTc3NmNlMTU4MjggbGVnYWN5LXRydW5rCisyMjg2MCAyNTNhYWExZWRjYmQxODA1M2IyYWIxNGNiMmMwYjhkNjhmY2E5ZGRlIGxlZ2FjeS10cnVuaworMjI4NjEgMzM3YjUzNjc5YzczNDg5ZDk1MjhlMTE0YTE2ZDY4OGU2MjQ4MzJlZSBsZWdhY3ktdHJ1bmsKKzIyODYyIGI3MzAxMDdkYmQxMzc1MmEwZmM5NzczMDE1MGZkMDA1MDhjMjk4MTIgbGVnYWN5LXRydW5rCisyMjg2MyBhODg1ZDg3NjFiZDI5MDUwMGY0YWFmZDQ3ZDdhZDlkODhiNTQzODljIGxlZ2FjeS10cnVuaworMjI4NjQgNTY2M2I4ODNlYTVkOTk5YjYxODQ3NmU4YjgwYjdhMDNjYTgzZTE5NyBsZWdhY3ktdHJ1bmsKKzIyODY1IGI3MDZjMDI3YzNjMGNhMTQyNWQ0OTE2MjEwOTNjZDM4M2QwYjBkMjkgbGVnYWN5LXRydW5rCisyMjg2NiAwYmVjNjk5NzgzZDAwOWJkYzJhMzRmODJiNjYxYWY1NTU5ZmQ4NzVhIGxlZ2FjeS10cnVuaworMjI4NjcgMWFjMTEwZTkwNWMyZjI1ZTRhNDk1YTljYmEwMGIwYjQwM2JiNjJkNyBsZWdhY3ktdHJ1bmsKKzIyODY4IDM4YTZkZGZmODY2ZjE3ODZlNTY0NGUyMDU1MzhjMDRiYzBmMDM2YWUgbGVnYWN5LXRydW5rCisyMjg2OSAwZjUxNDY1ZjlmMzM0MGM2OWQxMjY0MzM1MTM1NTQyNjA3ZTBmOTJlIGxlZ2FjeS10cnVuaworMjI4NzAgZDEwNjUzZTcxY2ZlMDQyMjA1YzM2ODBiYjI4N2JjZWRhZDBiZDYzMiBsZWdhY3ktdHJ1bmsKKzIyODcxIGYwOWJlNjQxYzdhM2ExYjE5MmRkZDJhY2U3Y2YwMWJjNmZmOTU4ODYgbGVnYWN5LXRydW5rCisyMjg3MiA1NDUwODBlMzA2MjdjZGNiMGVjZWMwNDAxMzgwMjI4MmYyOTFiNzhiIGxlZ2FjeS10cnVuaworMjI4NzMgZWYyY2Y5OTQzYWNkYTdlZWQyYzQyYzdkMGJjNzkyNzA1MWYyNDg3NyBsZWdhY3ktdHJ1bmsKKzIyODc0IDQzY2QwYjRlNzI2MWZkODEwZjhmM2I5OTFkMzZlMjRhMDgzZjI3YzYgbGVnYWN5LXRydW5rCisyMjg3NSBhZTA1NmYxMTQ5NzQ5NjU1M2U4ODk3ZDNiYjIyOThmZDQwMjIzMDAwIGxlZ2FjeS10cnVuaworMjI4NzYgYWQwY2NlNGE1ZGUxZjc4YTIwOTNmYWJjY2JmM2UxOTM2ZmFmYTM2ZCBsZWdhY3ktdHJ1bmsKKzIyODc3IDIwZmI3NTkxZjg4NTU5YzBhNjk2NTUyMDIwNDkyNjI0OWVkZTVhYzEgbGVnYWN5LXRydW5rCisyMjg3OCBjMGE0NDgyOWJjZDVmZjI2MTE1ZjFiOTVhNzc3Y2I0MDFkN2UyZjMwIGxlZ2FjeS10cnVuaworMjI4NzkgY2YxOTE5ZWE5NGMyOGEyZjFkM2Q5ODQwYzg2YjY0N2M4NzNjMTI2OCBsZWdhY3ktdHJ1bmsKKzIyODgwIGY1Y2RlN2VlYjZkNzdkYTY5ZmJmNTg3M2M1NjAwM2NjYjgwYjUwMzkgbGVnYWN5LXRydW5rCisyMjg4MSA3MWQ0NWYzMTRkOTBhZTM1MmVmMTZlMzgyOWIzM2E4ZDMwOTU0YTIxIGxlZ2FjeS10cnVuaworMjI4ODIgMDhhYmVlMmEzOThlZmE1NGVmNDZhOThkNDYxOTU1OTY1NWQwYzE0NCBsZWdhY3ktdHJ1bmsKKzIyODgzIDQwZmVhZWRiNzg2N2UzNGM3NzhmNmY3YmNiZjBkOGJmMjJiZGM0YmQgbGVnYWN5LXRydW5rCisyMjg4NCA2MGYyOTBhN2VhZThjMTQ4OWIzZjdkODI2YTk2ODEyZTJjZWE1Yzk2IGxlZ2FjeS10cnVuaworMjI4ODUgZjRhZjI3Y2IyNjMyNDBhMGEyMWUyZTI3NDc1ZWQ4NDdlMWNhY2MyMyBsZWdhY3ktdHJ1bmsKKzIyODg2IGM5NjQ3ZmE3OGYwNTJmM2VmMGI1M2JhZWVmMzUwMWYwNTYxMDEyMzYgbGVnYWN5LXRydW5rCisyMjg4NyBlMDNjZTJkNjU1ODU1N2EyOTQyZGFlMjYyODA4NjljZTJkZTFkYzljIGxlZ2FjeS10cnVuaworMjI4ODggYjFiMDQ3OWM5MTA2ZDVlZDczYWZmZmM1MWJlNmExNTk0YzJjYzliNiBsZWdhY3ktdHJ1bmsKKzIyODg5IDkyZGY2ODQ1MTIwZDY0NjE4Mzc5ZWZjOWQ2Nzc1NGRmYThkNTQ0YTEgbGVnYWN5LXRydW5rCisyMjg5MCBkNTViNzVhYzJmYjQ4ODMxNjVmNDg1MDAxOTc1ZmNmNThlZGE0ZGRkIGxlZ2FjeS10cnVuaworMjI4OTEgNzk3NDA5ZDk3MDIyNDVhMzliMzdjNDE1YTg4YWRlZmM2NzU2MGIxMSBsZWdhY3ktdHJ1bmsKKzIyODkyIDAxZGFlOGEwM2Y4NjM3NjIwNmM4NGZkNmJlYWRhNmZhZjExMzc4ZDIgbGVnYWN5LXRydW5rCisyMjg5MyBhM2MwNDVmYTQ5ZjUwY2E5NTdlMzg1OWFiMDc3NWQ5YjA3OGQ5Y2MyIGxlZ2FjeS10cnVuaworMjI4OTQgYTRmZWVmY2UwY2U4NDk2OWFjNDk1NzRmMWU3MjEwNzIzM2ZmNjFlYSBsZWdhY3ktdHJ1bmsKKzIyODk1IGQ0YjNiOGUyMzU0NGI4ZjRkZWY4MmI3NmE5Yjg5MGM0ZjQ2YTA4ZGMgbGVnYWN5LXRydW5rCisyMjg5NiBiMzllNTZkZmUzNWQyYjk5NDRlNDIxZmYxZGY2OGU4YjEyY2ViNjIxIGxlZ2FjeS10cnVuaworMjI4OTcgZGUwZjAzNTIwNWVmOWEzNDdjM2I0Njc2Yzg4NTc4ZGUyY2FjNTkzOCBsZWdhY3ktdHJ1bmsKKzIyODk4IDc5ZTIzMjdlNTFkNjEzNmQ4ZDIyZjZlZjM1ZGVmYTI4Yzk1Y2ZlMGEgbGVnYWN5LXRydW5rCisyMjg5OSA2YjgxZjllOWQ4NjAwYTI4NGZlYTNjMmU4MzhlMWVlZDNmMDNiYWQ4IGxlZ2FjeS10cnVuaworMjI5MDAgOTJkMGZhYzhhMTY5MzRmNTllMjIyNTg3YzUxYjMzMjZlNjhjMjE0ZSBsZWdhY3ktdHJ1bmsKKzIyOTAxIDU3NWY1MGNlY2ViYTE4MzFhOTg5MjBmNDIzN2ZjODAxZDI0NTQ5ZGQgbGVnYWN5LXRydW5rCisyMjkwMiA5Mzc5NjU1MTZiNTQ3MmYyOWY0ZjQ1NjhiOTgyZDliZDBlNDU1NTg4IGxlZ2FjeS10cnVuaworMjI5MDMgMmZhNjE1ZGZjNDY0YzgwZTI2MzQwYTY0YmE4OGI2MGQ2ZGMxZGQzOCBsZWdhY3ktdHJ1bmsKKzIyOTA0IDgwYmViYzUzODlmZDBkMThiZjU3MTVjMTFiYzRiNjQ3M2EwMjk4NmQgbGVnYWN5LXRydW5rCisyMjkwNSBiNGVkY2U5ZDZlOTkwZWM0ZTkxNTYzZmRhNmY2MThhOWQ1NzYzOTZmIGxlZ2FjeS10cnVuaworMjI5MDYgODRiZTBjYWI2M2E4ODRiNDZiMGEyNzZmZTdjYWRkZjI4NTVmZGZlZSBsZWdhY3ktdHJ1bmsKKzIyOTA3IDc4MGU3NDE1ODVlMTBlMjZjNTZkMTFmOGJmYzFiYjM2N2FmODY4MzEgbGVnYWN5LXRydW5rCisyMjkwOCA4ZjhlOTcxMTMyYjg2NzM4NDY1NDI3MTQzMGE0NzI2NGVlMjlkMTkxIGxlZ2FjeS10cnVuaworMjI5MDkgZWM3YTJhNmNkYmU5YzQ4NmE3YTY4OTE0YjgzMGY2NWIwZjAwMzU3YSBsZWdhY3ktdHJ1bmsKKzIyOTEwIDA4YzNjOWVkZDk5YmIwYmExZTQ4MDgxYWJjNDBmZThjMDc0N2YyYWYgbGVnYWN5LXRydW5rCisyMjkxMSBjZjY1ZWJmODc1NjA5MTMxZThjOTNlNjMyYzY1ZDEzOGE4NWQ1NWQ5IGxlZ2FjeS10cnVuaworMjI5MTIgOGQzNThjMjRkY2ZiYjEwNDNhOTcwYThmYTExYjdkZGMxNmVmYjk4MyBsZWdhY3ktdHJ1bmsKKzIyOTEzIGNjNjA0YjcxMDM2YzRmZjhjMmQyMTNiNDhlYmNjODYyNzU5MDljNzggbGVnYWN5LXRydW5rCisyMjkxNCA4N2U4ZmMwYTk4NjJiNTUzOWM3ZjJhNmYyN2IxNjEzYzRmNDk2Nzc5IGxlZ2FjeS10cnVuaworMjI5MTUgNzhjZmI5OTNmMjc0MTkwNmQ3NDE4N2YwZjM2NTI4NGQ5MTdjNjkyZCBsZWdhY3ktdHJ1bmsKKzIyOTE2IDdkZjMwMGQyODRjNmFhMDIzZjNiM2ZmMjUwODMwODVjZTA2ODhhZjYgbGVnYWN5LXRydW5rCisyMjkxNyAzNTg0NTUwYTYyMmFkNTlhNjkyZWFlODI5MmFlMTljYmJjN2ZkNDBhIGxlZ2FjeS10cnVuaworMjI5MTggYjMyNzEyOTdiOTg0ZWE0OWI2OTM2MTRkZWFjYjg0YjU3NzhjYmJjNyBsZWdhY3ktdHJ1bmsKKzIyOTE5IDcxNTI0NDEwOGZhYTBmNzcxOGJlOWI1ODYwZmNiMmRlZjJiNWM2OWUgbGVnYWN5LXRydW5rCisyMjkyMCA2ODVkY2FlNWMxMjM3MDI5ODM2YjllYjM5ZTEzNjc0NTdhMjA5Mjg5IGxlZ2FjeS10cnVuaworMjI5MjEgYzc2OGQzMTkxZGYxYzFlYmVhNWI5ZDE4NzZhZmYxNjhkMWJlNmZmNiBsZWdhY3ktdHJ1bmsKKzIyOTIyIDkxNTMzNjc1ZDZjYmYwYWQ1ZjI3NTE3NTFkMTU3MDA1NTQ1ZTU0NjcgbGVnYWN5LXRydW5rCisyMjkyMyA4MmRiOWE5MDA2YWM1ZWUzY2ViZjM3M2FhYWZhNWQ2NGFlNzhkZDJjIGxlZ2FjeS10cnVuaworMjI5MjQgNjk1ODc4NGIxY2VmMDE1Y2RkZmUyMzJiODg1NmE4OGZiOTk1YzQ0YSBsZWdhY3ktdHJ1bmsKKzIyOTI1IDNmODRiMjAwMGY2MmI0MTQ4ZmY3YTRmZjYyMjc0MDY4MDEzYTE0YzcgbGVnYWN5LXRydW5rCisyMjkyNiA3ZGU0ZTZiOGQxOTljMGU0YTQ1MmRjZWRkMTgzZGRhOTBkNzMzNDBkIGxlZ2FjeS10cnVuaworMjI5MjcgOGRmYjEzYTRlMTc1YzBmMzUxNTYxMzZkYTFkM2M1ODRlMGRlNTc3MCBsZWdhY3ktdHJ1bmsKKzIyOTI4IDhjYmM3NGY1NTg2YjUwNzY3ZDMwZDYyZWYzZWQ2ZTcyNWViMTk4NWYgbGVnYWN5LXRydW5rCisyMjkyOSA3MTRhZWVjYzIzMTYyZjc0N2JhZDFhZmY3ZTJlZWRjYzlmNjNkZWZkIGxlZ2FjeS10cnVuaworMjI5MzAgNmViYzI2MzMzZTZkN2NjMWVhZWUzOGFlNTZkYTRhOTY1NmY2ZjQyNSBsZWdhY3ktdHJ1bmsKKzIyOTMxIDc0OWU0OWM5NDdjMDcxYmU5MDMwYThkODUwYmZkMDM4Y2UzMDU5ZmQgbGVnYWN5LXRydW5rCisyMjkzMiAzNzMxYWQxZDkwMzMzZWQxMWIzODM4NzM1OGIzNzdlN2YxY2UwMmVkIGxlZ2FjeS10cnVuaworMjI5MzMgMzFhNjZjMGM3ZDMwMWU2YTNhZTI1N2FmMTA3ODc1OGQ1ZDQ4NzlmYiBsZWdhY3ktdHJ1bmsKKzIyOTM0IGNmYzVlNTE2MGNmNWRmODI2NTAyMWI3MzkyNDI2NWRmYmI3NDkxNGEgbGVnYWN5LXRydW5rCisyMjkzNSA2YjgyODUzZGYyZWRiNzg2Nzc3ZmIyZGNmMzVmOTdiNmZkNDA1NDk0IGxlZ2FjeS10cnVuaworMjI5MzYgOTMzZTgxMjk3NGMzZWE5MGQ5M2UyZTAyMDQ1NzY2NzE2NGNjMGMxMCBsZWdhY3ktdHJ1bmsKKzIyOTM3IDA0MjE4ZTg1YjE1NmZkNjU4ZjQ3MDBjMDEwMDQzMDBmNGI3MGVkYzAgbGVnYWN5LXRydW5rCisyMjkzOCA2MTdmNWU3MmIwZWM4MzMyZDkyZmQ5NWExNjRjMjQzMWEyMjhiYjg2IGxlZ2FjeS10cnVuaworMjI5MzkgMzcxNmIxMTZmYjMxMzIyNTViNDU3NGNiMTU5MDlmZWFlMzFkNGQxZSBsZWdhY3ktdHJ1bmsKKzIyOTQwIDk4MzBkMDBiODg3ZGZhNDI2ZDBkOTkyMDZiZmRhNDg4ZTdkYjQyNzkgbGVnYWN5LXRydW5rCisyMjk0MSA4NDNkYTk3OTUzODEzMDdmMDE1MjQ3YjFmYzE5ZmNiZTlkNzM0NjQ5IGxlZ2FjeS10cnVuaworMjI5NDIgYmM2YmQzNWY1OTk4ZGY0OWY1ZGM0ZjIyMTAxOTQxNmM2YmU3NzNmYiBsZWdhY3ktdHJ1bmsKKzIyOTQzIDM3MmQ4YzFkMmI2NGUyODhkNjEwMjA3MGNlNjFlOGY1NTYxZDFkYjQgbGVnYWN5LXRydW5rCisyMjk0NCAyYTRlM2M5Mjg1YjU0ZmJlODZiYzg3YzEyYmExZTY3NDIxOTA5ZDZkIGxlZ2FjeS10cnVuaworMjI5NDUgZmJhZjRlNTUyNjNmOTEwMzkzZjlmODdhM2YwZGNlODMxNDkyZGJmMyBsZWdhY3ktdHJ1bmsKKzIyOTQ2IDQ1NjU3Mzc2YjliOGNjOTM0NjM1YmZmNjhmMjNjYTYzYTJlZjc3MzYgbGVnYWN5LXRydW5rCisyMjk0NyBkNmUxYjEwOTE2MDk3MWIzNzI0OGFjMWRjNjJlM2MwNzM0NjNlMmM4IGxlZ2FjeS10cnVuaworMjI5NDggZTIwMmE3NWQ4ODFlMTQ3OTk1YmI0MzY1NTZmNmU3ODY5ZDZlZGE2OSBsZWdhY3ktdHJ1bmsKKzIyOTQ5IDE5MDFmODc1YjdkM2QxZDhkNGYzMDJkMTI3OThiNjJiMWRiODNmYmEgbGVnYWN5LXRydW5rCisyMjk1MCBiN2Y2ZmJjMDg3YTc3ZWFhNzA3NjcxYjI2YmEwZWUxMzNiYmU4NDNhIGxlZ2FjeS10cnVuaworMjI5NTEgNTAwNTU0NWI2NDg3ZjA2YTdlZDY5YWZmYjNkMzIwNDUxYWYyNDQ3OSBsZWdhY3ktdHJ1bmsKKzIyOTUyIDExYjM3M2IwMGYyYWZlMWFlZjA1N2U4Y2YyMzBmODA5NDc0ZDlmN2EgbGVnYWN5LXRydW5rCisyMjk1MyA2ZWFmYzRhNjM1OWE4MGE4ZWUxNTQxZTA3ODY1YWU0NjhiODExMWUxIGxlZ2FjeS10cnVuaworMjI5NTQgMGIwYzg0MDc4ZjkxNjBkYTI2MTVlZDgwZjcwYzNiNDc5YzkwYzQ0YSBsZWdhY3ktdHJ1bmsKKzIyOTU1IDFjOGE5NTBkNjk3MDBlNzViMTQ0M2U4MThiNDc4ZWYwMTEwZDIyMDkgbGVnYWN5LXRydW5rCisyMjk1NiBiZDI1MmIxODMyYTJkYmExODkwODAyZWEwYzM2MTZjNTY1ZDAwOTAyIGxlZ2FjeS10cnVuaworMjI5NTcgYjQ1MjE0MzZlOGY4Zjk5ZDI4MTcyN2EzNzc2NzgzYTU3ZGJhNTNmYiBsZWdhY3ktdHJ1bmsKKzIyOTU4IDk0MzNkZDNjMTk3ZWY0YjFmNmEzZDVhNTk5MmI2NDFiNTA5NjA1ZjUgbGVnYWN5LXRydW5rCisyMjk1OSA0NTBlNWEwZTkyNmI5NDBkYjg5MzlhMTQ3MmI4NzU3ODRjNzI0MDZiIGxlZ2FjeS10cnVuaworMjI5NjAgMGQ5NjE0NWM0NGI4OWY2YTBmZDNiODFkNzI4NjM1ZTYxOTJiNjIwYyBsZWdhY3ktdHJ1bmsKKzIyOTYxIGZiMmQ4M2FhZmY2ODY0NWZlN2Y2ZjJhMTBmNmMxODU0YmIxOTY2NTAgbGVnYWN5LXRydW5rCisyMjk2MiAwMWRlMGE3MDMwNjk4Yzc0YzMyOGU1MTRmNTNiZjJiYTJlNjU2NjY2IGxlZ2FjeS10cnVuaworMjI5NjMgZDE5NjQ4Y2E4NzQ5Y2NjMWE0MjQ5YjE0NTc1MjU5ZGIyNWI4YjVlYyBsZWdhY3ktdHJ1bmsKKzIyOTY0IGNkZmRkNTM1OTQxMWEwOTc0MjkwYjQwNDI5NzdiNzJlZWY0N2EwOGUgbGVnYWN5LXRydW5rCisyMjk2NSBhNjg0YjRjMTAxMjg0M2U5MzFiZTMwMjI3YTY0YWI0NTc5NzEzNTU5IGxlZ2FjeS10cnVuaworMjI5NjYgNzc2NmVhNzI0MzIwOTRmNzlmM2FiZjM0OTM4ZDk2MjhmNDQyNGY1NSBsZWdhY3ktdHJ1bmsKKzIyOTY3IDIxZDJiOWVlZGMyZGUxNzk5NjA0M2M0NTllZjVhMjA0NmVhMzI2NjAgbGVnYWN5LXRydW5rCisyMjk2OCAyYTliYmRiZWZiYjFjOTRmMWQyZmUyMDk2MzE2ZTc5NzE2NjEyYzY2IGxlZ2FjeS10cnVuaworMjI5NjkgYmE5YWFiY2Q4OWUzZGVjZWEyZWU5MmUxZWNkNTc3Nzk5NmQyZmI0MSBsZWdhY3ktdHJ1bmsKKzIyOTcwIDIyNmQ1ZWVmYTQ0YWZkNmI1Y2JjNTZiODY2ODg3YTYwMGQ5OTYzYWMgbGVnYWN5LXRydW5rCisyMjk3MSA1NDg3ZDlkNTNhMGUxZTU1MjEyMWJjOTAwZGI3MzMzMzc1MDk2M2ZmIGxlZ2FjeS10cnVuaworMjI5NzIgZjMwMzZkNGUzYzIyYWY4MTJmMDg5YWFlMTQxMzVmZTFmNzkwY2YyOSBsZWdhY3ktdHJ1bmsKKzIyOTczIDRkMmNiNmVhYTQxMTM4YzlhMDA0MmIyNTNlYjhkMWQ1ZWI1YzA1Y2QgbGVnYWN5LXRydW5rCisyMjk3NCBkZWIwOGFmODlhMzVkNjk4ODQ2MTJkMzJlZjExNDI4OWQwNjYzMDliIGxlZ2FjeS10cnVuaworMjI5NzUgMmU2ZGEyZGQyYWI4MjA3MGI0MTExZjU5YWI0NGZhZjUzNTQ3N2E0OCBsZWdhY3ktdHJ1bmsKKzIyOTc2IDg1ZWIxYzkxMWFlNWMwYzc2NmMwZjc4OGViZjVjZTM4ZjgwMmNkMTkgbGVnYWN5LXRydW5rCisyMjk3NyBiN2RjNTE1OTQ0OGY0OGE3NzMyMmI5MmRlZmRiZDlhMzQyODNiNTYyIGxlZ2FjeS10cnVuaworMjI5NzggMmMxYTk4MzA5OGEwNjRiNDhkOTI1YTI5MzhmNGZjZmIyYzRmOWU1NiBsZWdhY3ktdHJ1bmsKKzIyOTc5IGQ5ZGFhNGE2N2JlMjYyMzg5YTEwYzRmNjIyMTEwZDRhYTE0MzQ2MzIgbGVnYWN5LXRydW5rCisyMjk4MCBmNTZjOTE4MjBmYWUyZDJjYTgzYmQzZmE4MjFkNTZiMGE4NjI3Y2ZhIGxlZ2FjeS10cnVuaworMjI5ODEgMGU0NjQ2YmY4MDQxMTBlMzM3ZWUzODQ5NGE3ZTFlNDlhOTgxMmE0NyBsZWdhY3ktdHJ1bmsKKzIyOTgyIDU2YzU0OWEyNTNhNmU5NGM2ZmM5YTZhMTFhNDc5M2E4ZTliMjkzMjYgbGVnYWN5LXRydW5rCisyMjk4MyA1ZGQyOGFhMmJlNmJmZDAwNDA0MzEyYzBjNjY0MjE1OTIwMDlkNTFlIGxlZ2FjeS10cnVuaworMjI5ODQgOGQyYzc0MzZiOWQyN2Y3ZjMyNWNlNjQ5YjQzMjcwMmNkMzg0ZWEwOSBsZWdhY3ktdHJ1bmsKKzIyOTg1IDhlNmUyNDhkZmRkODY1YmI4YjZjMzIwMjhiNWI0MjYxNzI2ODlhMTMgbGVnYWN5LXRydW5rCisyMjk4NiBhNWVlYjFlNzBmNDFmMmZlODZkZDg1Mjc2MTI4Mjg2N2ZkOTljM2JlIGxlZ2FjeS10cnVuaworMjI5ODcgMmE0NjViMGViNTRlNDIwYWEzZGYyNDc5NmRiZjJlM2YwZWVhMjAwNCBsZWdhY3ktdHJ1bmsKKzIyOTg4IDg1NDE4NzhjZjJlMTNkMjU2MDRmYTk1MDM4YjRiZjhmNGMzYjg3MGEgbGVnYWN5LXRydW5rCisyMjk4OSBmMTQzMGUzMzgyYmJlNGJhZjgyNDJiOGI1ODU5OTgxNjkzYzE3NTljIGxlZ2FjeS10cnVuaworMjI5OTAgZGMwNTliZmI1M2IyMmVjZDY1MTIyODdlOWYwYmJkMjI1NTc4ZTIyZSBsZWdhY3ktdHJ1bmsKKzIyOTkxIDk4ODU2YTRhZWQxMDE3MjZhZTZkMjRiNWFkMDY3ZDAxZDg3MTJjYzEgbGVnYWN5LXRydW5rCisyMjk5MiA3ZmE0MDU5N2RhN2U3ZjkyZTM0ODBmYzY3YmEyMGM1NzU1NDNiMmQwIGxlZ2FjeS10cnVuaworMjI5OTMgYzkzZDdkMDg1N2EyNzZkYmNiMWExMjQzMWQxMTUyY2U0MzRiNWMxOCBsZWdhY3ktdHJ1bmsKKzIyOTk0IGZhMDYyMWU0YWQ4YWM3ZjdmOGQ1NzRjNGZhZTM0YzUzMWFlMzY5YzYgbGVnYWN5LXRydW5rCisyMjk5NSAzNWI2YTFkMGIxZTA1NGI0ZDY0ZTIwNTg5YWY4ZDI0ZmQ4Y2ExNTZjIGxlZ2FjeS10cnVuaworMjI5OTYgM2Q3NmRmYzM0YzU3ZTYzNzU1MjhkODE3NmUwMWJmOGQ1NDIxYmM4MiBsZWdhY3ktdHJ1bmsKKzIyOTk3IGRiYjlkODJjN2NlMzdmZjQyODU3MzA0OWE0ZjI4YWNiYjc5MzQ4MDMgbGVnYWN5LXRydW5rCisyMjk5OCBjMDU4MGQ4YzE5M2UzZTMzZmNiNzhjNTc5NGIzYWE2NDhkMjQ1NThmIGxlZ2FjeS10cnVuaworMjI5OTkgZTFmMWU5ZWJmMDUwMTNhNzA2ZTZmMDc5MTNjNjMyMTU0Y2M5ZmRiMSBsZWdhY3ktdHJ1bmsKKzIzMDAwIDVhN2FjOGMwNjNjY2NmYzBjNmVjMjdhMzA0Y2RkOWY1ZTM0YzBmYzQgbGVnYWN5LXRydW5rCisyMzAwMSBhMWQzOTcwODg1YmRiZWJiZTcwNmFkYjY0OWYxZThhMmI3MDcwMDU2IGxlZ2FjeS10cnVuaworMjMwMDIgY2E3Zjc1NzZkODIzZThjNzBiODZkMDJhNWY4ODgyZGVmMDUxNzI1ZSBsZWdhY3ktdHJ1bmsKKzIzMDAzIDY0YmNlZjE3MDJhZDk3YWUwMTdmZWY2YzA3OWZiNzE4YTFiNmNlOWEgbGVnYWN5LXRydW5rCisyMzAwNCA4ZTg3Y2RkZWQ5NmZiZmU3ZjVhNmU1YzJjNGUzMzQ5ZDVlNzYxNmIzIGxlZ2FjeS10cnVuaworMjMwMDUgOTZkYTk4NWNkZTk4NDI2YWFjNGQzYTFiNWQ0ZGE0OTNhOTA2YWMyMCBsZWdhY3ktdHJ1bmsKKzIzMDA2IDQ0MTc1YmIwYjdiZmM4MDdlZWM2ZGRhOTI5NjBkYmE5ODBkNGExNGQgbGVnYWN5LXRydW5rCisyMzAwNyBkMDkyNjhkMGVhNTI5YjY0OTEzY2UwNGI5YmJiZmJjNTNiMGE3MmI5IGxlZ2FjeS10cnVuaworMjMwMDggOTRkMGYyZWVhMDQ3ZTJlOGIxMjNlMzE5NzUxZGY0ZjEwNzBmNTZkNSBsZWdhY3ktdHJ1bmsKKzIzMDA5IDU3OGVmMzZmOGZkZTBhNDJiNmNiZGQ0YTRiYmU4ZTk4ZDg0YzMyODcgbGVnYWN5LXRydW5rCisyMzAxMCA1ZmNkMGQ0MWE0NDZiZDY1MjUwNzA5NGUwMGY0YThhZTQxNDdkN2JiIGxlZ2FjeS10cnVuaworMjMwMTEgMmJjY2U4YmFiOGJiZThkYmQzNzgyM2M4MjY1NzdhNDBlYTMzMGVjOSBsZWdhY3ktdHJ1bmsKKzIzMDEyIGQ1NDM3OGQzMzM0ZmQ0MjhlMGFhZWM5MTk0MjI4MGNjNGY1MGQxMDkgbGVnYWN5LXRydW5rCisyMzAxMyBkNGY1M2IxZmI0MjQwZGZjMmIzODdjZGVlMGQyNmNjZmRlOTViNTc5IGxlZ2FjeS10cnVuaworMjMwMTQgYTVlYWVmNDdhOWIzMzYwZmY0MjJjN2QzYTZhNDI4MzAyYzkwNDNkOSBsZWdhY3ktdHJ1bmsKKzIzMDE1IDQyZDBiZGU3MzUzM2UxMjQ1YzYzNTMxNDI2YzZmY2IyNWYxZWY0NDAgbGVnYWN5LXRydW5rCisyMzAxNiA0MzI1OTEzMjg0MTAyNDViZDhiNTA2NjE3ZjE0MWIwMThiYTZjZGRlIGxlZ2FjeS10cnVuaworMjMwMTcgMzM1YmYzZWFiOWYxYWRkOWQ5YTVmMDNhODk2NzM3NDg5MDE2ZjVmYiBsZWdhY3ktdHJ1bmsKKzIzMDE4IDZjN2RkOWIzZTUwYjVmMzM2OGQ0MTMyY2IyMzMwMDM5MzMyOGNjZmEgbGVnYWN5LXRydW5rCisyMzAxOSBjNTUyM2IwZjg5ZDU4M2RlZGVkMWVhNzBlMmUwMWIzODczMjI2ZGRkIGxlZ2FjeS10cnVuaworMjMwMjAgZWUxMmMzOGU0NmE2ZmMwMzVjODdhYzAyM2U0OWZlOTQxNjA2Nzc5MSBsZWdhY3ktdHJ1bmsKKzIzMDIxIGIyMzIzODY0NmQxNTZiMmQxNzA5NTQxZGFhYWFmZWI4NzVjOThjNzcgbGVnYWN5LXRydW5rCisyMzAyMiBlNzE0NzE1NmVmMzNlNzRhNDc3YmMwNzEzYTFiYTQwOTkwMjdmZjJlIGxlZ2FjeS10cnVuaworMjMwMjMgMWM2MmI0YTU5N2Y2ZTcyYjA1YzczZGYyZmMxMmZiNWYzN2M1ZWU4MSBsZWdhY3ktdHJ1bmsKKzIzMDI0IDA3YmIwOWRmMzMyNGYxMDIwMWM4ODI5Mjk5Nzk4ZGQ2YTQ2NzM3ODggbGVnYWN5LXRydW5rCisyMzAyNSAxY2M4NGRmY2Q2YmQyNzRmM2I1N2Y0YjM0NjZlZjg5YzBjYWMyNWQyIGxlZ2FjeS10cnVuaworMjMwMjYgN2I3MjJiNmNjNzdiMzFjMjg5ZjI2NTgwMWFlN2FiMzAyM2JjNzg2MiBsZWdhY3ktdHJ1bmsKKzIzMDI3IDlkZTJmN2UxYjZlOGI5YmUzODFiYTEwYWYxMDY5NTM2Mzk3YmM5OGMgbGVnYWN5LXRydW5rCisyMzAyOCAxM2I2NTRjZTYzYTQ3N2JmNmQ2ODVhNWExOGRjYmIxZDIzZGE0OTA5IGxlZ2FjeS10cnVuaworMjMwMjkgMTczMTIyZTVlZGU0MTcyYzQxMWExZThiNjgwYWQ3MDZiNDY4MDk1YyBsZWdhY3ktdHJ1bmsKKzIzMDMwIGM3MzdkMTNkYTkyZDJhZTBhMDYwMzBhNmE5MDhiMjE4OTE1NTU3ZTMgbGVnYWN5LXRydW5rCisyMzAzMiA0YWJmYzE3NjY4NWMzMDJhMjFjMTYwM2M1N2U0YzdiY2M0MzA5NmY0IGxlZ2FjeS10cnVuaworMjMwMzMgZjgxNGVhNmJiNjY3NmI4MjQxOTVjNTEyMDhkZDY2M2E3YzlmZWFlMiBsZWdhY3ktdHJ1bmsKKzIzMDM0IGNhZDkzM2E0NTRmZTYxZDRkZjE4MGFhMmJlMjkzOGYyN2U4ZGM2NmIgbGVnYWN5LXRydW5rCisyMzAzNSA5NGUxNDFlMjBkNjE4ZThlMTMxZjkwYmY3Y2RhYzI2MTFiYWE4OGNhIGxlZ2FjeS10cnVuaworMjMwMzYgMGI1NzcyOTI4NGRmYjRlNmMyMzlmMTZhYjM0OTQxZTE5NDI2ZTA5OCBsZWdhY3ktdHJ1bmsKKzIzMDM3IDkwNzk3MTBlYzIxNjk2ZTM5ODQ2Nzk4MmNiYzYxYzhjOTFiNjk2YzYgcjIyYTMtYnJhbmNoCisyMzAzOSA5NjA0NzRkMTI5YWVkNzM2NWVjNzlhYWViMGEyNmJjYTRkZmU4NjQzIHIyMmEzLWJyYW5jaAorMjMwNDAgYzk3ZGRhMjM4YjM2MjY2MWJhYjc3YmJhOWQwYWMzYTc5YzUyYTIxOSBsZWdhY3ktdHJ1bmsKKzIzMDQxIDNmNjIxNDg5YmU3MjFkYTZlNGFlNTJiY2U0NDY3MjlkZDcwNWI3MjcgcjIyYTMtYnJhbmNoCisyMzA0MiBiMzVhMmJmMGM5ODBhYjQ1M2I0ZGFhNDMxZGQxYTRhOWRjMjdkZjM3IGxlZ2FjeS10cnVuaworMjMwNDMgZTJlOWYxNzIyYzRmYTI5ZjBjZmNlMGZjZGQ4Mzk0MTk1ODcyZTAwZCBsZWdhY3ktdHJ1bmsKKzIzMDQ0IDk1ZWE2NjEyMjMyNTY4OGUyNGI3ZWIxNzE0YWYzMjIzODVmZjU3M2EgbGVnYWN5LXRydW5rCisyMzA0NSA5YzU0YTE2YWM4YjllZGM1MzRkYThhNmQzMjE1ZjQ2YzI4NmUwMmExIGxlZ2FjeS10cnVuaworMjMwNDYgNzAwZmVmZGMwM2QyODVmMzI0ZmFjZTMzYjNhODc4NWZhMmI4MmNmYiBsZWdhY3ktdHJ1bmsKKzIzMDQ3IGMwZjk0YmM1ZmZlODA2ZTc3ODYxZjY5MmJiZDE2MTQ0YTEzOGQ4NzkgcjIyYTMtYnJhbmNoCisyMzA0OCA3NzA5N2E1NWU5NzMxZjA1ZTA0Zjc4ZDVhNTMyNTY5ZDM5ZTliZmU5IHIyMmEzLWJyYW5jaAorMjMwNDkgMDMwODBlMzk1YzllZDBmZWE4NTgzNTZmZTkwMzc1YWViZWZlN2E4ZiByMjJhMy1icmFuY2gKKzIzMDUwIDc4ZTczYjg1MWFhOWRiYTM2NGZlOTFmZmI2MzdkMzQ3OTY4YWM4OTkgcjIyYTMtYnJhbmNoCisyMzA1MSAyODViNzQwYjg0NDE5MmM2N2Y4NDM4MjBjNjI2ZDY0ZWRhY2M2NmEzIHIyMmEzLWJyYW5jaAorMjMwNTIgNDNkYzgyN2RkNzE3Y2FmYmFkNWI0YTQ0NWE3ZjI2NTNmNTFlODEzNSBsZWdhY3ktdHJ1bmsKKzIzMDUzIDA5MWMwMWQwN2Q5ODE0MjdjYTE0YzEyMDg0ZDIyZjk5OGY5ZWM5ZGQgbGVnYWN5LXRydW5rCisyMzA1NCBkNDgwMTRkYmI4NWY2YTlhNWI2ZDJlYzA0NDBjZjVjMzA2MjkyYzA5IGxlZ2FjeS10cnVuaworMjMwNTUgZWQ1NDk0M2NlMjRlMGZlNDQ2ODg4Zjk1ZjgwNmQxOGQ5NmNjNDc2MSBsZWdhY3ktdHJ1bmsKKzIzMDU2IGZlMjI5NzI3YTQwY2ZkNDlkYjQxOTYzYmM1MWFhZTMyY2Y2Mzc3YTkgbGVnYWN5LXRydW5rCisyMzA1NyBiNDdkMjk2OTljZDI5OGIxYjJiNDMyNmY4NDU1M2JlNjk1ZGEzOTE4IGxlZ2FjeS10cnVuaworMjMwNTggMzJjZmNlNGQ4M2RjMDYwNDgwYjkxZmI0OGE0N2JjNDhiZWEzZTg0MiBsZWdhY3ktdHJ1bmsKKzIzMDU5IDkwMzFhYWIyN2VhZWRkMmE1MGI0YjNmNDM1MWUwM2QwZjc4OGM1YzkgbGVnYWN5LXRydW5rCisyMzA2MCA1NjAxNTVlNzUwODc4YzJkZjAwMGQ5YWY1NzUwNjkxZWVlMDJhM2ZlIGxlZ2FjeS10cnVuaworMjMwNjEgOGNhYzVlYjcwM2ZkODQ2NWRjMjQwOWVmY2E5NjZlNDU1NWE1YzI4ZiBsZWdhY3ktdHJ1bmsKKzIzMDYyIDA4NmZmYWZhZWQ1NTI1OTkwZjU0ODc1YTBhZGEzZTA0N2EyMDA1MDkgbGVnYWN5LXRydW5rCisyMzA2MyAwNTg0YzkxMzI1MjVhNTg4ZTA1NDQ2MmM3NGZkOGE2ZWIwMmY5ODlhIGxlZ2FjeS10cnVuaworMjMwNjQgNzlhMzFiYTg3M2EzNDNkZDk3NTM4YWUwNGUyYmY0MmJjY2NjMWQ1YyBsZWdhY3ktdHJ1bmsKKzIzMDY1IGNlNTdmZmY5Mzk2MjlkMGNhYmU4MTMxZWExMzA4NTA4OWVkYzMzNmMgbGVnYWN5LXRydW5rCisyMzA2NiAzOGMxMmZhZjYxMmFhNTg5YzgwOTkwNGVlNDA3ODc1MTExNTYxODUzIGxlZ2FjeS10cnVuaworMjMwNjYgMDg3OTZhMTM3ZjFhZGEyNDYyZjdhMzE3NzMwNmRmNWY2N2E3NjdlMSBsZWdhY3ktdHJ1bmsKKzIzMDY4IDcwNDExZWJhMjI1YjFhNTFmN2NjM2E3ZjI2OGVlOTZmNWY3NTNiZWMgbGVnYWN5LXRydW5rCisyMzA2OSBkYzg3ZDkxZDBkZmQ2ODVlODU0NGUxZTYyZTQ3ZGRiNDc0N2I3ZTg1IGxlZ2FjeS10cnVuaworMjMwNzAgOGQ1ODVkODIyZjlkMGRiMWNjOTEwYTgyZDU1YTJjMDMwZjQ4ZTczZSBsZWdhY3ktdHJ1bmsKKzIzMDcxIDBjYmIwNjBkYTJjMzRiY2QwOTRlZjVhMWJiMTkyZDA5OThjMzVhZmYgbGVnYWN5LXRydW5rCisyMzA3MiBiNzM5NjI4N2NmNjViOTcyNmMyNDg1MTk3OTI3OWY1ZDc3MGEwMWFjIGxlZ2FjeS10cnVuaworMjMwNzMgNmIxYmUxNGQ3NjUwMzI0OTAzNzVkMjAwZTg0NDRlYzFjMWRhMzkwMiBsZWdhY3ktdHJ1bmsKKzIzMDc0IDUzZTBjYWUzY2Y2Y2QwOTMxYjZlN2Q3ZThiNzgyNjYxY2U2NDViMGIgbGVnYWN5LXRydW5rCisyMzA3NSBmZTVlYzFhM2E3ZTBmNzMwYjA3YTFkNjU5Y2MyYmE0ZWQyY2Y5ZTYwIGxlZ2FjeS10cnVuaworMjMwNzYgM2Y3M2E4YmY3NmY3Yzk5YmE5NmYxNjhlNDZjYWIxZTI3Zjk1NDI5MyBsZWdhY3ktdHJ1bmsKKzIzMDc3IDNkYzMxNTQwOTk2ODE0MmMwZDZkNTZkNTExYmUzZGRhYjU0M2MzNzYgbGVnYWN5LXRydW5rCisyMzA3OCA2ZTU3ZGMzMDU1NTEwOGE2ZmMxODMzNGExYTJkODAxNmNkYzAyZTg2IGxlZ2FjeS10cnVuaworMjMwNzkgMzcyMTQ5Nzc5MjQwNjY5Zjg0NzUzMTJiYmI4ODlkM2Q5ZDViZTMxNyBsZWdhY3ktdHJ1bmsKKzIzMDgwIDkxOTUzMmM1MGExNzU5Yjg5NGRiOTVmMDEwNTUzNGI0MWQxYjVhMDEgbGVnYWN5LXRydW5rCisyMzA4MSA4ZWY0NTY5NDliNzYyNDZhZWU4NGM2ODU1MmQ5NWU0MzVjM2UxN2I4IGxlZ2FjeS10cnVuaworMjMwODIgMzllZWFiNjg5ZDA2N2IwOWNhNWZkYjM4MDliMWRhNzMxOTRjMTc1OCBsZWdhY3ktdHJ1bmsKKzIzMDgzIDViMjhkN2RjMzAwNjI1YjU4M2YyZGYxNjJkODgzMzE4ZGYzODU3YjEgbGVnYWN5LXRydW5rCisyMzA4NCBiYmFlYTUzYWMwODdmNTg2NTc4MmQ1MDU4MGY1OTJmOTRiZGNmOWM4IGxlZ2FjeS10cnVuaworMjMwODUgZTQxOTA2MGUxM2M4ZDQ0MTNmMGQ3YTZkYTRjMmNmYWY1OWEwMzkwNCBsZWdhY3ktdHJ1bmsKKzIzMDg2IDEzNTlmYWM2MTdmMWJiNDdiODY2ZjA2YTU5NTRjZjA5NWNhNTRjZGQgbGVnYWN5LXRydW5rCisyMzA4NyAwMGQ4MDk0N2Q4MTc5Zjg4OWEwYzc4MmE4YjYzMTAyMzVhZjAwOThlIGxlZ2FjeS10cnVuaworMjMwODggZjQ0NjA2YjI0MmM1OTExMTQwNzkxNjE0MjY5ODk2YTg1ZjJlMTk4NSBsZWdhY3ktdHJ1bmsKKzIzMDg5IDUzMjUwY2IxMDZlYjQ3MWI3NDQ4M2FiNjgxZTY2ZDgyMjVmMTM0OTEgbGVnYWN5LXRydW5rCisyMzA5MCA5Y2YxMzM4ZmQ4ZDk4NTAwMjIyOWRiZWIxNGIzNjE5YmMzNWQ5M2MzIGxlZ2FjeS10cnVuaworMjMwOTEgNTQyMGU3ZDM0OGE0NGM2MzFiOGMzNWVjOWJiNTU2NDM0MDFmYmRkMiBsZWdhY3ktdHJ1bmsKKzIzMDkyIDUxNThlNDc4OTQ1OTIxODEwZTBkNjY5MzZjZjEyNjk5Y2IwNmE3OWEgbGVnYWN5LXRydW5rCisyMzA5MyBjMTU5MjBjMmNmNmNjYjlmZTk4ODQ0ODRkNDAyM2Y2ZDQyYzhlZDEzIGxlZ2FjeS10cnVuaworMjMwOTQgMTBmNTkyN2RiZjA1ZDA4OWRjNmI2YjMwMjYwNmY1YzU1ZTQ0MTNlNyBsZWdhY3ktdHJ1bmsKKzIzMDk1IDM3Nzc0NmEzODk3MjE5OThjNDFiOWRiNDk0Nzk4NzE4ZmM5OTZmYTAgbGVnYWN5LXRydW5rCisyMzA5NiBkOGRkNzVlM2IzMDQ2NWZiMWU1NzNiNjkwOGJkZmZhOGIwNTVmZTZjIGxlZ2FjeS10cnVuaworMjMwOTcgMjA5MjRhNzBmYTFiYmM2NDczYTgyYTc3MjQ2NzYwYmQ4YTY0ODQ5NiBsZWdhY3ktdHJ1bmsKKzIzMDk4IDZmZjdlZTg0ZDVhMTU4MzVkOWM2MTRiYzdlMGE5N2RiMTg2YjNmNmMgbGVnYWN5LXRydW5rCisyMzA5OSA5ZTRkMWE2MzA3ZjYzODU1NTI1YjMwYjcwOWUzMGY4ZjBjM2UzZDc0IGxlZ2FjeS10cnVuaworMjMxMDAgN2E5ODBjOThjOGFlZmZkM2YyMmUzYzkwMTdjODQyYzdiNDBmZDk3NSBsZWdhY3ktdHJ1bmsKKzIzMTAxIDY2MmUyMmY5OTYzOWY1MDc0ZTJjODRlODQ0Y2UyOWNhZmE4MGQzMTIgbGVnYWN5LXRydW5rCisyMzEwMiBjNWMyNDFiZWY4OGQzYjA2NmY0YjhmYTFmYTA5N2MyYzJkMDg5NWI0IGxlZ2FjeS10cnVuaworMjMxMDMgOGFmNzRmMDM1OGFjMzlhOWJjZDA5NWIwMWI0YTYyZTQyOTQ2ZTUyNyBsZWdhY3ktdHJ1bmsKKzIzMTA0IGJmMDIwMmRhYzQ0MTcxNjBiZWI3NTUxZmU3ZWZkMjQ5ZGYyNGI2YzggbGVnYWN5LXRydW5rCisyMzEwNSAyYjU4MWY0YzY5YjRmMjA5NGUzZjEwZTIzOGYzMTcyNGUyM2JmOTAwIGxlZ2FjeS10cnVuaworMjMxMDYgZjNmNjk0MTExZWEwODE2MGI0N2EzNjEyNGQ5MWU4YjA4ZDkzOWQzMCBsZWdhY3ktdHJ1bmsKKzIzMTA3IDVlNzliZWQzNDI2ZjkzZGYzMzZmZDZhNzdlZTBkMTlhOTA3OTFhOTAgbGVnYWN5LXRydW5rCisyMzEwOCA5ODMwMzIzZjVmOGViMmU1OGJhNmVhNWE2NzhiZDYzMzkzMjczM2EwIGxlZ2FjeS10cnVuaworMjMxMDkgNDNlZDhhMzQ1ZjRkODMzOTFkMzg1ZTVjZDdmMjhmMzcwNGM5YzcwYyBsZWdhY3ktdHJ1bmsKKzIzMTEwIDU1NjhiMzIwOTE0ZjZkYjk1NzQyMzA3ZjgzNzIxMzNiZTQxMGUzZTcgbGVnYWN5LXRydW5rCisyMzExMSA0MTQxM2M3ODM4MzY3OTM3Mzk2MjBlNmQ4ZmFlYWQzNDJiYTBlNzc5IGxlZ2FjeS10cnVuaworMjMxMTIgOWE1YmJmODQ1YzYzM2VjN2ExZTY1YzU4Y2VmMTYxYTEwYzQ0NzhjZCBsZWdhY3ktdHJ1bmsKKzIzMTEzIDg3M2JlOGUzNDYyYmVlNjdiYWI1M2M3ZjhiZjgyOWVjMTU4Y2E1NmUgbGVnYWN5LXRydW5rCisyMzExNCA1ODcxZTBhYTAyMWI4NTBjY2Q5ZWM5ZGNjYTE5YjEyMzYxMGE2ZTYwIGxlZ2FjeS10cnVuaworMjMxMTUgMmE4MDliM2QwM2U5NGJmZjYwNjZkM2QyYTZlZTdjOWNiYTEzOTgzOSBsZWdhY3ktdHJ1bmsKKzIzMTE2IGQ5OTcwZDYzMTg3ODBiOTg4ZjUzNTRlMzkwYWFmOTBkMjA3MGM3ZTggbGVnYWN5LXRydW5rCisyMzExNyAzNmNhMTZkYzM1YjlkOTk5ZGYwNGFjZWEzMDE1NzgwYjUzMTYyNDBmIGxlZ2FjeS10cnVuaworMjMxMTggNjc2Mjk4YzBjNzYyOTYzNDg4NzhjMGZlMDcyZmQ0Y2QxNTA4YzEzYyBsZWdhY3ktdHJ1bmsKKzIzMTE5IDMwNDY1MmZmYzZhYzYwMzU0ZjlkYzczYTEzM2U0ODA4MDQxYzU4MTUgbGVnYWN5LXRydW5rCisyMzEyMCBmMmEzMDA5YjUyOGU5M2U1YzA2M2NhNTQ2ZTJlNzVhM2JiODhkZTYyIGxlZ2FjeS10cnVuaworMjMxMjEgYTM0OTkxYjkxMDA4NjE5Y2JjN2UwNWYwNWJiOGVmMGJiZjgyMDRjMCBsZWdhY3ktdHJ1bmsKKzIzMTIyIDU3ODA3MjQ0NzBlZWI0ZTdhMGJkNzdlMWUwM2Y2YmIwMWU0MjFlNmQgbGVnYWN5LXRydW5rCisyMzEyMyBhZjk4MjgyZTkyNzdiN2NkY2E4NjE5Yjc2OWNiOWU2ZjRhNDg5NGI2IGxlZ2FjeS10cnVuaworMjMxMjQgZGY0OTM2NDZlYzRkY2Q5ZTg2YjEzM2UyM2E5ODZhMGY3MDg2NWI1MyBsZWdhY3ktdHJ1bmsKKzIzMTI1IGU5MWI5OTEzODk4NWFlOTUxNThmYjhhNDEzMWVmZjg0MGViNjk2NTggbGVnYWN5LXRydW5rCisyMzEyNiAxODA4NmM5MTNlZDVjNTEzMWIyNGFlMDkzMjZlZmM5NGJkOGU0OGViIGxlZ2FjeS10cnVuaworMjMxMjcgNTEzNjMzNDhkY2ZhYjdiMDJmN2QwZjQ0YmI3MzU1NTBkODU2MGJmZSBsZWdhY3ktdHJ1bmsKKzIzMTI4IGExOWVlYTQxNjY4ZmNmZmEwMGVmMTJiYjQwODA1Y2I3YmIxOTExM2MgbGVnYWN5LXRydW5rCisyMzEyOSBlZDNlNTI5ZmJlNDc5MWM4YWJlOWQ0MmY4MDY1NmI4ODUzODNjNDU0IGxlZ2FjeS10cnVuaworMjMxMzAgNzBiZGY4NDg2MmFkMWNiMzM0M2Y4ZjUzYTQ0NGViODY3YmZjZjYyZiBsZWdhY3ktdHJ1bmsKKzIzMTMxIGI4N2MwNTg2MjgxNTU5NjcyZWM0ZGI4OTdlYTg1NWYyNjQ4YWUwOGQgbGVnYWN5LXRydW5rCisyMzEzMiA2MmQzMWVjNDNkZjY2MzQ5N2Q0MmM4ZDczYjFmMWYxZTI2YjA5NDlmIGxlZ2FjeS10cnVuaworMjMxMzMgY2MxNDZlZTUyODk3NWI1MjczYWNkODZjMWY1N2YwODU1ZDVhYzA0YiBsZWdhY3ktdHJ1bmsKKzIzMTM0IGJjNTA1ODFiM2Q3Y2RlMjc4ZmRjYzA1MGNiYmJiYWZhMWVmNmYzOTYgbGVnYWN5LXRydW5rCisyMzEzNSBkMWNkNGNkNzIyNzFlMDdhNzU3ZmY5MDA0ZDQ4MDBkZjRhM2ViZDJhIGxlZ2FjeS10cnVuaworMjMxMzYgMTZlNGQwOTZmNzg3ZDFhOTUyNDg5MmJiOTFmMTQ3YTM0ZGNjNTQxYSBsZWdhY3ktdHJ1bmsKKzIzMTM3IDk2ZjUzZjg4MzFlZWU0ZDI5MDlmNjhmOGI4NjcyMzViYzZhNWE5NmUgbGVnYWN5LXRydW5rCisyMzEzOCBjOGZlY2UzN2YwMjBiMGU5NjI2MjNmMjg5MDFkZTljMzYxOWY5NDEzIGxlZ2FjeS10cnVuaworMjMxMzkgZGY2NmI0ZGQwYjBkYmI0NDg4YmFjZjZhM2Y2YmE3N2EwZDdmNmM4NSBsZWdhY3ktdHJ1bmsKKzIzMTQwIDcyZTZlYjY1MzMxMjA3YjgxNmUzZWJhNWIwODJiNDQ5MTQ0MmFmNTIgbGVnYWN5LXRydW5rCisyMzE0MSAzYjBkYTEzYWNlNDg1NzIyZWQyZTQ2ODkxNTBhMDIyYzZhZDQ3ZTIxIGxlZ2FjeS10cnVuaworMjMxNDIgYjI4ZmM4YzM2ZTNkZTc4ZjdlMTUxMTkzYzg5MDQ0NGIzYmVkMWMzNSBsZWdhY3ktdHJ1bmsKKzIzMTQzIDJkYTY2Y2U3ZWUyMjk1MTc0NzIwOTM0MTMxMmM5NjRlMTVkOWJiYzQgbGVnYWN5LXRydW5rCisyMzE0NCA3MzMzMTRmY2ZkYWEwYTk1ZWY2YmI3OGQ3ZmVlZDI0ODJjMmVmZjc5IGxlZ2FjeS10cnVuaworMjMxNDUgMzFmZThiM2UyNzZiYWFkZTQ1MDFmNzVkNThmMDdiODRjZDgxMGFhNCBsZWdhY3ktdHJ1bmsKKzIzMTQ2IGMzM2E4NTVjMTI3NDVmODJhOWM4ZDUyZGNmOGQ5YmYyNzJkZTI4MDAgbGVnYWN5LXRydW5rCisyMzE0NyBlOTEzZDc1NzEzZTY0MzI1MTczOWFkNjIxYjg2NjQ1NWEwZmVhMGNiIGxlZ2FjeS10cnVuaworMjMxNDggM2FmMDA2NTAzNjc4YTdjNGVhNjI1NWFiMDVmNWVlMjM0NTY5MGYwOSBsZWdhY3ktdHJ1bmsKKzIzMTQ5IDUxY2M4MjYwNWQzMmRiN2IxNDJmNTUzNjZlOTFkZTZiMWRhNDFmZWYgbGVnYWN5LXRydW5rCisyMzE1MCAxYzQxZmJkMDlkOTNhNjg2MTFjMjBlY2E3YjA4ZDQ3OGNjMDA2N2MwIGxlZ2FjeS10cnVuaworMjMxNTEgMDQ5MWVhNjExYmM0Yjc3M2MxYmI5ZmNhNWI1MGNmYzYwM2ZkYTVlNyBsZWdhY3ktdHJ1bmsKKzIzMTUyIDg0Mzc2MzU2ZmY4OTBlOTAyNzkyMGRkMjI0NmYwZDZkZGE0ZWFlMGUgbGVnYWN5LXRydW5rCisyMzE1MyBmYzQwZDBiNTQwNDM3ZTk4ODczNDI4MzZlMWMzMzlhMmNmZmQ2NGRkIGxlZ2FjeS10cnVuaworMjMxNTQgMWY2MTUyNjMwN2MwMGI2Nzg4YTFhNjk4YmM4OWY0NzA4NTY5NjgxNSBsZWdhY3ktdHJ1bmsKKzIzMTU1IGZmMzc3NDcyZWFjOTQwYjI1ZGExMzEyNDQ2OWUyNzRjNjgyODBmMWQgbGVnYWN5LXRydW5rCisyMzE1NiAwNzgxOGNiY2QzMDI2ODhjYTEyNDE3NTZmYzk5ZWY3YzE5ZWVlNmNhIGxlZ2FjeS10cnVuaworMjMxNTcgZGUzOTk1NmI1NDU4MDQzNjVmMTYyNGE1MmU1MmQyN2I0OWQxMjhkMSBsZWdhY3ktdHJ1bmsKKzIzMTU4IGMwODI5NzE4MjNjZTkxMzA4OGExOThkZjlhOGViYzE5ZDVjZDY4YTQgbGVnYWN5LXRydW5rCisyMzE1OSA1OGQ1MDA5NGJmODA4NDc0MDExZjhiNzRkZDM4MTlhODYzOWFhNzkxIGxlZ2FjeS10cnVuaworMjMxNjAgYTdiYTAwZTNiMGRlMmZkNGJkYzcyOWQzMDM1M2VkYmVjN2YxNWJiZiBsZWdhY3ktdHJ1bmsKKzIzMTYxIGYzOWE5YmU3YzlhZjc0Njg1YzQxMWVhNTc4MzI5MjNhMGNhN2ZiY2QgbGVnYWN5LXRydW5rCisyMzE2MiBkNjhjZmQ4NWU2ZGI5YjVmYmJjODMyZjZkMmM1MzFhMGM5NzMzYmIxIGxlZ2FjeS10cnVuaworMjMxNjMgZDU3YTZjODEzNjU4Y2MwMzAwZjVmNGQzNjlhZWU3MDNkM2NlZDViNiBsZWdhY3ktdHJ1bmsKKzIzMTY0IGEyODhhNTVmOTI5MTUxYmJhZDVlYTJlNmE4ZjQ2NDMwZTZhNzc4MDMgbGVnYWN5LXRydW5rCisyMzE2NSA0OWI3ZTM5ODA4NTNiYzJkNTUzNDdjMWJjZDdlNmRhMmFjMWI4NTQzIGxlZ2FjeS10cnVuaworMjMxNjYgY2JhNDQ5YWI1OTE1NzljOTRmY2QyZDdjMGI1ZmE3N2Y1OTZkMzY4MiBsZWdhY3ktdHJ1bmsKKzIzMTY3IDcxYzg1M2RlZGIwNzI5MWRlZjBiY2U4YzQ2MGFmYzI0Njg4NzcyM2MgbGVnYWN5LXRydW5rCisyMzE2OCBjYTBmNTRkYWNkZDhjNDVmZTVmYmQwYzYwMDg0ZWUwYjA0ZWVkOTM3IGxlZ2FjeS10cnVuaworMjMxNjkgMjAyN2RjMTI0ZWRkYWRiYzllODA0ZWM2Y2YwYTJmNjQyNmNmMmU5ZiBsZWdhY3ktdHJ1bmsKKzIzMTcwIDIyNjNjYjQzZWFhYmJlYTBjZmQ1ZWIxY2UzMTI1NDdiYjZlMjI2MTMgbGVnYWN5LXRydW5rCisyMzE3MSAxYjU1ZDc5YzY5ZDVmZTA0OWQzNTNhNzUzMDMzYWRhYzFhNmY0NjFhIGxlZ2FjeS10cnVuaworMjMxNzIgMjk0YTM4YTE5YjVhOTdlZTVhYWRlMWI4NGNlZGJmMDk1NDViOTY3YSBsZWdhY3ktdHJ1bmsKKzIzMTczIGQ5NmNkYmI0ZDI3YmMxZTE1YzdiNWZkZjhiZWY5NjdkODNkYmFhMTAgbGVnYWN5LXRydW5rCisyMzE3NCA4ZTRkMzViYzY3M2ZmYWQ5ZGIzYzJiOTc0Yjg3ODNkOWUxZTFkZmJmIGxlZ2FjeS10cnVuaworMjMxNzUgNjM5MzAxNTljYTNjNzJhOGI4ZjQ0M2YzNDM5NzNmYWE4YzIyMDA1NyBsZWdhY3ktdHJ1bmsKKzIzMTc2IDE2ZjY0ZDdkYThlMzIxYzIxZGEwNzU2ZmJkN2QxMDY1ZTMyOTQ1MGQgbGVnYWN5LXRydW5rCisyMzE3NyA5N2NmNmRjZDBhZWQyN2E2YmRmYmVhMmFlZmVhMTg4NDYzYmQ0M2M3IGxlZ2FjeS10cnVuaworMjMxNzggY2IzNWQwZjcwNGRlMGI3MGIwNmIxYmJmZTEwMTJiMDNjYzYxY2UyNiBsZWdhY3ktdHJ1bmsKKzIzMTc5IDAxZjY2ZjVkYjMyNjE4NTMxODJkYzRmOThlOTgyZTcyNDZiYmQ4MjggbGVnYWN5LXRydW5rCisyMzE4MCBkZjQwOTg0NGI2NTk3OTNmMzY5ZmFhZGI4NWFjYTk2OGU2OTNkZDQxIGxlZ2FjeS10cnVuaworMjMxODEgY2U0MTRhNmQzMGI0NmU4MzZlY2U2NjFkMjk3MzAwYjQ4MGY0NzQ3MiBsZWdhY3ktdHJ1bmsKKzIzMTgyIDI4OTQ0NTg4NzdjODI5OTM3MTI5MDkxYTJiNTQ2MzA3N2NiYzUzZGEgbGVnYWN5LXRydW5rCisyMzE4MyA2MDQ2ZTk1NDZhNzAyYjYxNTMyMzYxYTkxYzZmY2M5NzRjMDQ5NmQ1IGxlZ2FjeS10cnVuaworMjMxODQgOWJjNzZlMzZiYTU3ZWM4ZjVhM2ZiY2MzMTQ4ZGZlM2I4NTIyZjFiMSBsZWdhY3ktdHJ1bmsKKzIzMTg1IDM2YzA3YTE3MThlOTg5Mjk4ZTYwZDhmMGY0NTdlOGFhYjU3ZTM3OWIgbGVnYWN5LXRydW5rCisyMzE4NiBjMzI3YThhYzlmMmI1ZmQxMDBmMDVmYTQyNjBhZTdkODI4NWRhYmVkIGxlZ2FjeS10cnVuaworMjMxODcgNjIxZWQxMzQ0NWRlNTVmNzlhN2ExMDE3OTZiOWQyM2E1OWVhZGFkMCBsZWdhY3ktdHJ1bmsKKzIzMTg4IGI2Y2YyZjI3ZTQ0ZmFhNTNkYWVkMjUzMzlkMjQzMDdkN2JkNDc5MDUgbGVnYWN5LXRydW5rCisyMzE4OSBmMmYyNWE3MzhmN2YwOTNiNDRjNTI5MmQ1NzY5NjZkY2U4YmNjOTcxIGxlZ2FjeS10cnVuaworMjMxOTAgNjE5YTJkNmI1ZWE5MjE5ZDE3NjQxNTJlM2M1NmExZTk5ZjYwNTI4ZiBsZWdhY3ktdHJ1bmsKKzIzMTkxIDY5NDRmNWI5ZGUwM2RiOWU4NjBhOGI5MWM4ZDQ3ZGE5MTNkN2RkZWYgbGVnYWN5LXRydW5rCisyMzE5MiA4OTZmMmQxZTJmNDZkNzZjMTczNDMzMzQxOWQ5OTQzYTljZmYyNDFjIGxlZ2FjeS10cnVuaworMjMxOTMgZmQ3YTdmODMyMjU4ZDdhOTcyMzhhOWMzMzgyZDRlMTZiYzVkMDg5YyBsZWdhY3ktdHJ1bmsKKzIzMTk0IGFhY2E0ZDNjZjYyYjY3NWJlMDcwYzY3N2EyMzBmODQxNDM4M2Y4ZGUgbGVnYWN5LXRydW5rCisyMzE5NSAzYmY2MjJiYzI3OTIxODE5M2RmMTg4MTcxNTU0NTY5M2EwMjBlNTYwIGxlZ2FjeS10cnVuaworMjMxOTYgMGQ1MzVjODZiZTVmNTJmMGE4NDExYzhkYzFhOWExOTIyZmE0ZWNjMyBsZWdhY3ktdHJ1bmsKKzIzMTk3IDg1MjJiMDIyZjgwYTI5MzVmNjYwMmFjMGU4NDYzYmM1NTJlZGI5ZWQgbGVnYWN5LXRydW5rCisyMzE5OCA2NzczZGNmZTM0YTM2OTFmNTgwZjE5ZTI2MjUyMmM0ZWZjMWI2YTUyIGxlZ2FjeS10cnVuaworMjMxOTkgZDk0MGFmNTI1ODQwOGVkNDhkMGJkOWZjMjQzYTMzMDNjOWFmNzNhMSBsZWdhY3ktdHJ1bmsKKzIzMjAwIGJlNGJhYWZhNGM1MjhkMDYyMzU2NGUzZWE3NTQ1OTBlMWZmOWI2ZTcgbGVnYWN5LXRydW5rCisyMzIwMSA0MTc5OWI3MGE5NmMxZTNjYzExOWVhOTMzYzYyZjlhNTA4ZDkxYjU5IGxlZ2FjeS10cnVuaworMjMyMDIgM2YxOTIyOTkwOTAzNDkyNDBjYTMyZGEwOWNjZmFjNDU4N2MxNTcwMCBsZWdhY3ktdHJ1bmsKKzIzMjAzIGVhZjEyMDNiODVjZmQwODRlMDI3YmI0ZTRhOWE3ZjhiOTNlNmY0YTQgbGVnYWN5LXRydW5rCisyMzIwNCAwNGNlMmE0OGMwYTgzMWE4NGIxYTIyYjU2MDk5ZTg0YjA2YWQxYjg2IGxlZ2FjeS10cnVuaworMjMyMDUgNzYxMzNhNDY1ZTAzOTZmNDhjZGYzY2M5NWQyYzU0NjI2NzVmYjI1YyBsZWdhY3ktdHJ1bmsKKzIzMjA2IDc4OTQ2YTc4NDM1MTIwMmQwNTJkMmZhYjM5YmY0ZmNhOGQ1MmM2MzIgbGVnYWN5LXRydW5rCisyMzIwNyA5NmM0YTNmMDhkY2UyNGRiZGY1ZjcwNTFlMTk5MDBjYmZlZTk4YmYxIGxlZ2FjeS10cnVuaworMjMyMDggMGY5ZGY1NjNiNjVkZTRlMTQ4MjIzMWEzZTRkNDg0YmIxN2UyMTYxZSBsZWdhY3ktdHJ1bmsKKzIzMjA5IDg0YWYxZGQwMTFlZTMzZjdhY2RmOWRlNjY2NWVkZDA4NzJiNzc5MTcgbGVnYWN5LXRydW5rCisyMzIxMCBmMzZhMmQ0MGExZGY2OGFmMzQyMjMzMTcxMTA0NmE3Yzg0ZmYyMzMyIGxlZ2FjeS10cnVuaworMjMyMTEgMzM2NjljODkxNGI0YWUxMjNjM2M5NTg0MjdhOTBkOWNiZjU0MTQ1MSBsZWdhY3ktdHJ1bmsKKzIzMjEyIDkwOThhMzA4YTU3YjA3OGNhMDI2NzQzYTU3MGI3Mjk5YjhhNWJjMDggbGVnYWN5LXRydW5rCisyMzIxMyA2MDgxZDczNjE2N2IwZTY5M2YwNWIzNzllZmMwNzVmNmQwMTU1MTFiIGxlZ2FjeS10cnVuaworMjMyMTQgMDNmM2FiMGM3Mjg2ZGNhMWFlYmQxMzZhZGE3YjY0ZDE3ZDQyOGI2NSBsZWdhY3ktdHJ1bmsKKzIzMjE1IGNhZTNmZjMxYmQ5MTJjMTQzN2RhYjQ2YzgyMTNhOGMzYjU5ZjgzZmMgbGVnYWN5LXRydW5rCisyMzIxNiAwODM3NGE4NTI2ZTIxMDNmZDZjMGI2Y2Q0MjBiMjBkMjFkYzA3YTJlIGxlZ2FjeS10cnVuaworMjMyMTcgY2M1MmIwNWFjOTc5NTQ0MmE3NDc3ZGY4MWNkZjgxMWMzNWE4YzE3ZSBsZWdhY3ktdHJ1bmsKKzIzMjE4IDk2OWUzMDZiNjJmZGU5YmRhNjc4NDg2MzcwYjkzYzc1MTgyMGFmZjQgbGVnYWN5LXRydW5rCisyMzIxOSA0M2U1ZmQ1NGY4Yzk4ZDlhN2RmNWYyOWU1ZDZkOTNkZDhjZjg2OGVlIGxlZ2FjeS10cnVuaworMjMyMjAgODE3NzQ1ZTVhZGZiMzc2ZDE2NTcxOGNkNGI4YzI0MWRlMTk4ODZlMSBsZWdhY3ktdHJ1bmsKKzIzMjIxIDQ4Njg5MzQ2ZThiYmQ2NjcwMmI0YjE3NGM2ZTE0YzM1YTUyZTMwMjEgbGVnYWN5LXRydW5rCisyMzIyMiAwYjUxZTYwN2YzMzM3Zjk0NTcwMjQ0ZDk2OWFkNTU1ZjgzZjE0MzE0IGxlZ2FjeS10cnVuaworMjMyMjMgZTkxMjhlYTQ1Y2RhODIzZTc3OGU1OTAyMDUxNjA5NDA1ZTRmMWNkNyBsZWdhY3ktdHJ1bmsKKzIzMjI0IGIxNDA4YTI4ZDhiZTJiNmYxNjc4OWUzMWM1MTk0MmI0NWNmMzZiNTIgbGVnYWN5LXRydW5rCisyMzIyNSBmNzYxY2FiMjhjMWMxMGY0OTVlOWQxMzI2ZmZhYjliM2JmOGVmYTcwIGxlZ2FjeS10cnVuaworMjMyMjYgZDRjOTY1MzE2NjEwNGY2OWRmZTRiMzcxYzE0MTgyY2E0MjAwZWE4NiBsZWdhY3ktdHJ1bmsKKzIzMjI3IDIwYWRmZWM2MTQ2N2Q1YmM0ZGMyYTIzZjcyMzc4NWFhMDIxYTFjMjcgbGVnYWN5LXRydW5rCisyMzIyOCAwNWY2YjA5ODk5NTMyYTY2MTdiNTZjYzI5YjlkZDBkMmFlYjliOThjIGxlZ2FjeS10cnVuaworMjMyMjkgOGVkYzQ0YmQwYWM3ZjE0M2EzOTA3ZTUzZjg1OGQwMDJiNjYzYzhiNCBsZWdhY3ktdHJ1bmsKKzIzMjMwIDRlNDQ1YTNlMDdjNmI1MzU4YjlmZTFmZjhlYmY0MmYyYjI0NGEyM2YgbGVnYWN5LXRydW5rCisyMzIzMSBkYTAwMTg4ZDUyNzA5YWY2ODlhMzUzZDkwOWZlYzEzMjI4OTU0ZTllIGxlZ2FjeS10cnVuaworMjMyMzIgNjMxM2ZhMzhlOTBlYWRhMzRkNjQwOTIyOTc4MGE5NzFlYmFkZmJmZSBsZWdhY3ktdHJ1bmsKKzIzMjMzIGE5NjBlNjczMDc3ZmM1YjI4MzU1ZTMxZjFmNTQyYWY3MmFmYmM4ZjcgbGVnYWN5LXRydW5rCisyMzIzNCA4ZGNmYWYwZTY1NTliYjZkY2I0MWJhNjk0Y2I4MmIyYWJlYzYwODk0IGxlZ2FjeS10cnVuaworMjMyMzUgOWFiNmFmNjgxNWFmY2I2ZGEwNjA1Y2ZlYmM4YzhiMDkyZDllMTM4ZCBsZWdhY3ktdHJ1bmsKKzIzMjM2IDBmZDk1MjAwYWI2ZWM0ZDdhMDQ5MTYyZjUzMjk0NDJmMWQwNWQyODIgbGVnYWN5LXRydW5rCisyMzIzNyBiZjRiMWIwOGEyYzZmMjI5YTk4ZmRjYjgzNzJkMjgzYmNiOTk4N2RjIGxlZ2FjeS10cnVuaworMjMyMzggZDU2NDZjMGM1MTMwY2MyZjkyZGUwNzFhYzEzOGI4YmU4NzgzNjlhYyBsZWdhY3ktdHJ1bmsKKzIzMjM5IDk4ODEyZDIyMTA3NTE4MDZjZTcyZjYzNjI4MzEyMTA0YmJlMTRhYjEgbGVnYWN5LXRydW5rCisyMzI0MCA3MTJhZmRhZTExMjM5NGMwYTk4OWYwZjE0YTVjYzk1OGM5MDhkMjc4IGxlZ2FjeS10cnVuaworMjMyNDEgZjQyZjg5YjViOGY5YmI0NmEyYzQ1YjE1MGYzZmEzOTJiNGMyYjhiZSBsZWdhY3ktdHJ1bmsKKzIzMjQyIGRiMTZlMjZhMDcxYjgzNDNjMzliOTA0YzllOTFjMGUyNjE5MWEyNDQgbGVnYWN5LXRydW5rCisyMzI0MyBmY2I4NzcwNjlmYWE3MTE3MzJjMDliZjIwODM4MGUyNzg0ZjJmNTgyIGxlZ2FjeS10cnVuaworMjMyNDQgY2VjOWUyNWFmMTIxYjE2NTcxZjgxMDdiMTIyM2Q3MjJjYjFjMWRlNiBsZWdhY3ktdHJ1bmsKKzIzMjQ1IGZmYTFhODdhYzQzYTg4NmVmMjU0ODIyMDIzNTg2YTk1YjhkMDExMWYgbGVnYWN5LXRydW5rCisyMzI0NiA4NzEzNGM3ZjJiYzc3YjgzNjQ1NGI2ZDZhOTczOTE3OTIxMzU3MWVkIGxlZ2FjeS10cnVuaworMjMyNDcgOWQ3Y2E1OTE0ZDFjZWI1NjNiNTBiODNkZWY3ODQ3OGU1MjY1YTgxMyBsZWdhY3ktdHJ1bmsKKzIzMjQ4IDI4ZWYyMmEyNTk4ZTVhYTMxYjE3ZWJlNWEyZTQ3YmQwYjZlNmJkZjMgbGVnYWN5LXRydW5rCisyMzI0OSBhYjZjMTQ4MjJkZTFiZjY1ZWMxMGRjMGU3NjZiZWM3ZmExNjEyODcxIGxlZ2FjeS10cnVuaworMjMyNTAgYjA3Y2I1MWQ3MzFjODcxMTVhMTYyMTU3MGYzYzlmODFjY2M2ODJmZCBsZWdhY3ktdHJ1bmsKKzIzMjUxIDY0NmUyNDcyODg1MjNiOGVjOTBhMGE3NGUyOWYyMjdjMmIxZGYwNGEgbGVnYWN5LXRydW5rCisyMzI1MiA5NDFjMjg2ODYwMzk2ODRmMDIxOGM3OTA0N2I0ZmIwM2E4NmJhM2M5IGxlZ2FjeS10cnVuaworMjMyNTMgOGEwYzk3NDUzZGY0ODM1ZDJmYmNmYmEzMjRkOTIyODI2OTdlMTFhMSBsZWdhY3ktdHJ1bmsKKzIzMjU0IDFmNGUyNjI3YjYyNzAxMWQ0M2IxMDI0M2ZjYTFmNjcwNmQ0NDU4NTkgbGVnYWN5LXRydW5rCisyMzI1NSAzNGFmMTlkY2VmNTkzZjFjYWQwZTY3ZTk5MzNlOTM0ZjgxMzI1NmMyIGxlZ2FjeS10cnVuaworMjMyNTYgN2ZmZTI3NmE2ODU0YzgzMjI3ZDI0ZDU4MDNiZjFkMWJmNjJhNjMwMiBsZWdhY3ktdHJ1bmsKKzIzMjU3IGIwYWZiNjkxMzQwMWFhNzRhZWJjOTYyYWNiYTVmMDg3NWJmMWM1NjYgbGVnYWN5LXRydW5rCisyMzI1OCBjN2NhZjc5ZjUxNDMzZDg2YmM0Yjk1MThiZWQwZmZkNDRlNjRhZjJkIGxlZ2FjeS10cnVuaworMjMyNTkgMzgxNWM4YWQwMmQwMzM0MDkxZTIwN2E4NmQwOTlkNmJiZmEyNzEyMSBsZWdhY3ktdHJ1bmsKKzIzMjYwIDljOGIxOTYxNTAzNDEzNDM1NjA0ZmFjMmU0Njc2ZTdmYzg0ZGZlODQgbGVnYWN5LXRydW5rCisyMzI2MSAyYTdiNGQ0NDYwZDNlYmU4NmIyZDkzZWQxZjk3NzgwMGEzZjU0ZjZlIGxlZ2FjeS10cnVuaworMjMyNjIgNTZmZmVlMWVlZWVjNGY5OTBkYTEyZmVhNGJmMTM5YjdiOTA3MjBmYSBsZWdhY3ktdHJ1bmsKKzIzMjYzIGVkMThkNDQzOWYwODRmMjllZDk2MmE4YjkwMjFhNjlkNTk4NThkN2YgbGVnYWN5LXRydW5rCisyMzI2NCAwZmUzMThhNzg5OTA0MTQ5ZmMwMjg1NWEyYzkyMzc4NGI2M2FkOTgwIGxlZ2FjeS10cnVuaworMjMyNjUgZDAzYzE5ZGIzMDk0NzdiZWI0NGU5M2U1ZDcyNzVkZWQwY2UyMGFhZCBsZWdhY3ktdHJ1bmsKKzIzMjY2IDc1YjdlOGJkYjIxZWY2MDU0NWM5NmVhODFjMDMxZjlmNjE5OTM1ZTEgbGVnYWN5LXRydW5rCisyMzI2NyAzZmFhYmY1NGI4YjgzZDEyNWRmY2VjZDViYTk3NTI0MDZjMDRiZjMzIGxlZ2FjeS10cnVuaworMjMyNjggZTMxODRlNDYzMDNiNTQ5ODI5ZGU2ODBhNTU2MjFkYzgwOGQwM2RiNSBsZWdhY3ktdHJ1bmsKKzIzMjY5IGYwMjBkYTc4MWI5MTVjYzZhYmEzZGE2NzMwNDJjYmY2YjNmMWMwNWIgbGVnYWN5LXRydW5rCisyMzI3MCBjYTdhZjJhNWQ5MTViOWM2NGYzYTMzOGU1OTQyOTQ4ZjNmYTE1NTkzIGxlZ2FjeS10cnVuaworMjMyNzEgNzE4OTVkZDI2OGUyZDA2Mzg0Nzg2MTVmYjc5NmJiNjBjODk3ZGZmMSBsZWdhY3ktdHJ1bmsKKzIzMjcyIDA4NDQ2YTk4NmE1NjJkMmFhOTBlZjM1OWUxOTc1MGQ1N2E0YWE0ZjAgbGVnYWN5LXRydW5rCisyMzI3MyA4YWExYWRhMzNmNjRlMjAyN2JjNGM5OTMwZjI2NGNmYWYxZDU2ZmIxIGxlZ2FjeS10cnVuaworMjMyNzQgMGZkMTJmOTJjZThmMGM2MGM2NTcyY2VmMDIwNzQ1OGMwNzc2YzI0MyBsZWdhY3ktdHJ1bmsKKzIzMjc1IGI3MGMwODgxM2JhOTdjMjRhYTA3MzBhM2QwZTY5NjRhMTUxMzIxMTIgbGVnYWN5LXRydW5rCisyMzI3NiA0MGNjNjYyMWVkZGNhMDcyMWJkMTk5ZTdlNzlkZTJmNGZjYTg0YmU1IGxlZ2FjeS10cnVuaworMjMyNzcgMTA5ZGVmNGE1ZjZlOTg1MmE2MjIxYjIzZDVhOTY1OGVjNzZiYzc5YSBsZWdhY3ktdHJ1bmsKKzIzMjc4IDcyOWZkZjA0NTQ5NDFlOTYwYjkyM2Q5YjdlYWZiODA1OGYxOTU1YzMgbGVnYWN5LXRydW5rCisyMzI3OSA0Zjc0NzE0MmU4NGM4Mzk5MjYwYTMzOWNkODUzOTAxOGMwMzNjNzg0IGxlZ2FjeS10cnVuaworMjMyODAgYjdlYzk4NWQ4NWM2MTk2ZTIyMGI1MjA0M2ZmZTZjZDEzMWZhZjkzYSBsZWdhY3ktdHJ1bmsKKzIzMjgxIDdjNWNkNjg1YzFkZTAyZDk3NWYzOWUwY2U3NGFjZDdhMWFlYjI0ZjcgbGVnYWN5LXRydW5rCisyMzI4MiBlNjNmOTc1NjJhNjI5MTQxNmZlYmI0ZDRjMDhhYzAwYWRlOTc3NGU4IGxlZ2FjeS10cnVuaworMjMyODMgZGYxYjgzZmQwZWJiZGJiN2FkYWY3ZDA5Y2UyZTZiZjlhMGJkODNhOSBsZWdhY3ktdHJ1bmsKKzIzMjg0IDRiYmI0ZDliNGQ3NzY0MWQwZDU5YTkyY2NjYTI4YWZmY2U3ZjFlZWEgbGVnYWN5LXRydW5rCisyMzI4NSA2Mzc4Y2IxMTdiNzNiYjMyYWU5ZDUwZDljNDUwNGQyOTJiYTUwNWYxIGxlZ2FjeS10cnVuaworMjMyODYgZTVhM2Y5ZDc3NjZiN2QwZjRiOTQwMWVjNmM3ODhhZjVjM2JhZGUyZSBsZWdhY3ktdHJ1bmsKKzIzMjg3IDVjOWE5NTVlZjE3Y2RhMTE3MzAxMmNkZTYyOWUxNzFhM2YxNGE5MmIgbGVnYWN5LXRydW5rCisyMzI4OCAxMDRiNWM5Yjg4ZWFlOTdkZGI4YzU5MTYyMzk0ZTIxNjk5OGU4YzVmIGxlZ2FjeS10cnVuaworMjMyODkgMDYyYWM5YWFmZTQ3YjgzMGIzNDlhNGJjYzU4MTk3ODgyYWI3YTJhMiBsZWdhY3ktdHJ1bmsKKzIzMjkwIDA5OTZmMDdkMDRhM2FjZjBkNjBjMTRlMDVmYjc4NDFiMTE4YjgwZWUgbGVnYWN5LXRydW5rCisyMzI5MSBhYjYyZDE0N2JhOTBmMzU5NzUzODg4ZDM1NzUzZjJlMTZmMmMzMmRmIGxlZ2FjeS10cnVuaworMjMyOTIgZTUyMWZjMzcwYmUyMDUwZjQ1M2E2YTFlOTgwYmQ0NDcwZTAwZGY0YSBsZWdhY3ktdHJ1bmsKKzIzMjkzIDhhNmYyZWU2ZWFiYTMxYTRjYTQ2OGFkN2Y0YTJhMWE3MmFiNGU5YTMgbGVnYWN5LXRydW5rCisyMzI5NCAzYTRhMDAzOWVkZjMyYmY2OTI1OGQ5ZDBmOTlkZDUyOWQyZWQ3MjY3IGxlZ2FjeS10cnVuaworMjMyOTUgNTk4ODJlN2FhYjg5YzkxMjQ0MGRkN2IxNTA5ZDM3MmM3NGFlZDEzYiBsZWdhY3ktdHJ1bmsKKzIzMjk2IGNkNzJiNjRhZWM5Nzg5Y2VkZmU3ZjA3MjllZTQxMjQ0ZjFmZWQyZDIgbGVnYWN5LXRydW5rCisyMzI5NyBlMDhmNDIzZjkxNjVjMDVjZWVkMzQwMzE2OTFhNGQxYmM2NTY5ZGFhIGxlZ2FjeS10cnVuaworMjMyOTggNjZiYjEwZWU0OTYxMmI5MTYwZGI3ZDlhYWIyNWFlNTcyODVlYWY2NCBsZWdhY3ktdHJ1bmsKKzIzMjk5IDE5MjlmYzY5NmEwNDg0MWMzZDYxZGVmOTlmOTA3NWRiNmFmZWM1ZWQgbGVnYWN5LXRydW5rCisyMzMwMCA3YjhjMTE3Mzk3MTRkMjcwMDY0NmY2M2NiMmI3YzAxYWVlZjAzMzExIGxlZ2FjeS10cnVuaworMjMzMDEgOWI4MThhZjBkNzMwZTliYzBhNTc2OGJiZThjYWM1YzI0ZWE4NjY2NCBsZWdhY3ktdHJ1bmsKKzIzMzAyIDRjNWNkM2QxY2Y0YjViYzNjODFkMjdjYmU5YThmZTg1NzU3ZWFkMzIgbGVnYWN5LXRydW5rCisyMzMwMyA2MzEwODM3Y2E1MzQzOTE3N2FhNDY3ZmY5MDRiZWFiNDdjOTMzYTNiIGxlZ2FjeS10cnVuaworMjMzMDQgMWE1OGM3NDY2MmU5M2Q2NGQ4NjY5ZTY3ZTNiMjYzMmIzNTJkZTgwNCBsZWdhY3ktdHJ1bmsKKzIzMzA1IDZlOTNhMTU4NjgwMGE3OWE1ZWY2YjBmZDRiN2I5OGI4YWI5MDAwYjMgbGVnYWN5LXRydW5rCisyMzMwNiA0OTY2Y2Y3OTNiNDRjMDYyMzk2ZjljYjIzMWNmOWM2Mjc4ZTYyNWNkIGxlZ2FjeS10cnVuaworMjMzMDcgMGVlODkwM2QzZmVkMDE3MTI3Y2QxNDJiODYyMGExZjg0YmJhZDJlOCBsZWdhY3ktdHJ1bmsKKzIzMzA4IGJmZDRlMDNhZDIxMmQyNDlkZjQ5N2ZkZjVmODFmZTFlY2Y1ZWFmZDMgbGVnYWN5LXRydW5rCisyMzMwOSA5MjBjNjNjZmNhMGNkZTMyODJhZDVmZGJlYzU2ZGVjNDBjNDhjNmUxIGxlZ2FjeS10cnVuaworMjMzMTAgODhhMDNlYTU3NzE0ZjhmMTU1ZGZhN2U2MjQxZTJlYTBlMjMxYjA5ZiBsZWdhY3ktdHJ1bmsKKzIzMzExIDMzZWRjOTk4NjFiOTBkNGQzZjVhNDEwNGE4ZjMxZWZiMzdhYzdiMmMgbGVnYWN5LXRydW5rCisyMzMxMiA1YjFhZDdhY2FiYjViYzU0Y2VkZDk0NGY4Mjg2NWVlNzQyZmNmYjU1IGxlZ2FjeS10cnVuaworMjMzMTMgYzJiZjBiMTMzODBlMzA0ZjBkNjYwOTc2OWU5NDY4M2Y1MmE0OTNmMyBsZWdhY3ktdHJ1bmsKKzIzMzE0IGQyZDgzNWIzNWQ0NzVlNWI3NWQyZjRhMzEwNmRmMGM0ZDFjNTUzZWQgbGVnYWN5LXRydW5rCisyMzMxNSBjY2VjMDJiZmU5YTA1OGY2NDQ5NjhlYWRhYzU4NjZhNTYwYmU2MGIwIGxlZ2FjeS10cnVuaworMjMzMTYgMmNhZGRiODJmZmVhMmY1M2JiOThhZjM1NDc0ZWE2ZDVmNTA1ZTQ5ZCBsZWdhY3ktdHJ1bmsKKzIzMzE3IDYzOTAxMzlhZDA4MjVkY2IxZGFkYjcyZWNiYzEzNTJiNjk0YTJlYWMgbGVnYWN5LXRydW5rCisyMzMxOCA5YTU5OWIxZDlkMWM4NGE3Nzc4Y2VkZTU3MzJkMTRjOWJjMTg5MmE0IGxlZ2FjeS10cnVuaworMjMzMTkgZWYzMDM0YTYwYTNlYzJlZjI5ZGJiMjBlNDMwM2E0MjVmYmVhZWExMyBsZWdhY3ktdHJ1bmsKKzIzMzIwIGY4NDY5MWIxMTQwMjdhOWE5OTE5NzJiZDczYjk4ZDJiNDE0NzczMWUgbGVnYWN5LXRydW5rCisyMzMyMSAxNGM4M2NmN2YzMzgyZTJmYzBmMGIxOTUwZTU2OWI1Y2M4OWJkNzU0IGxlZ2FjeS10cnVuaworMjMzMjIgMjk5ZjVmY2IwYmE4MGVjZGQ2ZDBiYTZlZGNjNjY5MGFhZTZiMzNjMCBsZWdhY3ktdHJ1bmsKKzIzMzIzIDY5ZTgyMDYyNGNiYzMxNmEzOWUxODk1ZTBlZDBhM2Q5ZDlkYTM4MTMgbGVnYWN5LXRydW5rCisyMzMyNCA5MGE0ZjIzYWJkYTdkY2YwNjJkMWUzNWNhNDEyMmUzY2FlNTRjODAwIGxlZ2FjeS10cnVuaworMjMzMjUgOTM5NzdmMTc1NTJkNThlODM5M2NlYzAwMzY3ZWQ5NDBjYzBmNmQ2NCBsZWdhY3ktdHJ1bmsKKzIzMzI2IGUwMWRlOGJjNTgxMzc3OGFmOGM1NzZjOWZmMmEzMjBhYTBiN2E2NzAgbGVnYWN5LXRydW5rCisyMzMyNyAzOTlkNzc3YWYwNDg1MTI2N2RkMDcwNDRlMjBhMWIzOWFiOTVmMGMxIGxlZ2FjeS10cnVuaworMjMzMjggZDhhYmY5Y2UzMjI1MzI1Njc5Y2MzODQ3YWRlYzljY2QyMWQzOGVmOSBsZWdhY3ktdHJ1bmsKKzIzMzI5IDUxMTc3NmQ2ZDdkODY4NWE4NmE0Mjk3MTUwYmUzMDZhYTk0YTBmYjAgbGVnYWN5LXRydW5rCisyMzMzMCBhYWU1Y2Y3ZTU4NjE1YzQ3Y2IxNWZjODU4ZDcxYmQ0YTNkNzMyNzcyIGxlZ2FjeS10cnVuaworMjMzMzEgZDkyNTBkNWI3OWE3NTkyNmNiMWI2NTIyNmJjM2RjODYxMGE1NjMyYiBsZWdhY3ktdHJ1bmsKKzIzMzMyIDhmMTliMmE4YzYzYzY3Nzk3MGQyNzQ5NjdjMGQyMTUyZDgyYjM0NGMgbGVnYWN5LXRydW5rCisyMzMzMyAwMDRjZGVmYjcwZDFmOWRiY2YyZDI5NTdkMjQ5ZTZjZjIzYTU3ZTQ2IGxlZ2FjeS10cnVuaworMjMzMzQgOTI5OGZlZTQ0NmI3NzQwYWQzZmM2Y2FmMzQ4MDkwZWRjZDQ4ZjFhNyBsZWdhY3ktdHJ1bmsKKzIzMzM1IGY0OGE0MWM5NzAyMTU2OTQyMjVhMjk2NWE0OWJlMWNlYjVjY2NkMmMgbGVnYWN5LXRydW5rCisyMzMzNiA0Mzk3ZmE1MTUyZmE0MTY2ODFiNjUyNmUxYWZjMjMzNTZmNjVmNmQwIGxlZ2FjeS10cnVuaworMjMzMzcgMThkZjMyZjZjZWExM2UzZTI3ZmRmNGRhMTRjZjAwMjI2ZTRlYTdmYyBsZWdhY3ktdHJ1bmsKKzIzMzM4IGZkZmMxOGQ1NTYxNTMwODlkMTFlNTA5ZGJhMzc4YjczZmIxZmZiOTIgbGVnYWN5LXRydW5rCisyMzMzOSA0OGU5M2VmM2M1YjcwYjhlNDQzYjdkMGNlNjE2ZDA3YjE4NTE1MDU3IGxlZ2FjeS10cnVuaworMjMzNDAgMzE5MmEzMmZkNDhmNmM0Yzk4OWJkMTcwYTQyMGNlNWZlOTAzMTgyMCBsZWdhY3ktdHJ1bmsKKzIzMzQxIGRhZDk0Y2E0N2UyMTM5MTRlNDExYWQ0NTI5OWNmYzdlN2ZmNTI3OGYgbGVnYWN5LXRydW5rCisyMzM0MiBiNDE2MWNlNTg1ZTY0Y2ExYzlkMjFlZDFhYjlhYTRkODJmZWVjZTg0IGxlZ2FjeS10cnVuaworMjMzNDMgMzg2ZmIyNmUwODc0N2ViZjU1ZWYyMGJlYjhkYWY0MmU1ZWNjMjcxOCBsZWdhY3ktdHJ1bmsKKzIzMzQ0IDM3MTliYTVlZTg0NDZhNmRkMjMxZGVhN2U0ZWY1M2FhYzBjMTc0NGMgbGVnYWN5LXRydW5rCisyMzM0NSA5MzNiZjY4ZTI2NTAzYThjMmIzNmMxODIzYzFjNzdlYzJkN2E3ZmZhIGxlZ2FjeS10cnVuaworMjMzNDYgNDBkNGQxY2Q2Yzg0YTQxNjE2NmY2Y2UyOTk4ZDRlNGEzZTM2NDBmYyBsZWdhY3ktdHJ1bmsKKzIzMzQ3IGI1MmE2MzA1MjMwNjg2OWIyZjVmNTY5ZDQ5MjVhNTUxNjNmMzI4ZGYgbGVnYWN5LXRydW5rCisyMzM0OCBiMjhjMDdhMWI0MGRmOTllNTEzMzIzYzJlMmJlY2Y3NzhhNzRhMGZiIGxlZ2FjeS10cnVuaworMjMzNDkgZDY1OGExNWE5MGFkOTU5Mjg2YTYyNzJlZjgwNWQ2MGFlMWNiZjM5NyBsZWdhY3ktdHJ1bmsKKzIzMzUwIDI4OWMxYTcwMDI4NjRiOTVjM2Y1OWVjYTM0NjBmMjE1MzQ5NmI3NDkgbGVnYWN5LXRydW5rCisyMzM1MSAxOWFiYzMzOWQzZmNmMmYxYmE5MmRhMzAyNzM5NmM3NzAxNzllYzE5IGxlZ2FjeS10cnVuaworMjMzNTIgYTM4MWFiMGY5ZDI4M2JiYWIyNjZjODg4NGNhMWEzMzYxMzk1YTJiOSBsZWdhY3ktdHJ1bmsKKzIzMzUzIDU2YmRkOTBjOWZkNmRkODY2NmY3NDI3M2E4YjAwMjViYjQxMzk3YzIgbGVnYWN5LXRydW5rCisyMzM1NCA4MTliNmZmN2U1NmE2YjVmYzYwMTg0NmZhYTJlNTM3ZGM3ZjM4YTc4IGxlZ2FjeS10cnVuaworMjMzNTUgMmE2OGM2ZTFmOWM1NGE5ZGFhYzI2N2Q3ZGM5NzE1ZDY2OTFiZjQ3NyBsZWdhY3ktdHJ1bmsKKzIzMzU2IGFiMWFmMWNhMDMwYzVjNWJjNDBkYTRiMGJiY2YwYjRlMWZhYjczOWUgbGVnYWN5LXRydW5rCisyMzM1NyA2MDA5ZDg1OWZiNTczZWNiMGJhZjJjMGQ4ZmZmNmUyMzkzNjU0YTc2IGxlZ2FjeS10cnVuaworMjMzNTggZDE5MTAyMjNiMjQ3ZGYzZDMwMWUzMzhjZWMxZGM2ZTdhNDhmZDBhZSBsZWdhY3ktdHJ1bmsKKzIzMzU5IDhhMTYxNGNlYjM3NzdlYzBiYWUwYzVhMTk0YmRiN2E5YWY2ZjI1NjMgbGVnYWN5LXRydW5rCisyMzM2MCAzZGY0YjhjZGI4YzY4NzljMGJlYmQwMDdhODEzMDI4N2RlMGFkMjJlIGxlZ2FjeS10cnVuaworMjMzNjEgOGYyNWVjMDEwMThiNWE4NjVkNjU3NDk0NWUyNmI1ZmQ1ZjQ2MTdjNyBsZWdhY3ktdHJ1bmsKKzIzMzYyIDgzMjE2Y2E2N2ViZWExYjM0MGVmNjM3NzQyNGZjZDBkMzlmZTUwM2IgbGVnYWN5LXRydW5rCisyMzM2MyAzMzRiZjBiYWVlYjdlYjkxYTBlNTk1NjQzMWY2ZjNkZTg0M2UxYTU4IGxlZ2FjeS10cnVuaworMjMzNjQgZDdkODRlYWU5MmJhMGExMjliMTY3MTEzNDk4NjE0ZjdlOTRhMTNkNSBsZWdhY3ktdHJ1bmsKKzIzMzY1IGJlZmE3MjU4YzIwMGYzOGU4OWUxNWEzZWU2ZjU1Y2IwYzhjNjQ0NzYgbGVnYWN5LXRydW5rCisyMzM2NiA4MGUzNmRhYjIxMTE3YTQ0MGIxZmQ3YTkzODQyZjM1MjY5OGQyYzdlIGxlZ2FjeS10cnVuaworMjMzNjcgZThhMjlkMjNjNzBhOGQzY2JjZmIwMDMyM2NhZDJlN2Q2MGZlZWU2NyBsZWdhY3ktdHJ1bmsKKzIzMzY4IDEyYTc4N2ZiNzFkZjM1MjZlMDE4N2VmZGJjMzc4MzlkMjIyMTVhNTggbGVnYWN5LXRydW5rCisyMzM2OSAyMzNmOTYwNmJhOGUyNGUwMzIxNzRmMTc4MGI5M2QxMWE1MThkNWI2IGxlZ2FjeS10cnVuaworMjMzNzAgOGVjOTVjZTc4NzM1ODM2NmFiYmZlZGJjNmI3NmQyZDQyNDNhZTcwYSBsZWdhY3ktdHJ1bmsKKzIzMzcxIDU1ODc0ZDhlMGRmYmE4YTBkNmNhNThhMmY1YzY2MGMxM2I5MWZkMWEgbGVnYWN5LXRydW5rCisyMzM3MiBlMDI2ZjUxN2Y2NTViNDUwOTYwMmRkMDA3MjgyODVlNjIzNDI3MTU5IGxlZ2FjeS10cnVuaworMjMzNzMgOGMzNzE0MzVmNjkzYzBmYmU2ZDhmYTg3NDdkYjllYzk3M2VkMGU5NCBsZWdhY3ktdHJ1bmsKKzIzMzc0IGI5ZjYwYjgyNTI2MWEwZjk1ZDYzMDg0MDYzM2ZlYTJiYjRjYTA1M2IgbGVnYWN5LXRydW5rCisyMzM3NSAwMTc2ZjYxYWY4NDVkNGM4Y2YyYmQyYTUwZjQ5NDcwZGNkZDA1NGNlIGxlZ2FjeS10cnVuaworMjMzNzYgZjgyMmIzNTZjM2Q5ZGZhODBhNWI2ZGI0OTQ2YTc3M2YzM2M1ZTAyMiBsZWdhY3ktdHJ1bmsKKzIzMzc3IDA5ODE4NjYxM2IwNTdkODFjYWEwZWY4NDNmNTFkODI4OTRmNjEwYjUgbGVnYWN5LXRydW5rCisyMzM3OCBhZWQ2MjExOGQ2MzJlODhkMzViYmY2ZDI3NzZjNDRjNzQ5MTE0ZmUzIGxlZ2FjeS10cnVuaworMjMzNzkgOWMyYjliNzZhMDhlM2VjZDk5NjgyNmNmNGZkOGU3ZDVhZDFjMTcwYyBsZWdhY3ktdHJ1bmsKKzIzMzgwIDNiY2RiNTE5YWJmODgxMTI5MjlkMjBmNjI2NDc4NzliMGZlNGJiYjkgbGVnYWN5LXRydW5rCisyMzM4MSAzZmIyOTNmYTE3YzU0Njg0ODlmZWFjYjNiNjI3OTBiM2EwMzdiZTk4IGxlZ2FjeS10cnVuaworMjMzODIgNjk3MjA2ZTc0NzYzOWIxOGFhOTRhNzhkZWU4MGI1MDY4NTA1NmJjYSBsZWdhY3ktdHJ1bmsKKzIzMzgzIGZkZmNmZmMyMTUyYzYwZWFiNjIzN2VlZWJhZmE1ZWUxM2ExOTk5ZmIgbGVnYWN5LXRydW5rCisyMzM4NCBlM2EyZTYwNzZiYzUyNjUwYTAyYjdhYWQxODAyYmY3MTY4NzNjNWViIGxlZ2FjeS10cnVuaworMjMzODUgNzNmYmNjOTU4Mjk1ZjM5NTY5ZTNiNTA1M2IwOTU2MTBmZTNkNDEwZiBsZWdhY3ktdHJ1bmsKKzIzMzg2IGEyNzZhZTVmZThjMzAyOWIyZDI5OGU3OTExNjcwOGY4ZjQxNmNmYmIgbGVnYWN5LXRydW5rCisyMzM4NyBiYTM3MTQxOTFhN2EyZjNlZWJkYTJiN2EwNDFhNGE0ZGMwNWNkNTY3IGxlZ2FjeS10cnVuaworMjMzODggNDQxYjJlMTU1ODI2YzE4ZWY3MjY5MDNhNDZlNmI0Y2E2M2EwYWM3OCBsZWdhY3ktdHJ1bmsKKzIzMzkwIGNlMjdkOWMwYzM1ODIzMTU0YWVlOWFkNmNhZmI3MTY3NTVlYWI3NDEgcjIyYTQtYnJhbmNoCisyMzM5MSBjMjc4MmMzNWU3MmQ3NDViMzVmYzNmMGM5YmI4OWI2NzczNmE4NjFiIHIyMmE0LWJyYW5jaAorMjMzOTIgM2FhYzkxNmMxNTA1YzdkYjc2ZjhkYjA2YTE1OTA4MzFjM2ExZTlmNyBsZWdhY3ktdHJ1bmsKKzIzMzkzIGE5N2ZiYzViMThiNmZjMTFjOTgwYzQ4ZDI3NmJjMGJiODJhMTVhM2UgbGVnYWN5LXRydW5rCisyMzM5NCBmY2MyMTZjNThjODdmYTJjNjIwMTVhYzM2MjgwMjIwN2NhZDA5NjE3IGxlZ2FjeS10cnVuaworMjMzOTUgNzI3Yjk1ZGQ4Njg4NjExNWExNWNiOTUyOWY2NTdkYTNjMWNiNDU4NyByMjJhNC1icmFuY2gKKzIzMzk2IDFjNTI5MTI4MDU0YzhjMjBjZTFhNTljZDI5MmE5OWMwOGUzYjk3ODEgbGVnYWN5LXRydW5rCisyMzM5NyA4MzI1NmJlZjBkNzVlMzEzNWU0ODcxNGE2OWQ2NjdmZTVmMDIxYWQ2IGxlZ2FjeS10cnVuaworMjMzOTggNzBlNTdmNzU5NDAyN2QyOGY4ZmNkNDRhYjE1MThlYTY2OTMzZGI1YyBsZWdhY3ktdHJ1bmsKKzIzMzk5IGVjMmQ0Zjk5YmFkYzRiNzEzY2QxZWIyMWM2YmUxMDg4YzRmMmIyNmYgcjIyYTQtYnJhbmNoCisyMzQwMCA2ODkwMDcxODc3ZGM4NjBjZGQ5NjNhNGRhNzQ1ZTFhZThmOTlhYThmIHIyMmE0LWJyYW5jaAorMjM0MDEgMjI1ZjE3ZWM4OTMyM2E4YjE3Yjg5NTBjZTk5MWM0NGI5ZWFjNWVhMCBsZWdhY3ktdHJ1bmsKKzIzNDAyIDk1NjBmODZjNGZhNGE3ZjMwZDM0OTM3YzY2MzcxYmM0N2QyNDlhYzUgcjIyYTQtYnJhbmNoCisyMzQwMyBjYTk1YmNlNWEzM2VmZmY3YjhiM2NhOGFmNTM1NjE4MmExODgyMDczIGxlZ2FjeS10cnVuaworMjM0MDQgYmRlOWRlYjU5ZDFiYzA5NTczMWViN2JkNmI3OWVjNTk3OTQxMDNjYSByMjJhNC1icmFuY2gKKzIzNDA0IDJhYzZjMzJmYzIwNmRmOTE0ZGMyZjlkNDU2ZTc5YzU5NjUzNzI4YjYgcjIyYTQtYnJhbmNoCisyMzQwNiA4OWU1ZjEwYzlmOTk0MDBmMjg3MGVkODcwYjg2YjkzYTQzZjVjYjcwIGxlZ2FjeS10cnVuaworMjM0MDcgYjk0YmM3ZWM3YmU4NTFlYmVmNGRmMzQ0NGZjMjllZjU2NzY0ZmZlMyBsZWdhY3ktdHJ1bmsKKzIzNDA4IGU3OGM4ZjRlMmI4Yzk0MzU1MzMwNGUyYmYyYjFkYmM3YTM1ZDBhMTIgbGVnYWN5LXRydW5rCisyMzQwOSBjNmZjODc4MTA1NTE0M2MwNDNlZDNmOWVjZjNkZDUwM2RhNTkzMjZmIGxlZ2FjeS10cnVuaworMjM0MTAgYjVjYzU4NmFjMjVhZWQwZDgyZjA2MDFkNWM5YTBhMjJjYjI1M2ZhNyBsZWdhY3ktdHJ1bmsKKzIzNDExIDg4ZGEzOGE1ZjBiZjVhODUyNjJmNjRmZmFmY2M3MmQwYzRhNjc0MmMgbGVnYWN5LXRydW5rCisyMzQxMiAyMDZiMjVmZWJkZTNjZWEwMDA0NDQ1ZTI2ZWJjNTVmYjA3Mzc4NWM2IGxlZ2FjeS10cnVuaworMjM0MTMgMWY0ZDk5ZTdiMWU3NTQ5OWNjMzUzYmU1YThkYzcxZjllYmFkYTM5NCBsZWdhY3ktdHJ1bmsKKzIzNDE0IDU3MDdkYTkwMDkzNjI5YmZmNmIxYmZmZmZmNTE3MzBhMzExNTM3MmQgbGVnYWN5LXRydW5rCisyMzQxNSBjOGZiMDBmNWViNWU1ZGE4ZTliNDA5ZDk1MGM0Y2U3ZmRkOGZmMGM5IGxlZ2FjeS10cnVuaworMjM0MTYgNzJhNTM0N2QyZjlhZDk5ZThkOTA0ZDA0ODg1NjNmM2NkODFhNDUzYiBsZWdhY3ktdHJ1bmsKKzIzNDE3IGM2OGVmNDdiMTcwOWRhZTY2ZGEzYWNmZGM3NTNlMjU2ZWNjYWQ5OWEgbGVnYWN5LXRydW5rCisyMzQxOCBkNWQwMDA4NjJhNjY5YTk4NDY0NjBjN2UxMjAzNzFkNTExNzkyYjExIGxlZ2FjeS10cnVuaworMjM0MTkgYmJiMzUzZDMxZTI1NDI1YzhlY2Q2YTM0YzRiMGRhYWEwYWExMjAxYiBsZWdhY3ktdHJ1bmsKKzIzNDIwIDQxNmYwYmMyMjhlOGI5NDU5NzlkODk0MTViNjg2OTdkMWExZWQ0YzggbGVnYWN5LXRydW5rCisyMzQyMSA4YmEzMjg3MTgzZTA1YmUxYWQ2MTg5YjkyOWMwMGZmYjg3NWY2ZDhkIGxlZ2FjeS10cnVuaworMjM0MjIgMmM4YTVhMTcyZjQ3YmIzNWE4NWExMGQ0NWRhODJhZDRhYWU1MjNkMiBsZWdhY3ktdHJ1bmsKKzIzNDIzIDZmZjUzMTQzNWIzNGRjNzE5ODRmYWRlMDIxNzU4ZDIyMmM3MTZkYzYgbGVnYWN5LXRydW5rCisyMzQyNCBiZWE2ODY0NDk1OTU2MzU0ODJiMDRiYmViOGZhNDY4Y2IzMjQ0NzE2IGxlZ2FjeS10cnVuaworMjM0MjUgZWRiMGI4MDVlNTQ5ODg5MGFiMDBhYTUyZjQwYWE5ZTkzZDllOWZlYSBsZWdhY3ktdHJ1bmsKKzIzNDI2IDNiMzU2Zjc3OTIyZDhkYjVkMTMzODNlNzNkMDFmNjk2MDY2Mzg4YTkgbGVnYWN5LXRydW5rCisyMzQyNyA0NzBjMWM3MmEwYTdhNWYwYjliYTA0OTBhNGJhNDQ3YzM2MzYxNGIxIGxlZ2FjeS10cnVuaworMjM0MjggNWI0ZjczMjFkOWNiZjgxYjZiZDQ1MWE2NWFhY2FlOTRlNjQyZTM4YSBsZWdhY3ktdHJ1bmsKKzIzNDI5IGRiODJjMGI0MGRmYzQwZmVlMWJlZGRiNWZkZTM2ZjYxMjZmODI4ZDkgbGVnYWN5LXRydW5rCisyMzQzMCA2NTA4YWRiZDBiYjFiYjI2NjM3NGQ3YjQ5NzIzODdjN2U1ZDI2MTI3IGxlZ2FjeS10cnVuaworMjM0MzEgMDA2Y2ZhYWMwMjlhNzY4NGJjN2JiMTg5MzQ2NDFkOWVmMjZmNTYwZiBsZWdhY3ktdHJ1bmsKKzIzNDMyIDA5MWU5ZTNjZWVhZjA3YjQyOWZiMTUxMWM0ZWVjYTUwNTEzNDRjZjMgbGVnYWN5LXRydW5rCisyMzQzMyBhYmQ2YTA4YjJjMzI3MWFmZDhmMDQ0YjIxOTI3MmQzNDIwYTc3MGZlIGxlZ2FjeS10cnVuaworMjM0MzQgNWZiMDY5MWZiNjkwMzkxZTM3YzIxN2MxOWE5YjEyNDIwMzBkMDY0ZSBsZWdhY3ktdHJ1bmsKKzIzNDM1IDgzMTA2NjMzZjkzMzM0ZjU3Mjg2NzRhN2UzOGQyYmY5MjE0MzI5YzQgbGVnYWN5LXRydW5rCisyMzQzNiBkZTNlODUxODE4YTQzMjdmYjk5Y2QwYzVmM2I3ZjkxMTcwM2Q1ZDI2IGxlZ2FjeS10cnVuaworMjM0MzcgZjEwMDc5M2NhOWFmYzcwZmMzZmI5ODBiODFiOTI4NjQxZWQ0M2M1ZiBsZWdhY3ktdHJ1bmsKKzIzNDM4IDhmNzlmYTUzN2JkMjRiMzBhMzhjMTk3NWNhNjkwNWQ2MzY2NjZmOTcgbGVnYWN5LXRydW5rCisyMzQzOSBmZWYyODlkNjZlOGUxNTgyMzEyOWE3Yzc3NWU0NTVmYmViM2YzNTI2IGxlZ2FjeS10cnVuaworMjM0NDAgNzU0YjgxNjI4NGQxMzhlZWNmNjc4N2NjYmFmODNkNzk0NjE1ZjQxZCBsZWdhY3ktdHJ1bmsKKzIzNDQxIDg3OTlkZmEwZjc2YWM0N2M1MTJhZjljMmU1ZGJmYzAyZGQ1OTZjZjIgbGVnYWN5LXRydW5rCisyMzQ0MiAwMWE1YzQzZjE4OTRjZGYxYzEzNmY5Nzc2NTc5MzMwOTdlYmRhNWQ5IGxlZ2FjeS10cnVuaworMjM0NDMgNWVjYzAyYzFlZGFjM2FjNjc5NjBkYjljMDZlZTNkZmU2MzdlNDMwMyBsZWdhY3ktdHJ1bmsKKzIzNDQ0IDc4NGUyMWJkZDlhMmY5ZGRhMzRmZTZjMzYyMTIwNjM1M2Y3YTJlN2YgbGVnYWN5LXRydW5rCisyMzQ0NSA5ZGUyOTE2OTRiMWUxYmQxY2ZjY2RlYTdiMmNlZTYwMGU4Yzg4ZTMxIGxlZ2FjeS10cnVuaworMjM0NDYgNmQ3M2I1NGQ5MjA1MjAxNGUyMzFiYTk3OWNiMzliNjUzNTUwNzM5OCBsZWdhY3ktdHJ1bmsKKzIzNDQ3IGM2YjYxODlhODM5NzYwOGM2NDI0ZGM4NDllYjBjNWRmYjljNDVlNTMgbGVnYWN5LXRydW5rCisyMzQ0OCA0YzY5MjJmMjY2ZjA3OTRmYTgwMTU1MmI5NDBmNzVkMzVmNmI0MWQ5IGxlZ2FjeS10cnVuaworMjM0NDkgOGQ3OWRiMDFiMmJhMjVkYjhlZTFiOTIzZDlhOGE0NTA3MDUwZDg5MCBsZWdhY3ktdHJ1bmsKKzIzNDUwIGM3ODE3YjYwNzRiNTgwNDRjYTY4YjdjOTNjMWIwMjI0ZmUxOTM3OWYgbGVnYWN5LXRydW5rCisyMzQ1MSA4ZTRlNDkxMDU1OTU0YmJmNjdiMDQ4YTdiNzQ1ODNkN2UzMTVmMDM3IGxlZ2FjeS10cnVuaworMjM0NTIgNmRkYTQ5OGNjY2M0ODU1YTIyZGYwMzI1MmIzMWU1ZjY1OTQ4NTk2ZCBsZWdhY3ktdHJ1bmsKKzIzNDUzIDU4YjRjZmE1NDg3MTkxYzFmYjJmODJmMGU4YmEwMTk5OTNkNmI4NDUgbGVnYWN5LXRydW5rCisyMzQ1NCA1NjQyZDM3ZjFiMTYxZDU1NTM1ODQ3YzkxMzI5NTMxMDQ5NDE3YTg4IGxlZ2FjeS10cnVuaworMjM0NTUgZTk0NmM1ZDJmZTE1MWY1YjFiMjc1MWQ4M2IwYTkwZmY5ZjNkZmRjNCBsZWdhY3ktdHJ1bmsKKzIzNDU2IDQ5YTEzZTZlOTM1ZGIyOTY2YTI1ZWQxMDM0NDE3ZTBjNjcxNDgxYWUgbGVnYWN5LXRydW5rCisyMzQ1NyBiZTU0OGQ0YmU4ODhmNDdlZWM4NjU5MGM4YmM4MjE5MjJjY2ZmZTI4IGxlZ2FjeS10cnVuaworMjM0NTggMjEwNjAzMThmNTM5YWYwOTlhYTRjNzE3NjE4Mjk4MzU1Y2Y1N2ViNiBsZWdhY3ktdHJ1bmsKKzIzNDU5IDM0MDhkOTI5YmI5NDBhZDYxMGQyYjY5NGQ2NmM3OTM5MDM1MDE1MzUgbGVnYWN5LXRydW5rCisyMzQ2MCA2ZGU0ZWU0Nzc5NDlmOGQ3ODYzNzQxZjM5NDE4NTJjMjAzMTMwNGQ2IGxlZ2FjeS10cnVuaworMjM0NjEgYjRmMGYxMGE2YzVmNGQzNzIxMjUxOGM2MmYyYWE0MjUzZDhkYWQzYSBsZWdhY3ktdHJ1bmsKKzIzNDYyIDU3OGMxYmI3MjgzOTkyNTY1OTY0YTA4YjFlNGM4OTYyZjg1NzM3OTQgbGVnYWN5LXRydW5rCisyMzQ2MyA3MmVlNTczNDdhZWE2NTMzNDFhYzZmNzVjNzNhMTJlMWI5ZTllNzhjIGxlZ2FjeS10cnVuaworMjM0NjQgZjVkNzkxYzJhY2M5NTBlZWI4ZWZlYzg1NWZmMjMxNTRiNzMyZTEwMSBsZWdhY3ktdHJ1bmsKKzIzNDY1IDdkNWFlN2Q3YzdhOTYzNmVhYzdjMmJkZDBlZTRhYzQyMmRjM2Q1MTggbGVnYWN5LXRydW5rCisyMzQ2NiBlNWMzY2E3YjUwOTkyNGI1YzQ1ODIxNzIwMTJmZTMzYmY1MWNkMTNlIGxlZ2FjeS10cnVuaworMjM0NjcgOTg3M2M5OWM0M2Y3NTM2Nzg3NDNjNGMzMzlmZjZlZDhiNjk3NDIxNCBsZWdhY3ktdHJ1bmsKKzIzNDY4IDhlNmY2MDRiMDc5OTM3YmE4NzRjMTdlNzUyZGMyZDhhMjI2ZDY5MzUgbGVnYWN5LXRydW5rCisyMzQ2OSAwMDE1MmU2ODc0NWE1MThkZmUyZTUyZjY1ODljMTM0ZjRhNzVmMTI1IGxlZ2FjeS10cnVuaworMjM0NzAgMjBiYTQyY2NiMzZmNjc2NTQ5MmI4ODY4MDJlMjQ1YWIzMzY5YjQxNyBsZWdhY3ktdHJ1bmsKKzIzNDcxIGUyZGE5YTkyOWFjYWI1NTI5MGU5ZTc2ODI1YmRjMmQ2ZmM4NmY4MzUgbGVnYWN5LXRydW5rCisyMzQ3MiBiYTVhYWE2YmMxZTU2YjViZDc2MTFmZGUwMWU5NTY4ZDgzNjdjM2ViIGxlZ2FjeS10cnVuaworMjM0NzMgZTdlZjg4MTM4OTQxOWE2ODY3NzA4OTIwMjE5YjE3YjRhZjU4ZjUwZiBsZWdhY3ktdHJ1bmsKKzIzNDc0IDY5Yjk0MWQxMzE3Njc1MzVmODkxYjEwYzlhMDNhZmJjNzdlMTJkYmYgbGVnYWN5LXRydW5rCisyMzQ3NSBiMmY5NTdmOWM2ZjQxM2JjZjM5NzlmMDIxMWNiYTdlYWU3ZDY3ODhkIGxlZ2FjeS10cnVuaworMjM0NzYgZTNkNzU3Nzg2MTllM2RjNmI3ZWY2MjlhNWY2NTk3YTczZjVlNmJmNyBsZWdhY3ktdHJ1bmsKKzIzNDc3IGQwNTM3MjZmYjAxYmRjNjRhYTU4YmE3NDMwMmQ5NmY5M2MxZDgzYzcgbGVnYWN5LXRydW5rCisyMzQ3OCA5Njk4YjcxYjAwMzE1YWI5YWI3Mzg5NWJjNGQ2NzQzNDJkYjljYjE1IGxlZ2FjeS10cnVuaworMjM0NzkgZmFjZTFlYWE2OGNhOWI1YWVlZWZlNjgyNjk1ODAxNmNkYTYwMWM0NSBsZWdhY3ktdHJ1bmsKKzIzNDgwIGE1YTMzMDY0NmMxMzJhYzJmNDNkZTUwZWFjOGFjM2EzZWYwZWViOGYgbGVnYWN5LXRydW5rCisyMzQ4MSBjMGE2ZjUzNzczZTM1M2NlOTJhMmZhODExMzQyNmE2ZjM1MGZlYjE5IGxlZ2FjeS10cnVuaworMjM0ODIgYmY1NTc0ZjRmNDFmNzZmZDY0ZTBhYjNjMWY3NGNjYjBhMTkyZjBjZCBsZWdhY3ktdHJ1bmsKKzIzNDgzIDVhY2QyYTgxZDZmYTcxNDY3N2E4N2UwMjA1NGYxMzFjMTg1ZDVjNzMgbGVnYWN5LXRydW5rCisyMzQ4NCAwYjk5MTc0ZDZiMTc4NDU4NzZiZTc4OTM1NWE3NmNmNTQyMzRjMmE3IGxlZ2FjeS10cnVuaworMjM0ODUgYWJhZjllYTJlNTYwNzI5OTUwOTYyYzdlMTczN2Q0ZGNmZWM1NWRhYiBsZWdhY3ktdHJ1bmsKKzIzNDg2IGE0ZWYwM2I1YTkyODZkOWRjOTFiNTExYjAwZDE5ZjA4NzMwZjg1NTAgbGVnYWN5LXRydW5rCisyMzQ4NyBhODFkYjEyOTVhOWUyMjc4ZWNmZWEyMGI5NzdkNWNlZGZmYmIwZDQ1IGxlZ2FjeS10cnVuaworMjM0ODggZDZlYWU2NGZkYjVhYzE4NjBmN2FmOWI1MTM4YWYwNjJiMmM3YjJjNCBsZWdhY3ktdHJ1bmsKKzIzNDg5IGFhMThjMGVjYzRmYjY3ODQ3ZWU0NTQ3MzlhYzVkOWQxYjZlOGNiYzQgbGVnYWN5LXRydW5rCisyMzQ5MCBhYjUwNDIwNThiNmYxZWZlYTQwZTY5NTJkMzdkZDY3NjVlZDkwOGI0IGxlZ2FjeS10cnVuaworMjM0OTEgOTJmODY0MzZiNmJlNjMzZGEzMGEzODg4NjBlZDRiMWY2MjI0YzAxZCBsZWdhY3ktdHJ1bmsKKzIzNDkyIDFiZWU0OWJjOGQ5YzU1ZWQ5ZTYxNzVjOTYwYmNmN2RmOWM5YmNiNjEgbGVnYWN5LXRydW5rCisyMzQ5MyA4YmFkNTVlZGZkZjM5MzgxYTY2YWZmYTdiNzg0ZTMzODU0NDNjYmYyIGxlZ2FjeS10cnVuaworMjM0OTQgNWEyZTdjNzhkNDMzNDVlYjZjODI3YzlmNmRhNzkxNjY2ZWQ4ODc2ZCBsZWdhY3ktdHJ1bmsKKzIzNDk1IDQ2NGY5YTA5YTkxMDM4YTlkY2M4NDEwOTE4MWNkMDg0MmFjNWMxYjIgbGVnYWN5LXRydW5rCisyMzQ5NiBkNDc4MjQ5NGExZTNjMjllZDMyNGVlNTQ2MjljNTQ2ZDk4YjZlYmYyIGxlZ2FjeS10cnVuaworMjM0OTcgODEzODZhNzFlY2NlODY1Yzg4MmM3ZDdhNzUwM2M3YzlhZWRjNGYwZSBsZWdhY3ktdHJ1bmsKKzIzNDk4IDdlYTYxZGE4NzhhZjEwNzNlMWU4MjU4ZDE5ODQ5NGU3NmEzOTIwMTUgbGVnYWN5LXRydW5rCisyMzQ5OSBhY2ZiMjc4NjYyYzYyYzMyMDIyNTk1MDU3ZTgyMGU5NDVmMWUzNjI2IGxlZ2FjeS10cnVuaworMjM1MDAgOWVlNmE5OGYwMzJjMzEzZThmMDg5ZmE0ZWU1NTJjZjdiOGVmMGM5YSBsZWdhY3ktdHJ1bmsKKzIzNTAxIGQxNjcxZGRlYWNlMGI2NDQxNjY0ZmNkYTA4OGU5NTFlMWMxNGM0MTIgbGVnYWN5LXRydW5rCisyMzUwMiBlN2FjYTJhMzAyY2Q3MTM0ODQ0Zjk5MWMzYWQ1NGJjMGRmYTAzYjU5IGxlZ2FjeS10cnVuaworMjM1MDMgMjc0NWMzZGMyNGFmMjljZTQzMDk2ZDA0MmI3YmVkZThkMGI4MGUxZSBsZWdhY3ktdHJ1bmsKKzIzNTA0IDVjNDI2MWU3NDQ3ODBjZjAwMzExY2E2ODIxZGVlOThlNmVkNDIzZWUgbGVnYWN5LXRydW5rCisyMzUwNSBhZmY2ZmNkMjZjMTVjNDcxMzAxYjZkYTljMTFhYWE1ZGNkOTdkMWY5IGxlZ2FjeS10cnVuaworMjM1MDYgN2NlZGJhYWExMmU0NzRmYzU2ODI3OTMwYTMwYWJiMjYzZDFkOWFjMyBsZWdhY3ktdHJ1bmsKKzIzNTA3IDBlOTQwZGE4NDViZjgzNzkwODJiMjQzNjM1NjdjNWM3ZjkzMGI5NTQgbGVnYWN5LXRydW5rCisyMzUwOCAxNjY1OGRmODQ1NmE2NjI4MWI1ZmMwZjU3MDcxMmJmNmM4YTk1ODZiIGxlZ2FjeS10cnVuaworMjM1MDkgNzE2MGQ3OTU0NzNlOTE4M2U3NGRkYzFiMjgzZjljZWVkOTE5MGI0OSBsZWdhY3ktdHJ1bmsKKzIzNTEwIGYzYjNmZDVhYmZhNjE2ZGZhM2M3MGUwMzczYzI4OGVjNzM3NWFkMjEgbGVnYWN5LXRydW5rCisyMzUxMSBhNGQzMjhkNTA4OTc1OWJjZDgxODVlZjJlNTE5ZTA3N2Q4ZjQ2ODJjIGxlZ2FjeS10cnVuaworMjM1MTIgMTBiOTdhZTY5MDI1YzY1NGE3MzVjNjNjMzY4MDBlOTk3M2M2NTQ5YiBsZWdhY3ktdHJ1bmsKKzIzNTEzIDFhY2VjYzkwOGVlODZiNGYzZDEwN2MxOWViN2RjNWY4OTQwNDZiNGYgbGVnYWN5LXRydW5rCisyMzUxNCAxZGI1YWE2NzY1YzAxYjE0NWQxYTNjNjlhYTQzMDI0YzNiZDMwZWZlIGxlZ2FjeS10cnVuaworMjM1MTUgYjBjZTkyNTYxZTA3NWJkNWFiMzczODU0MDQ3ZGFlM2JlZGIyYzNmYiBsZWdhY3ktdHJ1bmsKKzIzNTE2IGI4NWNkMTYzY2Q1Y2QwZTdkMTU2NWYxNjgwNGMzZWQ3OGE0NDZmMGMgbGVnYWN5LXRydW5rCisyMzUxNyBkOTZjZDM4YTNmZWM3Mjk0MjYwN2RhYzE0MjFjZmY4ZDkxMjUxMzJkIGxlZ2FjeS10cnVuaworMjM1MTggYzY4ZjM2NDFiYWNkODI3MjNkMzBhNTE1YTc0YjllNzZjZjU2MGE4ZiBsZWdhY3ktdHJ1bmsKKzIzNTE5IDY2OTI4NTU5MjI4ODRiNTFjODhhYmViMmUyOWE5ZGU1YjY3NDc5MGIgbGVnYWN5LXRydW5rCisyMzUyMCA2ZjAyNTY5Y2M0NmZkYTUyMTdmY2I3NzRkMzcwNDQzMzZkYmZlOTVmIGxlZ2FjeS10cnVuaworMjM1MjEgZTNmNjNhOTU0NTVmN2MwMjQ4MmY5OGJkNWZmZmNmM2ZjYmU4MDc5OCBsZWdhY3ktdHJ1bmsKKzIzNTIyIDMxODU4OTQwNGI5NTcyNzgzMGJlYjUzOTJhMDJlNzk0MWM5M2NmN2UgbGVnYWN5LXRydW5rCisyMzUyMyA2MTUyZjgyZWE4MjM4MDMwZGM1N2FjOTBlNDU3MjA3NGU0NDgyMjlhIGxlZ2FjeS10cnVuaworMjM1MjQgMWVhNWJiYmFiN2Q3NzFkY2E5ODljNjdhMjNmYjgwNjZlYWFhMzkxMSBsZWdhY3ktdHJ1bmsKKzIzNTI1IDU2ZjE3ODEwNTM0YzJkM2I1NThkOThiODIwY2I2MDNjOWM4NjUxYTEgbGVnYWN5LXRydW5rCisyMzUyNiBkZTI5YzhlNGRlOWIzMTRhODc1NjQ5ZjYxYmYzNjJiNWE5MmQxMmQ4IGxlZ2FjeS10cnVuaworMjM1MjcgODczZDU4NGMxMjIxMzkwYjk5ZjE1YzZiNDUwMzcwODQ4NWE1ZTFiYyBsZWdhY3ktdHJ1bmsKKzIzNTI4IGQwOTJhYmNmOWM0Yjc2ZWYyODJjYmRiNWJhYzc5ZWVhNDUwMDFlOTkgbGVnYWN5LXRydW5rCisyMzUyOSBlNGU3NDljNDJmNDYxN2ZlNjQwZWQxNDY5MmYxNDAwMzc2ZTZhN2YxIGxlZ2FjeS10cnVuaworMjM1MzAgMjQxZWY4YTkyM2M3NjM5YTNmMTg3YTU5ZWFlOGY5NGY4MzQ5MThiMiBsZWdhY3ktdHJ1bmsKKzIzNTMxIDU5MzRhZWViMzk3ZjBlZmU1ZTliYmRmMGIyYmQxZTcwMjJhYWQyYWEgbGVnYWN5LXRydW5rCisyMzUzMiAwNTI1MDQ3NjE1OGE2NTVhNTkwMjQ5OWEyY2Q0NTgyZmRkMmZkZTU4IGxlZ2FjeS10cnVuaworMjM1MzMgN2VhMDQwMjlkMWFlYWQ3YTI5MzIxOTNjODdiZmIyYjcyMzI2ZGNmOCBsZWdhY3ktdHJ1bmsKKzIzNTM0IGNlNGE3ZTRhZDZjNDhjOWYwMTZmNGJlYjIyNWJhOTgzMjE1YjdmZWMgbGVnYWN5LXRydW5rCisyMzUzNSA2MTJlODZhNGNkOWY2ZWMzYTUxNDAyNjFlYTQwZGNiNDBlMmUzZjEyIGxlZ2FjeS10cnVuaworMjM1MzYgZjA5MTZhNmRjZWYyNzVmZmUyY2E0OTA1NzJmZGYxNmRjYzY1NzQ5YiBsZWdhY3ktdHJ1bmsKKzIzNTM3IDIyNjljYjM3MWUwNWZjMGNiNWNmNGY1NDgwZGEzZDdhYjY4OTk3Y2EgbGVnYWN5LXRydW5rCisyMzUzOCBkN2Q5NTZiNDdkMjQyZTJiN2U2MGQ0OTVmOWJiMjMxYmMzMWFhODBiIGxlZ2FjeS10cnVuaworMjM1MzkgMTY3ZTdmOThiNTFmYjM3ZDAxNjQwNTA4NzAzNTk5N2YwYTEwZjE3NyBsZWdhY3ktdHJ1bmsKKzIzNTQwIDY2YTU2YTIwY2ZhM2Y2Y2UyMjY5NTA1NTg3Y2VkZTM1NjQ1MGZiM2QgbGVnYWN5LXRydW5rCisyMzU0MSAyOTgzYjU0MjU2YzcyMjVlNjFkZWNiYjJiZDVlNTlkZDI3NGY1ODk5IGxlZ2FjeS10cnVuaworMjM1NDIgYTI2NWQ4YmQyZjI3NzdjMWU1OTZkMzNiNmQ5OTQyNDYxOWU1NmJjOCBsZWdhY3ktdHJ1bmsKKzIzNTQzIDhiM2VhNzMzNWMxYmRjNjUzMjAzZDMxYzAyNTI0ODliODFjNDIyYWYgbGVnYWN5LXRydW5rCisyMzU0NCA5N2NmYTQ2MWQ3OTNkMzVkZTc5ZjViYTVlZDQ2MDBkNDZlZTQ2NWY4IGxlZ2FjeS10cnVuaworMjM1NDUgMzgwZDRiNGVlNjAyNDNjMjIzYWUwNWEyMDdlMWMzNmI1YTU5NGI5YSBsZWdhY3ktdHJ1bmsKKzIzNTQ2IGUzNzUxYWYwZjFkZDE3OGMyNDA1ODYyZDFlZjlhOTNjNzE2ZjhmMzUgbGVnYWN5LXRydW5rCisyMzU0NyAwNGYyOTZmNzExZGYwMjNhZmQxZjIxYzkxOTE4ZmY5MDQwN2RkNjhjIGxlZ2FjeS10cnVuaworMjM1NDggZmI1ZjEyMTE3MDM2MDM1MDk2MjVhZGMzMmZlZDU1YWZlNjA4NTkwMiBsZWdhY3ktdHJ1bmsKKzIzNTQ5IGNjYjdhYmM3MTRlZGRhN2U5NDlkODEyN2I4MmZlN2FhMDRkZDJjMzggbGVnYWN5LXRydW5rCisyMzU1MCBjODUzZDI0NmYzYzhmNzAwNDEwNjU0NzE5ZDVhMjUxYWMxZjJkOGIxIGxlZ2FjeS10cnVuaworMjM1NTEgZjQ4NzgyMjM3Zjg1MzI4ODAyN2IyODg2NjdmZTVmOGU2YjI0NDVkZSBsZWdhY3ktdHJ1bmsKKzIzNTUyIDVjY2ZlMDQ0OTJhYzliNzM0NmJmYjRmMzViYzAxZmVjZWJkOGExZWYgbGVnYWN5LXRydW5rCisyMzU1MyA2ZTdkNWFlMjgwMGZjOTQ3NDE0MGVjOGJjODE2MzJjOWJjYTliYmQ1IGxlZ2FjeS10cnVuaworMjM1NTQgYWNkODM3ODIxNmMzMWYxY2MyYjY2MDdiYjdjYWEyOGUxOGY4MDc3YSBsZWdhY3ktdHJ1bmsKKzIzNTU1IDE3OGJhMzNmNjdlNGU4ZDFlNDY3ZGVkNGI3MDM1Mzk2ZmEzNDk5MDcgbGVnYWN5LXRydW5rCisyMzU1NiBhNDNjYjZjNTkwNzBmODBlNTBjNjdiN2Q5NmZhYWE1OGQxMDc1Y2E4IGxlZ2FjeS10cnVuaworMjM1NTcgYjI4NWRlY2YwNDIxZWM2Njk5MTQwMDM0OTBmNTY0MTBjMjM0ZTJiMCBsZWdhY3ktdHJ1bmsKKzIzNTU4IDQyNmIzNzlhMTM4YjQxYjcxYWI3NmE3NWQ5ZjQxODNjZDA4Nzc1YzQgbGVnYWN5LXRydW5rCisyMzU1OSA1ZDJkMWUyZWM0NzNiMTAyNTBiMTg5NDUwNGM5NWRiMzE5YjBmMTZhIGxlZ2FjeS10cnVuaworMjM1NjAgNmNjMGI0ODA0OWVjNGI1OWViZDc1ZWVmNmM1YmQ2NDY3YTU0Yjk5MyBsZWdhY3ktdHJ1bmsKKzIzNTYxIDc5MzkyYWIyYzAyYTllMmRkOWJmOTMxZmNhMjE2MTBmNjU5YWZkYzQgbGVnYWN5LXRydW5rCisyMzU2MiA2MjExNjg0ZWQ5ZGRmMDc3MzYwMTI2YWM5NTQzZWNkNzgyNDk2NGI4IGxlZ2FjeS10cnVuaworMjM1NjMgNDJiNTI3OTM3NDBjMGRmMTcwNWExZmMyOWRiMzc4MjEyNDc5MTVjYiBsZWdhY3ktdHJ1bmsKKzIzNTY0IDg3NGJiMTcwNzRiMGQ0ZGY4ZjMwY2E2OWFlMjU3MDI1N2Y3NWVhMWYgbGVnYWN5LXRydW5rCisyMzU2NSAzYjNlZTk3NjMzYzExZGIwNDllN2EyZmY5YWRhMTcyNGZmMDU0NGYyIGxlZ2FjeS10cnVuaworMjM1NjYgYzUzNDVjMGFiZDcwNjE5MzA2NDA1OWE3NmQyN2RmOGI2MzJjNGM1YyBsZWdhY3ktdHJ1bmsKKzIzNTY3IGZhZWM2OWMxMTY0MDM2MWExYWU4YzE5Zjc5OGU1NDZlZDgwZWI0MDMgbGVnYWN5LXRydW5rCisyMzU2OCBlNDRjZGVmNzkxZWU4NDA1NWE4MmU1YjFjY2RiM2RkN2MwYmM4ZjQ1IGxlZ2FjeS10cnVuaworMjM1NjkgMDgyOTVlYzU4ZWE5N2RkZTE2NWJkZTliZGRlOTNiNWFlODllMmI3ZCBsZWdhY3ktdHJ1bmsKKzIzNTcwIDFjYTIyOGUyMWE5ODdhNzIyZjE0NDZjODJlYzc5Y2ZhNmE0YTQ1NWQgbGVnYWN5LXRydW5rCisyMzU3MSBhYTY4MTM0NWJmYWIxMzM3M2QyYWYyOWE1YWI0MTU1ODY0M2IzNzgzIGxlZ2FjeS10cnVuaworMjM1NzIgY2EyYmM1Y2RhYThlOWVkMjFkNDYyZTMzZGNiOGVmNWViMWFhODk5ZCBsZWdhY3ktdHJ1bmsKKzIzNTczIDMyNmU1YTcyYzY2MDI4ZTJiYTdkMGIyNjJjNTk0YjY0NTJhOTI0YTAgbGVnYWN5LXRydW5rCisyMzU3NCBiNDQ0N2JiNWFhMGVhZGVjOTU2YTk1Yjc5MDNkNmEzZjA3ZTY5ZTQ1IGxlZ2FjeS10cnVuaworMjM1NzUgMTIzNTNiMTMxMjI0YzZhY2M4NTk5NjY5Y2M0ZTJlOGI3MmIwNzg3OCBsZWdhY3ktdHJ1bmsKKzIzNTc2IDMzOTNkNmY4MDdmNWQ3YjViYTMxZWExZDljZTI5YjlmNmExZTQ2MmUgbGVnYWN5LXRydW5rCisyMzU3NyBlYTE5MTBkMmM3ODFkZDBhOWRkYjgwYjQzMGZiYTI3MzllZWQzZjVlIGxlZ2FjeS10cnVuaworMjM1NzggMjg0ZWFiZTNiNTUyY2RhM2ZjZGQwNjhhNTY2OGYyODE2MGU5ODhmMSBsZWdhY3ktdHJ1bmsKKzIzNTc5IDdiNDFmN2EyZTUyODU0ZjI5YmNjYTA3OGQ4MjYzYzI4ZmYxNTBiOTYgbGVnYWN5LXRydW5rCisyMzU4MCAyZTA3M2JjNzI2ODY5NTFhMmFhOTM2MDllNmQ1ODYyMzM2MGRhYzZjIGxlZ2FjeS10cnVuaworMjM1ODEgNGVmN2ViOTBiNjlhYzc0ZGM3ZjQ2MDE5MTFlZWZkNjhiMTQ4NTZlMiBsZWdhY3ktdHJ1bmsKKzIzNTgyIGY5YTY2YjI0YmZmZmJhMmUyZjYwOTY5NDA4YTQwZTUyNjQ2NTAxN2EgbGVnYWN5LXRydW5rCisyMzU4MyAxMjUzNTUzZmMzY2M4ZWMyYjMxOTBmNGY0MzgzZGUyNzg3YzMyZTMwIGxlZ2FjeS10cnVuaworMjM1ODQgZjI5YjhlYTBiNjk1NDQ5Y2I4YjJjNDkwNmI4NTAyNTgzYmEzMjJhZiBsZWdhY3ktdHJ1bmsKKzIzNTg1IDI2N2M2ZmUwYWJjMmVlYjhiN2RiMTI4ZGZlMzU4YzRkYzA2NmM4MzcgbGVnYWN5LXRydW5rCisyMzU4NiA1YTk4ODAxNTZkNzEyNTM3ZTU0YWY2NGZjYmJiMWFjOTZlMmJhM2ZlIGxlZ2FjeS10cnVuaworMjM1ODcgYmRhMjc0ZGRlMjdlMTAyNjRiMTBlNTM4ZTIwMmE1YWQxNWZjMTYwMSBsZWdhY3ktdHJ1bmsKKzIzNTg4IDQyOWEwOGUyZmM3ODJjM2M2YjZjZTg5MDJkMTlhZjVmOGYyN2M0ODQgbGVnYWN5LXRydW5rCisyMzU4OSA4NTg1NTM1ZTQwNGJjYWI5ZGI0ZDE0ODM1ZDE5ODQ0MDM3OWNiYmU2IGxlZ2FjeS10cnVuaworMjM1OTAgYjMyZDY2YTRiNWU2YWQ0MmI4YjU2Y2NmYTdlZDZiNzkyZmNhOTNiNyBsZWdhY3ktdHJ1bmsKKzIzNTkxIDU0ZjA1YjliMWZjNGJiYmE5MmY2Y2ZlOTUwYzdlODc4MjdmMGQ2ODcgbGVnYWN5LXRydW5rCisyMzU5MiAyNmI1ZjhiOTQ4NzJiN2FmZjcyYWQ3NDcxYTE1YTlmZDA3N2UyZDY4IGxlZ2FjeS10cnVuaworMjM1OTMgYTk3NjM2NzViNzRjN2E1ZmJkMmI1NDQ3ZjA1MzVkMmExNDE1MDNlNyBsZWdhY3ktdHJ1bmsKKzIzNTk0IDc5ZmJjZmZmNTc5NzBiZTE2YTljM2JjMDhiYzRjYWJlMTgwNTVhMjcgbGVnYWN5LXRydW5rCisyMzU5NSBjNTI0N2EzNjZmZjU3YmVkODg4ZGQ0OTRkMmRjZWQ4N2IyOGU2MzU5IGxlZ2FjeS10cnVuaworMjM1OTYgMDRmZWU3MGZlZDhmZWFiOTRjMjM5ZDVhNGYzN2ZlMDIzOWZiYmJiNSBsZWdhY3ktdHJ1bmsKKzIzNTk3IDg2ODk2YjVmMWViYzJmODFiMjEzOGFiNGIwZmFmOTc0N2NjN2QwZmIgbGVnYWN5LXRydW5rCisyMzU5OCBjNzBhMmI1N2E0ZGQyNTFlYWMyNDVmMWE1YTY4OTYzMjcxMDdlMDhlIGxlZ2FjeS10cnVuaworMjM1OTkgODM4MzdhYzViYjQwZjRkNWE1MTQwODc4NzY1MTNlNGU3M2VjNWI2OSBsZWdhY3ktdHJ1bmsKKzIzNjAwIDFiM2ZmZGYxMjE1MDliZjY0NDE0MWRmYjkwMWQ0NzhlZGRhYmIxNWIgbGVnYWN5LXRydW5rCisyMzYwMSA0YmYzZmNlM2Y2Y2VkZjVlYmZlNzkzMjJhNmI2ZjJlNmFjNDFiYjIxIGxlZ2FjeS10cnVuaworMjM2MDIgNzA5NmU0NGNkMWJkMjllZTEwZjljNWVlOGE2YmZiOTNjNmRjZThjZiBsZWdhY3ktdHJ1bmsKKzIzNjAzIDg1MjI2ZGY5YTViZTkxZTE3OGE4M2M4YjQxYmNiYjI2MTUxMDc2ODQgbGVnYWN5LXRydW5rCisyMzYwNCA1M2E5NTcyYjYyMzc3N2UwMWE3OWJmZjYwN2Q4Yzc1MWQxZWY2ZmI5IGxlZ2FjeS10cnVuaworMjM2MDUgMTRlMGZlMTUyNzExZmEyNDY3ZGQ5MGYwNzM3ZjAwNDFhZjk1YzgzMCBsZWdhY3ktdHJ1bmsKKzIzNjA2IDQ0YmVkMjU0ZDgzNzNjZWNmY2ZiYzBkODk5NzQ3M2RhODM1Y2FiYTAgbGVnYWN5LXRydW5rCisyMzYwNyA3YmQxMjI3MGRjM2U3N2NkYzlmNGY4YjIzYjIyNWU0MjZkMjA1MzI3IGxlZ2FjeS10cnVuaworMjM2MDggMzZkMTQ4MjE0ZDhlMjdkZmY0MjU4OTM2MTYzZDQyYjExYTFjNWUwZCBsZWdhY3ktdHJ1bmsKKzIzNjA5IDY3YTdhOTlmMmQ1YWMzOGM2MzZkYmMwMzJiZDQxNWQ3OTc5MTQ0ODUgbGVnYWN5LXRydW5rCisyMzYxMCAzMmUxMmY4ZDc1ZDgzMjZiMzQ2NzQ5MDQ5NmQyODljNjE4YTIwY2U5IGxlZ2FjeS10cnVuaworMjM2MTEgYjc5ZmZkM2ZjYTI4YzhmZjVhOWRhOGJlZWRlNGU0ZTM3Yjg3MTVhZCBsZWdhY3ktdHJ1bmsKKzIzNjEyIDQyNWM2YzU1OGZhYzFhYTk5YzQ1OTU0OGIwNGNkNTlkM2UwZmNiZjUgbGVnYWN5LXRydW5rCisyMzYxMyAzM2RhYzYxODFiZTU3YzhlOTI4ZjAxM2IxZWE4NWY1MTBkYjBiMjIzIGxlZ2FjeS10cnVuaworMjM2MTQgMGE5MTViMjJlMDA2YWExY2JiMDBlZWZlYzkxZDQxNDEyZGFhNjFmMyBsZWdhY3ktdHJ1bmsKKzIzNjE1IDY2ZTc3NTg1YjRiZDk1OTQzNzUyMzkwZTliOTVlNTBkNjY2M2QyMTUgbGVnYWN5LXRydW5rCisyMzYxNiA5ZTdhMGFmNGMwYTNiNmE3MWM0Nzc0ZDhiNTYyOWUzYTNiNjE5YTlhIGxlZ2FjeS10cnVuaworMjM2MTcgZDFjN2IzZWRlNDgxNTkyNjIwMjRkNmRmMmY4YjA1NWYyMGZkNTc5ZCBsZWdhY3ktdHJ1bmsKKzIzNjE4IGZkYzE5MTQ0MDZlMjZlMjcyZmZiNDY5ZDhjMjM1NmM1OWQyNmY3NzggbGVnYWN5LXRydW5rCisyMzYxOSA0ZGJiNTA1ODFkOTAzYTQ0MjhiNDE1OGNlNzgxOTJhZWRmNjA5ZWQyIGxlZ2FjeS10cnVuaworMjM2MjAgYzBkNjYyOTY2MjcyNzQ2NDdjOWNlYjIxZjUxYzcyZGYzZTQ5YWNmNSBsZWdhY3ktdHJ1bmsKKzIzNjIxIDkyZDU2YWU2M2VkM2Y3ZDBkYzUzMGZiYTQwNmFmYzVjZTQ0MmNmOTAgbGVnYWN5LXRydW5rCisyMzYyMiA5OGY1OTdhMTdjOTA3Zjk2MmQ4MzJiY2ExMDI0ZTVkZTQwMDYwOWM1IGxlZ2FjeS10cnVuaworMjM2MjMgZTE5MWNlZWU2NzJmZmUxNTVmNWM0ODkxODYyZDZkNzZlY2IwZTgyNyBsZWdhY3ktdHJ1bmsKKzIzNjI0IDhhMDljODU1Zjk1NzMwNDEwNWRiOGI2MTJkYTZjMDJjNDFhNWExMDIgbGVnYWN5LXRydW5rCisyMzYyNSBjNDA4MzMzZDM3ZjA2MTU1NjAyZWI1NzMwMjUyMTViMzEyZmEzYmIxIGxlZ2FjeS10cnVuaworMjM2MjYgYjk5N2FjNzBlNDQ1ZWRiYTNmYjUxNzYzZmQzMTJmODQ5MTBjY2E1MSBsZWdhY3ktdHJ1bmsKKzIzNjI3IDZiMWQ4Y2I5OTA0YWMwMWQ0MTI2ZjJkMjBmODg0YWUxM2MyOWQwM2IgbGVnYWN5LXRydW5rCisyMzYyOCBiMGQ4MzA2YzA5YzUxYjBiNjlkY2E4NmMzNjBkNjQ1MDU4MGJlNzJkIGxlZ2FjeS10cnVuaworMjM2MjkgZTQ2ZjY5ZjU3OThiNjg4YzFiMDJjYmM4MDk2ZWVlYjRkZTY0YjM2ZSBsZWdhY3ktdHJ1bmsKKzIzNjMwIDdiY2FjYTY1MzM4ODI0ZDY0NjI3MzJkYmZiYzg4ODFjMDNiYmEyOTUgbGVnYWN5LXRydW5rCisyMzYzMSAzMDBiMWQ4YmZhNGRlMWQzNTEzMWRlYTg2NWI2OTc4MjlmNmM4YTk1IGxlZ2FjeS10cnVuaworMjM2MzIgOWU3MmJjZWI1NDBiNTQ3NDBmNGRlYTE0NGRiMmFkOWI5OTQ1NjQxYiBsZWdhY3ktdHJ1bmsKKzIzNjMzIDg4MzBiZTMyMDlhMmFkMWJmZDNhNDE2NzAxNTY2YjlhZTJmYjI1N2EgbGVnYWN5LXRydW5rCisyMzYzNCBhYmZkMTcwMDFlOGY1ZWZlMWE3MzljYmYzZjI2M2E3ZWEwOGQ4ZjZiIGxlZ2FjeS10cnVuaworMjM2MzUgOGVmM2U5NTE4MmMzNmRjMTNkNWI1MmZjMTVkNTRmODA1NGQ4OTRiYiBsZWdhY3ktdHJ1bmsKKzIzNjM2IGRiZWM4NjNkMzNkN2VhMzUwMTVjNDBlMDVmZWY5ZTk0ODkxY2JiY2QgbGVnYWN5LXRydW5rCisyMzYzNyA0YmNjMjMxYzFhNDFhNGUyOTNkM2U2ZTIyYjRkNDY5YjRjMWU4MmViIGxlZ2FjeS10cnVuaworMjM2MzggOTQ5ODM5NDJjOTRiOWI3ZWFiZTMxZTkyOWE3YmNjYjhjOGI3OGE1MiBsZWdhY3ktdHJ1bmsKKzIzNjM5IDNhYjNiNTM1ZGFmMjQ5NWY2ZWEwOWQyZGNjNmZjYzkwNzkwNTJjOTEgbGVnYWN5LXRydW5rCisyMzY0MCAwNjFkYTIyZjQyMDM5Y2NhZGFiZDFkMzRlYzU3ZTdkN2FkNjNmYWFhIGxlZ2FjeS10cnVuaworMjM2NDEgOWMyZDQ0NDY3NGQwOTAxZjU5NGY1ZTI4MzZjZjRjODU4ODlkYThmNyBsZWdhY3ktdHJ1bmsKKzIzNjQyIDJmODliMzQ0ZmRiM2RkNWM4NGMyN2RjNTlmYjhhYmY2NWM2ZjE3ZGYgbGVnYWN5LXRydW5rCisyMzY0MyBhZmY4ZDE0YjI4YWRhM2Q3OWVmMGI2NWE1MmFmODk1ZTNhNDI1ODg3IGxlZ2FjeS10cnVuaworMjM2NDQgM2FkYzNhMTRjZGU0MTI3YWMxZjRhZTRkZjliNDBkN2RiZmEyNzYxOCBsZWdhY3ktdHJ1bmsKKzIzNjQ1IGI0ZjgyOTk0MWYzZGY0MTFlMTE0M2ExMWNkYzdkZDE4MDgyZTY3MDUgbGVnYWN5LXRydW5rCisyMzY0NiBiZTA4NzM0YjBhZmQyMTAxNjkyYWQ4OWEyMjQ1ZDkxMTZhODZjNTk3IGxlZ2FjeS10cnVuaworMjM2NDcgM2I0NWMwNGE0ODMzYmU5MGNlN2M0ZDU0YjhjODMwYzg3MjBlZTYxNSBsZWdhY3ktdHJ1bmsKKzIzNjQ4IDJiYTQwMThkZTJlMzEwNjQ4MDliNWM2ZDUzZTI0YjlmNzc0NDU3N2UgbGVnYWN5LXRydW5rCisyMzY0OSBiZTU4ZWVlNjlhOTQ5NDQzYjBhOWVlZjg4OTQ2OGZiYjUyMDJiNDlkIGxlZ2FjeS10cnVuaworMjM2NTAgM2MwMWMzNGQwN2Y2OGVjMTZjYTRjOTUyYzcyYTg4N2E4ZDVhZDViNyBsZWdhY3ktdHJ1bmsKKzIzNjUxIGY5MDhiMDYzZjI4Yjc5NzVlNWVmODg1YmQ2ZTk2MmM3MmQ4MWRjOGYgbGVnYWN5LXRydW5rCisyMzY1MiBiZThjYmE1YTNiN2JlODc5OTMwY2RhM2RlMzc2MmNhMDBkOTZmY2JiIGxlZ2FjeS10cnVuaworMjM2NTMgYjQ3MTY4MTc4ZDg3OWNiZTMyOTM4MGQ3ZDcwYjcxNzI3NGRmOTdhOCBsZWdhY3ktdHJ1bmsKKzIzNjU0IDk0NmJlYmQwMDEzMmMzYmJkNDAzNzgyMGJjYWJhMDBkZTdhMjEyOGYgbGVnYWN5LXRydW5rCisyMzY1NSA3NzNhMTMwYjMzMGViZWFjZWM5M2IxNDQ3MDRmYWNmNjJjNjM4OTk3IGxlZ2FjeS10cnVuaworMjM2NTYgODUzYzI2OGJmMjQ3OTVlN2EyNWJlYWNiNzQzYWEzMTU0NmMxMDhiMyBsZWdhY3ktdHJ1bmsKKzIzNjU3IGMyN2NmOTEzYjFkNjkxMDMwZDdlMmQzM2U3MTQwMmZkODhkMjIzMjMgbGVnYWN5LXRydW5rCisyMzY1OCBhZDFmMDgxMjgwYWEwMDlmNWUzMmZhYzUzOWU4OTFkODdiODhlZmQyIGxlZ2FjeS10cnVuaworMjM2NTkgMjA1MDg3N2MwYzM2M2FjMTgxMWFiNWNhMzEwNTUxN2Y2MTQwNWYzNiBsZWdhY3ktdHJ1bmsKKzIzNjYwIDcyOTQ5MzJkNzRlY2FlZjVjNTNjOTU2ZDU4YTQ2YzJhZWU2ZmE0ODEgbGVnYWN5LXRydW5rCisyMzY2MSA5ZmU5NzU0OGQ5NTIxZmQ4ZWE4NDk3YjI4YmJmNGM2OTQ3MzdiYTM4IGxlZ2FjeS10cnVuaworMjM2NjIgYzlhMjEyMzI5ZGE2ZjBjYTFiYzdlMWYzOGFhMmVlNjg2NGZhYWVlMCBsZWdhY3ktdHJ1bmsKKzIzNjYzIDY1ZjYwZDNmY2RkNzdlMDJlNzMwMjVhNDRmZjIyMGM3YzIzMDA0NTIgbGVnYWN5LXRydW5rCisyMzY2NCA2NTc5MDU2MjAzM2MxM2NiYzgyYjBmZDRjMThlZTdhYzI3YTc4YzQ2IGxlZ2FjeS10cnVuaworMjM2NjUgYjc0NjEwYzkyZDhiODI2ZDBiM2JkZWJlYjI3ZWMyMTBmMjQxMzM2MCBsZWdhY3ktdHJ1bmsKKzIzNjY2IGY1N2YxN2NiNDEwODY1NDJiY2FiMGEyMjA4YzhmOTIwM2EzZGNkNjYgbGVnYWN5LXRydW5rCisyMzY2NyBlZDJlZWFiODAyZDJjNDliZDE1NDk0MDI3MzhmMDVmZDk2NzE3ZjAyIGxlZ2FjeS10cnVuaworMjM2NjggOWFlNzhlZjg1OGUyY2E5YmJlYTZmYjAyYjA5YjYzMmUxZjFiYzY3NCBsZWdhY3ktdHJ1bmsKKzIzNjY5IGI2YTVmZWNiZWMzY2JlYTZmOGNjY2MwYzA5NjI4ZmJmMTg1ZDZhMzkgbGVnYWN5LXRydW5rCisyMzY3MCBjM2E5MzdjZjYwYTVmNWNkYTdkNjViYjMxNTE0MWFhYmFiMjM5ODQxIGxlZ2FjeS10cnVuaworMjM2NzEgNmIxMDQwODNmNWYzM2E5MGI4ZTdjZjE3YjZhODEwMmU1NTQ5MDUzYyBsZWdhY3ktdHJ1bmsKKzIzNjcyIDQ2OWE4ZTFmN2VkZjUxMzdmMGMzMjIxNGNiODI0ODM3MGMyN2FlYzUgbGVnYWN5LXRydW5rCisyMzY3MyBiOTgxODVjODgyZTRlNzZmYTE5MjlhOGMxYTU4NWRkZjRhOWJmNjkwIGxlZ2FjeS10cnVuaworMjM2NzQgMmE0YmI3ZDE5YjYwM2ZlODU2ZDQ4NWZmYzNjNTU0MzQ1ODYwNjRkNiBsZWdhY3ktdHJ1bmsKKzIzNjc1IDRkYWI2MWY0ODQ1ODE3MjFmYjA5ZGNiZTYyNzc5N2I2ZDVmZGM5ZmQgbGVnYWN5LXRydW5rCisyMzY3NiA2OThiZjdjMjJiZmViYTYyY2VlY2U3OWM0YWU5ODc4NDhhNTI4ODVkIGxlZ2FjeS10cnVuaworMjM2NzcgMWNhNjI3YzRjMTA1ZjIxZmJkMmMyN2U5NTVkMzk3ODgzNWNmNWIxOCBsZWdhY3ktdHJ1bmsKKzIzNjc4IGU0ZDBiMWY5NGVjYThkNmIyMzI0NTcyNTQ2M2RiOGVjMzFhYzdiYTYgbGVnYWN5LXRydW5rCisyMzY3OSA2MjFjNzcwM2U4Yjc1MjhlOWRmOWJhMzczOGJlYmFjYWE2ODY2M2JiIGxlZ2FjeS10cnVuaworMjM2ODAgNTkwMGE5ZDgwODQ4MDkyNjljNTViYmJiYzg5NGQwYmUxNTU5NWI3ZiBsZWdhY3ktdHJ1bmsKKzIzNjgxIGMxNjhlZGE3MzZlNDRhN2M4YjRjZGFlMzRiMjE2YzcxMTQxODZiODUgbGVnYWN5LXRydW5rCisyMzY4MiA5MDMyMjE4NTJjM2E1OWMzMTcwNzM2ZWEyNDNhZTJhMTM4ZGU2MDNhIGxlZ2FjeS10cnVuaworMjM2ODMgNGYzZDEyNDA4MzBlNmY1MzAzOGE4MDJlZGRhMDQwODA0ZDViNWExZiBsZWdhY3ktdHJ1bmsKKzIzNjg0IDNhMTgxMzNmOTkwNjQzNTA0YjQ4ZTAwMDRiYzU5MTg0ZDJiMmYyMzQgbGVnYWN5LXRydW5rCisyMzY4NSBlZTg5NTY3YmNhYjQ0NTBhNTFhZGU4ODQxMWE3OGE1MjgxMTJjOGE0IGxlZ2FjeS10cnVuaworMjM2ODYgZjYxODYwN2U4Zjk4NDIwZDY4ODhjNGU0Nzc3MmJlODIyOGE5YTgwMCBsZWdhY3ktdHJ1bmsKKzIzNjg3IDQ2OThhM2VjNWZhOGNmYWQ5YjRkNzk1MTM5ZTRkYWRiYjY0NmY1OTYgbGVnYWN5LXRydW5rCisyMzY4OCA2ZGEwMzcxOGMxMzMwYzNjMjIxMTg3ODczYWE5Yzk3ODgxOWUyYTBiIGxlZ2FjeS10cnVuaworMjM2ODkgN2QxZjQ5MGI2Y2IxNzI4MjRmOWRkZWIwNzNlYTRkZjUxNTI0OWYwOCBsZWdhY3ktdHJ1bmsKKzIzNjkwIDUxOGUzMGY5MGQxZjdkODg0NGUyNzE4OGRhYTU5Y2NhNTZjNDY4MmYgbGVnYWN5LXRydW5rCisyMzY5MSA0NzEyYmI2MmNjMjVkMDViMmQwYzc2YTkzY2IzYmY1OGFlZTg4OTFhIGxlZ2FjeS10cnVuaworMjM2OTIgNjMyYjlkM2E4ZDFhN2IyOTA2ZjdjODJiMTc0MWZjZDZiMTk2NDJhYSBsZWdhY3ktdHJ1bmsKKzIzNjkzIGIwMjk4NmU5YTZiZTQ3MjI2NjQyYjdlNWVkNjU3ZGUxOGJhZDhlNTQgbGVnYWN5LXRydW5rCisyMzY5NCA1ZDVhZDk1MWE2ZDZlMTcwZDRmMzNiNjQyOWE2OGVjY2E4YmE5MDk2IGxlZ2FjeS10cnVuaworMjM2OTUgY2VlMGZlNWZjZTExNWRhNTk1OThhODRmYTllOGMyN2IzY2UwNWYzYyBsZWdhY3ktdHJ1bmsKKzIzNjk2IDU2MTQxYjg2YTdmMmM5NWExMmY2NmRlZWE0OTgyZjc0YTUzNTljYjMgbGVnYWN5LXRydW5rCisyMzY5NyA3ZjUxYTRiN2RlYjQ0MGVlMmZkNWQ2YzQ3M2M0Y2YxMDFkMTYzZDVhIGxlZ2FjeS10cnVuaworMjM2OTggYmEyODUwNDA4ZjBhMjYwZDU4ZDk0MzZjYTI0MzRhNGVmNGJkNDdkMiBsZWdhY3ktdHJ1bmsKKzIzNjk5IDUwMDBiNWQ0YzMyNjVmNTQxMGU3NzhiMzNhZDdjMmUyNTM4N2JkNGEgbGVnYWN5LXRydW5rCisyMzcwMCAyMDExOGY0MTI5ZGVmZGZlMzE5ZmUwODc5NzgxMDc3ZmRjZDUwYmI1IGxlZ2FjeS10cnVuaworMjM3MDEgMzU4Mzk3YjkwNzBmNmE3ZWU5NWZlMzkzNDA5N2EwZmRmMWI5NzljNCBsZWdhY3ktdHJ1bmsKKzIzNzAyIDA4ZDdhNjc1NmJmZWQ5MmE4ODhhODBiM2FmNGVjOTdjNDU2Njc5MWEgbGVnYWN5LXRydW5rCisyMzcwMyA4NTU3MWQ1ZjY1NDViNjdiYTZlYmY4MDg3YWY3YTY0MGVhZjgwZTFkIGxlZ2FjeS10cnVuaworMjM3MDQgOWJlMmNjNmI5OTU5ZDgzMWM1MWFiMDZlMDRiMDEzNGM2OTlmMjI0NiBsZWdhY3ktdHJ1bmsKKzIzNzA1IDU2MjgzNGVkOGJhYmRmN2FlMzFjYjZiOTMxODE4OWY0ZjkxNDQxYWQgbGVnYWN5LXRydW5rCisyMzcwNiA0NjdhYzQ1M2NjYzMyYzdlYjYzZDJiOWRlZGE1ZjI4NDdhY2JmN2IyIGxlZ2FjeS10cnVuaworMjM3MDcgMDM2MjRkNzQ4NGZhMDYwMGUwYzQ4ZmRlY2E3NGExODQyMTdlNzVlOSBsZWdhY3ktdHJ1bmsKKzIzNzA4IGJjOTA1YTExYzE0OGE0OGJjYjVmZDQwYjEzMzVhNTJkOWQ2NDlmMzAgbGVnYWN5LXRydW5rCisyMzcwOSAyN2FiMDMyN2IyZmMzYTllN2E3YmQwM2E4ZTg2M2MzMzQ1ZmY0OTEyIGxlZ2FjeS10cnVuaworMjM3MTAgODU1MjQ1YmI0ZDQyNzZjZWY3OGEyY2NlZGQ5ZWY2ZTYzYjU0NjY2NyBsZWdhY3ktdHJ1bmsKKzIzNzExIDM1M2EzZTlmODUxNmMxNTk5Yjc4ZmRhYTNlMzY4MzQ4Y2U1MGNhNWIgbGVnYWN5LXRydW5rCisyMzcxMiBiMWE4NjE2ZjEzZTRjZDcyNmJlNTU4MDM5OGY3NDRlMDRhZTlkMzhlIGxlZ2FjeS10cnVuaworMjM3MTMgNjllNjVlNzM5MWI4MTdiYzA0ODQ2YjdlOGExYmY3MDk4NWY0MDI3MCBsZWdhY3ktdHJ1bmsKKzIzNzE0IGI3MjU2OGEyYzE3Y2VjMjMwODkxMTRjYTFkMjU0ZDNkYWQ0NWU2YmYgbGVnYWN5LXRydW5rCisyMzcxNSA5OWIyYmQyNWJiMTJkNDdhMDFmYzE0MzE0NDU5NTU1YWU2MTZlZjI0IGxlZ2FjeS10cnVuaworMjM3MTYgNDFiZWQxZjZkMjZjZWIzYTc1N2IzZWEyMTMzOThjMmY4MTU2ZjJiYiBsZWdhY3ktdHJ1bmsKKzIzNzE3IDY0ZjRhYzYwNmFlNTMxM2Q0MjVlZDhhM2MwMDg2Y2ZhY2IxMmFjYzQgbGVnYWN5LXRydW5rCisyMzcxOCA1OThjMDJhYjA2MmQ0M2ZmY2M2NmYxZGU5NGI0N2MwYzE2M2I1YmQ0IGxlZ2FjeS10cnVuaworMjM3MTkgZWM5NTk2Njg3MjkyOTYzZTM2ZTRiYWQ0Yjc5ZDE4ODQyODVmNzVlNiBsZWdhY3ktdHJ1bmsKKzIzNzIwIGJmZjZjMmQ3NmYzMzZjNTJkNmRlYjQ4YzY3OTE0MzNlYTdhMDNmYmEgbGVnYWN5LXRydW5rCisyMzcyMSA0ZjcxZGNmZDBhOTM3MGVmN2JlNDI2YjQzOTg3Mjc2ODE4MjdjNzJlIGxlZ2FjeS10cnVuaworMjM3MjIgYTk2MjM1YjJjYTYyNWIzMGE2ODY0NmE2Mzg0ZWFlYWMzYzY4ZDk3ZiBsZWdhY3ktdHJ1bmsKKzIzNzIzIGM2OGQxODU1ZGFhOWVhMjQ4NTFhYWJjMWYzMDljODc1Yjk3OTQ4N2IgbGVnYWN5LXRydW5rCisyMzcyNCBmZmJmOTRmZDljZWY4ZTJmNmU4NTMxZGFjZTAzZTMxZWUyYWIwMDYzIGxlZ2FjeS10cnVuaworMjM3MjUgN2U3MWVlYmFiNGVhMzllOTlkNjI2ZDcyY2JiMzk1YWE1ZTk3NmE1YSBsZWdhY3ktdHJ1bmsKKzIzNzI2IDJmMGM1YWY0ZDVlYTA3ZmI1NmEwNWI2ZTZkMTViYTRiZGIxZGQ0ZTQgbGVnYWN5LXRydW5rCisyMzcyNyBjZTEyYmIxMDk3YTQxNjc1MzRlNDNjNDY0ZjdmMWU3NjUxYzUzZmNlIGxlZ2FjeS10cnVuaworMjM3MjggOThkZjAxMTVlY2Y5MDEyYzQ2Y2VjOTk5YWE5NmMzN2MxZDY1MzI1YiBsZWdhY3ktdHJ1bmsKKzIzNzI5IGM3MjkxNWQ4YWFjNzI4OWY4NmNkYzhiMzI0MDE0YTRmYTZlNWY0M2EgbGVnYWN5LXRydW5rCisyMzczMCA2MGUxMmY4M2QyZDIyNWUzYjFhODkyZWYwNGYxYjk2YTg2NDZkM2ViIGxlZ2FjeS10cnVuaworMjM3MzEgNWI1YzE1YTA5NWNjN2FiYjUxNWY0ODcxNTRlNDQ0YjllOTYyMzIxMCBsZWdhY3ktdHJ1bmsKKzIzNzMyIGViZmQ4N2U4Nzg4NGUwNmY4MDJlMTBkYWFiMmU5MzE4OWVjZGJmNzMgbGVnYWN5LXRydW5rCisyMzczMyBjNDZlOTRmZDY5ODZiNmUwZWE2NmY3OGMwNDQzNTFlMTM4MzdmYmU0IGxlZ2FjeS10cnVuaworMjM3MzQgODk2NGVmODRjOTJmNGQyMTc4YmIzOGZlNDFkMWY5ZmEzNGM1OGU0YiBsZWdhY3ktdHJ1bmsKKzIzNzM1IGJiZGMwYWJmYmIxMzk3ZmY1MWJhOTczNDc3MmJjY2U1ZWYyZDk5YWUgbGVnYWN5LXRydW5rCisyMzczNiBkYzcyMDRkZDI2ODZlYTNlY2ZiOTI4YWQ4ZWYwNjk1NDNkMjUyMDg5IGxlZ2FjeS10cnVuaworMjM3MzcgOGQ1YzAwMGUwZTViNDQzODhmNTMzMzkyYmUyNjA5N2NhMzg1ZjNhZiBsZWdhY3ktdHJ1bmsKKzIzNzM4IGE1YTMwYmEyODk5ZjU3ZTlkZWY2MWZjNzliM2M1YzI0YzQ2YmI2MTEgbGVnYWN5LXRydW5rCisyMzczOSAyZjA5NWMzZTAwN2RkNzc2ZDQ3NDQ5Y2Q4MWE1YmM2NmZjZDA5YjY5IGxlZ2FjeS10cnVuaworMjM3NDAgMGNiMjg3Y2Q3NTQ3YTg0N2M2MjQzZWVkNjU2MTQ1NWYyMjI1MDViNiBsZWdhY3ktdHJ1bmsKKzIzNzQxIGMyMzk4OWUyMmZmYTUwMTE0ZmIxNWZmODgyZGYzODUwZmI2MzJjNGMgbGVnYWN5LXRydW5rCisyMzc0MiAwNzFjZmVlOGQ4ZWI5YWMyOTY4M2FhZjgwMDQzN2U0NmE4MDQxNTE0IGxlZ2FjeS10cnVuaworMjM3NDMgNzY5ZGY4NWQ3MGJjMTNmZjBkYzQyNWU0M2Y0NmQ0Y2U3NGU3MWM0ZiBsZWdhY3ktdHJ1bmsKKzIzNzQ0IGRkMGNkZDNkZWZkODM5Zjg4YzZiZmVmYTFiYjAwYjRlMDhmMTc1ZDAgbGVnYWN5LXRydW5rCisyMzc0NSBjZDk2YzRiMDFmZjBmMGE4MzEzZWMwMzFmYmQzNjA0YTY4MmIwMWEwIGxlZ2FjeS10cnVuaworMjM3NDYgOGY0NzMxNzliMDczMDA5NGYyYTU4MDg4ZjRjMGMyZTdiZWI0ZTQ3OSBsZWdhY3ktdHJ1bmsKKzIzNzQ3IDVkNjc4MzU2Yzg5NDI5YjJlNGI5M2NhOWZjNGFmMTBjNDQ2M2VmY2QgbGVnYWN5LXRydW5rCisyMzc0OCAxYTk0OTRmOWVkYjI3MDIxN2Q2ODAwODQ4ODIwOWEyMjVmZGQ5YjllIGxlZ2FjeS10cnVuaworMjM3NDkgNGFmOGQyNGZhNjkxZWVhMWEwZTZhMWY1MDAxNWVkM2VhOWFlNDRkMCBsZWdhY3ktdHJ1bmsKKzIzNzUwIDRiZmRiYzgyMzEwZjFiYzM1YTZkMGI2ZTRhZDJhNTIwNDBmNDlhNjcgbGVnYWN5LXRydW5rCisyMzc1MSBiNjkyNzNiZWUwOTUwY2Q3YzkwYjIyMzIwNWVlM2M2ZTZlZmJkZDc2IGxlZ2FjeS10cnVuaworMjM3NTIgYmU2N2I2NmU1ZmVkMGY3MjY2Y2VlNzkzZDE2ZjlkYWIwYjg0Y2MyNSBsZWdhY3ktdHJ1bmsKKzIzNzUzIGUwOWZiNDg0ODc2NTM1MjhmZTY0MTJjM2MzMzQ2MWE4NWIyNDQ4ZGQgbGVnYWN5LXRydW5rCisyMzc1NCA3Y2JkNDA3YmU2ZTdkM2QxNmQ3Nzg2NDJlZjEyMmE3MDA2MDIxYjI1IGxlZ2FjeS10cnVuaworMjM3NTUgMTQ5YTY1ZmE0MjdjMzQ5NTliNjIxZGZmYWQ3MjU4NmY3ZWRjYTgwYyBsZWdhY3ktdHJ1bmsKKzIzNzU2IGJmNGZmMDVlYWI1MjA3YWQwNjZlZWIyMDUzMTQxMmE5OTU5ZDVkZTAgbGVnYWN5LXRydW5rCisyMzc1NyAxZDllNjlmY2YwZjhkNGY1MTYyN2VlZjIxZTllZGNkZDFiYWQzNjg3IGxlZ2FjeS10cnVuaworMjM3NTggYzhiMGU5OTQ1MTU5OWY1Yzc3MTc4YjE2MmVhZDYzNDUyM2MxZTVkMCBsZWdhY3ktdHJ1bmsKKzIzNzU5IDY4ZmVmYTk4MmM1YzI5MWU5NzljN2MyNjI2NTZhNWM1MWQwYjBkZjMgbGVnYWN5LXRydW5rCisyMzc2MCA3Y2JkMjg4N2Y2MGZjZTNlNGE5NDY5MmEwOTA1NGZlM2ZiMTQ4OTE3IGxlZ2FjeS10cnVuaworMjM3NjEgYTliMTlkYjE4MGEyNjAwYjAyMWIzYzY4MWU2YmZjOWQ0MzUzNjlkMyBsZWdhY3ktdHJ1bmsKKzIzNzYyIDJiYzQxODNmYjU3ZTY5ZmExNjBkYzI0MWQ0OGVjODk0YTUwM2Y0OTYgbGVnYWN5LXRydW5rCisyMzc2MyBhMGM4YzJlNWE0NGQwODcyYWM1MjNmOGQ4Yjk4Zjc1Njc0MTRmM2VjIGxlZ2FjeS10cnVuaworMjM3NjQgZmRkYWNlZmVlYjM2ZGZhMjZiMTUxMmE1NzFlZGExNjg4ODNmZWNjOSBsZWdhY3ktdHJ1bmsKKzIzNzY1IDczM2NiMjY4YWQyZmIwYjc0MDdjY2NmNWQ4NWEyNzlmZTM3NGI4MGMgbGVnYWN5LXRydW5rCisyMzc2NiA2NDI2YTVhZGJmNzc1M2JmMDZjN2M3NWRkNDBhMTZkZWNkZTQ3N2YwIGxlZ2FjeS10cnVuaworMjM3NjcgODQzMzFjOGQ5OGE0MWFkZDkwZDdiNjcxNGZmNDNmOThmOWZlNWJjNSBsZWdhY3ktdHJ1bmsKKzIzNzY4IGUwODY0YWFjOWI2YjI1ZDI3ZmMxNWRhZjljNjg5YWVhOTczNTUwZmQgbGVnYWN5LXRydW5rCisyMzc2OSA5Mzg0MWM1ZjQ3NWIxMDBhOGMyNTRmZGZkYTYzOTdkMDc0YzI0NTUxIGxlZ2FjeS10cnVuaworMjM3NzAgOTdjNzVmOTgxYTllNjI3M2Q3M2M2ZjJkYzE3YjIyMzBiZmYxMDc1YiBsZWdhY3ktdHJ1bmsKKzIzNzcxIDM2NGMyMzhhNjg3MTBmZDk0NjMyYmQ1MDg2MGUxZDhmYjUzYTRiNTAgbGVnYWN5LXRydW5rCisyMzc3MiA4ZTBjMzE4NDljNjQ4ZTdkMzZlZmJiZDFjZTc1ODFiYzVkNDE5YjYxIGxlZ2FjeS10cnVuaworMjM3NzMgZGZjOWYyM2M4NjU1MzQ1MzMyMzE1ZGQ3MjRiM2FlYTU3MDc0ZDM3MyBsZWdhY3ktdHJ1bmsKKzIzNzc0IGJkYzQ4NmM2NmRmMDRiYTBkNzQ0OTE5MWE3NmVjOTc2ZThhYjM3ZGIgbGVnYWN5LXRydW5rCisyMzc3NSBjMTNhNDczY2UxYjdlZGRiYjA4ZGYwOGI2M2NkMDRmODg5NTAwNTQyIGxlZ2FjeS10cnVuaworMjM3NzYgZGZiMmVmYTU1OTY3MmI4N2VlYTBmNTdiNWU1OTY4NTA2NmI1NTAxYSBsZWdhY3ktdHJ1bmsKKzIzNzc3IDYyYjIwNzU4ODg2NmNjNmY1MGU1NTA4ZjNhYWYzMWJlOTVjOWNjMDkgbGVnYWN5LXRydW5rCisyMzc3OCBmOTM4Y2QxYmE5NGVjNGUzMjczMDA1NDA0ZTA5YWFhODUwMDA2YjlmIGxlZ2FjeS10cnVuaworMjM3NzkgMDZmMTI1NGQyMjgwOGVhZDE4MjAyM2FhNWM2NjQ5ZDAwODFiN2U2YiBsZWdhY3ktdHJ1bmsKKzIzNzgwIGQyMTE2MGE5MjE3OTEzODljMTI4NTZmYjEzZTUwZjM0OWI1YzNmZTQgbGVnYWN5LXRydW5rCisyMzc4MSBkNTFmZTUyMGU1ZmRjMDIwYzMyNzVkYmE0MDAyMTAyYmIyODc2ZTE4IGxlZ2FjeS10cnVuaworMjM3ODIgMjNkYzdiYjBiZTRmYjc3ODY4ZTA1Mzk2ZjE1MTAxYzk1ZTBlOTQ4OSBsZWdhY3ktdHJ1bmsKKzIzNzgzIGQwMWM1ZjI5OTE1YTI4YzgzOGE0NzI1Mjc1M2UyM2Y4NWY3ODViMTkgbGVnYWN5LXRydW5rCisyMzc4NCBiYzNjODQxOTg3NGM2ZTFmMzg5Y2Y1Yzg3OTdmMjAxODAwNzdhYWQwIGxlZ2FjeS10cnVuaworMjM3ODUgY2I4N2JkOTdmNzQwZjE3NTFhZmZlNDgwMWUyNTFiMjlkMDkzMWY3ZiBsZWdhY3ktdHJ1bmsKKzIzNzg2IDNkMTM0MTdhNjNlMGZkNzM1YTg1ZTJkMWIwNmM4ZWUwNzE3YzhmMDEgbGVnYWN5LXRydW5rCisyMzc4NyA1NGE4Mzk2MDQ1NDAzYzBlMjg3ZjJlY2ZkMWIzOGE3MGZkMGUyODE2IGxlZ2FjeS10cnVuaworMjM3ODggZmQ1NjE0NGE5NmU4ZmE2NDRjNWUyOTE4OWI2NTM5MWU2YTVlNTkzZiBsZWdhY3ktdHJ1bmsKKzIzNzg5IGM5NDhiY2IwNDE1ZTBjMzJlYTQxMzg2YmY4NDQzZmRkMDRjYzkxOTIgbGVnYWN5LXRydW5rCisyMzc5MCAxZjNjMWU4MzFmMjE2YTQ5YmU2YzA4MzIzYTczMDYyOWNmN2UwOTU3IGxlZ2FjeS10cnVuaworMjM3OTEgM2QzYjZiNGNiNzlmMzk5YjIyZTIxNDlhNzcwNzJhOTI2MTczZjIxNSBsZWdhY3ktdHJ1bmsKKzIzNzkyIGNiMzM0YThjOGRkMjNhNTY2ZmRhZDBiZjdiMDQ0NWMxMjlkYWUyYzcgbGVnYWN5LXRydW5rCisyMzc5MyBkYmZlZDNiZjE2MGVlZGEwM2QzYTMyMDE3OTlhMzFhMzUzNWU4NDM2IGxlZ2FjeS10cnVuaworMjM3OTQgZjBlMzNjNTdlNDZlODAxMDE0ZDk3OGQxMGJjYWNjYjQ1NmQ5ZjkyYiBsZWdhY3ktdHJ1bmsKKzIzNzk1IDliODRlZmJmNmIwZDBiNzc2NzMzMmQyMzRjM2U3ZTQ2ZGY0MTI2MzEgbGVnYWN5LXRydW5rCisyMzc5NiBiYzEzOGJjNzNjZGQxYzM1NGY3MTllNzYzMzY3YTc5NmMwMWFkMzExIGxlZ2FjeS10cnVuaworMjM3OTcgNGY3YmVmZWMzNWIwMTk3ZjRiNzkwNzJhNThhMTg5YWU0Mjg3NmJmMiBsZWdhY3ktdHJ1bmsKKzIzNzk4IGMyMDA1YmI4NzliNDY3ZDU0NzlmZjMyYWNjMjdmNTg2NDRjYzczNTggbGVnYWN5LXRydW5rCisyMzc5OSA4MGI4YmZhMDQ0MDZiZjNmNDkxNWY3YmFhMmJjNmM0MGY3MTM0ODE0IGxlZ2FjeS10cnVuaworMjM4MDAgNGIxNjE1YmY2ZWIwOWQzMWM3NjIxYzY1YTllZjkxMzQxM2U5MzliOCBsZWdhY3ktdHJ1bmsKKzIzODAyIDAxYWY5MWFlY2NkNDQ3MjU0MjQxNzllMjdhZjY4MzFmMzkzNjg5NTkgbGVnYWN5LXRydW5rCisyMzgwMyBmZTFiNmNlNGViOTM2MzU5ODkyYzQ3MGZjNzk1MjI5NzZhOTQ0MGViIGxlZ2FjeS10cnVuaworMjM4MDQgMmQ1OTlhMzZiNjdhOGMzMGNiOThhNDNkZWY0OWM3ZWRmMzdlZDlhYSBsZWdhY3ktdHJ1bmsKKzIzODA1IGFkMjY2MjA5NWQ3NzI0NjkxZDBjNDg0YWZmNDZjMmJkMjk2ZDQ4ODAgbGVnYWN5LXRydW5rCisyMzgwNiBmNTY3YjQ1NzM3YzBlMzQ4MGUyOGQxMmYxMTAyODgzZTA1MjE2Y2I4IGxlZ2FjeS10cnVuaworMjM4MDcgMjk0OTAxYWI4NjMwYjVkYzA5NzAzY2ZjMDc3MDhhMjQ2ZmFlNGFlMCBsZWdhY3ktdHJ1bmsKKzIzODA4IGE4OTk1YTZkZThkMDA1ZTY2MzY2ZTczMTVjNjBmODMwOThhYWQ0MDIgbGVnYWN5LXRydW5rCisyMzgwOSA0YmE0NTQ4YmE5NDE3OTQwZGUyYmI4MzM5N2MxMmYzYzlhNjMxMzk2IGxlZ2FjeS10cnVuaworMjM4MTAgMzY3MTRiOThmZTUxMjBlNjUyNzFkODAzMWU3ZGFlYzlmZTU5OGNjOCBsZWdhY3ktdHJ1bmsKKzIzODExIDczYTEzOTVhMjM1MTY0OTA5NjlhMDQzMWY2ZDMzOWRmMTgxNGY0MzIgbGVnYWN5LXRydW5rCisyMzgxMiBhMTJjY2RiY2U4ZGE5M2ViYTY1YjhmYTRlNDI5YzUxNDY3ODk3YzY4IGxlZ2FjeS10cnVuaworMjM4MTMgYTU2NDI3ZTVjNWUxNzI4NGMyMmY5MjdlZjFjYjM0MmUzZTIxN2VlNCBsZWdhY3ktdHJ1bmsKKzIzODE0IGQ4ODI1NDc1YjgwMDcyZThlYTliOTg3ZmU4NmNiODMwYjk3ZTAzODIgbGVnYWN5LXRydW5rCisyMzgxNSA2YTVhMTBhNWI1MjY1ZGQxM2U2NjUwOGJmYTAxZmExYWNmZTVlZTE4IGxlZ2FjeS10cnVuaworMjM4MTYgYzk2MDhjNzkwZjZmNWZhODUxMzkxNGEzNDllNGVlYTVjN2U5NzEzNCBsZWdhY3ktdHJ1bmsKKzIzODE3IDY1ZGQ2MTU3Zjk5OTM0YmE0MTA3MGY4NmM4ZjYzZWFjOTBkMjAzNGMgbGVnYWN5LXRydW5rCisyMzgxOCA3MjJiYjFmZDMxZWEwOTZmY2ViZjBjYzAxZDFmODZlOWRhM2JiNWYxIGxlZ2FjeS10cnVuaworMjM4MTkgMDMzNmVlNWI0NmQ0MjIyZWMzMDdhNGJkZTZmN2ZiNWMyZDlhZWJkNCBsZWdhY3ktdHJ1bmsKKzIzODIwIDk0OWJhNDdlOGYzMGNhN2YzZDYzODIxOWM1MzlmZDE3Y2Q3ZWUwZGYgbGVnYWN5LXRydW5rCisyMzgyMSA4N2U1ZmUwNTZkMjk5ZjVlYTJhYWM1MmQ4YTc4OTBkNjE0MmVhNzcxIGxlZ2FjeS10cnVuaworMjM4MjIgYWU1MDdjZjY3ZmJmYzQzZDJmMTkxODk5MjAwODFmYzQ3MGQyN2Q3OSBsZWdhY3ktdHJ1bmsKKzIzODIzIDRhMjU3YTU4YmU4YmZiNzMzMWFmNzZhNmI5MDI5NDhkMWY4ZDQzNTkgbGVnYWN5LXRydW5rCisyMzgyNCBkYTgxMTI1YjJhZjhlYWYxMGJkMTMyZmFiMzBhZTc2NTcyYmQ2MzZhIGxlZ2FjeS10cnVuaworMjM4MjUgNDczYWRiZjUyMTcxODQ4ZDIxNzMzMTYxNDgzYTMwZTU1NjAyODcyNCBsZWdhY3ktdHJ1bmsKKzIzODI2IGVjNzJiNjNkMjY5YWViOWEzMjkyODRiMDBkN2U2YWI1ZWNjN2E2NGMgbGVnYWN5LXRydW5rCisyMzgyNyBkMDYyMWE2NjljNTY5MGQwNmJkZTI4NTBlNmIzNmQ2OTVkMzM0YzRhIHIyMmIxLWJyYW5jaAorMjM4MjkgZWMwNWFmYWZlMTNiOTVkN2Y2NGFhNTEyYWFiNzZlN2UwN2M3ODBmNSByMjJiMS1icmFuY2gKKzIzODMwIDM3N2IwOWFjNzI2ZTdlYTJlMjY1ODQyNzFiN2EzZGE4ZDZmZmZhZDMgcmVsZWFzZTIxLW1haW50CisyMzgzMSA5MDU4ZTQ5YzZjNTdkMjM3YjkwYmFjNjQwZThjNTA0ZTgwY2MwMmI0IGxlZ2FjeS10cnVuaworMjM4MzIgY2UyYTNmMTU2MTVmNmJhM2FmNzI3M2VjMTM1MzIyNGNiZWI5OWFiYiByMjJiMS1icmFuY2gKKzIzODMzIDhkZGRmZmZiOWYyYmI3ZTRjOGY3YzFjOTJlNWJmMjc2ZTIxNTM2MWYgbGVnYWN5LXRydW5rCisyMzgzNCA2Zjk5MDJhY2UxOGQ4ZWI2ZjBiODAyYmU2OTI2YTNlMzY4OGJmYzY2IGxlZ2FjeS10cnVuaworMjM4MzUgMDhmMTY1ZjEzNWE4YTY0MzYwZTRkODIzNTlmODQ0MjVkYjg2NTNkZiByZWxlYXNlMjEtbWFpbnQKKzIzODM2IGNiOGU4YjQyY2RmYmViNWUxNzQzMDRjNDFmOWE0ZjljYjg0NzhlNjEgcjIyYjEtYnJhbmNoCisyMzgzNiBlOWZhZDU1ZWY3MDRkYmViY2RlNWUxNGNiOGRiOTZhZjg0YzIyZTU1IHIyMmIxLWJyYW5jaAorMjM4MzggNjE4MDljNTE0YWQ4MDY5ZWYyNDMyMzYyMGQ2M2M0ZWQyY2Q0ZWMwZiByZWxlYXNlMjEtbWFpbnQKKzIzODM5IDgwNWYxODRiNmRlMDlhNTI5Y2EyMDM3YzE2M2RlYTU3NjRmZmYyYmYgcmVsZWFzZTIxLW1haW50CisyMzg0MCBkMDY0NDZkNGU3OGRhMjM0MDhiZjU4NTViMjMwOGNmOTM4YmE2NWIyIHJlbGVhc2UyMS1tYWludAorMjM4NDEgNzExMTM1Y2UxZTU0ZjVlNzY5MTE1MDEyZDFjOWQzZmRkYzM3ZDMxOSByZWxlYXNlMjEtbWFpbnQKKzIzODQyIDU0MWY4MjVjN2Q2MzdjZWM5ZGNmZWNkMjRiYzY4NTZhOTE2NTQ3ZWQgbGVnYWN5LXRydW5rCisyMzg0MyBhOWJhYmExNmViZjM5ZDFjOTk4NzAwMGQ3N2M4ZmRmZWUzZWIxYWI2IHJlbGVhc2UyMS1tYWludAorMjM4NDQgNWY0OTUwZGQzN2M4YTliNzNjNDIxNmJhNzc4ZTQyYTEzMTVkZmE3NSBsZWdhY3ktdHJ1bmsKKzIzODQ1IDVhZjZjODljOGNiNzVmMzM3ZDMwNWU5NzY4NzkyOTAwMzliM2Y0ZDkgbGVnYWN5LXRydW5rCisyMzg0NiAxNTFlNDVlOThjMTFkMzU2MzAxOTU3YTMwMGU1MjNmODFhMjNkMzhjIGxlZ2FjeS10cnVuaworMjM4NDcgMmNiMzJmN2Y3OGMyZDFlNGZkNmVmODFiMjZjYjI0N2VhODNkYzBhMiBsZWdhY3ktdHJ1bmsKKzIzODQ4IGNlODhlYjQ2NWNlNzZjMTNhZDA5ZDkxMWIwYWIxZGQ5MWE3ZjM4YmEgbGVnYWN5LXRydW5rCisyMzg0OSA5MDU4YmNjZTY5ZTMxOGM4MGQ0NGZhMDNhZjIyZWE1YzJiMDI2ZjYwIGxlZ2FjeS10cnVuaworMjM4NTAgODRhNTg2YWNkYzAyMzczM2FhZTNmZTFkYThlZTMxMzNiMzdjYTUzZSBsZWdhY3ktdHJ1bmsKKzIzODUxIDM3NmVlMTc0ZWNkMDc3NDIxMTY5Yjg5MDMzYzA0Nzc0ZTRiNDU3YmIgbGVnYWN5LXRydW5rCisyMzg1MiBiZjAzYjhlM2VmOTNhZjExNTA5MDlkOGM5NWNjMzMzY2I0NjAzN2U4IGxlZ2FjeS10cnVuaworMjM4NTMgODBiY2M4YjdkNjE5MGViNzNlMGExMWY0MWY2NDA0ZTNlYWM0N2E1ZCBsZWdhY3ktdHJ1bmsKKzIzODU0IGI1Y2EwNjg3YmE2YTgwOTZiMTFiYmY4ZDZlNmU5NWUwYmFjYmZhYWUgbGVnYWN5LXRydW5rCisyMzg1NSA4ODdhOTNmOWQ1ZDVkOWNiZmEzOGM0YmViZDIzMjUwOWNmMzRmZTBhIGxlZ2FjeS10cnVuaworMjM4NTYgN2QxMjU3NDg1YWVmMmU3YjgwZjcxZDdmZWZiOGIxMGUwMWJhMjhhNCBsZWdhY3ktdHJ1bmsKKzIzODU3IDliZDYwM2Q0MzRmNTUyYWI4MzNiMDMzMTU1NTc1NTA4MWY3YWFlYzIgbGVnYWN5LXRydW5rCisyMzg1OCAzMjVkNTEzYTUwYmJhOGU5MDBiYjZmYTQyZWFiMjYwNGNhZGUyMmU0IHJlbGVhc2UyMS1tYWludAorMjM4NTkgYWFkNzYyNTAzZDExZThjMjQ0MzI2NWZhOTU0MzJlMzAwM2M3M2ZiYiBsZWdhY3ktdHJ1bmsKKzIzODYwIGQzMjk4NDM1ZDg1YjU4NGI2NTA5ZmIwOGJiY2MyNzczZWNkYWY3NjMgbGVnYWN5LXRydW5rCisyMzg2MSAwNTBlZDhhMjFjZGU1ZGRmM2VmYjVhZDVmMzMyZThkZWI2MTRlMDIyIGxlZ2FjeS10cnVuaworMjM4NjIgOTI0NmI2YzdlNzQyMmJjNmU5MjM1NzNjMDJhMjMzNzU2MTk2OTY4MCBsZWdhY3ktdHJ1bmsKKzIzODYzIDgyYmNmYWM4OTY0MjVjYzhhZmZkNWM3MzZkMTZlODEyZWMyNWM4NjcgbGVnYWN5LXRydW5rCisyMzg2NCAyNWQ3NjRkODgxNDkxYzczZDEwMTk4ZTQ4Mjg0ZTFlZTIwYTRmNTVjIGxlZ2FjeS10cnVuaworMjM4NjUgMGQ1ZTZmYzA0ODFkNjE0YWNmYzkwMjRlZDM3ZGJjMTVjMDMwYTUwNSBsZWdhY3ktdHJ1bmsKKzIzODY2IGM0ZDlkODY3NDUwNjJlYTFlMzI0YjE5NDdiMTc3OWE4MWE0YTk5MGYgbGVnYWN5LXRydW5rCisyMzg2NyBjYTVmMmZmODM5NzkyYWM4MmU5NWI5OWEzZThlNTFiOGQwMjNlMjJhIGxlZ2FjeS10cnVuaworMjM4NjggYjQ3ZTE1ZmE0M2U4NTFjMzYwNzJiOGY2ODg4ZmYwNTE3Y2IyZWQ2MSBsZWdhY3ktdHJ1bmsKKzIzODY5IGViNmI5NTNlY2Y3Y2E3ZWYzNTNjODIyOTUzMWMyYTdiOTAxODgyNmQgbGVnYWN5LXRydW5rCisyMzg3MCBmZjU3YTFhMzcwYjM1MDFmMjUyMjZlMmFkMjZiNmM3MmRjNGNhNDIwIGxlZ2FjeS10cnVuaworMjM4NzEgZWViZGRkM2I5NGE1MzBjYTkxNTAzYTQ1YThlNmIyNWYwMmVkZjAwOSBsZWdhY3ktdHJ1bmsKKzIzODcyIDVjMWRmZDkyODc3ZDQ1N2Q3NTExYTVjZjdmNDhhOTI2MWU3MTRkYjMgbGVnYWN5LXRydW5rCisyMzg3MyA5MDA5YzI1Njk0ZDFmYzFiYmNlNTVhMGRhMGQ2MGE3OTEwYmI4NzRhIGxlZ2FjeS10cnVuaworMjM4NzQgNGI3OWQ3ZDkxYjRmOWEyYTNlOTNlZTI5MzhkOTU0ZWRjYjdlYTY4ZiBsZWdhY3ktdHJ1bmsKKzIzODc1IDc5NDU2MzlkZjI2NTAwY2FjZGRkMDQxNjhhYThlYzQ0YjdjMjFiNzUgbGVnYWN5LXRydW5rCisyMzg3NiA3MzcwMmQ3ZjEzYjFiMTU5YTM4ZWVlOWU3MGZlZWI5N2ZmZDk2MWE3IGxlZ2FjeS10cnVuaworMjM4NzcgMmQ4ZGJlYmY4MWUwNmExN2NlZjRiYzhmZGZmNDNmMzZkODU3MTFjYSBsZWdhY3ktdHJ1bmsKKzIzODc4IDdmM2QwY2MyMTg4OTk2ZmYwMzFkYjdhM2JmNzJhOTk4OTk5YWY3Y2QgbGVnYWN5LXRydW5rCisyMzg3OSA2ODlkMGJiYzkxYjEzOTI1OTI3M2Y0YWNhYmJhYzEwMTM2NzlkNmFlIHJlbGVhc2UyMS1tYWludAorMjM4ODAgODI4Y2IwYzJjNDgwNWRlMzE0ZGIzMjA0NDU0M2Q1MzliNThkMjRiMyBsZWdhY3ktdHJ1bmsKKzIzODgxIDdkY2M4YTI4MTMzYTIyYjA5NDNlODUxYjU4YmFiN2Y5N2FlZTQyY2MgbGVnYWN5LXRydW5rCisyMzg4MiA3MTZhNDA2ZTliNGZiM2Q1YTc0NzA5NWYwZGU0ZWJkOGU4ZmM5ZDVjIGxlZ2FjeS10cnVuaworMjM4ODMgYmVhOTQwNGNlNjJjZDI0ODNhY2JkN2YzODE1ZWIxYmUwMTJlM2RhMCBsZWdhY3ktdHJ1bmsKKzIzODg0IGJmNGIzNzUxOGMxNDc3MmVhMjNlYWFjYmYzMDAyNzMzMzQ5NzFhNjIgbGVnYWN5LXRydW5rCisyMzg4NSA0MDNkZDU5Y2E3ZDVkZjAxMjAzOGRlYzdiMzQ5NTA4ZWNhZGFhZDQxIGxlZ2FjeS10cnVuaworMjM4ODYgMzAyYTFjMDI1ZGM3OTJlYTg4MmI5NDA3MDM0Zjg0NjgzNDRhZjg3YSBsZWdhY3ktdHJ1bmsKKzIzODg3IGEzZDZiMzFlOGJiOWZkY2RlYzQwZDgyNDUwMGVkYjU5MGE1NGJjNmUgbGVnYWN5LXRydW5rCisyMzg4OCBiOTc0NTIyOWJkMTMyYzcyNDlhOWFlZGQyMjk5NzBmZDYzYWNkYTNhIGxlZ2FjeS10cnVuaworMjM4ODkgNTdiNTE5NjZhNGYxZjA2ZjMwNzJlNjkxZDk4Yzc4YzcwNDI2NTE5NSBsZWdhY3ktdHJ1bmsKKzIzODkwIDBiMWMxMzk0YmVjNjExOTNhMDJkYTliMDU2N2Y4NGE1ZjMzNjJhYzggbGVnYWN5LXRydW5rCisyMzg5MSBlNGY1MTM4MjkyZTY1OWJlMjY1ZmQ3MDBiNGEwOTZhMjg1ZGRlOWY5IGxlZ2FjeS10cnVuaworMjM4OTIgYjZmODE5N2Y0ZGY3ODRhYWFiYTY4ZTI4ZmVhM2I0MDRkNjljYzBiMyBsZWdhY3ktdHJ1bmsKKzIzODkzIGFhNTY0NzU2OWVlMmFiMzQxNWZiMmQwODM2ZGEzMzFhMzAzNmU5ZGIgbGVnYWN5LXRydW5rCisyMzg5NCA0ZmI3NzI3ZTRmNDc1YmVhYzA4NDBlZjVhNDFkYTZkYTVlMzcyZTA2IGxlZ2FjeS10cnVuaworMjM4OTUgN2MzODFkZDA3NzljYTc2YzlmYjA2MTU2NTJlODc5NjliNTY0MmNkYSBsZWdhY3ktdHJ1bmsKKzIzODk2IDJjMWE0NTg0YTcwNDMzNWUwNTY5ZTk5MDUwNjg2NDRjZTA5ZmUxZTcgbGVnYWN5LXRydW5rCisyMzg5NyAzZDI5OWIxNTY1MTExOGNjOThmZWYyOTM2ODViM2M5NjI1OWI4NTJjIGxlZ2FjeS10cnVuaworMjM4OTggOTdiMThjMDlkMjJhMmEzNDY0MTdhMWMxMDdmMjVkODU3ZGU3NzVmZSBsZWdhY3ktdHJ1bmsKKzIzODk5IDE1OTg1ODhlZjFhZGI3ZTRmOGQ5NDE2Y2Q2MjUxZTlhNmU1ZjcyYTcgbGVnYWN5LXRydW5rCisyMzkwMCBhY2M3ZTNiNGQwNDJmZWU1YTc3NDIzMzk4MTRjZTg3YmEyYzllNTZmIGxlZ2FjeS10cnVuaworMjM5MDEgZTQ5NmI4NTIyOWM3OWJkMDJhOWM3NmM5MjM3ODg3N2NhMWJjNjhjNyBsZWdhY3ktdHJ1bmsKKzIzOTAyIGQ1YjMxZWYyM2NlYmUzMWYzNmI3MTBlZTQ1MDNmNGUyN2E3NjU1ZTIgbGVnYWN5LXRydW5rCisyMzkwMyA2Yzg0ZDU1YWJiNThhMTM1N2E3MGM4OGFlY2MzOWFmMDc1NzY1NWQwIGxlZ2FjeS10cnVuaworMjM5MDQgZmVkOGExODg5NGY1ZjliYmQ0Yzg1ZjUwZTMwNTE1N2JkNDFlZGMxYiBsZWdhY3ktdHJ1bmsKKzIzOTA1IDg5OWJlYmM4OTA0N2U1MDgwYjMyMDliNDJkMjA4OTZkNWY1MTM2ZTAgbGVnYWN5LXRydW5rCisyMzkwNiAwNGYyODAxZDk5NzcwZjU5MzQ3Y2E1ZWU1ZTFkOWZjZTcxYTkzOWM4IGxlZ2FjeS10cnVuaworMjM5MDcgM2Y4MGM5MWI1YzNjZmRiNTRlOGEwZjdiZTZlYWZmMWQ3ZDRiOGRmNCBsZWdhY3ktdHJ1bmsKKzIzOTA4IDhiOWUyZmJjYWUxZmZjZmJjYzI0ZDc1OTYwMWJiNWY4YWFiOTA0MDIgbGVnYWN5LXRydW5rCisyMzkwOSA2ZjJjYjE4MDY4ZGRmOTA2NTJlNzQ5OTc2NzgzY2M5MjIyZmQ0MTM0IGxlZ2FjeS10cnVuaworMjM5MTAgYWE0NmM2NjE4OGQzNmM5NTUwMjNkMTJiZDBkY2I5NTI1ZmM3MWMyYiBsZWdhY3ktdHJ1bmsKKzIzOTExIDcxYTliMDUzYWI0MmIyY2QyYmI1MDc5ODRjZDA5YjQ1YjNhN2RiZGUgbGVnYWN5LXRydW5rCisyMzkxMiBjODBkYWZjZTFiNzRhNmFkZjk0MzIzMjdhY2UwOWY1MGI1M2JjYzZhIGxlZ2FjeS10cnVuaworMjM5MTMgYWI4MzNkOWEwOWI5ODBhZjBkZmI5NzcxNzAwNjg1OWYxYjI1OWVmOSBsZWdhY3ktdHJ1bmsKKzIzOTE0IGVmNzhlYzYwMmE0MDYzODA3ZDA5Y2Y0ZmUwOTFiZDY0YWUzNmU3MTYgbGVnYWN5LXRydW5rCisyMzkxNSA3YzQxYzRmYmY5YzczYzJhNzVmNDMxZTM3ODU1NzUyZjc4NmJhOWZmIGxlZ2FjeS10cnVuaworMjM5MTYgYjA3ODk5MWNiNTZhM2QwM2YwNGM1ZDI0MGEyNWU0NzFhYjAzNTc4ZiBsZWdhY3ktdHJ1bmsKKzIzOTE3IGNhYmI1NjhhNTU4YjFlNjM0Y2U1ZTNmNTAxMTJiNTk3NDgyODZlNTEgbGVnYWN5LXRydW5rCisyMzkxOCBkZDc4YjFhNzFmM2VhZjczMTIxNWQyNDgzZWU1YWE0NGU3MDRlOWQ5IGxlZ2FjeS10cnVuaworMjM5MTkgZmVjOTUwZDhjMjVkN2I0ZmFiMmM5MzE0OGIyNDY0OGNlYTMzMWU5NSBsZWdhY3ktdHJ1bmsKKzIzOTIwIDUyOTU3YTJkZmFmZTY5MDQ1OTg5NjMyNDIwM2I0YmZiZWQxYzMwYzUgbGVnYWN5LXRydW5rCisyMzkyMSBlYjAwNGNjMDA4ZDI3NzZjOGE4MTAxNzBhMTM3YjUzNTRlYjExZjMxIHJlbGVhc2UyMS1tYWludAorMjM5MjIgOGRlYjNiNWZkN2MxNzg5ZmI2ZDI5Yzk4M2E0OGY4NDUyOWVjODM1MiBsZWdhY3ktdHJ1bmsKKzIzOTIzIDJkM2NlZTlmMTYzMzIwYWMzNDYwNzg1ZDAzMWVkYTM4MTY1NGViYTMgbGVnYWN5LXRydW5rCisyMzkyNCA3NTdiY2ZhMjAxZGMxOThhNDYyNzgyMjdiMzlkNDMyMDI4ZGE3MDA4IGxlZ2FjeS10cnVuaworMjM5MjUgZWRkOWQwYjNjNDdlZmFlN2ZiMjAxMGUxMzMyOTBiNTZlYWFmMGI3ZiBsZWdhY3ktdHJ1bmsKKzIzOTI2IDczNDQ2ODdiZjJjMGFiOGZkZDlkNTBkNzE3MTk4ZjdmMTc0ZDdlY2MgbGVnYWN5LXRydW5rCisyMzkyNyBkMGViMjAzNmVjY2FmMjY0ZTk1ZmE1YWE4N2FmNGZkOTJkNGY3ZDRlIGxlZ2FjeS10cnVuaworMjM5MjggMzkzNTU2YWRiMjk1MGEzNzcyYjQxYTY1ZmNkODZlYWJmMWJkYzlhOCBsZWdhY3ktdHJ1bmsKKzIzOTI5IGRjYWEyYzg5NDMwZTc4ZmVjMTFhN2ZhZmI4M2I5N2E3YTkyMGNlYTIgbGVnYWN5LXRydW5rCisyMzkzMCBjZTEzYWEzMWUxODlhMDk4MWRjNDVjMmYyNTY2YzA3YjE0NWFkMjFlIGxlZ2FjeS10cnVuaworMjM5MzEgYzA1ZDQ4OTUyMzRjMTBlYjlkZjFlMzFhOTI4MDEyYzY5ZGU3OGE0NiBsZWdhY3ktdHJ1bmsKKzIzOTMyIGY3MDA5MTY3ZGQ2N2MzOGRkMDRhZDI1NjMwOTc3MzZkODA4YTgxMTkgbGVnYWN5LXRydW5rCisyMzkzMyBjNDc4YTUwOTFmM2ZmZmJkNWE5ODkyM2NmOThiYWFjMjE4YmQ3Mzc2IGxlZ2FjeS10cnVuaworMjM5MzQgNWNkOGM4N2E4OGFlZDgxYjQ3NGEwZWFmMjcwMTgzYjUxMzY0ZjAzZiBsZWdhY3ktdHJ1bmsKKzIzOTM1IDAzOTdhNzVhNWJmZGQ1ZmNmZDJiMTRiZGJhNWE4YTRmZjVjZDU5ZGUgbGVnYWN5LXRydW5rCisyMzkzNiAzY2UwM2UyZjAxZWY3ZjAxNmYyNDE4ZjJlMjc3NDkxZDc4ZTM4ZDE1IGxlZ2FjeS10cnVuaworMjM5MzcgODhhMjQyYmZiMjNhYjBhMTVkOTRhYjgwMGQxNzYyMWU5ZmNlMDAxNiBsZWdhY3ktdHJ1bmsKKzIzOTM4IDk4ZTVkOTAxYmZkZmQ5MjA4ODM0NDMzZmVmOWQyODA1YTg3ZDgxMDkgbGVnYWN5LXRydW5rCisyMzkzOSAzZTliODVkZTQ0N2I5YTYwN2M2Y2UyOTc0YWZjZGQ5OWIwOTFmOTg0IGxlZ2FjeS10cnVuaworMjM5NDAgNTM1ZGMzNjUwYmVjZjUzZGVhZWM4Y2YwMGZjY2Q0NmZlNGMxZWEzNyBsZWdhY3ktdHJ1bmsKKzIzOTQxIDNjZmQ1NzhmNjQ4YjI0OGVkZjIwNzhiZGMxZDI0ZWIwYjI5MDRkNjcgcmVsZWFzZTIxLW1haW50CisyMzk0MiAzZmI0MDNlYWVkZTFlNjI3YWUyZjNjNjdhMTk3MDZkZDcxMGFiNDk5IGxlZ2FjeS10cnVuaworMjM5NDMgZDk1MWMyZGUwOTVjYWVjNDk2ZWI4OGRmNTFkMjUwZDkyZTRhNTkzOSBsZWdhY3ktdHJ1bmsKKzIzOTQ0IGFmOWYyOTAyNjRhZmRkNzkzYjQ3YzM3MGE2OWUzOTc1N2NkMjdiOGYgbGVnYWN5LXRydW5rCisyMzk0NSBhYmE3YTQ4OTVlNGRhZTQ5MWNlYjA0MTgxNjJjOTJjZmIxMjhkYmJhIGxlZ2FjeS10cnVuaworMjM5NDYgNzQxOGUwZDVmYzAxMGZhMTg3OWQwNjYwNzk1NjhhYWY1ODZiMTZmMyBsZWdhY3ktdHJ1bmsKKzIzOTQ3IGFlOTRiNWY3ZGQzMGY1NTQxMDE5Y2IxYzg1OGI0OTI1YmUzZTIzNDcgbGVnYWN5LXRydW5rCisyMzk0OCBmNjE0ODI1ZDMyNmFjMjc4YjNiNzk2ZDIxMTRjMDAzMzJhM2Y1YTMwIGxlZ2FjeS10cnVuaworMjM5NDkgNjFlOGYwMWRlODIxMjU4NTYzZTQ0N2Q5Y2JiMTJlN2JhYmNhNDI2ZiBsZWdhY3ktdHJ1bmsKKzIzOTUwIGU4OWMyNWNhNmIyOWY2MDUwNjc2ZTFmNmI3Y2VjYTUzYjU4MzllMGMgbGVnYWN5LXRydW5rCisyMzk1MSBlM2MyNGZjMjBhOGRiYzA2YzQ0OTQyODQ4ZDBjZWU2OTFkNTY0Yjc3IGxlZ2FjeS10cnVuaworMjM5NTIgYTBmMWMyZDJhYzllNGEyMzAzMzIzNDljNDdkNzI1NTBjNTNjNWM0ZCBsZWdhY3ktdHJ1bmsKKzIzOTUzIGYzMWIxMmE0Mjk1MWNkNzU3ZjIyYjIwMTAyNWY1Y2M1M2JhYjM3M2UgbGVnYWN5LXRydW5rCisyMzk1NCA1MDVkZDM0ZTBlZWJmOWY4Mjg5MzZiNTk1MmFmN2ZmODVmODlhZjJmIGxlZ2FjeS10cnVuaworMjM5NTUgNDMzYWU0ODM4NzAzNWYxOTY3M2YxZGM3MWQ1NzBkNDUzY2U0Y2Q5NiBsZWdhY3ktdHJ1bmsKKzIzOTU2IDk5YWQyYTlkMjBlMWMxMjc4ZjBhY2ZhODY5NjIwNjFhOTJiYTE5NmEgbGVnYWN5LXRydW5rCisyMzk1NyAzMTFhMmFiZWE4YTQ3YWMzMmEzNTM0YjFlNTlmM2JjNzlhN2M1NDA3IGxlZ2FjeS10cnVuaworMjM5NTggMzY3Y2Q4ZTVkZjQ3OTQ5NGU3Y2UwNzViYzFmNWE0NTQzZjEwNzI0ZSBsZWdhY3ktdHJ1bmsKKzIzOTU5IDk5ZWU3MTkxOTdiYTdlYzBhNDBkMzU3MWY4ZGQ5ZDE5YTA5MTc2NDQgbGVnYWN5LXRydW5rCisyMzk2MCBhMDMzMmFlODQ4ZTI2ZmI5NmFjNjAzNzllYjYzMWRiM2ZiYTJjMGE5IGxlZ2FjeS10cnVuaworMjM5NjEgODZmYjE4ZmEzNDZmOGE4YTY5Nzg3NDRmMjc2YjVkNDhlNWZiMTc2NiBsZWdhY3ktdHJ1bmsKKzIzOTYyIGMzZTBiZDIwNzc1Y2M0OWY0MzQ0YjU2YzJhNTJiYTQxM2ZjZTJiNDMgbGVnYWN5LXRydW5rCisyMzk2MyAzODM4MGQ1ZjI3ZDQwYjJjYjQ2ZGMxNWI4MDRiZTc0NDMyODY1YWIyIGxlZ2FjeS10cnVuaworMjM5NjQgNjkwMzQyMGYwYTgyNWFjY2VlZjQ5OGFjOWM4YWM1YjkwNzVlMzA0MSBsZWdhY3ktdHJ1bmsKKzIzOTY1IGQwMjA2OGQxNjNjZmNlZGVjMTA2Mjc5ZWFkMjdiOWZiMGEzOGRiMzAgbGVnYWN5LXRydW5rCisyMzk2NiBhZGY1NjVmMGY4YWU2MDg1ZWU4MGNiYmU2MGE3ZmEwYWM4YTg3MGM5IGxlZ2FjeS10cnVuaworMjM5NjcgMzk4MTM1ZTQwMGM3ZjgzYjUyZDk3NmE3YjY0ZjdmM2Y5ZTFhYjViMSBsZWdhY3ktdHJ1bmsKKzIzOTY4IDY0OGJjNzRjNDdhYjcyNjJlM2Y4MWRkM2E5NDYxMGFlY2QyMmRlNDIgbGVnYWN5LXRydW5rCisyMzk2OSBiMjI5MjA4YTJhNzI3MzhiOThlZmRkMDkxMjQ5NmRiYzJiNmI1OGY5IGxlZ2FjeS10cnVuaworMjM5NzAgZmEwYmY2Yzc5ZTA0MmEwMmFmMzNkODI4YzA4OWEzNDcwOTI4YTM0NiBsZWdhY3ktdHJ1bmsKKzIzOTcxIDVkZTNhNTk0NzI1N2JiYjE0NDY0OGQxMzYzZjRhM2MwMjYwYmFhMGQgbGVnYWN5LXRydW5rCisyMzk3MiA1ZjY4NTBkMWY5ZTg1MjM5MjFkZGExYTQ4YjkwOTY0NjZkYzM3N2VhIGxlZ2FjeS10cnVuaworMjM5NzMgNGIzZWZjNzUwMTM5NmZjMjAxZDYzODY0NWQ0ODhkZmVjN2RiZGI5YiBsZWdhY3ktdHJ1bmsKKzIzOTc0IGIzYTAwZDMxNjViZWUyMzA4ZTEyNTkzNTJlYjRjOWNlZGJhN2FiMmIgbGVnYWN5LXRydW5rCisyMzk3NSAyOTI1ZTI3YTI4MWM1MjFhM2JmMWFhMTQzMWI2M2RjOTlhYTM5ODcxIGxlZ2FjeS10cnVuaworMjM5NzYgNzk4ZjYxOTk3YzA4ZDVkMmQwNDFlZGJmZDE3NGJhNTFlODFmMjIzMCBsZWdhY3ktdHJ1bmsKKzIzOTc3IDQxMzNhYmVmNWFiYmQxYTBmYzlhZDgzMmU0NTIxNWMxNGUyNTkyZDYgbGVnYWN5LXRydW5rCisyMzk3OSAxODRiOGI5YTI2NTRjYmRmY2ZjZjU3YzQ2YjczNjkyMDZjNzIyNDE0IGxlZ2FjeS10cnVuaworMjM5ODAgZTkxMmI2ODNlZDNlMTUzNmYwYjRjOWY1ZTZlMWQzYjU2YTIwZjU0NCBsZWdhY3ktdHJ1bmsKKzIzOTgxIDMxMDQ1MGU3NGYyZjU3ZGRmZGJhYjJhZTY4YTkyYmIzNWU0Nzc0NjUgbGVnYWN5LXRydW5rCisyMzk4MiBhNDRjYzBjMjFjZmUzMTU0MjVlMzgwZTY0NmMwMWFkMmQxZTMzMzM3IGxlZ2FjeS10cnVuaworMjM5ODMgMjg5MDc2OWIxZTY5NjYyNGY2ZjkzZDBhOTgxZGM0MWJiYmM0ZGUzNSBsZWdhY3ktdHJ1bmsKKzIzOTg0IGE2YTRiZDJmMDZkMGY5ZmUyODQ3MTA4NDQ5NzhmNDU2YTNmYmY0YWEgbGVnYWN5LXRydW5rCisyMzk4NSA3ZjQwODk1MTk5MjZlNWM1YTE0MzMxNzI0NGNiNGFkYmRmM2MxNTI0IGxlZ2FjeS10cnVuaworMjM5ODYgMDkxZjk2NTZkNzliMzU5MThmOTA0MmNhYjY3OGVhYTIxODI1MWNhNyBsZWdhY3ktdHJ1bmsKKzIzOTg3IDVlNmY4MTg3YmQ0ODkzZjM5NTQ1MGIyZjFjMzg0ODVlZjc4MzA3YzcgbGVnYWN5LXRydW5rCisyMzk4OCBkY2Y3NjljMTJkOGI0MTJmYmRiNzE1Nzk1MjI5NDU0NGJkZWNlYjUwIGxlZ2FjeS10cnVuaworMjM5ODkgODQ3MTVkNTJkOTU0ZTlkNTA3OTQ3YjU2NWJkMDAwZDBiOTM0ZWJmNiBsZWdhY3ktdHJ1bmsKKzIzOTkwIGM2Mzg0NTkxZDg0NmNlNmExYjNkNjZjNzI0YTE3MzdlMzUyMzY0ZDkgbGVnYWN5LXRydW5rCisyMzk5MSA1ZTM0N2U0ZTA1YmY1ZWNjOGIwZGE0MjNmZDQ5MzRkNWE2OGRjZWU3IGxlZ2FjeS10cnVuaworMjM5OTIgYWFlZmMyZjIxYmFlZjFjZTM5ZTgyZDBiMzQ5NGZjYWFkNjFmMWZiMiBsZWdhY3ktdHJ1bmsKKzIzOTkzIGFjYjg1NGI4OTdiYjYxNTRmODQ5YTM5MGE2ODQyZWEzZGNiOTcyNDAgbGVnYWN5LXRydW5rCisyMzk5NCA2NzZmMTA2YTUwMDIzZDQxMGYyNWEwMDM2MWI3ZDQxMjM4ZjEwMmZmIGxlZ2FjeS10cnVuaworMjM5OTUgNmFjNDUyNDRjNDFlMGFlN2NkNTc3MGM1ODQ0MjUzM2ZjZDNjMGJmOSBsZWdhY3ktdHJ1bmsKKzIzOTk2IGYyMjQ2MzJkMDI2MDNmMWI2ODQzNmVmNDI2N2I5NDY1YjQ1ZGNiOGYgbGVnYWN5LXRydW5rCisyMzk5NyA3MTMwNzUwYTYyMjIyZTQ0ZmM0YjFlYzFjNDg0ZGUyNDY3MWE5OWNhIGxlZ2FjeS10cnVuaworMjM5OTggNTg3Yjc0ODU0ZjhjMDUwNDkyYmUzYTlmZWU2MDkxMThiMmNkMWExMiBsZWdhY3ktdHJ1bmsKKzIzOTk5IGFiZDcxZTg5ODQwZjc3ODQxZjA1NDhmNmMyZGFlOWExOGYyNzA0NGYgbGVnYWN5LXRydW5rCisyNDAwMCBjZDgzNWNhYTUwNmMwOTJiMTA0YTFmMjY2ZmY1ODYxNjRlYWI3ZTMyIGxlZ2FjeS10cnVuaworMjQwMDEgY2Q2MDAwMzlhMTIzZTBmN2I1NTczYWVhMGIyZWRhZjVlYzlhMzBlNiBsZWdhY3ktdHJ1bmsKKzI0MDAyIDczY2FiZTY2NGMxMWViNmJhN2JiMmI0MjE3ZjRjNzBjNmQ1MTVmOWIgbGVnYWN5LXRydW5rCisyNDAwMyA4MzU5YzExODlmNzMwMjUwNDlkZjkxZTBkZDBjNjJlYWI1NWQ2MmNjIGxlZ2FjeS10cnVuaworMjQwMDQgYjNiMmZhNzZhMzkyOWVjZWYwNmMxYjc5MzgwMWUzYTdlMjg2Njk4YSBsZWdhY3ktdHJ1bmsKKzI0MDA1IDYzNWZhMTRlZGE1MDlhODFlYjM1NDJjOTQwZTA0OWY1MTkwNWM0MzMgbGVnYWN5LXRydW5rCisyNDAwNiBiMDYyODA0M2U1MzdkYWQ3ODRhNTAxYmYyZjYyNjkwZDlmNGRkODdmIGxlZ2FjeS10cnVuaworMjQwMDcgZmFhMjcyNmRlYTM3MTU3ODM3YzhiOTI5NjJiMjA2Y2MyMTM2MDE4ZiBsZWdhY3ktdHJ1bmsKKzI0MDA4IGE3ODg0ZTdlZWNjOWIyNTg5Mzk5MTcxYzkxNTg3Y2IyZWIxMWNkYzUgbGVnYWN5LXRydW5rCisyNDAwOSAwMGE1ODFiZGVkZWJhZjAyNDJmNTFjOWRhYjc4ODAxZTk1ZmY1NDQ4IGxlZ2FjeS10cnVuaworMjQwMTAgYzdhYWM3OGUyM2I0OWMzMWJlMTk0NzNkZGI5ZGNhNDFmODgxMTNjMyBsZWdhY3ktdHJ1bmsKKzI0MDExIDNiODc3NDBkMWJiYzg1YTYyODg0NDU2ZGQ5ZTA0NjgyNzJiYmI5YjYgbGVnYWN5LXRydW5rCisyNDAxMiBhZDQ1ZDIyYjE5NWQxM2E4MjlmNTJhNDE0NzI5MzM0MWRhYzM3NmVhIGxlZ2FjeS10cnVuaworMjQwMTMgM2U0NjI1ODE4ZjVmZjU5NjRjYThlOWMwYWY4ZTkyMmRmZWZjMTA2YyBsZWdhY3ktdHJ1bmsKKzI0MDE0IGQ1ZjZiNGQ1ODM4MGVhYTVkNjRiN2VkOTJiYTc5MDE1YzI5OWZhMmYgbGVnYWN5LXRydW5rCisyNDAxNSA3ZGE0MTc5OTk1MTExMzA4ZjY1OTdmZjEzYmI3NzdlNmE2ZWY5NGYwIGxlZ2FjeS10cnVuaworMjQwMTYgMjNkMjMwZWY0MTViYTU2YTMyYjIzZTJmZjY3MjM1ODhkMGNjZDRlMCBsZWdhY3ktdHJ1bmsKKzI0MDE3IDgzNjBkNjQzMjcwN2M1Yjg3NDQzZTAzZDEzMjU3M2NlNjM5ODM4N2QgbGVnYWN5LXRydW5rCisyNDAxOCA0NjE3ZDNkNzcwYzU5OTBmYmIzMGQwNjhjY2UxM2U4MWU1MzA4M2VmIGxlZ2FjeS10cnVuaworMjQwMjAgOWY2Mjk1NWRlNGMzYTFlNzJiMGQyMTI0MmQwODQ5Y2QwMTI4ZDAxZiBsZWdhY3ktdHJ1bmsKKzI0MDIxIDA4ZGZkM2MyMmY0MWRjZTNhMTQ4YjZjMGEyYjgyMjdmNWNiNTRhZjAgbGVnYWN5LXRydW5rCisyNDAyMiA3NzU5MjZiY2YwNjkyNWY3MWViNzgxODY4ZThmZTUwZjBiYzE2ZGJhIGxlZ2FjeS10cnVuaworMjQwMjMgYzhiYTJkYjFjM2MyNGJjYWYwMWQ3NTQ5ODczZjdiYmU2NmFhZTE4ZCBsZWdhY3ktdHJ1bmsKKzI0MDI0IDg1MTA5YTYwOTliNWUxZjI3YjQzMzc2NmIzZDAyYjYyOWMwYzA5YmQgbGVnYWN5LXRydW5rCisyNDAyNSBmMmFmNDJjZjgyN2FiN2UzOTYxMWRiNmQ3Njc0MzMwYWQyN2Q1NzU2IGxlZ2FjeS10cnVuaworMjQwMjYgZWNkNjQ5MzE0ODJjOWYyZTc1NTE2Yzk3NmViNzE1OGZlNDYzODFiMCBsZWdhY3ktdHJ1bmsKKzI0MDI3IDI3MjMzNjY0OGQxZmYxZTJjYTFlMWRmNzU3ZTE4Y2I0MTRkNzJhNWEgbGVnYWN5LXRydW5rCisyNDAyOCAxN2Y3YzljMWQ2NmE1MTRhYmQ4ODIzMmQ3NzE5YzRhMTc1NDhmZmFmIGxlZ2FjeS10cnVuaworMjQwMjkgODI4YmYzMTc4ODBhMjA1ZTllNzQzMjA1N2FhY2MzN2ZkYmY0ZWVjYyBsZWdhY3ktdHJ1bmsKKzI0MDMwIDA1MGZjNTJhYjNkNDE1MjcyMGExNmRhOGM2NDlmMjFkYzBmZDA2ZTQgbGVnYWN5LXRydW5rCisyNDAzMSBhNGJmM2M1Y2M0NWEyYmEyM2M0N2E4ODk5OTQ5YWVlMGEwYjE5MTQyIGxlZ2FjeS10cnVuaworMjQwMzIgNWIyMzZmMzc3YTI1ODg3MWZkZTYwNmYyNzAzNTdmOGQzNWUxMTZlMiBsZWdhY3ktdHJ1bmsKKzI0MDMzIDZhZWFiMzgwMjkyZWQ0Njk5YzgyZmY5YWIwZmMxZTY2MTU5YjQ0YjAgbGVnYWN5LXRydW5rCisyNDAzNCAwODM0MTM2MjI1OTU5N2JhNGZmM2MxMjlmZmNmMWY4OWI1YjM0OGYwIGxlZ2FjeS10cnVuaworMjQwMzUgNmIxNGQyOWU1MzA4OTcwMmYwYjEzNThhNzk4Zjg1YmFmYTk1YThlNiBsZWdhY3ktdHJ1bmsKKzI0MDM2IDc4MWFlMTc2YmFjMmMyNTIwMDhmNGU1MWNlMmU3YTkzMjk4YTc5NDcgbGVnYWN5LXRydW5rCisyNDAzNyAzN2I4ZDkyZTEyZjUxOGRjNzBmYTE4YmRjZGM3ZTY0Y2FmNGIzYWFmIGxlZ2FjeS10cnVuaworMjQwMzggM2EwN2JkMmIwMzg2ZTFmM2IwZmZlODQ0ZmI4MWMxZTk4M2EyZjU0NCBsZWdhY3ktdHJ1bmsKKzI0MDM5IGE2YWYwMDkzNDdlMTMxMjg4NjljNWVmNWQ0ODcwOTI3YzhlYjk5MDIgbGVnYWN5LXRydW5rCisyNDA0MCBiM2Y0OGM1ZDZlMTY3NDgyNmIzYTM1OTk1Y2ZjMzY0MTU1NjI2ZTgzIGxlZ2FjeS10cnVuaworMjQwNDEgN2IwNTQ2ZWU0Nzg5ZWRkNjU3MDVhMGJmOWE5NDJjMDYwMDhkYzE1ZCBsZWdhY3ktdHJ1bmsKKzI0MDQyIDUyM2VjNzAyMThlNDkwYTZlOGI4MmU3Y2EwZTIyYmNkMmI3ZTI3NzYgbGVnYWN5LXRydW5rCisyNDA0MyBlYmE2M2RkMGMyZjVhOTJkZmU1MDQ2Yzg5OTU0NWM2ODJiZTAwNzNkIGxlZ2FjeS10cnVuaworMjQwNDQgMTI0NGVlMThiYWVjMzNmNDZmNmEwZGVkZTA5NGVmMjhhOWQ4Y2Q3NCBsZWdhY3ktdHJ1bmsKKzI0MDQ1IDc0NDEyZTU5YmZmODI2MTAwMGI1ZjY4NDU1NGFmOTNmNmE4OWM4YzIgbGVnYWN5LXRydW5rCisyNDA0NiA3NmE4NTc1MmQ0NTI0YzI0NDgwYjFlNzM1N2IwMzJlYTkwZWMwNzIxIGxlZ2FjeS10cnVuaworMjQwNDcgMTA0M2UxMGJlNzgwMDkxMjEwNDExMjE5ODMwMWE3NDdlM2M2MjBiNyBsZWdhY3ktdHJ1bmsKKzI0MDQ4IDc0NGExOTIyMGEzY2I3NmZlMzMwZGYyMmFlMDVhZjcxNTE4OTE2OWUgbGVnYWN5LXRydW5rCisyNDA0OSBhNmJiYTMxYjNjZDc3NTgxNDIxZGUwYzE0MTMxNTI0YmM4ZjRhMmQyIGxlZ2FjeS10cnVuaworMjQwNTAgNTdjNjFjNjIyNGEyZjRiNjBjNzI3OGU2YTNhYTM1YTUwN2ExNDg0NSBsZWdhY3ktdHJ1bmsKKzI0MDUyIDRiYjY3NTNlN2Q1M2VlNTdkNmQ1Njk1MzVlMWRmYTFkYjIyYWU1MDUgbGVnYWN5LXRydW5rCisyNDA1MyA2MTEyM2I4NjBiNDU1NmE0YWE3ZDZjZWQzOTI5NmEyODJmM2VlMWExIGxlZ2FjeS10cnVuaworMjQwNTUgYWIyZTMxNTg0OWE3YjZjN2FhMzE1YmZjODUxZmNmMjU1MzkxYTAyNyBsZWdhY3ktdHJ1bmsKKzI0MDU2IDYxMjI2ZGRhZGM5NzU3MjM2ODRjNTNjZmQzNzE0NTZiZjFmZmM4MTAgbGVnYWN5LXRydW5rCisyNDA1NyBiMWQ5MDI5ZTA5ZDE0ZDUxNzc1OGJkMDA3YWNiMDI2N2Q1ZDcyODViIGxlZ2FjeS10cnVuaworMjQwNTggYTJiMTFkMDBiNjk3NDY2YzI3NmI5MDNlODlkOTllODAyM2E1MzBhOCBsZWdhY3ktdHJ1bmsKKzI0MDU5IGE5MDAyZmIwYTdkNzlkM2I0Y2RjYzEzMTRhMTNhNjZlMzljMTBiM2MgbGVnYWN5LXRydW5rCisyNDA2MCA0ZGY2NTI3Yjc4ODIyMDc4ODg4ZjcwYjc1NDEyNTg3ZGQyNTg2NGNkIGxlZ2FjeS10cnVuaworMjQwNjEgZmViODA1MDlmYjIxNTA2MTgzNmRhOGNlMmM2ZWFkNTAwODUwMjZmNSBsZWdhY3ktdHJ1bmsKKzI0MDYyIDI1ZmVkMWQwOTYwNTM1ZTMxMDg1NTVlYTdkOTc5MTMxY2MxYmM3ZGIgbGVnYWN5LXRydW5rCisyNDA2MyA0MGRlODRiYzYyYWQwMjE0OGYwMmFjMjYxN2MxODI1MmMzOWQwYmY1IGxlZ2FjeS10cnVuaworMjQwNjQgOTYxYjI0ZjhlMWQ4Mjk4ZjdmMzVkODVhOTZlNjY3YTQ3NzUzOGNkMiBsZWdhY3ktdHJ1bmsKKzI0MDY1IGM5MWYxN2E0ZGM3YmYyMmU5N2FiMDJiOGJjNmRlMTY1NTEyNjZlNWUgbGVnYWN5LXRydW5rCisyNDA2NiAyZjdiNjkyNmUzOGRkMTI1NTY0OGU5NjliODY3YjA5MjFhYjI3YWRlIGxlZ2FjeS10cnVuaworMjQwNjcgZTBhZjI4MmY1ZGZhYzRhYjljM2M1YmY2ZWFiNWQ2ZDVjYzI3Yzc2NyBsZWdhY3ktdHJ1bmsKKzI0MDY5IDc5ZmNiYzMxYTAzZWM5ZGU0Mzk1ZWE0MDNhNDRiN2I2MTk5ZDdhNTggbGVnYWN5LXRydW5rCisyNDA3MCA4M2EzZTIxYTdjYzNmNDdhYjNiM2RjNmNiMWNhZjU3ZjYyYzlmY2JiIGxlZ2FjeS10cnVuaworMjQwNzEgNzNhYmUwYWY3ZTA3MGVhYzE3ODc2ODcxMmJkNDFhNDhmOTlkYWE3NyBsZWdhY3ktdHJ1bmsKKzI0MDcyIDljMjNhYmFiOTYyZGE1MGFmMDYyMTdkNTFlM2NiMzhmOWY0Zjk4MmIgbGVnYWN5LXRydW5rCisyNDA3MyBmYTk3Yzk5NzJkMWIzOGViNzkxYzQzNTJjMGZlZWFkNjAwZjIzYWRmIGxlZ2FjeS10cnVuaworMjQwNzQgNjEwYTY0NGZkNGMzYWJmNDJhZTJkM2ZjNTMwYzkzNzE1OTQ0MzIyNCByZWxlYXNlMjEtbWFpbnQKKzI0MDc1IGVmOGJkOGJlOThiZWIwYjVhMjQxM2RhNjA1ZGRkYzE5NzE5MDM0NTYgcmVsZWFzZTIxLW1haW50CisyNDA3NiBlZTcwZmFjOTUzNWI0NTA5YjU3YjdmMzI5Y2YwNDNiYWVjODM0MjZkIHJlbGVhc2UyMS1tYWludAorMjQwNzcgNzU2YjllZGYyNTRmYzIxM2Q0ZjIzMWEwOWVjZjhhOTM5Y2ZkZjdkYSByZWxlYXNlMjEtbWFpbnQKKzI0MDc4IDUxZWFjYWRjODE1YTI5NjA1ZmU4ZDgzNDMyZTkzYjAyMzNlOTU4MDUgcmVsZWFzZTIxLW1haW50CisyNDA3OSAxMDQyMjNiMzIyNmE0MGFiM2I3MWQ0ZjRlYjE0MDg1N2E0YmIwMjhmIHJlbGVhc2UyMS1tYWludAorMjQwODAgMDYyOTY2NmU2NWM1M2Y4ZDRjYjQ0ODM4MWQxOTkwZTk4MzFmZDU0MiByZWxlYXNlMjEtbWFpbnQKKzI0MDgxIDA3NmU1ZTQ5ZTI3ZDM5NDYyN2E2ZTFhZjBmNDAxM2QwNmE3ZjcwNGMgcmVsZWFzZTIxLW1haW50CisyNDA4MiA0MmYyMmVhNmEwZjEzNjEzNzNlZWJhZDY1MzkxY2E1MDZmYTYxYjlhIGxlZ2FjeS10cnVuaworMjQwODMgMDI2YmYwYWI2OGE1MTViNGQ3OWEzOWY3NzkzZjQwMGZjN2NmYjNiZiByZWxlYXNlMjEtbWFpbnQKKzI0MDg0IDQ2NGQyMTNkYTg4OGM3ZjJmMTE2MmMyMWVlOTY2Mjc1Mjc5ZTM4OWIgcmVsZWFzZTIxLW1haW50CisyNDA4NSA4MjFlMTQyZTE5ZmE0Y2Q4MWIwYTNlZjU0ZDNmNGE1YWU2YTRmMDk5IHJlbGVhc2UyMS1tYWludAorMjQwODYgNmQzOGZiYTA1ZjM1NzRlODI3MDFjNzRjZmFmNjQ4YTVmZWRiMjFjMyBsZWdhY3ktdHJ1bmsKKzI0MDg3IDhkNGI2NjQyYTYwNGEwMDFiN2MyYzU5ZmRlNzQ2N2Y0YzNkZGU3NTggcmVsZWFzZTIxLW1haW50CisyNDA4OCAxOTY1MTE2ZDFhZWNhOTQ0YjFlYjViNWYxMDI2MTRjNTZkZDg3NjQwIHJlbGVhc2UyMS1tYWludAorMjQwODkgZjRlZmYzMjQ3YzY2YWM5ZjgwOTg0MGY4ZTI3OGQ2NTcxN2QyYWQyYiByZWxlYXNlMjEtbWFpbnQKKzI0MDkwIGVmMWU5YzhhYTNkZGZkYjY4MDQ5MTYyNmI1MTM5OTczZmEzOWY3Y2UgcmVsZWFzZTIxLW1haW50CisyNDA5MSA1N2FiNjVjMmYxNzA3OTFkNmUwYWM0MWJkOWY4NTdlNmUwMDkxODZiIGxlZ2FjeS10cnVuaworMjQwOTIgM2UwOThhOTYzNTYxZDc3MDM3OTIwODY5ZGRmMTZlNGQ0MzZkMTU2MyByZWxlYXNlMjEtbWFpbnQKKzI0MDkzIDNhNzQ4Y2FhMDNiOTFhMTUwYzVhZmIwODIxYWNjMTc0OGUzMmYyODkgcmVsZWFzZTIxLW1haW50CisyNDA5NCA5YWRlZDYyMzVkODkwZTkwYTIzNzM4ZGZkOWQ4NWIwMjk1ODc5YWRkIGxlZ2FjeS10cnVuaworMjQwOTUgMjYxYTcwYzBhYTc5MmMzYjY4NmU3NDZiZTIwOWQ2NzQ2NTEyM2Y4YyBsZWdhY3ktdHJ1bmsKKzI0MDk2IDUzNDZiNjkwNmQxYWY4NWU5MWEzZjcyMDNkYmMzODliOWNlOTdhODggbGVnYWN5LXRydW5rCisyNDA5NyBjYTQxOGE1ZmE0NzFjYjhkMjU5NzNlYWM5YmIwODNhNGRlMTdhMGQ1IGxlZ2FjeS10cnVuaworMjQwOTggNjU2YzNjODRkZWJlZjRlZjdiOWM0NzdkMDU4OWUyOTQ1YTUwMTkzZCByZWxlYXNlMjEtbWFpbnQKKzI0MDk5IGM3YWEzMzJhMmZmYWZiNzM0MDRkNTdjNGQyMmUyNzVlMTg3YWUwMGMgbGVnYWN5LXRydW5rCisyNDEwMCBiM2Q4ZDI2MTViMjNiZjRmMGRiM2IwOGY3YTg0ZDI4YTQzODU0ZWM0IGxlZ2FjeS10cnVuaworMjQxMDEgZGVmMmExMTlkNWNkYTMxYTQ2YmViYjZlZGM1ZmI2NWNjNWNhMjRlZSBsZWdhY3ktdHJ1bmsKKzI0MTAyIDM3NTEzNjZjMmYzOTMxY2E5ZGIyODExM2Q2N2VkNTVhZWZlZTdkNzEgbGVnYWN5LXRydW5rCisyNDEwMyA5NTIwMTE1MzI1MWNiYjBiZjkzNDVmYzRmYjc5ZDc3ZmZlYzUwNTgxIGxlZ2FjeS10cnVuaworMjQxMDQgNmYyNTlmN2JiZWQ4MGU0YTVjYTlmMzJkNjJmMGEwYmVkYWExM2M3YiBsZWdhY3ktdHJ1bmsKKzI0MTA1IDE0ZGM2OTNhZjUzMjE5NTY5OWE4MDM1ODI0ZjE5YWExM2RmNmMyNGUgbGVnYWN5LXRydW5rCisyNDEwNiA1ZjI0YjIwZTEwM2QyMzJkOTg0Nzk1YzRiZWMxNDM3NTkwZGU2ZTgxIGxlZ2FjeS10cnVuaworMjQxMDcgZGFiNTJkYmQxMmFhMTQ0NGJlOTc3MzhkYjg0ZTkyMTllYWIzMjBmMiBsZWdhY3ktdHJ1bmsKKzI0MTA4IGQxMzllYzQ5ZDIwNGQ3MDc4OWY4NDJmZTcxZDcyMTNlZjhkY2NlNTkgbGVnYWN5LXRydW5rCisyNDEwOSA4NjA0NzI4NzdkZGExNTExMWI4MTFiNGRhNDMwZGM5OGNiNjg2ODIxIGxlZ2FjeS10cnVuaworMjQxMTAgYjBjMzEwY2RiOTg2OWFmNjkzZTBiYjJmYjY3Y2I2NzM5YjNkYzBlZiBsZWdhY3ktdHJ1bmsKKzI0MTExIDNmYmQyNTNkZWE1ZDRhOWM2Zjg1M2YyYjRiZGE0Mzc5ODgzOGUxNjAgbGVnYWN5LXRydW5rCisyNDExMiBjMWViYzAyODVhNWU3ZDFiMTljODA3OTA4MGI2YmJjNzM2NDJiYTMzIGxlZ2FjeS10cnVuaworMjQxMTMgOTgxZTU0NjhjOWI1MzFmZWQ0OWQwMDIzMzViYjU2YzI5OWU0NTA4OCBsZWdhY3ktdHJ1bmsKKzI0MTE0IGYxODdkMjQwNTZmNDhkODU2ZmFjNDdhNDI5OGMyYTYyMWNhNTBkOWUgcmVsZWFzZTIxLW1haW50CisyNDExNSBmNmM3NDYwY2NhZjg5OWYxMjM4OGZmOGQ0OGIwMjhlZGQ2NjIwYTdmIGxlZ2FjeS10cnVuaworMjQxMTYgMzgwM2FmOWQ4Nzk2M2Y4YzI5N2I0NzI0NmY2MWZiMGFmODUwMWY5NiBsZWdhY3ktdHJ1bmsKKzI0MTE3IGVhY2Y4MWRmNmM0Mjc1NmRmYmMxZDczNjI5NzkxZTQ4ZDIwNWFiN2MgbGVnYWN5LXRydW5rCisyNDExOCA5MTZmMTkxZmNmZjQzZjA1YjY0OTVkNDA0NThjZWRjYmIzZmNkZjhjIGxlZ2FjeS10cnVuaworMjQxMTkgOGQxNGY1MzRhNWMyNzZmNjljNWZiOTAzYTVkOTZlMjQzMzRkMTA2YiBsZWdhY3ktdHJ1bmsKKzI0MTIwIDY5OTBmZTljNDBmNmE3YTI4YjBlOTBhMjQ5OTEzYzJjZmMwNjMwMDEgbGVnYWN5LXRydW5rCisyNDEyMSA0YWRlNzZhNmIyNDViYTc4ZGJlZTg1OGJlOTAzN2YzYjJhNWRhMjA4IGxlZ2FjeS10cnVuaworMjQxMjIgZTEwZDkwNzBlMTA3MzJjMTFlYzNhYjUzYzRlZmFkYzQ3MTY5ZjM1MiBsZWdhY3ktdHJ1bmsKKzI0MTIzIGVjNjMyYTQxZWUzNWQ5YjY0NjEzNGRjYWExOGE1OTUyZWI4OTMwY2EgbGVnYWN5LXRydW5rCisyNDEyNCBkOWE5ZDkyNjI0ZGI5NzQyOGEzNGMyYWVkYmRkZTRkMGY5NTZmOTdhIGxlZ2FjeS10cnVuaworMjQxMjUgNDA0YWVlY2E1MWU5YzQ1MWExMGJjYzNhMWFmZmIwNTQ0NzAwOTI1OCBsZWdhY3ktdHJ1bmsKKzI0MTI2IDI5NjJmMDE5MjRjOTk3YTM1Y2Y5MmVlZjRjYWU2NDBkZDZkMGRkZTkgbGVnYWN5LXRydW5rCisyNDEyNyBmMzRhOGRmOGJiYTQ2MDA4OGIxZWU5MzQxYzQzNWE4ZTc1NDk4ZmY3IGxlZ2FjeS10cnVuaworMjQxMjggMDUzZGJkOWI1OGRmMDNjMDAyMzE5N2Q4MzA5NWJiZjA4NmViYzUxZiBsZWdhY3ktdHJ1bmsKKzI0MTI5IDc3YmIyYWUwNjdjMjU4Y2Q0YTdkNjZjYWE5M2QxYTI3MWNkNzNiYmYgbGVnYWN5LXRydW5rCisyNDEzMCAwNDQ0ZjU3NmM5MmIxOWU4MWMyNDU1ZGM2MjA1YjEwNDNjNzU0Njg0IGxlZ2FjeS10cnVuaworMjQxMzEgNjM5OGQxMDU1ZmNmYjlkZTJjZGQ4NjVjOGE3NDIwOWE4MmUwYzY5NSBsZWdhY3ktdHJ1bmsKKzI0MTMyIDhjZjFkOTI2NjkxMTMyOGU4M2Q2ZTQ4Njk5MmRhZGNlMDBmOTY3MWYgbGVnYWN5LXRydW5rCisyNDEzMyBkMWIzY2E4OWQ3OGI0OWRiZGNmY2I1YjA5MmRlOGUzZjJmNDk5N2UzIGxlZ2FjeS10cnVuaworMjQxMzQgMjQxMDVlOTg5ZjE3OGYyZjYwOGU1MWQxZGYwYTdkYmY5OTAyZjJkNCBsZWdhY3ktdHJ1bmsKKzI0MTM1IDE1YzkyNGExMWFlY2M0ZGU0YTY3OGQ5NDM5ODcxY2U4NGU4MDgwYzcgbGVnYWN5LXRydW5rCisyNDEzNiAwY2FlYTVmZWZhNWMxYzdkZGU2OGIxNzI1OTgzYWVhZmM0NzhmNzEwIGxlZ2FjeS10cnVuaworMjQxMzcgNWE0N2I1OGE0NGJiNGU0YWIxM2MxYTU1YjYzODM5NzJkOWViZDY1MCBsZWdhY3ktdHJ1bmsKKzI0MTM4IGQ5YjliNWI0ODE1YjYyMWRjZjMyYjBjNDY2YTkzYjlhOGVkZmM3OGIgbGVnYWN5LXRydW5rCisyNDEzOSBkNmZmMWRhYWUzOTgxNzY0NmU3OGE4NGI0MDdjZTk4MTY4MTRlMTU3IGxlZ2FjeS10cnVuaworMjQxNDAgODk1NzM0MWY5OGY4NDdkNmY0ZDYzZGUwZDQ2MDdlNmY1ZGVlOGE1YSBsZWdhY3ktdHJ1bmsKKzI0MTQxIGY1NDgyOGViOGUwNzY4OWExZjVkZDU5NjBiMDEwZjk3ODNlODFhODggbGVnYWN5LXRydW5rCisyNDE0MiBlYmJkYzM4ZWIxMWM4YThiZjlmMTY1ZTk1NjhlZWEwMWM5YjdjODZkIGxlZ2FjeS10cnVuaworMjQxNDMgNDBhODg5ODlkNmNiYTQ0ZTg1M2FlMmVhMDk1MDg2NGFhYzI1NzQ3MyBsZWdhY3ktdHJ1bmsKKzI0MTQ0IDJkOWU0MWE3MmE2OGIzOTI0YTVlYTc3OTg2Y2M5YjFlMGZlMTBkNzUgbGVnYWN5LXRydW5rCisyNDE0NSA3YmIzMWZiNDgzYmM4NjdiNDQ3OTJhMzk1OThjNTg2OTMzMjg4ODBiIGxlZ2FjeS10cnVuaworMjQxNDYgYThhNjYxMjBiYWRlZGJhZGJmOGJjMThiOTM1OTYyZmU3ZTdhZTJmZiBsZWdhY3ktdHJ1bmsKKzI0MTQ3IGY1NzZmZmQ1Nzk2NmI1N2RhYmQ2NWQ2NTJiNzEyMzlhNjIyOWI1NjUgbGVnYWN5LXRydW5rCisyNDE0OCA3ZThjZGU0NjRkYjQwZTk5MjhmYzhjYjQzMjViNjQwY2RiZTY1N2IzIGxlZ2FjeS10cnVuaworMjQxNDkgN2UyNDdmMDgzN2UyNjk1NDRkMmJhODU4NmY4NTU0Y2RhNmY2NmI3YSBsZWdhY3ktdHJ1bmsKKzI0MTUwIDgxMWFjZTNjNDBkMDFjMmFlZWIwZTQzYmU4ZjZiM2ViYjExOTBmYzYgbGVnYWN5LXRydW5rCisyNDE1MSAxNzljZDM3MGI2MjFmYTI0ZmMzNmM4M2NmMjY3ZTQ3ZDlkMmJiODJjIGxlZ2FjeS10cnVuaworMjQxNTIgMjc4NzRjODYwMjY4MzczMTE5MThkYzY0MWNjNGNiNTAyZGI4NGM5NSBsZWdhY3ktdHJ1bmsKKzI0MTUzIGQ1NGUyOTQ0ODRiMmJmZGIzYjI3MWEwNGM4YjA4NjFjZjIzY2YxMDEgbGVnYWN5LXRydW5rCisyNDE1NCA3MzJlYTIyZWI1MTgyZmQzMGEwZWIyN2YzYzA4ZGZkYjYxNmQ1N2JkIGxlZ2FjeS10cnVuaworMjQxNTUgOGE3MmVmNmI4MTE4ZDdjNWFjNzdhNDFlOGU1NjkxMTk2NTAyYjcwZSBsZWdhY3ktdHJ1bmsKKzI0MTU2IGVlZjliZDg3ZmNjMDc4ZDg4OTYxMWRmMjU5Yjc4ZTBmOTYzMDkwODIgbGVnYWN5LXRydW5rCisyNDE1NyAxOTgxN2E0ZmEyYjZjZmJiYjU1MGFmN2RkYTA4NmEwYTdmNzBkMTk3IGxlZ2FjeS10cnVuaworMjQxNTggODlkMTcxZjZiYzdkNjMwNTgyNTcwNDg3MTg2YmQ1MTQ5NDAzMzc5OSBsZWdhY3ktdHJ1bmsKKzI0MTU5IDZlZTE5YzE5YjJjMzczYTgzNjNiN2M1ZjBmMGNhMTQwN2ViODhjMTYgbGVnYWN5LXRydW5rCisyNDE2MCA1YzQzNWI1YjU5ZGY5MGVmMTUyZmNiOTljNzY0MzRjMGU3NjVmOTllIGxlZ2FjeS10cnVuaworMjQxNjEgYTYwYzFlOGIwYmJiZWJhOGYwODI1ZjA4ZDFhNjlmZTk1MWFkY2FmZCBsZWdhY3ktdHJ1bmsKKzI0MTYyIDdmNTYxZmU5ZWRmYzIyODNjNDkyZjJhOWI4NWY3N2E1NjgwYTE2YWEgbGVnYWN5LXRydW5rCisyNDE2MyAwYzE3NTE1YjA1ZGI4YjdhMmU0NmNmNmFiMjE3MTVhOWM2NzJkZWE5IGxlZ2FjeS10cnVuaworMjQxNjQgMmNkMmFlNGRlMzBkOTIxYWIyZjRmNGMyNDRlYzVmYmE0NWZhNjcwZSBsZWdhY3ktdHJ1bmsKKzI0MTY1IDY0MGYwMjg0ZTMwYWIyOTRjY2FjNTgzNTI0NjgyYmE3NGE4MzdmY2YgbGVnYWN5LXRydW5rCisyNDE2NiBlMjMxNDBmNmZiOTAzOTZlMzM0NzZhOTIzYTg0OWQwNjExM2RiMWNlIGxlZ2FjeS10cnVuaworMjQxNjcgNDFkMmQwMGEzMWYxNWQ5MTU4ZGU1NmRlY2NkZjFiYzQ4ZGEwMDNjZCBsZWdhY3ktdHJ1bmsKKzI0MTY4IGY0Njc5ZjZhOTU4Zjk1NGU5NmNkZmRmOTU2MDQwZmNiODg1NzQ0OTAgbGVnYWN5LXRydW5rCisyNDE2OSBkZTRmNmIxNGQzODBhY2QxMzVmZDE3ZjJiMzg5Mzc2MGZhZmNhOTZhIGxlZ2FjeS10cnVuaworMjQxNzAgNWI2MWEyZmY2OTZkMGY1YTg2NGE0NjQ4ZTIyZGY3YWE3YTMwMmVmYSBsZWdhY3ktdHJ1bmsKKzI0MTcxIGI1ZmU5YTk0MTRmY2E2NmI5NmY1NzIzYmY3OWI4MGI2MzA0OTZlZTcgbGVnYWN5LXRydW5rCisyNDE3MiBhZjM2NzM4MTJlMzM2MTJhMWFiYmY1Zjg4NGMxY2ZkMGFiNGE4YWE2IGxlZ2FjeS10cnVuaworMjQxNzMgZTE4NGJiZDcxNjdjM2YwNDdmOWJkMjQxY2YxMDRiM2Q4YmNkMjliMSBsZWdhY3ktdHJ1bmsKKzI0MTc0IGMzZDNkYzgyNzY0YzlmNGExOWUxMTExYmNmMzU0N2JhNjljYTkxOGQgbGVnYWN5LXRydW5rCisyNDE3NSA4NzIyYjBhYmVhYzYyNzhlZmZjOGU3NjFmOTY3YzdjMjliZjQxZTNkIGxlZ2FjeS10cnVuaworMjQxNzYgMGI2MzMyYzJhYmEwMWNhY2U2NzZjNDM2ZTViMTllODg3N2FkMDUwOCBsZWdhY3ktdHJ1bmsKKzI0MTc3IDM1ODY0ODg3M2FkZWEyZGJlMGJkNmY5MWMyMGE0NzdlMDM2YTdhN2MgbGVnYWN5LXRydW5rCisyNDE3OCBkM2YzZDIxYWMwNGJjOTM2MzI4ZDkwNzYwODBjZWE1NjljYzdjZDBmIGxlZ2FjeS10cnVuaworMjQxNzkgYmZjYzJlZDljYWJhMjdlZDQwMWYzMDNjNWY5YjVjODZiZTk3ZmNjYSBsZWdhY3ktdHJ1bmsKKzI0MTgwIGYyYzc4OGFkYmRiYmFmM2I0NTgxNGYwODIyYWE1ZTc0MWEyNmE5ZjYgbGVnYWN5LXRydW5rCisyNDE4MSBiMGE2ZGJjOTAwNDcwNjM5ODc0Y2YyZDg0ZjYyMDhkZmI2MjA1ZjNjIGxlZ2FjeS10cnVuaworMjQxODIgNjAyN2ZkZjFlYmRhM2FjMDk5YWVlNTNlZDQwNTEwNGM1NDlhMzFkOSBsZWdhY3ktdHJ1bmsKKzI0MTgzIDMxNmZmZmQ4MGIxNjFjOGQyM2Y0OTFhMzE3NGNiMzhhN2ZhZGE5MWUgbGVnYWN5LXRydW5rCisyNDE4NCA4MGJhYTI3YmYwZWMzMTY1Mjc5ZjQ1ODE2MjUwNjg5NDFkNDQ0NWIwIGxlZ2FjeS10cnVuaworMjQxODUgNjY5ZWRkZjQ3MGJhZGQ2ZTc3ODczYjJjY2U2NWYzMzE3YWFlNjBhZCBsZWdhY3ktdHJ1bmsKKzI0MTg2IDgzNDYyNTVjY2E3YzdhOTEyZjhkZmY2OTQwZDU0ZDVkM2Q0Y2YxY2QgbGVnYWN5LXRydW5rCisyNDE4NyA1NWEwNjBmNDE3M2Y3MjA2NmQ2OWM4MDQ0NzliZDIxMDkyMGU3NGQ3IGxlZ2FjeS10cnVuaworMjQxODggMDZkOTViNjg3N2M0NWFhZjk5MGRjYzliODAzZGZhMjY2YTY0NTU4OSBsZWdhY3ktdHJ1bmsKKzI0MTg5IGQ4OGRkNWMyYjI4MmI5NTA2MTQ1ZmE2ZTU2ZTUzMDI0NTRkNTNiNmIgbGVnYWN5LXRydW5rCisyNDE5MCA5MzI1M2M2NWQ4NjMxMTVjZWY1NTUwMGZiM2E0OTI5ZjJmNWQ1MzFkIGxlZ2FjeS10cnVuaworMjQxOTEgMjNhMjA5NDg0ZjAyOGU2NjFlODRlMzgyOTE2OGM5ODc4NjEzN2FkNSBsZWdhY3ktdHJ1bmsKKzI0MTkyIGI5ODUwYzQ0NzU2YjNjNzhjMGI5YWVlZDU3ZTVmM2M0Y2E3MTk4ZmEgbGVnYWN5LXRydW5rCisyNDE5MyAyMDAxNDcxNjU1NmI2YmJiYWE2ODIzMThjN2U0MjkzMTQ2OGI2NjU4IGxlZ2FjeS10cnVuaworMjQxOTQgN2I1ODY0OTQ3YmFmNmNjOTM0ODk1MzY0MWFlYzdjNTUwMTJjYjMwOCBsZWdhY3ktdHJ1bmsKKzI0MTk1IGIyMWI0MjMzMGU0MDIxOTg5OGI3NzE0NGIxODNkYjM5NTkxMDJiZmEgbGVnYWN5LXRydW5rCisyNDE5NiA5MDg3MWZhNDNmNGUwYWUwMTE0N2I0MTdlOTg2MmFhMDJhNGNmZjE0IGxlZ2FjeS10cnVuaworMjQxOTcgOWU4ODg1YmJkYmM5NTMzMWJjNGRkODcwZjEyNjA3MDc2MjU2ZjBhMSBsZWdhY3ktdHJ1bmsKKzI0MTk4IDdhOTkxZDAxMmNkNjMxY2ExMjA0MDFmOTliYmNiMzU1MDI5YWY2NzggbGVnYWN5LXRydW5rCisyNDE5OSA5OGRiYjA3OWM1ZDQ4YzFjOWM3YzlhOGQ0MjNmNDc0NWE4NGQ1NTE1IGxlZ2FjeS10cnVuaworMjQyMDAgMjFmYTc1NzkwODIyMjNjNzY1MTRiMjlmYTAyZGUyYmNjMGU2N2UzNiBsZWdhY3ktdHJ1bmsKKzI0MjAxIGVlMTQzN2Y1ZGUwMzMyODg5ZDVlODM0ZWU3ZjQwNWYwZTg2NDE1YTYgbGVnYWN5LXRydW5rCisyNDIwMiA3Y2VkYmZhYzc0NmI5NzczZDI0OTlkNTc0N2JhMjczZjVmMTkxZDYzIGxlZ2FjeS10cnVuaworMjQyMDMgNWMwMmQyMTVhMzhkYjkwMjY4NDFjYWUxNTMwMDllYzk0MjM3ZWFmZiBsZWdhY3ktdHJ1bmsKKzI0MjA0IDJiNWQzMzI5ZDdlMmE0YmU5M2M5MjI3ZTY2N2VjNGY0OTBiOTNjOGEgbGVnYWN5LXRydW5rCisyNDIwNSA5YWVkNzQ1Mjg2NjFmNzI1Mzc2YWM0MDI2M2QwYmJmMzA3NDllMjk1IGxlZ2FjeS10cnVuaworMjQyMDYgZmE3ZTBkMDBjODI4ZTQ1ZTQ2ZTlhNzU5ODBlY2MxMDUzYjZkZjE4NSBsZWdhY3ktdHJ1bmsKKzI0MjA3IGNkNjA2YTU4NDkwM2U0ODE1ZWZiZGI1MDUyOTMxZDdlMjhlYjA2NDcgbGVnYWN5LXRydW5rCisyNDIwOCAxOTc1MDVlNjc1MmEyNTRkYThiNTQzMDBmNWZjOWZiZTNlMTJhODQ4IGxlZ2FjeS10cnVuaworMjQyMDkgZWNjZTVkN2RhNjA3ZGU0YWYyOTNjZTRlMzk1ZjEyMTZjMGU5ZmUyYiBsZWdhY3ktdHJ1bmsKKzI0MjEwIGJhOTQ1NWZjNGM4YjBlMjViMmRhNjQ5NTMzNjhkODI2ODAzMTkyZmEgbGVnYWN5LXRydW5rCisyNDIxMSAwYjY0NTIwYzIwMGM4OGM3ZDRlNDVjMDM5OTBkZDY2ZTVmODdhOGNiIGxlZ2FjeS10cnVuaworMjQyMTIgZTA1M2U0NGY5NjY2ZmY4ZGE0NjdkOTk0MzlkMmNlMTQ5YzU5MjdmOCBsZWdhY3ktdHJ1bmsKKzI0MjEzIDEzYTE4Y2JmZmQ5YzcwYmNiZGMxZDIwM2QwMWYxYmUxMzY3ZTBiODQgbGVnYWN5LXRydW5rCisyNDIxNCA1NDBlNTMyNWZjNmIwOGRiMjIwNDMxNDVlMmM2YWIwZThjNjFmMjU5IGxlZ2FjeS10cnVuaworMjQyMTUgMTNkZjhiNmMyYjgwYzc1MjgxNjIyZGJjYzAzMzNmNjlmMTE0OTkxZCBsZWdhY3ktdHJ1bmsKKzI0MjE2IDQ1Yzk1MmQyYTYxMTM1MjMzZjIxNzRkYjBjODZmMzNkMmY5NGJiNDAgbGVnYWN5LXRydW5rCisyNDIxNyA1ZTczNWYxOTdjYTY3ZGJmODZjNzgzOTU3MDYzYzU1MjUzMmMzNDc5IGxlZ2FjeS10cnVuaworMjQyMTggZDNkZDBjMmExNzcxZDg1ZmVmYWI2ZDkyZTM5MWU2NzgxMzkwZGRiYiBsZWdhY3ktdHJ1bmsKKzI0MjE5IGU0ZDM4MGY1ZjI5NzY2NDFiNmI2MmY0ODY2OGUwNjMzZTQ2MWY4MGEgbGVnYWN5LXRydW5rCisyNDIyMCBjM2IzM2VhZDM1NDZlZjQxYjk3NDFmYzdmMzNiNGViNmUzZDgwOWUwIGxlZ2FjeS10cnVuaworMjQyMjEgM2M1ZDBlZWExYWUyYjIyOGNhN2E4YzhjZjY5ZDE0Mzc0ZDRlMjExNyBsZWdhY3ktdHJ1bmsKKzI0MjIyIGVmMTJjOWRkZWZhNzA1NjAzYjkwMzRlNWE2NzM2MjdjNzdkNzJiMWUgbGVnYWN5LXRydW5rCisyNDIyMyBjNTU1ZjFlN2M0YmU0ZDkzZDM5ODZhMjlkMjdjNzNlMTI4MTRlNDA3IGxlZ2FjeS10cnVuaworMjQyMjQgOWJmYzMxY2E4MGYzNDJmYTI0NjdlYTE2YTNkNjY5MjY1NWMzZDVhNCBsZWdhY3ktdHJ1bmsKKzI0MjI1IGQyN2NlOGZlNDNmODM5OTFmMzE0NzJlNGU3MzNlOGJlOTNiMzdlOTAgbGVnYWN5LXRydW5rCisyNDIyNiBjM2IwODMxOTk1OWM0Y2EwOWQyZDM1MGM1OThjYjk5ZTM2NWJmNDE4IGxlZ2FjeS10cnVuaworMjQyMjcgMGQxNzY3ODQ0YzRiNzA3YTI0YjBhZjhmZjE0MWQ4ZDIwYmQxNjVlNSBsZWdhY3ktdHJ1bmsKKzI0MjI4IDc3MWIwMjliZGI4YTE4MzZjY2YwZTVjMDJiZjhiNGU4YzQ4YmI0MjAgbGVnYWN5LXRydW5rCisyNDIyOSA5ZWRlNGQ2Y2M5ZGU4ZDVlZGYyMDA5Zjg1MmFjZWYxNDEzN2MzNjhjIGxlZ2FjeS10cnVuaworMjQyMzAgYzNiM2UyZTQwMDM1ZWEwZTdlMjlmYWU3YjNkNWIxMDIyZjkzMGZlNSBsZWdhY3ktdHJ1bmsKKzI0MjMxIDYxNWE0ZjU2MDI2ODUxMDY4NzMyYzE2NDE3ZWZmOGEzN2EzNDNhNzEgbGVnYWN5LXRydW5rCisyNDIzMiBmNzljZmQwNTRmMjFiODFjOWUyMzdlNWVkMDViYjlmMjY0MzU3NDcyIGxlZ2FjeS10cnVuaworMjQyMzMgY2E4YmVjNGIzMzgzNzQyY2YzYWJlMzhiMTEzNzhmYTU0N2U5MjFlNCBsZWdhY3ktdHJ1bmsKKzI0MjM0IGExM2Q3Y2QwZWY3ZjI3NTExZDE0Y2Y2YjMyMzI4ZTE0ZDUwYWMxOTYgbGVnYWN5LXRydW5rCisyNDIzNSBkYTVmYmMxZWIxZDA1ZmY5MWM2MTY0YTI0MzQ5ZDQ2MmEyYTQxNDZhIGxlZ2FjeS10cnVuaworMjQyMzYgM2Q1MjJjYmI3YTgxZjE5NjViMjc3Yjc1NDhlMzVjNmFlNTEwY2VlYyBsZWdhY3ktdHJ1bmsKKzI0MjM3IDMwMGI2OGQ2M2I5ZjRjMjViYjViMDYyM2E3MjM1NWM2ODhkOGI3OWIgbGVnYWN5LXRydW5rCisyNDIzOCBhM2M1N2U1OWI1YTgxM2JmZGZiNGNhNzE3MTUzNWNmNmRlYTMyOTliIGxlZ2FjeS10cnVuaworMjQyMzkgM2U5ZDZlOWZiZTU4ZjZhNjM2ZGNlOTQ3MDY2YzkyMDI1MTE4NGZhZSBsZWdhY3ktdHJ1bmsKKzI0MjQwIDljYTdlNDZmYWEyNGJjMjk4NGE4ZGZkZGQxNTE2NmM2ODY4ZDcyODYgbGVnYWN5LXRydW5rCisyNDI0MSA1NTQ1ODE4ZjU4MWE4MmY2ZDYzM2IxYzZlN2Q5ZWMyZDM2MWU4MzcxIGxlZ2FjeS10cnVuaworMjQyNDIgOTBhMGYwOTUxOGM4ZjZlZjJiNTFmYTQ5ZGY4NTY3OWFjMTRjZGNjZSBsZWdhY3ktdHJ1bmsKKzI0MjQzIGJiODcxNjA5NWE4MWE1Y2Q1NTY1MmFjYmM2MWZlYzBlY2E1ZGUwYzIgbGVnYWN5LXRydW5rCisyNDI0NCBmMWNmZGNhNzNmODY5NTg3N2M4YmU5ZWY4ZWIwZWI0OWExOGYxNGY1IGxlZ2FjeS10cnVuaworMjQyNDUgYzFlY2FmZDE1NTYwYjUxOWIxZTY0NDE5ZTUxZWNlYzRhNjFjMjZmMiBsZWdhY3ktdHJ1bmsKKzI0MjQ2IGUxNjdiODJjNjQ0NDBkODBjMGRjYTdmN2I3ODI0NmI0MDVlNTQ5NTcgbGVnYWN5LXRydW5rCisyNDI0NyBlYmE4Yzc3MWRiNjRjYjUwOThhMmE3YjFmNWU4YTYxYzcwNTgwZTBkIGxlZ2FjeS10cnVuaworMjQyNDggY2U2OWQ0ZWUyZmEwMGUxN2FmNjVjYzg1NzI4OTljNDY5Zjc2Njg4MCBsZWdhY3ktdHJ1bmsKKzI0MjQ5IGFjNTE5MTZiZmRhMDdlMmQ4OTBjMDkyOTMxYmUyZjQ1NDM0ODVlYTYgbGVnYWN5LXRydW5rCisyNDI1MCBmMTY3MWE2MTAwNzk5Mzk2MGFlM2RlNDcwMDZiY2U3MjRmZTNlMzc1IGxlZ2FjeS10cnVuaworMjQyNTEgZTcxY2NmYmYzNmJiOGRlZDYyODQ2MmRhZjU0NzQ5YzkzNTY3ZjExOCBsZWdhY3ktdHJ1bmsKKzI0MjUyIDA3ZjFkMmM1ZGQwNDFjOGQ4NDExOGY0YjZhNjZjYTQwYmQ4ZGEwZmUgbGVnYWN5LXRydW5rCisyNDI1MyA5NWUzNTg0YWJlNDU3NmUxZGM0ODJiNjI3NDdkMWI3NTYyZjc3YjBiIGxlZ2FjeS10cnVuaworMjQyNTQgNDRmM2Y1YTViZmUyNDVkNzRhYTdkMDg2ZGQ1NTlhYTI3YTZmMDMzZCBsZWdhY3ktdHJ1bmsKKzI0MjU1IDYzYzE0NjY5NTI3ZTQ5N2Q5MDQxYTJmMTliMTJmMThmZGI4ZTI0YzIgbGVnYWN5LXRydW5rCisyNDI1NiA0YjllNjNjZjAyYTZmODI4YzlkMGM5MDMxYzJkYzU2NTdjZGQzZDA1IGxlZ2FjeS10cnVuaworMjQyNTcgYjBkZjFmZDgxOGZjMWY1NjViMWEyNDVlMThhY2I5MGFhNTc0MTc4MiBsZWdhY3ktdHJ1bmsKKzI0MjU4IGIxNjNlNzg2YWM3NGU0YTU2N2U0MTA4YjkwNTE4N2M0MGI3NDlhMmIgbGVnYWN5LXRydW5rCisyNDI1OSBmNzExY2Y0NTg1MjVlZWQ3Y2JmOGEyYzBkMTZkNDVhYjhmZjhlY2E1IGxlZ2FjeS10cnVuaworMjQyNjAgYWFjZTRmYWZmMTdkZDkyNDVlZGZiN2ZiNTE0ZjJmZWYzMjQ0MGEyMyBsZWdhY3ktdHJ1bmsKKzI0MjYxIGY5NmU4OTFjZjBlNGVlNTJkYjliNDRkMGFlZjE3OGE5ODQ2OWFlZGMgbGVnYWN5LXRydW5rCisyNDI2MiBhYzJiYzA3ZTg2OTdmNzY1ZWE1OTQ5YTYzOTQ4MWNiMDM5YWZmNGNhIGxlZ2FjeS10cnVuaworMjQyNjMgYTg1YTNjMTBiYTRkYTRhZDkwY2IzODEwOTQ3MTdjZTFhNDU0MTk2MiBsZWdhY3ktdHJ1bmsKKzI0MjY0IDAxZTQ3Y2U5NjIwMTBmNmMxNGFhZTBiYWExMmJlYjFkZDBjMjQ1YzMgbGVnYWN5LXRydW5rCisyNDI2NSA4MTYyNjRiZGExMzZjZTYyMTdmODU5ZjBmMGM4N2FlMWZkN2VjNGZlIGxlZ2FjeS10cnVuaworMjQyNjYgMGQxZGViNDAyMTlmOWZjMDI4N2ZjZGZhMTcxNWYyNTVkYjFjNjcwYSBsZWdhY3ktdHJ1bmsKKzI0MjY3IDViNTc4ZDRkODkwMmI5NWI1MjFkZGJlMGI0ODhhMGNhNGNjZTgwMTEgbGVnYWN5LXRydW5rCisyNDI2OCBkOWI3ODUzYTA0MzFiMzY4NDg4NjNlZWEyZDE1ZjAzODllNWMyOGJlIGxlZ2FjeS10cnVuaworMjQyNjkgM2E1NDNhZjE5Yzc5NWZhMTkzZjQ4NTJhMjYyMWJkMWVjMDBkMjM0YiBsZWdhY3ktdHJ1bmsKKzI0MjcwIDIyZGYzZWQxMWUyMTk2ZGMyYjM4ZjQwZTg3ZTJjNGVhYjJlMWYzMjEgcjIyYjItYnJhbmNoCisyNDI3MiAwOTI0NGM0NjgzMGY3Yjg5MDg2YmI4YzJmNzRkMjYyOTQ4Yzc4YWMyIGxlZ2FjeS10cnVuaworMjQyNzMgMTc0Y2NiMDM1YjNkODU4OTNiYjgwYmFmODg1MWFmMDljZjgyNjVjOCBsZWdhY3ktdHJ1bmsKKzI0Mjc0IDU3MGE1NGJiMWE1OTg4ODJjMTA1YjdlMWMyZGRiNGIyNjljMTFmODUgcjIyYjItYnJhbmNoCisyNDI3NSBjMzI5YjgxMWVlNTQ5NmJkNTljNDg0OTI0MDQ3MDRhZTM4YTM2ODJhIHIyMmIyLWJyYW5jaAorMjQyNzYgZjBiNTc1ZDZmZWFhNzBkZjQzMzllNDA0N2NhNzczMDdlOWIyYzI4YyBsZWdhY3ktdHJ1bmsKKzI0Mjc3IDU1NWE5ZTAwMTlhNzc5OTZiOTM5YmQ5ZTc3Yzk2YzllYmEwN2I0NTAgcjIyYjItYnJhbmNoCisyNDI3OCA2YmZmZDJlMjMyNmEzMTQxODA2OWZkMjU4MDc3YThhODllYTU4ZGJiIHIyMmIyLWJyYW5jaAorMjQyNzkgODRiY2ExZWYxMTY4YmM5N2E4MmU1NGY3ZDQ3NzQ0ZGRkNThkNWRkZSBsZWdhY3ktdHJ1bmsKKzI0MjgwIDNlMGNjY2NjNGRjYjFlNzdhYWIxZTk1ZDVkMTg3Mzk3NTZkYmJiOTkgcjIyYjItYnJhbmNoCisyNDI4MSA0NjViYWIwN2QyYTg4NDgwOGY2MDA1ZDQ4Y2Q2MzUyMjU5NjE1MzJkIHIyMmIyLWJyYW5jaAorMjQyODEgZjcxNTgxY2U3YTNjZWQ2OWMxYmJlNWFiOTEzOTkwYTVjOGM0MTY5NCByMjJiMi1icmFuY2gKKzI0MjgzIDkyZDZmNmY5N2M3MGM5NGY2ODg3YTVjMzIzNGM4MWRjNGVmNDVlZTUgbGVnYWN5LXRydW5rCisyNDI4NCAzMGUxM2YwZWE3NmIyMWM3YTI1MmNlNDIzNDZiYTAyMzIyYWM4YjNkIGxlZ2FjeS10cnVuaworMjQyODUgNDM2NTMxYjBhY2Y4MWExNDdiYTA3ZTYyNzA0NGVlZThlYTEzNDVhMyBsZWdhY3ktdHJ1bmsKKzI0Mjg2IGY3YjYxMDA1OTNkY2YxNzY5NWMzZGMzMzM3NWQxMjg4ZGE3OWUwMGMgbGVnYWN5LXRydW5rCisyNDI4NyBiZWE5MmMzZDc3YTMyYTQxNmU2M2IwZWNiNjA3ODk4MTNkZDI4YzgyIGxlZ2FjeS10cnVuaworMjQyODggMzk0ZGE0ZWZmYmVjNjg4Mjg0YzI4ZjMxM2Y3NGFkOWMwODcyYmIxZCBsZWdhY3ktdHJ1bmsKKzI0Mjg5IGQ5MTRlMGYzOWY4Mzc4ZTMxOTM3NjMwYTU1NjZjYWJjYTFmZTBkNGQgbGVnYWN5LXRydW5rCisyNDI5MCAxYjRlMmE3OTc1OTYxYTA4OWRhOTQwYWIwOTEwN2UwZmYyZDNiOWYxIGxlZ2FjeS10cnVuaworMjQyOTEgNmUxMGExNDk5ZTI0MjNkMmI0N2Q0ZjRjZDI0YjZlYzc5ZmQ2ZDQzNCBsZWdhY3ktdHJ1bmsKKzI0MjkyIDk0ZmUxN2M2NzcxNTQwODAyNzkwNjJlN2I0NTE1YTRkNmI1YjBhMzYgbGVnYWN5LXRydW5rCisyNDI5MyA2MWEyZGY1Njc0NmVlZTNmZGExZjk4Zjg2OWNkMjE3ODNkMzQ2ZDYyIGxlZ2FjeS10cnVuaworMjQyOTQgMjJjZWRlZGEyYTczY2M1OTZjNmZhN2E4MzMwMTI4YjM3YWFiN2U4MyByMjJiMi1icmFuY2gKKzI0Mjk1IGI1YzJmNzk0ZDgwNTkzNzE3ZTJlODc3ZjYxODA0OTc0ZDk0NzQ3MGUgcjIyYjItYnJhbmNoCisyNDI5NiAxZmRiODlhOGI2MjE5OWJhOGU2Mjg4MTc5ZDNlNDU0YmU5N2NhMGM2IHIyMmIyLWJyYW5jaAorMjQyOTcgNDRjNzc4MWQzZjBjY2Q0OGMxMTk3YzQ5YmE4YTU2OTZlYzlkNGJjYiByMjJiMi1icmFuY2gKKzI0Mjk4IDQxZWY5ODJhNjRiMWIxZDE5ZDdhYTk5M2VmZGMwZDYzZmExNTY4ZjUgcjIyYjItYnJhbmNoCisyNDI5OSAxMjY4OTVhMzkyYmE3M2ZiOTc4MzU3YzNiZGVlZjFjZWEyZjk1YjNmIHIyMmIyLWJyYW5jaAorMjQzMDAgMTQ1ZmFmMjk4Y2RjYzEzMjRjZWNiZWJkNWRiMjM2MTVjZjZiNDdkOCByMjJiMi1icmFuY2gKKzI0MzAxIDk0Yzg1OGZlYWU3Zjg4NjEwY2YzZTMyN2MwNzI2NDFhODdiMzE3NDEgcjIyYjItYnJhbmNoCisyNDMwMiBjNTJiYjg2MmQwZjc3MzU0ZGE3YzRkYWY0N2M5MzgwNmZhNTA5OTBiIHIyMmIyLWJyYW5jaAorMjQzMDMgMzBhNDA4MGJjMzBiNTkxZGNjYmE4MzEzZGJhZGFhZjc0NzAzYmNiNiBsZWdhY3ktdHJ1bmsKKzI0MzA0IDRhOWE5Y2MwNDFkZWNlNmExOWUxZDA4YjAwYzhjZjA3NDFlZmNmYzkgbGVnYWN5LXRydW5rCisyNDMwNSBmZTI5MzI3ZTQ3MWNlMmU2ZjRmMWM1NGQxZjE1MWU3YTg2NzFkNzczIGxlZ2FjeS10cnVuaworMjQzMDYgOGMzMjE5YTRkY2Q2ZGViNjE5YTg1YzZiNzA3NDcxODU4YzY4YmUxMiBsZWdhY3ktdHJ1bmsKKzI0MzA3IDQxYjhkNjY3MzBkNjFmNGExYTYwZWE5OTViNDQxOTAxMmNmYmU4M2EgbGVnYWN5LXRydW5rCisyNDMwOCAzM2ViNjNiODZhMTkzNmVlNDc0OGNlYTJmYzcyMTViNTI1YjA0NzBhIGxlZ2FjeS10cnVuaworMjQzMDkgNDlkYzE0NGExNTU1N2MxN2U2YTkxNTczYzk0ZGIxNmZmNjcwMzFhMyBsZWdhY3ktdHJ1bmsKKzI0MzEwIDU3Yzc5MWE1ZjgxYzc1ODcyYmVkYmU0YmQwMzE5ZjcxZWYzMDU2NzcgbGVnYWN5LXRydW5rCisyNDMxMSAyYjY1MGMyMWE1NjM4ZDU4ZmFkZTg3MDRiNjcyNzhlY2M1NWNjY2IzIGxlZ2FjeS10cnVuaworMjQzMTIgNDIzNjViNzBlOWQ4YjhlNGViNTA0YjMwNTBmNDA2NzQ2MjBkOWJmNCBsZWdhY3ktdHJ1bmsKKzI0MzEzIGY0ZDlmYTIwN2U0MGU1YjBlYmFkZWU3MjY0OGEwZDM1MWU1OTU4NzQgcjIyYjItYnJhbmNoCisyNDMxNCA2MmM2M2JhOTBkZjIxMGJhMzYwYThmOTc1ZjY2MTgxNWU4M2U5NzdmIHJlbGVhc2UyMS1tYWludAorMjQzMTUgMGY0MDgyNjFiM2M4YjdhYWJhYzFkMzliMjU1ZDY5ZDU5ZjBkMjg5ZiBsZWdhY3ktdHJ1bmsKKzI0MzE2IGE5NjUzODExNzMxYTAwM2JhNDgwMWNjYTJkNzAzYmM5MTMwZGVjMjAgbGVnYWN5LXRydW5rCisyNDMxNyA5ZjY2YWFkZGY4ZDQwYmYxYTM4MjFmMmFkMTkxZjlkYzM4N2Y4ZTZjIGxlZ2FjeS10cnVuaworMjQzMTggN2ViYzNlMjk4M2QxMWIyZDVmYTNjYzU2NTQ5ZDlmYTk4MGM1OThlMyBsZWdhY3ktdHJ1bmsKKzI0MzE5IDFkYWViZmYxNzdlZjEzNzdlMWNiOTkwZTMyZmJkMDFmOWZjZTk1ODggbGVnYWN5LXRydW5rCisyNDMyMCBmOTU3ZDM5NmM4NGU3MWRmMjI3YmVmNzMwYzYyMTI4ZTJhYWU1OGVlIGxlZ2FjeS10cnVuaworMjQzMjEgZTc5ZmMyNTdiY2EwZTZlZDEwNzgxYjA3YmE4Mzc3NjYxNmNhNjRlYSBsZWdhY3ktdHJ1bmsKKzI0MzIyIGRlZTBlODY2NjUzZTZlNDFiNWY2NTFhMjA5MjIzOTBlYmRkOThiMGQgbGVnYWN5LXRydW5rCisyNDMyMyAzZGZiYmY0MmJmMTZhZTk3ZmJiZDJhNDZlZjEzYjE5YjBmZjBjNWViIGxlZ2FjeS10cnVuaworMjQzMjQgMWVlNzViZDRlZTM0NjhkNTE3YmM1MTc1YmM3ZGY2MTU4OGY3YTgzNiByMjJiMi1icmFuY2gKKzI0MzI1IDEwOWVkNjk2NDgzMmFkZjg3YzliMDRkYzQ1NjA2MmY3MWUwMWM0ZWMgcjIyYjItYnJhbmNoCisyNDMyNiBiZDJlODlkNzdkNDVhZGYxN2JlMDdmOGQ1MTI4MTJmMzdhZTRiNjE1IHIyMmIyLWJyYW5jaAorMjQzMjcgNGM4MzI4NzhkZTc0ZWI3MjFhNWY2Y2VmZGMxNmI5YWI0ZDQyNWQwYiByMjJiMi1icmFuY2gKKzI0MzI4IGUzZTNjZDQ3YmFkNWZkMzgzYmM1OGJiMjI1ODkyNTgyOGFmNzQxMjggcjIyYjItYnJhbmNoCisyNDMyOSBkMjEwMjhkNWNjODUyOGM0NjVkNzhkNjZlMjZlY2Y0NGIxMDE4NzMxIHIyMmIyLWJyYW5jaAorMjQzMzAgNDgyNjBiMGI1MjZmNjlhMTVhMWQ0NzBkN2RjNzZkMWVmZWE1NzdiNCByMjJiMi1icmFuY2gKKzI0MzMxIGVlMjRiZDBjYWQyOTAzYjEwODRhZjBiMTgzMzY5NDQzZjczOWU2N2YgcmVsZWFzZTIxLW1haW50CisyNDMzMiBjN2U4MzNiM2NkOWM1YWFhMmZlZjVkZDJjYjUyM2IzNmQ4OWZmMTc4IHJlbGVhc2UyMS1tYWludAorMjQzMzMgOTc0NjIxOTgxM2Y5OTc5MjdlZWRjMjdhZGVlYzU1MGU2NTg5MmMxZSByZWxlYXNlMjEtbWFpbnQKKzI0MzM0IDExY2IzZGUwODIzZGE4ZWMyOGI4ZTI1NjQyZDU3MTU5NTg3OWQyMjIgcmVsZWFzZTIxLW1haW50CisyNDMzNSAyMjM5NTMwNjlhMWEwOWYwMjk2YWYyYTlkYWYxMGVkMzY5MTA0MDI5IHJlbGVhc2UyMS1tYWludAorMjQzMzYgM2ZjMDZjMTE0OWE0M2RiMmY4NjZhNzUzOWVlN2FmOWNiMGI5M2FjMyByZWxlYXNlMjEtbWFpbnQKKzI0MzM3IGM0NDk5NTk2YjFhNDBmZDhiY2YxZDg5Njc4ODcwODgyNzRiOGRiNjEgbGVnYWN5LXRydW5rCisyNDMzOCAxY2Y3N2RmOTVmNDUyNTM4OTc2NTkzZTRmOWI3ZWU4MWMzMjdkYzhhIGxlZ2FjeS10cnVuaworMjQzMzkgNTk4MWRmZGRhODU3MGI2MTcyM2VkODhmOTkxOTg5MzIzMDliYzY3ZiByZWxlYXNlMjEtbWFpbnQKKzI0MzQwIGFmYjc4OWFhZGExNmZkOGRhNmZkNDJkOTNlNGJkNmVhZTgxY2Y2MTMgbGVnYWN5LXRydW5rCisyNDM0MSA3NzhlNmE4MGZjZWU0ZjU1ZmY0MzY2ZDg4YWRjZmRjMzI5NTZiNDE2IGxlZ2FjeS10cnVuaworMjQzNDIgYzNlNmU2M2Q5YmEyZDgyOWYwMWNjNjg2Mzk0YTE4YmI4ZmY2OTE2NSBsZWdhY3ktdHJ1bmsKKzI0MzQzIGU1Y2Y3NGY3OTE2NzliYWUxNWVhMzQzNDI2N2UxNGRkMzE0ODM0ZTYgbGVnYWN5LXRydW5rCisyNDM0NCAwODQ2YjRlMjUxN2RmMDI4YmNhMmE0YjZkMmEwMDJlOGZlMTE5MjU2IGxlZ2FjeS10cnVuaworMjQzNDUgNzBiNDMwNmY0ODhkYjE0NjBlYTEwMDk3YWY3ODFlNGY1YjFmMmRiOSBsZWdhY3ktdHJ1bmsKKzI0MzQ2IGIzZDYyN2VlMmI3M2ZlMWMwNWY3MDYxYTMyYjk2NWE4ZmQ3NmY2MzIgbGVnYWN5LXRydW5rCisyNDM0NyBlNmVhZjk1N2VhMjZmNzE2NGRmYjZkMGFkMDRjMDYyNDZlODg4Yjc0IGxlZ2FjeS10cnVuaworMjQzNDggYjExNGIxMDA3NDE4ZWUyZTEwZDE0MTZjMGYxYTIwZDc2M2NlNGI5NSBsZWdhY3ktdHJ1bmsKKzI0MzQ5IDg4MWY0OWJlZmNhM2MwMWEwNGJhOThjYzZkMDdhMWQyYTQ1MjAyOGQgbGVnYWN5LXRydW5rCisyNDM1MCBjZDBiNzViMTlkZjdkODI2Mjc4MmFhNTU3MTU4Y2FiMDM1MWYwMDQxIGxlZ2FjeS10cnVuaworMjQzNTEgZmVkNTA3MWRhOTU3NWQ0ZDY5NDQ1ZjQ4YzMwMjFlNDExZTZhZjI0NiBsZWdhY3ktdHJ1bmsKKzI0MzUyIDdjYTVhNDgxYzBkMTc5NTU2OTYzY2QyZGVjNTU2ZWY1N2FjODQ3YTkgbGVnYWN5LXRydW5rCisyNDM1MyAxYWUyYWZlNjc1ZmRhN2JjYzUxMGNkOTZjY2Y5ZWM1MDRjNzYzMTY0IGxlZ2FjeS10cnVuaworMjQzNTQgZGEzODhlMWQ0MDRiZmI4M2Y1OTEwM2JmMjhjNjYyZWRjYzM3NzBiOSBsZWdhY3ktdHJ1bmsKKzI0MzU1IGI3ZjM4ZTc2NTE0NzkzMzkzNWFhZGVjNmEwNWFlY2RhZGFmNzQyZDYgbGVnYWN5LXRydW5rCisyNDM1NiBiY2JkYTYwNmQ4Yzc1NzE4YjQwMjgzYzdjNWY5ODFjMTYwZGNjYjZhIGxlZ2FjeS10cnVuaworMjQzNTcgZDQ1NjkxYTY5ODdmZTk2N2EwNWZiYmNmMWI3ZjA5N2M0OTBjZjMzOCBsZWdhY3ktdHJ1bmsKKzI0MzU4IGJhYzk0MmU2ODVmYWQyZGJiZDIwZDlmNjNhZTgxOWIwNDJjODM3ZGEgcjIyYjItYnJhbmNoCisyNDM1OSAzNmM4OTdiY2Y0ZDdlNjk0MjQwMTEzODYyM2VmM2MzOWY5OTEyZWJhIHIyMmIyLWJyYW5jaAorMjQzNjAgZjhmZGJmYThkNWYzYjgyZmVhOTlmOTVlYjc5OWY4N2Q4NzJkODYzNiBsZWdhY3ktdHJ1bmsKKzI0MzYxIDJjMGE5YTUwODZlMTBiOTlmMDQxZDBiMGFjYTJkYjZjYzFkZGQ0NzMgbGVnYWN5LXRydW5rCisyNDM2MiA5ZGY4MmMxM2M2NzVmMDc0MDAyZDAyODMyYmZhZDk5MTM1OTc2NmRlIGxlZ2FjeS10cnVuaworMjQzNjMgZTc2MzA2ZWVhMzcwOTc1MGRiNTc2ODM1ZWFjNWI2N2QyMWM0MmZmYiBsZWdhY3ktdHJ1bmsKKzI0MzY0IDU5N2QxMGNmNzkzOGU5YmIyNjU5N2UzMzZmNWFlZjI2ZDNkNmUxNjggbGVnYWN5LXRydW5rCisyNDM2NSAxODAyYTllZGI0ZWVmNGQ4ZTYwZWZkOGUxNzU5Yzk0MDBhZWIwNzI3IGxlZ2FjeS10cnVuaworMjQzNjYgYmMwMmMzYjA5NjI2YTA0NWY2NmI0NzkwZDJjOWY3N2M2NmRlNDk5ZSBsZWdhY3ktdHJ1bmsKKzI0MzY3IGYxODc0OTZmZmFlZjlkMjFmYzI2Mzg5MGU5YTU5N2U4OTNlOWM3OTMgbGVnYWN5LXRydW5rCisyNDM2OCBhMmQ3OGUyMWE3ODU3ZTE2ZWMwN2U0MDY5NzEwMTA0MjVjMDJiYjYxIGxlZ2FjeS10cnVuaworMjQzNjkgNTBjZmJkZGM2MDM3ZTk3NTFlOGUxOTdlYTQ3OWE3YzE2MmRkMzMwYyBsZWdhY3ktdHJ1bmsKKzI0MzcwIDIyNWM3ZGQxN2UzNzI2Nzk0M2QzZDczYWNlNDQwMjdiYzNhOWE4MGEgbGVnYWN5LXRydW5rCisyNDM3MSBjOWM0YzUyM2RjYmYxMjhkN2E2NWFiNzlhYmQ3MmIyZDE0ZTdjYzhkIGxlZ2FjeS10cnVuaworMjQzNzIgOWIwNTlmMWIyYTFmMDU2OTk4Zjk5ODY1MTI3YzMxMDJkYzAxYTJkNCBsZWdhY3ktdHJ1bmsKKzI0MzczIDdkM2EyMTFlZjIzMzY5OWZlZGFmNDlhZDkwOTcyNGQ4ODYyYWExOWMgbGVnYWN5LXRydW5rCisyNDM3NCBiYTY3YjljOTdiNjk2YmY2MjU1ZDViMzliMGMyZjVhMDc1YTU5YWU1IGxlZ2FjeS10cnVuaworMjQzNzUgNjM5MmYwMzIyMmUwMTBlODAzMzg2NzI4YTc5ZmRhODY4ZjM3NTgyZSBsZWdhY3ktdHJ1bmsKKzI0Mzc2IDYzOWMwYTNhZThkY2I0NWRhMTYxZjJkODBlY2Q4ZDI3OTEwMTZkNmIgbGVnYWN5LXRydW5rCisyNDM3NyAzMDRiMzQwMjM4NzY5MjBmNTcwNDY1YzI4NjJiZWQ0MDZmNDJjNmMwIGxlZ2FjeS10cnVuaworMjQzNzggNDdlYTczZmQ3ZTZiYTMwY2I5ODZiMDEzNzkxNGQ3Mzc5MDJhNjAzYSBsZWdhY3ktdHJ1bmsKKzI0Mzc5IGRjNjQxZTEyNTZmOWM0ZGU4MDcyN2VmNmQyNWRjMzAwMjA5ZTgwZjkgbGVnYWN5LXRydW5rCisyNDM4MCBjNWZiZTkyZTAyZDNhMTU3MDBjOWY0OWM0ZWQ4YTI5YjM2ZGY4YTRlIGxlZ2FjeS10cnVuaworMjQzODEgMzc5ZmM2NmY0Yzk2ZDBhMWY3YzE3NmY5YmVkZDEwY2Q3MzViNmQyZiBsZWdhY3ktdHJ1bmsKKzI0MzgyIDAyNWFkMjdkNDIyNGY0NTcyNDUxMzRmY2M5YmFlZTBiMzg2Y2U2YTUgbGVnYWN5LXRydW5rCisyNDM4MyA4Y2VmNzVjYWNiMDE2MDRjZGYwMDAwYWRmZWI2NjhjNjcxZDQ5ODVhIGxlZ2FjeS10cnVuaworMjQzODQgNWI0NTk2NzdmYzQ0NGZjOWIwYzAzYmJiOTZkZDUwYWIxOGEwZDE5OSBsZWdhY3ktdHJ1bmsKKzI0Mzg1IDk0ZjVhOWZhMzU4MzQ3NTA4MTRkMTYyOWQ2N2Q0M2RhZWJkOTQwYjMgbGVnYWN5LXRydW5rCisyNDM4NiBjOGQ3NzViOWZmOTJhOWJiOTM5NWQ1MGI2YWY2ZmEyMTY4NmRhNDMwIGxlZ2FjeS10cnVuaworMjQzODcgZDNiNjQwMWNhMjczYjVlNGM4ZWNkYTNhYTkzNzc1ODlmYjgwNDMzMSBsZWdhY3ktdHJ1bmsKKzI0Mzg4IDUyY2U4ODdkYjNjOTMxYTYzOGUxYWY1ZmNhNWMyM2U4Zjc5NzhmM2QgbGVnYWN5LXRydW5rCisyNDM4OSAzZWIyNGY0Yzg4ZDViMTljZmVhNGY4ZGVlYzliZjE0NDRhZWZiM2I1IGxlZ2FjeS10cnVuaworMjQzOTAgZWE1YjBmMGI3MTZmMjU0ODQzMjY4YTkyN2EyODRjNzQ3NjQ0ZDFiOCBsZWdhY3ktdHJ1bmsKKzI0MzkxIDQxZWEyYWJiNzRmYjM5YzFiYzc3N2I2ZWY3YThhYjE5NjhlNTdkOTIgbGVnYWN5LXRydW5rCisyNDM5MiAzNDdlYTY5MzAwMmQ1MmI4OWUzMTBkMGI0NTg2MGYzYjEzZmI0YjUzIGxlZ2FjeS10cnVuaworMjQzOTMgZDk1YTRlYzY4NWUwZTM4YTM5NzRlZWNiYTY5ZDUwNWEyMTZhNDk5MSBsZWdhY3ktdHJ1bmsKKzI0Mzk0IDVlMjVjNjY5NzQxY2Y5MTFhMWRhYTkxMTYxYjU1N2I0ZjM3YzJhOTMgbGVnYWN5LXRydW5rCisyNDM5NSA0N2Y2NTMzNjc0ZmRhMmRiNjI2YmRmYjYzNzQzMzczNTg1YTkzY2JiIGxlZ2FjeS10cnVuaworMjQzOTYgNTMyNzBkMjgxYmYwODNiZDhkMTY0ZTI4NzZkNDQ2NGZhNjA5YWU1YiBsZWdhY3ktdHJ1bmsKKzI0Mzk3IDdkZTEzM2NiYmFmMThlODY4M2EwNDgxMzI5MTEyYTQ1NjRiNDVjODAgbGVnYWN5LXRydW5rCisyNDM5OCBjMjE1MDMxM2Q5ZDEzZTZiNTI2ZWVjYjFmNTJhNDBlNDlkM2IxODY1IGxlZ2FjeS10cnVuaworMjQzOTkgYjEyODBjYmE3OWI1OWFjM2Y2YjljZDRkZjFmYzQzNGI0N2QwOTNlNyBsZWdhY3ktdHJ1bmsKKzI0NDAwIGNkYjcwYmY4OGRiMWE4ZDBiYTYwMGY0MDI0NjJkYTEzM2JhMDYwMGQgbGVnYWN5LXRydW5rCisyNDQwMSA5YmEzYzgyOTQ2Yjg5NjFjMTc2NzllNmUwM2ViNjk3ZWNmODdlNGQwIGxlZ2FjeS10cnVuaworMjQ0MDIgODJkODQxMzYzNmU3NzkwZDU1ZjlmOGZiODNiNDQ3NWZlM2ZiOGVlMCBsZWdhY3ktdHJ1bmsKKzI0NDAzIDgzZmM4ODM1MGY4MGEyMmI5ZWNhYzU3NWJkZDExMTE3NzQ2OTVkYjcgbGVnYWN5LXRydW5rCisyNDQwNCAwZmVhYzQ1ZWU2NjJlZmQwOWU3MzBjNjQ4MDBjM2ZlNTJlNTI3NGZmIGxlZ2FjeS10cnVuaworMjQ0MDUgMTgzZjI4NTk5NzM2NjMxZDUwOTIzMDM5OGZiMjcxMDI1MjFmOTExOSBsZWdhY3ktdHJ1bmsKKzI0NDA2IGQ2YzE4M2NhMDkzYzgwM2I0NmVlODZiNzA0YTk2M2I5YTFhMmJmZjYgbGVnYWN5LXRydW5rCisyNDQwNyBjZWM4MDA5MzFhMzcwZDI1Yzk0YTlmYWUzM2E4ZmYzNGY2ZTI5MTI1IGxlZ2FjeS10cnVuaworMjQ0MDggZTQyMjAzMWI4ZmQ3MDg2MmUwNTc3NGEwMzY5ODk1NDY1N2I4ZWRkYSBsZWdhY3ktdHJ1bmsKKzI0NDA5IDY3NDcxMDcwYjk2NjgzYzFmMmU1ZjBmM2ZiNWZlMDdlYzIyOTQ4NzkgcjIyYjItYnJhbmNoCisyNDQxMCAxMTQ3NWRkNDZmYTc2MTMyNzA0NzIzZTMzZTg4MmIxNjRmNDU0M2IzIHIyMmIyLWJyYW5jaAorMjQ0MTEgMzRmYzUyMzgzMTBkMzNjNDA4NTM0ZWVmYThmNzIwMjE5ZGM3NGU5ZiByMjJiMi1icmFuY2gKKzI0NDEyIGU5YTAxZTI0YTRhOTc0ZjU0YzBiNGI4ZGMxYjM1NDY5OGRjYTc5Y2IgcjIyYjItYnJhbmNoCisyNDQxMyA2MTg1YTY3YjMwMTI4NDA5ZTk1MzgxN2NkOWRlMThkNTJkMDViNTMzIHIyMmIyLWJyYW5jaAorMjQ0MTQgMDNhZWE3NTc1YWZiYTZiZjk4MjBkMWJjNDMyMzA5MDkwMDgyYWRiMCByMjJiMi1icmFuY2gKKzI0NDE1IGE3MThiYTk5MmYxMDRhZjNkOWFiZTdhOWVhOTQ1YjZiOTRkNTUxZDAgcjIyYjItYnJhbmNoCisyNDQxNiBiZTM5ZmE1NTU4YzU0NWRhMzNlOWM4MzNlNDU3NWUxYWM5N2RmMDUwIHIyMmIyLWJyYW5jaAorMjQ0MTggZDE5NTEzZTI4OTNjOTllZmU1ZWJjYmYxNWU1MTc2YzUwNGJjMGJjMSBsZWdhY3ktdHJ1bmsKKzI0NDE5IDM4MjdmMTM2ZTBkNmU2YTBhMTk1NGFhMzkyNWJlOTgyOWJiYWIyZmEgbGVnYWN5LXRydW5rCisyNDQyMCAyNzExZjhkYjE2NGNmYWI1ZTdkOTRkZGVmNGNlMjNjOWVlM2EzZTMyIGxlZ2FjeS10cnVuaworMjQ0MjEgMTI2NjhkMGFmOGY3ZjU0Zjc5MjdlODY5YTJjZDAyODk5NTAzZmUyYyBsZWdhY3ktdHJ1bmsKKzI0NDIyIDA1MDk1Mzk4ZjkzOTJlMmU4NzRhM2FlYzY5YjlkYjU1NzI2M2I2MGQgbGVnYWN5LXRydW5rCisyNDQyMyBhZjFjNWZiNmE3MDM5MmIzMGVjNjFhMWYxYTYzMTMxYWM0Y2UxOTBlIGxlZ2FjeS10cnVuaworMjQ0MjQgOGQwYzEwNmQ5MDk5MjY4MTFlMzNhMDM3ZWIzM2YxMTZiMzRiMDYyMSBsZWdhY3ktdHJ1bmsKKzI0NDI1IDM4ZDBiZDBmYTdmMmU3YjcwYmI1M2U5YzllOTQ1MzM5NWE1OWQ2NDIgbGVnYWN5LXRydW5rCisyNDQyNiBlZDNkY2UxN2ZjNzliN2E2YzZmZmNjYzZhMjlkY2M1NTUxYmUwNmM2IGxlZ2FjeS10cnVuaworMjQ0MjcgZjdkYjJjMGEzMGZjZThkNTk3M2MyMGU4YjE4NGRkOWUwYzcxMzdiNyBsZWdhY3ktdHJ1bmsKKzI0NDI4IDBlZDZmYzdjMWMwOTNkMDZjZDA4ZDU4ZjQ0M2E4OWZiNmIzMzIyN2UgbGVnYWN5LXRydW5rCisyNDQyOSAwYTY3NDYzZjhiN2QyMjU5YzhmZjJmZTFlNjE2ZTRlNWU4OGNhNWE5IGxlZ2FjeS10cnVuaworMjQ0MzAgY2Y3OTcwMzM0MDQxOGZkNzRkOTQzYzdkODBmMzM2YWI5NjdmNmEzMyBsZWdhY3ktdHJ1bmsKKzI0NDMxIDJlNmNlM2E1NjI4NGJmZWNhNWI4ZjdhNWE2MDBjMzQ0ZDg3OGIyMTYgbGVnYWN5LXRydW5rCisyNDQzMiA0OTNmOTMyZDU4MjliMWRjOGMxODAyYzExODI0MGZmYzZjZWVmYjJmIGxlZ2FjeS10cnVuaworMjQ0MzMgNDY4NTMwNzM4NGViMGQ3ZmQzMWEwODYwYThjNjVkMDE2ODA1ZGMwMyBsZWdhY3ktdHJ1bmsKKzI0NDM0IDY3MWE4NDg2NmFjOTk5NjM4ZWNmMGViZDhhNjYyZTg3ODZhYTJlMDMgbGVnYWN5LXRydW5rCisyNDQzNSA2ODdiOGM3MTkyYTFhMTY2YzA2ZDQ3YWI3MGVjOWZlMWNiMGI5NTAxIGxlZ2FjeS10cnVuaworMjQ0MzYgMjE4MjA3MzJhMTE3MWJmYzY3NDZiNzJhZDNmOWZmNDA3MTc4MmU0ZCBsZWdhY3ktdHJ1bmsKKzI0NDM3IDIxYmI0YzRiN2UyNmY1MDg3MDZlYjc4YjRmZTU0OGNkNWFhOWFhMzQgbGVnYWN5LXRydW5rCisyNDQzOCAxN2U4N2FhMzc3OTYyYzU4NjRkNmFkMDlmNzI0MGZiODEwMTVmNzM0IGxlZ2FjeS10cnVuaworMjQ0MzkgNmI2YTljYWUyNTZlZTMxYzM0Y2Q4NjVkZWIzMDIxODA4ZGMyNGFhMiBsZWdhY3ktdHJ1bmsKKzI0NDQwIGRkMjhhNGVjYjM3ZjYwOTM5NDk1MTBlOWJlNGUzODlmNmRjMmFhYTcgbGVnYWN5LXRydW5rCisyNDQ0MSAxNWZmNTA0NjMyZWQ2YThlODFkNzdmOTAxZTNhOWRlZDU0MWUzMTM3IGxlZ2FjeS10cnVuaworMjQ0NDIgYTEzYTQzOTNmNDVjMDFlYWViMGMwMjUxMzZmMTRjNTA3ZGFiMzIzZSBsZWdhY3ktdHJ1bmsKKzI0NDQzIDZlMzQxNTFhZWZlNjYzMDUzZjFiY2QyOGZkZTAxYWMzZmQ5NzcyMjMgbGVnYWN5LXRydW5rCisyNDQ0NCA2MGUzNmQ1MTg3NThmMWUyOTRmYzE3MmI5Y2QyYTY2ZmMwZTU2MTMzIGxlZ2FjeS10cnVuaworMjQ0NDUgYTlhODczNDFhOWU3YjA2ZWNkMDQ4ZmQ0MDcwNGQ1ZGQ1NTk0N2ZjZCBsZWdhY3ktdHJ1bmsKKzI0NDQ2IGVjODhmYzQzMDEyNzYxMWU2YTg4MGViY2E5ZjYwZTVmNzU0MWRmNjQgbGVnYWN5LXRydW5rCisyNDQ0NyBhYmUxNGFjNjIwMjQyMTM3NTUzODdkNjJjMWQwOTA5NjQ4NjVjYWMzIGxlZ2FjeS10cnVuaworMjQ0NDggOTQzNjM5Yjk0NGFiNGVlMzJiMzNkOTRmYjE1ZTBiN2Q4ZDg4MzI4NCBsZWdhY3ktdHJ1bmsKKzI0NDQ5IDE5N2E5MDQ4OWJlZWQ5YzVkYWQ1NDcwZmYxNWM1ZjBjOGFmMDFhNjUgbGVnYWN5LXRydW5rCisyNDQ1MCA1YjhmMDdlNjM5OWMxZTY3MDJlOWRhNDIzNTE1OWYxNjhiYWE5NzdkIGxlZ2FjeS10cnVuaworMjQ0NTEgYTJkMDNjZWJhODBlYmZhNjI1Y2MyYTQ1N2U4ZjEwNDUwN2YzZWIwNSBsZWdhY3ktdHJ1bmsKKzI0NDUyIDY3NTA4YTM1MWFhMmJmYmI2Mjc5MDQwYmYwNzhmOTdkMTFiMjA5MmEgbGVnYWN5LXRydW5rCisyNDQ1MyAxYzZjMDI3ZmQxMTBiZjliNWUzZjRmNDlhMjkyZWY0OGJjNjUwZThmIGxlZ2FjeS10cnVuaworMjQ0NTQgNTFiNDU3MmNmMDEzZDFhNmM4Yzc5NmIxOGUyMGY1NmI4NTllNzM1MCBsZWdhY3ktdHJ1bmsKKzI0NDU1IDg0MmIyODA0MjFiYTYxZWNkNGExOWFkYmZjMDkxYjcwNmQyZTc2NDAgbGVnYWN5LXRydW5rCisyNDQ1NiA3Mjk2NmM5ZGY5YTk5ODdlY2M2MzE0M2IyMjk4YTQ1OTU5N2Y0YjAxIGxlZ2FjeS10cnVuaworMjQ0NTcgOTZhMDhmZDM4ZWY4MTI1OThkNDU4ZmY4YTM3NDE4NGYzNWJiOTE5YyBsZWdhY3ktdHJ1bmsKKzI0NDU4IDg3ZmE2ZTliZDc3ZWMzYzdiZDYxODEzZGQ2YzUzMmM3YjI1NmNjMDEgbGVnYWN5LXRydW5rCisyNDQ1OSAzNGZlNzQzMzUyNmJhNDc4NWJhNmUyMDZmMDI4NDhmYWI3MjgxZTQxIGxlZ2FjeS10cnVuaworMjQ0NjAgOTBhMGQ4MDAzM2I0ZjcwMzQ2YmZmOTYwZmU3N2IwZWI5OTY5ZWM4NSBsZWdhY3ktdHJ1bmsKKzI0NDYxIGQ0NTA5Y2Y5M2Y1MGY5MmMwYTY3MmIzMTg3ZDNjZjhhNDE4OGVmZTQgbGVnYWN5LXRydW5rCisyNDQ2MiA4ZTcyNDU0NjBkMzBiZmY0OWU4ZDc1MWUxNmE1ZmEyNGZkZWNlNTA0IGxlZ2FjeS10cnVuaworMjQ0NjMgMGRkMTZmZDM2ZWU4ZTVjNGI5MTU1NWM3NmY0NTcwY2NlZDBiYmRkNSBsZWdhY3ktdHJ1bmsKKzI0NDY0IDkxOGI1NzM1NGQ4NzQ4Yjk3MzRkMTNjMmE0NDI4NTRhMmQwZTk5NDYgbGVnYWN5LXRydW5rCisyNDQ2NSBiZTVmNTI5NjJhZGIzNGQyZDUzY2ExYTBiMjdkYmU2ZTBiNzZiOTYxIGxlZ2FjeS10cnVuaworMjQ0NjYgMTFhOTY5ZTJmYTUwNTM1NmIwZjA2ZDNkMGRjZmQwYjRjYTM5MzE2MSBsZWdhY3ktdHJ1bmsKKzI0NDY3IGEyMGIzNzJmYjkzOWMyMjA4NDEwOGVhNWEwMjFjYzliNDMwY2Y1MmEgbGVnYWN5LXRydW5rCisyNDQ2OCBiY2E1M2EzN2E4YTVhZmUyNDk5ODZlMDkyOTY2MGQyNmU3ZTkyNTFlIGxlZ2FjeS10cnVuaworMjQ0NjkgOWZlY2JhNTI2OTM2N2FlYjkzY2E3NTVhZjgxYTg1YzkwNDUxNGViNyBsZWdhY3ktdHJ1bmsKKzI0NDcwIGU1OTI0NzJkNTVhMzhmMGJkZDQ4OGRhMWVkMzk1ZTkzNDFjMDUyMTggbGVnYWN5LXRydW5rCisyNDQ3MSAxYWNjNGJhNzNiOWQxNjE3N2MzNmQ3MTc1ZWNjMGY3Y2VkOTA4ZDk0IGxlZ2FjeS10cnVuaworMjQ0NzIgNmZhOTZiMzI5ZTE1ZWUxYzA1ZGY3OTNiNmRlZWMwNDA3Mzc3ZDNkYSBsZWdhY3ktdHJ1bmsKKzI0NDczIDczMzg0ZTEzYmQyYWUxMTJiZTQ2ZGNhNWE4YjExZmU4OWMwODA0ODcgbGVnYWN5LXRydW5rCisyNDQ3NCA5NDNjYTgxYWQxZGYzZjUzOTk3MzMzZjhiNWRhM2MwODU5NTZhMzBkIGxlZ2FjeS10cnVuaworMjQ0NzUgZTFhNjdiZTZjNmU0MGEzZTBiNjVmMjRiY2YzYTFkNGE2MjE0YzMwMSBsZWdhY3ktdHJ1bmsKKzI0NDc2IDdiNjg3OTcxNGI3NDY2ZTQ0OWYxN2EyNzMzNmViY2NkYmY0N2VmNGUgbGVnYWN5LXRydW5rCisyNDQ3NyAyMWFjNTVmYjJkZDhjODJhZDIwZmNmNmMxY2E4Y2Q5M2Q4NDgxNzBlIGxlZ2FjeS10cnVuaworMjQ0NzggY2ZlNDA3ZTRkOGMwMTVkYTY0YjE4NzhlYTZiMjliYzk0ZThkZjJhNiBsZWdhY3ktdHJ1bmsKKzI0NDc5IDBiNGFlYjQxM2Q3ZGY3MzBhODgxNmVlODM2MGIwYTE4MDJmMWFlZjkgbGVnYWN5LXRydW5rCisyNDQ4MCBmZDQyZWFjZTUwZWE1ZGFiNDY3NjM0YmYxZjc4NWY1YWVhODcyNzdjIGxlZ2FjeS10cnVuaworMjQ0ODEgNDc1YzgyNzFlMDU3ZTlmZThhNjY4NGU0ZTdlMGQ4MjA5MzA2YTlkYiBsZWdhY3ktdHJ1bmsKKzI0NDgyIDg5MDVlNjcyNWNhMWIzYTgzMDgxN2JmMDViMzc5MDhlZDFjNzQ3NDggbGVnYWN5LXRydW5rCisyNDQ4MyAyZGZjNjAwZjk5Y2VlNmQ2MjFhNzlkZmYyMWExNWYxYWY3ZjMxMWE4IGxlZ2FjeS10cnVuaworMjQ0ODQgMjQ1OGNiY2MxZGQzNzY1ZTZmNmNlNWI4MzJjOWE3MmQ2ZmRiNGM3MCBsZWdhY3ktdHJ1bmsKKzI0NDg1IGRmMmZmYjBjZDZiYmE2MGIyMmNiOGI4NTA1Yzg5MzA0NGYxYWQ3NjIgbGVnYWN5LXRydW5rCisyNDQ4NiAwYjZhMThjNmU1OWVjNDUwODU2YWM2ZDFiYjU5ZjhlYzY5MTVjOTE1IGxlZ2FjeS10cnVuaworMjQ0ODcgNzg5MjkyY2YwOTE0YzQzNjNkNDE0NmU0YzZiMTA5NzIxNWYyZjU2YyBsZWdhY3ktdHJ1bmsKKzI0NDg4IGM5YTc5NjQwMGE1MWM1MTQ4N2MyNzFlMzM1NDE5NTZjN2U4ZjFhNzkgbGVnYWN5LXRydW5rCisyNDQ4OSBkNGNjMDVmNmUxODM5ZDMwZjRkYjBiYTk4MTliNTE3NzBhOWQyODhlIGxlZ2FjeS10cnVuaworMjQ0OTAgN2QxZWFjNDFjZTNlY2ZlMGFlMmNmZDQ5MjcxMmM4ZjhmNTRhNzM2YiBsZWdhY3ktdHJ1bmsKKzI0NDkxIGJjNTFkZTY0M2I1ZTU4Y2FjZjNlYjE2N2NjZTk0NzE0ZWNmYWM4MGMgbGVnYWN5LXRydW5rCisyNDQ5MiA0ODU0MjI5MDBlZjA3OWMyMTdmYzc1ZGZiM2ZiNzE3ZjU5OWU2MTYwIGxlZ2FjeS10cnVuaworMjQ0OTMgMGZiYzkyODlhNGM3Y2U0MDM5YmM0ZjEyY2Q0ODBjOGM3ZjUyYWU0ZCBsZWdhY3ktdHJ1bmsKKzI0NDk0IDk0NGQ2ZTAyZjM1OTE3NzgzYjRjYjhiMzY1NWQ2YzBlMzQ3OWNhMzggbGVnYWN5LXRydW5rCisyNDQ5NSA0NzNmMjk0MTFmM2IyZWQyMzg3MzU2ZDcxNjI5NDk4M2ZlYTgzYTdmIGxlZ2FjeS10cnVuaworMjQ0OTYgYWMxMzU3ZmQxYWVhMWY4YTEyNGNkODIyNjVlY2U3YWZlOTRiZDE2OSBsZWdhY3ktdHJ1bmsKKzI0NDk3IGMyYmZmYTY3MmI3NTliZjlhZjM3NTMzMzFmN2RlZTZlOTgxMmI5NmIgbGVnYWN5LXRydW5rCisyNDQ5OCBhZWJjZTQ4NWI1NmI5Y2I1MDU5YWE2OGFiYzFhNzE4OWUwZmVhMmQ3IGxlZ2FjeS10cnVuaworMjQ0OTkgMDE4OTE4NmY0ZWQ5MTgyMjkxZmU3NDA3N2Q3OGNkYjkxMTU5MGMxZCBsZWdhY3ktdHJ1bmsKKzI0NTAwIGVmNmY2OTJjNzZlMjJhOWJlZjFlNzgzZDNhOWE5MDRkMTk2OGJhYjYgbGVnYWN5LXRydW5rCisyNDUwMSAwOGYyMWE1Mzc0ZDlhOWZiOWM5YWIyNGViY2I5NGMzYWUyM2Q2MmQ1IGxlZ2FjeS10cnVuaworMjQ1MDIgYTYyM2Y5Y2Y5NTM1NDIzMWEyZGNiYmMyNWIwYzBkMjczYWM4NGQ5ZiBsZWdhY3ktdHJ1bmsKKzI0NTAzIDZhNzNkNThlMTc0NzIyZjI5ZjhlMTRhYzhiZTNkMDBmMmE5OTdlNjggbGVnYWN5LXRydW5rCisyNDUwNCAzM2M4ZDMzNWEyYzQzNzc2MmU4YTdjMWEwNzFiNGJlZWIzMzM3YTUwIGxlZ2FjeS10cnVuaworMjQ1MDUgYzE4YWQ1MmRlY2UzNWMzODFjZGM4ZGFjNDhjMDM5YmMxYTZlN2MzMCBsZWdhY3ktdHJ1bmsKKzI0NTA2IDQyNmMwZDI0ZGViZDhhNThlZTdiNjE2ZDA1MTdkM2Y3MmIyNmVhNWMgbGVnYWN5LXRydW5rCisyNDUwNyAxNTE5ZDZmYWFiMTU5NDA0NWVkYTU3ZTM3YzU3MDE5NWYzNGI0MjYwIGxlZ2FjeS10cnVuaworMjQ1MDggNWIzYjI5MjQ3NTczNWE5OGZkY2YxOGU3MGZmNjQwYmMwOWFmNTAzZCBsZWdhY3ktdHJ1bmsKKzI0NTA5IDkyMDkwMmY1YTg4NGMwOWY0NWE4ZDAxMmY0OWU1ZGZmYTE2MDQ4ZDEgbGVnYWN5LXRydW5rCisyNDUxMCBhZDdiNDQyNGFhYjZmM2IzM2I0YTM0ODc0YjdkNjQxNTRhN2I3MWE3IGxlZ2FjeS10cnVuaworMjQ1MTEgZjE3YTM3ZGU2Mjg1YWE1MWRkZWFhOTNhYzU4YjY4YzEwNDhkNzY0ZSBsZWdhY3ktdHJ1bmsKKzI0NTEyIDYwNDE1YmY1ZjhmMmE0NjYxZTA5ZjlmYTViYzU4NGUwNzlhY2U3YzIgbGVnYWN5LXRydW5rCisyNDUxMyA5NDc5MzEzOTI2OTRlZDM5YTMyYTlmYjM1ZjM3ZTJlMWQ5MGUyZTcwIGxlZ2FjeS10cnVuaworMjQ1MTQgZGI5YjU5NzY4MjllNDQ3YzNhMzZmM2ZhOTdhMmVkYzNlMzY1NmQ1NyBsZWdhY3ktdHJ1bmsKKzI0NTE1IGM4NGRmODQ4NjE2MzY2ZjdhZmI4NzY0MTA4OGViOGI3NjFjMjU3ZDcgbGVnYWN5LXRydW5rCisyNDUxNiBkOTVlYjdlYzQ1NTM1NDJiNThlYWEyYzE1MjVjYzRmN2NlOGU1ZmE4IGxlZ2FjeS10cnVuaworMjQ1MTcgZjc5ZTQ3MTlkYjk2NDVmNWMzODA4NTk2ZWU0OGEyY2ExOTk5Nzg2MCBsZWdhY3ktdHJ1bmsKKzI0NTE4IDg2NGNjNTkzYmRkYTI3N2RmOTc5OWY0MDE5MzJlNzgzZTcwZTZlZjIgbGVnYWN5LXRydW5rCisyNDUxOSA4MTkyOGM5ZDcwMTE3ZWVkNmQzYTJjNDIwMmEzZjdhMzMxZDRkYzRmIGxlZ2FjeS10cnVuaworMjQ1MjAgYmNmNjY2ZTg4MzEyMWQyYjdlMzdlNzE1M2RjMGMwZTE3NjYxM2Y3YSBsZWdhY3ktdHJ1bmsKKzI0NTIxIGVhZDFmYTI2OTUwMmExY2U2ZmI0ZmQzYjU4ZDE4ZDU3ZThmMGE4YTUgcmVsZWFzZTIxLW1haW50CisyNDUyMiBkODI2NWEwYzNjZjAyODhhNmQyMWU5ZWRiOWM1MDU1NWYzN2NkNTc5IHJlbGVhc2UyMS1tYWludAorMjQ1MjMgMmQyMTY1MGY0NmY4OWQyZWEwZmM1YmRhNjZiN2JhZDU3MWQ0NTE1ZCByZWxlYXNlMjEtbWFpbnQKKzI0NTI0IDE1MWI2OTY3YmQyMTBiMmMxMmNlNWIxZDdmOGQ5ZjI4MWQ2ODViMDEgcmVsZWFzZTIxLW1haW50CisyNDUyNSA2NzA5YWQ0ZmU3NWVjOGU1NThjNmVlYTlmMWJjZjk1MzQ0NzU4ZGRlIHJlbGVhc2UyMS1tYWludAorMjQ1MjYgM2IwOWVhNzIzZWNlNzIyZTkxYzgwMzkyOWRlMWQ2NTFmMDJmNzBlOSBsZWdhY3ktdHJ1bmsKKzI0NTI3IGQyNmU2NTk1MDc0MDJjMzc2ZDI4YzVlM2FjNzRkNTA0M2RmNTgxNTAgcmVsZWFzZTIxLW1haW50CisyNDUyOCAxOThhZWJlMTIzOTk4ZDk2NWQ3YWFhZmI1MTYyMThlZDE3ZTRmMjM0IGxlZ2FjeS10cnVuaworMjQ1MjkgYTM5YWY4MDBiOWEzZWQ5ZjQ3ZTUxNGY2MGQwYmRmOWMyYzgzOWM5OCByZWxlYXNlMjEtbWFpbnQKKzI0NTMwIDE0OGZmZDk1NzYxOGQzMmVhZTA5NGJkOTk4ZGQ0MzU2YWIwOWFiMjMgcmVsZWFzZTIxLW1haW50CisyNDUzMSA2NTZjNGNmNTE2NWZhODBkYzM1YTY3Njc4NGNiY2U3NDkwOGRmM2NiIGxlZ2FjeS10cnVuaworMjQ1MzIgOTIwNWNmYjc3MDk0NjY1MDA0MTgwODJkOWIwMWE3ZmJjZTQ1MWJhYiByZWxlYXNlMjEtbWFpbnQKKzI0NTMzIGQyMjkwZTk3ZGUxODdkM2RkOTY0ZDNiYWJhYTM1MzZjNjk4NDIxNDYgcmVsZWFzZTIxLW1haW50CisyNDUzNCAzNDMyN2NmNDUyOTk0YThmMDViMzg2YWQ5OGQyNDY0MjQ0OWY0NjRiIHJlbGVhc2UyMS1tYWludAorMjQ1MzUgMjJkODIxNjczZTUyNjdhMTMzNWQ4OGUyM2NhMjg4MjE1M2EwOTZmNiByZWxlYXNlMjEtbWFpbnQKKzI0NTM2IDAyZDAxNzAzOTc4ODVjNmRlNzY1NzhkNzU0MDAwYjhhMjFiMzQ4YWEgcmVsZWFzZTIxLW1haW50CisyNDUzNyA0YWYzMTg2ZTY2MzE1MTg4MTcwYjA3YjBiZjJiOTcxZWUyNDUzZThiIGxlZ2FjeS10cnVuaworMjQ1MzggNWFiMGRjN2YyZWIwNDYyZmZlMzQ1MWU3ODBmMTg5NjZjMDRjOTBlNiByZWxlYXNlMjEtbWFpbnQKKzI0NTM5IDk1YjQyZjEwNTVjMjRlNzBjMTk0YmZhYjBhYzY3MjUzNzM3OTA2MzYgcmVsZWFzZTIxLW1haW50CisyNDU0MCAwYmM4ODM4NDA3YmI1Nzk2ZTg5YWJhZmFkNmViMTM4NmJkZjBkYmY5IGxlZ2FjeS10cnVuaworMjQ1NDEgYWNjYmU1Njg0YWM2MTRkNWViMzNkOTljMzlmODBmMTFiMmEyMTdmZSByZWxlYXNlMjEtbWFpbnQKKzI0NTQyIDAwZWNmZTE5YThkMjlmZWE0NGVkZDI5Mzg2YzlhYTgzMDE3YWU5YTEgcmVsZWFzZTIxLW1haW50CisyNDU0MyAwNjBjMzc1ODc5NTFiMWE4NDFjNTFhNDJhYjlhYWE4MGQ2NGU2ODQwIHJlbGVhc2UyMS1tYWludAorMjQ1NDQgYTNkMDFhMjI1MzI5NzNkYjYxMzFjYmUxNTdmY2FhYWEwNmIwODQ1OSByZWxlYXNlMjEtbWFpbnQKKzI0NTQ1IDQ5MzAxOThmOTJkYmYzNjM0MWMwMjAyNzhkYWU2ZDJkZDk5NTAyNTkgbGVnYWN5LXRydW5rCisyNDU0NiA4MDNjY2JlM2VlN2NhYjVjMjE4MjhhMGNkYjU4Y2U0NzNlOGNhMWIzIGxlZ2FjeS10cnVuaworMjQ1NDcgOWRjODdlNjFiNWEyZTIyZWUyMjllMDJjYzk5ZjcxY2I5YmRlNmI3NSBsZWdhY3ktdHJ1bmsKKzI0NTQ4IGI3ODI0OTBkYTdmMDgyMTg0MjYxNDBlMGIyNWMwODE4ZWM3MzRjMGQgbGVnYWN5LXRydW5rCisyNDU0OSA4OWE1YzExMDZiODJmMTgwODcyMGZiNzk1OGNkZTUzOWQ5ZmRjMmI2IGxlZ2FjeS10cnVuaworMjQ1NTAgNDJkMDgxOTU0NmQ2MDlmYjgyYjliYzI2MzU4NTg0YzdiM2ZlZDlkNCBsZWdhY3ktdHJ1bmsKKzI0NTUxIDNlODQ2MGZiMmZiZTQ5ZjgwNzZmZTUzMThlNzA1NzQ1ZWUwYTU3N2MgbGVnYWN5LXRydW5rCisyNDU1MiA5ZDZmYmNiOTUwZjliMzRhNGRjMWRiYzFlNDU1ODcxMTYzYmVkNmFlIGxlZ2FjeS10cnVuaworMjQ1NTMgNTRkZGMzNzlkNGZjMjg5ODAyODljMDAwNDBiZmY5NDkwNTRiN2JkYSBsZWdhY3ktdHJ1bmsKKzI0NTU0IGFkODc2NzRkZTNhMWIzYzRlZmVlMjU2M2FkMjU3NDJlZWVmZDZkZWUgbGVnYWN5LXRydW5rCisyNDU1NSA1YzBiYTZlYmM2MmQwY2RiOTMyNTM2MzQ1MGI2MWMxYTBhMmIwMDA3IGxlZ2FjeS10cnVuaworMjQ1NTYgMjAzNDkwMmIwZjFhYzg0YWZiYjVlZTk3YzE5ZjgyZGFkYjFlYzdjNSBsZWdhY3ktdHJ1bmsKKzI0NTU3IDEyODlhMDU1OWU1YTQ0ZGQxZDBjN2UwN2E1NGJjNzVhNDE2NTRiOGYgbGVnYWN5LXRydW5rCisyNDU1OCBiYTZhN2E1YzMyZTg3MTczMWJmYzdkNTYzMGJhZWM2ZDkwMDgxODc2IGxlZ2FjeS10cnVuaworMjQ1NTkgY2I5MjFkNDgzZTAwOTQyZTQ0ZmMxMjYzYzE5OWJjNGM4ZDViYWUxNyBsZWdhY3ktdHJ1bmsKKzI0NTYwIGJhMTY4NTZiZmJhYmQ4ZDRkZWEwMTIwZjZkOTAwZTlkMDZlZDcyMmQgbGVnYWN5LXRydW5rCisyNDU2MSAwNjJjNmY0NzEwNmZiZTFhY2Y0YzgwOGZjMzE0MDJkYTRiNjJhZjAzIGxlZ2FjeS10cnVuaworMjQ1NjIgMjI0ZWRiYWY2MzAxOTE1NDQyNTFiYTI4NzUwNzFlNzhlMzNiMzI5NiBsZWdhY3ktdHJ1bmsKKzI0NTYzIGIyNmQ1OGI5ODEwY2FkN2U4MzE2YzIwNjE4NzM4ZjAzN2Y2OGRlNTEgbGVnYWN5LXRydW5rCisyNDU2NCA0NWUxMTc3NDI0ZTFjNzk5Njg3MmY1YmJlZTEwYjczZWU3NWQ3ZmVhIGxlZ2FjeS10cnVuaworMjQ1NjUgZTM4NmY2ZTI2YTQyZTM4MWY3ODRlOWUxOTE1ZjUwYmMzMGZhYmNhZCBsZWdhY3ktdHJ1bmsKKzI0NTY2IGQwMjRhNWM3MmNiNTYzYzRiNDM0NDY5YzQ4M2RjOThiYWY4MmRkODYgbGVnYWN5LXRydW5rCisyNDU2NyAxOTE4NmIxN2QyNWFhMzkwMGQ3YmFhMGE4ODNmMGUwOTM1NjA3MmZkIGxlZ2FjeS10cnVuaworMjQ1NjggMTQ1MDc2NzFjMDJjYzk5ODlkMjk5YWMxMzJkYTZhZmY4YjY0MjY4MiBsZWdhY3ktdHJ1bmsKKzI0NTY5IGZiZjY4YzU5ZDY2Y2NkMjYwNzFhNzRhODdhZDM3NTMwZDdhYWQ3MzkgbGVnYWN5LXRydW5rCisyNDU3MCAwOGRiZjZiM2MzMTY0MzE4ZWJiMjU3MGRiYTg3YWYxNDc1YTViMDY3IGxlZ2FjeS10cnVuaworMjQ1NzEgZTVkMjk1NTQyYzdmYjk2NjExNjljMTdhODgwMTVkYmJmOTAwNzExMSBsZWdhY3ktdHJ1bmsKKzI0NTcyIDEwMmQxOGVhMDJjZmFjMzlhMjEzOGVhYjcyOWVhMjU5MWM4OGIwM2QgbGVnYWN5LXRydW5rCisyNDU3MyBjNTA2YmY3YjI2YjhhMGYxZjk4ZjJjZTlhZjBjY2QzOTZiN2M4NjUyIGxlZ2FjeS10cnVuaworMjQ1NzQgNDI3MWRhNzBlZDllMTM2MjFmM2U1NzU1YmMwZWIyNDY0YjkyZDNlMyBsZWdhY3ktdHJ1bmsKKzI0NTc1IGU4ZmVhOTVhODJhNDAzNjA3ODBhZGIzMDBiYWI0ZjQ3Mjc0YWI1MzUgbGVnYWN5LXRydW5rCisyNDU3NiAyZjJhYmVlZWZkODc4YmVmMzM3YzcxNmJlODllMDIyNTlkNTMyNWFkIGxlZ2FjeS10cnVuaworMjQ1NzcgMjY1NjdmMjg2NzdlMTRhZmI0NWVkOWQ1ZWYzYTgzOGY2ODVhMDZiYyBsZWdhY3ktdHJ1bmsKKzI0NTc3IGFiZWM0ZTNiMDgxZjJmODAyYzBmMjdiYzFlYTcwZWQ3NTJhYmQ4NGMgcmVsZWFzZTIxLW1haW50CisyNDU3OCA0ZGFlODQyYWE3YzU4ZmZkZTRiNDdiZjk1MDI4M2Y3MDdkMzc5MzQ1IGxlZ2FjeS10cnVuaworMjQ1NzkgN2E3ZjU1N2I0ZDU0MThlYjM3MDJkYTUyZTk1ZGM5YzgzZGU5NmUyYiBsZWdhY3ktdHJ1bmsKKzI0NTgwIGQyOTZlNmJiMTdlNTRjZjA3Y2YwMWUxYWFmY2ZiYWZiNzQ5MGM5ZGUgbGVnYWN5LXRydW5rCisyNDU4MSAyYjVkYzZjNzdjM2RlNmRmYjVmMzE1Zjk1OWI5YTNjNzQ1N2U1YTA3IGxlZ2FjeS10cnVuaworMjQ1ODIgOTc3MDlmZDhmZGEwMjZiZWU4YWEzZDdlOGVhYjUzYjNiMzE4NmY5NyBsZWdhY3ktdHJ1bmsKKzI0NTgzIGFjM2ZkZDE0MTJkOWVhYTgzYzdjYzAxNTkxNDk1NmQ2NTA2NjMwNjkgbGVnYWN5LXRydW5rCisyNDU4NCBkNjRkZmJkYzVmOGM0NDgwNmMwMjQzYzI2MDJiMzJjMjAxMDYxYzRiIGxlZ2FjeS10cnVuaworMjQ1ODUgZWNiYmVjY2RlMDdkZDNiOTYwNWU0Y2IwODVhNzkyOTNlODYzYzBlZiBsZWdhY3ktdHJ1bmsKKzI0NTg2IGNmYmUzOGEwM2U4YzE5MDdjMGNiMmU2OTlhMzMzNjZmODQwMmE3OTYgbGVnYWN5LXRydW5rCisyNDU4NyBiMDEzMjNiZmNmNmNlOTMyOWY0OTJmZTJhODg0MDJiYjhlNjY5NmZjIGxlZ2FjeS10cnVuaworMjQ1ODggMjhmNGNlYTIwOWQ3OGVhODZhNTI3OWRmODY3ZjkwNTE5YzBlMjYwNSBsZWdhY3ktdHJ1bmsKKzI0NTg5IGY3MDJmZjM5MGU0ZGM3NzNkMmMxZjI1NmE1OGE1YTEyOGMzY2IyNWQgbGVnYWN5LXRydW5rCisyNDU5MCAwM2YzMTU1Y2I2ZWJlMTdmYzY3ZDZlNThhYWZjNzc4NWI4ZjY2NjZiIGxlZ2FjeS10cnVuaworMjQ1OTEgNjQzMjQ0ZjdmNDY3MDhkMWU3MTk0ZDEzODFjOTdiMjMyMGI3ZDJjOCBsZWdhY3ktdHJ1bmsKKzI0NTkyIDM2NTdiZWZhYmE0ZjBhODFkYTFiZTFlZWJiZWY0MjIyOTU1YzUwODQgbGVnYWN5LXRydW5rCisyNDU5MyA5OTFiMTcwY2Y0Mzg1ZDEwMjU3MWRhM2E5MjZlYjAyM2YwMzVhNDU0IGxlZ2FjeS10cnVuaworMjQ1OTQgZDM1YTU3NzFjNGM2OWY0ZTNiNzg2MzA3MjE3ODE4MDA1NGQ1YzgzZSBsZWdhY3ktdHJ1bmsKKzI0NTk1IGQ0OTA3Y2RjYzI5OTQ1NDM2NjYzNDVmOGMwYmQ4ZDBiOGM2ZTQ1MDIgbGVnYWN5LXRydW5rCisyNDU5NyA0M2I4YTk2MmEzMmFlZWNlZTIzZDJiNmI0ZjIwOTk0ZTlhZDcwOGFjIGxlZ2FjeS10cnVuaworMjQ1OTggNTBmMjhlZDgwNDRmZmMxYzQ0NWZjNzNjMGZkMWE4ZDE3NzlhMTk2NiBsZWdhY3ktdHJ1bmsKKzI0NTk5IDFlN2MwYjg0OTU4NGQ3ZmY3ZmZiZDczZmEyMGZmNjBhMTU4MjZjODQgbGVnYWN5LXRydW5rCisyNDYwMCBkNTFmMjE1OGZhNzkwNzBhNGFkMTUzNTgxODAwYTUwYmY0YWEzZjBkIGxlZ2FjeS10cnVuaworMjQ2MDEgZDBjMjA0MGZlZGU3ZDRmYWQ4NWYzYTkxMDBkOTc5MmE0NGUxZDY4MSBsZWdhY3ktdHJ1bmsKKzI0NjAyIDc3NmRkMmU3Njc4ZTA0M2Q2NWU4NGMxZDQwODkxY2FhMjNkYmFlMzggbGVnYWN5LXRydW5rCisyNDYwMyA5ODM1YmFiMjg3NmU0MmY4M2Q2YmVjNTRhMGI3ODJhNjA4MDhlMzE0IGxlZ2FjeS10cnVuaworMjQ2MDQgMjM3NWQyZGZiNWIzYTYyYjg2Y2RhOGYzYmJjMjk0NGJkYWU4ZmIzOSBsZWdhY3ktdHJ1bmsKKzI0NjA1IGU4ZGRhYjEzNzMyYWJhZDBiMjk0OWM4YjljYmM2M2FkZWQ3MGUzNjIgbGVnYWN5LXRydW5rCisyNDYwNiBiODEwYzMwYjRhYTFhN2FkOTBlMDdkYmE5NmQwNDc1YzRmN2Y1YmMxIGxlZ2FjeS10cnVuaworMjQ2MDcgMjRhNmMzZmQwZTU4YmMwYTE5NDM2ZDBhZTdjZjU1NDVjODAyZWE4NCBsZWdhY3ktdHJ1bmsKKzI0NjA4IDU5ODk0NDk2YjVjNzM2MmRkNGVjOWNmYTY1NjQzMWY0MTlkNWEzMTIgbGVnYWN5LXRydW5rCisyNDYwOSBiYjc4YTUyYjhmZmNlMjcwNWRlODNhOTUxMDYwMjZlNTJjMTZjYmY0IGxlZ2FjeS10cnVuaworMjQ2MTAgMTE5NDIyNDMwZThmY2JlMWYyMGM5MDg5OGE3NWYxNWU0YTE5OTM3YiBsZWdhY3ktdHJ1bmsKKzI0NjExIDlhMjQzZWUzNTRhMTM0Y2M1ZDNmYWI3NzM2YjU3ZDU3MzQ2MTY2NWMgbGVnYWN5LXRydW5rCisyNDYxMiA2MmVhMzE3ZGZjN2Y0YTBhNThlNWYwMjZlZjZkNWI2ZDU1ZjAyNTYxIHJlbGVhc2UyMS1tYWludAorMjQ2MTMgZjU1MzJjYzE1MTRiN2RiNjM1YjA2NjRlNzg2NjBlOTQ4MTgyN2Y1MiBsZWdhY3ktdHJ1bmsKKzI0NjE0IDEyYzA5NGEyMzI3MzQ2ZTZiOWIzYTQ5MTNhM2Y5YzhkNDBjZmJlY2QgbGVnYWN5LXRydW5rCisyNDYxNSBkZTc2NDY2M2MzMjVjMDQ2N2E0NDAyZjZhNmUxM2FhODgyYzNkOWYwIGxlZ2FjeS10cnVuaworMjQ2MTYgYjZmNTkyZWVjMjQxZDZlY2NjYjI2ZDljOThiM2I3MjJmMzRjM2RlNSByZWxlYXNlMjEtbWFpbnQKKzI0NjE3IGQ5ODBlYmNjNjk2YTI4ODI5NWE4NDQ3Y2NjY2M1ZDM2OGJkYTYwZGYgbGVnYWN5LXRydW5rCisyNDYxOCBkODZkNmUwZDE1OGM1YzgyNDA3NDEyY2MxMjNlMDdjNzRjMzg2OGY1IGxlZ2FjeS10cnVuaworMjQ2MTkgMGQyZWVmNjM2ZDEyOWM1NzVkOTJkOTg1ODVhYTY3NjYyZTg5MGJkYSBsZWdhY3ktdHJ1bmsKKzI0NjIwIDg5OGM4MjVlMDhhY2NjZDY0NTA1ZjNkMmU2Mjc5ZmFlNTVkNzg3YjUgbGVnYWN5LXRydW5rCisyNDYyMSBjYjYyMDNmZjI5ZTVhMWUzYjU4ODAwNzA2ZmM1MjY0NGE1NGZjYzQ5IGxlZ2FjeS10cnVuaworMjQ2MjIgMjYwNzQzM2IxM2U5ZTgxZWNhMjgyZDMyYTM2MDJhNDI2ODM4OTlhMSBsZWdhY3ktdHJ1bmsKKzI0NjIzIDkwODA0YTM0ODkyM2RjN2YyNzY4YmQwMzc5MzYwNjI1MWM3ZTRlZmEgbGVnYWN5LXRydW5rCisyNDYyNCBiZmE1ZjdiNGU3ODg1OThiZWZmMWYyMGZjODU3ZWMwM2Q1YmJmZDBmIGxlZ2FjeS10cnVuaworMjQ2MjUgMDEwMjY5MjQxN2FmMGZlM2UxMmUxYjIxN2VjMWY5NTVhMzBjZTZhOCBsZWdhY3ktdHJ1bmsKKzI0NjI2IDkxZGQyMjM4MjljNmUwMzU2MDExYmUyYzZjMWY0YmI0NzliMTY1YTggbGVnYWN5LXRydW5rCisyNDYyOCA0ZDUwOThjZmE3ODFiZmUzYTdiZjMzZWE2NjRiYjJhMTU5YzJmMWFlIGxlZ2FjeS10cnVuaworMjQ2MjkgOWIyZDFmOGY0YmUzNDk4M2I4NDA5ZjI5MTAzZjA5MGU1OGFjNWVmZCBsZWdhY3ktdHJ1bmsKKzI0NjMwIDBjMmVhMjMzYWQyNDkzYjUwNDliMGMyZDgyZWViYzEwZmU4YTU1YjQgbGVnYWN5LXRydW5rCisyNDYzMSBiNTgzY2FmMWJlODgyYjMyOTgwOWIxOTAzZjk5ZTYwMGVlY2NiODIwIGxlZ2FjeS10cnVuaworMjQ2MzIgYmI1NjZmNTI1ZjEyY2Y4OGVkY2JhMDA3Yjk4N2NmODMyODU1MzUyMyBsZWdhY3ktdHJ1bmsKKzI0NjMzIDRiY2ZiOWRjNTdlMDNkY2IzNTA4ODJlNzYwNzQ2ZDczMTBhZmE2ODEgbGVnYWN5LXRydW5rCisyNDYzNCA2MGRmMmJmODU0YWNlNDE3YjcxMDA4YTU0NjAxOGFkMTJjMjM5NWE3IGxlZ2FjeS10cnVuaworMjQ2MzUgM2EyY2Y1ZTQ1NjU2YTk4YTc1NzI5NDM1YTM2M2Q2YzljMGFmMGE5YiBsZWdhY3ktdHJ1bmsKKzI0NjM2IDE4NTJjYWJhNzAxNGI0MTU0OTdiMzk4YjJmYjIwOTVmMWQ3ZmQ0NjUgbGVnYWN5LXRydW5rCisyNDYzNyA2NDQ4ODUxMThmZTc3OTg3NmM3Mzk5YmFhYjM0YmY1NmRkZTczYTcwIGxlZ2FjeS10cnVuaworMjQ2MzggNzUyZmE0ODVjNGFiYTVmNDcyYTExMjVhZjc2OTFhZWQ5MmY1OTk1MCBsZWdhY3ktdHJ1bmsKKzI0NjM5IDhhMjZiYjM2OWY1Mzc3ZDY4YTM5NzEwZmNhNDU0ZWY3NmQ5YTJjY2IgbGVnYWN5LXRydW5rCisyNDY0MCBjOWFkYWNlM2M4MjNlZmRmNTdkNGFmZDk5YTNlNjAyMjQxNWY3MGQwIGxlZ2FjeS10cnVuaworMjQ2NDEgMzRhMWE1MGU2YWI2ZjgxOTFhMTZjNmUyZmYzYmY2NGJkOGRlZWQwMyBsZWdhY3ktdHJ1bmsKKzI0NjQyIDc4NGM4YmMwYjMwMzRhNTQ4NWEzZmQ3OWE4MmEzNmZlMDI2ODI1ZmEgbGVnYWN5LXRydW5rCisyNDY0MyA4NDhmNjk4ODgyOWYxYTJlNTQwZDRmZmY3N2Y4YTc1MjA2NWMzMWVjIGxlZ2FjeS10cnVuaworMjQ2NDQgNDQyMGE0YmQ5NmE0NGMxYTMwYzVhMDljYjc2NDI2ZGVlYzc5MWM2MSBsZWdhY3ktdHJ1bmsKKzI0NjQ1IDJhN2Q1ZmZlY2UxYzliODdiZjQ0M2I4YTVjODM2MTc5Mzk4ZDU2YWMgbGVnYWN5LXRydW5rCisyNDY0NiBmYmJkOGE0Y2E3YTZmY2M1Yjk4OThhOWI3ZWM2ZDA0N2I4NDJjYmY1IGxlZ2FjeS10cnVuaworMjQ2NDcgNmQ4NzRhOTFiNThiODFiODgzYTBjOWUzZmEzYzZkZjQ1MWM4MmI1NiBsZWdhY3ktdHJ1bmsKKzI0NjQ4IGNmMmZiMjBhNmNlN2ViM2IwMmVkMjllYmFhNjNiYWQ2MTAxNzE0ZTMgbGVnYWN5LXRydW5rCisyNDY0OSAxOGY2MDgxMGI5NGEzZjAxMGZlNGQ4MTQ1ZTNkZTM1N2ZmN2JlZjdkIGxlZ2FjeS10cnVuaworMjQ2NTAgN2M2ZGY5NjRiMDRiYjQxNGFiNDViOWJhNTYyYjIwYjVjNWMxYjFlMCBsZWdhY3ktdHJ1bmsKKzI0NjUxIDkzZjU0MDU4ZWY0OGY1ZGNiZmQ5Y2EwNTIyYzU2MzkyMzQyYzQ0NTAgbGVnYWN5LXRydW5rCisyNDY1MiA2ODA0MGRiMDg0YjZhYTU3YWNkNWU2ZjIyNjdlNWY5MDI5MDY3NTMxIGxlZ2FjeS10cnVuaworMjQ2NTMgNTI1Yzc3MzY4Y2QwNTdkZjM1OTc2Y2U3YmE4ODQ4N2UyZmEzZTMwZCBsZWdhY3ktdHJ1bmsKKzI0NjU0IDNkNjhlMzExMGUxZmU1OGVlNmU2ZTUzMjFjYmU0N2NkMzQxMzc1NzcgbGVnYWN5LXRydW5rCisyNDY1NSAwYjFmYWYxMTZmNjNlYThjNTZkMTdmMjQ3OTUwMTJhYTlkNDE3MGFmIGxlZ2FjeS10cnVuaworMjQ2NTYgYTM5MmUxZmFlNjFkZDIyZmU5MTIyODE0NWVlZTNjZTA5OWQyMjIwYSBsZWdhY3ktdHJ1bmsKKzI0NjU3IDdhNThjZDMzN2NmNDQwYTFjMTEwZDEyYzllMTI1MDUzNWQ4MjNmODkgbGVnYWN5LXRydW5rCisyNDY1OCBmN2VhZWVhYzljNjVlN2JlNGI4MWM4NzM2ZDg1YjJjM2U2ZTlhYjI0IGxlZ2FjeS10cnVuaworMjQ2NjAgZDFmOTM4ZWVlNzAwYTI2MjkxNzc4YWQ5MDg1MTlmNzMwZTc4MGY3OCBsZWdhY3ktdHJ1bmsKKzI0NjYxIDhhOGY1N2RjZjlmZTczNjM5N2Y0OTliMzI1MzM4N2E2MzVkYTQ0NjQgbGVnYWN5LXRydW5rCisyNDY2MiBmNTljNmI1ZGQxMjIyYjJmY2IyMmQ1NGZhZmU2ZTcyMjhkNzQ5ZWQ1IGxlZ2FjeS10cnVuaworMjQ2NjMgMTIzMTBkNjQzZDhkNzI5NzY1ZDExMzJjNDE5NmUzMmJiMDkyY2NiYyBsZWdhY3ktdHJ1bmsKKzI0NjY0IDkzOGI1YmY3NGZiOTRmNWJmODU1Zjc4MzJkMGEyMzNkNmE0ODYxOTYgbGVnYWN5LXRydW5rCisyNDY2NSBhNTE0NmY4NDMwMTAwNjI3NTBiMzQxZTY3Yjk3MzMxZjc3NTQ5Yjc5IGxlZ2FjeS10cnVuaworMjQ2NjYgYmU5OTBlNzAzZDBmMTQ3MmNmZGM3NDI0ZjkxMThlZjY0NmIyNmMwMiBsZWdhY3ktdHJ1bmsKKzI0NjY3IGJlMzI4M2VkOGY5NzU4ODQzOTMwNGM4NTk0MDBlMjc2NzE2ZGFiOGUgbGVnYWN5LXRydW5rCisyNDY2OCAyNTdjOTM4OTAwYTZlNWUzZDRlNzgwMWZlOGE4ZjlkMDExOWRkOThlIGxlZ2FjeS10cnVuaworMjQ2NjkgZmJkZGI2NGQyMWMyY2IzZDk4ZWNiZmIwYzk1MTUyMTY2ZmI4Mzg3NSBsZWdhY3ktdHJ1bmsKKzI0NjcwIDAwM2RjNTczYjI5NTBjZWI0ZTc4MzE1MjYyNjFkNDU4ZTVhNTZlN2EgbGVnYWN5LXRydW5rCisyNDY3MSBjNjcwNDZlZjUzODU2N2JjZDRhYzk1NzI5YzI3MGU1MGI1MzU0ODJlIGxlZ2FjeS10cnVuaworMjQ2NzIgZGUzYzg4YjVmODg5NjJiZDdmZTFhM2Y2NDU0YTkwOTZhMGMxYTY3MyBsZWdhY3ktdHJ1bmsKKzI0NjczIDJlYjI1ZWYzNDM4NmMzOTc1ZGQyZGNmMmViM2Q3MGE3YWUzOThkMmMgbGVnYWN5LXRydW5rCisyNDY3NCAyYzIwOGRiZjBjYjAzODc1NzA3YmQxMDdjZDcxZTVjYTNiZjU4NzU5IGxlZ2FjeS10cnVuaworMjQ2NzUgMjkwNzJlOGU4ZDk4MmIxYWZiYTQyNjc5MWFiM2U3MTk5N2VjY2NhZiBsZWdhY3ktdHJ1bmsKKzI0Njc2IGU4YjA5OGZlM2RmODc4ZjhjNDFiZGRhMzgzZTAzY2VhZTg4NzcxZTUgbGVnYWN5LXRydW5rCisyNDY3NyAzMDEyZjYyNmRmN2NiMzVlMTMwY2VkYTA5YjYwMmY3M2M4MDRiMzJhIGxlZ2FjeS10cnVuaworMjQ2NzggNzFlNWVlY2Q1ODllNTVjMzM1NmVjYmNjZjBhZDJjODAyZjdmOGY1ZSBsZWdhY3ktdHJ1bmsKKzI0Njc5IDA0MDIzMGMxNTg5MDQ3YTdlMmNjMmY1ZWE5Mzg3ZmJiNTU5YTdmMTAgbGVnYWN5LXRydW5rCisyNDY4MCA1YWI5YTY1ZTIzNDY2MTQ2MTUzNWIxYTQ0NzFmYzZmMDdhYzZmZWJjIGxlZ2FjeS10cnVuaworMjQ2ODEgZjU3NzY3ZDc2ZGU2ZGI3ZjRmNGRmNTBhNDM5YTM3MzQ1ZGI3NGMzMSBsZWdhY3ktdHJ1bmsKKzI0NjgyIDhhODlmZjFlMDY2MmRiNGRhMDRlNTllNmI3ZWE4ZTNmYzg2ZmJmYTEgbGVnYWN5LXRydW5rCisyNDY4MyBkODdjYTkzMmU3MGZjZDBiYTUwMGFhODcwOGVjY2E1MTM2NDc5NDVhIGxlZ2FjeS10cnVuaworMjQ2ODQgYWY1MTYwNGQwMGRiMjcxNDQ5Yjc3ZjEzYjY4MTZhNTA2N2I3ZmJjMiBsZWdhY3ktdHJ1bmsKKzI0Njg1IDhhMDM1MDg3ZWI3Mjk3NzZiMjdkZWQyZGFlYmYxOTRmZTcwNTFlMDYgbGVnYWN5LXRydW5rCisyNDY4NiA3MzQ2NmE3NmYyNWUyZTcxNzI1MjkwNDg3YWRjN2VhMmZlMTQ0MzFlIGxlZ2FjeS10cnVuaworMjQ2ODcgYzI5NjZhN2JkMTEzNTE0OTgzOWQ0M2UwYjFmZGNlMGQ2OTgxMmZhMiBsZWdhY3ktdHJ1bmsKKzI0Njg4IGM1OTM5ZDBjNzQ3YTQ5MmMyNTJlZmM0NzI4YzNjZWJjMzYxYWUxNjkgbGVnYWN5LXRydW5rCisyNDY4OSA0OTc3MmQzMTg0NDBiOGI0OTU2YmFhZDMwNjRjYTlmNTA2NjAwNTdiIGxlZ2FjeS10cnVuaworMjQ2OTAgN2UwZDJkNTliYmNlOWI3ZWM0ODc1OTFiZDc2NjYyNWRlOWNhNjg5MCBsZWdhY3ktdHJ1bmsKKzI0NjkxIDUwZDAzNjZlOGYwNTgyMmY5Y2ViODEzNGNkMTM0ODkxMWQwNzBmZTcgbGVnYWN5LXRydW5rCisyNDY5MiA1ZjU3MTM0NGM4OWNjZjAzMjY3MGIwZGQ3MTg2MmViNzliMzJiM2VkIGxlZ2FjeS10cnVuaworMjQ2OTMgMTE2YWYyZjAxNDQyYTkwMGIwODhkZTdlNjE3OTBhMjU0YmQwZGE1YSBsZWdhY3ktdHJ1bmsKKzI0Njk0IDc0M2Y2N2JlZmI1N2U5NTMyNjhjNzI3ZTVmY2ExM2MyYTU4M2JiOTkgbGVnYWN5LXRydW5rCisyNDY5NSA0NGViZWFiMjY5YzVhNzdlZmUyMDgwMDJmYzhjOTc4Y2ZlZTdiNWQyIGxlZ2FjeS10cnVuaworMjQ2OTYgOTEzNDU4ZWFlZjkwMGI5YzE2OWZhNGI3NTZmODRjN2U4YWNkMmU1MSBsZWdhY3ktdHJ1bmsKKzI0Njk3IGQxNmIzMjcxODFhOGQ2YjE2MTNkMjI2NzUxYmU1NmVmZDJjYzMzMGEgbGVnYWN5LXRydW5rCisyNDY5OCBhYmNkMmY1MmYzMTZkYTA3ZjMyNGQ1YTRjMTkxNGE0MTMxMDk4ZmVmIGxlZ2FjeS10cnVuaworMjQ2OTkgYzQ0YzkxMTYwNmE0NGNmNzEzYTAyMGZlMDRhODBhM2E2ZjFkYTg4ZiBsZWdhY3ktdHJ1bmsKKzI0NzAwIGViNzhmMDNkY2RlYzY4MzAyODNmM2ExZTcwOWU0NjBhYmUwZTMyYTIgbGVnYWN5LXRydW5rCisyNDcwMSA4MWE1NzhlYjczNDYzOTVjZmQ3NzJlZmI2ZWE5MDdmMTZlZGRmOTRmIGxlZ2FjeS10cnVuaworMjQ3MDIgNDJjZDUwNTk0ZDBkOTc4MmQxYzdiNjAzYWJiMjEwZjczMmFkODUxMyBsZWdhY3ktdHJ1bmsKKzI0NzAzIGRmYWNjNzMzY2JmNGI1Yzk0NTZjMjdkMmZlNWQzZjEzMDRjODU1NDcgbGVnYWN5LXRydW5rCisyNDcwNCA3NTAzN2Q4NmIxMTM2MzE4MTcwZjhlYzdlOWVkMDJjMjlmYzMyNDUxIGxlZ2FjeS10cnVuaworMjQ3MDUgOTZiYmIzZDBjNmEwNDRmMDE2MjVlMWFiZTdlYzQ1N2Y0NWUxZWU2ZCBsZWdhY3ktdHJ1bmsKKzI0NzA2IDJjMzJmYzVmMjNjMDM3MDQzZjJlNWUxYmViNzMxZGIzMzdiNmU3MWYgbGVnYWN5LXRydW5rCisyNDcwNyA2NTc4YzdkYzMyOGIxZTcyNzY5Zjk5YmU0ZDYyNDVkOTJhOWMxNjY5IGxlZ2FjeS10cnVuaworMjQ3MDggM2YzZWYwNzQzNTM3YjI3YTQwODcwZWJlN2Q5ZmYzODBhMDIyMWEwZiBsZWdhY3ktdHJ1bmsKKzI0NzA5IDgyYWY1NGI0MzgxNzc1MWNlM2U0ZjQxMDRiZDQ0NTAyNzA1ZDA1YzUgbGVnYWN5LXRydW5rCisyNDcxMCA1NjAyMjJlOWQ0NzEwYjBhNGY2Mjc1ZjJiZDc1M2FhMjY1ZDRmZjMwIGxlZ2FjeS10cnVuaworMjQ3MTEgZWMzMmU1OWRmNDAwYmI3NjdkNDA3MmRlNmMyZWZiMmY5NDAwMTMwNCBsZWdhY3ktdHJ1bmsKKzI0NzEyIDVjOWJhMjQxODM5MDFiZjU5MjQzNzhjOTFlOTJlZjIyNzg4ODgyZjMgbGVnYWN5LXRydW5rCisyNDcxNCBkZTEyNTc5MmJmYWFkZGQwODJhNzkwNmI5MjU2YzAyNGZjYWI1YWQzIGxlZ2FjeS10cnVuaworMjQ3MTUgMzNkNTllMThiNjhkNDQ0YTM1ZDU3N2M2ZmZhOTA1NDFiZjhkZmI4YiBsZWdhY3ktdHJ1bmsKKzI0NzE2IGNiMDhiYzY5ODY4NTllNzRkNjVhNjlhYzA0Nzk0NzViZDA4M2FjMjEgbGVnYWN5LXRydW5rCisyNDcxNyA2ZGE2MDkxYTMxZWVmMjA5YTYxMTQ3YzE5YmQzZTg4YmYxNDE0ZTVkIGxlZ2FjeS10cnVuaworMjQ3MTggMDViYzU5MDUyMjQ5MzRlZmE0MzY0MDgwMzMyYjMzYzYxMWJjNDAwYyByMjJyYzEtYnJhbmNoCisyNDcxOSAyMmM5ODhjYzE1MmQxMjJiMjQ3MTdlNzZkYzY0MDgzN2U5NTJkOTJhIHIyMnJjMS1icmFuY2gKKzI0NzIwIDNkOTdhMDU0ZjlkNGFmZTVhNmE3ODZkM2I2ZTgxN2NkZjBhMTM3YTYgbGVnYWN5LXRydW5rCisyNDcyMSA2OThiNmVlYjlhODZkODkzODFiYjMzNTlhODI0OGMxYjM5YTNlNzQ5IHIyMnJjMS1icmFuY2gKKzI0NzIyIGViZjhhMDM2MTUxZDQ2NWMyNTk2ZWE4MmNmMGEyMTFhOTBmM2RlN2EgcjIycmMxLWJyYW5jaAorMjQ3MjMgMjA0ZDFkNWIwOGQ2OGE4Yzc4ZjU3MDgzODVkYmJhMjZlOTUxYzZlOCByMjJyYzEtYnJhbmNoCisyNDcyNCBmYmQ1N2VlNWI3N2Q3ODI1MDA5MjkxY2U3NWExZDVkODZhMjIwOTM2IGxlZ2FjeS10cnVuaworMjQ3MjUgM2NlODcxYTA0NTViNTJkNWRiNDQyMWFiOTBmZDU2YTliZmUxMzFjNiByMjJyYzEtYnJhbmNoCisyNDcyNiAzNjNiMmY3NTI5MzUxZWRjYWJiMDVlOWJiZDM5ZjEyNjM1MTc4MjFhIHIyMnJjMS1icmFuY2gKKzI0NzI3IDZlYTcxOTNiZGMyZWFmZDE5NDNlNWFkODM1N2E5MjI4MDZiNmZlZTIgcjIycmMxLWJyYW5jaAorMjQ3MjggMDY0MzExMTQ5Y2I0ZDNkZmM0OGJlZTJmYzRlYzkxN2MwN2VjNmFjMSBsZWdhY3ktdHJ1bmsKKzI0NzI5IDJhZmU0MmYyNDU1OTA4ZjBkMDBlNDNkYmZhYWYyY2U4MjNmMDRkMDMgbGVnYWN5LXRydW5rCisyNDczMCA5YzgwYjVhZjgxMjFhNzRiZGEyNzA4ZWZhM2FmOGMxZjYwZWI1MTc0IGxlZ2FjeS10cnVuaworMjQ3MzEgZmUxOGViMDU1MTA3NDA4MjY5YjUyOTZiZGNlMDAyMDM1ZDdiZDc4ZCByMjJyYzEtYnJhbmNoCisyNDczMiBjZWRiNTAzOTE1NWE2NTUzMzE0YTJmNzQzZmY2Mzk3YzQ4NzY2NDNhIGxlZ2FjeS10cnVuaworMjQ3MzMgMzFhMjQ5YTM0MGY4MTdhZDI5MWI3YmJiN2I3NWM3YzVlOGJjYWQxZiBsZWdhY3ktdHJ1bmsKKzI0NzM0IDg1MDg2ZjNlNzBmMzQ3ODg5M2Y0YzZjZWRkNzJhOTRiZTgyMDJlMWMgcjIycmMxLWJyYW5jaAorMjQ3MzUgZmRjMGNmNTZiYTljZmQ1ZjAyNGVlNDJlN2E5MGQ1YjE2MGRmZmRiYyBsZWdhY3ktdHJ1bmsKKzI0NzM2IDI3NjY4ZGFiNzdmODhhY2YyZWVhMDVmN2YwZDU4ZDYxOWMxY2JkMTMgbGVnYWN5LXRydW5rCisyNDczNyAwNDA3Mjk0MDIxYTBhNmEwMThhMTY4MjM0NTFmZmZkZDQ1ZDkyNWQwIGxlZ2FjeS10cnVuaworMjQ3MzggMWQ4OWRhODI1Zjk1Nzg4NmViZGIyY2ExMzE4ZmY1MjYxM2FiZDVjMyByMjJyYzEtYnJhbmNoCisyNDczOSAwYTk0OGNlNDdlN2EwNmEzNTI2NzU3ZjdiM2ZhZmU5MzUzZWMxZGRjIHIyMnJjMS1icmFuY2gKKzI0NzQwIGU2M2Y0NjY4Yzk1ZDA4NzA5M2ViNjY0YTdlMjQxZjU1OTIxNjhmNzQgcjIycmMxLWJyYW5jaAorMjQ3NDEgZmYxYjU3MWFjYTcxMGY0MDM5MTk5OGQ2OWM1YjA0OWUwYTNkY2MzMSByMjJyYzEtYnJhbmNoCisyNDc0MiA4ZmIwYzI0ZjRkNDUwZDk0MGI0ZTVjZjYzMzNjNjFjYTYzYzVjODJhIHIyMnJjMS1icmFuY2gKKzI0NzQzIGIxMTc3NGNjZDEwMWY3MzBlOTI3MTMwY2VmMTBjODE4NjFiMDM4YzIgcjIycmMxLWJyYW5jaAorMjQ3NDMgN2Y0Njc4ZWVmYWZiMTQzOTM1YzM5YzAzNjRlMGI1M2IzM2QyODgyMCByMjJyYzEtYnJhbmNoCisyNDc0NSA0MjE2ZWYxOTYyMGJiZGVkZTRjYjNiMWYzMDVmNTk2YThlMzdlZTYzIGxlZ2FjeS10cnVuaworMjQ3NDYgOGIyYmQwNzgwOTI1ZjlkNWYxYzZiNzc3MGVjYTg4MmQzMTI0NDQ2NyBsZWdhY3ktdHJ1bmsKKzI0NzQ3IGY1MzZmODUyOTViODYzN2NiZjE1YTc1ZTNhNTcyNzFmZjIyMmI0NmQgbGVnYWN5LXRydW5rCisyNDc0OCAzZmNiMjI0OGJiZThkOTA3ZThlNmNjZTE4ODVjNmIxMTgyYmY4ZTIyIGxlZ2FjeS10cnVuaworMjQ3NDkgNmIzMGMzZjQzNzhkNDMwNGNlMWU3ZjY4NjQyNjc1MWFkYzVlYTNlNCBsZWdhY3ktdHJ1bmsKKzI0NzUwIGMzOTIwYzQzNTMzMzE4ODRmMmYyMjhkYWZlNTJjYWZmN2JlOTY3ZTQgbGVnYWN5LXRydW5rCisyNDc1MSA1NzFkNWI3Yjc0NmM4MmFkODExOGQ0MmMzYjZhMmFmZWNlYWUwNmVkIGxlZ2FjeS10cnVuaworMjQ3NTIgODEzNDllNTE2NTliNTFjNWZjZGUyYWVhMmNkMWJhNDk5NmU3MGNmZSBsZWdhY3ktdHJ1bmsKKzI0NzUzIDRjYjIyM2VmODY5YmEwNTM3YzdjOTFiY2I3MDM4ZGE3NTM4NTg2NjAgbGVnYWN5LXRydW5rCisyNDc1NCBhYTQ3NTNmOTQ1NzIyMTQxNjIxNjA5Yjk5N2QxZjBiYTgzN2IyYWMyIGxlZ2FjeS10cnVuaworMjQ3NTUgNTU5MjEyNTVlYzkzZDIzNDM4NGFmMWE2NzZlNDc4MTQxMDM1NjRlMCBsZWdhY3ktdHJ1bmsKKzI0NzU2IDI3NGFhOTFiNDE3YzEzZjUwOTkwMjJmMjBmZDk2MzI3YTMzYjdkODMgbGVnYWN5LXRydW5rCisyNDc1NyBlMGUyYjYxNjFjN2ZkNmJkZWFlN2FhOGMxNDI0NmNjNTUwMjYzNTAxIGxlZ2FjeS10cnVuaworMjQ3NTggYTk2NTZjZTAxNWIwZDhmMTI5ZDc5YTg3NzBjYTQwNDc1ZmEyZTc5YiBsZWdhY3ktdHJ1bmsKKzI0NzU5IDA2M2Y4YTMxYjZiOGI3MjllMmM4Zjg3ZTE5MzQ5ZjYyMjdhYjY0ZWMgbGVnYWN5LXRydW5rCisyNDc2MCBhNjIwZWY4NGIwZmIyNjIzMTg1MTgyODQzZGZjZmNmNTM1MGI3YzcxIGxlZ2FjeS10cnVuaworMjQ3NjEgM2ZjYzJlMjk5MmQ0ZDVlNTdiNDc3Yjk0NTVlMDA4ZjE3ZjE0YjhkOCBsZWdhY3ktdHJ1bmsKKzI0NzYyIGIyZDMzOTEzNjRiYmI3MzE2Y2YwMzA0ODI4OTZiYmQ3OTA3MzQyMTkgbGVnYWN5LXRydW5rCisyNDc2MyBkYmQ2YTc2MTIxNTk2YmUwM2IzY2NhYTczZGNjNGZiZjRjMjk0MTQzIHIyMnJjMS1icmFuY2gKKzI0NzY0IGEwMjllMzQ4MzA0YzhlN2NhNTkxMzhmMDk0NjVlYmYyYThiOTMyMTEgbGVnYWN5LXRydW5rCisyNDc2NSBmZDlkN2FlM2Y5NGE3MDI1ZGU2NWQ1MjE4ZjM0YjM4OGRkNzY1MTJjIGxlZ2FjeS10cnVuaworMjQ3NjYgM2QyY2M4NTc3MTI3ZTU2M2U4ZmIyY2NiNGEwNGEyYTUwYjU5OGYyNSBsZWdhY3ktdHJ1bmsKKzI0NzY3IDE0NTBlZTZiOGI5ZWNkN2RhOTdhZDYwMjY2MjQzOTBkYmUyZTAzN2QgbGVnYWN5LXRydW5rCisyNDc2OCBjNjVmYWM3YzI4NDMzZTZlODYxNGY1Y2Y4NmU4OTM0MmY1OTNkZjhiIHJlbGVhc2UyMS1tYWludAorMjQ3NjkgOTdkODU3ODgxYzgyYWYzZDJkZTk3Yjg3ZWVkYjY0ZWNiMjA5YmM1MSByZWxlYXNlMjEtbWFpbnQKKzI0NzcwIGY1NDY2MjNlZjBjNjU2NWRjZmI0ZTkxNGFlMzhjOWRkN2VmYzU0MzAgbGVnYWN5LXRydW5rCisyNDc3MSA1YTU5MGYxOTZlYzU4M2E3MTgwYWU3Y2E1NThkZDJkNmIxZDliNDlhIGxlZ2FjeS10cnVuaworMjQ3NzIgOWE2MzRkNjA1NDJhZTcxNjQ0NjI3MzBjNTU0NjdlYzAzOTY1MWIzNiBsZWdhY3ktdHJ1bmsKKzI0NzczIGQ3YTllYmE3NGZlMjYxMWNmYTBlYjBmMTA3MjFlMTBkYjNjOTM1MDUgbGVnYWN5LXRydW5rCisyNDc3NCAzMGVmZTQ2ZjhlM2NhYTVhYjFmZTQ0MGExOGIzMTczOWZiN2VhNDY0IGxlZ2FjeS10cnVuaworMjQ3NzUgMDVhZDdhNjlkOTMzMTFjN2RmMWE5ZDNhYzViMzU0OTA4NmU1MjUyZiBsZWdhY3ktdHJ1bmsKKzI0Nzc2IGQ3ZDI1ZWMwMmQ0MTI5YmVjZTNlZjBlYzZjZWIwMmI0YjcyODQzNjcgbGVnYWN5LXRydW5rCisyNDc3NyA0ZjYyMWJhYzc1MjY1ZGEyN2VkNDJiMzNhOGYyMTFjOTRlODEwMWRkIGxlZ2FjeS10cnVuaworMjQ3NzggNTE5MzI5MGFlZjBhNWI0YzFlMzM4NjgyZTc1NDE4ODBhZjNmZGRiMiBsZWdhY3ktdHJ1bmsKKzI0Nzc5IDQwYzU2ZmVmYTE3NzJiNjI5NDA2OWFhMjUzYWQ1MzFiNTE1MWM2NjkgbGVnYWN5LXRydW5rCisyNDc4MCA3N2M3NDc2ZjQxYmRlNzY3NDEyODNhMDU5MDdjN2Q5YzIyZjJiNjk4IGxlZ2FjeS10cnVuaworMjQ3ODEgN2U3NDU1ODkwZmQ2ZWIxYTU5YzZmYjU1NDQxNmIyZWEwMzM0MTBhZiBsZWdhY3ktdHJ1bmsKKzI0NzgyIDk3ZjA5OTY3MWJiY2RkZThmMDJiOGRlMDNjNmJiMzE1M2M4M2Y2MTMgbGVnYWN5LXRydW5rCisyNDc4MyAzYWJmMDAyMTVjMWNjZTA2MzAzYjUyMDJkN2UyOWYxNTBlNWQ1ZmZkIGxlZ2FjeS10cnVuaworMjQ3ODQgZmEwYmRlM2M4NmIyNzhiOTVkMGRlZGFkYmQ3ZjRkZDBhZDljOTJkZSBsZWdhY3ktdHJ1bmsKKzI0Nzg1IGJlNWNhMGIyNWJmZGM3YmRiMjYzMTgzMGE1ZDJlMWFhZDA4MGYzOTUgbGVnYWN5LXRydW5rCisyNDc4NiBmYjZiM2ZjNGUwYzFhYWIxMzQ2ODBjOWViZjBmODc0NjczNzBhMmFmIGxlZ2FjeS10cnVuaworMjQ3ODcgYmQxMmI1OTczZGFhOTk2NTI0ZTE5NWE2NDZmNzY3Yjk2OWY4NTJmNCBsZWdhY3ktdHJ1bmsKKzI0Nzg4IDdhZjQ1YWZmZDM1MzJhMGIwOGNmN2JhODRjNmI3NWI1ZDY4YjBkN2QgbGVnYWN5LXRydW5rCisyNDc4OSA5ODQ2NDM5NGNjZTMzNjgzYmFlZTE2ZmZiOGIyY2E4NDYzYzUwNDViIHJlbGVhc2UyMS1tYWludAorMjQ3OTAgZTNjMmZkMTc3YTZlNGUyZWU3ODk4OTM2YTgwYzVjZWU1MjhlYzRmMSByZWxlYXNlMjEtbWFpbnQKKzI0NzkxIGM1Nzk3YTAwODNkOGZhMmEwZDUzNmU2ZDg0ZDU5ZmE5MWZhZjllYTAgcmVsZWFzZTIxLW1haW50CisyNDc5MiA0NjVjOTMyNWFmNjlmNDE4NjRkMjZjZTg3NzBlZGM2OWI1MmU5ZjNkIHJlbGVhc2UyMS1tYWludAorMjQ3OTMgZjY4NWYwNzA0YmJkM2E5ODVjZDJjZTdlYjc3YjhmZTAxMDA4NDdmZiByZWxlYXNlMjEtbWFpbnQKKzI0Nzk0IDBmNzRkYjc0YThmNDA4MDMwN2JjNDhhN2JkZDBiNWRlYzk2YzYyOGEgbGVnYWN5LXRydW5rCisyNDc5NSAzMzAzZjJkOTJjZWY5YzhkMzQ4OTJlY2M3NDA0NzllNzAxZDlhMzc4IGxlZ2FjeS10cnVuaworMjQ3OTYgNjY0YWM4MjI3Y2M1M2YzZTM0YWM5ZGZlOTA2YjliYWUyZGRkODY2YSBsZWdhY3ktdHJ1bmsKKzI0Nzk3IGRmNzcwZGQwYmVjNGE3NmZlZmJhNGIxN2UyMTdiYmU4MThiYmY4YTEgcmVsZWFzZTIxLW1haW50CisyNDc5OCBiMjc1OTlhYmNjNDlhMTE3ZTgxZGRlNTc5OTdmYWRmNDlhMmNmOTZhIGxlZ2FjeS10cnVuaworMjQ3OTkgOTQyMzI0NTUxNGE4ODVlYzllNzdiZDliN2NmYThhMWNlZGE3MDU1NCBsZWdhY3ktdHJ1bmsKKzI0ODAwIDNhOTMxNDViNmE5NjMyZGIyNjk0NmRhOWI5N2FmMjNhZTcwNWJmOGQgbGVnYWN5LXRydW5rCisyNDgwMSA0ZTM1ZmE1ZDU3MDhkYzU1NzBjYmVhMzE3OTJkNmE3NGMzYjFjMmZkIGxlZ2FjeS10cnVuaworMjQ4MDIgODM0OGU4NDQxZWFmNzViZTg4ZWJiZTk3NzkyYzMwODIxYjQyYjU3MSBsZWdhY3ktdHJ1bmsKKzI0ODAzIGYxOGNmZGUyZTgwNDllOGUwZDI5NmZjZGRkNGYzY2JjYTZkOGUzMWMgbGVnYWN5LXRydW5rCisyNDgwNCA5NTlhMmVkNTczNWNkMDg1OWJkYmU5ZGQ2ZmMxOWJhNWY5MTFjNzFlIGxlZ2FjeS10cnVuaworMjQ4MDUgODAzYWEwYzJiMTMwZjkyZDVkNDI1Nzk2YzQ4ZjM1Yzg2ZjRkMWM4NiBsZWdhY3ktdHJ1bmsKKzI0ODA2IDY3M2JiZjExNTUwODkyMjVmNGU5YmFiMjYwZjgzNDk4NjZlNmQ0MjYgbGVnYWN5LXRydW5rCisyNDgwNyBlMWYzZmU1Njc3ZGEzZDhlZTVlZThhNGEwOGJkOGZlNTMyZDQzOTg4IGxlZ2FjeS10cnVuaworMjQ4MDggYTNiMDY3M2JhMmNhNWZhNDNjMzk4NTU2NzdmNGU0NWQ0NTdhMTI2ZiBsZWdhY3ktdHJ1bmsKKzI0ODA5IGFhYzIzMzMxYTI1ZDc4MzBlZmNmYjYzYTlkMzBjNzNjMzVmMDJjYzUgbGVnYWN5LXRydW5rCisyNDgxMCBhZjI2MjNiYjVkMGJjM2Q4ZGE0YjJlZDFkZWQ5MDdmMTI0ZDhlNjJiIGxlZ2FjeS10cnVuaworMjQ4MTEgY2NiMjZhMTE4ODY3ZTgyMDRjNzRhNzZkZTg4MGE3NDYyNTA3MzQ4NCBsZWdhY3ktdHJ1bmsKKzI0ODEyIGI0ODkxMGE5NTc5NzFhNzllOWEzOTc0ZWNiNzkzYTg4NmVmNDUwM2YgbGVnYWN5LXRydW5rCisyNDgxMyA0YzgyYzhlZDZkZjRkNGM0N2Q0NzU1YTk5NDNlMGNmMmE3MDQ4MjAyIGxlZ2FjeS10cnVuaworMjQ4MTQgMjFjN2Q3NTY1OTc3Y2VhNjk2NjdmZDg0NjM0MzkzZTY4ZDEzZTcyZiBsZWdhY3ktdHJ1bmsKKzI0ODE1IDAwYjNhZDFjZTQwNGQ2ZmZkMzNhYjY0ZWVmYzM1NmQwYTEwOGJjOWQgcjIycmMxLWJyYW5jaAorMjQ4MTcgMDAzYTk4NWNhYjk1YmJiNmE5OWI2MzYxOGIwYWZkMjNhNDNjNjJjMiBsZWdhY3ktdHJ1bmsKKzI0ODE4IDc2MjI1NDM0YTZmZWQ3NDRhMWMyZDRlOWRlZGVlMDE0N2ViZTg3ZjYgbGVnYWN5LXRydW5rCisyNDgxOSA4NzMyOTFhNDg4OWVjOTJlNmViMDhmNDc2MDVjNjM4MzQxY2M0ZmRkIGxlZ2FjeS10cnVuaworMjQ4MjAgMmQzNzZkOTI2ZGE4MmE5MDIxZmE4MTQyYjRkNWVmNDYwMjA4MTM4YSBsZWdhY3ktdHJ1bmsKKzI0ODIxIDlkOTVjMWE4OWNmY2IwYTMzOTdhOTY4YmU3NGEzMGZlMzZjMjQ4YzMgbGVnYWN5LXRydW5rCisyNDgyMiA1ZTA2ZjhmZTM4ZWU0YWZmODM3ZTExNmQxYTQzZGI4MzhhNjhkZDQ3IGxlZ2FjeS10cnVuaworMjQ4MjMgYTE5OTI2OTRjODI0MjVlMGM0MjVjNGUzMTMxMTIzZjRhZWQ3ZDU5MSBsZWdhY3ktdHJ1bmsKKzI0ODI0IGJiMTY4ZGU1MGEwMzJiNzM5OGM4ZTQ1MGYxYWIzNjI2MTliZGQzZGYgbGVnYWN5LXRydW5rCisyNDgyNSAxZDFjNDY4MjRmYzNlN2VkNTAwYWE3NGE1NGJmNDdlMmIxYTViZjRkIGxlZ2FjeS10cnVuaworMjQ4MjYgYmY2NDQ4ZjAyMjczNzRlZGE5MTg5ZWVlNWJkYWM1ODI3NmNiZDE2MyByZWxlYXNlMjEtbWFpbnQKKzI0ODI3IGNhNDUwZTRkZmY5YTYyNjQ4NDA1MjE3YzRlNDQwN2RlZmQ4YzhlZDYgbGVnYWN5LXRydW5rCisyNDgyOCAwNDQ2MzAxNjEwOTNjOTE3NDRjNTM5ZTZmNTBiOWVkNDBiNjNhZGE2IHJlbGVhc2UyMS1tYWludAorMjQ4MjkgMTYyMTA2YjE2ZTQ0NGMxYTQ3NWI2MDg0ZDBkZmZhNDRiMzE0ZGZiMiBsZWdhY3ktdHJ1bmsKKzI0ODMwIDQ0YzQ3OWY4NGUzNjhjMGI1ZjNkODUzNTg0YmM4ODlhZjMyNjgxMjggbGVnYWN5LXRydW5rCisyNDgzMSAyNDc0NDE0ZDQzNDI5MjRiMDZmYmI5ZGMxOGJiMDY0NDZmYWY4NGYxIGxlZ2FjeS10cnVuaworMjQ4MzIgN2MyZjk1ZGVjY2FkNWUyNDg0ODVjMDUwMTczODcwMTcwMzZiN2E4MSByMjJyYzEtYnJhbmNoCisyNDgzNCA2NWY0MDk0ZjQzZjQ2ZmQ1MjlhNjg0ZmUyOWE3OGMxNTIyMDIxM2JmIHJlbGVhc2UyMS1tYWludAorMjQ4MzUgODE0Y2UwOTI5NTNlYzIzZjM5ODE0ZmM4ZGMwZDQwYmZkNzg1ZTc1YSBsZWdhY3ktdHJ1bmsKKzI0ODM2IGU5MjAyZmUzMmYwYjhmZjZlYWI4NTk5ZDJjMzRmNzY4YmM4YmQ2ZmQgbGVnYWN5LXRydW5rCisyNDgzNyA4OGJhYTRjNGVlZTEwNWI2ZTQ3OWFmNGU1YmQxMzc2NjkzMGE4YzdmIGxlZ2FjeS10cnVuaworMjQ4MzggY2NhNTZhOTc2Y2IyNWNiMDYwMjQ4NTFlODFmYTEyZjIwYjJhNmI0NiBsZWdhY3ktdHJ1bmsKKzI0ODM5IDRhMzQ4NjJhMzk5NDIzZjQ3MDI1OTM5ZDM0NGZjMzhmMGFkODM1NzAgbGVnYWN5LXRydW5rCisyNDg0MCA2NTJlMTgyNzk1ODNjMTQ2YTkyOTY0ODVkMTdjZGQ5ZTRhYWZmMTRiIGxlZ2FjeS10cnVuaworMjQ4NDEgNWE1MDQxMDJhMDljNTAyNDdhMTIzYTc3ZDkxZDJhY2YzMzE5ZGJhYyBsZWdhY3ktdHJ1bmsKKzI0ODQyIGEwM2IxM2JlMmY2OGY5NWJkNDZkYmRlMWIyY2E4NjFiZmNmYTQ5OWEgbGVnYWN5LXRydW5rCisyNDg0MyAzODE1YTk1OTgxOWM0NjkzODNiNWU3ZjEzZmY4ODExY2FhNGM0NDFhIGxlZ2FjeS10cnVuaworMjQ4NDQgM2M5ZjM5MWQ3ZTAzMzg0MjBjYzJiZjg5NTlhZmViMDUwZDliMmNiZCByZWxlYXNlMjItYnJhbmNoCisyNDg0NiAzMjQ4ZWFkNzE5Mjg3OWQ4Y2JkMGM0MDQ3NGYxMzM0MDdmZWMxZDY5IHJlbGVhc2UyMi1icmFuY2gKKzI0ODQ3IGQ2YTQ0ZmQxZjRjMTQzNzA5MDY3OTI3NjIxOWY0ZDY3NjY2MWZjODkgbGVnYWN5LXRydW5rCisyNDg0OCBlM2RlMzhhYTY0NjIzMTQ4MWFkMDM2NGU0OWQwMDdjODQ0MDY3ZGFmIGxlZ2FjeS10cnVuaworMjQ4NDkgMDk3ZGQ5NTNlMTE5NjI0ZjAxOWY4OTA1ZWMzOGJmNzU1MzM2ZDZmZiByZWxlYXNlMjEtbWFpbnQKKzI0ODUwIDU2OGM3NWRkNTA3ODJhOWI0MDMxMTcxNmMyM2I5OGNiMGZlM2IwY2YgcmVsZWFzZTIxLW1haW50CisyNDg1MSA4NWU2OTRlOWI5ZmMxNDY0NGQyNTUxYjAzNDFkMmQwYWZkZWRlOTk3IHJlbGVhc2UyMS1tYWludAorMjQ4NTIgZTNhYTVhYWIyODc2ZGZiZTFkOWFkMWFmOWVlNWJkZmQwN2FjZWQxMiByZWxlYXNlMjItYnJhbmNoCisyNDg1MyA4MmFjODM0NzQ0NjI5MTEyNWFlMWNlY2ZjZmE4M2M2OGI3NjBmZGI2IHJlbGVhc2UyMS1tYWludAorMjQ4NTQgMjViYWJkNDMyYjI0ZjRiYjEyNWRhZTFlMmNiZWU4ZjE3NjAwNmZmZiByZWxlYXNlMjItYnJhbmNoCisyNDg1NSAzMjZkOTk3MmY2ZjYxMDAzNmY5YTRlOGJiZWUyMWExYTZhN2Y2NDA3IGxlZ2FjeS10cnVuaworMjQ4NTYgZThkMzZjMTgzMTM3NTczNzRmYmMyODY1YmQyMDBlNDcyNDVlOWRiNiByZWxlYXNlMjItYnJhbmNoCisyNDg1NyAwNDYxMmRjMzIzZGYzMDgyMGM0OGU4ZThlOGQyMTcwNTRkYzczY2ZmIGxlZ2FjeS10cnVuaworMjQ4NTggNzY3ZDI0NWZkOGRjZmI2OWVmNmI0ZjMzYjRiOWIyODFmMGYzN2VlNSByZWxlYXNlMjItYnJhbmNoCisyNDg1OSAwOTUxOGM0YzY4NTA4YjQyZDA4ZjcwODlhNDRiODlhZDkwMGEyNTY0IGxlZ2FjeS10cnVuaworMjQ4NjAgNDhmMzIxOThjZWI5MWY0OWRkOGEwMGE0MGQ5MmRkNGE1NWZlMDU3ZCByZWxlYXNlMjEtbWFpbnQKKzI0ODYxIDA4MjVlYjFkYmViODFjYWI3NjAxN2Y1ZjRlYTM3ZmJhMDA4YWQ4MjcgbGVnYWN5LXRydW5rCisyNDg2MiAxNzk5NzgyMDk3MWQwYzI5YmU1N2RjYzVhMWQ5Zjk4YTkyM2QxNGUzIHJlbGVhc2UyMi1icmFuY2gKKzI0ODYzIGZjOWUyNzExNzE0ZGVlOTk1OTZhZDM2NDEzZDAyYTJiY2ZmZTg3YmQgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjQgNmMyM2EzZmIwYjA0OTg3MmE1Mzc3NGFlYjE3NTA2NzI1MDZiM2EyZSByZWxlYXNlMjItYnJhbmNoCisyNDg2NSA2MDYzNTQ0MDEzOTZmNTQwNmJmYTAxOTlkNzJmYTRhYjFmNzA2M2ZmIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY2IDNmZmVlZGEwMjBkY2FlMTBkNjgyMjMyZTdjNWFiM2E4YjQwMGU0ZGIgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NjcgNDc5Y2Y4ODJiZGI1ZTY2MmNiNzE4ZmQzYmUzM2EwNTA3MmI0NWQwMiByZWxlYXNlMjItYnJhbmNoCisyNDg2OCAxMTAwM2I2NjU1NDVkNjFmMTQ4YmU3YzA4NTAwOWMyZWM1MDdkNTBlIHJlbGVhc2UyMi1icmFuY2gKKzI0ODY5IDMyNDY4NGFkYjQ4MzUyNDEwNTMwMTNjZTg3MDBhNTY0MDYwODAwNWMgbGVnYWN5LXRydW5rCisyNDg3MCA3NGM1ZGNjMTViNzM1NTY1NDkyNjg4YTViZTYwYWU4NjVhNzE2ODUzIHJlbGVhc2UyMi1icmFuY2gKKzI0ODcxIGU5M2YxNDQ4NjJkZTk3MmIxYjExN2U0NmExZmNhMzJmZmUyMDQ0NjcgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzIgOGFmODZhOTUyYjJjYTNmYTIwYjc4M2ZlOGQ4ZGUwMzQxZDcyY2U3ZSBsZWdhY3ktdHJ1bmsKKzI0ODczIDRmODkzMjEzNGRjYTNiM2ZkN2E0ODEwMjEyM2JiNjc0OGVhNDQxMDkgcmVsZWFzZTIyLWJyYW5jaAorMjQ4NzMgZGNhOGI1ODc0NjQzOWE5ZjdkZjIxMmY2NDNlZTRkNDBlYjhkZjI0YiByZWxlYXNlMjItYnJhbmNoCisyNDg3NSA5MzViODYwMmNhZDk4MzY3MDRhM2FhMTdjYmJkOGU0ZWM5ODI0MDkyIGxlZ2FjeS10cnVuaworMjQ4NzYgOTAyNTE5N2E4ZWEwYzRiYmM3NmEwZDA4YjI0NGU0YTdkZDhiMDIzMiByZWxlYXNlMjEtbWFpbnQKKzI0ODc3IGUwYTVkMTZhOWNiOTUxOTZjYTE4NjE0NDIzMDkzYmViMjIxZTM5ZDAgbGVnYWN5LXRydW5rCisyNDg3OCBjYjU1ZjE1YjI3MzAxMDVmZDliNTkzZTIxYTk5MDcyNGM5Yjk0NWE3IGxlZ2FjeS10cnVuaworMjQ4NzkgYjQ4NGFhNjFjYWI0YTZhZWU2ZmYwN2YxODkyZjk1YTQ1YTliN2VhMSBsZWdhY3ktdHJ1bmsKKzI0ODgwIDlkNDgwZDBmZTY5MDU3MWNmYmFlNTIwYjJkNzFkNjViYzFlYWUwMjIgbGVnYWN5LXRydW5rCisyNDg4MSAyNjhiNTdkOWRhZWQxOGEzYzhlNzZiNWQ0M2IwZmE4YTVkOTBjOTM0IGxlZ2FjeS10cnVuaworMjQ4ODIgZmM4MTMxNjRjZTlmOTgxM2U2NzIwMGI0NjdiYzhlOWY4NThiZGRjYiByZWxlYXNlMjItYnJhbmNoCisyNDg4NCAzNDlkNjZjZDg3NGMzMzVkYzQ2NTYwOTRiZDNiYzQ3NmYxYWI5NTJkIGxlZ2FjeS10cnVuaworMjQ4ODUgN2MyOGU5NTZmOWIwYmFkNmJjNmExNDllM2VlZWNiZTAxZjI3ZWMwNiBsZWdhY3ktdHJ1bmsKKzI0ODg2IGFjM2NlMWZhZWM2OGVhM2M3MTE0YTFjZjBkZTRjZmMyNjYwZjdhMzQgbGVnYWN5LXRydW5rCisyNDg4NyA0MjMyZDI1N2U0ZmYyMmViODdmN2IzMzUwMTg3NDdhOWQ3NmIzMGE3IHJlbGVhc2UyMS1tYWludAorMjQ4ODggNDFmZjQ3Nzc5MjZlYjUxOTE5OWE1ZGI5NzFlZTU1ZDllYWNkZmNhNSByZWxlYXNlMjEtbWFpbnQKKzI0ODg5IDEzMzliNmQzMmU5NTNkYjhiOGI2YjQwNjc2ODc5OTQ3ODIyMzQ0ZGUgcmVsZWFzZTIxLW1haW50CisyNDg5MCBlNjliMjFmMjUyOWVlNmM0NTlhYTJmYjcyNjhmZTk0ODNmYTM1NWRhIHJlbGVhc2UyMS1tYWludAorMjQ4OTEgNGEyYzNhZTA5ZTBjNGVmZGVhMmE1NjNjYzgzNzA2Y2IxZTNkZGMwMiByZWxlYXNlMjEtbWFpbnQKKzI0ODkyIDJhNzg1YjY2OGExNjA5MjU0ZWRjN2Y2MGIzZDY4NjNmYjBhNzJjZGUgcmVsZWFzZTIxLW1haW50CisyNDg5MyAwMDZjNTViZGY3ZTE1NmZjMmU1NzU2ZWRkYzQwZjUyN2VmNjk5MmJhIHJlbGVhc2UyMS1tYWludAorMjQ4OTQgYzQ4ZDhiMzYyYWNlZTFjZGUyYjA3NDA2YmFjMTNjMDhkNDI2YmM0OSBsZWdhY3ktdHJ1bmsKKzI0ODk1IGNhMjdkODJhYzg5YjQ2ZTNkM2U5ZWEzZTA3YTMzNDg5MmM5ZDc3MDggbGVnYWN5LXRydW5rCisyNDg5NiBlOGNiMjM2YWFkMjc5NjI2ZmFhZjdlYmE2YzRmODZiNTgxNTNjNjFiIGxlZ2FjeS10cnVuaworMjQ4OTcgN2JkZTljYTkwNTU0OTM0ZTEyZWRhNmQ0ZDZkOTFiY2RhNDhkZTcxOSBsZWdhY3ktdHJ1bmsKKzI0ODk4IDBhZjlhYzg3ZmZiYzFkOWUzMjU2NmY4MjE1MzExMTY1MDFhMGJlOGYgbGVnYWN5LXRydW5rCisyNDg5OSBiZjUxOTMyMWU3OTY3ZTJkMjA2YzE5MGI4MmNiNzgwMTVkYWRjN2I0IGxlZ2FjeS10cnVuaworMjQ5MDAgNWQ0MTM1NjA5ZWZjMWE4NDA4M2RmZWIxZjFjZmQ1MjE5OWYwY2E5ZCBsZWdhY3ktdHJ1bmsKKzI0OTAxIDljMzJlOTIwMGFiZWU5MWUyMTcwOTI3Mjc1YzkxY2RjMGE0Mzc2OGMgcmVsZWFzZTIxLW1haW50CisyNDkwMiA1ZjMyMTM2NTVkOTU1ZjQxN2I1MTAxYjg3YzRhZDM1NTg2ZjY4MjFjIHJlbGVhc2UyMS1tYWludAorMjQ5MDMgMTE0YTZiY2ZlODZiYjg0ZjFmY2E2N2JjZWM1MWIxYTFjMDI4ZmI4YSBsZWdhY3ktdHJ1bmsKKzI0OTA0IGY3MjI0NGNmODVhOWI3NjIyYjQ3YmFkNmQ3NGViMDhkNjlhNmUxNmQgbGVnYWN5LXRydW5rCisyNDkwNSBhZDEyNmMwNjM2NTQ4ZDM1YmU0NzVhMTFkNjE2Y2U2ZTc3YmNiNjMzIHJlbGVhc2UyMi1icmFuY2gKKzI0OTA2IGE2MGZjZGM3NTM0NmIzZTM2OGE0NDg0MDk5ZmUxZTU3YmM3YTczNDQgcmVsZWFzZTIyLWJyYW5jaAorMjQ5MDggZDU5ODY4YmFmZWIxMGIyY2VkOGMyYWIyNmJkNDYzOGIwNjY4OWU5MCByZWxlYXNlMjEtbWFpbnQKKzI0OTA5IDU4YTgyYTRiZThiMTczZTUyZTlmY2NlMWZlZTMzYjZmZGM1YTNiMDAgbGVnYWN5LXRydW5rCisyNDkxMCA2ODg0MmQyOTVkMmNjY2RmODZiOTBjY2I5YzFjODQ2NDU1NmE3MTU4IGxlZ2FjeS10cnVuaworMjQ5MTEgODJjYjE3NDk4ZmMxZmI3ZGViNzNiMmYzYjk5MjYzOGRjNTQ4MzQ2YiBsZWdhY3ktdHJ1bmsKKzI0OTEyIDNiMzliYTJiODAwZWRkN2Q5YTI0NTQ3ZjA1ZjMwZDU5ZjM4M2ZjNmMgbGVnYWN5LXRydW5rCisyNDkxMyAxODk0Nzk2ZTkzMGMxNDU3NGJkMzM0ZGJkZTUyODZlNTE4NTRlOTg5IGxlZ2FjeS10cnVuaworMjQ5MTQgNDU1NDA3MmU3NmI0ZjA5YWI2ZmVjOTkzYjhjZTkwODA0ZWExYTI0MSBsZWdhY3ktdHJ1bmsKKzI0OTE1IGIyZTc5Y2FhNjhlMGIxYzliYzg1Y2UzOWRjYjMzYmExMWFiNGYyYzEgbGVnYWN5LXRydW5rCisyNDkxNiBlNmE3YWQ2YzM2NTJkYTNhMzhkNGJmYTI2NTk3YzhkYjVmY2QwNzc2IHJlbGVhc2UyMS1tYWludAorMjQ5MTcgNThiNzdlZjQ3MmQ0YzJhMzMyMGY2NWM0OThiNzZlNzRiMGE4ZGIwOSBsZWdhY3ktdHJ1bmsKKzI0OTE4IDUyMDUzYWZjYWQzMjVjNjM4NjdhOWM1NmUwODE1MGJjY2M5OTg2MTMgcmVsZWFzZTIxLW1haW50CisyNDkxOSAxZWMzNGEwZDAyYTc3Y2U0M2FiMjliZWRiNTUzZDg4ZWNhOGE5MzU1IHJlbGVhc2UyMS1tYWludAorMjQ5MjAgNDNiNjQyNDVmMWFhN2I5ZTEzYzc3ZTc5NjljYTk5OTc4OWI5ZDFmZiByZWxlYXNlMjEtbWFpbnQKKzI0OTIxIGFiOTJlYWExNDBlZjk0ZTc1Y2QyZjYzOWI5NWU0ZjZlZWFkNmJhZTkgbGVnYWN5LXRydW5rCisyNDkyMiA4NDc0MjVkNWJjYTgwNzkzOWI3NmQ5MTg2OTEwODFmNjg0MzdiM2U5IGxlZ2FjeS10cnVuaworMjQ5MjMgZjg0NzUxMzVhYzEzNDM2ZjA2MmMzNWVlMTlmOGM2YzdjODhmMjVlOCBsZWdhY3ktdHJ1bmsKKzI0OTI0IGZjYjY0OWIxMDA0ZGUzN2U5OGQxZjI3N2Q0ZmIxN2EzODA0MWRhYmMgcmVsZWFzZTIyLW1haW50CisyNDkyNSA1ZDc3ODI1YmJjMTA2NThmMjExNTEzMzU1ZTg3YmFjZmJhZGYwZjk5IHJlbGVhc2UyMi1tYWludAorMjQ5MjYgOWUwMjMzYzBlMDAzYzkxOGM3NTI0Mzk4ZDBmMDIwODY2N2IxMGZiNyByZWxlYXNlMjItbWFpbnQKKzI0OTI3IGFjOGQ4NWRhNmQwZGJiZTQ4NzM3YzBlMTA3MWU1YzJmYzZmNzgyOGQgcmVsZWFzZTIyLW1haW50CisyNDkyOCBlMjA0N2FmMGIyZTZlNmZkMmI1MjVlYzE5MGFkMTZkMjRkNWY2NWUzIHJlbGVhc2UyMi1tYWludAorMjQ5MjkgMTJlMGQ1OGU0NGJkYmExNGNhNDY2YTNkNzdkNDM4YTI2ZTQ1ZWEwZSByZWxlYXNlMjItbWFpbnQKKzI0OTMwIDE4ZGI5MWMwYTc4ZjFjZTdmMjBiNDI4MjdlYTEyZDg1NzQxYzU3MzYgcmVsZWFzZTIyLW1haW50CisyNDkzMSBlZmQwNGQxZjMwODVlMWZhNjE0MmRmMjIzODJkNmMyMWVjNmE3YzUwIHJlbGVhc2UyMi1tYWludAorMjQ5MzIgY2Q3N2FhMTFlZGRjMTlmNmM4YTNmNWYyNTFmMmNhNWZkOWZlYzY5YyByZWxlYXNlMjItbWFpbnQKKzI0OTMzIDgxMmQxNTQzYmEwODlhYTEwM2Y0NjU2YjNiODlmN2U4MTJmYjUzYjMgcmVsZWFzZTIyLW1haW50CisyNDkzNCBkMDg5ZDFlODQxMWNjYzQzNDliNTFjNTM0NWNkOTc5ODIxMmE0YmZlIHJlbGVhc2UyMi1tYWludAorMjQ5MzUgZjc3NzU4Yzg3MmZiNTExZjYzYjAwMWJkYTBjNzFhMjA4ZjdlOWVhNiByZWxlYXNlMjItbWFpbnQKKzI0OTM2IDhkNTFjNzUzOTcxOWIxOWM1NDE1Yjg2MjVkODFmNjkyM2NkNGU1NDYgcmVsZWFzZTIyLW1haW50CisyNDkzNyA5Y2NlYWQ1ZmQyOTcxMTc4YTZkMTY0Yjc4ZTYwZDUxZWRhNzU5ZmZmIHJlbGVhc2UyMi1tYWludAorMjQ5MzggMzk3N2FkM2IwODI1N2Q1MGE2NDdhYjg2NjJkOGFlNDg5OGEwNTY3NCByZWxlYXNlMjItbWFpbnQKKzI0OTM5IGI5MzcxZjMyNDFiODUwMDdlMmI4YTVmNmQ1MDU1ZmI5YmUyODFhYTAgcmVsZWFzZTIyLW1haW50CisyNDk0MCBhYzRiMWM0YzNiMTJmMjg0ZGYzNzFhMGZlYzdmZDRmYmU0MGEwODc3IHJlbGVhc2UyMi1tYWludAorMjQ5NDEgN2IyZDcwMWVjNDA0ZDczOWE4ODA2NjJjMjJlYTMwMTY4Njc3Mjc0MiByZWxlYXNlMjItbWFpbnQKKzI0OTQyIGE5NGU0ODIxMzk4ZGEyOWM1ODIwMTdkOTAyM2QxY2IzZTkxNzM1N2QgcmVsZWFzZTIyLW1haW50CisyNDk0MyBhMmVhYjRkZTU1MDUzOTliMjAxNDU3M2FiOThjY2YwZmZiMTY1YWE2IGxlZ2FjeS10cnVuaworMjQ5NDQgZWM2MjMwNDcwNzNhMmJlNDE3Mjg0NDk5NWZjMGNkNWRkNjRjNGNmOCBsZWdhY3ktdHJ1bmsKKzI0OTQ1IDE2YTgyNDIzYjg2MDIwNDU3YTRmNGU4MTljODA0YjRiZmYyMjdlOWMgbGVnYWN5LXRydW5rCisyNDk0NiBmZGMzOWUyN2E0OTRlOGI2YTc0YjJlNTAzNzIxNzE2Y2M5OGEyOGVkIGxlZ2FjeS10cnVuaworMjQ5NDcgMjljMWE1OGRkYTUzZmFmMzU5OWVjZTZmOGExYWQ5NDQyMjUzMDM1YyByZWxlYXNlMjItbWFpbnQKKzI0OTQ4IDA5N2FlMGFkZjQ3ZmJjNDE2Y2NkZmQ0MDBhZWE3OTExMzgxNzQ3MGMgbGVnYWN5LXRydW5rCisyNDk0OSA2ZTlhNGY5YTU1YTQxYjM0YTZmOWM2ZjNiM2RiODdjMTVhNTQ3ZjY5IGxlZ2FjeS10cnVuaworMjQ5NTAgZDA0ZWI4ZDY2NGUyZGYzMGM2ZmJlMDRhZGVlMGRjZTNlZGZjZjgyOSBsZWdhY3ktdHJ1bmsKKzI0OTUxIDkyZGE3NGM4ZTVlOGMwMmI3ZDdhMTk1NTc5MGNlYTVmYzU4MzQzOTAgbGVnYWN5LXRydW5rCisyNDk1MiA1YjdiMzg2Y2IwZDQ1MzU3NmE3Yjg1MTk2OGI4ZDFmYjc5MTc0Y2ZmIGxlZ2FjeS10cnVuaworMjQ5NTMgN2RkMzk1OTg4Mjc1ODFjYjE1Y2Y2ZjZlOWZiNzZmNDdlYmU3YjZlZSBsZWdhY3ktdHJ1bmsKKzI0OTU0IGZmNzBlNTYzNGFlOTEyN2E3OTFmYjFiMzdlYmVkYTk0NjJmNzYyMGIgbGVnYWN5LXRydW5rCisyNDk1NSAxOGE3MGE4MmFmMTU5Nzg4NjE0NjJmN2I5NmZlZGJiNjk0NTlkOThjIGxlZ2FjeS10cnVuaworMjQ5NTYgZTU2MDQ3ZGI2NTM4NDcyMzUzMjJiNDUwMjAyMjJjYTNiMzRhM2U4MCBsZWdhY3ktdHJ1bmsKKzI0OTU3IDVmZjhiYjI1MDMxYzgyMzA4YzgxYTFhMTlhZmIyYmU4MmFkNmEyZmUgbGVnYWN5LXRydW5rCisyNDk1OCA4NTc4MzU1ZDIzZDM0OTVhMDRhMzA4Yzc5YzU5MmUwMDUyM2VjNjkyIGxlZ2FjeS10cnVuaworMjQ5NTkgY2FjOTMxYWQzY2M1YTY3MmQwZTI2NjM1OTE2YmRkOTAwMWVmNjBiNCBsZWdhY3ktdHJ1bmsKKzI0OTYwIDY5NzA1MWY2N2U5NzZhNTAzYTY4MzYxMmY4ZmI4MDc3ODg4YzVmZjMgbGVnYWN5LXRydW5rCisyNDk2MSBmZTU0ZThkOTNjYjQ4YzIwZDFmODUwMDZlMDcxNDc0ZmJhNWI5YmYyIGxlZ2FjeS10cnVuaworMjQ5NjIgNTJiM2I4NDZmMTFmNTRkY2I1ZDY3YTAzNjJmYzIyZjAwNzMwYTI2MCBsZWdhY3ktdHJ1bmsKKzI0OTYzIGE1MGRmNjVhY2E3YTliODE1MDA0Y2NjYmM0M2E2OTMxMWE1NDc1ZTQgbGVnYWN5LXRydW5rCisyNDk2NCAyZjQwNzMyNjlkYWZkMzM4N2JhMTgxYWFkZjk5ZDNiZDJlMGZmNzhiIGxlZ2FjeS10cnVuaworMjQ5NjUgNjRkMGM5NDlmMzNlMmZlYmRhN2JjMWU0NjNmYThkNjc2NDBiNTYzOCBsZWdhY3ktdHJ1bmsKKzI0OTY2IDAzNWQ5Yzk2YWFlY2ZjODg0MGQ1ODI0NDBiNWYxZDdiY2I3MzYzNjkgbGVnYWN5LXRydW5rCisyNDk2NyA2N2RhMTEyOTM0MDZjZDRmNzQ0ZmMzMTg2Nzc1MjU1MDMwNTgyMjY2IGxlZ2FjeS10cnVuaworMjQ5NjggYmUyMTNmMWNkNDYyZTFiNThhYWZjYWYxZDI0MDJlZmI0N2ZmYjA4NSBsZWdhY3ktdHJ1bmsKKzI0OTY5IGZiMzRmNTVhMDNmYWJmNDAyMTdmMjE3NGRlYTFjMjMzMDQ5MDdiNjMgbGVnYWN5LXRydW5rCisyNDk3MCAzYmEwZjFiMjAzMjBjOTc0ZmIwYmMwOTVjNDExYjM5ODEyM2IyMjEzIGxlZ2FjeS10cnVuaworMjQ5NzEgYTllMDZmZmFmN2ZiZTlkOGM3OWE5ODhlNjg0ZTY4MTRiZmFiZGQ3NiBsZWdhY3ktdHJ1bmsKKzI0OTcyIDkzN2NjMTBjZDM5ZGYwMTc3YzFlMmNmOTcxODc4ODFlYjVhMGFlZjMgbGVnYWN5LXRydW5rCisyNDk3MyBkYThiOTk3NDY5ZTdkYzBmYjU4MTgxYjE1YTczYzM2NjgzYzQ0Y2Y1IGxlZ2FjeS10cnVuaworMjQ5NzQgOGRmYmZiYzkzMWI0YTY3Yjg5MWY0MjFkODg0ZmI5YzU4YWMxNzcyMCBsZWdhY3ktdHJ1bmsKKzI0OTc1IDA5NWNmZjIxOTU2Y2JmOTE0ZTU3MWU5ZWJlMmUyMGY0ZDU2YTIxMTYgbGVnYWN5LXRydW5rCisyNDk3NiBlYTg1ZWVhNmIyYjk0OWZkYTYyYjU2NTBhYmM5NTZkYjQ1MTU3MGFkIGxlZ2FjeS10cnVuaworMjQ5NzcgM2I0M2Y0MGFmMjdhOTg0YTFhNjYwOTEwZmQzMDAwZmM2N2JmYjBjYSBsZWdhY3ktdHJ1bmsKKzI0OTc4IGNjZWE4NzgyYjg0NzIzMWUwY2U4NGNjM2FiNzg0ZDRjMmJiODExZDUgbGVnYWN5LXRydW5rCisyNDk3OSAzYzhhOWVmM2I5NTQzOTYyZWI3ZGIwYjg1YzI0ZTQxMTZhMGQ5NTcxIGxlZ2FjeS10cnVuaworMjQ5ODAgNWQwMDllNWUxM2Y3OTllZWQ4NTQ0ODBjMGJjZDlmZDg2NWU4NWYxMSBsZWdhY3ktdHJ1bmsKKzI0OTgxIDcyNDZmZTVlNWEyODI3ZTJkNGU5OTBiOGM2YTkwZTE4NWJlMDQ3MzAgbGVnYWN5LXRydW5rCisyNDk4MiBkNTk0YTU4YjQ0NmQ1ZjNjZTRiYmVjZGRmMThlZjFkMDAxZDhlOGRkIGxlZ2FjeS10cnVuaworMjQ5ODMgMTQ5MWYxMTM3ZTBlYTU3MGU1OGFiNDljMjE4NzA0YzQxNWFmMzdkOSBsZWdhY3ktdHJ1bmsKKzI0OTg0IGJlODY5N2M3MGU3YzJlNTU0NDlhNTYyMTNiOWJiMTA5OTJiNTQwYjIgbGVnYWN5LXRydW5rCisyNDk4NSBhMzNiYjczMjQ2ODM5ZGI4Y2Q5M2M0NzEwNjRlN2JjYjM0NjIyMDQ3IGxlZ2FjeS10cnVuaworMjQ5ODYgNzU4MzM5ZGJkYWVhNzgyZDVmZTAxNTg4MzExNzAwNjI5NGM0NTEwNCBsZWdhY3ktdHJ1bmsKKzI0OTg3IGRlMWViY2VmN2QzMTA3ZTRiMzA4MjJmOTJkZWE1Mzc3MzE3MDVhMDIgbGVnYWN5LXRydW5rCisyNDk4OCAwNTFmM2I2NWRkYWI4NDk1YmNmMWIwNjY2ODJjYTI0ZWM0OGQ1NjM5IGxlZ2FjeS10cnVuaworMjQ5ODkgNmQ0Mjg4ZTg5MThiMjY3NGI4N2NmNDM4YjJkMzcxNzcwZTFiNTdiNiByZWxlYXNlMjItbWFpbnQKKzI0OTkwIGRjY2NiOWNlYTA1OTMxYTI1NDI0NzJjZDU0OWM1NjhmYzliMjA0YmQgcmVsZWFzZTIyLW1haW50CisyNDk5MSBkZmM5NzA0MDlmN2VkMDIzNDFmN2UyMmI2NzBmZmM1MjZmNzYzMzZiIGxlZ2FjeS10cnVuaworMjQ5OTIgNjZlMDA4MGM2ZGNjOTAxYjBiODRjYzg4MDNiNGE3YTg4NzQyNGE4YSBsZWdhY3ktdHJ1bmsKKzI0OTkzIDU4NjE4ODU1NzdlOTk3MDUxYTI5MjM1NTdkODAxYjJlNTg0MTU0MmEgbGVnYWN5LXRydW5rCisyNDk5NCA2ZjZmMGUxMDM1NjZkYzljOTUxZjZmMzI5OTA2ZmNiYjYyNGM2MDZjIGxlZ2FjeS10cnVuaworMjQ5OTUgNjNhMmZhYzIxMDRjOWE3YTJkYzUxMGIzZmU0YWI2MjVkMWRiNWUzMiBsZWdhY3ktdHJ1bmsKKzI0OTk2IDZhZTg1ZDgzODQ2NmEyNTdjZjUzYzNlNjFmMDNhN2Q5OGJjMGM2MTcgbGVnYWN5LXRydW5rCisyNDk5NyA5YzdkYTI3MmM5Yjk0ZTg4MTYyN2M3YjhhNjBmZWExZWZkM2JmNGE5IHJlbGVhc2UyMS1tYWludAorMjQ5OTggY2QwN2U4NDIzNWU2ZGIwMzUzZTFhY2ZjMDM5ZmQ4NjcwMWJhZjczMiByZWxlYXNlMjItbWFpbnQKKzI0OTk5IDJiNzQ2NTQzYWIzZDcyOGRlNDc2ODNlMmE0MThmN2Q1NTllNjU3Y2EgbGVnYWN5LXRydW5rCisyNTAwMCA2MjIxOWVkMjE1OTliY2U0ZDkzMGJkYjUxZGJmODJjOThjNzk3YzVlIGxlZ2FjeS10cnVuaworMjUwMDEgODUxZTRiZjMwMzU4ZWY4ZDAzZTA0NmNkMDkzYzE3ZDMzNmVlNGUxYSByZWxlYXNlMjItbWFpbnQKKzI1MDAyIGI3MmRhMDc4MGU3YTU5MmEyZTVjNDA5ZWJmYWYyYzM1ZGZhNjI4ZTIgbGVnYWN5LXRydW5rCisyNTAwMyAzYTRhMzRmZGZhODFhMDk2YmNhOGIxZGQ2OGFiYWEyMWE1OTZmNzQzIHJlbGVhc2UyMi1tYWludAorMjUwMDQgMzVlM2YyNDE4YjJkYTlmNmYyOThjNmM0MTQxMjZmYWViNGQzMjhkOSByZWxlYXNlMjEtbWFpbnQKKzI1MDA1IDNjMGJkMmYzN2E3ODhhMWZmMDRiZjlkNDUxN2Q5MmFlNWFhNTc2YzMgbGVnYWN5LXRydW5rCisyNTAwNiBhM2E2MmU0NDBmMmE2OTJkMGZmNzUzODBiMzEwOTRhOGQzZTg0MjBkIHJlbGVhc2UyMi1tYWludAorMjUwMDcgN2UyYTNhMmJhYzMzZmM5ODhmZTYxNDY2YmNmMjEyM2ZiOWVlZGM1YiBsZWdhY3ktdHJ1bmsKKzI1MDA4IGE1YmUwNzY1YzU3MTM2MTE5ZjU0ZTRhZTI1OGRlODQ1M2ViODRmMWMgcmVsZWFzZTIyLW1haW50CisyNTAwOSA5OTEyYTk2YzFmYjM5NGYwYzExNzcwY2Y3MGU2YWFlYzUzNzYyYTU1IGxlZ2FjeS10cnVuaworMjUwMTAgMTk1OTE3YjdhNjAyNDJmYjRkMDZlZjEzMDY1YjBkNzdjMTc2ZDU1NiBsZWdhY3ktdHJ1bmsKKzI1MDExIGViMDUxOWE0NjdhYmEyNGZkMDczZDhkZmFhNTZjMWYyNTY4NjRmY2YgcmVsZWFzZTIyLW1haW50CisyNTAxMiBlYzQ4Zjk2YzkyOTVkZGUwODBlZjI3ZWY0OWY1NGIxY2IzOTQwYWY0IGxlZ2FjeS10cnVuaworMjUwMTMgYzNjNmRlMTQ1MzA5OTZhNjZiYWNhMjc2ODk3YmM3YWZjMmZlN2MzNCByZWxlYXNlMjItbWFpbnQKKzI1MDE0IDY4ODM0YTY5NzQ2YTg1ZjdjYmJjMGQzZWYzODViMWYzMjgyMTJiMjUgbGVnYWN5LXRydW5rCisyNTAxNSAyOWIzZGM5MGJlOTVjYjQ4YWE1ZTViYjhkOTZjOTViNDUxMGI2ZGMwIGxlZ2FjeS10cnVuaworMjUwMTYgOWEyNjgyOTgyNmU5NzkyYjgxNzRmMzdiM2YxOWQ3OWM5MTA0MWFmYSBsZWdhY3ktdHJ1bmsKKzI1MDE3IDZiMGUxNmNiNjVkNTkyOWVkYzhkZjc3ODEyN2Y2MjRlZWE5ZGZiM2QgbGVnYWN5LXRydW5rCisyNTAxOCAzNGVkZGNhMWZkYTc5YTU1NDBjMjc5ZTQ3ZTBjYjYwZjdhN2MxZmVkIGxlZ2FjeS10cnVuaworMjUwMTkgN2M1ODJkMWI5Y2Y4MWUxYTRhYmIzNmYxYmE0MTUwODE2YTg0YTI3NyBsZWdhY3ktdHJ1bmsKKzI1MDIwIDIyZGFkOWZlMDljYTEzZGNmOTlhZDExZTI5OGYwMzE2YzI3MDlkMTUgcmVsZWFzZTIxLW1haW50CisyNTAyMSAzNjI5MTViMzg3MjQ0NGNjOTk0MDc4MzAyNTc5OTZjNmM4ZmZmNjliIGxlZ2FjeS10cnVuaworMjUwMjIgOWRlMzUwYTY1NDJlZGYxYTg3MTkzNDc0YjNlNjRiMmZjYWMzNjcyOSBsZWdhY3ktdHJ1bmsKKzI1MDIzIGI1Njg0M2MxNTI0OWIzOTg5ZWU0NTZkMzE4MzhiOTQ0ZTZmYzQxOTEgcmVsZWFzZTIyLW1haW50CisyNTAyNCBhOTExOTM0MTI2ZmQ4NjZkYzEwZmM5YTUwZjFmMTUwMmIyMzY3N2U0IHJlbGVhc2UyMS1tYWludAorMjUwMjUgNzI0OGMzNzUxM2YzNzVkZDMwMzA1NmI4ZDk1MjUxNjRjZWVkZDVjNiBsZWdhY3ktdHJ1bmsKKzI1MDI2IDgyMzkxMjllNzVkMGEwYWE1MjVjMjI3Zjk1ZjBiNTlkYTZjNGFhZjYgbGVnYWN5LXRydW5rCisyNTAyNyA3MmJiNzBlOTY0MGU0ODA0YjEyNmNiZDc1MWU0ZDU5NDkwZGQ1ZTY2IGxlZ2FjeS10cnVuaworMjUwMjggMGQzYmI2OGUzYTI4YTMyZTEyNjA2YWVmNGUzZGI1M2M2ZjhkYWU4OCBsZWdhY3ktdHJ1bmsKKzI1MDI5IDU0NGUyNjIwNjFhMzYyY2NkMjA1ODFjZjFlNzIxOTBiMjJlNTVhYjcgbGVnYWN5LXRydW5rCisyNTAzMCA2NDZmOGMwODhmNWQ4NDdlYjg3MGRmYWM5OGZlOTk0ZDdkOWMxOTlhIGxlZ2FjeS10cnVuaworMjUwMzEgODk3MGU3NDY2ODExMzNhODQyYTVhMDk3YTA4YzRlMjRjNWIyYmU3OCBsZWdhY3ktdHJ1bmsKKzI1MDMyIGZmYWJhYzUwOTczZGZjNjE5Mzk0ZDBhOGM2M2VhZWU2YjVjYWQ2YTMgcmVsZWFzZTIxLW1haW50CisyNTAzMyBhMWMzMjgzMzdjOGU4NDg4NjIyMDdjMGI1YWZlM2MyMjFmMGYwMWYyIHJlbGVhc2UyMS1tYWludAorMjUwMzQgODhjNDYzZjg3OWVmMjc1NWJiMzE0YjUyZTQwMzUzYjljNTcwYTUwMCByZWxlYXNlMjEtbWFpbnQKKzI1MDM1IDA2OGU4NzNmMDkzMmFhYmFiMzc4NDZkZDM4M2U0YzI2NTgwMzEyNGMgcmVsZWFzZTIxLW1haW50CisyNTAzNiAwOGEzYWE5NTEyZTk4MmIyMGFiODQwY2M2ZGI0OGEwMzE1ZjQ1NGUwIHJlbGVhc2UyMS1tYWludAorMjUwMzcgMjk5OTY4YzI3OWI5ODBkNzMxMDZkMWM5MjE4ZjU0Y2I3OTAyYTA4NCByZWxlYXNlMjEtbWFpbnQKKzI1MDM4IDNhNTUxNTA1MGI0MzZiYzUyM2Y2OTNjMTcxNTE2YzhhZGRjZmM2N2UgcmVsZWFzZTIxLW1haW50CisyNTAzOSBhMWQ2Y2Q5N2UzMTk2M2NlMmVmNmFiOTMxMjBhNzAwZTI2OGY4MmM0IHJlbGVhc2UyMS1tYWludAorMjUwNDAgZWRjMzUzMmZiMmI4ZmQwZmZkNjEwNjE5ZTQ4NmZkYWEwYzBhODNhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDQxIGM0ZmU5NWZlYTNlNmZmYWZmMDJkMmM5Yzc5ZjJiN2IxYzg4YmVmNDMgbGVnYWN5LXRydW5rCisyNTA0MiBkMDVlYmJkOTY1YTM3MTI1Zjc0NzE1ODQ2Zjg2NmViOWI4ZjAzY2MxIHJlbGVhc2UyMi1tYWludAorMjUwNDMgMTE2ZTMyMThhN2NhNjA3YThlMjc3Yzc3MWFlMDRlYWJmODQzZTNjZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ0IDhiMjQ1Mjk3YzE2NmU2Y2MyNTZjYzJmMDNlMzhkY2E4ODIxMDg2YzMgcmVsZWFzZTIxLW1haW50CisyNTA0NSA1OTE1ZDQ1YjgwOTg0MTZmOThlMWZiNzI0OTA0MzU5MjFiOWQxNTFlIHJlbGVhc2UyMS1tYWludAorMjUwNDYgYTQ5YTY1YTk1ZTM1Y2QzNjljYzhlNmEzZGZhMjkwZmUxMWQyNTNiZSByZWxlYXNlMjEtbWFpbnQKKzI1MDQ3IDFlZGY1ZWQxYWYwODFhMDI1NWQwZTgxZjViOTNjYTg4MDM5MjI2MWMgcmVsZWFzZTIxLW1haW50CisyNTA0NyBmNzZhNDI1YjE0ZTRlZThhZGU1ZTkyMzk1OTg1Mzg1MzRiM2E5MGE0IHJlbGVhc2UyMS1tYWludAorMjUwNDkgM2U3OGJmMGUyYmU4ZDJkZGYxOTI2YmRkYzNjMjM4NDVmZmJiY2YxMSBsZWdhY3ktdHJ1bmsKKzI1MDUwIGRiMmMxMjgxMjVmNDU2OWFiOWJkZGJmMGFiYThhZDhmMmJiOWM1NmYgcmVsZWFzZTIxLW1haW50CisyNTA1MSAxMGQxZDdkNjM1ZDQyMmVmNzRhNGQ2M2JlOTU5MjcyMTc1YzNlMWFiIHJlbGVhc2UyMS1tYWludAorMjUwNTIgMmYzNjQ4NjAwZTYwMWZkZDk5NTljN2E0NTM5YjY0ZmVjYTY4YTA4NSByZWxlYXNlMjEtbWFpbnQKKzI1MDUzIDdmZTNlNjFhYmNlM2VhODJjMmQzYjQ5YWFmMjZlMWFhMTg1ZjhhOTAgcmVsZWFzZTIxLW1haW50CisyNTA1NCA1YzYyZWZiY2U0ZmEwNjFkZGRjODg2MTkzYzJlNjY2OTU3ODJiMTBlIHJlbGVhc2UyMS1tYWludAorMjUwNTUgZDc0ZGM0MDY2NDE2ODkyNDkwMjdlYzdhYWM3M2MyMjBlMTQ4ZTFjNCByZWxlYXNlMjEtbWFpbnQKKzI1MDU2IGFlZGQ4NTE4NzQ5NjQ4N2ViOTFjNzRiMWExNzI0YjI1NDBkMDYyYjkgcmVsZWFzZTIxLW1haW50CisyNTA1NyBjZTM1ZTU3MGZmYTIxZWJkYjA3NDdjNmM0OWZiMTM5ZGE3NjE3NDc1IHJlbGVhc2UyMS1tYWludAorMjUwNTggYTBiMzUyZTc2ODYyZGYwYzg5OTViZGI5ZTU3NWU4MGEyN2VkMzFmOCByZWxlYXNlMjEtbWFpbnQKKzI1MDU5IGVhMTc1NWQ3M2U5MjFhYzkwYTYwM2ZjMmUyZjZjNzgwODNiYTM1OTkgcmVsZWFzZTIxLW1haW50CisyNTA2MCAyZTIyODQ2MWEzOTFiMThkNzk2NWM1OTNjNGM5YzZhODJhNDNmNDFjIHJlbGVhc2UyMS1tYWludAorMjUwNjEgMzJjMWMwYWZjZjk4ZGM0YzdkNzg1NjQxYjZhMGYxY2M4NzdiMWRhNSByZWxlYXNlMjEtbWFpbnQKKzI1MDYyIDNiNTRjNDQ1MjRlYjYyNDM0Mzk2NjMzOWE1N2VmMjU3YmI3YWQ2NTggcmVsZWFzZTIxLW1haW50CisyNTA2MyA0OGVjZDYwNjFlODhkMGRiZTkwMmNlNjczYzcxNDNkOTFiNTM0NTNlIGxlZ2FjeS10cnVuaworMjUwNjQgNDAyNzM2MWU3OTU2YTIxZWZmOWYwNGIxMDgwODQ1NDhmMTg2NTQzNiByZWxlYXNlMjItbWFpbnQKKzI1MDY1IDc1MzFjYzU5MmU0NjNhMWY4NDBlZGQ1NzY0OGEwZTNhNjc4ZTI5ZGYgbGVnYWN5LXRydW5rCisyNTA2NiA0YTVhMDEwYzhmNDQ0Mjk5Nzk2YWRlNWRlMDVkYmE3Mjk4NGI3MjY1IHJlbGVhc2UyMS1tYWludAorMjUwNjcgYWE4M2ZlNmU5YzRmNWRkYzRmZTQxYjczYTExOGFjZTQ2YTU0OTJkNCBsZWdhY3ktdHJ1bmsKKzI1MDY4IDNiNzMzMjViMzJlNTk0M2ZiNDE3ZDU2ODY2MWRhODc3ZDQxZGJmOWIgbGVnYWN5LXRydW5rCisyNTA2OSBhNmEzMWM1NWExNmQwNTAwODhkMzdjNzU1NGFiYWFjNjkzMzhjYjhmIGxlZ2FjeS10cnVuaworMjUwNzAgODY2NjE1ZjBhZTJhNzI1OGQ2YjA0NTFmZWZkNGNiODFhOTdkZmY0ZSBsZWdhY3ktdHJ1bmsKKzI1MDcxIDNiZTQwZDNhZmY5NDVmNmE5MDM4YTM2ZjYzYWRjYmEzODE2YmUzZDYgbGVnYWN5LXRydW5rCisyNTA3MiA0MzczOTNlNzgwY2JmZjNkMzJlYTk0NDAyNDFjNDBhOGVjNDdmMDcyIGxlZ2FjeS10cnVuaworMjUwNzMgYzY0ZmM1NmY2MDcyNWY4OTI4MjgxZmNkMjRmZmEwYjk5YzBjY2YyOCBsZWdhY3ktdHJ1bmsKKzI1MDc0IGUyMjMzOTdiMjZmYTVhMjY1ZmRmMzQ5MmZmYWNjZWY4MGNlYTQxNTIgcmVsZWFzZTIyLW1haW50CisyNTA3NSA2MzAyOTNiZTEwMzU2ZTFiMDYyNzM1NmE0ZTc2MjM2OTc2Y2QyZmFlIGxlZ2FjeS10cnVuaworMjUwNzYgNGM2YzEzYWE4YTk5NzUyOWY3MDYyOGM1ZmY2YmNhNzU1MDFmZDY1NCBsZWdhY3ktdHJ1bmsKKzI1MDc3IDRlYWU2NmJlMWQyOTFiYTI3NDU5YWI2MTg3NmQyOGFiYzlhMzk0OTUgbGVnYWN5LXRydW5rCisyNTA3OCAxZDkxODIwMTI4YTFjOTljYTA4NDQ4ZTE5Njg5MjAwNjZkMDMzN2E2IGxlZ2FjeS10cnVuaworMjUwNzkgODFhODNhNjUyNDZkMzAwNmM5NjdhNGM1MjQ3Y2RkZTc4ZTM4ZjUzOCBsZWdhY3ktdHJ1bmsKKzI1MDgwIGVjNmI2N2QyODAzZDJmYTIyZGMxYzJlNWY4YjczNDA0MzAxNzJjZjkgbGVnYWN5LXRydW5rCisyNTA4MSBlOTkxOTgyMzRkOTZkMjRkNTRiNDkzMGNmOTA3MTFiMzhjY2RhNGRjIGxlZ2FjeS10cnVuaworMjUwODIgMjVlNDRhMDEyNWU0NTdjNmFmNjZkNzQ1NDZmNWI2NmU0N2ZlNjRhNCByZWxlYXNlMjEtbWFpbnQKKzI1MDgzIDllMTczY2IzNWI2ZGZkZDczZWQzNWIwZDFkZDYzNDJlNGI5M2Q5NTAgcmVsZWFzZTIyLW1haW50CisyNTA4NCBlYmU2YmQ1NzZmNjVkOWI4YWVlMDhjMjg5MTQzZTNjZDI4ODY2NWFkIGxlZ2FjeS10cnVuaworMjUwODUgODg0ZTU3YmYzYWRhNDEwNzNiNmU2ZDc5MThhYjhhZTIzMjA4OTNlMyBsZWdhY3ktdHJ1bmsKKzI1MDg2IDVkMmJmYmQ0N2YxYmUyYTAyYWZiMDIwNTI3ZDJjYWNhMTlkNmJhMjggbGVnYWN5LXRydW5rCisyNTA4NyA2Nzc2MWQ1YjRhZTZhMmVmMTU3MWRmN2Q0NjlhNTJkMGZlNTQyYzJjIHJlbGVhc2UyMS1tYWludAorMjUwODggNWEzMjlhMjU3MTk3Zjk1MmM2ZGRmNmRhN2M0NmRjYTg2NWUzYjA2MSBsZWdhY3ktdHJ1bmsKKzI1MDg5IDU0ZWNjYzVkMjJkZDI3NDFlZjg5ZjgwZTAwNTY4NTNlOWE4ZTYyMjYgcmVsZWFzZTIxLW1haW50CisyNTA5MCBlNjU0NzViNGYzY2Y4YjU4ZTY5OTRhNGMwYTlhYWFmNjc5ZTc4MjM3IHJlbGVhc2UyMS1tYWludAorMjUwOTEgM2UyNmY1ZGFjYmJlNjYyZjEwYjU5Y2Y4Y2M2MWY0M2YyNmM2M2E5YiByZWxlYXNlMjEtbWFpbnQKKzI1MDkyIGQ5NjMxODQzODExODcyODhkZjg5Nzg0MWYwNjZmZjY3NTlhNmFmNTMgcmVsZWFzZTIxLW1haW50CisyNTA5MyAzMWIyNTAxNDE3NGJkNmM4NDgyNDNjZmFkY2U5NDY2OTQ1ZTJkNzc5IHJlbGVhc2UyMS1tYWludAorMjUwOTQgZGNjYmQ3YmI1YmQ1Yzg1MTUzMzNlY2Q5Njk3NGY4ZjA5Y2VlOTI5NyBsZWdhY3ktdHJ1bmsKKzI1MDk1IGMzYTg2NDhiZjA5N2FiNzAxMjhiNGZiMWZlYTk2M2RjN2Y3NWIwNDcgcmVsZWFzZTIxLW1haW50CisyNTA5NSBjZjMxYjEwZTQ1YjQ4NjE1MDk0Y2FlOTBlM2M1YmQwNzI1ODdkOGU2IHJlbGVhc2UyMS1tYWludAorMjUwOTcgYmE4ZGI5MGVlZjRlY2FhOGExZmNiZTQwM2E2ZTNhNDhiMDg0NWRkYiBsZWdhY3ktdHJ1bmsKKzI1MDk4IDMwYTgxNzAzOGFmMGY0YmQ2ZGI2ODlkZDMwZDY2NTIzOWQyODg0MTkgbGVnYWN5LXRydW5rCisyNTA5OSBjYTFiNjdmNWEzZWNkOGY0N2I2M2E0NzdjYzVjZTAyZTlkZTRkNDZlIGxlZ2FjeS10cnVuaworMjUxMDAgMmI1NmFmNjlmNjdkZWQ5ZjY4NGZhMzM2ZGI2ZGY2MzgzZGI4ZTg3YSBsZWdhY3ktdHJ1bmsKKzI1MTAxIDhmNGNjODIxYWZhYTcyODNhNWU4ZTgxM2ZiMjU3NWQ5NTNmNDNmMjggbGVnYWN5LXRydW5rCisyNTEwMiBlYThjODQwMGE0YzhkMDBlNzRlNzRhYjRlMTgzZTFjZjYwZGY1YWI5IGxlZ2FjeS10cnVuaworMjUxMDMgOWQ1YWRmZjg3ZjMwMDIwYWEyYmQ4YzM0YjM3NTQ3YWM4NTBjM2EwYSBsZWdhY3ktdHJ1bmsKKzI1MTA0IDM0Zjg1YTBhN2ZhYWRjYjdkY2ZkOGRkOGVjNmFmMjBhYmM2OWUwYzUgbGVnYWN5LXRydW5rCisyNTEwNSA1M2ZjNmVjOGE4Mzc2MDViMzFmYzgwOTg3MzdlNzNlYjEwNTBjOTM3IGxlZ2FjeS10cnVuaworMjUxMDYgMWI3ZWMzOTVkMzkyNGY4ZjI5ZjU0ZGU0N2EzNzEwMmNmYjNkOTI5YiBsZWdhY3ktdHJ1bmsKKzI1MTA3IDQ0MmVmZjI5YjQ5ZjdiMzM2MzhmODMwNWIxZThlNzllMzZiMWNlNzggcmVsZWFzZTIxLW1haW50CisyNTEwNyBkODIzZmMxMzVlOTBlN2JiODQ1OTE1Y2VjOTAyNzdlYmZjZDJjOGQzIHJlbGVhc2UyMi1tYWludAorMjUxMDggNzQyNDZhMmQ5OTYyMjNlYzFlZTFkZWM5YTc0NmE4N2M5NzFlOTI1MyBsZWdhY3ktdHJ1bmsKKzI1MTA5IDY2MDVmMDc2Zjk1YTJkMDU2YzIzYzBjOGVkMTFlODc3NTJhZGFkN2MgbGVnYWN5LXRydW5rCisyNTExMCBjNGY3MmI0NzIyZGE2MzRkMGM1MTdlMDRkZTQzNGJiMmRlNmMzYTkyIGxlZ2FjeS10cnVuaworMjUxMTEgOWMwYTBjODk3NzNmMTgyYjAwNjU5N2VlOWY0OGFkY2ZlMTBkNmViYSByZWxlYXNlMjItbWFpbnQKKzI1MTEyIDlkNzcwOGRkY2ZiOTk4ZTI5NDkwMjU0MmViYzA1ZTM0MzZjZjY5NzggcmVsZWFzZTIxLW1haW50CisyNTExMyAxOWQ2Njg3NTFiMWVhZjAzNDMwMDgwNjZjNWUzY2I4Mzk1OWU0ZjQ0IHJlbGVhc2UyMS1tYWludAorMjUxMTQgY2ZiZGU4NTE5ZTUwMGUxMjMwYTNlNjc0YjNkMDNlYWUzMTkzMmU1MSByZWxlYXNlMjItbWFpbnQKKzI1MTE1IDBlZmY5NjFhMTViNTM4OGVlYjUzMWU0N2I5ZDM5M2RkZmUyYTk4NmEgbGVnYWN5LXRydW5rCisyNTExNiBkNjAzNTBkNzFiNjA1ODI4ZTViNjA0NGZmNzE4YjFhYzk5NzNhYTgzIGxlZ2FjeS10cnVuaworMjUxMTcgNDA2MzFhZTc0YjE3YmJhMjA1MWM4NzRiOTU5MmRlZTdmNWM0MzMwYiBsZWdhY3ktdHJ1bmsKKzI1MTE4IGNiNDBhY2E0MTg4OWNlNzczODVmNmY0NjhlYjkzOWVmMGQyMWZhYWYgbGVnYWN5LXRydW5rCisyNTExOSA3MjMzYjg2YmU2NTZlMzlmOTRlYTkyZjYwYjAzYTE0MjdiMWI1OWY5IGxlZ2FjeS10cnVuaworMjUxMjAgZGJiNzAzZWI2YjNkOWI0ZTBhM2VmYzhkMTdkYTk2MjFiMmUwZmI0MSBsZWdhY3ktdHJ1bmsKKzI1MTIxIDFhMjZkY2RmYjZjYzlkZWUzZDhkMzA5NTc1OWVjMmJlOTA0MzlhMzMgbGVnYWN5LXRydW5rCisyNTEyMiBhMWIwNjU4MjkzYTcwOTkxM2I4MTM5NGQ5NjUyMjVjYmJlOTMyMDVhIGxlZ2FjeS10cnVuaworMjUxMjMgNjUyZGM1MWI1ZjgzMjE4N2NiYWQwNzM0ZmY4NDBhZTE2NTFjODJjYiBsZWdhY3ktdHJ1bmsKKzI1MTI0IDAxMTBhMDk4M2U2MTkzMGNjMTA1ZDFjNDYxNzg0ZGY2ZjdiNDg1MTEgbGVnYWN5LXRydW5rCisyNTEyNSAzNjg1NjE1ZDIxYjMyN2Y1ODExZTY4ZDEyM2YwMjk3ZWMxNGEzNjY0IGxlZ2FjeS10cnVuaworMjUxMjYgOGIxMTZhODQ0OWJkNWVlZGZjODJjZmU3NjNkMmEyZDMyN2M3MjI5YyBsZWdhY3ktdHJ1bmsKKzI1MTI3IDhhMmNkMWMwYzEzNTRlYzhmYWQ2YjM4ZjIzMzVjMDBiODhmYTA0NmYgbGVnYWN5LXRydW5rCisyNTEyOCBlMjI3YzhkMDNkNmQ4YzI0ZDQ1NGM1M2E3MTYzMWRhNGZjZDA5NzI3IGxlZ2FjeS10cnVuaworMjUxMjkgZTZkNWM0Yzc0NWJjMDEzYzRmYzYzMTA4OGM1M2ZiMzE3NDQ1YTdiOSByZWxlYXNlMjItbWFpbnQKKzI1MTMwIDU3ODdmYzQ4YzJiNTVhNTA3MThhYTQwNmRmNGEzOTFiNjE4ZTA3ZjIgcmVsZWFzZTIxLW1haW50CisyNTEzMSA4ZTY3ZDkwMzViNjk5YWJiYTIxMTgxMmM1NTNiNjVlMmQ5ZGExOTViIGxlZ2FjeS10cnVuaworMjUxMzIgZWM3NTBlMzc2NzFiZTNlYjUyNWVkODhlZDE3ZTlkNGE5ZDU4MjAxZSBsZWdhY3ktdHJ1bmsKKzI1MTMzIGQ1YTM4YTMyZjc4YjUwY2M4NTg4ZWNjMjQ0NWE0MjM2N2M0ZTU1ZmEgbGVnYWN5LXRydW5rCisyNTEzNCAxZWQyNjhlYTJkMjYzMDM5MzM2NTFjNmYxYzEwMjFlNWU2OThjMTRlIGxlZ2FjeS10cnVuaworMjUxMzUgMTZjYzUzODQwMWIzZjA4MmRkZDhmZDU2N2U3ZDVhMjNkMWY5ZGIxYiBsZWdhY3ktdHJ1bmsKKzI1MTM2IDliZWMxODNmZWZmZjYxY2VkM2NjYWQxYzA1ZDZkM2YxNjBiMzk5ZWUgbGVnYWN5LXRydW5rCisyNTEzNyA2MzNlNjQ1NjRlZGZhMWFiYzVjYTJhNjU2ODYwOGZlYjE3OWI5ZjBhIGxlZ2FjeS10cnVuaworMjUxMzggZjg4NzM2MjVkOGY2MDRiNmZiZjU4M2QxZTMzMzM5Y2YwZTE5YzViMyBsZWdhY3ktdHJ1bmsKKzI1MTM5IDZmOTU4ZjQ5OWI0Mjk1NzA1MzY0ZTVjZWZiZjVjMTRmMGVkY2EyMDAgbGVnYWN5LXRydW5rCisyNTE0MCAwZmU4NzU4NjZkNGVmNTY4NjI1NTM4MWQ2YmJhNTg2NDNhNThmYzgyIGxlZ2FjeS10cnVuaworMjUxNDEgZGExN2ExMGUyZjIzMWM5MjA3NjU5NDJlYjViMjdhMTA2MWE0Y2IyNSBsZWdhY3ktdHJ1bmsKKzI1MTQyIDNlMGRiOTg0YmQzZTMwNGM3N2FlMTliM2EyY2RmOGZlYzg3YmVkNDIgbGVnYWN5LXRydW5rCisyNTE0MyAyYzY2MTdmMjcwZTJjOTJkYmJjZjAxZjBkMjFjN2RiNjQyMmNlZjZiIGxlZ2FjeS10cnVuaworMjUxNDQgNWE1ZDk0YzQ5OTc1MGUzZDNjYThjNTk0MzY4ZjVkZWI0NmIxNmYxYSBsZWdhY3ktdHJ1bmsKKzI1MTQ1IDZjNWMxMTJkNDUzMzliZDc3Mjg1M2JmODk5OTljZDFkODlmYTYxMjYgbGVnYWN5LXRydW5rCisyNTE0NiAxMzgzZTZmN2IxMWY5OWQ3NDM2OWVlY2I5MDNiMjkzYjUwMmJmNmMwIGxlZ2FjeS10cnVuaworMjUxNDcgM2VmN2JlZDAwN2Y2ZWQzN2MyOTY5OWY2NGNlYzAzZDg2NzdkYTQwMCBsZWdhY3ktdHJ1bmsKKzI1MTQ4IDA1ZmFiZDhmNGU3ZjhkNjVmM2QxYjBhYTUzMTVhZjk0MmE0ZTIwNjIgbGVnYWN5LXRydW5rCisyNTE0OSAxOWUwYTkyZTMyNzc3ZWQ2ZmE1ZGMyN2NmYmY5ZTg4NzFhNzVlZGZiIGxlZ2FjeS10cnVuaworMjUxNTAgNmE4YzQ2ZDgyMTJiYzY3YjI5MmU2OTgyZTc1NDE0NjcxMWYyOWFiMSBsZWdhY3ktdHJ1bmsKKzI1MTUxIDk1NzYwYWIxMTg3NTVmNTcxZmIxZGM5ZTQyM2I5NzhjOGFhZDQ1OTcgcmVsZWFzZTIyLW1haW50CisyNTE1MiBhNjhiYTc1NWQ3MDBlNWUzMWFjZmVmNDE4ZmYyM2ZlNTNjMjhkZTJiIGxlZ2FjeS10cnVuaworMjUxNTMgY2UxMGE3Zjk2N2U1YTdiZGI2MjRlYzczZDY0MDhhNWQxMzU1OWI0ZCBsZWdhY3ktdHJ1bmsKKzI1MTU0IDQ4M2Y1ZjI3MmRlZmM2ZjQ3ZTQ5OWMzZjY5Yjc2NmJjMWUxNzQ2MDMgbGVnYWN5LXRydW5rCisyNTE1NSBjODg4NjIwZTgwNjJjN2M3ZDBmNTA4YjAyMThiMzM5YTM3Y2E3MGJhIGxlZ2FjeS10cnVuaworMjUxNTYgMjZhNTRkM2Y1NWU0N2ZmMzU0NzM0ZmEwNjVjNTljM2VmY2E3YzU3MCBsZWdhY3ktdHJ1bmsKKzI1MTU3IGU3ZDhhOWRhM2IxODA0MGI3ZjMxMmRiMzZkODhmZDRkZjIzYTM4MzUgbGVnYWN5LXRydW5rCisyNTE1OCAwM2EyYmE3NDE3OWI5ZjE1ZjBkYWM3M2JiNzRhMGIxYTUyYTA4MjFjIGxlZ2FjeS10cnVuaworMjUxNTkgYWRjYzE0MTQyNDMyZTgxNGUyMDc1NWFjOGQzYWVmMDU0YzNkZDJjNSBsZWdhY3ktdHJ1bmsKKzI1MTYwIDI0MDk4ZjRmNjgyZWQxNmZlZjE2ZGZhMjI5NTJiZmU3NWQ3ZmFhMGIgbGVnYWN5LXRydW5rCisyNTE2MSBmYTMwNTFlMGZkOTMyMTIwOWY3ZWE0NjdjNTc0OTgwODI4Y2FiMTQ4IGxlZ2FjeS10cnVuaworMjUxNjIgMmM4YjAzZWQzOTA2M2E0ZTMwZmUwNTU0ZmU3Njg0M2FhNDU3ZjY4YSByZWxlYXNlMjItbWFpbnQKKzI1MTYzIGUwZGJkMTc1NGFhOTA4YzE3YzE1ZjhlMzc1YjhiNmFhMTJjOWMwNjcgcmVsZWFzZTIyLW1haW50CisyNTE2NCBhYWU5NzdjYTU4YTNhN2IxZTEzZTE0MDIzNzZiOGJiN2UyNDMwM2IxIHJlbGVhc2UyMS1tYWludAorMjUxNjUgMzQ1YjkyZWQyYTNmYjdhYTJmYzlhNTQxZDRkYzk0NTZmYjU4MzVlMyByZWxlYXNlMjEtbWFpbnQKKzI1MTY2IDkyNjBmNjk0MzJhOTNjOWE3ZDRhZmQyMmU0YjE5NWMzMjRjNjEzNDggbGVnYWN5LXRydW5rCisyNTE2NyA1OWQwOWJhMWY3ODJjOGY4ZWFmM2FlMTdiNjA0NWZmYjg3MTU2MWExIGxlZ2FjeS10cnVuaworMjUxNjggNjNjYmE0MjNmYTA0MGJmMTA1ZjJjODhjOGIxOGU1MzA3MmQxOWRjNSBsZWdhY3ktdHJ1bmsKKzI1MTY5IDc0NDE1MzNhY2EzYmI5YmY2MDUzZmU4YmY5MWQ5MzZjNTE3ODk0MmIgbGVnYWN5LXRydW5rCisyNTE3MCA3YTExYmZjNjYyMTQzMTcxMzdmMzU2MThlZTBkNjQ1NTlmMWNjM2ZmIGxlZ2FjeS10cnVuaworMjUxNzEgNDQ0NTkxYWZmZDBlMDNjYzMwNmM2YzY2MzQ5YzY3ZjRmYzViZDM4OCBsZWdhY3ktdHJ1bmsKKzI1MTcyIGZmYzQxMTZlYzExOWY4YWJjZDliZjllZmI2YjcwYzAzYWQ0MTc4NWYgbGVnYWN5LXRydW5rCisyNTE3MyBmM2IwZTNjYjM0MGIzMDIxODkxMDkzM2M5YjljYTE4MDYyYWM4YjkxIGxlZ2FjeS10cnVuaworMjUxNzQgMDVlNjMxMTFjMzEwNmUwZDliYTNiOTg1ODhmMzYzMzYxNTQxNzQyOCBsZWdhY3ktdHJ1bmsKKzI1MTc1IDkwNTIxM2UyODY3NzU3MTNjZmYzZTZiYWE1Y2VkODMxMjVmYjI4MDMgbGVnYWN5LXRydW5rCisyNTE3NiA5NjljZTAxN2JkM2ExNzViNTUwNTQ1NjIxOTk1ZWJhYjM2YTQ0MzczIGxlZ2FjeS10cnVuaworMjUxNzcgM2E3MDc1MjBkZTMwOTNlN2Y4MWE5ZjgwMDBjZDNiYzFjMDA0YzU3YyBsZWdhY3ktdHJ1bmsKKzI1MTc4IDkwYzFmM2YzN2RhZTQ2YTg1ZmU3MmY2YjEwYmZmNjE3MWRmNmI4MjkgcmVsZWFzZTIyLW1haW50CisyNTE3OSBiMTJkY2QyNzZkYjBmZDIzZTllZTlhMDc5ODEzYTBiMjFkZTI0ZmIzIHJlbGVhc2UyMi1tYWludAorMjUxODAgYTRlNDczNjc5OWIxOGYzNjlmN2ZjYjIzZWJlMDllNTRmMTJjM2ZlZCByZWxlYXNlMjItbWFpbnQKKzI1MTgxIDFkODZjZGIxNzI5MTYwOWVkMGVkYzMxMTBmNTMyMzI1YzRmZDdkOTAgcmVsZWFzZTIyLW1haW50CisyNTE4MiAxNGRhN2RkMzdjOTRlNmE2NDhiMjgzNzkxYmVmNmVmZjI0OTEzNDVhIHJlbGVhc2UyMi1tYWludAorMjUxODMgZGZmMjI4YWQxN2I5ODM1MjVhMzc2NThkZmNlODEyOWVjYWUxYjQyMSByZWxlYXNlMjItbWFpbnQKKzI1MTg0IDZmNDU1ZDQ5MTg3MTVmMzcxOWVmN2Q4M2Q2MjE5YzAxMTViNzlkMTUgcmVsZWFzZTIyLW1haW50CisyNTE4NSAwNmY4YTgyMWI2ODNjZDEzNTU1YzhlNThiYzFmODBhOWZkYzMzNzMyIHJlbGVhc2UyMi1tYWludAorMjUxODYgN2U3OTY0YzY4MmI1NjIzOGZjYmQzMzM4OTc3ZDYyNTJlZDE2MWRhNyByZWxlYXNlMjItbWFpbnQKKzI1MTg3IDdiYTJhOGMxNjJmYTI2N2E3NzNhMTUxYjMxMjA1NWM5MDUzNGY4MDQgcmVsZWFzZTIyLW1haW50CisyNTE4OCA5YjQxNGRmNDhlMTQ3ZTk1NzQ0NDIxYzYxODY1NmM1ZWNmOGM3NzNlIHJlbGVhc2UyMi1tYWludAorMjUxODkgNzMxYmViNjdmZWM5MDE3YTkyNmIyNmY5YTZmMmI1OTA0Mzc0OGUwZiByZWxlYXNlMjItbWFpbnQKKzI1MTkwIDVjYWVhMmIxMzJjYTE4NWUwN2UwYmZmNTBkOTNhNzM2YWY5MTk2MjUgcmVsZWFzZTIyLW1haW50CisyNTE5MSA0ZjU0ZTlhMjk3NmU2YzIyMWNkNjA2YmZhOTZjNzAxMGE4ZmMzZjk1IHJlbGVhc2UyMi1tYWludAorMjUxOTIgYWE3MTNjNGM0OThkZWRmM2RiMjBmYTU3MTdkMDI3ZGFhNTlmOTc2NCBsZWdhY3ktdHJ1bmsKKzI1MTkzIDA3MGQzOTIwNDJlM2VlZjY3MDJjNTE4NzhiY2VmMzM3MmVkYjhhMjUgbGVnYWN5LXRydW5rCisyNTE5NCBjMWQ1NWE2Mjc4OTc3NDAzNzdjZjFlN2YwYzA5ZWExNGNjZGQ3YjM3IGxlZ2FjeS10cnVuaworMjUxOTUgZjM3OWJjMGM1ZTNmYzk3MjQ3M2M2M2UyOWIxZTVjMWQ0OTY4YzQ0ZSBsZWdhY3ktdHJ1bmsKKzI1MTk2IDZhMWU3NGFkZjhkNmNlYzRkMmMxMTI2Njc5NjY1ODE5ODdhOTAwOGMgbGVnYWN5LXRydW5rCisyNTE5NyAxMWNjMDU5ODU3NGQ4MTg0NWYxOGMyZGJmY2VhMDMyM2ZmZmY1M2FiIGxlZ2FjeS10cnVuaworMjUxOTggZmMxMGU3MDIxOGQzYmUzYzI1ZmNhMzM4OWUzNzQ0YzVhZDkxZjYzMCByZWxlYXNlMjItbWFpbnQKKzI1MTk5IDVlNjdhZDc2YzcyZmRhZGJjOGE3MTQ4MDk5OTQ0YWY3YmM3NjY1N2YgbGVnYWN5LXRydW5rCisyNTIwMCBmZDQxODRkYTA5ODMwZjZkY2IwYjUxZjZhMTQzMjYyMWVlYjE2MTllIGxlZ2FjeS10cnVuaworMjUyMDEgNGIzYjA2ZGUwMmEzMTE1YmMwNDA4ZTVhZjU1YzM2NzY0OGVkMzE5NSBsZWdhY3ktdHJ1bmsKKzI1MjAyIGZlMmI2NGZjNTdhMGEwZTQwZmNhZTg2MGU0YTJiOGMwMzdkYjQ1NjUgbGVnYWN5LXRydW5rCisyNTIwMyA0M2Q5YzJmOWEyZjZiYzAyMTczNWQ5MDYyM2JiYWU4ZTc0NjM4NjVjIGxlZ2FjeS10cnVuaworMjUyMDQgNDhiNTlmYTZmNjQ3MjJkNWVjZmM3NThhMWM0ZmM1MTQxMWYyNjg4MyBsZWdhY3ktdHJ1bmsKKzI1MjA1IGE5M2E3YmNiYzM4NmZkNjg3OGFkYTQwYmIyNmQ5YTVkNTY3MGNlYzggbGVnYWN5LXRydW5rCisyNTIwNiAyNmI3NThjMDBmYjYwNjQ1MzExMTZjMTEyY2I4MWRlZjQ4N2NmOTUyIGxlZ2FjeS10cnVuaworMjUyMDcgNDU3MzFmMTM2MGVlY2UyNjViOTJmZjM1OTY4NWQ1ZmM4ZWQxNDMwMSBsZWdhY3ktdHJ1bmsKKzI1MjA4IGZkNDI0ZjUxOWE4ZWJlODNlODYwMzgzZTE0OTVmZDU3NTA1NWU0YTEgcmVsZWFzZTIyLW1haW50CisyNTIwOSBmYWFhZWI1MzVkMzkyZTdlMGRiYWZiZTM2ZDQ2YTVjODY4NzZiMjEwIHJlbGVhc2UyMS1tYWludAorMjUyMTAgMGQwOGNiODQ5NTExODA4YTM5ZGViZmRlZGU3N2Y4ZDM2NGZiNjRiMCBsZWdhY3ktdHJ1bmsKKzI1MjExIGUwZmMyODZkNTdhNDZjZDZhNzg3YWE1YjkxZTE5ZmZiMmE2NGFlZjYgbGVnYWN5LXRydW5rCisyNTIxMiA5ZTM4NGYxMDMwNDcyMTA4N2VmNzViMWQxZjk1NjgzMmI2OTI1YTlmIGxlZ2FjeS10cnVuaworMjUyMTMgNjU4M2M5NWNmNjkyMjQyZGIxMzlmY2QwZGFiZDliMDhiODU5MGQzYiBsZWdhY3ktdHJ1bmsKKzI1MjE0IGM0MzNkZTE3YzE1ODNhYWE3ODI4ZWM4ZDZhMDU4Yzk2ODQ3NjFiNzYgbGVnYWN5LXRydW5rCisyNTIxNSAxZjJlOTI4NTAxODg3Mzg4ODlhYzNiMGQ5MDVlZmEwMjZjMmU4MzVmIGxlZ2FjeS10cnVuaworMjUyMTYgMmY2MTY0NzRlYWVjN2RmNWFiMThjNTczMzYyOWNjMmQwODlmNmNjZCBsZWdhY3ktdHJ1bmsKKzI1MjE3IDljZmY4OTBiNGZiMDc2YTgzNTFmM2RjYWYwY2U2NzA2ODRkNmUzMzAgbGVnYWN5LXRydW5rCisyNTIxOCBkNTIxY2YwODk5YzgwM2I1MmIwZGFlZDQ5YjdlOWQ4NTg3YjcyMTU1IGxlZ2FjeS10cnVuaworMjUyMTkgNzY2MDdhMGM2OTU2MDhmNTc2MzA0NDMzODZjNDY4NDFkMzRlYTFhNSBsZWdhY3ktdHJ1bmsKKzI1MjIwIDIwYmM0ZmYxMjE1YzBmZTcwYzg3NDAxNDBiY2ZiNDc0Mjk0ZGQwNjcgbGVnYWN5LXRydW5rCisyNTIyMSBmNWFhYjhlYjgxMjQxNTdiMmRmYzk4YTUyYWFjYWI2ZDAyMTQwYmNlIGxlZ2FjeS10cnVuaworMjUyMjIgNTNhYzgyODQyMTdhZmQxZmE3MzNjZjIyOTVlMzM1MTcxMTgxMTMyNyBsZWdhY3ktdHJ1bmsKKzI1MjIzIGNiZjQxOTI1ZGQzZTkzMTcxYjBkZDkxNjFhM2ZmNjBkYmFiODZmN2MgbGVnYWN5LXRydW5rCisyNTIyNCBmNzA4YTkwN2RjNjkxYTdhY2IzODc0NDE2NDBkMzRhNmFjMzZhZjE0IGxlZ2FjeS10cnVuaworMjUyMjUgNTNmZWNjOGRkNGM5MDVjY2M3NzVhZTM0YmRhYzU4MzcyNDcwOWVlNCBsZWdhY3ktdHJ1bmsKKzI1MjI2IDZmNjJkNTFjOWMxMjgxOWFkMzM4ODg2ODliMzliYTBjOTNmZGY5MjQgbGVnYWN5LXRydW5rCisyNTIyNyBkYTAwOGI1YzUwMzVlYzA1ZGI1Mjg5MTEzYTQzMjVkYzdlY2JjOGVkIGxlZ2FjeS10cnVuaworMjUyMjggM2NkMGI0YmI1ZTM0ZDI0OWFhYzM4MTc5MzU3MzE5YzRjMTlkNzlhYSBsZWdhY3ktdHJ1bmsKKzI1MjI5IGI1ZDAwMmU5MDgyN2UwNmZlN2RiMWJiNTA5MzIwMDkxNjg4OGI2MWMgbGVnYWN5LXRydW5rCisyNTIzMCAwNDJkYjAzODJjZDNiODMyZjVlY2VhY2VkZTZjMzYzMzE1ODZkZDliIGxlZ2FjeS10cnVuaworMjUyMzEgNTA0M2I3MzhiMDcyMGMzZjBlMDRjMjc1MjY4MGU3ZjI0NDllYmM3MiBsZWdhY3ktdHJ1bmsKKzI1MjMyIGVkODYxZTBkNGE3MWQ0ODY2Y2U2MTUwMzA4YTQxYjczNDBmYzc2OGQgbGVnYWN5LXRydW5rCisyNTIzMyA4NDRmZTcyNWIxY2Q0MzEyOGZmNWZmZmZlYmIyZjU0NjlmMzY1NjhmIHJlbGVhc2UyMi1tYWludAorMjUyMzQgNGQ3MjEzNTdiZGRiNWE4YWY1Njk5ZTZjZDk0MmVlNmYzNTYxYWE1NiByZWxlYXNlMjEtbWFpbnQKKzI1MjM1IDdmYWYwZmRkZjdlNjhhYWZjOWQyYzYyNzYyNTNhN2U1MjZmMmE1MTcgbGVnYWN5LXRydW5rCisyNTIzNiA3OGUzNmYwNTIzYThjODU4YTNiZDczMTcwODFkNTZmZDJhOWY4NTU5IGxlZ2FjeS10cnVuaworMjUyMzcgZTQ4ODQ2NzE3YzI2ZjNjMzY4YmM3OTdhNjFiNTNkNDdkNmJkY2VkYyBsZWdhY3ktdHJ1bmsKKzI1MjM4IDQ5ZDkzNjg5NDAyYjU0ZTAxMDRiYzMwZjY0NDJkNzM3Y2UyZGY4M2IgbGVnYWN5LXRydW5rCisyNTIzOSA4ZGFmZTRhNzhjYWM0NjUxNWE2M2Y1NDAzNDM3MDQ2NDhmYWQzMTcyIHJlbGVhc2UyMi1tYWludAorMjUyNDAgMzVmODQ4OTNhY2Y3NjljOGQyZjAwYTA5MTA5YWE1YjFiYzQxYjA5NyByZWxlYXNlMjItbWFpbnQKKzI1MjQxIDFjNzY5MjE3YzEwNTlmM2ZlMzM1N2UwY2U4OTU2NTQzNjc1MzYwZjEgcmVsZWFzZTIyLW1haW50CisyNTI0MiA5NGJhYzg4ZjE1MGYwMDEwMmY1NDAyNmJhNGYyMWFhOTQ2ODYzYjQ0IGxlZ2FjeS10cnVuaworMjUyNDMgMGE4MTNhM2RkYjkyZGQ5Y2FmOWE1YjFjMmIyM2U4YjJlYTU4YjY1NyBsZWdhY3ktdHJ1bmsKKzI1MjQ0IDA0Y2Y0ZTEzZTVjOWZiMzRlZDc0MTMwZDVkMTlhYmY5MmMxNWU2MGUgbGVnYWN5LXRydW5rCisyNTI0NSBjODI4NmNjNzAyYzk5MjRmMWUyYjIxM2NmZWVhZTIyMDJmZGQwNDAyIGxlZ2FjeS10cnVuaworMjUyNDYgYWJlZGIyNDE4ZjYyMzFhZGYyNDIwNTA5MmE1OTk5NmYxZjFlNGMwMiBsZWdhY3ktdHJ1bmsKKzI1MjQ3IGUxMDg2OTcyNmNkNDFiNzJhOGIxZjkxZGMwYWYzYjMzZjRmYzc0NTUgbGVnYWN5LXRydW5rCisyNTI0OCA4MzZjMWRiZjIzYTBlYTk4MWNkZjYzYjNmNzFkMzU0MjY0YmNiZjFlIGxlZ2FjeS10cnVuaworMjUyNDkgMTk4MzRjZDEwMWQ5MWI1ZjMyNmU0NTFkOTE0MmU5MTE0YWFlZmQwNyBsZWdhY3ktdHJ1bmsKKzI1MjUwIDY0ZTVhMzlmMWZmMDk2MTU4MmY2MWEzOTU2MjdhNWJiNWQ0MjVmNGUgbGVnYWN5LXRydW5rCisyNTI1MSAxN2E1NmUxYzZmZjhlMjdkMmQzZGQ5NjUzZTRiMWQwNmMxZjg5MjVhIGxlZ2FjeS10cnVuaworMjUyNTIgOGVkN2M2MWI1ZjFiYTM1YjE1YTFhNGI1MTkzMTEyNjYyMWJjYmU1NCByZWxlYXNlMjItbWFpbnQKKzI1MjUzIDg2MTNkZjE3ZjE5YmJkMzhlNTkxNDE4Yzg0ZGQxZjIzYWMxMTgwMDcgcmVsZWFzZTIyLW1haW50CisyNTI1NCBmMjQ1OTU1YjNmYmU3ZjRhMmMxYWFhYjIyNTBhNWRiNmZiNTc4ZDFiIGxlZ2FjeS10cnVuaworMjUyNTUgMjFmNTlkOWVkMTY5ZjRkYjA3NjNiODNjZTAwNDdjMGRkODFlYTUwMyBsZWdhY3ktdHJ1bmsKKzI1MjU2IDkzNzM0OGVmMThiODU2MDQyM2E4OWU2OTI1ODE0MGI0NjlhMjE3M2YgbGVnYWN5LXRydW5rCisyNTI1NyA5OGU5MmE2NGU3M2MyZmY3NTFlYmFiMjU1YzFmOGQxNDUxYzNlNmUxIHJlbGVhc2UyMi1tYWludAorMjUyNTggODZmY2Q5NDM4Y2JlYmQ3MTgzNzhlNTRlNjRiMjJiOWVjMjI1ZWE5YSByZWxlYXNlMjItbWFpbnQKKzI1MjU5IDRiNWMyOGE2MmQxNmU0YTRmNzhjM2I0ZDNhMTI3ZjBiYTM3MTE4NTQgcmVsZWFzZTIxLW1haW50CisyNTI2MCA1N2VhYTVkNjlhYzM1ZjUwZDgwYTdkYzBkMGZjNDgzMGYxZmI5ZTViIGxlZ2FjeS10cnVuaworMjUyNjEgNGMxY2NmMzYwMjVjZDk3YWFkZDBlYTEzMTY3ZmFmY2Q0MDFjOTAwNCBsZWdhY3ktdHJ1bmsKKzI1MjYyIDFmNmJjNDk4ZTZlNTZlMmZjNTVlNWVmM2QwNDQwYmZhMjdhN2Q4M2UgbGVnYWN5LXRydW5rCisyNTI2MyBjMDUxOGFkNzJiOTJlMGFhOWNhZGE1MTA2NzA1NmI3ZjcwZWUwMDEwIGxlZ2FjeS10cnVuaworMjUyNjQgZjAwNzgxZDY2NGE5YTRiNDMxZWJiMDdlNDNmYTE2OGQ2ZDc0NzViOCBsZWdhY3ktdHJ1bmsKKzI1MjY1IGRjYzA3NzhlYjdkM2I0MWMxNzgyYWNiZDM2N2QxMDEyMzY1NTE1ZWIgbGVnYWN5LXRydW5rCisyNTI2NiBmODgxZTA2MThkZjBhZjY2NTBkMTFkNjc2NWE0ZjMxNGVhNzdjNDU5IGxlZ2FjeS10cnVuaworMjUyNjcgN2Y2NTIzYjMyMTc5MjYyM2E2MWMyNmYwYjMyNTI3NmQ0MmUxOWYxMSBsZWdhY3ktdHJ1bmsKKzI1MjY4IDE2ZmFmNjg3NTAwNDUyZjlkMmIzMzExODNjNGVhNmFlYmUxNmNiZDUgbGVnYWN5LXRydW5rCisyNTI2OSA3YzMwY2IxN2MyZjY1NmQ3YTA1MzZlYjllY2MzMjdlZjIwOGRjZjJjIGxlZ2FjeS10cnVuaworMjUyNzAgMTZjMmFlMzY5ZDcxNWUyZTlmNjdmMDZmMjE1MjhmM2U5Y2JlMzIwMCBsZWdhY3ktdHJ1bmsKKzI1MjcxIDc5NGZlMzdjYTVmNGU4YjU5OTYzYjE4ZDc3YTZhZjNiZjhjNjM2MDMgbGVnYWN5LXRydW5rCisyNTI3MiAxNTE3YjQ1NDdiODc2NmNhMzg3NTA1M2Y1OTBkODE5NTk2MjFiNDAzIGxlZ2FjeS10cnVuaworMjUyNzMgOWQyYWU4NTMxOTQ0MDQ1ODgwNmU0ZmQ5YWExMDM4YTQ4OTE4ZjI4YSBsZWdhY3ktdHJ1bmsKKzI1Mjc0IDBjNjk5OTJjY2UwOTk0NmQzODk3NWYyMzQxM2Q2MDFmNDc3MGE4ZjEgbGVnYWN5LXRydW5rCisyNTI3NSBlMTYzNzEzYjQ3Y2YyMWIxM2NkOWI4NTkxYTZkYzE1YWY2ODJlZjJjIGxlZ2FjeS10cnVuaworMjUyNzYgMTVjMGU3YWVmNjY2ZDE4ODNjMmQ3ZTVmNzJjOWI4YTQwZGZkY2NlOSBsZWdhY3ktdHJ1bmsKKzI1Mjc3IGI5ODE1ZjRkOGJlMzU4NTQ5NTZmZjJmNzdhOGU2NjJjYzgxOWEzZDIgbGVnYWN5LXRydW5rCisyNTI3OCAwNzZlOWRjNzdhYWRiMzg1NzAyMzY1NWY1ZWY1MTBkODg5ODliN2M3IGxlZ2FjeS10cnVuaworMjUyNzkgYzM3NjM5NzYxMTJkNWFmZmJiOWU0NTU5ZjkwMTAyMTg1ZDk1MzZiNyBsZWdhY3ktdHJ1bmsKKzI1MjgwIDU5YmI0M2I2ZWIxMWYyNWZjOWM0MjBkZjIzZTI5ODY5N2Q4NmE5MTYgbGVnYWN5LXRydW5rCisyNTI4MSAwZjVkZmEzM2Y5ZWU4NGUwZDZjMDc4NzY1NGNhZWMwZTJiYWI0MTE2IGxlZ2FjeS10cnVuaworMjUyODIgZjdhYTMyN2ZmMGZlYjkyNzFlM2VmZmEyYTY0OWU2OWUxZjhmOGQwMCBsZWdhY3ktdHJ1bmsKKzI1MjgzIGVmYjZlNjE3YWVhMzlkZDFhYWE3ZjFjYzhjOTBlYTQyMTU2YWM5MGYgbGVnYWN5LXRydW5rCisyNTI4NCA4N2FmZjY0OGQ5OTRlMjM3ZGMyNmVmNjZkNDQ4MmE1YWZkNTJhOGRhIGxlZ2FjeS10cnVuaworMjUyODUgMTA5N2Y3MzAyOTRiMmM5MGE5YzdhYmY2MjU1M2NiY2Q3NWJlYTUzYiBsZWdhY3ktdHJ1bmsKKzI1Mjg2IDlmNmUwY2YxYWIzMDk3YTE1NWU3NWZmMmYxM2Y4ODdjMTA5MjU2ZGYgbGVnYWN5LXRydW5rCisyNTI4NyAyNDQ4MjkyMWE3OGE5YjkyZDRhNTk1ZDk1NjY1NGRmNDdiNjRiMzFjIGxlZ2FjeS10cnVuaworMjUyODggYTEzYmYyZjcyNjI5YWI2OGE3MTMwNzU0YzdhNWNkMTY2MDhkNzQxNSBsZWdhY3ktdHJ1bmsKKzI1Mjg5IDdlNzE1OWMwMjgzMDkxZjhmZWI3YjBlZWJmNjBkNWNmMTJlYjIyYjQgbGVnYWN5LXRydW5rCisyNTI5MCA4OGUyMTdlNTA1M2ZlNDQ3ZGZkZDA3OGY1MGIwZTRhZjQ3ZGUyZjI4IGxlZ2FjeS10cnVuaworMjUyOTEgNzc4MjQxNTgxZDRhMzU2YzYwMzgzZWVkNmRiNjA3NjAzZGQwZjI5YyBTb3VyY2VGb3JnZQorMjUyOTMgN2YzNWJiOTJmYmY3NTM0ODAyYjg5ZDdlZTk3ODc4OWM2MDM2YmRkMCBTb3VyY2VGb3JnZQorMjUyOTQgN2Q1YjJjNjc5ZjNiY2QxM2Q2ZjY4YTA3ZmVhZjdjMTEwZDdiNjA1NSBsZWdhY3ktdHJ1bmsKKzI1Mjk1IGFiNjhhZDQzZDUxNDM1ZDYxMDNhNTU1NGI0ZTMyODg0MDliMGIxZjggbGVnYWN5LXRydW5rCisyNTI5NiBiMzg2MjliOTE1NDUxMmJhY2QzMWQxNDM0ZjUxYjc2NWUxMTkwODY3IGxlZ2FjeS10cnVuaworMjUyOTcgNzFmZmM5ZmI1OTg2ZjU5NTMxYTA4NTljZTAwMmJjOGU5OWY5ODZhNCBsZWdhY3ktdHJ1bmsKKzI1Mjk4IGUyMGQxMmI1ZGFkMWMwZmM2MjNhZWZlNjA4NTBmZDRiMDgwNmNmMGYgbGVnYWN5LXRydW5rCisyNTI5OSBkNzQyNzk4Y2Q0YjRhNDZiOGM0N2E3MTlkY2Y4MDEzYmE5YjY2NmQ3IGxlZ2FjeS10cnVuaworMjUzMDAgODI5OGU5YzUzNWRhODRmMTkzNWZiNTJmMjYzZWUxNWUwNjJmOGVkYiBsZWdhY3ktdHJ1bmsKKzI1MzAxIDRhYjI5YjA2YTc2Y2JhMGUyMmM0OGEyM2ExNTMyNWZiNjYyNGE0ZTAgbGVnYWN5LXRydW5rCisyNTMwMiA2YmRmYzlmNmYwNTkwMzJkNWVmZmM4MDhiNGIxYWU2MTAxNGYzNjIxIGxlZ2FjeS10cnVuaworMjUzMDMgMzJkMGVmNmYxOTU1NzA2MmMyYjAzMGE2MDgzYmRmOWMwMDFmMjExNyBsZWdhY3ktdHJ1bmsKKzI1MzA0IGY3NDU3ZmFiNzZmMGRiYmM3MGIyNzlkMTg3NGNjM2EwOTEwMDY1MDUgbGVnYWN5LXRydW5rCisyNTMwNSA5ZDQ0ZTc1MmQ2MTdlYzU0MDliNGFkZmY4ZjVmNTliZmRkMzIxOTdkIGxlZ2FjeS10cnVuaworMjUzMDYgOWM4MzIzYWJmMWRiZDI3ZDljYTBjZDdkNzI1NDk5ZTlhNTk2OTE3NiBsZWdhY3ktdHJ1bmsKKzI1MzA3IGYzOTIxMzQwNWUwNWM0OGI2MzlmM2M3Y2EyY2JlMGU2ODJiZDQzYzAgbGVnYWN5LXRydW5rCisyNTMwOCBjYmYxZGJjYTFmNjMwY2MzNzAyZmNiZGUwYjcxYmQ2MjhhNDZjZGRkIGxlZ2FjeS10cnVuaworMjUzMDkgNzY2YzU5MzdhNjFlYzY3N2E5ZDgyNzY2MTIzOWFmZmYxMDJlNjEyOSBsZWdhY3ktdHJ1bmsKKzI1MzEwIDkxYTZkYjZlZmExNDlhMjUxNWNlZGFjZDllNDZlYjUzNjUxOTAxZTMgcmVsZWFzZTIyLW1haW50CisyNTMxMSBkMjQ0MTEwNWE5YmZmMTA4Y2VjOTAzMmQyMzVjZGUzMGQ4NzcxOWFjIHJlbGVhc2UyMS1tYWludAorMjUzMTIgMTdmODQ2OWYwOWQyMDdhZWIzNTIwYjk0NjE3ZjI2YTMzY2MzZGEwMyBsZWdhY3ktdHJ1bmsKKzI1MzEzIDgxYzJiZGE1ZDM3Nzg4ODY0ZDIzOGVkMWViYjZlYzhjOWU2NzJlMzkgcmVsZWFzZTIyLW1haW50CisyNTMxNCA0ODY0NDQ0NTIwZDkyYmNhMGRjZjA3ODZjMWUyNTBiNDk0YWNhMzJiIGxlZ2FjeS10cnVuaworMjUzMTUgNjc2ZGIwMzAwZjA2Nzc4NWZiZDkyODRiMDFlNDY3YTM3MTliOGIxYiByZWxlYXNlMjItbWFpbnQKKzI1MzE2IDBjOWViY2YxN2ViZmQ1OTI5NmUxNjlhNGE5OTUyYTVhZWViODQwN2MgbGVnYWN5LXRydW5rCisyNTMxNyA5N2Y0OWVkY2JkZTcyMGEwNzM0OGI0NTFiZjhjNzZhNjg2MGQzNDFlIGxlZ2FjeS10cnVuaworMjUzMTggYjU1ZjJmZjhiMjVmNjE3ZTQ0ZjM5NzliOTY3MWQxMTdjODA1YzBhNSByZWxlYXNlMjItbWFpbnQKKzI1MzE5IDJlOWUxYjAyYjdkN2I2MmIyODIyZDgwNzQ1Y2JiMTUzYjNjNzdlYzUgcmVsZWFzZTIxLW1haW50CisyNTMyMCA5ZmE1ZDQwY2M3MjIyZDZmMTdkNTkxOTRmMDhmYjA0MzAwM2Q3YjBiIGxlZ2FjeS10cnVuaworMjUzMjEgNWVkNzgyYmRiYjJhYTAwNzlhNmQxYzM1NTBiMzhjNWFkNDg5ZDc1OCBsZWdhY3ktdHJ1bmsKKzI1MzIyIDM5NTdkMTU1ZjhjNTUwMTk0YThlNWQzOGVhNjM5MzlmNTY4YTQwOTQgbGVnYWN5LXRydW5rCisyNTMyMyA3YTkxN2FkOGY0NDI0ZjUyZmQ0OTZiMTBhYzlmN2VmZDVjNzMxNTFiIGxlZ2FjeS10cnVuaworMjUzMjQgZWEyM2U2ZTQ5MjkwM2QxMDNlNjM2NjM1YjM5N2M1OTBkYWY1MjE0MCBsZWdhY3ktdHJ1bmsKKzI1MzI1IGQzYjFmMmMwZWJjZmMzZTNmOTkwNTVkYzQ2NDhmMGFiNjg0MzdmNjMgbGVnYWN5LXRydW5rCisyNTMyNiAyZmFhMjNmYWNlZjcyZGYyNGVmOGIzNmEyZWEzOThhZTVkMTYyYjVhIHJlbGVhc2UyMi1tYWludAorMjUzMjcgOTRiOTBjZGQ2ZTBmZTVlM2Y3YTI5MzliYjVhNzRhNzg4NzBkZGE3OCBsZWdhY3ktdHJ1bmsKKzI1MzI4IGM1ZDNlNDU4NzQ5ZTc4MWU4Y2QzMDZlZDI0ZmNjNGQ3Y2ZjMTU4NmQgbGVnYWN5LXRydW5rCisyNTMyOSA5YzQwMjUyM2Y4ZjVhYjU3ZDQ1ODg3OGE0YjQ1YjcyMzQ3YmNmMjAxIGxlZ2FjeS10cnVuaworMjUzMzAgNGQ1NTQ3MDBjNGQxNzIzMjY4YTk4NjQzZjhiMzI3ZWU3ZWEwOTRiNCBsZWdhY3ktdHJ1bmsKKzI1MzMxIDYyNzQxYjI1ZWQ2NTE3ODY0ODUyNTU5M2VmZmM2NzU1MTg4YzEyZWMgcmVsZWFzZTIyLW1haW50CisyNTMzMiA3MmM5NTQ0OGVlNGIzYzBiNWM0ZDgyZjhlZmNkZmY3YzMxN2FkYWZjIGxlZ2FjeS10cnVuaworMjUzMzMgYjFhODcxZGM1MTk2MmQ1YjgxMzdmM2YyODY0ZGZjM2Y3ZGNiZTU5ZCBsZWdhY3ktdHJ1bmsKKzI1MzM0IGZjZTcyNzhkNDZiMGE4NDkwZTQ2OWI1ZmMzOWQwMDY3MjI4Y2ZjMjUgbGVnYWN5LXRydW5rCisyNTMzNSA0YTEzMzc5MDY2MDhmYjc2YTNlOTQwMTE2ODJmYjM3OWY3ZDhiOTIxIGxlZ2FjeS10cnVuaworMjUzMzYgZWE4ZGI2ZjVkMWM1NzkyNmNlNTcxM2RjOGRiNDY3MTQ4OGQxNzIwZiBsZWdhY3ktdHJ1bmsKKzI1MzM3IDA1MmVmYzA2NTIwYTIxZGJmNjhjMWM4NmNiYmVhYTEwNzY2MzI5OTYgbGVnYWN5LXRydW5rCisyNTMzOCA4ZTBjM2I3NWVmZjU4YjE1YTk4NjZiZjgwY2M0ZTliNDk5ZWI4MTBlIGxlZ2FjeS10cnVuaworMjUzMzkgZTk2NGUwZmM0YmZlNzFiYjNkMDMyN2UwOGE2MDUwZDFlNWJjYWI4OSBsZWdhY3ktdHJ1bmsKKzI1MzQwIGEwYWQ2OWMwYmMzNjdmMzQxM2Q1ODdlNGQ4MDk1Mjk3OTcyYmNkZDcgbGVnYWN5LXRydW5rCisyNTM0MSAxOWUzZjg2NTllZWNlMmM1MGMzZjM2YzdhYmM1MjQ1NWExNDBlYmRjIHJlbGVhc2UyMi1tYWludAorMjUzNDIgODhhOGZjYWQwMmQwZGNjYmM0ZmY3OTdhNjc4ZjI0YzZmYzNhMDdlOCBsZWdhY3ktdHJ1bmsKKzI1MzQzIGM4MGY1NjAxMGIyODVjODNiZWVkZTMxZjY5ODRiNjFhMzgzMzEyYmIgbGVnYWN5LXRydW5rCisyNTM0NCA0ZTljYzI2ZTAzZmRlOTAzOGM5ZmIxYTYxOTFhZjJkMjZkMWY0MzcwIHJlbGVhc2UyMi1tYWludAorMjUzNDUgZTA4YWIzNDdkMTJlOGIzZmFmZTJhYWUzYTQ5YjgwMGNiMzM1M2E0MCBsZWdhY3ktdHJ1bmsKKzI1MzQ2IDRjMzM4N2JhMTE5ZDAxODdiMjJhMTU4ZTRiNDIxZmQxOTgzMDIwNDYgcmVsZWFzZTIyLW1haW50CisyNTM0NyAxOGI1YzdmNjRjODA1YzE1ZTRmNmNkYTNjYTUxYjYwNDUxODJiNDJmIHJlbGVhc2UyMi1tYWludAorMjUzNDggOWI0NWE1ODc0YzA5OTE5YWMwYzRhZTZjNjA1OGZhZWZhYTQyMzdkMiBsZWdhY3ktdHJ1bmsKKzI1MzQ5IDM1ZDlmNTY5MzYxYWZlNmNhM2QwOTY1NDE5MGFhMGMxZDFiZTZjYWUgcmVsZWFzZTIyLW1haW50CisyNTM1MCAwZjYzMTExYmY0YzVkNzc1ZjkyNjY5N2QzZGE4ODQzYWM2ZGFiODEwIGxlZ2FjeS10cnVuaworMjUzNTEgZjkyZTg2OGViNDQwYjc2MDk5NDhhNTU3NjJkY2JjOWFlZjZjOWNlNyBsZWdhY3ktdHJ1bmsKKzI1MzUyIGM4NDNiZTVkNThhOWRjOGM3ZGMyYmY1NGE1YTc2Yzk5MzkxMzkxOTUgbGVnYWN5LXRydW5rCisyNTM1MyAwOWFiOWNlMWY1MmE2MDI0ZWViNTJlNzE1MmVjYzM4MGY4MmE3ZDVhIHJlbGVhc2UyMi1tYWludAorMjUzNTQgMDhjNWIwYzdkOWQ4MThlN2NhZWM5Yzc1MTM3ZjcxMjliNWJjYWQ4NSByZWxlYXNlMjItbWFpbnQKKzI1MzU1IGE3ZmJkZTZlMzRhNTBmNDU4ZmRiZWUxYzM0YTZhZWFiNjNhNDk2OWMgcmVsZWFzZTIyLW1haW50CisyNTM1NiA0ZTk5NjMxNGY4ZmI0NDEzOWQzODFiODYyNmQzYTFlNzU0NzYwOTEyIHJlbGVhc2UyMi1tYWludAorMjUzNTcgMWFhMGNlNjBmNmE4NTI3MGMxNTI0NjhiMjE5ZDYxYzg4YjY1ZThlOSByZWxlYXNlMjItbWFpbnQKKzI1MzU4IDI3MTQ3MzlkNDgzYjYyN2Q3MTI4OTBjOWJkYWFmNjExNGE0YjQ1YTcgcmVsZWFzZTIyLW1haW50CisyNTM1OSAwYjE1Y2YxMTQzMWU0ZDE3NmUwZmZjMWE4Njc1NDdiOGQ0OTk5Y2QxIHJlbGVhc2UyMi1tYWludAorMjUzNjAgY2I1YjRhNTRmZjEyYTRjZDgzMDFmNjI0NmFiMzg5OTgzZTJhMzY3MCByZWxlYXNlMjItbWFpbnQKKzI1MzYxIGRlZmQyYjFhODQyNjg4YmYxNjM5MDk2M2UxY2I3MTViNTRlYTBkYTQgcmVsZWFzZTIyLW1haW50CisyNTM2MiA3YWVlMGY4YWZhYzUwOGNlNmZjMThlMGQ3MWYzNGE1Zjk3MTE5ZTgxIHJlbGVhc2UyMi1tYWludAorMjUzNjMgYmM1YmY3MmZiNWQ0NWQ0YzBkNmFlZjZhMzUyNGZiMGRlNmM3ZTQ4NiByZWxlYXNlMjItbWFpbnQKKzI1MzY0IDk2NTg3NDI3OWVlMmQyNjY1OTYxMDVlM2U2ZmQ1M2RmMjFjMGQ5MzQgbGVnYWN5LXRydW5rCisyNTM2NSA1ZTk1ZjNlZTc3ZWMxNDNjN2UyM2YwZTY2NWM1NzE2ZjNhNDhiNjFiIHJlbGVhc2UyMi1tYWludAorMjUzNjYgYTZhNWIxZmNjMmE3ZThmNTRlYTAwY2IyMmM0MmU2ZTgyZDc4ZDFiNiByZWxlYXNlMjEtbWFpbnQKKzI1MzY3IDUxMjY2YjJiNDM2MGQ0ZTZkMDk5Njk5MzUwZDhiOWViNTE1NmYxYjMgbGVnYWN5LXRydW5rCisyNTM2OCA1MmFhM2UzZTU3N2YxMjBjNTkyYzhmZWMwYTc3Mzc5YjIwZTFiNTQwIHJlbGVhc2UyMi1tYWludAorMjUzNjkgNGNkYWZmYzllMThjYzBmMGJlNTM4MjAzZTQ2NTg2NjhhYmZjYzgyMSBsZWdhY3ktdHJ1bmsKKzI1MzcwIDhhNzkxMzMwZmMyMDNiNmMyNTA3NDUzNTc3NTIxZTk5NjQyMGJjYjQgcmVsZWFzZTIyLW1haW50CisyNTM3MSBkMjRhYWRmZTNjMDZhOWE4YmMxNzM3ZDA5ZjQzM2VjMTFkYjFkYWI4IHJlbGVhc2UyMi1tYWludAorMjUzNzIgOGNlMTdkYTk4ZThjYmFmY2I5OGUwYjE4MjE4NzQ5MDQ1YWZmMDI5YiBsZWdhY3ktdHJ1bmsKKzI1MzczIDgyZmIwZjk5ZTJkYWQzMThkZTQwM2E0ZGQ5OGJiYzVjMDI5ZTFmNzYgbGVnYWN5LXRydW5rCisyNTM3NCA5NjM2NzVmZTk3ZTc4OTFlMjM4ZmJmZDliNzcyYWJkODhhODEyNjkwIGxlZ2FjeS10cnVuaworMjUzNzUgZTc5OTQ5ODgzNmI5NGVjOWZkNDVmYjBjNjFkNTQ3YTFiMWE4ZDYwNiBsZWdhY3ktdHJ1bmsKKzI1Mzc2IDk4ODVkYTNmZWVlY2QxYjEzMGFjM2U0MGU5YzA4Njg2OGJmODEzMzYgbGVnYWN5LXRydW5rCisyNTM3NyBlM2ZiOGQxNmE1MWFjYTU3ZDNmOWFmMmE4ZmQzODhjMDRhMDQ4YTAwIGxlZ2FjeS10cnVuaworMjUzNzggNGViODE4NjlmNjE5N2I1YjI1YWVkZDAzNzJkOWRkY2Y4OTc1OTZkMSBsZWdhY3ktdHJ1bmsKKzI1Mzc5IDQ4MWU5YTQ2ZDY4MDExYjMyMzc4YmVmZjBhNmZiOWJhZjM2NzU1ZWYgbGVnYWN5LXRydW5rCisyNTM4MCA4MGEwNGNiY2QwYzgwMTFhNjAyZWMxMDY2NjEzZTQ2OTE3NDRmZjkzIHJlbGVhc2UyMi1tYWludAorMjUzODEgNDRlZGJlMGYyMTc0OGU4ZTJlM2NkNTAwMTJiYWE4NzUwZGQ1MTg3YSByZWxlYXNlMjItbWFpbnQKKzI1MzgyIDMyZDI0ZjhkNjRmN2IzNmRhNzQ0MjkxNjQ0NmJjNjAxMWUxNDc1YjUgcmVsZWFzZTIyLW1haW50CisyNTM4MyA5ZjVlMzU3ODY3NTI1MjdiZGJlOTY2MGFkYWJkM2ViOWViMTQ3NzEyIHJlbGVhc2UyMi1tYWludAorMjUzODQgNzFmMjVmOTVlOTAyNTlkNTIxMDZkNzRlNWQyY2JkNWU2NDhlNmMyMSByZWxlYXNlMjItbWFpbnQKKzI1Mzg1IGI4NjkxNjAxZDJhMDI4ODI5N2E1NmQxOTllMTlmMDA2NDRmNWZkMmMgcmVsZWFzZTIyLW1haW50CisyNTM4NiBlMDY4NDQwZTExNmY5Mzk2ZTg1ZmVmMTQyODEyZmFhNzE2M2Y0NmIyIHJlbGVhc2UyMi1tYWludAorMjUzODcgOTVkYzMwMjQ5MjdjOTg4ZWJmMTYyZGE2NTc1ZGIxZGQ4YTU0MDg5NyByZWxlYXNlMjItbWFpbnQKKzI1Mzg4IDAyYTdjNjRlMzMzMWY5OTdkYzUwMzIwNzg3YjI0NzY4MWIzMDY3YTQgcmVsZWFzZTIyLW1haW50CisyNTM4OSBmYmU4MjBlMGM2MDFkNjY1NzlmMWIwMTMwY2I2NmRmYWY4MDE5Njc5IHJlbGVhc2UyMi1tYWludAorMjUzOTAgN2ZiZWZlM2UzZGVlMmQ3MjJhNWRjZGM1ZjVlZTMyYmFhYTMyYzBhZiByZWxlYXNlMjItbWFpbnQKKzI1MzkxIDU1NmZiN2YxYjYwNjc0M2UxODY1NGRlM2JmNTQ5ZjFjZDdiNmM5MDggcmVsZWFzZTIyLW1haW50CisyNTM5MiBhNWIyNWE4MTZhNmQ2OGMyZTkzY2M4NjRkYzI1OWZhODY3NWM4NmRlIHJlbGVhc2UyMi1tYWludAorMjUzOTMgOTkzNDFlODUwMTdlYTQ2YmRlODBjZGRjZDM0NTY1NmY5ODc5Y2I0MyByZWxlYXNlMjItbWFpbnQKKzI1Mzk0IDc2MTA3NTI4MGE5NWU2MGJlMWE1NmRmNTQ2MjU3OGFlN2MzOTI5MzkgcmVsZWFzZTIyLW1haW50CisyNTM5NSBiMTJlOTcxNDM2NjhkODdkOGI2ZGIzYTU4MmQ0MDU1N2Q5ZGJjZWJiIHJlbGVhc2UyMi1tYWludAorMjUzOTYgZmRhYWZhYTg5NTg3ZDc5OTBjNGVjZWVhYTBkMDg4M2E3M2EyNTZhOSByZWxlYXNlMjItbWFpbnQKKzI1Mzk3IGFlNDhkNTQxZjY1YWMzOWFhNjVlYmE4ZDEyZjQ2YTUwYmIxZDgyZmEgcmVsZWFzZTIyLW1haW50CisyNTM5OCAyMjkzZTBkN2I1YzQ1MDZmZTEzNTgzZTc2ZGY5ZjA1YWViMGYxY2U2IHJlbGVhc2UyMi1tYWludAorMjUzOTkgMjI5YjYyNGM2YjU0YzkxNjBiMzkyMzQzYmJhNjRhNTY1ZTMyNzQ2YyByZWxlYXNlMjItbWFpbnQKKzI1NDAwIDcyMjNjNTRiMDcyNzZkOTgwZGRlODkzM2E1ZGIwMjk5MDIzYTViYWIgcmVsZWFzZTIyLW1haW50CisyNTQwMSBlNmQ0NGNmMjlkYmY5NzZhNTFlNGY1YWNkY2JhYmYwNDg1NmVmMDAzIHJlbGVhc2UyMi1tYWludAorMjU0MDIgMTMzOWNiZTk0Y2VlNTU0NWEzMmJiMmZlZTQxYzRkMzU5OGRhNzg3ZCByZWxlYXNlMjItbWFpbnQKKzI1NDAzIDg3NWZiNWI3MjkxMGMzNTFmOGEyNDNkMDMwM2JjMWZhZGJlNTY3ODkgcmVsZWFzZTIyLW1haW50CisyNTQwNCBlMGEyODhkYjAyMmRlMWIxMWNjYmZjYTY0YWJmNTU5NjJmMTg5ZTg2IGxlZ2FjeS10cnVuaworMjU0MDUgZjM4NjMzMDNhOWY0ZmE1NWYwYmVhYzc3OTBhZGY3MGNiYjZmZTdmZSByZWxlYXNlMjItbWFpbnQKKzI1NDA2IDQ3YWExMDgxYWYyODA5ODAwN2UxZGZmODg1OWZhNjRhYjRkNTMwNTMgbGVnYWN5LXRydW5rCisyNTQwNyAxNDk4YzZlNGI0M2ExZjZkYjkxMGViZmVmY2Q0YmUzOWUwN2FkZDhmIHJlbGVhc2UyMi1tYWludAorMjU0MDggY2EyY2JhMTBiNDQ4N2FhZjBmZmYyOTVlZjBlNTZjZjAwODNkY2I1NyBsZWdhY3ktdHJ1bmsKKzI1NDA5IDI3NjJkMjI1MWU4NWRjNjRhNzYyMTBhMTFhNWYwZTRkM2NlZjE1ZDkgbGVnYWN5LXRydW5rCisyNTQxMCBlZmEyM2QyNmZhMzVkNDZlNGZlY2M0NzQ0ZjUxMWI4MWQxN2Y4ZWEzIHJlbGVhc2UyMS1tYWludAorMjU0MTEgNmJlNjU5MjNjMDJkNmRjNDY1NTFmOTliNzg3MDRkYzlmYTdiZjcxYiByZWxlYXNlMjItbWFpbnQKKzI1NDEyIDliMWNjOTlmNTkzMmE4NDk3OGMyMzhlMzU0NDlhY2E2YjMyZTYyMzEgbGVnYWN5LXRydW5rCisyNTQxMyBlY2ZmNDA0NjE5N2RhMTgwOGI3YTIxZDgwYTMzMjFjZWU3MGE4ZmYzIGxlZ2FjeS10cnVuaworMjU0MTQgZTMxYWQ0ZGQzMGQ5OTg4MzMzOGRiNzUzMzc3OWIwY2M0Yjc4NWVhYyBsZWdhY3ktdHJ1bmsKKzI1NDE1IDA4ZDVjZjU5NmIwMTA3MWMwZGM2M2M0MDc0ZWM2MTAzNzEyNzFkNjkgbGVnYWN5LXRydW5rCisyNTQxNiA0OTE5N2ZkNzYzNjJiMmY3NGZlZWJiMzVjYmIyMTgwZmFlYTRjZTUxIGxlZ2FjeS10cnVuaworMjU0MTcgNWNiY2ZkZTNhZDU1MDc2N2RmODhhMTk1MTQ1NDY3YTNlZDZlM2RlNyBsZWdhY3ktdHJ1bmsKKzI1NDE4IDg2ZDBmN2Y4NjU1MDU4N2ExOTE0NTdmZjg1ZDQ1YTc2ZDkwZDJkOTggcmVsZWFzZTIyLW1haW50CisyNTQxOSA5ZjFlYjhmZjE3OTU2YWQ4ZTI4MTc2NTUyNGZkZGVhNTlmMmRlYzQ0IGxlZ2FjeS10cnVuaworMjU0MjAgNDM4NTQzMTE2NGRhNTlmYzY1Yzc2OTZiN2M5MjliOWVjYTkxZjU3NSBsZWdhY3ktdHJ1bmsKKzI1NDIxIGNhOGEyODQ5ZGQ1NmVjMTM3YzVlZjZmMWI1MTVlMzg0MDVmMGVlZGMgcmVsZWFzZTIyLW1haW50CisyNTQyMiA0NmJjZWUxMWI0ODA1MGQxMTU5NWYyZDAzYWEzNDVjMzUzN2RlNjQzIGxlZ2FjeS10cnVuaworMjU0MjMgNTFlZTNiZGRiNzJjZTZlNDEzNGM3MTJkYjQzYTFiZWM2MzA4OGE5YyByZWxlYXNlMjItbWFpbnQKKzI1NDI0IDVjYjZjYzQ2Y2Q0MmNlNGQ2NDg1ODBlNWZhN2NkNjIzM2M1NTUzNTggcmVsZWFzZTIyLW1haW50CisyNTQyNSAxMDg3Y2E1MTllYjlhZTdmMjVlMzYzZjNhODgzY2FhOWJhYWE2MTQ3IHJlbGVhc2UyMi1tYWludAorMjU0MjYgYTUwYmFhMTI2Yzc1ZTZlOGQ2Y2Y4ZGQ1NGJkMDUzMmYwODZhYzhjOCByZWxlYXNlMjItbWFpbnQKKzI1NDI3IGI4Mzc0ZGU4NGUyYWU3MzUxNTFjYmE0NjFjMzU3MjdkMDQ2OTNmYTMgcmVsZWFzZTIyLW1haW50CisyNTQyOCA5NzIyNGE5Y2M4M2M2NTEyYTcwZGZiNmE5ODdjZTc3NzZhYWZlZWMyIHJlbGVhc2UyMi1tYWludAorMjU0MjkgZjU3NmQ5MDAwMjZmMzZiOTU5OTNmNjQ5NWVmNTgwNDg5Mzk3ZjU1YSByZWxlYXNlMjItbWFpbnQKKzI1NDMwIDVjMTQ4ZjVlMWMxMTQyMDAyNTliYmM3ODRlNWI0NzBlMzAxNjk3YTMgcmVsZWFzZTIyLW1haW50CisyNTQzMSAzYzNhY2FjODY3MzQ1NDlmYTI1MDMzMjhhOWUzYzJlYzIxZDBmZmRhIHJlbGVhc2UyMi1tYWludAorMjU0MzIgNTAzMmVjODkxZTc0NTYzZThkMmIxMzYzN2JmMzNkODI2ZWRjMWZmMiByZWxlYXNlMjItbWFpbnQKKzI1NDMzIDRiYmFjYWVkYzZlMmQ3NDE1YmIwMjVjNDZhNWMwZTg1ZWZhNzQxM2MgcmVsZWFzZTIyLW1haW50CisyNTQzNCBjMmY5MGNlNTk3NTUzOTgzMTM3YWIwNzcyODdiZjVmYzY0MGUxZDc2IHJlbGVhc2UyMi1tYWludAorMjU0MzUgNTIxMDYyOTBkMzkyYzk0YWU0ZWQ0YjQyZTVhNWM4OTg5YmNkZDYzMCByZWxlYXNlMjItbWFpbnQKKzI1NDM2IGVjZTQzMTVjMTIwNmY3ZDQyYjQ0MWI5ODI3MzVlZGRjM2E4ZjhmNDggcmVsZWFzZTIyLW1haW50CisyNTQzNyA2NTkyNmE5NzBhMTcxYzgxZTMyZDAzODM2MDZkZGVhYzJkNDBiNmRjIHJlbGVhc2UyMi1tYWludAorMjU0MzggNWQxYjIyMDNiNmVjZjdjZDI1NmIzZjc4NjNmOTMwNzg2MjMyNTMyZCByZWxlYXNlMjItbWFpbnQKKzI1NDM5IGIzODNjM2ZmM2IxZWNiZTI2ZjE2MzRjYTMzOGZlNjI5MGM3YmM1NjIgcmVsZWFzZTIyLW1haW50CisyNTQ0MCAyODUyYjRjYjdmNmFiZjA4NjQ1ZDU1NzAwYWIyOTljODRhOTFjNWVmIHJlbGVhc2UyMi1tYWludAorMjU0NDEgYjcwMjExYzFkMjU2NzllNGU0YTNjY2MxMTZhNTgwNzM5NmM2N2FmYiByZWxlYXNlMjItbWFpbnQKKzI1NDQyIGI1Yjc3MzUwYTAwNDQwM2Q3MDRlN2UwNzQwMTI4NDA2YWE3NDQ1ZTggbGVnYWN5LXRydW5rCisyNTQ0MyA4ZDVkYzFhN2VlMTg3YmNhMTAyZTAwZTU3MzhmNjQ1OTFlNjY1YjY4IGxlZ2FjeS10cnVuaworMjU0NDQgNjA3MmZhNDEwZGNjOTRhNGMzYzljMDNjZTllYjNiMWE4ZTY0YmU5MyByZWxlYXNlMjItbWFpbnQKKzI1NDQ1IDU1YzRkMDgzYzMwOWEwZWE3NzJhNzBjNTEwOTQ5ODg4YjQ4ODE2MDAgbGVnYWN5LXRydW5rCisyNTQ0NiBkZmVhYzAzMzQ1NzRmNzllMDZiOTM0YzNmMDk1OGQ0NWQwZWIwMTQ5IHJlbGVhc2UyMi1tYWludAorMjU0NDcgYWQzZDU5NjEyMzQ1YTI0MTI4Yjg2Yzg5OWEyZDNhOWZjZjA4YjAxZSByZWxlYXNlMjItbWFpbnQKKzI1NDQ4IDY4YTZhOWRkNDJmODAxMWNmZmM1MWI2NWY3ZTJkMzA5MmQwYTI2MjkgcmVsZWFzZTIyLW1haW50CisyNTQ0OSBhOWFmODk4Njg2ODlhMDU4ZmYwZmJjM2VlYjI5ZjM1NmEyYThiOGQ5IHJlbGVhc2UyMi1tYWludAorMjU0NTAgNWIyNGE2YWUyZGM0ZjBkOGRmZWViMmFhODQ3Y2UzZmU0ZGU3MzE5YyBsZWdhY3ktdHJ1bmsKKzI1NDUxIDczNmZiNWFlYzliM2I3YzFlNTc3NmZkYTgyODhhMDM5OWY2Y2VkNTIgbGVnYWN5LXRydW5rCisyNTQ1MiA0MDA5YzA4NDAyYjE0NTYwNTUyMGU2NzQ4Y2Q0NTQyYzhlMmUwZDk2IGxlZ2FjeS10cnVuaworMjU0NTMgOTBkM2NlM2ViMTljYjU5YWM5MTY2MjdkMGU5Yjc1Y2U2MjNiYjJkMyBsZWdhY3ktdHJ1bmsKKzI1NDU0IDcwNjUxMzVmOTIwMmYzOGNlODhkYTFhNGNkNzVhMjkwNTBjMzk0N2IgbGVnYWN5LXRydW5rCisyNTQ1NSA3YTNlMDNiNTQxZmZiMTI3ODEyYWVlYzczNDhkMGYyNDU2NDA0MWUzIGxlZ2FjeS10cnVuaworMjU0NTYgY2M4YjdmNzExMjdkODRkMGZhNTM4ZDhiODAxNzM5YzRjZDZjYzcwZCByZWxlYXNlMjItbWFpbnQKKzI1NDU3IDY2Yzc0NWE3YWJiMWZlODIxZWFiNTRjNTI2YWE0NTEzZTdmYmIxNDggbGVnYWN5LXRydW5rCisyNTQ1OCA1OTU1ZTBlMjk3NmQzZTkxNTE0NzZmN2Y2YjFhYmI3ZDM4MzhkYzQzIGxlZ2FjeS10cnVuaworMjU0NTkgOWU1ZmY2NzQ3NDM3ZjlmZTQzOTZhOWExOTI3ZDAyNDNlNjNhY2ZhMiBsZWdhY3ktdHJ1bmsKKzI1NDYwIDJlZmQ0M2NhMDMzZjY0OWRlMTM1MjU3OTFkMWU4ZWI4NjlmN2U5M2QgcmVsZWFzZTIyLW1haW50CisyNTQ2MSA5NjY3MjUwOTU4NTQ2ZGYyY2VkOTliZDk3MTI4OGU5M2EwMGM2NWJkIGxlZ2FjeS10cnVuaworMjU0NjIgZDBhY2IzY2IwMTFkYTU1ZWI3NTYzMTE3NGQ0Zjc5YjBlOWZlNTY3YSBsZWdhY3ktdHJ1bmsKKzI1NDYzIDQyM2JjOWI1MWE3ZTQxMzNjNWRiNDU1ZDlmN2JhNDg4YjQ2NWE1YzQgbGVnYWN5LXRydW5rCisyNTQ2NCBjODFlOGVhMGM0YmE3YzczNjU3OTY0OGJjYjk0MmQ4YThjNTJiY2IzIGxlZ2FjeS10cnVuaworMjU0NjUgZmNmMGMyNDRlMjg3ZTkyZDZjNjAwNmFiZGNkYWIwZGYzYzBhYTQ1OSByZWxlYXNlMjItbWFpbnQKKzI1NDY2IDY0NDJmYmU1ZGQwNDI0MGExNjU3NTBlY2M5MDU1NDlkNGVlZTBkN2QgbGVnYWN5LXRydW5rCisyNTQ2NyBjZDBjZTQ3MGMxNTNjOTQ4YWFhZjhmYzRjNTM5ZDI5MWFjNzY0ZDA5IGxlZ2FjeS10cnVuaworMjU0NjggZDM4NDU4MDUyNDQyZmYxNTJjZGE0OWFiOTg3ZDA3NzFlNDRlYjg2ZiBsZWdhY3ktdHJ1bmsKKzI1NDY5IDkzZWI0YjYxZjY4N2JiZGI0MDY0MjQ0Y2M1ZmQ5MTIwNWFkNzBmODUgbGVnYWN5LXRydW5rCisyNTQ3MCAxM2FjMjdmYTA3MDQ4Mzk0MTBmZDViZWRjZWJiMzQ0N2M3ZWJkNGZhIGxlZ2FjeS10cnVuaworMjU0NzEgMzU0Y2RlN2Y5MGExNTI3YWFmYjY4ZjgxOTczMjhmYmJlMDYxOWI3YiBsZWdhY3ktdHJ1bmsKKzI1NDcyIDU4ZjJjMjk5YjY1NDQzMzhiMDc2NzJlYmI5ODk0MjkxNjlkODg0MmEgbGVnYWN5LXRydW5rCisyNTQ3MyBhZDc5NjllOGY1OGRmYWMzOTUxOTg2NDI5NDViYmNlNjVhMGNkNjBkIGxlZ2FjeS10cnVuaworMjU0NzQgYzQ5NDA4NGRjNmQ4ODkwODMxZDMyZGVjM2ZmYjg5NWViNTA4MWU3OCBsZWdhY3ktdHJ1bmsKKzI1NDc1IDhiMTA0YTg1Yjk5YzdhMjc3Nzc0YTFmZTYwOTJjOTExYTgyYTkwYWIgbGVnYWN5LXRydW5rCisyNTQ3NiA3OWYyOTJkYmFiY2VhMjk1ZGI2YTYxMGM5NDJiNTMxMTU5MWFlZjAyIGxlZ2FjeS10cnVuaworMjU0NzcgYzQ1NGI3NmQ1MWU3YjkwMDcxNWNmZTQyMjlkMGVjNTVjNDgyMDIzYSBsZWdhY3ktdHJ1bmsKKzI1NDc4IGQxMDRiYjUwYTE5NGQzMmFlY2Q1MDE1NWVlZGNiMTNkYWMwNzZiYjMgbGVnYWN5LXRydW5rCisyNTQ3OSAwYzQyMzAyNjllZDNlZmI5OGM5N2U0YjY4NDAyYjBiNDM1OWI1N2Y1IGxlZ2FjeS10cnVuaworMjU0ODAgMTA0Njk2NDg5NmExYTRlMzk2NjQ2NTg1MmRhYzRiNDlmYjlkZjg2NyBsZWdhY3ktdHJ1bmsKKzI1NDgxIGNiYzA4YjE3MmQxZmQ2MTc1YmVkOWI2NDA2MzQ5NTExNjIyNGQ3MzIgbGVnYWN5LXRydW5rCisyNTQ4MiAwODU5ZTc2NDUwOWU2YTk2MjYxNDQyNzU0MjRiM2EyZDEwYzRlZWVjIHJlbGVhc2UyMi1tYWludAorMjU0ODMgYjJhMmNjMGMyYTYzNzMwYjg1MzBjYzM1ZDk3M2E2YWIwZTAwOTE2OSBsZWdhY3ktdHJ1bmsKKzI1NDg0IGQ0NDA2ZmJmY2I0ZTU0ZTliNDE1MzRlOTA5Nzg0NDQ1YzgyZjIyMDggcmVsZWFzZTIyLW1haW50CisyNTQ4NSAwNzRiN2UzZTU0OGQ4ZTczMTExZTlhZDkyZmVhOGEwY2RkYzE2MGI2IGxlZ2FjeS10cnVuaworMjU0ODYgM2EwNmUxOWRmNDZiOTAzYjI5N2FlZTM4MzRhZGYxNGU2ODQ4Y2FiYiBsZWdhY3ktdHJ1bmsKKzI1NDg3IGVkZjA1YzY5YmJmM2JiYmU1MDM1ZmJmYzQ2ODBjMDY5MGQxODViNWEgbGVnYWN5LXRydW5rCisyNTQ4OCA3NGYxNmY3YTYzNjk2Njk3YzYxOWU2ZGUxMmYyMDNhMGJmOTkxN2Y4IGxlZ2FjeS10cnVuaworMjU0ODkgOTg2ZWIxZDRlYmVmNTNhZjQ1NjgzNmEzMGI5OTlkZjU2MzExMDNjZSBsZWdhY3ktdHJ1bmsKKzI1NDkwIDU5OTQ0NDBlNWRkNTJiODZjNTM3ZGEzMGIwNzBhNWJmZTRmZTU5MmIgbGVnYWN5LXRydW5rCisyNTQ5MSAyYmZkMTM3YTk3NmY1OTgzZTRlN2MxNjkxZDI3ZGM5NTMwMTNhOTc4IGxlZ2FjeS10cnVuaworMjU0OTIgZTEzYWE0YzY3MmE5NDliYTg3MGM4ZDhjODY1NzI2NzllZGUzN2U1YiBsZWdhY3ktdHJ1bmsKKzI1NDkzIGU4MWIzMDc2YTZjMzBkOWNhNDI3YzY1ZGI5MjFkYzk2NWE4MmFhZjIgbGVnYWN5LXRydW5rCisyNTQ5NCBjY2E5ODhmM2Y2NGYyMDQ3YTNmNGYzZTE0MmM2YmFkNDMyN2MxOGM3IGxlZ2FjeS10cnVuaworMjU0OTUgOTllNjA4MTdjZTZlY2UyNTMxOTZmMTk0MjM0YWMzZDE4ZjdmNjU1ZSByZWxlYXNlMjItbWFpbnQKKzI1NDk2IDU0OTMyMDU0ZjZhOTQxZTVlYmE4YzhiMjc1YmQ4MzgwMjk2ZWJlY2YgcmVsZWFzZTIyLW1haW50CisyNTQ5NyBlNTk5ZTdiOGFiZjcwMjUzYmRlNWJkNGRlYjRlN2VmYjY0MjVmYTE1IHJlbGVhc2UyMi1tYWludAorMjU0OTggOWZkZGU4Y2NkY2E2NWU0NGI4NjczZjBhMjMzMTRlZDIxOTg5ZjExOCByZWxlYXNlMjItbWFpbnQKKzI1NDk5IDdlMTg4MTQwYjYxODFjMjc5MzA5ZWFlMjM5ODVhNmM5ZGQwNTNkZTEgcmVsZWFzZTIyLW1haW50CisyNTUwMCAxYTUxMTBiNGJkNzJhMmUwNmI5NjIzNjMzOWY1YmUxMDcwZTYyZWU0IHJlbGVhc2UyMi1tYWludAorMjU1MDEgZWQyYTE3YTM3NmQwYzZiZWU2ZTM0YmMxYmIwZGJlMjg4NGNmNjJkZiByZWxlYXNlMjItbWFpbnQKKzI1NTAyIDM0NzcwMzAzMjdhNjBlMzBmYWFkMjhjOGNiNmQwMjIzN2FkMzRmMjEgcmVsZWFzZTIyLW1haW50CisyNTUwMyAxZThiZTc0YTM3NGJiYWRkNjIyNjU2NGUxYmQ2ZjZiZTRiNWM5N2EzIHJlbGVhc2UyMi1tYWludAorMjU1MDQgNGZmOWY4YTc0YzgyN2VmM2VhMmIzMTI1ZGU4ZTVjOWIwZGY1YjkwYyByZWxlYXNlMjItbWFpbnQKKzI1NTA1IGMyNWQ2ZDc4MGIxYjQ3MmQ4YjVhNjM1Mjc1YjM2ZTNlZTlhZjA5MmQgcmVsZWFzZTIyLW1haW50CisyNTUwNiBmZDBlZTBhMDcwNDdkMTdlYzcxOGYxNDI0ODk5ZWRkYjYxNDQ3Y2M1IHJlbGVhc2UyMi1tYWludAorMjU1MDcgOGViNTkxZGQ3NjgyNjhkMGZhYjkxNmJiOWMzNGMwMzQzZWY4MGJjZCByZWxlYXNlMjItbWFpbnQKKzI1NTA4IGJlZjQ0ZDEwOGU1NzYxMzgwZjIwZGIzZDczYjA5ZmRhNzEwNzRiYjcgcmVsZWFzZTIyLW1haW50CisyNTUwOSBkYjA0MDkzOGRjNjYzYjNkNmVlZGQ2MTU1ZTFlZjcyZTUwY2JkOTIzIHJlbGVhc2UyMi1tYWludAorMjU1MTAgMWQxYTAxZDk1NmEyZWYwZTg0OWYwOGQ2OGU2NWMxNjYwOTZiMDg2NiByZWxlYXNlMjItbWFpbnQKKzI1NTExIGVhOWJlMmU1ZDk1NDQ1NDQxYmY3M2YwMjJkMWM1MWRmY2EzZGUzZGQgbGVnYWN5LXRydW5rCisyNTUxMiAxZTYwYjFlMTgxNDVkZGUyODJjYTk0Y2IxMmI4OTE5YmQxZjExYmY5IHJlbGVhc2UyMi1tYWludAorMjU1MTMgZTRkN2U1MTI5ZTRjMTY3ZDBjYmY5YTI2ZDlmNGQ4MTJjZjk4ZmUxNSBsZWdhY3ktdHJ1bmsKKzI1NTE0IDRiMzQ1OTUxYTVjNTFjZmRmZDUzNWE3OTZkNDIyYzFjN2IxNjFmYTEgbGVnYWN5LXRydW5rCisyNTUxNSBhNTM3MzBjZDI5YzE0NzRhNWQ3Y2M4YmUzYzg5MjliN2ZhNzg2ZDkxIHJlbGVhc2UyMi1tYWludAorMjU1MTYgNTEzMTAzMjQ5NDYyZDdjNWIzZjdiYTBiMGI4ZmI0MjhkZGZkODllNiBsZWdhY3ktdHJ1bmsKKzI1NTE3IGU4MWE0ZTk5ZWNmYTNjNmIxMjEzNWIzOWFjNWRmYmNkNTAwNWM4NjcgbGVnYWN5LXRydW5rCisyNTUxOCAzNDVkZWYzN2IwZDdhNTg3ZTc1MGE0NmI2ZmUwMzgyZjllNjYzZWIxIGxlZ2FjeS10cnVuaworMjU1MTkgZTMwMTYyYjFiMzA0NjhkYmZjNjE5NGY2NzcyZjA1ZmNiM2U4MTE1NCByZWxlYXNlMjItbWFpbnQKKzI1NTIwIDJiM2Y0MzgwNjczZjgxNjJmZjEyOGQyY2NiODkyYjFiZmIwMGYzOTggcmVsZWFzZTIyLW1haW50CisyNTUyMSBiMWQ1NzNhMmE3NzQ1YjM3OTNmZGFkZTQ2ODQzZmNhODczNDdhNGExIHJlbGVhc2UyMi1tYWludAorMjU1MjIgNzE5MDJlMWNmYmVmMzBiMTc2YjhiNmU4OWZkOWNlYTQ4ZGNiNDVkMSBsZWdhY3ktdHJ1bmsKKzI1NTIzIGQ2OTdkODhkMjViNDBjYWVhY2M1MGE0MWY3OThkZjEwYjM4YmRkZjMgbGVnYWN5LXRydW5rCisyNTUyNCBhZjUyYmY4ZTJiODlmNDM1NWEwYWFkMjYxZTQxYTk2Njg2YmZlZThkIHJlbGVhc2UyMi1tYWludAorMjU1MjUgODFkZmEyZGI0YzYxYjMwZWNiODgzZWY1Zjg0YTg3NTExNWE0MjFjYiByZWxlYXNlMjItbWFpbnQKKzI1NTI2IDQyODYyMTY5NTQxZmI5ZDUwMzBhNTlhMDU1ZjAwODA3MWU2YTIwMjMgcmVsZWFzZTIyLW1haW50CisyNTUyNyBhZjYxMjJkZjI4ZTA3ZTQyY2E1Njk4MDg1ZjIyYTU1NGZhOGIyNmM2IHJlbGVhc2UyMi1tYWludAorMjU1MjggMjJjNjY1ODdjNDUyZTI0OTk4Y2MyMzlmYzFkN2VmZjkzOTVhMWQwMyByZWxlYXNlMjItbWFpbnQKKzI1NTI5IDgzNzk1MWVjZGNlOTU3NTRjOTk5ZTg1NWQxZGE5ZjZmZDVlZTRmZWIgcmVsZWFzZTIyLW1haW50CisyNTUzMCA4NTc5ZDNkMzAxZDQ4ZDQ4NTBhZWQ2NDQ0ZDA2MzJkZTFiNGNlYTc0IGxlZ2FjeS10cnVuaworMjU1MzEgNjg4MzFhYzU0OTViYjAxM2ZkMDNmODkwNDIwZjRlODJkNGQwMDNmOSByZWxlYXNlMjItbWFpbnQKKzI1NTMyIDRkNWJlY2M2OTAyYmNjZjNmNmNiZjRjNzgzNjkwMDA0MGJhOWEzZWUgbGVnYWN5LXRydW5rCisyNTUzMyAzMmExYjQ4NGEyZjNhNTJhOGM0ZThlMDlmM2Y3N2EzYWNhNmFjNWVhIGxlZ2FjeS10cnVuaworMjU1MzQgMTAzYzRjNGNjY2ZiN2I3OTRiZTM1MzdmMGU5Y2M1YWUyZDAyMTczMiByZWxlYXNlMjItbWFpbnQKKzI1NTM1IGNhOGJkOTk3ZTQxOWQ0MTg5NjljODZiOTExZmJjNjMyYzNjMDg0ZDUgcmVsZWFzZTIxLW1haW50CisyNTUzNiBjNWM5ZTM2YzM5MDk5ZjkzOTM3MWU4NDlkNzhkMWQyOTVlODJhMjJlIGxlZ2FjeS10cnVuaworMjU1MzcgMGUzZTY5ZTAxZWNkNjQ3ZDliZjM1N2IwNWNiMmI4OWYxNjY1Yzc0ZCBsZWdhY3ktdHJ1bmsKKzI1NTM4IGNkYTMwNmIyMzIxZjZkNjJiNTViNjQzNGFlMTFiZDljZTkyMjZmNjUgbGVnYWN5LXRydW5rCisyNTUzOSBlMjE5NmJhMzQzMzBmY2ZkOWE2ODY1MjdhMjhjNzJkZWYxMTI4ZGI1IGxlZ2FjeS10cnVuaworMjU1NDAgZWUzM2JiYWYzMzgxOTM0ZjZiN2ZhYjc4MTJhZGM2N2E5NThkOTNkYiBsZWdhY3ktdHJ1bmsKKzI1NTQxIDZmYTU2YzQzYTFiYWU0OGM4YTAxOWM5NWE4ZjAxOGZhNzgwMTU2YzUgbGVnYWN5LXRydW5rCisyNTU0MiBkYWYwNGRiMWE2OTk4ZDc5MmMwNDVkNmJlOWMwZjlhYTc3YWIyNjZmIHJlbGVhc2UyMi1tYWludAorMjU1NDMgMjY2MzM0YTVjNGNhMjZjNjVlNjMyM2Y5NmRjZGEyNmUyMTQzM2JhZSByZWxlYXNlMjItbWFpbnQKKzI1NTQ0IGQyYTc2ZjdkZDY1MTA2NmQ2NzdiZDRlNTAwM2M1MjJmZDFlMDgzN2IgcmVsZWFzZTIyLW1haW50CisyNTU0NSBmOGE5ZGI2N2ZhNWI0NWU5ZGViYmIxNTNiNzAyNzMzNjEzNjczZTg3IHJlbGVhc2UyMi1tYWludAorMjU1NDYgNTM0ZTc5MDU5YmUxMDA4NzY4NGRmOTA2NjAxZWU4MjU4YjY0NjlmMiBsZWdhY3ktdHJ1bmsKKzI1NTQ3IDgxYThkYjE1ZmI5ODhiZWE0MDkzNGRlZDRmYWUyMTNmOTMxNzk0ZWQgcmVsZWFzZTIyLW1haW50CisyNTU0OCBhYzExMzFmNzNkMWZkNzA5ZGI3Njg4M2FmOTM0MzZiYThlMTVmNGY5IGxlZ2FjeS10cnVuaworMjU1NDkgYzYyODllYzhkYTBhNzljYzE4ZGVkZWNkOWQ4N2ViNmNkZTc4Zjg1NiBsZWdhY3ktdHJ1bmsKKzI1NTUwIDJjNWY4MDM3MTI2MWVkZmE5ZGZmM2EyNGViYWNkZDkzMzAxMjBkZmEgbGVnYWN5LXRydW5rCisyNTU1MSBjNmE2NjBmODlmZmU4NTY4ZWZkOWQwYjIxOGRmNTgwMDQ4NDFmODg3IGxlZ2FjeS10cnVuaworMjU1NTIgMWNhMmViNjUwZTEzNzdiNTVmN2M5YTc0MGY0MjBhOWM1YTUwMjBkNiBsZWdhY3ktdHJ1bmsKKzI1NTUzIDk1ZTg2NDMwOTgyYmU3ZDkyMDA2N2YyMzlkMGMyMWNlMGY1Nzk4NzEgbGVnYWN5LXRydW5rCisyNTU1NCBjYjRlZGQxMDg3N2Q5MTdjOGVkZjdhZjM0N2RkNTRlYzVmNzU0ZTFjIGxlZ2FjeS10cnVuaworMjU1NTUgMDQ0ZjllNzEzMjBmNjJjZWM2MDIyZDM1ZjljM2I5MGU2YTAzNTIwYSBsZWdhY3ktdHJ1bmsKKzI1NTU2IDk4YTNmYTVmNjg3Y2FhZWZjMTU5ZmQxZTU2YTYxYmQ5ZDkwMmU0ZDEgbGVnYWN5LXRydW5rCisyNTU1NyBmYzZkYzJlYTI1Y2Y3N2I4YzA3MDNmNjYyMWI4ODZhNjA0MDFiMmRlIGxlZ2FjeS10cnVuaworMjU1NTggMjRiYTY5M2U5YzczOWU2NzZlZjIyNDUwMDgzYTkxZGI5NjAxZGE4ZiBsZWdhY3ktdHJ1bmsKKzI1NTU5IDAxZDQ1ODI2OTc1MDJkNjUwMWFiYmU3NjA5NDU4YTFmMTk4MDM4MjcgbGVnYWN5LXRydW5rCisyNTU2MCBkN2YzZjgzYjk2NTg4YzJjMGU1MGZkNWI3MmE0YTlkOGM0ODQ5ZjIzIGxlZ2FjeS10cnVuaworMjU1NjEgMjZlM2I1NjNlMjYxMzJkYWI4YjE0ZmU3NDkxYzE4NmVjZTIxYzIwOCByZWxlYXNlMjItbWFpbnQKKzI1NTYyIDRlYmFjYWVlMzAwOWUyNjdkZGZkYjU5ZTcwZTBiMjE1NWJmNjdlOTkgcmVsZWFzZTIxLW1haW50CisyNTU2MyBkYWIwNWFiMDM0N2I5M2I3MTdlMDYwMmI2YTkyOTE4NTFhYWEyY2NiIGxlZ2FjeS10cnVuaworMjU1NjQgYWQ4MWY4ZmI0ZWU0NzUxNDM4YTc1MTJlZDBjZjgzNjBiYTM1OGIwMiBsZWdhY3ktdHJ1bmsKKzI1NTY1IDVmMmMwZjZmMGFmNzM0OWM3NTFkMGQ4MzUyMTBkYTYzZWQ2Zjg2MjcgbGVnYWN5LXRydW5rCisyNTU2NiA0MDlhYzBmNjg5OGY0MWIyZDcyNDZhNzA0OGExYTY2Nzk5YmM3MzIwIGxlZ2FjeS10cnVuaworMjU1NjcgOTI4YzEyODJlNWUyYjVjZmM4YmY3YTMzZDZjYTQ4ZjcxMmI0MjU5OSBsZWdhY3ktdHJ1bmsKKzI1NTY4IGY0NDg3MzUwYzUzNzg3YThmNGJjNDllMjkyYWFkYTNjM2QyNDIzMTAgbGVnYWN5LXRydW5rCisyNTU2OSBiODk4YzBmZWI3NTRlNDg5ZmM0MzUzZmQ5ZmEyOWVmYzZlNzE1ZWM1IGxlZ2FjeS10cnVuaworMjU1NzAgZjBhZTM3NjI1MTg5NWM4MGJiMTljYjA5ZDYzM2FlNjU5ZjQ0MWRkMiBsZWdhY3ktdHJ1bmsKKzI1NTcxIDdmZWYzNTZkYWQ3NWY5MWJiN2MyNDZiNjM1ZmZlYjYzZjg3NzQ5ODcgbGVnYWN5LXRydW5rCisyNTU3MiAwYjA4ZWVmYjZmYzA3N2VkZGU2ZDc1NzhlMmVkZWU0NTI3Zjc1MDljIGxlZ2FjeS10cnVuaworMjU1NzMgMGRjMTBkNTU3MDYyMzhkNDc3ZjljYTFmZWE4YzYzZTY5ZmE5ZDk5YSBsZWdhY3ktdHJ1bmsKKzI1NTc0IDIzOTI2OWM5NjUxNDQzZGQyZGFiYjI1OGIwNjgwNjU5MzRhYjFkNmMgcmVsZWFzZTIyLW1haW50CisyNTU3NSAyMzYwNmI0OWFmNzQzMDQ2NDNhOTA3YWUwNmQ1MGU1NTdlOTgzMjliIHJlbGVhc2UyMi1tYWludAorMjU1NzYgMjZiZWJmMjA4OTFlNzU5YmIyMGEwNDFkYTNmYzRjOWNjY2RjNzFjNSBsZWdhY3ktdHJ1bmsKKzI1NTc3IGUyNGJhMDRkMDFiMDhlNzFjZmU2NmYzYTJhOWM4M2E2NWEzNDU5OGYgbGVnYWN5LXRydW5rCisyNTU3OCA5MDc4MzJlZTcxNzM3MTM5NDNjMDMyYzhjOGIyMGM4Nzk0OTYyY2Q2IGxlZ2FjeS10cnVuaworMjU1NzkgNjRjNzMxZDE4MGU5MWUxZGQyNjc4NDE5OWUyNmZkMDZiN2Q4OGM0YyBsZWdhY3ktdHJ1bmsKKzI1NTgwIGRhNTE4ZmM3ODA2Njc0MzI2ODQ3YzZmOTg4NTgzNDZjYmI5NzkzYzUgbGVnYWN5LXRydW5rCisyNTU4MSA1NDQwZTRiMTdhZmZiMmVlM2EyYTIzNzg0YTI4ZDA0ZmY2ZTM2NTZiIHJlbGVhc2UyMi1tYWludAorMjU1ODIgNzhiZGZiYjZlNTllMTM1ZGU5YmExMWI3NWFhMmFjMDJiNjQwMjg3YiByZWxlYXNlMjItbWFpbnQKKzI1NTgzIDgxMjU1YjViZTIxOWZhMzYxZjM5N2U1NWIwZGNlMDRjNzBhZjM5NTkgcmVsZWFzZTIyLW1haW50CisyNTU4NCBkNmQxMmUyMWQ0NGY1MjcwYjZkNWEyOTlhZDI4OGY5N2ZmOWUwMjdiIHJlbGVhc2UyMi1tYWludAorMjU1ODUgZTYxZDI5ODJmYzEzNWQ0MTVjN2UzN2Q4NGVhYjE0Mzc2ZGJiNzBmZSByZWxlYXNlMjItbWFpbnQKKzI1NTg2IDAxYTU1YzNkNTA1YzBkN2FhZDc5NWI3ODg1ZDhjMTUyMGUxMzI3MDYgcmVsZWFzZTIyLW1haW50CisyNTU4NyBhNzYyZWRiMDQ2MWE3YmVjNDcwYTBjY2FhYTY3OTQwODY3YWExNTU1IHJlbGVhc2UyMi1tYWludAorMjU1ODggNjdhNWUyNWRjODhiYzc0ZWIxYzkwZjEwZmRlMDFjOGQ4ZDAyZGMxYSByZWxlYXNlMjItbWFpbnQKKzI1NTg5IDdmNGQxNWQ4NzhjY2Q2MDUyYzEyY2YwODExZWU1YTcyODYxMjVhNTQgcmVsZWFzZTIyLW1haW50CisyNTU5MCAyZjQ4YWU1YzhhOTQ3MGQxOWQyNGJjYmFjMDFjYjQ2ZjRhODA1MTVmIHJlbGVhc2UyMi1tYWludAorMjU1OTEgNGI2ZWRhN2QwYzhmNTRjZWNkMWE4ZDgwZGEzOTYwZDM2MjZmNzQyOCByZWxlYXNlMjItbWFpbnQKKzI1NTkyIDk5NjhkOGRkZGQ1M2RkNjI5NmNjYzFlNzAxYzk1ZDI2MzRjYWVhN2EgcmVsZWFzZTIyLW1haW50CisyNTU5MyBmYzQwNTZiOWNmMThjMTcxNjhhNzZlMDk1ZGUzNjAzOGFhZDEyZjg4IHJlbGVhc2UyMi1tYWludAorMjU1OTQgNDUyY2MwZjNhZTNjYThmNzlmM2ExMDU3MTg3NGY3MDZkY2IwOWQ1MSByZWxlYXNlMjItbWFpbnQKKzI1NTk1IDY0MWYyNjNmNGY0NGJiOGU0OTRkZWRiMDQwODQ4ZDRhMDIyOGZlZTkgcmVsZWFzZTIyLW1haW50CisyNTU5NiAxODJmMDE3M2E4ZWVmNWJjMTU1MmE4ODY2MDk0N2U1NzdkM2ZiNDQ0IGxlZ2FjeS10cnVuaworMjU1OTcgMjJmYzhiODIyZDQwZDJiMDYxMWUxMzkwZTc4NDgyMmUwYjkwYjA5OCBsZWdhY3ktdHJ1bmsKKzI1NTk4IDI5ODg3OWE5ZjlmNGJiNDViZjAwZmQ1Yjg3YjUzYWRlMjdhY2NjODMgbGVnYWN5LXRydW5rCisyNTU5OSA1MGM2NjY2ZmM0NTY3MDM5YTY4MDhmMzgwMDRjNmYzYjcwNzJhM2U0IGxlZ2FjeS10cnVuaworMjU2MDAgNDI3ZTMzMWI0MWEyZTFjZTQyOTRjMmRjN2ZlYzc3Mzg4NDI5MzIxZSByZWxlYXNlMjItbWFpbnQKKzI1NjAxIGFlNTc4YzhjNmNlZDM4MDc4NjU0Y2UxZWIzMzBlMzJkZGZiNzdmMWUgbGVnYWN5LXRydW5rCisyNTYwMiBlNTRmNWM1MGVmMDliOWRhZWFmMTZlZmQzY2ZiMGMwYjhjOTZiNmRjIGxlZ2FjeS10cnVuaworMjU2MDMgMjM2YWU1M2Q2NDY2MjI0NjMxMTdiZTk3NTA0ZTdkN2FjNjA0MzFiMSBsZWdhY3ktdHJ1bmsKKzI1NjA0IDc1ODRiNmYxYWZkZTQyNGRkNDA1MmU3ZTZhMTY1ZTBmYTdmY2YxY2EgbGVnYWN5LXRydW5rCisyNTYwNSAxNjNkZTcxZjE5NDI5MzhhYzJhNWNmOTFjOTAwZDE2ZWJlOWI0NDFiIGxlZ2FjeS10cnVuaworMjU2MDYgNmEyNzllMTcyZDIyM2U2ZmYyOWRlMWIwMzI0ODkwZTlmZmMyOWExMSByZWxlYXNlMjItbWFpbnQKKzI1NjA3IDcyZmRhNjRiMmEyZThjZGI0Y2MzODBjMzdhY2YyNGE4YmFjN2M3MDYgbGVnYWN5LXRydW5rCisyNTYwOCBlOGU0NjVlNmQ0NWY5ZjA5MzFhMTMzNjdiYTFhZGM4YjQ2Nzk5YmUzIGxlZ2FjeS10cnVuaworMjU2MDkgMjdhMGZiMDE5NTk5MTI0YmEzNjE5NTQ2NTYzNzRlYzE0OTE4ZDRkMCBsZWdhY3ktdHJ1bmsKKzI1NjEwIGFiY2VkNTU4MWMxODUwYTRhYzIzMTFmOTk4YjcyMzViNDhjNGM4MjQgbGVnYWN5LXRydW5rCisyNTYxMSAxZTdjYzhlNGJhYWI5NWE0YWI2NzZjMmQwOTBiNGJjZTRlNjkwODhmIHJlbGVhc2UyMi1tYWludAorMjU2MTIgMjcyZjk2NTM4NWM3MTNjNzhjMzBmYThmZDI1ZGY5ZWExNWNjYzFmMyByZWxlYXNlMjEtbWFpbnQKKzI1NjEzIGVkYWJhZDAyNWVmMWE1YjVlNTE3MmE1OTMwNTFhNzAwZmZhOTlkYjUgbGVnYWN5LXRydW5rCisyNTYxNCA5ZjExOTEzMmZmYmM0NjNlOTc5MGRhNWY5YjRmZTQ0NWNmNTJiZDM1IHJlbGVhc2UyMS1tYWludAorMjU2MTQgNzBlZGQyOTJjNzU3YWY2OGNhMjI1OTBjZWU4YzdkMTMxOWM5OWVlNCByZWxlYXNlMjItbWFpbnQKKzI1NjE1IDM3YjY5ODE1YWYyMmZkNTZmNjNkZmY0Zjg0YjU4MjNhZWNmODkzNTYgbGVnYWN5LXRydW5rCisyNTYxNiA5M2RiNzIzZDVlNDc4OTEyMGExODMyMjc0MWIzZmMxOTFlNjAyOWJkIGxlZ2FjeS10cnVuaworMjU2MTcgMDkzOTQyYmFlMWE2MzlhZjAzODExYTU0OGI1MGE1YTUwYzkxYjc2YiByZWxlYXNlMjItbWFpbnQKKzI1NjE4IDU0YjYzNjE2MGFjZGZlNjQ2ZDUyMmFjYWJmMmExMGM4ZmNiNTNmOGIgbGVnYWN5LXRydW5rCisyNTYxOSBhYTNiZjUyNWY0ODJjYjk4ZDU3NzI3YTQwZDUyZTA0MzEyYTE5NGNkIGxlZ2FjeS10cnVuaworMjU2MjAgMjE2Y2NkYTI4NGQ4NTg1ZTViZmRjMjZlNWI0NjIzMTczODUzN2IzNiBsZWdhY3ktdHJ1bmsKKzI1NjIxIDA3NTA1YTQ1MTAxNzZiZjM4MDRiZDMzMWU4NGNhODdjOTY5ZjE5YzAgbGVnYWN5LXRydW5rCisyNTYyMiBkMzA3OTdlNWNjMWFiODU1MzU5Mzg5NzE0MmUxMjBkMzc3ZGRjMDNjIHJlbGVhc2UyMi1tYWludAorMjU2MjMgNmMzNGNkM2E5OGE5M2UwMjhmZWU3ZWQ5ZDJjYjI1YWRkNjNkOTIzOSByZWxlYXNlMjEtbWFpbnQKKzI1NjI0IGFmZjIxNDUzYmVmZmYxYTMzMWEyNWY4NjA1ODE4M2NiOGEwMWY3NzEgbGVnYWN5LXRydW5rCisyNTYyNSAxN2U4YTNjOTMxMGNjMzkwMmY0YzdhNmU4ZWQ1MGJhNjYyYTllYjhiIGxlZ2FjeS10cnVuaworMjU2MjYgOGU5OWQ1NjgxOTg0NmVmNDA4NWY1Mzg1OGNmMjRkZDFmODc0ZDI3NSByZWxlYXNlMjItbWFpbnQKKzI1NjI3IDE1MGEyYTljNTViODdjYWVmMjQ3MzE2NjhlYWRkNWE3YTk2ZTI3YWIgbGVnYWN5LXRydW5rCisyNTYyOCA2NDg1ZDFiYTczNWNjNWVjNWE2ODMwMDM0ZjZlOWU4ZjE4NDhjNjNlIHJlbGVhc2UyMi1tYWludAorMjU2MjkgZjlhNWE4ZmMzMTc3OTZlMDFjNjBjOGQzM2YzZmJiMzZhZjM2MDM1NSByZWxlYXNlMjEtbWFpbnQKKzI1NjMwIDJhOGJmM2QwYmQ4NjVlYjcwYzE5ZTUyYzg2YTEyOTRhNmQzNmE3MTcgcmVsZWFzZTIxLW1haW50CisyNTYzMSAxMDAwN2FhNzhhNWU5NTQ2MjhkOTU3MmIzZTAwZjlmYmFlMmQzNWU5IGxlZ2FjeS10cnVuaworMjU2MzIgNjlhZDJhMWFkNjg5ZTE0NjBmMDE5ZTdlNzQwM2RlNDc1NTgwNzI1MSByZWxlYXNlMjItbWFpbnQKKzI1NjMzIDBiYjE3ZDNiNTE5N2QxNmIwMmQ2YzhjMTljMDU4NTk2NDIxZTQwYmUgcmVsZWFzZTIyLW1haW50CisyNTYzNCAyODM4MTY1MjllNzI1MGZmZWM1NDQyNzg5YTJiNjQzNjQ0NzBmZTk3IHJlbGVhc2UyMi1tYWludAorMjU2MzUgNzYzZDVhZTg5ZTllZDg3YzA0ZDA5YWZkMTgzZTJmZmI2MGI1MmNlYyBsZWdhY3ktdHJ1bmsKKzI1NjM2IDE3Y2EyOTA3ZDEzNTlkMTMyMmU4OTNlMDM3MjVkYjZlYWVmZTAyOTEgbGVnYWN5LXRydW5rCisyNTYzNyAzYzY4NWMwMzc3OTRmYTgyZGQ4MTg0ZjMwYWRjY2M4NzdjOGZkMzg5IHJlbGVhc2UyMi1tYWludAorMjU2MzggZjJkYTI1OGFhYzIwOTY4NTY2YmU0YTY0OGI2NzU2NTRmNzQ2MGZhYSByZWxlYXNlMjItbWFpbnQKKzI1NjM5IDk4OTE5NThmYzRiMjk2YjcxMTQyY2ZkYTMyMWQ4NmRhZmUwZTBjMTcgcmVsZWFzZTIyLW1haW50CisyNTY0MCBhYTQ0ZDM3OTliNDdiYmIzNTJhYzZjMTJlOGNjODE5MzljZTFjNWE3IHJlbGVhc2UyMi1tYWludAorMjU2NDEgNmQ0ZTA1ZDI1NzU5NmY0ZTYzNThlMTA2YjllMDNhYmI1MmYxNDRiMSBsZWdhY3ktdHJ1bmsKKzI1NjQyIDIyZTBkYWRhNTZkN2I4NjRiYjNlZDUyNDhmYTdjNWY2MDdiYTY5MTQgcmVsZWFzZTIyLW1haW50CisyNTY0MyA2YTM0OGEzOTAwY2RmODM2MDUwMGJmMjU1NGZlNTMyODI0M2MxYzZiIGxlZ2FjeS10cnVuaworMjU2NDQgZjAzNDZkOTMwNzcwMTZlMmM2YTEzMTdiMDIyYmU4NjA3ZWNhOGIzOCBsZWdhY3ktdHJ1bmsKKzI1NjQ1IDVhZGU3ZTgyMDRlNTIwMmY2MTE1MTQ3NWVlYTFkOTM0YzQ3ZTNiZmUgbGVnYWN5LXRydW5rCisyNTY0NiAxNjBlMzM1ZmJlNmZkZDJiNDFkZWQxNjM2MjljNWYzYWUzNjA2OTczIGxlZ2FjeS10cnVuaworMjU2NDcgNTZmNGRmY2NhOWQ4MWZjMTUyYjUyNGRmODlhODc2ODVmOWZlMTQ2MyBsZWdhY3ktdHJ1bmsKKzI1NjQ4IGNiNmM4NWQ4MzkxZjVlZDUxNzI1MjdjNGM4MDIwYzkyYjIwODU1ODEgcmVsZWFzZTIyLW1haW50CisyNTY0OSBlNGU1NGZjNWZiM2QzOTUyODhhYTFkMDRkNjY2ZDBmZDhmZDJmYjM4IGxlZ2FjeS10cnVuaworMjU2NTAgOTA3OGYyOTc2YmNjYTNjMDQ0ZTg4ZGRhNWY2NjNhMTRlMjQzNGUyNSBsZWdhY3ktdHJ1bmsKKzI1NjUxIDE4NzM4MzNjNjE2ZGY0MzNiMTdkYWMxZjk3NmIzMzk5YjI3OGViM2IgbGVnYWN5LXRydW5rCisyNTY1MiBhNzk1ODk3MWRlMWM3MmRjM2NlZWE4YzQ5NGY2MTgzNzE2NDdlZTk5IGxlZ2FjeS10cnVuaworMjU2NTMgMTI1NzdhZTk1OTU2MjMyNjZjYzk5ZmVlODhjMjgyMGQ0NTAwMTgyOSBsZWdhY3ktdHJ1bmsKKzI1NjU0IDQ5ZWRiZWU5ZGFlMjIyNDhjNWQzMWM4NjQ3YTMyMDllMjc0NjdmZTQgbGVnYWN5LXRydW5rCisyNTY1NSAyNGFmODQyMDMwYTBiNDc4Nzg2M2E0OTlmYWNiOThmZDViNGMwNmU2IHJlbGVhc2UyMi1tYWludAorMjU2NTYgYzZjMWE1ZmJiNmMxZjNlZGVlZjlmNzdjZGY2OWFhNTMwYjQyYmQxYSByZWxlYXNlMjItbWFpbnQKKzI1NjU3IDNjNzRhMWIxMjg3YWZhY2NlMmI4N2E3YTg5MDY4MzE4ODBkZjFhNzkgcmVsZWFzZTIyLW1haW50CisyNTY1OCA5YTA5MWQ3MjEzNmFjMDVmMTVlODQ3NjJiNjgxOTc3NzdhZjdkNzE5IHJlbGVhc2UyMi1tYWludAorMjU2NTkgNTQzYjJhNDg0NjdiNjRjZGJlMzY0NjY5MjUwMjE4OGFjMjkyZTc0NSByZWxlYXNlMjItbWFpbnQKKzI1NjYwIDYzM2E5NmE2NTAwOTE0OGVjZTkzZWM4YWY4NDMzOTcyY2Y1ZjA2YTcgcmVsZWFzZTIyLW1haW50CisyNTY2MSA0MWI1MTUzZDcwNWU1ZjdjMGE2ODFiZjU1MWViMjMwYzM2MThjMWIxIHJlbGVhc2UyMi1tYWludAorMjU2NjIgNTRiY2M1ZWMzYTUxMjU1NzJkMDkwMTViYTM5MDUzMjJkZTQxYWMzNyByZWxlYXNlMjItbWFpbnQKKzI1NjYzIGEzNDYwY2IyM2YxOTQ1MTU0ODdlZDI4OTQyMmMyNTliZjBiNTkxNGMgcmVsZWFzZTIyLW1haW50CisyNTY2NCBhMGNjNTI3MzVlNmU0NjhkOTRmZjIwZWY2NDQ2MTk0Y2MyNzkzYWY1IGxlZ2FjeS10cnVuaworMjU2NjUgYzQwMzYzMzM1NTg1NTE5NjY2OGFmNTczNzA2ZGIyY2ZmZDhhYjdhOCBsZWdhY3ktdHJ1bmsKKzI1NjY2IDljNDM1YjFiNTlhNTZjMDQ0YWZjOWYwN2MwMjQ2OWE3ZWI0MzY3YWQgbGVnYWN5LXRydW5rCisyNTY2NyBlYTNiMTg3NzQ2ZjdkNTM5ZTdjMjIzODMxM2I4NjE1ODdlOWZhNGJiIGxlZ2FjeS10cnVuaworMjU2NjggMDg5YWI1YmE5NDY2YjQ2ZWRhNjAzMjM5MmUyNjYxZDlhNGNmZWVkZCBsZWdhY3ktdHJ1bmsKKzI1NjY5IDk5ZTFmZWMyNmI0MDVhYmI0NGI2MjEwZGEzZGNiMDUxYzBhZWU0OTIgbGVnYWN5LXRydW5rCisyNTY3MCBiNTVkN2JjMDVlYzg4Njc2YjJmMTA4ZjQ4OTY1ZTMzNjA0YjI3MjIzIHJlbGVhc2UyMi1tYWludAorMjU2NzEgMTM0Y2I0MTg2OTQ2NmFiY2Y0MmY4MDhlYjViYTFhZGM3ZGZlMGY0YyBsZWdhY3ktdHJ1bmsKKzI1NjcyIDA0OTczOWNhMGMxMzVkMWE1MWMxZTUxMjkyODliYTk5NWRmNDkyNmIgcmVsZWFzZTIyLW1haW50CisyNTY3MyAzNWM5YmU2OTM4ODhlMDBiZGFmODUwYWEwZmQ4YjBkOTg1NjA5N2FmIGxlZ2FjeS10cnVuaworMjU2NzQgMTlkMWQzNTAyMGJkNDM3ZDNiZGI0NjEyNDBjZWYwZDIwNmE0ZDM4YSBsZWdhY3ktdHJ1bmsKKzI1Njc1IDNmNmRkZWFjNDg1NmI1Mjg4ZmUwNzAzZjJjNTRmMWEwOTdkN2RiYmIgcmVsZWFzZTIyLW1haW50CisyNTY3NiBhNDE1Y2EzZTg5MDM4NjAxNGI3ODAxMmU1ZTJlODRiODZjZjllNjdlIHJlbGVhc2UyMi1tYWludAorMjU2NzcgMDQwOGVjZDg0YWEyYTI2MDQ5ZjJlOTFkZDRmNmJlNjZmZTVjMzI1MyBsZWdhY3ktdHJ1bmsKKzI1Njc4IGNjNzg4YjNiMjFiNjIyNGIzNmQ3Njk5NWIzOGVjZWRkZmRmZjcyNDQgcmVsZWFzZTIyLW1haW50CisyNTY3OSBkYzgwY2UxMWZhZTM5MDlhMzE0MTc1NTgwYjRiMzI0YTBiNGEzMWY4IGxlZ2FjeS10cnVuaworMjU2ODAgNWY0ZmZiZmU2YmU2ODFiNWY5NjBiNmIxOWY0MzkwZmYwM2FiYTZiOSBsZWdhY3ktdHJ1bmsKKzI1NjgxIGFiNzRmZjgwZjlkMGFjNTNiMjMyMmNmNWZiZTYzODk2OWU1NDBlNmUgbGVnYWN5LXRydW5rCisyNTY4MiBkYzYwNTRlNWI2NDJjZDNjM2YxZjYxN2Q3ZDQzMjkwZTI0YzJkMGYwIHJlbGVhc2UyMi1tYWludAorMjU2ODMgMDk2Yjc1MTIwZTcyYjQ0ZmU0YTMyZGUyOTNjZjhjYjIwMGVhNmIyMSByZWxlYXNlMjItbWFpbnQKKzI1Njg0IDVhNzc4YWUxODUxMjM4OTFjZWVhYTBkNjE5YWM0YTJmYTVmODdjYjMgbGVnYWN5LXRydW5rCisyNTY4NSBhYzk3NmQzNjcwOGQzZDc4MWMwZjdhNjA2NjhjNzE0ZWY0ODA2YmJiIHJlbGVhc2UyMS1tYWludAorMjU2ODYgMzFkOWQxMWEyOTRjYTk3ZDViY2ZiOTFjZmY5ZWM2MGIyNDNjMWRkZCByZWxlYXNlMjItbWFpbnQKKzI1Njg3IGRmZjBhNDRiMjM2OGU0MTRhNDQ1NjhlYWY3MmExMzVmZjk2MGI0YjIgbGVnYWN5LXRydW5rCisyNTY4OCAxNmYwZGVmYTQ1YzIwZGYyNjA0MTYwYWYzODEzY2MyOTEwMjJhYTY5IHJlbGVhc2UyMi1tYWludAorMjU2ODkgMzk5MjU0NGRjMTQ1ZmJlYmZiMTM3MzUwMjg2NmNjNDk0ODgwOWM2YiByZWxlYXNlMjEtbWFpbnQKKzI1NjkwIDZkMDhhMjk1NWJiNjI1MTg3Mjc5MjFmMTQwODgxMmVlNzVkODMwNzAgbGVnYWN5LXRydW5rCisyNTY5MSBhNjE5M2E4N2Y1MDBlMjc3N2IzZjE5NjgzOGU2MDJiNmJmN2ZiODU0IHJlbGVhc2UyMi1tYWludAorMjU2OTIgMWE3NTBmYjkzYjE2OTM2MWNiYjBlZjhkMDQ2MWY1MDYwZjJlOTZmZSByZWxlYXNlMjItbWFpbnQKKzI1NjkzIGYyZWI5NWZiNDUyOWUyNzY5NTZmMDZhZGVhYTdiMzIyYjE1NDA4NWYgcmVsZWFzZTIyLW1haW50CisyNTY5NCAyOGUzNzkwNWJlZTQ1ODI5MzQ4NTk3M2JiMGMxNzRjZDI4OThlMzhkIHJlbGVhc2UyMi1tYWludAorMjU2OTUgNzk4NTZhZDc0OWFiN2RjNzM5ODZhOTMxMjMyMDZiNTFjYzc1ZDNmMiByZWxlYXNlMjItbWFpbnQKKzI1Njk2IGRlYmIwMDVmMTY3M2EwMzkyZjczZDA3ODk5MGViODAxYTFkMjEzNjAgcmVsZWFzZTIyLW1haW50CisyNTY5NyAwZmQzODMxY2YyYTA3NTdhM2Y2MzcwNzVkYTYyNGY4YzI5ZmYwMmRlIHJlbGVhc2UyMi1tYWludAorMjU2OTggMDI5ZTRjYmQyMzEyOTliMWJkMWNjYTJhYWY2ZmRkNDRlZTEzNGNlMiByZWxlYXNlMjItbWFpbnQKKzI1Njk5IGM5MDFkMTU4YWQ2ODkzNmU5YzExNTE2ZjIzYWQyODhhMTNiMDZiZDkgcmVsZWFzZTIyLW1haW50CisyNTcwMCBhMzRmOTE5NWY2MTFlNzNmNjMyNWZlZjRkYTNiMDExODA3MjA4MDk1IHJlbGVhc2UyMi1tYWludAorMjU3MDEgNmMzZTMyMzU3ZDkxMDhjMzI3NjE2YWJhYTJlMWJiZGFmMzZhYmM5YSBsZWdhY3ktdHJ1bmsKKzI1NzAyIDdlY2M0OTExN2Q3ZTg4YjY3MjUwZjRjMzQzN2YyNjNiN2Y3ZDk5YjEgcmVsZWFzZTIyLW1haW50CisyNTcwMyAyNTQ4ZTJmMzIzZmE3ZTljZTNmMDg2NGIzNzI0Y2UwNDkwZDczY2JmIGxlZ2FjeS10cnVuaworMjU3MDQgMTJkMjA0ZDkzYWYzNjUzNDUyZmNmMWMxNjgyY2M2YTQ1Mjk3NDY1ZiByZWxlYXNlMjItbWFpbnQKKzI1NzA1IDY0MWZiNGI0NzIwZTc2OWNlYjgxZmNkNDYyMWE1NzViODMwMTJjNzggcmVsZWFzZTIyLW1haW50CisyNTcwNiBmOTc2ZmFhMzMwZWExNjdkODJhZDVlZmJhZGQ4NDU0OGZhMmUxOTgyIHJlbGVhc2UyMi1tYWludAorMjU3MDcgMWY3MzI1MWM2MjVhYzYyMjA5ZGY2NmM2Mjk4YWYxODY4YmIzNGNhYyBsZWdhY3ktdHJ1bmsKKzI1NzA4IDI3ZjM2ZjRiZjUyNThiZWM0NTAzMzMxNGZiZmQ1MDgyODIzNGUwZTQgbGVnYWN5LXRydW5rCisyNTcwOSBiODc5ZTY4NTFiZTNiOThmMWIxYzBhNTEwYzkyYTI1Y2IyNzZlYjQ4IGxlZ2FjeS10cnVuaworMjU3MTAgNTFhYTllYjI0ZDgxZjYyN2IwZDljZjI3YjdmNTNjM2JlZWM2MmY3NSByZWxlYXNlMjItbWFpbnQKKzI1NzExIGZiOWEwMDgyMWMwZDUwZDMzZjgwZGM2ZGMxMmJjZjRiNzQzOGQ0NmEgcmVsZWFzZTIyLW1haW50CisyNTcxMiA0Y2U1MTdiM2UzMDFmNmNjNTJkNjRkYTg4ZDExY2ExYzliYzE4ZTk2IHJlbGVhc2UyMi1tYWludAorMjU3MTMgYTI3MzNmZWZmYjM2Njk3YTFjMTRkYmI1YWY4NjQ5YzkwNzI5NWI3OCByZWxlYXNlMjItbWFpbnQKKzI1NzE0IDFiYjRkMmJhYmMxNDVjNmYyYjVlN2FjMzBjMGYyOGJjMjM3MTU5MjggcmVsZWFzZTIyLW1haW50CisyNTcxNSA1YTlkYWRhN2NiYWMzN2Q1NWQ3MjQyNjg5MGE1NWIwYzAzYWI0MzFhIHJlbGVhc2UyMi1tYWludAorMjU3MTYgZGNhNGE3YzM2ZWI5OWNjOWE1YjQzZThiYTYzOWMwMzhiYTEwN2RlZSByZWxlYXNlMjItbWFpbnQKKzI1NzE3IDM1MTNhOWQwOTBhOWE5NWUzZmU0Y2QyMTVjZTM2Mjg2MGY3YmFhMDMgcmVsZWFzZTIyLW1haW50CisyNTcxOCA5MmViZTQ5ZDIyYzUzYmQxNThhOWNmNjE0ODg4ZTBlOWFjYzMzYjViIHJlbGVhc2UyMi1tYWludAorMjU3MTkgODRmMmM3NzgzZDMxMDE2NWI3YmZkODRmODA4NjE1ZGI1NzYyOGQyYSByZWxlYXNlMjItbWFpbnQKKzI1NzIwIGRkMTdhYWRlM2JlYjhhNTUyNDVlZmJhNjdlOGJiYjM3ZjQxMDE1N2YgbGVnYWN5LXRydW5rCisyNTcyMSBkZjk3OWJkZDZhZWZkMmJlZGIyNDUzNzAwODgwNDIyMmVmYzg1NGZjIGxlZ2FjeS10cnVuaworMjU3MjIgYzhhNmVhMDBhOWUxYWRjYmIxOWE2MmMwMWVjZWQwNDI1MWJmMGIyNyBsZWdhY3ktdHJ1bmsKKzI1NzIzIDE3ZDU2MTI0M2ZmODEyZGQxMmFmNmVkODA1NzViYWFjZGQ1NjJlZjcgbGVnYWN5LXRydW5rCisyNTcyNCA4ZWQ2NDdkMzFmNDRlZjRmYTk1YjE1YzZmZTEyMzU4NDJiZTAwYzE0IGxlZ2FjeS10cnVuaworMjU3MjUgNmFjNDE1MGM0ZTg4NDFhMjliMjFiNmNhMjY2ZjNiZWY4OTE5YTI5NyBsZWdhY3ktdHJ1bmsKKzI1NzI2IDM0Y2JlZmQyYzNmZTk2Njc2NTU4NTcwMDUxN2U0MThmN2M4YzU5NDMgbGVnYWN5LXRydW5rCisyNTcyNyBjODU0YjZkMGIyYzA0YmI3MTk3N2ZjMWM0ZjI0ODk3M2Q0NDhhYmU2IHJlbGVhc2UyMi1tYWludAorMjU3MjggMTIxZTE5OGY2ZGRhOWU4Yjk1M2Q3NDZmMDE0MmU4MjQ0MTJhMDRkMyBsZWdhY3ktdHJ1bmsKKzI1NzI5IGYyYjZjY2MwMDgwODUxNGNhMzRjMWJiZWQzNTM4OTQyMGI3NTdmMjggbGVnYWN5LXRydW5rCisyNTczMCA3MTVkNjMxZWVhMmY0MjYyM2FjZmNjOGFmZmI1MTQxMmQzYTA2ODU0IGxlZ2FjeS10cnVuaworMjU3MzEgN2YwZDM5MDE0ZTJlMTVlYTlmYjNkYWExMDBhOTI2YzkyNDJkODI3MSBsZWdhY3ktdHJ1bmsKKzI1NzMyIGMyMTA1NjJlMTU1ODBjNjI2NTE3Y2YyYjkyZmM2NTc1YzZhMzM0YmYgbGVnYWN5LXRydW5rCisyNTczMyBiMzU3ZGYzMDFmNWYyNTZmMmYzNGFkMjlmMzM4N2FiNTMwNGI3NTNjIGxlZ2FjeS10cnVuaworMjU3MzQgMDcxZjUwM2U1ZjRmNGFlYzM1M2I0ZjlkMjk5MmFjYTNhMDZiYjRhNCByZWxlYXNlMjItbWFpbnQKKzI1NzM1IDBhOTZkYWI3MGExNTc0ZWI4YTBiZDVjNDFmYjdkMDg3ZTU3N2ZkNDUgcmVsZWFzZTIyLW1haW50CisyNTczNiAyNDE3Njk0MzI0ZWYwOGQxMzBmZjNmZmJlZTliZWM4ZjFiOWM4NDI1IGxlZ2FjeS10cnVuaworMjU3MzcgODYwMGRiYTRmNTlkM2QyNTIxNzIyY2Q3ZGFhMTIzNzczODllNWIwOSByZWxlYXNlMjItbWFpbnQKKzI1NzM4IGNmOWYxYjZkYmEzYjQ3ODdkZWI5ZmI1ZTljMTlkOWJjZWJiY2ViYTMgcmVsZWFzZTIyLW1haW50CisyNTczOSA3NzVkYTYxNzhlODY1NTdmMDFjMjdhZGI2MTYyYzE4ZTY5ZWQ3ZDk5IHJlbGVhc2UyMi1tYWludAorMjU3NDAgNDY2OGQxYzkyNmNkZjA0OWNmNThjZjlhN2FhOTNhMmRhMDgzNzA3YyByZWxlYXNlMjItbWFpbnQKKzI1NzQxIDU1NTEyZmUxZDZmMTRhNDE3MmU1NGU3NTE5Mzc4ZWQ5NGYzYWFjN2YgbGVnYWN5LXRydW5rCisyNTc0MiBiOTAwNGI4MzY5OTRkOTQzYzk0Y2EwZDRmYzM2MzhjYmEzNDQyMzgwIHJlbGVhc2UyMi1tYWludAorMjU3NDMgNjhlN2U4ZGZjNWY1MDJiZDYzZTQ3MmYwZDRhODY0OWM2YjllMWE4MSByZWxlYXNlMjItbWFpbnQKKzI1NzQ0IDE2NWUyMGFjMGFiMTJhN2MyOTQzOTM1OTQ0NWQ5ZmVhMDcwNjI3YjEgcmVsZWFzZTIyLW1haW50CisyNTc0NSBkNWY2M2U3Y2FiMzFiZDRiNjUzZWQ2MWJmZjJjMTBmYzc4MzFiYzYyIGxlZ2FjeS10cnVuaworMjU3NDYgNDJlNmMzY2RjMDk1ODI3NmM2MjI2MDE5ODgwNWI1MTcwYTVlZTMxZCBsZWdhY3ktdHJ1bmsKKzI1NzQ3IDhmYzlhNTc2ZmJmZmM0MWRhNTEwYzBmY2YyMTE3YzNjZDU3ZDQxMjMgcmVsZWFzZTIyLW1haW50CisyNTc0OCAwOTI5ODk0Y2RmOTVmYzA1NjFhZjIwYjE5Mzg3ZDA1NjliOGNhZWE0IGxlZ2FjeS10cnVuaworMjU3NDkgYjU5ZThhOGRmNTdlODY3YjJiNTU4ZDliYzEzMmUxNzY0MTA5ODRlMiByZWxlYXNlMjItbWFpbnQKKzI1NzUwIGM3M2M2YTViNmE4MDQ0YmUzNzk1ZmUwMDUwNGNjNTZiYWNlOTc2OWEgcmVsZWFzZTIyLW1haW50CisyNTc1MSBmZDA1MGFjMWUwY2U1YjI4ZGY3ZWFlZGJhMDlkYmUzOWMwN2EyZTUwIGxlZ2FjeS10cnVuaworMjU3NTIgYWY4ODQxYWMyOTg5ZGJhYmUyZmRjYzQ2NjQ0ODZlZTA1NTI2ZTg2MCBsZWdhY3ktdHJ1bmsKKzI1NzUzIDExZjZmOGMxY2U3MzRmOTg1NzdhYWVhOThhNWVlNTkxZDZjYTg1NjMgcmVsZWFzZTIyLW1haW50CisyNTc1MyA3NjU0MzRlN2FhMDE5YzFiYjgyZjk4MTNiODAyNTgzMDg2N2NiZGMwIHJlbGVhc2UyMi1tYWludAorMjU3NTUgZTg4ZDVlMjY4N2VlNDczMDY2ZWZiODAzNmNkNzkzOGI5NGQ5MGVkMCBsZWdhY3ktdHJ1bmsKKzI1NzU2IGFiNjYxNmU2Y2ViZmQxZmI5Yzc4ZTJjNDlhZjA4YTYwODk0ZmNjYmYgbGVnYWN5LXRydW5rCisyNTc1NyAwYzhhMzg1ZmM4YTAxMzBhMTBjM2M4MGZjODdjNTljNjg0ZmMyMzc4IGxlZ2FjeS10cnVuaworMjU3NTggNjcwNmI4M2QxYmQxNWMzOWFiOTVkZjQzNzlmNGMzNzlkZmM4NWJiYSBsZWdhY3ktdHJ1bmsKKzI1NzU5IDEzMmEwNjRkYTY1NmU1MjNlNmYwNWNlODVmMTMyN2MyNGRiODAwMGYgbGVnYWN5LXRydW5rCisyNTc2MCA5NjNlODE0ZTY5Y2NmNWZlNjAyYzRiYzBjMjY0YTA1OWYzMTc0OGM5IGxlZ2FjeS10cnVuaworMjU3NjEgOTg0ZWI5OTVmYjllZGMzYzVjYzFlODgyMzBkYjI2NzIxY2M4ZGU2ZCBsZWdhY3ktdHJ1bmsKKzI1NzYyIDcxODU3ZjE2MjIzMTE1NTYzMWJmMTZiMjE1NDk1YjU1M2E4MGIxNjMgbGVnYWN5LXRydW5rCisyNTc2MyA4YmZjZjY4MjcyNDgyYmFiNzMxMDQ3NGIyMTMyNzlmNTE5OWZhODAxIGxlZ2FjeS10cnVuaworMjU3NjQgYTZiYjgwMDI4YWNmMmRjYmI2NDJjZWQ3OGJiNjM0MWNiZmY4Nzg0ZCByZWxlYXNlMjItbWFpbnQKKzI1NzY1IDM1MWY5YjRkODBjNWQyNzBjNWJkM2VmNGM1YWY5MzExZTUwYTc0ZDAgbGVnYWN5LXRydW5rCisyNTc2NiBjZWNkYTRlY2MwOTBjYTY5ODhkYjhkZDYyNzcyYmU5MTgxN2IyZjZkIGxlZ2FjeS10cnVuaworMjU3NjcgZTE1MDEwOWQyYjljNjBjOWFkODM4ZTI3NGIwMDU0OGM5MDVjMDhiZSByZWxlYXNlMjItbWFpbnQKKzI1NzY4IDA3M2RiNjhhMmMyYmJlZmZhMWI3YzE0NjdmZTlmOGUzYjEwOWFhYTAgcmVsZWFzZTIyLW1haW50CisyNTc2OSAwYzhlZDM4NDFhNjRmOGY4MjZiZmQ1Nzg4YmI3OTAzMDE3NGEwY2JiIGxlZ2FjeS10cnVuaworMjU3NzAgYTNlZTcxMzIwMzZhZjA1ZDExZWM2MjJhYjFlNjg4YzZkNjMxNzhlZSByZWxlYXNlMjItbWFpbnQKKzI1NzcxIDRlODIzYmYyNTEyY2VlODdmOTY5MTc2MzRjMDllMmU2YjBiMWU0ZGEgcmVsZWFzZTIyLW1haW50CisyNTc3MiA0NTdiZjE4NGU3YmE4YjU3OGUyYWU0YTBhYTc3ZjZlY2U3MGVmOWUzIHJlbGVhc2UyMi1tYWludAorMjU3NzMgNGE0NTk3YmM0ZWEyMjI3ODQwMTRlMGNjNGEzOGFmNmVkZDJkNTNhZSByZWxlYXNlMjItbWFpbnQKKzI1Nzc0IDM2YzUyY2ZiZDBiNzVlNjA1NGQyZTBmZWU4ODY4NTI2OTQzYjdmMjEgbGVnYWN5LXRydW5rCisyNTc3NSA5MjdiZDRmNmUzNWIyZWU4ZTYyNTJhNzA0NGNiYTZkYjQ1M2QzMDQ5IGxlZ2FjeS10cnVuaworMjU3NzYgNTNhMWYyMWIwNDUxNDg5M2M1ZDdkZWM1NTE4YTlhMTJlYWViZDMzOSBsZWdhY3ktdHJ1bmsKKzI1Nzc3IDcwMTM0MGM4NzcyMzE5YmM2ZTRlNDA5YjQ4OGE3ZmFmYzg3ZWJmMTAgbGVnYWN5LXRydW5rCisyNTc3OCBjNzhmZmJmYzM2ZDkzNjYwZGRmYThjN2QwMTEzZjAzZWIzYmQ0YzE1IGxlZ2FjeS10cnVuaworMjU3NzkgZGYzNTY1NmU3ZDk5NzE4ZmY3YTdkZGVjZmFkZDU4MmRhNDhjYTYzYSBsZWdhY3ktdHJ1bmsKKzI1NzgwIGU2MjE3NGM3ZDhlNTE3Njg2Zjg4NGVmZDAwYjdjOWFjYzkyMDAzZDUgcmVsZWFzZTIyLW1haW50CisyNTc4MSBiMTQ4ZTE4YWU3N2FiMDM5MWIyNzI5YjNhODVjYTRkYzgzODA1N2IxIGxlZ2FjeS10cnVuaworMjU3ODIgN2FmYmJlMjg4YWYzZGE2Y2Q5YzhiOWRmYTljZTFhNmZiYjU1Y2FhYiBsZWdhY3ktdHJ1bmsKKzI1NzgzIGY2NGExMTk3YTUyYTQ3ODE2NWJhYTM5ODU2NGQ3NDQ4YmNjNzc5ZTEgbGVnYWN5LXRydW5rCisyNTc4NCA5ODk1ZTJlMzM2YzNhMTBmNmJkYzFjNzViODNjMGFlYzVmZWYwZDcyIGxlZ2FjeS10cnVuaworMjU3ODUgYjUyM2E0NzBhMGNlOThiZTk0Y2EwYWE2NDRkNGY3YjRiMzBhOGEyMCBsZWdhY3ktdHJ1bmsKKzI1Nzg2IDVjM2EyNTkyMzhjZmY1M2M0Njc3YjBjYmE1NTdiMTgzYjdiNjA4NDkgbGVnYWN5LXRydW5rCisyNTc4NyBiZTQ5MmRmODNkMDMwMDhiYTU3Y2FlMTI2ZGI5MTU0NDI5NWY5MjVjIGxlZ2FjeS10cnVuaworMjU3ODggZjUyZDZhNjc1ZjVmNzg3NjMxNDZjOGNhMWJjOTgwODRjYWJlYzVhNyByZWxlYXNlMjItbWFpbnQKKzI1Nzg5IGVhYzU2MGNjMDM5OWQ3ZjMzOGIwMzdhZGZlYWE4YWI2MDY4ZDhjZGQgbGVnYWN5LXRydW5rCisyNTc5MCBjMTA2OGIwOTI4NzlmY2U2MWI5NjliYWE3MTI1OWM5ODYxZjA0YzRkIGxlZ2FjeS10cnVuaworMjU3OTEgZjRlMjRhYjBkMTI0YWVkYjU4OTQ5OTQ5NTAzYzEyYjU2NWVlMTBkZiByZWxlYXNlMjItbWFpbnQKKzI1NzkyIDcwMDJmMjRmODE4ZmIyYzdlMDlhN2M4ZmRiYzA4NWUxZDZmYzhiMDAgbGVnYWN5LXRydW5rCisyNTc5MyA1MDNiOTJlNjZhOGM3NjVlZWNmNTljMGYwY2FiZWIzM2FhMzM2YjM1IGxlZ2FjeS10cnVuaworMjU3OTQgODMyMDU4ZjIxYWEyNzQ0NTVlMjNmNWE4OGUzY2NjZDgzMThlZjljYiBsZWdhY3ktdHJ1bmsKKzI1Nzk1IDIzN2FkNDNmODlhOGY5NDUwMmZkZDA0MDNmNjQ2NDNjMDVmMDI0MDMgbGVnYWN5LXRydW5rCisyNTc5NiBjMGFlNmY0NmYyMzE1NzQzMjJlY2FiMDZlZjJhMDAwNWFlNGM5ODgzIGxlZ2FjeS10cnVuaworMjU3OTcgZDhkOTgxZDBhNDdlNWYyYTllZGY1OTIwOTk2ZTBkZWQ4MjMwYzE5YyBsZWdhY3ktdHJ1bmsKKzI1Nzk4IDg4OGZjZDliODU4ZGNlMzMxNzM4MGM5OGJmN2IzNTIxNGFjNTdkMWIgbGVnYWN5LXRydW5rCisyNTc5OSBkMmU0NTdjNDRiZjI3NTc1MjlmYjVhYzFlZjFlNzE2NjdkYjI2Mjg5IGxlZ2FjeS10cnVuaworMjU4MDAgMDhmNzQyZGY5OTM3YTJjY2IzYzlkYzU3MmMzMTgzOTMzMjhjNGMxNiBsZWdhY3ktdHJ1bmsKKzI1ODAxIDI3M2VlZTM4NzEyY2ZmZWExYjNhN2Y1YjE4NGQzZDY5Njk1YzFmNzMgbGVnYWN5LXRydW5rCisyNTgwMiAxMDg0NmYxZTE1OTJmOTlhYmJkMGI3MGYxYWUzZDQ5NTI5OTU2NDQ0IGxlZ2FjeS10cnVuaworMjU4MDMgYjE4MzZjY2M5NTFjOTdmNTAxNWM2ZmM1MjQwZTZiOWViYTliMzZmZCByZWxlYXNlMjItbWFpbnQKKzI1ODA0IDlhZmVhZjk5NzlhMGEyYmExZjg1NzdiZWI1MzQ3YWQ5ZjE1NDg4NTcgbGVnYWN5LXRydW5rCisyNTgwNSBkMWFlY2Y2NjMxNjc5MGU1ZTgxZjg2N2JlNTYwYWM1YTlkMDk4MzhkIGxlZ2FjeS10cnVuaworMjU4MDYgNzJmZDg0MTY5ODRiODA4NTA4ZDQ2YWJhNmUyMmJhMWFlMTg2ZGMyNiBsZWdhY3ktdHJ1bmsKKzI1ODA3IGVjMWE1YTAyOWY3NGM1N2ZlMjgyOTM2YzUwN2Y3ZWI3MTEyZWI4OTQgbGVnYWN5LXRydW5rCisyNTgwOCBkNWFhZDZjNTgxYzlhZTQ3M2U5MmM1ZDJjNzQ5NjEwOTBjMmQ2ZDNkIGxlZ2FjeS10cnVuaworMjU4MDkgZWY2ZTJmZWY4MWQyYThiOGJhOGUxMjA1YmIwOWMzNTk3ZTdlOTc3MSBsZWdhY3ktdHJ1bmsKKzI1ODEwIDllOGFhMjk1MjNmMDk3OTc2MmJmZGUwZWI1YTUxMzNmZDk4NjZjNTQgbGVnYWN5LXRydW5rCisyNTgxMSA4ODFiNjQ4NGYwZGZhYTYxYjI3ZTM4MjdmMGVmMGY2YmU1MTE4M2YxIGxlZ2FjeS10cnVuaworMjU4MTIgNTIyMDhmZTRhYzQ3MTE0OGNjNzFmNzQ4YjRjNWQwOWFjMzFiMzhiMSByZWxlYXNlMjItbWFpbnQKKzI1ODEzIGQ4NjRlMmJkOTFhNmUxMTQzZmU5ZGZiODFjZmQ2MjNhMWVmNGNlMDIgcmVsZWFzZTIyLW1haW50CisyNTgxNCAyMzkyNWRmNGUzNzEzMDY4ZmVkODllNTBiODhiZjQyMjEzYmY2MWM4IHJlbGVhc2UyMi1tYWludAorMjU4MTUgN2I1ZDZmMWYxYzZlYzc2NTNiMzk4MjIyMWVlZmY2Yjk0ZGEwMzJkZiByZWxlYXNlMjItbWFpbnQKKzI1ODE2IDJhN2Y3MWE5YmQyZTMwY2VhZmNhZGRiNWUzZTVkNzhiOTVjODY3ZDggcmVsZWFzZTIyLW1haW50CisyNTgxNyAxZmUzODAyMzM2YTM1NmNhZGU4N2VmNjBjNmYzYWM0OWZiZDhjZTc5IGxlZ2FjeS10cnVuaworMjU4MTggYTM2N2JjNjFkNWI2MDdlOWYxZWQ5YjI4MDcxMzEyMDRjNjA3NzJkYyBsZWdhY3ktdHJ1bmsKKzI1ODE5IGY2ZTZmZGI5MzVkMjE0MjE5MzRhNTM0ZjA1ZTlhNzQzYjYzNDFmNGQgcmVsZWFzZTIyLW1haW50CisyNTgyMCA2OGZlMmIzOTExNTk0NzJlYTBmNDYwMDM1NTA1OTdhNjEwNjJiYmQxIGxlZ2FjeS10cnVuaworMjU4MjEgYmVhMDFkYzJmMDBlMmJmM2UyZTdiODRlNTg5ODExOGM3NWE5ZTRmNyBsZWdhY3ktdHJ1bmsKKzI1ODIyIGMzZTBlYTA5NzM3MzY2ZGI5OTRjMmM5YzYwYjQ2ODFlNzJlNDViZGMgbGVnYWN5LXRydW5rCisyNTgyMyA5YmE5ZDEyMzg4MDRmNDU4NzA4ZWY0ZGU5NTEzNDA0ZDYzZDQwNDhlIGxlZ2FjeS10cnVuaworMjU4MjQgODViZDUzNGNiZDE5ZjY5MzMxNTg4NDU4MDIwNGQzZDMxZWVhNjg4NCBsZWdhY3ktdHJ1bmsKKzI1ODI1IGY1NTFhZjkyNjYwZWIyMmYwNmI1NDFlOTUwMWM3N2YyOGE0MGM4NjggbGVnYWN5LXRydW5rCisyNTgyNiBhYjk4YTBkZWY5ZDc2MzMzN2YwMWI2NjU1NzJiMWJlZjJmZTBiNmJiIGxlZ2FjeS10cnVuaworMjU4MjcgYWIyNGVmMmM5MzIzODlhZmQ3NTU3MzllNGM4NzY2MDY1ODQxNDczYyBsZWdhY3ktdHJ1bmsKKzI1ODI4IDFkYjE1MTBhYmUyMTg3YjY1NmViMjQ3ZDlkOTZjNTQ2MmM0ZGI0YzggbGVnYWN5LXRydW5rCisyNTgyOSBhYWY1ZWUzYjhmOTM1NTY0OGU1ZmU2NTE0NzM3MTdmNGY2NGRjNTIwIGxlZ2FjeS10cnVuaworMjU4MzAgZWViYWU0ZjYwZDA1Y2EzNDQyNzczZDc4NGQ1OWM2MzZhMGRhMDVjNCBsZWdhY3ktdHJ1bmsKKzI1ODMxIDhkMDA2MTQ5M2M1N2QyMjdiZWM5YzliOWJlNTVkNzUxMTliMWIxYzUgbGVnYWN5LXRydW5rCisyNTgzMiAwZTQ3NThjY2ZlMmJlNjkwZWMzZmZjOGY1YzJjYjE1YzEzNGUxM2FjIGxlZ2FjeS10cnVuaworMjU4MzMgYWNmNWVjZDgwNmFmYzc5ZmE1MTg3ZjRlNzVjODk2YmE0NjdiZjYyMiBsZWdhY3ktdHJ1bmsKKzI1ODM0IGFkMzgyNWQwNGRlY2Q2MjI2NDg5MWQxYjAzYjJmZDU3ODc1M2ZmZGEgbGVnYWN5LXRydW5rCisyNTgzNSBiYzg4ZjFiNDc2NDhkZTZlNmU1N2IxZmFhZTMxY2MwNWZkZmI2M2ZjIGxlZ2FjeS10cnVuaworMjU4MzYgN2FkZWQ2ZDA2OTZlMzQ1ODRjYjk5ZTI4YWRhYjFhZGEzYjdiZGNkYSBsZWdhY3ktdHJ1bmsKKzI1ODM3IGU0ZDEwYmQzOTczZjE2NDgzZTM2NjhjOWNjYjJkODQyYTVhZTBlMzAgbGVnYWN5LXRydW5rCisyNTgzOCBkNzdlNzQ4ODY1ZmY5Yjg5YmE5M2M4YzM5ZTJjYzg5OWRiZGYyMTQ1IGxlZ2FjeS10cnVuaworMjU4MzkgODA1YmU3YzBlMjZjNTMwOWYzNWVjOTY4ZWZmN2VkOTFhMWU1MjBiYyBsZWdhY3ktdHJ1bmsKKzI1ODQwIDY0MDgzODRjODEzN2IyNDhiNTcxNTg0YzFjNDNlNTliYTgxMDdjZDkgbGVnYWN5LXRydW5rCisyNTg0MSBmYjQ1NzkxMTUwZDE5Nzc3NzM5NmI5OTM1OGFlMjE4YTNhMmNjYzg1IGxlZ2FjeS10cnVuaworMjU4NDIgMTU3MDJlMWI5NjFlYmI2Y2ZlYWE0YWE2NjAzMzgyZWYwN2E3ZjY0NiBsZWdhY3ktdHJ1bmsKKzI1ODQzIDdkZTNjOWI1OGRiOGZlZmVmNDg3NDc1MzQ4NGE4YzdmYTZhYjA2YzcgbGVnYWN5LXRydW5rCisyNTg0NCAyM2I5YWU2YjNmN2FmZWI1YTA0YjM0NjExNTE2NzVlZTVmOWQ5MTg2IGxlZ2FjeS10cnVuaworMjU4NDUgMGYxYWUzN2NkOGViMDI3ZTkzNzU3YTgyMDBkYjY0YjhlYjRmZTgzOSBsZWdhY3ktdHJ1bmsKKzI1ODQ2IGZmY2IyZmQyOTQ3ZTEyOGE3ODEyYWU2OTY1NzM0Zjc2MTAxNTdhODkgbGVnYWN5LXRydW5rCisyNTg0NyBiMzYwYTY1MGEwZGJlNDllZDMxOWI1YjM0MmZjM2Y3OTkyMGQxODg1IGxlZ2FjeS10cnVuaworMjU4NDggOGVjZDFiYWQyNDA4MWI1Yzk1MjE4NDA1YTFlZTc3YWNiZWZkNzk5YyBsZWdhY3ktdHJ1bmsKKzI1ODQ5IGYwMmNkYjJiYzE3YTczZmI5ZDQxMjk2ZjhmYzJlMGMwNDZkMDczZDcgbGVnYWN5LXRydW5rCisyNTg1MCAxMzYxZjdiYjNmMTk5MzcxNmJkNDkwMmExNjBmYTVhNmQyYmRmN2RjIGxlZ2FjeS10cnVuaworMjU4NTEgNjAzOTI1NGFhYWRjNDg3Mjc5NzhiZTk0NzdkYWE0OTBjNmY0MTk0ZCBsZWdhY3ktdHJ1bmsKKzI1ODUyIGQ0ZjU0MTQ2N2I2ZDUyZTU4OGZmMGM0MjMyNjQ1OTllMWE2MTY4MTggbGVnYWN5LXRydW5rCisyNTg1MyBmZjlhYjdkMzBiYmZiZDIxYjZiNzE2MWQ0ZGJjMzU1MmQzN2E1NzBmIGxlZ2FjeS10cnVuaworMjU4NTQgNDIyNTEzZjQyMGNmMzlmYzI3MWI0NTZhYjE0Y2I1NzM2MDAyZDExNCBsZWdhY3ktdHJ1bmsKKzI1ODU1IDY2YWRiNTUxY2QzOGYzZDJiMGZhNThjNjA3MTI3OWY4MTdhZjI0ZjMgbGVnYWN5LXRydW5rCisyNTg1NiA3MjI0YTFkZjQ4MDlmYjQ3MWFmMzRiMmRkMGYzMmE5MzdjOTJlYjVlIGxlZ2FjeS10cnVuaworMjU4NTcgOTFmOWEyNDg4N2NiNWU1ODA4ZWUwNTNhN2FmMGNiZTMzMjE2OWM3YiBsZWdhY3ktdHJ1bmsKKzI1ODU4IGVjZDE4MWIwMmE4YTk2NmFlMWQ3YWI5MWYxMGZkMjFlMWRiYjc4YzcgbGVnYWN5LXRydW5rCisyNTg1OSAzOTNiMGMzZDk3NzMyNDdhNmZmMzEzZWQwZjkzY2Y4Y2MyYzdjM2Y1IGxlZ2FjeS10cnVuaworMjU4NjAgNTRiY2UzY2FiY2NkNTdjN2MzOGY2ZTQzMGE2Y2E2OTg4NTgzZmYzOSBsZWdhY3ktdHJ1bmsKKzI1ODYxIDNhM2RlNjU2N2YxYTVkMjE1OTcyZTY1NmFmYjY5OTU1MTM3NzI0OTUgbGVnYWN5LXRydW5rCisyNTg2MiA4MmJkYmNhMDJjMDc1MWFjYTM5MzdhM2U5ZWMzNWVhZWU1NGY3NTdjIGxlZ2FjeS10cnVuaworMjU4NjMgOWUzZDZiNWNlZTA3NjJkNjYwNTM5NjJhMGJlYWM4YjkwN2M4MDFjZCBsZWdhY3ktdHJ1bmsKKzI1ODY0IDViOGJlODYxMWQ4Y2Q4OTFkMTIyYzg5OGQzYWU1ZjVkZDM3MDg1NDAgbGVnYWN5LXRydW5rCisyNTg2NSBjODE2NTc1OGE2ZGU3YzJhMDVhY2M5NTc5NWE2ZGVkNTdlMjc1ZDNiIGxlZ2FjeS10cnVuaworMjU4NjYgMjVlMmI1ODBiMmNmYmJjYjFiYTE1NDgyMmQwZTc2NjcxMTkyNDM1ZCBsZWdhY3ktdHJ1bmsKKzI1ODY3IGEzMmM3YjNmMWYxMTA2YzljODhkODAyZWM0MWFkMWQwZTlkNTYxNTYgbGVnYWN5LXRydW5rCisyNTg2OCBlOTRlZGRlY2YzMzBhMDQwNDI5NDk4ZmE3ZmQ5MmE4ZWQyNTcxMGRmIGxlZ2FjeS10cnVuaworMjU4NjkgZTc3NzQ1MjY0ODMwNmVlNjIxNGE1Y2U4YWEzNzAwOTA2NDlkMGQzNiBsZWdhY3ktdHJ1bmsKKzI1ODcwIDNiZDIyYmQxODdjMzJiNTNjMmZkNmI4OWIxNjNiNjhiMjZkNTE3ZDQgbGVnYWN5LXRydW5rCisyNTg3MSA1NGMwNWE5NDdiY2JjNThkODk1MDE3MTQ1N2MzMzkyNGU2M2E4OWFhIGxlZ2FjeS10cnVuaworMjU4NzIgMGVkYTNmODJiNmYzZjQyODE0Zjc5OGYxYTQ4ZWYzOGJmZTQzMmFiYyBsZWdhY3ktdHJ1bmsKKzI1ODczIDIwNWMxMDYzMmYwODdmMzllMThiNDFlNTIwZGMzZTcyN2JjZjUyMWEgcmVsZWFzZTIyLW1haW50CisyNTg3NCA2NThlYTAyNjYzNGM0YzIyMDEzZGM4MWRhOTUzOGQ5ZTk1NjA5ODFkIHJlbGVhc2UyMi1tYWludAorMjU4NzUgMGRkMmY5YjU3Y2ZmNWFjOTE4ZTg3NWIyN2Y2NDY1MmFmYWQxOTJjYyByZWxlYXNlMjItbWFpbnQKKzI1ODc2IGE0MDU0M2IzZTNiZjMyNjQzYmIzNWQ5Y2RkNTJkODBhMWJjZGYxOGEgcmVsZWFzZTIyLW1haW50CisyNTg3NyA4MTQzMjlhNjQyNmNkNzdkOTYwNmYxM2M4YjAzNWUyZTFjYTMwYzA2IHJlbGVhc2UyMi1tYWludAorMjU4NzggNGVmMzY5M2YxYTI2YWFkOTAzN2RlZTk1MTNkMmVmMTk4MjNiOWNjMCByZWxlYXNlMjItbWFpbnQKKzI1ODc5IDY2NTc5MWQ1M2M0MzU2YTIyNjY1N2I5OGMxNTZhZjUyYjU5YzE4MjQgcmVsZWFzZTIyLW1haW50CisyNTg4MCAxNjI0NWE5Y2JmYTFkZjM3MGRhN2YxNDJmYmNmZDlmMjgxZWYwN2EyIHJlbGVhc2UyMi1tYWludAorMjU4ODEgN2M3YzkwZmM3MDA1YTdlZmM3OWY3MDg0YWYzMGVhMDdiMzkzMzRjOSByZWxlYXNlMjItbWFpbnQKKzI1ODgyIGMzZGY5YjdhNmFjYWIxODljNGNhZjQ1ZGYzMzI5MzFkNzczYmY0MjQgcmVsZWFzZTIyLW1haW50CisyNTg4MyA3OTViZGQ2OTIxNzYwMjVhNGE5MWFjNmNlZjg1MjgxMjAyZjBjNGRjIGxlZ2FjeS10cnVuaworMjU4ODQgOGJmYzkxODQ5MjQyYzMwODk4ZGNhZGQ5OTg5NDc0NDVmMmU4YzJhZiByZWxlYXNlMjItbWFpbnQKKzI1ODg1IDY0YTY4MzYxODQ4Y2Q0MDI2ZmRmZGExYjcxNDVlYTY5M2IwZGVjMzYgcmVsZWFzZTIyLW1haW50CisyNTg4NiAwYWFlMDk5ODZmYzk4ZjU2ZDc5YzMyYmUwNDFjYWQxZGFiNDMyMzVlIHJlbGVhc2UyMi1tYWludAorMjU4ODcgNGZmMzdjNThhYjg5MzkzYWQ5MjdhMjE2MDMyODg5MjU2MWRjZWFkMyByZWxlYXNlMjItbWFpbnQKKzI1ODg4IDBjMTkxMmY5ZDFjZTgzZGVmZTQ3MWY3ZDBmOWY2YjBlNTdhZWZhNTQgcmVsZWFzZTIyLW1haW50CisyNTg4OSBhMmZlMGVjZDBjZTJhYmQwY2RhNjY5OWY1ZjhjZDI1ZmYyZjY3MjYwIHJlbGVhc2UyMi1tYWludAorMjU4OTAgMmY5YzZjYmVhYTYyOGQ1ZTNkZGJkNWM2NTVlMDQ1YjAyM2ZjODFhZCByZWxlYXNlMjItbWFpbnQKKzI1ODkxIGQ2NmU0ZTdjOWU5YTcwYzU2MDNlNDU5OGZkOTIxM2U3MDA2Mjc5MTIgcmVsZWFzZTIyLW1haW50CisyNTg5MiA0NTcyMWMwMjE2MDY2NGZjYjVkYzU3ZjYyMmEwZjA2YzJhZDhlZTNhIHJlbGVhc2UyMi1tYWludAorMjU4OTMgZWYzMTRiMzdlMjYwY2VkYmJjNTcxYjZmYzUyMDM3MTgwMTVlOWJiOSByZWxlYXNlMjItbWFpbnQKKzI1ODk0IDkxOThmYjA0MzVmYmFhY2VhOTA3MTg4NWNjMWNkYzg1NWNkZDQwM2QgcmVsZWFzZTIyLW1haW50CisyNTg5NSAyOTEyMDE1YTFlN2I3NmI4NWU1ZTNjMmE3NDZhYTRiYWE5MDZjNWEzIHJlbGVhc2UyMi1tYWludAorMjU4OTYgODA5MGQwZDYzZWUxYTU5MTdlMGRjYjk1ZTg4Mjg5NDhmOGY2MmY5YSByZWxlYXNlMjItbWFpbnQKKzI1ODk3IGY2YTdmZGJkMzBkNGYyMTZmNjFkYTYwNmU5ODg5Y2VkNTFlM2QzZGQgcmVsZWFzZTIyLW1haW50CisyNTg5OCAyMWU4OTcyZDM3ZTQ2ODFlY2I0ZTk5YTQzZDg4NzBmMTQwZTdhZjYzIHJlbGVhc2UyMi1tYWludAorMjU4OTkgMWFmYmM1NjE4OGIwMDc0OGNiOWExMDc3OGYxNDliMGExZTA4YzQ4YSByZWxlYXNlMjItbWFpbnQKKzI1OTAwIGRhOWFkZWM2NmUyYjIxOWExNDcxNThiODlkNDk1NjYyMzhhZTY1YzAgcmVsZWFzZTIyLW1haW50CisyNTkwMSBlMmNiZTljMzM0MTFhMGIwYjU3ODRlYTU1OGYzNDBmMDhkMjFiZmU1IHJlbGVhc2UyMi1tYWludAorMjU5MDIgNzVlZjFmMTY3MjVlZjRlY2FiZGNlZDk2MDJiMzE0NTQ0OGNiNmVmZiByZWxlYXNlMjItbWFpbnQKKzI1OTAzIGI3MjZlNmIzYTg1MjNjYTQ1MjI0Mjk3NzVhMzM1NzAzNTQ2OTA2NDggcmVsZWFzZTIyLW1haW50CisyNTkwNCAxNmU1NDJhZjJjNDViYzA3OTAzYWEzMGNiZWQxYmE2Y2E1Njg4ODc4IHJlbGVhc2UyMi1tYWludAorMjU5MDUgYzVjMTMyNjE2NmI5MjFhNDc5NjRjMGQ5NTk4OWQ4MTY2Njg2NjdlOCByZWxlYXNlMjItbWFpbnQKKzI1OTA2IDc1NjYxODdhMjAxY2YyMTQ1OTg2ZjczODliMjVhYjU5ZjU5YTVkZDAgcmVsZWFzZTIyLW1haW50CisyNTkwNyAxNDJmZDNlMTA3M2QxZTA3NTg0MjAyZGYzOGI2MTY3Y2QyNWNhYTg3IGxlZ2FjeS10cnVuaworMjU5MDggNmIzZTk5YjJmZjkxYzQ1NzFhMGQ2YjI2OWIyY2JkNTM5ZTJhMWZkNCByZWxlYXNlMjItbWFpbnQKKzI1OTA5IDA5MjJjOTE5Y2VkYmUzN2MwZDU5NzBmMjM5MDA4NGE1NjkxYjhmZWIgbGVnYWN5LXRydW5rCisyNTkxMCA2M2ZiY2E4OThlYWMyNmFjNDQ4NDg1ZDM4MGNmNzdkZjVkZmM0NzFkIGxlZ2FjeS10cnVuaworMjU5MTEgZmFkMDcxZmI0MTQxZmU2MDliYTY3NmZmNzU4NWE0NWE5ZjRlN2ZmMyByZWxlYXNlMjItbWFpbnQKKzI1OTEyIGFkMTViMzlhZDhmNzEyNDA0MDExYTI5MzUzMzM0NDBlZjlhOThiYTIgbGVnYWN5LXRydW5rCisyNTkxMyA4YjYzNmZjYjg2MTVlYTI5MjBlY2RiOTc3ZjVkMjYxYTQyYTQ4Mzc4IHJlbGVhc2UyMi1tYWludAorMjU5MTQgOWViNGU2MjMwOWIwZTIzMmUwN2NlZmQ0MDdjZmU3MzFhYjZiMWExOCBsZWdhY3ktdHJ1bmsKKzI1OTE1IDI1YjU5OWYzNjBiYzIxZDE4MzU3NGZiYjk5YzNkYTQ0ZmVmYWQ2MGMgbGVnYWN5LXRydW5rCisyNTkxNiA2ZGUxYTE5ZjQ3YTQyNWZlMTFmMjkxYmFjNmJhNDIwYTJiMmI0YjBmIHJlbGVhc2UyMi1tYWludAorMjU5MTcgZjlkOTZkZWRkMWY0NjZiNDdkMTA0N2E2MzNhZTkwMjMyMmYyNWNjMSByZWxlYXNlMjItbWFpbnQKKzI1OTE4IGYyYTNhZjRmYTRmZmVlZjM0YjdlYzcwZThhMTQ2NWI5NWJlZDUzMDEgbGVnYWN5LXRydW5rCisyNTkxOSBiNjhhZjRhODAwMGJhMTJhNjFhZGZmOGNkNTYyOWEyNDQ0ZGVmZDI1IHJlbGVhc2UyMi1tYWludAorMjU5MjAgM2Y0MjE2MzRjMzdjYzZjNWUyZjU1MDI4NTdiNTdiYjg2NGFmNzBmMyByZWxlYXNlMjItbWFpbnQKKzI1OTIxIGI1OWFkNGI5N2E0MjZlMTRmYjVmMDM0MjljOGY4ZjVhZThiOWEwYjUgcmVsZWFzZTIyLW1haW50CisyNTkyMiA3YTRjYjRlOTc5NzY2YWE2MGVkNTc0MzU1NjllNzcyNjg3YWJjZjlkIGxlZ2FjeS10cnVuaworMjU5MjMgMDQzYWQ3YWRjODk2ZjRhNDhmZTMzNDUyYzVlZjAyZjllYzkyZmVkMiBsZWdhY3ktdHJ1bmsKKzI1OTI0IDMwM2I2YWQxM2EzMmQ5OTUxMTJjOWEzMTNmMDdkYmM1NjdjN2Q4ZWMgbGVnYWN5LXRydW5rCisyNTkyNSAzYmYyYjVhY2E2MWVjMTg1MGQ1MDI2OTgyMjQyNmQxOGU2YmJjZjA4IGxlZ2FjeS10cnVuaworMjU5MjYgOWJiNDUwMzY1ZGY3ODcxYzBlNDljM2UyNDgyODM4NTczOTczNmY5MyBsZWdhY3ktdHJ1bmsKKzI1OTI3IDkwNmFkMzZjYjdiY2NlNzVkNWM4ODUxMDhjZGZhYWNlMDA3NWYzZjMgbGVnYWN5LXRydW5rCisyNTkyOCAzOWU0MmQ2ZjVkYTJkMDcwNGE1MjYyYmIzYjlkZmIwYmZhM2JjZWQ0IGxlZ2FjeS10cnVuaworMjU5MjkgYWVkZGEwYWJkMzEzZTAwZWFhNDdjZDI1ODdkOGZlYWQ1YTM5MzMwZSBsZWdhY3ktdHJ1bmsKKzI1OTMwIDZhMWM4NzUyYTY1ZmIwNzFmZGQ0NTEyYTk1M2RhZTE2MGZlM2MyMDYgbGVnYWN5LXRydW5rCisyNTkzMSBlZTRiNTliNWZlYjcyZjdiZWIwMmQyNzA5YTQwYjFkOTk4NTNhOGE0IGxlZ2FjeS10cnVuaworMjU5MzIgNDcwZTlkYTIxYzRhZTRmZjUxZjM2Mjc4MjUwNzNhZGY3MzE0ZWYwYSByZWxlYXNlMjItbWFpbnQKKzI1OTMzIGQxOTBiMmQzMDNjMjgxZDdiZDJjMTk2ZDQ4MTQyMGFiYmUwNGJlYjYgcmVsZWFzZTIyLW1haW50CisyNTkzNCA1YTMwZDRiM2RhMzdhMTBjNjAxNGE3ODE0NjAyZTk2MWUyNDBkMWM5IHJlbGVhc2UyMi1tYWludAorMjU5MzUgMjk4ODAyYWJkMzhkZmZmYTc5YjQ3MmMyZjVkZGMzMzcwZWIyNGZmYyBsZWdhY3ktdHJ1bmsKKzI1OTM2IDA2YTgxNTZlM2JjZjczYmZjYjY0NTdkMDg2YmIyNWNjZDYyMjRmNmIgcmVsZWFzZTIyLW1haW50CisyNTkzNyBiYzIwYmFhYWUzZWUxMTllMzlhOWYyZTJhMmY2YTI0M2QxOWRiMDQ4IGxlZ2FjeS10cnVuaworMjU5MzggZDcxZDNiNzE1YjEzZWEyOTRhZDgzZjUyZmRmYmYxZGJiYjAzMWExNCByZWxlYXNlMjItbWFpbnQKKzI1OTM5IGU2YzZiYWJjZWVlNTM2MGYzZGI3Mzg0ZDdhNDhjYWMxYTk1OWUyNzggcmVsZWFzZTIyLW1haW50CisyNTk0MCAzYTIxZGJlMWI2ZmU0Njg5YThlODVkNjBkYzUxYmMxNzczNGRhZjE5IHJlbGVhc2UyMi1tYWludAorMjU5NDEgNjRhMTA0OWZlNTNiOTYxYTUxYjg5OTBkNTQ5MGE5YmQxNDAyYjdkYyByZWxlYXNlMjItbWFpbnQKKzI1OTQyIGYwZWY4YjQyNmQ4ZDliMDdjYWIzZmFjN2JiYTM0YzliZjI4ODRkODcgcmVsZWFzZTIyLW1haW50CisyNTk0MyAyZDMzY2ZkNmMxN2YwNzc5YmY3Y2QzZDQwMjQxYjAwYjg4YTY5NTcwIHJlbGVhc2UyMi1tYWludAorMjU5NDQgOWExN2IzYTNhZjA5ODljMGQ0MWY0YWQzMTRhZTNkYTFmZjQxM2UxOCByZWxlYXNlMjItbWFpbnQKKzI1OTQ0IDExYzk1MmM3ZDRiZTY2MzgwNDA3NjQ5MTBiZTgwYmQ5YzNjMTdkZTYgcmVsZWFzZTIyLW1haW50CisyNTk0NiBiY2QxZmRmMTNhY2ZlMzY3MWFmNjg2NjQxMjBhNGZlODhjZmQ0YmM1IGxlZ2FjeS10cnVuaworMjU5NDcgOTNkYWE0ZmRlMDg3ZWRkYWM4M2Q1MTI1YTE5OWI0YTE3ODliNjZhZCBsZWdhY3ktdHJ1bmsKKzI1OTQ4IDNkNjgwODVmNDk1ZjllNThlMzY1MjQ3ZGUzMjE0OTY4NmJiMGUxOTUgbGVnYWN5LXRydW5rCisyNTk0OSA5MWVhYjc0NTgxMGYxMTNjNDA1ZmU2ZjI0NzZhNTI2YWU0ZDYxOWMwIGxlZ2FjeS10cnVuaworMjU5NTAgZjFkYmVjYjdlNDE2MGQyNzRlMmZhZDQyYjQ0ZDgwZDkzZTM2NzkzZiBsZWdhY3ktdHJ1bmsKKzI1OTUxIDY2ZTg1YTczMmRkZGUxOTI1ODZjYTRhMDJiNDAyOTVmNDFiNGE4ZGEgbGVnYWN5LXRydW5rCisyNTk1MiBjMThmZTQ4NzI1NzE2MGZkNjgzNzNiMDQwMmIyNzU5NWY5YTIxYmM2IGxlZ2FjeS10cnVuaworMjU5NTMgN2JjZTQ3NTFiZmIzNDBmMmYxODI4ZWQxZjM3N2Y2Y2YyMmUwN2Y1NyBsZWdhY3ktdHJ1bmsKKzI1OTU0IDdkMGYwYmI5NDQ4YjAxMDA2MjZkODM4YWE3Mjc2ZjE3YzE3ZmQ5YTQgbGVnYWN5LXRydW5rCisyNTk1NSBhNzU4ZDRjNDAxZTA4ZWFhZGM4MjA1YWNmMzZjNzcwODAzNjZjNTgxIGxlZ2FjeS10cnVuaworMjU5NTYgOWI1MzEwY2ZhMmUwZGRiMTYwYzczZjdiN2RiNWJiYTc2NWFjN2NmYiBsZWdhY3ktdHJ1bmsKKzI1OTU3IDIwNGQ0NmZjNTRmNjhlMDMzNGZkNzE2OTM2MGRkODA5YTI5MGMxYTUgbGVnYWN5LXRydW5rCisyNTk1OCAwYTNiZjIyYWVjYTRhMmU0Yjg1ZjRlZTcyMWExN2JkNTU0MWUzNGMyIGxlZ2FjeS10cnVuaworMjU5NTkgMWM3MjA3YWQ1ZGI4MTU3ODIzMzhlZGNlNTdmNWNhMTRmOWIyNjhmNSByZWxlYXNlMjItbWFpbnQKKzI1OTYwIDgwODIxYTY1ZmQ0OTgxODE4ZDRlNzI4YjljOGU3NDM3YTVmZGZkMDAgcmVsZWFzZTIyLW1haW50CisyNTk2MSAxOTRlZDVlMGRjOGZmMGRlMTMwZTliMjVlNjg5MzIwNDE2YjM2ZjhiIGxlZ2FjeS10cnVuaworMjU5NjIgMGM1YzY0Yjc1ZDVkMGExODEyZGU5ZWIzYTA3NTU1MWI2YzQ5NzQwNCBsZWdhY3ktdHJ1bmsKKzI1OTYzIGEzMzFjNjE2YmIwYWQ1Y2M1NGVhOWY3OTNlZGZmZDY2OGNjYzM0ZjYgbGVnYWN5LXRydW5rCisyNTk2NCBmM2E5MTNlNjRlYjhlZDRkYjkyNmIxMDA5MGE5ZGQxYWU4MDJhY2ZlIGxlZ2FjeS10cnVuaworMjU5NjUgMjg2OGU5YTllMjgwYjY4YTM5NjUyZTI2OTdlNTJiN2E1NDQyYTY4NCBsZWdhY3ktdHJ1bmsKKzI1OTY2IDNmNGIyZjkzZThiNWI1NDI2ZTg4OGM0OWI0NDliN2M1ZjgzZGRhOTkgbGVnYWN5LXRydW5rCisyNTk2NyBkYTE2NDVmZDljMjQzOGFmZWJlNzRjMDkzMjA3ZGI4YmY2NWE5OWM0IGxlZ2FjeS10cnVuaworMjU5NjggMWM4MzhiZTZkMDA0YmI4ODYwNjJmM2VkYzk4YTYwNDhmMDkzZTYwMiByZWxlYXNlMjItbWFpbnQKKzI1OTY5IGFjMjRjMmM5YmNhZjgzZDhjZGY1ZWNkZmRhYjgwMTY2ZTZiZmZhNTMgbGVnYWN5LXRydW5rCisyNTk3MCA4Mzc3NmJhNTgwZWYyMGE1YzQzNWRlNDJiN2Q2Yzg3NTJjYjg4NDAxIGxlZ2FjeS10cnVuaworMjU5NzEgNGM3YmIwYjRkMzU0YmQyNDc2MTNiZmZiYTEzYjk2ZTQ2NmMwZDMxNyBsZWdhY3ktdHJ1bmsKKzI1OTcyIGM5YjczMjYyOGU2YzYwNjNmMThmMGIyZDA1ZmM2OTVlNDVkZWY3MzcgbGVnYWN5LXRydW5rCisyNTk3MyAyNjc4NWZlNjNjYmJlMmQ0YzY1OTFhZGI4Njk4ZDYzMjZiMzQ3OTZjIGxlZ2FjeS10cnVuaworMjU5NzQgZjYyYmZiMGIwOTQ2Y2Q2YzEzNzI3NTkzNzFjYTBmYTUxNTc4N2VkZSBsZWdhY3ktdHJ1bmsKKzI1OTc1IGRkYzk1NDNjNzZhMDMxYzljYjJkMjM3OGQzYjEyNTMyOTIwMjE1YjkgbGVnYWN5LXRydW5rCisyNTk3NiBmMjk0ZmRkMThiNWIwOGE0YzA3MzFmYTkwNWE0ZWNiMDc2NzI3NjFhIGxlZ2FjeS10cnVuaworMjU5NzcgZDZmNTA2NGYyNjczNzEzZmE2NWU5M2ZlMTQ4NzJjMGVmNGNmOTA2YiBsZWdhY3ktdHJ1bmsKKzI1OTc4IDMyOTliN2FiYThlYmU3MDMyOWMxZWMxYzA0ZmVjZWE5NDU5MTRmMGUgbGVnYWN5LXRydW5rCisyNTk3OSA2Nzk2ZGQzMGE2MDI0Nzk0YmQwYTEwYjdkNGE2OTZlNjBiYTI5YmQ2IGxlZ2FjeS10cnVuaworMjU5ODAgMTlkNGU4MzZiZDA3NWVlZGVhMjExNTIwYzI2YWRiMTAwYmQ2OTUzZiBsZWdhY3ktdHJ1bmsKKzI1OTgxIGVjNmVjYmIzNGIwNmI5ZTA0NWI4OGU2NjJkNWRkODcwMWJlMjMxZDMgbGVnYWN5LXRydW5rCisyNTk4MiA2YTg1MDQ0OGZjOGU4ZTNhYzliMzZlYTk3MDc1NDk0M2ZmMTE4Mjc3IHJlbGVhc2UyMi1tYWludAorMjU5ODMgODMwYzgyOWE3ZWIyYWVkNTUyMmE3YTQ3OTc4OTY5ZGE4NmY0ZWNmZiBsZWdhY3ktdHJ1bmsKKzI1OTg0IGE2YmIzY2M5MTliOTY1NmQ2N2U3N2Q4ODU5Y2M0MGIyMmJjNjRhMWMgcmVsZWFzZTIyLW1haW50CisyNTk4NSBkOWYzMDMwM2M4NjBkMDIxOGMxZDU4MDQyNjNmMTQyZTE3OGQwYjQ3IGxlZ2FjeS10cnVuaworMjU5ODYgODgwZDMxMDY0OTliYWI1YmVmNGI5NzZhMzdkZDJiZWFjYTEyNWU3ZCByZWxlYXNlMjEtbWFpbnQKKzI1OTg3IDg5OGMzOTI0NzdkOTFkMTI4NjUyYzU3NDE4NTE4NGU3MjY1MmI5OTAgbGVnYWN5LXRydW5rCisyNTk4OCAwNDQ2ZWViNzg3YjdmOTJkYWQyMWE1NmRhYmQyYWM3MzE0ZWJkYzU0IHJlbGVhc2UyMi1tYWludAorMjU5ODkgNTFiMWM1ZWEwZmJiNDU2MTc0ZTU0MGI4OGY3M2E0NWEzN2FlMDAxMyByZWxlYXNlMjEtbWFpbnQKKzI1OTkwIDg0Njg0ZmMwMmRhMDA0ZjQ4YzNlYzk1ZjBhNWM1Nzg2NmUxNmU5N2EgbGVnYWN5LXRydW5rCisyNTk5MSA3MjMwZTAxYzNjNDk0ZWQ0YzMzMjA1OGE5MjRmOGMwNDI5Mzg2ODBlIGxlZ2FjeS10cnVuaworMjU5OTIgZTZmY2NkZTYxMDg2NmQxYjJmYTI2N2I0ZDcxMTU3ZjE4NTI1M2Q5OCBsZWdhY3ktdHJ1bmsKKzI1OTkzIDc4NzBmYWMwNDlmNzIxM2E3Nzg2MWU1MDk3NDQxMzJiMTFlNDczNzMgbGVnYWN5LXRydW5rCisyNTk5NCAzNDk0MDQ0MjZmYWFjMzdlMjQ1YzVkNzJkNTg5MTJjNTgyNDUxYjliIGxlZ2FjeS10cnVuaworMjU5OTUgZjhjNjU5ODQ4YWQ2Zjc4MmI3OGIwYWQzYTBiYWE3MjhjNmNmNDBmNSBsZWdhY3ktdHJ1bmsKKzI1OTk2IGI5Y2U5NjkyODFjYjczODIxMzUxZjY5ZTk4YzU2NGQwZGZjMDBkNTQgbGVnYWN5LXRydW5rCisyNTk5NyA3MjZjOTYxZjNkYjUxYTc1MGZlZWVjMTVmOTlkOWQ2NmM2ZGU2ZmI1IGxlZ2FjeS10cnVuaworMjU5OTggMGY4MDE2MjZjMmQzNzljOGM4YjRhNDkyMzA3MDQ4ODUwYTFlNmY3MiBsZWdhY3ktdHJ1bmsKKzI1OTk5IGQ3NzhlYTlkZTc4MGZhYzBmODc4NjMzMTU0NjIxOTQ2Yzc0NWY4YjggbGVnYWN5LXRydW5rCisyNjAwMCBjMTY2NjEwNGI1NTRmOWE2Y2VjZTNiNGExZjM0NjFkMDE1ODMzYjk3IGxlZ2FjeS10cnVuaworMjYwMDEgOWMyY2EzN2JkZWVjNTgxNTZlNGFhMjhkZWZhNWY0NGIyMDFiN2ExMyBsZWdhY3ktdHJ1bmsKKzI2MDAyIGVjMTA0M2Y2ZDA1ZWZjZTc3NzhhNmNmYjg2ZTRiMzI3Mjg1NmM4ZTcgbGVnYWN5LXRydW5rCisyNjAwMyBjZWNmMzFkYjhiMGRiNTczNDM4MGMyOGFjMzVjNjQ2ZWNiODM0MDJhIHJlbGVhc2UyMi1tYWludAorMjYwMDQgOTZiMTM2YjYxMTc4NDU0OGViYTA3MzIzMTlkZTYxZTU1ODIxZGY1OSBsZWdhY3ktdHJ1bmsKKzI2MDA1IGQyOTExOWQyNDNlOWUzN2E0YTQwNWRlZTE3ZmQ1MTVlN2MwZWEyZGMgbGVnYWN5LXRydW5rCisyNjAwNiBiMTcyZWU5M2MxM2M2YzkzMmRkYjBmZTZmYjY5YTAwYTk2NWI4NDY5IGxlZ2FjeS10cnVuaworMjYwMDcgMTUwZjAzNDA3ZDBkMjY5NzI0M2QxNmFhM2JmYmZmMjVkZTg0YmM3MCByZWxlYXNlMjItbWFpbnQKKzI2MDA4IDg2YTI3YmExYmVlNzVmMDIyYmRlMjJkZTEyYTA5NmQ4ZDlmNmVkNWMgcmVsZWFzZTIxLW1haW50CisyNjAwOSA1NjU1YmZiNjA3Y2E3MjI0YWQ5N2NjOTViYmMzNzFmMzlmYjFkZDE4IGxlZ2FjeS10cnVuaworMjYwMTAgOGE4MzZkMGI1OTc0MTY1ZmYwYjg0N2ZjMzFiNGIyMWNiMDUxZTQ0MiBsZWdhY3ktdHJ1bmsKKzI2MDExIDE2MTZiZDhiMzFiYzA0ODA4NzM1NDA5Nzk4Njc0YTViNDE4ZDFkZDkgbGVnYWN5LXRydW5rCisyNjAxMiAyMjg4YzcyNGZlMmJhZDAxNDBmYTY5OWM2NGMyMDBkMDRjZmZkYTk1IGxlZ2FjeS10cnVuaworMjYwMTMgZjNhNDE2YjE3OGM0MjNjZjA5YzQwZjQxZGVkOTZmMDExMGNkNWZlYiBsZWdhY3ktdHJ1bmsKKzI2MDE0IGU5NzE0NzVjMDQ3MTkzMWNlZWI2M2U3YmVhNmNkMWJmYmRmZjhmM2UgbGVnYWN5LXRydW5rCisyNjAxNSAyZGExMTM3NjAwYWU3ZTllYWExZDUzODk5ZGFlMmQwYjA1Mzk5OTIxIGxlZ2FjeS10cnVuaworMjYwMTYgYTgyY2UxOThmZTY5OGMyZTU3NmQ0MmUyZjk1ZjliN2ExZGJiYTFiMiBsZWdhY3ktdHJ1bmsKKzI2MDE3IDEwNzAyM2MwYzQ1NmRmM2MyYzgzMjQ5NDU1OThmYTA3ZWZmNmRlMjYgbGVnYWN5LXRydW5rCisyNjAxOCAzYWFkZTE1MGU3MTcyNDdiMzlhZWUwNDY4N2Q2ZDg5ZjEzMTBmYWE5IGxlZ2FjeS10cnVuaworMjYwMTkgYWY3MTkxNGQ4YmRmMGRmZTVkYjQ3ZDk5NWZkMGEwMGFiYjgzN2RiYyBsZWdhY3ktdHJ1bmsKKzI2MDIwIDQwOTMxMWM3ODM4MzY1M2Q2ODEwOTkzMTRjMDRkOTllMWI3N2FlY2MgcmVsZWFzZTIyLW1haW50CisyNjAyMSBiY2NkNDYxM2M0OTZhMzBiYjFiYWQ2NDE5Y2E3ODQ5YmY1OWVmNmQ5IGxlZ2FjeS10cnVuaworMjYwMjIgNDY0MDdkMGE2MDAwZjVlZTI4OGI1YWQ5NDhlNDMyMGNjYTZhZTczMSBsZWdhY3ktdHJ1bmsKKzI2MDIzIGMxNmJlYTc5ZjRkYjNiNGU3YzUxYTUxMzNlNzMzOTc1YWUyNDNjYzggbGVnYWN5LXRydW5rCisyNjAyNCAxYWVhN2FmMDkyNjBlN2YyMTRmM2ZjZTU0ZDIyZjIwMWMyZjFmOTExIGxlZ2FjeS10cnVuaworMjYwMjUgOWQyYThmNmIwNmI2ZmI5YzQ1ZDc3NmRkZGY0MThiNzc3ZGU1MjVkMiBsZWdhY3ktdHJ1bmsKKzI2MDI2IGY2M2YyYmM4YmRiYTZmMGQ1ZDhlNDJhM2VkZTdiNTAzNGIzNTcyODcgbGVnYWN5LXRydW5rCisyNjAyNyA0NWRiZmNmMGZhMTlmYmNiODA3YTU2YjE5ZWU3MTU1Y2MxY2UwNTVkIGxlZ2FjeS10cnVuaworMjYwMjggNTMyYzI3YTczNWI3YjkyNWI2NjhkZDk4MTNhYTljYzk0ZTlmMzQ5NCBsZWdhY3ktdHJ1bmsKKzI2MDI5IGQ5NzFkMWViNzJmNmUyNGZmYWQ5YjlhOWY2YTkwMjRkYmZhN2JlMjkgbGVnYWN5LXRydW5rCisyNjAzMCAzZTBkYTg0OTM5ZDBiMzM0MDZiY2VhMDgzNjJjNjBkZGE3YTJlNGY5IGxlZ2FjeS10cnVuaworMjYwMzEgYmYzYjA3YzYyY2Y3YmUyNGU0NjllM2M0MThiYTY1NDc0ZjY4YmE2MCBsZWdhY3ktdHJ1bmsKKzI2MDMyIGZjMmU3ZTM5N2JjNjZiZjk3YTg2MDkwMTdkZWI0M2QzYjkyMjA1YzAgcmVsZWFzZTIyLW1haW50CisyNjAzMiA0MDQ1ZTZlOTJmYWZhYmFkNDJmNmM5OTg5YjY3MDc2ZmJhZDQ1MmNhIHJlbGVhc2UyMi1tYWludAorMjYwMzQgODZjZTllZTE0MDQ1MGUxNmE1YmFiZmUxNGQwM2E1N2I1NmM0MDBiNiBsZWdhY3ktdHJ1bmsKKzI2MDM1IGI5Njc0MGM0MmU4MDcwYjcyZDQzMTU2NDU2MDg5NDU5MTI4MzY1NWYgbGVnYWN5LXRydW5rCisyNjAzNiA5MTFmZTA3OTMwNTA0NjgxMzFhYTdkOTJjN2Q4NjZhY2Q3NzlmNzRkIHJlbGVhc2UyMi1tYWludAorMjYwMzcgNTc4MTFjMzU1ZjNhYmNlZTU3YjMzMzA3MThlNjQyYzllMTFiZjUyMSBsZWdhY3ktdHJ1bmsKKzI2MDM4IDBiNThlYTA3NDk1Y2IwN2ViOGZmY2Q4ZmFlNGU4NzgyZWUzYzZiOGYgbGVnYWN5LXRydW5rCisyNjAzOSA4ODFhNmMyZDVkYjJiOGNkNmZhYmU4ZmNiYmIxOTM1NmI5N2M5YTBmIGxlZ2FjeS10cnVuaworMjYwNDAgMThjZmVmMDExYWJlN2U2OGFmNWUwZmJkZmNjY2Q4ZjgxY2M5MzRjYyBsZWdhY3ktdHJ1bmsKKzI2MDQxIDQ4OGI5YjNmNTk5YWQ0MTBkYjFjMTI2NzU5N2M4NWZhOWJlNDBjOTAgbGVnYWN5LXRydW5rCisyNjA0MiA3YzBjY2FjOTdmOGVmZDdkODU2ODEzY2U0Yzg1NGQzZWYzM2YxODYxIGxlZ2FjeS10cnVuaworMjYwNDMgMTIwZTRiYTA1NTBiZDcwOTc5NzkyOTFiODk3MTk1ZGQ5ZGUyZjhkNyBsZWdhY3ktdHJ1bmsKKzI2MDQ0IDQ0YmU1ZTc0ZjE3MjdiZTQ1NTkwY2YyMjFkYmViODhiZjk0Y2RiMjggbGVnYWN5LXRydW5rCisyNjA0NSA2ZjJmMWIwNGU4MmUwZGM5NmQ3MDUxODk3NzNjNDg4YmNjM2Q0ODhmIGxlZ2FjeS10cnVuaworMjYwNDYgZmQxYjhlYmU0ZWFlNDhiNmQ0N2ExODgwMzI1MzljMjBmNjIwYmViYSBsZWdhY3ktdHJ1bmsKKzI2MDQ3IGI0NTc2MzY1MzllODBkNTExMTFiMGQ4ZjU1NjYwMmM5NWIwNWU3YzIgbGVnYWN5LXRydW5rCisyNjA0OCBmOGJkOTMwNjQ0YWEzNDRlNTk2OWVmZWI5NGNjNjM2YzczMTQ2MGY2IGxlZ2FjeS10cnVuaworMjYwNDkgZWVlMzM3MmMyZjk2MmQ0ODU1MjkyYWE1NGQ0NzE1OGZlODAwNWE4ZCBsZWdhY3ktdHJ1bmsKKzI2MDUwIGMwNTk2Zjg0YThmYjE0OWIzNzgzNzA5ZDk1MTYyOGNkNmViMTUwYjYgbGVnYWN5LXRydW5rCisyNjA1MSA2MTQxNjdkZjIwOTYwYTYyYmNkY2ZjZjYwZmFkOWRlOTZmMzQxZTVkIGxlZ2FjeS10cnVuaworMjYwNTIgMDBiMjk3MmFiNGE0YjFhMWIzZTk4YTY5NWYyZjA5NTU1YmViYmQ5YyBsZWdhY3ktdHJ1bmsKKzI2MDUzIDVhZTNjMzE2NzNlNGRkNjYyMWE3ZmY3MDM4YmRmNmVhYjFjMjkxYzIgbGVnYWN5LXRydW5rCisyNjA1NCAyYzAyY2YyNzhmMDI4MmYxN2VjOTU5YWQ2ZDlmYzEzMDY1NGRkNzFmIGxlZ2FjeS10cnVuaworMjYwNTUgNTk2MTY3NjQ3YmNmNTdkYTQ2MjU5YWY2M2NiMzUwNTQzOTA1OTBkYyBsZWdhY3ktdHJ1bmsKKzI2MDU2IDE3Mzg3MTI5MzAzNDRhYTI0YzQzMTM5Y2QyOTUzM2JlNWYzZTA1MWIgbGVnYWN5LXRydW5rCisyNjA1NyBmMDU4M2IxZTkzYWIwZjhhNTI2M2Y0ZDYzOWFjMmM0Mjg2N2FiMzdjIGxlZ2FjeS10cnVuaworMjYwNTggZmEwZjM1Zjk0NGI1NjMwMGQ0YWZhOTgzMGYzYjNhYmQ1ZjA2N2EwMiBsZWdhY3ktdHJ1bmsKKzI2MDU5IDZiYjQzODZiMTExMTAzMzQ0Y2U4ODMzYjM3MjFjZjI3M2JiZWRhYzEgbGVnYWN5LXRydW5rCisyNjA2MCBhNGExZTZmNTU1MzE4YWUwMjM2MzMzNTc4OTIyMDczMWQwZDg1ZmJmIGxlZ2FjeS10cnVuaworMjYwNjEgMzVmNThjMjk3ODk5NjQ0Y2MzNzkxNmI2MWU2OTM3ZTRhOTEzNjVmNCBsZWdhY3ktdHJ1bmsKKzI2MDYyIDBlZWNlNzNjMTNjMDhkZWFkNzRhMDk1ZTRmODJkMWJlMWZlMGNiMjggbGVnYWN5LXRydW5rCisyNjA2MyBjZjFhMDVjODY1OTVjMTBjYjIwYTRmYjE1MzA2Y2VhOWFkYTY3NTRmIGxlZ2FjeS10cnVuaworMjYwNjQgZjA3Y2E5OTcyMzA0MDg5MjlkMjQzMWQ1NGM5YzY4YWM2MjMzOGFkZSBsZWdhY3ktdHJ1bmsKKzI2MDY1IGUwZWUwMDk0MTdkZjA3M2VkMWU0MGM3OWVjMGViOWNkMDNjY2VjMzUgbGVnYWN5LXRydW5rCisyNjA2NiAxOGRjY2RmMmM0NmQ4MDI3NGViYmRkOWMzYjllMzU2NWU0NTcxZjYzIGxlZ2FjeS10cnVuaworMjYwNjcgODcwM2QyMDUyMzM5OTg2NmYyOTE3YzU3ZWMyNTBmMjFkYzdjY2NhNiBsZWdhY3ktdHJ1bmsKKzI2MDY4IDE0ZWJkNzYxMDkwMjZjYWNjN2YzZDM0NzcyYTUyYTk2MDRkMzc4ZTAgbGVnYWN5LXRydW5rCisyNjA2OSBkYzJmNzQ1ZmNjNjdlODJjN2RlNDRjZWRmZDQyZmNmNWNhYjkyODVlIGxlZ2FjeS10cnVuaworMjYwNzAgYWVhNmRmZWFhYWI4NDE2OTJjMDI4OGQwMGY1Y2IzMTNkNzMyZTcxMCBsZWdhY3ktdHJ1bmsKKzI2MDcxIDNhYTRiZjdhYzMxZTk4NWYzNTEzYTg2N2E0NzE3MTUwNTljNTdhMWYgbGVnYWN5LXRydW5rCisyNjA3MiA4YTIyNWJkODc2M2FkMGZkNjBiZGQzNzg5YWVmOWVhNGVkOGM5MThkIGxlZ2FjeS10cnVuaworMjYwNzMgY2E0NjVlNGQ4OGJjMWY3MmJjMzY5MzRlYTM5NWY5NzM0NTExOTFmMyBsZWdhY3ktdHJ1bmsKKzI2MDc0IGIzODNkZmUzNmVlZTdkZWEzNmZiMzJhNjIzZTk1YjFhODBmMjEwNDQgbGVnYWN5LXRydW5rCisyNjA3NSBjYzhiNzMwNDBlODM3ZDZiZWUzMDcxMTg3ZTJlODZkNjk1NGEwMzAxIGxlZ2FjeS10cnVuaworMjYwNzYgY2VjYTZjYzQ0NDIwOGMxMDhjZDY5ODdlMjg0MjgyZDUwMTgyNmVhZiBsZWdhY3ktdHJ1bmsKKzI2MDc3IGUwZWRmZWVhNTE4M2I0NjMwMTczNzI2ODNhZjkwODI3NTNiNjE3NmIgbGVnYWN5LXRydW5rCisyNjA3OCAyMmZkYjQxNmJhMmYxYjQyOWZlYTc2MjAzZDZiZmMxMTIyYmVjOTE1IGxlZ2FjeS10cnVuaworMjYwNzkgMGJkZDQxM2EzNDE2OWI0Njk0OTYxYjA5MzkyMmE2MTk4ZGY1NDJjMyBsZWdhY3ktdHJ1bmsKKzI2MDgwIGMzZDYzNzMwODk1NGEzMTIzZGNhODdhZmEzOWE1MzJlNzA5NWFjNmUgbGVnYWN5LXRydW5rCisyNjA4MSBmYTBhYzg0NTkyOWIyMWUwZWNlNjVhMGE2YjczMzA5ZmI2YTk1ZWJmIGxlZ2FjeS10cnVuaworMjYwODIgNmM0YjE5MzAxNmM2NzVjMWM1MDMwYzMxNzY3OWRhYTkwNGQ0ODBhZiBsZWdhY3ktdHJ1bmsKKzI2MDgzIDI1M2RlNTg4ZjJmYjY1ZTJmMTc0Y2RkZDkyM2FlZjgyNTZiNjdiNzkgbGVnYWN5LXRydW5rCisyNjA4NCBiYTY4ZGRhMTVkZjA2ODdlY2NhMTIyZTc2YjEwM2RhNmJmMGZlMjQzIGxlZ2FjeS10cnVuaworMjYwODUgMWUzMDYyZTY5ZjJjYzExMDM1OWQxNTRlNjJjMmVhN2Q0MTY5NGJjNyBsZWdhY3ktdHJ1bmsKKzI2MDg2IDliYWE4YzlhMWU4NDNhOTgxMzliZWNiNjk1OTA4NWQ5MzhiYWM2YWMgbGVnYWN5LXRydW5rCisyNjA4NyBmYTk1NTljNWIxMDM3MTUzMjY0MzZiYTBmNTQ2NzYyZDVjZjliMmRlIGxlZ2FjeS10cnVuaworMjYwODggYzg0MTEwZjA1ZGMzNmM0NzE5NzYwMWY2OWVlNjIzYzljYjVmNWIzZSBsZWdhY3ktdHJ1bmsKKzI2MDg5IDA5NzM2OTNlNGFkMjFkNjg4YjNhNDc3NzE5YjZhZjU3ZTUwZWExMTcgbGVnYWN5LXRydW5rCisyNjA5MCAxNGI3OTg2YTkyZTEwMzhmYTkwMmM0MDY5MTYzZTcwYWRhNmNiYTE0IGxlZ2FjeS10cnVuaworMjYwOTEgY2RmZjNjN2MxYTc2NDM3OTEwZjQxOWNlMDQzNWNiOWFmMWNmNzgyYyBsZWdhY3ktdHJ1bmsKKzI2MDkyIDY5MzFkYmQyZWRiNDIxZGI1MjNlMmI5Y2U2YjA3OTNkZmQ5ZGFhYjQgcmVsZWFzZTIyLW1haW50CisyNjA5MyAwYjY0NTUwYTc0NjExNWM0N2ViNmU4MzQyZmYyYzNhYjg4NGIwYTc1IHJlbGVhc2UyMS1tYWludAorMjYwOTQgMDAxNTRhMGZkZTYxNzVhNGM4NTRkZjZiNzU3YjM0ODA3YzU2NGMyYSBsZWdhY3ktdHJ1bmsKKzI2MDk1IGQyNDY3MDM4NGMzOWNkMjYwYzQwZWZmZmJjMzY3Y2EzM2VkNWQ0ZjAgbGVnYWN5LXRydW5rCisyNjA5NiAxYWU0MjMyNjJmYzk4NjgxNWVkOTY4YWMxOWM2Nzg5MDRiZGM2NDhkIGxlZ2FjeS10cnVuaworMjYwOTcgZjAyZWE4ZTgyNGIwYzEzNzg4ZTFlMTQzYmQ3NjEyMjg1M2MzZDdmMCBsZWdhY3ktdHJ1bmsKKzI2MDk4IDczZTgyNzIyYjAzYzM5MmYxNTZhMWFiMDU5N2Q2M2I1OWRkNGI3ZTkgbGVnYWN5LXRydW5rCisyNjA5OSA4MTBjMTRmMjQzNzM2ZDkyMmI3MjAzM2FkMWQ5OGViMDBkZDA3NGNjIHJlbGVhc2UyMi1tYWludAorMjYxMDAgODI2YmMxNTIyZDIyMTJjM2Y0ZWIzMDAwNzkxYmE0NmQ0MGRhNzRiMSBsZWdhY3ktdHJ1bmsKKzI2MTAxIGU0NDljODFjMWMwMWY0ZTAyYzUwZThiYzE1NmMxZTEzZTM5Y2JiZDAgbGVnYWN5LXRydW5rCisyNjEwMiAyNzFkNjIxZjBlOWZkZjIyZGE4M2E4MjhjYzE5NTUxYmRlNDg2MDBhIGxlZ2FjeS10cnVuaworMjYxMDMgNzcxYjJhOGQ0NDVkYzMyMWFkNTczZjc5YjNjZDhkYjdkMjJhZWZmOSBsZWdhY3ktdHJ1bmsKKzI2MTA0IGY1MWI3Nzg4NDAxMjg3ZWZlM2VmNmU2N2Q2Y2VjNzk0ZjZjZDRlYWMgbGVnYWN5LXRydW5rCisyNjEwNSA3MzYxZWM4ODE4OGE5MWUxYTFlOGM0YmQ0ZmUzZDVkZGJlNTVjOTZmIGxlZ2FjeS10cnVuaworMjYxMDYgMjgwZTdhMjBlMzFhNWM4NjgzNGFiZTRhYTljMjMwOWIxZjk0YzlkNyByZWxlYXNlMjEtbWFpbnQKKzI2MTA3IGMxMThkMDk1YmRkZWI1ZGIxNzM2Y2RhZmZkMjJkNWM3OGMzZmM3NWMgcmVsZWFzZTIyLW1haW50CisyNjEwOCBmZWUyZjY2ZjNjMTY1ZWYwYzE2MTkxNGZjMmJhZTM5ZWY2NTMwMjY5IGxlZ2FjeS10cnVuaworMjYxMDkgMWJkZjIxN2JhZDkzMDliNzY2OTE2YTQ4ZmEwZTdkZmZjYmMxMGVjZCBsZWdhY3ktdHJ1bmsKKzI2MTEwIDIyMjRhZmM2M2E1YmI5NjNmZjM1MTQ0NGRkMjQ0ZDEwMDY5N2I0NGQgbGVnYWN5LXRydW5rCisyNjExMSA1M2VkOWRkNmJjZDVkNDkwOWU3OTk0MzYwZjFkODEwN2I1NGIzOTY3IGxlZ2FjeS10cnVuaworMjYxMTIgNTIyNDA1YWIzNWMxYWQyYzYyMjhjMDU2MjZkNmZjOGZiZmFhOGNhYSBsZWdhY3ktdHJ1bmsKKzI2MTEzIDRjMTBmMTY5MjUyMzI2NDU3OWQxNjBiZmI2N2Q0OWU0MjM4YTY2ZjAgbGVnYWN5LXRydW5rCisyNjExNCA0MDgxZWZmOTMyZmUyODc5MjZiM2NjOTIxMjI1OTY1ZGVjMjk1OWQ4IGxlZ2FjeS10cnVuaworMjYxMTUgMmFhOTQ5ZDAyZDQwNTMyOGQzMTA0YzQyNTcyMzg2OTkwMTg5MWQ2MCBsZWdhY3ktdHJ1bmsKKzI2MTE2IGNiNWZjYTNjZTc5YTlmYTc4YzZhNzJhNzkwODhmMDdkNWExY2RmZDUgbGVnYWN5LXRydW5rCisyNjExNyBmZDQ0OTk5ZTdlYWQ0MjE3ZmQ1MTNmNTA4NWRhZGY1OTA2MjE1NGRmIGxlZ2FjeS10cnVuaworMjYxMTggNjg3MWU2NzQ1YWE1NDIxMGE5YjEwMmNlOGNhM2M0NzU0OGJlM2YyOCBsZWdhY3ktdHJ1bmsKKzI2MTE5IDZmYTQ2YzIxNzY2ZDkyMzFkZGFhOGRjN2NhYWZkYTc0MWJmNjE0ODkgcmVsZWFzZTIyLW1haW50CisyNjEyMCBlNzBjOWI3YWFmM2Q2ODk2NGUxZmMzYzk2MmUyNTQ3NTRlNWE0ZGYyIHJlbGVhc2UyMi1tYWludAorMjYxMjEgODcxOTg2NjAxNGFiMzZhOTA5Zjc1NjBiMjhlNDY0MmFhNjIxMGM2MyBsZWdhY3ktdHJ1bmsKKzI2MTIyIDk5MzFmMTU0YmU5ODhmNWQ4OGQ0ZTllZDBhODY1ZGU5ZDcxNzJhOWYgbGVnYWN5LXRydW5rCisyNjEyMyA4MTdiNDk0YzliNWU0OTdiNGZkMDAzNzk3MGFjMGE0ZTJhMmFiN2E0IHJlbGVhc2UyMS1tYWludAorMjYxMjMgNWI1NDY0MGU3MmI2NmI4YzA4NTc5NWUyOGVmNzU2ZDU4Yjk1NWM2YyByZWxlYXNlMjItbWFpbnQKKzI2MTI0IGE3ODg0ZDdkMmQ0ODkwMGY5NWQyZDBkNDZhZjkzNGQ0NDkzMTkxMjggcmVsZWFzZTIyLW1haW50CisyNjEyNSAzNDI4MjI5ZjEyYmIxOWEyODY5YzMzZmI0MmUwOWU4NTM0MmM3NDVlIGxlZ2FjeS10cnVuaworMjYxMjYgYWQzY2U3MzAxNmJmYWExYmM2Y2M1ZTY2NzdjOWU3NjczNjNhZDFjMCBsZWdhY3ktdHJ1bmsKKzI2MTI3IGQyNmQ4NTc1YWM2MjFjZjJmYzhlZDZiOTgyZWFiMzI5YmU0ZThmODQgbGVnYWN5LXRydW5rCisyNjEyOCA1NGVhOGE5M2VjZDdlNjIxOTdiM2I2ZjMzMmRlY2FmOGVjMjNiMzZhIGxlZ2FjeS10cnVuaworMjYxMjkgM2E1MDY1MDA1ZmNmZDEyMTEyYWEyYjMyY2QzNjVhNTg4YTU1OTUxNCBsZWdhY3ktdHJ1bmsKKzI2MTMwIDlmNTA5ZTQ5MGZjYzc5Y2ZmZWRkYjJkNGY1ZjNkNjFlYjZiZjMwOGUgbGVnYWN5LXRydW5rCisyNjEzMSAzMTRlMTQxNmFhNWQ1ZjVkY2NlNjAxYjRhNTY2ZTE5YTY0MmM1OGI5IGxlZ2FjeS10cnVuaworMjYxMzIgMjYwYTE3MjBmNjI5YzRmZjM3MDFhYjRhNGQ2NjIzNjZkNjVhZTE1OCBsZWdhY3ktdHJ1bmsKKzI2MTMzIDU5ZDM5MTNhMjljNDQzOTMyM2M3NDEwYTdiYjY0OGM5ZWVjMjRmYzkgbGVnYWN5LXRydW5rCisyNjEzNCBhNmY4ZTEyODZiMTU1NmVkZWViZDUxMjNhZTA0ZDY2ZDc3MmEzYjY4IGxlZ2FjeS10cnVuaworMjYxMzUgMDJmZGRmN2MyNWMyZGUzZTMyYmYwNzgxODMzMjdiMzUwM2EwZjNiOSBsZWdhY3ktdHJ1bmsKKzI2MTM2IDc0ZGU4NjQxODI4NDEwZTI1NjJkYjU3ZjcyNjQ2Y2Y1ZDJiMTZjMTggcmVsZWFzZTIyLW1haW50CisyNjEzNyBkNmVmOTU3YmYyOTBmYzZlNjVmNzFmZDcyMzQyYzY5NDE2MWNhMmVhIGxlZ2FjeS10cnVuaworMjYxMzggYTZhOGM2OWVjMGU3YzU4ZTEzYjkwY2I1YmFlZWNlZmE2M2NjNTM2NyBsZWdhY3ktdHJ1bmsKKzI2MTM5IDM2MTg2YWYzYzEyNTE2NGE3MGVhMWZhZDJhNTdhOTcyNzBlNmI4Y2EgcmVsZWFzZTIxLW1haW50CisyNjE0MCAxNDlmYmJiMDM5MTU3NWI1Zjg4NWI3YzkyZTA3MjlkOTZhY2VmYTg1IHJlbGVhc2UyMi1tYWludAorMjYxNDEgNWY3ZDcwYWI3NGVlZmZkZmNkZGU3MjFjZGE1ZmFlYjcxNWM0YWVlOCBsZWdhY3ktdHJ1bmsKKzI2MTQyIGVjNjdmY2UzZmEzY2VkNGEzYzhkOGNjNDhiOTY1NzBmZjJmY2RmYmYgbGVnYWN5LXRydW5rCisyNjE0MyBkOTlhMWRkZjk1MTgwNTE3OGQ4ZjE4NWE3ZjMyNmE4MmIzZmExYmUxIGxlZ2FjeS10cnVuaworMjYxNDQgMDFjNWFlNmZjNWJiYmEzYTdlMWFhMTU3YzY2ZDFlNTVlOTNmMzBkZSBsZWdhY3ktdHJ1bmsKKzI2MTQ1IDBiMmMwODc1NDJiY2JmZjM3MDQ2MjIzNDlhYmI5ZDljNWI1YjA2YmMgbGVnYWN5LXRydW5rCisyNjE0NiBhYThkNTk4MjNhZGQxYThlN2Y3ZThhN2ZlOGM3ZjcxMGE5N2UzYzhiIGxlZ2FjeS10cnVuaworMjYxNDcgYThjNzVjZjc0ZGMxNDExMmMwZWM4MGMyYzJkYmY2NWFmYzczOWRhOCBsZWdhY3ktdHJ1bmsKKzI2MTQ4IDAyOGViYzhmYjM5MDhhOGNkYjdhOTQwYmUxYTFjNDVjNDQxNzI4NjggbGVnYWN5LXRydW5rCisyNjE0OSAyMjM5NmY3N2MzNTZhYTMwOWZiOGYwMjBhNjg5ZDg0MzlhNDMzYjkxIGxlZ2FjeS10cnVuaworMjYxNTAgOTdhMzQ2NDNlNTQ0YTk3MDVkZGRkNDg3ODFkODIxODMyMTA1MTEyZiBsZWdhY3ktdHJ1bmsKKzI2MTUxIDA2NjY4ZDhkOTM0M2Y0NjRkOTEwOGQzZDJjYWJhZTRmNThiMzliNjUgcmVsZWFzZTIyLW1haW50CisyNjE1MiA5YWNhYjc2YjAwMTc4ZDY0ODdkNjRjYjAwZDJlYTg1MDAzYTNhMzRhIGxlZ2FjeS10cnVuaworMjYxNTMgMTkyMjkxNWNiNzNkN2E4YWNjYzUxZmY5NWQ1NDg4MDgxOWVmNmY2MiByZWxlYXNlMjItbWFpbnQKKzI2MTU0IDNjODc4MTQ5MmQxZmRiOGJhMzk1MGUyZTk0YTRmNzVlZWIyZTRhN2IgcmVsZWFzZTIxLW1haW50CisyNjE1NSBmNjYzZmZiZTllNWM0MGQ0YTJhYzU5ZThhODhkNWYwOGVhOTJiOGFkIGxlZ2FjeS10cnVuaworMjYxNTYgNGVkMDZmOGFhZGQzNzg2MzI4OGUzNmRhYTZlZTMxNmU0YmU5YmFmMiBsZWdhY3ktdHJ1bmsKKzI2MTU3IGFjNWUxZDkwMjliNzk0NTI2YzdkMzIwODJjN2UzMDgwZDlhZThlMTEgbGVnYWN5LXRydW5rCisyNjE1OCA2OTNlMDAxNjQwODFhZWRjY2M4Y2Y0NzUwMmY4ODQ4ZThjYjZmMTU1IHJlbGVhc2UyMi1tYWludAorMjYxNTkgMGViODNhYWNlMDcxNjY3ZGE5NWE4MzJmZGVhYWE4NmYzNmFmMzhlYyBsZWdhY3ktdHJ1bmsKKzI2MTYwIDU4YjJmNDYyNmI2NGQ3OGExZjE4NDU4NzYyNDcxZjg0NTVkZDE4OWEgbGVnYWN5LXRydW5rCisyNjE2MSAyMTAwODg3YjQ3Y2JiOWJlMmNmZWMxZjNjOGI2YWNkZGY4MWYwODVmIGxlZ2FjeS10cnVuaworMjYxNjIgZjAyNzcxNDZhYTE2ZGI2NDlmN2QzZjlhNzJmOWI1YWE0NDg4NWY5MyBsZWdhY3ktdHJ1bmsKKzI2MTYzIDE3YTE3NTFhZDFkOTAyMWZlYTg0YTE5NjA1YzM4OTliN2RmZGY3N2QgcmVsZWFzZTIxLW1haW50CisyNjE2NCAyMWYzNTMxMjQxNDVjNDNhMzkyMWM4MjI1ZTllNTU3MzA1Y2Y5YWZmIGxlZ2FjeS10cnVuaworMjYxNjUgNzczNDNhYTAzZTJmMzYzYzdiNDEwNDE2MTBmNzhjODMzNGNiNjFmNSBsZWdhY3ktdHJ1bmsKKzI2MTY2IGYxYWY4YWQxMTAwMGEwODliZTBmOWZkYjViYTM3MmMxOTgyYzE3YTMgbGVnYWN5LXRydW5rCisyNjE2NyBjODE1ZTAwM2RiY2Q4YmQ1YzBjZTQ1ODQ0MTE0ZjYxN2Y2NTZiZTRjIGxlZ2FjeS10cnVuaworMjYxNjggODgyZWE1Y2M3Njg3YWJiZThmNGM3MGMwMjRkODhhOGUzYWQ0MzI5NyByZWxlYXNlMjItbWFpbnQKKzI2MTY5IDMzMzdjNDFjMTMyYjExNGE5NGM1MmI1MGMxODRmZDlmMmM4MDI0MmEgcmVsZWFzZTIxLW1haW50CisyNjE3MCAyYjcwMjVhMjMyZTFmN2Y0OTRjYzk5YjMzY2ZiNTg5MzJhNmQzZTI0IHJlbGVhc2UyMS1tYWludAorMjYxNzEgYTNiZjJjOTdlODA4ZTQxNjQ4ZDY0YjFhNWZhNjkzZjExYjg4ZjcxMyByZWxlYXNlMjItbWFpbnQKKzI2MTcyIGRkODk4OGNhNGIxNDY2ZDM2N2ExOGZjYzBmZWE4NjA1NjE0NTA2ZGEgbGVnYWN5LXRydW5rCisyNjE3MyAxMmIwMDNiZTVkOTZjNTM4OTc3MDQ3YTMyZjZlNWExZmFlN2MyY2QxIGxlZ2FjeS10cnVuaworMjYxNzQgNTMzY2Q1MTk3NTc1ZGE3N2MwN2YxMWE2NmE1ZDM2MjNiMDU5ZmU3MCByZWxlYXNlMjItbWFpbnQKKzI2MTc1IDQzZWU3MzdhMWI3ZjEwYWFhMGE5YmQ1OTIyOGYzN2I2ODlkZjNjZDcgcmVsZWFzZTIxLW1haW50CisyNjE3NiAzNTE1NzY3MTIzZDhjOGNlNTM4ZmEyZTM1MWY2ZDg2ZWZhYTE3YjMwIHJlbGVhc2UyMi1tYWludAorMjYxNzcgMzViNzk4NDM4NTI3ZWI2MmZkNzYyYjZiNDVmNWI5ODYwN2E0YWRmYiBsZWdhY3ktdHJ1bmsKKzI2MTc4IDZhZmZmZmYxZmZmMWVlYTU3ZmVkMDMyMjZhNDU5NTE0NmUwZmE3ODUgcmVsZWFzZTIyLW1haW50CisyNjE3OSA0M2NlZTE4MTgyNDIwYTFjYzY4NTNjNjAzMjliOTU0NGY1NGZlNjA4IHJlbGVhc2UyMS1tYWludAorMjYxODAgYzFhZWM2MzI0YWQ1NGUwYThlNTI2MmZlM2NlM2IxYTZhMjc0ODYxYSBsZWdhY3ktdHJ1bmsKKzI2MTgxIDBhY2Y2ODIwZDllMzUxMDMzNTczYjY0ODhlYTc2ZTYzYTNlMDczMjAgbGVnYWN5LXRydW5rCisyNjE4MiA0MmNjODdjNDAxMDM2YjFmMzA2N2I5NWY1NThmYmFhZGFhNWNjZjlhIGxlZ2FjeS10cnVuaworMjYxODMgYzU2ZWFhZDNhMGIzOWYyYWUwZjUzODI2NTA0MmU2MmJiZTVmNDEzYSBsZWdhY3ktdHJ1bmsKKzI2MTg0IGY4OWYyMDEwODdlYTY3NWE1MTFiODliMmFiMjZjNzc1ZmFmYjJjMjIgbGVnYWN5LXRydW5rCisyNjE4NSBmNjhkZGY3ZjIxZjg0YTViNWUwZTI0MmVkNzNhNzQ3NWM4ZjA4MTYyIGxlZ2FjeS10cnVuaworMjYxODYgOGJhNDk5ZWNjNmM5MTI0YzYwNDNhZWI2ZmUzMjUzOTQyZDk5YWIxOCBsZWdhY3ktdHJ1bmsKKzI2MTg3IDI5NTUxZjc0N2MwZWQ5ZDQ2NzE4ZDg0NGI4ZWNjOWFhYWM5NmY3NjkgcmVsZWFzZTIyLW1haW50CisyNjE4OCAzYjZmNDhiNTQ2NjZlY2ZhMTIxZWExNjk2NmE0YjczNDBmNzMyZDkzIGxlZ2FjeS10cnVuaworMjYxODkgYWFmNTcyZTMzNGMzYzhiYTM5NDlkYWExMzZhY2IzYjRmYmYyMzVjNiByZWxlYXNlMjItbWFpbnQKKzI2MTkwIGQzY2YzODNkZjA5NmMyYzhjZTY1NDVjMDg0MzcyMzBlMzU3MzM5ZmYgcmVsZWFzZTIyLW1haW50CisyNjE5MSBhOWRkNWU2ZDY4MDU2M2UwNzg2M2Q3NGY3ZDU4YzI4MDMxMTc1ZjAzIGxlZ2FjeS10cnVuaworMjYxOTIgM2FmOGFiMWIwNWZjN2YxMjkwMjM2NmYxM2I3ZWE1ODYxN2E3M2JjNSBsZWdhY3ktdHJ1bmsKKzI2MTkzIDVlZGE3ZGIwMDdkNmQ3OGU2ODExOTE2ZTMwNWM4MzZjMDU1YzRhZTEgbGVnYWN5LXRydW5rCisyNjE5NCBjODY1Y2Y4YmVlNDBkNjk1MWIwMzIxZDI2MGNmMTMyODdkMzNmZGQwIGxlZ2FjeS10cnVuaworMjYxOTUgMDkwODcyOWU5NGUwZjE1ZjFkNmQ4NzAwMTU5NzhlNjlmMzlhYjZmZiBsZWdhY3ktdHJ1bmsKKzI2MTk2IDczZDE0NWJmZDhlNDVlMGIwY2MxODk5NmY0ZjQxZjg4ZjViZGEyZjQgbGVnYWN5LXRydW5rCisyNjE5NyBmMWY1N2JmMDkwOTJlYmU2YzI2OTkzM2M4NzU5NTBlMTg3OTMyOWIxIGxlZ2FjeS10cnVuaworMjYxOTggZWYyZmJjZTcxNzM2OWRmY2UwODA3NTBjZWUyM2Y0ZTg4ODFiNjdmMiBsZWdhY3ktdHJ1bmsKKzI2MTk5IGQ3NTMxMzA3NDM1NTUxYTBkYjVmNTg3MjBhNzBiNDlmMDFkYWFhMGEgbGVnYWN5LXRydW5rCisyNjIwMCAyZWRkY2U0NGIzYmVkYmM3MTIwNTEyODViZmRjZTk4ODU5NWMzOWQzIGxlZ2FjeS10cnVuaworMjYyMDEgMTg2OTZmYzM1MDYyZjYyYWE0MGMxMzg0OTA0MWRkYzA3MjQ1ZjEwOSBsZWdhY3ktdHJ1bmsKKzI2MjAyIDM5ZWEwOWZmNTczNGVjY2RmMWM2MjcyZTVmMTUyYjNmZGRhYzhmZmIgcmVsZWFzZTIyLW1haW50CisyNjIwMyAwNzlhYmUwNWU4YmM4MWMzZDhiOTI2ZWE1YmFlYzExOTA3N2QzMWZjIHJlbGVhc2UyMi1tYWludAorMjYyMDQgMzgyNzkxZGRjZTFjMTgzMmYwNTBmNWU2ZGJjZmY5MDZiZTE3NjZhMiByZWxlYXNlMjItbWFpbnQKKzI2MjA1IDIxNmRhZDcyMDliYzcwMTMyY2EyMjliOTIwZDk0YWIyNDQ4ZWI3MjAgcmVsZWFzZTIyLW1haW50CisyNjIwNiBkNzAyOTY3OTQzNWY3ZWMyOTA2MGNlMTgwNTdlMTQzZTk0NTViZGUwIHJlbGVhc2UyMi1tYWludAorMjYyMDcgNjgwNzFhNzI2OTcwNmI4MWJhNTc5NTE2NjQ0YzAzMWFkYjRhY2VkMiByZWxlYXNlMjItbWFpbnQKKzI2MjA4IGY2MDkzYmFjOWZiNjRmZTM0ZjI1YjY4NGY3NWU2NGFmNzc2NGU4NzUgbGVnYWN5LXRydW5rCisyNjIwOSBlNTg5ZTQ3M2YyMzJmYmY3N2Y4OWU4NDE5NzgwMWRkNzk5NWQ0MGJjIGxlZ2FjeS10cnVuaworMjYyMTAgZDZkNjQyMzlhYTA1MTU4YTJmNzgzNjJiNmM4YjYyNjgzMGQxNjk4YiBsZWdhY3ktdHJ1bmsKKzI2MjExIGY2NjAwYjBkYjY4OGE3NzY4MGMwMDFmZjBmN2U1MGY3NDc3NDhjYzggbGVnYWN5LXRydW5rCisyNjIxMiBlZDAzODA2ZDg4Y2RjOTcyOWVmMDA1YjkwZDRjYTFmMjgwYjYzNGU2IGxlZ2FjeS10cnVuaworMjYyMTMgNmU5YzBkOWJkZDdmZDRhNjI0MTc4N2Y0NGNlZmU0YTdmZTVjMmExYyBsZWdhY3ktdHJ1bmsKKzI2MjE0IDE4OGIwZmEyODAwN2U4NmE5OGU1MTM1YzFmMDI1YmI0NDkyNjMyNmUgbGVnYWN5LXRydW5rCisyNjIxNSAzMmVlYzZkNzljOTNmMmFiNTEyNjI4MTUwZDQzNmViODlmZGJiMzI3IGxlZ2FjeS10cnVuaworMjYyMTYgNDE2ZGI4ZDk2MjE2YjkxMWVjOGE5NTU0Zjc1ZWMzM2FhNDI1YWMzMSByZWxlYXNlMjItbWFpbnQKKzI2MjE3IDI3M2Y1MWY1MjAwMDE5MTc4NDZkNDVkMmVjODJmMWJlMTA1MGEzM2QgcmVsZWFzZTIyLW1haW50CisyNjIxOCBlMjRiOGQwYjY0NzA0YjEwY2UzYjE1MDQwOGIyMTRlM2RkYmY3MTc3IGxlZ2FjeS10cnVuaworMjYyMTkgMjJmN2VmN2JhNzJiYTQ1Y2U1NjkxNTlkZWY3N2QzZDQ1NjE4MmY2OCBsZWdhY3ktdHJ1bmsKKzI2MjIwIGJiZjA1YWYzYzE5MTM4ZDM1NzE3MjUyOTRjZjZkMjNkYTVkYTY3NDQgbGVnYWN5LXRydW5rCisyNjIyMSAwNDM2N2NmZjg2ODk1ZjZjY2I1ODBmNzJlMjAxY2E5NzFiOTA5ODVmIGxlZ2FjeS10cnVuaworMjYyMjIgYTY1MjdkMWVlNDc0MjhhYjYyMjU2OWYxNzdhYmVkMjU4NmVkNDk3MSBsZWdhY3ktdHJ1bmsKKzI2MjIzIGY5MjM2Y2FkNjllNjI4MGZhODc3MjRiN2M0Y2ZmNDQ2NTg1ODg0ZjQgbGVnYWN5LXRydW5rCisyNjIyNCA2ZjhhNWFkMzllNmZlNzJlMWYwZTEwODVkMGMyZTVhN2Q0MTU4NGM3IGxlZ2FjeS10cnVuaworMjYyMjUgNjgwNGU0OGEwMDMzYjQ2NjQ1Yjg3OGNkMWE0OTFlYzY2MTc0NWYwNCBsZWdhY3ktdHJ1bmsKKzI2MjI2IDcwMTQ5MjE4MjBhNTFjZDFhZWVhZDNkMWRhNDM4MjQ1YWQyMzhmNTEgbGVnYWN5LXRydW5rCisyNjIyNyBhNTYxZmYxYjRmZmExZmJhOTc5ZTMzMTJkMTdjZDdkNTlhYmRiYTVlIGxlZ2FjeS10cnVuaworMjYyMjggZTJmMjE4N2MzZDJjMWNhNzk4ZWFmOTY4YWI5NTEzNjI1MjUwNGRkOSBsZWdhY3ktdHJ1bmsKKzI2MjI5IDAwZTY0MGU2ODBiZDI5OGRjNzcwOTdjOGVlN2Q3NzQxMGM5MDM2NTYgbGVnYWN5LXRydW5rCisyNjIzMCBiMWZhOTBmOGI2YzIxMjAzZDBiZjAzNmRiNjJhNzRmMGVlOTljZjYyIHJlbGVhc2UyMi1tYWludAorMjYyMzEgYzkxNjI2ZDFmNDExZjBjYmZhMjc0YWZhMTViMGMxYzc0NWQzMDM3MCByZWxlYXNlMjItbWFpbnQKKzI2MjMyIDI1MjQzOGJiMDVkOTdhODRhZDFkODgxY2E1MmJiYWQ2ODU2OWRmMTAgbGVnYWN5LXRydW5rCisyNjIzMyBkNDYyYzc5MGNjNWJkNzY5Nzg3ZjliODFiNzQzY2IzM2U3YmI3N2YzIHJlbGVhc2UyMi1tYWludAorMjYyMzQgOGQzMzdiM2I2NTVhM2FhNjE3OGEyNjViOTFlYWNkOTQ4YTc2ZTkwZCBsZWdhY3ktdHJ1bmsKKzI2MjM1IGMzZTlhMDUyZTI2OGEwMDcwZGE3YjJhNjI5YjdjYTlkNTc3ZTE0MTEgcmVsZWFzZTIyLW1haW50CisyNjIzNiBlM2RlOWQxOWZhYWFmYzZjZjhhMTg0NjIxNjYyZWM2ZGZjMjIwNGM2IHJlbGVhc2UyMS1tYWludAorMjYyMzcgMWEzYjA4NjYzZWJlMDFlN2JmNzlhMTY2MDVjMjcyYTRiMTk0OGFiMSByZWxlYXNlMjEtbWFpbnQKKzI2MjM4IGE0MWExZTAwNTFjNWQ2ZTIwMmRmMjlkOTU0YWU5MWQ3MWQ0ZjAyOWQgcmVsZWFzZTIxLW1haW50CisyNjIzOSAzYTY3MThiOWI2NWE4MzhiMjg3NmQ2OWQxMTExZmQ5YjY4M2ZmYWFiIGxlZ2FjeS10cnVuaworMjYyNDAgZTE0MjNlYzllNmVjMzYyZDA5NjdhNzU0NDc3YzRiN2ViYjYxZDlmYyByZWxlYXNlMjItbWFpbnQKKzI2MjQxIDM4OWQ0MjlhZGE3MmM2ZDQ3ZTIzZmYzNzMyYWY5YmY2MjFhNjY3YTggcmVsZWFzZTIxLW1haW50CisyNjI0MiA3OTI4NzUxYmZkZWU1MTg3YWIzOWI2Yjg4YTRiYjM4NTBhMjA5YjgzIHJlbGVhc2UyMS1tYWludAorMjYyNDMgNWJlMDY3N2Q4MTBkMDI2YTc5NTU2ZDFhZDM5NzgyZDc2OTZmZDhiMiByZWxlYXNlMjEtbWFpbnQKKzI2MjQ0IGQ4YmM2OGNiMTdlMDM3MDEyOGI5ZGU0ZjM1MGY0MTRhMjAyMDA4MDkgbGVnYWN5LXRydW5rCisyNjI0NSA1ZDM4MzAwNmQzNmI5ZDM2NGE1MjQyYzA2OTQyZTI2NDlmNTJlM2Q5IHJlbGVhc2UyMi1tYWludAorMjYyNDYgMjg5ZWExZDVjNWFjY2NkYzE5ZGZhNmU3NzY3NzYyNGFhOGE2MGJhNCBsZWdhY3ktdHJ1bmsKKzI2MjQ3IGMwZGQ4YmJkZGU2MDQwODM0Nzk1ZDY1YTJlYTZhNDAzYTI5MTY5NmMgcmVsZWFzZTIyLW1haW50CisyNjI0OCBmOTc0NzNiMzQwYTU4MDNjYjBkY2NmNzY0ZTQzNTA3NDJlYmNkN2MyIHJlbGVhc2UyMS1tYWludAorMjYyNDkgMmIzYTZhODQ0YmZmZGJiOWU4ZGU4NTNmZWU1MzU4NjQ2NDkxMTE4NCBsZWdhY3ktdHJ1bmsKKzI2MjUwIDE3MGZiNWI5NDczZjhhMzQyNGQyYTYwYmQ2NzI0NDMxNzFjMDBjZjYgcmVsZWFzZTIxLW1haW50CisyNjI1MSBhZjcyZDJjZjJjNTVlYjg4NDkwMDZkMGUwMDA2NWE4MTBhYzUxZDA4IHJlbGVhc2UyMS1tYWludAorMjYyNTIgYjgxZDBlODkwNDEyY2MxYWYyYzQ1MjAyYTI4OTEzZjg0MzcxYWQwYiByZWxlYXNlMjEtbWFpbnQKKzI2MjUzIDMzYjJhODliZjRhNmE1YjI2N2I1ZDE4M2UyNTg1MzY1NzA4NmZkYTMgcmVsZWFzZTIxLW1haW50CisyNjI1NCAxYTM3NTY2MWNjOTczMjk1MDEwNGQyMDVlNGM3ODgxYmEwYzRmNzk3IHJlbGVhc2UyMS1tYWludAorMjYyNTUgNTcwYTc4MDI3OWQxYTQ2MWJlNjQyZTNiNzRhMTFjYmExOGY5ZWU5YSByZWxlYXNlMjEtbWFpbnQKKzI2MjU2IGI1YWFkZTk3ZDcyM2ZhOGE2M2U3YjE5YmIxNjMwZGM2MWZlMmM3MGYgcmVsZWFzZTIxLW1haW50CisyNjI1NyA3ZDQwYjY5MWRiYTc2MzdjY2JmNzdhMTI5M2RkMjM4ZTM3MmU5YmE0IGxlZ2FjeS10cnVuaworMjYyNTggOGJhY2E0ZWNlNjQ1NTM1MjcwN2FiNmZhZjExMTNkMGFkNTI2OWQwYSByZWxlYXNlMjEtbWFpbnQKKzI2MjU5IGVhNDM1MjNiNWJlNzYyN2Y0YmE2MjJiNzhhOTg3OGFlZjM1Y2MyZDggcmVsZWFzZTIxLW1haW50CisyNjI2MCBjMGQ3YjU3ODhjYmU2M2JhYWMwMjQ0OTUyMTA3MzlkMDY3N2Q4OTc0IGxlZ2FjeS10cnVuaworMjYyNjEgODkxM2RmYTExMDI3ZWRhYTdhYTExNWNjZWI3MDE2Y2VhOWJlOWYxMyBsZWdhY3ktdHJ1bmsKKzI2MjYyIDExY2ZlODM4M2NmODg3NTFmYWQzZDc5ZTFlNmIyYmQzMTIyZDAwNjYgcmVsZWFzZTIyLW1haW50CisyNjI2MyBmYmRkNDBiOTJiODcwYjdmZjdiZDRlZGQ2MjM2YjA2N2I4YjRhZGE5IHJlbGVhc2UyMi1tYWludAorMjYyNjQgN2U4NGRhOWM5OGViYTZiODA4MWZjM2MzY2MxYTY3ZWIyM2FlZTU3YyBsZWdhY3ktdHJ1bmsKKzI2MjY1IDlkMjZkNTY4ZGJiMzA3NjNjNWVlMmFiMzA0YjNhMmNhYWFkOTFiMWQgcmVsZWFzZTIxLW1haW50CisyNjI2NiBiNjA4NDQ1YjI1ZjAyOWIyZGFkYzg1ZmYwYWYzMWNlYjcyM2YzY2EwIHJlbGVhc2UyMS1tYWludAorMjYyNjcgYWM5OWJlZDI0YjdkMTA2Y2E1MWI2MDQ0YzUwZDdjYTE2OTU4NjBmZCByZWxlYXNlMjEtbWFpbnQKKzI2MjY3IDdkMTUwNGM4MGZhMDcyYjRiYTg2ZWRkYTEzYTEzYjBhMDVhZThlYWIgcmVsZWFzZTIxLW1haW50CisyNjI2OSA1YWIzZThmMTRkNDY2MzlkNmM0MGM5Y2I2MmQwZDdjZjhiODc2ODczIHJlbGVhc2UyMi1tYWludAorMjYyNjkgMzk0NzkwMzE2YWEzODBkMjJlNGQ2NzBiYzY5YTYzOWU3MjVmMDMwMCByZWxlYXNlMjItbWFpbnQKKzI2MjcxIDk5MDAxZmQ5NWU0OGRiODE1YThmZDAxYjNkZDAxNzc5ZTFlZTc4ZTUgbGVnYWN5LXRydW5rCisyNjI3MiAwNzczZDIzMjI0ZDJhYTZiNTUwNTFjZmQwNzY5YWVmM2FjNmZkZjdmIGxlZ2FjeS10cnVuaworMjYyNzMgYzI2YWYxYWJjMmM2MjEzMDEyYWQ1OTBmOTQxZDlhODllYWRmYTE5MCBsZWdhY3ktdHJ1bmsKKzI2Mjc0IDEyMTMzYzhiODNjZjVmNGVlMzI0Y2U3NDNiNDBiZmRhYjQ5NWVjZWUgcmVsZWFzZTIyLW1haW50CisyNjI3NSA3MjgxYTA2ZTNiNTdmM2JlYmM1NzUyMTQxZWIwM2FjZjViYjY1MmZhIHJlbGVhc2UyMi1tYWludAorMjYyNzYgZmViNmQxYmNkZDFkNjJlMTg5ZGUyMzA1ZGM1OGUyY2I1NzczYzEwYSBsZWdhY3ktdHJ1bmsKKzI2Mjc3IDkwODFjOTJhMGNjODVlNDRmYzY3ZWMzZmNhNzM0NDliZmZlODc4MWQgcmVsZWFzZTIyLW1haW50CisyNjI3OCA4YTAyYzMzZWQyYzE4YmIzODQwYjA5YjFlMGY1ZTQ3ZmM2NWIwMWUwIGxlZ2FjeS10cnVuaworMjYyNzkgMTVjMThiYzlkNzE1NjVmZTc4Nzk0OGZkZTZhMDFmMGVhMzA2OWNhZSBsZWdhY3ktdHJ1bmsKKzI2MjgwIDU0MjI5YzM1MTMyZTc3NTFmMWJkMDY3NDBhMmY5NDBhOGJkZTU2YjMgbGVnYWN5LXRydW5rCisyNjI4MSAyMzkyYWYwNWYwNTI2YjU2MDMwMDBiNzhjZTViOGY2MWI5YWYyYTY2IGxlZ2FjeS10cnVuaworMjYyODIgM2M4NzZmZjI5YTgzZWQ5ZWZkZTQ5MjVhMTg3NzZhYjU1YmJhMGI2NyBsZWdhY3ktdHJ1bmsKKzI2MjgzIDNmMjFlNGUzOTI2ODEwM2YyMTU0MzUwOTIyOWI5NWVmY2NjNWUwODEgbGVnYWN5LXRydW5rCisyNjI4NCBhNWVlYjI4OGUwMjBmNzMwYzkwZDY4NDk4MTE5YTQyZWY1YTNkNDA4IGxlZ2FjeS10cnVuaworMjYyODUgMDc3Y2U4YjVkODNiNTliNzNlNzNjN2FhNWQxMDNiNDUzZjJiZWRhOSBsZWdhY3ktdHJ1bmsKKzI2Mjg2IDRjNDk5NDQ3Y2M0OWY4ODczZWUxODVkYTg4OWE4ZTk0NWRiMjAzODAgcmVsZWFzZTIyLW1haW50CisyNjI4NyAzMzIzZjNmNDIyZGIwOWExMjI0Y2UwYjkzZmVkNzlmNDMzZGU0NDRiIGxlZ2FjeS10cnVuaworMjYyODggZTIzMzgxZmE0NzUwMzgwMmNkMTQzYmYyYWZhOTNjOWU0NDY4ZmFmZCBsZWdhY3ktdHJ1bmsKKzI2Mjg5IGUyZGVjM2NkZjNjMjY4MGZmZDdlODYyZGJjODJiZmExYWNhNjcxNjkgbGVnYWN5LXRydW5rCisyNjI5MCBlMzA3YTk0ZGQ3N2JmZGNkNWI3ZGU3ZGIyNDA1YWFhNTNlODc2OTc2IGxlZ2FjeS10cnVuaworMjYyOTEgMjY3Yjk3MzJiZjQ2NTUwMGIyYTA0ODY5OTA0ZjZmNmYxMTdiZjUxZCBsZWdhY3ktdHJ1bmsKKzI2MjkyIGE5NmU3ZTVmMzQwNzcxNWE3MDIzMmYyYTVmYzc4Y2Y4NmExMTUyYjQgbGVnYWN5LXRydW5rCisyNjI5MyBmNzZjYTlmYmM3YTQ3NjJjNDhkNjMwNzhiYzQ3MzA0MzM2MTQ0NDEzIGxlZ2FjeS10cnVuaworMjYyOTQgMzJhOWIxOWRiYTFkZDY3MDBhZTNiN2U5YmJiYjJhMjZlMjIzMjViZCBsZWdhY3ktdHJ1bmsKKzI2Mjk1IDQ0ZWU2OGFjNWU3Zjk2MWI2ZmMzOTkxNDdmMGMxN2MyNDJlODZiMmUgbGVnYWN5LXRydW5rCisyNjI5NiBkNGY5ZTE5YjhjMGI0Mjc2MGEzODdhN2Y0ODBkNTg5ZjQ3NGQ3MjllIGxlZ2FjeS10cnVuaworMjYyOTcgZjE0ZTQ1NTBiMmYzY2VhOGM5M2I3N2E0NGRjZDdlYmI0MTYwNmNhMSByZWxlYXNlMjItbWFpbnQKKzI2Mjk4IGE1NGIyM2IyZjE3MjBjMzM3MjcxYjg4N2Y5MGRlY2FiZDA1YmViYmUgcmVsZWFzZTIxLW1haW50CisyNjI5OSA1YzU1Mzc3MmNhNTRjM2ZkNGRlOWYwYmI0ZTlhODRjMDg2YTkxNmM3IGxlZ2FjeS10cnVuaworMjYzMDAgNTM0YWFiNWJjY2VhNDViM2M2ZWJmMDY0NDk4MjJlMmQ2NjFkNjMwZiBsZWdhY3ktdHJ1bmsKKzI2MzAxIGFiNjc5OTMxYWUwZDE3MTcwZmJmYTA5MDJhODM4Y2NkZWNjOTY5ZmQgcmVsZWFzZTIyLW1haW50CisyNjMwMiAwNTdjNWQ3OWM5ODhhZGRiNzc5NzZkZDdjOThmNTgzZTdiMzc2YzlkIHJlbGVhc2UyMi1tYWludAorMjYzMDMgOTc5Mzk4MzRhNjczNTIyMDFhNGQyYzVhNTg1OGM3NmE0ODAwZDgwOSBsZWdhY3ktdHJ1bmsKKzI2MzA0IGM4NzUwZDYzZGMzNTU4NDI2NGQzY2Y3MWMxM2RhOGQwMWUwNGQwMzEgbGVnYWN5LXRydW5rCisyNjMwNSA1MGM5YzI0MTQ2M2QyMWFlYWYxNmJlMDgyMDhkYjM2ZmI2YTQyOGUzIGxlZ2FjeS10cnVuaworMjYzMDYgYzA0OTA2ZmExNzhjODhiYjAyNGY0N2E2NDA2N2RmNGM3YTAwN2ZiNiBsZWdhY3ktdHJ1bmsKKzI2MzA3IGNjNTBhMDkxZjU3M2FmZmMzMTEyZGNjZWNmM2RiODQ0ODY0OGJmOTkgbGVnYWN5LXRydW5rCisyNjMwOCAxYThhNzQ5OGIwYmIzNzFhY2UyMmRkZmMyZDNhNTQ0MzU0NmY0MjE0IGxlZ2FjeS10cnVuaworMjYzMDkgNmNiNTI4MjlkYTFhMmFhYzY3Njk2YzBiNDM4YzdjMjBhOTZlZWNiZiBsZWdhY3ktdHJ1bmsKKzI2MzEwIDVmNTQ1NGE0OGI1YWI5NmZlMzkzMzRkMGZkNzY1ZGJjNzJkOGNmNmQgbGVnYWN5LXRydW5rCisyNjMxMSAyMWYzMTkzOWRjMmY3NDhmMmZmOTBlODM4YmYzOWMyNDY4OTlhODA5IGxlZ2FjeS10cnVuaworMjYzMTIgNmEzNjExMmEzZGNlMDY3NWJiMmJhNTY3ZGY1NjRkOWY2OWE5ZjljNCBsZWdhY3ktdHJ1bmsKKzI2MzEzIGM4YzFkYzA3MjdjZDUwY2RlN2RjYzZiM2ExZmY1YjNmZmE0ZTFmNmYgbGVnYWN5LXRydW5rCisyNjMxNCBiZmEzMzBiODUyMDUwN2Q5OTEyN2RmYzgyYjhjYTA3MGYyMzg3NmMzIGxlZ2FjeS10cnVuaworMjYzMTUgOWE1OGU5N2RiNDQ3YzNmNDk2YTk2ODU0MTg5YzlmMDY3MDE2ODc0ZSBsZWdhY3ktdHJ1bmsKKzI2MzE2IGNlYTg1MmY4YWE0NzYzMDM3ZjAxNWUyMzA3OTc5NWM4NmQ2ZDdiYWQgbGVnYWN5LXRydW5rCisyNjMxNyAwM2E4MzM0MGM5MTRhOTJjNmZiNzgzNzFkZThmNTg5NTc2YjBjYTAwIGxlZ2FjeS10cnVuaworMjYzMTggNGY5ZDVlYTRmMzdkOWMxMjFiODBhODU3ZjA2MDBlZGI0OGZjYzlmMSBsZWdhY3ktdHJ1bmsKKzI2MzE5IDVmMmRjZGQwOTMyOTM2YzVkMmJmNGJhNDdmNDEwZmVhYTg5NTk1OWQgbGVnYWN5LXRydW5rCisyNjMyMCBmODE3MDFiNzEyMTY0ZjY2MjJlYThhMDU0YzA2M2NhMDQwMGZhOGNhIGxlZ2FjeS10cnVuaworMjYzMjEgYTBiYjVmYTFhYjJkY2RlMGVmMGMzMzk3ZDI0MTM1NTZjODVmZjE3ZSBsZWdhY3ktdHJ1bmsKKzI2MzIyIDNmMjNkNzJlZjQxMGY2NjZlMDRlOGIyOTAxYWZkZWJiMGIzYTExMjYgbGVnYWN5LXRydW5rCisyNjMyMyA2ZDczMWI2NDY3MGI2OTBkMjRiMzg4NWJlNGVmOWE3ODVlODhkMjljIGxlZ2FjeS10cnVuaworMjYzMjQgOTU2M2M5NjY0YTBiYjhhMmVjZTY4OWYzNWI0YTIwNDAyMjVkYzEwNyBsZWdhY3ktdHJ1bmsKKzI2MzI1IGEwMDQ3M2YzMzE3YjkzZjc1NDg0NWIxNjk0Yzc4NTMzYzUyMzQyMmQgbGVnYWN5LXRydW5rCisyNjMyNiBiMzczMTRmY2JjYzlmNzUyMDc0N2UyZDBhNDg5ZjhlMTFhYWQyODRjIGxlZ2FjeS10cnVuaworMjYzMjcgMDg0YWI3Mzc3N2EzNDE3NGRlN2Q4OTgzMDllNDA3MWNiZmIxYmJjOCBsZWdhY3ktdHJ1bmsKKzI2MzI4IDU0OTViNmRmMGM2NWQzMGY3ZGIzZDUxYzQ4Yzg4MDcyZmU0MDIxNTIgbGVnYWN5LXRydW5rCisyNjMyOSBiYTAyMzZmODQzMThjMjM5ZWQ4M2E4YmY1NmVhOGZkNTNhZDA4YjAxIGxlZ2FjeS10cnVuaworMjYzMzAgMzEwMGJhMjY5MTNjN2Q1YmFhMTEzMWZkYTc0ZjUwYzEzNmQ0MjRlYiBsZWdhY3ktdHJ1bmsKKzI2MzMxIGY5M2EyNmQxYmZhMGU5ZGQ4MzE4MTE4MDZjNDI3NWM3YzFlZTcxOTggbGVnYWN5LXRydW5rCisyNjMzMiA5MGI4MzRjZTU3MDc3ZmVkYTVmYzE5YTA1YzMyODQzMmE3ZDJmOTMwIGxlZ2FjeS10cnVuaworMjYzMzMgOTU4MTlmN2YwYmNkMmNkYzhmZTVjYTI5YjA0MDE1ODU5NjRkZjgyMCBsZWdhY3ktdHJ1bmsKKzI2MzM0IDY5OWNjMTM5ZDJkMjQ4NjZhMTBiYTFhZGM5NjMyY2JlY2UwMzFhNzQgbGVnYWN5LXRydW5rCisyNjMzNSA3Mjc3OGVjOTRkZWM2Njc2MzgyNzMzMTEwMGJiOGYxOGEwM2JjYTU1IGxlZ2FjeS10cnVuaworMjYzMzYgMjllNmNiODMyNDk3YjVmZThhZDJlNzMzNjhiYmRmMDNiOTRiMGJkOSBsZWdhY3ktdHJ1bmsKKzI2MzM3IGE5ZTQwMjRkOGEzNzcwMTk1NjA1MjliYWRlMDU4NzEyZGI1MGJmZTUgbGVnYWN5LXRydW5rCisyNjMzOCA0YmEwOTFjYzcwYjg5YjE2NjQ0YWE3NWUxNzM3ZGZkZDI0ZDQwMGQ2IGxlZ2FjeS10cnVuaworMjYzMzkgMzYzYzdmYzE3NGFjOGJkYjdiODMxOTgxYjg5YzYzYzMyMTM0NzFhMiBsZWdhY3ktdHJ1bmsKKzI2MzQwIDlmZTk0YzAxZWFmMWZmZjUwMDdjMDM4NDI1NWU0MTgxYmQwZGNkNzUgbGVnYWN5LXRydW5rCisyNjM0MSA5Zjk0OTAyN2Q3YmExOTNiZDYxNDNmMmFhNjQ0YjkwMzcwNDY3ZDI4IGxlZ2FjeS10cnVuaworMjYzNDIgZGMxZmIxOWQ5OTBkNjkyZjE3Y2QxZTBjZTc3MTA1Y2MzMmM1NDU4MCBsZWdhY3ktdHJ1bmsKKzI2MzQzIGQwOTc0MGIyZTAzZGUxZjg1Y2EwODQzNTZhNDVkMDFhYzAyZWNjYTQgbGVnYWN5LXRydW5rCisyNjM0NCAxYzI2YTMxMDY2NTMxMGY2M2ZlNTc1Nzg3NzNmZDAzMzFhMmJlMzUyIGxlZ2FjeS10cnVuaworMjYzNDUgYzVhNjdmNTA1MzJlOTE0NzExZDBjZmY1OTdiYTNlYzk0NmI0ZTQwMSBsZWdhY3ktdHJ1bmsKKzI2MzQ2IGQ5ZDgyYzFlZjg2NDUwZGYyMzM1NTAwZTliZTNiYjczYmFiN2M2ZmIgbGVnYWN5LXRydW5rCisyNjM0NyAyOThhN2M1MWQyYzAxZGVkZDVhMDgwYzQ2OWU2YzA3MTRjZWUyMGQ1IGxlZ2FjeS10cnVuaworMjYzNDggYzhkNjFmZjFjMGQ2Yjc0OTU0OTBhYTk5ZDQwM2YyZmQ4ZTMzNDc4ZSBsZWdhY3ktdHJ1bmsKKzI2MzQ5IGJlNTQ0NjVhMzljNDU0YTU4YjJiMTdjMzRlYTliOTVhYjBlNzJkMTcgbGVnYWN5LXRydW5rCisyNjM1MCA2MTY2MTU4M2ExMmZhYjJhZjBjZmQwYzUwODNjM2IzMmFlMTMxYTFlIGxlZ2FjeS10cnVuaworMjYzNTEgMjQ2NjNiODZiOTc1MDVlY2E2MDcyMTkxN2Q0NzNlMmIyMzM5ZDc5YyBsZWdhY3ktdHJ1bmsKKzI2MzUyIDFlMWM3MjE0MzNkOGU0YTNiMDg3NTNjZTQ4MWFlZTViYmY3OTVkMDIgbGVnYWN5LXRydW5rCisyNjM1MyBiZWIzMjE4OTA1YTJmZTliMTRiNjM0ZTIwYjJkOWY5NGEyNDNhMTVhIGxlZ2FjeS10cnVuaworMjYzNTQgMGExOWYwMTZhOTk0NjQ3ZWExMjg5Y2I0MTMyMGMyYmQzYTEwYTU0YSBsZWdhY3ktdHJ1bmsKKzI2MzU1IDE5NmRmYTdlZDM0OGRiZmU5NjE1NzYyNjgxOTQ1ZGIyMTA4NmI5NDEgbGVnYWN5LXRydW5rCisyNjM1NiA2OTBkNzEyZTI4MDdjM2UxYzhjYzUxMjBiN2E1OWIzNDQ3MmJmMjJhIGxlZ2FjeS10cnVuaworMjYzNTcgYjlhZDFlOWY1OWE4NWVhMDc5ZTg3MGU4ZTE2NTY0N2VlNjYxMDA1YSBsZWdhY3ktdHJ1bmsKKzI2MzU4IDJkZDBmODRhZjA3MTY5MjkwMTYxZWEzNTMzNWE0ZjhhMmRjYTU2MGIgbGVnYWN5LXRydW5rCisyNjM1OSBhOWNiOTE5ZTQ5ZTMzMWJiZThiZTkxMWQ2Zjc5Yzc3MGZhNjdjYTdiIGxlZ2FjeS10cnVuaworMjYzNjAgMjVhNmUzOWMzMWEyMDcwZTE1MWZlOGY2YWZlNmRhYjA2NDQxMjY1NSBsZWdhY3ktdHJ1bmsKKzI2MzYxIDBiMWUyMGMzNGM4ZWE2YzE5ZTRjNTMxNTU3NTk5MGI5ZDJkZDhmMTIgbGVnYWN5LXRydW5rCisyNjM2MiBhMDU2MWNmNDkxNjM0ZGIxNGM3NmUzMjM5YWRmNjZhZjBjYzBiNDQxIGxlZ2FjeS10cnVuaworMjYzNjMgOGY5OGNiM2EwZjM2OGNhNDNmMWY1MDMzMGMwNDEwY2E4YTRhMTRhMiBsZWdhY3ktdHJ1bmsKKzI2MzY0IDRmMDYzYjgwMzA4ZDk5MjNkMDVhNjcxZTQ3YTQ5MmQwOTkyYWZlOGUgbGVnYWN5LXRydW5rCisyNjM2NSAxZjdhZjRmYjNhNTE1MmNhMTQ4ZTFlMGFjMmY2NjNlNDg1NmVhMTI4IGxlZ2FjeS10cnVuaworMjYzNjYgZTU0YjljMzg0OGI3YTM0OTIwODBhNDg5ZjM0NWQ3MTczMDQxM2VkZSBsZWdhY3ktdHJ1bmsKKzI2MzY3IDFjZWFmN2Y4MDU1ZDZmMzBhZmE3ZGFmYTVkNzgyYWE3ZWZlOWI0MjYgbGVnYWN5LXRydW5rCisyNjM2OCBkYjAwM2I4YTliYjk1NDYwMDkwOTViMDMwYTc3ZGQxN2ZjNTc5Yzc4IGxlZ2FjeS10cnVuaworMjYzNjkgZDUwNDhmOWI4YjgyNTdiMWMxYmRkY2FiOTE5Y2I1NGFkZjdjMjhiYSBsZWdhY3ktdHJ1bmsKKzI2MzcwIDhiZTYyMzg3NDhjNGQwYWYzY2M3MGEwYmI2NjNhZDcxN2E4NDljNzUgbGVnYWN5LXRydW5rCisyNjM3MSA5MzFkNDQ4ODIwYWVlZjM4ZGI2MjIwM2JiMDliZGVjMTIzNWFmMDA3IGxlZ2FjeS10cnVuaworMjYzNzIgOTg5Mzc3Y2RmMDUzMmQ3Nzc2Y2I2NjdjNmM1NjM3ZmQzYzdhOGU2YiBsZWdhY3ktdHJ1bmsKKzI2MzczIDA4YWIwYTZiZjFlYmIxNGE5MGY0Y2I5MzI4Y2QwZjZkYmI5YTNhM2MgbGVnYWN5LXRydW5rCisyNjM3NCBkNjMyMjk4MzA2OWUwNmFhMjRjOTNkZTk4ZmVjOTU5ODViZTcyYjg2IGxlZ2FjeS10cnVuaworMjYzNzUgM2IwODNiMjYyOTZhOGU4MTI3NjRkMjhlMTM2YjI3YmEyMjU4NjgxNiBsZWdhY3ktdHJ1bmsKKzI2Mzc2IDIwMmFlNWI3NWNjYTI0MzgyNzI0ODczYmZmOTk4ZmEwMjM0NjE0M2QgbGVnYWN5LXRydW5rCisyNjM3NyBiNWY5ZjdhOGY1NjY2ZTQ4OWZiYjU1ZDJiMDM5MmFkMWY5MzZiMzY4IGxlZ2FjeS10cnVuaworMjYzNzggNDQ2MzdiZDdmNTliNjQyOThjMmQyYzI0OTJiNGIzYjU4NWZjMDAxNyBsZWdhY3ktdHJ1bmsKKzI2Mzc5IGIxYWI0YmM1MjI0M2QwMGQ5MDc0MGM4ODIzMmYzMzljNjg0NjFkZWMgbGVnYWN5LXRydW5rCisyNjM4MCBjNjAwM2RlNzM5NzU1N2I5Yzg0ZDM1ZWIzNzBjZjY4Mjc5NzJhYTUzIHJlbGVhc2UyMi1tYWludAorMjYzODEgZTI4NDg2MThiZDE5NTlhZDE0NmE5YjFhMWVmOWU1YThjZWQwOTE0YiBsZWdhY3ktdHJ1bmsKKzI2MzgyIDI0NzE4MzI3MDA5NThmNzRjOTIzNmFhYjM4NjE4ODY4MTViM2Q4ZDYgbGVnYWN5LXRydW5rCisyNjM4MyBlYmUzY2U2Y2JmZDc4NjE1MjI4YmVjY2Y5MGUzYjdlMWM3ODVmN2MwIGxlZ2FjeS10cnVuaworMjYzODQgODk5MDAyYTg4MmEwOGE1MDlmZjZiMmVjMjQzYTFmZTQ3ZDdkMjNlZCBsZWdhY3ktdHJ1bmsKKzI2Mzg1IDRlNThhMzhlM2MwNjFhYWMxZDdkZTdkNGVhZWU4ZWU3ZGJlY2VjMjYgbGVnYWN5LXRydW5rCisyNjM4NiAzZTg5MjU4MmE4NTBiYzhiNjExOGZkN2U3MDgyYmVhNDNjODk3OWQ1IGxlZ2FjeS10cnVuaworMjYzODcgZjNmYzk3ZGE2OGE5ODU4YzNmOWE4ZjkwMzA0ZThlZGZlMTViODRiMyBsZWdhY3ktdHJ1bmsKKzI2Mzg4IDAzYzM5NjQwZDgxYTg5NDJkY2ZjNDVhMTNlYTlhZTdjM2ExZjRkNWEgbGVnYWN5LXRydW5rCisyNjM4OSBhOWE2YzExOGRmYmE3NTQzYjJmNjFlZWY4NzVmYWY3NGM2MTMwMmI3IGxlZ2FjeS10cnVuaworMjYzOTAgODI5MTQ3M2ZkZTNlYjMyYzUxN2MwNzUxNmRmOGE5OWNiMjk2MGRlMyBsZWdhY3ktdHJ1bmsKKzI2MzkxIDE4NjIzNzRhYjI1Mzk5ZDU1Zjg2OTg3NzljNTI3N2JhMzI0Njg3YWIgbGVnYWN5LXRydW5rCisyNjM5MiA1YmRhNTQ2ZWJlMjRhY2Y5ZWFiMTcwYmYyMWM2YzgwNzUxNmFlNWM5IGxlZ2FjeS10cnVuaworMjYzOTMgMWRiM2EwMjk2NWU2NTVlZjRlZjg1MWE1OGZkOGE5NzU5ZDJlODNhZCBsZWdhY3ktdHJ1bmsKKzI2Mzk0IDhiOTI2MGU5MjAxMGI1NGU4YWI1ZThlMzRmZDZlOGI1NDY5YjJmOTQgbGVnYWN5LXRydW5rCisyNjM5NSA1M2JhOTExMGExZjE3Nzk3Yzc1M2VjM2Q3MTE3ZTZiZDQ0MGUzNzQ5IGxlZ2FjeS10cnVuaworMjYzOTYgYjFlZTQzMjFhNTBhN2IyYzU5YmFkMTMwMTQ2OGEzYjI3MDJkNDIzNSBsZWdhY3ktdHJ1bmsKKzI2Mzk3IDhmNjQ1MTgwNTM0ZDUzZjZiZjYzNzM1NTE1OWVhYTM2YWFmNjk1ODQgbGVnYWN5LXRydW5rCisyNjM5OCA4OWRiOWUzZjM1YTc0OGIxOWQ5NWIzNGE5NjUyNWU4ZDUyMDY0YzNhIGxlZ2FjeS10cnVuaworMjYzOTkgOWQzNTI2NjdkNzE1ZWVjMDc4MzQ4YzhkOTU0ZjYwMGE3YWEwYmFkZiBsZWdhY3ktdHJ1bmsKKzI2NDAwIDQ1NDM1MWVmNTBmMWQxOTcwY2U0YjljM2JkMzBjYTU4ODEyM2Q2NTYgbGVnYWN5LXRydW5rCisyNjQwMSBjZDIwMmVmNjcyNmUzNDU3ZjUzYjY1Y2Q1NDcwMzcyYTNhNjFlZjVmIGxlZ2FjeS10cnVuaworMjY0MDIgZjFhYTE4YzhjOTZiODIxYzk1YjIwYjU0ZjIxMDE1N2ZmZDczZTExOCBsZWdhY3ktdHJ1bmsKKzI2NDAzIGUxZjhlMjk1NDc0OTlmNDk3M2ZmOWJhYmRiMzNmM2I4ZmEwYjliMzMgbGVnYWN5LXRydW5rCisyNjQwNCA3ZmVjZDZkNThmMzhlZjE3NGQzYWIzNDI0YmZlOWVjNDM0MmNkNTBlIGxlZ2FjeS10cnVuaworMjY0MDUgMGYzN2NiNWE3ZTllOGNkNWIwODJkN2Y1MTY5NTUwMGQ0MWYzNGU2NyBsZWdhY3ktdHJ1bmsKKzI2NDA2IDhiMTI2OGJjMzcxYTY0ZmY1YmJjZjM3NzljY2MxMGY0MTU5MjUxYzYgbGVnYWN5LXRydW5rCisyNjQwNyA3NjllMGE1MzhlNTQzZDE1Y2Q4Nzg2YmI3YWZjNGZiZmEzNmJhYzc4IGxlZ2FjeS10cnVuaworMjY0MDggNzUxMjg5Y2QxYWI3MTJkOWU3NjJhMTg0OWU4MjUwYjkyZGVmZTU1OSBsZWdhY3ktdHJ1bmsKKzI2NDA5IGMxNjY4YTgxOTI0MmM1MTNhMmFlYzE5M2M0NWRkMmYwODg4ZGEyYjcgbGVnYWN5LXRydW5rCisyNjQxMCA5ZTZmZjc4NzI4MGE5NWRkNGMwOGZkMGFkNTE0ODAwMTZjOWY3NGI3IGxlZ2FjeS10cnVuaworMjY0MTEgOGE4YWZmY2NmNDYzYmI1YzU3ODBkZTcwZjk4OTk5NzM5NzdmOTUyMSBsZWdhY3ktdHJ1bmsKKzI2NDEyIDE5ZWEwMGZlZGEzMzZjZDExZDk5NDY5MTgwMGQ1NWZkYmUwODJkZDMgbGVnYWN5LXRydW5rCisyNjQxMyA4ZWI2ZGQzZDgzMjJlZmJkNGY4YmM0MjJjODgxMjNhMTA5YTA5ZWIxIGxlZ2FjeS10cnVuaworMjY0MTQgMDRmYmY2NWM3M2VmNmZjNmE3ODhmYzQ4OGM3NjVlNzA1NTlhNjEzYSBsZWdhY3ktdHJ1bmsKKzI2NDE1IDcxYmU1YmE4OGFhN2E3MmM3YWMwMGU2MjgyOGUzOGE4NzQ5M2VjNDUgbGVnYWN5LXRydW5rCisyNjQxNiAzYWYyY2FkY2NkNmFjNjUyM2U5YjBlOWM2MjM1NmJjN2I2NDY2OWExIGxlZ2FjeS10cnVuaworMjY0MTcgYTEzNTk4MGRkNGU5YjZiOWJmMTJlYmUzZDE5MjcwN2ExODhjNjBkOCBsZWdhY3ktdHJ1bmsKKzI2NDE4IDZiZTI4M2QxNDhmN2UzODgyNTU5NDk0NDE1OTRkMzBmOTFhNmQ0ZGMgbGVnYWN5LXRydW5rCisyNjQxOSA4MDA1ZmMxYWVmMzljOGYwNjI0ZTQxNWM2OTEyZjcwZWFmNWIyOWQ2IGxlZ2FjeS10cnVuaworMjY0MjAgNGMwYWI1ZDZhNjNjNDFlYWMyOWNhMjg3YzdkN2M2MTUyNjI2NWU2MiBsZWdhY3ktdHJ1bmsKKzI2NDIxIGMzMjhkNzI1MGU5MjY2MDAzNmM5YmE4YWQ1Y2M0ZGYwMmEzNGI2YjkgcmVsZWFzZTIyLW1haW50CisyNjQyMiBkYmQwZWU3ZjYwZTA1Njk3MGE2YTA3MzFiNGQ1OTBhMjM3OGZiNTgzIGxlZ2FjeS10cnVuaworMjY0MjMgYzM3MWJiM2U4NTI5MWI5ZTMzNGZjNTM0NzVjNGY2ZDI0MjlhZGVlZCBsZWdhY3ktdHJ1bmsKKzI2NDI0IDUzMGFiYTMxMTZhNDBkMDg1ZTRhMTA4OTc5ZjYwM2UyOWJlYmYzZjggbGVnYWN5LXRydW5rCisyNjQyNSBkYzBjMTIxM2M3OWFiZGRhMDkzNWIzODA2NGEzZmYyMGFmM2MyYmI4IGxlZ2FjeS10cnVuaworMjY0MjYgOTM4ZmYzY2I1MWMyNmJmZTQxOWViNjVjZWI3YWVjZTM3YjlkNjE4ZiBsZWdhY3ktdHJ1bmsKKzI2NDI3IDAzZmYzNTY5YmEwNGNhZjZjNTY4MWQyODBlZTZhZGRkM2YwYzE2OWQgbGVnYWN5LXRydW5rCisyNjQyOCBmMzY3NzQxNGJjM2RlZjZhMDkwNTVmYzZlYTc0OTRkMmI2MzM2ZWJkIGxlZ2FjeS10cnVuaworMjY0MjkgNDJjOTk3MjhiNmNjYTJmOWVjMmI3ODNlNTNmMTRjYzc2NzI5NDgxMCByZWxlYXNlMjItbWFpbnQKKzI2NDMwIGJiYWIzYTE3YjRjZjRlM2M3Y2QzZjRmNGM1YjcxMmZhNTUwMDkxN2EgbGVnYWN5LXRydW5rCisyNjQzMSA5N2I5NDgwYmJlZWM3NWU2MTU5YzU0MDk3MTM3NzA3MzQ1ZGUzODlhIGxlZ2FjeS10cnVuaworMjY0MzIgZmRhNzNiZmYyMWZmYTU2ZDVhOWVjZTJmMjQ5Y2YxYzhjYmM4Y2IzMiBsZWdhY3ktdHJ1bmsKKzI2NDMzIGQ4OWU1NTczZGQyMzdlMTNiMDYyNDdhZDIwNTNkYjlmM2RkMmMxZTAgbGVnYWN5LXRydW5rCisyNjQzNCAyMWQyNTIwMjg0MDRjODBkZDgyMjllZjkyYzY4ZWQ5YTgyZTAxNGQyIGxlZ2FjeS10cnVuaworMjY0MzUgNGZmOTBjOTljMzAyYWE2YmQ0M2M0ZDIyODFlYzNmZTFmZWZiNzcyMiBsZWdhY3ktdHJ1bmsKKzI2NDM2IGI3ZTg3NzMyZjZhYjk0MTNkNTRmZGNkYWE5ZWM5OWZmMzRiNmUxNjkgbGVnYWN5LXRydW5rCisyNjQzNyAwZmNlNTU2NzVjYmNiMzgwYzI0MmYzOWRlZjczYjhlMzg4MzE0OGE0IGxlZ2FjeS10cnVuaworMjY0MzggM2JkMzM2YjZjYjAzYTY3ZjczZTcxMGVmMTY2NDBhZDMxN2Y1YTNjZSBsZWdhY3ktdHJ1bmsKKzI2NDM5IDRhZGRmNGNlYWZjNTQ3ZjQ3YmZlMDQ4YzU3YjJlYzY4MWVhMjQ1MDQgbGVnYWN5LXRydW5rCisyNjQ0MCA5NjljMWQxMThjOTdkZWJmZDNmYTZhOGZmNmExMmNhYjQ5MmU1MjRhIHJlbGVhc2UyMi1tYWludAorMjY0NDEgMTBlMDEyMmI1ZmVkNWY4OGQ3MjFkYTlkZDlhZDdmNTk1NTc4ZjgxZCByZWxlYXNlMjEtbWFpbnQKKzI2NDQyIDNiZjc2MmUwZTA2ZWQwOWE5MWUzZTI2NjQ0MTQyZmExYjllZWJhM2YgbGVnYWN5LXRydW5rCisyNjQ0MyAzOTNlOWEyMTZhODhiNTAwMTA5ZjAzMTgzNmVhNmNmZjJjZDBkMDdkIGxlZ2FjeS10cnVuaworMjY0NDQgZTQ4NGYzMGRhYzc3YTYxNzFhMjdiOTdlZTM2NTYwMWFhZThjODc5ZiBsZWdhY3ktdHJ1bmsKKzI2NDQ1IDhjM2RkMWMyZWY0NzllZTZlYzRlNjBlMTliYWE4ZWQzNTdlMjcyZGUgbGVnYWN5LXRydW5rCisyNjQ0NiA0MjNhMzY3OGJjN2M3MTc2ZWE2MGFiMWUyMTc3YTliNmZhMTllYWRkIGxlZ2FjeS10cnVuaworMjY0NDcgNGU4MjUyMjg0N2QwZGU4MWUwMDM3NzUwNjNjNWVhYjU5MmQ5NGIxMiBsZWdhY3ktdHJ1bmsKKzI2NDQ4IDA5ZGIzZjVkMGJkMGVhMGJmM2JiMmE1ZjU5YTE2NGQzZGIzZGFmMjIgbGVnYWN5LXRydW5rCisyNjQ0OSA4YzdhMzlkMGZlZmQ4MDFmNmRkYzg5Y2UwZmRmYWExMjZmMzkwY2U3IGxlZ2FjeS10cnVuaworMjY0NTAgMzE0ZjkyYTI0MjkzYjJhYmJjZjA3Y2VhM2U3ZDU3YzQwMTY0NWMxOSBsZWdhY3ktdHJ1bmsKKzI2NDUxIGIzOTU0NzdkODRkMGQ3Njk5NzMwN2Q0ZGE2ODhhMDM3ODNhZTdiZTcgbGVnYWN5LXRydW5rCisyNjQ1MiA5OTc1NzU2MmJmYjk1N2ZkNGI1OTQ5NzlmMzA5ZWNlOTI5NzcyYjhlIGxlZ2FjeS10cnVuaworMjY0NTMgOWViYTYwYWNlMmRhZTBjMjVjNDg5ZWM2ZjVhMDU5ZGMyNmE3NTk1YiBsZWdhY3ktdHJ1bmsKKzI2NDU0IDkxMWY5ZjE0ZTJkNTdlOWI2MjQyYzZhMmFlYzI5NDU2ZDVhZGI3YmMgbGVnYWN5LXRydW5rCisyNjQ1NSAyYTU0Mjc4NDA2MmY1YTkzZDVjM2MwOTA1YzYyOGY5OTMxZTI1NmRmIGxlZ2FjeS10cnVuaworMjY0NTYgYjVhYWUyYTY1ZjZkMTIyYTBmNzM1ZmEyZTVlOWI4NDYyNjNkNzJmMSBsZWdhY3ktdHJ1bmsKKzI2NDU3IGY4Njc5ZjY3OThiZjY3YjkxNGYzNzFlMTc0YzFjYjc2NzE4MDg0ODcgbGVnYWN5LXRydW5rCisyNjQ1OCAwM2FiZmE3ZGI0NDk4YzVjYjljZWRiMGY5ZDU4OWMyZWFlODljMGVkIHJlbGVhc2UyMi1tYWludAorMjY0NTkgNzE3MmNlZjIzYjA1NDllYmZlNjkzZjhiYjlmODZjOWMzNmU1MTdhYyByZWxlYXNlMjEtbWFpbnQKKzI2NDYwIDczODk1Yzk5ZmNjNWJiZWVjNzVlMWM3M2IyYTg1YTk5MDE4NzliZmYgcmVsZWFzZTIxLW1haW50CisyNjQ2MSBiNmY0MzJiMzIxNDM4Y2FjYjU0Y2I4ODc1ZGJjMDNiMGEwYjZmOWNmIHJlbGVhc2UyMi1tYWludAorMjY0NjIgNTY5ZTM4M2JlMGRhOWE2ZDZjN2UzZmM2YzY5ZmZhMzcwNjhhZWQxNSBsZWdhY3ktdHJ1bmsKKzI2NDYzIGQ0NDU0NWM0YTQ3YTgyZjMyMGU1MDViMDIyNmFjYjE4YzQ2OTdjNjkgbGVnYWN5LXRydW5rCisyNjQ2NCBkMjdlOTdiOGE4NjZlNmRjNGZiY2NjMjhjNTA2YzZjNTQ1NjFkNzk1IHJlbGVhc2UyMi1tYWludAorMjY0NjUgMjZlM2ZlOGE4OGY1N2I3MWNjYWZiYzJkYTIzOGU3MWQ4ZmQzNmRmZiBsZWdhY3ktdHJ1bmsKKzI2NDY2IDAxZjczZmQ2NjMxMDlmYjEyMjQzZDhiZTU1OWVjZjMxNjAxODNjNGEgcmVsZWFzZTIyLW1haW50CisyNjQ2NyA5NzgzNmY2MTkzZGMzMDcxNWI4MjBmYzExMGI4ZjBkYmM2YjE0Mzc1IHJlbGVhc2UyMS1tYWludAorMjY0NjggZjVlZGY3MDI1MjY3Njg1ZTMxNzI5NTJlYmI2Y2VmYWYxZjc2NGVjNyByZWxlYXNlMjEtbWFpbnQKKzI2NDY5IGRmNDVhZGY3N2QzNmRmZGU0ZDhiNjE0ZmMyY2M3MzQ2MmZlZDc4NTIgcmVsZWFzZTIyLW1haW50CisyNjQ3MCA3YjAwZGFiOTg4Y2Y0NDA3ODZlMzljYTU4OTk1Nzg1MGVjMGE3N2UzIGxlZ2FjeS10cnVuaworMjY0NzEgMmQzYTJiZWIzZDRkNzAyOWYzZWU5OGQ1N2VkNWI3MzljNDQ2YjY2ZSByZWxlYXNlMjItbWFpbnQKKzI2NDcyIDQwNzllOWMyM2ZjMTcyNzYzYmViNmQ4ZjlmNGJmOWExN2RhYzgzMzAgbGVnYWN5LXRydW5rCisyNjQ3MyBhM2M5ODJkNDEyYjQ2ZTFjZjk0Y2Y0NGM3MjMzMzhkNzBmOWRlNGZhIGxlZ2FjeS10cnVuaworMjY0NzQgZTc1MTNlMTQyYzcwZWRmYmM5MjM0MTA2OWZiMjQ4Njc1YzY3MDFlYSBsZWdhY3ktdHJ1bmsKKzI2NDc1IDFkYTAyYmJhNjI3NjczYWNmYzQzYjAzY2I0MWUwMmNkYjM3ZjI1MTggbGVnYWN5LXRydW5rCisyNjQ3NiA3MTIxZDdkNTcyZDAxYWYzMGI2MjI2ZDg1MGZhNzcxZTVjYmJlMTFhIGxlZ2FjeS10cnVuaworMjY0NzcgZmRlODc4YmMwZTNiZTVlNDk4MTc4ZjE1YzJkYWZkMGVkMmQ3ZDU5NSBsZWdhY3ktdHJ1bmsKKzI2NDc4IDBmZmI1NGIxYzNlYTVjYTFlODg3OTRjZjE5ZWQzMTJiYzg1ODI3NTIgbGVnYWN5LXRydW5rCisyNjQ3OSBmOTE3ZTdhNmU5MTFiNzcxZTFkNjE0NThkZGYzN2JhZmEyZTUwZmEzIGxlZ2FjeS10cnVuaworMjY0ODAgZmE0MWYyNDEwNjg4NzMxMmI1ZjYyMmNiMTI5OTRmMTYzNWRlY2FkYiBsZWdhY3ktdHJ1bmsKKzI2NDgxIDczN2Y0NDU4ZTVkZTAxMWUwM2MzMTllMDhlMzk1MzY4ZmU3OTY3YjggcmVsZWFzZTIyLW1haW50CisyNjQ4MiBiMGU1OWYxZTQ5NWFjNmRiOTU2NmY4ODdkYzgyMmEzNzI1N2ZmNDRiIHJlbGVhc2UyMi1tYWludAorMjY0ODMgNjI3YjdjYTUyMjFhYzBjOTFlYTE5MzkxYTcyM2ZlZThiYzUwY2VhYiBsZWdhY3ktdHJ1bmsKKzI2NDg0IDIyZGEyNjA4Mjg1Y2ZlNzdhNGVhYmM2NjVmY2U3YjUyMzU2NTAzYTUgcmVsZWFzZTIyLW1haW50CisyNjQ4NSAwYmEyMzM0MWU1Y2ZmNGU4ZTVlZDFiNzY3NmZlNTc2OWY3YWFlNzg1IHJlbGVhc2UyMi1tYWludAorMjY0ODYgOTA4MDVmY2M2YzcwMjU3M2YxMThlYjk5ZGJjN2RhMjZkZDM3NTFmNCByZWxlYXNlMjItbWFpbnQKKzI2NDg3IDM2OGU4MDgxZTczYzRkYmQyODA0M2ViZTFjOGJhYTNlNjc4ZGYxY2IgcmVsZWFzZTIyLW1haW50CisyNjQ4OCA3MDY1MGFlMWEyY2YwMDIzZjE3MzgxYmUyOGRlZmI3ODQxMDQyMGU4IGxlZ2FjeS10cnVuaworMjY0ODkgNWFhZjNkN2I4ZDhjMDg5M2IxNTBlZjBkYjc3OWVkMGZiZTQ0ODZkZiBsZWdhY3ktdHJ1bmsKKzI2NDkwIGFkNDRiZjExNzllYjI1NGI1Y2E5N2M3NTVmY2NiZmUyYmM1NTlhY2QgcmVsZWFzZTIyLW1haW50CisyNjQ5MSBkZTA5Yjg3NGYwN2E2ODhjY2M2NjI3MGI3ODNlN2FiMDVkMjg4MTNjIHJlbGVhc2UyMi1tYWludAorMjY0OTIgOTBhZGJjZjYyMDEzNjFjN2RiYjhjYzgzNTM5YWQ5Nzc1MDJjNDQ1MyByZWxlYXNlMjItbWFpbnQKKzI2NDkzIDY3NTc4YTgzMGQ4MWNhMzkyNmViZTY5NmM5MTllMDM5YjVmMDM1MjggcmVsZWFzZTIyLW1haW50CisyNjQ5NCA2ZGExZjk5MTdlOWIzZTUzMzVmYjU1YWIzODFiZDQyYTU5N2Y3ZjQ4IHJlbGVhc2UyMi1tYWludAorMjY0OTUgNDY5NGEwZGYxNzRlNDhiOTUxYmFlZTdiOWJjNWNjZWQxY2YzMDYzYyByZWxlYXNlMjEtbWFpbnQKKzI2NDk2IGEwNDdmMTZmYjhiM2U3MjIwYzkyMTViNDhkMjc1MjRlNjgxOWU4MDcgcmVsZWFzZTIyLW1haW50CisyNjQ5NyBkOWI3MWY2MjgxNGY4ZDFhNWZlNmQ5NTE5ZjQxYjg5Y2M1Y2EyOWM4IHJlbGVhc2UyMi1tYWludAorMjY0OTggOTFhMjIyOGYzMDIxYjc5MmQwZGQ4ZDIyM2U5NjE0OTViODQyYjA2MiByZWxlYXNlMjItbWFpbnQKKzI2NDk5IGFiNTEyMzI3NGNjZmYzZjZmMGViOTQ3OGUxY2RiY2ZmMjZhYWI4OTUgcmVsZWFzZTIxLW1haW50CisyNjUwMCAyYTExMTQ0ZjhmMGMwNzc4MzY2MTk5OGE0YjY3ZmNjY2MxN2MwNWQ1IHJlbGVhc2UyMi1tYWludAorMjY1MDEgNDZmZmIxNDllYTczYTQ0MTQ0MjY1YjJlZGFhYWY5OTY3ODJjMzE3MSByZWxlYXNlMjItbWFpbnQKKzI2NTAyIDhiYTMwZTJkOGFlNjU2ZDJlMjc2ZDUxYzhjYTc1ZGQ0YzE4ZTI3Y2MgcmVsZWFzZTIxLW1haW50CisyNjUwMyBiN2Y5NTA2ZTYwYzk0ZmUwMWZmNmZkOTZiYjk3MzY1ZTM4ODI3NmZiIHJlbGVhc2UyMi1tYWludAorMjY1MDQgYTU3NWU2ZWU4NWQ5OTY5NTUxNGQxYTkwNTU2NzQwYmEwY2ViYzEzZiByZWxlYXNlMjItbWFpbnQKKzI2NTA1IGEzNmY5ZmIyYzQwNDJhZjI2NDUyODY0NjZlMjc2YTIzNjAyN2UzNTQgcmVsZWFzZTIyLW1haW50CisyNjUwNiAwZWNlZjhiZmJkNGIwMjAwMjU5Nzc0NmNhNGE0OTgxZTdmYzBiYTM1IHJlbGVhc2UyMi1tYWludAorMjY1MDcgNjFjYzA4NzQ1ZDMxNTkzNjBhYjM0YThhZTBjOWZjNmIwODNiZGU2YyByZWxlYXNlMjItbWFpbnQKKzI2NTA4IGRiZjAxM2NjM2RlZWUwYTQ1ZmVjOTQ2ZGYxMzAxYzRkNzYyNGUwODMgcmVsZWFzZTIyLW1haW50CisyNjUwOSBjNDYwOWNhMTdlM2VhMGQwNzg1M2JmYjNjZGYwMjI5NWYxMThjY2QxIHJlbGVhc2UyMi1tYWludAorMjY1MTAgNjJmYWJiZDQ1N2JlNmI0YjQ5Y2JlZGFkZTA4OTEyMTQ5NTQ5YjkxZiByZWxlYXNlMjItbWFpbnQKKzI2NTExIDUyMjU3YWZmZTBjOWVhM2FhNTMyNzc4MDY3OGNmMjIwOTAyYWU5ZjUgcmVsZWFzZTIyLW1haW50CisyNjUxMiBmNzY5YjQ5NThlNjY2MzlmYmY2YzIzN2I2ZTdiYzQzOTFlMDVhNTUwIGxlZ2FjeS10cnVuaworMjY1MTMgOTUwNTI3MTU2NTFiNjAwZDYwNGVmNTk3NGI5NmEwNTliNTFiNTU4YyByZWxlYXNlMjItbWFpbnQKKzI2NTE0IDkzNjg1NjdhMTA0N2NlNzhiOThiOTJlN2FkODY5OTNhZWM5YzVmNTAgcmVsZWFzZTIxLW1haW50CisyNjUxNSAxZWI0MmZjNjhiNWY4NWU4ZjI5Y2FiNmFmMzAzMGZlODYzZmQ4NzhlIGxlZ2FjeS10cnVuaworMjY1MTYgNjFlYjcxODI1MzVlZjA4NTA5Y2UwNmY4ZjhhODkyMjU5ODMzZGM2OCBsZWdhY3ktdHJ1bmsKKzI2NTE3IGFhZTgxNGY5NGJhZGRmYWQwODg5NzJiZTJhZjQxN2U2OWU2Mzc0YjYgbGVnYWN5LXRydW5rCisyNjUxOCA1NGFmNDQ5Njc2MDQ1NWY1NWQxOWVkZGM0NzBmMDk5MDM0ZmJlZTgwIGxlZ2FjeS10cnVuaworMjY1MTkgNGFiMjFlMzU0NDAzZTA1YmZhMWNjNWVkZDU2Nzg0NmJlZWExZmJhOCBsZWdhY3ktdHJ1bmsKKzI2NTIwIGZjYTM3OWMzMDkwNmUxZDZmYWM5YmNiNGE4NWViZDkzMTRiZTJlMDcgbGVnYWN5LXRydW5rCisyNjUyMSBjNTQ4ZTcyNmIzYmM4YmU2YzdkYTBiZWNkNmVhYTg1MjE4NzVhOWRkIGxlZ2FjeS10cnVuaworMjY1MjIgMzYyYzFiODFlZTljNzllYjZlNmFmM2UxNzcwOGJjOWRkY2QzZTc1YiByZWxlYXNlMjEtbWFpbnQKKzI2NTIzIGRkNDE2Mzc0YWIzODYyZTJlYWQ5MGQzY2E2ZmExZmY2NTg4MjEzNjcgcmVsZWFzZTIyLW1haW50CisyNjUyNCA4YzE0NDI0NWIzMTVjZjQ0NGNhZTM3M2EyNWJjOTUyZmU1YmM5OTAxIGxlZ2FjeS10cnVuaworMjY1MjUgODgzZDY5ZGU1NjBiZmY5MTFmNzMyZmI5MDQyODg3YzZiYjQ0NWY2MSByZWxlYXNlMjItbWFpbnQKKzI2NTI2IDE5NWZlNWZmNTBhYjkwMGIxYzI1MmQ0YzM4OGZmZGM4MmFiNzM2OWUgbGVnYWN5LXRydW5rCisyNjUyNyBmMGRjOTdiYjljMGRmYTU3MjZlZWJlMjc5MjUxNmIzNjNmZDBlMDYzIGxlZ2FjeS10cnVuaworMjY1MjggMGFiMjQ1ZGU3ZGRhNzRjZGM0NGQ1MzJjZjZiYjk4YzE4ZmZjMjliZCBsZWdhY3ktdHJ1bmsKKzI2NTI5IGI2M2Y0YTE5ZWJkZDI3Zjg3MjY0YTBjOWU1ZGE1ZTE0ZGNmMTE2NWMgbGVnYWN5LXRydW5rCisyNjUzMCA3MTNmZjg4OWQwOTQ4NTlkNDEzZjRlMWIyMTk0N2NmYzBkZjJlMDYyIGxlZ2FjeS10cnVuaworMjY1MzEgM2EwYTJmMDc3YjhmMDEwOWQ0YjBhMDFiZTQ3MjQ0ODRhMjA2MjE3YSBsZWdhY3ktdHJ1bmsKKzI2NTMyIGQ1Y2U3ZmY1MzFiZDE2YmVkMDE2MWM3YTUzMjZkMTQ4MGY4YTUzZWUgcmVsZWFzZTIyLW1haW50CisyNjUzMyBmMDM1NzIwODQ4NTFiNDllZjhmYTBkOWEwM2QzNGUwZDdjODRiNTBkIGxlZ2FjeS10cnVuaworMjY1MzQgMmZjOTRiYTVkYmZmMTMyOTI3ZGNlN2Y1NTk1NGRhN2RlZGExMzkyYiBsZWdhY3ktdHJ1bmsKKzI2NTM1IGUxZDBkN2M2OTk5YTUxNjczOGQ3NmQ1OTA0NDJlY2RiMzMxMzFiMzYgbGVnYWN5LXRydW5rCisyNjUzNiAxNjMyODc2MWVhYmY1OTRjZDIzYTNiOTQ5NDc2MTUyY2Y1MTljNzYyIGxlZ2FjeS10cnVuaworMjY1MzcgNjhkNzBiNDEwMDllZDk2NDEwY2Y4NDJkZDQ5M2Q2Y2IzZTJmZDE4MiBsZWdhY3ktdHJ1bmsKKzI2NTM4IGVmNzNmZjdhOTg5ZTdmMGU1OTY0OWRlYjgxZjQ0NTJmNGI2OTQ3NzkgbGVnYWN5LXRydW5rCisyNjUzOSA4Y2YxZWY4MTRlZTQzYThiOGNjOGQ1NjE4YWQxMGJmZDA1MGI4NjAyIHJlbGVhc2UyMi1tYWludAorMjY1NDAgNjIxODgyOGIwYTExMmJkZWE4NjZjYjBlNGVhYjI0MWEyYjYyMDA4MyBsZWdhY3ktdHJ1bmsKKzI2NTQxIDFhNjE4MTk2ZTE1YTljNTczMDM1ZGI5NjMzZTliYjQxMWRkMjEwYWYgcmVsZWFzZTIyLW1haW50CisyNjU0MiAxZGY5MzE4YjJiOGUwNmUzZjAxYTlhMjYzY2VkYTViYjI0NTgzYmY4IGxlZ2FjeS10cnVuaworMjY1NDMgMWE3N2FmNjExMTA1OWZiZDc0ZDcyYWE5MmEzMGFhMGI5NjUwNzY1YiBsZWdhY3ktdHJ1bmsKKzI2NTQ0IDk5OGNjNDg0NjRmZWZhYjdmMDJmZjE0NmJhODNiMDBlYzllNjY3YmQgbGVnYWN5LXRydW5rCisyNjU0NSBjMjc3ZWJjM2NlMGYxOTEzYmEyZWMxNTliOGIyODRjNGI1MDFlMmQzIGxlZ2FjeS10cnVuaworMjY1NDYgZTc3OTk5MTY1OTZkMzllNTk2NWNhMTlkMjFmNTBkZGZjNGMyZTQxMCBsZWdhY3ktdHJ1bmsKKzI2NTQ3IGI0MzUyZjVhMzQ1MjIxMjQ2OGQ1OGFiOTZiMzE3ZjZmMjQ3NWNiNmEgbGVnYWN5LXRydW5rCisyNjU0OCA3YzBlOGRiY2Y1N2E1OTRlZWRmYTQxNjhkZjQ1YzQ5MTg0NGJmZTUyIGxlZ2FjeS10cnVuaworMjY1NDkgMmZkNjNkNzVlOTJmOTUyODU0Y2Y5N2VmNGYzOGEyZDI4YzQ4ZjU4YiByZWxlYXNlMjItbWFpbnQKKzI2NTUwIDM3NDM1ZjlmMDRkNjQ1NTJmYTAwNDg2ZWM4MWIzOTJkNzQ3YzNhM2UgcmVsZWFzZTIyLW1haW50CisyNjU1MSAwYmMzYTQxZDRlNDBhMjZiNjcxNzc1ZDExZWI4MzEyMTg0M2JiNWIzIGxlZ2FjeS10cnVuaworMjY1NTIgZDQ3OGY4YWZjMzZkZDUxODRjOGRkNzNmYWI4ZmQ4NGZiN2Q5NDIwNCBsZWdhY3ktdHJ1bmsKKzI2NTUzIGYxZDYxNDIxMjhkM2U0OTM5OTI3YTk5YjgwZmYxYWI3ZDA2OWI4NTggbGVnYWN5LXRydW5rCisyNjU1NCA1MDhmZDk1MmM5ZTlmMjNlNDNlOTA0MDI1Y2U4OTgxYWQ2YTI3MTZkIGxlZ2FjeS10cnVuaworMjY1NTUgMGM4ZTc2MmE2NzdjNDgxY2JlMjkxNThlYzk5NmU3Zjc0N2FiODcyYSByZWxlYXNlMjEtbWFpbnQKKzI2NTU2IGYzYmUwNWU2MmFkMWE4ZDY4ZDA4OGE0ZjcyM2IyZmE2NzJkZTJkODUgbGVnYWN5LXRydW5rCisyNjU1NyA2MGYyNDI1ODljMzI3YTkzOTUwMTFkMTcyZjlkNGRkMjljMjZmMGVjIGxlZ2FjeS10cnVuaworMjY1NTggNjc1OWJlMDg4ZDY4YmRlNjdjYjM0MThmNjg2ZTZlODM3OTAzMzQxZiBsZWdhY3ktdHJ1bmsKKzI2NTU5IDk1MGEyMmViOGNjOGFkZWY1YWQ2OTIyYjY4ZjQ3ZWNmZjE4OGY0MTUgbGVnYWN5LXRydW5rCisyNjU2MCAyMTdlZWE5ZDY2MTU5NTgxMjRiN2ZmNTg5YzRkZjEwNjQ2NjMxZWI1IGxlZ2FjeS10cnVuaworMjY1NjEgZDA3OGY4NDhhYzNiODgwZjVjMWM4NzU5OWU1NDMxNGM5NTU4YjQzMiBsZWdhY3ktdHJ1bmsKKzI2NTYyIGM0MDhlOGIyNjc1YWEyZWFlNzIxMThhYzQxZWMyN2U4OTE0YTkyOGEgbGVnYWN5LXRydW5rCisyNjU2MyA0OWJmNWE4ZmExNTE3ZTFiZjkxYTA1N2E5YWY0NDJmMDhhMjMyOTE0IGxlZ2FjeS10cnVuaworMjY1NjQgNTgzYzIyNmFmZGU2Y2IyMDRhMmJkY2I3YjI2M2Y5MjFjMGFkYTA4OCBsZWdhY3ktdHJ1bmsKKzI2NTY1IDZlNTY4ZWUzMWE5Y2VjMDgzMGE1ZDliMGIwODlmOTAzMDNjZTI3MmUgbGVnYWN5LXRydW5rCisyNjU2NiA4ZjlhZDJjMDVkYWRlYTllNWMzZTQxNGIwNzAwOTdiY2Y5ZTNiMDZkIGxlZ2FjeS10cnVuaworMjY1NjcgZmQ2MDlkMmMxNjY5MWYwMjEwMmY4Nzk1NWY4NWI5ZTgxZTE0MTFlNyBsZWdhY3ktdHJ1bmsKKzI2NTY4IDVjMzAxNzc1NjY1ZDljZmFkODVmOWRmN2MzOTMzZTUxNjE0MTY2YjAgbGVnYWN5LXRydW5rCisyNjU2OSAzODJlMzdhYzM3NGRhMmNhNzU0ZDc2NmJmOWVjYTg4MjViMTIxNTMyIGxlZ2FjeS10cnVuaworMjY1NzAgNmIyYWY2ZGFmZTdjNzNmNTY4YTJmNGMwZGU1OWE1ZTE0NGJjOGRjZCBsZWdhY3ktdHJ1bmsKKzI2NTcxIDBlNDQ5N2ZiMmRlOGQ0YTEwOTQ4MWZmZDIxZmZmYzc3Mzg0MjcwMDEgbGVnYWN5LXRydW5rCisyNjU3MiBlMTZkYmY4NzUzMDM3MzgzYmU4NWMxNjljMWUyNGUxODI0ZTdkMzM0IGxlZ2FjeS10cnVuaworMjY1NzMgZWY5MTlkMjk1YTEyMGQ2NTg1YThiMDQ4OThiMGU3Nzk3YzUwNTYzZSBsZWdhY3ktdHJ1bmsKKzI2NTc0IDE5ZjUzYWE0ZTFlNTE0NzczMjg5NDNiZjk4NWYwODc4YTAxZDYzMjEgbGVnYWN5LXRydW5rCisyNjU3NSBkOGU5ZjZmNTdmMTMzNjUzMzlmYjQ4YzlkNGExMjhmMmM5ZDg0YTVhIHJlbGVhc2UyMi1tYWludAorMjY1NzYgYjE5YTVhZGI2OTkwMDQ5M2E2YjZiYzMwM2YzNzU5ZjA1Nzg3MmExOSByZWxlYXNlMjItbWFpbnQKKzI2NTc3IGJhODg5OTg5YTdlYjAxZmFkZjBhNmRiMTM2OTI5OTExNzRiMzU4YWMgbGVnYWN5LXRydW5rCisyNjU3OCBkNjE0YWU5NDhiYzNhZTNiNWJlYjFmN2YyNmJhNGFjMWY4MjU2MmQxIGxlZ2FjeS10cnVuaworMjY1NzkgYjIzNmQyMDgzMGZlNTNkNThmMjRiZWFjNzliZDUzOGIxZTNhNzQ4YiBsZWdhY3ktdHJ1bmsKKzI2NTgwIGIwOGI1MWRjZTI2NGUzZjY0MTg4ZTc0ZGQ5ZDBiOTViNjg2OTdjYTIgcmVsZWFzZTIyLW1haW50CisyNjU4MSBiZDA4YzY5NTVlOWJkZDE2NDQ1MDlmOGJlYzVkNDUzZWY4MGU1ZTBiIGxlZ2FjeS10cnVuaworMjY1ODIgNTU0ZjIxOTdhN2E3NmM4ZjczOTEzMzVhNGU3YmMxYWMzNDc4YmViNyBsZWdhY3ktdHJ1bmsKKzI2NTgzIGFiNGZhNzhhZmRkZjYxOWEyNmM3ZmNjYmZlZGU2OTI5ZTdkZjM5ZDMgbGVnYWN5LXRydW5rCisyNjU4NCBmNWFlZWFhZjAzOTc0ZTFlN2U1ZWY3YTBiYTYyMjNiODc1ZGViZDFlIGxlZ2FjeS10cnVuaworMjY1ODUgZWQ1ZDc1OTEyZDYwZGE5MWQ1YjkzZjIzNjYxMDE3NGQzZmFhNGRhYSBsZWdhY3ktdHJ1bmsKKzI2NTg2IGU2MzllMzRlZjkwMTFlOGYzYWYzOGI3YzVjMWFlZDExYmRhMDk1NTcgbGVnYWN5LXRydW5rCisyNjU4NyBkZDM1MGI2MzkzMDk5OTQ2OGQzOGQwY2NjMjdlMjFjNmRiZTgxYmM5IHJlbGVhc2UyMi1tYWludAorMjY1ODggYTQzMTg5MjNjN2FhMzM0ODY0ZDFiNmM4YjM1NmNhNTE5NDQzNTczNSBsZWdhY3ktdHJ1bmsKKzI2NTg5IDZkYjZlM2RjODM2NmJlYzY2NjQyNWU2N2NlMDJiN2EzNGQxNDgxNTQgbGVnYWN5LXRydW5rCisyNjU5MCAyYjQ3ZDBkY2ZhNjY2YThkNTgxYzM0YjBhNmFiYjczOGQ1MTU5NWVlIGxlZ2FjeS10cnVuaworMjY1OTEgODYzMTI1NTQ1MzAxNTkzMDZiNGZkYzg0NGVmZDQ2MGNhZGE1MTYzNSBsZWdhY3ktdHJ1bmsKKzI2NTkyIDhiYjkwZThiZjM2M2QzZDBmNGRlZmIxNzMyNzNlNTNlNzZlZDExOGEgcmVsZWFzZTIxLW1haW50CisyNjU5MyBkMzI1NDMzMzdhMjE3NWU1YmRlNzM4OTkzOTBkMWIyMTA0MmExYzg0IHJlbGVhc2UyMS1tYWludAorMjY1OTQgNDBhMTg4MDU1MzY5MWZjYzk5YjNlNWFjYjg0NWMyNTY5MmFhZjI3YiBsZWdhY3ktdHJ1bmsKKzI2NTk1IGFlZjI0OGMxNjQ1YTI0MmJiYzcxNWUwNjMxY2U5MDZhNGUxMGJhZTAgcmVsZWFzZTIxLW1haW50CisyNjU5NiA3NzBjMmQyZjU0NzI5OWJkNTEyMzA2MDE1ZWRjNTEyMjRhNDIwNGQ1IGxlZ2FjeS10cnVuaworMjY1OTcgZjUxZDFhMmQ0YTRhMWZhZDFhYTNiYTQ2ZGU0YjRkYjVjMDQyYTA2NiByZWxlYXNlMjItbWFpbnQKKzI2NTk4IDVkMTM1ZTQxNGM3NjQzMmRkM2UyMTQyMTk5MWMyZjI5ZTE0ZGJkNzkgbGVnYWN5LXRydW5rCisyNjU5OSBkMzI4ZTViYjhhODgwZjY0ODI1OGIyOGIxNTExYTg3ZTU5NDM4YTZiIHJlbGVhc2UyMi1tYWludAorMjY2MDAgZGFiYjBhM2Y0N2E1NTQyMDIwNTFmYjhkNWQ2NzhiZGRiMmIyZDZkYyBsZWdhY3ktdHJ1bmsKKzI2NjAxIDc2YzQ1MDM3MTEzZmRhMzYzYzIwOTVmMmIyZTQ1YzhlZjUwNGRiNzUgbGVnYWN5LXRydW5rCisyNjYwMiAzMDQ1OGExMWI1ZTA5M2FkNTMwYWZmOWU4NDU0M2FlZjg3NzIwMWNkIGxlZ2FjeS10cnVuaworMjY2MDMgNGUyMzRiODcxNzBiMDhlZTI2YTVkYWQ5YTliN2M4YjQ2ZDhiMzIyZSBsZWdhY3ktdHJ1bmsKKzI2NjA0IDI0YjNlYWQ4OWNhZTg3ODM2MGU0M2I5ZTNlMmNlZjNhZTFlZGU2NTIgbGVnYWN5LXRydW5rCisyNjYwNSA4ZmVjMTEwZTlkMDIwODQ5MGRjOTBhZDJmNmZhNzYwNmY3ZjgxYjk5IGxlZ2FjeS10cnVuaworMjY2MDYgZTA0NzBmMmRkNDEwZThiYjc1MjFmNDM4M2VlOGMwMDViZTMxZmY2OCBsZWdhY3ktdHJ1bmsKKzI2NjA3IDVmZGFkYzk0MjY2NTAyZDcyNjczZGQyZjNmZjEyNTQzNDg4MDU3ODMgbGVnYWN5LXRydW5rCisyNjYwOCBiMGI2MzIxMDZmZDc2NWQxY2FiZDljZjgxOGM1NGU2ZTczZDM4NjA3IGxlZ2FjeS10cnVuaworMjY2MDkgOTc2NTBlZGY1OGJiMTdkYjM5NjAyMjVlOGVkMWFmMWJlNjkwZTVmZCBsZWdhY3ktdHJ1bmsKKzI2NjEwIDVlODBhZDM2ZDhmZmJjNDRiMTQyYjdmYjQ4ZjVmMTVhMmU5OWQ2MTkgbGVnYWN5LXRydW5rCisyNjYxMSAyODRjZmNhNzRkZjQwZDYxMzU2ZDQxZmJhMGNiNmYxMDllZjBhY2NiIGxlZ2FjeS10cnVuaworMjY2MTIgNDA1YjI5MWMzMjFkYTBlOTFjMTEzYWZiMDQ5Yzc0YWJjNmZmYjQ0MCBsZWdhY3ktdHJ1bmsKKzI2NjEzIDRmMzM1Y2EzZjExY2MxODQ0MTgxYzMyNmQwMTljNTViZTI2MzRlNDQgbGVnYWN5LXRydW5rCisyNjYxNCA3MmNhMGZkNGRjYTZiZjU2NThhMjBlZjY1MzNjMWRkM2RlMGE0MjlmIGxlZ2FjeS10cnVuaworMjY2MTUgOWIxNzUwMThmZGVmNzg1Y2EyYzlmN2U5NTIwY2I1NjYyMTFlYzQ1MyBsZWdhY3ktdHJ1bmsKKzI2NjE2IDI5MjIxMTMyMTc2OTdjMWIwNzFjYjc5MzRkOGRiNWVmNGQwYjI3MDIgcmVsZWFzZTIxLW1haW50CisyNjYxNyBhODM5YTZiZTg1Nzg4ZDUwMzcwNGFmNGY0NmM3ZjI5NjM1MzRlY2NjIHJlbGVhc2UyMi1tYWludAorMjY2MTggNjY3YjAyNmE4OWQ5MGUyZTQ4YzFmMjAxODkyNjBlM2MwMjY0YWRjNyBsZWdhY3ktdHJ1bmsKKzI2NjE5IDlhOWJlYzEwYWE4YzZjZDI4YjcyOWVjMDAwMGY0ZTYxNjY3MWY3MzggbGVnYWN5LXRydW5rCisyNjYyMCAxY2Y4ODU5MzE2NjkzOTA3MjhiZjc5YjdjMzk2ZGU3MDY3MGJhNTM5IGxlZ2FjeS10cnVuaworMjY2MjEgOWUzNTMyYjc1NDcxZTY4ZjZjY2Y2OTg5NmQ5MTNiZjg3ODVlOTU4ZiBsZWdhY3ktdHJ1bmsKKzI2NjIyIGU1MjQ5YTZjYzFkODdmZTZjM2UzMjk0Njg4NDQ5NzYwM2EwOThjNDAgbGVnYWN5LXRydW5rCisyNjYyMyA3MzUzOTc3ZDZiNjRhY2YyMGJmMjU1ZjdiY2YxZGFjMTQ3MzNlMjVjIGxlZ2FjeS10cnVuaworMjY2MjQgMzc4MTJmMmJhMWFhYmViNThhYjQxODNjZTFlNGUxNzRiNTYwY2EwOCBsZWdhY3ktdHJ1bmsKKzI2NjI1IGI1NzJmN2EwYmI1NjM1YzU2ZjRkZjdkYjk1NGI5ODA3YjM3YmUwMjggbGVnYWN5LXRydW5rCisyNjYyNiA4ZDRiMjVjZWVlZmU5ZjkxOGVjZjVlZjE1N2NhMGVlZDFlYmJmODIwIGxlZ2FjeS10cnVuaworMjY2MjcgN2I2NmNkMTVkY2U5OTAzMWE5N2E0MDZjMTQ0YTdjMjMzNzkzMzZiYSBsZWdhY3ktdHJ1bmsKKzI2NjI4IDIxY2U1ZDVlMGVjNzE0YTk2Y2I2NzI3NTAwMzE3MTdiZjc4Mzg3OTYgbGVnYWN5LXRydW5rCisyNjYyOSA0OTMyMDZiNzAxZGI1MTc0MTljZDJmODdlMzQxNzUwZjRjNmIzNzNmIHJlbGVhc2UyMi1tYWludAorMjY2MzAgZWMyYTU1NTllNzY5NWJiZDZlNzU2ZmU1ZmI2MWViMmVmYWQ2MzY2NCByZWxlYXNlMjItbWFpbnQKKzI2NjMxIGY5NzA1ODhlODliMTBkMzJlZWMwOWQ3MmY5MDdlMTMxY2NjNTNhYjIgbGVnYWN5LXRydW5rCisyNjYzMiA4MDNlNmE2OTUzMDY0YzM5OWUzMzc4YjNhNWEzZmEyYjcyZjU5OWI2IGxlZ2FjeS10cnVuaworMjY2MzMgNTgyODU1ZjZkMzViZWRmYjBiMTY3Y2FjYjJjZGIxZmRhNmFkN2Q5MSBsZWdhY3ktdHJ1bmsKKzI2NjM0IDcwYTA4OTcyMjM5MzViZjIxY2EyZjA0NDA0ODA2ODQ0YzE3ZmEzYjMgbGVnYWN5LXRydW5rCisyNjYzNSAyOWNhOWUxMmJmMTAxOWEyYzliN2U5ZWQwNWE2MTk4YTI3YTVhMDNlIGxlZ2FjeS10cnVuaworMjY2MzYgZDQ3MjkwZGQyZDU3ZTY1MTY1NjE0ZGY0YjFmOWVlOGM4ZTBhNmVkZCBsZWdhY3ktdHJ1bmsKKzI2NjM3IDQ2NDUwZjE3YTA3MDU2MWM2ZjVhYzg3MjEyMGYyNzY0NWZkODhkOTEgbGVnYWN5LXRydW5rCisyNjYzOCAzMTRlMDhlODA5MGZiNGQ5MGE2ZmI0YzViMTE5NTJhMjRmMjVhZjNhIGxlZ2FjeS10cnVuaworMjY2MzkgNWY1Y2VhMjcyYjQ2MjMxYzA4ZTEwZTYyY2MyZTMyN2ZhZGI5NDNmYyBsZWdhY3ktdHJ1bmsKKzI2NjQwIDIwMDU1OWZjYzY2NGY3YjY2YjkzODI4MjUxZTJjZDgxYjIzYTVhN2IgbGVnYWN5LXRydW5rCisyNjY0MSA5ZTIyYTg3MDJkZTJkODRkNDhjZWRhODcwZGRiMGY3MThhNjAzMGQyIGxlZ2FjeS10cnVuaworMjY2NDIgZjVmZDdlMjk1ODk3NTk1Y2YxMjc2ZDM1YmZlMzUyNzMyYjY2YTk2ZSBsZWdhY3ktdHJ1bmsKKzI2NjQzIGE0ZTc1ZDUzZDMyYjRmNTc3YjU2MWFkNWZhMDRhNDZhZWQ5MjZkOTcgbGVnYWN5LXRydW5rCisyNjY0NCAzZWRkZDlkNjhhZjdkYmMwNDVmMWQ2OWE4ZjMwMmI3ZDEyMmIyNWJhIHJlbGVhc2UyMi1tYWludAorMjY2NDUgMDBmNjYzNjBiZTE5ODYwNjUyMzQzYmFiNzllYTE2MjExMjBiZTY2MyBsZWdhY3ktdHJ1bmsKKzI2NjQ2IGFmZTI2MzY3MmZkODRiYWJiZDM1Mzg1YTQyOGNmZDUyMTQxMWZlNzQgbGVnYWN5LXRydW5rCisyNjY0NyBlMTE0NzFhMDYyNmMxMjJkNDVhOTE4ODc0ODI5MWRlYjM3Y2M2MmU5IGxlZ2FjeS10cnVuaworMjY2NDggYjYwYjczZDQxZWI0YTgzZGU0ZjFhZDYxODk4ZjY4ZDE2OWY1YTU1MCBsZWdhY3ktdHJ1bmsKKzI2NjQ5IDQ3MjhiZWRmNGI3ODlhNzA1MThlODEyZmViMzY4MWIxNzEzNmNkNmIgcmVsZWFzZTIyLW1haW50CisyNjY1MCA3YzYwOTRiMThkMTYxMDBhZTlkNDJkNDc4YjQ3M2EzNjFhMTg3YjA4IGxlZ2FjeS10cnVuaworMjY2NTEgNWRkNTJhOWIwNDM4YTg2OTVmYzI4NDM3NGNhNWZhNTJlMGVjZjgwNyByZWxlYXNlMjEtbWFpbnQKKzI2NjUyIDY1NjEwYmM0ZTZhNTczZjA0N2M1NGQyZGQ5OTUwOTExM2Q0NGE4ZDggbGVnYWN5LXRydW5rCisyNjY1MyBiOTNlZDFhNGU0OWYxYTg2OTJlMDE4YTA5ZGE1MTY0M2NkYjE0YWUzIHJlbGVhc2UyMi1tYWludAorMjY2NTQgOGYxYjM3MWZmYmFmNjFkN2FiMjkzZGI0NzA3Mjg1ZDg1Mjk5OTMwZiBsZWdhY3ktdHJ1bmsKKzI2NjU1IGI3MzVlODljY2RhNzRmODBkNzAyZjMzYjJmNmMyN2RhNGRjMWM1NDYgbGVnYWN5LXRydW5rCisyNjY1NiA2ZmE3NmI0ZTU5ZmVmZTgxYzUxMTE5OGM3Zjg5NjVkMDJhMjc5Mzc0IGxlZ2FjeS10cnVuaworMjY2NTcgMTdjYWZlODA1ZjA0NWY2NTJhNjUyMzQ5ZDlmODUzYzg4MDRmY2Y5MCBsZWdhY3ktdHJ1bmsKKzI2NjU4IDA4ZTZmOTRmM2FiMDA3OTg0NjIyNWNjM2M2ZTg4NDMyMDUyOTY0ZjYgbGVnYWN5LXRydW5rCisyNjY1OSA1YTZiZThmYThkZTI0ZTZjN2FmYTM3OTdkNTM3MTU5MGYyZmI0ZGQ4IGxlZ2FjeS10cnVuaworMjY2NjAgMDE0NzhhMTMyOTA4OWI4MDI5Y2UxY2VhODM3YmMzMzRlZjMwOTUwNCBsZWdhY3ktdHJ1bmsKKzI2NjYxIGI1ZjZlOWY2ZTdmNGI3OThkZTA4NjA3NmI1MjAyZTNhOGMwYzY5ZTYgbGVnYWN5LXRydW5rCisyNjY2MiA1NzMyYTljYzkxYzdhOTQyYjBiZmZhMzc4OGQwNmFlYmI3YjliZTgwIGxlZ2FjeS10cnVuaworMjY2NjMgNTNlYmFlNzgyM2Q5NzQyZjM1MTRiY2RkMTg1OThlYWEzNzIwNzFjMCBsZWdhY3ktdHJ1bmsKKzI2NjY0IGEyMTUzMjg1NjUyNDYwMDk2OTYyZDNmYzRmYjFmYjJlNDE3NTE2NzkgbGVnYWN5LXRydW5rCisyNjY2NSAyMGE3YjJjZjNjMWZlMzk1ZTdlNWI3M2E5Y2QyOTE0ZjExNzUwNjM0IGxlZ2FjeS10cnVuaworMjY2NjYgZWY2ZTMxZjBjZWUxMjc2MTZiN2I3MGFlYTQxYmI0Mjc3OTA0ZDA0YiBsZWdhY3ktdHJ1bmsKKzI2NjY3IGNmOTY0MGJlNmY4YTk1MjBlM2YyMWNkMWM2YWFlYzBhZDBjMjc1ZDAgbGVnYWN5LXRydW5rCisyNjY2OCA4YWU3YjQwYWM2ZDA3ZWJlZDY1NzBkNDA1ZGFkNzFlMGVhZWU3NjhmIHJlbGVhc2UyMi1tYWludAorMjY2NjkgZDA1MzJhZTA1ZWQ3MmFjMmM3MWE5M2QyYjA5NDI0OTM1NDE3NzdlZCByZWxlYXNlMjItbWFpbnQKKzI2NjcwIDRjZTYxMTY1MGQwY2U4N2UyMzcwMzAyYjk2YjNlOTU0MWQxYWI4NzggcmVsZWFzZTIyLW1haW50CisyNjY3MSAwMTc2NWQzMDUzMmUyOWQ0NmZiYjk0NGRhYzg0OGVjMDkwMWQwODY5IHJlbGVhc2UyMi1tYWludAorMjY2NzIgYmE2NzIxYWU0YjgwOTMzY2I1YjgyZTAzNWQ3MGI3ODFjNDNkMmY5OSByZWxlYXNlMjEtbWFpbnQKKzI2NjczIDVkYmM3OWVlMDg4NWJkNTYzYzM0ZmIzYWRhMDE0ZTAxMjdlYWUwZWUgcmVsZWFzZTIxLW1haW50CisyNjY3NCAwYjA4OWM4YWMwNzczMDEyZWM2MGY2OTNlY2ZkZjAzNTdlMTU0MjViIHJlbGVhc2UyMi1tYWludAorMjY2NzUgYWFiNDI3M2E3Y2Y3MTY3MzlhZDZhZTY2ZmU2Yjg0NjhjMTdlY2I5NiByZWxlYXNlMjItbWFpbnQKKzI2Njc2IDRjOGY1YTg5MGY5OGJlZWVmMzc2YmFhYmIzYTFiNmZiMTQwOGNjYTAgbGVnYWN5LXRydW5rCisyNjY3NyAxMzM3NjMzMzI3NjczNDAzYWY4YzBjMmYzZjNlN2NhYjdmMjE0ZGRmIGxlZ2FjeS10cnVuaworMjY2NzggYWYxZmY0MWJlNDdiODQ1MzA2YzZlYmY3ZDJmZDQ2NzQxODE0OGFiNCBsZWdhY3ktdHJ1bmsKKzI2Njc5IDQ2Y2ZiODVmMGFhZTc2MDQwN2UzNGIzYjRiNzUyODg0MGY1ZjMyZDYgcmVsZWFzZTIxLW1haW50CisyNjY4MCBhNDQzZTVlNWVjZTdmNjFjMmNhYmNhYTJlNmM3MGI1NDMwNmQ0ODI5IHJlbGVhc2UyMi1tYWludAorMjY2ODEgMjNiZjY4Nzc4YTJhODVjMjkxYWJhZjFmZDE3ZGVjMjk2ZjJhMTliYyBsZWdhY3ktdHJ1bmsKKzI2NjgyIDM4ODQ0OTM3MDk0NjI0N2YwN2U3N2E4N2UzYzliNTI0YjEyN2I5NDAgbGVnYWN5LXRydW5rCisyNjY4MyAxNzRiYTAzYzg5ZmI0ODEzYTRhOGZhY2I0YzhlYWZkMWVmN2NiMzEwIGxlZ2FjeS10cnVuaworMjY2ODQgYWY0OTliNTBhMDk0NjQzYzc3ZjdiNmQxMjc3NzEzMmZlN2M3OGQzNCBsZWdhY3ktdHJ1bmsKKzI2Njg1IDNjN2IyMmQxMTJkMzVlM2NmMjNlZTczYzNlMjk1OTZlZDZiOTNlN2EgcmVsZWFzZTIxLW1haW50CisyNjY4NiAxODA2ZDAyYzA4YzQ0N2E1MmZhYzE5NDY4NTUwOWM0MTUzMDdkYjlhIHJlbGVhc2UyMi1tYWludAorMjY2ODcgNjg5MjZkMGFhZDQwM2JmOGE0ZGFiZGYwMzFjM2I5NGY5MDc1NTdhMyBsZWdhY3ktdHJ1bmsKKzI2Njg4IGJhMjkwMTI4N2NiN2NhODZiZmNkMzE5MTkxMmY4NmIxODE4Y2E0OTMgbGVnYWN5LXRydW5rCisyNjY4OSA4YjU5MjYwMzJiNTZhMjA1YTRjYWVmM2VlMTNmNjNiZjZjZTFkNTJiIHJlbGVhc2UyMi1tYWludAorMjY2OTAgZmZkNWQ4NmU5NmNlYjBmOTI0MTFmYWRjMzc2NWMwZmNlOGVlMzgxYSByZWxlYXNlMjEtbWFpbnQKKzI2NjkxIGMzMzA3N2RjMGM4M2I5YzE5ZGE2Mjc5NDFjMDUwYTllZWNhM2RhZWIgbGVnYWN5LXRydW5rCisyNjY5MiBhYWU2ZGM2YjJhNTg5OGUzMmMxMDBjN2Y0NTgxMDYyYzVmZGNjZmE1IGxlZ2FjeS10cnVuaworMjY2OTMgYzFkMWFlMTVkZTkyYzlhZjU0NjY5ZjJkOTc0YjMwMGU4ZmEzODg2ZSBsZWdhY3ktdHJ1bmsKKzI2Njk0IGNkMDJhMzY3MDRmZWYyM2FiYTUzOTExMTg3OTVmNjU5YzIyMzA3YWQgbGVnYWN5LXRydW5rCisyNjY5NSBjOTE3ZmU5YmM2NTRmZTk2NjA2MTc3MGRjNDBkNGRiNWRjNDg1OWM5IGxlZ2FjeS10cnVuaworMjY2OTYgM2RlYmM4YzM0Y2M5MTBjODIzNzA4ZGRiYzVhZTJiNTBlOThhMGNiZSBsZWdhY3ktdHJ1bmsKKzI2Njk3IDg3Yzk4YWY2MWZjNGFiOTVjZjAzNGZmYmNmZjk2ZGZlZjg5NTkwNjYgcmVsZWFzZTIyLW1haW50CisyNjY5OCA4Mzg0MjdmMGFmMjMyZDE0ZGE0NjllMWUxYTMwMjJmYWY4MzQwNDc5IHJlbGVhc2UyMi1tYWludAorMjY2OTkgOTdlMGI1MDRjMDAwOTg4MWFlYjk0ZWFiYjk1Njg1MjAxMDU3OWU4NSByZWxlYXNlMjEtbWFpbnQKKzI2NzAwIDAyZDUyODNiMWUyMWZjNjJlNmU5YWMxOWI4NmY4NTZhOTA2MWRmYTYgcmVsZWFzZTIxLW1haW50CisyNjcwMSAzNjk3YTMzNjQwMGZhYmMyNjE0MDY0NjZhNjcwMTdlYmEwZjMxYTM4IGxlZ2FjeS10cnVuaworMjY3MDIgNTU0MjNjMWFiY2QxNDlkZTg4MzBlNWZhNjhmN2IzZGJkN2VkMGRlZCByZWxlYXNlMjItbWFpbnQKKzI2NzAzIDEzMDU2YjYyNjdhMjVmMTZlY2EwZWFiZjljNjZhN2M3NmZlZWNhMGYgcmVsZWFzZTIxLW1haW50CisyNjcwNCAwM2IxZTk4OWIxZDk3NzQ1OGQ3N2JjNmQzOTY1MTZiMGRkMDVjZGEwIGxlZ2FjeS10cnVuaworMjY3MDUgYmZmYzcyMzZjNGJhMjg5MTQ3ZGU4ZGQ4YWFiN2EzNzA5YzgxNTRkYiBsZWdhY3ktdHJ1bmsKKzI2NzA2IGQ5M2Y1MzdhNzUyYjg4NmVkZWE2NGFkZmJlMThjZDljODhiNTRkNzMgbGVnYWN5LXRydW5rCisyNjcwNyA4N2M3MTZiMjhhM2VjZjBiMGZiNzBkZjRmN2EyYjE1ODUxMDUyOTFhIGxlZ2FjeS10cnVuaworMjY3MDggMmQyZmFhNTFkY2ZkYWU4Y2UzZTAxMjkwNDQ0ZTI2ODhjNDQwNjIyMiBsZWdhY3ktdHJ1bmsKKzI2NzA5IGFhMDg1NTRkMWE5YjQxYWI5YTIzMjQ3NmMwZDBjYjQ2NjY5YmJjOTcgbGVnYWN5LXRydW5rCisyNjcxMCAxYzljZTM0ZDUyOWRjMzhmMjk2MDdjNGRjYTY3NTkzMGRhNDg5NTgyIHJlbGVhc2UyMi1tYWludAorMjY3MTEgYjQ5MWFiNzg3N2QyZDJhMjVhOTc5MzRiYmIwZjI5MDIwMjQ4NjljOCBsZWdhY3ktdHJ1bmsKKzI2NzEyIDIzOGRmZWM5Yzg5OWU4ZTMzZGM0NzgxMGI1N2M5MTU3OWZjZGEzN2EgcmVsZWFzZTIyLW1haW50CisyNjcxMyA5ODFjNmI2ZmYyZjE3MjAxOWE5ZDQwMDliZWIzYmFjMjlhMjA4ZjNkIHJlbGVhc2UyMS1tYWludAorMjY3MTQgOWM5ZTA3MzU5ZDZlNjQwNDdhOWNmYWVlZTc3NmIyNWNkMDE4MjYyNSByZWxlYXNlMjEtbWFpbnQKKzI2NzE1IGQ0NjZiYzE5ZjczMTJhZTU3NzBiZWExNDIyNWE4NGFlOThmNDJjMGEgbGVnYWN5LXRydW5rCisyNjcxNiA2N2JjYjRmNTIzN2YyNDUyNjA3OWNlNWVmMzIwYWMwZGJmNjI1ZWUzIHJlbGVhc2UyMi1tYWludAorMjY3MTcgMGE0ZDZiMjQwYWIyNDg3N2JkZWU4NDFmMTdiZmNmZWVjYmM5YjYyZiBsZWdhY3ktdHJ1bmsKKzI2NzE4IDA2NmQ4Mjc1YWQ2NDNhYmViZjgzYmQxYWY4M2FjZTg0NGFkMDMyYmYgbGVnYWN5LXRydW5rCisyNjcxOSBmZDY5ZjNlZTc3ZWFjMWY2MmEyNjc0MjEzNDZkZDgzYjgyYmI3ZDYxIHJlbGVhc2UyMi1tYWludAorMjY3MjAgZWNmMDcwYzM0OTk5ZTY1NjM3YWM5YWQzODFlZmNjODA3ZmZiZjBlYyByZWxlYXNlMjItbWFpbnQKKzI2NzIxIDdiZjdjZjNhMzViOTA0NGNkYWMzMGQzZTI4ZGUwY2ZlY2E1YWRjNGQgbGVnYWN5LXRydW5rCisyNjcyMiBhZWU4ZjE2ZjI3NzQxZDE2ODIwODU0MTI4YWFjYzk1YzkwMDQzMTEzIGxlZ2FjeS10cnVuaworMjY3MjMgMThmOGE3YjU2Zjg5MDAyM2ViMGVhZTA5NmJhNjVhOTZkNjhjZTcyNyBsZWdhY3ktdHJ1bmsKKzI2NzI0IDM2ODQwYTk4OTcyMmQ3ZTg0NDNlODZlODlhMmRlMWM4YTJmZDg5ZGIgbGVnYWN5LXRydW5rCisyNjcyNSBiZWMxNTdkYmVlMmUwOGE2YjI1NjYzZGI5OTQ0ZDRjMmEyYzI3Y2U4IGxlZ2FjeS10cnVuaworMjY3MjYgM2VmZDM0ZmU2NjY4MDY0YWE0M2YzYTExOWRiZTdkZGZhZjMxOGZmZCBsZWdhY3ktdHJ1bmsKKzI2NzI3IDNiMzIzZGY5NDViYjZiZjE5Y2ZhZTM2NWJkZDlkZjllNjRkNjM2Y2UgbGVnYWN5LXRydW5rCisyNjcyOCBiMjdmMzZjZjNkM2UwMjNkY2VhYTZlNzcwYWE3Nzg5YzgyZDBjZTdlIGxlZ2FjeS10cnVuaworMjY3MjkgZDNkODU3YTg4MmYwZjgzOWI3NzFiNWM3Y2NkYjBjZjdhZmJiOWM3OSBsZWdhY3ktdHJ1bmsKKzI2NzMwIDdlZDQ5YWYwNDhiYTA5M2U0NzM4NGU3NDY0Zjc2NGY4Y2JjMjk4MGMgbGVnYWN5LXRydW5rCisyNjczMSAxMDViZTkzNmI1YzM2ZDYzNzhlNzE3YTUzMjgwNmNkY2Q4NzFmODllIGxlZ2FjeS10cnVuaworMjY3MzIgYWQ5N2ZjZTlkY2ZlMjVlYzY4YTY0NjNmMGIwZjExNDUyNWIxNGZmZSBsZWdhY3ktdHJ1bmsKKzI2NzMzIGM1Njg4OGQxNzA5ODRlMTMyZjNmZWM4OGJkZjgxODQ5MmJhNzIxYzQgcmVsZWFzZTIxLW1haW50CisyNjczNCA0YWY2NjlmOWM0MmUwODJiMWFlN2VmNTk5YWQyY2Q2NTQzNDJhODIyIGxlZ2FjeS10cnVuaworMjY3MzUgNjc1MWU4YmNmZDI5M2ZjYWIwNzY0MGQzZmUyNDY5MDBhNTNkNzJiNCByZWxlYXNlMjItbWFpbnQKKzI2NzM2IDNiODI1Njc1ZDExOTQ0NzI0YWZhYjg3ZDRiYWIxM2I0MmI2M2Y4MjcgcmVsZWFzZTIyLW1haW50CisyNjczNyBjYmJlMjg5ZTdjMmU5Mjg1ZjM4Y2U0ZmE3MGFjM2ViZDY3MWRiMDg0IGxlZ2FjeS10cnVuaworMjY3MzggMmY3ZDg2OWRhZDRkZjdiYmRmNjcxMTkxZmU2ZGVlYWMwMWFkOTBmZSBsZWdhY3ktdHJ1bmsKKzI2NzM5IDRkNmJlYWI3NjZlMjc0ZDlmOWZlMzIxNjlkYmQyZDEzNTMwMDQ0NTcgbGVnYWN5LXRydW5rCisyNjc0MCBlNWRmMDg2ZWQ0NTUxODUwZWFiOWE5Njk1MjY2OTA3ODRmNjg4MzI1IGxlZ2FjeS10cnVuaworMjY3NDEgOWJlMDFiN2I2YzgwYWJkYzlkMzFkYzAwNjk0M2UyZThmZDM2ZjRiOCBsZWdhY3ktdHJ1bmsKKzI2NzQyIDgyYTg1MGRiN2VjNTc3ZTgyNzAwODA3YTg1N2Y1Y2RlNWM5ZWQwYWMgbGVnYWN5LXRydW5rCisyNjc0MyAxMzAzZGMwNzIzZmNjMTIzYzljZjA1ODY5NDYxZmI3YTU0YWU0ZTc4IGxlZ2FjeS10cnVuaworMjY3NDQgY2E5MDdmMjhlMmQ1NTgyYWNlMTYyY2M3NTg0Mjc1ZmFmNGVjNTUxNyBsZWdhY3ktdHJ1bmsKKzI2NzQ1IDA3MTlhMzc3YTYxNmMxMzlmYmQwZDg3ZjRjMzBjODFhODViZjJiMTYgcmVsZWFzZTIyLW1haW50CisyNjc0NiA0MjI3ODQ3MDkzODBhYTRlYTdmYjRkMzY0YjZmMGI0NWExYzllZTEzIHJlbGVhc2UyMS1tYWludAorMjY3NDcgZjhmZjlmYWI5MmNlZTQ1NGZjOTMxYmFhOWMxNjY3MjEwZWQwYjFmMSBsZWdhY3ktdHJ1bmsKKzI2NzQ4IGE5Yzk4MTgzZmY4N2ZlNjY1OGRkN2Q5ZGMzZDAzNmU5MmM2MTdiMjUgbGVnYWN5LXRydW5rCisyNjc0OSA2YTdiMjZiZGUwZThiOWM4NjFkNGRkY2E0NGNjOTZiNTg0OTIxZmJjIHJlbGVhc2UyMi1tYWludAorMjY3NTAgYzc4YjUyZGFjOTYzMGMwNDNjNmFlZTMzY2UxYmI4YjZhNDdhNDZkNCBsZWdhY3ktdHJ1bmsKKzI2NzUxIDQwZmUxODNhODkyMjAyZDVjNjQ3N2Q0ZWNjMmE5ZTg5NjE2Yjk0ZjYgbGVnYWN5LXRydW5rCisyNjc1MiBmYTczMjBjYjM3ZDk1ZWM0ZmY4NTkwMDc1MDc4YzBhMGZjOWIyZWZhIGxlZ2FjeS10cnVuaworMjY3NTMgMjMwMDczNDE0NTA0MGJjYTgxYWViYmQ4Y2I2ZDgwZTVlNDYzZjY2YyBsZWdhY3ktdHJ1bmsKKzI2NzU0IGRmZDk4ZTk1MjFiMzdlZjkwOWEwN2ViMzIxYzk2ZDRmNDU0NmNiMWEgbGVnYWN5LXRydW5rCisyNjc1NSA0NGZlY2MzMzg4OWQ4YzAwZGQxMWRmZjg4YjRiNGYyOWMxMDAwMmMwIGxlZ2FjeS10cnVuaworMjY3NTYgYmZlOTFlMWUzMWIyMDA2Mjc2OTNjM2YwZDI1OThkNDkxY2E0ODNiOSBsZWdhY3ktdHJ1bmsKKzI2NzU3IDM4ODQxYmVhMjRmZGRkZTk1M2NjYTg3NTBkNzNhOWEzNzJiZGMxZjIgbGVnYWN5LXRydW5rCisyNjc1OCAwZDg3NDAwOTRiZWNhMjZkNzBlZTY1ZGU0MjNjYTEzYTc0NzBhMTVlIGxlZ2FjeS10cnVuaworMjY3NTkgOTU2ZDAzOGIxZGQyNmY1NmMxNTdjNjQwMjczZGYzMDc3YzQzOWFmNiBsZWdhY3ktdHJ1bmsKKzI2NzYwIGE4NjhiYWViZTk1NjQ2NTZlMzU4YmRmYjI1ZDRkYTdjNjdiNWRlMDcgbGVnYWN5LXRydW5rCisyNjc2MSA5MzU0MmVmYWMwNjY2OWJhYWE4NGE3OTA1M2IyOGQzMTdkNDI0MGEzIGxlZ2FjeS10cnVuaworMjY3NjIgNGU3ODE1Yzk1ZDNlYWE5NGQzMDMxZTRiNTk2ZDFkMzNmYTE5ZDU0MSBsZWdhY3ktdHJ1bmsKKzI2NzYzIGI5NzI2YmE3MWFhM2Y1ZTdiMmM3NWI3NDJhZGJiZWFmMzBlZmQwNTEgbGVnYWN5LXRydW5rCisyNjc2NCBjNWMyYjI0ZGI4YTcxMTk1MDg5OWFmMzRkMGM2MTIzMWUyNDU4MmUxIGxlZ2FjeS10cnVuaworMjY3NjUgYjJhYTI2NDhkZjI3YjBhZTZkNjlmYTA2YWRiODU4MTcyMjUwZWZmNSBsZWdhY3ktdHJ1bmsKKzI2NzY2IDk3N2U1MzRmYzZjNzc0MjIwY2QyNThiYmVkNmZhM2UwZjNjYmRjMWMgbGVnYWN5LXRydW5rCisyNjc2NyBlMGVkNjhhZGJhMzMyNzU2ZjQyM2EzMmU2MmRiOGMyNjE1MGZjMWUzIGxlZ2FjeS10cnVuaworMjY3NjggZWUyOTJhNTNlNWZjZTg5NGYwNWE1ZDBhNjRiYzE5Njc4ODIxNTUzMiByZWxlYXNlMjItbWFpbnQKKzI2NzY5IGM1YzRjMTEyMTA4Nzc5N2RlYTEwZjNiNDIxMjk5OTE2N2E3MDdlNTkgbGVnYWN5LXRydW5rCisyNjc3MCAxMGFlMmQ2MTFhZTk0MTdkNjhiYTJlMTgxYzA0ZTZmNDQ4ZWIyMWI3IGxlZ2FjeS10cnVuaworMjY3NzEgNDczMzg1ZmNhMjk5Mjg4M2ZiZTk0NjQ4NWUyOTMxYjEzMjYwODY1ZSBsZWdhY3ktdHJ1bmsKKzI2NzcyIDk0YmY2YWNlZmY3ODhiZWZhZGZiNTg0NDk4OTAxNjBlODJiZjBhODIgbGVnYWN5LXRydW5rCisyNjc3MyAyMzM5ZGRlNmJhYmVjZjhmMTI5MmU0ODRlN2RmMzAyMTVlN2MwZWVlIGxlZ2FjeS10cnVuaworMjY3NzQgNjBkODZiMmVhYjBmYWZhMjI4OTJlNDA4NDNjNWFlMGQ4ZDczNDRjNiBsZWdhY3ktdHJ1bmsKKzI2Nzc1IGU1ZWYxNjZmYzIyZjYyM2U4YzYwZmZjMTZlZTgxNThjMjQzNjMyYjggbGVnYWN5LXRydW5rCisyNjc3NiAyMTFiMTZhYzA2NmE3MDQ4MzQ3MjExMjg3NGI3OGM5N2M2ZWE1N2M5IGxlZ2FjeS10cnVuaworMjY3NzcgNThjYWM3MDYwMmFhNjk5MzU5MDk0NjliN2Q2YjdmOTRmNzg0YTE5YSByZWxlYXNlMjItbWFpbnQKKzI2Nzc4IDM5ZTVjMGQ2YzE4MjJhODBlN2JmOWM4OGI2ZWVhZGVlMDFlN2JjNjMgcmVsZWFzZTIxLW1haW50CisyNjc3OSA4MWQwNjcyMDViODZmMmI3ZDA1MWVlZWIzMDE1YTllZjVmYTdlOGZhIGxlZ2FjeS10cnVuaworMjY3ODAgNGY2N2U1NjY4NmU1OGQ5YWVkY2U2OThjMDg4MTk1YWExNzE3ZmM2NyBsZWdhY3ktdHJ1bmsKKzI2NzgxIDkwZWZhMWNhYjNiYzJjNzU2MWQ4ZDg3MWI5Yzc0YjY0ZGZiZjkyNTIgbGVnYWN5LXRydW5rCisyNjc4MiA2NDJhNDUzZTdhMmU5MjNlMDU5MDBlNjI1OTIxZTg3YzIwZjg3NDY3IGxlZ2FjeS10cnVuaworMjY3ODMgZjM4YmRiMmZjYWUwMmQwNTU3YzdlMmYwMWNlYjg5OTJhNDQ0MTc3NiByZWxlYXNlMjItbWFpbnQKKzI2Nzg0IGMzNzVjNWIyNjYzMTJlMTMwMzU5ODQ0MjI1OTk3OGRjMTRiZTYxOTYgbGVnYWN5LXRydW5rCisyNjc4NSA2Mzg5MGJjMjlhN2NiZjRmODk2NmIyMDgwMTYyOWJhYTdmODdhZTJhIGxlZ2FjeS10cnVuaworMjY3ODYgNjI0MDNiOTNmNDcwYjIyZTA5ODI4YTI4OWY3ZjFjZWQwNGQ2YzFmZSBsZWdhY3ktdHJ1bmsKKzI2Nzg3IDExNTcyODFmMDBhMDJiMTM3N2Y4ZjdkMWViMTgxZDVhZGEyYmNjOTQgbGVnYWN5LXRydW5rCisyNjc4OCBhNGQ2NzViOGI1M2MwMjQwNzkzYmU5MjUyNDU4YjEwMzBhY2U5ZTQxIGxlZ2FjeS10cnVuaworMjY3ODkgOGViYTRjOTJkZjJiNGU0ZTU2MTdlNWRmNDkyOWQ2NWFlYmU2NzNiMiBsZWdhY3ktdHJ1bmsKKzI2NzkwIGUxMWU5NTBhY2MyMzUxNjEwNTFmYmZiODcxOTA3ZGE1MjVjY2QzMjAgcmVsZWFzZTIyLW1haW50CisyNjc5MSAxYmU2ZTc5YjFkNDYwNTA4Mzk2YTUzYjMxNzE0NzIxZmY0ZDAyMmZiIGxlZ2FjeS10cnVuaworMjY3OTIgYWI1MjMxMmY4MmM3OTE4ODY0MGJjMWE5MTg1MjM1NTVjNmYzMmYwOSByZWxlYXNlMjItbWFpbnQKKzI2NzkzIDU2MjQwYmNkYTg4YzkxZjBiMTMxYzlmYzYzNmQ1YzgwYjVjYzNkZjkgbGVnYWN5LXRydW5rCisyNjc5NCBmYjY0ZjIxMTc2YWZhZWFkZTM1NDk5ZDhmNDBhZTI2YmYwNGZkOTQxIGxlZ2FjeS10cnVuaworMjY3OTUgOTkzYzc3NTg3ZGNhMjM5MjMyY2Q3YjFmZmY2NzU1ODRjYzVmNDE0NiBsZWdhY3ktdHJ1bmsKKzI2Nzk2IDI1ZmQ0YThmOWUwOTIyNzRjZDNlMzIzZTliMTJhYWUxNzNhZjhjMjkgbGVnYWN5LXRydW5rCisyNjc5NyBmOWQ1ZTFmYjJhYTY5NzNjYWE0MmY3ZWVkYmI0OWZjZTQ0YTAwYmVkIGxlZ2FjeS10cnVuaworMjY3OTggODI0NjBmZGE0Zjc2NzEwYjYzYTIxMmNhZWE1MDhkZDZlNGJmMjQxOSByZWxlYXNlMjItbWFpbnQKKzI2Nzk5IDA4ZDZjOGI3ODBkOTY5OWQyOThkNjllOGNkYjRjYjViNmVjMzBkZjQgbGVnYWN5LXRydW5rCisyNjgwMCBkZTBhYzAzZTVlNzJkOGM4NTZmZmY4YWNmYzJlMGZlZDRjN2U4YjMzIGxlZ2FjeS10cnVuaworMjY4MDEgMjhmNzFjNGJkMTZiYjU5M2FkNTA0MTQxNTE2MWJmOGI4NTlhYzI0YyByZWxlYXNlMjItbWFpbnQKKzI2ODAyIDZiMmJhM2I3ZWQzMjZiZTRhYTQ4NzkzMGQ4MmVhZjRiMzRmYThiNDkgbGVnYWN5LXRydW5rCisyNjgwMyBiMTU4OTYwNTM5MzMzNGEzMDQwNzBhOWYxNjQyNzFhNmQ4OWQyMzBlIGxlZ2FjeS10cnVuaworMjY4MDQgMDNkZmU3ZDM0M2RiYWMzZjgwYjU4YTk0MTZkYzI5Y2JmODVlZjFiNyByZWxlYXNlMjItbWFpbnQKKzI2ODA1IGYxMjE5MzA1OTIzOWRiMmE0OTQxODgyNWRhNmJkNmZjMWRjMjQwM2YgcmVsZWFzZTIyLW1haW50CisyNjgwNiBkM2YyNzViZDJjNjBhMWQwZjg2MTBkYTNiZDEwMDU4YjM1NjVjZDliIGxlZ2FjeS10cnVuaworMjY4MDcgMTlhOTQ5MjUzNzgxMmZhMjExODIwYzU2ODcxZGI1NDhmMDk4ZWJiZSBsZWdhY3ktdHJ1bmsKKzI2ODA4IDA4Y2NiMGYzZTJkNDk2YzdiZTc2YWIzYjNkMzE2MjZlZWFmNGRkYjIgbGVnYWN5LXRydW5rCisyNjgwOSA0NTNlNTlhNDcyYjIxYTI4ZjliMTQ3MGJjMzIwM2VlMzQ0MzVhNDdmIHJlbGVhc2UyMi1tYWludAorMjY4MTAgNzJmMGMxYTI0NWY4ZGY5NGYwZjE2N2EyZjM5ZDBiMjIzYTJkZjY2OCBsZWdhY3ktdHJ1bmsKKzI2ODExIDFjYzkzZDUwMWI0NWYwNmI4NGJiZWM3Y2ZiNDcwZWFiZGRhYjUxYWUgcmVsZWFzZTIyLW1haW50CisyNjgxMiAyNzNkZDI1MDhjNTdlMWI2NTdkNjZiOGYyYzQ3ODE2NWY5NTM3OTc0IGxlZ2FjeS10cnVuaworMjY4MTMgNmJhZTBjMzFiYmZiMjYxMDRmYTBmZjg4NGNhYmFkNzU3ZjhhMjRkNyBsZWdhY3ktdHJ1bmsKKzI2ODE0IDI0ZTIzMzRlN2JiMmY4YWZiNmYxODViZjdmMzFmODY5YTgxOGZlZTggbGVnYWN5LXRydW5rCisyNjgxNSAyNmI5MjRhZDI2NmNmYjU2YWY3YWE3N2ZiNDEyMTZjOWYzNTBiMjJhIGxlZ2FjeS10cnVuaworMjY4MTYgZjk4YTI3Y2I5MjgyMzk0MmU1MmM2NTQ5YWQ1MTIwMTk2NjRiODAwYiBEU19SUENfQlJBTkNICisyNjgxOCA2OGM3NzZiYTVlYTVhZDFjNWRmYmVkNWM0OWIxODE4YWM1MjA3Y2QyIGxlZ2FjeS10cnVuaworMjY4MTkgNjRlYjExOWI4MTZkNWFkNWY1MTgyYmU5NmI5MDA3ZGYwODkyZDA3ZiByZWxlYXNlMjItbWFpbnQKKzI2ODIwIGRkYjQxZTg3ZDY1MTRmNzYwZTI3ODZlM2Q5ZDY2YThlYzI1NWRjYWQgbGVnYWN5LXRydW5rCisyNjgyMSA4YTQ1YmZkNmI0NzE3YzFiNDI1YTVjOGE0NTgzODM1N2UyMzM5ZTlkIGxlZ2FjeS10cnVuaworMjY4MjIgN2U1MTQxYjY4YzVmMWQwNGRjMGI3NzQxMDdkZjdlOTlmYWRhYzJlZSBsZWdhY3ktdHJ1bmsKKzI2ODIzIGQ5YmI0ZWMzZTc1YjMyNzg4MmIwMDIwMzk3YzJiZTNmZjZlNWYxNzAgbGVnYWN5LXRydW5rCisyNjgyNCBlNDNhYWZmZmIwM2M2NzZmMWE2MWE5ZWE0OGRlZmI3NTk2ZWVmOWJhIHJlbGVhc2UyMi1tYWludAorMjY4MjUgNjEzNDhhYTJmZjk4NmQ1YmZkNmNmN2Q5OTg3N2M5ZWI5YmMzNmZkZiBsZWdhY3ktdHJ1bmsKKzI2ODI2IDgxODM4NTlkY2ZjZDIxNTE1NWNmZTgxMmQxMGNkOTUyZGQzZjMxYTEgcmVsZWFzZTIyLW1haW50CisyNjgyNyBiZTU0YmE0YjJjNDQwZThlYzk3MjMxMzZiYmRjYzk3YThhNTAzYjVkIGxlZ2FjeS10cnVuaworMjY4MjggYzI1NTZlMzBmY2I0ODJhZGQwZWEyMDFkYzRiMDdjYzkxOTUwNTExMCByZWxlYXNlMjItbWFpbnQKKzI2ODI5IGFiMjM0MTA3ZTI2NzMyN2M1MzE2OWJkZmU2OTJhYzczZTkyYjY2M2MgbGVnYWN5LXRydW5rCisyNjgzMCAzYWJmZjExZjgyYjM1Mzc1NjliODBkMmNhMTc1N2ZkZmE3MWE4MDI5IHJlbGVhc2UyMi1tYWludAorMjY4MzEgMTBjODIwMDgzYzJkYzE2NDRjODJkMGM4ODE0MzExNWQwMjYyZDhkZiByZWxlYXNlMjItbWFpbnQKKzI2ODMyIDEyYjQ2NTc1ODcyOWRhMjkwMDQ0YzdkOTRkYWUyZDY4MTZkZGUwNTkgbGVnYWN5LXRydW5rCisyNjgzMyBiZDFjNGI2NWRiNzkxMDRkNDVlZmM3ZmIxZmJmODI0NzkyMTZiYzZkIGxlZ2FjeS10cnVuaworMjY4MzQgYTIxOThmNzJkNWViZWEwMDdmM2RmNWYxZWY1YTdkM2UyNDhjNWYzMiBsZWdhY3ktdHJ1bmsKKzI2ODM1IGJlMGJjNTVlY2Y0YTBmNjE4ZmIwODViODNmNDcxNDQ3NDVjNmZmZmYgbGVnYWN5LXRydW5rCisyNjgzNiAwNzdkNDRiMDQwNWJlNmIyMGNjODUzM2VmY2M2NWMxMjE2YzY3MDFjIGxlZ2FjeS10cnVuaworMjY4MzcgMzQ0YWU1MzFlNmE3M2UyMjcxMTcxNzliZWEwNGFlMzNkNWEyYzliNCBsZWdhY3ktdHJ1bmsKKzI2ODM4IDdjZTAxODgzNzhlZjNhOGQ4Njc2MWE4YmYxNjUxNTBkNzk4OGU2OTAgbGVnYWN5LXRydW5rCisyNjgzOSA1MGE5N2E5NjI5OTg3YTAyY2I3MTM2OTk5ZjMyMDFjNjUzZWJhZjEyIGxlZ2FjeS10cnVuaworMjY4NDAgZDNlMDI1ZWYxZmIyZGY5OGMwODYxYTE5NzlkZDQwMDQ2YzIwZDdkYiBsZWdhY3ktdHJ1bmsKKzI2ODQxIGQzNWI5ZmZmODFlMDliMjVmZTM3YjVkNTllOTNlOWNjZDgzZTM2MjUgbGVnYWN5LXRydW5rCisyNjg0MiA3MzI0OWFiZWQ2ODM3NjBkYjIxOGI2ZDYyZGYyNmZhOGE1ODA5YzA1IGxlZ2FjeS10cnVuaworMjY4NDMgNWQ3M2EyYzdmYWU2M2ZlNjEzMjY2NmJhY2M2YzliNWJlMzNkOTFlNyBsZWdhY3ktdHJ1bmsKKzI2ODQ0IGQ5MTc4NTdmZDMzNGVhOWU4ZDUzOTkwNTRhNWE0MWJjYjcwMTJhZmMgbGVnYWN5LXRydW5rCisyNjg0NSA1YmQzMGEzNjg5N2IxZTQ3NjBkYzQ3OWQwZjExMWIxOTM4ODVlMmIyIGxlZ2FjeS10cnVuaworMjY4NDYgMTc1NjIxMDZjMmEwNDY2ODJkNzI2ODdiYWYzMjA1MjNiMzBjZGQ3YSBsZWdhY3ktdHJ1bmsKKzI2ODQ3IGNkZDVjNzUxODIzY2Q5Mjg4NWU1YTE3NmZhMTE1ZWY5MTQyNmZkYTkgbGVnYWN5LXRydW5rCisyNjg0OCBjNzZlNWMxYzZlNDU0NWI1NzQwYjQ0M2I2YzkxYWZmODU3MmRiYjk4IGxlZ2FjeS10cnVuaworMjY4NDkgYmI1NzkwYzZjZGFhMTQ3Mzc0NWViYWUyNjUxYWI5YzBjMDA5OTAyNyBsZWdhY3ktdHJ1bmsKKzI2ODUwIDliMWUzYjdiZDdmMTI0MjY5YmMzNjhiOTNjMjk2NDM3NzFlYWE4N2QgbGVnYWN5LXRydW5rCisyNjg1MSBiZTY1MzZmMmViZWZiMTYzMzIyNWJiYTY2YjM2MzAxMzdmYTE4NjMzIHJlbGVhc2UyMi1tYWludAorMjY4NTIgMjY3YWU1OWVkZGI0YzRiNWU1NmIxNTY4ZThjNWQ4YTRlZGYwZGVjOCBsZWdhY3ktdHJ1bmsKKzI2ODUzIDY4NGVkZDE2YmJkODFmYzQ4N2IyY2YzODA2YjQwZTJmNWE5MTYxYzYgbGVnYWN5LXRydW5rCisyNjg1NCA4NjczYzJlZGYyMWNiZTQwNGE1NzFjZGI0MzJlMDJhZjMwYTBmY2I0IGxlZ2FjeS10cnVuaworMjY4NTUgYmRhOThiYWM2OTU2MDFjMmJiZGM0N2UyNmUzNWIzOTQzYTY0YjlhNSByZWxlYXNlMjItbWFpbnQKKzI2ODU2IDBjNDJjZWU0NzVkZmYzNWQ2MmIxMTNjNGY0NWJmY2NhZTRhZmI0YzYgcmVsZWFzZTIxLW1haW50CisyNjg1NyA3NmYzNzZiZWE1ZTVhOWE5MTg4NTM2ZDExZDVjNzUxNmM4YzA5ZWU5IGxlZ2FjeS10cnVuaworMjY4NTggNjhlM2YzZGQ0ZDQ4ODQ5MTlkOTVkYzA4ZDQyOTJiZjEzYjU5OWJmMCBsZWdhY3ktdHJ1bmsKKzI2ODU5IGY0MzE4ODg1Y2U5YTYzMjg4YjEwMDllYTA5N2M5YzFmMGNkNjkyOGMgbGVnYWN5LXRydW5rCisyNjg2MCA5ODlhN2FkZjg0ZWZiMzU3YzUxNzVkY2NjMTg0NGRmZjRjZGIxNmI1IGxlZ2FjeS10cnVuaworMjY4NjEgODU2MTVlYTY1YjFiZjgwYWY5NjVjNjc4Njg3NDA2NGQ2ZTViODdmMyBsZWdhY3ktdHJ1bmsKKzI2ODYyIGRiYTRmNTE3NjQ5MmY0NTQxZTU2YjRjZDMwYTMxMjVlYzRiNzI4ZGQgbGVnYWN5LXRydW5rCisyNjg2MyBhZDkwNGRiNzM0NGE5Zjk0MWVhMGZmYTJhMzg1MWNmOWQ2OGJjOGY3IGxlZ2FjeS10cnVuaworMjY4NjQgNjI2ODhkNmFjMzg3OWMwY2Q3ZTVlNGMzM2IwNGVhMzYyZDRlNjcxYiBsZWdhY3ktdHJ1bmsKKzI2ODY1IGRjM2E3Zjk4ZDRlZDEyZjNlODYyYmI1MjJiYWEwMjRhYzExZTdjMjkgbGVnYWN5LXRydW5rCisyNjg2NiA2MzFmOTI4NjY3MzI5YmI2YzZkMjhhZGQxYWZmOWIzMDg2MTRjM2M1IGxlZ2FjeS10cnVuaworMjY4NjcgMTcyYjYyNTBkNTI2MDNiZjc3NThlMzM0YzI3ZGZiMmU2NzY4NWQ0NiBsZWdhY3ktdHJ1bmsKKzI2ODY4IDc2ZWY0Yjk0MmIxMzFiZDg4M2NlMWI1N2M2ZjZiMzAzYjc4M2RmZDkgbGVnYWN5LXRydW5rCisyNjg3MCA3YWI4YzM4MTE3MjM5NzE0ZWU2NWQ5NzI5ODJiY2JkNTI3MDNkOTk2IHJlbGVhc2UyMi1tYWludAorMjY4NzEgYzQ0YjIxZmNkMzhhZDMyZTY3ODUzNGI5YmFmNGY1ZTcyNTFkNjMzMSBsZWdhY3ktdHJ1bmsKKzI2ODcyIGIxZDg2ODM1MjFlYzRmMzc0ZmE5MmE3NzRhYzI5ZWFlODRjNWJlZTAgbGVnYWN5LXRydW5rCisyNjg3MyBmYmEwNTM0N2JiMzBhZDdhYTI2Y2E2YmVhYWI1YmIwYzliYjhmNTBhIGxlZ2FjeS10cnVuaworMjY4NzQgODIzMDljNzMyNWVmZTM2ODZjODFhMDg5NjZmYmQ4YmExNzE4NDU5MSBsZWdhY3ktdHJ1bmsKKzI2ODc1IDdiYzMxYWQ5NDc3Y2Y1ZjY1ZTAyNjY3NDQ2YThmOGU2M2UzNzBmN2QgbGVnYWN5LXRydW5rCisyNjg3NiAyNjc1YjE1OGJmNjc3ZGZkOTMwOWU5ZmI0MjZjNDJlZDViM2U5MjI3IGxlZ2FjeS10cnVuaworMjY4NzcgMzVmMDFiZjM0ZDYwNDM3NmU5MzQyNGVkZTdlODZiNTVlNzhhZjg5OSBsZWdhY3ktdHJ1bmsKKzI2ODc4IDllZWE1ZWRkODU3ZjZhZTRlM2MxMzliMDNjN2Q1NjVlNjdiMTAxNzggbGVnYWN5LXRydW5rCisyNjg3OSBiMzg5OGQzMjY1MTllZTIzOTA2NDZiODU2ODRlN2ZhNjczYjNmNjg5IGxlZ2FjeS10cnVuaworMjY4ODAgYmZlYTE0ZjhmZjM1M2M1ZmYyODAxNWNiMDFiYmM0ZTQ1YWMzNmI2NyBsZWdhY3ktdHJ1bmsKKzI2ODgxIDczYzAxYjFjYmRiMmMwMTYxZTMxZDNkMjRjNWMwNjkxYjRlOGMxMTUgbGVnYWN5LXRydW5rCisyNjg4MiBjMDNlODg5OWQ0YjE5MDQ0MmZkNzcxNzZhZjY5OGM5ZjE2NWFiZjFhIGxlZ2FjeS10cnVuaworMjY4ODMgMDAxNDM4N2ZkNjA0NGQxMTI1NDAzYmZlMjU3ZDA0MmQ5Y2FjMGM0OCBsZWdhY3ktdHJ1bmsKKzI2ODg0IGI4NzI4ZDU4ZTljMzMzZWIwZTg1Njg2MjBiZGViNDMwMzJiZGZkYzUgcmVsZWFzZTIyLW1haW50CisyNjg4NSBhOTBmYWE1Zjk0MTcxYzcwNzExNTNhNzEzOWZjMDNhNjY5YzRhYWI1IGxlZ2FjeS10cnVuaworMjY4ODYgMmFmZjEyZTJhOTRmNWM5ZGUzNTY5NzExN2FmYzEyZjExNzg0MGQwZiBsZWdhY3ktdHJ1bmsKKzI2ODg3IGI2MDJmMjI5MWI1ZmQzZmU0ODdlODViNzAwYWEwYmE1YjAyZTRmYmUgbGVnYWN5LXRydW5rCisyNjg4OCAwZTE3NzFmYzAxMmYyNmRkNzNjNDhhNGY1Zjc4M2YxZWQyYTIyYjY3IGxlZ2FjeS10cnVuaworMjY4ODkgYzc5YjFlNTU1MmU4NDk1OWFmMjRlYWM4OTEwNTFjYjc4YTRlODY1NSBsZWdhY3ktdHJ1bmsKKzI2ODkwIDk4ODI3YTlkNjJjMzJlYWM2Yjk2MThlYjgzNDhmZjM1NGY4NzNlN2YgbGVnYWN5LXRydW5rCisyNjg5MSBiMjFiNjk2NTg2NjI4OWIwZDMzOTEwZmMxNjQ4NTJmN2E0YmE3OTAzIGxlZ2FjeS10cnVuaworMjY4OTIgOGE0OWExM2ZiMjhkZjcwZTMzNDdiNzNiNzdlZTBjOGY1NGM5YWM1YSBsZWdhY3ktdHJ1bmsKKzI2ODkzIGNlY2EyODE2NzgwMDhhM2QxMzRkZDEzNWVmYjYwNWZjMmJiZDJiODcgcmVsZWFzZTIyLW1haW50CisyNjg5NCBlY2VmNjVlNTdjYzZiZDk5YjRmY2UwMmY5MWRhOGYwYjgyNzcxMDFhIGxlZ2FjeS10cnVuaworMjY4OTUgYTk4ZTkzZWFmZWY3ZTAzZWUwYzMzYTNmMGYzNTZiOTRlMmMyOWJjMyBsZWdhY3ktdHJ1bmsKKzI2ODk2IDI2MDBjZjdkMzNhZjgyM2NiNmI5NDNjMmY1NmNkZDVjY2NiMzllNWUgbGVnYWN5LXRydW5rCisyNjg5NyBhNGVmYjU5Zjg3NjcxODMyNTQwZDM2M2QzZGNkNjFmOGJiN2E1ODBlIGxlZ2FjeS10cnVuaworMjY4OTggNzBiNWUxMTFjY2IwOTAyZjcyMGI2MTllMGMxNzRlNzJkMjlhY2UzNyBsZWdhY3ktdHJ1bmsKKzI2ODk5IDhkOTQ2YzkzMzllODIxMDFlYmFiN2VhNzE4MzkyZWExYTNkMTZjOGEgbGVnYWN5LXRydW5rCisyNjkwMCAwYTRjOTI1NTlhMGI0MTY2NGYyMWFjMDRlNzJjNTExZGQzNDQyNTdjIGxlZ2FjeS10cnVuaworMjY5MDEgZmE4ZmUyZTk4MDYyNWFlNjhiYjVkM2Y0M2M0N2U5Y2YwNWEyNjY4ZiBsZWdhY3ktdHJ1bmsKKzI2OTAyIDllNjdhMGQ1NzA1ZmJhYjlmYjZhYWYzYWMyNjk2YmNmODcxNzI0MDMgbGVnYWN5LXRydW5rCisyNjkwMyBiNDkwZmYxNzA2ZDk2NDYyZjMyOWQ5MTRmMTE3M2EyNTkxYTRmZGFlIGxlZ2FjeS10cnVuaworMjY5MDQgYmQ1ODk0NmFhNTIxYjJlY2Y3ZWU0ZjU1ZDM5ODEyMmY3MWEzZTQ2NiBsZWdhY3ktdHJ1bmsKKzI2OTA1IGY2ZGVkNmVmYWJjZjMwOTAyNjBiM2VkOTIxNzBlNzJjMjM5MGNkNTQgbGVnYWN5LXRydW5rCisyNjkwNiAyMjBiOThmMDY0MTU2NGEwNTk3YjQ2ODRjM2I3YjJkMTEyNTA1Yjg5IGxlZ2FjeS10cnVuaworMjY5MDcgNDBhMDMxMTU1ODk3ZjliZWI3MmZmN2QwYThmM2UyNjkxY2ZiYzFlNSBsZWdhY3ktdHJ1bmsKKzI2OTA4IDFiZjM0ZjQzOTRjNTE3ZTQzNDQ2MDEzMjU4NzM0YTBiZjY0OTkwMDMgbGVnYWN5LXRydW5rCisyNjkwOSBjZTFkYTJmOTc4MDc2ZTRjNjliMjljNDE4NzFhOGRmYTExNWIzZmVjIHJlbGVhc2UyMi1tYWludAorMjY5MTAgODg5MDM4NTNmMTgwZWU2YmIyZTBjMWU4MDg3Y2JkMjg4YjAyNDI0ZiBsZWdhY3ktdHJ1bmsKKzI2OTExIGI3NGFmZGQwNzJlYjBhMTg5OWZjZDRmMTY2NWY4YTgyMGZhOGI5YTEgbGVnYWN5LXRydW5rCisyNjkxMiAzMDNkODFlMTVlNzBjM2EyNDI3YTcyYWU2ODJlZjA3Njk1YmMyOGY3IGxlZ2FjeS10cnVuaworMjY5MTMgNDQ2YjJmMmMwMWQ4YWFjYTMyNTdhYjNjMWMyYzEzODUzZjQ4YWY0YyBsZWdhY3ktdHJ1bmsKKzI2OTE0IGIzYzUwZjY5ZjM4YmYyMzhiZGQ1NjBmN2QxYWU1ODhlNThhM2QyNTAgbGVnYWN5LXRydW5rCisyNjkxNSBhNjcyNDhmZDIzNzAxMGY4MmE1NzM0ZjllN2YxODkxMTI1YjlkZmQwIGxlZ2FjeS10cnVuaworMjY5MTYgM2IyYTdlZTA4NjY3NjFkZDg0MDNkZTg3ZThkNTU0NmI4MjA1NzQ4YyBsZWdhY3ktdHJ1bmsKKzI2OTE3IDNhZWNkYmE0NTUyODVhMGU2ZGI0NzQ0ZmM0YjQ3YWEzYjg3ZGJiNzcgbGVnYWN5LXRydW5rCisyNjkxOCBlNTI0MmY1OGE1YjZmOTBkODZkY2RhNzMwMjQxMDE0ZDQzYzliYzExIGxlZ2FjeS10cnVuaworMjY5MTkgYzRmYTM3Zjg5NzgzOTkzMjFlNDg2NjJhOTk0NjBlM2I3N2E3NDM1ZiBsZWdhY3ktdHJ1bmsKKzI2OTIwIGZlY2NlMDE3MzI1NGY3ZWEyZGNlYTJhYTgzNzUwMjBmOTFmNzNkYzcgbGVnYWN5LXRydW5rCisyNjkyMSBhMzk5ZDhiMTNjMmY0NThiNDk1MTBhZDgwNTQ2ZjdlMmZhNTViNzBhIGxlZ2FjeS10cnVuaworMjY5MjIgNWQwOTU4OThkYWU2NTliZmQxYWZjN2RmYWJkNTQyOGQ0Mjk1OTliNSByZWxlYXNlMjItbWFpbnQKKzI2OTIzIDUzYzYxNDI4OGVhYjk0ZjZiMGVkZjhhNDU3MDg0YzRhZmE1NDE3MGEgcmVsZWFzZTIxLW1haW50CisyNjkyNCAzYTQ3OTM1NzVlY2Q3ZWY2OGNlZGFlZTI1N2UwOWViOTY2OTk5NjBjIGxlZ2FjeS10cnVuaworMjY5MjUgYzVlOGY4OWZkMzU4NjhkNTFmYzI2NWM0OWE1NDAxZTA0MWE2NmY2MCBsZWdhY3ktdHJ1bmsKKzI2OTI2IGVhY2E2MjdmMmE1NDZjZThlOGZjNTQyZTZmOWI3MjJlZGFjZGYzNDggbGVnYWN5LXRydW5rCisyNjkyNyA1MDg5NjVjZTVlNDcyZjk2ZDkyNmFjNzEyZTBiMjdhYmE0NThjZjFhIGxlZ2FjeS10cnVuaworMjY5MjggM2YyNDJjZGQwOTA0ZWUxMTVjNWY0NjVlNTBiY2ZjZmExMDFhOGMxYiBsZWdhY3ktdHJ1bmsKKzI2OTI5IDFhNjdmYmM3YTA2NjgyMzFiOThlNDkyOTlkNDRkYWIxYThkNzdkM2QgbGVnYWN5LXRydW5rCisyNjkzMCBjYWY2MmVlZjc3MjNlNGM4Nzg0NGZkN2E2MGE1ZDNkNDNiN2EzOGRjIGxlZ2FjeS10cnVuaworMjY5MzEgM2Q4M2ZhYmVmMGE0MGVlNWQxZjBkY2M0OWI3NmEzM2VjMTJlZGVmYSBsZWdhY3ktdHJ1bmsKKzI2OTMyIGFlMGEzYjE0ZDJlOGJlNzgwMTRmZWQ1M2M4ZGUyZGRiYmMwZjRlMzIgbGVnYWN5LXRydW5rCisyNjkzMyBkYzI2MjNlMDI0M2UyOGJmNzdmYWU5Y2VmNTA4MjViMmUxNjE2YzBmIHJlbGVhc2UyMi1tYWludAorMjY5MzQgYjZjMzJiZWI0ZGJjYzljODAyOTA5ZjM3Y2IyNWZhODQ4YTBmMjkwOSBsZWdhY3ktdHJ1bmsKKzI2OTM1IGQ1YWU2ZjcxNGNkNTFjYzdkMmFmOTcyNDYwZmNiZjAwYjFlYzBhNDAgbGVnYWN5LXRydW5rCisyNjkzNiA0ZDg4NGFkODBkZGE1NTRlOTllODc4ODUxMDJjMzQ0ZTEyY2RjNWViIGxlZ2FjeS10cnVuaworMjY5MzcgMGFjNjUzZjQ2OWYwNzBkNDRiYTVhYmI5YmI2NTY2NTQwZmE3MDJhNSByZWxlYXNlMjItbWFpbnQKKzI2OTM4IDY2OGM1Y2E0ZTBkNDhjNjE3MmE1Y2FjMTJhNjkyMWQxNmExNDEzNWQgcmVsZWFzZTIyLW1haW50CisyNjkzOSA5OWRmMjU3MTQyZjY0MzhkYTdlMWM1MTI0YTFlMjM1ZTliMjljZDcwIHJlbGVhc2UyMi1tYWludAorMjY5NDAgN2Q0YzVlNGEwY2NjMjZmOTk4NTBhZTYzY2MyNDc3ZjdhODJhNDMxYyByZWxlYXNlMjItbWFpbnQKKzI2OTQxIDhmN2I3OWNkYTBkMzIxZDdlODNlYWQ2MzUxNjBjZjdmYjBjMzY2YjAgcmVsZWFzZTIyLW1haW50CisyNjk0MiBjMzY3NjA3YmI1ZjdkMjA0ODk4NjViMGE0ODBlMWQ2ZTEyZTQ5YjdiIGxlZ2FjeS10cnVuaworMjY5NDMgNGUzZWE1NWY3ZTExOGNhNmUyN2I4ZTg1YTdkZTIyMzc4MDhhNGIyNyBsZWdhY3ktdHJ1bmsKKzI2OTQ0IDdkYmE4MGQ1OGZmZDY2NDQzNjg5MDljNmYzODY2YzhjMDM4ZGI1YmYgbGVnYWN5LXRydW5rCisyNjk0NSBiZWI1MjcxNThjYmNkZTcyYzE5ODU3ZjQzODA3MmQzMzUxNzMyMDY4IGxlZ2FjeS10cnVuaworMjY5NDYgMTkwYjZiYzE5MTJhNWQ1ZDYyZDc5YmM5OGU1YTYyZjE3NjYwMGE4ZCBsZWdhY3ktdHJ1bmsKKzI2OTQ3IDA2MDJjN2U2Yjk0ZDcyMTNhNGVkMjc3NmFlMGNjOTA2MmMxYTJhMTYgbGVnYWN5LXRydW5rCisyNjk0OCBjNmFmNTc0YmRhMjkyOGYxY2RkMThmMzYzZDkzYzk4N2RmNTMwMGI0IGxlZ2FjeS10cnVuaworMjY5NDkgMGU4MzcwZTcwODg4NjNjZDNkMTU1YTAyNzY3YTZlOGRkMzY1MTJhNSBsZWdhY3ktdHJ1bmsKKzI2OTUwIGZiYTU3ZTQwZjU0N2QwYmQ2Mzk4MWRlYWY1MTkwNDkyYWQ5NGFmM2YgbGVnYWN5LXRydW5rCisyNjk1MSBmMTI0OTExNzE2Mzg2MDM4MjFiOGI4MjZiYzUzYzAxZjMzOGViYWM1IGxlZ2FjeS10cnVuaworMjY5NTIgYWI5NGVjNGFmOThhOTM0ZjZkOWM3ZmU2NGIwMThlMzA4MzUwMTM3ZCBsZWdhY3ktdHJ1bmsKKzI2OTUzIGIwNjU4ZmVlZjkzOWUxNmMyNGExNjViMjI2NjAzNmVlNjFhZGY4ZjggbGVnYWN5LXRydW5rCisyNjk1NCBhNGJiMTgyMTJiNDgwZWI5M2QxYmI3NThhODNkNTJkYjUyOTAzODQyIGxlZ2FjeS10cnVuaworMjY5NTUgYWNiZThlN2Y5OWQ5M2I3ZmYzNGRjMmRmYmU4MjA2NjU0ZmUxYWFhZSBsZWdhY3ktdHJ1bmsKKzI2OTU2IGQ2N2YxZTNhOWYxYWJmNThmMmIzYWUyZGQzM2IzYmEyZThlYzFjMzQgbGVnYWN5LXRydW5rCisyNjk1NyBjODQ0ZmNjM2M5NTIzZmZhN2M3YjM2ODMxNmQwYTFiYjgzYmZkMGZiIGxlZ2FjeS10cnVuaworMjY5NTggYzNhNjdjZTU4MjQ1ZjQyNTRhMDk0Yzg3ZjVmNzQ1OGYyNDczZmMyNCBsZWdhY3ktdHJ1bmsKKzI2OTU5IDQzODBhN2FhMThkYzZjZGVjOGQ4ODk0NThjNWYzZWI5OTdkMWFjYmQgbGVnYWN5LXRydW5rCisyNjk2MCBjMmJjMmVkMTQ1ZjcyN2M1YzFiNDM2YjA5NDQxY2YzZDdmZDg1MjBjIHJlbGVhc2UyMi1tYWludAorMjY5NjEgZWQwMDdlNDdiM2ExMzk5ODkwYjIyYWIxYWYwZTc0ZjI5NzMyYWM1MyBsZWdhY3ktdHJ1bmsKKzI2OTYyIDJiMWQ2MTc4MWQ2Mzc0ODk3MTMyN2I2ZGUwOTFkOWVlMmE2OGQ5ZjAgbGVnYWN5LXRydW5rCisyNjk2MyAxOTdmYjMwNWZjNWNjY2ZjODIzNDJjZDQ3MjEwMzAzYjI5YmMwYzcwIGxlZ2FjeS10cnVuaworMjY5NjQgOTBlZTU1YjlkNzJhZDFjMzdjNzkwYzI5YjAxNWYyYTUwYTZjODM1NyBsZWdhY3ktdHJ1bmsKKzI2OTY1IDdlNDAwNTgzNzU1ZmY0ODA2Y2RkY2UwZDQ1YzMyZjhiZWE3ODM0YjQgbGVnYWN5LXRydW5rCisyNjk2NiBkYmFiYjFmN2VkM2E0NGNiNzhkYjdkNWFhODg3NWE2N2QyODM2OTBkIGxlZ2FjeS10cnVuaworMjY5NjcgY2ZmZDA5MWY1NmQwZWYwNWFhYWFmOGU1ZjdkZGQ1ZWExOTUwMjJiNCBsZWdhY3ktdHJ1bmsKKzI2OTY4IGVmOGQ0NTYwNjdmZDI4Yzc2Mjg1YTI3OWI1MTE3MjYxMTM3NDU1ZDkgcmVsZWFzZTIyLW1haW50CisyNjk2OSA3MTIwNjIwZjQzMmJkMDkwYTYxZWY4MDhhYTAxZGQwYjUyMzY2MGU4IHJlbGVhc2UyMS1tYWludAorMjY5NzAgNWVkZWE3NTJhNDIxOWRjMmFkOTU4ZDZiZThkZGI4NWQwMDUzM2E2NiBsZWdhY3ktdHJ1bmsKKzI2OTcxIGE2OGZhYTI2ODUzY2U3MzlhZWVhMWMwMDc4MDY1MzUzYzYxZjdmZTUgbGVnYWN5LXRydW5rCisyNjk3MiBlYzI3YWMxOWY5ZTNjMWM5ZjA5ODNjMGI1NGYxNzhiYjI3MTE5ODQyIGxlZ2FjeS10cnVuaworMjY5NzMgNDU2ZDU4NDUxZmVlYTc0N2NlMTFlODdiMTkwODVjY2UyMWYzNjg4YSBsZWdhY3ktdHJ1bmsKKzI2OTc0IDBhMjgxOGNjMzQyY2U0ZDQyMTZjZjY5MWU2Mzc0MjJhN2ZkNWVmMGMgbGVnYWN5LXRydW5rCisyNjk3NSAyMWIxZDc0MmU0YTcwMDljZGEwNjUxZGQ2ZjhmYTZhNmEzMjA0MWZhIGxlZ2FjeS10cnVuaworMjY5NzYgM2NhZWUyOTU4Mzg3Y2Q5MmYzZGU0NjBiM2IyZGY5YTYxY2FkZjE1YSBsZWdhY3ktdHJ1bmsKKzI2OTc3IDRhMWY1YmQ0ODZmZjlmODBlYmJlZmIxMTcxZDE1YWY4YzEzNDQyZTggbGVnYWN5LXRydW5rCisyNjk3OCBmNGVhYjI2OGU2MTdlOTA0OTI2MWZiNDhkZTEzMWJmNmI2MzkxYjE3IGxlZ2FjeS10cnVuaworMjY5NzkgYTY3MTVhZDQxNmU1ZGEyZWVmMGQwZmFiM2UxOGE4MjlmN2E2MmUwOSBsZWdhY3ktdHJ1bmsKKzI2OTgwIDlkYTg1ODM3ZmYyNTA4NGIzZTM4OGEyM2Q3MDhmNmJlMDQxNGM3MzMgbGVnYWN5LXRydW5rCisyNjk4MSAzZTNiM2MxNzcwYWMxMWI1OWZjY2Q1OTMxNzFlNmI5MDA1MWY2MWEzIGxlZ2FjeS10cnVuaworMjY5ODIgNTQ0ODNiYzIxODcxZWY4NWJjN2EzMmM4ZDMzZDc2MWZiOWQ5NzQ2YSBsZWdhY3ktdHJ1bmsKKzI2OTgzIDkyNjI2ZTVhYjA2NzM1NGRkMWI5ZGIxMmE3M2RlOWUxZTg2Y2FlZmYgbGVnYWN5LXRydW5rCisyNjk4NCBhMWRlMGJhYjU0NzUwOTNmOTA1YTIyNWY2YTI2MzMwMDQ1Y2MxYmZjIGxlZ2FjeS10cnVuaworMjY5ODUgODdmNDAzNzdjZjU0MzhiNTEwNjE5ZGJjNzgzZDQ5MTgxMWUzMzIyZSBsZWdhY3ktdHJ1bmsKKzI2OTg2IDVlZGQ4MDcyNmQ5NjZmZGEyZTkwZGQ1YmZlNGIyN2M0YjNiMmU1YTUgbGVnYWN5LXRydW5rCisyNjk4NyBjMDBmZWJiZTA5Mjk1ZTMwMGQxODE2NzY2NTA1NzgyMzUwZGNkY2QxIHJlbGVhc2UyMi1tYWludAorMjY5ODggYWVkMzljYWY5ODYwZGQ2MDhiYjJjODRmODFlMzU3N2NmYjU1MjJmOSByZWxlYXNlMjEtbWFpbnQKKzI2OTg5IDY1Y2Y0Nzg5NTBmZjVjM2E4ODFhNWViZGRhODc1MzM5NmFiZTU3ZWEgbGVnYWN5LXRydW5rCisyNjk5MCA2M2QxNDE0MWRkMTBkMDI1NWNjZmI2YzBjNGM3Nzc2YTIzY2FlODNkIGxlZ2FjeS10cnVuaworMjY5OTEgYTZhNzY1YzdkMzNiNGQ3MWE3NjNiOTZhMGQ2ZmFmZDMxZWIwNmE4NiBsZWdhY3ktdHJ1bmsKKzI2OTkyIGVhOTc5YzUyMDZiN2U2Yjg3NTVkOTA3MTQxZDM3OTQzNGE3YmViNjQgbGVnYWN5LXRydW5rCisyNjk5MyA0YTRkMTIwYjJiMGUwOWE4ZjU2YjA1MzJjODgzMjU3YjU5ZDViY2ZmIHJlbGVhc2UyMi1tYWludAorMjY5OTQgYWZlOTQ2OTE4MjY3YTFjNTA2M2QxMjE2NzMxMDBmNTJlZGY2MzY4NCBsZWdhY3ktdHJ1bmsKKzI2OTk1IDFhNTIxNjIzNTYwMjhkNGYzZjRiYzc5ZWZjOTA0ZjQyZTg5Zjg1OTIgbGVnYWN5LXRydW5rCisyNjk5NiAxMTY2MDEzZmFiNzc5NTM2ZjY1NTMzYTZhNDE4OTE1MGVmMzE1ODRlIGxlZ2FjeS10cnVuaworMjY5OTcgMGVlOGVmN2NhMDljNjMyZTM3MjJhNGRhNmZlNmQwOWYyYTE1YmViYSByZWxlYXNlMjItbWFpbnQKKzI2OTk4IGRiZWUyZjYyOGE5MDY3MjJmYzQzMGUwZTM0MmM4Mjk1YzhhMWFkMGUgbGVnYWN5LXRydW5rCisyNjk5OSAxZTYwYjVkNDE0MTdiMTM4NGEwOTc4ZTQ4YmViN2UzN2Y1MjUwZGEyIGxlZ2FjeS10cnVuaworMjcwMDAgODU1MWU2NDI3MjdjMjM1ZTE1NzMyOWMzYjlkY2VkNjcyMzdiZWRmOCBsZWdhY3ktdHJ1bmsKKzI3MDAxIDBiN2ZlMGZhOWRjNmIxYzNhOWU4MmZkNDAxMWNkNGExMDc1ZDMyNzQgbGVnYWN5LXRydW5rCisyNzAwMiA4YzIxNWRkZmQzZDFhMTg1Y2ZjYjVmYmRiMWIxOWM3NjNiMjE4NDhhIGxlZ2FjeS10cnVuaworMjcwMDMgOTQwZmVmMzI0ZWJjYjVmOGMzMTM0NjFlN2MzODE1MDNmMjEyZDFlZSBsZWdhY3ktdHJ1bmsKKzI3MDA0IGEyNTA4MGY2OTAxZmU2YzhlOTMzYjZjNDM4ZDhjMGYwYmNlMzJiNWEgbGVnYWN5LXRydW5rCisyNzAwNSAwNGE0YTBlNzFhOGRjZjcwMWM4ODc0ZjA5MzU1OGNiMjhlOTU2MDMwIGxlZ2FjeS10cnVuaworMjcwMDYgYzY0NjNhZmQ5ZjA4NjBiODQzYmFlZjAxZTIwYzk1M2JiODJhZWFmZSBsZWdhY3ktdHJ1bmsKKzI3MDA3IDcwZDc2ODMzNTUwYjBkOTM1OTU4OTQ1ODA4ZmQ5NjRhNmQyNDVkZmIgbGVnYWN5LXRydW5rCisyNzAwOSAzZWJkMzc2YWE0Y2I2Yjc5NzUyNTFhOTFmMDlkYTM3YjM1ZmQzM2I0IGxlZ2FjeS10cnVuaworMjcwMTAgZTFlOTBiMGYxZjQ1MDBiYjU1Y2JlMzAyOTg4NjAzYzFjZWJjODYzOCBsZWdhY3ktdHJ1bmsKKzI3MDExIDIyMGVkN2ZlYmIwMDE5Y2E2ZmE2NzZlZmY5ZmNmYTU3NDJiZWU3N2IgbGVnYWN5LXRydW5rCisyNzAxMiBlYzg5NDllNGU0NmQ3ODI0NjI1ZDA2ZmVlYjJmMzBiZTNjYWNlYjk4IGxlZ2FjeS10cnVuaworMjcwMTMgYjk0YWNjMTg3NDBlN2U2ODYyZWE3NGYyM2NmN2VlOWVjYTNmNDc3MSBsZWdhY3ktdHJ1bmsKKzI3MDE0IGI5MjE4ZWZhZThmNTVjOGZiYmFhZTI2MjBmOTg2YzllNTI2OWY2ZTAgbGVnYWN5LXRydW5rCisyNzAxNSBhMzQ1MjMxMjFjZjQ0MTRlOTFjMWNkYWM1ZTQzZjdlZmE2NDhkNTI3IHJlbGVhc2UyMi1tYWludAorMjcwMTYgZjBjYTM5MzVkMDExZGRhNzJmMzhkZTA0YTE0OGYwYzYxZTI1ZDlkOCBsZWdhY3ktdHJ1bmsKKzI3MDE3IGI0MDE2NWE0ZWZlOWFkMmJkYjM2YmIzNmQxMGVjZmQyODViY2NhZjkgbGVnYWN5LXRydW5rCisyNzAxOCBlYjZhMTY1MWNjZGEwMzcyZjY3YzJlZDljYTNhNjA5MzM3YmE1YzM4IGxlZ2FjeS10cnVuaworMjcwMTkgYjg2ZWFlYjBkN2RkNDJhNzdlOWNlYjU2ZmYzYTM2NmZlNWM5ZjNiZCBsZWdhY3ktdHJ1bmsKKzI3MDIwIGVlNzcyZjZlODgxYmIyMzQyMGEzNzdjNmI5MWIxYTZlYWRkMTE0NjkgbGVnYWN5LXRydW5rCisyNzAyMSBiZmRiZTI1YTQ1YjA2ODY4ZjE3N2UwOGU4ZDdlZGM4NDZmMzY3ZDc0IGxlZ2FjeS10cnVuaworMjcwMjIgNWY5NzgxOTZmZDNkMDJmZjE3ZGI4ZDc2MWFmMmY3MDZiOWNjOTVkMiBsZWdhY3ktdHJ1bmsKKzI3MDIzIDk0YWE0ZWI5YmI3ZDk0MmQwNWY0MjJiYzBjYmFhNGE1YzEyZDI3NzAgbGVnYWN5LXRydW5rCisyNzAyNCA1YzVmZmY1ZGUyNTBkNzNiNzBlZjNlMmY1ZWJjMDEwYjJkMjJkMTgwIGxlZ2FjeS10cnVuaworMjcwMjUgMThkNThkZTIwM2Q2ZThkZTMwZGYzY2IzODFiMmFkZGIyNDY0YTM3NyBsZWdhY3ktdHJ1bmsKKzI3MDI2IGI1YzNmMTBjZTYzOTc5ZDY3NjdmMjhhYjIxMmYyMDNkYzRkNDQwMzkgcmVsZWFzZTIyLW1haW50CisyNzAyNyAyN2UyMTIwY2I0NzYzMTNmOTI3YjdmYWY5NGQyNmFkYWE4MTgxYzhiIGxlZ2FjeS10cnVuaworMjcwMjggZTQxOTA2NmY0MDhmMmQ0MmU3YTcwNTcwMmQwMzRhMTZjNTYzNDYzNyBsZWdhY3ktdHJ1bmsKKzI3MDI5IDgxMGRjZjlkODFjOThkY2NmYzZjMTE3ZTBjYjYxZjgwYjAxMGYwODkgbGVnYWN5LXRydW5rCisyNzAzMCA2ZGNkNGI2ZWU1ZGE5ZTk0ZDk1OGM5NzBjODU4MjhlN2M3OGFiYWEzIGxlZ2FjeS10cnVuaworMjcwMzEgMmJlY2I1NzkzYWNkMWM5ODZmZDFmNDI4YjdkMzlhZDhjNDg0ZDZiOCBsZWdhY3ktdHJ1bmsKKzI3MDMyIGRjN2Q1YzJkNTg0NWE5YzE2ZDg3YzI1MWUxYTI0MDUyMDVmZmY3ODggbGVnYWN5LXRydW5rCisyNzAzMyBjYTg3MTE5MjU1ZWIxNzdmZTdkNmU0ZGU1ZGI1YTJkMDZjYjMyMDI4IGxlZ2FjeS10cnVuaworMjcwMzQgZTMyMTUyYWZkZTRhYmNjYTg5MjZkN2EzN2ZjNzU4NGE2NzhlYzY5ZSBsZWdhY3ktdHJ1bmsKKzI3MDM1IGMzZGJhOTFhZmE2ZDE0MmUzOWY5YWRmZTNiYWE4M2IyZjFhZjdkOTkgbGVnYWN5LXRydW5rCisyNzAzNiA4ZWZhNTJlMGE4NDQ4NTkzOWEyNGE1NDA5Njc4ZGE5OTEwZjA5NTZiIGxlZ2FjeS10cnVuaworMjcwMzcgZWRjNDIzOTQwY2Q2NjM5ZTQ0YzFmMWI1YThkYzZkYTUxZmE1MzEyYSBsZWdhY3ktdHJ1bmsKKzI3MDM4IGI5MmY4MTkzODg0M2Y5YjZmOTdjZjc1MGRhNTU5YWY2ZTBhM2JjMGMgbGVnYWN5LXRydW5rCisyNzAzOSAyZmNjNmQ0ZTRjZDI2MWYyNjU4NjRhNmI2ZDkxMmY2YWFlZGVkODBlIGxlZ2FjeS10cnVuaworMjcwNDAgZjM1ZTc1MWY1ZmYyNTg0NjYxMzRjNTljMDM1ZTFhNmIzOTBlMGQwOCBsZWdhY3ktdHJ1bmsKKzI3MDQxIDNhMWFjMTFlYmU1MGMzZTIwNmYxNThjZDZkNzZmZjU0MGMxMjg0ZWQgbGVnYWN5LXRydW5rCisyNzA0MiA3MzJiNjkzMTgxNjhjMmM4MTE5MzQwZTM3ZmY1MDcyNGQ1YzEzZjhiIGxlZ2FjeS10cnVuaworMjcwNDMgNWM1OTAyZGU1YTU0MjE0ZjJiZTUwNWQwOTFlYjdmYjA2MTcwMDI5OCBsZWdhY3ktdHJ1bmsKKzI3MDQ0IGIxODM0OGJkY2EwODNlMzNlNWY2M2MzMTA5M2U5Y2E0NWY4OTZlMWYgbGVnYWN5LXRydW5rCisyNzA0NSBmMTU5ZWE5NTVlODBlYTJiZTRhMzJmZWI0MGE3YjUxZjFmZDE2YTQ2IGxlZ2FjeS10cnVuaworMjcwNDYgZTNhODQwZmE1ODRjYjhiZTljNjdjYWYyYjQ5OTk0MjkyMjkwNDcyNyBsZWdhY3ktdHJ1bmsKKzI3MDQ3IGQ1MDdhZDg2MjM0MjMyMzc2Njc5ZDJlNmNiZjg3YWE5ZTAwYjNmMTggbGVnYWN5LXRydW5rCisyNzA0OCA2MTM1OGY4MDBiNjE2OTAyNzlhZDE0Zjg0ZTUxZWRmNGM4MGJiOTZjIGxlZ2FjeS10cnVuaworMjcwNDkgMzI1YmJiNDkzN2M1ZGM5ZjNmNDcyYTUwOTcyNTA1ODNjMGMzOTRkZiBsZWdhY3ktdHJ1bmsKKzI3MDUwIDhhOWEzYWZmMzJmYzU4ZDQxZDg5YTljNTczN2ZmMjlmMjVjYTI2N2YgbGVnYWN5LXRydW5rCisyNzA1MSAxNDkzOGU3NjI3NmExYTY5NjYwYzk5MzcyOWUxNGE3MTg4NTk4Y2UxIGxlZ2FjeS10cnVuaworMjcwNTIgYzRkMmQzMDVmZDk4MmE3ZGNlOTAwZmZiOTdkZTE0NDJkZjRkYjM4YSByZWxlYXNlMjItbWFpbnQKKzI3MDUzIGQ3YmQ3YjczMjlhN2VjZDczOTU4YjcyNDUzODc3MzQxNDcyYTc1NWMgbGVnYWN5LXRydW5rCisyNzA1NCBkNmZhYTEzNzk0OGRlZmNkM2Y0MGM2NDA3OGZkYzRhMDVkZDM4MDUzIGxlZ2FjeS10cnVuaworMjcwNTUgMzk5YWZjZTg2ZWIwZDgwODI2NzBlZjIwMWY3Y2I3MDJlNTc4Njg5ZiBsZWdhY3ktdHJ1bmsKKzI3MDU2IDNiZGZjNDVkOTA5NjhjOWM5OWUzNmE3YjdkNDVjYTdjMzhkNTJjODEgbGVnYWN5LXRydW5rCisyNzA1NyAzYTJhNmFmOTA5OTI4M2JkOTlmNjFlZWNhMDIxODgxZDIyZWZjMmRlIHJlbGVhc2UyMi1tYWludAorMjcwNTggODk4MzE1OGU5ZjExMzQ2ZWNlZmRkMjBlYzE1ZjdkYzE3NWM3YWViMyBsZWdhY3ktdHJ1bmsKKzI3MDU5IDA4MDU3YTk4NzkxMGIzZjk0YTFhNTdiNmIxOTQxZWRiNjdmMmYwMDYgRFNfUlBDX0JSQU5DSAorMjcwNjAgYTU2ZjhjMzBhZjcxYzg5NWFkY2M4ODZhMGY1NjFhZWU4MjdlNWUwNCBEU19SUENfQlJBTkNICisyNzA2MSA4YjlkOTEzMDgyMGVmN2VkODRkMzY0YzI5ODIwZTE2YWIyNmE4NDdiIGxlZ2FjeS10cnVuaworMjcwNjIgNjI2NmYxYmQxYWI5M2VmZGYxNjhiNDRkMjgzNDliM2E3MjBjNGY5ZCBsZWdhY3ktdHJ1bmsKKzI3MDYzIDAxOTlhYTI3NGM3YmZmZGU4NjM0YjdmY2Q5ZTZhMWQxY2Q1ZjEyY2QgbGVnYWN5LXRydW5rCisyNzA2NCBjY2VhZjc4Yjg1ZGM3MmUwMWMxMGVmYzNjNWE0ZDc2ZWViZWMwZjliIERTX1JQQ19CUkFOQ0gKKzI3MDY1IDBmNTcwYmU2NzM2ZWJlMmVmNGNiNmU1OTIwMjg4OGVmYWZkMDkyZTUgRFNfUlBDX0JSQU5DSAorMjcwNjYgYzBlOGMwN2FlMWQ2Y2I1NWUxOGMyZTkzOWU2ZTJlODNkMWE2OWRkYSBsZWdhY3ktdHJ1bmsKKzI3MDY3IDc3MThiMjc0YWQ4YjEyY2QwMmEwZTQ4ZDM5OWNlYTE3ZGFkYmVlYWUgbGVnYWN5LXRydW5rCisyNzA2OCAxOGRkYzAyY2UzNmYzNTgyZTkyMDk0MWE2MWFjMmEwMTUwZTgzM2YzIGxlZ2FjeS10cnVuaworMjcwNjkgNjdiOWY1M2E3ODAxNGNhZGM1MTcwYzE0ZDFjZjFhZjY5NDFlNTE3ZSBsZWdhY3ktdHJ1bmsKKzI3MDcwIDlhNWM0ODU3OTYzMzllZDZhMGYwZTczOWNlY2ZiYjlhN2MzMzBmNGEgbGVnYWN5LXRydW5rCisyNzA3MSBkNGY2ZTJhZGRlNDg0NmMyMDdlMjkxYTE2MmQ4NzMwNGM4M2ZlYzIzIGxlZ2FjeS10cnVuaworMjcwNzIgYWJlMWJiNzZlZTQ0NzQ0OTRiNjYwOWYwYjJjMTRkNzJkMTRmMjMzMyBsZWdhY3ktdHJ1bmsKKzI3MDczIGU0YWRkN2JiNWYxNDhkYjUxY2Q3MGJjYjNhMWRlOWE0NmNjN2NhODkgbGVnYWN5LXRydW5rCisyNzA3NCBmODVmNDUzMWMzYzE2NDQ4OTI2NjAxNzI3ZGJiZGRjOGVmZjAxMDI0IGxlZ2FjeS10cnVuaworMjcwNzUgZTM3ZjFjMGY5YTFlOTM2ZmE3NjM4ZWU3MDFkZmNmZjhlOTAzZjQzYiBsZWdhY3ktdHJ1bmsKKzI3MDc2IDA1OGJkMmQ1MGUzMzM5ZjYxNGRlMGM3OWNjYmRmMDMxOWEwZDFmYWMgcmVsZWFzZTIyLW1haW50CisyNzA3NyA1NmE0ZDNhNTBiNzZiODZkYmQ1MmQ2NWVkMTU5NDkxOThkNWY3NjkxIGxlZ2FjeS10cnVuaworMjcwNzggM2IzNzlhZTM1NjlkOTMxMGM0ZjM1ZDEzNTAxZWI5ODUyM2UyNWRmNCBsZWdhY3ktdHJ1bmsKKzI3MDc5IDQ0Yjk5NzdkNDg0ODdkZWRhNTUyNTEwMjQ5YjZhMTZjMGY2YjE5MzIgbGVnYWN5LXRydW5rCisyNzA4MCA1NjUwMzJiNDhmNTA5YzUzMzM4ZWIyOTJlNTEzMDViNmExM2Q4OGI5IGxlZ2FjeS10cnVuaworMjcwODEgMjhiOTk3MWYwNjhmN2NkNGI0YzRkOTQ4Mzc1NGM4MzhkYzk4NWFiNyByZWxlYXNlMjItbWFpbnQKKzI3MDgyIDJiMTIxOWE3MmVmY2E2ZWM3NjZmYWYxNzg3YmIwNGM3ZjRlODE4OTcgcmVsZWFzZTIyLW1haW50CisyNzA4MyA5NjliZDU5N2Y5MjM4Yzc5NjY2ZWNhMmRlNmMzMDVkMjVmZWNjNDlhIGxlZ2FjeS10cnVuaworMjcwODQgYzI3MzNlOGY2NjEyYjliMjVlYThjNzQ2YjA3NjIyN2NhMTg0MTE3MSBsZWdhY3ktdHJ1bmsKKzI3MDg1IGZjNTM2MWUwMjhmM2Q3ZDZmNzBlNWUwNjY0ODVjZWQwODRmNmQwYzAgbGVnYWN5LXRydW5rCisyNzA4NiA3NzE1NGNlZjI5ZDE5ZjQwZjM1YzhhNjJkMTUyOTFmNTAyYWQ2NDk3IGxlZ2FjeS10cnVuaworMjcwODcgNDQ0OTU0YzU0MzRjMWVmN2Q4MTRmOGYyOGZhZWI0YTZhMjZmY2RhMSBsZWdhY3ktdHJ1bmsKKzI3MDg4IDIzN2NiZDJhOTFlOWJiZmNiMjZlNjMxNTQ4NTliMDk1MDA1YjkyZGQgbGVnYWN5LXRydW5rCisyNzA4OSBiMDYyMDg1YzFmZjJiODBhNjU3MmIzNTMxYmJiNjc3ZjNlZTdmNzNiIGxlZ2FjeS10cnVuaworMjcwOTAgNDhlOTM3ZTFiM2ZlM2QxMGMyNmFhMGQzOTUxOWYzMzZjZTA4ZTQ5YiBsZWdhY3ktdHJ1bmsKKzI3MDkxIDc1YzUxOTk5YzhkNTRmOTVhZDFiNTg4MDEzMWU0YmJkZDg2NDUwZjUgbGVnYWN5LXRydW5rCisyNzA5MiAyZjZmODcwOGUzZTk0NWE3MTY5MmJjOWI3Njk2NGU3NjBjOTcwZjUzIGxlZ2FjeS10cnVuaworMjcwOTMgZGIyMzllYzMwN2UwNzQ3MWMyZThiYTFmMzAwMmVmZTJlMjcwOGVlZCBsZWdhY3ktdHJ1bmsKKzI3MDk0IDEyMzVhOTVmZWRjZDZjYWYyZjRmOTRkNjY3NjBjYjFhMWNlY2NiMDkgbGVnYWN5LXRydW5rCisyNzA5NSAyY2Q2ZWQxYzFiNTgzYmEyNzg3NTA5ODAwMGE2YmFjZmU4MDM2MDk3IGxlZ2FjeS10cnVuaworMjcwOTYgOWQxMWY1MTg2MGRkM2UxZmQzZjNmZmMyYmZkOTVjODgwZmQ4ZWRlOSBsZWdhY3ktdHJ1bmsKKzI3MDk3IDU1NjJhNDk5ZmI3Zjg0NTFjZmU5Y2RkMTU1ZmY1YzVhZjJkOGZmMzAgbGVnYWN5LXRydW5rCisyNzA5OCA1Zjg1Y2FlMjVlMTg1NTQxOWYyZWIzNDIzZTg5NmZhNDBlODIwNDg3IGxlZ2FjeS10cnVuaworMjcwOTkgYWY4ZDQwZTRjMzc3NzMyMDcxYWEyODY5MzQ1NzcwZmQxZTI0OTRmNCBsZWdhY3ktdHJ1bmsKKzI3MTAwIGUwYTkxYzY3Mzg4ZjRmZDBhYTUwZDc2MmI1NjYyMzU0ODNhZDkyYWYgbGVnYWN5LXRydW5rCisyNzEwMSBiZDI2YzEyMDU5MWE1NzhlOWIxNDBjYjUxNmJiMjYzMjliYTljNDI0IGxlZ2FjeS10cnVuaworMjcxMDIgN2VhYWJlNzdkNWNiZDlmN2ZiM2U2YTMwYzQzOGM2ZDJiYmVlOTYxMSBsZWdhY3ktdHJ1bmsKKzI3MTAzIDMwODEyMmI2OTk2ZTQ0ZGMxOGVlOTU4M2M1NGU0NzMzNWEzNjNmNTIgbGVnYWN5LXRydW5rCisyNzEwNCA2NTVmNDg2Mjg0MzY5Y2Q0YzgzNzUzMjkxZTI1NTg3ZGEwZDY2ODllIGxlZ2FjeS10cnVuaworMjcxMDUgMTg0MmRiNmExMzk0ODU0NmMxZDZhYmQ0Y2RmM2Q5ZGQzODlmNTIzZSBsZWdhY3ktdHJ1bmsKKzI3MTA2IGRmMWEyNzVmZjRmMjViNTRhMzU0MmRiOTM1YWZkZDk0ZmJkMzA4MDUgbGVnYWN5LXRydW5rCisyNzEwNyBhNjhkMjQ2NmQ5NGJmNTU0OTIwOGJmYWU0ZGRjZjZmNDA5MDNkNWY4IGxlZ2FjeS10cnVuaworMjcxMDggMjdmNDgzMTRiYTlkMGUxZWMzMzY0ZjY0YTExNjA1YTk0NTI4YTgxMCBsZWdhY3ktdHJ1bmsKKzI3MTA5IGEyMTM2YWU5ZDRmNzZlNzI1MDkwNzQzMjMzYjcyMjYwOGRhOGM1ZmYgbGVnYWN5LXRydW5rCisyNzExMCA2ODk1MjAwZDYyYjE5Y2U5ZDhiNGMxZmUzN2VmYmM2OGQxMzNkN2NiIGxlZ2FjeS10cnVuaworMjcxMTEgZmU3NjliMDcxNTAzNTNmZTIxYzQ3NjM5ZTI3Yzc3OWI1NDQwODM0NCBsZWdhY3ktdHJ1bmsKKzI3MTEyIDJlMWRlZjQxN2VjYjg5N2M5NGVmNzZmMTE4NDAyZjUyNTY0OGRkMmUgbGVnYWN5LXRydW5rCisyNzExMyBlYTAzNTQ5MGY2MjQ1YzI4OTE0ODIxZGJjNDM5MWI0ODI0ZDMyZDU5IGxlZ2FjeS10cnVuaworMjcxMTQgMzg4MzIwMDBmN2U5NDViZTVjNDRhNjc2NjA0ZTUwN2Y2NjRlMjUwYyBsZWdhY3ktdHJ1bmsKKzI3MTE1IDQzZGRjZGNkM2M3MWZlNGVmNzQxMmM2OTQwZDJlNmM2NGI4ZDI1MmQgbGVnYWN5LXRydW5rCisyNzExNiA0ZDU5MzI1NGJhOTM5MjVkZWVkZDAwYWFjZTk3NTYxNGY5ODkxNjMwIGxlZ2FjeS10cnVuaworMjcxMTcgMmQ2N2EwYmE5MDIwZDI4ZTg5MmQ4ZDY1YzNhNGIyMzE3M2UzNDBlNSBsZWdhY3ktdHJ1bmsKKzI3MTE4IDM2Njg3N2VkZDQ4NzYzY2NhOGExNzQ2ZDUzMzM3MGQ5MjMxZDQ3NzUgbGVnYWN5LXRydW5rCisyNzExOSA3YmM0ODAyOWVhYTljYjNkOTBiYmU4MjdkZGY3NjcyZTliNDdlYTQxIGxlZ2FjeS10cnVuaworMjcxMjAgYTE2OGIyZjZkN2RhYWQ2ZjU4MjZlZjllZTk1NjM3OTY3MTg5MGZhZiBsZWdhY3ktdHJ1bmsKKzI3MTIxIDQ3MWE1N2JmMmRhZTE4NWQ0ODBhZTNkOGNiYTA0OTZhMzE1MTlkNGUgbGVnYWN5LXRydW5rCisyNzEyMiA0MTA5N2U5MmY1NjBmOTk5MzRiYjJhY2ZjZDI4MTY0OGNiMWY5MTFlIGxlZ2FjeS10cnVuaworMjcxMjMgMmM4ZWE3ZjlhM2NlZGMzN2ZmMWE2NTM5ZmZiNWQzOTI5MWMwN2E5MCByZWxlYXNlMjItbWFpbnQKKzI3MTI0IDAyNzkwNDBhZTAzY2JhNGQ4OWJlMTBhZDU0MjYzNjUxMzBmNjc3MTggbGVnYWN5LXRydW5rCisyNzEyNSA4ZTVmMjY3OTY2MjAwYjAzMzcyMjczZjc5Y2E0Y2RiMjcyMGZlMjAwIGxlZ2FjeS10cnVuaworMjcxMjYgMDc3MWY5MzgyZDFlMzJkZTg5NTYwYmZlZTUyZmIzMTFlM2ZjNDgyZiBsZWdhY3ktdHJ1bmsKKzI3MTI3IGM3ZTgwNzgxNzE1OTFjY2Q3Y2ViZDdlZjU0NWUxZTE3ZjdhMmJlMWYgcmVsZWFzZTIyLW1haW50CisyNzEyOCA5MTMxNzMwMWRkMDk4Y2EzM2I3ZjIxMDIxYjc1NjY4Zjc1MTFhMzljIGxlZ2FjeS10cnVuaworMjcxMjkgZTY0MGQ4OWI0OTA3NDE1YTA4NDA4NjIwZmYzMjJlZmRjMmY5YTg0NiBsZWdhY3ktdHJ1bmsKKzI3MTMwIDk0ZDBkYzlkNmU0NGVmMTA3NDIzYmU2YjkzMGVmOGJlZDY2YTgwNzQgbGVnYWN5LXRydW5rCisyNzEzMSBiYWRiYzUzMzQ0ODg2MTIyYWE4OTgyNTMxZGNiYWJlZTBhNGViZTBlIGxlZ2FjeS10cnVuaworMjcxMzIgZjE2ZjZkYTRmNWZmZGI2ZDVkZGM3MGEyMTBkY2Q4Mjk2NmEwYzY0YSBsZWdhY3ktdHJ1bmsKKzI3MTMzIGQ1OGZiNTQ0NTExODg4ZTZmYjU5MTg2M2VjODU5ZTY2NjY3YWE5MzggbGVnYWN5LXRydW5rCisyNzEzNCBhN2NlYWRiMDNlZGM5MTc0NTQ0YTU5MmI1NjExNjRmODI2ODFkMjc1IGxlZ2FjeS10cnVuaworMjcxMzUgMWNiY2RkY2EzM2IwMjgzYzM4NDZlODAyYzM5YTNjYmNiY2JkZWNiZCBsZWdhY3ktdHJ1bmsKKzI3MTM2IDVmYjA4ZDgzMmVhYzljOTA4MzdkNGYyM2NmOGZlOWQ1ZGI3MjFlZWQgbGVnYWN5LXRydW5rCisyNzEzNyA0NjgwZWY0ZmU5MGFkNDUzM2QzNGJiNjQ2MDc0OTUzZTJhNzA0OTk2IGxlZ2FjeS10cnVuaworMjcxMzggMzViNjI5MDg1NWZjMWU4NzQzODgzNWZjYTkxNTM3YWE5MDNiYTJkYyByZWxlYXNlMjItbWFpbnQKKzI3MTM5IGY2YjI3MTlmYmYxMTk4OTdlYWQyNTA3MWNmZGMyYWQ1OWQzNWEwYTYgbGVnYWN5LXRydW5rCisyNzE0MCAwNmRiZDA4OThiMzllMjQzZGEzMWQ0N2U3MWFmZDZmMDM4ZDFmMThmIGxlZ2FjeS10cnVuaworMjcxNDEgYTU1MzRmYWU1MTEwMTY4Njc3MjI5MTE3MDAzYzE4MzdjMmRhMGIzMCByZWxlYXNlMjItbWFpbnQKKzI3MTQyIDBjNjVmNDFmZDkyMTllZDhmZDIzYmRjNDZiOTFjNWQzOWI1ZjlmOGUgbGVnYWN5LXRydW5rCisyNzE0MyA1MDA2MzAxNmQwNDY5OWQxMTg2ZmUyOGQxN2VjYTdjNjgxZTE3YzRkIHJlbGVhc2UyMi1tYWludAorMjcxNDQgNWY4NmMyMWJkOWZjODkwNTY1NmEyYTQ0ZjdiN2JmZjQ0OWQzMmMwYSByZWxlYXNlMjEtbWFpbnQKKzI3MTQ1IDcxZGI0MjhmNmUwOGE0NTlhZTRjNDJiMWU4NmU0NWJjOTY3M2EzMzYgbGVnYWN5LXRydW5rCisyNzE0NiBiZWMxYjk0MmUwYmMzY2Q3MWU3NjlhMDE3MjMxMWY1NjkyMzBiYmI4IGxlZ2FjeS10cnVuaworMjcxNDcgMjQ1MjI0ZDFiOGM5MjAxYTJhZTg0M2VlMTIxN2UzYmUzZTc1MTY0NCBsZWdhY3ktdHJ1bmsKKzI3MTQ4IDU1YzkyMjY2OTkxMzEzNDFlMjdmNDhhNGVlODM3YjlmYWM1MTFjNzAgbGVnYWN5LXRydW5rCisyNzE0OSBjN2NkYTYzYTAwN2U0NGY2MTZkMDVhNGIwOTZiZGQ2MzdmOGI1OWE4IGxlZ2FjeS10cnVuaworMjcxNTAgNzMwNDkwZmYyNWVhMzliZDY1MDIxYTllNGVlMGE4ODM2MjhhYzdiZCBsZWdhY3ktdHJ1bmsKKzI3MTUxIDU0ZjZmODkxMzlkYjUzZDkxOGU1NTYxYzc1NTk3M2YyMzA1YTUyNmMgbGVnYWN5LXRydW5rCisyNzE1MiAwZGFiOGJhMWQyOTgwNzlmOWMwNDU5ZTZlMTVlZTVkNmViMmM2YzNiIGxlZ2FjeS10cnVuaworMjcxNTMgMjRiMGY2ZDY5M2UzNGIzN2M1MmRmMDU5MDhlMmI3YzVkZDgzZDZlYSBsZWdhY3ktdHJ1bmsKKzI3MTU0IDdhMzJjMjM1NmU1NjdjZjg5OWEyNjg0NjIzZjU0ZjAwYTViMjE0OTcgbGVnYWN5LXRydW5rCisyNzE1NSBlMGZiZjljNGQ0NmMyZDJiZThkNzg1MzdkZDJmYjRlYjc3NTczYWVkIHJlbGVhc2UyMi1tYWludAorMjcxNTYgOTMyOTc3MDYzN2E4NTg1MjE5NGY2ZWI2OTRkMTQ3NTM5MDJkMjU3NSBsZWdhY3ktdHJ1bmsKKzI3MTU3IDlkYTJkOGMxMzIwOTA5NDgzNThiODYzYjVhMGI3ZTNhMzEwYTBmN2EgcmVsZWFzZTIyLW1haW50CisyNzE1OCBjMDFjMWI0YTgxNzE2ZDFlMjM3ZDQxMGJjM2JlMTk5NjhjNGRjNjQwIGxlZ2FjeS10cnVuaworMjcxNTkgNDg2ZjQwNDVkMTNkZjYwODk2YWVmOWJjMjFkOTYxNmYzNWNmZTk0NyBsZWdhY3ktdHJ1bmsKKzI3MTYwIGNkZTY2MDg3MzljNDJkNDVhMWY2YjA4NTA3Zjc1NTdjNDg5YzQ1MTAgbGVnYWN5LXRydW5rCisyNzE2MSA3ZGQ0MzJlMWRlMjY2NjQwMmVmNmI1OTBmZjMyMDA1OWUyYWM2ZjIwIGxlZ2FjeS10cnVuaworMjcxNjIgN2NkYzUzMWU2YTUwNGEwOWQ3ODM3ZjdmYmJiYTUzYzI5MDYzMGVhZSBsZWdhY3ktdHJ1bmsKKzI3MTYzIDFmMWE2ZjdkZDYwMDE0ZGIwNmNkOGJhZWVkODg5ZTE0NzlhM2Y5NTIgbGVnYWN5LXRydW5rCisyNzE2NCA4MGQ0NTBlNTUyZjY5OWNlNjdhMGY3ODFlN2JhMWM3OGNmOTI2MDhiIGxlZ2FjeS10cnVuaworMjcxNjUgZmNjMzZlZTE5MjRiMzE2ZGE5NzY0NmU4ZTkyMjQ3MzQ1OTdlMGNiZiBsZWdhY3ktdHJ1bmsKKzI3MTY2IGJhMjk0ODVkMDcyMGJlZWE4ZjAxNjU3ZTQyYTJkNWUzY2YyZTg5ODQgbGVnYWN5LXRydW5rCisyNzE2NyAxZGE2ZDY3ZjRhMDVjNWUzMGYzZjU0MmY2YmRhNTJhY2Q0NjE1NTAyIGxlZ2FjeS10cnVuaworMjcxNjggMmFkMTNlZTZkODUwNWMyYzI0MTAwODZjMTk2MDUxZjg1MTg4MzA1NyBsZWdhY3ktdHJ1bmsKKzI3MTY5IGJmMTU1NWE5MjcxMTdkYjE4ZDNlYzYyOTNkYTg5NGFmYThmYzQ2MTcgbGVnYWN5LXRydW5rCisyNzE3MCBiMmIxZjFmZjVjNzFjZGE3YzJkZjc0NThmYzlkZjlmZWJhNmI1NTU1IGxlZ2FjeS10cnVuaworMjcxNzEgNGVjNThjMjcwZjNlYzBjMGM5ZWVmODk4OTUxMzc2NjYzMWJkNDJjYSByZWxlYXNlMjItbWFpbnQKKzI3MTcyIDdlYWQyZDlkZjdmOTY4Y2Q1NGNjY2Y2YjFiNzA2NTdhNzA0NzNmNDQgcmVsZWFzZTIxLW1haW50CisyNzE3MyAwYjEyYWZjNDAxMmE4MDZjYmE0NWU2MzU0NGIwYjc5NWFjODc3ZDczIGxlZ2FjeS10cnVuaworMjcxNzQgMDYwMWVjYzdmNGJmNzM5ZGQzOTc4MjE3YzJjM2YzNDcwY2UwNzdjZiBsZWdhY3ktdHJ1bmsKKzI3MTc1IGM3NGQ4NmRjNDAxNzc0ZGM5OGVlNDA1MTRmYzZjZWQ2Nzk4MmRlYWIgbGVnYWN5LXRydW5rCisyNzE3NiBjYzY1YjViY2ZjMzgzNjliOGQ5YjY1NzZhNDc5YWY2MWMxNjk2NTdjIGxlZ2FjeS10cnVuaworMjcxNzcgNzlkY2Q1N2YyNzJkZWM0OTMzMzM1NmM5MDQ1Yzc2NGY5Njc2NjIwNiByZWxlYXNlMjEtbWFpbnQKKzI3MTc3IGJiNWIzNzA0OTJkNmEzNzY5ZTdlM2FhNTBiZjQ1NzA2YzJkMzQyZmEgcmVsZWFzZTIyLW1haW50CisyNzE3OCAwMWU0YjY5OGZmN2VmZTBiMWYzMjk3YTFiNjljYjdkZGIyNGFjNmE5IGxlZ2FjeS10cnVuaworMjcxNzkgZTNlMDE5YmM0ZTFlY2U0MTQ1ZWUxNzU3NTFjZDZjNmI4NDcwMWM1NSBsZWdhY3ktdHJ1bmsKKzI3MTgwIDg5YTdmYTkxOGMzYjdmNjg5YWY0MzRiZjU3OGIzNmYzNjdiYTRmOWMgbGVnYWN5LXRydW5rCisyNzE4MSBmNmMyNmQwODNiZjZjOGRmMzA4OTNlZTZkYWJmNGZjOTg2MTg2ZjVhIGxlZ2FjeS10cnVuaworMjcxODIgYzdkN2QyMzE5YjNhMWM3YmI1M2IxZGVmMWE2ODdjMTczMGI4MWQzMyBsZWdhY3ktdHJ1bmsKKzI3MTgzIDIwM2QxNDEyYTdlODI2ZDNjMDQyOTYyZWY1ZmIyNTE5ZjUxZjM2Y2MgbGVnYWN5LXRydW5rCisyNzE4NCBlNGQ1NTdkNDZiOTZmZDY1NDIyZGJlMzc2NjVhNDczZGY3MzAzYWQ0IGxlZ2FjeS10cnVuaworMjcxODUgMmQ5N2JjMmJhNTBkMjc4ZDBiZWI2MmY2M2RmNDNlZDA2NjZiNzViMCBsZWdhY3ktdHJ1bmsKKzI3MTg2IDhhMGExNGUzNzI1ZTM3NjNmMTU2Nzc3NmZhYTBiOTcxZTFkZjI5MjAgbGVnYWN5LXRydW5rCisyNzE4NyA0M2Q2NThkYzhkZDM2ZTQ0NzM2ZDNiNTE2YmNlY2M5M2ZkZWYzMTI4IGxlZ2FjeS10cnVuaworMjcxODggMTMwZmZmNDg2ZmE2NGVmODIwMDZkMjcwNTVkMjQ3NjFlNDUwM2I4NSBsZWdhY3ktdHJ1bmsKKzI3MTg5IDMxMjZjNDI2Mjk2MjliNzk1YWMzZGMwNGM2NDdjMTdhZTM3MDk3ZTYgbGVnYWN5LXRydW5rCisyNzE5MCA5OWQyMjcyMzI1MmY1OTA4OTk1ZGQ4NmEzNjU3NmIyNzUyODBiZWUwIGxlZ2FjeS10cnVuaworMjcxOTEgYzQ4YmY1ZGY2MTRhYzA0YTdkMjU1Njg3YTliMGQ3NTUwODY1MjIxYSBsZWdhY3ktdHJ1bmsKKzI3MTkyIDhmZjY5MWRjN2YyOTFkZGQwYzdiNTI2ODdhZGJiNThmZmExN2RjODYgbGVnYWN5LXRydW5rCisyNzE5MyA5ZjAwMDljYTk3YjlhNWMyZDdjODdlZDhkYThkM2MwNTExMmNlZmMwIGxlZ2FjeS10cnVuaworMjcxOTQgYWJjZmE0OTk1MmM0MzI2MjdlNmQxMTRjNmYwMGM4ZjgxOGRjZGVkMyBsZWdhY3ktdHJ1bmsKKzI3MTk1IGQ1ZTg4YzBjOWUwOWVlNTVhYjM4MTU5MDAzZTMzZGE5ZWEyMWY4OTkgcmVsZWFzZTIyLW1haW50CisyNzE5NiA0MWM0ZGRhYjM2ZjJlMjFlMmMxMzc0MjE4ZTJhZTBkZGY2YTUxNjY4IHJlbGVhc2UyMS1tYWludAorMjcxOTcgZTQyNzJhZDFhNjM2OTRhMjBkMWIxNTMyY2ViZTQ0OWFmNzczZjM4MCBsZWdhY3ktdHJ1bmsKKzI3MTk4IGFkZTFkNTYxMDlhODJmOTUwYjU5ODkyMDMwMWQ3NmEzMmIzYmRjOTAgbGVnYWN5LXRydW5rCisyNzE5OSBmNzMwNmFlODY2MmRiNTg4MjBjZmVkYjI4NDY1ZjlkNDk3ZWFkYjUxIGxlZ2FjeS10cnVuaworMjcyMDAgZWQxYmEzN2E0NmI3M2YwYzViMjcxMjQ1NTU0YzJkYzdiZTQ3YTMyZiBsZWdhY3ktdHJ1bmsKKzI3MjAxIDlmMGFkMGViNjFmMDg2Y2NkN2E3ZjJhNjYyZWJlMDhkMzQzZjQwNzkgbGVnYWN5LXRydW5rCisyNzIwMiA4YWUyNmQ5YmUxYjRmYzEzZjRkZjU5MTFiYzE0YThjNTlkNWMxYWFlIGxlZ2FjeS10cnVuaworMjcyMDMgMWNmMWY5ODEyMjE5Nzk4OTQzMzE0ZjEzYWYyNWEwMDgzYmZiYTVhMCBsZWdhY3ktdHJ1bmsKKzI3MjA0IDA2NWE3ZjIzYmUyZmQ0NGFjN2FiMDllNmUzYzc1NDdmODU1NDk0ODcgbGVnYWN5LXRydW5rCisyNzIwNSAzNTlhNTdlOTZkNWViNjNiZGM1NzdlMjJlOGQ2NzBhMzcwM2FkMWJjIGxlZ2FjeS10cnVuaworMjcyMDYgOTUyNjNjY2VjODE5Y2NjNTJmYzFkZWI1ODI0OGNhMzY4ZmRjNWNjMiBsZWdhY3ktdHJ1bmsKKzI3MjA3IGM4ODE1YmQwMWZmNTc4ZTU5YTU2NTQ2MmJhMGQ1NWFhMDkyOTIxMGEgbGVnYWN5LXRydW5rCisyNzIwOCA5MDMxMTJjMWM4ODc2MDg4Yjk3ZmYxMTc3OTM2MjNhZjRhZDRmMTRiIHJlbGVhc2UyMi1tYWludAorMjcyMDkgM2YxOTZiNGRjNGMxMDZlYzM2NjhiN2Y2OWViZmE5MTI3YjJjZjEyYiByZWxlYXNlMjItbWFpbnQKKzI3MjEwIDZjNjE5YzE2MWI4N2Y4ZGZkODExMjY1NmIwNzYwZjcyZDYwOTZkMWUgbGVnYWN5LXRydW5rCisyNzIxMSA4NWE0ZTcyN2IxNmJhMWU3M2FjYTRkNWIxMjhiMWQzYjE5ZTVjYmZhIGxlZ2FjeS10cnVuaworMjcyMTIgYmQzN2ViNGRhZjNiNjc0ODI4ZDYwYzQ5Y2E0ODdlOWQyMTlmMDcxNyBsZWdhY3ktdHJ1bmsKKzI3MjEzIGI0ODFiYTk2N2FkODM3MTBkMzY5YWFhNTk2ZjE0M2U1MDkyOWNkNzAgbGVnYWN5LXRydW5rCisyNzIxNCBiZWI2OTllMTBiMjljZTIyNGUwMTBlNTk4OTQwZWM4Mjk4MmIwNmQ4IGxlZ2FjeS10cnVuaworMjcyMTUgZjZjMmMwODlmZGYyYWUwM2UzNzliNjk5YzQ2MzIzZGMzMTNlODdjNiBsZWdhY3ktdHJ1bmsKKzI3MjE2IDcyNTJiODY3ZDgxZTI4ZWZjZjYyOWUxMDlhNDk2ZmNlNDhlOGE0ZDUgbGVnYWN5LXRydW5rCisyNzIxNyBjOWM4ZjUyM2ZmMWI1NjY3ZmZkZGQ2YzI4MThmOTM2Y2NlY2ZkNjg2IHJlbGVhc2UyMi1tYWludAorMjcyMTggODU0NTgzY2Q2M2M3Y2U1NzNiN2I4NzI5MmQwYmU0MGNhYWQ0MTlmZCBsZWdhY3ktdHJ1bmsKKzI3MjE5IGQ2YWU1NDRhY2QyNGExZjcyY2UwMDUzNGZlZDQ2NGZkZTkxZWU1MDQgbGVnYWN5LXRydW5rCisyNzIyMCA0NjI3NWY5ZTc0MDcxMGQ5YjBlNWEwYWYyNjRiZDQyZDk2NzE3Yjc3IGxlZ2FjeS10cnVuaworMjcyMjEgOGE0NzY5MjRlY2ZlYTE5NGY0N2MwYzI2NjBjZDA2ZGIxZDgwYTM1YSBsZWdhY3ktdHJ1bmsKKzI3MjIyIDhiYzRlNWJhMWY2NTE3YTc4ODdlODkyYThiYzcyZjMxNTVhODAyNjEgcmVsZWFzZTIyLW1haW50CisyNzIyMyAyYjA3MTMzNzIwNWMwMWMyNjg1YjFiYmYyMmFmZjNhNWYwNTRmNTJkIGxlZ2FjeS10cnVuaworMjcyMjQgODY4Y2ZiZGNhOTA5Njk5YjBjNTY5MzAwYTFlMDI3NGQyNzVhOGRhZSBsZWdhY3ktdHJ1bmsKKzI3MjI1IDUwMjdlN2MxMmExNjAwM2EwNmZiMDNhMGE0NDFmZmNiZWQ4ZGM5NTEgcmVsZWFzZTIyLW1haW50CisyNzIyNiA1OTg2ZGJkMDA5NGZjM2IzZjQzMjQxZTAxYTllOGJjY2NhYmVkYmFmIGxlZ2FjeS10cnVuaworMjcyMjcgNmQwMDhhNGUyNjMzMzVlZmY3ZWUzNmQ3NTE0YjQ3ZTlkMGFlMmNhZiByZWxlYXNlMjItbWFpbnQKKzI3MjI4IDYzZWUzMWJiMjVmMzI1NjAyOTM3N2Y2Yjc0MDM2N2M4YThlMDUyZDcgbGVnYWN5LXRydW5rCisyNzIyOSBkN2IzMDdjMzc5YzhkYzFkZDVkMDM2ZmZjNDc5ZGE3MzQzYjk5MzcwIGxlZ2FjeS10cnVuaworMjcyMzAgYjc5ZDQzMzA1YzcyZDk0NzNmNTg1MzZjZWExOTMxZmY5M2E3M2U2NCBsZWdhY3ktdHJ1bmsKKzI3MjMxIGRmYTY4NjY4ZDAwZWNkYjU2YWZiZmRiZTQ1ZDg2YzUzNjMwNWI2NzUgbGVnYWN5LXRydW5rCisyNzIzMiA2YzFhMGRjODUxYjZjMWNjMzk1Yzg2ZjE3YWY2NzI5YWUxOGMyMzZkIGxlZ2FjeS10cnVuaworMjcyMzMgMWE3NmUzYzQ1MDhmMzYzNTNiMmUzZGI2NWNlMmZlN2Q2ZmNjYmI0MyBsZWdhY3ktdHJ1bmsKKzI3MjM0IDQ4N2E2Yjk5Zjc4MTFiMGU4MTA2YzAzZGRmMjFlMWE0ZWIzN2QyZjQgcmVsZWFzZTIyLW1haW50CisyNzIzNSA0NWQ2NzY5MzM4ODI4ZjdmMWJkYTMwOGUxN2FlNDE3NTg2YzIzZWYyIGxlZ2FjeS10cnVuaworMjcyMzYgOGU2NzYwYmYxODg0ZTdjYjQwMDg3YTFiZjZlNDkzNTQ0ZGI1YjUxMiBsZWdhY3ktdHJ1bmsKKzI3MjM3IDhhZDgxYjM3OTU1MjAwNThhZTFjNzg0M2YwMTAzMGQ2MmVmNTJhYTcgbGVnYWN5LXRydW5rCisyNzIzOCA2M2QxZTMyNjNmNDU2MmYzOTU0NTkyNjEzNjQxNmJlMTQyNGY5NGVhIGxlZ2FjeS10cnVuaworMjcyMzkgOTVlN2JiYmQwOTU0OTQ1ZWRhOTg3Y2U3MDFlYTM3MzY1MTVlNDE3OSBsZWdhY3ktdHJ1bmsKKzI3MjQwIGMwMmQxYzlhNjYyZTY2NWE0MDdkNTA5OTRhNDQ0ZjIyMTQzMTUzM2EgbGVnYWN5LXRydW5rCisyNzI0MSA0NTg4YjY4MjBhMTFlNTRiYmQ0MDlmYmVmY2M1NzE5MGJhNWJjNTQyIGxlZ2FjeS10cnVuaworMjcyNDIgMTVhYjI5MzkzNzc5ZjE5YWE4M2EyYWJmNGM5ZGYzYjdiNzUwMTFkNiBsZWdhY3ktdHJ1bmsKKzI3MjQzIDVhZmQxNGEyYThiYzZjODc2MDE0ODFhNjUyZDg4MWY5MTZjZTQ3OWQgbGVnYWN5LXRydW5rCisyNzI0NCA4MzJmMDUwMTE0OGJiNzhlY2YyZWU0M2UyOWQzYjI2OTVjNGVkMTdmIGxlZ2FjeS10cnVuaworMjcyNDUgMDQ5OWRmNTg4NGQyZjU0ZmZjNDNmMDRmNjczMWU0NjY3MjY4NTFkOCBsZWdhY3ktdHJ1bmsKKzI3MjQ2IDRmNmQzMWRhY2Q1ZTY3ZTQ5YzUyYzU3NzM5YmUyY2QwMGVmODkzMTQgbGVnYWN5LXRydW5rCisyNzI0NyAwODQ3NWM4N2QyNGY1MGQyN2I4NDNlMTJlOGUxMDc2NTlmZDc3N2NjIGxlZ2FjeS10cnVuaworMjcyNDggYmJhZWFmMjcxOWM0YmJlNjU2MmU4N2NlMGEwY2U5MTg2NTc2YTdiYiBsZWdhY3ktdHJ1bmsKKzI3MjQ5IDhiN2Q4N2VhNDg5NGUxZDYwOTYwYmIwODZmZDI4NTNiN2Y3NmFhZDYgbGVnYWN5LXRydW5rCisyNzI1MCAzZGJhODY2ZTg2MmU5ZmZhNjFiYTQ1MWI0YjZmOTcxZDUwMzAwMjM2IGxlZ2FjeS10cnVuaworMjcyNTEgMDAwYWI1ODRlNzdhNjFiNDI4OGFlYjFiNjNiY2QwZTc1Y2NhNTdmMCBsZWdhY3ktdHJ1bmsKKzI3MjUyIGVhN2U3MTdkZWUyNzIzYjQxNjQ5OTc2MGQ1NTU0N2YwOTgwODYwMjIgbGVnYWN5LXRydW5rCisyNzI1MyA0YzY3ZGQ0MmExZDllYTM4YzU5OWM5NzM0OGZlY2NjY2M3ZDQxYmQ5IHJlbGVhc2UyMi1tYWludAorMjcyNTQgYWI1MzU1ZDg3M2RkNTg3YzFiZWU0NzAwZGQyMDNmM2U4YWFkN2NjOSByZWxlYXNlMjEtbWFpbnQKKzI3MjU1IDFjZWY2MWQ1OTQ3ODY3MWUwNWJiMzI1NGExNmQ4Y2IyZTYyZTVjZmMgcmVsZWFzZTIyLW1haW50CisyNzI1NiA3YjY2ZjAwMzQyMzNhNzY2NzQxYzMzNmU0OTYwMWJmM2I2N2RiYzEyIGxlZ2FjeS10cnVuaworMjcyNTcgNDFhYjUzMmQ0ZjYwMWNjYTQ0Y2M2OTk1YjAwMzdiNWE5YjM4ZGNlMSBsZWdhY3ktdHJ1bmsKKzI3MjU4IGMxNDVmZGRlYTM0MDg0ZmY2M2ExOTBiYTM2MTIzNGZjMDA4MGYzN2UgcmVsZWFzZTIyLW1haW50CisyNzI1OSBlYTlkMzMzZjkwMzRlMWQ1MjM3NDYyYmI4MzAwMzI4ODNmZWVhZTQwIGxlZ2FjeS10cnVuaworMjcyNjAgYTQ0ZjM4NzdhMzg2YmYyNzM4NzU0ZTE5YzUzMTc4YmRkODgwZDQ3NyBsZWdhY3ktdHJ1bmsKKzI3MjYxIDgzZTQ1OGE2M2MzZmJhYzQzNzZlNDJkOTRiMjJkZDYzODEzMzNmZDAgcmVsZWFzZTIyLW1haW50CisyNzI2MiAzMjRjNzI2NzVjOGQwNGI0YjIyNTNjMGNhNDI4YjY4ZDQ0ZGIyZWZjIHJlbGVhc2UyMS1tYWludAorMjcyNjMgMDJjNTA0NWQ1YjRlMGEzMjdmOGZlODg5Mjc3MGI4NmVjYTgzMjQ4MSBsZWdhY3ktdHJ1bmsKKzI3MjY0IGFkMWQ4NjJmYjYzMjY0ZGYwYTNmODIyY2M0ODZhODU2NGUxMTc5NDcgbGVnYWN5LXRydW5rCisyNzI2NSA4MzA1YTE5NTg0YmM4OGFlMTZlNjhhOGVjZjU1ZWFkMTIwNjY2MDI4IGxlZ2FjeS10cnVuaworMjcyNjYgZjUwMzBhMjk5MzVkY2FiM2EzMmNkYTBhODZiMTAxMGFmZjhlYTc2MSByZWxlYXNlMjItbWFpbnQKKzI3MjY3IDI4NTcwMmYwODI0YTYzN2U3M2M4ZTVmMWJhNWY0YmFmYzQyNTJkMTIgcmVsZWFzZTIxLW1haW50CisyNzI2OCAwODk5NDA5YTBjYjZkMWUxZTNhODYzNjk4N2NjMzljNmZlYTU2NDI5IGxlZ2FjeS10cnVuaworMjcyNjkgMDFjZGQzOGQzNWZhMGQwYzIwYjFlM2YzM2ZhOWYxYTM4YWRkZDU3MyByZWxlYXNlMjItbWFpbnQKKzI3MjcwIGEwN2JjMzAzYTYwZDhhZTNiNzRlNTk1YzE2MGMzYzg4ZmFmNTUxNjggcmVsZWFzZTIxLW1haW50CisyNzI3MSAwNjZmODkzODA3MWE1NTA4OGRkZjdkZmNjYjY5MjI4MWFmYmMzYTkwIGxlZ2FjeS10cnVuaworMjcyNzIgNGYwNjA2Y2VlZWY4Yzk0Mzk0ZWIyYmNmMjkzZTFkZTUwNWUzNTcwMiByZWxlYXNlMjItbWFpbnQKKzI3MjczIGU4YmFlMjUzNzg0YjNlZGNiY2UxMzI2NDI3NGNiZTQ3MzcyMmI3N2QgbGVnYWN5LXRydW5rCisyNzI3NCA5Y2U3MWIxY2MxN2Y3MThlOWNiOTI1MGNiMjBkZjI3YzFlZDNlYTcxIHJlbGVhc2UyMS1tYWludAorMjcyNzUgNzNjZjRkODQ3NTcwZWNhYWI1NDg1MjQzZGE4N2JlYTQxNTkxMDk3YyBsZWdhY3ktdHJ1bmsKKzI3Mjc2IDkyZjI4OWMyZjdjNjNkOTc3YjE1OTE5ZThiMzhkYWZlNDlkMzU5YmIgbGVnYWN5LXRydW5rCisyNzI3NyBiMTZkNGJlNmEyMzJlZTE4MTExODQ3NWUzMGQwYWI5MWU0ZTQ1MWFiIGxlZ2FjeS10cnVuaworMjcyNzggOTIxMDY0YzI2Mjk3YjI1ZWIyM2JhOTZkNGNjMWJlYjE3NDNhNThjZiBsZWdhY3ktdHJ1bmsKKzI3Mjc5IDY4OTNjZWVjODYxMGU5YzU0ODQzNDYxZDQ5MzhkNzk1ZjJmYTRiYTcgbGVnYWN5LXRydW5rCisyNzI4MCAwNzVmNzU1YTY1ZGExNmJkZWZmZjM3MDkwMGE4MzkyMmEwNTQxNjM0IGxlZ2FjeS10cnVuaworMjcyODEgMTI5OGU5N2ZiMzQzYWRiMTZiMmRkMWVkYmQzYzQ2Y2U2Yzc1ZGJhMSBsZWdhY3ktdHJ1bmsKKzI3MjgyIDdlM2VhYzVkMzI5OTc5Y2Q5NjIwZjhlMGIxZmUzNGE1ODQ3Y2EwZGUgbGVnYWN5LXRydW5rCisyNzI4MyA2MjBiNjk5Njg1ZmYwNDI4ZDI5NTYwYzk5NzlhYzMyZDNlM2RmYTFkIHJlbGVhc2UyMi1tYWludAorMjcyODQgZmYwY2Q2ODc4YmRkZTVmYmYyMzY1NzU3MTFhMDg1ZDM0YjU3MDc2ZiByZWxlYXNlMjEtbWFpbnQKKzI3Mjg1IGNlMTYzZjM0MGNkZmY1YzM2MjJmOTYyMjhlYjgxYmUzMTQyYTZlOTAgbGVnYWN5LXRydW5rCisyNzI4NiAwYmNlZjNjYTIxYzA2YTM3MjM4N2QxOTE4ZTk3NThlZDdhMzljNzE3IGxlZ2FjeS10cnVuaworMjcyODcgNWY2OWQ2ZjE3YWEzMTA5MmQ3MDc3YWYyZjhjZGI4NzU4YzJhMzBjNyByZWxlYXNlMjItbWFpbnQKKzI3Mjg4IDgxNWQwMjgwMGQ5ODBiZjAyMTIwODQ0OTU1ZmZkMDgyODE0NWM4ZjYgcmVsZWFzZTIxLW1haW50CisyNzI4OSBiYWU5OTZiYjdkODJjZTJkZWU5MjQxNzcxZjRhMmFlNWNjMjU5NzY2IGxlZ2FjeS10cnVuaworMjcyOTAgMzc1NjBmNDM0ZjZhMmJlYWUwZGE2ZDJhNzVjYjE0MWMxODdjZGY2ZiByZWxlYXNlMjItbWFpbnQKKzI3MjkxIDEyZjQ5ZmE4ZjQ3ZjJhYmEyNDY2YmYyMDRjMWM0MTllMThlYjA3ZjMgcmVsZWFzZTIxLW1haW50CisyNzI5MiA5MjExYmM3MjQ5YTA3ZWIzNDQyZDRjY2QwNTIyNjNhZTU5NTcwNTE2IGxlZ2FjeS10cnVuaworMjcyOTMgZmJhN2QxMDM1ZmVkNWVmYzFhYTQwMzMxYTEwYzQ3YjVjM2ZjZTQ4OCByZWxlYXNlMjItbWFpbnQKKzI3Mjk0IDU1ODZmMjA4NTgxNTg2YjVmOTFiOGQ5MzA3YzM0NDNlZWViYjczNDIgcmVsZWFzZTIxLW1haW50CisyNzI5NSA5NzBhYTk3MTI4MTMxYWU0OTc3ZTc5OTI3MDYxZDA0ZDhlMjkyYWJhIGxlZ2FjeS10cnVuaworMjcyOTYgN2RmZTQ4YzdhYTY1ZTBjNmNlY2QxNWU5ODFhZmMwYWE4NGIwODZhNyBsZWdhY3ktdHJ1bmsKKzI3Mjk3IDI2YmExN2I3NThiOWVkZDk5YmJkY2NlOTQ1ODY1NTU5NmY1ZGE0N2YgbGVnYWN5LXRydW5rCisyNzI5OCA4ZWIyZjMxZWVhOWViM2VhZTJhYTJjNjQzODZmMjg5YzA0MWEwNWIzIGxlZ2FjeS10cnVuaworMjcyOTkgZTU1OGE0MGI2YjUyMzExNjEwZDhiMDkxZTRmMzhjMDhiMmFhMzFiYSBsZWdhY3ktdHJ1bmsKKzI3MzAwIGVhYjhlY2E5ZWM1MWQyYjkyZjcyOWRhMjNhNTAzZmQyOThkY2E0ZTggbGVnYWN5LXRydW5rCisyNzMwMSA1YTIzMDJmNzk3MjQ5ZTlhMTY2YzA2OTEwODliOWFkNDViOTVhOTU1IGxlZ2FjeS10cnVuaworMjczMDIgMzA0MmRhZDE0OWFlNzNlNzNjZDJjNTQ5MjU3YjE4OWYwZWZmNDBhYiByZWxlYXNlMjItbWFpbnQKKzI3MzAzIGI1YmRlNzdkYTIwZTA3Y2Y5MTdkYThmZmNiMjgyYjgyMTkwODYyMTYgbGVnYWN5LXRydW5rCisyNzMwNCBkM2I1ZmFmZWNiMjlkZjhmYWUxZjZjNjY5MmIxYjc5ZmJkZjFjMGRjIGxlZ2FjeS10cnVuaworMjczMDUgMzUwMGRhNjY2YzBjM2Q2OTZlMTc3OWU4ZDMxYWViYjQxZWZhY2JjYSBsZWdhY3ktdHJ1bmsKKzI3MzA2IGQ2MmU2ODQ1NDJiOWJiZjUzNjZjZWJlZDNkYWMzMTFlYTdlYzliMGEgbGVnYWN5LXRydW5rCisyNzMwNyA4NGYwOTJiMTA2ZWZiOTBmZGE2MDI5MTExNmQ2NjE4MDMyNWE3ZDAxIGxlZ2FjeS10cnVuaworMjczMDggODMzNTRjMmNhMzkwM2QxNmI0MTU5ZDhkM2ViMjA4NTNmYmM5YzViMSBsZWdhY3ktdHJ1bmsKKzI3MzA5IGE2MGEzZDljNmZkOWE2ZTg2M2E4MzhlMzIwODFiY2UwNTczYzIyZDYgbGVnYWN5LXRydW5rCisyNzMxMCA2ZTJhM2M1NzAwYWM5YzdhMTFkYmE2NzViNDA1NmRmMzg2NjQ5NGVmIGxlZ2FjeS10cnVuaworMjczMTEgZGU2MjU1MTdhZGU4MDJkNGQzM2Y4NGY4Y2JkN2Q1ODExOGJkNTViZSByZWxlYXNlMjItbWFpbnQKKzI3MzEyIGFlYThmYjNlM2YzZDdkYjgzNWRlN2EzMTM4ODg4OGU5ZWMzN2EyN2MgcmVsZWFzZTIxLW1haW50CisyNzMxMyA4NWUxMjA0YjY2MTcxYmNmN2E5ODJhMGMwZDcwZGUxMWJiNGRiMTMzIGxlZ2FjeS10cnVuaworMjczMTQgNjUyZjFiMzE4ZTVhMDgxZTdkNWNkMTQ2MjgzOWVkZTMzNjRjNzMwYiByZWxlYXNlMjItbWFpbnQKKzI3MzE1IDM3MTE4YjZlNWY0NjEyNGNhNDQ2MGI3MmIwMjUxN2I2MGJlNTk3MzkgbGVnYWN5LXRydW5rCisyNzMxNiA4M2FhOTlkZWRhNzRkZTE1OGI1ZDk5MjQwNTcyOTA4OTEyMGU2NmI3IGxlZ2FjeS10cnVuaworMjczMTcgZWQ2MmMwNGIxOWY1MjBlMzU5YjY4MTVjMGUzYmZkYjIyZjk3ZGU4YSByZWxlYXNlMjItbWFpbnQKKzI3MzE4IGY3Y2U2OTY5NzllMThiMDExYTdlNDA3Nzk1ZjFkOThhYTIzMjRjNDMgbGVnYWN5LXRydW5rCisyNzMxOSBkNGJkNjYwMTcwMWQzNWRjOTc5ZmQ3YTk5NTY4NWU5ZjdmNzQ4MWNiIGxlZ2FjeS10cnVuaworMjczMjEgMzgzNGNiMGU3YmU2NWM1Y2NjODUwMzA5ZDE2ZWJhNTY0OWQ2MTdiYyBsZWdhY3ktdHJ1bmsKKzI3MzIyIGNiMDhjYTU3ZTJhOTY2Mjg4NzE4MDdkZGVhMjRmNDRiYTNiNTEzOTIgbGVnYWN5LXRydW5rCisyNzMyMyAxMWE2ZDliNWY5OTA2NTk2YTExYThlM2EyYWU5MjgyODE4ZWFlYzE2IGxlZ2FjeS10cnVuaworMjczMjQgYWEyMzg3NzBkODA4ZjUzZWVlNjYxZWY1OGZkMzM1M2Y5ZmE3YjYzYiBsZWdhY3ktdHJ1bmsKKzI3MzI1IDFhMmI1MzQ0ZDFjY2YzZTYxNDhkMDYxZTk5NjRlZDA4YjczODcwYmEgcmVsZWFzZTIyLW1haW50CisyNzMyNiAwM2JiYTcyODI4NTJjYmQyYWM0YTFjOGQ4NDYzZGJiNDA3M2ZiY2ZiIGxlZ2FjeS10cnVuaworMjczMjcgMzEzODE2NzIwMWFhY2Q3OGNjM2VlMmY1Njk5MDU3ZGJiNDE1NjIwZSBsZWdhY3ktdHJ1bmsKKzI3MzI4IDRlZWQ1MWFkNDkzZDRlZjNhNWYzYzkxZTQzOGYwZDIzYzEwOTkyODQgcmVsZWFzZTIyLW1haW50CisyNzMyOSAwOTZiNDc1ZTFiZWYwMjU4MzczOTBjYzU5ZjhmOGY0NGMyMmU4NzUzIGxlZ2FjeS10cnVuaworMjczMzAgN2Q4YzZiODg5YjU0ZTMwMWRkZmE4YzYwNzQyZjQ0NjM0NTQ4NWQyNiBsZWdhY3ktdHJ1bmsKKzI3MzMxIDExMWMxZTU5YWQ3MmVhMDI2NTE1M2IwMjI0MjFiZWFkY2QyNzIwMGEgbGVnYWN5LXRydW5rCisyNzMzMiBmNTQwNWM2ZWM0YWNkMzY5ZDNlMjkzNjZmZTFhMDkzNTk4NzdmZTU0IGxlZ2FjeS10cnVuaworMjczMzMgZjdlMTkxYzhkYjIzZjMyNjZmYTA1OTFjMTEzMDBlZTM3YTE0YzU4NyBsZWdhY3ktdHJ1bmsKKzI3MzM0IDFmZTAwNWM0MjgzNjg3YmM1YTVkNjFlMTYzYzI0NTg2ZWE4YzliMjQgcmVsZWFzZTIyLW1haW50CisyNzMzNSAyNWIwYWYyN2RkYzg1NzJkMTAwMWNlNmQwMDU1ZmMwMjVjMWVhYmQxIHJlbGVhc2UyMS1tYWludAorMjczMzYgMWE4MDk2YmI0YzQ4MjgwYzQ4YzI0MmY4YTAzNmJkOTU1ODE1NzAzZCBsZWdhY3ktdHJ1bmsKKzI3MzM3IGUyZmE3NDFjNTQ3ZjUxNTEwZGFmNmQ1N2FhNDg3ZGMwNWNhOTUyY2MgcmVsZWFzZTIyLW1haW50CisyNzMzOCBlZGQ3YzAxNDZhYzgyNGY1YjRlNGM5Y2M1NWYyYWRiOTNkM2FmYmU5IGxlZ2FjeS10cnVuaworMjczMzkgYTcyOTk3ZjdkYjRjNzAxOGY1Yjk1NDRkNzA3NjFjNWYzODhhYTA4OSBsZWdhY3ktdHJ1bmsKKzI3MzQwIDdlYmQyY2QzYWVmMDFiNzM5NmI4MTM2MzhmZmM5MDg5N2U2ZmYwNjkgbGVnYWN5LXRydW5rCisyNzM0MSA4MTQ5ZDk3OGIwMDZmNzcwYTkxYTc5OTg2OTZiNjA0MWVmZmQyNDJmIGxlZ2FjeS10cnVuaworMjczNDIgZmU5YzcxMzJhODY3ZThlN2EyYTg1NDQ2MmRkODk5YmJlMDNhNTg5YyBsZWdhY3ktdHJ1bmsKKzI3MzQzIGM2OWRjNDNiNzAwYTk3Zjk1Zjg1ZmM1MDVhMTJiNDI2Y2JlODM5NDMgbGVnYWN5LXRydW5rCisyNzM0NCA0ODFlNGE0YjhkZTA2OWMxNTdkMGQ3MzljYzZhZGU0YzBhZmZlNGE1IHJlbGVhc2UyMi1tYWludAorMjczNDUgMzYwMGQ4ZDA3MzU4MzI5ZDc3ZWU0NmU5Y2ZmZjE0MmRmY2QxZWNmMiBsZWdhY3ktdHJ1bmsKKzI3MzQ2IGE3YjE2OWVmODNlYWNjMWNmODMyMjJhODBiOTMwY2Q2MTkyZTJmZmYgbGVnYWN5LXRydW5rCisyNzM0NyAyNmEwZDBkYTEzMTJjM2MwY2ZjNjY4MGYyMmRhZWU4ZmI5NGMxYWYyIHJlbGVhc2UyMi1tYWludAorMjczNDggMDgyNWJkN2I1YjU1OGUwMWU5YTQ0NGEwZTNiNDhkOGNkNDAxNDgyYiBsZWdhY3ktdHJ1bmsKKzI3MzQ5IDM1Yzk4OTRmMDZiOTYwY2UxMDVjMzYyOWFjN2QyZTdmOTRhMWE5YWEgbGVnYWN5LXRydW5rCisyNzM1MCAzMjQ2M2U4ZTVlMWFlNmNkOTgzNGMxMTY3YzU3NzkzN2Y1Nzg1ZmUxIHJlbGVhc2UyMi1tYWludAorMjczNTEgYTE4MWNjY2ExMzEyODMyZGMyYjNhMDMyZWVjZmYyZWM5YTViMzQxYyByZWxlYXNlMjItbWFpbnQKKzI3MzUyIGQ3YTYyMDQyZTdlZmE1OTUwZDBmNWIyNTc2ZWY5MDRhZmE4YmRiMDkgbGVnYWN5LXRydW5rCisyNzM1MyAyMTJlZTYzNjViZmY5ODNkOTFkODUxOTg0MmUzNGNjNjIwODYzZDY2IHJlbGVhc2UyMi1tYWludAorMjczNTQgN2Q4YTE1MDQ5NmE4ZjA2ZDA2YTM3MDI1ODhlZDI5NjJmOGVjMzI4NiByZWxlYXNlMjItbWFpbnQKKzI3MzU1IGQ3Zjg1MTJkYTQyMzZjOWZjMWQ1OTczMGZhNmM5MTc2MTFkNjBmMjUgbGVnYWN5LXRydW5rCisyNzM1NiBhNTYyOTI3MzI1NjZkZDQ3ODI0YTBlYTJhN2IyZmJkYTliMWM1ZTA4IGxlZ2FjeS10cnVuaworMjczNTcgODg2MzA3NmUyZGY5MzA3Nzc4NjI1YzRkOTlkOTI1NmVjMmVkMTU4YiBsZWdhY3ktdHJ1bmsKKzI3MzU4IDMzZWE1MjJkZDNkMjJlYTk5MTNjZTI3ZmNkZmYwNDcwNWI1NTcwMTkgbGVnYWN5LXRydW5rCisyNzM1OSBiNzcxODU3ZWQ3ODg4ZGUzM2I5NjhhYmVhYTM4NzM4YmQ5YWU2ZWFkIHJlbGVhc2UyMi1tYWludAorMjczNjAgNGFiOWRmMjQxNmY5MzZkYzJhZjM3ZmIwNDcxZTM0MzAxM2MyMzk5OCBsZWdhY3ktdHJ1bmsKKzI3MzYxIDk1ZGE5OTE4N2M1NzU0MjA5MzdkN2U1ZjIxMTRhNTA2OWFkNDZkMzQgbGVnYWN5LXRydW5rCisyNzM2MiBhZDZmYTFjMDRlNDc0NzcwOGRkYWIyMjNlNWYyYWNlN2ViZTAxODc5IGxlZ2FjeS10cnVuaworMjczNjMgNDhhZDQ3MGMxZjhlMTZhNDJhZDE5Mzk1YTI4NmJmZGQxZGNlMmRlYiBsZWdhY3ktdHJ1bmsKKzI3MzY0IDQxNDY4ZjkzNTNjZTlhODkzMzMzYzE3MjAzMjg2MTU1ZjA0NjRiNGIgbGVnYWN5LXRydW5rCisyNzM2NSA3MDNlNjNhZTBmMDFmYzRkZjAwY2ViYzI0OGQ4MjY0MmJiNDM5MzAxIGxlZ2FjeS10cnVuaworMjczNjYgMWY2NTEwMDUxYzhhZTg2MmQ5MmE0ZTRhMjdmZTI4MjNkN2JkNTMzMSBsZWdhY3ktdHJ1bmsKKzI3MzY3IGRhYjg3MDFiZDNmYTI0YjQxNWU4YzNjZmNmMWE1MDNhOGVjZWNhZjcgbGVnYWN5LXRydW5rCisyNzM2OCA0ZTYzZTk3NzFmMzBjNTA5ODQ5NjE2ZDhlZTc5ZGZiMmY3YTUxNjU2IGxlZ2FjeS10cnVuaworMjczNjkgYjg4NzVmMTZhNGJlNTQ1ZjJiNzkwNDRmZjQ4MTcyMDdiNTBlZTEyOSByZWxlYXNlMjItbWFpbnQKKzI3MzcwIDQ1YjllMTIyYzMzYTdhMWVkZjE4MjJhMzdkYjNlZDZlZGZlMjhmNDcgbGVnYWN5LXRydW5rCisyNzM3MSBiNzFlMGY5NmRlMjMzNTdhZjMyMDgzM2YyYWJhZTA3YTEwZmI4MGUwIGxlZ2FjeS10cnVuaworMjczNzIgZWExODc3OGRmNmMzNzAwOGMyMTlhZDY5MmJiM2U1MmM4NmE3Y2FjYyBsZWdhY3ktdHJ1bmsKKzI3MzczIDE0ZTJlYjllNWVmMmJlYTYwYWJkOGIxNDlhNWZjMzFjOTRkNGM0NmYgbGVnYWN5LXRydW5rCisyNzM3NCAxOWE2MDk1MTdhYjhhNmJmNTJiM2M5ZTQzZjkzNThjODA3NGIyZmFhIGxlZ2FjeS10cnVuaworMjczNzUgMTRkOGVlMWU4ZGU1Y2NkMTRjNTEwODAyNDc0ZjBmYTY0YmI2YzE4YSBsZWdhY3ktdHJ1bmsKKzI3Mzc2IDAwZTU3OGY3OGNhYWEyYTg3NjNlZDBjNTI3ZTU4M2YzMmRmNDgwODUgbGVnYWN5LXRydW5rCisyNzM3NyA0NGY3ZmMzMDc2NzM2ODM4NDA0OGUyMDc1NTlkOThlNGVjNTNlN2QwIGxlZ2FjeS10cnVuaworMjczNzggYzg4MjkwNDYwNzkxOWNhMzFkYTc0ZGFiMWM3Mzk1OTA5ZGU3M2E3NCBsZWdhY3ktdHJ1bmsKKzI3Mzc5IGRjODcyYTJmNTEzYjQ0MjFhYzBlOTRjZjEzOWRlNDkzMThjZjkxMDMgbGVnYWN5LXRydW5rCisyNzM4MCA5ZDg5YTlhMDU0ZTA0MDllZjEzN2U1ZWYyNTg2YTU2YjQ3ZTY5NWJiIGxlZ2FjeS10cnVuaworMjczODEgZThhMjYzZGIxYmUwMzNhYjU5Y2JmNGZmMzM4OTkxYzE2OThkM2I3NiBsZWdhY3ktdHJ1bmsKKzI3MzgyIDcxZjEzY2Y0ZjllMmQ5MzJiNWQ5ODkwNGY0NjdiNmI4MTQwNjUzZjQgbGVnYWN5LXRydW5rCisyNzM4MyAyZTVhMWU4YzBiNDgxZDY0YTM4ZmZkZTVkZWY1YjdjMDU5MGVjNGE5IGxlZ2FjeS10cnVuaworMjczODQgZWRmOTUwYmY0MjMyNThjNmZhNjI2NDM5Y2U0ZjQ4NzEzNGY0ZGIzYyBsZWdhY3ktdHJ1bmsKKzI3Mzg1IDU4NDMzYjY2ZjU4Mzg5ODA2ZDcxNzc4NTlmOTBiNWVhOTgzZGI1NDYgbGVnYWN5LXRydW5rCisyNzM4NiA3ZjgzYjIxMjRiNGVkMzkzNmVjZTk5NWIzYjg2ZjdmNzZlZGVhNTFlIGxlZ2FjeS10cnVuaworMjczODcgZDhkZTliNWY1NjFlZWU4ZWYyNDQ2NTYxNDY1YTRhNDcyM2RhNGEyZSByZWxlYXNlMjItbWFpbnQKKzI3Mzg4IDM4NDhhYTNlZGFmYzZjNzczNDc5OWI3NzA4NjhiNWJjMmM3MGMyMDIgbGVnYWN5LXRydW5rCisyNzM4OCA3NGQ1Y2Q2OThiYmY3MWNkOWI0Yjk2NDE5ZDkwYzA5MDg4MzVjNGFkIHJlbGVhc2UyMi1tYWludAorMjczODkgZmNmMmUwMWM2MTZhNjA0ZWFmMGY1MzVhNWU4OGZlMjc0MzBiOGNmZCBsZWdhY3ktdHJ1bmsKKzI3MzkwIDkxMzU3MGFiMDczNzQzMzc3OTM2MmU4MTYyMzhkM2E3NGJhNzRlNTMgbGVnYWN5LXRydW5rCisyNzM5MSA5YTlkNmNlNWVkNGUyMjVmYzVjZjNmNzZmYTBmMzk3MWQzYjVlYTZjIGxlZ2FjeS10cnVuaworMjczOTIgYmJmZWY5NDhjNDNlODAwNDFjNTFmZmY4OGMzYWI3MmRkYzE4ZTJiNSByZWxlYXNlMjItbWFpbnQKKzI3MzkzIDc0MzY4OTg3ZjdmMGEwM2RlMTk0NWU4ZjdjZGJmYjFiMDViYzdlNDYgbGVnYWN5LXRydW5rCisyNzM5NCBiYmNlZTc0NzhmY2I4NDA0ODk3NWRkNDRhMWE3OThmMWE3NDRlM2IyIGxlZ2FjeS10cnVuaworMjczOTUgMzRiOGNkYmJkOGZlMzM5NGU1NGViNTg3YzhmYWFlYmNiOGVlNjRjMCBsZWdhY3ktdHJ1bmsKKzI3Mzk2IDliNmQyNTljMjVlYjdlYTYwMWVlNGZjYjkxYTZkZDVjY2IxZDBiNTIgbGVnYWN5LXRydW5rCisyNzM5NyA1YjUwOGNlMDQ5ZjVkMDg1YjM2MTlkZTY1Y2JhNzgzYTFiZDAxNWUyIGxlZ2FjeS10cnVuaworMjczOTggYzRkNjhmODJhNmRkYjgxNjhiODkwZTMzYzczMGI4MDVkNTA3YzZlYiBsZWdhY3ktdHJ1bmsKKzI3Mzk5IGQxMGYxYzZkOWVlOTQzMDY4Mjk1ZTAxYTVmNTAwYTIwNTkxYTE4NjUgbGVnYWN5LXRydW5rCisyNzQwMCBjMTBjMDkxOTJjMTJiY2ExZTFjOTA4NTMxZWJmNjQ4OTQ0NGE2OTRlIGxlZ2FjeS10cnVuaworMjc0MDEgMDdlNzQ5OTM1NzNjNWI1ZWQ1Y2E2NWNhZTJhZGNkMTZlOTNlZGZmNiBsZWdhY3ktdHJ1bmsKKzI3NDAyIDI3NWQwNGEzNTU0MjI2NGJkMjJiM2NkODVhY2Q2OGQyMGNmYjAwODggbGVnYWN5LXRydW5rCisyNzQwMyA3N2E5NmFjNGRkZTRjMDgwNWFhNjE2ZmE5YmQ3MTMzMTAyNzY4NzBlIGxlZ2FjeS10cnVuaworMjc0MDQgZWFlNDk2ZWZhNDYwMTMyNzQ2YzUxM2UxZDhhYzI2NTE5NmYxYmRiYiBsZWdhY3ktdHJ1bmsKKzI3NDA1IDJjMjI0NWFhY2VmODhmYzg1ZTk1ZDBhNDk4ZTE5MTgyNmY2NDEwNmMgbGVnYWN5LXRydW5rCisyNzQwNiA5Mzc3MTU4NjUyZGQwZDRiODZhMWVjMmIyZmMwYjUxYWQ1MGY4ZjRmIGxlZ2FjeS10cnVuaworMjc0MDcgYTNkNjEyOGFmYjJlNTUzMWM5MmQwMTUwNzYzZjZkZDdjMzI5ODc1OSBsZWdhY3ktdHJ1bmsKKzI3NDA4IGE3OGQ0MWVlOTQ3NGY3NjE3NGExY2MyYzE0NWUyNTAyOTZkYjMzMmUgbGVnYWN5LXRydW5rCisyNzQwOSBhZjA1MzJmMjNhYjNmZmZmOWU3MDA0MTc2YWQ1MzllYjBiN2FlNDVjIGxlZ2FjeS10cnVuaworMjc0MTAgNjNmYmJlZDEwNzE0YWE1NDY4MGRiOGY2NTY1YmYwNWQ0MzRmN2UzNiBsZWdhY3ktdHJ1bmsKKzI3NDExIGZlZjM5N2IxYjg1YzNkODlmN2FkNGNjZTJkNjE2MGI1YWNlOWFlOWIgbGVnYWN5LXRydW5rCisyNzQxMiA5MGNjYTg1N2QyMDMyMmExYjI3ZTdmYTllNjhhMmI0ZDYxMmI5MTY3IGxlZ2FjeS10cnVuaworMjc0MTMgNDA0NjI4MmNiMzM4Y2Y3ZTUzNmFhMTI0NmJmY2YyNTM2OGYwZDkzOSBsZWdhY3ktdHJ1bmsKKzI3NDE0IDhlYTg2NTY0ZmIzMjY0MzlmZWVmNmMwYTc5YmE5M2VmNmQ0NDU3NDcgbGVnYWN5LXRydW5rCisyNzQxNSBiYzZhYWU3NGRkZmU1YzQwYjNlNzUzNjYxZTkzNGYxNGU2N2ViZGE4IGxlZ2FjeS10cnVuaworMjc0MTYgMmM3OWIxYThkNjE2NTM5MTUxZjZmZjllYTgyMzJmOTViYmM5NzAwYyBsZWdhY3ktdHJ1bmsKKzI3NDE3IGQ5M2YzNDIwMTUwMzhhNzk4ZjY3OTU4ZDNkYWIwNzc1ZTJlYThjOTIgbGVnYWN5LXRydW5rCisyNzQxOCA3MTg0MGExYmQ4MmZjN2M0NjQ3YjQzYjExYjQyNjgxOWEzZTJkYzNlIGxlZ2FjeS10cnVuaworMjc0MTkgYTkyMjExMmQ3ODBjNTg5N2ZmNDQ1NzBjODM0YTA0Zjk4Yzg3NjJhNyBsZWdhY3ktdHJ1bmsKKzI3NDIwIGNiMTY5OTVhYTdlODA5ZWUyNGU3M2ZhZGY2ZGRlNDQ3MzNjYmQyNjEgbGVnYWN5LXRydW5rCisyNzQyMSA5OTEzY2Y3YzQwODYxZmY0OTQ0Yzk4Y2ZlZmNhMmMyNDhjOGQ4ZjhmIGxlZ2FjeS10cnVuaworMjc0MjIgNjdmMmI0MGJhYjcwNzBhMmRhMDU1YzAxZWIzY2ZlNWU2ZWJhY2VjYyBsZWdhY3ktdHJ1bmsKKzI3NDIzIGU5YTZhMGM0YjMzZjNjOGRmZGRlMTdmZjE0ZTlhMmEwZGYwODBhNmYgbGVnYWN5LXRydW5rCisyNzQyNCBkY2MyYjc1ZDdhNzhjMGY0ZDA0MWI5ZDMyMzZkNjBiY2VhYTY4MzUxIGxlZ2FjeS10cnVuaworMjc0MjUgMTg3MTczMzUyNDM1NDk2NWNmZTliMmRlN2NkNjlmMzYxZDUwNThiNiByZWxlYXNlMjItbWFpbnQKKzI3NDI2IDM3ZmZjZTJkOWMzY2UwNTM2ZjBmNTliOTRiYTY5MTJiZmE2ZjNhZmIgbGVnYWN5LXRydW5rCisyNzQyNyBkMjRjOGM5NDY3NDFiZmI3OTczMzFjOTE2NzdhYTBmZTEyMWEzOTM3IGxlZ2FjeS10cnVuaworMjc0MjggZGQ5ZDJlYzk2ZWFkMGNlNzI0YTM1OGZmNjY2YmU4ODYxZmUwNzUxMyByZWxlYXNlMjItbWFpbnQKKzI3NDI5IGI5ZTBjNTc1MzIzODA4NGI2NWNiODFlZWMyNjEzNWNlZmFkOGVlMDAgbGVnYWN5LXRydW5rCisyNzQzMCAzZTg2M2E2NWIxYTQ0MmNkYzQ2YjM2MTQ2YjAxNGU5OWIzM2I4NmU0IHJlbGVhc2UyMi1tYWludAorMjc0MzEgZTg3ODk3NTFhNWNjYzM2NjUxNDhiZjFiOTkzZTA3MjkxMTcxMzNmYyBsZWdhY3ktdHJ1bmsKKzI3NDMyIDkyODM0YTI0OGMxNWNiZjdlZjNmYzE0ZDg0MThiOGE4MDMyYWU0OGUgbGVnYWN5LXRydW5rCisyNzQzMyA2MGU0MWE1NGU3YjEwOWIyMGJmMDEzMDM5NWUwOWFhOTMxMzI3MjdjIGxlZ2FjeS10cnVuaworMjc0MzQgMmM2ZjkzMWQ4ZGQyNTE0MWJiYTYwZTdiNDM2NzlmY2MzOGI3YzlmYSBsZWdhY3ktdHJ1bmsKKzI3NDM1IGM3OTQzMmZlYjg2MjE1NGFhODZmZjc4MjgwZjQ3NGJlZDYxZjE5Y2MgbGVnYWN5LXRydW5rCisyNzQzNiA1YWY5MDgxYTZjZDQwOWU0YWViMTA4YTMxMWYyYmFiYzZkMzAwMzg1IGxlZ2FjeS10cnVuaworMjc0MzcgMGQ5NzE2YzNiOGVjZjM1Yzk5MjRmZmUzMDQ4NGEzNjZmMmM2ZTBhZiBsZWdhY3ktdHJ1bmsKKzI3NDM4IGIxMjgyNTVjMmJlYTcwNzdkYjMyODllZGEyOGU0NDQ5M2E4NDUwNjggbGVnYWN5LXRydW5rCisyNzQzOSA4MTQyZjhkNjY4YTBmNGFiN2FhZmVlOTBiZWM5YmJiMzE3MjdjZTA3IGxlZ2FjeS10cnVuaworMjc0NDAgODZiMzc2MGQyODVkNjBmNmRjOTIyNmRhN2M4ZGJlMjdmNWVmMDNjNiBsZWdhY3ktdHJ1bmsKKzI3NDQxIDEzMTQ2NDJjYTA5NzZiYmYwZWJjNTYzYmJjYTg0NmNmNTJhODlhODUgcmVsZWFzZTIyLW1haW50CisyNzQ0MiBhMTgwNWE1NDY2NmZiYmZkOTFhMGM2ZjMyOGI1OGUyMTMyZGYwNzcyIGxlZ2FjeS10cnVuaworMjc0NDMgMzJkYjA3NWRlZjNmNTY0YjViNmIxZDAxMjdhZDRjNWQ1MDIxZjgzYSBsZWdhY3ktdHJ1bmsKKzI3NDQ0IDk1Y2NkNWJiZGM4NmQ0ZjI1Y2Q4ZjllOWQ0OTZiMzg3NGYwNTQ5NjcgbGVnYWN5LXRydW5rCisyNzQ0NSBhNTE2MmZkNjVjM2Q1YmIwZDk4NjJiODMzOTU5ZjRhYTliNjYyNDEzIGxlZ2FjeS10cnVuaworMjc0NDYgNzAyYTU5MDBkZjdkNjVmOWQ0MDY4YjI1MTAwODk4NzVjNjhjNjk2MyBsZWdhY3ktdHJ1bmsKKzI3NDQ3IDE4M2ViYTJkMjIxNDBjMWUxZWJhNWM2M2MxZTJkZmRiNmU1OTdhNDQgbGVnYWN5LXRydW5rCisyNzQ0OCAxNTQ0N2E1NTczYmQxMTQ4OTI3M2U1MTQxZTMwMGRlMjMwMDIxNDFjIGxlZ2FjeS10cnVuaworMjc0NDkgODAwOTEyZjdkZjJlMzkyYTA0OGQxNmZiYmQ5ZGNhMzIyNTRjODdiZiBsZWdhY3ktdHJ1bmsKKzI3NDUwIGU2NmNlZDQ4MWM3N2E0YmNiMjU1NDlkOWUzMDlhYWU4NWVjMmIwMGIgbGVnYWN5LXRydW5rCisyNzQ1MSBkNzEyNmMzNDEyOGE5ZDliZDEzMzY2ZjA5MTYwZmI4NGYxOWVmNTdlIHJlbGVhc2UyMi1tYWludAorMjc0NTIgNmZlZDEzNDIyYmIxYWFmZDEyMzk2MTljZmMzNWUxZjczYjFlZjFiNSBsZWdhY3ktdHJ1bmsKKzI3NDUzIDIyZDJmMDM3YWY5ZDNjNGNlYjQzYzZlYzUzNGZkNTBiYjJmYzUyZmQgbGVnYWN5LXRydW5rCisyNzQ1NCA4NmRmYjk2YTE4MzFmZDI3ZWFhM2EwYzMzNDVkMmYwY2YxNTI5Y2MwIGxlZ2FjeS10cnVuaworMjc0NTUgMzU1ZTQ2Y2MxMjRmZjExMTZlNDVjZjAzM2UyZjE0YmNlYTgwOTQ5MyByZWxlYXNlMjEtbWFpbnQKKzI3NDU2IGI3NGQ0YTU5NzkzYWFkNDQ3YjUxNWMyMWM5ZDcwOTZlYjcwZGIyNTMgbGVnYWN5LXRydW5rCisyNzQ1NyBiMTg1Yzg1OTUyZmU4MzhkNzA5YTM2MDVjYjdkNmJmMmFmM2I4YzBiIGxlZ2FjeS10cnVuaworMjc0NTggYmMwMGVlZWYwYWM3YmFjYzA0MzAxNTM2YTAyZWNiYzc2NzE4NjBlZSBsZWdhY3ktdHJ1bmsKKzI3NDU5IDQyOThlMjY5YmQ2NzIwMTA0MzhjYTNjZjg5NTVjMjI3YTlkNjgxYmEgbGVnYWN5LXRydW5rCisyNzQ2MCA0MDI2NTY1ZmE3ZWJkZmYxOTBiMmM1MjkxODFlNTVlODg5ODAzZjA0IHJlbGVhc2UyMi1tYWludAorMjc0NjEgYTJiNjc3YWY3YjI4OWQ2NWEwYzExNTA5MTI4ODRiNzY0NzM2ZGNlZiByZWxlYXNlMjEtbWFpbnQKKzI3NDYyIDY4OTk1ZTg1NGE4OGUzZDVkN2Y3YmRhNzc3NjQzZTE3MDYwZGY4YjMgbGVnYWN5LXRydW5rCisyNzQ2MyBkYmIxNGY4NWFlN2I2MGRkMzI4ZmYxYTZlM2E0ZGE4OWIzNzc3YzkyIGxlZ2FjeS10cnVuaworMjc0NjQgMmEyMDU3NDQwMGFmYjYwODgwYTQ1YTk4Yzg2MmE4YzQ2YTNmNTA3YyBsZWdhY3ktdHJ1bmsKKzI3NDY1IGY3YWJiZDE1YjRmNDgxOWIxN2QwYzg0YjIyMDA3NzlhYzkwNTdiMDAgbGVnYWN5LXRydW5rCisyNzQ2NiBjZmNmYjVkZjZlNjFjYzRiNTBmZTNjNTJiMDc1ODQ5ZDg2NjRiYjhlIGxlZ2FjeS10cnVuaworMjc0NjcgNTE0ODFiMzljZDg2NWMxZTdlZTRiMzIxZWE4MDI4ZmI2OTU0M2FlYSBsZWdhY3ktdHJ1bmsKKzI3NDY4IDBhMThlZjVjYjNlN2VkNzcxOThjNzMwZjJlOWY0MGMyNjM2MmNmMDggcmVsZWFzZTIyLW1haW50CisyNzQ2OSBmOGQ0MWUyNjQ5YjdlNWRlNzdiNjY5MTI3MTdlYjY4ODgyZGVkZDc1IGxlZ2FjeS10cnVuaworMjc0NzAgMjhmMmJhZTEwMzFiZjNmMDg1NTZhMzllMjhmNzEwOTIxZTlmOGZiYyByZWxlYXNlMjItbWFpbnQKKzI3NDcxIDQ2YTg0ZDJmZjRlMmFjN2EwMjhkYzRjMzFkZjFhNDM4MjJhZmZjMTAgbGVnYWN5LXRydW5rCisyNzQ3MiA2Njc2NjIzYjNiNzQyMTkxNmU3OTU0OWZlNzRiZDQzM2EwYTg3MGMxIGxlZ2FjeS10cnVuaworMjc0NzMgOGNlZWU2NjMwMzIyYzU3NTQ1NDM2YzM3NmIwNjEwZjRhODVmYzM2ZSBsZWdhY3ktdHJ1bmsKKzI3NDc0IGY3YzBkNjg3MWIwN2YwMzExZmQ2OTY5NjQwYTkzMjAwYTgxNWRlMTcgbGVnYWN5LXRydW5rCisyNzQ3NSA3MzM2ZjUxZmFhNDZjYjdlMWI1MjIwMzQzYTk1NWU0MjgwOTdkZjUyIGxlZ2FjeS10cnVuaworMjc0NzYgNmNkOTMyZmYwZjA5ZDhjZmU3M2Q2ZGQwZjE1YjczOGY5OTgxMjg4NCBsZWdhY3ktdHJ1bmsKKzI3NDc3IDgwMTYyZGJkNDdmMDEzMmZhNTljOGZkZjIwYzZjYWIzZGViNmU4NDkgbGVnYWN5LXRydW5rCisyNzQ3OCA4MDVjMjI4Y2Y3N2I2ZmZmOTIwYjk4N2E0ZTY0NTMyMjg3NmI0N2M0IGxlZ2FjeS10cnVuaworMjc0NzkgMzRkNzEzNzA5OGE3NTE5NDc4NTgxZTRjMWIwNThkMmNlMTI5NjFmMyBsZWdhY3ktdHJ1bmsKKzI3NDgwIGNiZGJiOTJlZmQzNjlmODQ5N2VhOGE4MjM0MTJmZDliNjE1ZTg3YjAgbGVnYWN5LXRydW5rCisyNzQ4MSBmMzVlMjlhYTBkOTI0YzQyNDViZTQxYjE1Y2FkMjIzOWQzMjg3NjdmIGxlZ2FjeS10cnVuaworMjc0ODIgZmY2ODczZDI4YTE0NjgzZTVjMGZiODQ2N2M5NjY5MGNmODdiMTgxZSBsZWdhY3ktdHJ1bmsKKzI3NDgzIGZhNmJlOWVlNmM5YzRlYjdmZGIzOTVlYzQyMjFjMjJkNjhkNmZmYTEgbGVnYWN5LXRydW5rCisyNzQ4NCAxMzI0MGI4ZjhjYTAxNDFhMmVhZmQ4OTAyNjJmNzc1NzdiOGViZjk3IGxlZ2FjeS10cnVuaworMjc0ODUgMWUwYWNiNDVjYThmMGZjZTFjNWY2NWFkMjFlYTViZDIwZmQwYzNlZiBsZWdhY3ktdHJ1bmsKKzI3NDg2IGYzNmZhMTBlYmZhMGMyNjA1N2VjZTNmN2U3MTI5OGFjZTAyZmI1MzYgbGVnYWN5LXRydW5rCisyNzQ4NyBmMzNiYjljMTMxZjhjY2U1NjQ0ODQ5ZGUxNWQwZDAxNmJiN2FjZTBmIGxlZ2FjeS10cnVuaworMjc0ODggYjUxYTU3OGY1NzY5YjVmMTk5OTk5OGFjZjUwMWI2MWQyYzk3NWYyMSBsZWdhY3ktdHJ1bmsKKzI3NDg5IGJmMzQyMWEyODc0NDZjZDIxNjgyOTgyZjNiZjI3YjBjNjA2NWVlNjUgbGVnYWN5LXRydW5rCisyNzQ5MCBkMzMyNDg0ZTM5NGE4MGI0NmYwZmYwZjY0YjUwYjdjNjRhMDYxMTUxIGxlZ2FjeS10cnVuaworMjc0OTEgYWE2MjE3YmY5Nzc2NDNhYzQ3OGRkMTA4Y2UxYTgzMGU0NDMxNTJmNiBsZWdhY3ktdHJ1bmsKKzI3NDkyIDVkYTYwNWQyYjU0NzdhNDExOTc0ZmVlMjZkODQwZGRiZGFhYWJmYWMgbGVnYWN5LXRydW5rCisyNzQ5MyBmMzgxMTJiODgzODhlNzhmYjM4YjY4ZDk0ZGJkOTRlZDlkOGYzYWJmIGxlZ2FjeS10cnVuaworMjc0OTQgN2RjZWYyZjg3MDY4MjI2ZGM3ZGJhOWIyY2JkYWEwYzI4OTQxOTFhNiBhc3QtYnJhbmNoCisyNzQ5NSBlMzMzOTNjZTRjNTEzYWQ3YzJlYzA3NDVhZmJhMTQyOGZhZTRjMTkxIGFzdC1icmFuY2gKKzI3NDk2IDMwYzdjYzVmMjU4NzNlZjg3M2JhZmYwYTA5YzU2Mjc5NGFhNTExYTIgYXN0LWJyYW5jaAorMjc0OTcgMzNmMjFlYWJjMTU1MDZkZDViZDkxYjYwMTU3YWI3NjUwNWY0NjcwNyBhc3QtYnJhbmNoCisyNzQ5OCBjOTZlNTg0MzhhOWYxNjUzMzhmNzJkNGYyZGQ2ZGViNjYwMGFmMGQ3IGFzdC1icmFuY2gKKzI3NDk5IGY3NGYzYzMxOTA5OTNkYTI0OTZmNjRjYTIxNGNkODlhM2MwZWM0YjAgYXN0LWJyYW5jaAorMjc1MDAgYzQyNjM2MzA2ZTk2YjZkMDg3ZDA2OThjZjVlOTIzOWI5MmQ5M2Q3YyBhc3QtYnJhbmNoCisyNzUwMSAyYTZlYzk5MjIyOGJhN2EzNWYwNGYyMTRmZGYyNWZlMGVmZDM2MjhlIGFzdC1icmFuY2gKKzI3NTAyIDg0NGYxMjlmYTEyODUyODU1NzdjZTQ1NTkwMzkxMWQ4ZDA0NmI1YzAgYXN0LWJyYW5jaAorMjc1MDMgZmRmODBlMDRlNGJiZDEyYTFjMTZiMzNkYjA3NzM5MzI1MWFmOTg5ZSBsZWdhY3ktdHJ1bmsKKzI3NTA0IDMxMTM3NTQ2NGZhYzMzMmFjYzMyMjQ3YzhmMDE4NDc0NDY4NmIwMjEgYXN0LWJyYW5jaAorMjc1MDUgOWU2M2IwZjQwOWQ0YjM2MDY3YjdjMzYxNzU2ZTMxZmQ2ZmE0MTJlZiBsZWdhY3ktdHJ1bmsKKzI3NTA2IDc2ZTlhMTRmYjdjNWEwYWYzYjk2NzlmZTg4ZjRlYjIzNzcwZGRjZDUgbGVnYWN5LXRydW5rCisyNzUwNyAzOTliMDlhMjdhZjMxNGI0NzBiMzE2Mzc5NWYyOWJiM2U5ZmU2NzNiIGxlZ2FjeS10cnVuaworMjc1MDggNzA3YzZmMDI2MTQyYTQwZDZiNWQ4NmQxNmQyZmQ5NGEwOTllOWFjNyBsZWdhY3ktdHJ1bmsKKzI3NTA5IGU1ZWNlZjVhMTIzYWQ4OTBmMzUxMjE2YWM3MmZhYzdmNTQyODExYTMgbGVnYWN5LXRydW5rCisyNzUxMCAxMmYyYmU4NWRhMjU5YTUyNjMwMTliOTRmM2VhNGYxN2Y1Y2M0MmVkIGxlZ2FjeS10cnVuaworMjc1MTEgOGRmYWNiMDZjM2QxYTRmMTAyYWIxYzY4MjIwYmY1ZjEwNjllOTlmYiBsZWdhY3ktdHJ1bmsKKzI3NTEyIDg2NWE3N2NlNDBhOWY4NjNkNzQ0MzJiNmEwMTk5MTNkM2VjNWYxM2UgbGVnYWN5LXRydW5rCisyNzUxMyA3YzFhNzZiNzg3MTIyMmMyYTE5YmQyYWU4ODQxYjA4ZmY0MmVlZDdhIGxlZ2FjeS10cnVuaworMjc1MTQgYTQ4M2M1ZGRiN2YxYjVlNzExMGZiZDliMGVmMTk0NzYyNDFlM2Y1YyByZWxlYXNlMjItbWFpbnQKKzI3NTE1IDE3NmFkNzA2YWZiYzU2YmI3MzdkMzczMmUxZWYyNGFhYWE0MjY2ZDUgbGVnYWN5LXRydW5rCisyNzUxNiBjMzZiZTc5ZmRiZWExNzE2MDNjNDUxOWE3OTFmOTZhNjBjZGVlMGYzIHJlbGVhc2UyMi1tYWludAorMjc1MTcgYWJlZGM1Y2VjYzY0OWQ3M2M5NGZkMTAxOGIwOTAzNDY4NmMwZWM0NSByZWxlYXNlMjItbWFpbnQKKzI3NTE4IDM5YzBiZjIwMWRiOWM0MzFlYTlkODQyM2JhNzc2NjgwOWVhMThiMjQgbGVnYWN5LXRydW5rCisyNzUxOSA0MGJkYTNlMDkwZjY3YmE2ODRiM2Y2Zjc2ZDQzNjUwYTIzMmMxMDc3IGxlZ2FjeS10cnVuaworMjc1MjAgMjFiZDg2ZTAwYmNlYzFiMzM0NjM1ODA1M2IxNDkyYWIxYjkwZGU1MCByZWxlYXNlMjItbWFpbnQKKzI3NTIxIGU5ZTYxMTFiZWVjMTcxOWU4ZmRkNTk0ZDRlMTIzMTMxODQ5OWI0YWMgbGVnYWN5LXRydW5rCisyNzUyMiBkN2Q4MTZlMWY1MjI2NGFhODQ5ODJiMTFmM2ExODMwNDBlNTA5MTlhIGxlZ2FjeS10cnVuaworMjc1MjMgNzE4OTA5MTIxNzM3MWJmNGJkNzg4MjIyYzllZGJhMzQ1NmU3ODZiMyByZWxlYXNlMjItbWFpbnQKKzI3NTI0IDY5ZmQ4MjY1OGJmYjMyNzQ4MTk1NjczNjRhZTZjMDFlZmMxMTQ4YmYgbGVnYWN5LXRydW5rCisyNzUyNSBiZTAyZDUxNGI5YTY2OTZjMjBjN2JmYjNlMTdjOWUxNWE4NjQ5MWQyIGxlZ2FjeS10cnVuaworMjc1MjYgNDgxMDgwZjcxNDM5YWIzMmJlY2I5MDZiYTBiOGNmMGQwZTllZmQxMiBsZWdhY3ktdHJ1bmsKKzI3NTI3IDdiY2Q4MTc3NjI4ZjM1YWE2YTM5NjhhODNkMDE4NmM2OTkyMzE5MWIgbGVnYWN5LXRydW5rCisyNzUyOCBlYTAzODQzNzU0YzAwMjRlNzQzZWQ5MjUyODQwNjY3N2UyNzNiZjg3IGxlZ2FjeS10cnVuaworMjc1MjkgNTYyZDdmOGE4MmExOWJiMzJlMWRhODNmMTQ0MzI1NTBjNGNiYTJkMCBsZWdhY3ktdHJ1bmsKKzI3NTMwIGJiN2MzOTZkZTNhYmE3ODBhMTBhMjM5NjhkYjU3NjM2ZDM0YWIwODUgbGVnYWN5LXRydW5rCisyNzUzMSBhNTlkZjJmYTRlYzhhZmY0NjY4MzkwMzhhNjU3Mjk4ZTdkMzIwYzVjIGxlZ2FjeS10cnVuaworMjc1MzIgMjA4ZmIxZDYxMTQ4NGU3MTFjMDRmZjI1YzdkZmEwMDBhZjQxMDk4NyBsZWdhY3ktdHJ1bmsKKzI3NTMzIDk0NTZhMmNjZGE2MTBhMWRhNGRjZWZkYTQ3Mjk3NjJmN2FmNWZkYWQgbGVnYWN5LXRydW5rCisyNzUzNCA0NGMxOTY5OWZhN2VmOWRkM2YzMjkyYzlkNjhkMDkyNDA3MjQ1OTkyIGxlZ2FjeS10cnVuaworMjc1MzUgOWRkZWQ2ZjE4ODE5MWQwODc0NDQzMmQ0ZDg0MzQ4YjJjN2I0Y2ZkYiBsZWdhY3ktdHJ1bmsKKzI3NTM2IDIzM2E1MGUxMGU2NmJhNGNmMDM1ZGZkZjc5NjJlODMyMGJhMWNiNDUgcmVsZWFzZTIyLW1haW50CisyNzUzNyBjYjcyODE0MWFlMTJhMjUzY2Q2ZTViNDEzYzUxMGYxZGM1MGM0ZGFiIGxlZ2FjeS10cnVuaworMjc1MzggNjM3ZGZjZDk2M2I5ODMyYTRiODUxZGQ3ODA1MGQ2NjIzNTQ3N2ExMSBhc3QtYnJhbmNoCisyNzUzOSBkNGQ1YzM0MGUwNTQzODJiMDc4ZWQyOGJlNzAwM2YzNzJiYjg0MzcyIGFzdC1icmFuY2gKKzI3NTQwIDIyYjIxMmRkODZjMWRhM2M1ZGJkNjY4ZmRiYWYxNTkwYWExMTkyNWMgYXN0LWJyYW5jaAorMjc1NDEgZmQxNzM5NGY2ZGNlZTFiOGYyNzgwZTA0NDBhNTY0NWM2MGEwNjhmNCBsZWdhY3ktdHJ1bmsKKzI3NTQyIGU2ODVmMzJkODA2ODhkMThhOWFkM2MzMGVhOTM2OGJhNDAyNTg1NDMgbGVnYWN5LXRydW5rCisyNzU0NCA4ZWUyYWI0ZjJhMmQ0OThlMmEyMDdiZTQ4NjIxOTM1ZGFkNDVlZWEwIGxlZ2FjeS10cnVuaworMjc1NDUgYTM4N2Q0ZTUzOWMyZDgyZTdkYmFlM2JhNzk1YmQ0MDJkZGI5ZmU3NCBsZWdhY3ktdHJ1bmsKKzI3NTQ2IDc4YWIwODZhMzU0ODQ2ZmNhODg1NDdkODZiZTlkNjU3NjY0YTcyODkgbGVnYWN5LXRydW5rCisyNzU0NyAwOTU0MjZhZjRhNDI0MDY2NDY5MjIzNTI3MmYzZmEwZDgwYTlhODI2IGxlZ2FjeS10cnVuaworMjc1NDggODBkYTk1MWM4OWZiZTE0MWUxNzQyMDE5MzUyMTAyNzljYWRhMzZiNiBsZWdhY3ktdHJ1bmsKKzI3NTQ5IGQzZTQ5MGE1MTQwOGI4OGZiODg5YTQ1ZjNkYTNjYTQwODk3ZmI3ZDYgbGVnYWN5LXRydW5rCisyNzU1MCBmZGQ4MzY1NzUyNDhmODY5ZGY4M2MzOGJjZGNhYjM1YzIwZDFlM2NkIGxlZ2FjeS10cnVuaworMjc1NTEgYzMxYWZlYTg4OTM0ZTA2NDY4MjEzOTJiZDI2N2IyZDUxNWNkZTI4MyBsZWdhY3ktdHJ1bmsKKzI3NTUyIDBjYWI0ZTRmZGNmMzgwYzYxYTFkOTkyZDRkMDdiYTRmNzBlMTJiMzUgbGVnYWN5LXRydW5rCisyNzU1MyA1ZTRiOGQxZTlmZDZiMmI5N2QwYmU0MGY1NzM0MzNhM2FmNmI2ZjM2IGxlZ2FjeS10cnVuaworMjc1NTQgMzcxOTU0Nzg1NzM5ZjU3NDYzZDg2M2M3Zjk5OGI4NTQ5YzBmZDBiMiBsZWdhY3ktdHJ1bmsKKzI3NTU1IDJhYmY5ZTk0MDI3NGYwOGZjNDVlYThlMTFhZTZkMWYzMjljMmZkZGYgbGVnYWN5LXRydW5rCisyNzU1NiA0M2ZiYzY3Mzc0YTU3YjZlZjY2MDM3NDdlNWJhN2E0ZGRmMmYwM2IyIHJlbGVhc2UyMi1tYWludAorMjc1NTcgMjVmZTNhMGE4MGZiODYyMzhjYWRhYzcwMjk4NWUyMjdlY2U4YTgxZiBsZWdhY3ktdHJ1bmsKKzI3NTU4IDk4YWQ3NzJkZWZhYWJiYzIwNmMzOGViOWQ2YjhhZmYwNmYzYjRiNGUgcmVsZWFzZTIyLW1haW50CisyNzU1OSBhMDM4YWJkMDhlNGFiNTJiMGJiNGIyYWIwYzg2NGY1YTQ4YjVhYjU0IGxlZ2FjeS10cnVuaworMjc1NjAgYzg5ZDMzM2ZlMGZlMzQ2NzE2NTc1ZDgwYTQ3MjI5MmMzYjY1ZGY2YSBsZWdhY3ktdHJ1bmsKKzI3NTYxIGI5OTNlNjUxZWI3NDVmNzg0NmEwMmJjMjc4MDU0ZjA3NWU5YzUyZTAgbGVnYWN5LXRydW5rCisyNzU2MiBjYjczZTg5MWQzZWUzZjYwYjI5NTZhOTBiYjllMTBkMDhkM2YwMDQ2IGxlZ2FjeS10cnVuaworMjc1NjMgNjNhODg3ZDhhMWUzYTUxOTNhMjdmOTczMjEwMjc2NTg0Y2U0ZDViOSBsZWdhY3ktdHJ1bmsKKzI3NTY0IDVjMTUxZDk1OGZjMTQ0MjExM2M1MjFkMjI0ZDZhNmQzYWIzMDYwY2EgbGVnYWN5LXRydW5rCisyNzU2NSAxNzIzYmNkYzFlODU0ZTg5MWI3OWQ1NzE1MTU3NTdkZDUxMGE0YmYwIGxlZ2FjeS10cnVuaworMjc1NjYgYzRkY2I4MGY0OGVhMTU4ZWUwNTU0NGE0OTE3NDU3NmY5ZjY3OTEzZiBsZWdhY3ktdHJ1bmsKKzI3NTY3IGEzM2YyZGQ0NjQ0NGI2N2QwOWNhZDUyMTZhMWJiOGE0OGI2YjdlNjYgbGVnYWN5LXRydW5rCisyNzU2OCBiZWM1YjY2MTA2MjI5YzcwYTg5NTA2OWZhMzRkODE2NjcwMjI2Y2Y3IHJlbGVhc2UyMi1tYWludAorMjc1NjkgOTgyYTkwYTRkNjdiODNlMzhiYTJiY2UzNzczNDgyNzVkY2FmZjZhYiBsZWdhY3ktdHJ1bmsKKzI3NTcwIGRjMjBjN2ViNDM0ZjUyMWFlNjdhYzlmZDhiYmI5Zjc3Mjc3MjRjNWUgcmVsZWFzZTIyLW1haW50CisyNzU3MSBjY2U5MzE2YTYyZjg4Njc4YzUwMWUzZTBmMTUzYWViZTFmNTBhODIzIGxlZ2FjeS10cnVuaworMjc1NzIgYTJiY2IwMGRjYmQ1OTViMTE0OTVjMTM3Zjg2ZjQzYTkyNTA3ZmIzMiBsZWdhY3ktdHJ1bmsKKzI3NTczIDdiNWU2MTM3M2Y2ZWRjOWJkNTAwNTk4YjM0NTc1YzUyMDBiYmU2ZGYgbGVnYWN5LXRydW5rCisyNzU3NCBiOWYyM2UyMjUzZjg4N2MyODg1MDQ2Mjk4YjFiN2RlZTVjMzNhY2JiIHJlbGVhc2UyMi1tYWludAorMjc1NzUgNmViNzRlODNhNmYxMWE0ODM5NTA5ODM2MDU3NDY0ODEwMjJjMzk2NCBsZWdhY3ktdHJ1bmsKKzI3NTc2IDA3ODA5ZjZhNzk2OGIyN2RhZmY1MDY3NDVmZGI2ZTYxM2Y2ZTQ4ZmYgbGVnYWN5LXRydW5rCisyNzU3NyBiZjY0MDE4YTY0ZmY0Yzc1NGNlMTAzZjBhYmI1ODQyN2E0OTg3N2E4IHJlbGVhc2UyMi1tYWludAorMjc1NzggNWNjYWFhZDRmMzNiMWJhZmM4ZDYzMWZmYjk1ZWNhYmMzZmQ3NDllMCBsZWdhY3ktdHJ1bmsKKzI3NTc5IDNkMWYzYjdhZGUwNzM0MzM5NjM3NWFkNmY0MWVmYjA1Nzg3MTI1ODggbGVnYWN5LXRydW5rCisyNzU4MCBmMDI1OTllYzVjYjkzMTA2ZjNjMzIyN2EzMGEyYTdkNzBiMDQ3ZTk2IGxlZ2FjeS10cnVuaworMjc1ODEgOTkwZmMwNGNmMGQ0MDAxNDE1NTE1ZTlhNTY2NGEzNjhiZGVkNmI1NyBsZWdhY3ktdHJ1bmsKKzI3NTgyIDBiNmEyYWU3MDZlMjFhODc2MWE2NGQzZjU0NzQ5MjRmNzI0ODk0YjEgbGVnYWN5LXRydW5rCisyNzU4MyA3NzRkYzA3ZjFjMTZlMjM5NmUwOTQzMzFkYzZjMTAxYTMzZDc5YTAxIGxlZ2FjeS10cnVuaworMjc1ODQgOWRlYmEzNWU2MjRjYmY5NTIyYjY2N2FmM2Y0YTE0ODM3NTc1NzZlYyBsZWdhY3ktdHJ1bmsKKzI3NTg1IDA4MjAyM2MyMGNlZjIyNTA1OGUwYTVhN2ZmODMxZmNjMDhkNDNjMmIgbGVnYWN5LXRydW5rCisyNzU4NiBlNDhhNGIwYmRiYjU1ZGE0OTZkZDVmNGEwMzJiNmU4NWU3MjRjZTc1IGxlZ2FjeS10cnVuaworMjc1ODcgZjIwMTJkYjE2MTZjM2U1NjkyNDcyMTU0ZWI4YWM4ZTM4NzA1MzU4ZSBsZWdhY3ktdHJ1bmsKKzI3NTg4IGZhOWFmMjQ1Y2ViNGVhZDI1NjVlM2ZlOWQ0MWNkYTJhYmY3YzA2NmUgbGVnYWN5LXRydW5rCisyNzU4OSA1NjFlMzNhNmEzMTM4NDE3YzZkOTgxN2E4YTM2MGVlZWMyYzA4Yjc3IGxlZ2FjeS10cnVuaworMjc1OTAgZWZhYmMxNTExZGMyNzFlYzA5N2I0NjlkY2ZkY2Q3MTA2ODI4YjZjNCBsZWdhY3ktdHJ1bmsKKzI3NTkxIGE1NDY1OTM5NjhkNjRkZjQ2NTlkNzYyNzUzOGM0NzliYWY4YTZmZGYgbGVnYWN5LXRydW5rCisyNzU5MiAyNTM2N2M3YzQwYTRjNmRlNTQwODE5MDg5MmFkYzIzNDQ1ZDIxNGRkIGxlZ2FjeS10cnVuaworMjc1OTMgMDZlZTg2MmQ5ODE1NDM0NDk1Mjk2MzQ4NjcwODg3Yzc5ZmIzNWRhMiBsZWdhY3ktdHJ1bmsKKzI3NTk0IDI5NmRkMzI0MjVkNmE3M2Y0ODlkNDllNDc5M2VkNWVkN2ZlMGMwMDggbGVnYWN5LXRydW5rCisyNzU5NSAwODY3ZGE1ZTg1NDg5YWM4NTVmOTcxN2FlMWQ5Mjc0ZjcxMmMxMTI1IGxlZ2FjeS10cnVuaworMjc1OTYgZjBhMmVjNzhiZDA1YzM3NTdhZTA0M2NhYzUxM2E4MjllZTRjNzA2NiByZWxlYXNlMjItbWFpbnQKKzI3NTk3IDE2MzE0ZmY1OGVmNDgwNTJjNWMzMmU2OTBhMWE1NGRjNTdlMzliMjQgbGVnYWN5LXRydW5rCisyNzU5OCBjOGExOWE0MjgzNTg0YmI5YmNlYWVhMGUyNzE4NmJiMjY3ZmIzNTdjIGxlZ2FjeS10cnVuaworMjc1OTkgNDk0YThiZWI0NTgyNjVhMWRiYTU1MGFhZTJhYzJjYjg0YTk3ZmQwMiByZWxlYXNlMjItbWFpbnQKKzI3NjAwIGRmZDg1ZTkwMjNmY2JjNDk2YjliZTRlZTRkOTVlMGU0YjBkM2RlYzIgbGVnYWN5LXRydW5rCisyNzYwMSBkYWE1YjE0NDkyZWU5MDlkYTJlZDFhMjkyMjg3ZWU3NTQ3NmZlODYwIGxlZ2FjeS10cnVuaworMjc2MDIgNzZhZjhiMzA4OTRhN2NmOWYwNTM0ZTUxMTc0OTkwZGM3ODIwOTNlZCByZWxlYXNlMjEtbWFpbnQKKzI3NjAzIGFkNWYzYTA1MjZkMWY0M2U3ODE0MGZiMGMwOGRkMGMzZjRjNGQ2YTcgbGVnYWN5LXRydW5rCisyNzYwNCA1NjU3ODFlYTEzN2JlMmJkYzUyOGMzNmI1Yjk1YmNiYmY3NWIzODU1IHJlbGVhc2UyMi1tYWludAorMjc2MDUgNDJlZDAyYWZhNjNiZjc2YjZmYjRkZDU1NmI3OGMxYTJkYjc5Mzc2YyBsZWdhY3ktdHJ1bmsKKzI3NjA2IGIzNDcyMzM3ODNlZTM5M2JjZWM1YmJlODc2M2ZhYTY0NzY1MjY3NGIgcmVsZWFzZTIyLW1haW50CisyNzYwNyA5YmVhMmMwYzgzOGU2YzY3Nzg0NjRjOGFhM2NiMGZlZDJjYzAwYzUzIHJlbGVhc2UyMS1tYWludAorMjc2MDggNjJkOGY5NzQ4MTFmMWE0NjI2ZTk3ODFlNzk0YmUxZmIyMzMyNmQwNyBsZWdhY3ktdHJ1bmsKKzI3NjA5IDhhNjdmMjhhNDJhNWRjMThjZjUwMTZiOWYyZTJmNzUzNmYzY2JlYzIgbGVnYWN5LXRydW5rCisyNzYxMCA1YjY2ZTYzZDdhYmI3MGQ0ODRmMzhjZTkwNTRiMGI1MDY4NTQyNTBhIHJlbGVhc2UyMi1tYWludAorMjc2MTEgNDBkOTY0OTNhNDI5NTFiZjliMjY2NWYxYTc0MmJmMmQxYzM3YWM0NCBsZWdhY3ktdHJ1bmsKKzI3NjEyIDI4NjBiZTI0NDI2M2U0MDQ5NzRjN2Q3OTQ5OWRmNDMwMzM1YTkwMGIgbGVnYWN5LXRydW5rCisyNzYxMyBiNjIxMzg0M2Q4YmVkMDBlZDAyNjMxYzIxM2ExZWRmZGI1ZTI1ZWI2IGxlZ2FjeS10cnVuaworMjc2MTQgZTA2YjFhYjBiZGI4MGMzNDg0YzFmODQ4MWYwZTRkMDI0YjQ4MmZhMiBsZWdhY3ktdHJ1bmsKKzI3NjE1IDExYzQyNTM2OThkYzczZGNhNGY1MDg2YzhlZjEwNWNiN2Y3NmZmZDQgbGVnYWN5LXRydW5rCisyNzYxNiBjODkxN2I1OWMwNjU5YWEzOGY1M2Q4NjI3MDc3NzgzMDgwMDFkZTYyIGxlZ2FjeS10cnVuaworMjc2MTcgNzNhODg0NDg3YTc2NjgwYWIzYTI2YTg2YmQwM2I5YWE5OTRjMjA4OSBsZWdhY3ktdHJ1bmsKKzI3NjE4IDJiZTYzZTIwYTQ5ODJkNWFiNzQ5MWU4ZjJjZWZiZTZmYjU0MjVjY2UgbGVnYWN5LXRydW5rCisyNzYxOSAwNTk3N2M1Zjg4MGNmOGExY2NjOTBmNDYwMzc0YWM0OGEzODUxOTI3IGxlZ2FjeS10cnVuaworMjc2MjAgMzg5NWI3OGQzZWUwY2VjZjVkODJlODY0ZGMyOGEzMWMyNzUxMGMyOSBsZWdhY3ktdHJ1bmsKKzI3NjIxIDUxY2RhNmU4NzY0YTZlMjJkNTczMmM2YzBiMmRhYjQ4MTM2MzE1M2QgbGVnYWN5LXRydW5rCisyNzYyMiA5ZWFmYjRjZWE0N2E1YzkwMDNmNmJiMDhkYWJjOGExODExNTM3NWYyIGxlZ2FjeS10cnVuaworMjc2MjMgZmMyN2ZmZTIwMzZhYTEwZmU3MmViYzY2ZWVkODUyY2NjMjI1YzZmNSBsZWdhY3ktdHJ1bmsKKzI3NjI0IGEzZmMxZDhlMGFlODFlNGEzZmQyMGVmOGJmZGQwMWIwMzczNzI0YjYgbGVnYWN5LXRydW5rCisyNzYyNSBjNDIzYTg4YjIyY2VkMzQ2YThjNGMzNzhmZjdhMmRkZmU4MjllMTI0IGxlZ2FjeS10cnVuaworMjc2MjYgZGE0YzcxMjAxNDNmMDhkOTMzODUxMjQzOWZlYThlZmIyZDQzM2VkYSBsZWdhY3ktdHJ1bmsKKzI3NjI3IDUwNDQzMTI3YjIxZGM0OTcxODIzNGMyNGFkYjg1NTUyZWJmYzgxYzkgbGVnYWN5LXRydW5rCisyNzYyOCA5YTU4ZDY0ZjhmYzNmZDUyNjRjNjgwYWEwMGNiMzcxYjEyOTUxYzQ5IGxlZ2FjeS10cnVuaworMjc2MjkgNWQzZWMyOGU5YTdhZDNlODBjYTI0MjZmZTA2OTIxZmU4YmM3YWZkMyBsZWdhY3ktdHJ1bmsKKzI3NjMwIDMwNTQyMmQ2OWQzMTMzMmRhOTkzMWQ1NGEyY2UzYjIxMzUyNTExZjUgbGVnYWN5LXRydW5rCisyNzYzMSA0YTdiM2JhYzM4MTI4N2IyNDE2Y2Y2MTM3NDY0ZTlhMjI2NjMzNjcxIGxlZ2FjeS10cnVuaworMjc2MzIgODA0ZWE1MWNmY2U2ZTJjMDMyMTJiNTNmOGU4NDcyNGE0NTYzODNkNyBsZWdhY3ktdHJ1bmsKKzI3NjMzIDdkMDk4MjA1NmY3MmI1N2Q4N2E5MzVhY2I1N2MzZGZmMmM4MzdiZTQgcmVsZWFzZTIyLW1haW50CisyNzYzNCA1NTQyYmYwYmJjZTIzY2I4YmEyZDIzMWQzOGVlMGY0ZTNkYjFmNWZjIGxlZ2FjeS10cnVuaworMjc2MzUgNjJmNGI0NWIwNWZkZGExM2I5NDQwMTk0ZDc2YTE2YzIwZjFiMDhjNSBsZWdhY3ktdHJ1bmsKKzI3NjM2IDgzMTIwZjVhNDhjMjEzOWVlZGJlYzgxNDVjZWI5ZWU1OTNjZWFiYTUgcmVsZWFzZTIyLW1haW50CisyNzYzNyA0MWM1NGIzN2UwMzA4ODQ3MmFiN2FmMDE1ODQzNzMxOTcyNTI5MzE3IGxlZ2FjeS10cnVuaworMjc2MzggODhjZDI3ZGI3OWI5M2YyODU1ZjBlZmViODU4MzY4MTI2MmVlYjNjNiByZWxlYXNlMjItbWFpbnQKKzI3NjM5IGE2NzE3Mjc1MTk1YzkyOTAzYmNlNjBjOGY2ZWMyOGVhMWVkNmYwZGEgbGVnYWN5LXRydW5rCisyNzY0MCBlYWM1NGE4MzI3MmY0MjAwZTlkYWUxZjJhNTVkN2EwMWQzZWRmNDA3IGxlZ2FjeS10cnVuaworMjc2NDEgMmY2MGY5MGNlMzA5M2RiYjE1OTcxMzc2NDY0YWE3MDkzYmRkZGYxMiBsZWdhY3ktdHJ1bmsKKzI3NjQyIDZhYTJkMDllMzJjMTNmYjU2Yzk2ODFiZWYyMTYwNDc0MmRiYTgzZDAgbGVnYWN5LXRydW5rCisyNzY0MyAyN2U5NGNhY2I0M2JkNmMzNGZhZjU2MDBjZjA3NTBlMTNhNWI3NzBjIGxlZ2FjeS10cnVuaworMjc2NDQgM2I1NzFlMzJhNmU0NWZiODI1YmJiNjlhOTYxZmIyMGQyZTUxMGFlYyBsZWdhY3ktdHJ1bmsKKzI3NjQ1IGU2MDMzMjU0ZGYyMTQ1NWI4ZmM0MTQ1ODUyOTNlNTI2ZTQ2M2NmMGYgbGVnYWN5LXRydW5rCisyNzY0NiAxOGMxYjI5MGU0ODQyOTc0NzIzZjMxMjZjZDRmY2VmZjI1YTIyMjdhIGxlZ2FjeS10cnVuaworMjc2NDcgNGE1YzZmNjk0NDdkNmI5ZmY3Nzc4YjIwYTVjZTAyY2NjNTkwMmQ4NiBsZWdhY3ktdHJ1bmsKKzI3NjQ4IGQ5OGIwY2RmN2U1MWI2YTE5MGZhNDAzNDNiM2E4Yjc5YzEyMjRjOTAgbGVnYWN5LXRydW5rCisyNzY0OSA3NmNkMjg2ZTdkZTVlNzc5NWI5MTkzMDVkOWJiNmYzZWQ5NzRlYWFkIGxlZ2FjeS10cnVuaworMjc2NTAgM2EzZTA3MWQ4NGY5ODVmZGMyMzk5NTYwN2Q3OWNhZTZhMGZlNGZhOCByZWxlYXNlMjItbWFpbnQKKzI3NjUxIGQ3MjM3MDM3ZjM3OTRkOTI0NzQxZmY5OGUzODQ4ZjczMDFkOGFlNTkgbGVnYWN5LXRydW5rCisyNzY1MiBhNGY0Y2U1ZThhYTk5MTRlMzIzMDdmNTg4Zjc4MDVlYjBjYzUyOTUyIGxlZ2FjeS10cnVuaworMjc2NTMgZDFiMmJmZDkzYTI3MDg5NTBjYTBjZTZkNmIzZjczNWIzOWRmYjcwMCByZWxlYXNlMjItbWFpbnQKKzI3NjU0IGMzY2YyMjMzOGUxY2U5NDcyOGZmZDdjNDg5NGFlNTQxNjYxODM4ZGEgbGVnYWN5LXRydW5rCisyNzY1NSBjMzIwYTA3ZjAxNDY3MWEzZTMwYThkM2MwMTMyODlhMGNjNjM0Nzc2IGxlZ2FjeS10cnVuaworMjc2NTYgMWNlYmNlNTBmZTcxMjI0ZDEwOTRjNjVkYTBhMzQ5NTk3ZWJmODliMiBsZWdhY3ktdHJ1bmsKKzI3NjU3IDk5ZGE5MzY4M2VhNWIyNTQ4NjBlMTYxM2YxOTBhMDQ5NGQwZTM2YzkgbGVnYWN5LXRydW5rCisyNzY1OCAzNTI5YWQyMTM5NTU5NDNkMzQ1OGExMDI5MjI3NmI2NWFlN2Y1MTUxIGxlZ2FjeS10cnVuaworMjc2NTkgZWIwNGYxN2NjMDA4Y2E3NTMzZDc0OGQzN2E1M2RiMGY5N2U5OGE2MCBsZWdhY3ktdHJ1bmsKKzI3NjYwIDcxZjFmMzVjMDM1NzM0NzZlYTM5ODMxMzU0NjdmMDQwN2RmMGQwMWYgbGVnYWN5LXRydW5rCisyNzY2MSAxYTcwM2Y5YmJkYzBmZWRjYWNlNDc5Zjc1NGZhMzE5Mjg3NmRmMzI1IGxlZ2FjeS10cnVuaworMjc2NjIgMTU5OGExZTQ3M2UyNDc5OGZkNTlhY2RiMTQzYmM2MTY3NjgzMTQ1OSBsZWdhY3ktdHJ1bmsKKzI3NjYzIDgxOWM4MDMzNzA1Yjk1NGY1NTZlNzJmZWFjMjM1ZjdhMTBkOGMyNjUgbGVnYWN5LXRydW5rCisyNzY2NCA5NzA3ODZkMDJlODA1ZGYxN2Q0ZDliNjQ3MDc3YzRjYTFkYmY2NGU5IGxlZ2FjeS10cnVuaworMjc2NjUgYzBhNjdhMWNhYjA5Yzk3MzdjMjFlN2EwNzQzMzRlNWZlMGU0MDhiNyBsZWdhY3ktdHJ1bmsKKzI3NjY2IGQ4OTA5NzkyMDA1YWI4MmVkMWJjMmIxMzEwZmRkYWY2Y2QxODRiMmIgbGVnYWN5LXRydW5rCisyNzY2NyA0NDUyMmE3NWRlZWNlYTk0NGM4MzJlZmU0ZDM5ZDY3MTExYjIxOTAyIGxlZ2FjeS10cnVuaworMjc2NjggNGU4NTMwNmE5YmJmYTgxZWM1YmU1ZjM4NmIxNDMyODFkMmVjODYyOSBsZWdhY3ktdHJ1bmsKKzI3NjY5IDE1NzZhMmRmZjAxZjhlOThhMjU1YTFlODdmNTYyNTNmNGQ1NTM0N2UgbGVnYWN5LXRydW5rCisyNzY3MCBkODE0YTczMTkyNGEzMTVlYTU5N2VlMmRjNGRmNGQzOWNhYWIxODE3IGxlZ2FjeS10cnVuaworMjc2NzEgYjU5NjJiNTg3Y2MwOTI5ZWExY2ZmNGQ1ZWVhZGMwMjdiMTZkMDE3ZSBsZWdhY3ktdHJ1bmsKKzI3NjcyIDA5ZTRkZTVkY2IzYmFiMWVjZDQ4ZWM1NDhiNDc5MzhjZjZmNWZiNjUgbGVnYWN5LXRydW5rCisyNzY3MyAzY2FjZWYyNDllYjU1MGIyNjMwMjZjOWFkZjY3MTU2ODMzOGYyNGI1IGxlZ2FjeS10cnVuaworMjc2NzQgMmQ0MDc0ODRhNGU2MzM4ZWZmNTQ2YzFkZWM0ZjA1YjkwNGRmZmNjOCBsZWdhY3ktdHJ1bmsKKzI3Njc1IDY0MDM3MGYwOGUyYWYyOTk2N2JhYjg4YWZjNDE0YTZhNGQ1Y2FiY2MgbGVnYWN5LXRydW5rCisyNzY3NiAwYTA4ZWQwNWJkNDI1YzBhMTZhZjcyNTFjM2JjMTgwYTNkNjFkYmRjIGxlZ2FjeS10cnVuaworMjc2NzcgYTI2Y2E4YWIyN2YyYjIwMTUxMmE5ODUxNGYyZWRkYWEzZmZlNzc2ZCBsZWdhY3ktdHJ1bmsKKzI3Njc4IDg3ZTI1MzRlOWQ2NGIzNzA1MGMyNzA3Zjg4MjlkYzU1Zjg3ZjRlYjIgbGVnYWN5LXRydW5rCisyNzY3OSBlNjYyMjI2MjExZTUzOWNhZWRmZDE0YzljZTIzYmZiODQyYzg3ZjAxIGxlZ2FjeS10cnVuaworMjc2ODAgMzc5YjAxZTA3NDIyMTk5MDY5NjNiODJmOWRkMGZiM2MwMzk2MzkyMCBsZWdhY3ktdHJ1bmsKKzI3NjgxIGEwMzI5OGEzYWNhZDE0MzkwOTJlMGY0OTgzMGUwYWM4ZmJlMjI5MmMgbGVnYWN5LXRydW5rCisyNzY4MiA1MmIwOTc2ZTQ4YTFkNmU0OWQ0MDUzYjk4MzdkOWRiNGE3NzhhMjBhIGxlZ2FjeS10cnVuaworMjc2ODMgOWMwMTc4NGNlN2NhYjUxNDMxZDhiOWQ0NTBlYWVmY2JjYzczMGI2MiBsZWdhY3ktdHJ1bmsKKzI3Njg0IGM0YmY0NWNhNGQ1NTY3NjlmMDEyN2NmZTY2OTY4ZDAxMTllN2M1NTggbGVnYWN5LXRydW5rCisyNzY4NSA5MzQzNGJjMDg5OWQ5ZmQ1NGE3OWI4ZTc1MTE5NWI0NDJlNGQwN2MwIGxlZ2FjeS10cnVuaworMjc2ODYgYzkxYjdmMzQ2MjZiOWNkM2U1ODczY2QyYjU0Yzc5MzQ3OWY1NGRlMyBsZWdhY3ktdHJ1bmsKKzI3Njg3IDQyOGNiYmYwNTYzOTA2OTg1MzA4OWM5MDZjN2FmNGYxN2RkYTdhNmQgbGVnYWN5LXRydW5rCisyNzY4OCAxMzI1NzdmNjkzYjFjYzE1OTczMTgxOTRiMWU4MjQ1Mzc3ODFkNWEyIGxlZ2FjeS10cnVuaworMjc2ODkgNDE2NjU0ZTI3ZDg4OTMzNTYzZjJiYjQyNTRkNzRjMDI0OTI0Y2RmOCBsZWdhY3ktdHJ1bmsKKzI3NjkwIDY5MTM0YzYxZjg3YzA2YmMxYWQzODExNDMzYmMyMDBlMjYxNTllNmMgbGVnYWN5LXRydW5rCisyNzY5MSAwOGQzMDdjYmNjZDk1MTIwYWVkOWM2N2I4M2VjYjY1MGFmZDYzNjRkIGxlZ2FjeS10cnVuaworMjc2OTIgNWVkZTliY2M2NTFlYjJmMDE5YTRjYTZlM2U2MjlkZTc2NTVhYzNiZCBsZWdhY3ktdHJ1bmsKKzI3NjkzIGEzNTNkNmE0NTI3NjllYTAyYmIyOTFiODdkNTEwZWMwMGFkY2EyMTAgbGVnYWN5LXRydW5rCisyNzY5NCBjNGIzYTJiMjQ3YWMzN2EzNzEyNWY5N2UyODVmN2UwZDE3MWViMjRhIGxlZ2FjeS10cnVuaworMjc2OTUgNjU4ZTEyY2MwMzM2MmQ1YTY0Mjc3NzdjOGMxNmMzZGJiMzVhYmZlZSBsZWdhY3ktdHJ1bmsKKzI3Njk2IDc0ZjlhMjA2ZDRmMDhkZTEzMjNlMjQ1M2FhYTRiYmQyNzMzNmIwNjMgbGVnYWN5LXRydW5rCisyNzY5NyBhOGRmMGMwYmUyNDIzYWViNmQ2MWZlYWIzNmU0MmM4Zjk2MmI2ZDEwIGxlZ2FjeS10cnVuaworMjc2OTggZGQzODI5MWI4OWZiNTQwMDc1YjlkYzFiYTViMWQ1MjQ3OTJlODliMSBsZWdhY3ktdHJ1bmsKKzI3Njk5IDI5YWU4ZTg5MTUzYmQ2ZTU1N2JkZDk5YmQwZTI3ZDYzZjg4ZDQ5MDIgbGVnYWN5LXRydW5rCisyNzcwMCAxMjgxNWQwNTA4MGNmNjljMmM5YTk5M2U0ZWVjMTk2MDcwNDAyMzk4IGxlZ2FjeS10cnVuaworMjc3MDEgYzQzNDY2ZjdkYWU4NDE2NDU3ZTcwODFhNmI0MjkyYjY0Yjg0MDRkMSBsZWdhY3ktdHJ1bmsKKzI3NzAyIDQ3OGEyZDY0YWM1ODMwOGZhYmY0ZTRjZDc1N2E3MjY0ZmU5NzNjN2MgbGVnYWN5LXRydW5rCisyNzcwMyAzMTIyNzM1M2NiYmNjMDEwYjVkODI2OTYwZTMwNjc0NmQ5ODE3NTFmIGxlZ2FjeS10cnVuaworMjc3MDQgYWZlNDc5YTYyMzVlYzA4NDE1ZTc0NjUzYmJiMDMzNjJkMDI0NGNlNCBsZWdhY3ktdHJ1bmsKKzI3NzA1IGFiMTg3N2E3YjI2MjViZDZjNDZlZmIzMTQ5MGM1NmE1ZWZlMzkyOWEgbGVnYWN5LXRydW5rCisyNzcwNiBkOWFkZDQwZjkyZmYzMmYxOTg0N2RlMzI1YjViZjNlZmEwZGEzYmEzIGxlZ2FjeS10cnVuaworMjc3MDcgMTdkNTI2Mjk3NzU1N2Y3ZTYxODBjZTdhYjE3OWVlYzE2YWU1MGFiZCBsZWdhY3ktdHJ1bmsKKzI3NzA4IGFhNGI5YTdiMzgxN2ExOWU1ZmE1ODQ5MWE5YTAzYWNjMjE2ZTk4NjEgbGVnYWN5LXRydW5rCisyNzcwOSBlYjM5YmE2MGRhZTBjZmMyOTViYzgzY2U4ZDBkNGRhNjVkMGQxZTg3IGxlZ2FjeS10cnVuaworMjc3MTAgZDQ5N2Y1MjNiODJlZDc0YWNhMTI2Mzk5NTE2ZTMzYTFjZmQ4MDhhYSBsZWdhY3ktdHJ1bmsKKzI3NzExIGUzNzUxZmMwM2U2Yzg3ODJlOTc2YmNmNTBlYTNmYjFmOTZmYzFmYmQgbGVnYWN5LXRydW5rCisyNzcxMiA1M2IzMjI3MWU4ZTFmMTZkZjRkOTM4Y2JjYmQ3NDdmMzZmZDhiYTIzIGxlZ2FjeS10cnVuaworMjc3MTMgNjk3Nzc3Y2M4M2NjMGZmMDYzNTg1MTJmYTRmZmU2ZmZkNzFjYzc1NyBsZWdhY3ktdHJ1bmsKKzI3NzE0IDhiNGExNjViYWFlZWRmNjk4NGU0YWMwZWJmMDE1YTcxNzUzNTg2ZTIgbGVnYWN5LXRydW5rCisyNzcxNSBkZGY2NzE2MzM0NjVlNTA2ZjViN2M5NjdhZTFjMWY2Zjk2MjA3YWQxIGxlZ2FjeS10cnVuaworMjc3MTYgMjEzMWJiNzkwYWY5NThjNjUxMzQxNzg1NzUwNGI2MDBhMTQ4NGVkOCBsZWdhY3ktdHJ1bmsKKzI3NzE3IDA2YjlhOGRhZDcyMWIxOTA2ZTBmOWJkYzBmMWYyMTcxMzU4NTgwN2QgbGVnYWN5LXRydW5rCisyNzcxOCAyZjYwMzQ0YTQ5ZTg4Y2U0ZWQ5OTc0MzUxMDkzMTk1MTNmMDU0OTNiIGxlZ2FjeS10cnVuaworMjc3MTkgNDlhM2U4MzM0N2RkZWQwYjA5OTc4NDljZTcwNThiOTBhYTg3NmM5MSBsZWdhY3ktdHJ1bmsKKzI3NzIwIDY3ZWFhYmIwMTdlMGUwZDAxYjg5YWQwZTFlNmI3ZDE0OGYwOTIxMWQgbGVnYWN5LXRydW5rCisyNzcyMSBhOWI4MDljOGI5ZGJhYTNlNDE1ZTE2NWQ2MTZiMzQzOTcxODg2ZDI3IGxlZ2FjeS10cnVuaworMjc3MjIgMTM5ODU5MDE2YjQ0YmI5ZDA2NzI0YjEwZTg4ZTY0MjYzZDZkNWU5YiBsZWdhY3ktdHJ1bmsKKzI3NzIzIDNlZjAxOWNhYWQxZTUxNTA4ZDQ5YjY4ZjA5ZmNhOGNjMTllODhlZDcgbGVnYWN5LXRydW5rCisyNzcyNCAyYWUwMTQ1OTMxZjFmMzA4ZDNkZGIyOTI4ZWVkOGU4MmVhMzNjMDQ2IGxlZ2FjeS10cnVuaworMjc3MjUgZjA5Y2Y4ZWJhN2UyMzc5MGZkMzY1NTY1OGZiZmU5NmVmMjYzMjUyYSBsZWdhY3ktdHJ1bmsKKzI3NzI2IGJiMDY5MmUzMGZjNmIwMWQzYTE1MGNlMGIxY2QzNTFiY2NmYzNlY2YgbGVnYWN5LXRydW5rCisyNzcyNyAyMzJhYjBkNjYzNzUyYmEyZWE2YTExZTEzNDZlMTRmODcxNGYyNWU2IGxlZ2FjeS10cnVuaworMjc3MjggMmRjMjNmMGYzNDIxNWQ2ZjQ2YTM3OTQzNTkwNDIyMmEwZTEwYmEzNiBsZWdhY3ktdHJ1bmsKKzI3NzI5IDQ4OTMwYjAwNDNiNzcyYjhhNjAyOTEzNGM0ZTFkZTZmZDJmMzc4MzQgRFNfUlBDX0JSQU5DSAorMjc3MzAgMTg3YzRmYWRlM2RiM2ViNWY5MTFhNWQ1NjU5OWQxOTE3NTY2NDA2NSBEU19SUENfQlJBTkNICisyNzczMSAzMGQwZDhkYmYyNDQ1OGViMTY4NGQ4YjA2ZTlmMjMyODYxODQ1YTE5IERTX1JQQ19CUkFOQ0gKKzI3NzMyIDdmZWQzNTEzYWJmYTcxM2RlYzE2NmRlOThiY2FkNmM1MTMzNDY4MmYgRFNfUlBDX0JSQU5DSAorMjc3MzMgM2EzYmM3ZDlmMWY1ZTYxNjFjMjA4ZjA5ODM4ZjY5OWJjYTk2MDQ5NyBEU19SUENfQlJBTkNICisyNzczNCA0ZjZlNTZjNDQ3MzlmZTZiOTRmYmM3ZGYzYmU4NTdkMGRhZDg3MDFiIERTX1JQQ19CUkFOQ0gKKzI3NzM1IGQyZDgxZDUzZDRhMTJkZjMwYWNkNjFlZDAzZGJkYTVlNGE1YTU5YzcgbGVnYWN5LXRydW5rCisyNzczNiA4MDhiNGZlNTE4NGZjYWQ3NjVmMWViOWFmYTM5NDk3MDIyODdlMGYwIGxlZ2FjeS10cnVuaworMjc3MzcgYWE1Yzk5YjYxZGY3Nzc0MWFkNjliMmU2OWZkMzFlM2UwZjJiZDc5MiBsZWdhY3ktdHJ1bmsKKzI3NzM4IDEzN2ZkZGU3MDAwNjAxMDJmMjRjNDI5M2Q5YTFlNGZmYjM4ZWQ4NTcgbGVnYWN5LXRydW5rCisyNzczOSAxNTdiYmZiMTdmNDRjZTkyZGJmNmI1OGY3ODIyYmJiNGJjNWRjNWUwIGxlZ2FjeS10cnVuaworMjc3NDAgNTVlYWIxMGU0NzJkMzlmMzg0NjIyYmY3ZGE1YmNmNTExYmNkNzg4YyBsZWdhY3ktdHJ1bmsKKzI3NzQxIGZkYTUxM2I2NzFiNmM5ZjYyYmU2Nzk5NzQ0YTAwOTNjNmVjYzdhNGYgbGVnYWN5LXRydW5rCisyNzc0MiA0ZWFkZjdkZmNkYjRhOGVlZDRkYTNhMTllNzVmNDBhYWYwM2RkMjczIGxlZ2FjeS10cnVuaworMjc3NDMgMTk0MTQwYzgzMjc2MDQ5ZGY1NTU2MmZhNDY1N2QzODk3NGI0MzQ1YyBsZWdhY3ktdHJ1bmsKKzI3NzQ0IGEzNTcxNDM2ODM3YzFhMjQ1ZDIzMDkyYzhlNWNiMTNhMzY4ODNkYjkgbGVnYWN5LXRydW5rCisyNzc0NSAxN2U5NGU2MjM1M2M3MzhkMzc1ZTc2NWZlNzdjMWE5ZDIxZTg0ZjE1IGxlZ2FjeS10cnVuaworMjc3NDYgMzMwOGE5NmI5NzZmNmU4OTUwZDdmNzZlZjI0NjU5OGRhNmZhZjdmMCByZWxlYXNlMjItbWFpbnQKKzI3NzQ3IGYzYzhlM2FmN2I2YmY2MjY3OGIyYTZmNzA1MjNiNGQxNTM3NWUyM2UgbGVnYWN5LXRydW5rCisyNzc0OCAwMjBkOTY2MjUzNTc4NjdjZjYwZjU3MTc5NTI5MDhlOWI4YmMxOWE1IGxlZ2FjeS10cnVuaworMjc3NDkgZThmZDVjYWIwZGIzZWE3MjYwNzVkNDk4YWU5ZWIyMDdlOTRlNTg2YyBsZWdhY3ktdHJ1bmsKKzI3NzUwIDcxM2FkN2UwNDA2YWE2MmFlMzEwZWZjYjA5NmMwYzgzMzM2OWRmMWMgbGVnYWN5LXRydW5rCisyNzc1MSA5NzlmZjVkMGFlMDdhZjU0M2E3NzM3MzY0N2VkZmQ1ZTA5ZjkzOWMzIGxlZ2FjeS10cnVuaworMjc3NTIgYWEwZDJkNTFmYmRlYzExMmFmMzA0MzMyMTY3MTdkY2RkZTVmZDE2OSBsZWdhY3ktdHJ1bmsKKzI3NzUzIGE3MTg2YmI5MTQyYzkyOWVlMWQwMDVhOGFlNmQzZThiMjE3ZjlkNDYgbGVnYWN5LXRydW5rCisyNzc1NCAxMDEyOTA2ZThhZGYwZmM1MTAxYTY0NjVjMGE5ZTUxMDA2YjEzYTk2IGxlZ2FjeS10cnVuaworMjc3NTUgOGQyM2JmYTIwY2RiY2RiMGFhY2EwNDhlNGMyZDdhN2Q3MjkzNDA5ZSBsZWdhY3ktdHJ1bmsKKzI3NzU2IDRhYjRkYWM0NjJmZmRjOTk1ZjNkOTI2NjlkOGNhNzViMDIyNWYyOGIgbGVnYWN5LXRydW5rCisyNzc1NyBlMzYwNWViMmY4NjZiM2I1MzNmOWM1ZDFmN2IxYjdiOTcwMDAyODRkIGxlZ2FjeS10cnVuaworMjc3NTkgZjZlYWE5ZDk5NmVjMjQyYzY1YjZkODY3YzFlZjA3MzA5ZGNmNGMxNSBsZWdhY3ktdHJ1bmsKKzI3NzYwIDQwZTAxNDAxODFjZjg1MDAwYzA1YTExNDU2YTYwMGQ1YTM0NzczNmMgbGVnYWN5LXRydW5rCisyNzc2MSA0M2VlMWMwNzUwYTIzNTU0YmRlNTU0ZmY3M2E3MzMwM2RiOTM5OGMyIGxlZ2FjeS10cnVuaworMjc3NjIgZGZlNTRhZjI5YTQ3M2ZmZThlMzc5ODIzZDMwYjM1NzZhZjU3NmQ0NCBEU19SUENfQlJBTkNICisyNzc2MyA5ZDY0MWNlNjZhZjM1ODIxY2E4MmM1ZjA4ODZhYThlY2U4OGRjM2M3IERTX1JQQ19CUkFOQ0gKKzI3NzY0IGY3OWM3YWFlNjYyMGQ4YjJiM2Y3ODc5OTMwMDYxN2YyZmE0ZGM0NTEgbGVnYWN5LXRydW5rCisyNzc2NSAzMDcwYjcxN2ZjM2Q4MzMyNjZiOGZlOGEzNWVhNGE5NjY3NDUwMWRjIGxlZ2FjeS10cnVuaworMjc3NjYgODljZTYyMTI2NjY0ZjI0YjY0MGJmOWM5NDYyYjgyYWNmMTg0Yzk1MiBsZWdhY3ktdHJ1bmsKKzI3NzY3IGFhOWUwNTQyNzBhMmE5ZmVmYTY2YjllZWFiMjc5ZGYzZDUzNTc3N2IgbGVnYWN5LXRydW5rCisyNzc2OCBlYzJjODU0YmQxOTZkM2FjYWM0NzRjMzMwNWNkNmJlMTE1N2VlYzJiIGxlZ2FjeS10cnVuaworMjc3NjkgYzlkZTU1ZmJiMmIxZGVhN2NlZmQxM2VkNmRjYzQyZTI3NjFiZjJmYyBsZWdhY3ktdHJ1bmsKKzI3NzcwIGUyZDQ2MWJlZmM3YThjNWIyMTc0YWY3NzBlMzlkMWY1YmI0MDQ2OTIgbGVnYWN5LXRydW5rCisyNzc3MSA2NzI4NDNlZTRiNjFmYjM5MWEwOGYzYWE1ZWM1ZTY5NzlkOWE4NWEyIGxlZ2FjeS10cnVuaworMjc3NzIgZDhhNjgyZDRjNjkyNDA0NzAwNmM5YjI0OGNiMzNlZDIzYjIzNmY3NyBsZWdhY3ktdHJ1bmsKKzI3NzczIDQxNTZiZjliMDA0M2MwYjc4YjlmYTA0NDNkZjA2Y2M1YmY3OGZiNGMgbGVnYWN5LXRydW5rCisyNzc3NCAzYzQ1ZGNkMDEwMWRlZWJlZTk0ZTBmODhjMDQxNDIxYjNiZWQ1NWQ3IGxlZ2FjeS10cnVuaworMjc3NzUgNjY3MzE3MWZjMzdlYmYxYmUxODU4YjhkMGVjMmY1ZjYxZTM5NmQzZSBsZWdhY3ktdHJ1bmsKKzI3Nzc2IGRiZGFkYTk2Njg1ODJkZjE0ZGNjZTczNTU3NDU4MzIzN2FiYWVhY2UgcmVsZWFzZTIyLW1haW50CisyNzc3NyAwZTI3YjY3MjQ3ZGFhNGIwZjBlYTQ4NGM0NDI5ZTBhY2Y1YmU0YjcyIGxlZ2FjeS10cnVuaworMjc3NzggYjQ1ZDFiMzA0MGFlZjAwZjc1Yzk2MjU3NTMzNGQ0NjhjYWZhYjYyZiBsZWdhY3ktdHJ1bmsKKzI3Nzc5IDNhYWFkOWRmNzExZTQzZTRmZTkyNGVhMzlmZTI3ODU3OTVhOTNjNzYgbGVnYWN5LXRydW5rCisyNzc4MCBlYjc1OWRhMDY0YWE4NWRiODYzYjY5MzM1MzdhYTMwYzIyMzZkODdkIGxlZ2FjeS10cnVuaworMjc3ODEgYWM0OWIyODA3Yjc1MGQ0Nzk3OGYwODkyNDU5OTBkNmY0YmZkZjIxNSByZWxlYXNlMjItbWFpbnQKKzI3NzgyIGI4ZTM1OTZjZWJkN2QzNDRjMDc5MjBjMmU1MTFjZGIxYzQzOTExZmUgcmVsZWFzZTIyLW1haW50CisyNzc4MyAwYTMyN2I3Njg4Njg3NGFiZGJmMTk3MDE4OTI4MzQzOWVkYzM0OWQ2IGxlZ2FjeS10cnVuaworMjc3ODQgMDdkZDJmYzZhYzliNzdhYmNhMzg1YmI3YzAyMjdhYzQ5ZmRiMzgwOSBsZWdhY3ktdHJ1bmsKKzI3Nzg1IGJiNjRhODYxNGY2NjgxNzRlNDNjMDM4OWI3MjMyOWVhY2Y3MGQ0OWUgbGVnYWN5LXRydW5rCisyNzc4NiA0NzdjNzRkMDA2NmYwNjI3NjgwZWM5MmU2ZTY4Y2JmZThhMzkyMzQ5IGxlZ2FjeS10cnVuaworMjc3ODcgZWQ5OGM4OGIyMzUzYmU0MDkzYjA3MDUzYTk5NjJkN2E1YzUzMGY5NyBsZWdhY3ktdHJ1bmsKKzI3Nzg4IGY2MDUyYWViMTM0ZmNhMWU4MTZmZjIyYmZmZjA4MDljZjBlMDBhMjMgbGVnYWN5LXRydW5rCisyNzc4OSBjN2VkOTI1Yzc1YjMxMGE5YWViOGZhMzMxOGYyMDk2Yjg4MDZmOGNjIGxlZ2FjeS10cnVuaworMjc3OTAgNjA4NzM1ZGQyZWJjN2Q2ZTUxYzgyMDZkZDE4YTIwZTZjYjUxNzI2MiByZWxlYXNlMjItbWFpbnQKKzI3NzkxIDgxY2E2Y2E1YzMwNzRiMzQzY2ViYTdmOWYxYTUwNjc5YTMxNmYxYTAgbGVnYWN5LXRydW5rCisyNzc5MiBiZDM2NjViZDJmNzgzMzI0MDk2ZTkzODNhNjMxMWZlZjc4MDJjYmJmIGxlZ2FjeS10cnVuaworMjc3OTMgOGM2YTk5MjI0NTU3OWYzODEyYTk1OWNjOWFhM2I1MTE1NDBmMmQ0NCBsZWdhY3ktdHJ1bmsKKzI3Nzk0IGViNTU0YWEzNjFlOWNlODIwNmU3Y2ViM2M0ZDc3NDI1MjU1ZGM3ODAgbGVnYWN5LXRydW5rCisyNzc5NSBjYTVhYzk2N2M3YzRjY2NhMTNkY2I5ZDg1YzcwMmQ4ZTA1YzBlN2U1IHJlbGVhc2UyMi1tYWludAorMjc3OTYgODAxMjlkNGE4Y2VjMTc1MzFlM2U2M2VhN2U4OWQyNjNiMDRmMDJlNCBsZWdhY3ktdHJ1bmsKKzI3Nzk3IDMwNDQwODcxYzZlNTY0MGM2ZDU2ZTUwMWYzOTQ3YjQzNWVkMGVmZTIgbGVnYWN5LXRydW5rCisyNzc5OCBkMDQ5ZmQ1OGU0ZGRjNGRkZWVjNzQ4MmRlMjRjOWJlZTg4MTRmMWJiIHJlbGVhc2UyMi1tYWludAorMjc3OTkgNGRlNWM3ZTYyMzFlNWQzNjkwNWY3NGM3ZGExZjRiNzRjZTBhYmI4YiBsZWdhY3ktdHJ1bmsKKzI3ODAwIGQ2ZWM0ZGFiOTI3ZTY3ZDIyODU3NGE1ZjkzYzdhYWQ2N2VjZjM1NzMgbGVnYWN5LXRydW5rCisyNzgwMSAzMWE3MTE5YmQ4ZDRkZWY3MTM3NDIxMTk2MWUzYmVkYmFlYzAzZTI1IGxlZ2FjeS10cnVuaworMjc4MDIgOGUyNjZkMGFjZDEwYTA4MjFkNTEyNmZmZDcxOGQ3ODYzMDA4MTJkNiBsZWdhY3ktdHJ1bmsKKzI3ODAzIDQ3MDhjMDlmMDM1MGY5NTQ2NDA2MzRhMDgwMDk5YzE2YzVhZWZkODUgcmVsZWFzZTIyLW1haW50CisyNzgwNCAwODkyNmNjNWYyYWZkMDQxNmYwYTczZmIxOTMwY2E0MDNjZDNjMTM3IGxlZ2FjeS10cnVuaworMjc4MDUgYTA4OGNkMDhkYWRlNzY2MjUwZDE4NjYwNjlkNzlkN2M0NzkwN2I2ZCBsZWdhY3ktdHJ1bmsKKzI3ODA2IGY1Y2ZhMGVlMDJjZjNmNjZhMmFiNzNiNGUyYTZkODFkNjZjMGJmNDIgbGVnYWN5LXRydW5rCisyNzgwNyBkZDZhOTcxMWI0M2NkOTA2ZjBlNDIxYjY5MjNmOGZhY2ZlNDM1MDA1IGxlZ2FjeS10cnVuaworMjc4MDggYTBhNTllNTJiYWVjNWRkMGM4ZWE2MDVjODBiNzBmNjNkY2JlZDhhMSBsZWdhY3ktdHJ1bmsKKzI3ODA5IDUxNWU4NzIzY2FlZmY2NTk2MzRmMDkzOTRmOWFjYzYwYmIyYzc4YjUgbGVnYWN5LXRydW5rCisyNzgxMCAyNzU2OTNiY2VlNzQwMmIzMGI2YzgzNzdiNjEyOTBkMDg3MDcxMTVmIGxlZ2FjeS10cnVuaworMjc4MTEgMzZlMmZkM2YwOGY3NTgwZGVlNDZhZDhiMDY5ZTkzODk3ZTczYmM4NSBsZWdhY3ktdHJ1bmsKKzI3ODEyIDViZTk2MWE4ZTlkYjNlMTgwZjg2M2RmNDIyZWJiYTk4ZjBmMGZiZDEgcmVsZWFzZTIyLW1haW50CisyNzgxMyBiZDYyNjhiMTdiNzU3N2M5MTdhYmQyZGI5OTc2ZGJjZTQyZTQ0NjM2IGxlZ2FjeS10cnVuaworMjc4MTQgM2RiMjYxYTkzYTViOWY3M2EzN2U2MzUyOTgzZWE4OTc5ZWY2YTdjMyBsZWdhY3ktdHJ1bmsKKzI3ODE1IGY0Y2Q3OGIzYjc3NGNmYjk0YTcyYWE2ZmY1YTQ1NjQ4MDcxYWVkMDkgbGVnYWN5LXRydW5rCisyNzgxNiBlZDg5MjQxMWVlMGQwMGI1ZWE4NGU0OGJiOTIwZDBkYmMzMTFmYmI0IGxlZ2FjeS10cnVuaworMjc4MTcgOWFmYWMwZGQ2YjZlNGVhMGU2MzJlMDUwOGRjMjk1OGU5YTk5MmYzNSBsZWdhY3ktdHJ1bmsKKzI3ODE4IGVhNDgyMTk2NDA0MzI0YzNiMGY5OWQ0MmM1MTRjYzliYzZjMGIzMzcgbGVnYWN5LXRydW5rCisyNzgxOSAxNWVlNDQ1YWYwN2Y3YTg1MjY5OTFjZDFjODIwNjNmODJmNTYxOTljIHJlbGVhc2UyMi1tYWludAorMjc4MjAgZjU1ZDU4ZWU0ZWEzZmNjMDBlMjYwNDRkN2JkZmFhMzA4ZTc5MjYyZiBsZWdhY3ktdHJ1bmsKKzI3ODIxIDE0YmQ1YWIwY2RiNjZjNjVmNTc1OGNlYTM3Mjg2MWJiZGExOWI1MTMgbGVnYWN5LXRydW5rCisyNzgyMiBmNDQzNmUxYjE4NjhmZWYyZjEyZGM3MjY5OWU1MmNlNTgzNDhiOWUwIHJlbGVhc2UyMi1tYWludAorMjc4MjMgNzM4M2U2NzRmY2Q1MWI5MzAwZTc1OTg1OTc3ZTNiNWVlN2I5Y2M3MCBsZWdhY3ktdHJ1bmsKKzI3ODI0IGZlMjI1MGY0NWFjMDg0NTMwYjkxYzczNDg4NjFjM2RmZjk2OGJkOWQgbGVnYWN5LXRydW5rCisyNzgyNSA5ZWY4MjM3NzY2OWQ1M2E5YmI1YzFiODIyZjlkN2U2YTdjODJjNzUxIGxlZ2FjeS10cnVuaworMjc4MjYgN2RjM2Y0MDc3ZTU5NTUzZWM3Zjk1OTNkZjI0M2YzYTA1NmQ2ZGFkNCBsZWdhY3ktdHJ1bmsKKzI3ODI3IGQ5OGY4ZTAzZmEzMTJhM2I0NjA1MjIzNWFiMzQ0NDViNTAwZGNiMzEgbGVnYWN5LXRydW5rCisyNzgyOCAzMDFkZDU0NjViOGUyYjI4NjBkOGZiZjUwMDI1ZDQwNTU2Y2NmMWU5IGxlZ2FjeS10cnVuaworMjc4MjkgNjY5ODk2NjgzOGM4ZTQ5MDJhYzM1NjJjNzg5ZGM2ZDkyOTQ2NTM5MSBsZWdhY3ktdHJ1bmsKKzI3ODMwIGZlMDNhYjU4MGY5NTViOTJiNjg0ODE4Njk5MzkxMWIwNWRkMzk5YzkgcmVsZWFzZTIyLW1haW50CisyNzgzMSAyY2Q1MWIwNTJkZGY3N2I5MzViNzE0MDVjYWMzMjkzMTJlZTY0ODY4IGxlZ2FjeS10cnVuaworMjc4MzIgNmQ2MTEyNmFjZTY5NWIzODc1OTJlYmE0MjIyNjY3NTNjNjkwMmUzNCBsZWdhY3ktdHJ1bmsKKzI3ODMzIDIyNmJhMzRiZDk5OGI1ZWUzZmQwYWFjOWVhNmUwZTgyOWEzNDFmZWEgbGVnYWN5LXRydW5rCisyNzgzNCA5ZDQ3M2Q0ZDExYTY5M2U3ZGNjMDY5NThhNGE0YTNkYzM4YTNkYmMwIGxlZ2FjeS10cnVuaworMjc4MzUgMzJkZGUzN2M4ZDk1OTc0MGZlYjFmNTNmOGZkMGNkNmYxZWYzMmI2YSBsZWdhY3ktdHJ1bmsKKzI3ODM2IGMzZDllMDFjNjEyNDA5N2ViM2JjMjc0OGNhYWE4ZjViNWIzMWM3MjkgbGVnYWN5LXRydW5rCisyNzgzNyA2ZjgyNGQ2ZjEyODYyOTEyNGI3MTE5NDEzNDk5NGNjN2VmNmE4YmQ4IHJlbGVhc2UyMi1tYWludAorMjc4MzggZGRkNmZmMDY5M2M0ZjAwZGQ3YjFlZjczYmFjNjMxMjdjZTE4M2MyMyBsZWdhY3ktdHJ1bmsKKzI3ODM5IDM1NDMyMzM3MWUzODQ4ZDViYTNiNTE4ZmI1ZjdiZDM4MTJjOTIzMjIgbGVnYWN5LXRydW5rCisyNzg0MCAyYWRkMjdiNTU4NjRhYjAwZDliNmQ3YzkwNDZiZTIyMjM5MjdkNzJmIGxlZ2FjeS10cnVuaworMjc4NDEgNzQ3ZmE2NWE5YjQ3NWE5MmU0MGM0YzljMTJhZThjMjU2OWJmMzZhZSBsZWdhY3ktdHJ1bmsKKzI3ODQyIDIyNTcwZTc2Y2NhMTYyMWU2ZGMzZjA5NmY1OTI4ZDhmY2RlZWI1MWEgbGVnYWN5LXRydW5rCisyNzg0MyBhNWVhNGRkMTc4ODNhN2FhYTYxMjllZWYwOGNmOTM1YmZiZTIwYjE5IGxlZ2FjeS10cnVuaworMjc4NDQgZjBkMTM5OWEyNDQ1ZDBkYzliNTQ4Yjc5MTFiMjAxMmM2ZTZmMzZhYiBsZWdhY3ktdHJ1bmsKKzI3ODQ1IGY4MjhmMzIyMDZiYTUyYjRlMzQ0YjdkYzBkZTE0N2I0MGExMzhmMjcgbGVnYWN5LXRydW5rCisyNzg0NiBkOTcxYjg3MDM1MDgxMjFjYmZhZmU0Y2I1ZWU0YzBiYzU0MmI1OTM4IGxlZ2FjeS10cnVuaworMjc4NDcgZDIxNmU2N2FjMjIxYzIyMGEwOTlmNzY5ZGFkMmMzNDRlZDJhNWQ4ZCBsZWdhY3ktdHJ1bmsKKzI3ODQ4IDI3ODI1ZDI2ODMxN2ExMTE2MDQ0Y2IxOGIzN2ZhNDAwYmZhMWQ3NjUgbGVnYWN5LXRydW5rCisyNzg0OSA1ZjE0OWFkZTlhZjE5MTYxNmI3MWFjOTQ1Y2U5OGUyYTdhMGI2MTNkIGxlZ2FjeS10cnVuaworMjc4NTAgMTg5ZWI2ZmE5ZGVkODUzMWZmYWQyYjFiMTBlMDBhNWQ3YTIzOWUwMyBsZWdhY3ktdHJ1bmsKKzI3ODUxIDJkNzdiZTQxZWU1ZmIwN2U1OGE5ZDI0OWZlZDM1NjE0NzNjN2EwMDIgbGVnYWN5LXRydW5rCisyNzg1MiA3ZmMyY2VjNGRjODI4ZDQ5ZWM5YjJkNDMwYjFlZjNjNWZhYmY4YzMzIGxlZ2FjeS10cnVuaworMjc4NTMgYTFiZGRmNmEzMmNhYmY2ZGExMzM4OTdmYzZiNDJiMDEyMmJkZmRlZiBsZWdhY3ktdHJ1bmsKKzI3ODU0IGViYzg2NjdmMzI1YWRiYmM3MGI4YmQ3MjA1NTY2NDFmM2ZjOGVlMjAgcmVsZWFzZTIyLW1haW50CisyNzg1NSBlMzM0ZGQ0ZTUxMGZmMTcyN2Y5M2U1NDBhYzAwN2ZjMmRiMGM4NGU3IHJlbGVhc2UyMi1tYWludAorMjc4NTYgNGE2NmJlZjE1YzNiYjY3ZGEwMzc0NTIwZDNlMWEzMGUwMGQ5NDdiMiBsZWdhY3ktdHJ1bmsKKzI3ODU3IDE2MWE1ZWYwMjMwZTM5MDY5ZWFjYzBlOGMxMmNmOTMxYjIxYTUwZGMgbGVnYWN5LXRydW5rCisyNzg1OCA5YjI0OTdlMjk3OTUzYTk5ZjhlMWQ4ZGNlYzY2ZGUzOTE2NWRiNGY1IGxlZ2FjeS10cnVuaworMjc4NTkgZTU2Mjk4ZGMwZjhhZTgyMTQ0MmU0MTljYmRmZWJkZDUzMjg0MWM1ZCByZWxlYXNlMjItbWFpbnQKKzI3ODYwIDc5ZjEyOWIwNzNkZWJlM2JkYzBhODJjNTFjOTU5MzU0MGRmYzg1NjkgbGVnYWN5LXRydW5rCisyNzg2MSBiNmE4MmY4MTg1NDA2YzRjZWNlZjM3OTkyNDMzZDA1ZWVjYWFhYjNlIGxlZ2FjeS10cnVuaworMjc4NjIgZjY2YjNhMzUwOWM3MGNhMDZiMzY1ODcyMDBmY2U1MjY0ZDI1MjJmMyBsZWdhY3ktdHJ1bmsKKzI3ODYzIDQ1YjRmYzYzYmY2NzE5MzY1NGIwZWY0NzcyODYwZThhMjhiZjQyZDIgbGVnYWN5LXRydW5rCisyNzg2NCA5MGI0OTY2OGQwYWMzZjk4YTk2YmY2MjVjNTI5MzZiNjZjZGQ0OTYyIGxlZ2FjeS10cnVuaworMjc4NjUgNWRiY2NlMjFkZmVlYTY3MjIwNDE2ZGMyYTlkZjdmZWZhMzQwOTJhZiBsZWdhY3ktdHJ1bmsKKzI3ODY2IGUxNDA5YWIwZmU2OTg3MzVkMmNmZWFkZDkwNjM3YTNmZjc2MDExNzEgbGVnYWN5LXRydW5rCisyNzg2NyBhZDRkMjNmMWJmNmU2YTJiYzczODZkNDY4NTY3YzlkMGQ0MDY1ZjdlIGxlZ2FjeS10cnVuaworMjc4NjggYjM4NzU0ZjFjYjYxMTIyZWFlY2IyZGFkM2Q3NWI3MmZlOTlmNzEyMyBsZWdhY3ktdHJ1bmsKKzI3ODY5IGI2ZTUxYjA4NmNmNGQ2Y2M1YTllMzY3OTM3ZDNmYzdiZDcwMWJjZmQgbGVnYWN5LXRydW5rCisyNzg3MCA1NjQ2MjlkMWYxYWM0YTIwZmUxMGZlZjg3NjIwNWJjNzVjNDlhNTdhIGxlZ2FjeS10cnVuaworMjc4NzEgMDNkODVkMTk3MDUyYTkxMmM2ZWZmOTE5NTRjZGQ3YjMzNmRlMzAyMCBsZWdhY3ktdHJ1bmsKKzI3ODcyIDg2OTFlZGE0YzA1NzMzNDc5YTM1NjkxZDU2MWE4NDY2NzkwNjdkODEgbGVnYWN5LXRydW5rCisyNzg3MyA3ODk5ZmQyYWY5MTI1Zjg2NTE1MzkzZjc2NjZlZWFiYzc5ZjAzZGVmIGxlZ2FjeS10cnVuaworMjc4NzQgNzFiYTJlOTY5YzExNDE1ZDQwZDE3NmM3NGYzMzgwNTM3N2I5YWM2NCBsZWdhY3ktdHJ1bmsKKzI3ODc1IGUwMTI4ZDYxNmY4Nzk1OWY4NmFkZWE3ZDc5ZjEyMzc4NmRmMWViN2MgbGVnYWN5LXRydW5rCisyNzg3NiBmMDVhMzExZDc5ODg2MjU3ZTI3YjI5NDE5MmU3YTUzMWQzMzIwYTU4IGxlZ2FjeS10cnVuaworMjc4NzcgMTJhYWY4ZDVhZDJiZTcwNzU3Mjg2MjYwNjYwNzkwNTZlZTQ0YjI1MiBsZWdhY3ktdHJ1bmsKKzI3ODc4IDRlNjI3ZDhjZjlmNGQyYTg0OTZmNGEzNzlmZGFmZTg1ZjIwN2ZkMTAgbGVnYWN5LXRydW5rCisyNzg3OSBkZjA2Mjg2NjJiNDgxZTM4NTQ5NDUzOTZhNjZhZjYwMWY5NDhlZDdhIGxlZ2FjeS10cnVuaworMjc4ODAgYmNjMzVhMGYxYTc4ZThjZmIxOWUwZmY4MzljYjk5MDM4NjgwNDkzMiBsZWdhY3ktdHJ1bmsKKzI3ODgxIDA4NTQ1MjRlY2UwMDg0MGRhNTQyMzI2ZDQyYjZmNzFlOGQzYzQ4NzIgbGVnYWN5LXRydW5rCisyNzg4MiA0YmZjOGM1MTliNmRkNTRhOTVkOWJkYjZlYzkxN2M1MzFjZDliMDJlIGxlZ2FjeS10cnVuaworMjc4ODMgZmIwNjkxZjEwZDkxMmI0OWY0M2I4N2U1YzUwYmFkZjgzZjUxMDg4ZiBhc3QtYnJhbmNoCisyNzg4NCAzZGRhY2UxZDEyYTlmZTUwYzZjZWY0YzkwOGMzY2EwNGIxM2EzN2ViIGxlZ2FjeS10cnVuaworMjc4ODUgODA5MWE0YTNiOGFlYzJlZjMyZTE3ZjhiMjhlYWRmOTUzMGJiZGYzNSBsZWdhY3ktdHJ1bmsKKzI3ODg2IGVjMWEyZDdhYzAyYmMwNDkyMzk5MmQ2MzU5ODk1MWJiNzY5MWJlZTIgbGVnYWN5LXRydW5rCisyNzg4NyAzMDMzNWM2OGI3ODdmOTFmZTA2MThmY2NkNmYxYzgwY2M4M2E3ODg3IGxlZ2FjeS10cnVuaworMjc4ODggMjY3MGE1ZGI2ODQzMTVjZmU0NTczZGMxMzNiYTc1YWY0OWEzOWU4YiBsZWdhY3ktdHJ1bmsKKzI3ODg5IGRhZjc1NzljMjI0ODIxOTJjY2U5ODU0NWJkZTdmNWVlNDY2NGQ1ZGIgbGVnYWN5LXRydW5rCisyNzg5MCA2ZGNmMTI4ZDdlMDMwOGFjZjg1ZjZjMDY2MGRjZmM0YThjMzUyYzc2IGxlZ2FjeS10cnVuaworMjc4OTEgYWM3NjI4NzY5YmE1M2UxYmM1NjRhOGZiNWRmMzkzMzFkMjliNGI4YyBsZWdhY3ktdHJ1bmsKKzI3ODkyIDE3YThiNzRiYmU1Y2YwNGM2OGMwZTk0NDYwMjQ3ODU1OThkOGJhYmUgbGVnYWN5LXRydW5rCisyNzg5MyBkZmU2ODg0YjU5ZTBlN2U0MGJlZjY2YjdkMzA1ODFhNmNmYTJhNjRiIGxlZ2FjeS10cnVuaworMjc4OTQgZmUyY2ZjZTRlNjU4NjNlZDMxNzJiNWIxMzQ1NGI5Y2U0MGU3YjE5NiByZWxlYXNlMjItbWFpbnQKKzI3ODk1IDQ4OTdlMjllMTljYzA2N2M2YjkzMGYwZmUyMzAzY2UwYzQwNzViNDMgbGVnYWN5LXRydW5rCisyNzg5NiA4N2Y4Mjg3MjZmZTZlYWI2MTk1OThmZWQ2MThhMTFjYjk3OGNlMzM2IGxlZ2FjeS10cnVuaworMjc4OTcgMzI0YjJlN2FmNjgzNTdhMGI3M2Y5MzI4MDE4ZTM1ZjA1ZTBiZDMzMyBsZWdhY3ktdHJ1bmsKKzI3ODk4IGZhMzJlN2E2NWE3ZThmOGJlYTMzYzlhNWMyODM3N2M0MGQ4MmNhOWYgbGVnYWN5LXRydW5rCisyNzg5OSBkZmU1YTY4OTk3OWJhODIzY2ZiZWQ3NTBlYTIxNTFlMDViZGZmNTI2IGxlZ2FjeS10cnVuaworMjc5MDAgYWJiNTJkNTZiYTVhYWJjNWYyMDk3YzJhOTcwMWY4Y2U0ZTYxMmU4YyBsZWdhY3ktdHJ1bmsKKzI3OTAxIDEyZDg1Yjc4NTI2MzYzNGU3YTI2OWRhNzExODMxZGRhNTFiZjU2ZGUgbGVnYWN5LXRydW5rCisyNzkwMiA3ZWNiNmViMWZlNzczOTc0NTczNjU2ZTJiYjRmMTA3YTI4ZjNiNjBmIGxlZ2FjeS10cnVuaworMjc5MDMgN2ZhYzEzM2Q1MzlmZmFjYjBhMjU3YThiNWM0NTQyNjc0YWU4MDIzZiBsZWdhY3ktdHJ1bmsKKzI3OTA0IDU2Y2U0YzhmNGYxNjlmMjFjOWMxNzhkNTFhMDBiOWM5ZWJkYzU4MGYgbGVnYWN5LXRydW5rCisyNzkwNSA3MDJlMTEzZDM5YjBkNTViZGI4ZDhlYjVjMTY5YWE5OWUwYTc5NTc4IGxlZ2FjeS10cnVuaworMjc5MDYgZDhiYTM3M2JmMmIzYzcyN2I0MTYzM2IzNDNlNzAxNzI1NTVhMzA2ZiBsZWdhY3ktdHJ1bmsKKzI3OTA3IDk0ZmYwNzQzODM3N2I4N2Q0OGI2NThiNDYwN2IyMGM1MDk0YmIzNzAgbGVnYWN5LXRydW5rCisyNzkwOCBhZTJmYjhkYTM4NjNlOTk2NDI1OWRlNDgxN2FlNzFiNmIwNmRlNzcxIGxlZ2FjeS10cnVuaworMjc5MDkgNzVmZDg2MjkwMWQ4M2U3ZjAzMzY1YWMyZjRmZGIzODdkNjY0MmRmNCBsZWdhY3ktdHJ1bmsKKzI3OTEwIDhhMTBhNzIxYjg0YmNlZWNjYmViZWFiMzY3YTBiZGQ3ZDAyNDc1NGEgbGVnYWN5LXRydW5rCisyNzkxMSAwY2Y0ZTA1MzljYzFmNTgwYzNmNmJkNmE2NDgxNzQyNTMyODMzMThhIGxlZ2FjeS10cnVuaworMjc5MTIgMTc1Y2QwZTA4OGFhY2NmOTNkNGEwMDA1NmIzOTQ1NDM2OWM1MzZmNiBsZWdhY3ktdHJ1bmsKKzI3OTEzIGFkZjBiMjE1YTUyYWUyNTkwNGZkMjhkMGI3NmU5NzM5ZWIzODdiYWIgbGVnYWN5LXRydW5rCisyNzkxNCA1YmQwZjI0MWVjNWFkYmI5MjhhNWYxNTcyZTJjOWNkMzliMTQwNzEzIGxlZ2FjeS10cnVuaworMjc5MTUgYTczYTU4OThiZjQ5MmE1NjEyYmExZWFlYWNhZTllNGFjYTBmNWM5NyBsZWdhY3ktdHJ1bmsKKzI3OTE2IGE1MzI0YjA5NDk0MmUzMjg1Njc0NGMwMDVjZGQzZDFhMTUzZTY3ZmYgbGVnYWN5LXRydW5rCisyNzkxNyAzY2IwNTVhYWU3Mzk1N2Q4MDIyMzUzN2I4YjJjNjY1NWUxZjA2MDZjIGxlZ2FjeS10cnVuaworMjc5MTggMWYwMTc4NzA1NTJlNjUzYmI4ZGExNDE5YmEzYmI4MTM0OTFmNjkxOCBsZWdhY3ktdHJ1bmsKKzI3OTE5IDMyZjkyZDc2NmI4MTM2YWFiNDNiNjJiNzE1NjhkNjE5NmZjZTA5YzggbGVnYWN5LXRydW5rCisyNzkyMCA2MmY2YmFiZWNlMWZjMzI0NTc0ZGMyYmU1MjY2ZTlhMDM0NTFiYzNkIGxlZ2FjeS10cnVuaworMjc5MjEgMzQ0NDAwNWI2NTI3MDNkMmZiNDFkYmM5MWE3YTliNWQ2ZWVmMTc5ZSBsZWdhY3ktdHJ1bmsKKzI3OTIyIDk1ZGY4N2Q0NDkyM2JmZDRjZWZhYTBkOWE0YjU4NTQ4NmZmZGFmZjAgbGVnYWN5LXRydW5rCisyNzkyMyA5NTBjNWEwOWFkOTk4OTQxOWRmYWFmZjRhZjM5MDFjMzRkYTYyYTQ2IGxlZ2FjeS10cnVuaworMjc5MjQgODJjNDg2NTM4NjFiNTZlOGJjMGMzODZhYTBjZTQ3OGYxZTdjZTU0YyBsZWdhY3ktdHJ1bmsKKzI3OTI1IDFjMjZlYjc2ODI5MzZkMDE5MDc2MmE4MTRlNWZjYjFmODRmM2QyOGQgbGVnYWN5LXRydW5rCisyNzkyNiBhZjFmYjRmZWMyYjQ0ZDQyNjBmNDA2OWE3NjE1OWVhOTgyYjNhMzYzIHJlbGVhc2UyMi1tYWludAorMjc5MjcgNDE4OTU2MDlkMDg0Y2RhNzUwODNhYzk2NWI2YmY2MDAxM2Q2YTMwMyBsZWdhY3ktdHJ1bmsKKzI3OTI4IGU5NjFjZDJmMjJlNDI4YTQxZTI1Yzc1MTE5OTc0NjYyNmI5OWJiMGUgbGVnYWN5LXRydW5rCisyNzkyOSAyOGE1YzhhZmEwNTZlNTJjZWI3MGRlMGEyZGIxY2IxMmMwMWZiMmQwIGxlZ2FjeS10cnVuaworMjc5MzAgOGQ1ZTBlM2Y2NDQ1MDBmMjZlZjhiMjk0N2RhMTYzZDZkNDdhZDI1NyBsZWdhY3ktdHJ1bmsKKzI3OTMxIDA2ZjFlMmZkMDViY2FhZTE2ZjNjZDgzZmQzMTZjOTRhYzI5Zjc0YzggbGVnYWN5LXRydW5rCisyNzkzMiA2MTQzNThlM2M0ZjZhZWZmMmIwZDk4ODZjZGY5MWZmZGU5YjM2MzFhIGxlZ2FjeS10cnVuaworMjc5MzMgZmY5ZWZhNjkyNTk0ZmJiODNmZWI4NWY3NTU2MTc5NDBkMmRmOTRiMCBsZWdhY3ktdHJ1bmsKKzI3OTM0IGQwZDNmNzYwZDA2NzVkZTM3NzA2NTQxOTFmMjcyZDBhNjNhNjFlNWUgbGVnYWN5LXRydW5rCisyNzkzNSBjMDBkZjIzZTg1NmU1ZTJiZDFkYmIxNDk0NDIzM2Q5YzczNGE5NWFjIGxlZ2FjeS10cnVuaworMjc5MzYgMGJkNTIxZWI3MTRlYWNhODZmOGNhMjQ1M2FlNGZiNTM2NGJlMWJlMyBsZWdhY3ktdHJ1bmsKKzI3OTM3IGRkOTkzZDAxZTc0MDQxMTg4Mzg0NDNjZDVjMzFkM2FhNDgzOTQxZDAgYXN0LWJyYW5jaAorMjc5MzggYjViOWIwMzM0NDY5YzQ3NmZlZmYwZmJmNmQyYzc2OWMyMDI1Mjk0NyBhc3QtYnJhbmNoCisyNzkzOSBkMmY0MWM4YTgxZjBkOTUzOGNhNTJhMzIwY2RhMmUzMzg4ZWM2MTY4IGxlZ2FjeS10cnVuaworMjc5NDAgOTZmZGU5ODA4ZTE1YzdhMDMzZGE3M2ZlYTRjYWViMzViZTNjYzUyYiBhc3QtYnJhbmNoCisyNzk0MSA0MjI4NmQyZTRkMmZmNzVhNjE4MjhkMDFjNGJhYzVhMDlhMmE4MmI2IGFzdC1icmFuY2gKKzI3OTQyIDUzZjIxZjQzNDk1NjY1NmFjOTc5NzlmZDQ4OWQyNTNlN2JkZmQ2MTEgbGVnYWN5LXRydW5rCisyNzk0MyA0ZjAwMTM0YjU2MWRiNTM0YTMyZjVmZDQzYmZhZTIwNzU2ZDk3ZWJhIGxlZ2FjeS10cnVuaworMjc5NDQgZjIwMjVjNjc2ZTI0MTU3MjVmNmQzZmNjM2Y0MzBlOTVmYmM3YWE1YyBsZWdhY3ktdHJ1bmsKKzI3OTQ1IGQ4NzUwODk3Yzg5N2NhYWIxMTQzNmY5ZmQ1MDM3MzAyMjEwOTQxODUgbGVnYWN5LXRydW5rCisyNzk0NiBhNmE0YTk1MWM2MTZjZTdhOTNmY2Y1N2QyNDU1MTM1MDhkN2FmYzg0IGxlZ2FjeS10cnVuaworMjc5NDcgZTIxMzgxZmQ4NzU2NDEwYWRkM2U3OWRkNmFhYTZkMDk0NjIxY2JmYyBsZWdhY3ktdHJ1bmsKKzI3OTQ4IGM5ODA4ZjUyMTIwYWZiOWUyNmQ0ZDhkZjYzODNjM2Q5OGQ5ODU1Y2EgbGVnYWN5LXRydW5rCisyNzk0OSBkNWYxN2Q4NWY2YTA2NTgzYjZiZjdhYzY2YWIyM2I3OTI2YWMxYWFiIGxlZ2FjeS10cnVuaworMjc5NTAgZGY0YTlkM2FiYzU2YTEyYTdhYjA4ZDg0ODRlZTJmOTgyOTIwNzlhNCBsZWdhY3ktdHJ1bmsKKzI3OTUxIDVkNmU0NzBjZTA1Y2Q1YjE4MGUyMWZiNDE5NGZmMjM4Yzk5ZjY2YzMgbGVnYWN5LXRydW5rCisyNzk1MiBiYmFjNGUzY2NiNjI1MjM2NmI5Y2JkOTMwZDRmMzNjNjZiMWU0ODIxIGxlZ2FjeS10cnVuaworMjc5NTMgNGJmOTQxNDlkMjFjN2U0NjNiYThkYWJhMWRiMTkxNDlmMzBjNjc4NSBsZWdhY3ktdHJ1bmsKKzI3OTU0IGQyNmI2MmYwYzZkYmMzNTJmMGMyNTBmNWI3NDUwNzRjOTNiYzgyZTkgbGVnYWN5LXRydW5rCisyNzk1NSBmMDU5ZDU0MzVkNjUzMmVkZTcwNTgzODQzZTkyMjM4MTcxOTg3M2IyIGxlZ2FjeS10cnVuaworMjc5NTYgYjQyNjlmYTY3YzNlOWNjNGEwZTFmNDczOWYzNDJmYWY2NTk5NzUzYiBsZWdhY3ktdHJ1bmsKKzI3OTU3IGIyNWMzMWUwMDhjOGM3ZDIxNDk3ZTNmNTZiYWE2NjFkN2VlZDk4ZDUgbGVnYWN5LXRydW5rCisyNzk1OCA5MzQ4ZmEyMGYyMTQ5MjBkMWFlY2JkM2ZiZTMwYmMyYWM3ZmMyZjY5IHJlbGVhc2UyMi1tYWludAorMjc5NTkgNDc5ZjhmNGVlNGFkNDU1YWMzNTFlMmM3MjM1YmEyNTQ0ZWRkZjkwZiBsZWdhY3ktdHJ1bmsKKzI3OTYwIDBiYjM5ODZjZjY1M2E2MDVlZGVkODZiOWE1MWNhNTk5MzhjMmMzOTggbGVnYWN5LXRydW5rCisyNzk2MSBjOGQ2OTRiNjQxZjE5MjQ5ZDljZGJjOTk0YWNlNWUxZTA5YjBlMjk4IGxlZ2FjeS10cnVuaworMjc5NjIgYWFiYzk3OTAyZTEwNDZhYmNiZTUyMzQ1NTA5OWQ3NTlhNzJhNmVlZSBsZWdhY3ktdHJ1bmsKKzI3OTYzIDdjYTQ2ZTA4MjAwZGZlZTUzZTIxNmIxN2JlMzE4NDZhNjJmMjU5ZjUgcmVsZWFzZTIyLW1haW50CisyNzk2NCA0NTdhMDQ3ODMxODNmNTZmNzAxNjE4YWU0ZDU4YmFkNWZiYWI3MGRhIGxlZ2FjeS10cnVuaworMjc5NjUgOGMzOGVhMDkyZjIwN2ViZjQ3MDljMGJlY2I1NzliMTJmODUyNjBlYyBsZWdhY3ktdHJ1bmsKKzI3OTY2IDEwZGJkZTY5ODc2NjkyNGRmY2QzNzdhMjg3OWRkMmU4ZGE5ZDg2NjUgbGVnYWN5LXRydW5rCisyNzk2NyA4MWM1NmNiYzFkNWZmNDg1ZTY0MmE3Y2FkODU1YjRkNTcwM2EwMzJlIGxlZ2FjeS10cnVuaworMjc5NjggMDA0ODhjYTllMDRmNzU0Yjg2NzEyMTMyMWRjYTM1ODIxN2RlNTVhZSBsZWdhY3ktdHJ1bmsKKzI3OTY5IDg1MTEyMWVjYzExMTE3YTQ3ODI1ODkzYzUwOTVjMzdlM2YwMDU2NzIgbGVnYWN5LXRydW5rCisyNzk3MCA4MGZkMGQzNjFlMTdmNjA0YWRhZjZmMWE3NjAzMGZhYjMwZGY1NmNkIGxlZ2FjeS10cnVuaworMjc5NzEgOTIwYWQwOTkzMGRjNTA5Yzk3ZGQyZDY0ZGE4YzFhNmRjZDJjZTcyMyBsZWdhY3ktdHJ1bmsKKzI3OTcyIDNlNzE4YzNkNTFlZmFiZDEzOGExZDE3MmIwMTFhNzRlZDQwMjM1YTcgbGVnYWN5LXRydW5rCisyNzk3MyBhMzJjZmYwYzc1ZGNjN2VmYjVkYmUyZGE5ZjdhYTM3M2M4YjFmOGNjIGxlZ2FjeS10cnVuaworMjc5NzQgY2NjYmMyYzc4YzA5OGIzNzlmYTEyOGM2ZTczYTM1YTFlNWFhZTcwMiBsZWdhY3ktdHJ1bmsKKzI3OTc1IDI0NDExN2FlYmJkNTg1YmVlOWVlYWY1Y2EwMDQzNzVmNmU5MzZlZjIgbGVnYWN5LXRydW5rCisyNzk3NiBjYTIwYmUyNDM4MWZiMzA1ZjMyOTEyZjc5NGNjYmUyZGM4Nzk2YzVhIGxlZ2FjeS10cnVuaworMjc5NzcgNDM4MmIyMzc0MzkwMWRlNzI0ZWM1ODhiYTljN2RlZDU1NDBhZmI3OSBsZWdhY3ktdHJ1bmsKKzI3OTc4IDliMWIyYjU4Yzg2NjYyMzY3MGNhNjQwYjUxOTllZGE4NTNkNzNjMmMgbGVnYWN5LXRydW5rCisyNzk3OSAwMGY4ZGRhMTdlZTJiNTJhZmFkZTk1MTQ4YzEwNzllMGVmZjE0ZGYyIGxlZ2FjeS10cnVuaworMjc5ODAgZWMyZTI4MzAwYjc2NTljNjc5NzMzYjBlNzFhOGRhNzA0OGIzZjQ1NSBsZWdhY3ktdHJ1bmsKKzI3OTgxIDI1ZDY3Yzk0YTZkMWEwYzczMzVjOWZkNjg3NTdkM2ZiOTkxMGY4NWEgbGVnYWN5LXRydW5rCisyNzk4MiBjMzlhZWQ0NWRiZTk5ZGM5YTM0NzhhM2Q1OTc0MGQxOTA4MmNhOTE5IGxlZ2FjeS10cnVuaworMjc5ODMgOWRiYTEyMTY3ZGI2ZjdkMjI2ZmE5NDUyZWYzOWY1ZWE2NmQ5M2M2YiBsZWdhY3ktdHJ1bmsKKzI3OTg0IGNiMzA4YTEzYTFmZDIwNDY4N2ViYzQ2ZjNkYmNiZWFlYTE1YjVhZGUgbGVnYWN5LXRydW5rCisyNzk4NSBmZDA1YzJkMzVmZTcxOTFmMmRhZWQ4ZWRiZWE4MGZjOGE3OTUzMDU0IHJlbGVhc2UyMi1tYWludAorMjc5ODYgODM5MzE1ZGUwY2ExMGUyY2I0OTg1MTMxNjI3NmMyMGQyOGYwYTQ3MyBEU19SUENfQlJBTkNICisyNzk4NyAxZWE1NjllYTUxZmQ5ZGU4MDA4NzQxOTUyNjhjYTliMjE4ZGZlYjlhIERTX1JQQ19CUkFOQ0gKKzI3OTg4IGU3YjZiYzJiMzVlMmU0MmJlODc3YTRkMzE2YjE3YTM0OTQ0Njk0YWMgRFNfUlBDX0JSQU5DSAorMjc5ODkgMzA3MzMyZjM3YjdkOTM3ZDRmZTNiNTE2NTQ5ZjIyNjhjMmU2OTIyMSBEU19SUENfQlJBTkNICisyNzk5MCAzMjU3ZWZkYTQ1MTMzMWU3YmNkM2I2MGQwMTc0MDY1NzM1YzgyYjM2IGxlZ2FjeS10cnVuaworMjc5OTEgZTRhOGUzZTQyMTBkOTc3ZTdlNzk3NjZjNGM2NzM1NzQxMTg0NDAxYiBsZWdhY3ktdHJ1bmsKKzI3OTkyIGRhODhlOTkwZjkyY2NkMmU3MTgzZDYzNzcxYjM2NGM5OWExODg3ZDMgbGVnYWN5LXRydW5rCisyNzk5MyA2ZTBkZWVlYjk3ODdkM2IzZDdmYjcyOTcxNTYzZWM0YWI3MWUxN2Q0IGxlZ2FjeS10cnVuaworMjc5OTQgZjkyOGY3ZWVhMmQ2OTg1ODZkMzA0ZmQ1NGI3OGFkOWZmMDBkOTlhYyBsZWdhY3ktdHJ1bmsKKzI3OTk1IGE1MDZhYjliYjRhNDE0NzA0OWVkN2Q3NDA1ZTU5MzJiMThlMTdhNGEgbGVnYWN5LXRydW5rCisyNzk5NiBhMDJhYmE3MmNiYjI0OTllNWEzMDE3NzY2ZDg3MmYzYjJkYzQyOWRmIGxlZ2FjeS10cnVuaworMjc5OTcgMDAxNjdiMmVjYWNjNWViYzM3OWI2ZmZiNTA3YWM1MDU1YzY0NzkwYSBsZWdhY3ktdHJ1bmsKKzI3OTk4IDEyZTE0NjE3MWYzZGM5MDZiOTFiYWUwYzZjOWY0ZDFmYmU0YWE2OWIgbGVnYWN5LXRydW5rCisyNzk5OSBkN2NhMGEyY2UwNzQ2Yjg2YjMxMjI3NTY1NzliYTgyZDhkNTE2NTJkIGxlZ2FjeS10cnVuaworMjgwMDAgNTlkNTMzNTgwZTcyZDYxNTNjOGNlNGQ2MzE3ZGEwNTljM2ViZTE1MCBsZWdhY3ktdHJ1bmsKKzI4MDAxIDI2MmFkMTZiNGRlMDlhMzJiMWMxMzRiYzI1MDAxZjdhMDE3OTU3NDEgbGVnYWN5LXRydW5rCisyODAwMiBmNWUyOWM3MzM2ZGQ4OGViZTE2MGU0M2U1MmExNmRlNDIzOWUyZDIxIGxlZ2FjeS10cnVuaworMjgwMDMgNzNiMzA5Y2YwMjEzNTUyOWM5OWQ4NGJjYzNmMzRmOTg2M2JkMTUxMyBsZWdhY3ktdHJ1bmsKKzI4MDA0IDJiMDc2NmFmYWEyMjJkMGFiMDcxZWIwN2NhOGY4MjRiM2NiMGEzYzcgbGVnYWN5LXRydW5rCisyODAwNSBmZDQ1NzViNTZhNGRlMDE4ZTY3OGNlNDczNjZlMjRlODg0Zjk4YWFmIGxlZ2FjeS10cnVuaworMjgwMDYgOTQwYzRmNTQ2ZTdmMTdlNzQ4M2NlOWQ0NDc5NjU3YzE2NDhmNjIzZSBsZWdhY3ktdHJ1bmsKKzI4MDA3IDNlNGQ0MzI4NzJlYTc5MThmMzczMmQyODUxZWE4ZmQzNTE4YTM0MTYgbGVnYWN5LXRydW5rCisyODAwOCBiNjcwN2UxNTk5MDlhNjVmODhjOGM3ZmRjMjYzOTg1ZWYwNmU2OGI4IGxlZ2FjeS10cnVuaworMjgwMDkgNDM0ZWM1MjNmMzJjN2Q2MDZkZjI4NjMwYTgwNDY3NDA2NjViYjhlMyBsZWdhY3ktdHJ1bmsKKzI4MDEwIDEzZGUyZjZmMDdkZGRjOTgxOTAzYjM1NjhjNDg2YjQ4NGUzZjFjOTQgcmVsZWFzZTIyLW1haW50CisyODAxMSA2NTQyZGZhNDBlNzdjNzYxZDAxNDgwOTY4NmEyMjdhNjkwMWJhYzNiIGxlZ2FjeS10cnVuaworMjgwMTIgOGE3NGYzMzVjZmJhYjllMTI3NzU0MTdiOTcyNmUzOTg1YTM3NDg1MyBsZWdhY3ktdHJ1bmsKKzI4MDEzIDc5MWJiZWRiYmJlOWUzNzZjZjhiZDQ5NGIyNGI4MmU3M2FjNzY3YzMgbGVnYWN5LXRydW5rCisyODAxNCA0MGViODBkYzQyNTAwZTk4MGUxOGNhY2QzZjY4MzliMzEwZjQ4NDJjIGxlZ2FjeS10cnVuaworMjgwMTUgOGExYzA4NmFkMjEzYTc2NWQ0MWVlNjA5ODBmNTIyYTMwZmFlMTVhYyBsZWdhY3ktdHJ1bmsKKzI4MDE2IDM1ZGJhNjAwN2FjMzdkMmY0ZDRkOGMyNmVkZDk0OWY3YWY1OTE5NjEgbGVnYWN5LXRydW5rCisyODAxNyBkYmMwZjJmMTE0MTQyMGNkZjI5NzhiNTQyNmUwNDVmMmM2ZGUzYWQ1IGxlZ2FjeS10cnVuaworMjgwMTggNjQyZGRjZmU4NjRhNGZlYWZhODhlZjZiY2YwMTJiNTVlYTdiNDk0OCBsZWdhY3ktdHJ1bmsKKzI4MDE5IGI2NGRiNTUwOTcyYzE0MGY0NGExZmZkYTllZTljZjY1Nzk1Y2Q4NmEgbGVnYWN5LXRydW5rCisyODAyMCA3MzU0NDFmZGFiN2U0NzRmZTQ1MGExNmQ4YTY2YjQ0NTc5NWUwN2E3IGxlZ2FjeS10cnVuaworMjgwMjEgODBiMTI5NDRhNDJiMGFmNzE1MDU3NTIyODZiODg4ODkwMWJjZTkzZiByZWxlYXNlMjItbWFpbnQKKzI4MDIyIGM5ZDI0MjhhNmE4NWVlODg1ZWVlNGE4Mjg5YTIxYTY4OTBkZjI4NDcgbGVnYWN5LXRydW5rCisyODAyMyAxMWIyNjJmZWQ1ODA5Y2NjNDU0ODUyZjdkNTRiYzZlZjcwYTkwYjg0IERTX1JQQ19CUkFOQ0gKKzI4MDI0IGZiNDU5MWMwNDcwZTI4MDBmYzg4NzU3NGUxZGZlNTA1YWJlZjM1ZjEgRFNfUlBDX0JSQU5DSAorMjgwMjUgZDZlNWU5YTFiY2EwOGQ1YzQyNzIyZmZjMzU4NThiYTI3MjdmMTM0ZCBEU19SUENfQlJBTkNICisyODAyNiBiNDdhNmEyYTFlNTYwYzI5MTFlNjBkNzgyNmI3NTg2OWMxZDY2ZmU0IERTX1JQQ19CUkFOQ0gKKzI4MDI3IDE4NjljZWNkMzkzMzQ5MjEwNGRmYzM4MzMxNzY3MmMyZGQzZTc4ZTIgRFNfUlBDX0JSQU5DSAorMjgwMjggZjczMjU5NzY4NDI2N2E5YmJiNGY5MGQwMzZiODIzMWI4Y2ZiOWM3ZCBsZWdhY3ktdHJ1bmsKKzI4MDI5IDY0NDVlNDRmY2I3ODM2MGQ3MjVlOWM4MGE1ZjNkNDBiZjUyYTBlZTYgbGVnYWN5LXRydW5rCisyODAzMCA0ODJjOTQxZDU5M2Y4NjFjNGZmNTFhYTU5YTRlMjkzZTNmNzdmNjUwIGxlZ2FjeS10cnVuaworMjgwMzEgZjNlNjliOWFjYzQwNmIzZTFkZjBkMTQzMjA0MjMyMTIyMDIzYTUyNCBsZWdhY3ktdHJ1bmsKKzI4MDMyIGRkY2I5Y2UwNDU0NjQ5NjMyZGIyOGZiNjY0NjQzMzQ3YTc2YWM1YmUgbGVnYWN5LXRydW5rCisyODAzMyAwZGY5YTljMDhjMTM5ZTk2MWQzZjIyMDhkMmUxMzE2MDg0MDk2ODk4IGxlZ2FjeS10cnVuaworMjgwMzQgN2Y4OTY3ZjU5Y2Y4MmYwZjIyMGQ3ZGUzZGNjZTc4YzdhZjExMWE3MCBsZWdhY3ktdHJ1bmsKKzI4MDM1IDQzY2FhMjEyYjk1OWNmN2IwYTlhODU3MDRjY2JmYjMyNDUxNTkyMTAgbGVnYWN5LXRydW5rCisyODAzNiAxMTBjNmVkYWY2MmYzODU4ZTRkNjExYTZlODJhOTQ0ODk0N2VlN2RhIGxlZ2FjeS10cnVuaworMjgwMzcgZjZhOTdjZDNiYTI0YjQ1NTdlMDczZWUwYmEwZTBiNjllYmU5ZWMyZSByZWxlYXNlMjItbWFpbnQKKzI4MDM4IDFlYmMxMjhlNDg0MmMyODRhMmM0YzRiNGY3NzdjYjY0YjM2NWNhNTcgbGVnYWN5LXRydW5rCisyODAzOSA3NzgwOTM1MzNhNDYzOTlhYmIzYjEwN2Y4YjQ5MTQwNmE3OWE0ZjY4IGxlZ2FjeS10cnVuaworMjgwNDAgN2FlM2Q3NDg2ODAxZTdmYmVmY2NkNzc0YmI4MzQ2MGQ2MWMzOTYzNyBsZWdhY3ktdHJ1bmsKKzI4MDQxIGRhOTA2NTNmYzJjNmViY2ViMGMyZDRlZjg3MGI2YmM0Y2NmZTNkMDcgcmVsZWFzZTIyLW1haW50CisyODA0MiBmMzNjMDFjYzQxNGM4OTc1NDU2NDIwOTRlOWJkNDZlZWMwN2I5ZTkxIGxlZ2FjeS10cnVuaworMjgwNDMgYTlmMjU2N2MyZjgzNzY1ODIxN2U2ZGNhMzI3NTdlYjFhZjk5NjFiYyBsZWdhY3ktdHJ1bmsKKzI4MDQ0IGZiMWQwZTU1YjE1MjFkNmJhYmRjNjk4YjE4YjIzOTZlMGFkZmM1NTYgbGVnYWN5LXRydW5rCisyODA0NSBiZWVkMWMxZTdjNmRmNjc3MTczM2ZmMmUyNDlhMjhjMDIyYzVlODA1IHJlbGVhc2UyMi1tYWludAorMjgwNDYgMGQ5ODY2MGUzNjUzOTVkZGQ5NDVjYjE3NjNhOWRlZWRiZmVjNjdlMCBsZWdhY3ktdHJ1bmsKKzI4MDQ3IGEwZWI4ZTM4MmQ3NGNiMTIyYjdiMWNhNDcwMDJjM2NiNTgyYWI3OTkgbGVnYWN5LXRydW5rCisyODA0OCAyN2RhMmI4MWE0OTZhOTI1ZTExMWI0NWI4ZTdmMzY3OGU4ZjdjMDJhIHJlbGVhc2UyMi1tYWludAorMjgwNDkgN2JhM2U1ZmJhYWQ4MGMzMzBhZGRjN2M1ZjY2ODdmNDNkYjQ1YzJhZCBsZWdhY3ktdHJ1bmsKKzI4MDUwIDhjZjAwMzM4YjcyOGQzODdkY2NjMTA5ZTEzNGZjODFkZTkzNzNiYjEgbGVnYWN5LXRydW5rCisyODA1MSA0YjM0MmVkMzA5ZTAyY2Y5YjZiYjIyYTc3ZDM2ZTkwODNmYTZkNTUwIGxlZ2FjeS10cnVuaworMjgwNTIgNjk3ZDIyM2EyZjc2NjYwMzY2ZDMyNTJkN2ZjNmY1ZDcyODg2M2RjMSBsZWdhY3ktdHJ1bmsKKzI4MDUzIGVkZjc1NzIxM2E5MmRiMDNjZjg4ZTcxMDlhZmUwYzliZGVkN2E1NGYgbGVnYWN5LXRydW5rCisyODA1NCAyMjRjNTE2YmMxMWYxZTE0NDZlYzczZDRiOTMzOGIyMDBkZjNmMDhlIGxlZ2FjeS10cnVuaworMjgwNTUgOWQ4NGE1YmQ3NjdmYThkMDY1ODYxZjI0OGU0MDllNDUyODE3YjM5NyBsZWdhY3ktdHJ1bmsKKzI4MDU2IGFiNWVlYTJkZDNjMDBjMDhkMTQxNGRiYWYxOGNiMGQyZGZkODRkNDcgbGVnYWN5LXRydW5rCisyODA1NyBmZDFiNWVmYTBjZTNlYWNjODkzMmM4NTA3MjFkNDRkMTEyMGUyNmRhIHJlbGVhc2UyMi1tYWludAorMjgwNTggMWFiMjdjMTc3MGRmNWI4NjliN2RlN2NhMDUwYjAxMDExYjU5ZjBmYiBsZWdhY3ktdHJ1bmsKKzI4MDU5IGY2NzJlMWRiYWQ5MjI0MTFiNDMyYzgyODIxMTM2YTFjODU1ZmVkMzMgbGVnYWN5LXRydW5rCisyODA2MCAxOGNhNGU3ODNmOTg3YmQzM2E2YzUyZGQyZWY1N2RjYjYwYTFmZmE4IGxlZ2FjeS10cnVuaworMjgwNjEgZTYxYjExOGU5Y2FiMjkyNmNiNTRlYmZlMjBhNGRkOWMyOTRiOTJhNCBsZWdhY3ktdHJ1bmsKKzI4MDYyIDk1NTkxNGIwYTRkNjQ2ZTc4YjFhYjgwZDdjZDA2ZTIyNjA1Y2Q0NTYgbGVnYWN5LXRydW5rCisyODA2MyA4YmMyNjViMDg0ZDk3YzFmN2NmZjNiZmU0YjIxMThmMWVhNDliMzcwIGxlZ2FjeS10cnVuaworMjgwNjQgNTlkOTIyODc3OGFkNjNlOGJkNzY4ZjAyYTY1ZDdmYjFjYzQ1MDY2NiBsZWdhY3ktdHJ1bmsKKzI4MDY1IDcyOTI4N2Y3ZmMyZTVmYWIwMDQxNTI5ZDk1YmQ0MGRjMDU3ODYwNmYgcmVsZWFzZTIyLW1haW50CisyODA2NiAyZjQxMWYyZDc5MWFkZTc2OTY1MDBkZmE3OTY0YzFhOGUyNzQ2MDU5IGxlZ2FjeS10cnVuaworMjgwNjcgYTYxODkzZDdjZWYyNTBjZDM0ZGMyMTQ4YzBmZjg4OTE4ZDhlMDVjNSBsZWdhY3ktdHJ1bmsKKzI4MDY4IGIyNjVlNzZiYWI4ODMyOTM0MWJhODQ0N2E1MmU5Yzk4M2I4NzY1M2UgbGVnYWN5LXRydW5rCisyODA2OSA2YTZkMDJiZTMyMWNjZDEwMTgyMzczYzUwYjkyZTA1MmI2YTdjNjI4IGxlZ2FjeS10cnVuaworMjgwNzAgZDI1Y2Y5NGQyMGIxZWFlZWIwODg4ZGM2MjFjMjI3MDk0YzEzOGY0ZiBsZWdhY3ktdHJ1bmsKKzI4MDcxIDRmYmY1MzQyMTFiOTdjODgyYzA5ODQ0YmMwMDRiMTY4MGFmMTFlYzkgbGVnYWN5LXRydW5rCisyODA3MiA1NzlmMDljMGZkYmNkOTJhZGQ4NjYzYzQyYjc2MDMxYzYwMzJmNTUyIHJlbGVhc2UyMi1tYWludAorMjgwNzMgYmRiYTcyZmZkMjFiZjlkNjI2NzRiYjEwNjNiYjdkN2Y2MWQ2NmE0YiByZWxlYXNlMjEtbWFpbnQKKzI4MDc0IDk1YzQ2MjNmODE4NTA4ZjJmYjk0NGYwYTcyZjMwYTUwZDJhNzQwMmUgbGVnYWN5LXRydW5rCisyODA3NSA3MGI2NzUzMTE3Y2MwMWJkN2Y3NzQyNDc2YTM4YmUwY2Q5YmEwNGI4IHJlbGVhc2UyMS1tYWludAorMjgwNzYgNjQ3ZjkzNjc3NTBlODc0MDEzMWM0NGQxY2FlZDZhOThkODVmNzg3ZSByZWxlYXNlMjItbWFpbnQKKzI4MDc3IDY4OGVlZmJhMDg2OWJiNWQzZjJjODE2YTUwMGVhYzIwMzUyMDA1MGQgcmVsZWFzZTIxLW1haW50CisyODA3OCAzNzk2ZDM5ZjBiODBjODFjODVlZGM5N2M2ZDRiMGE5YjlmYzk1N2U0IGxlZ2FjeS10cnVuaworMjgwNzkgMzI2OWJkZDY1OTg4ZWZmODk3NjM3MDg0YTgzMWFjZWI1YmU0M2E5OSBsZWdhY3ktdHJ1bmsKKzI4MDgwIGZlYzBiMGFlZjE0YmE0ODdlMDY2ODY0YTg2ZjRlYjM5NWY4MzgxMDMgbGVnYWN5LXRydW5rCisyODA4MSA5ODA3NjdjNmNkOTc1YjYxN2UzYTA3Y2YxYjZmZDhmYTNhMDVkOWMyIGxlZ2FjeS10cnVuaworMjgwODIgNDc5Y2I1ZmYyZTYwOWM1YTIxN2E4Mjk0MGJmZjkzOTNhYjdjMjMxOSBsZWdhY3ktdHJ1bmsKKzI4MDgzIDcxZGNhN2M3NmZhMjI3OTJiZTkzZmI5MGM0YzRiZTdlOTA5MjVjMWMgbGVnYWN5LXRydW5rCisyODA4NCA3YjEwZTdmZjc5NGRjNTAwMGZhZWNhMWYzMDYwMmZlMWVkODFiMjcwIGxlZ2FjeS10cnVuaworMjgwODUgNmQyNmQ0YjljNWEzNmMxOGU1NTA3MzkzYjBlODc4MmVkYjUyNjNhYSBsZWdhY3ktdHJ1bmsKKzI4MDg2IGFlZTE4ZWEzZDI4NDc2NTM1MDdmMmIxYWIxNjllNDE4YTNkZjQxMWEgbGVnYWN5LXRydW5rCisyODA4NyAwNDkyYWQxYWM2MjM1ZDFmYWYzYTg0MzkyODA1Y2NjMmFlZTUxODUzIGxlZ2FjeS10cnVuaworMjgwODggNTY3NzA0YmZhNTk1YTVhYjdiNGNlNzFhOTZjNDE2MmIyNDAxNzQyMyBsZWdhY3ktdHJ1bmsKKzI4MDg5IDI3NGU0MmE2OTFlMGM4NDM2NTNmZjhiMmEyNGM5YzZiMmM5NDljZDAgbGVnYWN5LXRydW5rCisyODA5MCAzNjQ5M2E3YzYyNTM5YmNhOTk1YTkzYjEzNjcxZjRjNGNmOTMwNTM2IGxlZ2FjeS10cnVuaworMjgwOTEgYmU0N2RiMzgzMDdlMTgzMWE2YjRmNDdjNmFlNjI4MWU1YmE4MTExMSBsZWdhY3ktdHJ1bmsKKzI4MDkyIDhiNDcwMjgxNjQ1ZTYwMWRmMzJkZDBkZDg2NWU3ZDAxYzIwMGJmNGQgbGVnYWN5LXRydW5rCisyODA5MyA3MzRmODljMTk0ZGQ5ZjEwM2VjMzA0YmFjZDllZjg4YzQzNWVmOWNlIHJlbGVhc2UyMi1tYWludAorMjgwOTQgZGViY2Y3MjA2N2YwNTk2N2I1ZDc1NjQ3ZDYzNDRkMWYwOTgwYmYwNiBsZWdhY3ktdHJ1bmsKKzI4MDk1IDljNmYwZTE5OTkwMzVhNGYxNDc1NTI2MjcyMTVkNzVkZmE3NGQ2OGEgbGVnYWN5LXRydW5rCisyODA5NiAwY2RiNmU5YmNiNTIxNGRiMzg3MGU1YjhhNmExNDUyZWQwOGMzN2FlIGxlZ2FjeS10cnVuaworMjgwOTcgYTI4YzljMzM2YWI3MTE5MTcxZGI3ZTVkNmNjMzQ1OTAzNWM5ZDVhOCBsZWdhY3ktdHJ1bmsKKzI4MDk4IGU3MWJiYmEwYTBiOTc2NjhjNzY4NDBmNGQ2YTMwZGU5YmRiM2Q0YTYgbGVnYWN5LXRydW5rCisyODA5OSA4MmUzZmRiMjgxNjQ1MGMyY2I1ZWRlZDBmYzY4MGM4ZDUyOTljMDEwIGxlZ2FjeS10cnVuaworMjgxMDAgYTk4OWEyZWFhMmFjMTA5MjU1ODRiMGQyM2ZmNzgzN2RjMTQwNzIxOSBsZWdhY3ktdHJ1bmsKKzI4MTAxIGJhMzAzOGEyN2MxZTM5Yjc1NWY0OGFkZWJhNmMxNTYzMmJkZTk1MWEgbGVnYWN5LXRydW5rCisyODEwMiBlZWY3M2U4ODIzZDVhZWY5MWQ0OWI3ZWMxYzcwMWY5Nzg3M2Q5MzI3IGxlZ2FjeS10cnVuaworMjgxMDMgMzFiOWQzNjk4NjFkODQ5OTdkOTViZDFiYTQ1NDAyYjc1MWJlM2MxZiBsZWdhY3ktdHJ1bmsKKzI4MTA0IDgwYzdhODJkNjE0NDg5ZTk0NTA0ZjE2OGJhZDY4ZmZmMTgwZDYwM2YgbGVnYWN5LXRydW5rCisyODEwNSAzNDEyOGNjZjJlZTYxOTNiMmZmNDdlYWI4ZmE0ZWYzZTcxMjFlOWVmIGxlZ2FjeS10cnVuaworMjgxMDYgYTJmOWJiNTQyMzFiMTNhOWJjNzM3ZjVhMTA2MDVlODllMjUyYTAxNSBsZWdhY3ktdHJ1bmsKKzI4MTA3IDZlYjk1ODcxNmQ5N2M4NDBjZWQyYmVjZDQ5MzQzMzUyODEwN2RiM2YgbGVnYWN5LXRydW5rCisyODEwOCA0MTgxZTNhNDJkMGEyM2RhYmRhMGY3Y2Y4OWEwOWQxNDEyYjA1MGM2IGxlZ2FjeS10cnVuaworMjgxMDkgNTY0YWJiOThkZWI4OWM0ZTI5ZDlhN2M2OWZhYjU1YjI4M2I3YjgzNSByZWxlYXNlMjItbWFpbnQKKzI4MTEwIGU1YmM0NzBkMWQxZTFmZTA3NjY2ODZjMjQ0OTVhMGE2NmNhZjRhOWUgbGVnYWN5LXRydW5rCisyODExMSAwZDQ2ZTRiODljYWU3YTRlYTFlM2VkNGIyYWM5ZWQwNmQ1MTZhZDQ1IHJlbGVhc2UyMi1tYWludAorMjgxMTIgMmRjZDRkOTI4MTQ3MDNmOTkxZGY0ZWE2OGZmMmIxZDhkZDdlMTQzOCBsZWdhY3ktdHJ1bmsKKzI4MTEzIGFhOGJkMGRjNGY4YTEwNmYwNjg0MGEzN2FlOWE1OTQyN2U0ZjdjMDggbGVnYWN5LXRydW5rCisyODExNCA2Yzk2NTg3YTE5N2Y5Y2RhNDMyYjhmNTI1NGJmZWUwYmE1YjRkOWY1IGxlZ2FjeS10cnVuaworMjgxMTUgMTFjNzAxMDM4ODA1NjUxOTNlYTRjNWYwNzllN2IyMzY2ZGQyZjFlOSBsZWdhY3ktdHJ1bmsKKzI4MTE2IDQwNjc4OGNhZWY2ZjI2ZWNmMGQ1MDcxYmY5OWZlYmVjMTY0NzRhODQgbGVnYWN5LXRydW5rCisyODExNyA5NDI5YzNjZjQyYTcxMmJmNDBhMGI4ZjE2OGZhZDBlODVmMTg3ZmZjIGxlZ2FjeS10cnVuaworMjgxMTggZGIyN2E0MmNjZjQ4YWMzMGVhYTE3MmIxNDJkZjI2ODgyOTkyYWU1ZiBsZWdhY3ktdHJ1bmsKKzI4MTE5IDc0MTQzZGI2YWUyZjk3ZmI2YTU0MGFmNzU4ZWE2MDU3ZGRlMjY0ZGMgbGVnYWN5LXRydW5rCisyODEyMCA0Yzc0NmJhMjRkZTIxYzgxMGI1MGE3OWFiZjA1N2NlMzE2ODRlZWU5IGxlZ2FjeS10cnVuaworMjgxMjEgMzQzZTY0YzkyZWIyOGUwOWI1ZTBjNzQ5NDM5NjIyMzliZjBjZmM0NCBsZWdhY3ktdHJ1bmsKKzI4MTIyIDFkM2Q5ODBhMzE4NjA0MWMwNjIzOTZiOWNkNTdmOTkyNmFhN2I5ZGUgbGVnYWN5LXRydW5rCisyODEyMyAxMjlkOGQyZTE5MDRjNzI2OTQ0YzFkNTljNzFjYzJlNmUwN2E1Yzc2IGxlZ2FjeS10cnVuaworMjgxMjQgNWM3NzMxNmIyMWY3MGQ3NThjZGI2NWM1ZDg4YTIwZmYyM2M4NWQxOCBsZWdhY3ktdHJ1bmsKKzI4MTI1IDM3NGY4NzljNWQ4YmQ5N2YwYWM0YmJmOWNjNzUxYmE0NDZhMTQ2ZDUgbGVnYWN5LXRydW5rCisyODEyNiAyZDNjNGE3YWVjMGE3MDZkZjUyNTJiNjQ1NDgzYjRiMzg5YzEyMTk5IGxlZ2FjeS10cnVuaworMjgxMjcgNTEwZTczYWUzZTllOWQxMjNlYTMzNjAyZWVmMTQ5Mzc2MTNmZTYxOCBsZWdhY3ktdHJ1bmsKKzI4MTI4IDllMmY1Mzk2MzRlODBhMWVkNjNjYzg2MWUwOTEyYTA4MGQ0ZWUwYmIgcmVsZWFzZTIyLW1haW50CisyODEyOSAxMTI1ZDk0ODlkZmE0MDA3YmU2N2FiZjc3OTg4ODg1YWU3NTNlOGJiIGxlZ2FjeS10cnVuaworMjgxMzAgNjkwNzlhYzdjNTEyZTU2MGE4MWNlNDA3MmFiNjNlYjZjYjMwNGIzNSBsZWdhY3ktdHJ1bmsKKzI4MTMxIGJiZDVmOGFmNTg4YWMxMGNmMTRkMzBhZjcwOTY5NDBmYTVkOTY3M2QgbGVnYWN5LXRydW5rCisyODEzMiBiNTY0MGU3NGFhNWMyOGJlZmMxOWJjZmZjYmI0NDZhODkxNTI3NTdlIGxlZ2FjeS10cnVuaworMjgxMzMgM2I4YTcwN2I0MWM0NjJmMGQ5MGU2ZmUwOWIwZDNkZWM3ZDA2OTVjYiBsZWdhY3ktdHJ1bmsKKzI4MTM0IGIyZjdkZjQ2NzcyMjFjY2FkYWRjNTkzNjVhZWFjZGYwZTg1ZGY0NzIgbGVnYWN5LXRydW5rCisyODEzNSA4ZDg1MGQ1OGYxMDljN2Y1N2VkNDdhYzJjODcwMTU4Y2MwYzVkZTk1IGxlZ2FjeS10cnVuaworMjgxMzYgZDcxNWNhOWRiM2FhYTJkMTRjMDg2YTI5NTFmZjJhYzgzM2M4ZGY2MSBsZWdhY3ktdHJ1bmsKKzI4MTM3IDA5ZmYwZWQzM2VmY2I5MTk3ZWE4NGI3ZTRjZmQ5YjI4MmU2NzBmNjEgbGVnYWN5LXRydW5rCisyODEzOCBiMDI3M2YzOTdjZjEyMmRiYTIzMmE5YzMyOWZlZDBhMzFlMjEwNDVmIGxlZ2FjeS10cnVuaworMjgxMzkgNDkyMzE2MGUwNzA3ZjdjM2U0ZmUwMWM1OTZkNWU1NGYzYjAxYzAxYyBsZWdhY3ktdHJ1bmsKKzI4MTQwIGIwZDVmYjU3N2FiNjAxY2RhMzhiYWVmNDI0ZmFhZjk4OTRlMjViMzYgbGVnYWN5LXRydW5rCisyODE0MSBmZjA1ZWVmM2E2ZDFlYjBkMGFjNTAzOGQxZThmMTA2MTMzNjRhODIzIGxlZ2FjeS10cnVuaworMjgxNDIgZWFhODc2MzJiMWU4ZWRmOGUyYmU4M2YzM2U5MDJkMjQyZGRlNmRjNyBsZWdhY3ktdHJ1bmsKKzI4MTQzIDU2NTYwOWJiOGQ4OThkM2MzNzViNjFlNTgzODk4NDM5ZWNmMzA2MzggbGVnYWN5LXRydW5rCisyODE0NCBlZWM2ODMyODE4YTM3MDA5ZThkNzBiM2JiOTNiNGEwNGY1NTNhMjllIGxlZ2FjeS10cnVuaworMjgxNDUgMTAzOTFkNThkMTg0MTFlMzc2NDAyNDI2ODBjZjBkYjhlZjAyYzAzYyBsZWdhY3ktdHJ1bmsKKzI4MTQ2IGU3NTY4NjdhY2U4MTBjOGZiY2Y1OTk1OTBjMjc3ZTI2YzFlYTAxZjMgcmVsZWFzZTIyLW1haW50CisyODE0NyBjNjU5ZjA0ZWU0OTkzNjhkNTQ2MzYwMTVkMGNlZGEzZWI1NDMxZmIwIGxlZ2FjeS10cnVuaworMjgxNDggNmQ5OTc0YjQ1ZmVhMTMzMzk0OWRhZDY2NmY1NjljZWJjNjE4OWVkZSBsZWdhY3ktdHJ1bmsKKzI4MTQ5IDFhMzI3MGUyNmMxNjJmNDk5YTBmMTY0MzUzZjg2OTIyZjFmOTIyYTYgcmVsZWFzZTIyLW1haW50CisyODE1MCBiYTAzNWY0YjQ3YzE1NjAyZjExNTQwN2M0NjUzNzY3OGNhYWEwYzNlIGxlZ2FjeS10cnVuaworMjgxNTEgNDkxNjlkMDBhYjE4MjI0M2M5NGVjOWY3ZDBiZWYyNmRiYTQ4ZjE2NyBsZWdhY3ktdHJ1bmsKKzI4MTUyIDE5ZTAxMGY3OTJhMzgzZTJlY2I3MzU5ZGUwMTgxODk4YmY3NzIxMzMgbGVnYWN5LXRydW5rCisyODE1MyAxOGMzNWJiNWZlMDc0M2ZmNTcxYzgwMjZkNGU3YjlhNzE5OWFhODU0IGxlZ2FjeS10cnVuaworMjgxNTQgYTQzNTE5ODg3YjE3OTRkNzAxN2UxYTcxNzhiY2FlNzlhYmI5MDQ4NiBsZWdhY3ktdHJ1bmsKKzI4MTU1IGMyNDhiZWU1MmRjNmE3OGU5ZDhhYTA2MTM5OTVjZTRkYjM5ZTNlN2QgbGVnYWN5LXRydW5rCisyODE1NiBkYmY2ZTU2MzAyM2I5ZDRmNjc1NWI3ZWZlYzZkZDJhNTY1MDQ2ZTUyIGxlZ2FjeS10cnVuaworMjgxNTcgYzFlYjY2ODUyNWUxMWNlNDdmYTk0N2IxMDA5OTBkMzRiMDNjNDg5YSBsZWdhY3ktdHJ1bmsKKzI4MTU4IDI3YWU5NzhiZWU1ODU3MzQyOWE5NzY2MjEwZDBkNTM4OWMwZTk4MDIgbGVnYWN5LXRydW5rCisyODE1OSA4YWIzMDMzNzViMzA1ZTgzODg1NDdlMWQ0YzdlY2E4NDY4N2RlNzU0IGxlZ2FjeS10cnVuaworMjgxNjAgYzg4ZDA4NDhjNWM5MzBjMjZjMDBkYmIxMWY1ODMxMTgyMGM5ZjdjMSBsZWdhY3ktdHJ1bmsKKzI4MTYxIDljMjVhYTEzYzM2ZTFjOTJiOTA0ZWYwMzBiNzhiZDY1NzdjODcwNmUgbGVnYWN5LXRydW5rCisyODE2MiBiNTA0ODM1Njg1YzM0ZWE3M2U3MjBlNjY4MDAzOGE4ZGI4OTJkODJkIGxlZ2FjeS10cnVuaworMjgxNjMgMjdlY2E0NzY2OTM3YWVmNGNiZTJmYjllZGQ5OWI1NjIzNDg5ZDA0YiBsZWdhY3ktdHJ1bmsKKzI4MTY0IDNkMjMzNTA5NGI4OGMxN2ZhNmI1ZjZkMDg1NDlkY2M0MmIyNWZiOGQgbGVnYWN5LXRydW5rCisyODE2NSBkY2ZhYmU2NWMyMmU1YjJiNjhjZTE1NTNhZTA3MjQ5ZTVlOWY4YmMzIGxlZ2FjeS10cnVuaworMjgxNjYgZTA0MzFkOWM0NDc0MjAyN2Y3MjhiNWMzMjYwZWJiOWI4NDk0YzViMiBsZWdhY3ktdHJ1bmsKKzI4MTY3IGNjZjY2YTFhYTBiODQ0MjlkNTU0OGQyYjUzZjYwMTlkNTE3MmFkODAgbGVnYWN5LXRydW5rCisyODE2OCA1ZWQ3Yzk3N2QyYTk2ZGI2ZDQwMGNmOWZhNWQ2ZTQ4N2QxZWUzYzIyIGxlZ2FjeS10cnVuaworMjgxNjkgZjBiZDVjZDRiMTcwNmIzMzlmMGExMzdlNGFlZjI5ZTZjNjA5MGMxYiBsZWdhY3ktdHJ1bmsKKzI4MTcwIDRjYWZkOWRiYzhiNDc5MTZlOTIzNTY0MjM4YWE5MzZlYmEzMDkwOWUgbGVnYWN5LXRydW5rCisyODE3MSA1OGVhNDIwZGRjNWVlYWRlMGUyZmZiY2JhMDRiYzI0YTBmMzNmNDU3IGxlZ2FjeS10cnVuaworMjgxNzIgMjcyMjA1N2ZmZTg2MDEwOTk3NDYxMGFjNjE2YzZiNDM2MjYyYjllYSBsZWdhY3ktdHJ1bmsKKzI4MTczIGFjYjI1ODU0NWE1YzEyNTQ2YjQ1MTljMDM0NTQ0MzY5Mjk2N2FkNDMgcmVsZWFzZTIyLW1haW50CisyODE3NCAwYWZhY2Y1ZGM0MmVhYmY4YjBjMjk5ZDAxN2UyMDhhOTIzMDNlNjVlIGxlZ2FjeS10cnVuaworMjgxNzUgZDc1YmQ5ZTVjNGQ5YzNkODRkNTMxODUwMThkOGNlNGExNjg1MTUxNCBsZWdhY3ktdHJ1bmsKKzI4MTc2IDE4MjQ5ODNmZDk0YTc0NDg0OGEzMmQ0MmM5YTBhM2Y1MzNlNTFmZWUgbGVnYWN5LXRydW5rCisyODE3NyBjNjBlODk1ZDExMjViMzRkYjI4MTMzNGM4NWMxZTlkZGVkMTE2OTg5IGxlZ2FjeS10cnVuaworMjgxNzggODAxYTQ0YWIyYWFlNjcyMTg5ZGM3OGU0M2UzZTNjNjVjOWFmYjFiZiBsZWdhY3ktdHJ1bmsKKzI4MTc5IDllN2VjMmY1YTFiZDM3M2ViYjgxYmNiODJiMGUxNTYxMGJmYjRiNjMgbGVnYWN5LXRydW5rCisyODE4MCA2YzZkZjY5MjM2YjFkMjk1YTg2NmNjOWUyN2VkYmEwNjMzYjM4N2ZmIGxlZ2FjeS10cnVuaworMjgxODEgZmUzNDcyZjJmOGViNzIyZDVlZTEzODkxZjBmZjhkOWQ4OWQ3M2ZkMiBsZWdhY3ktdHJ1bmsKKzI4MTgyIDY5NmEyODQ1NjllNjRjYjhhMTBmNmQzN2Y5YTM2NzdjNWVhZGUxOTEgbGVnYWN5LXRydW5rCisyODE4MyBmMWQxOGZjZDU2ZTY5NjI4NTk5MmRkMjYxZGQyNzYyYzFiNTBkMjM0IGxlZ2FjeS10cnVuaworMjgxODQgNTNjYjcxNjM4ODQxZTZkZDg4Mzk1MjZkNzVlODI1ODlkZjUyOTI1ZSBsZWdhY3ktdHJ1bmsKKzI4MTg1IDFmZTA2NjU1YzUwYzk1OWUzZWVhZDQ4MTQzZWI2ODVlMWNiZTFlZWQgbGVnYWN5LXRydW5rCisyODE4NiBmYWUzODZkNWUzNTQ1NmU1YWIxOWUxOWQzMThmOWIxYTE1ZDZhYTRlIHJlbGVhc2UyMi1tYWludAorMjgxODcgYzIzODUzZjdlYmViOWUwNWNlYjM1OGNiZWExMWFhMDBjMWE2ZTA2ZCBsZWdhY3ktdHJ1bmsKKzI4MTg4IDAxZDZjNTE0NmZmOWFlY2EyZmYzMTA3NGNkZGVmMGViNWJlODAzNzIgbGVnYWN5LXRydW5rCisyODE4OSBjZWM0MWUzNzYxYWMzZTQzNDhjNWNmZDgzNzFkNjUyYWQ2M2ExYTMwIGxlZ2FjeS10cnVuaworMjgxOTAgNGRlOWFjMGU0MTczNjYxYmUxZjFkZTMyMTE0NjljYjBmZmUxYTM0NiBsZWdhY3ktdHJ1bmsKKzI4MTkxIGYwZDYzYWExZGZjN2U5MDlhMmQwM2FhMjZhNzA4ZGYzZTRiNjNkYmYgbGVnYWN5LXRydW5rCisyODE5MiAwZjYxZTA3NDE0N2ZiMWFhZmNhMjQ3ODM1YTc3MGQyMDBkYTY2NDEyIHJlbGVhc2UyMi1tYWludAorMjgxOTMgMWZkMzg5MDBmNTNiODYxMGVlOWYyMGZmYjM2YWE0MDFmOGM1OGQzNSBsZWdhY3ktdHJ1bmsKKzI4MTk0IGZjYmRlMjI2NTQ1Y2MzOGMyNjNiNWMzNzU0MTUwMzM2NWM0NDdmNWMgbGVnYWN5LXRydW5rCisyODE5NSA4MjU5NDhjMjFmMGRjMTM4ODVjYjgxMGViMzIxNDM2NTY1NDNiNjNiIGxlZ2FjeS10cnVuaworMjgxOTYgZGJmNGNjNTYwODk4ODNlMDc5YzcwOGUzZTY4ZDY3N2RmMmUzNjI3OSBsZWdhY3ktdHJ1bmsKKzI4MTk3IDRjNDZiM2VkYWE1ODdjMGUxZjc1MGIzOTRiOTAxMmQ5ODMzZDlkNzAgbGVnYWN5LXRydW5rCisyODE5OCAxOTUxYjJjNjYwNDQzOGIxMzJmYjE4Mzc4ZjhmMjAyZjBlODM5ZmYzIGxlZ2FjeS10cnVuaworMjgxOTkgMWM2M2QzMDgyNjU2OWVhMTc0NjViOTA1ZTE4ODY5Y2I3YjEyZDFhMCBsZWdhY3ktdHJ1bmsKKzI4MjAwIDQ1MmQ2YTkxNjE5NjI0NjNmNTY1ZWNkOTFhNGM2MjdmODVjZThjYjcgbGVnYWN5LXRydW5rCisyODIwMSBkZTcxZTZmZTY0YjA1MjU5NDlkMzI5NTk5YzJiZmRjZTY3MmUyZjQwIGxlZ2FjeS10cnVuaworMjgyMDIgNmE5ZWEwYzIyY2VhMWY5YWIxMDg5YWE4NTA5NTNkM2VlMTRiNDZjMyBsZWdhY3ktdHJ1bmsKKzI4MjAzIDQ2MWFmZGI1Y2I5ZWRmNjMwNmQzZWU4N2FlMzI3ODA2ZGQ2ZDRjMzYgbGVnYWN5LXRydW5rCisyODIwNCBkOWZmOTdjZTc1YmJlZDFlNzY3Mzk3OGExMzcwZmM3YWQxNDY2MzcxIGxlZ2FjeS10cnVuaworMjgyMDUgOTMxZmIzNzAwZDBiYTkxYjkwNWVjZDEyOGE3OGUxNzBhOTU2NzhhMCBsZWdhY3ktdHJ1bmsKKzI4MjA2IDg2MjY5NWI5MjBmZGQ4OGY4YTZiMzc3ZTAyM2I4ZDczMThmOWQ0ZjEgbGVnYWN5LXRydW5rCisyODIwNyBhNjJjZWU0ZWVkOTY2ZjFmYzJkM2Q5MmM5ZGM0ZTUxNDRjZGYwMDE2IGxlZ2FjeS10cnVuaworMjgyMDggMThjYmFkZDgwNzEyNWFlZDQyYjE4YTFlN2JiYTYwM2JjZDUzNWJlZiBsZWdhY3ktdHJ1bmsKKzI4MjA5IDMwY2ZmOWMxYmY2OTNjMDhjZWEyYTk2ZWQzZTE5MTdmNDcyMTY2ODMgbGVnYWN5LXRydW5rCisyODIxMCBmMTQ3YjU5NDQyNDQ2N2YxNDI3OTM5NDg1N2E0OGVlNTg0ZTM4MzEzIGxlZ2FjeS10cnVuaworMjgyMTEgOWIwNmY0NGJkNGEzNGQ4NzNkNmQ1YzM1NDg2NDE4ZjcyZjc5OWM3OCBsZWdhY3ktdHJ1bmsKKzI4MjEyIDY4NWNkNTJjNGM0MzhjM2ZmNTU0NzA3MDI1NzUwYWExYmNiMGU0OWEgbGVnYWN5LXRydW5rCisyODIxMyBhYjYzYWYzZWMzNDk1Y2JjN2M4OTAzYTMxYzc0YjgwYzNkNjJhMmM1IGxlZ2FjeS10cnVuaworMjgyMTQgYzc1Y2RjNDcxYjIyNDRhOGIzYTdjNWUxY2U5NGExYWEzZTVmMGI5YyBsZWdhY3ktdHJ1bmsKKzI4MjE1IDdjZTgyZTlkMDhjNzhhNTA1OTBiZjgwZmEyMjE5YWE0OTRiNjc1OTMgbGVnYWN5LXRydW5rCisyODIxNiA1ODYyM2NlOTRkNDA2YzQ5MTRkNTlkZTUwNWU3ODljYWNhOTZhNTY5IGxlZ2FjeS10cnVuaworMjgyMTcgNzRlZDQ1NzIwOGMxYTBmNTM0ODk3Y2NmODYzYTU0MzRhY2ZmMGFmZSBsZWdhY3ktdHJ1bmsKKzI4MjE4IDdiN2Q4ODIwYWUzODBmMDllNjBiYjZhY2VlMTkzZGMxZjZkMzE5NzggbGVnYWN5LXRydW5rCisyODIxOSA2NDIwYjk3ZWI1OWYxN2MxMWFiY2E0YjQ3OTdhOGMyODM3NDI0OTFkIGxlZ2FjeS10cnVuaworMjgyMjAgNTBmYWE2ODM1ZGRjNDE3OTk0MjEwMjIxOTdiODFhZTg3Njg4ZTVlZCByZWxlYXNlMjItbWFpbnQKKzI4MjIxIGM0NTY0MmUxZGNhOTNjNTM1ZjJmNTY3MGUzMjljNTFlNDNjZGM3YzEgbGVnYWN5LXRydW5rCisyODIyMiAzYWU4ZTNmZjdlM2YzNDM3Y2M2ZTkxY2I4YmIyZGVmODI0YjFlMWE5IGxlZ2FjeS10cnVuaworMjgyMjMgMzFkMjg2MDA4OWU2MDBiNmY0YjIxZDU4OTYxMjlkODNiNDU0ZWMxYyBsZWdhY3ktdHJ1bmsKKzI4MjI0IDRlNDRmYWJlMGZhMDE3YmI4NWIyNTAxYzQyMTY4MjEwZDhiM2VkZjIgbGVnYWN5LXRydW5rCisyODIyNSAwMTExMzhiNWYzODlhMjg0OGUyNWViNjIxM2NlNTdmZDM0YmU4OWRkIGxlZ2FjeS10cnVuaworMjgyMjYgYWU5YzlmOTBiNGIwMWJmYTBiMTkxMWI1OTc3ZDI1ZDZjOThjODczYSBsZWdhY3ktdHJ1bmsKKzI4MjI3IGQzZDdkZTcwM2EyMmRhYWM4ZDlkOTcyN2Q2NmY5YWVhYTI4NmQxOWIgbGVnYWN5LXRydW5rCisyODIyOCA1ODhkMTQ1YzQ0ZGQ5ZTZjOTYxN2Q5ZTcyMDM2Zjc5MzFmZjQ2MDY0IGxlZ2FjeS10cnVuaworMjgyMjkgN2M5MWQzMDNjNTYzZWJlODZhODFkOTVlYTZlNmY0Y2U4NWE4YWM5NCBsZWdhY3ktdHJ1bmsKKzI4MjMwIGMwMDFlNWExNTM2OWYzN2E3YmExMjFlMjA5N2Y2YWU4NjI4MDgyOTUgbGVnYWN5LXRydW5rCisyODIzMSBhN2RiZTRlN2Y1ZGVkY2MyZjBmYzM4NTNjMDcwZWVmNDI2M2JlOGZjIHJlbGVhc2UyMi1tYWludAorMjgyMzIgZTVhMDdjYzgxNTU5MDU4NGM1YWNhM2YxYWJmZDRiZTkyZjVmZGNmOSBsZWdhY3ktdHJ1bmsKKzI4MjMzIDRjZjUwMjcxNmQxNWQ1M2ZlZmU1Y2RhYWFiMmM4MGNlMzFjZjgwNDQgbGVnYWN5LXRydW5rCisyODIzNCAzMWVlMzJjMjNkMjljNTlmOWYzMTAzM2ZiN2UzNWI1MTE0MjNkNmRhIGxlZ2FjeS10cnVuaworMjgyMzUgOGUzZTBlMTFmMTRjYWNhMzMzNTQ3YWJlZDNmYmE0ZDM2ZTc5YmUxNCBsZWdhY3ktdHJ1bmsKKzI4MjM2IGE2MDJlNDg3OGI0ZWNkMGNhYWIzOTQ1OWM0MmRmNDlkYmNmYTlmZmUgbGVnYWN5LXRydW5rCisyODIzNyA0NTNjODhmOTYzZWMzMjYzODhlODVmMzVkNWZiMzhmMGVlYTE4YmZkIGxlZ2FjeS10cnVuaworMjgyMzggY2E1OGY1YTQ1NThiOGZhOTI4YzNkMmUwYmEzNjkxNGI3NDNmYWQxZiBsZWdhY3ktdHJ1bmsKKzI4MjM5IDY0ZjRkZDc3MGM2N2RhNjUwOWE5MjE4NDE4Zjg0Y2UyNzRmZDViY2QgbGVnYWN5LXRydW5rCisyODI0MCBlMzk5ZDBhODc1YjdlMWZmMzg5MjRjZGRkOGU0NzNiODg4MzZhNjQyIGxlZ2FjeS10cnVuaworMjgyNDEgYzAwNGIyYmNkNTQyMWM0NDQ3ZTM0NWVmOWVlNDlkZjFlZWVjOTAzYiBsZWdhY3ktdHJ1bmsKKzI4MjQyIDE5ZjI1YmNmNWEwMDJlZDFiZTdiZmVjMTk0MTMxZmQ1NWZjMzRiMDQgbGVnYWN5LXRydW5rCisyODI0MyBhZWE2OGNiMzY4NTk2MTM0Y2MyYTUxYTIzMWVlNjViYTliMTdhYTAxIGxlZ2FjeS10cnVuaworMjgyNDQgMTdlOTVjYzA2ZjY5M2IwNmM4ZGNmODEyYzFmNjRjMWQ3ZmNmMjhiYiBsZWdhY3ktdHJ1bmsKKzI4MjQ1IDJmZjQyNjhmMjVkYzczOGE5ODk2MDIwNTY2ZWVmMWIyYWI0NDcxMzIgbGVnYWN5LXRydW5rCisyODI0NiAzYWY4ZDgxZDdmODZlNDhhZjljODNkMTU5MzIxY2I2ODNlMTZiNDIwIGxlZ2FjeS10cnVuaworMjgyNDcgYzlhZjg3NTA0OGU3Mjk2YjUwZjRiNzFiN2ZhZDcyMGI1MmJjMzA2MSBsZWdhY3ktdHJ1bmsKKzI4MjQ4IDExYzFjYzk3Yjg3YTMxZjZmNjM1ZGZhNTEzZWEyODJlMjkwNzViN2QgbGVnYWN5LXRydW5rCisyODI0OSBjZjU5MjhmYWIxMDhkZTlmYmUwMjYzMmQwNzE3NmM3MTdjMmIzYWE3IGxlZ2FjeS10cnVuaworMjgyNTAgNjkzOWQ3MjE4MmU2YzQ5OTFjYzc0ZTU0Yzc0Y2U1MDM0OTczOGI1ZSBsZWdhY3ktdHJ1bmsKKzI4MjUxIDEwYTRlYzQ1NTQ5ZDBkODk0OTEwZGRhOTgxOGI5Nzg4MTkzNTQ1ZTIgbGVnYWN5LXRydW5rCisyODI1MiA4NzNmMTJmNjhlM2IxMDE0OWJjZDdmM2Q5OGQyOTVmNmZmYjk5Y2U3IGxlZ2FjeS10cnVuaworMjgyNTMgZGFjZDEwZDQ2ZTUyOTQwNWI4Y2Y4NGU5Y2RkZmUwOTAyZjQ2Y2Y5ZSBsZWdhY3ktdHJ1bmsKKzI4MjU0IDNjOWM1NmQ5N2U1NWU3MjNiNmU3M2I4M2IxN2RmYWNlNWFiMmI4ZGYgbGVnYWN5LXRydW5rCisyODI1NSA4YWI0NmRmMzE4MmU3OTQzM2NmYjI5ZTcxMDgyYTFlY2Y3YzFhZDBkIGxlZ2FjeS10cnVuaworMjgyNTYgMzRjYzk4ODkyZTg5MmU2NzM3ZWUxYjMxNDM4ODAyZTQyYzcxZTFmNSBsZWdhY3ktdHJ1bmsKKzI4MjU3IGFkMzYxZTFkNTRiYmEzZTJmNGIxMjUwM2E2ZGZkYzRhNDAxNGRmYTcgcmVsZWFzZTIyLW1haW50CisyODI1OCBlOWRkM2U5MWU2NTMxMGI3MDc4OWYwOWFmODA3NWMzYTcxNjI4ZDg3IHJlbGVhc2UyMi1tYWludAorMjgyNTkgMTM2Yjg1MzYyMmNjOTIzNDc2OTYwNzdhZTMyZDk0NzBkODlmZTE4ZiBsZWdhY3ktdHJ1bmsKKzI4MjYwIGJlZDVkNWU1MzZiYzBjZWMyYmFlYzQxYzNmN2M0ZGZkZTg1MWYxNGEgbGVnYWN5LXRydW5rCisyODI2MSA4NzQ0OGEyMjhjY2EyYmVjYjI3MmIzODU2NjkzY2Y3ZWI5YTIyM2M2IGxlZ2FjeS10cnVuaworMjgyNjIgMGVmNmMyYWQwNzZiMTMzOTBkNjliODVmMThhYWIwMzhiNmZmYjZlMyBsZWdhY3ktdHJ1bmsKKzI4MjYzIDU5MjQwNmUwYzliMDE5YjY2NDJhYzRiMDJkNmQ5OGJiOWJhM2VmOTUgbGVnYWN5LXRydW5rCisyODI2NCBmMjQ0NzY4NmVjNWViZTdmMTk5ZDdlZTA5NjBjZjhjZjdiY2Q1ZTQzIGxlZ2FjeS10cnVuaworMjgyNjUgZTQ1ZDE2MTFlODY5ZDY0MGRkNTEzN2U5MmQzOGFmYWUzMTMyOWFiOCBsZWdhY3ktdHJ1bmsKKzI4MjY2IDRlNzk1ZmU5ZjU0YjIxYjhmZTQwM2UzMWZkOWE1MGVmMmZkODNlMGMgbGVnYWN5LXRydW5rCisyODI2NyA1YjY1NmMzZTEzMmI4Njc0MWNlNmM1YTIzMzI2Y2M3YTUxMjc3MWI3IGxlZ2FjeS10cnVuaworMjgyNjggYTNlYmQxMjMzYzAwZWFiZjkwOWJlODIyMjNmZmJkNWYxOGZhOTI1ZSBsZWdhY3ktdHJ1bmsKKzI4MjY5IGU1MDE0YWM5N2JhMTg3OWE2ZTQ5NDY1OTgzNDQ2NTQ1YmViOTRiYmYgbGVnYWN5LXRydW5rCisyODI3MCBiNTRjZmE5OGI2NmI5YjM0YzYzNDcyNWI4ZmYzNTAwOWEwMjQwMGY3IGxlZ2FjeS10cnVuaworMjgyNzEgZjBkYmQ1YjQ5ZDhhMDFmNTE5N2QxMDZjNDFkZWQ4Yzk3MzQwZDQyMCBsZWdhY3ktdHJ1bmsKKzI4MjcyIDI1NWQxZDNlNjZhM2FkOWIyZDNiYjFhMTYwNmRiZjFhYWM0OWQ0ZTEgbGVnYWN5LXRydW5rCisyODI3MyAyMzA2MDAxZjZlYWEzNTBmYTA1OTcyMzFiNjhiZGU0MGM0ZDhjNDIxIGxlZ2FjeS10cnVuaworMjgyNzQgOWNhODk2NDIzMzc0MzJjZDM4YWMzYzdiNmVjNmVhZjJiYTk4NDAwNCBsZWdhY3ktdHJ1bmsKKzI4Mjc1IGRmMjMyNmE0ODk0ZGVlNzQzYWFiOTRhN2VhZjkwNTUwOTE4NDQwZWIgbGVnYWN5LXRydW5rCisyODI3NiAyNThlMGIxMzQ3YzJhZDg2OGQzYjY3ODQzOGY4N2Y5NDUzMjIxMjg5IGxlZ2FjeS10cnVuaworMjgyNzcgOWJlY2ZlZjZlMzFhNmJkNzA3ZWVlYmM3NjY3M2Y2Y2M1NDhjZmY4MiBhc3QtYnJhbmNoCisyODI3OCA0ZjEzZTU5ZmQwYTAzZjk2NTBhZjdmNmQ5ZDIzMmE5N2QyZWNhZTBjIGFzdC1icmFuY2gKKzI4Mjc5IGNmNTYxZTYxMjM3OGMxYTNhZmM5ZGQyNGVjMWRkZmVkYTg2MzYyYzQgbGVnYWN5LXRydW5rCisyODI4MCA5OWY1ZDE4YmU1ODgwMzg2ZGE2NDI3NTMwYjlkOGI3NTE1ODI3MTczIGxlZ2FjeS10cnVuaworMjgyODEgYjUxN2Q5MjkyY2U3YzBmMWYyNjMyYTIzZDljYTE3MjU4NjY0Yjc1YiBsZWdhY3ktdHJ1bmsKKzI4MjgyIDgwODliYTM5NzQ4MGU0MGNjZGJiNjU1MjU4ZTY0ZGY4MDk5ZjE2ZTQgbGVnYWN5LXRydW5rCisyODI4MyA3MjUzMzdiNjhjYTAyYjNjMWE4MDc5OWY4MzhlODFjZjQyYWVlMzU2IGxlZ2FjeS10cnVuaworMjgyODQgZmM3NDAzZTExODc4MzMwYzNhZDRmODU3ZGZhYTVlY2EzY2FjZDFkYyBsZWdhY3ktdHJ1bmsKKzI4Mjg1IGY0ODUxMDRlNGVlODUyYjRjMjkxZWM5ZGQ2NGQyM2Y5OTM1YmI4NzQgbGVnYWN5LXRydW5rCisyODI4NiAyMzliZGFiYjYzYWY5ZDcxN2ZkZDljNzJmNDg1MzljNWRlNDNiM2U1IGxlZ2FjeS10cnVuaworMjgyODcgNzEwYmViZTIxODJjYjE0NGExOTlkMmQ5ZjAxN2MzZGNkZTJiNDlkZiBsZWdhY3ktdHJ1bmsKKzI4Mjg4IGQzNTQxZDkwZDVlMDZlNWJkYjA2NDE3ZjdmNjY4NTdkMjJmMGZhZmIgcmVsZWFzZTIyLW1haW50CisyODI4OSBhYWFlNjkzMjE3NzE3MTgzOGJkZjkzNzczMDk1NWFjYjI4Y2ZiNTY5IGxlZ2FjeS10cnVuaworMjgyOTAgNWZmM2Q4YWFhOGY4YTA2YjE4MjlhMDM0M2M3Yzc2YTBjYjMyOTRmMSBsZWdhY3ktdHJ1bmsKKzI4MjkxIGM0ZTU1MDcwMmEyOWEzNDU5ZGVkMTI2ZmU0MDhjMmRjZjk2ZGI4MGQgbGVnYWN5LXRydW5rCisyODI5MiA4NzkxMTkzYjA5ZDY0MTdiZTRmZDYwZWJlMjhiMmY4YzM4YTM1MmQ0IHJlbGVhc2UyMi1tYWludAorMjgyOTMgMDJiMmYwODg1YzUyMTAyNDBkYzJmYjEzOTE0MGIyNTc2MDIwNjQxYSByZWxlYXNlMjItbWFpbnQKKzI4Mjk0IGQ3OTdjZmE4Y2EwZDA0NWQ1ZDNhYTBlMGIxOTA5ODAxZTBmMjJhMzQgbGVnYWN5LXRydW5rCisyODI5NSAyNGYxZDg0NWNkYjU3MzMxYWFmNWE0ZDcxNWU2NTU2ZjBkODU3NmY0IGxlZ2FjeS10cnVuaworMjgyOTYgNDkyYWRkYjgxMmVmMTE3ODA4MWE5ZjMyZGZkMWQ0NGM2YTVhYjUxYSBsZWdhY3ktdHJ1bmsKKzI4Mjk3IGQ3ZWYyYmExYjZmNWVmMGFjMWY1OTYyOGRmZTU1NmRhOTkzZDY2ZjQgbGVnYWN5LXRydW5rCisyODI5OCBhZWJmOGM1MmE4NDJkNDFkOTJhOGU2MzAwNGNlYjAwYWMzNWQ3OWZiIGxlZ2FjeS10cnVuaworMjgyOTkgNGU0YTM0NGM5YjZjZTdiMGM3MWNiNTI4MDBlNjA0MDhmOGYxNDhhYSBsZWdhY3ktdHJ1bmsKKzI4MzAwIDQ0ZDFkMGI2MjNhOWFmNzk0MmZmN2IxNTg2MjE1OGRmZWMxNDM4YTcgbGVnYWN5LXRydW5rCisyODMwMSA4ODYyYmM1OTY4NWFjZDYzN2Y1YWY0NjY0Y2JmNmJmYjBkZDdkOWRmIGxlZ2FjeS10cnVuaworMjgzMDIgYzhkOTU5MmM5ZTc0OTdhMjE3YTIwMjAwNDg3MTQ4ZWM0YjRkOGRhZSBsZWdhY3ktdHJ1bmsKKzI4MzAzIDI3ZjBkZWViZjI2NDhhZmE1NTdkNmE1NGQxMzY0OWViYTkyNGJhYzIgbGVnYWN5LXRydW5rCisyODMwNCA2MzEwYTRhMjFlYjg5MmNlM2ZiOGFiNzQxOTI4MTcxNGE2NWVhOTE1IGxlZ2FjeS10cnVuaworMjgzMDUgYTg2OWQyZGU1MzZmOGQzMGNjNmU3YzZmZDM1MDFmNGIyNmU5ZDc3YiBsZWdhY3ktdHJ1bmsKKzI4MzA2IDhmOGZlOTkwZTgyYzMzNGY1MGNjNmE1ZmU5ZGVlMTJjNDJiOGI2Y2UgbGVnYWN5LXRydW5rCisyODMwNyAyY2RmM2QwZGZhYmQ1MDEwYTY5YTdkYmQ2MTc4Yjc5MGZlMjZhYjdlIGxlZ2FjeS10cnVuaworMjgzMDggYmM2NjBmNzM3OTVjZDdjZTA3MDljZGM4OGE3NmFjZmFmMTM5ODA2OSBsZWdhY3ktdHJ1bmsKKzI4MzA5IGY1N2Q2ZGI0MjNmMmRiZGI0NzNiOGM1ZTc1MTlhNDk4MzkwOWMxYzIgbGVnYWN5LXRydW5rCisyODMxMCBlY2Q0YWRhMjUyYmMwOWFkOWE4NWY0ODkxZDBhY2QzOTM5NmYxZTIyIHJlbGVhc2UyMi1tYWludAorMjgzMTEgNjQxNzg2YmVhMTNlMmI1YTYxYTdmOGVhNDI5YjIwZDk2NWQ3NTQ2YiBsZWdhY3ktdHJ1bmsKKzI4MzEyIGFhYjdkZWJjNzNhODhlMjEzNWRjNzE4ZWNkNzIyN2Y3MWZmN2QwNjEgbGVnYWN5LXRydW5rCisyODMxMyAzMTE0NWQ2NjdiMTRhNWU2NjRkNzQxZWNmMzg1ZmUzODYyNzY3ZTRkIGxlZ2FjeS10cnVuaworMjgzMTQgYjNlZmJkY2NmN2M2NGMwYmQ1N2Y0NmMyYjUwNDRmYzYxMDk4OTM2MyBsZWdhY3ktdHJ1bmsKKzI4MzE1IGM2YWQ2MDNiZDI2NDVhZWM4YmU2NTA5ZjJkZjgyOGVkNmMwYjM3MDYgbGVnYWN5LXRydW5rCisyODMxNiA1YWNhZTcxOWNiOGFiYTVjNDRlYTgzNTMzYTYxOTQ0N2U5NTVmODgwIHJlbGVhc2UyMi1tYWludAorMjgzMTcgNWMzODQ1N2Y2YjNiODViNmMxYjc0MTQ4MzA0NmQ5ZDQwNjIxNmNiOCBsZWdhY3ktdHJ1bmsKKzI4MzE4IDM1ZmU1ZTNjZjg4NWY2NDZhNjllMTBjMDkyNGY3YzExYTE3MzA0NmUgbGVnYWN5LXRydW5rCisyODMxOSAwZWU0OGFlZmE0NzQ5ZTczZDkxNzNiYjk5ZTdlNjJmNjBhYjc0ODRkIGxlZ2FjeS10cnVuaworMjgzMjAgNTlhY2Q1MDI4ODA0NDdmNDBlMmRkMGQzOGJmYzQ4Yzc2N2E2ZGE4MyBsZWdhY3ktdHJ1bmsKKzI4MzIxIDY4NGFiMDY0MGUwNGZhMGZmYTg5M2M4NWRhM2MxM2I2Mjk0YjNhYjEgbGVnYWN5LXRydW5rCisyODMyMiAwMWUxZDZhYmM1MDEyMmYyOGViYzE0NTNlNThkYTgyOWI1MTg2ZGQ2IGxlZ2FjeS10cnVuaworMjgzMjMgZTNkOTZlMDBkYzZjMWMzMzM5ZjM5ZWZlMzRmNWQ2ZGEzNzM0NWM4YyBsZWdhY3ktdHJ1bmsKKzI4MzI0IDg4NjY4NmZjOTJhOTljZmQxZDMxNDA5MDRlN2ZhYjIwZDQyNzNhMDQgcmVsZWFzZTIyLW1haW50CisyODMyNSAwZDVkOGUxY2RjMjJjYTE2NzA2ZGMxY2U1MDJkMjk0ZGJlNjUxMjhiIGxlZ2FjeS10cnVuaworMjgzMjYgNGNiMjUzYzU1NmIxMGEzZDRiOWY0MWY3MzFmY2I1OTJlYmZmODc4NyBsZWdhY3ktdHJ1bmsKKzI4MzI3IDcxNDc5NzE1NmM1MTJiOTRkZWU0MmY0MWJjMDE2YzI0YWViNmY5ZDUgbGVnYWN5LXRydW5rCisyODMyOCA4ZWVmMDM4NTBmNTc3NjdmYWM3MDA0MWQ1ZGQ4Mzc2OTFlOGU3ZTU3IGxlZ2FjeS10cnVuaworMjgzMjkgNWZjNDYwOTgxNTg5MjA1NzVjZGE2Yjc0OTY2NmQwNzY2OGVlMWUxOCBsZWdhY3ktdHJ1bmsKKzI4MzMwIDUxYzI2OTk0ZDhlYzY5YTczMDc5ODkyMzBmMzc1OTI2ODZkMDAyMjMgbGVnYWN5LXRydW5rCisyODMzMSBhMTE0MzIyNGVlMGQwZjc2OTRhOTQ2OGFhMTU2YjFkYzYxYTUwYWJlIGxlZ2FjeS10cnVuaworMjgzMzIgOTQwNjA1ZDQxNTVmZGM2NzkzYzEwNDQzZWU4NDk0OGRhZTFkZWRmMiBsZWdhY3ktdHJ1bmsKKzI4MzMzIGQyZWIwMDc0NDhhM2U2NThhZDY3MjQwYTRmZGY2OTkzYzI1YjYxOTYgcmVsZWFzZTIyLW1haW50CisyODMzNCBjNGE0Yjc0MmFkNmM2NWRiM2UxN2UzYzZmY2MwMGE4N2IyZjMzMzQyIGxlZ2FjeS10cnVuaworMjgzMzUgMGRkNWJjYzFlZTBiZDNlOTk4OGYxZjdmNjI5YjY0ZTQ1YjAwZTBkMiBsZWdhY3ktdHJ1bmsKKzI4MzM2IDQxOWQ0N2M3NzE0MzQyOGVmZDZlYzA1NWI2ZjlkMDhhMzAzMWZlNGEgbGVnYWN5LXRydW5rCisyODMzNyBlOGY3NzMwN2Q5YzZhMjhkMDE3ZjdmNTE1ZmMzNzgwZTE2NzQ1MGU5IGxlZ2FjeS10cnVuaworMjgzMzggYzBlOTgwYWI1NGRiM2JkOTUwYTYzZDI1ZWYxMTE5NWQ3ZDAxNzAzNyBsZWdhY3ktdHJ1bmsKKzI4MzM5IDYxN2JkNTViNGE2ZWRiYzI0ZjRjZTVlN2ViMjM3ODkzZDQwY2QzZmQgbGVnYWN5LXRydW5rCisyODM0MCA5ZWU0ZjRjYjk3NzA2OTk4MWE0MWI0OWU1OTgxM2NiNmI3NWUzMjg4IGxlZ2FjeS10cnVuaworMjgzNDEgNjA2MGNmNjY4MmMwMjU2OTgzNDJiOTU0NjM3ZjU1MWY3NWE2YjlhYiBsZWdhY3ktdHJ1bmsKKzI4MzQyIDY0NTA4YTM3YThkNWI1MGM4MWMxZTE4ZThiZTM1OGJkN2MxYjY1MDUgbGVnYWN5LXRydW5rCisyODM0MyAyOTRmN2JlMjYxOWE2MDMxZWQ5Y2YzNzhhNmEwYWM1ZDU1ZjRlZWY0IHJlbGVhc2UyMi1tYWludAorMjgzNDQgMjE5ZTcwMzg5MDcyNjc5OTdjZGE3MzkxOTc3YmQwMmZlZDA1NGM5ZCBsZWdhY3ktdHJ1bmsKKzI4MzQ1IGU5NTAwNzA5ZDQ5Yzk4YTg2ZDA1YzJmNmZkM2NmNWJhM2M3MDc0YWIgbGVnYWN5LXRydW5rCisyODM0NiAyYjY2YWRkZTAyMzA2NjkyNDI2YTNjNDdkNGQwNmI5MDhjZTlkY2I1IGxlZ2FjeS10cnVuaworMjgzNDcgYmI2YTcxZDNmZGNiNzU1Zjg3NDdiYzE0MWVjZTg5NDg0NjQ5Y2VlMyByZWxlYXNlMjItbWFpbnQKKzI4MzQ4IDY3MDQ4NDU0YWExZTc0Njc5MzlkNzJjYzA4NjVhODljMzA1YmE2MzIgbGVnYWN5LXRydW5rCisyODM0OSBkMTM1NTFjZDY2M2U1NzcyZThlMzI5YmNhOWY5NDg4YjQxOWIzMjY5IGxlZ2FjeS10cnVuaworMjgzNTAgNTMwNjQwODY1N2ZjNjY0YWFjMDI5OWVlZWE1MDFkOTNjODQxMWJlMCBsZWdhY3ktdHJ1bmsKKzI4MzUxIDU0YjYwMWQzYjJhNmRkOTFmMjY1ZTQ2M2MyMmViZjM2N2YxMjJlODQgbGVnYWN5LXRydW5rCisyODM1MiA3NDE3YTZkYzczNjY2MmQzYTFiYWQ3YTkxMTVhZjVlNDM4YzIyNDg5IGxlZ2FjeS10cnVuaworMjgzNTMgMGMyMDE1NDhkM2Q0ZmU1Mzk1YzI2MmEwNWUxODgzMzM2MjRmNzljMyBsZWdhY3ktdHJ1bmsKKzI4MzU0IDU0NGEzMjZiYWY3ZjI5ZjEyNjNiMGNlNTMwMWZkY2ZkMTAxOWFmZjkgbGVnYWN5LXRydW5rCisyODM1NSA4YWRjYTVmOWJmZmQ4NmZlYzYzMmY0ZWViOTg5ZjllMjA0MjFkMDRkIGxlZ2FjeS10cnVuaworMjgzNTYgOWYyNmUwYzBjNjkyNzEwNGJjZmI2MmQwYjAzMzgxOWJkMzQyZmM2YiBsZWdhY3ktdHJ1bmsKKzI4MzU3IDEzMzg4Y2FmYzE2ZTk2MzNiM2YxZDUyMzBiMDA2ZTEzMzBkNTM5OTQgbGVnYWN5LXRydW5rCisyODM1OCAxYmNhZmJjNjljOTY3Mjc1ZGQ3YzQ3MGFlNWM2ZDk4ODJmOGI4NTJjIGxlZ2FjeS10cnVuaworMjgzNTkgNmExOGI0ZTgzOGVhZjNmOWM3NTMyMjkyM2UwYjcxMWFkMmVhNDc0ZiBsZWdhY3ktdHJ1bmsKKzI4MzYwIDMzMGY2ZTQyMjc0ZjgzODdjMDhkNTcyNGI3OGYyZWIyMjEyOGQwYWUgbGVnYWN5LXRydW5rCisyODM2MSAwNWRhOTViY2Q3MjRkZmY3ZTc4ZTQ3ZTQ3MzgxMTQzNjg1N2M4ZTQyIGxlZ2FjeS10cnVuaworMjgzNjIgYzU1ZThkNmMwOTFmMDMzY2Y3ZWViNjM2ZGU0MzdiNThkY2UyMWYxYiBsZWdhY3ktdHJ1bmsKKzI4MzYzIDYyODEwYmViOWFmNDc3NzMwYmNmMDdmZGM3ODZlYzY2NGEyMDY2ZjAgbGVnYWN5LXRydW5rCisyODM2NCBkYzY2ZWI0Y2QxN2FjMmEwMDBmZjE5MDYwZThhMzg0NDFhOTJhNjljIGxlZ2FjeS10cnVuaworMjgzNjUgNmU3OGE1NGJhYzNjODQwNDFiYWZlM2MwMDMwM2Y1NDVkOGVmMDg5ZiBsZWdhY3ktdHJ1bmsKKzI4MzY2IDhiNmJmNWJjNTEyMjZiNzIyOGZhMzE2YzY3N2Y4ZDUwYmQyMmZjYTEgbGVnYWN5LXRydW5rCisyODM2NyBiOTMzZDE5YWU4NTEyY2JhMDFlNzI2NGNhNDVkMWVhMDAwMTgxMzY3IGxlZ2FjeS10cnVuaworMjgzNjggMDQzZWJhNTE4YzY4OWNiZGRiMzcxZTViNzBmZmU5OTA0YzVkOTIwNSBsZWdhY3ktdHJ1bmsKKzI4MzY5IGMxZjY4MmJlZWJlYTFjZjFlMWU4ZWFlNzI3OTk3MjNjZDNjZmNjMzMgbGVnYWN5LXRydW5rCisyODM3MCA3M2ZiY2YyMWIyYzBmYmFjYzlmNzJkNDQ3ODk2ZGQwOTM0YTNhNDQ5IGxlZ2FjeS10cnVuaworMjgzNzEgZDkwYTZhZGQ3Y2EzOTgyODdjMGY5NDY4ZmE4OGRhZGE2N2UzZjExYiBsZWdhY3ktdHJ1bmsKKzI4MzcyIDFiNGVmOWNkMTg5NzQyYmM4MGFlYmFmYmU1ZjRkZGRkNjQzMjA2ODkgbGVnYWN5LXRydW5rCisyODM3MyBjNDViMjg2NTg4MDVmYTY2OTRlMzkzNjUyZWIwMTkyOTM1OGIyYWUzIGxlZ2FjeS10cnVuaworMjgzNzQgODBmNjVjNjNlODYwYzI2ZGQ1YjI3MzJhODYzNTcyYTFhNjRmOGM0MCBsZWdhY3ktdHJ1bmsKKzI4Mzc1IDk1MTg2NTkxY2JjZmVlZTE0NjcwNmVmZjA4ZTNjNTczODdjMmJkYjcgbGVnYWN5LXRydW5rCisyODM3NiA4MTY3OWViZWMwN2Q3MTliYTZjY2E1OWUyZDViNzY4MDYyNWY0YTYzIGxlZ2FjeS10cnVuaworMjgzNzcgZjY1ODEyOTliYzAzYjUxOGJhN2RjYzE1MTk4Zjg3NjdhNzk2OWRjMSBsZWdhY3ktdHJ1bmsKKzI4Mzc4IDQyNjM2MzhhNDY5ZjhkYjg2N2RiMDk4Y2EzMGNmZmJhYzcyYTAyM2IgbGVnYWN5LXRydW5rCisyODM3OSA4ZWExMTdlYmIyZjM0OWRlNWU4ZTNkNDQxOWY3OGFhOGU0MTdmZmFhIGxlZ2FjeS10cnVuaworMjgzODAgNjY4ZWVhZDEzYTdjNTdlZTY1ZGI2MGZmMThjZTkzNzU0ODQ4YjZiZCBsZWdhY3ktdHJ1bmsKKzI4MzgxIDcxOTAzNDhkNDY2ZGZmNWQ2NjA1NmNhYTIyNzNhMjg5MDY0MGYxYmQgbGVnYWN5LXRydW5rCisyODM4MiA3YmViMTY5MjNiNzFiYjcwZmU5NWFmMzZhNjU4ZTY5ODZmOTI4ZGRjIGxlZ2FjeS10cnVuaworMjgzODMgMDYzZjIwMzE2NjBjM2UyNThmMzY4ODBmNWQwOGQ0MzE4OWIzMjc3YSBsZWdhY3ktdHJ1bmsKKzI4Mzg0IDI1ZjY5NTRmZWYzNDIzZDA3YjhmM2FmOGU3NzU4NWQ3Mzg2NmUyNGQgbGVnYWN5LXRydW5rCisyODM4NSBiMWFiNGU4ZDdkOWM1YTBiMjg5ZjNkNDM2OGM4OWMyYjQ0YzdjZGJlIGxlZ2FjeS10cnVuaworMjgzODYgODBhYzg2MTk0YTEyYmI5NGFkNjIxZTdjMjFlMzZkNWVmNjllOWJmMSBsZWdhY3ktdHJ1bmsKKzI4Mzg3IDllMTFiYjgzZDk1M2JhM2FiNjFlM2I5NjNlNTQ3YzU3Y2VkZjE1NTYgbGVnYWN5LXRydW5rCisyODM4OCBlZTk5ZDIyMjU3MGE5NDYwMGRmMDcwMDM4ZWY3M2Q0NGZjZmE4ZWQ2IHJlbGVhc2UyMi1tYWludAorMjgzODkgMjJiNzBjMzk4M2I1MzhjYWU1NzRhYzhjZDdiZjk0MTA5ODgyMTM1MSBsZWdhY3ktdHJ1bmsKKzI4MzkwIDRiYjc3NmEwMmU2ZTg0ZjhhN2EwODJjNWMyMGU5NjQwNjFlOWE5NTEgcmVsZWFzZTIyLW1haW50CisyODM5MSA4MGQwMzVjNDUxNDkzZGRlYzc0ZmNiMGIyNDRlNDliNGViYjE3MzRmIHJlbGVhc2UyMi1tYWludAorMjgzOTIgMTQ2MWI5NDYwNmM1NDE0ZWIyOWIxNjU3YWNhNzdkMWQzNGQ4MmJkNyByZWxlYXNlMjItbWFpbnQKKzI4MzkzIDAwZjExZWVkZDYwMzM0NWNiYTk5MjNhMzZkYmFmMDU2NTM0NTE2Y2QgcmVsZWFzZTIyLW1haW50CisyODM5NCA5MTMwZWE2NjkzZGE3ZWU5OWEzYzRlM2I3ZDUzYmQwNWVjN2FjMWM5IHJlbGVhc2UyMi1tYWludAorMjgzOTUgMGQ2NjE3YTljYjYxMGQyNzIyYWEyNTIzNzBkNTEzMmEzZWYzNGM0MCByZWxlYXNlMjItbWFpbnQKKzI4Mzk2IGY0YmIwZmYzMTBkMzQ4OWMyM2Y3NDg2NDIwNTNlM2RlZDZjYmYzOTkgcmVsZWFzZTIyLW1haW50CisyODM5NyBiYzgxZWUyMDYyOGYzY2M5ZDUwMTBjZDQxODk3OGY1YWUyZGQ2YTRiIHJlbGVhc2UyMi1tYWludAorMjgzOTggNjQ2MWFjZGViNThjOTA4MmFmZWU4ZTU2NGYwYmNlYWJjZGVlNjEwNCByZWxlYXNlMjItbWFpbnQKKzI4Mzk5IGM1NDE3ZjBlZTVmMDgwMmIxODczODliNzE4YjEyZDMxYjk0NTU0NzEgcmVsZWFzZTIyLW1haW50CisyODQwMCBmZDA2NmQxOTRjZmY0MWMyYmJmN2E0YTVhM2E3ZmRlZDU2YzQ1Y2RjIHJlbGVhc2UyMi1tYWludAorMjg0MDEgNWU0ZWFkZjE5MDNhMDI4ZTY1NWFiNTgyOWZmNTEwMGU5MDJlNTg2YiByZWxlYXNlMjItbWFpbnQKKzI4NDAyIDg2YWEyYzJkYTQwZTRiNTJjYzZkZWUxMDNmNTMzN2M2ZTY2YmY3YjEgcmVsZWFzZTIyLW1haW50CisyODQwMyBjNTEyYTk0MzNlYWYzYjNmMTYwYmJhNjkwNWRjNTU1MzVhZTczODQxIHJlbGVhc2UyMi1tYWludAorMjg0MDQgYTBkYzZmNTA0OTcyODVhMTQ2YjEyMGY5M2ExZTU4ZGM0NjU1ZjgzZSByZWxlYXNlMjItbWFpbnQKKzI4NDA1IGFjNDY4ZTIwYjRjZWQ4YmNhMDZlYTRiOGViMDU5ZTVjZTQ2ZDQ5OGMgbGVnYWN5LXRydW5rCisyODQwNiAzYTc0OTk0MzFkY2NmM2NmZmQxZmY0OGRjMjdmMzJiY2I5MDBmMmJlIGxlZ2FjeS10cnVuaworMjg0MDcgZjk1YzBiODk0ZjI3NjZlOTJkZTgxNWY5NDhlODE5YTlhYThiYjYwZCBsZWdhY3ktdHJ1bmsKKzI4NDA4IDJjY2NmODI0MjAwOWJhYzU1OThiMjYyYjM5M2NkMTFhNmE0YTU5ZDYgYXN0LWJyYW5jaAorMjg0MDkgZmNiNTIwMWM2OWVkODY3NTJhNTg0NjYzYTQ1NmEzYTUzZGEwNTkxNSBsZWdhY3ktdHJ1bmsKKzI4NDEwIDQ4MTM4MzczNzA5YjQ3MDA0MDQzYzQzOTBiMGFmMDQyYTQwOGFmZGQgYXN0LWJyYW5jaAorMjg0MTEgYmJhZWJlNmI3YzFhZGZlYmU3ZGE1OWM1YmFlYWYzMDI3MjYwZDYxMSBhc3QtYnJhbmNoCisyODQxMiAwYjcyNjQ5NmNmNDRmMTdhZGZlM2I3Y2JmYTQ2Mjc2ZTRjY2U0MTM3IGxlZ2FjeS10cnVuaworMjg0MTMgNTliN2Y0ZTlmZDYxNDcwZGJkZGFkMGE2ZTUwNWFlNzA4YTUwNDQ5MCBhc3QtYnJhbmNoCisyODQxNCBjNzQ0MTQ0YzQwNDlkZjY3MzdhZGRlN2JiMGQ2MDk2Y2ViOGUwNTJhIGxlZ2FjeS10cnVuaworMjg0MTUgOTRhZGY2OTk2MThmZWQ1YWQ0N2M3MDIwMTk4Yzc4OGQwYmNiOGRhMiBhc3QtYnJhbmNoCisyODQxNiA4ZmRiMDg3N2QzNTIzODM4NzBhYjA5YjQ5YTkwNzBmOTA4NjE2ZTYwIGFzdC1icmFuY2gKKzI4NDE3IDc2MmRkMDllZGI4MzQyZmIwNDg0MzlmYWI2ZWE4MWQ2MmMxMzFkNjQgbGVnYWN5LXRydW5rCisyODQxOCBiNDM5ODZmNzNmYzlmOGEyOGFkOWRmNjcwMzMwNzhkZDA3ZTYxNzJjIGFzdC1icmFuY2gKKzI4NDE5IGY4MjQ3NWQ3ODQxNTI1Yzg2ZjU4ZWJkODJhYTUwNDQyNDE2MmZmZmUgYXN0LWJyYW5jaAorMjg0MjAgMTJiYjZmMGM2MGY4YzYzOGMxMmNiZGI4YTRmNDY5MmY0YjcxZWUxNCBsZWdhY3ktdHJ1bmsKKzI4NDIxIDA4NTdhYWRjNjEyYTMzNThlYTI0Y2IxNDRjYmJlNGZiZjA0ZjA2YzUgbGVnYWN5LXRydW5rCisyODQyMiBiNWI3MGU0MTBmMTI0ZjhlYjk1OTM2ZWM3MzE2NDc1MDY4ZWMyMTYxIGxlZ2FjeS10cnVuaworMjg0MjMgYWNlY2RjNGY3MzMzNjNjNGU3ZTE0NTJhYmRlZDY5Mzc3MTNhNWJhNCBsZWdhY3ktdHJ1bmsKKzI4NDI0IGM2ODMxMWVmZDM0NmVkOWY0MDY3Nzg5MjMzNDY0YTAxZDVhMjI5ZDYgcmVsZWFzZTIyLW1haW50CisyODQyNSBkNDIxYmJjOTk2MWM4Y2ZlMGFhMjY1OWIyMGM4MGM2ODc0ZTE5YWY4IGFzdC1icmFuY2gKKzI4NDI2IDM1NzQ5ZGIxMDgwOTMwNTYxMDA1MGZiZjYxYjVkODU1Y2QyYjRlMWQgbGVnYWN5LXRydW5rCisyODQyNyBmMzZlMTZjYThmNTA1ODBmNTI4NWVkODNlMzIxMmYwNjBlZDFjNTYxIGxlZ2FjeS10cnVuaworMjg0MjggZjJkNzU3NDllNjFjNWUzMjI0OTJhMWUyOGNmZGNkYzA3OWQzMDMxOCBsZWdhY3ktdHJ1bmsKKzI4NDI5IDY4NjI3ZTBhY2QxNWJhYjg1YmFlZmIzZGEyYWRhOWVkYjZiYWUzOGEgbGVnYWN5LXRydW5rCisyODQzMCBmZWViMGIwMmI4ZjI1MjllNWU0MGM5N2FhM2ZkYzU2OGU5YTg3ZWI4IGxlZ2FjeS10cnVuaworMjg0MzEgMjRlODBkOTZiZDBiNmU5MjZhYjk4NTE0YTA0NDRlZjY4ZWI1N2Y1NSBsZWdhY3ktdHJ1bmsKKzI4NDMyIDBlYmVjODNlYjNkZGZjMWM1YjVhMmFmZDEyZGU3NjJhZGUzYWFiMzQgbGVnYWN5LXRydW5rCisyODQzMyBhYTQ1MDM1NTYzMzllZGNlMDM3NDkzMmFiYjI1ZDlhNDRhN2U4OWIyIGxlZ2FjeS10cnVuaworMjg0MzQgODFiZTYxMDU2NzE3Zjg4MTM2MDYyZmI3Mjg4OWY3Njc4YjUxMmZhOCBsZWdhY3ktdHJ1bmsKKzI4NDM1IGJiMjhiYmMyOGMzMjNhYjI5ZDUwNjU1ZTI2Nzg4ODkwYzQ2YzZjNzYgbGVnYWN5LXRydW5rCisyODQzNiBlNDEwNTg4NDViNzkyZWQ2NjI3ZTk4NGYwY2NiMTJkNGMwMWQyNmY2IGxlZ2FjeS10cnVuaworMjg0MzcgOTBiMTNkOTk5ODI3MTBmZjZjMzllMDkyYmVjYTY3YTczOTFkMzJkZSBsZWdhY3ktdHJ1bmsKKzI4NDM4IDgxYWNiZTE2ODBhMzMwOGJiODE4YWUwNjMyZjc3ZjkxNWMxYjBjNTAgcmVsZWFzZTIyLW1haW50CisyODQzOSBhNmRlNTBjMGQ0NTdlYjYxY2ZlYjU5OTJkNzUxMWMwY2M4MWQ3M2ZkIGxlZ2FjeS10cnVuaworMjg0NDAgMDQ5MDk2ZWZhMmMzY2E4NzZiMTljMzdiMjQ2OGQ3Mzg0NWZkOTYwYSBsZWdhY3ktdHJ1bmsKKzI4NDQxIDhmYTc1M2E5NzA3N2JhMDlhZDVjNDIxYzAwNzA3Y2FkYzA5MDM2ZjcgbGVnYWN5LXRydW5rCisyODQ0MiAyYzJiODRiZGExNDFiN2E0YzhjNTkzMWVhZjdhMGY2YTJiMjcyYmQ1IGxlZ2FjeS10cnVuaworMjg0NDMgMzQ4NDMwOTU3M2YyMWM4MzljNzc1MzkyYjVjYmVkZWMxMTIzZjE4MCBsZWdhY3ktdHJ1bmsKKzI4NDQ0IGFkMjg5ZmJiNmI0OGQ3MmI3ODM4ZTgzZmUwZjMwYjdmODdmMzZmYTkgbGVnYWN5LXRydW5rCisyODQ0NSBhZmYwNjdiYThkMDc4OGYwYTkzN2U5YmUzZGVmNjI1MGI3MzhhNTg3IGxlZ2FjeS10cnVuaworMjg0NDYgOGM2MWM5MjAyNWI2Yzc3YjgzZTkyYmM3ODkzMDc0YjA0N2MxZGM2NCBsZWdhY3ktdHJ1bmsKKzI4NDQ3IDQwZTljZmRlMWM1MDg4MGExZjE4ZTBhNGJlZTEzMTNjZGY0OTE4N2UgbGVnYWN5LXRydW5rCisyODQ0OCA3ZmIzNzU5ZDM4NjZkNTA4NGU0YTIyMjU5MmYwZGM3Njc5NWU4NDhiIGxlZ2FjeS10cnVuaworMjg0NDkgOGM4MDUyMzc4MDE3Y2I0NTNiMGYyMzE1NTBlZDczYWU1NzYwNTI5OCBsZWdhY3ktdHJ1bmsKKzI4NDUwIDRlOTk2ZTk1OWVjMTg3YzcxMzc4MTc3NzdlNzFjMTA0ZWQwMWQyODcgbGVnYWN5LXRydW5rCisyODQ1MSBkNWViZDYxNmEzZTZmNGJjZDU4MDkzYmM1NWMzOGEzNjU5NmMxMTgzIGxlZ2FjeS10cnVuaworMjg0NTIgMGUwMWI4NWFkZDgxMjZlNmFjNzM3ODU3Y2U5OWViNmYwM2IxZGIzMyBsZWdhY3ktdHJ1bmsKKzI4NDUzIDdkM2Y4MzA2YTAxZWQ1YWU1NDNlYjg0OGFmYzU5ZmRmODRkYjcwYzYgbGVnYWN5LXRydW5rCisyODQ1NCAwYjk3OTJjYmU5MDA0MmIxNzcwMWVkMzI0MzkzYzE2ZTY2N2QzOGFmIGxlZ2FjeS10cnVuaworMjg0NTUgMzY0N2IzMGFhOWRlMDlhYzU2YjJkYjcyZjc0YTE2ZTRlZTI2NDk4MyBsZWdhY3ktdHJ1bmsKKzI4NDU2IGRiNDllZTc2YjdkMGUzZjc2ZGNmMDViYTJiMzI0YzgzOTEwNzAzZWMgbGVnYWN5LXRydW5rCisyODQ1NyBlZDBiMDI2NzJmMDkwNWRkMGE5YTNmYTYwZjJmYjA1YjhmMjAxYWIwIGxlZ2FjeS10cnVuaworMjg0NTggMTE4OWY3N2NkZjg0NWQyY2U3OWU5Y2VkMDJmODZlMjEwNzAzMmZjNCBsZWdhY3ktdHJ1bmsKKzI4NDU5IDhjZjIwNTg5MmY2NjI4OTYwNmNjMjZhMzg4YjUzZWNkMzM0NTFhYmMgcmVsZWFzZTIxLW1haW50CisyODQ2MCBiZDJhYTAyNDdhZGFhZDhjNDZhOTdkOTc0NzI0NDBjOTllZjY3NjVlIHJlbGVhc2UyMi1tYWludAorMjg0NjEgNzZjZjg4ZTg5Mzc2ZGMyNTRhZDdmZjYxMjBlNmY4MzFjMDk0NmNlMyBsZWdhY3ktdHJ1bmsKKzI4NDYyIDQzNGJjMWRlYTRmOGJhN2U3N2Q2NTg2YjMzZWQ0ZWY3YmQxMWYwM2MgbGVnYWN5LXRydW5rCisyODQ2MyBlYzM3MzY5NmMxN2JjMzc4NjI2NWM5NzIxYzdmOTlmZTFlNjRiZTc3IHJlbGVhc2UyMS1tYWludAorMjg0NjQgZDA0MTNkZTE0M2VjMjQ1YWIwZTEyNWZjZTNkMzMwODVmMTM4NGI5OSByZWxlYXNlMjEtbWFpbnQKKzI4NDY1IGQ4M2MxNGFlNjQ3ZGQwMzEwYzFhYTBmZTA1ZjBmZWM0NmQzYjVlYTIgbGVnYWN5LXRydW5rCisyODQ2NiA0MDI5ZDY3Y2RiZDVmZGJkNDIyNWZkNzdiODg0N2UwYjAzODNkZDUxIGxlZ2FjeS10cnVuaworMjg0NjcgY2JlZTJlZDZjZDc1NWE3NzI3YjNiOGVhMDI2Yzg2Y2FkYTUzNDQ2NCBsZWdhY3ktdHJ1bmsKKzI4NDY4IGE3YTYwYjE0MWQxZGE2ODM4ZGM5ZTFlMWMzMzQ5OTk5NWU2Yjc1MzEgcmVsZWFzZTIyLW1haW50CisyODQ2OSA2M2NhMTJhYmEwNzkzNGE1OWE1ZjQ1YzczN2VlNmY3ZjhjYjZkZGFlIGxlZ2FjeS10cnVuaworMjg0NzAgOGU4ZDNlNGFmNGY0Njg5NGI3ODJjOWE3ZDIwOTczYjEyZTIyZjZjYyByZWxlYXNlMjItbWFpbnQKKzI4NDcxIDFhYTA4MTVmYWQ0YjExNjcxYzU4MTM1MjQ5YTlmOWVmY2QwNDFmYjQgbGVnYWN5LXRydW5rCisyODQ3MiBlMGI4NTVhYWQyMzAyMDkyZTMzNmRhZDAxNjdiMGUzZjMxYThhNTE2IGxlZ2FjeS10cnVuaworMjg0NzMgZTIwNDJjNzZhZjA2NTYwY2NhMmJlNmE0MzFkYTk1ZDhlYjZiYTM5OSBsZWdhY3ktdHJ1bmsKKzI4NDc0IGI4MDY3ZGRjMTFmODdhOTdkNDVmM2ZlNzI3NTliM2FlMWNiYzM0ZTMgbGVnYWN5LXRydW5rCisyODQ3NSBhZDNiZTQ3MWIzOTkyMTkzMzA2ODVkNDFmYjliMmY1ZGY4MjEyYmZlIGxlZ2FjeS10cnVuaworMjg0NzYgMGQ0OTI5MDI4OTRhNTU4ODcwZTc1M2M0NmVhYzQ5MDgyZDVjMzlhMSBsZWdhY3ktdHJ1bmsKKzI4NDc3IDdjNzZjMGZjMmU5MmEwOTdiZjhlOTAwNTgzYjFkNWEyNGUwYTVlNjQgbGVnYWN5LXRydW5rCisyODQ3OCAxMDBmMTU0OTgyYzhiYmUwOWNhNTE4YWQwZjkzZGNkNGI0OWY4YzZjIGxlZ2FjeS10cnVuaworMjg0NzkgN2RjN2FiNWRiOTA5OWU4NDY0OWI0YzM1NGIxZDRkMTE4MDE2OWYyMCBsZWdhY3ktdHJ1bmsKKzI4NDgwIDgxYTM2ZDJhMmQxMzdkMTIwOWI1NDE4MjNmZWRlNGQzN2FhODIzMjAgbGVnYWN5LXRydW5rCisyODQ4MSA1YTg4ZjE3NGI2ODRjYmJmODBjMWM3YjcxNjRlZDgwMjMwOGMzOGVjIGxlZ2FjeS10cnVuaworMjg0ODIgYWIxNzZlMTY0ZWFiNjk0OGIyNzkyNWU0ZjIxYWRlNmYyZDBhYzJmOCBsZWdhY3ktdHJ1bmsKKzI4NDgzIDQ2YjA1MDQ1NTUzMzY4M2JkOGRkMjI3MDZlZmMxNmM3MDAyODUyZTQgbGVnYWN5LXRydW5rCisyODQ4NCAwM2VhZGM1N2Q0Mjk5YzQxNGExZGU5OTEyZDYzYTkyNjcyODdiM2I1IGxlZ2FjeS10cnVuaworMjg0ODUgODIzMWY4NmM4NjI4YTQ2MzljMTkwMTQwY2E3OWZmNDkwOWNlNWExMiBsZWdhY3ktdHJ1bmsKKzI4NDg2IDI3NGZhMGIzNGNhN2U2YjNkNDRhMTE1ZGQ3MjY4YWEyMTUxNGRhMTAgbGVnYWN5LXRydW5rCisyODQ4NyAwNWIxNWNlMjhlMzFmYTRmOTRhODUyOTQ4YzQwZDNjODIxNDVlMGNiIGxlZ2FjeS10cnVuaworMjg0ODggNWZiNmY1YmI3Njk4ZmI4Zjk5MTFlMmY5OGYwZjIwMjBlNmQ0NzYyNiByZWxlYXNlMjEtbWFpbnQKKzI4NDg5IGVmYzEyOGEzMzRhNTVmMjc0YTNiZDFjMzFjOTYyM2YyMTI3MmVlYzAgbGVnYWN5LXRydW5rCisyODQ5MCA4MjVmYzg1NTIzMjU3ZDllOTBjNjcyMjhhOWNjODAzYzNiNWU0NTc4IGxlZ2FjeS10cnVuaworMjg0OTEgMzFhNzc0YTZmNjA0YjU3MGY5MTcxNmU1NThlN2RhZjRhNDFkMzI0NCBsZWdhY3ktdHJ1bmsKKzI4NDkyIDZhMjIxODM0ZWQ3ZGY0MmU4MGMyMDFhMTE0MjYwNzdkZDRlNjI5MDAgbGVnYWN5LXRydW5rCisyODQ5MyBhNTRjNWNmYTNmOGZiMjE0Y2QzNWY0MWI5YTFmOGNjNDczZTUyNmQ2IGxlZ2FjeS10cnVuaworMjg0OTQgYmUyODY4YTYzZWQ1M2QxZjI0ZTRjMDcxZjQ4OTA2ZTVhMTM5MjhjMiBsZWdhY3ktdHJ1bmsKKzI4NDk1IDAwNGRlMWFjMjNjNDQyMzNkOWFiNDIwMWZlYWMzYTYxODFlYWYzNTQgbGVnYWN5LXRydW5rCisyODQ5NiA0YWVhY2Y5Zjk4NThlNDVmZDAyMDA0MTRiZTgzMjAxZDE2NjAwMzk2IGFzdC1icmFuY2gKKzI4NDk3IDI2YzUwZjMyMjYyMjAwMjI4MGJkZjMyYzhlYTc5OWJkMmE3NjZkYjkgYXN0LWJyYW5jaAorMjg0OTggMDJlMGU2ZDM4MTNlOWViMzQyZjVkMzZhODRmNDJjNjAxOTIwNDljMCBhc3QtYnJhbmNoCisyODQ5OSA4ZTQ3MzYxYzRiNWIwMzk0OWJlOTI3MWZjMTRlNmY1NDQ1YjdjOTAxIGFzdC1icmFuY2gKKzI4NTAwIDEzZTkwZTNjNGM5OTMxYmZmNWIwNTdiODBhN2I5ZmE3YjJjYmIwYjYgYXN0LWJyYW5jaAorMjg1MDEgYzU1NjkwNjQ3OTYxMzAxMjkzNjk0MmM5NzJiMzMyNGNhNjRkMGMzNSBhc3QtYnJhbmNoCisyODUwMiA4OTQyMTUwNWRiNTkwMzI5M2RiZWEwYWVhMDIyNWUzYjNkOGIxOTY4IGFzdC1icmFuY2gKKzI4NTAzIDBjNTQ0ODhhNzQ4MjE5ZmZkYThiZTZmZjhjODU0NmQ1ZjNmNjJmZGIgYXN0LWJyYW5jaAorMjg1MDQgZWQyYThjNTQ4YzQ0NGQ4YjlmOTVjYmQzNjVlMDE1NGM0NDZiYWM5OSBhc3QtYnJhbmNoCisyODUwNSA1YTEwMTZiMmM0NDBjZGMxYTQyZTg0MmU4YWIzYmQ2ZjQ0ZTVhMDU1IGFzdC1icmFuY2gKKzI4NTA2IDVhNDFhNzBiYzVkMTdjZTE0M2VmNjliMTFiZGMxYzQ4MTA2YWE2MDIgYXN0LWJyYW5jaAorMjg1MDcgMmJlOTY5ZDI5NTEwYmE5YzRjYWZiZWRmZWQyYzAzOGE0NjQ5MWIwOSBsZWdhY3ktdHJ1bmsKKzI4NTA4IDlhMmRlMzllOGRhNzVmYmJmZWVlNGIyNjBkZDRhN2Y3YTQzMzIwMjQgbGVnYWN5LXRydW5rCisyODUwOSA3MDYwM2Y0ODQwMjk0NmEyMzg3ZTBlMzVjMzg4MjEyOTlmZmI4NzkxIGxlZ2FjeS10cnVuaworMjg1MTAgNGM0ZjkyYjBhZjkwMzY5NTQzMjBmYjUyZTJiN2JmNmMxMWZmNDdjNSBsZWdhY3ktdHJ1bmsKKzI4NTExIGIzMzdlZjE2YzBkMmQ4YmMzMTMwZDczNTQ0Yzc3NTczMWE2NjFhMzcgbGVnYWN5LXRydW5rCisyODUxMiA1ZmU0ZDkzZGY0MjkxMzRlZjg2OTVjMTJlNTlmZjk2MmZmOGI3M2QyIGxlZ2FjeS10cnVuaworMjg1MTMgODRiZmI4YTgwNWZjOWZmNjZiMzgxZWUxZTE2NDZjMWQzMjEyYTM0NiBsZWdhY3ktdHJ1bmsKKzI4NTE0IDlhMTc4YWRiNGUyZGIwMDg3MmRjYzVmYzU3OTMwMWRjZWFjNGJmNTYgbGVnYWN5LXRydW5rCisyODUxNSAxOTk4MmM1ZWI0OTNhZjA5YTIyZjUwN2E1YmU1MDJhZDU3ZTIxZGE0IGxlZ2FjeS10cnVuaworMjg1MTYgODc3MTk4NzA1YzkyYWRiMDI4ZGFhMmUwNmFlYzk5NGVhYjJjMTRlNCBsZWdhY3ktdHJ1bmsKKzI4NTE3IGMxNDlkMzkzMTQzNDQ3NDBmNDY5NmM5NTA2NWFkYWZjZDRiNGVhODQgbGVnYWN5LXRydW5rCisyODUxOCAwMzM3ZGFkODQwM2UxMGE3MzU4YmU1Njc1ZjMyNjYzOTQwZWYzZDAzIGxlZ2FjeS10cnVuaworMjg1MTkgNDI3ZWZjMzViNWJlYjZkZWI5YmQyOWYwMjMxYmU1NzY4M2QzMjA1OCBsZWdhY3ktdHJ1bmsKKzI4NTIwIGFlMTQ2OWU0NjhhMDQ5MDg5NmJiMWFiOTFmZWNiOWNlMDk0OTQyMDcgbGVnYWN5LXRydW5rCisyODUyMSA2YTg1YTFjOWQzM2Q4ZjNhZjMyZTc0NDYxZjAzN2EwMzc1MmQ0ZTQ3IGxlZ2FjeS10cnVuaworMjg1MjIgMWI4MGUwZmQ1YTQ4MTQ1OThmNDRhNTU3MDY4ZTZiYzhhMDVlZmMwMyBsZWdhY3ktdHJ1bmsKKzI4NTIzIDk4ZGRjNDI5N2YzNjFkZTVkYmU5YmNiMzM0NTJmNjM1NzUwM2U2YzQgbGVnYWN5LXRydW5rCisyODUyNSA1NjcyYjE1NzM4NTVhNTE1YWEzNjNmZDdmOGU3ZGFlMmI0MjcwYjlkIGxlZ2FjeS10cnVuaworMjg1MjYgNzNiMmNiYWU5ZDkwMTc4MDQzNzBjZTViZWI1ZmE5OWM3MGIyNjY1YSBEU19SUENfQlJBTkNICisyODUyNyBjMDJhNjY4NDg4ZDA4MmM0ZDBkYjhiMzg3Mjc3N2U2OGMxYTJjMmQ2IGxlZ2FjeS10cnVuaworMjg1MjggYTY5YTEyNDg0ZDY5YWE4NjZlNjcyNjhmN2E3NjE0NTJkMDNhMjc1MiBsZWdhY3ktdHJ1bmsKKzI4NTI5IGJjNTkwYmVhZGYwYmQxNzYzNGJiMGUxZjY0MmRiNjY3N2FkN2QzOGIgbGVnYWN5LXRydW5rCisyODUzMCAzMjMzMWQyNmQ3Y2YxOTExNGYxZjgwYjNlZWI1OWE1NTc5ZjQ4ZTk1IGxlZ2FjeS10cnVuaworMjg1MzEgOGExNmRlMGJlMTExNzgwOTJiYmVhMDUwNjUwMTRjN2FkNGI0N2VmZSBsZWdhY3ktdHJ1bmsKKzI4NTMyIGY5ZTQyNDNmZjc5MmU3OTQxMWMxODhhNTExNmRlMjVjNjg2ZjE2ZjggcmVsZWFzZTIyLW1haW50CisyODUzMyA0YjU4MGE0NjI1MDgwY2RiZWIyMmRiOGYxNDBhNWEwNWVjNWI0Yjc4IGxlZ2FjeS10cnVuaworMjg1MzQgMzllMDlmMzBmN2VmMjg0NmE3ZjFhYjU5NjIzMGUxZjQ0YzRlNmQzYiBsZWdhY3ktdHJ1bmsKKzI4NTM1IGMwZDVmZjg1NTVhZGVhNDcwNWQ0NTU2ZmZiMDk5NTQ3YWM4YmJiNjUgbGVnYWN5LXRydW5rCisyODUzNiAwZWNiM2NhYmY0MGI5YTg2ZTYzNmNiOTk3ODc2YjVkNjcxZmYzMzU3IGxlZ2FjeS10cnVuaworMjg1MzcgM2EyNmUzNTJmMGE2ZDI3NWZmMWUwNzdjODBhYWE4Y2FkMjEyOWRlMSBsZWdhY3ktdHJ1bmsKKzI4NTM4IDAwYjZkZDQxNGI4MDQ2MWZiNzgwMWE0ZThjMWQ2ZDNlMWMxYjg3MWIgbGVnYWN5LXRydW5rCisyODUzOSAwNDAxYTBlYWQxZWIzMzQ3ZDEyMGQyYTA4MTRkY2E1MjJmMTJiODEzIGxlZ2FjeS10cnVuaworMjg1NDAgYjQ3MGI0MTc4MzlkOGNiNDZkZjMxYTM0NTI3MGI3ZTMyZTM2ZWZlMSBsZWdhY3ktdHJ1bmsKKzI4NTQxIGYwZmYwNjBjZDE5NGU1MTc4NzI1ZTVjOTI4MjE3NjY5NDAzODJjMzQgbGVnYWN5LXRydW5rCisyODU0MiBmYjMzNGIxYTU2YTY1YzA3MTA4YWIzOGJlODE5MzA3MDcxOTMzZTVlIGxlZ2FjeS10cnVuaworMjg1NDMgYTJiMWYzYzExMzg3YTY0NzA4Yzg1ZWRlMDg4Y2IxZDFkMGI1MGRiNyBsZWdhY3ktdHJ1bmsKKzI4NTQ0IDg4MzQzODVmMjliZjU0MTBkOWY3MjhhYTBkMzdhNmQ3NmM1Nzg4OTQgYXN0LWJyYW5jaAorMjg1NDUgNzU5NjFjYjM3NDdmOWRiOWJmNDAxY2ZkMWE5NGZkYjE0MDMxMTI3YyBhc3QtYnJhbmNoCisyODU0NiA2OTI5M2I4NDlkODU4MDdiNGQ2ZTE4MWJiMjQ2YjU1MGFhMmZjYWU4IGFzdC1icmFuY2gKKzI4NTQ3IDdjNzMzMzgwMjcxNDliMjBjODY5YTlmNDBkYTUyMzNlYjY4N2MzNWUgYXN0LWJyYW5jaAorMjg1NDggNGVhMDgxMTAwMzA1MjliOGI4YjI4ZGY5NWIwOWM4MjUwNTI1N2RiMCBsZWdhY3ktdHJ1bmsKKzI4NTQ5IGVmYzBlZGMzMGZlYTQzNTBmZWMwYzA1YmRmOWUzM2M1NjMyZjNlMGIgcmVsZWFzZTIxLW1haW50CisyODU1MCAzMDE1YzY3OGY4MWRkZjg1MGRmMTAwZTVhODZlMzEzZGMwNzUwMDA2IHJlbGVhc2UyMi1tYWludAorMjg1NTEgMGNlMjcyMmEzZTE1NGQwOTM0YmJiOWI1NTI2ZWRjNWU5MzhmODI4NCBsZWdhY3ktdHJ1bmsKKzI4NTUyIDRjODE2M2EyNzY0MDI5N2E2YjFjYmM5OWY1ZDQ1ZGY1ZDJkODk5OGMgcmVsZWFzZTIyLW1haW50CisyODU1MyA5NTNlYmUwYzBjMjVlZWFhZTNiM2VmNzhlNTRhMThiZTA5ODA4ZjhlIGxlZ2FjeS10cnVuaworMjg1NTQgYzczMTBmMzQ4Yzc4ZTJhZmNhZmI2YWNiMWJlYWFhOTYzZTFmOThhMyBsZWdhY3ktdHJ1bmsKKzI4NTU1IGU1MDBmMThmMzEzMTI4MmE5N2U3YzZmYzNmNWE0NmVjMzE1YmJhMmUgbGVnYWN5LXRydW5rCisyODU1NiA2YjY3ZDI2MDc5ZjI1NTY5MGVjZmNjMjJkZTJiMjA3NTc2NjJiZWY1IGxlZ2FjeS10cnVuaworMjg1NTcgMjdjNzE4YzgyZWZkZTE0NmM0Zjg5YzE3NDQ2OGZiNjExNGQ2Y2I2ZCBEU19SUENfQlJBTkNICisyODU1OCA0OGQxMDhlNWI4ODQxYTBlODkzODlmMDFmOGMwM2UwZTk4NGM1OTgxIGxlZ2FjeS10cnVuaworMjg1NTkgMTcyODQ1YzA5YWZlY2Y1NDI1M2E0Zjg0M2NhNGFlN2VlMzVkMTA0ZSBsZWdhY3ktdHJ1bmsKKzI4NTYwIDU2ZjlmNWFiNmVjMTFmOGE5ZmMzYjY4YTRhMWY4YzJkZmIyYjAyMWMgbGVnYWN5LXRydW5rCisyODU2MSA1MTY1YTBlZTg0YzYyMGE2ZjZlY2QwM2Q1M2FkY2RkOTQyYzY3YTQ3IGxlZ2FjeS10cnVuaworMjg1NjIgZjFjNjljMzJjNDJiMmJlYWU2NDkzM2NmM2JhMzU2YjM2Mzg1NTBhNiBsZWdhY3ktdHJ1bmsKKzI4NTYzIDk2NGQ2ODg4YTIzNjhlOWUxYzBjMTJlNGM0MzQ2YTIzMGJlODU1YjQgbGVnYWN5LXRydW5rCisyODU2NCAzNjhiYzNhNDkxOWUzMDVjNWM4MzcyZmIzNTA2ZmZlYjkwYjA4NjdiIGxlZ2FjeS10cnVuaworMjg1NjUgODUyOWU1NThmNzFkNzQyZmU1YmY3NjgzZjkxMjA2ZGQxNzcxYTRjMCByZWxlYXNlMjItbWFpbnQKKzI4NTY2IGI4OWViZDU3Y2ViNGE5NWYyY2IzODA0YWQzNGZmZDE5NjNjMzVkYTcgbGVnYWN5LXRydW5rCisyODU2NyAzOGZhNzRhMjA1ZWE1NmQ4NTY2ZjQ2OWY1ZDQwNGE0NzA0NDUwOTYxIGxlZ2FjeS10cnVuaworMjg1NjggY2M1M2RkYjY0MjRmM2I0MTUyNWY5MDhlNzNkN2NlNmQ0ZTk1N2I0NiBsZWdhY3ktdHJ1bmsKKzI4NTY5IDBmMDAxNjYzMmJlNDlmOWYwOWEwNTAyOTBkNGFiY2Y4MTdiZjViMzYgbGVnYWN5LXRydW5rCisyODU3MCAwZDkyZWI2M2RiODlhZTg5NGI4YjA0ODhhYTdiMWNlOGIxYjg4YTdkIGxlZ2FjeS10cnVuaworMjg1NzEgZGRhZDM2N2I4MGMzZDQ2ODEyZGEyZGM1YjhlMzg5ZDE2YWE0N2I0MCBsZWdhY3ktdHJ1bmsKKzI4NTcyIDgwNjM0Y2EwMmRiZjkzNjRjMjEyMjE5MmY5MWMzMGQ0YzA5YWNjZDEgbGVnYWN5LXRydW5rCisyODU3MyBkNDQ2YjUxNTEzMTZlYTgyZTc4MDUzYTAxNWZlY2NiZDRlYWVkM2JkIGxlZ2FjeS10cnVuaworMjg1NzQgYWY2OTQ1ZjMzYjA4NjBmZjEwYzA2MDAyNDczNWViYjFiOWUyZWY1MSBsZWdhY3ktdHJ1bmsKKzI4NTc1IGJlMjVkMjM2ZjI4NmRkNGU3MWFhMTFkOWE3MmEwYTAwM2ZhNTQ4ZjggcmVsZWFzZTIyLW1haW50CisyODU3NiBkZWI2NGRmYzg0MTY2Y2E1MTU2NzUyMzNiMTM2MGM4NmRjN2UyNDczIHJlbGVhc2UyMi1tYWludAorMjg1NzcgNjVlMGYyZTM5NWFjODM3NjYwMjZiZGZlZmE2YWIyZTAyM2ViZmFiNyBsZWdhY3ktdHJ1bmsKKzI4NTc4IGFkYWJkYjk5ZWNjNGVlNzQ2ZDI4Y2M1MzJmMTJhYTk4NTA3OWIyYzIgbGVnYWN5LXRydW5rCisyODU3OSA0YjE1NGYxOWQxYWYyZjRmMGVkYzNkM2Y0Yzk5MDNlNWY4YmJlYjA3IGxlZ2FjeS10cnVuaworMjg1ODAgMGUyMzY2ODc5Mjg5ZTIyNjBjYTI5MzBiZjg1NWQ5ZjcxMmZkMzA3NCBsZWdhY3ktdHJ1bmsKKzI4NTgxIDRiMjA1ZTBmYjQ2YmMxZjg2MTIyZjY3Y2FiNmYzOGViYTk0MDk5ODIgbGVnYWN5LXRydW5rCisyODU4MiA1YzI0MzM4ZjNhZTVmNDIyYjY5YjQzOWY3MzFiMWU2MTk0ODZjYzdmIGxlZ2FjeS10cnVuaworMjg1ODMgMTBmOTg4ODg1M2NjNjA0MTJiY2ZiZWU3NmMxYTg0Zjk3YmY5ODQyMiBsZWdhY3ktdHJ1bmsKKzI4NTg0IGFjNzQxNTg3ZTY2YjkyMzQ3NDhkNmRlYjRkMWM5OGQ5MjYxNjExMDYgbGVnYWN5LXRydW5rCisyODU4NSA1Y2I4ZDU3MmI0ZGVmMDFhYzNjMjJkNTFjMmJmNGVlNjYxYjA3ZTY0IGxlZ2FjeS10cnVuaworMjg1ODYgMGM5ZGZkNWEwNmQ0NDcwYzAwMDQyOTlhYzQ1YjA2YTQxMWJiNjc4YSBsZWdhY3ktdHJ1bmsKKzI4NTg3IDc0MWVkZDFjYTIzYThiZTliZjRkNjE4N2Y1ZDExZjYxYThmZjJjMmUgbGVnYWN5LXRydW5rCisyODU4OCBlNTY2YWY5NDY0OGJhNjYzMjA5NDUyMWM4YzQwN2FiZjA0M2RlNGU3IGxlZ2FjeS10cnVuaworMjg1ODkgNjQ1ZGMzM2NkNDgxMjQwZjA4NTk3YjVkMzZmZGRlY2Y3YWU2MWEyNyBsZWdhY3ktdHJ1bmsKKzI4NTkwIGJmOTBmYjcxYWE3NmQ5M2EzNjEzMTI2Y2Q1YzkzOTJjYTM1OTkwZGUgbGVnYWN5LXRydW5rCisyODU5MSBjMWNhMDNlZTUxNmUxM2RjNmJkYjA4OGNlYjZmN2JlMTEzYjNhZDZjIGxlZ2FjeS10cnVuaworMjg1OTIgMGYwZDM0NzRmM2Y2ODlkZmUyMTM3ZDUzZjhhYWM0MWM2OWUyZjI2NCBsZWdhY3ktdHJ1bmsKKzI4NTkzIDEzYTVmMzI2MjgzMjEyNTdiZWM3ZDAzYmMwNjhkMzE2ZWJmNzgyZjkgbGVnYWN5LXRydW5rCisyODU5NCBlMTYxNzE1NmY5M2ZkYzlhNzM4YmY0YjJmNjliYTAyMDYzYWU2NWQyIGxlZ2FjeS10cnVuaworMjg1OTUgYzIxM2U5YjgwMDI2Mjk5NzllNTkxOTFmYjA3YWIzYTFkZGZhYWJkZSBsZWdhY3ktdHJ1bmsKKzI4NTk2IGEzN2NmYzFjOTcxNmM3YTY1ODM0ZjkzYWEzOTYwYmRhZmE1MWNmYjEgcmVsZWFzZTIyLW1haW50CisyODU5NyAyYWMxMGQ5MzJkN2Y1NTkxNzJiMzZiOTg5ZjQ0Y2NkZjhiYjUyZDBlIGxlZ2FjeS10cnVuaworMjg1OTggNjEwNDhhZGEwNWJjYzk1NDkzMjdkOGE1YjYxMjYzYWE3ZTQ4ZWQzZCByZWxlYXNlMjItbWFpbnQKKzI4NTk5IGI2YmZhYTZjYTg0ZDA1NGE4MTg5ZGNiNWY3MDBkNDk3NDI0MWQyM2EgbGVnYWN5LXRydW5rCisyODYwMCBiOGI5MmIzZjViMTdjNmVjZjliNzkwZTk5YmMxNzdhMTVjZTE1ZjMzIGxlZ2FjeS10cnVuaworMjg2MDEgOThkOGJiMmVlNGMzMzg0ODFjYTFhN2ExYWUyYjFiZDYyZGIyMTc1ZiBsZWdhY3ktdHJ1bmsKKzI4NjAyIDQwYzM1MTkxMzlkZThiNmMwMjAzY2U5MjZiNDIxYjY1MjFjZDBjMzkgbGVnYWN5LXRydW5rCisyODYwMyA5ZWUyZmIyN2QzM2E3MjE4NGM4N2IyMzJkYzFlOWIyMGJiNGQzZGYxIHJlbGVhc2UyMi1tYWludAorMjg2MDQgMTNkMDZlNWM4YTVjM2VmNGI5NTUwZGU2MjVmNDc4ZDc0ODUxZTI4NSBsZWdhY3ktdHJ1bmsKKzI4NjA1IDFjMDE5N2Y0OWM1OWMwMzc3NjVkNThhMjIxMzEyMDE2ODM0ODQ5ZDggbGVnYWN5LXRydW5rCisyODYwNiA1YTE3ZjA5NzgzMjYwMDljMDZhMTA2YmZmOTY4NWVmOTk3ZGEwY2QyIGxlZ2FjeS10cnVuaworMjg2MDcgZjRlOWYwOWRmNGYyMzk4M2M2MzhiMDE4NjUyMmE3YmNiMzkxOTBkZiBsZWdhY3ktdHJ1bmsKKzI4NjA4IDI5ZWZjMmQ4M2FkZTYxOWEwYTM2YzZhMjc2MmEyNDUxOTY3ZTBjNTcgbGVnYWN5LXRydW5rCisyODYwOSA0ZjQwMDMwNDNiNTAxMzFlZDdkYWJjZDAwMGQxYTg5NTNmYzcyNzllIGxlZ2FjeS10cnVuaworMjg2MTAgMDM4NzExYWUxM2UwZTE4MzQ4YTUzMTAxOGI0MDhjNGE4MzE3MGI1ZSBsZWdhY3ktdHJ1bmsKKzI4NjExIGJjZGI2MGRmNGUzZWZiMzMwOGI5ZTg1MTViOWU0MTA1ZDZjZTZiOWUgbGVnYWN5LXRydW5rCisyODYxMiAzZWZiZDE5NDNiOGMxZTg4OGNkY2NmNmUzZDNhMmU2NWU3OWUwZjBkIGxlZ2FjeS10cnVuaworMjg2MTMgMTE1MDU2MGMxMDAzMTA4ZjI2NjFkY2M2OTE0NjJhNGYyOWMwNjJhYiByZWxlYXNlMjItbWFpbnQKKzI4NjE0IDI0ZmUyYWM1YWRjYzE5Yzk4OTI0ODA5ZDk2MDhjOWNhMGM4MDE2ZTMgbGVnYWN5LXRydW5rCisyODYxNSA4YTZmNTRiNzYzNDM0MDc2YzkyZTZmZjQ1ZTQ1NmM3MTcwOTgwY2RhIGxlZ2FjeS10cnVuaworMjg2MTYgNGI5ODQ0MTg4ZDA0ZTcwZDI3ZTBmNTY5NTAyYTk4Y2M3NGM1Mzg2MyBsZWdhY3ktdHJ1bmsKKzI4NjE3IDE4MTYwY2I2MzY1MDljZmU0ZGNmNjI1NjljYzlhMjE2YzljYWRkN2EgbGVnYWN5LXRydW5rCisyODYxOCBhMGJlMTgyNjMxY2MzYmFiZDJiNzQ0NGNhZDZmNTJkODZjMjgzYTJhIGxlZ2FjeS10cnVuaworMjg2MTkgNDZhYzM2NTM5NmE0OTc4NGNiMjAxZDlkMTUyZmM4MGUwYzhlYTc4MyBsZWdhY3ktdHJ1bmsKKzI4NjIwIDJiZjA5ODkyNGJhNDA5NTJkMzQ2YmRlZmYwMTkwMjQ2ZjZiNDg4ZGMgbGVnYWN5LXRydW5rCisyODYyMSBmMTg4NWI5OWEzOWNkYWM2N2M2YWZlMGYwOGI1ZmEzZmExNzZkYzYxIGxlZ2FjeS10cnVuaworMjg2MjIgYjNjNDU4ZTNjMjgwZjhmZDYxZDI0OWEyZTIwNGQxOGI3NzNlNDhiOCBsZWdhY3ktdHJ1bmsKKzI4NjIzIDQ2ZTcyYTcwODg1Nzg0NGI4MmZhMDVhMDE4YmM0NDcxZjkwMjBhYTYgbGVnYWN5LXRydW5rCisyODYyNCA5MDk2MGY3ZjRmMzE0NGRlMWE3YjcwMDhiZmU4NTZiZmFiNzBmZWM2IGxlZ2FjeS10cnVuaworMjg2MjUgNDVkZjJkZTM0Y2QzOWJmN2NiZTI2NGU3MDkyYTFjMDQ2MzUyOGUwZiBsZWdhY3ktdHJ1bmsKKzI4NjI2IDVkMjA3ZTU3ZDA0MDE0MGNlM2I1MmE3NmVlMjYwMWQ3MjNkZjlkOTUgbGVnYWN5LXRydW5rCisyODYyNyA1NTA4ZTA0ZDQ5N2M2ODUxNmZhZGVlYjkwODM2NGNmNjFlYjUwNThlIGxlZ2FjeS10cnVuaworMjg2MjggOTZkZDk5MjdlMDExZDhiMTVhNWE0M2NlZTk5Mjc4MWU0NzNhNmY5MSBsZWdhY3ktdHJ1bmsKKzI4NjI5IDRiMzJiZTY2MTc3ODVkMzUwMDU0YjVkNGVmOThlNGNkYTg4YTUzZjQgbGVnYWN5LXRydW5rCisyODYzMCA0NzA4MWE3NTNlY2M0ODI2NGM2ZDkyOGIxN2E3OGUxZGMzNzdiMmU0IGxlZ2FjeS10cnVuaworMjg2MzEgNjRkMTA1ZGQwODIzYmE5Yjg4NGEwZGIyZDBkODliNTMyYTMxOGE3YSByZWxlYXNlMjItbWFpbnQKKzI4NjMyIDhkZDZmNTVmZDRiN2U3ZWQ5YzVhN2ZhMDg2OGU4NDgzNzMyMmIyNzQgbGVnYWN5LXRydW5rCisyODYzMyBjMTg0ZTQxNjhkMTRjOGU5NzljZjU4NWEzZmIxOTBlMDZmNmM4MzQ3IGxlZ2FjeS10cnVuaworMjg2MzQgY2JiNmNjNzlkMzM2NTA3NTQ1MDA5YzZiN2JmNzdjNWU1ZjJmZjUwMyBsZWdhY3ktdHJ1bmsKKzI4NjM1IDI3ZjgzNTRmNDFiNmU3MjQ2OGVmOTI3OGEyYzEyMzlmZjI3NzQ4NWYgbGVnYWN5LXRydW5rCisyODYzNiBhZmQwMDMwZTRjMzhjNjBmZDlhNjY1OGRiZGYyNjI2YzZkZmRmNGYyIGxlZ2FjeS10cnVuaworMjg2MzcgYWJkNjI1NDE3YTUzNTlhMDUzOTBiOGMyZmU1MGRjMDNiMjg3NDY5ZiBsZWdhY3ktdHJ1bmsKKzI4NjM5IDJlN2ZlNTVjMGUxMWFjZTc2NzU1YzU5ZDVmZDcyYTliYzU2NjA0YTcgbGVnYWN5LXRydW5rCisyODY0MCAyZDEzZjlkOTgxMzU3N2RmNWU3Zjg2ZGE5MDUxMWM4MDgwZWM0YTQzIGxlZ2FjeS10cnVuaworMjg2NDEgYmY3NWYzYTQ1OTI3ZmZiMzBhMzUzMGI0MGY5OGFlZDVhOTYwODU1ZSBsZWdhY3ktdHJ1bmsKKzI4NjQyIDFlNDZkYTFlNjUyMjZkMDdlYTUxMDNmMjRiZWYxMzRhODcyMTdlZjIgbGVnYWN5LXRydW5rCisyODY0MyAyNDkwY2Y3ZTY4YTQ0YWUxZWE1NDdlYzJiZDFkZjkxNWYzMTQ1MTYwIGxlZ2FjeS10cnVuaworMjg2NDQgOWYzZWEzN2RjNDNjYjc4NThmNDA3ZTQ4Njc5ODI4NzJiODBkNjM4YiBsZWdhY3ktdHJ1bmsKKzI4NjQ1IDc2NzY4YWRiNmYyMzI4YjJlMWUxMTgwOGM2ODgzMGY2OTM1NzViZmEgbGVnYWN5LXRydW5rCisyODY0NiBjYmNkNzNmNTg3YWQ3YTQ5ODgwYmFkOTA3OTM1ZDc3ZDdhM2Y0YjY5IHJlbGVhc2UyMi1tYWludAorMjg2NDcgMTI5NDllY2VkNTVmZjdkOWM0NGY5Y2FmZTM3ZGVhYTU0NmJiYTI0NCBsZWdhY3ktdHJ1bmsKKzI4NjQ4IDc1Y2Q0YzIwM2Q4ZjNiZGYzNDc1YmY0NDA0M2I2ZWVjMWRlZjg3MWUgbGVnYWN5LXRydW5rCisyODY0OSA1MzMwYzA2MjA4MTBlNWRhYWE4YTdiYzM4ZWY3YmY1YzE3YzIwZmMzIGxlZ2FjeS10cnVuaworMjg2NTAgMDIyMGIwMDc1YTM1ZDQ5ODVhODJjMTVjYmJhOTYyZTgwZjg3N2E0OSBsZWdhY3ktdHJ1bmsKKzI4NjUxIDk1MWY1ZjI4ZjJmZWIzM2EzOTRiZmExMTY3YTAzMWNmOTY5ZjJiNjQgbGVnYWN5LXRydW5rCisyODY1MiBjZGFkNmIwOTIxZDU3ODI1MzExNTk5MGNhYmJjYjhjNDI3MTdjODE1IGxlZ2FjeS10cnVuaworMjg2NTMgNGZkMGI3NmM3NDllZWI2MWM3Yjc1ZDkzNDY4NmIwOTQxYmU2NWU3ZSBsZWdhY3ktdHJ1bmsKKzI4NjU0IDhhN2EyZjFmODhmMDY1MzRjNmJkMzkwMmM4MWI3OTM3YzVkNDNhYjYgbGVnYWN5LXRydW5rCisyODY1NSBhYzBlMWU5MzFmMzkwMGM5ZWQ2MGE2MjFiNjY1NGYxOTliYTkxN2M4IGxlZ2FjeS10cnVuaworMjg2NTYgNDBlNWIyZGE5ZjI4NDNjYjJiYzM4ZjU4NzJhYWM1NTRmNmY0NWUwYSBsZWdhY3ktdHJ1bmsKKzI4NjU3IDVmNWYxYzgyNTc4NDQwMDBjNWZmYzQxYzcxMjgwZmY2MmU4ZGJkY2UgcmVsZWFzZTIyLW1haW50CisyODY1OCAyYjE3MDFjZDQ1NjYyMTRmNjZhNGRjNDM2ZWZiYTY1YzNjMmVkMmU0IGxlZ2FjeS10cnVuaworMjg2NTkgZTcwOWEzYzhiZmVjYzVkZmRjYmYxODAyMzFjYmJmOGMxMDYxYjJlYyBsZWdhY3ktdHJ1bmsKKzI4NjYwIDIzYTJiYWQ4ZDgyY2U2NDE3ZWJmZjBiYzM4NjA5YmNkY2NjODEyYWEgRFNfUlBDX0JSQU5DSAorMjg2NjEgZmQ4YWE3YWVkNGQ1MWU2Y2Y3ODZlYWIzOWEyMjVlY2EyZjE3NzNkMyBsZWdhY3ktdHJ1bmsKKzI4NjYzIDE5OTA0NzUwYzM2NTdjNzU3MzYzMzA2MGY4ZjNlNzNmYjI1NzkxNDEgbGVnYWN5LXRydW5rCisyODY2NCA4MDljMTRmMTEwMWE5NWI5MDYzYmE3MzYxMTk4ZGE0MTI3NGM0MGUwIGxlZ2FjeS10cnVuaworMjg2NjUgMWE3ODk1Zjk3YjMwZDEzODczYWRlOTc3Mjk1MDUwNTU3YzNhMDY3MiBsZWdhY3ktdHJ1bmsKKzI4NjY2IDg3NzVkZWU2MGQ4OWE1NTlhYWM5Yjc5MDk1OTdmZDIwZWI5ZTc1NWYgbGVnYWN5LXRydW5rCisyODY2NyAyOTcwZTVlNzYwMWZmMjZiZTQyNzk2NWQ2YTYwYTE0ZGI4MzYyNTc3IHJlbGVhc2UyMi1tYWludAorMjg2NjggOGZkNGUyMmU3OGYwMWM1Yzg3Mjk0NGJjOWMxZjVlZTY5NDQyYjI1NSBsZWdhY3ktdHJ1bmsKKzI4NjY5IGFhYzFlZTk2NmY1NmE0ZDYwYTI5MjQ5OWExZTZjNjhlYTczM2E4MTAgbGVnYWN5LXRydW5rCisyODY3MCA4ZDc1MWI2MmVjYzQyNWI0ZTA3ZmY0MzQ1NzQwMDk0MzVmZmFhNWRlIGxlZ2FjeS10cnVuaworMjg2NzEgOTZiMmZmYjc3YjAxNzQzN2U1MGQ0OTEzYWQxZjMzYWY2ZjQzZDUyMyBsZWdhY3ktdHJ1bmsKKzI4NjcyIDI5MzBmYWYxMjVjYTlmM2ZkNDVjMTUzYjM2ZGRhNzI3YWVkYjU4ZDYgbGVnYWN5LXRydW5rCisyODY3MyA3MDA4ZTUzNTc5ZWJkNzU4ZmY3OGY5N2VhZDQ3YjJmNWQ1YzY4ZmU0IGxlZ2FjeS10cnVuaworMjg2NzQgYTBmNjQxOWNiMTNmZTZhY2RjNWNlZDBhMTAyNzVlMTQzZTVhOWY4NiBsZWdhY3ktdHJ1bmsKKzI4Njc1IDc3OGY3MjIxZjk1NTExNTUyMTI0NzIzZWQ0YzhiYmI1OGI1NTczZWQgbGVnYWN5LXRydW5rCisyODY3NiBjYzM1ZDdiODc4NTJmNDE4OGFiOWM2YTA5MDEyYTgwNDdkYWY2YjQ1IGxlZ2FjeS10cnVuaworMjg2NzcgYzgwNDQxMjNkMTEwYjZkYWFhMTk3YjE5YjUxYzM3MmMyMzQwYTljNiBsZWdhY3ktdHJ1bmsKKzI4Njc4IDBiZjk2OGVlMTVjNzY1NGVmNzc3NTNmZDZkMTM5MWEzYTFhMGUyZjMgbGVnYWN5LXRydW5rCisyODY3OSAxYmJlZGY1NDgxYzhiYjlkOGM4MDRjZjRhYjNmZjc1MDgzZWEzZTM0IGxlZ2FjeS10cnVuaworMjg2ODAgZTFiYTQxZGM5Nzg0MjgxNjgyY2UyNDE2N2YzMzM4MWU0NzhiYmRlMSBsZWdhY3ktdHJ1bmsKKzI4NjgxIGRiZjNjYzFmNDczM2M1ZWE5YmM0NWU0MDdmZTA0NTdkNTQyN2MzNGYgbGVnYWN5LXRydW5rCisyODY4MyAxMzg1ZDE3OWExN2FkYTQyMTE0MWVkOGUwZTdhYmYwMGU2NDVjYTE3IGxlZ2FjeS10cnVuaworMjg2ODQgYjEyOGU4YTExZTI5NWFlMjNlOTk4NjY1YTFjM2ZiOGRjMGY1NTk5ZCBsZWdhY3ktdHJ1bmsKKzI4Njg1IDQ4MGNhZjdjMGExNGUwNDVlYzI4YzAxZWZjOWQ3N2YzNjg0YTg1MWUgbGVnYWN5LXRydW5rCisyODY4NiBmYzJiNzM4MDJmN2I5ZDk3MWQ4NWQ0NmU2ZmRiZDVjMTc2MTVkM2YyIGxlZ2FjeS10cnVuaworMjg2ODcgMWRkN2U1MWZlMGJlN2NhYjZjOWI4YTQ2MGI5MTZlNzAzYjBhODBmYiBsZWdhY3ktdHJ1bmsKKzI4Njg4IDQ2OTBjYTc1NWJlYzYzOWZiYmJjYjZmMWJlMjQzZGIzZGYzYzBjNGIgYXN0LWJyYW5jaAorMjg2ODkgNmIwZTg0NmI4ZDM3ZTU0MTU3YWU3NmZlZWI5YjEwYTQyNmU4NjIzNyBsZWdhY3ktdHJ1bmsKKzI4NjkwIDlmY2I3N2IwNGY5N2ZiMzA5NzBhY2U1MjdlODQ0Mjc1MWJlNDhmZWQgcmVsZWFzZTIyLW1haW50CisyODY5MSA2ZWI4ZGI1M2Y3ZmNhYzQ4MGEwNDE1MzA1ZTE5ZDE3NDFlNjQ5MzUxIGFzdC1icmFuY2gKKzI4NjkyIGUyMDVjN2RlNWE1YTQ1NGEzYzM3MTEyZDM5NzViOTZmZTkwODEzMWMgRFNfUlBDX0JSQU5DSAorMjg2OTQgMjk1NTllMjFjZDUzMDQ5M2ZiNDVjZGFkZmE5MDVhYjI3NWUxNzcyNyBsZWdhY3ktdHJ1bmsKKzI4Njk1IDFiZDA4OWIxZGI3ZmRhYWM5NWI2MGFkNzZkMzY5NjZhODIwOGMxN2EgbGVnYWN5LXRydW5rCisyODY5NiAzZGIwM2MwZDE1MzEwYWE0YzE3OTcxYzMyNjg5NjQ3YjM2ODhhM2U5IGxlZ2FjeS10cnVuaworMjg2OTcgZTU3ZTRiYjUzMmJhYjQ4OTAyMTZmNWY5NmY0NTlhYTE5Yjg5ZjA4OSBsZWdhY3ktdHJ1bmsKKzI4Njk4IDA0YTU0MWU2ODk2NDQyYTYxNjY2ZmY4ZWNlODQ3YWZkNDhlYzRjMDMgbGVnYWN5LXRydW5rCisyODY5OSBhZDY1Mjg2OTFjMzA5YWE4NzkyZWFkYjY0ZWYwYTZlMjE3NTlmNzRjIGxlZ2FjeS10cnVuaworMjg3MDAgMGVjNDc1M2NjYjBmYjYyZTE1NDM0Yjg0NjA3ZWJlZjg0YThlYWUwNSBsZWdhY3ktdHJ1bmsKKzI4NzAxIDUyNzJiNzYzYzI5YzliYTdmNGZjMmIwMDliYjZmYTU5NzBhNzc0MzIgbGVnYWN5LXRydW5rCisyODcwMiA2MTU4ZmNhNWJjYmYyMmE5ZjYxODE1YTJjMDMyZjY3ZGNhNjQ5OGVlIGxlZ2FjeS10cnVuaworMjg3MDMgNGI2MTg1MTI4ODE0YzE0M2NjOTE4YjA4YjE5OGVmNmFhOWRkNmM5YiBsZWdhY3ktdHJ1bmsKKzI4NzA0IGZkYTQ4ZGQ5NGIwNzA0OTMxZTUyYWUyZGQ3YTg2YzNhYTI2NGMzZWQgbGVnYWN5LXRydW5rCisyODcwNSA3MzQyOWNhNzQ4Y2ViYmFlMmU0OWQ5ZmUwOGY5ZTI5NGRhZGFjZGVlIGxlZ2FjeS10cnVuaworMjg3MDYgZTlhNjNlNDgzMTA5Y2U4YzliNTk1MGVjYTRjYWUxNmQyMTZmNjQ5ZSBsZWdhY3ktdHJ1bmsKKzI4NzA3IDg1ZDgxZTA5ZTJmN2Q3OTU0YTJhNDY4NjVkNjU0YzE0NTRlZDUwYjQgbGVnYWN5LXRydW5rCisyODcwOCA2ZWMxNTQ2ODQwYWU2NjJmZjg1YWY4YTM2OTlkMTAwZDk5Y2M2MWE2IGxlZ2FjeS10cnVuaworMjg3MDkgYTAzZjc3ODY5YjJmNTQ5NjAyZjFkYWY1ZjI5OTc4ZWYyMzBiYjE5ZCBsZWdhY3ktdHJ1bmsKKzI4NzExIDk3M2Y1ZmYyMDdjYzU4YTViOTUyZDgxOTc5M2M1N2QzMjA2MWQ5MzkgbGVnYWN5LXRydW5rCisyODcxMiA1ZWE4MmNiNTU2ODIzZDViYzhhMTAxNzVhNmI2MDc0OWFlODI2YjhhIGxlZ2FjeS10cnVuaworMjg3MTMgODU0ZGQ3Njk2ZWIyYmVhY2EyN2NmNTc0ODNhZmJlODhjNDc1OTIyNCBsZWdhY3ktdHJ1bmsKKzI4NzE0IDU3ZDNiOTY2NTFiNmVjODYzNTA4NDc5ZDc5OGJjNzk2OGZlODBjYzYgbGVnYWN5LXRydW5rCisyODcxNSA4Y2U0YmE4NTM5NjkxOWQxZjI0ZjI5OGVkNTM0YTAwYjFjNWY5MWNmIGxlZ2FjeS10cnVuaworMjg3MTYgYzZkZTY4Y2M4ZTJiYmNlOTcwYzNkMzdlZDQ5NDQ5OGRjMjRkYjQzOCBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjg3MTcgOTNlMjU0NTc3Y2ZhNTMxYjk4OGQ4ZmEyODNiYTc5YTIwYjA0MGRmNyBweS1jdnMtdmVuZG9yLWJyYW5jaAorMjg3MTkgOThlMTJhYThjNTQ3NWY1N2I0MzI3OTIxZDBkNGE5NjVlNjk3MjBlZCBsZWdhY3ktdHJ1bmsKKzI4NzIwIGZiMDBmZDkzMTg4YTc2NTlmODNkYWZjZWRmOGUxZWI3MmQ4MzExYTggcmVsZWFzZTIyLW1haW50CisyODcyMSBjNzcyNjQwZDUzNWUwNDQxOGE3NGZlZDIzOTI0YmY0MWUyNDgxNDQ2IHJlbGVhc2UyMS1tYWludAorMjg3MjIgNmMyMWU5NWE0ODgxNzc1NmQ2YWQwZTE3MTlhOWQ5ZDA5YmVlZTA2MSBsZWdhY3ktdHJ1bmsKKzI4NzIzIDliODkyNGJkNWI1Y2NkZGQxNGE2NmNlMTM3MGRjYjRiYjQyZDU5MTIgbGVnYWN5LXRydW5rCisyODcyNCBmM2Q4OGVlMDU5MjhkNTA2MWMwZGY0MTQ3YWY0NzZlNjIwMjg4MDQ3IGxlZ2FjeS10cnVuaworMjg3MjUgNDY5MmM0ODdlZTkxMWVhYzU4ZGNhYzVlYjUwYjYyMzc5MzU1MmVkZCBsZWdhY3ktdHJ1bmsKKzI4NzI2IDFiYmY4ZTU1YThiYjliMGVlNDQ1Yzk0OWNhNmE3MDg1NmVjYTA1MGYgbGVnYWN5LXRydW5rCisyODcyNyBhZWMwZjk0NGY2YTAxNzYxZjMwM2E0NDAzMWRiNzRjZTU1Y2VkNTdiIGxlZ2FjeS10cnVuaworMjg3MjggNjA5ZjNkMzFkMWMyNGE3MzA4OGY1YzM1ZjQ3ZWMwZjdmYmM0YmVmOSBsZWdhY3ktdHJ1bmsKKzI4NzI5IGNkNzBjODgwM2ViNWMwZDBhNGFiYWI0ZDJiZmZjYWZhNWJhZWExMWQgbGVnYWN5LXRydW5rCisyODczMCBjOTdhNGNlM2M1OGVkYWJlNjg3MTg3OGQ3MDllYzA2MGE1ZGY5NGY5IGxlZ2FjeS10cnVuaworMjg3MzEgNGQ2ZjgyMDQyMzRhOGQ2OWNlZDJhMzVjMzBlYmM5Y2Y0MTNmZWZhZCBsZWdhY3ktdHJ1bmsKKzI4NzMyIGI2NGZjNmExMDQ5ZTliNzE1N2Y5ZmM3MWQzOTY0MGE0YjY5MmIxMjEgbGVnYWN5LXRydW5rCisyODczMyBjNDU1NjQ3NjhmNTI2ZWRmOWE2YmUxOTI4Y2RkZGY5Yjg4YzNmMjIwIGxlZ2FjeS10cnVuaworMjg3MzQgMDU1ZjdmYWU4MTUwOTEzNGZlMzllYzFhYzZiNDFhZjBmYjc2MjhjNiBsZWdhY3ktdHJ1bmsKKzI4NzM1IDc1MmY2ODk1Y2M2MzBhOGZmNGRiN2FmYjA4Mzg3Y2M5NThkMzFhMzggbGVnYWN5LXRydW5rCisyODczNiBmNWVjMDhkNDU4NTkyODc0YzQ5ZGVjMjgzMWI3NWM2MzkzMWM5YTg3IGxlZ2FjeS10cnVuaworMjg3MzcgZGE0ZTVlNDZhZTNmYjllZDY5ODFiYjA4YWJlNWQxYzNhNjYxZTMxZiBsZWdhY3ktdHJ1bmsKKzI4NzM4IDY3Nzc4MTE5NjE1MjYwNzdmYThkYmU3OTk0MjU3YTJjMmZjMDcwOTYgbGVnYWN5LXRydW5rCisyODczOSA2MWMyNTA2ZWMyZThlYTRkMGNmOWQ1MzU1NGEyNGMyZmM0YWE4M2Y1IGxlZ2FjeS10cnVuaworMjg3NDAgZGJmOTJjNTVmYmI4Yjc4OTIyYzY0MWI2ZTNlNWUyMTBkNTQ5ODA0OCBsZWdhY3ktdHJ1bmsKKzI4NzQxIDQwMTQ5YjUwMDIwY2JiNjg2ZWM3Nzg0NTU4ZjczZmY1MmY2OGMwZTggbGVnYWN5LXRydW5rCisyODc0MiAxYjBlYTQ3Mjc5YzY4YWQ4ZjQwZDQwZmEyMzUxMzVhNWUyYjFhMTg3IGxlZ2FjeS10cnVuaworMjg3NDMgN2JlMjY1NDRiZTRlMzVlNGZlNWJjN2U3ZDU0MWRiNjAzZTZmNDY3YSBsZWdhY3ktdHJ1bmsKKzI4NzQ0IGM2NzA5NDVjODY5NTIyODg5YzIwNTg5OGMzNjBiZjAxNmViOGI1N2QgbGVnYWN5LXRydW5rCisyODc0NSAyMmQxOTg5MTBiMjA4YTYwNjc0MjY2Y2MyMTI2NzVhYjEwMDY0NDQ3IGxlZ2FjeS10cnVuaworMjg3NDYgMWM3ZWUyM2RjNDllMTY5OGFlNzk1MDVjNzYwYzVkMzkyYzliZTJiNiBsZWdhY3ktdHJ1bmsKKzI4NzQ3IGVmZTYzOTE1MWJmZWM1YmUyMWFmNTIxMDYyOTEwMzkzOTUxMDFjYzIgbGVnYWN5LXRydW5rCisyODc0OCBlYjI4ZGNkZGQzNGRiYmMyNmU3ZTIwZjk2NTFiYmFhMDQ1NWNjZjUxIGxlZ2FjeS10cnVuaworMjg3NDkgZGYwM2ZjYzY2MTA0MzYxODM4NzM1MzUzMDE0YzMxMTZiYjMyZGM3YyBsZWdhY3ktdHJ1bmsKKzI4NzUwIDcxNzc5YjgzOWUwOTg3NGQ5YmE0OTM5Nzc1YTAwMzE1YWY1ZWIyYTcgbGVnYWN5LXRydW5rCisyODc1MSAwMzk5YzhhZWE3YjI4NjFkMTdkODJmMWI5OWNmNzliMzc5NjkzMTkxIGxlZ2FjeS10cnVuaworMjg3NTIgYmQ2NTEwYzVjYWJjNDdkOTVmNWY2ZmYwOTQzY2NiNzE1MzBmMmI5NCBsZWdhY3ktdHJ1bmsKKzI4NzUzIDQ2OGMzYmU2YzNlMmNkMTI0ODlhZWJkMTI2NzdhNTMzMDAwNTk3NTIgbGVnYWN5LXRydW5rCisyODc1NCBhYmI3NjhiNDE3YTEzMzBkNmY0M2VkZDY4NDY3YjhmNWNiZDk1NDMwIGxlZ2FjeS10cnVuaworMjg3NTUgODZmZjk1YjFjNjM2ZDVlMTU5ZTBiNDU4ZjlmYTZjMzAwYjZhZTFiMSBsZWdhY3ktdHJ1bmsKKzI4NzU2IGViN2I3YjcxOWVlNTY0OWRlOTM2NDRlNTIyYzM1ZDg3ZDM3MWYzODMgbGVnYWN5LXRydW5rCisyODc1NyBiZDNiOTJkYzk0MGE2NDllYzdlZjBkMmQxYTE2NmI3NjU4NGNmM2NiIGxlZ2FjeS10cnVuaworMjg3NTggOGVkYTE2NmIxMDRlY2E5MDRkYTJkODYxMTM5YTc5ZTc2MDE4YWM3ZSBsZWdhY3ktdHJ1bmsKKzI4NzU5IDkyYTNkODk3ZTgxOTNlZDIzOGQzNGYxNjY3MDAyMThiNjRmNTM0ZTAgbGVnYWN5LXRydW5rCisyODc2MCA1M2UyYzQ0OGIxNjlhMzI3NTI0MDFhYTZkODFiMTMzZTRhYjNjNjhlIGxlZ2FjeS10cnVuaworMjg3NjEgYjk2OGYwMzgyMzVlYTFhNTUxMzRlODE3N2NjY2ExZTk0M2E2YmE3YSBsZWdhY3ktdHJ1bmsKKzI4NzYyIGRmMGZmNWIxN2UxYWExNWRkYjlkODA3NmEwMzA1ZGQzMTJkMmJkZTMgbGVnYWN5LXRydW5rCisyODc2MyBlOWU3NGNjNTU0MGFkOGJhMGYxYjNkZTI4YWMyODU5ZjhhYmYxODAzIGxlZ2FjeS10cnVuaworMjg3NjQgYmRjM2RlZjNkMDg1ZGRhZDFmYjhhOWUzYjk4MmNjNWU4OGVlMGRmMiBsZWdhY3ktdHJ1bmsKKzI4NzY1IDgyM2YwMmEyMjIxMGQ4YTZhNGFkYTc0MjcwNDBlZWY3M2RlMTJjY2UgbGVnYWN5LXRydW5rCisyODc2NiAxNGFkNTYwZjRhOTdmODFiNjlmNWZkNmE5ZDY2NzVjYmExOWJiZTAxIGxlZ2FjeS10cnVuaworMjg3NjcgZjE3NTgyNzI3NjRjNzBjNTI5MzA1MDAyMGQwYmMwOTFjNGI4ZDkzOSBsZWdhY3ktdHJ1bmsKKzI4NzY4IDdkZTg4Y2YwNzgzZTJjYzNjMjJkNTZjN2RhOGViYWIxZGIxMWRmNmQgbGVnYWN5LXRydW5rCisyODc3MCA5YzdhMDZhYzhiMjc3MmU5NDFjZDQyZjBmMDUwM2JkNDM5YWE4MDdkIGxlZ2FjeS10cnVuaworMjg3NzEgMjRlNzg5YjZjY2I2NDE2ZDA0M2Y2NGM5YWYyZTI0OTgyYzU1NTc4MyBsZWdhY3ktdHJ1bmsKKzI4NzcyIDZiNjJhYjg0ODVlYjgxOTY0N2NjNDcxNmI1YjU0MTllNzZmZTY0ZWIgbGVnYWN5LXRydW5rCisyODc3MyAwNzM5MDQ2YTBjM2E1MTQ4MzRkZmIyYWI5MjdiNTM0YjU5MjI0M2UwIGxlZ2FjeS10cnVuaworMjg3NzQgMzM3ZmNjMjQ5ODViMzQ0YWI2Yjg4MzhjMzdkZTU4OGRhZTQzNmQxOSBsZWdhY3ktdHJ1bmsKKzI4Nzc1IGEzYjI5NTkxOGM1ZmQ1YTUzY2YxMGFjNjI0ZDZiMjBhYTdiZDIxNzkgbGVnYWN5LXRydW5rCisyODc3NiAzM2IyNDlhZjQzNjRkYzg0YjhhZTIxY2Y1NDQ0ZTZlN2ZlNGFkZTMwIGxlZ2FjeS10cnVuaworMjg3NzcgOWM5NTRlNjRkMTdhOTRhMGIxNDMwZWRhYTU2OGNiMGQ5YmE1N2RiNiBsZWdhY3ktdHJ1bmsKKzI4Nzc4IGEzMDIzMDg4MTlmMDVkYTg3OTE3NzM1OWZjZGZmZmRkN2U4MTcxOTMgbGVnYWN5LXRydW5rCisyODc3OSAyZjQ0YTkwZmZmMDc3ZWVhZmI3YzJjOTYyOWEyZjQ2OGY4MDM2OTFhIGxlZ2FjeS10cnVuaworMjg3ODAgMmFlMmEyMDNmNDdhYzJhNmVhNTlmNTIwYmE5ODc4OGQ0N2MxODk4ZiBsZWdhY3ktdHJ1bmsKKzI4NzgxIDlmNjE3MTA2MjhjNGYyOTViYjUxNmQ1MzNjMWRlZDQ5MGEyNGE5YWUgbGVnYWN5LXRydW5rCisyODc4MiAyYzNiNTM5N2MzZjllYzExNjg5NmFiOGYwYmUyZWVmNDdlZDcwNTEyIGxlZ2FjeS10cnVuaworMjg3ODMgYmQyNGMyNTk4YTQyOWQ3NmYxNTEwYjg3OTBlY2NjMDc3ZmI3OWJkOCByZWxlYXNlMjItbWFpbnQKKzI4Nzg0IGI1MjlhYzJmOWFiNjRiOTBiZDAxNTNhZGI5MzI4NGU5MWI3ZTVmOWMgbGVnYWN5LXRydW5rCisyODc4NSA0OWEzZWJlOWRmMTQ3NjY1NTNhMTExZTdmNDVkYTMxYTNlOTc1YWJmIHJlbGVhc2UyMi1tYWludAorMjg3ODYgNmVhODk4N2M3NDZmYjU1ZTc2OTQwZTkxZTBjNzM3NTJkZTE3NjNkNSByZWxlYXNlMjItbWFpbnQKKzI4Nzg3IDI3ZmY2OTRjOGMwNTBiNDVmMWE5N2M5OTQwMzdiZDg1Y2NmYTgxNzggbGVnYWN5LXRydW5rCisyODc4OCAzYWVjYTZjNTBmMzgwMGNhZThiNTI5ZWJmZjhhY2VmZTZjMzE4NDA3IHJlbGVhc2UyMi1tYWludAorMjg3ODkgODAyNTgzZjg4YWUwZDgyNTkyOWZmZDFhNWEwMWNiZmIzZjM4Y2EyOSBsZWdhY3ktdHJ1bmsKKzI4NzkwIGM4Y2I4OTc5MDYyY2U3ZDYxNmI0NjFhMDUxYmQ5MjVjY2FjOTUzZWIgbGVnYWN5LXRydW5rCisyODc5MSAwZWI4ODIwNjhhN2NlZTM2YmYxYzkyOWIyMDM2OTY5NGY5YTBhMDNmIGxlZ2FjeS10cnVuaworMjg3OTIgODY2MjBhZmIyMjEyNGJkYjE1ZDg4YTBhNGI2NDFjYTAzZGI4MmY5NSBsZWdhY3ktdHJ1bmsKKzI4NzkzIDZkZWM3NGY0NDI0MjA5ZGYzYTg5NTlhOTBkODAxZmYyZGU5NTE0NGUgbGVnYWN5LXRydW5rCisyODc5NCAzN2ZjNmE4M2ExMzRlYTcyZDk1ZDYwNGE2NDBmNDg0ODFjZDQwYzA4IHJlbGVhc2UyMi1tYWludAorMjg3OTUgNTg2ZmEyNDQ1OTgyNDczMmI0NWNkY2FkNDk4NDFiNDNiZTVmNjExZCByZWxlYXNlMjItbWFpbnQKKzI4Nzk2IGM0M2M0MjgzOTAxMThlMTU0MzhjZDIwYzEyOTM3YWNhNWM0ZmY3MTcgcmVsZWFzZTIyLW1haW50CisyODc5NyBlN2RiMWM5YTEwZmNiODcxMTIyODZmOGVhYTg2MDAzMWUwMTY4YjhkIHJlbGVhc2UyMi1tYWludAorMjg3OTggMDMzYWRjYmI0Y2IyYTc0NGE5YjM0MjU3NGFhNWZhNWNkNjVlOTUzOSBsZWdhY3ktdHJ1bmsKKzI4Nzk5IDJiYTgwYTQzMTJmZjUwMjA3YjUyM2I3NzY1NTlmYjc1MzNiZWUzOGUgcmVsZWFzZTIyLW1haW50CisyODgwMCA4NWFiNDY1MGRmYWE2YTQzMTJmYzdjNTk2ODliZmZiMjFiODM1NWQ4IHJlbGVhc2UyMi1tYWludAorMjg4MDEgOTZlMmVmZmVjOTRkMWJlYTU5MGE2MzcwNDQ3NjlmN2U1ZDk3ZjYyYSByZWxlYXNlMjItbWFpbnQKKzI4ODAyIDk4OGY0MjVkMTc2NjVlN2RjY2U1MDIwZmI5NDIxNTgxN2Q0Mzk5ODEgcmVsZWFzZTIyLW1haW50CisyODgwMyA0NjE3MGU1NjBlMDFlMThjN2QyYTgzOTM0ZDAxNWY4NzkxZDZhMjQ5IHJlbGVhc2UyMi1tYWludAorMjg4MDQgMWY5ZTk3OTgzMDJiZmZjMGIxNzFiOGFhYjg0MDEyODc3YWNiMWRjYSByZWxlYXNlMjItbWFpbnQKKzI4ODA1IDBmYmI3NmI1MDc0YjdlOTFmZjRjY2RiMmI0ZDM1MGViZmUxNTJhOWEgcmVsZWFzZTIyLW1haW50CisyODgwNiAzZjUwNDEyOTU0NDhjODZiZTViOWIwNjc4Yzg4OTgzM2Y1MmViN2FiIHJlbGVhc2UyMi1tYWludAorMjg4MDcgNTI1NWI0NWZkZGMyNTlhYjc4YjFkODJkOWRmZmY5MjNkYWYyNzNmZiBsZWdhY3ktdHJ1bmsKKzI4ODA4IGYzYzNlNzMyZDEyZTY5NGJlMWNjZjQ1MDJiZTNjMzc3N2RlY2ZiZTEgbGVnYWN5LXRydW5rCisyODgwOSA1MjQyMGZlNjdjOTY5MDA0N2RhM2M4MDk3OTExODI1ZWUzNDVhZTNmIGxlZ2FjeS10cnVuaworMjg4MTAgYzYzMTIzNjBjODYxNzFmZGNhOWVkMjI3ZDBlZjA3MzYxNzdmODk2YyByZWxlYXNlMjItbWFpbnQKKzI4ODExIDM3ZDg4YjQyZWQxMWE4YTA5MjM3OWRjOGMzMmY2ZTI3ZjE2YTI2MWYgcmVsZWFzZTIyLW1haW50CisyODgxMiA2NTEzNDY2YmI3NzQ3YTA3MzRmOWZmYzdhMjc1Y2IyYjg2NjdlYWFiIHJlbGVhc2UyMi1tYWludAorMjg4MTMgMGI2OGQ4MTBhOGJlY2YyYjg3Nzk4YzQyMDE0NDYzZDkzY2FkNzMyYiByZWxlYXNlMjItbWFpbnQKKzI4ODE0IDlkZDIxYzFmYWQ5YTQwMDcwMzAwOTExNGQwOTc4ZDk4YTI2N2RmOWQgcmVsZWFzZTIyLW1haW50CisyODgxNSA3ODZlMGU5YTVmN2Y5MjgyN2UyZDU3ZGNlMWVlYjBjMWFhODU3OTAwIHJlbGVhc2UyMi1tYWludAorMjg4MTYgMTE2YjA4NThkNGIwYmRiMDI0NGRmNGRhMzJhMTEzMzgzYTIxZmQ3ZCByZWxlYXNlMjItbWFpbnQKKzI4ODE3IDY1MWFiY2Y2M2ZlMTNkM2UyNmYwODgzODg3MGNjMTYwODIwODYwYTIgcmVsZWFzZTIyLW1haW50CisyODgxOCAyYmZlNDRjNGRhY2JmMzc4ZDQyODU5NjZlMDAyZmM3OGRmMmQ5YTIyIHJlbGVhc2UyMi1tYWludAorMjg4MTkgY2FhM2EyZmM2YTIwODY1OWRiMTU4MjAzODE0MTg0YTdlYjY1NmFjZSBsZWdhY3ktdHJ1bmsKKzI4ODIwIGMwNjZkYzNlYTE1MjE2OThlNmMwY2JiYTQzNWRhY2NlNWRhNjkzNDUgcmVsZWFzZTIyLW1haW50CisyODgyMSBlODRkMzI0YWM2NmE0ODg2NWM0OGZjMjJmODc4Yjg5NzllNDFiYmIxIHJlbGVhc2UyMi1tYWludAorMjg4MjIgNGRmMGU2OTFmNGRhZTg2YjA3Y2VlZDI1MzM4ZmZmMWY1OGNiZGQxMyBsZWdhY3ktdHJ1bmsKKzI4ODIzIDJkY2JiYmIwMDdjMmFiNzdjMGRlZTk5YWQ1OWY2YzBjYmE0OTE0YjEgcmVsZWFzZTIyLW1haW50CisyODgyNCA0ZDEwYzMxNzllYWQwZjU2MjgxMzYwNWVjM2IzMjhhN2YzNzYzYmRmIHJlbGVhc2UyMi1tYWludAorMjg4MjUgZmJjODIwZDcwMWJjYTk4Y2JjNDA0ZmZmYWE1MDQ5M2I4MzMxNzVkOCByZWxlYXNlMjItbWFpbnQKKzI4ODI2IDVlNGU4YzFhYjcwNDAwMTMxMmUwNzkyMWEwYTBmNDEzN2IyNjAxMzYgcmVsZWFzZTIyLW1haW50CisyODgyNyA0ZGY4MDdhZGZmODczZDUwYjEzYWEzYzliZTM3YjQ4MGJhNWM2MWM5IHJlbGVhc2UyMi1tYWludAorMjg4MjggMTA3NjdhOGMyZTJkNjVjZDllMzViMjFiMDI0MTlmYTMxZTE1NTA5NCByZWxlYXNlMjItbWFpbnQKKzI4ODI5IDBjNDRmYTA0ZjUzMzVlZmRkOGUzMzAyZjhmZDFlYTNiNDJhZDI0MzAgcmVsZWFzZTIyLW1haW50CisyODgzMCBlNTM3ODdiMWFkODU4MTgwNmMyNWVhNmFjNGFiODk4YTEwMDgyODgwIHJlbGVhc2UyMi1tYWludAorMjg4MzEgNzI1Zjg3NTk3YWQ5ZTI3Y2M0NzhiMWVlMjUxZDY4YTM0MGQ3Zjg1YyByZWxlYXNlMjItbWFpbnQKKzI4ODMyIGU4ODkxZTY5NTJlYjYwMTVjYzA2MDA4ZmRjN2I3MDdlN2ZjNjg2YjcgcmVsZWFzZTIyLW1haW50CisyODgzMyA0NjJjMzViOWFjMWZhNGE0NjI1YzAxZTdhOTNjODY2YTQzYTA0MzYyIHJlbGVhc2UyMi1tYWludAorMjg4MzQgODBjZTM4NGQ0MDhhNmY5ZTk0NmUzOWIyOTE1ZWExMzdkNWNhY2E3OSByZWxlYXNlMjItbWFpbnQKKzI4ODM1IDkxMTEwNzgyOTkwM2I4YWUzMGI3MjMwN2Q1OTM4NDE3YTVkYTk2MjcgbGVnYWN5LXRydW5rCisyODgzNiBlNWUwNTdhNmQyODFmMzE1ZmQyYTcwOTQ2MWQyZTFhNmYwZmNjMDNkIHJlbGVhc2UyMi1tYWludAorMjg4MzcgZGUyMWU5M2JhZGY2MzY1ODMzYzZmNzkzZWE0ZTZiYTgwMjZjZjFmOSByZWxlYXNlMjItbWFpbnQKKzI4ODM4IDc5MjlkNzU2NmE5NDI4OTE5NzgwMTQ5YTliZjQ4YTY1NjcyOWJjZmEgcmVsZWFzZTIyLW1haW50CisyODgzOSBiYjIwMzNjOGI5MmZkZGM0MTllM2YxOWIyN2QwODZkN2M0Y2VjNjRlIHJlbGVhc2UyMi1tYWludAorMjg4NDAgZjU1OWU5N2E0MWJlNGQwYjQ2ZDk3YWYxZTc1OGVjZjQ2NmNkOTRlMiBsZWdhY3ktdHJ1bmsKKzI4ODQxIDMwYmY1NTQ5MWU3OWVkZDk2OThhZDM4YzlhNDNiMjVmMTU4MjcxNmMgcmVsZWFzZTIyLW1haW50CisyODg0MiA5Y2E2MDlmOGJkZjIyNjE3YzQ3ODZjZGU3MzMwNjNjMGJhN2I2YjE5IGxlZ2FjeS10cnVuaworMjg4NDMgODhkMGY2ZDZiMDNlYzFiYTU5ZjBiMjAzMTQzY2E0ZDUyZTFlZTFkYSByZWxlYXNlMjItbWFpbnQKKzI4ODQ0IGI0NmM3ZGEwNjQxMGU3MWY5N2M0OTc3M2EyZGU3ZjMzNzcwN2Y0NTQgcmVsZWFzZTIyLW1haW50CisyODg0NSBkYzMxNjY4YTdjMDlkY2JiMTU3Mjc5M2RlM2NjYWYwZTkyN2IzZGZjIGxlZ2FjeS10cnVuaworMjg4NDYgOTc0MjRiOTlkZjkxYzU4ZjIxNTE2MzUwMTcxMjMyNTIxMjBjMTcyOSBsZWdhY3ktdHJ1bmsKKzI4ODQ3IGQ0ZmY5ODQxNDE3YWUwNmYyNTJmMzllZTMyNmNmZjM4Y2IzOTg3NWYgbGVnYWN5LXRydW5rCisyODg0OCAwMjI2ZjE2NTZkODE1MWY3OGFmZDkzNDhiOGZmNjcyMjRhOGYzZDFjIHJlbGVhc2UyMi1tYWludAorMjg4NDkgNzEwMzU0ODMzYmQxOTgwOThmNTY2YWU0NTBmZTRkODUxOTlmMDBiMyByZWxlYXNlMjItbWFpbnQKKzI4ODUwIDUxY2RmNDcwZjk3NDQwOWY1YjAxN2JiZjFlNmFkM2I0MmNjMjBmMmUgcmVsZWFzZTIyLW1haW50CisyODg1MSA3NWM0YTY3ZGNiOGMzNjAzMjFhYmI1MWZjNmI0Mjg1MGM5OWY2Mjg4IGxlZ2FjeS10cnVuaworMjg4NTIgNDEwZjZlYWJiYzBiODg0NGEwYTFmMjBmZjRjMWNjYWFhOGQ4NzkwNiByZWxlYXNlMjItbWFpbnQKKzI4ODUzIDZmYzBiNzE2YzAzODlhMDhkMzcxZTI0MmYwOTQ0N2M0YjE5MmQ2NjYgcmVsZWFzZTIyLW1haW50CisyODg1NCA0MDgwMWRmODU5MTIxYTRlNjBhMDk3OGY2NDE4MjQ3NDZkYzg4YmVlIHJlbGVhc2UyMi1tYWludAorMjg4NTUgYjQ4YTIzNmI4YzdiNzdkODEwYmE4MDViNDY0YjM0YmI0OTNjMjBjZiBsZWdhY3ktdHJ1bmsKKzI4ODU2IGQ5MzVhMWQ3MDIzMGI5MThmZTYyZTlmMDg4ODg1MjI1MTkxYmRiNDEgbGVnYWN5LXRydW5rCisyODg1NyA0ZDdlOWU0MGQzZTRhYzk4MjcxZmQyZjRmZTZkMjMwYzI2ZGUyYjViIHJlbGVhc2UyMi1tYWludAorMjg4NTggZDJkYmVhMTdmYzZmZThjMGQwNjk4M2Y5ZDE5NTY0MDRiMTE2MjgwNyBsZWdhY3ktdHJ1bmsKKzI4ODU5IDk0MzE1YTk3YjM5ZTY2ZWNjNWMxNTAyZTUzNDE4ZDJkZWVlYzc2MWEgcmVsZWFzZTIyLW1haW50CisyODg2MCA3ZDBjNGQ3ZTBhOGM3MTkxZDJiODk4ZTY2ZGM3MGNlYTcyZjE0YzY2IHJlbGVhc2UyMi1tYWludAorMjg4NjEgNDVhMjE0ZjFiZjBiNDU0YWZmOTNjODc3MDlhYTIxMDVjOTk2ZGMzNyByZWxlYXNlMjItbWFpbnQKKzI4ODYyIDgzMjA4NGEzMDI4MDk2YzM3ZTBlZWY3OGY1ZjJhOWE1OTFmYzg3ZjUgbGVnYWN5LXRydW5rCisyODg2MyAwNDg5NjhjYTI2NjhkNDIzNTIyNTA1MjBiNWQ3ZDU3N2E3YmNjMmZjIHJlbGVhc2UyMi1tYWludAorMjg4NjQgMjUzZTM5N2RmNjdiMWUzNzQzZjkxY2U2OTNmNDA3ZWEzMDQ4ZGViMiBsZWdhY3ktdHJ1bmsKKzI4ODY1IDBhMDk1YTI1NzQyNDUwMDM5MmRjZGNhZjc0ZTNmNzZmZmM4MDAyMTEgcmVsZWFzZTIyLW1haW50CisyODg2NiAxODQ5ZTIzNTUyZGZiYzFlMTZhOWMzOGZlZWY5NGMwZGZlNDZkYTZiIGxlZ2FjeS10cnVuaworMjg4NjcgNTZjYjkyZGJiYWFmYzA1YmRlZWMxMDM0MzUzZGIzNmU2MTg5NGJkMCBsZWdhY3ktdHJ1bmsKKzI4ODY4IGFhMzA0OGViZDE5YTBhNWE2ZDg0OTA4ZjNhMTg0NDMzNmJhYzhmNjcgcmVsZWFzZTIyLW1haW50CisyODg2OSBmNzQ5ZDUwZGNjZGM1ZWJmZTUwNDlhOTJhNDEzYjVjMzdlZmJmMGYwIHJlbGVhc2UyMi1tYWludAorMjg4NzAgOTFiNGY3YWJlYmE4ZDU1MmNiMjJiOWIwZmUwYWViNGRlZTViNWRhYSByZWxlYXNlMjItbWFpbnQKKzI4ODcxIGZiMGY3Y2M1YTY5ZjZiZjRhNTZmYTg5N2NkODNhMmJhMDM4MGZjMDIgbGVnYWN5LXRydW5rCisyODg3MiA2MjM3YmUyN2E1OTczNWJmNmU3MDIxNmUwZTk0ZmJjYWM3NDY3YjE0IGxlZ2FjeS10cnVuaworMjg4NzMgNTU0Zjk3NTA3M2EwMzgwZWY3MTg5NWM2YmE4YjhkN2QzMjAyYjU5YyByZWxlYXNlMjItbWFpbnQKKzI4ODc0IDI5ZjYxNjBlYzBiZDkzYzgwOWE0MzRlYzIyNGJkM2YxM2M0MjBiZmMgbGVnYWN5LXRydW5rCisyODg3NSBmZTYyMTFiZjkwYmI4ZjU0OThkNjk2ZTI3MjAxZmQ5ZGJiNGQ4NTYwIHJlbGVhc2UyMi1tYWludAorMjg4NzYgYzZmMzA3MmQ1OTVkNTRmNTEzMTI3NmFjZDY4NmE5MzYwOWVlZjU4ZCBsZWdhY3ktdHJ1bmsKKzI4ODc3IGViMjUyYjM3NGVjZmM4NWU2Yjc3MmVkZWIyNTg5MTgyYmJmN2ZmYTAgcmVsZWFzZTIyLW1haW50CisyODg3OCAxZjliM2NiNjZlMDk4ZTAzYzRkYWEyMmZlYmY4N2U1ZTlhZDNjN2NjIGxlZ2FjeS10cnVuaworMjg4NzkgMTEwODhjNTM0NjdhMTc2OGQ2YWI5YjQ0NmQyMjg4M2VhYTk3OTVjMSByZWxlYXNlMjItbWFpbnQKKzI4ODgwIDcyZDU2YjQ0NjBjYjlkZjNjYTUxOWQ3NTEzMTAwYWNjYjRiZWU0YWYgbGVnYWN5LXRydW5rCisyODg4MSBiNjI1MTRjMjE3NjI5ZTIwM2U0M2E2Y2U2ZmIzZTJiZTNiZWRmM2ViIGxlZ2FjeS10cnVuaworMjg4ODIgM2MzYjg5NDZkYzYzYzVkYjY5MjhhNWNjNzY3MTA1YjcwYjkyMjQ4MyBsZWdhY3ktdHJ1bmsKKzI4ODgzIDBjNzc5NDkyY2Q4MDc3ODg5ZjkzNTcxZjJkZTlkYzZhN2NmZDY0MDAgcmVsZWFzZTIyLW1haW50CisyODg4NCA4NTQ1MzRjNjA3YTE2Y2Q0ZGZhOTQwNWI1MzYwMzMwMTY5YWY3ZGYyIGxlZ2FjeS10cnVuaworMjg4ODUgZGZiNzRkNjExODNkNzM3ODkwMjA5ZmMzZGFjMDU2ZDU5MTU4NGQzZSByZWxlYXNlMjItbWFpbnQKKzI4ODg2IGNkODM3ZWNiMWQ3MDk1M2U1YTVhYTg2OGFlY2IyOThkZTlhMGZmNGYgcmVsZWFzZTIyLW1haW50CisyODg4NyBiZGUwZDI2MjZiMjA1ZGNiMzg2NTFhNDhmZTI5OTJmOTk2OGJmNmQzIHJlbGVhc2UyMi1tYWludAorMjg4ODggZDMyNTg4Yzg4NjMzMjk0NjhjYzRmNmQ5OTc1OGNiZDVlOTkwM2M0NCBsZWdhY3ktdHJ1bmsKKzI4ODg5IDg5ODMwNGY2ZGEyM2I1Yzk3MTVjNWMwZmJjYTY3YTAwNTE1MWY4OWIgcmVsZWFzZTIyLW1haW50CisyODg5MCBiNjExMjMyNzEyNGI0NmEyNzQxZWUwNWVmNWQ0NjY5NGZlNzFiOGI0IGxlZ2FjeS10cnVuaworMjg4OTEgYWEzMWM2OGRhODRkZjZmMjhkNzdlZGVmOGIyZTdkNjc0ZDU2N2M2ZCByZWxlYXNlMjItbWFpbnQKKzI4ODkyIGRiNWYxZGI3YjM0ZTE4YzRiYTZiNTdmN2UzMDVmNjcyN2VmMjRjZDggbGVnYWN5LXRydW5rCisyODg5MyA5YmEwMTExMzg4MzE4YTRjM2JmMGJlZjY4NGY2NTVhYzA0ODUwNWE4IHJlbGVhc2UyMi1tYWludAorMjg4OTQgZThjZGVhNDRmN2FiY2VjNmExNTgzNjU4ZDQyMTU4ODJiMWM3NGUyZiBsZWdhY3ktdHJ1bmsKKzI4ODk1IDZhMmRmNDRiOGJmZDQ5NmZhZTA3NTFlOWIwZjAzYjljNDcyY2FlYzAgbGVnYWN5LXRydW5rCisyODg5NiA3Y2Q2ZjU0OTA3NThjNjNiNjE2ODMwNzY5ZjVkNjFjN2IzMzlmYjIzIGxlZ2FjeS10cnVuaworMjg4OTcgZjgxODBhNzRiMGZhNWM2ZWM3NWI1ZDYzNDAyZjhkNzc1ODdmZjJiZCByZWxlYXNlMjItbWFpbnQKKzI4ODk4IDA1ZmZlMjAxZTkwMmQ4MGY4ODcwM2EwM2E3YjMyMjc3Y2IzNjgyOTMgcmVsZWFzZTIyLW1haW50CisyODg5OSAyZWI0ZWVkNTM4YzZkM2VmZDVkYTJjNWY1MDFkZmMxYjNlODJlOGRjIGxlZ2FjeS10cnVuaworMjg5MDAgZDBhYWQ1MTllNzEzMGRhM2QwMTIyYmMyM2QyYjJiN2M0MTkyNTFkNiByZWxlYXNlMjItbWFpbnQKKzI4OTAxIDRkMzY3ODcyZmNjNjY1YmZjMjRmZTZhYzE5ZTk1M2ZmZjk5ZGNiNmEgbGVnYWN5LXRydW5rCisyODkwMiA3NmNjZDViZjlmZjI2MjlmZTQzYjE1NDQ1MmQ2M2NlMDVlYzY1MGQ2IHJlbGVhc2UyMi1tYWludAorMjg5MDMgNDFlYjI0Yjc0N2MwMmNkY2Y1YTkwMmIwZWM2MDI4ZmU1NDg2ZDBkNCBsZWdhY3ktdHJ1bmsKKzI4OTA0IGRjYWZkOTljODViNjhhODgzMDczOTEyOTQ1MTBhODI4YWI1NWU4YWQgbGVnYWN5LXRydW5rCisyODkwNSBhNzcyNTRjYmQ0ZjA2YjFlODI1Yjk1YTVhYmI5NjA2ZGM1NzI1ZjRkIHJlbGVhc2UyMi1tYWludAorMjg5MDYgZDA3ZjhkYjNkYjQxZTRiOTQ5NzgyYTYwY2JkMzczMzM4MTUzNWQ2NiBsZWdhY3ktdHJ1bmsKKzI4OTA3IGI1YTlhYWM0YjEwZmZmNzgzYzk0NGU4OGU4MjNlMDRlYzc4NzE4MjMgbGVnYWN5LXRydW5rCisyODkwOCAwOTU1MWM2ZGEyOTlmODE4Y2I5ZmRmZjcxZDJiODZiYzE4NGJlMmE2IGxlZ2FjeS10cnVuaworMjg5MDkgMTZlNjYxOTcwOTMwNzBjODg3NmI2ZWU3OTU5NjBmNTA4NTAyNjdhMCBsZWdhY3ktdHJ1bmsKKzI4OTEwIDFkOTFlZGZkNzVmMmI0NWQ2ZTRlODljM2FlN2RmYWU2NGYxMjcxNTUgcmVsZWFzZTIyLW1haW50CisyODkxMSA0ZGE4YTRkZTA3YzIzM2QwN2IzZGMwN2YwMDQ1NjE5NGEyZDM2MWQ1IGFzdC1icmFuY2gKKzI4OTEyIDI4MzBmOTYxNDI5NDA1ZmNjYWU3ODE1NzVlNzA5MDgwMTY0Yzg1ZGIgYXN0LWJyYW5jaAorMjg5MTMgZDhmNDk4MGI5NjVjZWJhMDFhOTI0ODlhMzJkOWEyMDI1Zjk4YjhiYiBhc3QtYnJhbmNoCisyODkxNCBkZmY0OGM0MTc5ODAyMTRkZTViNjEyODNkYWI2ZGY5NDJjN2RhMGU5IGxlZ2FjeS10cnVuaworMjg5MTUgOTY5NjBkNjczOWUwOTcyYzllZjBmZTlhOWMyM2M5MTUxMzg3ZDFjMyBsZWdhY3ktdHJ1bmsKKzI4OTE2IDFmMmIxZTY4NDg1MDM2YjgzNDNkODg2NGM3OTE1YmRiMDhhZTRiNGMgbGVnYWN5LXRydW5rCisyODkxNyA3ODQzYjUzMDA5ZDA2OTIyOWVjOGU2MzdhZGU3OGE1Mzk0OGE4ODQ0IGxlZ2FjeS10cnVuaworMjg5MTggYjY4NmRkYjI1YzY5YjRiNjYxZWUzMGRkNDdiZmQ5OTYyYmQyNGE2ZSBsZWdhY3ktdHJ1bmsKKzI4OTE5IDU1ZjA5MGIzOGI4OGQzOGYzMzgzZjZkYTdmOWRmOWE1OTBmMzVkMGMgbGVnYWN5LXRydW5rCisyODkyMCAwZmJiZTc5YjRlZGI1YjBhNGViZDU5MTNjZGY0OGMyMjQ1ZTJlZGY0IGxlZ2FjeS10cnVuaworMjg5MjEgMThlNjc5YmUyMTE5MzY4OWE3ZDYzMmY2MmM0MjQ5Nzk2ZWZhODliMiBsZWdhY3ktdHJ1bmsKKzI4OTIyIDhhNmVlYjBjNzkzNDE0NGU2ZTZiZWU3NDE3ZjY4NzE4MDhmYTc5ZmMgbGVnYWN5LXRydW5rCisyODkyMyAyYTc2M2U3YjdkZWJkMDdkY2M1YmRhYzQ3NTY1MTNjNDdlMzM0OGNmIGxlZ2FjeS10cnVuaworMjg5MjQgMjU2NTRiODExNjE2YjBmMDU3YWU5MGVmMWM2M2JmNjc3MjVlZDkwOCBsZWdhY3ktdHJ1bmsKKzI4OTI1IDU3ZWMxNjQzMTg4YzkwMzFmY2E2NWNlZWI4YWE1M2E4MzdiOWRmOWYgbGVnYWN5LXRydW5rCisyODkyNiBlMmY2NWE0OWNhMzQzZTE5MTVlNmY2NzI4NzVmMTRlMzYzMWMzMjExIGxlZ2FjeS10cnVuaworMjg5MjcgN2QyNjliYzEyNTg3ZGQ1NzM3MzFlMTI2NWE2Yzk5MDczNmVjZDcxYiBsZWdhY3ktdHJ1bmsKKzI4OTI4IDhjOTU0ODYzMDFiM2Y3NDljNmNjNThjODlhNTBmZjZjNmEyY2E1MTIgbGVnYWN5LXRydW5rCisyODkyOSBiYmY4Y2Y1ZWU5Zjk0MjI4NGViNjkzZGMzOTEwNjdlOWRiMGYxNzY2IGxlZ2FjeS10cnVuaworMjg5MzAgOWQ1MGJjODMxYmNhMDRjNmI2YjkxNmNmNGMzYzM0ODRhZDI0MWRkMiBsZWdhY3ktdHJ1bmsKKzI4OTMxIDIxNDQ0YmRjYjA5YzA0ODkxZDA2ODdlZmU2OWMxOTczN2Q2NzkyNGUgbGVnYWN5LXRydW5rCisyODkzMiA4MGY2NzM4NWY1OTlkYzE3MzNhMTc5ZDkxODViMjA5OTExYWNiMmNiIHJlbGVhc2UyMi1tYWludAorMjg5MzMgZmM1MzRkMWM5YzI4Mzk2N2ExYTkxODc1YzJkYzVjMDU3MWQ5YWQxMSByZWxlYXNlMjItbWFpbnQKKzI4OTM0IGNhYzFiMDM0YjkwMzc2YmE5ZGJjZjM4ZWVhMDY4MWQzMjM2MGE0ZjEgcmVsZWFzZTIyLW1haW50CisyODkzNSBlNDc1MmYzMTYwNTNmYTM2OGJmYTBjOThlMDM2MGVmMGM5MjhjM2FhIHJlbGVhc2UyMi1tYWludAorMjg5MzYgY2U3YmJmM2Q5NDkzNTIxMzI4NjIwMTQwMzYxYjFlODVkM2I2ODQ5MSBsZWdhY3ktdHJ1bmsKKzI4OTM3IDg3N2EzOTE0ZGYyMjQzODRjNjk0MDdkMGNhY2I3MDczYjU2YjFhYTggcmVsZWFzZTIyLW1haW50CisyODkzOCA3NjZiZmM5M2VjYmE2NmI2ZDY2ZDI2NDM4MDgzZjk2NzY0Y2EzYjdiIHJlbGVhc2UyMi1tYWludAorMjg5MzkgNzViMDhlNmU5N2M2MGQ2ZWIxZWRlNzlmZTEzMjdhMjk5NDliZjBkNiByZWxlYXNlMjItbWFpbnQKKzI4OTQwIDIwZDdhNTQ1NTkwNzgzYjQ3NzYzN2Q5YjViYTczMjAyNGU4ZDQ4YzggbGVnYWN5LXRydW5rCisyODk0MSA2ZDU4NzE1NDMwYTdiYjgwNDRkNWZiY2FkNmUzOWRhMjUzNGY1M2JjIGxlZ2FjeS10cnVuaworMjg5NDIgMmFjN2IwOTY0YzdiYTk3NjczMzlhYzFhMjBhYmVlMjE0ZTc3YjMzZCBsZWdhY3ktdHJ1bmsKKzI4OTQzIDRlMDVhYWI2MGJkZmFhNWZjN2M0YTE5MTMzZjNlYjQ1NmZjOTJhNDEgbGVnYWN5LXRydW5rCisyODk0NCBjM2VlYWFmZTYyNjVlM2I0NWI0OGM4MDM5N2Y3OGI5MTBmZjM1MTA2IGxlZ2FjeS10cnVuaworMjg5NDUgNWY1ZmQyYzRmY2YyMjdlOGEzNzBhYzEwYjEwYWFlODczMWQ4MjlmOSByZWxlYXNlMjItbWFpbnQKKzI4OTQ2IGQwZTU3NDMyNmQxOGIzYjM4YmFjMmYyMzRhYTI0NDhiZjM5N2M4YmUgcmVsZWFzZTIyLW1haW50CisyODk0NyBiNTI2ZTEyYjk0MWI3ZmRiNmVhMTFlM2VhMGRmMDRlMmIwMDIxMGY3IGxlZ2FjeS10cnVuaworMjg5NDggYzU3Mzg0OGM3NWMzMzJhYmE5YjdjMjAxMzlmMmY2ZmU5ZTFkMDNjZiBsZWdhY3ktdHJ1bmsKKzI4OTQ5IDBhYTY0ZWViZDQ5MzJjZjljNjUzMTZkMWFhNzFkYjIzOTRlMjg4MzUgbGVnYWN5LXRydW5rCisyODk1MCBkZWE2MTliNTg4MmQwYzk2NDVlY2Y3ZmZiMzUzNDcwNGZhZjcwODgxIGFzdC1icmFuY2gKKzI4OTUxIDE5NTgzM2EzZjEwZGFmMGQyYjcyM2QxYTk3MjBmODY4Mzg1MzI4MjIgYXN0LWJyYW5jaAorMjg5NTIgYzQ2MjhkOWFjYzlhMTU3MGQ1MDRkYWQ4ZTkxMDQ2MmI1Y2NkM2JjYyBsZWdhY3ktdHJ1bmsKKzI4OTUzIGRiOWZlZTM3M2IzMDNiMDBkYjhlYzk5YWFiZjQ2ODRjMGIxZDJhMGEgbGVnYWN5LXRydW5rCisyODk1NCA3NDI5ZjIyNDczY2M3YzA0YzQzZDk2Mzg2M2ZjODdmYmFlZTkzM2Q5IGFzdC1icmFuY2gKKzI4OTU1IDU2ZGQ4NmI0Y2I4Nzc3ZTE3ZjM1NWIzOTJhYzhhMjQ0ZGRiZTJiY2MgbGVnYWN5LXRydW5rCisyODk1NiAyYzk4ZWIxYzMxNjJkOGZkZGQ1NzFhODQ5Y2ExNTBkNDI5ZjJhNTFhIGFzdC1icmFuY2gKKzI4OTU3IDI3ZjgzNTUxOWE1ZTdkZWJlODdlMzc5NjE5ZjVhZTc1ZWFhMjlkNzUgbGVnYWN5LXRydW5rCisyODk1OCA5MTY3NDkwYjBkZTk0YmMyMzBjNWRhZGY5ZDZlNWU4NzZiMGU4OThkIGxlZ2FjeS10cnVuaworMjg5NTkgMmJjMmUwMmZkNmRkMTJkYjQ1ZWUyNDRiZjI2ZDBkOTU4NzJiZjVjOSBhc3QtYnJhbmNoCisyODk2MCA0NTU3N2UxODU2ZDBlOTM4NjQ5Y2ZkNDI0YWFmYTZkYTRiNmIwMzQ0IGFzdC1icmFuY2gKKzI4OTYxIDdmZDJkYTIwMTgyM2QxY2U3ZGRjNTYwOTNkMDMwYjNiZmViOGUxYjQgYXN0LWJyYW5jaAorMjg5NjIgMjRjNWExYzg3ZjNiZjEyMjllNTA2Zjg3NTkzZDRjMWIxMzg1NTk1NyBsZWdhY3ktdHJ1bmsKKzI4OTYzIDY2OTRmMGNjZjhlYTRiZTc1Njc0ZjE1NzIwYmMzNDYyZTYwMDRmNmEgbGVnYWN5LXRydW5rCisyODk2NCBiYzA5Nzg0NTlmZmI3ODBjZjM4MzZkNDdkNzQ0YTVmNWY2MzczZjhhIGxlZ2FjeS10cnVuaworMjg5NjUgYjNhOThlZWEzNGM4NDFjMjNmOGM3MzY0ZWFjYmYwYjA0YWNkNTIyMyBsZWdhY3ktdHJ1bmsKKzI4OTY2IDJkODBiZjY1Y2QwOTc5ZDkwMmE0MzdjYTQyYTg3YTNmYmI1NGRjZmUgbGVnYWN5LXRydW5rCisyODk2NyBlMWE3MzI4ODViZTA5NjE1OGU2ZjRmNTBmZDg5MGUyNGQ1YTliYzg2IGxlZ2FjeS10cnVuaworMjg5NjggZDFiNmIyY2E5ZDliODUxZDIzNjQ5MjJjYzAwYzM4YmQ0OGM2YmU0ZCBsZWdhY3ktdHJ1bmsKKzI4OTY5IGQxMjRmYjA4Nzc3ODU1ZGZmMmE3NTc4ZDI5MWM4ODY2YmQ3Njc0ZTkgbGVnYWN5LXRydW5rCisyODk3MCBiZDA0ZTJiZDQzN2ZjNWQzOWRkMmU2Mjc0MGEzOGU5NzFlYmJkODEwIGxlZ2FjeS10cnVuaworMjg5NzEgNTlmODJkOTY2ODJlOWE4MDg1ZGM0ZGQ3ZTEwZGY4MzE1NmYxYmY1YyBsZWdhY3ktdHJ1bmsKKzI4OTcyIDM3N2Q2NGNiNTM0NzBiMDY2MjliZWRkYTEzODA5NDM1N2IzMTRiMzEgbGVnYWN5LXRydW5rCisyODk3MyBkNzIyYmI1MjA1YWQ3MDI5ZGRiMTZmNTA1MmMwYzgxNWZhMWJjY2I3IGxlZ2FjeS10cnVuaworMjg5NzQgNDA1OTRlZjM0YjMwOWM0ZWRlMzExNGM4NzBkYmU0MmExMDk5ODc4ZSBsZWdhY3ktdHJ1bmsKKzI4OTc1IGFlMmYyMzQ4ODJiMjE2ODYzZTI0NzkxMTUyMDQ4NGVkZmFjYjAxYjUgbGVnYWN5LXRydW5rCisyODk3NiBhMzY0N2QxMWNiNzEzNDc5MDlhOTVlZDEwZWUyNGVjYTQ2MDg0ZTQ4IGxlZ2FjeS10cnVuaworMjg5NzcgNThiZmE3ZGRjOTk5YWM5NjQyZWY4ZmE2NjgyYjI2ODE2ZGQ0MzhhMCBsZWdhY3ktdHJ1bmsKKzI4OTc4IGI1ZDA1ZjEwZDBhNWJjMmMzNDg5MTNmMmZlYWJjMTJkMGU1NTVlMGIgbGVnYWN5LXRydW5rCisyODk3OSAxZWE2ZTM1NDc2MTAzODBmODgwNjBlMWM5MDMwZWI4Y2IzZjYxYzlhIGxlZ2FjeS10cnVuaworMjg5ODAgMzBlZTk5YThiMGFlMzVhOWI4Y2IxZjczMjJlMGJlYmJhZGY2MWMzZiBsZWdhY3ktdHJ1bmsKKzI4OTgxIGMxMmE0ZjdhMDBiNzRhZjE5ZjUxMGI1NmU3YWM1NGE2NzBlZDY0YjQgbGVnYWN5LXRydW5rCisyODk4MiAyZTE0MDcwMGZiNmMwYzUzYmFmNDAxMWNlYjZjOTUxYWMzNjUyNTU1IGxlZ2FjeS10cnVuaworMjg5ODMgZDdiYmE3ZWIwZWFkMGM3MTNmMTI3NGQ1ZDhlNWVkYWUwMTgzNWY2MiBsZWdhY3ktdHJ1bmsKKzI4OTg1IDU0MjA5NjlkZGQ3MGJhODViYjJhYTQ1MWU4ZTczMThlMjgzODg1NWUgbGVnYWN5LXRydW5rCisyODk4NiA2MzZjMGY4YjM5ODc5MzY4OTQ0YjI3YWQ0NDM5ODkyOGQyMDI5YTExIGxlZ2FjeS10cnVuaworMjg5ODcgMTk1ZDJmMjU3NmU0MmNhNDg2ZGEzZWM2ZmMxNGYxNTc4YWRiZDRjMiBsZWdhY3ktdHJ1bmsKKzI4OTg4IDExNTczNmRkZWQ3ZDA4Y2U0OGE2YWY1ZTU2OWE1YzdmOWExM2NiODEgYXN0LWJyYW5jaAorMjg5ODkgYjkyMzNlY2Q5ZDQxOTQ3MzIzZjcwMWJjMTBmZDE3NzJlOWViN2I1ZiBhc3QtYnJhbmNoCisyODk5MCA3MGQ5M2I2MjM3MGI3YmJhOTQ5NTJhZDExYjU2ZmRhNDhkMTNkOGE2IGxlZ2FjeS10cnVuaworMjg5OTEgYjk2YjgyNjRkNmFkMmZmZDllMjE4M2U4YWQ0NTA3OTkzMTk2NjYyMCBhc3QtYnJhbmNoCisyODk5MiA5ZTgxNWYyYzBlODRmMDM3NDlmOTIxNDYzODgyZTNiYzZiOWExOGRiIGFzdC1icmFuY2gKKzI4OTkzIDEwOTRjNmUwMzY1ZTViMDU3MGNhODUyYzIyOTJlNWNhNzJmZGVmMjggYXN0LWJyYW5jaAorMjg5OTQgZmU5NWNmYzZlYmE3ZGMzNGQ1NTk1Yzg3MDNjNjQ4MTVjNmZiMjUwMSBhc3QtYnJhbmNoCisyODk5NSA4ZTRjYWJiMmUwMDNkMjliOWE5ZGM2NGE4ZTMyZTJkNmE5ODcxOTQ2IHJlbGVhc2UyMi1tYWludAorMjg5OTYgY2EwMWY0Yjg1ODUzZTQ0YjM2ZjQyNGMxM2E0MzY5NDVkYzY4ODk0ZCBsZWdhY3ktdHJ1bmsKKzI4OTk3IDc1ZTVhMmE3MTcyOTVhYzIwOWQ0NTI2YjdlOTA3Mzc5MGRkMjFhMjkgcmVsZWFzZTIyLW1haW50CisyODk5OCAwODE0OGU5MTZkMzg1MWYyOGI3ZTc5OWY3ZWZlYTVmMjc3YjJlNWNkIGxlZ2FjeS10cnVuaworMjg5OTkgODYxMDY1MjU2NDg3MGE4MzBiOTdjYjRkYzgwZTQwZGVhZWI4NmM5NiBsZWdhY3ktdHJ1bmsKKzI5MDAwIDkzZWY3NDU1NTVkN2MwYjUyMjQ1YzMyYTBmNDcxNjcyYjhjNDQxYTcgbGVnYWN5LXRydW5rCisyOTAwMSA2MWQ2MjRmNWMxMDdhN2U4NzczNWMwNzk2MzZiMGU4MDNlOGVhZGU3IGxlZ2FjeS10cnVuaworMjkwMDIgMmMwZTBmMGRjYTZmNTEyZjQ1ZGYyMmJiNjIyOGE5YTdjZTI1MTVhYiBsZWdhY3ktdHJ1bmsKKzI5MDAzIDVmZTA3Y2Q0YjJiZmQ3MTE0NTIxNDg2NzIyNzRjNDc1MDQyNTFkZWIgbGVnYWN5LXRydW5rCisyOTAwNCAyZGMwZGE1MzcyYjQ3MDJiZTU1ZjI1NDA4ODdkZDI4YjBkMWUxZGNiIHJlbGVhc2UyMi1tYWludAorMjkwMDUgNDdhYTlmYzc0ZGE4Y2Y1MzBmYTBjNGRhZjNhOGU4NTI2YTI1NWI2MSByZWxlYXNlMjItbWFpbnQKKzI5MDA2IDk4ZTU4ZDNjNWZjZmE0ODlmZGNiNDA3Njg4ZDM3YzgzNmUyZmY2YjggbGVnYWN5LXRydW5rCisyOTAwNyBkZmVlYzNiMzRmYWVjMjQ1NWQ0MDU5Y2VmYzRkM2U0MTdkNmUyMjY0IGxlZ2FjeS10cnVuaworMjkwMDggMmZhNTU5ZmI2ZWM1MjI5OWI4NzE3MWU5YjhmMWUxNGRjZDgzYjgyOCBsZWdhY3ktdHJ1bmsKKzI5MDA5IDM3MzFiZTI4ZTFhMzI2NGM4OTRkMmI1YWRjYWJjZWZmOGEyN2VhM2UgbGVnYWN5LXRydW5rCisyOTAxMCBjN2I5ZGE4NTliNTVmODM2NTE4Y2I0YTQxMDdiMzFlZTM3YmY0ODM3IGxlZ2FjeS10cnVuaworMjkwMTEgNjE4MjJkMmI1ZTg4NmE3NWU0NzU2NjU0ZTA5N2U0Mjg1NDFlMmJkMSByZWxlYXNlMjItbWFpbnQKKzI5MDEyIDBlZDgyOTQ3NTcxNzQ4ZDAwNmM3YTlkYWZmMGJmMjc2MDQ0MzBmNjEgbGVnYWN5LXRydW5rCisyOTAxMyAwZTkyODgwNzUzNmMxNmEyMTMzOGQwNDg3NzMzYTQxZTYzN2UyZTFiIGxlZ2FjeS10cnVuaworMjkwMTQgMWRhNWUxN2JmZTYzYTIwODEzNGRkZDM4MDU1ZTU3ZWQ1NTY2NjA2MSBsZWdhY3ktdHJ1bmsKKzI5MDE1IDQxZTFkOGMyMjRkZjJlM2FhZTc4MTU4MjhlMTkyN2Y5MDk5OThlNzEgbGVnYWN5LXRydW5rCisyOTAxNiA1NTUyMzRkNGYwZDAwOTE0YzY4Y2ZhNTg1N2U4MGZkYWFmODY0N2MwIGxlZ2FjeS10cnVuaworMjkwMTcgZjYxZDFkMmI5Y2UzYjIyZGE0YTYyYjJkYTRlOTViOTNlNmY3ZDgyOSByZWxlYXNlMjItbWFpbnQKKzI5MDE4IDM2MTI0MTU3YjMxN2FkYmFiODM1ZmI2Mzk4MTg4ZDZhODhlZWUwYTQgbGVnYWN5LXRydW5rCisyOTAxOSA0ODgyOTVkMWJhMTFlYjIxNjc0NDRjZWFhZTU0OTEyYzFlYjY2N2M5IHJlbGVhc2UyMi1tYWludAorMjkwMjAgOGNiMDc0MGRhMWZkNTk5MmViZWEwNzU3YjVmOGNjYzRkNWM4NzRhOCBsZWdhY3ktdHJ1bmsKKzI5MDIxIGZjNzAyOTA4MTA5MzA2OGY0NzNmYjJhZWY2NDA2NjAxYjYwMWY0YWIgbGVnYWN5LXRydW5rCisyOTAyMiAxNGM0YzgzM2NkYTljYTRlNGVkZDcxZjFiN2JiNjc3OWY5YTk5YzFlIHJlbGVhc2UyMi1tYWludAorMjkwMjMgMTNmYjRkMTZmNjA0MmJhZTAyMzBlMDE3OTY3ODIzZjdkM2MxMDZkNSByZWxlYXNlMjItbWFpbnQKKzI5MDI0IGZiMGNlNzdhMzE4YWJkMzg0MGU1NDA4NmEyY2NmOGMyOTM3NTc4OGUgcmVsZWFzZTIyLW1haW50CisyOTAyNSAwNzA1Y2EyOWFiOTY2ZmQxMzJjNzAyMDY5MDg4MTMwM2U3NzE3MWFhIHJlbGVhc2UyMi1tYWludAorMjkwMjYgNDQ0NDdmMzE1YWU5MTE1ZDlkNGQxZGNhMzU2NTgzMGMzNTljNzA4ZiByZWxlYXNlMjItbWFpbnQKKzI5MDI3IDc3OWJiNmRkZGU0YjhiMjQyNDYwZjc1NjllY2Y2MjQ3ODczNWQxMmUgbGVnYWN5LXRydW5rCisyOTAyOCA2ZGNkMDY2NGIwOWUyY2Q5MjQ1NmMyNGRkNTJlYjE0MWNjOTA3NmZmIHJlbGVhc2UyMi1tYWludAorMjkwMjkgZDA3MjhiNGIwN2MzM2IxN2Q2ZjQwZWMyNzVlMTU4NjUwYjViMDkwZCByZWxlYXNlMjItbWFpbnQKKzI5MDMwIGIxOTkwMmFkMTg1ZmJkOGIzOGRiMjQ0NWUzMjFmODQxYTY0ZGQ4NzUgbGVnYWN5LXRydW5rCisyOTAzMSBiMTFiYzIxNGU0ZjJmNzZkOTlmYjkwYjE0NzUzMzFlOGRmYjc0NzEyIGxlZ2FjeS10cnVuaworMjkwMzIgYzQyYzk4OGIyYjk5Y2E5MGEyZmFjNDA4NGU2ODdkZjc4OTU4ZmY5OSByZWxlYXNlMjItbWFpbnQKKzI5MDMzIGFhZThiOTQzODVkNmI1OGE5YmE1MmRiZjIwYjQyODNlZTA5NDJlNzEgbGVnYWN5LXRydW5rCisyOTAzNCBkZTM3MGU2NTAzZGY2OGEyM2VhODNjMjdhYjEwMWQwMWNmYTdkYWM2IGxlZ2FjeS10cnVuaworMjkwMzUgYzg1ZDdjZGQ5ODNmMzI4NTZiMmE5MDFmNDc0NmEzM2Y0YjA5OTFlNyBsZWdhY3ktdHJ1bmsKKzI5MDM2IDQzNjcxZTAxMTZkNTJmMDUzODEyY2YwMWU2YzY2YTVmYzQ1MjhkZDkgbGVnYWN5LXRydW5rCisyOTAzNyAwMjMxY2M1NGY4N2VhYzQ4NDRhYTY3ZmI4ZGY3ZTZkMjQwODkyNjdmIGxlZ2FjeS10cnVuaworMjkwMzggODI0MTYyZWI3OTc3MzcwZmYwMzg1ODBkYjFiNWE5YzU0YTI1MmY4MiByZWxlYXNlMjItbWFpbnQKKzI5MDM5IGM1YTgxYzNiZGFkYWJjNTc4NjFlZDBkNzdiZDRjNmVlMDE5OGRmZDQgcmVsZWFzZTIyLW1haW50CisyOTA0MCA0MDVhNWI0ZjQ1M2JlYzQ3MDVlMjFiYzk2NTIyMWMyMWIxMTgyZWM1IHJlbGVhc2UyMi1tYWludAorMjkwNDEgNmNjYTYxNGI1ZTAzM2E3OTZmZWNjYzgzZGZmMzI1YWIyMzg5ZDQ2YyByZWxlYXNlMjItbWFpbnQKKzI5MDQyIDEwMGRhYTM2MTk4ZGQ4NThlMzg4YmY1NDMyM2U0MjEzYjI4NTQ4NGMgcmVsZWFzZTIyLW1haW50CisyOTA0MyA4M2Y2NGMwNGYwMDI2OTBmMjdjMmMyNGQyYjAyYmYzYmE4NzU3ZGM5IHJlbGVhc2UyMi1tYWludAorMjkwNDQgMzY3OWM0ZmM2OGJjMDQ4NjZlOWE2MWVjYzRmY2EzOTdkYzUxMWIzMSBsZWdhY3ktdHJ1bmsKKzI5MDQ1IDI3NmI2YzQ1Mjk5OTRjZTM1YWI2NmRiNWNhNzIyM2MwYmI4NjJmMGEgcmVsZWFzZTIyLW1haW50CisyOTA0NiBkNDlmMTY0ZTZhOTc0ZDc0ZjBlZmQxNjQzNTE1NDJmYzgzOTM5NTRmIHJlbGVhc2UyMi1tYWludAorMjkwNDcgYzFhNmY0NGUyNTM0ZDgzYjhmYzRkOGY2OWQ5MWI1MTA5YTBmMjFjMyByZWxlYXNlMjItbWFpbnQKKzI5MDQ4IGE1MjY5NWI3MWU3ZGFiNWNiZmM3NTM3MzUzNjJhYTgxMGQ1ZjE1NGIgcmVsZWFzZTIyLW1haW50CisyOTA0OSBkYWUyMjgyYmM3NmI0MjcyN2QxY2Q4ZmIzMGI5Y2Q2NWFhNjVkY2JiIHJlbGVhc2UyMi1tYWludAorMjkwNTAgYjI4N2JkYWNkZTM5ZmFmMzZjMDI0Y2I4M2ZlNTc2MzY2MjczNTVmZSByZWxlYXNlMjItbWFpbnQKKzI5MDUxIDYwMDM5OTE3MzFhOTkwNmM4Y2NjOTI4NGUzNTZiNThhODU4MDI0YzkgcmVsZWFzZTIyLW1haW50CisyOTA1MiAyMzQ3ZjkwMTg0MzE1M2Q5MzRlYmZlNDNiMzg4ZmI5ODNiZTQ1ZmZmIHJlbGVhc2UyMi1tYWludAorMjkwNTMgNDQ5MmQ3NzMyN2M1ZWUwOWY3M2MwN2FjZjNhNjM1ZjQ0OTBmYmQwNCBsZWdhY3ktdHJ1bmsKKzI5MDU0IDI5MTFlYjM3NzI2NmQ5NzVhOTg4OTAxNGEzMjU3NTAxOTA1M2ViZTkgcmVsZWFzZTIyLW1haW50CisyOTA1NSBiMzI1NjQ4N2FlZTg4ODYzNjRkZmFmMmY5ZTc5Y2Y4ZjliMGViMzk4IHJlbGVhc2UyMi1tYWludAorMjkwNTYgNzc0NzcxYzUwYjE4N2NmNjMxMGZmNmNhNTY1MTU4M2E2OWU0YmViYyBsZWdhY3ktdHJ1bmsKKzI5MDU3IDJhOTQyYTFjNDJlODQ5ZmRjNTRiN2Y5YWZmZjcxY2I4YjEzY2VjMzMgcmVsZWFzZTIyLW1haW50CisyOTA1OCBmZWQ3YzQxY2FhYWVmNTUzMjFlYzJhNjZhMjQyZmFhNGM0M2VmNThiIHJlbGVhc2UyMi1tYWludAorMjkwNTkgYzYyZmI2M2RjZmQxYjUzZDE3OTJkNzA5MTRiZDAyZDczNmYxNDgzMSByZWxlYXNlMjItbWFpbnQKKzI5MDYwIDZiMWQ0NjQzYTBmZDUwZTgwODQ5NmVjYzVkOWMzNzNmZmI2YzUwMDcgcmVsZWFzZTIyLW1haW50CisyOTA2MSBlODRlMDgzNzJlZmExZWM1MDUzYWExYWE4MGU2MzI2MDM0NGI5NjIzIHJlbGVhc2UyMi1tYWludAorMjkwNjIgNTIzZmQ4OTAzNTk4NzhhZGViZDVmYTdlNDI0NDExZDQ5MjdhY2Y0YSByZWxlYXNlMjItbWFpbnQKKzI5MDYzIDFlMzU5ZGNiNGZiM2I3MjI0NGY4N2NlNTA1OTkyYjJjYzI3YWJmNTggcmVsZWFzZTIyLW1haW50CisyOTA2NCAzOTM4ZTlhMDk2ODk0YzZjODY2YWU0NGM4ZDUyNmExOWY2ZDFlZDc3IHJlbGVhc2UyMi1tYWludAorMjkwNjUgODZmNjYwNjEwMDNjMDZjYjk3NDM3ZTA0ZmUzMTNmN2FkZjBjZjkxZSByZWxlYXNlMjItbWFpbnQKKzI5MDY2IGFkMzdiOTNlN2EyZTZmMTM0MTI0ZGUwMWQwMzcwZDg4ZmQ0YTc3MDEgcmVsZWFzZTIyLW1haW50CisyOTA2NyBhNjdiOWExOTUyNjViNWViMGU0MWRkNDU0NmY0ZDUxZTIzYTQ5ODA0IHJlbGVhc2UyMi1tYWludAorMjkwNjggYTZlZGMxYjNmZDU2NjE2YzQ2YjMzZjA1NGEzMWYwNDA4MzAwNGJmOCByZWxlYXNlMjItbWFpbnQKKzI5MDY5IGMxZjdhZjQyYTdmMTc2NzkzNGM3YTY5YTk5Njc1MzEzMDMyYmM5YzEgcmVsZWFzZTIyLW1haW50CisyOTA3MCAxYjg2OTdkNjA1NjhjNDdiNzRiNDQwNzk1ODAzNGZjZWViNGQyZmI1IHJlbGVhc2UyMi1tYWludAorMjkwNzEgMWRhZWFiYjM2MjQ0MzBlZTIyYzcyNDFmODg3MDhiY2I0NTVhYjE2MiBsZWdhY3ktdHJ1bmsKKzI5MDcyIDk3N2ZhMTM1OTA2ZDFhMTRiODQ1YjhlZmI4ZjQwNDcwODM5NDVhMDcgcmVsZWFzZTIyLW1haW50CisyOTA3MyAyODhjMWZmZDYwNmVhYmJmNWI0ZDVjOTBmM2M5NTMwMjQ1ZjkzY2I3IHJlbGVhc2UyMi1tYWludAorMjkwNzQgZjM3YTM0YzI1NmM0YjA0M2UzMWEyY2FlNTMxMjllYTYwZmIwNDgxMSByZWxlYXNlMjItbWFpbnQKKzI5MDc1IGY5OTA2ZTYyNjFjNWYwZDQ3MThkZDFmN2NkNjFiNGQwMTE4ZDEzODQgbGVnYWN5LXRydW5rCisyOTA3NiAzZWVlNzI5MzFkMTc4M2U1MGVhOTkwZTMzOGYxYjEzZDkzZmE2MjgyIGxlZ2FjeS10cnVuaworMjkwNzcgZjNlNzBjYzI2NDIyZDBkMTM5NTEwOTgwYjM1ZTU4MDAxNWYzNWNiZCByZWxlYXNlMjItbWFpbnQKKzI5MDc4IGM0YzA5M2UyM2M2ZGQxYzgwNTg3OTUwZmU3OWY2NjIxMjBmZTA4ZDAgcmVsZWFzZTIyLW1haW50CisyOTA3OSAzOGExZTU2YjliZjM1MjQ5NWFhMzRlMTZjOWEwOTgwMGUwZDZlZGM0IGxlZ2FjeS10cnVuaworMjkwODAgNjM3OWE1NTE0MDY1Yzk1NmMxMjVkYTU3MzA3YjZhMmY5MDdjYWE5MSByZWxlYXNlMjItbWFpbnQKKzI5MDgxIDVmMmM2YWMyMTVjNzk5NWVkZDc5NGIxNmNmMjhkZmNmODdjNGM5ODAgbGVnYWN5LXRydW5rCisyOTA4MiBiNWRlYzBhNTU0YjM4MGZmYzI3ZDQ1YzE0ZjcyM2E2Mzk4NDRiNmJiIHJlbGVhc2UyMi1tYWludAorMjkwODMgZGYyNzZiNzNmZTRiNTc5NDgwY2RkMjJiZTJmNDU0MTZlMmMyZDhlMCByZWxlYXNlMjItbWFpbnQKKzI5MDg0IDJkY2RlOTAzOTFhYWUzNDc1OGFlZDAyZTE5ZDU2Y2I5Yzc0MzczOTYgcmVsZWFzZTIyLW1haW50CisyOTA4NSA4N2RhYTU2NTQ0MmRiODAxOGE4ZGZiYTkyMDBmYzhiMWZjZGEwZGMxIHJlbGVhc2UyMi1tYWludAorMjkwODYgYTAwMDVkMjY3NzNkMDJjMTA1M2VmYTczMTg1NmZiZjdjZDUzZWQ5NiByZWxlYXNlMjItbWFpbnQKKzI5MDg3IGI5OGY4NWRjMmQ4ODE1NThiMTEzNDYzZTVlZmUxOGZhZDY5MTJlNDEgcmVsZWFzZTIyLW1haW50CisyOTA4OCA4YTc1OTczMzY3NmZiYTlhYWU2YjYzM2RkZWNkYWY2MmNlOWMyOGFiIHJlbGVhc2UyMi1tYWludAorMjkwODkgNGJiOTE4ZWE2NGQxZTJiYzVkYmIwYzlhZmEwMWU1MTVmNDY4YjkxYyByZWxlYXNlMjItbWFpbnQKKzI5MDkwIGY4NjdjYTZjN2Q2OThlNWViZjIxZTY5NWQzZDU5YzQ2YTQ3NGM5MjMgcmVsZWFzZTIyLW1haW50CisyOTA5MSAzYjYwOTUyMDQzY2QwNTA5M2Q1NTM3OGVmY2QxNmUxMzZlYTIyM2Q5IGxlZ2FjeS10cnVuaworMjkwOTIgNWJiMmMwNTdmZDQwYjg4YTJkZDZjN2M3MzVmZDA2MTI3ZWQ4NTAyMiBsZWdhY3ktdHJ1bmsKKzI5MDkzIDQ0NmI4MzVmYzE5YjJjZmVkNzkzODBiN2U4ZmU4M2NkNDhhNWNhMWYgcmVsZWFzZTIyLW1haW50CisyOTA5NCAyNWQxZjRmOTE0ODdlMGRhYmM3NzIzNzg2NjY4YjE3YzgxMjA3ZmVkIGxlZ2FjeS10cnVuaworMjkwOTUgODUwNjJhMTJjMjRmOGZiNDU0NDc5NmEzMzhiNzhmYzg1YTkwZDg4YiByZWxlYXNlMjItbWFpbnQKKzI5MDk2IDRjYTMyZTRmNzgzOTNhMjdhZTgwNmU2NDdiYjA5ZTdlYTc0MzYwNTEgcmVsZWFzZTIyLW1haW50CisyOTA5NyBlZmE5YTg2NDY0ZDM0MmNmMWU2M2EwZDU4ODA5MTAyNDgwNmVjMWE5IHJlbGVhc2UyMi1tYWludAorMjkwOTggODU1MzkyNzkwOTRkMTVlNzExNTg1ZmUyODkzYzI0YzQwZDRjODQwOCByZWxlYXNlMjItbWFpbnQKKzI5MDk5IGE5NGYyNzJlNjAwZDkwOTk0YzI0NWU0NGNkNWZkN2QwZGQxYzUyMTggcmVsZWFzZTIyLW1haW50CisyOTEwMCBlYjg0OTk3M2I5NDE4ZGUzNjhlMDUzMmEzYWNhYzVhNGJmZTljMDcxIHJlbGVhc2UyMi1tYWludAorMjkxMDEgNDIxMzlhYmZkYmU1YmViNWQ2M2UxMWYzYzNlYzA2YWNjMDA4OTA4OSByZWxlYXNlMjItbWFpbnQKKzI5MTAyIDI5ZDQwZWFlODczNmIzZjNiY2ZmYmE3Mzk2YjdlMTNmYjg4Y2NjZmYgcmVsZWFzZTIyLW1haW50CisyOTEwMyAwZTZmMGEyMmM2YTkyM2M4NWYzN2YwMWE3ZDAwMzkwNzBmZDcxNzc1IHJlbGVhc2UyMi1tYWludAorMjkxMDQgNWNmMzNkYjU1MGQ3NWNlYmM4ZjlhOWQyMzYyNjY2MWQ1ZTU3OGZiNSByZWxlYXNlMjItbWFpbnQKKzI5MTA1IDEzNDM4NTg2ZGFhNjM3M2NkYjRjMTY0ZTk2ZjBmN2IxNTg5ZjAyYjQgbGVnYWN5LXRydW5rCisyOTEwNiBiZjI4ZDBmNzhiZDViMjliNDM2YTNjNjc2ZDgwNzM2NGI2ZTRhOTU1IHJlbGVhc2UyMi1tYWludAorMjkxMDcgNWM2ZmFjOTVhOTRiNGZjYzk2NWExZDMzNjRkNDkzMGFhZjFiYmM5YSBsZWdhY3ktdHJ1bmsKKzI5MTA4IDE5OWYwZjZhOGEzNjMyMDZkNzQ5MzU0Nzg3N2I3ZjRkZDY1ZmYyYTMgcmVsZWFzZTIyLW1haW50CisyOTEwOSA4OGMxYzRkNzg5MTY2ZGNlMzNkZDYyOGZjMDJjODRhNTM3M2QzYzVjIHJlbGVhc2UyMi1tYWludAorMjkxMTAgMzNiZDY0NDViN2U5Mzk0YzM2N2RkN2ExNzNmYjA2OWM4MjQ4ZGJkYyBsZWdhY3ktdHJ1bmsKKzI5MTExIGUyMTg0NzUzMTY3NDM4NGM0NDIwM2MxNGNmYzdlYzgwZTM2NTk0Y2QgcmVsZWFzZTIyLW1haW50CisyOTExMiAxNWVlMjk5ZDM5ZTY3MWQ5MjBjODE4YWY1YWRmZWE4YzRiMjQyMDM2IHJlbGVhc2UyMi1tYWludAorMjkxMTMgNWQ4YmIwMGZlZTE4OTljNzZhOWU1Njk1M2NiYzU0YjZlMDU2MjIyZCByZWxlYXNlMjItbWFpbnQKKzI5MTE0IDQ5OTI3YjZiNWY0MGZhNDNlNWExYTM0MWY5MmI0NzY2ZDE3MzhhMDUgcmVsZWFzZTIyLW1haW50CisyOTExNSAzZmE1NDRhM2M1ZWRhYWVkN2VmNjA5MWRkMGU5MmIyZTg2OGRkZmI2IHJlbGVhc2UyMi1tYWludAorMjkxMTYgMTE1N2M0MDAzMTZiMWU2Yzk2YzQzNTIwMTkzOTIxMWZlOWJhYTgyYSBsZWdhY3ktdHJ1bmsKKzI5MTE3IDIxMDM4NDZlZWY3M2FmNTQ4OWY3ODY1MzliYjQ1YmRjMmMyMTg2MTUgbGVnYWN5LXRydW5rCisyOTExOCBjNTgwNDFlNmE3OTk3NGU0YzhjYjQ4YmYzODllNTc3ZjFiZDA5NDFmIGxlZ2FjeS10cnVuaworMjkxMTkgMGExYzFjNWUxYWI0ZjI5ZTBmOTdlYjAwMGNiMTc4N2YzNTM0MzNhMSBsZWdhY3ktdHJ1bmsKKzI5MTIxIDRiZTk3ZWRhNDM2YmI2MzMwOWVhMjQ4ODMxNDEzNmEyZjY1MzQxOWEgbGVnYWN5LXRydW5rCisyOTEyMiAwNjkwZWE2ZDExNTM1NzJiMzJjOWU3N2FkMTBmODdlMmEwMjQ0N2RkIHJlbGVhc2UyMi1tYWludAorMjkxMjMgZjUwOTlhNTMwZDY3YWY4MGFlZjAyMzUxYjczMGNkY2JiNTNkZTI2NiByZWxlYXNlMjItbWFpbnQKKzI5MTI0IGNiOWMxZjk0MjIwYjk5ZWFhZWVhNWM4NjhhNzk0NGY0OWQ3NDMwNWYgbGVnYWN5LXRydW5rCisyOTEyNSAwMDBkMTU1ODFhNzY4NmQ5NWVlMDBhMTUyOTVkY2U4YmNhNzMwZTg4IHJlbGVhc2UyMi1tYWludAorMjkxMjYgOTAyNzRiYTA0NDI0ZDc2MTA1ZTI2YTExMjFkMWE3OWVjMGU3NjM4ZiBsZWdhY3ktdHJ1bmsKKzI5MTI3IDE0YjY4ZjU5Mjk1ZTM5NTZiN2YxMzViZWQ3ZjhkYThjMDIwYmRhNzMgbGVnYWN5LXRydW5rCisyOTEyOCAzN2MwNDQ1YmRjOTBkOTdkNTRiOGRmNGY3YmJmNzZiMGZhNDFjOTFiIHJlbGVhc2UyMi1tYWludAorMjkxMjggMDEyODMxM2MyODU1ZDcxNzUzZjAwZmNjYzYwYmIzOWVkOTJhMGM1NCByZWxlYXNlMjItbWFpbnQKKzI5MTMwIGRkYmY2OWFiYjk1Y2M4ODZhYzFiY2QyYTFiMjA0ZTcyMDlmNzVlYTIgcmVsZWFzZTIyLW1haW50CisyOTEzMSA0YTgyNWI5MDIzMTBlOGRjZjQ4OGM0MzBmOGRkODNhNDRkZDBjOGY4IGxlZ2FjeS10cnVuaworMjkxMzIgYjY1OWFiNDk0NTcxZWE3ZTdiMjhjYTcwZmEzNTczMTAzOGMzMDczYSByZWxlYXNlMjItbWFpbnQKKzI5MTMzIDYzYzZmNDVlOTQ3ZGU0OTI5NGRmMTY5NDRlODY2ZWMxNzc2YmE4NTQgcmVsZWFzZTIyLW1haW50CisyOTEzNCBjZjkyNjYwZTFlM2NlM2Y0ZWU5OGQ5YWJjYzIwMjYzYTAzY2Q5ZjU0IHJlbGVhc2UyMi1tYWludAorMjkxMzYgYzVkOTE3OTFlNTdiMjk2MzRkNmE5NWI0NDM1NjAxMzY5NzkwOGZjMCByZWxlYXNlMjItbWFpbnQKKzI5MTM3IDg4OTdhMGIxY2IwNzU0MThhMGQyNWQxYTg5MTI4YWE0MDgzNmI1NDcgcmVsZWFzZTIyLW1haW50CisyOTEzOCAxYTc5YjllMzllNzI1MmI2MDgxYWM5MTc4ZDZmMTNkZjExYmVjYWJmIGxlZ2FjeS10cnVuaworMjkxMzkgOWNkNmVkOTU0MDY1ZGI2MjBlZmMyMzc4ZWUxZmQ4MjdmNjRhMjAxNCByZWxlYXNlMjItbWFpbnQKKzI5MTQwIDYyODUzMTk1YmU2OGQxZmQyNTI2Yjg5NTE0N2QxZjU2MzU3Y2Y3MTMgbGVnYWN5LXRydW5rCisyOTE0MSA0MWU4MjgwYTM2ODVhNzAyN2UwODY1NGIwZGY4MTg3YTAxNzdkYjA2IHJlbGVhc2UyMi1tYWludAorMjkxNDIgYmFjNWE0OTMyOTA1OTlhOGNhOTM0M2YwYzI5NmE1MjJkNzNjM2JiNCBsZWdhY3ktdHJ1bmsKKzI5MTQzIDY4OTZjZWVkNDZhNmIyZDJlZDM3NTJkMTI5MWZmZjE0YWMwYjg2NGQgbGVnYWN5LXRydW5rCisyOTE0NCBjNTIxNjVmMmNkZjQzOTFmYmI2NGMzYzQwMTUyMmY3ZTc2MTg3MTJiIGxlZ2FjeS10cnVuaworMjkxNDUgMzg2ZTZmZTJjOGQyYzlhMDZjMDUzOGViNDlmM2Q3ODg2OWJiOTZhYiByZWxlYXNlMjItbWFpbnQKKzI5MTQ2IDY1ZGZmYzljMGExNjllN2JlYmEzZDc0YjMyODMyNzU4NjliOTZjMTUgbGVnYWN5LXRydW5rCisyOTE0NyBiYTUyMmM3NGE5MzEwMWM0MzVhZWZmZTdlZWFlZjI5YjBlNjA3YmI0IGxlZ2FjeS10cnVuaworMjkxNDggY2U0OWYxMmExNzY5ZTZhOTdjOWRjNjRkN2U3N2Y3OTEyNGNhZjA3NSBsZWdhY3ktdHJ1bmsKKzI5MTQ5IDM4ODQzZDM1YjY0NjYwMmE0NmJiNTZhNWVkMTI2N2Q2ZWI5NzEwZjggbGVnYWN5LXRydW5rCisyOTE1MCBjN2Q1ODAxYmJhZThiY2RjNTg5NTVjZGRjODFlY2FiZWY0NzMzYzg2IGxlZ2FjeS10cnVuaworMjkxNTEgNjk1YWQ4Zjg3NzA5NTExMzM5ZmFjMmQ4OGNiZWY2YWNmYTFkYjk1MSBsZWdhY3ktdHJ1bmsKKzI5MTUyIDA4MDlkYzU5OGZlMjNhMmIzMmM3MDE4ZTE5OTdiNTljMTVmZjdlMTAgbGVnYWN5LXRydW5rCisyOTE1MyBmNGFhNjU2NzEwZjAzOWYzNzdmNGEwZTcwZWEwY2I3ZjJjMGViNWRhIGxlZ2FjeS10cnVuaworMjkxNTQgNTZjMGJhMjAzMjliNGRlZDQyNWYxZDc3N2JmZTFlN2NjOTMzZDYzYyByZWxlYXNlMjItbWFpbnQKKzI5MTU1IGIyZTgzN2YyZDE0MWM2ZmJmOWQ3MWZmMmYyNzE3ODAyZjBmMGU1OTUgbGVnYWN5LXRydW5rCisyOTE1NiBkOGVjOThiNzRmYTc4YjU1NGJhOWMxZjE0ZjdmYmU5Y2ZmZGMxZDM5IHJlbGVhc2UyMi1tYWludAorMjkxNTcgYjM5YmQwM2E4ZGFiNjY5MjM4OGQ5YzE2ODQ0ZGNlNWM4NWNhMGFkMiBsZWdhY3ktdHJ1bmsKKzI5MTU4IDEzZDYzOWE0YWZkN2I4M2E5OGMzYWYwMzE0NmE1YTdmMjMwZDU4N2UgbGVnYWN5LXRydW5rCisyOTE1OSBhOTYyMWJhN2UzZGJkMTM0MGIwZDA4N2E3NmNlNDRjMzQ4NDI3NTVjIGxlZ2FjeS10cnVuaworMjkxNjAgZTllN2YxNjBhYWM5OTBlMjE1YmFmZGZhMGZkOGIzZmRkZDE5NDI5ZiBsZWdhY3ktdHJ1bmsKKzI5MTYxIDUwMDEzZDFjNmE0M2VhMWJlZWY1MjZmMTNjMDY3YjUzZWJhMjY4NDkgbGVnYWN5LXRydW5rCisyOTE2MiBiNzhmNWM3ZTU3OTAyMTkwODM1M2E2MjA4NzAyYWU5NzBhY2JiYmRmIGxlZ2FjeS10cnVuaworMjkxNjMgMmZiOTEwYjEzOWMyZTI1ZDU2Y2ViMTQ0NzU0N2JiNGRjOGMzNWRmNCBsZWdhY3ktdHJ1bmsKKzI5MTY0IGZlYjg4NjNiNmZjNDY3NGJkN2I5ZDQ3OTFkYjU5MDU3Njc3Y2I2MmIgbGVnYWN5LXRydW5rCisyOTE2NSA2YWU2ZjIwNjBlMjhkMzY0MzVhOTI5OWExODRmZWNjN2RhZWU2ZDc5IGxlZ2FjeS10cnVuaworMjkxNjYgYzYyMWY3MWJjNzAyNTYwOWYwOWI4ZDE4OGNmNTUxNDBlOGE0MGQ3YiBsZWdhY3ktdHJ1bmsKKzI5MTY4IDgxMjA0ZTIwY2ZlNTllMzcyYTdhNjAxMWZhNmJmNTY1MDQ1YTc3ZjAgbGVnYWN5LXRydW5rCisyOTE2OSAwYTdhYTg3NGM0NTBiZGRhNTk5OWEzMmMwYjJkYTVlMmMyNGYzNTZkIGxlZ2FjeS10cnVuaworMjkxNzAgZTk1OTE3MmNhZjQ5MzIxODgwZjgzYzk4ZGZjMzZlM2E5MzhjYjg0MiByZWxlYXNlMjItbWFpbnQKKzI5MTcxIDQ0Nzc2MmViYjExZDJkNzJhMTUxODg5YjliMmU0NjE4NWE4NzcyYjAgbGVnYWN5LXRydW5rCisyOTE3MiBlZTc1NmFiNmExM2UwZGY3MzhmYjc5YmVjMThkMWU3M2QxMTZiOWQ0IGxlZ2FjeS10cnVuaworMjkxNzMgMGY1MDUzNmExMGJiNzc2NGU3ZDc3MjJmYzBmMDY3ZDRiZjA0MjFkNiByZWxlYXNlMjItbWFpbnQKKzI5MTc0IDFmZTFhNTdkOGViMWIyN2I4ZTM4N2JkYWRkNzllNzBkYzk5YmFmZjggbGVnYWN5LXRydW5rCisyOTE3NSA3MzNkZjJkMWViYTk3MWJmNTBhNDcxMGQ1ODA2YTc3OGJkMDYzNjU2IGxlZ2FjeS10cnVuaworMjkxNzYgMWE5ZjQ3ODg1MjYwNGE3ZDBjY2MzODAxYmEzNmFmY2Q3MzYyMzY2MSBsZWdhY3ktdHJ1bmsKKzI5MTc3IGJhZDk2OTk1NzZkOWQ5YmQ1NjBkODJkNGIyNzhkMDhlOGRlYmQ3Y2QgcmVsZWFzZTIyLW1haW50CisyOTE3OCBhZTY4NjNlODc3MjQzN2JjMWM3MjU2Y2QxM2U0MDk0Y2FkYjZjOTNjIHJlbGVhc2UyMi1tYWludAorMjkxNzkgMDZmNjE3M2I4MGZiNDE3MWQwNzk3YjY5NDlhMDZmYTM3ZTY2ZWM0OCByZWxlYXNlMjItbWFpbnQKKzI5MTgwIGUwNjc0M2ZhYjQ3NzVjYTg0MzM5YjNjNWMwYzc4ZTdkN2I2ZDAzYjcgcmVsZWFzZTIyLW1haW50CisyOTE4MSA0MWM1OTIxMjJmNjI5ZmQ1ZDlkNjA5YTQ3YmQ2ZGY3ZjkzMTE2YzVjIHJlbGVhc2UyMi1tYWludAorMjkxODIgMmFkYWRjMTk5MjNjZTEyZjMwOTMxMjM4OTUzMzZmMmUzN2Y1ODdkOCBsZWdhY3ktdHJ1bmsKKzI5MTgzIDI5MGVhMGM2ZGU2YTVhMWFjZjJhM2MwNmIyMjE2NzE2MjFkMzIwYzUgbGVnYWN5LXRydW5rCisyOTE4NCA1NWIxODM5NDEyM2I3YWM2MjU3NThkZWM3N2Q0Yzg1OWNlOWIyZjU1IHJlbGVhc2UyMi1tYWludAorMjkxODUgZTM3NGVhN2FjNGNlNDhhMDQ0OTI5NTQ4MjgwYWRlMTlmY2NhZmRlMCByZWxlYXNlMjItbWFpbnQKKzI5MTg2IGY1MzJlOWI2OTU1MWMyZTdlNzg0YWJiMWU1Y2YwMmVjOTg4MjQwM2MgbGVnYWN5LXRydW5rCisyOTE4NyAzYzI2YWU2MWU5NTIzZWJkZjM1MDVjMWRiZGU5Nzg1YzAwMmU0NGNhIHJlbGVhc2UyMi1tYWludAorMjkxODggOGIyMGIyNmYxMTg2OTk4MDIzOWNiMTA2NzhkNzE1ZDhkMjJjOTRhOCBsZWdhY3ktdHJ1bmsKKzI5MTg5IGY2ZWRiMWVmMmUzZjgwMGY2NWM2ZTA2NWZlYmY0ZmNhZDFiNDRlN2MgbGVnYWN5LXRydW5rCisyOTE5MCA2MWU2YjU3ZWJiZTFkODBlZWEyODIwYmM3MjBkNzM1YjcyZGM1YTJlIGxlZ2FjeS10cnVuaworMjkxOTEgZDYzNGZiZDVlNDIzMmRkN2MwOTE3MDdlNDI4ZWUyOWUxOWQyNWRiYSBsZWdhY3ktdHJ1bmsKKzI5MTkyIDhlOTJiZTY1ZGVkMzY2OGZlNmFhYWE4ZDRmMTc1NDUyM2UwN2I4NmIgcmVsZWFzZTIyLW1haW50CisyOTE5MyA2NWZhMTkzZWExMDkwY2U3ZDljZjk2NGY0MWFmN2ZlZjgzZWFiNWFjIGxlZ2FjeS10cnVuaworMjkxOTQgZjQ2MTgyN2RjN2RlNmMzZjNmMzVmOTFjZTkwM2Y3MDQyNmViMzQ1ZiBsZWdhY3ktdHJ1bmsKKzI5MTk1IGZhMTczNzE5YWM4YzBlYTYxMWI4YTY2YWU0ZGE2Mzc5MGY4Y2JjMjYgbGVnYWN5LXRydW5rCisyOTE5NiBiNTlkMWExMTkzOTMyZGIzNmQzM2Y2MWM5YjQzNmUzNzk3ZTA1YjAyIGxlZ2FjeS10cnVuaworMjkxOTcgYWNlODJkYTNiNDUwZTRhMjlhYmYxY2YzMGNkZjFjZTEyOGNlYjZmOSBsZWdhY3ktdHJ1bmsKKzI5MTk4IDc4N2ZlY2QwYWExYmIxMDc2ODY5ZjUxMzAwNmNhYjk5OWZlNWRkNjkgbGVnYWN5LXRydW5rCisyOTE5OSBjNTljZTUxM2RlZjYyNWJlYTZhMDU4MDkzODcxNmU2YWZjYTc2ZTMxIGxlZ2FjeS10cnVuaworMjkyMDAgM2EzZDVhZWM3YTZhZmYxZGZlZTRmNTM4ZDc5ZmJjZjY1N2JhYjc0ZiBsZWdhY3ktdHJ1bmsKKzI5MjAxIDcwMDVmNGI2Y2MxMjJjY2Q5ZmZiOTExYmE4OWE2ZTJlNWRiZWEyNGYgcmVsZWFzZTIyLW1haW50CisyOTIwMiA2ZDIxMzgzODk2NjcyNTYyMDU3ZjNiNzVjYWZhOTRjYmYwOTk0NjE1IHJlbGVhc2UyMi1tYWludAorMjkyMDMgOTJhOGEzNTJlMDI0MzA2MzNhOGVjZmRmNjE0YzA1MjcwNjBkZWY2NCByZWxlYXNlMjItbWFpbnQKKzI5MjA0IGIwZmE1ZjZhOGJiOTdkZTdhNTU3ODlmMzQ4MzA5NDhmZGZlZWRjYTQgbGVnYWN5LXRydW5rCisyOTIwNSBlZWVkN2M4YjIzMWFlZDE2NzY3ZTM3MGU3N2YyYzEyM2UwNTY4YjYwIHJlbGVhc2UyMi1tYWludAorMjkyMDYgOTcwMDJiMjUwNDI1Njc5ZDE4NjI2YTY3Yzc4MmVjZTdhNjg5MWM2NyByZWxlYXNlMjItbWFpbnQKKzI5MjA3IDcwZjkwMjZhMmIxNmZkMzhkODdjMjcyNGQ1NmYwM2IzOGMxYzkxZjcgbGVnYWN5LXRydW5rCisyOTIwOCAyMWFiMmE2NzRjMGExNDY0ZWEwNmJkZDJjOWViMGI0NGU0ZDdkNGMxIGxlZ2FjeS10cnVuaworMjkyMDkgMzk2YzhhMjQ4ODBjODI1ZDU0MjRmMGU2Y2YyYzRiZjljZTE3ZjE5NyByZWxlYXNlMjItbWFpbnQKKzI5MjEwIDg2YmY4NDBjMmExY2E4YmU0ZmRkNDAyNTc3MDJlMzAxNTdiY2U4MzUgbGVnYWN5LXRydW5rCisyOTIxMSA1NGViZjA4NWQyNmZhOTY0Y2FmNjJkZjY3YzZhNzQxYzgxZmIzMTVhIHJlbGVhc2UyMi1tYWludAorMjkyMTIgZjdjY2Y0OTkxNTY1YzNmYjMzMjAyOGExZDNjMmE2YWMzZmYxYTZkNSBsZWdhY3ktdHJ1bmsKKzI5MjEzIDczNDBiNjRhNDkwODIyM2ViYmYzZTAyYWU3ZThkZGExZDQ2M2ZkODMgcmVsZWFzZTIyLW1haW50CisyOTIxNCA0ODkwZjFiZGVhYTY0MmUyMGM3ZTRmODc2OTFjYzI1NDM3OTY2ZjM3IGxlZ2FjeS10cnVuaworMjkyMTUgZjdhNDZiMGQzYzA3YWEzMGU2NWFlMWMyNjMzM2FlZmIxNjc1ZDE2NyBsZWdhY3ktdHJ1bmsKKzI5MjE2IGQ0M2U4MmI4ZDc5ZDU2ODllOGJjOWJiNzY2ZGI4NGMzYzQ5NjhkMmMgcmVsZWFzZTIyLW1haW50CisyOTIxNyBlYzBhNDhhZThlYjQ3ZWExNmY3Mzc4NDgxNjVlY2U4ZDQ5OWZiOWVjIGxlZ2FjeS10cnVuaworMjkyMTggOWJkMmY5NzkyZWZiYTY3ZmY1NGZkYWZhY2M5ODJmYzA4YTNhMzE5MCByZWxlYXNlMjItbWFpbnQKKzI5MjE5IDNjOTVlMDk3Njg0NDhlY2EzNDIzZGMwMmUwYWJmNjA1MDA0MTk2MDYgbGVnYWN5LXRydW5rCisyOTIyMCAyZDE3ZTNjYjc3NGU4MzYzZDkxNTQ0NGM0ZTFjZDI1NTYzYWUzNDEyIGxlZ2FjeS10cnVuaworMjkyMjEgNzVjYmVjNDBkYjdkNWZjNTQxY2ZkMGZkYmUzYmJlNTAzZTYyY2NlNiBsZWdhY3ktdHJ1bmsKKzI5MjIyIDZkMzVkNDI5MmRlYzQ2ZDIxODM5MjYyYzVmYWViMjNhMWQxMmUzNzkgbGVnYWN5LXRydW5rCisyOTIyMyA2MzIyNTgxMTQ5OGQ1MTFkMzFiMWMzYjA0MmFkZmE2ZGY0OWRlYjBmIGxlZ2FjeS10cnVuaworMjkyMjQgMDgzOGM0MjQ3OTE3ODNmZWM4YTVlM2RkYjZkMWQ0MGQwNDViMTgxOCBsZWdhY3ktdHJ1bmsKKzI5MjI1IGY0NDlmYjViYmFiOGFkNjlhNTNiMjU0MmM0ZDE5NjM0YzI5MzJkNTAgcmVsZWFzZTIyLW1haW50CisyOTIyNiA1NjMyODQxYTMyYTQwNTllYmVhMzc1N2Y1YzM2YmY3ZjEwNTE5ZDQzIGxlZ2FjeS10cnVuaworMjkyMjcgNmVkMGJiZGFiZGM4MTllYzBhMjVhMWEwN2QwNTBhMWYyMjA3MmZhNCByZWxlYXNlMjItbWFpbnQKKzI5MjI4IDY5YWE2MGQ3NzFkMWYzMTk5Y2NkMzYzMTRkNTBhNmM0MmMzNDhiYTcgcmVsZWFzZTIyLW1haW50CisyOTIyOSBiNGVkOWY5MzE5Y2RlNDExNWRhMWYxNTk0ZThlYzA3MDQwMmEwNmEzIHJlbGVhc2UyMi1tYWludAorMjkyMzAgZjQ0N2I2OTYwMWI5MTU2ZTFkNWFhMjBmMTA1OTU3NWEzYmU1ZGUyOCBsZWdhY3ktdHJ1bmsKKzI5MjMxIGNhOTg5YTcxYjZjN2RkN2RjZDExNWZiZjFmOWUyNzA2MzFmYmEzYTAgcmVsZWFzZTIyLW1haW50CisyOTIzMiA3MWUzYThlOWQ4ODQwNjFjMWQ1N2Y5NmI5OWEyNDFmODE0OWUzOTU0IHJlbGVhc2UyMi1tYWludAorMjkyMzMgNDQ3MjlmYmIzZDViYmMxYWZjNmM3ZWE3MGVjYzM2ZGMyMmExMjBkNCBsZWdhY3ktdHJ1bmsKKzI5MjM0IDhhZTljMGIwYWEwZjE1NGRjYzQ4ZGYxNWExZDNjY2JiYjQ2NWYzMTQgbGVnYWN5LXRydW5rCisyOTIzNSA3YTU3ZGRmNzI3OTRlZjlmMTM5YTY0ZjBjMGU4YmU5NDhjM2RkZmE2IHJlbGVhc2UyMi1tYWludAorMjkyMzYgMDM3ZGZiYTA3MGFjNzhjMzhhNjAyZDJkYTk5Zjc5NDNjNzVkNDVmMiByZWxlYXNlMjItbWFpbnQKKzI5MjM3IDU2OThmMGZlMmVhMDA5MDA2MDhlYjc0YmIzM2FkZTYzMGYzNzE2ZmEgbGVnYWN5LXRydW5rCisyOTIzOCA5NTFlM2ZlN2VkM2FkM2E1NmU0YjZjYjc3YzgxZDdkM2E4YzIwOTE4IGxlZ2FjeS10cnVuaworMjkyMzkgM2E4NzlmMmZjYTA2NmFkMjY4MjQ4NjBlNDE5NmVlNWJhYzhmODE4MCBsZWdhY3ktdHJ1bmsKKzI5MjQwIGQ1ODcxZDZlNzM1ZDc0ZGZjNzE1YWVhYTY4OTEzYmIwZGY3MjhkYzggbGVnYWN5LXRydW5rCisyOTI0MSAzNjIzMDFhOGMzZTQyODk4NmQ0MDUyM2MyNGU5Y2QzZTM1MTk1MjdkIHJlbGVhc2UyMi1tYWludAorMjkyNDIgOTFlYmY0ODhiNWExODdiYjNjYjMxMjM5ZTEzNjBhNGU1NDhmOTFiZSBsZWdhY3ktdHJ1bmsKKzI5MjQzIGMzNTVmZDM3ZDY0MDdiMTQyZmMyZGYxNzhjZmQ4NTQyMDgzNzk5ZjEgcmVsZWFzZTIyLW1haW50CisyOTI0NCA4NGVlNWE0OTk3NDMwMTA2ODg2ZjlkNjg5ZTM0ZjZlNzI2ODJiYjFjIGxlZ2FjeS10cnVuaworMjkyNDYgZWRmNWU3ZTU1ZDE0MGE3NzE3NWU3MDJhZjU2ZGVjNzExYWQ5NmVmZCByZWxlYXNlMjItbWFpbnQKKzI5MjQ3IGFkZThhZjFhYTNjNjhmNDMzYjY3MmY4ZDE3OTFlZTlkNjNhM2I4MGQgcmVsZWFzZTIyLW1haW50CisyOTI0OCAxZGFjYjZhYzM4ZTljZWU1MzBhN2Y5NTBiNDc4Yjg5YmFkMWU1Y2Y4IHJlbGVhc2UyMi1tYWludAorMjkyNDkgY2M0MWI5Y2FjYWU4NDdlNTEzZjZmYzUxMzQ4NGJlMmE0NTc4NjM4OSBsZWdhY3ktdHJ1bmsKKzI5MjUwIGYwYTc0YWUwOWFkNzNlNDhhMzUxOTU1ZDYwOWE4ODVjNzAwZjkyOGEgcmVsZWFzZTIyLW1haW50CisyOTI1MSAyZWY3MWYzNTFjNzRhMmUxZjUwZjEzNmUyNmRhZmRhYTBlYjRiMjVjIGxlZ2FjeS10cnVuaworMjkyNTIgNDIzYWE1ZWY5MjQ3YmQ0ZjVkZmViZmM0ODFiOTAwNzUyNDAxOTcxZiByZWxlYXNlMjItbWFpbnQKKzI5MjUzIGNmMThjYTBlZWE4OTJkNTViNDkzOTQ4YmYxMmZjZmYxNDhhMmQ4NGIgbGVnYWN5LXRydW5rCisyOTI1NCBhZjIwYWVhYWE5ODIwNGEwNDYyN2QyN2JmYzljZjI2Yzc2YjhkZjljIGxlZ2FjeS10cnVuaworMjkyNTUgYmYzODQxMTFiM2IzOGY3ZjgyMTdlMWRiMDI4NmVmYjUyMTE5NDU2ZiByZWxlYXNlMjItbWFpbnQKKzI5MjU2IGVhMWE0Y2ViYzUzMGE1YjNkZTdlYmRlOGZlODhhNDMwYWRhZDYyNmQgcmVsZWFzZTIyLW1haW50CisyOTI1NiA2MWQ1MzE1MzNhODYyMjRhMWMyNjkxN2MxODAxM2Q5MWY1OTJmYmZiIHJlbGVhc2UyMi1tYWludAorMjkyNTggODM4Mjg1ODNkOTE3MzhmNmJhODZlNTY4ODg4ZmM1Zjc1MDY2MWYzOSBsZWdhY3ktdHJ1bmsKKzI5MjU5IDMxYjJmYjQ0ODUxNDYzMmE1NTE5ZGI3NjdmOWU3ZjcyZmFkMzUzYzMgbGVnYWN5LXRydW5rCisyOTI2MCBhM2Q2MTJmMDU2M2YxNjQzNmRiN2UwY2E2NTRkOTEyMmZkZjc2NTQzIGxlZ2FjeS10cnVuaworMjkyNjEgYjg1OGY0Yzg4M2RkZGU0ZDA4NGM5YjhlNGJkNGJlYjM4YmY5ZGYzNyBsZWdhY3ktdHJ1bmsKKzI5MjYyIDAwMWI3ODlmMWY4NGMwMDc4Y2NjNTFmOWQ2ZGVjYjBmYzEyMmM5MzMgbGVnYWN5LXRydW5rCisyOTI2MyBhYzE0MzE3YTlhZThiMzE2ZTRiYTUyN2M3MDc0OTJjZjc3NGY2ZGY1IGxlZ2FjeS10cnVuaworMjkyNjQgM2VhZmJkZTU2YjIxOWYxZGFhNWUyYzg1MmVhZTA5YWMxYmZjNWRjMSBsZWdhY3ktdHJ1bmsKKzI5MjY1IDY2ZTNlNWYwOTNjYTExMzc0ODdkYzgwODY5M2ZiY2YzYmQ0MjZlOGEgbGVnYWN5LXRydW5rCisyOTI2NiA4NWM4N2IzYWM5NmJjMjZlNTc0Zjk1NGUzMWI3NmJmOTRhNWNiODc1IGxlZ2FjeS10cnVuaworMjkyNjcgNmM5MzBlMjU2YTE2ZDI0ODk4NmFlZDc5MDNkNzQ1M2VjZjA5MGY1ZCBsZWdhY3ktdHJ1bmsKKzI5MjY4IGJjODFkNTMxYzYyOTMyMjUyYTcyNThlMzZiODIxMWY3ZGZhOWJjNWMgbGVnYWN5LXRydW5rCisyOTI2OSAzNDI4NDgyNWQ5Y2Q4MWMyOTMzM2ZlZDg5YTNmMTk0ZGVkNWZmYTFkIGxlZ2FjeS10cnVuaworMjkyNzAgYzc3ZDgzNTcwYjNmY2FmZjZhMzZiNzgyMDQ4NDZlNWY5ZTA0Yzg2YSBsZWdhY3ktdHJ1bmsKKzI5MjcxIGFiOWQ0MDE2YjU4N2Q1YWU5YTdkNWU5NDJmMjE0YWRlYmEzYTg5OGEgbGVnYWN5LXRydW5rCisyOTI3MiA2MDAxMjY1ZWM2ODYxNTZjN2E3YTRkMTkyZTMwNWFjYWEzMDA1ZjJmIGxlZ2FjeS10cnVuaworMjkyNzMgYjk3NjlmNzEzM2M2MGFjMmI0MjZhMjQxZjdlZDNjMjE0ZWMyMjZkYSBsZWdhY3ktdHJ1bmsKKzI5Mjc0IDBiYmVhNGRjZDliZWQ2ZDgxYzkyNzQ1Y2Y2OGU4ODhiMTZmYmNmOTYgbGVnYWN5LXRydW5rCisyOTI3NSAzN2JkMmE5MDFjMTAwYTlmY2ZjMGJiYzU1NDRiZTdhMTk4ZDdlMTI5IGxlZ2FjeS10cnVuaworMjkyNzYgZmRjYTg3YzQyMzRlYTQ2YTU0MmFmYzE3OGI3MjAwZTVlNzQxNDFlNCBsZWdhY3ktdHJ1bmsKKzI5Mjc3IGNkY2IxMDJmOGU1NmMyY2Y0YTkwYTg3M2Y0M2Y1YmI1YmE3ZGRiYWUgbGVnYWN5LXRydW5rCisyOTI3OCA5MTUxMTI2NzExNTJmNDNmYTlkN2RjYjZlZmEzMDY2NWE4NjFkOTE3IGxlZ2FjeS10cnVuaworMjkyNzkgNTQ4MzQzNjNjY2YwZGE2OWYzNDBkMGZiNzQxN2RlYTJlNTZlNmQwMCBsZWdhY3ktdHJ1bmsKKzI5MjgwIDVkMzUyZGU5NDQxNTgwYzgzYzJkYzAyYTZlYzQwNjkxNDY4MTdiNzMgbGVnYWN5LXRydW5rCisyOTI4MSA3Nzc5OThhMjI3Yjc0ZDE3ZjRkY2IyNzE5MmViZTdiOWU5YWU2OWMyIGxlZ2FjeS10cnVuaworMjkyODIgYjhjYmRiNzM1Y2YyYjE5OWU1NjRmOTRlOTE4OWI0YWY0MjBiNTY5OSByZWxlYXNlMjItbWFpbnQKKzI5MjgzIDRhOTJjN2Q5ZDQxNTRiMDVmYmQyNDVmZmUwNmRhZDhhNGUwZDcwNjAgcmVsZWFzZTIyLW1haW50CisyOTI4NCA3NmFjMTYyOTNlNGI2Yzc0MDdlYTk1MTRmOTM3MmI3ZDgxYTBmODFjIGxlZ2FjeS10cnVuaworMjkyODUgZmY2N2Q1ZmYxMjNlNTY5Y2IwYjU1NWNjNGU0OTg3ZTc0MzQ0YzNhZCBsZWdhY3ktdHJ1bmsKKzI5Mjg2IDc5NDE5ODk3YTM2ZmU3OTc3NTU2Yjc0ZDYwMDhiNTY2Y2YxMjIzNDAgbGVnYWN5LXRydW5rCisyOTI4NyBjNDQwM2EzZWZhNWQ1ZjhiOGQ4NGU0NmNkMmI4OThkYzZiZmQxNTAzIGxlZ2FjeS10cnVuaworMjkyODggMTIyMjdkNzlmNmJhNGM3NmRmMDVmYzY3MWYxNWM2Yjc1MTg2ZmVjMCBsZWdhY3ktdHJ1bmsKKzI5Mjg5IDBmNGU5OThlM2ViYjYzMzRjYjFiYTdhNTIxMzY1YjZkZTAzMGVmNzEgbGVnYWN5LXRydW5rCisyOTI5MCAwMzJmMTk2MDU5YWEwYjRmNzFlMGM4MGU0ZmNjMGZlOTdhNmFiZTEzIGxlZ2FjeS10cnVuaworMjkyOTEgOTkwYjI3NTE0OTM4MmI0ZTdkN2Q5NGI0YWY0OGFmOTFkYmE2YzQyOSBsZWdhY3ktdHJ1bmsKKzI5MjkyIDFhZmIyMjhlNDI2NWI1YTg2ZjA4YzBjODRkYjQwNjA2OTQzMTUwMTYgbGVnYWN5LXRydW5rCisyOTI5MyBjZWJlZTJhOWUzY2Y5OTYwYzAwNTU1MzVmMzlhMDRiNWVhZmU1NmI5IGxlZ2FjeS10cnVuaworMjkyOTQgYzJkZDQxMzAxODQxMDhiZTUzYjUxZjdlMzlhODU4OWYxZmFjNTMxMCBsZWdhY3ktdHJ1bmsKKzI5Mjk1IDA5M2ZlNWI5ZjZmOTQ5YWE1YmJkMTE0ZjAzNWM5MjhjMDFkNTVjOTUgbGVnYWN5LXRydW5rCisyOTI5NiA3ZWE2NzRhYzU5MGVmNTc0OGQzYzRhMWRiNzQxNzYwNzc0YzE1NzEzIGxlZ2FjeS10cnVuaworMjkyOTcgZGM0MjBkZTE3YTZlZTYzY2VlMDIwYjUxOTY0N2ExM2YyYTM0NTYzMSBsZWdhY3ktdHJ1bmsKKzI5Mjk4IGRlYWJkMDUzYjZkZTFmNGVkNjU2YWZkMzk3OTVmZmU5ODU3ZDdhYzkgbGVnYWN5LXRydW5rCisyOTI5OSA4MDUwMTU3YTQ0MzBiYjdiZDg3MjEzNTk4Yjc0Mzg0YmIwMDAzYTk4IGxlZ2FjeS10cnVuaworMjkzMDAgMDkwYjcyYzBkMmViNzMwMjU5YTlhNzYyOTVkZTI1MTI2ZDFmYTg2YSBsZWdhY3ktdHJ1bmsKKzI5MzAxIDQ0Y2M3YzYyZDk4ZGIzNzc2MWM0MzE3YzU0ZWM1MmYyZTUwMjdjZmYgcmVsZWFzZTIyLW1haW50CisyOTMwMiAwMzViOGRlYjUyYzFlZjRkMGViNTMwMTdjYTdhNDAyYzE4ZWU3Mzk2IHJlbGVhc2UyMi1tYWludAorMjkzMDMgNDcwMjkyMTI5N2QxMjU1YTEwY2M5YzczYmQxMjg3YjM1YTA3MTA3MSBsZWdhY3ktdHJ1bmsKKzI5MzA0IGE4OWQwMTQ1NTllMDU3ZjAxNjIzMjljYzRkOGU0NWI5NzA5ZWM2NGQgbGVnYWN5LXRydW5rCisyOTMwNSAyZjM2NDdiMjFiMDc2MzM5MGYyZDE3ODc1MTQxZDgzNTU0ZjQ5ZmY4IGxlZ2FjeS10cnVuaworMjkzMDYgODU0MDg4N2JjZWM2YzliOTBhMmFhYWI0MTAyMjc5NTIyZDFmN2M1OSByZWxlYXNlMjItbWFpbnQKKzI5MzA3IDI0MzUwMzkyNmM4MWQ4MGVjNTNlMWFiMDRiMDM1ZDMzNWJlZGQwNDIgbGVnYWN5LXRydW5rCisyOTMwOCBlZWE0MGM0MTcyMDUzOWZiZjdiMzQzMGQwZDBiYTMzMTk5YjEyNzcyIHJlbGVhc2UyMi1tYWludAorMjkzMDkgMDllM2YwZDhiZTEwYmViNWFiMGVmZTg0ODRhZGE0N2I0YTdiMjJjOSByZWxlYXNlMjItbWFpbnQKKzI5MzEwIGVhYjc5NDAyNzdmYmIzYzEzNGJkYzQ0MTE4NzZkMmU5MmMzNGI3YzkgbGVnYWN5LXRydW5rCisyOTMxMSA3YjdiOTY1NTU4NDJhOTRkNDY3NTczYzQ2YzI1YzQ3MDViMzNjZDFhIHJlbGVhc2UyMi1tYWludAorMjkzMTIgMzFiZGM2NmZiMzA3ZjAxNWNmMGU4YzA3MDhhNTg1OTlkNGFkMzYxYyBsZWdhY3ktdHJ1bmsKKzI5MzEzIDRhY2I1NTAxYjQ5MDBjNzEzZDAyMmYwM2RlNzgxNGM0ZWI5ZjVjZjMgbGVnYWN5LXRydW5rCisyOTMxNCA4ZmIxMmFjNzljOTM3YWE0Mzc4NTk2NTZmYjFhZDYxM2FiNjE1YjQ3IHJlbGVhc2UyMi1tYWludAorMjkzMTUgZWVkMGZjZjg1YjYyMjkwNDI5YzIxMTljNWRmZDdmMGNlMDY3MzA4ZCBsZWdhY3ktdHJ1bmsKKzI5MzE2IGE1ZGIyNDZkOTRhMGI5MWFkOTQ0MzRiMmM5NzZmOTUzMDNmZTI5MzcgcmVsZWFzZTIyLW1haW50CisyOTMxNyAwNTdkZTQxZGFmNDg5MmQwMWZmZGU5OWUzODZmYjM0NDZiNjdlNzk2IGxlZ2FjeS10cnVuaworMjkzMTggNjczODFlYmQ1ZjRmNzI2MDgzYWI4NTVkN2EyNWU0Zjc0ODAxOGNkYyBsZWdhY3ktdHJ1bmsKKzI5MzE5IDc4ODU4OTlmYjQzZWI1MGNkMjk5NDJhZmY3MTA0NGFiYjdiMDgyMWEgbGVnYWN5LXRydW5rCisyOTMyMCAxZjVmNjQ4MTg4NmQ5YWIzNDgxMWRlNmU0NWY5MzA2MjVmNTJmN2Q1IGxlZ2FjeS10cnVuaworMjkzMjEgNjgwYmZjYzljYTA2NmM2YzZkZTI3ZGMwM2U0M2JhYzdkZDBiNzJjNSBsZWdhY3ktdHJ1bmsKKzI5MzIyIDJmOWIwYTM1ZTIwNTc4OGY3ZTIzYTFiZjQ3N2QwODgwNDJhMjQ4MWEgbGVnYWN5LXRydW5rCisyOTMyMyBhMTFjZmFlNzFkZWIwNzg2ZTYyMjMwMDcwNDk4OTQwMGNhOTY1NDBmIHJlbGVhc2UyMi1tYWludAorMjkzMjQgODRhM2RkOTk0Y2QxODgwNGY2MzNiNmM4M2Y1ZjI5NmQwYmQxMzUzNSBsZWdhY3ktdHJ1bmsKKzI5MzI1IDU0ZjMyYmE3MDQ3Y2IzZmIxODkyMDcxM2U3YmI0ZTRiZTU4YzVlY2YgcmVsZWFzZTIyLW1haW50CisyOTMyNiA5ZGQ5YzUzMWNhNzhjNGYxMGRjMTE2NGM2MTI5OTgwMzVkNjcwNWM0IGxlZ2FjeS10cnVuaworMjkzMjcgNGM4YThjNzRmNGJkYTk0ZmYzODVmNjVjMTVlNGJmMjM3ZjBjZmYwYiByZWxlYXNlMjItbWFpbnQKKzI5MzI4IDgyM2U5NDdlMjQ1MDI1N2ZmYzU3Yzk4MWQyNWNkYTFiZmFlZWE2Y2YgbGVnYWN5LXRydW5rCisyOTMyOSAzNWY0NzZkNjQ4MWVmNDI5ZGVkYWMwZTYyOTQyZjM2MjkwOTNhOGZiIGxlZ2FjeS10cnVuaworMjkzMzAgNDFlMDM2MWEyMTkxMjJmYWU3MzNjMGY2ZDJkNTMyZjEwYTM0YTU2MiByZWxlYXNlMjItbWFpbnQKKzI5MzMxIGU1NmI1MmU3OGJjOTc5MGI1M2I2Nzg4NTBhM2YzN2QyZjI4MWRjOTggbGVnYWN5LXRydW5rCisyOTMzMiAxNTFhYTM0MzRhYTY3MDIzOTcyY2E3M2FkZGNjZmMzNzg5NDE3YTk3IGxlZ2FjeS10cnVuaworMjkzMzMgZDE3ZmZhMDUyMmI3NTllZTk4YTczY2Q1MWQ2N2I4ZGQ2OTllZWFhZSBsZWdhY3ktdHJ1bmsKKzI5MzM0IGI5YWE4NzFmODQ0YmZjZmZjZWM2MjU2ZTcyMTI2NTJiY2MyZmI4YTYgbGVnYWN5LXRydW5rCisyOTMzNSBiN2IwMTJlNzhkYTM1ZTNiYzU1MTdjNTIwMTFkNWExYTk2YjliMzkwIGxlZ2FjeS10cnVuaworMjkzMzYgMmIxNTgyNjdiMDBlNGMwOWMwMTEzMDdiMDljMjhhMjYyZTcyZWVhNCBsZWdhY3ktdHJ1bmsKKzI5MzM3IDJiY2I0MTYxMWZhZTkxOTM1MmI0MDcyYjA5YTdmYmVhOWEyMGIxOTIgbGVnYWN5LXRydW5rCisyOTMzOCA0ZWI5NGM1NmM0NmE0NzFhNDZkM2Q5YTdkMGQ3YTA4MDEyZjc5MTgxIGxlZ2FjeS10cnVuaworMjkzMzkgY2I5MTBjMzk0OTI3MTQ5NTM3NTAxNDAyMTNlYTI1ZTU2OTBhMzYyNCBsZWdhY3ktdHJ1bmsKKzI5MzQwIGE5Y2ZlYjQyZTI0MDk5ODY0YTNmYzA2NmNjZDMxN2Q5ZGJmMzdkNzcgbGVnYWN5LXRydW5rCisyOTM0MSA1N2ZiM2Q1ZTNkZDM3NjAxZWZmODI3OWViMDY1YjdhZGRhMTVmYmQ1IGxlZ2FjeS10cnVuaworMjkzNDIgNzkzMDVhMmVmYThjODc4ZWMzN2IxYmM5MGZmOWE5YjExNjg5YmVhOCBsZWdhY3ktdHJ1bmsKKzI5MzQzIDkyNTNmZTg2YjkyMmZhMWExZDEyYjIwZTAxZTE2MWMzM2E5YjNmMGIgbGVnYWN5LXRydW5rCisyOTM0NCA1ZjdhMzM0YzA5MjUxMDk5NDNiNWZlZGJmNWVlODgwNDdhZmE1YjdkIGxlZ2FjeS10cnVuaworMjkzNDUgMTU2MDdlYzQ5ZmFmMTA4MTg0N2JkYjkwNDgyOTcxY2ZkN2Q4Mzg3YyBsZWdhY3ktdHJ1bmsKKzI5MzQ2IGQ0Y2ZhNDA0M2MwOTRkN2JhMGJmMDVjNmM0MTIxNDk5OTNjYTYyYzIgbGVnYWN5LXRydW5rCisyOTM0NyBjYTAyNWU5ZmU1YmMyZTkwNGI0MjNlZjdhYWVhZWEwNmJmN2Y4N2RlIGFzdC1icmFuY2gKKzI5MzQ4IDgzYTMyYzU0N2I0OTkzYjYwZjVhNDgzYTQ4MmRkYTdiZThmZWJmZjAgYXN0LWJyYW5jaAorMjkzNDkgMDk4Y2RiYWQ1NWNmMmU3NjA0MmY2NzI0NDZlMDE4M2I0ODEyNDNkYSBhc3QtYnJhbmNoCisyOTM1MCAyZDdmNDI3NzA3MzMyNWNhODhkYTM4N2YxYThjZGY4MTdlNTQ3M2M5IGFzdC1icmFuY2gKKzI5MzUxIDQ1ODdkMWFmMmM0MTQzZTVhNDkwYWZkNjNhOWQzMTBlYmIwYjU0YWEgYXN0LWJyYW5jaAorMjkzNTIgYWEyZWE1ZmY1ZjQyNzA5ZDc0OGQ2OGQ5N2RjODNjMTU5ZTI5ZTdiNCBhc3QtYnJhbmNoCisyOTM1MyAwN2M2ZDNiOTI5M2MyNzVkYzk1MTk5ZTQzNmJiNmMwM2JkNGNhOTQ0IGFzdC1icmFuY2gKKzI5MzU0IDQ2YjU2NzNjYTM4MGRhYjg0NWE1ZmQ5OWFkMmJiOGRlZGI5MDEyMWQgYXN0LWJyYW5jaAorMjkzNTUgZTM2NWU2YmY0MWJiMDFmNjgzMmJkZjIzYmUxMTZkNzk0ZTU4Nzc0NCBsZWdhY3ktdHJ1bmsKKzI5MzU2IDRkNTAzMThiM2ViMTgxZGI3ZDYyODhmZDU1YTAzNTAxZWI5NmNlNjIgcmVsZWFzZTIyLW1haW50CisyOTM1NyA4ZDQ0ZDYxNDk0MWQ0NzdhNjZiYzMxN2YwNDU2MzNjZGEyMjBiNjA5IGxlZ2FjeS10cnVuaworMjkzNTggNmYxODUwOGJlZDNkMjc4ODVjYmRmZmFlOWEzZGQxOGVkN2VmZGYxNiBsZWdhY3ktdHJ1bmsKKzI5MzU5IDdlODBlN2QwNWExNmM4MzliN2RhMjc1YTY5NDY4MzJjNGM4NjZjOGMgbGVnYWN5LXRydW5rCisyOTM2MCAzNGYxN2ZiNDljNTEzMTEwMzk4NmNlOWIyMTVkMTFiNGIwZTYyYmM1IGxlZ2FjeS10cnVuaworMjkzNjEgZmVjMTViYWQzODZkOWYwZDMwNzA1YzRkNmMzNDUwNDIzMTRiYjAzNyBsZWdhY3ktdHJ1bmsKKzI5MzYyIGE3MGZjYzVkYmJhNTA1ZGRiNTU4Njk3ZjE3NmEzZWQwOGE4NGNkZjMgcmVsZWFzZTIyLW1haW50CisyOTM2MyA1MjlkYTUwNWVhYmM3MzEwMzg5MzBiZjg3MTFiZGQ5YmY0MTJmMDkyIGxlZ2FjeS10cnVuaworMjkzNjQgMTc1MDQxZTM0NTg3YTc2MWVhYmY2ZTg3MGFhOTA0YThkYzk4NDFmMyBsZWdhY3ktdHJ1bmsKKzI5MzY1IDdmMDMwYjhmOTE3ZDkwYjAyYzRmMzllMGIwMmUxMWViZWYxYzhlYWEgcmVsZWFzZTIyLW1haW50CisyOTM2NiBmYmVhNzBhNDAyOTE1NDIxODMxZmE1Y2IyYTE0ODBhNzFmOTIyY2JhIHJlbGVhc2UyMi1tYWludAorMjkzNjcgYWMyMzllZTBjOWU4Yjg3MWRhMDg2ZDA0YTRjM2Q2N2Y3ZjY2NmQ0MSByZWxlYXNlMjItbWFpbnQKKzI5MzY4IGNmODc5MjAzNTFhY2U5Mjc3YTY3YjkxNGMzNTg1NmYzYTIwM2NiYzQgbGVnYWN5LXRydW5rCisyOTM2OSA0MDJmZGFlNjdlNDQwZjRkODZhNTczOTEzNzY0NGJmNThjZDRiMWZlIHJlbGVhc2UyMi1tYWludAorMjkzNzAgMTk1MDBjOWI1OGMxNjFiZmM1M2E2ZTdjNjAwNmY2NTllYzNlNjk5ZiBsZWdhY3ktdHJ1bmsKKzI5MzcxIDUwOWJiMGI2ZGZhM2NiY2M5MGI3MzcyMGZiODY4ZTc2NDA3ODJjNzkgbGVnYWN5LXRydW5rCisyOTM3MiAxMjQ5MjQ1MjEyZTQ0NjE2MWM0ZjVhN2VmN2IwY2RhNGZmYmFhYzhmIHJlbGVhc2UyMi1tYWludAorMjkzNzMgMzdkODdkYzgwM2Q3YTRiZDYyZGU3NWYxMTIyYWVlMTdkYzM2ODhjOSBsZWdhY3ktdHJ1bmsKKzI5Mzc0IGQzYjczNzdjOGFmYWRlMTIwOWRmODkwMDA0ODcyMzMyMmU3NTc4NjQgbGVnYWN5LXRydW5rCisyOTM3NSBjMzM5OGMyNWRmZWY3ZDkwNjU2ZWQzY2RhMTM3MWEzMGMyYzY5MTk1IGxlZ2FjeS10cnVuaworMjkzNzYgZmI3YzUyY2E5ODQwNTEwZTZmZjFiNmIzNzkwMTM5Mzc0ZGNkNzZiNCByZWxlYXNlMjItbWFpbnQKKzI5Mzc3IDA5NWRiYmViYTljMDRmZDY0NDM1M2QzOTUxZDQwODNjZGY0YWE5ZjUgbGVnYWN5LXRydW5rCisyOTM3OCA0ODdkM2MyNDkwYmMwMzU4ODEyMGVhZDI1YWQ5MDdmYTk4NWYxMGE1IHJlbGVhc2UyMi1tYWludAorMjkzNzkgMDNjM2Y2MTBlMDU0MTMwOGI0YjU4NGU2ZjJlODNkMTViMTJlMmVkYyBsZWdhY3ktdHJ1bmsKKzI5MzgwIDUxODI4ZWE1MGI1OWMwZTgxZTRjNzdjZTUwYTQxYzlmNDAyNjA4NTMgbGVnYWN5LXRydW5rCisyOTM4MSAxNzk0ODI4NzVjZmJhNWM0MGY3Zjg4NzJmNzE4OWVlNWZhYzg5ODY5IHJlbGVhc2UyMi1tYWludAorMjkzODIgNTA5MDVkYjM1ZGE1YjBmMDY5ZmRjNGYyNWQ1OWIwMTZmYzhjMThiNyBsZWdhY3ktdHJ1bmsKKzI5MzgzIDZlYTllZWY5OTEwODQ3ODYzMDhmOTg3OGVhNjAyM2NmYTg5ZjcyZmMgcmVsZWFzZTIyLW1haW50CisyOTM4NCBkZjA1NWE5ZWZmOWNmOTA3NzhjMGRiZTZkYzMwYTkxMGIyMGQ3YzEyIGxlZ2FjeS10cnVuaworMjkzODUgMGJhYzY2ZTFiMzU2OTA0ZWFlNDJkNzg4MGNlN2IzZmE0NjU1YjY3MiBsZWdhY3ktdHJ1bmsKKzI5Mzg2IGFjY2QyZjU0ZTE4NDdhYzQ1YTllZDg5MDM5NDE4NGUyYWYxZWJhOGIgbGVnYWN5LXRydW5rCisyOTM4NyBkMzJjNDVkMjc4YjI0OTBkZjU1ZTlmNzA4MjNmMjExYWE4NDhlYWM1IGxlZ2FjeS10cnVuaworMjkzODggZjdkYTMzYmNlMWQ5Mzk5NmM4ZTdiY2YyNDQ2MDE2Mzk4MmY4Mjc2MiBsZWdhY3ktdHJ1bmsKKzI5Mzg5IGZiYTE2YjliYzk1MTdmNGJkOWY1NDNhMmZjMzg2MTVmZjFlNWU4MzcgbGVnYWN5LXRydW5rCisyOTM5MCBiMDYzODMyOWUzYjlhMWE5YjY1YmExYjcwYmU1YzMxMGZiYmU2ZWJkIHJlbGVhc2UyMi1tYWludAorMjkzOTEgZjJkYWUzZDlhNzViZDNjM2U1ODZkZTIyYTI5YzE2Yzk0MTI0MDdmOSByZWxlYXNlMjItbWFpbnQKKzI5MzkyIDhiYjYwMDNmN2Y1NGM1OTY2ZWFlZWU0OGU2ZDkwYmZkNTBiZjIwMGIgbGVnYWN5LXRydW5rCisyOTM5MyA1YjZkNTViNDUyODdjNDM0ZjYyZDEwYzc3ZWE0MmZiNzA3N2JlYWQ1IGxlZ2FjeS10cnVuaworMjkzOTQgOTkwMWZkYTdjMzY2NGE3Zjc1MzIzMmU5ZWE4ZGU4ZWZlMDFjZWI1OSBsZWdhY3ktdHJ1bmsKKzI5Mzk1IDRlZjc2ODZjNGM4ODlmNjcxNjY4NjJiMjNlYjQxNmQ5OTFiNjcwZjMgbGVnYWN5LXRydW5rCisyOTM5NiA0ZjRlMDI2MGI3NzEzMjM4MTNmMzdjZDk1YTBiZmYxNWMxMWRmYjViIHJlbGVhc2UyMi1tYWludAorMjkzOTcgZThmYzQ1OWVjMDE1NTg1YmZiMTAxMjk3MTliZjE1MTlmYzM2MTk1YyBsZWdhY3ktdHJ1bmsKKzI5Mzk4IDZlNDE0ZmJhNDZmNjhjMjlhMDg2NWNjYzVjZTRkYTlkZGQ1MWU1YTMgbGVnYWN5LXRydW5rCisyOTM5OSA4MzRiMGUwMzg5YzVhOWIzYTkyODk1NDI1Yzc0ZDY5NzA0YTM5NzVjIGxlZ2FjeS10cnVuaworMjk0MDAgZGM0YTAzMzZhMmEzM2NjMWM2YTg0OWY0MzFkNTM4MzYyNzIyNjZkZSBsZWdhY3ktdHJ1bmsKKzI5NDAxIDZkNTU0MmNhMjc3YTM5YTg5NzY0YzY3YTM3MDc4MjUyYWYzOTU2NGQgbGVnYWN5LXRydW5rCisyOTQwMiA1ODk0MWZjYjZmNWJjMTU2YTFiMWViOGNkNDUyNDdkNzQ2MjUyODUyIGxlZ2FjeS10cnVuaworMjk0MDMgNzA0OTI2OGYyNTJkMjcyNWU3OGQ5NTU2YWRjOWQ3Yzg0M2FlZGNkYyBsZWdhY3ktdHJ1bmsKKzI5NDA0IDc1NzU2Yzg1NThiZDkxMTcxY2M1ODQwNzM3MzY1ZGNlOWVkNWY1NDUgbGVnYWN5LXRydW5rCisyOTQwNSBkZWY5NjA5ZDkzNjljYThhZTZlZTI5ZDdhM2E1ZjM0YWY5ZWJlNDkyIGxlZ2FjeS10cnVuaworMjk0MDYgMzA2NWI1NGUzYWI3MWJmMTdkZjI2YTFiZDNiMGIwN2Q3Y2M5N2VmYyBsZWdhY3ktdHJ1bmsKKzI5NDA3IDExZmNjY2NkMzYwMDQ3OTE2NzRhNDVmYmYyNGNiZTAyZGQ5MjI2NmYgbGVnYWN5LXRydW5rCisyOTQwOCA3OTA3Mjk0Nzc2MTBlYTc3YjgxNjc3M2JkNzM2MDI2ZmRkNWU5OWFmIGxlZ2FjeS10cnVuaworMjk0MDkgMDRjYzEyYmRjZWRlYWE3NWJkNTRiMGU2MjlmZWIwMzE0YzU4OGRhZSBsZWdhY3ktdHJ1bmsKKzI5NDEwIGJlODgxNjE0ODQ4YjI4ODYzZmYyM2Q1N2ZlMDEwN2U4OTY2ZmVhMDMgbGVnYWN5LXRydW5rCisyOTQxMSA5NDI0MGFkNTBkYmUyZTcxYjhjYjNkNjhmZWE5NTEzZWM3ZmVkNzc1IGxlZ2FjeS10cnVuaworMjk0MTIgYjZlZTgwNDdiMjUwZDRhOTRkZmNjOTZmOGE5ZTVlYzJiMDI3NjNiMiBsZWdhY3ktdHJ1bmsKKzI5NDEzIGZiNTdkNTc3N2EyNDkyYjcyNzNmMDRmNWM4YTI0MDkzYTZiNDA2MjcgbGVnYWN5LXRydW5rCisyOTQxNCA0OGU0NjEyZjg3Y2Q5MjhiOWVmN2FjOTdjM2VjNmFmMzk4MDg3YTEzIGxlZ2FjeS10cnVuaworMjk0MTUgNDNmNzAxMDljZGE1YzU1OGJlMjk2NjljNWY0OTI4OTE2ZmE0ODA4OSByZWxlYXNlMjItbWFpbnQKKzI5NDE2IGUxZGIxZjkwZTE3ZjlkMzcwZjEyNzdmYWU5NGQ3NjYwYTE1NGFjOGYgbGVnYWN5LXRydW5rCisyOTQxNyA3Yjc3M2ExMjcxYzNkZjM4MjRmNzA5ZTA0Yzg1ZWY2YjdhOTQ4YjNmIGxlZ2FjeS10cnVuaworMjk0MTggM2RiNzcyZDQ1Zjk4ODZjOWJjMjMwMTY0MmIwYzkzNzhkZmUyNjQ0ZCBsZWdhY3ktdHJ1bmsKKzI5NDE5IDI2YjQ0MGMzN2M5NGM4OTI2MWNjZjk5MzNjNmNjZTNmNTZhMmNlMzcgcmVsZWFzZTIyLW1haW50CisyOTQyMCAyNTNlOWVkZmRmYzA2MGZmNzdiNDg5NmY0YWUyYjc3MWNmMDk4OWJlIHJlbGVhc2UyMi1tYWludAorMjk0MjEgYWFlMzc2NGM0ZDU4ZDQ5MWY0YzY1ZjFhYTJlMDA0Y2UxMDIxYjZlMSByZWxlYXNlMjItbWFpbnQKKzI5NDIyIGI5MjQ2ZjhmYjhmZDMwNGNlYzczNmVlYmFhMWQyMjlhOTg3MGU4YWQgcmVsZWFzZTIyLW1haW50CisyOTQyMyA4MDhlNTEzYTJmNWMyZmM0ODg5NmY4N2E3NjIxM2FhMGRlNjA5Y2ZkIHJlbGVhc2UyMi1tYWludAorMjk0MjUgODU4NWZkOWFlY2VmOTVhZGU2NTg1ZjgxZDhmNzlhMTJkNjQ0OWYyMSBsZWdhY3ktdHJ1bmsKKzI5NDI2IDM2ZDQxOGJlYTU1MjE4ZjBmMGY2MTA0ODNmMjU2YTQ4YjYzOThhNTcgbGVnYWN5LXRydW5rCisyOTQyNyA0NDVmZWIyNmFkZmI5YWE1MjAxZjI2NDU1ZWJiMzA4MDRlOWRhNjFmIGxlZ2FjeS10cnVuaworMjk0MjggZjRmMTc2NzhmZGQ4NjU4ZGJhNGJmZmQ5ZTkyMDIwMWQxMGZmMzA3YyByZWxlYXNlMjItbWFpbnQKKzI5NDI5IDk0OWVkODM2NWQ1OGQzNTFiYzcyMDU1NmEzMWVkMGZlMmJiNTRhYTIgbGVnYWN5LXRydW5rCisyOTQzMCAxOGVkZjIzYmY0OTkzZDcxMDI5NDdlMzQ0Nzg5ZTNjMTM1YTA0M2VmIGxlZ2FjeS10cnVuaworMjk0MzEgZGJhNjBkMDI0ZTQ4NDM2M2EyZjhlOWNkMzk3NGVlY2E3YjQ0YWIxOSBsZWdhY3ktdHJ1bmsKKzI5NDMyIDA5NjY0MmQ3ZWNhMjViYjdkMmNiMjI2MzI1ODhjNTIxODBkYzcyZTAgbGVnYWN5LXRydW5rCisyOTQzMyBmYzZhMTlmNjlhYzdlMmI2MGVlNzljZWZhMmZmYzE2M2UyZDA5ZjM3IHJlbGVhc2UyMi1tYWludAorMjk0MzQgMDFiZjljODhkOTYwMzZiNjY2MmExNTkyN2FkZDI2YzI0YzQ1NmNlMyBsZWdhY3ktdHJ1bmsKKzI5NDM1IDcyNzM0YjM5ZjhhYTBhY2Y1MjZhZDIzYTY3OWFlZmE0NmFhMDI4YWUgbGVnYWN5LXRydW5rCisyOTQzNiBkOTBlZjQ2ZDA4MzgyOGJjOTVjMGJkNDZiOTExZWZlYmM5MmJlNzMxIGxlZ2FjeS10cnVuaworMjk0MzcgNGEyNGM2YTY0MjlhNjY3MzUwN2UzYTZiNzk1MzA2ZjU5OGQ2NzcxOSBsZWdhY3ktdHJ1bmsKKzI5NDM4IDkxZDNkNDQ1MmM0ODIyMGI0Njc5NWMwMzNjYzRjYmU0ZjMwNTdiMTYgbGVnYWN5LXRydW5rCisyOTQzOSBlMzQ5ZmUwOTNiMzRhOTE4NDlkMTg5OWFkYTU1YmEzYjI5OWI3ZDM0IGxlZ2FjeS10cnVuaworMjk0NDAgMzIzZTRjMTE0NmQwYzYwMjVmNmJmZGU0OGMyZjEwNjQzMGU3MjIwZiBsZWdhY3ktdHJ1bmsKKzI5NDQxIDU1MTdjMzZhYzQ5N2RjMzY0MGIwNmJjZGI5MWVkOTQzOTdhODlhNzQgcmVsZWFzZTIyLW1haW50CisyOTQ0MiA2ODc1YmQ3Y2I1NzA1NzNlZWMzM2NiZTY3NDM1ZWIxOTBjY2FhYmViIGxlZ2FjeS10cnVuaworMjk0NDMgNWI4MjhmZmUxYjM1ZjAxZWU2Y2JlMzcwMjE1ZTdiM2M3ZDlkOWI3NSBsZWdhY3ktdHJ1bmsKKzI5NDQ0IDQyNTJiMDRmM2VlZDYzNGNlMjNjY2QyMDdmOGU1NTY0NDJmMTk0ODYgbGVnYWN5LXRydW5rCisyOTQ0NSA4ZTczMzgzNDc0ZWFlYjdlZTI5MmY2ZDM5YjYzOWRjNTY5NTNiNTBmIGxlZ2FjeS10cnVuaworMjk0NDYgZDdkYTA4MGQ3NzYzMDRjOGJjMzllZDc1N2RlYjE3ZWFkYWEwOWZmMSBsZWdhY3ktdHJ1bmsKKzI5NDQ3IDQ3MmE0MmUyMDI0NDA5YWRjNTk2MGE2MzAxMmQyMjk1ZjhiMDM5MGUgbGVnYWN5LXRydW5rCisyOTQ0OCBjYjgyOThhNmVkNDdjNDRkZGYxMDY1MWE2ZTcwMmFlNDE5NjkxNzE4IGxlZ2FjeS10cnVuaworMjk0NDkgNjY2MmY5ZDQyMjBiNWNkYTA2NDVlMTZiNjM5YjNhYTk4NGYwODE2YSBsZWdhY3ktdHJ1bmsKKzI5NDUwIGE2OGM2ZDYyZmU3ODhkZjQwMDQ5MWQ4ZjY4OGFlZjM5NzI5YzRmZDIgbGVnYWN5LXRydW5rCisyOTQ1MSAwNDBhZjljNzM2YmIxOThiZTg1MzYzMjdmYmYxMjc1M2RlNWVjN2MwIGxlZ2FjeS10cnVuaworMjk0NTIgYjY0NzhkNDYzNTU1NGJlMTUyOWFlOTVkYTg5MTI0ZWNkNWJkMzE2ZSBsZWdhY3ktdHJ1bmsKKzI5NDUzIDJkODM3ZTIwODNmYWYzNTA5NDJkNmM0NmY2ZDhiOGU2NmE3ZThlNDUgbGVnYWN5LXRydW5rCisyOTQ1NCAxZDAyYjQwNWUzMWZiMjE5YzA3NTJkNDAyMjk4ZjU5ZDIwMDU5NTZlIGxlZ2FjeS10cnVuaworMjk0NTUgNGYxYjczOTZhM2M1NDI2ODk0NDc3ZTczMWViYjgwOTMzMTYzY2JhMyBsZWdhY3ktdHJ1bmsKKzI5NDU2IGQ4MTJiOGFhZWZiMzFiNDY2MmZiNmI1NmNkOTY5OWM3Yzc0NGJkYTcgbGVnYWN5LXRydW5rCisyOTQ1NyAwMTQ3ZWJlZjk0NTNjMzYxZjQzODQyYTllMzM3YTViYzQxYmJlMWNmIGxlZ2FjeS10cnVuaworMjk0NTggMDZlMDA1NjY2YzQyMjkxZjhmZGQwYjU2NTJkNWQ0NjI0YTJhODI0MCBsZWdhY3ktdHJ1bmsKKzI5NDU5IGUxYmY0NjA0YzBhNTg0YjFiYjE4MDQ4MjM5MDY1NTc3ZTgyNmUyYTkgbGVnYWN5LXRydW5rCisyOTQ2MCBkMzA4ZGY4MjRlMmQxNWJjMDEyZjljMTdkYjI1NzNjZjE5MDFkYjI4IHJlbGVhc2UyMi1tYWludAorMjk0NjEgMTUyMjE5ODA3MTQ0NzJkMTIzNGEwNmJhNGIxOThjNzNiMTVhYzI3NCBsZWdhY3ktdHJ1bmsKKzI5NDYyIDE0MjViZWEyZWE2NmExMGM4ZGIzOGJiYTAzYTVkODc0MDFkNzg3NDYgcmVsZWFzZTIyLW1haW50CisyOTQ2MyA5Y2VkM2U1MTg3ZWUxZDY2NThlZDQwZTMxZmRiMTA3NDRlNWZkNjc0IGxlZ2FjeS10cnVuaworMjk0NjQgNmUxMWFlMDRhZjEwOTQ5YTYwZTVkYmNhZjcwOGI3ZWEzMDJiNzAyNSBsZWdhY3ktdHJ1bmsKKzI5NDY1IDkwZjRlZWVmYzUxNmY5ZjNkM2UwN2MxMDVjMzFhZGYzN2YxMDBiODIgbGVnYWN5LXRydW5rCisyOTQ2NiA2MTFhZjc5YzBlODkyYjRlYzM0M2JhMGQ5ZjI5Yzk1MmJkOTFmZGVlIGxlZ2FjeS10cnVuaworMjk0NjcgMjczY2FkN2Y3ZGY3MjE5NjdkYWJiNGM0NGUxZWQ3M2E3NDJlNDFjNCBsZWdhY3ktdHJ1bmsKKzI5NDY4IDE5NzYyYTQ5MzZmYzg0YjRjMDljZTA1ZjQ2ZTE5MWEyNjIwZTJkZmEgbGVnYWN5LXRydW5rCisyOTQ2OSAwZmRmY2NkZmVjMDZmMmVlYzI0NWIzYWNiYzkxNzNlMjM3YzYyZTk2IGxlZ2FjeS10cnVuaworMjk0NzAgOTBhMDljZDE1MzA1OTMxZGY1ZDAxNzY0MzI4YjYwOTdlODNhYjlhOSBsZWdhY3ktdHJ1bmsKKzI5NDcxIGJiODEzMzQ2YjIyN2VlMWM5NjQ2MWYyYzNlNWEzOTg5NGZlNWU3YTEgbGVnYWN5LXRydW5rCisyOTQ3MiAxYWFhMTJjMDhiMzU5NDlmOTRkNTI5NjRhNmFkNjY5N2UwODZlYTJhIGxlZ2FjeS10cnVuaworMjk0NzMgYTc1MzZjZWIwNmY2M2NiZmVmYzIwOTJhZWFjY2I2ZDI3OGE2MzQ4MCBsZWdhY3ktdHJ1bmsKKzI5NDc0IDU0OGU2ZmZiZmY3NTdhYjg5NmFjZTA4OTI1MDY5NzYyOGYyYWZjYjcgbGVnYWN5LXRydW5rCisyOTQ3NSAzZjNiN2E2MDg2YjczYjNiZWIwYzg3N2I4MzZlN2JiNTlkYTljMmQ4IGxlZ2FjeS10cnVuaworMjk0NzYgOGE4OGU5NzdhNzFiYmU2M2VjMGI3YzY3MmZhNzJkM2YwZjQxMmYwNSByZWxlYXNlMjItbWFpbnQKKzI5NDc3IDgzZDIxZWE5NDU3ZGIyZWNmYzZkMTkxNDYzZDlmMmJkZjlhZTI5YmUgbGVnYWN5LXRydW5rCisyOTQ3OCBiZGUzNjYwNTQyY2QzZTE5MGFjOThmNmJkNWVhYmQ3NGIzYjk4ZmUxIHJlbGVhc2UyMi1tYWludAorMjk0NzkgNDFlY2FlYzViNGY4MWVmODNkYjdlY2MzNTIwMjBhM2RjZWJlYjZiZSBsZWdhY3ktdHJ1bmsKKzI5NDgwIDcyMDU3ZWY5MDJhYWVlMDcwZDExZmNkMzNmMzQ0MWJkZjc1NjYxMmMgcmVsZWFzZTIyLW1haW50CisyOTQ4MSAyOGNmZjYwYTYwOTcwMmRlNzk5MTcxOTY0MGU5NjA1OTFkNjc2ZDAxIGxlZ2FjeS10cnVuaworMjk0ODIgNDk0NmQ0ZjM3ZDg0ZTJhYTQ4ODhkYzBlMWFhYzU1ZWY4ODk4YTlmMSByZWxlYXNlMjItbWFpbnQKKzI5NDgzIDNkNjI3ZTNkOTU2MTM2NTIxYWE3Yjc0NDMzZDMzNzEzNTIzOWE1MTQgbGVnYWN5LXRydW5rCisyOTQ4NCAzMWI1ODQ5Y2FjNDJmYjU4MTM0MTUyYmYyZDEwNDE5NGQ5NTJjMjI0IHJlbGVhc2UyMi1tYWludAorMjk0ODUgYjI4ZTliZjBmMDQ2YWU5YTNjYzlkMTA4YTM0MzA5NmY0MTVmNzZiNyBsZWdhY3ktdHJ1bmsKKzI5NDg2IDAyOWU3NWZmZTc1MGQzNGMzYWRlMDUyMjEyZTIzMGNkZmQ2OTZjZmMgbGVnYWN5LXRydW5rCisyOTQ4NyAzNmVhMzFiYzkwNzY1MGUxMDRmODg2N2VmMzUxOGQ5OWUyOTEyZjUxIGxlZ2FjeS10cnVuaworMjk0ODggMDNiMDI3MGUxMTZiMzcyYTVjODEzZDhmMDQxZDllMmZmYjMwMWQxYiBsZWdhY3ktdHJ1bmsKKzI5NDg5IGM2Y2EzOWIxNThjZGY5YjM2MDNlZjgzMTk1ODhjNmUxMDFlNzUzMjcgcmVsZWFzZTIyLW1haW50CisyOTQ5MCAzMjYzYWQ0ZmNmODExYTE1N2VhOTkwZWNlOGI5MzhjOGRhODJlOWY4IGxlZ2FjeS10cnVuaworMjk0OTEgZDQyNDU1OGQyNGY5MDMyYTlhYTBkNzU1NGIzMTRhNjJhM2RmZGM1NCBsZWdhY3ktdHJ1bmsKKzI5NDkyIDViZTVjODRkZWEyM2ZmNzAyNDhkNjQyOWEyYTM4MmViNjI1NmM4ZjUgbGVnYWN5LXRydW5rCisyOTQ5MyBiZDY3N2M4ZTQwNjcwMjQ5NDZhY2Q2ZjBiOTYwMzk0MjZkNmI1N2ZiIGxlZ2FjeS10cnVuaworMjk0OTQgMzZkZTVhNzMxMjU3ZWJhYjE0ZWMxMWZkZmMyOGVmNDY2NGFlOTFiMSBsZWdhY3ktdHJ1bmsKKzI5NDk1IDliZmQ0N2E5YzhiMzUwMTk0YmZkNTk4NWMyMzI4ZWM0MzIxOWFjMzcgbGVnYWN5LXRydW5rCisyOTQ5NiA2ZmE1Yzk1NDA4ZWJkODQ0MThmODAzZjFhM2YwYTE3MDg3YjVhNTYxIGxlZ2FjeS10cnVuaworMjk0OTcgOGUzMjQ2ODQyNzczNGM5YWExNmI1NDIxMDY0YmViYjE3OWE2ODNjZiBsZWdhY3ktdHJ1bmsKKzI5NDk4IDc1ODMwMWVlMGJiNzY1YzhhZGU3OWJmNjQyYTFiZDZlMTYzYjcxZmIgbGVnYWN5LXRydW5rCisyOTQ5OSBmNTRlODkyNzJhZGVkMjk1M2IxOWEyNjcxNjMwOWM0ZmIyYTE4OGExIGxlZ2FjeS10cnVuaworMjk1MDAgOWI0NzM4NmJhNWI4MDU0Yzc3ZmU3Nzk5ZTdlZmVjZmJkODU0ZjQxNiBsZWdhY3ktdHJ1bmsKKzI5NTAxIDEyNDRmNGMzODM0ZjQ5MDIyZmJlODJiYjRhMTk1YzZkNDVjNmNhMjUgcmVsZWFzZTIyLW1haW50CisyOTUwMiAxOGUwOTcyMDczOGY2ZmY1MzFkNzc0NjU1NGI5ZjA0YWFmMDE0Y2I4IGxlZ2FjeS10cnVuaworMjk1MDMgMGJkYTIwYWZlNjIzM2ZiMzdkMjk5MTQzZjRlNDZkNjVmMGE0MmFhZSBsZWdhY3ktdHJ1bmsKKzI5NTA0IGQ2OGZjNDlhNzA5NjAxYmMwMDliMzJiOTZhNWNkNGI4MmI4ODkxYzMgbGVnYWN5LXRydW5rCisyOTUwNSA2NGE5NmI5N2UxZTk3Y2ViN2NkNWM2M2ViNzNiZDBmZWZkNmY2NjFiIGxlZ2FjeS10cnVuaworMjk1MDYgMmRmOThmZjJjZGRhMWE2NTI3NjQxMWNlMTNiNGRiYWQ0ZTY5NDE0MSByZWxlYXNlMjItbWFpbnQKKzI5NTA3IGEyZjM2OTM0NjM5MzA3ZWJmZTA2OGM5NDc2MDc5YTY5NTUwM2MwOWUgbGVnYWN5LXRydW5rCisyOTUwOCBmNTQzOWY4MTMzZjg1N2IzODlmNjlhNGFlYTVhMTFkZDMxNThlOGI4IGxlZ2FjeS10cnVuaworMjk1MDkgMjI1ZWExZjUyZGU5NWE5MTk2MDU1ZWI5OGZkMWE2YTVlMGYwNjNjOSBsZWdhY3ktdHJ1bmsKKzI5NTEwIDFkZTdhYzcyOWJmYTkyM2EyZTAwZDYyNTg4MjYzYTM4YTEzYmE4NTYgcmVsZWFzZTIyLW1haW50CisyOTUxMSAxODNmYzIxZmI4NjYyMzIzZGNiMzI5ODAzZjMzZWVjYTYyY2UwMGVhIGxlZ2FjeS10cnVuaworMjk1MTIgNmVkMmUyM2FhZTQ1NjUyMzgwNmUyZmQ3MTJmNDY3OTdlZGZkNDg0YiBsZWdhY3ktdHJ1bmsKKzI5NTEzIDc3MWI2ZjUyMWI5NTYxZDhlNDJlOTI0ZDFhMTU0MzNlNGM2OTM5MjMgbGVnYWN5LXRydW5rCisyOTUxNCA1MjFlODljNGZmNDQ3ODIwOTE3M2E0NTg5ODhmMzAwNjFiMTJhNjNiIGxlZ2FjeS10cnVuaworMjk1MTUgM2E3NjA2YTIyMzdiYjY5NTcyMWNkMDYzOTE1YjM1YTUwMmRkNjlhNiBsZWdhY3ktdHJ1bmsKKzI5NTE2IDUyNWNkZGI3NjgyYWNlZTdlZDhiOTM4NjRhNTc4ZDIxZTg3MjAxYWIgcmVsZWFzZTIyLW1haW50CisyOTUxNyBlOWFhMzk0YzcxOTE3MjdmYmFjNWY1ZTg1ZDgzZWQyOWM4ZjZjOTc2IGxlZ2FjeS10cnVuaworMjk1MTggY2UzNjljZDU2MjZiZTcxNDFiM2I4MmE2ZjhkMmQ5NmIwODhiY2NhYyBsZWdhY3ktdHJ1bmsKKzI5NTE5IDRiODA0NGQxZjFhYzMyODE5YTZjMGI2MDExOWM3MDZmNTdkOTFiMGYgbGVnYWN5LXRydW5rCisyOTUyMCA5ZGEwMjY5MzdmYTUyODA5NTBjNTg3OWIwZDY4ZjU4MDQzYzc5YTU0IGxlZ2FjeS10cnVuaworMjk1MjEgMWM5OWE1YTBiODdiZGU2MDJkZGEwZmJlZGNmZTQzNWExNGU0ODU0YiBsZWdhY3ktdHJ1bmsKKzI5NTIyIDZlZTJmOWI0YmY1YzRiNzJmYzEwNzc0NTU2M2JlOThmMWM5MmYzNjIgbGVnYWN5LXRydW5rCisyOTUyMyAxZGJhYmM1YmVmZjdmNTVhOWJiYzQwMmI1YmE4M2U3ODNhNjAzOGJmIGxlZ2FjeS10cnVuaworMjk1MjQgYTU1OTk3NDBhNmU4MGY5MDgyMWE2ZTgxN2Q5NTliZGE4Y2U2ZmNlMyBsZWdhY3ktdHJ1bmsKKzI5NTI1IGI0YTYyODNiOTE1YmM2MWQ1YjY2OTllYzNmNDk1YTJlOGJlOTA3ZTkgbGVnYWN5LXRydW5rCisyOTUyNiA1ODE5YzQ0MzliYTI0NjRlOWEzNDRlNDdkNDc5ZjFmNjI0MTAyMzRmIGxlZ2FjeS10cnVuaworMjk1MjcgYzU0NzE2YWVkMjZhMDZkZWFhNmE5ZDUxZTI0ODhhZTM5ZjIzMWI2ZCBsZWdhY3ktdHJ1bmsKKzI5NTI4IDFiNGM1ZTY2YTRiNGFkMTdjYTEwNWJjNDhmYzllZTZkMDcwNDllOGIgbGVnYWN5LXRydW5rCisyOTUyOSA4MTIxMzU4ZTMyMTcwM2E1NzRlODlmMDdkNDYzNTcwMWZiNjM4YWIyIGxlZ2FjeS10cnVuaworMjk1MzAgNjk2ODY0YWEwNWQzMzQzMTAyNTA3MDI1NjBmYzlhZDYxNjA3MDE2MSBsZWdhY3ktdHJ1bmsKKzI5NTMxIDZhNDI1MzZmYjllZWJiOTkwMGU0ZWJiYWYzOWE5MTc2NTkxYWQ4MzEgbGVnYWN5LXRydW5rCisyOTUzMiBiYTIxOTRhZDNiNDIzYzNlYjgzYzhkNDM4MDgwYjQyNjA5OTk5MGQ1IGxlZ2FjeS10cnVuaworMjk1MzMgMWEzMGVkMTlmNjRhZmY5MGMwZTFlNjEwNWEyZjMxMDM1MGU4OWQzMiBsZWdhY3ktdHJ1bmsKKzI5NTM0IDEzYjJlYzUzNmUwNzA1ZTk4MTNjM2RjYTU2Yzc0MzZiYjRkYTQzODQgbGVnYWN5LXRydW5rCisyOTUzNSA5ZGQ5Mzc5YWM2ZDY3OTNiNzc2OGIxYjlhM2M1Y2Q0YjgzODlhMGNjIHJlbGVhc2UyMi1tYWludAorMjk1MzYgM2MyM2U0YzNkYTAyMDg2ZjVhNmZjYjcyZTM0NzZhZjI4ODdkNjliZCBsZWdhY3ktdHJ1bmsKKzI5NTM3IDk1MWRhY2MyMTg0N2Q3MDUwZjIxODc5NDhhZjhjZWQ1MWYwMDI3MTYgbGVnYWN5LXRydW5rCisyOTUzOCA5YjViN2RhMzYyYTVjNmZhNWRlZjMyMDFiYjU1NDcwYzc3ZDYyYzQ4IGxlZ2FjeS10cnVuaworMjk1MzkgMGRiZDZiNzNhYmQyMzFmMTM4OWY5NmU2M2RkZDZjZjE0NzlkNTRlMiBsZWdhY3ktdHJ1bmsKKzI5NTQwIGZlNmU5ODk0YzJkNDJhNGJhZWNiZDA2YzhkOTVhYjkyOWI3ZTBmNWIgbGVnYWN5LXRydW5rCisyOTU0MSA5NTE0MDc5MzIwMDE5ZDY5ZDAxNzdkZDgxMmUzMWE4ZTg3OWE0MDc4IGxlZ2FjeS10cnVuaworMjk1NDIgZDI3ZTVjYWQzOGQ3ODI0ZTRlODgwOWYxZWMxZGJmMTFhMzMyOWJjZSBsZWdhY3ktdHJ1bmsKKzI5NTQzIGVmNTg5M2JiNzllZjM5Yzk5Yzc1NjQ4MTc0MTFlZGE1OTE5NjE5NTIgbGVnYWN5LXRydW5rCisyOTU0NCA4N2I3ZmFlMTBhMTkzMDc3N2I5M2ExNzJmMWE3MGIyZGEwZTcyZWVmIGxlZ2FjeS10cnVuaworMjk1NDUgODY4ZmYwZGZhYmQyY2JiMDY0OTQwYTIwOWJjMzA4MGFlYWY0NWU4YSBsZWdhY3ktdHJ1bmsKKzI5NTQ2IGYyZWQ3MjJmZjAwMzUwYzI2MDgxYTZiY2M4ZTg0ZDkxYTMxZWQ5YjcgbGVnYWN5LXRydW5rCisyOTU0NyA4OGJiYzMwYjA4NDc4ZDEzMjY3MzJhZjk1YzQ3MWU3YmNlZWEyYTAyIHJlbGVhc2UyMi1tYWludAorMjk1NDggYjA2M2M0M2Y0ZGYwMzJjZTg4MWQxMWM1NzgxMmQwODZlNmExNjBkOCBsZWdhY3ktdHJ1bmsKKzI5NTQ5IGRhYjJjMTJiNjgyZTc4NzU1ODcxYzM3YmFlOTRlOTlhYjJjZjU3NTcgcmVsZWFzZTIyLW1haW50CisyOTU1MCA3ZmE5M2I1ZGRmYmQ0OTI1N2U0MzIyNGE4MDkzODgxNTU5NjgwZjA1IGxlZ2FjeS10cnVuaworMjk1NTEgZDJiZTc5NmM0YjgxZDdiOWE3MzcyYmE2MWE0YTFjYmViMDVkNjkwZiBsZWdhY3ktdHJ1bmsKKzI5NTUyIDFhZmNhMzc1ZjJhOWUzNmYyODk5MTViMDYyMzUyMjhhZDU0MDk2YWYgbGVnYWN5LXRydW5rCisyOTU1MyBmM2Q0NDkyNmExYmVmZGVmZDdlMGZhODg0YjRkZjE3YWNkMjA1MWE0IGxlZ2FjeS10cnVuaworMjk1NTQgOTgzMjJjMDc1ZjRkOTUzODg2MjVjN2IwYmNlMWQ1MTc3ZDY0MzdlMCBsZWdhY3ktdHJ1bmsKKzI5NTU1IDUzYTM4MjM0NDhkOTNhZjIzZjdlOWM0Mjk0YWEyZDg1ZTFkZjg2MzkgbGVnYWN5LXRydW5rCisyOTU1NiBjYWIxNjc2MTNlNDNiNzM3YmY5NTRjODJkNDNkY2Y1YTI5OThjNTdmIGxlZ2FjeS10cnVuaworMjk1NTcgMTNhZjgwZjAyMDgwMDhmMTJhMDAwZmE5YTQ2OTNmNTcwYmNhY2ZjZCBsZWdhY3ktdHJ1bmsKKzI5NTU4IDk5OWFjY2ZhOTFjNTZkYTdhYThlYjIzMjYzODRjNjgzMzI3ZjJlY2UgbGVnYWN5LXRydW5rCisyOTU1OSBmM2E2NDAzNWJhOGJmMTk2MzI5NTM0ZTI3ODBiZGZjOTliMTdkM2FhIGxlZ2FjeS10cnVuaworMjk1NjAgMmMxYmJmYzEyMmMxYTY2ZmVkMjY2NDBkMmVjZTEyMDdkMjEzYThiMiBsZWdhY3ktdHJ1bmsKKzI5NTYxIDRhMjg4YjQ5NGNiMmM5YTgwYWQzZTNkNDE5MjczNGEwY2YxZTU5ZGEgbGVnYWN5LXRydW5rCisyOTU2MiBkNjllOGE5ZmVkMTFmY2YzNTk4MjQ1MDlkYzFjMmZmOWYzZTFhODZlIGxlZ2FjeS10cnVuaworMjk1NjMgMzRlNzBiODliYmI3MjMyNDNhNjkyMGQwZTJlYmYzOTFiNzZhYzQxMCBsZWdhY3ktdHJ1bmsKKzI5NTY0IGI1NjRlYzRiN2U1YjMzMTllNDJjMzcyNjkwZjY3MzA0NTljOThkOTkgcmVsZWFzZTIyLW1haW50CisyOTU2NSBmMzUzNzMxN2IxYjI1YTZmMWUwNDRiZjU1MDgyNmMzMTQ3ODkzMWJkIHJlbGVhc2UyMi1tYWludAorMjk1NjYgMzUxNThmZDYwYjNiYTIyYjcyZDhhZjM5YzkxNzc5NGNkZjg3NWI4YyByZWxlYXNlMjItbWFpbnQKKzI5NTY3IDYyZjg4YzAyYzk4NzI4ZjMwNmViNmJkMWUyN2FjN2I4MDU5YmUzNWUgbGVnYWN5LXRydW5rCisyOTU2OCBkOTQ3NGMwNDQ1YmFiZjU1NmFlNDE3MjhiMjU2NWQwNDJkOTI5NzFjIGxlZ2FjeS10cnVuaworMjk1NjkgNTI2NTJmYjg2NDlkNzMxYWQ5ZDcwOWFhM2FmODY3NjYyODY3ZWIwMCBsZWdhY3ktdHJ1bmsKKzI5NTcwIGZmMWM2MDQ2ZjEwYjk0N2Y2MWE2ZjhhODcwNjQ2NzAwZDNlM2U3MDMgbGVnYWN5LXRydW5rCisyOTU3MSBmNjJmNzczYmM5ZmRkMmEyZDlhMGY2YTMzYWM4YjA0YTJiMzQxYTI0IGxlZ2FjeS10cnVuaworMjk1NzIgZjQ2NzQyN2UwM2ZhOWQ1Y2JjMWQzMjMyYmNhNzg3NWY1MzQ1YTE1YyBsZWdhY3ktdHJ1bmsKKzI5NTczIGNiYmY3ZjI0MjVkOWUxMDhhMjY0OTMxYTlhZjA0ZTIzNWRmZjFkNWEgbGVnYWN5LXRydW5rCisyOTU3NCBlNTI2MzY1ZGRjY2RmZDBlZGQwMDk5OWIwYzk0ZTU2Y2QwNGUwN2VjIGxlZ2FjeS10cnVuaworMjk1NzUgOTMzYzZkNjA4ZDAxYjNjZDQzMDk3YTMyMjYxZmM5MTliM2NlZDFiOCBsZWdhY3ktdHJ1bmsKKzI5NTc2IDEzNWYwOGI3M2JkNWQ4YjFlNzEwYTFjZjk1YjBiZjM5NTY2ZjFjYTEgbGVnYWN5LXRydW5rCisyOTU3NyA3NTYzMTlhMTM3YjgzMjZkZjBhMGM4MmU1ZGY1NTEyNTU2YjZhZjY3IGxlZ2FjeS10cnVuaworMjk1NzggMDgyMGFkNDk4MjlkODBiOTg3NTgzNGJjMzI3YmJhZDM4YmEyNmYxZSBsZWdhY3ktdHJ1bmsKKzI5NTc5IDFmMzY1Yjk4ZjExY2M1NDVhYjFjNmU5NzFiZWFmNDc2NGQ1ZWM3MTkgbGVnYWN5LXRydW5rCisyOTU4MCAwODExOTA0ODRhZjYxNjE2YWExYzdlYzk1NDA2YWFiMjA3NWNmZDhiIGxlZ2FjeS10cnVuaworMjk1ODEgMDA4NDgzNDJkNDk4NGFlNDc1YzNkMDk4YzgzN2JhOWViNDZlZmFhMCByZWxlYXNlMjItbWFpbnQKKzI5NTgyIDUzZTkwNDFlZmJlM2ZkNmE0OTE5OGY2NmNiMGY0N2Y0ZDgzMjAzZjUgbGVnYWN5LXRydW5rCisyOTU4MyA1NDA4ODFlZTJkNGFjYzRjNTg4NjczOTBhOTY3YTc3YjVhNTI5YzI4IHJlbGVhc2UyMi1tYWludAorMjk1ODQgZWYzZjY5MjlmYzBlMTk1OTU0YmQ1YTdkNTY0MWNjZjgyYjhiNDdkZCBsZWdhY3ktdHJ1bmsKKzI5NTg1IDI4MzI2MjhlZThjYzg0MDhhMzY2YWFkOWI4NGRhMWRiNzAyZTQwZjQgcmVsZWFzZTIyLW1haW50CisyOTU4NiBlNjFiOTQ2NDc0ZGZjNjkyODJjZDkxN2ViNmEwZmMzYzI4OTg2MjkyIGxlZ2FjeS10cnVuaworMjk1ODcgOTY0ZDZiNzljMjJlMmU5YzNkZmFhNTM4MzExYjcwZDdmY2I0YmFiNiBsZWdhY3ktdHJ1bmsKKzI5NTg4IDI2NzM3MzJhZDVmMTkxYjY2OWFkOTQ2MzQ4NzZkYTNkZTA2NTU4ODQgbGVnYWN5LXRydW5rCisyOTU4OSBhZGFhNDUwZTdkNzBkYzAyMWEyMTc0YWU5ZDQyNjhhY2VlOTQ3NGU3IGxlZ2FjeS10cnVuaworMjk1OTAgOWZmZWE1MGU4MzMwMTc3OWE4ZDBiMDRlYjIzYTk0MGI2M2MyNWFmNCBsZWdhY3ktdHJ1bmsKKzI5NTkxIDJmMmEyZmQ4NDRiZDc0YmE4ZjY0MGI0NDliNjcxZWFmZGNjNGJmMjUgbGVnYWN5LXRydW5rCisyOTU5MiA5MDQ4MjA3OTkyZjAwYmI1M2NhMmRlMTU1N2RiYWQ0MGI3MWI1ODg5IGxlZ2FjeS10cnVuaworMjk1OTMgODk2NWEyYjgwNGI1MDQ5NWJjZjcxMzc5ZDJjZmExY2QxMWNhNzdlYSBsZWdhY3ktdHJ1bmsKKzI5NTk0IGU5YWViZDRjZjU2Y2Y0ZjgyNjhiMmFmMGYzZGU1MmQxZWY0YzYwMmEgbGVnYWN5LXRydW5rCisyOTU5NSA5YzRiYmIzYmJkMGRlNzIzNmVlNTUyNDM4N2FlOWI5MzFhYzUzYmY1IGxlZ2FjeS10cnVuaworMjk1OTYgMDA0MjE2ZDdhMWRhYmMwMDlmMmYwOWYxOGQ0ZTllZmJjODc0MGQ4ZCBsZWdhY3ktdHJ1bmsKKzI5NTk3IDFlYmI1ZGM3ZjY5NmVmNzUyNzc2NjA3Nzg5NTVlNDlkZGRkY2NiYzcgbGVnYWN5LXRydW5rCisyOTU5OCA2NDE2Nzc2MDk5OGM0MzE0MzliZGViODYxYmUxMjkyYTg3NTFkOTBmIGxlZ2FjeS10cnVuaworMjk1OTkgM2FkNGZhZTllZDNhZDBjNmM4NDQ1NTA2Y2U3ZTFkYzQ4NmZkYTEyNSBsZWdhY3ktdHJ1bmsKKzI5NjAwIGNmYjMxN2U0YTc3MDFkMmJmZDRkMmU0NzRiNzUxOWZlZmNlZDY3MDggbGVnYWN5LXRydW5rCisyOTYwMSBhNmQxNmU4NGZlYzA1NGU5NDIxZDFkNWQwNmNkN2ViNjE3ODVmMjI3IGxlZ2FjeS10cnVuaworMjk2MDIgMDk5ZDM2Y2JiYjYxMWFiNWZiMzI0YmIyZjQyNTYzYTA0MTMwNGM4YSBsZWdhY3ktdHJ1bmsKKzI5NjAzIDk4ZjNmZDFlZDQyZjA1NzY2NTUyMmQ5NDFmMGU2ODc3MTRhODMzNmYgbGVnYWN5LXRydW5rCisyOTYwNCBlMjIyNmQ0N2ViZjAxMjk3Yzk4YTFhOTA3YjRhYzU5MTBiZDQ0ZGI2IGxlZ2FjeS10cnVuaworMjk2MDUgMjNlZjdjMTYzYTEyNTAyOWY1MTA5Yzk4NTU3MTViMzk4YzdlNTVlYSBsZWdhY3ktdHJ1bmsKKzI5NjA2IDQyMDMwNDdlMjAyMjM3ZTRjOTFhOGRlNDI1YjA1MDBjYTc1ZjlmZGEgbGVnYWN5LXRydW5rCisyOTYwNyBhNTZjOTBjZmMwMGMwZGJhNzUwNzEwOTE3OGU4MzliYTcxYTJlMDRiIGxlZ2FjeS10cnVuaworMjk2MDggNDJjZjFiNWU2MzkyNmY2ZGRhMzY5ZWQ5ODZhZTE0ZDE0MzE4MzBiOSBsZWdhY3ktdHJ1bmsKKzI5NjA5IGU5OGEyMTMxMDFiMzhhOWI4ZDUzYjhjMWMyMTJhNTI4MDE0NzEzY2EgbGVnYWN5LXRydW5rCisyOTYxMCA0YjkwNWUxOTgzYjYxMGIyNWEzNTM1Yjk1OTIwNzJhNjk4N2ViN2E0IGxlZ2FjeS10cnVuaworMjk2MTEgMDc2NTEyYTBjNmMyMmM5MmI3MjgzMjE0Y2Q4OWI0MDBiMmZhNmI2OSBsZWdhY3ktdHJ1bmsKKzI5NjEyIGY0Mjc4YWY4ZWVmYTAyYmFmYTc5Njg2ZmQ5ZWM0YmIyMzhjYjQ5YjQgbGVnYWN5LXRydW5rCisyOTYxMyA2ZTQxY2ZkMjViZGYwZmUyODZhMWQ2ZDczM2RjNTcwZjk5ZGE5YWRmIHJlbGVhc2UyMi1tYWludAorMjk2MTQgYTJhZTYzNWU0M2I2MTg3MTEyNTg1NzIxZDk3NjljZDEzNTZmZmUwYiBsZWdhY3ktdHJ1bmsKKzI5NjE1IDRhYjZiN2MzZjMxMTdkMjc2MzAyNjI3ZTZiOWViMGQwMDQ3ZTMyZGQgbGVnYWN5LXRydW5rCisyOTYxNiAxNDRkOWQ0OGI5NmNmZWE4MzdhMDBjOWUzZTRlMWMyYzM2ODFlMzkzIGxlZ2FjeS10cnVuaworMjk2MTcgMDBiNGNmZjkzNjE4ZTgwMDJkOWIzN2FiZTliZGY5MTliYjVhODZjYyBsZWdhY3ktdHJ1bmsKKzI5NjE4IDZjZTkyMjhhM2RhMjAwYTJjZDExMzViZTE5MzdjMTE3OWUwN2JmNGUgbGVnYWN5LXRydW5rCisyOTYxOSBjMmVjNzg5ZGVlNTY3NmJlZDAyYzZhNmZlNzI1OTkwYmRhYTQ5OWZlIGxlZ2FjeS10cnVuaworMjk2MjAgYmRkZTk0ZTAyOTE4MGI1NGUzNTMwMDFjOTA3ZjQ2NzA2ZjlhNTFhMCBsZWdhY3ktdHJ1bmsKKzI5NjIxIGE0OGFjYjViNDBlZmM0NTU2ODVkNTdiMTRmYjllNWM0YWI5ODdmN2IgbGVnYWN5LXRydW5rCisyOTYyMiA5MTM5MjdkMzI2MWVkYjIxM2RkNjI2NzU4NWMzNTU4OWQ5YzFkM2NjIGxlZ2FjeS10cnVuaworMjk2MjMgOWJiNGFkZmJmY2M4MzEzOTc0ODUyOGRhZTEzNmQ3OTAxMzdlNTE2OSBsZWdhY3ktdHJ1bmsKKzI5NjI0IDY1ZDZmMGJmYTQ2MTUwNDBkNGFiOGIxMWNhYzEyYzM0MGM5OWY3YjEgbGVnYWN5LXRydW5rCisyOTYyNSAwYjYxMWU1MGM1ZmMzYzRkY2RlN2UwNzQwYmRlYWNiOGU2ZGY3OWFkIGxlZ2FjeS10cnVuaworMjk2MjYgNTgwODNkOGVhOWE1YWQzZTYwMWIzYTAwYzM2Y2I4MzVmMzRlZjM0NyBsZWdhY3ktdHJ1bmsKKzI5NjI3IDNlMWU5NjE2ZjhjODY1YTAyNDI4YzViYzIwM2ZmNjAxMjMzZWIxNGMgbGVnYWN5LXRydW5rCisyOTYyOCA5NzQ5NzMyYTBmNmI5ZmZlODBmOWZkMjMwM2YyNzM1Y2M2ZmE5ZDk0IGxlZ2FjeS10cnVuaworMjk2MjkgZWMzNDE0YzU4ODcyNjI5ODQ2MTU5MzU0OTM4ZDExZDQ4ODVjYjNjNCBsZWdhY3ktdHJ1bmsKKzI5NjMwIDYwNzhhYmM2OTAzNmZjNzZmYmUwZTljNDgzNWM0ZDliNTY2OTQ2N2MgbGVnYWN5LXRydW5rCisyOTYzMSBiYjcxODc4MmU3MzY5YzVjMjViN2ZmZDVlMjQyODA2Yzc5MzdmYzkzIGxlZ2FjeS10cnVuaworMjk2MzIgOGNlYjQ1NWY1NTQxMTJjYzdmNWUwMjU4OTk4Y2RhMDgyMjUxMThhNSBsZWdhY3ktdHJ1bmsKKzI5NjMzIGY0OTI5MjYyMWIxNzNhYWY3ZDk4YWFjMTBhYjAwN2MwYmY4YmJkNDcgbGVnYWN5LXRydW5rCisyOTYzNCAyNGE1NTIyZDA3ODRiMzU5ZDIwOWQ0ODliZTcxYTZiMDMyMDk5OTRmIGxlZ2FjeS10cnVuaworMjk2MzUgZjBlZTM3ZTg5MzJmYWM4ZDA1M2U3MDYzMTlhZDVmMTk3MTY2ZTk4ZSByZWxlYXNlMjItbWFpbnQKKzI5NjM2IDI3ZjY0MzE0ZjBkZTdlZmFiNmI2ZTliNzVkYmY5MDg4YmY4MTVlNGUgbGVnYWN5LXRydW5rCisyOTYzNyBlNjI3NzRiNDQ3YzEwN2E4ODhjNDRkZjM2MzAzMDJkNTRhNzhlZTU2IHJlbGVhc2UyMi1tYWludAorMjk2MzggZGQxMGQ5N2QzMjlhNjBlNzBlMTJhNDI2N2Y5MTZiZTVmNjgwNGI1NiBsZWdhY3ktdHJ1bmsKKzI5NjM5IDNjMDgzZjg4MTY1NWQzNGY2Y2MzMDA4NWM2NzgxNzQxZjMxMDgzNGUgbGVnYWN5LXRydW5rCisyOTY0MCBhZjViNDE3NmY0ZWY2ODZkYTFlZWNkODRmYzdjNzIwMGFiNTk2ZTMyIHJlbGVhc2UyMi1tYWludAorMjk2NDEgNjNhMDg2MzlkYWUyYTNlYzBlMjNmNzAzNzE0MzhlNTQ5Zjk5MWRhMSBsZWdhY3ktdHJ1bmsKKzI5NjQyIDI5ZjdkMWQ1ZTZkNjI0OWZmZWE2MjRmODYxNDA5Yzg2YWNkNDM4ZTAgbGVnYWN5LXRydW5rCisyOTY0MyBlM2QyNjkxZmI2YjhjMmZhMGNjN2RjNDU1NTUyOGJiYTkxMzgyMjU2IHJlbGVhc2UyMi1tYWludAorMjk2NDQgMjNkZjQ2NTZlOGEyYWE0NzdjMDdhZGY0YjNjNTk3NzdkZTUyZDhiYSBsZWdhY3ktdHJ1bmsKKzI5NjQ1IDFhYjY1N2UwMDc2Mjc1ODRjOWY4YTdkZDU4YmQ4YmIxOWM3YmI0Y2IgcmVsZWFzZTIyLW1haW50CisyOTY0NiA5NWM5YzU2NmJkZDZkOGNlY2NlYWE3OTUwY2JiYzM2MzFiYTkzNmQ3IGxlZ2FjeS10cnVuaworMjk2NDcgNGI2ZDhmNTE2Njk4MTdmMTM3MDhlNmNhMzNhMmFjNWZmZDA4NDk5OSBsZWdhY3ktdHJ1bmsKKzI5NjQ4IDI1MWU1NTJjODM1MjEwZTY3YmEwM2RhOGJjNzZmNmIxNGRmNWUyNDYgbGVnYWN5LXRydW5rCisyOTY0OSA1YjYyYjllYTQ2MGIyMzllMzJmYjYyYzM2YjNiODBjM2FlN2Q5ODVhIGxlZ2FjeS10cnVuaworMjk2NTAgZTcxNzcwYTdmNTQ5ZmE4ZDNmYmM2NDIzYTRkYTdmYTQxNzlmYzNmMyBsZWdhY3ktdHJ1bmsKKzI5NjUxIDA0ZDNmOTVjZmQ4OWYwYzBiNDgwZmRiMDg1MzYwMzBmZDMzZDc4YzQgbGVnYWN5LXRydW5rCisyOTY1MiAwODI5MzBkZmJlYmRkYmU5NmZkMjdhZjEyMjQ2NzM2OWY2ZjExNmQ4IGxlZ2FjeS10cnVuaworMjk2NTMgMWMwNTUxNzFiODcxMWZiYjk5ODY0YzNkOWM3Y2Y0ZDhkN2VhZDU0YSBsZWdhY3ktdHJ1bmsKKzI5NjU0IGY5NmZhM2E2ZGRhNDE4YzI0NGMxZWQ4ZmQ1Y2E4YWJhNTc2MDcxN2IgcmVsZWFzZTIyLW1haW50CisyOTY1NSA4M2FlNGE5MDJkZjA4ZjczOTkzMjIyNmJiNmY4NzhkOWVhMjJhOWQ0IGxlZ2FjeS10cnVuaworMjk2NTYgZGJlMjU2ODdiZTZlNWMzNjkxNzNkNzk0MDg2NGZiZGY4N2MzNGYxYSBsZWdhY3ktdHJ1bmsKKzI5NjU3IDBiMjNjZGEwMDQxNzBkOWE2MmMyMGE0OTBiODUzMGQ0ZDAxN2Y2MWQgcmVsZWFzZTIyLW1haW50CisyOTY1OCA0NmQwYjQ2YTc1NGZlMWI1N2FmYjliYWQ5Yjk3ZTE0OWQ2MDM2YzMyIHJlbGVhc2UyMi1tYWludAorMjk2NTkgMWFmNDEwZTMzYmVjZjU4MWQ3NGI3ZjQyOTlhNDU0MWI5MWQwNjlmYyBsZWdhY3ktdHJ1bmsKKzI5NjYwIGY3MmIxZjg2ODRhMmI5ODI2ZDQ0MDhjZDMwMjdhNjY1MjIwOGE3OGEgbGVnYWN5LXRydW5rCisyOTY2MSAzZTU5ZDY3NGI4YzM2NDMzZWNlMGM1YTA5ZmM4NmQ3NmJjYmY4YzQ0IGxlZ2FjeS10cnVuaworMjk2NjIgNGMyNTMyYzFjYjJkZTI0ZDNkNTAxMzMzZDRlNGUwYTlkOGZkNjdiMyBsZWdhY3ktdHJ1bmsKKzI5NjYzIGFmMzk2NDY3OWUyZmJkOWJmOTY5NmFmY2EwZDQxYjgzNmZhNmIxMjIgbGVnYWN5LXRydW5rCisyOTY2NCBhZTE2OWY1Yjk0ZTA0ODEzNjQ4OTQ4NTg4OWIzMzg3M2Q3YTkzMWM0IGxlZ2FjeS10cnVuaworMjk2NjUgMGUwYjNkY2Y3ODc4OTg5NDMxZDk4ODc1NjY3MjAzY2ZlYTE4ZTZlMCBsZWdhY3ktdHJ1bmsKKzI5NjY2IDM4ZDFmODNkNTc3MTA4YTZlMzA5ZTA2MDBiODAxOThhNzE4NzcxNDQgcmVsZWFzZTIyLW1haW50CisyOTY2NyBkNmRjNDZiOWFmM2MwZTI2OGVhNDcwZTI3YzcyNjBjZGM4NTAxNTUwIGxlZ2FjeS10cnVuaworMjk2NjggMzkwYmY1ZDJkOGU3ZGY2NjAwMTkxOWRhMmNiZjA1MGNlMTEzOGNkZiBsZWdhY3ktdHJ1bmsKKzI5NjY5IDljN2FhNDNiMjFhOWE5YjBlZmVjZTBjODNjZmYzNzY5MzFhNWU5MDIgcmVsZWFzZTIyLW1haW50CisyOTY3MCBkNTYzM2U5M2Y3MDdmMzQyYjU0MjAwM2RjOWVkZjMxMGM5YzRmZDVlIGxlZ2FjeS10cnVuaworMjk2NzEgOTM3MzU3ODgyMmI1OTBlMDdhMDEwZDY1Y2U3NjRjYzJlM2U0ZGM1OSByZWxlYXNlMjItbWFpbnQKKzI5NjcyIGE0MmY2M2E4MGNjODczNmE3YTY1MGZjNGExNmUxY2FjZjQ1Zjk1NjcgbGVnYWN5LXRydW5rCisyOTY3MyA3ODVhZDA3NDAyN2JmMGUzM2ZjYmE1NDU5NmEwOTYxMGNhNTMzNTkzIGxlZ2FjeS10cnVuaworMjk2NzQgY2I3MWU3YzYyMGUyZjUwYTk3YWVmMjRjMDNlZDcyZTAzZGY3NTQ0OSBsZWdhY3ktdHJ1bmsKKzI5Njc1IDFkZjk4ZjY4ZDYwNzUzMGVhYWM4OThhYTU0N2FlMTY3NmUwODliYTggbGVnYWN5LXRydW5rCisyOTY3NiBkMzdmMTM3OGQ4YjhiZjlhZDM2OWFiZDA2MzJiYmIyZTI0NzcyODljIGxlZ2FjeS10cnVuaworMjk2NzcgZTAyMzNjNDQyNTAyNmVhOGIwOWNjYTNkODg5YmUzNDlkM2UxNzdjOCBsZWdhY3ktdHJ1bmsKKzI5Njc4IDdlNThhMTUwNDg3MjZmMmJiMDRlZTljOWE3ZjViOTU2MzBmMWY5NjIgbGVnYWN5LXRydW5rCisyOTY3OSAxY2Q4MTA2YmNkMjA3MWM5ZGY1NmExMTk0YTUyNGJkOWJjOGVjNTQyIGxlZ2FjeS10cnVuaworMjk2ODAgYmFmODdkMjZiYTAzZDUzN2JlYjkzZjYwODVkOWE1ZDAzYzUyNDQyZiBsZWdhY3ktdHJ1bmsKKzI5NjgxIDNmNTc3M2E4ODg4ZWZkNjY1YmE3NjM2YWE2ZmNjNDE4YmY2MWQzMGUgbGVnYWN5LXRydW5rCisyOTY4MiBkMzMwMDVmODM4OGU3NGUxOTU3ZGJhZmViMzdjYmVlYmYxMGE0OTE5IGxlZ2FjeS10cnVuaworMjk2ODMgZmY5MmNjMjdmZDFmZjMwZDU0MTViOGQwZTExOTBiYTcxNmUxMzRhZCBsZWdhY3ktdHJ1bmsKKzI5Njg0IGZmZWM2NzQwOTE0MDU5YmRlYTkxMjJjMzNiZGM3MTEwZjE5ZmRiNzggbGVnYWN5LXRydW5rCisyOTY4NSA1OGZiYTU5NTcyNmVhZGFmZWY2MWRjZDAyM2E3NWU2ZWFkZmY3NDFiIGxlZ2FjeS10cnVuaworMjk2ODYgMzgzNTg3MDI3Yzc0ZDFjMWI4MzczZGYwNzg4MTIwNTJkN2M5NGRhOCByZWxlYXNlMjItbWFpbnQKKzI5Njg3IGY0NjVkNjY5MmJkZTMzNTAzMzE0YzA1MzRmZDA5MWM0ODc5NThmYmIgbGVnYWN5LXRydW5rCisyOTY4OCA3Zjg3MDQ2N2MxODJhNzVlMGQ0NDg1NGY0YTc4ZDUyYWFkYjdmMjYwIGxlZ2FjeS10cnVuaworMjk2ODkgYjgzMDM0MTNhNTdlNWExNWRjMTdjNDljNzQ2OGU2NDZhZTZhNTIwOCBsZWdhY3ktdHJ1bmsKKzI5NjkwIGE1ZDFlMDgxNDA2MWM1MmFiMmJjMzdmNjFkNDFlNTFlZTA2MjgwOTYgbGVnYWN5LXRydW5rCisyOTY5MSBlODkwNTY3MTgyMzVkY2E4N2ExMjZlNTIyZGI1MzdlOTZmZDdmNWQwIHJlbGVhc2UyMi1tYWludAorMjk2OTIgN2NmYjUyZjk4MTM5NmZlZWU4OWU3MWIzZjIwNzZiNjk5Zjg3ZDU4YiBsZWdhY3ktdHJ1bmsKKzI5NjkzIDEyN2U0YmZhY2JiNzUwNDljMzE0ZTViMTA3ZDkyODJjYTc2MzA1NDggbGVnYWN5LXRydW5rCisyOTY5NCA3NmYzMmZiZTAzY2M1NGU1NTRmMjA0OWZhYTAxZWViNDMwMTEyZjQ0IGxlZ2FjeS10cnVuaworMjk2OTUgNTdmY2FjYmRjODg1YTU1N2MyMjMzZTIxYmEyNGU1ZGMzZTFkZjA1MyBsZWdhY3ktdHJ1bmsKKzI5Njk2IDIwZmE2MzI5YjU4ZmY4MDQwNjJhYTg5Zjk1MzJmOWI3YjRjNThlMTAgbGVnYWN5LXRydW5rCisyOTY5NyBlYjBjMGM4M2I5MmEwOWZmNmFkYzQ4NDZlZDZkMzVkYzllOTIwMTJjIGxlZ2FjeS10cnVuaworMjk2OTggZmZiZWFkMzQ4NGUxMDMzYjJjMzBjMzg2MGNkYWFkNmJiNDQyZmZkZiBsZWdhY3ktdHJ1bmsKKzI5Njk5IGM5NTE5MDUzMmMwY2I2ZDllMWUwNDQ4NzA2MzIxMThhYzQ2MWZhMTMgbGVnYWN5LXRydW5rCisyOTcwMCA1MmY2MTMzZTIwZDIwZWI2MDNiYmViMzg2ODQyM2Y5MWQyYjFjYzBhIGxlZ2FjeS10cnVuaworMjk3MDEgYWRiOTNmNGU5NzgwNTFlNDZmYWEwMGE3ZDhkZGUyYTk4MjY0ODAzNCBsZWdhY3ktdHJ1bmsKKzI5NzAyIDE5MDM4OWZkODE1OWM3YzQ2ZGRmOTk4YWUyOTc0MWIyYjNhM2RhYTcgcmVsZWFzZTIyLW1haW50CisyOTcwMyBlY2RmZjQ2MjAyYzBmZjM1Y2JlZjA1OWZiMTQ2OGRlZTE2YTE2MzRjIGxlZ2FjeS10cnVuaworMjk3MDQgNTI5NzE5YTUzNTBlNzVlZTMxZjFkNDM5NDM1NGRkNTI4ZmFiOGY4MSBsZWdhY3ktdHJ1bmsKKzI5NzA1IGNiMjQ4NzA0Yjc4NGUzYzcyNzQ1OTE5OWQ2N2Q2MTljNTRjMmEyYjggbGVnYWN5LXRydW5rCisyOTcwNiA3OTQyMGZhMjIyYjg1MDU5NWFjNTdkNDg4ZDNjMmE2Mjc4Yjk5ZjM2IGxlZ2FjeS10cnVuaworMjk3MDcgZTI2ZmY3NWRjZjY5MTFjMDFiMjMxZDJiZWExNjVlM2RhMzdkMGE5ZiBsZWdhY3ktdHJ1bmsKKzI5NzA4IGM0MmI2MzdiOTUxNDZkNzM4NmQ0ODVhMDFiMTkzNDRmMTk5N2Y5Y2UgbGVnYWN5LXRydW5rCisyOTcwOSBjODU0ODA2OTJjYWU5Y2Q5MDBhNTBhNjFkZmNiNGU5ZWQwOWViMmU3IGxlZ2FjeS10cnVuaworMjk3MTAgODdlNjliYWRhMTk1ZWVmNWY2Y2E1ZWY4YmM3NmQ1YjI1YTI0NzJmMiBsZWdhY3ktdHJ1bmsKKzI5NzExIDkzZjMwYzM4ODlhYTRiN2E4MmIzNDExZjE3ZjJjM2EzNTAxYjA2ZmIgbGVnYWN5LXRydW5rCisyOTcxMiAzZWU5NTE5ZWFhNGM0NzY3OGY2MGU1OTBlNTUzN2UxNmVkYjFhNWQ1IGxlZ2FjeS10cnVuaworMjk3MTMgZTlmODlkYmE1MDkzYjBhMzgzZDliNzIxZDAxOGIxODBlZWJiNDlhYiBsZWdhY3ktdHJ1bmsKKzI5NzE0IDQ0OWIyYjVjYWY1ODJmZGRjODkxMWVlN2QzMmQ2MGNjN2QyNzg1MGYgbGVnYWN5LXRydW5rCisyOTcxNSBlZGQyZWI4OGZkNmNhMGVjYjRkNjQ3YmM5NzlkYmM0OTdmZDk5NGY0IGxlZ2FjeS10cnVuaworMjk3MTYgYTBlZmE0Yzk1NjllMzE5NmRkYmJlNGUwZDUyNmRmMzUzYjFhMjU5YiByZWxlYXNlMjItbWFpbnQKKzI5NzE3IGU0Mjk5N2FjYzdmMWU3NTQ2ODY2ZjdlN2RjZGRkYmU2YTRkZjZlYTcgbGVnYWN5LXRydW5rCisyOTcxOCBhNGUzMDIxZWFhN2Q0MGI5ZWRiNjE0MzE1Nzg4MGFmMGU3OTM2OTU1IGxlZ2FjeS10cnVuaworMjk3MTkgYjEzODhmNThiZGI1ZDEwZTE2MDMzMmIwYzU5ZDFkOGJiYTA2NmFiNiBsZWdhY3ktdHJ1bmsKKzI5NzIwIDRjMDZiZGQ3ZDA1YzJmMzJiN2Y0MTJmZTM5MTQzOTlkNDZiZThkZmQgbGVnYWN5LXRydW5rCisyOTcyMSA4ZWQ2NmVkZmYzODdjNmQ0ODI0NDc0NzFiOGY0YjU5YzEwYjRlMWM5IGxlZ2FjeS10cnVuaworMjk3MjIgZmY3NjM5ZGRjYWYyMWNiNmM2ZmZjMzQxNjY1YTJkNTlhZTAwMzZkNyBsZWdhY3ktdHJ1bmsKKzI5NzIzIDYxYTBlZjU0MmI2ZjVlMWI1ODViMGE0OTg4NzBlYTdiMDk2MWIwNjggbGVnYWN5LXRydW5rCisyOTcyNCBkNjJjMWJhMzM5NjQwNjg2NGRhNWQwNjJkZTMzNWU3ZDBhMTZiZmNhIGxlZ2FjeS10cnVuaworMjk3MjUgM2JlMWJkYzc3OWUwNmYwNDk2MGFkOTFkYjJlMWYyOGM0ZmM2ZGNkZiBsZWdhY3ktdHJ1bmsKKzI5NzI2IDBlODk5MGU4OTJiNmQ2YTJjOGNjMzRjZDE1NWZiZTdiNDM2MDFjMzkgbGVnYWN5LXRydW5rCisyOTcyNyAwMmQ0OGVkNDQ3YTgzYjM0Y2FlODhiMzdmNzIxOGMzM2EyOGM1YTA4IGxlZ2FjeS10cnVuaworMjk3MjggMTQ5MTY1Y2RmZjdjZGM0OTM3MTk1MTNhMTQ2MzRmY2UwY2UwOTQzYiBsZWdhY3ktdHJ1bmsKKzI5NzI5IGNkZDI4OWEwNjYxNGEzYzM0OTcyNGZiOTlmMzQyMDVlOGQ0YjAwZDEgbGVnYWN5LXRydW5rCisyOTczMCA2NzliMmI4MjU0YWU2NjZkNzhmNmY1MzgzM2RkY2FmNWJiODhiYzg5IGxlZ2FjeS10cnVuaworMjk3MzEgNGJlMzRiZDczZGZmNDFlNjdhOWNlZTE3ZjY0OTIzYTU3MjQ3Yjc3YSBsZWdhY3ktdHJ1bmsKKzI5NzMyIDIyZDczMjViYTdhYzQ5Njk4MjNjZThjZWU2ZDU0ZDljOGU0NDlkNzkgbGVnYWN5LXRydW5rCisyOTczMyBhOGQxMzBhNmE3NGQ2OGU5YmEwNWE3OTUzZWE4ZjU4ZWYyYWQ4MjYwIHJlbGVhc2UyMi1tYWludAorMjk3MzQgZjIzYzM1ZjgxMDMzOTk5Yzg1Mzk4NzVjMDU0Y2FlMTQ2ODk5ZWMwMiBsZWdhY3ktdHJ1bmsKKzI5NzM1IGIxOTQ0M2JkZjQ0N2U3ZDgxYTA5Yzk3M2Y3NmExMTVlZDQ3OTE5MWUgbGVnYWN5LXRydW5rCisyOTczNiA2MGQ4MDlhMjViYWVjODEzOTA5MGE3NzRlYjQ4ZmM4MzQ2MzVkM2FlIGxlZ2FjeS10cnVuaworMjk3MzcgYjMyN2ZmY2ZlOWI3Yjk2MTRhYTAyODYzZDFmZTcxZTQ2MTQxMzU5MCBsZWdhY3ktdHJ1bmsKKzI5NzM4IDIwNWZiZjFiZDA3NTYyZjI0MjU2MDZhZGY4ZjkxMmZkNTk2YjgwOTUgcmVsZWFzZTIyLW1haW50CisyOTczOSA3NjYwMWZiMDc4ZDQwMTdjODA1Nzk0MmIyNzYxNDU4MTIzNzQ5NzkwIGxlZ2FjeS10cnVuaworMjk3NDAgMjQ0ZThmYmU0ZTIwNDU0MGQzZjQ0ZWFkYzM1YTgxNWY3OTQ3Mjk0OSBsZWdhY3ktdHJ1bmsKKzI5NzQxIDUzM2ViNTNhN2ZiZGQwM2VmNTQ2ZTdiMjBmNTY1NzIwM2UwYjcyYTEgbGVnYWN5LXRydW5rCisyOTc0MiBlMzhkNTAzMzdlOGNkODMwMjRmZGQzYWE0ZGRiNzk0MWIyZjUwMGQyIGxlZ2FjeS10cnVuaworMjk3NDMgNDIyNzlmN2QyNDRkZjc0YjI3NmIzMDk1MDE1ZTBmNWYzZmQ3YTA1MyBsZWdhY3ktdHJ1bmsKKzI5NzQ0IDM0ZmJiY2IxMDVhNDNiNjY1NjAyYjVlYjRmYjc4OWZjNGM4ZGM4NGEgbGVnYWN5LXRydW5rCisyOTc0NSA4M2NjYWFhYjNlNWU0NzdkNjJmOTc2NTA0ODVhMjkwOWY0NWJiNWJjIGxlZ2FjeS10cnVuaworMjk3NDYgNmI1NTZjNTQ1ZmZiMzhhZGJiNzBkYzQwOTJjMGJiODBiZDFkYTU5NCBsZWdhY3ktdHJ1bmsKKzI5NzQ3IGUyNzBjMGQ0MWEwNTA1N2EzMTE2NDdjNjI0YmQyYzljOGRhM2JkY2YgbGVnYWN5LXRydW5rCisyOTc0OCBjNDE5ZmNlMTUyOWU1N2JlNGFmMDJmN2JmYzFiMGFmNTg5N2Y2MWQwIGxlZ2FjeS10cnVuaworMjk3NDkgZmJjY2VmOGIzMTUzMzFiMTQyNzc4MmZjNDgyZmI0NGI5YWViZGM4MiBsZWdhY3ktdHJ1bmsKKzI5NzUwIDU3YzZlODRmNzFjZWM2NmEwZDdiODE1NjZiYzY5ZDA5NmQ1OTEyMmMgbGVnYWN5LXRydW5rCisyOTc1MSA5NThkMDcwODVkY2Y0YWU4MDhjNmRiOTZlZDNmMzVjZmZhMjA1NzFlIGxlZ2FjeS10cnVuaworMjk3NTIgNTBjOTU4ZjcwM2UzMDI4OWUyNmE2YzA2OGYwMDk4NjdiNzQ4YjU2NyBsZWdhY3ktdHJ1bmsKKzI5NzUzIGQ2NjEyOWI1NTFkYjRmYWUyMDhmMjdhYzU5YzQ3NjZmYjZjNTVhMzAgbGVnYWN5LXRydW5rCisyOTc1NCAzYWM0NjRjMzczNzRjNDM4NGZlZjE4MTUwNGRjYzM4MTk4NzVlYTljIGxlZ2FjeS10cnVuaworMjk3NTUgN2MwOGY2Y2I5MGU0Zjk2ZTEyYzkzMWVkNDI4NTA0NWZlZjVhZDZmMiBsZWdhY3ktdHJ1bmsKKzI5NzU2IGQ0NDExZDk1MGQ0ODMyNTUwMzQ1OTYwNWRhMTA1ZDkyN2U1MmVmMDkgbGVnYWN5LXRydW5rCisyOTc1NyA4NzUxNDBkMzBlMTc2NTYwYWRmNDI2ZGRmNTM0OWMwYjhjMTVmN2RjIGxlZ2FjeS10cnVuaworMjk3NTggZWVjOTk3ODM3MTZjM2FjZGM0YmQ1NDJmYTYwMGZjYTM5NGI2ZTU3MSBsZWdhY3ktdHJ1bmsKKzI5NzU5IGNlNjQwZGFiMTBlNDMyYzg3OTg5YjgwZTRjNTVlNzE0ODdkMjA4Y2QgbGVnYWN5LXRydW5rCisyOTc2MCBlZmU1OGMxMGNjZjE2ZDAwNjZiZGEyMTI0MTg0ZDlhM2I2OGY2ZjdhIGxlZ2FjeS10cnVuaworMjk3NjEgNGVkMjMwYTBjOTMxZWIwZjFjYTUzZGE1ZDlmYjE0ZjRlMzQxYWU3ZiBsZWdhY3ktdHJ1bmsKKzI5NzYyIDQyYmZjOThkMjk1Yjc4NTFlMTcwMTc3ZGVmNzEwZmYyNDkyODM0NGEgbGVnYWN5LXRydW5rCisyOTc2MyA5NmJkYjQ0NzYzYzM2ZGYxOTY1NDE5Mjg5OWY0YTg1YmJiMjE3YTg4IGxlZ2FjeS10cnVuaworMjk3NjQgYTI0YmM2YTJlMmNkZmE2NjYzY2EyNTA3MmRmNGM2OWI4YzUxM2QzOCBsZWdhY3ktdHJ1bmsKKzI5NzY1IGIwYjYwODU5ODE3MDIwNWZkMTc0MGE0MzM0NWJlNzQ0NTcyZTc4MWEgbGVnYWN5LXRydW5rCisyOTc2NiAwOTM0YThhMGJhMGQ4NTRmYWQzNDJkYjI1OGQyMzY5NzdmZWFmNGE0IGxlZ2FjeS10cnVuaworMjk3NjcgZTk2NTc1ZjdlOTZhN2VjMmYwMDRhZTcxY2RlMDUyYjhhMmUzMjhmZiByZWxlYXNlMjItbWFpbnQKKzI5NzY4IGQzMWRkYzY2YjFiNTUxZjk5Y2ZmZTRmODZmYmYzYTQzOWJjYTBiOTUgbGVnYWN5LXRydW5rCisyOTc2OSAzMTZmZGRiYzFlMDdlZWViZGE4MDZlMTM2MDI4MWQ2Yzg1NDcwNmQ5IGxlZ2FjeS10cnVuaworMjk3NzAgZmY1YjUxMGViYTZiNjc5NDViZjgzMTI0NjZkMDdjMDllZDM4OTU1ZiBsZWdhY3ktdHJ1bmsKKzI5NzcxIDZkMGNkODBlMjgwNDMwZDg4Y2IwMDIxOTg4NTg3Y2UyODBiZDlhMmYgbGVnYWN5LXRydW5rCisyOTc3MiAxYmQ5ZDlmMDJhZDFiNDU2MmM4YjAzOGI1ZDA2NGE2OGM3YTM5NGVkIGxlZ2FjeS10cnVuaworMjk3NzMgYmVhOTkxZTY1ZmZkMzljODllODEwOGNmZDU4MGRlZGEzNDk4M2E1NiBsZWdhY3ktdHJ1bmsKKzI5Nzc0IGJhY2Q2NzhiM2M0Y2VkMjM0YzJjNmQ5NDM0YWUyN2NjMTYyODMwNDMgbGVnYWN5LXRydW5rCisyOTc3NSBmNmU0NjU4NWI2YjM0YzBkYzZiZTk5NGMzZTMxNDQwMTEwOGQyNzg2IHJlbGVhc2UyMi1tYWludAorMjk3NzYgYzc3NDM1ZDg3YzJlOTIwZGM0MDU2MDVjOGIzODM0Mzk5OTc0MzNiNyBsZWdhY3ktdHJ1bmsKKzI5Nzc3IGRjZGUyNTM0N2U5Mzg5MDFkNTFhM2ZlZDczMDIyYTgyOTEyYzAyMWYgbGVnYWN5LXRydW5rCisyOTc3OCBlM2I4Zjc3YTY5ODAwYjJjYjJiMDhkZDA5NWVkNjRkZjBjYmNiNWI1IGxlZ2FjeS10cnVuaworMjk3NzkgZmY3YWQzMmM5NTU0ZWRmMjhiOWRkNzJkZjY0YTYwYjkzMDlmNjI3ZSBsZWdhY3ktdHJ1bmsKKzI5NzgwIDBjODk5MzdjZWJlZDM3NmU0MGRlNjlmODYxNDFmODA5NTI5ZTNiZjcgbGVnYWN5LXRydW5rCisyOTc4MSAwODA4MzhlMzhlN2M0YWU4NGQyMjgxMWUxODZiZmE3NmIwMmIyODZlIHJlbGVhc2UyMi1tYWludAorMjk3ODIgMzJkZjhkNTk2MGQxODJmZDdjNGExMWQyYWYyZTJiYzNmYThkZTI0MCBsZWdhY3ktdHJ1bmsKKzI5NzgzIDI1MWRkMTM2YmFjM2JiMDMxNTdjNzkzZDA3MTMyZDUwMGRiZWQwNjIgcmVsZWFzZTIyLW1haW50CisyOTc4NCBlZjFlMzgzMmE5ZWEyMDIzNTI3MGMyYjUzYmJlNzI0NGIzNDU5YmRmIGxlZ2FjeS10cnVuaworMjk3ODUgNDAzZGNiYzkwNDNmNjg3NGQwZmZhZGI0Y2QxMTQwZjM5NzcyOTNjZSBsZWdhY3ktdHJ1bmsKKzI5Nzg2IDdmYzcwNGNjYTE4MTNiYjNjMDdmYzUxM2ViY2EzYWYxNTQxOWNhOTMgcmVsZWFzZTIyLW1haW50CisyOTc4NyBiYWE0N2Q3ZTg0ZTI1ODM2MDkyNjI2YWIxMjg1OTM3NjkxOWI2ZjdjIGxlZ2FjeS10cnVuaworMjk3ODggZjJmYzM4ZjhjYTlkZTJlOGI1MWQwMzY3NDYwZDdlYWUzYjMyNmZhYSBsZWdhY3ktdHJ1bmsKKzI5Nzg5IDhiNjM4YmU3NmNiZTI0MGI1NjRkNDE0NmJmNzQ3NjA5NmM0MmQwZTQgbGVnYWN5LXRydW5rCisyOTc5MCA0MWZmNTBiNGQwOTc0MjNiMGYyYTUzYzZkOWJlYTQ0NmJiZDU0OTc5IGxlZ2FjeS10cnVuaworMjk3OTEgOGU2MDEzYmJlN2E3YzNjNGZlOTlkMGE1NDcyYWQ5NTUwZjdkOGI0MCBsZWdhY3ktdHJ1bmsKKzI5NzkyIDNmZDhjMmFmZjMwNTI5NzM5OWZmMWZiZjI1Nzg4N2ViZWMxNGFiOWIgbGVnYWN5LXRydW5rCisyOTc5MyBhMjdhYzlkMzJmMjMzOGZhYWM0Zjg5NTA5ZTllMjBmMzBhYWY5YWEwIGxlZ2FjeS10cnVuaworMjk3OTQgYTRkYmEwNThmNzBlYWZmYzNmOGIzNmNlMzE4NWQ5YjdkNzA0YjczZSBsZWdhY3ktdHJ1bmsKKzI5Nzk1IDkxMGZhNzM5ZjRhNGU3YzM0ODUwOWMxZjkzZTVkMWExYjUzZjNmZmMgbGVnYWN5LXRydW5rCisyOTc5NiA5MGU5YTNlY2RhNDQ5ZGM2YmIxYTZhNWQ5YWI4Nzg4ODhkZmNlODlhIGxlZ2FjeS10cnVuaworMjk3OTcgZDQxYzRiOTVlNzE0ZGUxOGZmODMyNDc0OWExMWEzZTI3MjdiMzgyNyBsZWdhY3ktdHJ1bmsKKzI5Nzk4IDY4MDM2MGU2OGEwNjNhNjc4YTg4YTUwNTI1M2E3OTAyNGJhYzNhYzIgbGVnYWN5LXRydW5rCisyOTc5OSBmYWRjYWI2NWFhODc0YjY0OTIxNjk4YzMyZmI4MTQxZTI1ZWM3MjJhIGxlZ2FjeS10cnVuaworMjk4MDAgMDY3NTRkNzNjNjNlNDY4N2JlNjhlMDdiYjQzNjI3MDdjYjQ5YjZmZiBsZWdhY3ktdHJ1bmsKKzI5ODAxIDA1ZDZhZGUzZTkyYjRiMWM1ODE1ZDk5ZTI4NzA3MDUzMWFmZmI0YTYgbGVnYWN5LXRydW5rCisyOTgwMiA4MjM4OTZjZTJlNWQwNTY4Y2I5YzM0MzdmZTVlMDEyOGMzZDIxNTJhIGxlZ2FjeS10cnVuaworMjk4MDMgMmIwZTgxNWMwYjMwN2ZmZTNjNWRjMjEzMGYwNWU0NDEzZDc5MjgyNyBsZWdhY3ktdHJ1bmsKKzI5ODA0IGVhMWQyMDUwZDdkYWFlY2Y1NjJhZGY1MGY5MDVjNjk3Zjg4Y2FkYzIgbGVnYWN5LXRydW5rCisyOTgwNSBmM2E2OTAzN2ZkZjBmYWQzYTU5ZjAzNzU3ZTcwZGY0YmJjNDNkZDYyIGxlZ2FjeS10cnVuaworMjk4MDYgNDRkN2VhYWUwZDhkMzhiMjI2MmQzMmNjYmVlZTBhNjc2NWM0ZWE1OCBsZWdhY3ktdHJ1bmsKKzI5ODA3IDMwODZlMTExNzgzYTc5MTA0MWI4Y2Q4ZGQ1MDNlZjlkMzAzYjY3YjkgbGVnYWN5LXRydW5rCisyOTgwOCA2MGJkN2FmMDMyNGU4MGNhMzc3Yzk0NDU0NDgzNDNiOThhYzJmZWQ2IGxlZ2FjeS10cnVuaworMjk4MDkgNjAxYjhmYzEyZmI5NTNhMTg3MGM3ODkyNzdiYmRmYzIzYTM5NjhjNCBsZWdhY3ktdHJ1bmsKKzI5ODEwIGYzNDAwZWYwMmE0NTljNDdiMjAxOTkyNWViZTgwZDUyNGFhMjgxOTIgbGVnYWN5LXRydW5rCisyOTgxMSBjNzY3NjJkNjZmNDIxYzE3MmU1MmMwMGEyNDU0YmMyMDk0NzNhOGZlIGxlZ2FjeS10cnVuaworMjk4MTIgOTU3Y2EyYzUxNzkwNDlhMzU4M2U1NDgyODk4NzBhMTZhNGI2ZTA5YSBsZWdhY3ktdHJ1bmsKKzI5ODEzIDEwODcxZjQ0ZTdkYjI5ZDZjZGY2MzhlNzllYTQxZjhjNmQwYTE0YWUgbGVnYWN5LXRydW5rCisyOTgxNCA3MzNlNGI5ZDU5MmViY2ViMDk0YzI5OWQwOThmZGQ1OGFmMTFlMzk2IGxlZ2FjeS10cnVuaworMjk4MTUgYWM3ODcyZTU1NDA1OWJkOTg5NDAzNDdhYWVhYTE2ZTcyY2NhNWExMiBsZWdhY3ktdHJ1bmsKKzI5ODE2IDY1ODljMzdjMGRkZDcyYjNmM2M4ZTdmODQ4OWU3NGI1MzZmMDUxYzggbGVnYWN5LXRydW5rCisyOTgxNyA0ZWMxOTAyZWU2Yjc3Y2E4ZDk1YzU3NDAxYzk5NzQyNjBmZTgxMTA3IGxlZ2FjeS10cnVuaworMjk4MTggNTYxMTg1ZDEzZDVjYzQxZjc2MTJkNjY4NGVjYjYzOTdkZmUxMTE3ZCBsZWdhY3ktdHJ1bmsKKzI5ODE5IGY3ODUyNzBjZWUxOTdkMTcxNGM4NTlkMzhkM2RhNjE1NWIwMmNmYmMgbGVnYWN5LXRydW5rCisyOTgyMCAzYzY0ZWY4N2Q1Zjg5ZjU0NjgwNDRiMjg3NDQ1ZGJjY2ZiMTJmYzZhIGxlZ2FjeS10cnVuaworMjk4MjEgMDY3YTJlZjZkOGE5ZjE2ZjNiOGJiNDg3ODBlZWQzODAyYjI2YzAzNiBsZWdhY3ktdHJ1bmsKKzI5ODIyIDlmNDY5ZGE1OTFhOWU3ZmFmMWM1NjA4OTgyYjU1Mjc1MWEyMjRkZDAgbGVnYWN5LXRydW5rCisyOTgyMyA1NDdkZTQwN2MxMzM0NzNlZDNmMjM5Y2I2NDI1NDg5MGI0MmNjMDBhIGxlZ2FjeS10cnVuaworMjk4MjQgM2UwMmVhZDhkZTA1ODAwNzk3OWYwYjc0M2I2MmZiN2ZhNTY3ZjI1MiBsZWdhY3ktdHJ1bmsKKzI5ODI1IDQ2YmI5YWQ4MzE4ZjE4ZmE0ZDU0Y2U5ZmNmZDczNDA2NmJlMGRmMWEgbGVnYWN5LXRydW5rCisyOTgyNiA3YjkwOTY1MDFlYTgwZDgwNTllZWNiOTg2MGM4MTYzZjg5MGUxMDM2IGxlZ2FjeS10cnVuaworMjk4MjcgYWJmNTY1Y2Y1YjU0NzRjODJlNGU5MDFjZTI5MjcxOTU1MTIzZThhMiBsZWdhY3ktdHJ1bmsKKzI5ODI4IDEzYzFhYTE1ZTBmYjVkYTk0ODM3NTEzZDYyNGVlMjA4MzI0ZWEwYTAgbGVnYWN5LXRydW5rCisyOTgyOSBkYzM5OWU5Y2FiODk4NmU5MjcyYTM4M2NmNWRmMjk5MmVkZGJmYjBkIGxlZ2FjeS10cnVuaworMjk4MzAgMzIyYjY2NGEyMDIyZDg3ODRhOTYzMzg0Nzc1MjZiY2Q5MjY1YmZhZSBsZWdhY3ktdHJ1bmsKKzI5ODMxIDM1ZjEyNWQ1MmNmNWE4MWIxMmMwMTBiM2VhM2EwYjUxNmJiZGM2NTEgbGVnYWN5LXRydW5rCisyOTgzMiA4ZmUyOTZhZDU5MzZiMzcwMjhiZWQ2ZjI1ZGJmZmNiMWRlYjBkYmU2IGxlZ2FjeS10cnVuaworMjk4MzMgNzcwOTNkNTdjY2E5OTdiZTY0ODVjODJiMGE2OTViMDA3M2UxMTk5ZSBsZWdhY3ktdHJ1bmsKKzI5ODM0IDNmN2FlYTViOTNhMTg2NzkyODAzMmEzN2IzNTNhMTVkZDc4NDc3YmMgbGVnYWN5LXRydW5rCisyOTgzNSA3OTExODYzMmUzN2U0MDFlMDc5Y2JlMDA4ZmI1MmI3NjllZDEzMGFmIGxlZ2FjeS10cnVuaworMjk4MzYgNTRhNzRiMGRmZTI2Y2ZhNjJkOTY5YjIyZTUzNGNjZjMzNWUxYzBkYyBsZWdhY3ktdHJ1bmsKKzI5ODM3IDgyMzZkNTI4ODQxMjU2YmMxZWQ3NzhiYzAwNjA5NDcwNzY1YTAzZmIgbGVnYWN5LXRydW5rCisyOTgzOCA4NzhmZWRjNmM3ZTdjNGU1NTE0MzBjMzJiZWRkNjQxNGUzMDhkNmNjIHJlbGVhc2UyMi1tYWludAorMjk4MzkgNmUyMjhlMWFmZjM4NTg3ZTAxZTMzMTgzN2E0YjI2MTE5MTFjNjczMiBsZWdhY3ktdHJ1bmsKKzI5ODQwIGI4MjQyOGIxNzk3OGZiMGRiNmUwYmY5MDUyZWE2ZDhhOWIwMjRmNTEgbGVnYWN5LXRydW5rCisyOTg0MSA0ZjJkNTE3NGJkNGFjNWI4ZWViYTgwZjBjMjNiNGEwZTU3NzhmYTU5IGxlZ2FjeS10cnVuaworMjk4NDIgZDFkODk1OWIxMzhhY2ZlZDlmNjQ1MzAyODNhZGY3NDAyM2FlZDIxMyBsZWdhY3ktdHJ1bmsKKzI5ODQzIDA4YjcyMGNkMzg3ZTMzNTk1Y2I2YTY1ZDFmMmMwZDU2Njk4NDNjMjQgbGVnYWN5LXRydW5rCisyOTg0NCAwYzdjYjI3NDZkODY0MzQ1OGVkYTJkZWYxNzBkNGRhODU5ODQwYmZjIGxlZ2FjeS10cnVuaworMjk4NDUgYzFjYWE1YmZmMjkyYWY1MmUwZjAyNjg0YmFkMWIyOTU3ZDFkMTYwOCBsZWdhY3ktdHJ1bmsKKzI5ODQ2IGMyNjA0ZDY5YWE1ZDUyYmMyZDY4M2NiYzNhMjc4MGRiYjU4ZjNiMTEgbGVnYWN5LXRydW5rCisyOTg0NyA5ZTQ4OWEwZGY3YjVhZjlkNjY4ZDY1MzkwYzhiNjIwYTliYWJlYWM1IGxlZ2FjeS10cnVuaworMjk4NDggM2QwZTAyOTc2YmMzMzY2NDdhNzk1OTViZGU1MmNhNjA0ODllN2M4NyBsZWdhY3ktdHJ1bmsKKzI5ODQ5IGUxNjg3NjNlODYxYTJjNDkxMjdmY2M4NDdmYmM1YzFiYzRhNmQ3ZWQgbGVnYWN5LXRydW5rCisyOTg1MCBkNGNjOTcxZDE4YTYzZTEwZmRmZGM5ZmJkZjkwMTYyMmM5MzJhMTk5IGxlZ2FjeS10cnVuaworMjk4NTEgMTM1YmIxMTIxNWEwOTRiZTg2MmFiNjk5MjRiODU3MzhlOGJlZTYzNCBsZWdhY3ktdHJ1bmsKKzI5ODUyIGQwZjJkMWYzZmM4NTQyYTYzMDljMDA5YTNiMDcwYzM3ZThiZDdiN2IgbGVnYWN5LXRydW5rCisyOTg1MyAwZjI3NjYzMDJiYTBhOWYzNjhlNzhiNTQ0NWRiN2UwZGQ0Y2IxMGZiIGxlZ2FjeS10cnVuaworMjk4NTQgZDJmYjQyZWM4YmI0MjJlMzE2ZGEzMzM2MjdmOTQ4OGYxYTIwNzFjMCBsZWdhY3ktdHJ1bmsKKzI5ODU1IGFiMzc2M2Q0NzdjYzQwOGE2NzhjZDEzZjFiMWM0NjljNTQ1MjViMzIgbGVnYWN5LXRydW5rCisyOTg1NiAxODg1YjJkNjM5M2E4YWNkNzA0YzI4Mzk4YzFhOTNjYTY3YWUxMGNkIGxlZ2FjeS10cnVuaworMjk4NTcgZjhhMWJhNDQ2MTU4NDY5Y2VjNjg3YmMyOTE3ZDMyM2YzODdmNTFmNyBsZWdhY3ktdHJ1bmsKKzI5ODU4IDExOTE5N2ZhNjE0MDhlZDVhYjgxMDMxYmZmYmFiZTRiYzFhZDMwMmMgbGVnYWN5LXRydW5rCisyOTg1OSAzZDUyM2RiYzk5YmVlYTRhNzk0NThiMGQxM2NiNGU1MzZmNTIzMDBmIGxlZ2FjeS10cnVuaworMjk4NjAgZTc0ODZmM2VmNzU5YThiMmU1NDI3ZjQwMGUyZDk3YTJkZjgzMWMzZCBsZWdhY3ktdHJ1bmsKKzI5ODYxIGRmNTU2ZmRlYzY5ZDA1ZjM1NDc4ZTFkYmM1YzZlOGI0OGJjYjRiNDkgbGVnYWN5LXRydW5rCisyOTg2MiAxZjgwMDA1N2I2MzcyOGY1MjU3YTFhNjczNDc2ODI2NjQ1NDYxZWMwIGxlZ2FjeS10cnVuaworMjk4NjMgZGY3MTk3MzZlMTUxYjU3NjQ2OGMzYzBmOWNiOTZmZTYwZmM0ZGNjYSBsZWdhY3ktdHJ1bmsKKzI5ODY0IGZjZjk3MzRlMTAyMTRiZTNjNGYzNzcwNzVhM2NhYzIzMmFiNmI1YzMgbGVnYWN5LXRydW5rCisyOTg2NSAxYmFmMWNkZGMwZWNkOTY5YzY3NGM3YmNmNzRjOWI2YTNlMjA0NzYyIGxlZ2FjeS10cnVuaworMjk4NjYgOGEwMTBjMjdkNmNiOWEzNmNmZTVjYTlmNTU0NjZkNDYwYWI5ZTQzNSBsZWdhY3ktdHJ1bmsKKzI5ODY3IGE4Y2FkZmIwZmY4MzJmNmJjYmNmMGRhZDdmMzJlZDkwNjZhNTgwOTQgbGVnYWN5LXRydW5rCisyOTg2OCBkMjA3ZDFkNzhjNWQ1YTFmYmRkNDI5Yjc1NWIyNDE2ZmJmMWM3MjAzIGxlZ2FjeS10cnVuaworMjk4NjkgNDgyYWUwNTViYmQ0ZmEwYWM1YzRjYWU1ZDU3NjgzYWQyMGNmNzI4ZSBsZWdhY3ktdHJ1bmsKKzI5ODcwIGJiMzhkN2FiYzNmY2RjZjc4YTk3M2ZjYzcyZDFiNGQ0MjI2NGUzMDggbGVnYWN5LXRydW5rCisyOTg3MSA0OTFiZmM0YTBmNWJiNjIyOTdhN2NjN2FhYmE0ZGUzYzk3NTRlNWI0IGxlZ2FjeS10cnVuaworMjk4NzIgYjA1NWU3ODgzYzgzZmM1Mjc0NjZiZDExMzkxZTU1YWY2YmU0YWYwZiBsZWdhY3ktdHJ1bmsKKzI5ODczIGUzZmFlN2I2YzIwNzhmNGQ4YWM1NmUxMWY3NmUyY2YwOGNmZDdlYjYgbGVnYWN5LXRydW5rCisyOTg3NCBiMjdjMWNhZDc3ZWE3MDc1MGVjNGY5NmZmZjgzZDEwYjRhODBmNzM5IGxlZ2FjeS10cnVuaworMjk4NzUgYTBkNzUyYmU1NTc3MzBiZTMxOTAyYTk0ZDliMzk4ZTM5MjY5NTE1NyBsZWdhY3ktdHJ1bmsKKzI5ODc2IDI4MTJjYWNlMzAxYWNkN2ZlNTkyNTNjNDJjZTYxY2QwNWYxZGNlYzQgbGVnYWN5LXRydW5rCisyOTg3NyBjYzYyODU0ZjYzNmNmMjEwN2E3ODM2MTA1ODRjOTFhMmQ2ZmZiN2VlIGxlZ2FjeS10cnVuaworMjk4NzggNDM4MDQzNWZlZjY2NTA0ZjRjMWQ0ODU4MGE4MzcyNDc4M2ZmMWViYSBsZWdhY3ktdHJ1bmsKKzI5ODc5IGNiZDgxZDA4YzQzMDFjNGI4MGNjZjkzZGJiOGI0MmIwZDgzZTk4MWIgbGVnYWN5LXRydW5rCisyOTg4MCA0ODgxNjAyMWY1ODgyOTIxNWZjNWU5ZWEwOGE1N2NhMGZmZmNlZmRlIGxlZ2FjeS10cnVuaworMjk4ODEgMWI0N2I1NzZlMGQ0YTYxZDE1ZjhmMGQwOTlkMTBiYjBlOTQzYWJiYyBsZWdhY3ktdHJ1bmsKKzI5ODgyIGIzODUzM2UwMWQ2NWZjOWZhOGJmOWQ3YmZkZWE0ZmUzODdmYmY0ODEgbGVnYWN5LXRydW5rCisyOTg4MyA3MDBlMTgyYjI5MDE5MzQyNzdjM2FjMjcwMmFhOTZlYjg4MjdkNzJjIGxlZ2FjeS10cnVuaworMjk4ODQgZjcxMDE3MDIyZmNlY2M2MmVmYzc1NjdjYjkyNzQ2M2E5ZDZmY2M2NCBsZWdhY3ktdHJ1bmsKKzI5ODg1IDNmYTZkZWQwYTFlOTQ4MGZlM2JkODM3YjVlZDVhNjljYmE3NDcyOGQgbGVnYWN5LXRydW5rCisyOTg4NiA1NDQ3MjdkNDFmNTY4N2ZlYzk1NzllZWFkYTIzNTI4NWEyM2JiMjQ4IGxlZ2FjeS10cnVuaworMjk4ODcgMjY5MThlMmVmZDE3N2FhN2I4ZDE5MmZlOTIyM2I5NGNhNmI1Y2QxMCBsZWdhY3ktdHJ1bmsKKzI5ODg4IDFhMDk0ZWYwZmM4NjJjNDRiZjBhMWE4NjY2MzI0NjAxMGMwMzMzYTIgbGVnYWN5LXRydW5rCisyOTg4OSBkZGU5YzYyYTcyZmUwM2FiMzBjNjRhOTBiMmVmMjQzMDFmNGEzNWE4IGxlZ2FjeS10cnVuaworMjk4OTAgNTY5ZTE5M2JmNTlmY2E3MDM1MTkyMjJmNzFiMTlkMzE3MmI0Y2NjOSBsZWdhY3ktdHJ1bmsKKzI5ODkxIGYyODM1NTMxMDg2NzA1NWI1MTgzYWJjMTdkMzk3Zjg4ZTZjZDVlY2QgbGVnYWN5LXRydW5rCisyOTg5MiBkNTg4MjRjZWIzNWQ1ODY3OWQzMjEwN2NiNDQ2YzRlNzFkZjFlNTg3IGxlZ2FjeS10cnVuaworMjk4OTMgYmQwOWUzYTJkNTM2NDBlODNkY2FiMmY0OGMyZTU4MTE5MzY3NjU5MyBsZWdhY3ktdHJ1bmsKKzI5ODk0IDAzMDM1NTIzYjM4NWVlOTYzYmIyMzA3ZDgyYzFhOTJmNzE5ZWExMjYgcmVsZWFzZTIyLW1haW50CisyOTg5NSAzNWY0NDRjYTVlMDVjMzczNzAxNjc3YTAzMzM0OTk3MzljOWZkOGY5IGxlZ2FjeS10cnVuaworMjk4OTYgMWU1MTRlMzc3NjEzZTE3NjgyNjAxOTFiYmM5YWYzYjZlYmQxOTM1MyBsZWdhY3ktdHJ1bmsKKzI5ODk3IGFiNmM3YjI3YTRjYjkxNGNkOThiZjZmNmM3YzZhNTE5OGVmZDUxYzMgbGVnYWN5LXRydW5rCisyOTg5OCA5ZDZhZWQyZTYwZTI4ZjY3NzdkNjVlNmVjMDhjYTZmNzRiMDMyMTJlIGxlZ2FjeS10cnVuaworMjk4OTkgNGQ0NzE1MjZhY2UxMjRiOTlkNGJkMTJjM2E3NDA3ZDE5YTVjYzlkNiBsZWdhY3ktdHJ1bmsKKzI5OTAwIDNkMjg2OWRlMjMzNmNiMTI5M2ExMjkwMTIxY2MzMmZiNTU1ODcxYzQgbGVnYWN5LXRydW5rCisyOTkwMSA1MWQwMDU3ODFjODY5MTRmNmExN2RkNmFkZTE0OTYzZjNmNjk3ZjExIGxlZ2FjeS10cnVuaworMjk5MDIgNjA5YjVmMzdmMTRmZTJiZDkxZjRkOWM2MTY4ZGQzOTI1ZDZkZDk2OCBsZWdhY3ktdHJ1bmsKKzI5OTAzIDQ1NzRiNjU5ZWMzN2FiZDg4N2IyOWU0N2I2YTQ4OWMxNWJhZTFlM2UgbGVnYWN5LXRydW5rCisyOTkwNCA2NTExYjE2ZmZlODlmZmJlZmI5ZjdjMWM0NTg2ZmJlOTI1YjQ5Y2VhIGxlZ2FjeS10cnVuaworMjk5MDUgMDEwM2YwYjc1ZmUyNjM0N2U4ODYwOGVkZWU4YzY1NGMxMzU5YmYxYSBsZWdhY3ktdHJ1bmsKKzI5OTA2IDRiZWUzMzc5MDk0MGNjZGRmMjMwYTBkNDlmZjM3YjQzYTNhNGQ2ZDcgbGVnYWN5LXRydW5rCisyOTkwNyBiMDQ4OWE2MDU5N2Y3NDE0MWM4YzgxMmJlYjc0ZjFjY2ZlNGU4ZTRhIGxlZ2FjeS10cnVuaworMjk5MDggYWQ3NWVmZTJmMGE2NmM3ZmRkMWYwNmE4ODBhZGQyNDlhOGRlNGM3OCBsZWdhY3ktdHJ1bmsKKzI5OTA5IGM1MjJjOGM3MWNhYjBjMTBlODU2YzU3M2MwMTg2MWIzMmE2ZmU5YjkgbGVnYWN5LXRydW5rCisyOTkxMCBjNmZmZDhlNjFjY2U2ZGJjYzBmMGExMzhmNmU2NTliMWM3M2U2OTcxIHJlbGVhc2UyMi1tYWludAorMjk5MTEgNmQ1OTA2ODUzYTdkOTA3ZTY4MzU1MDFhZjQ5NTNkMDZlMWJjN2E5ZiBsZWdhY3ktdHJ1bmsKKzI5OTEyIGMyYmU0ZGMyNTQwNTU0MzU4NzA4OTdlOTcyOWYzNjA3YzczNThhM2QgcmVsZWFzZTIyLW1haW50CisyOTkxMyA0YTAxMjA5OTI2OTE2ZDlhYjUzZTAwODYwYTRlOWIzNDc4ZWY3NTQzIGxlZ2FjeS10cnVuaworMjk5MTQgNTdkMDMzNzVhZWFkNzdhODU5OTUwMjQ5YWI2ZmQ4NmFlMjJiZmRhNCBsZWdhY3ktdHJ1bmsKKzI5OTE1IGQ0NDk0NWI4MWZmYWUwMDc3NWYxMmZiYTg1ZjE3YjczZDQ4NDU0NjEgbGVnYWN5LXRydW5rCisyOTkxNiBjNWIxMzA1MDgxZGZkMTI5OWZjYTljNTk1YTNiYjUxNTY1MTYwNTFmIGxlZ2FjeS10cnVuaworMjk5MTcgYWEwZTE5YjZlMWU3NWEwYzU3NGFiNzczZjE1OGE0Y2NjM2E5NmFkZCBsZWdhY3ktdHJ1bmsKKzI5OTE4IGEzNTBhNDg3ZWFjMTFiMzY1NTljOTU0NmQ1MGExZWUzMTk3MWQ2ZTggbGVnYWN5LXRydW5rCisyOTkxOSAzNjcyNTIyMTRkYWYwZjI3NTI5YzBmYjRhNGFjN2Y1NmVlYjI2OGE1IGxlZ2FjeS10cnVuaworMjk5MjAgYzEyNThiMWEzNmM2ZjY4ZGY2YzAxOWVhZDk1MzVmYmE2OTUzYTFlZCBsZWdhY3ktdHJ1bmsKKzI5OTIxIDRhYzM4ZjI4Y2QxMGExNWNjYzkyNGM5NGMzY2RiMzI3MDFlMmYzZjIgbGVnYWN5LXRydW5rCisyOTkyMiA3NDIxMzY3Mjc0YjQ1NDgxZWYyNzFkYTYyN2RmYzZhN2Y1MmY2YjQ0IGxlZ2FjeS10cnVuaworMjk5MjMgNzc3N2RjZWI2NmVlMTQ0Y2NjNTY1ZmMzYjU2NjdjMDQ3ODU1M2I2NSBsZWdhY3ktdHJ1bmsKKzI5OTI0IDdhMDliMzZjYTM3OWMyYzA3ZDZkNzkxOGMwZmY0ZTA4N2YyNDQxMTAgbGVnYWN5LXRydW5rCisyOTkyNSBiZGRjNDEzMTUzMzY1MGQ4YmRkZDg1NjE1MGZmMmIzY2MwNzI4YWFlIGxlZ2FjeS10cnVuaworMjk5MjYgOGVhMmUzNTk5N2EwNGIyMDU0MzBlODE0NGMyZTljMDM1NTEzYWY1OSBsZWdhY3ktdHJ1bmsKKzI5OTI3IDhiOTg4YTA5ZGU5NmRkYTY2OWFjOTc1MGFmZTM2OTJlZTE3MGRjZGQgcmVsZWFzZTIyLW1haW50CisyOTkyOCBjYTAxZjNkZTY2NGU4YjYwOTMxMjkxOTVkNjQ0ZjU5N2QwMjU3OTQ1IGxlZ2FjeS10cnVuaworMjk5MjkgY2I4NWFhZTc4OTgwMmFkNjdhNjU1ZWM3NGJkN2M4ZTAxMzkwMGMyNSBsZWdhY3ktdHJ1bmsKKzI5OTMwIDYwZTU3Nzk3YjhlNjFhMzExY2FhMjllYTY0Y2I1NjhiZWM2MGNmODggbGVnYWN5LXRydW5rCisyOTkzMSAyNzIwNGYwNzEyYTI2ZWU4YzQ1OGNmOTIxZjU1Yjk2OGIzZjkzMDY0IGxlZ2FjeS10cnVuaworMjk5MzIgNWM3YTNhMTczMTBkMWEyYThkMzZmNzNlMzAzOWFjZWQ2NmQxM2IzYyBsZWdhY3ktdHJ1bmsKKzI5OTM0IDQ5ZjQ5YWViZjVjMjBiZTMyZDhlNGNjNjJiOTEwZmY2Nzc4NzI5MTkgbGVnYWN5LXRydW5rCisyOTkzNSBlNTFjYmRjYTIwODViYTk3MmE3N2VmZmJjODBjYmI2ZmMzMjM2OTJkIGxlZ2FjeS10cnVuaworMjk5MzYgMDNhZmRhOWFkMDkwOGEzZmMxMjhlODNlM2JiMjM2MDk2M2VjZTAzNyBsZWdhY3ktdHJ1bmsKKzI5OTM3IGRkODE3YmIzNjQ2YmNiOTJkZGQ5NGRkYzA0M2RhNjQ0ZmFjZGM2NjEgbGVnYWN5LXRydW5rCisyOTkzOCAzN2ExNzhjMGZkNTlmMmYyNDMyZTk4YzU1N2JlODkwMzBmZmZhNzNiIGxlZ2FjeS10cnVuaworMjk5MzkgZGRiYjA1N2U1YWIzMTViY2U5NDYxZDFjMDYyNjkwZDQzOGExZjRhMSBsZWdhY3ktdHJ1bmsKKzI5OTQwIDE1OTU3YjdlNDI0NzllMjk5OWZkODBlNDlkZjM3NTNhNWJlZTNhMGIgbGVnYWN5LXRydW5rCisyOTk0MSBjODhmNmZmZjFjM2YxYzc4MTczNjRkMzM5ZDliYThlMTMyMWI4NmE2IGxlZ2FjeS10cnVuaworMjk5NDIgMTRmYzE4NzMzNGM1ODE1YTk4ZTM4MWQwYmQxZTdhMThhNGY1Yzg0OSBsZWdhY3ktdHJ1bmsKKzI5OTQzIGUxYTMzMTM2YjRlMjY3YmJmNDk4OWJjMzMzMzM2MjY2NjdiODViMTIgbGVnYWN5LXRydW5rCisyOTk0NCA0MThhN2VjOTI1OTkzMGZmZjg3MzU3MzQ1NTM1NWQzZGE3NDZjZGQ3IGxlZ2FjeS10cnVuaworMjk5NDUgYTU3M2FmNWRiODA3NDUyZWFjNzRjNzE2ZWEyZjllYTdkOWYwMjdmZCBsZWdhY3ktdHJ1bmsKKzI5OTQ2IGZiYjI0Y2Q1NDc2NmNlNzdiOTBlMzA1YmFlNTBjNjliYzNiMDk0ZDkgbGVnYWN5LXRydW5rCisyOTk0NyBmNzllYmJhYTQ4MzM0ZDU4MmVkZGNkZDVhYjgyZDI3YWRkY2ExNDM1IGxlZ2FjeS10cnVuaworMjk5NDggOTVlZGI0OGRiZmExNmY2M2U2ODJiZThiMGQzYjE4MDU3MDc4M2I2MSBsZWdhY3ktdHJ1bmsKKzI5OTQ5IDk5Yzc4Y2Y5NTYxMDUxYTlhMDMwYTVjZWFkYzA0YzY2MTZlZmVjODkgbGVnYWN5LXRydW5rCisyOTk1MCBiOGZmZmJiZDY4MzI2NjM2ZGRkNjYxYjRlM2U4YzFjOGRhMTM0YjZhIGxlZ2FjeS10cnVuaworMjk5NTEgMDY5MGY4MWNjZTc4YmU3NGExMDgyMGMwOTljZWQxNWRiNjNlNzMwZiBsZWdhY3ktdHJ1bmsKKzI5OTUyIDEzODM4NTMwZjYxOTU3NDQ3ZjlkOTlhMDQwMDg0OGQ1MjZkMGFlNWEgbGVnYWN5LXRydW5rCisyOTk1MyA2YzQ1OTg1YThmZGJmZjNhYTE0ZDc2MzQ1N2JiODY2NDZlM2ZiMjJmIGxlZ2FjeS10cnVuaworMjk5NTQgZjI1NWIzZjVlOTEzNjFjNDRlYWMzMmUxZmZlYWMyMjY2MDc4NmE4OCBsZWdhY3ktdHJ1bmsKKzI5OTU1IGUwNzk0OGQ1Y2Y2N2M0NWRjN2Y4ODE5OGIyOTEwNGJiOGM0Yzg1YjkgbGVnYWN5LXRydW5rCisyOTk1NiA3NDY4YjY4ZTk4Mjg2ZjRlYzFhYzE3ZGUzYmZjY2I0MGY5Y2MwYmRkIGxlZ2FjeS10cnVuaworMjk5NTcgZDFiNGU3MDE2ZDg4YTUyZWI4YjYyY2Q1NDdjOThhYWFmNzExZDYyYyBsZWdhY3ktdHJ1bmsKKzI5OTU4IDdiYTA3MmRiMzgyOGY3ZDNhZDk2MjYwYzZiNGEzODYzYWNmZTgxZDcgbGVnYWN5LXRydW5rCisyOTk1OSBiMjY4YTZlODU5Y2I3YjI4NjQ5Y2VmOThhYThkZDNiZDljNjJkODkxIGxlZ2FjeS10cnVuaworMjk5NjAgMjhlZmUxNmE4YjdkZjdhZDBlOTY0ZGMyODM0NmM1NGE1ZWJkNDZhMiBsZWdhY3ktdHJ1bmsKKzI5OTYxIGUyNmEyMDhlYTcxYjgzNTcxNmZhMDNiNWU1ZjJkNzQ4MWViNDQ3NTMgbGVnYWN5LXRydW5rCisyOTk2MiAwZjg0OGIwNjE0NmYwYzk3NTQ2N2RhMDE0OGU1NTQ0ZGQ4MDBjZThkIGxlZ2FjeS10cnVuaworMjk5NjMgYjRjZTZhYzE3ZjYwNzllNjZmMzQyMWE4ZjA2NWIwN2QwODJlNDIzZCBsZWdhY3ktdHJ1bmsKKzI5OTY0IDJmNDBmYTc5YjU5YTVmMjc5YzAzZDcxYWNjMGQxZmQ5ZGQ4YTQzZDAgbGVnYWN5LXRydW5rCisyOTk2NSBiOGE3YzRjZjNlNmQyNjAwNTk3MjBlY2NiNTgyMDc5YWFhZjM1Y2ZiIGxlZ2FjeS10cnVuaworMjk5NjYgYzEzNWZiMmJiODI1YWU4MDg1YjI4MWZjNjkyOTZmMmQzM2FiZTc3NSBsZWdhY3ktdHJ1bmsKKzI5OTY3IGE1NmUwYjI1MTdiZDgzNTY0YTgyM2Q2OWI3MjBmNmIxYWQxMzBmZjUgcmVsZWFzZTIyLW1haW50CisyOTk2OCBhZjQ2OThlNTkxZWNjOGUyOTg1YjNlOTEzYzIwZDJmZDQwZWVhZDJhIHJlbGVhc2UyMi1tYWludAorMjk5NjkgZTBiNTk2MDYwMzEzZTYzNzA4ZjdhMjk0ZTViMDBmZWZhNDQxNjE0YSBsZWdhY3ktdHJ1bmsKKzI5OTcwIDIzOGNhYzk3ZDE2NTg0YmUzMTU1YjdhNGVkNDQ0YzRlNjZhZjU0MTkgbGVnYWN5LXRydW5rCisyOTk3MSBiMzFiZDAwNGY0MzBjNzMzODhhMDljNzNiMGE4MjNlNzFiNjA4ZDE4IGxlZ2FjeS10cnVuaworMjk5NzIgM2Y4MDE5MjczNTQ5ZWNmMmE4OWU5NmViZGM2ZmRmY2YwMzliYjAwZSBsZWdhY3ktdHJ1bmsKKzI5OTczIDU0NjdjNmUxZjU0MWIwNGZlYjUwMTczOTg3NGU3ZmMwMDZmODc2NjQgbGVnYWN5LXRydW5rCisyOTk3NCAyNzc1ZGUzNWRkMjlkNDljZWQ1MDZkNmI3MmQwYWM3MTVhNzZmZDFjIGxlZ2FjeS10cnVuaworMjk5NzUgZjA3NzJiZDdjYzQwMTJjMjBmODc0ZjgxM2Q4OTMwYzg0ODg0NmZhZCBsZWdhY3ktdHJ1bmsKKzI5OTc2IGY4ZDFjNjgyMGJmYWVjNTM4OWQ3NzE5NjYxNzUyNDNlZGVlNGE0NmQgbGVnYWN5LXRydW5rCisyOTk3NyA3NmY3OWJiMzZmYzc3M2RjOTFhZTQxMzk3ZmQ1ZTdlYzNjYWQ1NDE5IGxlZ2FjeS10cnVuaworMjk5NzggY2QxZmU0YjVmN2ZmY2MyM2VlOWM5MmI5NjI0NjVhOTI1ZTFkYjQ4YSBsZWdhY3ktdHJ1bmsKKzI5OTc5IGY4NjEzMGY0NWJmNzUwZDhmOWJkODhkNWUyNGRiZDY5ZDYzOTFlZTkgbGVnYWN5LXRydW5rCisyOTk4MCA2NzEzMjcxOTVkYzMwZWE1ZDJjNDdlYjI5NDk1NzI2MDYzNjA2NzIyIGxlZ2FjeS10cnVuaworMjk5ODEgODI1NDQ1ZjlkNmI4YjAyYzhlYmNhMjIyNzVhODFjZjFkZjRiMDUwZiBsZWdhY3ktdHJ1bmsKKzI5OTgyIDAwMTVkM2YxODllMTQ5YTI5YjY2YTUyMTc1YTY4NDA0ZDJkY2M3MzcgbGVnYWN5LXRydW5rCisyOTk4MyBlZGE4ZTY4OThkZDNlZTdjMTFlMzJkMGU5NDhkN2E1ZjNhYWRkN2NkIGxlZ2FjeS10cnVuaworMjk5ODQgYTliNGI2YWExMjIwMjc3NGNlNDgzM2UzZDJlYjA1ZGMwMDQ5MGE1MCBsZWdhY3ktdHJ1bmsKKzI5OTg1IGZhNDUzMmVmOTljOWE5ZjA4ODNhMmIxMWJlYjFhOWI0ODg2MzdiZjIgbGVnYWN5LXRydW5rCisyOTk4NiBlOTIzZjZkM2I0YTMzMDkxNzcxN2ZkYjY5NzNjZTAwMjhlNTdhMDhhIGxlZ2FjeS10cnVuaworMjk5ODcgOWU0YzgwMzQwZmExZDk3NTVlZjJjZDgzZmI1OGZiMjMzMzlkNjExZSBsZWdhY3ktdHJ1bmsKKzI5OTg4IGY0MGEyZDNhMmFiNTUzNzJhNWNmNmYyZDEyNGQwZjg3MDA1OWJjZDUgbGVnYWN5LXRydW5rCisyOTk4OSAyZDQ0YWJlNTdiNDI2Mzg0MGRjZjgwNTg5NDMyY2NlMzNjZDYxZGM3IGxlZ2FjeS10cnVuaworMjk5OTAgMzc2YmQzNTdjNGQ1YWU2ZDE2N2EyZmFkN2E3ZDYyNmU1NGVmMDY5NCBsZWdhY3ktdHJ1bmsKKzI5OTkxIDVhOWU3MDY0YzkyMzRkMTI3ZDIwODQ3YjAzOTllYzMxZDA5YjA0NGUgbGVnYWN5LXRydW5rCisyOTk5MiA2NDMxMDAxNzBiZGU5MWY4NjVlOGVjM2U4MDQ1NjBlNDQ2YmNkYzZhIGxlZ2FjeS10cnVuaworMjk5OTMgNTBjNjMzYTg3ZTM1NTQ3ZjFiM2Q5Y2EwYTJjOWM3YjhiMzgxYjUwMCBsZWdhY3ktdHJ1bmsKKzI5OTk0IGZkNmZiNzNmYjIwZmRhMWZjOTg4ZTllOGNjZjQwOWU3ZGY2NzNjNzggcmVsZWFzZTIyLW1haW50CisyOTk5NSA4NTA0NTkxZTRjNjMxYjQ0NzdhYTAxYzVhMGE1NjNmOTAwZDEzZjlkIGxlZ2FjeS10cnVuaworMjk5OTYgOTRjNTUzZWI4OGMzYTU3NzkyY2Q5ZTlmN2VhNjQyNDgxMjUyN2Q1MiBsZWdhY3ktdHJ1bmsKKzI5OTk3IDBiNjZkNGU5ZjRmNDg1OTY3OWI1YjQwNTgwZGUzMDQyMjJkOGQyZmYgbGVnYWN5LXRydW5rCisyOTk5OCAxN2QxMjNmMzM2MTEwNjAwNThhYTU0ZGZmMDM2NTJjNjdkM2Y4OGRhIGxlZ2FjeS10cnVuaworMjk5OTkgNzlmOTA2M2ZiNThlY2IyOGRhYjk4NGIwOGYwNzhjN2ZmMTYyNDQ3NCByZWxlYXNlMjItbWFpbnQKKzMwMDAwIDRjMTY0MjhmYmNkODNjNWYxNzAzOTAyNjY4ZGJlMDlhYzcyMzJiNDAgbGVnYWN5LXRydW5rCiszMDAwMSBhNWE4NzM1NzExZTgxNmY4NTFkNDJiZGRlODQwYjI5MGU3NWFkYzRhIGxlZ2FjeS10cnVuaworMzAwMDIgN2FiYTg1OWNlZTU0NTMyN2M4OGU1NTRlNWFlMzFiMzEzNWJlMDQ4YyBsZWdhY3ktdHJ1bmsKKzMwMDAzIGQyZDc4MTdmY2NiYmJhZTEzZDhlOTE3ZTUyMmE3ZTljNjMwN2EzMTEgbGVnYWN5LXRydW5rCiszMDAwNCA5ZmI4YWFkZTg4N2Y4NTVjZmQyNWIxNzA4YzgwNzAzMTA3OWVjODNlIGxlZ2FjeS10cnVuaworMzAwMDUgMThkY2Y4MGU2ZjhkZWRkNGUxYzA5ZmNkYWY1ZTI2NzI1ODFiMmM5YiBsZWdhY3ktdHJ1bmsKKzMwMDA2IDM4ZmU1ZWI2YWMyNTY3MjEyNjE3OWVlMmUwMjc5M2Y5ZTQ1ZTU5MjMgbGVnYWN5LXRydW5rCiszMDAwNyAzOTgxY2YyYTU3MzA1MzRkODk2ZGM3NGRjM2ZiYmJjZTU5MzlkMDU4IGxlZ2FjeS10cnVuaworMzAwMDggYjU4MzdiOGYzYjJjNGMyYjZiMDA1ZWZmMjc2N2NhMTNmNTFlYmJjNCBsZWdhY3ktdHJ1bmsKKzMwMDA5IDhlMTU2N2RiY2JhODkzZmU2NmIzYzA5MzA3OWQzZDY5Y2NjNzBjMGEgbGVnYWN5LXRydW5rCiszMDAxMCA2MTc3YTEzZTRjMTQ1YTQwZDE4ZjJjYmEwZWZlNGM0ZWZmZWQwYWFkIGxlZ2FjeS10cnVuaworMzAwMTEgZDZkNTIyMmI3ZTU1NTJhOTJlN2EyMGFiNTQzYWFkZTc5MjdmNjdmYyBsZWdhY3ktdHJ1bmsKKzMwMDEyIGNhNmZhNjk3MTFiYjVlMGUyZGY5NjlmM2YwMmE3YTlkODI5NzIzNzkgbGVnYWN5LXRydW5rCiszMDAxMyA2MWUyYjhjZWZkODY3MDBiZjFkY2YxZDA3M2JlMDNjZTdiYmYzYWUwIGxlZ2FjeS10cnVuaworMzAwMTQgNmVhNzg2NTI4Mzk1YWI3NDQwNzk3YTkyM2Q0N2IyYjBhM2Q3YWM2OSBsZWdhY3ktdHJ1bmsKKzMwMDE1IDk5N2ZhMDIyNDRiYWMyYzJhZDA2NWE2OWQ4M2IxYjI3NjczNmViZDIgbGVnYWN5LXRydW5rCiszMDAxNiAyNjIxOTY4MzE5ZjAzNDRhMmZjMTc5ZTJlNzI5OGFjNDY1NTFmYjlmIGxlZ2FjeS10cnVuaworMzAwMTcgMGU2ZTM5ZmI5Y2Q3MzJhZDZkZDAxYzg4NDAyMWQ0MDI1ZTY1ZDNmOSBsZWdhY3ktdHJ1bmsKKzMwMDE4IDkxMGZiNjZjM2I4MWNiY2UzYjY1OGNhMmZiMmI2MTk1MWJkOThhNWQgbGVnYWN5LXRydW5rCiszMDAxOSBlNDI3MzJlMjg5YjlhNDE2ZGNjNjY2ZjRkM2U2ZDljOGEzNGM3ZDg0IGxlZ2FjeS10cnVuaworMzAwMjAgNTg0NDBkMGI5YjRlYTZjN2M2YmNjODJkOWQyZWNiNTUyYWUyOWYwNiBsZWdhY3ktdHJ1bmsKKzMwMDIxIDk3NTQ4MmQ1ZWI1Y2U3OTRkNTIxM2U0ODI4Yjk1MDY4ZTU3ZWYzYTggbGVnYWN5LXRydW5rCiszMDAyMiA5OTcwZDc3OTgwYTBlMmZiOTM5YzkwOTlhYjczNDA1NDM5YmM0NDQzIGxlZ2FjeS10cnVuaworMzAwMjMgOGE3NWM2NmJmYTE0ZGU0YmE3MmFjYzVhMDQ0OWVmOWZhNDYwMGMyOCBsZWdhY3ktdHJ1bmsKKzMwMDI0IDA5YzdlZDFiN2E4NzM5ZDgyNzk2NzIyOGM2MDE0ZGQ3OGRjNzYxNDMgbGVnYWN5LXRydW5rCiszMDAyNSA2ODdiNGIxNjUyNjhjNzU5ZmQ0NzdlMjg4ZWI4NTUwYmI2MjIwYTk2IHJlbGVhc2UyMi1tYWludAorMzAwMjYgNjc5MTJkODM3OTlmNzNjMGNlOTU3MTY0YjkwMWQyNGQwNmRiZDhhYiBsZWdhY3ktdHJ1bmsKKzMwMDI3IDhiMzYwMWE2MjMzNjMzMmRlMjRiMDZiMzRiZmY0NTdlOTU4NjZlMjcgbGVnYWN5LXRydW5rCiszMDAyOCBiOWM5MTJlMmMzYzAwNjNkYzkwYjU0NTU0MDUxYmNjYWE4ODE4NGQ3IGxlZ2FjeS10cnVuaworMzAwMjkgMGM5OTVjZDA3MDI2NzcxOTYwM2ZhNzEzZDk1Y2VhNDkzY2ZmMmMxZiBsZWdhY3ktdHJ1bmsKKzMwMDMwIDRlNmFjMmZlNjhmMGJjYThlM2YxOTA2MDlhYThmMDM3OTFmODZiN2QgcmVsZWFzZTIyLW1haW50CiszMDAzMSBjODg0YTZjNDdlMDYwZThiMWZmMDMwMzllZTU0Yjk1NjBjZGYzOWMyIHJlbGVhc2UyMi1tYWludAorMzAwMzIgNGJlYmYxYTE5MzE5YzQxNWNlOTNjM2RkN2MwMTQzOGU0MGY2ZDc3ZSBsZWdhY3ktdHJ1bmsKKzMwMDMzIGEzNmRmZmQ3NTMwMDliOGVmM2VlOTJhM2Q4MTI3MGE1OTdlMmY4ODYgcmVsZWFzZTIyLW1haW50CiszMDAzNCAyNDJhZDVjNTkyY2MyYWZkYTg1ZGEwYmMyOTNhMWVhZDQyYjlkYjg0IGxlZ2FjeS10cnVuaworMzAwMzUgNGJlNjJkYzlhM2U3ZDc0OTI2MGM0MzE0OGM3MjdkZjU3NWQwNzhhZSBsZWdhY3ktdHJ1bmsKKzMwMDM2IDcwMWI3OTdiYmRjOGZiNDQ2MGQwZTM1MzJjYzBjMTQzMTIyYTU2NjkgbGVnYWN5LXRydW5rCiszMDAzNyAwZGJmOThlZTExOGUyNjk1M2I2MTcxYzRkZGI5YTg0YmE0NWViYzg5IGxlZ2FjeS10cnVuaworMzAwMzggOGY3NDNlYmU2YzY2MzJiMDBhM2NiMmVmMTM3Y2M2NzQyZmRlZDZhOCByZWxlYXNlMjItbWFpbnQKKzMwMDM5IDEyYmM0YTNlNDVhZjhhMjRjMWI4ZWNmZWI4NmRiODVkZDcyYjczNDggbGVnYWN5LXRydW5rCiszMDA0MCA4NTFjNjI5MjA1ZDJmM2ZhZTMyYTg0NDQ5ODkzNDhkNmUwOTg5ODU5IGxlZ2FjeS10cnVuaworMzAwNDEgYjU2NmJlOGJmYzIzYzc5MDI2NGRlMGM4YmQyNTFkMzU3MWRhNDRjNiBsZWdhY3ktdHJ1bmsKKzMwMDQyIGZhNjVmOTRkYzRjZGJjNzQ1OTBmNTgwODc1MDFiZDQxYmQxZTE1NGMgbGVnYWN5LXRydW5rCiszMDA0MyBhOWY2YzAwNmFhNDU4ODY5MDk2YzQzOGY1MzFmZWZjY2U0YjU4OGQ3IGxlZ2FjeS10cnVuaworMzAwNDQgNzE1ZTI4ODhmMzc3ZmI5MmVkMjEzZmM0NTljYWRiY2FkMDY0ODc2OCByZWxlYXNlMjItbWFpbnQKKzMwMDQ1IDA2MDFhOTA1NThmZGJhZjM5ZWNiZDc4NmVhYjY5Zjg2YjUxNTYzNDkgbGVnYWN5LXRydW5rCiszMDA0NiAzNDJjMzRjNDM4YTI2MDhhMTU1NDY1ZmEyYWU0ODM2MDRjNmVhNWU4IHJlbGVhc2UyMi1tYWludAorMzAwNDcgODJiOWY1YzdkMDFhMTQ2NjI3ZmVlNjhmNGFiYTRmNWFiYWRmODFhNSBsZWdhY3ktdHJ1bmsKKzMwMDQ4IDJhYmExYWM0NzQ0Yzk2NzkzOTU1MmZlZThkYmRiNTdmMDAyNWRlODAgbGVnYWN5LXRydW5rCiszMDA0OSBjYjhjZmFkZjc1YTI3YmY4YjUzZTNhMDY4YjA3OThhMWU5NThhNTkyIGxlZ2FjeS10cnVuaworMzAwNTAgZDc1NWQ0MjkyZjNmZmIxMmZiODE3YzcwM2UyMjY3ZmM3OWQ2ZTM1MCBsZWdhY3ktdHJ1bmsKKzMwMDUxIDI5ZThkZTU5NzU2YTQ1YjYyZWRmY2I4ODI2OGI1MGQ5MTBmN2FjNDkgcmVsZWFzZTIyLW1haW50CiszMDA1MiAxZDllMzBjMDVjZGU0Y2IyNjlhYzE1ZGRlYzYxN2FkZTA0YmQ3YjdlIGxlZ2FjeS10cnVuaworMzAwNTMgOTNiNWNhOTQyM2ViMjc5NWJkN2EzMTgxMzMxMTNiOTU3ZmQ3MGE1MiBsZWdhY3ktdHJ1bmsKKzMwMDU0IDdhZTljMzZjYmNiNjZhNzE5YmVjYTgwMzQ5MGYwYjgyNzJlYTNmZTIgbGVnYWN5LXRydW5rCiszMDA1NSA0MDUyMzlhN2UwZDhiYzk0ODhjN2I4NmJjMWFjMmJlYjE2NTUxYTVjIGxlZ2FjeS10cnVuaworMzAwNTYgOGNhODA4NDNhNjcxNjE3NTk5NzI5MGU5NmFkYTAyY2FkOTc0MzFjYiBsZWdhY3ktdHJ1bmsKKzMwMDU3IGU4OTQwZDRjZDhjYWU3YWUzNmZjZmJmZmU2NjQ3M2UzZGVhOGIxNmUgbGVnYWN5LXRydW5rCiszMDA1OCBkNGI3NjgxN2M5ZTYzYzY1MTAzZjdjNDMzZTkzNzE1NzNmYWIyNjBhIGxlZ2FjeS10cnVuaworMzAwNTkgOTIwNmIwMDRmMTUyYzQzZDVhMWVkZmMyZDIzYjJmMGY1NGFiYWQ1NCBsZWdhY3ktdHJ1bmsKKzMwMDYwIDk1MjY4N2VhOWNiMTJkOThkNjYwMWU0YzgwMmNkNzM1YzRhMTY5YTcgbGVnYWN5LXRydW5rCiszMDA2MSA4OTkxZjc4ODE3Yzc5MDA0YTBjODE3M2ZjOTRjYjE2MmQ2MzE5YzE5IGxlZ2FjeS10cnVuaworMzAwNjIgNGU5NGFhMDcyNzY4NjIwNTVmNDU0OWIyYjk2NmM5ZDE2ZTg2NGQwZiBsZWdhY3ktdHJ1bmsKKzMwMDYzIDNmNDM4M2EwNGI2MjU0YjM2YTJlMzMwMmY3N2Q4YmQ3NzkwMzUzZWUgbGVnYWN5LXRydW5rCiszMDA2NCBlNjQ0MjViYjk0ZDg5YTMyMGM5MDNiYjdmMTEyOTI3NzMzYjJlZDViIGxlZ2FjeS10cnVuaworMzAwNjUgODEwMzJlOTdiYTNjYTIwMDIxZDVhZjk3OTlmMWIxMDIwZDkyODEwOCBsZWdhY3ktdHJ1bmsKKzMwMDY2IGY1YjRlMTc3NDk2MTdhOTYwMTA1Nzc4NTI0MWNlZTRhNmJkODAwN2MgbGVnYWN5LXRydW5rCiszMDA2NyBmOWQ1MTZjNjFlN2I5MzJjZjY1ZjdlYThmNzA1OTgxNDk1MTk1MTM4IGxlZ2FjeS10cnVuaworMzAwNjggNjE1YTI1YTZlYjViYWFjNjY2ZmI1NDY1NGJhNTNlOWJhNTA1MWMyNyBsZWdhY3ktdHJ1bmsKKzMwMDY5IGMyMzRmNDhkZTEzOGY0OTliMGQ0ZDlmMzc0Y2U3NTFiZTNiNGE1MjkgbGVnYWN5LXRydW5rCiszMDA3MCAwYzY0NmJhZWVjNTgyMzI1YmIxZDk0MGQzZDYwOTEwYjE2ZWQzMjVkIGxlZ2FjeS10cnVuaworMzAwNzEgMjExMDM4NTA1ZTU2YzRlYjk3M2FiYjU2YTAyZTEyM2E5YjM3NzJjNCBsZWdhY3ktdHJ1bmsKKzMwMDcyIDA1NjM4Nzc2NzgzMjU1OTgwMWFiNTAzOThmY2RiM2FhNWIzMzU2Y2EgbGVnYWN5LXRydW5rCiszMDA3MyBjMzU3NjhkNzg4M2U0ODQ3ZTllYzYwYmQ5YjBiNjJmMjhhMjVhMjM0IGxlZ2FjeS10cnVuaworMzAwNzQgMzA4NGJmOGJkMTFjMGFhNjBhM2YzNjE4ZjEwNGM4YzA3ZGVkMjQzNCBsZWdhY3ktdHJ1bmsKKzMwMDc1IDdkZGVhNGRmYTUxOWQzYWQ4ZTYwMmE5ODRiMWVmNzMyMjc1NzFhNjYgbGVnYWN5LXRydW5rCiszMDA3NiA1NmRiZDkwNzlhMTNlZDZlZjc0MWFmNTY0N2FiYjIzNDYyMDFhZGIwIGxlZ2FjeS10cnVuaworMzAwNzcgZWNlYTg0MTAxNzhlMDY1YjEyNzQwZmUzMTcxZjYxZjdkNWQyZjEwOSBsZWdhY3ktdHJ1bmsKKzMwMDc4IDc1YmZjMjRmZDc0ODUwZDE3ZTk1MjMyNWFiNTVkZDVjYzc1NmE2MDAgbGVnYWN5LXRydW5rCiszMDA3OSBjYzA1YzJjODY2MGUwYzY4YWNjYmM1NmJkOGU2ODg3MmRlNTVmMTY5IGxlZ2FjeS10cnVuaworMzAwODAgYzE2M2VkMTdmOGJhMzg1YWE4N2MwMzQ5MmM1NGNkN2EwZTUxNmRjZiBsZWdhY3ktdHJ1bmsKKzMwMDgxIGJmYjI2NjRjZGIxYmU4N2MwMWQ2MWRkNDhiMDg1MjIxYWNmNjEwMzcgbGVnYWN5LXRydW5rCiszMDA4MiBhZjUxMTliZTIyMWY0Mzk5OTNmM2NkNDJiYzgyYzM1ZWE4MmUxNDE5IGxlZ2FjeS10cnVuaworMzAwODMgMzc4Y2UwMjBkOWU2OGM2NzVmNDY2ZTEyZWIyYTRlNTVjZDBlMjhiYiBsZWdhY3ktdHJ1bmsKKzMwMDg0IDlkYjM5NmJjZTRlNzVmMjA1Yjc0MzAyZWYzOGRmYzQxNjQxYTE2MjMgbGVnYWN5LXRydW5rCiszMDA4NSBlMzllNzRhZWEyZmI4YTczNDE0ZDlmZGM1ZDY0ZTBlN2U1OWNlODFiIGxlZ2FjeS10cnVuaworMzAwODYgMTRmNTNiNmQ3ZjU4YjIwNGI2ZGMzOGJlNThmOWJlM2IzYTY1NGMzYiBsZWdhY3ktdHJ1bmsKKzMwMDg3IDJmYWIwYjY0ODhiNTEwYWM5MzYzMjk4ZjUyY2UxMDUwNTRiMjVhMzUgbGVnYWN5LXRydW5rCiszMDA4OCA3NGQxYWQ2MWY4NDNjYjJmZTRlOGUyYmMwMzhjYjg3NWZmNmI0YTNhIGxlZ2FjeS10cnVuaworMzAwODkgODc3MTk5M2M5YWFjYWRhNDBmYjgxMjJjNDAzNTkyYzY4YTUyZGI0YyBsZWdhY3ktdHJ1bmsKKzMwMDkwIDk3ZjgzNTQyZjhlZWZhYWUxZGY0MWJjNGU5NTc5ZGI5MWQ0YWYwMTMgbGVnYWN5LXRydW5rCiszMDA5MSAyOGJjMmQzYWY5MWRiNjg5ZDQwODAxODI3NWM4ZjYyMzI1NjZiODE0IGxlZ2FjeS10cnVuaworMzAwOTIgMmM3YmRiYjUwZTc2MjhjYTUwMzEzZGJkMWEwNWRlZWQwMDhmMjkwYSBsZWdhY3ktdHJ1bmsKKzMwMDkzIDAyNzg1MjQ4ZTAwYTZmNDRjN2YxNTZiMGVkMjk4MTFkMmMxNDIxN2QgbGVnYWN5LXRydW5rCiszMDA5NCAyMGUwNzU1ZjM1NTQxZDY5ZWU2NDk3NzE5MTNlOTYwN2IwOTE4Y2UxIGxlZ2FjeS10cnVuaworMzAwOTUgM2JlNGY1ZDM3N2Q4YjJjNTRhNzY1ODk4YmU4NTRiOGIwOGM5NWQ4NCBsZWdhY3ktdHJ1bmsKKzMwMDk2IDllNzUxZWVlODFmNTA0ZTQ1MjVlNjQ0YjgyMDE0YTg0OTUxZWJhYzcgbGVnYWN5LXRydW5rCiszMDA5NyBiNjI5OThmOTg5NzNlMzMxZDgxYWNhYjcxMmY0MTNlMjFmMTJmMjE2IGxlZ2FjeS10cnVuaworMzAwOTggY2I5M2Q5Mjg3YjRlYWVjNGRmMzBlODY0ZjQxMjkzOTkwYTNkMDRlOCBsZWdhY3ktdHJ1bmsKKzMwMDk5IDdkMTkyODc1YTEyZjc5OTAyYWJmMzYxOWUwYmRhZTg1NjVkMjY0ZGEgbGVnYWN5LXRydW5rCiszMDEwMCAxOTUwN2ExZDAyNTQ4ZWJhOTJkNGQ5YTRjZTFlOTNiNzQxMGJjNmJhIGxlZ2FjeS10cnVuaworMzAxMDEgODA5NmRjYzdhZjY1YmJiNjEwM2NmNmRmNDdiMTYyZGUxYzA2NGNmNSBsZWdhY3ktdHJ1bmsKKzMwMTAyIDYzN2IxMGI1MmUwMmU2N2YzNDM2MWRjYjBhYTE0MGNhZjc5NDAyNmUgbGVnYWN5LXRydW5rCiszMDEwMyBiYTE1NzhiZTU3MDZlZDVlOTVkYjE3MzRjOGFjMDBjOGI3ZTVkZTU2IGxlZ2FjeS10cnVuaworMzAxMDQgZTQxZWUyYjhlNzNkZWFjZWY2Y2YxZTYxNzc0YWU2NWI2ZTMyMmE4YiBsZWdhY3ktdHJ1bmsKKzMwMTA1IDdiYWJkYWVhN2QxOWQ3ZjNhMWIyYTFkOGI5ZTI5NTEwZTAyNTNlYjcgbGVnYWN5LXRydW5rCiszMDEwNiA4ZGZjMGZjNGMxNGI1MTAwMTAyMjBiNTFlZjgyNDViNTlhNzE2YjRiIGxlZ2FjeS10cnVuaworMzAxMDcgOTgxNjQ2NjZkMmE4OTcyYTQ3NWYyOTMxZTM3YjYyYTlhYTA0NTZiYyBsZWdhY3ktdHJ1bmsKKzMwMTA4IDU5ZGQ5MjU3YmMwMzE2ZjZhYzc2NWM1ZTIwODFhNGNlMjc3OWU4ZjIgbGVnYWN5LXRydW5rCiszMDEwOSBkN2Q1MjVlMzBjYzAyMGY2MTU4ZGYwNWZiZGU4N2FmNmM1ZGZjZGQxIGxlZ2FjeS10cnVuaworMzAxMTAgODkwYWE5M2RkOWMzOGU3MzI2OGM0MTgzNDlkNWJiZTYwMjFkZmFlMCBsZWdhY3ktdHJ1bmsKKzMwMTExIGIwYmYzNjA0MjQ0ZmQ1OWNkM2RjYzdhNzZkYjAzMDhkOTNlYjcyZDggbGVnYWN5LXRydW5rCiszMDExMiBmZDQ1NWRmNTViMTM1YmI1MzNkYjhiOGExNmQyYTFlMTFiNWQ3MzNlIGxlZ2FjeS10cnVuaworMzAxMTMgOTZiOGM4YWU3MjYyZWRkNjhlZThmYjhiZTM4YzgwMzcyMmVlMDJkNyBsZWdhY3ktdHJ1bmsKKzMwMTE0IGM2OWI4ZTYxZTY5NWJkMWU4OWQ4ZjQwNDQzZTk0ZjhiYzk3NjMyMWIgbGVnYWN5LXRydW5rCiszMDExNSAzNDI5OTU1NzI0YjI3OTIyZDZhN2FlZTU0ZWEyYmI4NDc1YjAxOTUzIGxlZ2FjeS10cnVuaworMzAxMTYgZmQ2YmU4N2U1YzI5N2U1OGJiNzAzZjQwNjAzMGU5OGFmODExOGQ2YyBsZWdhY3ktdHJ1bmsKKzMwMTE3IDBmZjQ3MzYyYmI4MTE0YTA0NmU3OTBhNDBmODk4MjUwZDFlOWYzOGQgbGVnYWN5LXRydW5rCiszMDExOCBiYjZlYTA3OTA5NDc5YTYzZDY3M2M3MGNjYmU0ODljMjc5NDM4NTU3IGxlZ2FjeS10cnVuaworMzAxMTkgZTc4M2NkZmEwYjQxOWExYjQwNGIwZWZiYTM4YTVhNmVlNmIyZjA5NyBsZWdhY3ktdHJ1bmsKKzMwMTIwIGQyMzAyMzM5YThhZDc4NDIzNGNjNjVhNmU4OWE4ODEwZDUzN2I5YTkgbGVnYWN5LXRydW5rCiszMDEyMSAwMmJhNDY2M2NhZDIxMjdhNjBhZTZiMGEyZmY4ZmEyYzZkMjY4ZjQwIGxlZ2FjeS10cnVuaworMzAxMjIgNDExODhlMzg5YzYxNDRmMmMxZTkzODhhMzA5M2VkYThjNDljNTYyZiBsZWdhY3ktdHJ1bmsKKzMwMTIzIGQxNzZjYmZkMzc2NTYwMGVhYTM5NTc3NTlmNDUxODFkOWY2ZWJiMWEgbGVnYWN5LXRydW5rCiszMDEyNCA5MjY3ZGZmZmYzMmQzMWQzZTE2NzBmYjJjZDU2ZmU5ZjliYWYxZjc3IGxlZ2FjeS10cnVuaworMzAxMjUgZjg4M2VkN2I5M2M4NjhkYjEyZWU3NDQ0Mzg4NWZjMTM4NWY1NGY0YiBsZWdhY3ktdHJ1bmsKKzMwMTI2IDZlZmE4MjE2ZGI2YTg5MjgyN2E2MWZhZDYyNzNiNzhlMjM0MDBjMWEgbGVnYWN5LXRydW5rCiszMDEyNyA3YjFkMTA3ZTYzYWU2Zjc2YTVlNTIwMDZlN2EzOGZkNzE1MzhhNGVjIGxlZ2FjeS10cnVuaworMzAxMjggY2FhMjQ1YWY3Nzg2NDE4ZDUzYWY4MDViNDMwNjAwOTA1ZDdiZWVhZiBsZWdhY3ktdHJ1bmsKKzMwMTI5IDZlMmMyZjEyMjFlNTM1MjhiNmNiYzllNDQ3Y2IxYTBmZGQwZGJiNmQgbGVnYWN5LXRydW5rCiszMDEzMCA0ODM0ZjgzNjgwMzYzODZkN2NmMmQwM2E0OGZmOTE0NmM5YzkxZWZlIGxlZ2FjeS10cnVuaworMzAxMzEgYTgwMDAxNWU3Y2YyYTZkYjA4YjY3NjMzZjZkMGMwMjA1MTdjODk3NyBsZWdhY3ktdHJ1bmsKKzMwMTMyIDYxYjNkMTc5Zjg2OGU3NDE1NjljMjk2NGFjMWMxYjZhNDA0MTAxYzAgbGVnYWN5LXRydW5rCiszMDEzMyBmMzU2ZmNiNzBlYWU1NWQzNzM3MWZlZmYwNTkyMzMzZGE3OGY5Nzc5IGxlZ2FjeS10cnVuaworMzAxMzQgYjdiZjM4ZDQ0NTk4ZjU1ODljMDk0M2U4NWFiZDdiY2JlZjRjNzU0NyBsZWdhY3ktdHJ1bmsKKzMwMTM1IDYzZDdiNWUzOTZmYjg5ZDFlZThjZmQ3Njg3NjBkYWI2NzEyZGRiZDggbGVnYWN5LXRydW5rCiszMDEzNiA0MGY4YjY0OGU3NjU5Yjc5MTU0MDcxZDI2NDAyYTIzM2Q3OTc3MmZiIGxlZ2FjeS10cnVuaworMzAxMzcgZDk5ZTM4YmI2ZGNkMzViYmFhYmUyN2ExYjdlZjRmM2FjYmYyNmJmZCBsZWdhY3ktdHJ1bmsKKzMwMTM4IGY4MzhiYzkwNTZjYzM3OWQ1OWMyYjJmZmVlNWMwMzBlMTMxODYwNjEgbGVnYWN5LXRydW5rCiszMDEzOSBiMTJlMzI2YjRlYTI0N2Y0YzU3NTE3YzgxNjdhMTBmMWRiYjI4NzJiIGxlZ2FjeS10cnVuaworMzAxNDAgZThkYzFhMGQ2ZjRkNGQxMGE0MGRmNzU0Yjk1ZDI5MDJhYTQyZDdjZCBsZWdhY3ktdHJ1bmsKKzMwMTQxIDMzOGUwMjVmZGU4YjUxNmU4ZWM5YmJlZDUyMjJkZWQzOWE1ZTllOTEgbGVnYWN5LXRydW5rCiszMDE0MiBmZTJkNDIyMzg1YjFmZWU2NmY5OTg3YWI2ZTBhOTkyMjFiYzAxNmU1IGxlZ2FjeS10cnVuaworMzAxNDMgY2IwNmJmYzg4NzdiMjQ5YjJjZjlmZmQ5NTZlYzYzZDBmZTFmZWU5ZSBsZWdhY3ktdHJ1bmsKKzMwMTQ0IDk4ZDExODU1YjQ2Y2NlZWY4MzQzYmQ3ZjRmMTU0YjMzMjk4NjhiMjMgbGVnYWN5LXRydW5rCiszMDE0NSBmNzY3MTc3MDdhNmQ3YTA5MmMyZjQwMmIwZmVjNmJiYjE5MjNhNmRlIGxlZ2FjeS10cnVuaworMzAxNDYgMzczZDBhOGVkNmJlNjRhNWQxZjFmZGY0ZWUwOWVjODdhM2EyOTQ1YiBsZWdhY3ktdHJ1bmsKKzMwMTQ3IGVkMjhiOTc1MmY4ZDJhYmY4ZGU1NGY3NzRiMmRhYmZjNWEwMzdkMGUgbGVnYWN5LXRydW5rCiszMDE0OCAxMzEyMjk3ODg3YTNmN2UwNmVhOWIzY2U4Y2QxZGM3YTI1ZDQ3YzM4IGxlZ2FjeS10cnVuaworMzAxNDkgMzAwZjkyNmYyYjNlYjU4ZmQ0OWYwNDFlM2M0ZDIzYjAxYTc5NmJhZiBsZWdhY3ktdHJ1bmsKKzMwMTUwIDhkZDI1YTZmNTkxMzkwNGM3ZGE4MzIzNmY3YTE3NGQ2ZTQ0NGY5YjEgbGVnYWN5LXRydW5rCiszMDE1MSA1YjcxNWNhZDM0ZDA4MjVkYzE4MzE4ZWExZGJkNGU5MWZmNzcwOGQ3IGxlZ2FjeS10cnVuaworMzAxNTIgYzdlYzhhZDAyMzRmYWY0ZDIxOTc1MTUwN2I1NTNkZDFmMWVlYmMzNiBsZWdhY3ktdHJ1bmsKKzMwMTUzIGJjOTA1NmQ4NDdlZjdkNDZmYWU1OTU0ZGJhNWVmN2UyOTYwYjRmZGMgbGVnYWN5LXRydW5rCiszMDE1NCBmN2Q4ZDQ5ZThmNWRlMjdjYjNjMWU3OTAxNjI4YzBlNjZlNTIzODE5IGxlZ2FjeS10cnVuaworMzAxNTUgNDNiNTRjMmJjNGU2MDIwNWRlMDVhYWQ3NzAyNTMwZjBiMmQ0ODhjYyBsZWdhY3ktdHJ1bmsKKzMwMTU2IDc4ZDg3MmNkMDY0YzJlZGM0OTBjZDljNjkwYTg3YzU1ZTM0M2YyOTAgbGVnYWN5LXRydW5rCiszMDE1NyBhYjUwYTIxYjg3YWVhMTJkZjE4MTFhMGFlNGY1YWJkODExZTM0NWRhIHJlbGVhc2UyMi1tYWludAorMzAxNTggYmM2NjYyYmEzYTc3NTViYmE1NjhmYTIyY2ZmZGQzZTE3ZTI5YWJhZiByZWxlYXNlMjItbWFpbnQKKzMwMTU5IDU3OTEwMTliNmU0ZThlMmJlZWFjNGQ0ZmFjMTZlYjA1NGQ5YzhiZGUgbGVnYWN5LXRydW5rCiszMDE2MCBjMTFhNmUxY2VkZTBkZTE4ZTE1YzQxYmE5NjVkNGY5YjI2MTNkZjJmIGxlZ2FjeS10cnVuaworMzAxNjEgNjA1OWU0MWJkNzdhM2U1NzkzYTg1Yzc2MzRjZGZjZjU3ZDc5NmE4YiBsZWdhY3ktdHJ1bmsKKzMwMTYyIGE5OTc0YTQ4YTRkNmNmOWFjYzBmNTIyYTNhNzRiZjY1YjM2ZGRhYjIgbGVnYWN5LXRydW5rCiszMDE2MyBhMjBjYjVhYmFiNmI3OGY1YTVjY2ZiM2FjYWQ4ZTA3MjE2NDc4NzQzIGxlZ2FjeS10cnVuaworMzAxNjQgYWQzZjY2ZTdmYjEwNDIwMTNhOTQxYTFmMGZlYzQ1ZmYyZTQwZjc0MyBsZWdhY3ktdHJ1bmsKKzMwMTY1IDZiMzkwNTQ4YzY5ODAwNDBiODAyMWZkY2UwZTNlODQ4MWIzMDA3ZGQgbGVnYWN5LXRydW5rCiszMDE2NiBjNzRiNjlhYjQ3NDJhYjg0ODQ3NGZjZjU3OGVjZGNhOTI2ODBiM2VlIGxlZ2FjeS10cnVuaworMzAxNjcgMjMxOGY0YmIwYmM1Y2Q4NWJlZTc0ZGIwZTI1YzIwZTgyMWJjZGIyOCBsZWdhY3ktdHJ1bmsKKzMwMTY4IDJlMGRjOWUwODIyMjg5NmEzNDI1ODQzMGE5YWMwMDNlMmU4MTVlYjkgbGVnYWN5LXRydW5rCiszMDE2OSAzNmNkMjY0MWU4MjY3NGNmYzQyYTllMDg3YjBmMGE4NjM3Y2ExNTJjIGxlZ2FjeS10cnVuaworMzAxNzAgNDE3M2U0M2VmNDBjY2U2NmY2M2RkZGFjZjFkYzA3MjNkMDg1ZWY0YiBsZWdhY3ktdHJ1bmsKKzMwMTcxIDk3NTMzM2Q0MGJmODMyYTQwMmEwNmJmYTk2NjJhNjZhYmEwOTgwMTUgbGVnYWN5LXRydW5rCiszMDE3MiBjNDI4NmE2YWIwMGM5ZTM1YjljNmFjMjRjZWE5N2EyZGFkYTgyMWFkIGxlZ2FjeS10cnVuaworMzAxNzMgNDljZWVlMDI2ZDY2M2UyMDg5YTQ0N2QxYTI0MzMzMDljNTQ5NTk1MSBsZWdhY3ktdHJ1bmsKKzMwMTc0IDUxZTc0MzIxYWQzZDYwNzNkYjM5ZjQwMDk3Y2ZiYzI4NzJmNmU4OTggbGVnYWN5LXRydW5rCiszMDE3NSBhMjIzZTI1NTQxOTAxY2U3NzY4YzZjZWY1ZWQ0MzE5Yzk2OWE3MjE4IGxlZ2FjeS10cnVuaworMzAxNzYgYWY2NjBjYWIxY2JlOTExZGU5Y2VmZWRhMGI0N2RkOTFhNzY5MmM0MCBsZWdhY3ktdHJ1bmsKKzMwMTc3IGU0MDRiYmVmZjA4MzcxYjM1Y2M2MWY1NTE3ZmI2NDY0ZmVmMWIzNDMgbGVnYWN5LXRydW5rCiszMDE3OCAzZWQ0N2IwNzg1MDgxOWQxZGFmNTMzYzdmYmUxNjAwOTZkNDU0NjNmIGxlZ2FjeS10cnVuaworMzAxNzkgNDVhYjMxMTI3YmY5MjJiOTlhNTQyOWU5Y2Q4MTYzMTU2NDkzNGQxOCBsZWdhY3ktdHJ1bmsKKzMwMTgwIDEwMWZlMzJmNTZmZmVhNTQwOGE4MDI4ZjcyMmRkMjY1M2Q1NzFmZDkgbGVnYWN5LXRydW5rCiszMDE4MSBiZmUzODk2MWNhNDJjODg2ZDUxZDM3MThhZjk4ZTk1MTFjMTAxNzUzIGxlZ2FjeS10cnVuaworMzAxODIgZjkxZDc4ZTE5Yzg2NmY5ZTY4ZGE1ZWQ4ZmFmZDFiMTg5MjFmZTQ5NiBsZWdhY3ktdHJ1bmsKKzMwMTgzIDJlZDM0ZjAxYzgxY2ExMmE3ZTNmNzAwYjFjM2E4OTAwNzljNDYyMDYgbGVnYWN5LXRydW5rCiszMDE4NCBkNjQyMTQ2OTQwODNiZWJkNGQyODRkYzljMGQ3YmQ0YjYzNTVmYjI4IGxlZ2FjeS10cnVuaworMzAxODUgMWUxNzBhOTViNjRmZGVmYjhmZTE2MWE5YjAxMDQxYmZhMTg0NWJhOCBsZWdhY3ktdHJ1bmsKKzMwMTg2IDM1OTNmMmI5MWQ3ZDYwNWU1YzQ1ODA4ZTgzNDhlODJjMWI2ZGI1OTIgbGVnYWN5LXRydW5rCiszMDE4NyA4OTMxN2Q5M2Y2Mzk3MzllMTY2MmM2MmZjZjI2NDRiZTQ3NTFkMTZkIGxlZ2FjeS10cnVuaworMzAxODggZDM0OGIxN2NlYWFkNjkzNjNmOTg2Y2MwZjYyN2FhYjcxOGQyY2JkNSBsZWdhY3ktdHJ1bmsKKzMwMTg5IGQ5MzlhZGJjYTc3NGYwMGRiOWY0YjIwYzgzZDExYTI0NDc1YzcyNWIgbGVnYWN5LXRydW5rCiszMDE5MCAwNGIzYTlmNmJlNDFmNGU0MmU3MDE0OGIyNTcwOTMwY2ZjYzRhNmIzIGxlZ2FjeS10cnVuaworMzAxOTEgZWFiNmQ3YzgwMzQxOTE3OWQyMDIxOTBiOWNhM2I5YTY0YzNhODZiYiBsZWdhY3ktdHJ1bmsKKzMwMTkyIDJmNTIzYWU5MGUwNjBjODdiM2U1NmEyYjM0MjRjNGY2MmMyYzMwOTAgbGVnYWN5LXRydW5rCiszMDE5MyBlODIzMjY5OTY0ODFiMjEwNDAzOGE2MDkzNjQyYjAzODZlMGFmNzdlIGxlZ2FjeS10cnVuaworMzAxOTQgYTM2MDBjNGVjYzhiZjJjMjJhYmU0OWM2YzE0NTAzMzlkZTc0YTQ3NCBsZWdhY3ktdHJ1bmsKKzMwMTk1IGY1NWY1ZTFlMzBiYzkyNTc1OTdhMzA0NTA5OWJmMTNjYWI1MDU2NmYgbGVnYWN5LXRydW5rCiszMDE5NiBkZmNjMjA1N2E3NTVhZTdjNmY5ZGNiODA4MGRlYWUzZGUwNTFlNWQyIGxlZ2FjeS10cnVuaworMzAxOTcgNTM4NDQ3YzlkNTQzZGIyYjQwNTM0ZjJhNGJkNTM5NTc1NzRmMmE5NSBsZWdhY3ktdHJ1bmsKKzMwMTk4IGExMmUxNzI3ODUwYWY5YjA2MTVmY2Q5ZmQ0NGNkMzU0MDI3OTE1MzcgbGVnYWN5LXRydW5rCiszMDE5OSBjZmQ1YTY4MjkzN2UwYzQzNjQ5ODRhZTZhYjU4MzVhYmYwYjNlYjRlIGxlZ2FjeS10cnVuaworMzAyMDAgOTI0YzRmMjJiYWM3OTQ5MWNjOWE5ZjgyMTZhZDFhNzdjNjljZDJiMyBsZWdhY3ktdHJ1bmsKKzMwMjAxIGE1NDM2M2VhNjk0NjA1NjkxYTMzMDc0YjJhMWFlOTExN2M0OWQ4ZGQgbGVnYWN5LXRydW5rCiszMDIwMiA5MDFlNDdjYzhjYWNjODIwZjM1NTIzZTVjMTYxMGRlOTVlZjcwMGQ3IGxlZ2FjeS10cnVuaworMzAyMDMgOTY2YjgyNzlkMWZhZDgxNDRiZTM3YjFjOTUwMzU3ZmM4OGJkZTEyYiBsZWdhY3ktdHJ1bmsKKzMwMjA0IDQ5Njc3OTA0NzJkYmQzZWM1ZmE4YmMwMmUwMmVhOGNkMzc5ZjU3ZjMgbGVnYWN5LXRydW5rCiszMDIwNSBjN2MyYjIyMmJiOGFlOGQ0YzZmZjVjMjgyNGM4ZjJjNDMwZmFlYTNlIGxlZ2FjeS10cnVuaworMzAyMDYgNWZiYTUxZjM3MjliMmRkZjU4NWYzYTk5MmU5MTJiODRhYjk4OGE2YSBsZWdhY3ktdHJ1bmsKKzMwMjA3IDQxYmQzN2JlZjNjNzczYmViNTIzZGMwOTc3ZTcxMmQ3YjhjMzk3MzYgbGVnYWN5LXRydW5rCiszMDIwOCA5YjRjMDE0YjNhMjE4ZTc2YTlkOTc2MGM3ZDQ1NWY0NDZhN2ZhNDQ2IGxlZ2FjeS10cnVuaworMzAyMDkgNTczZTQ4MmVkZWMxYTU4MzY5MTZjMmVjMWEwYmU5NDRjNWQxYzhlZCBsZWdhY3ktdHJ1bmsKKzMwMjEwIGEwM2NlNWQ4ZjI5NzU0Zjc2YzZmZDY4YzY1ZTMyYzM4MjYxNTk1YzIgbGVnYWN5LXRydW5rCiszMDIxMSA3MDlmOTA1NDE1ODUyMTg3NDgwN2Y2YTdlMDEyZWJiOTEyMTcyZDUzIGxlZ2FjeS10cnVuaworMzAyMTIgZDhmZGE0ODE4YmZkNWY1NmFhNTIwNTdiZWJlZjUwMTYwYWVkYjI5MCBsZWdhY3ktdHJ1bmsKKzMwMjEzIDE2YWZmNzA3N2U0YmVlNGFjMDk3MGFhYWQxNDRjNTg0MDEyMWFlZDkgbGVnYWN5LXRydW5rCiszMDIxNCAyYjQ2ZDcyOTJmMjc3NDMwY2ZmYzM4YzRiMzZhYTk2OWQ1ZWNjNWNjIGxlZ2FjeS10cnVuaworMzAyMTUgNmYxZjg0MjAzZWNmMGIxYTU2NTUwN2JkZDAzYzhkYTg1YWJjYWNlZSBsZWdhY3ktdHJ1bmsKKzMwMjE2IDc4ZTg1N2U5ZGQ0NzY5MDU1ZjQ4ODFkM2U4ZmI5OTEzMWM0ODZkMjYgbGVnYWN5LXRydW5rCiszMDIxNyBjNjVlOGNiOTFmNGMzNmQ5ZGY4YjlkZmQ3YWE4YzdiNGY2M2I2YjhmIGxlZ2FjeS10cnVuaworMzAyMTggNzJjZjA4OWQ2MzRhMTk4NDM0OTEyNzMzNjIyNWMxYmJmNGU5OTAwOSBsZWdhY3ktdHJ1bmsKKzMwMjE5IGNhZGZjZTY2ZDg2MTlhNmJjMzU3OWQ2YTIyYWY4YjdhNTZjMjQ2ZjggbGVnYWN5LXRydW5rCiszMDIyMCAyZjNkNmI3OWYxMWJkM2M0ZGJkMTBjYWRjYjM4MWZiZDQ1ZjFjOTkzIGxlZ2FjeS10cnVuaworMzAyMjEgZDA1MjExMjczMWE4ZTI1YmYxNzIxYjFmNTFjMWZlNjlhODU5NDhmMCBsZWdhY3ktdHJ1bmsKKzMwMjIyIGIwYWNmNWRlMzQyMWNlMGY2Y2E5MDQxYmQ3OGUyY2NhYzM5M2U1MTggbGVnYWN5LXRydW5rCiszMDIyMyBjMWM4YmRjNGUzZGJkY2YwYjliZDAyMmE4Zjg0ODg4ZmU1MTFiMDdkIGxlZ2FjeS10cnVuaworMzAyMjQgMDY1ODY0MDRlYzRjZGEzMDIwZDI2OWU1YzdiMjEzZTc5Zjc2NmViOCBsZWdhY3ktdHJ1bmsKKzMwMjI1IDMzNjk2ODgyMWRjYmNlMWFhOGQwNmQwMWQ0ZDg3NzdkYTU5ZTEyNGYgbGVnYWN5LXRydW5rCiszMDIyNiBkYjlmY2ExNDUwNTg0YjUzYTNlOTAwMDU5M2RkOTQyNzEwOWQ4NDI5IGxlZ2FjeS10cnVuaworMzAyMjcgNjBiMzg5YTRkYzA4NTUwMWFlNDU1NjczYmY5MTlmMzY1MWVjYWNmMiBsZWdhY3ktdHJ1bmsKKzMwMjI4IGI5ZTQ1YjgyOGFlMTFhMGU1NWNlYmVkZTZiNTAyYTliNWI4ZDM0YTUgbGVnYWN5LXRydW5rCiszMDIyOSA2NWFjZWM5Y2JlNjkyMjdlNTJmZDZjMzcwMDU1MDhjNjE1NTRhZGM2IGxlZ2FjeS10cnVuaworMzAyMzAgMTYyODhiMDU0ZmMzZjEzMzBkYjc4YTc3YjI1NTdlOGM1MzBlMzMwOCByZWxlYXNlMjItbWFpbnQKKzMwMjMxIDdjMTViZjc3MjZiMjRlNTIyNTAwZTQ2ZTAwMmVjZTI1N2NhZTY2MDggbGVnYWN5LXRydW5rCiszMDIzMiA4YzNlZjUyNGZhYTA2N2ZkYjg2MzdhYzE1OTVjMTFmMjU1ZmFjOWJlIGxlZ2FjeS10cnVuaworMzAyMzMgOTViYzBjMDUyMDM0NTA4N2QzMDUyMTM4MzZjMjQ4YTRmNGU0NDI1NCBsZWdhY3ktdHJ1bmsKKzMwMjM0IGNjZjBiMDI3YjU4NTZkNTdiZjM2YjhkMzYxN2UzMWQzOTA2N2QzYjQgbGVnYWN5LXRydW5rCiszMDIzNSA3ZmQxYmYyMGEwYzBlOWNiYTUxN2YyZmNkMzY5MGRiMDVhYmMwZDBiIGxlZ2FjeS10cnVuaworMzAyMzYgYzEyNzJmM2YyOGY1MTc5YjIzM2QzYzZlMzdjMDAzNjRlNjE2Y2MxYyBsZWdhY3ktdHJ1bmsKKzMwMjM3IGVjYzI3YTFjMzNjYTc5ODk1MmUxMmRlYzMzODAwYzJhMWVmZGNiMzQgbGVnYWN5LXRydW5rCiszMDIzOCA2MjAwOTZmZDU1NjRjMzZkMDM3NjYzZWRiZjk3NGRjYjQwYzk4NWUwIGxlZ2FjeS10cnVuaworMzAyMzkgYzYwOWNkNDkwNmZiNGFlZGFjM2NhYTU0NGEyODI3MTIyZmUyM2UwOCBsZWdhY3ktdHJ1bmsKKzMwMjQwIDQ5ZDAyMmI1ZmQ2NDA1MTkwZjk1NjZmNmFiYzVjNmRkNmVhMzNjODEgbGVnYWN5LXRydW5rCiszMDI0MSA0YzlmZTQ5MDVlOGZhMDZiMjdkNTkyNTdlNzkzZDY0ZmUyMjA0OGM1IGxlZ2FjeS10cnVuaworMzAyNDIgNmIzMWIyNmU0MThkZGM4NDU5ZTI2ZTRhNzc1ZThhYTk4NTBkMGI1ZiBsZWdhY3ktdHJ1bmsKKzMwMjQzIDA5NTQ0MGI5NzVhMWM4NzA1OGZmOTczZjYxNmQ5NTZhNDcxMWQzOWIgbGVnYWN5LXRydW5rCiszMDI0NCBhZjIxN2NjYTNiZmM3YzEzNDhkODQ4NjliZDMyOTE4ZDQyNTg0ZmQzIGxlZ2FjeS10cnVuaworMzAyNDUgYWQyNjNkMjY4MjU1NDgwMjQ4MDllODYyYzFjMmQxZDgxM2JjYTUyNyBsZWdhY3ktdHJ1bmsKKzMwMjQ2IDM0NmEwNzI3MGU4N2RkNjQ5YzhiM2MyMDhhNjIwOWJhM2ZhZmMwOGIgbGVnYWN5LXRydW5rCiszMDI0NyBhZWYzYTAzYTc5ZjEwZTE3N2FlMGQ3Y2I1NmQxZWM2NGFmNWUzMDU3IGxlZ2FjeS10cnVuaworMzAyNDggOGFhNzU2ZTVhY2NjODVmY2NjOWIxNTZmYTdkOGM3NGFmMjQ2N2RjZiBsZWdhY3ktdHJ1bmsKKzMwMjQ5IGZjN2ZkZWMzZmI4NjNkMmM5MTI5M2JhYWQ2Mzk4MmFlMGJjY2U0MDEgbGVnYWN5LXRydW5rCiszMDI1MCAyNDBmZGJlZjhjNjBjMzZhMGI4OGE4ZDE2NGRmYjZjYjdiOWFkZGI3IGxlZ2FjeS10cnVuaworMzAyNTEgMGYxNDA1YWNlNDM3ZTkyNmM5Yjg0NTIyZWYyZGFkNThjYzJiMjE5NiBsZWdhY3ktdHJ1bmsKKzMwMjUyIDg5ZGQ3NGY3YWUzMjZjMGVlMzJlNDIwNGJlYmFlMGEzYTFhNzk2YjcgbGVnYWN5LXRydW5rCiszMDI1MyBkMTYwODE2YjkxZTU4M2QyMzBkYmM4ZDA0ODRjNTI0NTllZDk2ODM5IGxlZ2FjeS10cnVuaworMzAyNTQgZjg1Y2IwODk1NTM1ZGU3NjhhNjBkOWJjZWUyZjMzNzk4Zjk0YjFkMCBsZWdhY3ktdHJ1bmsKKzMwMjU1IGJiNGRmMDAwMGI2ZDFhYzRlNzcxZjM3YTU1MTIxNTVhNjE5ZDJiMzEgbGVnYWN5LXRydW5rCiszMDI1NiA0NGQ3NDY4ZDZkYjZlMjMzOTE4YmVkZjgwOTBmMTg5ODMzN2QyNjA1IGxlZ2FjeS10cnVuaworMzAyNTcgOTJhNDA2MTE1ZTdjZDM0MTY2NmJhMjUwNjVmMGVlMjJkODhiZWM0YyByZWxlYXNlMjItbWFpbnQKKzMwMjU4IDVlZmU2YjBhYzBlNmJjYzIwYTU2MGFiOGYzMDBkZjUwYjI1ODI3YWMgcmVsZWFzZTIyLW1haW50CiszMDI1OSBjNTVlNmU2MDFiOTk4ZDcyYjg5YTU2YjgwZGRiM2JlYmU5NjNlNjE4IGxlZ2FjeS10cnVuaworMzAyNjAgYmM3Zjg5MTNmNWNhODY2Y2FlOGEyMWRiZjcxZjJmOWNhZWU0ZjQ3MSByZWxlYXNlMjItbWFpbnQKKzMwMjYxIDMwMDEzNDI5YmI4NDU5ZTNiODA2NDA3MzY5YmNiYjE0MDBlYjNmYmYgbGVnYWN5LXRydW5rCiszMDI2MiA4ZTI3NTEyY2MxN2RkY2I3ZDQ3YjcxN2M1YmM3NGEzZjY2MzFkZDlkIHJlbGVhc2UyMi1tYWludAorMzAyNjMgMGIzNGY1MWVhYjRlYTQ4N2JhMWMwMWNlOTk0MTM0NmQ2YTcwZWVhMSBsZWdhY3ktdHJ1bmsKKzMwMjY0IDdjNTE5NmYwMTUyNGI5ZTk3YzE4MjI2OGM2NmQ2YTdlZTk3NDcxMzAgbGVnYWN5LXRydW5rCiszMDI2NSAyZjI4NDM2MDYwYzQ1NjU0YmI4NTgxZmNjMDc1MTRjYTJjNTllMGE1IGxlZ2FjeS10cnVuaworMzAyNjYgMTQzOTIyYTQwZmFjNmY3ZGQ1MDA0NTQ1ODY5NTBhODVlMmMzMTlkZCBsZWdhY3ktdHJ1bmsKKzMwMjY3IGZiYzg1YWFhMjYwYmExYWM0ZDU4OWE3YTU0YjI2OTc1NTE1YjcwMDggbGVnYWN5LXRydW5rCiszMDI2OCA4OWM5YzZjNDA1ZWY4YzQxNWRlODdmMDEzNjYwNmQwNDU2MGI2NmU5IGxlZ2FjeS10cnVuaworMzAyNjkgNThiZDcxMDBlZTE1N2YxN2I4NWQ5NDQ4MDFhYzFlYzJmZTU0ZmNjMSBsZWdhY3ktdHJ1bmsKKzMwMjcwIDgxNmI4ZGRjY2ZlMTY1MTYxNGQxNjQwMTg5OTljZDY4M2FjOTM5MWUgbGVnYWN5LXRydW5rCiszMDI3MSBkYjkzODhmMzdkOGM0NzFmMWZkNTRkOGMwNzY3NzY4NjE5NWFmNzg3IGxlZ2FjeS10cnVuaworMzAyNzIgMDY4NjgzNzZhYTI4ZDM5ZmM2ZTllYTI4OWQ5MTU1NmU5Nzk3YWNiNCBsZWdhY3ktdHJ1bmsKKzMwMjczIGEyZDQwMmU3Y2Q4YWRkMzJhNzhiZmFkMjViMjJhZTczZGY0ZThmZDggbGVnYWN5LXRydW5rCiszMDI3NCBjZjczNjYzY2ZmNTllYTQxNjNkOGYxMjk1MTMzY2U4ODA2MjFkY2UwIGxlZ2FjeS10cnVuaworMzAyNzUgNDdlN2M3MGU4NDFmZTMzMDI3YzRlYjlhOTZjNjlkZWRhZGNjNmZmNSBsZWdhY3ktdHJ1bmsKKzMwMjc2IDBmMDYxNTZjOGUwMzc2NmY5ZmY0ZmQxODk3NTg4N2VlY2YzZTFkM2IgbGVnYWN5LXRydW5rCiszMDI3NyA1MDdhYTk2YTEyOGZmZGFkOTQxN2JhNTRlOWVlZWJjNWUyNTRhZWNhIGxlZ2FjeS10cnVuaworMzAyNzggYjJiNDc5NzA1MmM2ZmRjZGNiZmVmYzYxYjk0MzNhOTRjYzMyMWI1YSBsZWdhY3ktdHJ1bmsKKzMwMjc5IDI5OTYyMWVjYTlhZDUzMTJlZTQyZjAzYWY3NTI5NTdmZmQwMTU2ZWQgbGVnYWN5LXRydW5rCiszMDI4MCAzMGE3NzM4OTQzODE4YjdhZDUwMjI2YzBiYjBkZThhNjg0NzEyNmM4IGxlZ2FjeS10cnVuaworMzAyODEgODJkOGI1YzZhYzRhN2ZjMmVlN2Q5ZWUwYzgyOTA5NjZhMGE0MmVkMyBsZWdhY3ktdHJ1bmsKKzMwMjgyIDI1ODVkNDU5NmQ5MDNiMGExMDgwZThhYjVhNDNmNjY2ZDQzODE0YzUgbGVnYWN5LXRydW5rCiszMDI4MyBmZmMxZTllNWZmOWE3MjQ3Y2VhNmI1NjdhNTJiZjg5YWFlYTU4Mzc1IGxlZ2FjeS10cnVuaworMzAyODQgYjIwNGI0YTcyYjRlZThiYWYwNDUwYzlhNWIzMmZiMzhjMTRjYjA5YSBsZWdhY3ktdHJ1bmsKKzMwMjg1IDIzMTlkMTNkNTRmNTc1MTU1MDU4ZjU3MTAzMjA3MzBjYzI3NTk4MDQgbGVnYWN5LXRydW5rCiszMDI4NiA3ZjgxZDE2ZTJjNWQ3YWEzODRjZWMxOWYxZTM3MjQ4ZDJhMTIwMGIyIGxlZ2FjeS10cnVuaworMzAyODcgODU4ZWUxMTcxNGE2MzI0MjdlMzNjODdiYzZmODFhMjkxNmE1ODBmOSBsZWdhY3ktdHJ1bmsKKzMwMjg4IDlkMGU2MmM5YTEyOGQ3YTE0NzE2MmIzYjU2N2E2ZmMxYTZlNmMyYjggbGVnYWN5LXRydW5rCiszMDI4OSBlZGYzMDRlNjBjYzYxZWQ5YjZlNDExZTkyOGRiODA5NWI1MTFlOTFjIGxlZ2FjeS10cnVuaworMzAyOTAgMTc4ODQ0OTg4ODEyZjJkZjA2MjhjMjNmMjA1YmJkYzY5ZDUzYzk1YiBsZWdhY3ktdHJ1bmsKKzMwMjkxIDIyNTExOTVhM2RkMWZjZTcxNGY1MWJmOGRiZTE3YzU4YWVkNzMwYmYgbGVnYWN5LXRydW5rCiszMDI5MiA3YzhhZjE5NzllNzg4NWI3Nzg5OTVlNzM4NDUwMjk0ZDc3ZDI2ZTY3IGxlZ2FjeS10cnVuaworMzAyOTMgOGVjY2ZhZTA0YmI0ZjZmZTY2MTk0MWM4Mjc4NGI1ODFjMjA3ODg2ZCBsZWdhY3ktdHJ1bmsKKzMwMjk0IDY5MzI3OTQ4MTdjMmQxZGYxMTZhOTRlZjYzMzdjMjRmM2Q1NjQxN2MgbGVnYWN5LXRydW5rCiszMDI5NSAwYzg1YTk0N2UyYzAwMGQ2NjdiOTM0YjMyYjJiY2YwZWEyNDY0ZWE2IHJlbGVhc2UyMi1tYWludAorMzAyOTYgZTA5NGEwM2E4MGZmNDVlZjZjZjM0YzFjMmM4YjU4Y2JmOGYwNzYwMyBsZWdhY3ktdHJ1bmsKKzMwMjk3IDU3YTAwZGI3MzFmY2YxZjJjY2QzNGQ4MjcyMTdiYTkxNGExNzE1ZTMgbGVnYWN5LXRydW5rCiszMDI5OCA2YmJiZTY3ZDFlYWY3MTczMTlkZjdlZWM2Yjk3OTZiYmVkODk3YWNjIGxlZ2FjeS10cnVuaworMzAyOTkgZDZmNDgzZmM5ZTAyZTNkZWQ3YmZlOGZkZDAzYTgyYzgwZDMwMjdjNiBsZWdhY3ktdHJ1bmsKKzMwMzAwIGZlYTkyZTdlYzY3YWUzNTA1NTkwOTcyNjA5ZDFkZmI2ODA1MTNlMjQgbGVnYWN5LXRydW5rCiszMDMwMSAyZTIxOTVmZTZjMjhhNzk0ZmZlOWM1NmQzNmVjMWM3NTE5MzMzMGVkIGxlZ2FjeS10cnVuaworMzAzMDIgZmIzNmQ5YjUwZGY1OGM4NzFmOTRhZWExYjliN2ZjYjJhOGQ5NjQyNyBsZWdhY3ktdHJ1bmsKKzMwMzAzIGUxNTM5NjFmOTYxZjJmNmJhNzE3NzdkMjIxMDI5NDU2YWUxNWQ5NWEgbGVnYWN5LXRydW5rCiszMDMwNCAzYzMyYTk0YjBiMTc2MjYyOWFiOWIxYmMwYWYyZGE2ZGQ4ODgxODQ4IGxlZ2FjeS10cnVuaworMzAzMDUgMTNkNTlkYmZiOGQ0NGFlNjRiYmFkZWJiNDAxMTY1YmI1ZDJhNDQ0ZSBsZWdhY3ktdHJ1bmsKKzMwMzA2IDdkN2EwMWJmY2FhZmI4Njk3NWRiZTY3ZDBkNTI4OTA4ZDI5Zjk0OTQgbGVnYWN5LXRydW5rCiszMDMwNyBmNjRjOTY5MjI3MDhhNTEwNGJmYjA2ZThkZTdhNGY2ZGU3MzliM2FhIGxlZ2FjeS10cnVuaworMzAzMDggZjRiMWJlZWQ2NDA1MmQwYjNjNTFiNzZkMjVhZDg1NGEzMzY5MWQ0ZCBsZWdhY3ktdHJ1bmsKKzMwMzA5IDllNDA5MTA3YWVlYWExZjNjMzFiODMwYWE3ZmJiYTQ3ODg3NjhkMjMgbGVnYWN5LXRydW5rCiszMDMxMCBiYjE1NDZiNDYwMWJkMGQyZmJlMTdkMTEwNzc4YmExYzcxNzc0NTRmIGxlZ2FjeS10cnVuaworMzAzMTEgNThkNzVhM2M4YWZlYTdlYTRkZjMxMzE3NzNmN2U0NjFmM2JiMDdjMSBsZWdhY3ktdHJ1bmsKKzMwMzEyIDNlMWJkMTM3ZDNjMmI4OGE1ODI0ZTFmNWRhNjNiNzEzYjIxYWRiMmQgbGVnYWN5LXRydW5rCiszMDMxMyA1Y2NkZThhMTUyNmE0MGQ5MmRjNTRjOGRiNzliNjdlYzNmMTA5OWM1IGxlZ2FjeS10cnVuaworMzAzMTQgNzljOWEwN2IyODk2NTkyODZmMTQzNTFmZGEzODI0MTg5ZGE5NmE4NCBsZWdhY3ktdHJ1bmsKKzMwMzE1IDE1YmI2NzZmMmU4YzBmMmMyZjhkODQ4ZTU3MTIzZTEzMWRiZDVhYTUgbGVnYWN5LXRydW5rCiszMDMxNiAwMDA3NWYxZWY4NjZiZjQ0YWM3ZDgyNDBmNGUxYjkwY2I5NTNjMzM2IGxlZ2FjeS10cnVuaworMzAzMTcgYzQ0ZDk5NGIzOWU1NDI2OTYyNDRjNTg2ZWFhYWQwNWFiYmExYWE3YyBsZWdhY3ktdHJ1bmsKKzMwMzE4IDc4Njc5OGU4NjQ2OWNiODA4YzMwMDhjYzVlNDYxOWRhMTM3MmVmOGEgbGVnYWN5LXRydW5rCiszMDMxOSAzN2VmMDE3NjQ2YzQ2MThhM2ZjMGJjYWZhMDAzMjhjZGViOTYxYmM0IGxlZ2FjeS10cnVuaworMzAzMjAgZDJiMDM2MjgxNDAzMTNiODhhMWQwMjM0NmY2NjkxMzM0MjQwNTJlOSBsZWdhY3ktdHJ1bmsKKzMwMzIxIGE5YjUyMmU1NDVjZjZmMDgzZTA5Y2ZiNzlhOWM4NWRlZDYxMmViYzAgbGVnYWN5LXRydW5rCiszMDMyMiA1NDE5ZWY0YTRkNzBiMGM1ZmRhMjlhODQ4YWUxYWQ3MjFkYTk4NzNiIGxlZ2FjeS10cnVuaworMzAzMjMgNjczZGNiOWI1MWNlMmJkZjEyZGRhMzUxMmVkYzIyYmY0ZmNiOWUwMyBsZWdhY3ktdHJ1bmsKKzMwMzI0IGZjNTE2OWFhNDFjZWY4NWI5Njk3YzM5NDJmZGY5NTUzMjViNjU1MDEgbGVnYWN5LXRydW5rCiszMDMyNSBlYTc1OTE5Yzc2OWRiNjVkYjJmNDliNTk4ZTA0MzE3ZjVlMjZhODgzIGxlZ2FjeS10cnVuaworMzAzMjYgODY1YzU5YjViZmQ3MTI4MjhmMzRjYWQ1YTM3N2Q4Y2UwMDkzZjU4NSBsZWdhY3ktdHJ1bmsKKzMwMzI3IGJjYTU0MDliNzZlY2ZiOTM0MmQyNGJhYTEyMzIxZDk1Yzg2OWViMzkgbGVnYWN5LXRydW5rCiszMDMyOCA4MDMzMDI1NzMxNTI3YmU0YWIzNDA5ODhlOGFmYjJkNjlhNDBkNjYwIGxlZ2FjeS10cnVuaworMzAzMjkgNWY3NGUwNDAwMTJkNjllZjgzNWUyYzY2ZWY1YTdhNzNhNjZjZmQ1MCBsZWdhY3ktdHJ1bmsKKzMwMzMwIDNlZTU0ZmJmZTg0NmQ4OWVkZjBlNWFkZDNhOWU0YjAxOTI1OWVlZjcgbGVnYWN5LXRydW5rCiszMDMzMSAyY2U4Y2YyODRiMTUwYzA4MTgxNDU0MjA4ZjQ1ZjUyM2NiYmFhNDYwIGxlZ2FjeS10cnVuaworMzAzMzIgZGFhNDU4YjI4Mzg1MWJmZDNjOTRmZWUxOWE5NDhiMWVhNzQ5NGFjMyBsZWdhY3ktdHJ1bmsKKzMwMzMzIDY2MDk5NmEyOGVlOGM0ZTZiMTY2OTVmMWUxNzlhOGRjMzY1N2I0YjggbGVnYWN5LXRydW5rCiszMDMzNCA3MDQ4NDJmMDViMDkxZTU4ZDNlOTNmNGJlMzU2OWZiMDkxZjE5ZWNlIGxlZ2FjeS10cnVuaworMzAzMzUgNmNmNjM3NzY3Y2UyNGQyYzNhODExY2NkNmIyMGYwNjE4MjgwYTNmZSBsZWdhY3ktdHJ1bmsKKzMwMzM2IGI0Y2E1YjliYTkzMzU1MjhhYTY4YmNjYWFjMDk4MjlkNDExMTZjYTQgbGVnYWN5LXRydW5rCiszMDMzNyAyNzUyZTlhYWU5N2JlZDYwMWRhZThmY2ZjZWI1YjUxNjE1MjUyMWQ0IGxlZ2FjeS10cnVuaworMzAzMzggM2NmNWE3ODUyYTJmM2ZkNGYwYjBhNmRlZTI2NmVmOTkwNjliYjk4YiBsZWdhY3ktdHJ1bmsKKzMwMzM5IDNhMTMwMDQ3MjkwMTYzYTA1OTY2ZDNhZGFjMjQwMTQxNzc5M2ZhYjkgbGVnYWN5LXRydW5rCiszMDM0MCAwMzY5MTk5YTI2NWFmODQxZmZhMTYxNGFiMzE1OTE5N2VmNWQ0YmM4IGxlZ2FjeS10cnVuaworMzAzNDEgMDI5ZWRhOTM3YmI0NzQzZjBlMTcxNjAzZGE2MzBmYTQ4ZTdmMjU4NiBsZWdhY3ktdHJ1bmsKKzMwMzQyIDgzZjhiZDZhZTgxMTcyMjBkMmIxMmZkMDc4NzE2MzljYjVkZGZiMWEgbGVnYWN5LXRydW5rCiszMDM0MyBhYWNhOGEzYjIzY2QwNWQyMjI4MzA5OGYwMTk3NmY2Y2ZmMzFlYzUwIGxlZ2FjeS10cnVuaworMzAzNDQgYTZmMGJjNmU4YjM4ZGU1Zjc3MDYzNGM0MDQ5YmU1NjFiYWZlMmU2NiBsZWdhY3ktdHJ1bmsKKzMwMzQ1IGYzMDVhNTc4YjM5NDBlYzgzY2I4NmY3N2ViZWJmNzlmOTdiOGVlYTQgbGVnYWN5LXRydW5rCiszMDM0NiA0OGFmYjhlMTQyMGJiODZmOWM5YWVmZDhmYWM0YWVjYmE4YmJhOTRiIGxlZ2FjeS10cnVuaworMzAzNDcgNDIyNzlhMDIxMjVlMjg0NjFlYTQ3NGQ2MDY0ZmMwMDQ0MzBhYWNkOCBsZWdhY3ktdHJ1bmsKKzMwMzQ4IDIzYTk4MGViOGFmYmIzNWEyOTMzZTJlOGJlZTM2ZGJhNjkyNTFkNDcgbGVnYWN5LXRydW5rCiszMDM0OSAxZWFiMjZmNzE3MTk5ZDdjYTI4MzY4ZDdhYzRmYTI0NDM4YzY2YzBlIGxlZ2FjeS10cnVuaworMzAzNTAgZjQ4M2VmY2EyMjRjNmNmZGIzNTdlMGY1N2Q0OGNlNzU2MzNmYTMyYyBsZWdhY3ktdHJ1bmsKKzMwMzUxIDNkMTA2MGRiODA2MjhiYzVlOTQ5ZmQzNzNlMjg2Y2U5ZTBjMzc0ZTIgbGVnYWN5LXRydW5rCiszMDM1MiAyNmRmNjAxM2IzMDNkNGFiZGU0ZGYzMWQ1ZmEwZWU2NGQ1MDZhNzkwIGxlZ2FjeS10cnVuaworMzAzNTMgZDE3N2RkMGNhOGY3MGU0MWJlMDFjN2ZmYTBlMzM0NWQ5ZTg1MDA5NCBsZWdhY3ktdHJ1bmsKKzMwMzU0IDM1NDY4YWQ1MDIyYTc3NDU2OTFkNTA5NTIzZWM0MTk5ZTZlMzgwMWYgbGVnYWN5LXRydW5rCiszMDM1NSAxMjBhZmJhMmRiZjY0MDdjZDc3YjU2YzE1ZDI5Njg1ZTgxMTczOTBlIGxlZ2FjeS10cnVuaworMzAzNTYgYzI0OTYwN2VmNTM1ZjExMjg0ZjdkMzA1NzdiZmUxOGE0NTIwOWIyOCBsZWdhY3ktdHJ1bmsKKzMwMzU3IDMxYjFiMDQ2MDMwM2Q4NWQ3NDcwZGE4MDE5ZjI0N2E3YTY1ZGVjYmIgbGVnYWN5LXRydW5rCiszMDM1OCA5MDkzNGU0YzkxYmE0YmNkMjg2NmUyZWZmN2IzYTY0ZThlYzJkN2ZmIGxlZ2FjeS10cnVuaworMzAzNTkgNmVjMzg2YjQ1ZTFmYWVlMTY5Y2JiZWQ3YTMzMjQ2ZDgyYjYxZThiNyBsZWdhY3ktdHJ1bmsKKzMwMzYwIGQyMTk5ZmMxNGQwNjI0YWQ4MGQ4NjEyNTMzZmEzNGUxYWM3YzU4MWIgbGVnYWN5LXRydW5rCiszMDM2MSAyMTMzY2YzNTViZmM4YTJjOTI1MDk3N2FiMDIzYWMwZTEwZTUyNWE1IGxlZ2FjeS10cnVuaworMzAzNjIgZjBmOWFjY2E0MTY0YWJkNzhiNWUxZDYwNGE2ZDhlMjljM2M2NjMxNyBsZWdhY3ktdHJ1bmsKKzMwMzYzIDU0YWFjYjg3YmVkYTMwMzdkZmFiZmUzYmYzZTY3ZjkwMjgwMDZmZWQgbGVnYWN5LXRydW5rCiszMDM2NCBiNjI1ZjFiZjcyZjkwZDA0YzQ5NTA5M2I0MWQzOWM0ZTM2OGUxMTVlIGxlZ2FjeS10cnVuaworMzAzNjUgNDVmYzBlNGI1MDg0NTIyNzViNDZiYWQ5MmIyZTVlNzFjMjQ1YTQ4ZSBsZWdhY3ktdHJ1bmsKKzMwMzY2IGI5YzE1OTdkODEwMmU0NWNhNDVkOGIzZTZlYjZmMjI2YmZmNDRiYTkgbGVnYWN5LXRydW5rCiszMDM2NyAxMjc1M2U3YjE1ZjdlODZiZTE0MzU2ZTU0ZDEwOWNmMzY1Nzk3MWQ2IGxlZ2FjeS10cnVuaworMzAzNjggODA1M2JjMGI4YmI1ODFiNGI4NjcwY2E1ZmRjYzZiNjY0ODdmMWI1MSBsZWdhY3ktdHJ1bmsKKzMwMzY5IGJjMjBlOGI0NmRlMGQwYWU3YWVmMjY4ZTQ0ODhkNzg2ZTI2MmZjMGIgbGVnYWN5LXRydW5rCiszMDM3MCA5NTUxMGYwYTA2MjQ1ODRiNDFiYjdiNzVmYWY4ODY1Yzg5ZmNmNTFjIGxlZ2FjeS10cnVuaworMzAzNzEgMmE5NWI3ZDVmYmRlMGQ0Y2U3MDc0MzEzMDJiNzY2MzFiMGQwMDBiMSBsZWdhY3ktdHJ1bmsKKzMwMzcyIDE0MDY0NGYyMmY2NDhjZGYwYjNkM2NjNGNiNWQwZTk4ZDllNjA5ZmMgbGVnYWN5LXRydW5rCiszMDM3MyAwYTBjNzU5ZWQxNjc5OWFhMmUwNmNlOWYzYzk4YmY4NGE0MWIyZDRiIGxlZ2FjeS10cnVuaworMzAzNzQgNGNiZGJiMGJkZDVkNGFlYzEwMjVhNmE2ODg2NmM4NDU5YWJlYTMwMiBsZWdhY3ktdHJ1bmsKKzMwMzc1IDNiYzJhZjQxYzAxNjU3OWE4ZTFjMmFmNGMzYTdhNDFjNzIzNTkzNGIgbGVnYWN5LXRydW5rCiszMDM3NiAwOTZkMTJkYjI2MzY1MjNjZTViNzU1ZmRjM2NjMzhjNWI3MDhmYzc3IGxlZ2FjeS10cnVuaworMzAzNzcgYTQ0NzRlMTRmYWM5N2I0YTYyMjlhMDVmNzc2MjMwMzlhZmUxMjFlOCBsZWdhY3ktdHJ1bmsKKzMwMzc4IDE4ZDRmNzFmNWVkNmE5MzZhNGIwNzNiODQ2ZDBkYzkwNjkyZGNiNGIgbGVnYWN5LXRydW5rCiszMDM3OSBkNWFkMjlhNDczZTFkOTkwYTMwMTE0MTBkZGJlZTNjNjJiM2VmMGUxIGxlZ2FjeS10cnVuaworMzAzODAgMmM1MmFiZWU3ZDEwNjJjNTAwZWMyOGNhZGE3MTUwNDFhMmY0ZDUyYyBsZWdhY3ktdHJ1bmsKKzMwMzgxIDk3YzVhYTgyYjNlOWMxNTI0YmJhZmRkNzQ5Y2E2NWE3MmEzMjI2MjAgbGVnYWN5LXRydW5rCiszMDM4MiA0MGRiNzgxNTkxNzc2MjBkZTEzYWU5YmUwMWRiZDcxNjBlNzNjMThhIGxlZ2FjeS10cnVuaworMzAzODMgN2VhNzYzNzM0MWQwYTE0N2E0YzM0NmViNThiNWIzZDI2MzNhMWEyYiBsZWdhY3ktdHJ1bmsKKzMwMzg0IDQ3ZTZhYjhkNTc1MWQ0YTA3ZjhjNjY2OTg1NmQ4ODlmM2MzMTE5MzggbGVnYWN5LXRydW5rCiszMDM4NSBjY2JhM2I2NmQ2NzY2NjFmNmUxNjNlMzEwOTkxOGRlZDA0YTM5NzNhIGxlZ2FjeS10cnVuaworMzAzODYgYmNhY2EzNmE1ODNjYzQ1OTNiNWRlZDkxYjc3ZjEwYjkzOTRmOTA5ZSBsZWdhY3ktdHJ1bmsKKzMwMzg3IDA3NDkxOTcxNTM1NWFjODZlMzczYzgwYTUzM2Q3ZWU3ZjViNzFhOTcgbGVnYWN5LXRydW5rCiszMDM4OCA2ODhmYTZjZGFiOTQzYzU4MDA0MDUyNjk3OGRlODM2M2E2NWRjMmIyIGxlZ2FjeS10cnVuaworMzAzODkgODk5OWQ3MmMyZTZjZGViMWE2MDBmZDE1ZDE5N2NhYWRjNDdiYWEyMSBsZWdhY3ktdHJ1bmsKKzMwMzkwIDAwMzJkYmVlYzM5MWMxNTcwMjJmOGQ0ZTQ3ZjdkZGYzZDdlNGI1MWYgbGVnYWN5LXRydW5rCiszMDM5MSA3Y2RhMzYwMzU2N2Y5NjdhYWIyZGE3MWUzYWM2YjU5OWM0NGUwMjBkIGxlZ2FjeS10cnVuaworMzAzOTIgYzI1ZDdkMmMxNzEwNDI2Yzc2NjE2OTMzMzQxZjFhMzAxOTM2OTUwMyBsZWdhY3ktdHJ1bmsKKzMwMzkzIGZiY2YzYzRiNDI3MmUyMTVmYzJkNzVmNWQzMTU3YmQyYTgzMjdlMTUgbGVnYWN5LXRydW5rCiszMDM5NCBmNTE2MWNhNGRkNjgwZDRmYmUzM2ExOWFhYzc5YjYzNDBhNjU0MjdlIGxlZ2FjeS10cnVuaworMzAzOTUgYTQzYTJiMThiNWM0OGJmZTZjZDdhZTNhMjExYTBkMmExMjNkYzhhMCBsZWdhY3ktdHJ1bmsKKzMwMzk2IDA1MDE2YmI5MTc2NmZlOWQxYjE5YjE2YjcxNzUyN2MyODY4YmMzZmYgbGVnYWN5LXRydW5rCiszMDM5NyBiOTM4NDUyMjZkYjY4ZDgzMmMyYWExODQ2ZDVhMzE1YjljNWNkOTEwIGxlZ2FjeS10cnVuaworMzAzOTggNDJmMTlhNmM2NTcwMWNkZjM2NTAwZTQ3MGU5YjBlZTBkYjE0YTI0YSBsZWdhY3ktdHJ1bmsKKzMwMzk5IGZhZjk2NWQ3MzgyNGJmMjQ0ZWI2NGYxZmVhMDI4ZWUyNjlhMGJkN2MgbGVnYWN5LXRydW5rCiszMDQwMCA5ZDA1ODBhY2I0NWZmNDVlYTc1NzFkNDMzMGM5ZmE2Y2JlNjE1N2UwIGxlZ2FjeS10cnVuaworMzA0MDEgZGJmYzNlZjdkMDAzNTBlMDllOTU1M2U5NTY0OTczNjRiNWIzZGU5MCBsZWdhY3ktdHJ1bmsKKzMwNDAyIDMxYWRlYTQ5YTU1OGY3MjhjZTkzMzk5YmVmZWE4ZjViY2ViMjE2MWUgbGVnYWN5LXRydW5rCiszMDQwMyA5NjQ2ODg3MGQyMDZkOTRmMWE4YTRkOWNkMDQzMDE4MTk0YTdkMjgwIGxlZ2FjeS10cnVuaworMzA0MDQgM2RiMTY1ZjAyMTA3NDM2M2IxNjA4YWFhYjE1YzM1NzA0ZWY2NmE2NiBsZWdhY3ktdHJ1bmsKKzMwNDA1IDMzZGNmNGZkMGZmOTAzZmJkZmUzMDc2Y2U4NGI4MmJkOGI2OTU0ZDggbGVnYWN5LXRydW5rCiszMDQwNiAyNGNiNjIyMjUwNDBjZWJiMjgyYWJiMjRhYzFjM2FkYzI5YjhlMDBkIGxlZ2FjeS10cnVuaworMzA0MDcgZmZhNGFiMzcwMzZmMDE1ZmU5OTY0MGQyMTRhOWIwOGM4ZjE0YTEwZSBsZWdhY3ktdHJ1bmsKKzMwNDA4IDMyZTRjNzc1MzQxNjJjNWY3YWZjZGE0ZDQxZDAxYjhiMDI3NzBjZTIgbGVnYWN5LXRydW5rCiszMDQwOSA2YzUzNWRjZWRhZDMwM2MxM2U0MzQ3MmI5ZDBmNzhkMjc4MzE5NzNkIGxlZ2FjeS10cnVuaworMzA0MTAgNzk0NjZmMDRmMWM1NGI1MmI3MmVkMjFjOWRhNTI3MDkxNTU1ZjY1YiBsZWdhY3ktdHJ1bmsKKzMwNDExIGI5MWQ5NWU5YjI0OWE3OTMzNWE2YTY2MDljMTFlNmFhZmZhZGFmOGIgbGVnYWN5LXRydW5rCiszMDQxMiBhMDg1Y2MwNDc2ODEwOTU5ZGFjZDBjMDc3Nzg4ZmUwZjU2ZmQxN2MxIGxlZ2FjeS10cnVuaworMzA0MTMgODQ2OGUzZmMzYTJiYzcxY2MyYjcwODg2ZDk2MTRjMWNjMDQzNjMxOCBsZWdhY3ktdHJ1bmsKKzMwNDE0IDNkNWFiZDNkOWU0YmE4MDUxOTQzZjg1NWM0NWJmMGI1MmIxMjQ1YjUgbGVnYWN5LXRydW5rCiszMDQxNSBiYzMwNTg0OTUyMmRmNzg3Mjk4MmU3MjBiODBkMzY1M2I4ZWY1YmI5IGxlZ2FjeS10cnVuaworMzA0MTYgYTgyZDkyZjc4NDcyYzcwN2U2ZTdlMTFjNTBmZWVkNDNkNWFhZGE5NyBsZWdhY3ktdHJ1bmsKKzMwNDE3IGJkMGM0MDcxOTU4MzZiZDBmMTk5ZmJkNmJjZTI3Yzk2ZDM4OWMwZTggbGVnYWN5LXRydW5rCiszMDQxOCA2ZTU0MWE3MmFmMWFlNjU0Mzc3NDJkMjg0NTZlN2I5MjQ1MzMwN2I2IGxlZ2FjeS10cnVuaworMzA0MTkgNWNhNzA3MjM2MWJkOTVhMDBkNGFlZTEwOThhZDIzNmIxOTI1NDY5YyBsZWdhY3ktdHJ1bmsKKzMwNDIwIDcyMzcyMWVhNDAyNTk2YzQzNWVlNjZmYzc3NTZmMjE1NTYyNzYxN2UgbGVnYWN5LXRydW5rCiszMDQyMSA1NTE0MTE0NGRhYjVlNTA5MTJiMTA3NDQ0MGM1YmU3YTQ1NGNlMWU1IGxlZ2FjeS10cnVuaworMzA0MjIgYmVlYTQyMTUyNzg3NDNkYTExZWFkYjUzOWJjYmVlYmE0OGE3MDM4MSBsZWdhY3ktdHJ1bmsKKzMwNDIzIDUyNjc0MmE3NGQwNjViM2IzZmY0MzI2ZDZkMzNjNzViOTE0MGYwNzcgbGVnYWN5LXRydW5rCiszMDQyNCBhY2RiMzliNzE0YjFlZWU0OGQ0ZGJlYzIzMzgxYjgzNGUwYTAyMzU1IGxlZ2FjeS10cnVuaworMzA0MjUgMDJjNmZkNWNmNzViY2Y1NmZiNGJlYzc3NmJmZTAxODkxMTBjZTA4NyBsZWdhY3ktdHJ1bmsKKzMwNDI2IGJlNzMyZTIxOWVkMTAyNjdkOTAyNzgzYmVlNzMxNGRiMTRhMjUyZGQgbGVnYWN5LXRydW5rCiszMDQyNyBhNThjZWNmNTliMDYzZjU1NTFjOGI0YTEzYzQ1NGMwN2IwNDcwYTJlIGxlZ2FjeS10cnVuaworMzA0MjggN2I1YTdjZmMxN2E5ZTUwMTdmNzUwM2QwMzJhZTVhYmM4NWUwNzRkYyBsZWdhY3ktdHJ1bmsKKzMwNDI5IDk0YmM4MTJhM2M1Mjg1MTU4ZTYwZmUxMjQ1ZTQxNzlkMjFlYjhmNzUgbGVnYWN5LXRydW5rCiszMDQzMCAzNWZjYWJlZmM5ZDJmZDM1Njk1NzI5ZWE5YWQ2YjRjZjJiNGEyMzVlIGxlZ2FjeS10cnVuaworMzA0MzEgZjE1NTk0NjBiOTUyNjI2OTMyYzQ2NTFmNzExYzg1NGE3MWJiMjdhZCBsZWdhY3ktdHJ1bmsKKzMwNDMyIDE2MzU2M2NjYjdkNjBhZGY4NGU4YjUwNjA0YTliNjU2M2NlZjEwMTkgbGVnYWN5LXRydW5rCiszMDQzMyAyNDBhMjQwMWM0MDRkZTZhZjk5ODNjMjRjZDAwOTYzNDNjNDVkYzA4IGxlZ2FjeS10cnVuaworMzA0MzQgMzg5MjdmZDU2N2I0ZTRmMmY5Mjg4ZjhmZGM3MzRkMzE3OTkzNWI0YiBsZWdhY3ktdHJ1bmsKKzMwNDM1IGI4MjM2NmJjNTQzODQyOGE5ZDk1ZDZjMjRjOGU3NmRhNWU2OWJjZGMgbGVnYWN5LXRydW5rCiszMDQzNiAzYzA0MWIxOWYxZDM2NzdhM2MzOTFhYmJmNTViOGM5NDIzNDVlMzdjIGxlZ2FjeS10cnVuaworMzA0MzcgYjhjNzJlODZhMTJkNDA3MDBiMWJlMDc0NjczMjk0NWViOWZiZTEwMyBsZWdhY3ktdHJ1bmsKKzMwNDM4IDFjNThmZTVjNzY5ZjNjMDZlNzFiZTNiMDAwMGM4Nzg5MDljYTA1MmYgbGVnYWN5LXRydW5rCiszMDQzOSBhNWM4Nzk3MjZiM2EzMjMzNzUxNmJmNWIxMGIxZDFiZDI5NDJhZjVlIGxlZ2FjeS10cnVuaworMzA0NDAgYjljNDYyZDIzZjNjNjUyMTRkNDdkMTZhNWNiNTRjZjcyYjY0NDJjZiBsZWdhY3ktdHJ1bmsKKzMwNDQxIGE1NzNmZWRlODhlMmIxOGU0ZTdkMWYwNzhiZmZhZjk5YmZmMDkwZDcgbGVnYWN5LXRydW5rCiszMDQ0MiA1ZGY3YTI4NGVhZjRlZDc3MWYxNzc0YzJiM2I0NjVjYTdkZDVmOTk3IGxlZ2FjeS10cnVuaworMzA0NDMgYjc5MGRhMDY3MWY3YTcxZTkwMjBlNDEyODM0MWI1MGE3YjllMzY0NCBsZWdhY3ktdHJ1bmsKKzMwNDQ0IDRiNGNlMjQ5MGZlMmVkN2VlYzUxOWI2YTJjY2ZkODY0OTk5MjgyYTQgbGVnYWN5LXRydW5rCiszMDQ0NSAxMDM4OTljZTg4YjJmY2EzZTdmMWU3OTY0YmFhMTllZDFiNjkzNzMwIGxlZ2FjeS10cnVuaworMzA0NDYgYmY5ZTA0MjQyMzdmNTE1NjIyZDgwNTBlMWFjYTBmYmI2NDFiOWQyZCBsZWdhY3ktdHJ1bmsKKzMwNDQ3IDc3NmYyNzBhNmVhOWM3MGJmZTY3ZTQ0ZTQxMzU0YTEzOGViMzkyYTUgbGVnYWN5LXRydW5rCiszMDQ0OCA0NDQ4ZmY4YjMyMzkwYmZkOTI1ZjY5MzUzZDVkZGExNzE1YmUxMDI3IGxlZ2FjeS10cnVuaworMzA0NDkgNGMwM2E0ZmFkNzJlZjI2MTcwN2I4ODJlY2U0MzEwZTJlMGU4NDFlNyBsZWdhY3ktdHJ1bmsKKzMwNDUwIDg0ODc5ZTE4Mzc3Mzg0OTQ5ZmEyOWJjYTYyMWVhYjU1MGNjMzk5ZjMgbGVnYWN5LXRydW5rCiszMDQ1MSA5MDk5ODA3OWExYTIzODkzMjU0ZGJiZjU5MmQyYTQ4ZTZlYmQ3OGVmIGxlZ2FjeS10cnVuaworMzA0NTIgNjdkZjI4OTNhNTBlZTgxNzdjMTAyNjk3YzQ5NDA5YjRiYWRmODY5YyBsZWdhY3ktdHJ1bmsKKzMwNDUzIDcwMWIxMDI5YWY0MDc5MDU1MGVlN2Q0OTkxYjFmYjFjMmIyNzhjOGUgbGVnYWN5LXRydW5rCiszMDQ1NCA3MGYwZjI1YjEzNGU0MjhjMWQxN2ZiODJiNTM3N2UxMjM3Y2ExM2RlIGxlZ2FjeS10cnVuaworMzA0NTUgNzc0Zjc1NGZkMWZmMTUwMzhmYmU5MTA3YWNhZGU5MTU1MmYyMjdmMCBsZWdhY3ktdHJ1bmsKKzMwNDU2IDM1ZTViMDIxYjc3NDQ0NzIwM2VlNzM0MTZiOWIxOWRjMmYwOWM4NWIgbGVnYWN5LXRydW5rCiszMDQ1NyA3ODRlN2ZkZjhjNTI0MzQ2ZmUwM2Y1M2RiYWIwNWYxZDE0MzZmNTgzIGxlZ2FjeS10cnVuaworMzA0NTggNjk4OTYwZDU2MWY4ZGE1ODk4ZTBmZGFhMmZjMDNhZWVlMTcyMTgyMyBsZWdhY3ktdHJ1bmsKKzMwNDU5IDViMTU3NTk2OGY3ZmFmODBlNzAyODM0MWIxY2I5MjZiZjI0ZGM2ODcgbGVnYWN5LXRydW5rCiszMDQ2MCA1Njc3ZTk4MGUwNDdlNDI0OGZmZmEwMDUwYjc3MmY3MWQwYTkzYjQ0IGxlZ2FjeS10cnVuaworMzA0NjIgMmM2NzE2OWY2ZTEzZmJkZDE3YjQ3NzZkYzc5YmM1MmFlZTI1YWU0OSBsZWdhY3ktdHJ1bmsKKzMwNDYzIGUwMmRhZjYzMDdmYzhhOGViNWUwMDI2ZThjNzBkZWU5ZWMwNzM4NmMgbGVnYWN5LXRydW5rCiszMDQ2NCA1NDlkMDdkMGFlZDdlY2ExOTAyN2M5NjVjYjcwOTExYWQzYWNmMWQ1IGxlZ2FjeS10cnVuaworMzA0NjUgZjcyMmE4MzAxNDBmYjQxNWU1ZTI4NzNkNGUxMTE0ZjRkMWVlNzhlNCByMjNhMS1icmFuY2gKKzMwNDY3IDdlMjM1MWJjNmU3YTY5YmY2OGRmNzEyNTM1MTg2YmM1YjA2YWMyNzEgbGVnYWN5LXRydW5rCiszMDQ2OCAxYzY1ZmE1ZTUyYzNkODFhYjAxYmE4ZWYzYTBiZGVkNGFmM2Y2YmRlIHIyM2ExLWJyYW5jaAorMzA0NjkgMTUwMTdhNzliYWNkZGFkMjdiYmFhZDRmMzkyYmI0YjA5MTE3NzMxOCByMjNhMS1icmFuY2gKKzMwNDcwIGQ2ZGNmZjRiMzU3NDIzNDgwZTQ3YTU1NWVhMDBiZjMyZjJjZThmMzIgcjIzYTEtYnJhbmNoCiszMDQ3MSAyYjgwMTE2ODE1YjUzNWRkOTgwMmQ2YzM1OTFhNmQ5Y2JkNjRhYjk3IHIyM2ExLWJyYW5jaAorMzA0NzIgOTJlNTcyZTNjYTlmOGM4MzM5ZjdlOTZhOTU2YmE5Yjc4MmI4ODI2ZCBsZWdhY3ktdHJ1bmsKKzMwNDczIDhhOGRmZjI1MGJlNDM2MmZhMWE2N2QzMWFkNDg4NzBiNjAzZjI2ZmMgbGVnYWN5LXRydW5rCiszMDQ3NCBiY2JkOTRjNjEwZTgyM2YyOTVkMWI3NDM5OWViYjY4Yjg3OGZhYzUyIGxlZ2FjeS10cnVuaworMzA0NzUgN2NiNzNhNzMyZjc3MWVhYTIzNmYyZGY0MmI5OGY4NTI0MmViOTBhYiByMjNhMS1icmFuY2gKKzMwNDc1IDAxODMwNzc2NWQzNGRjZjYyZDZkMmFkNjZiZDdmN2JkZTUzMWVmYTIgcjIzYTEtYnJhbmNoCiszMDQ3NyBjZmExM2NlOTgzYmEyYjc4OTY2YzBlYzc4NzExY2RmN2M4MjIzNjNmIGxlZ2FjeS10cnVuaworMzA0NzggNjk5MDUwNTljN2JkMTg4NTliM2Y4YTI2M2NlODdlZWViMWVhMjdlMyBsZWdhY3ktdHJ1bmsKKzMwNDc5IDc0MDc5YmU2ZjNmMTE0ZTE5MjI4MzM1MmY5MDI3MWE3NmQxMDAzZjUgbGVnYWN5LXRydW5rCiszMDQ4MCBjZjgxZjgyNWRhYWM5MjZjZDU0N2EyNDJhMGU1NWNiZWM0MTUxOWJjIGxlZ2FjeS10cnVuaworMzA0ODIgNGUwOTMyYTExMmY0MmI1NTliNzMxYzllZDhmODdkZDliNjMxNmNlZCBsZWdhY3ktdHJ1bmsKKzMwNDgzIDk2ZTFhYjhkZjg4Mzg0YWRhNzgzMDIyYjg3NWNiOTc0MmZkNWFiYTQgbGVnYWN5LXRydW5rCiszMDQ4NCAyYTg3ZDk0ODkxMTJmYTJlMzRhYTNlODc1YjZmMjM2MGVjZmRjMmJlIGxlZ2FjeS10cnVuaworMzA0ODUgMDBjZDFkNzE1OWMyYjQ1MTMxMTIxMWVjMGVmOWM5Zjk1ZjQ0MmFiYyBsZWdhY3ktdHJ1bmsKKzMwNDg2IDZjYTFjMGQzZWYxOTMxMjI0NDE0MjUwYTEyMTczZWNkM2U2OTUxMTYgbGVnYWN5LXRydW5rCiszMDQ4NyA4ZWQ0NzJlNWJjZDQ0ZGQzMjFiNDM1ZjliZDE5OTA1NWEwNzljZWQxIGxlZ2FjeS10cnVuaworMzA0ODggODhkZjI2N2RiODU5ZTNmNGI4OWZkNjg2NGQ5MWJlNDQzMDE0MTk0NyBsZWdhY3ktdHJ1bmsKKzMwNDg5IGJkYTQxODU2NzBjY2I3NDhlODM5OWFmNjE5MGM3NzlmYWYxOWI3ZWUgbGVnYWN5LXRydW5rCiszMDQ5MCAyOTNlZGEzZTY5ZjVmNTgyMTRhYWIyOTljYTAzODk2ZGIxNGVkYzAyIGxlZ2FjeS10cnVuaworMzA0OTEgZjU3MDgzYTM0MTk2NjRhYjQ4ZTA5NGMwYjRlN2EzZTE4N2UwZDE1NCBsZWdhY3ktdHJ1bmsKKzMwNDkyIDFjNDA2MGQ5ZTY4NzRjMzVmYzJiN2ZjM2QwYWFlMGI2YjhmNTE0YTAgbGVnYWN5LXRydW5rCiszMDQ5MyBlYTY3Y2VhNjc2ZTk5MzQ1YjBkZmVhMjQ1YmM5NDFhYWQ5ZWU0OGFiIGxlZ2FjeS10cnVuaworMzA0OTQgZDg1ZWFmNDc4NTU2ZWZjNjEzZjZmNGY4OTA5YjBiNjI3OTNhZDA1ZSBsZWdhY3ktdHJ1bmsKKzMwNDk1IDgxMjA5YzBmMDhhMDU5MjZmN2JkMGU5ZjkwNTVhY2NlYWRiMDJkMDUgbGVnYWN5LXRydW5rCiszMDQ5NiA0NTc5ZTgzYzY2M2I3MDJlYTIwYmFiMWE2MjMyYTExMWI1YjRhYTc0IGxlZ2FjeS10cnVuaworMzA0OTcgNzJjM2Y3MzQ3ZTg4Yzg5NDQwNmRlZGRhNzg3YTE2ZmFjYzVhOWM2MSBsZWdhY3ktdHJ1bmsKKzMwNDk4IDI2ODdhOTA4NTQxMWU3ODU3ZjY1NjJlMDIyNzA4NjE1MzYwYmQ3YWMgbGVnYWN5LXRydW5rCiszMDQ5OSA1YzRmYTA0YzlmNjI4ZDg5OTJjMjUwNjZhYmI0ZmM5YmVjNDZiZTY2IGxlZ2FjeS10cnVuaworMzA1MDAgNmE1Y2ZmYzYyMzg3ZGRhYTA5MGJhYzUzM2VjNTBhODdjOWY3YjdmZCBsZWdhY3ktdHJ1bmsKKzMwNTAxIGMwYjNiYjQ4NWJjZjgwMDE2Y2U4NjBhZGVmNWRhYWRlZGU0ZjkwYmEgcmVsZWFzZTIyLW1haW50CiszMDUwMiA5N2RjNTMwZDkwZWI3ODUyNjJkMTU5Zjk1OTNkY2FmOTNlNzgwOTY5IGxlZ2FjeS10cnVuaworMzA1MDMgNDc5MzEwMTQ5YjJlZGUxZTcwOTcyMTk3YTRlYTlmNTgyMmVlYjJmYyBsZWdhY3ktdHJ1bmsKKzMwNTA0IGZkOWYyMGNlM2JiYTFmYzljMzhiYjMzYzgzMDcwNGY0YjUyMTIzZTQgbGVnYWN5LXRydW5rCiszMDUwNSA3NDFhYTlkNmQ4YmVkNzQwNWZjMzMxZjM3YmIyMzAwZWQyNjNiZjI3IGxlZ2FjeS10cnVuaworMzA1MDYgMGIzZmNjZmJlMmEyODc2MWVlNGM1Nzg2MWIxMjUwMjBjNmFiNDBlNCBsZWdhY3ktdHJ1bmsKKzMwNTA3IDllZTRmZDA1ZDNjYmNkNWFkN2RhYjM4MzNiYmNmOTBiMmRjMGY4YzMgbGVnYWN5LXRydW5rCiszMDUwOCBiZmEzMjYxM2RlYzhlY2EwZTgxNzYyNmY5ODRkZmRmZjVjNThiZDU4IGxlZ2FjeS10cnVuaworMzA1MDkgNzI3YmNiODExYzUwZjk1ZmQ5NDViMmYwZWY0Mzg5Mjg5NTZhMmE1MSBsZWdhY3ktdHJ1bmsKKzMwNTEwIGUyYzg4YzQ1MWMxOWE1NDQ0Yzk1YmM3MDlmMzJiZjUwYjU5MzM0MTggbGVnYWN5LXRydW5rCiszMDUxMSBmNDQxYzRlNWIyMzQ2NTY1NDVjODhmZTU0NjMxOWI3ZDliYjRhNzM2IGxlZ2FjeS10cnVuaworMzA1MTIgMTA5OGNjYzg0ZDYzZjg5MmY2MmZhY2U4MjM5NTFkNWI3YmZhYjQ3NiBsZWdhY3ktdHJ1bmsKKzMwNTEzIDgwNmQzNmU1NmJmYTNlMDgwMTFmNDliYjBiM2JlNzcwZjNkNGI4MGYgcjIzYTEtYnJhbmNoCiszMDUxNCBhZDEyZWE5YzdlZmRmNDZiNjM4OWJmM2NmNjVlNTVkZTlmZGU1YzE3IHIyM2ExLWJyYW5jaAorMzA1MTUgNDQxNDcwN2Q5Mzc2MTZjNmFkNGI2MGMyNjBhMzMxYTlhZjg0OTU5MiBsZWdhY3ktdHJ1bmsKKzMwNTE2IGUzMjcxZThiMTRkZWUwZmJlMDdkMWE4NTJjMDBmODIxM2Y3ZjdmZmUgbGVnYWN5LXRydW5rCiszMDUxNyBjNDI5ZmU1ZGU0MTczNTYyZDUzMDMxYzBmMzg1MTZhNGNkY2E2OGM2IGxlZ2FjeS10cnVuaworMzA1MTggMzM4YWM4NmY0NDJkOTlhYzFhYmE3NTQ0YzRmMWZmOGU0Y2Y5YzE0YSBsZWdhY3ktdHJ1bmsKKzMwNTE5IGQyNzlkNzYzZjQ2MjU0ZWM1ZGMxZmE2ZDI1ZTIyNjdlYTcyNzIxYTkgbGVnYWN5LXRydW5rCiszMDUyMCBkNTliN2NiY2VhYzFjNmM5NjU3ZDFiMzkxYzQ2OWFhZTIyYjZiYjFjIGxlZ2FjeS10cnVuaworMzA1MjEgYjFlMjNjMzU3MDdiZTRjMDEwMmI3NTk4YjU0OTU3ZGM5YmJiNzUyMyBsZWdhY3ktdHJ1bmsKKzMwNTIyIGI2MWE2NjAyMmQ1YTQwMWY0ZjYzMjUxMDcxMzAzNTM5ZjE0ZjM1NTggbGVnYWN5LXRydW5rCiszMDUyMyA4ZWNkZGY0YWQ4YjAyODFkNjk0NjZkYjg1NmNmZTI2NmNiMmE4NDlhIGxlZ2FjeS10cnVuaworMzA1MjQgZGMzM2QwMjc2NDVhNGYzZDkwZGE2ZDMzZmZhMmI5MmJiOWI1NzI5OCBsZWdhY3ktdHJ1bmsKKzMwNTI1IDkzYjZhM2Y2MTMyZGM4Mjg3MzIzMzE3MDJlYzYwZGQzOTg4MWQ4NzcgbGVnYWN5LXRydW5rCiszMDUyNiA0MWY3NzI2ZTNlNTExN2E5MTQ0NGRkNDM4MDkxOTE5M2QxNTU4MDMyIGxlZ2FjeS10cnVuaworMzA1MjcgYTk4NjczYmUyMGMyODAyZWZhNDVjNzRmNWQxNzQyMjYyNzA4YTUyOCByMjNhMS1icmFuY2gKKzMwNTI4IDQyZjMzYmQ2OWM3MjRjZjRmNWZhNGYxODUwMjViNWQyOWEyNTUxZWQgcjIzYTEtYnJhbmNoCiszMDUyOSBmMGJkZjRjNTkwZWM0MGY5ODFmZWE0YTIzOTIwNWEzN2MwMzI0M2E2IHIyM2ExLWJyYW5jaAorMzA1MzAgYmU1MTEyMDMxMTZmMDZmMzA4YzY3NTZmYzgyOTdjNDFkOGE5ZDNiYiByMjNhMS1icmFuY2gKKzMwNTMxIDEzYzkwMzhmYTkzNzY5OTM4YzYxZDdlZDYyYzYwYjEyZjA1NDU5NzAgcjIzYTEtYnJhbmNoCiszMDUzMiBkZDZmMWRmNTI0ZGRjNzQwMjQ5MWM0YWJmODRiMTM4NGQ1NTYxYWMyIHIyM2ExLWJyYW5jaAorMzA1MzMgNjhkYWZlMWJjMDE2OWE4NjY3OWFjZjMwMmY1MDQ3NWQxOGM2NzJkNCByMjNhMS1icmFuY2gKKzMwNTM0IDAyNTk4NTZjMWU0NzYxMDgyN2M1MGQ1ZTk1ZTUwZGIzOWNhMjdhZjkgcjIzYTEtYnJhbmNoCiszMDUzNSA5OWRmMGU1MmY2MzQzMzI2NWU1NjdmMjgwNWJiYzQ5MWU0ZDU2ZDBjIGxlZ2FjeS10cnVuaworMzA1MzYgMWFlNzgyNDkzMTMyYjlhNDBlOTA4YWZiYTQ1MmMyYjIxNjkyNzNhZCBsZWdhY3ktdHJ1bmsKKzMwNTM3IGIzMGZlNGRjYzY5Nzk4NjNiZTY3NmVjMDljNjJmYzRkZGRlN2FiZGEgcmVsZWFzZTIyLW1haW50CiszMDUzOCA2ZTFhNzQzNWRmMjVkMzUzMTczZDM2MGRmMjJjNmRhNDEwY2JjOWM1IGxlZ2FjeS10cnVuaworMzA1MzkgZTY1ZmZjYjQzNjk1MThkNzJhMTVkYzgxZjRjYzEwZDEwODE5N2IyZSByMjNhMS1icmFuY2gKKzMwNTQwIGFlOWQ4ZjUwZTc2YTM2MDNjMmY1NWJlMjZmMTdhNTY1NzgzNTc1YTYgcjIzYTEtYnJhbmNoCiszMDU0MSBmOWE1NTU3Yzk0NDdhY2ExNmRkNjM4MjUyM2I1YmJlZjE3MzExOWRhIHIyM2ExLWJyYW5jaAorMzA1NDIgMDQxYzUyZjQ5ZGYyMjc4ZGYzYjkyZTdmMmY0MDc1NzQ5NWRmMzQ1MiBsZWdhY3ktdHJ1bmsKKzMwNTQzIDE4ODQxNmZiN2FjNTJkMmVhYTUxOGI5NDY5ZTA2YzQyYmZmZjU4MTUgbGVnYWN5LXRydW5rCiszMDU0NCBlYmY3MjY1YWFlNGVhOTJmY2NlZjMwNWUwZTY4ZDJkMTNjN2JkMzA5IGxlZ2FjeS10cnVuaworMzA1NDUgMjMyODBhNjQyODhlM2VhMTdhNDQwYjc4OGQ1ZDBhZjAyMjVhMDRlYyBsZWdhY3ktdHJ1bmsKKzMwNTQ2IDVkOTk3MjYzYjg1OWI5MmYyNzVmN2VlYzExZmYzODM3OGJhNDM0ZDMgbGVnYWN5LXRydW5rCiszMDU0NyAyMzdhMTQ2MjA3ODU5YjVkNjc1Zjc3M2E4ZmY4MzMzZmZjYzUxNTkwIGxlZ2FjeS10cnVuaworMzA1NDggNzM3YTU0NzYzOTZiNjQxNjg0MWYyMDJhMzAxMWQ3YmRhOGM5ZjhiNCBsZWdhY3ktdHJ1bmsKKzMwNTQ5IDI2N2Y0NWJlOWMwMmNkNDBiZWVkMzcwNDQ4ZmY3YzBlY2ZjZTY2M2UgcjIzYTEtYnJhbmNoCiszMDU1MCA1NTQxMjFmY2JiOWRjYmZkNjAzNGI2OWQyYTgwMGRjYTA3OGFmOGQ3IGxlZ2FjeS10cnVuaworMzA1NTEgMWNkOWM4NTY0ODc1Yjg1YjUyMDdhNGQwNTk1OGMzOGM0ZDYwOTJiNyBsZWdhY3ktdHJ1bmsKKzMwNTUyIDcwZDJjYjM2ZmExN2EzMWZlN2E1ZDZkY2RhNjUyN2VkMjBhZDI4ZjYgbGVnYWN5LXRydW5rCiszMDU1MyA3ODIyNzcwOWNhMDQ0Zjc5ZTRmZTFiZDY1OTYwNDdmYTM0Njk4OThhIGxlZ2FjeS10cnVuaworMzA1NTQgYWYzNTc5NTExZjg0NjhmZDIxMDJkNjJjOTNkZGM0NTU1ZDdjOWZlZCBsZWdhY3ktdHJ1bmsKKzMwNTU1IDlkMDgyOTFjZDQxMTY2MjE5ZWJkMWI1MmZkMGQ1ODkwY2MzYjgwOTQgbGVnYWN5LXRydW5rCiszMDU1NiA3MTRjZGYwODA2YzE2ZjdhNDI2MzYwNGIwY2E5NTM3OGQxNjFlNjNkIGxlZ2FjeS10cnVuaworMzA1NTcgZTM4MmQzOTMzMzFkNWMxMjFlYzdmYWZlZDg5OWIzZjQ4M2FlNzVmNiBsZWdhY3ktdHJ1bmsKKzMwNTU4IDk0YjljZjQyNzRkZTFlMDVmOWYxNjBhMmJkYWY5M2IzMTYzNzAyOWMgbGVnYWN5LXRydW5rCiszMDU1OSBlZTM0YjY0OTUyYzBmOGE2NzJiMDdlYmE5NzU2ODBlMjM4YWUzNmFiIGxlZ2FjeS10cnVuaworMzA1NjAgY2QzYzRkZjE5YjAzNWI2YWVhYTBkMTRmYTIyZTQyNDZhMjAyNDUwYyBsZWdhY3ktdHJ1bmsKKzMwNTYxIGFmZWI3MGM4NzZhYTM1MTQyMTdiOTE0ZDFmOGI0YWRlYjU1OWM2NmMgbGVnYWN5LXRydW5rCiszMDU2MiBjZjkwMzA5ZWZlZWU2MjJkZjY0MWE5NjkwNTAwYjA4MzlhZDc1M2JmIGxlZ2FjeS10cnVuaworMzA1NjMgNjk3N2UzMjBhNzU2YzQ2ODVlYmNiYjIxOWRhZTNmOGRkMzc5MDEzNSBsZWdhY3ktdHJ1bmsKKzMwNTY0IGQzYmE3ZjRhOWY4OGFmZTVkODI2MGQ5MDBlMzA1ZTZjOTg1OTg0NDggbGVnYWN5LXRydW5rCiszMDU2NSBhYWU5NDk1MDZkMmE3ZDMyODM5MzE2YzU4ZTYzOGEyNWIyZGUxYjZhIGxlZ2FjeS10cnVuaworMzA1NjYgMTU3YTk1ZjQxN2YzZDdiY2NkMDNmMzBmYTFmM2EwNGEyYTczYjI3ZiBsZWdhY3ktdHJ1bmsKKzMwNTY3IDc5MDFmZDk1MDE3ZjA5NDc4M2YyMjFjZWE3M2MwZjZiMWM2OGU0ZjcgbGVnYWN5LXRydW5rCiszMDU2OCBjYmRmNjBjY2Y1NGY1ZGZjN2JlZDAwY2FkYzcwMjQ0YzE1ZGJkZDM5IGxlZ2FjeS10cnVuaworMzA1NjkgZWIzMjJlZjY3YzlmZWM1MDE5NDJmM2EyMGE1MDE2MGRlNTliMTA0YiBsZWdhY3ktdHJ1bmsKKzMwNTcwIGNjNWIyZDBhNGFkMWQ4NmZlMjY5NzhkYzlmNGU4YTdmYjZmN2U2MzYgbGVnYWN5LXRydW5rCiszMDU3MSAwNmIzZmEyNWQ5ZjFkZTNmYTc1M2UxNzJmNjc5ZmI4Y2JmOTczOWQ5IHIyM2ExLWJyYW5jaAorMzA1NzIgMTcxMmUyMDRhYTkyZjEyMDdmMmUxNmQ3ZjhiYWIxZGVhMTYzNTFkNSByMjNhMS1icmFuY2gKKzMwNTczIGVmNTMxNDgyYmIzN2IwZmIzOGJmMDE2MmE4NjI3Y2RlMjFmZjNkMzEgbGVnYWN5LXRydW5rCiszMDU3NCBlOTIwNDRjMGI4ZWNlZTgxNzVhYTQ2NmVlNTNhMzNjYmE0NTM1ZTI3IGxlZ2FjeS10cnVuaworMzA1NzUgYzMwZjk3Mjg3NjAyOTRmMmY4OGVmZTM1ZDllYjMzZWIyYzJkMjBlMCBsZWdhY3ktdHJ1bmsKKzMwNTc2IDE1NjRjNjgzOWU2YjBlYjgwNTlhZTRjODFjZDAyMTU5ZGMwOWRiMjUgbGVnYWN5LXRydW5rCiszMDU3NyAwYmE0NjYwNmYwZjkxMThkZWNiYTQwZDNmZjA4MjgwZTI1OGU3N2FhIGxlZ2FjeS10cnVuaworMzA1NzggYjg2NTkyNWVmNjhhYjYzZjc0OGVlZmQ2OGNkNDA5ZDIyNmI5OGNjYyBsZWdhY3ktdHJ1bmsKKzMwNTc5IGMyOWFkYTZjMWM5MDRhMjc0NWRhNWEwNTE4NmE4YTI4YjAwYTMyZTEgbGVnYWN5LXRydW5rCiszMDU4MCA3NTMzMDZmOWIwYTBlMzM4YzliMTM2MjJiNGRlZjU0NTg2MDFlMjA3IGxlZ2FjeS10cnVuaworMzA1ODEgYzFmNGU1M2M0MmRkMGNlMDVhNDgzMWRhMWRhNTQwMDQzMmI2NDU3NiBsZWdhY3ktdHJ1bmsKKzMwNTgyIDk3MmZlYzIxZjIyM2I3MTM4YmM5YmQwNzU1YmFjMWM3MDk3YTdjNTkgbGVnYWN5LXRydW5rCiszMDU4MyBhNzRjODg4MzhhNTViNDIxZjhiYmU5OTI0OWU3MmZlMDc0M2FmZDJmIGxlZ2FjeS10cnVuaworMzA1ODQgMmFlMWQxNzU3MmRhNmE4ZTc0ZmNmNWY3MDExNmNiZTU1ZmE2YzQ1MSBsZWdhY3ktdHJ1bmsKKzMwNTg1IDMxOTllOTc0ZjU1YWEzZjZkZTUyZjY5MjRlMjA4ZGFiYTkxNjE1NzAgbGVnYWN5LXRydW5rCiszMDU4NiA2NGU4YzY5ODY2MTBjMmIzNzg2NDgwNjRiZGZmZDE0ZGRjNzFmMmEzIGxlZ2FjeS10cnVuaworMzA1ODcgZDVlMDlkNDEyYjUzODgwNjdlYjkzZGM4ZmUxODdkMGEyZjVhZWYyYSBsZWdhY3ktdHJ1bmsKKzMwNTg4IGY3MjI2NDIyYzFkMGE0YjcxNDE2YmEzMDUyNTJiMzgwZjEzOGFlNGIgbGVnYWN5LXRydW5rCiszMDU4OSA5MDM1MGI1ZDMzOTdjNGZkNjhjYTNlYzQ2Y2RjZDk5OGM5YWMxZWU2IGxlZ2FjeS10cnVuaworMzA1OTAgMzgzMTk0MDllODk1NjdlMjQyOGExNmQwNWM5ZTAxYmRjNzk5MTA1NiByZWxlYXNlMjItbWFpbnQKKzMwNTkxIDkzZjMyMmY1NjJmMzk5OGNmZjI2NTEyNjAwMmMyZDFiNzgzZDI2ODIgbGVnYWN5LXRydW5rCiszMDU5MiBhYmI1YTY5ZDYwY2JmZjk5NDYzOWJmMzQwODZmOGIyMTU1M2EyM2MwIGxlZ2FjeS10cnVuaworMzA1OTMgYTEyMzc5M2NhMTkzYmU3ZDQ5MDVkNTNjMGI0ZmJjZGYxMDNmZTI2YSBsZWdhY3ktdHJ1bmsKKzMwNTk0IDNhMjk1Y2ViYTQwMWY1N2FkNmRhNjY2NmVkN2IwNTVjM2UzNzljMDkgbGVnYWN5LXRydW5rCiszMDU5NSAzODhlNTQ3NDc3NDAwZjQ1MmYzYjAxY2U0ZmY3ZTliZDc2OGU0MDg1IGxlZ2FjeS10cnVuaworMzA1OTYgNTRlZjdkNTI5NmYxMDQwYWEzOGQ4MWFlYjM1NjE5MGQzZDUzZDE1NCByMjNhMS1icmFuY2gKKzMwNTk3IDFhYzk5OTRkYzZjMjU4MTMwMmFjOThhNTM1NjM0ZWQwOTM0MjFmNjEgcjIzYTEtYnJhbmNoCiszMDU5OCAxYTBlYWJiZGE2NTRhYTU1MWVkYzZlNjdjNDZiYjYxM2YwYjJmYzczIHIyM2ExLWJyYW5jaAorMzA1OTkgOTdiNWFiNjdiOWYyOTA5ZDg0ZDI0Mjk1MDYwYzNkY2I2ZDYxMjdhOCByMjNhMS1icmFuY2gKKzMwNjAwIDUyY2U3MTM1OGUzMmExMTY5ZGNmMDNjYTc0YzFmNGRmYWIzMWI4NmUgcjIzYTEtYnJhbmNoCiszMDYwMSA3ZGFiMjc3MzFiZTgxOGQwNGIyMjhmZTUyN2M1MTYxZmU1NWZmNzFlIGxlZ2FjeS10cnVuaworMzA2MDIgYmQ3NTAzNzhkNWMxZmZjMmQzMzA3YzUwMTYwMjE5N2NjMWM1MTJhYyBsZWdhY3ktdHJ1bmsKKzMwNjAzIGU4NDFjODczYTkzNzAzY2Y0NmEzNTQ0M2MzNDRhYTUzYzlhYzhiMTMgbGVnYWN5LXRydW5rCiszMDYwNCAyN2U5YzNjZDU4YWZkMzMyZjM5M2E0ZmNhNWJhMjQyYjBkYWE5NDEyIGxlZ2FjeS10cnVuaworMzA2MDUgNmM0YmQ0ODdmZDI2MGJkOTNkYTBhYTk0MjZlNmZmZTIyYTM1YzAwOSBsZWdhY3ktdHJ1bmsKKzMwNjA2IGExNjY0YjdkYTc2Zjc5YzIyYTc4ZDIxMGRiMjVjZWNmZjkxNDVhN2MgbGVnYWN5LXRydW5rCiszMDYwNyAzZTIzZGU4MDJhNWRhY2ZmMjZjNmE2OTMwMzFhNTQzZDg2ZDNiMmE5IHIyM2ExLWJyYW5jaAorMzA2MDggYjQyMjU1YzgyMmIxZTU3MWQ1YzRlMDNkOTZhMDZmODViZDU1ZTBhNCByMjNhMS1icmFuY2gKKzMwNjA5IDhkN2RkYmIzMzBkMzFjYmNmYTU1OTBkMTUwZTVlNWI4YWE0NDg3M2EgcjIzYTEtYnJhbmNoCiszMDYxMCA1YWI0YjY0OGE0Y2Y0N2RmYzMyYTE5MGI2ODViNGQ0ZmViOGYzM2NkIHIyM2ExLWJyYW5jaAorMzA2MTEgOTZhOGVmZDkxOTQ4YzFlYWMzNThkNzNmNjdmMDI4MjNlOTBjOWFjZSByMjNhMS1icmFuY2gKKzMwNjEyIDMzYjQ2MTBhODkyMjUzYzNiNmVhNGM2ZjAzNTdiYmQ5YzFjOTAyMGYgcjIzYTEtYnJhbmNoCiszMDYxMyBmOWE1ZWQwOTI2NjAwNjEwMDhjZGRkM2U5MWY0YWEwMWQzNTY1MmM5IGxlZ2FjeS10cnVuaworMzA2MTQgYTE2YmM2NGYxMTQ1YjQ0OGY1ZTIyOWEwNzZjYjMyZjA1M2RmYzMxMCBsZWdhY3ktdHJ1bmsKKzMwNjE1IDgyMjY2NThhNjNiYjJlM2M1MDYxZDgzMzMyMWYyYTBmMWI5ZDg3MTkgbGVnYWN5LXRydW5rCiszMDYxNiA2ZDdkYWE1MzI5YzZhY2FlYzk1NjNiZDZkYjk1YjFiZjEzZWRjZTE3IGxlZ2FjeS10cnVuaworMzA2MTcgNjkzMzFmYWM0ZWYyNWIwZDEwODAxNzAwNjgzMDExNzNjZGRlOTlhYSBsZWdhY3ktdHJ1bmsKKzMwNjE4IDQzMDZjNjY1Zjg1N2NjZTg5NjA2MjMwODQwNzVkYjExYzE3Nzg5MWEgbGVnYWN5LXRydW5rCiszMDYxOSAyNDQzYzU1N2NiYzNkM2M5MDA0MDhlOGQzMGI1M2U1NWQ0YWM2MmEyIGxlZ2FjeS10cnVuaworMzA2MjAgODJlYWMzMWU2ZTJkYzk5NzZkMzVkNTY5MjRmOTk2YjE4ZDZiOTcyYSBsZWdhY3ktdHJ1bmsKKzMwNjIxIGFlZTQzYTRmMzU3MGQ3MjM4NDEwYTYwYTE4NDQxMjc0ZTllZmQ5YWUgbGVnYWN5LXRydW5rCiszMDYyMiBhMGE2ZjRkZDczMjg2ODU2ODVjZmY3OWZiM2QwYTM5NDdiZDRkZTFmIGxlZ2FjeS10cnVuaworMzA2MjMgZmFiYTZlNmM4MjRkZjllNDhiYmY0ZjI4YWFjMTAxZGMwYzE1YmE3ZiBsZWdhY3ktdHJ1bmsKKzMwNjI0IDA0NjRhY2I1YjNlNDZiMWU1N2IzYjhmYjVmNzZlMmZiNjYzNDY3ODcgbGVnYWN5LXRydW5rCiszMDYyNSA1NWRlMmI5NTE4MWU5MzlmMmJkMjdlZjQwM2Q1N2RiZDM1MDNlMTYyIGxlZ2FjeS10cnVuaworMzA2MjYgMDM2NGFhZTVhNWE0MGJhZjgwN2M5M2NlZjVjNDc0MDdmODNjZWI1NiBsZWdhY3ktdHJ1bmsKKzMwNjI3IGU3MTlhYjQ2YWRhYmZjYjFhODdkNTc3YzE4YjE2MzlkYjc2ZTUzZmIgbGVnYWN5LXRydW5rCiszMDYyOCBkMmZhMWRkY2RmNmRhNmVkZjJhMTQzNjgxZTFlMjk4NzllNDcwZDM3IGxlZ2FjeS10cnVuaworMzA2MjkgYjJmYzQ5NDk2M2IyZWM5NDI1NTI2ZTZmMDc3NjZhYjRjMDdiZjg1MiBsZWdhY3ktdHJ1bmsKKzMwNjMwIDlkYjQ4ODI2MTBlNWI4M2JiMDZkZGE4ZjQ4MjJiNDVkOWUzZTE5YTcgcmVsZWFzZTIyLW1haW50CiszMDYzMSBhMmYxN2Y0YTZhMjJjZmI5YjNjNGE1OGI0ZDU0YzBjYTI4ZWIwYzI0IGxlZ2FjeS10cnVuaworMzA2MzIgMzdiZWI0ZDYwOTI5ODNiYzgzYjhiYjY1NWRhOTUxNDhmN2E2NDdjZSBsZWdhY3ktdHJ1bmsKKzMwNjMzIGViOTM1M2I0M2NkMTJjMTc5MmUzOTE5YzliODYwYzJlZDE1ZWYwYjUgbGVnYWN5LXRydW5rCiszMDYzNCBiM2M4ZDljNDcyZGM5MjZiYmNlMzYwYjQ5MDQ0ZDkzYWFkNGRiN2M4IGxlZ2FjeS10cnVuaworMzA2MzUgODZlN2ExZjdmMjY1Mjc3MDY2NTVkOGJkMWZjM2QwMGI2MGFiNWJhNCBsZWdhY3ktdHJ1bmsKKzMwNjM2IDdlYzc3MTg5MzQxMDJhOTliYjY2MzNlNWY2ZmQwNTE4OTM5OGUyYmQgbGVnYWN5LXRydW5rCiszMDYzNyBjMGQ1ZmU5YTBmMWMzZTQyMzc2MzM3MTA3MGQ2Yjc4NTZkYzNlYzUyIGxlZ2FjeS10cnVuaworMzA2MzggMWI4ODFkNWU0YTkwM2U1YzQ2N2JlYzUzMDcxZDI4NGFlZjJlNDYzMyBsZWdhY3ktdHJ1bmsKKzMwNjM5IGQxODUwYTM2YWU0MWZkOWRmOTNiZmFhYjkwNDczOGQ3MWRkODkxNDggbGVnYWN5LXRydW5rCiszMDY0MCBlNTQ4NTUyNTdhNGY5MzBmMzFkNDIyZGFhOWRkNjBiZTU3NTQwZmY2IGxlZ2FjeS10cnVuaworMzA2NDEgYWNjODBlYWNlNGRjMTM0ZTFlMzMxNzk0Mjk1ZmQ3NmY2YThkN2E0YSBsZWdhY3ktdHJ1bmsKKzMwNjQyIDQ2YTZlZDdjYzRmZTk1ZWI4MTQxMmFkYzI2MjU2OWMyMDc0NmMxOWQgbGVnYWN5LXRydW5rCiszMDY0MyA0NWYxZTZiMTJhODEzYjQzYjM5NTMzMDRlNWYzZWY4MTQxYzMzZDdlIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzA2NDQgMDQ3YjZlMTZhYjJlNGQ5ZjhmMWQxYTlmYmFhYzQxNzEzMWU4Mjg4ZCBsZWdhY3ktdHJ1bmsKKzMwNjQ1IDZkZmRiMWMwMzA4YWQxZmU4NjRhZWNmNjg2NzgzMmYxNWY0N2FmMjggbGVnYWN5LXRydW5rCiszMDY0NiA4NjE3YzI1MDZiOGU0NTQ5YjJkZWMzYmYwMDIwYTc0M2IzM2M0YWJhIGxlZ2FjeS10cnVuaworMzA2NDcgZTg3ZDU5MGE1ZGUxODc0N2M3NWZiMTBjZTZjMWQwNGY0ZDkzYzhiZiBsZWdhY3ktdHJ1bmsKKzMwNjQ4IDIyZDY2MDQ5NGYyOWM0ZDc5MWM0NjQ5OGU1NTcwN2VhYjgxNGY2NmUgbGVnYWN5LXRydW5rCiszMDY0OSA0OWJjZmVjYjI5NjI3MjU2YWUyODgzZGYwY2MyMjY1MTcxZDJlNzZmIGxlZ2FjeS10cnVuaworMzA2NTAgNjU3YWVhZmJiYzlhMGM4NGZkNjk4OTgzMzFlNmQ5ZGVlNjNlNzRhNSBsZWdhY3ktdHJ1bmsKKzMwNjUxIGMyNjYzY2EzMWQ3ZDBlMzhkYWIzOGVkNzc4YzRhMDAzMjUzNDE0MTUgbGVnYWN5LXRydW5rCiszMDY1MiAzZDI5NjJiMDI0OWU1NDUxYWUxYmY1ODEzMmU2N2E2MDM3NzgzZjhkIGxlZ2FjeS10cnVuaworMzA2NTMgMzMzMGE1MDlkMmJkODM1Y2ZlZGM0MDE4MDBjYWU4NDE0YjdjZWY4OCByZWxlYXNlMjItbWFpbnQKKzMwNjU0IGFmOGEzMGRlNjY3MjVhMDFhYWEwMzMwMzA5ODYxZjE1N2ExY2M4YzYgbGVnYWN5LXRydW5rCiszMDY1NSA3YmJiMGRkOGQyMzA2ODk3YTQ5YTRmNTVhYzZmNTQ5NWZiNWZlMzBmIGxlZ2FjeS10cnVuaworMzA2NTYgOGUyMWJjZjIxNThhYzkxMDQ3YzE2MzY5YTU2MjcxMTgxZjNlMDY2OCByZWxlYXNlMjItbWFpbnQKKzMwNjU3IDVkNGYzMTZkODcxYzBlNmMxNWJmODEyY2RlMDFhMGEyNjE0ZGJhMzYgcmVsZWFzZTIyLW1haW50CiszMDY1OCA4MWNkYWJiZDYzZDdjZDk5ODQ0Mjg5MjZkNmQzNDFhODQ1ZDdlMjI4IGxlZ2FjeS10cnVuaworMzA2NTkgYWNmMWI1MTIxMmM1OWE5YjdkZGU5Y2VlOWQxMmMwMGY2YjE5Yjk1YiBsZWdhY3ktdHJ1bmsKKzMwNjYwIGUyMDRkZmYzZmNiZjllMDRkMTBjYjMwNzA5NTNmOGU1MWExYzMyYmMgbGVnYWN5LXRydW5rCiszMDY2MSA5MmU5MjJlNzMyN2FlMzI3MzkzNjFkOWQ3ZDRjYjhhYjlkZDEwZTM3IHJlbGVhc2UyMi1tYWludAorMzA2NjIgNTc2ZTJiNWQ4Y2Y4ODI1YTg1NjdmMjc2YjM0Mjc4OTI1MThkYTQxYSBsZWdhY3ktdHJ1bmsKKzMwNjYzIDEzNzViZmNiNjc3ZTYyMGVlMTM1ZDU1N2VjMjg1YjAxZDVjMWJlYjIgcmVsZWFzZTIyLW1haW50CiszMDY2NCA0Nzc5OWMyNzY0NjExN2U5NmIxNTEyYjBmOGVkNzAzZWVmMjJiYzUyIHIyM2ExLWJyYW5jaAorMzA2NjUgNTZiOGY5MDg4MTNjYjBjYmM0ZGIyOGIzNmNlMTk5MGMzMjYzYTY3NyByMjNhMS1icmFuY2gKKzMwNjY2IDVjZjQxMGU0NzI1MTY2MzA1YWIyNTQ5ZGU0YjU0MWQ1ZjFiYzM1YzMgcjIzYTEtYnJhbmNoCiszMDY2NyBlMjY1ZWZjYmNiZDE2NTIwNzE5ZGEzNDNhZDQ1N2U0NDkzZTBhN2Q4IHIyM2ExLWJyYW5jaAorMzA2NjggMjIyN2FkODZkMzNjNTIzODIzMzEzMjI3MThjMzQwNTM0OGQxZjM1ZSBsZWdhY3ktdHJ1bmsKKzMwNjY5IDVlZDgyMDY3MGFmMzVjOWRlNzQ5MWY4MDRiMmFiZjhlZmVkMTE0MjAgbGVnYWN5LXRydW5rCiszMDY3MCBiOTQzNTYwZTVmN2I1MjU2NzA4NGU1YTA0NGNhOWVjYzU3ZjZiYWIyIGxlZ2FjeS10cnVuaworMzA2NzEgMjlmODljNzI1N2JkMGM5ODA2ZTdiNzU2MjQ2MjM1NWViNTY2ZGJmNiBsZWdhY3ktdHJ1bmsKKzMwNjcyIGUxODAwOGI3MTFiMDIyZmNiNWYzNzc0YTFhZjA3NjYyODdjMmY5YWEgbGVnYWN5LXRydW5rCiszMDY3MyBhZTgzOGY3NzRmNmMxZTFkMWY3ZmQ4OWJhYWY1YmQyODAxNjNjNWYyIGxlZ2FjeS10cnVuaworMzA2NzQgODBmY2VhYjA2ODM1ZTYxOTI4YmU5YmE0ZDdiNTkwNDAzN2MxNzRiOCBsZWdhY3ktdHJ1bmsKKzMwNjc1IDNmNGU4MGViZGNhODM1NGIwYjFmNTgzMDQyNWU0MjljZGI1YWNjYTEgbGVnYWN5LXRydW5rCiszMDY3NiA1ODVhNjQ2MGY1Nzc2ZmViOGZlYmZmY2FiNDdjODRiNzFkY2Q1OGVmIGxlZ2FjeS10cnVuaworMzA2NzcgYjFmNWZkYmU2Mzk3MmY3OTNiZTY3MjJjNDQ4ZjlmNWM0YzcyNmFmMiBsZWdhY3ktdHJ1bmsKKzMwNjc4IGViNmIzNmIyNmU4ZDJiNmEyZmUwM2YzMjJhYjZkMWFiZWNkYjEzMzEgbGVnYWN5LXRydW5rCiszMDY3OSAyMzI2MDE5ODg4NWFjZjNiMWY4ZDY1YWRmNjU2NTcwYzZkYWU5NDE5IGxlZ2FjeS10cnVuaworMzA2ODAgYzVkMDJkNTM3MGQ5MzdiZjAwNmM0NmE3Y2RlOGVlOTQzMDQyNGNjMSBsZWdhY3ktdHJ1bmsKKzMwNjgxIGI0OWE0MGRiN2I0NzJhMjQ1ZjQwZDBlODM1NzVjNzFjYjQ3NTZkOTkgbGVnYWN5LXRydW5rCiszMDY4MiA5MTBlNzZkZDA0ZGFmNjVlYWMxNjZlOTZkYzM4YTdlODI3ZGRkZjk3IGxlZ2FjeS10cnVuaworMzA2ODMgNzM0ZWJkNDdiYzJhOWQ0MzAzNjEzZjJhZWVmZTkwNzc4OGQ2OWFmMCBsZWdhY3ktdHJ1bmsKKzMwNjg0IDJmOTNjMjMxZWFlMGVhOGNjY2M5MTgyMGIyZjJkOGUxOTczMjM4MWMgbGVnYWN5LXRydW5rCiszMDY4NSBlZjQzZGU1NjJmZDFiMjUxYmIxNTdjMmJiNjRjNmUzMmM4ZjY4ODYwIGxlZ2FjeS10cnVuaworMzA2ODYgMGNhZGMyOTE4MGU2MTVjZjBkMTdlZTA2M2M2NzE1NzgwMGY5ZGRiZiBsZWdhY3ktdHJ1bmsKKzMwNjg3IDdmMDliMTk5MmNlOWZjMzVlYWJlOTJhMWIzOGFmMDg1MzM2YThjOTEgbGVnYWN5LXRydW5rCiszMDY4OCBjY2Y1OWYxYWI0MzEyODY0ZjMwYjI5YWVkMGI4MmVhMDY2YTZhZTlmIGxlZ2FjeS10cnVuaworMzA2ODkgMGJkMDczOTFkOTIxYmNjMTUwNjQxNmRhMzQyYjhmMjIzMWMwODNmYyBsZWdhY3ktdHJ1bmsKKzMwNjkwIGFkZjRhYjNlYWE2MjFjNDQxZmE3N2IyYjJkNTdmYTNjN2E1NzMyMWUgbGVnYWN5LXRydW5rCiszMDY5MSA0Yjg5ZDc2ZmIyMDVhYzBkZDMzNDI2NmI3NDE0NDIwNTIwY2NmYjgzIGxlZ2FjeS10cnVuaworMzA2OTIgZDVkMTJlYTNhNTgwOWZlYTIzYzhkZDc1Y2VlMWQ0Yjc1OTIxNzFmYSBsZWdhY3ktdHJ1bmsKKzMwNjkzIGI5ZjViZWU4ZWMxOGU4ZmYwNGM5ODIwZDM5ZTc0YzA0MjY3YzRiOGIgcmVsZWFzZTIyLW1haW50CiszMDY5NCAwYTk3OTZhNjQ2OGVmMTNmMjMxNTY2YzMxYmI4YWMyNDhiNjgwNWQ5IGxlZ2FjeS10cnVuaworMzA2OTUgNDdiMTM0YmI1MWMzMDJkOGVhMmVkMDE0NmQ2NGM3MjczMjg0NzM0MSBsZWdhY3ktdHJ1bmsKKzMwNjk2IDMxOGFiYTk0YzFlN2IxZWNlZDk0Y2ZkMzg0NDZjM2Q1MGJmYTJlNjQgbGVnYWN5LXRydW5rCiszMDY5NyA5MjVhN2IxZjkzZWUwMGY4ZTA0ZTIxZmY4Y2FkMjYyZGZiNDEyMmMyIGxlZ2FjeS10cnVuaworMzA2OTggMDdjNmMyZTk4YTFjZGUxY2I1MWVmZjE2YmI1ZmMzOWZhMDc0MzVhZSBsZWdhY3ktdHJ1bmsKKzMwNjk5IDZmZTQ5ZGJmMDNmZDQ2ZmJmNjM2NmU4ZWQ1ZGViZDUwYmU4MjQwNzEgcmVsZWFzZTIxLW1haW50CiszMDcwMCBhMGUwY2FiNWM5MjdmYzFhZjkyZWYwYzFiNTE2YmZjYTY5YmNmZTRiIHJlbGVhc2UyMS1tYWludAorMzA3MDEgY2RmMWJhMmFiNzE1Mjk0MjI2YjhlMTViNmFjODI1YmUwODYzN2Q1MSByZWxlYXNlMjEtbWFpbnQKKzMwNzAyIDc3MDZhMDZmNWU2OTI2OTRmNWJhZTdiZmFmMjM0MWViMDk2NTcwOGQgbGVnYWN5LXRydW5rCiszMDcwMyAwMWQ5ZmQ1OTUzNzVmZTU1ZGJkMDRmOGRiNWI0OWFiZjEyZjM2N2Q0IGxlZ2FjeS10cnVuaworMzA3MDQgNzI4MzgzZGM3MzllZjAwZjI1M2VmODJiOTFlMTgzZTAyYjVmNzJhZCBsZWdhY3ktdHJ1bmsKKzMwNzA1IGM3OTg2MTNhODc2NTViYTI2MzU3ODI3NTNmMDM0Njc3MjJlM2M1YjEgbGVnYWN5LXRydW5rCiszMDcwNiAwNGFhODZkNDlkOTNlNTU2NDkwYmNkODkyZDc5NTlhYTg3MGFiODdlIGxlZ2FjeS10cnVuaworMzA3MDcgZmM0YmIzODIwNDQ5ZTNmMGZhZGU5YmJkZTU2NTQ0ZGQxYzA0OWI3MCBsZWdhY3ktdHJ1bmsKKzMwNzA4IGJjYWUyYTcwZTFlYzdjOWY4NDQwMzEzODA1MjdhMTMwYjg4ZWM4NjQgbGVnYWN5LXRydW5rCiszMDcwOSA3ZWE0NDMwNTIyZGY0OTNhMDg0ZGQ3Y2JhODlmMWU3YzM3MjViOTBmIGxlZ2FjeS10cnVuaworMzA3MTAgZDAzYzEzMDM0NTYwYTM2MmU0ZDhkMTkyOWQ4ZGNmYWRhOTZkZWM3OCBsZWdhY3ktdHJ1bmsKKzMwNzExIGIyOWNmYWQ0NDA5N2I1OGMyYjE2MmFhZGIxZDhlNzU4NGU1YmU3NDIgbGVnYWN5LXRydW5rCiszMDcxMiBiMzQ2MjcyNTQ0YTE4MmMxNmJkM2VkMDFkNGZhYWQzNWJiZDBjZjQ5IGxlZ2FjeS10cnVuaworMzA3MTMgOTM0NzMyNzg3NDE5NGJmOGFlNDY0YmE5YjQ5NGNjOTkwY2QxYWU2ZCBsZWdhY3ktdHJ1bmsKKzMwNzE0IDU5MzA5ZDRiZjg0MWI2OTI5NjE3Nzc3MGJmZWE2ZGY5MTliNzhkNDQgbGVnYWN5LXRydW5rCiszMDcxNSA2NWRjMDExMGE3MzVjMTAxMjhlZWYyMDljMGQxNGY2OTU4YjllZmFjIGxlZ2FjeS10cnVuaworMzA3MTYgZDRjOGFmOTExOWQxOTE4ZmY2NmY3OTU3YjAyNjdiZGQzZmJiMDBhNSBsZWdhY3ktdHJ1bmsKKzMwNzE3IGE1MWU1YWUyOTg4MmJjYjFiZjVlMzQyYTJjM2JkZTJjZjhiZDA2MzYgbGVnYWN5LXRydW5rCiszMDcxOCBiODcyNDM0MWJiMWFiYzMyZjlmZjYxNWQ4ZjAxZDNmODdlZmQ1ZjIzIGxlZ2FjeS10cnVuaworMzA3MTkgNzdiNzBhODg4NGNiMjNiODZmZDAxMmU0MWEwMTI4ZDI3ZGEzYjU3NiBsZWdhY3ktdHJ1bmsKKzMwNzIwIDkyODEyZjZjZDYzYjViMmMyYmJkODU1ZWM3YmYwNzBkMjUwZmRlMjkgbGVnYWN5LXRydW5rCiszMDcyMSBkYzZmYjhhNmFmM2RlZjI3ODBlZmY1ZTY5NDgwMzgyNjU2NDM0MDBiIGxlZ2FjeS10cnVuaworMzA3MjIgYWUxMjI2NzVkZjFlOTBjZTk2NDE0MzY1NjQyYWY3YjQ0N2U5NDkyZiBsZWdhY3ktdHJ1bmsKKzMwNzIzIDgxZGE3M2I5M2MzYzYyZjNjMjI2NzY4ZDdhMmVlMmM2NzNkYzE0YjEgbGVnYWN5LXRydW5rCiszMDcyNCAwYTAzNWY5Mjk5YTk3OWY3ODljMWJlMTE2ZjU3OWIwNTZlMTI2N2E2IGxlZ2FjeS10cnVuaworMzA3MjUgM2M4ZDkxZjNmNGM2N2RlNzgzMTdhNTc0ZjM5MWFlNmRiMjY0NzhkYyBsZWdhY3ktdHJ1bmsKKzMwNzI2IDRmMTljODUyNGYxYWM3ZTRlN2FjYjQ0MTY5ZDc4OTFkMTQ3MTllNTAgbGVnYWN5LXRydW5rCiszMDcyNyA2YWUzNjFkZjg3MGVlYTMxOGY3YmIwMGRiYTRkNDlmYTI4MjFmMzJiIHJlbGVhc2UyMi1tYWludAorMzA3MjggYjBkNTI4MzI3YzRjMWE2Y2Y2Y2M1MzllOWNmZTQ2NmU4YzY1YTc3MCBsZWdhY3ktdHJ1bmsKKzMwNzI5IDgwZWEwNDhmYzBkNzM1ZjFmZGFhOTBhZWZjN2EwMDZiNjQyZTBkYmQgbGVnYWN5LXRydW5rCiszMDczMCA0MjhlZWNkZmQ1N2ZjYWNlMmU3ZDE5MWVhODY5MGU2MzAxOGMzNDk0IGxlZ2FjeS10cnVuaworMzA3MzEgYTQ5NGY1YTg2MzlmMjkwNDVmYjc5NzA3NWMwNGI2YzEyNTVjNGVlZSBsZWdhY3ktdHJ1bmsKKzMwNzMyIDRhNjJhOTQxZjNiMTJhMzAzNWFjYjcxOWJjNWQ4ZDA5ZGM1NDk5NWYgbGVnYWN5LXRydW5rCiszMDczMyBkZTJjOTVkODE5ODQxNjBmNTllZjAwMWFiNWNhYTAwYWMzZTEwMDk0IHJlbGVhc2UyMi1tYWludAorMzA3MzQgZjk2NzcyZTMxZTIzM2Y3NzdlZDIxZWJiNzM4YjhjZDVkMzk5NDA0OSByZWxlYXNlMjItbWFpbnQKKzMwNzM1IDNiM2NlOTY0YWRjOWMxM2YyZmE1Njk4YTJhN2Y2NzRmMmUxNWMzZGUgcmVsZWFzZTIyLW1haW50CiszMDczNiA3YTRkNzgyNzE1ZjRjNzY2MjQ5NGNlNmNjZmQ4ZDIyM2UxYjQyMzVkIHJlbGVhc2UyMi1tYWludAorMzA3MzcgMTBiN2U2MDI0NWI1Njk0MDFiOTYzNjI3ZWI1ZjhkMDcyYjg0NzY2MyBsZWdhY3ktdHJ1bmsKKzMwNzM4IDM4ZDIyMzhjNzk1ZTQ2ZTliMTZlN2FiMzk5MmYyNGM0MDE1NDUyNDIgbGVnYWN5LXRydW5rCiszMDczOSAyZWQ1MThhYjJmZDIwYTJkMjIyOTQwNDQ2NDlhMzE2ZjFkMjI1MGUxIGxlZ2FjeS10cnVuaworMzA3NDAgMTc4NzhkNDU4Y2YxMmYzZGZkMTNlMmExMDQ5MGFmZjc3OGFlZDdhNCByZWxlYXNlMjItbWFpbnQKKzMwNzQxIDExMTlkNTgyNjA5YTE0ZjI0ZTBmNGE3ZTZmMjIwNTUwMzhjNTJjMmYgbGVnYWN5LXRydW5rCiszMDc0MiAyMDlkNjcyMTI4ODNkMDEwYzM2YzZlNTZmMWQyNzMxYTA2YzkwY2NlIHJlbGVhc2UyMi1tYWludAorMzA3NDMgMjAxY2RlYjMwNWY2NGEwOTQwM2YyZmVkNDZjOTI5ZTZlMTE2YzQwNCBsZWdhY3ktdHJ1bmsKKzMwNzQ0IDQyMGVhMjA1ZjAyNDFlZTQ1MTk1NDAyNmM4MmE0ZjVlYWE1MDdmNTUgbGVnYWN5LXRydW5rCiszMDc0NSA1ZDQyZGJhNDlmZTUwNzI3NWI5ODBiNGQxZGM1OWQ0MDI4Mjc2NjcyIGxlZ2FjeS10cnVuaworMzA3NDYgZWJlYjAwYjhkNTAyYTBjOTk1M2I0MWFkOTBjZjg4MmViZWE3N2UwZSByZWxlYXNlMjItbWFpbnQKKzMwNzQ3IDExYjM0NTY0YTBmZDA1ODIxZGE0MjIwNTZjOTgwMTkyYjM0OGRlYmMgbGVnYWN5LXRydW5rCiszMDc0OCAzYTMzYmQwZjljNGJmZGM3NTRlYzhmZTFlMTM1MjNjOWM4MDhkYWI1IGxlZ2FjeS10cnVuaworMzA3NDkgZjM0YzI4NjUwZjE0ZTE4ZTVmZjI1MzVjYzg0MTE1ZTJkOTk1ZDMxYSBsZWdhY3ktdHJ1bmsKKzMwNzUwIDdmMzdlZDU0MjkyMDAzZWE4ZjBjYzQ4ZmRkZTNhYzM0NTVjZmNjNjEgbGVnYWN5LXRydW5rCiszMDc1MSAxOGYwNzJkMTQwYTljN2ZlNzVlZTRiMTQ1MTRjNmM3MTk5MmYyZDdjIHJlbGVhc2UyMi1tYWludAorMzA3NTIgZmQzYjA3MTFiMjVmYjA1NWZhZjBiYmQ4MzgyNzc1Y2Q4MmM1ZjQxYSByZWxlYXNlMjItbWFpbnQKKzMwNzUzIGVlYmM0ZmRhYzU5NGU2OTJjZjFmMDgwMGUzYTFkNDg4YWE1ODdiM2IgcmVsZWFzZTIyLW1haW50CiszMDc1NCBlOWY0NWI4ZWZkNmI0ZDdjODc2YjQwZTViZjI0YTY2YzY1ZmEzODJkIGxlZ2FjeS10cnVuaworMzA3NTUgOGJkNmIyYWUyODc0YjA3OWZiMGU1YWY3YmM5NTFmNTEwMWJlZjVmYyByZWxlYXNlMjItbWFpbnQKKzMwNzU2IDNlZGU5MGQ2ZTFjZjEyNWEwMjAzYjQ5ZWYzYzc0OTg0OGQ4ZjE3NWEgbGVnYWN5LXRydW5rCiszMDc1NyA4NGE4ZTdkMWRhYTk3Njk4MTVkOTlkNmQzZWU3OTU4NTI5Yjc2NWM2IHJlbGVhc2UyMi1tYWludAorMzA3NTggM2JmZGJjM2RmYmNlOTI4YzkxNzFkYzQ4YTg3MTc4ZjU0ZjE5MmI0MSBsZWdhY3ktdHJ1bmsKKzMwNzU5IDBhNmI4ODE5MGI4YjFkM2JlZjUyYTljZTQ3MzUyN2VjZTVhOGE5ZTIgcmVsZWFzZTIyLW1haW50CiszMDc2MCBmNTlkODBjN2UxYmI0ZDE4ZjkwMDBkNTAxZDAzMWZiYzlkZmNmNGU4IGxlZ2FjeS10cnVuaworMzA3NjEgZjk1ZTlmM2M5ZmVhNzhkNGQ3MTdlZGEwM2QxZjUwZDg2NDg3NDYxMCBsZWdhY3ktdHJ1bmsKKzMwNzYyIGE3NzA2ZDRjNjkwYzIwYWU2MWVlODE2ZDJkOTNkNDVhNGZkMDhiZjEgbGVnYWN5LXRydW5rCiszMDc2MyAzYWZiZDU1ZmIxOGZhNGFiMTNhMzhjZjFiMTRkMjE1MTYzZTc3NDRhIGxlZ2FjeS10cnVuaworMzA3NjQgYjNmMTA1Mzk5ZDIyODExZGJhNWQxOTlhOTU2NjBjNDY2MWY0NDcyNCBsZWdhY3ktdHJ1bmsKKzMwNzY1IGQzYWI1MzJiM2I2ZDZlYmIyMGE3MWY2YTI1ZjJjYzk1ZjE2NzVmMWUgbGVnYWN5LXRydW5rCiszMDc2NiBhNTZjM2M1NjI4OGI5ZmViMjdkYjViYTkwOWRkNDUyYjU3MGQ4ZDg4IGxlZ2FjeS10cnVuaworMzA3NjcgNWRkYjkwZjgxNjlhNTg5MzlhZTQ0M2IwNzcyNGI3YmRhYjAyYjgyYyBsZWdhY3ktdHJ1bmsKKzMwNzY4IGM0MTUwZjdmNmE2OTYxNTI0YWU4ODg3MjA3NzAyZTJiNzc1N2I0ZjEgbGVnYWN5LXRydW5rCiszMDc2OSA3YzM0ZTViZjJlMjJiMWY4NTg5ZjgyNzVlZmVlZWNlZTMyYzEzZjJiIGxlZ2FjeS10cnVuaworMzA3NzAgMTZhODc2NzQ2Mjg1MGM3NDZkMDI1YzM4ZmFiZGQ4YWMwZjQ3ODJmZCBsZWdhY3ktdHJ1bmsKKzMwNzcxIGM5OTQ5M2FiYTA5OGQyNTNjMmRiNzhkMTk2YTE2NDU5MWVhN2Y2ZTAgbGVnYWN5LXRydW5rCiszMDc3MiA0MGNkNzQ3ODI2MDA4MTFhZDAyODdlNzhjNGQ4MzcyN2Y2NWQxN2JiIGxlZ2FjeS10cnVuaworMzA3NzMgMWNhN2IyZDY5MjQyNWRjNjdiODQwOTMzNmNhYTVkMzhiYTRmNDRmZiBsZWdhY3ktdHJ1bmsKKzMwNzc0IDI2MTU0NzcwMzQ0M2RhYjQ1NDA5N2I1MGQ1MTU1MWMwNTI3NGQ2ZTMgbGVnYWN5LXRydW5rCiszMDc3NSBiYWZmNTZhZGZiYzMzODI0OGY5NWViYTc5ZjU3NzVhNDFlYzVkY2Y2IGxlZ2FjeS10cnVuaworMzA3NzYgYWU4OWI1NTYwNTBhZTA1NzJmNGM2ZGViZDU3MjkwMDQ5ODczY2E5MSBsZWdhY3ktdHJ1bmsKKzMwNzc3IDNmYmZmZDczNmQ5ZDA0YzIyMDg4OTZlZDQ3NjkyM2Q2ZDNmOWJjNmEgbGVnYWN5LXRydW5rCiszMDc3OCBlOGMxYTk1NDJmNjZhNjY4ZDc4ZjdkMmZmYmU3OGNlYjNmODg3NTFiIGxlZ2FjeS10cnVuaworMzA3NzkgZmFmMjU2YTU5ZWNlYjI5Mzc3N2YyNzY0NzI0NWU1NGJlMzQ0MDNlYSBsZWdhY3ktdHJ1bmsKKzMwNzgwIDRjZGI1MDFhYjZhMjE3N2FmM2JkYTA4ODIyNzY4NTZkOGQ1N2Y0NWMgbGVnYWN5LXRydW5rCiszMDc4MSBmMDU3NjRkNzA4MmNjMWEwYTFhMmM3ZmI2MTcyZjkxM2I5NWIyOTMwIGxlZ2FjeS10cnVuaworMzA3ODIgNzc0MjhlODM1ZDY3ZWQ4MDYzNDA4YTRmMTllY2I1MWQ4Zjk3Y2UzNiBsZWdhY3ktdHJ1bmsKKzMwNzgzIDdhY2Y1NzQ0MGY0ZTA5ZmU1YmVmY2NhMDg1NTljOWRjM2Q1ZTQ4ZTQgbGVnYWN5LXRydW5rCiszMDc4NCA4ZDBlMDdjMjcwZWY5YjMxMTQ3NzRjYWJlZjM3ZTA1NTg4YmQ5OTQ3IGxlZ2FjeS10cnVuaworMzA3ODUgYWY4MTExNzI3MTdkMGEzMTAxNGVlZGZhZTU0NGQ0N2FiNjU2NGEyMSBsZWdhY3ktdHJ1bmsKKzMwNzg2IGE5ZGRhZGY3ODllYWI4ZjY5OGRhMzczZTdjNzI5YTczZTYyNGYzNGQgbGVnYWN5LXRydW5rCiszMDc4NyBiNzQ0NTA4ZDViMTI2NDZhZjIwYmNlYzI1MTRhYzNiMTEzZWU5YjdhIGxlZ2FjeS10cnVuaworMzA3ODggYmUzZDFiN2U2MmRjMjY5Y2JiODQ3YmRiNDFjZTEyODdiNDE0YjliNyBsZWdhY3ktdHJ1bmsKKzMwNzg5IGRiZTRmNTdlOGJiMjk1NmNjOThhZTlmMjE5NzMxMjI5MDM1YzRmNDIgbGVnYWN5LXRydW5rCiszMDc5MCAzOTJmZWVjZDJmMWM3MWVkOGI3M2NjOTI3MWUwODE2ZWRlZTI4ZDNiIGxlZ2FjeS10cnVuaworMzA3OTEgOTFkNjc4YTk0YzczNjNmNTBkZTlkOWY2NzMwMmRjMDA0ZjJjYjFjOCBsZWdhY3ktdHJ1bmsKKzMwNzkyIDY0ZDNmZTkwNGEwYWY4ZDY3NGIyNGVhZTA0NWRkNWRmMzkzN2FjYmEgbGVnYWN5LXRydW5rCiszMDc5MyBjZGE1YWI2MjU3NzRmYWRkNTIwMjk3OTQ1ZDk0ZTIyYTY2MjY1Y2VjIGxlZ2FjeS10cnVuaworMzA3OTQgZDJhZTVhZmZkZTE0ZTc5NjQwMTJhNDYxNzkwZjY3YmNhNmZjYTk2ZiBsZWdhY3ktdHJ1bmsKKzMwNzk1IGJlZGI3NWQ5MGUwM2MzOTlmMmUwMTZmNjE4MmVhMzdhZGFjMDMxMzcgbGVnYWN5LXRydW5rCiszMDc5NiA3ZmRkNWQ2MmM2MTVhZjIwYWY2NGI5ODEwMmE1YzE5ODhmZWJlODVkIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMDc5NyA5ZGE0M2NkZThhMTY2MWU2OGM0NTVmYWFlOGU0NzZmZTViNDJhYzg4IGxlZ2FjeS10cnVuaworMzA3OTggY2JmMzU1ZjI4Y2E5ZjY4OTI4Nzg5OTE0OWM5YTMzNDEwYzdlNWUwZSBsZWdhY3ktdHJ1bmsKKzMwNzk5IGM4MjM0ZTI2MTE1YzY2ZDRhYzliNDhhMmJlYzZlNjE2NGUyYjZiYWYgbGVnYWN5LXRydW5rCiszMDgwMCA5ZGUwNjRjN2EyNDdmMTFmYzM4ZTA0YmNmOWE3NDIxMDAyZWU1MTgxIGxlZ2FjeS10cnVuaworMzA4MDEgODdiNjZiNmZmNWU3NmY3NzAyZWEzZWI3NDU1MDczZTNlNTQ0ZGY3NCBsZWdhY3ktdHJ1bmsKKzMwODAyIDVhMDUwMjAwZjczNjU4NmM1ZjhkNTBjZGRkNzdmZmJmN2M5ZTg4NjUgbGVnYWN5LXRydW5rCiszMDgwMyBjNmY0OWI3OTc5NjNlY2JmZjk4NWFhNGJlOGM3ZGFhZWQ2YzQzN2ViIGxlZ2FjeS10cnVuaworMzA4MDQgODY2NzU2ZjY3MGZmZDU4NDUzZDE1YWNlMDBhN2I0YTg3NWQ4ZjE1OCBsZWdhY3ktdHJ1bmsKKzMwODA1IGRmMjc1NGFjYTcxNzA0ZjRiYTQ3ZTg0NDNhYWNlNDVjNWZjZTYyZGYgbGVnYWN5LXRydW5rCiszMDgwNiA0MGU1ZWI5ZTA0ZTBlODM1YWI1Y2U1ZjY1ZWM1YzIxMDllYjkwMWEwIGxlZ2FjeS10cnVuaworMzA4MDcgMDRlNTYxMGM1ZWZlOTdhZjQ1OGZjZGQ0NjYxZWM3ZDc0NjVmYTVlYiBsZWdhY3ktdHJ1bmsKKzMwODA4IDg4ZmFhOTg1ZDk4YzNmMzY2M2EwNzM2NzZkNTAzY2ZiYzA5YmU4MjUgbGVnYWN5LXRydW5rCiszMDgwOSA5N2Y0OTRiZjczMTkwYWQ5YmQwNmIyYmJhZTViZDg2NzFiN2E3NTY0IGxlZ2FjeS10cnVuaworMzA4MTAgNzVkYTQ5OTc3NTcxYTRlYWI5YTE5MmIwMmE2YTJhYjhmMTMxM2ViNiBsZWdhY3ktdHJ1bmsKKzMwODExIGU4M2E0MmE5MGRmMTYzOTZhN2FmYmY4NzVlZDQwZThhNWZkN2U4ZTMgbGVnYWN5LXRydW5rCiszMDgxMiA3MDM5Mzc1MjI2YTdmMjYyN2FmMGI1NTQ1OGRhYmEwMTI1MmU3NGI5IGxlZ2FjeS10cnVuaworMzA4MTMgZDdmODAwMjgzMDFkZWI3NGEwMWY1ODU1MTI3M2ZkZDQxMWQ1OTNlNyBsZWdhY3ktdHJ1bmsKKzMwODE0IGJmYzE0MGM3ZTNkMDY1MWYwM2EzOTM5YWViMTJkZWQ5ZjQ5ZjM4YTcgbGVnYWN5LXRydW5rCiszMDgxNSA3MDU1ZjRjMWVkY2MzNDFlN2Q0YzQ1NGQ2YTE5NGM2ODUwMDdjMjhiIGxlZ2FjeS10cnVuaworMzA4MTYgYjgzODc3MzBkZDhmZjQxNWU3OTI3ZjZmYTJkNDQzODNhODgwNzYwOSBsZWdhY3ktdHJ1bmsKKzMwODE3IGMxYzQ1NDc1ZjE3MGU0MGU3ZTkyY2RmNTIzOWYwNjg3ZTgzM2RjMjMgbGVnYWN5LXRydW5rCiszMDgxOCA4MTU1MWFkZjEyZjZkMWVjZjI0NWM4OTk4NmRkNzdhNzM0NmNlOGFlIGxlZ2FjeS10cnVuaworMzA4MTkgMDVmZjkwNGVlNGUwN2I2YzY2Y2Y3MmE1OGUyMDhkY2U3NDQ3YmNmYSByZWxlYXNlMjItbWFpbnQKKzMwODIwIDRmYTlhZDg1YzNiMTVkYzJkZjhiZTg2NTQ1YWI3YzlmNzU1YjgwM2QgcmVsZWFzZTIyLW1haW50CiszMDgyMSAxMzY5ZDI0YmM4NjFkY2EyNjg3MTU4ZGU5ZDAwMTQwNWUzNjgyYjkwIGxlZ2FjeS10cnVuaworMzA4MjIgNWE5NzVlODJkNzBmYjViYzA0OWNkNDQ2MjBkOGVkN2FhZDU5NDFmMiBsZWdhY3ktdHJ1bmsKKzMwODIzIGRlODAxNzMzZWMxODg3NWJjMmNiNmQ4ZDM2MjY3ZDE1MjU4OTEwNTggcmVsZWFzZTIyLW1haW50CiszMDgyNCAwZjhkMTg5MzEwYjQ1YTlmZGI2NDU0M2Y1NGU4Y2VlOTI4MGFmM2ZlIGxlZ2FjeS10cnVuaworMzA4MjUgYTU1NTIzMGJlM2NiMDA3M2IzZTgyZGFjYWIwYmI3ODU3ZmI1ODlhOCBsZWdhY3ktdHJ1bmsKKzMwODI2IDcwNDYzOWQyMGE2Y2Q2MjViYzBhMzEyYjY3ZjVlYjRlNDE0ODg3OGIgbGVnYWN5LXRydW5rCiszMDgyNyBlYTc2ODBlYWY5MzdkZjczODI2NDI1MmQ1NTYwNzM2ZDAwZjBiZjc1IGxlZ2FjeS10cnVuaworMzA4MjggZGFkZDE3OGI2NWZhNTY4YWUwZGE2Yzg1ZTA3OGEwZDI5ODU4YWUzMSBsZWdhY3ktdHJ1bmsKKzMwODI5IGZmMTc5YmFkZTNmMGRjMzllNGJkMGE5OWNlNWMzMmQ5ZGEzODdmZTggbGVnYWN5LXRydW5rCiszMDgzMCAxODU4NDcxNDBjYTVkYmRkYTExZmY4ZjJiMWUzMjYzZDhjMWFlY2MyIHJlbGVhc2UyMi1tYWludAorMzA4MzEgYTJmODRkMjgzNWZhZjgyNWQ4ZTAzZTRjNjFkNDJhNDcyYjQ5ZTAxMiBsZWdhY3ktdHJ1bmsKKzMwODMyIGVhYTYxMmE0MWRkMGQ2OWViMGQ5ZjA5NTcyYmEzMGFkNWJkNDY0ZTAgbGVnYWN5LXRydW5rCiszMDgzMyA5MjIwMDk4ZjAzMjdlOWIyYzAxMzBjNDgwZTg3ZWYzNjhmNTM4OTdjIGxlZ2FjeS10cnVuaworMzA4MzQgYzY4MjkwNzkwZDUzZDZlMDFkYzMyMjcwZGQ0MDk0YzgxMTJmYzZjYSBsZWdhY3ktdHJ1bmsKKzMwODM1IGNkYWIyYjc0ZjMwN2VhZDYzNzk3NTY4ZTU5NTQzZjYzYjM5MWQ1ODAgbGVnYWN5LXRydW5rCiszMDgzNiBlZmEyZjhhYmIwMmM5YTYxNWIwMDRiODkxZjM0ZTk0MzI5Y2Y4Y2RhIGxlZ2FjeS10cnVuaworMzA4MzcgM2M3MDIzYzllOGUyNjcxYmRjZGQ3NjRiZDk1Njg5M2M2YmNlNzczZiBsZWdhY3ktdHJ1bmsKKzMwODM4IGQ5NjZiYjU0YjNkZTBkOGU1ZDc1MDQxZjgxMTVmMmY0MDk5MmY0ODUgbGVnYWN5LXRydW5rCiszMDgzOSA3MDY3ZDM2YzNjZjQ3MDE5NTYxMDc1Y2NiNTU3MDkzMWE1NWRmODVhIGxlZ2FjeS10cnVuaworMzA4NDAgNzVmMzhjNDE1ZTdkNGQwN2M4NjRiYjAwMTJiZmVhYWQ4YjljMjhkYyBsZWdhY3ktdHJ1bmsKKzMwODQxIDE1NjJjMWUxMGI0OTdkYTk3MTQ4Y2VmOTZjMjBkNmNhYzkzMDY5ZDkgbGVnYWN5LXRydW5rCiszMDg0MiAyOTllZjJkYWJiNTJjNjYyNGMwMzdmYjM2MzM3ZjljZmQyMTU2NjEyIGxlZ2FjeS10cnVuaworMzA4NDMgODhiZjEwMzEzNTg0ZGU0MTY3ZjM4Njc0MDU4Zjk1NzQ2OGU1MDI4MiBsZWdhY3ktdHJ1bmsKKzMwODQ0IDFiNjIyOWFkYjNkZjlkZjAyYzQ0YTY5ZjFlYzQyOWFlMzViYzQxMGMgbGVnYWN5LXRydW5rCiszMDg0NSBkNWEzMzg2Yzc2ZjQ5NDU2Y2I1MDViMWY5ODI3MjA4MDdlMjU2Yjg0IGxlZ2FjeS10cnVuaworMzA4NDYgYzQwNDg3OWNmOTk5YjAzMzA1ZTExYjE5YWQ0NTBmNWQ1Nzc0MjQwYSBsZWdhY3ktdHJ1bmsKKzMwODQ3IDQ0ZTM1MmQ3ZDUyZmZiYjQ0ZmFkMTBkNzIxYWYyNTAxNzZjNTViZmQgbGVnYWN5LXRydW5rCiszMDg0OCBlMmRhMGRmMzYxM2QxY2EzYWM0YWIzODg3MmEyMDM4NjFkNTU5OWJkIGxlZ2FjeS10cnVuaworMzA4NDkgNjgzMzM5Yjg1MmFiZDQ5YjliZGE2YjY1YmZhNWRiMDcyNGJmMjdiYyBsZWdhY3ktdHJ1bmsKKzMwODUwIDg3MDQ1YThlYzU0NzE3OTE2MDMwNzE3NWU5OWE4ZjA0OTFjNTMwNTUgbGVnYWN5LXRydW5rCiszMDg1MSA2Y2RhN2M2MTIxNTRhNzY4Njg1NzhjOWRkYTk1MmM1NmY1NDJjMjA0IGxlZ2FjeS10cnVuaworMzA4NTIgYTBhOTE0NzIzYzQ4MGI3MTI2YzE5OWQ2YzQyY2IyODBhMzZlZDdkMyBsZWdhY3ktdHJ1bmsKKzMwODUzIDU5N2FhOTk2NmVjNmJiMzMzMDc3YTg3NjRjZjA4ZTFmNzIxNWM0ODQgbGVnYWN5LXRydW5rCiszMDg1NCBmNGM2OTRhMDE0MjU2ODM1YjdjY2EwYWM2ZWQ1ZjQ1NGNmNjYxNzY0IGxlZ2FjeS10cnVuaworMzA4NTUgMjJmYjc2YzUzOTI2NzUxNmRkNjFjNjVhZTcyOGNmNWNiNWZhZmEzYyBsZWdhY3ktdHJ1bmsKKzMwODU2IDJjNjQ5YzdhZThmM2YyYmY3YzRhZTFkMDBhYzZhMTEyODc4NjJkMGMgbGVnYWN5LXRydW5rCiszMDg1NyBjYmNhMGJjZjFjMzFlOWVhY2Q5MWQ3MTlkMDhiNzc0YWIzN2E3ZGE1IGxlZ2FjeS10cnVuaworMzA4NTggYjQ3MGNhODRmZDJiNWVjOTllYTY5ZDZhZjFlOWJlNTNjMjI4ODJhMyBsZWdhY3ktdHJ1bmsKKzMwODU5IGU4MDQ1NmFkMTk1YjY4ZDgwNmViNjYwNmJiNjFkMjEyNDEwN2ZjMmEgbGVnYWN5LXRydW5rCiszMDg2MCBkMzRlZjAwZDlkYThhMDg2MDg2NDQzZjcyNWY4YTg2M2Q3YzRkMWE5IGxlZ2FjeS10cnVuaworMzA4NjEgOGI1M2IwY2UwNmQ0NThlN2Y0MWFlNjAxYWEyNzI0YzRkYmNhZjJjYiBsZWdhY3ktdHJ1bmsKKzMwODYyIGJhNjNkNzE3Yzc1ZjAwMDRjMGJjZWFjNzEyNGU1YjlhM2IzY2EyMjEgbGVnYWN5LXRydW5rCiszMDg2MyA5ZmUzNmFlMmE0YTJiMmE4NWY0YmJkYWQ4YTQ5NTNiYzE0YzYwMjAyIGxlZ2FjeS10cnVuaworMzA4NjUgOWJlMzE0OWZiZWU3MTdiNDYzYTg4YWQ0NzI5MGFhZjk3ZWJkZGZjNSBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMwODY2IDQxMmU2NmUzNTMwZWU3ZjBiNjcxMjc0OGZkZDgwYmJiOWZmNGI1YzIgbGVnYWN5LXRydW5rCiszMDg2NyA0ZjU5OTgxZjc4MTdkYWMxMTU5MDg5MDQyOWIzNjQ5N2VhZjQ1MjcwIGxlZ2FjeS10cnVuaworMzA4NjggMTgwMDY3YzI4ODBmZWU1YzRkNDZjYzgyMjRkYzM0ZTk4ZDllMTcxNiBsZWdhY3ktdHJ1bmsKKzMwODY5IDIwNTVkMDM3Mjk1Y2YwOTk4YzBjOTBjM2NhZGJmYjEwZTNmNzIxY2IgbGVnYWN5LXRydW5rCiszMDg3MCAzMGRhOGM5NmZkMjllZjM2NWI4OGZjOTZhZTI5NTA0YzA4YmJhNzNlIGxlZ2FjeS10cnVuaworMzA4NzEgNWFjZjY5NjdkNmRkMzcxNDg2MGRjM2RjOTZmMTkwYzAzOWY4YWU5OSBsZWdhY3ktdHJ1bmsKKzMwODcyIGRkYjUyZjU2NzNkYjVhODUzZTcyNWZlYjY1Zjc4ZWMxYjE4OWRlODQgbGVnYWN5LXRydW5rCiszMDg3MyAyMjk5MmZhNTE4MzEwZmVmMThhODVjMTg5OTQwODE2MmQzMTI2OGI5IGxlZ2FjeS10cnVuaworMzA4NzQgYmJmMTQxODViZjFlN2U2YjZkMjkxZTExODRhYzU4OGJlNDEzMjExNiBsZWdhY3ktdHJ1bmsKKzMwODc1IDQwNjc3ZmU4NTAzZDMwZTBlMWMxYjhlZWU1MmUxYWQwZGViOTE3YzUgbGVnYWN5LXRydW5rCiszMDg3NiAyN2FlZGNmNDZiY2M5MmZmM2YxNzk0ZGRjYjgxMTc5OGViMDMyNzNmIGxlZ2FjeS10cnVuaworMzA4NzcgNDI4YzhhNDIzMDQzZWFkZDM2NWI2YTg2MzNhNjliM2E0ZTM1NjIwMSBsZWdhY3ktdHJ1bmsKKzMwODc4IGRjNjExNjI3ODI1OTNkOGM3NDBkZmUxZDg4MGI1MzEzOGNhMmVhMjggbGVnYWN5LXRydW5rCiszMDg3OSA4ZGIyZTc0ZGRiMGU1YWE0ZjRmMGVjZmNlZWM4YzhmMjQ3N2I3MDkzIGxlZ2FjeS10cnVuaworMzA4ODAgYWZkMWRjNjJlMzU0ZGVlMzNhYTM5Y2M0MzhhZTJkOGY1NjI4YmFmYiBsZWdhY3ktdHJ1bmsKKzMwODgxIDU4YmFkNzY5Nzc2ZTU5OTllNGFkMzMxM2Y3ZTNhMjAzNjI4ZDk4NjQgbGVnYWN5LXRydW5rCiszMDg4MiAwNGU0NTY1ODMyYmRkMzljOGI0YjYzYTRkZjFmZmQ0MWU5MmFjZjBkIGxlZ2FjeS10cnVuaworMzA4ODMgMjczYjJiNDliZmQ4Njg5OTg2MDRjNGZlMmI0ZjZmMWNjODZkNGEyYiBsZWdhY3ktdHJ1bmsKKzMwODg0IDg5MWVjNGQyNjZkMTc4NjdlYjBjMzNjMTg0ODk2NDFhOTUwZThhMjAgbGVnYWN5LXRydW5rCiszMDg4NSA0YTQ5YjVhYTVkMjEyNzE4YzQxNGY1ZTJmOTE3ZGNhNjIxNGYzMjc5IGxlZ2FjeS10cnVuaworMzA4ODYgZWIxZTUyOWZkZmRmMGQ0YjljMmQyMjkyNTg4NmQzYmZkOTNhMDhjMSBsZWdhY3ktdHJ1bmsKKzMwODg3IGZkZTc4ZDgwZTA5ODlkMmEzNDAzYWYzYzk1ZDVkM2RhZDkzZGI3ZmUgbGVnYWN5LXRydW5rCiszMDg4OCAwMGYyOTRiZjgyOTlmNjE3NjIzMWU5ZjY1MTA5MmNlM2QyYWRjYmQzIGxlZ2FjeS10cnVuaworMzA4ODkgNjE0N2JjMTRkMjc3YjZkYmQ1NmFjZWRkNzA3MWMwZGQ1Yzc0ODk0OSBsZWdhY3ktdHJ1bmsKKzMwODkwIGZmMGUxZWQ5OThkZWRhYjNjZjcxNmU1ZTBhMDk1OGEwZmYzZTYzMjkgbGVnYWN5LXRydW5rCiszMDg5MSBjMWRjNTBkZjU3OGNkY2ViYTVmMjVkMjQ2MWFlZDcyMGQxMzM5N2I2IHJlbGVhc2UyMi1tYWludAorMzA4OTIgMTNiZWVhMmQyZDI2YWExYTFmNTFhMWFjODRmYzQ5NDM0NDAzOWY3MiBsZWdhY3ktdHJ1bmsKKzMwODkzIDljNGI0MjA3ZTk3OWRjM2JmYzA0NjA5YTg0MWYxZTFmZDI5NGZhYTAgbGVnYWN5LXRydW5rCiszMDg5NCA1YjNmYmZmMDVmZmRhOWIzZmNlMjA5YmU3MGQ5ZjJiMTEwNDU2ODUzIGxlZ2FjeS10cnVuaworMzA4OTUgYjcyNTY0OTZjOWIwMWM3NDYzZmExZDFiOTg0OTJmM2ZiOTRlZGJjOCBsZWdhY3ktdHJ1bmsKKzMwODk2IGQyOWM3OGQyN2M1ZTNiODhhZDhmMTllMTc4NjliMzE5MzU4YWI0MjkgbGVnYWN5LXRydW5rCiszMDg5NyBiZTE3OGFmZDQxODE0NTExZmVhODhlNDQ2NzU0NDgwZmQyMTdhNjJkIGxlZ2FjeS10cnVuaworMzA4OTggZTJkNzlmZmEyOTI4YzQwZWFkNGUxNWRkYjc4MWU1MTYwYzU4OGM4YSBsZWdhY3ktdHJ1bmsKKzMwODk5IDg0MGU5ZmVkOTA4YTFmYjg1ZGZlZDVlMjE1NTZmOWNlNDVlNDRjNjcgbGVnYWN5LXRydW5rCiszMDkwMCBmM2JhYmFlZGUxODlhMGI2YTNhMmNmZDdmMjdhOTJkYWMxMjk5Yzg0IGxlZ2FjeS10cnVuaworMzA5MDEgODE1NjljY2RlNWJkZjAwZGY2NWVmNzVmZGRlMTRiYzg4NGU3M2E5NCBsZWdhY3ktdHJ1bmsKKzMwOTAyIGE0NTc1MzFjMGZkNDk1MTA3MjE3Njk1MGUwNGYxYzE3N2YwZjc3MzQgbGVnYWN5LXRydW5rCiszMDkwMyA2Mjk2MDNmNjQ0MTI2Y2EzNTJjMTE5OTcwY2RkMTczYmMzN2Q4MDA4IGxlZ2FjeS10cnVuaworMzA5MDQgOGQ4NjlmOTIxZjIyNjQyMTI3Zjk5ZjAyODM2MDRmMmIxMTllMzYwZiBsZWdhY3ktdHJ1bmsKKzMwOTA1IDliY2Y4NWQwMTM1YzJlNzRhZmU4YzgxNzIwMzRhZDA2YzllYTdkOTggbGVnYWN5LXRydW5rCiszMDkwNiA1MTc0YjRhNzFlNmU0Yjc3NGZhOTVmZjY4ZjI3ZTU2Y2JiOGNlODY3IGxlZ2FjeS10cnVuaworMzA5MDcgZDM2M2Y4M2MyODQ2YTUyZjU3MjNlMTU1Y2QyYTY4ZTEzYjAzMGY3YyBsZWdhY3ktdHJ1bmsKKzMwOTA4IDkxYTU3MzI0M2Q1ZDc5ZWFhNTA4Mjc4Y2FiYWRhNTU4ZTk2OTEzMDAgbGVnYWN5LXRydW5rCiszMDkwOSAwMTU2NDdjN2UxODQzMzY0YTY2YTNhMGY5YTk2NWEwN2YzNjg2N2E5IGxlZ2FjeS10cnVuaworMzA5MTAgZjljNDhlZDY3YTkzYWQ2ZWE3OTA5NTA0NTBkMjZjODg0ZmVlYWY3NiBsZWdhY3ktdHJ1bmsKKzMwOTExIGU3Y2RiNTAzZDFlMDViYWU5MTg0YjM3NGQ5M2NiY2JmN2NlYjJmZjcgbGVnYWN5LXRydW5rCiszMDkxMiBhYTk0YzgyMGIzZWQwMmRjZDliNDYyZTRiNzk1YWZlNjBiNTBjMjE1IGxlZ2FjeS10cnVuaworMzA5MTMgODgyZTNlZWFjM2RkN2EzMDYwNWEwNmExNmY0ODlhYTc1YWE5N2UxNyBsZWdhY3ktdHJ1bmsKKzMwOTE0IGU3Y2QzY2MxMTJkMzAwMTA5MjQzNTM3Nzk3ODkyY2FjNTMzYTYyMDMgbGVnYWN5LXRydW5rCiszMDkxNSAyOGIzZDlhOGVlMWEzMzZhYTk2YjAyNTVjOGJkODY1ZTU1OTEzZWU0IGxlZ2FjeS10cnVuaworMzA5MTYgZTdiZTY4NjgwMzMyNmU0ODA4MWYxYzRhZDE5NmM3ZDFmMDljNDMyNCBsZWdhY3ktdHJ1bmsKKzMwOTE3IDEyMzU5ZTUzNzUxMmMzMjhjZDIzZjgyMWRkZjFkOTkxNmY3ODI0YTggbGVnYWN5LXRydW5rCiszMDkxOCAwMDY0MDcxNGE1OWE1ZDg4ZDhjM2Q3MTYyMzg5MjVmNjA1YTIzOTU4IGxlZ2FjeS10cnVuaworMzA5MTkgZjFkZDkwMzU3ZGNiYTE3Y2Q4MjljYTBkNDI0YjhlYjk3N2JiNDgxNCBsZWdhY3ktdHJ1bmsKKzMwOTIwIGVhZjNmODA3MDBiM2Q1ZDE5Yjg5YmZhYjg5OTc5ZTIxNjZhMGY4MzQgbGVnYWN5LXRydW5rCiszMDkyMSA0Nzk1OGM5OTQ1MmRlMzZlMmY4ZTAzYzNjY2FlMjhlZjc3OGE5YjdmIGxlZ2FjeS10cnVuaworMzA5MjIgZDE2YTk3Nzc0NmEyMzdjNjI0ZTQ5NTM5MGYzODRlMjU0ZTYyYjdiMSBsZWdhY3ktdHJ1bmsKKzMwOTIzIGRhMGM5OTEyNTVjMmVmNjQ4NDMxZDA0ZmQwMWVhZGY4ODZjNzYyMDYgbGVnYWN5LXRydW5rCiszMDkyNCA0MTcyYjI4NmQ2NThjN2ExYjhhNWUxNjViMDc1ZWVlYjNhMWNiZTdlIGxlZ2FjeS10cnVuaworMzA5MjUgZTk0NWEwM2VlNTZjNjllZjU3ZDg2OWRhYTBmOGZiZTY1ZmI1MWYxMSBsZWdhY3ktdHJ1bmsKKzMwOTI2IGFlZDJlZjk2ZWQ1NGQ3OTU5YmM1MzFiYjIwNWJjMmIxYmYyZmMxYzIgbGVnYWN5LXRydW5rCiszMDkyNyA2ZWI1ZTFhMDliOTVkNWU2YTkxYTczZDA2NjFlMTJiODEzMjkwOGVlIGxlZ2FjeS10cnVuaworMzA5MjggYWNlZGVjZDIwMTI2YWRmYjMzN2Q0MTFjMmU5NDcwYWJiODAxZjdmYSBsZWdhY3ktdHJ1bmsKKzMwOTI5IGNhYTZkZjllMDg4MDVkY2M3NTRhNzNmNDBjMDk3ZmRlOGEzNjU1ZDcgbGVnYWN5LXRydW5rCiszMDkzMCBkMTliYzNiMTgxM2NiNTE4Yzc2YmRlYTIyNWY2MDIxMTEzOThmYmZmIGxlZ2FjeS10cnVuaworMzA5MzEgZWE1ZWUzZTdiZmIxMGE3OGZhODg3MTk5NzcyNmQ0ZGYwMWE5YmM0ZiBsZWdhY3ktdHJ1bmsKKzMwOTMyIDFmZDA0YzM3NDA5YWIzZWI1NDdlMDBkNWYxZDlkMDg1MTI2MDlkM2YgbGVnYWN5LXRydW5rCiszMDkzMyBhMjRmZDQ1YWNlYjE4YmZiMjE0YTQ5Nzk3YzAzYzBkNzcxYjY2ZDZjIGxlZ2FjeS10cnVuaworMzA5MzUgNTZkODNkMGM1NWI2MGZjMTdmOWJkNjc0NDE0ZWMwYWZhZTJkODNiZiBsZWdhY3ktdHJ1bmsKKzMwOTM2IDU1MGMxNWM0OTE5YjE2MjgzY2M4MGJlYjRhNGFkODUyMGIyNWEwMmMgbGVnYWN5LXRydW5rCiszMDkzNyA1YzEzM2QxM2YzMjU2MmNjNDJmNzYxODI0MWI2NjBkODRiZTQ2NzUyIGxlZ2FjeS10cnVuaworMzA5MzggOTkyNGYyMmQ2NjA0ZTQyOTRiMzBiNmY5NmZhYjkwNmUxMzYyZDMyZSBsZWdhY3ktdHJ1bmsKKzMwOTM5IDI3NDJlYTkzYWIyMzNhNDg4Mjc2MTQ5ZmQzZDYxOTQ3NTZlY2MzOGMgbGVnYWN5LXRydW5rCiszMDk0MCAyMGRmMjRhMTMzNDkwMjllNmEyNTk1ZGYyNmM1OWZhYTBmZWRjMDE1IGxlZ2FjeS10cnVuaworMzA5NDEgOWU0MzBhY2NjZGI4ZjVjMDFlMDYzYjhhOWQyN2VlYTJlZWExZTI5MSBsZWdhY3ktdHJ1bmsKKzMwOTQyIDAwOWYzYWJiZjcyNjJhMjVhZmU4Y2ExZDAwMzIyYWUwMWZhNWNjZTggbGVnYWN5LXRydW5rCiszMDk0MyBjNzRjZWEyNDM3MmU4ZjVmMzIxY2ExM2E2MGU2MzlmZWFmMTkyOTQ3IGxlZ2FjeS10cnVuaworMzA5NDQgN2QzYzZhZDRlM2VkYzljMmNhZjI5YTgyM2Q0NGIzMzgwOGNlNjQxNyBsZWdhY3ktdHJ1bmsKKzMwOTQ1IDBhZWFhM2QxZTBmZjc5NDJjMTdhNzZlZjQwYjc2N2M4ODBlMjRiMzMgbGVnYWN5LXRydW5rCiszMDk0NiAyNGM4ZmJlYzc2MWYyMzFkN2YzOGYyMjg0OWI3ZWQwNDBiMDRjMzk3IGxlZ2FjeS10cnVuaworMzA5NDcgM2MzZTRjOGM0YTlkZmYwMjZiMmNjMTZjM2NiMDdjMjczMDkxN2MzMSBsZWdhY3ktdHJ1bmsKKzMwOTQ4IDkzYmE0MmNmNGU1M2FjZjhiMTEyYmVjY2E5ZDViNWMxOGUyZjM1Y2EgbGVnYWN5LXRydW5rCiszMDk0OSBmYTI0NTM4Zjg2NTBhNTYyYzU1MDE0ZTBhMjJkYmJhMGExZDZkYTk3IGxlZ2FjeS10cnVuaworMzA5NTAgZTI2YTJmN2YyMjRiNTlhNDIyMzg2MzlkNzQ0ZTMxYTdhYjQ4ODMxNiBsZWdhY3ktdHJ1bmsKKzMwOTUxIGJmMGJjODQ4MTUwMjE0M2IxYzdkYjIxMGViY2ZjOTgxODAzM2E4NWQgbGVnYWN5LXRydW5rCiszMDk1MiAzY2Q5ZGRkNTU2MmVhMDk5YmEyYWI2YjU4Y2JjYWNkMmFkMmFiZDg3IGxlZ2FjeS10cnVuaworMzA5NTMgYjQ2NWM5ZDIxOTZhM2NiYTg3OTNiZmUzYWIzYTFiNzhhMDMzMTgwNSBsZWdhY3ktdHJ1bmsKKzMwOTU0IDFhZTBiMTQyMzcwZTQwODRlZGE0Y2IyMjA0OTJlM2Y2YmNjYTAzOWUgbGVnYWN5LXRydW5rCiszMDk1NSBmOGE5MDA4NWFjYzQxZTlhMDYxMmJhYjc4YzhiYWJkNjMyNDRmZmY1IGxlZ2FjeS10cnVuaworMzA5NTYgNDA0NzgyMTQxOWI1N2E4ODU5MGMxOWQ4YjdlMTBiNGI4NjM2YzMzMSBsZWdhY3ktdHJ1bmsKKzMwOTU3IDM1NzM2NTkxZGMxZTdhNTMxZWMzMmQzYzk5OWQ3NGIwMzdhZDZiN2MgbGVnYWN5LXRydW5rCiszMDk1OCA3MTE2Y2I1YmFjNTA4M2Q0OWIyMmZiNWNlMmY1OWNjZGVjZWY2MjFjIGxlZ2FjeS10cnVuaworMzA5NTkgNDMwZWQxYzhlMDcxZGFiMDExNTQwZjNkYTljMjhjOWQyN2Y2MGU4NCBsZWdhY3ktdHJ1bmsKKzMwOTYwIDYwZmYxYmE0MjhjM2ZhMGIwNjRkZTc4MjkyYjkwMDUwZGQwNzZmNDIgbGVnYWN5LXRydW5rCiszMDk2MSA5MWFlMjkyYzNhOTdmMGNkMzhhMDJiYzNiMjlmYmI1YjE5NzgyMmE0IGxlZ2FjeS10cnVuaworMzA5NjIgMThlOGVkODBlOGQxNzQ4ZGZmNWYzZmI3NDBhM2IzMGNkNDVlYmYyYiBsZWdhY3ktdHJ1bmsKKzMwOTYzIGQ5ZDI0Y2UxY2JmNjU4ZDA3MzNhYWJkODMyOTA2NmRjMDc0MzU3NWQgbGVnYWN5LXRydW5rCiszMDk2NCBlNGE1Zjc1MzUwOGJjNTBiMDE1NDQ3YTE0ZGI1NmJkOTI4OGE2MGE2IGxlZ2FjeS10cnVuaworMzA5NjUgNWRiMmNmM2U3N2RiMzNjOTgwZmQwZTE0OWM4MGY2NzY2YjQ3ZDkxYiBsZWdhY3ktdHJ1bmsKKzMwOTY2IDZiMGRiZGUwZmVkNzE1YTI5OGNiNzQyMTFhZWQxZGZmNTljMjJlZjUgbGVnYWN5LXRydW5rCiszMDk2NyA4ZjEzNzI5YTk0YTk2NmExYTE4Y2E0N2Q4MTFkYzQ2NTk4NDRjMzUwIGxlZ2FjeS10cnVuaworMzA5NjggMWY2MzI3MTQwZmMyM2NmYjgwN2Q5ZjkxNmUxMzVlZmI5MTU5NGNmNyBsZWdhY3ktdHJ1bmsKKzMwOTY5IGExNjI2MmJjNjA5OGRkMDgwMTdjMzYxNjhmODRkNDNlMmJlMmRiZDAgbGVnYWN5LXRydW5rCiszMDk3MCA5MjVlZGY4ZTAwMGNhN2RmYWEyMTBmNzg4NmEzMTM0ZmMyOWRhYTE4IGxlZ2FjeS10cnVuaworMzA5NzEgZDhjMmM0MGIzODZiMTlhMGQ2Nzg2ZWViODcxOTExZjQ3MWJhNTU1OSBsZWdhY3ktdHJ1bmsKKzMwOTcyIGIzY2JlN2EwMTQyYTc4ZDk2NzU2OWU2YmQ3MzJjMmFiNjM0ZmU4OTAgbGVnYWN5LXRydW5rCiszMDk3MyAwYTQ3ZDgzMmE2NGI1YjRmMTNhMjBhYzg4NDI5Y2RiYTY1YmYzNjE5IGxlZ2FjeS10cnVuaworMzA5NzQgNDAxNWEyN2ExZDEzZjJjNzRkNjNjMjJjZjFlYmExOTQ2OTZhZWMyYSBsZWdhY3ktdHJ1bmsKKzMwOTc1IGEyMzBkMTIwMGJjMzViM2QyNjY1YWZkM2E5OWNiMTY4ZDA1Yjc0ZTYgbGVnYWN5LXRydW5rCiszMDk3NiA3ZmI1ZThhNTQxYWI4ZmNlNzNhZDY1OWY0ZTY4MjExYzBlODY5NTI2IGxlZ2FjeS10cnVuaworMzA5NzcgMzUwOWFkMDdkMTU2YWNiNmU1NjgyYjNhMWM0NGYxYjFmYTMwOTE2OSBsZWdhY3ktdHJ1bmsKKzMwOTc4IDlmZTMyMTU0ZDI4OTAyZWU2NWY3ZjkwMDlmNDQ1NGMwZmZjMzA4ZTggbGVnYWN5LXRydW5rCiszMDk3OSBiMmNlOWM2MzdhMmJjNjAyYzgyOTA0NzI1OTY2NWUxNWFlYzc0MTJlIGxlZ2FjeS10cnVuaworMzA5ODAgMTE1ZWU0MDUxOGE4NGRjYWRlYmIxYjhlZTA4Y2NhY2Q0YWE3ZmUyNyBsZWdhY3ktdHJ1bmsKKzMwOTgxIDYyYzY2ODkzYzJkYmEyYTQ1MDNkNDY0YTFhOTNhZjhlYjZhNjgwMWIgbGVnYWN5LXRydW5rCiszMDk4MiA0YzAzZWYwNmMzZmY3MDRmYTFkMGI4YzI4YjM2YWQ3NTAyMDUxZjUxIGxlZ2FjeS10cnVuaworMzA5ODMgZWE0ODA0MDZjYzY1NjIxY2YwZWU2MmQ1NDdlNjQzOGIzNWNkNmFmYSBsZWdhY3ktdHJ1bmsKKzMwOTg0IDA1NTRiN2M1ZjZkN2QyNjkyMDM5YzAwZjI1MmYxMWJhNDJiMmYyZGYgbGVnYWN5LXRydW5rCiszMDk4NSA4ODNhZjI4YjlhMGQwNjYwZWZiYjJmOTg3MTFjOWFiOWM5NDM5ODgzIGxlZ2FjeS10cnVuaworMzA5ODYgMjZhNzkyMDA3NjY1MjViOTUyZTZhZmJiNDdkODBkZjQ0OTkyNjExZCBsZWdhY3ktdHJ1bmsKKzMwOTg3IDJlZTk3NDJhYWRkODkyMTQ3ZTU1NDMwMjJjMDJiZTI2ZjEzM2I0Y2MgbGVnYWN5LXRydW5rCiszMDk4OCBlZDBkNGFlNmM2Y2U0MDkxODhjMDVmMWI2YzJiZDg5MTIxOGMyYjM4IGxlZ2FjeS10cnVuaworMzA5ODkgOGRjZTdhNWU1ZmNjZDI3ZWM1MGRiMjAxNWQ0MjQ4MmNmMTM5ODc2MCBsZWdhY3ktdHJ1bmsKKzMwOTkwIDc2NGRmMmZkYzljNjM2NzVlYzUwYTZkMmUwNzJjMWVlODc3MDU4YjAgbGVnYWN5LXRydW5rCiszMDk5MSBmNDkxMWY3YWFkMDI1Mzg1MjQwNmJjZjAyMGYzNDBiNDJjZTQwOTFhIGxlZ2FjeS10cnVuaworMzA5OTIgNmZmYWZjZWY5OGZiMzdmZDVmNDIxNTc5NmU2ZThjYTIyNjIwNzVlZSBsZWdhY3ktdHJ1bmsKKzMwOTkzIDVjNzU0OGJmMzc3YjIyODhjNmYzODU4ZWQwMGI4M2VhMDg0ZDJiMjkgbGVnYWN5LXRydW5rCiszMDk5NCAxN2Q4N2M1YmE2ZTRiNzE1MjAwNzJlM2Q3NTYyNmNhYzgxOGQyYjA0IGxlZ2FjeS10cnVuaworMzA5OTUgMDVmN2UxYzY1ZDdlODM4M2I2MzE3ZDkyNWMxODg1MDExNGZmY2I2NiBsZWdhY3ktdHJ1bmsKKzMwOTk2IGY0ZThhNmQ0YWE3YzM3ZTFiZjY0NGQ1MGI5OWJiYmVkYjhjMmNhNTMgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwOTk3IGY4ZDI4ZTgyYzRjYzk5YTNiZTEwMmE1NGFlOWU2ODhkMTY2ODljYWIgYnNkZGItYnNkZGIzLXNjaGl6by1icmFuY2gKKzMwOTk4IGRlNDA2MTU4NGM4MzkxNTcyMjVmZDhjOTQxM2U2N2VlZjE0MzJkOTcgbGVnYWN5LXRydW5rCiszMDk5OSBmY2NkOWU5NDMyMTFhZDYzYjNlNjY2NzEzZTFiZTBiNjQ2NWI5YWI1IGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMCBiNzljMWFmZmYxMTI4MzUxYTg4MjMwMjg3OGMzZDMzNzQ1YmNiZjFkIGJzZGRiLWJzZGRiMy1zY2hpem8tYnJhbmNoCiszMTAwMSAxNTRiYWMwYjI2YTU0ZWMxOTA5MjZjN2M4YmI1NTRiNmE2ZjNiNzNiIGxlZ2FjeS10cnVuaworMzEwMDIgMzEwMTRmYmUyMGRiYjA4ODMwMTQxZTZhNzRkNzQ0NTY3MDJkOTllNCBic2RkYi1ic2RkYjMtc2NoaXpvLWJyYW5jaAorMzEwMDMgMzhjN2MyZDRjZDVhY2Y0MzVlM2E1NjQ0MDMxOWJkODJjMjU5NDZkNyBsZWdhY3ktdHJ1bmsKKzMxMDA0IDkyNGFkZTgwMTA0YjE3Mzk2NjZhZDUxNzE0M2MwOWM5MDQ2MzVkMTcgbGVnYWN5LXRydW5rCiszMTAwNSBiYTkzMTBmZWY0OWRkODI5MzhkZWY4NzhhZDViMTBjYzdhMjcxNTQ4IGxlZ2FjeS10cnVuaworMzEwMDYgNmU4OWU4MGU2YTI2N2M1MTY0NjdkYjJhZjViODAxYWQwZTJjYjU3MSBsZWdhY3ktdHJ1bmsKKzMxMDA3IDcxMmIwMWQ1MmU4Y2QyYjNmOTViYThlZTk0NGEzYjI0ZmFjZDg5NDMgbGVnYWN5LXRydW5rCiszMTAwOCAxNGIxNzU4ZGZkZGVkYWNkYTA1Yjg1NmYyODU0OTE0ZjAyODBlMDZiIGxlZ2FjeS10cnVuaworMzEwMDkgMjlmZDlmZGFmNTJhOTA1YTc1NzQ3OWY4NzllMTE3NWJiOThlMTQ4NiBsZWdhY3ktdHJ1bmsKKzMxMDEwIGVlMGU1MTU0MDdmZDk3OWRlMzE4YjFmNWE5N2YyNGJjMDIyNjU1MTggbGVnYWN5LXRydW5rCiszMTAxMSA3YzhkZmQzZjRhZTkwNmUzYWExMDc3ZTI3MGMwZDMwMWM3MmI0ZTliIGxlZ2FjeS10cnVuaworMzEwMTIgZjkyODRiNTdiNDIyOWFlZDg2YzkxZjQ2ZmNiY2JiOTVmOGY5NmVhMSBsZWdhY3ktdHJ1bmsKKzMxMDEzIDViYTc5MzRhN2JhMDIxODRjNTJlM2Q1MDU3YTJhZTUzMTk3Yjg4NGYgbGVnYWN5LXRydW5rCiszMTAxNCAzNmY3MWZlZjViMTA4ZmM4MDMyMzBiZmEzMTBmZWZkYmRkMTU4OWZlIHJlbGVhc2UyMi1tYWludAorMzEwMTUgZTk1Nzg3NDdmNDNkZmU2NmI3MDY1NDQ5YmZlNmQyZThhN2YxNmNmOSBsZWdhY3ktdHJ1bmsKKzMxMDE2IDA5MDRkODc4YjhmMTg3NzdkYWY3NjU3OTE3ZDY0YjZjNGFmNjJmNTEgbGVnYWN5LXRydW5rCiszMTAxNyBlOWNkMjI4MTA0YTEzMGJmZDYxMTg0ZTIzYTIxZmZiMjkzODMwNzU2IGxlZ2FjeS10cnVuaworMzEwMTggM2JjNzFkMjM0YTI5ZTk4OTkyOThlOWI2YjNiYjUyMmM0NWNiMGVjZiBsZWdhY3ktdHJ1bmsKKzMxMDE5IGI4M2ZhOGZhMTIxZTg0ZDgzM2U2MGE1OWZmZmJkYmVlOGI2ZTVkZWMgbGVnYWN5LXRydW5rCiszMTAyMCA0MjQ3ZTY0MGUyYTZlYjJhNThjNzlkMDBiYWJiNTg4NTkxZGUxYTZlIGxlZ2FjeS10cnVuaworMzEwMjEgYTg5YzA3N2U2NDhhMThmY2QyZTQ2YjQyZTg0NzZhZmYwM2ViMTkwMSBsZWdhY3ktdHJ1bmsKKzMxMDIyIDdiN2QzYjkwNjM2MzBlNGFmZmQxNGY0MDc1NDkzMTAxOGVmNjBkOGUgbGVnYWN5LXRydW5rCiszMTAyMyAxZjE2YWJmYWY2M2U5ZjBlZTQ4OGE4OWVjZTY5M2I3ZmJlMGI5MDhiIGxlZ2FjeS10cnVuaworMzEwMjQgYWRiYzNmZThjODFjYzNhM2EwYTk1MWJlOGE0OWZlM2M5ODJkMTlkMSBsZWdhY3ktdHJ1bmsKKzMxMDI1IDVlNDM1NWQ4MGRkMTU5NzM0MGZhNzZiMTcwMzFmOGVkMGQ1MzA5YTkgbGVnYWN5LXRydW5rCiszMTAyNiBlOTA1YjIyZTM5MmJhNThmZWY5MzVlYjY3YmIzZTYxYWIwOTg5YWQ1IGxlZ2FjeS10cnVuaworMzEwMjcgZDg3NTBlMGQzZmI4ODg4MzZhYjc4MzhhODA2NWVkN2QyYTBjNjI5YSBsZWdhY3ktdHJ1bmsKKzMxMDI4IDRjMzVhNjZmY2U0ZGYwZWQ5NWViOTM5MDQ0N2FmYmRiMjUzYTllMTMgbGVnYWN5LXRydW5rCiszMTAyOSBhZTMxZmNiN2I1OGU0Y2NkODgxMTIxZjA5ZjI5YjAzMDRmNGZkMjcxIGxlZ2FjeS10cnVuaworMzEwMzAgMDkwYTUwY2IyNjkwMGUwODllNDUyN2YzNDFhYzZiYTNhYmQzZGYzMSBsZWdhY3ktdHJ1bmsKKzMxMDMxIGU0MmUzMDI1YmFlM2I0OWE1ODc3MjU5ZDlmNzRhODQxMTZmY2E0ZGUgbGVnYWN5LXRydW5rCiszMTAzMiA2MjA1MzkxNjVlNTMwOGFjOWE4NDgwYTJlZTdkZTEwODgzNjRhZjMzIGxlZ2FjeS10cnVuaworMzEwMzMgMGRkOGQ4YTc2MDE1ZWYwZGJiOTZiZWZkOTJlZDdmZmJkZjU4NjI2MCBsZWdhY3ktdHJ1bmsKKzMxMDM0IGZlNDBmY2Y0OWVlNTY2ZGZiNWZjMjkxODkxNzBkMTU2NmMwMTZlMjkgbGVnYWN5LXRydW5rCiszMTAzNSBiNDgwYTRmNzA3ZjYxNzhiMjA2MjY4MDFmZWQwNTZhMzRlM2YxNzM0IGxlZ2FjeS10cnVuaworMzEwMzYgZDlkNTdmNWY5OGNkYTcyMmI3ODRhZmY5ZGU4OGMwZWZjYWYzMjg1NyBsZWdhY3ktdHJ1bmsKKzMxMDM3IDE0Mjc2ZTQzZWNlNjA0NzlkYWM2NjcyMTQwMmU0MWQ5YzlmODU1MDcgbGVnYWN5LXRydW5rCiszMTAzOCA0NGY0NjU2ODM5MjdiM2NmYzZkYzNjM2E2ZjAzNGE0MGQ5OTYwZTViIGxlZ2FjeS10cnVuaworMzEwMzkgMjBjNTgxYzIzYmNlMzMzNjg2NTI0MzQ3NDkwZDQ5MmRhNTRjZjkxZCBsZWdhY3ktdHJ1bmsKKzMxMDQwIDBkZTE0MjUyZDI2Y2U2ZGQzYzE0MTFmYTdhY2EyMDFlNWM4MTQ2OTkgbGVnYWN5LXRydW5rCiszMTA0MSBhMmQ5NmU3ZDkxYTFhOWY5ZWIwOTE0NzM3NzU4ZjQzNWU0MzkxZmY5IGxlZ2FjeS10cnVuaworMzEwNDIgYjFkMWZlN2ZiNTE0YjE3M2E4MDhjYTVkYjk2OWY1YjQwZWQyNjUwOCBsZWdhY3ktdHJ1bmsKKzMxMDQzIGQ2MmJkMjQwNzI5MTlhYjA0NTNlNDdmZmNhYzIyY2U0M2QyOTMzNDYgbGVnYWN5LXRydW5rCiszMTA0NCAwZTZkY2UxZWMyMzFjZDQ3YzQzMGQyZjFmNWIyOWM0YWYyZTdlZDI2IGxlZ2FjeS10cnVuaworMzEwNDUgNWYzMjk0MmEyMjVhZGE5ZWE1Yjk1YWRmODBiZmRiNzViMDA5OWE4YyBsZWdhY3ktdHJ1bmsKKzMxMDQ2IDUxYWJiNWU4NjIyNjI1NTVmY2U1MjhkM2E0MjllYTc0NDMwN2I3YzYgbGVnYWN5LXRydW5rCiszMTA0NyBiMmI1NzQxMThmZmRhM2ZkZjc0ZDZhMmZiZTJhOWZjODc2OTk4YWFhIGxlZ2FjeS10cnVuaworMzEwNDggODFhMmQxODhlYTFmOWY2YTMzZmE4YjQ5NWVlMDc5Y2NlNTBiMGZlZiBsZWdhY3ktdHJ1bmsKKzMxMDQ5IDY3ODZlODZiOGZmMGFkMGJhMjU3MzgyYmQzZmFhYTVjOGJmMmNlNGMgbGVnYWN5LXRydW5rCiszMTA1MCAxN2JmZDVkYmMwZjE2ZGM4NWMxNmIyMDg4YWNjNDI4MDdkNjkzMjM1IGxlZ2FjeS10cnVuaworMzEwNTEgMGY5ZWI4NDEzYjYxYjRlNjI1MWU0OWYwNzc2MjU5NDdiY2IyMmEyYSBsZWdhY3ktdHJ1bmsKKzMxMDUyIGIxNzNhMmEyMzA4MjVhNDFmYWIxZGFmOGQwYzU0OGUzYjRmMmI5NzcgbGVnYWN5LXRydW5rCiszMTA1MyBkNWY0N2UxNDY1ZDY2ZGU1MDMyODI5YWJiZTI0ZTM1MGU3NzJkMDE4IGxlZ2FjeS10cnVuaworMzEwNTQgMGJiMTU0ZmE4MDQ3YzhmMGZjODAzYmVjYWY2YTM5NWQxNDFiZTZmZiBsZWdhY3ktdHJ1bmsKKzMxMDU1IGRkZWU4YzE1ODMwMWM2ODNjZmI5OGU1N2Y5NmZkMjY5ZWZjOTA1NTIgbGVnYWN5LXRydW5rCiszMTA1NiAyZTE4ZGJjZDllMDRjYWJkNjQ3ZWRjMzJiOWEwY2E3ODhjM2MyYjRlIGxlZ2FjeS10cnVuaworMzEwNTcgNjg5MjU3Y2E0ZDA5MmI2ZDc5ZDg1MjAzNDliNzBkNWRmMTIxOWQ0YSBsZWdhY3ktdHJ1bmsKKzMxMDU4IDY5NmM0MmRhNzg3NTMzMTgyMTEzMGUwODllYjQ1MTQyYmM3ZjYwNzMgbGVnYWN5LXRydW5rCiszMTA1OSA1NzY1ZDUyNGRlNzFlMmFjZGI5ZWRiYjBhM2U1MDJmZWQ0NTU2ZGJiIGxlZ2FjeS10cnVuaworMzEwNjAgZDExMjIzZGFhZjYxZDNjNTEzYmVjYWEwYWYxOWY5MzI5ZDczYTZiZSBsZWdhY3ktdHJ1bmsKKzMxMDYxIDAyZjEzOGM2MzlhMDgzYTEzNzRlMDc0NDY2ZmQ3ZDcyMDg4Y2Y2NmUgbGVnYWN5LXRydW5rCiszMTA2MiA4NDJkNmEyNDQ5N2FlODNhNTM2OTI4MWI1ZWJhZDNhYjBiYWM3YWQyIGxlZ2FjeS10cnVuaworMzEwNjMgOTkwOTlkZWI2MDI2NDBiYjk1NmY0MzEyNjkyZTM5MzZkYzViYWIzNyBsZWdhY3ktdHJ1bmsKKzMxMDY0IDcyYjM4ZDVmZTYxZjlhZmVlZDJhMmM2ZmQ0ZDE2MGU1YTg1NGNhYTggbGVnYWN5LXRydW5rCiszMTA2NSBjYmM4NjAyOGQ5ZjNiYWI3MGFkODI0OTc1YjMxYWNjMDA4OWNmYWQ5IGxlZ2FjeS10cnVuaworMzEwNjYgZmRjNTJiMTE5NzA5MGUxMzI5MGY5ODQzOGU1NTgzNTYyYTY0ODIyMSBsZWdhY3ktdHJ1bmsKKzMxMDY3IDg3OTQzZmFmNGZkMjE2YTYxMDJlMDdkNDk5NTQxYzhhYmM1MTE4ZTYgbGVnYWN5LXRydW5rCiszMTA2OCA5N2IyODE3MDYzNGNjZjE5MmM5YWVmNTZiNTgwODliOTg2NDYxMjc0IGxlZ2FjeS10cnVuaworMzEwNjkgMmFkZDAwOGIxYjdkMDc1ZDMzMDI3NzRiYTk5ZjU1ZmUyZmIyMjY5ZCBsZWdhY3ktdHJ1bmsKKzMxMDcwIDg4Y2VlZWVkNzBiZDE1MWQ1ZWMwOTAxMTEzOWJiZWM5YWMzODRjOWEgbGVnYWN5LXRydW5rCiszMTA3MSAwYzg4MTAzNzNhMWE3NzI4NjQ5MGM5NjFiYjU0NWNmNDAxNDFkNWRkIGxlZ2FjeS10cnVuaworMzEwNzIgZWQyZDIzZDJmZDQxMmI5ZjdlNzY1ZjI2NmExNzA5ZTA1ZDBjOTJlZSBsZWdhY3ktdHJ1bmsKKzMxMDczIGM0N2RlODhhZTg1ZDdlNTQ3YTJmZDkxNmM1MzlkYjVmZjIzOTEzYzIgbGVnYWN5LXRydW5rCiszMTA3NCBmOTgyMmIxOGNmOTE5YzU2Y2JjOWZlYTY1Y2I1ODMzOTkxY2Q5YjM5IGxlZ2FjeS10cnVuaworMzEwNzUgYmQ2M2YyOGNlN2E4YmZkYTEwMDA1YzMwNzQ3ODFiYmI5ZmI0NTE2YSBsZWdhY3ktdHJ1bmsKKzMxMDc2IGNlNzQ4YWZiZDZlZmQyZDRhNzM0MTRiNjIxOTI3N2ZkNWIzZGRlZDMgbGVnYWN5LXRydW5rCiszMTA3NyBjNDI1ZjY2ZGI0NTgyMjUwM2Q5ZWM5ZDQ0ZTI0NTc3Nzk2YjFiZTRjIHJlbGVhc2UyMi1tYWludAorMzEwNzggN2ZjZGVlYjE2ZWMwZDY0ZWJjMmZjODljZGFiNjA3N2Q0ZDYxMDJlZSBsZWdhY3ktdHJ1bmsKKzMxMDc5IDMxODA3ODgwZjU5OTY1OTE0Y2MwMWIxZmNmNTUyZmVhODFjYWEwMGYgbGVnYWN5LXRydW5rCiszMTA4MCBkM2FmMWU3OTMyNDM4OTJiZGJjMmEyMGE1YjNhMWY0NTg3NTFiNmZhIGxlZ2FjeS10cnVuaworMzEwODEgNTBjNzM0MjUwZTA1MjliNjZiNTVkYzI5N2UwYzRhZmViNWYyODU4NSBsZWdhY3ktdHJ1bmsKKzMxMDgyIDY1OTdjMDliMWU2ZGM5ZDAwZDFmMzUyOGUyNzY5OGMzMTY4MDA5NWEgbGVnYWN5LXRydW5rCiszMTA4MyAzYWUwYTJmODdhYTA2Yzc0ZDY5YWI3MGY3OWYwODQyYWVkNjMzMzFlIGxlZ2FjeS10cnVuaworMzEwODQgYzI2N2YyODcyNGRkY2NkZWJjNTMxODhlZGE1ZGE5ZTBjYTcyMDViOSBsZWdhY3ktdHJ1bmsKKzMxMDg1IDI0ZTM0YWJjNjI5NTAwOTczMDY1MGE1MGUxNjdjNTY5MjA2NTBhNDAgbGVnYWN5LXRydW5rCiszMTA4NiA1ZWVmZWM5NGE3ODQ4NTQyYjlhMDZlOGM1ZjIxYzFlOGRkYjhiNzAxIGxlZ2FjeS10cnVuaworMzEwODcgOGQ4MzU3OGRiYTgxNDFkNDZmZmZlMTAyNmFhZDM1ZTE0Njg1YTg0NCBsZWdhY3ktdHJ1bmsKKzMxMDg4IGZhYWJkOTg2N2ZiOGRjNDk5NDBkMzhjMjI5NmRhN2E2YzBhYmJiZWIgbGVnYWN5LXRydW5rCiszMTA4OSA0YWE0ZTZiM2VjYTcyM2Y0MzQ5ZTc0NmY3YjY2MzBkNTYxNzFhM2UyIGxlZ2FjeS10cnVuaworMzEwOTAgM2M4OTA0OWZlNjI4ZDM0ZGExZWFhMWU0OWFhNjUwODEyZTVkYzViMiBsZWdhY3ktdHJ1bmsKKzMxMDkxIGQ0MmQ4M2U1Njg2YzNiOTZiZWRlZTRkM2JjODVkYzg4MTQ5ZDU4N2UgbGVnYWN5LXRydW5rCiszMTA5MiBhYjE0M2FlZDQ5YjkwNmZiODMzNjAwMDNkMmU2ZDc2ZTlhNDg4ZjgyIGxlZ2FjeS10cnVuaworMzEwOTMgMjU2Nzg5YWFhY2Q2NWMwMzIzMmFjMmYxZTE0NDAzOGRhYzI5YzdmNSBsZWdhY3ktdHJ1bmsKKzMxMDk0IDYyMGJiMzU1MWJiNjc0N2E2NjBiNGRlZmFkZGUzZjIwNDU1MjcxNGUgbGVnYWN5LXRydW5rCiszMTA5NSA4NzYzYThmNmMwZDViZWYyZTgwMDI1YzAwNDkxMmFiN2M1NmI0ODIwIGxlZ2FjeS10cnVuaworMzEwOTYgYzA3NWJhMmFiZjdhYmE2ZjZmZGQzMzgwZjdjZjUyM2U1MjYxZDRkZiBsZWdhY3ktdHJ1bmsKKzMxMDk3IGYzM2U2NDQ4NDYyMDgxYzc0Y2JkZTFiYjE4NjliY2NiYjhiYmM0NDUgbGVnYWN5LXRydW5rCiszMTA5OCA3NmZhOGM3OWE4OWQwYTY5MGJjMzVkZTllOWRiNzkyOTJkYjdlNDA4IGxlZ2FjeS10cnVuaworMzEwOTkgYmE1N2MzZGFmNmU5YTM5ZDZlYjAyZDI2MjA1NjlmMzNiMzI5ZWYwMyBsZWdhY3ktdHJ1bmsKKzMxMTAwIGJkOGU2MjIyZTE2YTMyYTNhZjQzMjZiMDEwOTMwMzdhMmNjZDZhZWIgbGVnYWN5LXRydW5rCiszMTEwMSBmMjM1ZjEzNWYzZjhhMjc4NjI5M2E3NjkzOTAxYmEwNDljZjdlMDc3IGxlZ2FjeS10cnVuaworMzExMDIgNjc0ZjNlZWNmZmM1MDY5ZTcxY2M3YWFhYjJmODM2ZGMyYjE1ODY4YiBsZWdhY3ktdHJ1bmsKKzMxMTAzIDAxOTA4NzJlYmNmM2Q3NzQ4NDAxNjNmYzY2NDllMDY0MGQ1M2I4NjcgbGVnYWN5LXRydW5rCiszMTEwNCAzYjlmYjU3ZmFjMzRhMjVkNDk4YTRkNTViMTNjYzRjMjMzYTQ0ZDNhIGxlZ2FjeS10cnVuaworMzExMDUgMTYwODUwN2JjYzNmZjg0N2FmNTYxYjk2YmI2MmYyMTNmNDE5NDk5NSBsZWdhY3ktdHJ1bmsKKzMxMTA2IDliYzFjODRiMjNlNjYyMzY5MzI4MzI2Njk5Y2Q2MGY3OGIxZTg5N2EgbGVnYWN5LXRydW5rCiszMTEwNyAyZjIyN2ZmMTFmNWUzYWVjMTY0YTk1OWIzNDRhZDRjNWM3YmUyODIzIGxlZ2FjeS10cnVuaworMzExMDggNmZmYjVjOGU2NTM4ZWU4NWI4YTJlNDIyNDBhM2I3OWJkYzI1OWZlZSBsZWdhY3ktdHJ1bmsKKzMxMTA5IGY0N2FmMmNkYjk4M2I0MWY1ZWFjYmJlYmYzMTM3MjY2ODUzOTY2NTcgbGVnYWN5LXRydW5rCiszMTExMCAyZDdjMGNiYzgzY2YzZjQ5YjlhMDBhYTExNTNiNDMzY2EzNzgyMDkxIGxlZ2FjeS10cnVuaworMzExMTEgZDFlZGFhYTkzOGZiZTc0ODUyZmY1NTUyYWY0NTNjOWNhNGRlNmUxNyBsZWdhY3ktdHJ1bmsKKzMxMTEyIGEyZGI0MzdkMzE0YjQ4OTM3YmEwYmNlNzg5ZjA1NTU1YzI3MTY0MjAgbGVnYWN5LXRydW5rCiszMTExMyA2NTYzNWM3MjEzNWUxYWNjOWM2NzMzNWJkZmU1Yzc3NmI3ZDMxNDBmIGxlZ2FjeS10cnVuaworMzExMTQgYTA1ODE0MTg0ZThjNmU1MDYxY2YwYmYzMmUwMjE0ZDg1N2FkOWMxMiBsZWdhY3ktdHJ1bmsKKzMxMTE1IDk4MTk3ZWJlNWNjYjdkZWY3OGU3YjQ0Nzc5YmZmOTE2MjY0YzMxMDIgbGVnYWN5LXRydW5rCiszMTExNiA3MjgzMTQwZDQzMTk4NmIyNDNkYWE3MDJhOGYzYjk4YThmY2YzMzI2IGxlZ2FjeS10cnVuaworMzExMTcgM2ViMTBhMTRiYTAwZDk2YjM0MDQ2NGMyZWRjZmIzYjg5ZDE1NWYwOSBsZWdhY3ktdHJ1bmsKKzMxMTE4IGUzZmE4Mzc3ZjMwYzU4MGE1MGI0YjlhZWVkYzY2ZmQwNWFjYjkzY2MgbGVnYWN5LXRydW5rCiszMTExOSA5MzIxMDU2NGJiNDYwNzlmMGQ2MmUxNTQ2MzVmNGU0YmU3YzBkYTVlIGxlZ2FjeS10cnVuaworMzExMjAgZDZiNjVlMzg1NWEyNTAwZDhkMTU5ZTNiNGQ0MzZlZmJmODIxMmQ5NSBsZWdhY3ktdHJ1bmsKKzMxMTIxIDc4ZTQzYjM2ZTc4NDRlYjhkNDU5ZThiOTQyYzZjMzljOWIwNDRlNTQgbGVnYWN5LXRydW5rCiszMTEyMiA1N2JkZjRiYWM0MzVhN2U2NmVjZDVmY2MxN2Y5ZTY2OTA3ZjRiOTI3IGxlZ2FjeS10cnVuaworMzExMjMgZTVkMTgxMTIwMzAzNDkxMTVlYjI2ZGQ3MzEwYjQ0M2M1MDY2YzQ2NiBsZWdhY3ktdHJ1bmsKKzMxMTI0IDkxNWQzMjdhMjE0YTlhZmE5YjZlODQwMWY5ZTE2ZWVjZWNkNmU0ZTMgbGVnYWN5LXRydW5rCiszMTEyNSA3MjIyOGEyNWRhYWEyNTkyMzQ5MDkxMWU2MDg5NjNhNzI2OTY5ZTljIGxlZ2FjeS10cnVuaworMzExMjYgOGU2MGVjODhlY2I4NGQ5MjUzMGQ4MzQ2NDJhMzg5Njk1ZmVlOGI2ZSBsZWdhY3ktdHJ1bmsKKzMxMTI3IGEzNWRmY2E5MzMxOGQxZjllODNjMTc4NmM1YzU5M2ZkOTdhMmZhMmMgbGVnYWN5LXRydW5rCiszMTEyOCBkMTU4ZDEwZWY0YWViMDI3Yjc0NGY1NmFhZTVkM2RhYWFlYTQ5YTNiIGxlZ2FjeS10cnVuaworMzExMjkgMzEzZTk0NGEyYzg4NjIzNmE2ZTE5N2FmYjFjNWE3NWM2M2Y5NDcwOSBsZWdhY3ktdHJ1bmsKKzMxMTMwIDlhM2I4NDQzZDVhNjE2MTVmZmQ5ZGUzZjVmMzg3MDUzOTMxODk0NzkgbGVnYWN5LXRydW5rCiszMTEzMSBjNDIxNGMyMGIyMWRjMDIwYTgwN2Y2MGIxMjNkNDI0OTk0MDhlMWYzIGxlZ2FjeS10cnVuaworMzExMzIgODJhOGNhM2M5MjhjMGFkZTMzZDk3YjIxMWIwMGQzMGViODU5NmUyYyByZWxlYXNlMjItbWFpbnQKKzMxMTMzIDFmYTQ0NDE0OTg1ODlkNTAxODU3M2YyYTUwMjdkMmVjNDRjNjA3NDggcmVsZWFzZTIyLW1haW50CiszMTEzNCA0MmI2MTdmZDljNjkyM2Q3NTcyMjgyYjljMTdkYjE2OGVmZGMxZWNjIHJlbGVhc2UyMi1tYWludAorMzExMzUgMjI1NTFlMWQyYzZlNzBlZDRkNDhiZDNiZTg1OTFlYmRlNjQyYTAyOCByZWxlYXNlMjItbWFpbnQKKzMxMTM2IGNjZmFjYWVjMDk2ODkxOWViYmZlOGJkOTk5M2IwNjYwZTFiZGM3NzYgcmVsZWFzZTIyLW1haW50CiszMTEzNyBiZWIyMDA4YTNjMzI5NWQ3ZTViZjBhMmFhNDg5NWMyYTU1NWY4N2VjIHJlbGVhc2UyMi1tYWludAorMzExMzggYzljY2M5ZDBiYTk5YTg4ZGJlOWVhNDVkOTExYWM0ZmM1OTQ2NTg0YiByZWxlYXNlMjItbWFpbnQKKzMxMTM5IDFkOGM4NjIzNGQ5YzJiZGYwNjQxMDI4ODA4ZmI1OTQzZjBiNDk4NmQgcmVsZWFzZTIyLW1haW50CiszMTE0MCAwNjAyMDc4YmRjZTEyM2IwMmIwMjlmZTQ4YzZjYWU0M2U4NGUyOTRhIHJlbGVhc2UyMi1tYWludAorMzExNDEgMDcyOWY4MzkzYjE2MDNmN2U3ZTI0NWQ0MzhmZTgxYmJmZjFjM2Q5MiByZWxlYXNlMjItbWFpbnQKKzMxMTQyIDY0N2MyOTE0N2Q1ZDI3ZWU4NGJiNDNhMWY2NzQ4ZjhiNjNlYjEwZTggcmVsZWFzZTIyLW1haW50CiszMTE0MyA4MzcwMWZhYjMyZmUxMTc1ODk1OGY1ZDc3YTdhMjFhMjU5NTVlOWUyIHJlbGVhc2UyMi1tYWludAorMzExNDQgNDVhZDc3YTQzZDg3ZjY5YmFmNDAyYjAwNWE5MjgzY2Y4ZTA4MGM1NiBsZWdhY3ktdHJ1bmsKKzMxMTQ1IDJhODFjMWE4ODNjYmI1YzNlY2EyMDExZjQ3YjEzZDNmMjBkYjA2ZjQgbGVnYWN5LXRydW5rCiszMTE0NiA5Y2RjMjMzYjcyMjRiMDM3YmRjZDc2NzRiNjA4MGI5YjE5NGNmOGNjIGxlZ2FjeS10cnVuaworMzExNDcgNzRkOTYwNGU5MzUzMTZkN2ExNjdkM2Y1NzkzMjIxZWVlMTRhNzU5NCBsZWdhY3ktdHJ1bmsKKzMxMTQ4IDU1OGQwZjNiNjI1NDhiZjQzNjBmODM1Y2NiMjhiMDg1M2M0NDdlMTQgbGVnYWN5LXRydW5rCiszMTE0OSBiYmQ4YWJhYTBmMzM1MTI4MjNmNmNjYjViMmRmZWU5MzllYzEzNzNiIGxlZ2FjeS10cnVuaworMzExNTAgMTlkMGM5OTk1NTVlOTFjYmY3NzExM2E2NzhlMzg2MmJmODk3NjYxMyBsZWdhY3ktdHJ1bmsKKzMxMTUxIDY1ZmRiZDc4MWNhOTlhZjE5OWQ4ZTVlOTEyNTk5ODU4MDg1MTJiYmYgbGVnYWN5LXRydW5rCiszMTE1MiBhMjQ1MjgzMThiZTk2Y2JhM2ZiMjAyMTU0NDRmZWYxMmYxOWExZmRiIGxlZ2FjeS10cnVuaworMzExNTMgODIwMTAzOGJiZjMwYmQ1YmQxZTQxMmVjNGI3MGY4ZmE5NThkYjVlNSBsZWdhY3ktdHJ1bmsKKzMxMTU0IGVhYWVmNTE2YTY4NTNkZTcyNDg0NzJjNmZlNmI0MWFjZmIwOTFmZDYgbGVnYWN5LXRydW5rCiszMTE1NSA0NTkwNjIyM2VmYjIzNmExMWQwYzJmMzY0MjdmMDEyNzhiZmE0ZmY1IGxlZ2FjeS10cnVuaworMzExNTYgNGM5ZDAyYzU2NTdiMzVhYmU4NzA5ZGEwNTBkMWNhYmUzODI0MDExYyBsZWdhY3ktdHJ1bmsKKzMxMTU3IGFmYzlhMDk1YTJkNTZmOGY3ODllODRiZjAzMzRhNGUyY2U3MDMzNGMgbGVnYWN5LXRydW5rCiszMTE1OCBmN2IzODI2ZDAxM2ExZGVkYjIxM2IzMDJkZDU5NTg3ZWJlOWU4MzA3IGxlZ2FjeS10cnVuaworMzExNTkgNjU2N2Y0ODI5ZTdlYzRmZjFhNWJmZDNmMGE2YjYzZTZkN2JkZjAwZSBsZWdhY3ktdHJ1bmsKKzMxMTYwIDdiZjdkYWM0ZGM0OTYxNGI5MjAzNmRlMjczMjJhMTY4YmQxNGQwYzUgbGVnYWN5LXRydW5rCiszMTE2MSA2NDBlNTJkZWUxYTAzZDJhMjI1ODcxYjA2NTE0NmVhNDg2Mjk3M2M4IGxlZ2FjeS10cnVuaworMzExNjIgNDgwMzMwMTdjNzhmMjAxOGNhZDIyNTRiYmZmNDMyOGM2NjdhYzRhZSBsZWdhY3ktdHJ1bmsKKzMxMTYzIGM0MGNiOWJmYzhlN2MzZGYxNjU4OWJkZTJiZWJmYzllN2I3MTlmMGIgbGVnYWN5LXRydW5rCiszMTE2NCBlNGUyNmZlMjg2YzBiODljMmJhNjFiOTEyZWMyZTRlZWFjNGQwYWVmIGxlZ2FjeS10cnVuaworMzExNjUgOTc0ZjE5NmFiYjg3YmVjY2ViODZlNGQ0YjM5YWFlYjAzNzczOWJlOCBsZWdhY3ktdHJ1bmsKKzMxMTY2IDYwMTU0OWM2NDAzOWM4NGJiZTgxZTQ2MDQ5N2JiOTdlMWYzNThhNmIgbGVnYWN5LXRydW5rCiszMTE2NyAyY2Q0ZTBkZmYzYTQzMjc2MGFlOTQyMWFmODIwZWUxOWZhYmUyOWM3IGxlZ2FjeS10cnVuaworMzExNjggNjIwNWRhMzgzZTRjYjQxYjY4NTA2OTk4YjNhMjMwMThkZTM0Y2RjZiBsZWdhY3ktdHJ1bmsKKzMxMTY5IDAwNDI2YzdmMTQ3ZDIwMWE0MzI1NmRhZWY4N2QzMzQ3MzQwNDkxZjggbGVnYWN5LXRydW5rCiszMTE3MCBkZDczYTEyMThmNjlhODk2NGEwZDJiYTU0Y2Y1NWE4M2NiYzVmODgyIGxlZ2FjeS10cnVuaworMzExNzEgNGQwNGY0NWZmOGExZTZjNThlNzA1ZWM5YjVkZGMxNWVjMzFlZmFiZSBsZWdhY3ktdHJ1bmsKKzMxMTcyIDkzNGEyYjQ5N2QxZGQyYWRlNTMzMDhlOTQ4MjI2MTA5NTY5OGQ1MzAgbGVnYWN5LXRydW5rCiszMTE3MyA4YTE0N2E0MWMzZjdmYWUwYmNmNTMzMmUyNmU3Y2Y2ZmI4YzBkNjUwIGxlZ2FjeS10cnVuaworMzExNzQgYjY2YWNiZTI5NTc1YzQ1ZDVhZWZhNjlhYjM3MDU5ZDk5YmFmYTQ3NyBsZWdhY3ktdHJ1bmsKKzMxMTc1IGU5OTYxNWRlNzY0NzYzYzkwZTIzZTQwYjFiMDY4OTA4NDE2ODgyODcgbGVnYWN5LXRydW5rCiszMTE3NiA1MmNlNTdiNzhjNzFhODYwMTJmODJlMWZhZWU4MjY5YzFhYmU0Mzc0IGxlZ2FjeS10cnVuaworMzExNzcgZGI3ODRkMjlmNDgxZTA1YmI3ZTIzYmM1NWU4Yjk2NmQ0MmE1ZjIyNiBsZWdhY3ktdHJ1bmsKKzMxMTc4IGY2MTk4NjE0MDUwMzBhYWE4MmVlNTRmYTRmMGJlNzgxZTM2Yjk4OGYgbGVnYWN5LXRydW5rCiszMTE3OSBmMjYwMzQzZWNjZjEzMjJjYjkzMDRhZDQ0YmQyMjIwYzFjZGIxODdiIGxlZ2FjeS10cnVuaworMzExODAgNTliNGViYzI5ZDUzMTdhNmI3ZmMxYjYwZDM5YzNjYTM3MWIwZGI3YSBsZWdhY3ktdHJ1bmsKKzMxMTgxIGVkOTFiZjYwMWIyZGU5OGFmMDg0ZGM5NzcyYzZlZjU4OTk0ZDc3MjQgbGVnYWN5LXRydW5rCiszMTE4MiAxMDZhNDRhNGI5NzVkYjRmMWIwODZhZjQ1Y2Q0N2NlNTJiNmFhNWQ0IGxlZ2FjeS10cnVuaworMzExODMgYTlkZDIxN2E5YmIxMDFlMDhiMTIzMjRkODMyMzY2NTk2NGJkMDI4NCBsZWdhY3ktdHJ1bmsKKzMxMTg0IGUxMWU5NzZmZWU3ODEyYWI0MTE4YzViZmJhZDMyZTM0ODA3ZDU5MjAgbGVnYWN5LXRydW5rCiszMTE4NSBiYTNlYWZmNDliN2FlMDg5YTg4ZmMwMTI4NmYxZGE0MWU2NTE2ZmYwIGxlZ2FjeS10cnVuaworMzExODYgNjczMTUwMjZkNmQzNTk5YjY2Y2E1OTE0NzMxZWJhYzg1MjM2NGFmMyBsZWdhY3ktdHJ1bmsKKzMxMTg3IGI1OTVjNDczNWZjY2M2ZmQwMDNiM2E4NzhlODhhNDE1MDU5NjlkNDEgbGVnYWN5LXRydW5rCiszMTE4OCAwYmJiY2FjYzA1ZmI5ZTdlOGVlODQ3MGRkYzYzMzVkY2NkOThmNjdiIGxlZ2FjeS10cnVuaworMzExODkgNmExMzk0NjYwMjcwNzQxNzAyNTY2ZWQ4NzZjNTJhMjdlZGQ2OGFiZSBsZWdhY3ktdHJ1bmsKKzMxMTkwIDM1Mjc4YWFhZTc3NWNmOTcxYzIwZWFmMmM1NTA0MDc2M2I1NTdhMTIgbGVnYWN5LXRydW5rCiszMTE5MSAzYTUyOGFhMjIyYjZjOWQ2ZGZlMjEzYmJlNmM3MWI1ODU4ZDg4ZTgxIGxlZ2FjeS10cnVuaworMzExOTIgZGYzNjNkMWIzODQyODg1NmZiNGI1NDkyMzgyZmYzZGQ2OWM4N2E1OSBsZWdhY3ktdHJ1bmsKKzMxMTkzIDY1MmRmNDU0OTcwODU1MmEzMDZmZjcyYmU3NGJiNTg2NjdlMTdiNzAgbGVnYWN5LXRydW5rCiszMTE5NCBkNWViMTJiY2NkMWU5ZjU1NDVhMGQ0NjQwMGQzYjRkOTg0NDExODg2IGxlZ2FjeS10cnVuaworMzExOTUgNWQ3ODg4ZmJlYTAwNDg0Yjc1MDAxYzVlNTNkODVlMzQyMmM0MjljNSBsZWdhY3ktdHJ1bmsKKzMxMTk2IGY2MmVjMjQwNWU5ZmNiNTVlZjFkZGQyMDhjNTRmNTQ5MzliNzU4NGEgbGVnYWN5LXRydW5rCiszMTE5NyA4ZTVkZTQzNTI5Yjc1NzNjZmI0NTBiZTg0MjNiY2JjZTQxNjIzODkyIGxlZ2FjeS10cnVuaworMzExOTggM2U5OGQyZTJkODQ3ZjE2YzQzYzIxNTNlMDdjMjBjMjY0ZDUxMDc3MiBsZWdhY3ktdHJ1bmsKKzMxMTk5IDIwMzMwZTEzMjExZWFkZmZlN2I1YjQ2NzE1ZGIxNzJmZGQ0YTJkNTYgbGVnYWN5LXRydW5rCiszMTIwMCAzYjBiMzZjZGQ5Y2Q5OWU3NGFlMDUzYTYzYWY1NmVmNWZiNmE0ZjYzIHJlbGVhc2UyMi1tYWludAorMzEyMDEgYzg5NDNmODdjNjhiOTlmMmYxNjVmZmJlMjA3ZDE2YzEzOGJmMmUwNSBsZWdhY3ktdHJ1bmsKKzMxMjAyIDk2MDgwM2Y5ZjY5ODk5NGZhM2QwYWFmNDcwODkzNjcxZDdiYjlmYTQgbGVnYWN5LXRydW5rCiszMTIwMyBjZTNmYWFiMDZkZTc1M2E2YTkxNDM5NTU3Zjc3ODEwMTg4YjEwMGQ0IGxlZ2FjeS10cnVuaworMzEyMDQgOGY4NDQ4ZmI1OGQ2Zjg5NjA3NTJhMzUzOTZlZjdhNjg5YjU3ZGRhOCBsZWdhY3ktdHJ1bmsKKzMxMjA1IDk1ZjNhMWNkMDBlMTYwZDg1ZjRlODczODhlZjc0M2RlYTFhMDVlMjUgbGVnYWN5LXRydW5rCiszMTIwNiA1MTk5ZjdlYTY3NDZmMzk4MzM1YTc5M2U5OThiOTA4Njg5NzFmZmU5IGxlZ2FjeS10cnVuaworMzEyMDcgMjYxOTE1YTZjNjg1MmM5ODRmYmNmM2I3MDcwM2E2MmUwM2E2ZDM4NCBsZWdhY3ktdHJ1bmsKKzMxMjA4IGQ2OThjNTYyM2RhMDZmNTFlYzU5N2RkYzcwMGQ4MzVlNjJiMjZiYjIgbGVnYWN5LXRydW5rCiszMTIwOSBiMTlhYWFlYjZkNjQyMDMxNjNhZDljZjkwZGU2M2YwYmQ0ZjAxODUxIGxlZ2FjeS10cnVuaworMzEyMTAgZTU0NTRmZTFhYWZkMGRjZjlmMmVhNjhiYWVmOTZhM2I4ZGJkYmQ0YSBsZWdhY3ktdHJ1bmsKKzMxMjExIDc0YWFiZDQ0MTlkNDBkNjViYzdmZmJlZWQ0ZDQzOWEyNmFhNjdjYTQgbGVnYWN5LXRydW5rCiszMTIxMiBlZDFkNGU3OTcxMDk1YmZjYzRhMWVjOTMxMzQyNjNjYWFlYzc2MTRmIGxlZ2FjeS10cnVuaworMzEyMTMgOTZmZDAwNGE1OGIwZDMyZmVlYWQ4ZjYyNTljMDliNjQ5MzRjM2Q5YSBsZWdhY3ktdHJ1bmsKKzMxMjE0IDllNDdmOWVkNDlmNjQ2MjJjYjc4N2ZmMTlmNDcyNmNkZDJkNDZhNGYgbGVnYWN5LXRydW5rCiszMTIxNSAzNTk5ZjY1OTNmZTkwYzBjOTlhYWQ2ODNmNjA5YzQ5MGUxZmIzYTUwIGxlZ2FjeS10cnVuaworMzEyMTYgMjBiODAzY2YyMTlkMDk4NGZlOGE2YTkxM2UzYjVmNzA2ZTYwNmE0ZSBsZWdhY3ktdHJ1bmsKKzMxMjE3IDRjN2IxYjdkN2YzMTExNjc4NjY5MGUxODdjNmJkM2IwMzQ2ZmVkNGYgbGVnYWN5LXRydW5rCiszMTIxOCAwZWMzODk2ODg2ZTY5NmE3ODlmMGZmYjkzMzBkMzYyYTFlZTRkY2JiIGxlZ2FjeS10cnVuaworMzEyMTkgOGYzNzgzNWNmNGE0MTFiNDJmMDFjZGViYzJmZmIzMjRkMDg5MjM0NyBsZWdhY3ktdHJ1bmsKKzMxMjIwIDlhYjk3MWNkMTk2NTcyNGFmMGNhODgzMzU2ZTg0OGFhZWQ5MDU3NDEgbGVnYWN5LXRydW5rCiszMTIyMSA2M2Q2MzRlZDk0NWNjMDFlODg3MDRlZWVkNjdkMjVmYWYwYjEyYWI3IGxlZ2FjeS10cnVuaworMzEyMjIgYWM0NTNiYjM3MGEyZTljNzFiYTg4MzA0OWZlN2JiZDQxODQ1YWZhNCBsZWdhY3ktdHJ1bmsKKzMxMjIzIDdjNGRkYTBjMTQ1ZjA0MDFiNTVlMGExYTZjNDcxNmQ3ZmI4ZDEyY2UgbGVnYWN5LXRydW5rCiszMTIyNCAxYTMwMGY0NzUzMzIwNWMwODY2NWQ4NDEwMGI3M2EwYTRmYzZkM2NlIGxlZ2FjeS10cnVuaworMzEyMjUgZWIyODc4OTQwOTA1ODYwNGU0N2NiYjZlMWJkNjJmYzc5ZDhiYzE0MiBsZWdhY3ktdHJ1bmsKKzMxMjI2IDQzMTQzZDRkZDZiMWQ1MTNiMTJlODhhYjJjYmEwYTEyOTEyODVlYzMgbGVnYWN5LXRydW5rCiszMTIyNyAxODYxMzM1ZTc4YWExMTZjN2QzOTgwMjRmZDRjZjYwZTNkNzQ0OGQ0IGxlZ2FjeS10cnVuaworMzEyMjggMGZjYTY1YTA5ZjA2MjgyOGM1ZTU5YTgxNjg5MzM5NjE4YmM3N2NlMiBsZWdhY3ktdHJ1bmsKKzMxMjI5IDYxNGFiYmE1Yjc2MjRmYzM1N2Y4ODU3NjYwOWRjOTJiMTJiNGE4ZmIgbGVnYWN5LXRydW5rCiszMTIzMCAzNzk5OWY2OTI0YjRlNTUzMjg4MmZlYjllMGNkZWFjMzZjZjFlYjNkIGxlZ2FjeS10cnVuaworMzEyMzEgODRmMmM0MzhjM2Y1MmJhMThlZjMyZjkzZjhiZWY0YWViM2U2NGEwOCBsZWdhY3ktdHJ1bmsKKzMxMjMyIDA0MjhkNTkwNjlhOTg0MTI3ZGY2N2IyZTc5MWYwYTk2MDQ5MzNjNTQgbGVnYWN5LXRydW5rCiszMTIzMyBjOGM3ODE2ZDNhMmRhNmUzMDk2NDRjYmUwMWY3NDNiNTliZDk5ZTg4IGxlZ2FjeS10cnVuaworMzEyMzQgMGY2NzMxZDEyNmRlYjE4YzM3ZWQ3NjlhZjA1YzQ2MzVhNGY5NWI3NyBsZWdhY3ktdHJ1bmsKKzMxMjM1IDUzN2JmY2UyYjczMDNmMWFmMWQ2MDg3YTUxMjZjN2NmYTg2ZmY2YzAgbGVnYWN5LXRydW5rCiszMTIzNiBlMGZhNTIwNjdkYmVmYjgyNzNmN2IyYjhmMTljY2FlNDNmNjM2MjkxIGxlZ2FjeS10cnVuaworMzEyMzcgZjg3YjZkMTZiYWU4NWE3OWZmZTE1MGFjMTYyYmZmY2QxMzdiMGY0ZSBsZWdhY3ktdHJ1bmsKKzMxMjM4IDljM2M5OTNlOWI5Y2YyMzM0YWQyM2RlYTczM2RmMTA5OTg0MGUxNjUgbGVnYWN5LXRydW5rCiszMTIzOSBlNGZlMTY4ZTM1ZjE0M2ZiY2E1MmVlMGM5NDFlMDJlZDk5YWE2MzIxIGxlZ2FjeS10cnVuaworMzEyNDAgMDAxY2Y3NGRhYzUwMWE5ZTY1M2QzMzU3MjBjN2JhYjM4N2RlYmFlYiBsZWdhY3ktdHJ1bmsKKzMxMjQxIDE2ODU2Yzk1MTRlMDVhODg0NmQ0ZGQ2NTQ1NmVhOTdjYWE3ZTU4YzcgbGVnYWN5LXRydW5rCiszMTI0MiBhYWRlNGJjMTI1ZjhmZjI5MjRlNGYzNTU5YjFjNjg0MmMyZmVkYTliIGxlZ2FjeS10cnVuaworMzEyNDMgNzYzNzZlNWFmMzg4ZDAxOTJlYTk0YmEwZDM2YjNiN2M4MmY0M2FkNyBsZWdhY3ktdHJ1bmsKKzMxMjQ0IGUzYjVmMzIxZWViYjAzZjRiZWU1MDUyZTg1MTE2NmEyZWI2N2MxODYgbGVnYWN5LXRydW5rCiszMTI0NSA1OTM1YjgyNDNkNzRlNGZmMThkZDI1NDc5ZjBhOWFmNDc2YjcxMDA1IGxlZ2FjeS10cnVuaworMzEyNDYgNDEzMTNkMjBkMWRkZTI2OGFiZTM4Y2YzZWQzNTIzOTcxMThkYWU2MSBsZWdhY3ktdHJ1bmsKKzMxMjQ3IDUyMmVkZDU5MWQyY2YxMzc1YmE0Mjc1ZDBlMzk1MTk5M2Y4ZTIyMGYgbGVnYWN5LXRydW5rCiszMTI0OCA0NzRjYmJkZjAwY2U3ZDY0NDc4ZTgwNTA5YWVhNzBhODczYTU4Yjc4IGxlZ2FjeS10cnVuaworMzEyNDkgMjEyODNiNmVhN2YxYTZkZmI3MDg2NWYyYjFmZjEyNmEwOWU0ODIxOCBsZWdhY3ktdHJ1bmsKKzMxMjUwIDA0Mzg0ZjQyOTBiYWY2ZWZiYzhlMTkxZGMyYzE5ZDI0MmMwNzQyNDcgbGVnYWN5LXRydW5rCiszMTI1MSBjYWQxMTg1ZWVlZjdjMTY4YWVhMWEyOWM1MGI3N2Q4MTdhOTExY2U5IGxlZ2FjeS10cnVuaworMzEyNTIgNzI2NzIxNGYwNzg1NmJjZTc0NzE4NjJjNWY3ZjA4MGVmMTIzNmJjYiBsZWdhY3ktdHJ1bmsKKzMxMjUzIDM5ODJmMTE3Njc5ZWZiODM2OGI5ODJlNjJiNzc3OTU2MzllODFiNzAgbGVnYWN5LXRydW5rCiszMTI1NCBmMmYwNmI2ZWNkZDcxYmQ3NWY0NGEyNGVjMmY4ZTkyYzE5NDRiYmJjIGxlZ2FjeS10cnVuaworMzEyNTUgNWUzMTUyOWZkZDRmYWY5ODYxZmQyZjEzOWY0ZGFjNTcwOGMwNmVmNyBsZWdhY3ktdHJ1bmsKKzMxMjU2IGQ1MDIxODdiMmIwNmUwMGE3ZjViN2IzZWEwNmIxODc1OWU3MWM5YWIgbGVnYWN5LXRydW5rCiszMTI1NyA4ZDkyYWYxNDRjMTZlYzc4NzcwMzdhYTM4Y2FlNDIxMjQ2YTczN2NiIGxlZ2FjeS10cnVuaworMzEyNTggMDNjZmM2MzdjMzkzNTg4MmYyM2M4ODdmZjAzNDFlYmMwMTU4Zjg5NiBsZWdhY3ktdHJ1bmsKKzMxMjU5IGI0NjZjNWZiNGQ4ZWFiY2EzYWVlMDNjM2IwMGRmN2NiMDlkNmM4ZGEgbGVnYWN5LXRydW5rCiszMTI2MCBjMWVjZGRlMzJmODYzYzQ4ZGM4MDQzYzVmNzE2MzBhMWMxN2MwY2UwIGxlZ2FjeS10cnVuaworMzEyNjEgZmE5ZjllNTdlOThmODYwOGMyNGFlZTkzNmU0MzlkN2E4YzQwYWNlNSBsZWdhY3ktdHJ1bmsKKzMxMjYyIGU1ZTI0MmNmNDZiMWM0Yzc3YTUyNzA0MmJhMjBlNDBjNzdiMTkyNGEgbGVnYWN5LXRydW5rCiszMTI2MyA3YjJjZDgwMGMyMjk2ZDQyZWNhNDJmNGQ1NDFjN2NhNjEyMGQyMzEwIGxlZ2FjeS10cnVuaworMzEyNjQgMzJmYjk0YTZhNGZlOWJlY2NlMzJlZDkxNmEyMTk5NTA1ZWJhYTAwYyBsZWdhY3ktdHJ1bmsKKzMxMjY1IGRiNDE2YmQxOGQ0Zjc5ZjJmOGVmMDAxMWMzNTI4ZDYyYWVlZWM4NTAgbGVnYWN5LXRydW5rCiszMTI2NiA0MzY3ZjgwNWRiMDljM2Y2NjA2NmMwMjdiNWU5NjhlMDk4NDA4OTMyIGxlZ2FjeS10cnVuaworMzEyNjcgZDhjNzY1YzA5ZDhjMWE4ZWE2NmI5OGM0ZTNhMTc2YTdlNThhNjVmMSBsZWdhY3ktdHJ1bmsKKzMxMjY4IGNlMzQwZmI0YjYxNDk1MTJiN2ZkYmJjZWYyNWMzOWJhNzNkNGEwYzIgbGVnYWN5LXRydW5rCiszMTI2OSA0YjliOGRmNTRkZTlhZDg1NTQyMjRlYWNmNjQ2N2NhM2U4MWM1MmE2IGxlZ2FjeS10cnVuaworMzEyNzAgZGY3NDEyN2UyYzlmZDE1MjE1ODkyOTQ1MmNjYTM4OGFhMmJhODkwZCBsZWdhY3ktdHJ1bmsKKzMxMjcxIDk1MDM2ODVmYjRlODgwODkyNTI2MWU4ZWU2ZDYyNzAzOGFiZmZmYjkgbGVnYWN5LXRydW5rCiszMTI3MiBiMzMxZTVlNWNjNGFiZjM1NWRlZWU3ZGUwOTc1MDA5MzU0OTcxZWY3IGxlZ2FjeS10cnVuaworMzEyNzMgYWJmOWE5MTJjZmNlOWM1YmI4MGE3OTQ4MGZiZjBlZDFhYTJiYjkyYyBsZWdhY3ktdHJ1bmsKKzMxMjc0IGM0OTYzODMwNWEyOGIwZDI4MDZmMmE0NzRhOTFiZDJkZjlmNGJjODcgbGVnYWN5LXRydW5rCiszMTI3NSA4NTM1OTIxNzA5MWNhYWMyYmZiNGJhNDJiYWE3NjYwOTYxZDgxMjcxIHJlbGVhc2UyMi1tYWludAorMzEyNzYgOTQxZGU3OTFiMTdhZWIzMjdkZjBkMmMzYTY4NjQ0ZDU2NWQ4Y2QyMCBsZWdhY3ktdHJ1bmsKKzMxMjc3IDU5YWU0MWUwNGZmYmU3ZmM3Yjg1NjRlNDA3ODVkMjJhMjdmM2U2NDUgbGVnYWN5LXRydW5rCiszMTI3OCA5Zjk0MDA5YjFhZTBjZTc4YWUyNGIxNmQyNGEyZmI2YWE3ZDg3MGQ5IGxlZ2FjeS10cnVuaworMzEyNzkgNDdhNjkxNWQxYzM2YjRiMzk2M2ZjOTM0N2ZkOTMzNmQ2N2QzZGY3YyBsZWdhY3ktdHJ1bmsKKzMxMjgwIGM3Y2YxYjVkNDcxYjdlN2YzZTJlZmU0NDQ3MGEzZGUxYjU2OThlODMgbGVnYWN5LXRydW5rCiszMTI4MSA3ODUwZmE3ZmI2ZjFhMTQ5YTg5NzFiMzJmZjc0ZGQ1ZDkwNTgwZTNkIHJlbGVhc2UyMi1tYWludAorMzEyODIgMzI5YTAwNzc3ZTMyMGNhZTdlYTg4YTM0MGJmNDY4NmM0YzE3YjFjMCByZWxlYXNlMjItbWFpbnQKKzMxMjgzIDZiMTc4OWFjMmY5NTgxM2UxMjg1OTM0MmU5OTNiYzE4YjZjYzRkMDggbGVnYWN5LXRydW5rCiszMTI4NCA5OGMzNGNjMWNmNDAwYjY0ZTQ4YWYyY2I0NDQ5ZTIyZmNjM2JiNjljIGxlZ2FjeS10cnVuaworMzEyODUgMDM5NTUxMmNlMWI1YWI4OWMxYzY2NzY3MDBjZDI0NWYwNWZlZDQxNSBsZWdhY3ktdHJ1bmsKKzMxMjg2IDM4ZDA1MDU2MTk1YzljMTg3ZTc4NmQwN2VkOTZmMGRkZWQ3ZDY5NjkgcmVsZWFzZTIyLW1haW50CiszMTI4NyBhNGJkZTkxNTExOGM2MDU5MzRlY2FiMGFhNTBkM2FhYTI0NmUxYzg1IGxlZ2FjeS10cnVuaworMzEyODggNTk0ODIzMTcxNjZlNmE3NzMyNDczYWZlMjFjNmM5MzFiYWYxYTExNiBsZWdhY3ktdHJ1bmsKKzMxMjg5IGM4MTQ4ZDdmMGM5ODZlMGYwZGU4ZjYyZDA5NjA3MTNlMzU3ZGM4YjggcmVsZWFzZTIyLW1haW50CiszMTI5MCBhOGE2NDdlMTkyN2I1NmU5ZDY3NzI0NmM1ZmJlNWJlNTQyM2JjNTRhIGxlZ2FjeS10cnVuaworMzEyOTEgZjRjZGJhODNiZTU2MDI4ZTY1Y2ZhYzkzNzBkYWE5M2VmYWZjYWQ5ZiBsZWdhY3ktdHJ1bmsKKzMxMjkyIGZjODgxNzRjMGMwYWRkZTM2Y2E2Mzg2MTk0MWFjYjRjZGZiMjE4NmEgbGVnYWN5LXRydW5rCiszMTI5MyBhMDM2YTUxOTc2MTBjN2M5MjlkMGM5MDRmOGUyMGMyZDlmMzczMzc5IGxlZ2FjeS10cnVuaworMzEyOTQgN2I1MDQzYzBmZjQ3Njg2Nzg2MDJlYzkyZjM5ZDZmNzM3Y2Y4ZDRmMyBsZWdhY3ktdHJ1bmsKKzMxMjk1IGM1YWQwYTI0ODliODI3NWQwYTJkNGQwMzgzMTNjM2RhM2U1YmU2YmEgbGVnYWN5LXRydW5rCiszMTI5NiA4MmNiZjExNzhlNGY0ZjJhNjYwMGZkNDllMjlkYmUyOWYwZmFjYWM1IGxlZ2FjeS10cnVuaworMzEyOTcgMmQ1NWJlM2E4ZWMzNGVjYjE5MTMyZDRiYWJmMTAxNjE0ZmJiZjc2ZCBsZWdhY3ktdHJ1bmsKKzMxMjk4IGRjNWUxZDkxODA1NTgxMzRkMjg2ZmI3NDg4MmQ4NGUyMTlmYTY1MTcgbGVnYWN5LXRydW5rCiszMTI5OSAyYzM4OWEwNDQ4YTRmYjA4YzY0NTI2YzdjYTNiOGVhZDQ3NzUyZWExIGxlZ2FjeS10cnVuaworMzEzMDAgOWY3MTNjN2I3ZmQ5MTAwZTU2NTM4NWMwNjNmZTcxMmY5NjNiNWI5OSBsZWdhY3ktdHJ1bmsKKzMxMzAxIDM1NjZiODRlNjZiOWU3NTZiMjMwNmFkZTYyNjAyYjFjMDIzODIyNzggbGVnYWN5LXRydW5rCiszMTMwMiAyNGU4YzdlNTIxZjU5OGU1ZDBlZDY3MDFhNDljMjA0NThiMTFkZjI4IGxlZ2FjeS10cnVuaworMzEzMDMgYmZjNTI0Mzc5MzA3MTE4NDE2NDVlZjcyZDAzOGFlODFhMzE1NDc5NiBsZWdhY3ktdHJ1bmsKKzMxMzA0IGMxODQyMjcxNmZmMjZiODgxMDUyNzJlOWVhODkyODVlMDEyMjM2ZWMgbGVnYWN5LXRydW5rCiszMTMwNSA4YmZmM2QwOTQ0YmE3NjlmYmYyN2I0Y2FlYWRmOGI4NDE3ZmZlMzhmIGxlZ2FjeS10cnVuaworMzEzMDYgNWY2OTMxYjgzNTJlNDFmMGUxYmIzNTViZmJmYTQ3NmZhMjRhOTUzOSBsZWdhY3ktdHJ1bmsKKzMxMzA3IDFkYzYzNjY1NDNkNDg1ZTc2NGFmNTlhNTAzYWYzMDE5ODRjNDJmNzQgcmVsZWFzZTIyLW1haW50CiszMTMwOCBmYzVhNjBhNjFlMzJmNTNlZGMwODg4MzIyMDViOWRlN2FlZDgwNjUyIGxlZ2FjeS10cnVuaworMzEzMDkgZGQxMTMwMjUzZjEwM2I5NmQ2YWJkZmFkZDFlMjI4N2U0MzU2MDJjNSBsZWdhY3ktdHJ1bmsKKzMxMzEwIGNjMDFmYjY1NGNlM2Y1NWNiNmRlM2UxOTRjOTM5MGRjNTdiZTk4MmQgbGVnYWN5LXRydW5rCiszMTMxMSA5MDRmMGU3Njk4MjA5MDVlYmM3NjVjMjA0YTdmNTJmYjIzODIwNGVmIGxlZ2FjeS10cnVuaworMzEzMTIgZWJjYWVkNzk0OGU4MGUxY2M5N2Y2YmY1MmFiMGM1ZTg3ZGY2MGNkMSBsZWdhY3ktdHJ1bmsKKzMxMzEzIDIxMDAxODJmNzRlMzhhYzU1ZjQwYjQ0MzM3ZmZkZjc3MTczNmM5OWUgbGVnYWN5LXRydW5rCiszMTMxNCBjMjBmZWNiNWNjOWM1NmUzN2ZlNjdmODg5NzhmOTM1MmExZjdiY2FjIGxlZ2FjeS10cnVuaworMzEzMTUgZjM0NDQ2ZmEyMTZlNWZjYzEzNzJhNDVhY2Y1OTI2MDVkYjVkOGY3YyBsZWdhY3ktdHJ1bmsKKzMxMzE2IDBiZGZkNjViYjEyMjU5MzEwOWM5NzZiMTBhNmEzMDI2YTkxNzlhZWYgbGVnYWN5LXRydW5rCiszMTMxNyAzOWIxYmFjODkzNjVmODIwY2QzOTM4MmY0Yjk3NzMzZGE4NDQyMzMxIGxlZ2FjeS10cnVuaworMzEzMTggZjJiNDMxMzY0ZjZmY2JmMGZhNDIyMzJjZDE5NGRlMjQyODMwOWZkMiBsZWdhY3ktdHJ1bmsKKzMxMzE5IGI2NTBhNTRhNzZmZGFkYWViN2UxNTMxZTRmMmUyZjI4ZTYxNDRiYzMgbGVnYWN5LXRydW5rCiszMTMyMCA5YTYwNTRjNmQ0NmZhYjZkYjNiZmYyZjk5ZGE3OGU2MTc3N2FiMTM4IGxlZ2FjeS10cnVuaworMzEzMjEgYjU2ZjAwZWM4MDgzMTI3ODdiZTIyZTJmOGFjNTA0NzM1NTk0OWVlNCBsZWdhY3ktdHJ1bmsKKzMxMzIyIGYwNDA5ZDc1NGI5Mzc3ZWZiY2I5ZmU1ZGMxNmU4MTU0NGVjYTAzN2EgbGVnYWN5LXRydW5rCiszMTMyMyBkMmIwMWM5ZGZmMTY4MzViOWVhZjgxOTliZGZhMGVmYzliZjgwOTAyIGxlZ2FjeS10cnVuaworMzEzMjQgMjA0MmUyMDUxZDk3ODQ3NTYzNzU3OTllN2E2Y2RiM2UxNTJhMjhkOCBsZWdhY3ktdHJ1bmsKKzMxMzI1IDA0MDBiYTc4YTg5NzlhNGY4ODk4MDk2ZWQ0MzhhNzZhYjM5MzgxZTYgbGVnYWN5LXRydW5rCiszMTMyNiA2MTk3M2Q1ZjZlMjUzYzg5N2I4OTc2MTA1MGQ3NzVkYjRjYjFlOWFkIGxlZ2FjeS10cnVuaworMzEzMjcgZTYyMDk5YzY1YTNjM2MxZTM0OTQwMTdiZTFlYWYyYWI4NWYwYjI2NyBsZWdhY3ktdHJ1bmsKKzMxMzI4IGIwNTM5YTQ1MDkxNzI1MGNjNmY1ZTFmYjJiNWY2Mjc3NmU5NzcyZjMgbGVnYWN5LXRydW5rCiszMTMyOSAzNjExOTc2Y2IxNzRhNWY5NTM0OWRiNWE3NmMxOWZmZGQ2MzcyNjcwIGxlZ2FjeS10cnVuaworMzEzMzAgMGM3ZThjM2Y2NDJmNjE1YTU3MmE2Y2E0NDU2MjEwOGJkM2JlZGI4MCBsZWdhY3ktdHJ1bmsKKzMxMzMxIDM3MmUzNDgzZDMyNzU0MjgxYzYxNzUwYWIwZWM2ZmY5NzAyOGQ5ZWYgbGVnYWN5LXRydW5rCiszMTMzMiBjN2RmMjI1ZTRlNGE1NzUxOGQzZjA2NzEzNzkzMGM4MDAzYTgyNTYyIGxlZ2FjeS10cnVuaworMzEzMzMgOGQxYjI3MmM5ZTcxYzI0Mjk0ZGJjNzZlNzc4Mzk3Yzg5OTkwNjZlNSBsZWdhY3ktdHJ1bmsKKzMxMzM0IDllYzQ3ZTY1MTE3ZDM5ZGFhMzQzNGY2OWI2YjdmYjA1ZDVkODBlNjkgcmVsZWFzZTIyLW1haW50CiszMTMzNSBlODg3OGM4ZjU0ZGY1ZDVlMTFiYTdiZDUwN2Q2M2M3MDgyMDYwNDM2IGxlZ2FjeS10cnVuaworMzEzMzYgYjk1YjlhYmI5YmYzOWU1NzFlNzM2ZTMxNmUwNTVmODU5ZGNhZTk0NCBsZWdhY3ktdHJ1bmsKKzMxMzM3IGQyZTdmNDY4ZjIyNGU4MTJlZDUzZmVmOTdkZWJhMjcxMjg2NjQ2NTMgbGVnYWN5LXRydW5rCiszMTMzOCA4ZDZlZTE1ODY2YjIxNmQ0MWFiOWYwMGI3NjE4MmJlOGM0MTkxZjgyIGxlZ2FjeS10cnVuaworMzEzMzkgNTY2M2UwYzgxODYwMmYxODQwZmJlNTA1NmZjOTRkMGMxZmY5ZDhhZSBsZWdhY3ktdHJ1bmsKKzMxMzQwIDQyMzk2YTc4NmY1OTMzMmRjMjRkZDQ3NjU2YmI5M2ZiOWQxMWU2ZTQgbGVnYWN5LXRydW5rCiszMTM0MSBjZDA1YWY3MDFlNWQ2NWJiNzAyMWRiZmNiNWUyNWY5YmNiZTBlZTA4IGxlZ2FjeS10cnVuaworMzEzNDIgZjZjOTVmOTEzOGFkMzcyZDkxMjg2MzA0N2I5OWJlMWYyMWNjOWRmNyBsZWdhY3ktdHJ1bmsKKzMxMzQzIDQ4ZGM0YTU5YTUwZWY4NmUxYTAzMGQ0MzY1OTJmNTNiODM5YzYzMzkgbGVnYWN5LXRydW5rCiszMTM0NCBjYjFlZWFlYjc0YTA2NjA3ODkzYWVlZThkNDYzOGQ3MzBhNTdmMzAzIGxlZ2FjeS10cnVuaworMzEzNDUgZmFmZmIxMWY1NGU4ZDBhNGY4Nzk1YzQyOWQ2MTEyYjU4ZDA0MDRkZSByZWxlYXNlMjItbWFpbnQKKzMxMzQ2IGJmMDgzZTM1MTg1ZjU0MzBjYzFiZTVkZWUzMjdiOTYxNDM5Mjc4MGIgbGVnYWN5LXRydW5rCiszMTM0NyA1OWZiYWUzM2EwZjlkN2U1ZGU3YjIwYmMyOTVlZjkzOGZhYzhmZGVjIGxlZ2FjeS10cnVuaworMzEzNDggZWUxMGQ3ZTdmODE4Y2M0M2JmZDdiYzdjYjQzNDdiZmNmNTNiOWRmOCBsZWdhY3ktdHJ1bmsKKzMxMzQ5IGZiYzQ1YmVhZjAzNDRjZmRkY2QzM2U1N2MxYTg2MWI1NDNjOTgxOWYgbGVnYWN5LXRydW5rCiszMTM1MCBiODA0ZWU1YmViNDkyMzlkZTgwMzMyYTkzMTFmMWIyNmYxNDAzZGQ1IGxlZ2FjeS10cnVuaworMzEzNTEgMTlhYzEyYWM4MDQxNTM1M2M4ZmMyZmRiMGI4M2FiMjExYTBiY2NjOCBsZWdhY3ktdHJ1bmsKKzMxMzUyIDY1MWQxMTIzZWQ2ZTM3MjJhM2FhZmYwMmE5ZTljMjQwMWM5NjE3ZDEgbGVnYWN5LXRydW5rCiszMTM1MyBiZGVhY2Y3YjE1Yzk2NmJiNTE0MTc1YjE4MDA3MWEwZjRlZTlmNzRiIGxlZ2FjeS10cnVuaworMzEzNTQgMDExZjczNDI1OGRiOWJiZWI0NzIwYzE1YzRhZWJiNzZkYzJmODYxZCBsZWdhY3ktdHJ1bmsKKzMxMzU1IDdkZmZjYzQ5OGM0NTgzMWI2Y2JiNDM3MDRhNmZlOGI5M2U2OGY3ZTEgbGVnYWN5LXRydW5rCiszMTM1NiBjMzc3YzU2ZWRmYzhkMzZiMDc3Y2QzNTBiNzNlYWVjMTc5NjdiM2Y1IGxlZ2FjeS10cnVuaworMzEzNTcgNmJhOTQwY2Q5OWVmOTgzMWM2MjA1YTg2NjcxNjkyMzNiNTZlODA2YSByZWxlYXNlMjItbWFpbnQKKzMxMzU4IDRhMDJjYTZiZGI2ZjRmN2NjYzljN2EyNDc3MzljZTk3ZGFlNmIwNGQgbGVnYWN5LXRydW5rCiszMTM1OSBiZjljYTA4NmI4YWE2MjcwNDJhMjc4ZGJhNzU0M2I0OWJlY2EwN2Q4IGxlZ2FjeS10cnVuaworMzEzNjAgNmI1Njk2NTQxYmE0ZWY0YTkzZTU4Mjg0ZjhiMDM2MTk3YzkwZjQ3MiBsZWdhY3ktdHJ1bmsKKzMxMzYxIDdmMTcxZjlkYjhhZmU0ODQwNWYwOGM0MmFkMDM1NzVhOTkyMzE1YmEgbGVnYWN5LXRydW5rCiszMTM2MiA1MjNlZmQ3NzMyNjFhNjcyYWE5ZmJiYWJlYmY1YzgzZjZlODUzNmE1IGxlZ2FjeS10cnVuaworMzEzNjMgOTRiZDExYjExZGY3ZDVmZGIwNzUxOGFhNjkyOTc3YTEwOTk1MmRkMiBsZWdhY3ktdHJ1bmsKKzMxMzY0IDVkMmQyNGE3MzgyNTkyZDAxM2ZkOWZhMjU3M2FmMDViZWNkYTI2ODMgbGVnYWN5LXRydW5rCiszMTM2NSAyMjFlYWY3ODE0ZjQ0YjYyOTA2MGJiMmJkYjFhMzJiY2E0OGU2MDM0IGxlZ2FjeS10cnVuaworMzEzNjYgMTAyNTkxMjJiZjVmMmQxMzlhZTY3NzQ5N2M5NzUxOTYwZGYyYjkzYyBsZWdhY3ktdHJ1bmsKKzMxMzY3IGI1MTk3MGJhMjE4MDYzMzA5NDUyOTYyYmQ2YWFjNWM1YTlkY2EwMWMgbGVnYWN5LXRydW5rCiszMTM2OCA1MDE3M2VhMWZkNDQwNzE2YTkwMDI4NTZkOTkxNGQ0NzdmMGRkNzQ2IGxlZ2FjeS10cnVuaworMzEzNjkgMTViMDMxNzQ4MTE2YzM2OGM1YmRiMzBjMzY3YzE3MGM5YzhlMjgwMiBsZWdhY3ktdHJ1bmsKKzMxMzcwIDMxNjBkMzA0MTUyMTk0Y2UwODdkOGMyMTI5NjllYjQwMzkwZjI1OTIgbGVnYWN5LXRydW5rCiszMTM3MSAxYzEyOTliYzMzZDYwNzI3NmNiMzI0OWY2NDgxYmYxY2M0ODg5NzY5IGxlZ2FjeS10cnVuaworMzEzNzIgMjNmNmIwZDAxYmM2YWQ0MzRjYjYwOThkOWU1ZGUzMmE2ZGNhNmVhYSBsZWdhY3ktdHJ1bmsKKzMxMzczIGU0ZGJmMGYwMDk1YmU4NmNmMzUxZjc0YmExZGQ2NGU3NjY5Y2EzMmMgbGVnYWN5LXRydW5rCiszMTM3NCBkYWE0NDk1Y2Y2MWFiMTRjNDU4NjNjYWM4MmY5NDY4MjMwYjlmZjE5IGxlZ2FjeS10cnVuaworMzEzNzUgZTlkNzEwMmY4Mjc4MGZmYmUwMjI5NGExYzQ4OTYyYjFjNjE5YTgxMCBsZWdhY3ktdHJ1bmsKKzMxMzc2IGUwZGE0NTc3YWFhNjI0MTU5NjdiNTZkMjQ4Mzg0YThjMzZmZWU2ZTUgbGVnYWN5LXRydW5rCiszMTM3NyBjYjJjM2ZiYmE3MmVlNzZiZmVlMTZjNTA1Y2RjOWJiOGY3OWU2ODFkIGxlZ2FjeS10cnVuaworMzEzNzggM2ViMDM3NmU5M2U4NDIwNjUwYjQzMzBjYjQzNGRlOTVmMWQyYjJjOSByZWxlYXNlMjItbWFpbnQKKzMxMzc5IGM1ZGQwNzdkZTBmYzY0NmE3ZTE3ZGQzMjcxOTMyOTg2OTdhMjMyNGYgbGVnYWN5LXRydW5rCiszMTM4MCA3YTIwYmJkYmZmMzY4MmY3ZjY2NTNkNWI5NzAyNzUxMzg1NDE5MzI1IGxlZ2FjeS10cnVuaworMzEzODEgNGI3NWEwYjc2ODU3MTliZjhiM2UxMzI0NGY5N2RhNTljOTAyNmY4MSBsZWdhY3ktdHJ1bmsKKzMxMzgyIDU2MjBiMDc4NjI3MTE5YjY5YjZkMDM0Zjg3NWM1MmY5NWVjMzJjZDIgbGVnYWN5LXRydW5rCiszMTM4MyA4MWFmY2E3NDdjYWE1YzE4NmVkMDE4NzllNjIwNzliODIzNWY5NjkyIGxlZ2FjeS10cnVuaworMzEzODQgMDE2MGZmY2IxOWUzMzdiZjEzYjgyOWM1MjcxMWJlZmQyYWQzMmZlYyBsZWdhY3ktdHJ1bmsKKzMxMzg1IGNkMTBmYTcyMWE1MTJhYzhiMzgyZTBiN2UzYzMzNzc0ZTZiNDBlNDQgbGVnYWN5LXRydW5rCiszMTM4NiBhODc4MDQ3OWQ0ZTA5NzdjMjI4ZWI3ZjhjNzgyNjk1NjllOGVlYWRmIGxlZ2FjeS10cnVuaworMzEzODcgOTQ1M2Q4Y2RkMDFlOGY3YzA4YjUwNTM2YWNiMDg5ZmNiNmQzZjE4MiBsZWdhY3ktdHJ1bmsKKzMxMzg4IGU3Y2QwODYxYzI3M2I1NjI2NGNiN2NhMjVlN2VjYzNkNjMyY2RjNGUgbGVnYWN5LXRydW5rCiszMTM4OSAzODc0NjMzN2FlNmUwOGUxNTM4NmM1NDYzMmZmOWIzODM2ZWEzZDIwIGxlZ2FjeS10cnVuaworMzEzOTAgZjg0NDBiYjhlZGU1ZDE5ZjQ5ZmMyZjZmZWFjNWVhZmY5MjNiNzgyZCBsZWdhY3ktdHJ1bmsKKzMxMzkxIDgzYmI2YzlkZDc4YzBjNjNiYzUxMWQ5NDA5MDZkYWVhMTNmOWY1MDUgbGVnYWN5LXRydW5rCiszMTM5MiBkMTk2NjFlMTk4Zjc0NzJiNjAzNjBlZGViNDVmZThiZTczNzkyZTNkIGxlZ2FjeS10cnVuaworMzEzOTMgYjRlYjM0MzcyYmRiNWU3MTJjN2I2NDhmMDM4Y2FkMjBmZWQ2Yjc0YSBsZWdhY3ktdHJ1bmsKKzMxMzk0IDY1NDk0NDY5YWQzZWVmZGUyNGRiYzYyY2ZkMjIyYjc1ZjY1NzQ1NjkgbGVnYWN5LXRydW5rCiszMTM5NSBiYmJiYTBlZTYxZmI2ZjJmNjA4NDY2Mzg0YWE5YmFlODM5OWZkNmMwIGxlZ2FjeS10cnVuaworMzEzOTYgZTZjZjk1NTdkZTQyYTg5OWM5ZjlhYjU0NzZkZjM3MzJmYzBkZTg5YSByZWxlYXNlMjItbWFpbnQKKzMxMzk3IGE1MjEzN2I4OGViM2NmNjRkOWI2NWZkMTBjYjVjY2Q5YzNlN2FhNTUgbGVnYWN5LXRydW5rCiszMTM5OCA4NzBjZjE0YWRkMmFkYmM3MDZhNDlkNDdiMzU3YWVmZTBkOWE3ZmNmIGxlZ2FjeS10cnVuaworMzEzOTkgYTljOTZiYjQ2OTUzYmRlOGIxNGQ3ZDMyOGM1NjJlZDkwYTkwZWM5MCBsZWdhY3ktdHJ1bmsKKzMxNDAwIDEwMGZiNjg0Y2YzZTVmNTM0M2NhMGIwNGI2NDFjY2Y1MzBlZTZlMmYgbGVnYWN5LXRydW5rCiszMTQwMSAxMWU2MTIzZGU2ZmVkNmZmOTA2NWZhZWQ5YjcwYTQ4OWFjZmZmYWEyIGxlZ2FjeS10cnVuaworMzE0MDIgODhhNDJhN2MyMzhhNjRlNzkwMjVlY2NkZjRlNThhMTgxOGVjNDdhZSBsZWdhY3ktdHJ1bmsKKzMxNDAzIDZhZjc4MGUwODYyZDAwOWM2ODBhZTA4OTQwNDVkNjk5YzU5MTMyMDcgbGVnYWN5LXRydW5rCiszMTQwNCBhYmRlZWI4MThhOWEwN2M0MTM1NjBlMTUzOWM0NjM4ZjZiOWIzYmFjIGxlZ2FjeS10cnVuaworMzE0MDUgODc4OWU5ODIyYWE0Yzk3MWRmMWY4ZWFjNjNhMTI3ZjQzNjExOWFjZiBsZWdhY3ktdHJ1bmsKKzMxNDA2IDhhNmM0NTkxMGVjOTA4ZDU3ODM2NDk2YmQxM2E3Yzg4ZThlN2NjZTYgcmVsZWFzZTIxLW1haW50CiszMTQwNyBiZTc2ODNhNmY1MjFjNWE2ZDAyODNjNWY3NGYxMzY0NTdhMmViNGExIGxlZ2FjeS10cnVuaworMzE0MDggODg0ZmI1NThmMmI5MWQwYmQwMjE2N2ZhM2FhZGI2NmNhY2M4NzcwZSBsZWdhY3ktdHJ1bmsKKzMxNDA5IDVmZWQxMTQyZmQzNGI5MDY2YTQ2ZjEzNzc5OTE2NzgxNDFmNGI5YmMgbGVnYWN5LXRydW5rCiszMTQxMCAxNDhkOGMwYjk2NDcyMzM5YTViMjg3OTFhZjQ4ZGVjODZiODIzMDYxIGxlZ2FjeS10cnVuaworMzE0MTEgNDY2NTk2NzVkN2Y3OTIwOWNmZGU0NjBmNTVhYTkxMjJlYzAyYzVhZCBsZWdhY3ktdHJ1bmsKKzMxNDEyIDUyMGE4YzBjOWEyNWVjOGI3MWQzN2E0NWNkMDkwMmZkNjY0MWVmNjEgbGVnYWN5LXRydW5rCiszMTQxMyAyMDk0ZTE5OWZkNTU2MzFmMGM2MmYxMDA3YzUxODY0MzRlNTIzZDllIGxlZ2FjeS10cnVuaworMzE0MTQgZWFjZjk3NzU5MDM4YzM1OTJkODBjZThjZGIwMzM0MGZhNTY2N2VjMiBsZWdhY3ktdHJ1bmsKKzMxNDE1IDIwNmM1ZTNiNWJlNzViMTljZWVjZmZlZGE2OWJmZDJkOWJiNDFjZTIgbGVnYWN5LXRydW5rCiszMTQxNiBjZWRmOWVmYTY4ZjgxNGYzOGEzMTI3OTU1YTM3MjlkMzA5NTQxNDczIGxlZ2FjeS10cnVuaworMzE0MTcgMzFlODU4MWJjZjI1OTM3OGU5NWFmMjY4OWY0MDUyZTc0OThjYzgyNyBsZWdhY3ktdHJ1bmsKKzMxNDE4IDU3ZDBiYWQ3M2M4ZTVhMjRiY2YxNTQxZWEwZjI2MGIyMmUxZjA0MjQgcmVsZWFzZTIyLW1haW50CiszMTQxOSBlN2Q1OWRiNjgzOWE3MTlhYTVmNzRhZWI0OWFkOWZlNDIwMmM4NGNkIGxlZ2FjeS10cnVuaworMzE0MjAgNWFlZTFjMjcyOTM4ZDUwNTAzYjA4NGVjNGQzODJlZDUzMzA0YjhjMSByZWxlYXNlMjItbWFpbnQKKzMxNDIxIGQ4YjA2MDEyYjM4MTVmMmE5Y2YwYjRlODc3NDA0ZDlkZTg5YmY0MDUgbGVnYWN5LXRydW5rCiszMTQyMiBhNzU5MDU3ZWNmMWIzMjA1NzA1MDhjNmY5OWJhN2U1ZTkxYmZjYmI3IGxlZ2FjeS10cnVuaworMzE0MjMgNjZmYTI0Nzc3ZjBhZWZkOGM0ZDc4Y2U5MDQzYTNlY2IxMWJiNWQ4MCBsZWdhY3ktdHJ1bmsKKzMxNDI0IDc0MjhjMTJmNTAzZjZkOTY5Y2ZkMWMyOGIzOWUzOThkMTQzZjJhMzYgbGVnYWN5LXRydW5rCiszMTQyNSA0ZTMxZTQwODY4NDk4YThiYWI5YzRhOGU4MTVlODkzOGM4ZTk3OGQzIGxlZ2FjeS10cnVuaworMzE0MjYgY2YxZWZjYTgyYjE4MzdmYjBjM2I1OTc4MDFlM2NjZTAwM2Y1MmZkNCBsZWdhY3ktdHJ1bmsKKzMxNDI3IGMxNjNmOTViMzAwYzY0OWY5MDU3MThhYWI4Njg5NmNhN2NhNjY1ZDQgbGVnYWN5LXRydW5rCiszMTQyOCBkMGY0ZjNjZDRmZTQxYzg1NzUyZWE5ZjAyODU5ODc0YWIzZjQ1MWUwIGxlZ2FjeS10cnVuaworMzE0MjkgMTk3ZDY0ZGMwNGRjMjQ2ZjQ4NzBhNDg0ZmY0MTk3NTFhMjc1Y2ZjNyBsZWdhY3ktdHJ1bmsKKzMxNDMwIDU1YWRmMDhhMjEzYTJkODQ2MWYxN2Y3YTJiZmJkYzExNjM3NzUyMjggbGVnYWN5LXRydW5rCiszMTQzMSA4MWIyYmNiZmUzOWJiNjAwODNiZGQ4N2YxODQ5MjE5NmNlYTI1MTVlIGxlZ2FjeS10cnVuaworMzE0MzIgZTU4MjBhMTUwZDg3ZmU4NDM0ZWM4MGVkZDQwYjgzNGZjNDcwNWZkYyBsZWdhY3ktdHJ1bmsKKzMxNDMzIDliZGFjY2Q4YTkwOGMyMzAyMTUwMDYwMjJjOTY4OTQzNzIzZDgzZjEgbGVnYWN5LXRydW5rCiszMTQzNCAyMzNlZDZjYzhlMTRhNzI0ZWM2Zjk3YzdjOGU5ZDc4ZTMwMTVhZGE4IGxlZ2FjeS10cnVuaworMzE0MzUgYTY4MmNlYzZiODgwYTQ5NzQ3OTFjZDAwZmUwZjEyYTZmYTcxZDc0MyBsZWdhY3ktdHJ1bmsKKzMxNDM2IDNlMTY5ZDI5NDM5NWI4MWQ0YTgwOGYwNzMwZWY5NmYyNTkzMjMyYzYgbGVnYWN5LXRydW5rCiszMTQzNyAxNzQ3NDlmNWIzMmZhYTE4NjMzYjY2NDc4ODJkZTNkMmRjZDc0YWM1IGFzdC1icmFuY2gKKzMxNDM4IDQ3YjhjYWJhYjdiMTAzZmVjYjU5NGQ4Y2M3ZDNiZjk3YTNlOTIxMzMgbGVnYWN5LXRydW5rCiszMTQzOSA5YjQyMzIwZjFlMGZiMDQ4NzlhYzBmYzU2ODY4ODZmM2I4ZTMwODNkIGxlZ2FjeS10cnVuaworMzE0NDAgYjBkY2E5MmMyOTlhNWU5NjNlNGExZWIzMGJhNGQ1MmNiMDk2Y2UzZCBsZWdhY3ktdHJ1bmsKKzMxNDQxIDk1Yjc1MDQ0NmJiOTlkNGFkMWEwM2ZjMzExMzEyMDFkZmMyZmYwMmYgbGVnYWN5LXRydW5rCiszMTQ0MiBjNWViYWNiYmEwYmVjMDU5MzFhODc2N2E4NmVmM2I5MjIwZjM5YjVlIGxlZ2FjeS10cnVuaworMzE0NDMgY2RiMWFiYzFiNDA5MjliODAxYTE5MDQ5MmJkZmFjNjhjMmY1NmVmMyBsZWdhY3ktdHJ1bmsKKzMxNDQ0IGM3ZDdmMzUwZTk2YzQ1YTk2OGE1ZjRhODcwOTkxYjU4NDc3NWY3YTYgbGVnYWN5LXRydW5rCiszMTQ0NSBhNmRmYWJmM2I5MmJkN2EzNTVlODVhMTA3MDgwZjIwNjg3YWM5OGYwIGxlZ2FjeS10cnVuaworMzE0NDYgOTNkNDQ4NzBlOGI1OGExZWNkMTIzZDZhYTliZDljOTRjZTkxOGQyMCBsZWdhY3ktdHJ1bmsKKzMxNDQ3IGMzNDZkMDk1NzkxZDc4ODg1N2Q2MGY0YTVkODE5ZjBmMjk0ZjMyYTkgbGVnYWN5LXRydW5rCiszMTQ0OCBiZTM3MWZmYzRjZDA3YTFhZTUxMTNhN2VjNTUwNWQ4ZmI5ZGIwZTk2IGxlZ2FjeS10cnVuaworMzE0NDkgNGI1YzJlMDI1YzVlZjVmODkyZGY3ZWQ4ZGJiNGE0MzJhZjQ0N2I1OSBsZWdhY3ktdHJ1bmsKKzMxNDUwIDhlNzQzMmNkZjdkOGZjNjU0YWNiYzlhNDE2MGY4MTE2MDc2MTUxNzAgbGVnYWN5LXRydW5rCiszMTQ1MSAyNzU5YjA0OGRhOWI2ZjQwOWRjMTljMDQzYzNmZDg0M2JiNTkwMzU0IHJlbGVhc2UyMi1tYWludAorMzE0NTIgZWZjNDY1ODEwZTFlZGFjOWZmMTFhYTgyOWM5ZTJiYzJlNTgzMDk5ZSBsZWdhY3ktdHJ1bmsKKzMxNDUzIGVjMTA1MmVmNzNiYTg5YzQ3M2E0N2FkMzI5MzZiOWZjMDRhZDdiZDIgbGVnYWN5LXRydW5rCiszMTQ1NCAzMDE4ZjMxZjY4MzA5MjNiOTA4Y2ZjY2VmMTg1MzY2NjU1YzM1NWUzIGxlZ2FjeS10cnVuaworMzE0NTUgMmM0YWIxZGE2ZWI0N2VhMThjYTY0ZjZkYjg4MTYyNzExYWM5OTBmMCBsZWdhY3ktdHJ1bmsKKzMxNDU2IGJlZGFjYTk4NTNmOTA0Y2IzYjliNDgxMzc4ZmQ0NmNjOTM0YjQwYmQgbGVnYWN5LXRydW5rCiszMTQ1NyA4NGQzMDliNjc2ZmE3Yjc3MTI4YjQ5YTJjYTAwM2QxZTFkMjAyNzQ1IGxlZ2FjeS10cnVuaworMzE0NTggZTMxYjM5OTMwYTMxMjgzNGVjZGJjODczNWZkNTA0MmY3MWZkNmI0YSBsZWdhY3ktdHJ1bmsKKzMxNDU5IDNkYTMxNzc4ZWNkNzI0ZjhhMTQwZmU3NzQ2ZDQ0M2QxZjVhM2EyMjIgbGVnYWN5LXRydW5rCiszMTQ2MCA4NTBjMGRhMTAxYjYzZWJiZWJjNDZhMmNlODc0ZDRlODcxZWUzZmJiIGxlZ2FjeS10cnVuaworMzE0NjEgMmQ1MDA0OWJkMjFkZjdjYWExMWVjMmIxZDUwNTM5ZDc5OTZlOWNjYyBsZWdhY3ktdHJ1bmsKKzMxNDYyIDcwZTI5ZWY5ZmE2MmYwMWQ0ZjNiM2Y3OTJlNzVjNDBlYjU3OTliMTcgYXN0LWJyYW5jaAorMzE0NjMgYWM2ODNhYzY3NTlhZmNmZjU0Mzg0YTQ3MTc5MmNmYTAzMDczZjBhMSBsZWdhY3ktdHJ1bmsKKzMxNDY0IDQ0ZjNlMzE1OTI5YjllNGQ5ZmRmMzNkZjlhYTlmYzM3ZDIyZGZhZDIgbGVnYWN5LXRydW5rCiszMTQ2NSBmNjdhYjZiNjY0NTQwYjQyZDcwYWFkMGY0ZmVhMTcwMWJmYWQyNjBkIGxlZ2FjeS10cnVuaworMzE0NjYgODZiNTA2ZGJlYTE4MDMyZmYxY2MxMGU1OGNmODBhNTA4ODUwNGJjYSBsZWdhY3ktdHJ1bmsKKzMxNDY3IDFhZmFmZWQ5ZmE3NzU1YmMzODY1NDNkZTcwOGVmODI5N2RmMzNhMWEgbGVnYWN5LXRydW5rCiszMTQ2OCA4YzIxMWNjZGUyYjRiNGQ4YzU1YmUzNjRhNGY2MGFmZDdmYTk3MjJkIGxlZ2FjeS10cnVuaworMzE0NjkgYzk0MDFhMzZiYWU3MTRmMGNkNWYxNDFjZDE3ZjQ2NzMyNmVhNTg3ZSBsZWdhY3ktdHJ1bmsKKzMxNDcwIDhjNmM3OTc3MjdhOTM1ZmIwNTc5NTMxY2VjMzkwZGZmNWM5NWFhOWIgbGVnYWN5LXRydW5rCiszMTQ3MSAxYmQ0ODU3MTc1NjQ2MjYwYjlhNDUxN2E3NzI2MTAxNmIwNDM1OGUwIGxlZ2FjeS10cnVuaworMzE0NzIgMTQ0NTFkZDNhY2IwNGQxYWRkODExYWMxNmQ0YzA2NmJkYWYyY2ZmNiBsZWdhY3ktdHJ1bmsKKzMxNDczIDkyNTVmYmRlNDNmMzYyZDFjMDRmMzRkZTQ2M2ViN2E3MmYwZjEwOTQgbGVnYWN5LXRydW5rCiszMTQ3NCAzYjMwZjY2MzYyYmUwMDU4Nzk0NGFlOTY5YzY5MmIwZmFjMWUyNjU0IGxlZ2FjeS10cnVuaworMzE0NzUgYTY5NjJmNTJmMjM5ODFhNGMxODljOTQzYjM4Zjg0MGI5OGEwMTc4ZSBsZWdhY3ktdHJ1bmsKKzMxNDc2IGI1NTYwYWU0ZDk3MWRlMDU1MzMyZWI3NGNmMGZjZTBiNmY5MTRkOGUgbGVnYWN5LXRydW5rCiszMTQ3NyBkYWU3OWQ3ODMyMDU3OTYwNmM1ZmRjYzNiMjNjMjU5YTRjNWMyMjc2IGxlZ2FjeS10cnVuaworMzE0NzggMGYwMThkZjk3NGRiYjljODExMzk4ODVmZjFlMDE1YzViY2RiYTc2OCBsZWdhY3ktdHJ1bmsKKzMxNDc5IGRiMWQ0NTg0YTVlMWMxMTVjYjA4MmEyNWZjOTE3Y2U0ODY3ZDc5NTcgbGVnYWN5LXRydW5rCiszMTQ4MCBiNGVlYjBiYmRkNDhiOGNiNDViN2QxNDNmMWQyN2M3ZGUzZmFhNzNhIGxlZ2FjeS10cnVuaworMzE0ODEgNDdhNzY0ZTQzZTkwMTg1M2JmZThmMzQ2MDQ2YjNhNThiZGUwZGVlOCBsZWdhY3ktdHJ1bmsKKzMxNDgyIGI1NDBlNjA4YmI4YTZiY2IxODQ2MGNlNjE1ZDY2NDc2YWY3YTEyMjQgbGVnYWN5LXRydW5rCiszMTQ4MyBhYTg4YWVmM2FiMGVlYTg0MDM3MzMxY2FkOGI3MjY3MzdiZWE4ZDQwIGxlZ2FjeS10cnVuaworMzE0ODQgMWU3NmFlM2MxMTU0ZDZlZjFhZmJjYTI2ODcyYTFiMzBlZjY5ODFhNSBsZWdhY3ktdHJ1bmsKKzMxNDg1IGYzMTA4OTQxMDdjYjE5NTNhMWJkNWE3NzliZWU2ZGI1MjdiZmE5NmIgbGVnYWN5LXRydW5rCiszMTQ4NiBmMzMxMGRjZWYzZjhiNWUwODlmNjdjNDNmYTc0NzFlNzAyYmFkYjE2IGxlZ2FjeS10cnVuaworMzE0ODcgNzBlMTk2YWY0NzZkNDhlZWMzNTFmZjYxMGIwMzVmMmI5MGY5NDU5ZCBsZWdhY3ktdHJ1bmsKKzMxNDg4IDkxZmM5NjM3ZTU2YTA5YzIwMzBkNTUxY2ZmZWVmMDM2MjExMDEwYmUgbGVnYWN5LXRydW5rCiszMTQ4OSBlMDdiMjFlYTNjNDVkZGY0NDkzMGVmZTkxYTA4MTYyOGQ3MzYwMWQ0IGxlZ2FjeS10cnVuaworMzE0OTAgY2M0YWQ5YWZhMjFkMzM4ODBlZTJkMjIzMmNjZWY1YmIxNmVkNGI1YyBsZWdhY3ktdHJ1bmsKKzMxNDkxIGNiM2YxODkwOGNlYmVlMDViOWM5MTg0MjAwZjkwZWU1NjQxYTVmMTAgbGVnYWN5LXRydW5rCiszMTQ5MiBhYzEwNzI5ZjA5MzJkMDlhYjk3OGI5M2QzMzc4MDFmZWVkNTMwY2E3IGxlZ2FjeS10cnVuaworMzE0OTMgZTI3MzQyYTY0MTczN2Y3ZTAwNDY4MTdmMWU3MmRjOTRhZDBiZjk4YyBsZWdhY3ktdHJ1bmsKKzMxNDk0IDIyNjQ2MzQ0NTY5NzIwM2EyNzUwMzViZDA2YjMyOTZlOGNjMDg4NmUgbGVnYWN5LXRydW5rCiszMTQ5NSAzYmFhYmQwMjdjYzRkNDEyMGU4ZTEyNzBiNzUwMDMyZmU2MzNhNzhlIGxlZ2FjeS10cnVuaworMzE0OTYgOGRjYzUyMGQzYTI5NjdhMmJiYzU2MTYxZjZiMmM2ZDI1YzhkY2E5MSBsZWdhY3ktdHJ1bmsKKzMxNDk3IGIyOGQ0ZmRlOWU5ZmI4ZjNjOGI5MGNlOTNkODg3OTM1NGJmMmUwYzggbGVnYWN5LXRydW5rCiszMTQ5OCA0MzM3YTg5OWZkMTMyNDdmMzI0MjFlNDEzOTEyYjU2ZDFhNWUzYzJmIHJlbGVhc2UyMi1tYWludAorMzE0OTkgNDdjOTQyMTM1OGRkMDQ3ZDI5YzMzMjA3NTM4YjBjODY2NTFmMTQ1YSByZWxlYXNlMjItbWFpbnQKKzMxNTAwIDRjODVkZTI0N2VlZGI5N2Y0NGM5NDlmZjhkMzg2YzY0ZTIwZWMwYWMgbGVnYWN5LXRydW5rCiszMTUwMSBlMGE4YzMxMTUwMDVlMWMzMzllOTM2YTY5MDBhMjdhY2Q3NWRlM2ViIGxlZ2FjeS10cnVuaworMzE1MDIgMmUwYWE2OGQ0MzRmY2M0MDZhZGE5ZmY1YTM5OGE3ODY1MmFkYjBhOCBsZWdhY3ktdHJ1bmsKKzMxNTAzIDUzYzgwMjkyNzIwMmU4NDI3NTM4NDQ2YTQ1NzkzMWVlNTNkNTAyNDAgbGVnYWN5LXRydW5rCiszMTUwNCA4ZmM5MWY1MGI4NjE1MDY1ZDZmY2NlZThmZTgzMThkZmI3ZDg5OTM4IGxlZ2FjeS10cnVuaworMzE1MDUgZDBkMjlkZjJiNjM5MDA1M2Q1YjNkYjQ5NTk5NzAzNTI1MjRlYTVhZSBsZWdhY3ktdHJ1bmsKKzMxNTA2IGNjOTViYjc4NzBkYzU0N2MwY2M4ZTgzNWZkNzQxOGU2N2Y3OTFhMzUgbGVnYWN5LXRydW5rCiszMTUwNyBkNWVhMmI2N2I1ZjQ0M2YzYzY1NzVmY2JkZmM4YTYwMjc0NzRlYmExIGxlZ2FjeS10cnVuaworMzE1MDggMGZlMzIxZTc4YWQzMWExYmFhYmQ5NjVkNTU3OTE2MTcyODdhNjM0MCBsZWdhY3ktdHJ1bmsKKzMxNTA5IDRiOTlhNzAxZGVmZTBlYjcwYjYzMTk4ODEwYTc2MDQyNTFiY2IwYzQgbGVnYWN5LXRydW5rCiszMTUxMCA5NjMyN2VjNzZkOWUwMmI4NDMxMTU4ZDI0NjFjMThjYzNlNGZkOGFmIGxlZ2FjeS10cnVuaworMzE1MTEgZTAxZDVkYmI2NmE0NTkwMTFlMTRjZmM4MmI0NzAzMGMzOTI3NjA5ZSBsZWdhY3ktdHJ1bmsKKzMxNTEyIGViMmE5ODRkMzc0NzNlY2RlNzM1ZDI1YmJlOTY2OGFiNjMyNGExYmEgbGVnYWN5LXRydW5rCiszMTUxMyAzODdhNDEyMmNiZDFlNjZjMmRiY2M1Y2U1MzE5ZWI2ZTNiNmJjMjRjIGxlZ2FjeS10cnVuaworMzE1MTQgOWUwZjIyNDIyNzdiZmMxZmM0MDJmMTQ2MDJiNGE2NzdhZGYxMTBhZSByMjNhMi1icmFuY2gKKzMxNTE2IGNlZjdjOTVlNzQ4YzFjYzY4ZTk0YjlhY2IzMjU0OWRmYTkzOTJmY2EgcjIzYTItYnJhbmNoCiszMTUxNyA3NjUwMTk3NThlOTUxMDJhMmJhYTFjYjIyYTAyYmM0ZDg5Yjk5MTY0IHIyM2EyLWJyYW5jaAorMzE1MTcgNzIxYjZmMTgxZmNiOWE5NDIwYmNhODhkN2MwZjVmODU0NzQ4MjNjMSByMjNhMi1icmFuY2gKKzMxNTE5IGM0YjkxOWZhMGJlM2ViOTRmNzNjNzQ4YjY4ZGFhNWJkZGY5NmY1OWYgbGVnYWN5LXRydW5rCiszMTUyMCA0ODA5ZmIwZTg2NjAxODg0ZjhmM2UwY2M3NTg2Yzg0YmQ1N2UwYmQyIGxlZ2FjeS10cnVuaworMzE1MjEgZjU5ODcwOTc2MTQ2ODYwYmFiYzVkMzY0ODY1ZTZkN2RjZmJmMTQ0OCBsZWdhY3ktdHJ1bmsKKzMxNTIyIDY1ODYwMjEyNGRmNTI4MjNhNjU5MmE2ZDY1OGRhZWY1MDZhMWFiN2UgbGVnYWN5LXRydW5rCiszMTUyMyAyYzc1MTkzNmY2OTc2N2E3YWY0MzQ5ZDFkY2ZmNzI1M2RhZTllZTdmIGxlZ2FjeS10cnVuaworMzE1MjQgYjI2ZjU3NTg0MTRhMGYxMzUwOGYwYmE0OWFlYjNlNzI5YjU3MzI5MCBsZWdhY3ktdHJ1bmsKKzMxNTI1IGU3YjI2YzNmMzU2ZjU3ZDM1OWM1NTA5M2Y2OTJmOGE0Njc3NDI2MWUgbGVnYWN5LXRydW5rCiszMTUyNiAwYjNkYjBlZGIxNTFlYzAwN2ZjZDNmYjUyNGJmZDc2NGNmNDgyMjZhIGxlZ2FjeS10cnVuaworMzE1MjcgNTM2N2NkMGVlYzQ3N2M3NTkwYTMwZDIwZWUxNjlhZTQwM2Y5NzdhZCBsZWdhY3ktdHJ1bmsKKzMxNTI4IDQ0ODk5MThhNGNjZGI5MDM2MDI0Y2M4M2IyNzZiOGE5OTliMDVjOGUgbGVnYWN5LXRydW5rCiszMTUyOSBiZWVhNGYyMWM5ZjA1N2MzYjEzOWZmOTY4MGY1ODE2MjYxYjBlODM4IGxlZ2FjeS10cnVuaworMzE1MzAgZTI2N2VkMTAwZDg1ZmNhYWM5NTZjMDkwMjk4ZjExYjgxMzE5YzczYiBsZWdhY3ktdHJ1bmsKKzMxNTMxIGUxMWExNzhiYjQ1M2ZhNDQ3NmQxNGE1ZGRiMTY2NjY0MWRjN2NkNzQgbGVnYWN5LXRydW5rCiszMTUzMiAxMDdkOTg4OTAxYTBmOTNjNDY4YWM5MTA1MDc2NjAxMDEyMjg3MDNjIGxlZ2FjeS10cnVuaworMzE1MzMgOWUzOGY4MTcwOTJmZWYwOTJhZGY3YWM0NzM0ZGE2YzA3MTE4ZmQ2OSBsZWdhY3ktdHJ1bmsKKzMxNTM0IGUyN2Y1OGE1MDczNzA0ODI5YzdkOWIxMjdhNzlhNTNhN2EyMjliNmQgbGVnYWN5LXRydW5rCiszMTUzNSA4ZjcwNjAyZmJlYmIzYzNjZTE3NzFhMDRmOTBkMDIwNDYzODY5YzBjIGxlZ2FjeS10cnVuaworMzE1MzYgMWQ5MmMxNWJkMGU3MjU4OTEzN2RjZDY0ZGUwNGI0OTM4OWY2MWU2OSByZWxlYXNlMjItbWFpbnQKKzMxNTM3IDczOWVjZmI1ZjE1ZTg4OWMwZmYxMThjOGUyZWEwNGIxODRmMzI5NTIgcmVsZWFzZTIyLW1haW50CiszMTUzOCA3N2JlZjZhYTQ4ZTU1ZmIwZDg2YThiMThkNDMzNjIyMjAzMWFjYTNmIHJlbGVhc2UyMi1tYWludAorMzE1MzkgMTZiMjUwMzIyMTdmZjUxMDEzNmE5Y2ZmYmM3MjkxYzMyZGI1Y2Q0MiBsZWdhY3ktdHJ1bmsKKzMxNTQwIGQ5MmQ5YjZhOGE3ZDNjMjY4N2JiNTFlZjAyN2I0YjVjOTk1YTQwN2QgcmVsZWFzZTIyLW1haW50CiszMTU0MSBlYjVlMjk2MTczMTA5ZDBjY2YwOThmZmFiOWYxNWI1MDY5ZGFlNTU2IHJlbGVhc2UyMi1tYWludAorMzE1NDIgNWNmMDkyMWY0Yjk2MjYyNWU5ZGFlMmYxYTFjYWZjOTVjYzRiNTU1YSByZWxlYXNlMjItbWFpbnQKKzMxNTQzIDJkZjkyMDQ5ZDkyNTAxN2JiYjg2MDE1MmFjZjdhYjc2ODQ0YzZiMTYgcmVsZWFzZTIyLW1haW50CiszMTU0NCBhNGY5ZDkxYTMyMWE3OWRmNDhiNzU3OTU1ZDI2ZDIxNDMwZjZhYTJkIHJlbGVhc2UyMi1tYWludAorMzE1NDUgZmUxMGVjZThiYTY4YzRhZWZhNDhkMTMzNzM1NzYwN2UzYWY5ZTE3ZCBsZWdhY3ktdHJ1bmsKKzMxNTQ2IDdhYTIxNjM4ODlhY2Y4N2YwNjU0OTFhZGE4MTUwMzk0M2U1ZTJhNDkgbGVnYWN5LXRydW5rCiszMTU0NyAwZWI5NDgzNjQ5OTBmYjk5MTUyNGRiNDY3Zjk1MWQwNjRiMzRlMGY0IGxlZ2FjeS10cnVuaworMzE1NDggZmFjZmY1MjJlNzQ0MmNlMDFmYThjYjM4MGI2NTJjNWZkMTM4Y2QzNyBsZWdhY3ktdHJ1bmsKKzMxNTQ5IDcyOWExYzJlYzRlOGUwZmRhMmRlNTNhM2ZkN2JhMTQyYWRlZGY1Y2UgbGVnYWN5LXRydW5rCiszMTU1MCA2MTI4ODNlYWY1MGM2ZTcxY2ExODcwMDhlNmY1MWU5OWY4ZWI3MTVlIGxlZ2FjeS10cnVuaworMzE1NTEgNzlhZDYxNTZkNmM0MjQ0NjU4MTdjNWJiZTZmNDk2OGY0YjFhNDYzNSBsZWdhY3ktdHJ1bmsKKzMxNTUyIDA1NmZmYTU1NDUxN2E3ODg3NzdkZWViZDE3YjIyNDMzN2U1ZWI5MWUgcjIzYTItYnJhbmNoCiszMTU1MyBhOGMwYWY4MjI4ODg0NmU4YTk1ZWFmZTY4YjAwMmY0NmUzMmYxYTc5IHIyM2EyLWJyYW5jaAorMzE1NTQgYTJlOTcwNTg4ZTViYjY4ODAyZWFjZjk5MjgwMDI5MDhiM2FlNTFkYyByMjNhMi1icmFuY2gKKzMxNTU1IGJjZTNkZjA3NWYzNzgwOTNiMjgwZjRmMGYzMmI1ODQxZTAzMjhlMWUgcjIzYTItYnJhbmNoCiszMTU1NiAzYmJjYzNiYmE1NjBjOGI0NjczZjMxZjhhZmQxZjg2YmYyY2RhNTY0IHIyM2EyLWJyYW5jaAorMzE1NTcgYjg0OTQ4MmM3MGM2ZDlmMGI1NTAyY2MyYWVhMDI5OTViYTkzY2YyNCBsZWdhY3ktdHJ1bmsKKzMxNTU4IGZhYzc2MjI4M2FiY2NhZjEwMjZmZmNjMDBjZDBiYjc1N2YwOTg2ODIgcjIzYTItYnJhbmNoCiszMTU1OSAxZTkwNzQ2MmU4M2FkYmNmNTRkYmE3NTRlZjQ0MDEwZTYwZThmOWZjIGxlZ2FjeS10cnVuaworMzE1NjAgNzhjOWM0YTAxOGNkMWEwMzhiN2ZhZTU5NDM0ZGMxMmFmMmExYWIzMiBsZWdhY3ktdHJ1bmsKKzMxNTYxIDMyYTBjMmY0MjJmMThkZTkxNjRlMDMwMTFlNjEzNzk4YTA4YTNmM2MgbGVnYWN5LXRydW5rCiszMTU2MiAyMWE1MGMzMDhkYjQ1OTJlZDBmOGZkNWZhMDk0NGNhZTQ0YmYzNzM4IGxlZ2FjeS10cnVuaworMzE1NjMgNWRmYWZmOTgwOTEwMDFkZDZmMjVhYjIwY2M3MzQxZjUwZGViMTk0NiBsZWdhY3ktdHJ1bmsKKzMxNTY0IDg3MmM2ZjIwMjhmYzRiN2YzNmZmZmY1YzM1Y2Q1ZWQ2ZjU4ZDRiMzIgbGVnYWN5LXRydW5rCiszMTU2NSA4MDg0MzdiODNiMTUxODY2YWQyM2IwOThlNWI1ZDU5MzBjNTA0MzZjIGxlZ2FjeS10cnVuaworMzE1NjYgNjFmYTZiNTVjMWRlMmQ2NWE0ZTYzMzJkMWE4OThlZTA1Y2NhMWNhNSBsZWdhY3ktdHJ1bmsKKzMxNTY3IGU2M2YxZWNjZDI1MGRhZDM5YTVlYjkxODhhOTBiODNhNWVkM2RkYTEgbGVnYWN5LXRydW5rCiszMTU2OCA5MDY0NTk2MTRiNWU3MTJiNTE4YzkxNjI5ZTg1M2ZlMWQwZmJjOWYwIGxlZ2FjeS10cnVuaworMzE1NjkgNDNhOWVjYmQ5NjA3Y2EzM2QxODcyNzkxNmE4M2E5MzVkMDVmNGQ0YiBsZWdhY3ktdHJ1bmsKKzMxNTcwIGFiZDU3YzUzNThiZDdhMGVhMDMxMDJlOTgwMjkwMzAwNGE3MzllMjEgbGVnYWN5LXRydW5rCiszMTU3MSA2ZTIwYjA0OWVkNmY2YzQ1YzgxOTU4M2IxMThlZTA3MDNmZDEyZTU3IGxlZ2FjeS10cnVuaworMzE1NzIgMjVmZDI4YzhiYjZiYWU5YTgxZTMzNmYyZWI1MmQ1MjU3YzBhNGJkZCBsZWdhY3ktdHJ1bmsKKzMxNTczIDkwNGE4YjgyMmRhZmJmYmM2ZWZhMjQ1ODU2OWYzNmZlMTRiZjc3MTMgbGVnYWN5LXRydW5rCiszMTU3NCA1M2JlZjIwZjg0Y2NkMmU5MjM5OTNiY2Y1Y2ExZjJhMmZkYTVmZGQyIGxlZ2FjeS10cnVuaworMzE1NzUgMWMyYzk3ZDM0NTYzODRlNzJiOWYxYjE0MGQ5ZTUwZmUzZWE5ZGFjYiBsZWdhY3ktdHJ1bmsKKzMxNTc2IDkxNjI0YTQ3NTM3YzcwMWQ1OGU4NGZjYzg3OTMwMmEwMGIxNGVmMDAgbGVnYWN5LXRydW5rCiszMTU3NyBmMzRmY2Q2M2FlMjhlMDgzNTc3MjZjZjhmZTdmZjI5MWNiNTA4YzAzIGxlZ2FjeS10cnVuaworMzE1NzggNTNmZmFiNWRiMDE1ZGQ3YWM2YWI4YThhZDY1N2Y3ZGM1N2QwYmNiMCByZWxlYXNlMjItbWFpbnQKKzMxNTc5IGJlMDlkMzI2ODdkOGM1ZWY1NzlkNTlkMGMxMmM0NGNiZDgwYTRiMGEgcmVsZWFzZTIyLW1haW50CiszMTU4MCAzZGRiMDkyYWNlYThiOGFlNTMzZTI4YmEyZDU2ZTM3NDcxY2QyM2NhIGxlZ2FjeS10cnVuaworMzE1ODEgNGY2YzYzMzA4MDYzMzdkNTBiMjg0Y2YzOGJjZDhlNjFiN2QxNDJhYyBsZWdhY3ktdHJ1bmsKKzMxNTgyIGQ4YjlkN2MwNDE0NjU0M2U3MWFiZDVmY2IwZmRhYzc4YjMxNTRjM2QgbGVnYWN5LXRydW5rCiszMTU4MyAxYjY1MzhhYTA5NTkxZTFlOWI0MjYwOGI3ZWE2YTZkZTBkOTQwODQxIGxlZ2FjeS10cnVuaworMzE1ODQgNGVhMzc4YTcxZjk2NmE4YmQ4ZjAyZDY2YzM1ODI4Y2M4YmQ1YjBhZCByZWxlYXNlMjItbWFpbnQKKzMxNTg1IGRiOTJjNzdiMDVlMjZiNWNlMzkwNWM3YjIyM2I1NmE0OTJhMDYwNGQgbGVnYWN5LXRydW5rCiszMTU4NiA0ODZhMGY1MTZkYjAzZDE3YzcwODdmYTQ1YjllYTQzODRjMmU2ODkzIGxlZ2FjeS10cnVuaworMzE1ODcgNzg0ZWQ2MDViNTEzMGJhYTZmNDNmYjBiYTJhZjQ0YWEyY2Q0MzdmYiBsZWdhY3ktdHJ1bmsKKzMxNTg4IDc4MDJkOGMxYWRhYzg0MGIyMDQyODI4NzFlNTdlMzI4Y2U4ZGUyOGIgbGVnYWN5LXRydW5rCiszMTU4OSAyZThmMDUzMTkxOWJiMmYxNDQxYzJlYTc3ZDVjNDgzMWVmNTE3ODIwIGxlZ2FjeS10cnVuaworMzE1OTAgMTkyYmQ2ZTEzNWFhZGE1OGY1NzVjMzczNzg1ZDdlNGUyOGU0YmM4OSBsZWdhY3ktdHJ1bmsKKzMxNTkxIGIzOGNlYmM3NmQ4MjUxZjVhMjlkYmMzMDE5YTJlYmVjMGRlYzM1ZWQgbGVnYWN5LXRydW5rCiszMTU5MiA1YWJjNWQwODgxNGY5NjhhM2FjZGI0YzNlMzc1NWE1MGU4OGNiYzRmIGxlZ2FjeS10cnVuaworMzE1OTMgODIzZDViMWYzMmUxMmViNTk5NTUzM2FhNTZlMDQ3ZjJlOGI5Y2M0MSBsZWdhY3ktdHJ1bmsKKzMxNTk0IDBhODliNDA2YzczMmYxZjZhMjM4YzJhMTk4NTliYThiZTQ1ZGNhNzQgbGVnYWN5LXRydW5rCiszMTU5NSA0OThkYjFiY2Q2NjQ4OTRjYWQzYWJjYzM3Y2M4MzQ1NTUzNWJmYmQ3IGxlZ2FjeS10cnVuaworMzE1OTYgY2E1YjBjZDdhNTI1MDQ5NWNkYjBhZGNkNDM2ZTE4NmY2YWZjOTMzNCBsZWdhY3ktdHJ1bmsKKzMxNTk3IDQwMTM0MDcwZTZhNmEwZGRiYjFmN2VhNzg4NDlmOGZlN2FlM2Y3YWEgbGVnYWN5LXRydW5rCiszMTU5OCBhOGM4N2EwYmViOTgwMzYxMDkxNWNkMDY2MTNiMDMwNzZiMGY4MzFmIGxlZ2FjeS10cnVuaworMzE1OTkgMWEwYzIzMWM2YjBjYWU4MDQyOTQyNmYxODk5YTBjMTg2ZjZmNzk5MyBsZWdhY3ktdHJ1bmsKKzMxNjAwIDcyM2M1NDU3MzA3ZDkzODVhYjJhYWJlZTE5MGU5NDAxNjdmZjkyMjIgbGVnYWN5LXRydW5rCiszMTYwMSA3ZjkwYjViNzAwMWVkMWZkODhmOTgzZGI1ZjAzNWI4MTVmMmNjMGJhIHJlbGVhc2UyMi1tYWludAorMzE2MDIgZmI3OWNjMjYzMGMxZWU0MjQyYmI3MjE5YzA1OGQ3YjhiZjI0ZDE4NiByZWxlYXNlMjItbWFpbnQKKzMxNjAzIGY4ZmM1ZTE0YmZlODdhNWNmNWRkNzVjMmQxNjMxZTRjNzA0ODg1MmIgbGVnYWN5LXRydW5rCiszMTYwNCBjNzU2NjE0NDQ2NTUzODgzMjVkMjAxMzVjZGJkNzYyNWU2MmZiMTEwIGxlZ2FjeS10cnVuaworMzE2MDUgYzM2NjVkZjY2ZDZkNWIyYzhkYTliOTY1YmIxY2MwMjkxMmUxYzkxOSBsZWdhY3ktdHJ1bmsKKzMxNjA2IDMyNDg5NmI3ZjRlMWUyNTkxOGFmMWE4ZTk5MzUzNDQ2MWVjY2E5NzggbGVnYWN5LXRydW5rCiszMTYwNyBjNjFlZjE4M2NlMmYxNTY0NWM0YTQwMGFjMDFmYTY1YTlhOWM4NjIyIGxlZ2FjeS10cnVuaworMzE2MDggZDY3MzA1OTA1MjZjMzE0YzVhZTBmNmY4YmE2YTcxZTM2NDdhMTEzZiBsZWdhY3ktdHJ1bmsKKzMxNjA5IDlkMjk3ZDNkZTM2ZjU4NjFhNWRiNzY3ZTljYTc0MGViYmUxNTdkNzUgbGVnYWN5LXRydW5rCiszMTYxMCBmNzJjMzgzYmNjNDVkNGY4ODQ0ZjMwM2M0NDYxOTQ2NWFhMTVlY2ZjIGxlZ2FjeS10cnVuaworMzE2MTEgODZkODM4NGQ4ODEwMmZlMjg4NzIzMDE3NTY0YjEzNzZhMmI2YzVlNiBsZWdhY3ktdHJ1bmsKKzMxNjEyIDg2Njk2NGM4NWI4ZTI2ZDgzOTVjNDE3NzY5ZWE0ZTUyNWNjZjM4MzIgbGVnYWN5LXRydW5rCiszMTYxMyA1YjNkNTliOTc4YTJkNjlmMTY2ZTNkOTcyYWFiMzIxZDJkZGM5YmM1IGxlZ2FjeS10cnVuaworMzE2MTQgYThhNjQzNjRhNzExZDQxOWQ2YThiYTVmNmJlODVkZWRlYTFiZmY5NSBsZWdhY3ktdHJ1bmsKKzMxNjE1IDA0NTVjZjg5YjEyMzk4YTBlNjhjM2U2NTNkYzQwODkxMDliZmY1OTUgbGVnYWN5LXRydW5rCiszMTYxNiBiMDQ2MjVjZWEwNjEzYWFkNmRhNjgwYTNmZjdiOGRmMDkyYTYxZThiIGxlZ2FjeS10cnVuaworMzE2MTcgN2ZkY2M0Y2ZjNzU5MTc1NTRlOWFkNzczMTE2N2RmYzJlYzc4YjlmMyBsZWdhY3ktdHJ1bmsKKzMxNjE4IDAwZGVkNjJkMjY3OGE0MzVmZDQwZDZiY2QwMDQxYjhiZDA5NmE2OGIgbGVnYWN5LXRydW5rCiszMTYxOSBmY2IzOWIwYTZlMzA2YzgwNThjZmU3NDVmYTAxZmRlZGRkYjlkZjcyIGxlZ2FjeS10cnVuaworMzE2MjAgYmI2YmQ1NDlmOTJhNzk2NGViOTY5YWZlMDRjYWE1MDlmZTAyNDU3YiBsZWdhY3ktdHJ1bmsKKzMxNjIxIGI4Y2I5MGZjMzUyM2QzNjg0OWE0YTA5ODgwYmQ5NjkxNTU3ZjhlNmQgbGVnYWN5LXRydW5rCiszMTYyMiAwYzg5ZGM2MjU0YmU4ZDg3NGVmMTBiM2M5ZmYxOGU0OGNjNjQxNjdlIGxlZ2FjeS10cnVuaworMzE2MjMgY2Y5ZDkxMjgzNDVjM2YxYjQ5YWRmY2RmNmVlOWNiMjdlODI5NzVmZSBsZWdhY3ktdHJ1bmsKKzMxNjI0IGE1ODc0NDUzYmYxN2M2NjA4ZTU5MmQ3ZmJhODJmN2IzZDk0NDg3MWMgcmVsZWFzZTIyLW1haW50CiszMTYyNSAyOTk2NWQwZDQ2NTA1OWQzMDg3NGU2Zjc4MGM1NDg0YWUxMjZjYzQzIGxlZ2FjeS10cnVuaworMzE2MjYgNDRiYTE1NzI1MThmNzAyOWRhNTRiMGNhMzYzYjkxNjdjN2VlYzExNyBsZWdhY3ktdHJ1bmsKKzMxNjI3IGY0MmZiYzdjN2Q4ZTlhYzJlMDVmZDQyZTc0MjAwMjFiZDA2YWZjMDUgbGVnYWN5LXRydW5rCiszMTYyOCAyNDc0MzgxNTI3YmJjOWM0MmEyMGQ1ZTk0OWQ3NTIyM2Q0YTA3NzA3IGxlZ2FjeS10cnVuaworMzE2MjkgNDY1NDA1YTE1OWMxZjQyNzdmNmE0ZTZkNDY3NGM4MTEzNzk1ODMxOSBsZWdhY3ktdHJ1bmsKKzMxNjMwIGQ5ZTljOTY0YjZhNDZlNTBkYWZmMzQ5MzZhNWI5ZTA3M2ViMjM3NmYgbGVnYWN5LXRydW5rCiszMTYzMSAxNGY2NWQ2NjEwODQ4ZTViYzk1NmI0NzY4ZDQ5YzhjODhkY2Q1NjYzIGxlZ2FjeS10cnVuaworMzE2MzIgM2M1YTg4MTQ0NzBjOWM0YmZhYjc1ZWM3MGQzNTYwMjNmNGQ4NGRlMyBsZWdhY3ktdHJ1bmsKKzMxNjMzIDA0YTkzYjdiZGNlNDk2MTE1YjEwNzhiOTdmMjkyY2MzZDk0ZTc0MWMgbGVnYWN5LXRydW5rCiszMTYzNCAxMmJhYjg3YTNkZDIzNDVjZTlhNDNhMDIzNDBmYjliOTMzYTUwODUyIGxlZ2FjeS10cnVuaworMzE2MzUgODk5ZjJkMjEwYTM0ZDg1NDBlNmEzZmY0ZGM2ZTQ2ZDRlOTY1MTM5NSBsZWdhY3ktdHJ1bmsKKzMxNjM2IGQ1YWFhNjdjMDk2YWYzNTY5MmUzYmRjOTQyYWVmZWJhODBhZThiYzMgbGVnYWN5LXRydW5rCiszMTYzNyA3NDhmMmU1YjgyOTM4ODJmN2ZjYmIyMTg5YTI4OWZjMmJjOTQyYjIzIGxlZ2FjeS10cnVuaworMzE2MzggMzEwMDg0MzNjNzRmYWRmOGJmYTliOWQxNmVjYjYwNGU1N2IyYzU1OSBsZWdhY3ktdHJ1bmsKKzMxNjM5IGQ1MGQxZmY0MmI1YWNlOGQ1NTYxNmYxMjA5YWE2NTFlNzNlZGI5ZWEgbGVnYWN5LXRydW5rCiszMTY0MCAyZDU5Y2EyOWYzODRkNzkyYjNhODE2YjllNWE1ZTIyMmNmYjZlZDc1IGxlZ2FjeS10cnVuaworMzE2NDEgN2U2NDkxMzgzMTJiM2ZmNGRkODJkYjFjZDRmNWRmNjVjNzQzNGRhYiBsZWdhY3ktdHJ1bmsKKzMxNjQyIDU0YjM1ZGE5ODc5ZTk4ODA1Y2ZlMTNiNTRkYzM2M2JhYjZjYTIwYmYgbGVnYWN5LXRydW5rCiszMTY0MyBhYjI3MTgzYzg5MjdmNjUwOTY1MTQ5OWI1NGYzOWJiNDcyN2IzNGMxIGxlZ2FjeS10cnVuaworMzE2NDQgZjRlNzJhMWE5ZjEzZTg2YzI2MmVmNDUzYzU1MjAyNzU1MTU3YTFlMiBsZWdhY3ktdHJ1bmsKKzMxNjQ1IDVlNWVlZmEyNWYzYWQxYmY1OTY4ZDBjNDI3MjFiODcwZjgyYWY1ZjkgbGVnYWN5LXRydW5rCiszMTY0NiBiZjg2NmFiMzlkZmYyYTU3ODc0NmI3MTM4ODQ1YmY0MTI3ZjQ1OTIyIGxlZ2FjeS10cnVuaworMzE2NDcgMmYzY2QzZjU0MGFkMWFhNTBkOGNlZTMxYjBiMTg5ZjIwZTZmZTg0MiBsZWdhY3ktdHJ1bmsKKzMxNjQ4IGQ5YjQ4N2I5MDM0YTQ5M2Y2NzQ5YzdjYTI4NjQyNjk2MjhkMmNhODggbGVnYWN5LXRydW5rCiszMTY0OSAxNTc3M2U3NThmYzczYWJjNDk1NzRjOWQ4ZGQ5ZTQwY2Y1NzQzODQxIGxlZ2FjeS10cnVuaworMzE2NTAgOThkMTA3MTM2MmYwNDBkNDM4ZTU3YWI1YThlNzNmYmUzOTAxZWZkNSBsZWdhY3ktdHJ1bmsKKzMxNjUxIGRkNmE2MjU3OGJjODY0MDY0NGY5YmExNDcxYmM0MWE2YjFmYTNkNzIgbGVnYWN5LXRydW5rCiszMTY1MiBkMzZkZDQxZTg5MGYyYmExOTZjMzgwZTE3NmVlNDZmODFkZjI0YmY4IGxlZ2FjeS10cnVuaworMzE2NTMgN2EyZjY4MzM5NWU3MjgyYzhiMzNkZmUyNzZhODYwZGRkOTQwZDk2OCBsZWdhY3ktdHJ1bmsKKzMxNjU0IDJjOGMyYzZiMmFiNzliMWU0ZjI2MjA4OTc5YTBmNTNjYjhhZDI3MWEgbGVnYWN5LXRydW5rCiszMTY1NSA2Mjg4OGE3ZWRmMGI1NTRmM2NkZDIwNTE4NmQ5NzZlYmE4ZDdhNWFkIGxlZ2FjeS10cnVuaworMzE2NTYgMTQ0NjNmNDc4MjQwMjI2OGFhZDM2NmIzZTkxNzQ1OTAwMjM4ZGFjMSBsZWdhY3ktdHJ1bmsKKzMxNjU3IDJmYzUyYmU3Nzk5OTEzNGQ3MGYyNTZmNTI3ZjgyZmY1ZDRkN2QyYzMgbGVnYWN5LXRydW5rCiszMTY1OCA5Mzc4ZjZlNTUxYWU3MjE2YTFkMGJmNTBlMmE4MGU1MmMyMzJiNjFmIGxlZ2FjeS10cnVuaworMzE2NTkgOWI0ZWVkNGJiM2UyZTRhMTgzMzljNTI5ODg3ZTYxNzYxYzRhNDQyMiBsZWdhY3ktdHJ1bmsKKzMxNjYwIDRmNGYyYTE1NDQ3ODQ5NTVhZTMxOGEyZmNiY2I1NmU3M2ViZDhmMTEgcmVsZWFzZTIyLW1haW50CiszMTY2MSA4Njk2OTVjYmEyY2QzN2U2M2FkNWQ0Y2I5MmNhNTVhYWU1OGI0NWRmIGxlZ2FjeS10cnVuaworMzE2NjIgZDI0NTY0ZTdlOTk5Y2RkY2M5YWEzZDI1NzQ4NGVjMDU1ODY1N2NmYiBsZWdhY3ktdHJ1bmsKKzMxNjYzIGMyNGEyM2IxZjE5OGFmMGI1MzU3MTljYmE3YTY4NjgyZmY2Y2U1N2QgbGVnYWN5LXRydW5rCiszMTY2NCAzOWNiOTE3YjVmN2FiNGJhZTkyNDJiNjBhZTE4ODEyZmNiMTZjOTBiIGxlZ2FjeS10cnVuaworMzE2NjUgZjE5ODFlZTk4MjIzY2U1YWIyNTBlNzAwNjNhODA0OGQwZDMwZjAzNSByZWxlYXNlMjItbWFpbnQKKzMxNjY2IDg4ZTU4ZTNkNTgwNzczZTcwNGUxNjE5NWRiNjFmZGI5NjJhM2U0OTEgbGVnYWN5LXRydW5rCiszMTY2NyBmNDY5YTZkMDc3ZjFlOTUwOGU3YjQ0ZWRkZDVhNGJkYTc1ZDg4ZjUxIGxlZ2FjeS10cnVuaworMzE2NjggNGNjY2VmOWI0ZDU0NTc1N2JlMmEzMTQzNTZmOGM1OTdlZWE5MGQyNyBsZWdhY3ktdHJ1bmsKKzMxNjY5IDVmOTIzMTY1MzE5ZDVjYjY4Yzk1OWI4NjM2OGZlYmZkZmQ3Mzc2MWQgbGVnYWN5LXRydW5rCiszMTY3MCA4NzkxMzUyOWYyNDgwOThmOWU1NDdkMmI2YjU5Mzc3MjhlYTBiOWVkIGxlZ2FjeS10cnVuaworMzE2NzEgYTI0YWFiY2Y1ZWEyODE4NmI4NWQ2YTNjMTYwODkzZTNhNmIyNjU3NCBsZWdhY3ktdHJ1bmsKKzMxNjcyIGIwMDljM2VmMjdiNTFjNTM3OWIwM2I3MzkzODFhYTM3ZjAwOTM3NDkgbGVnYWN5LXRydW5rCiszMTY3MyA1MGVhOGRlZDI5ZDAxN2YzNzI1MzlkOGM1MzkwNzUzNDczYTU1M2FhIGxlZ2FjeS10cnVuaworMzE2NzQgMDQ3YjVkMDAwYWFhNTE2NGRkNzhiZTVkMTE2MDY3Nzc4NjVhZmU4NCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc1IDFkNjYyMzQyZTE5YTY0YjM2OTljNGJkNzdlMDlhOGE3NzExMmM3OWEgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY3NiA5N2I5N2U1NzE5MGNmZjczOTk4ZmQxOWUyM2E5ZjQ4NDY2ZWE5NThhIGxlZ2FjeS10cnVuaworMzE2NzcgZjlmMzAxMGZjODZmNzZhOTFiYzJmNTQwMTk5ODRiYTNjNWQxZTVkNCBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjc4IDljYTRhNjdiOTk3MzZmYmVhMDdkOGEwOTYyNDQwZjA5M2IzNTg4YmEgbGVnYWN5LXRydW5rCiszMTY3OSBjZGU0NDQxODQzMzZmYmRjN2I2NTZhNTBjYzMyOTdmNzQ3ZTNmYzc2IGxlZ2FjeS10cnVuaworMzE2ODAgYjUzNDU1YTUxYjc4MDk1ZjUzZDA3NjZlNmNmMDA2NjgwZDlkMDM4OCBsZWdhY3ktdHJ1bmsKKzMxNjgxIDY1NWEwODU1N2E0M2VjMTYyNGFiNjViMjIyNjZjMTcwOGI2NDYzOGUgbGVnYWN5LXRydW5rCiszMTY4MiA3ODliMjRkNjVkNDIwNDU3Nzg2NzhiYmY4N2Y0NDYzZjRlMjY4ZWU3IGxlZ2FjeS10cnVuaworMzE2ODMgZWIxNWRlNmE0YTRjZDA2ZDIwZWJhMDhmYTczMDIwYTQxODkxNzcxNyBsZWdhY3ktdHJ1bmsKKzMxNjg0IGIyMGEzNjg1ZDIzZTFkMWE2ZTM1Y2Y0MWVmNWJiY2ZjNThhMjQyNWQgbGVnYWN5LXRydW5rCiszMTY4NSBmOWRiOWRjNDU2YWI1NzAzODE3Y2U3NGQ0YTMyMjk3YjA2N2Y3Y2JiIGxlZ2FjeS10cnVuaworMzE2ODYgN2QwNGJkODk3NjYxODc0NWEwMWM4ZmY0ZjQzMjczZDNhMDVkMDRjNSBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjg3IDQxYTlhMDcyYzY4MTc2YWY2Y2M4ZDUyMGVkZDk3Nzk3OWE5YTU5MjEgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY4OCAyY2MxOWEzMjVkNjY3NjQwZTkzMjljZmQ0YTczOGM3MmJiZGJiNDYwIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2ODkgZGJmM2ViZWNhN2IxZGE2MmU2MjI5NTZlNTUyOTIwNmU2MjM4NjYyMyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNjkwIDM3Nzk2MWQ3NjYxMDVmZWUzN2Y0MDgyMTI3ODBlMmRkZDg3ZDFmYjcgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTY5MSAzOTkyY2E3MDBlNjU4MDMxMzRmNjYxYzY4NzI3YmE5NjcyMWQ1OTY2IGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE2OTIgYTNjZjA3YmFjMzczNjlmMmE2NWQ1MjY1NTg2ODIwM2NjMzVmOTQyMSBsZWdhY3ktdHJ1bmsKKzMxNjkzIDUyNGU1ZjlmODVlNmFmMDMzN2NhM2I4OTU2YzU4ZjBkMzZjYjRmN2YgbGVnYWN5LXRydW5rCiszMTY5NCA4ODg5NjU0YzBkZDVkMDk5ZjA1ODU4ZjA1ZDg5YjFjNTg4NjA5NGEwIGxlZ2FjeS10cnVuaworMzE2OTUgODQzZDVjNzg5NTJhODIyZWEwMTkyN2YwMmI1YWIwMDQzZmM1ZTVlNiBsZWdhY3ktdHJ1bmsKKzMxNjk2IDg5OGNlNGU5NmY1OTJiMGM1YjA2NWMxNTY0YzA5ZDQ1MWI3MTUzMGYgbGVnYWN5LXRydW5rCiszMTY5NyBmOWI3MDJjNTJkYWVhMjk5NjJjZTAzOTJhMzc1YTA2ZTA1ZDE0M2IzIGxlZ2FjeS10cnVuaworMzE2OTggMjgxNWMxYTlmNzM1ODM0YmU3NjEyYjA2YmMyNjlhMWNjNDBlNzlkNSBsZWdhY3ktdHJ1bmsKKzMxNjk5IDllNzM3ZDYzZjM4MDFlNzRkYmVkZjMwYzI1MmRmYWNjMzUwNmNjMzAgbGVnYWN5LXRydW5rCiszMTcwMCA0NGMzMTIzNjc0M2EwNzgxNTIxMGQwNGFlMTA1OTdhNTdiZjRiM2FkIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDEgMjk0NzQ1OWIwNzg5MjMyOTNkNzY4YmFkMDcwOWJhZWIyZjM4YmY0NiBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzAyIDkwMmZjZmQ1ZDY1ZDA5OGFlOGFiMDExMDk3YTM5OTBlZWE3NTA4M2IgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwMyA3NmQwNjE4ZjNmZTBkODc5MmI4NDJlNzU1NDMyMzYxMTJlNmUxNDNmIGZvbGRpbmctcmVpbXBsLWJyYW5jaAorMzE3MDQgYTgzNjFiY2ExYzVjYzc3ZTQ2YTExMWRiNGNkMGQ4Yzc4MmM5OGVjNyBmb2xkaW5nLXJlaW1wbC1icmFuY2gKKzMxNzA1IDVjMGRiNDFkMzhmOTM2MDliODMyNmZhZGVhMTJiYzRiYjkwZTYyZmMgZm9sZGluZy1yZWltcGwtYnJhbmNoCiszMTcwNiA5NWFiZjNmYzJiMmQzMzQ0YzQ3MTVmNjdkNjhiMGM4MzY0MDA5OGM3IGxlZ2FjeS10cnVuaworMzE3MDcgMTJkNGRmNzFiZGFhMzVkZjQyZWU2NDQ3MWVkYjU2ZjZiMWJhODFhMSBsZWdhY3ktdHJ1bmsKKzMxNzA4IGJkYTQ5MGZjMjY5MWViOTg3NzRkYmY5NGQ4ZGJkNTU2MTM2ZjAxNGQgbGVnYWN5LXRydW5rCiszMTcwOSAwZDg1NTI0MDhmY2RlMThhNzVkYmIwNjJjZDI3M2U2ODQ4Y2FlOTU1IGxlZ2FjeS10cnVuaworMzE3MTAgZTlmYzJjMTQxNjA4OWViODcwMTlmNzkzMDdiNjFmMTc3ZTNiYzYxMiBsZWdhY3ktdHJ1bmsKKzMxNzExIDZkNzhjNmJmMzFmN2QyYzhmY2ZhYzE3NzI2NGY1OWQyMzBjYzI2NmYgbGVnYWN5LXRydW5rCiszMTcxMiAxNzhkMTljZmYxNjM4MTMyZmM3MzAzZmRiM2FmN2IzN2Q0MTIyODQzIGxlZ2FjeS10cnVuaworMzE3MTMgM2ZlNzJhOTk0MTAzYjM1Y2QzZDNlMTllOTM2ZTU5M2I2MTQxYjMzMyBsZWdhY3ktdHJ1bmsKKzMxNzE0IDhhNzEzMDFhZmMyZGE2MDJiNjc5NGNjYzE4YWRmZjg0ODlkYjBlYWQgbGVnYWN5LXRydW5rCiszMTcxNSA0M2M3ZDhhMDg0ZmJjMzlkOWUyZTVlYzc1YWEwMzk5YTI4NmVmZjExIHJlbGVhc2UyMi1tYWludAorMzE3MTYgZTQwNTkyOWMyMjNlNTdjYjJkOGE0YjNmZDJjNjdlMDJiY2I4ZDYwZSBsZWdhY3ktdHJ1bmsKKzMxNzE3IDI5ZDgwMzQwZmQ0MTRmODQzMzYzMGM3MGVkNWI4MGI5NjkyM2ExZTIgbGVnYWN5LXRydW5rCiszMTcxOCAwMWFlZDcyZTMwOWU1MmMxZGJlNjBiYzBkZDdjYzQ3MjRjOThhODIwIGxlZ2FjeS10cnVuaworMzE3MTkgYmExYmQ2ZjZlNmVkYzU2MDhkYzY2MTI1NWU4NzRlYWRkNjI3ODk5YiBsZWdhY3ktdHJ1bmsKKzMxNzIwIGFjOTY1YTUwMmQxYjc3YzVkYTZiOTgxZGRkMGFlMmY0MTYzZDA1YjkgbGVnYWN5LXRydW5rCiszMTcyMSBhYjg1Yzc1NmM1ZGYzYzYxYmM2MzM0NDgwNGUyYWYyM2IwN2RkYWVjIGxlZ2FjeS10cnVuaworMzE3MjIgODkxMzdiZTI1ZTdhZDdlZTRmYTBkMGM4OGMwYTRkYjkwNjc3Nzk0MCByZWxlYXNlMjItbWFpbnQKKzMxNzIzIDg3NzA0Zjg5ZWEzZjVjZjM5YTE1YTgzOTQ5Y2QxZDVjM2NiOGIyZTMgbGVnYWN5LXRydW5rCiszMTcyNCAzN2NkZTA3OGI5MzMyYmQyOTI4ZmRlOTRmOTYxOGIwNTIzNzNkYzU4IGxlZ2FjeS10cnVuaworMzE3MjUgMzAzMGQ2N2ZiNGE1NjY5N2Q1NDQzZjg0MTdhZGY0NGU1ZTNlYTY4ZSBsZWdhY3ktdHJ1bmsKKzMxNzI2IGJjMmQwNzIzMDkzNGQ0Y2VlZWZmMWJhMWRmM2ZmOGFmMzg1YTQzMzMgbGVnYWN5LXRydW5rCiszMTcyNyBjZTM3NjBlOGU2NDA2YTc3NWIyNDA0ZmEyMmYwZjM1MzA4OTU1YTY5IGxlZ2FjeS10cnVuaworMzE3MjggMjRmZTAyMzkwMWIwN2I1YmJjMmE0MmUwOTlmYzc2NWUzOTk1MWM3MyBsZWdhY3ktdHJ1bmsKKzMxNzI5IGE2Y2Q5ZDZkNWNhM2E0OTBjM2QwMTc2MzRjNWVhNjNlOWMyZmU5NGUgbGVnYWN5LXRydW5rCiszMTczMCA1Nzc2ZmQxODhmMjA1NDU4NjgyYzNlMTY2YTcyYWI3ZDYwNmUzMTI3IGxlZ2FjeS10cnVuaworMzE3MzEgM2Y5MGQyMWRlYmU5NmUxODIyNTk0MjQwYTJjM2Y5ZTFmMzI1MmQzMiBsZWdhY3ktdHJ1bmsKKzMxNzMyIDM5NWViNTYxZWNlMTM2NzZjMGYyZWQwOGZmYWQ2OTQ5ODQ1YTkzN2IgbGVnYWN5LXRydW5rCiszMTczMyA0OGE1MTEzZGZlZjk4MTJiNjJlZDVmNzcwZmZmNTcyMDM4MzcwNDBjIGxlZ2FjeS10cnVuaworMzE3MzQgNTljYTMyMDBiNmU1MDM0ZTIzZTBhZjI0MTIyOTExYTc0MmQ2OGZiMCBsZWdhY3ktdHJ1bmsKKzMxNzM1IDBhOGU4NjMyYzYzMThiOGM1ZjBmNDM4NTk5MzI4MGZkNzg1NzQ3YjQgbGVnYWN5LXRydW5rCiszMTczNiAwNGRmOTY1ZDY3NWI3ZDdkM2NiMDczN2I1ZWViZjI3OGY4NmM0OGUyIGxlZ2FjeS10cnVuaworMzE3MzcgNTg1MjM1MmQ5NTIyMmJhZTY5MGE3YzBmNTA4YmUyMjgxYzYwNzgwNiBsZWdhY3ktdHJ1bmsKKzMxNzM4IGNkMjFiZTgyZjUwYmJjYmJlNzhmZTYzNTYzNmQ0MGRkZGQ5MDFhMWEgbGVnYWN5LXRydW5rCiszMTczOSBhMWI4ZTY1NGQ1ZmUxNWY5OWYzYzk5MmY0NzI1OTg2MGIxZDAzNDE3IGxlZ2FjeS10cnVuaworMzE3NDAgOTJmMWQwMmUyOGYwYTlhNGY1OWM3NTIzYzA3NTQ1OWYwNjc3MWE1OSBsZWdhY3ktdHJ1bmsKKzMxNzQxIDczNmFkNzNkZjViNDhlZmZjNjdlMDYwODYxNmI4MjY4MTI1ZWFmYjAgbGVnYWN5LXRydW5rCiszMTc0MiA0NmE4MWJkOGNhMGNkMDMxMTRkNmM3ODdmYWJmNmRhMmY0NmI2ODUyIGxlZ2FjeS10cnVuaworMzE3NDMgMjlkZGRjMDFiNWVjMzc2OWRmMzRjOTUzZmMxODdiYjdlODA3MWQwYyBsZWdhY3ktdHJ1bmsKKzMxNzQ0IDhlNjA3MTg1Njg5YTRkNmFhYTJlMDBkMjc2NjBmYWRjMGI0MzYzYzUgbGVnYWN5LXRydW5rCiszMTc0NSAxN2U2ZTgxNGQwOTRlOWRiM2ZiN2E3ZWJhNDM0YmNlMTk2ZmFiZjdmIGxlZ2FjeS10cnVuaworMzE3NDYgZTQ4ZmI1ZmJmZGY0ZGE3YmFlMmVmYmE4NmE4YmI5MThhZTA4MmZiZSBsZWdhY3ktdHJ1bmsKKzMxNzQ3IDE0OWE1NzcyZGQwYzQ2MmI2NDRkNDg0NjY1ODYwZmMxZDc0ZjJhNDMgbGVnYWN5LXRydW5rCiszMTc0OCBmY2JjODI0YjZlMzgwOTRjN2ZkNTRiNGI3NWUzZWMyOTUyYmYyNTQ2IGxlZ2FjeS10cnVuaworMzE3NDkgMDI3ZGMyMTNjNTdlNzJkYWUzYzZhNDJiOThjMDBlNmIxNWJlZWI3MyBsZWdhY3ktdHJ1bmsKKzMxNzUwIDVjYTY1MGE5MDA1ZmE0YjJjODcwNGM3M2ZiZDUyODFlN2M3NTI4ZDYgbGVnYWN5LXRydW5rCiszMTc1MSA4ZjAwOGI3Y2I5N2IzYzQyNDkzNDhlY2Y2ZmY0N2U3YWQ4NTg4YTRlIGxlZ2FjeS10cnVuaworMzE3NTIgMmFiZDhhNWFmNmRkYjExOGJhODZmNDhhZTI2NzgzY2NlMDA2MThhNyBsZWdhY3ktdHJ1bmsKKzMxNzUzIGI3YzI5ZGM4YWZhMGYzMDViOTE2MDIxYjRmNTJmZGE0ZWU2ZTI5NmQgbGVnYWN5LXRydW5rCiszMTc1NCBlZmUyNDlkMDY5YmE0MWI4MDU3OWM2YWEwOTIwOWJmODQ1OWY0NWE2IGxlZ2FjeS10cnVuaworMzE3NTUgODE0MTUwNDhiMmFlZjAwMTA0NTFmNGUzYWIyMDc1NjRiODY3MGMzNyBsZWdhY3ktdHJ1bmsKKzMxNzU2IDhiN2Q5ZWI0OTc1OGM1NjEyYjgzYTQ1MTJhNjc5YjE5ZjMyZjc3MmMgbGVnYWN5LXRydW5rCiszMTc1NyAwNzQ5Nzg3OTk0ZGJmMzgzZmY3NGM1NjZmNjAxNTY1NWJlNDBkNGE4IGxlZ2FjeS10cnVuaworMzE3NTggZjU3ZDMwZDUwNjQ4ZWQ4MDBmYjc5MzFiYzdhODA2NDVhNzk4ZjIzOCByZWxlYXNlMjItbWFpbnQKKzMxNzU5IGE3ZjAxMzAyYjE2ZDJiMTQ3ZTU1NDQ4YTdkNTQ4Zjk1ZTNjMzhkZGMgbGVnYWN5LXRydW5rCiszMTc2MCAwYWI0NTQ1OTNiNTNhMTVmNWFjYzczMzcxZWEyM2ZlZjExZmIyZWFjIGxlZ2FjeS10cnVuaworMzE3NjEgMDU1NzViN2U2NzE0MDg0M2ViMGUxNTIwNTA3OGY0MTI0ZjliOWMyNyBsZWdhY3ktdHJ1bmsKKzMxNzYyIGEzODIyNjNkZjAxZDVhMjdmMzBkNjdjNDQxNDcyMzQ0NWZkOGM3ZDggbGVnYWN5LXRydW5rCiszMTc2MyBiYWQ5MTU2NDVmYTIyZGZlOTY1ZmQxYzM3Mzg0MWE2MmE0YzYxNDUzIGxlZ2FjeS10cnVuaworMzE3NjQgNzcxOTYxZTQ1MzE0ZjAyYzFjMTBkNDRmYjg0OTk2ODRiMTY5ZWI2YiBsZWdhY3ktdHJ1bmsKKzMxNzY1IDQzOTEwMWQ0NzA1YmIwNWViYzFmN2MxNDdlYjEwYzRmYmVkZjc4ODMgbGVnYWN5LXRydW5rCiszMTc2NiAyYzNlZjQ2MzU5ZWY0NjA1Y2I1NzhiOTNhYTg1MmI4ZDZkZWY3YzYxIGxlZ2FjeS10cnVuaworMzE3NjcgZmI4Zjc2ZGY2NGZmNDA1NTVkM2RhNTUyYjVmMzFlNTUzNjYxZjUxNiBsZWdhY3ktdHJ1bmsKKzMxNzY4IDkyZTNiNjExZGM5ZjkyMDcyMGI3MmI2MGFkY2Q4NzQwMTc0MGNiMzEgbGVnYWN5LXRydW5rCiszMTc2OSAwMDhhMjZjMzUzYWY5NzA5NGNjYzgxZjZiN2FmODE5OGRmZjY5MmE4IGxlZ2FjeS10cnVuaworMzE3NzAgYzAzYmUyMmZkZDI0YzFlNTdkMjMxNDQ1MTY1NTM1ZTRhYjg3ZDMxNyBsZWdhY3ktdHJ1bmsKKzMxNzcxIGQ0YjI2MmZiZDA0YTIwN2U2NWZjZTZkYWJjZjBiODBhZDBhMTc0ODMgbGVnYWN5LXRydW5rCiszMTc3MiBmMmJkMGY0ZDg1NzUwYjhjZWU0M2M2OTU4NDRiYmJmYTY1ZmMwZDc1IGxlZ2FjeS10cnVuaworMzE3NzMgYjNjMTU4N2IyYjhlMzIyY2Q3MjcxNGMyZGU4MDFkNjUyMGZmNGRiMyBsZWdhY3ktdHJ1bmsKKzMxNzc0IDczYjBkYzI4YzkxYTdhZThjMDU0YTczNWJmNGJiMzk0MTAzMDVkNTIgbGVnYWN5LXRydW5rCiszMTc3NSA5MDcwNDA0ZjI0ZmFkNTg3NGZlZTBjZjZkMTY2ZWNmYzgyNjA5MjE2IGxlZ2FjeS10cnVuaworMzE3NzYgN2M4ZTg4MDdhZWQyOWM2ZjJkZmVkOTNjMmE0Y2QyZmNmYjgxYjVlZCBsZWdhY3ktdHJ1bmsKKzMxNzc3IDk5N2Q0ODFlYTQwOTEwYTE0YzRjZDJmYTM5NWQ1ZDIwOWUwMWY5YTkgbGVnYWN5LXRydW5rCiszMTc3OCBkYzk0NzVlYzc5ODU1Y2M5MDg4OTZjYzZjZjlkNjM5Mjg3YzhiNWU3IGxlZ2FjeS10cnVuaworMzE3NzkgZWNhNjk3ZTA2YTA3Y2MyOTRiMTZlNWE3NWI3YmIzOWFiYWQ1ZGY3YSBsZWdhY3ktdHJ1bmsKKzMxNzgwIDczM2FlYmI1N2ZiMDA5YzBjYTMwNDM3M2U1MmVlMmNmYThkOTNlN2QgbGVnYWN5LXRydW5rCiszMTc4MSBhMmQ3OWI5M2I1MGEwYTkzZWJiN2RlYTA0MzNiYmI1OWRkMTUyODk1IGxlZ2FjeS10cnVuaworMzE3ODIgMjdhZGRlYTMzZTBjYWQ0OGFhNzFhNDk0MzIyOTFmZmY2OTBhMGEyOSBsZWdhY3ktdHJ1bmsKKzMxNzgzIGNkZWE1YjFiODI4MGNmOWVmOTE2MTZkNzcyM2FiOWU3ODA3MDI2ODIgbGVnYWN5LXRydW5rCiszMTc4NCA0MzA2NmY2N2M1ZGJhNzQxNzAwOGY1OTM4ZjIzNmJjNDQ4OTY4NDRlIGxlZ2FjeS10cnVuaworMzE3ODUgYjg0ZTZiNGUxOGM4NTk5Y2ZkMzk3NTE4NGZmZTgxYjI5YWNjMDQ0ZCBsZWdhY3ktdHJ1bmsKKzMxNzg2IDZlNDliYTNmNjBiZTU1NjAwOWU1NmUzYzg1YTExNjdkNjdjM2YwZjEgbGVnYWN5LXRydW5rCiszMTc4NyBhMmU2OGFkZGU4YjBmNGNhMDk0OGIwNDljZjNlM2U4NjgwZmY3M2MzIGxlZ2FjeS10cnVuaworMzE3ODggNGNhZmE1MTQxMDEyNTJkNTkxN2Q5MTYwNjQwYzgzZmU0NWIyMTY2NSBsZWdhY3ktdHJ1bmsKKzMxNzg5IDQ3Y2I4NWNkZDVmMzFkZThiNWZmN2UxZTNhOTdiNTI4NzhhMGNjNDggbGVnYWN5LXRydW5rCiszMTc5MCBkNDRmOWNjMjcyOTA1NTU1MzJlMWZlZWU4MjNjYmExMmUzZjljNWQ4IGxlZ2FjeS10cnVuaworMzE3OTEgMjcxYmFhODg0MjRiZTI5YTg4M2E1MjE5ZGRiNzkzMzFhYWFjYWE3MSBsZWdhY3ktdHJ1bmsKKzMxNzkyIDYyNzNhMTU4ZmIwYWNkNzFjNzViNzgxOGUyZTgxMjZmNjIzMTEwOWIgbGVnYWN5LXRydW5rCiszMTc5MyBiNWQ2YzM4ZWIxNjM2ZmU2MzkwODAzMmM3MWFkY2M3ZmMzY2JiNjBmIGxlZ2FjeS10cnVuaworMzE3OTQgNDhhNjFhNGI3M2ExMGJlMTU4MDAwYmE5YzRmYTA2NzMxZmQ5OGFkMiBsZWdhY3ktdHJ1bmsKKzMxNzk1IDMwZmExZjYxYjIzMWE3ZWQ2YjgzYjRhODBhZWI2Y2UyZWIzNjEzNjIgbGVnYWN5LXRydW5rCiszMTc5NiA4ZjIzZDM5YTlhMzM4N2E2Mjg3ZGJjODg2YjM0NjExYmY0ODY4YWEwIGxlZ2FjeS10cnVuaworMzE3OTcgZWE3MDAzMmEyNGIxMDI0MjFmZGMzMzI0YWIzMzFhZmNmMjA2NDQ1OCBsZWdhY3ktdHJ1bmsKKzMxNzk4IDAwODkyYWZmYjYwYWU4NGY2MGQ4Y2Q5Zjc0NTMzNmQ3MWEzNjg0ZjcgbGVnYWN5LXRydW5rCiszMTc5OSBmZTFkNTcxYzNmODAzZTM3M2YwOTlkNmVkY2UwMzBlZTZkNDAzNWMwIGxlZ2FjeS10cnVuaworMzE4MDAgZjEzYWRjMDBjMTY1MjAzNDdhOTBkMGE4YjYyYzk2NTJmNTI4OGY1NyBsZWdhY3ktdHJ1bmsKKzMxODAxIDA1NzQzMjZjNzhiYmFlNDZiN2VmZDg3NmVjNzc1NDI2M2EzMGEwZmIgbGVnYWN5LXRydW5rCiszMTgwMiA1ODU1OTE1YjAwZjVlNTE0NzEzMGRiMTkwN2Q4ZjRmOTJiYTQzZTMxIGxlZ2FjeS10cnVuaworMzE4MDMgNWMzYWNiZjIyYTI2ZjY3MmZiMGQ4MTQ3NjliMWYzYTliNjBiOWY5NyBsZWdhY3ktdHJ1bmsKKzMxODA0IDYyNjllYWFkZDQxZWY0YmIzYjhiMzAzOTM2ZmMzM2QxNDM0OTk5YTEgbGVnYWN5LXRydW5rCiszMTgwNSBmOTVkZmIzM2Q3NjI5M2M4MDg5MTE0ZTlhNjcxOGY3M2IzZmE2MmNlIGxlZ2FjeS10cnVuaworMzE4MDYgYTU5ZDhlNGNiOTAzODY3YmYxZTcwMjAwMjAxZWNlMzlmNWI4YWQ2OSBsZWdhY3ktdHJ1bmsKKzMxODA3IDRmNjc5YWE2MjNjMmY2YzI1NjNkNGZkZGYwNzg5NzQxNTA1NjFlYmUgbGVnYWN5LXRydW5rCiszMTgwOCA0YjZkN2M3NTY5OGFjN2JmMzFmNjc0YzA0NjgwNTg0Y2MyYTEzYTljIGxlZ2FjeS10cnVuaworMzE4MDkgNmVlOGQ1YTMwY2JjMjIyNGExZDQxMmJjNThkYmQ3MjYzN2JiZTVhNSBsZWdhY3ktdHJ1bmsKKzMxODEwIDM2NTVlOTFiM2RlYWNmZjJjZmMxYTVlNDU3NjMzMTQxNDdkZmQ4ZjkgbGVnYWN5LXRydW5rCiszMTgxMSA0YjFmZWYzN2FjN2JkN2FhOGMxYjc1ZmY2ODlkZmIxNzFmOWVlZjhhIGxlZ2FjeS10cnVuaworMzE4MTIgZDc2MzAxODU4OTQxYzkwYjhlNzZkOThlODJhYjIyMmQ3YzcxZWRjNSBsZWdhY3ktdHJ1bmsKKzMxODEzIGIyNDZjYTAzM2UzZWU3ZDg0MjVkYWYzYzYxNjRmZDVkYWRkOTg1Y2IgbGVnYWN5LXRydW5rCiszMTgxNCAwM2QzZmEzZTFkNGU1Y2E0ZmM1NzU1ZWJhMmEyNWIwMmU0MTM3NTIzIGxlZ2FjeS10cnVuaworMzE4MTUgZmExOGRmNzQ2ZWM1MjVkNzcyNmE1YmNiNWFlNWUwMTVjNWNiYWY3OSBsZWdhY3ktdHJ1bmsKKzMxODE2IDVjNDZjOTU4N2EyZmEzMTc4ZWYxYzBiZWY3MzYwY2Q4OTNmM2U0OTcgbGVnYWN5LXRydW5rCiszMTgxNyA5MjdhOTgzM2Y4M2I3OWFlMWJhOTg3MmJmY2E4ZmEzYWUxMmExOTI2IGxlZ2FjeS10cnVuaworMzE4MTggNmMwNjY3YWM5MzllZGQzZjVjMDZmYzdhMmM5YzIzZmEwN2Q5YjFmOCBsZWdhY3ktdHJ1bmsKKzMxODE5IDkyYjkzMDEzMDBjMzk2ODA1ZWExZmQ0Mjk2MWJhN2RmMmMxMTkyOTQgbGVnYWN5LXRydW5rCiszMTgyMCAyNzUxYzVlZjk4YmU2Y2M5NzkzM2QwODRhZDhmZWVlN2Q0ZWI2ZDE5IGxlZ2FjeS10cnVuaworMzE4MjEgYTRlN2VkYzY5MDU0ZDUwM2JmMjMwYWJlNjg1NDcwYmUwOTkxYmI4NCBsZWdhY3ktdHJ1bmsKKzMxODIyIDE1NjkxMWRiYTMwNmMxMjc4MzJjN2Q3OWM0ZmU3MmY4YmU4ZjU4ZWUgbGVnYWN5LXRydW5rCiszMTgyMyBiZWEzZDFmZGEzZGNiMDIxMTIxZjdiZjZiZGRjZWVlZDc1YmFhNDQ5IGxlZ2FjeS10cnVuaworMzE4MjQgYjc4ZDhiYjVlYmQ3MTQ3NGRhNzk5ZDA4NTdiNmVmZGUwMDcyMjgxNCBsZWdhY3ktdHJ1bmsKKzMxODI1IGUyOGI0OGZjOTAwYmZkYWFkMzMxMjFmMWJlOGJlODRmOGQ3M2U5YjMgbGVnYWN5LXRydW5rCiszMTgyNiBmYzkyOWQ3MWE0NTBmNDM4ZDg4MjNjM2MxNGU4NGFkMzlkOGMwZDI0IGxlZ2FjeS10cnVuaworMzE4MjcgNjViNzIyNjczODI5MDk3MzdkYjNmNTYzMDk4ZmQ3ZjhmZGQ2ZWViZCBsZWdhY3ktdHJ1bmsKKzMxODI4IGZkOWI4ODJiZTA3OTc1YmZmZDViYjI3NDk4ZTQ0N2YwMTIzY2RkZDMgbGVnYWN5LXRydW5rCiszMTgyOSA3ZjBiZmJlYzk4N2ZhMGRmMjdlZWQwNmEwYTBjZmRkOWExY2YxNWU5IGxlZ2FjeS10cnVuaworMzE4MzAgMzM2NTY2NGI4Mjk0MmJhYzY2NWM5NzMxMjAzZTFiZGM5ZDZlMDFhOCBsZWdhY3ktdHJ1bmsKKzMxODMxIDRjNjQ0YTYwYzMwZDkzODU1ZGYxYThiZDQwM2RjMWZlYzdmYTc5YmEgbGVnYWN5LXRydW5rCiszMTgzMiBiMTM1NmRiYWFiOWEyYjk2ZWZiNmE4MTE4MjgxNmM4ZDAxYzM2ZTU1IGxlZ2FjeS10cnVuaworMzE4MzMgZmJhZTIwYTJlMTE2ZGVlZjdhZjA5NDRkNGU0ZTVkNjExZjgwMzZiNyBsZWdhY3ktdHJ1bmsKKzMxODM0IDEwMjhkYzY4MDdhNWY5ODA1Y2JhOWI2MjcwYzEzYWIwMWQ5YzJiZGMgbGVnYWN5LXRydW5rCiszMTgzNSA0NTljNDI5MWY3NTk2MzBkN2ExNWU5MzM3NDZlY2Y4NTAxYjU3NWNlIGxlZ2FjeS10cnVuaworMzE4MzYgNmEyZDlhZTQzMGJlYTZjMWYzNTIwODE4NjVhNjI0YjIwNmE2ZjY5NCBsZWdhY3ktdHJ1bmsKKzMxODM3IGEyOTU3ZmZjYjU5ODY1ZDJmNjA3NzRlMGQ0ZjhiZTZlNWUxYjA4NjMgbGVnYWN5LXRydW5rCiszMTgzOCBlZjUyNWM5OWI0ZWVkNjY4NTBjZDNjNmQ0ODQyYTM0ZmJlNzQ2OGFhIGxlZ2FjeS10cnVuaworMzE4MzkgNTFjNzRiNzk1ZTllOTQ5NGMwOWZkNzcxNmZkMDA2ZDNjYWRjNjU5ZiBsZWdhY3ktdHJ1bmsKKzMxODQwIDE2MmVkMmE5Y2MwYzhhMjdlNjgzNjMxM2U5ZmE1ZmMxMDBlMDE1ZmMgbGVnYWN5LXRydW5rCiszMTg0MSA3ZmMzZTY0ZDE0MjQxNTMyY2U2M2QyODNkZmQ2MzM4YTExY2FjM2Q0IGxlZ2FjeS10cnVuaworMzE4NDIgNzM4MTRjYjU4MjdmOGM1ZDIzNGIzNzk0MjhmZTc4OTI4ZTI4YWFiZCBsZWdhY3ktdHJ1bmsKKzMxODQzIDhkMTBmNjhkN2MzYjBhZjI5MWMxNWI4MWU1MjY2NjhkMDZjNjhmMmEgbGVnYWN5LXRydW5rCiszMTg0NSBhOGQyNGI5N2M4MTNiMjBkZGM0YTYzNjRmY2JkNmRmYzIyOGVjYzI2IGxlZ2FjeS10cnVuaworMzE4NDYgYjk3MmJlODA2NDc3ZjEzMWFlY2FkMWE5NjZlZWQ1YjcxMTVkMjdmNSBsZWdhY3ktdHJ1bmsKKzMxODQ3IGM5ZmMzNWQwYTNlYmFiZjBkNGMwMTQ4NWFiNGEyNzUyM2IyMjE2OWQgbGVnYWN5LXRydW5rCiszMTg0OCAyMjg5N2NhMTAyODhkZDFjMmQ1NjZhMTU5N2VhOTk1NjViNTU3NGEwIGxlZ2FjeS10cnVuaworMzE4NDkgNWE0YzdlNmYwMDhlMjEyZjNmMDYwY2M1NDhiN2UxZWUwNGM4ZTY0NiByZWxlYXNlMjItbWFpbnQKKzMxODUwIGU0MDUyNzc2OTg2NGNiMjlkNjkxYmIxY2UzOWIyNzgwM2NkZDkxYmIgcmVsZWFzZTIyLW1haW50CiszMTg1MSAxNzFmMTg2MmRlYTk1NzM1NGU0MWMxZjY4OTNjOTQ4MGI4MmY0ZWQ3IHJlbGVhc2UyMi1tYWludAorMzE4NTIgNjVkZDk2MTJhNzQ4MDgwMTYxMTA3YjY0NDdiZmQ1NWNkOTM4MjMzZCBsZWdhY3ktdHJ1bmsKKzMxODU0IDBiYTE3ZTkzZjEzOWY1NzRmZTNhNWIzMDIzMmQ3NTM4NWNlYTg2ZDYgbGVnYWN5LXRydW5rCiszMTg1NSA3NjU0YzI0ZGVjYzRlZGI5YzQ0MmJlNzlkYzE4OTkwMTVhNDY4ZGVhIGxlZ2FjeS10cnVuaworMzE4NTYgMmMyMmI1YzA5YTU4ZGM2MTkzZTJhNzRlN2EwM2Q3MTNjNWJlYzg5MiBsZWdhY3ktdHJ1bmsKKzMxODU3IGFiZmU0YjM4MDMwNWVkOGMyYTkxN2JlMDkzY2EyMzNiOWIyMjRlZDUgbGVnYWN5LXRydW5rCiszMTg1OCAxNDMxNmRmMWMyOThiNzE2NTNkYzc1NGI1MWQwODQwMjZiMjcyY2UwIGxlZ2FjeS10cnVuaworMzE4NTkgOTYwMmM2NjRlZDdhMmNiZTY4MWYyMDE5ZWRhZGI2NzU5Nzc2MTJhMSBsZWdhY3ktdHJ1bmsKKzMxODYwIDczNDM0ZmE5ZDI4NTJiNzljOTk5ZDI3ODdjNGNlMWEzOWJiZjZmYzAgbGVnYWN5LXRydW5rCiszMTg2MSA4YzA4MjkzNmRhYWZkYWVlMzIzOTU3YWNkOWRlYzVmNmNhZGE4YjM4IGxlZ2FjeS10cnVuaworMzE4NjIgNDcwNTA0ZWY1NzhiMjA1MzY2ODU4YWE0N2EwMjA5ZDlhYTY0YTFmZiBsZWdhY3ktdHJ1bmsKKzMxODYzIGIxNGQ2NzQxZjQ5NjUxYjg2ZjYyMDAwMWVkM2I2NjAwZmI5MzU5YzMgbGVnYWN5LXRydW5rCiszMTg2NCA3MDJlNTQ3ZjMxZTBkNTI1ZGY1NTRjYjNlYTA0NTg3ZjA4MDE5NzBiIGxlZ2FjeS10cnVuaworMzE4NjUgMjI2YzViZGQxNjBiOTVhZTdjNzBmZGI4MWFmYTk4NjM0NTIwNjhjYSBsZWdhY3ktdHJ1bmsKKzMxODY2IDAwYmRhNTZmNTQzMzA2M2NmYmVjMWE1NTcxMjAzZjNiYTcyYjhkMzMgbGVnYWN5LXRydW5rCiszMTg2NyA5YzM1NzJhNTU3NWY5OTczMjI0ZDkwNTFiYTg3NDRmZmNiMmQyZWVkIGxlZ2FjeS10cnVuaworMzE4NjggNWM5ZGNkYzdmZThkNjliM2IyZjRjM2U3YTFkYTE4YWY3YmQzODQ0YyBsZWdhY3ktdHJ1bmsKKzMxODY5IDRmNDdkZjIwNDE1YzcxZWI5OTA5NjFkY2U2MTRmZjMzNmYzNjgzMjEgbGVnYWN5LXRydW5rCiszMTg3MCAyNDg5ZDIyMjI4ZGJiYzk3ZGQxMDFhMThkYjZjN2IxZjA2YTliODFmIGxlZ2FjeS10cnVuaworMzE4NzEgZWY1NWYyMjMyYTEwZDczMWJkZWFlMDdlZmRjNDhjODYwZmZhYmFjMCBsZWdhY3ktdHJ1bmsKKzMxODcyIDkwZjdmYmNiMzcwNjk1N2VmNzY5OGQ4NjQ4MGI0YzAyM2RhYjJmMDMgcmVsZWFzZTIyLW1haW50CiszMTg3MyA5MTg4Y2I4ZTE5MWI0ODhjYTUzMGJkZmM1MGUzMGU1N2Y3OTU0MDllIGxlZ2FjeS10cnVuaworMzE4NzQgOTI3OGIxYzgwYTY3ZjBjZmNlYWQyOTVkNGNiNDk1NzIyNjUzOGVmYyBsZWdhY3ktdHJ1bmsKKzMxODc1IDNlMTllM2I3MmQ5YjFiOTc2ZGNjNDcxNjU1MzAwMjk1MGNlYTE4YmYgbGVnYWN5LXRydW5rCiszMTg3NiAwMjNkM2I1MGU1OTc5NzRlYjNkNDFjMmE3YmFkM2Q0Y2U2MzMyYjdmIGxlZ2FjeS10cnVuaworMzE4NzcgYmMzNzBiODc1M2YxMjYwYTBmNGQ2NjliMTZiYjRkZjVjMTNiZjE2NCByZWxlYXNlMjItbWFpbnQKKzMxODc4IDM2MGE1NzgwNTY3NmRkMjNhYjlhNjQwZWFmODQ4ODRkZjI4ZDEwZjkgbGVnYWN5LXRydW5rCiszMTg3OSBmZDVlZjcwMDM0NjlhNjMxODY0NThjYTE3ZTFhYmEyY2FjNGJlZWY2IGxlZ2FjeS10cnVuaworMzE4ODAgOTJkYWY4YjA2YWJjMTg2MmY1ZWZlNjhjNTEwNzhlMDQ2ZjJlOWE5YiBsZWdhY3ktdHJ1bmsKKzMxODgxIDllYmM2MWI5ZThiZGJhNjVhMzkxNTJlYzUyNTU1MjE1MDMxZTc3ZDIgbGVnYWN5LXRydW5rCiszMTg4MiA2N2IyMmZhNGE4ZmU1ZjQ2NGVmYmZjYmJjZDkzNGJlZmNkYTZmZTA0IGxlZ2FjeS10cnVuaworMzE4ODMgNGUyMjEzNjhhZjcwN2I0YjE1M2FiZjdhODZmZTc5ZmQwNDBmMDViMCBsZWdhY3ktdHJ1bmsKKzMxODg0IDg1MDYyNmQ0NzU3NDlkNDZkZWViNzQ2NThiYTJmYzg5NGM0ZDdmNjkgbGVnYWN5LXRydW5rCiszMTg4NSAzMzU4ZGZiMWIxOGI0MjJlMGE5YmVjODQwMTZkNzBiZGNjMjY2MjJlIGxlZ2FjeS10cnVuaworMzE4ODYgMTg1OGJjYjYxNzA2ODJjM2I3N2UzYjRlOGI4NzEyYmI5OTdhNTI4NiBsZWdhY3ktdHJ1bmsKKzMxODg3IGNkZDVkMGNmYTZkY2UzNThkOTI2YjllZTgzNjFjMGViMWJlNzRjYTcgbGVnYWN5LXRydW5rCiszMTg4OCA2MmRmMTdlNTAxZGM2ODNhMzYyNDg4OWYwZTVkNTI4MDY3OWUwMDcwIHJlbGVhc2UyMi1tYWludAorMzE4ODkgMDJjZTIyODMwYWI5NjA5NzlhMDI2ODVkMDIwYzZlODlmZWJjYjY3MSBsZWdhY3ktdHJ1bmsKKzMxODkwIGI5MWE4MWQ2ODA2ODBlMDFmZDYxNDE3M2FiMTU1ZmY2YzY3OTIxNzIgbGVnYWN5LXRydW5rCiszMTg5MSAyOTFiOWQ4NjZlY2YyYTljOGQ3ZjNlZmRkYjc5ODU5Y2I4MWQwYmMyIHJlbGVhc2UyMi1tYWludAorMzE4OTIgZWVjM2ZkMTY0YTdkYjhkZDRjN2ZlODhjMTllMjI0MGRmZTc0MzFkMCByZWxlYXNlMjItbWFpbnQKKzMxODkzIDlmMjg3ZTVlYjAzNzc1MjQ5ZWUxZDQ4YTIzOTk3YjQxMjNkZWRkODkgbGVnYWN5LXRydW5rCiszMTg5NCA3MDAwM2IwY2I4Mzc5NTIwZDY4MDI0MWNmZTgwNjk1MTQ5ZjNlNjJlIGxlZ2FjeS10cnVuaworMzE4OTUgYjU2ZDEwZWQzM2M1ZTg1YWYyZWVkZjNjYTVhMDBiYTE5NTJiNDE2OSBsZWdhY3ktdHJ1bmsKKzMxODk2IDkwZjE3YzM3NGY1OTI3MjhlODllNDk5YTA2NjQ3YzMyNGQ0MjBlOWIgbGVnYWN5LXRydW5rCiszMTg5NyAzNDM0ZDFiOTIwNmE1YmQ4ZGU5NzRjMWE1MDBiYTdmOTU4NDQ3ZDgzIHJlbGVhc2UyMi1tYWludAorMzE4OTggY2MzNWVkMmIyNmE4YjJiNTA0MzM1NDRjMzBkMzI2YzUyZmU1NTIzMSBsZWdhY3ktdHJ1bmsKKzMxODk5IDVjZjFmMmYzMGRiZDZjYzQwNjViMzRkNWU1OWM2ZmRjNWJiNmY3YWYgbGVnYWN5LXRydW5rCiszMTkwMCA3OTc5MDk0OTJjMzg2NzIwNDQzN2QxYmU1YWIxYzlmY2M0ZGY2MzhkIGxlZ2FjeS10cnVuaworMzE5MDEgMjY4MDhhYzdlZTUxYWU5OTJhOWEwYTdlZjdiZGU3NDAzMzZmMzVkMCBsZWdhY3ktdHJ1bmsKKzMxOTAyIDk4MGQ2ZTAxMTJjZTFlNDY0M2Q0ZGQxYWMyYzk3ZmNmYzViN2Y4NGUgbGVnYWN5LXRydW5rCiszMTkwMyA2MWIwZmY5OGQ5NWRkMzgxZTFjZDczZGE5ZjMwNDkyYmM0ZDZlNjg3IGxlZ2FjeS10cnVuaworMzE5MDQgMTQzOTE1Nzc2Y2JjMmZmMzE3NjJlM2E1NzkyNGEwMTMyNWY1NDc5ZSBsZWdhY3ktdHJ1bmsKKzMxOTA1IGY1Yzk3YjY1ZjllODU2ODU3OWNiOTMyNTliNzQ0MTdhZTE3OGM0NWQgbGVnYWN5LXRydW5rCiszMTkwNiAxZmMxYTMwNWUzOTk5YTQ0MTA4MzBjZDQ3ZTIwNWE2Y2I0OTFiMzRiIGxlZ2FjeS10cnVuaworMzE5MDcgYjczNDBiMDk1NTVkMzBiZThiZDM0ZGY1ZWVlZTgyMGI1MDZiOTQyOSBsZWdhY3ktdHJ1bmsKKzMxOTA4IDMwOTY4OTlmNzc0ZmVhYzkyODNhYTliNjU4YzNlMzk3ZjFiMTExZDQgbGVnYWN5LXRydW5rCiszMTkwOSBlMzZmZjQ5MmNiYjE2MjNjMGRkN2MxNjMwOGJkMjc1NGRmM2E4ZWNiIGxlZ2FjeS10cnVuaworMzE5MTAgZDU3NDIxNjIzNDQ5YjdhYjA5MmE5ZWYxMGJjMjRhOWIzMjcxNzVmMSBsZWdhY3ktdHJ1bmsKKzMxOTExIDQ1MDU0YmY1OTJlNWUwM2VkNjE3MTNmNWJjZDIzMzY0Y2E1MWVlNWUgbGVnYWN5LXRydW5rCiszMTkxMiBkZDgzYTlhNTNkYmZiOTFmODk1MzkxNTFlODZlOWJiMjQ0MjQxOGYxIGxlZ2FjeS10cnVuaworMzE5MTMgZDM0YmNiM2NiMjE2ZWE5Njk2OTNhZmI3YzZlMWM4OGIzNWRkOWYzZSBsZWdhY3ktdHJ1bmsKKzMxOTE0IGVkZGY1OWY1Y2M1ODQxNDc3ZGU2MjIyZThlNzFiNDVkMmRhMGU3MDMgbGVnYWN5LXRydW5rCiszMTkxNSAzZmZiYmI0ZjQ4ZGE2MzNmMmVhNDM3MjNhYjI1ZTEzM2Y1NDkwODIxIGxlZ2FjeS10cnVuaworMzE5MTYgOGQ3ZmZlNGNhYWQ5YWNhYzg0MWM1OGU4ZDJkMzFhYWRkNTQ5YTJhMCBsZWdhY3ktdHJ1bmsKKzMxOTE3IDM0ZTIyY2RmYWFkMjQ2Mzg1MzgwNDgxNzY4MTIzYTkyODM4MWE5ZjEgbGVnYWN5LXRydW5rCiszMTkxOCBjN2NlYjk1NjBlYjBlMWJhYTE5N2ZlYzAwY2IyMmY4OTU5YTAzODI2IGxlZ2FjeS10cnVuaworMzE5MTkgNzIyNDdlZTIyNjUzNzRjYzU1YjkwYzg4MjVmOTE5MGNjNmNiZGU2NiBsZWdhY3ktdHJ1bmsKKzMxOTIwIDZmZGRjZGQxMWY0OWZhZGMwYzc4YWU0OTAyZjU4ZjFhODBiY2JiNTcgbGVnYWN5LXRydW5rCiszMTkyMSAzMWE1MTFmNzRiMjgxNmIxMGJjYjgxZjkzZDNiMjgxNjhiNGU0ZWUzIGxlZ2FjeS10cnVuaworMzE5MjIgYmFiMmIyODYzYTZlMDRjMDM4ZjQzM2RmYjUzMDUxZmI1Y2M3MTY1ZiBsZWdhY3ktdHJ1bmsKKzMxOTIzIDhlMjQ3M2FkN2MwY2JhYjNmNmNiMDBkOWJmNjEzYWQ3YjE0ZmQ0NjMgbGVnYWN5LXRydW5rCiszMTkyNCBjOTdjMTA0YzJkMjQ5NmM4YjFkMTVkNWM3MzNmOTZiYzg5MzBjOTFiIGxlZ2FjeS10cnVuaworMzE5MjUgOWFhYzg3MGYwM2EyOTkwMmMxZjgzYmIxNWQ4NzA2MmRmYTAwYTdhZCBsZWdhY3ktdHJ1bmsKKzMxOTI2IGRlMDEzMjc2NTg0YWViZWU0OWM2NzBjNzdiZDQwMDVlNWY0YWM2NTMgbGVnYWN5LXRydW5rCiszMTkyNyBmZjc4YzNjM2ViYzQ2NmQwMjkwZjkxYWE5YTk1ZDA1NjEyYjhiOGI1IGxlZ2FjeS10cnVuaworMzE5MjggZWI0ODI3OGMyZTEwMjVjYjA4NjczNWI3YjY2Y2Q0MDI4MTg5NzBhZCBsZWdhY3ktdHJ1bmsKKzMxOTI5IDdmOTgxZGQ3ZmE4ZDJkY2E0NWM5OTU3MzgzZmRiZDljMDMzMzM4NjEgbGVnYWN5LXRydW5rCiszMTkzMCBmYmFlNjQ1NTEzZDc0NzM0ZjFiYmI1N2I4MjgwNTlkNTNiNGE0ZThiIGxlZ2FjeS10cnVuaworMzE5MzEgNzcwODkyZDc4ZjJiYjc5ODZhMWUyNzU3MTQzNDM3MWFhM2YwNTZjNyBsZWdhY3ktdHJ1bmsKKzMxOTMzIDQ1ODU0ZmM3MDdkNjQ5OTQyYjY4MTAyMGIxYWQ0ZmJkNDhiM2NkMTQgcmVsZWFzZTIyLW1haW50CiszMTkzNCAzMDc0OGMxNWE0ODFhZjc3MTYzMWZmYzNiNDVhMDc4MzE1OWYwYmYwIGxlZ2FjeS10cnVuaworMzE5MzUgZTMzM2Q3NjVmNDFlZTFmMzk1YWEzOTk3MWJhYzQ0MzBkMGFkODg0MyByZWxlYXNlMjItbWFpbnQKKzMxOTM2IGQ4NzdmZmE0ZjdmMjJhYzVmZTZlZTQ5YTE0NTVhMzQyYzY1MDA3MjkgbGVnYWN5LXRydW5rCiszMTkzNyBjZTRiOTI4YzgzNDBhMTIyOGFhOTA0Nzk2ZTdkNWQ1NWM1OGQ3YWVlIGxlZ2FjeS10cnVuaworMzE5MzggNzk1ZDYxNDRkMmVlNGNkODQzMDM5ZjU1MGU3YjExYmE3ZTMwYjY5NSBsZWdhY3ktdHJ1bmsKKzMxOTM5IDdkYTJlZTNhOWM0M2IzYjlmMjQzODJhZGNjMjJkMzRiOWI0YTU5NWEgbGVnYWN5LXRydW5rCiszMTk0MCBjYTQzYWJiMDc2Mzg2ODc5MzBkN2YwZjgxNDUwZWVjNzJkYzZlODg5IGxlZ2FjeS10cnVuaworMzE5NDEgZTBlYmZhMmZiOTM2OWRiYzhjNzQ2NDIxZjFmYWIzMzQzNmYyZjlmMiByZWxlYXNlMjItbWFpbnQKKzMxOTQyIGY2YmY3ODE3MzFkNDI1NjRkYjhlNmNkNzM3ZWY4M2Q5ZWEwNTFjNTggbGVnYWN5LXRydW5rCiszMTk0MyBmOTljZjliZmJiYWY1YmVlZmYzYzYyOWE3MWMzODlkNDE5MmU2OGE1IGxlZ2FjeS10cnVuaworMzE5NDQgYjg3MjI5NzQwNmFhOWM5ZmI4NmVjMTY0YzZjZmQ4ZTdiNTczNzEyOSBsZWdhY3ktdHJ1bmsKKzMxOTQ1IGIyMzQzNDIxMWQwMWRkODAwZjIxZmQ5MTYzZWI5ZjYxOTdlZGU5ZDcgbGVnYWN5LXRydW5rCiszMTk0NiA5NDYwMWQ4ZmE1MWRiNjhkOGI0MmY5YWIyNDg0NWQ1N2RlMGU3N2EwIGxlZ2FjeS10cnVuaworMzE5NDcgOTgzZTkyOTFhN2I0NjFlMmFkNjZhNDA3NTc2MTBkOGNjZmNjYzRkNyBsZWdhY3ktdHJ1bmsKKzMxOTQ4IGY4MTIzOWMxMmM2MGY4MDYyMjMxOWU2YWU1ODU4ZTZiMTZlYzVlZTQgbGVnYWN5LXRydW5rCiszMTk0OSA0ZWRlNTdhNDJjNjIwYjJkMWUwMGU1NGJmNjMyOWQzNTE5YzczMjU1IGxlZ2FjeS10cnVuaworMzE5NTAgMzMzMTk0NThmZTk5NWJlZGJlNWYyODZlNzkzOTJjOTA2Njg3MmQ2OSBsZWdhY3ktdHJ1bmsKKzMxOTUxIDA3NjE3ZDA5MDRhNjNmMzYxN2ViMTlhYjRlZDRhNWJlYmZmODdiNjkgbGVnYWN5LXRydW5rCiszMTk1MiA1ZWUyOWYxMzY0ZjMzNTc4MTVmMjhjMjRiYTFkNjg5ZTU3YWMwNzkyIGxlZ2FjeS10cnVuaworMzE5NTMgMTZhYTcyYThjMjgxZWYyMGE1MWRiN2E4Y2IzZjA0ZDI4YzMxN2Q2MSBsZWdhY3ktdHJ1bmsKKzMxOTU0IGJjOTA3NmIwMTY5NDk4YWE1M2IzNzQ0NzZmMDg1NTRjNzQwZmNlZmYgcmVsZWFzZTIyLW1haW50CiszMTk1NSAxZTBlNjc5NDcxNzU4YjU5ZjA2NTdlNGY2NWY0YWNjNWZjMjdmOThjIHJlbGVhc2UyMi1tYWludAorMzE5NTYgZDU2MjgyYzI4YTFlZmNkZjVlY2NkMDExOTM0NTQwYTEwMmQ0NGRkYyBsZWdhY3ktdHJ1bmsKKzMxOTU3IDRmMDM4ZDNhODg3OGNiZjc0OTViNzI0YTUxZGVhYmIyNTc0MDUyMjYgbGVnYWN5LXRydW5rCiszMTk1OCBhMjExMGNiMTY1ZjExMWJmZmU5NDViNDRjMzE3MmY1MTcwMDdjOGYwIGxlZ2FjeS10cnVuaworMzE5NTkgNjY0MjEyYTZlMjgzZTJhMmJiODEzNGExMjVkNWJjN2I5Y2YzOGQ1MyBsZWdhY3ktdHJ1bmsKKzMxOTYwIGVlOTRhOThjZjM5NmMwNDQ1YTM4YmE5NzZmNmFhZTcyMDlhNGM1ZmQgbGVnYWN5LXRydW5rCiszMTk2MSBjNmMyZjI2ZGY2NWIwNGVjZGRmNzE3MjJmZTdmNThlNTZjZmU2MjE1IGxlZ2FjeS10cnVuaworMzE5NjIgNWY1MzY0YWM0YWRiYzQ3YzBkYzgxNDk0ZmQyZmE2YmRmYzU1NTQ3ZCBsZWdhY3ktdHJ1bmsKKzMxOTYzIGYwMGNkNjkzZDRlMDJkMzI3YTE2YTQ3NTA2ZTUzY2NiYjVmNDJiNjcgYXN0LWJyYW5jaAorMzE5NjQgZTUzMDQzYmRiOGYyM2FkNGQ5MThkOGFkMzM4ZWFhZTBhMTI2Yjk5OCBhc3QtYnJhbmNoCiszMTk2NSBjYjhkNDI3YWZkMjExNTcyY2Q2YzgxN2NmYzRhZDA1ZmRjMjM2OTcyIGFzdC1icmFuY2gKKzMxOTY2IGZhMzVjOGI0NWIyNDU2ZDUzMmE0ZjAwYjE5NmJjYzRmMDY0OGQ4MGMgYXN0LWJyYW5jaAorMzE5NjcgZDFkNjBjMmUwYWU5OTNhNmMxOGEwOWU2MTRkMzc5MzJjN2EyOTcxYSBhc3QtYnJhbmNoCiszMTk2OCAzMDVjMTc1MTFhODY5Yzk2ZTcyM2IwOTQ4MTZjOGQ2MzllNWQ1N2QwIGFzdC1icmFuY2gKKzMxOTY5IDU1ZDBlOTk4YmM0NmM0NzUwZWJlNjhiODg3ZTg0YmY0ZDI4YjNjMmIgYXN0LWJyYW5jaAorMzE5NzAgNzM2NWYxMzBmMTU4M2RhNmZjNGI3OTgwMTcyY2Q4MmQ4NjUxMzc3YSBhc3QtYnJhbmNoCiszMTk3MSA5MDczZjhmZjcyNTYyYWM3OTcxYTgzMWU5ODhmZDRjZTAyNGM2M2M3IGFzdC1icmFuY2gKKzMxOTcyIDYzZWQ4NTI5MDQxMzM2MDk4ODk4MGVmMzM2ZjdiYjA0ZWUzODIzNDEgbGVnYWN5LXRydW5rCiszMTk3MyA1ZWY2MTMyZjNjYWJjOWRkZTFhODBjMjA1ZjQ0NzFmNGI0MGJhNTFjIGNhY2hlLWF0dHItYnJhbmNoCiszMTk3NSBlYzgwM2NjNTcxODUxN2UyNjU5OGU1M2FlMGYxYTdhOGU3ZGU5NDM3IGFzdC1icmFuY2gKKzMxOTc2IDViMTUyYWFjODEzZDdkYjBiZTBlZmE1ZjkyY2Q1NDBhNTBmNmFlZDEgYXN0LWJyYW5jaAorMzE5NzcgOGZmZmE2ZDE1NDRhODQzNWU0MDBhMThjYjM1MTllOTIxMTJjODdkYyBhc3QtYnJhbmNoCiszMTk3OCBkY2RjNDUxNzQwZmFiNGI5NTQyMjk5ZDFiMjlmYTc5MTllZmUyODAzIGxlZ2FjeS10cnVuaworMzE5NzkgZjM2MmM5YWVkZjEzNGE1YWE0NTY5OTYyODI1OGQ5ZDM1NTE1YTA1MCBhc3QtYnJhbmNoCiszMTk4MCA3MzY3YTM4NGE3NDU1NThhNzA3MDAyNjE2OTA5N2EwZThmYTYyZWFkIGFzdC1icmFuY2gKKzMxOTgxIDExZDgyN2Q5MzkwNDI5YjhiMTY2ZjRiNzllNDJkY2EwNjU0ZGQ0ZTkgYXN0LWJyYW5jaAorMzE5ODIgNjMzYTRiYmQ3OTdlMTdlZTg5ZTY0MWNmYmE4ZDUwMjZjZjk1YjdhMyBhc3QtYnJhbmNoCiszMTk4MyA3NTZmOTg3YzM1OTAxM2I5NjYxYzM3YjMwOTY5MTM1ZDdkNWJkZjU0IGFzdC1icmFuY2gKKzMxOTg0IDM1MGVhMjZlN2ZkOTVlOWU4MTNhMmI0OWU2ZDZhNzk2NDI2NzM0MjEgYXN0LWJyYW5jaAorMzE5ODUgMjMwY2NiOWU1MDAwZWEzMmE4OGY0YzE4MjM2YjJiYTI4YTFiNGRlYiBhc3QtYnJhbmNoCiszMTk4NiAwN2YzZmE2MzlkOGVjNmQ1ZTY0ZTNkOTFlODRmYzY1MjdkOTgxYjdlIGFzdC1icmFuY2gKKzMxOTg3IGIwOWRiMGI5NmE3NmJjMjhiZTY1ZDBlY2Q4YzQ1ZjcyYjc0Zjg3N2QgbGVnYWN5LXRydW5rCiszMTk4OCAyZGExNGZjOWU3MmJjYWM4Yjg3ZDZjZWQ2ZWE5NjA0NjhlNDMxNjc5IGFzdC1icmFuY2gKKzMxOTg5IGMyNWJiOTEzYTIzNjNiZjY5NzJlMjdlZWFkM2NjNTkyMjExYWQxZDIgYXN0LWJyYW5jaAorMzE5OTAgOGU2N2JlZjQyOWE0MDhkZDA4OWFiOTQzYmUwMGJlY2YyMDgxOTViMSBhc3QtYnJhbmNoCiszMTk5MSAyNWEzY2MzNzY1NzJhNjc5MGJmZTNlMGVkMzFmMjI5NWYwODc3M2VkIGFzdC1icmFuY2gKKzMxOTkyIDkwOWZiZTI0M2Y5MDI2NjdjOTQzMGJhZjUxMzhkODY2ZDQyNWZmMDYgYXN0LWJyYW5jaAorMzE5OTMgNmVhMjBiODZhYzhkY2Y2NDhiN2Q5YzQyY2RiM2ZmOGEzOTYxMjkxMCBhc3QtYnJhbmNoCiszMTk5NCBmNmExMTkyMDE0NmViNTgzY2FmZjE5NmIxMGNjZTUzMjk0NDgyNTYwIGFzdC1icmFuY2gKKzMxOTk1IDRiY2RhNjNlMTA1NDFjNTc2MWNjZmI0OTE1MWUxN2YxYWFmOWE5NGQgY2FjaGUtYXR0ci1icmFuY2gKKzMxOTk2IGY4NGUxZjRkNDM4ZWIwOGU3NTdlMGEzZGVlYjE3Y2ExNjVkYjFkZjUgYXN0LWJyYW5jaAorMzE5OTcgNDQ5NjIwMjE5NTlmMjhkMTIzNDY2M2ZmNzNhM2U2YjEzZjhiMDA1NCBhc3QtYnJhbmNoCiszMTk5OCA2M2FjM2Q2M2I5ZmU3YWRhOTQwY2M0ZjYxODBkODdjNDg5YWExZjU2IGFzdC1icmFuY2gKKzMxOTk5IDEzZTU2N2FmOTRkOGE5YzIzMzcyNGNkMTI3MTZiY2QwY2JkMmQyNjEgY2FjaGUtYXR0ci1icmFuY2gKKzMyMDAwIGJjNzY1N2FjNDZiYmU3ZWFmOGE4YTQyZmU2MjdmM2QxYjU2N2Q3ZGMgYXN0LWJyYW5jaAorMzIwMDEgNDFiMWYyMmZjYjAxNzU2ZTMwMWM2MDg1NzFiY2ZmMDNiNzM0MmJiMyBhc3QtYnJhbmNoCiszMjAwMiAxNDU2NjIxODAwZDQ1OTY1NTRhMGM1MjcwYWRkYjg1MDAwZDA4MmY5IGFzdC1icmFuY2gKKzMyMDAzIDhlOGE5MTEzZmEyZDg1ZDI3NDBhNjBlY2QxZjk2ZDUzOGU2ZjdkYmEgYXN0LWJyYW5jaAorMzIwMDQgMzY0YmZlNzk0NzhmNGNiNTZkNzZlYzVlMjRiZGQzNmE1YTQ3NGEwNCBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDUgYWYxNzY0ODg3YWEyM2M1OWNlMGY5MGRlNjBkYzEwOGRjOGI0OTNjNSBhc3QtYnJhbmNoCiszMjAwNiAzZWZkODM0ZDBmYzUyYmYxYWUxODBjNmE3MTA1NGIyNWM3N2NjYjBjIGNhY2hlLWF0dHItYnJhbmNoCiszMjAwNyA3MzM3MjkyNjFjNDFhMjI2NjA1NDEwYWUyM2ExNWM3ZDliNzkwMDcxIGxlZ2FjeS10cnVuaworMzIwMDggYjBjY2M1YjVmN2UyZjJlODRmN2E0NDQ1YWZlNDlmYmQ2MGVkN2NjOCBjYWNoZS1hdHRyLWJyYW5jaAorMzIwMDkgNjMyYTZjYWUwYmU2ZjE2NGNlMDhkYjlmZGIxZjJjOWU4MjMxZGFmYiBsZWdhY3ktdHJ1bmsKKzMyMDEwIGFjNzIxZWQ2MTkxNDRmYmNiZGNiOWYxZmRiNTFmYWZjODYwYjYzMDYgbGVnYWN5LXRydW5rCiszMjAxMSBlMDZjNTQwZGMyZTJmMTNhYTc1YmI5ZTc3MjAyZjE3YTcyZDcwNzg5IGxlZ2FjeS10cnVuaworMzIwMTIgZmVhMjkyOTJiOTMxYjY3Njk3NzdhNzM4M2ZjYzBlZjBhMTMwYzQyMCBsZWdhY3ktdHJ1bmsKKzMyMDEzIGYzZDRjYzI5OTZkMmM4NjE4M2JmMzA1NTg5MjczN2M3YmZkZjYzNWQgbGVnYWN5LXRydW5rCiszMjAxNCBmNTI5ZGVjZDgyMWZlZmY0OGI0YmQzNzI3YjE4MzYwNTQ3MDczY2VmIGxlZ2FjeS10cnVuaworMzIwMTUgZWQzYzcwMDhmOTBlOGM1ZTQ0ZjI3MWI5YmE2MjA5OTdmM2Q2ZjUyZSBsZWdhY3ktdHJ1bmsKKzMyMDE2IDBjZjRlMzI0MDM4MDdlMGM5ZjA2NTc4NjA1ZjUxMWM0MGFkNjhkZDAgbGVnYWN5LXRydW5rCiszMjAxNyA1NDk2Yjg2MWM4OWFiOTI3NjczMTUwNWViNjhjMWYzMDkzYTMyODJkIGxlZ2FjeS10cnVuaworMzIwMTggNzBiZDhkOGM4NzdiYzNkMzA1MjI0MjBkYTg5NzYyN2Y0Mzc0YzM3YyBsZWdhY3ktdHJ1bmsKKzMyMDE5IDBjODAyZWVhNTYxNTc4YTkyOGM2NTUxNTEyMWQ0MjUwMDk4YWE5ZDMgYXN0LWJyYW5jaAorMzIwMjAgYjZlNjJjYmJkZjNkZWQyOGE1M2YwNDFhMzdkYjYyMDA3NmY1OTA3OCBhc3QtYnJhbmNoCiszMjAyMSBiNDUxYTllNmQ5NDA5MGZhZjQwMTY1NjlkNTRkOWQ1OTY1ZTczMDNlIGFzdC1icmFuY2gKKzMyMDIyIDMzOTI4YTUxZjJmMTEyYmYzOGIzY2ZkMmMyNDU3NjM1NmUxMWJiZTggYXN0LWJyYW5jaAorMzIwMjMgMWEyZmQxMDlmNmI2OTYxOTQ3MTFjMWU4NDI5YzUyYTE0MTFmZDI1MSBsZWdhY3ktdHJ1bmsKKzMyMDI0IGI1NzU0NmIzM2NiMTM2N2YwNTQ2MzFhMTRkMTNhNDJmMDk4NzkwMjEgYXN0LWJyYW5jaAorMzIwMjUgZWM2MjIxZTliNzlhY2M0NmYyYTJmYzNiMzdjOWNhZGJmY2ZkMjkxMSBsZWdhY3ktdHJ1bmsKKzMyMDI2IGE5MzUxMjcwMzg1YWEwNGExYzAyNjdhMmVhMzA4ZGVjYjkzZTcyYjEgbGVnYWN5LXRydW5rCiszMjAyNyAzMGQxYzg0OGQyYjAxNjg1OGZmMDhkMjZlM2ExNGMyZDBjMTFmZjA0IGxlZ2FjeS10cnVuaworMzIwMjggZDY1NTNkMDgyN2FiOTY4Yzc5MDhkMzViMWRkMzFlYmZlZTI1N2E0MyBhc3QtYnJhbmNoCiszMjAyOSA4NGIxNjM1MjNjZDRkYTFjZDg3MjlhMGEyMDI0NTNlOTBkZjBkOTgwIGFzdC1icmFuY2gKKzMyMDMwIDE1MmJhZjRlMzU1NTUxZTcxYWJjNTQ5MmE1ODBkNDc5MjgwMDk5MmQgbGVnYWN5LXRydW5rCiszMjAzMSA3MjFlOWU0ZWVjMWVmMDhlMTEyNzBkZGUwMWFlMTI5MzhhNjFmNzhmIGxlZ2FjeS10cnVuaworMzIwMzIgZmE3OTVmNGU2ZGM3NzRiZDYzNDljZWUxYmRmZmM1MjdhODIzYTZkYSBhc3QtYnJhbmNoCiszMjAzMyBlNWMwMDg5NTUzODExMTI2Y2Q1MjQzMTRmMDQ3Y2VlZmNlMzAxYWU5IGxlZ2FjeS10cnVuaworMzIwMzQgYThlYzczZDEzZDAzM2M1YWZkYWYxZmRhZWU1MDkyN2Y1OGViYTg0ZiBhc3QtYnJhbmNoCiszMjAzNSBiYjg1YmU4Mzc2YjhlYmI5MDdjOTYzYjkzNGRkMTI4OTY5OWY1MzJlIGFzdC1icmFuY2gKKzMyMDM2IDhhZGU5MGFmNjE0YzM4YzJkZWVkMzgwOWRmMzI0MWVmZmU3ZDA1ZjMgbGVnYWN5LXRydW5rCiszMjAzNyAyZWQ3YzFjNDU3YjkzZmZmN2JiNDc4YWI2MTAxYmYwZmE4NTQ5NmM0IGxlZ2FjeS10cnVuaworMzIwMzggNmM2NDYxNmQxN2VkYmM5YmY2NzYzY2EyMWNhMjdlZjQ5MGJjY2NmYiBsZWdhY3ktdHJ1bmsKKzMyMDM5IDlkM2EyNWU5OTA3NWIwMzMxNGE1MmM5OTdmZmNjNTlkNWNiZGU1MWYgbGVnYWN5LXRydW5rCiszMjA0MCAxYjFkOTlkZGEyYTFkNjQxYWQxZmVhZDUyYjgzZDBjNjExNTE3ZDE4IHJlbGVhc2UyMi1tYWludAorMzIwNDEgNDQ1OWNkY2JmNTM4NDI3ZWJiYTU5MGUyYTZiYjcyYTU5ZTk5N2FlZiBsZWdhY3ktdHJ1bmsKKzMyMDQyIGNiMzMyZDQ0OTE3MTZlMjM4NzA2ZmIwYjNjMmZlNzE1ZGQxZDcwNWUgbGVnYWN5LXRydW5rCiszMjA0MyBjZDU1ODg3NjI0YjMyNWY5MWU0ZDNhZTU2MmM0Zjk0M2M2MThiYzQzIGxlZ2FjeS10cnVuaworMzIwNDQgMjExNDM0ODZjZTQwYjM3Nzc3Njg0YjkxMDAxMGY3NDMwMTJhYTljOCBsZWdhY3ktdHJ1bmsKKzMyMDQ1IDA0MTgyZTVhNjBiMTEyMmMyMDc2M2Y0M2I2NTI3MWU1ZDc0ODk3MWMgbGVnYWN5LXRydW5rCiszMjA0NiAyZTIwNjkyZGQyODY4MTM2ZmU5NTMxNDQxMTY1MWNhNjMwYWNjYTM4IGxlZ2FjeS10cnVuaworMzIwNDcgZWUxYzcwOTA1MGIyNDk0NjA1N2IwYmVmZGQzOTVhN2QxZWJjOTEwZSBsZWdhY3ktdHJ1bmsKKzMyMDQ4IDYzMDQwOWY0MWNjM2Y1OWFmYmVhODMzYmU2MThiNjIwNTgxZTIwNjUgcmVsZWFzZTIyLW1haW50CiszMjA0OSA4NzFkYTcwM2U0YzBhNWMyN2MxYTJkY2YxMWI4NGY4YjM3OWIyNjA2IGxlZ2FjeS10cnVuaworMzIwNTAgNWRkYmM5NzljNjU1OTUxODMwOGE2MzVjMzY3MDU1MWE4ZGE2OTRkOSBhc3QtYnJhbmNoCiszMjA1MSBkNzAwMWZhZGZlZmMzNzc1ZWI0MjVkODRhMDBiZGYwOWUxOTU2MTZiIGxlZ2FjeS10cnVuaworMzIwNTIgZDkzYTg0NWNlNWMwOTAzZmRkMWMxZjJlMTliZTEwMmEzMWM0YTliMyBsZWdhY3ktdHJ1bmsKKzMyMDUzIDkzNGRiZWI0MGIzMTcxNTc1ZjdkYTFkMzFhZGFiZTJjYmM4YjZmN2EgcmVsZWFzZTIyLW1haW50CiszMjA1NCBmMjU4MGMyZTc0ZGQ3OTY2OGUzYTdiMzlhZDYxYzFkZDc0ZDUzOTA3IGxlZ2FjeS10cnVuaworMzIwNTUgMDA5MmI2OWY3Zjk5YWE0YWRhNGVmMDEwYzhiZjM4ZTEzNjNhMTEzZCBsZWdhY3ktdHJ1bmsKKzMyMDU2IDE2MWI4YmQ4YTIyNmZjZjlkYTU4ZTkwYThmM2VjNTUyNDg3OTcyODYgbGVnYWN5LXRydW5rCiszMjA1NyAyNDA1MzcxYmUzNGM5NjY4ZTUyMGVmMzBkYTVmYzBiODI4YzFhN2I3IGxlZ2FjeS10cnVuaworMzIwNTggM2ZjNTc2NDI3M2Q5NmYwYWEzOGY0NDFlYTM3NzU3NWMyNmY1NzNiZSBsZWdhY3ktdHJ1bmsKKzMyMDU5IDUwMGY1NDVhMjRmMDdmN2YxNzJiNjRiYjNkM2YwMDRkNzdhZWRlODIgbGVnYWN5LXRydW5rCiszMjA2MCBmMGFkOGZhODhkN2NjZWYyZDQ0YzMwNmI0ZjkxYTYzNDBjYzZlNjY5IGxlZ2FjeS10cnVuaworMzIwNjEgMGEzY2UzMDZiMTFhNWQ0YTlmODFjN2ZjYmQ0MDJhOWQ2YmFhNDFkYyBsZWdhY3ktdHJ1bmsKKzMyMDYyIDE1N2M4NzJlNjg5MmI5YjNkNmU1NjVmMGY5ZDYyY2UxOTYwNGNhMTkgbGVnYWN5LXRydW5rCiszMjA2MyAzN2ViODkyOWYwY2I0MDMwZjJhMjJjODVlNmJhNTU4MDY5NWU1ZDEzIGxlZ2FjeS10cnVuaworMzIwNjQgNTZkOWJiYmFlNmY4MTBjZTAxMTk5ODA5MjY2OWI4MGMwZDFjMDBhNyBsZWdhY3ktdHJ1bmsKKzMyMDY1IDA1NDQzNDMwZDdlZDNkZDRkNmZhNmMyMzEwNTIwNjBjYzZjMzg3MTQgcmVsZWFzZTIyLW1haW50CiszMjA2NiBkZjliN2NlZTEzMzk1MTZiYjg1N2ZlY2JiMDY5YzlhOTRlYjE3NWQ0IGxlZ2FjeS10cnVuaworMzIwNjcgZjMwNzg2NTRhNWMwMmZkZjg5YjVkYTYxYTk4ZjllOGY0MDNmM2NhOCBsZWdhY3ktdHJ1bmsKKzMyMDY4IDIzNWQ1NDNlMGI4NDk3MTEzNWY0ZTEzOTRmYzA3MWVjMjY0MDQyMzUgcmVsZWFzZTIyLW1haW50CiszMjA2OSA3YTNmNzI5ODNhN2VkNTc3ZWZjMmMxMDQ4NzRlOTIzMmVmZjc2ZDY5IGxlZ2FjeS10cnVuaworMzIwNzAgODA0NDczY2Y3MTIxNTQ0MDUwNGYwMWQwOGNiMDE4MjM0NWExNDkxMSByZWxlYXNlMjItbWFpbnQKKzMyMDcxIGQ4Zjk4ZGM2ZTdlMDRhMTdlZWRjMGJjZDdlNWUxNTdmY2ViOTJmMDkgbGVnYWN5LXRydW5rCiszMjA3MiAwNzZjODY3YjkxNmUyMzA2YTQzYTJmMzQxNDE4ODRlMjVmYWVmOTg2IGxlZ2FjeS10cnVuaworMzIwNzMgZGY2NWIwMjE3ZGQ3ZjA4ZTY4MWVkOWYyOTM2N2I3ZjAwNGQ5MDg3MCBsZWdhY3ktdHJ1bmsKKzMyMDc1IGFmMDVmODhiOTY0MTM1OTY1YWVmNGM0NDRlZDljMGJiZDMwMzNhN2QgbGVnYWN5LXRydW5rCiszMjA3NiBhOGQ2NTc2Yjk1YWZhY2IxZDE1MzJhNmU0MTUxOWU5MDBjYmIzMGRiIHJlbGVhc2UyMi1tYWludAorMzIwNzcgOWM2MjA5MjUzNjE1ZmY0MGJhY2U0MzlhNDc4ZDQ2Y2RhYjhmNzFlOSBhc3QtYnJhbmNoCiszMjA3OCA1ZmJkODgwMWZhMjYyNWViMmE4OTQyOTI5NzM5OGEzM2QyYjNjZmIyIGxlZ2FjeS10cnVuaworMzIwNzkgMTU5MmVhMzZhNzAyMzI3ZTViNmI2MzU2ZDI1MjZiYTk3YTM2NjE3MSBsZWdhY3ktdHJ1bmsKKzMyMDgwIGFkNDJjYmVhMjI1OGE3NzIyOTRhNWZiODFjZjliZWU2YThiNmI3YzAgbGVnYWN5LXRydW5rCiszMjA4MSBjN2YxMGE5MDBkNjMyODg4M2E5MmFlNWFlODk0NzVmMGM2OWU1NjFjIGFzdC1icmFuY2gKKzMyMDgyIGI4NzA5NWZiYjA1MTY4ZDFjZTJlMTcwNjI5OGFkNTZkZTBhNWNmZDIgbGVnYWN5LXRydW5rCiszMjA4MyBmYzg0MTUzNTE4MGM5ODRiY2Q4NmU1MWJkMTgwYzUyZGUyOTdmMmExIGxlZ2FjeS10cnVuaworMzIwODQgNzE0MGE2MjM2YzNhODhjOTgyYTQyYjFmZjVlMWZlNDQwZDYxZGVlMCBsZWdhY3ktdHJ1bmsKKzMyMDg1IDc1MWQ3Y2U5YjRiMjNhODRjOGQ3YzE0YmY0YjhhZjk2MTY5N2M0YWEgbGVnYWN5LXRydW5rCiszMjA4NiBiNjZhMmU0MWRhM2VlOTkxNWZmNWRmNjQ1YjRjNzM4MTU1Y2ViMTllIHJlbGVhc2UyMi1tYWludAorMzIwODcgMDRjMWJhNTFlZmRiY2JiYzk5ZjUzMmIyODhkNDljZjhlN2JhY2YwOSBsZWdhY3ktdHJ1bmsKKzMyMDg4IDg1MmFhZTg0Yzk4MTM3M2UwMmFjNGVmNWQ4NzBiYWJiOGJjYjc3ZTYgbGVnYWN5LXRydW5rCiszMjA4OSAwZjU1OGVlZGU2YzU3N2E1OGNjMTM5YjViY2ZkM2UyZmRlMTRmZmJjIGxlZ2FjeS10cnVuaworMzIwOTAgNTA1ZThjMGZhOTJmZTJjYTJjMmI3NjQ4NzhiMjU4MmUzMDRmNDY3NyBsZWdhY3ktdHJ1bmsKKzMyMDkxIGJiYjc0OGY2ODE0ZDY0MGE2NDlkZjM1NDQxYWUzYWJlYjIzMTVlYmQgbGVnYWN5LXRydW5rCiszMjA5MiBmM2FkZDQxNjYyOGRjNzQxNDM2ZmE1Y2Y0NzQxOWVkODBhODVlMDdhIHJlbGVhc2UyMi1tYWludAorMzIwOTMgYjFmYmI4M2U1MTM5MTQ5ZTliNzY1OTUyYWM0NTk1NWZlNWQ4Njc0NCByZWxlYXNlMjItbWFpbnQKKzMyMDk0IDg4MDJkZTBkYTUzMzkxMTYwZmQzZTM1ZDdiOTUyMzc0MjI1MTkxMmQgbGVnYWN5LXRydW5rCiszMjA5NSBlMTNhN2UxZmRiOWU1YjdjMjhjMTJjZjI3ZDJiYmU5Mzk1MTE5NjJhIGxlZ2FjeS10cnVuaworMzIwOTYgODZhNGNlYTcwOTczYWJlYjQ3MzI4NjM1NTVjNDQ4ZTRmNDQ2MGVkNyBsZWdhY3ktdHJ1bmsKKzMyMDk3IDEyZGFkMjA4MWUyZTgyM2ZlOTIxOTU2NDQ1ZjgxZTA5OTMzZTdiZTcgYXN0LWJyYW5jaAorMzIwOTggNGFlYmFjYzc4NjdiYjFlMGZhYWNmMjIwMzFjOGU4MzA4YmJhZWQwNyBhc3QtYnJhbmNoCiszMjA5OSBmMTE1NDQ3M2RhYzhhNzBkZjQzNWZhZmVhZjg3MDdmOTdkNDNlZDQzIHJlbGVhc2UyMi1tYWludAorMzIxMDAgYWZkNWMyZTRiNGFmNmRjMWVjZTA4MjA1YzRiNjMxYjI3ZGY4MDYxOCByZWxlYXNlMjItbWFpbnQKKzMyMTAxIDI4N2RhYTZhN2Y0ZjIyMGRlODEwOGY4ZjU2MDc0ZTJlMzgxMmQ0YTAgcmVsZWFzZTIyLW1haW50CiszMjEwMiA4ZWZlOTQ0NTQ5NWIwYjc2ZDQwNmE1YWE1Y2VjOTQ1ZGNkZjdiNjY0IHJlbGVhc2UyMi1tYWludAorMzIxMDMgNTU1MGY1YTlkNzBjYTc2MjAyZWQzMDc3MmFmMGUzZjViMDU5YzE4NyBsZWdhY3ktdHJ1bmsKKzMyMTA0IGE4ZTVlYzA3MDQzM2Y1YWNhMmJiZGU3ODkxZjMzNDVmMzU1ZTE3NWEgbGVnYWN5LXRydW5rCiszMjEwNSAzNjIyMmQzODIzZjEyOTg2MDM0MTA2NjU2NGNmZjExZDdkNjNmOTUyIHJlbGVhc2UyMi1tYWludAorMzIxMDYgOTczZjlkMzVjZjFkMGYxNTI0ZDczNGViNWQ3OWEyNzNhNWMyMDJlZCBsZWdhY3ktdHJ1bmsKKzMyMTA3IGFiMmE1NDNlODU1YmM5ODhlYmJiMmM5M2I1MjNiMzYzNjlmOTA3NDcgbGVnYWN5LXRydW5rCiszMjEwOCBmMzhjYTllMWI2ODNiZjdhOGI2Yjg0Y2I1ZGM1OTkyNDg3NjE3YzI5IGFzdC1icmFuY2gKKzMyMTA5IDBjNDMzNWYxMGM2N2EyZDNhNzgzOWY3YjRiMDJiMjI3YTJlYmU2ZmYgYXN0LWJyYW5jaAorMzIxMTAgNDMwOGU4YTZjNDgwZGUwMGJlMmY2MDg5NWQ4MzMwMjhkYjg4ZjYwYSBhc3QtYnJhbmNoCiszMjExMSBkYzg5MGE0YzA1MjgwNTVlZDMxZmIwMjNiM2MzZDUwNTBkY2NhOGUwIGxlZ2FjeS10cnVuaworMzIxMTIgYjg1YTIwNTYzMWE0NWMwMzhhNWZkYTMzMmY4ZWJkOWU3YTVjYzkwMiBsZWdhY3ktdHJ1bmsKKzMyMTEzIGYzMTFiNWQyMWVmNTY0YjEwZGI4NWEzZGI2OGQ4N2UwY2Q1NzBhYjEgbGVnYWN5LXRydW5rCiszMjExNCA0ZjhmMTdhZjM0ODdiYWIxNGIwMGI0NmI5Nzg3YmJhYzNjNGYzZDUyIGFzdC1icmFuY2gKKzMyMTE1IDczOGUzNzhmYTBjYzE3MThjMTBmYWYxYzY4ZGM0OGE4MjZjMjcxZjMgbGVnYWN5LXRydW5rCiszMjExNiAzMmJlYTQxZmVmNjhkMDQ4YTI2Y2NiYWNhNTk0OTZjM2FiNWFiODRjIGxlZ2FjeS10cnVuaworMzIxMTcgZDdkN2FmNWYzMjMxZjAxMmQ1OGY1M2Q0NzBjNGE2YmFkNmJlOGJjYyBsZWdhY3ktdHJ1bmsKKzMyMTE4IDQ5MjAyOGU0NzI2ZjE1NzU1MDNhZTVhM2M1OGU3OWMxOGE0NWNiYWEgYXN0LWJyYW5jaAorMzIxMTkgODFiY2MwZjU3ZDU3MGZiZGY1ZjBjZGIyMzYwMjcxOTk1OTMzODkyYiBhc3QtYnJhbmNoCiszMjEyMCBjZWI3YmI3OTEzNTMzNjYzMDA1ZmUzZDZlZGI3OThjNGJkZGI3ZmQzIGFzdC1icmFuY2gKKzMyMTIxIGVkMjFkOGIzN2UzM2Q1NWY1ZjhlYTM5MDUyMzQzYWUxNmY2NTM0MzUgbGVnYWN5LXRydW5rCiszMjEyMiAzZDhjMTIxNGExYzc5YmE3ODE0MGIzZjc0YWQ0MjhhMjVlNjZkZDUyIGFzdC1icmFuY2gKKzMyMTIzIGVkNzNkNjU4NzI1YWE3OGRhNmZjZWRmM2QwMGE3Zjk2MTBiZGM5NmIgYXN0LWJyYW5jaAorMzIxMjQgNDBkOTY1OWI1NmM5NDZjNTcxNTFlZDViMjBmYTJjZWIwYjQ0MzI1YSBsZWdhY3ktdHJ1bmsKKzMyMTI1IDNlMzk5YTg2MThkYjM1YjQ3YmQ1MWI4MmFiYzI3ZDEyNDQ4Y2QyMGQgbGVnYWN5LXRydW5rCiszMjEyNiA0MmRmYTA4OTFiMzMyNjYxMTcwOGQyNzM1OTU2Y2FlOTBlMzg1NjY4IHJlbGVhc2UyMi1tYWludAorMzIxMjcgY2JhMGFlZWUwZDY1MTUzMWI5YWE1NTVmNGM4YjAzYTA5Mzg0NTM1NiBsZWdhY3ktdHJ1bmsKKzMyMTI4IDAwYTU2ZmJlYTY5ZmIwYTcwYWI3MGU2MTRkNDQwNDgzODYyMjIxYzQgcmVsZWFzZTIyLW1haW50CiszMjEyOSAwZmNmOWFlMjVjZmViZTczYzEwYjgxMjEwZTg5MjhlOWMzMTRjNWRlIHJlbGVhc2UyMi1tYWludAorMzIxMzAgNGI2ZTIwZjBiYTRjZGE1MzljNjNjOTAwMThlZmZmNzcyYmE2ZDg4YyByZWxlYXNlMjItbWFpbnQKKzMyMTMxIGNiNWRiNTU2MWNkY2E5ZDM0ZDJiMDY2NDYyNzViMDZhM2NkOGU4ZTQgbGVnYWN5LXRydW5rCiszMjEzMiA4NDlkZmVhMTgyY2EzNzczMzlkZGJlYzRkOWIxNDQ2YjQ2MDM1ZTUwIGxlZ2FjeS10cnVuaworMzIxMzMgMTE3YWNlODUyMWExZDI5NjdhZDFlMzZjMjFhYzk4OWFhNmQ3MTE1OCBsZWdhY3ktdHJ1bmsKKzMyMTM0IGEwNTAzYmRiMGMyNDJjZDg4ZGYzZjI2ZTY3YjAzNjAwZWVkMWY3NjMgbGVnYWN5LXRydW5rCiszMjEzNSA4MjMzYTAyOTRjNDFlM2RlMDA1NzQ0YzBkZGExNjEwOGY5YzEwNjgyIGxlZ2FjeS10cnVuaworMzIxMzYgMzc1ZmRiODJhM2NhZTMyOGE1ODI3MjdmNDgzZGVmYmQzMmE3YmU1MSBsZWdhY3ktdHJ1bmsKKzMyMTM3IDBkZTBkZWQxOTk2OGVjNDcyMjE4N2Y2ZDk3MmNjYWMwNjY1YTI0MzEgbGVnYWN5LXRydW5rCiszMjEzOCBhY2YzNTk2ZmNjMjhkNTA0ZmZiODE1N2ExN2VjMDQ4MzY2MDQxMTkyIGxlZ2FjeS10cnVuaworMzIxMzkgMTc0Y2U0Y2RlYzQ3MjZkOTExODRjN2M3ZmQ4OWM0MzAwZTQzNjg0MyBsZWdhY3ktdHJ1bmsKKzMyMTQwIDkwYzc3YjhhZjFhNDk3NDQ2MGYyNmZiMmIzN2Q3NWRjY2Q1NGFiYjIgbGVnYWN5LXRydW5rCiszMjE0MSA5NDAwNTA0Y2IwYjI2MWUwMzNlZGRmMjg4YzI2MTkyY2ZkZDUxYzMxIGxlZ2FjeS10cnVuaworMzIxNDIgNGM1OTZkZDYwYzIyZDMwZDRkZWJmODY3NGUxNDRhOTM0YjRkYTM4OCBsZWdhY3ktdHJ1bmsKKzMyMTQzIDc4Zjg0NmZiNTcwYTA2MzJhNzZlN2JlMjhkNTAyOWJjZmIzOTg0M2UgbGVnYWN5LXRydW5rCiszMjE0NCAzNjhiZWJlMzI3NDMzOTAxYzY2N2VmZWYxYjU4NTU5MzcxYzY3NzIwIGxlZ2FjeS10cnVuaworMzIxNDUgMjVlNzQ2Nzg3MWM1ODcyYjliNzFjZjg0N2M5YzM1MmI1NjU1YTNkOCBsZWdhY3ktdHJ1bmsKKzMyMTQ2IDJhMzA5NWE0MTViMTBiYTEwMzU3MzQ4MWE3MWE0YjA0MzcyNjMyZmYgbGVnYWN5LXRydW5rCiszMjE0NyA2NjUzYTU2MDAyZWY5ZDgzMTZkYjhhM2ZhNGQ2MDQ5MDE0OWJkMGEzIGxlZ2FjeS10cnVuaworMzIxNDggOTY0YmQ5N2FjMWY1YmQzZDk1MzdlYjA0Mzk2MDQxODkyNDIzZDdkNiBsZWdhY3ktdHJ1bmsKKzMyMTQ5IDQ4N2RmMjk0ZDMyODEwYzhlYWYxNTBmMmY1Zjc3YmZlZGQyMjA2NmMgbGVnYWN5LXRydW5rCiszMjE1MCBjMDFmZGMzYTkxODA0MmQ5NDFlZDVlYzcwZDZlYjQ3ZmI4N2RhNDYxIGxlZ2FjeS10cnVuaworMzIxNTEgNGZmNjExYjE2NDg0OTMzZjAyMzRmZDA4YzYxZjlhMjdjMTQ5ZDcwZCBsZWdhY3ktdHJ1bmsKKzMyMTUyIDkyZDAxZjEwMmNhMDk5M2ViMTQ0YjViN2MzNjc3MDE0YzhkM2MxM2MgcmVsZWFzZTIyLW1haW50CiszMjE1MyBiNWIzZTZmM2YzMTdlZDhkNDM5NmE3N2E0NTE4YWQxYzFmMmNlM2VmIGxlZ2FjeS10cnVuaworMzIxNTQgNWI1NDYyYWUzMTRkZGQzNTczZTI3NGIyY2RlZWEwMDk4MzA2ZTZlNCBsZWdhY3ktdHJ1bmsKKzMyMTU1IDVmYTgzNDRkNmU2ZjAxZDUyYWMwOTQ2MmZmOWE5NmU4MzIyNzRmMzYgcmVsZWFzZTIyLW1haW50CiszMjE1NiA4YmYwODRjNGFkOWY3NGI4YTM1MTA0MjJlZjUzZjdiZGM2ZjJjZmE1IHJlbGVhc2UyMi1tYWludAorMzIxNTcgYmE3MTYyMjQ5NzRlOTc2OWY4N2MyOTZiMjIzMDNiMjA0NDcwOWVmZiByZWxlYXNlMjItbWFpbnQKKzMyMTU4IDE2MzlmNjM1ZDk4M2I5ZmM0NzBhNzczNDllZjg5NDllMGY3NjIzMDkgbGVnYWN5LXRydW5rCiszMjE1OSA4NzgzNjZiMGU5N2FjNzE1YTJhYzM1MDhiNWU4Mjc1ZDY3OGMyYjJlIGxlZ2FjeS10cnVuaworMzIxNjAgZjIxM2VlNmNlNTVlZThmYTNjMTRiNjU5MGVmZTg2ZTU4MjI4ZjkyZSBsZWdhY3ktdHJ1bmsKKzMyMTYxIGI5MDY0ZWEwNTkzZWExZDczNDcyYmY2NmZkYWMxMDlkZDg0OWEwZjIgbGVnYWN5LXRydW5rCiszMjE2MiBhZTBhZWIwZDYzMWJjNWM1Y2EzZjBmZTM1MjEzYzUyOWIzNjdjNTA4IGxlZ2FjeS10cnVuaworMzIxNjMgNDY5ZmI2Y2U5NjkzNTFmYjMwNzZmZjgzYTg1OTBiZjFiODk3MzkyMyByZWxlYXNlMjItbWFpbnQKKzMyMTY0IGM3YmIyNTRhYjg5MGUxYjk1MjRjZTRiNzVjOThiZmM4YTU1YzRkNTcgbGVnYWN5LXRydW5rCiszMjE2NSA3MTEwM2RmOWQ2NGIwN2RjM2MxMDc1YzE5OWI1OTY2YTQxN2ZiYmIzIGxlZ2FjeS10cnVuaworMzIxNjYgYmJlZDdlMTJiODQyMmMwOTFlZWUyMTc0OTU3YTM2ZjMzZTdkMGExZCBsZWdhY3ktdHJ1bmsKKzMyMTY3IDg5ODRkZjJkYzI3YjI3MGQ4YzI5MDMzMTU3MzA4NWUyOWFkZmNhODIgbGVnYWN5LXRydW5rCiszMjE2OCBiNjFhOWUyMWE2NmRjYTU5ZmUxOGFjZGZlODg5MmYwNmVjYzBkMGQ1IGxlZ2FjeS10cnVuaworMzIxNjkgMzQ0ODM3NjkwNzhiMzMzNzBhZGZkZjc4MjBkYjczZmUxNzY0MmJlNiBsZWdhY3ktdHJ1bmsKKzMyMTcwIGU5MzBiZWJlYzhjMGY1ZGQzYzQwZjkwY2YzYjM1Yzk2MWI0MDc5MTMgbGVnYWN5LXRydW5rCiszMjE3MSBlZTg4NTNjYzhjYTFmNjlhODk3Mzg2YTljZmI2MWMxOGVmNDZhNzdjIGxlZ2FjeS10cnVuaworMzIxNzIgMDE3ZDJlM2VhMmFlNGJhNmRkNDI3NWY1MjU1MjZlYmU5MTI1YTYyNyBsZWdhY3ktdHJ1bmsKKzMyMTczIGZkNDM0YmViNWY1NjA3OWIzNDlkMzIyZjdjOTA3NjNmM2YwMmM2ZTQgbGVnYWN5LXRydW5rCiszMjE3NCA2YWExYzA4MjZhMzliZTY4MzQ0Mjk5ZjFkZDA3ZmNmZTYyNTI1NDBmIGxlZ2FjeS10cnVuaworMzIxNzUgZDEwZGJiOTRjOWVlMWJmZjljMTRlNmM1ZjA4NzgxNTczMTJmNjU5NCBsZWdhY3ktdHJ1bmsKKzMyMTc2IDJkNGMxZTRlNWIzNmI1NDQ5OTIxNjY1NmI2NWY3MzMwMmJhOTI0MjUgcmVsZWFzZTIyLW1haW50CiszMjE3NyBkYjQ3OTljYTIwMjFiY2Y1NWQ5MjdhZmUzNDgyMzQyM2Q0N2I4ZGQ2IGxlZ2FjeS10cnVuaworMzIxNzggOWFjZGM2YzQ0MTZhYzUyMjg4MjU3OGVmODRmMjNiMTBlZGU1NjVhMCBsZWdhY3ktdHJ1bmsKKzMyMTc5IGIzN2IyOTgyMDg2YmMzMzMxMTg5NjIyMTNhYTE2NjEzOGRkMGIwNDMgbGVnYWN5LXRydW5rCiszMjE4MCA2MmU4ODNlMmQ1MTcxMWYwMDhmMTM5ODNlMGUxNDliYzkyOGY5Y2ZmIGxlZ2FjeS10cnVuaworMzIxODEgZTZiZjA4ZGFkZDVjMjE3NjA1ZWU5ZGZjYjE0MTNmZTExYjA5ZmUzZiByZWxlYXNlMjItbWFpbnQKKzMyMTgyIGI0NDg3YTNiNWYxYTFkMWJmMzQ0MjBmOWFkZDM0YWNmNWVmOTc3NTggcmVsZWFzZTIyLW1haW50CiszMjE4MyA3ODM5NWU1YjQ3ODJjYzM0OTI4ODRmYzNlOWM1NWQwOTc3NWRmMWIzIGxlZ2FjeS10cnVuaworMzIxODQgYmEyZDg5MjFhOGRhMDE5YjhmMjAzMjI3MjJmYjZlZjQ2ZjVjYTgzMSBsZWdhY3ktdHJ1bmsKKzMyMTg1IDg0YWNiYTIyNzk1NDI0Y2ZkZTVjMTQzODNkMzIwOTM1ODRiZWU4M2UgbGVnYWN5LXRydW5rCiszMjE4NiBhZmYwODBmMmVmYjQ4NjhiZjhhYTY3NjNmNjQ5N2JkZjNkMzJmNmZhIGxlZ2FjeS10cnVuaworMzIxODcgZTkyYzI1ZDQyOGI4N2YwMjJiZGRjMWJhMGQzMTc4OGVkNjRkNTRlMiBsZWdhY3ktdHJ1bmsKKzMyMTg4IDIxZjdjZmYxNzkwZmRjOGQ1OWU1MWM3YzNiOGE3OWU3ZTFhYjBhNjAgbGVnYWN5LXRydW5rCiszMjE4OSBjZDUwMTEyMTcxNWIwNjhhMzU4YzJjMDUyZjExN2M5YWE5MDY0ZjUzIGxlZ2FjeS10cnVuaworMzIxOTAgN2E2MjgxNDkzZDJjNjcxMDQ3YzFkZmQ1NTg1MGI0YmM3MDk0MGMxMCBsZWdhY3ktdHJ1bmsKKzMyMTkxIGYyMWNkMDc5ZDEwODM1ZjQxNDE0M2NkZTQxZjg5NWExMDUwYWRiOGIgbGVnYWN5LXRydW5rCiszMjE5MiA2ZTdlZmQ2YzI1MTBhMmIyZDFjZDFiNWZiN2IwZWEzMDY1YzFjODhlIGxlZ2FjeS10cnVuaworMzIxOTMgOWRkYzQ5OGI3MDEzYjg2ZTcxYjg4YWI2MDAzOTJmYjk1MTg4MDNkNSBsZWdhY3ktdHJ1bmsKKzMyMTk0IGJjODkyM2ZkZDgzYjU4OGZiYWNkZjU0ZDJhODNjOTJiOWNlN2I1YjEgbGVnYWN5LXRydW5rCiszMjE5NSBkMDhkN2I0YmU1MzIwMTMyMTJmZmJiMDBhNWU3OTlkYzBiZGRmNTVhIGxlZ2FjeS10cnVuaworMzIxOTYgNzUxMTM3NTkyNTJjNzg4YzE2Mjc3MjlmNzM1NmM1OGEzZTI0NzhmNSBsZWdhY3ktdHJ1bmsKKzMyMTk3IGJmYzdhOWZhMzRkNmRiMjM0ZTg5MTgyMzEwOWNiNDE3MDVkZDExOTkgbGVnYWN5LXRydW5rCiszMjE5OCA1ZmJkY2FlZjlkZGFhMjMyNWE3NDU0ZTU5MzQ2ZWZiMmMyMTIyMjQ5IGxlZ2FjeS10cnVuaworMzIxOTkgZmFlYjcwOGJhY2M0MjE2NjdmNjBhM2E0ZjY3MDVjYjkxMTIwNzI3MiByZWxlYXNlMjItbWFpbnQKKzMyMjAwIGRhNzRiZGQ5MzQ0MWJkNDAyNDZiOWNkOTYxNjRiZDk0MTRiNmVhNDYgbGVnYWN5LXRydW5rCiszMjIwMSBiZTJlY2FmYjE1YWQwZWEwMjZmYTk2YmMyMWFjZjVjMWQ1MzNkNjE5IGxlZ2FjeS10cnVuaworMzIyMDIgMjE1ZjFmNDg1MWE0NjM5YWVjZjY0MjE5N2U3M2RmY2VhZjc3ZTI0MiBsZWdhY3ktdHJ1bmsKKzMyMjAzIDFiZDUwYzI4MjAzZmNmMjdlMzBkYmM1ZDNlMDNhODUzOWI1MmI0NzcgbGVnYWN5LXRydW5rCiszMjIwNCBmMzAxZWFlZGRlODU4YmRhN2QwMDJjODhmZTU2OWNmZGViMmQ4MTMwIGxlZ2FjeS10cnVuaworMzIyMDUgOGI0OTQ0NWMwYTBlMDM5MGJmMDViYjEzNjk5NDE0ZDljMWFkNjA2OSBsZWdhY3ktdHJ1bmsKKzMyMjA2IDk4MTAzMmU2NDczNjJmMDgxYTg5MWQ5MTFjYTQ3NDg2YmMxOTNjYmEgbGVnYWN5LXRydW5rCiszMjIwNyBhNWM1ZGE1NDZjMjkyOGM3ZGYxNTg2ODIzOWNhMGQxZWQxMmM2NzExIGxlZ2FjeS10cnVuaworMzIyMDggYzJhZDYyZjRlYTliMzBiNWFlMDNlN2EzMWM1YTA4YzhiMGMwYmNhMiByZWxlYXNlMjItbWFpbnQKKzMyMjA5IDAzYmIwYzQwOGQ1NzMxOGNhNWJlOGU5Zjk1MmZjOTE1ZTMxYTQyNzIgbGVnYWN5LXRydW5rCiszMjIxMCBhMGMwMDIwNTA1MjY1YThlMzg5N2RkNjI0NGM2MmQ5ZGI1ZjFhMWE5IGxlZ2FjeS10cnVuaworMzIyMTEgYzM2YmQxYzgzNmI4YzgwY2RmNmQ4Nzk5OWFiMjAwNGJiZjY2NGNlNiBsZWdhY3ktdHJ1bmsKKzMyMjEyIDBkMjY4YzZlZjAwYWNkZTZhMDE4MGYwZDhmZTZiMzI0MTMzM2I1ZWMgbGVnYWN5LXRydW5rCiszMjIxMyA5NGE5ODY1YWExYzY0NDE5YzNiYjQ5YzgzYmQwYTE1M2JlYzg1ZTA1IGxlZ2FjeS10cnVuaworMzIyMTQgOGM5MzA3NWI5Y2I1NTEwYmE5M2E5MTgzMjNlMDVjZjQxZDgzODNhYSBsZWdhY3ktdHJ1bmsKKzMyMjE1IDAyYzg3ZjM0OGVkYjIyZjhlNWMxMjNmNDhlMmY5Y2I4MWIzM2U4MWEgbGVnYWN5LXRydW5rCiszMjIxNiBhNTdlZTdiMmE4NzlkZTAyYmI1NTdlZDhkZDVjYTJhMzQzMWJjODVjIGxlZ2FjeS10cnVuaworMzIyMTcgOTViNmRkMDRkYThmZGMxZDhkYWQ4NjU3NjM2YzZhN2JkMmMyMTBiYiBsZWdhY3ktdHJ1bmsKKzMyMjE4IDg4M2E2OTQ3OTVmNTcwM2NiNDFlY2ZiNWNhOTJmNjAwYmJlZGMyNzggbGVnYWN5LXRydW5rCiszMjIxOSBlZjA1Zjk4MWJjNGI4ZGFiMWJiZDg5YmFhNTFjZjQ1MjZlYTg4YzVkIGxlZ2FjeS10cnVuaworMzIyMjAgNmYxM2FkZGUxYjUxYmI0OTI5NDZhYWUwZGEyNmNjMjM0ZjMzNzBhNyBsZWdhY3ktdHJ1bmsKKzMyMjIxIGRlNTA5MzRlMTE0NWJmNmQ5MGI2NTk1OWY2Y2UxODZmMmUwNTI5MGQgbGVnYWN5LXRydW5rCiszMjIyMiAyMmFmZGUyNmIzZDE2NmFjMGYyNmE2YTQ1OWZmZmM2ZjJmM2UyZmMxIGxlZ2FjeS10cnVuaworMzIyMjMgOWZlZGU3MDAzYzY1ZjZmNmUxYjE5NTc4NTg2OTQ3MmVlYjk4NzQwOSBsZWdhY3ktdHJ1bmsKKzMyMjI0IGQyZDIzMmUyNDI3YmY3NGVlZmZkYzU0YjJjN2YxY2VjOTNiYWU5M2EgbGVnYWN5LXRydW5rCiszMjIyNSAzY2YyNmI5Zjk2ZjdlNjQ2NDA4NzIwYjNhZGQ1YzBkZDMzYWFkNmNjIGxlZ2FjeS10cnVuaworMzIyMjYgMTE2NjBmNDM2MWY4YTM2ODk3NTlhY2FhNTYwMWNmZjhjYzA0MzZmOSBsZWdhY3ktdHJ1bmsKKzMyMjI3IDFhZWFkMGM4NDUwNzdlMDgwNzU0NzIyYWYyOTAyODdjZDcyMjNmZDMgbGVnYWN5LXRydW5rCiszMjIyOCA1OGRiNWZiZDljMjgyYTQ5NzVkNzQ1YWVhMGY3MDZlNzhiNjY5MGM3IGxlZ2FjeS10cnVuaworMzIyMjkgMjBlZTY4Y2IwYmM0N2M2NzNkMGU5OTJmMjQ3YjQ1Nzg4MjA3NDZhMCBsZWdhY3ktdHJ1bmsKKzMyMjMwIDdmZTMzYzE1NDFkZmZhZjgxYTkzZjlmMjZkMTBiNzFlYTJmYTAyMmYgbGVnYWN5LXRydW5rCiszMjIzMSBlZWU0OTY5YWRiYWUwZDE2NDJmYTFhMmM0NDZjNTA3M2VkNmI3NmZkIGxlZ2FjeS10cnVuaworMzIyMzIgOTQ0MTY5NGE3MGM3ZWQzOTgzNjYwNzY0MmRmNDMzY2EyZGFlNDc0ZiBsZWdhY3ktdHJ1bmsKKzMyMjMzIDQzNmQ4MTJmMmI5NGI3ZGFiN2FhZDJjOTcwNTMxN2QxZWFiZWZjZTMgbGVnYWN5LXRydW5rCiszMjIzNCBmM2IyNGEyZjZmNGRhODZhOTI3MGU5YWE0YjUxNGEzNTYxMDIyZjUzIGxlZ2FjeS10cnVuaworMzIyMzUgODMyMjA3N2QyMzRjZmFiODBhZTk4NmMzNjYxMDM1MTYzOTdjMzQ4ZSBsZWdhY3ktdHJ1bmsKKzMyMjM2IDY5NTIzNzNlOGZlNWM4NzJlNjM3OTE0ODAyNjIyOThlYzIzOGI1ZmEgbGVnYWN5LXRydW5rCiszMjIzNyA2N2QzNmY0ZGZlYTEyNGFlODVjMGMxMGQyOGI4MzM4MzNhYjcyYjJkIGxlZ2FjeS10cnVuaworMzIyMzggYzcxYjliYTFmMDRjMTQ4MjlmYTk2NTRkOWRkNTNkMGJiMzc5ZDFlYiBsZWdhY3ktdHJ1bmsKKzMyMjM5IDA3OTJjYWE2MzcxYzlkMWQyNWQwNGJiMGM3NTc1ODE2MjQzY2NmZWUgbGVnYWN5LXRydW5rCiszMjI0MCBiMTY3MTU1MGM3ZTFkYzc4MjgxNzJiYjBiNDYyYTY5MWM3Njc4ZWIxIGxlZ2FjeS10cnVuaworMzIyNDEgNGM2NTg1MjUzZTZmMTMyNGQyMTNhZjRiOWZhNDZkMWY4NDllMTRjMCBsZWdhY3ktdHJ1bmsKKzMyMjQyIGI0YjhmZTJhNjMyYzNiY2I0NTJiYzA0MGRhOGQyMzhjYTg3MzhhOWUgbGVnYWN5LXRydW5rCiszMjI0MyA0ZjBiN2FjZmZjN2Q0YzRjN2ViNDJkM2MwYjA4Y2NhMjlmNTdiNTlhIGxlZ2FjeS10cnVuaworMzIyNDQgZDUzNTdhYWRlNGI3MzA2NDcwY2FmODRmYTBmMWViMjkyZjBkZDJhYyBsZWdhY3ktdHJ1bmsKKzMyMjQ1IDlmZGZhNzM2NTc4ZDczNmQ3MDhhNDc0ZTUzYzY1ZGM4ZjA3YWU1OTQgbGVnYWN5LXRydW5rCiszMjI0NiBlYjU1MTg4ZjE2M2FjZWU3YTNjOWFlNzkxMmU5MzMwZTI2NDJkZDM3IGxlZ2FjeS10cnVuaworMzIyNDcgZGRkOTA2ZWZmZDljM2I2NWQwZTEzYzlkODU1ZmM1MzYzYzEzY2UyYiBsZWdhY3ktdHJ1bmsKKzMyMjQ4IDgyNGRjMjhmOTIyZDI5OWMxNzZiYjczNjkyNzI2NDMyM2ZkNzVlZTggbGVnYWN5LXRydW5rCiszMjI0OSA2YzAwMDQ2OTA5NDE4YjcyMWJjYWQ0MTFmOThiOTFlN2E0ZTJjNjEwIGxlZ2FjeS10cnVuaworMzIyNTAgODFlNWJmNjIzZWNmNzU4YmMyNWM2MmNiYjFlYmQ0ZWMxMjBkZWQ5MiBsZWdhY3ktdHJ1bmsKKzMyMjUxIGU4MGYxOGE0OWNjOWFjOGUzMTFmNDFkOGQ2MDcxMzE0ZmIwNDc5OWUgbGVnYWN5LXRydW5rCiszMjI1MiAwN2Q4ZTBlYWIzYWY0OWQ1OGUzMjAyYjllODI2OTRlMTk5ODViZTBjIGxlZ2FjeS10cnVuaworMzIyNTMgMmNmZDkxNmRkMzEyNDlkZjJkNDU1OGFlM2I5YmQzZTkzYmFmY2QxMyBsZWdhY3ktdHJ1bmsKKzMyMjU0IDNjMzkxOTVkYWI5YTQwZWYzMTkwOGY2NGQwZmU4NGRkZTM4YWEzYjAgbGVnYWN5LXRydW5rCiszMjI1NSAzZDkzYzMwMzljODcxY2NlOTE5NzhmZmM3YjQ4ZTY3MzFkYWRkNzdiIGxlZ2FjeS10cnVuaworMzIyNTYgOGFiNzUyZGI0Nzc1ZDU1M2Y3MzFhZmQzZDAzMTIwOWRkYjdmODA1MSBsZWdhY3ktdHJ1bmsKKzMyMjU3IGZhODJmODZlYWEwOTk0MGE2NmNlMzkzNGI4NTY3NTU2NGIzZjU3OTcgbGVnYWN5LXRydW5rCiszMjI1OCAzMzkyZjM4YmQxMTRiOGUxNTlhMjFlMjAyZGYwMGM0ZjRjZWMwZWI0IGxlZ2FjeS10cnVuaworMzIyNTkgOTQ3YzI5MzdjMDllMjIxM2UxNTViMDM1ZmRiOTQzYmFmMDlhMWQyYyBsZWdhY3ktdHJ1bmsKKzMyMjYwIGEyNmI2YjI3NWZiNzJkOTg5N2NlMWM5OTc5YjIxMGU2ZjViZjE4NWUgbGVnYWN5LXRydW5rCiszMjI2MSAzNmU5YmE0MDU0OTI1OWYzZWUxZTc0ZTJmNDU4M2Q4NjhiY2ZkZTUzIGxlZ2FjeS10cnVuaworMzIyNjIgYzYyOWVkOGE5ZGJiM2E4NGNjMzVmZTljM2RhYjI3YTRmZjVjOWVlMiByZWxlYXNlMjItbWFpbnQKKzMyMjYzIDExZjdmMTE4MDcyYjY0ZmYwMWZmMjM2MjQyOTE2OWVkYzQ1YWVlYTEgbGVnYWN5LXRydW5rCiszMjI2NCBhY2ZhMGZmOGM1YTQwMTZiNTllZjA1NjFkMmI5YTRjMTYxZTcyZjQxIGxlZ2FjeS10cnVuaworMzIyNjUgOWJlNDEwMzgwN2Y1Yzc0NWZmOWIyNTA2NGZjNmYyZjc2OGM0ZDFiOSBsZWdhY3ktdHJ1bmsKKzMyMjY2IGJlMGQ0ZWM2YmY1YTliODBlOTFjYTUzZmIzZDI3M2FmYzY2YmMwOGYgbGVnYWN5LXRydW5rCiszMjI2NyA0ODI0YWFiMTI1NDliYjBjMzdjYTgwMmEzM2UxYzcwMDE3ODAxZmU2IGxlZ2FjeS10cnVuaworMzIyNjggYThlNjQwYjQ3N2Y2NmQ1YjYxNTIyYmQ3OWM5YzU4MDcyMGY0YTQwNCBsZWdhY3ktdHJ1bmsKKzMyMjY5IGNmZWNlMTgyMmU5NDIzNzFmN2Y5OWI0YjIzZDJmNjY2NWVkMTIzOGEgbGVnYWN5LXRydW5rCiszMjI3MCBjYTI0ODIwMTJiM2M2MDBmODY1ZDNhZjlmODk0MThlZGViOGYyZmZmIGxlZ2FjeS10cnVuaworMzIyNzEgOGU1NDFiMDc4ZWRiNTA5YjZjZGVmMGMyMDc2MTBkYzQ5ODNjMjliZCBsZWdhY3ktdHJ1bmsKKzMyMjcyIGI5NzQ1Y2Q3OTFiZmRkYTc4MDA2ZjBiZDdiMjNlM2M4NjQ4MzM3OTAgbGVnYWN5LXRydW5rCiszMjI3MyAxOTNiOGFlYzAwY2UxYmUyZjAzYWE5Njk5YTVkNmY2NTE2Y2Y3OTMwIGxlZ2FjeS10cnVuaworMzIyNzQgOWQ0ZTEzODQ5NGZiMzEyY2UyOGE4NTI0ZTkxYjA1ZDI2NGY4ZDM4NyBsZWdhY3ktdHJ1bmsKKzMyMjc1IDBlODQxNmJlMjA4ZTBlYjYwNGNmZmZlN2NiNTcwZjYzNmIzYzAzZDEgbGVnYWN5LXRydW5rCiszMjI3NiAwNGIxNzI4NDMyOTI5ODEyMTQ4Y2IxYzY4ZDg1ZGU4NzZlNTkwODFmIGxlZ2FjeS10cnVuaworMzIyNzcgZDhhOGY3NDRhM2U1MDhiNWUxMzA3Mzc2MjZmYzQ1NjRkOTU2NWFiMiBsZWdhY3ktdHJ1bmsKKzMyMjc4IDdmZGEwOWY3NTFhZDViMWM5YjQ3OGY5M2Q3MGIzNjc2NzcxZDY4M2QgbGVnYWN5LXRydW5rCiszMjI3OSAyOGEyOTc1NTE0Y2Q2MWQ0MzYwMGM4NTNlZmM4ZDc5MmY2ZGEzYmM1IGxlZ2FjeS10cnVuaworMzIyODAgNTYwMDZkOTdiY2VmMGJlNTBjN2JiZjhhMmJiNjVkMzY5MDhkMGVhNCBsZWdhY3ktdHJ1bmsKKzMyMjgxIDFlOTAwNDU1M2UxZDkwNWI0MTA5Y2Q3MzY2OTlmZGJiOGQ1YmQ1MTggbGVnYWN5LXRydW5rCiszMjI4MiAxNmY0N2JkNDMxYzQ4NzkyY2VjZTc1NGIwYzBkNGRhMDkzNGNmMWRhIGxlZ2FjeS10cnVuaworMzIyODMgMmZhZTVmNzYzMWVmNGFhZTdhMGMxYmRhYjZjNDUzNzI1MmJkNmQ5MSBnZXRhcmdzX21hc2tfbW9kcworMzIyODQgNGQyMjU5Y2I3N2EwZTFjZDdkODU0ZGQwZDUwZDU4MmVlNzNmMmI3OCBsZWdhY3ktdHJ1bmsKKzMyMjg1IDdmYTE0ZjIwYWVhNDIyMzJiNjRhNmFlMDY0MjQxNzA1MTJjN2E2NTAgbGVnYWN5LXRydW5rCiszMjI4NiA4ODM2NTI5ZTllNjY3MGE1NWY3NDU3MTdlYzI5YTU2NTVhNDNlNjEyIGxlZ2FjeS10cnVuaworMzIyODcgZWUxNjVmZTFiNDJmNjM0YzZjOTYwYjFmMjZlNTYyMWE5ZjUyNmM1MCBsZWdhY3ktdHJ1bmsKKzMyMjg4IDVmMWVmMTg4MmIyNTE4OGVlMDZlMmE4NGJlY2M4N2FkODg5ZGNiNDIgbGVnYWN5LXRydW5rCiszMjI4OSA3ZTY2NWMxNjA1ODNmYjY2Mzc4ZDNlYzVmOWY4NDQwNjM3NzJlZDlmIGxlZ2FjeS10cnVuaworMzIyOTAgZWU2ZGYyYzY2OGVhY2NkZDljMDNhMmQyNDY3N2FlNzAxNDJlMDY3ZiBsZWdhY3ktdHJ1bmsKKzMyMjkxIDEyZDQ0MDllNTllMzAzYTM5NzhmNWQwYjQzM2E3ZThkNjc1Njc5NDYgcmVsZWFzZTIyLW1haW50CiszMjI5MiBlMzNmZWRiNTgxZjRiMDdhOWY4NDU3ZTgwMTg4OTg5YmMyNjg4ZTFjIGxlZ2FjeS10cnVuaworMzIyOTMgMjM5NDI5ZGMwMjlmYzhkNTU3YWM2ODBjYzgyNDIzYjVjMmNjZDFlYyBsZWdhY3ktdHJ1bmsKKzMyMjk0IGE5MzhiMTNlMDI5MTEyMzgyYWY0MDVmOGRhMmIyMWZjMjA3ZTRiZDUgbGVnYWN5LXRydW5rCiszMjI5NSA1YmZkYmMwZmQxNzIyYTg0MzNjMzkzOGRmZmQ0Mzc1MDRiMjllN2M1IGxlZ2FjeS10cnVuaworMzIyOTYgMDQ2YmM5ZDdmYjBlNDMzYzQ1ZjE3NzcyNjc0NzE2ZmZlMjJhMTQxZiBsZWdhY3ktdHJ1bmsKKzMyMjk3IDBkOGQ0YzhkYzY4YmI4ODliZTRkM2E1Y2VmNmYxNzZlZjI1MzliYTUgbGVnYWN5LXRydW5rCiszMjI5OCBjNTU1Y2QwMmIwZjk2M2NlMDQxZTZkY2MyZmVlNjQ1NDU2NWI3ZjEzIGxlZ2FjeS10cnVuaworMzIyOTkgMTkyNTQxMzQzMWE2ZWMyOGZjODZhOWY2Nzk5Y2Q2ODJhYzMyZTFmYSBnZXRhcmdzX21hc2tfbW9kcworMzIzMDAgZmRhMmY3ZDc4M2MyNGFmM2FhYzM1MzkxNTA4NTJjYjdjZGIxYzcwMiBnZXRhcmdzX21hc2tfbW9kcworMzIzMDEgZDQxZDhkZTk3NjhmMzdmMTcxZTczYTA3YWU1N2I0NjViMTdkYjllZCBsZWdhY3ktdHJ1bmsKKzMyMzAyIDJhMjNmYzgzNzIwZmExMjY0YzNjNWRhNTZhMzI2MzMwMzI1N2U4NTMgbGVnYWN5LXRydW5rCiszMjMwMyBjMWJhNTA3OTBjODM4NDg1YmJkYmQzZTg1ZmIxZjM5NWRjNWEwZTEzIGxlZ2FjeS10cnVuaworMzIzMDQgOWViNjk2NGI0YjZjOTg4ZDg2ZWNlNGFkMTM3N2U2NWMyODMwNGJiYiByZWxlYXNlMjItbWFpbnQKKzMyMzA1IDE1NTZhMzhkNTI3ODE1NDFkOTlhNDA3MGI0MmZiOTQzYzNjODkxZWYgbGVnYWN5LXRydW5rCiszMjMwNiA1ZmYxZjJmOWZjMzQ5M2YzYmFjYTIzNTdkNTQ2N2E5ZmI1MmU5ZGVkIGxlZ2FjeS10cnVuaworMzIzMDcgMTgxNTE2NmU4MDk3ODc1ZTI2YzI2NDNjYTdlOTNhNDYyZDQwZWIxMyBsZWdhY3ktdHJ1bmsKKzMyMzA4IDMxY2I4ZTAyNjBkYjUxMDJiMGFiNTA2YzRhZWUzOWM5ZDEyNDI4YWUgbGVnYWN5LXRydW5rCiszMjMwOSBhYjBjMDY3ZmUyODZmYmQzMDNhY2VjMTY4ODM3NDI3NGI1ODk2NjI3IGxlZ2FjeS10cnVuaworMzIzMTAgMjc2MzUyYmZjYjQyYjQxYWFlOTY2MTRmYWIzZGUzMjE2MWNlM2Y4MiBsZWdhY3ktdHJ1bmsKKzMyMzExIGNhNjRjMWJlMjMwYmFjZTRhM2JlMmIxMDNjOTMwNDA4YjIxMjE4N2MgbGVnYWN5LXRydW5rCiszMjMxMiBjZjQ1YWQzY2E0Yjc1ZGRjZGJjNTEyZDcyYjkzYjNmYzBkNTQxNGIwIGxlZ2FjeS10cnVuaworMzIzMTMgNDYyYTRjMzExOGJiYzA2ODI5Y2FmMWQwYzI4YWZjZjRhMzY3MTRkZCBsZWdhY3ktdHJ1bmsKKzMyMzE0IDhiZDM0ZGQ1OGE5MmFhMzM0NzNmOWY5N2ViMjc0Y2I3Y2IxNjZiMzcgbGVnYWN5LXRydW5rCiszMjMxNSBjNWJkOGE4NDUyMjM5ZjM2YmUyMzE4YTYzNDRjNTZkNzg1OTk3N2EyIGxlZ2FjeS10cnVuaworMzIzMTYgNzBkNmY4YjBmYzY5NDVlNzFmNDQzOGNlMDdiNGE5MWNhMTMwYzMxOCBsZWdhY3ktdHJ1bmsKKzMyMzE3IDQwZDI4N2MzZDkwNjIwYTc3NjUzMDE1ODg5ZGVkNWJiYjg0NjRkNmEgbGVnYWN5LXRydW5rCiszMjMxOCBkMGFlNjIwYWZiZDRkNDFiOGE2NWYxMjUwNTJhYzkwZTI0ZTdkNmY1IHJlbGVhc2UyMi1tYWludAorMzIzMTkgZWQ1ZWNkNjNjMWNmOWI3ZjRmMjk5YzgxMmI4NjhkZTg1YTBlNzMwZCBsZWdhY3ktdHJ1bmsKKzMyMzIwIDk2NDJmYjRjZGEyZmU0YWY1NmUwYjhjOThjOGRmNWM1NTMyMjYyMjMgcmVsZWFzZTIyLW1haW50CiszMjMyMSBjOTkyNWZhMjllYTM3ZTU1ODg0ODZkOTc1MjY1OWRiZGNjZmEzZDQ2IGxlZ2FjeS10cnVuaworMzIzMjIgMDZkMTM3YTQyN2U5NjExZDNmYjI2MGEyMTNkZjQxOGZjYWU5Yzc3ZSBsZWdhY3ktdHJ1bmsKKzMyMzIzIDc5MjJkNWY0Mzg1NDNhNTc2NWRlNjRmODAyMjljZTMxNzFkMjAzNDcgbGVnYWN5LXRydW5rCiszMjMyNCBhNDE1NGRkNTkzOWFhNmJiM2ExMTI4OTM5ZTkwNzRkNmIxMzgzZDE1IGxlZ2FjeS10cnVuaworMzIzMjUgZDZhZmUxOTZlZjgyMDgzZmYyMjI2MjBjOWFhNTk1ZWZjYzUzOWZiMyBsZWdhY3ktdHJ1bmsKKzMyMzI2IDY1OGIxMGM1YmEyYTNkNmJlMTY3ZjJmNGQ3YTExZTNhN2I2MTY2MGQgbGVnYWN5LXRydW5rCiszMjMyNyAwMTgxNzBhNGEyZDdhYzI1MGFlZGYwNzdmYjk2OGU2YWM5NjhjODdlIGxlZ2FjeS10cnVuaworMzIzMjggYWVmMDFhMDc2ZWY5NjdhZTc5M2M0ZDYzYzcyNDQwYjUxMzJkYzEzZCBsZWdhY3ktdHJ1bmsKKzMyMzI5IDk3ODkwMTM0YzljNDQzOTNiYjM2YTM4MjdjMDdiNTU2YWIyMDUzOTYgbGVnYWN5LXRydW5rCiszMjMzMCA0MWY0NThiOGRhMjBhMzM0ZWVjNjc4MThlZGQ5ODY4Mjc5YTVlNDQ2IGxlZ2FjeS10cnVuaworMzIzMzEgNDJkZTUwZTE5MmRmNWI5ZTQ4MDYzM2EyM2M4Njk4ZmZmY2MwMDlmNSBsZWdhY3ktdHJ1bmsKKzMyMzMyIGQ2ZTEzZDEyMTBjNmI1ODUwZmExNTE4MWQ0MGRiOWI4MDg5NWYwNjkgbGVnYWN5LXRydW5rCiszMjMzMyAyY2UzOWE3YmU3OWQ5YTViMTdlOGRjZDdkMDg3MTJiZjc0YWE4MmI1IGxlZ2FjeS10cnVuaworMzIzMzQgZmE3ODc0ZWM2YTcxZWU4Yzk5YzMyMmMyYjg0ZGExMTBjMmE1MDZjMCBsZWdhY3ktdHJ1bmsKKzMyMzM1IGJlMTQ5NzBhOTk1NTIyZmVkYWE4OWZiYzQ3NWZiMTQ3ODI1ZDBiNWQgbGVnYWN5LXRydW5rCiszMjMzNiA1MjkzMGJlOWRmZWE1YTU1YjRjZDgyMWIwNGFlOGE2M2Y3ODZkZGRkIGxlZ2FjeS10cnVuaworMzIzMzcgZGU3NjkwNTI3NTg0M2U3OWE2NGJhNTE1NzJlOTViYTcwYThjYTM3NyBsZWdhY3ktdHJ1bmsKKzMyMzM4IGVkY2ZkYjJhODUyZTlhZjNlZDlmN2FlOTU1MjI0NzU4YTRlOTAwYjQgbGVnYWN5LXRydW5rCiszMjMzOSAyOWYzYjIzNzUwNDllZjA2ODI3ZTUzYjFjMzBkNTc3ZmU2MTMxNTM5IGxlZ2FjeS10cnVuaworMzIzNDAgMTQ5YmQwZWY5NGZiODRkZTliY2EyYTAwMDVkYjZjNzRhN2UyZDZhYiBsZWdhY3ktdHJ1bmsKKzMyMzQxIDgyMGQ5NTcwZWRlYmMzYzJiZDhmZmQwNWQ5NDE0ZDgwZTRhOTFmZTEgbGVnYWN5LXRydW5rCiszMjM0MiBkMzEyN2I2NzFkMzZjMzhkOGQ3YmNkNGJkNThjZWQ1NGY0ZWVjNzcxIGxlZ2FjeS10cnVuaworMzIzNDMgZDA4ZDE1YTcwMjk1MGI1N2FkMmI1ZGNjN2ZkMmFjOTIyNWY2MzBhMSBsZWdhY3ktdHJ1bmsKKzMyMzQ0IGVjMmEwZjE1YzE0Y2QxOWQ0NDk0M2NjZmZhOWI4MmE3OWZkYzY3MWEgbGVnYWN5LXRydW5rCiszMjM0NSAxZDhlODRkOTZkZGVjNmRmMTcwNmQ4OGEzYjU4N2M4YmQ4NzBlYThkIGxlZ2FjeS10cnVuaworMzIzNDYgYWI0ZmJmOGViYWIzYjBiNTgwNmE2YjQxZGRjYzI4OTJhOTRiZmNkZiBsZWdhY3ktdHJ1bmsKKzMyMzQ3IDEzZDBhM2M0ZTQ2NTc1YmM3MmRlZjM4YzQ0OTc0NWM4NTQxNjdmN2QgbGVnYWN5LXRydW5rCiszMjM0OCAxNmVmNWI5YmM3ODljYjlhMzg1NDBkNTEyMWVjMjgyNGQ0MGQ0NzM2IGxlZ2FjeS10cnVuaworMzIzNDkgNWU2ZmZhNjU1NDYyMzRjYjI4YTE1YTY0ZGNkODMxMGIzMzM2ZTQ0MyBsZWdhY3ktdHJ1bmsKKzMyMzUwIDAzYWY0NmQxYWMyODQwNTY3NTUxZGNkOGExMjJkYzMwYjMzNDU5MDEgbGVnYWN5LXRydW5rCiszMjM1MSA0NjQ5ZjMxOGZjYjAyZGFmYmVlMmY2MTk5NDczZjA4MWE2OTU0ZmNhIGxlZ2FjeS10cnVuaworMzIzNTIgODE2MGJjNzhjOTNhYjFhNjIyZWI4NzVmOWEyMDQ3MzRkMjEwYTVkZiBsZWdhY3ktdHJ1bmsKKzMyMzUzIDg5MjA1ZjViYjQ0MGJmY2FiNWRmMGY5YmMyYTQxODA1YzkwMDZjMDAgbGVnYWN5LXRydW5rCiszMjM1NCA5ZWEwY2NkZGJlYWQzNjk0ZmYzMjA4ZDhiNzIxNTI1ZmRkYTFjMmVkIGxlZ2FjeS10cnVuaworMzIzNTUgZGU2ZDFlN2U5ODI1NzI0MmRjZTQ0MjEyZGE1N2VjYWQ2NDFiNDRmZSBsZWdhY3ktdHJ1bmsKKzMyMzU2IGFjOGRiYmU2MjQzMmI5NGYzZDYwMDZlOThiOThjMWEyZWNhMDk1MGIgbGVnYWN5LXRydW5rCiszMjM1NyAwNTFhNGYxMmNjNDYyNTcxNzg1M2Q4MzVjMzEwZmM1MTQ5YjM2YmEzIGxlZ2FjeS10cnVuaworMzIzNTggZjk2OGU5M2UzY2UwMTg3MTc2OThhZDE0YzQyNmNkMTM1ZDA2ODNhYyBsZWdhY3ktdHJ1bmsKKzMyMzU5IDMxY2JkNDZmMGM3ZDY4ZGIwZWMzOTcwNGM4MzNkZmI4Y2RiZDFmNTQgbGVnYWN5LXRydW5rCiszMjM2MCBhYzU4NjA4Y2QyM2NlODZlNWJiYzUzMjVkNjM1MTk5NjMyZTNhYzE5IGxlZ2FjeS10cnVuaworMzIzNjEgODZmNDkzM2ZhNDI5NWUxZWRkM2IwMGY2MDViMzFjYmFjMzM0NTE5NiBsZWdhY3ktdHJ1bmsKKzMyMzYyIGJhOTA5MjM2ZWIxM2IxMDhlMDUyMmY2NmU4MDhhYzJlNDRiZjg4ZmIgbGVnYWN5LXRydW5rCiszMjM2MyA0M2QzMmY0Zjg5MTM4NDc0ODlmMzYwMGVmY2ZjZGUyNWUxYWFiZDRiIGxlZ2FjeS10cnVuaworMzIzNjQgNWM4ODZlMDNiNDNlNDFjYjcxZjY0ZjJkNmNiMDYwYmNlZjQxZmZjYSBsZWdhY3ktdHJ1bmsKKzMyMzY1IDdiYmEzZTJiZTU0ZTdlYWE1MDAyZjY5MDNiZjA3MDQ2MDI2YmJjN2EgbGVnYWN5LXRydW5rCiszMjM2NiBhYTYzNGFkYjQxYTkwMGFkOGM5NzYwMWU0MjBjZjQ5NWFkYjQ5MGVmIGxlZ2FjeS10cnVuaworMzIzNjcgZDc5MjU0NGFiMTExZjQ0MmM5NmVkNGIwYTE3N2JjYzQ5NTUyYjM3MCBsZWdhY3ktdHJ1bmsKKzMyMzY4IDUyZjNkOTBjMTdlODNkZTUzNDU0ZDg4MTUyNjY5YmFhNzdiYzZiNjQgbGVnYWN5LXRydW5rCiszMjM2OSBjZWM5ZDEzYzQzZmY3ZGI4MmFiODBkNjMwYWNiMzZjNTg0ZDI5ZmRkIGxlZ2FjeS10cnVuaworMzIzNzAgZDMyOTdlMjk4MjExYjhjN2JhNTE2ZjY5MzMzYzAwZDI5YzU5ZDNiNiBsZWdhY3ktdHJ1bmsKKzMyMzcxIDY2Y2NlYjc1NjJiNTZhOTM0ZmY2MGVhMWVmMzEyZjNkNGM0MWI1NzcgbGVnYWN5LXRydW5rCiszMjM3MiBiZDY3OGU2NWY3ODQzMjBmNDNiYzNkYzJiZTg4OThjNmY0YWQyOTdlIGxlZ2FjeS10cnVuaworMzIzNzMgNmUyZTU5ODUzNzVjNjI0N2VjNmJlMDVkYTQwMDQ0ZjkzN2QzY2NjOSBsZWdhY3ktdHJ1bmsKKzMyMzc0IDAxNGNmYWE3YTc4NGZiYTBhMjYyZmQzNDNiNDIxM2E5YWUwZTBjOGMgbGVnYWN5LXRydW5rCiszMjM3NSAxZjk2MDQ5YTc5ZDRjZjlmMjkyOTkwMzAzN2Q4YjE3MWU4NDQ5ZTE2IGxlZ2FjeS10cnVuaworMzIzNzYgYzBhMjZjNWE3OTM2NDcwZTE5YzJiNzU0MzczMjM1ODQ5MzhlZDUwMCBsZWdhY3ktdHJ1bmsKKzMyMzc3IDU2M2JhYTNlNDI4ZjY5NDY1YmM0ZDE4OTkxNDMzMDhhM2QyM2I3ZTkgcmVsZWFzZTIyLW1haW50CiszMjM3OCBiNDlmZjA0YzE4ZGU3ZWQwZTRkN2VmNTlkZDNiMjk3ZGI0NDFlN2YzIGxlZ2FjeS10cnVuaworMzIzNzkgODlkYzMyNjc0NTU0ZWVkMDA1NjM2MTMzNDRhMjdlZGVjMmQ2NGFiYiBsZWdhY3ktdHJ1bmsKKzMyMzgwIDc1NjUxMmZiYjUyNzhkMjUxZDQ1YjI5OTcyNDJmOGRkMmMwYjdiMzMgbGVnYWN5LXRydW5rCiszMjM4MSBhMWQ3Y2NkOTVhNWU4M2Q2MTQ4OTgwY2FhOGNiOGEzNGQwM2Q4NmI4IHJlbGVhc2UyMi1tYWludAorMzIzODIgMGFkNzQ1M2E5ZjgyNzc1MDMwNmVmZTczYmQyMGE2ODE4ZWFmNDIzOSBsZWdhY3ktdHJ1bmsKKzMyMzgzIDA4NWY2ODAwOWNhZDgxOGNlYjRkMzMxMzcwZTI1OTc4ZDEyZWQxYWIgbGVnYWN5LXRydW5rCiszMjM4NCA5YzdhZDFlNDU1OTYwY2NlNzQ2MjM3YWJjM2FmZmFiZmU3NzAwOTgxIHJlbGVhc2UyMi1tYWludAorMzIzODUgZGQwMjJkNDIzYjhhMDg4NmRlZjYxMzQ2NzE4YTcwMzllZmRkMjZjZCBsZWdhY3ktdHJ1bmsKKzMyMzg2IDA3MTcyNDIyOTViMTFjYjM3ZmFhMDhhYjFkMmJjYTc2N2NmNjA2YjkgbGVnYWN5LXRydW5rCiszMjM4NyA5OWU4MmRiYWYwY2NkODI5ODc3NjRhZDdhZGNiYzkwNTQxMzExNmM4IGxlZ2FjeS10cnVuaworMzIzODggN2YyMzY2N2QzY2ZjNGFkZGI0MjE3MzcyMjBjODVkNzE4MGJkZWM4MiByZWxlYXNlMjItbWFpbnQKKzMyMzg5IDNkZjBjZjE2ZGVmYzIyOGY3YzM4MmRlY2JiMjcyM2JjODBkMmEwZjEgbGVnYWN5LXRydW5rCiszMjM5MCAyMmQxNzc2ODJhZTE0ZmYxN2ZhMTZmNmY2ZjEyNjU3ZmJmMmUyMzQwIGxlZ2FjeS10cnVuaworMzIzOTEgMTcxZGJkZGYwYTAyMTY3MGI1MzhjZjUzNDU1OTI0NjUyZDI2NTNiYSBsZWdhY3ktdHJ1bmsKKzMyMzkyIDY1MDNhZDhkY2E4ODE3ZGMxMDRhY2U4YmM1ODkxNzA3YjE4NmE5MGMgbGVnYWN5LXRydW5rCiszMjM5MyA2MzQ4Yjg1YmNiOWRlODBiNTg4NmUxYjQ3ZTA2M2VhNDVmNjRkMjEyIGxlZ2FjeS10cnVuaworMzIzOTQgOWMwYWQ2OTRlM2UyMGEzZjI2ZmVmMGEzYzhiNDIyMTM4MDcwODk1ZCBsZWdhY3ktdHJ1bmsKKzMyMzk1IDJjNzQ0N2VmYzJhOGQwZTE2ZTBmZDQ2ZTM4YmRkNTRlZGQ0ZmY5ZDkgbGVnYWN5LXRydW5rCiszMjM5NiA3NTM4MmQxMDI3NDljY2U5NDBkZDMwYjM0MTcwMzM1ZTQzNTg5YzFhIGxlZ2FjeS10cnVuaworMzIzOTcgNjBlYWNiZWE3MTk5MmMxNjcxZTYxMzkxYTg2Y2U4ZDA0ODQ4ZWFmMiBsZWdhY3ktdHJ1bmsKKzMyMzk4IDliNzk2MDUxNzFlYmQ0ZjU1Njg4MjkxNzRhOTNhOGFmNjliZjJmM2YgcmVsZWFzZTIyLW1haW50CiszMjM5OSA5NDY2YjZlMjQ4MzMyZTVhMjZiYTk5OGFkMGRhMDVhYzhmODZiNTRjIGxlZ2FjeS10cnVuaworMzI0MDAgMDBiODk0NzI2MjBkN2U0YmE4ODRlYTk1YzIzZDQxMmM2YjMwN2U0ZCBsZWdhY3ktdHJ1bmsKKzMyNDAxIDI5YjZhNDhmNGM0NTBjZmZhNzc0ODA3YmJhMGVmZjBmZDA1MTI1OGUgbGVnYWN5LXRydW5rCiszMjQwMiAwZWE1OTkxZjZlZGJjNGMyNzNjZTU4ZDY1MTM3YWY0MTc3ZGU2MjgwIGxlZ2FjeS10cnVuaworMzI0MDMgZTA2ZjJiZjU2YjQwNjgzNzRjOTJmYjMyNzg2ZDI2NWMzZjU2OGY4ZiBsZWdhY3ktdHJ1bmsKKzMyNDA0IGM5YmVlMTFlYWE4YjllNWM5YzJiY2IzZDBkMjE1YWQzOWRhZmE4ODAgbGVnYWN5LXRydW5rCiszMjQwNSBiYzQyMzFlYjI3NTg0MTZmNjUzMTQwZWQ5ZGQ2ZjBhZjA2NTk2OGQ2IGxlZ2FjeS10cnVuaworMzI0MDYgMjExYzAyZmI2NTcwYWZlMWMyZWQwNDA5YTk5YWIxMTgyOGQxNzk5NSBsZWdhY3ktdHJ1bmsKKzMyNDA3IDNlYmI0YmNlYmRkN2VkNjQ3MDYxOTYyZDI5MDZmNThjMDkzMDg3ODMgbGVnYWN5LXRydW5rCiszMjQwOCAwZDUzMDI5Yjc5NDk3YTYxZDg3MWRiYWEwNjIxMTMyMjMwMWY4OGI2IHJlbGVhc2UyMi1tYWludAorMzI0MDkgNzA4YWVhODJhZGU4NzBhYjJiM2YyMmZlYTdmMDM0ZjBhYWM0YjU2MCBsZWdhY3ktdHJ1bmsKKzMyNDEwIDUxZWQ5ZjVlMzZhMThjNzcyNDYzZDUwZWEzNmJjMzdkMGNiNWJmMzMgbGVnYWN5LXRydW5rCiszMjQxMSA3ODdkNjY1ZTFjZGM3MzAzY2JhOWUzZTI5MmQ3ODY1ZTY0OWQxMTgyIGxlZ2FjeS10cnVuaworMzI0MTIgMzk1ZjJiOTljNzUyZjkwNmE3YzM1MmYyODRiMTYzZTA5ZTdlYTUxZiBsZWdhY3ktdHJ1bmsKKzMyNDEzIDJjNWJmMDk3ZGFmODU1YTBkYWVlOWUxY2E3ZGEwOGM2MTIxMjgzYWUgbGVnYWN5LXRydW5rCiszMjQxNCA3NDk4MTlmOGIyYWRjYTczZjVkZWNlYmVkZjJhMWM1MmRlZGIxMzBmIGxlZ2FjeS10cnVuaworMzI0MTUgNjNlYjBjOTg3ZGU3ZGI0MDI5MTIxYmM5N2IwYjFhZTM1ZmJkNTFmOSBsZWdhY3ktdHJ1bmsKKzMyNDE2IDhhNmU0YzkyYmQ3ZjJiZDEyN2UyMzE0MTkyODg0NWZlNzYxZWRiMmIgbGVnYWN5LXRydW5rCiszMjQxNyA2ODE2NzE5ZjQzOWM1OWZkNzI2ZTU5MjExZTk0MDVlMTEyZGY5NzMwIGxlZ2FjeS10cnVuaworMzI0MTggNTU4Njg5YjZkN2YwZWI1MmVmMWY2MWFiYjUzNmFkMDg4NjAwZjU4NSBsZWdhY3ktdHJ1bmsKKzMyNDE5IDAxNWQ4OTFmMzg3M2RjMDM0ODQ3MmQ5YjAxMDBjZWJhMDkzNWRjOTggbGVnYWN5LXRydW5rCiszMjQyMCAyNGQyYTA1ZjQxY2NhMTgwMmE3YWY4YWNhYmY4MDI5MTVjYjZlNjU2IGxlZ2FjeS10cnVuaworMzI0MjEgNjRkN2I4NzY3MjJmZDg3OTQ2MTZmMTA3YWZjOWRhNTc1MDQwZDIyYSBsZWdhY3ktdHJ1bmsKKzMyNDIyIDgwOTRjMGRiOTVmOGI2YTk0ODY4MzYwYTJjZjI1OTlmZWRmNGIyMTEgbGVnYWN5LXRydW5rCiszMjQyMyA4MDNiY2EyMjRjOGZhN2QyMTcyMDgwMjI3Mzg0MGMxNTFkY2JkN2Y2IGxlZ2FjeS10cnVuaworMzI0MjUgYTc2YTM2ODMwMTJiYzM3YzQwMDAyZDE1MGIyODBjMTJhZTIwODAzNyBhc3QtYnJhbmNoCiszMjQyNiAwNWU1NzM4OGNiOGZkY2VlOGM4YTk5NzQzMzg0ZGViMzMyMWM2NTZkIGxlZ2FjeS10cnVuaworMzI0MjcgNzI1YjI4MWNjZWFkMzhiZjcxMjE2M2I2MmQxZDRmMjU3OTllNjJiMiBsZWdhY3ktdHJ1bmsKKzMyNDI4IGY4NzRhNGQyOWNhNDE3OGViNTEyOTMwYWU4ZmU4YWMxMDQ5ZDUyYWYgbGVnYWN5LXRydW5rCiszMjQyOSAyMTYzM2U5ZGY4Y2M0NmM4NjQ1MTIxODQyMmQ4NDg4MWYzNGI5MmI4IGxlZ2FjeS10cnVuaworMzI0MzAgMTEyNTQwMTYwYjY1MmU2YWMyMmI3ZTlkYzEwYTEyYjczNjg4N2I4YSBsZWdhY3ktdHJ1bmsKKzMyNDMxIDQ2ZDI2YWZhOGI5NTYzZmQxMjVhZGIzNzIyMDc5ZDgyOGRlMmYxNTkgbGVnYWN5LXRydW5rCiszMjQzMiA3MmRiNzU3NWY5NzAwMGM5N2IyNjlhMWFjNmRmNzA5ZmVkZWUwYjljIGxlZ2FjeS10cnVuaworMzI0MzMgYTliNTZjNzhlMGQ2NGVjZGU0MzRjOWFjMzM4Mzg1ODJjY2FjOWI2MSBsZWdhY3ktdHJ1bmsKKzMyNDM0IDI1YzhjZWU0NDU3ZTZhZDBhZmYyMTI4N2UwMDA3MTMyZWEwZTEyZTUgbGVnYWN5LXRydW5rCiszMjQzNSBjMzRjZjljZTk1MmY5ZmEyODJiYTY2MThhNmZmZmI2MjI4NmY2YWVmIGxlZ2FjeS10cnVuaworMzI0MzYgMGM5NTBlMzMyM2VlNGVlNjM3MDYyYjllYWFmYTUwZWMzY2ZhMDZjMSBsZWdhY3ktdHJ1bmsKKzMyNDM3IGNhNGJkYWY1Yzc1NzU4NTllYWUzZWI0OTljNWI5ZWU2ODM0ZDYwODggbGVnYWN5LXRydW5rCiszMjQzOCAxMDJmOWUzNThmNTIxMzhlY2Y0YzQxNDA2NzQ3NThjZGYxNzAzN2U2IGxlZ2FjeS10cnVuaworMzI0MzkgYzBhMWVmZTEwMjg0NzNjY2JmMWZkMjVkOGM4MjMzZjM5NTEwYjNlYiBsZWdhY3ktdHJ1bmsKKzMyNDQwIDJiYTIwZmM5ZjQ5NTNjMDhiYTk1YWI0Nzc2YjhmZmQ4MDk3MGVkNjggbGVnYWN5LXRydW5rCiszMjQ0MSAyOGEwOTc2N2EyNGZmYTc5MWM2NzEzZTQyMzVlZTI1YmZmYWVhOTNhIGxlZ2FjeS10cnVuaworMzI0NDIgYTVlMWIxNjYyZWMwMTE5MWVkMzk3YjBmOWJjOWU1MjRjNmQ3MDczMyBsZWdhY3ktdHJ1bmsKKzMyNDQzIDJhZjkzZmRmZjYwODg4ZTU0NzZkNThlZjQ5NjVhNTY4ZWE3MmIxY2QgbGVnYWN5LXRydW5rCiszMjQ0NCAxMTNjMzE4ODg3NTU2MTQ2NmQxMWVjMzVlMTE0NzM5YWE3YzdmMGMzIGxlZ2FjeS10cnVuaworMzI0NDUgZWQ3NGFjMjFjMTMzMjIwZmMyYzY0ZTQ2NzUwYTNjMzIwYTJlOTVkYyByZWxlYXNlMjItbWFpbnQKKzMyNDQ2IGIzMTYyOTMzNTYzNTVlZmY3NjU0ZmQ0ZGExZmNhM2JmMmYxN2YwZTEgcmVsZWFzZTIyLW1haW50CiszMjQ0NyA3M2RjZTg5M2ViNGIzODAyOGQzYmViNmIzMjg0MDQ5NDAzNjY5OGYyIHJlbGVhc2UyMi1tYWludAorMzI0NDggNmJkMjhhYmQzMWE3ZjBkM2U2YTkyZDBmNzZhNmE5ZThmODNjNTkzNiByZWxlYXNlMjItbWFpbnQKKzMyNDQ5IDkxMTMwYTRjYzFjZTBlZjQ2ZDI5Y2Y4NDJjM2I2ZjQwOWQzMDY3NDYgcmVsZWFzZTIyLW1haW50CiszMjQ1MCA1N2U2MTU4ODU3MWIyMGIxMmIwMDUyYzZlY2U5Njg0MzBmOWM5YjMxIGxlZ2FjeS10cnVuaworMzI0NTEgMDQ1YmQxNGY3NDY4MjViMjA0OGVkNmVmNDVhNDc3ZmZlMzVhYWQyYSBsZWdhY3ktdHJ1bmsKKzMyNDUyIDYwZTcyMjM4NGQ2MmM2ZjgwNjdkMmRmMjFhNmQwM2FlODE1YzA5M2YgbGVnYWN5LXRydW5rCiszMjQ1MyA2NGNiNjU3YjAzMzg0NDRkMmUzOGVmN2RiOTcxNDI1OWFkZWE4Y2NmIGxlZ2FjeS10cnVuaworMzI0NTQgZGVmMDllYzBiYzMxNzJjNTRmNzViMTI5YTIxNTEzODFmOGQ2OWJlYyBsZWdhY3ktdHJ1bmsKKzMyNDU1IDcyOTZjZDNmNDVjN2Y0NzNkZTdiMmE1ZDk2Y2UyOGE0M2FjNDZmZDkgbGVnYWN5LXRydW5rCiszMjQ1NiAwY2Q4ZDU3MGM1OTExMzliYzRhYzYxZTEzYzBjYjc2ZDI2MDFlOGFjIGxlZ2FjeS10cnVuaworMzI0NTcgMmZhZDU0ODM5MWRlZDZlZDRiZDAxYTYwODc4NzdjOWJkOGI5NTY2YyBsZWdhY3ktdHJ1bmsKKzMyNDU4IDljNzg1YWIxZWZmMDNhMjcxMTg4ZGYzYzljMGM1YjQ3OTI4MDI2MGIgbGVnYWN5LXRydW5rCiszMjQ1OSBkYzRlNDdlNmYwMDIzNWRiYmI2NDAyNDJhNzliMjQ1YjAxZjUyZjE1IGxlZ2FjeS10cnVuaworMzI0NjAgYjM3YWYyMWI3N2JlMzE1YzgyMGQ3ZTFkZTljYTZjYWI5YzA2NGUzMiBsZWdhY3ktdHJ1bmsKKzMyNDYxIGUwNmFhZDkwYzBhZTI0ZDk4ZmRiYjE4YjJmOTI5MjE5YTcxODExZTEgbGVnYWN5LXRydW5rCiszMjQ2MiAxYzVhZDkzNjAzOGVmMjZjMjlkNjBmNTY1M2M5NDQxYmU3YzUxZWY1IGxlZ2FjeS10cnVuaworMzI0NjMgNzAxMmNhNjRiYzc0OTVjNzNiZDA3YTM5YzZkNTIxZTdkOTZhZWIyNSBsZWdhY3ktdHJ1bmsKKzMyNDY0IGU0YTVmMzhmZjAwODliZjBjMmI2ZWZiMDhmZjg3ZTdjNDE2NjFlODYgbGVnYWN5LXRydW5rCiszMjQ2NSBmYTE1OWZlZjI3MzAwNGRmNWFmNmQxMTQ4MWY0MjdiOWFiNGU0ZTg0IGxlZ2FjeS10cnVuaworMzI0NjYgNDVjNGEyZjE1N2IzOGViYmNmNjIyNWE0OTNkYWU2NzRhMTU5ZWJlZiBsZWdhY3ktdHJ1bmsKKzMyNDY3IDk4ZTMxY2ZkMjZkYzI2MWJiNGZmMjAwZTQ1ZjkwYmY2NThlZGRkNzIgbGVnYWN5LXRydW5rCiszMjQ2OCBkODIyMzg4MDgyYmFkNDcxNDk2MmM2NTAwOWFiNjRjOWNlZDVjNzliIGxlZ2FjeS10cnVuaworMzI0NjkgYzJhMDVlMDc4NWYxNDhmYWU5Nzc3OTgyZmM1YTk1Njg5NDdlMGVmNyBsZWdhY3ktdHJ1bmsKKzMyNDcwIDI3YWYzN2RkNWEwYmY1MjE4NDVhODMyYjRjN2IwNTYyMjM1ZTZhOGQgbGVnYWN5LXRydW5rCiszMjQ3MSAzOWQ4MmQwMzg4Nzg5NDFhYzEyODBmMjBmNmY4NWUyNzU3ODU2NzE1IHJlbGVhc2UyMi1tYWludAorMzI0NzIgNDkwYWYwMGZiMTgzMGMzNTRiMzY4ODk3M2Y2OGEzMDRjNGJmYmU0YyBsZWdhY3ktdHJ1bmsKKzMyNDczIGVmMDc5ZGVmZDJjYzExZjVhMjg4OWJmODM3OTQyOGY0ODEzMGM5MGUgbGVnYWN5LXRydW5rCiszMjQ3NCBlZTgxNWE2YjExZTIwMmJlYjI2NTUyODhkZjU4NjNhY2U2OTA2YjdhIGxlZ2FjeS10cnVuaworMzI0NzUgODY1MTFiOTZkOTgwYzdjY2NlNjgwNjFjZTk1ZjVhMTIxMmVhZWQyZiBsZWdhY3ktdHJ1bmsKKzMyNDc2IGNkODIyNTNmMjBiNzBjMzY3OWE3ZmMyYjYyYzBhZWRhNjk1ZThmMTUgbGVnYWN5LXRydW5rCiszMjQ3NyBmZWIzNTk1NGIwMzg2OGQxMmRjMWUxYjVkNTZhZDljODk5M2IzYmJlIGxlZ2FjeS10cnVuaworMzI0NzggNGM1M2I2OTRhZmE2OTgyNDgyZmY2MjY1YzI3YmY4ZDA1NzAzN2VlOCBsZWdhY3ktdHJ1bmsKKzMyNDc5IGYzNTFmYWI3Mzg5N2RkZGI4YjNiODJjNTk1Njg2OGFkNjNjYmRmOWEgbGVnYWN5LXRydW5rCiszMjQ4MCAxYmVmM2VjYTIwY2UwOTkxZjMwMzRmMTdmMmRlNjA1MjZiMmQ1MWMwIGxlZ2FjeS10cnVuaworMzI0ODEgYWUxN2ZjODE5MzA4YjNhYjY2ZjcxYjRmNmU5MzIyMDE2MzY2N2RjOCBsZWdhY3ktdHJ1bmsKKzMyNDgzIDczNmJiZGVjYWExZGY5ZDRiZjhiNjFkZTQ1ZDAzYzkwYTkyNTk4ODcgbGVnYWN5LXRydW5rCiszMjQ4NCA1NDVmYWVjNzkwYzQ3MzI2MGM2NTJiYWEzYmNiYTExMWI5Y2VmMTM0IHIyM2IxLWJyYW5jaAorMzI0ODYgNWNjYjU1MzZmZWZlYmJiNjRhMzI5MTc1NmE1NjM4YmMyNzliMmI2ZSByMjNiMS1icmFuY2gKKzMyNDg3IDVjZGI3MjgwYzMyNjZkOTU0OGNjZDhhNmIzZDQwNmEyMWYzOGM5Y2EgcjIzYjEtYnJhbmNoCiszMjQ4NyA1ZmM2MGUwYjg4MzY4MDIwN2NmYjEwMDg2NWM0MmNhM2EyYjE2NjM3IHIyM2IxLWJyYW5jaAorMzI0ODkgNTc2ZmExN2ZmMDdjYzE3M2QyYjI3N2U0NWU0YTRkZWFiNDZhYmQyYiByZWxlYXNlMjItbWFpbnQKKzMyNDkwIDE3MWVjZmZmMjY1NzliNzU5Zjg4YjllYWM1YTE1ZTM1MzdkYWQ2OWIgbGVnYWN5LXRydW5rCiszMjQ5MSBiZGNmMzdiZTkwNGRiZDJlMzUzZjFjN2ZhZWYzMTYyYmE2MWEwMjgxIGxlZ2FjeS10cnVuaworMzI0OTIgMzAzMGQ5NGE5YzA1OTBiZTQxNzIwYjljN2NhZWQxNTIxNGU3YzgzZSBsZWdhY3ktdHJ1bmsKKzMyNDkzIGI2MmQ4NzgxNjk3Njk1NDEyZDY4NmVkMDA0M2ZmZDcxZWQxYTQxNGYgbGVnYWN5LXRydW5rCiszMjQ5NCA5OGY1YmZiMTljODY4YjM2M2ZkNDAwNGYzMzJmZWI4NDZjNWM5NGVlIHJlbGVhc2UyMi1tYWludAorMzI0OTUgNjhjNjE4NmRjMWExMWJiNDEyZWUwM2FlYjlkMWViYWRkN2MzYmYxNyBsZWdhY3ktdHJ1bmsKKzMyNDk2IGI2N2Y1YzM5NWE2ODhlNTkwNTgzNjgwNDg5MmZkYjM2ZTZjZTYyNDggbGVnYWN5LXRydW5rCiszMjQ5NyAxMDNmYWEwYzJlMWU2ZjZmYjRiNDdiN2VkMjQ1NDI1MGEwMGE3MTIyIGxlZ2FjeS10cnVuaworMzI0OTggZGI5ODQ1OTA3ZThiZWQwMzk2NDY1YTNiZDczYmNlNmUyZWY3ODYxNSByZWxlYXNlMjItbWFpbnQKKzMyNDk5IDY0MjMwZWU4ZWVhNTk1YmUyZTQwNGUzZTMxZGI5YzNjZGI0ZTBmMmEgbGVnYWN5LXRydW5rCiszMjUwMCBmNTBkMGQwZjI5YTJkMGI1MjdhNWEyOGYxMzdhYjRkM2JiN2UxZjQxIGxlZ2FjeS10cnVuaworMzI1MDEgNmQ4NTJlYmZmMzZmZjYzYjc5ODZlNjhlMjNhNmIwNjk5YzVhOTYxMCBsZWdhY3ktdHJ1bmsKKzMyNTAyIDE2Mzc0MDUyY2I1ZGIzYzhjNmMyNDI0YjY1M2I3NWIzMzJhYjJlYTQgbGVnYWN5LXRydW5rCiszMjUwMyA1M2ZmMjNiYjMyNDhmYjg0NzI4MDcwMGJkYTY3Y2NlNTQ4MDc3MjE5IGxlZ2FjeS10cnVuaworMzI1MDQgNzQzYWU5Y2IzYTgzZGJmZjIzMTAxYzQ2OGE1ZTExZDkxYjhiYjUyYiBsZWdhY3ktdHJ1bmsKKzMyNTA1IDFhMGI3ZmM0NjI1Yjg4MDNlMzM4M2JkMzA5YTZmMzY3MDlmNDI0ZjEgbGVnYWN5LXRydW5rCiszMjUwNiAzYThiOGFlZGUxMDBkOGM4ZWRhOWQ2NThhOGVjMTI4OWNmNmJjNDY3IGxlZ2FjeS10cnVuaworMzI1MDcgYTUzNTI5MDk1ZTk1NDA5NDM4NGY3M2E3Y2U2ZjU5NzQzODk2YTE4YiBsZWdhY3ktdHJ1bmsKKzMyNTA4IDVmM2U4YmNjOGM3ZWJjYTY0YmNmMDE2ZTZkM2I3YjczOWMwZWUyMDkgYXN0LWJyYW5jaAorMzI1MDkgYjFiYzllMTcxYzYyZTgyOWFlY2NhZjgwMDk4YWM4OTcxOTkzN2Y4MCByMjNiMS1icmFuY2gKKzMyNTEwIDFkOTdmNTJiYzg0ZmIwZGJiOTUzM2QzYTE0NDdlZTAwNTRjMzY1ZGUgYXN0LWJyYW5jaAorMzI1MTEgNzFlMTkxYjgzZDA0NjViY2QxNzE0Njc3Yzc4Y2RlOTAxN2U5ODRkNyBhc3QtYnJhbmNoCiszMjUxMiBiODQ2MTIxODI5YmRiMDA3Y2Y1NDc3OTI5ZjdmZTM5ZGZkYzdjZTQ3IGFzdC1icmFuY2gKKzMyNTEzIGE2MTMzMGEzZDU5YzIxY2Q2MjQ5NTc3ZjE2NGYxZDBlNDA5ODEzMWEgbGVnYWN5LXRydW5rCiszMjUxNCBmNTViNTUzYTBiMzQ5OTlmNjA1MDZhODg4MDE0YjUxYmMxNmU4YjA4IGxlZ2FjeS10cnVuaworMzI1MTUgNjM5MmU4NDM3NTg4ODEzMTIwNzM1NThiNmEzZTJlOTY2YjlkMGRiMiBsZWdhY3ktdHJ1bmsKKzMyNTE2IGM2ZDZhZDg2MmE4YzMzMTEzZWU3NGIyYzNhNDBiMDU4OTkyMTEyNzIgYXN0LWJyYW5jaAorMzI1MTcgNjVmNzIwZmE2MjAwZmRhZmY0MGFkMjk4MDMxODQzMDNkMjY2MDdiZiBsZWdhY3ktdHJ1bmsKKzMyNTE4IDI0MDA3MWEyYjQ2NmU0ZjJhMzNkODJlOTM0NDliN2MzODA3ODU4NzkgbGVnYWN5LXRydW5rCiszMjUxOSA4NWYwZTYwOTU0Y2E3YjAwMDc2NjY4YzFmYzM0NjY4NWRjNjdkNWUzIHJlbGVhc2UyMi1tYWludAorMzI1MjAgOWViNWJlOTM3OTkwYTg5MmU1YTczYWFiNjE4YTYyMWY1MDc5OGQzOCBsZWdhY3ktdHJ1bmsKKzMyNTIxIDBmMGY2MjM0ZjJmZjRlZmRjYzczZjNjYTYzMTc4MGE5YjM3YzhmN2MgbGVnYWN5LXRydW5rCiszMjUyMSA2N2NlNGVlNGEyOWQxZTdjZTM1N2VmOGQxYzAwYzY5ZDU1N2MxMGIyIGlkbGVmb3JrLW1lcmdlLWJyYW5jaAorMzI1MjIgZTJkMjk1Njk5OTZkODBkNjA1ZGE2NmUxN2JkNDI5NDFlMDNlMWM5NyBsZWdhY3ktdHJ1bmsKKzMyNTIzIDIzMThhOWUxNmFiMGE5ZGM5ODhkZmZmZTcxNTgzYWEzZmNjZDc0NzMgaWRsZWZvcmstbWVyZ2UtYnJhbmNoCiszMjUyNCA3NWMxY2VkOTNiYjUyYzJhYmNhMDZiZmQxMjExZTQ3NDI4MWUzNDM1IGxlZ2FjeS10cnVuaworMzI1MjUgNmM0MTc1NTJmNDczNWMwOGM4ZGI1NjYxMzQyZWVhYjNiYmNiZGEwMSBpZGxlZm9yay1tZXJnZS1icmFuY2gKKzMyNTI2IDZlOTg2MjA2NmUyOTZlYzg0ODY4Y2E3YTAyMDNkMDQ2OTM3ZjVjM2IgcjIzYjEtYnJhbmNoCiszMjUyNyA5OTg4MWI2ZWE5ZjdkOTgwYjE0MTc1OGYyYjBiODY5ZGE2NjM0ODY0IHIyM2IxLWJyYW5jaAorMzI1MjggYTM0MTk3NmZmNDc2ZDhkNGNkMTFkYTNiYjQyMTA3NTM4NWRlZjAwZSByMjNiMS1icmFuY2gKKzMyNTI5IGIxOGQyZjJkYjE4ZDA5MGM2MTkwYjMzMzJlMDE1MGExYTdkNDNkZDMgcmVsZWFzZTIyLW1haW50CiszMjUzMCA4OWUzNWNkYmVjY2MwY2YxOTJjY2Y5YjJjOGQwYWVkYzY0MDcxMWZlIGxlZ2FjeS10cnVuaworMzI1MzEgNjg3MzM3OWI4ZDhjNWEwNzE1MjVhYzVlMzVjODgzMjI3MjNmMGQyZiByZWxlYXNlMjItbWFpbnQKKzMyNTMyIGVhNzc3MjczMmRhMTljMzE0N2ZiZTBlODkxZGFhY2YxZGVjM2VkODMgbGVnYWN5LXRydW5rCiszMjUzMyA0OTQ4NmM1NDRhY2RkNTYxNzJhZGQ0NmU4Y2QyN2IyMDk0ZTZiMGQyIGxlZ2FjeS10cnVuaworMzI1MzQgNjcxZTRlMmVlYzRiYTczZTg0YTg1ODdjODgyY2QwZTE2OGJhY2EzMCBsZWdhY3ktdHJ1bmsKKzMyNTM1IGFmNTM3MjlkM2NkZDY0MTE5NTIyNTQ3MDYzOTcwMDMyZmM1YWU5MGMgbGVnYWN5LXRydW5rCiszMjUzNiBlNGVhYmU1YjNkYTEzZDRmYWEzZDI3MWMzYTAzOGU1YWI5ZGU3ZjI2IGxlZ2FjeS10cnVuaworMzI1MzcgZDMxNjRhMzA0NTk4YjE0ZjE0ZGE5M2JhMWRhNGFmZTgwZjdlNTY1NSBsZWdhY3ktdHJ1bmsKKzMyNTM4IDk2YjZjYzVkNDA4Yjg0ZDI1ZjFlZjI2MDFhZDRmZmUyMDFhZjc0NDcgbGVnYWN5LXRydW5rCiszMjUzOSAzOWY0Yjk3Y2U4MjgxOWRjMmYxMTAzYTA1YTQ3ZGQyZDQzZGY4ODE2IGxlZ2FjeS10cnVuaworMzI1NDAgZDVlMjkxZjBhZTM5NTVjYWE3ZDcwMDFiNzMwMThlZTY5ODJmNTVjMyBsZWdhY3ktdHJ1bmsKKzMyNTQxIDM1YzkwZDljYzMxMzU3NTA2YThkODY3NjI3NmE3ZGM3ODRiYjQwOWUgbGVnYWN5LXRydW5rCiszMjU0MiBkMzBhNmE1NzQ5NzljOGI2ZjE2NWFjZDJjNThhYWRlOWEyMzVlNGRmIHIyM2IxLWJyYW5jaAorMzI1NDMgYmMxMzVkN2I3ZGYxNmZiN2FjMWRhMDYwNWIwZmU4ZjNiMTc0MjM5NyByMjNiMS1icmFuY2gKKzMyNTQ0IGVkZGNiNzkwZWQ4ZDhiZDUxZjE5MDc2NjY5YzBjNjM0MjM2NjU2ZDggbGVnYWN5LXRydW5rCiszMjU0NSAyZDA2OWMxNmM4YjJkMTkxMjg1Nzc3Njk0MTA0YzQ1YjUzZDk3YTM1IHIyM2IxLWJyYW5jaAorMzI1NDcgZDFjZGUzZGFmOWE5ZTYxNjY3ZWY3NmZjOTg0ZDg4ZjQyMzM5NTc0NiBsZWdhY3ktdHJ1bmsKKzMyNTQ4IGY0MjM4MDM2MDAwYzQ1NTZjNDM5YmRjMTg5NDcyNjI4MTA3NjI1OGQgbGVnYWN5LXRydW5rCiszMjU0OSBiOWEzMDczZjkzOTI4YzFiODAxMTI0YmY0N2I2ZTgzNTU4NDBlM2U1IGxlZ2FjeS10cnVuaworMzI1NTAgODFkMzczZTU4OTgzOGMzMzllMDMyZTZlYzE3MTFkOGVjMTY3NzY4NSBsZWdhY3ktdHJ1bmsKKzMyNTUxIDIzN2Y5N2M3MTY5MWJmM2Y4NDBmNmZjZDI0Y2VlNWU0ZWI4Njg2NWEgbGVnYWN5LXRydW5rCiszMjU1MiAwODFlZjdiNmJlMDQzNzY4MzdmYjI0NWEyNzIyZTdkYjg3NDFhYjk2IGxlZ2FjeS10cnVuaworMzI1NTMgMGUzNWMxNTk3NDFiNTcxZGU1MzEwNmI1ZGY1YWU3MDg3NjM2Y2U4YyBsZWdhY3ktdHJ1bmsKKzMyNTU0IGFhYjBkYmUzYzAwODFmYmQ4NGE5ZGZlZGQ2Y2IyODFiYTY4MDYyN2IgbGVnYWN5LXRydW5rCiszMjU1NSAwMzlhYjMxZTEwMzQ3Nzk2YjRiODA2OGNhYWM0ZjIyMDJjNGFjYTgxIGxlZ2FjeS10cnVuaworMzI1NTYgNDUyOGNjMGVkYjZkYTU0Zjk2MzAzMzFmODdmOWU4NGZlNWUzMTJkOCBsZWdhY3ktdHJ1bmsKKzMyNTU3IDFkMWE4NWYwZTVlOTk5ODU3YzEwM2Y3Mjg5ZjNkYzQ5OWQxMjM3MjMgbGVnYWN5LXRydW5rCiszMjU1OCBmYTU5NTBmYmU3MzY3NGQ2ZTAwYzVmYTE5N2VlM2I3NjA2NjE1M2U4IGxlZ2FjeS10cnVuaworMzI1NTkgMWVhYzFhMzViMzcwNDI5ZTZiZjZhNmExZDM3ZWQyZmViNDI3ZTQwMyBsZWdhY3ktdHJ1bmsKKzMyNTYwIGU0ZTcyZmE0YzkxNDEyZjM2MjY4MjZlMzBlMWRkODc1ZTNhNzQ3NjggbGVnYWN5LXRydW5rCiszMjU2MSBjZTllMmFlOGQ1OWQ2NjQxNmFlZTlhM2U1MjZiZjNkNzRiZTk5ZTlmIHJlbGVhc2UyMi1tYWludAorMzI1NjIgMDZhYmZjOWM2OGU3NzI3ZWZjMGM3OGU2NzdiZjUxZmVhOWE3ZmQyOCBsZWdhY3ktdHJ1bmsKKzMyNTYzIDZhNTFkMTFmYjFlOTE1Zjc2YWQ0OGE0MjRjOWMzZjdlM2EzMTI3MTUgcmVsZWFzZTIyLW1haW50CiszMjU2NCA5NmVlZTdkMDRkODg0MDdkNzM5NjY2ZTg0ZDljYTNjYjFlZDNhZDA2IGxlZ2FjeS10cnVuaworMzI1NjUgNGVmMTA4ZjgxODFmMzBjNTRlNTkyODY5ZjMzYzc4ZTg2NWRhMjE4MiBsZWdhY3ktdHJ1bmsKKzMyNTY2IGIwNGMwNzQ1ODZhYTQyNjYzNGFlNGMzMWRhNGI5MzQyNGY5YTIzZTQgbGVnYWN5LXRydW5rCiszMjU2NyAzMzQ3NTY2MTgyM2QzNzNkNjVjYTkzNTE3YzI3YTU3ZDYyZmRiYWNjIGxlZ2FjeS10cnVuaworMzI1NjggZmEwMDYzOTI4NTE4MTdjMzA4ZmEyNjJmN2Y2MTY0MTE5MjM1OTRmZSBsZWdhY3ktdHJ1bmsKKzMyNTY5IDM5YWQ3NjE0MzI4OGJhMmFhZGMyOWMzNTRjY2VjYjJiZDQxNjU4NjcgbGVnYWN5LXRydW5rCiszMjU3MCAxNzQxYWY0OGZkOWYzZTY5ZmEzNTU5MjgzY2RlNjdlNmNhOTIxYTdhIGxlZ2FjeS10cnVuaworMzI1NzEgOTI4NzI3ODkxNmUzYzVmMWYxZTdkOGQzZWEyZjRlNWM1NTcxOThmOCBsZWdhY3ktdHJ1bmsKKzMyNTcyIGYyYzc0Y2ZlYTA1MTI0NzRhZGIyMzYzOGY4OGU1MmU0NTM3Y2U0NzkgbGVnYWN5LXRydW5rCiszMjU3MyAwMGZjMTM4ZDg1NTY1ODc3NDliYjdhNTI2NTgxZjk0YmI3ZjQ3OTA1IGxlZ2FjeS10cnVuaworMzI1NzQgODg4YTMxMThlMGQ0MjI4OGFlYjE3MzJkNWYzZjE3YjJmZDRmOWU5ZCBsZWdhY3ktdHJ1bmsKKzMyNTc1IDExNDk1MGVlOWFhNzMzZWUyYzAxZmZjM2VjODgwYjQ1OTg2M2Q5MTYgbGVnYWN5LXRydW5rCiszMjU3NiA4MzUzMzAxNmMyODk3MTY1Y2I0ZjdhNjZhY2MwZDY2MjZiMWI0YTQ5IGxlZ2FjeS10cnVuaworMzI1NzcgYjNiMjg0NDM2YzI0YTIwYTM4MjlmOTcwYjY2N2QzNDQwZjU1MzdiYyBsZWdhY3ktdHJ1bmsKKzMyNTc4IGE3NjllMDc5YmIxMmZmODNlYzk3ZWYzODA3MTMxMTczNjc3ZWRkY2IgbGVnYWN5LXRydW5rCiszMjU3OSA3ODNkZGRlMzc5MmI2Njk0ODY0ZTk0NGFlNmRiMTg0ZWU5M2Y1NjQyIGxlZ2FjeS10cnVuaworMzI1ODAgMGExODBlZTI0NzNiZDk5ZWM0Y2Q2ZmJlNGFiZjNhNWQ4ZGI2M2M3OSBsZWdhY3ktdHJ1bmsKKzMyNTgxIGM3OThkMjhkZWU0NmIxOWQxNjEyNjBlN2I0MTQzMGE0NjNlNzBmODggbGVnYWN5LXRydW5rCiszMjU4MiA5MmExZTU4NWFiZjc2M2FjMzUxNjQyYWEyZGJjYmM2ZjUyYzVhNzU3IGxlZ2FjeS10cnVuaworMzI1ODMgMTgwODJiMmQyZWJkZjE1YjNmZDNiOWZiNTQ3ZDgwM2JkODczMzYzNiBsZWdhY3ktdHJ1bmsKKzMyNTg0IGE0MGI1NjcxYTU2MzkyMWQyOWQwNTdkZmI3YTIwZDQ1Y2FmN2ZlMmQgbGVnYWN5LXRydW5rCiszMjU4NSA2YTMxMTdkZjVlMTMxMjU5YWU0MmY5ZTI4MDBhMTExMmI5NjAzM2M2IGxlZ2FjeS10cnVuaworMzI1ODYgZDkxODIxZDlkNDcwOTY3MmMwYmM2OTU1MWNmNDQzNGFlMGIwOTYwZCBsZWdhY3ktdHJ1bmsKKzMyNTg3IDk5Y2YzMzY4ZDY4N2VhODllN2ZhNjczYzg0NTE3NjY0NTAwOWVhNTUgbGVnYWN5LXRydW5rCiszMjU4OCBhMTE0ZWU3NDI2N2M3MzEzMGI1ODcwZDk2MmI1MjY2OWFlY2E2Y2U1IGxlZ2FjeS10cnVuaworMzI1ODkgMmVlZTk2NTVkNzFiMGY4OTZkNmJhYzliZWU3OGIyMDczNjA5NzM4OSBsZWdhY3ktdHJ1bmsKKzMyNTkwIGM1ZjE4ZGIxYzk2NjFkNTgwNzI1MzM2OTk1NzhiMmZiYzRkZmY4NWQgbGVnYWN5LXRydW5rCiszMjU5MSA1ZDRkNGViZmQzMTcxZTc1MzVjOTQxODdjODVjN2E4ODdjN2NhZDBiIGxlZ2FjeS10cnVuaworMzI1OTIgNDc1NmZhNTM4NTYwNmZiMTIyZjVlOWE3ZDE2N2Q5ZGYzZjU1N2YxOSBsZWdhY3ktdHJ1bmsKKzMyNTkzIGZhMDU3ODI0YzliNGI0MjdkMDk0YTM5ZTU0ODE2MGNhNzQ0ZWI0MmEgbGVnYWN5LXRydW5rCiszMjU5NCAwNWRhNzcyNmMwMjdlNDdmMTEwOWIxN2M5YjdlZDU0YzgzOGVlMGI4IGxlZ2FjeS10cnVuaworMzI1OTUgMzkzNDI5YTZmYTE2ZDFkOTA0ODU3ZWI1ZGE2MDk2NGU2MWE0ZWIyMCBsZWdhY3ktdHJ1bmsKKzMyNTk2IGUwNTlhOGIxMWI5ZWNjYjEwMDcyZjc2OTllNGVhNDlkZWEzNWMyNmIgbGVnYWN5LXRydW5rCiszMjU5NyBmYWYyY2I1MDcwYjRjOGQxM2I3YWM1OWE1Zjk4Y2Y3NDE2YmYyZjRjIGxlZ2FjeS10cnVuaworMzI1OTggMDAxYTkwNTU1NzgwOGExNWU4NDM5YjU4M2MxZmVjNjk4OWFlNzJmOSBsZWdhY3ktdHJ1bmsKKzMyNTk5IGRiZGViNzM0ZmY5Nzk5ZGE4MTZjNTkzNmM1YzQzNmM0MzFmZGFjMTEgbGVnYWN5LXRydW5rCiszMjYwMCA4ZGY4OTdmMTRmYjg2MDI2ZjM0NDc5YjJlMDk2OWM4MGY0YmM0ZGJkIGxlZ2FjeS10cnVuaworMzI2MDEgMzM1OThlOGU0OWIyMGJhNGI1YTc5OWQyYTFiYzI4MjAyYjk4Mzg4MiBsZWdhY3ktdHJ1bmsKKzMyNjAyIGFjNDg3YTdmN2YyYzc3MDk3NTc4YmVkMWM4Yjg5ZmNjN2MzYTU0NjAgbGVnYWN5LXRydW5rCiszMjYwMyAzYTlmNWYwYzUxMmViNDk4MGVjMWFjODA5ZmFmNjY3NGFmZWQ1NmIwIGxlZ2FjeS10cnVuaworMzI2MDQgMTk2NDAxMmY2ZmIwZDIzYmY4ZDdiYTM5OWJiNWU4NTc0YTI2MWMyMCBsZWdhY3ktdHJ1bmsKKzMyNjA1IDZjNGEwNGNlOTY1YzI1OGYzYTliYjBmOTRkOTFlYzBjYWQ3Yjk1ZWMgbGVnYWN5LXRydW5rCiszMjYwNiAwOTQyMmMzMDE4MjY1Yjg1YTgwZjAwODkzZTE2YTI3ZDVlMzZjOWE0IGxlZ2FjeS10cnVuaworMzI2MDcgOWQ1YTc1OTE2OTcxMDk1ODBjNThkZWY2MmM5MTdlMDdlNjUxZTE1YyBsZWdhY3ktdHJ1bmsKKzMyNjA4IDE3NjNkOWQzZmQ5ZGZlZWNkNmQ2ZTI3YmRiNTY3ZmExNGM4NmJlOWMgbGVnYWN5LXRydW5rCiszMjYwOSA5YjRmZjRiZjAzM2I4MTY0NzgyNmFlZTlmY2IxN2M3ZTEyNTZjZjVhIHJlbGVhc2UyMi1tYWludAorMzI2MTAgYmFlYTMxOGJlNDk5Y2RmYzQ5YjU1N2FkZDExY2U4Mzk4Yjk0MzJkMSBsZWdhY3ktdHJ1bmsKKzMyNjExIDI1YjIyMThkYTA5YjU5Zjk2Yjg5NmVlNmI0MTBhNjhhMjgwMDExOTcgbGVnYWN5LXRydW5rCiszMjYxMiAzNWE0ZDc0YjViOGVkOTliZDE3MDUxZjA5N2RiMTkyM2M2NjE2YjlkIGxlZ2FjeS10cnVuaworMzI2MTMgNmNhOTRhZWIyOTJhYzQ3NzlhMzBmNzZiYmFkYzM1ZTYwNzkyYTg2OSBsZWdhY3ktdHJ1bmsKKzMyNjE0IGFjMjkwMTVmZjZhODFlZjA0MThkYTE5NmQ4NTlkYjRmOTM4MGM5ZjkgbGVnYWN5LXRydW5rCiszMjYxNSAxODlmZGFlOGY0OTJiZjZjZWQzZDVhZTBiMTRhMzJjMjlmNGE2NTEzIGxlZ2FjeS10cnVuaworMzI2MTYgMjVlNjYwZTcwZGNkMDYxZTk5ODJiMDM3OGFiZjM2ZjAzNjdjMGFhMiBsZWdhY3ktdHJ1bmsKKzMyNjE3IDJlOTk1NmQwMWRlMzMyZjdkMTJmMjE4NGViMGU5MWE2NTQ3MDIzNmMgbGVnYWN5LXRydW5rCiszMjYxOCA0YmE3NjNiYzVhNTYwZGM1N2RkMTgwYjJkNzVkNTZlOTZiNTdiNzgyIGxlZ2FjeS10cnVuaworMzI2MTkgMzUwZWUzMWFhYjBjMDI0MjQ3M2Q1MGFjOTBmZTMzZmFmZTA0YWZlYyBsZWdhY3ktdHJ1bmsKKzMyNjIwIDk5NTlkOGZhNGRkZjBmOGMwNDA5NjBlZjEwYWNjZTZjYzlhYWUwZWQgbGVnYWN5LXRydW5rCiszMjYyMSBiMTc0ZDA5MjdmMGUyNTc5NDljOWMxM2JmZjdmNDM1YzJjMDQ1MzdiIGxlZ2FjeS10cnVuaworMzI2MjIgYzljNmJhNzk1MmE4MjI3YWE4ZDNiMmI5MjU5YmRhYmRlYWVjOTYyZSBsZWdhY3ktdHJ1bmsKKzMyNjIzIDlmOTAyMmMyMTA1NjIzNDlmNDcwMTg3NTE4OTM2NWU2N2I2NDQxZTAgbGVnYWN5LXRydW5rCiszMjYyNCA2NWJmNjlmN2MxNDg5ZDg4NDhhYjI0NmJlM2JjNWFkMjY0ZGFhZWJiIGxlZ2FjeS10cnVuaworMzI2MjUgYzkyNDEyZDYzNGIxMGIzMDAyODg3ZjQyMzUwYzg4NGEzZjJlMDI4NiByZWxlYXNlMjItbWFpbnQKKzMyNjI2IDY4ZjA0MmZhZmI3ZGQwOWJkZmMyNmZiMzQ2ZmU0NjRjYzVlMGUwZDYgbGVnYWN5LXRydW5rCiszMjYyNyBiYjE3NzA5YTM3YTNhYzA3NDllYzEyYTQxMDE3NDAxY2IyMWIxYjJmIHJlbGVhc2UyMi1tYWludAorMzI2MjggM2U4OGNmZjA1ODIyZjJjMWI1OGE1Y2MwNzQ4ZmJjZjk4YjkxZTNmMSBsZWdhY3ktdHJ1bmsKKzMyNjI5IDRiZjg2NTE4ZDlhZTUwMTgyMDcwZjVlY2YwMDg4MDNlNTdjYzU0NDIgbGVnYWN5LXRydW5rCiszMjYzMCA0YzEzOTE2ODY0OGM2YWRlM2MzMDFhYTg4OWMyOTY5NzMzNDMwZTRlIGxlZ2FjeS10cnVuaworMzI2MzEgODNmZTBmNWM5MzU5N2NjNmMxNmE1NmEwMzIxZTgyNmZjNTYxYmQ1MSBsZWdhY3ktdHJ1bmsKKzMyNjMyIGNmY2M0NWYxODUxNWEwZGE3ZWVkYWE5M2JiNjZlN2YwZDUyMmVkNDAgbGVnYWN5LXRydW5rCiszMjYzMyA1ODkyYzFlNTE1YjRkYTllMTA3NDk1Nzk1NDM2NmY0NjQ2NDhhMTA1IGxlZ2FjeS10cnVuaworMzI2MzQgODE1ZmYwYWIyNGU3MjhjMWNiNmRjMDA5M2RiYzEzMzczYzJjOTEwOCBsZWdhY3ktdHJ1bmsKKzMyNjM1IDMxMmYxMTg2YWEzOTQ1ODFiNWIxNDUwMTc0NWEyZDA0MWY4MzUzNTggbGVnYWN5LXRydW5rCiszMjYzNiBhNWRkNTc0N2NkZmUyNjhkNGE1NmM1ZjFiZjYxOTNlOTFlOThlNDk3IGxlZ2FjeS10cnVuaworMzI2MzcgMTdiZmE3ODYwNzVhZGNiMzAxMDg4NmU0YzA0MjgxZTViNDdhODNjYiBsZWdhY3ktdHJ1bmsKKzMyNjM4IGI1NGE4NGQyOWMwMDAxNmRlYThiZmYyMDM1OGM5NTgxYmNkMzA4ZDQgbGVnYWN5LXRydW5rCiszMjYzOSA0MTM4OGU4NDI2MWIyNDJhNjJiZmQwNTA0YTgxMjFkMzMwOWNlYzVjIGxlZ2FjeS10cnVuaworMzI2NDAgMjIyYzNkMmZlNDMxYjEzNzJiYzk3MDA5ZjI3OGQ2M2RhMTA3ODA2NSBsZWdhY3ktdHJ1bmsKKzMyNjQxIDgyZmUzYTlhYzM3MWQ0MzQ2YWNmNmVmZWFmNjQ3ZGJjNzM2NDUyYTIgbGVnYWN5LXRydW5rCiszMjY0MiA2MWQzZjhlNjZkOGZjMDYwMDhkZDc5NTQwZWIyNWEzODRhZWUxMThkIGxlZ2FjeS10cnVuaworMzI2NDMgNDkzZmQ3ZTUyMjA2YTFhZTVhMDQ0MTA3YzE2NDU1MDU0OTg4YWM1ZCBsZWdhY3ktdHJ1bmsKKzMyNjQ0IGNlNmMzY2M0MjJhYjUxNjI4NDZhYmRiNGZmZWIyNjRmMjE3ZTRhOWEgbGVnYWN5LXRydW5rCiszMjY0NSBiMzcwMmI2ODNmMmFkMmJlNmIyMGFjN2NlYTJlMTc2OTdjYzU0ZTE2IGxlZ2FjeS10cnVuaworMzI2NDYgZjFmY2FjNGNhYmFkODZmY2E5MTAwYzA3MzFhMWM5ZTc5MDI3M2Y4NCBsZWdhY3ktdHJ1bmsKKzMyNjQ3IGQ1NDYxMGY0ZjI2MWRjYjllMTY5NDZhZmM5MWI1YTgyODVkMzljMjIgbGVnYWN5LXRydW5rCiszMjY0OCA2YjA3ZjM2OWNmMDNkYWQ4NDI2Y2Y1ZDdiMDIzMzcyMDEwZmYxOTY1IGxlZ2FjeS10cnVuaworMzI2NDkgMzgwYTlhNWFmYWEwYmRiMmY1ZjY4Y2FkOTk3MDJhNGQ2YTE0OGMwMiBsZWdhY3ktdHJ1bmsKKzMyNjUwIGVkNGIwOThjN2JjYTFkOThhZjViZjY2YTRhOTVkYmYwNjRjZGZkNGYgbGVnYWN5LXRydW5rCiszMjY1MSA2ZmNhNmUwN2MyZmE5YTZmNWE2YTMzOTFiODhhOWI1NjM5NGIwN2NjIGxlZ2FjeS10cnVuaworMzI2NTIgZTEwN2M5MjFiOGYzMzExNjIxYWY2NWQ3MzFkYTJhNWM4YWIzMDBmMyBsZWdhY3ktdHJ1bmsKKzMyNjUzIDUwOTUzNzgzOTQyNDZhZmZiMDI3NGE3ZjI3YmRjMGY3OWM2MzRlNDYgbGVnYWN5LXRydW5rCiszMjY1NCA2YzQwYjczYzcwNDU3ZWZiY2UxNjhmOWNkNTczMDgxOGY3NTAxOGM4IGxlZ2FjeS10cnVuaworMzI2NTUgNTA4NDE4OThjYzE5YzBhYzM1N2Q1MDFmMjA2MTQ3NDdlZGRhMWI5YiBsZWdhY3ktdHJ1bmsKKzMyNjU2IDAxM2Q5NWMzNDZkMjM1NTQzMmU4ZDE3YzZmNTYzYzA2MzZhMzU1M2EgbGVnYWN5LXRydW5rCiszMjY1NyBhMDdkZWYwZGM3ODUxZWE0OGM1YjE2ZDRhOTJmY2U4Nzc3ZTQ5Y2I4IGxlZ2FjeS10cnVuaworMzI2NTggMzA1NWM5YmRmZjVmNTExOWE2MDI4ZGRjNmNkYjc2MzA2Y2UyMmRmOCBsZWdhY3ktdHJ1bmsKKzMyNjU5IGY5ZTZmOWZiOGRmMGM1ZjIwNTI0MGRkYWJjMTdkN2E3ZDhkMmYxM2QgbGVnYWN5LXRydW5rCiszMjY2MCBhM2IyNjEwYjUwNDFhOTJhYWU3ZDI1MWNkNWZhZmVjZGE4YjBjYzQ3IGxlZ2FjeS10cnVuaworMzI2NjEgYzI3YTY0YjM4NzYyN2YxYmJkZGE0MzJmZDVlNjE0Y2YxMzFmNDNjNSBsZWdhY3ktdHJ1bmsKKzMyNjYyIGQyYWZhMDBjMjBlM2M0ZmU3MjUyMGZhNGY3YTk4NzE2NzQ3YTBmNGQgbGVnYWN5LXRydW5rCiszMjY2MyA5YjcxNjRjYzBjOTI2NmVkNmUyMWM1ZDM3ZjExMjJlNWUyODljNjIxIGxlZ2FjeS10cnVuaworMzI2NjQgMDQ2MTMxNjFhMzJiNmJhZmZhYzA2ZjE3M2VkMDY2Yzc4YzFhZTlmMSBsZWdhY3ktdHJ1bmsKKzMyNjY1IGU2OTY4ODg2YTk3ZGExOTBmODVkMTI5YjFmY2JhOTBlOTQ2ODk5NjIgcmVsZWFzZTIyLW1haW50CiszMjY2NiAxNTdhMjllMTllYjllYzc4YzI1YTMwOWQzNWU1YzZiMzA2YzAzN2M0IGxlZ2FjeS10cnVuaworMzI2NjcgMDY3YTk4MjMyOWFjYzMzODZhODA3YjM2MDcyZGExMjM2NzcyZjEzMCBsZWdhY3ktdHJ1bmsKKzMyNjY4IGVlZWRhYzQ5ZTg2YjM4OGZiMjNjMTUxMzU3MTcxNmQ3NGE1NzU3ZTIgcmVsZWFzZTIyLW1haW50CiszMjY2OSAxMDk4MTBhMWFkYTg2MDZmMjgwMzBiM2NkNzQzOWQzY2Q3ODdlYWUwIGxlZ2FjeS10cnVuaworMzI2NzAgZDRmNjU0NGY3OWFjZTQ0MWRhN2ViNzQ3ZGM2N2EzMzFjOWIzODY1MiBsZWdhY3ktdHJ1bmsKKzMyNjcxIDEzZDhmMjk3MzdlNWRlMjY4Mjc2NmJkYmVmYTVmZjIxN2M1NDJjODYgbGVnYWN5LXRydW5rCiszMjY3MiBkYzNmM2YzMDM4YThjZmE5NGYxOGFlMmFmYTUyNzcxMzlkYmUxZWU0IGxlZ2FjeS10cnVuaworMzI2NzMgMDg5ZjI0MjFlYjE4YTBiYWE4MjRlODk3MjhiMGZhY2E0ZjAxMzU1ZiBsZWdhY3ktdHJ1bmsKKzMyNjc0IDJmNjUyYTU5ZWJiMDFmODJkZjMxZWU3NzUyMWMxY2E5NTE0NzIyZWIgbGVnYWN5LXRydW5rCiszMjY3NSAyZjc0M2RlOGM1ZTJhMmJmNzNjN2QxNDBhMjY4MWQ4Y2E3ODZjMzNhIGxlZ2FjeS10cnVuaworMzI2NzYgY2I4MzJjMmNkNTRkNGFhNzk3NzM2YTVhYjU4NjIzMWNiNjdmOTkyYiBsZWdhY3ktdHJ1bmsKKzMyNjc3IDNmNzBkNzVjZDI4ZGFjYmM0YzYzNDg0Njg5MTlmZTcyZWEzZTNkZmUgbGVnYWN5LXRydW5rCiszMjY3OCA0ZGUwMmYxOGE0MWI0MmViYWVjYjc2NGZlNDIwMjA1YmExNzY0NzgwIGxlZ2FjeS10cnVuaworMzI2NzkgNTc0Yjk1NTFjZmM5ZTYxOWZiZTE1MzM0NDAyZmVhZTAwMzczYmVlZiBsZWdhY3ktdHJ1bmsKKzMyNjgwIDZiYmE0OGQxY2UzYmIwNjk3YjhlZDdkMGU4YzM2OGYxY2NhZDYzYzYgbGVnYWN5LXRydW5rCiszMjY4MSAxYzJlNjAzZmVlMDIzMGVkNzVmNjhiNzg3NmFjYmUyZDUzYjdkNjI5IGxlZ2FjeS10cnVuaworMzI2ODIgNGFlYWNhZGU2NjAwOWIxODZmYjcxOWIzYjBmYmU0MzBiNWE1NWU1NiBsZWdhY3ktdHJ1bmsKKzMyNjg0IGQ1ZTQ4NzM2MmQzYWRkNDk2NTA1NmRkZjIyYzA2ZmRkNjk1NWNiMjggcmVsZWFzZTIyLW1haW50CiszMjY4NSBmYjExN2Q3ZjU5NTBjNjRiNGVjYzAyNTc4ZWY1NzAwOThkZmYxZTdhIGxlZ2FjeS10cnVuaworMzI2ODYgM2YyMTRjMjY0ZjYzZDViYzQwMDY0NzIzZjU0MTZhNWZmYWUwYjcyMSBsZWdhY3ktdHJ1bmsKKzMyNjg3IDEzZGI1YjdkZTBkZGU3NTIzZWExNWE0MDY3NzNmNTY4Y2UwMWFmNjggbGVnYWN5LXRydW5rCiszMjY4OCA2NTY0OTM1MzRjYzc3NjZhYTYxZjY5NzIzNjQyNmM3M2ZhYmJiYTczIGxlZ2FjeS10cnVuaworMzI2ODkgZTFkNWNhOGFiN2RjODJjNzI2Mzk4MjExOTM4YTI3YjcyYjVlYjZmNCBsZWdhY3ktdHJ1bmsKKzMyNjkwIGNjZjdlMTM4YTEyNmRkMzBmY2YyYzYwZjYyYTM3ZmE2MDA3NTFiYmEgbGVnYWN5LXRydW5rCiszMjY5MSBkYjkwODQzYjAwZmNkYjgzNDI4ZDk0OWUzN2IwYjNhNDBkZDQ5MzExIGxlZ2FjeS10cnVuaworMzI2OTIgZDNjMWEwM2E1MTMwODkwNGYzNTM4OWIyYjdjNGY3MGYxM2JjMzY2OSBsZWdhY3ktdHJ1bmsKKzMyNjkzIDU5YjFiM2UyYTIzYjVlOTRjMDI3YWQ5OGY3MjE0ZWQ1MzI3NzAyMWIgbGVnYWN5LXRydW5rCiszMjY5NCBlZmY4NmNmOGYzYmIzZTdlZGJlMGI0OGNiOTIzMjkwYzgzMjE2NGVhIGxlZ2FjeS10cnVuaworMzI2OTUgODEwODhkZjBiMWRmMzY0MGU4OWI0ZDVjZDk2NDVmM2JkODJmOWZkMSBsZWdhY3ktdHJ1bmsKKzMyNjk2IDA1NTk4NzdhZGE1Y2YzMDlhNjAzZGNkOTQ2NTg1ZjI4YzM5ZjEwMjQgbGVnYWN5LXRydW5rCiszMjY5NyA4ZTc5ZGMzNzMxYmZmYzI2YjljYThkYTM2YTAzMzUzNTNmOWZhOWEyIGxlZ2FjeS10cnVuaworMzI2OTggNDMwMDIyMzNjYzJjZGEwMTQzZDk0YTYzMTg3ZmJjMTk0YTYyNjNhNCBsZWdhY3ktdHJ1bmsKKzMyNjk5IGRlNTY0YTg3MzNkMjI3NTNmZTgzMDkyZDJiZWRkN2Q0NGUyZmQ0NDIgbGVnYWN5LXRydW5rCiszMjcwMCA1OGM4ZTI4NDUxYTk3N2UwZmE0YTY3MTBjM2EzNTJiNGMyOWY0YTgwIGxlZ2FjeS10cnVuaworMzI3MDEgZDA2YWRiNWEzY2M5NmRmZmUzYmI5MGE5OTY3OWJiYTRkN2ZkNzU2YiBsZWdhY3ktdHJ1bmsKKzMyNzAyIDU0ZjFmZmEzNzQyOWVhYzdhNTAxOThjMTU5ZmNhZTlkOTc3ZDdiY2UgbGVnYWN5LXRydW5rCiszMjcwMyAwNjQ0MTk3NzM5NTZiNzA5OGJkNGMzOTczMThjMjdkYWE3YWVhYjYxIGxlZ2FjeS10cnVuaworMzI3MDQgZjI3OGIyN2VmMTA1ZDM0ZWY0NDZhNDBkZmEwYmFjZDYzNTE4MjRlOSBsZWdhY3ktdHJ1bmsKKzMyNzA1IDc3NTBiODQ2MmE4ZmM0MDg2ZjdmOTdlM2Y4ZDU0ZTU3MDc3YTEyZGYgbGVnYWN5LXRydW5rCiszMjcwNiAxNDNmZmY4ZDIxODk5ZDA5M2ZmYzg2MmUyOGJhYTcyMTJiZGRmNzFhIGxlZ2FjeS10cnVuaworMzI3MDcgY2ZmYjUxN2Y0ZTE1ZjlkNmM4NTBjN2NlNGRmNjY4NWZiMjQ4Mzk4YyBsZWdhY3ktdHJ1bmsKKzMyNzA4IDJiMGMwYmRhNWNjYTdiNmVhNzM1MzE1ZWRmMGVkZmUzZWVjYjZjNzAgbGVnYWN5LXRydW5rCiszMjcwOSA2ZGM4MmRjZjU1ODkyNjAyZDI0ZmI4M2Q3N2FiZGQzZTUzYjU3MmJmIGxlZ2FjeS10cnVuaworMzI3MTAgNDViZmE2ZDU5MWY3Y2E0YTUyYWQ0OTcwMGIwMjY5YzE2N2MxOGM5MiBsZWdhY3ktdHJ1bmsKKzMyNzExIGJhZTY3ZTQxNGExM2E0MmYwOWRlZmM2NzUzY2ZhMGUwM2MzMzA0YjAgcmVsZWFzZTIyLW1haW50CiszMjcxMiBlMDkzOTllM2IyYzA5MGRmNDllYzNiZGE2NGM0NTAxNGRhYmM3ZDk2IGxlZ2FjeS10cnVuaworMzI3MTMgOTJlYmQzZGFmNTA3MmVmMzFhYjVkYjVmZDY3OTZkOTg4ZTM4YzMyOCBsZWdhY3ktdHJ1bmsKKzMyNzE0IDk4MzViNDExMzNhYzA2ZTY5NjhhZTI1ZDhhZTRmZGJlOTQxZjZiMmMgbGVnYWN5LXRydW5rCiszMjcxNSAxYmFiYmI0OTE5YTdmMTdkMmZkYmU5YWY3MDNhYTY0NTAyNjk4ZmMzIGxlZ2FjeS10cnVuaworMzI3MTYgYzAxOWFhODI3Zjg2MDU2OTc2ZDI5MTAwZWUwMDI4MWY3ZjJkOTM4MyBsZWdhY3ktdHJ1bmsKKzMyNzE3IGFiN2RjNTM4ZjZmNzJkMjhhMjFiOTJlZWMwNDZjNTU4NzNiMGIxYTQgbGVnYWN5LXRydW5rCiszMjcxOCA4ZTkyZjJlMmJkYTlmNWIwYzBmYjBiOGUwNTBlYTMyOTU2OThlZDhjIGxlZ2FjeS10cnVuaworMzI3MTkgYmYxNjM0YjAyM2Q1YWVjZWI4NDhkOWE3MTdhMjM4ZThiYTlhYjg0NyBsZWdhY3ktdHJ1bmsKKzMyNzIwIDkwMzQyZjM5NTcyMWRmNjRlMTkwYzZlZDgxZjk1NmY1Y2Q0ZjUxOTkgbGVnYWN5LXRydW5rCiszMjcyMSAwNDA2NWM0YTFjNmI1YWZlNTM5OGEwOWE5MTNlMDM2N2JlZTk3MDQ5IGxlZ2FjeS10cnVuaworMzI3MjIgMWM4NDhlOWY2MTY2MjMxYzA3ZWNkYWY4NTE0MGNjMzI4MDNmOTY3YSBsZWdhY3ktdHJ1bmsKKzMyNzIzIDU2NDg5NzBjNjY1ZjE3ZjM4ZDg4ZWUyOGI1MzJlYjNmZDdjOTljZDQgbGVnYWN5LXRydW5rCiszMjcyNCBiMTBhN2ZhY2MxZTg4NmRlODQyMzI5YzFiYzNhNjNmZTE0ZmJjYWQ3IGxlZ2FjeS10cnVuaworMzI3MjUgODVmMWE5NGFmMzc0MjI2ZjQ5NDQwOTQwZTYwZjVjY2JiNGI3ZTZhNyBsZWdhY3ktdHJ1bmsKKzMyNzI2IGNkNDg5MDNlNDFiZWZjZGUxNjE2NjdmNmFiM2YxNzA4M2NkNmRiNTYgbGVnYWN5LXRydW5rCiszMjcyNyBjNGU4YzY3MjFlNDU2NjUzYWQxN2NiOGFkNmJiZWQwMGRiMGVmMTJlIGxlZ2FjeS10cnVuaworMzI3MjggOTg4YjNlODA3MDQzNmRlMjNiNTY3NjY5Y2Y4NDg3MDY1MmNkY2U4NiBsZWdhY3ktdHJ1bmsKKzMyNzI5IDM1YTA5ZGM4MDg0YzlkMGFlZjkyMjkxNGE1MzExMjBiZjAzOTkzMzEgbGVnYWN5LXRydW5rCiszMjczMCBhZDg0ZmU1OGVjMmY4YWQ3N2I2NDRhOTE4YzkzYTRhOTY1MmRkOWMzIGxlZ2FjeS10cnVuaworMzI3MzEgNzU0YzQxYmNjODFhMmM4MTNhY2U1ODBhMmVjYWUyY2VlZDQ4ODU4YiBsZWdhY3ktdHJ1bmsKKzMyNzMyIDc4ZWZiYWQ1M2RkODZiNzdiYTM5Zjc4YTk3OGFkNWI1M2U5MjMwMzIgbGVnYWN5LXRydW5rCiszMjczMyBmNTc3NTFmZmQ2ZTc4YWJlY2NmZGEzZTY1YTA1NThjMjA0NjQyMTViIGxlZ2FjeS10cnVuaworMzI3MzQgNDM3YmNkNTJjYzA0NWNmNjM2NjBjYmRhOGYwOTU3MDY1M2JjZjM4NiBsZWdhY3ktdHJ1bmsKKzMyNzM1IGZmMTM2ZmVmNzIzMWM0N2Y0NGYwMjFlNWQwYjZjNWUyMTM5ZDRiYmQgbGVnYWN5LXRydW5rCiszMjczNiA1NDBhNzcyMDI4ZDI2YTUzOWM0Y2JjM2QwZTM3YWRkYTVmOTIyYzRhIHJlbGVhc2UyMi1tYWludAorMzI3MzcgNzA3ZTVmODljMjExYjBkNWVmMWVmYWI2YWE1ZmJiZmQ2MjUyMmE0NyBsZWdhY3ktdHJ1bmsKKzMyNzM4IGNlMWQ3ZTEwZjQ5ZTlkMGNhNjYzMmFlMmZjYjJhMzBjNDhmOTBiOWYgbGVnYWN5LXRydW5rCiszMjczOSA1YTBiYjZlYWE3NzYxODgwYTlkMTFhNDk4NjUxNDZiMTZhNTA5ODhjIGxlZ2FjeS10cnVuaworMzI3NDAgNDMyYWRkODRlMDYyZGNhOTdiY2JlNzAxYjlhZTllNWZhZWM4MWFiYyBsZWdhY3ktdHJ1bmsKKzMyNzQxIDUyNmYzN2ZiMzgwZDg2NDcwNGY0NWEyOGZiMGU4MTY0YWMyOGVjNTEgbGVnYWN5LXRydW5rCiszMjc0MiA0YjJlMDVjMTc1NGU2ZDMzNGI3MGIyMWIxNjkzNzg1OGExMWQ0ZDY1IHJlbGVhc2UyMi1tYWludAorMzI3NDMgYTU3MWE5ZDYyNTdhMmFkMWFkMDU3ZTEzNTRiZjMxZTM2MmI2ZjJjZiBsZWdhY3ktdHJ1bmsKKzMyNzQ0IDViZjk2MTg2ZGIzMWM1Mzk4MmU0MjgyOTQyYTllOTIxZTFkNTU2NjMgbGVnYWN5LXRydW5rCiszMjc0NSAyMjA2MDAwNGI5NGFlZWZhMDhhNTk1OTZlMTFmMjBhY2RhZDFjYTEzIGxlZ2FjeS10cnVuaworMzI3NDYgNGFlM2MyZDk4ODkwYmQ4OTc0NjFkY2I4N2I1OGZhMDBjODY3Njk0NCBsZWdhY3ktdHJ1bmsKKzMyNzQ3IGExZDU2MzE5ZWYwZWIzODQwNzMxM2UzNDA4YjIyOGExNjdlNmM0ODggbGVnYWN5LXRydW5rCiszMjc0OCAyMmI4OTBkMTU3ZjdkYjFiNjZmYzNiNWI3OWY4Zjc3NzViM2E2MDNiIGxlZ2FjeS10cnVuaworMzI3NDkgYzVlOTY1NWViZWQ3MmI5MGVkNTJmYjdkNGJiNjg4Mjg5YzNkYzk5ZSBsZWdhY3ktdHJ1bmsKKzMyNzUwIDNjZDVhZWM1OWVkMjNkYTVlYzY0ZDQwMTc2MThmZWE3OGFiMmJlNmQgbGVnYWN5LXRydW5rCiszMjc1MSBlOGI1NzA5MDUyZTI1YTJkMDEwZmJlZDUwNWIzOWRhZjJlYzUxMDdkIGxlZ2FjeS10cnVuaworMzI3NTIgMjQ4MDk2YTQ1NzMyYzFhMDUxNTM1NzMwZjQ0ZTEwOTE1NGE4NDNiYSBsZWdhY3ktdHJ1bmsKKzMyNzUzIDVjZTYyOTY0MjE1NTllMWQ2MmIwZWFjOGRiYjJiZGE5YTA2YTg2ZWYgbGVnYWN5LXRydW5rCiszMjc1NCAzNGQ2M2I4YzI3NWJiOWMzMDQwN2Q1NWZkYjljN2I5YTAzZmViYTZjIGxlZ2FjeS10cnVuaworMzI3NTUgMzJlNzBhZDc5ZjY2ZDBjZjg3YjQ4ZmIyMzU1MDViYjIxZjY1ZDdkNSBsZWdhY3ktdHJ1bmsKKzMyNzU2IDdhMWFlNDc1ZTBkYWQ1ZmZhOWI4ZTZkNGY5OTRmYWJkNjRjYjdiNDggbGVnYWN5LXRydW5rCiszMjc1NyA2NGE5ZTFiZTMyNTEzZDU4OWZhNDAxOGQ1NDYzZjExMzQxNjg4NTViIGxlZ2FjeS10cnVuaworMzI3NTggYTVlOTllN2U3ZmYwMzNkYjg1YzVlY2NiNWNjODEyNGEyZDEzNmY0NCBsZWdhY3ktdHJ1bmsKKzMyNzU5IDE5YzQxNDE4NmI5ZTUwNWIxNzI1ZjgwN2ExMWUwZmFhNzE0ZjkxZTggbGVnYWN5LXRydW5rCiszMjc2MCA5MWRlM2EwOTI0YTI5OGFkOTUyOGI0ZjM1NGFkMjg5Njg1ZTAxY2Y1IGxlZ2FjeS10cnVuaworMzI3NjEgOTNjOTJmMjBiNmJmYjZkZDAyNTYzMDVmYzMyY2U4MDg3OTUwZTY1YSBsZWdhY3ktdHJ1bmsKKzMyNzYyIGNiMDAyNTQ1MTQ4MmJjMzY3YmFlM2E5ZTAwZTgwOGU0MTUxZjlmMTggbGVnYWN5LXRydW5rCiszMjc2MyBjMDZiZjZiMmIxOWQ5MDJjZjhhYjllZmFlZTFjMmJhZTkxYWI3ODc3IGxlZ2FjeS10cnVuaworMzI3NjQgZDZiYTgxOWEyZjkwMTNiNThhZWI4NTFmZTdjMWE5OTI0YjQ0ZmUwZiBsZWdhY3ktdHJ1bmsKKzMyNzY1IGY0ZDQwNmFjZjFjYTBiZDU0ZGI4ZDc4ZjNiZWNjYTc0M2E4ZWQ2MTkgbGVnYWN5LXRydW5rCiszMjc2NiA4NTQwNjA0NWYwMTRkZDlkZGUyODVlNTg3MjJjMjM2ODdmYTQwN2Q5IGxlZ2FjeS10cnVuaworMzI3NjcgNTIzNzJkYzE5MGZjZmJmYTA3NWU3NTQ1MmNhYzNjMGU2NTg4OGM2YyBsZWdhY3ktdHJ1bmsKKzMyNzY4IDRiMDIyMDI2MGY2MmUxZjRiNjQ5NDBhOWNlZTVjMjg2NDUxOTQ0ZmYgbGVnYWN5LXRydW5rCiszMjc2OSA0Zjg3YTg0ZTliZWJiMjlmYjBkZDg3NmZkNzljNTRiYzAwM2UwN2NjIGxlZ2FjeS10cnVuaworMzI3NzAgMjQ3ODZjMzEzMGNhODc2ZGM0YTU5Y2VkY2E4OTY5ODNmNTk4NWFiNyBsZWdhY3ktdHJ1bmsKKzMyNzcxIDZhYzBhNjcyYjA4MjEzZmVlNzA4NTg5NzQwYjYxOGZmZmU5NDFkODYgbGVnYWN5LXRydW5rCiszMjc3MiBkN2FjMWE2NDBkOGY5YzAwY2E2MjIyNGRmYmVhODYzNWNjMDE3ZWU4IGxlZ2FjeS10cnVuaworMzI3NzMgNzg3NWZjYWFlN2EzNzEyZjFlNGJmZjhlMzc4ZWJkZjcxZjE4YjljZSBsZWdhY3ktdHJ1bmsKKzMyNzc0IGFkZGQ0MzdiZTc0OTIxNjI3ZGNhOTg5MzY1YTY3MjM2MzE2MDE5OGMgbGVnYWN5LXRydW5rCiszMjc3NSAyOWYxOTQ2MGYwNjc4NTVjNmRhZDc0YTUyZTgwZDkyODQ5ZWYwOGQ2IGxlZ2FjeS10cnVuaworMzI3NzYgYzdkZmRhOTkzYjJmYWVkYTMyYzA3OWViMTY5MmVhYzQ0Yjc0OWU1ZSBsZWdhY3ktdHJ1bmsKKzMyNzc3IGNmZjZiOGY0MjJkMTdhNjYwY2EyMTc1ZDE3MWRiOGE5MmZjOTE5YjkgbGVnYWN5LXRydW5rCiszMjc3OCA3ZjU5ZGNlOGY4YzBkNDI0OTEzMWEwMjhkYjk3ZGJmMjQzNGJjZmU0IGxlZ2FjeS10cnVuaworMzI3NzkgOTJlNTNjOGU3YTcyNDNiMjE0M2ZhODdhY2RlZTMxNzBiYTNhYWM3OSBsZWdhY3ktdHJ1bmsKKzMyNzgwIDZkOTMzMzA3NzYxYzAxNTU5ZjljMGE0MjBiNmI4YTA2ZTFkMjE4N2YgbGVnYWN5LXRydW5rCiszMjc4MSBlNjY5MWNlOTFiOWZkOWU1OTg5N2Y0ZGVkMjVhZjFjMDRkZDAwNjA1IHJlbGVhc2UyMi1tYWludAorMzI3ODIgNTJhZWJjMTQwMDY4N2QzNDY2OGFmZmU5YzQ3NjU4OTVkODgyNjE0YyBsZWdhY3ktdHJ1bmsKKzMyNzgzIGNmMzM4NjMzYjA3NDZjMGFlYmNmYTAxNTZiMGE3ODdkMDk5NjFhODMgbGVnYWN5LXRydW5rCiszMjc4NCA0Y2JmNzdlZGVlZDUyNzkyYjExNzMzMWIzM2QwNWY0ZGMwNTVmOGQ0IGxlZ2FjeS10cnVuaworMzI3ODUgOTg3NmIxOGVkY2FiNDA2MDhhYWFlNjdiM2MyNDM5NWRkYTljNWY3OCBsZWdhY3ktdHJ1bmsKKzMyNzg2IDY2YWExMDVjOGQxNzk4YjE5N2IzYzc2MjJkNmE5YWM5ZTdkMmJlMjQgbGVnYWN5LXRydW5rCiszMjc4NyA2MGU3M2M1MDVjZjJjMWMyOWI2MTdlNTZjMmUxODRmNzk2N2QwMTE3IGxlZ2FjeS10cnVuaworMzI3ODggNTNkZDhjNDI2M2ZkMzFkZmE5OWUyZTZhNTUxZDc1OTgxMjU0MGRiYiBsZWdhY3ktdHJ1bmsKKzMyNzg5IDJjMzU5MmQxMmQ2OTRlM2FiODM1MTk2YTIxNWQyMTIxZWQzMzI2YmQgbGVnYWN5LXRydW5rCiszMjc5MCBjMWU4M2I4ZDViNzBmZWRlNTJiNTczMjFiOTk4MzJkZjk2NTVhZmQ5IGxlZ2FjeS10cnVuaworMzI3OTEgZTlmOWExOTZmZGVmZTRmNzJlODc2MGJhYjA0MTk2MGY0NjI0N2RlNiByZWxlYXNlMjItbWFpbnQKKzMyNzkyIGMzMTBmOWRkZmRjYmRiMWE3YjU1M2IxZjI4MDkzZTVjMjlhMzk0MzggbGVnYWN5LXRydW5rCiszMjc5MyBhZTA0YTczYmY4ZmMxYmU3MTMwNTk3MDBjMDE0ZjFkODYwNjhiZTExIGxlZ2FjeS10cnVuaworMzI3OTQgZTU3ZTIyYWE1NmE0ODY3NzAzNWQ0YzA1ODIyNDViNGEzNGFkODZhMSBsZWdhY3ktdHJ1bmsKKzMyNzk1IGY5MzUxMmYxZTIwZmYxNmU1NWM0MzhiYTU5MGM2YTM4ZjhiMjQ5OWQgbGVnYWN5LXRydW5rCiszMjc5NiA1ZGExOTg0ODBiNmE3NmZlMzhhMWE2NmE2MWEzZDAyNzk1ZGViYmU1IGxlZ2FjeS10cnVuaworMzI3OTcgNDMzMmYyMDUzM2ZjZGYzZWE5NGYyNjBjN2IzYzgwMDQzNzlhY2RhMiBsZWdhY3ktdHJ1bmsKKzMyNzk4IDY5MzE1NWNkYWUwM2Y4MjEwYjQ5ODVkODkzYTQ3MTIwNWQ4MDlhNTQgcmVsZWFzZTIyLW1haW50CiszMjc5OSBlNmUxMDBlZmJjN2QzMWVhNDFhNDFiNDA3YmJmZGExM2YxY2Y2YjZjIGxlZ2FjeS10cnVuaworMzI4MDAgMmJmMjg5MDRhOGVjYWE1MzBhMTU3MzJjMmYxMzJkMzk2ZjQzNmFiYyBsZWdhY3ktdHJ1bmsKKzMyODAxIGI2MTkxY2E4ZWQ4MDcxNTkyYmJjOGUzMmUwNDFkNzcxYmYyYmVlMjMgbGVnYWN5LXRydW5rCiszMjgwMiBiYzUyMTY4OTYzYjMyMWQwY2U4YWJlMTM1NWI3OWUwNTVlNjRlOGZmIGxlZ2FjeS10cnVuaworMzI4MDMgZWYzZWY4OGUzNjE0ZjZhMTI3MGJjM2MwODQ5Mjc2ZDdkZDFkYmUwYyBsZWdhY3ktdHJ1bmsKKzMyODA0IDZjMzBiYjNlMzMyNTc3YzQzZTg1ZGFjNWRiZTE2NjY0NmYwMzgyMTcgcmVsZWFzZTIyLW1haW50CiszMjgwNSA4YmU5YTMxNmViOWRlMTY1YzU0MjhmN2MxYWFkNjU2OTI3OTk4Yzk2IGxlZ2FjeS10cnVuaworMzI4MDYgMjk4MmU2MTgyNTY2MWVmMWI5Yjk2YzEwYjkyY2ExZGE2ZjUwZDBlZiBsZWdhY3ktdHJ1bmsKKzMyODA3IDE2NzIxZDczYWQyOTNiZDkyNzFmZTZiYTY4NjE1NzAyMTE2YTU1YTkgbGVnYWN5LXRydW5rCiszMjgwOCA1ZTZkMGRjZjE1NWY4NzM0ZThlMGYyNGEyN2VhNjEyMTMyYmU0ZTRmIGxlZ2FjeS10cnVuaworMzI4MDkgNDZmYzNmOGU5ZWVlMzM5YzVmYzgyMzczZjAyZmY1OTE3YzIwMGNkMyBsZWdhY3ktdHJ1bmsKKzMyODEwIDlkOGRlNTY1ZTVkZWFjZGM3YzUzNTlhZWU5MTJjOTBiNDJiN2MxYTEgbGVnYWN5LXRydW5rCiszMjgxMSA3ZjAwNzRlZThhYjk5NTMyOTc4MTc5MmY5Y2Y0OTMyOGNmNDJhZjAxIGxlZ2FjeS10cnVuaworMzI4MTIgMDAxZDNjN2U5NjM3MGM2NWNhODNkZGFhN2NmMDFhYWZhY2IzZDVhNCBsZWdhY3ktdHJ1bmsKKzMyODEzIDUzMmRlMTkzMzJhNDc5MzEwNzc5YjM5ODhmYjlmNWU0OWRmMGMwOTkgbGVnYWN5LXRydW5rCiszMjgxNCA0YzFkMWIzNTlmMDY2OWM4YTVmYzUxODBiZDkyMTBkNDQxMDdlYjNhIGxlZ2FjeS10cnVuaworMzI4MTUgMWQ0ZWM1MmIzMTZjMGI4MGQyYTcyNWZhM2Y4ZTBlYWY2OGEyYjY1MyBsZWdhY3ktdHJ1bmsKKzMyODE2IDM4NGJkYTM0MzcyNWEwZGVkMGRjZGYyODAxN2Q0NmRhY2Y4Y2ZlYjQgbGVnYWN5LXRydW5rCiszMjgxNyAyYmI1Y2VlZjlhYzNjMmQyMjE0N2ZiYmIwN2JiMWM2ODQyYTZjMDlmIGxlZ2FjeS10cnVuaworMzI4MTggNGQ5MDE3ZWY3YjVmMzExMDg5OWM5ZDQ0YTNiNGYxNjNmMTA2ZGU3MiBsZWdhY3ktdHJ1bmsKKzMyODE5IDNmOWFhNmYxYWVmMDhjNGQyMmU2MjE4MmY2NTk5ODg4OWM3ZTZmNGYgbGVnYWN5LXRydW5rCiszMjgyMCA4OWI0ZThlMmMyMzBjYmU4NWYwNjQ0MWQ0YmQwYTZiMDdkNDUxY2YzIHJlbGVhc2UyMi1tYWludAorMzI4MjEgNjQzZjNhYzQzMGJlODdkYzRlMTBiOTQ0NzM5OGZhYzM2YTE1NjU4MyByZWxlYXNlMjItbWFpbnQKKzMyODIyIDY1NDVlNzQ5ODYzNWVjMjE5ZGIwYjBmNjhlMDdhZmM2ZGEyZTU4MWQgbGVnYWN5LXRydW5rCiszMjgyMyA0MzRlZjE3NGY0Nzg2MjM4MjliNjk5M2EwNTdhODc3NTAxMDQ0MjcwIGxlZ2FjeS10cnVuaworMzI4MjQgZjBiNjc3MzFlNTQ1YjViOTQ0NzNjNGFkMzdjM2IyZDI0YmExODBjNyBsZWdhY3ktdHJ1bmsKKzMyODI1IDljZjA5ZjkyYjE5OGJlZGNlZjg0MjdhYTA4ZmM3YzcxMTAwM2RmMzMgbGVnYWN5LXRydW5rCiszMjgyNiA5YWUxN2IzNzc5YmJiMDJkMGYyNGE5YjRiOTNmMmZiZTBjNDIxMzRhIGxlZ2FjeS10cnVuaworMzI4MjcgNDIxZmZkN2M1N2FmZWVhNzM4MDIzYWRjMTUyYWUxMjhmYzI3MjcwMCBsZWdhY3ktdHJ1bmsKKzMyODI4IGVmZTVkZDYwY2VlODhhYmY3Y2Y1ODZkY2EyYjQxZWEwOGQ5YTIwZTkgcmVsZWFzZTIyLW1haW50CiszMjgyOSA0NWY3ZGU3ZjEwNTJjOGIwMWNmNmFkY2UzNDAyMDJkODYxZjczNjBjIHJlbGVhc2UyMi1tYWludAorMzI4MzAgNTcwYTdiOGFhMTU0MjE2NTY1YzcyZWYzNTc5YjUxODI2YzY0YTFhYyByZWxlYXNlMjItbWFpbnQKKzMyODMxIDRmNTMxY2RmMjQyZThhYzJmOTFlY2I5ZTczZGFmMDgzNDM2YWRjNTIgbGVnYWN5LXRydW5rCiszMjgzMiAxZGM3YzBhMDIwZDNkN2UzNWI3MmExMWIwNDhlZGZhNDc0ODc0YmZkIGxlZ2FjeS10cnVuaworMzI4MzMgNmU5NWFkZDkyYzk5YmFiOGYzYzBmZDcyMTE4NzQwZDAyYmU3M2MxYSBsZWdhY3ktdHJ1bmsKKzMyODM0IDQ2MzAwYjlhZjAyYjk0ZGFkY2U1MjE0YmQ5ZTZkMjdhZDRkMmY2ZjggbGVnYWN5LXRydW5rCiszMjgzNSBmNDc1YmVjMzE2OTU1MTQ0NWM3ZWI1ZDhlNDA5NjQzYmJlYjAzOWQ1IHJlbGVhc2UyMi1tYWludAorMzI4MzYgMDU0ZDliYzBkODYwOGFiNzM0NGQwNmFkNjAxYWQ3MTZjMGRhOTVlOCByZWxlYXNlMjItbWFpbnQKKzMyODM3IGYzOWMyNzFhOWE4ZTZjMjI4YTQxMDk0MDQyZDQ0YzRkYmIxYWRlYjggbGVnYWN5LXRydW5rCiszMjgzOCA5YWEwNmNiZDljYzFhMzA3YzRjOWM5MmRjOWYzMDE2OGM2NTY1N2RjIGxlZ2FjeS10cnVuaworMzI4MzkgYzdmNmY3Mzc0M2IwOGI0OGIzM2ZhNDdjNGE4NzlkYWIwMjc1OWFjZCByZWxlYXNlMjItbWFpbnQKKzMyODQwIDJhYWEzOWVkYzUxMWU3ZDMwMGJhMjEzNDYzNzdkYzE4OGQzZTE3YmYgbGVnYWN5LXRydW5rCiszMjg0MSA4OTZiYmQwODA2ZThmM2YyMGJiZDU3ODFiNzJmZjJhZmYzOWRhMjNjIGxlZ2FjeS10cnVuaworMzI4NDIgYmVlM2QxYTFiOWE5YTNjYjE1NWI3NjYxNTgyOGNiNTFlNjhiZjgyMyBsZWdhY3ktdHJ1bmsKKzMyODQzIDRiMWMxNTBkMDdkOGM1YjA0MWJiMzVkNWFkYjcxMDNhZjhhNDZjMTEgbGVnYWN5LXRydW5rCiszMjg0NCAyMjdjNjY0NmNjNmJiNWIxYTJiNGJlYjE1YjFlYjhkNmIxZTdiZTMzIGxlZ2FjeS10cnVuaworMzI4NDUgMTI5N2Q0MDUxNTViZDM2ZDE1N2U2YTFkY2NhN2I5NzExOTNkZTVmMiBsZWdhY3ktdHJ1bmsKKzMyODQ2IDliMjQyNTA2ZDZkYzdkNDdmM2RiOGQ2NzViZTczMjc2MzQzMmRkOWEgbGVnYWN5LXRydW5rCiszMjg0NyBkNjY1YzZiOThjZDI0MWJhNjdkYWFhNjJhZmE1YjUzN2Q3NTkxNzM5IHJlbGVhc2UyMi1tYWludAorMzI4NDggODEyOTZhODBhMTVmMmUyMDViN2M5ZDM3YjdiNGUwZTM0MzcxNTA5NyByZWxlYXNlMjItbWFpbnQKKzMyODQ5IDZkNmJkYTI1NDliNmJkNDYwZDViMzRmMGU0ZWZiMjViODk0NjkwMDIgcmVsZWFzZTIyLW1haW50CiszMjg1MCBhOTIxMGJlYzNiNWFmOTI3NDkxNjY3MjRmY2MxMzA4OTNhY2JmNDU4IHJlbGVhc2UyMi1tYWludAorMzI4NTEgMGE5N2FkYzZhNDdlYjI0NWNjOWE3ZWMyMmI0ZTI5NDc3M2ZhZmEzMiByZWxlYXNlMjItbWFpbnQKKzMyODUyIGI5NzYyZjAwM2YzMDhkMTc1MjczMWFlM2ZiYmVmMzBmMWNmMWY5N2YgbGVnYWN5LXRydW5rCiszMjg1MyBjZDFjODI2Yzk4YTJiZmJjZTRhYWVkYjViMWYwMDljYjNiZGIwNzVkIGxlZ2FjeS10cnVuaworMzI4NTQgMzYxZmFkNjMzMzJkZDI0OTA1ZDIyODM5ZjBmYjY2MmNkZGRkOWY2OSByZWxlYXNlMjItbWFpbnQKKzMyODU1IDc1NGZkMzRhZDk3ODRlMmM3N2U3MTY3OWI1YzQ2NmZlM2Y5MjBhNmMgbGVnYWN5LXRydW5rCiszMjg1NiBmNmU5MWNhNTZhNDk4YzdmNjBiNTlmZDc4MjBjMjFjZGNiODgxNzFiIGxlZ2FjeS10cnVuaworMzI4NTcgMzE1YTc0NzI3N2JmZTc2ZDU4Mzk1Mzc4ZTllMTA0YjU5YWEwYjQ3NiBsZWdhY3ktdHJ1bmsKKzMyODU4IGIxZjY0MzY5MGE4ODdjZTIxZWRlNjhiMmYyZTljMTc0YmJhZmYxNTYgbGVnYWN5LXRydW5rCiszMjg1OSA1NmZmY2EwMmM4MjQzYjM1MWZlNzQyNDMyZjE5NWQ2OGZlZTY3Mzk2IGxlZ2FjeS10cnVuaworMzI4NjAgZTcwOTQzOTMzNzM5ZWZjYTY5MDY0ZTFlZDJiMDA4MjUwZDlmYjQ2YiByZWxlYXNlMjItbWFpbnQKKzMyODYxIDVlY2M0OGFkNjYzNDAwMGU3ZWQ2M2M0MDViMWY1YjZmYzAzNjNlNjEgcmVsZWFzZTIyLW1haW50CiszMjg2MiBmZjliYTNkMWUyODBjYzYyMTczYzQ4YWUyZTZiYmVkYzQxYWRkNjc2IGxlZ2FjeS10cnVuaworMzI4NjMgZGEyYzVkOWRkNjBlMDdlMzMzNDM4MjgzMmVhNzcxYzYyMTgwYzBkMSByZWxlYXNlMjItbWFpbnQKKzMyODY0IDM1YjI3NjliMDJiNjM0MDk5ODY1MjE3MjIxNDliYjAyNDkzYzk4NGYgcmVsZWFzZTIyLW1haW50CiszMjg2NSBlNWFmZjA2MDM3Yjc5NGU2ZWVhODY3YjFhZDNlZDE3OGQ5NTljMDY1IHJlbGVhc2UyMi1tYWludAorMzI4NjYgZDljZjUzNmM1MzQwY2VkZGU3ZjU3ZTdmZWY0MmFkYWVjZWFmMjU4OSBsZWdhY3ktdHJ1bmsKKzMyODY3IDU4NGRjNDZjYTA2NmRhMDM4M2MyZGRlNjQ4ODBlMjAxODA1OGE4YmYgbGVnYWN5LXRydW5rCiszMjg2OCA2NDYyMjE2ZmUzYTg3YWJjMGFkNTk1MTk2YWUyYmM5M2RlMTY4MzZlIHJlbGVhc2UyMi1tYWludAorMzI4NjkgNGJhYzRkMGQzZTNlZDFiMjg4NzdiNzk1MzZjYzBmNTNjN2RiZjhjZCByZWxlYXNlMjItbWFpbnQKKzMyODcwIDY5OTc0NjYzMzI0NmM3Mjk2ZTUyMmQ2ZWRjMDQ0MzJmYjdlM2MyNjUgbGVnYWN5LXRydW5rCiszMjg3MSBmMDViYWU0MTJiNzFiMjQ1NzA3ZjAzNzEyMWUxYTcxYzlhMWM2MmE3IHJlbGVhc2UyMi1tYWludAorMzI4NzIgOTg1NjcwNjUwNjRiN2JiNTk3YjIzMTA4ZDA4YzIwYzY2ZmU2ZTI0OSByZWxlYXNlMjItbWFpbnQKKzMyODczIDA1MjNmMDliYjM0ODY3NTZiN2VlOWUzMjBiNDgyMTU2NTY2OWJlZWMgbGVnYWN5LXRydW5rCiszMjg3NCA4NTYwYjE0NmY0MWYxZDA3YzI2NzI0MjM0OTkxYjY1NTIwZjE4NzlhIHJlbGVhc2UyMi1tYWludAorMzI4NzUgZjE1NjI2Yzc2NDE4NjczOWU3MTRkYjlkMTFhZjYyZWQzMWQ5Njg5OSBsZWdhY3ktdHJ1bmsKKzMyODc2IDI3ZWMxNDcxZGNiNmE5MmYyYTExOTExNWE1ODYwNjVmYWM2MzZmMmMgcmVsZWFzZTIyLW1haW50CiszMjg3NyBlYTI5NThiZDQyNzFmZjE2NjM2MmZlYTlkNWY4ZDYwYzczNWFhODAxIGxlZ2FjeS10cnVuaworMzI4NzggODU4ZDU2OGViZjc2MzExMDdhMWVkMThiNDBiM2IxMGJmYTViZTFkYSBsZWdhY3ktdHJ1bmsKKzMyODc5IGYzZjMwNjQ1N2I0MzBlYTE5ZDdkZTc5NDZiN2I3YmI4NTE0NTBmMDkgbGVnYWN5LXRydW5rCiszMjg4MCAzYWFmMjRiOTQ5ZGZiNjIwOTE1YzY5MDUzYzhkNjdjYzdkYzUxMzU4IHJlbGVhc2UyMi1tYWludAorMzI4ODEgMDUyYzYyNjNkZjI2OWEyNjRjMjE4NGZkODM4Y2I2ZGE0M2UyNjM5MSBsZWdhY3ktdHJ1bmsKKzMyODgyIDEwOGExMDA2YTkwNTNhNGZjMzZjMTEyMDViZTY4MTUzNjE3MDVkYWMgcmVsZWFzZTIyLW1haW50CiszMjg4MyBmN2RmYWVhYTRhYjk4OGE1NDZhZWUyYThkYjFhZmVlYjM3Zjk2N2QwIHJlbGVhc2UyMi1tYWludAorMzI4ODQgYmQ4MjE2MWI2MWU1NTY5NDZiMjQ4YTIwOTM2Y2E3NTljNmNlNmU3MSBsZWdhY3ktdHJ1bmsKKzMyODg1IDY3ZDU2MGQ2MDhjZWQ3NmFmZTFlMWI0NTcyZGJlMjM2ZDk2YTZhMmQgcmVsZWFzZTIyLW1haW50CiszMjg4NiA4NTZjODFmNzEyMTNkYTIzZTk2MDRmYmM4ZWY5ZmFlOTFkOWI3MDIwIHJlbGVhc2UyMi1tYWludAorMzI4ODcgZWFmOTBlODUwZDEyZTlmZjEwN2I1ZmIyZDQ1NDM0Zjc5ZjdmYmUyMCByZWxlYXNlMjItbWFpbnQKKzMyODg4IDM3N2EyOWY2ZDY4NzkzZDY4N2IxOTdlZjdlMzJiZDE4MzY0NzAyM2YgcmVsZWFzZTIyLW1haW50CiszMjg4OSBmM2QxZWQxNDExODgyZDU4ZTFjOTkyOTE1NzIwMDk1ODc2ODE2YWQxIHJlbGVhc2UyMi1tYWludAorMzI4ODkgYWM3N2I5MTM0MjUzNGQwOWIxZTQzMmUxZGMzYjcwZGJiZWMzYTkxOSByZWxlYXNlMjItbWFpbnQKKzMyODkxIDA2ODUyOWE5MDk5MjZkNGY2MDNjZjBiNmQ2YTBkNGEzMzQ0YWRkZmYgbGVnYWN5LXRydW5rCiszMjg5MiA3NTJmYzVlYTE2YjliZDEzZmIxNjQwMWQyNjIwYWY1NTk5MDkzNWJjIGxlZ2FjeS10cnVuaworMzI4OTMgMzVkNzAwZDkwMTVlMDU4ODhjYjBjZDliNjc2Yjg0YWJiNmU1ZjZmOSBsZWdhY3ktdHJ1bmsKKzMyODk0IGU3MjEwMjVjY2EwOTM5ZmE2NWUyYzM2ZGMyNjQwNGZmNDBkZmU2OWYgbGVnYWN5LXRydW5rCiszMjg5NSAzODdkN2MyMjE2YTE2OWI2YzY2ZDg0ZjhlNDFiMjM0OGNmYTYzMGNhIHJlbGVhc2UyMi1tYWludAorMzI4OTYgZDcyYWQwN2M3MzllYTJjOGUzNTYwMWY5NzYyZjkzMmM1ZTk3NjUyYiBsZWdhY3ktdHJ1bmsKKzMyODk3IDY0MjI3ZjhkZTdkYWMxMDU4NDA0NDU2Y2RmZTRjZTExM2Y0NTE2ZjIgbGVnYWN5LXRydW5rCiszMjg5OCAyM2FkOGI1ZDdiNGEwZWYzNjg5NzRkMzA2ZTE2ZTllNGYwNWI0OGQ2IGxlZ2FjeS10cnVuaworMzI4OTkgY2EwYzgxMzdkZTg0NDU1ZWFmZTE5MjQ4NTMyMTY2N2Q3MWIwY2RkYSBsZWdhY3ktdHJ1bmsKKzMyOTAwIDM5Yjg3MTY3ODQ2NzUzZDIyNTUwMzEwZThlNWI5ODdkZGUyNmMwMDYgbGVnYWN5LXRydW5rCiszMjkwMSAxYzMyZDQyMDc0MDRhODY0NDVmMTkwZTA0NGYxNzFiNzU5ZjU2Yjg1IHJlbGVhc2UyMi1tYWludAorMzI5MDIgMmY0Mjg3NWQ5MzdmMjRkNTRkNzk5YWY3NzMyOWQzMTdlMWFjZGNjZCBsZWdhY3ktdHJ1bmsKKzMyOTAzIDg5M2FlNTI2Njc3NjUzZjMwYTM1ZWRhZWI1NzM0NDU4YmUwMTUzOGMgbGVnYWN5LXRydW5rCiszMjkwNCAzNDYwOWZhMzViMTFjMTdmYjUzYTUzNDlmMjIwZTA0MDlmYmY3ODk4IGxlZ2FjeS10cnVuaworMzI5MDUgM2E4YjFkMTZiN2M2Y2RjZGI1NTJhZDE0ZGNmZWFjNzA4NjVlYjNmMSBsZWdhY3ktdHJ1bmsKKzMyOTA2IDBiNzY2NzliZjNmOThiNzc0MWNmYThlODY1MmQ2OTU3NTY2MzQyZjggbGVnYWN5LXRydW5rCiszMjkwNyBiNGM5MmU5ODAzYTYyMTIzNGRiNmViNDljNmYyNGRjNzNmNmIyMDZhIGxlZ2FjeS10cnVuaworMzI5MDggYmU3MGI4NDc3ZjQzZDA4YTY4Mjc5ODE4YWY4YTBiNjhmNGZlNmVlNiBsZWdhY3ktdHJ1bmsKKzMyOTA5IDM2ODliMDA1NWMyZGIyMjk2YTllOWE5OTdhYzJhNTA1MTkyZGNmZjMgbGVnYWN5LXRydW5rCiszMjkxMCBiOTA5ZmRmMGVkZjhkZGUwYzY3ODI4NTc3MDlhMmMwMzI3ZjFkNWVhIGxlZ2FjeS10cnVuaworMzI5MTEgZGVhMzgxMTZjMzczNTI2ZGM0NjZlMWM3Mjk4NjE1MDcxZGI3Y2E2NiBsZWdhY3ktdHJ1bmsKKzMyOTEyIDE4YzAyMDQ2Mzk2NWQwMjlkZjdjMTAzZmUzMGQ0YzhkZjQ5ZDY5NzYgbGVnYWN5LXRydW5rCiszMjkxMyBmMWU1Njc0ODUxOTQ0OGJjOWMwNGMyMDJhNGYzYmNmNjYyOWNmYWNmIGxlZ2FjeS10cnVuaworMzI5MTQgMTYxZjA1ZjQ2ODBkOWQzZDgyNzc1ZmM5YzkxYTEyZjA0NjdlOGY2NyBsZWdhY3ktdHJ1bmsKKzMyOTE1IDM0ZjQyZTM0NTBiNGQ2MmMzOTUyZTk2OGVlZmI4OGZhZTkyYjJiNmIgbGVnYWN5LXRydW5rCiszMjkxNiA3ZWE1NTBlY2Y0M2Q3NGVkNDMzYjUyOThkYWQ1MmJjYzAyZmQ1YjViIGxlZ2FjeS10cnVuaworMzI5MTcgNDVjNmJlMzU3MzNmZGQ2YWY4YmNhZDVjNzY5OWU3MGExMzhhYTdiYyBsZWdhY3ktdHJ1bmsKKzMyOTE4IGE5ZDc3OGJkOTY1MzY4ODMzZjI5N2NkY2ZkOGFhYzY5ZjEwN2M2NDkgbGVnYWN5LXRydW5rCiszMjkxOSA3NGRhNGQyZWFhZDM2NzliZWU3NWE0NzY1YjE0MDAwYjExMjlkZWZkIGxlZ2FjeS10cnVuaworMzI5MjAgZDIzZTkzMjBkMzUwMDJkNjhhOTg1YWYxMTMyMTgwMGU0NTE1YjQ4NiBsZWdhY3ktdHJ1bmsKKzMyOTIxIDNjNGQ5NWE0Y2UxNzdlN2JiZDlkODAwNmQ4NTc1N2E2M2Q3ZWUwNGYgbGVnYWN5LXRydW5rCiszMjkyMiA3ODg3ZmUzYTlhOGZmNmE5YTdhZDgyMTk0MGY1NmY1NjVlM2JkNjQ4IGxlZ2FjeS10cnVuaworMzI5MjMgYzU2MzM4ZTA4N2NhY2FmOGMwNDFmNmJkMGIwMWUyYTIwZTM1NDQxMSBsZWdhY3ktdHJ1bmsKKzMyOTI0IDA4NjMwOTE5YmY1MmIyZWM5MzRjMTA5NmVlMTE4NGI2YjFiNDA5N2IgbGVnYWN5LXRydW5rCiszMjkyNSA4ZjczZGYwOTk5NjczNDAyYTNiYzAwYzFlOGViODYzN2Q2YzBmZDVkIGxlZ2FjeS10cnVuaworMzI5MjYgYjdjZDFmZjAwMTliOWFkZWRjMzI5NmEyNjU4OGYzZTYzMmU5ZjQ2NiBsZWdhY3ktdHJ1bmsKKzMyOTI3IDg5NzgxMjMxOGZmNDFkNDk3MDJkODU3OGMwMDg4N2QyZDczN2QzMDMgbGVnYWN5LXRydW5rCiszMjkyOCBkZjgwYTViNjk1N2I1ZWU1YTcyNjNjYmNmNjhiMzQxMjI3MjJhMTIzIGxlZ2FjeS10cnVuaworMzI5MjkgYTA0M2FmNjA4ZTk0Y2M3MzExMjc5ODU5NWEzYTM5Y2ZjZjgwMTkyZCBsZWdhY3ktdHJ1bmsKKzMyOTMwIGZlYzdmMzNiNjk3YzE4NWE2OGU4NDIxY2ZiMmY3YjViNWVhODMxZmYgbGVnYWN5LXRydW5rCiszMjkzMSA2NjczMDUzZWRhZDNmM2Q5OGViMzEyOTBhMDg0M2JhNDBjZjY5ODBhIHJlbGVhc2UyMi1tYWludAorMzI5MzIgY2ZiYTc2Zjc3NjQzNThmZjI0OTFkNTEzNTU3MmJkNTBkM2I0YjM1YyBsZWdhY3ktdHJ1bmsKKzMyOTMzIGIzNzJiOTAzZDEwZTdhZGQzMjkzYTk3N2MwZTkxODczNTQ4NGRmM2EgbGVnYWN5LXRydW5rCiszMjkzNCA4ZjJjNWNmNjE3NjM5MDZjMzJmYzhkNjhkZWVhNmJkNzBkNTE5YmRhIGxlZ2FjeS10cnVuaworMzI5MzUgNDk5MmM2MGQ0MjJiMjhkMWZlYjZiMzNhYmI4ZjVhY2QxNjY1NTRhNSBsZWdhY3ktdHJ1bmsKKzMyOTM2IGMzMjVlOGYyMGQ2ZTk0MDk1ZjMwZTA3YTUwODBlYTUyMzE0YmM3YzkgbGVnYWN5LXRydW5rCiszMjkzNyA3ZjEzMGE0MzcwYzllMzRjNjVmZTllMTZhZWQzZWZmZDFhOGM5ZDFhIGxlZ2FjeS10cnVuaworMzI5MzggOGVlYjFkZjY5ZjM1NzUxNzQzYWUwN2ExNGU4NzA2ODI5NjQ4MGQ2NyBsZWdhY3ktdHJ1bmsKKzMyOTM5IDk0OWY0MTgyOWYzNmY0ZjdkM2ZhZjdkOTRjNTMyNmZhNDg4ODI0MjIgbGVnYWN5LXRydW5rCiszMjk0MCBhNWM4ZWNhNTRhZWIwMWYzMzA2ZTliZGVkODIxNzVmYTU4MjdkOGJkIGxlZ2FjeS10cnVuaworMzI5NDEgZGU0MWYzY2Q2NDc0NDUyMTRmY2YzZmJiNzk5MmMzMWI5NmZhMzhkMyBsZWdhY3ktdHJ1bmsKKzMyOTQyIDA0MzdjZjRiOWVlYzFlMmYwMjMzNDJjOWFlNmU3YjNjYjRlZDFhN2UgbGVnYWN5LXRydW5rCiszMjk0MyA4MTFhZDVmMmY3MDE0YzExZmVjYTU3YjJjOTczOTA1YzI3ZGJjNzQwIGxlZ2FjeS10cnVuaworMzI5NDQgYjViYWRkM2E4ZDRmMzkxOGZjOGFjNWUwMzA2ODk1MmY4YmE3OTg3YiBsZWdhY3ktdHJ1bmsKKzMyOTQ1IDcwNjI2YzU3M2VkNzFkZDliNmMxY2UyNWRmN2Y0NDVmZTMwZDE1MTggbGVnYWN5LXRydW5rCiszMjk0NiAyMTQ1MWY3NjA1OTYzMWNjYTk1ZjJlNWY3YWQ5ZDlhN2I4NTg3MjNkIGxlZ2FjeS10cnVuaworMzI5NDcgZThjNGMxNWY0NTllMzVlYzBjODhjNTViNjUyZjRjZTcxNDMyZGEyOSBsZWdhY3ktdHJ1bmsKKzMyOTQ4IGJkMzQ5OTk5Y2IwODI4ODk4ZDgwZWIxZGNiNWRkZWViOGEwZDYyNWQgcmVsZWFzZTIyLW1haW50CiszMjk0OSBkNDY0NTlkODJhNzkyNzhlNTkzODQ2YWY5MjIwNjdkMmNmMWU3MjY2IGxlZ2FjeS10cnVuaworMzI5NTAgN2Y3YTA3ODA0NmZiNWMxMGJmMzE3NzI3NTM0NzQ5MDQ3MmQxNjNiNSBsZWdhY3ktdHJ1bmsKKzMyOTUxIGMxZTgwZjJmMWM0NzFhMjNjZDc2NmI2MTYzZTc3OTNmYzU4NjJlM2MgbGVnYWN5LXRydW5rCiszMjk1MiBiNTQ3OGQxZGQ2N2VkZDlkNjZlOGFkMGU5ZDlmNjRjYmRjMmI3MDJlIGxlZ2FjeS10cnVuaworMzI5NTMgMGJlYjFhNjUxNDQzNTgwMmQwMzEzNGNhMDdiNTBhYjA5MzI3MDU3ZSBsZWdhY3ktdHJ1bmsKKzMyOTU0IDczMjgzNjY2NjAwMDMyM2ZlZjUyMzc3NTIxYTY2ZGUxNjkyNWJiMTQgbGVnYWN5LXRydW5rCiszMjk1NSA5OGFmZmRiYzQxNmM0MTA5OTRkNTU4ZDUwNjY3NzFiN2U1YzBkNWMzIGxlZ2FjeS10cnVuaworMzI5NTYgMDhhMWNiZGQwMzY3ZmQwMWIyNzM4Y2UzZWM1YmU1YTA3Njg4NzJmMSBsZWdhY3ktdHJ1bmsKKzMyOTU3IGUzYWVmZWJhNDExNjA5YTIyYzc1ZjkzNzAxNWE0YjFlYWNjOGVlY2MgbGVnYWN5LXRydW5rCiszMjk1OCA5OGQ4MTU5OWVjYTc0ZWMzM2ViZmRhYmZlZDk3ZTMwZWZiMjg3NDE1IGxlZ2FjeS10cnVuaworMzI5NTkgYzNhMDIwNzRjYmVlOWI2YWU4Mzg3OTgwNjI5NWIwODYwNzdmN2JjYSByZWxlYXNlMjItbWFpbnQKKzMyOTYwIGU2ZjhlMjY4N2M2ZmQ1NzUyNGVhNmQ1ZDhiYTY5YzExNTMyOTNhMjAgbGVnYWN5LXRydW5rCiszMjk2MSA2NDY4ZjBlMWY0YTg1YmJlZGJmNGM1Mzk1MmNiZmU3YjJhZWIxZmZiIHJlbGVhc2UyMi1tYWludAorMzI5NjIgYWQxZTY3YWM1NjdiODcyOTk0Y2JhOWU2YzhjNGEwZGE5MzUxMmMzNiBsZWdhY3ktdHJ1bmsKKzMyOTYzIDQ2Mjk0ZWRkYmE1NTEzYmJiNTQxNWIzMmFlODc4MTU1M2I4YjQxNDAgbGVnYWN5LXRydW5rCiszMjk2NCA2NzFlOWMzYWY0ZjM4NWZiODhlZGU3ZTY2N2NlMWJkNjRlNzU1ZTcyIHJlbGVhc2UyMi1tYWludAorMzI5NjUgZWQ3MDc3OWY2NDAyMWM5MGVmYmZjMDM4NzUyMmE1Y2UyMjI1MWNkYiBsZWdhY3ktdHJ1bmsKKzMyOTY2IGIxNzkyYTYxOGU2ZGJjYmUxMWU0MDc2M2RhZWQyZWJkOGVmMDExMzkgcmVsZWFzZTIyLW1haW50CiszMjk2NyBkYmNlNTU2Y2ZjOTZlOTA3MDlmNDQ2MzQwNzQ0NjI4MDEzOGRiMmU1IHJlbGVhc2UyMi1tYWludAorMzI5NjggNTFjZTY5YmRmNDE4NmU4MjAxNDc5NDFkZTQ3MTI5MjVhNTA0Y2M0MyByZWxlYXNlMjItbWFpbnQKKzMyOTY5IGMyOTFjYTI5NDllOTI2NDFlNmNmYWUyYzVkNjhmMDdjZmNiZTgwZmQgcmVsZWFzZTIyLW1haW50CiszMjk3MCAyNzJjNzViMWQyMmViYjA1ZmM3YmUyYjA1NzdlYTA4OTQ2ZWRiZDcwIHJlbGVhc2UyMi1tYWludAorMzI5NzEgZjQ0ZmJmNzRlYjYxZGMyOGMxN2ZmODQ1MDMzNTI2OWFmYjg4NmQwNyByZWxlYXNlMjItbWFpbnQKKzMyOTcyIGY3ZjQ2ZDY3M2M2MWM3MmNjOGNkMDkzYzAxN2ZlMGZmZDc0ZjJlMjAgcmVsZWFzZTIyLW1haW50CiszMjk3MyA2NWY3ZWZkMzVmMTE5MDFjNzBmNWM5N2IyYTlmZGQ3M2YzYTAwM2E1IHJlbGVhc2UyMi1tYWludAorMzI5NzQgYjMxYzg0YmExZjMxNDRmNTA0NzU2NWFmNDM3MTFiZDNhMGE2YzQyYyByZWxlYXNlMjItbWFpbnQKKzMyOTc1IDc3NDYyNjliOTUxY2RkNjJjZjY5MDhiY2E0YjEyNzU4MDVmN2UxMDMgbGVnYWN5LXRydW5rCiszMjk3NyBiZjJkYzBkMTcxNDg4MjdkNjBhNmZkMmM2OWZmNWJiZGY0ODM2YmNmIGxlZ2FjeS10cnVuaworMzI5NzggMTJmOWVhMzJmMjNhNTI5NzBiYjQ1OWVmMjY2OTlhNzNiZGUzMGZlOCByZWxlYXNlMjItbWFpbnQKKzMyOTc5IDAwOGNkMTAxMjY5ZGY2ODI5NjgwNGYzMTc0YmM5NTJjNzBiNGMwMjAgbGVnYWN5LXRydW5rCiszMjk4MCA3YmVjNjI4OTk4ZmU5ZTc1NzI2N2U1NmFiZGUzZGJhNjgwNjVmZThjIGxlZ2FjeS10cnVuaworMzI5ODEgZTk1MGFiYzMyOTIyN2FiNjgwMDU3NDcxMDBkY2VhNjc1MDkwNDI2NCBsZWdhY3ktdHJ1bmsKKzMyOTgyIDM2ODJhYTI3MTQxYjQ0MjJjZTZhZWY5ZWZlOWM5YmY3NDY5ZTQ0YzUgbGVnYWN5LXRydW5rCiszMjk4MyA4NzAwYTFjNzAxNmIxMGYwOTg4ZDliYWYzNjQxYWZiZGRjZDg3NTJlIGxlZ2FjeS10cnVuaworMzI5ODQgNjNhYjUwZWM0YTQ2NjE1YWYwZDQ2OTU3MTZmYzg4YTJhYzQ2NTNkYSByZWxlYXNlMjItbWFpbnQKKzMyOTg1IGU0NTgzZDE2NmNiY2Q3OTg2YmExYjRlMmEyMTA4MTI4ZTE5ZWMwODIgcmVsZWFzZTIyLW1haW50CiszMjk4NiAyOWFiMWM5MjNmNzU3MTBhMmI5NGRmMzgxYTdhMjMwNzRlMGZjMmE3IGxlZ2FjeS10cnVuaworMzI5ODcgNDdjNzI1YTMyYjBlYzEwZjhhYWU3ZTcwN2MxYTY3ZjlhNDNiZDViYSByZWxlYXNlMjItbWFpbnQKKzMyOTg4IGMwMDFiYjAwMDU1ODBkMmE1NjlhYjJlNzJlZGEyMjdhNmQ1ZmMwN2QgcmVsZWFzZTIyLW1haW50CiszMjk4OSA4M2EyZTcxMzNiMDEwNTUzYjU0NzU2MDU3Y2M3ODMxMTgzZGNhNWEyIHJlbGVhc2UyMi1tYWludAorMzI5OTAgODkwY2Q3YTIyMjNlZmI5Njg4NDYyYmVlNGI0Y2Q2OGJmYmY1OWY3NSByZWxlYXNlMjItbWFpbnQKKzMyOTkwIGY0ZjEzNGFkNDZhYmQwYmM5NzNkM2Y2MDk0ZWE1NmU2MmFjNWM0OTIgcmVsZWFzZTIyLW1haW50CiszMjk5MiBmOTQ5NTgxNWMxOGYzMTlkOTYyOWRmNGI3NDU2MjU5ZDY0NmI3ZTAzIGxlZ2FjeS10cnVuaworMzI5OTMgZjQwOWIzM2MyOWNlNDkyMDBlMzE5ODE3M2MzNzUyNTAzNTM0MTcwNCByZWxlYXNlMjItbWFpbnQKKzMyOTk0IGZjMjg2ZTI4NTU2ZjdkODZkZmY4ZmZiYzIwNWZiMzdlZTg1ZTM3MjEgbGVnYWN5LXRydW5rCiszMjk5NSBjNjlhZDkyMjdhZmQ0ZjkzMWI3NGNhNTY2MDJmZWVlZDIxN2RmYzlhIGxlZ2FjeS10cnVuaworMzI5OTYgNmFiY2I2OTBiNDdiNTRhN2E4YjU4NWJiMjE0Yzk0YTA3YzgzNTVmMSBsZWdhY3ktdHJ1bmsKKzMyOTk3IGQ4OWMwODM3ZjhmNDE4MzE1NWQyNTQ1ZmQ1NWQ4MDI2NGVlOGI0YzEgbGVnYWN5LXRydW5rCiszMjk5OCBlNGY3MGU2MDI1OThkNDhiYTJiNDI5ZDU3NWJlZGYyMzAyYjdiN2JiIGxlZ2FjeS10cnVuaworMzI5OTkgOTdmZDFmNDlmMDI2YWE1MDRjNWNhZjdhMDg2NzljZTY2OWUzMTA4ZiBsZWdhY3ktdHJ1bmsKKzMzMDAwIGIzNDU1YzRjMTc5ODg3NzhkNzhjYTViOThjYjhkNmM5NTk0OGVhMTMgbGVnYWN5LXRydW5rCiszMzAwMSA3NTQ5NGFlYTQ3Y2E3MjY1NDkxZWEyNDE3YTNjMDgyOWRhZWI1NDgzIGxlZ2FjeS10cnVuaworMzMwMDIgNDU4NWFiMGRhMDAzNzdiYWYwZTljYTBmZWNlYjBmZTM2ZDU1MDNhZSBsZWdhY3ktdHJ1bmsKKzMzMDAzIGY1ODkxNDU5YjgxM2VlMjQ0ZTVkNTNmYTZiMDg5M2RhNDlhMDRkOGIgbGVnYWN5LXRydW5rCiszMzAwNCAyZjczMWM1N2NkYzY4ZjU5NDBkMDNmOTkwOGM4YmM5NDg2Y2U0YTdhIGxlZ2FjeS10cnVuaworMzMwMDUgMjdiZDRjZDAyYmI4N2UzNzcxNTNiM2VlMjQ3MGNmMDMyMDE5MDRjOCBsZWdhY3ktdHJ1bmsKKzMzMDA2IGZiODRlMGVhYmFkNGU0YjNkMTY4MDM0M2I1YzZkYTI5ODAxN2VjNzAgbGVnYWN5LXRydW5rCiszMzAwNyAxYWU4YjY3NDA5MDY1MjA2NWNkZDhhZWU5MTQwYmNjYTQwNTNjOTY0IGxlZ2FjeS10cnVuaworMzMwMDggYjEzOTUwMTQ3MTRhZDdmMDZjZTJmYWRlNjFkOGVmNGExNTlmZWJhNyBsZWdhY3ktdHJ1bmsKKzMzMDA5IGI1MmUwYWQzMDU4NTg4MGU5MjY2NmEyNDc3MGYzN2RhZDQ2YWJiYjkgbGVnYWN5LXRydW5rCiszMzAxMSA1M2Q5YjRlZWM0Y2UwYTI4NGZiYzUwZmQyNTJlM2FiNTU2MmVjN2EwIGxlZ2FjeS10cnVuaworMzMwMTIgYTM2OTMzNjIyNGRkYTQ5NTM5YTFkY2Q2NDU5N2Q4MTI0YzVkNTZhNyBsZWdhY3ktdHJ1bmsKKzMzMDEzIDIwODk0ZGJjN2Y2YThhNTcxMjQ0MjUzYWVhMTcxNTgxODNmNDZmMjcgbGVnYWN5LXRydW5rCiszMzAxNCBiMWViMmE0NzU2YmNjMzI5M2U5MWJmMjcxY2E5NTk3NTBmYWJiNDRkIGxlZ2FjeS10cnVuaworMzMwMTUgZWQ5NDliODJmOTVkOWM4YTRiMTk3NGE0NDAwY2MxODFlMTAzNjY2NiBsZWdhY3ktdHJ1bmsKKzMzMDE2IDNmMTBhMjllMGU2YTFhZTAwNWM1ZjIwNWYwOTVjMzgzOTJlNTY5ZDcgbGVnYWN5LXRydW5rCiszMzAxNyBmZGFjOWI0ZDM3MTcyNTEzMjk5NzQ4YWZhM2I3OTQzMmY3ZTQzZjNjIGxlZ2FjeS10cnVuaworMzMwMTggZjgyYjZkMmI3M2YxMTEzNzBhOGM4NGQyOTNhODgzZDk5MmMzNjBmYyBsZWdhY3ktdHJ1bmsKKzMzMDE5IGM2NjEwMGMwOWVhMTE2MjdkNDkwMDlmMjUyMTAyOTU3NjUxYTRkYTYgbGVnYWN5LXRydW5rCiszMzAyMCBlMGYwNzFiNDc2ZmQxNmZkZGQ3YWI4NWFiOTNkYTYzODZmZDdhMWE2IGxlZ2FjeS10cnVuaworMzMwMjEgNzJjZTdjYzAzZjI3ZmQyNjIyZWU3MjRmZjE3MGFjMjE1NWZmMjE2NSBsZWdhY3ktdHJ1bmsKKzMzMDIyIDI2MTZmZTVlZWVlMTc4ZDM2M2M0MjUwMjNlZGNkNjFkMWY4MmFkMzYgbGVnYWN5LXRydW5rCiszMzAyMyBjYTIwYzNjYmM5NTZlYTMyM2JiOThkYzkwNzk5Y2NlOTI1NjgzZmNhIGxlZ2FjeS10cnVuaworMzMwMjQgMTIxOTAyMWM0ODY1YWU4MDdmMzMxNDBhMDViNTRhMjY4ZjM1ZmY4NCBsZWdhY3ktdHJ1bmsKKzMzMDI1IDU4YzFhZDQxN2VlN2NhZWQ0MjhhYTIyMjY4NjU0OThmMDhiODE1YjUgbGVnYWN5LXRydW5rCiszMzAyNiBjMDFlZGMzNWZmZDY3NmJhNGE2NmIwZDFkYzBiNWQ5NTJlODFkMDRhIGxlZ2FjeS10cnVuaworMzMwMjcgOGM2ZDRkYTVjY2QzZjg5ZDVlNTdlYjE5MjY5MGJkOGZhZmZiOTlmMCBsZWdhY3ktdHJ1bmsKKzMzMDI4IDIwZTFhZDNhZThiYjBjYTFhMjNmZjA2NTM4ZWZjYTQ2MTkzM2UxYjMgbGVnYWN5LXRydW5rCiszMzAyOSA5ZTdkMjI5MzBkYWExMmYyN2E1N2MyYzBiMDY0ZDJmNTk1MjUyNjc4IHJlbGVhc2UyMi1tYWludAorMzMwMzAgMjNmNjEwMWNjODdlZjE1MTNhOTQyOTc1Y2RiYTFlMzRmYjc4ZWE0ZiBsZWdhY3ktdHJ1bmsKKzMzMDMxIDJlMmRkNjE0Mzk0Mzk3N2VkN2U3MzQwNTA2MDlmOTM4ZmEyZWNhZTQgcmVsZWFzZTIyLW1haW50CiszMzAzMiA0MDgxYjQ5MGQ1NGNhY2YyMTAxZjI3MWVhNzYyZTc5NjE1ODhlYjJjIHJlbGVhc2UyMi1tYWludAorMzMwMzMgYzA1NTk3OTMwMGYxNzgwNTIyNzEwNjZhYzRiZmZlMjNjY2I4YjBkNCBsZWdhY3ktdHJ1bmsKKzMzMDM0IDI0ZTc0ZDY4Nzk4MDBiYmJiMzMzZTA3OWFmNDc1YTc4M2FkYzA2NjAgbGVnYWN5LXRydW5rCiszMzAzNSAzNDdlN2I2ZGZkNTNhZDlkNzE3NzhmZjE0ZjI5OWNkYTI4YzAxMTY1IGxlZ2FjeS10cnVuaworMzMwMzYgMjRmZmYzMmVkMDY1YzMzZGFlMDM5YzU5Zjc5ODE0YmNiMGU2NmM4MiBsZWdhY3ktdHJ1bmsKKzMzMDM3IDE1ZjFkYzViN2RkYzFjZjYxNGI2YjJkNWIwMDRkYjI3Y2YxYmEyY2QgbGVnYWN5LXRydW5rCiszMzAzOCA1ODVlMzAzYTk0OTEzNTBjODA2OTA4Y2E0MmU3NjdlYzI2YTQwYmEyIGxlZ2FjeS10cnVuaworMzMwMzkgMGQ1ODhmYWRjMWY4MmZmYWY1NWU1NTUyNTE1MjM3NDNhNTViMmE3MCBsZWdhY3ktdHJ1bmsKKzMzMDQwIDJkMzllYzBlNTVhYTVmYTRkYmMzYzIzODc2YTg5N2M5ZTYwODEzYWIgbGVnYWN5LXRydW5rCiszMzA0MSBiYWU2Y2U2ZDFlNWEzN2QyNmRjMTBhNjczZWNhNTg5NjAxZmRmZDE2IGxlZ2FjeS10cnVuaworMzMwNDIgY2Q1ZWNjNWIzOGViODU5N2Y2NjM2MTU0MDY3NzczYjZmYTk1ZDAxMyBsZWdhY3ktdHJ1bmsKKzMzMDQzIGVmZjMzMzM0Y2E2NzM3ZDIwNjE3NDE5ZmE1MDAxZDE0ZWYwZDQ4YjAgbGVnYWN5LXRydW5rCiszMzA0NCBkYjQ2Y2VkYWY3Y2UyMGIyMTQ0MDkxM2E0NzU2Yzc4YWMxNDZjNTVmIGxlZ2FjeS10cnVuaworMzMwNDYgODU3NDI4Y2I0MThjN2M4ZTNmYTY5MTk0YTM2Yzc3ZjAyZTE1ODU2ZCBsZWdhY3ktdHJ1bmsKKzMzMDQ3IDY1NDkwODg0N2VlZjhiZjYwZGE2NTZmZGMwZjA0M2RjNzJlN2IwOTAgbGVnYWN5LXRydW5rCiszMzA0OCAzYjJlMmIxNDY4MWMwMmUwYmIyMzM5YzEzN2IzYzYwYTdkMjBiYjliIGxlZ2FjeS10cnVuaworMzMwNDkgOWUxZjhmYzVlNzFkMzM0NzIyYjYxMzc3ZjczMDBkZWI1NDU2Yjc3ZiBsZWdhY3ktdHJ1bmsKKzMzMDUwIDI2ZTA3YTY4NDg5MGNiY2M5NzRiZjY2OGEyZDgxYTI5YmVmZGQxZDggbGVnYWN5LXRydW5rCiszMzA1MSBjZTI1YjRkNzQ2ZWExMDA2N2UwY2EzNWZjNWMxYTdlYTM0NmI3YmMzIGxlZ2FjeS10cnVuaworMzMwNTIgOTJmZmU1MDIxMTI4MTlmMzNjNjcxMWIxY2UzOTFmYmM3ZTMyNjY4ZSBsZWdhY3ktdHJ1bmsKKzMzMDUzIGZhNjA0YWYwY2RiZmI2MzFiZjRiMTRmZmY4NWU2ZTM3MjVjMjVmNWQgbGVnYWN5LXRydW5rCiszMzA1NCA2MWU5NjZjOWVjZThkOTA4ZGFmYzVjMDMyNGVhNTFkMDU2MWRkZThkIGxlZ2FjeS10cnVuaworMzMwNTUgZTZiMGE0MDZkYzMxZWY0MmVmZmQ4NjFlNzVjYmY4ZGZlNWY3Njc4OCBsZWdhY3ktdHJ1bmsKKzMzMDU2IDUyNTc2NjgxN2ViNjhiNjJkYWUxMDBjNGFmNzZiYzUxYzA4YzY1ZmYgbGVnYWN5LXRydW5rCiszMzA1NyBiMGE3ZWFjNmM2NTExMDFiN2ZiNzAzNTk3ZDk3ZGFhZTFhNTU3NjcyIGxlZ2FjeS10cnVuaworMzMwNTggODMyMzZmNThlNjgxMjFlMzY1MmVlOWIxZjVhMmQ4MjUyNGRmYTFlYyBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDYwIGNmMGJhYWYxNmUwZDdmNTIxZGViMDBlMWY5NWNkZGRmYjQ0MDQyMDUgbGVnYWN5LXRydW5rCiszMzA2MSBhMmQ0YzY0ZjViOGIzMTRiNTNlNGFkYTA2N2I5NmE3NWRlZmI3YzZkIGxlZ2FjeS10cnVuaworMzMwNjIgZDFhOGM3MzIzNTllN2Q5NDEyYjIwYWRjYzk0ZjcyMzE0OWZlNzI4MyByZWxlYXNlMjItbWFpbnQKKzMzMDYzIDhjNWE2ODUzYTAyYWRiODFiZDY3ZWE4YTA4ZjRjMjZmNTE3MmI4ZDcgbGVnYWN5LXRydW5rCiszMzA2NCBiZWZmYzczNjY2ZmQyMGNhMzhiNjNkNGEzYjQ2MTI0Y2YzZWNjYjYxIGxlZ2FjeS10cnVuaworMzMwNjUgM2I1NGRmZjEzMzEwMWVlMjliOTQ4YmEwODE3Yzk0NmVkZDRlZWI0MCBsZWdhY3ktdHJ1bmsKKzMzMDY2IDliYjZmM2M1YjA0YTNlZjhjZWMxNGYwZTMwZjc3NGFhMmFlZjhhOGIgbGVnYWN5LXRydW5rCiszMzA2NyAzMWIyY2JhNjRiMzk5YmY1OTMxNzIzZTE2NjM5MWJjYzI3ODMxNTVjIGxlZ2FjeS10cnVuaworMzMwNjggMjk3NjAwNTY4ODRhOWU3MTUyMWVhZTUwZmRjNmEzNmIxYjMyOWUzNSBsZWdhY3ktdHJ1bmsKKzMzMDY5IGYyZGY5YzlmMGZjYjYwOWI2ZTk2ODQ2OTk4MjAyNjBjMGFiNmMzYWIgbGVnYWN5LXRydW5rCiszMzA3MCBiYWMyYzBlN2MyMGExMjIyNTAwMGFlNjk5ZGQ3ZmE4YzJmN2ExY2E3IGxlZ2FjeS10cnVuaworMzMwNzEgMzU2YmI1OWM1NDg2YjJlNWViMmIxZjVhMmEyOWVkZWI2NmI5NTgwYyBsZWdhY3ktdHJ1bmsKKzMzMDcyIDY0Mzg2NDY0ZjcxNjkxMTc3ZTlhNDJkNzFiYTQ0ODlhMWVhY2UxYWEgbGVnYWN5LXRydW5rCiszMzA3MyAwYTQwYzY4N2FmNWVjOTY4MDA4MDMyZTc0ZGUyYjE1NDAzMjZhODAzIGxlZ2FjeS10cnVuaworMzMwNzQgODg5NTFhNWZkMmE5ZWVjMDNmNDcxNTlhYzE3OGI1MGI0NGY2MDg0ZiBsZWdhY3ktdHJ1bmsKKzMzMDc1IGFiMWQ4NWY5ODQ4NTY4NzU1MGIxMjZjNDNmMjViMThiNzcwMTdjMjggbGVnYWN5LXRydW5rCiszMzA3NiA5ZTFkNzgwOWE5OTgxNmFkOWEwNzk1Mjg2NjAwOWE2YmQyMmI4ZTE3IGxlZ2FjeS10cnVuaworMzMwNzcgMTlmNGY0OGJiMDJhN2U2ZTAxNGMzZDNmMjlmYWQ1MTRiMjM2MmYzNiBsZWdhY3ktdHJ1bmsKKzMzMDc4IDVhOGZkNWIzZTRjNDA1MTBiMDU3ODBhY2QzOWY1ZTYxYmE4Nzg1MDcgbGVnYWN5LXRydW5rCiszMzA3OSBmODdmY2QwODcwYmYyYzk4NmRkMWQ4MDUzMDIxZTM0M2QyNDRiNzAwIGxlZ2FjeS10cnVuaworMzMwODAgMmJhNWVjNmIzY2RhMmZiMGU3ZWRhNTQ3OTY0MGJhM2U3MDc2NjU0NSBsZWdhY3ktdHJ1bmsKKzMzMDgxIGNmOGFlM2IwZGNkYzk3MGFhODk0ZTJmZDBkZDAxNjAwNmMxMjY3YWYgbGVnYWN5LXRydW5rCiszMzA4MiA3YzQ5ODMxZDIzYzU5YjA3YjY2MzYwZDc0NzgzMjkwODJkOWQ3ZmNjIGxlZ2FjeS10cnVuaworMzMwODMgZmMzOTJkYWJlMmUzMGYwZWE4ZTkwZWIzYzJkMmE4MDg2NTM4YmQwNiBsZWdhY3ktdHJ1bmsKKzMzMDg0IGI2YzI3MWJhMDNlMTgxNDQzNjVhMzg3MjFmNmYzNmVhMDBjMzk0Y2UgYW50aG9ueS1wYXJzZXItYnJhbmNoCiszMzA4NSAwODlmYmUzYTExNGVmOWJlYzY0YWI1OWQ2ZDc3MDUzZDJkYmI2MDBjIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODYgMGQ2MWEyN2MzODk2OWUwNjg0NmFlOWNmYTkxYjJjMTJlN2Y1YjRlYSBhbnRob255LXBhcnNlci1icmFuY2gKKzMzMDg3IGZmZDAyYmFhYjI1OTMyMGU3MzI2YzA5NzYzNzkxYjdmNjc3Yzk0M2IgbGVnYWN5LXRydW5rCiszMzA4OCA3MGQ2MjVmZjU2MmI1ZDY5YzM1OWI3NGM0YzJkNDZkM2JiMmRlZDNlIGFudGhvbnktcGFyc2VyLWJyYW5jaAorMzMwODkgOTIzZTZmYjg1NWZmNGY3YTM3MzJiM2FlNDQwYzFiMzU1YmJjYjE1NSBsZWdhY3ktdHJ1bmsKKzMzMDkwIGVkY2ZlZjk0NGUyZjQwNmM4MjdhYjExNmY4MGZiNGE2NDNiZTk1ZDAgbGVnYWN5LXRydW5rCiszMzA5MSA1YzU2YmYzY2IyMDU1MDg1MjkyOTg0YjJlMjg4NTlhMTE3ZWRmYjczIHJlbGVhc2UyMi1tYWludAorMzMwOTIgYzQ4MWM2ODYyNzVhNzg1YTU5MzA0NWYwZGEwOTk1YzVhODZjNmE2MCBsZWdhY3ktdHJ1bmsKKzMzMDkzIGI4MGEyMjI1MGU0ZjExYTRiNDdiNWEwMWNkMjgwYzg1NWRiNWNjNTQgbGVnYWN5LXRydW5rCiszMzA5NCBlZmVkNjg5NzNhM2JlZjM0MDgyMjczNjA1YjJjZGM3ZGNkYjdjYmEzIGxlZ2FjeS10cnVuaworMzMwOTUgZTJmMjQxMGMwOTZlMDNmM2Q0MjBmN2EwMzA3ZGRhZTVlOGFlYzI2ZCBsZWdhY3ktdHJ1bmsKKzMzMDk2IDE5MzM5N2M0NGFlNTE2NGYyZWMwNzgzZjNlMDQwOTVlZGRkYTM4NDQgbGVnYWN5LXRydW5rCiszMzA5NyBlNjllNTQ1NTJkMTA4ZGI2NzQ0NDdiZGZmODgzOWQ5N2UyYzVhNmMyIGxlZ2FjeS10cnVuaworMzMwOTggMGJhN2MxMDE2NDhhYzgyODM0MGM4ZTRlNzM1NGZiYjg1ODFmZTVkZiBsZWdhY3ktdHJ1bmsKKzMzMDk5IGZhNDhhOTBlZGExMjVhZWIyZTg0OGIxZTA5NmEzZmU2ZjEwZjdjOTQgcmVsZWFzZTIyLW1haW50CiszMzEwMCAxNzlkNTQ1MmJiOWQ5ZjYxMTRhNDMwOGRmYWQ3M2E4MWY4NzJkNjg2IGxlZ2FjeS10cnVuaworMzMxMDEgYjQwOTAyYjQyMjkwZGI2OTRlZmUzM2JjMjM2NjMwNmU2MTA5Y2Y3ZSBsZWdhY3ktdHJ1bmsKKzMzMTAyIDdiNzAwNDM5M2I1YjI2ZjI1M2U2ZjFjMWUxNTdlZWE0NWNiMTdjMDQgbGVnYWN5LXRydW5rCiszMzEwMyA1MmJhYWVjN2U1Y2YwODlmMzUxNjU2OGQ2MTU4YjJhZjhkNjVhZDJkIGxlZ2FjeS10cnVuaworMzMxMDQgMTc0MzFiYThjYzRiZmFkYTMyNjg0YWFlZjQ3MTYyNWNhNTcxNWYxOSBsZWdhY3ktdHJ1bmsKKzMzMTA1IDZmZWNjOTlhZmE2OWZmZDQ4MGEyOTJlNjIwZDUwMWVlNmU3NTQ3M2YgbGVnYWN5LXRydW5rCiszMzEwNiBiYjE5MTM0ZTBhNGQwYjllNDQzMzJiZDg1ZWE5N2MzMGQ0M2RhZWYzIGxlZ2FjeS10cnVuaworMzMxMDcgOGQxNjAwOTVlYjY2ODNlM2MyMmE1ODk3NjM5ZmRkNjc3MzA3ZDg0MiBsZWdhY3ktdHJ1bmsKKzMzMTA4IGU1ZDAzMzYwNTcxZDk3Y2FmZGVkNDIzY2M4NjhhOWU2MmUwNjMzNGEgbGVnYWN5LXRydW5rCiszMzEwOSBlOTk1M2IzOTlkNTUzZDVjYzhkZjBhZTlhNzkwNzQyZjQyYzMyMTM2IGxlZ2FjeS10cnVuaworMzMxMTAgMmNiOTY5ZmZlMWJmMjhlNTRiMDlmY2M2NDc3YTViZWY2NWFiZjkyNiBsZWdhY3ktdHJ1bmsKKzMzMTExIDVjNzYyNzUyNzgyYzI5MzgyOGQwOTEyY2Q1NGZjYzQ3MDUzOWU0YzIgbGVnYWN5LXRydW5rCiszMzExMiAyZDY5YTcwN2M0OTI5ODU0OTJhMzFmM2I1Nzc1M2I5YjJkMjU1YTc1IGxlZ2FjeS10cnVuaworMzMxMTMgNTYzNDM4MTZiNTg5N2Y4YWY3MDJmMjVhMGQxNTgwZTg2OTZkMzI1NSBsZWdhY3ktdHJ1bmsKKzMzMTE0IDA1MDU4ZDgxMzQ0MThkNDg4NTg0NTNlMTE0YmYwOWI0ZGZjYzI4OTYgbGVnYWN5LXRydW5rCiszMzExNSAzMDE2YTE5ZTMyMGU2NDUxNzA2ZjllMGY1N2MyYzQxYjc5NDJkM2QyIGxlZ2FjeS10cnVuaworMzMxMTYgZWZhZDU5ZjM5NTY0YmNkOTQ4MTc5NzE3Y2JkZjg2YjBiNmZkOGQxYyBsZWdhY3ktdHJ1bmsKKzMzMTE3IDliNzI1NThhMWViOWY0MGJiMmMwYTRiZTE3MTk4MWFhNzY1YTMxODggbGVnYWN5LXRydW5rCiszMzExOCA2ZDE2MGVlMzcxOTY1NTllM2RjNjIzN2E3Nzc3NTQ2MTUzMGNlMzhiIHJlbGVhc2UyMi1tYWludAorMzMxMTkgMWYzMzQxOThlNmQ3NjNjNmMwYWI3OGQ4MDgyYWE0NzlkYTY3MWQzMyBsZWdhY3ktdHJ1bmsKKzMzMTIwIGI4MjJjMmE4ZTA4ZjQzMDVmZWE0YTY3ZjJhNWFkZGQ1YmQ1ZWMyOTIgcmVsZWFzZTIyLW1haW50CiszMzEyMSA4YmVkNTUyMDM1NTlmOGRkNWM1YWMzOTFiNzZhYzdmMjQxYjc5ZWQ4IGxlZ2FjeS10cnVuaworMzMxMjIgMjFiZmNiN2M5NzZkYjVlNDNjODc3MGNiNTYxZjUyYWY1ZGEzOWE1ZCByZWxlYXNlMjItbWFpbnQKKzMzMTIzIDk4ODNjZjhmZjIxN2M5ZWQ4ODI1M2RjNGU0MWExMmRiN2JhMjlkYWYgbGVnYWN5LXRydW5rCiszMzEyNCA4YjE3NjZjOGFkM2JhYjRlOWNiMTUwZjI0MGI4MjhkNzZiZjkxOGVmIGxlZ2FjeS10cnVuaworMzMxMjUgMDYyZTM0MmNjZmY1OGI2Mjk1MzU0Y2RiZjEwZjFkNDVhMjQzYjAwMSByZWxlYXNlMjItbWFpbnQKKzMzMTI2IDc0YTI4ZjJlOTRjZjllMjkyZWVlZDgxMDg1Zjk1NjU1NWZiNWY2ZWMgbGVnYWN5LXRydW5rCiszMzEyNyAyY2I4OTMwY2UyMjU5OTI2YWU0YTc5YTdiOWNkM2I5Y2ZkYTk2MjJlIGxlZ2FjeS10cnVuaworMzMxMjggMWUyZTU0ODIxNzg1ZjlhNGViZWQ2ZWY4N2ZiNDRkODVkN2MyYzk3MyBsZWdhY3ktdHJ1bmsKKzMzMTI5IDM1MjNiYTkyNDUwY2U2NDE2MDZjODk3ZDJkOGNlNGQwOWU4MTIzZTYgbGVnYWN5LXRydW5rCiszMzEzMCAwNDE1YWY2MzQxMjI1OGJlMWFhNDVkNjkxZGM2NTYzNmNkOGEyMzVhIHJlbGVhc2UyMi1tYWludAorMzMxMzEgNWM1YjU4NzQ2NDg2NmRkM2Q3MzM3Y2I5NWExM2ZiNGU5YmNhNTI2YyByZWxlYXNlMjEtbWFpbnQKKzMzMTMyIDBjZjFlYzU4ZTIyMGJhNjg2MmExNDk5YjU2NzhhNzRiNTRiZWYwNWUgbGVnYWN5LXRydW5rCiszMzEzMyBhNzIxYjA5NGY3YmMyZGJmZDcxMTI1NTZiZTYwZmU1NDQxYTA1NGQ1IGxlZ2FjeS10cnVuaworMzMxMzQgNGYwNzZmYzAxOTVhYzI2MjRhZWE0NzhmOGJhNTYyZGY0NDNkMzFiZCBsZWdhY3ktdHJ1bmsKKzMzMTM1IDFhYjk5NzgxMjNiZWNlYTE0NWYwOTBmYTFmYTBhMTFiNDE2MmNkM2EgbGVnYWN5LXRydW5rCiszMzEzNiAxNGExNTQ3MTI5ZmJmNWViYjIyOGJjODI5YmYwMGEwZjE5MmYzMmIzIGxlZ2FjeS10cnVuaworMzMxMzcgMzMxYWY0NWRmYTBkYzAxNzhkOGFmM2NhMjUxYTc3ZjkxODkwMTM5MCBsZWdhY3ktdHJ1bmsKKzMzMTM4IDQ4NzQ2MTRjYzdhMzU3MDM5MmQzZWM5ZmFmZDdlNjZjZDJmNjk5NTUgbGVnYWN5LXRydW5rCiszMzEzOSA1MTA2MGIxNjliMzIzN2E0MTc4MDYxZjljYWMxZmUzNzAzMTA4ZDg1IGxlZ2FjeS10cnVuaworMzMxNDAgODkyZGZjOWU3MjU2N2ZkYjc3OWY5NzIyZTBhNDEwNDQwZDg0OGFjZSBsZWdhY3ktdHJ1bmsKKzMzMTQxIGRlYjk3MTViYzhhZTdjMDBlNmM0NjJlOTM5NTI2MGUxMWEzY2U1ZWEgbGVnYWN5LXRydW5rCiszMzE0MiA4MzRjZDEyMThmMWI0ZDI0NTg1ZTgwMDAzOTlkM2JiZWY1NmM5ZmNkIGxlZ2FjeS10cnVuaworMzMxNDMgMDg2YmQ5ZTdkMjQ0MmEwYmE2YzM1ZWFkNDczZDY4NmJkYmUzMThlYiBsZWdhY3ktdHJ1bmsKKzMzMTQ0IDA2ZjI4YWRlYTZkMmMwOTFhYzg4N2YzYjdlZjE5NDZkMmRiNjU2MzAgbGVnYWN5LXRydW5rCiszMzE0NSBiZGZmOTY1ZDI2MDMyOTlhYzY2MWVjMzM0MzI4ZTgwOWFkNzMxN2RiIGxlZ2FjeS10cnVuaworMzMxNDYgMjNlN2IyNTc3YTQ2ODgwNWJmNjI2MGNiMWZhNjU0NjRiMDg5OWUwZCBsZWdhY3ktdHJ1bmsKKzMzMTQ3IDMxMzNiNTBlOTlmMzI2NWY5OTM1OTQxZTQ0ZDI4YjNhNWNiOWNhZWQgbGVnYWN5LXRydW5rCiszMzE0OCA4N2EyNTNhYWEwZDUyMTM3Y2Q3NTEzNmE2NWM0NzYzMzM3NzBjNDRlIGxlZ2FjeS10cnVuaworMzMxNDkgODFlNzBmMTJkNjJmYzg0Nzc5YjUyZDI1NmMzZDg3YmZiNTg5YTExOSBsZWdhY3ktdHJ1bmsKKzMzMTUwIDEzODZmODZjNTA5NWY0NzU5NDYzNGVhZmExNDgxY2I1MDAxZDdmNTYgbGVnYWN5LXRydW5rCiszMzE1MSA1MTQzY2ZlN2NjNzVjYzA0NGYwOWY1MGRmMGMxOGIyZmQ4Mzk5Mjg0IGxlZ2FjeS10cnVuaworMzMxNTIgNjBkYWJhOTM3NzVjNTIzNjAzNjU5ZDU2NWIzM2JjYjQzNWIxYjZmNSBsZWdhY3ktdHJ1bmsKKzMzMTUzIDk3MThkZjg0OWRhOTIxMDJkYjVkMDY4NGU2OTNmMjZlMjI2MWM3NWEgbGVnYWN5LXRydW5rCiszMzE1NCAwODkwNDY2MDEyNzA2NTkyOWU5YjQyYWIzZDI1Yzg2ZDYwYTMzMDA2IGxlZ2FjeS10cnVuaworMzMxNTUgNTIyMDQ3NDY2MGNlODFkMjY4ODQ4Y2I3OGJlNmQxMmYxODQ4ZmI4NyBsZWdhY3ktdHJ1bmsKKzMzMTU2IGFiYzJhMjBkYzNhMzM0YzJjZjRhODVjMmNhZGRiYTJlZDI3MmY1OWUgbGVnYWN5LXRydW5rCiszMzE1NyA0MGM1ZjFjMDhlYzhhYWIwZDFmOGNhZTA1MjBhZjY4MzE5N2QyNDYxIGxlZ2FjeS10cnVuaworMzMxNTggMTAwNzA4ZWI4YzgyZDJjNzg3YjlkNzVlN2QzYjg5OTQ4YTk0ZGY2MCBsZWdhY3ktdHJ1bmsKKzMzMTU5IDk0ZjkxMDdkOWE2M2E5ZDlhMmU5MjI1NzMzMDA1YWI0NzI4NWE3MjcgbGVnYWN5LXRydW5rCiszMzE2MCA2NTMxYzc2YjYwNGRjYWZlMmMyNTRjYjRjNTVmMThiOTNkYmVkZGI3IGxlZ2FjeS10cnVuaworMzMxNjEgMTQwMmYyNjVlNDhmNjEzYmFmOWViMzc0YzUwNDQwZDAxMGJiMTljZSBsZWdhY3ktdHJ1bmsKKzMzMTYyIGQwZDRkNjk2YWIyNGU4ZDYyODNlOTVjMzJhMTQ3Njc2OWUzNWI5ZDcgbGVnYWN5LXRydW5rCiszMzE2MyBhYTg0ZWRlMWMzNjRlYmRjZjUyZWYzNjU2YmVlMTk0MzkyNGQzMDUyIGxlZ2FjeS10cnVuaworMzMxNjQgNmM2YjMyMWQxZDEwZWZkMWYwNDBkNTE1MWFjZjcwMDM4N2U2ZmViYyBsZWdhY3ktdHJ1bmsKKzMzMTY1IDcxYzA2YmM1YTczZWExYjZlNjUzOTI2ZGIxMjY5NTU3NDQxNDM5NDAgbGVnYWN5LXRydW5rCiszMzE2NiA3ZTMzNjNhNzY2MWQyNTUxY2M2NWU2OGQzZDI0MWJjOTQ5NDM4ODA4IGxlZ2FjeS10cnVuaworMzMxNjcgZDcyYjNmMGE1N2E5ZGQyYzc0MDQ4NGJjZWRlMmE4ZmQ4M2RkYzYwOCByZWxlYXNlMjItbWFpbnQKKzMzMTY4IDVmMDFkNTE1OGQxZjg2ZTIzM2NkYjMwNDljZmFmMzNiM2JiZjRjOWMgcmVsZWFzZTIyLW1haW50CiszMzE2OSBkYjQzMTI5NDc0OTQwZDgwNDc5YmYwMWU5MTFiNzk0OWFkYWJhZTIwIGxlZ2FjeS10cnVuaworMzMxNzAgMTE1MThiNmNlNWVjMDNkMzlmNTFiYzg2NmJjYmZlMTY2YWE0MTQ2ZCBsZWdhY3ktdHJ1bmsKKzMzMTcxIDUzNTU0Njg4ZTVhMjJlOGZhMjUwZWFkNTNjYmJkZjIyZmU5NjQzYjQgbGVnYWN5LXRydW5rCiszMzE3MiAyOWVlZTVjMWRkNDJmYzhhNDEwMzgwMWMyODI1MzBmYWJhMzdlYjc5IGxlZ2FjeS10cnVuaworMzMxNzMgMDFlOTI1MzcxZDdjOTQwODhjYTgxODkyM2UxZDFmZGUwMTA2NGZkYyBsZWdhY3ktdHJ1bmsKKzMzMTc0IGQxYWNmODlkMWM0OWE2ZDYwMTE1ZmVmMzRmYTQ4OGI2MDMwZGJmYWMgbGVnYWN5LXRydW5rCiszMzE3NSA2NDQ0ZWEzZGM4M2M0NGUxNTgyMTg0NzI2OWIxMGY0YmY2NDY1ZGJmIGxlZ2FjeS10cnVuaworMzMxNzYgZTU0ZTJkZTQ2YmMzZDU4NzM3ZjRmNzNiYzkyMTg5ZDUwZjI0MmJlYSBsZWdhY3ktdHJ1bmsKKzMzMTc3IGNhOWUzNTk4Y2NmYjVlYzgxYjNmZGJjOWY5ZjI2NGRhNjMyZTUwMTAgbGVnYWN5LXRydW5rCiszMzE3OCAyMzFhMzUxMGUyNDZmZTBjOTQzZTU2YWIwNGNhZTg4NzY1Zjg2N2YxIGxlZ2FjeS10cnVuaworMzMxNzkgZDc2MWZmNTViM2JlZjQxZmU1MmZhM2U5NWE2N2M4YjE5YzE2ZDgwOCBsZWdhY3ktdHJ1bmsKKzMzMTgwIDk0YWMxZDQyYTQyMDRmMmQwYjg2Y2I0OGE0OGNjMDQ4ODFiMzVhMmEgbGVnYWN5LXRydW5rCiszMzE4MSAwNWZiNTFkMDdhZGFmNWJmMzE0YTg3ODVlYzg1MGEyZTA0MjlmOTg4IGxlZ2FjeS10cnVuaworMzMxODIgYzZlYjU2OWU0Yjc5MzA5Yjg1MGE4YzhiMjUyMGJjOTRlMjA4Y2I2YSBsZWdhY3ktdHJ1bmsKKzMzMTgzIDVkMTFmZGZhN2MwMDg0NzUwMDU0MjFiM2MxZDQ1MGMwMDA0YmI3MmMgbGVnYWN5LXRydW5rCiszMzE4NCBiNzRlMGNjMjFjYjA0NGZhYmNhNTVlMmE4ODVlZDliNGZiZjliZDY4IGxlZ2FjeS10cnVuaworMzMxODUgNzBlNjQ5ZmEzZmNkMTM5MTZhOGFiMjU0Y2VhNjA1Y2FlNzcwZWVmZCBsZWdhY3ktdHJ1bmsKKzMzMTg2IDg3ZjMwZmNmYWQ0ODg4MWEyM2EzN2JjNjFiZjc3MTAzOTc5NTJlNDIgbGVnYWN5LXRydW5rCiszMzE4NyBiMWFhMWQ0MzljYmEzNTVlZWQ5MDJlMWUyZjE2N2QwNDU5MWQ1NTViIGxlZ2FjeS10cnVuaworMzMxODggZmIzMzJhMDk0OWI3NGY1NjMxNWY3NDM2NzM2OTNhNjI3YmJiZjA4ZSByZWxlYXNlMjItbWFpbnQKKzMzMTg5IGY2ZDUwM2RlNDViZGUwZjlmMWE0Mzg4Y2IzODUwMmI2NDc1ZTMwMGQgbGVnYWN5LXRydW5rCiszMzE5MCBmNjdlNGM1YWVhOTM3ZGMzODE0NDA4NDQ4YjU3NmU4M2QyZDM2MDU2IGxlZ2FjeS10cnVuaworMzMxOTEgN2FlZTZlZjU5NmRkYmRlNjM4M2E5NjVkNTE4NjNhNTBlNDllZDQ1YyBsZWdhY3ktdHJ1bmsKKzMzMTkyIGY0OGJiOTRmMzI4OTU4MzI4NzI2ZTgzOGRjYzI0Yjg1NGZmZGM5MWUgbGVnYWN5LXRydW5rCiszMzE5MyBmMTc1Zjc3OWJlODkwYjdmOWYxZDBiMDhhNTEwYjc5YzE1YjYwMTc0IGxlZ2FjeS10cnVuaworMzMxOTQgZWE3N2Q0M2UyMDNkMWY1NmY1MGMxNWI5NGVmZTExMjIzN2ZjOTI5YyBsZWdhY3ktdHJ1bmsKKzMzMTk1IDJmYmQyNTZhMWRiMjU2MjZiYmZmNDFkYTZjOTBmODY5ODBjZTBiMTAgbGVnYWN5LXRydW5rCiszMzE5NiAwYjUzMjJiODUzZDJmNzUxYjYwMzEwYmQ2YjIxMDUwZmE0ZGQzOGViIGxlZ2FjeS10cnVuaworMzMxOTcgOGIwMzAwZTdmMWRjYjE5OTAxOWM2OWYzOGIwZjA2ZGJkMTFkZDJlZCByZWxlYXNlMjItbWFpbnQKKzMzMTk4IGM2NDY4N2NkNWIzNzFkMjMyMzgzOTIzZjdiMDhmNTU0NjhhM2Y2ZDcgbGVnYWN5LXRydW5rCiszMzE5OSAzNGMwNDBkZGY5ZThlYWQyNDQ1YTIxZDdiMmJkMGE5MTVmNTdlODRkIGxlZ2FjeS10cnVuaworMzMyMDAgY2Q2MmIzMzU5ZTk1NjBlNWY4NzQ1MTU4NDI2Y2MwZTNkZDQ4M2IzOCBsZWdhY3ktdHJ1bmsKKzMzMjAxIGRjNmMyMWRjODY4NGUwNjM5N2NjMDE2ZDIyYzcwNTdlODQ5YWY4ZjcgbGVnYWN5LXRydW5rCiszMzIwMiBmYWZiNmViMGY5N2U4ZTRjNjk0MjM1MzMwZTNiZGViZjA5N2VhNjM1IGxlZ2FjeS10cnVuaworMzMyMDMgYzNiYzdlZDlkMzE1OTllMGUwZjliZDM4ODRlNmU2NGJkZGVjYTFiNiBsZWdhY3ktdHJ1bmsKKzMzMjA0IDJkNDAyN2VmYmMxMmUyMmZkYTI3ODVlYWMzY2IzZTgwNjBhZjExYWEgbGVnYWN5LXRydW5rCiszMzIwNSA2OWJjN2NhNWNjMWE4ZjUwMWY5MzY4MmEwMGY5MDhjMjFiZTU2OWMxIGxlZ2FjeS10cnVuaworMzMyMDYgZTIyODMzNmFhZjA4ZDdjMzU3YTNkMDY2ZjhhYTJjOTcwYWJmNTZhOCByZWxlYXNlMjItbWFpbnQKKzMzMjA3IDkxOTcyODVhMzkzMzVlMDRiMmU0NDRjZTQ5YjMyOGEzZjNiNDA0ZjAgbGVnYWN5LXRydW5rCiszMzIwOCAzMjU5MmYxYTZmMjJiNDk5YTIxMmM2ODY4ZmMzOTlmODgwNjU0Njg5IGxlZ2FjeS10cnVuaworMzMyMDkgNmZlMDIzNjkwZDdmMTBkM2NjNTA2YmJhNWYxNmJiMzc3MDA4NTllMCBsZWdhY3ktdHJ1bmsKKzMzMjEwIDk0NGY2MDJiNzhmZTQ4ODlhMTI0YzJhZjNiZWMwODlkOWUwMjcyMGMgbGVnYWN5LXRydW5rCiszMzIxMSA4NzgwYTQ5ZDhlZjJjMTQzZmI2NTgxMmM1MTQzMTM1ZmM1MjY1ZDIxIGxlZ2FjeS10cnVuaworMzMyMTIgN2M3ZjQwNDViYTM2NzFhMDIwOTA2NGRmNjllNWZmMjU1ZjRmMjdlZCBsZWdhY3ktdHJ1bmsKKzMzMjEzIDRkMWZhOWM1Y2IyY2YyNWQ5MGNjYTcxNjIzYmZiNzdlOTdjNmEwNjUgbGVnYWN5LXRydW5rCiszMzIxNCBlOTczZGVkOGE5MmE4ODI4NWUwMjkxMDAyYmJmMThiMmM2OGVjNTViIHJlbGVhc2UyMi1tYWludAorMzMyMTUgNTIwMDI4Nzg4OWJkMmE0MTA0ZWUzOGIyN2QxZDUzY2QxMzEyOGViNCBsZWdhY3ktdHJ1bmsKKzMzMjE2IDZhNWU5NWM2N2QzMjFjMTA1ODlkOTNkOWUyZDAyNjQ4NjZlNDI4NTggbGVnYWN5LXRydW5rCiszMzIxNyAxYTQ5ODY5MjIzNTc3MjAzZTI0MzViZGI0ZjBkMDcwMjZhZGMxNjgwIHJlbGVhc2UyMi1tYWludAorMzMyMTggNGI4NmRjYWMyMjAxMDc2ZDYzOTZlZTBmMjBmMWE4MDE0NWI0MzkwMSByZWxlYXNlMjItbWFpbnQKKzMzMjE5IGRlM2Q0OWUwZjY0OTEzYzAzODkxYTBlMWI2N2FiNDFkNTE0ZTIxYTggbGVnYWN5LXRydW5rCiszMzIyMCA0MjcyMzIyYjkyZTVlOWU4MjU2NmQyMjJkYzY2ODU5YTYwMmJjODY3IGxlZ2FjeS10cnVuaworMzMyMjEgZTVkM2IxZDg5YzQwMTgwMGQwNGQ3YWQ0MDVmY2ZhMjlmZjNhYWEyNyBsZWdhY3ktdHJ1bmsKKzMzMjIyIDk1OGI0MGQ4MGIzMzE4MzBkMDMzYmFjYzJhYTAwYTBjZGU4NDM3YzAgbGVnYWN5LXRydW5rCiszMzIyMyBhMjk2MjE0ZDJlYmJhMzE3MGQxOTE4MDhjYTgzZWZjZTExMzM1ZDk3IGxlZ2FjeS10cnVuaworMzMyMjQgNzFkM2RhMTE1ODM4ZjMzMWFlMGY0YjU4ZGM4Yjk3OWY5NzBkY2NiMSBsZWdhY3ktdHJ1bmsKKzMzMjI1IDQ0OGMxNDQxOTY0ZmQ2MGU5YmRjNTdkODg5NGRjMTNkNzE1YjY1YTYgbGVnYWN5LXRydW5rCiszMzIyNiA3NTY0NjgzMDdlNjE3OWZlODRmMWQ4ZDM0NTcwOWQyNWRiNTYxMmZkIGxlZ2FjeS10cnVuaworMzMyMjcgOTEyNTlhZTM1ZTI5OTQ2NzIzOTkxY2E2OTg2YjMzZDgxOTk0NzQyZSBsZWdhY3ktdHJ1bmsKKzMzMjI4IDhlOTJjYzA0YjY0YjAwMDRjMjJhZjc0MDI1YWJiMWQ0ODk4MjJiNzcgbGVnYWN5LXRydW5rCiszMzIyOSBkMTVlMmI3ZDk5MWNjOTBiMTU1NGJjODY0ZGIyN2I3ZjEzZDljZjc4IGxlZ2FjeS10cnVuaworMzMyMzAgZWQ0NWE5OTUxMzEyNjhiMjRjZTBjNzE3Y2QzOTQ3ZGZjYmQ0OGQ0OCBsZWdhY3ktdHJ1bmsKKzMzMjMxIGFkMDJhMzhhOTZlYTllZGVhMWUyNzJmZGQzN2E0NmNlYzczMzcxODYgbGVnYWN5LXRydW5rCiszMzIzMiBmMjZkMTMyMzZjZTg0YTgwOWVjMjdiNjUxY2Y3MTAzYzJjZTE2YzU4IGxlZ2FjeS10cnVuaworMzMyMzMgMWFhOTA1N2MzOGI0ZWQ3YThiNTI1YTFjYWEwMTEzYWNjNzIxNmIxYiBsZWdhY3ktdHJ1bmsKKzMzMjM0IGVlZDc0MzBiN2FmMTRhN2Y1OWUzYzVlNTQ5ODRkN2FiMzgwMTY4YjkgbGVnYWN5LXRydW5rCiszMzIzNSA1Yzg3MzdiZDRjZTZkNGZiYTUyNTEzZGU2ZjVmYjNjZDFhMTI0ZGFiIGxlZ2FjeS10cnVuaworMzMyMzYgZTJmNzgzNDg4MDI0OGQ0YzMyNWZiYzM4OWRlODlkYjhlMjgxOWViMCBsZWdhY3ktdHJ1bmsKKzMzMjM3IGNkYzc1ZGUyZjVjMWE2NGYzYWRmZjBiNDdhM2YwODJkODBiY2Y0NmIgbGVnYWN5LXRydW5rCiszMzIzOCBiOGI1N2JkYmZjZWRmNGM4ZjE0NjA0MDI0MzE1ZjA5OTBjOTQ2NDJjIGxlZ2FjeS10cnVuaworMzMyMzkgZjkzYjkxOWU1NzI5MGVkMjZkNTI3MjFhMmMyZjZlMWRjNDg5YzQyMSBsZWdhY3ktdHJ1bmsKKzMzMjQwIDE2OWUwMWVjMzU5NjU5ZmNlM2E2M2E0MTBlNDQwYTY1ZTM3ZDQ0YmUgcmVsZWFzZTIyLW1haW50CiszMzI0MSA1NjIzZjllMmI1NTVmMGU5NzAwNmNhOGEwYzIxZWNkNDQ2NmUyNjA5IHJlbGVhc2UyMi1tYWludAorMzMyNDIgNjBjZTczZWE5YzkyZjM0MmY1NTJmNjc1NWVjZTE0YWQwZWM2YTFkYiBsZWdhY3ktdHJ1bmsKKzMzMjQzIGE5YTkzZmM1MGI4ZDhhZTc4NzhiNjFjNWRkZjEwNWEyZmZjNDA2MzYgbGVnYWN5LXRydW5rCiszMzI0NCAzMTJmYjc2YjczY2M3Yzc0ZDE5MTZkZmE3MjNlNWUzNjI1NGYyY2YxIGxlZ2FjeS10cnVuaworMzMyNDUgZWUxNGU1YjA2ZWQxMzZiMTIzODNkYWI2MWQxNjI5ZWJiYWM3Nzc5YyBsZWdhY3ktdHJ1bmsKKzMzMjQ2IDdmZTRlOWYxNjYzNDdiNjQxZmE0ZGVkNmQzY2RkNGQ2Y2QyMTQ1ZjggbGVnYWN5LXRydW5rCiszMzI0NyBkYTAyNDhmY2ZjNTI1MWJjZDcxMGNhYjE1MTdkMjA3OGMyMDQ4NTViIGxlZ2FjeS10cnVuaworMzMyNDggOWRmMWYzZDg5ZTYwMGM0MTg3ZTMzZDk1MTRiNjM4YzExNDEyMjMzZiBsZWdhY3ktdHJ1bmsKKzMzMjQ5IDhiMTYzMzcwMzcyZGRhZDBlMDM0MDY0ODhkMDViMGM1OTkxYmE2YzggbGVnYWN5LXRydW5rCiszMzI1MCA3Zjc5ZWFkNzEyZjU4ZDQ3MWRmN2E0NDMwNjczNTA5NzEyMzQzNGY4IGxlZ2FjeS10cnVuaworMzMyNTEgOTk2NWViY2RkMTcyZjkyZjQxMDhmMzUzMGE1YTU5MGY0ZDhhY2E2MCBsZWdhY3ktdHJ1bmsKKzMzMjUyIGI3OGQ2M2RhZTAzMDc2ZTljZGE3ZDVmN2Y2MzRhZDk1M2VkMGNmODIgbGVnYWN5LXRydW5rCiszMzI1MyA4ODA3ZTkwMWM1MjZjYjQ0YmI5YTY2MGUzNjk3OGFjZDJjNzYzMTdhIGxlZ2FjeS10cnVuaworMzMyNTQgNGEzZWYzODA3OGU1NTE1N2QzN2VkNGI5MjgwODU0ODQ5MDdmMTZhNSBsZWdhY3ktdHJ1bmsKKzMzMjU1IDlhMzA0NGU1NzgxZWFhYzU4ODRjNmJjY2JlMThlNjIyYTAzZmE5MzYgbGVnYWN5LXRydW5rCiszMzI1NiBhNDBjZjFkMGE4ODdmZGZiN2M2ZTMyOWIzZDcxMmI3ZmZmYzRiNGZlIGxlZ2FjeS10cnVuaworMzMyNTcgZWFhMDYyZmRkNDZhYjAyNjU2MTZjODQwNTRkODM5YjJhMWVlOGJiNiBsZWdhY3ktdHJ1bmsKKzMzMjU4IDg5MTFjYTg4OTgxYWY4NjJlNjNlNGFhYWU5Y2IyNGNhN2M1YjdhOGUgbGVnYWN5LXRydW5rCiszMzI1OSBiMzVmZjliNTkxNDkzMWMzODg4MGQ5MjcwOWY0ZTY5NTIyZmVjNDNhIGxlZ2FjeS10cnVuaworMzMyNjAgNDY2YjU3OWUwMDg4MjI2MmJmYjEyYTJhZTMxMTU4YTMxOWJhNGU3OCBsZWdhY3ktdHJ1bmsKKzMzMjYxIDIwMWNlYWY5NTk3NTFmNDQyYTNhNjA5Yjc2NWJmZDJmZmMyMDVlODcgbGVnYWN5LXRydW5rCiszMzI2MiAyYjEzYjU4YWUzYThlNzYzN2FmODQzY2NmNzI0ODU1MDkyNjY5ZTU3IGxlZ2FjeS10cnVuaworMzMyNjMgZWEzODRiMWQwZDEzZGJiNjc3Y2MxOTZmNDYyMTRjMDFlMjU4MjM5ZSBsZWdhY3ktdHJ1bmsKKzMzMjY0IDdiNTE5ZWE3NTAxYWFiZjI4YWIzYTkxZTgxNTgxZmU0MjljNTE5NWMgbGVnYWN5LXRydW5rCiszMzI2NSBjYWE4YzEyMGUyY2IyYjI5NmQ2MDdjZmUzZGJkMDljOTkzZGM4OGJjIGxlZ2FjeS10cnVuaworMzMyNjYgZmVhOGRlZTI3MzMyZmZjZjUyZjU5NWUxZmU5ZDg0MTI2MjNiM2I3NiBsZWdhY3ktdHJ1bmsKKzMzMjY3IDhhMjkxNmM0MzNkOTRmZGIyYzk0NzczNjk1ZDVhYTQ5ODYxYTQxMTggbGVnYWN5LXRydW5rCiszMzI2OCBlNDMxMjZjNDcwYTc2ZWE5ZmJkM2I5MmU3ZThiNzhhZjYzMWZmNzk1IGxlZ2FjeS10cnVuaworMzMyNjkgMmQxNmMzZWZlMTQ3ZTdiZDQ0YjdkNzhmNGZmY2QzZjRmNWE5ODZhNyBsZWdhY3ktdHJ1bmsKKzMzMjcwIDYwYjUzZGIxNGFhM2NjNDFhMmNlZWM4NDdjODUwZmJmNWY4YzJkNDcgbGVnYWN5LXRydW5rCiszMzI3MSBiZTYyMDAwN2VjMWY1MjY1MjAxODYwMWJmYmUyZjU4MDU0MTU2YTY1IGxlZ2FjeS10cnVuaworMzMyNzIgMDE2OWFjZGYyYjViYzI2OTdlMTdhZTAyZDI2NTZmY2RjODU2M2FlZCBsZWdhY3ktdHJ1bmsKKzMzMjczIGNkM2Y5YjE3MGMzN2ZjYmMxOTJhN2MwZTUwOThlZWI2MjJkZWEwM2MgcmVsZWFzZTIyLW1haW50CiszMzI3NCBjYWM4NTUzODdiNTY3YjY5NjcwYWM4ZGJlNjg5NzYzYjhmNjMwZWJiIGxlZ2FjeS10cnVuaworMzMyNzUgODYzNDJmYTg5MjBkYWZlMzBiZjFkM2Y5OTViZDYxNDA3OTFkZWU2MSBsZWdhY3ktdHJ1bmsKKzMzMjc2IDBiZGI0YWNlZDZlMjBkODY2Y2MzNWY4N2Y3Y2NjODQ1MTUyMWQ1OWMgbGVnYWN5LXRydW5rCiszMzI3NyBjZDA5M2E5OTIzOGQ3MjM2NDdkOTJlMjRjN2Q1NTlmMjM2YTNiNDhhIHJlbGVhc2UyMi1tYWludAorMzMyNzggNDQ4MWM1YmRhMTk2NmFkODYwYTE2OWUzMDAxY2U2OTcwMDk5YzQ2OSBsZWdhY3ktdHJ1bmsKKzMzMjc5IDFiYTkwZDUxNDk3YmE2ODU3MDBkOGYwMDRkZmVmMDlmNDQxZGIwMWUgcmVsZWFzZTIyLW1haW50CiszMzI4MCBiYWRjZDE1OGQ4MWNhMjNmNjE3OWE0OTZjZDExNzNlMjEyZWRkMWNlIGxlZ2FjeS10cnVuaworMzMyODEgNTgyNTFlMGE4Yjc4N2JjZTNiMzRmNWY1ZmJjMDliYjM4NGRmMDBlYiBsZWdhY3ktdHJ1bmsKKzMzMjgyIGY4MDY5ZjdlZGQ0YTI5YmY2YzUwNGNkZmRjNGE5NTQ5MDE0ZmJiNTUgbGVnYWN5LXRydW5rCiszMzI4MyA3N2VkYTBmYjBlMTQ5ZDQ3MjAwZTJiODQ4MWU5OGJiMmQxYTNmNjg2IGxlZ2FjeS10cnVuaworMzMyODQgZGVkOWFiY2I5MTc0YWE3NzRkMmE3NTUyZDQxZWNkMWU1OTlhMzIwMiBsZWdhY3ktdHJ1bmsKKzMzMjg1IDdkMzA1ODVhNTkzNDA1NTE1ZjUxNGM0ODM1ZTRlZTg2OGRhZDE5MDAgcmVsZWFzZTIyLW1haW50CiszMzI4NiA4NTNlNmEyYjkwNjhlZTY0MzIxNDMxNzExMzA0ZDVmZmFlOWQzYjFhIGxlZ2FjeS10cnVuaworMzMyODcgYTQ2NDAyMGYxNWQ2NzUzODg3ZjYyYTc0YjFjMDk5ZDY3ODk4NDBkZiBsZWdhY3ktdHJ1bmsKKzMzMjg4IDdkNDE3ODVmYjYwYzZlNDgyN2VkNmJhNWNmZTRiNWQ3N2NlNDJiNWMgbGVnYWN5LXRydW5rCiszMzI4OSBiYTEyZDJiNGIzMWRkYmI2YWQ0OTIzMjRmYmExODVlODZiMWZmZThlIGxlZ2FjeS10cnVuaworMzMyOTAgZTFmYTA3YmY4NTQ4ODg1YjA5Mjk5NDRlZTBjZGRkNjk0M2ZkODEzYiBsZWdhY3ktdHJ1bmsKKzMzMjkxIGJjMTIxNWY3ZGJhMzg2YjVkYmY0ZGYxYTIwOTliM2E3NDQxODBiM2UgbGVnYWN5LXRydW5rCiszMzI5MiBhNGQ2YmM3MWYwOTFjMjdjOWU0YWU5MmI3MWJmZjljZWY3MGRlMzhjIGxlZ2FjeS10cnVuaworMzMyOTMgNDEwYjNjMjIyMjExNGM5ODViNzNhYWUxMjYzYmZjMDg3ZGM0NDI4YSBsZWdhY3ktdHJ1bmsKKzMzMjk0IGY4ODNkYjI1ZDM0NDRiZGVhYTMzZWMwMzlkZmIwZTljMDJiMzA3YmIgbGVnYWN5LXRydW5rCiszMzI5NSA2NzZhYTYyODMwZDBlOTk1MmJhZDBlYTcxNTE5OTMwYTMxZTc4NDIyIGxlZ2FjeS10cnVuaworMzMyOTYgNTMwNGJmZjI1ZTE4MzRhNjI3NjlmY2FmNzdjMWJhYzUzYmZjMTEwYSBsZWdhY3ktdHJ1bmsKKzMzMjk3IDZhYTk3MmEyMWFjNGMxNzJkNjUyZDU2ZjhjZWQ5NjQ3Y2IyZjlmYTggbGVnYWN5LXRydW5rCiszMzI5OCAxZWNkYjk0YTE4NTIyZjg5ZWY3Y2ExMDFlNjc4MTE5ZTIyYzI2ZDdhIGxlZ2FjeS10cnVuaworMzMyOTkgOWRlODJkYmMzYmQwMmI3YmJlODdiOTFmMzM4YjEwNmY2NGY1ZGE0NiBsZWdhY3ktdHJ1bmsKKzMzMzAwIDk3M2IxZTJlMjcyNjM4MTVkMjhiZGU4MGVjMDBmOGE4YmEzZDg1NjggbGVnYWN5LXRydW5rCiszMzMwMSA1ZDdlNmU4MjgyMTg3ZjVkMzQxN2EzYzI0YzFkZTg3ZmM0NGUyMzU4IGxlZ2FjeS10cnVuaworMzMzMDIgN2Q1YTljMWEwMTk3MDg0NjBjMWE2ZWZkM2VlNmY0NWFlNTA2MWIzYyBsZWdhY3ktdHJ1bmsKKzMzMzAzIGFkMmRjYTVjZmU4MWE3NzA3ZTg2MDgxMDllOGEzNmMzNzc0ZjQyZDkgbGVnYWN5LXRydW5rCiszMzMwNCA0OTA5YWE2NDQwNWZiMWMyMDZmMGQ3NGU1ZDIyMjcyODYwZmQ1NzAyIGxlZ2FjeS10cnVuaworMzMzMDUgNThmMTQxZDFjY2NhMjk5NWMxMzkyMjE4YmZkZDQ3YjU3NzY5ODgyZiBsZWdhY3ktdHJ1bmsKKzMzMzA2IGZhOTcyOTM1MzNhOTFmNGRjNjkyODZiZGE2OTM1OGRmZWUxN2QzMTkgbGVnYWN5LXRydW5rCiszMzMwNyBhNjNlYTdjNDc1Y2M1ZTI4MDFkMDFmOGRiZTdlZGY4OWRmMWViZTVlIGxlZ2FjeS10cnVuaworMzMzMDggNjFmOThlZDRiNmI1OGQzYmZjYzI2Zjg0ZDg4N2JmMDY1ZjEzNTA5OCBsZWdhY3ktdHJ1bmsKKzMzMzA5IDA1MDlhNzY1MjE2N2Y0OGFmM2ZlYTE1ZGQzZDU4ZmM2NDVjNDFkNjQgbGVnYWN5LXRydW5rCiszMzMxMCBkNjY4YTgzMzY3NzQ3ODFjZDdmYTA2ZmU5ZDkyZDM5Y2NjZDE1NGNjIGxlZ2FjeS10cnVuaworMzMzMTEgNDYyZGU5MzMzMjUxY2E4MDE0MDQ3MTZiZDY0NDEwMjkyZmQ1YzcwYyBsZWdhY3ktdHJ1bmsKKzMzMzEyIDhiZDI1ODBlMDE1NTUyMWRkZTM0NzYzMTNjMTYyOTk4YTJjNWJjOWIgbGVnYWN5LXRydW5rCiszMzMxMyAzODgxODgzYjk0MGVjMGU0MzBiNDg2MzQyMTE1YWRhZjU2NjE0YmIxIGxlZ2FjeS10cnVuaworMzMzMTQgMGEzNzUxZGY0MTk1MmI1NGY5MDY0OWM5MDE2ODZmZDk4YWUyZDljMiBsZWdhY3ktdHJ1bmsKKzMzMzE1IDYwNDU0MmU1OTFmYTY4MWM2NDg4NzliYjZjNzQ2ZjZmZTc3Y2QwZmIgbGVnYWN5LXRydW5rCiszMzMxNiAxNmVlZDJlOThmZDkzNTQ2OGRhZDJjYTYxOGM5ZDAyMjY2MGE1MzM5IGxlZ2FjeS10cnVuaworMzMzMTcgNjZiNmQxY2U0MmZlNjFlMjAzOTQ5MzZiYWVjOWM3YmY5ZGEwZDc2NSBsZWdhY3ktdHJ1bmsKKzMzMzE4IGY5YjhkNGJmMDhmYjlhZDhhOTg2MTgwZTExMDg4MmRiNGYzN2M3ZmQgbGVnYWN5LXRydW5rCiszMzMxOSA1ODI4ODdiYTdhNjhkZDdjZDQyNmZjYzk4ZDg3ZDdiYTlmZWU4NDk4IGxlZ2FjeS10cnVuaworMzMzMjAgNWIxMDVhOTUwMzM0OGZiMmVkYWViNWI0MDIyZDBjNzMyYzk2YWM1MCBsZWdhY3ktdHJ1bmsKKzMzMzIxIDk1NTFjZGFmNmU3ZTFhODg0MjIzYWJkNmZmMzU3ZTE3NmUwMTE5NTEgbGVnYWN5LXRydW5rCiszMzMyMiA2OTYxOTU0MmE5MTZlMzQzZDJiMzcwMTQxZjAyNzAyYzE0Nzk4MWE0IGxlZ2FjeS10cnVuaworMzMzMjMgOWE0YmNmZGRiZmExMmYxNTQ1M2JjMmI3NWY5NmE1Y2M1ZGZmMDZjMSBsZWdhY3ktdHJ1bmsKKzMzMzI0IDc5MzAzZGU5YTA1YTZlZjNjODkzMmU2ZTY1MjExOGRjZDdmYjNjYzAgbGVnYWN5LXRydW5rCiszMzMyNSAxMzA4ZDdlYzk5NTM1MDk5ZTNlYmZmZjVlMDFkNDA2Njg4MGEwOWU2IGxlZ2FjeS10cnVuaworMzMzMjYgY2I5M2I4NjI1MzJmNDkwMzFjMmQyNjI3YTU1MDhhZDMwM2U2NWM3MCBsZWdhY3ktdHJ1bmsKKzMzMzI3IDNjYjE4MjEyNTIxZDM0ODliMDVmYzVkYTg0MTBmYTUyNzA2ZGUwYjAgbGVnYWN5LXRydW5rCiszMzMyOCBkNzYyNmI4MGRlOTUxNjk0YWY2NDRlZWFmZjIxMzhlYjkwYWMyMmFhIGxlZ2FjeS10cnVuaworMzMzMjkgNzEwYzA5ZjRjMDVhMjNmNGUzMjRhNmE3Nzc4YmIyNGY1OTVkM2Q2OCBsZWdhY3ktdHJ1bmsKKzMzMzMwIGJhNzVhZjdhYjEzNmYzMWE5ZDhiYzhkYmRmNmUyYTRmNTMyZjA3ZjEgbGVnYWN5LXRydW5rCiszMzMzMSAzNmExNzkwNGEzZWQwMDYwZTRhMWNjOTdmZDc4YWU4OGY4ZDk1MDc2IGxlZ2FjeS10cnVuaworMzMzMzIgOTZlY2FhYjRjYmE2ODEzOGM1YzU3ODkwNWU5NzU2MWE5ZDFlOGNjMCBsZWdhY3ktdHJ1bmsKKzMzMzMzIGJlOTlmNTk3MDY4ODkwY2JmY2UyN2MwM2U5MmQ3NGNlMGQ0NTYwNDAgcmVsZWFzZTIyLW1haW50CiszMzMzNCA2NmRjMDUwMTA0N2Q0YzI2MDk3YWM2NmJiYzg5NWE1OGUwNGNlZDE5IGxlZ2FjeS10cnVuaworMzMzMzUgNGZmODNjMGI0NWU5MjUyMmIxOGNkNTlmZDUwMjIyMTU3Nzc1ZmQ4OCBsZWdhY3ktdHJ1bmsKKzMzMzM2IDUxMzk3ZWRkMmJkNGQ1ZDM2YTg1NzMyNTk4MjNhYzU1NzhlY2ViMTMgbGVnYWN5LXRydW5rCiszMzMzNyBmMDgxMTQ3YzBjOGFmYWI1NDg0ZGQzOGNlNzdmNTU4YTY4YjI1Y2U1IGxlZ2FjeS10cnVuaworMzMzMzggMjY5MmIxYzkyZThkOTFhMzYyYzUyMDljMmU0MTdmOTMyMzI1MDc0MyBsZWdhY3ktdHJ1bmsKKzMzMzM5IDA1MmJmY2JhYmI3YjlkOTJmMWFjOTZjZTM1ZjJkN2FiN2Y2NGQ3OTUgbGVnYWN5LXRydW5rCiszMzM0MCAzNjQwMjdhODE1YjhjZjI1MzFlMjVjMjkxODc1MTE0ZDlhYWIzMWJiIGxlZ2FjeS10cnVuaworMzMzNDEgMjgwZmJlNWY0ZTE2ZWNjNmNlYjY1M2JlZGE1NWNmZmJiZDI2N2RmNiBsZWdhY3ktdHJ1bmsKKzMzMzQyIGQwZjE1OTc3ZjM3ZjQ3NTJjNWE4NzYxYzQ2OTk2NmIzZDJhOTM4MGIgbGVnYWN5LXRydW5rCiszMzM0MyA0ZTFhNDdmNTIwNGNiZTQxOTg2NTRlMzM1MTU1MmM2OGE5MGFiMzBhIGxlZ2FjeS10cnVuaworMzMzNDQgYzE0OWRkNGNmZDY2ZGYxYWYxYTc5MzMwMTE4ZGJhYWQ5OGI5NTYxOCBsZWdhY3ktdHJ1bmsKKzMzMzQ1IDkyMDc3NzY0MGQyODk4ZDc3MGQ5N2NjN2ZmYWJmMzM4MTNjOGIxMzkgbGVnYWN5LXRydW5rCiszMzM0NiBkMzg4MGMyMzc2MjdmYWM1YzU3ZTRkNTc3NGJhZDgwMWYwYjhlYjllIGxlZ2FjeS10cnVuaworMzMzNDcgNmQ5ZWQ1NGE0ODIxOTBjNzM1MmJjMGQxY2UxOTYwMzNiYmY1M2NhOCBsZWdhY3ktdHJ1bmsKKzMzMzQ4IGViMGI2N2UzYzA0ZWM1NjdhMjlhN2U3NDE1NzE0Nzc4YTNkOWU5YWIgbGVnYWN5LXRydW5rCiszMzM0OSAzNzEwOTJjZTVjMmJjMzNjZDVmODMwOTdiOGM5NGRmM2QyN2ZkNDM0IGxlZ2FjeS10cnVuaworMzMzNTAgYzViYjMxZTQ1YzY2ODc2YjAwODQ1NjMzOGE1YjE3NTIxOTVlNDAxZSBsZWdhY3ktdHJ1bmsKKzMzMzUxIDlmZTY3ZjdmMzQ1OWFiNTY3OThhNWJlYTdlNGI3YTBhMWM3OWQ1ODEgbGVnYWN5LXRydW5rCiszMzM1MiA3YTI3NjZjOWE3YjU4Yzg3NjhmM2I0OTI5Nzc0MTgwMWE3NDE1OTg2IHIyM2IyLWJyYW5jaAorMzMzNTQgZjRlMmU1YTVlYzYyMmIxMTdiOGI2YzhiMTY5NDcwODc3NjZhNzUzYSBsZWdhY3ktdHJ1bmsKKzMzMzU1IDI1YjlmZDZkOGUzMDBiNDA0NTUyOTVhYjFmNmNkODQ5MGMzMWE1YjMgcjIzYjItYnJhbmNoCiszMzM1NiA3MmRjYzYzZjRkZWE2YjZmMGUxZjU1NWQ2ZmIzMmRmMWJhNThjNDk3IGxlZ2FjeS10cnVuaworMzMzNTcgODQyZDllMzBkYjljMzcyNmYwOGM0MzlhMGI3YzQ2NmQ3ZTE1NjZmNiByMjNiMi1icmFuY2gKKzMzMzU4IGVmN2ExZDI4NTc3MTQ5NDdiNjU0M2I2YjI1NWRmZDdiYmJjOGRlNTIgcjIzYjItYnJhbmNoCiszMzM1OSBmNGYxMWVkM2FlNDQwOWU3NmJmZDYyMDRlYWZmMTJiOWUzOTU0ODQ1IHIyM2IyLWJyYW5jaAorMzMzNTkgZGMxYjFjN2E2YjllNjRmN2EyMTFlYTllOGE3ZGE0ODNjMmJiYTE2NyByMjNiMi1icmFuY2gKKzMzMzYxIDUzN2M4YjFhZWY3ZmFjODg2NmU2ZGJiYmU0M2RjYjI3MzM2ZjQyZDIgbGVnYWN5LXRydW5rCiszMzM2MiBjNGY5ZmYyOTEyMjliYzg4NDZiMTVjNjY0MjYzOTRkYjQ1ZDJkMTljIGxlZ2FjeS10cnVuaworMzMzNjMgZDcxNjRmYmVjN2NlMTQwMzkxYmJhNjhlZmMwMjg5NjMyZTA1OTdiZiBsZWdhY3ktdHJ1bmsKKzMzMzY0IDI2YmE3MWFhNWIyMTU1NTZhNzNmNTZiNWFmYzZiZTdhYjhiMWQ4NTkgbGVnYWN5LXRydW5rCiszMzM2NSBkMGRjOTU2NDY3YmYxYjZjYzZmOTRiMGUwOTBhNmE4YjE0NDdlOTMyIGxlZ2FjeS10cnVuaworMzMzNjYgM2VkMmM5YTc2OTY1NjgzMzUyZWVlZDE2NmZlNjBmMTJmOTUzODI5ZCBsZWdhY3ktdHJ1bmsKKzMzMzY3IDFkNzYzODYyZDFhMWQ3MDJkOTAxMzYyZDc5ZDdmMTBjNzcxZWJkYzkgbGVnYWN5LXRydW5rCiszMzM2OCBmMWMyNzlkNzAwYTZkNmYwY2ZlNzYxMzhmMzQ2MDY5OTBjMmVmOGM0IGxlZ2FjeS10cnVuaworMzMzNjkgOGRiYzRlYzU3MjBkYmQ1ZjNkOTljNWE1NjQ2YmFjZmM0Yjc3ZTYwZiBsZWdhY3ktdHJ1bmsKKzMzMzcwIDY0ODNlZWFlYWQ4MmMwZWJjZmUyNmRiNTYyNDhkNzQwMzcwNTQzNTAgbGVnYWN5LXRydW5rCiszMzM3MSA3YjZmYTdiYjI0ZjA2NDY4NGYzODA1MzBkNTQ0NmVjN2JkNDQ1MThhIGxlZ2FjeS10cnVuaworMzMzNzIgOGZmMDQwZTlkNTY2OTUxMmEyYzdlMjk3NzVmMWQ5N2FjNGI1MTAyZiByZWxlYXNlMjItbWFpbnQKKzMzMzczIGQ2Nzc0MjRjOWNhNzEwNTkzMTcyNGEyN2U3NzczZTYwMzcxMDlhNzMgbGVnYWN5LXRydW5rCiszMzM3NCA4OTFlNTUwMmVjOWUzYjExOGRiODIyZWU2ODFiZDM4MGVhMmIzMTE3IGxlZ2FjeS10cnVuaworMzMzNzUgMTUzNjk0MWI1NDdmMDZkM2M4YjI3ZTdkZTg3MWJjNWY5NjhiZjVhNCBsZWdhY3ktdHJ1bmsKKzMzMzc2IGE0ZmVhZDBlMjRmOGFlZmNiYjk0NDdjMWQzZmUxOWNkNzlmZjE4ZGQgbGVnYWN5LXRydW5rCiszMzM3NyA3NjJlMmEyOTdhYjk3YTIxYmQ3ZTViNjBkZWQ3M2MwODUwYzE5NDA0IGxlZ2FjeS10cnVuaworMzMzNzggZTM4MTY0YWE1YmU1MTNiN2RiOGIxOGNiNzMyZWZjMWJiNzM2OTNhMyBsZWdhY3ktdHJ1bmsKKzMzMzc5IDFmMzU0N2Q0OTM5ZmRjODZlNzJhODI4ZTI1M2I2NTFhOWRmYTYzOTYgcmVsZWFzZTIyLW1haW50CiszMzM4MCA0ZDI2NTQ3ZWJmYzM4ODRjNjM0YjJjOTdhNGM1N2RhODlmNTg3YWNhIGxlZ2FjeS10cnVuaworMzMzODEgZDhkMTk3NTUxYTFlZGJlZWZlYWUyZDhlNWE0MzNmMjEzODQ4YjAyMSBhc3QtYnJhbmNoCiszMzM4MiBiNzUyOGRhZTc2NTY3YjFmNWYxMTZmYTY5ZGY2MjEwNjZhMzg0MjAzIGFzdC1icmFuY2gKKzMzMzgzIDU4MTMyYzgxM2Q3YmU5NDVlYTc2ZDhhZjhhN2U4OTIxOGNiNTE4ZjMgbGVnYWN5LXRydW5rCiszMzM4NCA4ZWQyZWQ3Nzg2OTQxNjUyZTI4YzQ3MTU4NWYzOGQ4YjU4OGUzZmUwIGxlZ2FjeS10cnVuaworMzMzODUgMjkyZTg0NDY2ZTc4MTk1ZDRmNTYzN2M3M2ZiMmY1ZTM3NDM1N2ZhNyBsZWdhY3ktdHJ1bmsKKzMzMzg2IGJmMDYzNGNjMGYxNzUwOGZlOGNjN2JlYzc5ZGZhOTg5M2YwYmUzYzUgbGVnYWN5LXRydW5rCiszMzM4NyBlOTUzMWVlNWYxODg5Zjk4ZDE1NDIyOGFiMWJlMmVmY2E4Y2UwNWFhIGxlZ2FjeS10cnVuaworMzMzODggOWQzM2RkMmNjZmU2YTZlOTc2ZmYxMWU0MzY1ZWU1MTQ1N2M1OTRhYiBsZWdhY3ktdHJ1bmsKKzMzMzg5IDJhNWU2Y2UzZjNhMTU3NTIwYTVjNDBiMDUwNjI4NWUzMTJiNDU4OGUgbGVnYWN5LXRydW5rCiszMzM5MCA3MjRmMmVkNzlkYTliM2QzNmRiZTQ2ZTg5MzUxNDNkODg0NmEyMTM3IGxlZ2FjeS10cnVuaworMzMzOTEgZmE0Y2Y4NzhjNTM4NDQ4Yzg4MDY2OWJkMjk1ZmMxOGI5OThkN2M4ZiBsZWdhY3ktdHJ1bmsKKzMzMzkyIDA1MmZlOTY2ODRlYWI2ZDg2ZDk2MmY1NDdkODllOTliMzFkY2IyNGUgbGVnYWN5LXRydW5rCiszMzM5MyAwOWU0MmY3OWY4MzBiZGYyNDlkMjgzODNjNGRjNWFiZDRjYzEyYzk1IHJlbGVhc2UyMi1tYWludAorMzMzOTQgYTQ0ZDI2N2YwMTYyOWZhNGMzMzA5NDM4NjFmMDZkYjQyMDNiNjAxYyBsZWdhY3ktdHJ1bmsKKzMzMzk1IGNkYjIxN2E4ZWIwNDQ1ZGM5ODM3YmRkYzI5ZDJhYzY4YmNmNTNiM2UgbGVnYWN5LXRydW5rCiszMzM5NiAzYjdiNGZkNWY3Y2FkNTZiZTdmMGFhMWFkMWU1MjljMTY0YWZhMzAxIGxlZ2FjeS10cnVuaworMzMzOTcgN2QwYWY0NTYxZWVkMWRlMDZkNTM3NDI3ZTBmOGQ3MTA4MjVmY2M2YiBsZWdhY3ktdHJ1bmsKKzMzMzk4IDg1ZTUyZWM4NTYyOTk3NjcwYzE5YzVhOGQ4ZTY1MTNlMTE1ZjlhYzYgbGVnYWN5LXRydW5rCiszMzM5OSA5NjJmNDQzYWUxZDkxYjM4NDRmN2FjNWM0ZjJkNWZlMjk3YWQwOTg3IGxlZ2FjeS10cnVuaworMzM0MDAgNGM5MGE2MzFkNjMyZWRmZTRlNjEwMDFkODlkMmIzNzU2ODQ4NzgxMCBsZWdhY3ktdHJ1bmsKKzMzNDAxIDM3MjE2ZTFjNjc0NzI0ZTBkMDVmNGFkMDMxYjMwZTg0MjE1MjFjZjYgbGVnYWN5LXRydW5rCiszMzQwMiAwZTEzMWUyOTQ2NjI1ZTc1Y2Y3ODJkMGZjZDYzMTI5YTU0NWFlZDYxIHJlbGVhc2UyMi1tYWludAorMzM0MDMgNDUyZTMzYTA4ZDU1NzBhMDZmOGYzZjhlOGRmOTRkNGU2NjE1OGQ2YiByZWxlYXNlMjItbWFpbnQKKzMzNDA0IDEyNDdmODRhYTZhNmMwM2M5MTU4NWI0MGU1OGExNWYxMzY3MmUxMzggbGVnYWN5LXRydW5rCiszMzQwNSAzOWJlNWIyNjI3OTJjOTgwMGRkZGZjMWY1ODJkYzQ2OWUyN2NiZWFlIHJlbGVhc2UyMi1tYWludAorMzM0MDYgZjQzMjk2Y2JjOTg1MDEzNGU0YWJmYzEwZTQwMDVlNzY2YWYxZTdkOSBsZWdhY3ktdHJ1bmsKKzMzNDA3IGU4NTBjYzUxYzI4ZmQ4OGY3ZjVmOTQ0NmEyZTA4MGEzOTA3ODgwMjYgbGVnYWN5LXRydW5rCiszMzQwOCA2NWU1MmMyNDc1Y2U1MTM1OTRlZDliYjZjYzQ1ZjcyZDc4ZjRhZDVhIGxlZ2FjeS10cnVuaworMzM0MDkgYTVlNzMzNmMwMDhkMzhhZGI4OWUyMTdkZDdiYTE0MjMwZmE5NDQ0ZiBsZWdhY3ktdHJ1bmsKKzMzNDEwIGQ1ZjI3ZTY3ZTFhYWU4Y2NjY2U2MTkxOTE4YmM2ZmFhZWFlMjNiNWQgbGVnYWN5LXRydW5rCiszMzQxMSAzYWQ4OThiOGY4MTNhYzU1ZjE1MzFiODRmMGU4NDcxYzhmYTU0OWZmIGxlZ2FjeS10cnVuaworMzM0MTIgNGM5ZWYyYTYyODY0ZDVhYjg5MWZhNzY0ZjhiN2U2MDMyNzNlZTQ1ZSBsZWdhY3ktdHJ1bmsKKzMzNDEzIDhjYTljZTM2YTIwNmZmZDFhODQzYjc0ZjhkMDgwZGI0ODRmMWUzMDUgbGVnYWN5LXRydW5rCiszMzQxNCA2ODgzNWJmMTAxZWNiMTNjYzk1NzRlZmNkODhkOTk2ZTZkZmMxYjAyIGxlZ2FjeS10cnVuaworMzM0MTUgYjljNDBmZGE2MDlkYmY3NjZiY2JjZWQwOGNjNmQzOTRjZDY5OTEwYSBsZWdhY3ktdHJ1bmsKKzMzNDE2IDRmOTI5M2NhMmRlNjEyYjAzNTFhNTlmYTcyYmE4N2M3YmI3ZjJkNGYgbGVnYWN5LXRydW5rCiszMzQxNyAzMmY5NmJhYzIxMTNjZjFkNjhiZmE0MGM4NTEwM2IzY2RjOGJhMjYwIGxlZ2FjeS10cnVuaworMzM0MTggNjFmYjk5NmViYTZlMGViMDBiNTkzYmEyYjMwZjJlZTM4NWIxMmY4ZCBsZWdhY3ktdHJ1bmsKKzMzNDE5IGViODI4YzY0ZmNjN2JhZWNhMDA3ZWZmZThkZmY5MjQ0YzE2NjgzNjMgbGVnYWN5LXRydW5rCiszMzQyMCA1YWY4OTAzN2NlYmEwODE1ZjcwOWVkM2EzMGE1NzcxMjM1ZmIxZTY0IGxlZ2FjeS10cnVuaworMzM0MjEgYWM5YTFmMGEzM2RjOGVlN2E4MGM5NWY3MzQxNjNhZjg1YzcyNTM5MiBsZWdhY3ktdHJ1bmsKKzMzNDIyIGI4NjQ0NmYwMzUwZmYwMThkODc4MjBiMTEwMjI3MmQ4NDEyODZjMjIgbGVnYWN5LXRydW5rCiszMzQyMyBiNTgyMWUxNzY0NTM4MDEyYjUxMTg5NTZiYzljZDc0Y2U5ZmMxNmRiIGxlZ2FjeS10cnVuaworMzM0MjQgOWE0NDJmNGE2NDQzZGQxZDYxNDUyYjhiOTJlYzMyMmZjNjU2NjUzYSBsZWdhY3ktdHJ1bmsKKzMzNDI1IGI0NGRlZWVjNWM1ZWM4ZmMyYjA3MjNjZWU5N2MzYjA2OGEzNTZjOTQgbGVnYWN5LXRydW5rCiszMzQyNiAwNzViMjlhZDk3YzMyMWQ1N2Q2MzU3YjAyZDcxZjY0MTU2OTI0MjUxIGxlZ2FjeS10cnVuaworMzM0MjcgNTlkYTViNTdjNjFiYWNkMjI5ZWQ3YzUxYzU0OWIyNDZjZWU3NDA2YyBsZWdhY3ktdHJ1bmsKKzMzNDI4IDNjMWY3ODM0MGI2NWU4NjJmMDA2M2ViODJjYjcxNTFiMDNkNjE2ZTUgbGVnYWN5LXRydW5rCiszMzQyOSBiNDkzYTdlNzVkOTc3ZmEyYTJhNDNjYjAxZWRlMzU2ZTkwZTc1MTIyIGxlZ2FjeS10cnVuaworMzM0MzAgMDU5MWZkOTU2YjlkMjg1N2JiMjIxZGY0MGVjNGFmMmNjMzBhZTE4MiBsZWdhY3ktdHJ1bmsKKzMzNDMxIDRlYzg4MGM1M2UyYTMwN2RlMGMxNmRjYjRjZjU1OThkMzY4OWNkYzkgbGVnYWN5LXRydW5rCiszMzQzMiA5ZWI2ZGNlZDE2ZTZiZTA3NzY1ODg1N2MwNDBiMWVkY2NkZDVjYWNhIGxlZ2FjeS10cnVuaworMzM0MzMgNzhjNTEwOWZmYWRhMDYzMTliNzkwOTMzNzIyZmFlNjBlNGZhNTQwZSBsZWdhY3ktdHJ1bmsKKzMzNDM0IDAwNTc2NWE1NmVjMzliMjI2MDJhNjNmMTg4NzI2NDgwZDczYTlmMDEgbGVnYWN5LXRydW5rCiszMzQzNSBiODRjYzNjNzgwOGY4MjM5N2Y5YTdhOTljNGU5OTM1ZTQ0MDk5YmEyIHJlbGVhc2UyMi1tYWludAorMzM0MzYgZmU1ZWIxNzgwMGY5YzMxYjQ3ZDQ1NWJlM2RjZTYyMmMxMDk3NDQ2ZSBsZWdhY3ktdHJ1bmsKKzMzNDM3IGU5ZTU4MzJkNzA2ZmYxYTA5MzA4NTAxZDJjZDExMDMzZmE0ZWRmMmQgbGVnYWN5LXRydW5rCiszMzQzOCA3YTQ3OGQxM2YyN2RhMzM2OWM2ZTliNmY2NmU2NDk3MWM0YjJhN2EzIGxlZ2FjeS10cnVuaworMzM0MzkgNzc3MGI3ODgxMzQ2ZDJlNWZmMjc3NTljZDAxNmIxNjVmOTk4M2ZiMyBsZWdhY3ktdHJ1bmsKKzMzNDQwIGVkYTVkMDE1ZTExYzE4NjM3NzhmMzhjOWQ4MjIzNTJjM2M1MTY2M2MgbGVnYWN5LXRydW5rCiszMzQ0MSAyOGNmYTU0NmYxZWM3NjRkZTIzMTA2NjY3ZWJjOGU1MmFlM2FkZTBiIGxlZ2FjeS10cnVuaworMzM0NDIgMDcwMzQ1YWQ4ZDcxY2NiYWFkMjdlYWI0ZTg4OGI3YzUzNDUyZWYxNSBsZWdhY3ktdHJ1bmsKKzMzNDQzIDMyZWZlNTRkMGU4ZmZkMThmMDM3MWQ0ZjBiMWJhNGQzOGEyMWY5MmUgbGVnYWN5LXRydW5rCiszMzQ0NCBkZGMyNDc0MDRkYWIzZWYwZjk1NjZmMWFjZWEzYzFlNjIxN2JmZGNhIGxlZ2FjeS10cnVuaworMzM0NDUgOGUyN2U1Y2RlNTlhZWQxOTNkNzgxM2IzNzQ2YWQ3N2FjNWY1NTYwNCByZWxlYXNlMjItbWFpbnQKKzMzNDQ2IDkzOTYxMzQ2ODRjZjU5YzkzNDBmYWVlMWZhYjJiMjJjZjM3MmFiMzYgbGVnYWN5LXRydW5rCiszMzQ0NyBlNmY5ZjZiNWQ4ZDdlNzEwMTNiYmU2N2U5MWEzNDUyNWNhYjg2ZmFiIGxlZ2FjeS10cnVuaworMzM0NDggZjczM2JhYzc4Zjg3ZTRlZmU4NTQzMDAxMjM0YjE0ZmJjNjNmZDc5MSByZWxlYXNlMjItbWFpbnQKKzMzNDQ5IDcwNTZjYzVjODE2N2ZjMmU0YTMzM2ZkOGRjNDM2ZmU0MjNjMGRlNmEgbGVnYWN5LXRydW5rCiszMzQ1MCBjZTk4ODM5NGM3NTQ3OGZkZTFhN2I3ZTkzOTViNjNlMTgxNjYzNzc4IGxlZ2FjeS10cnVuaworMzM0NTEgMmZjZGUzMmE4YTU3OTllNTg0Mzg3NmIwZTk3OGQ5ZGNhZjQ3NDdhZCBsZWdhY3ktdHJ1bmsKKzMzNDUyIGRjNmE0NjczMTg2MDZmOTg1ODZkYTk3NzU5ZmMxOTllNmY2OGMwZDYgcmVsZWFzZTIyLW1haW50CiszMzQ1MyBkN2FmY2RjNjllZDQ5MWNjYjU3NWU2YjYxYTc4YWEyOWI4MTM0YWI2IGxlZ2FjeS10cnVuaworMzM0NTQgYzczZmFmNWRlMWJkM2QxNDNiZmFkYWM1MjZjZWJjZTkwYjQ4NWQ3YiBsZWdhY3ktdHJ1bmsKKzMzNDU1IDQ2NmE1NDBjYzIyOWZhYjI5ODRjYTQ3OTlmN2M1N2M4ZTk3NjUwNGQgbGVnYWN5LXRydW5rCiszMzQ1NiA0ZmM1NmNhZTRlYjhjMTY1ZGMyMDI3NDczMWRjYmIxZDhlNzU4MzU3IGxlZ2FjeS10cnVuaworMzM0NTcgMzFkOTIzNTRmNzJmMDlkZWI5YzY3ZjA5ZDE4MTY2NjYzNjg2YjlhZSBsZWdhY3ktdHJ1bmsKKzMzNDU4IGM4ZmI0YWY5NmRlMGU1YmVlMjBkMDljNTAxODgwMjYzYWZhZmFkY2UgbGVnYWN5LXRydW5rCiszMzQ1OSA0YmFmZmUxNGM4ODc0YTEyZDkzYWYyODllMDI5YWNlYWQ3NzM4ODhhIGxlZ2FjeS10cnVuaworMzM0NjAgMmU4NGZkYjRmZTMwZDdiOWZkODRjMzJjOGI1NTQzMGVjNmI3MjlhMiBhc3QtYnJhbmNoCiszMzQ2MSA5MDM1ZmU3Njg2ODlkODllMmEwNWFkMDc3ZjczOGI0N2IxYzFkZWQ3IGxlZ2FjeS10cnVuaworMzM0NjIgZGVmYTFkODI1YjA4Y2Q2MjRiZjBiMWZkOTZhZmRkY2U2MDlmNTQyMyBsZWdhY3ktdHJ1bmsKKzMzNDYzIDEwMzdmZWFjYjU0ZmM5OThhYzg3MjZjYzE4NjExMDg0YWNjMzlmZGYgbGVnYWN5LXRydW5rCiszMzQ2NCBjNzAwNjNjM2FlZWI4ZGY3NDVmYTJlZGY3ODNhZTRiNTRiZWZkNDliIGxlZ2FjeS10cnVuaworMzM0NjUgY2ZhZWRkZTUwYmQ2NDMyNjhlYzdjZjBiYTBmZTU4YzcxZWRiZjJhYSBsZWdhY3ktdHJ1bmsKKzMzNDY3IGU2YTc4ZGQ0MjVjOGUwYWFmOTAzNzMwOTE2NTUyOTNiZDI5ZTBlZDYgbGVnYWN5LXRydW5rCiszMzQ2OCA5NGU1ZDFiOGY2OTY5ODk3NzdkYTVlZTJjZjdlMDgxZmJhNTdhODAzIGxlZ2FjeS10cnVuaworMzM0NjkgZDdlMWExYmQ0ODgwYjc2MWE3MDFiZjU2Zjg3MjVhMjk0YWE0MjkxMyBsZWdhY3ktdHJ1bmsKKzMzNDcwIGM0NDk2NjNmYTI3ZGUzOWJhNzZmYTg5Nzg1YzgxNGVjOTgzYzYyYzggbGVnYWN5LXRydW5rCiszMzQ3MSBiYmMzNmUwZTEwYTE1NzkyOTA4MWQxMzk0NzIxY2Q3YzkzMjdlNzBiIGxlZ2FjeS10cnVuaworMzM0NzIgNTdiOTNjOTQ4MzBhMzRlMjBhYmYxNzBhYWQxYmRmNmNmNjgwYjVjMSBsZWdhY3ktdHJ1bmsKKzMzNDczIGU1Yjk5ZTYwNTkyNjE1ZDJjZDAxMjAwMDdjOTdkNTZmYjRlMjk5ODQgbGVnYWN5LXRydW5rCiszMzQ3NCAxMjcyZjc5NTQ3YmE5MTYxMTlkODZjNjkxNjUyNTYyYWE3MzRlMGFmIGxlZ2FjeS10cnVuaworMzM0NzUgYmFiODllNDA2ZjMwZTI0NWI5ZDdhMjkxNDJkNGY3NzU1NjQ0NWRiOCBsZWdhY3ktdHJ1bmsKKzMzNDc2IGQyODNiMTczM2MwZDdhNTc3Y2Q2ZjJiOWI3YjRjZmIwZjQ3ZDAzYWUgbGVnYWN5LXRydW5rCiszMzQ3NyBhYzBmYzA4OTNhYWNmMzM3NTM5ZGM3OTc2NGY5N2ZmMTZmZTZlYTU1IGxlZ2FjeS10cnVuaworMzM0NzggMGRmMTFiMmJmY2E1MThhYTZhNWZmOWZjYmVkYzEzOTM4OTU3YjcwZCBsZWdhY3ktdHJ1bmsKKzMzNDc5IDMyODAzNTUzMjlkZDM5YmI0OTIwMDQ1Njk3NTUyODAxZWUxYjI1ZTcgbGVnYWN5LXRydW5rCiszMzQ4MCA1YjIxYzcwMDM5NzQ1ZTY0OTIyMzZjYjZkMDBiOTk1OTAyNWNiNWI3IGxlZ2FjeS10cnVuaworMzM0ODEgYzljNmUyYzllYzk3NWM4NWI0OGU0MWYwNjEwZmNmNWQ4MzUzZmQzZSBsZWdhY3ktdHJ1bmsKKzMzNDgyIDJiMTdhZDY2ODY2NmU1ZThjYTYwYTgzMjFjMDA2YzRiOGE1MmMzYzggbGVnYWN5LXRydW5rCiszMzQ4MyA5OTE2YjU5MjYxZDc2MzM1YWRkOGFlODMzNmZjM2UyMTE1MGQ4MTU3IGxlZ2FjeS10cnVuaworMzM0ODQgZTAyYTVkMTg0OWY4ZDg3Y2JiNzgxOTVmZmRmNzhkMDcyODcyOWM0MiBsZWdhY3ktdHJ1bmsKKzMzNDg1IDY0NDNhMGZlZTdlMTAxNDMwM2MyYjAwYWRiMmIyNDBlMzI0MzJlNzAgbGVnYWN5LXRydW5rCiszMzQ4NiAzYjQxYzYzM2Q3Njk2Yjk2ZjU0NmEyODk0ZDE1ZmZmM2ViOWQwYjQ1IGxlZ2FjeS10cnVuaworMzM0ODcgN2JlMjRjYzZjMjhkN2JhNTVjOGIzY2YwY2M0MDEwNTVhMjYyMzY4NCBsZWdhY3ktdHJ1bmsKKzMzNDg4IGNiM2NlN2NlYzI2MTJmMTkzZjZlYmY4YjhjMDQzNzg0ZGQ2ZDM0YzQgbGVnYWN5LXRydW5rCiszMzQ4OSA0ODM3YmYyMTZhZTVmNTBkNzAwZTM5MjkxN2EzYzRkNGE2NzVmODVkIGxlZ2FjeS10cnVuaworMzM0OTAgZWQ0MzE1NWIxZDNjOTA3OTY1NWU4YWRmZTM2NjU4OTQxM2ExMTM1NyBsZWdhY3ktdHJ1bmsKKzMzNDkxIGQ0ZmZiMDQ5MGFjMjdkZDRiMTllMmY0M2UwNGI5N2ZmOTFiM2E5MWUgbGVnYWN5LXRydW5rCiszMzQ5MiAwNzE1MDE4MjRiYmQ4ZDkzMDc0NTVlNzgxY2Y4MTMzNDczZTA0MGU0IHJlbGVhc2UyMi1tYWludAorMzM0OTMgODU5Y2JkN2M5YjQ4MTQwZjI1OTdkODJmNzAwNzZkYTA3YjQyYjZiYSBsZWdhY3ktdHJ1bmsKKzMzNDk0IDFkYzE1ODY1MmU1YjM3M2E0MmZmZTVhNjY2MThlYzgwNzA5OWVmNGIgbGVnYWN5LXRydW5rCiszMzQ5NSBlMWE2YmY0NTY1Y2RlNGU0N2ZjNmIyMTYxZmQ3MDY3NTJmYTIzNmYwIGxlZ2FjeS10cnVuaworMzM0OTYgNDU2OTEyYWRhNjlmZjkxZGZjZDFiZjljNmFmYjUyNWI5ODUwNWM0MCBsZWdhY3ktdHJ1bmsKKzMzNDk3IGJhNWYwYjgwODE5MjdiNDYyMjg5MGY0NDk2YjZkNzFjODljNTQxNTggbGVnYWN5LXRydW5rCiszMzQ5OCAzN2JjMjNjNmNmNmM5MjIxMmU0YmZhNWY0ZDViYmI1ZTYxM2FmNWNlIHJlbGVhc2UyMi1tYWludAorMzM0OTkgYTM3MTA2YWM3YzhjYzAxN2U5MGYwOTFiMjg4OTUzNmM1MzUzMjJlZCBsZWdhY3ktdHJ1bmsKKzMzNTAwIGU2ZWRiMDQwYTc3ZDRhY2U5ODExNjJmMjQ4ODViYTQ2ZWU0MGQyNjQgcmVsZWFzZTIyLW1haW50CiszMzUwMSAyZWMyZjYyMDg3Y2I4ZWJiYzIyNGRiZDdmYjljNzMzNWY4NmUyMDRiIGxlZ2FjeS10cnVuaworMzM1MDIgNWU4MWQ5MmJmNjdkYjAwNmY0YTY2NjdmZDM2NjgwZGNlN2UxNThiZCBsZWdhY3ktdHJ1bmsKKzMzNTAzIDA5ZGE5ZTU2NTU1ZDgwY2MyZTU4YTEzMjc2MDU2YTg3NWQyZDNkMTkgbGVnYWN5LXRydW5rCiszMzUwNCA0MDI5YTcyNmZhYTY1NTAzNjgyZmU4ZmJmMmMyNWRmZTkxZTFlOTE2IGxlZ2FjeS10cnVuaworMzM1MDUgOTJmMWVlYWViNDFkNzUxOTMyNzMxZDFlNTlmZmM0MmVlODc4MDVkZCBsZWdhY3ktdHJ1bmsKKzMzNTA2IGI5ODI3YzA1NDYwZjM4ZjhjMTlhMjI4ZDY0MDJiY2NmMmViNDk4Y2UgbGVnYWN5LXRydW5rCiszMzUwNyBkNDVkMzE3ZmRhMzUxYWRiNTQ2ZTRhZTcxYmJhYWVlMGJiNWRjN2EyIGxlZ2FjeS10cnVuaworMzM1MDggNzc4YjIxNTIwZGI4Yjk0ZWFmMTljMjcxOTFmZjFmYWRhOWZiNWRlZCBsZWdhY3ktdHJ1bmsKKzMzNTA5IDhkNDVhNGNlYTkzNDM3ZTdjNTQxNDRkYjFiYTA4ZDRkMmUxZDdiZjMgbGVnYWN5LXRydW5rCiszMzUxMCBlNTdhOWJiZWVjNWIyNzdjZGYxZDAyNmMxNGNjZTg0MTk4ZWIzM2MyIGxlZ2FjeS10cnVuaworMzM1MTEgNjQxOTRlNzc1YjBiYzI4YzI3NTBlMDY3YWE3ZWY0NGU2MGU2NjI1YSBsZWdhY3ktdHJ1bmsKKzMzNTEyIGZlNzlhNWFiMzkyYjg1OTA1YTgzODRiM2FkOGQwMmJiOWQxNmRkMWYgbGVnYWN5LXRydW5rCiszMzUxMyAyZDViZWNkOTAwZWViNTY2NmEyODcwZjM5ZDFmOTcxNDg0NmRlNGEzIHJlbGVhc2UyMi1tYWludAorMzM1MTQgMDZjY2EzMjdiYWNkZmFiNzU1MmIxMGIzYmQ3MGY5ZTAyY2FjYzc3NyBsZWdhY3ktdHJ1bmsKKzMzNTE1IGRkOGNhMDgzZWE2Njc4ODAyNDE3NTU5ZDE3YTM5YzJmYTNhMTcwNWYgbGVnYWN5LXRydW5rCiszMzUxNiAwMTRjYzM2MmFhOTEyMzYwYWJhNmM5Njk2N2M2MzdkN2RiYTExNGI1IGxlZ2FjeS10cnVuaworMzM1MTcgZTY4Njc2NTIzNjc3NGM1M2M1NmY4ODkwZTI0ZDg1ZjkxODUyM2NkZiBsZWdhY3ktdHJ1bmsKKzMzNTE4IDdmYmEzM2ZmMjEzNThhMzA1YmM4ZmQyMDEwYTZhYTJlOWJjY2VmMTUgcmVsZWFzZTIyLW1haW50CiszMzUxOSBiODVmOGJiNWMzNzU0YzY4YTcxMTZlMWQzYzFkMTYxYWFlNzg0N2RiIHJlbGVhc2UyMi1tYWludAorMzM1MjAgNTdhZGY4MjdkNGM3YWQ2NDc0MWNiNDFmOGJjN2E1ZTQyODg2NzlhMyBsZWdhY3ktdHJ1bmsKKzMzNTIxIDJiYjUyM2FkOWI3NjViODk2YmVlMzZmYzdkZjk4MDIxMzcyOThlMmQgbGVnYWN5LXRydW5rCiszMzUyMiA3MDUyYzNlNWFmMDI2ZmJmYWViZmM3MjUzZGE4OWRkZTUzNjE3NmJiIGxlZ2FjeS10cnVuaworMzM1MjMgNDJlODI2M2QzOWFjNjYxZjc1NWJmOTM4MzNlODhiOGNjY2ZkYzdlYiBsZWdhY3ktdHJ1bmsKKzMzNTI0IDQ1ZGMzMzQzMzMyMzU2ZGQzOThlMTdlOTQ2ZGJhZTFkMTI0MDI4MzcgbGVnYWN5LXRydW5rCiszMzUyNSBjZGFiMjVkMmY4NDI5MmU4YjlmZGZjNTBhMTU3OGMxYzg0Yjk0YzQ5IGxlZ2FjeS10cnVuaworMzM1MjYgODQ4MzU4NDZlZWFiMTE0ZDE5ZDMwODMzY2Y0NDIxZTEyOGIxOTlkZSBsZWdhY3ktdHJ1bmsKKzMzNTI3IDljNTdlYjUzMzdiNzIxODA0ZjQ4NzAxOTk4NWMwMGVjN2U0NTYyMmEgbGVnYWN5LXRydW5rCiszMzUyOCA4ZWIxY2FlMWE3N2JkOTU3YmE2MWZmMDliNDMwMWQ3NDMxYjhjY2E5IGxlZ2FjeS10cnVuaworMzM1MjkgNDIxZDgwNWMxMWYzM2UzMzI0OWI0OTU1ODk4YTkwMTE1ODRhNmMzNyBsZWdhY3ktdHJ1bmsKKzMzNTMwIGJmMDBiNTZjMTRhOTgyZWIxMWQ0MzViNzk4M2FiMWRkZDc3MzE3OWYgbGVnYWN5LXRydW5rCiszMzUzMSA1Nzc3YzgzNGY1NWNlOTJjNGI1N2VmY2IxZjhiODJhZTczMjM0YWNjIHJlbGVhc2UyMi1tYWludAorMzM1MzIgNTZjMDFjNDUwOTJjMDkyODJkNDJlNWVhYTNlYmM1MDI3MmU2OGU2NiBsZWdhY3ktdHJ1bmsKKzMzNTMzIGNkMGJjYWEwYmQ4MWZlNDAxNWI0MTViOWYxODM4ZmYwYzk2ZGM1NzYgbGVnYWN5LXRydW5rCiszMzUzNCAxYmFlNzhjODNiZTk0YmVjMjYxYjg4MzFhZTkxMjBiZjIxNTliMDhlIGxlZ2FjeS10cnVuaworMzM1MzUgMWMzYjgxNTg3NjBjM2QwMjNlMTAxZDJjNzFmMWZjMTA5Yzk3NTE2NyBsZWdhY3ktdHJ1bmsKKzMzNTM2IGYzMzlmMjliMDZjYmI3OTI1MjVkZWZkZjkzNTIxMzdmYWIzZGZkMmQgbGVnYWN5LXRydW5rCiszMzUzNyA5OGM1OWJiZGQ4ZWM0Nzk0MmYyOWZmZTdjYWFkNmQ3ZDNmOTY4MjQ0IGxlZ2FjeS10cnVuaworMzM1MzggODRiY2NiZWFiNWZhYzU4MTJmMTg1ZjNjZTlmN2ZmN2VlZmM3NGFhMyBsZWdhY3ktdHJ1bmsKKzMzNTM5IGI3NjYxNTJjNzkwNDVjNWM5Yjg1MzllMzQ4Y2FkNDY5MjgxOWMxMGMgbGVnYWN5LXRydW5rCiszMzU0MCBiNDRlYjUxOTMxZDBmMTM0NDU5NzRiMDljMWEyYjQzODhhYTk5OWJiIHJlbGVhc2UyMi1tYWludAorMzM1NDEgMTk5Y2Q3OGQ2ZDc4ZDM2YTZlZjBmYmEyMzJjN2JlYTgzZjQxNGFkZiBsZWdhY3ktdHJ1bmsKKzMzNTQyIDYwNGQ5MzgyM2VjMWQwMTI4OTcwMTI1ZWRkODk0ZDg4MTNiZmFmNWUgbGVnYWN5LXRydW5rCiszMzU0MyAzNDQyZTdjZGFjZTg2ZTM5YzY1OWQ3ZGVkOWU0NDc5ZTMyODkyZDA0IGxlZ2FjeS10cnVuaworMzM1NDQgMDMwMjI3ZGU4MDUxOGFhYzdhZWE5ZDU4NTQyYzAzZDVhNzdmMTI4NCBsZWdhY3ktdHJ1bmsKKzMzNTQ1IDk1NDcxN2U2ZmRiNTBiNDVkYjg3ZDFjZWIxZTQzMWY3YzUwNDI4ZjggbGVnYWN5LXRydW5rCiszMzU0NiAxYTQyYjEyOGM1ODE0YThhZjM4OWJlY2Q3MDVkZjVlMjE3ZDg2ZjcwIGxlZ2FjeS10cnVuaworMzM1NDcgZmVlMTc3NmU2MWM3MDU2MTE0YTk3MDMzMzJkYmRlN2Q2YTZhYjU1ZiBsZWdhY3ktdHJ1bmsKKzMzNTQ4IDQ3NTAxMTg0YjU0MzVmN2UwNjAxMmIwYjAxOTc2N2I5NjgwMDJmNDAgbGVnYWN5LXRydW5rCiszMzU0OSA2MmYzMDYzYTFhMGY4NzZiYjc2MmY3OTE5ZDUxNDFiNzYwMDNlZjMzIGxlZ2FjeS10cnVuaworMzM1NTAgYTBhNzIzMWM2ZmUwZTM0ZjRjMzAzMGI0YWNmMWJlNjlmZjg3NTAzNSBsZWdhY3ktdHJ1bmsKKzMzNTUxIDcyY2JjNDFjY2MyZjM4MGUzNjUyYWM3NTBmNzdlZGQxNjFmYjExMjQgbGVnYWN5LXRydW5rCiszMzU1MiAyYzUxOTRiYWE5OTQ0ZjlhYzVlNGIwNGM1ZDdlN2Y5YjY3MmRjZWEwIGxlZ2FjeS10cnVuaworMzM1NTMgZWQ4NzA5YjFhM2VmYjEzYTdjYzRmNjY0NzVmODYyOGU2NzZjNmZjZSBsZWdhY3ktdHJ1bmsKKzMzNTU0IDNmMjE0YjM5YjRkZjk1NDk3ZjQxMTM2MTYwMTAxY2NlYmExM2RkNGEgbGVnYWN5LXRydW5rCiszMzU1NSAxOTUxMWE0OTBlN2MwNTExMzUxNTA5N2QzYmMxZGQyNTI0MGJjN2FhIGxlZ2FjeS10cnVuaworMzM1NTYgOTJhNWZlNTc4MzgwMzhmZGEwZTZmNzlmZjlkYzVkZTMwZmVmN2JjYiBsZWdhY3ktdHJ1bmsKKzMzNTU3IGQzN2QxNTkwZTFhN2QxYTFmOTFkNmYzOGNmYjlkYTI4NWZlMDVjYjggbGVnYWN5LXRydW5rCiszMzU1OCA4OGI5M2UwN2ExZjgwYWY3YzI1OGI5ZmE4OTUwMmEwNzI3Mjc4NWI2IGxlZ2FjeS10cnVuaworMzM1NTkgZjg5ZDU0NTUwNWM3MTU0NTRiYzg1OTViMWZkZmM2OTBmMjkyOTc1NiBsZWdhY3ktdHJ1bmsKKzMzNTYwIGI2OGZiNGE0M2QwZmVjZGI5NGRmZWE0ZjM0ZmQ0YTg0MGE3NDY4NzkgbGVnYWN5LXRydW5rCiszMzU2MSAyMmJjYTI4MjM2ODU2ODYxYjBlOWUyZWFlNzA2Y2ZmZGY4Mjc5NmFiIGxlZ2FjeS10cnVuaworMzM1NjIgNGUwNWM1NTUxNGUxZDYzMTYxZjM1N2UwNDc5MjFlZGVlOTM3NTk3YyBsZWdhY3ktdHJ1bmsKKzMzNTYzIGUyYjQwMzEyNzU3ZWUxMWZmMDJiMjlkYTkxMWIwMmJkYzA2ODhjZjYgbGVnYWN5LXRydW5rCiszMzU2NCBkYTdlYWU0NGY0ODdiNGJjYTI5NWJjNGQ0ZDBiMzdiNTZiNTk4YTFjIGxlZ2FjeS10cnVuaworMzM1NjUgOWNhMjkxODY1ZjljMWYyYTAyN2UyZmQ1NTk1MWVjMzQ2YjU0OGM3OCBsZWdhY3ktdHJ1bmsKKzMzNTY2IDc5ZWM3ZTMwMmQ1MzU3NzZiNjlkMGY1MDZlYjg2OTJkYzE3YjEwNzIgbGVnYWN5LXRydW5rCiszMzU2NyBlOWRkZGZkMmE2MmYwY2VhMjVjYzc5MmU1ZWNkYzMyNWI2YTZkZGI1IGxlZ2FjeS10cnVuaworMzM1NjggYWM4NGYxNzliYjg0MTMzOWM5YTJmODZiNWM1MmJhZjY2Y2RhZTA4ZCBsZWdhY3ktdHJ1bmsKKzMzNTY5IDk5NGI2YmU0OGUyODc5YWY2ODY3ZmQxZjJjYjcyMGQwMzY3ZmY4MWYgbGVnYWN5LXRydW5rCiszMzU3MCBiNDdhNzI3NGNlNWMxNTgzOGE1YzZiMDQ5YmI2NWE3NzY1Y2M2YjE2IGxlZ2FjeS10cnVuaworMzM1NzEgZGJhZTA1YzI5ZTkzODU0NGI5ODYyZGM3MzI2NzMxZTI4ODMxYmVmYyBsZWdhY3ktdHJ1bmsKKzMzNTcyIGQxYWE1NzUxZmJjZmRiYTNjMWZlYWQ5MGNiYjFjZTM5YzBiZjI4MTMgbGVnYWN5LXRydW5rCiszMzU3MyA0MzRiNmNkYTRmYTVhZjcwMTdjYjZjNTA5YTU5ZWY3NmNlYWJiYjk1IGxlZ2FjeS10cnVuaworMzM1NzQgOWRlYWMxYWE0MjFkYjY5ZmE1NWU0Mzg3ZWU2NGVjYWMzZjJlZGZmNiBsZWdhY3ktdHJ1bmsKKzMzNTc1IGEyMzEwNmRmYzk0ZDNlYmY2ZmRjMzdmNmNjNjNlMjg1NDQ1YjcwMGQgbGVnYWN5LXRydW5rCiszMzU3NiA5ZjYwYzNlZTk4NWEyYWUxMGZlZDljYjk3ZGY1YzE0OGEwN2VkZjRmIGxlZ2FjeS10cnVuaworMzM1NzcgODBlZDRkOTdmMWJhZWEwZGU5OTU4ZGY3YTFiOTZmMWRkODhjOTRiOCBsZWdhY3ktdHJ1bmsKKzMzNTc4IDcxNjM5NWMxOTU4NmUyYTEwNjY5MmMyNTkyNzhkYTdkMTFlYjE0NmMgbGVnYWN5LXRydW5rCiszMzU3OSA4YjE1NWU0YTEwYTI1ZDJiODcxNjEwNzBhNzRiMTVlODMyNWNiY2FiIGxlZ2FjeS10cnVuaworMzM1ODAgMWUyZTFjNzkzMTZlMTJmYmQ1ZmFjNDBiZjFhMzdjZjE2NjM2YjU3YiBsZWdhY3ktdHJ1bmsKKzMzNTgxIDVhOTQ0YWM4NTI1YzFmNjFkNWRhYTNmZWVjYzkwNTA5MWJkYjdlOGYgbGVnYWN5LXRydW5rCiszMzU4MiA0NTFiN2U4MzkzZmM0MWViMTQzZmVhMjM0OWYxZDM4NDIyNWM2NTkzIGxlZ2FjeS10cnVuaworMzM1ODMgZDU5ZTU4YmFjMzkyMzc1MGIxNDNkOTI0NTdhOTkwYzkxYjAxOWI0YSBsZWdhY3ktdHJ1bmsKKzMzNTg0IDBlMjIxNWI4MjI2ZDJhZTNhYmE2M2YwN2E4NjJkMTFkYmI5OGQ5ZDUgbGVnYWN5LXRydW5rCiszMzU4NSA0ZTYxM2RkZjJhMWJkMTY1NmM0ZWY3NGRkYmIyYTEwY2QyMzUzMDYxIGxlZ2FjeS10cnVuaworMzM1ODYgNDE2ZDk0NThlZTk3Y2IzZjJlM2ExYzMwNDM2Mzg1NGMzOTU4OWI4YSBsZWdhY3ktdHJ1bmsKKzMzNTg3IDUyNzYwNzUxYzYxZWU3MmNlOTBhMWZlMzhjODliMTFiNjAwYmYzMWIgbGVnYWN5LXRydW5rCiszMzU4OCBmNzczYjU2OGIyZTczZDgyOWVhMTkyYzIxMDM1NTkyN2IyNjJmNmI2IGxlZ2FjeS10cnVuaworMzM1ODkgZmNmNjY4MGI2YTZmYjc3MWM4YjU5OGFjYWM2ODU2NzE5OWYzY2M5OSBsZWdhY3ktdHJ1bmsKKzMzNTkwIGRmOWVhNzQ5NDA5YTNlZTQ1M2M0ZjcxMzQ1MGQzNzM0NTMzZDI1MTEgbGVnYWN5LXRydW5rCiszMzU5MSA1NjRhNDllZWE0MTRlMTAwOTMxNjk0NmFlZmMyOTI0MTRkZGEwZjY4IGxlZ2FjeS10cnVuaworMzM1OTIgZWM5ZjE4NjE1NDg1NmE5MGFmNTkwNDRmYmVjYTI5MDcwOGRjMTM5NyBsZWdhY3ktdHJ1bmsKKzMzNTkzIDdiMTZjZjcwZWJkODllNDI0ZDVhMjQyY2JlOWU4YzM1MmYyODJhYWYgbGVnYWN5LXRydW5rCiszMzU5NCAwYjM0MjJiNjIxMTkxMTk2YzMzZTc2YTc2YmRjMjliOThmNDlhMGMyIGxlZ2FjeS10cnVuaworMzM1OTUgMmE0MGNhMDZhMjJjODhkOTJmNzcxNWJkYzA4MmY5YWY3ODQyMzA4MCBsZWdhY3ktdHJ1bmsKKzMzNTk2IDk2YmFiN2M4MmUyY2ZjOTZjMTAwNjkwMzkwNDQyYjhhMDllNjYyOGEgbGVnYWN5LXRydW5rCiszMzU5NyBjODZiMTM1NGFjNmY2Zjc0ZGEzMDBhYzhkOGM1M2NmMDRlNjhkY2U0IGxlZ2FjeS10cnVuaworMzM1OTggMWJjMjU1OTIyOWRiMWRmZjM3OWU2ODY2MDIwYzFlNjg1M2ZmYmRlMCBsZWdhY3ktdHJ1bmsKKzMzNTk5IDdmZDIwYWU0NDE0MmYwYzlkZjA1YWYwMzJkN2RmMDQ5Y2U3NWJiMGMgbGVnYWN5LXRydW5rCiszMzYwMCA4ZGVjMGZiMTQyODU0ZjM2YjVkMjJjZWMyNjBjZjE3MzQzM2JhODM2IGxlZ2FjeS10cnVuaworMzM2MDEgYTczYzI4ZGVlZjZkZmZlNzM0OTM2MDVmYWYwYjU3NWIyZTM3MWUyZiBsZWdhY3ktdHJ1bmsKKzMzNjAyIDg2YzQ3NmE0MjVhN2RjNTI3MzZiMjg4YjYzZTk4NmZhYzg0MTE3MjIgbGVnYWN5LXRydW5rCiszMzYwMyAwOGQyNjM2YjhlNTg0NDNkMTc1MGY2NzhhOGQxZWI2ODhkNDhhNTQ2IGxlZ2FjeS10cnVuaworMzM2MDQgMjU4MDBhNzI0MDExZmIyNTQ0NTYzYTM1NmE2ZTgxYWNjOGU2YjI0MCBsZWdhY3ktdHJ1bmsKKzMzNjA1IGNmYWQ1NDI4M2UwMDA0NzY0MTI0NDUyZDAxODQxMjA3NmQ2OTUxODMgbGVnYWN5LXRydW5rCiszMzYwNiA3MjJkN2M3YTc3ZTJiNDdmM2FhODk1OWQ2Y2E4Mjc4NmIyOWY1NmYxIGxlZ2FjeS10cnVuaworMzM2MDcgNjBlM2QyOTlmYzg2NzhmNDQyNjE2ODAwNjVlZjJiOWViOTE1ZDVjYSBsZWdhY3ktdHJ1bmsKKzMzNjA4IGJiOGNjNzI5MTVmNTY4OTJjM2I1MzEzM2RhZjA3YWYxOTE1YzZiMjkgbGVnYWN5LXRydW5rCiszMzYwOSBlZTdlMjIzZGJjYWNmMDY5Y2I3N2U1MGE1NmQ4MzkxYWRiZjc2NzE5IGxlZ2FjeS10cnVuaworMzM2MTAgYjg0NjQ1YzMxOTVlNDg0ZDY3MjZjYTViOTc1OTE0NWE2NDdkMTc1NiBsZWdhY3ktdHJ1bmsKKzMzNjExIDRkNDQxN2RmNjNmNGU4MDhiZjMyMDk1M2E4ZDRmMzVmNzY4NjAxYWQgbGVnYWN5LXRydW5rCiszMzYxMiAwMzE1M2ZkMmQzZjIxNGMxYTdhMDJjMjA3OTE0MTIwYmNlNTY0ZmVhIHJlbGVhc2UyMi1tYWludAorMzM2MTMgNjI4ZGNmOTBiZjllMmUyMDFkMjJjMzZkYWJmODU2YTQ5M2FiNDk3MyBsZWdhY3ktdHJ1bmsKKzMzNjE0IDQwN2MwZGVjMmY0YWRjOTJjNjFlYTgyNDQwNzVhOGNiMWU2MDcxNjAgbGVnYWN5LXRydW5rCiszMzYxNSAyOWE2M2M1Y2ZiYWZiOTQ0MTViMmU4YWY4NGQwMTQ5OWFlNDk3ZDY4IGxlZ2FjeS10cnVuaworMzM2MTYgZGEwYzkwYzZhZmQwMWZjYjZmZjhiNzNhZmRhNThkYjg5NGVmMTJlMSBsZWdhY3ktdHJ1bmsKKzMzNjE3IDkwMTNkM2MxZDY1NTA2NGM4MDBhNzk2MzU3ZmRlYzcwYjJkMzY1MDAgbGVnYWN5LXRydW5rCiszMzYxNyBkMDU0YzI5NjQ3ZjkwYmNjYjgzNDViZDc3OWJjYTFlZWNmMmRkN2YyIGxlZ2FjeS10cnVuaworMzM2MjAgOGEyOTM0NDk4MjlkN2JhZDA4MmJlOGIwNWJjNmQ2N2ZkNDFkYWE0NyBsZWdhY3ktdHJ1bmsKKzMzNjIxIGRhMzU5Mjk2MmE3YWYwNzk5NzliYjQwYjI5YWI2YjVkNzhkOWUzNzQgbGVnYWN5LXRydW5rCiszMzYyMiAxMDhhYTk2NDg1NzMyMTA1OGE0MmZmNjYyMjgxMzliOWRiODJmNjVmIGxlZ2FjeS10cnVuaworMzM2MjMgOWE2ZjViMzdlODFkMmQ5YTgyNTFkM2I4M2IyZDIwNzQxM2VhMDQ1YSBsZWdhY3ktdHJ1bmsKKzMzNjI0IGNlOGIxMzhmNDQ3M2FkYWRkMGI2YTE2NGQ1MmE0MDMwNmEyZTUxMzcgcjIzYzEtYnJhbmNoCiszMzYyNSAzMzdkNDQwMTA5MDczNzhlNGZkYjc4YTRiNjU2MTk5ZmQ2NjE5NGY2IHIyM2MxLWJyYW5jaAorMzM2MjYgYWQwOTY4N2FhYWEwYTc1NTI2ODVmMjc0ZmM2MDNkYTBkYmZlN2EyNCBsZWdhY3ktdHJ1bmsKKzMzNjI3IDJiOGE1NjRlMWZkM2QwMjZhMTI0Njg2MDk4NjMyMmJiYmUxMGUxYjggbGVnYWN5LXRydW5rCiszMzYyOCBhOWM4OTk3MzlmNDgyMmJiNmQ4YjlhOWIyNjhkYzM2NGFlNTM5YTY0IGxlZ2FjeS10cnVuaworMzM2MjkgMWNiYzZiNzgzNmRjYjhhNmYxOWUyMmJjYzU5MTFhNDU4Nzc0MTRkNSBsZWdhY3ktdHJ1bmsKKzMzNjMwIDMyMjVmMWQ0Mjg4MzVhMjc1NWE2NTRlODcwNmY1MWJmZGEwMTZkNGQgcjIzYzEtYnJhbmNoCiszMzYzMSAyYzQ4M2Y3YmVhNGJjZjg2NzE1NDcyMzQyODFmNjM4ZmJhZGQ1MTAwIGxlZ2FjeS10cnVuaworMzM2MzIgYmFmMjI0MTA3MGJmZDcxN2EyMzZjMzMxZjdlNDJjZDA4M2Y1YzQ4NyBsZWdhY3ktdHJ1bmsKKzMzNjMzIDA5YzQ1OTg1MTI2NDE0NmViMzI3Yzg2YmE3NGRjNWRjZDQ5OTkyZDIgbGVnYWN5LXRydW5rCiszMzYzNCA1ZmFlZTdjZGM1YWFiMjQ3NjZiOTdjYmViM2ExNzJkYWQwYTFkOTA3IGxlZ2FjeS10cnVuaworMzM2MzUgY2VhN2Y4YWY4ZTBiYjgyZTRkOWE5NGJlMzQyY2EzYTA0OTM2ZTU0NiBsZWdhY3ktdHJ1bmsKKzMzNjM2IDRiZmNmZWQ2NGVjYjk2OGM5ODI4NWRiYWNhODYzMGIzOWIyODc3MGUgbGVnYWN5LXRydW5rCiszMzYzNyA0YzE0M2NlZWY0MTljNjcyZDBjMDI2OGMwM2QzN2IyNjNmNzFkZDI2IGxlZ2FjeS10cnVuaworMzM2MzggYTU1MGFmNzExYWJhNGEyMmI0NmFmMzE3OGZiYjQzYmFmY2ZlOTEwNiBsZWdhY3ktdHJ1bmsKKzMzNjM5IDk1MGIyNTAwYTE0MjIyMTRhY2QzYzA1NTAwNTA2YWY5MTZiNzk2NDcgbGVnYWN5LXRydW5rCiszMzY0MCA2NjhkZDMzNmUzMDZmMTViYjhlMGE4YWJjY2UyZjIwMGI1OGYwYWE2IGxlZ2FjeS10cnVuaworMzM2NDEgYzQyYTczMTdjODg3YWJiN2I5ZjM4NjAxMjMyMTE3MGUzM2Q4ZTlkNCBsZWdhY3ktdHJ1bmsKKzMzNjQyIDMxN2YxZWUyNGYxODQ5Yjc4ZTcwYzc0NDVkYjliOWFkN2ViNDlhYjAgbGVnYWN5LXRydW5rCiszMzY0MyA0Y2YyYmZmZmE1NjQxMGY4ZTgyMTAxMjAyY2JlOWMyZjYzNTRkZWE0IGxlZ2FjeS10cnVuaworMzM2NDQgZmU0OTliYzczODFmYjkwM2JmZGZlZWUzMmFkNjRkZDU5NzAxOTk1NyBsZWdhY3ktdHJ1bmsKKzMzNjQ1IGE0YWJlMTdhNWZlYjkxZjQ2MjI0ZThhOTY4YWQ1MGEzNzQ3YmRkYTggbGVnYWN5LXRydW5rCiszMzY0NiAxM2M3NWZhNzgwYzhjMjIyMjIyNWE1MGQyMjI3NGJmZmFlYjAzNDliIGxlZ2FjeS10cnVuaworMzM2NDcgMzAzZjVmZGExYTI4NDBiYTAyZjg5OTcyZGFiZTJjZTJkMjdkYWRlOCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NDggYTc3YWFhYjAxNDZkZTY5NmU2ZDY2ZTk5M2I1YzY0ZWM1OWE1ZGRmNCBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NDkgNWFkZGNjYTNmNDMzMzQ4MmZhZTM0NGZmNDhhZGQ1ZmFiZGQyN2JmOSBsZWdhY3ktdHJ1bmsKKzMzNjUwIGUzMzlhZDI1MGFmMGY0MWZjMzRiOGE2NGNkOWI4MzU2ZTEwMThhMDAgbGVnYWN5LXRydW5rCiszMzY1MSA4MmVlMWZhZTM4MTk0YjgxMDk5MDcyMzcwN2JiZWY1MWFjOTlmMzZlIGxlZ2FjeS10cnVuaworMzM2NTIgYTQwOGFjNTUyN2MzNDU3ODcyOGY1ZjMxMzA4MGM5N2UzMzIxZDJjOCBsZWdhY3ktdHJ1bmsKKzMzNjUzIGI5ZDBhMGVlMjIwNmE3MmE5YTk1NzcwM2Q2ZGZkNjk3MDI5YzdmODggbGVnYWN5LXRydW5rCiszMzY1NCBkMzdmMTMxOTlkOTUyOTdiNDExMTQ2ZDM2NzcyYTI5YWI5MTQ1YWFiIGxlZ2FjeS10cnVuaworMzM2NTUgNjE0OWYwYTBiOGY1ODQyMjI4OTdiNjFkMzViOWQyOThiYzA3ZDE5ZiBhc3QtYnJhbmNoCiszMzY1NiAyMWVkY2UwOTEwNjlmOWFjZDJkY2EyYTg5MTkzYjY0YjA3YWZjNDhjIGxlZ2FjeS10cnVuaworMzM2NTcgMmMxZTczYjJmY2ExMTA3YjcxNzQxMTYwZjllZDE1MmE5YTRlMzEzNiBsZWdhY3ktdHJ1bmsKKzMzNjU4IDExODgwOWIxZWYyMDYxMjliNjIwZGVhMmEzNmM3N2MxYjI2ZTYzNDQgbGVnYWN5LXRydW5rCiszMzY1OSAyNzM5NWM4NDRlMjNiN2FkNDBhYWM1ZmQ4NWI0YTY1NmViZmZiZGZiIGxlZ2FjeS10cnVuaworMzM2NjAgNjU0OWQyZTQwOGYwYzYzYmZjNjZlODQwOTZiMDIwYTU4MjE0OTMwZCBsZWdhY3ktdHJ1bmsKKzMzNjYxIDVhZDQzOTYzMmRlNTRhYzE5ZTNiYmYwYmJmNzM3ZDMxYTA2Y2YzYzIgbGVnYWN5LXRydW5rCiszMzY2MiAxN2NlMTIzNjk0NzdhN2M4NmRjODY3ZmJjMGYyMGI3OTY0NDkyYjAxIGxlZ2FjeS10cnVuaworMzM2NjMgMjExODcwOTc4NTRjOTBlNTIyYjAxNGU4NDk2NTIwYjllZjgxMzQ4MCBsZWdhY3ktdHJ1bmsKKzMzNjY0IDFiZDZlNjJmYjA2Zjc3OTM3Y2RhZjc0ZDZiMjExYzE5ZDhiZWJmYzAgbGVnYWN5LXRydW5rCiszMzY2NSA3YmE0MmM5NjI5NGNjNjkzYzA4NGU5OTYzM2I0YmFhMWM3ZmViYWI0IHJlbGVhc2UyMi1tYWludAorMzM2NjYgZjI3MDhlZjYwMTY5YjE5MmQ5ZTA2NmQzY2Y2YTI2NGZlNGQwMDJlZiBsZWdhY3ktdHJ1bmsKKzMzNjY3IDJkYTA1YjViNWM2NTA1NWEzNjcxNmMzYzcxYTYyNThmOGM3ZDQ1ZTAgbGVnYWN5LXRydW5rCiszMzY2OCAyOWYwN2FkYzMwMTlkMDc1YzliMzJhODUzZGIxNDZkMTRjNmViNGIxIGxlZ2FjeS10cnVuaworMzM2NjkgOGYzMDZkM2Q2ZDU2ZWQ4ZGUzNzQyNmQ0ZDFhYjFkNDM4ODMyYzU2NiByZWxlYXNlMjItbWFpbnQKKzMzNjcwIDAwMDlhMDM4MzIyMjVhNjc1YzkwNTM5MDdhMDEzMzgyOTQyNGZlZTUgcmVsZWFzZTIyLW1haW50CiszMzY3MSBiNTk0OTU5MWQ5ZDU3NGUwNDVlMjFkMDU4MWMyMmNkYWEwMDg0NzA3IHJlbGVhc2UyMi1tYWludAorMzM2NzIgODZlNDcyNWE5ZGJkNGI5NTRkZjhkNDI5ZWY3MjBhOWMyNzFjNWYwOSBpbmRleGluZy1jbGVhbnVwLWJyYW5jaAorMzM2NzMgYjMzYzYwZmNjZTc0ZjlkZjBkMWY2MDE1YjRjZGQ1OTM1ZTEyODMzYyBsZWdhY3ktdHJ1bmsKKzMzNjc0IDM1Y2NmYzE0MGNhYzBjMmYzY2FkOWViNjgxM2FhNDc2OWFiYzhjMWMgbGVnYWN5LXRydW5rCiszMzY3NSA3MzBhYmZjZjI2MTBlOWM3MWNiMDA1NWIyOWJlNjM0MWMyZjU1MWIyIGxlZ2FjeS10cnVuaworMzM2NzYgNjczYmNlZDk5MTgwZmQ1YWM3NTI1NGU5YTI2OWUwYjI2Y2RmODc1NSBsZWdhY3ktdHJ1bmsKKzMzNjc3IGFhNDRlMDY4ODg5NmEwNDUzODUyOThhM2ZhNTgwYzdmOWQxZThkZDEgbGVnYWN5LXRydW5rCiszMzY3OCAwMmU1YjRiNjdhNjYzMDNjNDlhOTdkOTZhZjBhOGM2OTZiZDNiZmE1IGxlZ2FjeS10cnVuaworMzM2NzkgMDk1NDY5YzdhYmU3MjcwMjAwMmNiYzNlYmJmYTQ3OTJlNzVjOTI3YyBsZWdhY3ktdHJ1bmsKKzMzNjc5IGZjZTVjOWU5YWJjNzIyMzk0Y2IyZTkwOWI3ZTJhMzkwODBkNDQ0OGUgbGVnYWN5LXRydW5rCiszMzY4MSBlMWJiMTI2MmYwYmMxNDYyM2Q2NDZiMDBjYjU0NzViZDAxOTg4MTAwIGluZGV4aW5nLWNsZWFudXAtYnJhbmNoCiszMzY4MiA4M2UwNmZlMTI0YTE5M2E1MzRlNDQ4ODk5YjViNTk3NTU1MDRlNGRkIGxlZ2FjeS10cnVuaworMzM2ODMgNTNiNzYwYjAyN2I3NzEyYjA2N2QyNGViYzAzZDUxN2VkZjgxMGNhZSBhc3QtYnJhbmNoCiszMzY4NCA5NmZhOGYwYjllZWJhN2ZjZDJhZjA1MWM5NGJmN2EyNGU4ODVkY2IwIGFzdC1icmFuY2gKKzMzNjg1IGNmYmI3YjgyNjkyZDcwZjA5NzFlMzdkZjU3NTA3ZTMwMDUyNzNhODkgYXN0LWJyYW5jaAorMzM2ODYgZjgyZWIxNjA0NDBiZGE0OWVjMjI4OTRmZjdjNTkyOTZlODFlYzhlMCBsZWdhY3ktdHJ1bmsKKzMzNjg3IDUyZGQ1NDhkM2JlOWE5N2FkNzc5YmIxNjUxY2JhNGM0MTY2NjQyZDYgbGVnYWN5LXRydW5rCiszMzY4OCAzYWRkYTgxYTBlMGJkMDUyNGE3Y2JiMWE0OTM5OTQ5Yjc4ZGY5NDNmIGxlZ2FjeS10cnVuaworMzM2ODkgMzVkZWExMGRjZGM0NWU4NWMxYWU0OTcyMmY3YjI1NTQ1YTAxN2MwMCBsZWdhY3ktdHJ1bmsKKzMzNjkwIDFmYmFhMDViMzVjMWJmMGVjMTViNTllMTE2NGExZjRjYmZjZDRmNjAgcmVsZWFzZTIyLW1haW50CiszMzY5MSA4Y2Q5NGQxMTdmODc3ODkyN2M0NGIyOWFlZmEwZmUxZGI0NDgyYzlhIGxlZ2FjeS10cnVuaworMzM2OTIgMzdjY2YxYmM1NGUwNDRmYmRjNmIyNDQ1YmU1OTkwMWJiOGQ0YTg2MCBsZWdhY3ktdHJ1bmsKKzMzNjkzIDE1ZmM4M2M1MDVlMzE0OTcwMjZiMGE5ZjU3NmYwNzhhZjQ5Y2RlODcgbGVnYWN5LXRydW5rCiszMzY5NCBjZmE5ZjA0OWMyMDRjNjhhYTJmMjIyNGRjNDg5OTA5OWU3MzE5MDRiIGxlZ2FjeS10cnVuaworMzM2OTUgNGI1NzAyMzA2YzU4MWIzZWY2YmNkYmRjZWVhNWU4OWZmN2JkYWY0MiBsZWdhY3ktdHJ1bmsKKzMzNjk2IGVmYTFiYjY1NmIyYjZlNTE5YTcyM2JjNTYyODQ1ZDEwMTlhNGM5MzggbGVnYWN5LXRydW5rCiszMzY5NyBhMTMxNTJiMjVmZThkZjkzZDBhMTYxZmM1M2RlNjM0M2Q5Y2Q2ZWRjIGxlZ2FjeS10cnVuaworMzM2OTggZGU3ZDlhMmI1ZmFjMzA4MzI0MDZmZWNkODBjZjI2OWEzN2UzODU4YyBsZWdhY3ktdHJ1bmsKKzMzNjk5IGVlOGJhY2M2ZjA2OGQ2MTc0YjNiYzMwNjgzMjRkYTA5ZWIzMjUzZTkgbGVnYWN5LXRydW5rCiszMzcwMCAyOTA5NDAxNjM5N2Q2MjYwZDRlZjk0ZDYxMWQ4Zjc4YWRhZmUwYzI4IGxlZ2FjeS10cnVuaworMzM3MDEgNjc0Y2Y1YTI0MTQ3ZWJiNjgzM2NhMjc1ZDMzMzlmNjNkMGVmMWIzNyBsZWdhY3ktdHJ1bmsKKzMzNzAyIDEyYTdmMjE1NjQ4MTU0MTdjZDhjNjRiMGU4MGE0MWFjNmRjNDBkM2YgcmVsZWFzZTIyLW1haW50CiszMzcwMyA3NGE1Y2U0OWE5MmZjODMyYWQ0NDA1ODA4MzQyYzQwZjk3ZDZkZjBmIHJlbGVhc2UyMi1tYWludAorMzM3MDQgMGQ3OWRjODU0YWM0NjkwZWQ0MTVjODBjNTgyYTE3YWE0ZTM1OTgwMiBsZWdhY3ktdHJ1bmsKKzMzNzA1IGE2MjE1M2Q5YzhkNjUxNzI1MWRkYTdhYTJmYjlhMDU3Njk3NmI0MzIgcmVsZWFzZTIzLWJyYW5jaAorMzM3MDcgMjFiODEzOTliNjI4NDIwYTY4Yzg2Yjk4MDI1YmNiZTY3YzU3NTEwZiByZWxlYXNlMjMtYnJhbmNoCiszMzcwOCBhNTIwMzYxNGNhYTk2ZDZiOWNjMmU0ZTMxZjFlOTUwMjBkZDc1NGQyIHJlbGVhc2UyMy1icmFuY2gKKzMzNzA4IDE4ZWRjN2Q1N2RmZmI1NmJlODM3NGYzNWU0N2YzOTMyOWY1ZTlkMzEgcmVsZWFzZTIzLWJyYW5jaAorMzM3MTAgZWNkODU3MzIwNGNkMjRiMWZmMWY4NGI3N2RhODIxMGI4NWY0NTgxNiByZWxlYXNlMjMtYnJhbmNoCiszMzcxMSA0M2IwYTQwNGQ0YTAxY2MxNzk4ZTQxMzU1ODU1OWZlZTgwYWEyZmUxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzEyIGMzZTY5ZjM3NmYyOWIxOTExNDM0MTRlMmVkMDI5OTA0YjM3OWRlYzYgbGVnYWN5LXRydW5rCiszMzcxMyAzZmU4MmQ1N2QwZDE3ZjFkOGQzOTVlYjUyYjAwNDM4MWEzMzk1NmZmIGxlZ2FjeS10cnVuaworMzM3MTQgMWQ2M2UxNTM5ODlmMDM1NDZhZThiMmFkMGQ3MGIyZDNiN2JiMzI0NyBsZWdhY3ktdHJ1bmsKKzMzNzE1IGI3ZTJkNzM4MGNiMjA5N2M3MWE0YWUyYzA4ZmU2Yzc2MWVhNjMyY2QgbGVnYWN5LXRydW5rCiszMzcxNiA3MDJhYTZlYjExZjliM2QwZDM3ZTRlZjRiOGUxMmEzMzc4MzdlODcyIGxlZ2FjeS10cnVuaworMzM3MTkgYjgyZWEwYjA3YjBhYjhiNWI0MzcyZDQ3ZDkyMzhlZTFmZjhlNTZjMiByZWxlYXNlMjMtYnJhbmNoCiszMzcyMCBjMzQwYjI3ZDczOWIxMTJmYTU2MDc4OWVjNTUxZDRhZDc4MjEzZWJjIHJlbGVhc2UyMy1icmFuY2gKKzMzNzIxIDAyNTI5ZmIxODgxNWEwODhjYjkxNTk2YjljYWIxMTYyYmVjZDhiZWQgcmVsZWFzZTIzLWJyYW5jaAorMzM3MjIgZTU5YTM2YTE4MDVlZDZjYmVhNDA4YzlhNjlmZGM1ZmRhNjZkNDNmNiBsZWdhY3ktdHJ1bmsKKzMzNzIzIGU0ZWU5ODZhZjFhMDdmN2Q0OGUyNWYwYjUzYmUyMzI5NTcyYzRlNjcgbGVnYWN5LXRydW5rCiszMzcyNCBlMTQ4Mjk2ZDhhOTM4OGVmZWQ5MDc5MzI5NWYxNzUyNjFiZTEwODQxIHJlbGVhc2UyMy1icmFuY2gKKzMzNzI1IDE4NzMxZDI0ZTNkMTAzNzcxYjJiNWRjZTBmMjA4MjBlMWNkNWY4OGEgbGVnYWN5LXRydW5rCiszMzcyNiAyZjAzZjgzOTg0YjA3MWM5MDAxM2M4NTQ4ZWJmNzIwN2Y5ZDg4ZTI2IGxlZ2FjeS10cnVuaworMzM3MjcgNjc4NGEyNDE2MzMxNTBhOTg1OTBkOTE3ODVhN2MxMmMxZDg3MWQ4NSBsZWdhY3ktdHJ1bmsKKzMzNzI4IGU2MjFhOTdiZmExNmIxZGRmNWYwZjMwYTIzZmM0OWZkZjVmZTc1ZjkgbGVnYWN5LXRydW5rCiszMzcyOSBlMjEzY2ZlMTdhNjI0ZDNhNjA4MWI4YzI3ZjMyM2UyZDhiN2NjMTJkIGxlZ2FjeS10cnVuaworMzM3MzAgZDcyNTQ3YzkxNWQ1YTY0ZWY1Y2I0ZDA4Y2M2NjBiYWJlZTBjM2NjMCBsZWdhY3ktdHJ1bmsKKzMzNzMxIDY3NzAzODg3M2EyMmI5NGRlZDQ4ZDM2MTY3ZGVlNWVhN2FlNmQ4ZTMgbGVnYWN5LXRydW5rCiszMzczMiAwOGYzOGRhZmM5OGE3MDY0YzRiNmU3MGM1M2I3ZmYyYmE3MDkyY2M3IHJlbGVhc2UyMy1icmFuY2gKKzMzNzMzIDhkOGNkZWUzNDRhZDU2Njc4NmQzMTRkNzQwMGYyMzljNmMyZjlmNWUgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzQgOWUwZDM5YTJkMzdlNDlkZWMzYTFiNjI2MjFlNDI3MjdkZDQwODE3ZSByZWxlYXNlMjMtYnJhbmNoCiszMzczNSAwNDA2ODc1Y2E3ZmQzYjYxM2NlNjE2MTNmNTFhZTNmMzJjZjY3N2JhIHJlbGVhc2UyMy1icmFuY2gKKzMzNzM2IDZmNmRlNzYxZWY5YjdhZGI4Y2I1MWMzNjUwM2YyMzYzMzYyZDgyZWUgcmVsZWFzZTIzLWJyYW5jaAorMzM3MzcgMjRlNzM3OThlZDA0ZTRlZDdhZjFlMDU2ZTMyNjliZDk5ZDJhZjIzYiByZWxlYXNlMjMtYnJhbmNoCiszMzczOCA3MDU4ZGNmNzMzZDQ2NmMwMDJhYmFkMjRhMTRmMGQxYWE4OTAxNWRhIGxlZ2FjeS10cnVuaworMzM3MzkgNDNjOTc3MWUwYmUxMGFhNTBkODY2MmU3MjFjYWE3OGQyMWRlYzgzMiBsZWdhY3ktdHJ1bmsKKzMzNzQwIGNlMTg1MDM0YjM4MDdkZDgzNWZmZDlkMGFkYTA4MDk0ZTY4NjQ2ODEgbGVnYWN5LXRydW5rCiszMzc0MSA2OWM4ZTM5ZjZlZTZjNTZhMjZlY2MyYTUzZGViNmU2MDk5ZDhmYjUyIGxlZ2FjeS10cnVuaworMzM3NDIgMDUwNGJhOGVmYmI2Y2RkMTFmMWE0N2NhZjBiNDI0ZmNhNDMzMjk1YyBsZWdhY3ktdHJ1bmsKKzMzNzQzIDBjNjIxODAxNDA5YWYyODYyYmJhZDFiMTlhYTdiYzgzOWQ5ZTAyMzEgbGVnYWN5LXRydW5rCiszMzc0NCBkOGM4ZmUwYzczZWRlZWQ4M2QzNmRjNmM4YmEyNTRiM2MxMDJiYmQ5IGxlZ2FjeS10cnVuaworMzM3NDUgNjQzZmZiN2RiMThmZDA1ZjlmZTI3OGI3MTIxOTgyMjE1MDVjOGFiZiBsZWdhY3ktdHJ1bmsKKzMzNzQ2IGQwOTk0NGNlZTNhNGZlNGVkMTQxZGVjNDMxY2Y2MTUzMGQ0YzE0MjAgbGVnYWN5LXRydW5rCiszMzc0NyA1MjZjMTJhYjM2YWYzOTgyZjcwNGJmMjUyZTdkOGE2NDYyYjRlNWFiIHJlbGVhc2UyMy1icmFuY2gKKzMzNzQ5IGQ3MzhhMDdhMjkzYTM1ZjQwMzNiYzc5ZGM0OWI5ZTM4MGNiYTc2NWQgcmVsZWFzZTIzLW1haW50CiszMzc1MCBjOWEwMDU5MGI5MDFkZGRiZTY2YWM5MTc2Yjg1MjJiMzRmN2ZjZDczIHJlbGVhc2UyMy1tYWludAorMzM3NTEgODAxNGZiODBkMTQ0NTM5Yjc0ZGYzMjhkY2VhMWQxNmQxODM1YmYyMyByZWxlYXNlMjMtbWFpbnQKKzMzNzUyIGRiOWQ2MzAyMzdhNjU3NjU4MjNjNzVlZTlmNjNhOGViNThlOWVmMWYgcmVsZWFzZTIzLW1haW50CiszMzc1MyBkOGU1MmJjZTJjZjkwM2I0N2FjYWM0NDA0MDFiNzEwZTk1YzQ0NmFiIGxlZ2FjeS10cnVuaworMzM3NTQgNWEyYTkxYjk3ODEwYTFjYjM0M2M5ZTRjZWQyODdhOWM0MGIxZDgyOCBsZWdhY3ktdHJ1bmsKKzMzNzU1IDJjZmFjYTYyYTk5MDczZGFjMDRkMGFmMWRjZThkNTY0ODMyM2I5NDcgbGVnYWN5LXRydW5rCiszMzc1NiBhZTg0ODU4NjdkMzA3MTFhYjk4YTdkNDcwMGQ1ZjVhYjMzN2ZkZDgyIGxlZ2FjeS10cnVuaworMzM3NTcgNDk0YjA3YTVlMmU1N2NiYzIzODgzZDU1YWY4ZDlkMTNjOGFkYzY5MCBsZWdhY3ktdHJ1bmsKKzMzNzU4IDc4MDFiMTNjNTJjOTQ2MTJjNzQyNjI5MGRhNmNiYmVhMTdiNGJkOTYgbGVnYWN5LXRydW5rCiszMzc1OSAwY2ZjNmNhYmNlODg0YTUzMGNjZWI1OGRiODdhMWMzMzJkMWJlYmU4IGxlZ2FjeS10cnVuaworMzM3NjAgYTAzMDBlYTYzOGRkYjQxMzAxOTA5NjdmMjE4MGZhMTZlNzVhMmFmNiByZWxlYXNlMjMtbWFpbnQKKzMzNzYxIGIyNGU5ZDcxZmEzY2RiYzdjOTEwZWU3ODA2N2ExNDA2ZDZhZDJmMGMgbGVnYWN5LXRydW5rCiszMzc2MiAxZDViZTY5ODFkNTdlZGQ4NzJjNGM1MzNlNDk2YTE5ZjgwZDVlNGI0IHJlbGVhc2UyMy1tYWludAorMzM3NjMgZTQ3N2I1OTk5MjRkYTgzZjU1NzM4MGE2NDUwMDE5ODUwOTk3OTgzYSBsZWdhY3ktdHJ1bmsKKzMzNzY0IGFhYjEwODlmMGY4NWRlZWJiZDU0NWY5Y2MyM2Y0ZjRhMjAyOThjNjYgcmVsZWFzZTIzLW1haW50CiszMzc2NSA0YWRmZDc2NDY2YmM2YzA2ZTQ4NGI1MmZlNGEyMzg2YmRiODI3NmVkIHJlbGVhc2UyMy1tYWludAorMzM3NjYgMjAwMTY1ZDExYTk0NjIyYWNlYmIwMjFmOTYzNTg0YTgxNjk0MzQ0NiBsZWdhY3ktdHJ1bmsKKzMzNzY3IGYyNjE5YmQ2ODNkYjNkYjFiYjc4YjBmMDU1NjE2YjdmZjdlZTE0ZWUgcmVsZWFzZTIzLW1haW50CiszMzc2OCAzNTRjN2VlNDM4YmY0ZWEwMTc0ZjkzYTcyOTZjN2VkYTBlMDE3NjcyIGxlZ2FjeS10cnVuaworMzM3NjkgN2FlYTFiNWNkZWJiYTJmNzZmZmM4YjM4Zjg3ZDExNjBkNzc1YjBhZCByZWxlYXNlMjMtbWFpbnQKKzMzNzcwIDU4OWQ1NTQ1YWY0MTE2MzAyNjQ0MDcxYTg3ZDE0MDNjMThiYjdkNzggbGVnYWN5LXRydW5rCiszMzc3MSAwZTY0MjQwODAwZGQxM2M3MWQ5ZDQ3YWM1YTUwMzRkMTMzMWI4ZDU2IHJlbGVhc2UyMi1tYWludAorMzM3NzIgOThlNmFjMWQ4Mzc5NzE5NjNmNDUxOGUyYTM4OWJmNzE5YThiM2Y4YiBsZWdhY3ktdHJ1bmsKKzMzNzczIGFlMDI0MmUzNDU5ZWVhYTk1MjNmM2U3NDY3MzkxYmQwOGQ0MThjNzUgbGVnYWN5LXRydW5rCiszMzc3NCA5YmQ1YzA1MmIzMDhiNzhhNzJlYTI5NzZhZWQwN2NmYmU3M2E0MzdjIGxlZ2FjeS10cnVuaworMzM3NzUgMTcxODE0ZjVkY2M2MzIxMGI2MjFhNDNiNGE3Zjk1ZDNkOTExNDM1ZCBsZWdhY3ktdHJ1bmsKKzMzNzc2IGFiMTBjMGMyNWMwMzA0YWQ0YTM5ODEwMzMwZGE5NzYzNmQ0M2IzMTkgbGVnYWN5LXRydW5rCiszMzc3NyAwNjFkODZmYzExYmIzODM0ZGI1OTdlNzI3NzUzNDRiYWRjYTdhMjc5IGxlZ2FjeS10cnVuaworMzM3NzggNzM1ZWMwODY5NDkyM2ZlYjYwNjFjYWZhMGUxMGU3NzgzZTVhNWRhZSBsZWdhY3ktdHJ1bmsKKzMzNzc5IDdiZDQwMjA1MDk0Y2M0ODIzYmFmM2I5NTQ0YWI4NDAzMDY5ODQ4MzAgcmVsZWFzZTIzLW1haW50CiszMzc4MCAzNmMyNzczODFkNzhiM2JiNjM3NzA1ZGY1MTAzMWFiMzdmZWJkZGQzIHJlbGVhc2UyMy1tYWludAorMzM3ODEgOGNjODAwMDJmYjkwMzcwOGNlNDE1NDBjOGE4ZjgyODkxNDljOTFiZSBsZWdhY3ktdHJ1bmsKKzMzNzgyIDJiMTRjOTgyN2Q5Y2Q3M2JhNjc3ZTM1N2RhMTdlZmQwZDMzMDk1NzMgcmVsZWFzZTIzLW1haW50CiszMzc4MyA1YjFkZGM0YjQ5YjliYjFmOTYyYWMzM2VmZTczYWMxNTAyNmFkZDU1IHJlbGVhc2UyMy1tYWludAorMzM3ODQgOGI3ZTM3YjVmMWVlNDUxZDI0OTE4YTkzYTVlZjBmNmZkY2M0MDA0YiByZWxlYXNlMjMtbWFpbnQKKzMzNzg1IDc2MmUxYjIwODhlNTE4OGRmZWU2MzA2OTk0OWJiNzk4M2FlYjIxYzUgcmVsZWFzZTIzLW1haW50CiszMzc4NiA1OWZmNzdiMGFjNzI0YWIxMmE1NmU2NTZjODg2NzAzN2JkMzRkZTljIHJlbGVhc2UyMy1tYWludAorMzM3ODcgOGY5M2IwOWIyYmI1ZjM0YzI0NTEwY2NmY2VkNzljZjY3ZDg1ODI2NCByZWxlYXNlMjMtbWFpbnQKKzMzNzg4IDdmNTQ4OTE4NGQ5NDMzMGFiZWI0ZjM2MDYzNzdjZWY2NTNiNThiZTMgbGVnYWN5LXRydW5rCiszMzc4OSA2MjE2ZTc0Yjg4ZWZiZTM2ODU5ZDk5YTNhNjQyZjk0Y2Q0NjZjYTg1IHJlbGVhc2UyMy1tYWludAorMzM3OTAgMWM0NTE5NGQxMjRkODk1MjRmNGI2Y2Q4OTAwYTljYzQwZGMwODE2MyBsZWdhY3ktdHJ1bmsKKzMzNzkxIGIwNzZmNjljNWRhYzMxMmM4NmM4YmE1YmJlZWMwMjExN2I4NTk3NTcgcmVsZWFzZTIzLWJyYW5jaAorMzM3OTIgZDA1ZDBlZDQ2NWQ4MDE2NWRlYWQxOGZmOWY5MThlYzJjNTkwOGNlOCBsZWdhY3ktdHJ1bmsKKzMzNzkzIGRiZGUzZGQzMTA2ODUyZWZkMjFmMzhiNzI4OWI0MzM4ZTMxNGZjNzQgcmVsZWFzZTIzLW1haW50CiszMzc5NCA4ZWJiOWIzNTc2ZDEzYzlkMDM0NzRkMjUxYTgyZTExZWFhODliNDk2IHJlbGVhc2UyMy1icmFuY2gKKzMzNzk1IDUzYzJmZjFkODFkMTY5OGFkMDliM2I1ZjM0YTRjNDdhYzg0NmU4OTIgcmVsZWFzZTIzLW1haW50CiszMzc5NiBiZmNjOThkZTdmY2MyNTA0OGI4OTlkNThjMzQ4YTA1MGI1MWJmODYwIHJlbGVhc2UyMy1tYWludAorMzM3OTcgNDBmNWYwYjQ0Y2M0NDdmNzhlNjAyMzAxZWE3Y2EyMzQwMzc0ZTQ3OCByZWxlYXNlMjMtbWFpbnQKKzMzNzk4IGJhNDhlNTcxYTRkNWNlOWY2MzQxZjVjNzlmYmQ4NDExZDcwNmEzNDcgbGVnYWN5LXRydW5rCiszMzc5OSA1YzhiMmE2NjY2YzM2ZmM2MzJkMmZmZTBlNDVkMGFjZWQ4Y2Q2ZmZiIGxlZ2FjeS10cnVuaworMzM4MDAgYWZkZTQwMmUzYTU1YTk5YjI1N2M5ZDJiZmM2OGJmOWNhMDljN2NiNSByZWxlYXNlMjMtbWFpbnQKKzMzODAxIGQ0Y2NlNTUzNDc4YTgxMGQwNGE5MjM1MmNlZDhkYWZlM2M2MDJjMDYgbGVnYWN5LXRydW5rCiszMzgwMiAwYWM0Mzk2YjE4OTRhMGUyOWQ4YzBiMWNkNTkwYTRkMWU2Y2VmYmM0IGxlZ2FjeS10cnVuaworMzM4MDMgNzRlZjhiOGUwMDYxNzRhNTNjMGI1YTY0NWM4OTEzMGQ5NmMxZTJiMiByZWxlYXNlMjMtbWFpbnQKKzMzODA0IGUzYzliNDhkZTYwYWUyNzQwNjhiNjg0OGQwMjNiNmRmZDE0MDQzOGUgbGVnYWN5LXRydW5rCiszMzgwNSAwNjAxNmQ1ZDgxZDdkNGUxZDQ4MGEzODAwYTU3ODc4ZDQ5M2MwMDkyIGxlZ2FjeS10cnVuaworMzM4MDYgMWM0ZDE5YjliYWFjNjUzZmYwYzNhYjlkNzViODU5ODAyMTE1ZDZjYyByZWxlYXNlMjMtbWFpbnQKKzMzODA3IGQ2Mzc5NjIwZmIwOGQxNGE3MDZkMzc1NmU3MjM2YWNhY2NiZmZiMjEgbGVnYWN5LXRydW5rCiszMzgwOCAzZGM4ZjJiNDI0OGMyYjgzZWQzYTQ0Y2ZiOWRiZjU2YWY5YjI5NzdhIHJlbGVhc2UyMy1tYWludAorMzM4MDkgMDlhMmNkZWFiOGMwYWU4M2UyOWEwNjc2ZjdjYjMxNTk1NjAwNjNlZCBsZWdhY3ktdHJ1bmsKKzMzODEwIDUzMGUyM2JmOWUxOTNlZWFjZjg4ZmRjY2M4ZWVjNjU0MDE3NDA3NjMgbGVnYWN5LXRydW5rCiszMzgxMSA5MDAzMjcwOTViMDUxNDAzZmE2YTg4NDAyNGFiNzFlNzk4MTVhN2I1IHJlbGVhc2UyMy1tYWludAorMzM4MTIgNTI4NDM3YTNmNWY3YTc1YzE5MTA4OGE3OTdiY2EyYmVmNDBmMzAzMyBsZWdhY3ktdHJ1bmsKKzMzODEzIDY2NWY4YTZmNDM3ZGI0NmJjZTgzN2Y3NDFkYzY5MjgwMDBkYjg5MWIgcmVsZWFzZTIzLW1haW50CiszMzgxNCA0MzUzZjA0NDIyZTMyMWZkMTI0YjFlYzAyYzJjNmNkODc3Y2E0NDViIGxlZ2FjeS10cnVuaworMzM4MTUgMjY1MDc5ODgzNjY4NzM4ZjZkZjRjNjc1ZjZlZGI1Yjk1ZjQ5NDdiNiBsZWdhY3ktdHJ1bmsKKzMzODE2IDYxNmE4YzBjYzkxNzA2YWJlMDQxNTc3Y2E5NTY3YjI3NGRiNWY1MmIgcmVsZWFzZTIzLW1haW50CiszMzgxNyBhODhlNmRmYmZkNmQzNGYxMDdiZDM2MGZiNWZjZWU3ZWJlNjQ1ZjU0IGxlZ2FjeS10cnVuaworMzM4MTggZmIyYWJjYTJkMmQ1NTljNjFkNmQ4ODJiY2UxN2FlYjVkNDMzODQwMyByZWxlYXNlMjMtbWFpbnQKKzMzODE5IDkyZDY4MDgzYTBmZDY3YmZhYmVmY2U3NDRhOTk0NzU1ZjZiOTY0MWIgbGVnYWN5LXRydW5rCiszMzgxOSA4ZTYzYzVhMzNmNDcwZjdjMzYzZTM4YTdjMTYyZDI0OWVkY2IyYmI2IHJlbGVhc2UyMy1tYWludAorMzM4MjAgNDYxMDMwZTZiZDY3NmM1YjdkOTk3YmM3MTZiNDRhODI5ZmQ5YjM5MSByZWxlYXNlMjMtbWFpbnQKKzMzODIxIDY3YTkxZjc1MGM2MzEyY2M0Zjc4OTMzYWEyMzViMDMwNGVmYmI3YzUgcmVsZWFzZTIzLW1haW50CiszMzgyMiA5ZjZlMmRlZTE4OTJmNzNiOTIwNmVhYTJjNmM1NjUxYTZjYzI5ZDIzIGxlZ2FjeS10cnVuaworMzM4MjMgN2I5MDY1NzFkYzY4YjRmMDNhMDY0MTFhNDI0OTkzMjk0OTM4N2M2ZCByZWxlYXNlMjMtbWFpbnQKKzMzODI0IGZlMDU3YmVhODg1NjY5Y2Q1ZDBlYzlhMDUxY2JmMGI3YTU0MTdhZDMgcmVsZWFzZTIzLW1haW50CiszMzgyNSA0MGFhNGExMGY0OWI2YTViZmYyMDNjYjQxZWMxNDk4OTVlNjFlNzIyIGxlZ2FjeS10cnVuaworMzM4MjYgMzc3OWViNDgzZTZiZDVkYTQzZjIxM2M5YTUyZTM0MzIxYjVlNzc0NyBsZWdhY3ktdHJ1bmsKKzMzODI3IDcyMGY0NGM2ZDExYzJkMTRmMDVkY2VhNTRlZWM2N2Q0NTIyMTllYTEgcmVsZWFzZTIzLW1haW50CiszMzgyOCAxOWMwZjgxN2NiNDc1NzVjMDY1ZTQ3NDU1MzZlMjgxYmY4YzkyNjFjIGxlZ2FjeS10cnVuaworMzM4MjkgOTk4YjA2NzMwYzlmYjBlNTljZDE4NTJhNGI5MmFmMzdkNjE3ZTllNCByZWxlYXNlMjMtbWFpbnQKKzMzODMwIDIxMDY3NmVjOWQ1ZjE3ZWU2NGZmM2FkNzM4ODhlNjVmZmE2NmMwNTUgbGVnYWN5LXRydW5rCiszMzgzMSAxNTk4ZmJlNjkzZjk5Yzg1MjY1MzIwZTEyMjgzYThkYjNjZWRmZTI0IHJlbGVhc2UyMy1tYWludAorMzM4MzIgMjkwMzJmMzdkYzhmODI3ZjM1OTVlMTgyZWM2NjY4YTg5YTczZjQ0MyBsZWdhY3ktdHJ1bmsKKzMzODMzIDRiNDZkNTQ0OWQ0OTk1NzIyYmM0Nzc0M2E0OWVlNDg2ZWVlNTZkYzMgbGVnYWN5LXRydW5rCiszMzgzNCA2ODQyY2ViMzlhMTQ0MTZkNGVjNzcwZDU5MDQ5MjUzYWNhYzgyOGRlIGxlZ2FjeS10cnVuaworMzM4MzUgMmM2ZjkyY2RkYmFkOWE5YTJmYTQ1OGZiNTZmZmI1MjFjODk4Mzc3ZiBsZWdhY3ktdHJ1bmsKKzMzODM2IDUzZjkwNjlmYzY1MGVlYWNmYmQ4ZmY1ZWU2NWZmZjlhM2FiZGIyZTIgbGVnYWN5LXRydW5rCiszMzgzNyBiODYyM2IyYzliY2U2YWI5NmYzMmQ5MGY2YzQ3ZWUxOTA1OWI3ODI4IGxlZ2FjeS10cnVuaworMzM4MzggODJhMWQzZjIxMGFkZjA4YTBiNjYxMGZiNzZkZTczZWM5Yjg4OGIxNCBsZWdhY3ktdHJ1bmsKKzMzODM5IGMzM2QzNjg5ZWQ1YjZjYTBiMDM5MjA1OTA2ZmRmN2MzZGY5MjZhMDIgbGVnYWN5LXRydW5rCiszMzg0MCBkZTI4ZDk5Mjg4NTU1NmRhZTgxNGVmOTNkNmZhNjEyMzU1NGM3ZGIzIGxlZ2FjeS10cnVuaworMzM4NDEgNWQwYzg3Yjk1NzBkM2FjYjdiMTliM2UwNWJhMWI2OTg2Y2E0NWUyOSByZWxlYXNlMjMtbWFpbnQKKzMzODQyIDUyM2MzZDYxZGJkZGU3MzRhMGY1NmRiZGI5NGEwODAzMmIyMzAwMTcgbGVnYWN5LXRydW5rCiszMzg0MiAzMDRiNWEzNjU1NzYxMTQyMThiOGJjM2RhZmY4NmQxM2EyNDkwNmUzIHJlbGVhc2UyMy1tYWludAorMzM4NDMgMThiNjdhZTljZjQ1ODI0MzY3NjNhNThkOGRhNTkwNGU2ZWMzNWZkMiBsZWdhY3ktdHJ1bmsKKzMzODQ0IGRmNjU0ODYxY2NmNmExMDlmNDEzNTJjMzYwNGU2ZjRmODk1YzdlMDIgbGVnYWN5LXRydW5rCiszMzg0NSBmNzQ2ZDU2OTBhZDZkODM5ZGY1YjRhNzczNjFlZDJhMWZiYTgwMWE4IGxlZ2FjeS10cnVuaworMzM4NDYgYWE1Y2I4ZTNiOWVhNWI3ZDRkMDFlNWYxOGQxM2E5ZmZjMGRiMGVhMSByZWxlYXNlMjMtbWFpbnQKKzMzODQ3IGYzNjU0YzVhZGE5NDQ4Y2ExNTE0NTkxM2I1YWNiZGExMWYyNTliMmMgbGVnYWN5LXRydW5rCiszMzg0OCA0NmJjYWIyYjc0ZTkyNDg0OWJlNmMxZTZkMjllMzA4OGNjNjQ2NDQzIGxlZ2FjeS10cnVuaworMzM4NDkgNDUwNWEwYjk3MjRjZjE3ZDA1NDg3ZmJlYzcxNjFhYjE1Y2NkZjdjNCByZWxlYXNlMjMtYnJhbmNoCiszMzg1MCAwNTY3M2IxNmJkYjhjMWU5YTkyOTIzOWMzYmYwNWY3YmU1MDJkNzlmIGxlZ2FjeS10cnVuaworMzM4NTEgZjRiNGJmN2U4N2Q3ZTBiZTVlNGZlNGFlYmZkYTBmYjM4NmY2ZjI2OCByZWxlYXNlMjMtbWFpbnQKKzMzODUyIGQ5ZjAyN2RjNjc2ZGQ5Y2Q1NTFjNmEwYWE0MThmZTYzNDgxZjczNDIgbGVnYWN5LXRydW5rCiszMzg1MyA3Y2MwYTMzOTQ2YTMwNDE2ZjQ4ZTU4MjkyY2VlNjQ2OTUwNGQyZjJmIGxlZ2FjeS10cnVuaworMzM4NTQgZjBkZmJjMTQxNDgzMzZiOGZjNmMwODdkNzRhZmRlZGViMjhmMDI1NiByZWxlYXNlMjMtbWFpbnQKKzMzODU1IDU5MGQ4Y2NhYmFjN2JkMGMwNTI1ZDU4NThhN2NhYTY3M2QxMTQzZDIgbGVnYWN5LXRydW5rCiszMzg1NiA2ZDc0ZjAwNmY4NGFjZTg0YzY5YTkwMTgzNmRmYzVmODU2YjZlNzIyIHJlbGVhc2UyMy1tYWludAorMzM4NTcgNTliYWQ3ZWZmZjAyMTY5NDcwMmM4NGIzMjRiODMxOTljOGM3ZGM3NSBsZWdhY3ktdHJ1bmsKKzMzODU4IDU2ODZjYTI5N2Y1NWY0ZjkyNzljYzdkNDYwM2JlM2Y4YWQ2ZjRhNGIgcmVsZWFzZTIzLW1haW50CiszMzg1OSA5ZjUzZTUzZjM4ODAyM2ExMDQzOGQxMjllZDJhMjYxZDM5YzFmNTM0IGxlZ2FjeS10cnVuaworMzM4NjAgMDgxM2IzMzYxMGNjMzVjMzljODUxM2ZmN2FjODE5MTIyYjRhYjM5YSBsZWdhY3ktdHJ1bmsKKzMzODYxIGUzNzM2MzBiZmVhYjc2NDBlYmYxNTgzNTE5OWI1NmVlMTQ5M2MxNjEgcmVsZWFzZTIzLW1haW50CiszMzg2MiBhNDljMWI3NjEwNmNlNGFjOGFmNTRjZDYyZTBlYTNlYmRhZDMyMjFiIGxlZ2FjeS10cnVuaworMzM4NjMgZTMyODFiMGRmNmE0MWM1OTY1YThiNDE3NWYwNDU3ZjE4ZWQ0YWVhNCBsZWdhY3ktdHJ1bmsKKzMzODY0IGI2OTgyMDliOTgyNzg4MzU0ZDMwZDRhMDBmMjdjNzJjOWUyZDkwZTYgbGVnYWN5LXRydW5rCiszMzg2NSA5Yjg5MTY2MzFlYjY5ZWMzMmU1YzljNDIwNTUyYjZlZjlhOWQ2ZGVhIHJlbGVhc2UyMy1tYWludAorMzM4NjYgNDQ2MDk3OWRlZWJmNWVjNjU1MzI2MmQ3MmJlYWY3ODY4MTU3NDYyYiBsZWdhY3ktdHJ1bmsKKzMzODY3IDk0MWQ0OWE2NWYwNmYxMjFmYzZhMzI2MmY2YjZlYjZmNzhiMjhjMzYgbGVnYWN5LXRydW5rCiszMzg2OCAzMzI5YjA1OGRiMjAxMmVjNmRjOTdiMGQ1ZDVhMjIyYTg4ZDc5YmU2IGxlZ2FjeS10cnVuaworMzM4NjkgNTQ2MTdlZDJkODMwODcwMjI5NjZmZjQxM2MxN2M0ZjJkODZhY2E2YiByZWxlYXNlMjMtbWFpbnQKKzMzODcwIDQ0MzUzM2QwODc4M2RjNzhkNmY3NDg3NjQ1ZTEyMDE5OTJkYjlmMTcgbGVnYWN5LXRydW5rCiszMzg3MSAyOWIxZDA3NjM3OTBhZjcwYzZhNDU3OGQyMWYyYTBkNDlkMjVlN2FlIHJlbGVhc2UyMy1tYWludAorMzM4NzIgN2NiNGFkNTkzMmU2MjZkZmU1ZDc4Y2E0NGI4ZDM2NDU4OWY1NTk2YSBsZWdhY3ktdHJ1bmsKKzMzODczIDQ3MDhmYTA4NjEyMWYyM2QyNzQ3ODhiZThlOTliZGU2ZThlZTJmMGUgcmVsZWFzZTIzLW1haW50CiszMzg3NCBlZjIxNjgxYTljN2ZiNjA5OTI4NzgzZWU4OTk1ODY3NzgxYjQwMDMxIHJlbGVhc2UyMy1tYWludAorMzM4NzUgZGM0MjQ5ZGQ5ZTM1M2E4MjI1ZGVmMTJhZGM3MTEyNDBkZGYzZTQwMiBsZWdhY3ktdHJ1bmsKKzMzODc2IDhlMmVmMjdmNjg4YjUzOTYwNjJmNjkwMjAwMTEzNzY4OTZlYmU0ZGUgcmVsZWFzZTIxLW1haW50CiszMzg3NyAyZDI3NGRhMDkyNzQ3NjlmMGIxMmQzZDE0MjFhYjcyNjE3ZGFkMGY2IGxlZ2FjeS10cnVuaworMzM4NzggOTQyY2VlYmU5NjcxYWY4NjU0M2M4YjU3Y2E5NDYwMWNlMmFlM2QzYiByZWxlYXNlMjMtbWFpbnQKKzMzODc5IDNkZGE1M2MzMTJhNWFhYjIzY2QwOTRlNjM1YzMyYjU5MTU0ZTlkOTMgbGVnYWN5LXRydW5rCiszMzg4MCBhMzMyZGNjNzkwMmI5NjBhYTAyNmE5YmMzODI3YzNjMDRhMjU2YjY4IGxlZ2FjeS10cnVuaworMzM4ODEgOTQxNDg4NmY1YzdhZGM2MTk5NDk5ZTdjOGI1N2Q3YTgwY2U4ZGExMSBsZWdhY3ktdHJ1bmsKKzMzODgyIDJhOTQxZmYwYTEzNjY1ZTAyZmVhMTY4NzQxNDAwYWIxNWJmZmM1NGMgbGVnYWN5LXRydW5rCiszMzg4MyBiNTVkNGEzZjQxZTg2ZTM5ODc1MDQ0YjRhOTRiNWIxZDY1YmU1ZDRiIHJlbGVhc2UyMy1tYWludAorMzM4ODQgM2RiNTBkMzEzNDBkOTNjMThiMzU1NjI0NGQzMzcyOTIwMWQ1OTE3MyBsZWdhY3ktdHJ1bmsKKzMzODg1IDRmZjM4NTcyZDAzNmU0ZmEzZmEyZjRjN2FhNTliNTY4MDhhZWQ2YzAgbGVnYWN5LXRydW5rCiszMzg4NiA3MWRmZDFlMWYyZWNjZDIxOGNiODU2MjE4MWQ4OTY2YTQyMDQ3OWZmIHJlbGVhc2UyMy1tYWludAorMzM4ODcgNjBhYWU4YTFlMjM3MjZhNDUzYTRlZjgxYWY4NTIyNTM5NDMzNzQ0ZCByZWxlYXNlMjMtbWFpbnQKKzMzODg4IDk0NjY1MjkxYWIxYmQzMzFkZDI3M2RkMGY0NWExYjNkOGU0YjA4NWIgbGVnYWN5LXRydW5rCiszMzg4OSBjY2I0MGRhOGM0MTJjNjAxODczNTg4NjAyODA3Zjc1NTk3ZWQ0OTgxIHJlbGVhc2UyMy1tYWludAorMzM4OTAgN2JjNzcyNTI3ZTQ0ZGI4YzkwM2RhYmNmODE4Mzk4ZTczN2I1MjllNCBsZWdhY3ktdHJ1bmsKKzMzODkxIGFmNTUzNWIwZTAwOWU2NjgzMGIwMGE5ZjhkMzQ4YjYyODM1NzY1YWUgcmVsZWFzZTIzLW1haW50CiszMzg5MiAzZWE1MmJjNzRkMTcxZjNiZThjZThkOWMwYTMyOTQxZDVlZDFiMWVlIGxlZ2FjeS10cnVuaworMzM4OTMgZDI3OWM0MGJkN2IzNmJjZTMxMDhlMmE3N2E2N2IzMGY4MTZhMTU3ZCBsZWdhY3ktdHJ1bmsKKzMzODk0IGE1NWZlZWEzZjkyMWRiNWExMGMwNGM4YWUxM2Q3ZWI4NWYyMDAzNGUgbGVnYWN5LXRydW5rCiszMzg5NSBmZDgyNGQ1NzRhOGZkZDEwMDU0NzhhODEyNGNjNjBkM2YyZTM4Mzk1IGxlZ2FjeS10cnVuaworMzM4OTYgMTMxYzU0ZjIwMmZkODQ0NjI0M2I1N2QyZjM1ZmFkMzc4ZjdhN2I1NyBsZWdhY3ktdHJ1bmsKKzMzODk3IDBmYTk5ZDMxZmI0ODEyMGU0NjFjYWE0Y2U0ZTFjNTU1OGYwMTc0NWYgbGVnYWN5LXRydW5rCiszMzg5OCBjMTBhMWNkY2U2MmI1MWI3OWE0ZjRmOTM4NGI2ZWYxMDE3OTNkYmQyIGxlZ2FjeS10cnVuaworMzM4OTkgOWE1ZDZlYjgxY2ZhYWYzNzZiZDA0NTM5ZGM1ZDlmMjRjYjU1YWZkYyByZWxlYXNlMjMtbWFpbnQKKzMzOTAwIDNiOTA3NGFkNzIzZTRiZjJhNTY5N2NmN2YyNTMyYTExYzJmMDk0OWEgcmVsZWFzZTIzLW1haW50CiszMzkwMSAzOWU5MjhkMDBiNjQzOThjNzdiNDg4Nzk4OTZkMGQ4NTIwYTU1NTZkIHJlbGVhc2UyMi1tYWludAorMzM5MDIgZDc4Nzc5MTg3YzdkZjA0OTM3MzhkYWJkM2UwMjYwMGMxYjM1NDI1MyByZWxlYXNlMjMtbWFpbnQKKzMzOTAyIGVmMWYyOTczZmFkODA5MDgyNDMzMTNiZDU2ZmZlOWY1ZjA3YWU4YTAgcmVsZWFzZTIyLW1haW50CiszMzkwMyA1YzU0YTc4ZjFkNTE1MmIxNWRjMTBhNzQzZjdkZTc5ZmNlNGE0YjI3IHJlbGVhc2UyMi1tYWludAorMzM5MDQgYmM2OWUwZGZkMmEwMzQ0OTdiNTZlY2QwMzkwN2ZjYjBmZjhkNWI3MyBsZWdhY3ktdHJ1bmsKKzMzOTA1IDY2OTU2ODg5OTMwOWZkYjg4Yzg4NDVlNmQzMWNiMmVjMGQ5OTdmMTUgbGVnYWN5LXRydW5rCiszMzkwNiAyNTFmYTA3ZmM1ZDFmNWYyYzAwMGY3MmEzMWVmNDYzZjdhZTkzMTcxIHJlbGVhc2UyMy1tYWludAorMzM5MDcgNGMwYWYyMmE4ZjNkMTI2ZGI3YThlZDQ3ZTI2NTlmOTg4NTJlYTk3ZiBsZWdhY3ktdHJ1bmsKKzMzOTA4IDQxYjZhNTM2N2VlNTY0NmI4ZWQ2YWI1NjUwNTY1NmM2NDY3ZjE5NjYgbGVnYWN5LXRydW5rCiszMzkwOSBkYzAxY2UyZjg1NTgyZGMyNDU0OWUxYzU5MDhmZTMxNjIyZmQ2ZTljIHJlbGVhc2UyMy1tYWludAorMzM5MTAgNzU2YjY1Yzc5ZjQwMDI0NWMxZGIzZDlhMmExOTg3OWQ1ODQ2YzQyZSByZWxlYXNlMjMtbWFpbnQKKzMzOTExIDBhYWMwNzY2MzQ0OGUzMDBkNWIwODM4MmFmOTZlMzI4NTZiY2FhYjMgbGVnYWN5LXRydW5rCiszMzkxMiBmOGViYWRlMmU3MjRkYzYxZmMyYjZmNzNiNzg3ODcwODFmNzNjNmY5IHJlbGVhc2UyMy1tYWludAorMzM5MTMgZDJlNGM5NGVmYmFhYjMxMGQwYzQ4NzdlZGE5NTk1NzU2OGY3NWNhNyBsZWdhY3ktdHJ1bmsKKzMzOTE0IGFjODZiMDcxN2FkMTk0NjNkZTM3OTQ3OGRmMjA1MzMxNzgxM2Y0ZmUgbGVnYWN5LXRydW5rCiszMzkxNSAwZmU2MGZhNjE3ZDhkYzcwNDFkNzVmYTk5ODJlZTFhN2VmZDQ4YmM4IHJlbGVhc2UyMy1tYWludAorMzM5MTYgMmRiOGM2M2U2OWNkNjRmMmI5YTJkMGQ3OTUzOWM5NWExNmNhZDQ5NyBsZWdhY3ktdHJ1bmsKKzMzOTE3IDZjMWU0N2Q1NGE3YTMwMWQ4M2UzYjdjZTg5ZTUyOTEzYjNhZTUxNDMgbGVnYWN5LXRydW5rCiszMzkxOCBhMzgwNjEwZWViNWFjNzk1ZGEzOTllMjlhOTYwNGE2N2FiNDBmNjQyIHJlbGVhc2UyMy1tYWludAorMzM5MTkgZDE1ZDQ0ZDlkNmY1Y2RkNWQ4YTFiZjg3YTE4MTYzOWMwMWJiMGM4YiByZWxlYXNlMjMtbWFpbnQKKzMzOTIwIDVlOTNhNGY2ZDlhOTlmYTIzYTI1OTM0NjZiNDkwY2EwMmIzMzI1ZTQgbGVnYWN5LXRydW5rCiszMzkyMSBiNTE5MDM1MDA2YzcxOTgwYzA1MzY1MzEzZmY5NzM5YmZjNTU3ODE3IGFzdC1icmFuY2gKKzMzOTIyIGU0ZmYwZGIzYjA4ODZkMDNkZjQ3ZGI4MWI2NWJlNmYzMTA0M2M1M2EgYXN0LWJyYW5jaAorMzM5MjMgYWMwZGIwMzRkZDE0YmQ3ZjBkNDUwNDczNTYxNDYzY2I5YzEyZWRjMiBsZWdhY3ktdHJ1bmsKKzMzOTI0IDg0ODFjOWJhZjc4NWQ1ZDJkNzAyMjk1ZWYxZjNjZTA3YzkyMmI4YzEgcmVsZWFzZTIzLW1haW50CiszMzkyNSA3YWIxYTQxZjE2ZGFiMTUzMDAzNmMxMjY3YTY0ZTdmMTBmY2MwMmUwIGxlZ2FjeS10cnVuaworMzM5MjYgMjFkM2IwNmRmNzkzY2IxYWM2ODU5MWM2YjY1ZmI2ZGIwNTZhOGRjMiByZWxlYXNlMjMtbWFpbnQKKzMzOTI3IDgyODdmNTIyYmVhMTc4NGNkZDUzMWE2ZjNmMjViMWY1YjdiNjE4NjUgbGVnYWN5LXRydW5rCiszMzkyOCBkZjhjYmRlNWM1ODgyOThiNWZjZTliMDU3M2YwODA5ZWQ5MzJlNDlkIHJlbGVhc2UyMy1tYWludAorMzM5MjkgMDU2ZjE2YTdhYmIwMzQ5Njk5NTY3MjIyM2I2YWUzNGJhNjdjYjBjNSByZWxlYXNlMjItbWFpbnQKKzMzOTMwIDQwMDBjYzZkYTkyNTIyMDdhYjg5ZmRiOWY4NTg0ZjJmYzVkMzUzMDcgcmVsZWFzZTIzLW1haW50CiszMzkzMSBhNWY2MDZmOWNhMDU3MWEyNGVlM2YwODFkZGVjOTAzNjRiMjVjOWYxIGxlZ2FjeS10cnVuaworMzM5MzIgYzA2ZGZmYjZhOTgyMjkxNDFmMzQyMGRlNDFkMzIwYmY0MWQ0NThhYiBsZWdhY3ktdHJ1bmsKKzMzOTMzIGU4MTczNTQyMzkzZmM0NzM1ZTE2MWVmZjI3YTA5NTk0YmI3YTQxYWYgcmVsZWFzZTIzLW1haW50CiszMzkzNCAyNDM0MWNiMjFmZDVjYjE4ZjNmM2U3Y2RlNWEzYWYwM2YwMjJlNmU2IGxlZ2FjeS10cnVuaworMzM5MzUgODA2MTc5NDAwZjM1NGVkYmMxZWMzMzNmOWNlYjY4YzhjNDE0MDlkZSBsZWdhY3ktdHJ1bmsKKzMzOTM2IGMzMGVkMTNkMzU4MjA5YTNiODRiMjEwODIyZjdhNzFmYmI0ZmFhMzYgbGVnYWN5LXRydW5rCiszMzkzNyBhMGY1M2EwNjk0NzAzNTNhYTU4MjQxY2NlNDlkMTEwZmI0ZDI2OWZjIGxlZ2FjeS10cnVuaworMzM5MzggMTA5ZDYzZjcwMzdjOTNhM2ZkZDExYWJhYmIwZDc5OTJkNDFjOWFlYiByZWxlYXNlMjMtbWFpbnQKKzMzOTM5IDQ5Njk2OGYzNjQ5ZThjMTM4NDQ4YmYxMzExN2RhYTk3NTM5N2RjNzEgbGVnYWN5LXRydW5rCiszMzk0MCBkZDQ1MWE2M2Y4OWU1OWExNjE4NzM5MGJiNzNjYTRlZDdlNWEyMjljIGxlZ2FjeS10cnVuaworMzM5NDEgYjk0MGFiOWEyYWJmNDRmM2U5OTg0NTRjZTM3NGZhMDI3MmM1NWIyMyByZWxlYXNlMjMtYnJhbmNoCiszMzk0MiBkZmJkMjgxMTJlMDk3Y2RhNjViYjIyMDA3MGNlMjQ2YjMwYzE4ODJmIGxlZ2FjeS10cnVuaworMzM5NDMgZDhiNzY4NzgwNGIyMzdkODY2MzBhMTQ3YThiY2MzYWQzZDE3Y2U4ZiByZWxlYXNlMjMtYnJhbmNoCiszMzk0NCBjNDdmNWFjOGIwNmRkM2RkZWE2ZGU1NzMxMTA4MDc1YmQ5N2VmZTYyIGxlZ2FjeS10cnVuaworMzM5NDUgM2Q0YTU1MDNlNDZkOTEyYzM4NzNhMDI5OTEzNjcxMmJjMDVhMzYxZCBsZWdhY3ktdHJ1bmsKKzMzOTQ2IDdmMzQ2NTJkNzE2MTJhZWNlYWQ4MzY1YzI4NzI2OGYyZmVjMjlmOTUgbGVnYWN5LXRydW5rCiszMzk0NyBjNDUzNTg5MzVlZDNmZmY4ZmEwOWUxN2FlYTczNDM0YjE4MmUxY2ViIGxlZ2FjeS10cnVuaworMzM5NDggNDIxNDcxNGFiYWNiZjIzOTRmNmJkZjdjMWFmMjhmN2NjNTkwMDVlMiByZWxlYXNlMjMtbWFpbnQKKzMzOTQ5IGE1NzBiYjlmMTMzZjcwOTI4NGZjZjVhYzllM2NkNmU0ODEwMDRmOTggbGVnYWN5LXRydW5rCiszMzk1MCBlODM1NzViYjI5ZGE5MDY4NWYwODhjMWM2NzJjYjdmYzJjNjYwZmUxIHJlbGVhc2UyMy1tYWludAorMzM5NTEgZjFlYTMxMTEyN2NmMTU5NzkwYjk4OWJlMDU4ZTcwNmE1MTdhODllMCBsZWdhY3ktdHJ1bmsKKzMzOTUyIDNmYjM3NDdjZTMwNGMxOTE3M2UwMDE1MDIzNjlmNDk5NTJmZDZjYjUgcmVsZWFzZTIzLW1haW50CiszMzk1MyA3ZjY2MGZhMjg4YWFiZmU5OTMxNGE4MDcyMmFkNmE2N2I3OWQ2ZGY4IHJlbGVhc2UyMy1tYWludAorMzM5NTQgNTNhMzIyYzZkZTUyMmE5MDkwNDljNDRiMDBiMDEyYWMwNTIzYzA3MSBsZWdhY3ktdHJ1bmsKKzMzOTU1IDllM2Q1MWJlYzUzYTI3ZTk2YWQ5ZmFiZWRkYWM4MTg0NzlkY2ZhNWYgbGVnYWN5LXRydW5rCiszMzk1NiA0OTc2NTk0NTA1MzQ4ZWE0OTY0YmNjY2M0NTM2NTk5MDkzYWI5MTNjIHJlbGVhc2UyMy1tYWludAorMzM5NTcgOTdmM2Q2NjU1OGZiOGVhNzE0YTdiYzE3YTIxZDg3N2ZjM2IwMzJkZiByZWxlYXNlMjMtbWFpbnQKKzMzOTU4IDk1Njk1Y2M0NWNkZDJlYWQ1ZGNjNjIyNTgyYjAyZTlkZTIwZGExYjMgbGVnYWN5LXRydW5rCiszMzk1OSA5OTUxYjZlOWEzZWE1N2JlNGI4M2Y1MzNjYjk4MmUxNmE3Y2ZiMWZiIGxlZ2FjeS10cnVuaworMzM5NjAgYmYyYWE3ZGU0MzdkMzQ2YWU5ODYwOWI3MDE2MDQ5MzdhYzNkMjJmMCByZWxlYXNlMjMtbWFpbnQKKzMzOTYxIDgzMGMwY2Q4ZmRiMjIwMjIxZmRlYTBkOTJmNDIwYzdmNzBjNzE5OTEgbGVnYWN5LXRydW5rCiszMzk2MiAwZGZhZmFhMTA0MDFjMTVjOTRiMjY1NjNhMWI3MmQ3MjRiMzBhM2IxIHJlbGVhc2UyMy1tYWludAorMzM5NjMgNjY2NTRhYzY5NjIyZjFiMTk4ZGFhZjQyZmM3ZjY4MTRiNTIzZDA0MCBsZWdhY3ktdHJ1bmsKKzMzOTY0IDNhNTBmODM2OWFkNTY0ZTM2OGMyZTcxODJjODNiMTIyNWY0MTJjNzUgcmVsZWFzZTIzLW1haW50CiszMzk2NSA3MThlMTQ4ODg3MWQ0MDMxNTFjMDU0MGQyYmM3OWNlNmQzMTFmY2E1IGxlZ2FjeS10cnVuaworMzM5NjYgZjk2MjRmOTQwNjFhN2U1MGU2ZTJjYTdhZDUzNDg4ZjBiYmEwNTg4MyByZWxlYXNlMjMtbWFpbnQKKzMzOTY3IGRhMWIxOTFiMGE2YTJkOTUwOTNhNGUyMmUyNjJhMzcwMjkwMDkwZjEgbGVnYWN5LXRydW5rCiszMzk2OCBhNTVlYjU0YTU2ZDBiYzU3Y2RmZTNmNjc4Yjc1NTdhOTc4OWI3MDI0IHJlbGVhc2UyMy1tYWludAorMzM5NjkgMzdhNDUwMmYxNjEwNzRmNmQ2ZjVlYmUxZjhiOWJmNDVkNmM0ZTdkMSBsZWdhY3ktdHJ1bmsKKzMzOTcwIDlkYzVlNzE1OTZmN2ZjMTMyMDI2ZTBiOTFjOWFhOGRmMTZlZjIzMDcgcmVsZWFzZTIzLW1haW50CiszMzk3MSBlYmI4M2YyNjZmYTRmMmQ0OGM3NjIyZGIzYjI3ZjY5YTgxMDM2NTAyIGxlZ2FjeS10cnVuaworMzM5NzIgMjcwMDUyZjZmMGUxZWUwZjBlNzFmZDlmNjRkNGMxMzFkMTI5NDQ3MiByZWxlYXNlMjMtbWFpbnQKKzMzOTczIDdiNTc3Mzc3ZDU0NmZlNjc3M2UyNGY5NjI0YmI3ODEwYjYyNTE1M2IgbGVnYWN5LXRydW5rCiszMzk3NCA5NDhmZDM0ZWIwNTA5NmMwMzgyMDFmM2U0MTdiMjY4ZGJhOTQwYmU0IHJlbGVhc2UyMy1tYWludAorMzM5NzUgMTE0ZDY5M2E1Yjg5M2VmMzU4OWRiM2E0MDZmYzU5MTMyNDkwNTMwMiByZWxlYXNlMjMtbWFpbnQKKzMzOTc2IDUxNzQ0Mjc5NDU4ZmIwMDQ5YTQ1MmU5ZjZiMDUxZTU3YzE0ZjRlMmQgbGVnYWN5LXRydW5rCiszMzk3NyA1Nzk1MWJhNWU5YjEwNzk5ZGQwNDkxMzhjYWQ5YmMyYjJlMjIyNjFkIGxlZ2FjeS10cnVuaworMzM5NzcgMGMxM2JhNTM1OTE4MmYyYTQ2OWFiMWUwMTBmYjhmODY2ZWRiYmI4YiByZWxlYXNlMjMtbWFpbnQKKzMzOTc4IDQzNmQ1NzcyYjg3ZmZmOWU4MjNkODgwMTMxOGVmNDg0OTBlZjg5OGIgbGVnYWN5LXRydW5rCiszMzk3OSAwZjI2YWY3YzNiNTJiMWVjOTYxZjhiY2NmZmI1ZWZkYjM0ZGQyZmViIGxlZ2FjeS10cnVuaworMzM5NzkgNWMwYTcwNGUxYmU0ZDdlZGQyM2UzYzA0N2M0YWFkMTNjMGM1NzAxZiByZWxlYXNlMjMtbWFpbnQKKzMzOTgwIGE0MDUxYWQ3NjY2ZTVkNWYzZWZjNzk2M2U3NDJlOWYxYThkZjA5ZjUgbGVnYWN5LXRydW5rCiszMzk4MSA4OTM3NWExM2ExOGM4YWU5N2NkMTg0ZDRhODRhNzM4ZWFiM2UzNDg4IHJlbGVhc2UyMy1tYWludAorMzM5ODIgMjQ0YjU1YzkwZTBmMzA2NmUyZDMzODkzMmIyMDJhY2ViOWZlYWQwNCBsZWdhY3ktdHJ1bmsKKzMzOTgzIDdkMjMyOTgxZDNlMzhjNDZmMDkzYjc2ODViZjkyMzVlZDFlYmM0NDkgcmVsZWFzZTIzLW1haW50CiszMzk4NCBmZjgwNWExNDdiNmE5MTg5ODhmMzU0MDRlNjM5MzA4NTA5MTY1NzA4IGxlZ2FjeS10cnVuaworMzM5ODUgYjE3N2M5NmVlMzUwM2JhODlhMmNiYThjM2EyZmZjYTcwMjZkZTIzZSByZWxlYXNlMjMtbWFpbnQKKzMzOTg2IDY2YmEwZTBlYzIwMjY5OGUwMzNmY2NkYzE3MThlY2MxNGNjYTYzMGEgbGVnYWN5LXRydW5rCiszMzk4NyBhNzRiNDYzYmY3NmRhN2YzMWM4ZmJmZjk1NDdjMDBlMjExOTVjOTQ5IGxlZ2FjeS10cnVuaworMzM5ODggODQ5ODhlN2JjN2I3YmJhOTU0YzJlZDdmZmY1ODA4NTg3MzI4ZTI4YyByZWxlYXNlMjMtbWFpbnQKKzMzOTg5IDcxN2NjMmM5ZmQ2MGVjNzkwMDlmOWU1N2YyZDIzNjc0ZDU5ZTc1MTEgbGVnYWN5LXRydW5rCiszMzk4OSA1ZWQ0MGYyZjY1ZmI1YWRlZDgyNjc0NTA1MDFiNGZjY2RkYjA5OTkxIHJlbGVhc2UyMy1tYWludAorMzM5OTAgOWEwYWExZGJmMzUxNDcwYzE5MmQ0NWNhNWQwZTMwOTk5ZGRkMDI2OSBsZWdhY3ktdHJ1bmsKKzMzOTkxIDYzMTAwY2MzZjE1YWY0MGFmYTcxMmExZDQ2NDc0NTNiM2NmNWU1Y2QgcmVsZWFzZTIzLW1haW50CiszMzk5MiBjYzJkOWVhNGViZDUwZmM2NDhmZDVhYzRlNWNhNmNkOWEyN2E1ZDQyIHJlbGVhc2UyMy1tYWludAorMzM5OTMgZGYwMDkzYTU5ODVjM2NiMThlMWJmYjhmMjU0NGViN2Q1ZTM0ZmYwOCByZWxlYXNlMjMtbWFpbnQKKzMzOTk0IDIyNTAyZjc5NWI0OWM4Mzc2ZTYxNzE4ODg1Mjg0MGJhZmNlMTg3ZTMgbGVnYWN5LXRydW5rCiszMzk5NSA0YTU5MTIyYTY2NDZhMWNiMDYwYzI3ZDJkYjI2MGM4MjBlNWMxYTVkIHJlbGVhc2UyMy1tYWludAorMzM5OTYgMWQ2ZDZmYjdmMTBiNzdiY2ViMWMyNWEyYzY4Mjc5OTQ3NjE4OGU5MyBsZWdhY3ktdHJ1bmsKKzMzOTk3IDgwOTFiZDkyZWUwMTViYzYwZGM5ZmViMDcwZTQ3NGQ1MDdkNjE3ZDQgcmVsZWFzZTIzLW1haW50CiszMzk5OCA0YjRiNTgxYjNiMmM4MzE0NGRmNzJjODkwYzczODdkMTkzMjkzOTA4IGxlZ2FjeS10cnVuaworMzM5OTkgMjZkM2Y1Yjg3YWQzZGZhZTc4N2RjODg4MjBlNTBlNmYzZTY1ZWIzZSByZWxlYXNlMjMtYnJhbmNoCiszNDAwMCAyOTA1NjQ2YTJhZjM3NTdiMDkxNjNmNmM4MDAxNWUwYzhhNzE2MTJjIGxlZ2FjeS10cnVuaworMzQwMDEgNzliMWE5ZWM1MjIzMTAxMmUyYTRmNjczYWY3NzNmODY2OTUwMDJkNyBsZWdhY3ktdHJ1bmsKKzM0MDAyIDY0NmYwZjExYzUxOWI1NmEzMTM3OGU2MzZhNWRhZWUxMmQzNTI2ZjEgbGVnYWN5LXRydW5rCiszNDAwMyAxMTVmYWM5ZDkwNDU2YjliNTg1OTVmOWRkZWE0ZDJjZDc4Zjk2YWY3IGxlZ2FjeS10cnVuaworMzQwMDQgNTJmNGYyYThjY2U3OWRhMzdjZDhhOGMwOGRmODE0MzNkMzEyYTk1NCByZWxlYXNlMjMtbWFpbnQKKzM0MDA1IDU1YTRhNDE3MjczZWQxMjA3N2MyNDY3MGFmMjc3YjQxMzQyMzI2YjcgcmVsZWFzZTIzLW1haW50CiszNDAwNiBkZGU1OTRmNzBkNmNlNGMxZGE4ZDc3MmE0NDZiZDg2NTIzMDk4ZmIwIGxlZ2FjeS10cnVuaworMzQwMDcgYmZjOTc0ZGVmNDc0MDFjMTMxOTYxNjY4OGMzZWQxZjJjN2Q4MzNhMyBsZWdhY3ktdHJ1bmsKKzM0MDA4IDcwMGMwY2E0MjllZmNkNDk0ZWEzNWJjNjU0ZjFmYjkzOGY4YWY0MDggbGVnYWN5LXRydW5rCiszNDAwOSA2ZGQ5YzdjNWFhMTNkNDNmYjRlMDNkNzBkZjJjMDU4NWRiZDJjN2YwIHJlbGVhc2UyMi1tYWludAorMzQwMTAgZGE0MzRiNTM3NjY0OTI4NGJmYjEzMTE5N2Y4MzhiMTUyOTgyODMwYiByZWxlYXNlMjItbWFpbnQKKzM0MDExIDc3ZGE5Zjg3M2E0ZmU0MTcxN2RjNjg0NzY3ZTgxMDM1ZDRkMDBhODAgcmVsZWFzZTIyLW1haW50CiszNDAxMiBmNDI5NTU1OWVhODM2YWI1NzFiM2Y0ZWQ4ZWM0Mzc4MDg0NmZlMGRkIHJlbGVhc2UyMy1tYWludAorMzQwMTMgY2IyODE1MzgzNzNjYWQxNjIxNmEwNTM0MDYyMmUwMTZiNWMzNDk0OCByZWxlYXNlMjMtbWFpbnQKKzM0MDE0IDI0YzYyZjUzYTFjOTI5MTRhYjA0ODBlYjcwZjhkZjdhOGZhZTRjNTEgcmVsZWFzZTIzLW1haW50CiszNDAxNSA0MWZmMmMxM2VhNGE5OGE3OWU3ODkxNWZiNDYyMTA1ZTgyOWM4YTkyIGxlZ2FjeS10cnVuaworMzQwMTYgMTc5M2I2NWE2MjMwZmU0NmFiYjMzY2IwMTdiOTM2NDE1OTJjNjVjOCByZWxlYXNlMjMtbWFpbnQKKzM0MDE3IGMxNmM1NTM4NjBjMmRlZmI0ODczOTFlYWU1ZDU4NjZmYTMzYWJlZDIgbGVnYWN5LXRydW5rCiszNDAxOCBmZWQ2NTAxMTg4ZGE0MjdkYTZlZmZmMjZjNDllY2FkOTg1ZmEyM2E0IHJlbGVhc2UyMy1tYWludAorMzQwMTkgNzRiYzM0OTNjZTAzNTJiZmI3OGQ2YjAzMWEzMTgwY2NkMzhkODk2MyBsZWdhY3ktdHJ1bmsKKzM0MDIwIGYwMDNlNDhmNTYyZGQ0NWFjY2I0ZDY5NGUxOGJiYWI3YWUzMmY0YTUgbGVnYWN5LXRydW5rCiszNDAyMSA3ZTNhMWQzYzkwZjUzMGFlMDM0M2UxZjllNWE3NDg0M2JmYzY0OWQ4IGxlZ2FjeS10cnVuaworMzQwMjIgNjc5MGNmNzg1ZjhjNWMzZWFiMTM0YzBmNTgxNDExOWYxZTI5NzhlOCByZWxlYXNlMjMtbWFpbnQKKzM0MDIzIDMzZGQxMmIyZWJlNmQ2NjcwNjIwMDA5Y2FhZjZkZjE4YWRlZmI5YzggbGVnYWN5LXRydW5rCiszNDAyNCAxM2E5MTRlMGM1YzE0NGM2Nzk1M2U2YjdhOWJmYmNlNjhhYTFkNmUxIHJlbGVhc2UyMy1tYWludAorMzQwMjUgMTk2MTFkMTAxZDIzMTI5YTFmYjE5NjhiZmUzY2FkNTYxYTM0OGVhYyBsZWdhY3ktdHJ1bmsKKzM0MDI2IGMyNTA3ZmUyZTY5ZTExODgwMjZkNzkwNDc2MDg0YmYxN2ExYTI0ZjcgcmVsZWFzZTIzLW1haW50CiszNDAyNyA3NzBmZTgzYmY4OWY2NTZkOWY2Yjk5Yjk3Y2UxZjZiMGZlZjU3NzY4IGxlZ2FjeS10cnVuaworMzQwMjggMTZjNTkyZDMxNmMyYTk0ZDBjZjEwMjJiYzhiNTVlMDkxN2FhMjU5NCByZWxlYXNlMjMtbWFpbnQKKzM0MDI5IDUyMWQwMjZhODA0OGM5M2VmZDNmNDRkNzg3OWJiZTViOWMwMzhlNjAgbGVnYWN5LXRydW5rCiszNDAzMCAyMTRkZjYyYmNmMTNhOGY5ZjAzNDM5NzMyMGFjZTE4M2IyMWMwOTQ0IHJlbGVhc2UyMy1tYWludAorMzQwMzEgOTYzYzY4MGVkOWIyMGI2MmZkY2NjNThjZmM4NjYyNDQ4ZTVkZTU4NCBsZWdhY3ktdHJ1bmsKKzM0MDMyIDBiZWE5ZDM4OTI5ZGMzOTQ0ODJmM2YwMzgxOWNmOGFmZmM3ZmU4YWIgbGVnYWN5LXRydW5rCiszNDAzMyAwNjA3NWYxYmQ5NDViNjUzNjA1MjBjNWFkNjk2ZDFhZWYzZjkzOTdjIGxlZ2FjeS10cnVuaworMzQwMzQgZDVhNmI2MzY3YmIxYzFmNjQ5NGY1ZGNkZWRlMjU1NWU3ODM4NWMxMCBsZWdhY3ktdHJ1bmsKKzM0MDM1IGE2NDBiZmVlYjliNTYzNTI5N2JmNDY4OTYzYjYxYjRlZTA1MjIwN2YgbGVnYWN5LXRydW5rCiszNDAzNiA3OGJhYjhmYzhlZDVjZmYyMDZjZWJiM2U3MTM3YmIyNDhiNjM3YzJjIGxlZ2FjeS10cnVuaworMzQwMzcgMmE4MjkxNGIwOGM1ZTBlMjZkMDc0ZTEyZTI0NTA0MTY2YmQ4NjliNCBsZWdhY3ktdHJ1bmsKKzM0MDM4IDdkY2M0NTRhNzBjM2IwNzdlNTNiMzI1YjFkN2VjYjQ1MGIxNDcwYTQgbGVnYWN5LXRydW5rCiszNDAzOSAyZWM5MmZlYmNkMWE4ZjZkODQzODE0OGQyNGVhMTIyNGVhMWUyYWFhIGxlZ2FjeS10cnVuaworMzQwNDAgMTZjZTdlOTQ3YTM0NDJiMTUyZDJkYjBjZDZhMGJmMjE2MjQwMzBkYSBsZWdhY3ktdHJ1bmsKKzM0MDQxIDZiODQ4MDJjOTUyNDI0Y2ViMDRmYTNlNzllMGYzZDE3NWM4MmZjMWYgbGVnYWN5LXRydW5rCiszNDA0MiBiNTMzMjI0ZjEzNzNmNzM1NzcwOGNiOTVhNzhmZTNhYmZhNmU3ZGYyIHJlbGVhc2UyMy1tYWludAorMzQwNDMgM2FmYmMzMzk3NTZhNmI3YmU2N2Y5ZGQ3ZjU2NzFiYTlkODlhZTQzYSBsZWdhY3ktdHJ1bmsKKzM0MDQ0IDM4N2E5ZTE4NDA3NGFhZjhiNWYxMWRlZTBjNTM1YTNmMjgxMjAwMTggbGVnYWN5LXRydW5rCiszNDA0NSBjNDI5NDRlYTk3NDNlNjdiZmY0YTIzMGJiZDg2OTZjMGEyYTVmMzcxIGxlZ2FjeS10cnVuaworMzQwNDYgNTYyMDg5YTg2NzhmMjgwMjYzMDlhZjM0M2RhZjMzMDEwYjZhNDk3ZSBsZWdhY3ktdHJ1bmsKKzM0MDQ3IDA1YTg1MDljZmIzY2IxOTVhODAzMmY4NzBkZDFkNTViNzlhYWYwNzggcmVsZWFzZTIzLW1haW50CiszNDA0OCA2M2RmNzQzMDVkN2JmNGI5MzA2YjNmMWE2N2I0MjA1ZmU1M2NjNzY5IHJlbGVhc2UyMy1tYWludAorMzQwNDkgYTExZTFjYjMwNjQ0NTY4M2NkNTI2YTNmMGFmZTZmZTgzODJjYTJhMCBsZWdhY3ktdHJ1bmsKKzM0MDUwIDhlZDBjZTYyYjgyZjE5NWQxMzk5MThjZmFjZTQ1NjA1YmUxZTYwMGQgbGVnYWN5LXRydW5rCiszNDA1MSBkNWRhYmQxNTE3NTNhNTQwMDBiMTZlYWQ0MzZkMmI3YTI2OWRkMjdkIHJlbGVhc2UyMy1tYWludAorMzQwNTIgMjA1Y2M5MThmMWFjYThlZmI1N2U3YmE5YzJiYWU0Yjg2MGIxNTdmNiByZWxlYXNlMjItbWFpbnQKKzM0MDUzIGQ1OWVjYTJlZmE2YTBkNDRlZDdhN2M0NjU5ZmRjNDQ0MjFiY2JkOGQgbGVnYWN5LXRydW5rCiszNDA1NCAwMDQ1M2EwNTA4ZGZlNzY3YjVmNTU2OWI1NmFjMDQ5ZDBjNDg2YzFmIGxlZ2FjeS10cnVuaworMzQwNTUgYWFmNmI2YTg1MTBiZWEwYmU3ODc4NGRkZmUyNzliYjZlMmMxN2VhYSBsZWdhY3ktdHJ1bmsKKzM0MDU2IGY2ZmM2ZDBjZjFlNWFlNzNiODY0NTkxYjM5YTRiNDI0MDY4MmI0NDIgbGVnYWN5LXRydW5rCiszNDA1NyA4MDRkMWNkMWIwNmRlYjQ0YzRhNDliMWE5NDU4YzU4ZGU1MzJhZWQ4IHJlbGVhc2UyMy1tYWludAorMzQwNTggZDYxNTM2MDM0NzJlM2MyZDUyYzE4Y2QwMmEwOThjYjg1OGQ0ODdlZCBsZWdhY3ktdHJ1bmsKKzM0MDU5IGY4NmQ4NjM2ODdjNjA2MzUxNDI2NjQwMjdhOGEzY2UxN2M4YjU2YjQgcmVsZWFzZTIzLW1haW50CiszNDA2MCAwODkxZDIyYWRmNGY0YjhjNTA5N2NjZGUwNWY0MDhmY2JjYzQ5NTdkIGxlZ2FjeS10cnVuaworMzQwNjEgMWRlMWRhM2VlM2U4N2RkMmJiZTA1NjIxY2YyNGMwNjI5YmVlYTQ1MiByZWxlYXNlMjMtbWFpbnQKKzM0MDYyIDhiOWE4YzRkZTI4ZTZiNWI3NDk4MTNiYmUyNjYxYjUzZjM1MzE4ZGMgbGVnYWN5LXRydW5rCiszNDA2MyAwNmVhZWY3ZDAyZjIxZTM0NDFlOGYyNDAxMjNkODY5ZGRhOTFlYWU0IHJlbGVhc2UyMy1tYWludAorMzQwNjQgZTViZDUwYzdlMTkzMzZiNDRhMzAzMzZkNDVjYzYzMjQ5ZTEwM2QwMSBsZWdhY3ktdHJ1bmsKKzM0MDY1IDc1MDQ4MTJmZGI3ZWIxYzllMjI5NGJmZTFkZThiNzE1ODZkYjAxMzYgbGVnYWN5LXRydW5rCiszNDA2NiBmMTRlMjUxMzY5YjJkNWM4OGNlN2QxZTYzZDgyMmMxM2ZhNjgzNWU5IHJlbGVhc2UyMy1tYWludAorMzQwNjcgODVlNjQyNTQzZGRhYTZjMjk5N2I0MTQ2MWIzYmEwYTVmMDM4NzBmZCBsZWdhY3ktdHJ1bmsKKzM0MDY4IDQ0NTQ3MzZjNmE4MmVhNjNiNGMxOWJiNGEyMjUxOGQ5NTAxZWI2OGMgcmVsZWFzZTIzLW1haW50CiszNDA2OSBiZTk1ODI3MzRiNTZhZTFmMWE2MTM0M2U2YmJlMWI3ODMzMGNiMmI4IGxlZ2FjeS10cnVuaworMzQwNzAgMzhlODc1MzUzNGI3OTc0MDAwMzY4YTkwZmM0YTExYzVlMmQ3MzZmOCBsZWdhY3ktdHJ1bmsKKzM0MDcxIDIxYjJhMjE1OTA0NmRiY2ZmZTVlMjJjZjA0NmQyNWExMzE0MDMyYzUgcmVsZWFzZTIzLW1haW50CiszNDA3MiA4ZGM5NGJkOWI4M2FlMDY0NWRjYWY0ZDcyYTNiN2E1N2E0ZGNhM2NlIHJlbGVhc2UyMy1tYWludAorMzQwNzMgODBhNGI4ZjZhZTBlNTJjNDYxMjA5OWQ1Y2YxOGFiM2VhZWY1NWI2MCBsZWdhY3ktdHJ1bmsKKzM0MDc0IDQ2YmRiNjZhZGNkYjc2MjAyOWRiYzY3NTEyOWI1MTZlY2FhZTI3NDYgbGVnYWN5LXRydW5rCiszNDA3NSAwNWU4YjUwM2NkNDE0ZTJiMzZhN2YxNDAxOWYzZDkxYzY4NzY0ZmJjIGxlZ2FjeS10cnVuaworMzQwNzYgNGFlOGI2NWNhYmE4ODg5ZWQ2OWExYTFlY2RhZDIyMjUwNzZhYTM5NiByZWxlYXNlMjMtbWFpbnQKKzM0MDc3IGMzYjJjZDZlZjI3Zjg4ZDk5ZDFiZmUwYTFjYTcxZTg0NjA0OTgxYTcgcmVsZWFzZTIzLW1haW50CiszNDA3OCBlNGNjMjMyZWQ1ODMwZGIyNWUyYmM5ZmQwMWU4MzU5Y2VjZWUyMzBhIGxlZ2FjeS10cnVuaworMzQwNzkgM2I3OTNjZjc0OGM1NjkwNTc4YmUyOThkYzkwNTI3YzJlZWQxMzY1NyByZWxlYXNlMjMtbWFpbnQKKzM0MDgwIGRjNTFhYmMzZjE3NDZkNTE4YjkwMWU1NDc0ZWJlZmJmYjg3MTBmNzcgcmVsZWFzZTIzLW1haW50CiszNDA4MSBkYjMxZDI1YjEzN2E0MzM2ODVkNjJkZGJkNWRmOWNkNjcxYWE4YWU0IHJlbGVhc2UyMy1tYWludAorMzQwODIgY2Y3ZmFkOWQ2ZmNjMzRhODg3NWRiYjM3YWExOWVjMzk1ZmRlODVkNSBsZWdhY3ktdHJ1bmsKKzM0MDgyIGQwNWFmMTU2MmM2NGYxOTgxNmIyNmQ5NThkYjlmNGM4ZjBkNDIyMDcgcmVsZWFzZTIzLW1haW50CiszNDA4MyA0YWE4NGE4YjFmZTQ5N2Q3MjQ1NmNjNjQ5ZmQ2ODEzNDZlNjQ2YWE2IGxlZ2FjeS10cnVuaworMzQwODQgM2VkY2NlMGVmYzU0YjhjMjU0NmE3YjRjMWMyMGY1NTcwYWVjNWNlOSByZWxlYXNlMjMtbWFpbnQKKzM0MDg1IDUxNTViMzg1MDJkNDgzMWEzZWQ1MTZmMTMxZmRjODE1YzU0MDUzZGQgbGVnYWN5LXRydW5rCiszNDA4NiAzNWY5MjQ5NjUwZTZiNWM5ZDc5YjhmMzlkODJiYWYxZTZjMWE2NWNmIHJlbGVhc2UyMy1tYWludAorMzQwODcgMGMzNjhlYzBjY2NiNDRkZTY1Y2Q3Y2M4Y2MyMjcyOWQxNmFhOTI2ZCByZWxlYXNlMjMtbWFpbnQKKzM0MDg4IGFjY2MyNTFjZGM0YTllYzBhYzZmMjgwNTI2MWExNjUzZmQwM2Q0MTkgbGVnYWN5LXRydW5rCiszNDA4OSBhNTJhMDc0ZThhZTVkYjE1NGY5ZWMwMGRhNTM5MWNkYjBiYmU3ZDc0IGxlZ2FjeS10cnVuaworMzQwOTAgMTk4N2I4NTVjZDNhMGMzZTIxNTgyZmU3NGQxNmYxMzhmYmQ0NWQzYiByZWxlYXNlMjMtbWFpbnQKKzM0MDkxIGZlMWNkMzc5NWE3YTkzYWU2ZWFkN2QwMjYyYzRkMTVlNGEwMWU0NjYgbGVnYWN5LXRydW5rCiszNDA5MiA5OTNlM2NhMzQ2NTYwYzFlMWJlMjgzMmMyOTliNWVhOTMwMWQ4OGI0IHJlbGVhc2UyMy1tYWludAorMzQwOTMgZjE1YTExY2Y4NTMxNjNjZWVhMWNiNTRmMjBhYTc0MDJhZmM4OTRkOSBsZWdhY3ktdHJ1bmsKKzM0MDk0IDI4MGIwYTFlMzFlMzY0MWM0OWY0Zjk3NDJhM2Y0MTEyODFhZWQ3ODUgcmVsZWFzZTIzLW1haW50CiszNDA5NSAxZTg2ZjJmNzEyZjIxOTNmODYxMjBkNmYwMjA4ZTYzY2EwMzNmYjkzIGxlZ2FjeS10cnVuaworMzQwOTYgNThmZmI2YjlmNmM1NzJlNTE3Yjk3NDQ0YWQ4ZWM1ZjkyNjcyODhmNiBsZWdhY3ktdHJ1bmsKKzM0MDk3IGM5NzJkOWU0MzE2ODhlNDQ2MzE1NmNmY2M0NDg4Yzg4YjAyODY5MjEgcmVsZWFzZTIzLW1haW50CiszNDA5OCA2YTkxMDE0NzFhZDM3MWI4MTFlN2M3M2EzY2RhMDY1OGZhZDViNjg1IGxlZ2FjeS10cnVuaworMzQwOTkgYWE3ODdlMzYxMmJiYzZmYTVmNzI5NGJmMGEyODg1YjZmZDQ2NzUyNSByZWxlYXNlMjMtbWFpbnQKKzM0MTAwIDAwMzk5MjhhMGY4NDM5YmIzZWIwZDE0MDM3YjY0OWI2MTg1NzgyYTIgbGVnYWN5LXRydW5rCiszNDEwMSBlMzhlYzRjYjg3ZTljMTY0MjdiZjUzZTMzODgyYTgzN2U3ZWU1YzhlIHJlbGVhc2UyMy1tYWludAorMzQxMDIgZDAzOWIxYmIxZWE5N2Y1MjExZDk2MGZkMjY3YTRiZDcwM2Y0MmFkNSBsZWdhY3ktdHJ1bmsKKzM0MTAzIDYyMTUzZTgyNTY0YmEzMTNkN2M2OTM0M2JlNTc1YWQ0M2E0MDFiNDQgcmVsZWFzZTIzLW1haW50CiszNDEwNCBlNDRhMzU5Yzg5OGUwYzE1MDMwNzkxNmE0YjhiN2I5OTRjZTkwNzgxIGxlZ2FjeS10cnVuaworMzQxMDUgMTBiYTY1Njc4NTJmZDA2OGZmNzAwZmM1ZTQzMDBhYWU3OTEyZDIxZiBsZWdhY3ktdHJ1bmsKKzM0MTA2IDk0ZjI1MjgzM2UxMzE0ZjBlOTY1MjU0YzEyMWQ2NWUxMDFmZjUzNjMgcmVsZWFzZTIzLW1haW50CiszNDEwNyBmZDE2MDE4NDA3ZTdlNTM0NDQ3OWQ4NzE5ZGQ2NjNiZTRmZGZiNmQ5IGxlZ2FjeS10cnVuaworMzQxMDggOTY3NTY5NDhkMWM5MjQ5NGI5MDI2ODQ2NWM0MTI0NjA3YWI4MWE2NiByZWxlYXNlMjMtbWFpbnQKKzM0MTA5IDExYzMyMDk1YzMwNTYxYzEwNDFkMzI1MTFhYTUzZjQ5ZmE5N2E1NTEgbGVnYWN5LXRydW5rCiszNDExMCBhNDMwYmU2ODNhN2FkMzNiNWI1ZDIwOTk3YzJhOGJjY2Q3YzJhNGQxIGxlZ2FjeS10cnVuaworMzQxMTEgYTY4NzdmZmQ5NTgyZDhhZTAzMzQ0Nzc1ZjE2YmU0MzAzMzBmMjdjZSBsZWdhY3ktdHJ1bmsKKzM0MTEyIDU0YWIxOTU1ZDI0MmUzNDlkNzgyMTM3NjNkYjdiY2M2NjZiNzJiN2YgbGVnYWN5LXRydW5rCiszNDExMyBkZDk4ZjI5Y2ZjOTg2MzMwZDI5YmEyNzdjZjBmZmU3ODYzNzkzZmNhIGxlZ2FjeS10cnVuaworMzQxMTQgNzc3M2VhN2IxYzY3NDkxZDg1M2VkYTQzYmQzOWMxMjdkZjk0ZWEwNCByZWxlYXNlMjMtbWFpbnQKKzM0MTE1IGI4NzM3YTMxMDUwY2EzY2M1ZDBiYzM3MzRiNjQ1YzBhYTU0NjYwOTYgbGVnYWN5LXRydW5rCiszNDExNiA2MmFlMjE5MTQ0YzRmNjJjZTVhZmJlYzAxMWQ2ZjllNTNlYzE0NjViIGxlZ2FjeS10cnVuaworMzQxMTcgMDQ1MTc0ZjZhNzlkYjMzYmIxMDc0MzRhNjE1ZjNhNzJkNzZhNTcxZSBsZWdhY3ktdHJ1bmsKKzM0MTE4IDQxYmJiYjQ4OTc2NGM4YzZmN2RiMzllMjI4MTdjZTFjZjJmYjY2ZTAgbGVnYWN5LXRydW5rCiszNDExOSAzNGJkNWMxOThjYWY4NzI0OTA2OGRmMjkyOTJkNDg0ODBlOTcxNTQwIGxlZ2FjeS10cnVuaworMzQxMjAgNjhlMWY4NjA1NmJjMzQ5YjdlY2MzYjgyNTQyZWQ4N2NiYWQyZmQ1MSBsZWdhY3ktdHJ1bmsKKzM0MTIxIDUzZjFjMzJlZTY5ZDc1YzI2ZjU0YjMxZWExZTU4YzM2Y2Y4Mzc3MWIgbGVnYWN5LXRydW5rCiszNDEyMiBlMTdjNDRjNzliMDNlNzE5ODc1MTBjMWE1MjE0N2RhZTdkMjNiZjg4IHJlbGVhc2UyMy1tYWludAorMzQxMjMgMzdmMGUwYjE0MDAzODU1YjkwYTBhYmJlN2ZmYTIyNzdjMWNmNzY4NCBsZWdhY3ktdHJ1bmsKKzM0MTI0IDIwZDk3ODg1ZTVjODkzNGQ0OWQwNGNlM2QzZjM4YTIzYWRjMjBjMDIgbGVnYWN5LXRydW5rCiszNDEyNSAyMzkyMWJjODEyNGJiYzVjMDY3OTI0ZTA2YzIwMmFkYzFlNjFjOGYzIHJlbGVhc2UyMy1tYWludAorMzQxMjYgYzY4ZWI0ZDRiNzg3OWUyMDQ4MmQzMzFhY2NkMmJkNDc0MDgyODMzZSBsZWdhY3ktdHJ1bmsKKzM0MTI3IGY0NGQ4YWRkZDNlODZhMWVlMDcyZGNkOWRhZTE4MWRiMzY5NWM4MzIgbGVnYWN5LXRydW5rCiszNDEyOCAxM2VjOGM0NzlmZjEwM2I0OWIzNzAyMTEzNDMxMzFhODliOGQzMTAzIGxlZ2FjeS10cnVuaworMzQxMjkgMzliZTk5YzY3N2Q1ZTI3ODUyNjE1MTM5ZmEyMTQxOWQ3MTcyOTU2OSByZWxlYXNlMjMtbWFpbnQKKzM0MTMwIDRkMjA0ZmMzYWQzMmYwYTM4NGRkNmMyYmM5ZmQxMGU2MzE0NDgyM2IgbGVnYWN5LXRydW5rCiszNDEzMSA3NDMzZTdjOWUyY2E0NTMzNWMxZmI2NTY0MjFiMWY5ZDQ5NmY5YTQ3IGxlZ2FjeS10cnVuaworMzQxMzIgNDYyN2MxNjg0OWFlZGM5YjU1YmUwNWZlZGJmNzAxY2UzNGYwM2QyYiBhc3QtYnJhbmNoCiszNDEzMyBhMjc0YjkwMzVkMWVhZTIzOTBhOGQ3MmY5YjU5ZDQwODkxMzQ3ZTlmIGFzdC1icmFuY2gKKzM0MTM0IDFlZGI1NDczODA5ZTZiOGY0ZTYyMTA1ZGNmYzVlNjZlYzU5MWY0OTcgYXN0LWJyYW5jaAorMzQxMzUgOTVhYjU1ZDE0MjU2ZjY4MDI5MjA2MGE3NThkOTJiMDkzMDUzYmU3ZSBsZWdhY3ktdHJ1bmsKKzM0MTM2IGQ4NjRmMzE2OGNhY2ZjYjVkMGJhNjZhYmY2YzU3NzVmYTQ4OWU3MTUgbGVnYWN5LXRydW5rCiszNDEzNyAyZjU4MjJkMGY4ZTE1YzBiYmE1ZDVjOTAzZjBlNzBjNzYxMzdkNGY5IHJlbGVhc2UyMy1icmFuY2gKKzM0MTM4IDc5OTE5YzU1MGRmZWRkYWU3ODUwOTE3YmRiNTE5Mzg4YWIzNGNjOTggcmVsZWFzZTIzLW1haW50CiszNDEzOSAwYTE1MGVhOGNiZWEyOGY0Y2I4MGMzNWU3ZjRiMjUzYzhhMDJhZmQzIGxlZ2FjeS10cnVuaworMzQxNDAgYzJjMTBmMWViOGUyYjc0YmJjODRjYTQ3NmQxMDBlMTkzNGI3ZmYyNyBsZWdhY3ktdHJ1bmsKKzM0MTQxIGM5Y2MzNTI0OTMyMmQ3OGYxMTMzNTZiMjdkNDQxZjU4ZThlOGRjOTUgbGVnYWN5LXRydW5rCiszNDE0MiBhOGYwNGNiZjY1OWNiMDI2Y2MyYjgxYzNlNGNkMGI0YTJhYzRhZjExIGxlZ2FjeS10cnVuaworMzQxNDMgY2QwYzNmOTE2YjM0Y2NmMjY5ZTU2ZDJlOGM0NmVkMjQxMzc0OGM2MSBsZWdhY3ktdHJ1bmsKKzM0MTQ0IGU4MTQ3Zjg0MWE0YWIyZGEzZTdkYjFjNmUwOThiMTY3MWY2ZWUwNjIgbGVnYWN5LXRydW5rCiszNDE0NSBjOWY5ZWIxM2VhYzkzMDVlYmExMzRkODExZDg0NTYwZWRiNjhmMmYxIHJlbGVhc2UyMy1tYWludAorMzQxNDYgMTcyNTQ3MGQwZDQzY2FiMmM4ZDE3MDBmYTBjZjk4OWZhMTdhMDlhNSBsZWdhY3ktdHJ1bmsKKzM0MTQ3IGVkOGIzYzAyODE3NGIwNTI2YmFhM2JmZGJhM2Y1MmNiNzEzZThkYTIgcmVsZWFzZTIzLW1haW50CiszNDE0OCA2YmZiODJiZmJiNTZjZGRmYzMxYTIyMWQzMThmMTE0ZTEwYmM5MzY0IHJlbGVhc2UyMy1tYWludAorMzQxNDkgNDFjMmUxNzIzY2RkZDdhYzE3YzdkZGFkMDZmMGY0MzY4ODg2MmY1NCBsZWdhY3ktdHJ1bmsKKzM0MTUwIGVmNGE3MWY1YWYyMjM4ZWJiNmFiNDhjYzA5ZDlhNWQyZmIxYzgzMDcgcmVsZWFzZTIzLW1haW50CiszNDE1MSAzMGU0OTVlZmU5MGEzNjVkMjA1MzI0YWZiNjliNDVhNTE1ZDJmYjk1IGxlZ2FjeS10cnVuaworMzQxNTIgNzg0ZTM4YWJlZDgyMDMxNmViMDg2MzE2ZjYzZjBkMmY3MDI1MThmNiByZWxlYXNlMjMtbWFpbnQKKzM0MTUzIDc2ZTk5OGFlZTY0NDY1ODVmMThhMzRmNGI3MGQ4MTc4OTVkYWEwZmMgbGVnYWN5LXRydW5rCiszNDE1NCA1OWIwYTQ4YTU2NDQ1MDdiM2M2OTNhOGJmNzRkOTYwMjk5NmI2OTU4IHJlbGVhc2UyMy1tYWludAorMzQxNTUgZjg5YWI3OTg1M2E3MGMzOWUxOWY1M2YzZTlmNTg4Mzk0ZTI3OTNjNCBsZWdhY3ktdHJ1bmsKKzM0MTU2IDBiMGFkN2QxZGRkNmE5ODUzMGY0YzhhNGM4YzFkZTQ3ZjNjNTg3NWIgbGVnYWN5LXRydW5rCiszNDE1NyA3MmJmYzc4NmE0Zjg5MmQ1MTNmMzA1ZjA3ZjAxNjE4YTQxYzRjYmM5IHJlbGVhc2UyMy1tYWludAorMzQxNTggYThhMWJlZjQwN2ViMjZjYzhiZTRiMzE0YzlmNWM1YTZiNzViNDM5ZSByZWxlYXNlMjMtbWFpbnQKKzM0MTU5IDY2MjIzM2U2NmQyODJlY2EwN2Y3NmJmMTYyZWJhOTcxYjY0MzEwNDggcmVsZWFzZTIyLW1haW50CiszNDE2MCA3Y2I2NzQ1YmU1MjVjMGE4NGVjMGIxOWIxNDQ0NmEwMDM0MjQzYmMzIGxlZ2FjeS10cnVuaworMzQxNjEgMmE0OTcwOWMwZDU2M2U0YmRjMjQ2NTUwODFhMTQxN2U3NjIyODY1MiBsZWdhY3ktdHJ1bmsKKzM0MTYyIDgzNGJiOWExNTQxOWIwZjYxZDkxYjdmNzNlOWRmMWIzM2ZlM2U0YzAgcmVsZWFzZTIzLW1haW50CiszNDE2MyBiMzljYjkyMTJmNWM4OGNjMjNlODQ5YTJlNzViOTEwMDM0YjE2OTNhIGxlZ2FjeS10cnVuaworMzQxNjQgYmExZTAzY2QyZjQwZmExMmMzMTllZmFjNzQ1ZDQ4ZjgyOWMzZGNlYiByZWxlYXNlMjMtbWFpbnQKKzM0MTY1IGE4NWE3MDEyZGRkYTczY2VmNWQwZmQ2ZmYyNTVmY2EzNzcxNTM1MGEgcmVsZWFzZTIzLW1haW50CiszNDE2NiAwY2FkOTA5NGUyM2U5Y2I3MTI3OTBlYWU5MjYyZmU1ODdjNTNlMzIyIHJlbGVhc2UyMy1tYWludAorMzQxNjcgYmJhN2UxZTBmMWM3NTNhODIyMDBkZDAzZTBkNGZiMTJkZjIxZjdlMSBsZWdhY3ktdHJ1bmsKKzM0MTY4IDkxZmY3MjcwM2VkMzVhYWRmNjVkNGRhYTlmNDE3NzBjN2NiMDBhYWEgcmVsZWFzZTIzLW1haW50CiszNDE2OSA5MjMzYWQwZWFhOTg0NmFhYjdlNTg4NjU1ZWMyYjBmZTcwN2FiZTRjIGxlZ2FjeS10cnVuaworMzQxNzAgNjFkYmEwYWE5ZTM3NGRmMjI5NTBmYWQ0OTMxMjdiZWExMzg4ZThiZSBsZWdhY3ktdHJ1bmsKKzM0MTcxIDFkNjMxMDZlN2RmYTQ4ODNjMWMwYTRmODAxYTM1M2I2ZjMxOTYyNzcgcmVsZWFzZTIzLW1haW50CiszNDE3MiBkNWM0NWI4ZGFhNTJiYzE4ZmQwOTVkNzJkYjdlYjk1NzNhZGE1YjQ3IGxlZ2FjeS10cnVuaworMzQxNzMgOGQyMWZiMmUyNmIwNjkzOTczNDliODMwOTE0MjgxNWZhOTYyYjYyOCByZWxlYXNlMjMtbWFpbnQKKzM0MTc0IDY1YmFjNTlhMzkyODA2OGU3ZjkzODViN2RkMjljOWMzZDM2YzM5NzAgbGVnYWN5LXRydW5rCiszNDE3NSBjYjcyMzY5OTIwYWNhYzE2YjE0MzFhZDQyNTljMzA5ODEwMGZjY2U0IHJlbGVhc2UyMy1tYWludAorMzQxNzYgZDdmMTNhNDllNWVmNjhhMmI1NDhhZDM2MDlkZTg1ZDBiYzkyYTdjYyBsZWdhY3ktdHJ1bmsKKzM0MTc3IDVmOTJkNjYwN2I5ZjBiYTI0NTY5OGQ1NmQ2MjVlYWI2MTY2NDhmZTIgcmVsZWFzZTIzLW1haW50CiszNDE3OCAxYTgxNzY5NGVjYmQ3ZTQ5ZmM5MTVhNWViYTlkZDU2YzE5ZjliYjRkIGxlZ2FjeS10cnVuaworMzQxNzkgNTE4Y2NjMDY0Y2I5ZjMyYjZhNjFmNDljNjJkMDBlYjIzYzYyYTcwNCBsZWdhY3ktdHJ1bmsKKzM0MTgwIGEzN2IyMzcxNGQzZGRkYjU5NmUxZWZjMTVlMTkzNTQ0ZGZhZTMyZTcgcmVsZWFzZTIzLW1haW50CiszNDE4MSA1NTg1N2FlYmMyNGYyM2YyZjJlMGU4ODUyZDQ0ZWQyMDQ5ZjZkNzMwIGxlZ2FjeS10cnVuaworMzQxODIgMWUxZTY4NWQ2OWVmNzhiZGI5OTE3NjcwOTgxZWE3ZmZhMmZkZDRiYyBsZWdhY3ktdHJ1bmsKKzM0MTgzIDk0ZDgyOTM2NzQ3MzcwM2IxOGQ5ZGFhNTRiMDNkMDNlYTA1MzFmZjUgbGVnYWN5LXRydW5rCiszNDE4NCAwODQ0MDhmZWU5NjE0ZTU0ODNlZmVmMGU2ZjU5MmU1YzBhMDM3NjgyIGxlZ2FjeS10cnVuaworMzQxODUgNDI1YmYwN2VhNzBiOGMyZDFlNmExYmE5MWZjOWJiM2IyNTEyZTBmOSBsZWdhY3ktdHJ1bmsKKzM0MTg2IDhkZDA3ZjdkMDkzYjdhMDA1MmZhNzNkZDYyNTEzYjcwYzE5Mzg1MGMgbGVnYWN5LXRydW5rCiszNDE4OCAxODVjNWY2YjYxNTc4NDBiMDU0MWFjMDFiMjc4NWU3NmI1YzM5NWU1IGxlZ2FjeS10cnVuaworMzQxOTAgZGJhNmVmMzA0YWE0NDA4ODA2ZjJhZGEzMDhiN2ZkOWIyMjRkOTgyNSBhc3QtYnJhbmNoCiszNDE5MSA3NmQ5ZDE4ZWYzZTQ5NWFiMGIwZjZlMzgyYzIxZDk5NzRkNDQ5YzQwIHJlbGVhc2UyMy1tYWludAorMzQxOTIgMDdlNjQwYzQwMTZkZmUzOGQyMjVhYTQyYmQ4NjhlYzA5MWQ4NjE1ZCByZWxlYXNlMjMtbWFpbnQKKzM0MTkzIGIyOTE5YTRjNTU4YzZmNDA4YTIzY2I2YTNhOWY2ZTU0YjEwNmJiYTEgbGVnYWN5LXRydW5rCiszNDE5NCAyZjNmNTZmMTI4MGZjZWNkYWMwOWZjMTMxNWY4ZDkxZDEwNjdjYjc4IHJlbGVhc2UyMy1tYWludAorMzQxOTUgOWRmOWJkNDMwYzM2ZDJjODM4YzE2Y2E1YTA4MTZmN2JmNmJjZGQ2NyByZWxlYXNlMjMtbWFpbnQKKzM0MTk2IDc3YWM0NTU4MGM0MDhkNTg2MmY0NmZmYjBlMmFlNmM3NjVlNDViNGQgcmVsZWFzZTIzLW1haW50CiszNDE5NyA1MWU4NWU4YmZhNDczMmFjOTgwNjY5YjMxNGRiMjYyN2Q2M2E4OWM3IGxlZ2FjeS10cnVuaworMzQxOTggYzQ4YTJjYzkzNzgwZjQxYTc3YWFmY2ViN2EwYTgxMTYzNDcwMzA3OSBsZWdhY3ktdHJ1bmsKKzM0MTk5IDFhNzkyZjM2YjY5ZTM2YTRjNWJlZmE2MWEyMzdmYmY1YmU4MGI3YTUgcmVsZWFzZTIzLW1haW50CiszNDIwMCAwMjI1N2Y2YTY4MmE3ODMxN2VmNDZmOTVmZjEzYmQ2Y2UxNDVjODg5IGxlZ2FjeS10cnVuaworMzQyMDEgMWJjNmVmMWY2YmRiNDc5MWE5ODQ1MWYzZThiYTI3YTVlMjkzYmI3NSByZWxlYXNlMjMtbWFpbnQKKzM0MjAyIGQ3YmYxMjMyYTg2ZDE0NGQ0YmExNzBiNTA3YjZkMmIwZjgxOTRmZWUgcmVsZWFzZTIzLW1haW50CiszNDIwMyBiMGMzZDk4NmY2M2Y3NTgzNTMxMGQ2N2RiOTMxOTRjM2E4MTM4NGQ3IGxlZ2FjeS10cnVuaworMzQyMDQgYTdjNGFhODFlYjg1YzAxMGE3Yjg1OWQzNzMzMzExMGExNmI1MDdjOCByZWxlYXNlMjMtbWFpbnQKKzM0MjA1IDc2OTc5YWZjNzg1YmQ2M2QwMDY2MWJmZDVkYzEyZWIwM2RiNmU5N2QgcmVsZWFzZTIyLW1haW50CiszNDIwNiBhZDI1M2MwNmJhZjFkNGFmMmEzMjEzOTdjZDY0NzZjZjI0MTNiZmQyIHJlbGVhc2UyMy1tYWludAorMzQyMDcgMDk2N2NiOTA1MzRjYzZhN2VlMTg2M2I4ODBlMGEzMGM0M2UwNDdhMSBsZWdhY3ktdHJ1bmsKKzM0MjA4IGUyYjlkNDM2ZjhmN2FmOWNhYmYxMGRhNjllZTA2NDNkZThiZjRmMDUgcmVsZWFzZTIzLW1haW50CiszNDIwOSAzZjI4OTY0ZjhlY2NjOTQwMTNlODY4ZDIzMGM3MWVlNWNkMjhlMmRiIGxlZ2FjeS10cnVuaworMzQyMTAgODcxNzc2ZDM4MjEzYTkwNjdjNmQ5YmFmODkxOGVhZGJjMTdkMzg5ZiBsZWdhY3ktdHJ1bmsKKzM0MjExIDE3NzY1ODc4NWZlYjhkMjYzMTVhOTFkY2U4OTdjNmI5NThlMjUyMDcgbGVnYWN5LXRydW5rCiszNDIxMiA4MzYwYzc0ZDA1M2JhZDViYmUwMzM5ZmMzY2I5ZTQxYzg4Y2E2NTM2IHJlbGVhc2UyMy1tYWludAorMzQyMTMgNWM1YWRiNTQ0M2NjZTg5ODE0YmRlMGVkNzMwMzgwY2VkMzU2NTEzOCByZWxlYXNlMjMtbWFpbnQKKzM0MjE0IGQ2ZjRkZDVhNTAwNmI5ZjEzNjY3NjU0ZDM5Mzg1NWY3YWQxMjlmYmEgcmVsZWFzZTIzLW1haW50CiszNDIxNSAzMzljODgwNGY4MDRhOGVlNDUxZWI4NWJiMmMzMzM3N2U4MzViM2Q1IGxlZ2FjeS10cnVuaworMzQyMTYgNThmMDFjYzBmMzAwYWIxOGYxNDgxZWM0MDY2Y2YzNzljMjNkNjRlOSBsZWdhY3ktdHJ1bmsKKzM0MjE3IDU4Zjk2YTAwZDM4ZGMwMDJhZGU4MTg4ZTRmNGVlNjQwYWZiZTBmMGMgcmVsZWFzZTIzLW1haW50CiszNDIxOCAyNTRiZDNlODkxZjZkOTU5MWM5MWUwZjhiYjE5ODMxMDRmNjUwMmMyIGxlZ2FjeS10cnVuaworMzQyMTkgMGVkMWVhY2UyYTYwYmFlYTc0ZGNkNWUxNmJkMzlkY2NjZTZjOTkxMiByZWxlYXNlMjMtbWFpbnQKKzM0MjIwIGY0YTAxYzQwNWE0NGI2MTcwNWExM2NmNzU5NmU1ZTliZGYyMjk1NzEgcmVsZWFzZTIzLW1haW50CiszNDIyMSBjZThkMWY5NTFlMTkyZmVjOGY0NjdlMzUwNGFiZDQ2NTU3NDljZDM1IGxlZ2FjeS10cnVuaworMzQyMjIgZDc1NTkyZjZlMmY3Y2ZlMGViZDg3OTMwMTQzMjQyMTUxOTY1NzE4MiBsZWdhY3ktdHJ1bmsKKzM0MjIzIDk1NGI2MDliODRjZDA5OTZmYjRmZDNmYjRlODA3ZGE3NWJmMzcyOTAgcmVsZWFzZTIzLW1haW50CiszNDIyNCA3NzRhOWYyMWVkYjk3ZDQ0OGU2YTU1OWE2MzUyNjcxMWE5ZGE5MDQxIHJlbGVhc2UyMy1tYWludAorMzQyMjUgZTk3MjMwZTVjMWNhOTBmNzdjYTI3NTI2OGNlZmY0OGFmOTI3NDkxYSByZWxlYXNlMjMtbWFpbnQKKzM0MjI2IDkzMWU4ODg5OTFiYWI3NDExMDhiMGY4NmY5OGEwMTZhODE5ZDc4YmUgbGVnYWN5LXRydW5rCiszNDIyNyBmM2NlMTlkOTYxZGRhNmU1M2ZlNDc3YjYwODg1MDUwNjUzYjhhYTI3IHJlbGVhc2UyMy1tYWludAorMzQyMjggNTM4M2Q1NjJhMzhkODFiZTJlOGZiYTQwZTdlNTNkOTkxNDE0MTlkNCBsZWdhY3ktdHJ1bmsKKzM0MjI5IDZlMWY3ZGJlY2Q4NGQ1M2I0OWZkODA0MzdiMDM1MGRjZWQ5NmFkMzEgcmVsZWFzZTIzLW1haW50CiszNDIzMCBjOTcwMDhlZTcxNjYwNzRiMDQ5OTgyZDg5M2Q2MmRkN2RhMDkwYThlIHJlbGVhc2UyMy1tYWludAorMzQyMzEgYjI3MjhjODdkZjlmYmYyMzM0NzhhM2Y3NTY4OTY5MGU2OWNhZGMxZiByZWxlYXNlMjMtbWFpbnQKKzM0MjMyIDI2Y2M1ODY1YTgzNjYzM2JmM2YwZmZjM2Y3YzM1OTQxODlkNjQ1ZWQgcmVsZWFzZTIzLW1haW50CiszNDIzMyBhMWI5NjVlMWJiZTlkOGY0ZDg2YjRlOWQ4YzE3YjM1ODUzNGVjYjEzIHJlbGVhc2UyMy1tYWludAorMzQyMzQgODE2ZDQ4NjdmMjEwNjVlMWIzOTJhOGE5ODY4ZDE3ZjRmZDAwNDQ4NiByZWxlYXNlMjMtbWFpbnQKKzM0MjM1IDdlNjBkODI3MzBmZDhhZDQxNjM3MTljNjI1ZGM5YWRmYmY5NjA4ZjkgbGVnYWN5LXRydW5rCiszNDIzNiAwMTgyY2VjNTA4YWFiNGZmOWU4MTlhMmQ3N2UxNDA1MDZmMTQ4MjU4IGxlZ2FjeS10cnVuaworMzQyMzcgZGI2M2NiMGZjN2RhMTc5YTRhMzJhMjRiYzJhNGU3ZmExMDEwZmI2ZCBsZWdhY3ktdHJ1bmsKKzM0MjM4IDljMmViNDE1MTMwZjM0ZDNmZTVlZDc0N2Y3NTMyZjFkMjI4NTI0NzAgcmVsZWFzZTIzLW1haW50CiszNDIzOSA3Mzg5ZmY1Nzc4NzM5MGIzNDczMjExZDdmZDU2OTBhMThiZTQyMDNkIHJlbGVhc2UyMy1tYWludAorMzQyNDAgYjkyYjM3YjAxZmZiMTYwODMzNGVkOWFlMjZjMzIwMDVjYzU3MDhkMiByZWxlYXNlMjMtbWFpbnQKKzM0MjQxIGU1YmFjYjk1OTdmN2I0NGFhN2RjMGQyZDQyMGE5NThkYjY3NGNjMjUgbGVnYWN5LXRydW5rCiszNDI0MiBmYmFkM2VmYTQwYmJkY2Y2ZDRiOTZhMzllMDUyZDYxNmNhNGFiMDcyIGxlZ2FjeS10cnVuaworMzQyNDMgNjJjNmFmZTM3ZDEyM2FhM2E4NGEwMTdjOTBiZjc3NzlkMjE1M2ZjZSBsZWdhY3ktdHJ1bmsKKzM0MjQ0IDkyOWU1NDgxNzRjNWZhZTkzYmM5MGY1MGI2MjFhMGZhYmFkZTE5N2IgcmVsZWFzZTIzLW1haW50CiszNDI0NSBkYmU4MzkxZWQwNmYyMzliNDM5ZDVjZTEyYjJiYmI5NzA0N2E4MDc4IHJlbGVhc2UyMy1tYWludAorMzQyNDUgZmE2NWY2NTI3ZmUxMzRhYTk3ZTAzZTFiMmFmMzY1ZDQ0M2I2N2RjNyByZWxlYXNlMjMtbWFpbnQKKzM0MjQ3IGRhOWI3NDA3ZTU2YzJhYWU5ZDI0NjZjMGM0YTY1ZDAwYmE5ZTRhZTggbGVnYWN5LXRydW5rCiszNDI0OCBhMTViMWMzYzIzNmE0YjI0Yzk2OTI4NTBlMGE0NTNkNTUzNThlNjExIGxlZ2FjeS10cnVuaworMzQyNDkgNzE3MDI0ZGJiYmFjN2Q4N2NkYzQ4MjNjNjBkOTljYThhNjE3NzQxNCBsZWdhY3ktdHJ1bmsKKzM0MjUwIDJhMTY1ZGRmMjIyZGM0MjliNzU4ZTI3NzEyNTYwNzQ4MjY4ZGU5NjcgbGVnYWN5LXRydW5rCiszNDI1MSA1MjkwYTQ5MzYxNzBkYzg4ZmMzOGY4ZjczNjJhMmE0YzU4M2UwMjAxIGxlZ2FjeS10cnVuaworMzQyNTIgYmI4MjUxMWQxOTA2YTI3OThiMjA1OGQ1OTJmNmI2ZTg4YTAxNTFlZCBsZWdhY3ktdHJ1bmsKKzM0MjUzIDY5M2QxN2RmYjhmZDQ4ZDUyMjY0YWJkOTgwNTY3NDg3ZGI4OTY1YTkgbGVnYWN5LXRydW5rCiszNDI1NCA1NjM5MDg5MWQ5ODhjODc1OWVhMTBjOTA0ZDMxNDU3MWUxODIwYmQ4IGxlZ2FjeS10cnVuaworMzQyNTUgOWNkNGY0YWU3YTRjMmI4Y2RjZTNhYTY0YTdjMTQ3NzBmOWY2NmM2ZSBsZWdhY3ktdHJ1bmsKKzM0MjU2IDVlYzQyMzNlZGNlZGM0NzI1NWE0ZDExYzdmMGQ4NjYyMmVmYmIyMDUgbGVnYWN5LXRydW5rCiszNDI1NyA3MDM3ODJkOTAxNjEzYzYwOGFhNjk1MjNjMmJmNWU1NzA5YjJjODNiIGxlZ2FjeS10cnVuaworMzQyNTggNWQyYmE0MzdlMWJkM2IzNGFkNTc1Y2E3M2U4OWZkYmUzYzFmOTA2YSByZWxlYXNlMjMtbWFpbnQKKzM0MjU5IGUyZjUwYTdjYzQ5NGY5MDc0OTI4MWYzM2IzOGNlYmJkZDZlZjM1ODMgbGVnYWN5LXRydW5rCiszNDI2MCAyY2U5Zjg5YzRiYmM5YjU3YjRmOTdkNzY3MmFhZjkxNGM5OTE4YzAxIHJlbGVhc2UyMi1tYWludAorMzQyNjEgZGRlMjc2YTg4Yzg4YTBkNGJhMjU2OTMxNDc5N2RjZWFiNGM4NmMwYiBsZWdhY3ktdHJ1bmsKKzM0MjYyIDM2MWI1MGEwZDI3ZmFkN2I0Y2ZlY2ZmYjg2ZjIxZWU1NjljNjY5ZjkgcmVsZWFzZTIzLW1haW50CiszNDI2MyAzMzJiZmYyNzViMjE4YzRlOGQxZDc4M2FkMjJmMzczYTQxM2U4ZDhhIHJlbGVhc2UyMy1tYWludAorMzQyNjQgYWQxOGY1YjhkNmY0YzYxYjJhYTc3ODZjNTQ3NWYyMTQ4NWE0M2VmYSByZWxlYXNlMjMtbWFpbnQKKzM0MjY1IDhjOWY0OGJhNTBmYTE2NTEyODZkODZkNzE3MDVhMzY5MzkyYTNkYjQgcmVsZWFzZTIzLW1haW50CiszNDI2NiAwNDU3MDQ5ZjI1ZTBhMGExNzdjM2U1MTYwMDQzZjhjNTc3YmI0MTQ4IGxlZ2FjeS10cnVuaworMzQyNjcgYjdhMjEzNWZjMTU2YWE2MWE3MTAyZTYwNjE5Y2E5NDVjYTdjZGUyYiBsZWdhY3ktdHJ1bmsKKzM0MjY4IDAzMmI5MjU4ODg1YjcxODI5M2U0YzdlYjM5YzQwN2IzNGRlZGIwYzIgcmVsZWFzZTIzLW1haW50CiszNDI2OSBhNTY3MWFlY2YzOTAxM2M2YzY5MDUwNGM3NDg1NmE5NmE2MmEwN2U4IGxlZ2FjeS10cnVuaworMzQyNzAgYTU2NmM0OWI3MGZhZjlmNjc0YjQ3ZjI0ZjEzZDRlNDk4ZjAxODc2YSByZWxlYXNlMjMtbWFpbnQKKzM0MjcxIDg1MjllYWM1MDY1ZDIxNjk3ZmU3Zjc1YTJiMTkxMGIzNGFmYTcxNzggbGVnYWN5LXRydW5rCiszNDI3MiBkOTZlN2Y4MmQzOTk5OTk0YmE4ZTU2YTQ0MDg1NDU2MTAwNDQ2MTkwIHJlbGVhc2UyMy1tYWludAorMzQyNzMgZTFiYWEyNDliM2YyM2Q5MjI0OWU1YmNiNDBkZmVkZjA0MzM4Y2RlNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjc0IDZmMzM0M2RlNjViMjJjNzMxNmE3NmM2NjY4NzZjMGZjOGZmMDM5YjEgcmVsZWFzZTIzLW1haW50CiszNDI3NSAxMmRhMzRlZjg4NTRmYjEzNGRmMWY4ODc2N2FmMzdiYmY4OTYxNTI4IGxlZ2FjeS10cnVuaworMzQyNzYgN2Y0OGU4OTQzOWUwYmVkYzMzY2E2YTkxNzUyZDUzNjQyODZjY2I0ZSBsZWdhY3ktdHJ1bmsKKzM0Mjc3IGRkNDQ4NTk0M2YyM2Y0ODVhYTgwNzBmODljYTdmZDk3MDlhMzhmYjYgcmVsZWFzZTIzLW1haW50CiszNDI3OCA5NGI0ZmNlN2E5OThiMjM4MmJkOTI2YTFjM2JlYTdlZTUyZmNmMWNkIHJlbGVhc2UyMy1tYWludAorMzQyNzkgNmMwNDAyZGFmYjE4Y2M1OGFiN2U5OWJmYjE4NTI0ODc3NjMxZGNhZCByZWxlYXNlMjMtbWFpbnQKKzM0MjgwIDYzYWUxYjkxYTg2ODU1YWRkYzRhZWY0NTkyMjg0MGMyNDkwN2NhOTEgbGVnYWN5LXRydW5rCiszNDI4MSAwMzVjOTc4M2E0ZGRiYWZhMTc0ZTYwN2QyNTRiNzY4Zjc2MGFjOTRhIHJlbGVhc2UyMy1tYWludAorMzQyODIgODU0MDcxMmQ2ZTJkMzE3NWM4MWE5MTFkMDdlNjYyYjlhYWY5ZjIyMSBsZWdhY3ktdHJ1bmsKKzM0MjgzIGUxOGMxMGNhNzQwODI4NjhkYWVmNjJlYWIzMmFjOGI1Y2MzMTMxZGQgcmVsZWFzZTIzLW1haW50CiszNDI4NCA1OWI4NTFiNmFkMzNhNTdmNTEwNTZjNzMxNmI3MGY3MzJlMGQyOTZlIGxlZ2FjeS10cnVuaworMzQyODUgYTUzZWFiZTAyNzI5ODQ3Y2FlNDhiODQ1Y2ZmOGU4MDNlMmU3OGFhNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjg2IDdiYzUxYmU3NWZlYmZkNzIyN2U4MmE5MDc2MzQ0NmIyZjE4OGFhNmEgbGVnYWN5LXRydW5rCiszNDI4NyAzZDFhZTFjODZmZDM5MzY3MTc1NGUzMjhlMGNhNzMwOTNjM2I0NzQ5IHJlbGVhc2UyMy1tYWludAorMzQyODggZTZjZWE3N2FiZWUzNmZmMWVmMTk3MTQ0OGM0ZTE2MTllZTJmOGExNCBsZWdhY3ktdHJ1bmsKKzM0Mjg5IDA2MTY0YzZkYzUwOWYxNGMzZGE5YzQwMTVlYWVmNDA2NzZmODYzMTcgbGVnYWN5LXRydW5rCiszNDI5MCBiZDRjNGI2ZTA5YTE3MjQ0NzZiMWIxOWJlZDFlY2NlNTRhMjQyYTUwIGxlZ2FjeS10cnVuaworMzQyOTEgMGM5YWE3ZTU1NDE1N2M1OGNkODFmNmNkZDI0ZDFlMDU5ZDIyZTkwNCByZWxlYXNlMjMtbWFpbnQKKzM0MjkyIGZjN2VmNGZkZTI3YTFlZGZkZmMwN2Q1NDU2NmRmNTE3NWQ0ZTU5ODcgcmVsZWFzZTIzLW1haW50CiszNDI5MyBiOTU3OTc2Y2Q4ZTdkYjQ2MDVmNWRjMDJmNGY1ZDMwMjgyN2JkYzU4IHJlbGVhc2UyMy1tYWludAorMzQyOTQgNThiOThmOTg4YTA4MTlhMGQzMTU1YmJhN2Q4OGRmODRjYjQyOTZhNSByZWxlYXNlMjMtbWFpbnQKKzM0Mjk1IDNlZjg3YTBiYmJhZDA1MjYyMjQwMjJhYzVkZmE1Mjg3NDA5Y2QyNTYgbGVnYWN5LXRydW5rCiszNDI5NiBhYjNlNzcwYzNhOTliZmI3NzE3MjEwMjc3MjJjM2U4NGM4ZWZmYTExIGxlZ2FjeS10cnVuaworMzQyOTcgOThhNmI2MDE1MjI5OTYzMmU4NDgxZTNiOTNjZjdhYjZkMmU4YjUxOCBsZWdhY3ktdHJ1bmsKKzM0Mjk4IGQzNGI2ZjkyZGQzMjVkNmJkYzZlYjhlZTc2MTBmYmRjMjM5NmRhMjggbGVnYWN5LXRydW5rCiszNDI5OSBkYWY4YzkzMjc4NmQyOTg0ZjVlOTI5NzUyNDQ5YmQ0MWViYTA4NmZkIGxlZ2FjeS10cnVuaworMzQzMDAgMzQxNzVlOTQwODFjYTk2YWVmOGMyMmQ1Y2VhOGY0NDZiNmU5YzU3ZCBsZWdhY3ktdHJ1bmsKKzM0MzAxIGM5NTFmOWMzMDZmMzI0Zjc3Yzg0NDExZjFjNjM1MWIzYWU3NzYyM2QgcmVsZWFzZTIzLW1haW50CiszNDMwMiBjZGRiN2M4ZGIzNjc5MTUxM2U5OTdiYjI3ZTNlYTg5NmI1YzBjZTk0IGxlZ2FjeS10cnVuaworMzQzMDMgNjdjZDNlN2QwZWFjZDg5Yzg1MWQyOWE2NGJiMmJhYmUyZDc1OGVjYiBsZWdhY3ktdHJ1bmsKKzM0MzA0IGI2YzBmOTA4YmViODA5ZjFjN2Q1ZGEwZTIyMDQ3YmE4NzVmZmY2YWMgbGVnYWN5LXRydW5rCiszNDMwNSA3NDFmNzlmMTAxMmEwZWI0MzM0OTVkMmI2YTQyOTRkYzFkOTBmMWUxIHJlbGVhc2UyMy1tYWludAorMzQzMDYgMjA3MTI0ZjZhOGQ3YjJkNGMxNTM1MjZlNWE1NTc5Mjg5NjhhN2EzNyByZWxlYXNlMjMtbWFpbnQKKzM0MzA3IGZkNTQwMjIwZmZjNGYwODAxZWY2OWJkNDQyOGY4NmVmMWRkMjJiZjcgcmVsZWFzZTIzLW1haW50CiszNDMwOCAzZTFiZjc1MTA2NDExMGRlMzE4YWFhZTU1YmYxNTI4YWM4NjE5NjhlIHJlbGVhc2UyMy1tYWludAorMzQzMDkgYzg3NmFjNGQwMzM3MTk1ZjhjYWM3ZDM3ZTRmNGI4N2FlZDI2MDVkNiBsZWdhY3ktdHJ1bmsKKzM0MzEwIDYzYzY0MDg4ZmY0OTgwMDU2NTcyMTRlMWM0NjI2YTViMzRhMjNlNzYgbGVnYWN5LXRydW5rCiszNDMxMSAwMDI4ZWY0NWE1MGVhNTVhY2E3Y2JkM2VhNzdiODkwOGRiOGNlN2MzIHJlbGVhc2UyMy1tYWludAorMzQzMTIgNmQ3NTM4MzI3NDM0MmYwMDM1ZjBlM2Y4ODM0NDk0NTAyYTQ1YmE4OCByZWxlYXNlMjMtbWFpbnQKKzM0MzEyIDdkNzM2MmE3MTI1M2JmZjRmYzFiMGM4MjVjMTQ1Njk3NzhkYjhjMzYgcmVsZWFzZTIzLW1haW50CiszNDMxNCAxYjljM2E4YzQ5ZGI2OGJmZWM4YWE2NTY2MWMwNTQ3MWIwMzZjMzdjIHJlbGVhc2UyMy1tYWludAorMzQzMTUgMGM2ZmU1OGFmN2QxMjQ3OTcyMzg2MzExMWNlYWIxYmJlY2U1MTZkMCBsZWdhY3ktdHJ1bmsKKzM0MzE2IDZmOTc4MmNjMjc1MGQyODZlZTljNjZmMGEwNDhiYThjMDk1YzViYmIgcmVsZWFzZTIzLW1haW50CiszNDMxNyA2Y2ZkOTdkN2ZlOThkNzgyNjIzMzVhYzYyMTYyOGMxNDExYmZiYjBjIHJlbGVhc2UyMy1tYWludAorMzQzMTggZmJmNmVlNTc2OWQ0MmEwZGY4M2U4YTk0NDYzOGRiZjI5OGIyZDYxMyBsZWdhY3ktdHJ1bmsKKzM0MzE5IGQzZmI3NWJjNjM1NmU5Y2Q1NTEwYTNmYzNmYmRmZGYwNzJkYmRmYzUgbGVnYWN5LXRydW5rCiszNDMyMCBkZTg1NTJmMGFjYzU3NjQzZGQ2MWMyODkxZGM0MzJjZDE1MDc2MDIwIGxlZ2FjeS10cnVuaworMzQzMjEgYmJlNjNhODc5NjlmZGJmNjYxN2Y1NzFmNWEzYjNhNjY4NmRkZTI2NyByZWxlYXNlMjMtbWFpbnQKKzM0MzIyIGM5ODMwMjIyNTI5MjBkMzQ5MzBjMGY5ZDllNGQ4N2ZkNDliNDk0ZDQgcmVsZWFzZTIzLW1haW50CiszNDMyMyA4MjcwMGE3ZTlmYTRiNDBkZTIwODVjYTI3NTY0ZDIxMWZkZmY5NTVlIHJlbGVhc2UyMy1tYWludAorMzQzMjQgYTY3M2Q4NWY1YWQwYTU1YTVkOTA4NTNjOWJkNDVmZWVlNjQ1ZGI5YSBsZWdhY3ktdHJ1bmsKKzM0MzI1IDY2ZmQ4MjdmZTFkODRiYTY4MzliZDQ0MTc0OTVmYTA5ZjBhZGJhZTcgcmVsZWFzZTIzLW1haW50CiszNDMyNiA5ZTYxNjQxOThjNDU3MjNiMzU3N2E2YjAzMWRiOWE2YmY4MWUxYzYyIGxlZ2FjeS10cnVuaworMzQzMjcgYzczZjE2MjI1YTcxYWRmMDEwYzIyNjE2MzE3ZGI4Yjk4MmQzMGQ0NyBsZWdhY3ktdHJ1bmsKKzM0MzI4IDdiZDZjNmI1M2Y4NzE3MGFlYWMwM2JkN2IzZGY2ZGUwNDBmODZlYTYgbGVnYWN5LXRydW5rCiszNDMyOSBiMWM1Njk2YWQ0NzU4NTg0NGEyYTg1ZjljMzQ2ZDBiMDk2NWRhNWRiIHJlbGVhc2UyMy1tYWludAorMzQzMzAgMjc5NTlhMDJkMzlkZTljMWEyZThjZThmZTdlZTVhNmVkNDhlZmFmZSByZWxlYXNlMjMtbWFpbnQKKzM0MzMxIDEwNzliZTU4N2JhYTA3OTYyYzM0MTNlMzlkODg5MDA0OGQ2MTY2YzggcmVsZWFzZTIzLW1haW50CiszNDMzMiBkNDdjYzZmNzFmMzJhMzJjMTY3YWM5NjI2YTRlYjc5NTYwZTg1M2I4IGxlZ2FjeS10cnVuaworMzQzMzMgYjdkMDFlZmZlODk5NTBhODM0MmY2ZmZhN2IzOTZjOTJmNzFlNmJkYyBsZWdhY3ktdHJ1bmsKKzM0MzM0IDg0NzMxZWVhNmRiOTBmZTI5Y2Y4ZmRiM2ZjOTljOWNhYjkxNDM5M2UgcmVsZWFzZTIzLW1haW50CiszNDMzNSBmMjlmMTA4YWI0OWVlYjVkYTJmMzUyZGE0NmQzOTZiYmQyNzQ4MjgwIHJlbGVhc2UyMy1tYWludAorMzQzMzYgNWZmMjRkNWQ5ZTkyMmIwMmViODgxMTE1YjkyMTk3YTEyZjk2MGNjZCBsZWdhY3ktdHJ1bmsKKzM0MzM3IGU3M2YzYTAzMjc2MzZhZDhkNjZjODIzNWU5ZTQzYmU2N2VmMGJjNzEgcmVsZWFzZTIzLW1haW50CiszNDMzOCA1NzNhNDBiZWMwNzA0MmE2NjE1NjNmYzJmYWEzZTE5YzRhMDQ4YTI0IGxlZ2FjeS10cnVuaworMzQzMzkgZjRkZWUwMTViZjg0YzJjNmMzMjA3NThiZTQzZjNkNGExZjFmZTRhZSByZWxlYXNlMjMtbWFpbnQKKzM0MzM5IGJlMjUzM2ZiMTBhNTg3YzhkYTg5YjE4YzVmMzgxZjQ3OGQ3MjA1OTMgcmVsZWFzZTIzLW1haW50CiszNDM0MSBlNWU2MDg5MmMzZTM1N2U1ZTc0M2NiNjRlYzcwYzM0NTk2MjVkN2M0IGxlZ2FjeS10cnVuaworMzQzNDIgMThlMjM5ZjIzMDI5ZDgwZTg3MzE0OWExOTEzZWI0OTdlYjMzN2VmNiBsZWdhY3ktdHJ1bmsKKzM0MzQzIGM0ZTNhNmNhY2ZjYWJmYWViYWNkOGVmYTczZWViOGY5ZTk3ZmZhZmQgcmVsZWFzZTIzLW1haW50CiszNDM0NCAyZWY4ZDYyZGNjMDkxMDYxMGRjZmZhOTQyNzM4MzAxNzlmOWQxMzU4IHJlbGVhc2UyMy1tYWludAorMzQzNDUgOTIwMDcxMmQzMWU3OTBlYzE5Yzk2NGM5NjFhODYxZmUzMDVlNjcwYSBsZWdhY3ktdHJ1bmsKKzM0MzQ2IDgxN2I2ZTBmNDhkMWJhODc0MzMzOTNjMzg1ZTY0MzNiOTkxNGM1OGUgbGVnYWN5LXRydW5rCiszNDM0NyBmOWRmZGNiODk3YmI2NjRhNDFhOGYzNzQ3YTVmYmRhNGQzOTRlN2U0IGxlZ2FjeS10cnVuaworMzQzNDggYzFhNjcyZWUxNTMwMzUyZWExNjAwNTlhMzM1ODEyOWVhZmMxOGM2MCBsZWdhY3ktdHJ1bmsKKzM0MzQ5IDdmZDU1M2ZiNDMxNTAzN2M2YTExYWY5MDliYzRlNzdmM2IyMTg1YTcgbGVnYWN5LXRydW5rCiszNDM1MCAwNDcxYzY3ZjYxYmQ3OTc2NTExNThiYWZlMjUyNGZhOGNjODAzZWMwIHJlbGVhc2UyMy1tYWludAorMzQzNTEgMGQ0MDE3ODQ2MjFiNGY0OTg1MjM1MDhiYjU3ODc0ZDdlOTNkN2Y0YiBsZWdhY3ktdHJ1bmsKKzM0MzUyIGEzMDE1YmJhMzk5OWJkYzAzZjMxN2YzZjEyM2Y1NTBjZWE2ZTY5MGEgcmVsZWFzZTIzLW1haW50CiszNDM1MyAzOWU2MzVkYTIzMjZhNTdlZTgwZDRiZmE5MWZhMzgyOGNjOWE4NjU2IGxlZ2FjeS10cnVuaworMzQzNTQgNWVhMGZkMjZiZDM2NDYyZGQ2NWJhNTQ3Zjg3OTE4ZWY4NGQyNWJmMyBsZWdhY3ktdHJ1bmsKKzM0MzU1IDE1NDNhODQwZmM3ZjNhMGFjYzhhOWJlZmI2YTg2MWY3NTc0Y2I2NDAgbGVnYWN5LXRydW5rCiszNDM1NiA3MTc1N2NlYTI1N2YzNjlmMGQxMmEwM2YzNDRiNzhlZDU5ZjgxZjkxIHJlbGVhc2UyMy1tYWludAorMzQzNTcgMDQ0Nzk4ZDhiYmZjN2I0ODQ1Y2EwMzBjYTA1OGU3M2IwMzdlNzAxMSByZWxlYXNlMjMtbWFpbnQKKzM0MzU4IDg2MzBkZDhiNWNiNDY3MzFlZGE3YzdkM2VhYTVmZGUzNDhiNWZjODEgcmVsZWFzZTIzLW1haW50CiszNDM1OSAyMDVhMjkzZjNkZTA4MDJlNzBkY2QyZmQ0ZmZhYzI2NGRkNGM3ZDdiIGxlZ2FjeS10cnVuaworMzQzNjAgZDBiOGM4M2MyYTZiNjlkMjA0ZjMzZDI1NjI5NTU5N2NmYmRhNGE5ZiByZWxlYXNlMjMtbWFpbnQKKzM0MzYxIGE2ZmI2ODIyODE0YWFhZjYxYzY4MDZhODIyZTVmNjQ2ZWE2NmFmMWQgbGVnYWN5LXRydW5rCiszNDM2MiAxZWFkZTc3ZWE5ZWE3OWZhYzFjZjQ1ZTBkYzEyNGJjYjZjNzYzOTRlIHJlbGVhc2UyMy1tYWludAorMzQzNjMgZDc5YmIyOWZmOTZjYzA5NDc2MzlhYTFiZDYwMDZkOTRjZGU5MmRiOSBsZWdhY3ktdHJ1bmsKKzM0MzY0IDg4NDFkMzRhMmMzN2ViOTg5MjlkMzNkNTg2ZWQ0YWRhY2I4NTllYzcgbGVnYWN5LXRydW5rCiszNDM2NSBjYTAzMDMyMDk2M2Y1ZmQ1MDEyNzc0YWI4ZmZmMTE3YWViMGRjNDFjIGxlZ2FjeS10cnVuaworMzQzNjYgNmZkZWUzZjllY2UzYWI3Y2Y5NmJhYjY2NGY1ZGQzNmZjYzI3Y2ZiNCByZWxlYXNlMjMtbWFpbnQKKzM0MzY3IGFkNjMwNmQzNWNlM2ExOTVkNjlmNjE4MTg1MGE3Mjc3YjNjNzE1MjYgcmVsZWFzZTIzLW1haW50CiszNDM2OCAzYjQ3ZDYwNTcxNTE3ZWMyMDdhYzY1YjE3NjczM2QyNzlhNDYyMjdmIGxlZ2FjeS10cnVuaworMzQzNjkgMDU1YTgwODgxZTk2ZDkzNmYxNDQ1MzA0YjIzOWNlZWM4Y2QxMGJmOCBsZWdhY3ktdHJ1bmsKKzM0MzcwIDBlMGJhOTI5NTUwYzAzYzdhMWNmMTQ4OWQwMzAxZWIyNTA1MzNhMDkgcmVsZWFzZTIzLW1haW50CiszNDM3MSA4MTQxZWVhZDE5MDczZjRhYTkxNDE5NzBhYjdiY2JiYTAzNWJlZjZiIGxlZ2FjeS10cnVuaworMzQzNzIgMTQ0YmM4ZmQ5MTFlZTk0Y2QwMDllZmY4ZjJiNzEwNGQ5YTUxMmQxMSBsZWdhY3ktdHJ1bmsKKzM0MzczIGYwMGEzMmVjNDEzOTMwMDRjNTNkZTk1YzRkYjQ4ZjllYmE5ZjlkMTMgcmVsZWFzZTIzLW1haW50CiszNDM3NCBhY2VmNGUxNmNlYWU0ODMwYTZiN2FkMDRhMjhiNmE0ODFmNWU5OTllIGxlZ2FjeS10cnVuaworMzQzNzUgMzY5OTJjYTkxOGEzNDkzM2M3MTM4YjBlYWFhYzhiMGZlOTdiMjkxMSBsZWdhY3ktdHJ1bmsKKzM0Mzc2IGJiM2NlNmFlZTY5M2VjYzRlYmI0MTUyYWJjMWI4ODMwNjcyYjQ2N2EgbGVnYWN5LXRydW5rCiszNDM3NyA2ZWYyNDUxMzYwMzg5YWY5Nzc3MGY4ZTdlMGQzNjdlMmRlZTM4ZmFlIHJlbGVhc2UyMy1tYWludAorMzQzNzggNWMwMTc0ZTJlMTRmNDUxZjVmODYwNzg5ZjEzNWQ5OTkzZGIxYzdkZSBsZWdhY3ktdHJ1bmsKKzM0Mzc5IDI5ODg4OGUzOTVjZTBjMDVmMzc0ZmJjYzRjMTAyYThlMjA1NWViNDIgbGVnYWN5LXRydW5rCiszNDM4MCA0Nzc2YTA1ZTYzMGI1ZmMzOGYwMWU4ZDk4M2MzYjdmM2Q0ODc0NDRkIHJlbGVhc2UyMy1tYWludAorMzQzODEgNThmZTY0ZjdmYjE5M2FlYjhmMjAwYTMxOTY0MWMzZjkxOTE1N2QzNyBsZWdhY3ktdHJ1bmsKKzM0MzgyIDQwMDY3NDk1ODAyNWU5ZTQ4MTY0ODBiZmJjNDYyZDcwOWVhY2QwOGIgbGVnYWN5LXRydW5rCiszNDM4MyAwNjJjMjU1YjU3YThlMjJlOTczNjI1ZjkxZGQ4NzMwNDNlMjk1ZjlhIGxlZ2FjeS10cnVuaworMzQzODQgZDVjMzIzMWJhNWJhYTQxNjMyMDM5YzhjZmE3NDlkOTJiMTQyMjgxNyBsZWdhY3ktdHJ1bmsKKzM0Mzg1IDdmNjEzNGY4YmQwNmZkM2ZjNjgyOGNkZWRlMmVkOTdhYzk0MjdlMzUgbGVnYWN5LXRydW5rCiszNDM4NiBhZGM2MDAxNTY3MGFlOGMyM2RiM2UzZTE4ZTk0MGUzOTU3NTM1MTUxIGxlZ2FjeS10cnVuaworMzQzODcgNDFiN2QxZjA1MDBmMGU0YzE1MDRlMmQ2Zjk5ZTEzMjk3YjAyYzZmNCBsZWdhY3ktdHJ1bmsKKzM0Mzg4IDYwNDgzMGYxY2FhNjU1MjZjYTg5ZDE4YWI4MGNlMmJkOWRiNjQyNTcgcmVsZWFzZTIzLW1haW50CiszNDM4OSBhNzQyODIxZDllNzVkYzdhZWFhZDhmMDY3ZGUzODNmNjc5Y2FmYWRkIGxlZ2FjeS10cnVuaworMzQzOTAgZmNlODBhZDgzNDc3MDlmMWMxYTY3ZGQxYjRhNmNjNjVlM2E5MzBiNyBsZWdhY3ktdHJ1bmsKKzM0MzkxIGZkZjBhOTdiYWI2MDBkNTk1ZGIwYzA5MjYxMDY1YTYwOTk2NDdhZDcgbGVnYWN5LXRydW5rCiszNDM5MiBjZjAyYzE3ZDdmNDQ5YmM1ZjJhOGE0YmY4NTQ5MGQ1OTc2MzllYTY1IGxlZ2FjeS10cnVuaworMzQzOTMgODM3ZWExODYzN2JjMTkwZmU1OTc4NmY3MjY5M2ViZTBlODE3ZDZlZiBsZWdhY3ktdHJ1bmsKKzM0Mzk0IDRhMGM4OWU1ZTA1Njc3YmU3OGQ0M2Y3M2ExZmQ4ODlhOWI4ZWNjZTUgbGVnYWN5LXRydW5rCiszNDM5NSBjMjI2Zjg0ZDdhNjZlMmFhODE2NjVlMzBlYzZkYzAyZjk5MWJjMzJmIGxlZ2FjeS10cnVuaworMzQzOTYgOTY5MWNjNjQ0MTYwMDdiZGRkYzE3N2JkMWJlYTY4MjRkN2Q3MGE2NSBsZWdhY3ktdHJ1bmsKKzM0Mzk3IDQ3M2Y0ZTI5NTlhODA0M2Q5YmNiZDc0NDNlY2JjMzE0YzE5NjViZWEgbGVnYWN5LXRydW5rCiszNDM5OCAzYjU5ZmE1ZDI1YjEzYjVjNjVlMDk2MDc5NDlhYzA2YWY5MDg2ZGQ2IGxlZ2FjeS10cnVuaworMzQzOTkgMGRkZWNhZjhiNzVjYmVjYTAwNjYwMDRkZjFjM2RjMzFlNTFhYmRmMiBsZWdhY3ktdHJ1bmsKKzM0NDAwIDZjMzg0MDZjM2ZhZDg0MTI4ZTVmYmI3NTc1MmE4ZWM4N2E0NWNiMWEgcmVsZWFzZTIzLW1haW50CiszNDQwMSAwMDYwMTU3ODQ0ZDg3YmUyYWNlN2U5NTMyNmQ3NTIwMDdhMGEyOWJlIGxlZ2FjeS10cnVuaworMzQ0MDIgOGVhODMyNjAzZTRmZWIxN2UxOWU4MzgwNWQ3N2FjYWE0NDQ4OTQ3YyByZWxlYXNlMjMtbWFpbnQKKzM0NDAzIGI0OTFiYmYxN2RkZThhMTg0NTZlMzRjYzJiN2ZjNGZmMDI5MjRmMTYgbGVnYWN5LXRydW5rCiszNDQwNCA1MDFhNzkzNDY3ODRhZTYyNmE4YjRmMGNkMDQ5OGRlYTA3Y2ExNThhIHJlbGVhc2UyMy1tYWludAorMzQ0MDUgZmQwNTJjNGY4ODRmNDQzMGMyODM4MDIyZWE1YmNkODk5NWFiMWU1MiBsZWdhY3ktdHJ1bmsKKzM0NDA2IDA0ZjQxOGFmNjgwZDA3ZjRiNDBlNDk2MWFmNDFiMGQ4ZmEzMDZjY2MgcmVsZWFzZTIzLW1haW50CiszNDQwNyBhM2U4NjY2NWYyNDVhYzVkN2U1ZWJmYjcyMmJkZWJmYmRjMTVjOGY2IGxlZ2FjeS10cnVuaworMzQ0MDggNDM4OGJiYWQwYmMzN2FlOTQ4YzIzYTBiYTRlMzFlMjQ3YTY2MjdkMyBsZWdhY3ktdHJ1bmsKKzM0NDA5IDVhMWQzYmM2Y2MxODAyZTAwODM1NTc2YWYwN2Q1NzEyNTBkNWFiZDUgbGVnYWN5LXRydW5rCiszNDQxMCAyY2I0ZjMyMTc5OGNkNmYwNDE4YzQxMTllMTI1OWY3YTY0NjBkZDc5IHJlbGVhc2UyMy1tYWludAorMzQ0MTEgMzQyOWIxZDM4YjQwMGM2MGUwYjg1MGYwMThkNmQxOTM0ZDI0NGEzNiByZWxlYXNlMjMtbWFpbnQKKzM0NDEyIGYxYzMwYmZiMGNjMTI2MTdlMmVlMGEzNDFiOWZiNzQ1ZTllYWY5NjYgYXN0LWJyYW5jaAorMzQ0MTMgNzk4OTdlZDUzZjAzNmYxNzk1MTViNTUzNDBkNGE1NzM2OGE5MzM3ZCBhc3QtYnJhbmNoCiszNDQxNCAxMzQ1YzIzYTA1OTE2MDUwM2JiNTNiYjhmYTk0NjVjNzRkY2VjNmEyIGxlZ2FjeS10cnVuaworMzQ0MTUgM2UzZmQ1NmNlNTk1OGNkNDdlZTYwZTY3YTgyZTIwNjc5ZWZkMzMxNiBsZWdhY3ktdHJ1bmsKKzM0NDE2IGVmZWQ0ODlkZjU0NTlhODAxYjBjYjk5MzUzNGU0ODg3YmRhODBkYTYgbGVnYWN5LXRydW5rCiszNDQxNyA1MjAxZjY2YzkyZWYzY2RlZWIyYTM3OGMzYzUyZGJjZjQyOGUzYTdhIHJlbGVhc2UyMy1tYWludAorMzQ0MTggYzNkZmRiNjBiOTg4ZjgzODljOTZiYTNlMmYwYmIwOTEzMzU2NTgxZiBsZWdhY3ktdHJ1bmsKKzM0NDE5IGM4Yjg4MjFlODcyZDFjOGU5MTc2OThkN2U4ZTMyZGM4OGI4ZTZkOTggcmVsZWFzZTIzLW1haW50CiszNDQyMCA4MjgyYWExZjkzNDM3YzY2NmMzMGQxYzQ2ZmJlOGRmMzQ0NmZmMjYxIGxlZ2FjeS10cnVuaworMzQ0MjEgMDRiY2ZkY2YyOTBhMTUwOWNjNzVjODM2Yjg5YmJiMDZhMThlNjliYiByZWxlYXNlMjMtbWFpbnQKKzM0NDIyIDNmZjAzNDQ2ZjM2MmFlZWZjOWZhOTA3MGU2Yzg4ODAxZDI1YWJkNGIgbGVnYWN5LXRydW5rCiszNDQyMyBiZTBjYTI2YWQ1NzQwZWM2NDM3YTcwNjNiNzUwZDZhZWRjOTdkNzIwIHJlbGVhc2UyMy1tYWludAorMzQ0MjQgOWUyMWU1NmJmNWYzY2UxOGZjMWZkNmM3MTgxYmIzNTYzMGQ3M2MxMyBsZWdhY3ktdHJ1bmsKKzM0NDI1IDNhOTkyOTRjOGU1YjVlMzhkMWExNzQwMTlmZTYwYzFmNTY0MGUxYTYgbGVnYWN5LXRydW5rCiszNDQyNiAxZDVkNzI0MzZmMmE3YzQyYmEzODhjYTY4MjYwNzg3NWZlOWUwOTFlIGxlZ2FjeS10cnVuaworMzQ0MjcgYTIzNGRhZjE5ODEwYWIzYTg3OWM4NmYzNmJkY2U4MGI4YjQ0MjQyZCByZWxlYXNlMjMtbWFpbnQKKzM0NDI4IDY4NzdmNzk3Y2YzNjE1MWExYjQzMmViYzAxMGMzNDY2NGNiNmE0NGMgcmVsZWFzZTIzLW1haW50CiszNDQyOSBhNjYzNDMwOWQ3MGVlNmViYWM5OTM2NDBlOTY5YjRmMzUwNWI4NjMwIGxlZ2FjeS10cnVuaworMzQ0MzAgOWM3ZTAyMjdjODM1NjhmM2Q4MGM1NDMyY2Q2NjMwY2Q2YmQ0YzQxNiBsZWdhY3ktdHJ1bmsKKzM0NDMxIGIxMWQ5NzNhYmVjYWNiYmRjMGNkODUzNzQ5NjJiN2U3YzhkOGIzNDYgcmVsZWFzZTIzLW1haW50CiszNDQzMiBjMTJkNGYxODUzYmMwMDJiM2Q2MzA3OTIyYjM3YmYwOWQxNTFjYTk1IGxlZ2FjeS10cnVuaworMzQ0MzMgMDdhMGEwNzI2NjQ5OTQ2NzEwZTlhYzVkY2QxZmZiYTMxYWYxYWFmZCBsZWdhY3ktdHJ1bmsKKzM0NDM0IDEyZTU0OTI5NWY3ZjVkZmZjMjQxOWM1ODJiODVlMTdlN2Q5ZWY2NWIgcmVsZWFzZTIzLW1haW50CiszNDQzNSBhMjhhODMwMDMxYTlhYjMyMmVmOTVhMWNiYzQ5NDBmMTEzNjQ4NGI0IGxlZ2FjeS10cnVuaworMzQ0MzYgN2RmZGY5ZThkOTVkMzcwMTEwODc3YTZmN2NmYThiM2Q3OTc0M2Q1YiBsZWdhY3ktdHJ1bmsKKzM0NDM3IDJiYzc5YjNhOTUzZGZkODdlYTQ4YTQwODhhZDE3ZjM1MmRkYTQxNzYgbGVnYWN5LXRydW5rCiszNDQzOCBmODBkODM3Nzg0MGYyZWQ1MTMwZTIyOTlkNjZjYjBmNjJmNTZmZWMyIGxlZ2FjeS10cnVuaworMzQ0MzkgNjUxZmM4ZDk4ZDk5YjUwZjdkOWFhZWQ3YjVjYTdiNmNjZWEzYjVjYSBsZWdhY3ktdHJ1bmsKKzM0NDQwIDZmMTVlNzNiNTlmMmUzYTAzZjMxNzg3NDUzNTVjZjdlZDI2OGY1OTQgcmVsZWFzZTIzLW1haW50CiszNDQ0MSA5NWRmNjAwYWI5YmRlYjUxYzEwMTg5YjNhMWZhYTdhMTgwYTU5OGQwIGxlZ2FjeS10cnVuaworMzQ0NDIgZTg3ZDZkNzZlMzY1NzVjMTI5NTBkN2JkN2E2MmRjYjcwOGQ2Yjg3NSByZWxlYXNlMjMtbWFpbnQKKzM0NDQzIDEwMjRjNWJmN2ZlZTkxMjk0MTU5MTkyY2NlM2MxYTdlZjJhOTJjYjIgcmVsZWFzZTIzLW1haW50CiszNDQ0NCBhZDU4MjI5NzcxNTJmZTczNjIwNDVkYjc2OTQzOWQwODNkODQzZGJhIGxlZ2FjeS10cnVuaworMzQ0NDUgOTc3ZWZhYTg2MzRlNjFmNGI5ZTg2MjUxYjk3M2MxODQ4NmQyYmM4YyBsZWdhY3ktdHJ1bmsKKzM0NDQ2IGIxMDhjNDQyYTM3NDQxNTRiMTdkZThjNzYyN2NhZTc5YzI2ZjYyYmQgbGVnYWN5LXRydW5rCiszNDQ0NyAwZWE0MTA0OGIyZDQ3NTI1ODg4MDJlNzk4YTQ2NzBhMWRjODBlMmY4IGxlZ2FjeS10cnVuaworMzQ0NDggZjBkYTBjYWQ1Y2Q1MWY0N2ZmYTNjZmE1MjY2ZjM3M2E4Mzk0OTZmZSBsZWdhY3ktdHJ1bmsKKzM0NDQ5IDQ0Zjk4MDAyMTgxZmIyOTA2OTMyZjg3YmFjZWYxMzVmNGYxODczNDIgbGVnYWN5LXRydW5rCiszNDQ1MCA5NDU1ZGVmZjFjN2MwZWY5ZTAyZWUzNGM3OGU1ZDNiNWUxYzdjYWQ2IGxlZ2FjeS10cnVuaworMzQ0NTEgOTE2Zjc4MmVkNmQ1MGM2YmY5MDI4ZWY4NWUyMzk3Nzk2OWRjNTEwOSByZWxlYXNlMjMtbWFpbnQKKzM0NDUyIDQyNDQ1MTcyOTI4ZjFmYWY1MWFjYTE1YzhhNDQ1ZmU2YzNmZWMyMTUgbGVnYWN5LXRydW5rCiszNDQ1MyAwZTgwNzdjYjNkZDVhMTY3YmY3Mjg1YWYzMjUyZjNhMjkxYzMxZjFlIHJlbGVhc2UyMy1tYWludAorMzQ0NTQgMzhiMGI3ZDQxOTM2YjE3ZmZmMmYwOTRhMDQ1ZTU3ZGQzZTA5YWE4ZSBsZWdhY3ktdHJ1bmsKKzM0NDU1IDkwM2IzMWQ3NzIxYTFkNTZjMDBjNzM5MGMzMTQ3YTE3MjUxNjQxNTQgbGVnYWN5LXRydW5rCiszNDQ1NiAzOGI5NGMwNWI4NWI5MmU3NmMxOWNkNmYxMTYxM2VlNDBlNTkyZTYwIGxlZ2FjeS10cnVuaworMzQ0NTcgNDk0ZDVjZjBiYmUzZTIxMTM2NDIzNTJlM2JkNjViYTlkMjQ1ZTE1ZSBsZWdhY3ktdHJ1bmsKKzM0NDU4IGJjOGYyMmM1MzQyY2EzN2NlNGYyZmRiZjE4OTEzYzA2Mzg1OTEzMzAgbGVnYWN5LXRydW5rCiszNDQ1OSBhODEwYmFiODVmYmM0ZDBhNGFlZGJlMjRjYjYzODYyMDUyMTRlNTU1IGxlZ2FjeS10cnVuaworMzQ0NjAgZjg3NDI0M2VlMzliYTI2ZTcxYzgzMWUyZjVlZDhhZDI5YzE0MDg1MiByZWxlYXNlMjMtbWFpbnQKKzM0NDYxIDAwMTIwOWI4MThhNjdjOTE5MWQwYzg1NjUyMDUwMTI2N2Y3MmMwZDcgbGVnYWN5LXRydW5rCiszNDQ2MiBkYmU3ODgyMjNjZTk2OGVmNWVjOTZmZTNhNjgwMjJkZTlkZDZiNTg5IHJlbGVhc2UyMy1tYWludAorMzQ0NjMgMGM2MmMxYWM5Njg0ZGIzMTc4NTc4YTUzZWU5NDdhZTQ1NmM2MjQ4MyByZWxlYXNlMjMtbWFpbnQKKzM0NDY0IDc3ZDUzMDhiZWRhZTExNDRiNDljN2I5ZWJlZmUwYzdjYTNkZThhNDQgcmVsZWFzZTIzLW1haW50CiszNDQ2NSA2MjQ4ZGQ1ZDE5MmE4MDVkY2I5NjRiNTkyZjM4MDc0MDlkNzdkMWY1IHJlbGVhc2UyMy1tYWludAorMzQ0NjYgZmFlMzQzNTc2MWFmOWY1ODlkZWI5NDgwZTYxNjg5Y2JlOTg3NzJjOSByZWxlYXNlMjMtbWFpbnQKKzM0NDY3IDFkOTJlY2RmMmJiMTRjZDkxNGNjNjBjZjY4Y2FmYjNkZDNjOWI0NjIgbGVnYWN5LXRydW5rCiszNDQ2OCA2ZmRkZTk2YTcyMjI3YTJjNmU1ODA4ZGE3NmQxNDFhNjZkYjk1MTFlIHJlbGVhc2UyMy1tYWludAorMzQ0NjkgZDc3MGRjMjY0MjEyZGU3Y2U1NmI5YTFiYjBiMjJlMGExMWJiZTM4MiBsZWdhY3ktdHJ1bmsKKzM0NDcwIDY5MTRiNWUyMDc2ZjIyNGI3N2RhNWMyYzU5ZjUyNzU2ZGViZGRhZjcgbGVnYWN5LXRydW5rCiszNDQ3MSA4YjJlYWRmYjhmMGNkZGMzMmJkZGE5OTY4N2JlNDY2ZmZmMDBmMmM3IGxlZ2FjeS10cnVuaworMzQ0NzIgNGQ3OWU4NDkwYzc2ZTZlNjk0OGNiOWY3OTQ4YjA2ZTAwMjQ5ZmMyZSBsZWdhY3ktdHJ1bmsKKzM0NDczIGI2OTAyYzBhNzU3ODJlZGJjZTk3NWVkYTIyZjFhMGU5ODhlYjgwM2YgbGVnYWN5LXRydW5rCiszNDQ3NCBlMGVjNjQ0ZjViMzZjNDVlM2E1Y2ZlOWVkMGM5M2E0MWM3ZjQ0YzQ5IGxlZ2FjeS10cnVuaworMzQ0NzUgMjZiYzAxOTQ0YWU4ZWM5ZTQ0MWRlMzNiMjk1YTBmZjg3Yjc1ZjEyZCByZWxlYXNlMjMtbWFpbnQKKzM0NDc2IGY3NzJkMzQwM2NhN2QyNDg0MmYzMjllMGQ0M2JmNGJhNzA2ZmFkNDkgbGVnYWN5LXRydW5rCiszNDQ3NyBhMDU0NWUzMmRhZTc4ODQxM2FhN2RhZmExYWZlODcwNzFiODc3OGE5IHJlbGVhc2UyMy1tYWludAorMzQ0NzggMGZlMzA3MTBkYTgwNjBiMDhmZjYzOWEwNWU0ZjQ5NTE3ODNmNTllNyBsZWdhY3ktdHJ1bmsKKzM0NDc5IDhmYmIwNjIzYjg1NzhkOTY5YmIzODlmN2E2NWY4YzBhYzg0NjZmNjIgbGVnYWN5LXRydW5rCiszNDQ4MCA0OGI5Y2M1MTc0MmI5YmYzZTk3YzQyYjM5ZjY5OTA5MzBjZmQ4MzZmIGxlZ2FjeS10cnVuaworMzQ0ODEgYjk0OGU3NzVhNzllZTBiYzQyNWI2ZmU2NzUxODQ2YjE3MjVmNjIxOCBsZWdhY3ktdHJ1bmsKKzM0NDgyIGZlM2Y1NTkyMzA1ZGNmNGY2MWY0MzBjYTJkYTkyZjBhNzllYmJmMTEgbGVnYWN5LXRydW5rCiszNDQ4MyA5ODJlM2U0MGJmMWU1ODY0OTQ2OTQ3ZmVkNjJkODQ2OWMyMWE0N2YwIHJlbGVhc2UyMy1tYWludAorMzQ0ODQgNzkwZWQ1YzU5OWMzZjQyZmFkYmY0YTIwMTFmMzgxY2U1MDBkY2QyMiBsZWdhY3ktdHJ1bmsKKzM0NDg1IDI3OTczNjk5MGExNGJlMzRlN2VmNzFhNzM0OTBmM2Y2YjM4M2QwZDggbGVnYWN5LXRydW5rCiszNDQ4NiAyYmM5NWQ0OWZjN2E2MGY5OWZmYjJjOWRhYmFjYmMwMmNiOWNhZDBjIHJlbGVhc2UyMy1tYWludAorMzQ0ODcgZTA4NDFiNWNmMmZkMWMxYmU4ZDAyMGI2YjVhNDYxYzRjMmIxZGIwZCBsZWdhY3ktdHJ1bmsKKzM0NDg4IGE2ODc5ZDE3MzNkN2JjMmQzNDcyYjg5MGE4NGMyMjU2NGRhYWJmMzQgbGVnYWN5LXRydW5rCiszNDQ4OSA4OTdhZmNhY2JhMDA3MmQ3YWExNzc5YzQzNTExZTQ1ZTJiYjFjMmUxIGxlZ2FjeS10cnVuaworMzQ0OTAgOTVmZDU1NTQ1Y2FjMjY5ODQxNmU2ZjFmYzFjNGRmMzBmZWJiYjc3YiBsZWdhY3ktdHJ1bmsKKzM0NDkxIDJkOTg3MTBmMjcyZWNlNmJkMDZjNmZiMWMxMThkOTQ1ZGY4YmM1NTkgbGVnYWN5LXRydW5rCiszNDQ5MiAwNjI4NTdmNjkyN2Y3OTNiMWYyNGM4NjQ3YTlmNTgzNWM3NmNkODU2IHJlbGVhc2UyMy1tYWludAorMzQ0OTMgZGY5ZDhmN2U0YzljMzUzMDA4MDcyMDQ3ZDFhNTcyMDhkMWZkYjk1OSBsZWdhY3ktdHJ1bmsKKzM0NDk0IDY1YmJmZGEyNDZjOTMwOGM1ZmE0MTI3NWMyMzY4MTYyOGRhZGMzYzcgcmVsZWFzZTIzLW1haW50CiszNDQ5NSAzZTNkNTM5NjNjODg4MWIwN2M5Mjk3NmY5YmE1ZTQ2ZTdhYmIyMzE4IGxlZ2FjeS10cnVuaworMzQ0OTYgZWVlMDdmMzBlZjA2OGMxMGM5M2JhMzBhYzMxY2YxMWI3OGU2YWI3OSBsZWdhY3ktdHJ1bmsKKzM0NDk3IGYyZTYxZDk5MDk1ZTczMTZmNGYzYjIxMTljZTBmOGIxMWM0YmUyM2YgcmVsZWFzZTIzLW1haW50CiszNDQ5OCA3NDc0N2Y2MmYyODZhODYxYmExZWM1ZDViN2Y3NDk3ZTRmOTg4YTdjIGxlZ2FjeS10cnVuaworMzQ0OTkgZjUxZGM5MDI2ZTRkZjliZWVjZWIwNThlZTViOTg4NzFjNWJkNTgyNSBsZWdhY3ktdHJ1bmsKKzM0NTAwIDQ4MzNhOWNkMzc3ZWYxZmFkMWJhNjA3NjY4NmVlOGQ0NmQ3MDUwYzIgcmVsZWFzZTIzLW1haW50CiszNDUwMSAzNzI4NWEwMzQ2YzE0Y2VhYzI5YTY1MWNjMDU3NTllMzZhNzk1ZTVjIGxlZ2FjeS10cnVuaworMzQ1MDIgZDk5NmUyZGNiZDNhN2U1N2ZlYTdhYjUyZDU1MmE5MDNiYTI0MDNmYyBsZWdhY3ktdHJ1bmsKKzM0NTAzIDIyNWQ4NDhhNWY5NjhjODhkOTZjZjc3NWE4MTBkY2NkOWYwM2VkNGMgbGVnYWN5LXRydW5rCiszNDUwNCBlYTA1ODUwNDEwNGNkNzI2ZDA4YzBlN2E4YWJmZWMxZTgzMTFmOWVlIGxlZ2FjeS10cnVuaworMzQ1MDUgYzJhZTkxYTg3YTQ4YWM2NTk5M2FhNDVkYzk2MmVhYWIxOGMwMTA1ZiBsZWdhY3ktdHJ1bmsKKzM0NTA2IDg0ZmYxM2JjYzc1MDJmMGIwNzFmODZhNWFkYWUyMGFlOGU2ZWY2MzMgbGVnYWN5LXRydW5rCiszNDUwNyBhNjAwOGI3MGM5MzkzNGI3OGU1NzU0ZmNjMmI2YmFkNGM0OTJjNzJmIHJlbGVhc2UyMy1tYWludAorMzQ1MDggNGM5YTY3Y2YyODMzYTlmZWYxNzFkMjc0ZGU3YTE1NmE2ZmU0NzgzMiBsZWdhY3ktdHJ1bmsKKzM0NTA5IDdiYmVlOTk0MjJhMDJlYzc3Zjc1OWIxYzUxNjVlMWUxMGI5MTA1NDggcmVsZWFzZTIzLW1haW50CiszNDUxMCBhYzk4NWQ3NzY2NTAxNzEwOTBlZmM2NjZhOGRlNzJlYzdmMjBjMjU5IGxlZ2FjeS10cnVuaworMzQ1MTEgNDEzOWI0NWFjZmVkMDE3Y2U3NTYxZTdkNjYzNWFiOTljYTM3YzU3ZCBsZWdhY3ktdHJ1bmsKKzM0NTEyIDlkYTUzNzE2N2I3NDk3YmZmM2Y1ZTJkZTA2Mzk3NzI0MjgxZjE3NzMgcmVsZWFzZTIzLW1haW50CiszNDUxMyA4ZWI4OTg4MTRmYjkxNzQ0OWNlZGNiNDc4MTUyM2QxYzE4NDYyMjUwIGxlZ2FjeS10cnVuaworMzQ1MTQgN2U5MzE0OTI2ZGJlMmNjNWI1ODZmNTUyY2ZiMTljMmRjNGY0MDIwNCBsZWdhY3ktdHJ1bmsKKzM0NTE1IDdlZGU3NzJmMDNkM2JjMWI3NDY5NGNhM2U5NzQ2ZGQxYjBiMDI1NzYgbGVnYWN5LXRydW5rCiszNDUxNiAwMzRhZTQ5ZjliN2FlYWY5MTMwZTU3M2U3NmM2Mzc1NzkyMWMwYzRlIHJlbGVhc2UyMy1tYWludAorMzQ1MTcgYWY0NDNkODIwYTUwNjc3MmM3YTkwYzJjYTk0N2M5YzVmNTU1ZjVhNiBsZWdhY3ktdHJ1bmsKKzM0NTE4IGM0MmM0MDAzNDUzNmNjOWMyNmYxMjA1Y2ZlZDQ4ZDY3OTk4NjUzM2EgbGVnYWN5LXRydW5rCiszNDUxOSBiNGI5NDVjNWRhNGQ3NDVhM2U1MTBiYTBiZGZiMGI4YjQ3ODU5YzE4IGxlZ2FjeS10cnVuaworMzQ1MjAgYWVjYmJhMDI5NGJiNTA2Mzc4ZWI0YmU4MGI4ODA0YTFkYWIxZmZmOCBsZWdhY3ktdHJ1bmsKKzM0NTIxIGFjOGM3NzE2YTg1ZGFmYmYyYjY3OGNlZjM2MzgwYmU2MGY4ZGJkNDQgbGVnYWN5LXRydW5rCiszNDUyMiA2YTg3ZWQ2Mzk2N2MyNTlmODQwN2RlYzIwY2JmODExZjlmZThmMWVmIGxlZ2FjeS10cnVuaworMzQ1MjMgNjMxMTE4YjlhZWM2MmFkYzQ2OTZmYzQ3ZWE4ODg2Nzk1ZGY2MmYwMSBsZWdhY3ktdHJ1bmsKKzM0NTI0IDdiYTQzZWZkMGNlYjMyYTQ5ODY3ZWQ2NjhlOGY1ODhkYmE5OWQxNGQgcmVsZWFzZTIzLW1haW50CiszNDUyNSA4MzJmM2E5ODkwNThhNmZjNGY4ODg0N2ViNDQ5NDkwMTYwODFiMmE5IGxlZ2FjeS10cnVuaworMzQ1MjYgOGRiNjRhYmY4NTZmOGM0NGE3NWViNTk5MWE3ZWJlZGQwY2U2ZDZmOSByZWxlYXNlMjMtbWFpbnQKKzM0NTI3IDJjYmEwZGU3MGRmNjJiZWI4NWM2ODcwNmEzMmUzOThlYTk4ZjZmNTIgbGVnYWN5LXRydW5rCiszNDUyOCAxZmJmZTlkYzBiYThiOTJhYzFjZWM4ZjkwYTkyZWZhMWViMmNiOGM2IGxlZ2FjeS10cnVuaworMzQ1MjkgNzg2M2ViY2ZmMTIxZjE1NzYzODljYmFhODg0MDYyNDVhY2UxNzc3NSBsZWdhY3ktdHJ1bmsKKzM0NTMwIGEwZDI5Nzg1NjJkNWUxMmY5NTIzZTFhM2U3M2Y4MzQ2NzU4ZjIyMzggbGVnYWN5LXRydW5rCiszNDUzMSA1NjUyODQ5ZmJlMjk2MDIxMWU0NTMwNjk3YTI1MDBkZDY2YTJhMmExIHJlbGVhc2UyMi1tYWludAorMzQ1MzIgYzgwNDFiMGVlYjNjYjMyYjY1ODc4OWM3ZjgxYjg0MGQ1YjQ0OWJkOSByZWxlYXNlMjMtbWFpbnQKKzM0NTMzIDA3ZTdhMDIwNjFkODdjNTc0ZTQwMTY5NDhlYzBmMGUxNDYwZGI3ZWIgbGVnYWN5LXRydW5rCiszNDUzNCAxNTEwMjQ0YmViNWUwZTY4M2VkZDFkMzk0Zjk5ZjQ2ZWZmOTA3ZTM2IGxlZ2FjeS10cnVuaworMzQ1MzUgNDRlOWFiZDA3ZWIzMWUyNzM2Y2YwOTgwNWYzMTczNWQ1NmRjNTU3NyByZWxlYXNlMjMtbWFpbnQKKzM0NTM2IDlkOGFjZGI1OGY5YzM4ODkyZjAxNzZmZDUyYzllZGMyMGY4ZjRjNTggbGVnYWN5LXRydW5rCiszNDUzNyA1MjhjYzBmZGRhNDFjZDFmM2NiOTA0NTI0NWVmYWIwYmIxMGZhNzU1IHJlbGVhc2UyMy1tYWludAorMzQ1MzggZWMxYTRhMjlkMjVkYTQ1ODhjMTMxMGJmNDIxYTU3ZjYyMzQ2MWI3OCBsZWdhY3ktdHJ1bmsKKzM0NTM5IDhjZDY5MWI3Mzg0NTI3MmNkYTIxMGJmOGFlNmQyMmNkZjZlNWU5YTcgbGVnYWN5LXRydW5rCiszNDU0MCA5OGM4NTc2YjhkYTdkMjQwMDJkODA3NjAwMDVlZmMzMTZlYjAzZGY5IGxlZ2FjeS10cnVuaworMzQ1NDEgNjQyMmEzOTUwMDQwMWJmNzdkOTk4MGUxZDkyYTBjNzAyYTJiMDgzZCByZWxlYXNlMjItbWFpbnQKKzM0NTQyIGQxNTMzY2E3OGQ4Y2NhODVjMWNlZjhmYzhhNzg1MGNlNmE4ZWM3N2YgcmVsZWFzZTIzLW1haW50CiszNDU0MyBmYWM4YzYzYzc4MzgxYWI2ZjA0ZGFmNzNmNmIwZjM3ZmE1YmRiNmFjIGxlZ2FjeS10cnVuaworMzQ1NDQgYjVmNjRiZTViMjFmZGNlZTdkNmU4ODg4YTZiOGE0NjM2NDBmYzRiNiByZWxlYXNlMjMtbWFpbnQKKzM0NTQ1IGU1OWFiNzA4YmJiMGNhOGJjZmI3ZGFkOTQ2Y2U2NzEyN2ZhYThiMzAgbGVnYWN5LXRydW5rCiszNDU0NiA5ODMzYWE1YmRmMzg3YzgzY2JhZTE3NDIyOWIwOGRhYTA3MjIyMmZmIGxlZ2FjeS10cnVuaworMzQ1NDcgY2JiZTNmOGJkZWY2ZjI4M2FlOGIwMzg0MDBmNDgwMWJlYzY1NzY0YSByZWxlYXNlMjMtbWFpbnQKKzM0NTQ4IDgyN2QwMWRmNjFhNzE2YThjMzNkMTBlMzExMTdkMjk3YjY1MzAxMDMgcmVsZWFzZTIzLW1haW50CiszNDU0OSA4OWRjMDY5YWFkMmM3OTM3N2E3YzEwMGVlMTQ0YzRjMTQ3Zjc2ZjI2IHJlbGVhc2UyMy1tYWludAorMzQ1NTAgM2NkOTIwNmRmYjc5MjkwNjQ0NWY5ZDg0NDVhNzNkOGZmMDdlNTY4ZCByZWxlYXNlMjMtbWFpbnQKKzM0NTUxIGQ2YzA5YTlkNzI0MWQ2ZTYwNWRkZDAyM2EzNDhkNGU2ZWYzNDRkMDcgcmVsZWFzZTIzLW1haW50CiszNDU1MiA1NjIxNDNjMWM3YWVkYWRmNTg0MGIwMWFkZDIzMzQ4YTI1NDBiYzNiIGxlZ2FjeS10cnVuaworMzQ1NTMgNTIyYTNkN2UwYTk2MjI5ZGNhYWViMjRhMDdjMjIwMWJhYzJiYTU1YiBsZWdhY3ktdHJ1bmsKKzM0NTU0IGU2NzZjOTVlNDg0NDg3MGU1ZTVhNWU2OGY3OTg1ZDljYmY1Y2QwOTcgbGVnYWN5LXRydW5rCiszNDU1NSAxOWJiMWIyZmIyMzM4ZGYxZDA3NjliOWRhODY1OGE4MDk2ODE4NTEzIGxlZ2FjeS10cnVuaworMzQ1NTYgZmVlYzQ0ZjE5ZWNjNzhkY2I4OTIwYTFjNmY1MGJhODAwODM1OGI2YyBsZWdhY3ktdHJ1bmsKKzM0NTU3IGZlZjZmZGVjNTI5MjUyM2YwYzg4ZDkwMjdiYjk4ODc4ZDlhMGY1MGEgcmVsZWFzZTIzLW1haW50CiszNDU1OCBhOTk3NjE0YjM1ZGM5NzVjMzg1NmNlYjJiNGQ0NjMzNzI2NTc2ZTRkIHJlbGVhc2UyMy1tYWludAorMzQ1NTkgZmU5YTVhMmRkMmMxNTE0ZGU2MjNjZWZlMjI3MDg3M2M1ZGRjNDRkYSByZWxlYXNlMjMtbWFpbnQKKzM0NTYwIDA4YzAyYTI2NWRiZDBkZDlhMTUxMGUwMDYxOGUwNDNlMzY3YjMzZDYgcmVsZWFzZTIzLW1haW50CiszNDU2MSA0ZTU2ZmJhOThmMWU0NTA4YjZmZTI2YjYwMjQzOWRiZjE4YjdjZTIwIHJlbGVhc2UyMy1tYWludAorMzQ1NjIgNTdmNzQzZmEzMjA3ZTA5YTU2MzA4ZmU3YzY3NjJhMGJhYjg5Mzg0ZiByZWxlYXNlMjMtbWFpbnQKKzM0NTYzIDNiZTQzYWY5OTJhNmQ3MmI5YzZkY2ZjYWUxMWI4ZjU2ZGRlYmNkZDAgcmVsZWFzZTIzLW1haW50CiszNDU2NCBlNWQyMjFmOGQ0MTBiMzcxZGRjNjE4MzlkZDk1ZWI0YjQyYzBiZWUwIHJlbGVhc2UyMy1tYWludAorMzQ1NjUgOTMxYTU4ZjI3ZWJiMDg1ZmUzOWU5Mzc3Y2U4NDZiNWRkMWNiNjNiYyBsZWdhY3ktdHJ1bmsKKzM0NTY2IDI2MjgyM2ExMmNhNzUzMzI4MDVlM2Q5NDIwYzU5OTQ1YWQwY2NjYTQgbGVnYWN5LXRydW5rCiszNDU2NyBlZDA1OGJkYWQyYWRmNmUyZDczNjYyYjk4ZjU4MTg4NThhMjNhOGFlIGxlZ2FjeS10cnVuaworMzQ1NjggZGNhZTYyZDM1ODg0OTM0NzJmNTUxYzZlMmE5YTQ5OTFjYmE1ZDQ3MSByZWxlYXNlMjMtYnJhbmNoCiszNDU2OSAwODBkZjBlZGIwYTRiY2FjNDE3ODc4ODY1ODVjOWQ5NDk2ZTQxYmMzIHJlbGVhc2UyMy1tYWludAorMzQ1NzAgYWY3MzE4NDZmZjcyODI3YzMwNWE2OGUxMTVlMTA0NTAwNDllZTVlNCByZWxlYXNlMjMtbWFpbnQKKzM0NTcxIDhhNzVmOWJhOWJhYmIxMDBhOWMwMjZjNmNkZWQyNzE3OGIzYzcwMWIgbGVnYWN5LXRydW5rCiszNDU3MiA0ZTE5YTJmZjM3NmEwNWY5ZDQ0NWJmYjZiNGE2YjA2Y2I5YzVhYTA0IHJlbGVhc2UyMy1tYWludAorMzQ1NzMgYWRlOTdiNjA1MzUyNDVmNzc2ZWYyZWExNTljNDViZThiNjM1MDcyNiByZWxlYXNlMjMtbWFpbnQKKzM0NTc0IDcxMzVjN2NhOTg0MmIwZGNmMGFlMTIwMWQ4ZTFkYTJmNTRkNTI3NDAgcmVsZWFzZTIzLW1haW50CiszNDU3NSA3NzZhNzcxNTA2MjBjMjkzZWU4YmUzY2FkMGNlM2I3NTUzMzU1MGQ0IHJlbGVhc2UyMy1tYWludAorMzQ1NzYgYzMxZWFkYjY5Nzc5MTRlZTQ4OWZhNDA4ZjA3N2E2NDMzM2ExZWNlZiByZWxlYXNlMjMtbWFpbnQKKzM0NTc3IDlmNWRkMzAyYmQ5MTUzMzhmZTg2Njg5NTc3Yjk1OWUxYzJlNzJmMDggcmVsZWFzZTIzLW1haW50CiszNDU3OCA4MjBkMWQwNDNkM2FjY2Y0ZjYyYTEzOGU5MDM3ZmVkN2M1ODFmZmJiIHJlbGVhc2UyMy1tYWludAorMzQ1NzkgYzg5ZmQ3ZWFmODc1NDc2ODgyNTEwODhkY2JlYWMyNzFkMWJjZDg2NyBsZWdhY3ktdHJ1bmsKKzM0NTgwIGQ0NWY4OTgxZmRlYTkxZmM4ZTIyOWU3YTI4MDc0OTIxMjZmNDZkYmEgbGVnYWN5LXRydW5rCiszNDU4MSAwNzBjODllZGE4MGJkYjU0MzVjYzdlMjBkMDVmNWZjNWFlMWIwYTM0IHJlbGVhc2UyMy1tYWludAorMzQ1ODIgNjc2MDZmOWMyZDExM2RkZTE3NzNiODRlNjBhNWM1NDM4ZTNmODA0MiByZWxlYXNlMjMtbWFpbnQKKzM0NTgzIDQxYzRlMTQzZTZlNmUxOGU0MTMxYTFlZDg5NThhYzQ0ODFhNTNlNzEgbGVnYWN5LXRydW5rCiszNDU4NCBmZTVjZWE1MWEzZmZmZmYwMjljMjY1NmM4MmE2ZmQ0ZDdkYTkwNzRhIHJlbGVhc2UyMy1tYWludAorMzQ1ODUgMDRjYTRkMWY3NTFmMmE4YTAyNTJlYjE2YzkyNWUzZDZhNWZiMDc1NCBsZWdhY3ktdHJ1bmsKKzM0NTg2IGRhNTA1NmEzYjE1Mjg0MWNkMTY1OTYwODBkNGQ0NzBjNDNlODdlYjQgcmVsZWFzZTIzLW1haW50CiszNDU4NyAwYWNiOTVhZDE5ZGM4NjdmYmM1OWY1YmVjOTIyMGJlYzVjMDhlM2ZlIGxlZ2FjeS10cnVuaworMzQ1ODggZTQ2OGIyNDUxZDU0YjA1MTMzMjdlM2I0OWY2MTRjNmVjN2ZlZWIyOSBsZWdhY3ktdHJ1bmsKKzM0NTg5IDlkN2I3ZWUwNDQ3MGUxOWUwYWE2MGIyZjcwMzQ1N2Q3OWQwYTIwNGUgbGVnYWN5LXRydW5rCiszNDU5MCBlNzA5MWQ1NzU0YWVjMDE1NGViOGU5NDVhNDI1NDZiMGRiMDI2ODc3IHJlbGVhc2UyMy1tYWludAorMzQ1OTEgMWRiMGRlNGM4NDU0MzIzYmZiMDg3NTU2ZTBjYzM4MjFmZThmN2QyYSByZWxlYXNlMjItbWFpbnQKKzM0NTkyIDY4MmQxYjY3YzdiNTUyNDc4NzI1MTNhZjE5YzY3YjFlMmRjZDdlZDcgbGVnYWN5LXRydW5rCiszNDU5MyAyYWNkMjhiZDRkMGYxZmU2MTRlMzEwZjI2ZjdhYzQzOTEyOGY3Zjg5IGxlZ2FjeS10cnVuaworMzQ1OTQgZTJhOWE3ZmVmMThhMzNmODBkNGFlNzFjOTcxMGUxYTJlYzA4OTZiNiBsZWdhY3ktdHJ1bmsKKzM0NTk1IDNmYTk1MzhhYzQ5NjcyN2QwMjBmMGU5MzMwYjg5MDllMTdjOWQ5MTAgbGVnYWN5LXRydW5rCiszNDU5NiBmMDE2MTMyN2E5MDI2Nzg0MTBkOWY5MTBiMGUyNGFiMTYzZDVmZDkyIHJlbGVhc2UyMy1tYWludAorMzQ1OTcgNGVkNDBiM2Y4ODAyMzVlNzVjYWY5N2EwZTBhZjlkNjU4ZjljZTk3ZCBsZWdhY3ktdHJ1bmsKKzM0NTk4IGQzMzg5ODNkMDcxOTQ3ZDY5MTdjZTliZTQ3YWFmOWNhM2I0NzUzY2IgbGVnYWN5LXRydW5rCiszNDU5OSAyZTQ5Nzg0MGM0NTg4MGQ1ZDAyMjNmMWY0NjczNGNhN2FiNDJkZmYxIGxlZ2FjeS10cnVuaworMzQ2MDAgNzJkNzBkY2M0YWYyYzdmNzMyMDU1N2JhMDYxYjJlMWYwYTg5YTlkOSBsZWdhY3ktdHJ1bmsKKzM0NjAxIDJmMGU2MGQ0MjMzYTY2NWJlMmYwMWZhNTEwNGNiMGQxNGJlN2VmODUgbGVnYWN5LXRydW5rCiszNDYwMiBjYmQ5M2NmMzJlZmZlYWU5ZDc2M2Q0YTY5MmVlNWVlYWE1OWY4OGYwIGxlZ2FjeS10cnVuaworMzQ2MDMgZTYxNDA4M2FiMjBjOGYxZDJjYzM5OWExMTIyOTllNTJjNmQxNTM4NCBsZWdhY3ktdHJ1bmsKKzM0NjA0IGU0OGM2MWZhMmY5ODNlMWUwZDI2NmQyYThhMmUyY2E3YmI1MGI1ZjMgbGVnYWN5LXRydW5rCiszNDYwNSAzYWU4MjkyOGIxMTMxY2JiMTA1YWYzYWU4OTk5MDIzN2FjOTAzMmFiIGxlZ2FjeS10cnVuaworMzQ2MDYgN2RiNzc4Y2I3ZTA4YTQ0OGQzZWFmN2Y4MzQ0NmVjNjgwYjhkMTExZSBsZWdhY3ktdHJ1bmsKKzM0NjA3IGNlZWM2OWQyNDBmMDE5ZWJiNzdiMGFlZTIwZjgxNjA4N2VmOGZkMGIgbGVnYWN5LXRydW5rCiszNDYwOCAxOTk3YTE0ZjZiMDg4ZTFhNjUxZTFmZGI4YzNjYWM3ZjVmMWJmYzM2IGxlZ2FjeS10cnVuaworMzQ2MDkgODllY2ZhMjU0NTI4M2IxN2ZmMTk3MGFiYWFmZDU1ZjJlY2IyNDI5YSBsZWdhY3ktdHJ1bmsKKzM0NjEwIGYwOGE1ZTk1YzM3Y2YzZGI3MjZkOWJkZGE5YjBiYjY3MWU5NjFjMjQgbGVnYWN5LXRydW5rCiszNDYxMSAxZTY4NjNkZGQ4NGI5ZTgzZTdiM2ExNzU3MWNlYjRlNmVlOTljOTNlIGxlZ2FjeS10cnVuaworMzQ2MTIgNTQzNzEzOTE5NDk5ZTY2MTMxZDM0ZDk3NjhlMmZiZGRlNDE2MDFlMiBsZWdhY3ktdHJ1bmsKKzM0NjEzIDJlZDM2ODMzODUzYWFjYmI0ZWY5ZGFjYzQyMmU4YTM5N2U0ZDMxYTkgcmVsZWFzZTIzLW1haW50CiszNDYxNCBhMGE4ZjE1NDAxZGIwZmIxMzc0YzliMmJhMjJlYjc1YmRkODY2Y2Q1IGxlZ2FjeS10cnVuaworMzQ2MTUgYzVlNTIwOGNkYmI3MjBlMDM4MjUxM2ZmNmM3YjZmNWU3NDNhZWJkOCBsZWdhY3ktdHJ1bmsKKzM0NjE2IDM3Yzc3NjNmYTgzZGZhNjQzZjNlN2NjM2EzNzA0MzhiMjIxNGI2MjYgbGVnYWN5LXRydW5rCiszNDYxNyA5NjE3MGY3NWUzZTlmZWZkODJhMzVlZDUwZjU2NmI2MzZiYmI1ZDczIGxlZ2FjeS10cnVuaworMzQ2MTggMzA5NmZhYjJhMTljMDU0YjU5NGJjMmI1Njg5MzMwZDEyZTE5YTU1OCBsZWdhY3ktdHJ1bmsKKzM0NjE5IDg1ZjM4MzY1MThmZTVkMTY2OTdmZDFmM2Y4N2I5NDVmZTZiZTc3ODQgbGVnYWN5LXRydW5rCiszNDYyMCA2MDM3MDQwYTJjY2U0NzEyNGM1NTNkMTNhZmM5Y2RmNzFjMzViZjUwIHJlbGVhc2UyMy1tYWludAorMzQ2MjEgYjEzNjM1M2FkZGU2YTZjZmE1ZjgyNjZhYjBjNjRhNzk1YTc0NDdjOSBsZWdhY3ktdHJ1bmsKKzM0NjIyIDUxMGJkN2VlYTkyNWZlMTBmYzc5MmQ2ZmVkOWJiNWIxZTVlYmQ1MjEgbGVnYWN5LXRydW5rCiszNDYyMyBkMjYxODM5ZWNmODdjZjgzZTIwZTRmOTc2MzE3OWIwYjYxNjM0YTVhIGxlZ2FjeS10cnVuaworMzQ2MjQgMzlmYTdiOGZjYzA3N2FjYTcxNGYyODAzOGIyYmM3ZjU2YWEwNjRiNCBsZWdhY3ktdHJ1bmsKKzM0NjI1IDNkOWIzNmQ2YWI4OThiMmFhMDkxNWRhNTExZTJhZjNmMTAwM2YxYmMgbGVnYWN5LXRydW5rCiszNDYyNiBjZDc2MjRiMDI1YTBmZTgyZTJlMzZiZjJjN2M1NTVjN2ZmZTc3YWViIHJlbGVhc2UyMy1tYWludAorMzQ2MjcgZTNlYmQ3NDBkMWVmYjQ4NjhiZmZkMTgzYzc1M2E0MGM5NzIwZDIxZiByZWxlYXNlMjMtbWFpbnQKKzM0NjI4IGEyOWE1ODViMDNkOTYwZjMxMTRhOWI3ZTQ4MDJhMGYzZDllMmEzNDggbGVnYWN5LXRydW5rCiszNDYyOSA0MzIwY2NhNGVkODQzODM3NzIwOTg0YTljYjZhMWM5NWM0YjliOTdkIGxlZ2FjeS10cnVuaworMzQ2MzAgZDQzMmY4MmI5ODZmYmYxYjQ3ZDE4YjFiYjhmNTM1OTEwOGY2NDA3NiBsZWdhY3ktdHJ1bmsKKzM0NjMxIDU2N2ZhMDY0OWU4MzVlODFjYzRlYjY5Zjk4MzQ2Njk1ZWExOGJlYTMgcmVsZWFzZTIzLW1haW50CiszNDYzMiBmNjQ4YzdmMWU4Yjg1OThiMzAyMmE4MjgwNmU1MTA2YjUwYTAyYWQ1IGxlZ2FjeS10cnVuaworMzQ2MzMgODA4MTY0M2MzNzNmZmJhZTIxNTY4ZTA4YmY2N2M3ODVlZTJiMzM3MSBsZWdhY3ktdHJ1bmsKKzM0NjM0IDgxNzMzYzdhOTVjOGRkZTYxMWYwNzBkMTNiYzZjMjZmZDJkOWJmNDUgcmVsZWFzZTIzLW1haW50CiszNDYzNSAxMmMyMmQ2YjFlYzA2OGIwM2JjYTY3YjczZGJlZjJjMGQ1YWQyNDIzIGxlZ2FjeS10cnVuaworMzQ2MzYgOGFhOTIzN2Y2ZGQ2YWExMDhlNDliYzc4ZWI3ZDZmNTE5MjI5MjdjYiBsZWdhY3ktdHJ1bmsKKzM0NjM3IGExODE5OGY0OTRmNDQ3OGRkZTIxYjgzMzhlN2E5MWI2MTBmNTBjNTQgcmVsZWFzZTIzLW1haW50CiszNDYzOCAzMjEzYWFhODJjN2I3OTZiM2M5ZmIxYzMzNmFjMmViMjE0MTgxYWI5IHJlbGVhc2UyMy1tYWludAorMzQ2MzkgMDQ2OGY5ZGRjMDY5ZDZmZjBmM2ZhNzY5NjM1ZDMxNWU2ZTA0OGQ4OCBsZWdhY3ktdHJ1bmsKKzM0NjQwIGEwZWNhZTMzMzJhOGI2YjFiZDMxMDgxZWEyNTlhMDAzOGEwMmQzNjYgbGVnYWN5LXRydW5rCiszNDY0MSA3YTZiMWM5ZmI4OWU1NDBlZGNlNmM4NDJkYTBkOTNmMzY1MzdjOTgwIHJlbGVhc2UyMy1tYWludAorMzQ2NDIgODdjMDQyMmNkZTcwOGMzNjhlYTI2NjQ5MDY2MzE4N2NlYTQ0ZDMwNSByZWxlYXNlMjMtbWFpbnQKKzM0NjQzIDUyNjY4MjQ1NmE4ZDVhNjkxN2YxMTY0ZDAyMTdhZjk4OWI4NDhjMGQgbGVnYWN5LXRydW5rCiszNDY0NCA5NjU0ZTVmMjQ3M2U0Zjk0OTcwMjEyMGU5Y2I3ZDMwMDc2MzFiODQwIGxlZ2FjeS10cnVuaworMzQ2NDUgNWM0Y2ZmOGZhNmVjZjkxYzRkNDk5MGU3YzYyNmFkZWM3MjAzODU1OSBsZWdhY3ktdHJ1bmsKKzM0NjQ2IGMwMGI1ZjE3OTYzM2NlYmVkZTA4OGEwOTQzYjJlYzQzMjlmOGVjYjMgcmVsZWFzZTIzLW1haW50CiszNDY0NyA1NGZmNjhlOTczZWViYWUwZDk5MGUxYmU1MzA2YjM3NGIwZjQ4NDJmIGxlZ2FjeS10cnVuaworMzQ2NDggMjg3MjAwYWY5NDZmYjdiZDUxNzMzODg5YTg5NThjNmFiMGMxNWJlOCBsZWdhY3ktdHJ1bmsKKzM0NjQ5IGZhNmU4ZDRmODhjNjc4MjgyZTcxNmRlMGQ1OTQzOWY2MjUyMGYyNDUgbGVnYWN5LXRydW5rCiszNDY1MCA3ZjY5NWM1OTgyODczYjkxZWM3ZTVkNGI1YTdiOGQyZDM4NDNjYzNlIGxlZ2FjeS10cnVuaworMzQ2NTEgMTlmZjk3MjQzNGIzZDI2MWJmYzNjMzNjOGQzZmIxYjc5MzJkMDA5YiBsZWdhY3ktdHJ1bmsKKzM0NjUyIDRlZmZjYmY4MGI0NWM2ZTQwZjQ1MTc4MGRlNDFjYTk0NGEyYzAwNjMgbGVnYWN5LXRydW5rCiszNDY1MyA1ZDJiMGU5MDYyZDUzMzdkMDY5NzliMjIxMzIzYjYzMTJkOGM1Mzc2IGxlZ2FjeS10cnVuaworMzQ2NTQgODk0MWYyZWU5MDk0OWYwM2UxMTQ1OTJiNGMxMjljNjNlMTk5NTI0MCByZWxlYXNlMjMtbWFpbnQKKzM0NjU1IDUxZWJmNTQ3NGYzZGM5ODRmMWNjOGNhOWIwOTU5ZmQ5ZDE3YmI2MWQgbGVnYWN5LXRydW5rCiszNDY1NiA4MTNhNmQ5YzU4ODgyOTA3YTg5OTFmNzIwNWNhMzNkZDFiMzljNDE1IHJlbGVhc2UyMy1tYWludAorMzQ2NTcgYjI0OTk1YTk2NjRiZDU0ODQwYWZmMzg5NGNjMWY1Zjg4MzkzMjQ5ZSBsZWdhY3ktdHJ1bmsKKzM0NjU4IGJmMTMxOTU4MWRjNDc5ZjljYmEwYTIwMTdkNmJmZDhmNjJiNzIyZGEgcmVsZWFzZTIzLW1haW50CiszNDY1OSBjYjdkNWUyM2RiYzc3ZjEwNDE0MWY2MGYwNTg2ZDljNTA0YjRkMWQzIGxlZ2FjeS10cnVuaworMzQ2NjAgNzAxODgwZDI2NmVjY2I0ODEzMDRjYmJlNDY3ZDZkNzg0NTVkMmI1YSBsZWdhY3ktdHJ1bmsKKzM0NjYxIDZjYTBkYmQ2Y2NjOThhMTk2ZWViZjdhOWQyNmNiNTMzN2U3MWVhODIgbGVnYWN5LXRydW5rCiszNDY2MiA2MjUxN2NjNGM0ZTc5MjAzMDFmMjg1ZjE5NzFiMDlkMjVjNjk5YzNmIHJlbGVhc2UyMy1tYWludAorMzQ2NjMgN2JlNDVmN2E3MThmMzU2OTQ0MTM0YjMwZWVjN2JjNzAwYTNkZjc4ZSBsZWdhY3ktdHJ1bmsKKzM0NjY0IGY3MjljNGQ1MzA0OGFjMjI0MzI3MjVlZTlkNDNmMTgzOTYxNjk5NzIgcmVsZWFzZTIzLW1haW50CiszNDY2NSA1ZjQ5ZmMyMzFiNGM4ODVmMTA1MDUxMWU2MzYwZWE4OWQ4NWE2NjdlIGxlZ2FjeS10cnVuaworMzQ2NjYgMjMzODJhMTM0ZDVhYjYxYTgwZDU4ZDhiZTk0Y2RhODBkZDExZTEyYSByZWxlYXNlMjMtbWFpbnQKKzM0NjY3IDFkYTM5YTc1ZWQzODRhOGExM2RhNDkzOTk3Mzc1ZGEzNTE0M2UyYmEgcmVsZWFzZTIzLW1haW50CiszNDY2OCAzOGU3MmY0ZjNkZjVlOTgxMGVlZmZlODVmZjNmMmEyNjY4NTlmZTNhIGxlZ2FjeS10cnVuaworMzQ2NjkgMTE2MzZlNzk4N2I2MzdmZWMxYmI2YTE0ZGI5NmUwOTg0OGU0OGI1NiBsZWdhY3ktdHJ1bmsKKzM0NjcwIDQ1ZjcwNzI4ZGJhYzQ4MDgwZTRhZTA1OTgxNGU0OGIyMDhhMWE2ZmUgbGVnYWN5LXRydW5rCiszNDY3MSAzMzEzNTcxYzY1NzQzYTllYzQzY2I5NmIyYzg0ZTExMzUwYzZlNGY4IGxlZ2FjeS10cnVuaworMzQ2NzIgOGZhM2M1ODY5ZjUxYTdiNWVkYjhlZmMxNTNlNjllOGVmY2U4MjUwZCBsZWdhY3ktdHJ1bmsKKzM0NjczIDA3ZDNjODY2OGY4YjQ3MWM4YWFlMWEyZTYwOWI0ZTM0ODY2ZjgzN2MgbGVnYWN5LXRydW5rCiszNDY3NCA1M2QyODEzMzk1ZjRlZjgwNjllNDRkODE4NzQzOGNlMjA3MWYzZDY3IHJlbGVhc2UyMy1tYWludAorMzQ2NzUgN2FhYTQwYmMyYjE3Yzk0ZGYyYzA1N2VkZjM4MTNhMTI3ZGEyMzA0ZiBsZWdhY3ktdHJ1bmsKKzM0Njc2IDQ2YjlmZGQyN2VjMjFmYmZhN2RhYmFkMzBhNzI2YmZiZmM3MDA0NDEgbGVnYWN5LXRydW5rCiszNDY3NyAxOTA0ZDhiMDM4YjY2OGQ5ZTk4ZGI2YmRiZDc0MGRlMTQ2YTBkODI4IGxlZ2FjeS10cnVuaworMzQ2NzggOGFmZWNkMzZmYjhlMzUxNTc3MDNkNDQ5MGMxM2I5ZDQxMzhiMGMyNCBsZWdhY3ktdHJ1bmsKKzM0Njc5IDMxN2ZjYzVhMTg0ZDQ4Yjg5NDk1NWFlZDVlOGRhZWMwMTAyNDFiZDUgbGVnYWN5LXRydW5rCiszNDY4MCAyMjEwN2M1YTE3NmUzMTMzOGRiODcyNjM2NmI1ZDc1OTQzNmY3YjYyIGxlZ2FjeS10cnVuaworMzQ2ODEgZjE5NjI1ZjNjMTk4ZWVmNGEwMjQzMWVkZmVmYzE2MjQ2YzNjYzVhYSBsZWdhY3ktdHJ1bmsKKzM0NjgyIDViY2U5NTg5ZWYwYjAzNmE5NzIxOGI3OGMyNWNjODE0NzBkNmYwYmIgbGVnYWN5LXRydW5rCiszNDY4MyA0ZWRhYmMyOTc2ZjczZmM1MTMyOGIyNTQ3Y2VmMTMyNzAxNzUwMDZjIGxlZ2FjeS10cnVuaworMzQ2ODQgZGQ2YTUxMGFlMGQ5YzA5OTQ0MzQ3MGIxN2MxNGJkNjk0ZDdmYWQ2OCBsZWdhY3ktdHJ1bmsKKzM0Njg1IDNjMWM4MWQ2NDJlMDg3N2VjOTAwNTQ5YTE5ZDBkNzJkNWNlNDgwMTYgbGVnYWN5LXRydW5rCiszNDY4NiBiNmMxMzk1NDRjMTZkNmFiN2EyNDEyNThkYzE1NGFkYjA0NjdmMDhhIGxlZ2FjeS10cnVuaworMzQ2ODcgZTRmOWU3NGJhNTZkYzg1N2NjYWY2ODk0M2Q5MjM1OGI0YWVjYWQwMSBsZWdhY3ktdHJ1bmsKKzM0Njg4IDE2YzY4MmUzZTU3ZjllZjI4MDIzM2MyMTI2ZDIwNGZkNTc4ZmRhMDIgbGVnYWN5LXRydW5rCiszNDY4OSA0YjJjOWUxNGI0NDZiNjQ2ZGU5MGJlOGE2MzNlMGUyOGI5YjRlMzQwIGxlZ2FjeS10cnVuaworMzQ2OTAgY2U5NmJkYzZmYmI4ZDQwOTZjYzJiZGQyMGVlOTc0MWI2NGZiNDA5OSBsZWdhY3ktdHJ1bmsKKzM0NjkxIDUzZTRiN2ZlMDk2OWMxNDY5MzJmZGM5MDNlMjI2N2I3ZWZjZWI3YzYgbGVnYWN5LXRydW5rCiszNDY5MiBkMTJmMDdjMWMzYTA3MDczMDgxMTkwMzk4MjVkODI3MTkyZDU2OTE5IGxlZ2FjeS10cnVuaworMzQ2OTMgNGNlMzBkOWExZTA0MTliZGY5M2Q5YTk2ZWQ3YzcyYzI0MDUzN2JlNyBsZWdhY3ktdHJ1bmsKKzM0Njk0IGVhZDRjNjEyMTlkMGYwYzE3NjFhMjdjNzYyMDc2NTY4Mzk4MjRhODAgbGVnYWN5LXRydW5rCiszNDY5NSA3ZmUyMDE4MDFjMTQ5OWY4ODUxNThkODY5NzU0NGNhMjY5NzNlZTcwIGxlZ2FjeS10cnVuaworMzQ2OTYgNGM4MTYwMDg4YjM0NzU0YWU3MmFhYmEzOTJlM2UzZjQxYzUzZDJjNiBsZWdhY3ktdHJ1bmsKKzM0Njk3IDg2ZmRmOGZlN2YxNzIwZDEwNjE1YjVlYmM1YzUxZGJkMjBhZTcxYzAgbGVnYWN5LXRydW5rCiszNDY5OCA4OTBmM2MyYzExODMwMDU5N2I2YjcyNTY4NGJkNjNiMjdjYTAxNmM5IGxlZ2FjeS10cnVuaworMzQ2OTkgZWIwNDI2NWZiNjViODZiNjY2YTRmZGEyNTQyMmM3NmIyNzUxNmQyZCBsZWdhY3ktdHJ1bmsKKzM0NzAwIGU1NDNiM2YwZDkwNjAyZTI2NWUyYWNjNGJmOGIxYTY1MjMyYWFmNTAgbGVnYWN5LXRydW5rCiszNDcwMSAzMzRlZGNkMWU1YWM2MTI1MmYzMDBlOGQ4MWFlNWQ2MGYwMmNmMjczIGxlZ2FjeS10cnVuaworMzQ3MDIgODMwZTVmZmM2ZDI1YzcwNGY4ZWRhMGI5ODRlY2E1OWQxODYzYmJmNCBsZWdhY3ktdHJ1bmsKKzM0NzAzIGZkYzhhODhhOWE1YTQzNDRlNGFiZjVkMDhlZDkxNjgwNTdkM2Q5YzggcmVsZWFzZTIzLW1haW50CiszNDcwNCA5NjAwMWE3MGM1MDU3ZjBiNmY5MTUxNTg4NTVlYTQyNzUyM2ZhNzBiIGxlZ2FjeS10cnVuaworMzQ3MDUgZDk5ZTAyMjk2NmM5NDM4YzU4OGZjNjgyODYwZDhjY2E0YjZmYTVjOCBsZWdhY3ktdHJ1bmsKKzM0NzA2IGNhYTFhNDhkYTRjY2RmY2YwYjZkMTBmM2U2MzNmYWY5YjZlMWY0NGIgbGVnYWN5LXRydW5rCiszNDcwNyA0ZjYzODJkMjgwOWRmNGFlOGMyMzYzZjcyMzRjMDZhNzJiYjYxOGY3IGxlZ2FjeS10cnVuaworMzQ3MDggODMyNmY2NDI0NGMyNWFiZmM3ZWE1YzEwZmJjMDQ4MzBjOGE4MjE3NSByZWxlYXNlMjMtbWFpbnQKKzM0NzA5IDE0ZDMyMTQ2NmEwNjkyZjE0OWMzYzVhZjM2ZjNlYzAwMWMwM2U2YmQgcmVsZWFzZTIzLW1haW50CiszNDcxMCBkNDAxNzkwMTc2Mzk1ZDU5ZWE1NDA2YjM4ZGQ4YTBhNjI3NDA5ZTg5IGxlZ2FjeS10cnVuaworMzQ3MTEgNTJkZTU4MDg3YjJmM2E0NWVjYmNmZDUzMTUxMTU0OTJiN2ZhZDI4OSBsZWdhY3ktdHJ1bmsKKzM0NzEyIDYzMmIyMjNjYjhlODM4Nzg4YzkzNDEzN2RkNTc5MzkyN2FmYjI0NzAgbGVnYWN5LXRydW5rCiszNDcxMyBkNDgyNmUwOTdhM2ZlYmYyODRiOGYyOWE1YmViZDA5MWJhZDczMjU2IGxlZ2FjeS10cnVuaworMzQ3MTQgOWZjNTM0MWZhNjk1NmE4MzNiY2JhMjc0ODJjODg2NTU2NmQxOTk0ZSByZWxlYXNlMjMtbWFpbnQKKzM0NzE1IGUwYTc1YTc1NzBiNDAyODlmOGM1NGYzODJmMDFiMGE3MzgwNGY4ZDAgbGVnYWN5LXRydW5rCiszNDcxNiAxOGRmMjAzYjhlOTg1NDgyYTRlYjdmMzBlOWM2ZWExOWUzYWFmZjcyIGxlZ2FjeS10cnVuaworMzQ3MTcgNGRhOTlmNzNhMWRmODRkMTIzNjJhOGQyN2ZmZmMwOGEwNjJhMzhlNSByZWxlYXNlMjMtbWFpbnQKKzM0NzE4IDIyYmVkMmZkZmZlYTZiOTY1ODRhMzJkOTY3NDZkZmJjMGU2NzFiMDUgcmVsZWFzZTIzLW1haW50CiszNDcxOSBkOTAxNThkZjM5YzQ1MzEyZmRmZTBhYjUwOGQ3NmU2ZDg3MmU0MTdjIHJlbGVhc2UyMy1tYWludAorMzQ3MjAgNjIyYTc2YmMwMjM3NjkzOWIwYWE3ODc5MWU4NzJiYjk1ZDAyYmNkNCBsZWdhY3ktdHJ1bmsKKzM0NzIxIDI3ODk3NmIxOWRjY2E2Zjg0NzNjODRjZmIzYzUyNDYwZDY4M2E1ODEgbGVnYWN5LXRydW5rCiszNDcyMiA1Yjc3YmM0ZDI1YjFiOWRmNTlmN2Y5MGMwYzc3Yjk1Mzc4OGNhYmJiIGxlZ2FjeS10cnVuaworMzQ3MjMgNDY5NmM0YjdmNzkyYjJhN2FmZjNhMjg2NGQ1MTRhMzdiNjllODljZiByZWxlYXNlMjMtbWFpbnQKKzM0NzI0IDFmZDgxODk0Y2I5NzNmMmZlNDI1YmZiYTRkMDZlZWM4NGIzNzI4M2MgbGVnYWN5LXRydW5rCiszNDcyNSA3NTNkNzJiZDIxNGIyYzVkMmY4ODZiMTY1MjczMTQ0NDc4NTNmYjdjIHJlbGVhc2UyMy1tYWludAorMzQ3MjYgNDIyNGQ4MDc5MTFjNGEwOWYwMmVjYTFhMjRkZGQ5ODc2ZjEzNDliMSBsZWdhY3ktdHJ1bmsKKzM0NzI3IDcwZjMyZjBkOGVjZjA2NTliNWYxZGNhZDk0YTc4NWZlOGM3MWY4NzggbGVnYWN5LXRydW5rCiszNDcyOCAyZGRiMWNiYTE4ZDY0Mzk2ZDI3YTQ4OTU2OTlhODhmM2VkZjFhZTBjIGxlZ2FjeS10cnVuaworMzQ3MjkgOTYyOGJiNTRhOWUwNzRjYTIyYTI4NTY4MjEyZTA3Y2ZlN2E5MzE1MyByZWxlYXNlMjMtbWFpbnQKKzM0NzMwIDQ2ZGUzZGI5YTVkYjUzNDRiMGQxYWIwNTA4MzM4MTNkN2M2NGJkNDkgbGVnYWN5LXRydW5rCiszNDczMSAzMmMyYzc5OWM5MjQ4ZTNhM2Q2MGE1YTFiZDg3OTMwNDBlNjc4ZWQ1IGFzdC1icmFuY2gKKzM0NzMyIDI3MGQ1OWUzNDZlNmFmODk0OTdhYWE4MWExMGVlMjIzN2QxYjQyZTYgbGVnYWN5LXRydW5rCiszNDczMyBjNDExYTc2MmQ1ZGQ2YTJlYTZmNmFlY2RmZThmY2Y0N2MwOWU0Zjk3IGxlZ2FjeS10cnVuaworMzQ3MzQgOGQ0MTM1NzhlYjFhYzBhOGU2Mzk3MWRlOTAyZDYxZjA3YWIyMmFjYyBsZWdhY3ktdHJ1bmsKKzM0NzM1IGE0YjkxM2Y5MzdjZGM5MTdhYzEzZDYyNjlkZjEwOWM5NjBhMTI2NjkgbGVnYWN5LXRydW5rCiszNDczNiAxN2FhNTMwMmUwOGIyMTdkMDc1MWU1NDQ2N2FkY2I1YzY1MTk1NzgxIHJlbGVhc2UyMy1tYWludAorMzQ3MzcgYmNjNzg3M2M3MDdlNTJlYWZlMTVmODZlNWQ2MTAxNzI5MWUyODdkZSBsZWdhY3ktdHJ1bmsKKzM0NzM4IGIyZmQ3YWYxNzE4NjkwNmYzM2U0ZGI4MWY0ZGRiNDYyZmVjMDU2YmEgbGVnYWN5LXRydW5rCiszNDczOSBkMmVhYTUzY2VhYmVlMmEzY2NjYzdkZWQwMWM2OTM3YWRlMDU5M2U2IGxlZ2FjeS10cnVuaworMzQ3NDAgMjFhMTBjMzYwMGI1YzRkNDc5MjRiOThjYTgwZTU2YmRmMzc3ZTllYSBsZWdhY3ktdHJ1bmsKKzM0NzQxIDg0NWYxOWIxNDVhOGZhMGYyY2Q0ZjBmMzU5NGFmNmUxZTdjYzhiYTcgbGVnYWN5LXRydW5rCiszNDc0MiA4NWNhYmU3YjIxNmI3YmQwNTUzMWE3NDcyNDIyOGUyN2RhNmQ4MjFjIGxlZ2FjeS10cnVuaworMzQ3NDMgMGFjNDA5ZGZmMzkwOTE1OWE5NzI2NjIzOTUyMzZmZmY5NmZmNDliMyBsZWdhY3ktdHJ1bmsKKzM0NzQ0IDJiNmExMGUwNjcyNzM4YmVhMmQ2MzRmY2FmZDlmMGFiMmQyNWExYTcgbGVnYWN5LXRydW5rCiszNDc0NSAwMjRiNDc5OWE0MWQ1MjUxNzQ1NWNlODVmZWM4OTI0ZGQ0NjljYjAwIGxlZ2FjeS10cnVuaworMzQ3NDYgYmYwMzg5ODZjYjhmZGYxMjZmYWRmNTM1NmUwODFjN2ZiYzJmMTRhNyBsZWdhY3ktdHJ1bmsKKzM0NzQ3IGY5Njc1ODlkZjc1MTI1YTc4OTg2ZWY5Y2RkNTE0YWJkN2M3NDcwNTUgcmVsZWFzZTIzLW1haW50CiszNDc0OCBjZTA3MTE4ZWU1ZDI3N2RjZDM1ZmRlNjNiMzA5MjBjNDc5Y2E2MTk0IGxlZ2FjeS10cnVuaworMzQ3NDkgN2M1NWViZWM0OGY1NzdhNWRiYmE4MGM1ZDU2YmQ2MGViM2I1NDY3YSByZWxlYXNlMjMtbWFpbnQKKzM0NzUwIGRhMTU3OGNmYWUxODJlNTRiYjI2NmI5MGYyMDVmNTE0NmMzNzJjYmIgcmVsZWFzZTIzLW1haW50CiszNDc1MSA2ZDNlMGU2ZDdiZTYxNTk5ODQxMjVkODViNTZiMTZjZTMzNTJlYzAxIGxlZ2FjeS10cnVuaworMzQ3NTIgNGI2YzdlNWNiODg5YjMzZDgxMWVjNDAzZWU4NDM4ZDAxM2VlOWNkMyBsZWdhY3ktdHJ1bmsKKzM0NzUzIDJjM2E3NWM1NDgzMzQ5Yjg0Y2YzNDA4MzhhYjhjM2ViNjQzYTk4OTIgbGVnYWN5LXRydW5rCiszNDc1NCBmYWRjYTE3MTY0YzA2YzYyMjQzYjMyZThlMDM3YWU2YTg2ZWRiNzliIHJlbGVhc2UyMy1tYWludAorMzQ3NTUgNDRhYjI0MmM5YjhjZjVhZWY1YzgzZDgzNDhkNjk2MDM5NzU0M2VmMSBsZWdhY3ktdHJ1bmsKKzM0NzU2IDJkNjkwYTk1ZTRmZDFlMDFlYTQ4MWE5NmZkOGY2YTlmYjU3MWI1ODcgcmVsZWFzZTIzLW1haW50CiszNDc1NyBmNzFhMjE2Nzk0MzZhNTEwY2NjNDY1Mjk4ODU1YmJmZWQ4Yzk5NzE2IHJlbGVhc2UyMy1tYWludAorMzQ3NTggNmNmMDliZTA0OTFkZTg2YmU4MzM2N2YwM2VmNzU4N2ZmMDljNzgzYyBsZWdhY3ktdHJ1bmsKKzM0NzU5IDQwMDliMzk5MjYxNmEwZDYwYzM1OGEwMjVkNDg1YzgxMDMxMWM0MGUgcmVsZWFzZTIzLW1haW50CiszNDc2MCA2ZjAxNzAwYzE4MDg5OGRlYzNlZDEzN2Q2MDRmMWE3MGNmZGUyYjk1IGxlZ2FjeS10cnVuaworMzQ3NjEgOWM4NDZjM2RmNmYzZTAyNGUwZWFhYjRkZGE1YjlhMzg4YmJlZGY0YSBsZWdhY3ktdHJ1bmsKKzM0NzYyIDczZDUyMTMzMDVkMzc2ZDUwNDljODQ4ZDU4YjM3YzMxMGVmZTFmYjUgbGVnYWN5LXRydW5rCiszNDc2MyA2ZGMxOWU0ODM0N2EwYjc4ZjI2YjQ0NzZiMjZmOTI4YzZkN2JjZjA4IHJlbGVhc2UyMy1tYWludAorMzQ3NjQgZGQ1NzA3ZjcxNTI2YWNlOTRiYTg1NThiYTFhMGJhZjA5YmU4YjVlMiBsZWdhY3ktdHJ1bmsKKzM0NzY1IDBmZjY5MjU5YjAwNWY0NzNmNGY3OTU2YjIwZWQ0MDdjNTE1ZWUyYzEgcmVsZWFzZTIzLW1haW50CiszNDc2NiBmZDg3Y2UxODE5ZmEzNzhiMjI1ZGIxYTE3NmI0MGE5OGZkNGJlMGMyIGxlZ2FjeS10cnVuaworMzQ3NjcgZDUwZTI2ZjIwZjEwODRmOWZkZjFmNTI2YzE5YzFiMDk3MDkxNDE1NSByZWxlYXNlMjMtbWFpbnQKKzM0NzY4IGY1ZWFiNjI4MzI4NjY0ZmE4MzAzNGI3YTYwNTc3YTlkZmYyZmEwZjAgcmVsZWFzZTIzLW1haW50CiszNDc2OSAzNTQ4ZjIzNDgzMWUwOTlmMTkwNTExYjc4Mjg2OWY2MWRkMzkwNjM2IGxlZ2FjeS10cnVuaworMzQ3NzAgZDNhZTMyNGY2Yzg5NWZhMGJmYTkwYmJjMjA0NDgwZTcwOTI0ODNlMyBsZWdhY3ktdHJ1bmsKKzM0NzcxIDQ1NmUyNzRmODYwMjYyNjZjMDYxZmQ2OTQyZmZmNGJjMTg3MmUxODkgbGVnYWN5LXRydW5rCiszNDc3MiA1ZGVhNzNkYzk2OGI4NDI3ZGY5ZTBlN2IxOTJiNmMwNTgzYjRiNjE2IGxlZ2FjeS10cnVuaworMzQ3NzMgM2QxZjBkZjc1YTgwYzZjYjVmZDJiMGYzOGFlMzE0NTk3YTgzYzE5NSBsZWdhY3ktdHJ1bmsKKzM0Nzc0IDM4MzM4Yzk3MGY3ZDA3OTlkMzc5ZWU2MTExYTQ5MjgwMTNmNWIxYjIgcmVsZWFzZTIzLW1haW50CiszNDc3NSAyNTE3MTc1NjZlOTEyZjhiZmFmZTI1YjJhNjMwOTliZjk0M2RhYTJmIGxlZ2FjeS10cnVuaworMzQ3NzYgZjY5NTg5MTc5YzU1OWMwNThmMWVlNTk2ZTUwY2YxNzNiMWY5NDU3MSBsZWdhY3ktdHJ1bmsKKzM0Nzc3IGJmN2RmNDgwMTJjYjJhNjgxM2RlZDQxMzIxMmRhYjEwODFlODJlY2EgcmVsZWFzZTIzLW1haW50CiszNDc3OCA0ZTExMjUwNTY0Y2JkM2YwNjM1YTRjOTQwOTRmZTAxNGI0NzQzMWE2IGFzdC1icmFuY2gKKzM0Nzc5IGQ2YzdlNTU5NjI0N2ViMDg5YjQzMzFmOGZlZjA2Nzg1ZTJhMzE4ZTAgcmVsZWFzZTIzLW1haW50CiszNDc4MCA0YTM2MWJiYjUyNzhjYTU3ZTJiM2M4Yjc3YTFjODQzNmUwYTI3Nzk0IGFzdC1icmFuY2gKKzM0NzgxIGYwYTE5N2RkMjEyZDUzOTQ0MmJjN2E2MDA2YzA2Y2RjZTY4NzA4Y2UgYXN0LWJyYW5jaAorMzQ3ODIgZjE0MzNkM2M2NDQ3ZDc3YzY2OTYzYWU5ZjJlZmFiYjgxNWEzNzU1MiBhc3QtYnJhbmNoCiszNDc4MyBiMGJjY2I5ZmI3MGE4YjNhNWM2M2Y4ZGRmZDExYzUzN2UxMTdjMjMzIGFzdC1icmFuY2gKKzM0Nzg0IDY0ZGRkYTI1NTk1MjRhZDgxM2FjMTM2YjNhMjljNWViZGUwN2I0MDcgbGVnYWN5LXRydW5rCiszNDc4NSA0ZTMxYzI2MWE2Njg5NWM0ZDQwNjZiOTExMDZkMzZhMjhiZDc1ZmY2IGxlZ2FjeS10cnVuaworMzQ3ODYgMGFjOTg4NzhjYzMyYjVjODdjN2EyMjk5NWEwNzI3YjMzMTQ1ZGJiZSBsZWdhY3ktdHJ1bmsKKzM0Nzg3IGUwNWZlMTc3NTUyMDY0ZTMxOTg2MWQwNzg2MDZhNWM2YWM5ODEzN2QgbGVnYWN5LXRydW5rCiszNDc4OCBlYjUwOWZjNDdmMDc1MDg2OGFmOWNkNjExMDU0MmRkMThjYzUxMmQzIGxlZ2FjeS10cnVuaworMzQ3ODkgNDFmNGNlNmM0ZTUwNGUzMjQxZDJjMmRhNjI3MWVlZjllOWFmZTQ4OSBsZWdhY3ktdHJ1bmsKKzM0NzkwIGExMDJkYTkxNjQwZTM0NmE5ZjlkZmM4MmY1OWI3OTAwNDMyZDNjYTQgbGVnYWN5LXRydW5rCiszNDc5MSAwZWM0ZDNlYmQ0MzM3ZjFkOGU3OThmMGU5ZjczNDNhZjkyOTMzYTg1IGxlZ2FjeS10cnVuaworMzQ3OTIgOTMxNGJlMGJiYjY0MDE5YjhkOTdiYzU5NGU2ODEwNmJjZmMwNmNkOCByZWxlYXNlMjMtbWFpbnQKKzM0NzkzIDVhMDY1OGMwMDg3OWFhMzVmMzNjOGE0MTg4YjNkNGM1YTI5MzViM2EgcmVsZWFzZTIzLW1haW50CiszNDc5NCA3ODM2OTRkNGQ0Y2YwY2ZkZGJkMjQ1YmUzMGI4ZDU3YWE4N2I1YWM5IHJlbGVhc2UyMy1tYWludAorMzQ3OTUgZDQ1MTRjZTE0Yjk2N2Y3ZDk2Nzk4YTMxZjU4ZTI1Y2I2NjNhNmUxOSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk2IGRhMTRkODA2ZTg5Yzc1MmY2YTcyOTRhM2U0YTY5YmIwNzRlYzQ2NzAgcmVsZWFzZTIzLW1haW50CiszNDc5NyBkZTI4NTViM2Y0MTM2YmYxY2EwYjc3YjAyODg1YjdkNTRjOGJhMWU5IGxlZ2FjeS10cnVuaworMzQ3OTggNDg2OTVjODM5ZDk4YjNhMjcyYzYwOTMxMDQ5NWVhMTFlNjJhODQ2YSByZWxlYXNlMjMtbWFpbnQKKzM0Nzk5IDViNTE1Y2M5MGI1YTQzZWZlNDJmNDYzMTJiNmJhZTEwZWYwMDkzYzQgbGVnYWN5LXRydW5rCiszNDgwMCBhNTJkNzQ5NDhkZDRmNGUzZmI4ZWYxMTJiYmY1NDJlY2QxZGYyNDliIHJlbGVhc2UyMy1tYWludAorMzQ4MDEgMmE2ZmM0ZDI2MWY4ZTY4ZGFiOTQ4YTdkNjY1ZmRhNTJkNGZhYzg4MSBsZWdhY3ktdHJ1bmsKKzM0ODAyIDJiYTlhODY5NjU2MDJkOGUwNTRlMGYyZDFjODQ0MmZhMmRjMzBiYjIgbGVnYWN5LXRydW5rCiszNDgwMyA2MjI5OTFjYzFlM2M1OGI1MWM1NTIxYTMyYTgxOWNkOWUxYmVhZDg5IGxlZ2FjeS10cnVuaworMzQ4MDQgMzYwNjJkNjQ1ZmJiOTU2MzVlYmViNTAxNTgyN2YyYWU2ZDdjZmQ3YiBsZWdhY3ktdHJ1bmsKKzM0ODA1IDZlYjQ3M2Q2ODA0MjRjNTQ0ODZmOWMxM2ZlMzc4MzRmNmYzNDlkMzkgcmVsZWFzZTIzLW1haW50CiszNDgwNiAxZjA5ODE5ZjUwOGIyNWQ0NTRjYjdmZWZhYTE4MzBiM2RhM2M3MzU3IGxlZ2FjeS10cnVuaworMzQ4MDcgZDAwZjAxMjA3ODM3YjY3MjI1ZjRlOWFiYjgyOTg4ZWE4NDI0Yzg4MiByZWxlYXNlMjMtbWFpbnQKKzM0ODA4IGUzMDI1ZmU3MGQ4YmQwNGY3MjJlNzM3OTJmODhjNGRkNmRlZjc4ZjcgbGVnYWN5LXRydW5rCiszNDgwOSBhMmY2YzZhNjdmMjQxNDA5OWNjNzAxOTNiYjYwMzhmNzViNjA3NmYyIGxlZ2FjeS10cnVuaworMzQ4MTAgYjI0ZDZhNzFiMDFmMTI2NTk4ZjA2ZWYwNDc4MjIxMGI5ZTY2MzNiNSBsZWdhY3ktdHJ1bmsKKzM0ODExIDhkZDE1OTI3OTU3NmE1NzQ3ZTNmMmNlN2Q1N2Q4MWI4ZWQ5OWVhYWEgbGVnYWN5LXRydW5rCiszNDgxMiA4NzA2MTViZmFlZGZiOWU0YjJlOWMzZmQ1OTQ2YmM5YmY4YzhjZTRmIGxlZ2FjeS10cnVuaworMzQ4MTMgMmY3OTZjNzU5NmVjYTIzZjE4YzE5NGQ4YTZjMTA3ZDkzZjZjYWRiYyBsZWdhY3ktdHJ1bmsKKzM0ODE0IDBhN2YxYTUzYzc3M2I0YWMxZjVjOGQ1MmIyMzc1YTFlNTQ0ODg4ZDMgbGVnYWN5LXRydW5rCiszNDgxNSAzODYxZWI0NjdjMjllMDdiYTZiMzY2OTc2MGRkZjcyY2IzM2I0NDhjIGxlZ2FjeS10cnVuaworMzQ4MTYgZGUzOTFlOWQ3MGVhMTY3ZjFlODFiYTU3YTBhYjNjNjg2NzczMWFkMCBsZWdhY3ktdHJ1bmsKKzM0ODE3IGYyZTc2NDZmNzc2MzE2MWJiZGRkZjI3NmQ3NDdmNTZmZjZmNGYzMTAgbGVnYWN5LXRydW5rCiszNDgxOCA5Y2E5ZDMxOGFmNzhiN2Q1ZjgzZjk1NjM3ZWExOWQ5YmIyZGQ2MjI3IGxlZ2FjeS10cnVuaworMzQ4MTkgMzAzODJhYjA2Y2QxYzJjMGI5MDQyNjNkMGY0MDQ0MGM3YTFmODY2OCByZWxlYXNlMjMtbWFpbnQKKzM0ODIwIGQzNWY4Nzk5Y2YxMjIyMDVkZjVmODQ2NmEzZWIzMjA2MmI3ODZjYjYgbGVnYWN5LXRydW5rCiszNDgyMSAwM2Y0M2Q2MTlmZjRiOGE1NTBhNmQxZWMzMzg2YWE1ZjdiOGI4Mjk3IGxlZ2FjeS10cnVuaworMzQ4MjIgYmRmNjBiZWE0MTc3YTc4MDQyYzBmMDkyMzE4MzhjNDRjMmRjN2E5MyByZWxlYXNlMjMtbWFpbnQKKzM0ODIzIDc1OTIxNGYxZWM2OTEwNzE0MWY5YTAwNDI0OTZmYzYyZGViNWM3NTggcmVsZWFzZTIzLW1haW50CiszNDgyNCAxMTNlYWZlODg0OGZmNTg3MTQxYzM3YTJiNWFkZjEwN2M0MmUxZWZmIHJlbGVhc2UyMy1tYWludAorMzQ4MjUgNjFiNzBlYjhkMTYwYjMxOTUxODA0ZjNiNWM2NDY1YzY5NGU5ODA1OCByZWxlYXNlMjMtbWFpbnQKKzM0ODI2IDg2Y2YyYjgxMGYzYTJiZTc3YjQwODhlMWE5NjczYTFmMDZkMWY2YzYgbGVnYWN5LXRydW5rCiszNDgyNyBjMjNhODYyMTVkOWY3ZTE3NTBmOWI1YWU0ZGVkNGU4NjAwN2JlZTIyIHJlbGVhc2UyMy1tYWludAorMzQ4MjggMjAxNGY5YzYzNmZiZTc1NmE5NDRhZTM3ZDgwNGI0MWEwNmE2NDc4YSByZWxlYXNlMjMtbWFpbnQKKzM0ODI5IDBhNjNkNGQwMTVjZjk1MGYxODhmYmNkZjkxYmE1NTQ1N2Q0NjhhY2MgcmVsZWFzZTIzLW1haW50CiszNDgzMCA5MTVhYTBlNjk0ODU5ODllNzdlOTQ2MDg5NGIwYzczN2NkYWQ2ZmU3IHJlbGVhc2UyMy1tYWludAorMzQ4MzEgYTA5NmQ3YjhlYzhhMjllMTIwMzZhNThlNTcyYjY2Yzc3OTRkNGExZCByZWxlYXNlMjMtbWFpbnQKKzM0ODMyIDk3MmU3ZmExZDU5ODZhNWIxNzcxNjZkM2ExNWE4OTFkZTZlOWRhYTkgcmVsZWFzZTIzLW1haW50CiszNDgzMyA0NWNiMjg0Yjg0ZDNhYjI2NWFhNmYyNDQ3YTllN2ZhYzZkNTRiYTIwIHJlbGVhc2UyMy1tYWludAorMzQ4MzQgZDc2MzBjZTdhYTlmZDViMTIzNWE2NTJmMzk5Y2E3ZjkzZjBhNWFkMCBsZWdhY3ktdHJ1bmsKKzM0ODM1IDlkNjI2Njg4Y2E3YmNlYjA2MmJhZjFjNGNhZTFiOWExNGY2NTE2NWUgcmVsZWFzZTIzLW1haW50CiszNDgzNiA3NDAzZTM4YTJmMTA3YzlhOWE4MjRlZTY3N2MwYWE3OTM0NTNjNWNhIHJlbGVhc2UyMy1tYWludAorMzQ4MzYgZDIxZDRiYTJmOTczNDY3ZDMwNzk0YTNkMmFjNDkzNjU4MTgwZTUwMyByZWxlYXNlMjMtbWFpbnQKKzM0ODM4IDU2NjM1MTljZjA2ZmY0M2ZkMjQyZTRjNWY1YjM5NzU0YjY0ZmE3OTIgcmVsZWFzZTIzLW1haW50CiszNDgzOSBlOTZlMzljZDJkMTQyYjFmYzNiNTg5ODE4ODU1YzA5NGRkOGYyNTliIGxlZ2FjeS10cnVuaworMzQ4NDAgYmE4ODZhZTMyMmVjMTY5ZmRmZDNmMWRiZDQ0YzA5YmJlOWQyM2FmMyByZWxlYXNlMjMtbWFpbnQKKzM0ODQxIDYwZTVkOGI3ZTk2NGU2Y2E5MTRiY2ZlNGI4ZWJlMDYwMjdkNzY0ODEgbGVnYWN5LXRydW5rCiszNDg0MiA4MzViNzllYWM4MTJjZTkwOGYzYjYwZmRmYTM0OGI2MTgzODliYmRkIHJlbGVhc2UyMy1tYWludAorMzQ4NDMgOGU4MGY1NTFiMGU5NjgxYzQ1YmNmODVjOGJiOGQ4ODMxYThlMGJhOSByZWxlYXNlMjMtbWFpbnQKKzM0ODQ0IDM4YmVjY2Y0YTBiYmY3NzcwZjBlZDViOGI5ZTQ1OWJjODE3YTNlZWEgcmVsZWFzZTIzLW1haW50CiszNDg0NSBiNzdmZDQ2OWVlMzU0MWZhOGY3YmY5ZDgwYTBjYWI1YjFhMTVjZGM1IHJlbGVhc2UyMy1tYWludAorMzQ4NDYgNjlkZTVhZWUxZmJiNTEwZDFkNTZlNGVhMWZhMGFkMTk1ZjlkM2NiMyBsZWdhY3ktdHJ1bmsKKzM0ODQ3IDdjOGRjNjQwNDIzYTUxNDhlMTdiMzQxMzdhNzY1YzQxMzZkNjhkMzUgcmVsZWFzZTIzLW1haW50CiszNDg0OCA1MzUyYTZlYmFkOWFjNDAwOWMzMGJjOWZlODQ3MWNjMjIxYWFhYjI2IGxlZ2FjeS10cnVuaworMzQ4NDkgMTdlNmU5ODI5YzdlNTBiZjE2MjcyOTllNzgwMzg3MjE0ZDVhMDA0NCByZWxlYXNlMjMtbWFpbnQKKzM0ODUwIGYxMDhkYjU5ZWI3NmEyNmI3YTE1YTk0Mjc2YzEwN2U0MDhlMjliODcgcmVsZWFzZTIzLW1haW50CiszNDg1MSBiMDI4ZmQ1NDE5NDE5OGE5ZTMxMjM0NTNkZmI1ZDIxN2NkYThkYjA2IHJlbGVhc2UyMy1tYWludAorMzQ4NTIgOTM5NWNkOTJkMmNkN2U1YjY5OTZmYzNiYWI2OTQ2ZDQ1Zjc2YjQ1ZCBsZWdhY3ktdHJ1bmsKKzM0ODUzIGJlOWVmOWI5MmQ2MTM4YzBiNzBmYzdkMDE5NDMyZTZjMzljOWQ5ZTkgbGVnYWN5LXRydW5rCiszNDg1NCAyMWFlYjk4MzJjMWQzMjgwNDJjNGZmNmNkMmRhMTE3YzkzZTllNjg4IGxlZ2FjeS10cnVuaworMzQ4NTUgNDE1ZWY1NTIxYThhZmQ4NTI5OGYwMzViYmY2YjE2YzJlMDE1Nzg0MiBsZWdhY3ktdHJ1bmsKKzM0ODU2IGM5NTNmZGI1MWNkZDdlZjg4MTNhYjIwYjk1OGQ1ZWQwYzcwZjA2OTAgbGVnYWN5LXRydW5rCiszNDg1NyBjNmYxNjUwNGM4YzJmNWFkZTk2Mzc5MDk3ZTFhOWM2NTdlODg5NDMwIGxlZ2FjeS10cnVuaworMzQ4NTggNzViNjNlNWYwM2YyMTIxNjI1MWI0MWRkOGM0NzNlNDljMWQ1OGY4ZCBsZWdhY3ktdHJ1bmsKKzM0ODU5IDg5ZDI2ZTAzYzY1MzAyYjAxNWVhMzUxODRiZmIyMzlkOTQ2MWFlNTAgbGVnYWN5LXRydW5rCiszNDg2MCBmZGU3NGZhZGY3ODBjOWE4MTM5YmNjMWZlZWYzYzY4M2MyYjFiZGQ4IGxlZ2FjeS10cnVuaworMzQ4NjEgN2FhZDI0Y2FkZGI1ZDBhOGY5NTk2ZGQyZDkyMzc1Y2FmMjIxNzc0MCBsZWdhY3ktdHJ1bmsKKzM0ODYyIDUwODhhODIzNDExN2VjZGUyYzY0NDMxMmYzYmM3NzI4ZWQxNzYwMmEgbGVnYWN5LXRydW5rCiszNDg2MyBlYjEyN2U0MDFjNjQ0OWQzNzAxMzAxZGRmZTExYTIxNjVhZjc5YjRkIGxlZ2FjeS10cnVuaworMzQ4NjQgOTdlYmQxYjJmNDY4NTU3ZDAzYjNhZGEyNjg0MWU5NDk3ZWQ2NTc3MiBsZWdhY3ktdHJ1bmsKKzM0ODY1IGU5ZjNiODIyY2UwMmVjOTg2Y2RmNTI5NDIyMDQ0Y2ZhNWE1NDI5YzEgcmVsZWFzZTIzLW1haW50CiszNDg2NiA5ZTc1MDc1MzAxMGFkODJjYmJiNmQzMmQwMWViZDdmYTkyMDAxOTM3IHJlbGVhc2UyMy1tYWludAorMzQ4NjcgMDUyZTRjNTcyMjYxNWUxZjQ5OTNmNGI1NDNlN2RkMjUwNmZkNGNhNCByZWxlYXNlMjMtbWFpbnQKKzM0ODY4IDAxNzA0ODU2NTkzNmI4MzJhYjVjNDkxNmJmN2YyY2MxYzQyYzY5OGEgcmVsZWFzZTIzLW1haW50CiszNDg2OSBkMzYyMjczZDQ2OGJkMTNlODEzNWI3Zjk3ZDFmNzkwNmJhOTZkYWYwIGxlZ2FjeS10cnVuaworMzQ4NzAgOWVkNzUyNTU5NDc3N2VlNGZkNTQwM2RmYzQ3YjkyOTY3NzdmOGIyMCBsZWdhY3ktdHJ1bmsKKzM0ODcxIDM4MWFlMzI2ZWU2NTU1ZTc0ZGY3NDQ3ZmIwYjk3Mjk4OTI1ZGIyMmMgcmVsZWFzZTIzLW1haW50CiszNDg3MiBkY2Y1YmUwZjBhMWY5YWEwNTgzNDk1NWZkMTg1YTAyOTY2OWJjNmY2IHJlbGVhc2UyMy1tYWludAorMzQ4NzMgODUxOGM0NjgxNzcxZjcwNDA0MmZiODgzOWQ2NTBhNjI2NjYyNjIxNiBsZWdhY3ktdHJ1bmsKKzM0ODc0IDk0YzFiZDdhNTVhZWY1NDQ4ZmM2OTVmMjhjNTNmMWU1NjgwZDczODQgcmVsZWFzZTIzLW1haW50CiszNDg3NSA2MGJjMTFlMzAwNjgyYmE0YWQwOTFlNGQ0YTQ5MDRjMmIzZTg5MTI0IGxlZ2FjeS10cnVuaworMzQ4NzYgNjE0YWQ1Mzg4YzlkZTAwMDM4YTU0MTczOWExZGRhNTk2MDRmYWYyMCBsZWdhY3ktdHJ1bmsKKzM0ODc3IGQxZDI4Y2NhNDJjMTk3ZjFlYjc3YzkwNTVhZDJhN2MyMzdjMWI3MTIgcmVsZWFzZTIzLW1haW50CiszNDg3OCAxZGRjODZiNTgwNDAwNjJiYzVjZDlmN2NhZGUwYmFhZTFiNGNhOGIyIGxlZ2FjeS10cnVuaworMzQ4NzkgMjZlZmE4YTUzOTI1OTQzYjNmYmJmYmI0MzQwYjljNzkwYmI4YTcwOCBsZWdhY3ktdHJ1bmsKKzM0ODgwIDk0ZGZmNGEwMmNhMzA2NzdiNmNkMDM4ZGY1MzNlYjVkOGYyMWY4ZGYgbGVnYWN5LXRydW5rCiszNDg4MSA5ZjhjMDU1ODcyMTNlMWQ4ODUxNWMwZjVhM2Y1MzAxNWFjMDU1ODIyIHJlbGVhc2UyMy1tYWludAorMzQ4ODIgNGViNWYwY2FiMDllNGFkMWU2NWM5ZDE3MWQ0M2I3NTAzMGFkZjg3OSBsZWdhY3ktdHJ1bmsKKzM0ODgzIGUxZjFmYjc0NDUxYjljMGQwMTY2NjExZWU2ODY1ZDkxNGZmMzQzNDMgbGVnYWN5LXRydW5rCiszNDg4NCAyYTA3ODJjYzE1MWY4NDA0MTdjZjE1OTJiODc2OWI3ZjZlZmU0ODVhIGxlZ2FjeS10cnVuaworMzQ4ODUgNGExMmQ5MWFmOGMzZjk1ZjE0ODc4OTZhYTMwN2IxMTQ0ZjNiMTIxMyBsZWdhY3ktdHJ1bmsKKzM0ODg2IGM3MjdhZDAwM2ZkYmFjZDJiZThmNGRjNDBhMzk2OTYxZGRiNzg3MTggbGVnYWN5LXRydW5rCiszNDg4NyAwMzY3Mzc3MzMwODQ0N2RjOTM2ZGU2OTllNWU4YmJhMjM1OGQ5ZWVlIGxlZ2FjeS10cnVuaworMzQ4ODggYWFiMzYxMmYyYzM1MmIwYTFhNDkwODFlMGIyNmJhMGM5MDNlNjBlOCBsZWdhY3ktdHJ1bmsKKzM0ODg5IDg4NWRiZjE1NzhiY2IwNmJjNWFlMTIzYWQyNmZlMDI2ZTYzMWQ5ZDggbGVnYWN5LXRydW5rCiszNDg5MCAwNjNiN2QyMjVlOGFiODQ3NmI2ZDI3ZjM3ODNhNGJiNTBkNWQzZTk4IGxlZ2FjeS10cnVuaworMzQ4OTEgNDVjYWJlOWNkOWM5MjYxZjI3N2ZiNzg4ZjE4NjBmYzc3NWVlZmIxNyBsZWdhY3ktdHJ1bmsKKzM0ODkyIDQ4NzAyZjE5Y2NmYjNlYjBiZjU0YjdkNmQ5YWUzZGIzMzI5MTNkYTUgbGVnYWN5LXRydW5rCiszNDg5MyA0Y2MxNjYxNWIwNzI0NWZhNDcxNWU4MDY3M2M0N2U3ODk5YjIxNTM5IHJlbGVhc2UyMy1tYWludAorMzQ4OTQgYzIyZWVjODA3MjI0NzQyZDNiMTM4Mzc4Y2NjYzM4YWViYzg0NTBiNCBsZWdhY3ktdHJ1bmsKKzM0ODk1IGNhOGE2OTk2OWYwMzhmNTA2MTYyMDViOWFlNTM4MzIzNTU1OWNkNTQgbGVnYWN5LXRydW5rCiszNDg5NiBlNGZiNjE2NDE1OGM3ODRkOTNkYzc4ZTMyNDUyNjJhNzYyZWJkNTJmIGxlZ2FjeS10cnVuaworMzQ4OTcgYzliYmM5NjdhYzlmNjA5ZjkxZDY4NzU3NmY3YjZhZTMxZWI0NWRlYyBsZWdhY3ktdHJ1bmsKKzM0ODk4IDg4ZTgwYTA0MzI4YTM4NDdjZTBmYTk1ZDViOThjNmU2MjMzMTIyNzYgbGVnYWN5LXRydW5rCiszNDg5OSA1Y2MxYTQwMGEwMmMzMTFhNGYxYzU5ODk3OGNkZjVmM2VhZjM3YzM0IGxlZ2FjeS10cnVuaworMzQ5MDAgMzgxMTQwZTdlOWQ3NzE1Y2ZlNzFmZjdiNDlmNTE3Y2ZiZDdlNDIzNSBsZWdhY3ktdHJ1bmsKKzM0OTAxIGVlYWEzNjYwNjcxY2I2YWQ2OTZjMDNiYmMzOGIyOGMzOTUxZThhNWUgbGVnYWN5LXRydW5rCiszNDkwMiAxYmJjMjA4NWYyMTNiMGJhNjQxMjg1YjlmMWE2YTU1ZDE2ZmEzMGRmIGxlZ2FjeS10cnVuaworMzQ5MDMgMjFhMjdjMjFhMmM1N2FlM2I2NzBmMWY3OTE1NGQ5Njg2YzlkNTA0OSBsZWdhY3ktdHJ1bmsKKzM0OTA0IDQ5NDJhMGI2M2M4Y2NmMWZjNWQxMWU3Y2JjOTdiNmMxN2MwY2U2MjAgbGVnYWN5LXRydW5rCiszNDkwNSBlNWQ5N2FiNzEwYTIyNWQzZTRjZjE2YjhjZmY5ZTNjZGU3MGM5NjVmIGxlZ2FjeS10cnVuaworMzQ5MDYgYzk5NjIwY2Q5YzY1NTI5NTlkZmNkODY0OTU5ZjBjNDg0NTM5NTc1ZiBsZWdhY3ktdHJ1bmsKKzM0OTA3IDEwYzRjYzM1MmQxM2E1YmU0ODI2MDhmM2UxNTlmYmU3Y2QyMmQxMjcgbGVnYWN5LXRydW5rCiszNDkwOCA0N2VhYTM4YjI5Y2JmNjU1NzllMGJjOWU3OTY1MTM5YjUwZWY4YTY4IGxlZ2FjeS10cnVuaworMzQ5MDkgNzRjMTU0NzA4YjBjYTE5Y2FkZjc2NWMwNTExODgzYjY1YmM5YzYwMyBsZWdhY3ktdHJ1bmsKKzM0OTEwIGYyODk4MjA2MGIyMGMwODYzYTA1NDlmZTRmMTVhMmU4Nzk5ODUzYjggbGVnYWN5LXRydW5rCiszNDkxMSBmMmUwZDYzMGNmMzlmZTc0YmI3NWUyZmUyZTRlY2Q2YTEzNmY1MzUwIGxlZ2FjeS10cnVuaworMzQ5MTIgYjJhMGNkMmU5ZDU1MTEyOGQzZGI4YWZiM2Q1NWNhMWMwNmViMmQ4OCBsZWdhY3ktdHJ1bmsKKzM0OTEzIGM4NWE5ZWM1Nzk2Y2QwOWM5NmFiNjFmNTNjYWE1MjE4NjBkYjRkYTMgbGVnYWN5LXRydW5rCiszNDkxNCAyOTJhZDEzNWNlZjE0NjIwYWI0YjhmNTA4Y2MwY2EyNjI2Zjc5Yjc3IGxlZ2FjeS10cnVuaworMzQ5MTUgZTQ2ODJhZjdhZWE5ZWM1MmQzMjI5ODZlMmZmOWY4MzRiZjBhMzY5ZCBsZWdhY3ktdHJ1bmsKKzM0OTE2IDIyZjA5YWIwYmFlOTQ2YmJhZWJiZTkzODkyYzM0ZjYxNmYzYTczYTUgbGVnYWN5LXRydW5rCiszNDkxNyAxYWQwZGY4N2VkNmMyZTUwMDg4MjU0MDUwMzU5Y2FmMjA3Y2QzNDcwIHJlbGVhc2UyMy1tYWludAorMzQ5MTggN2E2ZDA4MTRiNTYxZWQxYWRmZWZlMTk4N2M5Y2QwNGM2N2JmODI4NiByZWxlYXNlMjMtbWFpbnQKKzM0OTE5IDIyOWJiOWYyZTk2ZjNmZTE1YTExYTUxZTNiZTQ1NWFhNTQ3Y2E3MWEgcmVsZWFzZTIzLW1haW50CiszNDkyMCBkNmNlYTIyOGZiMjU5YmE5MjM1MjBiYmYzNDI5M2I2OWRiYmVmZGUxIHJlbGVhc2UyMy1tYWludAorMzQ5MjEgNjg0NTY5NzM1M2EzMTUyNWE4YTAyNTE4MGVlODE2NGYyNTNhYTYxMCByZWxlYXNlMjMtbWFpbnQKKzM0OTIyIGQ5ODExNzU5ZTdkZWJkZTAxYTJhMTg0ZmMxOGI5NmZmNWQ2MWUwNzEgbGVnYWN5LXRydW5rCiszNDkyMyA1MDQ5NDNjODkxOTNkYTBkYzEzZmMwN2Y2NjBkYmRmOTgxZjQ1MjlmIGxlZ2FjeS10cnVuaworMzQ5MjQgNjNjYzlmY2QyODVlNGIzZmE1NDEwOWNmM2I0YTk2YzBjNzI5NTViYSBsZWdhY3ktdHJ1bmsKKzM0OTI1IGU1MDY1OGIzZGYwZTcxMmI0Zjk2Nzk3MTMzOGI4N2Q3ZGM3N2U4MjcgbGVnYWN5LXRydW5rCiszNDkyNiAwMmViZTM0NTY1OTUzMTgxM2NiZDY5NjhkZDJmOGVlMDZlNTkwZTJlIGxlZ2FjeS10cnVuaworMzQ5MjcgYmZhMDM2OWQ2NzYwYjIyOGI0MzlhYTI4MTVjYTVhMzBiYzA1MjlkOCBsZWdhY3ktdHJ1bmsKKzM0OTI4IGRkNzg5MDcyZDk0OTAzMGU1NmQ1MzI3YzU1NmVlZDBjOGJlYmIwZjUgcmVsZWFzZTIzLW1haW50CiszNDkyOSBjYmJmZDQxMjdlMjQ3NTRlNmM1N2ZjMmNmNzY2NWVkYTEwZjZhZDEyIGxlZ2FjeS10cnVuaworMzQ5MzAgMzc3MWZmOTlkNWYyOGFkMDEyYTIyMDJlNzM4N2U5MmQzNGZhZDZkYSBsZWdhY3ktdHJ1bmsKKzM0OTMxIGYzODhlODNmOGU0MzM4ZTE3NWYyNzUzZWM4ZWU1YzkxMDNmZDdkOTIgbGVnYWN5LXRydW5rCiszNDkzMiA5NDkzZGQyMjJmYmI5YjA4NmIwM2U5ODliYmI1YWE2MDU0NzNiMTNmIGxlZ2FjeS10cnVuaworMzQ5MzMgNWU5Nzc1N2Q4N2U3MzAzN2YwNzYyYzNkMWE4Mzg2YjBhOWY2ZWJjMCBsZWdhY3ktdHJ1bmsKKzM0OTM0IGMwNmI1NzBhZGYxMjJiYmU4YzIxMDg1ZTE2MTk5N2NjMzYyNGQxNzMgbGVnYWN5LXRydW5rCiszNDkzNSA0ZDA3NTZhMTNmNmI5ZTRjOGVkYjcxYjYyN2RlYTRhMzk3YTQxZGU1IGxlZ2FjeS10cnVuaworMzQ5MzYgNWIwMzVlNmU0NGRjNjhhZWFjZGQ2ZTFkMDY5ODUyMjg3MWE3MGI3ZSBsZWdhY3ktdHJ1bmsKKzM0OTM3IDM2MDdmMjMzNTJiOTg1OThiNjU4MGJlMGQ2ZDI5NDdiZWU0MTg5YjggbGVnYWN5LXRydW5rCiszNDkzOCBkZWYyNzUyNzcyODA2MWE0MTlkMGU4OThhN2M3OWE4OGM3NDM0ODU0IHJlbGVhc2UyMy1tYWludAorMzQ5MzkgODk3NjdjMThjNjE2MDhiNmViOWRmNGZiYzAyM2Y5MWI5YjA3ZTVlNCByZWxlYXNlMjMtbWFpbnQKKzM0OTQwIDg4ZTAwMDIxYWNmZjZlYjhiY2ZlYmEwODFhYjM2MDYzYmM5MzVhMjAgbGVnYWN5LXRydW5rCiszNDk0MSA5NzA2MmQzNjU4ZmU3YzcwNzkyYmMyNGFmZmJmODdjNjY0NTYxMjg5IGxlZ2FjeS10cnVuaworMzQ5NDIgMGY3MDljZWE0M2M3MTZmMTg5OGU2NWI5MzI5NzYxYmIxYjQ4OTNmMyByZWxlYXNlMjMtbWFpbnQKKzM0OTQzIGVhM2M2ZjZlNDY3OTFjNmZiMmU3OTZkNzJjMGZiMGIxNmUwNmY4NjcgcmVsZWFzZTIzLW1haW50CiszNDk0NCBlZGU1MThiMGI5ZGE3OWY4NTQyZThlZWFhYWZjM2U4MmQxNGZkNGU1IHJlbGVhc2UyMy1tYWludAorMzQ5NDUgYzI5NjdjZTdjMDFlNDUyNjg0NjJhMDVlNzllZjMwNDBmMmU4ZTRjZCByZWxlYXNlMjMtbWFpbnQKKzM0OTQ2IDk1NWNiOTY5Nzc2N2ZlMjk5NTE3ZTVmMTc4NGY1NWY0ZTMzNTQ1NTggbGVnYWN5LXRydW5rCiszNDk0NyAxYTk4OGEwNmJkMzM2Yjc2NTY2ZTA2ZDk0MWY0ODMwZDRjZDVmZmNlIHJlbGVhc2UyMy1tYWludAorMzQ5NDggYjgwYTNiODJkY2Y5ZTJlNDI3ZDVmZDg0MzAzOWRkZDFmZTg2OTY1NiByZWxlYXNlMjMtbWFpbnQKKzM0OTQ5IDM5NTA4MmRjMjE5NDI5ODkxZGQ3MTY0NThmYWQxOGNjODUxZjJjYzEgbGVnYWN5LXRydW5rCiszNDk1MCA2NDE2NmVhZjYyMTI0YjAxMGNjZmU5MjRmYmZjOWU1MDZiY2NhMjMyIHJlbGVhc2UyMy1tYWludAorMzQ5NTEgYTU5MjJiOWQwMzc5YTA3Njg1MDQzYzIxMzkzZjA4ZWUwNGY0YmJiMyBsZWdhY3ktdHJ1bmsKKzM0OTUyIDM4ODU1ZmRhNDI4YTY4ZDYxMjk3NDIyMmJhNDU3YTZkNzFhMjhkOTQgbGVnYWN5LXRydW5rCiszNDk1MyAyYjBjNzg1YWIzMGE2ZTIyN2Q5ZDA1NjBhZjQ5YWQ2YjIzNTlkOTIxIHJlbGVhc2UyMy1tYWludAorMzQ5NTQgNjdiOWRlNjJlY2I4NjkyNzcwMWMxZmMzMzMwNzA5OTc5ZGQ5YTUxZiByZWxlYXNlMjMtbWFpbnQKKzM0OTU1IDlhM2ExNmI4MmRjYmJlNGEwYmE4MjYyYTVlNmVhMGFkM2ZiNWMxMzEgcmVsZWFzZTIzLW1haW50CiszNDk1NiBmYjc1OWUyODFhMmYyMzAwODUyNDFkNGFlYjM2NDdiMzM4Zjg4ZGRhIHJlbGVhc2UyMy1tYWludAorMzQ5NTcgZDA5OWVkOTMyOTkzZjkzZDkxODVhMTY1MmE2MDRhZThlOWQ2OTE1YiByZWxlYXNlMjMtbWFpbnQKKzM0OTU4IDVkYzU3NTdiMTE4YWJmM2NjZjY3YTU3OWJiZWY3YmYwZWVhNWIxYjIgcmVsZWFzZTIzLW1haW50CiszNDk1OSBiMjIwYjU5MGUyZWE4ZWE3NDBjYzdiZjlmMzFjYmE3ZDUyYWIwNWUxIGxlZ2FjeS10cnVuaworMzQ5NjAgYWNiYzc1NjNhOGU3ZWRmNzM1YzZmNDY4MzA4ZjQ3MWM0ZDYwMjY3OCBsZWdhY3ktdHJ1bmsKKzM0OTYxIGE2ZjM0ZmJhOTM3MDY5ODdjN2FhOTBiZTc3YWMwNGEwNDRkNTkxZTMgbGVnYWN5LXRydW5rCiszNDk2MiA0ZWRmMjAwYTgxMTg1YTQ3ZmI3NDYxZjQzZWM5YmM0MzY3YWU3NmJiIGxlZ2FjeS10cnVuaworMzQ5NjMgZjBhZTMxM2EyYWM4NjQ3MmQ0NGIwODY0YjhkMWE1OGE3YTUzYjBmZSByZWxlYXNlMjMtbWFpbnQKKzM0OTY0IDNjNGMwODc0OTRlMGNiODg0MTkwNDI4MjA2OWE4YjJmZTY0ZTE2MzQgcmVsZWFzZTIzLW1haW50CiszNDk2NCBhOGYxMjg2ZjIxNzEyOWNkYjUzZTMyMGVlMTI1ZDJjMmM4MGUxMzc3IHJlbGVhc2UyMy1tYWludAorMzQ5NjYgMjhlYjAwNDZjZThhNzYzYThkM2FkZGVmYjNkYWYzYjRhZmMxNzRmYyBsZWdhY3ktdHJ1bmsKKzM0OTY3IGRmOGU4NzljOGQ3NmQ1MGNlZGRmMTJjYmMxZGU3NzY4YjI5Y2Y0YmQgcmVsZWFzZTIzLW1haW50CiszNDk2OCA5YzZhNTFkODc5MzAyOTQ0NjZmZWE4NjZlYzIzOWNjYjNmMGJkNjg5IHJlbGVhc2UyMy1tYWludAorMzQ5NjkgMWNiODdkYWQyNjNkNzdkZDQwYzJjZTRlOTg2NGNkZDkxOTVkOWNkYyBsZWdhY3ktdHJ1bmsKKzM0OTcwIDhlYTNhODJmOTEzZjZjYTNjMDkyNzViNGI1Zjk0MzU4YTUxMDUzZmEgbGVnYWN5LXRydW5rCiszNDk3MSBjZTE2NWJlOGM2Yjg5ODZiZDFmMTI1ZTFmNGQyOGRiN2VjMWUyZTY5IGxlZ2FjeS10cnVuaworMzQ5NzIgMzUzYTE2MDMzZjZhNGVkNjk1ODkwZTUxOTZlOTVjMjcxYjkxZDI3NyBsZWdhY3ktdHJ1bmsKKzM0OTczIDM1MzkzYTkyYWNkMWQzNzExMzQyMzIxNTUxYWQ3ODQyZWVmYjM2ZDUgbGVnYWN5LXRydW5rCiszNDk3NCBkZmQwMTE0Y2Y5ZWNlN2M2MjBkNDEyZjc2NjM1ZGFkMjczYmZjYjUzIGxlZ2FjeS10cnVuaworMzQ5NzUgZTExOGU0ZThlMjI0OGU0ZDY1YjNkNzNiZTU4YTkxZTU3NDJhNjZlOCBsZWdhY3ktdHJ1bmsKKzM0OTc2IDg5MjExNmE4ODZlMDA1MWE4ZDMyYWZjM2EyMzMyZDZhMDNhNGI5MmMgbGVnYWN5LXRydW5rCiszNDk3NyBjMTQwMjE3NmUxYTY1NWIyMzVmMDVjOWQwMzMxNWZhMDk0MTkzOTU2IGxlZ2FjeS10cnVuaworMzQ5NzggZjYwNjRmOGMxNDYwNGUzY2JmNzgzM2U5MTE1NmM5MzBhMzg1MDFhYyBsZWdhY3ktdHJ1bmsKKzM0OTc5IGE4MDc3MjZkZjRiN2Y5NTRkZGVkYjFmM2FmNjY2ZmI1YTVmNDFjZTQgbGVnYWN5LXRydW5rCiszNDk4MCA1NTJhNTM1NWQ4YThmNjM1ZDE3YTI4NjU3ZWI3MzczZWYxZTZmNTQ3IHJlbGVhc2UyMy1tYWludAorMzQ5ODEgNzA2Yzk2ZTE1MWEwODlmMjQ4ZjBmMjdjZmU2ZGVlYWM5MDMyNDc1OSBsZWdhY3ktdHJ1bmsKKzM0OTgyIDJhOGY1ZWI4ZDgzZTEzMDJkNTRjNWFiZjM2NmEzZmUwMmIxZDBmZjUgbGVnYWN5LXRydW5rCiszNDk4MyBiZTg4MmE5YTNkNWI1MjIwZGRjZTAyM2FiMDExMzA0NzBmZWE1NzVjIGxlZ2FjeS10cnVuaworMzQ5ODQgOTFiNTlmMmZlZTdjMWYxMTZlYTM2NGVjNmQxMmRlNzIyNjM1ZDJlNiBsZWdhY3ktdHJ1bmsKKzM0OTg1IDQ3MTI5MTUyY2I3MDEwYTdjYjY2NzU0NzBlNDkxMTA1MWUxMjc3ZDMgbGVnYWN5LXRydW5rCiszNDk4NiBlZTUzMjgwNTQ2Y2U3ZDMzNDlmOTMxNjg0YmUzMWRjYTQ1OTRkNzM3IGxlZ2FjeS10cnVuaworMzQ5ODcgMWUxNmNiOGIwMjIxOWU2MzY5YWQ4YWNjZmI1MzRjNDc0MjFmYzM1NSByZWxlYXNlMjItbWFpbnQKKzM0OTg4IGNjN2YyOWFjMmU5ODE2NDFmYTY4NzlhMDgxNzRlZjdmOWMwOTQ1MjcgbGVnYWN5LXRydW5rCiszNDk4OSA5MDU2MGE5Y2YzZThiOWExZjcwZjUyM2VjNTM2YWQyODk0NTk5ZDZhIGxlZ2FjeS10cnVuaworMzQ5OTAgMGJlOTI1ZDE2ZTI5M2ZkZmYxZDNiZGIyNjc5ZjY0N2QxNTZhNjliNCBsZWdhY3ktdHJ1bmsKKzM0OTkxIDUzYWUxYzNkNGE3YzE4NTY1YTk4NDQ0NDJkZDI3ZmNlYTQ5OTAwMDMgbGVnYWN5LXRydW5rCiszNDk5MiAwZmZiNjI2ZDc4ODgxZmU0MjQxOTc2OTI1MGZlZWNhOWE5OTQ3YmE0IGxlZ2FjeS10cnVuaworMzQ5OTMgYThlM2JiMjNmNWE4YjdjNjIwYzViN2VhMmIxZmMyYzMyNjE5MTdkZiBsZWdhY3ktdHJ1bmsKKzM0OTk0IGUyNmZkYTlkZTY3ZjI4OTQ0ODQxZjIwNjBmYmQ2MmNiY2RiYjI2YjUgbGVnYWN5LXRydW5rCiszNDk5NSA3YWIwODBiYmQ2MGE2ODVjMzE3ZmY3Zjc5NDFhNTRhNmExYWRkMWRlIGFzdC1icmFuY2gKKzM0OTk2IDU1ZDQyYWFlYjBlZWY4NjYzNTk2OTUwMzU3NWM5ZGNjYmU5YTlhNzAgYXN0LWJyYW5jaAorMzQ5OTcgN2NjMTExMjcyNzNlN2U5NGM3NGJhNzk4YzYxNDg5NWUyNmRkNDVjYSBhc3QtYnJhbmNoCiszNDk5OCBlYTZiMTlhMTBhMDE2NDAyNzg3ZGIwMWEwNGM4MzVmNTUxN2M2ZTgwIGxlZ2FjeS10cnVuaworMzQ5OTkgMjljMWI3YjZmZDdlNTc5MjU3OGViZjkyMjVhYjM4NTgxNzM5ZTQ3YSByZWxlYXNlMjMtbWFpbnQKKzM1MDAwIDI1NTE5ZDZjOTdiODZlNzM2OGY1ODAyZjg1OTU3NDUwMTJhZTYzMWYgbGVnYWN5LXRydW5rCiszNTAwMSA4MDJkOTM3ZjU5NmFiZWIwNGIzMmU5MWZjN2VmYTFlMTU2NmJkYmM4IGFzdC1icmFuY2gKKzM1MDAyIDFhZTI2Nzk5NGZhMDM1MGFhNTg2NWM1MmFmMDE0ZjcxMzc3MmY2ZjMgYXN0LWJyYW5jaAorMzUwMDMgNmExMTY5NWZlNjk4ZWIyYzg0NGEyNjcxYTZiNzdlODIwZTU5YzU2OCBhc3QtYnJhbmNoCiszNTAwNCAwOTA4MTZiZDhiYWMwMDFkNjUyYmM5ZDdhOWM0MzY0YzQzM2ZiOGJkIGFzdC1icmFuY2gKKzM1MDA1IDI0ZDM0YWI0ZWY3NTQ5YzJhN2MxNTI2YTJmMmU1MzFkNThiZWU3NDQgbGVnYWN5LXRydW5rCiszNTAwNiA4YzEzYWI2OWJhNGYxNDdhNWNkZWYwNGQ1ZmRmN2M2MWFlM2JmZmYwIGxlZ2FjeS10cnVuaworMzUwMDcgMWRjMjY1OWVkOWZjMzljY2VlNDllOGI0NThkNjcwMmYzNTk5NjJkOSBsZWdhY3ktdHJ1bmsKKzM1MDA4IDZjM2MzYjc3MWFiY2ZjOWU3YmRmY2Q4ZTI1MTFhY2NkNDFhZjI0NjYgbGVnYWN5LXRydW5rCiszNTAwOSAzMWEyODA5MDI0ZjUyMWI0YTY0MDdkNTFjMDJhMzcxZTViY2I2NjU0IGxlZ2FjeS10cnVuaworMzUwMTAgNTc1NTMxNTdjMTk2NmMyNzliZDIzYTExZDI5ODYxYjc5MTBjMjJjOSBsZWdhY3ktdHJ1bmsKKzM1MDExIDMxNThkYzE1MzJmYTE3M2NlMWEyYzA5ZTQ0NzZjMzU2ZGYyOTgwNmUgbGVnYWN5LXRydW5rCiszNTAxMiBiODdkMTk5OGVmMDAwNGQzZTU0ZDZiNjk1OTIzNGUyZWIwNDQ2NWQyIGxlZ2FjeS10cnVuaworMzUwMTMgOGI2MmY0MTk0YTdlNzkzNjk4OTBiYzU2NWU0Y2Y0ZWVmZDk2OTYyNCBsZWdhY3ktdHJ1bmsKKzM1MDE0IGQ2ZDFlZmRjYzVmZGQ0NGIyNzBhMmQ4NTYzYjBjNjYzOThmNmU2NTkgbGVnYWN5LXRydW5rCiszNTAxNSAxMzlhNmI2YzE1MGE1OWZiODdmNGQzYTEyZmYyYmY3NzdlMzllNDg3IGxlZ2FjeS10cnVuaworMzUwMTYgNzM2Njg3NWEzY2Q3MDdjZmFkZjRmMjFkM2QyMDVlNDhkNDQ3OTliYiBsZWdhY3ktdHJ1bmsKKzM1MDE3IDM4OTQ2NTRiNDg0OGUxNzU2ZTIyMWE4MGE3ZThkNjQ5YTcwZGJhNzQgbGVnYWN5LXRydW5rCiszNTAxOCAxYzBlNGE1MjY3M2FhNTgzOGQyYTcyMTc3YjRkZTk3YTAzMWRmMDQ4IGxlZ2FjeS10cnVuaworMzUwMTkgZmQ0Y2JiZWFjZTc5ZWNjNDFlZGQzMWIzMzE2YjJhNTc5MzU3Nzc4OSBsZWdhY3ktdHJ1bmsKKzM1MDIwIDJjZDk2NjI5ZmU4ZDE0ODBkMjEzODcwMjVmYzdmZjYyOGE4OWI5NGMgbGVnYWN5LXRydW5rCiszNTAyMSBlYzRhOTlkMTRjYTQ2MDRkMjQyZjc1OTY1MzQzNGU3Y2U2YjM4NzQ1IGxlZ2FjeS10cnVuaworMzUwMjIgODY4Y2FjZTIyMTlmZjcyZjhlZTVjYTY2YjlmZWQwMGJhNWQ1NDVkYyBsZWdhY3ktdHJ1bmsKKzM1MDIzIDhlNzA4OTJhOWYyNWNiNzQwYjJjODUyNGNlMjM1MDM2MDNkZjlhNWEgbGVnYWN5LXRydW5rCiszNTAyNCBjODU0YTFmMmQxOWI4MTQyMjc0ZTBkYTc4YTA4MGI2OGI4Y2NlZTVjIGxlZ2FjeS10cnVuaworMzUwMjUgMmMxYmEyNDFiM2MwN2EyOGMwNDU2NTMzNzA3ZjlhZmI4NTc2MzVlMyBsZWdhY3ktdHJ1bmsKKzM1MDI2IDI4ZDAwYjFhODQ0NzYwNjQwZTU4YmRkYjcyMDdiYTI1OTg0ZGExYWMgbGVnYWN5LXRydW5rCiszNTAyNyAyODRkYjJhNWY2MjBiMDg1ZmYxYTQzMThjOGUzMjEyMjFkOTgyZjNhIGxlZ2FjeS10cnVuaworMzUwMjggMjZlY2E3MDhiNmRkNjc1MjQwZjIxODE1OTIxODVhMDE4ZTlmMzcxZiBsZWdhY3ktdHJ1bmsKKzM1MDI5IGFkM2ZhZjUyZTE5ZTQwM2FkZWIxMDAwMmExMGUyM2UwYjI4YTdkNGQgbGVnYWN5LXRydW5rCiszNTAzMCA3ZWEwNjdkNzQ5YTAwNjYwNGI0MzBjZTE5NTgzYjQyYjYyOGU4YzNmIGxlZ2FjeS10cnVuaworMzUwMzEgYmY4NDAyYTU2ZmE0MjdiMjU1MWYzMTNkZTAyMzNjMzYxYmRhMzc2MSBsZWdhY3ktdHJ1bmsKKzM1MDMyIDc0YzA3M2JhNmMzYjJhNDIwMTBhZjlmMjEwNjkzMmEwYTgwNTRhMTEgYXN0LWJyYW5jaAorMzUwMzMgZTQwMWMwZjI5ZjUwZDg4YmU0MGQ0Mjg3ODk3NWZhNGJhMjEwOGFlMiBsZWdhY3ktdHJ1bmsKKzM1MDM0IDM4YjIzZTZkNGM0Yjk2NGZlY2Y2NmY2Mjg5NTJkNTQ5YjgzOTYyNzggYXN0LWJyYW5jaAorMzUwMzUgZTM0NzRlZDgwYTVlZjdhMDA1M2VlYzAwNzFkZDMzNTMwYTM2MzE0MCBsZWdhY3ktdHJ1bmsKKzM1MDM2IDZkNDE4ODAxZjE0MmRmZjE5MzFlZTRhNDUyYWQyNjg2NjNkMjMxYzQgcmVsZWFzZTIzLW1haW50CiszNTAzNyA3NDQzMjNiNzY4ZjBkNGFlOTkxMzVmMDhiOGI1NDY1YjY1YjZkYWY3IGxlZ2FjeS10cnVuaworMzUwMzggYzUzZGFmMzViYmNjYzBhOTVhYzM3YTNkNDcwYmY0OThhNDMwNWNiMCBsZWdhY3ktdHJ1bmsKKzM1MDM5IDg3MzdiYjQ0ZTIyZmE4ZGJmNjNkYzdiNmNjMWE3OGRhNzlmNzU3ZTEgcmVsZWFzZTIzLW1haW50CiszNTA0MCAwNjFlZmZhYmFmY2JkN2Y0NTE0MjVjMzlmMjlhNDMyNmM1ZmIxOTIzIGxlZ2FjeS10cnVuaworMzUwNDEgZGNkNzQzZTc5Y2UzNTZlZDcwOTRiNDE5NTI4MDJlY2FhOWZiZjk5YyBsZWdhY3ktdHJ1bmsKKzM1MDQyIDMzNjhhNGQyNWYxNzdkZWU2MThlNzRjNTgxNTM2ODAyOThjNWY3ZDIgcmVsZWFzZTIzLW1haW50CiszNTA0MyA1ODNkNWFhODEwMWNlM2E4NzUwYjY5NDBjNjY4YzFlYTQ4NTljOWJmIGxlZ2FjeS10cnVuaworMzUwNDQgNWViOWUyNWU2M2ZkNWVkODY0MGFlYzE1OTRhNWJhOWMwYzE3ZjAwMCBsZWdhY3ktdHJ1bmsKKzM1MDQ1IDBlYThlYmViNmFhMmI4YTU4ZTY4ZWQ0MDEzMDg4MmNjMDNjNTI1YWIgbGVnYWN5LXRydW5rCiszNTA0NiA4MDk5NzhjMzA0YmU0Yjk2YzY4NzMxYmI2YmMyYmQ2NjUyODBjNmJjIGxlZ2FjeS10cnVuaworMzUwNDcgZmZmMWU4NWQxOTVjMTc1NTBiM2U1NDE0NGEwZTBjNGM2MDI3ZDY1NyBsZWdhY3ktdHJ1bmsKKzM1MDQ4IGNkN2I3MGE0YzQ0MDIxMGEwNTA2ZWYwNWU2NzcwMTE0NTQ3YmJiZTQgbGVnYWN5LXRydW5rCiszNTA0OSBhNTMxOTBiMzg3MjdiNzcwNjQwMDM4MjYxYWMxMTVmNWVlN2JhNWY3IGxlZ2FjeS10cnVuaworMzUwNTAgYjY3NGFiNTgwOGJhZmZiMjYwN2FiOWNhZWU4OTRlNjFjYzM5ZDcwMiBsZWdhY3ktdHJ1bmsKKzM1MDUxIDA5OWE0YTJmMWY3N2NhZjliZTllYmZiZTU0MWY5MWQzY2NhNjVhNzAgbGVnYWN5LXRydW5rCiszNTA1MiAzMzI5NDIwNmQ1MzlmNTlmMmIxNTY0NjRiMWQ3YjdlOGQxY2EzOGQ0IGxlZ2FjeS10cnVuaworMzUwNTMgY2E0Mzc0NjYyNjMyNDc1YmU3Y2MyYzM5NGVkMDJiZDE0MTQ4Mjg5YyBsZWdhY3ktdHJ1bmsKKzM1MDU0IGVkNjg5ZDBjNjNjMTNiMWI0YWI0MDgxZjgxZjJhM2JhNmU2YzIxZTIgbGVnYWN5LXRydW5rCiszNTA1NSA5NjcyMjM3N2Q0MTJjMjE0NTU2YWI0Zjc3ZDA2OTk0ZGZhN2E4ZWIzIGxlZ2FjeS10cnVuaworMzUwNTYgYzY3MDFkODRhM2ZhMWIzZjdlMGZmNGE0MzRmNjAzNzAzYTdmYzFkYSBsZWdhY3ktdHJ1bmsKKzM1MDU3IGFmOTQ2ZGI2N2FmYzQ0ZDRiYTZhZTI1ZDYwY2ZiMTQzNzJjNjE2N2MgbGVnYWN5LXRydW5rCiszNTA1OCBiNDUzMmMyNDZhM2EwZWM0MTNjY2ZmZjg4ODhmNjNkMzlmODFjNjMyIGxlZ2FjeS10cnVuaworMzUwNTkgM2NjMGQ4ZmQ0ZTJiNjgxYWNjODE4M2Y2MzVjYTI2MDI3ZTQ0NWZjMCBsZWdhY3ktdHJ1bmsKKzM1MDYwIDhjNzA5MDkwOGNlY2ZmNjkwMjRmNWVlNTI4ZjI4ODM1MDZhYjViOTEgbGVnYWN5LXRydW5rCiszNTA2MSA0NzdmMGEyNTIxNTBkNzViM2U1MTdiMWE4YmVkZmRjM2Q4NGY1NmIzIGxlZ2FjeS10cnVuaworMzUwNjIgYTZiYzEzMWFiNjE4OGM4N2M1NjJlOTYyNDYyODVlOTI3ZTVmMTllYSBsZWdhY3ktdHJ1bmsKKzM1MDYzIGI2N2NhM2Y2ODhmNzhiYTIwMjIwMWMyZTYzODE5MDg2ZmU3MTQ0N2EgbGVnYWN5LXRydW5rCiszNTA2NCAzODUxNDg4MmE1YzRjNDVkMGQwNGZlZTE4ZThmZjdkNGEyNjY4OWNhIGxlZ2FjeS10cnVuaworMzUwNjUgZjY2OTM5ZjM4NTIzNWQ2NjRiNjg1OTk4NzZiYzRkNmRmMzkxM2I3YyBsZWdhY3ktdHJ1bmsKKzM1MDY2IDBiYWEyNjYwYTU2OGJmMWY3MGJiOTNiOGExYmViZDY5ZWU3NDQyOWYgbGVnYWN5LXRydW5rCiszNTA2NyA0MTZhNWQyNWNiYTY4ZDJhMTc2N2M2NjY0ODkwZmUwZWMwNjY3NjQyIGxlZ2FjeS10cnVuaworMzUwNjggNzZlZDhhNzg4MzkxODU3MzdhMTQzNDAwZThiNTg1OTcwOTY5MDZmNyBsZWdhY3ktdHJ1bmsKKzM1MDY5IDQ3MjdjODFkYjk0OTkwODdlZmI5NjdmMzBlNmE1ODU2ZmJiZjI3NGUgbGVnYWN5LXRydW5rCiszNTA3MCA2ZWE1Y2NmMDY1YmUwNDJhYzYzZWRmMDY1NjVlOGQwZGE0ZjY3YTRkIGxlZ2FjeS10cnVuaworMzUwNzEgNGFjNmEwMjIxZjdkNGI4N2RjOTc4OTk0NWY3OWJmM2VmNjJkMTIyMyBsZWdhY3ktdHJ1bmsKKzM1MDcyIDA1NDIzYzMyNjFkNDE1ZjU4NjcxNDBjYTE0NjVlOTEzY2FlYmFmNjEgcmVsZWFzZTIzLW1haW50CiszNTA3MyBlOGRmZjExZTkzNTg3OTY1ZGY0OTk0NGM4OGRlNWFiM2I2YTA0MGU3IGxlZ2FjeS10cnVuaworMzUwNzQgNDkxNWZiZWM2MDhmNGYwMzU1ZGMxODY0YWViZThjMDYyOGQwMjdhZiBsZWdhY3ktdHJ1bmsKKzM1MDc1IGZkNjQ5N2NmNzIyOGU4MjY5OGRiNDhkNDdlYTcxODNmMDUwYTI0MjQgbGVnYWN5LXRydW5rCiszNTA3NiAwYzFkMjA2MmRlZTM1MzkxNDRhY2I4N2IyYzJjYTE5YThlYjY5N2YxIGxlZ2FjeS10cnVuaworMzUwNzcgYTBhZTJkOWRlNjkxMTFkMDYwN2ZkY2NhYWNkY2E0ZDExMGM3YmM3NyBsZWdhY3ktdHJ1bmsKKzM1MDc4IGJiM2MzYzk4Y2MxYmFiYTEyOTA2MzM3MzVhYTY2OTZlNTJhM2JkMWIgbGVnYWN5LXRydW5rCiszNTA3OSBmMGUyYTg1MzY3NTlmZGMxMjBlNDM0ZTc2MWU2OWNiZTIyN2Q4MTVjIGxlZ2FjeS10cnVuaworMzUwODAgYTBiMTc3MzI4MzVhMjBiMjQ4YWM4NWVmY2E5NDkxYWE1Nzc5ZjcwNSBsZWdhY3ktdHJ1bmsKKzM1MDgxIGEzNDBjNTBlOTI0YTM3NGNhMTgzMWJiZDkwYWNlNjExNjVkMjIwNDQgbGVnYWN5LXRydW5rCiszNTA4MiA1NTQxMmE0M2QyZDNlMWM0MjEwNmEwZTk3NGMzODI1NzY4MzIyY2I2IGxlZ2FjeS10cnVuaworMzUwODMgZWFhMWE0Yjc0MzI4N2JiY2ZiNmM0OGE3NTJlMjM1ODZkZWU4MWIyMiBsZWdhY3ktdHJ1bmsKKzM1MDg0IGEzMmFhNzkwNjI1MTQ5NWM0MWIyODQyZWU5YTYyY2UwYWVkOTU0NTIgbGVnYWN5LXRydW5rCiszNTA4NSBlZmUwNzUyODk3OTM1MGVmNWEwN2UwNTMwZjIxMGEwNTU4NDdlYTYyIGxlZ2FjeS10cnVuaworMzUwODYgZWQyMDI1OWExZWE1NTdkZGE1MThkNmNkMjkwZTFmZDI1MDNjMWMxMCBsZWdhY3ktdHJ1bmsKKzM1MDg3IDc5NmM5OWYwZmEyYzYyY2M3OTFlYzM0YjBjYThlMWFmMWNmYmY4OTEgbGVnYWN5LXRydW5rCiszNTA4OCBkOGMyZGI3ODJiZGY1ZmYzNTIxMWEwMTU1NzhjODM1MWYzNzhlYjI3IGxlZ2FjeS10cnVuaworMzUwODkgOTE0MGVjZTNkYjAzNjMzOTIzODYyODhlZWM5OTYwYmFhNzU0ZGE4YyBsZWdhY3ktdHJ1bmsKKzM1MDkwIGMwODg1ODRmNTUzMzllOWFhNGE1NGZhYzZiMGZhYzRkMzY2ODVkODYgbGVnYWN5LXRydW5rCiszNTA5MSA1ODZhNDljMmM2NDFlNTM4ZTU0N2YwMjI5YTNhNDgwYjQwNDQwYTMyIHJlbGVhc2UyMy1tYWludAorMzUwOTIgMTdjYTM0NzMwM2QzZjEzZTJjMWNhM2Q1NWZhODIzYzg0NDAyNDc2NiBsZWdhY3ktdHJ1bmsKKzM1MDkzIDBmMzk0ZjQzOWFkNmEwNGY2MzExN2M1NzVkNTYzYTM2OWY2ZGJjOTYgbGVnYWN5LXRydW5rCiszNTA5NCBlYzc1ZmY4Yzc3MjEyMTlkM2M0MmFhZWFkOGZmYThhYmZlNzk5OTBmIHJlbGVhc2UyMy1tYWludAorMzUwOTUgZjE2NjkxMWY3NzhiODU3MWNkMTMxZTBhYWU1ZGFmYjJhODFjNDI0MiByZWxlYXNlMjMtbWFpbnQKKzM1MDk2IGY3YTA1YWI1MGQzYjRlMjI2NzIwYWU2ZGI1MmEwMjhmOWNkMGE2ZmIgbGVnYWN5LXRydW5rCiszNTA5NyBiMmE4MjBlMzI5YTkwYTMzZTU2Yzg3ZTZiNDZlN2VkZmY1N2U0ZGRjIGxlZ2FjeS10cnVuaworMzUwOTggNTdiYWNiMTE5YTk3NjgyNWEyZGFhZDE4YTNkMDgyMjNhOGQxYzVkYyBsZWdhY3ktdHJ1bmsKKzM1MDk5IDk5ODkxYjg4OGNmZDI5ZTlmMGViNTAxODZjMzg4NzdiNzhlOWNlMDEgbGVnYWN5LXRydW5rCiszNTEwMCAxZGY1YjZhMWRiZjZhNTQwMTQyYzFlMzYxMzRlYjBiYjg0Nzg1YmZjIGxlZ2FjeS10cnVuaworMzUxMDEgYjNkNjUzMjZjYTY2YjQ1NmRhOWMwOWY3YjBjMzVhMzIyZDg3ZGY0YyBsZWdhY3ktdHJ1bmsKKzM1MTAyIGJmMzZjMTE2MzMzMDdmZDE5NmNiMjlmOGQ2NmU4MDMwZTM1NzJjZDUgbGVnYWN5LXRydW5rCiszNTEwMyA2YThiMTIyYWViMmZmN2E0NmIyMDE5MjQzOTVkZmFlNTdjNzNkYWEyIHJlbGVhc2UyMy1icmFuY2gKKzM1MTA0IGE2Mjg0ZTlmMzBhMmU2ZWIyOTllMWIxMjE3ZDUwMzA5ZGJhMjE2MjAgbGVnYWN5LXRydW5rCiszNTEwNSBmODRkMmJjNjgzMWQ0ODY2ZjlhZjQ1ZmFjZThkZjc4MDBjYzAwYTAyIGxlZ2FjeS10cnVuaworMzUxMDcgNGU0MGVmZjFhZDE4NmVhMjg5YzhiZDg2ZDkzMTM5NWI0NzVmYzY1NiBsZWdhY3ktdHJ1bmsKKzM1MTA4IGQzMjU4ZjQzZDQ4NGJmMWUyNjRkMmU1NGQ4NTljOGM3YTkzZjU3ODQgbGVnYWN5LXRydW5rCiszNTEwOSA2MzFjZTIzZjg4ZDZhZTU5N2VlZWRiYzdlZjc1YWQyYTFhM2EzMTViIGxlZ2FjeS10cnVuaworMzUxMTAgZjM4YmQzOTNlOTU0NzViMzI5ZTJiNTk3MGU3MWMwNGQwMmFmZjRiMiBsZWdhY3ktdHJ1bmsKKzM1MTExIDlkYTk0ZTU2OWQ0OGJiZjgwOTk5OTVlNWQ2N2UxZDM2YzE1NzUwMDMgbGVnYWN5LXRydW5rCiszNTExMiBmYzU3MjAwZjcwZjI0ZGVlNGExZTlhOTY2Y2EyZDA2YjI2N2U3MTA3IGxlZ2FjeS10cnVuaworMzUxMTMgNjRhZTgzMjEzMWUxNDA3NGNjMWY3NTdiN2QxNDE1NWU3YTZlOGU3NCBsZWdhY3ktdHJ1bmsKKzM1MTE0IDQwNTUzNzVkYzA1ZWEyMTk4ZDJlYWJjNDAyN2Q4MzcyMjM5YTY3ZWUgbGVnYWN5LXRydW5rCiszNTExNSA2N2ExZWVhZDcyYmFiNGJiODdjZDVjZDNiY2E5ZTkwZGNkNjRiY2I0IGxlZ2FjeS10cnVuaworMzUxMTYgZTIwZmMxYjgwMjA1MWEwMjAxMmRjZDRjMGEwZjgxMTFkYzczNDY5ZiBsZWdhY3ktdHJ1bmsKKzM1MTE3IDQ2YWQyMWI1YmQzMzRjNDk2Mzc0ZTM1Yzg3OWY3ZGI5ZGEwYmMxMzYgbGVnYWN5LXRydW5rCiszNTExOCAwYWE2NDQxYzdmZTZkOGJmZTlmZWM0YjZlNjhkOTgwOGZmNTgxODcxIGxlZ2FjeS10cnVuaworMzUxMTkgNWJiZWM4ZjFiZjZkNjUwY2VmZmNkZmM2ZTU0MTAwZTgzNWVjN2VhMSBsZWdhY3ktdHJ1bmsKKzM1MTIwIGNiOTIzMWVmM2JiOTNlYWUzMWRmM2ViNDAwNTAyMDVmODY5MTBlNTMgbGVnYWN5LXRydW5rCiszNTEyMSA4ODdjZTM5Zjk1ZjJhZTk4MThmZGM1OWY5ZGFmN2I5NjNiOTBlM2JiIGxlZ2FjeS10cnVuaworMzUxMjIgNDA2N2JmNDgxNTRkMzc0YjE5MDQ3M2UwZjAwYmM5ZDllODJlZjdkYiBsZWdhY3ktdHJ1bmsKKzM1MTIzIGVjMGM5MDYyMTBiZmEzMjA1Mzk2Y2EzM2UxYWE1ZTg4MDI1ZGM2MjEgbGVnYWN5LXRydW5rCiszNTEyNCBhY2ExY2UxYjRiNjE0NDIwMmQ2Y2NmNTlkNjkxNDhiNmUyZTRjMTgwIGxlZ2FjeS10cnVuaworMzUxMjUgOTE2OWQ3OWVkMzA0OGUwODExNzI4ZWQwMmRhMzE4ZTk0OTU0OWU3MCBsZWdhY3ktdHJ1bmsKKzM1MTI2IGNlZjYxM2Q5MDQ5NTdjZmJlZDhmNDk4YjBkNGJmZTZhNWYwZDk3MmMgbGVnYWN5LXRydW5rCiszNTEyNyBjOWJlZDIwMDUwMGU0Zjc3MDRlYTA0ZDk2ODBlZDMzZGE4NzJjZDBkIGxlZ2FjeS10cnVuaworMzUxMjggYzg3YTdlODEzYTk5ZjYzZGVmZWU3YzdiODc1NGY0YWUxOWMzOGE4MCBsZWdhY3ktdHJ1bmsKKzM1MTI5IDM4ZGNlYzJmN2IwMzQ0NGE1MDMzOGRmOTViMTYzZDkyYWZiNjhlNjYgbGVnYWN5LXRydW5rCiszNTEzMCAzYWEyMGE4MmRlODY3ZjYwNTUxMzRlYjAwNTJjNzkyMzVjMzAzMzViIGxlZ2FjeS10cnVuaworMzUxMzEgNDBkNzI1MDc3ZGNiMGQ0OGY5ZGQxNGI0OTAwNDJjODUxYTc1NDVmMSBsZWdhY3ktdHJ1bmsKKzM1MTMyIGI5MDU3YTY3NjNkN2QwMTNjOGI0NjhlN2VhZDlmNGNjODMyOTk2NTQgbGVnYWN5LXRydW5rCiszNTEzMyBiM2Q3ZWJjMTNkN2Q1ZWVlMGU1OGY3OGUyMjM5NmE0Yjk1YmU0ZjY2IGxlZ2FjeS10cnVuaworMzUxMzQgMGZjZTViMTczYTc0MDJlZWIwZTY2MDNiYmQzNzljOTQxNzQ5NjA4ZSBsZWdhY3ktdHJ1bmsKKzM1MTM1IDI1YTgwMTY0Y2M3YWZlZjRhYWVlNGE0ZDJiY2YyMjc4OWRiYWYyMTMgbGVnYWN5LXRydW5rCiszNTEzNiA4OTdkZTkyMDgxOTliOTZkZDZiMTFjZDMwMTU1ZGI0ODExYTZjZmZiIGxlZ2FjeS10cnVuaworMzUxMzcgMTJjYzMzNjgyOGU5YjI3MTk1NmY1OGJhZWQ5ZTFlMTU2ZTZlNjhjNCBsZWdhY3ktdHJ1bmsKKzM1MTM4IDkwMDVmMjY2MmE3MGVhYjIyY2E1MDkzZDZlZDUwMjk3ZTRmYzJmNmUgbGVnYWN5LXRydW5rCiszNTEzOSA3NDA3YTI0NmRiZTAyZjgwYzkxODZlZjA4MDk0NGJlMWFhODk5OTdlIHJlbGVhc2UyMy1tYWludAorMzUxNDAgZmY5YTU0OTUzYzBiZmVhNzdlNTJkMDQzOTA1MWU0OTUwNTIzYzk5YyByZWxlYXNlMjMtbWFpbnQKKzM1MTQxIDY5YTM2NWU0N2FjMGEyMDk2NWM4MDU3NDdkMmUxZjc4MjI3NWM4ZmIgbGVnYWN5LXRydW5rCiszNTE0MiAxZGM1NDIyNWE0YzIyODk5YTY5NjU5NDI2NDE2NGI1ZTMzZjY3NTQ4IGxlZ2FjeS10cnVuaworMzUxNDMgZTcxMjRlMjY5MjVmNjRiNWRiMzFhYzQ5MmZmOTFlM2RiYzFhNjU3YyBsZWdhY3ktdHJ1bmsKKzM1MTQ0IDY5MDEwNWZlYTU5ZDM4ZmViMzQwMzFhOWJhNjk0ZDRiOThhMWU5MjIgcmVsZWFzZTIzLW1haW50CiszNTE0NSA2ZTM3NThlZDFlZjQxMmE5MmUxNmQxNWZiZmU2MDYwYjI5ZmJhOTlmIGxlZ2FjeS10cnVuaworMzUxNDYgYmJjOTQ0ZTFmZWNjYjYxMWE5NDdiYzg5Y2Q4YmUxZjFlYTA2ODQyNiByZWxlYXNlMjMtbWFpbnQKKzM1MTQ3IDI2NmYyMjZmNDcxZDA0NjUyNTk4NzBiOTM4ZGVjMDgzYmUwMjI2MmUgbGVnYWN5LXRydW5rCiszNTE0OCBlYzhhNDY4NWIzNjA2NjY4NzFlZWVkNzhmNzU4NWViNTYxZDgxZDkyIGxlZ2FjeS10cnVuaworMzUxNDkgMTRkZWE2ZjhiMGMzNDRmZWE1YzkxZTc2N2Y4Njc3YzMyMDAwYTg3MyBsZWdhY3ktdHJ1bmsKKzM1MTUwIGMzODBkYzI5MzA0YWUxYjMxYjg4Mzk1MzljYmNhZjdkYmZiMTdiOTkgbGVnYWN5LXRydW5rCiszNTE1MSBmN2Y0MmYzYzNmYjQ3NTdlYjQ2MTkwZWI1ZTRiN2I1MjkxNzRmOGI5IGFzdC1icmFuY2gKKzM1MTUyIGExNTExNTI5MGUxM2IyOGZjOGE2MzQxODBhYzViZmJhN2QyNGUwMzYgcmVsZWFzZTIzLW1haW50CiszNTE1MyA3ZmNiMzU1NTJkNTNhMzRhMDg3YWMyYzNiMjE1YmU4MzRiNjBiZTNkIGFzdC1icmFuY2gKKzM1MTU0IDAzODA4NzhmM2RiNTQ5MzE0OWFlNGM3MjkxYTVhMTVjNzMzODEwODEgYXN0LWJyYW5jaAorMzUxNTUgNjAzYTllYWE3NGUxNTVkOGRmYTY5YjM1N2UxMGU1MGNlOWRjYzgzMiBsZWdhY3ktdHJ1bmsKKzM1MTU2IGFjNGE3YmE1NDc5MjkwNGFkODI3ZjJlOTg2NzNmOWNmODA5ZmY0MTAgbGVnYWN5LXRydW5rCiszNTE1NyBiMWRjNWUxMTQ4ZWEzNGVmYTVjZjdiN2E4ZmIyZTZlNGVmZDVlY2ZmIGxlZ2FjeS10cnVuaworMzUxNTggYmU1NmZjNDg1ZTI3MGQ2ZTI0NmZlZWQ4MTc5ZmYyMzE4YzVmYzNlMSBsZWdhY3ktdHJ1bmsKKzM1MTU5IDdiZTU1MzgwNTk0OTNlNjNmYThkMTZkNTU5YjdkYmY4ZWE3NjYxZjIgYXN0LWJyYW5jaAorMzUxNjAgNTYxZmU3ZjY2NTE1ZTA5ZjkwMTIxMDI0Y2E2MGU4Yjg3OTBmOTdjNyBhc3QtYnJhbmNoCiszNTE2MSBjNGQzZTdhMWZmODY5ZjBmYTY1ZWJkMGIwY2NhOWNlYWFhMzM2NmVmIGFzdC1icmFuY2gKKzM1MTYyIDYxYTIwZGY0YjBlZjVmZDc5M2ZhOThhMGM5NTAyMTgzMDgzNDYzZDQgYXN0LWJyYW5jaAorMzUxNjMgYjgxNDgwZjdjZmZlNjE5YTk0MTdlN2RmMDhmYjMzZDljZDI4NGYxMyBsZWdhY3ktdHJ1bmsKKzM1MTY0IDE4NjMxOWNmZjRiMjI0ZTQwMzczODVkNWY1ZjZlMDhkZmYwODFjMGQgYXN0LWJyYW5jaAorMzUxNjUgN2M4OGEwNjlhMTQzOWEwOWUzZjVkZWYyNzc4NjQ4OTRlNmI4NjU0YyBhc3QtYnJhbmNoCiszNTE2NiA4YjYwODQ4NDhkYTE4OWEwYzY3OWJmZjQ0MDljNDI0ZjBlNDQ5MGMzIGxlZ2FjeS10cnVuaworMzUxNjcgNjZhNDIzMGY5NDViMTQ4ZWIzYzczNWUwZDRkNzYxYWM5OWI5NTQ2NiBsZWdhY3ktdHJ1bmsKKzM1MTY4IDhmNDcyODFmZWE3YmVhNGM5NTVmODExNDg1YmJmMDNiZDA2YzI5NDAgcmVsZWFzZTIzLW1haW50CiszNTE2OSA0NjIyNDY5MGEzNjU1YTQzZGRiOWFmMzRhZDZhNGY2MjEzMDNjZjE3IGxlZ2FjeS10cnVuaworMzUxNzAgZjJmZDRlNWRkZjE5NWFjMjMzNWQwMjUzODMzZDNhNmVhN2I0NTlkYiBsZWdhY3ktdHJ1bmsKKzM1MTcxIGU0ZDczZWU4ZDRlMTZiYTRjNGE4MTk2NmI2MDNhN2FmNzE5MzI4YTMgbGVnYWN5LXRydW5rCiszNTE3MiA4ZDA2YzE5MmYwZTZkM2VjOWQ3MGJhYTA5ZDBiNDY1ZjEyMzRjOTRlIGxlZ2FjeS10cnVuaworMzUxNzMgYWRiNmRmZmQ4ZGQ1MzE0YjQ1MzE0NjE1ODA3NDU1OWJiNjJjNTI3ZSBsZWdhY3ktdHJ1bmsKKzM1MTc0IDFlYmQwNjI2ZDE3NjEwODMyOWI3MDE1NzI0ZmI4N2ZkMjJlZjg0ZGIgbGVnYWN5LXRydW5rCiszNTE3NSAyODgwY2ViODExOWRjMWI1MjVlMzUwNTNkOTczMThlMzBkZWY1YjdlIGxlZ2FjeS10cnVuaworMzUxNzYgZThiOTZiMmJmYTdiMjBmY2Q4MTc3NDdhMTMyODM3Y2NkYmM4ZGExZCBhc3QtYnJhbmNoCiszNTE3NyA4ZjhiYmEwYTc1YjRjZDA4MjZhNWE1NzgzZTM5MzI2MWU0ZGQ0Y2FhIGxlZ2FjeS10cnVuaworMzUxNzggNGU3Y2M1MGIzMGExNjQzOGY3MTRiNGIzNmRhY2I2ZWZhYjRhNGFiOSBhc3QtYnJhbmNoCiszNTE3OSA1MDFkYWFjY2JmZTBjYjY0Y2JhMGE5NGMzZmNkYTBmMDBjMGM0NGY3IGFzdC1icmFuY2gKKzM1MTgwIGQ2NjdlMzNlMDI1MjNmYjdiMGQ5ZGIzMTIwOGQwNmYxZmI4NWEzZmUgYXN0LWJyYW5jaAorMzUxODEgNjU3NzgzNTIwNjZiZjk0ZjA4ODgwZWFmY2E3NGM4ZjMxODE5ZThiYiBsZWdhY3ktdHJ1bmsKKzM1MTgyIDM3NDY5NzQ3OGI1YWMwMmU2MGFiYjU4M2E4ZWQ2ZjA1MjRmZDg4NzUgbGVnYWN5LXRydW5rCiszNTE4MyBmNzZmZWI3M2EwZTQ3MTY5YTM2MTViOTI4ZDYwZDA2ZDkwOGRkYzY0IGFzdC1icmFuY2gKKzM1MTg0IDYzMDhhZGYxNzJmNDgwMzUwNzI0ZWZhMDc1NmZiMWMzOWRjNGJiMDAgYXN0LWJyYW5jaAorMzUxODUgOTUyNTE3Nzk4Y2I1ZDMwMzY2ZjQ5NTNiMTEyNmYwZWI3NzkwMzZkZiBsZWdhY3ktdHJ1bmsKKzM1MTg2IDYzZmE2MGYyZDYxY2E4MzZiNWUyZDA5NTlkZWQxYzAwMjgxOTRhZWQgbGVnYWN5LXRydW5rCiszNTE4NyA0YTllNTYzNjhjNjkwNGMzOTI1MWM4MmJhNzAxZWI4MDAwM2Y2ZmNlIGxlZ2FjeS10cnVuaworMzUxODggM2M1N2ExYzNhODdhZWYxMzg4NTY0ZjkwNTljYjRhODdmMTYyM2M3OCBsZWdhY3ktdHJ1bmsKKzM1MTg5IDNjMjY3N2M0YTJiZjM2OWU4MWZiNmZhZjhiMTNkYzY0ZDI0NDRmYjIgbGVnYWN5LXRydW5rCiszNTE5MCAxNmIzMTVkZjEzY2U0OGY3YjNhY2JkNWNjZDZlZWJlMGVmODRjNTMyIGxlZ2FjeS10cnVuaworMzUxOTEgNDkzNzA3NjkyNjcxOTRiNzY5MTk5ODU0YTdmNWQ4MTZmMWRhZjhlMiBsZWdhY3ktdHJ1bmsKKzM1MTkyIGEyZmUxYTM1ODAwYTA2ZDQ3N2QyNTBjMjQzNjNkOTgwMGZhYzcxYWQgbGVnYWN5LXRydW5rCiszNTE5MyBhZmI0Yzk3MjZkMWE0NWEyMzFkNGZjZWQ5ZDU3NzNkYjE1ZGZlMjkzIGxlZ2FjeS10cnVuaworMzUxOTQgYTI4MjgwMWIwNmI2NDhkZjBjOGNjNDYwMTIyODVhN2FiZmZiYzY5ZSBsZWdhY3ktdHJ1bmsKKzM1MTk1IDEyMTlmMTE2MmQxZDFhOTU4OTcxMzRmNWU2NDk2NTFkYmZlMmU4ZjAgbGVnYWN5LXRydW5rCiszNTE5NiA5N2JjZjJlODhjZWI4OTE2YWM4YzUwMzg5ODg3MjllY2IzOTA1Y2RlIGxlZ2FjeS10cnVuaworMzUxOTcgMTZkMjY5ODY2YTRkYWY3YmIyYmVhMzFmMjE1ZTFmNmY4OTcxYjYwNCBsZWdhY3ktdHJ1bmsKKzM1MTk4IGRmYzE4MTliNGViNDczMmY5YTE0ODc2NTVhMjgzNDU4ZDFjMzBhMDIgbGVnYWN5LXRydW5rCiszNTE5OSBiNGJjODNmMmZkMDRkOWQyMTFiZjcyYjgxYjAwODJmN2Q3ODU4YjNhIHJlbGVhc2UyMy1tYWludAorMzUyMDAgOTI1NjVjY2NlOTJiODBjYWQ3YTM1ZmM0NzZlMzBmYjk3ODkwZDdhMSByZWxlYXNlMjMtbWFpbnQKKzM1MjAxIDY2YTU1MGU5YjJmYjc1YzJlMjEyMzYxZWUwOTg0ZTk4ZmRjNTBiOGUgcmVsZWFzZTIzLW1haW50CiszNTIwMiBiYjcxNDZkMTE3ZmJkMzkwYmE0OGEyMWFmYzcwNzVmYWUxNzY0ZWU4IGxlZ2FjeS10cnVuaworMzUyMDMgM2NjM2NiNzkwNDNmNzIxODAwYmZiYjEzNzIyZDdhYmMxMTk3YzAxOCByZWxlYXNlMjMtbWFpbnQKKzM1MjA0IGQ0MTY1ZDEyZjczYzE5Zjk2NTFlYjlhZWE4ZmM3OGY1NGI5ZDJkOTUgbGVnYWN5LXRydW5rCiszNTIwNSAzN2Q1MDFiOWUyZDViYjBmODI0YjZhNzVjOGU5ZjNiNjg0YmYxMGJhIGxlZ2FjeS10cnVuaworMzUyMDYgNTY2NzM3YmZhZWM5NTA1NGJkZjQ1ZjIyMDY5Mjc2NDdlNjllODE4MCByZWxlYXNlMjMtbWFpbnQKKzM1MjA3IDhhZTg4ZGI3ODQzYzFmMGMwYTZlMThhMDJiODA4M2VjYjkyZjViMDkgbGVnYWN5LXRydW5rCiszNTIwOCBjNTgyNGM4YzZiYTcyMjc1NzdjYTJlOTU5MTM0MGViYjIzZDQ5NmY1IHJlbGVhc2UyMy1tYWludAorMzUyMDkgMDMyY2IxN2FjMmQ2Y2JmYjdmZmU0ZDM2NTIxOWI3OTVjNGI0MGVhNCBsZWdhY3ktdHJ1bmsKKzM1MjEwIGNjMTBiMDEwZjQwYmExZTRlMjU5NGVmYzQ1ZjVjNWI3N2VhMzcwZGIgbGVnYWN5LXRydW5rCiszNTIxMSA0MjAwM2M4NjAwZjRkM2UzN2QxN2ZmNDg3MDViZjhjMGZhNmNhNWJlIGxlZ2FjeS10cnVuaworMzUyMTIgZDVjMDQ3ODA3YzY5N2IzNDFjY2MzNTE1NzAzZDQ4MTNmN2MwOTYwMiBsZWdhY3ktdHJ1bmsKKzM1MjEzIGE1Nzc0MTBlNWE2MGZkZTcwNDJiZmU3Mjk1MGFkZjYzNDkwYjM0OTcgcmVsZWFzZTIzLW1haW50CiszNTIxNCBhYWJkOWI1NGU0NjllZjg4MTAxYzU1ZTg3MmZhMjRmZGJkOTg5Nzg4IGxlZ2FjeS10cnVuaworMzUyMTUgODVmNDkzMmQ4ZmZkOTk3MDA1NTc0M2JkMTYxZTRhODRlMWVlYzY4NSBsZWdhY3ktdHJ1bmsKKzM1MjE2IGYwNGNjYzI4ODU0MmI2ZGI2MjM4NWY1NjYxYmE2MTY0ODU4MjY4M2EgbGVnYWN5LXRydW5rCiszNTIxNyA0NGQ0NDM4ZWQ1N2E1YTZlOGNlMDM5NGI0NTgxZmRkZGZkNmNlOTU0IGxlZ2FjeS10cnVuaworMzUyMTggZGUyZWQ4MDBmYTUwZmE1NTY3MzNjOWUwMjVkMzMxZmExYjUzZWFiNSBsZWdhY3ktdHJ1bmsKKzM1MjE5IDg0OTViMDI3YmNlMzY2MDk5MjU0YTI3YjFiZDhkMjQ1NTViYjgwYmMgbGVnYWN5LXRydW5rCiszNTIyMCA2NmU0M2YyNTA0NmRhNWU3MDUzYmMwYzY5YjAwYjRmOGQxOTg2NDliIGxlZ2FjeS10cnVuaworMzUyMjEgMWRjOTZkODc5NzRlYjY4OGIyMGUxMmRiYjQxNzk1NzAyNTgyYmIyNiBsZWdhY3ktdHJ1bmsKKzM1MjIyIDE3NGRjZjE3MWRmNTJjM2Y1MzI0MWEwNTNiZjViMGIyYjQ4MWRhNzQgbGVnYWN5LXRydW5rCiszNTIyMyA3YjM0ZDg0OWMyMjkwMDY1ZDA5M2NhZTk4M2Q3YmM3MDI0ZWU5NjgwIGxlZ2FjeS10cnVuaworMzUyMjQgM2NlNGZmYWMyN2FiNDRjMmExOWUwYTVlMzFiYzJkODdlNjA0ZWU5OCBsZWdhY3ktdHJ1bmsKKzM1MjI1IDMwOGMxOTNmNTFlMzE3ODU2Y2IxYmFkNDJiNmVkMGE0ZjQ0ZTE4ZjIgbGVnYWN5LXRydW5rCiszNTIyNiAyNWIzMDQzOWZlMjI5ZjAwMjZlNGQ3ZDYzMjNlNmVmYzEwMTg4MTU2IGxlZ2FjeS10cnVuaworMzUyMjcgYmE5YWFkZGViOTU2ODQ3YWQwNjRlYzM2YzI0NjhkYmQwYWVhM2Q3MSBsZWdhY3ktdHJ1bmsKKzM1MjI4IGYzMGFhYWMwMDE5NWU4NzY1MzJmMzUzYTJlZTFkOTNkOGY1MTQ1MmEgbGVnYWN5LXRydW5rCiszNTIyOSA1NzNiMDg5ZmFiNzFkM2U2MjViZTkxYzgyNjMyMzNkZmUzOGE0Yzg1IGxlZ2FjeS10cnVuaworMzUyMzAgOTFhZjY1YjkzMmQ2MjI4ODdiZGIwZDZhMWQwNDgyODljZWExMzU0YiBsZWdhY3ktdHJ1bmsKKzM1MjMxIGQ1YjRjNDRjNzZjZTA2YTg0Y2Q1MmRjZGMyZTJlMmU3YTQzYTdjYjQgbGVnYWN5LXRydW5rCiszNTIzMiBkOTg0YjNiZDFjZWIxYTBkMmFjYWNiZDBjNzM0MTg4MTU2YzQzNmEyIHJlbGVhc2UyMy1tYWludAorMzUyMzMgNjVkMjhmZmYxMTcyZTE1Zjc3Zjg0NTdmYWE3NGZlY2Q3MWY1NmRhNCBsZWdhY3ktdHJ1bmsKKzM1MjM0IDUzZGZmNjBmNTUwODliYWMzZmRiZGQ3MjdkZDZlYjQ1ODg1NDZhOTIgcmVsZWFzZTIzLW1haW50CiszNTIzNSBlMTc4ZWI0M2VmZGRlZTliOWIzMWQzMmFlMjAyZGUxZjhlN2EyMTE1IGxlZ2FjeS10cnVuaworMzUyMzYgNzI3MTIwZmIwMzY1MmRjMjgxMWE2NWJkYTViZTZkZWJlOWNhMWEwNiByZWxlYXNlMjMtbWFpbnQKKzM1MjM3IGY1N2Y1Y2UyMmM4ZGM4ZDIxMzViOTc5OGQ3OWI3YWZjNGE5ODIyMDQgbGVnYWN5LXRydW5rCiszNTIzOCAwOGVjNGRiNTA2NGViNmEyNWQ0ZTgyYjI1YmQ3NjliYzc4MzM1ODg3IGxlZ2FjeS10cnVuaworMzUyMzkgODlmOTA3MGRjMWJjMGJjMTA5MjkxYjMzNWU2M2MzNjM3NTVhNWFlNyByZWxlYXNlMjMtbWFpbnQKKzM1MjQwIGZkMmQ2NGFmMjY0MGFiNjEzYzgxMGFiMzMxMGQ3M2JkNmJkMjcxMzIgbGVnYWN5LXRydW5rCiszNTI0MSBkYjRkYTkzZjBiYTBlZTRiZTBlMTdhMWIyZWQ1NDg0NDBlNGFlZmQ0IHJlbGVhc2UyMy1tYWludAorMzUyNDIgOGUyMThjYzhlZGFiMmJkZGZlMTkzZDAzYjllYjgxNTI4OTM0M2EwOSBsZWdhY3ktdHJ1bmsKKzM1MjQzIGZlYWJlMmZmMGUxZTA5ZDJhM2QyZWJjNzMwZjM4YjI3MGE3ZTdlNTUgcmVsZWFzZTIzLW1haW50CiszNTI0NCA2YThlOGExM2M3NDU1ZmNmN2E5MDUwMzVjYjU2YzBkYzNiOTNhMTljIHJlbGVhc2UyMy1tYWludAorMzUyNDUgNGMxMmQzYjAxNjZmY2IwMjEzOWNhNzcyNDEzMTJhNWM5MGVlZjAxNSByZWxlYXNlMjMtbWFpbnQKKzM1MjQ2IGZlZjlmMmE0MWMzNGMwMzc2MGY2ZjNkZDM3OWEzZmMwZWNhNzBjZWIgbGVnYWN5LXRydW5rCiszNTI0NyAyYjdlMDhkY2FjYjE0Yzk2NzgzMzFlYjgxZmExNDdhYjZjZDNkMjdjIGxlZ2FjeS10cnVuaworMzUyNDggNTFjM2Q0NTJhZjJmMmNmYjhhNDA0ZDg3MzE4MjQxYTQ3MDhkMjk1YiBsZWdhY3ktdHJ1bmsKKzM1MjQ5IDc1ZGNmMjY2NmQ1NDQ2MDkzOGI1N2QxYTc0ODVhNzIzZDYyNDY5MzUgbGVnYWN5LXRydW5rCiszNTI1MCA1ZDlhM2Q3NmM5NGU2MDM2MmZlNGE1MjAxNGI5MTRjMzY0YjhmMDAyIGFzdC1icmFuY2gKKzM1MjUxIDhmMDYzMjAwOThkZDYwNDEzYTMwYzYxM2E4YTkyYWY3ZDJlY2M0YjkgcmVsZWFzZTIzLW1haW50CiszNTI1MiAxNGY4NjBiMDNiZTI3M2FhOWNhYzI1ZjFhMTI2M2RiY2U2NGYxMDAwIGxlZ2FjeS10cnVuaworMzUyNTMgNTk1MzhkM2I3Y2QyZDVkM2QyZTEzYjUyNjQ2ZjdjYzhlZjliMWYyNCBsZWdhY3ktdHJ1bmsKKzM1MjU0IGViNDhiMjUwM2YyMDFkNDRiNGFkZTY0ZmM2ZDNhMjA4NGViNWE5NjkgbGVnYWN5LXRydW5rCiszNTI1NSAyYWJjNTJjM2Q0YzJmY2VhYzM2NWExZDg5NTZlOGZkZmU4OWJkYTIwIGxlZ2FjeS10cnVuaworMzUyNTYgMWY1ZjZjY2EyZjIxMGQxMDhjN2ZkMTg4MTlhZDhlNGI2ZWE3MzAzZSBsZWdhY3ktdHJ1bmsKKzM1MjU3IGViNjllZWNhYjRjN2I2YzBhMTQ0MTUxYjkwNjIzMDdhZDEzOTViYTcgcmVsZWFzZTIzLW1haW50CiszNTI1OCAzNTQxMjkxNDM4MDk0Y2ZjZWIwY2Q2NzQ4ZDk3NDU4YmUzOWJhNTdhIGxlZ2FjeS10cnVuaworMzUyNTkgNzE4NjQ4MjA0MDJkNjU2OWRlNGVjN2RjNzdkNjIxYTI4M2U4ZTVlZSBsZWdhY3ktdHJ1bmsKKzM1MjYwIGNlNThkMWNjNmY0MDVmMzMxOTE0OGZiNzA2Mzk3NDFkMmRiYmMxYWYgYXN0LWJyYW5jaAorMzUyNjAgY2RjNjYyOTJlNTVkMzY5ZTc0YjRiMzIyNmJjZGQ4MjcxY2U3MDhhMyByZWxlYXNlMjMtbWFpbnQKKzM1MjYxIDIyMTk5ZWY2NGZmYTA0NTJhZmYyYjY5YWY3OTllYWM3OTQ2ZWZiMzQgYXN0LWJyYW5jaAorMzUyNjIgMTA2ZmE5NGI0MmRlMGM5MDVhMGZmYzRiMDA1YmM1YjI4MmIxYTI4MiBsZWdhY3ktdHJ1bmsKKzM1MjYzIDVhNDViNWMyMzcxZTg4NTE1NGNiNzgxOTFjNDQxMzkxOGFiNDQ4ZjEgcmVsZWFzZTIzLW1haW50CiszNTI2NCBlYWVlYTU4N2Y5MGEyOTU1NmZkMzI0MWUwMmI2NDFiZmIwMmNlYmQ2IHJlbGVhc2UyMy1tYWludAorMzUyNjUgNWJlZGJhNTViYTAzN2ZlMmMyZjM4YjVhYmQwNGNkNmE3MmJkNjA4YyBsZWdhY3ktdHJ1bmsKKzM1MjY2IDU0NTIyOWRmZDkwOTg1ODdkNDNiMzQxYTdlY2FhODBhMWIwMjZmZjUgbGVnYWN5LXRydW5rCiszNTI2NyA3MWEyOTRiZDc5NTA5Y2Q0MjA5Nzc5N2UzOWQ2MDI2ZWY5MDMwNTgxIGxlZ2FjeS10cnVuaworMzUyNjggOWIzZGFlY2FhZjI1NDRkOWMxZTBmMGM1ODVjMzU4OTBjNjMxYTY5OSBqaW0tbW9kdWxhdG9yCiszNTI2OSAxNTYwMGEyMzc0OTJhM2ZkZDUxNmEwOTk3MjE1ZjNkNjBjNjU4MGNlIGxlZ2FjeS10cnVuaworMzUyNzAgZWU0NGJlOGUxOWZjYzk0YTI2MmYxNDMxN2E3NmQyMDZjOTYxYjI1MCBsZWdhY3ktdHJ1bmsKKzM1MjcxIDJlNjJmYzk3OGQ4YWU5N2MzZWM1NjI1MGRmZTFmZmRlYWEwMDIzNWEgbGVnYWN5LXRydW5rCiszNTI3MiBiZDBhY2M0MjgyOWVmZTQzOTdhYzgyZGE0N2ZjMjg1MmQ4Y2VhOGU5IGxlZ2FjeS10cnVuaworMzUyNzMgNThkNWVkZTVmNGNlMmQ5Nzg3YzQ1MDUzYzI4NGI1NzFjN2YxZjBhNiBsZWdhY3ktdHJ1bmsKKzM1Mjc0IDZiN2IyYzYyYWIxMjYwODg0MWYyNTkwZWU5ZWIzMTMyMzIwNzJlZDYgbGVnYWN5LXRydW5rCiszNTI3NSAyMzk0NDM5MzMzMjRiMDIzZjdjZTE5ZDZmYzlkYmU0ZTk2OGUwYzViIGxlZ2FjeS10cnVuaworMzUyNzYgNzZjODEzODk0ZWU2ZjMwNTU1ZWVlOWY1YzU2OWI5MDc5MWRjMDU0MSBsZWdhY3ktdHJ1bmsKKzM1Mjc3IDNkOTI3ZTFjNzhjODg0ZDE2N2M2ZjJjMjRhNTUyNGJmNWViYmQ3ZjggbGVnYWN5LXRydW5rCiszNTI3OCA0ZWY1NjhjNjUzZDljNmJjZDhkYWY2MDc0ZWM5Yjk4NmJlMTQwNjQzIGxlZ2FjeS10cnVuaworMzUyNzkgY2UwMTA2ZGY2YTZhNjMyNWUzNGE5ZmQxZThiM2VmMmEyOTU2OTc4NiBsZWdhY3ktdHJ1bmsKKzM1MjgwIDI3YmYwNWIyYTRmOWUzYjY0ZGEyYTIzY2NhNzFjNDBhZjY0M2IxNjcgbGVnYWN5LXRydW5rCiszNTI4MSAxMjMzYmQ5NWRhMWE5M2Y5ZTJmY2VlZGMxZmFmNGE0NWJhZGFkOWY0IGxlZ2FjeS10cnVuaworMzUyODIgYmZiNDBhMDNjYzBjMDFmZGM4MGFlMWE5ZDg3OThmNDU1ZTFlNmIxZSBsZWdhY3ktdHJ1bmsKKzM1MjgzIDk1YTMyYzc4NjcyZGIzZTJjYmY4MDk3MjE2MThmYWEwZTg0ZGY3Y2UgYXN0LWJyYW5jaAorMzUyODQgMzU0OTVkMzZlYzk1N2FjNjQwM2ZhMzAzMGI3MDhhODU1OGZhNzE5NSBhc3QtYnJhbmNoCiszNTI4NSA4ZDQ5YzI5ZTlhYzFlODFhMTE3ZTQ1YjliZDljNjA4MWRmZjcxYjZjIGFzdC1icmFuY2gKKzM1Mjg2IDNiYTRlYThmY2UzZTUwMWYzMTFmYWVmYzAwNjFmMzUxNGZkYWY2MjYgYXN0LWJyYW5jaAorMzUyODcgZmE5ODEzNTA5NzZjYmVlZTVlNmM4ODlhYTA2NTdiMzg4ODdhMmYyMyBhc3QtYnJhbmNoCiszNTI4OCAyNWEzNWQ4ZjQwODM3YzAzYmZmNTExODZkZTEzMTM4NDUwNWVhZTIwIGxlZ2FjeS10cnVuaworMzUyODkgNzgzNjJhYWE0OTFkZmZlN2EyZWNhN2ExZTk3ODdlODJkOGMwN2FkYiBsZWdhY3ktdHJ1bmsKKzM1MjkwIDQyN2U4YmFhNzA1NzRiZTJlMTlhMDJhZmFhNDViMzRlYWJhYzE5YzkgcmVsZWFzZTIzLW1haW50CiszNTI5MSAzNWMwYWM4ZTA4NzEzNWY1YzU1OTZkNjYwOTIzZDI2YmMwYzNiZjhkIHJlbGVhc2UyMy1tYWludAorMzUyOTIgNWVlZWQ1MWU4MmM0ZGIxYzJmYTI1ZWYxYTAzZDY5OTMxMzVlNzMxZiBsZWdhY3ktdHJ1bmsKKzM1MjkzIGY2ZDhjZmU3YzAwMDk5NmQyMjk1ZDQ0ZWRlNmViOGQzMzM2OTcwMmQgcmVsZWFzZTIzLW1haW50CiszNTI5NCA3YzA1MmJlNDAxNjkzYjZlMzcyY2MxNWE4OWIyYzE4YWQ1MDMyY2YxIGxlZ2FjeS10cnVuaworMzUyOTUgNjRjMDhkYjhkY2U0NDYwZWEwYmQ3NDhhZTEzNGM5YTI0Mzc4Njc2NSByZWxlYXNlMjMtbWFpbnQKKzM1Mjk2IDc5YmM1NmJmOTIyMDc0N2Y3ZTk5YjYwY2NjNjRjZDA0OGQxYWYwMmYgbGVnYWN5LXRydW5rCiszNTI5NyBiMGM2ZjdjNWFkZTY1YTRmNDVlNTA3YTgzMjUwOGNjODBkYTJlOTk5IGxlZ2FjeS10cnVuaworMzUyOTggOWY0NWEyZDM2NjZkZTdkZGFkNDFiMGQ3OGNkM2E5Njk4OTZjNmEwNSByZWxlYXNlMjMtbWFpbnQKKzM1Mjk5IDBhMzM0YjIyNmYzYTMxMWQ3YjMxODcyNGMyYjVmOTlmOThiNzNhNGUgYXN0LWJyYW5jaAorMzUzMDAgZWM2MjMyZWQ5MTE1MjViZTQ0NGE3NGVkZGQ1ZDljMDIzYTY4YjFhZiBsZWdhY3ktdHJ1bmsKKzM1MzAxIGQ5OGQwMjU1YmIwZmZkOGU0ZTAzN2M3NTFiY2M3MmY5OTAyYjkzOWYgYXN0LWJyYW5jaAorMzUzMDIgYWIzMzlkODBjOWM5YWY3ZGI5MTZjNmM4Zjg4YzZlZTBiNTZjYzk4MyBsZWdhY3ktdHJ1bmsKKzM1MzAzIGE1NDU3YjYyMDIyNjU4YTllZjhkODkxNmJhYTJhM2FmMWNlM2NmZDcgbGVnYWN5LXRydW5rCiszNTMwNCA3MmU5NzBjMGFjY2MxMjI1ZDg0NTZmMzBjODFhZTFkYmMwZjE4ZDM5IGxlZ2FjeS10cnVuaworMzUzMDUgMzkxMDExODQwYTAzZjc2NzM4NmQwNzQzNWE1NmQ5NTJjNWJhNWJhNSBsZWdhY3ktdHJ1bmsKKzM1MzA2IDJjOGE0MzA2M2Q4MmM4ZGNkYmY1MzEzZWMxNGM2MDNhMjM4Yzc0OWEgbGVnYWN5LXRydW5rCiszNTMwNyA0NzBmOTVhZDY3NTA3ZGI0ZjVjYjRjMzk0MDcyNTJhM2U5ODJjNzQ4IGxlZ2FjeS10cnVuaworMzUzMDggOTdlYmU0MDE0ZWRjOWNlMDlhN2Y5YWUxYTcwOWM0NDQ2NTRmOTk5OCBsZWdhY3ktdHJ1bmsKKzM1MzA5IDNkYTZjMmFkYWQzNDNjYzYwOTBkNTI3ZWIxOTYwMjdlNTgxODUxYmYgbGVnYWN5LXRydW5rCiszNTMxMCBiZGYwMDZkZWU2OTg2YjgwNWVmY2I5YzgwMWI1N2RmZjg4NDg2YjI2IGxlZ2FjeS10cnVuaworMzUzMTEgYTE1N2NjMjBmMWI3ZGI1ZTdmYWFlNmZkZWQ3YjJmMTAwYWI0ODQ5NiBsZWdhY3ktdHJ1bmsKKzM1MzEyIDIyNjMyNTBkN2IyZmQzMDI1NjdhNGQ1MWNmOGJiNDQyZWQyNDI3MmMgcmVsZWFzZTIzLW1haW50CiszNTMxMyBhNmQ4ZDVhY2U2YTc4ZDU1Yzc3OTBjZjg0YmJjYjBkODU4YzM5ZWRlIGxlZ2FjeS10cnVuaworMzUzMTQgMzgyODMzOWFkZjg2N2NhZTZmMWJlMjY4M2M1ZmNiNGFmNDFiZGNiNCBsZWdhY3ktdHJ1bmsKKzM1MzE1IDExOWQwMTgyYmQ1ZTQzMzY0YzA5NDQyZmNkOGJkNDhjMzA2YjQ5MGYgbGVnYWN5LXRydW5rCiszNTMxNiBjMzAzZWMwMTljYjJjOGQxMDQzMDFhNjA3NzM4MjU3MTc0YTA2YTIyIGxlZ2FjeS10cnVuaworMzUzMTcgOWNhYzlkMGIxOWUzMTMxZTg1ODAwNThlZTNlYWU1ZWM2MDkxYzJhMSBsZWdhY3ktdHJ1bmsKKzM1MzE4IGNjNzk0MzE4OWE1YmNhYzEzYzAyN2Q2ZDBjZDBhOTJkMWU5ZTY3NDUgcmVsZWFzZTIzLW1haW50CiszNTMxOSBjNzVhNGVkZDFlNTI3ZjA2ZDRjYjBiOTYyYmZmNjA1YTYwZjA3MjZmIHJlbGVhc2UyMy1tYWludAorMzUzMjAgZjFlMGE3YzQ4ZjM2MDMzOWRiODM3NDNhZWU5ZjlmMWNlMzcyYWQxMCByZWxlYXNlMjMtbWFpbnQKKzM1MzIxIDZkZDM4ZTQ1ODZmZmZkOGE2NzVjMDQ0YzE4MTM1ODczYjNlNjE3ZDggbGVnYWN5LXRydW5rCiszNTMyMiBmNDU3ZjE4ZjU5MjIxMzlmYTcyNTcxYjAwN2ZlYTQzMzE4YTQ5ZmMzIGxlZ2FjeS10cnVuaworMzUzMjMgNDc1YmY0ZTc5MjBlZGZjYzY5ODQzZWI5MDBhNGIzMzQzYWEzNWZmYSBsZWdhY3ktdHJ1bmsKKzM1MzI0IDdhNzYxY2FkNzUxM2QzN2Q5YWEzMDYyYjlmZGJiZmZjOGRlZWM0MDMgbGVnYWN5LXRydW5rCiszNTMyNSA5MTFiMzIxNWQwZGM0NmQwYjA0MzgwNThlZDBkYjNmMWQ5N2I3ZmZiIGxlZ2FjeS10cnVuaworMzUzMjYgMWMwNjYzNzE2ZGIzNTdkYjQyNzlhOGYwMjYyM2JlZjkwYjNlMDdiMSBsZWdhY3ktdHJ1bmsKKzM1MzI3IDhhMzlhOThjODc4MDI0YzNkZjFhZWIzMGNkMDcwN2U2NDE0YmI5MTkgbGVnYWN5LXRydW5rCiszNTMyOCA0NjMyZmNjNTU0NGExNDZjY2Q0M2M4MWNmZjBjYmY2ZWJlZDZmOGViIGxlZ2FjeS10cnVuaworMzUzMjkgODM1MDJlMzFlMDZlMTlkMDVlOGFhYjY5YjAxOTcxZWE0ZDc3YjI5NyBsZWdhY3ktdHJ1bmsKKzM1MzMwIDdlNGUzMTM3YjI1MjdhMjlmZjFkYzcyOWEwNmE2OTRlZmUzYjU5NmQgbGVnYWN5LXRydW5rCiszNTMzMSA3OGY3NThhYmM3OWYyOWUzM2E2NWRiMTNhM2M0MDBhZmExNzBiMjA2IGxlZ2FjeS10cnVuaworMzUzMzIgOGVjM2FhODc5ZWVlYTBmZjkwMzQ3YTBhMzEzMDQ0NmY4N2IwODU5YiByZWxlYXNlMjItbWFpbnQKKzM1MzMzIDNjOWI0ZmMzZWYxNDdjMDk5Y2MyMGQ3MDY0Y2M4MDEzY2MyYmQ5MzUgcmVsZWFzZTIzLW1haW50CiszNTMzNCBjMzdjNDA3ZmFmNTJlZDkyYzEyZmQ3NGQ5Yjc2M2M4ZTFiYjJiNjE4IGxlZ2FjeS10cnVuaworMzUzMzUgMTliNmZlYzJlNTJkMjhiMjQwY2I1ZTQxMGRkNjE4MmY1ZTI4ZWRhNCBsZWdhY3ktdHJ1bmsKKzM1MzM2IDY1MGVmMDA5ZTA4YzE5NmZhNDZiZDcyNzRkMTNlZWM4NTI0ZTVmNDYgbGVnYWN5LXRydW5rCiszNTMzNyA2ODgyMjhhYjA1YWViNTc0MjUxMGMxYmRmNzlmMzJlYzZjN2E4NTI1IGxlZ2FjeS10cnVuaworMzUzMzggODE4M2RkMWE0ZmU2YmJjZjJmZTk2NGU5MDhkNGUyZjI0ZjMxODgzMSBsZWdhY3ktdHJ1bmsKKzM1MzM5IGE5ZmQ0NzY0NGMwZjc5OGNlNWMyM2M4NjQyMDczMTExNDk1NGQ2OTEgcmVsZWFzZTIzLW1haW50CiszNTM0MCBmMmQ5NGZmMTVhYzhmNDI3OWYxOWNmM2E4Y2M0ZjFiOWJkNGIyYmE3IGxlZ2FjeS10cnVuaworMzUzNDEgNWU3NDU1ZmI4ZGI2YjVmZTRhYjVmNWZkYTJmZGJmNGE1NTAwZWIzZiBsZWdhY3ktdHJ1bmsKKzM1MzQyIDIyMjFmOTYwMTgwZGY3MmVhNDhmZmZiNDEwYjIyOGM0MGE5ZWEyNzUgcmVsZWFzZTIzLW1haW50CiszNTM0MyAwYjEzNzYxODIwYjBjMWQ4ODk4ZWU1Y2NiZGIyZTYxOGRmYjk5NmNkIGxlZ2FjeS10cnVuaworMzUzNDQgN2FiZjQyNDc5ODgwZTVmNTk1YWY2ZWEzZDdiNzI1YmI4OTIxNmJhYSBsZWdhY3ktdHJ1bmsKKzM1MzQ1IDJjNjEyM2Q5MjVmZWU5NmZlZDUwMzdjMmZjYzVlMTQxMzUyZmM0OTYgbGVnYWN5LXRydW5rCiszNTM0NiA1NDY4NWQ5ZmZiODc2YmE0YmY5N2EyZjg4ZmE5MTNiMGNkN2FhNDhkIGxlZ2FjeS10cnVuaworMzUzNDcgNGIyZDZkMTMwMDYxOTk5YTk5ZGFkOGZmY2RmMjAzMjJkYjA0OTM5MyBsZWdhY3ktdHJ1bmsKKzM1MzQ4IDY5YWM2NzJiNDliM2VjN2FlZDMzZGI2ZGY1OGU5NjEyNTg4ZjVlNTkgcmVsZWFzZTIzLW1haW50CiszNTM0OSBjYTNjOTk4YWZhNTU1ZmQzM2RkYzU1MWIwZGQ2NGFmZGEwZDgzZDVjIGxlZ2FjeS10cnVuaworMzUzNTAgYzcyM2IwYzFhN2UxZGI0YWVjYTI4ZTUzYzIwMGY0NGJkNTE1NzZlMCBsZWdhY3ktdHJ1bmsKKzM1MzUxIDI2YTgwZjBhZjlmM2FlNzVhMjJkMDYwNzEwNjY1NmRlMWYzMzdjOWIgbGVnYWN5LXRydW5rCiszNTM1MiBjNjc1M2RiOWM2YWY4ZTJlZDA0ZmIwNjkwOTU3NDI0M2E3YmYzNGY0IGxlZ2FjeS10cnVuaworMzUzNTMgNzA2ZDZkMTFlZTM2MzgxOTNlYTZjYjNlMjkzOWFmOTU2NDU3YjAyZCBsZWdhY3ktdHJ1bmsKKzM1MzU0IDEyMzcxOGQwZGMwOWU0ODg1MzdkYzdiMjJiNTUyZWUxMDRlZmVkYzkgbGVnYWN5LXRydW5rCiszNTM1NSA2NWM1MDJiNjBiNGQxOWMxMjI3MThkMDFhNGM0Y2FkZDAzYjc0YjJlIGxlZ2FjeS10cnVuaworMzUzNTYgYWYyNWNjYzc1ZmVhY2I5ZTY0Yjc2ODI2YTE5Yzc4ZGI4NTk2MmZhYiBsZWdhY3ktdHJ1bmsKKzM1MzU3IDA1ZTFjMjdjMGE3NGQ4MWI1MGM0MjZlNTA5MjZjZDMyOWE3OTMwNmYgbGVnYWN5LXRydW5rCiszNTM1OCBjZDg3ZmY2ZWE4MTQwZWYzZTIxZDdmOTg0NzdiY2E2N2FhNGEyMzIyIGxlZ2FjeS10cnVuaworMzUzNTkgZjFkMGZhNjk4YjczN2I4YzM2MjJhZjUwOWI5ZGE0NjI1YjUxYWEwNiBsZWdhY3ktdHJ1bmsKKzM1MzYwIGQ3ZmYwNTEzN2NlYTNkZjU2NTIzM2IyM2ExMTJhYTk1YjRjYzU0YjQgbGVnYWN5LXRydW5rCiszNTM2MSBmM2NiNGNhZDU4NWU2Njk0OThmNzBjZDIwMWZhZDY3MDEzYWEwNTNkIHJlbGVhc2UyMy1tYWludAorMzUzNjIgMDZkODI0ZjVmMmM5OGZmNTVmYmY4ZDIyMDNkYWRlNTZhM2MzNjkyOSByZWxlYXNlMjMtbWFpbnQKKzM1MzYzIDE1NTUzYTFiN2ExN2ExMDI3NDEwMTRjZjc3MjMwYjQ5MjIxZTY3ZDQgbGVnYWN5LXRydW5rCiszNTM2NCAwNzFlZTBmZjc0Njc4OTY4YzJjYzg4NjUzMDNlOTk0ZjMwZDhiY2Q4IGxlZ2FjeS10cnVuaworMzUzNjUgMmZlZDMzMWRlMDE0YTRjMmNmOWU2NzAzZDkwMWQwYjg3NTY0NTM0NSBsZWdhY3ktdHJ1bmsKKzM1MzY2IGZkMjEwM2FlNmYyOWExZTA2YjNmZjhjZjU0OGFkYjY0ZmNhMmQ0YTIgbGVnYWN5LXRydW5rCiszNTM2NyA4ZWNlZThmNDcxMDhjOGI1YTc1Y2RlZGNkYzJkNzY1ZjA2MWNkZWJkIGxlZ2FjeS10cnVuaworMzUzNjggYWU4ZGJmNTAwMTcyYTFhYzFiOTM1NGIxOGUxOTUwY2NlMTcwYzQyYyBsZWdhY3ktdHJ1bmsKKzM1MzY5IDgwYmQyYjg1ZWQ4YTFlOTk3OWE4ZTY5YTQzZTdlZTY4YmJmNWNkNzkgcmVsZWFzZTIzLW1haW50CiszNTM3MCBkZmRiYzAwNThkODU5MGUyMTg1OWNhMDM2NzY1YWE0ZWJmZDdlZjk2IGxlZ2FjeS10cnVuaworMzUzNzEgMDk3OWZhMDYyZGViZmU3ZDZjNWYwNTRjMjg3Y2JiMmZiYWI0M2VmOCBsZWdhY3ktdHJ1bmsKKzM1MzcyIDI0OGJlYjk5YTMwNGM5M2ViYTQ2NDBkZGE4MjhlMDNiMzBlNDYzMGMgbGVnYWN5LXRydW5rCiszNTM3MyA0NmRmMDhlYjA4MzllOWNmNTZhODBmMDg3MGM5YTYxOTEyN2I1MjBjIGxlZ2FjeS10cnVuaworMzUzNzQgYzJkZjhhNWMzNTdlMDBlNjAxZDNiZTBhYzE0NTA2NTM2ZmRmMzEwYyBsZWdhY3ktdHJ1bmsKKzM1Mzc1IDczOWFiOWRlMmExYmFhZDVmZTExYjg3ODBiM2E2ZWFjYTIxMTJjMjAgbGVnYWN5LXRydW5rCiszNTM3NiA1YjM4OThkOWJhNTk3N2FjNjgwNGJjYmI4Y2YxY2FhYWMwMWJhNTllIGxlZ2FjeS10cnVuaworMzUzNzcgZWJiYTU1ODJkYzBkYjUzNjFmNGI0MmMwMzBlZjRlMjUyNjM4YTFkYiBsZWdhY3ktdHJ1bmsKKzM1Mzc4IGJjMDA2NjgyYWNiMjFhMWUxZWRjZTFjMDEyOGY1YzUwNWE4ZDEzZDcgbGVnYWN5LXRydW5rCiszNTM3OSA4ZjYwMjE3YTc1NDc1OTlkYTIwYTVmMjQwZWE3YzNmNWI1MTVjZDhlIGxlZ2FjeS10cnVuaworMzUzODAgNDc4OTBjMzk1ZWJhYTIwZTRiZTFjYjdmNzU0YzRmYjRjYmNiZjQ1YyBsZWdhY3ktdHJ1bmsKKzM1MzgxIDYzNWVlYmM0NzNiMDY1Yzc1NGM4ZmNlNDNkN2EzMjM2YTQzMDExZTUgbGVnYWN5LXRydW5rCiszNTM4MiA3MDgwYTAyMTBjZjE4N2YyMDljMjMzM2IzNmM1ODkzYjNhMDU0MTYxIGxlZ2FjeS10cnVuaworMzUzODMgZDM0ZTdlYWY0Y2Q2YTc0N2U4MzZmZWQ2MWNhOTBhYWU2OGMwM2M1ZiBsZWdhY3ktdHJ1bmsKKzM1Mzg0IGI3OTU0MzNlMGJkOTE5NDFkOGQ3YzBhOTE2YWQxMWI5M2EzZWQ5YzkgbGVnYWN5LXRydW5rCiszNTM4NSAxYjAyYzc3Y2RjZmUxMzVjMGMzMjc4MjRmZjg5ZmNlMjI5YzYxMjhiIGxlZ2FjeS10cnVuaworMzUzODYgMTU0M2FmYWIxYjY3MmIxMjQ3YjFiZTg2MDViMTg3NDdhMTlkOTJjNyBsZWdhY3ktdHJ1bmsKKzM1Mzg3IDdlNGRkOTNmNGIyNzEzMTI2NjA2MTk0MGE0YTg4OGQ0ZDFlYTRkMzYgbGVnYWN5LXRydW5rCiszNTM4OCA3MmUzOGJkOTRlNTY5OGY2ZTMwOWFmMzIwMjA5ZjIzOWQzNzkxMzBjIGxlZ2FjeS10cnVuaworMzUzODkgMzE1NzdjMjgxNWRlNTFkOTdhMjg0NmVmNzQ5MzFkZjU3OGFlNWIzNSBsZWdhY3ktdHJ1bmsKKzM1MzkwIGI0ZTRkYmQyNGZlNzdmYzRlMmViNmE4YTZjZjJjMDk4YzkwZjU3MzQgbGVnYWN5LXRydW5rCiszNTM5MSAyMjhkMjY0YzVmYmJkOWQ4YWIxNTM2NDU3ZmEyODlkYmQyY2Q3NzlhIGxlZ2FjeS10cnVuaworMzUzOTIgZGQ2OWUzZjUyMjViYWZlNTA4OTgxYWMyZGQ2ZGYxYjllZjVmMmFhMSBsZWdhY3ktdHJ1bmsKKzM1MzkzIDViZDQ1NTYzOGM3YThhNDlkNGRmMzI5YThhMmM0YTE3MzkwZjMwYmQgbGVnYWN5LXRydW5rCiszNTM5NCBlYzZiYTAzYmE5NjI3ZGViOGYzNDZhMDY0YzAxY2M0ZmM3ZWY4ZjgyIGxlZ2FjeS10cnVuaworMzUzOTUgMDRlYjJlYmI0NmUyN2ExZjI2ZmI4NzcwNWVmOWE4NDdkOWY5MDI2MiBsZWdhY3ktdHJ1bmsKKzM1Mzk2IDk1YmZiNjUzZmZmYmEwMTIwODlhMjNlZDRhOGYzNTllOTY4OTJjNjcgbGVnYWN5LXRydW5rCiszNTM5NyAxMjUzZjZlMjBjZGVlMDViNGQ2ZDc3ZjUyYzc3ODk0OGI4MWNkYzZhIGxlZ2FjeS10cnVuaworMzUzOTggMGQ1M2VjZjIyZDkxNTIzZGE1MDM2NGZjM2JlMzFlM2E2ZTg2NGZhNiBsZWdhY3ktdHJ1bmsKKzM1Mzk5IDA0NzE0ODA4OWMzNWQ1OWU3YWNiYWZiYzUxYWY3MzI4Yzc3MTljYjggbGVnYWN5LXRydW5rCiszNTQwMCA0MmY4ODIwNjg2YzllYmE3ZDk5YTkwZGI4NDNiMGQxYmEwYTg0MDAwIGxlZ2FjeS10cnVuaworMzU0MDEgZWVhNjc0YmY3YjU5YTg2YWUyMTU5NmY4OTkzMzU5MjNkNGY0ZDRmOCBsZWdhY3ktdHJ1bmsKKzM1NDAyIDMwZTMwNWJmZGRkYmRjNDg4ZDc3NTFiY2U1NjFmOGFkMDY1MmZhNDQgbGVnYWN5LXRydW5rCiszNTQwMyBhMGZiMjdiNDRkNzgzODNhMzhiZmY3YjIyZjIwMzhjNWJjYjU3MzlmIGxlZ2FjeS10cnVuaworMzU0MDQgZGYwNjQ3OWM2ZTdjZDExZDJkNDcxN2Q2ZmM2MGIzYmRhMWQwMzFlNSBsZWdhY3ktdHJ1bmsKKzM1NDA1IDU3NjBiNGRkM2EyMjRlNDc3ZTFmMWFlNTZhNWZmYzU0NjkzYmYwM2EgbGVnYWN5LXRydW5rCiszNTQwNiA4M2IwMzgyZTBkMzYyNWFhOWQ3NGIwNzQ2Mzk3NGJlZWExNWM4MTEyIGxlZ2FjeS10cnVuaworMzU0MDcgZDEwYzc3OGFmMTY3YTBmM2NlZjVmZTA1NGQzNzhhMDIwNzMwNjRhYyBsZWdhY3ktdHJ1bmsKKzM1NDA4IDc2OTQ0MDg0ZTc1NmExNmI4ZDU4MWM5MDRlMTY0ZmY4Zjg2ZTQ1ZjkgbGVnYWN5LXRydW5rCiszNTQwOSAyNDM2NDJiYmQwM2YzNWU0NWUxYzZhOGUzOTc0ZWQzMTM0MDcxMWNiIGxlZ2FjeS10cnVuaworMzU0MTAgYmU3ODJkMDdjNTE4ZDI4YjI1ODE2ZmE4NDA2YWJkZGViNTE5NGUyYSBsZWdhY3ktdHJ1bmsKKzM1NDExIDM1Y2I4MTE0YjQ1YzI1YjBlOTNhMjI0MGM3OTQyZjY0M2FiZjBmNDIgbGVnYWN5LXRydW5rCiszNTQxMiBlZjA2YzIxMjRjYjA2ZTFmNTA5M2Q1M2NkY2QzNzYwZmE3MjVlOWM1IGxlZ2FjeS10cnVuaworMzU0MTMgZjI2MDA0NDhlODVjOTUwNjU3N2M2MDc1YjAwOTIxYThmOTJkYWZkMSByZWxlYXNlMjMtbWFpbnQKKzM1NDE0IDdmZmZkYjk0YTE3MmRhNDVkMjFjMWU2ZDZmOGY1ODI1OTA1YjA2ZGMgbGVnYWN5LXRydW5rCiszNTQxNSBmMjZkODI4NmE0M2U5ZTQ1YzRmZjBhOTIwZmY5NzAzNGFlYmEyZjE1IGxlZ2FjeS10cnVuaworMzU0MTYgMDM2OTNhZjQ2YWZiY2ViZTY2ZTg5OTA5ZjY5MGE2MDQ3ZTNmNTdkMiBsZWdhY3ktdHJ1bmsKKzM1NDE3IDI2Y2YyNTg2ZjJmZDI5OWUyMDc2OWQwODRlMzQ4YWM1NDdhMGExNjYgbGVnYWN5LXRydW5rCiszNTQxOCBiODk5MmU3ODE4NDBhMDg1YTM0MmM1MDUxMzI4ZmE2ODVkZjUwNDdhIGxlZ2FjeS10cnVuaworMzU0MTkgMjA2ZDg1NzVmNjQ0MTlmYTY2ZDM5NmExOGIzOTYxNzU5YmYxYzI0NyBsZWdhY3ktdHJ1bmsKKzM1NDIwIDM1ZjU2ZTA4NzI3Zjk1OTUzM2M5NmI1M2NjYzA1NGY5MDAzMmQyOWMgbGVnYWN5LXRydW5rCiszNTQyMSAxNTJhZGFmNzY1ZWIyZjA1ZjA1MjE4OTAzYWU2ODIxZDRmMzJiOGY1IGxlZ2FjeS10cnVuaworMzU0MjIgODhlOWMwNDQ0ZDRkZGE3ZWM3ODYzYjI3MmM1ODcwOGRiNzZhYjdhYyBsZWdhY3ktdHJ1bmsKKzM1NDIzIDNmNjkzYTc3MjY5NGUyMzExOTcwOGY4NGRlODQyNjg4NzhjYWJmOWEgbGVnYWN5LXRydW5rCiszNTQyNCBiYTk4OTk2YjRkNTBhODFjYmI2MGU1OWVjZWIxNTg0OGQ5ZTViYzdiIGxlZ2FjeS10cnVuaworMzU0MjUgOWE0YzQ5YzVhYzAzY2E4YjBlZDE3MTFlNDE1YjJlM2RiNTE4OTkyZCBsZWdhY3ktdHJ1bmsKKzM1NDI2IGFlNjAzN2EzYWRjZTk5NTU2YzUyMDM1ZWRkZWM4ZWZkOGM3ZWNkYWIgbGVnYWN5LXRydW5rCiszNTQyNyBhMzgzMGFlMjk0YWU2ODNkYjIxYzQxYTQ3ZmU3NDg0ZGM1NGQyNmMwIHJlbGVhc2UyMy1tYWludAorMzU0MjggYWU2ZmRhOTYwZDM5YmMzMDQ5ZGEwNTQwMjliMjlkMWVjZDQ3MDAyZSBsZWdhY3ktdHJ1bmsKKzM1NDI5IDYwNmYwNDczYTk2Njg3ZjQ4OWY1ZmMzYzM4MDIxNDk1MzQ0ZTQxNjMgbGVnYWN5LXRydW5rCiszNTQzMCA2YmNjYTQ3OTE4NDk5YjVkZWYxMDg4NGJjOGMxYWFjZTQxNWJhNDJhIGxlZ2FjeS10cnVuaworMzU0MzEgMDhjM2I0OTA1OTYxZGY2MDMyZGI2NDRkN2E5MTM1ODIzMDc3N2I0OSBsZWdhY3ktdHJ1bmsKKzM1NDMyIGE2YmNmNGRmMWE4NTc2ZGJhOWRkZWQ1N2U1ZTkwMWExNTQ3ZTY5ODUgcmVsZWFzZTIzLW1haW50CiszNTQzMyA1MzBhMGRlMzUxN2FhZjBlOTgzNzgzZTlhNzVhYjU5MTkxNWY0NTI4IGxlZ2FjeS10cnVuaworMzU0MzQgMjgzMGQ4ZTFhZjE4NWE1OWRjOTIzNTg4MWJmNjlhZmEyNDUwMGJkZCBsZWdhY3ktdHJ1bmsKKzM1NDM1IGY3Mzc0ZTNiMjc5YTg4YzczMjIxZjAwZGM5OTQ1ZGIxMGJkYzc3N2UgbGVnYWN5LXRydW5rCiszNTQzNiAyYmZjODg2NmVhOTkzODY4ZWMyMjlmNzE0YjUxNDNiNDQwZWZkMTkzIGxlZ2FjeS10cnVuaworMzU0MzcgN2JiMDMwMDY2ZWE0YjY1MDk3MzExNGVlZGU4YTQ4ZGM2NjY1MzBkMCBsZWdhY3ktdHJ1bmsKKzM1NDM4IGMwYTU0MmExZmMxYzhiOWI3YmNhMGFlNjVkNTA3NzE3NGEyYTljZTggbGVnYWN5LXRydW5rCiszNTQzOSBkYTc4Yjk2YjZhYWJlYjAzZTU4ZjlhYzIzNWY5YWI2MGEzODg3ZTg3IGxlZ2FjeS10cnVuaworMzU0NDAgYmIzYmNjYjNiNzdkNWFhMDAwZjUxMTYyOGMzNmE1MjdhYTcwODIzYiBsZWdhY3ktdHJ1bmsKKzM1NDQxIGNlODNhYjA3ZWEwNzMwODg2NGY2MWQ5ZGMwZjhmM2QzZTNmM2Q5MmIgbGVnYWN5LXRydW5rCiszNTQ0MiA2Yjc1MDYwNDY0ZjQ0NjI3Zjc3ZDk4NTllZTk1NzkzYWNhNjY2YjhkIGxlZ2FjeS10cnVuaworMzU0NDMgYzMyMzgxZjRkYzZmMmU1NDQ3ZDU2ZGIyZDBiMzUzNDdjM2M5ZDk0ZSBsZWdhY3ktdHJ1bmsKKzM1NDQ0IDAxNmYwMDZkNzFjYzNmYmMwZmU0ZWZlMzkzZDY1OTg5YTYxOWUwYzEgbGVnYWN5LXRydW5rCiszNTQ0NSBhYWZlNWZlZjU4YmFiN2MxMjNiM2RkOTc2OTQ3MWJmNzk3NzlkNTMyIGxlZ2FjeS10cnVuaworMzU0NDYgODIzMjc5YWU0M2ViMTBhZjk2ZjA0NDVkOWZkZmRlZTU2MDc3MTBjNiBsZWdhY3ktdHJ1bmsKKzM1NDQ3IGE4ODVlNGQ2NGFkMGI4OTk0NzIwOTIxOWY3YTA0OTlhOTI2Nzk3MjMgbGVnYWN5LXRydW5rCiszNTQ0OCBjZTcwZjE0NDZmMzk5ZTEyZTcyMmI5OGEwMjI3ZTk3M2U3NWEwN2FkIGxlZ2FjeS10cnVuaworMzU0NDkgMGZiNTA2NmZjMmE3ZmQ0NjhmMGU1YjVhOTcwOGVmMTcxMjgwZjQ3ZCBsZWdhY3ktdHJ1bmsKKzM1NDUwIDEyYmYzN2E1ODAxNWFmOTM2OWI4OWE3N2JkY2IzNGUyMjc1NjkyYTYgbGVnYWN5LXRydW5rCiszNTQ1MSA1ZThjNmYzOGUxNWI1YWNlMTVjYTU3OTcwMGQxZjhhYTRhN2ZjZDFhIGxlZ2FjeS10cnVuaworMzU0NTIgZjdiZmQ4ZjkxYzJiOTBjNzQyMzFjZmMyZDM1M2YwYjEyZTRlZTcwMCByZWxlYXNlMjMtbWFpbnQKKzM1NDUzIDZkOGExNDE0ODE1OWIxYmQ2MmEyMjE2M2I3NjIxYjMwMTY1NDM0OTIgbGVnYWN5LXRydW5rCiszNTQ1NCBhZDVjNjA4NTAyM2UyNDkzMTM5ZTE2YzEwMWQ5YTM3YTQ3M2Q4MmJhIGxlZ2FjeS10cnVuaworMzU0NTUgMzMyZDNmZmFkZjI4N2ViMjRhNGVjZmNjZDEwOTIxOGM0N2YwNWQ2MCBsZWdhY3ktdHJ1bmsKKzM1NDU2IDUwNzQyMmVhYTc2MzU5M2U3Yjk1OTkwY2M4ZTM4MGUxZDdjOWMzYjIgbGVnYWN5LXRydW5rCiszNTQ1NyA5MmQ0MDIyMDllOTBmOTc3ZWYzNWI4ZjI3Y2UyOTQ3ZjAzNTJkZTAyIHJlbGVhc2UyMy1tYWludAorMzU0NTggZDA4NzcyNjQxN2VhOGExM2VkNTM5ZTVjNDFhN2YxZTIyMmYxYTYzNCBhc3QtYnJhbmNoCiszNTQ1OSAwM2IwZmQxY2Q3MjI1ODRhYWI3YjZkOTY5ZGY3MjZlNGQzNjBiY2U4IGxlZ2FjeS10cnVuaworMzU0NjAgNmJmODc5ODVhYTFlOThlMGE4NGUxYjc2NWVlZGNlNGNhNjhiMjc0OSBsZWdhY3ktdHJ1bmsKKzM1NDYxIDVlNjNjMmU5Yjc5MjUzMTM3MDIyYWRhZGEyNjgzZTU0YTk3MGY2MTkgYXN0LWJyYW5jaAorMzU0NjIgY2ViNmFhZGRhYmNjNWQ5YTZmNDFkYmM1YjJmMWFjNzY5YjJiOGVkYyBsZWdhY3ktdHJ1bmsKKzM1NDYzIDViMjI0N2I5NTMyM2MzMjdkNTBiM2FhODRmYjc2MmZkOGFlNWNmMTggcmVsZWFzZTIzLW1haW50CiszNTQ2NCAzNmEyZDBlOGE5OTMzNTA0OWQyNjI5NzNhYzMxY2IyYTMyMDQ3ZDUxIGxlZ2FjeS10cnVuaworMzU0NjUgOTNmYjQwODFkMTA3ZmI0ZTk5YjUyNTgyMTgzY2ZiMjYxOWQ3ZDUyZSBhc3QtYnJhbmNoCiszNTQ2NiBmZmFlMmYxZmRkNDZjOGM2ZDE4OTllMTNjNWU5M2I1NzYzNTIyNmVhIGxlZ2FjeS10cnVuaworMzU0NjcgNDkwZWI2NGJjNWM5N2JiNWIwOGE2MmFmZDNiNTU3YjMyZGE4ZmQ1NyBsZWdhY3ktdHJ1bmsKKzM1NDY4IDE3OWUwNDMwN2VjZDNkYThhZjIxZTQxMjIzZjhiMGRiMzFiMmU3MTUgbGVnYWN5LXRydW5rCiszNTQ2OSBjZWFhZGJkN2YxOWE3ZTI2ZjQ1ZWE4NTFiMTdiMmU1NjkxY2VlMzZiIGxlZ2FjeS10cnVuaworMzU0NzAgZDk0OGRlZTZmNGExYmVkOWJlMTk1ODU4OThlMzE5YjFkM2Q2N2UwOCBsZWdhY3ktdHJ1bmsKKzM1NDcxIDBiMDA4NmQ1M2I4ZTg3OTU3NjE2YzQ5YWIwNDY4MTVlZjNmY2NiMjcgbGVnYWN5LXRydW5rCiszNTQ3MiBjNGViZjdjYTFiZGQwMWZkZDZmNTBhNTBmMzQzNWNhMmFiOWUzZTQ3IHJlbGVhc2UyMy1tYWludAorMzU0NzMgNjViMGM3YjU2MWRhZjQyZjY3Y2YxNTQ1OTc2Njg0OTViOTIwZDdmNCByZWxlYXNlMjMtbWFpbnQKKzM1NDc0IDUyYmExYTIyY2MyZTFiMGY4MjIyOWVlNTRkZjhjOGJkY2Y0NTQ4MzkgYXN0LWJyYW5jaAorMzU0NzUgY2Q0NzY2YjA2MzdlYTFkMjJiMmY2YjA1MWY4NjIxNmI5YWJhYzU0MCBsZWdhY3ktdHJ1bmsKKzM1NDc2IGQ2M2M1NjJlYmJlNTc0MmQzOTE2Y2M3ZmExMGRjMTRkZmUyMTc3ZDggbGVnYWN5LXRydW5rCiszNTQ3NyA5MTI2MGZiM2M4MTQ3NjM3NzFlYWZmNDRiYzdmODA5NzIzNzdhMTZkIGxlZ2FjeS10cnVuaworMzU0NzggY2M3YTlmZTgwYjFiNzU2MGY3NzY4ZjVjMzZlMWRlNjY4NDI1ZDRkMyBsZWdhY3ktdHJ1bmsKKzM1NDc5IDgyMGJiODE4ZDY5ODRjNTliNmIyN2MyYjM4NTA3NmFjYmRiNzg2MmIgbGVnYWN5LXRydW5rCiszNTQ4MCA2NjBmYzI0MmE3NjY5YjA2YmNlZWM4Mzg3MWE2YzljYjIwNDRmZTE2IHJlbGVhc2UyMy1tYWludAorMzU0ODEgZmQyNmYyOWU3ZWFiOGYyZmUxYTQxZDU3Yjk2ZWVhMGU5ZjY3ZjBmMSBsZWdhY3ktdHJ1bmsKKzM1NDgyIDA0MjBkM2NmZTRhNGFhZmRjMTNkOGZiYWQzZjUzODlhZTE0YTQ3MmEgbGVnYWN5LXRydW5rCiszNTQ4MyA4ZWE0NWNmZTE3ZmM2MDM4ZmJkMGFmYjI0M2VmZWUxMTcyOGU1ZGJiIHJlbGVhc2UyMy1tYWludAorMzU0ODQgYzgzNzk1MzI0MDQyNzQyYzYzY2ZjZDM4OGM0NjJiZTIwMzI2ZjYxMiBsZWdhY3ktdHJ1bmsKKzM1NDg1IGZhZmZkOTU3MmQ4ZDMyMzlhMDI1MThmNjUzMzU1MjYwZmVlNWMzYjQgcmVsZWFzZTIzLW1haW50CiszNTQ4NiBjNzU4NzY0MzJmYzZiNWFiNmRmMTEzNjA3YWViNjM1ZTI1OWE2ZmVlIGFzdC1icmFuY2gKKzM1NDg3IDI4NDY2OTQwOWJlYjQ2YWJkMWM1YWRiZDM2OTU3MzI4YzgzMzk1OTUgcmVsZWFzZTIzLW1haW50CiszNTQ4OCBkNjlmYjM1ZjFlYWVhNDM4YTc1Y2Q4MmNhOTc4ZWI2ZDk0MGQyMGQ0IGxlZ2FjeS10cnVuaworMzU0ODkgN2E0MzRmNDkzYzNlYThiODllZGM5NGUzY2U2MWJhZmJlZjgwOGYxNCBsZWdhY3ktdHJ1bmsKKzM1NDkwIDYzODY1NjExZWQyZmUzNTI0NTAyY2YwNTdiOGRhZDM2ZjI4MzZiNTcgcmVsZWFzZTIzLW1haW50CiszNTQ5MSAyNmQwZmQwM2Q1YjMwZWRhZjY5MTNhY2ExOTJiOTYxZDZkNDQyMDYxIGxlZ2FjeS10cnVuaworMzU0OTIgYzRkOWE5NmJlMmRkY2E0NTM1YjQzN2U5NzEzZmVlZGQ0MzFhZTUwMiBsZWdhY3ktdHJ1bmsKKzM1NDkzIDY1MDkzNTRlNzg3NjlkYjlhMmE3NmUzMzdlOTY2NGM4N2U3ODFlYTAgbGVnYWN5LXRydW5rCiszNTQ5NCAxZWMzZDY5ODRiMGYxMDg3NzYyOGUyZGE3NjJhNjM4YTgxODkzYTJlIGxlZ2FjeS10cnVuaworMzU0OTUgYjk2NzYyN2EyZjRmZTljOWFkNTRmYmQwNDA2YjAzMzI3OGVhMzAzNyBsZWdhY3ktdHJ1bmsKKzM1NDk2IGNlNjhkN2MwNjI5Y2MzODE2NzBlYWJhMTc2YWZkZWU5ZTVjODhmYmUgbGVnYWN5LXRydW5rCiszNTQ5NyBlODMxMjQwMmM4MTNkOGU4ZDMwODIxNmJlZmE5OTlkODZlNDczYTNjIGxlZ2FjeS10cnVuaworMzU0OTggYzAyMzUwMWMzOGQ3ODNlOWEzNDBlZmIzYTdjOTIwNjE3MTBhNGNmZSBsZWdhY3ktdHJ1bmsKKzM1NDk5IDkyMGFkNDQ2NWFhZWE1YTM1NDE1ZmJhZjlmYjc5ZjkzMmM3ZGYyMGYgYXN0LWJyYW5jaAorMzU1MDAgZDg5ODIzMmRjZGRiYmE4MDU4MjJmYmQzY2QwMTQwODM3N2M4MTZmNCBsZWdhY3ktdHJ1bmsKKzM1NTAxIGVlMGJhMDBiMjc3Y2RkMjM4NTkzNWM2NmFhZjIwZjRkOGM0M2VkNzQgbGVnYWN5LXRydW5rCiszNTUwMiA2ZmNiZjZhYzY5OWE4OTAyOTY4OWExNzhlMGFjZTMzYzUyMjViMGI5IGxlZ2FjeS10cnVuaworMzU1MDMgNTc5NjViMmRiMjBjNmRhZDljOTc5MDYyOGYzZTY5ZTc3NDk4MDM5ZSBsZWdhY3ktdHJ1bmsKKzM1NTA0IDA3YTJiNGM1ZDUwMzQxNzcyZmJjMmFlZTVlM2MyODg2ZjgyOTQxMzIgYXN0LWJyYW5jaAorMzU1MDUgZGJhOGRiNDEyZTM1NDk5NmIxODM4NTBkYzM1ZTY4NDJhYjIxNWU4MCBsZWdhY3ktdHJ1bmsKKzM1NTA2IDQ5ZWMwZDhmMDhlY2QzZjcwNTc0MWUyMTBiZmZmYjEwZWVlN2EzOGMgbGVnYWN5LXRydW5rCiszNTUwNyBhZTAwZDJkMTI3ZDFkMGE3ZDc5NWU2YjQ5Y2UyZDkyOTZlN2YxYzVkIGxlZ2FjeS10cnVuaworMzU1MDggMWY4MDZjYmUyY2UwNDgxYzc3ZWFhMzU4M2I4OGIyN2QzZDQzMWZkOCByZWxlYXNlMjMtYnJhbmNoCiszNTUwOSA0ZWI0NThjMzk0MWQ1ZTg1ZTczMzUwNmZlMTJkMTdlM2I3MTQxMTliIGxlZ2FjeS10cnVuaworMzU1MTAgMzEwMWMwMGY3NTQ3ZjAxZWNlNDlhZDRlMjg4MWFhY2IwOWU3YTQwOSBhc3QtYnJhbmNoCiszNTUxMSBjMDYxZjI1Zjc0ZTBjZGViYTdmMjZlYmY3MDUzNTk5ZWI5YWI3YWIwIGxlZ2FjeS10cnVuaworMzU1MTIgOTA3NDUwZTRiYzY3NTdkYTFhNGE3YmQ4ODQ0NmNmYTYyYWZlYTZjMCBsZWdhY3ktdHJ1bmsKKzM1NTEzIDM0NzVlNDU2ODQ3MTA5NTg4ODdhYjgzNGE2ZTdjZjAxNGRhYTdiMjMgbGVnYWN5LXRydW5rCiszNTUxNCA4YmYxNjNkMDZkMjlhZjhhZWU5Y2ZhZTc1N2ZjZWJmZDJiYjQ0ZWRkIGxlZ2FjeS10cnVuaworMzU1MTUgN2I2YzgyMjk3OTliYWU5YmYxYmJiYTZiYzU1ODViY2NiNjlhZDRhMSBhc3QtYnJhbmNoCiszNTUxNiA2NzFhZGVlNmEzZTNiMTFkZDdlY2EyYjRmODZkM2M5NzkwY2JlMTNkIGxlZ2FjeS10cnVuaworMzU1MTcgZjU0Y2RiMDFhMWFkNWRmNDRmMDlhZDE4OTMzMTNlZmQ2ZmI5ZDFmMyBhc3QtYnJhbmNoCiszNTUxOCAxNGY4YzkzM2Y4OGMwOTljMDA2OTY2MTE4ZjdiOTIyNGExZTJhNGY3IGxlZ2FjeS10cnVuaworMzU1MTkgZmU1NTQxYWFlMmQ4Zjg3NGY3MTNjYjc2MjMzNzgxYTlmNGU2NDM1YyBsZWdhY3ktdHJ1bmsKKzM1NTIwIDFkM2U0OGNjYWQ1NzNhNTQxYzMxZTNkNzliYjQyMzY1YTcwNTc3MmQgbGVnYWN5LXRydW5rCiszNTUyMSA0NTE0NGNkYjc3OTRhNGE2NWM5N2EzNjM4MzFiN2Q4NDQwM2ZlN2RjIHJlbGVhc2UyMy1tYWludAorMzU1MjIgZWYxODA4NTZkZjc2MTkxOGZkOGJkZGYwY2M3Y2Y2MDU3ZTgxNGE0YiBsZWdhY3ktdHJ1bmsKKzM1NTIzIGMyYjAxYWE0OTBlMTQ3YjViNzNjYmNiOGNkMzgyMTY2M2I4ZTQyOGUgbGVnYWN5LXRydW5rCiszNTUyNCAyZWIzMTc1ZmM1OWI3MmYyY2U5YWNjY2U2ZmM4OGU4ZThkYjdjMjk3IGxlZ2FjeS10cnVuaworMzU1MjUgOGE3MTRmZWNkMDU5YmRkODM3ZDg3YTYzODVmOTBkMjMwZjQxZTc1NiBsZWdhY3ktdHJ1bmsKKzM1NTI2IGE1YmQ4YjRmM2U1NWYxMzI5NTM2NjE4YTUwZjY3MTBlNzY5YWJmMDggYXN0LWJyYW5jaAorMzU1MjcgNTU1ZGM4NDYyMjZkZDI4NjEzMjI1NjlkYjY5NGI5YmI0ZWUwY2M5ZiBhc3QtYnJhbmNoCiszNTUyOCBiMzlmZGM5YzgwN2U2NWIzMjg5Mzc0MzcwN2E2ZDkzNDc1ZmFmNzFmIGxlZ2FjeS10cnVuaworMzU1MjkgMTQwNzQ4NDgzNjEyMGI1MzM0ZmY4MWQwMDEyZGNlYzczZDliYWFlNyBhc3QtYnJhbmNoCiszNTUzMCBhNzM3ZjdhMGYyYjhiYWRhNGQzOGYwYjc4MjFkMTY4ZjcwYjI3MGRlIGxlZ2FjeS10cnVuaworMzU1MzEgMTZiZjQ4NGIzODY0OTQ3NDgzMWU2MGRiNmNjZDVhMzMzMTc4NWYyNCBsZWdhY3ktdHJ1bmsKKzM1NTMyIDNlNDllYjMyNDcwYmI3ODdhYWNkNGNiNmFkNWUxNDQxNGM1YzA3NzIgbGVnYWN5LXRydW5rCiszNTUzMyBiZTVkMmEwN2JjMjY5YmFkYjE0YTdjN2Y0NmNiNzUwNTZlZTFiNWE3IGxlZ2FjeS10cnVuaworMzU1MzQgOTUzNmIyOTdkODNjMmQ3OGU4ZDYzMTQ2Mzg3OWIwNGFkNDI3MTAwNCBsZWdhY3ktdHJ1bmsKKzM1NTM1IGY0YTRhYzczMzFlYzkxZTg0ZDhmZDRlOWI2NjNmODU0NzFlMDI1ZmQgbGVnYWN5LXRydW5rCiszNTUzNiA2NDI2YjM3YmIyYTBmZGE4MjMyZTdjNmMxYTRlMDZjYWVlMDFiMWJlIGxlZ2FjeS10cnVuaworMzU1MzcgMzQ3M2RlYTNhYTRjMDUwODc3N2E2NzliMzhhY2M0MzQzZWY5YzI4ZSBsZWdhY3ktdHJ1bmsKKzM1NTM4IDVlOTE2ZDQ2YTNmYjY5MjYyMDNkMmQxZTE5NTA3N2ZkZmE4ZWQ4YjQgbGVnYWN5LXRydW5rCiszNTUzOSAyNGUwNzBlOTViZjhhMWQxNTM3M2U0MmQ0NWUzNmU4ZWZlODU3ZDQ0IGxlZ2FjeS10cnVuaworMzU1NDAgNzVhOTFmZDhiNTBjZmIwNjgxY2Q0ZTNmMDI0OGZmYmU1MTFkMzE5MiBsZWdhY3ktdHJ1bmsKKzM1NTQxIDEyMDE5MjUxNjAzMzkyYzMwM2E4NGFkM2Q0NDM5M2YyZDQ5MWI5YTUgbGVnYWN5LXRydW5rCiszNTU0MiA5ODE3ZGVlNWQ5ZGYwODVjNDJjMWM2YWM2ODAwYzQwOTliZmNmOGM3IGxlZ2FjeS10cnVuaworMzU1NDMgN2Y0NjRkZDY4MGFhYzA4ZTRhZGJiN2VhMmNiZjc1YTczOGQ4ZjI5ZiBsZWdhY3ktdHJ1bmsKKzM1NTQ0IGVmNTkxZTdjMzRmZDhlMDlmNTVmZGRkYWVmZWY2MWU4YjhiMWVhY2MgbGVnYWN5LXRydW5rCiszNTU0NSA3NjA1M2ExZGQ0NTI0NGRjMWFhOGQzNmRlMmM3OGI5M2ZhZjcxYTA5IGxlZ2FjeS10cnVuaworMzU1NDYgZmI1NTdhYzViYjlhMjViMTQ1NWE5OWEwM2Y1MDA2MDkwMDZkMjk5ZSByZWxlYXNlMjMtbWFpbnQKKzM1NTQ3IDlkODRjZWQ2NGQxMGM5YWU2OGVlNTZlZDQ0MzlmM2I4MGIwZjI0YWIgcmVsZWFzZTIzLW1haW50CiszNTU0OCAxNjRjZTFiY2FiNmUxZTMyMGZiYWYwMWNhZDhhNTBkNzI5ZmU5ZjMwIHJlbGVhc2UyMy1tYWludAorMzU1NDkgMzNkNDhkZjlhOTM3ODM0NTQ3NzhhY2Q5ZGU0ZTA2ZTVhMjVmYzM1YiBsZWdhY3ktdHJ1bmsKKzM1NTUwIDI5YmU3MjliMzJjM2ZlOTQxNjc5YWRkZDcyNTNmMjJkMTNkZTZjZDAgbGVnYWN5LXRydW5rCiszNTU1MSBjYzQ3YzFlYWY4MGFiNzIzOTA5ZWY0NmFlMzE3N2EzNTIxZWE3OThhIGxlZ2FjeS10cnVuaworMzU1NTIgYzRiYWUwODliZmM4ZjExNWJhOTNiNTRlNThhNDRiY2IyZjM2NjNmMyBsZWdhY3ktdHJ1bmsKKzM1NTUzIGVjMzdjYjFjMGVkODg4N2NlNGM3YmVhMWY5ODcxOTI2YzdjMjhlZjkgcmVsZWFzZTIzLW1haW50CiszNTU1NCBkNDQ4Y2MyNjFmNjlmNGIwODI3NWVjMGRlNzA5ZWQwZDJlZGYwN2JlIGxlZ2FjeS10cnVuaworMzU1NTUgY2UxZTBiNDk0Y2E3MDI0YzI3Mzg4OWFmMzI2NzUwZDA1YTk5MjZhNyBsZWdhY3ktdHJ1bmsKKzM1NTU2IDZhMTUwNTYxMzM1ODRiZWUzNThkNmEzNTE0NzAxYTRiNzJjZjdlNWEgbGVnYWN5LXRydW5rCiszNTU1NyAyM2U1Y2MzNGE5ODEyZTQzNGNkMDMwM2NjN2I4ZDg4OTQxZWU5YmYxIGxlZ2FjeS10cnVuaworMzU1NTggODM1YjY5MGQ3ZWQzYTUwNzJkOWU0ZjViNTRmMDE0NGUxMTVkYTk4NSBsZWdhY3ktdHJ1bmsKKzM1NTU5IGRjNWJkODQyMmQ1MjZhY2JiZDI3ZWEzODE0MjYyMjE1ZDBmNTNkMjcgbGVnYWN5LXRydW5rCiszNTU2MCBhNGVhZWVkNDA5OGI0ZDgzMDY2MjBhYjg2ZmRhNDZkOTc0ZjhhMWY2IGxlZ2FjeS10cnVuaworMzU1NjEgZmU5NDMzNWYzOGUyNDk3NGQxNzc5YjUyMDM2MGRkMmIwZWYwMzdiZiBsZWdhY3ktdHJ1bmsKKzM1NTYyIDIwMjRiNGU2ZTM4ZGE4MzUyNTkxYjliZTE2ZmE4M2RmNzA2YzMxYjUgbGVnYWN5LXRydW5rCiszNTU2MyBiZWZiMWVhNmM4OGViMmJkODEwMmJiMTk5NTY1MDNkYzE2ODg3YmM1IGxlZ2FjeS10cnVuaworMzU1NjQgMjlkYThiZGZlYjRlMzE5MmIzYjlhNTk1YTQ3NDYxZTE0MzlmNGExMSBsZWdhY3ktdHJ1bmsKKzM1NTY1IDg1ODY5N2RiMWU0YmVkYzdmZjA4ZDYyNDJhNTE0MmIwZTEzMmVhZmUgbGVnYWN5LXRydW5rCiszNTU2NiA1MmMxNzIyODlhZGQxYTNhMzg3MTBkMjQwMTBiZjgyMTI0MjYyNmY2IGxlZ2FjeS10cnVuaworMzU1NjcgNGNlMDk4ZjAwNWYwMDJmN2M0M2JhYjBmZmNhNjJkOWY2YTczNDkwMyByZWxlYXNlMjMtbWFpbnQKKzM1NTY4IGYxZDQ0Mjk1ZWJmN2Q5ZTkxNTU4ZTdiYzlkNTUwOGQxYTY1ZTUzNGQgbGVnYWN5LXRydW5rCiszNTU2OSBiZjM3NDI5ZjZkOWYwNTEzY2IyNWYzZjEwYWM5MzAxOTEwOTllOGNlIGxlZ2FjeS10cnVuaworMzU1NzAgMWMxMTdkYmIyZGVmNGY5M2E2MGI5MzJiNzE1Nzk4NTNlNGU3MTg5YyBsZWdhY3ktdHJ1bmsKKzM1NTcxIDg0NmIzZWU3ZTEwNmYxMjJmOGQ3ZTNjMTc4NjdhYjkzYzg1NDAwZDQgbGVnYWN5LXRydW5rCiszNTU3MiBjNzY2MDZmMzcyZDEzNGI5N2NiZjc1Y2QyOGM4NDA2NTgzMmJmZDdmIGxlZ2FjeS10cnVuaworMzU1NzMgZTYzNzliZGE5MWQ3OTY4YWUyYTk2MGZiMDFhYmEyOTlhMTMzY2U1ZSBsZWdhY3ktdHJ1bmsKKzM1NTc0IDM3ZGM4YzgwY2E3ZWQ5MjFmZTkyODMxNDQyYmFiODRiMjg0ZTYwMTggbGVnYWN5LXRydW5rCiszNTU3NSAyNzdiNWEyZjA4ZjVjOWY0MDkxZGEyMGUyMDY3YThmYzE1MWEyN2NlIHJlbGVhc2UyMy1tYWludAorMzU1NzYgNTlmZTA5ODI0MzYzYjBlNGZhYmZjYTYwY2E0ZDA1ZTVhY2VmZGI5ZCBsZWdhY3ktdHJ1bmsKKzM1NTc3IGMwNTFkYzZhYjM3NDM4N2JhMjYxYmU2ZGYxNWJhZmJjOWIzNDgyYWEgcmVsZWFzZTIzLW1haW50CiszNTU3OCAwMjYxZTM4MDExZjZkZTQyYTQ3Njk1ZGM3ZDk1ZDAzNDNkYzVjZjgzIGxlZ2FjeS10cnVuaworMzU1NzkgY2ViZGEyM2FhYWRiYzY5MTMzNzAyYjBhNTEzMWMwMTBjM2E1M2MyZCBsZWdhY3ktdHJ1bmsKKzM1NTgwIDA3ODAzMjQ0NGVjYzg5YzMwY2FlYjQ2ZWFhZjI2YjIwMzY0YjQ1M2YgbGVnYWN5LXRydW5rCiszNTU4MSBiYzZlYzk1ZjU3OTIzZDdmOTRmNDVkMDVhMTZmYTk1ZjJkZTkwZDYxIGxlZ2FjeS10cnVuaworMzU1ODIgNmM2OTEwZmQwMTNhNjI2NTUxZTg0NTc4ZmU4OGJjZmFmNjExZWY4ZCBsZWdhY3ktdHJ1bmsKKzM1NTgzIGY5ODIxNWRhYTM1ZmMyNTcwNTRkMDVlMTc5NDg5ODE4Nzg3OTYwN2IgbGVnYWN5LXRydW5rCiszNTU4NCA3YTEyMDQwMDg4OGFlZjZhODI3ZTJiYWM1YmUyNjg1ZWU3NDM0OWIwIGxlZ2FjeS10cnVuaworMzU1ODUgMWJlNTQ5OWYzNzhlOTk3MDBiYjE5OGJmNjk1ZDMxYjk2ZTI4NjI5ZCBsZWdhY3ktdHJ1bmsKKzM1NTg2IDRkYjk1ODcyOTE4ZWI5Mjg5ZjEzYzc4YjIxOGMwMzkxOTIwN2Q3OTkgbGVnYWN5LXRydW5rCiszNTU4NyA4MTg0YzY3NzcxM2ZkNjFlMDEwNTUwOTI5MTcyOWZjMTBlZTA1M2RjIGxlZ2FjeS10cnVuaworMzU1ODggOWExMWEyMzYxNTQ3NDVkZjMxYTlhNTgyMTEwODQ0ZTU4NjM2ZWI5YSBsZWdhY3ktdHJ1bmsKKzM1NTg5IDRiMDkzMGI1NjU2NWZkMjBmZTI5ZDc3NjUxNGU1Mjc2OGVjNTU0ZjkgbGVnYWN5LXRydW5rCiszNTU5MCA3NWUyZjc1OGVjNWEwNmI2ZGEzYTBkZjUxMzM3MWFkMjZmMWY5M2MwIGxlZ2FjeS10cnVuaworMzU1OTEgOTQ4OTk2ZjY5OWQyZTI5MmFkM2QyMGFjMzE1OTA0YWI0Y2ZiYzE3NiByZWxlYXNlMjMtbWFpbnQKKzM1NTkyIDZiMTg1OGQxMmY4Y2E5ZWJiMmU1ZjcxODE0YTc1ZDgwYzI4MDhlNTQgbGVnYWN5LXRydW5rCiszNTU5MyAxNjhkYWNmYmVlNjVhYTdjOWZjYmExNTFjN2NmZGZjMDFiMjZhNTY0IGxlZ2FjeS10cnVuaworMzU1OTQgODE3MGFhZGM5ZWNhNzRlZGY4M2U1MjVkYjUzYTA3YWVlOWQyYzg0ZCByZWxlYXNlMjMtbWFpbnQKKzM1NTk1IGIwODJiNGQ0ODFjMjU2MmRkZDMxYzNjODI0MDRiNzg5Mzg5MzUyYzMgbGVnYWN5LXRydW5rCiszNTU5NiBhNGFhN2Q2MWU0YWYxOTZlZjYwYjQwOWY4NmFlY2ExZGQxOWE0Y2UwIGxlZ2FjeS10cnVuaworMzU1OTcgYTJlODBmYTczNTliNTUwMDA4MGQ3NzFjMmJiOTcyZjgyYjk5ZjdjYSBsZWdhY3ktdHJ1bmsKKzM1NTk4IDMzMWRlOGI5ZDFlZDU1YzQ1ZmJhMzllZjU3OTU4YTA3NDgyMDJjODkgbGVnYWN5LXRydW5rCiszNTU5OSAzNGQ1ZWIxZTUwN2RjMjdhZjFiNmM2OTdlNjNkOWQ0MWU2MGY1NzBjIGxlZ2FjeS10cnVuaworMzU2MDAgZDA3ODgzOTFjMTNiY2YyMzA1NzJiNzg4ZjVmZmZiMGVhMTRiOTljNiBhc3QtYnJhbmNoCiszNTYwMSBhYWRhOTFjNWQ2ZDljNzI1NmNhY2I2MzZhYjdkY2YzNDJhNDNmYWM3IGFzdC1icmFuY2gKKzM1NjAyIDIyOTA4NTNhYjQwYTYyZDc5NTA0NTgyZmUzMzI0ZmM0YTIwYmRhMjMgcmVsZWFzZTIzLW1haW50CiszNTYwMyA1OTMyNDY5ZGNiMzU5MzMyNzdjZWFjNzU5YjEwNTlkMzM0ZmU4NzhlIGxlZ2FjeS10cnVuaworMzU2MDQgM2VmNTg4ODRiZGQ1MjFhMTZlZGI1NGM5MmFjYmUyMmVhZTIxNTgxNyBhc3QtYnJhbmNoCiszNTYwNSBmNGU1ZjljMmUyYjNiOTBjN2M5MzAwMzVjZTRhM2NkMzg5MWIyNWVlIGxlZ2FjeS10cnVuaworMzU2MDYgYTc2YWQ4M2E0MTNmMGUxMjE1MGJkNDEzNzRmODJlZjcxZjhiODAxZiBsZWdhY3ktdHJ1bmsKKzM1NjA3IDliMTdmM2NjMjNlZGNlZjZjMjRiYTk0NDQ4OTRhOTg4ZDhhNzYxZmYgbGVnYWN5LXRydW5rCiszNTYwOCBlMjYxZTBjMmM3MmQ3NWZkMzcxM2ZhODRhMWIzOGRlM2RjOWU0NmE1IGxlZ2FjeS10cnVuaworMzU2MDkgNjRlMmY3ZWM1NTc2YjNhNTg0MmZhZjQ1NzlhZTQ2YWVlMTY5Y2E0YiBsZWdhY3ktdHJ1bmsKKzM1NjEwIGE5MTBiODIyYjEyY2IzZmM0ZmNlMTk2Mzc5Mjk1NzhmZTg0NGNiODcgbGVnYWN5LXRydW5rCiszNTYxMSA3MzkxMjhjNjdjMzBlZjhkOTg3ZTc5ZjYxY2U0MWVmYmNkZDgzN2VhIGxlZ2FjeS10cnVuaworMzU2MTIgNDMzNjQyZjkzZDU5ZGJhZDRjOGEyZmJhNGMxNzA0ZGZlNzY0M2I0YiBsZWdhY3ktdHJ1bmsKKzM1NjEzIGU0MmNiYWZmODAyN2Q5MWZhYWI5Y2RmYjUxYjQ0Zjg2NjdiNmFjOTMgbGVnYWN5LXRydW5rCiszNTYxNCA4MTExNzkyM2FlOGYwYzQ1YzFlYTdlMjM2Yjk4MzgwOWU2ZjNjNTU5IGxlZ2FjeS10cnVuaworMzU2MTUgNjc3YzBiZjA1NzM1ZThjMTg2M2ZlZDI0ZDllMTA1ZjNiZjBkMjZjOCByZWxlYXNlMjMtbWFpbnQKKzM1NjE2IDRjMDZmNGZhZWQ4NzdiYWIxOWIzY2RiNTc5NGM2YmRkYzkyNGNkMzAgcmVsZWFzZTIzLW1haW50CiszNTYxNyBkMjBjYjYzNTdmNWVhMTYxYjM1YTEwNDI0YzQyNTExN2EyZTBiZjNkIGxlZ2FjeS10cnVuaworMzU2MTggYjFlYTJmM2Y0NjdlZjc4NTYyZGZkNzZkMTgxZjhlNmIwYjk4MWY0ZiBsZWdhY3ktdHJ1bmsKKzM1NjE5IGZhYTcxNGRkODZkM2YxMDVkM2E4YzBiYWUyYWExNmJmMDI2MWY1YjUgcmVsZWFzZTIzLW1haW50CiszNTYyMCBmNGMxYzNlNjI3ZGY4ZmU4NjYzMWUyNDI5Y2VjMTEzNDk4MDE0MzFmIHJlbGVhc2UyMy1tYWludAorMzU2MjEgODE0Y2M5ZjgzZmFhYjhkZTI1OWU2NTRjZjhhM2Y5ZGQyNDQ0NjFjYiBsZWdhY3ktdHJ1bmsKKzM1NjIyIDY0Y2MxNjNlZWFmMTIxMzUxMzZkNzIyYTBjYTVhNzczN2U4NmU3MjcgbGVnYWN5LXRydW5rCiszNTYyMyA5MjU1MjQ2NzE0NWVhN2Q4ZjI2YjQ4OTdhMDJkYjJmZTZjMjA1NjVhIGxlZ2FjeS10cnVuaworMzU2MjQgYzU3Y2ZhODMyOGQ0M2FhOTljZTY4MDM0MzRjNTMxNDU2ODdiODUzOSByZWxlYXNlMjMtbWFpbnQKKzM1NjI1IGM0YzdmMGYzOWZlOWI4MzcxZTg2NTJjZjEyODY2NTQyNzAxZjA3OTUgcmVsZWFzZTIzLW1haW50CiszNTYyNiA4ZDM4MmFiOTliZGJhOWU5ZDJlYjVjNjc2ZDQxNjg5YzRjZDM1YWQ0IGxlZ2FjeS10cnVuaworMzU2MjcgNjk2ZjRiYTlkZGY3YjE2ZDRkOWVhOGE3OWU0YTcwOTVkYzhjMzhjZiBsZWdhY3ktdHJ1bmsKKzM1NjI4IGFkYjQyYTcxMTY5NjA0ZDM2MDlhYzJmYmRiNjRjZjhjZDFjNzI1MGIgbGVnYWN5LXRydW5rCiszNTYyOSAyY2ZlMTQyNzVhMDQ0MDhiNjNmMGQ2Mjk4ZTBkYzdjODNkODk4N2VmIHJlbGVhc2UyMy1tYWludAorMzU2MzAgM2FkNDJiN2Q0NjYwYWMzYzE5NTIxNTMyNzZkNTczZjRkY2E5ODNmMCByZWxlYXNlMjMtbWFpbnQKKzM1NjMxIGY4YjI4ZTRhYzQzNWE5Nzc4OTRlMDIzN2E0ZmZkZWQ2NGE4YTUyNmQgcmVsZWFzZTIzLW1haW50CiszNTYzMiA1ZjYwYjIyNjAxOWU5ZjNiNDEzYWYwZWY4MGZkYmMyYWE5OGFhMTRjIGxlZ2FjeS10cnVuaworMzU2MzMgOGJjYjEyMWM1NDExMWJmYmExNzM2MzI1ZDUyNTU1MTFiM2VhZjkwMCByZWxlYXNlMjMtbWFpbnQKKzM1NjM0IDA1OTg5YjRkNmNlODE1N2Q2ZjI1MmViYzI0YWJiNjU5ZTc4OTM5ODQgcmVsZWFzZTIzLW1haW50CiszNTYzNSAwZDhlZTI4YmY2ZjAzZmZjY2FhNDBmZWMyOGY1OTMzY2NiYjljNmFiIGxlZ2FjeS10cnVuaworMzU2MzYgNTc2NWQ2NTZlMGVmZDg3ZDFjYzI3ODc2NDY3ODkzM2VkOWYzMjY5MyByZWxlYXNlMjMtbWFpbnQKKzM1NjM3IDUwMTI4ZmYxOTk2NThiMTQ3NjllY2FjMGM0OGVmYmJmOGY4YzFmYmUgbGVnYWN5LXRydW5rCiszNTYzOCBkMDRkNzg2YWI0NTgxMzc5NTEwZGZhNWY2Y2M5NjJhYzU5ZTM0ZmUxIGxlZ2FjeS10cnVuaworMzU2MzkgZGJkM2ZjMjE0YjY2NmEzNjgzYTBjZDlmZTQ4NGM1M2M3N2VhOGY2NiBsZWdhY3ktdHJ1bmsKKzM1NjQwIDAwNzFkNmViODBhMWZhMjA5MzllODY4OTU5NzE1YjA0ODdhZWI1OWMgcmVsZWFzZTIzLW1haW50CiszNTY0MSBhNDBkNzlmZTJhNjllMmFmZWM1MzczMzY5NjFiOGZjNzc2ZThkM2I3IGxlZ2FjeS10cnVuaworMzU2NDIgYjRlYzkyOTk1NjBkODA4OWIyNDA1NTdkNjdmNDA2MTdiNTZlMmZiMCByZWxlYXNlMjMtbWFpbnQKKzM1NjQzIDU1MjA0NGI1MDU4ZDAxOGQyMmQyMDc0M2U2Y2JmMWIxZDczOWRlYjEgbGVnYWN5LXRydW5rCiszNTY0NCA1MWFhY2VlYWFiZTExZWFmZTc0ZDYyY2IzNDI3YzdiODQ2ZjcwYjgwIGxlZ2FjeS10cnVuaworMzU2NDUgMTU2MDM3YmUzNTVkOTg0NjA3NjZkMGYwM2RhZDhiYWFmY2JiYzNhNSByZWxlYXNlMjMtbWFpbnQKKzM1NjQ2IDVhMzZlNGQ1YWE4ZjBkNDA1ODVmNDVkZWI0MDNjZTkwOGFiZTRmZDYgcmVsZWFzZTIzLW1haW50CiszNTY0NyBjN2Y5ZmNhOTQ2ZDE2YjcwNGMyM2I2MDI4NTM2ZWI5MzZmYmRmZDAzIGxlZ2FjeS10cnVuaworMzU2NDggMDIwZGM1ZGZkNWM1ZDg4ZGQwZjQ1NzI2OTVkYzRjZmM4YzQwNTJjZSBsZWdhY3ktdHJ1bmsKKzM1NjQ5IDlmNWZlNmIyM2U1OTIwZTU3OWQzYTZiYWNjM2RkZDAxZWJhN2Q0OGYgbGVnYWN5LXRydW5rCiszNTY1MCAyMjdjYjc0MDJjNmU5YmY2N2EwMGEwMjM1NzU0Njg3MjAxZmU1YWM0IGxlZ2FjeS10cnVuaworMzU2NTEgYzg4ZDQ2MTBmMjgzY2I2ZDE2MmI5NTgzY2Y0N2ZmZDBkMmUxNGNmYyBsZWdhY3ktdHJ1bmsKKzM1NjUyIDFmYjIzMTNhYzNjZWU1OGZlN2QzOTUyZTIxYTdiNjc5ZTczNTI0MmQgbGVnYWN5LXRydW5rCiszNTY1MyBjOTA2YmIyYTE4MjQ1NTFmYzg5ZmMxNGZjODY3ZTExZjQ2ZGYyYjUzIGxlZ2FjeS10cnVuaworMzU2NTQgYTJmYjE2Nzg0MWU4MzhjMjZiZDQ3NzljZmVkOTE2MWM5ZTRlY2M0OCBsZWdhY3ktdHJ1bmsKKzM1NjU1IDI2ZWUxYjNlYjM0NTFhNzBiNDc2NDJjZGYxMmVkZjRmZmU4NDk1MzQgbGVnYWN5LXRydW5rCiszNTY1NiAxYTNhNDhjYmIxNjI4ZDQzNDBhYmQ1YjJlODNhZjYxZTFkN2JmY2QwIGxlZ2FjeS10cnVuaworMzU2NTcgNGM2ZmRlYjhlMmUwMjE3ZjM1NmJmMWFlMGFkOTRjNWNmNzQzNjEwNyBsZWdhY3ktdHJ1bmsKKzM1NjU4IGYzNWI0YWNjNTk0ZjkwYTlmNjI5OGJhNDVkMTgxNWUyZjU3NWYzNzkgbGVnYWN5LXRydW5rCiszNTY1OSA2OTk3MDY1M2VjYmZhYzk0Y2U3NTgxNWVjYWIyMzU3YjhjNTVlNTRlIGxlZ2FjeS10cnVuaworMzU2NjAgZjljZDc5OTI2ZmY3Nzg4MWEyMTNjOTA5NWMwOTBiNGQxYjU5YzIzZiBsZWdhY3ktdHJ1bmsKKzM1NjYxIDk4NjU5NGMzZTRkOWRjMTAzNDYyY2VjNTIzY2ZkNjEzNGIyNjc4MjAgcmVsZWFzZTIzLW1haW50CiszNTY2MiA4YzI2NDIwZDFmMjM1M2EwM2NjY2JlMzM2ZTcyYzhiYWFiNTkwNWRlIHJlbGVhc2UyMy1tYWludAorMzU2NjMgN2I4MTcxMTliYjY2MGI1MzFhMzMzM2I3YmRjNTYyNmU5ZjhmMDMyOSBhc3QtYnJhbmNoCiszNTY2NCBjNjgxZDk1Y2Y3OWVjNTBjNWI4NTkzNDVmZTBjMTFmZjdiYzVhNmJhIGFzdC1icmFuY2gKKzM1NjY1IGMzNzBhYWU5ODIzMjE2MzZkYjljY2VhZGFiNTIyNDZkMDFiNGNjY2UgYXN0LWJyYW5jaAorMzU2NjYgYjQ2ODQyMzRiZjA3MDFmMDhhNzQ5YjFhZDJjMzdjMDE2MzVjYTdjMSBsZWdhY3ktdHJ1bmsKKzM1NjY3IDJlNTJjMjBkZWE0ZjYxZGE4ZGFmMGEyN2ViZGEyODc2ODBlYTVhZDQgbGVnYWN5LXRydW5rCiszNTY2OCBkZDkzYTMyYWMzM2VmZjNjYjg2ZDI3Njc5OTY4NTA0ZGIwNGMyNjEyIGxlZ2FjeS10cnVuaworMzU2NjkgZGZjOGM1ZjY2OTU5NTgyMTQ0ZGFiNmVkOWNjMTZhNTJlOWMzY2E5MiByZWxlYXNlMjMtbWFpbnQKKzM1NjcwIDg0OGJjZTIyMTVkMzViNmRmZmE5ZDg1ZmExMmNhNjY0NzYyODA3YTkgbGVnYWN5LXRydW5rCiszNTY3MSBjNzBiYjMyMjI3Y2IzYmZlNmEwZTgzM2ZkYmU5N2ZmNDEzZTYzZjM2IGxlZ2FjeS10cnVuaworMzU2NzIgMDgxOTcyYWUyZjg0NDIxZmQ2NGEzMjA2YTQ0MjY2NDRlNjkwZDQ3OSBsZWdhY3ktdHJ1bmsKKzM1NjczIDI0MTA4OWU0MzdlMDI5ZTljYTBmMjBlMzk5MDdjZGEwODAyOWVlY2UgbGVnYWN5LXRydW5rCiszNTY3NCAzMTBkZDk4ZWEwNjQ2MTljYjk4ODNkODBlOWMxY2YwYjZkY2M0MTFkIGxlZ2FjeS10cnVuaworMzU2NzUgYzU2ZWE2MGNiM2JmNzc2M2Q5NWIzZGYwYzBhMDI5Yzc5MTFiMzA0MiBsZWdhY3ktdHJ1bmsKKzM1Njc2IGNhMmZiNWNmMmZkNTc1YzcyOWJlMTI1MmE2NDY4MzViYmIzYTYzMGUgbGVnYWN5LXRydW5rCiszNTY3NyAyNzk0ZjYyN2ViYWEwMDE1Zjg4NzQzODk4NWQyNGFlYTBkZjk3NDEzIGxlZ2FjeS10cnVuaworMzU2NzggNjRmY2ZmMTIxZjdiNWRlZGM2NzdlMDc4ZjJjNDVjZGE0NWE3NjYyMSByZWxlYXNlMjMtbWFpbnQKKzM1Njc5IDZlNTRjNTkyODUzYzY0Yzc3ZWE4NWU0NjA2Y2Q1ZDA2Y2YwZDM1Y2UgcmVsZWFzZTIzLW1haW50CiszNTY4MCAwMjY1YmY5OTEyZWEyOTEwZDU4MzFlNzFmYmIxZGUwYjY1MzEzMzI0IGxlZ2FjeS10cnVuaworMzU2ODEgMzU1NDczNTM0YzcwNjgxMGY2NzQ2NjgwOWQyM2IwOGRjNDY5M2NmYSBsZWdhY3ktdHJ1bmsKKzM1NjgyIGM0ODg4YThmY2Y3MDYxYjY0NmExZjY0ZTYyMTAyZGYxNGVmODYzMDYgbGVnYWN5LXRydW5rCiszNTY4MyBlOTc1MThjNjZhY2MwODE1NmQ3MmYzN2U3NTlkM2M2ODgxZmJmNWRkIGxlZ2FjeS10cnVuaworMzU2ODQgODk3NWRlZmJmM2E4YjBhYjRhZWYxMTNkOGYxMmI1ZDg4MDVmNWQ3MSBsZWdhY3ktdHJ1bmsKKzM1Njg1IGU3NjA5MmQ0OTAyY2Q0NGRjZDZmYzc1MTM1YmEyMjBmMjE2YjYxMTkgbGVnYWN5LXRydW5rCiszNTY4NiBmMzljNTZmOGNjYzJiZTQ4NjQ1YWY5ZGU0MDM2MGI2ZmE1NmNkM2IwIGxlZ2FjeS10cnVuaworMzU2ODcgODhkNjI1ZDkyOGFjZGJhMDdlMDVlYmNmZjM3MzU5NzVmMjE2MmQ4ZCBsZWdhY3ktdHJ1bmsKKzM1Njg4IDA1ODgyMWQ4YWVmZGM1MGNkNDdmOWJkYzdkMzM3MTUyZjQ1ZTM5MGMgbGVnYWN5LXRydW5rCiszNTY4OSA2YjIzNjk5NDY4NGFmOTI5YzQ2MDAxM2U2MjFlOGY0MjNmMmM3NTUyIGxlZ2FjeS10cnVuaworMzU2OTAgY2VjNzQwZjkyZmE0MjI1MDAzNTUwNzk2N2Y2ZTE2NjFlNWRlMDVlZCBhc3QtYnJhbmNoCiszNTY5MSBiMzNkZGI0OGI3ZTA0ZTE1NmQ4MjFlNGNhNTExYmI2MTk3OTY5ZjM0IGFzdC1icmFuY2gKKzM1NjkyIGViNmY1OGMzZDk3MjVmMDUwZDNkYWZjMDRhYmViMWM2YzYyMGE0YTUgYXN0LWJyYW5jaAorMzU2OTMgMTZlNzUzZmYzMWIyMjY4Yzg1NTY2M2JiYjYwZjgwM2E4ZmE3NmIwZiBhc3QtYnJhbmNoCiszNTY5NCA0YTU0MzMwNmRmZmExNjhmMGM1YTg0MWZlZTY0NmQ1ZmQwN2RiNTBiIGFzdC1icmFuY2gKKzM1Njk1IGY3ZjQxM2M2NTRmNGZjM2I0ZTc0NzY3N2M0ODUyODBiOTAyZjg3YzMgYXN0LWJyYW5jaAorMzU2OTYgNTVjYTk3ZTdiZDBmYTM2ZDA3YjEyYTdjODI1ZGUzODZmNDE4NWU3YSBhc3QtYnJhbmNoCiszNTY5NyBiMjQyYjRkN2UxNzc0MjhiMDM1MGY0MmMyMmM2ZjBjMDMzODMyNzFkIGFzdC1icmFuY2gKKzM1Njk4IGUxMTQwZTYwMWU3MjI4NGU3ZDcxYWZmYWMwOGNjMzc4YWI4YjgzNzIgYXN0LWJyYW5jaAorMzU2OTkgNzM0ODZmZjZiNTUyZjM4ODdkODg4ODY2N2VhNzc5NGFjMTIwZjM3MiBsZWdhY3ktdHJ1bmsKKzM1NzAwIDlkZjUxODVmYzVjYWJlMWE3NzRjOWYwMmU5MDhiZTU0ZDE3Y2U4NmYgcmVsZWFzZTIzLW1haW50CiszNTcwMSBhNTg2Zjc1MmIyYmRjY2VmNWYyZDEwNTRlMDc5MWYzMTJjZjFmMDI0IHJlbGVhc2UyMy1tYWludAorMzU3MDIgNzAzODk3N2NlYThkZTYxMzIxYWI2OWJmYmM0NWJjNGFkZWRjNmNiYiBsZWdhY3ktdHJ1bmsKKzM1NzAzIDA4YTM5MWZkZTY4ZGFmMzc1Yzg2ZThmM2Q4NzcxNTU2ZWIyMjIwZDAgcmVsZWFzZTIzLW1haW50CiszNTcwNCA1NmZlZDA5ZDAxZjM3ZWQ0MzcyZWVkODJhODFlYzgyZDJmYzRmMDdmIHJlbGVhc2UyMy1tYWludAorMzU3MDUgNGJjNjIwZjQ3ZmI0MmVlZTBmNTlkYjA1ZWM4OWM4MmYwNTliZTY1NiBsZWdhY3ktdHJ1bmsKKzM1NzA2IDgxNjE5ZGNiZmFlN2I1NTY0NjZiYzUyZWFiOGQ2Njc0ODI0ZDE0MWMgbGVnYWN5LXRydW5rCiszNTcwNyAzYzc5NjQxM2YwNWU3MjlkZTM0MDM2NGEwMmVmY2M5ZjMzMTA4OGFiIGxlZ2FjeS10cnVuaworMzU3MDggMzljMzY1MjZkMWIwODIyM2U1OGNlYWNiZTRiNjlhYTIxZGU3MDkyOSBsZWdhY3ktdHJ1bmsKKzM1NzA5IGQwM2I1NGU2MGE2NzZiMWY3ZDJlY2RkY2U0MWQyZjI2YTZhZWU2ZTggcmVsZWFzZTIzLW1haW50CiszNTcxMCA0ZGIwYzg0ZjVjNmEzNTlhY2Y5MDI0YjY3NTA4MmJlOTczODkzZGQyIGxlZ2FjeS10cnVuaworMzU3MTEgM2M2MThjNjkzOWUzMzQyNzcyZTBhNTNlYTcxZDQ4ZDQyZjg2MzNkOCBsZWdhY3ktdHJ1bmsKKzM1NzEyIGZiY2JjZGExNGI5MmVjMzIzNTE5ZWQzNjkzYjUwZmRiMjM3OTM0MzUgbGVnYWN5LXRydW5rCiszNTcxMyAyMmE1NTAyOGE3OGQzZWE4MDY1Mzk0MzlkYjI3ZTIzNmIwNTE3MGQ1IHJlbGVhc2UyMy1tYWludAorMzU3MTQgNTE4NGQ2OWMyNGRjYjljNjIxMDdkNDRhZDJjZTRkZDM0YTIxOGI5NiByZWxlYXNlMjMtbWFpbnQKKzM1NzE1IDA5ODAwYmEyYTY1MzQ4YTMzYmNmMTA3NjEwMDcyYTY0NmVhYzM1ZjcgcmVsZWFzZTIzLW1haW50CiszNTcxNiA5MzkxN2RkOGE4N2MyMTBjZmM0OWQ5ZWQ4MTgxMTkwOWI3ZjY0YjU1IGxlZ2FjeS10cnVuaworMzU3MTcgNjA4MDI4ZjM4OGM1YzQ5Yzc3Nzc4ZWMyYWIzZWZkNzc0YTU0MTA4OCByZWxlYXNlMjMtbWFpbnQKKzM1NzE4IDg4NmQ2NmY1MTEwNWM0NzM2OWQ3Y2I4MDczM2MzOTA4MDRiNmJkNTggcmVsZWFzZTIzLW1haW50CiszNTcxOSBmOGMwYWM1YmVmMDI4Y2MxNWNlY2FhNTM1ZWMzY2Q5ZjkxMzU1ZGU4IGxlZ2FjeS10cnVuaworMzU3MjAgNjNiNjhjYjJiNDQyZjRlNjY0ZmZhNThkNTk4Njk3OTQxYWUyNDg5MyBsZWdhY3ktdHJ1bmsKKzM1NzIxIDFmMjkzNGEzMThiNzgxYmE1OWY0NDE5MmNkZGQyNzAyMzVjOTkzMjUgbGVnYWN5LXRydW5rCiszNTcyMiAxMGJhMjQxNjIzOTExMGU4YWY3YjA0NTRkODA5MGQzOWFmMjk4OWIxIGxlZ2FjeS10cnVuaworMzU3MjMgZmRhYmI2ODA4ZDUyZmJmYTI1NGIwZTE4MjFkYTYyYWY3Mzc5OTkyYiByZWxlYXNlMjMtbWFpbnQKKzM1NzI0IDAxZWEwM2U3YjI2NWY4Yjc4ZjU5NzhlYmM5MGE4YjQzOTQwM2EzMjIgbGVnYWN5LXRydW5rCiszNTcyNSAwMWUzMTY0ODlkNjc5OTIyNDM2NjBkMWQ4MGU3YmNhM2JmNjhiMWViIHJlbGVhc2UyMy1tYWludAorMzU3MjYgNjYzNjgxMThhMTliYzAzNThiM2E5MWZkZDhkMjk4MzdjODM3N2MwNyBhc3QtYnJhbmNoCiszNTcyNyBmMWZkMWFlNDIxMzZhMDIzZTRmMzQ3ZWFiZDU5MzcwZWRiZTg5MjUwIGFzdC1icmFuY2gKKzM1NzI4IGM5MjE0MzgyNjY1ZjRjZjliM2JiN2U2YWNlZjUzM2Q4ZGUwN2JjNjkgYXN0LWJyYW5jaAorMzU3MjkgMDYwMTRmNzFmMTYzNmE5Y2YwNDU0ZTczZWZhNjQ5MDY5NzgwYzc1NiBhc3QtYnJhbmNoCiszNTczMCA3NjczYmZmNzQxMjI4YjgzNDk1ZGQ3NTEyNTNmZjE2MTA5N2RhY2FjIGFzdC1icmFuY2gKKzM1NzMxIDRjMzRhYzlkYTkzZDQyNDY1OTdiZGQxY2UxYmFmODY5OGY0Zjk3ZGEgYXN0LWJyYW5jaAorMzU3MzIgN2M3YTI5ODE0NTVjYThiM2JjYjc1ODg3MjMwYjE0YzdiYjA5MTFhMSBhc3QtYnJhbmNoCiszNTczMyBmZjVhMzFhNzFkOWE2YjBlY2M1NTgzMjBmNzM3NGZiYmM3NGRhMzQzIGxlZ2FjeS10cnVuaworMzU3MzQgZmYyNThjNjcxZDNjY2Q1MTJkMWE5MjI5ZDI5OTAyOTA0Njc1MWEzZCBhc3QtYnJhbmNoCiszNTczNSBkYjhjNDViOWU4MTg2ZWMyZTUyZTM3ZGZlZmY2N2I2ZmE0NzQxOTgyIGxlZ2FjeS10cnVuaworMzU3MzYgOWQxNjMzZTZjNDJlYjlkMzhhYWY1YjkwMTFkZmVlYzFlY2JjYzg5YiBsZWdhY3ktdHJ1bmsKKzM1NzM3IDA1OTc0MGQ1MmFlNWM0ZThmM2Q5YzRkMmVlNjQ1ZmFlMDZkNzIwYzkgbGVnYWN5LXRydW5rCiszNTczOCAzMjAzNTRiNzY2ZTcyZDMwNGRjMzA2MjlkYTNiYjMzNGI3MDg4M2NlIGxlZ2FjeS10cnVuaworMzU3MzkgMTI2ZDgxNTU0NmQzMzc5ZmIzNjJhY2JlNzM4MjU5Yzc0OTk4N2MxOCByZWxlYXNlMjMtbWFpbnQKKzM1NzQwIDIyOGVhNzU3NzBlM2RlODMyYTQxN2Q4ZjYxNDdjNGNkNGQ3MGZiNmIgbGVnYWN5LXRydW5rCiszNTc0MSAzMGVhMGIzNTJmYzAyZmRiMmQzMTA4OGFhZTA3ZWEzYWUyM2I2NzY1IGFzdC1icmFuY2gKKzM1NzQyIDNiNDQwMzM2MDc3NWYwNDIyMzMzMmUxY2VmMzMzOWYyZTRmNmZkNTQgYXN0LWJyYW5jaAorMzU3NDMgYWI0OWU2ZmQ3NzQ2NTAwZTBhMmFkOTdkYTQ4Yjg4ZmEyMDM3NDNhZSBhc3QtYnJhbmNoCiszNTc0NCAyMGI1ZTlhNmVmNmIwYTVhN2FiZTJlMTc0MmUxNDRjYzY0MThjMTRhIGFzdC1icmFuY2gKKzM1NzQ1IDI4MjJlZDk1NjMwOWZlOGQ5NWRmMDhlMzMzYjcxNzU3YWI3MzVkZjggYXN0LWJyYW5jaAorMzU3NDYgYWFiNzc2ZDQxYjRmNTE4NGFjNDVkYzViZGNkZWI2YTc2NzhjZWRmMyBhc3QtYnJhbmNoCiszNTc0NyBiNjFlNWY5M2ViZTBhMTMzNDAwODhmMWVkNjgxNjRiOWJmN2I4NjA4IGFzdC1icmFuY2gKKzM1NzQ4IGNlNzZhOWQ2ZTY1MzA4ZjAwNGEyZTdkYzFjMThmNTNkZDA1MzRkODcgYXN0LWJyYW5jaAorMzU3NDkgMDYxMTA4YTg5NTE2ZjExZjQ1YTVkMmZiZDkyNWExZDhiZjFkYjMxNCBhc3QtYnJhbmNoCiszNTc1MCAyNDQ4ZjY4NGNlOWU5YzRlOWJmNmJhN2UyZDMwNDFmYzA3N2U4YjFhIGFzdC1icmFuY2gKKzM1NzUxIDRmMGExZTdhZDY5Y2ExNTljN2NmZTJmZDhjMzRhNDU2M2UwZjk1YWEgbGVnYWN5LXRydW5rCiszNTc1MiA4ZjFjZTdiMGU0MjNlMzI5NjA5YzBhM2NjYjg0YzgwZTQ4ZjY2YjYxIHJlbGVhc2UyMy1tYWludAorMzU3NTMgNjljMWFiNmIyNjAyMTQxYjBhN2NhNDVhNDEzNmViMWY0NDhhZjc3NCBhc3QtYnJhbmNoCiszNTc1NCA1NGFlOWRlMzhmMGMyZGRjMDAyN2Q0YTRhNjA2ZDYzMTYwYjM0ZjViIGFzdC1icmFuY2gKKzM1NzU1IDAyMDQ0M2ExMGMyMDI1OGQzODA2MWI3ZjI1Mjc5OGQ1NzNkNDg1YzcgYXN0LWJyYW5jaAorMzU3NTYgYmIyNTVmODU1OTk5ZTlmNjBlNTNmZGE3ZWM0MDQ1NjhlYjJjOTVlYiBhc3QtYnJhbmNoCiszNTc1NyAxODIyOTUzODFmMTQ3ZWZkODM1OTUyZTYxNTViNmM1ODQwZjc2ZDVjIGFzdC1icmFuY2gKKzM1NzU4IDU0NjVhMmNiMGFlYTdlNzczYTZkZDU4NmE2MDhhNzY3N2U3MjZlMzAgbGVnYWN5LXRydW5rCiszNTc1OSAwYzY2NzYxMjQzMDg5YTQzYjk4NDUxMjQ2ODM2NWRjOGYxNTVjOTZmIGFzdC1icmFuY2gKKzM1NzYwIDc2NWZlMTZmNjY1Yjg4ZDMxZGQzNDlkMzk0YTJmMGE5ZTI3OGE4MDAgbGVnYWN5LXRydW5rCiszNTc2MSA0YmU4ZTAxMGJkYjllOWMwMmNlMmI3NjU3NzAyMzJhZjdiNTg5OWQ4IGFzdC1icmFuY2gKKzM1NzYyIDIwMGJmNzljMDE1OTYwOWQzYzc1YmFkNTZhNDkxNWQ3OTdkYmJmY2IgYXN0LWJyYW5jaAorMzU3NjMgNTZmOWIzMWFjNjlmYTQwZjkyZTU2M2RjNjQ0MTlhZDE2YmYzMWE2OCBhc3QtYnJhbmNoCiszNTc2NCAzNDBlNDllMDE1NzY2NDdiNzkzOWZiNTA4ZjMwNTU4NzFmY2E2NjAyIGFzdC1icmFuY2gKKzM1NzY1IDBhZWNjMDdlMzVkOWZjNjI1ZWE1ODgwMDcyODBlZjQ3YmZjNzViN2EgYXN0LWJyYW5jaAorMzU3NjcgZjk1MGVmMzA5ZDc1MTJmNWVjYWI0ZTgwOTcxZjM5Yjg0MzhjNWY5NSBsZWdhY3ktdHJ1bmsKKzM1NzY4IDM4MzhjZGVlMWEyMDFiM2MyZTU5YmYyYWI2YzA4N2ExNDE0Nzg3YjMgbGVnYWN5LXRydW5rCiszNTc2OSA2MTY3ZTc4YTE3YTgyNmE4MzhmNTQ0YjlmY2Q4OTYxZTMwMmFjYjdlIGxlZ2FjeS10cnVuaworMzU3NzAgMGU5ZTBjNTM0OWEwZGVlYjBlMTRiOWNlOWVhOGJhMmEzOTRlNzJmMyBsZWdhY3ktdHJ1bmsKKzM1NzcxIDkwZTA4OTRhZWM1YmVkMzhkMzMyYzE4ZTc0OTMwMjNmMjlkNDA4NWQgcmVsZWFzZTIzLW1haW50CiszNTc3MiA1ODMxNzg1MThiZDBjZDMwN2U4MWE2ZGI2MWFkNDM4ODZkNzMxNTI1IGxlZ2FjeS10cnVuaworMzU3NzMgY2ZhZmFlYTkzZDkwOTVkYzRhOWY3YTc1ZTk2YzQ0NWE3NTRiZTE4NCByZWxlYXNlMjMtbWFpbnQKKzM1Nzc0IGVhOWVlOWI3NDY3MjljYjU0NGVjNDY0MTEzNmRjMTRhYzQzMmYwYzQgbGVnYWN5LXRydW5rCiszNTc3NSBmMmNlYTE2YTFmMzgyZDRiOTczM2Q5MGY5ODIwM2QwMWY0NWY4ZDE4IGxlZ2FjeS10cnVuaworMzU3NzYgNDdlZDdiY2RmMDg2NDZiNGNmYmQ5M2QzMjA4N2EyZWJmOGViMmNmNiByZWxlYXNlMjMtbWFpbnQKKzM1Nzc3IDMzODU3N2FmZGFiNmQ4YmQxMjIzODYwOGY1NTdkNWI5ODk5MjA3M2UgbGVnYWN5LXRydW5rCiszNTc3OCAxY2EzYTYyYTAwOWFkNGM1ZGQzZDRjYmUyNjhiY2ExMjViOTNiOGFmIGxlZ2FjeS10cnVuaworMzU3NzkgZjlmYWY1NTcxNzIwMmQzM2M0ZWE4MjQ1M2U5ZmE4MGI1NmJhMDAzZiBsZWdhY3ktdHJ1bmsKKzM1NzgwIGZhYTdlZWIxMThjZjQ3YWRhNWU4YmQ5NDI2MDU2YTMwMGE2ODA2MTggbGVnYWN5LXRydW5rCiszNTc4MSBhNDhlNjA4YmE2MDVmYTFiZTc0NDkzODlkOGJjZWY5ZWRkNmMwYjBlIHJlbGVhc2UyMy1tYWludAorMzU3ODIgNWNhMTAzYzM3ZDVlMGJkZDgwYjZkNjRjNWM3NDUyN2E4OGQzYzI3ZSByZWxlYXNlMjMtbWFpbnQKKzM1NzgzIDVhYjgxMmNkMGRiNzU2MjI2NTQ4MDVkNzI2MzI2NTczZmY4YWRiOTUgbGVnYWN5LXRydW5rCiszNTc4NCBlZjM0ZGVjMDA0Y2RkZjc5Yzc4MjVhYjUxNjdiNDEwM2EzNzA0MWQ2IGxlZ2FjeS10cnVuaworMzU3ODUgMjA0YjdiY2VhZDRjOThlZmJjZWU4ZTE3NjY2MjZlM2QxNzgxOWM4NSBsZWdhY3ktdHJ1bmsKKzM1Nzg2IDNkMDQ2ZDA2M2E4NGE5YmEwMTM0MTY2ODg5MjM3MzM4OWM4Nzc4YzUgbGVnYWN5LXRydW5rCiszNTc4NyAyMjc2ZGU4OTFmZTJlZjRkY2ZkYWRjYjE2YjY0MzRmZGM3OTU3N2NhIHJlbGVhc2UyMy1tYWludAorMzU3ODggMGM3NmE5ZTVjODM4MmMzYmQ2M2EyYTAzZmI5YzE2MzMwZDI5YzUwZCBsZWdhY3ktdHJ1bmsKKzM1Nzg5IDVjMzViM2NhNWJhOTNkOTZhN2I2YTRlMzg1MmRlYmIyMjRiOWM5NWYgbGVnYWN5LXRydW5rCiszNTc5MCAwZTlmZGI3NmFjODU1ZjliM2NiZGE5MDdmYzVkNWNmNGFkMTI5MzdlIGxlZ2FjeS10cnVuaworMzU3OTEgNTFlMWI2ZGNmZjYxZTkyMmM3M2E3YjU5ZjA5NjVkNmM4OGNhOWNlOSByZWxlYXNlMjMtbWFpbnQKKzM1NzkyIDdhNzQ5OWZiYzQ1Mjk5NjYxNDRhNTJlYmM0ZWE2YzFiODIxYzM2ZGIgcmVsZWFzZTIzLW1haW50CiszNTc5MyA2YzEyYTNiYWQ3ZDUzOWFmOTVkZWNkYWIyNzE3Yzk0OGIzZTIzNmQxIGxlZ2FjeS10cnVuaworMzU3OTQgNjMwZTRmYmNkZWEyNjVlN2U4MDJkM2Q0YzMzNjA1NzA2YzU2NzliMSByZWxlYXNlMjMtbWFpbnQKKzM1Nzk1IGM1YTU1MjU3ODM0NGY1Y2E3ZjQ0OWRlZGE3M2M2NTIzOWVlYWUyNTkgbGVnYWN5LXRydW5rCiszNTc5NiA5YjJiN2QzYjQyZjNhNjFkYzkwYjY2ZGIxYTJmN2I2ZDliZGVlNThjIGxlZ2FjeS10cnVuaworMzU3OTcgNjg3YjBjODI1NGZhYTQ1ZDI5ZDY4ZjIxYWMzMzg5NWYxMDQwMjhiNyByZWxlYXNlMjMtbWFpbnQKKzM1Nzk4IDY2NjdhMWQ4YWZiMTA0OGQwYWVhNDRjZDNkOTBkYTBjNjliNzgyNzUgbGVnYWN5LXRydW5rCiszNTc5OSBhNDYyNjRiOTFhNTE4Zjk1NGVlZGNjMWRjZGEyNTFhMTRjYWFhZDM3IGxlZ2FjeS10cnVuaworMzU4MDAgYjYxZmU4MjhiNzM4ODZmMjZmYmZjN2VjNWZhN2VlZDY4ZDNkYmFlNCByZWxlYXNlMjMtbWFpbnQKKzM1ODAxIDUxYTVmYjYwOTM0ZDc1MjM3NWMyN2ZiYWUyZjk3MDQ3MTk3MTU4NjggbGVnYWN5LXRydW5rCiszNTgwMiAyMjI5MDhkZmJmNThiZTk4MDM3NDUzMGFhY2ZkMDUxZmE2NTVmYWZiIGxlZ2FjeS10cnVuaworMzU4MDMgODYxNWYyNzhkYTVmMzU2ODFiZjZiMmU2YjVhNTlmMzcxZWQwOTE5MyBsZWdhY3ktdHJ1bmsKKzM1ODA0IDlmOGJmZDU0MjUxZjc0NDI4OTlhMTEyOWE5MDhhYjA2MTAzODk3OGYgbGVnYWN5LXRydW5rCiszNTgwNSA4YjJhNDI5YWY0MmZmMTY0MTVjZjZhNThhZjMxNzRjMWU1MGU3NzA3IHJlbGVhc2UyMy1tYWludAorMzU4MDYgYWI2ODBjNGFjZDM1YWY4MTNkMDJjZWM2NTc0OTI2M2JhNmQyMWFiOCByZWxlYXNlMjMtbWFpbnQKKzM1ODA3IDVlYjdhOGUyZjM0NTM5ODE2YWJhNDY2MDcxMjhlMzZkNjYyZTQwYzMgbGVnYWN5LXRydW5rCiszNTgwOCBiOWYwOTE5NjUyNmVhYjQwMDQ4MDkwZmM4OGUzZjYwNzk4NjAzYjYxIHJlbGVhc2UyMy1tYWludAorMzU4MDkgY2JiYWNkYTg0NDgwYWUyYmQ4NWQxYzYxMjZiZTc2M2M5ZjcxMTg5OSBsZWdhY3ktdHJ1bmsKKzM1ODEwIGExNDJlNGU5N2YxMzFhMGQ5OGY2NmY3YjgxMjAwYjQ5NjVlYzA4NTIgbGVnYWN5LXRydW5rCiszNTgxMSBlOGEzMWFiN2E4NzQ4ZTYxNDYwZmJhZTc0NjJlZGZhN2Q1MmY3M2EyIHJlbGVhc2UyMy1tYWludAorMzU4MTIgNGRlZTU4MzE1Y2M0MWZiMDRkN2I1NzExZTllZGY3YmU4OThmOGNiOSBsZWdhY3ktdHJ1bmsKKzM1ODEzIDY0NmNiMDE0Njk0MmUxZjU3ZDAzYWJhNzM2ZDU1YzNiZmE1N2ExZjcgcmVsZWFzZTIzLW1haW50CiszNTgxNCA4MmJjNjk5NjEwMjJkYzljYzljMmNiY2VkMzNmOGRmMmNhZmY5NWNiIGxlZ2FjeS10cnVuaworMzU4MTUgZjc5M2EwNDZlZDk4MTQyNmVhMjYzMmQ2MTAwNzc4NjEwNmI2ZmZlZSBsZWdhY3ktdHJ1bmsKKzM1ODE2IGViZmE1Y2Q4Y2JhNGQyM2U1Y2M4NDFiMThmOTc3OWM4NGE2NWY1NTMgbGVnYWN5LXRydW5rCiszNTgxNyAyNjgzOWYzMmU3MGQwNzFiYmZkMGJmNWI5YzJiMDZiMWVhMzBjNjlmIHJlbGVhc2UyMy1tYWludAorMzU4MTggNjQwODRmOWJhYmExZWMwNDZjZjhiOTg2OWI0N2I5NGRmYWU3MWZmYSBsZWdhY3ktdHJ1bmsKKzM1ODE5IDRlYjU3NGIxMjI1ZmFhYjdmNDQ4OWEzN2UxNDQxYjJiNjI4NjBjNTkgcmVsZWFzZTIzLW1haW50CiszNTgyMCAyY2M3MTQ5Nzc0NzkzNDE2ZTA3ZmI5ZDg1YmVlZDRjNjE4MGEyMDc4IGxlZ2FjeS10cnVuaworMzU4MjEgOTg0YjI4OTk5MmMwNjkzYzM1ZDdjMWI0ZjI5MGY1NDgxZTIzYzBkZiByZWxlYXNlMjMtbWFpbnQKKzM1ODIyIGMyNDkzMDViZmNhYzhhNTRlYzM2N2U3MzRjMDhjOTViNjljY2YwNTEgbGVnYWN5LXRydW5rCiszNTgyMyBlNGY1MmUyZTM4MDAwYjQ2NDVjNTE3MDI3ZTY0MGQ3YjkyMDA4NThiIGxlZ2FjeS10cnVuaworMzU4MjQgZWMwOWE3MTg0OWNjNjNhZGIyNmE2ZmI2MTU2ZTA3ZGQzNzQwYWQzNSByZWxlYXNlMjMtbWFpbnQKKzM1ODI1IGUyYTBlZjg3ZDRkNDBkYzQ0ZGRkNDhmYzQ2YzU2ZWQwYjIxMmUxNGIgbGVnYWN5LXRydW5rCiszNTgyNiAxNGY3ZjliODlkYTljNWRkM2ZlZmMwNDA2NDU3OGY3YjRiNjIxNmI3IHJlbGVhc2UyMy1tYWludAorMzU4MjcgNmUwNzhmNzYxM2FkN2FjMTFjMjRmNjg2NTg4OThlZDdlMGMwOTFmNiBsZWdhY3ktdHJ1bmsKKzM1ODI4IDQyZTJiNWFmYTcxNTczNTNjZDcyNmVlOGI0Y2Y1ZmYzMDY1NDY4MWUgbGVnYWN5LXRydW5rCiszNTgyOSA1NDRmMjE3MjM2M2QyMWY3ZTQ4NjI5YjZmNDhkYmU5OTFhNjc0NDY3IGxlZ2FjeS10cnVuaworMzU4MzAgNTA3MDhiOGYwZDI4NzgyZjcxNjlkMTAxMjkyNGI4NDE1ODYxOGUxNiByZWxlYXNlMjMtbWFpbnQKKzM1ODMxIGEyOWJhYzBhZTkwNWI5NGFiZmFiYTAxZDAxNDA0N2E4MWM1NDQyOTYgcmVsZWFzZTIzLW1haW50CiszNTgzMiAyNmUwOTBjY2JiNjRjMzdkMGI3MTliYzIyNDU0OWY4YzNlNzRjOGEzIHJlbGVhc2UyMy1tYWludAorMzU4MzMgNTgyZGNhMDJlNjBmNjU3YTkwNTE4NjM4YjllZGVmNzBmMTJlYjU2ZiBsZWdhY3ktdHJ1bmsKKzM1ODM0IDJkN2IwY2EwYzI2Yzk2MDM2NjM3OTFmMTI4ZTM5MTZiNDEyMWY3Y2UgbGVnYWN5LXRydW5rCiszNTgzNSBlOTAyNjlmYzE5MzY1YjEyYWM3NWRmY2E3Y2QwNGFkMDM2Mzg0ZjNlIGxlZ2FjeS10cnVuaworMzU4MzYgMzcxMjFjOGI2OTFkYTA4YTBiZmVhNWUzNTYzYjk0ZDYxNTRhMWU2YSBsZWdhY3ktdHJ1bmsKKzM1ODM3IDk4YTgwNzg4ODM1YzA2NjBlNmJjNGU4NTUwNzdlNmI5YjE0ODFiNGMgbGVnYWN5LXRydW5rCiszNTgzOCA0YzgyNTU4YjE1ZmIzYjY0MDlmMzE2MjY3ZjhmMjM3MjQyMjIxNDVlIGxlZ2FjeS10cnVuaworMzU4MzkgYTFiMzc0ZmYwMTg0MTY0YTQ5ODU1NTEwOTRjNTA3OTg2YjViNWEyNSBsZWdhY3ktdHJ1bmsKKzM1ODQwIGMxM2JiN2Y0YmNkMTg4YTcwZTNiZmZmNmFkOTlmYzhhZDkxZTVjNjYgbGVnYWN5LXRydW5rCiszNTg0MSA2MzVlZjExMDY1OGVmOGQzYzg5NzUwZDU4NzY0YjZmMDU0YWY0MGIzIGxlZ2FjeS10cnVuaworMzU4NDIgZGI2YTZkMzkxYTk5OGY1MmUzMjVhYThlNWE3NjRkOTY2NTBmNDFlYSBsZWdhY3ktdHJ1bmsKKzM1ODQzIGI1NTk0ZDcyNzlkZjY5ZTM1YmQxYTdlNDQ1NmZiNWJjZTljYzM3ZTYgbGVnYWN5LXRydW5rCiszNTg0NCBmNDM3NmY3Njc0YTIyMmU4NmZlNTk3NTIzYzk1YWJjY2JiYzRlZWQzIGxlZ2FjeS10cnVuaworMzU4NDUgYjljNjU4YWMwZTIwY2Q2YjZiZjU0ZDA3ZmJjZmQwZDE5NzFkODNjZiBsZWdhY3ktdHJ1bmsKKzM1ODQ2IDY5NmQ5MmVmZjAyMmZlNGY4NTk4ZGZmNWEwYTFiMmY5N2E4NjY3YWIgbGVnYWN5LXRydW5rCiszNTg0NyAzM2Y2YTE1ZGJmNmNmMDFkOGEzNzg4NjUzM2VlYTIyZGUzMzFjNTdmIHJlbGVhc2UyMy1tYWludAorMzU4NDggMDBlZWEyODEzNWY4ZmI3MWIxYTgwMGY2OWEzZTBiYzg1MzZkMTExYyByZWxlYXNlMjMtbWFpbnQKKzM1ODQ5IDM4MzEwOTQzM2E5NzI4NGY3MDQxMDY0YzM3YzMzNmJhYjhmMmEyYjAgcmVsZWFzZTIzLW1haW50CiszNTg1MCBiYTMxMjE2ZTM3YzhmMjFhNTcyYzZiYmMwZTI5ZWJjOGJhM2Q0YWU2IGxlZ2FjeS10cnVuaworMzU4NTEgMGIzM2UzNzM3YjRjYmQ3YzM3NjdlOWQ3YzRkM2U3YjU4MGQ4NDA3ZiBsZWdhY3ktdHJ1bmsKKzM1ODUyIGRjYmUwNDJiODkyZGY1YmJhOWY1NTNiMmE3NzY2YzU0ODVhNjY2MzAgcmVsZWFzZTIzLW1haW50CiszNTg1MyAyMmIwODAyYWJhNzQzN2YyNmVhZDYxMDdkYzA1NWRkZmU4MDg2M2YyIGxlZ2FjeS10cnVuaworMzU4NTQgOTFmNzZjZjQwNzNhMmFlOTRlOTU4YTViY2M4ZTk5YzJhYWEwMGIzNyBsZWdhY3ktdHJ1bmsKKzM1ODU1IDM1ODZhNzgwMWJkYWYzNmM0ODViNjQ1Y2RiNjY4ZWYwNzI4ZGZiNjggbGVnYWN5LXRydW5rCiszNTg1NiBjMzZlYTA3OTQ5MjAxZTc1MTcwOGJhYzQwYTg3ZjA5ZTMyMTkwNzQwIGxlZ2FjeS10cnVuaworMzU4NTcgZDgwM2FmY2U4YWM0ZTdmOGYzYTJhY2UxZWI5M2Y2OWMyNTMyOGM0NSByZWxlYXNlMjMtbWFpbnQKKzM1ODU4IDEzNmVmYmIxMTE3ZGViYjNhMDQzODNiOTk4MWU4Nzg2NjU5YjI5M2MgbGVnYWN5LXRydW5rCiszNTg1OSA5NTVlMjA2ZTUzZGMzNWUwNDljNWFkNTA0NTEzYTc1NDdkOTY3YjY5IGxlZ2FjeS10cnVuaworMzU4NjAgNmRiNDhjNWJkYjI3YWJlZWI2YzFmMjRkOTMxZTY2ODMyMzI3Y2E3MCByZWxlYXNlMjMtbWFpbnQKKzM1ODYxIDUwZDhhMjcyMTRlNmY4NTM4YTFkYjJmMzE0OWYxNWQ2ZTE2YTY2ODggbGVnYWN5LXRydW5rCiszNTg2MiA2NmVkZTAzODdmMzY3NDI4NGEzNmM0YTBjNGJmYWJiZDYwNzkxNDNmIHJlbGVhc2UyMy1tYWludAorMzU4NjMgOWY2ZDQ1ZjNjMDIzZDU3MTlmYzY0NDNmMTEwNzBhZDlkZGFhYzVmMiBsZWdhY3ktdHJ1bmsKKzM1ODY0IGMzOGEzOWQzODQ4OWIxMjY0YjIyYTg1YWI3ZjA2N2JhYTgyZmQ1OTEgbGVnYWN5LXRydW5rCiszNTg2NSA1YTIyNDY1ZmRhMjRmOWQ2ZjlhYmRiMDE4NDIwMWNjNWViNjk0NTExIHJlbGVhc2UyMy1tYWludAorMzU4NjYgZTg1MzU1Y2YxNzVhYWUwODUxZDFiMGFmMzgzZmI3Y2U2MDA1NmYzYSBsZWdhY3ktdHJ1bmsKKzM1ODY3IGQwOWJhZmI5NzY5ZjdlNWM3ODMwZjEzYjhjMTRkMDFhOGIyMDY2NTEgcmVsZWFzZTIzLW1haW50CiszNTg2OCA4ZmUxYTI2NjJhYWE1Mzg4MDBmY2M4OTcwNDU2NGFmMWIzNTgxZmViIHJlbGVhc2UyMy1tYWludAorMzU4NjkgYzc5Y2MwNDAzYWNmZWYzOWQ0YjA2ZGY4MTk2OGNhZmRmNGJkNDdiNyBsZWdhY3ktdHJ1bmsKKzM1ODcwIGM2ODAwODBmOTAwYzE2YzYwMjA4MzZiM2FlZTlkMGY1YmMyOWUyMzYgbGVnYWN5LXRydW5rCiszNTg3MSBlOWJjZTgzN2MxYzM4YzlkZGI1ZTY5MGJiMGQ1NWRkZTZlZjExMDc4IHJlbGVhc2UyMy1tYWludAorMzU4NzIgODYwMWM3ODVjNjgzZGVhMjJjNThjYzc4NDhkMzg3YzQyYzUzYjgwMiByZWxlYXNlMjMtbWFpbnQKKzM1ODczIGNmMzkyYjkzNmEyZTQ5NDIyMjBhZTdkYmNlZDIxY2NkMDAxODI5ZGQgbGVnYWN5LXRydW5rCiszNTg3NCAxN2JmOTVlZDc1NjJjOTgxMDZhNjAxY2UwOTNiM2FhMjI4NWVkOGI5IHJlbGVhc2UyMy1tYWludAorMzU4NzUgMTUzOGE4Y2ZiMGRkYTU0YTQyNGYyMzFlNGMxZDUxNDRjOTQxMzY1YiBsZWdhY3ktdHJ1bmsKKzM1ODc2IDUzYWJkOWFkMTkwOThmOTNlNTc3NTMwYzU4ZDE4MTY3OGNjNDFlNmIgcmVsZWFzZTIzLW1haW50CiszNTg3NyBmNjNkZDI5OWE2MGIyNzM1OWFhOWM3MzM2MWUyMGZhZmM4YWU5ZDE5IHJlbGVhc2UyMy1tYWludAorMzU4NzggN2FmZWI4MzZmNjZjNTZmZTc2ZjA5MWFlOTIzY2JjMWY5NDhkZjlmZiBsZWdhY3ktdHJ1bmsKKzM1ODc5IGEzOGNkNjNkMTdhNzRlNGViMzVhMzM3N2Q3YzE4MDlkM2YyODEzNWUgcmVsZWFzZTIzLW1haW50CiszNTg4MCA2NzU4YjYzMGFjYjdlZjg2MTQ0OGUwYjE1MWNlNDZmYjMwMTMzNWI2IGxlZ2FjeS10cnVuaworMzU4ODEgNjk0MzNmYzFjODE2Y2IyMmExNmZlOTYzMWM3YjUxYzkxY2Y0OGRlYSBsZWdhY3ktdHJ1bmsKKzM1ODgyIDQ2OWRjYjBhZDczOGJkNGQwMjA4OWJiNzhjNTQ2MDZmNGRlN2YxOGYgbGVnYWN5LXRydW5rCiszNTg4MyA2MWIyNmI5NWViMzNlY2M0NzQ5MjkwNjNjY2YxZTI4N2Q2MWNmNjZmIGxlZ2FjeS10cnVuaworMzU4ODQgMTIxYWFhNGJhOTIzNThmZWMxOTA1ZTFlNGRmYjFmZGQyZGQzN2VlZSBsZWdhY3ktdHJ1bmsKKzM1ODg1IDFjMjM4MWQ3OTdjMGY3NThkYWM4NWYxYmM5OGU3YTI0Zjg1NGZkNjEgbGVnYWN5LXRydW5rCiszNTg4NiAyN2RhODdjOTMxOGY1MzM0ZDJmNTgzOTMzZDdjYjQ5NmViYWY0ZmQxIGxlZ2FjeS10cnVuaworMzU4ODcgMDJmNzY5ZDdlNGE4ZTE3NGQ1Nzg0ZWY3ZTA5YWI2ZjE4ZTFiMmRmMyBsZWdhY3ktdHJ1bmsKKzM1ODg4IDI0YzQ2MDAxNDE2ZTFhMDUyNDc4YTllZDJiMDQ5YTEwNWRlNDA4ZDkgcmVsZWFzZTIzLW1haW50CiszNTg4OSBiMzE5ZGIzODY5ZDgyMmE2MjJjMmQ5ZDRiODFhZjdmNjk1ZTlmMzlmIGxlZ2FjeS10cnVuaworMzU4OTAgNjMwYTA5MTVhMzEwMWJlYzdhMDg1NDQxYzFhMmQ2YmUzZTJjYTFjYSByZWxlYXNlMjMtbWFpbnQKKzM1ODkxIGM3MDEwNzYwZThhZDE5YWJmZWQwY2VjMDZkNTcyMDk1YjFjNDVjZmIgbGVnYWN5LXRydW5rCiszNTg5MiBhYjBjOGRkYjJjOTI1MjhmNDQxYTA5ZTIzYmE2MDdmMGM3ZmRlOGJiIGxlZ2FjeS10cnVuaworMzU4OTMgZDY1ODljODhkMjNiN2E1Y2M2ODQzZWU0NzUwZTI1MzEzZmY3NjJiNyBsZWdhY3ktdHJ1bmsKKzM1ODk0IDMxOGJmNjk4ZTQyNWI1ZGRkNzkwMzVlNDk4MTdmMjBhNzRlYzZmNjcgcmVsZWFzZTIzLW1haW50CiszNTg5NSA2MDZhYWU5NWYxMjg5MjJmOGVmMTg1ZjVhMmFlNDBjMmE5ZDkwYmRlIHJlbGVhc2UyMy1tYWludAorMzU4OTYgNjU3ZmIyYTUwZThlZDMzNzA0ZWYyZDZlMjc0ZmFiNjI5MWQwYTIzZCBsZWdhY3ktdHJ1bmsKKzM1ODk3IDUyZTE0MGNhMTQ2YzVlY2U1MjdiNTIxOTczOWJmOWIzODRiY2M4MDQgcmVsZWFzZTIzLW1haW50CiszNTg5OCA0NWJhMmM2OWMzMWZkZGI3MmNhY2IwMTliMDY2Y2ZiZTkyOTA3ZWE3IHJlbGVhc2UyMy1tYWludAorMzU4OTkgNWUxN2QwNTMzYWQzNjQxOTdlNzM0YjI0YmQzOGI4YTVkOGJkZGE2NiByZWxlYXNlMjMtbWFpbnQKKzM1OTAwIDAyZjg5ZDEyZjAzNmY2YTgzMjFkZDJhZmY3YmUxZjc4YTkzZGNlNjEgcmVsZWFzZTIzLW1haW50CiszNTkwMSAyMDY1M2M5MDNkMWNhZmRhMmQwMTJhNzUyZTJmMzI4NWUyNjc2MDRiIHJlbGVhc2UyMy1tYWludAorMzU5MDIgZjc4ZDkzOGQ3YmIwODA0YTc2YjhhMDRiNmE5NmY2ZDlmOTE2N2M2ZCBsZWdhY3ktdHJ1bmsKKzM1OTAzIDI0NTgzNWVkOGRlOGRmMzc3MzgzZDFiODY1ZDliM2E5M2E1YjU3ZjYgbGVnYWN5LXRydW5rCiszNTkwNCA3YWZiMTNjMmQ1MjZmNDgzNzNlZGJiOTM2NzE4YjFiMzQxMzM4Y2U1IGxlZ2FjeS10cnVuaworMzU5MDUgMDU5MzE1OGQxNGYyZDVkMTI1M2JjOGJkZjA2MWYyZWY2NThjZWRhMSByZWxlYXNlMjMtbWFpbnQKKzM1OTA2IGFjZTNmMTNjMTgzNmY3OTBiYTZmNTJhNjc3MjFjZjkzMmUwOTk1YjkgcmVsZWFzZTIzLW1haW50CiszNTkwOCA1MmZlOTNiNjU2Y2Y1OTNkNDk5NjYzMDZlMmY2NjU3NTBjODQ3YjYyIGxlZ2FjeS10cnVuaworMzU5MDkgYTRiNTI2YjUwYzEyMjBlOTFmODg0NDE4ZjQ1MjAxYzlkNTQ5ZWRiNCByZWxlYXNlMjMtbWFpbnQKKzM1OTA5IDM2Mzk4NjFkMDI2NDZhZjFkYTMxMjNjMjU1NjBjNGRiM2Q3ZWRiY2UgcmVsZWFzZTIzLW1haW50CiszNTkxMSBlZTdmY2RlNTYzNmVhMTcwZjgwODM0MjQ0OWFhYjdiNTA2M2NlYWExIHJlbGVhc2UyMy1tYWludAorMzU5MTIgOWZlNDU3OTdjMDk3ZjQzODgwNjBmYWMxYzNiNzlmMDRmYzlmOWQwNiBsZWdhY3ktdHJ1bmsKKzM1OTEzIDI4MmRiZDliMWVkNmI3YTY5MjUxNjM5NWVhZjdkYmUyZjBmNzBmMTggcmVsZWFzZTIzLW1haW50CiszNTkxNCA2NzcyMzkxMDgzYzliNzUxZTQzY2Q0NTQ0YmQ3ZDhjZWJkNmU0OGJmIGxlZ2FjeS10cnVuaworMzU5MTUgZDZkZWFlOGJmNzliYjA1MmFiZGIzYWExMzA4MzMyMjEzYmYyMzk1NiBsZWdhY3ktdHJ1bmsKKzM1OTE2IDAwOTQ5YmM2N2U0OWJkZThmYmMxZWE5ZjY2N2U0MzUyODBmZDI2ZDUgbGVnYWN5LXRydW5rCiszNTkxNyA4YmQzMmM1MTU0NWUzZGY4MTRiMTQzNWNlYmZmOWZkYTUzZGRiNTcwIGxlZ2FjeS10cnVuaworMzU5MTggM2VkZjhkYjZmOGJmZDk1OTdmZWQxMDI5MDA5NTA5ZTgzYjFkYWI2NSBsZWdhY3ktdHJ1bmsKKzM1OTE5IDlkNTg0N2I4ZjMwMTFiNmZiMTJlMjUxMmNkNjcyNjMzOWIxOGUwNmMgbGVnYWN5LXRydW5rCiszNTkyMCBkM2NhNmJkY2JmM2M0NjM3NjczZTk4NzQ4ZmFjNDQwYjlkYWZmYmU4IHJlbGVhc2UyMy1tYWludAorMzU5MjEgMTYzODZjYmNhYjk5YzFhYzE3YmZiNTY4YmI5N2E4MGE2ZDc4YWI1MyByZWxlYXNlMjMtbWFpbnQKKzM1OTIyIDJkMzQ1ODVjM2I5OTQ3ZTY0OGRlYTM4MTE4YTMxNzg4MTI5MjA2NzkgcmVsZWFzZTIzLW1haW50CiszNTkyMyAzNzUzOGEzNmI2ZTJiMmFjODBjZTBlNDAzM2Q5ZTc3NmI2YzNmY2YzIHJlbGVhc2UyMy1tYWludAorMzU5MjUgYjUyNTU1NTJhYTZkYTQ5ZmI2M2Y4M2NhZmU0NDc2YWQzZTE0YTM3MyBsZWdhY3ktdHJ1bmsKKzM1OTI2IDk2YjYyNjk5YjIxOGY5ZGY5ZGRlMDA2M2U4ODEyODA4YTE4ODc4NjEgbGVnYWN5LXRydW5rCiszNTkyNyA2NjcyZjczMDkzZGEzMzNjODZjMWY0YTBmYTllZTI2YjliYWU4NTUwIHJlbGVhc2UyMy1tYWludAorMzU5MjggN2UzYTJjMjc0YjM2ODNmZjI2OTk2MGQ2YjM4NzNhNTBjODQwMTMyNSBsZWdhY3ktdHJ1bmsKKzM1OTI5IDRhN2Y3ZTgwMTZmYzI2YjVkNTg0MzVkMzZiZjdiMjAzOTBiNTg1M2YgcmVsZWFzZTIzLW1haW50CiszNTkzMCA5NGI0ODQ1ZTRkYThjNDk2NGU2YTI0NmNhNWQ4Nzk0NTBjZTgxMmJlIGxlZ2FjeS10cnVuaworMzU5MzEgMzAwZDVkNDYyMzg3MjE1ZTIwMjllN2ZhMjdkNjljODRiNWQxMjgzNSBsZWdhY3ktdHJ1bmsKKzM1OTMyIDNhZTAxYTExMDgwMTIyZmE0N2M1NWNlMTYzMmI5MGY0YTAyMzlhMDMgcmVsZWFzZTIzLW1haW50CiszNTkzMyBmYTc1M2MxNmM2MzMzYmYzZjk5MmU0M2ZjMmVlNWE3NTMwMzVhMWE2IGxlZ2FjeS10cnVuaworMzU5MzQgMWQxMzU3NDkwNmVmY2M3MTljMDAxYWFiYTM0YjU5ZGFjYTE4NjM3MCBsZWdhY3ktdHJ1bmsKKzM1OTM1IDcwMDIzYWYyMDg1YWI1MGVjMzIzOWM4NGZmOTY1MjljZjU4ZmRkYWYgbGVnYWN5LXRydW5rCiszNTkzNiA4NGRmYTlhNjdkYTE0NjE4MzIzMWEwOTcwNzA3MjBkYjRlYWM4YmJiIGxlZ2FjeS10cnVuaworMzU5MzcgYjZlNGJmMzM2ZGI4YTI0NzcxNTRhNzBkOTQ3ODkxZWU4ZDI4NzBjOSBsZWdhY3ktdHJ1bmsKKzM1OTM4IDI5YTU5ZjY2MmRkMTA0OTEyZWVlM2UyYTQzZWMwNWMzMmYwMzU5NTcgbGVnYWN5LXRydW5rCiszNTkzOSAwZGE0NGVhMDk5ZjU2OGUxZWU0MThjZDUyYmY5MjIyN2VjYjM0MGFjIGxlZ2FjeS10cnVuaworMzU5NDAgZGQxZTU1ZGVhZjUyZjhkYjNiOWIzMzQzZjkyZGQwMGQzZjNkNDExMSBsZWdhY3ktdHJ1bmsKKzM1OTQxIGMyNWE4YzA0ZGUzZTYxNTA5NDYwZjBjMThlZDVmOTNkNDMxNmY1NGIgcmVsZWFzZTIzLW1haW50CiszNTk0MiAzMDJkMzk5Y2ZkMzdlZWIxYjk3ZGJiYzgxOWU2NjFkMzMxNzgzMmMxIGxlZ2FjeS10cnVuaworMzU5NDMgOTU1NzdiNjM1YmI0MTkyODIyZTM0ODk1Njk3Yjk5NzUyYjFhNDlhNiByZWxlYXNlMjMtbWFpbnQKKzM1OTQ0IDVmNGYyZjUzNmY5NjFhYjIwMGRmZTczMmU0ZDI4ZThjNDIwZDFjODAgbGVnYWN5LXRydW5rCiszNTk0NSBkMWE5ODc0YzA5YjY5NGRhYzBiYzg3ZmIwYWIwNjVlMWY2OTI2NmFmIHJlbGVhc2UyMy1tYWludAorMzU5NDYgYjllZGQzNDE4YTMxZDkxNjQ4ZDNlYWZhNGU3Y2FmNDZmMmMyZTE0ZiBsZWdhY3ktdHJ1bmsKKzM1OTQ3IGIxNjY0YTgwMzQ4YWRhZjhhZDFiMGVmMDBhY2U3ZWExOGEwOTZlYjYgbGVnYWN5LXRydW5rCiszNTk0OCBiZGEwNjZjOTZlNGYxYTIzOGQzYjFmYmRmZWJjYTA2MTczZDM1MjhhIGxlZ2FjeS10cnVuaworMzU5NDkgYjVlNDBmNWQwMDBiNmE3MzBiMGQxMDVmMGVkNDc0MDUyMTQ5OTVmYSBsZWdhY3ktdHJ1bmsKKzM1OTUwIGFmZjY5ZjgwZjk5ODI1NDkzNGZlOTUwYmRkOWI2NWNkNzFhODMyMmMgbGVnYWN5LXRydW5rCiszNTk1MSBiNWExZTM2NzNlNWJlMTU5MTQ2YzUxNTBlOTNkNGZjYTM0ZGE3NWQwIGxlZ2FjeS10cnVuaworMzU5NTIgOWU0ZDE0NWJiNWNjNDY0MTQ0ZjY5NDVkNTEzNWUwMTExMWVkNTJiYSBsZWdhY3ktdHJ1bmsKKzM1OTUzIDI3N2Q0ODNmNTk2ODk2MmRiMWRjYmE2YWRhODRkZWFhOTJiOTdiNDkgbGVnYWN5LXRydW5rCiszNTk1NCBiNThkMzBmMTE2ZTJhODI0Y2UzNzY3MDRhYTczMzY0MzMyMzcxNzIyIGxlZ2FjeS10cnVuaworMzU5NTUgMzFiZGJlYzhmMjgyYzA2YjFmMmIzZDliYmU4ZDE0ODU3ZmQ2YjNlMSBsZWdhY3ktdHJ1bmsKKzM1OTU2IDRlNWI5NzhlNmI3ODAzNmQxMWQ2MTcxZmQ2NWNhNjIzYWEzZTVkOWEgbGVnYWN5LXRydW5rCiszNTk1NyBjMWNmYzVlNDgzNGQxOTNlNzVhMjUwY2IyZGFlOWZmZTY0NDljZmNmIGxlZ2FjeS10cnVuaworMzU5NTggZTA4MDM0MDdlMzc3NGU3M2MxNTZiZTk5NTk0Y2I3MzY1NzM1ZDQxYiBsZWdhY3ktdHJ1bmsKKzM1OTU5IGMzOTUyN2UyODAxMGZjMWVmNzFiODcxMmZmZmYxNWU3MzU3YzA0ZjIgbGVnYWN5LXRydW5rCiszNTk2MCBiMDU2YmJiNGVkZjk5NGRiMDdiMzY2NDZhOGY2YmUzNDllY2UyNWQ4IGxlZ2FjeS10cnVuaworMzU5NjEgODk5YTFmODhjYzVmMjQyZThjYzRjODA5ZTQ0ZjFhMzk3MzkxZjUxYyBsZWdhY3ktdHJ1bmsKKzM1OTYyIDMwNGEzN2MyY2I0MjU3YjZlZDNlMTdiYmQ5MDlmZDMyNzEwZTgxYmEgbGVnYWN5LXRydW5rCiszNTk2MyBhYTIzMzA2YTNmMjY5OTZhMWVhN2MxOTM5ZTlhZTVmMDNhMGUyNDk5IHJlbGVhc2UyMy1tYWludAorMzU5NjQgY2UzYzI3NzdiMjIyZmY1OWFiN2MxMDBkODA2NjExMTZhMjU5OThkMCByZWxlYXNlMjMtbWFpbnQKKzM1OTY1IDM3Y2FjMDY4ZjAzZmQ0NmUwMWRlOWY4NmE3OGYwNWZkNDMwMTllODYgcmVsZWFzZTIzLW1haW50CiszNTk2NiA1OWFhNTM0NThhOTNiNjI0YjBkZDZjNTRjNjFmOTgyYjBjZjliMGNiIHJlbGVhc2UyMy1tYWludAorMzU5NjcgYTEwNGFhNTQ5YTAyMmEwNmUyMzliMjE4N2ZlZGQ3MGQ4NzhhNzFjMyByZWxlYXNlMjMtbWFpbnQKKzM1OTY4IDVjYjI0ZGI4ZmM5NWIzNTljNjIyNWFjZTkxYjBjMjYyY2QzNzQzNGYgbGVnYWN5LXRydW5rCiszNTk2OSBiYWVkZjVmZmIyNmI0ZDJiNTA2MzUxZjI3MGVmMjIwODE1YTk3YjI5IGxlZ2FjeS10cnVuaworMzU5NzAgMDkyYWMxM2E0YzQwYTJmYTJkMTEyNTA3MTU4ODVjMjYwOTEzYWJiOCBsZWdhY3ktdHJ1bmsKKzM1OTcxIDY1ZjlhZDliYzgyOWRjOGI1OGVmZWI4NTVlYTU0Nzk2OTVlOWYyOGIgbGVnYWN5LXRydW5rCiszNTk3MiAwYWZhODFkYjRjYjdkMjRmZjJkOTlhZjkzZWQ1NzkyNzVhOGY5MGIxIHJlbGVhc2UyMy1tYWludAorMzU5NzMgMjY2ODg0YjA0OGJkMTI3Y2QzOTQwYTBhOWZmOGRlZjgzYzUxMzEyYSByZWxlYXNlMjMtbWFpbnQKKzM1OTczIGE3NGY5MDgxYzY5NzA4NzhjYWJlMTUxZjk2OTYxNzU4NzkxNTQwMGMgcmVsZWFzZTIzLW1haW50CiszNTk3NSA4NTM2NTk4Y2YwNGQ2MzY5ZDM1ZDFlNmNkNGQyYzFlMDI4MDFlY2ViIGxlZ2FjeS10cnVuaworMzU5NzYgZWZiODRlZDczNzdkZGQ2YzM5NWQ0ZjBjMDE3NWY3MzUzNWM3NGFiMyBsZWdhY3ktdHJ1bmsKKzM1OTc3IDU2YTRlYzA2NjYyMWRhMzkwNDBjMjc3NzBlYzAxNzk1ZjE4Y2ZhMTcgbGVnYWN5LXRydW5rCiszNTk3OCAyODYyYmY5ZWY5MTNlZjA1YjM5MjM5OGIyNzdkYjU2MWVhNDY0NTU4IGxlZ2FjeS10cnVuaworMzU5NzkgNjc5ZTVjOGVmZmFlMjExMmNhOGE0ODM3NjA4N2JlM2ViMWM2ZWE5YyBsZWdhY3ktdHJ1bmsKKzM1OTgwIDJjMTY5Y2E1ZmE2OWI4NDlhZDNkZmU0NTExYjE2ZmQxNTc0YTg1ZmEgbGVnYWN5LXRydW5rCiszNTk4MSBhZWM5Yzk4YTQ3ZDJlOTUzNjYyNGY4N2UyZDhiZTE3NTRiZjQwNjBlIGxlZ2FjeS10cnVuaworMzU5ODIgYzY1ODU1YzVkNTZiMWQxNDcxYjZmZGNkZjI5Zjk1NDU4ZjFmZDIyMiBsZWdhY3ktdHJ1bmsKKzM1OTgzIGU1MzE2MjI1MmZiZTUzNzhhNTBlNmVlYTVhNzI4NzY0NDc0OGNhMmUgbGVnYWN5LXRydW5rCiszNTk4NCBmYWQ1MmZmZDg4OTI0M2JhMWQwYzVhMWRhMzc0NjljZTFjZmUwZDMyIGxlZ2FjeS10cnVuaworMzU5ODUgMThkNmE4Zjk5ODIzODYxNGFlOGY1ODZmZjBhMjYxMmNjNTBmYzQ3ZSBsZWdhY3ktdHJ1bmsKKzM1OTg2IDQ0ODI4Y2MxMzZlMGMwYmQ1ZGYyZTU0Y2ZlMjUxMDdmMDIxZTkxOTEgbGVnYWN5LXRydW5rCiszNTk4NyBmOWQ1NGU5YjMwYmM4MTlmNjUzMWVlMWQxMTdiODM4MWQ1YzUzMjhkIGxlZ2FjeS10cnVuaworMzU5ODggZDA4N2E5NWU4MDMyMzE5MDJiMjhjMTBlMGUyMGI0YTJlNzNkZGJmNSByZWxlYXNlMjMtbWFpbnQKKzM1OTg5IDYwZWYxZGIxMGNlZmJiMDgyMTE2NjRiODBjMjk0ZDI3NTA2OTU2NjYgbGVnYWN5LXRydW5rCiszNTk5MCBmOGZmYTNlNmM0ZjJkZDhkMDA3NDM3NGVhMzFhNTU4ZjVkMWM5ZDVlIGxlZ2FjeS10cnVuaworMzU5OTEgYWNhNDQ1YTZiZWI3OTFhN2E1MzJmYTZhNmYzMzA3NGM5MWQ0NmY5MyBsZWdhY3ktdHJ1bmsKKzM1OTkyIDk3YjkwOGE5OTcxYTY0ZjBkMWNiMTNkMWVlZWY3MGQxODg5NWMyMzkgbGVnYWN5LXRydW5rCiszNTk5MyA3NDdiMmRjODI0NGZlYTMxZGIzOTE3OTdkNjlhNjZhMTg4NmRjOTY5IGxlZ2FjeS10cnVuaworMzU5OTQgYzc5YmVmYjNjMzE0ZDVmNWFlMWMyN2RhNjMyODEzOGE2MjUyZDZlMiByZWxlYXNlMjMtbWFpbnQKKzM1OTk1IGUyYjgxZjJjOGE3MGRhMjVlNzlhMjMwMTM0OTM4ZjA0ODA3YjQ4NTYgcmVsZWFzZTIzLW1haW50CiszNTk5NiA4ZWU1YTU2YjgwMzEyYmNjYTJkNWJmMWIzNDRhNzI1NDJmZDZiZTU5IGxlZ2FjeS10cnVuaworMzU5OTcgZWJhNmJhZWVhNGVhYWY4OWI5OGE4MmUxNzA0Yjc5MTk0NTIxZmQzNCBsZWdhY3ktdHJ1bmsKKzM1OTk4IGQzNjFjMTM1ZmE3NGU4ZDhmZjUzMGQ1YmFmNDgwYjY0OTk4MGJkMjUgbGVnYWN5LXRydW5rCiszNTk5OSAwNDFmODljOThjMzViZWU5MDFlMzhmYzRlMDZjYjA2YjZmNzc1MWQyIGxlZ2FjeS10cnVuaworMzYwMDAgMjc1YTc3ZjlhNTAwNjY0MzQxNDVjZGQ4ZWI3ZjljZGFmNTYyNmJiZiBsZWdhY3ktdHJ1bmsKKzM2MDAxIDU5YmIzYjFkNjA1OWQzMjYwMzg0ZDU0Y2E1NjY0YmRjZWVhM2ViMTcgbGVnYWN5LXRydW5rCiszNjAwMiBmM2QwNTY4Yzk0MzJmMGJhYWU4ZjRjMWU1NmE4YzkyMGFkN2I1ZjYwIHJlbGVhc2UyMy1tYWludAorMzYwMDMgMjI2NjI1ODljNGUyMDk4OWMyZjAwZDU4M2ZiYmFmZDJkM2FiNDIxNyBsZWdhY3ktdHJ1bmsKKzM2MDA0IGE3OTliMGQxYzU2ODdlODY5OWQ2N2ZmZGUzODRmNDNiM2RiYTVlYmYgbGVnYWN5LXRydW5rCiszNjAwNSBmMTU5YjE1ZjFmNWNiYWZlZjg5OWZjNWI0M2QxYzhkZjEzOTllYzVmIHJlbGVhc2UyMy1tYWludAorMzYwMDYgN2M0NjFhZWU3NDFiZWExYjY1NmM5ZjE1OTIzNWM1ODQxZDhiNDA5MyBsZWdhY3ktdHJ1bmsKKzM2MDA3IGFhMzlmYWMyYTlmZGY5ZmE3YTBlNGY4YzEzZjBhYjM2YjA0MjhmMzYgcmVsZWFzZTIzLW1haW50CiszNjAwOCBkZjliZDEyNzczMGFkYzllODJiNjc4Y2JhOTI2ODAzZTAyY2VlNWIzIGxlZ2FjeS10cnVuaworMzYwMDkgNzMwYTAzZjVkOGI0ZGUyZDIwNGRmNzE0MWJjYTY1NGRjZjMxZTg4ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDEwIGM3ZDliZTczYzdkZGIzMzVhODVmNDkzOTk4YWIwYmJkYTNlY2YzMTIgbGVnYWN5LXRydW5rCiszNjAxMSAxODVmNWQ2YTNhODhhOWExM2E1N2ZiMjIzYzJhYzU1YThlNDQ4YjA3IGxlZ2FjeS10cnVuaworMzYwMTIgMDNjODk1ODM5OTc5YzNkY2ZhMzEyZmQyOTVmZjAyNGQ5Nzc1Y2UxNCByZWxlYXNlMjMtbWFpbnQKKzM2MDEzIGFiNWMwODI1N2FkN2I0ZTc3OWM1ZDIyYTU0OGM2Yzk0MDFjZmJiZDUgbGVnYWN5LXRydW5rCiszNjAxNCBiM2M5ODFlZTlhZTk1NTgxZmE2NjAyZTRmNjNmZDAzZGYzNjNkNzUxIHJlbGVhc2UyMy1tYWludAorMzYwMTUgZDNhYWQzNzdhNWE5MGQ5ZmYwYmE4YzEzNWE5MDQzMWE0ZTJhNGJiYiBsZWdhY3ktdHJ1bmsKKzM2MDE2IDg4MDcxZDIwOGIzNGFhNGVjNDMyYmRhNDNlMjBkZjBjNTNmNDM3NmQgbGVnYWN5LXRydW5rCiszNjAxNyBhYjUxOWRlMTc2YmI5NDhmNDU1YzkxMDJlZDAwZjE3ZGQ3ZDcwNjdmIGxlZ2FjeS10cnVuaworMzYwMTggM2E4NGUyM2IwNDJmNDVlMDVjNzhjODMyYjZhZTJiZGQ1NGQwZGQ1YSBsZWdhY3ktdHJ1bmsKKzM2MDE5IDZmMjY1ZjJjY2IzM2NhYjdlM2YzM2UyNzE2NDRiYWRlNjEzNjRjOTIgbGVnYWN5LXRydW5rCiszNjAyMCA2ODIyMDI2ZDNjM2I0MTlhOGJkZDEzNzY3NjE5NzBhNmQwOGExMDkxIGxlZ2FjeS10cnVuaworMzYwMjEgMjJmZGFlN2JiYTFhZjcwNTExMjJmOTNjYmFjYzQ3MmVlY2FhOTkzNiBsZWdhY3ktdHJ1bmsKKzM2MDIyIGU2MjFlMmExYWIzMTAyZDNkNzMyMDIxMGNjNDQ5MGI1N2JjMWMxYWQgbGVnYWN5LXRydW5rCiszNjAyMyBlNWIwNDc3NjUyODViMzcyODViNzM1Njg4MTE0MzgwZWM4MzQ2N2U2IGxlZ2FjeS10cnVuaworMzYwMjQgYWJkNGI3OTU1MWQyZWE5MWZhOWJhOTE4ZjE0YjZiN2FhZjJkMWQyMCBsZWdhY3ktdHJ1bmsKKzM2MDI1IDlhMzkwMWJmNjIyMmY5OTE5YzIwNmE2Yzk5N2U3ODJlNWMyMDE2YzQgbGVnYWN5LXRydW5rCiszNjAyNiA2ZmZkZGE0Y2MyMjIxNWJjMzZiYTFmOGI4YWZhMTRiMDYwMTVkZTdhIGxlZ2FjeS10cnVuaworMzYwMjcgNWQ5NDJiZWRkMjhmOTNiNmIzYjIyOWYwY2YxZDFkNjc1YjU0NjVmZiBsZWdhY3ktdHJ1bmsKKzM2MDI4IGI5ZDNhYTNjZGU4YTVjMWE0MDM3YmMyNjNiMmVlNjdjZWU4NzM2MGMgcmVsZWFzZTIzLW1haW50CiszNjAyOSAzNzcxZWE5YTkzYWFkYTcyZWQwMDllNGY2ZGE5MmY2MWJlMzNiMDk5IHJlbGVhc2UyMy1tYWludAorMzYwMzAgODRlOGZlOTEyNDQwZDRiMWI5NzRiZjQ0YmJmNzU2NjUzOTc0NGYwYSByZWxlYXNlMjMtbWFpbnQKKzM2MDMxIGViNDFhNDg5Y2MyZjc4ZDFkNDEyMjdjZmRmYTE5ZTJjZWUxYTljZDYgbGVnYWN5LXRydW5rCiszNjAzMiAwMTA1N2U0ZjBhNjJkMGQxZmVkZTZjMmVjMjljZjAxNDlmOGU3YzkxIGxlZ2FjeS10cnVuaworMzYwMzMgZWIwZjg3MjY4ZDcwYWUxYjI4NzY2MDM2NzJhZjI5MTE5YzU2Y2E0OCBsZWdhY3ktdHJ1bmsKKzM2MDM0IDcwZGVlMmIxOTNmN2Q1MzExNjU2NDVhZDZkY2Y0OWNlMjYwYWFiM2UgbGVnYWN5LXRydW5rCiszNjAzNSA2NDc4ZWI2YWUzYzAxZTg0NjkxZDk1NGE5NDExOWNkMjFiNmZlNDc0IGxlZ2FjeS10cnVuaworMzYwMzYgYjAwYjI2Y2JjMzAzYWZlMWExZjcyYWI2OTNmMmM0OWIxMGVhY2FlZiByZWxlYXNlMjMtbWFpbnQKKzM2MDM3IGMwODYzNjY0NzliMWUwMGI2ZDEwZWVjMWZlNTg4OTFjMTg1NjIyZjggbGVnYWN5LXRydW5rCiszNjAzOCA5MWVhZTFlOTI1NzgxYjU0YzIzNWQyZDM0MWQ0NTM5NzhjMjA5MGYyIGxlZ2FjeS10cnVuaworMzYwMzkgZmRmNzVlZWY2YTVjMzNhOGZmMmFjN2JhYWY0ZWIwNGUzNjUyYjA5MCBsZWdhY3ktdHJ1bmsKKzM2MDQwIDJjYzdmZjQyYjlhM2QxMTYyODM5NjlmZDZjNTBlMmZhNThmMTI1YjYgbGVnYWN5LXRydW5rCiszNjA0MSAzYzIxNTg4NzYxOTRhMWFjY2EyYzJkNjI2ZDk1ZGRhN2QxNTlhNGQ0IHJlbGVhc2UyMy1tYWludAorMzYwNDIgZWQyMjhlOGExMzlmYjkwODk3Y2IxZjlkNzhkMzdiNzk5NmRiMzlmNSBsZWdhY3ktdHJ1bmsKKzM2MDQzIGVmY2E1MWVmNzg5ZGFmNWE0Y2EwZGZlZjQxNWMzNDk1YjI5NzBlMzUgbGVnYWN5LXRydW5rCiszNjA0NCBiMTA4N2UxZDQ0Nzk2M2FjZWI5OTczMTQ2ZTg3YWNhYzIwZGU3ZDk3IHJlbGVhc2UyMy1tYWludAorMzYwNDUgZmY2OGQ2YTVhNDQxZjZiZDJmNTk1MzM1N2M0MzM3OTVmMDIzNTM1MiBsZWdhY3ktdHJ1bmsKKzM2MDQ2IDE5NTRiN2VkYmZlNzAwMDM2ZWI2ZjU0M2YxZDEzN2ExYmNjODE4YjkgbGVnYWN5LXRydW5rCiszNjA0NyA5OTQyNDYwNGQzNmEzNzdkMjkxZGQxMTc5ODdiODY2ZTRhOTUyMzBhIGxlZ2FjeS10cnVuaworMzYwNDggYjc5MWY2NTU0ZDI4ZjJlZWFjZDJkMWYwM2Q1MDZlYzllZTljM2M4YiBsZWdhY3ktdHJ1bmsKKzM2MDQ5IDNiZmUyZjQyYjhmOTM4M2Q2MDVhZmE1NGVhODViZWU5OGY3ZjM3MjQgcmVsZWFzZTIzLW1haW50CiszNjA1MCAyNzk2N2ZiYmE0OGYzMWQ0YTgyNTRiODYwMDAyMWRmYWY2NzRlN2RhIGxlZ2FjeS10cnVuaworMzYwNTEgNmZjODgyN2M0MDNjMTYzNDE4YjBlYjQ4ODNjMzIyMWU5OGM5YzE3ZiByZWxlYXNlMjMtbWFpbnQKKzM2MDUyIDUyNWFiYzY2YmNjMjhjMGZiOTQzMmM5YmU4YjM0Nzk3ZjRhNjQ4YjIgbGVnYWN5LXRydW5rCiszNjA1MyAwOTAxMmM2YjIwNjgwNWMzZjM1YzQ3OThkOWFjZmY0MDZjNWFiZjFmIGxlZ2FjeS10cnVuaworMzYwNTQgZWQzNzQ2ZGFkNzA1YTJiOTY2ZTUzYmFlYjFhNzU2Y2ZmMWQ4N2I0MSBsZWdhY3ktdHJ1bmsKKzM2MDU1IDZjMjhhZDgwNDdmMmRmYmE5MThlZTNlNGM1ZWU0NzJlYWRiYmJiM2IgcmVsZWFzZTIzLW1haW50CiszNjA1NiA4YzQwNzkwNjE3MDg1OGM1ZTc1YWRiOTU1ZDFiY2I2MTQwNWU5NGY2IGxlZ2FjeS10cnVuaworMzYwNTcgZDI0NGI1M2VjZmJlYmUwYzVlNmU3MGVjYjlkM2I5Nzc4MGFjMDUzNyByZWxlYXNlMjMtbWFpbnQKKzM2MDU4IDk2ODlkYTAwMTE5N2ZhOWVlZThiNGJjNWQ5N2QxMWExOTZjMWJlNDIgbGVnYWN5LXRydW5rCiszNjA1OSBlOGI0ZjU0ZjdkMTllYzY3Njg4YjgwMjA0N2ZmNzA0Nzc0ZDY3MjA0IGxlZ2FjeS10cnVuaworMzYwNjAgMzAwZGI4MWUyZTRhY2JlYzIyMWNhM2MzODAxMDhkOTdlMWFjMzFmOCBsZWdhY3ktdHJ1bmsKKzM2MDYxIGE2ZTA0ODQ3MjgwYTI2ZGVhNWU2OTg5NDNlODRmOThiYjg5Zjg2OTMgbGVnYWN5LXRydW5rCiszNjA2MiBiOTM0NWMzNTVmMDRiNzE5NzczNGUzMGU5MjZmMTE2ZTQ5ZTcyMDYzIGxlZ2FjeS10cnVuaworMzYwNjMgMGJkYjQ5YTVhOGZhNjMzNjUyYzQwOTRkYjhiNDM3MzAxMjBjZGE1ZSBsZWdhY3ktdHJ1bmsKKzM2MDY0IDY5NDUyOGU4NWEwNGQxZmJhNjNlNWVmZjZhYTFlM2Y1YjM1NzYzNDMgbGVnYWN5LXRydW5rCiszNjA2NSBjOGEyMmI1Y2Y1OGE1OGJhYTJhNjg1NDk3MjU0MmU0ZGZjNjQ3MjA4IGxlZ2FjeS10cnVuaworMzYwNjYgM2Q2NDI0YzAzODg4MmVkNTk2MmUyMTZhODEyYmNkZjA0MWE1YjI3YyByZWxlYXNlMjMtbWFpbnQKKzM2MDY3IDcwY2ZlMDY1ZWFjNTkyNjQ2YTJhZWJiYTMyNWIzZGMyMjg2MDkzYzQgbGVnYWN5LXRydW5rCiszNjA2OCBhOThmNTBlNTBiZWZhMWU1MmIwNTMwMWVmZDM0YTgzYzdkMmZmNzk3IGxlZ2FjeS10cnVuaworMzYwNjkgZGY0OTQzZDI0Y2I2ZGRkZTQ3NzIwNjZjY2YzOGJiZmM5MDhhYTFkNSBsZWdhY3ktdHJ1bmsKKzM2MDcwIDc0MDljMGMzNzBlMjEzMjU4ZGY4M2M2NWQwYWQ4OWVmYzI2OTg2MzIgbGVnYWN5LXRydW5rCiszNjA3MSBlZmNhMzUzZTdmZDY3NWY3MTE3OGFkOGMxMTZhZDJmOTgxOGM3OWE2IHJlbGVhc2UyMy1tYWludAorMzYwNzIgMjlmODc5MzJjN2M3OGJjYTM2N2JiNzU3YTk1NDVhNTk0M2JiNzZjZSByZWxlYXNlMjMtbWFpbnQKKzM2MDczIGE3MmJjNDI1NzMzNjUxZWI2MTQ5NWVlMzVlY2YyNGIyZmY3YmM4ZTAgbGVnYWN5LXRydW5rCiszNjA3NCBlYzZmOWExOTA4MzE5MzFjZmFkZDU1NzM5NjRkODM4MTAwOWQ0NWRhIGxlZ2FjeS10cnVuaworMzYwNzUgMTBhMDFjZTNlYTBhZTAxZGMzNTVmMjdlZmUxMWNmYjI5Mjc2NzFhNyByZWxlYXNlMjMtbWFpbnQKKzM2MDc2IDM2MzQ0MThhODU4ZTgyNzNiNGEwMGFmNzU5ZmQzOGEzOTI0NTdjN2QgbGVnYWN5LXRydW5rCiszNjA3NyAyZjVmMzhmNGJjMmI5MDA4OWI5NTY3MzlhZjE4NmQxMDljNTE2OGQxIGxlZ2FjeS10cnVuaworMzYwNzggOGMwMzk0YWVjNmRjZDQwZmRjM2U4MTNhYThhZWYwNTVkNjY1YzRiNyBsZWdhY3ktdHJ1bmsKKzM2MDc5IDNkZmU4MWFjMGU3Y2QwZGY0ZTIzM2ZiZDE0YjFhNmJiN2MzOWNiYjYgbGVnYWN5LXRydW5rCiszNjA4MCBhODBlZTIwMDRlNmNhNDkyYjBiOWEyZWU4ZTRjOTM5NDk3ZDA5NjUyIGxlZ2FjeS10cnVuaworMzYwODEgY2RhZDAwNWJjMDMwNzc1ZmVmN2JhYzY3M2MzOTJkNjU2OTQzNmNlOCBsZWdhY3ktdHJ1bmsKKzM2MDgyIGNiOTU3ZTY1ZjQ0NDliODY5OGI0OTQwZGVkYjZhNjIwN2IwZTRjMjIgcmVsZWFzZTIzLW1haW50CiszNjA4MyAzNjc5OGYxYzhlOWExYTY2ZmRkNzc4MDVlZjk3NmMxYTE0ODgzMGY4IGxlZ2FjeS10cnVuaworMzYwODQgYjljOWU3ZThiZTdkNTRmYjgxYTIxOTViYTg4MDc1ZjUyY2UyNTczMiBsZWdhY3ktdHJ1bmsKKzM2MDg1IGFjNGQ0MjBjYzc5OWU1ZDI2NmE3ZjQ2YTdkZjVhNzVkNzM3MmZhODIgcmVsZWFzZTIzLW1haW50CiszNjA4NiBiZGYyMzg3OTg5NDk5ZWRmMDY3NDk2ZDkwY2UwZmRjYzgwMDA2YTAxIGxlZ2FjeS10cnVuaworMzYwODcgYTg5Y2M1MzViNGM1NzU1YWFjODZiYjFlYTQ3NTBhNGQ0NGNmMGRkZSBsZWdhY3ktdHJ1bmsKKzM2MDg4IGVlYWE3ZmIyZjE2ZjdhMGVkM2ZhMzJiZWRmNDFhMzNkYmEwYjJkN2YgcmVsZWFzZTIzLW1haW50CiszNjA4OSA4ZTU5NThjOTNjODgyMTVkNDU4NzkyYTZhZjU4ZTJhODNlZmQ0MzAxIGxlZ2FjeS10cnVuaworMzYwOTAgOGVhYjc2NTU2MDFmZWQxMjEwMDBkYzBlYzQ0YWZjNjBiYWJiMTIyNCBsZWdhY3ktdHJ1bmsKKzM2MDkxIDQyYmIxZGNkZjE2ZTQxYmQzMzJlMDFkMDcyNmRmMzYzNTdkNTljMTUgcmVsZWFzZTIzLW1haW50CiszNjA5MiA0N2Q2NGNiMDE4MjA1ZWJlZDQxYmM5YTJjNWYyM2VhOTYwODJhZTdjIGxlZ2FjeS10cnVuaworMzYwOTMgMDE0YjBkODQ0MjJmN2I2MzFlMDAzZjI3OWQwNDAzODllM2NmNmJlZSBsZWdhY3ktdHJ1bmsKKzM2MDk0IDk1Mjg3Y2RkYmMxZWNhNTZjOTZjZTc4MDAxYjJkOTk4ZTc3MzJhMTQgbGVnYWN5LXRydW5rCiszNjA5NSA2MWFmNDcyMTNmZTY2NzRjODM2MjY3MTk4ZGE2ZmU0MzRjMmMwMzUzIGxlZ2FjeS10cnVuaworMzYwOTYgMWVlYWE1MDkzZmMwNDExMTYwNDAyYTdkMDBiNDE1NDBiNTFlNGQ4OCBsZWdhY3ktdHJ1bmsKKzM2MDk3IGFkYjU5ZDg5YjA5OTE2MDU2M2E0ODczZGQ5NWNhOTU5YjA1ZjE2MjYgcmVsZWFzZTIzLW1haW50CiszNjA5OCA3ZTcyNzNjOGQyMWViN2I2NzczNzM2ZGEwM2JkYmQ0OTcwNWJhZmUzIHJlbGVhc2UyMy1tYWludAorMzYwOTkgYzJiYzI0OGQzZTljNzBiNTY1YmY2MzBkMjg2ODk0ODk1MWNlYjM2MyBsZWdhY3ktdHJ1bmsKKzM2MTAwIGMwZDEyNjFkYTg0OGQ2MWVkYzcxZGQ4ODZhZDZmODZiMmM1MjY1MTQgbGVnYWN5LXRydW5rCiszNjEwMSBjYmZhMDQyODU1MjkwYTIzODFjMTAxY2ZiMmZiYjJkMTIzNjBkZjFkIGxlZ2FjeS10cnVuaworMzYxMDIgYjYwZmM1ZWZmMTU1OTRkNzc1MDRkMGZlMzBkNzM5ZWNjNWFiNmYxOSBsZWdhY3ktdHJ1bmsKKzM2MTAzIGZkNTJiNjgwNzkyNDhjYjE5OTA3ODM5ZTYxMjg3N2RiM2IwNTA5ZWMgbGVnYWN5LXRydW5rCiszNjEwNCA2ZGJmZWUyZGVkODk1NmU2Zjc5NTYzZmVkOWJhNjU1Mzk0ZjBlZjg2IGxlZ2FjeS10cnVuaworMzYxMDUgOTRiODQxYWRmNDg1YmM5OGFhZThkYTRmNDRkNmVlM2Y5ODZjN2ViYSBsZWdhY3ktdHJ1bmsKKzM2MTA2IDkxMzg4Yzg0NWIxNjk1ZmU0NjMwYjY1MzgyNTY0YTUzMDdhODE3YmMgbGVnYWN5LXRydW5rCiszNjEwNyA4ODJjZjExMzcyYTNlNGJkZTQ2NjQ1M2U2NTk1ZDE0YTE2ZjM4NTYxIHJlbGVhc2UyMy1tYWludAorMzYxMDggODU0YTI0MTdkMzVlYjUxOGFkYWVjNjZlNTEwNGU0NGZkZDRjYjdkOCBsZWdhY3ktdHJ1bmsKKzM2MTA5IGEwMThhZTM4NmY5OWUxYTQ5ZDE3NGMxNWY2M2JkMWNjMzg2OGM4ZGEgbGVnYWN5LXRydW5rCiszNjExMCA1Yzc5YjRmMTNiMjZmODI5MDBkYTllZjE4MzY3NGY2OWZmZWNlNTc3IGxlZ2FjeS10cnVuaworMzYxMTEgNzFiM2QyYmJlNjNiZmE3ODU0NzY5MmJmZTc4ZDg5ZGVhODM5ZTI1YiBsZWdhY3ktdHJ1bmsKKzM2MTEyIDQwYzUyNGMxYzBmZWZlYTY3ZWRkZmU4ZTRkNTdkNDNkYTBhYTY2MDggbGVnYWN5LXRydW5rCiszNjExMyBlMTM0NWNlMjc1Zjc5ZDgzNDcyODg1ZWJmYTIzOWFkMzU1YjQyNjRiIGxlZ2FjeS10cnVuaworMzYxMTQgNmQ3ZDAwYmYxYWFlNTk2ZWY2Njk1YWIyMDUxZmQyYzc0OGQ3Y2NiZSByZWxlYXNlMjMtbWFpbnQKKzM2MTE1IDgyZmU2ODMyZTUwNWRlYjI0YTc3YjRlYTQ1YmFiN2RlZDI0ZGVkMmIgbGVnYWN5LXRydW5rCiszNjExNiA4YWNmNDI0MWVlOTRmNWNjMTFmMmJmNjYwZGVmN2Q2YzZkNTcyYzUxIGxlZ2FjeS10cnVuaworMzYxMTcgYWEwYzg0ZDFmMDY3Nzg2OGZjN2JkNWRkMTk1ZjI2YzI5NTkzNjA0NyByZWxlYXNlMjMtbWFpbnQKKzM2MTE4IGNmODRkYmM2YTg4MWM3YjMxYzI3YjYyMTc5OTBiMzA3NDAwN2FmMDQgbGVnYWN5LXRydW5rCiszNjExOSAyOWQ3NjFjNTEwM2U3N2I1MTEyYmI4MGY4ZGUxYjM3OTgxZDI5YWUxIGxlZ2FjeS10cnVuaworMzYxMjAgOTJmNTk3YTA1NTgxNWVlM2VhZWMzYTM5ZTI0NDI5ZjI2NjlkODA3NiByZWxlYXNlMjMtbWFpbnQKKzM2MTIxIGM4NGZkNmJlNWExNGY0NDM2MWFkZmE0ZDBjMDNiMzIyNThkMWIwNGYgbGVnYWN5LXRydW5rCiszNjEyMiA0MWM1OWQ4MGJiYzVmNmZiY2JiMmMyYjM4YmM2Y2E1YmE3YzI3MjdhIGxlZ2FjeS10cnVuaworMzYxMjMgZTE5NmI4MjNlNmM1YmFkMWZhYWFlYTA4N2M5OWJmOGVmM2ZjMTM4YSBsZWdhY3ktdHJ1bmsKKzM2MTI0IGEwZDhiMTQ1NjgxOTMxNjZjODZhNGIzNmQ3ODYzOTYzYjYwNDk2OGEgbGVnYWN5LXRydW5rCiszNjEyNSAxNmFjYzYxZDMzYzAyZDZjYzg2MWU2MzcyMTBiMzA5MmU2YmI1ZmM0IGxlZ2FjeS10cnVuaworMzYxMjYgMTM2NTZkNThkNDUwMTQwNTk0Y2Y3ZGE3ODk1OGRiMDg2OWIxMmZlMCBsZWdhY3ktdHJ1bmsKKzM2MTI3IGNlZGM5NTQ1OTYzNmQ1MzJkNzVlMDUxYWVlMDQxZTU5MTBlYTRmMWQgbGVnYWN5LXRydW5rCiszNjEyOCBlYzg4ZjI3OGExYWQ0OTkwOWU4ODZiMTYxZmYwYmM4ZDc2NTg4YTM2IGxlZ2FjeS10cnVuaworMzYxMjkgMzIxOTczNzUxMjhlMjI2NTg4YzIzMmQyN2ZmNWY0MmNlOWQ2NTYxOCBsZWdhY3ktdHJ1bmsKKzM2MTMwIGZjNmE3MzkwNWU2ZjM4YzlkNDdhMjllYTE1ODU4MzE4YzdlNmZlY2UgbGVnYWN5LXRydW5rCiszNjEzMSAxOTE4ODg3ZDM4N2IwMTA0ZTNmM2MzYjNhNzkzNTZlOTQ5NzVhOTVjIHJlbGVhc2UyMy1tYWludAorMzYxMzIgYmNkMjFhYmFhNWI0ZjE1Yjg3OGIxMjk3YzIxNzIwMmE3ZTk0YWQyNCByZWxlYXNlMjMtbWFpbnQKKzM2MTMzIDQzMDFlY2JlYjNhZGZhNDEzNmMwOTgzNGM4ZjQxNzM0YmNmZDcxNjMgcmVsZWFzZTIzLW1haW50CiszNjEzNCBmYzQ3NjJlYmJlMmNmNjczNDcyZDZiYTlhZmQ0MDViNDJiNTM3N2YzIHJlbGVhc2UyMy1tYWludAorMzYxMzUgNDM5ZTcxYTRlNTU0Njg1NGM1NGNmODljYjVkM2FhMmM3NWVhYjg1MCBsZWdhY3ktdHJ1bmsKKzM2MTM2IDQ5ZTc0MTNjZDkxYzBlNTg4NjM5ZjI2Y2U0ODU1ODcwMjVlYzNlMGEgbGVnYWN5LXRydW5rCiszNjEzNyA5ZTVhZjQ1Y2VmY2I1ZjQxMmFjMTY5N2ZjMDE0OGM0MjA3ZDg4MGMzIGxlZ2FjeS10cnVuaworMzYxMzggZDY5YzgwNjhlYWU2MWNlZDhlNzE0YzUwM2E3NzQxNGQwMDk0NGIxMSBsZWdhY3ktdHJ1bmsKKzM2MTM5IDQxOGEwYzZiZGM3ZDRhMGVkZmE0MmQzYjNjZmRhOTViOTg5ZDI1NjcgbGVnYWN5LXRydW5rCiszNjE0MCBiOWRlNmI2NjUyNzM2ZDYwMTVjYjc4YWM3NDAwMThhZGRlNzc1OGZmIGxlZ2FjeS10cnVuaworMzYxNDEgODczMDJhYzA3MjU1MjQzNTE5MmE0OGIwYmY1ZWUzNzQ1ZmI5NDU2MiBsZWdhY3ktdHJ1bmsKKzM2MTQyIGIwZjQ1NGY1NThlNWViMmZhNmRjNmYwODQxZjQ1MDliNWM1MTI2ZGIgbGVnYWN5LXRydW5rCiszNjE0MyA1MGYzYTU1MGI0ZmU2YWVmMzNmZDJhNzdjYzAwZTU3M2VmOTk5NGFiIGxlZ2FjeS10cnVuaworMzYxNDQgYzFmYmJjM2VlZDM5ZTVmZWM2Njk3MzVmYjlmM2UyMGYyZjNjNDhkZCBsZWdhY3ktdHJ1bmsKKzM2MTQ1IGIwNTRjZmY3YmI4NmQ2ZjEyN2MwNmUzNDA4ZDUyMGNjYzI4ODZjOGUgcmVsZWFzZTIzLW1haW50CiszNjE0NiBjZjI4ZjRhNmU2NzYxOGE1YTc3ZmNmM2Y4YzVjNTIzZGZhNjUxNjliIGxlZ2FjeS10cnVuaworMzYxNDcgN2ExOThkOWM5MjYxMmQyNDQzNTYzZDVkMzFiZjU1MjNhYmRlYjk1ZiBsZWdhY3ktdHJ1bmsKKzM2MTQ4IDMxNTJiNzQ3YTJlNDYxMWIzM2ZmZjI1YmQ1MTY1YmJhZWQxN2U3NDEgbGVnYWN5LXRydW5rCiszNjE0OSBmNDk0NzE5NTM2ODlhM2JmOGI0ZjY0NmU4NTE0MzQ0ZDVmYTYzNDA5IGxlZ2FjeS10cnVuaworMzYxNTAgNmZlYWQ1ZWE0YmJhMjM3MjYyZjBiMDg0ZTFmNmZhYTFlMGM4NjcyYyBsZWdhY3ktdHJ1bmsKKzM2MTUxIDU0MTMyN2NiOGY4YmY2YjU1NzE1NGMyOGEyMzc0MjVkMmNkMmNhOGIgbGVnYWN5LXRydW5rCiszNjE1MiAyMjUzYThjMmVhNjJkYzVkM2ZmZTU3NmU4MTc2ZWRlNjBlYmNiODVhIGxlZ2FjeS10cnVuaworMzYxNTMgZjBlYjc3NzhhMTgzMDgzZjBmZWRhOGZmMzI2Y2M2MTU5NzhjNjUwMyBsZWdhY3ktdHJ1bmsKKzM2MTU0IDYzZTllNWEyMTYwYjVkYzliYmFmYjk4Mzc0YTAxNmQ0ODQ0NzBjNTQgbGVnYWN5LXRydW5rCiszNjE1NSA0NDRmYTVkNTBjMTRkMjBlMGE4ZTJiZDdhNmU1NDEyMGM2MTFjNzAzIHJlbGVhc2UyMy1tYWludAorMzYxNTYgYzdkY2IwOTc0NWQzNWI0OWJiZWFiOTE1N2FiYjZkZDU0MGNiYzY0NCBsZWdhY3ktdHJ1bmsKKzM2MTU3IDZlNGZlNTU2MGQ4MWQ0OGFjNDFjM2IwYzhiZDI5MWE4Y2EwMWU0NDAgbGVnYWN5LXRydW5rCiszNjE1OCBiYzlhZTQ0YjJjZTQxZmMzZGI1ZjkyMmVmMjkzYmEzNjNmM2MxN2U2IGxlZ2FjeS10cnVuaworMzYxNTkgYTYyN2Q5NDkzMTQ5NTMzOTk5ZDFmNDVlM2FiYWJjYTE0Yjk0MWUwNSBsZWdhY3ktdHJ1bmsKKzM2MTYwIDQwOGE0MGU2NTI0N2NkMGE3NzJlNGY5OTNiNTU2N2UyZmQ5ODQxZWYgbGVnYWN5LXRydW5rCiszNjE2MSBjN2RhNjk5MGM0ZWQ5Yjg4N2UzNDc5YzMzY2I2ZGYyNjM3YzJhNzhhIGxlZ2FjeS10cnVuaworMzYxNjIgNWQyNzI2OWM5ZTMzYzZhMjhkODMzZmQ2YmIxZjA2NDdmMzc1YjZiNiBsZWdhY3ktdHJ1bmsKKzM2MTYzIGM5ZGI3OTNjYWE4MGEyNTQ5NDhkYTc5YWQ2MTViMDVjOGU4MTMxZWMgbGVnYWN5LXRydW5rCiszNjE2NCA1NGIyNTdlNTVmOTkxNTAxNTU5NDhkZDNkZmZiZDQxZjU4MTBjYzQ2IGxlZ2FjeS10cnVuaworMzYxNjUgNzQ4MTI5ZTZlMTA4MmYzM2RmMWU3OGE1Y2I2MWYxOGMxMzgzY2Y3ZiBsZWdhY3ktdHJ1bmsKKzM2MTY2IDhiMmRmOWEwN2NkNzA0ZGQ2ZmY2Yzc5NTlkZTc5ZDE5NmU5ODg2OWMgbGVnYWN5LXRydW5rCiszNjE2NyAwNDEzMDA1ZmMwYjJjY2JiMWJjZTg5ODY3MTk4ODE0Zjg2MmMyZDVjIGxlZ2FjeS10cnVuaworMzYxNjggZTk1MGJmZTE4NTZlMjBmNDI3MTAzMDI5MWRiNTkwYWE5Njc0ZDI3YiBsZWdhY3ktdHJ1bmsKKzM2MTY5IDlkODY1NWI0NzVkYjQ4ZDA0OGMzZjFhOWU2YWIyYjIwOGQ4YWJkMGYgbGVnYWN5LXRydW5rCiszNjE3MCA0NGU4ZTg0ZjEyODA4MjUyZDRlOWE1MTQ2NmYyOWMzYTc0MGM2ZWFiIGxlZ2FjeS10cnVuaworMzYxNzEgMTFjMzFhOThkZmQ2OTBhODU5NDViOTdmZGU2ODAyM2IwYzk0ZjUyOSBsZWdhY3ktdHJ1bmsKKzM2MTcyIDEzY2U0NDc4NDViY2JkNDdiZmViZWQ4YmQ2ZTAwYWJlMjc5NTc3YTQgbGVnYWN5LXRydW5rCiszNjE3MyAzNDhkYjc3YTA3ZTkxOGM4YzU2YjhmNWIxNzA3ZWE5YTg1OTA4NGQ1IGxlZ2FjeS10cnVuaworMzYxNzQgNDBhY2I2OGFkMjI0NzczYjlmODU3YmEyMGE2YzdhZDIzZWZkZDg3ZCBsZWdhY3ktdHJ1bmsKKzM2MTc1IDU4MWE4YTEyOGUxMWNhMTUzNjlhMWQxNzYyMWI1MDA1ZTkyOWIyMzggbGVnYWN5LXRydW5rCiszNjE3NiAxMmYyNGNiMjczODNjOTcxYjdjMDI2N2YxNWI0MTEyZTcwMDVkNWMyIGxlZ2FjeS10cnVuaworMzYxNzcgNjExODBjMzFkNGJkYjNlYWE1MDU1ZGQ0MTVlMzhlNmFjMzExYjIzZSBsZWdhY3ktdHJ1bmsKKzM2MTc4IGE0NmJkZTllMGM3NGJiNzYxZGNlNjg0NTQ3OThlMjI2ODM5YjVhM2UgbGVnYWN5LXRydW5rCiszNjE3OSA2YWI1ZTA1MjZhMzJhYmQ0MDE3M2U0NTM3OTRhMzhlMzRhYWQwYTQ0IGxlZ2FjeS10cnVuaworMzYxODAgZTViYzk0N2M0NGNhZWJjMDI5MTc0YmM4ZTJjOGNmMDcxYjFlMzk4OSBsZWdhY3ktdHJ1bmsKKzM2MTgxIDg2ZjU5NjJmZDliN2VjNmNiNzg0MDJmYTc2MDc0MzkwYjY5YzBkMzAgbGVnYWN5LXRydW5rCiszNjE4MiA1NWJhNTFiZWYwYTgxYTA0Mjk0ZWUyZTI2MGEwMGYxNzAzZDc0M2I2IGxlZ2FjeS10cnVuaworMzYxODMgYTdkNmZjMTdmMjU3NTUyNzYyOTQ1YmMyNTBlZGZiODcyOGJjMDkzYyBsZWdhY3ktdHJ1bmsKKzM2MTg0IGI4ZmNlMjI1OGMyMDA2YTMzOWJkMmE5MzcyYzJmMWJhZDNiNjZjOGIgbGVnYWN5LXRydW5rCiszNjE4NSBmNGE0ODEwZjk4MmVkNWU4NTRhYzYzZWQ1NjI1MjAzZTU0ZjU0ZTRkIGxlZ2FjeS10cnVuaworMzYxODYgMzMxZTVkOGIyOTZmNzZhM2RkYTg5MWYyZTVhYTFkYjc0MjY2YzBmZSBsZWdhY3ktdHJ1bmsKKzM2MTg3IDUwOTA3MmMzZmEyNmI5MmEyNTFlNWY1NDdiM2IwMjkzMGQyYmYwZmEgbGVnYWN5LXRydW5rCiszNjE4OCAxZmQzYWE0YmMxMjNhZDEzMTllOTc4MzRiNzQ2NDhmM2EwNjFjYTgxIGxlZ2FjeS10cnVuaworMzYxODkgYjk5YTU1MjczOGJmYWUzNzkzMjNhMjg4ZDc5Yzk1NjE1MjdiNWZhYyByZWxlYXNlMjMtbWFpbnQKKzM2MTkwIDM5MTE3M2M2OGJiM2M5MDc3ZGZjYWIyYWE2NDZiZjZkOWM4ZTg1NmIgbGVnYWN5LXRydW5rCiszNjE5MSA5NjNkMjM1NTcwMjBmMjIyOTk1MTQzMWNhNThiNjBlODIwNzE0MjM4IGxlZ2FjeS10cnVuaworMzYxOTIgMTE5ODJkYTk4NzkyYzQ3NjdmMTRlY2NmNjYxMDNmNTE3NjAxZmI1MCBsZWdhY3ktdHJ1bmsKKzM2MTkzIGU0M2RhNGY5OTk0MTU2N2MzYWI5MDUwY2Q4NzlkY2YzMGYwMzllMjQgbGVnYWN5LXRydW5rCiszNjE5NCAwYWY0MTU0M2M5YjY1ZjcxZjBkYWM4Nzg1NmVhOTUzYmU4YWNmYWE0IGxlZ2FjeS10cnVuaworMzYxOTUgZjUzOWE5Yjk0Zjc5NDU3NDQ0Y2I5YmQxZGNiZGQyZGJiMmI1OTk3MCBsZWdhY3ktdHJ1bmsKKzM2MTk2IDYzODQwNzhlN2VkZjk3NmJlZjNiMTRhOWZhNzM1NWFiYmMxZmM0OTYgbGVnYWN5LXRydW5rCiszNjE5NyA0MzRkM2YyY2I4MzI4MjhlMWVhYmZjMThmMTJhNjgzMDAxMTg5NmU2IGxlZ2FjeS10cnVuaworMzYxOTggZjczYTYzZGQzMjg4NTY3NjZlYTEyNmMxNTMzZDY1ODJlZmUwOTI1ZCBsZWdhY3ktdHJ1bmsKKzM2MTk5IGE5YTRiMGRmNTEyYWQ0Zjk0ZGE3ZmRiNjZkYjYwNGFlNjk4NzlkZmMgbGVnYWN5LXRydW5rCiszNjIwMCA1YmZjNzU0M2Q3ZWZhMGZkMDBlMzU2ZTA5Yjg3NGM4YTU3ZWM5ZGZjIGxlZ2FjeS10cnVuaworMzYyMDEgYzZhYjBmODg4OTVhNWM1OGVhNTA2MzZiMGUxMmViODM4ZTJkOTZhOCBsZWdhY3ktdHJ1bmsKKzM2MjAyIDc2MzI3NzM3ODExNGMzZDA1YWZlYTQ1MmY5YmE3OWY4MGU0ZmYzZjYgcmVsZWFzZTIzLW1haW50CiszNjIwMyBjZGUyZmVhYjdmZTBhYjcwZDIxYzhiNTE1NTMwYWU2YzVkNzU4ZjA1IGxlZ2FjeS10cnVuaworMzYyMDQgMjdlNzEyYzhlMWEzNjQ5ZTU1YTdjNzY2OWRlNGI4MDA3NzdmN2Y5MCBsZWdhY3ktdHJ1bmsKKzM2MjA1IGVjNjRhNmJlMzJmNzE3ZGJkZTdmMzIyZTg3M2UxODljY2QzZTMyOTcgbGVnYWN5LXRydW5rCiszNjIwNiBkMGE2Y2ViODQ2NDY0NzA2ZDYzYWUwMWU1MjYyOTU0ZjAzMjBhNTBjIGxlZ2FjeS10cnVuaworMzYyMDcgNjg2ZTVkMzhiZTQyMWFiY2Q4Mjg1NzhhNTQyNzM1ZWJmMjQ1NzRmZiBsZWdhY3ktdHJ1bmsKKzM2MjA4IDA4MTk1MDhhYWUzYWMzZTE1Yzc2NTk2N2EyZDg4M2YyYzg0Mjk3YzcgcmVsZWFzZTIzLW1haW50CiszNjIwOSA1Y2Y1MDdiNjRmMzFhMGQwMjNkY2MxM2NkYTIzZjhjMjJlYzY3Mzg0IGxlZ2FjeS10cnVuaworMzYyMTAgZjk1Njk1MjZlOGQ0MGQxYjE2ODBjNjA2Njg3NGNkZmUxYjE3ZmEyZSBsZWdhY3ktdHJ1bmsKKzM2MjExIDRjNzFiY2ZhY2RlMmYyYTNlMzgxMmMxNmRmMDRlY2JjODUzODYwYjQgbGVnYWN5LXRydW5rCiszNjIxMiA2ZmMwMjkxNWY2MzdiMDI0NGQyMGE2NDVjMWNmNmJkOWY4NjFmNzU1IGxlZ2FjeS10cnVuaworMzYyMTMgOThlNDYzMjcyMTIwMGIwODA3NzdkZGI2ODg2NjM4MmNlZDYwZjJkYyByZWxlYXNlMjMtbWFpbnQKKzM2MjE0IGU1ZGY4YzhmYWEwOTliZDMyNGFiOWYxMzQzZTBiMTc1OGNmZTQ2NDggbGVnYWN5LXRydW5rCiszNjIxNSAxZDU4NGNhNTZiMzA0OTVmMTM5MTY2NjhmOTZlYTAxYzM2NzVmMzdkIGxlZ2FjeS10cnVuaworMzYyMTYgNmJjNmFiYmE4NjU5ZWFhNDlhMjhjODJiZDI1YmE4NTM4YjcwMTdiOSBsZWdhY3ktdHJ1bmsKKzM2MjE3IDJmNzZlNzJhZDE5MGNiNTkzOTRhYjFhZTViNzYwYTIwMTMyODUwYWMgbGVnYWN5LXRydW5rCiszNjIxOCA3NTg2MWQ4YzU4NzE1YTJkYmYwNGU0YjE4YWZiMTVjMjQwMWE2MWUzIGxlZ2FjeS10cnVuaworMzYyMTkgMDE0ZDg3YzczMjEwMmE3ZjExNjY4MTg4ZDFkYzM3ZDY2Y2YwZGQ4ZiBsZWdhY3ktdHJ1bmsKKzM2MjIwIDQ3MjAyM2QwYTEwZDY0Mjg3ZTI2YjljZDYxMjVhMjYyNGQ3M2U1NDAgbGVnYWN5LXRydW5rCiszNjIyMSA2Y2U2N2Y3YjA0MzBhOGZlZGM5MDkwNmZiMTQ2MThjNmIxZDVkYjFjIGxlZ2FjeS10cnVuaworMzYyMjIgY2Q0N2Y2MjIxZDhkMWY1NjE4MjYwZThjOGI2NTkxMDFhZWEwMWJlYSBsZWdhY3ktdHJ1bmsKKzM2MjIzIDFjMmJhYWUxNDgyODIzOTc3OWM2OTI3M2NiMGI2MGU2MTc2ODMyYWQgbGVnYWN5LXRydW5rCiszNjIyNCA4Y2NkOGVjNjNjYzIwYzJiNGEyMGY5ODkwY2IyM2Y5Njg2YTY5MzA0IGxlZ2FjeS10cnVuaworMzYyMjUgNzVlNWQxZThiNjE3MWEyYTlmN2QyYTZkZThjYzdkN2EwOGNkY2ZiNyBsZWdhY3ktdHJ1bmsKKzM2MjI2IDdiNmVkMzVjNTg1MGU2ZjU3MDA1ZTk5NzM0NDdhYzFmZmFjZmNlZDggbGVnYWN5LXRydW5rCiszNjIyNiBkOTliNWJlZDAwNzg4NGIyNWYxMjc2ZTJiYWZiOWFkMDYxZjJhOTU5IHJlbGVhc2UyMy1tYWludAorMzYyMjcgYWFmOTI5NWVkNDViMDA2ZWM3MGNhMWRjMjNmOTU2OTRlYWY3ZjY5NiBsZWdhY3ktdHJ1bmsKKzM2MjI4IGUwYTdjNDYxMzExYjNkY2FmNmZhMzU2Y2E4ZGVhMTM0MTE0ODU0ZjEgbGVnYWN5LXRydW5rCiszNjIyOSA3NzkxM2JlMjk0YjkyMTE0NjdiNDU4MzdlZGFmYzJiZWVhMjYxYTZlIGxlZ2FjeS10cnVuaworMzYyMzAgODQ0NDg0OWM5NDQ4ZWRlYWI2NDRkZjU0NGQ2YWMzYWIzMzUyNzkxMCBsZWdhY3ktdHJ1bmsKKzM2MjMxIDgxMDFlOGQyNGYwNTI4YzQxMTMwMGE2NDU3MzZkNTdiNzBlM2JlZjQgcmVsZWFzZTIzLW1haW50CiszNjIzMiAzOTNjMTVjMGM1YTQ4ZjY1ZWI0YTFjZTQ1NjM3NDllZmUwOTE3ZDE4IGxlZ2FjeS10cnVuaworMzYyMzMgZDcxMTBiYjZjMTNkYzQzOWY0YWYzZWUyZTZhYmY5YjE5ZTI0OTJkMiBsZWdhY3ktdHJ1bmsKKzM2MjM0IGZjZmIyZDQyMjBiMGU1NzNlMzI3ZWQ4NTczMGQwYjY4OTM3MWJmMDkgbGVnYWN5LXRydW5rCiszNjIzNSBiMWU3MWIzOTI3OTlhYTU3MTRkNDdlMDY4MDZmNTY2YmI4YzI2ZTI1IGxlZ2FjeS10cnVuaworMzYyMzYgOTUwY2Y2OWM2OWI2MWRjM2U3ZmIzZDZjYjVlZWFmMDA2MTdkNmNjNyBsZWdhY3ktdHJ1bmsKKzM2MjM3IDI3ZTIyZjZiZDNhZTc3MmZlYTRmZTc5MjQxYjdjZGFhMjkxYzJhYTQgbGVnYWN5LXRydW5rCiszNjIzOCAyNTVhNzFmMmQyMTVhOGY3MGMxZDVkYjdhNzlmYTJiN2MwZmRkOTkwIGxlZ2FjeS10cnVuaworMzYyMzkgODRlNWI1ODVkMjAxYjg4NGE5NWZjMGE0YjJhOWQyMGViZTVkYjAzYyBsZWdhY3ktdHJ1bmsKKzM2MjQwIGE0YmMyZmZkOGU3MTZhOTE0Nzg0ZTdkMWQ4YzUzYWE3YTZjYTI0YjIgbGVnYWN5LXRydW5rCiszNjI0MSA0ODVkMmVmNDM0MTlkMTkwMDE3MGFlYmJlYTlkNmI2ODJjNWNiOTE3IGxlZ2FjeS10cnVuaworMzYyNDIgM2RmMzZlMmU1ZGRjMTE0OWFmOGViNTJlMjBiYzIyNWQ4MDYyMzZkNCBsZWdhY3ktdHJ1bmsKKzM2MjQzIDY0NTM0ZmIzYWZjZDk0MDBiYzMwY2Y3NDIxZmVmODNlMzkyOGRjMzEgbGVnYWN5LXRydW5rCiszNjI0NCAzZGRjN2EyMzE3NmI2MjgzMWQ0MGE4MzY0ZjVmYjc3MmZiNGZhY2U4IGxlZ2FjeS10cnVuaworMzYyNDUgZTM3MTE4M2QwZTE5MGNlN2UwZTcyNGJmMWFkNTg4NzRlZjA1OTE3OCBsZWdhY3ktdHJ1bmsKKzM2MjQ2IGY4ZDYxZWQyZjBkM2EwZTE4MzZlNzY0YTYxNTljNWMyNTM4NThhZGMgbGVnYWN5LXRydW5rCiszNjI0NyA5MTViMGU4MzNiNWJmZDJiYTI1ZjUzOTJlYTVhNDJhNjY2ZDRkYjNkIGxlZ2FjeS10cnVuaworMzYyNDggMWM2OWY5MDljNWE2MTM3OGRhMjdmMDI2MWU0MmJiMDEzNzQ2OWJmOSBsZWdhY3ktdHJ1bmsKKzM2MjQ5IGQ4YWJmNTgyZjg5MzA2ZWFlNzNlNDNmMWFjNDMzOWJmOWRkZjU3NzIgbGVnYWN5LXRydW5rCiszNjI1MCA0OGNhMjdhZGE4MWU2NWZkNzU1ZDA5YWUyNzZjNGE1MDJmM2Q1OWYxIGxlZ2FjeS10cnVuaworMzYyNTEgYzdkMmIyNGVlZmY5OWQ2MDY1MThkYWIyOWE2NzYzOTAxOTQxNWFhMCBsZWdhY3ktdHJ1bmsKKzM2MjUyIDIwYWRiN2NlMWIwODVmNDIxYjJlM2VjYjY5Mzk0YTNiMjQ4YWMyNjggbGVnYWN5LXRydW5rCiszNjI1MyBkYTdjM2M2MWQ0MGUwMDUwZmIwYWRhYjBlZWU0MjNlY2FkOGIyMzM4IGxlZ2FjeS10cnVuaworMzYyNTQgNWVjNzhlMmRjNGJlYzk2ZWRlNzgyMzhiNTY5NTdkZTFlYzAzZDQ0OCBsZWdhY3ktdHJ1bmsKKzM2MjU1IGZmNmI5N2NkZDg2NGY0ZjUwYmZjZDMxZGVjYjBmZTAzY2Q1MjNiMTIgbGVnYWN5LXRydW5rCiszNjI1NiAzYTdlMzRkYzZhZTI2ZGU4YjFmZDhhMWZjYWE2ZmYzNDUzZWZhOTljIHJlbGVhc2UyMy1tYWludAorMzYyNTcgZjQ3Y2UyMzA0Y2JiMjM1OTAzMTUyNGE4Yjc1ZjdhOGE3NzFhNDJjNyBsZWdhY3ktdHJ1bmsKKzM2MjU4IDM4Zjg4MzQwM2U5ZjhjYjc3YWYyNGU5MGQ0NGE1MWViM2Y2MzRjN2QgbGVnYWN5LXRydW5rCiszNjI1OSA3MzMzYmUwOTJlZWMwY2U5MzVkODQwNzIwNWIxNzY1NTk1NWMyMjc2IGxlZ2FjeS10cnVuaworMzYyNjAgZWUzODg5NmUwZDI0MTczZTA1ZGJhYmIwYzU3NWNjOGI2NzFiYzRjNCBsZWdhY3ktdHJ1bmsKKzM2MjYxIDUzZjI3NGYwMmY2OTgwNTlkY2YzYWE4MGZlMjYwZDFkOTgzNzNhMDYgbGVnYWN5LXRydW5rCiszNjI2MiAxZWRjMDY4NzIxM2ZlM2ZkYzQxODM1YjY5ZGY0ZmY1YjBhYzgxNmZhIGxlZ2FjeS10cnVuaworMzYyNjMgYjE4ZjQ4MGMzN2EwNzY4MTNjZGUyNmYxOTZmY2ZjOWQ0MWVhMjBlMyBsZWdhY3ktdHJ1bmsKKzM2MjY0IGM1NjE2OGZhYmY4ZTMzZWQ5YjI5ZWJjNzQxZTA2MzYyY2JjMmQzM2YgbGVnYWN5LXRydW5rCiszNjI2NSA1YWRjYTU4MTQ5ZmY0OWRmMDVlNzNjZDFhZGJmNDVmM2ZhMzVmNGRhIGxlZ2FjeS10cnVuaworMzYyNjYgNDY0YzgwOGQwZGNkYTM4YmI4MmEwNmUyZjZiOTNkYjJiNTY2NmFkOCBsZWdhY3ktdHJ1bmsKKzM2MjY3IDdkYjRjNTg2ZTFkNmNlMjdmNjc3ODRlN2IxNTY5MWM4OWY0ZTBjYTYgbGVnYWN5LXRydW5rCiszNjI2OCAyNTZiNDk2YWY0YzRhMDc1ZDY2ZjhjMTRjMmY0MmRiNDEwNjc4ZDcwIGxlZ2FjeS10cnVuaworMzYyNjkgYmIwMGUxMmU3NzQxNjA1NzdhOWYyZWU4ZDA1MjljYmEyYmVmYjE2MyBsZWdhY3ktdHJ1bmsKKzM2MjcwIDBlMjhmZDZmZWEwMGMyYmZjMzJjMTliMDM0YjA1MTEzODM3NzYyOTEgbGVnYWN5LXRydW5rCiszNjI3MSBkMmMxYzdhZTdjZjQzMjM2NWJjZWNhNzEyOGI0MTg1OWJjYTcxZTE4IGxlZ2FjeS10cnVuaworMzYyNzIgNjdmYmMyM2RjZmRkNGI5MjZmZjIyNDlmZmZiNDE4MjYwZmUzYzY3MSBsZWdhY3ktdHJ1bmsKKzM2MjczIDBmNTZlYWQ5NjgxNzY1NTJiOTgwNzliYzFkNWE1ZDRkYTUyYzE4MjYgbGVnYWN5LXRydW5rCiszNjI3NCA3MzE1NGFiODU2M2E1YzExNjA1NmY4MWJiMWU3ZmZhMWExMjU0MTFiIGxlZ2FjeS10cnVuaworMzYyNzUgZDUwMGY3MmZiMWFjZjFiOTM4YzcyZTQ5MjZjYWZjZmJlZGRiZjVkMyBsZWdhY3ktdHJ1bmsKKzM2Mjc2IDUwMDY4YjE3ZjQxZWFhMWFiNGZjOTk4OGQ5YWJkNGZjOWQ0MTYzNWYgbGVnYWN5LXRydW5rCiszNjI3NyA2YzE2NjEyZmIxMTgzODE1ODBkYWZhMTBmMWUwZjA2MzU4MGVmMWQxIGxlZ2FjeS10cnVuaworMzYyNzggYjczYWIzMDlhZGE3ZmIyYjdhNGYxZTM3YjljNjhmZmY5ZWY5YTg2YiBsZWdhY3ktdHJ1bmsKKzM2Mjc5IDZiMWVhNWMwN2ZmNzNlZWM1ZGJkMzYwYzQ0YmY4MjBhZjQwYzQwYWUgbGVnYWN5LXRydW5rCiszNjI4MCBjNDIzZTAxOGEyOWUwM2VmMjc2NmE3OTM0ZTk4MDVlNmIzMzcyY2I0IGxlZ2FjeS10cnVuaworMzYyODEgZTNmODJkZjU0Yzg4ZTA4MzViY2I3Y2NkZDQ4ZTQ2ZTdmOTFkMTE3NiBsZWdhY3ktdHJ1bmsKKzM2MjgyIDFiOWRhNWZlOTA1Mzk0YmVhMmY1MTdjNWRkNWM2ZDUxMDYyYTgwZGEgbGVnYWN5LXRydW5rCiszNjI4MyBkNGE1OTIzMGU5M2E5NmE3MWFiNTdkMjllNzMxNDIyYmYwODg0MjkzIGxlZ2FjeS10cnVuaworMzYyODQgNzU3YWIyMDBkNDdhNmJhN2RmMGRmMDY0NGMwOWE5ODJjNGEzMzY4ZCByZWxlYXNlMjMtbWFpbnQKKzM2Mjg1IGI1NzQzZTQ0NzMwOTEyMGNjYzFmMGFlZjI0NDQwOGJmOTllNjVkZmIgbGVnYWN5LXRydW5rCiszNjI4NiAzYzUwMzZiM2U4ZTY3NWIzODg3OWIyMjBiMmJjMTM3NTdmOTZkZDk3IHJlbGVhc2UyMy1tYWludAorMzYyODcgZGYxM2ZmYjhmNDk4NjM3ZWQwNmFhMzRhZDI0YTQ3N2M0N2YyZGJmZSByZWxlYXNlMjMtbWFpbnQKKzM2Mjg4IDE4OTE2Y2U0MWMyNjBmMmJlMWE4YzIzZmZiMDQ5MDkzNGFhNDhhMTMgcmVsZWFzZTIzLW1haW50CiszNjI4OSBiODcxMGU2ZDhkNzgwZGY5N2NiM2RiMWYzMGEzZDU0YjNmMjNiZmU5IGxlZ2FjeS10cnVuaworMzYyOTAgMDVmMTJiYzFlNWIzMDIyMzVkZWI4YmUwMDY2ZjNjY2RiMDdhMzE5NSBsZWdhY3ktdHJ1bmsKKzM2MjkxIDJmZmNkODM2ODE3ZWFiYzUwNzk0MTZiNzJkY2ZkNzM3MmY0NDcxZDUgbGVnYWN5LXRydW5rCiszNjI5MiA0MzgzZGI3N2IxOWE5YjgwMjU4ODc0N2FjNjFhY2E3N2YwNjNiYTBkIGxlZ2FjeS10cnVuaworMzYyOTMgMTRiNDE1NWQ4YjBhNDUyMTI0ZmY3Y2ZlNzVlYTE3MmIwMzdiM2JkYyBsZWdhY3ktdHJ1bmsKKzM2Mjk0IDllOGY3ZGY0YTZmZTc2MDExNmRiMThhMjQzZjRiNjQ5OTA3YmViMDYgbGVnYWN5LXRydW5rCiszNjI5NSA3OTZjY2I5MDgyZWYzNTZjMzQ5NzgzNDRhZjY1NjY1YzlhYmI5N2NkIGxlZ2FjeS10cnVuaworMzYyOTYgZmE3OGFjNTY4MzA5OTg0NDhiYWVjZDJlM2Q3NzNjM2NiNjM2MjkyYiBsZWdhY3ktdHJ1bmsKKzM2Mjk3IGJjNTg2ZGI5OTQ1YTBlYzA0ZjQ5YTdjZmVlMmMzZTVhNzQ3NDUwYjkgbGVnYWN5LXRydW5rCiszNjI5OCA1MGU4NDRhNGVlZDkwZjY4ZmZlMGUxZmE0NGM2MjIzNjA2YjQyNTU1IGxlZ2FjeS10cnVuaworMzYyOTkgZmU4MGY3NzJiZmExMjkyMGJhMWY0NmNmOTEyYTIyMTkyN2VmODgyNCBsZWdhY3ktdHJ1bmsKKzM2MzAwIDc3ZGYxY2I0MTUzMzJlMjc2YTk0NzNkMTc3MzcyMmMyYTY3ODg1MDMgbGVnYWN5LXRydW5rCiszNjMwMSBiODM1ZDVjNjFkODY0OWY0NGJmZWFiMTRkYWI0ODI0YTliNWQ2MTQ3IGxlZ2FjeS10cnVuaworMzYzMDIgZWNjZDBmYmUwY2Q1YzI4YzEzOTI0MmNlNWUyY2Q4OGYzNDMyYzM2YiBsZWdhY3ktdHJ1bmsKKzM2MzAzIGM2YWNmMjYxZDYxNDc5ZDE4NjgzYzAxZGE0MzBmYjZjNDM5MjFjNGYgcmVsZWFzZTIzLW1haW50CiszNjMwNCBmM2NiOTVjZDQxM2Y0OWY0NDQ4NTc5MDAyOWM0YjlhZGE5NDc3YWI5IGxlZ2FjeS10cnVuaworMzYzMDUgMDAyYWM2MjU5YzJjYjlkMjJmZWEzZmEwOTgxMjkyNjc4MWMzNDQ0ZiBsZWdhY3ktdHJ1bmsKKzM2MzA2IDkxY2NlN2JiYTM3MjY5NjQ4NTk1Y2QwMjBlODVkMDkxZjBmODM3NWEgbGVnYWN5LXRydW5rCiszNjMwNyBmYTIzYTliMTg5Njc2MTc2YjcwODNhZjM1MWJjYTYwZmRmNTRiOTFkIGxlZ2FjeS10cnVuaworMzYzMDggMzkyM2RjOTBlYjhlYmY3MGEwNTM4M2ExZTQ4ZDk5OGQ4NjRkOTA2MyBsZWdhY3ktdHJ1bmsKKzM2MzA5IGFiMGEyYjc0ZGRmZDk2OWVhMWY4NjQ3ODAwYTJkNGEzMTNkNDdiZmMgbGVnYWN5LXRydW5rCiszNjMxMCA3OWRmNGY4N2Q2N2U3YWFmYTBlMzdmODgzYWE1NGJkMWEyMWYxZGRhIGxlZ2FjeS10cnVuaworMzYzMTEgZGI1MDNhMjYzYjQzM2NiYWI4ZmM0YzdmZTIxMGMwMjRhM2UzMDRlNiBsZWdhY3ktdHJ1bmsKKzM2MzEyIDk5ZmRmODA3MDZhZGFlNmUzYTFiY2EwNzUwNzg2YjI3ZmU3YTE5Y2UgbGVnYWN5LXRydW5rCiszNjMxMyAyMDJhZTA1NzhlYmViMTVjZTk4ZmQyNDhiNDk4NGVmMTU1OGUwM2FjIHJlbGVhc2UyMy1tYWludAorMzYzMTQgZjU2NTAzYThkYmEzYzQxZDA0NmY5YTFjZjIxOGRiZmRmNWMyMDc3NyBsZWdhY3ktdHJ1bmsKKzM2MzE1IDZjYTEyMmYyNzM2YWI4OWUxNTFmYjM3YmJmYmRhZWMwNjllNGYxOWUgbGVnYWN5LXRydW5rCiszNjMxNiA5Yzg3NTE4ZmFmNmI2YzRlNzRhYzU4MDQ1NTViNGM2ZDE5ZTVkNDJiIGxlZ2FjeS10cnVuaworMzYzMTcgMDU0ZWRlMDFlM2QzMDU3ZTA3OTRhYTAxOWE2OWFkMWM3YWNmODQ3YyBsZWdhY3ktdHJ1bmsKKzM2MzE4IDUxZWI2N2E4NTY4ZWExYjVlN2YyMGNkZjQxYjZkYWY0NTEyNWU2MjAgbGVnYWN5LXRydW5rCiszNjMxOSA2ZmUyZDI0MTAwOGE4MjljODY5YWMzNTZhNmFjM2YxNDMwN2E1ZTZlIGxlZ2FjeS10cnVuaworMzYzMjAgZmJiZDY3Mjc0MDFiNjE2MmMzOGIxYWM1YjVlN2YxNTZmOTFkZjJkZCBsZWdhY3ktdHJ1bmsKKzM2MzIxIDBkYjYzYTc2NWE3NzAxZTllYzc4ZjVmZThmMTIxYmMwNTAxMWMwOGIgbGVnYWN5LXRydW5rCiszNjMyMiBmMDRmMDgxZmYyMzExMDllMTE1NGVmNzgyNmU1ZTJiOGE4NWIxMDA2IGxlZ2FjeS10cnVuaworMzYzMjMgODc0MDE2NThlYjQ1NzI5Njk4Y2QwOGM0MTk5ZDk3MzlmNzRiOTcxNCBsZWdhY3ktdHJ1bmsKKzM2MzI0IGM0ZWVmZmVhMTk2MDM4YjE3ZWU2ZTc3NGQxOTMzMzZlODA0OGJmOWUgbGVnYWN5LXRydW5rCiszNjMyNSAxOTE3OTZiN2EwNTQ1NmQ1NDRmYjJmMDVhMjk0MjRmN2Q0Y2IyYWI3IGxlZ2FjeS10cnVuaworMzYzMjYgZjVmMDRjZTI1MTYzNTc2MTY4NDZhZDIwNzJkMjMwZjE3YTkwYjJlYSBsZWdhY3ktdHJ1bmsKKzM2MzI3IDY4MmY3NDA4ODYwMjhmZGVkMWY5M2ZjYzM5ZjA0NTU5MzIwODUzYjIgbGVnYWN5LXRydW5rCiszNjMyOCA4ZTc2OGMzYWYwMTVkNzEyOTU3NDU3YjM0OTAxNGFjMjRkYjM0ZjA2IGxlZ2FjeS10cnVuaworMzYzMjkgM2Q2ODllNzE1ZGIyNDRhOTI1NDYzZjUzNmI0ZTY2NzhkNWE4OWMyZiBsZWdhY3ktdHJ1bmsKKzM2MzMwIDYxZjkwMzRhMTBmNzFmMWRlOWE2MGFiMjg0MzkyMWE5MzcyMzk3ZTUgcmVsZWFzZTIzLW1haW50CiszNjMzMSA4ZTdjOTFkZTk0OTE5NjE3MjEwMzc5ODc1OWYyZTZjZWY3Njc0YTIxIGxlZ2FjeS10cnVuaworMzYzMzIgYzRlZDE0ZmFiMTJhMzZiNzVkNmQyMTI4MzVlNjI2Y2ExMmUxNjVkMiBsZWdhY3ktdHJ1bmsKKzM2MzMzIGVjOTI4ZWQwMWFjYzU1ZTI2OTEwYjE0NmMyN2FmNWNjODdlYjE4YTQgbGVnYWN5LXRydW5rCiszNjMzNCBiNjFjNDFkMTk3Nzg3MDg4ZDU0NjVkOGRiMDE3NzQ3MDVjNDI3NTFhIGxlZ2FjeS10cnVuaworMzYzMzUgMzI5ZWU0ODMwYjA0MTIxNGNhYjk1ZmIwYzRmOGEwZWNkZmFjMzRjOCBsZWdhY3ktdHJ1bmsKKzM2MzM2IDQ1NDllNzVhNjI0MzRlNDgyYjI1MDMxZTY4YWYyNDJlM2JhNDNkYjEgbGVnYWN5LXRydW5rCiszNjMzNyA1ZTQxY2JlYzA0NjUzZmY1MWMxNTM2ZDNmMWM3NmE3Nzc5ZTYzZWU5IGxlZ2FjeS10cnVuaworMzYzMzggZjU4Y2MzMzRkMTVjNDYyYzU2NWQ2YTgzMzU3NTkwOGZlY2ZjNGYzYyBsZWdhY3ktdHJ1bmsKKzM2MzM5IDEwZTc1ZWE1OTYwNTQ4MzNhYTdkOTY2Mzg2ZGIyODkxNDA1ZGQ3MzYgcmVsZWFzZTIzLW1haW50CiszNjM0MCA0YmY4ZmIxMTg5NGY0YjgxZmFmNzRkYjAzNjM1NWRjMzFjODM0ZjZkIGxlZ2FjeS10cnVuaworMzYzNDEgNzM3ZTg5MmEyYzJjZjY4NjA1OGJhMTFhODhlYmQzMWExZjRhZDkyMiBsZWdhY3ktdHJ1bmsKKzM2MzQyIGNhZmQxMzRmYzFjZDQ0YjY5OWNlNDJjODgwNmM0MGQ4M2FhYzdjNTcgbGVnYWN5LXRydW5rCiszNjM0MyBkYTYzZTJkNmViOGEzZDFmMGViMzUyZWI0YTU5YWU5NmYzZmFjYjA0IGxlZ2FjeS10cnVuaworMzYzNDQgOTg3ZTM2YWZiODc5ZDI2Njc3NTFlYmFjMjQ0OGRmN2JjNGRkMjNlYiByZWxlYXNlMjMtbWFpbnQKKzM2MzQ1IGVjNWQwZTg3Mzk2NDE4NTJjODFjMDA3Y2IyZGZjOGU5NzEwZTVlNzggbGVnYWN5LXRydW5rCiszNjM0NiA3OGJkMjViNDJkNDYzMTQyYzg0MGQwMWYwY2NhYzNlYTNhMTZhOWU1IGxlZ2FjeS10cnVuaworMzYzNDcgMGRhNjYwZTA1ZTY5MGRjYTEwOGJmNjgxZGIyY2M5MjY3ZThiNThhYyBsZWdhY3ktdHJ1bmsKKzM2MzQ4IDY3NTM5Y2ZjZjA5ZmU4YjUzNGFlNDBlYmQ5ZmE2ZmQzMDFlNmE0ZjAgbGVnYWN5LXRydW5rCiszNjM0OSAyNDc2YTgzMzQyODZiN2EwYmZlMTBhY2NjYzM5ZTdlMzIxZjMxMTE1IGxlZ2FjeS10cnVuaworMzYzNTAgMjQ1MWM5NTcyZWRmNWMwMDk1MjJjZTcwNzQ2MmZmZmI5M2E4OWRjYiBsZWdhY3ktdHJ1bmsKKzM2MzUxIDg3ZDE5NmUxYzJkMDFkNThmMDg3YmViZGI0NDU0YWQwN2NmNjUxNWQgbGVnYWN5LXRydW5rCiszNjM1MiA5MjgyMGVhNWFlOGNiZTEzZGEwYjAyM2U3YWI2YmQwYWI0N2U3MmZkIGxlZ2FjeS10cnVuaworMzYzNTMgMjAxOTg2ZDZkOWQ2MzUwY2ZiMmE2NThjZGM2YzM5NzJiZGVjN2M2YiBsZWdhY3ktdHJ1bmsKKzM2MzU0IDE2MzRmNjAxMTg4ODU5OTU5YTE3OGFkNzc3ZTU5ZTM2Y2I0Y2U5NTggbGVnYWN5LXRydW5rCiszNjM1NSAzMjQ1NWRiOTcxMzU3NmMyOTdlYjhjZWNlNWJkMzBlNzU1NzhmNTczIGxlZ2FjeS10cnVuaworMzYzNTYgNDNiODA5ODE1YzdkNzU5YzFjZWQ5Yzc2N2NiNGNlNzM3MTNlMmRiNyBsZWdhY3ktdHJ1bmsKKzM2MzU3IDdmZDZmODdlNWQxZmNlYmExNThmZTFkY2Y1NDdiMDk2NWIwMzE0OTUgbGVnYWN5LXRydW5rCiszNjM1OCA0ZmFiNGE1Y2NlMmY1ZDQ0MGU0ZWU1MDVhOTYzZWJiOTI2YzMxNmJmIGxlZ2FjeS10cnVuaworMzYzNjAgN2U0NGYzYThiNTY4N2NmYTYxMmUyYzQ1YzgxODUwYmNkNzQxNTUwOSBsZWdhY3ktdHJ1bmsKKzM2MzYxIDdhZDY4NTg3YzlhY2I2MjUzNDVhZmU3NzgyMGIzOWIxNzMzMDAwMDggbGVnYWN5LXRydW5rCiszNjM2MiA3NzU5NzA0ZTc4NzI5MjUxYTk1NGRmNzBkOWE1MTUwYzUxMTA0YTQ1IGxlZ2FjeS10cnVuaworMzYzNjMgZWM4ZTRlZDJiMTU3Y2M5Y2I3MzI1NzAwMWQ4MTcyMmQyMWM1NGVmZiBsZWdhY3ktdHJ1bmsKKzM2MzY0IGM0ZDU0YzRiYTU1NDNlYTgyY2Y1NzQ0YjE0NTk5ZWE1ZTU4OTY5ZjUgbGVnYWN5LXRydW5rCiszNjM2NSA0NjkzZmExOWUyMmJkY2EyYmE5NjM1NjQwOGNmNWQ4NDcyZGU1ZjQ5IGxlZ2FjeS10cnVuaworMzYzNjYgZDFmYjRiZDQ4OTM2MDczYzI4NDJiMDdlN2U4NmM0NDIyOTkwZjVlMCBsZWdhY3ktdHJ1bmsKKzM2MzY3IGQ0Mjc0OWRiOTMzOTI1MmNhMzcwNzg2MDhkZjY4OGVhYTkyNzM4MDcgbGVnYWN5LXRydW5rCiszNjM2OCA5Mjg4ZDUyNGQ3NTc5OTcyMjVhYmE5NjkzZWE0OTNlNWM4MGFiODBjIGxlZ2FjeS10cnVuaworMzYzNjggOTJjYTY1OGZkNDIwMDk1YjYyODRjOWNlNmU5MDgyYTgwMjg1ZWM5YyBsZWdhY3ktdHJ1bmsKKzM2MzcwIGJlMWExMmQwYjg5NWQyNTE2OTIwMjVhYjM5NDhkN2FhNzliNjQ1NWUgbGVnYWN5LXRydW5rCiszNjM3MSBmM2YxMWQ4NjNhMDJmNjEzYWY3ZDU3M2Y1NmQ0YjEyN2UyYzhjNzY3IGxlZ2FjeS10cnVuaworMzYzNzIgZjQ2ZDQ5ZTJlMGYwYjE4ZmQ5MzI1OWY2NzZiNTVjODU1NGQ5NzIxMSBsZWdhY3ktdHJ1bmsKKzM2MzczIDM3MDZhMzcwNGFlYWMwMmE1MmQ4NjRhMTM1ZTQxM2FkNGMxYmM5ZjggbGVnYWN5LXRydW5rCiszNjM3NCBjMDk5YWE3Njc5NTJkOThhNmQ3YTI2ODFkNTMwMTg3YjM0MzBmMTEzIGxlZ2FjeS10cnVuaworMzYzNzUgNzRjM2I3MTNlMzVhNmFmZDU1ODQ3YTdiZWNjNTU0NzUyZTZlMWQ0NyBsZWdhY3ktdHJ1bmsKKzM2Mzc2IGQ5MDlhMGRkZDE5MzJkZTBmYmJlMjE5NDRiNzlmZjI3YTNjNzkyMjEgbGVnYWN5LXRydW5rCiszNjM3NyBlYzI4NTYzYjA1MmU4ZmQ2YjlmNGE3NDE2NzMyMjQ2M2Q4NDMxZjRlIGxlZ2FjeS10cnVuaworMzYzNzggMDI5ZGZmYjYzZjRiZjFjYWNiNzk3MTEzZWIzMDM0OGVlODhhMzIwNyBsZWdhY3ktdHJ1bmsKKzM2Mzc5IDdmNGI2NmRjNDM3NjJkYThjZWZmNzhmYjY5MTlhNDU5NzczMWI1ZGYgbGVnYWN5LXRydW5rCiszNjM4MCBlYzFiNTZiNDNhZjA0NjVkNGJlMzdhNThmMjZlY2U3MTRmNGExYjRlIGxlZ2FjeS10cnVuaworMzYzODEgZTRiOTZjM2EzZTEyMjlkYWE3ODNjZmNmOWQ5MzBlYTI2MjYwNTFiMCBsZWdhY3ktdHJ1bmsKKzM2MzgyIDZmMzUxYjFiY2Y1MzRjOGNhYWIwMjRhMWE4NDE5ZmUyZmQ1MjhlMTQgbGVnYWN5LXRydW5rCiszNjM4MyBhMTYwYjk2NjlkYjFlMzIwY2UyY2EzZmZkZGE3ZWE3Y2NlNGNlYjk5IGxlZ2FjeS10cnVuaworMzYzODQgNjliYjI0MWIwNTZjOTZmMTUyNDIzYWFjZWJlNDRlNTE5NjNjOTU0NSBsZWdhY3ktdHJ1bmsKKzM2Mzg1IGNmMTM4YzU1ZDQxYmU2YmM2ZWRjZjJjOTc0M2YzNTdmYTczMDFmMzUgbGVnYWN5LXRydW5rCiszNjM4NiAxMTE4NjgzY2Q0ZDFjZjVjMDVmNmM3ZTBkMGExMTQ2M2Y5NmVmOWE3IGxlZ2FjeS10cnVuaworMzYzODcgM2FhZGZjM2ZjNGU2ZmRiODA3ZmM2YWE1YjcwY2Q1M2MzNDlmYWRkNCBsZWdhY3ktdHJ1bmsKKzM2Mzg4IDAwNjRmNTViYWZhN2M5Njg3MzM4OThiMjRkOTNkY2Q0MDBmZGMwMDggbGVnYWN5LXRydW5rCiszNjM4OSA4NDRkOTljODg4YmJhMTRmNjUzMDhiMzE2Y2RlNjViYWM0MTEzZWE3IGxlZ2FjeS10cnVuaworMzYzOTAgNWMyNWNhNmZmYWY5ZTU5NTU2ZWE2NzRhZTZjMzA4NTVlMzM1NTM0MyBsZWdhY3ktdHJ1bmsKKzM2MzkxIDcwYjE1MDRlMTdmZmNmNmEwZDk5NzA5Y2ZkYjNjMzNkOTA2MWYwZDMgbGVnYWN5LXRydW5rCiszNjM5MiBiZWMwYzc2MTg2MjU0MWU1ODk2NWMwNjg2ZjUzYzUzYTMzNDU3YzZiIGxlZ2FjeS10cnVuaworMzYzOTMgOGVhMmNiMWVjNTk4OGQ5YTMxMmMxNjRiYTZiMjIzODJiNGFiNWE0NiBsZWdhY3ktdHJ1bmsKKzM2Mzk0IDE1M2M1MTdiYzZlOTZlNzRmYzIxMzEzMGRkODk5Nzk4NzQ3NDljZjQgbGVnYWN5LXRydW5rCiszNjM5NSAyMjgzMjM4OTUyNzFlMDQ2ZTY3NWMwNDRjMmMzOWVlMmZlOGMwNjA4IGxlZ2FjeS10cnVuaworMzYzOTYgNTExZmZjNjJiMjk4YTdmMTFiMzYxZjE1MzRhYjA5NTYxNTI2YzQ3ZiBsZWdhY3ktdHJ1bmsKKzM2Mzk3IDgzY2JjMDI1YmZjNzRlNGUxOGE4ODcxMTE4MWI4NzZjNDkzNDY2MDEgbGVnYWN5LXRydW5rCiszNjM5OCBmZWY3OTExYTU3MDVjYWVmNzA1OTM4YTM3OWZlMThlMWYzMWRmMjJkIGxlZ2FjeS10cnVuaworMzYzOTkgMjFmZDZlNjJjZDI3NmIyNzI3OTI2MDc0Nzg5MWE5OWM0OGZlYjFlNiBsZWdhY3ktdHJ1bmsKKzM2NDAwIDQ5MmRjOGI4ZTU4ZWMxNWU3MTY3YWEyNjdkZjZjOTQzNDkwZjRlMjAgbGVnYWN5LXRydW5rCiszNjQwMSAyMzAzOTdiYzdlMzIwNDZjYWI1YjA3ZDg1ZjQ1NDFkMDRmYzBjNTZkIGxlZ2FjeS10cnVuaworMzY0MDIgMGRkNDczYThlNTNjMDkyMjdhMWU5ZDkxMTZiYzE5OWVlM2M4NWRkYiBsZWdhY3ktdHJ1bmsKKzM2NDAzIDRkMmY0YTM5ZWM1ZWQyNzQ5MDRjMTcyNzlkMzBmYTlkM2MyNTYxMWIgcmVsZWFzZTIzLWJyYW5jaAorMzY0MDQgNzM2MmUzNzJjODk3MGQxNjMwZjgyY2RhMzU0NmZkMzViYTYzODVjYyBsZWdhY3ktdHJ1bmsKKzM2NDA1IGYyZjBjNWZkOWI2YzlkM2YzMWZjMTdkM2U3YmJlNGIxNzNiODExZmUgbGVnYWN5LXRydW5rCiszNjQwNiBhNjRiYWU1YzMzYjdlNzZhMDg0NjFhZmU4ZDIyODNiNWM4MzgxZTQyIHJlbGVhc2UyMy1icmFuY2gKKzM2NDA3IGRlMzI2ZDdlNzRlOGI4Mzc5OTg1MTEzOGQ3NGExZTY1YWI3MDU4MTYgbGVnYWN5LXRydW5rCiszNjQwOCBhMDNiY2ExNjU0ZDBhMmZmODAzN2NlMjk5MzQyZWRmYzFlMjBmZTVmIGxlZ2FjeS10cnVuaworMzY0MDkgNjdhODRhMzNkMGY4YzM0M2MwZjJlMDA1OTJkNDY5YWZhZGJkNjI2NCBsZWdhY3ktdHJ1bmsKKzM2NDEwIDRiZTRjNjM2NzNlYjE1YzkzMWJkYWMzYWI1MDRhNzE5MWVkNDBiZjkgbGVnYWN5LXRydW5rCiszNjQxMSAzZTkyNTk1OWZhMDFhY2VkYzY4NzczODE2N2RmZWYzN2YwMTBjNDI1IGxlZ2FjeS10cnVuaworMzY0MTIgYzc4ZmNkZDAyNDY0NDZkZjEzMzQ1YzQ4MWQyZjJlZjZjODQ4MzY4NiBsZWdhY3ktdHJ1bmsKKzM2NDEzIGYzZjQ3NjVlZmU2NjgzMzhlMjNkM2MzNTJhNTFjZWNlOTVlOWMyYzAgbGVnYWN5LXRydW5rCiszNjQxNCA1YjI1YzY0NDZhZWIzM2Y3MzY0NGRjOWQ0YzFlMmI0ODQ1ODIyZDBlIGxlZ2FjeS10cnVuaworMzY0MTUgNmQ3YWIwY2FkNzJkZTE2Y2ZjMWQ3OTJmMzI0NDUwZjA1ODg3MmU4OSByZWxlYXNlMjMtbWFpbnQKKzM2NDE2IGZkYjkzNzc1MTNlNDJiMjk5NTU0Y2ZkNDI4ODU0YTg1M2RiNjFjZjUgbGVnYWN5LXRydW5rCiszNjQxNyBmNmI0NWQxY2IwYTJiZjY3YjExYWI2ZjY2MTU2YTYwN2ZmM2RjZDE4IGxlZ2FjeS10cnVuaworMzY0MTggYjUyN2NiMWIyYjllYjRhZDk0NjZjOTg2NjU5MjdlNTBmOTZiZjBhMiBsZWdhY3ktdHJ1bmsKKzM2NDE5IDFjNWVkODFmZmEyMzVkYjg5MGYyNzE4OGMxOTk4Mjk2M2U0YzhjYjMgcmVsZWFzZTIzLW1haW50CiszNjQyMCBjMTZiMDNiYTFjMjJiZTQwNDNmNDA1OWFiZDcxM2RmZDE3NjBjZGJiIHJlbGVhc2UyMy1tYWludAorMzY0MjEgOTBkNWNlZTdlNjZlNDdhOTQ5ODA2ZDJlYWE0OTc4Yjk0YWZiZjUwOCBsZWdhY3ktdHJ1bmsKKzM2NDIyIDU5OGE1Y2U2MzMyMmZhZTNhY2U2YjQ4ZTAxOTc4MjYxYTVhYjUyZTUgbGVnYWN5LXRydW5rCiszNjQyMyA1MDc0NWQ5OWZiZjE2MDg4ZDNkMTJkZmE2ZjI3ODc1MjY5YjQxMTIwIGxlZ2FjeS10cnVuaworMzY0MjQgNWUxZjU1ZWMxN2Q2YzcxMGEyMDM3NmYzNjg1OWEyZjNmNGI5MjAxYyBsZWdhY3ktdHJ1bmsKKzM2NDI1IGFiOTc5ZmY4YjAyYWVjYTU0Nzk4YWNjMTY2YTU5YzQxNDU4YTUxMWIgbGVnYWN5LXRydW5rCiszNjQyNiA3OTliY2RmZjJjZGMwNTYxYjYyODY1NTEyZjM4MjI5M2M1ODcxZDlkIGxlZ2FjeS10cnVuaworMzY0MjcgMDhkOTA0NjBhYjRkNjI0ODcwYmE3YWZhYjBjZjI5NDM4N2ZiZThjMCBsZWdhY3ktdHJ1bmsKKzM2NDI4IDU3ZDIxYzVlMGViOGFmMGIyYmEzNTYyMzI0NGMzZjU2NGUzNzljMDEgbGVnYWN5LXRydW5rCiszNjQyOSBjYzFmNzRkMTlmY2JiN2NiMTkxNmE4ZTQ0ZTYxNWQ0YTdlYzBiN2I4IGxlZ2FjeS10cnVuaworMzY0MzAgYzQzMTZkZjJmZWQ0Njg4NWMyMzNjNWRkMmM4ZWE0MTg5M2NmYmRiMiBsZWdhY3ktdHJ1bmsKKzM2NDMxIDZlOWMxODI5NThmOTE3MGZiMjllYjNlOTcyNzZiZTIyODlhNDk2MzIgcmVsZWFzZTIzLW1haW50CiszNjQzMiAyYjEwZTJiNWU4MWVmMjNlNmE1N2Y3MmY5ZGVmZjUxZWZkZTUwNzViIGxlZ2FjeS10cnVuaworMzY0MzMgNGYyNDgzYWJiNjIzYWY2NDA4ZDg1ZGRlYmE1NjFiOTk2M2M3NmE3MiBsZWdhY3ktdHJ1bmsKKzM2NDM0IDhiMzI4OGY2MDdlMWY4MjQwNzBjZDU3MDg4YjFhM2VkZTYzZWFiYzkgbGVnYWN5LXRydW5rCiszNjQzNSA1NTQ2YzdhZTI0ZjcwZDdmNWNkZDg3NzRjYWIwOTU5Yzk0MGYzMTk5IGxlZ2FjeS10cnVuaworMzY0MzYgMzFiNjVkODM3MWFmOGQyNmFlZjBlMTg0Mjk3ODczNzFmOGNhNzMxOSBsZWdhY3ktdHJ1bmsKKzM2NDM3IGYwODFmM2E1NjhmYTg4N2UxNWJmYWRmYWYzYWQ1OTJlNDMxNWE0YWUgbGVnYWN5LXRydW5rCiszNjQzOCAwOWVhZWU3Mjk3M2M1MGViZWVjOGZmYTA4M2JmYmRmYjM2OTRiYjBkIGxlZ2FjeS10cnVuaworMzY0MzkgYzUzOGE3NjQ0ZmZhNmNiNzhjZWQzY2I2ZTM4NDUwOWIwMjVhOGJlMCBsZWdhY3ktdHJ1bmsKKzM2NDQwIGU2ZjdlZjcwNzNjNjc5NjIwZDk5OGRiZTA0YTY2MWZhZDMzZWMzNjggbGVnYWN5LXRydW5rCiszNjQ0MSBhZmI0MDMzODNmNWQwN2EyZmQ3ZWE2ZjhlNzU1MzgzMDk0Y2U0NTUxIGxlZ2FjeS10cnVuaworMzY0NDIgZjYwM2U1ZTk2YTRmN2M4MDk0Y2RlZmFlNjc5M2EzZmMyZGIxNmU5NiBsZWdhY3ktdHJ1bmsKKzM2NDQzIDJmZDY5MjQwNzI5YWFlNTNmOWQzNGM0OGE3N2ZkMDcxYTg2Y2JjZTIgbGVnYWN5LXRydW5rCiszNjQ0NCA2YWJhNmQwNzU4OTlhNjE4N2Q4M2Y2Nzc0MTMyM2Y1NDUzOGQyMWJkIGxlZ2FjeS10cnVuaworMzY0NDUgMTQ0NjA5NWE5NzFhYjhhMzU2ZjVlNmNjOGViYTYyZmIwYjQxOWJjZCByZWxlYXNlMjMtbWFpbnQKKzM2NDQ2IGY4NmJmYzAzZTc2MzY1NDY2NDJhZWM5ZTI5ZDA2NzM2M2JmMDQyNzggbGVnYWN5LXRydW5rCiszNjQ0NyA3MzAxNmJkMDFhNzE0YWZhYzRjYTkwNDNmZTNkYWI2OGMwYjEzZWQxIGxlZ2FjeS10cnVuaworMzY0NDggZDQyZWZjMmI0NWU5NWM2OGZiNDYxMzFjMzMxZTFmMWQ5NzVlM2EyOCBsZWdhY3ktdHJ1bmsKKzM2NDQ5IGY5YWQ1ZDIwMmU4ZWY0NDIzMTE3NWFlYTA1NzhmZjcxMGI2NWVmZDYgbGVnYWN5LXRydW5rCiszNjQ1MCA0NTdmZDQxYzk2MWQyZmY4YTMxNjdlNzdhZTQ0OTk3YjlkOGYyMWJhIGxlZ2FjeS10cnVuaworMzY0NTEgNTEzOTg5MmFkZTYyMWNkOGM2Nzc2MGFjNGZjZWUwNTBjNTljY2JkYSBsZWdhY3ktdHJ1bmsKKzM2NDUyIDYxNzNkOTdiODI5ZTZlNGMxMmQyOTVlMDQxN2E1NGI2OGRkM2ZkN2EgbGVnYWN5LXRydW5rCiszNjQ1MyAwNTlkYWUwNjU4NWJlZmJlYWVlMjk5M2EzYzk5ZDMyNjAzNTE0NjI0IGxlZ2FjeS10cnVuaworMzY0NTQgY2UzMzk2N2E0YWIwZjMzNjM4ZTUxMWFhNmJlYWM2ZGNmMTIwNjk0OSBsZWdhY3ktdHJ1bmsKKzM2NDU1IGNmMGM5ZTE1ZjZmNGQ2NDg0ZmVkNGE5MTA5ZDczNTE5MmRkZjc4NmUgcmVsZWFzZTIzLW1haW50CiszNjQ1NiBjOTg2OWExOGU2MjEzMmQzZjhhNTNmMzdmYmIxOGY1OTQzM2YxZTM1IGxlZ2FjeS10cnVuaworMzY0NTcgYWIxOGVmODNmNWE2MmFjNGE2MWZkMTg1Yzc5MTliYmRhY2Q3NmU4YiBsZWdhY3ktdHJ1bmsKKzM2NDU4IDliNWM2MzgwMmJmOWUyYWI2ODY0NWMyNWZhMzViMzQ0MjNlZTI3YjggbGVnYWN5LXRydW5rCiszNjQ1OSA2ZjM2ZTAyYjFmNjk3ZDBjYzM0NjZjZDM0ZWJmZTE5NmQ3MjkxZWI3IGxlZ2FjeS10cnVuaworMzY0NjAgOTlhYzUzMGU4YjNmNTdiNDJmODE1YzQ4YzdmZjhlZTExYTAwNjdmOSBsZWdhY3ktdHJ1bmsKKzM2NDYxIGVmMjM5NDAxNGQyNDVlNTFhNDMyMzgzZWZmMDI0N2I5MWM2ZWM1YTcgbGVnYWN5LXRydW5rCiszNjQ2MiAyZGJmNTk2ZTA1MjRlOTU5MTAwZjMzYTgyYWFmOWFjOGYzMzJlZjExIGxlZ2FjeS10cnVuaworMzY0NjMgZmRlNDMyN2NkNDcyNGQ0YTA4Njk5ZGQ2MDZlZDg4N2U3ZDUxOWU5NyBqaW0tbW9kdWxhdG9yCiszNjQ2NCBkYTE4MjEwZTMxMWMyYzIwZTJjMjQ1ODBlZWY4Y2UzMWQ5NmMwMjg4IGxlZ2FjeS10cnVuaworMzY0NjUgZDhmMzE3Y2E4MGJkMzBjYmY2YzdmZDJjNjYwM2M2ZmMwZDc2Y2Q3MSByZWxlYXNlMjMtbWFpbnQKKzM2NDY2IGRiOTk0ODQ5Y2RmM2ZjNDEzNmYxNTZmYTQ2MTYwOTQ5NTI2Yzc4MWYgbGVnYWN5LXRydW5rCiszNjQ2NyBjZjBiYWVmZThkNDAxMzBhMzI4NzhlNmNlYjlhY2Y2MmQ1OTMxMzQ3IGxlZ2FjeS10cnVuaworMzY0NjggZmJiOTAxZDYyOTdiNTVkYzNlM2U3OTM3NjMyZDQzZWZkMjlkZWU3MCBsZWdhY3ktdHJ1bmsKKzM2NDY5IGZmNTlhZDU4NTY4ZTFmNWNhMzU1YzdhOWQzZGNmNDFkZGZjZGNkMzUgbGVnYWN5LXRydW5rCiszNjQ3MCBlODk5MDYwYjFmMDUxZWYxNGJhZDYwOTk5NjIxY2UxYjFhZWI3ZmM4IGxlZ2FjeS10cnVuaworMzY0NzEgZGMzMmUwYThhMGVkYjE1ZjJjZmMyODM1YjY1MDI5ODgwMjViNzNiZCByZWxlYXNlMjMtbWFpbnQKKzM2NDcyIDliYzJlZWMxNDc4YjZiYTU1ZjBiMDdlNjg5MTJlODVmZWU1MzI4MTAgbGVnYWN5LXRydW5rCiszNjQ3MyA5YzM0ODUyNmE2OTk0MDdiY2YzMTEzNDU1OGE4MjkxYWFlOGEzYTM0IGxlZ2FjeS10cnVuaworMzY0NzQgNmMxYzU5NTdmZWQ1ZjllMGZkYzk4MmI2NzM1ZmQwMmM5MWYxZTVmZiByZWxlYXNlMjMtbWFpbnQKKzM2NDc1IDNjMmQ5ZTdhYzVhMWY5OWY4OGNjYTBjNWI4Mjg1NWExYThmYTZhY2QgbGVnYWN5LXRydW5rCiszNjQ3NiA3YmQwNGE0ZDI4YjkzMWYxODlhNjM5NGVkZDkwYzU4NWI0YmI0MzQ1IGxlZ2FjeS10cnVuaworMzY0NzcgOTI5NDQ0Y2EyMmQ4ZjZkZmVjOWVkZWEzOTljOGU3Y2VmZWUyY2JjYSByZWxlYXNlMjMtbWFpbnQKKzM2NDc4IGY3MjVhMTkxMGQwZDA3NzMzYjdkNTE2YjM1NWM3OWZkZGE3NTg5ZjMgbGVnYWN5LXRydW5rCiszNjQ3OSA0NjNiZjVlYmY4YTMzYWI0MzMzZjQ0ZDk3NjY3N2Y2OTNjNGE3MTJmIHJlbGVhc2UyMy1tYWludAorMzY0ODAgMzkxOTM3NTcxMDY1YWUxMjY0YWE1YTQ4Y2JmODc5NjM4NWM3MmQ5OCBsZWdhY3ktdHJ1bmsKKzM2NDgxIGJlMTQyN2NiMDQwNmY2MjlmNzNhMTQ0ZTEyNDMxYjhlMWNhMTg3NTMgbGVnYWN5LXRydW5rCiszNjQ4MiAzY2NhMjhhYjM4NTQ0MjE1OGIwYzkyZGZmNWEyZmFhZjNlMmM1NWI4IHJlbGVhc2UyMy1tYWludAorMzY0ODMgY2EyYWE0M2JhMzhiN2FlZjIzNzMxNGVhNmVlMmNmMTE1YTU5OTExOCByZWxlYXNlMjMtbWFpbnQKKzM2NDg0IDU4ODQzZjE4NmU4MGZkZWZlNDkxYTM0OWFjOTVmNDdjNGI3ZWRiN2MgcmVsZWFzZTIzLW1haW50CiszNjQ4NSBjMTMxYzc4OGEwNmZhYzgxODUzM2RkN2JhYzM2ODFlYmVmY2QyNzhjIHJlbGVhc2UyMy1tYWludAorMzY0ODYgZTRkOWQ4NDBjZTZlNTU5Y2MzZWU1YzNmNWNlMWNmNWRlOGZlZDYwOCBsZWdhY3ktdHJ1bmsKKzM2NDg3IDZjNWYwMWVjMmY3NWI2ZTE0NzlmNDUxNTFhNGIxMTRkOGJiM2RkYjggbGVnYWN5LXRydW5rCiszNjQ4OCA4YmQ2N2JhZDE0M2NkYzU2MmRlNjBkOTY4NWU5N2MxMzFmNTc3OWNjIHJlbGVhc2UyMy1tYWludAorMzY0ODkgM2ViNmQyNTM2MGEzN2EwMjI5YjlmZDUwMTAxYzE0NGVmNjQwMDcxNSBsZWdhY3ktdHJ1bmsKKzM2NDkwIGMxM2Q5MTFhZTA1YmMwZjM2NWE5NzAwMzE4OTYyODBmZThjYzQ2YzAgbGVnYWN5LXRydW5rCiszNjQ5MSA5NDFjMjM5Y2I2ZDI5NjhjMDMyMDhiN2YwNDgwNzU5ZDFjODUyNGE0IGxlZ2FjeS10cnVuaworMzY0OTIgNTk0OTk2Y2FmZjEwZDEzYjY2ZDEyNzJkYmU4NDE2YmE4ZDUzY2M3YSBsZWdhY3ktdHJ1bmsKKzM2NDkzIDI3MmFiNWE1NGI5ZWJjOWM2MWVkMWE3MmZjODUxNTk2MDU0MWM4MmQgbGVnYWN5LXRydW5rCiszNjQ5NCBhMWE5Nzc2ZmFiNTNlYTJmNjQwMjRlYzk2MTBjMDViNGY5MGJkZmFkIGxlZ2FjeS10cnVuaworMzY0OTUgNTJiZWFmZDkzNmM4MGU1OGU1MzNmZTc2YjM0NDYzZjU4YWJhMDUzYiBsZWdhY3ktdHJ1bmsKKzM2NDk2IGQyZTY2ZWFhNWY3NGU4MWU3ODg5YzkxMWJiZGNlOGI5ZjQ0MTJlYzQgbGVnYWN5LXRydW5rCiszNjQ5NyA5Nzc2OGQ4NzM5NGE0NDEwNzI1NzNkYzJjMzU3NmNmYjhkNjcwNzA0IGxlZ2FjeS10cnVuaworMzY0OTggMzQ3OTYxMGZiMjg4ZDk5OTJiYzg0Yjg0OGJjZGQ4YjdmMDI1NjQ4ZiBsZWdhY3ktdHJ1bmsKKzM2NDk5IDk0OTQ3M2ZhNDgyODVlNWM4NmJmMmJjNDJhNzliNzNkNzhiMjFhNjUgbGVnYWN5LXRydW5rCiszNjUwMCA4OGY1NDA1NzYxYWY3NjM0YzcxNDExNGMxNWNhYmVkZGM1MzVmZWQ2IGxlZ2FjeS10cnVuaworMzY1MDEgNjg3ZDJlY2ZhNjQ4NWU4Yjc1OGIyZmExOWVkNTE0OTMwM2JhYjY5OSBsZWdhY3ktdHJ1bmsKKzM2NTAyIGNhZGEyZTliNjg1Yzg5ZTliODcwZjY4N2ViMTlhNjVmNzAxM2YxODggbGVnYWN5LXRydW5rCiszNjUwMyA1NTgxZDY4YjNhZTllNzIzODRkZjUxYWZmNjkyNTAyMmYxZDQwMjdkIGxlZ2FjeS10cnVuaworMzY1MDQgZDNkNDI2NDgzZDcxMDQzYjNiNTk3ZmNhNWYwNzg1MGZmZTYxYTlmNSBsZWdhY3ktdHJ1bmsKKzM2NTA1IDEwNGE3ZmMwNmJkZmEyYTRkZWQ0ZDVlNzk5MGUyOGQ4MDBmODhkMTIgbGVnYWN5LXRydW5rCiszNjUwNiBiYzRkZDMxYzczZmRmNGY4NTY4NWUxNDlkZGM2ODZlZmU4MGVlOTU0IGxlZ2FjeS10cnVuaworMzY1MDcgOGZjZjIwNTJkMTZlMjA2MjI5MmE4N2QwYzhhOTZjNTY3NjNhNzllYyBsZWdhY3ktdHJ1bmsKKzM2NTA4IGQ2NGRjZmI0OTViMmI3MTVmZGQxNmNjM2ZkZWEyMDY1OGM3NmQwYjcgbGVnYWN5LXRydW5rCiszNjUwOSAzNWQ0MGZmNjllYjYyNjRlOWI5MWU4NjIwNjM0N2MzZmJiNjI5NGNmIGxlZ2FjeS10cnVuaworMzY1MTAgOWEzYjQyMTliY2JlZGViYTQ5YzUxYmZmNzk5Y2Y5YmJhMDUzNjZiMCBsZWdhY3ktdHJ1bmsKKzM2NTExIGZhZTQ2MDc5NGQzZDM5ZjYwYTk0MGNkOTc4ZTc1Y2VlNWRkN2IyOGEgbGVnYWN5LXRydW5rCiszNjUxMiAxMzk5ZGM2MTY3MjBmNGIwM2IzY2RjMjJhY2Q2MTkzZmJjZWEzYTA1IHJlbGVhc2UyMy1tYWludAorMzY1MTMgNTc3YTllNGM4MmZiNzFlMjZiZWM5ZTkyMmE0ODhmM2NiZjc5NTljYSBsZWdhY3ktdHJ1bmsKKzM2NTE0IDJiZjg2OWQzMWYwY2U2MTVlN2MzMzg1Y2MwODNkNjE1ZjRhZTAyMzYgbGVnYWN5LXRydW5rCiszNjUxNSA1ZmI3OGEyZDk0ZjBhZGUwZDlhNTJhYTU3M2EyZGNmM2NhZmY2NGIyIGxlZ2FjeS10cnVuaworMzY1MTYgMjExZGI2N2NjZDA5ZWQ5NDM0ZTdmMDkyZWZmMmE2ZDc3N2U5NGM1ZCByZWxlYXNlMjMtbWFpbnQKKzM2NTE3IDc4MGEzMzc4NzQ1OGVjZTIxM2IzNjY3Y2I4N2Q4MTA5ZWVhMTk2YTkgbGVnYWN5LXRydW5rCiszNjUxOCAzYzM4MmQ5MGYzMDJkM2U1NjI4ZmY3NjMxZGY3ZmI5YzRlYjUwM2JiIGxlZ2FjeS10cnVuaworMzY1MTkgZmYyNjcxNGJmODZkYzRjMjJiNGUxNThjMTY3MzViNjYxNGM5ODgwZiBsZWdhY3ktdHJ1bmsKKzM2NTIwIGJlNmYyZTFhNzhiNzYzYzI2YmIxMmQzNWI5NzNjNjk2MmE1NDkzNjcgbGVnYWN5LXRydW5rCiszNjUyMSA0OWJhYWQ3YjAzMmUwYjBjNGRhYmZkZmFlNDQwNjRhYjQ0YTYzMWU4IGxlZ2FjeS10cnVuaworMzY1MjIgNzc0MmY4NWEzNzIzOGUyYzVlYjBiYzA4ZDJjYzQzMGVjMWI2NTE2OSBsZWdhY3ktdHJ1bmsKKzM2NTIzIGRjMmZlNzdkZDE2N2VkYzg2NTFmNTMwMjRhMDUyNjdhZjc4YzQxOGYgbGVnYWN5LXRydW5rCiszNjUyNCAwNzI5ZDFkYjUxMTgzODBkZDA3MDMyMDhjMjZlNjk4ZGY0ZmZjNGRhIGxlZ2FjeS10cnVuaworMzY1MjUgZWQzNjYyMWIxMjZhMWU3OTg1NDRkM2QyYWExNTExMGI0ZGZkMGVlNCBsZWdhY3ktdHJ1bmsKKzM2NTI2IGRmNGU2Y2M2NjYxZDA0NTg4OTk0OWM3MGVlNTdjNzBjNDNkM2VhNTcgcmVsZWFzZTIzLW1haW50CiszNjUyNyA0YmUyODA5M2U0ODBlYWMxNWFjMzQ5NzQyN2I5NzcyZTNhOWE1OTBiIHJlbGVhc2UyMy1tYWludAorMzY1MjggYWIwYjJhNTg4OGY5ZTcwZDExZjZiN2M5ZjBjNzU3YjU5NTg3YzcxNyBsZWdhY3ktdHJ1bmsKKzM2NTI5IDUwNjlmNWJkNjZmM2Y2ZDZiNzBmZDExMzQ2MTlkNmYwYjYxNGQxZGEgcmVsZWFzZTIzLW1haW50CiszNjUzMCBkMWVmODZmODc4NWY5M2RmNDhjZGEwNmZkNDYxMWJiYThmM2ZhZWMwIHJlbGVhc2UyMy1tYWludAorMzY1MzEgZjA4NTI5ODc5ZGIxYWQzZDVjYTQ1N2VmZGM2YmM5NDE4MDdhZDk0YyBsZWdhY3ktdHJ1bmsKKzM2NTMyIGFiZTA0ZTc3YTRiMGZkN2E3ZTg3ODZmZDI0MmY3ZDNmMzNkYzY4ZWUgbGVnYWN5LXRydW5rCiszNjUzMyA4NDZhY2U1NzM4OWM5MmE5ZGQ3ZTRmODgwNmQxMzFlYmEwMzFhMjMxIGxlZ2FjeS10cnVuaworMzY1MzQgZGY4OGZhZGJhMmY1NmNiZmU0NDE5MjJlNzg5NDkzM2MxOWNlMGRmZSBsZWdhY3ktdHJ1bmsKKzM2NTM1IGM3YzliNjhkZGRhMjljNTYxZGM4MjgzNzA3ZmI5YWNjMjI3MjA2YmEgbGVnYWN5LXRydW5rCiszNjUzNiAyNTVhZTIzYzc4ZmI2MTkzYmZjNWY1MzhjNmY2YzIzNzk3OWJlM2U4IGxlZ2FjeS10cnVuaworMzY1MzcgMzhhZDljNmU3MTdjOGIwYjhiYzk3MmY2MWYzMzgyZjJhMDg3NTM3YSBsZWdhY3ktdHJ1bmsKKzM2NTM4IDE3NDA2NTQzZjE1YjI3ZThhYmNiOThlM2YzNzA5YWZiZTBlNmM4M2EgbGVnYWN5LXRydW5rCiszNjUzOSA1YjBjODdkZTZkMDUwOTZlZDQxODEwNGM2YjdjNmRjNzc1NDYwZTEzIGxlZ2FjeS10cnVuaworMzY1NDAgZjc5Y2YxM2E5YTdkMTBhODMyYWJlMDIyNjVkN2UxMTU1NWRjYzRjMiBsZWdhY3ktdHJ1bmsKKzM2NTQxIDBlODkwYWMxYzBmMjY1ZjQ0N2YyN2ZmMzdmY2YwMzJmODM4YmJlOTYgbGVnYWN5LXRydW5rCiszNjU0MiAxYmQzMzgzYmFkOTg1MDM2NDgwMzY1YmVkMzM5MWZmOTY2NzI0NzQwIGxlZ2FjeS10cnVuaworMzY1NDMgMTA5NTUwZjVhODI5NjMwYThlZmYyMTA4MmMwZTBlYmYwZjA4MmUzYSBsZWdhY3ktdHJ1bmsKKzM2NTQ0IGNiYjI1ZmRhOTVhNTgwZjJjNjdmNGFhOWJkNDQwNzg4ODJlNmI0NmMgbGVnYWN5LXRydW5rCiszNjU0NSBkMDlkYTcxNDEzY2EwNGZjYjZjZjMzZmFjZmEyM2M1YTQwYWZlYmRlIGxlZ2FjeS10cnVuaworMzY1NDYgNGQ0M2IwYWJjMjJhOGI2MWZlMmFjNTBjZWFlOTk2ZmNlN2E2MzQ5MiBsZWdhY3ktdHJ1bmsKKzM2NTQ3IGVmY2E1NWJiYmEwYWIxMmEwNGY5NzZkNDY5NjM5YjUwNTAyYzM3MmYgbGVnYWN5LXRydW5rCiszNjU0OCA2YWNkNzA3MGVkNjZmN2FkNjUzMTBkYjAxYTJmOGNiYWE4ZjdjM2E2IGxlZ2FjeS10cnVuaworMzY1NDkgNzU1OWM3ZWI0NzgwMjc0MzQ5ODYyNjk2OGM2M2I4NDQxYTU2MGMxNSBsZWdhY3ktdHJ1bmsKKzM2NTUwIGU0Y2M3ODg4NGZjNDI2YzI2ZDIxOTJiMjE2NTU5ZjQ1YTI2OWUwNTkgbGVnYWN5LXRydW5rCiszNjU1MSA2OWRhZGMyY2ExNGRmY2JmNjJhZTFhMTZiZTI5MDNmYjAzODA1YzJjIGxlZ2FjeS10cnVuaworMzY1NTIgODE3ODRmNjY2Nzg5YjkwMjRmODc2ZTUxY2I5OWZkZDg2YzVjNTU3ZCBsZWdhY3ktdHJ1bmsKKzM2NTUzIGUxMzVlODJjZjZlNDg5MTZmNmI5ZDQ2NWNhOWNhNTdiZmZmYWZlMDggbGVnYWN5LXRydW5rCiszNjU1NCAwN2I0OGVhZjJiMDFlYmM0OGM0ZmE0MDdiNmI2MzcxZTg1MzNjNmM4IGxlZ2FjeS10cnVuaworMzY1NTUgYmViY2I3OWYzN2NiYzk0OTgzOTc2NDEzZDA0NDkyZmFjYTg3MzczMSBsZWdhY3ktdHJ1bmsKKzM2NTU2IGRjM2YwNGFmZWY3NTcwYjY4MzFlMGFjNDUyNDQ0NDNlNTJjOTYyNDggbGVnYWN5LXRydW5rCiszNjU1NyA5NzdmMjY3YjAwZjkzZWM2MjkxOWQ3NmE1MTNiM2YxMzNjNDE5MDU1IGxlZ2FjeS10cnVuaworMzY1NTggYjFkMTQyZDcxNDgyODk5ODcwNDYwNmRhZmZkZjE2NWM3ZDQ3ZTkwZCBsZWdhY3ktdHJ1bmsKKzM2NTU5IDJiYzY2ZjFkZjdjYzdjODIzZmRhM2VlNjRiMmNjZTIwZWE3N2U4OWEgbGVnYWN5LXRydW5rCiszNjU2MCBjM2EwOTZiZmJkNmJlOTM5NTk5MGU3OTA4YzVmODg3YzM1MzdhODY3IGxlZ2FjeS10cnVuaworMzY1NjEgMjgyOTI3ZjdiZGUyNDJkYTdjYzM5NTlhMzNmZThmYjU2NGE4MDMzZSBsZWdhY3ktdHJ1bmsKKzM2NTYyIDhiZGQ3OTRhNDE5N2U4OTcxMTM2MTExYmExZWMxYjkzZmNhNTE0ZjkgbGVnYWN5LXRydW5rCiszNjU2MyBjMWJkMWM4ZTY0YjQ1NzQ4NTljOTFlM2IzN2Y5NzM4YmQ3NjdmN2Q4IGxlZ2FjeS10cnVuaworMzY1NjQgYjZmMTI1MmI2ODFjNTFjYzA4M2M0ZmY3MzY5ZDA0NzVhNzU2MDgyMCBsZWdhY3ktdHJ1bmsKKzM2NTY1IGY5NzA5OWY5ZmYxYzMxZjg0OWZhN2E1ZGY1OTEyNzM2MDgyOTQyMmMgbGVnYWN5LXRydW5rCiszNjU2NiAzMzc3YTcyMzczZmJmODVkNTY1OGM5NjZmYzA2MjA3NTE2MGYxNDA2IGxlZ2FjeS10cnVuaworMzY1NjcgNGUwN2VhY2IxYmRmZDhkNzU0YTM4NTEwODk4YmNkN2ZjODAzM2RhMSBsZWdhY3ktdHJ1bmsKKzM2NTY4IGQxNDM2YzI4ZGNhMzJlZTJlNjc3NzM1MjE5ZWVhNDE0NjZmYWFiYWIgbGVnYWN5LXRydW5rCiszNjU2OSBkYjFhMjdiNmQ3NzUwZWMyNzZiOTczYmQxZDljZDliNjgwNjQzNWM3IGxlZ2FjeS10cnVuaworMzY1NzAgYzE4MjRkNjhkMTBlYWM0M2M5ODNjMTlmODE3ZmJjMTE5MTZmNTQzMCBsZWdhY3ktdHJ1bmsKKzM2NTcxIGU0NTc1NTE5ZWMyNjIzYTBmZDU1OTM5NzdiOWZlMWMxMmRjMzYxNmIgbGVnYWN5LXRydW5rCiszNjU3MiAwNWNhMjIzMmVmY2JkYmQzOTY4OTljNmY4OTczNTkxOGRlYjZhZDVhIHJlbGVhc2UyMy1tYWludAorMzY1NzMgYjc5NTFlMWY1ZGRmMjliMGI0NDAzMDQzYTQzNTk4ZmY2MTYxMDEzMiBsZWdhY3ktdHJ1bmsKKzM2NTc0IDVkOWY3MmQwODQzZWVhOWQ4ZWNlM2NiZGJjZTdiNmUxMDBlNDNmYzMgbGVnYWN5LXRydW5rCiszNjU3NSA5NWViNmUxOGE1NDI3M2QzNWNmODk2OWNiM2FmYWQ1NDY0M2ViMjM3IGxlZ2FjeS10cnVuaworMzY1NzYgZGJkM2EwNGViMGM2NDg5NTg3MzZmNDA4OTZhMzcyNjEwMjVhMzM4MCBsZWdhY3ktdHJ1bmsKKzM2NTc3IGI1NDU5YmY0ODI2MjRiYTFlZjJkNTRiOGJjZmMyZjIzZjIzNmNiNWMgbGVnYWN5LXRydW5rCiszNjU3OCA5MzhkYzMyZGRiYzQxZjE0NThkMmQ2Yjc0NWMzNjYwZjYxY2YxNjQ1IGxlZ2FjeS10cnVuaworMzY1NzkgMjU3NTYzZGNiNDQyMzQ0ZmFhZjk4N2NjODIzYzRhYjllNGU4MDcyMiBsZWdhY3ktdHJ1bmsKKzM2NTgwIGRiMjZiM2RiZTgwMjdjYzliMDUwZWMzNGM2Y2M4YTVlMTc4YjUzZTEgbGVnYWN5LXRydW5rCiszNjU4MSAyNmNiMDU4OTA3ZjIxYjc4MTY0YTliMjI5NDBiZWQyYjc2YTU4ZDk4IGxlZ2FjeS10cnVuaworMzY1ODIgODU5ZWE4NjEyZWIwZGM1MjhiNGExNGQxN2YwYjIzZjBiM2RjMjkzNyBsZWdhY3ktdHJ1bmsKKzM2NTgzIGQxNzc3ZjUxOTIzYmI2MTgxNTQwYWMxZjFlNmI3MjI5YzVkNzlmMzUgbGVnYWN5LXRydW5rCiszNjU4NCBkY2M1YzJkNThmMzI1ZmZiYzgxMWJmMjA3YTIxN2EzNWM1ZjdhYThmIHJlbGVhc2UyMy1tYWludAorMzY1ODUgNjFiZTkwNGExZDRlMzU1M2Q3YTJkNzFkMjkwNWIyOTNiYzVmNzNiMiBsZWdhY3ktdHJ1bmsKKzM2NTg2IDc2YWQ4MTRiYzY3Yzk0ZWVmZmI5NzgwNmU5NTNmOGFhMTYwZDAxYTggbGVnYWN5LXRydW5rCiszNjU4NyA4YWQ1YTE2MjAwOTJlNGQwZWU2MTU0M2VmMzA1OGY3ZTQ3YzExNWEyIGxlZ2FjeS10cnVuaworMzY1ODggZWNiMGM5N2YxZTQyNjBkYWE3MjdhNzExZjNmZjRjZDI4ZTkxNjJlMCBsZWdhY3ktdHJ1bmsKKzM2NTg5IDUwZWNlM2Q0ZmYzNzIyODc4YjIwNmU1MjNhMTJkYTUzNzg5YTIxNzUgbGVnYWN5LXRydW5rCiszNjU5MCBkMTU1MTdmMmFiZThiY2YyOGE1OTA3NGJhNTM5Y2NiZjA1NWMyN2NiIGxlZ2FjeS10cnVuaworMzY1OTEgYTkxZTdhNDVmMTQyNDFmNjk2ZWY5MTUwNGEwZmZhZTVlOGU5ZWJiZSBsZWdhY3ktdHJ1bmsKKzM2NTkyIGZmYThhYjAwODFmMjEzYzQ5NTc0NzhmMWIwMDQwYjgyMTEzOTYwMjQgbGVnYWN5LXRydW5rCiszNjU5MyA5ODNhOTFiNTBmNmU3ODc1MDI1MjA1YjYwYWQ1NDI5NDM5MjMwMTMyIGxlZ2FjeS10cnVuaworMzY1OTQgYTNiMWQ2Yzk5ZTQ2MjFiZTRmN2Q0OTQ3NDEzYjJkZmNjYjU1ZTY4MiBsZWdhY3ktdHJ1bmsKKzM2NTk1IDYyZjg0M2ZjYjgyMzc5N2JjYzlhNTlhYTFjZjYzZjRmOGVkNzk3M2UgbGVnYWN5LXRydW5rCiszNjU5NiAyZWM0NTEyMzBiOGViY2IzMjY1NjVhYTkyNGU4ZmUyZTdlYzcwZWE5IGxlZ2FjeS10cnVuaworMzY1OTcgYjMwMWU1ZGVlOTM4YzIzOGEwMTBkODI0MmIxYmVmNmNkZGI1Mjc5MyBsZWdhY3ktdHJ1bmsKKzM2NTk4IDhhOTFjZDdkN2U4MjU0ZGQ1YzFkMjc1NTJhNzA0NDUwMjk0MDI3MWMgbGVnYWN5LXRydW5rCiszNjU5OSA4MjYwNjliNzI1ZGIyNjllYTFjZGM0NGY0YTY5YWE3MzNiMjU0YWY1IGxlZ2FjeS10cnVuaworMzY2MDAgNjg3NWNmMDg4MmUwMTIzY2I2NDYyYWI3YmUwZGNkMzE0NzA0ZGRmMiByZWxlYXNlMjMtbWFpbnQKKzM2NjAxIDEzZDIwMzIyNzg3ZDVhMzJhYjAxNzcxOGMzZWYzZjFiYjM4YTRiNTkgbGVnYWN5LXRydW5rCiszNjYwMiA3YWY2OTViYzU0ODA5MjY1YWEyOGM4MTRjNTMzNTUwY2IyYjhjNTI5IGxlZ2FjeS10cnVuaworMzY2MDMgMzE5MzhhNDYzZjI4N2U4ZjY3NDY0NDZkZWJiM2YyZDdjYWI4NmE4NSByZWxlYXNlMjMtbWFpbnQKKzM2NjA0IDUxN2UwMGFmMTNhMWE3ODMxMTUyZDE5MTUyMDZkNWY2ODA0MjBjYzIgcmVsZWFzZTIzLW1haW50CiszNjYwNSBjYWFlZjMwMmYxZTMzYzU5NDMzZjk4Zjg0MmQ2MjgwZmFiOTBkMWQ2IGxlZ2FjeS10cnVuaworMzY2MDYgNzkxN2ZkMmM0Mjk4MzgxZjJlMjQxMTM1MTU5NTQ3ZjU5MmQwMmZjOCBsZWdhY3ktdHJ1bmsKKzM2NjA3IGQ2ZTczZTUyODgwZTQ3Nzk3ZWNjYTdmZWQzM2M4YmQyMjViNDMyYTMgbGVnYWN5LXRydW5rCiszNjYwOCBlNmI4NDdiMDc1NTNmM2NlZTY2OGFjYTMzNmNmNmE0M2VhMzY5NjAxIGxlZ2FjeS10cnVuaworMzY2MDkgMDM0YjNiOTJjNWUwMzEzOTA0YzA2YTFlM2ZiNzcyNTJiZGJmNWRkYSByZWxlYXNlMjMtbWFpbnQKKzM2NjEwIDRmNGI3OTU2Mjg3Y2FiNjg5M2E2N2M0OWM0MTUwNTIyMDc2OWFiNmMgbGVnYWN5LXRydW5rCiszNjYxMSA4MDdmYmU4ZDM1ODQwMTNlNjUwNzMwMmJlZDlkODc4N2MzNDg4YzcxIHJlbGVhc2UyMy1tYWludAorMzY2MTIgMDA4OTI0MjBlMGRmNWUwODY1Y2VkYTc2MGYzYTliMzdjZTNiMzdmZiBsZWdhY3ktdHJ1bmsKKzM2NjEzIDZkZjkzMjJkNmFiODIzNzg5ZjhiMzFlYzdlNjI1NGRjZDM0N2NlMzUgbGVnYWN5LXRydW5rCiszNjYxNCBhOTQwYjZjMDdlNTc3NWViYTNiZWQ3NDE5ZjlhMDZhMTA2ZDE1Y2I3IGxlZ2FjeS10cnVuaworMzY2MTUgNTVmNzNjODJlMzA0YmI4OWRjOGU2NDkxZmUwZjU4NDdkMGQ3Njc0NiByZWxlYXNlMjMtbWFpbnQKKzM2NjE2IDczMDQ1MTQzYmU2M2U4Y2ZmYmM2ZmUwZGQ3YzlkMTUxNTU5ZDlmMTcgbGVnYWN5LXRydW5rCiszNjYxNyAxZTIxODdmNTA2MzE3MTU3YzM2MDkzZjM3MWRlZGZmNTI4MmM4ZTk3IGxlZ2FjeS10cnVuaworMzY2MTggMGY5YzM5YjNlNWYwMmY0ODU1NGY5MjdhZDRjNWFmMTA5ZGRlNzA0NyBsZWdhY3ktdHJ1bmsKKzM2NjE5IDQ2ZTA0MzFjOTcwMWNhYzBiYTMwZmY4ZGExOWRhZDQxNjg1ODIxODUgbGVnYWN5LXRydW5rCiszNjYyMCBmYTQ5YzFlMmQyYzEwNzBjZTk2NGMzNGI5OGY1ZjQyOTUyODIwZDgwIGxlZ2FjeS10cnVuaworMzY2MjEgZWE1NGZkYjg2NTMwZWNlNTRkNGFkOTQzMTEzYTZiM2I0YTk1MDU0NCBsZWdhY3ktdHJ1bmsKKzM2NjIyIDkyNjdhZWI3Mjk4NWQwNTI0YmViYWVkOWRjZDEyNTI2MmZjMjUzZGEgbGVnYWN5LXRydW5rCiszNjYyMyBlYWE4YTM3ZTFlODUwY2U2NjZmYjRiNDc1NWJjMzJmNmJlMmFiNTkxIGxlZ2FjeS10cnVuaworMzY2MjQgZmU0MTQ1YmEzOWJmZmJhNjE3ODIzN2FmNWI1ODQ2ZjI2ODkwNjQ4OSByZWxlYXNlMjMtbWFpbnQKKzM2NjI1IDE2ZGU0ZjkwZWY0NDY4Y2I2ZjllNzM5ZjNiNzc2MWQ1MmE0Yzk2MzEgbGVnYWN5LXRydW5rCiszNjYyNiBkMzBkNTFiMmVmZTAxMmE4ZmQ1YzExODZkODcxOTJjYTljZmY0NTEyIGxlZ2FjeS10cnVuaworMzY2MjcgZGFjMjgxMzZkNTliMGFjNTdiOTYxYTQ3NWYxMzhiMzgyMDI3MzdhYSBsZWdhY3ktdHJ1bmsKKzM2NjI4IGNkYWQ2MjUzMzA5NGYwY2ExYjc0NTdiNDc3ODRkZTQ3YzU1YTgyNTYgbGVnYWN5LXRydW5rCiszNjYyOSBiOGJjNTk1NzhhNDc1NjMwODc5YzVkOTA4MTAyMTVkMTVjMGVkN2VjIGxlZ2FjeS10cnVuaworMzY2MzAgM2UwNDIzMzg1MmQ0ZmFkZmRjMDA4MjQwMWIyODk1ZjliMTZkZmIxZiBsZWdhY3ktdHJ1bmsKKzM2NjMxIDRhNTFjZGNmODYxNTMzNjY4YjBlZmNiYjg5ZjYyMzdmODkzODAwOTMgbGVnYWN5LXRydW5rCiszNjYzMiBlZGJhZjYxMDIyN2I5ZjMxNjI0NWU5ZmQyZGM0ZjVjNTliNWM0NjdiIGxlZ2FjeS10cnVuaworMzY2MzMgYjI4NzlhNzJiMzQ2NjFlOTBiMjI3M2Y5MDMxNjk2OTZiZWFhZjk1NiBsZWdhY3ktdHJ1bmsKKzM2NjM0IDYyM2FlMTI5MzBlYTE2YWQ2OTQ4YzFkMzg1N2NkZGIwNDJlYzAyYjcgbGVnYWN5LXRydW5rCiszNjYzNSA2ZTc5ZGVhODUxODlhZmE5NDRmNzIyNTU5ZWY3MTBiZGE1YTI4MzgxIGxlZ2FjeS10cnVuaworMzY2MzYgZDVjOTdkNjlkZmM3YzE3MWM1ZjAyOThjNzA4MWM5ODMyMjgyZjg4OCBsZWdhY3ktdHJ1bmsKKzM2NjM3IDk1ODJmYTJlNWUwZGEyYTA2ZmUxODBlODAzNWE0Zjg5YWMzNjZhMzEgbGVnYWN5LXRydW5rCiszNjYzOCBmNjE2ZDY1MzU5OTMzMDYzYzk0Y2Q4NDk3ZDM1ZWExZGY1MzA4NDdiIHJlbGVhc2UyMy1tYWludAorMzY2MzkgZWU3Yjg0MTAxMTYwNGY0OTlmMTQ4MDYzMmExNDgwNDllNWYzNDI5MyBsZWdhY3ktdHJ1bmsKKzM2NjQwIGQyYWRiYTQ3ODFkNWIwNzk4YWU2ODQxZWJkMjI0ZmQyMmRmN2M4ZWQgcmVsZWFzZTIzLW1haW50CiszNjY0MSBiZjY4NmVmOTJjYjBiZDI0MmU2MjdiOGMzNGNkNDdjYTdmOTM2ZTdjIGxlZ2FjeS10cnVuaworMzY2NDIgYmY2YTIwNjkwODBjNmIxZjZjYjdlMjYzY2I3OTYzMTExODgzZmRiMiBsZWdhY3ktdHJ1bmsKKzM2NjQzIGQxY2NkMmY0NWRhMzQxNzVjODlmZWZkMWI2Yjg0NmM4NjA3ODFhY2EgcmVsZWFzZTIzLW1haW50CiszNjY0NCA4MGFjYWI5YzNjMTc2MTc3ZThjZDU1ZTgxMzcxOTc5NDgwYzEwMGUyIHJlbGVhc2UyMy1tYWludAorMzY2NDUgYjM1OGQyZjQ0YTc0MDJkYzQ3MDliNDQ5ZTMyOWUyZTBiMGU2MGVkOCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ2IDM4MzVkZmYyZWZkYjVhZDAyYjg5ZWE0ZGI4YzNiZGM0MDgzODJjZDkgbGVnYWN5LXRydW5rCiszNjY0NyBmYmIyZDM0Zjc1YTNiZjcwMTI1ZjIxZDc1M2UxNzliMDI2ZjAxYjA0IHJlbGVhc2UyMy1tYWludAorMzY2NDggNzE2MzNkMzdlOThlOTJjZjk2NTliYWE5MDE4YmZlYmE0Njg1YjhkMCByZWxlYXNlMjMtbWFpbnQKKzM2NjQ5IGM2YzU4YjYxZjZiNWE4ZjAzNGE2MDExZGM2ZTkwYTk2NTIyZDkyN2YgbGVnYWN5LXRydW5rCiszNjY1MCBkOTU2ODIwODk1MDUwYjQ5NTljYTI4ZGUyMjAwZjkwMjhmNWU1MjA0IGxlZ2FjeS10cnVuaworMzY2NTEgMzdhNzViMmI0YzI5NDA3MTc1OTY2ODliMTA5ZGU0MzM0YjIyNTU3NSBsZWdhY3ktdHJ1bmsKKzM2NjUyIDA3YTU3ZDg5YjFlMGRmZThjOWU3M2JmYzExYzc1YWYxOWY2NjlkMTYgbGVnYWN5LXRydW5rCiszNjY1MyBjYmQ0YWU3NDg5MGQzYzEwNGVkNmIyMzVjZmMxNzFhMDY2ODYwZWVkIGxlZ2FjeS10cnVuaworMzY2NTQgMDYwZGU1MDRlYmJlYWZjMDc2ODNiYmE4MDRhMTY5MWM5ZjhjMGQ3MSBsZWdhY3ktdHJ1bmsKKzM2NjU1IDQzNTNmZmM0MzdmMTlmZDg4MTQ1ZGRlZDgzNTgwOGNmNzkyMGMzNDEgbGVnYWN5LXRydW5rCiszNjY1NiBmYTRjNzA2M2E3MzZhNWM5ZTM0MjhlOTg4NzUwZjY4MWE0OWZmNTY4IGxlZ2FjeS10cnVuaworMzY2NTcgZGFjOWQwNjY0ZmMzOTMzNDUwODU3NTAyOThjOTQ4OWFhZWQ5YzY0ZCBsZWdhY3ktdHJ1bmsKKzM2NjU4IDcxODMwNTExMmY5ZmQ2MTFjMDkwNDA5MTY1ZGJkYTE2MWMzYjY4ZDggbGVnYWN5LXRydW5rCiszNjY1OSBiNThjZjZiNWZjOTE0MzgwZDUwZDJlYmM2MWUzNGE2M2NiMDJmZGM5IGxlZ2FjeS10cnVuaworMzY2NjAgMWRkM2NjOTI3ZDM3N2Y1ZTkzOWYzZDU1ZThmNzQyMTRhM2MzZmMzMSBsZWdhY3ktdHJ1bmsKKzM2NjYxIDcwZThmNjM0YTU4OTAyOWJmOGRlNjUxYjg5YTBhZmYyN2RkZDcyZmEgbGVnYWN5LXRydW5rCiszNjY2MiAyNGRkMWQwN2FmZGJjMDY4OWYyNDRiMjljMTU4YmE5OWZjZmZiNTJmIGxlZ2FjeS10cnVuaworMzY2NjMgN2I0NGMyNzgyNzkzZTljNjM0OTYzZTQ0YmYyMTA3ZWE3YzM1ZDE2OCBsZWdhY3ktdHJ1bmsKKzM2NjY0IDIxMzE4ZDc2OTVmOWNkM2Y1NjJjNzdmOTgzNGVjNjA2ZTE4M2RjOGYgbGVnYWN5LXRydW5rCiszNjY2NSAwODU2ZDk4ZTJhNjgzZGE2YjNmNzVmMzM2ODg3MWJmMjE4NDI4Y2FiIGxlZ2FjeS10cnVuaworMzY2NjYgZDViNzZhMTY3MzIzYWExNTMwYjlmOTY0YzdkMjg5Mjk5OTVmNjNkZiBsZWdhY3ktdHJ1bmsKKzM2NjY3IGRhYjNmMDg2NjhkZjIzYWUzNTZlZWMwOTMwMTg5NDIxZDIxZGQyMjUgbGVnYWN5LXRydW5rCiszNjY2OCBhNGYxOGM4OTg2NWZiOGQwZDJhYjJiODJlZTlmMTg3YTY2ZmExODEyIGxlZ2FjeS10cnVuaworMzY2NjkgZGIyMTA4MWY1YmMxYjE2MTg4MTIxYmRhOWEwZTBmMzg0ODc0ZDljNiBsZWdhY3ktdHJ1bmsKKzM2NjcwIDg2NTUxMzExMmY3YTBlNzkxOGZjMzMwMTVkMTNmMTc1OTI1OWUyMmUgcmVsZWFzZTIzLW1haW50CiszNjY3MSA1ZTQ4MGE1YzY0N2RhNzM0NDliZjNlOTgyZmEyZjVlMjBmMmFiYTc2IGxlZ2FjeS10cnVuaworMzY2NzIgZTNhMzVmYmNlOGVjMjIxNzZkMzg5MzI4NTYzZTMwNDJkMTFlZmRkYSBsZWdhY3ktdHJ1bmsKKzM2NjczIGU3Y2M3NDE1MmM1NTI5N2MzY2E5ZjhkNmRjZmYxOThlMjA0ZTg0OWYgcmVsZWFzZTIzLW1haW50CiszNjY3NCAwOWU2MzNjNTI3MzA3OWFkOWM0NWFjNTVjMWQyOGNlOGQ1NmExNGUyIGxlZ2FjeS10cnVuaworMzY2NzUgMDUyYTQzYWEzNWVjZjcyZWQyMjg4NTFjYWQyMGJjNWQ3YWYxMzE0MyBsZWdhY3ktdHJ1bmsKKzM2Njc2IDBmOTRmNDg4NmJmNTVhOGE1NTBmMWIwNjk1OGYwMWEwNWI1OGI2NjIgbGVnYWN5LXRydW5rCiszNjY3NyAxNjgyMjAxZjA1YjJhODQ1MGU2NWJiNjkzYjMzZTYzNWRkYzBmZjVkIGxlZ2FjeS10cnVuaworMzY2NzggZGNiMjQxYzg5ZjQyOTcyYzcxMjBhZGIwNTU3NzJhMTU4NjZiMzFmNCBsZWdhY3ktdHJ1bmsKKzM2Njc5IDk2ZDk5MTQ3N2E4MjljYTc3ZDEyZDljODM1Y2UwMjkwMmZhZDdkNWYgbGVnYWN5LXRydW5rCiszNjY4MCAwNmE2M2MzNWRmOWUzYzY1Y2RiMmFlODg2NjA1YWIzNThmMGRmNDVkIGxlZ2FjeS10cnVuaworMzY2ODEgNzI0ZmIyNmVhMDVmMjRjOWEyM2M4N2FjZDNhYzRlYTg2MjYyN2I1OCBsZWdhY3ktdHJ1bmsKKzM2NjgyIGZhMDUyNmMzMGRhODA1ZjgxMGY3ZTg3MDgzNTVlN2VkYmE4YjJkNDcgbGVnYWN5LXRydW5rCiszNjY4MyA0NWYzMjIyYjg0ZWUwZWUzMWYyN2IyYmNkMjYxNjg1YTMxYmM5NTg4IGxlZ2FjeS10cnVuaworMzY2ODQgNDhlYWUyMGQ3MGM1OGI4NmM0ZTNmMDczYzBlZWY5ZDAxZGNiMTgxMSBsZWdhY3ktdHJ1bmsKKzM2Njg1IGZjMzY4N2E2MjdiNDM0M2MwOWU5NTBkNjE5NTM5MmFiYTUzNTdkZGYgbGVnYWN5LXRydW5rCiszNjY4NiA5YTAwYjY1YWVjZGNjODQzN2UyMzA3MDViYmVlNDUwMTkwODAwYmJmIGxlZ2FjeS10cnVuaworMzY2ODcgNmVhMzJiMGU5NTA3ZmEyNmYxZmQ1YzJiOGIyMTU4MDQzYTkzYTliZSBsZWdhY3ktdHJ1bmsKKzM2Njg4IDYwYTcwOGJmMzUxYWUxMWU5NzkyY2IxMTI5NTYwM2Q0NDU5Mzc2N2UgcmVsZWFzZTIzLW1haW50CiszNjY4OSBjNTcwMTBkYjEyM2VlYWMxODdjYjRiZTdjMGUzMGFhNDk5ZTM3MzVhIGxlZ2FjeS10cnVuaworMzY2OTAgYTUzYjVjZWZhNjBkN2QwNTI0Zjg0MDNhMmYxZTYyOWEzYjBiMzNkZCBsZWdhY3ktdHJ1bmsKKzM2NjkxIDhkMjU4MzVmODhhZTQ0NTBlOWQzMjliZDhkMThiMWYwOWYzNjVhYjIgbGVnYWN5LXRydW5rCiszNjY5MiBiZDQ2ZTZmODA2MjNiZjlkMjI5Njg0NTVkYzJkMDk1NDQzOTM1ZTBiIGxlZ2FjeS10cnVuaworMzY2OTMgY2E2ZWZjNTRiMTlmZjcxOWNmMzY4MjAxNGM4ZjdiZGVhMTkyZTM5NiBsZWdhY3ktdHJ1bmsKKzM2Njk0IDE5NTY1NTI5OWVkMzY0ODc0YWQ2MTU2M2QyZjQxY2FkODgzMGMxNmEgbGVnYWN5LXRydW5rCiszNjY5NSA2YmU4OTQwMTRhOGMzYmZkNmY2MTdkOTE2ZTM1NGM2OGRiNGU3NzNmIGxlZ2FjeS10cnVuaworMzY2OTYgZDAxMzM5M2M3ZDk4MmY0YTZjMjRiNjMxMzE0YmMwNDc3OTkwOWNmNSBsZWdhY3ktdHJ1bmsKKzM2Njk3IGVmMDhmNDhiNjNhMWNlNTRlMWIzZjQ3M2QxZTJlNjY2MjA4ZWRiMzYgbGVnYWN5LXRydW5rCiszNjY5OCA2MmM1M2I4ZTRhZWIzMWI2ZjA0MTcxOTY1ZjMxMmUxZWY2ZGVmZGRmIGxlZ2FjeS10cnVuaworMzY2OTkgYjM5MGNkOTFjNzZiMTFmNTg2MmY1NGUzZWMwYTExZGJjNDRmODU4YiBsZWdhY3ktdHJ1bmsKKzM2NzAwIDAxOGM0MzA0NWI1M2U2MzhlYzg5Yzc5OTk1NTVjMDIyMDJiZjc0ODkgbGVnYWN5LXRydW5rCiszNjcwMSAyOTI5ZmM1NGI0OWE1ZDQ3Yjg1YmI0ZmFiNWQ4NDhjZDcyNzJhMmFkIGxlZ2FjeS10cnVuaworMzY3MDIgY2ExYWViOGFiMzgwMmNiMjdjYThjYTJkOThkMmQ0N2YzMzJhNDI5NCBsZWdhY3ktdHJ1bmsKKzM2NzAzIGQzZDYwOWQ2NTdmZDI2OWZkYzc3OTUyZjE2N2E4MmRjZDQwZmFhNWYgbGVnYWN5LXRydW5rCiszNjcwNCA1MTBlOWUyYjA4MTc0NjExMGU5NjJkMGE5NGM2NDdjNDc4NzM2YzQwIGxlZ2FjeS10cnVuaworMzY3MDUgMjZiMzA2ODk0YjllYjQ2MTBjOWY0ODk0MWE4Mzk5Yjc4MGZhNDY1NSBsZWdhY3ktdHJ1bmsKKzM2NzA2IDMzMWU2MGQ4Y2U2ZGExOWIxNjg4NDk0MTg3NzZmZWEwOTQwNzg3ZWMgbGVnYWN5LXRydW5rCiszNjcwNyBlMjhiODczM2E2NmQ3ZGVhZWE1OGM1MGE3NjcwMzE4NDVjYmFlYTg2IGxlZ2FjeS10cnVuaworMzY3MDggODhhMWQ4NmQ0NDJlODExNGI5Nzc0NzEzZWJmNGRiOGRiY2E5MDNhOCBsZWdhY3ktdHJ1bmsKKzM2NzA5IDJhYTdhZWY0ZTQwMzNjMzQwYzlmOTg3ZTAxMjJlYjNjNTM2OTgzODEgbGVnYWN5LXRydW5rCiszNjcxMCBiMzIzYmRiYWM3ZTQ3NzJiOGFjNzZmNjI3MzVmYTU3YjViZDg0ZTMyIGxlZ2FjeS10cnVuaworMzY3MTEgMWJlNDAzM2Y4NDk4MDg5MWQ0ZWIxZTdmYzFjNjQyMzE3MmE4MjY4MSBsZWdhY3ktdHJ1bmsKKzM2NzEyIGM3ZTAzY2Y4MzMzZTVhM2E4Y2NmZTlhMGVlODU5NDY3NjMzMDdlMDEgbGVnYWN5LXRydW5rCiszNjcxMyAyMDk1Y2I1OTgxODgzNGViOWViNDYwMzM3M2JiY2MwYzcxMGFmY2FiIGxlZ2FjeS10cnVuaworMzY3MTQgYjhjMmFhMmJlMTlhMzE0NDFiMjU1NTJmOGVkMmU1MTlmMDkxNjlhNCBsZWdhY3ktdHJ1bmsKKzM2NzE1IGE5YjI1YzIzMDczMjcyOWYyY2ZiYjkzMmJkOTkxNWMzZmE1NGQ4ODQgbGVnYWN5LXRydW5rCiszNjcxNiA2ODVhOTQ4YjNiYzljYjVkNTk0ZDZjZWIyODgyODhjM2VkNTRkOGE0IGxlZ2FjeS10cnVuaworMzY3MTcgNTFkN2ExMjI0NGFmMzEzODFmZWQ3NWQ5NDE0MjgxZjA5MDU5Y2NlMyBsZWdhY3ktdHJ1bmsKKzM2NzE4IGQwNDlhMWZlMjY3NjNmYWQ3MDZhNDQzMTIzZWY3MTQxNjFmZmJlMDAgbGVnYWN5LXRydW5rCiszNjcxOSA2M2FkNmY2OTI1YzU2OGQ0ZmFhZjkzYTllOWQ5YjZiY2YyOTQyNWQzIGxlZ2FjeS10cnVuaworMzY3MjAgYTc1ODE1ZTMxNTQ1MTI2NGFiY2RkOWIyYzM1YzFlNWZhYjg0MWNkZiBsZWdhY3ktdHJ1bmsKKzM2NzIxIDBkYzhmZmFhYzAzNjQ1M2U2OWZlM2IwNWNlZDhhODc1YTFhNzNkZjcgbGVnYWN5LXRydW5rCiszNjcyMiBkYWVjMmQzMTFkZWYzYTAzMzMwMDc4ZGEyYmU5ZTE4YWFiMDBlODE4IGxlZ2FjeS10cnVuaworMzY3MjMgODRlZmEwMDU0MTlhYWUyN2NlODEyNmNiMDU5NDBkZWQzNzRiMjIwMCBsZWdhY3ktdHJ1bmsKKzM2NzI0IGI4ZTEwYWNiNGVmYjYyMjI2MGVkZTc4OWQ4OGQ1MWVjMDkyMzIyNTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjcyNSBhYzczZjY2NjJlMTE3YzJhNDRmZGZmN2Y3Njg5ZjJlNmVmNzk3YmY0IGxlZ2FjeS10cnVuaworMzY3MjYgMzBkODZlMzU2YmYyNGY3MTRiMTBmZGNlM2U2OTUzOTE3YjMxODQyOSBsZWdhY3ktdHJ1bmsKKzM2NzI3IDc5YzRlODJlZTk5N2M4ZjQxMDBkOTNmYjg1ZTQwOTdiMDQ1YTA4MmEgcmVsZWFzZTIzLW1haW50CiszNjcyOCAzM2I4Y2U2NjIwMmVjOTE5N2JjYmZmMGFjZjJkYWUxNzc2NDQ3MTBkIGxlZ2FjeS10cnVuaworMzY3MjkgOTE0NmUyZWEzYmQ1MGNkNTYxZDIyY2UzNTFmOGJjNDhmMGM2NmZhMyBsZWdhY3ktdHJ1bmsKKzM2NzMwIGY0MTJmYTJiM2ZkZWY3YzkzZGRkM2FmNTc4MzJlYTQ1M2ZkZDlmNjUgbGVnYWN5LXRydW5rCiszNjczMSBkNGRkN2I4MmNjNzViYjZiNWI5YTU1OGQzY2E4MzQ2NGM2OTg4ZTBlIGxlZ2FjeS10cnVuaworMzY3MzIgNjVmMTFhOGQ3YzhiMzllNzQxMmUyMmU4MDIwOGRjMGIxMDA4YWNjZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzMzIGUyMjU3NGJlODc2NDlhNDdmNWFlYTY0YWRiZGE2ZTYxN2NmZTUwODcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNCA0Y2NlMDAwNDdmOTc0OTgwNmYzMzVlZGQyMDUzZWZlNGRjY2YyNGZiIGxlZ2FjeS10cnVuaworMzY3MzUgZDY3NGQ3OGQ4ZGE2NjQyZmUxODNkY2I3Nzg3MjIyZjZjZWQ1NGEyMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzM2IDZkMTZiMDdhZGRjM2E2ZDNmNDIwMWY4ZTIxNDVlOWM2OWY1ZTA2NTUgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjczNyA1NDY3MTczNmEyOWU0ZTc0ZDBjZDQwOGFkNDY5MWRhYWY5NzBjOGJjIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3MzggZjUzYjkwMWM4YWZlOGJmMjE1ZGU0Nzc3NjFmMmJlOTY0ZWNjMmNhNiBsZWdhY3ktdHJ1bmsKKzM2NzM5IDY1MzE5NjA3YmVkOGExODZhYWQyNjk3YTE2ZjJhYWIxYTQ0ZGRmNDUgbGVnYWN5LXRydW5rCiszNjc0MCA2NmM1NTZmMDkxNjM3ZDE5ZWFjYzFmNzIyZTU5MzVhM2JmYTk2NzRlIGxlZ2FjeS10cnVuaworMzY3NDEgMTUzMzcxOWM2MTM4MzllNDJhN2U5NWQ0ODk1Mzc2OTQ5ZGQyNGE5MCBsZWdhY3ktdHJ1bmsKKzM2NzQyIDMyOWQ0OTA2YzMzZmM3ZDM4ODIzOTJmNzE5MGM1NjY2NzUyNmFlOGMgbGVnYWN5LXRydW5rCiszNjc0MyA4OTE1OWExMjY4Y2NkZTVjMWViNmE0ZTI5OWVmZjZiNmJjZGZjNDJmIGxlZ2FjeS10cnVuaworMzY3NDQgY2FjNWM4ZjNlOTkwZjJlNzk2ZmZjNjdlYmVkYTg5ZDUyMGZmZTFiOCByZWxlYXNlMjMtbWFpbnQKKzM2NzQ1IGE5ODU2ZTczZTMyZDQyZDE3ZDQ1ZjY5OTlmZWNmNjBjODlhOWE4NzQgbGVnYWN5LXRydW5rCiszNjc0NiBmZjc3NzI3NTU1YWU1MTA0MjllMDViNmNhNGI5YWQwODljMjRiNjdjIGxlZ2FjeS10cnVuaworMzY3NDcgNDFmYWNjM2NjZGQzMzljOTRjZTJiZTZiOGYxODc1NGJiYTNiNzdlYSBsZWdhY3ktdHJ1bmsKKzM2NzQ4IDdlNzQ1N2E2OWI0ZDgxZGRlZWI4ZDA0MDMyODk4MzRlYWZiNWNiNDUgbGVnYWN5LXRydW5rCiszNjc0OSAyNWI2NjlmNGI1NmNmNjJjM2IwYzNmNjQwYmM2NzNmZGZlMGI0NmQ2IGxlZ2FjeS10cnVuaworMzY3NTAgYmRhOTgzMDRkZWI1ZDk0Zjg1MjUwOWI5ZGQ2OTQ1YzZjOGViYmRiZSBsZWdhY3ktdHJ1bmsKKzM2NzUxIDM4MjRmYTI5YmU0OWNjMWMxYjc4ZGMzMzY1MzczMjkyMWM1NjQ5MDcgbGVnYWN5LXRydW5rCiszNjc1MiA2OTM3MDI1MzExNWJhNzdiZDdlNjQ5MDQ2N2I4YTJlYzQ5ZGY4MmE2IGxlZ2FjeS10cnVuaworMzY3NTMgZjFiYmYxNDc4MTBiMjk0NjM1YTZmMGEzY2U5Y2IwM2ZhNDI0NTMyZCBsZWdhY3ktdHJ1bmsKKzM2NzU0IDkzNjcxMmIzMWJlZGM4YTMyNTUyNTM3OWI0ZDhlYjNhOTM4ZTQ3MWMgbGVnYWN5LXRydW5rCiszNjc1NSA2NjNhZDM0OTUzNGIwMDg0ZDdiZGRjMDhlOWFiYmVmMzM5OTM4NjEyIGxlZ2FjeS10cnVuaworMzY3NTYgNWY1OGZjZDdhY2NmNjIyMTRmMzE0ZGJjZDg1ZTkyMTkxNDEyYmI5NiBsZWdhY3ktdHJ1bmsKKzM2NzU3IGMzMWQ4ZjM4ZmQ3ZjZmMWZkNGFkNGJmMDBkNDRjNjdiODQxMjI4ZTYgcmVsZWFzZTIzLW1haW50CiszNjc1OCBjZTQ4OGFhMDRmMjRlYTM2OGRkZjljMTFhNDAwNmY5ZTMzOGY0MDhmIGxlZ2FjeS10cnVuaworMzY3NTkgOGFjNGZhYTI4MmUwYjljZjI5MTQ0ZjY3N2IyNWFjN2FkMTc1NDIxOCBsZWdhY3ktdHJ1bmsKKzM2NzYwIDVjMjE0OWYzNmMzZWFiNmNhMDU1MWMzZTUxMDkxMGMwMGI2ZDEyYWYgbGVnYWN5LXRydW5rCiszNjc2MSBlYzcxYWUzYmMyZGRhZjVlZTg4M2NjMTk3ZTAyODAzMTJkMDEwY2U1IHJlbGVhc2UyMy1tYWludAorMzY3NjIgYmQzZGQ2YjNmZjk3MjY4ODI4NmZmNTE1ZGQwMzdiMGI4NmQ1OGMxNSBsZWdhY3ktdHJ1bmsKKzM2NzYzIDQ1YTE3MGM0Y2E1NmNlZDI2ZmZjZmE0Nzk3ZDVjNGE1MWQyZDQ0YzUgbGVnYWN5LXRydW5rCiszNjc2NCA5MWZhODBhNjc4MTFiY2RlNTBlYjkwMDZjMWQwNTk5OGIwNGI5MDNlIGxlZ2FjeS10cnVuaworMzY3NjUgMmMyZjVjZmVmYTYwNTY4M2VmN2QxNDZhYWJhODIyZDQ4MmFiYTZlMiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2NzY2IGRmZGUwODUyMjhlZWE1MGI0NmZhZDY1N2Q1ZWI2OGNkZTdmZTQ4MTkgbGVnYWN5LXRydW5rCiszNjc2NyBmMDcxYTU1M2FhZTU4YTQ1M2Y2NjM5NDY5NmQ2MzdmNTBmOGM5M2JjIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NjggNDczY2IwZWY4MmQyNDM0NmZjNTExYzg0OTAxZTIyNmFhZGNkMWZkMCBsZWdhY3ktdHJ1bmsKKzM2NzY5IDI2NjNiNGY1MzViN2NjNThhNWEzY2RiNDE4YWE3MWM1NWJlNTA2MWIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3MCA2NTExODhhNjYzOGRjM2ZjNDdlMWIxMjZmNzBkYjQ5ZTEwNmJlNWRlIGxlZ2FjeS10cnVuaworMzY3NzEgOGNlMzQ0ZjZjOTU0ZWVjOGNmMTEwOGU5ZDVjZGNhMjE1OTY5MTFiMyBsZWdhY3ktdHJ1bmsKKzM2NzcyIDVhYTg1MDk3Y2IyY2RjYzk2YTg0ZjRkNGFlNDFkNDg3ZTEwNjFkNDUgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc3MyA1ODJlYjUxYjg0OTIxNDUwNmIwMWZjZDMwYzgxOTU0YWRjZDYyYzE3IGxlZ2FjeS10cnVuaworMzY3NzQgMjJkZWQzMDk2NDhiY2JhMzM5MzI1NDdjOTkyMGIyNzdlOWZjZDNiZCBsZWdhY3ktdHJ1bmsKKzM2Nzc1IDY2ZGMyMTFiZjUwNzIxYWQwMWY3MTNlZmVkYzA1ODliOGFlOGE3NjIgbGVnYWN5LXRydW5rCiszNjc3NiA4NGI0NzU3OTk5MTgyZTBmY2M5YTUxMWUyNDZiZmZjMzM3YTJiY2Q3IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3NzcgNjNkZjRjYjQ5MmExNmM2YWZhOWZkNTczZDkzM2ZiYjBkMjA4MTk2YiBsZWdhY3ktdHJ1bmsKKzM2Nzc4IDlmYjUxMzhmNThkZDgxYjkxOGQyNmUzMzRjZjNmMmFhNDUzM2FmNzIgbGVnYWN5LXRydW5rCiszNjc3OSBmNjNkNDVmZDNmY2U3NDQ4OTQ5MmZmMjE4MGY2ODUyMGMwNmZmNTVmIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODAgZTAyNzkyMTEyMjg4OWFlOGRiZmI4ZjhjODY2YTMwZGQ2ZWVmYTk4YiByZWxlYXNlMjMtbWFpbnQKKzM2NzgxIDlmOGE3YmEyMTA1NWViZTBkYTBkNjAzMzY5OGIzNTA3NTBmNTAzZTQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4MiA4YjM5MGRmN2FmODczNzMyZDljZDY1ZjhmYmEwNmY1YmQwOTkzZGNlIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODMgZTRmZWVkYjIwNWYyZDZiOGZkMDA2NGY2MzA4MTA3ZTI5YmZmZjI1NiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg0IDMxNDQyMmEyOGUzZmI4NThiNWY1ZTk2MzhjY2UzMDFkNTE3MmJlNzkgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4NSBkNzQxY2IzNzdmODI5NWZmMTA2MzBlZGY4MTI0ZDA5ZjA0NWQ4YTgwIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY3ODYgZmNkNjkwYzhiMmNhNmQ4NDU1ZTMyOTEzNzhjNmM3N2M1NGNlNmJmZiB0aW0tZG9jdGVzdC1icmFuY2gKKzM2Nzg3IGNhZmQ3ZTRlNzdhZDA3ODJiM2UwMGE4NjQ2ODA4ZWY1YjAzMTlkOTcgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjc4OCBmYmI1NDI4ZWJmNDEwOWU2YWE3OGMyNTA1N2ViMmRjMWYwYTRhYWY0IGxlZ2FjeS10cnVuaworMzY3ODkgZGIzOGMxZTgzOTY1MmQxZWY1OWE1NjFkZjA5NDVlZTEwMzc3ZTg0NCBsZWdhY3ktdHJ1bmsKKzM2NzkwIGI2MzljYjQ1YjE3MzEzZGVmMjBjNzE3MTg1Yzg5Mjg5OTlhYTYxNTMgbGVnYWN5LXRydW5rCiszNjc5MSA5NTNjZTVhZjEwYTMxYjI5MzVkMzM5YTk5NDQ0N2Y4MjAwMzFlOTA0IGxlZ2FjeS10cnVuaworMzY3OTIgOWViZDQwNTY4M2NkODU3MjQxNWY5MmI5OWFiNzVlZWNmMTFjYzIzOSBsZWdhY3ktdHJ1bmsKKzM2NzkzIGFkZmU3ZDM5YTA0OWQ2YTNjOTNiNDJmZjlmYjkyNjk1NzgyZGFlZTcgbGVnYWN5LXRydW5rCiszNjc5NCAwMjRmZjBhYjQ1ODgwMzM1NWEzZDM2NzZjMDc1NDE5YWYzZWExMDQzIGxlZ2FjeS10cnVuaworMzY3OTUgYjU2NDgxYTkwNTE5ZTVhMjBhMThkNTMzYWEzZmEyNTMxNGVkNjI0YiBsZWdhY3ktdHJ1bmsKKzM2Nzk2IDk3MWU1MTQxMzQ0N2MyZThiZDNjNmFjNWIxNjcwZTJmNjRhZGRkZTEgbGVnYWN5LXRydW5rCiszNjc5NyAyYmNiZjNmYjcwMjFlZmI2NDMwNWRhNzRjYWFiY2ZmNzBiNjk0NjM2IGxlZ2FjeS10cnVuaworMzY3OTggZTJmZWEyMmUwYzUxM2Q2MWJjOThhNTY5MTMxOWM0MDIzZGEzZDNhMyBsZWdhY3ktdHJ1bmsKKzM2Nzk5IDA3MWQzMzgxNzUzYjYwZDIyNzY2ZDE3ZmI4NzI4YTU0OTk2MDJmZDYgbGVnYWN5LXRydW5rCiszNjgwMCBhOWQ1OTE5N2IxNjMxZGQ0YTNiZWEwZWUwNjhhYWUwYWI5NzhjYmM4IGxlZ2FjeS10cnVuaworMzY4MDEgMTU2YWM2ZGU5NjI1YzQ3ZGYxNWJiMTEyNGQyMGQ0NGU1ZWUzNjY2NyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODAyIDBiZjBmNGJlYTE0NDE2ODliODFhMzQxM2M0YzY4YTA5MDEyM2UwZTIgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgwNCBlOWM2NDE0ZGJkYjYxNTM3MzUzOTk4ZTg2NzY3MDU3ZmUxNTRkN2ZkIGxlZ2FjeS10cnVuaworMzY4MDUgMmJjMzMyNjE2Y2Q2ZjlmZTFhYzc0MmYyNTIxYTk4MTA1YTY4N2RjNyBsZWdhY3ktdHJ1bmsKKzM2ODA2IDdhYWE4NTJmYTg1NmZhMzM4NDUyNmM1MzQzZDVlMGZmZDY2YjkwOTAgbGVnYWN5LXRydW5rCiszNjgwNyA1ZThlMzA5YzBiYjA2OTczZDk3YmJhNjE4ZTYwNzA4MWNjNjU0YjBlIGxlZ2FjeS10cnVuaworMzY4MDggMzQxYjdhZGJhOTQ0N2ExOGJjZTM4NTFkZjQzZTJmZDA2ZjBjYTVkYSBsZWdhY3ktdHJ1bmsKKzM2ODA5IDlmNjYyNTlhZWNlMzE2NWNjMmM3MGUwYTMzNTQ0MjNiYzQwZGJlMGUgbGVnYWN5LXRydW5rCiszNjgxMCA5YWM2NDM1NDQ2MjliMDQ5NzdiN2E5YzA4YTg3YmFlOTM3ZWJlN2RmIGxlZ2FjeS10cnVuaworMzY4MTEgZWEzMzhiYWFiODU5OWQ3MTU3ZjAyZjQwZGJmYjBjZDhhZmZiYzU0MSBsZWdhY3ktdHJ1bmsKKzM2ODEyIDk4MjFlMzg4YjU5ZDkzZjM5NmI3Mzc3ZmQ3ZWVmNThlOWY5NDQ4ZWUgbGVnYWN5LXRydW5rCiszNjgxMyBmZmFhMTc1ZDBhYTMzN2Y4ODQyODQ3NDcxYWNiZGE1OWVjZWIyNGE4IGxlZ2FjeS10cnVuaworMzY4MTMgMDU1ZmM2OTU1ZjNjNjUyMmJmZWI3ZWQ0YzY3MWM5N2Q1YmFhYWFjMiBsZWdhY3ktdHJ1bmsKKzM2ODE1IGU2ZDAwOTI3NmM1NDc5NjFhNDMwYjk4YmJhMTM0YmJkNDg4YTE5NjggbGVnYWN5LXRydW5rCiszNjgxNiAzZTkwOWM1NGUzMGM5MWRkMjc3YmU3NWRlMTllOTdjNGYzZTc5Njc2IGxlZ2FjeS10cnVuaworMzY4MTcgY2ViMWMzZjFhYzhhYmI0NjFjNTBlZGQ5OTgxNzE1NGNmZWU1ZjAwOCBsZWdhY3ktdHJ1bmsKKzM2ODE4IDVmNGJmYmUyNmE0ZGM0NjRlZmQ2ZjEzMDFmYmFmYTBmZDY1NDZkMzEgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgxOSA4NDQxMGEwZDZlYTk0MTM0MDFlYTU5NmI0YzNlZmZmZWVlZTVjMTNiIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjAgZWE4NzU1M2UyNTYwOWY4YWZiMDY4MzFhZjYwMzQ2MDA2NGFmZjEyMyB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODIxIGJkNDEzNjY3YWMxNmI2N2RkMmQzMzk1NTQ3N2U5OGZmY2MzMjYwOTQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyMiAyZTY3YzI3MDg2NzA4YjExYmE4OGY2MjEzNzVkY2M4NDA0NzQ4YzgyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjMgYjY4OTBlYTVmZGUwZjZlMDUyOWNmYTcyZDc2MjhiMGE5YjU4Y2M1MSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI0IDc5NjAwNjU4YmU2ODkyYTkwNTczY2ViNzE3Yjk2ZDdmMWZhOTZjYTYgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgyNSBiZTU4NGNkYTU0N2Q2NDJjODliZDljZjVhNTc1MWM0ZThjMjM2YzJmIGxlZ2FjeS10cnVuaworMzY4MjYgZjdkNTBlOTFiZWYzOWVkZDRhMmU2ZTJjNWU0Nzk2NThhOTMzZTlmMSB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODI3IDE5NzUxN2Q4MDk5ZTQ3ZTAwMDU0M2I1NDlhZWRkZGViNTcwNTVjZmMgbGVnYWN5LXRydW5rCiszNjgyOCA0YzllZmIzYTZiYjNmNjBjNDIwYTg1NTM3YzkzYTk2NTNjOTJkOGQ0IHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MjkgYzI2YTRmZDY5NzQ0YWRjNGNjZWZlYzcxZGQxOTdhZWUzMGI1ZDgxMCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODMwIGZiNmZmZDI5MGNmYjM5ZDIxYWZmMWQ3MjA4MmRmNmNjM2ZmY2UxZTkgbGVnYWN5LXRydW5rCiszNjgzMSBhYWNkZDBlY2ExZWI1NjJlMzY1ZGE1MjVmYWJmMDRjZTJhZjhiMTAyIHRpbS1kb2N0ZXN0LWJyYW5jaAorMzY4MzIgOWIxODgxNTgxODFmN2YxMzY3NTQ1ZGQyODU2YWY5NWM1MmExMzNiNyBsZWdhY3ktdHJ1bmsKKzM2ODMzIDRmMDE4OTRhYjQ1OGRjNzdhYmUxNjkzNTQ5NzhmNDFiYjI0MjBlNjIgbGVnYWN5LXRydW5rCiszNjgzNCA0MGMzYTUxY2I3MWNkMzU0NzYxMjE4ZmE1MWQxYzIwZWJjZDFhY2QyIGxlZ2FjeS10cnVuaworMzY4MzUgMzYwMDQwZDNkNGZhZDgyMTdjMTE2NzhmN2ZmODU2ZWExZDljZWE2ZCB0aW0tZG9jdGVzdC1icmFuY2gKKzM2ODM2IDVjYWIzMzYxODI5MzAwNGI1YzU1MmQ5ZWQwNjg3OWNlOGIxNzkyZjQgdGltLWRvY3Rlc3QtYnJhbmNoCiszNjgzOCA2NzhkNDBmY2UwYjE0YTk5ZTc2MzBmNTExYjhjZTA3Y2EzMDkxN2FlIHJlbGVhc2UyMy1tYWludAorMzY4MzkgNWNjNTVkMzZiYjFkY2Y5YjA4NWQzYzVhOWViMWIwNWI3MDZiMmI3ZiBsZWdhY3ktdHJ1bmsKKzM2ODQwIGU4OWVmMGJmYTFmZjhjZDRiMTBhNDJlODE0MmExYTI3NzBlYmM5ZTcgbGVnYWN5LXRydW5rCiszNjg0MSA1MGMxMjJiYzdhYWNhMzg4MmM3NDdmOGU1NWQ3Mjk4ZWE2MDY4NjY0IGxlZ2FjeS10cnVuaworMzY4NDIgYWU4NzcyZDE1YTVmYTcxNjBhMzY2MDI5ZTdjMGExOTRlNWY1ZDI3ZiBsZWdhY3ktdHJ1bmsKKzM2ODQzIDcyNmRiNTg1NDc0NjE0ZjExNDAwMTRlNDhiNjJmNmNkMzhmODdjZGYgbGVnYWN5LXRydW5rCiszNjg0NCA0YjNmOGRkOTI2OWFlMDcxOTJhOWI3NDZiNTRhMmZiNDIyMjQxNjU3IGxlZ2FjeS10cnVuaworMzY4NDUgZjUxOTg5NmNmNWRjYmRlMzlkNTQzNzYxNzg4OTM4YTdhMTNkMmZiYiBsZWdhY3ktdHJ1bmsKKzM2ODQ2IDYxYzAxNzE1Nzc1NjgzNDQ1ZmFkZGJmYTFlM2RiZWFmYWQyMzY4ZTYgbGVnYWN5LXRydW5rCiszNjg0NyA4Zjg3NDQwYzZlODBjZDEyZWY5YTc4YjM2MTY1YjJmYzEzYzczZjFhIGxlZ2FjeS10cnVuaworMzY4NDggYThhNDg2MzM5ZDgwNjQ2ZjVjNGQzZDJmN2Y1ZDA1OWMxMzcyMDViOSBsZWdhY3ktdHJ1bmsKKzM2ODQ5IDJlYTA5NjYyYTJkNDBiNWNjMTMxMjdiOTdkYTgyOTY2ODlhNjFhYjQgbGVnYWN5LXRydW5rCiszNjg1MCA0NDQ1MDEyOWNlMzU2ZTVmMGU5ZGU5OTYzNWEwNmJmZDQ5ZDcyYWU3IGxlZ2FjeS10cnVuaworMzY4NTEgYzlhZTk1ZDc3YTQyN2Y5OGY0ODFmY2E1YTllOGNmZTg1ZjRjMTQ5NCBsZWdhY3ktdHJ1bmsKKzM2ODUyIGIzNGE4ZGMzY2NhZWNmMmM1ODcxZjQ0YTg5ZjY3MzQ5YTFlMzY5MmUgbGVnYWN5LXRydW5rCiszNjg1MyA0ZTJjNjYwMjFiZjM4MGQyNDMyNjI2MzdhYmQwMjUwMzRiMjcxNGQwIGxlZ2FjeS10cnVuaworMzY4NTQgNDNmYmYyOWRkODNhOTc4YzgxNGJjNGRlMGFhNmZmYjEyNjJlODBiYyByZWxlYXNlMjMtYnJhbmNoCiszNjg1NSAyNTJjNjU0NjkxMTQ2OTVjNmFmZjdmNDlhZmNhMDVjZDViZGQ1ZTUwIGxlZ2FjeS10cnVuaworMzY4NTYgMWFhNDBhMDg5ODJmYTU1ZWZmMjA4YWQ2MmE3OTAwNTkyYzNhODIyMyBsZWdhY3ktdHJ1bmsKKzM2ODU3IDMwMDI1OTY1MzI0YTU4MWUwNzFjMTdlNGVjNWQwY2FkNzE4OTNkMGIgbGVnYWN5LXRydW5rCiszNjg1OCAzMDliZWJlZGZjOTdhMWNjMjMxY2IyN2M4NmZkNmUzZDljNGZjNTY5IGxlZ2FjeS10cnVuaworMzY4NTkgMmMxMTZlN2ZmMTYzNmJlMGNhZjNjMGQ3Zjg3ZWJhYTQyYzljMWJjNiBsZWdhY3ktdHJ1bmsKKzM2ODYwIDQ0MWFiM2FkNmQwMWEwY2I2MmM2Mzg4ODA1ODdkY2M5MzI5ZDA4M2UgbGVnYWN5LXRydW5rCiszNjg2MSA0YmY2ODU0ZGI2NTZlZDk4MGMzMzVmZGZlOGQzNzhmYWE1NjdkMzgxIGxlZ2FjeS10cnVuaworMzY4NjIgNGZkNTk2NTFmZTNmOWE2MjZjOWVhYmUyMTg1NmUyZWM4Nzk1ZTY2NyBsZWdhY3ktdHJ1bmsKKzM2ODYzIDM5NmQwMTFmODM0OGJhNjdhMTJiNTllNTQyZmUxMGFhMGNkYjc5OGQgbGVnYWN5LXRydW5rCiszNjg2NCBiNWRjZmU3YTQxNTk2MGFiMGZiM2MzMmUwNWVmNzk4OTI3YmRlZjk4IGxlZ2FjeS10cnVuaworMzY4NjUgODY3ZmVmMmI1MDYwYWM4MjAxYzkxNmQ4YmI5ZjBlNjMzZGFiYTc2NCBsZWdhY3ktdHJ1bmsKKzM2ODY2IGZhM2QwMWYwZmM0NDIxNTJkNTJiNDA2Zjc5ZWM3ZjE0MGI0NDUyY2UgbGVnYWN5LXRydW5rCiszNjg2NyA4ZDcwN2Q0OWNiOWJjN2Y4YmQ2ZDk3NjBhNDNkY2E3ZWNlOTU0MGIwIGxlZ2FjeS10cnVuaworMzY4NjggOWZiMmUzMGYyNmJlZTVlZTFlODU2MTY2ZmFkYjI4NjM0Y2I4ZTQ4MyBsZWdhY3ktdHJ1bmsKKzM2ODY5IDM2N2NlNTE2YWQwNTRiZDhlZTcyODA0YWIwZjRhODBhNDA2NjRkOTEgbGVnYWN5LXRydW5rCiszNjg3MCA0OGNiNGVkNDk0YTY1ODEwMjEyYTM5NTU3MTlkYzI2ZDM5MzdiMDIyIGxlZ2FjeS10cnVuaworMzY4NzEgOGY2ZDIwNWQ1MzFiYzk3ZWNjYzBkZjJlMWM4MzE5ZTFmYTA5ZDVjYSBsZWdhY3ktdHJ1bmsKKzM2ODcyIGZmMTc2MjRiMjY0MjkyNjE5ZjI0MGQyZjgyMTNiODlhNWNkNzcxMWUgbGVnYWN5LXRydW5rCiszNjg3MyBiMGUwYTUzODcwYjZmOWY4MDk3MDI3ZjQxNGY3MjI2NTVhZmRkMmViIGxlZ2FjeS10cnVuaworMzY4NzQgOGNhOGZlYmMwYTBkNzUwMDkwYzQzYjllMzM2ZWQzYzExN2M0ZWU1NiBsZWdhY3ktdHJ1bmsKKzM2ODc1IDBiZWI3NTY5NjVkZjljZDQ2NTdjZDJlOTNlMGNlMzBhMDkxZDMxNTEgbGVnYWN5LXRydW5rCiszNjg3NiBlNWI5ZTg3MmE3ZDNiYTI4NTQyNjk4MWVkMTFhZDMwYzU2NmE1ZDY0IHJlbGVhc2UyMy1icmFuY2gKKzM2ODc3IDZhYTMxZDc1YzRmOTkwZDk1YjhlNmQ1Y2NlNmNhMmY3ZDQ4YzU3YTcgbGVnYWN5LXRydW5rCiszNjg3OCA1Yzk0MGY5OGU0NjU1OWM5MjJlYjhhMTVlYmJjZGYyMGQxMWRkY2NkIGxlZ2FjeS10cnVuaworMzY4NzkgYWI5M2FmZjRjOTBhODRiZjBjMDE1MzA5OTQ0NWUyZmI0MzAwNDVmOCBsZWdhY3ktdHJ1bmsKKzM2ODgwIDFmMzU4YTZiNGJjMzM2ZTU3MDQ1MTRiMjgyN2VhMTg1OWJiNWQyZjMgcmVsZWFzZTIzLWJyYW5jaAorMzY4ODEgMjA0ZDI5YWNiYTI4MDEwMTBhZmZhN2YzOGJkNjFhM2FkYThmMjE2MyBsZWdhY3ktdHJ1bmsKKzM2ODgyIDUyMThiZmY1NjQ0OTRmNmYxMGE1YjJhZDIzMTYyOTRjNWFkMjQ1MDkgbGVnYWN5LXRydW5rCiszNjg4MyBhZDgxODMzOGY4YzMzMDY1NjljYmM2MzY2OTI0ZmQ2NzE3M2YxYzE3IGxlZ2FjeS10cnVuaworMzY4ODQgNTMwYzAyYjgzZWVhNWFkMTY1YjZjOGM4NDA2NjAyZjFhYzYxM2NiMyBsZWdhY3ktdHJ1bmsKKzM2ODg1IDJjOTNmY2VlZTQyZDEzZGFmMDU0ZTY2Zjc0MGZiMDY2MDg1YzhmYTMgbGVnYWN5LXRydW5rCiszNjg4NiA0ZjU4OGY1N2E5M2IwMzVhZDAzYjhkMDQ2MDgzOWZlZGNiN2ZhNTg3IGxlZ2FjeS10cnVuaworMzY4ODcgODg5N2U3N2NkNzlhODQxYmZlNzc1YzU3MWMxNmQyMGM1NTA4YWZmZiBsZWdhY3ktdHJ1bmsKKzM2ODg4IDk0NjQ0MTVhMWY4OTQ5OTE5OTI1N2Q5MDc5NDA1MzMyNjliYjM3OGUgbGVnYWN5LXRydW5rCiszNjg4OSA0OWI4MDgzMjAzZTZiYmMxZjk3OTYxMWM4MTczNGMzZGZlMTViOGJhIGxlZ2FjeS10cnVuaworMzY4OTAgOWRkZmE3NGNiMjUwZjQ5NmY4MTQzMmFhNzVkOWY0OTU0MDM3MGU0OSBsZWdhY3ktdHJ1bmsKKzM2ODkxIDg1MDAyY2Y0ZTIzYmY1MGQ4YTgxZWQ1N2E5NTZhM2ZlMTU2MzZjYWMgbGVnYWN5LXRydW5rCiszNjg5MiAyZTdiNzgwMzI3MDJjN2I2YmE2ZDU2N2VkMTg3ZWVmNzgxMTkyOGM4IGxlZ2FjeS10cnVuaworMzY4OTMgODYwN2FjMmY4MWM4MzkyMGRkNDJhNDlkMDdjYzIyNGU0ZjNiMzc5NyBsZWdhY3ktdHJ1bmsKKzM2ODk0IDI2NzUyZGY5MzkxMzkwMzNmYWI2YzM4NzNiMGM0OWU1ZjZkYjc1MmMgbGVnYWN5LXRydW5rCiszNjg5NSAxNjYwYTY4ZmE2YTQwN2E3M2RjN2NhYzc5MTZjOWJjMWVlYjNkMmQwIGxlZ2FjeS10cnVuaworMzY4OTYgN2MzZDU2OTUyMmM0OTJhZWY3ZTM5OTNiNTU0OTg1OTE4ZTEyYjY3YiBsZWdhY3ktdHJ1bmsKKzM2ODk3IGI2NjlhNjA5N2JhODljODI2ZDQwYjAzYWM2MWU4MTFiY2E0MzQ4NDcgbGVnYWN5LXRydW5rCiszNjg5OCBlZTNhYWE3OTE4NDI5MmQ4MDJmNWJkZTk3NTExNzZmYzU2MDg2MTNmIGxlZ2FjeS10cnVuaworMzY4OTkgZjZiMmYxOTJlMDNiNTNmYjMzOGIxNTQ2Mjk0Y2EyOTNhMTVjYWYyMCByZWxlYXNlMjMtYnJhbmNoCiszNjkwMCBjZTJhMTk2MjAzYzVlY2U5MjdiZWNmMDRlMjkxOGU4ZTU3NTQ3OWYyIGxlZ2FjeS10cnVuaworMzY5MDEgMjMzYzIyMzg1OGY3N2JiYWM1MmRkYjU4NTkxY2I1NzQ0ZDVmMjU1YSBsZWdhY3ktdHJ1bmsKKzM2OTAyIGZlZTIwMzhiOGZhOWRjODJiMDY2ZDIzZTNiMDMzNDQ3ZjMzM2IyNmYgbGVnYWN5LXRydW5rCiszNjkwMyA0MjA0ODg0MDhlMGUzZDY0MzNjN2QwOTUzNDM0MjgxZTQ1MjI4NDM1IGxlZ2FjeS10cnVuaworMzY5MDQgNWE0ZDc3YjZlZmE2NWVhOGFlMTg2NzdhYjI2MzUyNzcyOTdlZjAzYiBsZWdhY3ktdHJ1bmsKKzM2OTA1IDMwNDVmNGYzNGVmMjQ3YmQ1NDM4ZjIwYTBhMWE1YjE0MDdhOTE1NWUgbGVnYWN5LXRydW5rCiszNjkwNiAxN2ZjODhhMWI4NzM1Nzg0YzQyY2MzZGRkMzBiNDQ1YmY5ZTQ5ZjkxIGxlZ2FjeS10cnVuaworMzY5MDcgMWRiZDBmMzQ1YTc4ODYwYzQ5YTYyNzgzNjY3ZjM0ODY2MmUxYzY2NCBsZWdhY3ktdHJ1bmsKKzM2OTA4IDI3NDkzMzRkNzFhNDcxNDNlMDE1NTc3NTc5MjBlN2Y5YWVkOGI2ODMgbGVnYWN5LXRydW5rCiszNjkwOSAxNjM2MjE1MTdiOTgyNTRjYTg1NThlYzk5ZWM2MzQ2ZWQ3M2UwZGE4IGxlZ2FjeS10cnVuaworMzY5MTAgNjdkMjUyMTdiYzdmMGM0NzQyMWMzY2FmYTU4MjliMzAyOTFiYmFiOSBsZWdhY3ktdHJ1bmsKKzM2OTExIGM4MWVkMDc5NTc2ZjJhNWU3ZTcxYzQ1N2IxYWU4MjllY2VlZDk3YjMgbGVnYWN5LXRydW5rCiszNjkxMiBjMzQ4N2VmM2E2OWM0ZDI4YTAxZGE1ZTFkNzA2ZjNjMWNlMmFlNzYwIGxlZ2FjeS10cnVuaworMzY5MTMgZDBlYjA5OGJlMjY0OGYyNTc3NmJhYzljZTcxYzhjNTAxMjI3MDg1OCBsZWdhY3ktdHJ1bmsKKzM2OTE0IGM0NzhhNzFjMjM4NDA0MmI4MmM3Yjc3YmZjYzQ0NGFiNzk1ODJmYzAgbGVnYWN5LXRydW5rCiszNjkxNSA0NTU2NjcxNDZkNGI5OWVjYjVjNDVjNDhlM2VhMWEyMmIxYjNiM2NjIGxlZ2FjeS10cnVuaworMzY5MTYgOTg1Mzc1YWNhOTcwNzMxMGYwNzU0NjI1ZmVlMWNkNGU4YjkzYTczZiBsZWdhY3ktdHJ1bmsKKzM2OTE3IDFhZjNhZDQ5ZDA2ZmUwZTIyMTFiMzZmM2MxMDBmZTc1YTQ3YmI3MWMgbGVnYWN5LXRydW5rCiszNjkxOCAyN2FkYTI1NTA5ZmYyNjI2OGNmMTg1YjkxNWJjNzcyNmQzZDk4MGZmIGxlZ2FjeS10cnVuaworMzY5MTkgZmJlYTJiZTM1NTYyOGJlMjNmNDRhNmM3MmQ3YzA1ZDAxZDYzMjNiZCBsZWdhY3ktdHJ1bmsKKzM2OTIwIDI5ZmE5ZDZhZmVhMDFmZDhmYWE3MGI1YWU1MGU0MmU5Y2ZiM2M0YzUgbGVnYWN5LXRydW5rCiszNjkyMSBmMGE2ZWYzYTg3NGVmOGRjNWE4ZGM5M2YzMzA1OGZiNTNmOTY1OTU1IGxlZ2FjeS10cnVuaworMzY5MjIgNWU2OWY3YzgwZWY0MjczMzQzODVmNjUxMmVkNGM3NjljOWFhOWUxYSBsZWdhY3ktdHJ1bmsKKzM2OTIzIDZmMzhlM2I2NGVmNDcyNmVmZTlkNGVjNWM2MGZjMTU5MDljMGZkZWIgbGVnYWN5LXRydW5rCiszNjkyNCAzMWNjZWE5ZTk4YTc0NmZhMGJhOTFhOTc5MWYyNDdkZjE4NDJmOTgwIGxlZ2FjeS10cnVuaworMzY5MjUgZWU0M2NhNGEyYzIzOGU0MWU3MzIzMzBjZGQ5NDZiOTRjMWQxZmM0MSBsZWdhY3ktdHJ1bmsKKzM2OTI2IDc2NGQyOGZjM2QzNjk4ZWE4ZmJmYzAxMzlhNTdmYWE2ZjRiMmY3ZjIgbGVnYWN5LXRydW5rCiszNjkyNyA5MGRhNzA5ODY0MDcyMzk3NGM4YWI4OGMwZWM5ZWI5MTExYTFlNzY0IGxlZ2FjeS10cnVuaworMzY5MjggMDMwNDNiMjg4YjI4NzU4NjAwMmUwN2Q4MWI1OWQwNjdmYzNiY2M4NSBsZWdhY3ktdHJ1bmsKKzM2OTI5IDQ1MzI5ZDlmZGI4ZDU0NTQ3MWU0MGE3MTE4MzdmODZjOTkyN2E0NzQgbGVnYWN5LXRydW5rCiszNjkzMCBjZGEwNDU1YmQwYTAzMTg5MDA2OTk0MmZkYjg3NDBiZDEyOTM0ODE5IGxlZ2FjeS10cnVuaworMzY5MzEgMmE4YzM3NThjNGExOTA2YmUzMWRhM2FlZDkyNTNmN2ZjMTkxOTJiZCBsZWdhY3ktdHJ1bmsKKzM2OTMyIDQ1MWRkNDlkZjUzMTA5Y2Q2MmFiYmQ5MWFiYjBjZDE2NmIzNGYwYjQgbGVnYWN5LXRydW5rCiszNjkzMyA4MjFjNTU3Y2E2MTI0YjVmYjIwNTdkYzM2ZjNiODlmOGY5ZmZhY2VmIGxlZ2FjeS10cnVuaworMzY5MzQgNGU2ZjRlOWVjOWIzZDNhNTY2ZGFlODk0Y2Y0MDcwM2U0MTNiMGJmMyBsZWdhY3ktdHJ1bmsKKzM2OTM1IDA0ZDlmZGUxMTMzMDk0OGUyYTNkMGNiN2JlMGU1NjcxNjJlMTRlN2MgbGVnYWN5LXRydW5rCiszNjkzNiA0ZGQxODE1YjQ0ZWZhYWY5ODU2N2U1M2RjNTdmNzZkNGJlMjE0NWMwIGxlZ2FjeS10cnVuaworMzY5MzcgYmZjYzRlMzlmYzQ1MmIzNTMyNjY3NjM0NmFjODExZDFlN2QzNzQ1ZCBsZWdhY3ktdHJ1bmsKKzM2OTM4IDk4MWZmZjczNjNiOTJlOGU3NGRmMTc5NTRhZjIyMTY5ZGNiMDFkODAgbGVnYWN5LXRydW5rCiszNjkzOSAwMWNjNWUzZjYzNzUyMjFhMWI3Yzk3NDIyMGFiM2RiZThkMzYxZjhhIGxlZ2FjeS10cnVuaworMzY5NDAgODM2ZTc3MjY2Zjk3NzkxMzE0MTEwZjNiNDcwYTc3ZmVlNGEzZTAyMiBsZWdhY3ktdHJ1bmsKKzM2OTQxIDc0M2FiYWM5ZjlmZTMzZWNiY2VkOTczOWMxNWMwZmY5ZDdkN2ZmMzEgbGVnYWN5LXRydW5rCiszNjk0MiBkMDc1Y2JhODUxZmQ4NmZkOTYwOTYzNzlhMjc4NjhjNjMzN2QxNmUxIGxlZ2FjeS10cnVuaworMzY5NDMgMDU4ZTg1MWU3OTNlYWZiYjExNDgyYjk1OGFjMzE4ZDYxZGQ3MDIwZiBsZWdhY3ktdHJ1bmsKKzM2OTQ0IGE3OTI4NzI2ZGQ4ZjViZDQ0ZTg0ZTliNDVlYzNkMDZmNzZmMmQ5MmMgbGVnYWN5LXRydW5rCiszNjk0NSA1ZWFlNGNlMTA1ZmNmNGM1NjQ5Zjk3ZGI5ZGYwYWI4ZWYzNDQyZjhlIGxlZ2FjeS10cnVuaworMzY5NDYgMjQwZWFmYWUzZWE3NGRhNzM1NGE5ZjVlMmRmZGMxOGQ4Y2NiMzkxZSBsZWdhY3ktdHJ1bmsKKzM2OTQ3IDVmMzM1MDdjYjU1OTgyMzcxZWZhMzkyMmUyOGFmODYzM2E2N2RlOGMgcmVsZWFzZTIzLW1haW50CiszNjk0OCBhYmVjYmQ2NmE2MjgwYzdkOTljZGUzY2E1MTkzN2I4YzUxNjhkZjIxIGxlZ2FjeS10cnVuaworMzY5NDkgNDQ0NTdjYjhmOTcwMTQ5NzJkOTMzYzQ5NDA4Mjg1NGU3NTU4OTA4YSBsZWdhY3ktdHJ1bmsKKzM2OTUwIGFmZDU0MTI2ZTlhMTkwZmEwNDBhZjRmNGNlZDY2YWI1NDE0MzU2NjYgbGVnYWN5LXRydW5rCiszNjk1MSA1MzQ3ZGEzMWYwNzZjNmNmMjdkNDQwMWMwYWFjZTllZTkyMDA2NjIxIGxlZ2FjeS10cnVuaworMzY5NTIgOTkzN2QwZTYzY2EzMjVmNDdkMGIzY2UwYTYzZTFiOWNlMzFjZDdjNiBsZWdhY3ktdHJ1bmsKKzM2OTUzIDRmZDE4NTA1ZmMzNWZkZDdiMzJmYzYzZTdkMTdmOWRkNzJjMWI3MDIgbGVnYWN5LXRydW5rCiszNjk1NCA0YjBhMGZjMWJhZWEzMWRmOTNlZTI1NmQ1MGQxNzViM2UwZjlmZTA5IGxlZ2FjeS10cnVuaworMzY5NTUgNDgxMDBhMDFhYzdjMDUzYTQxNzVhODYxZWQ2N2JhNjkzZTI0MjRhMSByZWxlYXNlMjMtbWFpbnQKKzM2OTU2IGRmYzI1ZTFiOTYwNTgzNDhjOWQyNDQzNWJlNDcxNmIxNWM2ZDdlOGUgbGVnYWN5LXRydW5rCiszNjk1NyAyMGU5MGU1MDc5N2RlOGY1ZDA2NGFjN2EyZTkyM2Q3ZDhhMDE4M2VlIHJlbGVhc2UyMy1tYWludAorMzY5NTggYjE2NmFlMmY3NzMyMTQzN2U4ZmQ1MzZmOTViNzMyM2IyZGY2NzkyYSByZWxlYXNlMjMtbWFpbnQKKzM2OTU5IGRkZDI0ZDcyYWQ2YWFjNTY5ZjgxMDY3NzhlNzQ1YWIxZGI5ODIwOGUgbGVnYWN5LXRydW5rCiszNjk2MCAwMWEzODU1YTRiMDNlODI5N2NkZTkzNDA5YjEwZTkxNDgyYWM4NDY3IHJlbGVhc2UyMy1tYWludAorMzY5NjEgYzcwYzMzZjY5YTQ0Yzk0NjMwNzVhZDZjNDU4ZWJjZDVkNDIyM2EzMiBsZWdhY3ktdHJ1bmsKKzM2OTYyIDNiNWQzN2Y3Y2I1YWQxZTc3ZmYyMDA4YzZkYmQyOGUzMTQ4MGQ0MDEgbGVnYWN5LXRydW5rCiszNjk2MyBjZTAxNmQwZWM3MDE1NTM0YTI1MGRjNDg1MjEwZGYxN2UyNzljMzJjIGxlZ2FjeS10cnVuaworMzY5NjQgMzU2ODg3NDEwYmRlNzRiOTk4NzUxZjEzMzM3NjIwMTkxNDMwN2I5MSBsZWdhY3ktdHJ1bmsKKzM2OTY1IDgxZWZlYzBlOWQyOTM2YmU4NmNjMmNmMGMzMjk1NWFjYmNmOGYwOTcgbGVnYWN5LXRydW5rCiszNjk2NiBmMjc5MzViNDY5ODVhYzYxZTBiZDU2OTMwMDMzNzE0ZTcyNjJmZWJjIGxlZ2FjeS10cnVuaworMzY5NjcgNmI4ZTQ5OTY4N2Q2MjU4NmVhNzViN2FjMjY4ZGU0ODk0YzQ0NWM2OCBsZWdhY3ktdHJ1bmsKKzM2OTY4IGY0NTViYmU3ZWE3ZTJiMTZkNDc5NjE1MTFlNmI2NDA1NTA3MGM2MDYgbGVnYWN5LXRydW5rCiszNjk2OSBlNWY2YzNmNTA4NDY2NTNjYTI5M2I0YmNhNzIxZmQ5MTI2ZjMxZTNkIGxlZ2FjeS10cnVuaworMzY5NzAgYmFiZDExZWVjZDg4M2FjZWJjYWUyNzQxNzRjNTM0YWNjOWU1NTg1NCBsZWdhY3ktdHJ1bmsKKzM2OTcxIGM5YWM5YmU5NWFmOWUyZThhOWI4YjBmNTY3OTU1ZjI2YjU4MDkxMmUgbGVnYWN5LXRydW5rCiszNjk3MiBkZGMwMzA0YzE1MWZlNGY2ZWUxMWRlMjFmM2FmZDY1MGI1MmExMTViIGxlZ2FjeS10cnVuaworMzY5NzMgNDUwZjVlMjFlYWM4ZGMyNGEwZGNhMjY5YjlmNTY3NzcwNGZjNTlkMSBsZWdhY3ktdHJ1bmsKKzM2OTc0IDBhMGMyNDdmMDU4NDQ1NmUxNTE3NDM5MmNmZTNjODgyZGVlMWI2OGUgbGVnYWN5LXRydW5rCiszNjk3NSA3ZGU3YzE5MTBhYzljYTQwZTllZDRhMzAwYjE0ZTQxYjE1Y2E0OGFhIGxlZ2FjeS10cnVuaworMzY5NzYgYTc3YzAzNzJhMWQ3YjUyY2QxYzNiNTU0ODIzMjNlYjBlN2M4NzExYyBsZWdhY3ktdHJ1bmsKKzM2OTc3IDI4ZTg3N2ZmNzRjZjcwNjczMzYzODllOWE3OGJmMjNmYzY3ZTI2YzEgbGVnYWN5LXRydW5rCiszNjk3OCBlNGE3M2VmYTRkMjM0YmVmZTNjMjIyYmE1NTUyOGFiNmZjODgxYWNjIGxlZ2FjeS10cnVuaworMzY5NzkgZGZkMzgwM2VlMGMxODEzZDhhNzBmYmJiNjQwOTRhYmE1MTU3ZjVmYyBsZWdhY3ktdHJ1bmsKKzM2OTgwIDNhNGU3M2E1ZTQzNDdmMWQxNWFhMTc1NGZjOGRjOThjYzI2ZTMwZTUgbGVnYWN5LXRydW5rCiszNjk4MSBiZjY5ZmMzYmQwNjdlNGU1ZWNjMWMyOGYwN2FlN2FjN2E2MTQ0ZTIxIGxlZ2FjeS10cnVuaworMzY5ODIgZjZhYzQxN2I1ZWIwOGI3M2YxYzAzODIwNTQyYzllMDFhM2UzZGUzNyBsZWdhY3ktdHJ1bmsKKzM2OTgzIDFjZjlkZTNhODUwM2E0Mzk3ODU3OGIwYWQ4ZTk2MTAyN2ZmNWIzMTQgbGVnYWN5LXRydW5rCiszNjk4NCBkN2ZjZGY5Nzc2YzRkZmE0YjdkMjNiZmI2MjZlYjllZTcyZmZkYzVlIGxlZ2FjeS10cnVuaworMzY5ODUgOTIwZjVmNjRmMmYwZmM4MDM4YTI3ZDRlMmRhOGMxOTZiYmEzOTQ0MSBsZWdhY3ktdHJ1bmsKKzM2OTg2IDAxNDA3ODViZWZkYjM2ZDBjMWIwNDJlNjM0ZWVlNGE1NTgyOTE1NGUgbGVnYWN5LXRydW5rCiszNjk4NyA2YzE2YWI0MjE0YWY4ZThlNTBhODAzMzcwZDliZDRmYzhmMmIxN2Q3IGxlZ2FjeS10cnVuaworMzY5ODggZGM2NDdkZjUzOTIxN2E1OTVjZWNiMTkwNTM5Y2ZkNjJjYjg5NzJhMyBsZWdhY3ktdHJ1bmsKKzM2OTg5IDNhN2Y4MmU2MGNiMjI5MjQyODUwMjcxNGFiMDc3ZjgyMWY5Y2RjNzIgbGVnYWN5LXRydW5rCiszNjk5MCBjY2QwMmJkMzQ0YjM4YjBlOWUyNjI0MjM3NzY4ZWExMmIyOGIxN2VlIGxlZ2FjeS10cnVuaworMzY5OTEgZWRkYjM3ZDcwMmI1ZTA1MjIzNjA2ZWUxZmM0Mjg1NTgzZWNmZjdkOSBsZWdhY3ktdHJ1bmsKKzM2OTkyIGMyMzg0NjAxYTI0MTExN2QxZTc3ZmQ1NDgyZjNmNDA0MGJhODQxNDkgbGVnYWN5LXRydW5rCiszNjk5MyBhZTliNDdhOGQ2NDg0ODU2ZjBjOGRlMTMwYzQ0N2IxZjQyMzVlYTZmIGxlZ2FjeS10cnVuaworMzY5OTQgOGEyODI3OTc4OTVmM2YxMjVkMzU5NWVkNTQ4MzRmMTliYTYwMGM4NyBsZWdhY3ktdHJ1bmsKKzM2OTk1IDg0NmJhMjk3MmQ3YzFiZGQ0YzRkYTYzODUyMTI0NTAzNGZhNmM4MDggbGVnYWN5LXRydW5rCiszNjk5NiBlNDk5MmU5MzBjYjJlNTk2MTgwMWE0NDE5MDQ2MWJkZWNkZDgyMjdiIGxlZ2FjeS10cnVuaworMzY5OTcgM2RiOWE5MzI3NzVlNjBhNmFmN2RjMjczZDQ2YzVjZWZmMjIwYjg4ZSBsZWdhY3ktdHJ1bmsKKzM2OTk4IGZjMTYzN2ZjNDU4ODlmYmM5MmQ3NTIzNjMwNjNiMWIzNTY2YmZiNjkgbGVnYWN5LXRydW5rCiszNjk5OSA3Mzc1YWU1ZjlkYzRkNWY1OWVkZjA5NzQ3ZTVjNTFiNGEyNmVhZWYzIGxlZ2FjeS10cnVuaworMzcwMDAgMWQ5ODM1MDgyYmU1YWVjYTZhNWY3ZWMyNjYwMDc1OWMyNGE0YzVmMiBsZWdhY3ktdHJ1bmsKKzM3MDAxIGFkMjY4YTg0MDhmNGY2YmViNTcyYmVkMzBmNTkyYWJmNWRlYmY1YzAgbGVnYWN5LXRydW5rCiszNzAwMiBhMzVlNGQzNWQxNDI1MTJjZDI4ZDYyODUxNDRmNDYxNGYwYTliYTlhIHJlbGVhc2UyMy1tYWludAorMzcwMDMgM2JlYjU0ZjlkMmJiZTg4MjdmZWE3NmNkNGRhYjY2NjllNGRhNGJjNyBsZWdhY3ktdHJ1bmsKKzM3MDA0IDI4OTNkYzliNGVmNGRhZDA0NTI5NWYxNTY4ODVhNmViMzczMmQyMGMgbGVnYWN5LXRydW5rCiszNzAwNSAyMmZhOTZjNDEzYWVjM2ExNTg3OGE2NmUwYzRkNDAwNTE5MzRjOWQ2IGxlZ2FjeS10cnVuaworMzcwMDYgOTUxY2NkOGYzNDI4ODZlYmI2MGFjODJiMTgwODlhMjQyYmQ1NGI0MyBsZWdhY3ktdHJ1bmsKKzM3MDA3IDg3NzljOGM0ZDE4MWFmNDc1MmNiOTFkODE1YjcyMDA0OTQxOTA0ZjAgbGVnYWN5LXRydW5rCiszNzAwOCA5Yzg0MWNhYTBlODE0YWU2ZjQ5NjVkYjVjOTRkOTgyZDVmYmNkNGM0IGxlZ2FjeS10cnVuaworMzcwMDkgMjhhMjA1ZWNiNGRkODA1NjQ3NjIzMzQ2MTdmMWZmYmZiZDBkYmQxYiBsZWdhY3ktdHJ1bmsKKzM3MDEwIDhlODdhNjgzNDk0MmU0ZWZhNzYxMmIxOWM1OWEyZDkxZWE5ZDMxOTQgbGVnYWN5LXRydW5rCiszNzAxMSA4YzBiMDhiMjQ3N2JmZDNhODUxYzY1YmIzNzk0OGVkZDk5OTg4NTJjIHJlbGVhc2UyMy1tYWludAorMzcwMTIgNjEyZGUyNjhlZDRiZTBiZTMzYjU0OTNlMzk2OWVhOWEwMmY1NTYyZSByZWxlYXNlMjMtbWFpbnQKKzM3MDEzIGZkOTJlYThiNWI1MWJkMWE2NDZlZTQ5NzM4OTFlNGI4YzYxZjdjYWYgcmVsZWFzZTIzLW1haW50CiszNzAxNCA3YWFlMDZiMWYxZGRjYjM2NzliNDE3NWIxZDgzYTMyMjEzYmE1OGVhIGxlZ2FjeS10cnVuaworMzcwMTUgZmY5ZDVhNzJkNTRiNzIwODAwZjg4YzU0ODhlNzAwZDJhZGVlNDQ1MSBsZWdhY3ktdHJ1bmsKKzM3MDE2IGI1NWRiY2NlY2M3MTUwNjY2MDFkZWMzYWVkMTMxMTEzOTM0YTVlMWMgbGVnYWN5LXRydW5rCiszNzAxNyA0YjViNmU4NjFmY2Y2ZWIzYjk4MTI2YWZiN2M4Zjk2Y2IzYmFjYjFlIGxlZ2FjeS10cnVuaworMzcwMTggOTMzNTQ4ZmU3Yjk3YjBhMmI2MzcxYWVlN2NmMjczZDkyM2EyMDVlNyBsZWdhY3ktdHJ1bmsKKzM3MDE5IGEzNjIwMTZlOTUwZDUwYzUyYzhmOWU0NDc4MmYxZGY5MjllMTFmNjAgbGVnYWN5LXRydW5rCiszNzAyMCAyYjhiZGIwNjllMGFlYmRkNmZjMDkzNTJlODcxZmUwYTc4YTUxNTQ5IGxlZ2FjeS10cnVuaworMzcwMjEgYjJmNDI3ZGIyMjhiMTQ2ZjUyMWU4ZWRhZjU4NDlhMjkzZTI4ODc1MiBsZWdhY3ktdHJ1bmsKKzM3MDIyIDNmOWQyMWVjNTA0YjRmYmZkYTcwZmQxNDkwMDZjNjczYjVhZDg2ZmMgbGVnYWN5LXRydW5rCiszNzAyMyBhMDU5MzAxYTRjZGUzZDQxMWViZjJkNjc4M2EyMjI0ZjA5YWJkYjc2IGxlZ2FjeS10cnVuaworMzcwMjQgYWU0Y2IyOTQ3NDAwZWIyYWYzOWMzYmU5NGNkNGRiMmZjNWFlNzkyMCBsZWdhY3ktdHJ1bmsKKzM3MDI1IGJmYjI5MWY4NTg3MTVhNzdlZTBhMjdlNWEyZDgxYjQ5ODBjNDczMTAgbGVnYWN5LXRydW5rCiszNzAyNiAyMDhmZTcxOWM3NDliNTFlYjI3Zjg4YjNiOWMwZmY1ZmJhMDAzMDg3IGxlZ2FjeS10cnVuaworMzcwMjcgNmYwOWI1MjBjMDFjNTkwZmM4YTEwMzBkNzc4NzI3NGZiMmI3YjFiNSBsZWdhY3ktdHJ1bmsKKzM3MDI4IDFkNmVlZmJjYmIzNzQ3ZTBkMmI5MDliZDcwZWMwNzkzY2E2ZTIxOWUgbGVnYWN5LXRydW5rCiszNzAyOSAzNTdiMjRjMzQ2YmIwZDY2OGVhZjZlNTZkZTEwNGY5NGVmNzQ5ZTIwIGxlZ2FjeS10cnVuaworMzcwMzAgMmU4ZDJiZGQzM2RlY2RiNjhlODRiOTU4ZTNmNTcwN2IwOTk2OGYzYiBsZWdhY3ktdHJ1bmsKKzM3MDMxIDk2YmY0MDI0ODhjNzBhNjE1MzBkNGYzYTgzYzViZjg1MWMyM2JiMmEgbGVnYWN5LXRydW5rCiszNzAzMiBiZWQ0NWE2Yjk5M2JhOTRhYjNmMTc5OWRjZDg4NjA3NjNlZmY5ZWVjIGxlZ2FjeS10cnVuaworMzcwMzMgNTc3OGY2MzMxMzM0Y2UzNmMzZDhmZWUyZGMzMmVlYjM1ZDdiOTM2MiBsZWdhY3ktdHJ1bmsKKzM3MDM0IGE1NzY5ZThmMWM2ZmRlNzUyYmUwODQ1YjBlODA2Yjc0N2RjOTMwNjUgbGVnYWN5LXRydW5rCiszNzAzNSA0Y2Q3N2RlNTUxZTc0NWIxYWUxMGNlMDA2NmZiYzI4NWE2M2VkNjU3IGxlZ2FjeS10cnVuaworMzcwMzYgMWY5NTIyMjM4Yzg2MzIxN2IxNWE0OWNmNmYwOTJhY2RjNWFlYjU4ZCBsZWdhY3ktdHJ1bmsKKzM3MDM3IGUwNWU5ZDA1ODMwZDA5MWMzZjhmOTQzMWYzY2E0N2Y2YzkzZTJmOTIgbGVnYWN5LXRydW5rCiszNzAzOCBmNmZhNjQ5ZmM0YWY3NGQzZmQzYTM2NzVkMmYyMGYxY2E4MmVjZDQ5IGxlZ2FjeS10cnVuaworMzcwMzkgYTZjODAxNzBmYzUzODJmOTM5MjgxMjI4YjY4YzQwOTliNjlkNWZjZiByZWxlYXNlMjMtbWFpbnQKKzM3MDQwIDQ1MzZiMDMxNTE1NzdiOTU0ZWZjYTExMGMyN2FjYTgxYzMyMDExMzQgbGVnYWN5LXRydW5rCiszNzA0MSAxNzk3M2YyZTNlMGU4OTdjNzQ5ZGJiMjkxYzllNTY0M2YxOWM4N2Q3IGxlZ2FjeS10cnVuaworMzcwNDIgNjY2NTU3YzI5MjRkZmNmYjE2ZDJiNWFjNGEzZjRhMTMxMmFjM2FhMSByZWxlYXNlMjMtbWFpbnQKKzM3MDQzIGEyNTE0ZTJkMWM3NGUwNmQ5N2I2Zjc1NzE1YTAyNzIzMjMwMWZkOTQgbGVnYWN5LXRydW5rCiszNzA0NCBhYWQxMTg2NDM1OTg4YjJhYjljYjZkZThlOTkwZjhjNjAzMWI3NGYyIGxlZ2FjeS10cnVuaworMzcwNDUgMGQxNjI3YzQ0NzY5MGNhZmQzYmJlMDZlMzFkODcxYTNlZTI1MWU4NyBsZWdhY3ktdHJ1bmsKKzM3MDQ2IDI5NjVhZTk0YTIzZmUzNDFjYjdjMGQ5NWU4MmU3Y2Y1YTc1NWU0MTYgbGVnYWN5LXRydW5rCiszNzA0NyA0NDAxZGVhNzI0ZjBhZmMxNjUyNmFmZTAxMWM2NDU3NmFlYjUwNzdkIGxlZ2FjeS10cnVuaworMzcwNDggOGU5MTdiOWU3MGU3ZDdjODFlM2Q5MjVjZjhkNTMxMDFhOWRhM2U0MCBsZWdhY3ktdHJ1bmsKKzM3MDQ5IGZlYjUyNDdiYTBjODBiMjI2ODJlNThhNzJhODdlMjdhMzdhNjJmMjkgbGVnYWN5LXRydW5rCiszNzA1MCA0Yzc4ZmNiNjBkZjMwOTFjMTg4MDQ2NWNkNzQ2MTYwYzYyMTk3NzdmIGxlZ2FjeS10cnVuaworMzcwNTEgMzViYjYyYWM1NWZlZGE0YzJjNTdlM2ZlZTI2MjQzMzUwNWM1NjJhZCBsZWdhY3ktdHJ1bmsKKzM3MDUyIDBmZWNjZjE5YjE2ZDVjNGMwZGE0MTgzNmM3M2YzNDJhZDllNGRmZDkgbGVnYWN5LXRydW5rCiszNzA1MyBkZTgwNGVkZjhiY2Q1N2VlOWQwM2UyNGMxNTIyYTkzMjg0MTAzYTAxIGxlZ2FjeS10cnVuaworMzcwNTQgYjBmMjY4MWJjZjdmYTc0MGRkMTVjZGNiNzVhZWI5MjFiNGZkZDBiOSBsZWdhY3ktdHJ1bmsKKzM3MDU1IGVkYjg1M2VkNmM3OGIzNTA1MjY2OTM4YzFiZGRhMmY0NzIxYjExMmUgbGVnYWN5LXRydW5rCiszNzA1NiBiYmU2ODQ3NGU1MjIwZDc2ZjlkM2NkNTM3OTcyMDU2ZmU1Y2E4NTMyIGxlZ2FjeS10cnVuaworMzcwNTcgZDI4ODNjNDJjMjA0YzA0ZjI0NjdmZWY4N2Q4OTAxMmVjZTdkMGQxOCBsZWdhY3ktdHJ1bmsKKzM3MDU4IDA5NmRlNDU4MjdjN2I2NzRiZmVmZTZlMzUyN2NiMDI3ZDAzOTc1NmUgbGVnYWN5LXRydW5rCiszNzA1OSA3ZjU3YjNjN2ViYmZmY2I1ZThlOGRlNDEzYmEzZWVmYWVhMDA4ZThmIGxlZ2FjeS10cnVuaworMzcwNjAgOTM0YTVkYjliOTViNjEyMjlmZDhmYTdhYjhiMmI0ZGEwYjZiOWJhMSBsZWdhY3ktdHJ1bmsKKzM3MDYxIDdkYTkyMDFiYzhiNTMyYzZkYzM2OTk3YTI2NjcyMTVkYTVlMzg4Y2MgbGVnYWN5LXRydW5rCiszNzA2MiAwMTcyMjdlNDdjM2RlZjMxYjhjMDE4MTY2ZDhmMmFjZjdmMzJjYWU5IGxlZ2FjeS10cnVuaworMzcwNjMgZWE0ODc0ZTAyMWU4MGVhY2U2NGY4MTJmZGVhODc1MzlmYjFjNDQ1MiBsZWdhY3ktdHJ1bmsKKzM3MDY0IDI2NTYzMjA0NjYwY2JjYjhlMjQ0NDkzZDc5YmYwMmNkZWYwZDMwYzcgbGVnYWN5LXRydW5rCiszNzA2NSAzNDdkNzFjMGUwMThkZDE3OTE1MDUzNGEzN2IwODNmN2MwMzkzM2MzIGxlZ2FjeS10cnVuaworMzcwNjYgMWQwZjRjMDM1N2QwMDRmMjllZmIxNWI2NWE4NmZlZThiNDExOGE2ZSBsZWdhY3ktdHJ1bmsKKzM3MDY3IGVhYjIxZmJmOWE3MGY5NzBkZDlkMGIxZDA2NDgzOGZkODAxNDlhMTAgbGVnYWN5LXRydW5rCiszNzA2OCBjMThhY2E3ZTgxY2I1Zjc3NzY4ZWE5YzRiNGU4ZjFmNjU1MjExYzA1IGxlZ2FjeS10cnVuaworMzcwNjkgOTA1NjlhZTNlM2YzZjFjZGUxMGQ3YWZkNTdkODdhZmMzOWY0MjVhMSBsZWdhY3ktdHJ1bmsKKzM3MDcwIDY5NzAwNjg3ZTMwZjUxNWE2NDRhNDJjMDlhMTcwYjZiMTQxMWRkNjcgbGVnYWN5LXRydW5rCiszNzA3MSBiZWQ2MmYzOTlkYWMwYmY1NDcxZTI2ODllY2MzMjhlYTNmZTk5ODc3IHJlbGVhc2UyMy1tYWludAorMzcwNzIgMDQ4NjRjMzliMDA2MzMzZjMyYWMyNDllYTE4ZTI3NjM4NWI5OTM1NCBsZWdhY3ktdHJ1bmsKKzM3MDczIDM0YThkNzVlZGQyYjAzYTUxYTdiMTQxODExODc0MTRmNmNiMWI0NGEgbGVnYWN5LXRydW5rCiszNzA3NCAxNmRmZjMwZTY2ZWMwZTVkOGM4Yjc3OGRhY2RkMGVlN2FlMzBiMDc3IGxlZ2FjeS10cnVuaworMzcwNzUgYzliOTkzMDhiMGU4Y2JmOTBmNTg2ZjAyYzhjYTE5MTQ1NDYyMjQ0MSBsZWdhY3ktdHJ1bmsKKzM3MDc2IDk0MjMwZjZiNWViZTUyZjYzMmQxMjczMmRmNTRlYWQ3MDhiMDhhOGUgbGVnYWN5LXRydW5rCiszNzA3NyBkYjFiYWZhOWI2NTYxMzZiODdjZTdiYzEzMDQwNTE5Mzc0MjY4OTMyIGxlZ2FjeS10cnVuaworMzcwNzggZDk3NjVlYjU5ZWRkNzg1NWNiNjY0Y2QzYzI0MzcyNWEwZjJhMDdhNCBsZWdhY3ktdHJ1bmsKKzM3MDc5IDhkNzcxMzRhYWI4MmY0MDhlMjZiOGVhNzgwOTY0ZWUzMjZmOTc0ODcgbGVnYWN5LXRydW5rCiszNzA4MCA2Yjc0M2NiYzQxNzEwZTYyNjRlOGNmY2I0MjRjYmY5MTViZjMzMGZlIGxlZ2FjeS10cnVuaworMzcwODEgODI1MmU5ODljYmIxNWJmNDc2YjdhYTUyZjJmMDU0NGNmYWNiMThlNyBsZWdhY3ktdHJ1bmsKKzM3MDgyIDA2NmM3ODkwY2Q2MTU1MzBhYWFkM2FhMTk4NTk1YzIzYjEwNjFkZjggbGVnYWN5LXRydW5rCiszNzA4MyBkODYxYWE4NzQ1MjU1ODg3ZTFhNjNhODFjOTVmY2NjYmI3MGZmZTgyIGxlZ2FjeS10cnVuaworMzcwODQgMzIzNWU3MzliZGExMmVmMTg5NzdjMDhjYmIxODUxMDM4MmY4NDJmMyBsZWdhY3ktdHJ1bmsKKzM3MDg1IGFjZDliZjJlM2JjZjUxNTliZmZlZDc5OTI3OTQ1ZmJiZTFmOTU4ZjEgbGVnYWN5LXRydW5rCiszNzA4NiBlNjMwNGQ2NmQ5NDViNTY5NzlkMzg3Yjg5YTYxNDM2Y2I5OThkYWIzIHJlbGVhc2UyMy1tYWludAorMzcwODcgOGFiZDMyMmEwMTNhYjY4Y2RjYWE2ZGUzMTA0YjkzZWFkYjNmNzUwMyBsZWdhY3ktdHJ1bmsKKzM3MDg4IDg0OTMxMDgwZTA1Y2MzZjk5OThiNzU0YmM4OTIxZWU5OTE3Nzg2MTMgbGVnYWN5LXRydW5rCiszNzA4OSA1N2E2NmQ3MDBjN2NmYmFhNjZhM2I0N2NkYzZlZGEyYTNiNjA5ODg5IGxlZ2FjeS10cnVuaworMzcwOTAgMGE4ZDM5YWNhOThjNWZlY2NkZjdjOTE3NjFlNzQwNDdmMDgwZTRhMSByZWxlYXNlMjMtbWFpbnQKKzM3MDkxIGExY2Y0YTI5YWMzMDA3MDg3ZWE4OThmZTk5NjI1NmYxMTM4MjMwM2QgbGVnYWN5LXRydW5rCiszNzA5MiA0MGI1YWVlMjBiODMxNzJlZDM0YjQxYTgxNmZiYTdjYTYyOWIyMjkxIGxlZ2FjeS10cnVuaworMzcwOTMgN2ZlYzA2NjJjZjRhYTJkZGZlNGRiN2ZhMGE1NDk4ZGFlN2MwMTc0NyBsZWdhY3ktdHJ1bmsKKzM3MDk0IDljNTcwYWY1MzU2ZTdlMWI3NmQ5MWFhZTQwM2JjMDNjZTYzOGE3Y2YgbGVnYWN5LXRydW5rCiszNzA5NSBkZWE5OGVlZDhjZjBjOGFmZjM2Mjg0MTE3YzU4MzI0N2Y4OTNkYmE4IGxlZ2FjeS10cnVuaworMzcwOTYgNjk5NzZjZjU5MTQ5NWZlODRhZWNhOWU1YmY1NjUyMTRlZmQ4NDA0NSBsZWdhY3ktdHJ1bmsKKzM3MDk3IDc3ZDM2NDJlYjg3YmU3YTg3Mzk2ZjE0MTMxYmIyNzU4YjczMDYzN2IgbGVnYWN5LXRydW5rCiszNzA5OCBhYjM0OTgwZmZhMTY5MGE5NTNiZjMyMTBlM2JhNzNhZjU1YWRkYWM4IGxlZ2FjeS10cnVuaworMzcwOTkgZjlmNGIxOWRkNzU1ZDkwMWFiMTk1NzY3OTU1OTcxY2YzYjE1YzQxYiByZWxlYXNlMjMtbWFpbnQKKzM3MTAwIDIyYjYzZWQyZDViMjI3M2ZiZTllYTBjYjA5ODA0ZTc1ODcxZmQxZTggbGVnYWN5LXRydW5rCiszNzEwMSAyZTA5NjZkYmQ2NzhiMjhlYTg1ZDlmMzg4MTg5ZDkxMTlhMzhhMGViIGxlZ2FjeS10cnVuaworMzcxMDIgZjk4ZTU5ZjJmODlkMDkxZTQwYWVmNTZkYzRiNjM1MDk4MzYwNzNmZCBsZWdhY3ktdHJ1bmsKKzM3MTAzIGZiOTg2OTA0NGJiYTlmNzIxNzg5YWNlY2ZlZGZlOGM3Y2YwNjQ2NDAgbGVnYWN5LXRydW5rCiszNzEwNCA3MTQyNzkxNTc5NmVkYzFjMzM1Mjg4OWUwY2JlNWU4YWE1ODkwOWRiIGxlZ2FjeS10cnVuaworMzcxMDUgMmNhYTZmMTlhMmU2NmNlY2U4ZGIxYmIwYThhYTI5MWI0NDc0NTNmOCBsZWdhY3ktdHJ1bmsKKzM3MTA2IDU2MTcwMjM1MGUwOTgwN2IzYzUyOGNmOWJhMDI5OTBhYmJmNTU4MDkgbGVnYWN5LXRydW5rCiszNzEwNyBjZDJhOTVjZmM3ZWI0OGFhZjVmZmE0M2ZiMzQwN2VkMTcwNTYwODdlIGxlZ2FjeS10cnVuaworMzcxMDggMzk1YmIzNzQ2ZDFkNGUwNjY0NzgyNThmNzUwYjQwYzI1MDI4MmI3YSBsZWdhY3ktdHJ1bmsKKzM3MTA5IDg0YWNjNzdjMDZiODg4YTg2ZmE0OTFhMDAyZWUxNWNhNTQxMDkwN2EgbGVnYWN5LXRydW5rCiszNzExMCAwMzQ0MDI3MjAyOGM3OTczNGI5ODFmMmU1MWIyYWY1NzAxZjgxNjQzIGxlZ2FjeS10cnVuaworMzcxMTEgOThkYjA5ZmQ0NDNjZjY3YjVhZWIzZTZhMDhjMmMzYTJhN2RmYjUyZSBsZWdhY3ktdHJ1bmsKKzM3MTEyIDFmOWI5YzIyNmI0M2VkMjBjYjYxZTZkMjFhZWE2Y2I5NjZlOGJjZDMgbGVnYWN5LXRydW5rCiszNzExMyBjNjU0MzM0ZGM5NjE4ZWUwNWNmZjI1ODM3MzFiMWQwNWU2NWY2YTA5IGxlZ2FjeS10cnVuaworMzcxMTQgMTJlZjU2Zjg4YTkwYmU1MzY4YzI1YzUzNzMzNzM4YWU3NGYwN2JjZiBsZWdhY3ktdHJ1bmsKKzM3MTE1IDk1NzQ0YTQyMDhhMjcwYzA1YjljOTU0OGMxMTE2NTliYjBkODMyM2EgbGVnYWN5LXRydW5rCiszNzExNiAzNzdjNTE4ZDg0ODM0Mzk3NmI5Mjk0NzkwMTMyZjYzYTM4ZjFjNmYyIHJlbGVhc2UyMy1tYWludAorMzcxMTcgOGRkMzVmNWM3OTI4MmE3MjJiNjk1ODRlMThmMDZmMzk3MjAyNDE3MCByZWxlYXNlMjMtbWFpbnQKKzM3MTE4IGI0Y2I0OTgyOWQzZWVlZGIwZjRiMWMyNzcwNjg0ZWQ1ZDhmNWQ4MGMgbGVnYWN5LXRydW5rCiszNzExOSAzZmJkMmQxY2E1YmI2MGQzYTY3MDliMTdlYjljMWFmMDY2YTgxZDMzIGxlZ2FjeS10cnVuaworMzcxMjAgNjY0MWQwNTQyNTkyN2YyYWZhNmMxMDBlMGY0MjhlMzU1MjFjOWIxZCBsZWdhY3ktdHJ1bmsKKzM3MTIxIDExYTRmYmM4OGE4MDBjNWUxYTM0OGI3ZjVmZDQ5NjFiNjIzYjM1NGEgbGVnYWN5LXRydW5rCiszNzEyMiA5OTNmZDhhY2M5MGYyODQ3MzNhMDg4YTVkYTBkOGRhMzRhYzVlNmViIGxlZ2FjeS10cnVuaworMzcxMjMgYjYzYjMwODIxZWY0NzhkOTBlYjhhYWU3MDc0MjNlM2IzMjg3YzA3ZSBsZWdhY3ktdHJ1bmsKKzM3MTI0IDk2NWU5NmUxNTI5OTA1NjM3ZTdiZDVmMmYxN2I5YjgzNGMyNzM5YzIgbGVnYWN5LXRydW5rCiszNzEyNSAxY2Y3ZDcyMjVhOTk2Mzg3YzcwNjU2ODE4MTQ1ZmMxNTIyY2M5ZTk3IGxlZ2FjeS10cnVuaworMzcxMjYgN2ExZmIzMTZlNjU1MjJkMTZjNzY3NGE3ZmJmMmY4MDVjZTJiYmEzYSByZWxlYXNlMjMtbWFpbnQKKzM3MTI3IDhjZDU3Nzk2YTljZjgxMGJiZWQ4ZTE3NTQxZmUxNDNiMDY4ZDA1MDYgbGVnYWN5LXRydW5rCiszNzEyOCBmMTA3MmEzMGJiNTgxMDhlOGQ3NzZlN2ZhMTBjZDNkM2RiNzdmZmE2IHJlbGVhc2UyMy1tYWludAorMzcxMjkgYjA0NTA3MDE3MmNiMmY3NTllMzVjYTQzZDNjYTNmNWYxZjU5MWE5OSBsZWdhY3ktdHJ1bmsKKzM3MTMwIDRlOWVjYmY0N2I2YmE5N2M4Yjc1YzJhZTFlMzU0ZDA3Y2Q4MTgzYzkgbGVnYWN5LXRydW5rCiszNzEzMSBkNjc1ZTNlMGZlNzk2OGVjMTcwNjQ0ODgzMzJmY2JlYWQ3MzEzMTNlIGxlZ2FjeS10cnVuaworMzcxMzIgYTQ3ZjNkMmZmZDIyMTU0ZmY3OGRmOTVmYjYyOGY4YmQwNjNkMmM4MCBsZWdhY3ktdHJ1bmsKKzM3MTMzIDBlZDRmZDdhMGUyZTBmNTAzZjJkZWNiNzNkY2NjNDI0Yjc3NWRlNmYgbGVnYWN5LXRydW5rCiszNzEzNCAzMDE2NDcxYWU1NDg5YmJmOTg3OWMxZDczY2VjMmZiMGMwM2MyNmU0IGxlZ2FjeS10cnVuaworMzcxMzUgM2RiZGJkNTcyZDk0MTI5MjdlODgzNjUyMDMxMGUwNjYxMzVlZDkxMyBsZWdhY3ktdHJ1bmsKKzM3MTM2IGJhYzk5N2I3OWIxOTI1ZDZiODkyZDNmOGI0Y2Y5ODBiODMyN2U1ZjEgbGVnYWN5LXRydW5rCiszNzEzNyA0Y2E5ZmEyMzUzYmZhNDNiMzg2ZWRiZWQyYmQ5NDgwNGY1YmUzMDI1IGxlZ2FjeS10cnVuaworMzcxMzggMjcyNzcxOGU5ZThmNDI2NGZiNmQxN2ExN2RmMTk4ZTJiYTFjZjNkMCBsZWdhY3ktdHJ1bmsKKzM3MTM5IGExMmQ5ODRiZDk2MmQ5NTJkY2EwN2ZhNjRiNDliM2RiOWQ0OTRiMGUgbGVnYWN5LXRydW5rCiszNzE0MCA4ZDFiNGNkOGExMjQ1NGVmNmNhYTBhOWM1MDFjZDVlNWUyZWNkYjVkIGxlZ2FjeS10cnVuaworMzcxNDEgMGM3MzQ5MzJjNmY0MWVkMmQ1MGZlM2MwNjdjMjBiN2RiN2QyN2E0NSBsZWdhY3ktdHJ1bmsKKzM3MTQyIDJiMTM2NDQxMDM1YzgzM2VlNGJiMjVjYWE3OGMyYzAxZWM3OGRiOWMgbGVnYWN5LXRydW5rCiszNzE0MyBiMjVjYjIwNDVkYWNiMDk3ZGQxMTNlZThhZGQ3YzExMGFlNjc5NmE3IGxlZ2FjeS10cnVuaworMzcxNDQgODI2YWQ4OTZhN2E1YzM1YmEwNGI1MzcyN2M1MmJhN2QxMWYyNmQ1MyBsZWdhY3ktdHJ1bmsKKzM3MTQ1IDRhZmYxZmJjZTc1MjRmMWM0OGY4ZDEyYjE3MWIwZjk3NGZmNzEzMmYgbGVnYWN5LXRydW5rCiszNzE0NiBlZmY3NjZlMjljNTUyNWEwNzA1ZjJiZGU2YzVkYmU3ZTk5MmU2MjQwIGxlZ2FjeS10cnVuaworMzcxNDcgMjc0N2RiZDU5MzhiNTZmOGQ5NzUwMGVlZGY0NmEwMWJhNzY5NWZmNSBsZWdhY3ktdHJ1bmsKKzM3MTQ4IDM0NWZhYzY2ZGFhOWIxNzNkZmVkMmQ4YTM5MWFiYzE1YzU1NzQ4OTQgbGVnYWN5LXRydW5rCiszNzE0OSBlZTcwM2EwOTRkZmJkZjEwMGE5ZGJkOWMzNTAzN2RjZTY5MzJmM2U0IGxlZ2FjeS10cnVuaworMzcxNTAgZTU4NmNiZWNkZWJhNjI5MDMzZDc4NWQwMTUzMzUxNTQ2Nzk0NmIxZCBsZWdhY3ktdHJ1bmsKKzM3MTUxIDQ0OTE0MWFhMDExYzlhNDM2MTM3ZGM5OTk4MzE3YmI5NTEyOTU5MDcgbGVnYWN5LXRydW5rCiszNzE1MiA4YWFkNTI5NmZlYzk2MDM0NzA5NWUxYzQ3NWY4MDRjZjIwZjQ2Nzg5IGxlZ2FjeS10cnVuaworMzcxNTMgZmY4OGRhNDAwNzc4NTg5YzMyOTM4MmI5ZWZmZGVmMmUxNzZjOWYyZSBsZWdhY3ktdHJ1bmsKKzM3MTU0IDhkMjc2NTUxY2VhOTcyYTBiN2UxYzE3NDI2YTY0MjMzOGU2NTFmODQgbGVnYWN5LXRydW5rCiszNzE1NSA0YjAwYWUxZWZkZDg2ZGMzOTM0NTM0OTA0ZjVjZjI2NDk4ZTgwMDg5IGxlZ2FjeS10cnVuaworMzcxNTYgOGE0YzMwNTRhMzZjOTQ2ZjQ4MTM4ZGM2YWU4YjVmM2RlYjdiYWMzNSBsZWdhY3ktdHJ1bmsKKzM3MTU3IDVmYWI0ZjQzYjk0ZjczNzFiNWMwMGRhOTZiYzdlODg2NDRhYmEyMDggbGVnYWN5LXRydW5rCiszNzE1OCA2N2ZiYmViMWUyMTgxZTAwMmU0MTBhODRiYjk4Zjg5MWYyNTVlOTkxIGxlZ2FjeS10cnVuaworMzcxNTkgZTA3YTYyMzRiNzNiMWY0Nzc1ODBmYmNiMjdkYTI1MTU4YzYwMmYwMyBsZWdhY3ktdHJ1bmsKKzM3MTYwIDNlMjVkNmUzZGExOTQ4NWI5ZmY4YjA0OTFlODI3MTllM2E2Nzc3YWQgbGVnYWN5LXRydW5rCiszNzE2MSA5NmQ1Mzg0ODhhZWVhYzNiZmU2NjM5YTc5NDE0YjY3MDc0MWY5ZGU4IGxlZ2FjeS10cnVuaworMzcxNjIgYTM3YWU3ZGJhODE0YjczZmE1MzAxODY3YTVjNDZlYmJmNzI0MzI5NyBsZWdhY3ktdHJ1bmsKKzM3MTYzIGIyOTEwZTQ3OWYwN2IxMTAzMTQzNGIxMTU0NDY3MmNiYmZlMDNkMmYgbGVnYWN5LXRydW5rCiszNzE2NCA3N2RlMzg1MzRkMjYzMjg3NjQ2M2Q1YmVhYTk3OTYzODkwMzMwOTdhIGxlZ2FjeS10cnVuaworMzcxNjUgYjFjMjZlODljNDY0ZDZhODljNjdiYWNlZWUxNTk4ZTU5NGNhMDBlMyBsZWdhY3ktdHJ1bmsKKzM3MTY2IGUxOWIwMDk3NWQ1ZTg2MmYwYWVjOTgxNWYyNTM2YzM1OTk3ZWMzOTcgbGVnYWN5LXRydW5rCiszNzE2NyA1MjFiODc5NWRmOWJlNDg4MTAwMmExNzc5YmEzZTU1MDYxYmNiODczIGxlZ2FjeS10cnVuaworMzcxNjggNGIzMjQ4OWMzNGE3YTExZDViY2E4OTVhNjZmMTc0NDc1MDgyZmVkMyBsZWdhY3ktdHJ1bmsKKzM3MTY5IDc4YjU3OGM0Njc3MGU1MGU2MDI4ZmNiYmU3ZjU0MjY3MmM5ODA2NWQgbGVnYWN5LXRydW5rCiszNzE3MCA3ZjYxNzAyNTU2NWU4MGYwNzU1NWVlOTM3NzcyY2M2YWQ3NGIzNmEyIGxlZ2FjeS10cnVuaworMzcxNzEgY2QxNTY0MjMwOTQ3OGVkNWUwZGE2ZDM1MjQ2OTVkMzgxM2Y1MjhhNSBsZWdhY3ktdHJ1bmsKKzM3MTcyIGYyODA3MmU2NGY4MTc2NzQzZGMwMzhiYzNhZDRiZTUxMmI5MWQwZmUgbGVnYWN5LXRydW5rCiszNzE3MyA1OTgwNTAwMTdiNWU0MDFkMDIwMjEwYTFhYTQwZTNiNTM4Nzk4ZDUxIGxlZ2FjeS10cnVuaworMzcxNzQgODU3OTg1OWYxOThjNzhhYzE0M2VlNjdjY2NmOTJhNzY5ZDllYjUyNSBsZWdhY3ktdHJ1bmsKKzM3MTc1IDU5YmQxMjFlZWViNzFjNzVjZWY4YTNjODg1M2Y3ODhmMjUwODcyYTkgbGVnYWN5LXRydW5rCiszNzE3NiBiZjBlZjVmYzQ5ZjFlODc3MmE3ZmNkM2Q1Zjk5MTk1YTBmZDIzMzhmIGxlZ2FjeS10cnVuaworMzcxNzcgNTQyYTVlZmE0ODgzYmEyNjY4ZDVhMDQ0NDdmNDA3YjM0NjIzNDIxNiBsZWdhY3ktdHJ1bmsKKzM3MTc4IDJmNTJkZjE3Mzk1Mjk1YjY0MjYzMDM4YTBiYzc4ZTkxZjBmN2FmZTEgbGVnYWN5LXRydW5rCiszNzE3OSA5NmJiNDY2OTFlODYwNjMyZDIzMzk0YjNiYmNiMzgwMDVhMDY0M2Q1IGxlZ2FjeS10cnVuaworMzcxODAgMGIxODFiZjIzMGM5M2Y2NjE3YmI1MDNmYjRiMDViMTc4NzU1ZWQ3NCBsZWdhY3ktdHJ1bmsKKzM3MTgxIGNmMGVhMTk4NjlhZjVlYTY0OTdkMzU4OGE4ZDNhYWI0YmMxNDZiNTcgbGVnYWN5LXRydW5rCiszNzE4MiBiNTc2MTJmNjFiYTNmM2VkZTFhOTJlMjc1YmYwNzI1ZDE1ZWYzMDRhIGxlZ2FjeS10cnVuaworMzcxODMgNmQzYmRkMTliZWViMzk5NDZiYzY5MDgyODI3OGFjMzc1NmMyYjljYiBsZWdhY3ktdHJ1bmsKKzM3MTg0IGQ1YjA5NzYwOGM5ZGVjYWM1ZDIwODNjOGQ2N2Y4MTJiZDAwMzlmNmIgbGVnYWN5LXRydW5rCiszNzE4NSAzZWU1ZGVjMGNhMDdjY2MzNWZlMTJkMTk1NDBhYzZhM2E4YmI4NTg0IHJlbGVhc2UyMy1tYWludAorMzcxODYgMWJhNzQ2OWEzYjQ5YjRkMGQ0ZjJmZjFkNzIxZTdhMmE5Yjc4YjEzZSBsZWdhY3ktdHJ1bmsKKzM3MTg3IDAwYjg5YWI0NGNmZDdjZjQwZWYwZTQxYTRkMTA0ZDllZDMxNDE2ZDYgbGVnYWN5LXRydW5rCiszNzE4OCBhMjVhZjY4ZDcxZmM2ZDRkNzQ3YjEwMmFmMTE0YzRmMjk0ZWI3NWY4IGxlZ2FjeS10cnVuaworMzcxODkgMTc2OGFmZjkyODY0ZDY4YzhiZGU5Nzg1ZGVjNmMzMjIxMzA5ZTljMyBsZWdhY3ktdHJ1bmsKKzM3MTkwIDc4N2ZmZjUxYmYyYWFkMjgzM2E2M2VlOWY3NzgzNjA2MmEyNzA0MzYgbGVnYWN5LXRydW5rCiszNzE5MSA1NDUyZDRlY2RkZDBjNDdmZmRiMzI1MDRlZGMzODc0MTAxYWExZmMwIGxlZ2FjeS10cnVuaworMzcxOTIgZmVlNTkyZmI1NjQzNmQ5MjkxOTk4ODFjZDgwOTM3NWE4NjYxODA4NCBsZWdhY3ktdHJ1bmsKKzM3MTkzIDk3ZmNhNzM1YzhkYTZmOWRiMWE4ZTc4ZmYyYTk1NmU5MzFjZmEzZDIgbGVnYWN5LXRydW5rCiszNzE5NCAyMDg4MTUwNWMxNDI3MzkwZDdkZmFhNzU5Nzc3N2EwMjViMmE4M2RmIGxlZ2FjeS10cnVuaworMzcxOTUgZDUzOGVjZjBiYzY5ODRhZGNlZmI4MTcxNDY2NDYwNzAxYjJlNzIyMSBsZWdhY3ktdHJ1bmsKKzM3MTk2IDA2MjE3N2RlODY4NThhN2UwZmFlOTVjMjEwOWRmNWFmYTU4MGE1OWQgbGVnYWN5LXRydW5rCiszNzE5NyBmYzBiNDU3NTU3NDMyNzY1MTE4NTdhZWQzZTUwOWE3ZTMyNDVlNTBkIGxlZ2FjeS10cnVuaworMzcxOTggMDQyNDVlZjUzOTQ5YzFiZDMxMTE2NmQ0OWQ5ZTJlYzFiYzM5ZDcyMSBsZWdhY3ktdHJ1bmsKKzM3MTk5IDUwNWM5MDYzODUwZTRjNDNiMGFmNDE2Nzc3MTllM2I2NDczZmRiZWQgbGVnYWN5LXRydW5rCiszNzIwMCA4NGZiYWFhMjAzNThhNzBlZjEyZTMyNjcwMjRjNGE0ZGNhNjc1YmUxIGxlZ2FjeS10cnVuaworMzcyMDEgMDVjMTI1Yzk4NzY3MjA3NWI1NjlhM2ZkMjY0MmRlMTU2OGI1OWM1NCBsZWdhY3ktdHJ1bmsKKzM3MjAyIDAwZTYxOTg1MWE1Njk3NDhhZDQ3YmEyNjAzNmM0NTI3NzI0M2QzZDYgbGVnYWN5LXRydW5rCiszNzIwMyBiN2FjYjk3MGY1MzY1MTNkM2U0ZjEyMzE4ZGJkMGE2ZWNlMGUyMmMxIGxlZ2FjeS10cnVuaworMzcyMDQgZjMwOTkzZDA1ODkwOGViMGI3YWUzZTE5YTc5ZjViOTU4YmQwZGNjZSBsZWdhY3ktdHJ1bmsKKzM3MjA1IDY4ZTY4ZWQ0NmYwZTlhZjc0MmJhMDMxZGY0ZWRhY2U0MjI4ZTA1MDIgbGVnYWN5LXRydW5rCiszNzIwNiBkOWUwMzkzOGEzMzNiZGI5NTQyZGY1MzI1ZDc4MTljOTM3ZDYzZTAxIGxlZ2FjeS10cnVuaworMzcyMDcgZDVjMzRkYmMzNjE4MmY5ZmU1NGZhOWQwYmIyM2NiZGU4NmRkYmMwYiBsZWdhY3ktdHJ1bmsKKzM3MjA4IDBhNzlkN2E5MDQwYzc2OWFmYzVlYjkzNDRkMGMwZWViOTkxODY5YWYgbGVnYWN5LXRydW5rCiszNzIwOSBlNWI0ZmU5N2Y3NGQxNTg2YjE5MDVmNjVlYWM4ZTc1NzA2MGJlYTBlIGxlZ2FjeS10cnVuaworMzcyMTAgMWE1NGZjZjQ4ZmU0ZTY0NGZlMThhYjFhNTY3YjQyZDQ4NzgwNDUyZSBsZWdhY3ktdHJ1bmsKKzM3MjExIGRhZDgyNzc5NDc0NWNiY2NkNDExY2U4NDgwZjU1MjM0ODk0ZmNmNzEgbGVnYWN5LXRydW5rCiszNzIxMiBhZGM2NmQzMTRjNzhlZDE2ZGVhMTFlNDQ1ZThhYmEzMzY2YjUyNTA2IGxlZ2FjeS10cnVuaworMzcyMTMgZGRiYTE1NGMwZTAwMGFjNDU2YjBlNzNlNTU5ODhjNDc1ZmJhOTg5YiBsZWdhY3ktdHJ1bmsKKzM3MjE0IGM0NGYwODM0NjVmOWM1YWVlMWFhM2M2MjA2OGVmZmFjNzUwZDZlNWEgbGVnYWN5LXRydW5rCiszNzIxNSBjZmE3MmE4ZGUxNDM5OTBjYWFlYmFlYWNkNDI2ZDlhZTNlOGUzNTMwIGxlZ2FjeS10cnVuaworMzcyMTYgMTI4ZDUyODQ1N2RhNTY1Zjk2ZDlkY2YxZjY0NGE0YjMzNjVlYjFjYyBsZWdhY3ktdHJ1bmsKKzM3MjE3IGY3NDc0ZDMxYmEzZmE5YmYwYzUwNzk5NDQ2ZjliZjI3MTliZjRkNmMgbGVnYWN5LXRydW5rCiszNzIxOCAyM2RmNmNmMjk2NTBkNDVhYWUxYzZiNjJhN2Y5ZWU1NWJiMmI4MmQ0IGxlZ2FjeS10cnVuaworMzcyMTkgOTk5ZDMxY2E4YTE5ZjdkZTA3MTZiM2Y3YjgzYmIzMGUwNTE3NzYwYiBsZWdhY3ktdHJ1bmsKKzM3MjIwIGU1NjE5MmU5ZmQ3ZTdlNDkzZmIwMDI1YTZiZTFlMmU3ZTE2ZjlmOGMgbGVnYWN5LXRydW5rCiszNzIyMSAxZGZjOTdlMmFjZGZlNGVkMDcwZjlhMjhjZGZkMzc3NTFjMWEyNGUyIGxlZ2FjeS10cnVuaworMzcyMjIgOTYwNDAyNTA2OTQwNzJiYjk3ZDgwZWM0ODliMmFhOTI5NWIwZDAyNyBsZWdhY3ktdHJ1bmsKKzM3MjIzIGM5YTgyZTliN2I0ZDE4NTE2ZWEyY2MwZDI0ZThjNWM5Y2NiNGJmMzQgbGVnYWN5LXRydW5rCiszNzIyNCBhNmVhYzNmZTU0MmY5MzBjOGU2MTMxNTkzYjRmM2VjYWIwY2U3YmZjIGxlZ2FjeS10cnVuaworMzcyMjUgMDNiZTA2YmNhMTYwZmJjOWM5YjU4YTgzMTNiZTE1MzQ2Mjk0Y2Q5MyBsZWdhY3ktdHJ1bmsKKzM3MjI2IDI2OGM1ZjgzZmI4NzdhYTQxNzAzZWIzYmVkNTg4OGI4ZTQ4NGEyMzkgbGVnYWN5LXRydW5rCiszNzIyNyAyNmU0MjExODY1ZWQ3YjM5MGY0ZTk0MTEyODlhNmZmZDU2NmU3M2NiIHJlbGVhc2UyMy1tYWludAorMzcyMjggMGY1M2JhMTU5ZTU0ZTIxZWY1NTdjMDQ2ODRjOGU2NmZlZjc0NmYwNCBsZWdhY3ktdHJ1bmsKKzM3MjI5IGIxMGI3YjdhZmMwMGQ5YjA4Y2U4MzM5M2JkNDIwNGEwNTY5NDUzNGEgbGVnYWN5LXRydW5rCiszNzIzMCAzNTQwZTEwNTI1YTFhZWM2N2JiMTYwM2JmODhhMWM1ODg3YmIxNzIyIGxlZ2FjeS10cnVuaworMzcyMzEgZDBjMDFlMGZlMjQ5Njc1N2RjYjZmZjBiODVhZWUxYzNjOTg3YmQzZSBsZWdhY3ktdHJ1bmsKKzM3MjMyIGQ0MTI1NmE2ZjJjZWNjZWNkMjAzMTRiYjM0NGRkNTMxMmY2Nzc0OTMgbGVnYWN5LXRydW5rCiszNzIzMyA1ZjBjN2Y1Y2E2ZjlmMTE5NDExMWI4Nzk3NTgzNzMzMmIyYWNiMjgwIGxlZ2FjeS10cnVuaworMzcyMzQgYWY2NTAwNGY2MjJmYTBkODhlY2EwMzM3ZmFkNzA2MjVhMDYxM2MxOSBsZWdhY3ktdHJ1bmsKKzM3MjM1IGFkNDNkZjE5Nzg0YzVlNDRkMTc0ZTEzNzlhZjZjNzZkYTAzZTllMTcgbGVnYWN5LXRydW5rCiszNzIzNiBiMjBkNDU1NTg2NTM2ZDM0MmNmN2EyZTcxNTY4NDBmNzlmNWI0Zjc1IGxlZ2FjeS10cnVuaworMzcyMzcgNzZhOWJkYTMwMjhlODZkYTQ4YWFmYzU1ODAzODU5YzJhOTBmMjVkNiBsZWdhY3ktdHJ1bmsKKzM3MjM4IGFkYTJhNjZiODZhNGExN2I4NTFjMWVkMDRhNTk2MTNiMzRhOWUxMDMgbGVnYWN5LXRydW5rCiszNzIzOSAxMjQ2NDIyMjAzZTg3ODY1MmM1MDBkYTkwYjQxZTY0OWRhNDM3NmVjIGxlZ2FjeS10cnVuaworMzcyNDAgOTQ2NWZlNjc4MjIyNjY0M2Q2YzU3ZWQ1MTViMmM1ZDk3ZWZlNzY3MSBsZWdhY3ktdHJ1bmsKKzM3MjQxIGFlZTJlZTc0NWYyYzVkOThkODZjMDYyNzNlNjliYmY5NzMxMzFhZGUgbGVnYWN5LXRydW5rCiszNzI0MiA3NTUxYzcyNWZlOTZhMDFhMjQwNjkyODZkMmM5Y2U4NmY5ZGZmYTQzIGxlZ2FjeS10cnVuaworMzcyNDMgZmI2MTQwMzE4MGE4NWM0NzY5MGE1ZGI1NDk3NDc5ZjA2MDMzMDRlMiBsZWdhY3ktdHJ1bmsKKzM3MjQ0IGJmZmQ0OTQzNTRlZTcwMmExYjY5OTQzMzM2Zjk0MjJlNDQ2NDYxY2EgbGVnYWN5LXRydW5rCiszNzI0NSBmMDA1M2E2YTJiZWRkZGI5OTYzZDk3ZDljNjQ0YTBlYmJkOTVmNDQxIGxlZ2FjeS10cnVuaworMzcyNDYgM2UwNjI4OTdkMmU3YTkxMDczNDYyZDNjYzA5NzZhZWNiNjhmMTZlMiBsZWdhY3ktdHJ1bmsKKzM3MjQ3IGRmNDc3MGI3Y2FlZmI0N2I5OTk4MTRjMWJiZjdjOWFhZmJhZmFkYzUgbGVnYWN5LXRydW5rCiszNzI0OCA0Mzg1MmM5NjMxNjA0MTQ5MjcxZDQ0NzQ0OTY0MTlmYmIzOWNiM2MwIGxlZ2FjeS10cnVuaworMzcyNDkgOWYyZGRkZTkzYTYzOTVkNjJkYzcyM2Q1Y2ZjNjIwODVhYzYzYTZjNiBsZWdhY3ktdHJ1bmsKKzM3MjUwIGMyYzQ5ZWU3MjdkMGRkMzQ3N2I4OGQ5YWQwNWI0ZDk5ODcxNDBlNGUgbGVnYWN5LXRydW5rCiszNzI1MSA5NDNjMjJhN2M3MDFiMjczMGJiNWVhOWUyNmNhOGFjNjVkZTNjMThhIGxlZ2FjeS10cnVuaworMzcyNTIgMTEwMDYwNTg3MGZlYjhjN2E4YzEyNGMwMTg3ODE0YTAzODU5ZWYwOCBsZWdhY3ktdHJ1bmsKKzM3MjUzIGM5MTY4ZTc5ZWY0Y2MyZGIyZWQxZjgwZmQ3YWYwMTk4YWIzNjI3NzAgbGVnYWN5LXRydW5rCiszNzI1NCBkMTEzYzYxMzU2N2E5ZTUyYzA3YzQ4OWRiNjhmM2M2MDUwNTAzNjIzIGxlZ2FjeS10cnVuaworMzcyNTUgMjI4MTE0MGQyMGM3NWMzZTJkMDg3N2ZhYzNlN2VhNDY4NjkxNGU5ZCByZWxlYXNlMjMtbWFpbnQKKzM3MjU2IGY4M2M1YTg1NzlmODQ4YjdhMDU5YzM1YjE2NmIxNmU0NDFjMWJjNTIgbGVnYWN5LXRydW5rCiszNzI1NyBlYjliMzgwMjUzYzk5ZDIwMzViZmFmMDI1OWYxNTkxMDdkN2ZlYzVlIGxlZ2FjeS10cnVuaworMzcyNTcgMTg2YjcyNTUwZTUzNTMzZWY2MTc1ZjY0MTFmOTMyYzEyOTgxOTNkNyBsZWdhY3ktdHJ1bmsKKzM3MjU5IGIxNGY3ZWUyNWQ1MGE5MzRmZDUyY2YxNWI5OGFkZTY3ODZkOWI4MGQgbGVnYWN5LXRydW5rCiszNzI2MCA1MzQ2OTNiYjAxMGJjMmY5YmU2N2MwZDEwMmIzMWU3NWNmZjYxODJhIGxlZ2FjeS10cnVuaworMzcyNjEgOThjODAxN2U4NTM1YjkyN2VlMWM2YWIzOTZhZDgyYWRkMDIwZmQ0MiBsZWdhY3ktdHJ1bmsKKzM3MjYyIGQxZjhjNjMyYjYwNWE1ZmI2MGEwYzRjN2U3ODMxOTU0OTAzMDk4NjUgbGVnYWN5LXRydW5rCiszNzI2MyAzZmE3OWNjOWRhNWRhMjkwZTEwNDI3NDRhYTk3ZTU0NjQ5NjVhZTRmIGxlZ2FjeS10cnVuaworMzcyNjQgYjk5NDUzMzVkYTI3MmMyODYzMWRlNWI5ZjBiM2I1NTkyM2MwZGM5ZCBsZWdhY3ktdHJ1bmsKKzM3MjY1IDQ3NDVmODQ3Y2ZhMTQ1MTQ1NTFkODI4ZTM0YjYzM2E3YTZjZmMxM2IgbGVnYWN5LXRydW5rCiszNzI2NiBkZjFjZDQwNzIxNzdkZDJlNTZmZWExMTRmMTM5MDc4Mjg2ZGEyOTRjIHJlbGVhc2UyMy1tYWludAorMzcyNjcgNWVkNTY0OTNmMGIwMTYwMzUzYjJjNTdhNDdlZmU5NzZiZDQ3MDVmMyBsZWdhY3ktdHJ1bmsKKzM3MjY4IDk3YzIwN2RiOTBhMWQwN2RiNjllYmI4NGY1OTJiNDA0ZTAwMWZhMGIgbGVnYWN5LXRydW5rCiszNzI2OSAyMWM3OTM0MGRlZDVkZTAwMzhlYmI3OGRiMzBjYjBmMTlkOTg3N2JmIGxlZ2FjeS10cnVuaworMzcyNzAgNDgzYzBiNGI2MzMyOGYyOWU3OWU3OTViYzhlOTgxODMxYmRiNzE0NSBsZWdhY3ktdHJ1bmsKKzM3MjcxIDZmZjFhNWJjZGYyMmQ0MzA0ZTU5ZWUxM2Y1MGMxOTFiYmNhNjUzOGIgbGVnYWN5LXRydW5rCiszNzI3MiAwNzg0NTU2ODI4NzU3MmUwOGZmYTY3MDhhN2E1YTRjYzA0MmQ3ZjY2IGxlZ2FjeS10cnVuaworMzcyNzMgOGUyM2JkM2Q1YjFhNzBmYWFlYzA4M2E3ZWRmZWRmZjA5MjFmOTQ4OCBsZWdhY3ktdHJ1bmsKKzM3Mjc0IGZjMmNlNTgwMjE2YzhkY2VlZGFlODBhZDdhMmNlMjdkMmY0NWYwMzUgbGVnYWN5LXRydW5rCiszNzI3NSAxMzZiMzg4NTY5YTBjNDYwYzYzODg5MmFhZWM5MjA3OTJkNmY5YWJkIGxlZ2FjeS10cnVuaworMzcyNzYgYzA5MzE4YjAwOTBkNmI5N2I1NWIyMDRjMjY5OGQ0YTE0NDBmM2M5OCBsZWdhY3ktdHJ1bmsKKzM3Mjc3IGUxYWIyYzEyY2Q1ZWYyNWYwZDE4OWQwYzBiNjAxOGI3NjUwZDQ1ZjMgbGVnYWN5LXRydW5rCiszNzI3OCA4MzgxZDA3M2FkMzg2YjMxM2M0ODE0NGUyYWU4YWU4MzIwZjBmYWM2IGxlZ2FjeS10cnVuaworMzcyNzkgZGM5N2Y1ODFmMjMzNDExNjQzNDhlNGFiM2RmMDY1MjliNzMwMDgxMyBsZWdhY3ktdHJ1bmsKKzM3MjgwIDViNmZiYTY0NTRhMDlhYTg3MGNlYjg4ZTM2ZWFmMzA1MzgxMGRlNmUgcmVsZWFzZTIzLW1haW50CiszNzI4MSBhZDAwZjdjMGFkMDc0MjZlZDMyMmIwN2JhZTIzMWQ1NjgwNDM5YWZhIHJlbGVhc2UyMy1tYWludAorMzcyODIgNzY3YTM4ZGNiMzAwOTQ0NmZlZWYzYmZjYzU0ZThkNjg5YTJmNjIzMCBsZWdhY3ktdHJ1bmsKKzM3MjgzIGQ5YTMzZWNiYzdmMjhhYWFiMDcxNjdhOWIyMWE1OTFhOGRlNTJhMGEgbGVnYWN5LXRydW5rCiszNzI4NCAzMGUyNzM4NDFiYWUwYjM4ZDA2OGUyYmIwZmU1Y2RlOGM1NTY2NDI2IGxlZ2FjeS10cnVuaworMzcyODUgYjZlODc1YWE1MDhiZjgyMDFkNzUzZjM1ODViOTMzMTc0ZWU3MmNiNCBsZWdhY3ktdHJ1bmsKKzM3Mjg2IDcxMDgzYTE3MjVjYmU3ODdjYmU1YjIwYzg0NDU1ODgzNzkwYzNmNjkgbGVnYWN5LXRydW5rCiszNzI4NyBiNWY2MTE4MzE3ZDBkMDE1ZGE1OTFkYTc0NDc4ZTk3MTMyNzU5YzlkIGxlZ2FjeS10cnVuaworMzcyODggNjkzMjk0M2RlNmIxZjU5YmY3NjVmOTY1ZDdmNzhhY2NkOTU1MDAyMSBsZWdhY3ktdHJ1bmsKKzM3Mjg5IDNhZmI2N2Q5NzQyYjdkY2Y2MjQ1ZjE3MWExOTRiZjdlNGUzYzk3OGIgbGVnYWN5LXRydW5rCiszNzI5MCBhYjYyZjc2Y2E4ZTJjYzM4NjVmY2VmYmVmZWJmOTY5NWI2ZDVlOTk2IGxlZ2FjeS10cnVuaworMzcyOTEgODQ4MGI3MmFhNjI0ZGEzMzg4MjM1NzRhMzMxM2I4ZWJhNjM4MGU5OSBsZWdhY3ktdHJ1bmsKKzM3MjkyIDU3NDc4YTEzZmJmNjQ0ZDUwM2RhNjZiMjkxMTFkYjJmOTYwYzI5YjMgbGVnYWN5LXRydW5rCiszNzI5MyAyMTM4M2ZiMWE4ZjI5MWNjYjk3ZDEzMjk3MWY3NDdhYzdiYWUyZDA3IGxlZ2FjeS10cnVuaworMzcyOTQgOTZkM2VmYjk0MGNmMzQzYzIxYjM5NTgyMDRjZjI4NmI4NzcwODFkNyBsZWdhY3ktdHJ1bmsKKzM3Mjk1IGNkMDcwZmZjODkyZDE0MDAyOWRkNjJiNTFjMDM1OGQyNTFhODgwMGYgbGVnYWN5LXRydW5rCiszNzI5NiA0YjcwOGZhMGE2MGFiNWQxNzJiODdiNTEzZjYzYTI1MGVlNTExOTIyIGxlZ2FjeS10cnVuaworMzcyOTcgMDZhYmRjZDU3ZmE4ZDM5YzA4Y2QzNzk5Y2NiN2YzYzQxZDIzNjQ0NyBsZWdhY3ktdHJ1bmsKKzM3Mjk4IDY4NTM4ZTEyNGVlMGE5YjNmZTYzMThmNmIwZDZjNTE0MTg3MjRmOTQgbGVnYWN5LXRydW5rCiszNzI5OSAzMDY5N2Y0NDYyODZkMDkxZTk5ZWZmODhjZWIyNDA1ZTlhODZjM2M0IGxlZ2FjeS10cnVuaworMzczMDAgODk3YTM2M2YwZTg2ZmFhN2MwNWZiZWM5MDAxNTA4MGU5OWRlZWNlYSBsZWdhY3ktdHJ1bmsKKzM3MzAxIGZhYzJhNTM5MDZmMTcwNTA2NWE5ZmQwODYzMTdhZGMxYjhjOWE1ODcgbGVnYWN5LXRydW5rCiszNzMwMiBhMjQzMjk2Nzg2Y2U3ODQwMTIwZTUzNzczZDE0NGViNWE2NDE4YzZjIGxlZ2FjeS10cnVuaworMzczMDMgNjI5MjAwZDg4MGVhMjhiYWNkYzE3NWRmMjE2YWFmYjU5MWViNDdlZCBsZWdhY3ktdHJ1bmsKKzM3MzA0IDViMzFiNGMzYjdiYWM1ZDQxYzBhMTMwYTk1NTM3MDE2NWMzOWU1OWYgbGVnYWN5LXRydW5rCiszNzMwNSBlNDQ4OWQ1NmYxMDkwMjA3NDcyOGM1YmY0ZjA4ZjE5YTI5NDU5OGM1IGxlZ2FjeS10cnVuaworMzczMDYgNGRhYTdjNzI1YTc5OGVlY2E4Nzg4MzJjNmZhMjZjNDU1MmZlOWQwMCBsZWdhY3ktdHJ1bmsKKzM3MzA3IGYyNGE3ZmEzOGY0ZjkxYmVmYjc4ZWU0ZjQ4OTRkZWZiMGMyMzBlYmIgbGVnYWN5LXRydW5rCiszNzMwOCA3YmY0M2JlODI5ZjdlN2E0ZGU0NDliZWFlZDgxN2ZkOWU2YmZhNzJjIGxlZ2FjeS10cnVuaworMzczMDkgY2FkY2JmOTYyYTFmZDY3YTQyYzE2YWQ3M2M0NzU5YzdmMmM3NGZhNiBsZWdhY3ktdHJ1bmsKKzM3MzEwIDY4OGQ5ODFjNjIzNGIxMzQ1NWE2NjlhOGZmZTU0NWQzNDY2NzhmMGYgbGVnYWN5LXRydW5rCiszNzMxMSA2NGQ0ZTc5NmIzZGYxMjZlNjQzM2YyOGEwNTY1ZmY1ZTY4YjExN2JkIGxlZ2FjeS10cnVuaworMzczMTIgNTU3MGZhZTFmMDFjZDA1M2EyZDcxY2JlZGNkNzdjN2UxOWU2ZTk3MSBsZWdhY3ktdHJ1bmsKKzM3MzEzIDMyNDY5M2VmMzIwYTU4NzY0NWIxMjU4OGFiM2NhMmExYTExNThiN2UgbGVnYWN5LXRydW5rCiszNzMxNCA4MTYxOGE3ZDQ5MGU3MWQ4MTlkNGZiOGUwZmU5Njc3ZTliNDU5NDZlIGxlZ2FjeS10cnVuaworMzczMTUgMjVmYjllNWY1ZjQ1MzMzMzA3YWI5ZWE0NTQ1YzM4NzNhZjRjMTBlYyBsZWdhY3ktdHJ1bmsKKzM3MzE2IGU4MzA5M2FiYzk1OGQwNGZjNWUzOTM5NTUzNDFmMmQ1ZTRmMmRlYmUgcmVsZWFzZTIzLW1haW50CiszNzMxNyA3YTc1MTZlNmZlYjJmNWYxM2FiNmVmODk3MDUxNWY4YjIyMjQ3Mjg3IHJlbGVhc2UyMi1tYWludAorMzczMTggM2RhYTY2MzNmMDE3ZWY0N2Y2OGZiMDA4Y2QwNWQxNWYzZDA2ZTczMyBsZWdhY3ktdHJ1bmsKKzM3MzE5IDllM2M1MmNhM2EwNGQzZjEyMWYyYjNmZGNiNzQzZWE1MzU0YjY0ZjMgbGVnYWN5LXRydW5rCiszNzMyMCA0ODcyODBjZjcxYjk1ZDAyMTlhODM1NTU5YTQwM2RjOGM4M2NiMThiIGxlZ2FjeS10cnVuaworMzczMjEgMDE2ZDcwMTZjNmM2M2Q1MDVmOTE5MDg0NTUxMmU4ODMyMzRhYTNkOSBsZWdhY3ktdHJ1bmsKKzM3MzIyIDkxYzg3Y2VhNzc2NzExNjBkYTkwMzNkNzYzYzlhMWRhNmY2ZTE3MDYgbGVnYWN5LXRydW5rCiszNzMyMyA5NDk3YzU4MTI2YmU0MDBhZmFhN2QyN2ZkYTlhNmRkNjFiYTc1YmYxIGxlZ2FjeS10cnVuaworMzczMjQgZGNlNjI0OTMzYzM4N2VjMzNiOWNmZjM3ZWY0NjU5ZmUyNjg2YTRjNiBsZWdhY3ktdHJ1bmsKKzM3MzI1IGM4ODI1YTc0ZTQyMWYxZmIzZWM5YWNhZDBkMzgzZDU1ZTY5YmMwODAgbGVnYWN5LXRydW5rCiszNzMyNiA1ODc2NjM2Y2E4YzZjY2ZiMTQwMjQ1MzVhODIyNWZiODBiN2VkNmE5IGxlZ2FjeS10cnVuaworMzczMjcgMjhlZjVmZTBiOGI1ZGUzMTg5ODQ0NGE4NzJkZGUxMWI1NjBlYmQ5NiBsZWdhY3ktdHJ1bmsKKzM3MzI4IGQ4YTI2MWE3NzAyODNiMDMxNGFkNzhlY2Q4MGQ0YjkzYjM4NjEyN2IgbGVnYWN5LXRydW5rCiszNzMyOSBlYjUxNzI4ZWQxMWYwZTMwOGZmMDU1Y2M3YjkyMWU1Yjk1ZWNmYzk1IGxlZ2FjeS10cnVuaworMzczMzAgNDc3Y2QwZjYyMmI5ZWRhZWIxZDE0ZTcyODllMjE4YzM4MmY0ZTQ4MSBsZWdhY3ktdHJ1bmsKKzM3MzMxIGUyM2NhOTRlZDhlZGIxZjFkNzMxMzhiYjAwZGNiMTE4NGEwYmEzZDkgbGVnYWN5LXRydW5rCiszNzMzMiBhMDQ1MTVhOTg4MzE1OTJlMjA4ZTU2N2VkNmJmMTEyYzExNGJiYjIwIGxlZ2FjeS10cnVuaworMzczMzMgOTI1Y2Y5YjMyODViZmI4YTM5MTdjOTc2ZmZlYjcwZTI4ZWM3NjIxMCBsZWdhY3ktdHJ1bmsKKzM3MzM0IDc0NzNhMTk1ZDIyMzEyMjM4MjBkNDkzMGIyYjdkNDQ0YzJjOTgwNjMgbGVnYWN5LXRydW5rCiszNzMzNSA0MWRiZWU1ZWQyOTU4NmNiOTg0M2YwYzEwZDhlYzQ3MDk2ZDkzNDVkIGxlZ2FjeS10cnVuaworMzczMzYgMzY3NjdmZTI0MjUyYjE0ZGExNGMwNTMxOWE1MzMwNDE3MmM1YmY3OSBsZWdhY3ktdHJ1bmsKKzM3MzM3IDNmODZmMmJiOWI1NmU4NDczYzQ4MjA0MjNkMjI1ZmU1YmU2Njk5NWMgbGVnYWN5LXRydW5rCiszNzMzOCA3ZmQyMmVjZGM5ZGIwOTAzNTBkMjRkODc2OWEwZjI2MDY1ODdlNjA5IGxlZ2FjeS10cnVuaworMzczMzkgNGQxNjc4NWJhNWRjMWM0YmZkN2IxYTUyMTM1NWNkMjM2ZTcwY2E3OCBsZWdhY3ktdHJ1bmsKKzM3MzQwIGU4MDhjZDMxZmJkYzZhMDllYTFmMzFmZjExYjdlNjUzNGIxYzRmOTYgbGVnYWN5LXRydW5rCiszNzM0MSBhMjIwMDczNTM2ZDY5YTc1MmU3YWRhODI1YzMzZWQ0OTYwMWExZWJiIGxlZ2FjeS10cnVuaworMzczNDIgMWIzYWM2NzRhNTdjYmZmYjMzZGM2Njg5NzgyMWE5ZjEyMDlhN2FhYyBsZWdhY3ktdHJ1bmsKKzM3MzQzIGI4N2VhYTQ2YzljYmYxZGU1NTc2YTAxZDc3ZWU2NGQxNzBlMmZmYmYgbGVnYWN5LXRydW5rCiszNzM0NCA1MzczYTVhZWI4MDAyMmIzZWQzMGViMzA4MjgzNjQ4MTViY2E3YmI1IGxlZ2FjeS10cnVuaworMzczNDUgZWFjZGMyOTYwNmQ4MTQ0OTJlNzgzYmJkNjllMTdiOGY4ZTU0ZGVjZCBsZWdhY3ktdHJ1bmsKKzM3MzQ2IDI2MjM2NjhjNWZmNWI0ZDYwODZmYWY4YmY3MjM5OGM5MGYyZTg2OTIgbGVnYWN5LXRydW5rCiszNzM0NyBjOTNkMmJlYzY4YmVjNDhjNWRhNjIyN2RlYjA5YWJmNDc3MDYwNmZjIGxlZ2FjeS10cnVuaworMzczNDggMThjN2MxN2NjZjg2MzE1NzU0ZmZmNjlkZDg3NmQwNjhlZTEwYjcyMCBsZWdhY3ktdHJ1bmsKKzM3MzQ5IDgyM2Q2NDViMzJiZmUzZjM2ZjRjOTY3MGU3ODFlNGNhMWJjMjIwYWEgbGVnYWN5LXRydW5rCiszNzM1MCA1M2MxMzU3YzljNjNkNTRlODJiYmI1MGZjNDlmOTAzNGYyMmZiMTE5IGxlZ2FjeS10cnVuaworMzczNTEgY2ZiMmY1ZTA5NzQwOTM2Njc3MjRmZjY1MzgxZGIwOGM0NjAxODRlYiBsZWdhY3ktdHJ1bmsKKzM3MzUyIDcxZWQ0YjM1ZmRjNDg4NzZkMWFiZTkxMzljOGU4NmU3MWU5OWY0MDAgbGVnYWN5LXRydW5rCiszNzM1MyA0Y2IxMDE2NTI1YjdkZWY1YmQ2NjlmNzIwYmFjYWI1ZWRiODBmZTcwIGxlZ2FjeS10cnVuaworMzczNTQgNzM4NWJhMjY4MGViNzFiZjc5ZmM1ODVjMjkxMWM1NTZlYzkzZTIzMiBsZWdhY3ktdHJ1bmsKKzM3MzU1IDBjMjk5Y2FiZjRmMDZjODQ3ZGE1MjQzYjY0ZWIyYjUwMjcwYzE3ZGIgbGVnYWN5LXRydW5rCiszNzM1NiAyOTRkMzcwZTQzZDE0ZGQ5MTU0YmM3ZWUyOTFiOWRiNDRkNTg3ODRhIGxlZ2FjeS10cnVuaworMzczNTcgNDMzNjA2ZTk1NDZjMzViOGU2YjgzZTg2YzY4OThmMWMyNGQ4NWU3OCBsZWdhY3ktdHJ1bmsKKzM3MzU4IGQ5ODRjYjdlMjM1MjM2ZmE3ZmY2ZTYwNjI4NTMwYTAxZDU0YTRmMjQgbGVnYWN5LXRydW5rCiszNzM1OSAyZDZlMTg1NDA4MmU5NDg1NDAwOTQwM2NkNTYxOWJlMDdmOThjYmYyIGxlZ2FjeS10cnVuaworMzczNjAgOWUyYjk0YTNiNWRjYzBmMThmYjkzZDVkZDBmYjQ0NWQ5ODE2YmQzNSBsZWdhY3ktdHJ1bmsKKzM3MzYxIGMzYWI2ZjQwYjZlOGJiMmFhMzMxODY0NDgxOTVlYTE5ZGZiMjI3ZTcgbGVnYWN5LXRydW5rCiszNzM2MiBhYmJkYmJhNTZhOGI3M2QwMzVmODQwYjVjNzczNjkzZjU2MTAzZDdiIGxlZ2FjeS10cnVuaworMzczNjMgYTRkMzY3M2JjZDY2NDczMDY4YjJlZWE0NjM0NzE5MmZiMGYwZGYxNiBsZWdhY3ktdHJ1bmsKKzM3MzY0IGRhMWRhMzMxZjY0ZWY4ZWRiZjk1YmU3MWEzNTk0ZDY2ZjZjMzlkNmEgcmVsZWFzZTIzLW1haW50CiszNzM2NSBhZjliZWRkNWE4ZTcyMTA2N2UyNjRmY2JhMjc0ZTBkOWE4OGZiYzRkIGxlZ2FjeS10cnVuaworMzczNjYgYTcwYjNlZTJlMzBiODlmNTliMDg4MzA4YjViNGFhYTRjMDEyYTUwMCBsZWdhY3ktdHJ1bmsKKzM3MzY3IDQ1YzU3NDJjMWUxM2NhNGIzZWI0ZmNhOTgxYzNkNjBkOWY0MGMxZmUgbGVnYWN5LXRydW5rCiszNzM2OCA3OGMxYzAzNzc5NjM3ZmM2NDA2MmRiZmQyMDNmYjk2N2Q3ZmUwYjQ2IGxlZ2FjeS10cnVuaworMzczNjkgY2MwYWUwMzc0M2I4ZTJkYTM5MjQ1MDhmMDUyZjk5YTM4ZGIxYzgxOCBsZWdhY3ktdHJ1bmsKKzM3MzcwIDRiODE5OGE3NDg3MzEyYjg5NTM0YmZlYmY5ZDg1NDBhNWExZTE1ODEgbGVnYWN5LXRydW5rCiszNzM3MSA3MjVjNDQ0MjFhNDJmNTliNzllMzgyNmIyYTAzZjRkZmM4OGRkNTFmIGxlZ2FjeS10cnVuaworMzczNzIgOTRmNTAwZWJmNjBhNDVmNmU1OGNkMTE1ZTRkOWQ4MDE3ZmNiNmRmZSBsZWdhY3ktdHJ1bmsKKzM3MzczIDFmNTQwYmY5YTliNDAyN2JkODJjY2Q2MjAwNWU1ZDRkZTBkNGEzNTAgcmVsZWFzZTIzLW1haW50CiszNzM3NCAzMjIxODRlZjc2MjJkNjdmM2EyMTA4ZDI3ZDAyYzQ5Zjc0YjczMTJhIHJlbGVhc2UyMy1tYWludAorMzczNzUgMDNlZGI2M2FlMDcxOGY0ZjVhYWIwOWQzZjU4ZjljMTUzNGU3OWIyZCBsZWdhY3ktdHJ1bmsKKzM3Mzc2IDExZDQ1MDBiZTZmYTQxOGU1OWYwMmI1YTVjY2M0YzBhMzIwYzAyNmYgbGVnYWN5LXRydW5rCiszNzM3NyBmNDY0MDgxNWU1YmI1MDBhZDMzNzgxNTdjNTE3NDQ4Nzk3ZmYwOGUyIHJlbGVhc2UyMy1tYWludAorMzczNzggNmIzZGE0N2JkZGQ2OGE0NDVhMTcyN2RkNDc1M2IyOTgyZDBjNjcwNCBsZWdhY3ktdHJ1bmsKKzM3Mzc5IGE3NzI1N2U1NDk5NmFhZjVlYzJlMDEyYThhZGViZTljNjg3MGMzOTkgbGVnYWN5LXRydW5rCiszNzM4MCBlOWU2NWVmOTQ2ZWNhZDI2ZDc4NzcwYmVjYTI2ZWRlODA2Y2U1Yjg1IGxlZ2FjeS10cnVuaworMzczODEgMzAxMjY1YjgwYzQxNDQyY2JlMjhiMGYwNmMxM2U1NDY0MWEwNDAxYSBsZWdhY3ktdHJ1bmsKKzM3MzgyIGQ1Mjk2MTU5ZjExY2Y0ZGE1MGY0NWYzZTYxYTM2YjE3OTNjODg4YzYgbGVnYWN5LXRydW5rCiszNzM4MyAxMzlhNDAxMmJlYWRhZmM5MzgzZTA1OTIyNjUxOWE2Yjc0NjhiNGJkIGxlZ2FjeS10cnVuaworMzczODQgM2UxN2FlZDIzMjRjMzE3YzAxZGZlODAyYWY0ZTE1YmM0N2ZhZmFlOSBsZWdhY3ktdHJ1bmsKKzM3Mzg1IDU1ZWNhN2NkMzUzMWRjNmEyOGQ2NDc4ZjQ5NzNiYmU4NzNlYzAxNzIgbGVnYWN5LXRydW5rCiszNzM4NiAwNmYyODIzOGRmMzExNTljMjZhOGNhNGU1NTgwYWEwMDE3ZTgzYjEyIGxlZ2FjeS10cnVuaworMzczODcgZDgzNjcwZjI0ZDVjYzJjM2I0YTQyODE5ZmI5NDY1MmY4OWU3M2VhMCBsZWdhY3ktdHJ1bmsKKzM3Mzg4IDMwZDQyOGY5OTJmOWE5NzBhMWE1YmExYzI2MGM2Y2U4OTQ2MTljNDkgbGVnYWN5LXRydW5rCiszNzM4OSBkM2Q2ZDQyMDA5YThjNDdhNTg5OTJiNThjMWM2MTc4Y2EwZmI1ZmQ1IGxlZ2FjeS10cnVuaworMzczOTAgMTc1ZWVlMDljYjk4MTgwYWI4OTlhYTgwY2RhNGY2MTE0OGUxM2MwYiBsZWdhY3ktdHJ1bmsKKzM3MzkxIDE4MDlhYmQzOTM0MjYzNzgwMDRkOTEzNDcyMDVjMmZjOTVkMWM2YjggbGVnYWN5LXRydW5rCiszNzM5MiBhM2ZiNWViY2EzMGQ3MWQ2M2ZhNmM3OTQ1YTBlNTU0ZjM1MjdjY2ZmIGxlZ2FjeS10cnVuaworMzczOTMgMjVlMDdjNDRlNWQwNWIxOGVkODBkZGUwOGNhNDU4MzMxYjk0NDlmNCBsZWdhY3ktdHJ1bmsKKzM3Mzk0IDhmNjRhODRmYThlNmJlZjcyY2E4ZmViZmViZWQ0ZjU1YWNlM2ZlMjAgbGVnYWN5LXRydW5rCiszNzM5NSA1YWM4YWZkOGQ5MDQwNjU2OThmMWQ4NWYwOGIxYjQxZGVlZWJkOWJlIGxlZ2FjeS10cnVuaworMzczOTYgNjk1ZTViYjA4MzgyMzkzZDkzNTUwNzE3MjIzYmEwZmMzYWU3ZDIxYiBsZWdhY3ktdHJ1bmsKKzM3Mzk3IGU3ZmE3YjVjOTQ0MWMzOWQyOGNjZTVkY2ZlNTRhM2Y4ZWYxMjFiOGEgbGVnYWN5LXRydW5rCiszNzM5OCBmZTI0MmY2OWE5ZDMyODIyYWYzZTAzNWUyZWY0MjJlOWJjZjA1ZDM2IHJlbGVhc2UyMy1tYWludAorMzczOTkgZWNkNjU0ZGFhZWM5ZjAwYjJhNDkwYzI3Yjg4MTJkNGYyNTVkMWQ1MCBsZWdhY3ktdHJ1bmsKKzM3NDAwIDkyZGNhOThjZDQzNDMxNGY1ZjQ5MmMyYTllYzIwZTMyNTU0NWEwMmUgbGVnYWN5LXRydW5rCiszNzQwMSA1MjY0MjdlODgzZTgyNDFjY2UxOWY3YzQ3YTI3OGJmYThlMmMwY2FhIGxlZ2FjeS10cnVuaworMzc0MDIgYmQxM2E0NzhlOGQ2MWRmZGQzOTdiZjBiOWExNzFjNTI3ZmM5YmYzOCBsZWdhY3ktdHJ1bmsKKzM3NDAzIDJiNDliNGE4NWQ5ZWI0YTRjZmE5ZjI5YzIxZDY0OWMzODM5NDU2NzEgbGVnYWN5LXRydW5rCiszNzQwNCBmNjc4OWI3ZWFiNGUzMGJjY2I4NTFjNDJlYjNjODliNTU4MDQ5OWU3IGxlZ2FjeS10cnVuaworMzc0MDUgNzgxYWVmOTc0NDYzODhiMzhmZjQzZDQ3NDEwMjc4ZTk2YmQ4ZGNmOCBsZWdhY3ktdHJ1bmsKKzM3NDA2IGQ3NGRkY2ZmMDcyNDQ3NzY2NTRlMjNhMGM5MWZjYzRkYmY5Y2M4YjYgbGVnYWN5LXRydW5rCiszNzQwNyBhM2Q3OGQ2YmNhNTE5MjQyMzdjMmQ0OWNjNzc0MTZjNTlmM2VhNzhkIHJlbGVhc2UyMy1tYWludAorMzc0MDggZDYwNzFhMDViYTg0YWY5YmY3ODAzY2I2M2FhZGJiNDAyMmUyZmNlMiBsZWdhY3ktdHJ1bmsKKzM3NDA5IDZkMDU1YTI3NWI0YmQzOTVhMzA2ZjY0MjM3MDJlZjdkOTYxOGE3YWUgbGVnYWN5LXRydW5rCiszNzQxMCBiZjY4NzMxNjUwNzk4NmJkMjNiMzQ3NjYzN2EwYTYxN2QwNGM3YWE2IGxlZ2FjeS10cnVuaworMzc0MTEgNzAyMzY3ZGEyYzcyYmY0MmU1ZmEzOTM4MDgzNTY3OThmNWM3Y2YwNCBsZWdhY3ktdHJ1bmsKKzM3NDEyIGQzNzZmZTg2MmIxODg1NGQ3MmRiODQwNWUxNDI1MGFkMGIxYjNkMWMgbGVnYWN5LXRydW5rCiszNzQxMyBlY2FmMGU4ZmE3Mzc5ZTkxZGMzODcwZjM3NTNiNzhiOWNmOTJjZGY4IGxlZ2FjeS10cnVuaworMzc0MTQgNjZiNTZkNTZlNjgwZDRiMDU1ZDg1ZjZiNjNlM2Y5OGMwNzczNzQ0YyBsZWdhY3ktdHJ1bmsKKzM3NDE1IDdkN2FjNDA0YzgwNDlmOTMyMDJjOThmZDc5YzBhN2RjMWIwMDAyM2IgbGVnYWN5LXRydW5rCiszNzQxNiBiZjlmOTE3ZWU0ZjlmMTQwMGQxZjU1ZDJkMDRiMDM5MWI3NWRlNWZjIGxlZ2FjeS10cnVuaworMzc0MTcgYTZkYzE3NmM1ZDEyOTIwMjJiMTcxOGM4OTAxMzAzODNhZDYzNjVlZCBsZWdhY3ktdHJ1bmsKKzM3NDE4IGE1NzcxM2ZkZWQyM2IzNWJiZDRkZjRmNjYxMzMyZDUzMDE2NDRkMjkgbGVnYWN5LXRydW5rCiszNzQxOSAxNWE3Y2MwMGM1YTE0MWQ3Yjk4MDc3ZDYyMjBkMTBkZjY4NzU1NTczIGxlZ2FjeS10cnVuaworMzc0MjAgZmQ5MzQ3NzhmNGI0NTFlZDBlZjI5YjIwNjA1NDA2MzlkM2ZmN2VhZiBsZWdhY3ktdHJ1bmsKKzM3NDIxIGUxMmNhNWNkZjc0MTA1ZGQ1MTRmMGEzOTliYWFiZTRiMTJjYjBjODcgbGVnYWN5LXRydW5rCiszNzQyMiBmMmEyY2VkMWZkNWRjYjAzZDE2YjI0NmJkZDYyM2I0Nzk1MDQ3MGM5IGxlZ2FjeS10cnVuaworMzc0MjMgYmU4Y2ZmNGExZWNhZGM3MjU0NDMzYzg0NjNlOGI0YzQzNzhmMjZlMyBsZWdhY3ktdHJ1bmsKKzM3NDI0IDk3Y2I5ZWVhMjEyZTIzN2JhZGQ2OWU1NjM2MjY2YTQwMWU4M2FmMWMgbGVnYWN5LXRydW5rCiszNzQyNSBhNzYxMjYwMDM5OTI1MTllMzYwN2IzYWI0M2Y2MGNlNGQ3MmE3YzExIGxlZ2FjeS10cnVuaworMzc0MjYgYzM5ZjgzZmRkNGQwMzIzZDA3NGVjOGM4ZTk1MmM4ODdkY2VmOGE5NSBsZWdhY3ktdHJ1bmsKKzM3NDI3IDhjNmZjODc3MTI2MDQyMTExZjQyZDQ4MGJiYTBiODhkOGQ3YmNhZjUgbGVnYWN5LXRydW5rCiszNzQyOCA1OTg0MWM4MTlmNGM5NzVkMDMxZmNlNGVjMDkxMDAzOTE2ZjYxZTliIGxlZ2FjeS10cnVuaworMzc0MjkgZjI0NmQ3NDY0YjVjOGE0MzE2YTk1MTRjZTk4NDYxNWU3ZWEzYTVmMCBsZWdhY3ktdHJ1bmsKKzM3NDMwIDk2OTJhZjAxYzFhODM1YWMwNDVhNGQyNDQxYjNkNTUxNDVlMDlhMjUgbGVnYWN5LXRydW5rCiszNzQzMSBjNGVhYzZlOTAxNjE0YjY3MjdhZWFjNmY0MDg4MDU1ZTRkZjNjNzU1IGxlZ2FjeS10cnVuaworMzc0MzIgODVkYTA4OGU3YThiZmQ4ZjdlMWNmNjBmZmQ5ZTIyYTc3NDRjMmU0MiBsZWdhY3ktdHJ1bmsKKzM3NDMzIDNiZDkzYjgxNDAzMTk3N2JhMzM4NTY3OGJmNDdjNDU3NThmMGUwNTYgbGVnYWN5LXRydW5rCiszNzQzNCBjMzdlMjA3NGE4YzU0ODU5ZTY3NTI3N2YwN2NhYWFkNDFlNzdmNWFkIGxlZ2FjeS10cnVuaworMzc0MzUgYTU2ODJiYzczZTA0ZjYwNzZjNTc2OTg0ZGIyNjQ5N2M2NTgyMGE2MiBsZWdhY3ktdHJ1bmsKKzM3NDM2IDk4NmE1YjU2OWFkZWRmZGY4N2E0MTFlNDY3NDM2ZWI3MzM0OTYzZDggbGVnYWN5LXRydW5rCiszNzQzNyA1MGI2Zjk0YTM4YTc3NjczNmZmYjMxZGRmZDYyOTk4MGE0Y2YxNzEzIGxlZ2FjeS10cnVuaworMzc0MzggZTQ3OGViZTFjYjMxNmM4NGQ4MzRhNDBiMTQxZjA3YWQxZTUyMzk4ZiBsZWdhY3ktdHJ1bmsKKzM3NDM5IGYyNzU4NGQxMTNhZjNlMzgwNDIzZWViYWQ0MWY0ZjJlNmVhNDczNGYgbGVnYWN5LXRydW5rCiszNzQ0MCBjMjhmZmJmYjBhZTkwOTI5MjVjNTBmYjRhNTY0MGZjNWVjYzliMDFhIGxlZ2FjeS10cnVuaworMzc0NDEgMzFiYzVmMGY0Y2ZjYzlmYmNlNGYwNDliYWExYzQ1ZWQ4ZWQ4OTZiYiBsZWdhY3ktdHJ1bmsKKzM3NDQyIDMyNWE4OGM2ZWU3ZDVjZDc2N2ZjOTBmZTEwZGI5ZGU0OTQzODUyZjMgbGVnYWN5LXRydW5rCiszNzQ0MyA4YTVjODdmNjg1Y2RlOWNhMTQ3M2M5MGRkYjEyZjI2MzIyMmU1M2I1IGxlZ2FjeS10cnVuaworMzc0NDQgNzc2NjBlYWVmMjRkYzRhMWNhZjUzOTc2ZTVjNTY2MTUxMTc5ZTNlOCBsZWdhY3ktdHJ1bmsKKzM3NDQ1IDYxM2E1NTMzODU0YTBkNDFiMzZiNGFiZDU4ZTQzYjc1NTMyOTEwYmEgbGVnYWN5LXRydW5rCiszNzQ0NiA4MDg0MjhjNTYwOTY4NzY0MzIxMDc1ODRiZTA0YzNjNmZkYWE0NGZmIGxlZ2FjeS10cnVuaworMzc0NDcgMWI2YjEwNDJjZjQ1Njk1NjU1OGQwZTZjODI4NjhlMWQ3NjRkNTc1NyBsZWdhY3ktdHJ1bmsKKzM3NDQ4IDJiYzIzNTMyNjMxNjBhNDhhMDUyYThhNzZhNWQ0YmNiNzc5ZDFhNmYgbGVnYWN5LXRydW5rCiszNzQ0OSBkYmRjNDU1NjRkMjQwMzhhOTA1NzcwZmEyNTU5YzQ1ODM5OTRkYmMzIHJlbGVhc2UyMy1tYWludAorMzc0NTAgNzkxOWNhZGViOTFkZDdmNGFmYTkzYTEyNGZhNTdiOTc5YmJmMzBkOCByZWxlYXNlMjMtbWFpbnQKKzM3NDUxIDE0MDgxZWE2NTZiMmMwYTE3YzAwMWE2N2VlYTM2MzQ1MTEwYmExOGIgbGVnYWN5LXRydW5rCiszNzQ1MiA2OGQxMWU0MzlhMGI1YTQzMWJlZjhhODVhNzViMzkwMmMwYjBhZTA0IGxlZ2FjeS10cnVuaworMzc0NTMgMjMwMzZjN2FmNjg3NmVlMjE5ODNhODlmYTI1N2EwODY2NGVkM2E1YSBsZWdhY3ktdHJ1bmsKKzM3NDU0IDhmNGJlZDk3MGZmOTUxNDU2YmI0ZmNhZDMyMzgxMWM1ZGI3MjQ5NTEgbGVnYWN5LXRydW5rCiszNzQ1NSAwNzc5NTRkNDFjNTMyNWIzZGQzYzk5NjU3MmIwNTg3MWM0YmM4ODNlIGxlZ2FjeS10cnVuaworMzc0NTYgMmY2NDE5ZDAwN2E5Y2I4NjQwMzc4MjI1OTZlN2VlMThhNDAwYjUzZiBsZWdhY3ktdHJ1bmsKKzM3NDU3IGI0ODQ3NGJhZDc2ZmNlOWM5MTNhNmJlMTJhMGFiN2I1ODg0MzRlMzAgbGVnYWN5LXRydW5rCiszNzQ1OCBlOTM3MGJjZjAyYWRiZjNiMjYzNTZhNjM1MjFhYjQzMjRiMTI3NDU3IGxlZ2FjeS10cnVuaworMzc0NTkgYTc4OTVhZWYxZWU4MDFkODg3YWNhMjQ3MzdkY2I1ZmNmN2UzYTQ3NSBsZWdhY3ktdHJ1bmsKKzM3NDYwIDBjMzJmMDFjY2Q5OTdlOGY0NTVmYmZmZTRhMWU0ZTIzNTYwYWVhNTQgbGVnYWN5LXRydW5rCiszNzQ2MSAzNTViMTVlNGE0ZGEyMzI5YmI4ZmY2OGQ5NDVjZDlmNjhiNmJmYmFkIGxlZ2FjeS10cnVuaworMzc0NjIgY2YxYWFhN2U0MDA1NWQ5Yzg1ZDFkN2FkZjViYWUwZjI1YmQyNTQ2YyBsZWdhY3ktdHJ1bmsKKzM3NDYzIDMyZGYxZDA1Y2IyZDk2Mzg1NTg2MGEzZGRjZWUzOTZhMWUxM2Y3M2QgbGVnYWN5LXRydW5rCiszNzQ2NCA0YjU0MTZiMTg0NjY0ZmVhOGRlOTJmNjc5ZTMzMjA0NjIxYTNlMzViIGxlZ2FjeS10cnVuaworMzc0NjUgNzUxMTU4NWYyZTZhNDZhNmM4OWJlNWEyZTNkN2ZiOTExNDMwOGEyMCBsZWdhY3ktdHJ1bmsKKzM3NDY2IDdkNjY3OWVlMzlmOTBiYjY2YjgxNjY2YTc5MWQwNDQ5NTQzZjdiYjMgbGVnYWN5LXRydW5rCiszNzQ2NyBmYzNlODk2NDM4ODg5MDJlY2NhZDJiMmEyMjM1MzZiN2E2MWZlYWQ0IGxlZ2FjeS10cnVuaworMzc0NjggNjQxMTUyZmI3ZDg4Mjk2ZDJiYTNkZTNhODFjZTE2ZTI1MDI4Mzg1YiBsZWdhY3ktdHJ1bmsKKzM3NDY5IGIzNDA4YTg1Yzg5YzlkMzkyOWMwMGIxYTkzZmIwZDEwNTFjMzM5YmEgbGVnYWN5LXRydW5rCiszNzQ3MCA0ZDdiMGQyMDZiYzczYWRlYjY1ZWEwMzM5NTE5MDM3NjVlZDI3OGZiIGxlZ2FjeS10cnVuaworMzc0NzEgNTRjMzNkMDk1ZTdlNDliY2RmZTI0ODA0ZTQ3NzViMzRkZDEwYzQ0MyBsZWdhY3ktdHJ1bmsKKzM3NDcyIGRiNmYyMWVlNjEzNTk3MjU0MTZmOTYzZWIxZGEzMjg3YzE1OWI4MjkgbGVnYWN5LXRydW5rCiszNzQ3MyAwODQ5ODhjMjBiNzVjZTVkMTkyYTQ0Y2NmODIzNzVmNjg1NTlmMmE4IGxlZ2FjeS10cnVuaworMzc0NzQgYjg5MjJhMzZmMDgzODNmOThjMDM3ZDAyNDNkYWI1ZDIxNmZmNjE4ZSBsZWdhY3ktdHJ1bmsKKzM3NDc1IGM3YzM5Yjc5ZTViN2U4YTVhZjM3YjZmNWFkNDUwOWQ4MzhkZWI0ZjcgbGVnYWN5LXRydW5rCiszNzQ3NiA0ZWU0OGUyZWZiNjg3OTc0NWExMzg5ZjEzNWZjMjY1OGNmYTQ1ODk2IGxlZ2FjeS10cnVuaworMzc0NzcgNzY2NGU4YmFlMTllMjFiNTQ5N2EyNjNmMDI0ZGI5MzJiMWE0MDg0MCBsZWdhY3ktdHJ1bmsKKzM3NDc4IDgzMTMxOWYxMDBkMGE5ZjBkYzIzMjFhY2YzNjIyNzQyZGUxYzlhMzcgbGVnYWN5LXRydW5rCiszNzQ3OSBiMTFmOTE2MmVkMGRkNTQ3OTM0ZWZmYTMzMzkzZDM5ODk0NTY4ZmJiIGxlZ2FjeS10cnVuaworMzc0ODAgMzFiMDg2NzBlYmRkYjUwMWFmMDQ4Nzg1Y2NlN2ZjYWRmOTRkYjQ4ZiBsZWdhY3ktdHJ1bmsKKzM3NDgxIDJiOWMxOTg3MmIwMTc2MGZhNWRlYTM5NGE0NTk2YTE5OWM2YzI2MTAgcmVsZWFzZTIzLW1haW50CiszNzQ4MiA4ZTIwZWUyZWNjMGM5ZTZlMDA2YWNlM2EyYjUwZjkwMTk2ZWU1ZGE5IGxlZ2FjeS10cnVuaworMzc0ODMgZTYzMTgwNWM3MWIwNzJmNjBkNTk0OTkxYmUxMmYwNGI2MmU1ZDIwYiBsZWdhY3ktdHJ1bmsKKzM3NDg0IDI3YWEwZTExOTMzMGEzN2ViNWFkNzY0N2ZmN2QyMGQ0NzBlYTEyOTcgbGVnYWN5LXRydW5rCiszNzQ4NSAzNGIwNzAwOGFhNzhiZTc5OTQyMWMyZjkxMjFhN2I3YTQxNDYyOGM0IGxlZ2FjeS10cnVuaworMzc0ODYgNjNmYzA1MjJhOTViNTM1NWY5MWVjOTk5NDQxMjBmYTgzOGQxZmQ4NCBsZWdhY3ktdHJ1bmsKKzM3NDg3IDhlOWRjZmUxNGQ4MTYyZTRkYTUwOWNjODc4Njk4NjA0YTc1OTFiMGQgbGVnYWN5LXRydW5rCiszNzQ4OCA1NzMwZjc3ZTM3ZTQxYjYzNDFiOWY2ZTlhMzdlNTdhMmMxNzdmMTkwIGxlZ2FjeS10cnVuaworMzc0ODkgZjA3NGRiMGMxNGE4NTNmOTAzMmU2YWMwOTE3ZjQ3MmQyODQxYTdmYyBsZWdhY3ktdHJ1bmsKKzM3NDkwIGNkNThhOWI0YmE2NjM4NjQzNzY0ZDc0NDJhMDAyOTgxYWQ1NTI0NGUgbGVnYWN5LXRydW5rCiszNzQ5MSAwYWUwYmVmMTAwMTRlNWZiODUyNzFiN2IyNjI0YjkxZTk4ZGQxZDkzIGxlZ2FjeS10cnVuaworMzc0OTIgODNhM2UyZDE5MTRhOTBhNGQzMDM3ZWMxYjQ3MjYwNjNlZTc5ZjkyYyBsZWdhY3ktdHJ1bmsKKzM3NDkzIGM4NGRiZTcxN2Q0OWNkODY0ZWJmZjQ3YThhZGRjMWE1NWZiZjYxNDQgbGVnYWN5LXRydW5rCiszNzQ5NCAwZjBkZGI0Y2IwNDM3MzQ0ODAxZTNlMmE1OTViMjY2ZDZiN2VjZjA5IGxlZ2FjeS10cnVuaworMzc0OTUgNjU1Zjc0ZWEwZjMxZjU2MWEwZTg1YzJlZjRjYTI2Y2ZjYzdlYzkxYiBsZWdhY3ktdHJ1bmsKKzM3NDk2IDIzNDQ0Y2JkZWE1NTUwYTRhNTBlMTRmOTNmMzY0ZjI4OWVkZjMyMTIgbGVnYWN5LXRydW5rCiszNzQ5NyAyNzlmMDFlNzEwNzFiZjU2MzUzNTczODA4MzY2MzFmYWZiMjhhYTdiIGxlZ2FjeS10cnVuaworMzc0OTggNmJkNGExMDU2NzE2Yjc3MmE0NzM5NDgxYzI0NWQ5YWNiNmJiOGE0ZSBsZWdhY3ktdHJ1bmsKKzM3NDk5IDgzNmU5MmNjNWM0ZmJkYjZhOWFiMGJiNzYwN2U4ZjI0M2YzN2Q4MTEgbGVnYWN5LXRydW5rCiszNzUwMCBlNWRlNjk4ZWNkNGI0ZTA1OWQ1ZWJlYmU5N2ExMWQ0ZWIyZjAwZjIwIGxlZ2FjeS10cnVuaworMzc1MDEgNmY0YmNiM2JkMjAyZTQzMGZjNzQ4ODEzOTIyODJmMmYyMGYwYTc4ZCBsZWdhY3ktdHJ1bmsKKzM3NTAyIDVlMTlmZDM2NDJmMDczZTJkMzQ5OGZiMmUxMzZmOWFkMmRiMDFkNGYgbGVnYWN5LXRydW5rCiszNzUwMyA0MDM1MGZiZTY2NWRmZjFiMmRhOGM2YWYwZGQ1MzhkZDkzMWNjZGExIGxlZ2FjeS10cnVuaworMzc1MDQgMzBjYjIwMGQ0MThjZGZlZWE4NTY5YzUxMTc2NjkzNDQ3YTQ0ZWFhZSBsZWdhY3ktdHJ1bmsKKzM3NTA1IGNkNzBmMWFjM2MyNWQ2ODYwYTk2ZTNiN2ZiNDk5MTExMTExNjBkNDMgbGVnYWN5LXRydW5rCiszNzUwNiA0ZmI4Yzg5ZjY2YTBiOTc2MjVhNmIwMGU0ODRkZmFiZjFmODNjOWYwIGxlZ2FjeS10cnVuaworMzc1MDcgOTE2MzRmM2JhMjEzYTUyYjkwMzBhNGVkNTJmZDBlOGFkMjk4ZTM3MyBsZWdhY3ktdHJ1bmsKKzM3NTA4IDAwYzM2ZTFiYzUwYmM2YjJjODc2ZmE4MDJlZGM4ZTYwZGUwZGQxODUgbGVnYWN5LXRydW5rCiszNzUwOSAwYzRmMDk1ODYzYjllZDJhYjdjMjM5OWZiZWIyYWIwN2MyNzhiOWE1IGxlZ2FjeS10cnVuaworMzc1MTAgM2Q4ZDc4MjE3NTk5OWQ5ZDU4MjJiMjVhZDE2ZDc1M2U2M2ExMTE5OCBsZWdhY3ktdHJ1bmsKKzM3NTExIDVhMjkyYTAzZWE0MTY3NzM3MDMxMDg0NzQ3OGZkY2FlYmM0YzBiNDkgbGVnYWN5LXRydW5rCiszNzUxMiA3YzUwY2RlMWU0ZmQwNWU0ODg0ZDM3MzFhZDdiYTM5NWRjMjljMzRlIGxlZ2FjeS10cnVuaworMzc1MTMgNzQ1MGJiOTNjMzk1Y2IwNjRhMTljMzc5YjQ2ZDgzNzM2ZGMzZmQwOCBsZWdhY3ktdHJ1bmsKKzM3NTE0IDQ4NmU5YzQwY2ZiOTNmZTRmMDYwMjJlMDk4MDA5N2IxMDJkN2Q3ZTggbGVnYWN5LXRydW5rCiszNzUxNSA5NDY2MTJmNjRhODMyZTQ2N2E1MWUxOTRkMzg1YzBhN2RmNmU5ZDkzIGxlZ2FjeS10cnVuaworMzc1MTYgYzU5MWZhMWQ0MzVkZjA3NTg3NGIxYmZmN2I0NmU3ZGUyOTE4OWZhMCBsZWdhY3ktdHJ1bmsKKzM3NTE3IDdlNDJhOGViYjNlZmYxMTdjYmJhNzc5NmM4YjFlMmRkZDdjNDg2ODQgbGVnYWN5LXRydW5rCiszNzUxOCBjODE5MjViNjEzZGFiMDYzNjE2MjU2NDkxYjgxZDNjNTU5NWQyMWJmIGxlZ2FjeS10cnVuaworMzc1MTkgYzA5N2FiZGI1NTY2M2UzZTRjYmZhN2U4OTAxYjBkNWZjODIyMDAzMyBsZWdhY3ktdHJ1bmsKKzM3NTIwIDBiN2UzMThlZjA5MjY1NThhY2JjOGFiNThlMTUyNTgzYWRlNmY1MDggbGVnYWN5LXRydW5rCiszNzUyMSA0NWIxOTg4ZTI2OTI0ZmJhY2IzMThjNWE1ZmE1YmYyOTBmNzA2YmE5IGxlZ2FjeS10cnVuaworMzc1MjIgY2U4MTNhNTdkNDRkM2FhZTg4YzQ5MGRhNmNjYjk1ZWIwZWQyYmZlYiBsZWdhY3ktdHJ1bmsKKzM3NTIzIDkxODk5NDY4MzhlZWNjZDlkNWJjNmE0NGY1MDQ0YWM5ZjUyNTVlN2IgbGVnYWN5LXRydW5rCiszNzUyNCAwYmZkMzVhNzZhNDRmODEyY2NhNmRlNmRmY2VhOTZlZTI2NzRjYWQxIGxlZ2FjeS10cnVuaworMzc1MjUgNjNhMDM4OWJkNWZjYTk5NjA1NjhkM2Y1YzExNzQ3M2MzZjM1NDc0MCBsZWdhY3ktdHJ1bmsKKzM3NTI2IGNjNDY4NDA1MWM0NjMzNTMwNTAzYWYyNTYyMGYwYmVjMjE5ZDAxM2QgbGVnYWN5LXRydW5rCiszNzUyNyA1NDEyMDk2ZDBmOTVkZTA4YzkyNmNjM2M2YjI1YjRkYmY0YTk5ZDlkIGxlZ2FjeS10cnVuaworMzc1MjggZTEyOTc2ZTk4ZjYxM2Y0MzBmMGJiODBiMTBjNDAxMmJjOWZkMTNiMCBsZWdhY3ktdHJ1bmsKKzM3NTI5IDVkZWY2NmYyYzlhYmVlNWYwOGVhYTI4NDQ2NzRlZmYwNDk0ZjdiNGQgbGVnYWN5LXRydW5rCiszNzUzMCBhYjU4OGNlOWU3MWZiZmUwYzIzNzg1NjUwZGFiYWNlZDY1ZTA2YTU2IGxlZ2FjeS10cnVuaworMzc1MzEgMTE4YjZmNjllM2YxNTNiNzg3OWUzNGFjNmRjZGIwYjUwYTI3MDNkNiBsZWdhY3ktdHJ1bmsKKzM3NTMyIGVjZjFlODUzNDA2YjdjZDJlZGE2OTMzMjYyZDEyYzg4OWVkYjVmYjkgbGVnYWN5LXRydW5rCiszNzUzMyA2MGJmMmFmZDczMTIyNTQ2ZWZhZjFhN2E2OWVkMDA0ZmUwYjk1YjE4IGxlZ2FjeS10cnVuaworMzc1MzQgODlmYWFjZDllYzc2OTU1MjMxYTY4MzVlYzUxNDBjZDU1MDlmNWQyMSBsZWdhY3ktdHJ1bmsKKzM3NTM1IDIyZWU5MTY0M2IzZjM0Yjk0N2QwMTQ5MGYyYWRmZTZkNDU5YTkxMmUgcmVsZWFzZTIzLW1haW50CiszNzUzNiBiMGYzYTY5M2I4NTRiN2ZmODI2NjFlNjYxYzYxOThjODI4Nzk1ZTAzIGxlZ2FjeS10cnVuaworMzc1MzcgZDhlNzRhMGI0Njc3NWRiNjg0YTg5M2VhODdhNjVmYmUzZWQzY2MwYyBsZWdhY3ktdHJ1bmsKKzM3NTM4IGQ5OWRlNjVmNTQyNTgyN2JiNWNiNzY5MTkyZjYzZDg1MjdiNjA2ZDEgbGVnYWN5LXRydW5rCiszNzUzOSBiYThlMTg1NGE4NGJhYWNmOTRlYTE2ODYyZmJhMTNlZDRlMDlkYmNlIHJlbGVhc2UyMy1tYWludAorMzc1NDAgNWFlM2ExYzgwZTNmZTc1ODljY2ExMGZhOTI4YjM5ZWUxNjc4MjM4NCBsZWdhY3ktdHJ1bmsKKzM3NTQxIDI2MmUxY2Y0MWQzNGJjNzVmOWNlODdiZjRjNGM4NmM2MDQ4MjQ2MGUgbGVnYWN5LXRydW5rCiszNzU0MiBiMzFhNTEyMDY3NzQ4NTgyM2M2ZTQxNGQ3YTA5MWQ2NGNhYjgyMjJmIGxlZ2FjeS10cnVuaworMzc1NDMgNTVmYmE4ODkzMGJjN2I4MTY2OWQwMTUyOTQyYTEzMTBlNDA0Y2RiOCBsZWdhY3ktdHJ1bmsKKzM3NTQ0IGJjYWZiNjhhZDk4NTg4MDBhNTI2MjdmYzkxMGU2MzY1MmM3NmUxNDggbGVnYWN5LXRydW5rCiszNzU0NSA0Nzg0YmZjOTlhNDFiZTAzNTA3ZGZmZjk4YmZiMmI0YjVhY2Q4OTFkIGxlZ2FjeS10cnVuaworMzc1NDYgMzdjNjVhNmIyZWY3ZjQ4MTJkZTExMWY3YjRjZTc4OTFiOGE5Yzk2MCBsZWdhY3ktdHJ1bmsKKzM3NTQ3IGZkYTM2YWYyMjZmYjJiZDk0N2Y4MTYwMTdjZTU4MWE2NTI3M2NhNjEgbGVnYWN5LXRydW5rCiszNzU0OCAzZTZmNTZlODEwNGEyYmRjM2RhMmM2MTNmN2QyZGZlNTNkMTAzZDk5IGxlZ2FjeS10cnVuaworMzc1NDkgOWEzODYyNWZhMmIwOGQ0NmU1NGFjN2Y2Mzk2NDljZjEyYTAzNTg3OCBsZWdhY3ktdHJ1bmsKKzM3NTUwIDE3MDFkYWU2NDc0ZTE0ODJmMDY1MjEzOTFlNGIxY2JiY2E1YjU0MTcgbGVnYWN5LXRydW5rCiszNzU1MSA2ODNhMmY4Zjc3MWRjNzE4ZGM3NTdiYjI0NWE5MjlhNGQzMzI2MGZkIGxlZ2FjeS10cnVuaworMzc1NTIgYWYzMDA0MDNlZGI4MjBmNGQxMWFiZTJmNjNkNDAyNjg4MDRlYzViNSBsZWdhY3ktdHJ1bmsKKzM3NTUzIGE1Yzg4ZjJlODZhM2Y0NjdmNzNkY2Y5YzNlNmUyMzhiY2Q0OTk1NTQgbGVnYWN5LXRydW5rCiszNzU1NCAzNjE3ZDFlZTI3OTdmYmU2MmU0ZmI4NmMyMzNjM2ZlNTc4ZjFlYzNiIGxlZ2FjeS10cnVuaworMzc1NTUgZDhmZmY3MDZhOWMyNWNlZjgxNDQzZjIyY2VmZDczY2ZlNWQyNWIwNSBsZWdhY3ktdHJ1bmsKKzM3NTU2IGJhOWJjZjIxNDFhMjMyOWI1Nzc4MzMwMjdkMzQ5OTdjNGQxZTQwOGQgcmVsZWFzZTIzLW1haW50CiszNzU1NyA5NjJmYTNlMjMyMTViZThmMWIyODQ5ODExYTEwZGMyODk3NGUyYzQwIGxlZ2FjeS10cnVuaworMzc1NTggYmE5ZmRjNDRjNzc4MjU2NmMzNTc2MjRjNzY4Njk3Mjk3N2FkMzgxNyByZWxlYXNlMjMtbWFpbnQKKzM3NTU5IDkyNGJiMmFhZDRmNDgxYjhiMTRhMDI4OWU4NTU4NjdlZjU4NTI0N2IgbGVnYWN5LXRydW5rCiszNzU2MCBkYzNhNjc2N2U5NjA4NDI3ZmE3NzEzMTIwNmQ5OWRlMmVjYjc2NjhlIGxlZ2FjeS10cnVuaworMzc1NjEgYWFjNGNjNjYxOGI1NGJiOGViY2I2NzA2ZTY1MjRjZGY2YmMxMTllMSBsZWdhY3ktdHJ1bmsKKzM3NTYyIDA5MGZmY2I4M2YwYWFlNDZkZGIxYmRjYmUzZDBhZDc3ZmExZDZhZTggbGVnYWN5LXRydW5rCiszNzU2MyAwYzI2ZGIzODE2NzNlMjQwNTczMmZhZWIzMGEwNTQwYWIwODVjMmRiIGxlZ2FjeS10cnVuaworMzc1NjQgNjYzMjc0MTllYjAwNDRiZmRjNTM0ODZkM2I0MjU4ZDI2ZmFhMzc4MiByZWxlYXNlMjMtbWFpbnQKKzM3NTY1IDA4Yjc2NzQ3MDY2M2UzNTY5MDgyMzM0NTgxMWE2N2ZiNTMwODY2ZDUgbGVnYWN5LXRydW5rCiszNzU2NiAzMjcxZWE2MGI4MmRjMzIxY2RiMDdhZDZlNWQxMGFhNWRiNjE3NDIwIHJlbGVhc2UyMy1tYWludAorMzc1NjcgNTRlNjUyN2YzMTUwODk4MTBjNjY5YTQxMWExZWEzYjQ0NzNiNDllYSByZWxlYXNlMjMtbWFpbnQKKzM3NTY4IDI5NWJkOGM1NWE3ODhjMzAzZjE3ZmJiZWViYjlkZjU5YTA5Mjk3NDEgbGVnYWN5LXRydW5rCiszNzU2OSA4OTEwNDJjOTRhZWQwMWY0NGZlYjEyMjcyNTBjMTM3OTZiNjcyMWM1IGxlZ2FjeS10cnVuaworMzc1NzAgNDk4MWJhNTRmNDNkODE4MTIxNjI4MzM5NDBlODlmYzU3N2FiMTc2ZiBsZWdhY3ktdHJ1bmsKKzM3NTcxIDc0MmZkYWMzZDVhZTJmZjQzNWViMGQxZTI1ZGJlYzM3MDExN2U3ZjggbGVnYWN5LXRydW5rCiszNzU3MiA0MDEzZjBhNTM4MzUxMGY4MTI0N2MyYjRlYmZkMTlhYjc5ZjYyMGZjIGxlZ2FjeS10cnVuaworMzc1NzMgZTdjN2IzYWY2MTY0NjhhMzAyYzdmNmNiYzFiNTU5ZDc1OGM3ZDNjZSBsZWdhY3ktdHJ1bmsKKzM3NTc0IDQ2MTQ0NGRlN2IxZmQwYTEzMmMwNTQ3YzA1NzBmZmJlNDk2ZWU1ODggbGVnYWN5LXRydW5rCiszNzU3NSA2NjRiMThhYTZmYzEyNGIyNTVmMGIwOTU2MDljOWE4NjkxZGUxYzFkIGxlZ2FjeS10cnVuaworMzc1NzYgYmFhMjY1M2Y3YTc2ZDk0YjgzODkwMTQyYzg0YWEyNTE5MWY1NTMzOSBsZWdhY3ktdHJ1bmsKKzM3NTc3IDUxN2U0ZWMwZGY4OWNjNTI5OWNjNTY0ZWI4N2RlNmEwODI0NDQyNWYgbGVnYWN5LXRydW5rCiszNzU3OCA2MzVkZDhhOWViZDkzYzEyMTE4YmExMGEzZmE3OGMzNzI2YzRhYWRlIGxlZ2FjeS10cnVuaworMzc1NzkgYTQ2Yjc2ZWI5MDUzYzgzZDNmODdhMjgyZmNkOGMyZTczNTE4ZjBiMiBsZWdhY3ktdHJ1bmsKKzM3NTgwIGM1NTI0NDZiN2JiMmY0YjllZjM3Yjk4MmJkMTc2OGMwZWMzZGIyMDEgbGVnYWN5LXRydW5rCiszNzU4MSBmOGNiOGYwYWM4ZjEzYTM1Mzc5MzY0Y2U3MjEyY2JiZDBiNjdkNmFjIGxlZ2FjeS10cnVuaworMzc1ODIgZTZmMWFlMTNiZTg0ZGYyZjZkNzNiZTI2ZTJkYjAwNTA2MjAzYTBjYSBsZWdhY3ktdHJ1bmsKKzM3NTgzIGYyMzRiZTE3MjgwMDBlOWNlMjM2NGJiMTcxMGQzMWMwNGIyZjczYTcgbGVnYWN5LXRydW5rCiszNzU4NCBjMmFlNDgyZmY0MmQ2M2RlYmI0ZjI5MzA1ZTQ0ZTdlYzdmZjhkZGRjIGxlZ2FjeS10cnVuaworMzc1ODUgMmM3OWI1MGFmYmFiNWUzZDgzNTBmMWIxMmRlNzZkZjViYzE2MjFiZiBsZWdhY3ktdHJ1bmsKKzM3NTg2IDc0YTU3ZTY2ODRmMzkxY2QzMzY4ZjkwZTQ1ZGMzZTMzM2RkM2NmMjggbGVnYWN5LXRydW5rCiszNzU4NyA3NjY0MTgyNGNmMDUzNTdiZmI3NGNjMjEwNjdkMTRkZDc4ZTFjYTI1IGxlZ2FjeS10cnVuaworMzc1ODggYzdmZTIyNzdkMTcxZDRmYThhNWI3MGRhYzIzZTZkYjNlZDJjYmI2OSBsZWdhY3ktdHJ1bmsKKzM3NTg5IGM5YjFmMjY5NGU5OGFhZmRmOTNhNGMyOWEwNzQ5MWQzNDE2YWVkNDYgbGVnYWN5LXRydW5rCiszNzU5MCBhY2MxOTFiNzE0Yjk5NzM1N2U5YzM4NGQxOWQ1MmZjZWUzOTQyNGFmIGxlZ2FjeS10cnVuaworMzc1OTEgMDIzNmI2NTMwYzQ2MzFjM2UwZDMzNTMxYTQwOTA4YTZiNWFiMTVkNyBsZWdhY3ktdHJ1bmsKKzM3NTkyIGEwMWJlMzUwZWQ2MTU4MWI0MjczYjYzMjBhNjJmMmRkNGUwZmFmMTcgbGVnYWN5LXRydW5rCiszNzU5MyAwZDZkNTZiMjE2NGI3Y2U4YzkwMGIyODI3NTQ3NjRlZmEwZTc5OGUwIGxlZ2FjeS10cnVuaworMzc1OTQgNDRjZGFjOWJmNzg1OWViNzdjZTZhZDY4MzRkMjAzZDNkNWY0ZjUxYiBsZWdhY3ktdHJ1bmsKKzM3NTk1IDUzYzQ2OGQwOTU1YmFhMDhkMWU5ZGJlZWJmNmMzYTNlNGUzMzczMWUgbGVnYWN5LXRydW5rCiszNzU5NiBkOTQwNGRiMjliYzY1NzdiZDQwOWE5OTViM2U3NzBkOWU2N2RkMTEwIGxlZ2FjeS10cnVuaworMzc1OTcgMzlhMTNlMzlkMjRlYjlkZTBmMGJmMjA3OWMxNDFlOTM5ODMzYjJhNCBsZWdhY3ktdHJ1bmsKKzM3NTk4IGViM2Q2MDMwZDk1MDEwNzBkYzkyNzIwYjgyZTVjYjNlNGQ4MWY0YjIgbGVnYWN5LXRydW5rCiszNzU5OSAxMzgzYzQ2OTJhZjc0ZGNhNzg3ODU2ZWQxZjU5YTU5N2ZjMjNlMjQxIGxlZ2FjeS10cnVuaworMzc2MDAgYTgwNDI4MGUzNGY5MGZlMjE0ZTA3YWQ2YzQwMzI3NWY0NTBkNzk0OCBsZWdhY3ktdHJ1bmsKKzM3NjAxIGU0ZjdkM2IwYzVkNGZlNDdmZGIyN2JjZjM3YTg3ZTBhY2Y1MzQ2MjIgbGVnYWN5LXRydW5rCiszNzYwMiBhNGY3NDdlNzIxMzgxY2Y3ZGZlNzYzNGYxYTkxNGQxNTdlMTYwMGE4IGxlZ2FjeS10cnVuaworMzc2MDMgNzYzNTUzNjMxMDFiMGExMTU1MDE4NzVhMDQ3OTg0NDA0NTUwNWM5MyBsZWdhY3ktdHJ1bmsKKzM3NjA0IDQ0ZTE3NmNjYTMzNzIxYWQ4ZDgzZjUwNzNiZjE3NDRiZmE4NWE2NjAgbGVnYWN5LXRydW5rCiszNzYwNSBkMWYwYzcwNzliODI4NzlhNTU5Mzk3NjZlOGJhNWE5YzA3NjViYzg3IGxlZ2FjeS10cnVuaworMzc2MDYgMTc5ZTQyZWEyZTljOTcxOTg4MTcxMjg2MTY4MDkzMzNjYzQwMDI0ZiBsZWdhY3ktdHJ1bmsKKzM3NjA3IDQ2ODM5ODNlODRiMzU1ZDFhZTA0MzkyMzk1ZGQyZDEwNmNkNTM3NjYgbGVnYWN5LXRydW5rCiszNzYwOCA5OWNhYmE4MTQ1NjU0Y2EzOTVjMzRmNTdkNTNmYjIyYTBjYTIxODgyIGxlZ2FjeS10cnVuaworMzc2MDkgNzRjZWI2ZmNiNDMyN2RkOGM4NWUxMDBkODg4YjM2ZDVmOWRlZmIzNSBsZWdhY3ktdHJ1bmsKKzM3NjEwIGEyN2IwMjcxNzExYmQwNWJiMDM1ZWVmMmJiOTQxOGU1NzA3ZWJkZjggbGVnYWN5LXRydW5rCiszNzYxMSBiMGVjNGM5ZDU5NWIwMGIyNjZiZDFhOTM5ZTdjYmY3MjAwZDliODkzIGxlZ2FjeS10cnVuaworMzc2MTIgYjg2YzdjNDc3NGVkZmQ4MzJlYjY4ZmM5NDk4N2UxOGNkYjE4MWQ4YSBsZWdhY3ktdHJ1bmsKKzM3NjEzIDJjYzEwN2M5NjQ2ZTJiZGIwM2YyZDBhMjViZDk3OWY2ZTRlZTM0NWEgbGVnYWN5LXRydW5rCiszNzYxNCBlYzk5M2I3MjY2MDU3Mjg4ZGU5NTNiNzk0OTI2MzgwMTQ3MTY2MWM2IGxlZ2FjeS10cnVuaworMzc2MTUgYWEyZDYwNjA0OTVhMDdiYjRmMzdhZGE4ZWFjOTc0OGMxMzQxMGY1OSBsZWdhY3ktdHJ1bmsKKzM3NjE2IGRkYzJkNmU1NDdjMTUzOTRmODNkZWU2MDRiYmZhMTVkYTQ2Yzk2ODAgbGVnYWN5LXRydW5rCiszNzYxNyA5MmUwNWI2MzQ5OTc4NjkwNmI0MWQ1YTUzYTI3ZjVmN2JlM2E1OTJlIGxlZ2FjeS10cnVuaworMzc2MTggMTBiMjU0MTQ2MjhjZGI4MmM4MGQyNjBmMTkzZTYzYTE3MzE0Mzg5MCBsZWdhY3ktdHJ1bmsKKzM3NjE5IDRmOGRiNTVjZTEyNGEyZWE3ZjhiYzEwMzQyNTc4NzgzMWMxZjk0MTEgbGVnYWN5LXRydW5rCiszNzYyMCAxOTc3NzUyY2Y4MDdiYzc4OWQ5MDBiOTNmYzE2ODJlNWJiMTNlYTFiIGxlZ2FjeS10cnVuaworMzc2MjEgOGE1MDYxYmNkNDE3OWY4MjQ4MDA4NWMwMTZkNDZmNGVhNGI1ZjhkYiBsZWdhY3ktdHJ1bmsKKzM3NjIyIGZiMjczYTgzYzc1ZmQ5MjU3MTk3ODkwNWFmNThjODAyNGVkNDlhMTUgbGVnYWN5LXRydW5rCiszNzYyMyAxMWQwMWZjNjUwZGMwNTJhZmQ0OWM3NDRjOTUwZTkzNTVlOTdlYTk2IGxlZ2FjeS10cnVuaworMzc2MjQgNDYyMTdkMDVhNDc2NmE0NjFiZjQyYzg4MGFhOGFkMTA3MGFjMjMyMSBsZWdhY3ktdHJ1bmsKKzM3NjI1IGQxMjI4MTI3ZDI5NDI1ZjY0NGVjNzkxNDNiMjI2MDZiYmVmYWMyYTggbGVnYWN5LXRydW5rCiszNzYyNiAyNmZkMDBiMzY4ZjFkNDUyZTc0YjY0MWU2NmNhMTYyZDU4NDQ5MDhlIGxlZ2FjeS10cnVuaworMzc2MjcgMTY2YmQzMzlkM2JmZDYxOWM0ZDcwNTVhZDg2MTI0MDFlZjgzODBhNiBsZWdhY3ktdHJ1bmsKKzM3NjI4IDI2YmVkZjYzZTRhODljNTNmOGY4ZmIzNWVlMTk2ZDRiYzk0MDlmZGMgbGVnYWN5LXRydW5rCiszNzYyOSBiMzA4ZTE1YmQ3ZmJhOTI1ZjE3NzczMTE2Zjk4NWRiMmMwY2IxMjk3IGxlZ2FjeS10cnVuaworMzc2MzAgMTkwN2FkNTRkMzUxY2U3N2ZhODIyYTVlM2FhMzIwNzFiZjdjYjFkZiBsZWdhY3ktdHJ1bmsKKzM3NjMxIDU1NDgyZTlkZWI2NjM4MzY0YzIwMzJiMGIxZWVjODgxNjRkMWFhYWMgbGVnYWN5LXRydW5rCiszNzYzMSA1M2NmZjA0MjgzODU1YWRmODhlZDBjMGZkMzY5ODgyN2NhODQzNjM3IGxlZ2FjeS10cnVuaworMzc2MzMgNzJjNTEzMWQ0YzRhZjBkYjM3YWI0MTUyODc4YjU4ZGUwMDBlYjYxZCBsZWdhY3ktdHJ1bmsKKzM3NjM0IGM2YWFjMDM0NzRjNWUyMzgyODZhY2RiNDJmMTRkZWRjN2RlZDFmOTQgbGVnYWN5LXRydW5rCiszNzYzNSA4OGJmNDhjMDY5ZjljMzYyNDk1YmQ0ZjZhNjVkMjYzZmVjNmIyMDg1IGxlZ2FjeS10cnVuaworMzc2MzYgYmE3NWZkYTkyMjBjMmExNTRkNjY1MmUzMDBiZjVmZGVjYTcyZDdlYyBsZWdhY3ktdHJ1bmsKKzM3NjM3IGFiMDlkYWFjNTY5MWI3OGM0OWJiNDQ3MjUyZTIyMGRlNjY1NzMyZGIgbGVnYWN5LXRydW5rCiszNzYzOCBmYmFjYmIyNjI3ODk0OTgxOWUwYjY4YzUwNTBjMGIzZTBhOWEzM2Q4IGxlZ2FjeS10cnVuaworMzc2MzkgZTE1YzE1YTRmYmU4ODE1MTExOWFlMzNiZDE1YzQzMzRiM2Q0NjljYyBsZWdhY3ktdHJ1bmsKKzM3NjQwIGM1ZDk1MWEwZTBjM2U5MGE2MjVlNTcyZTY4YjRkMTNhOTY5OWIwODQgbGVnYWN5LXRydW5rCiszNzY0MSBlNGI3YzkyM2VkNWYyNzM3ZjY2MTU2YTg4ZjY2MDFlMTRjNjU1N2I1IGxlZ2FjeS10cnVuaworMzc2NDIgZjFjMDQ4ZTc0M2UyZDgwNjBhYTg5NDBmMzJhNjhhMTFhZGI4YzE4NCByZWxlYXNlMjMtbWFpbnQKKzM3NjQzIGM2NmU2YzlmZmMyZGJkM2QwMTlhNzRkM2IxYmY2OGEwODExNTRmYWIgbGVnYWN5LXRydW5rCiszNzY0NCA0Njg4ZDJhMjczZDkwYjg2ZmJjYzMwMjNlNzc4ZWE5ZjM2MWEwZWE1IGxlZ2FjeS10cnVuaworMzc2NDUgZDlkM2I0NzVjZWIyNTg2NjNiMTMxMjFkNzQ3OWU3ZWVhZDU2MjYzMCByZWxlYXNlMjMtbWFpbnQKKzM3NjQ2IGE1MmRlOTExYjI4NDgxNDcxODIxNjljYmZjMzIyYzZmNTJmOTAxMDAgbGVnYWN5LXRydW5rCiszNzY0NyAzZmRkOTZmMGNlODY2YzVhZjY5MjFmMzY4NDgxNThmYWZjMGJmM2E2IGxlZ2FjeS10cnVuaworMzc2NDggZjE3NWM5ODM4MzczNmQ1ODdmNDM2MTc3NjBiNjEyNTRhOWMzYTU0YyBsZWdhY3ktdHJ1bmsKKzM3NjQ5IDgxN2MyNDFiZmZmZjhkZjRmMTE4OGZiYTYzMmQ0Y2Y4YjI5ZDE1NjYgbGVnYWN5LXRydW5rCiszNzY1MCBiZDE4ODhlOTI5OWY3MzVjZTcxMTk2NDljOThjN2FkNGY5ZmNmMWI3IGxlZ2FjeS10cnVuaworMzc2NTEgYjg3NzhjZjdkMGUzNzM4NzFmZWYwMzk5NzI2NDkyNzNhNzc4Nzg0MCByZWxlYXNlMjMtbWFpbnQKKzM3NjUyIDMzNDJiYzIzMDBjM2FjMmU2Y2NhNWU3ZjcyYjdhNjUwNzkyYzBiNTYgbGVnYWN5LXRydW5rCiszNzY1MyA4ZDhiMzkyMzRkZTllNmYwYmU5NzgyNzJjZmY1MjNhYTQxN2Y2YzdiIGxlZ2FjeS10cnVuaworMzc2NTQgODNhMDE5MTI4OTlmNjA0NjAwYWRhZTdhZmYxMTM2MjhjYjg4YjYyOCBsZWdhY3ktdHJ1bmsKKzM3NjU1IDZkZmZkYzMzZmM2YzVjMDFmMDFjYzk2ZWY3YTVhYmE4MzQ2MGI3MjQgbGVnYWN5LXRydW5rCiszNzY1NiBkMDYzZTRkZTU2NzYwMGVhNmM3YjdlYWQ4OGIzN2JmMTNkNDg4ODYxIHJlbGVhc2UyMy1tYWludAorMzc2NTcgMjIzZDgyMjYwNDUyYWFjMjVjODU4ODA3MTIxYTQxZWUwZDQ1MDQzMCBsZWdhY3ktdHJ1bmsKKzM3NjU4IGEyMjQzZDY2ZDQwYmRhMWUzMTk4NWM2OTNjZDhjOWY0MDAwNjVmMjIgbGVnYWN5LXRydW5rCiszNzY1OSA2OWM5Njg4MWFhYWRiNDg0ODJkMDI5NDk1OWMzZmE0NTgyYzUwZDlkIHJlbGVhc2UyMy1tYWludAorMzc2NjAgNjgxOWJhMDIzNjY3NmZlMDNjNjJiMDEwNWU4ZTFlYWZlY2I2ZjRlYiBsZWdhY3ktdHJ1bmsKKzM3NjYxIGFlYjZmZjMwODg0OGM4NzVkNWU0YTNiNTIzMzBkNzAyNmIzM2UyZTUgbGVnYWN5LXRydW5rCiszNzY2MiA0ZmVkYzUyOWFkMzJkYjk1NzA0NGMxZmU4MWM2NWEyMzM1NDc0NDU2IHJlbGVhc2UyMy1tYWludAorMzc2NjMgYjFhOWVhNmU4YWUyMGEzM2FjMGU2Y2NlYzNjMDQ3ZjI4Zjc2NzhiOSBsZWdhY3ktdHJ1bmsKKzM3NjY0IDE5OWRhY2UwMjRiYTA0NGQ0NTBkZGYzOGJlZjZkNzlhZmY1MTcyYjMgbGVnYWN5LXRydW5rCiszNzY2NSBkNDg1ZTc4YTQzZDY1ODRiYmI5MjhlMzYxNjRkNDJkNGVlZmU5YmNlIHJlbGVhc2UyMy1tYWludAorMzc2NjYgNWM4NjI0OTZhOWY2YWE4MzFkYTlmODdlODJhOTYxMGFmZGI1OTE0OCBsZWdhY3ktdHJ1bmsKKzM3NjY3IGQyZTk1OTQwNDgyNjkyYjhlOGJhNjE3MjNjMjdhZjc4NThlMjQzNGUgbGVnYWN5LXRydW5rCiszNzY2OCBlOWNiZTBhZGIyOGFlN2ZhN2FjMjMxODlhZmViOGMyZWYzMjM0MTI3IGxlZ2FjeS10cnVuaworMzc2NjkgYTllNjA1MTQwMDc0NzdmMjBjZjQ4ODI3NmRkMTU4NmQxNDI5M2Y4YiBsZWdhY3ktdHJ1bmsKKzM3NjcwIGEzZGZkODAxNTMzYjYxODQxZWQ3MWM4YmE5YTkxNGZhYmM0N2E5M2EgbGVnYWN5LXRydW5rCiszNzY3MSA0N2IzODQ1MTk3NzU3NTYwNmRlMmRiZGRhNTc1NjVjMTM1YzY4YjdiIGxlZ2FjeS10cnVuaworMzc2NzIgNTllMGZmMGNkM2Q0YzkxZTJiZmNkMzllYTYwZjY4NjVlYzkwY2FiNCBsZWdhY3ktdHJ1bmsKKzM3NjczIGQ0NDM1MDVlN2VlYzE4Yjk0NjdiNDkyZGY2ZDUyYmEyNTBlZTU4NGMgbGVnYWN5LXRydW5rCiszNzY3NCAzZmYyNTI3MTVkOTNiMDRlZmVkNmY1MmVhMWEyODgzMTBhMTI3Y2YyIGxlZ2FjeS10cnVuaworMzc2NzUgMWM2NzZlODkxYjNmOWE4MzcyYTEzZjZmMzI2OWNhMWQzMDYxNWUyYSByZWxlYXNlMjMtbWFpbnQKKzM3Njc2IGFkOTA4ODhiMTdiYzAyMzQ1ODkxZTFlZjZkMmE2YTlmYTY3ZDhkZTUgcmVsZWFzZTIzLW1haW50CiszNzY3NyBmNTQ4Njg4NTViMWNjZGFhMmE3ODE1MGJmZmM2Yjk3ZDgwZGNjMjA0IGxlZ2FjeS10cnVuaworMzc2NzggODIxNDJhMjRlODQ1YzMzYmQ5Y2YwMTA0MTlhZWVmZGUzODY2YWIwYSBsZWdhY3ktdHJ1bmsKKzM3Njc5IDBhZmIyNTMwZTk4NmFhMDZkZDYwZmIzNzAyZjQ1NzQyMzE1NDI5MjkgbGVnYWN5LXRydW5rCiszNzY4MCBiMGYwYzU3YjFlMDU1NzAyMGIyMmExOTAwYzVkMmQyYzAyZTNiZWEwIGxlZ2FjeS10cnVuaworMzc2ODEgZWQwNDFlMGU0NTFlZjExY2JlOTE4ODJlOTA0NzhmYjc2ZjI1ZmEzMSBsZWdhY3ktdHJ1bmsKKzM3NjgyIGIzYTMwZTI4NDJiOTY3NWJkM2VjYTM5ZjFhNDcwNmQ0ODIzZGVhOGMgcmVsZWFzZTIzLW1haW50CiszNzY4MyA4ZDM4ZjJmMjE1MWNjYTVhYTIxOTgwMGVhNWMwZTI2YTk2OWU4MGE5IGxlZ2FjeS10cnVuaworMzc2ODQgMmExNTMxOGM0MDM4YzMwNDdkYzljMWM4YTJhYTQ5M2NlMjFkMzZhMiBsZWdhY3ktdHJ1bmsKKzM3Njg1IGYxNDMyOWE3ODk4MTkxMjE1MDU2ZTNmNTlkZThjMjNiODhkZTljNDIgbGVnYWN5LXRydW5rCiszNzY4NiBiZjE4Y2FjYTA3MzA0MzcxNzA0ZGRhMjZhNTUzZGY2ZjMxY2FiMzgzIGxlZ2FjeS10cnVuaworMzc2ODcgZGI4NzEwZjEzNjUwODhlYmQwMGY5YmMyY2UxYzZlZDI1M2FkZDVhOCBsZWdhY3ktdHJ1bmsKKzM3Njg4IDI5Yjk0NWJjMGExN2YxYzlhOWIxYTZkZDhjYjYyMWFmNmViYmQxOWEgbGVnYWN5LXRydW5rCiszNzY4OSBhZWQyNTI2ZGExZmM3ZWQ5MzQzZDY0YzljODNhNmUzNGI5ODY4NzIzIGxlZ2FjeS10cnVuaworMzc2OTAgMjhlZjBhM2Y1N2Y2Y2Q3ODQ4YTc2ZmIyZmE5NjMxYjZkMzQwNjJjYyBsZWdhY3ktdHJ1bmsKKzM3NjkxIGQ5MzhiOWVkMzJmZmVjYWU4YzQwNDk0NWMzY2U2MmI4OWJiNGFkOWIgbGVnYWN5LXRydW5rCiszNzY5MiAxN2Q4NjYxZTdkMTNhYWU0NmNjNDBjNWM5MTg0MjY0MTUzODI4YjY1IGxlZ2FjeS10cnVuaworMzc2OTMgNmM0MTY5NTI4NGY2ZmY3Yzk0OTc3NGY1NjE1NGQxNGRiZjBjMjQ3ZSBsZWdhY3ktdHJ1bmsKKzM3Njk0IDMxNzEwMWNmZmI3MjkzNDU1MjdiZGZiMzgxM2IwZGQzZTI2YmQwZTkgbGVnYWN5LXRydW5rCiszNzY5NSA5ZmZjMzQ0ODkxYTYyNmVkYWEyNjAxZmNhZTQwNTliNjQxYjMxZjE5IGxlZ2FjeS10cnVuaworMzc2OTYgNjI3Zjc3ZTNjZWI2NTFiYTFkMGFhZDYwYzRmNTZiOThjYjY5MDU1OCByZWxlYXNlMjMtbWFpbnQKKzM3Njk3IDEwNTEyY2ViYTMwYzU1Y2U2NGQ1YTI2YTdkOTBmOWUwZGI2NDgxMDIgbGVnYWN5LXRydW5rCiszNzY5OCBlZjE0OWVhNTk0YTRjMGY0YTgxMzhmZDRiOTlmOGE3ZmYxMTgzNmNhIGxlZ2FjeS10cnVuaworMzc2OTkgOTkxZDM0OTBmNjk4ZWIyYWY4ZDM4MDU2MjUzMmQ3MjdhNTFlMjk2ZSBsZWdhY3ktdHJ1bmsKKzM3NzAwIGRjOGVjZjcyNDQ4OGMyNmY3NWQ5MDIzYmY0YWUyNjU1MTM2ZjQ1Y2EgbGVnYWN5LXRydW5rCiszNzcwMSBiZDU1ODIxMWJhNTUyYzcxNDlhODM2YzhkNmYyYmI5ODhjY2FlYjAwIGxlZ2FjeS10cnVuaworMzc3MDIgZmRjZTNkMzliZWMxNGQ0ZDQ3MDQwMTU1MmU3YWM2Njc2NjBjYmYyYyBsZWdhY3ktdHJ1bmsKKzM3NzAzIDRkZDk3YzM3YzJjYzJjMzM3OGYyYzkxNmEzN2NkMWZlYTdhZDg5OWMgbGVnYWN5LXRydW5rCiszNzcwNCA2ZmMxMDMwNmJmMzEyYmFjOTkzYzc1MjFmNjUzNzFjOTJjNWMxMDcyIGxlZ2FjeS10cnVuaworMzc3MDUgMTA1YmZlMTc2OWI3OTZjNDI3ZjVlMmZkYzZhMzAwMzdjZGY3MGU0ZiBsZWdhY3ktdHJ1bmsKKzM3NzA2IDk5M2IxMjhkNGUyOTRhNTE3MDkzNTRmYmIwMGZiNGQyZDEzOGYxMmIgbGVnYWN5LXRydW5rCiszNzcwNyBhYzRmYTk0MmY5MmU3OGE2Y2JkZGQ2YThkN2RiZmQ4NGQ3M2UwMTI4IGxlZ2FjeS10cnVuaworMzc3MDggZWQxMzkzNzA3OWRmMTdjYWMyNmM5NzA2NzJiYTQyZWNhMjNhZjNkMCBsZWdhY3ktdHJ1bmsKKzM3NzA5IDAzMmYzNDJlZmNkMjRmMjRjNjZjZTZiZmIwZWMxMzgwNzdhNDVlZGEgbGVnYWN5LXRydW5rCiszNzcxMCA3OWJjYWQxNGU5NmFhYTc3NTg5NmQ0ZmU0NDg0NzUzM2JkOGU5Mjc2IGxlZ2FjeS10cnVuaworMzc3MTEgNTUxMDk5NWVhMjZmYjVkOTQ4YTA0ZGY5NjE5ZjcwNWM3ZGRlY2I0ZCBsZWdhY3ktdHJ1bmsKKzM3NzEyIDMzOThjNWNlOGI3YTA5NjA3NGU0ZjFiOTE4MDA0ZjhhMDhlNjUzMjggbGVnYWN5LXRydW5rCiszNzcxMyBkODM5OThhNzIxYTBhMmVmMWU0MzdmM2Q2ZDhhMDQ5MWIxYWE3MjMzIGxlZ2FjeS10cnVuaworMzc3MTQgMjYyNTUzN2E2ZGZhZGQ1MzYwOGNjNzgzMjk4ZmY5YzUzOGM0OWNlOSBsZWdhY3ktdHJ1bmsKKzM3NzE1IDJlZTAzMDFiNDgzY2UyYTg0ZjdlMzliOThkYmFkYzdmYjJiYTNlZjkgbGVnYWN5LXRydW5rCiszNzcxNiA5NDM4NjJiMmI0ZGZlNTZlNThkYzUyZTZlYjBkMDg1NDFkOWQ3YTBjIGxlZ2FjeS10cnVuaworMzc3MTcgZDQxYWMxMWU5YzYwNGE2NTk2YzNjZjE0ZTNkYjgzMzQzZThkMTE5MiBsZWdhY3ktdHJ1bmsKKzM3NzE4IGVlYzMxN2VlNWMzNWI4Zjg3MjEyNWEzMWY1MGI1NGMxNThmMmI5ZDkgcmVsZWFzZTIzLW1haW50CiszNzcxOSAxY2QxOWRhYWE5ZDQyZmFiNzIyMzIwYThkOWFmY2MzMmU5MjliMGI0IGxlZ2FjeS10cnVuaworMzc3MjAgNjBjNjBkYzc1Yzc3MjY0YjllMmMyZjVmNGJkNmM2MWZlM2NmYjFhOCBsZWdhY3ktdHJ1bmsKKzM3NzIxIDZkYTA3ODczYTBlZTM3NTQ5NWRiOWI4NWZkMjk3YmFkYjNhMTgwY2EgbGVnYWN5LXRydW5rCiszNzcyMiAwZGRhZThiMGZiMTlhMzgzMjNiNDJiYzViODQ2M2NkZjE5YWQ4ZGIzIGxlZ2FjeS10cnVuaworMzc3MjMgMzA3MzI0MzQxMDdiNmNmZTZkOTI4YjQ0MDBkMzIyZTcyMDdjYWI4MCBsZWdhY3ktdHJ1bmsKKzM3NzI0IDM0NjcyODgwODlhMWUyNTg2M2U1ZDNkNzQ0MWE1NmY0M2M0ZTUzYjIgbGVnYWN5LXRydW5rCiszNzcyNSA0YTNlYWExYWEzYWZkMmY1Yjk0Y2UyZWQwYjJlOWRiN2RhYzIwZWM3IGxlZ2FjeS10cnVuaworMzc3MjYgZmFjYjVhMmY0YjUzZTk3ZDMxMmRiMzE5MDk5ZWI3OWQ0OTE1MTNhYyBsZWdhY3ktdHJ1bmsKKzM3NzI3IGI1ODViY2NmYjI1MDU0M2E2NmJiOGVmNGU0NWQxMGEzMzQxMDdlZGQgcmVsZWFzZTIzLW1haW50CiszNzcyOCA2YjYxYWYwODM0OTMzMTNiNTM4ZTUxNTRkMjc2ZjFmNTg3Njc1NTdiIGxlZ2FjeS10cnVuaworMzc3MjkgZjE5NjcxNmVhMGRiNDVkNjM3NjdmMmQzYjc3ZWNhNDFmYzEzODI0ZSBsZWdhY3ktdHJ1bmsKKzM3NzMwIDI2MzJmNDM0MDlmNDk2NWFjZWI3MTI1MzA5OTVlNGQ0NDIwY2VlY2IgbGVnYWN5LXRydW5rCiszNzczMSAwN2Q5NGExNjJjZjg5NTFlZmFkZjY4MzUxNDhiMzY3MzhlNzcyMGZmIGxlZ2FjeS10cnVuaworMzc3MzIgMzA4ZThlZjJkM2VkZjVmNTUxYmZiMTIxOThhMjViNTA1YjllM2Y3ZSByZWxlYXNlMjMtbWFpbnQKKzM3NzMzIDIyM2QyMGFmYzhiNWUxZWI4YzkzZmE2YTFkYTE5OThjMzQxOGZjZTkgbGVnYWN5LXRydW5rCiszNzczNCA4MGNhMWE4YjIzMjE2MmUwOWQ3ZDUyNjYzYTUyMTZhZWRiNTIxN2FiIGxlZ2FjeS10cnVuaworMzc3MzUgNWFmYTUyNzdmY2Q5NzkzYWUwYmYxYzhjMTY5ZjdhZDMwNjBmY2Y1YiBsZWdhY3ktdHJ1bmsKKzM3NzM2IDE4MGRjODI5ZWZmZjgxNzUxZWZiODEyY2YwZGEwNGJhZmJmNWYwOGIgbGVnYWN5LXRydW5rCiszNzczNyBiZjJkMDNkZmMzOGUyOGYxYzRjNDkxZjk3OTMwYjIyYjkyOWQ1MzM3IHJlbGVhc2UyMy1tYWludAorMzc3MzggMGRjM2Y5NzA1NTc3MDczYWMwNTBkOWUwZTEwMTM5ZmMzNDc0NDc1NiBsZWdhY3ktdHJ1bmsKKzM3NzM5IDI0ZmMzZWFhMTllMGI1ZGQ5YWNmNzlkZDlkNDg3Y2QyYmYwZjE3YTggbGVnYWN5LXRydW5rCiszNzc0MCA2MzNjYWRlYmY2OGQ0ZGQ4Y2YwYzkxOWZmNTIxNDM3NmJlYmM4YzQ5IGxlZ2FjeS10cnVuaworMzc3NDEgYThjOTc5Y2M0ZmE2NThkODI2ZDIxMDQ4ZmQ3ODFhNTIwYjAzYjI2YiBsZWdhY3ktdHJ1bmsKKzM3NzQyIGVmNTAzMGJjNWY2NzFjNGIwNDgxYzg4Y2JhOTEzMTU4NDljYWRiNmUgbGVnYWN5LXRydW5rCiszNzc0MyA2ODczNjJmYTQ3MWMzYzA5MzE3MDU2NmY1OWU0OWIzZjZiM2ZkYzEyIGxlZ2FjeS10cnVuaworMzc3NDQgOGEwOWM4MmU0MjYxMGIwZDQ5NmZkMzE4NTc5NGZkN2ZiMzQ4NThlOCBsZWdhY3ktdHJ1bmsKKzM3NzQ1IGJjMDQyMWI5NjU3YTAwNThhYTk1MGNhY2U4YzNiMDVlNzU4NWJhZDUgbGVnYWN5LXRydW5rCiszNzc0NiBhNmY5N2UwZTYzMTg5NjRjMjZjOGZiYWUwZDQwNTZjMTNhNTM1ZWMwIGxlZ2FjeS10cnVuaworMzc3NDcgNWVjYTI0OGY2MzllNDJmNDA3MmM5YzdkZjlhYmY5Y2QzZjRkM2Y3MSByZWxlYXNlMjMtbWFpbnQKKzM3NzQ4IGMxOWU4MTExMjA1OTMxNmE2ODI0M2Q3MGQzOGYwMmIwMjc3NWUzOTQgbGVnYWN5LXRydW5rCiszNzc0OSBhNTc2Y2YxYWM2YTA0ZTc4MmY3YTcxMjczMzJiNWFjODg2ZjE4ZDY3IHJlbGVhc2UyMy1tYWludAorMzc3NTAgOTc2ODYyNGYwMzVmYTIzOGZlOTU1M2Y3YzYzNWM0MDNlNDUyNTM1OCBsZWdhY3ktdHJ1bmsKKzM3NzUwIDBjYjFiYTkyMjQxYmEyOTU3NTUwNTgyOGVlZTI0MWNkMTI2ZDQ2OTMgcmVsZWFzZTIzLW1haW50CiszNzc1MSAwZDZkYmViZDhiNGEyZDA0MzM5OGEyNGMxOWUwMTY4NWY3MmU5NjQ3IGxlZ2FjeS10cnVuaworMzc3NTIgNTNhYTAxOTM3MGRiNTBhM2UwMjljNTc0NTIxMmJiNTEwNjllMTRlOCBsZWdhY3ktdHJ1bmsKKzM3NzUzIGMzMDhjNmJhMDAyZjViNWIyNDg5NzE0ODA4YjQzNDNmZmE1ODhmYTAgbGVnYWN5LXRydW5rCiszNzc1NCBmZWI0MDE3Y2JhZDQyYTc0NWMyNWIxYzc3M2RjNGE2NjExZTg3NzZlIGxlZ2FjeS10cnVuaworMzc3NTUgNzg2ZDNiOGI5YmVlZGJhYzQ0Y2ZiOGI0NGYzNWVhMTRlMWVhMjIwZCBsZWdhY3ktdHJ1bmsKKzM3NzU1IDdlMzg3YTlkY2M3OTk1NGE3NzY5NWFkZWY4YjU5M2RhMzViZTEyMTQgbGVnYWN5LXRydW5rCiszNzc1NyA4NWRiMDE2ZThkYWM2M2VlOTU5YWVkNDU1ZTkxODZiM2YwODJlMTU1IGxlZ2FjeS10cnVuaworMzc3NTggZDc4M2Q1MTcxODExOWU0MTA2OGMzODk2YzViYzk1ZTg2ZTlhY2M5MCByZWxlYXNlMjMtbWFpbnQKKzM3NzU5IDcxMGI3ZThkMmZmMmE2MGI4NjU3M2U5M2ViMzBlYjA2OTdhNmU4ZTAgbGVnYWN5LXRydW5rCiszNzc2MCBkZmI3YjA3ZGNkZWRkMDA5MmE1YmNhY2Y2MjBlZDZiMzFkMmQyZmNkIGxlZ2FjeS10cnVuaworMzc3NjEgYTUxMjlkNmFiMWNjNmE1Mzg1ZTk2MjFmOGQ3YjdmNGMyNGI5MGNjNiBsZWdhY3ktdHJ1bmsKKzM3NzYyIGViOTc5YzNmMTRiYTk2M2Q5NTQyZTMzOTBmYWZlMjc4ZjliMDk2NDkgbGVnYWN5LXRydW5rCiszNzc2MyA1Y2MzODM0MDEyOTRmYjRjNTRhM2Q3Mjc0Y2Y1NTBjZmU4ZTJjMjM5IGxlZ2FjeS10cnVuaworMzc3NjQgYWI2YjEwOGE4Y2VjODlhMjBkYjA1NzdjNDQ2MzliMGI4YTcxODA2ZCBsZWdhY3ktdHJ1bmsKKzM3NzY1IDIwODczMjk1ZTkxNjA3NTc0ZWI0ZjEwNjdjNTk5Y2IwOGE1ZmU2MjkgbGVnYWN5LXRydW5rCiszNzc2NiAxOWMyZGNjZmFmNjUzZDk2NzdhZGU3OGUxY2I2YWI1ZDk2ZDg2OTI0IHJlbGVhc2UyMy1tYWludAorMzc3NjcgMTMyODlhNzQ0MmMzN2Y1YjQ5Y2Q1NjI4Yzk4NjUxZTk2NjUxOWUyZCByZWxlYXNlMjMtbWFpbnQKKzM3NzY4IDM2MDI0ZmEzYmY0ZjRlYTQxOTNlYzZkMjlhZmZiNzZjY2RhOWY2Y2IgbGVnYWN5LXRydW5rCiszNzc2OSA4ZjhjODliYmU0MzlkMGUxODRlNGVlMWRkOGRhZTA3YTU5MWU0OGIxIGxlZ2FjeS10cnVuaworMzc3NzAgNWVkMWQ5N2I0OWExMjQ1OWEwYjZiY2E3MGRiZTkwZmM4ZjliZDExNCBsZWdhY3ktdHJ1bmsKKzM3NzcxIDdlZDg5OWI2MTE4MjgwNmM5YjE2ZDE2ZDA2NzA5YTYyZTI5ZjhmYjkgbGVnYWN5LXRydW5rCiszNzc3MiAyZmE4NzI3ODRlYjYyMDFiMjFlYTczYmY2YzkxZGFmMGFiNWE2YjI1IGxlZ2FjeS10cnVuaworMzc3NzMgYjNmZmE2NGZmNGM2NDcwMjNhMjUzNzkyYTE1ZjUwMmRkNGMxNzdkYiBsZWdhY3ktdHJ1bmsKKzM3Nzc0IDk5YjkyMDE4NjM2NzFiOGQ2OTBlZTI2NTBmZDE3NTAwNjc5NDAxMDQgbGVnYWN5LXRydW5rCiszNzc3NSA5YTg2MjQyNWE5OGExNDZjYWQ2OWExMjkzNTUzZTI5MmYyODRiOWE4IHJlbGVhc2UyMy1tYWludAorMzc3NzYgOWNlNTc2NDAxOWFlZjA0NDYxNzBkMTM0YTEyMTA1OWVjZDNhNWNjMSByZWxlYXNlMjMtbWFpbnQKKzM3Nzc3IGVhNmVmNDBkYzkyMjBmNDc1N2M0YmYwY2UxNTBkMWVkOWU3ODAwMmIgbGVnYWN5LXRydW5rCiszNzc3OCA3ZTg4YzA0MzdlY2M2MjBlYTdhZTNiODgxMWY3YjY3ZDQ2N2U3NTUzIGxlZ2FjeS10cnVuaworMzc3NzkgMDIwMTZkNWE0ZGM2YTgzNTY5ZGJiYjE4MjZjMmU2YmVmOGJlYzU0YyBsZWdhY3ktdHJ1bmsKKzM3NzgwIDI1NzE0ZTBmYzg5ZGIxM2NkZDdiYzg4MGI3YzMxZDM3Njg2MzFhNDYgbGVnYWN5LXRydW5rCiszNzc4MSA4ZTkxYTdlYWE3Yjc5OTViNjU2ZTFhMzZjMDdjZjU4MGRjMGE2MGU1IGxlZ2FjeS10cnVuaworMzc3ODIgODY5ODY1M2UwNWZjMTA5MWI1OTEwMjI4YjcyNmQyMzY0YzVlNzIwZCBsZWdhY3ktdHJ1bmsKKzM3NzgzIGQ4MmZhOTMyYjQxYmMwMzkxNjU4MTE2YmMzZTk3YjhjNTNhOTNjZjMgbGVnYWN5LXRydW5rCiszNzc4NCA3ZmQ0ZDM1MGZmODI2MmI4ZDU4NTA5N2RkNzk1NmExYjBiYWJiZDE1IGxlZ2FjeS10cnVuaworMzc3ODUgOTE3M2I5ZTBhYjc3MzQ5NzA0MGViYmI3NDIzMDcyOTFjMWEzNWM1YSBsZWdhY3ktdHJ1bmsKKzM3Nzg2IDAxOGRjYzdlZjg4N2RlYmM3YTc4ZmQ5ZGNjNmZlOTI5ZmY4YWZlZWYgbGVnYWN5LXRydW5rCiszNzc4NyA2NjJjMTU1MTA2ZTQyNWMxMDVmOWVmMmY5ZjhiMGY2ODQ5MmM0ZmExIGxlZ2FjeS10cnVuaworMzc3ODggZTQ0MDQwNDZlNTUyZjg2ZDc1YTFkYmYxZGU2ZjZhY2VmOWEzOWZhZiBsZWdhY3ktdHJ1bmsKKzM3Nzg5IDgzOTBmOTM5ZGNjMWYzY2I4MzA4MjhhZjlmZTQxMzc1MzVlZGFlMWMgbGVnYWN5LXRydW5rCiszNzc5MCA4MjllZTMyNWExOGU1Mzg3ZmY3ODkzN2IyYzM0YzM4OWY4Yzc0ZmY0IGxlZ2FjeS10cnVuaworMzc3OTEgMGQ0ZWNjMzFjZmQ4M2RiNWQ0YWQ2YzQ3OGZjMTlhZjQ2YzI5ZTQ3OSBsZWdhY3ktdHJ1bmsKKzM3NzkyIDY2MjIzYTllYmU0ODYzNTljMWY1NzdiOGU4NmVkYWJmMmU0MzgxM2MgbGVnYWN5LXRydW5rCiszNzc5MyA0ZmExZGYzYjA2MmY0OTdhMjNjNDhiNDExNmI1OGY0NjlkNTdhODI4IGxlZ2FjeS10cnVuaworMzc3OTQgNTQ4ZjM4YTU2NjY5ZTIyZjdjZGIzODNiMTFlYWQ4YjFjYjFlMjMzZSBsZWdhY3ktdHJ1bmsKKzM3Nzk1IDU5YzQzZmQ4YmE3M2YwNzg4ZDFhZGY2NzEzNzUyN2VlOWZlMGZkZjIgbGVnYWN5LXRydW5rCiszNzc5NiBlYjIzMTU0NGMxYWQ1ZTYwNTBiOTdhMDJkZjk2ZDhiNDZmODcxMTc4IGxlZ2FjeS10cnVuaworMzc3OTcgMGFlMjhjM2E4ZDI0MDY4MzhmMjg2MzNmYzI0NmI5MWJkYjFjNDI2NiBsZWdhY3ktdHJ1bmsKKzM3Nzk4IGFiNzMyMTc3MzBkYjIzMmUzZTA5ZDI2YTc5Zjg4NWQ5ZTQyOWI5ZjcgbGVnYWN5LXRydW5rCiszNzc5OSBlNGUyM2UzYTc4NDRiY2VlZjBlY2EzZTEzZjU2OTg3OWQ0NTVhM2EzIGxlZ2FjeS10cnVuaworMzc4MDAgNGRlMzU0Yzc4YTdlZmJjMDQ4NWJkZDhhMjVkYzE4MjJmMzg2ZGI4ZCBsZWdhY3ktdHJ1bmsKKzM3ODAxIDgxY2JmMDMxNTQ5YTFmOWUwYjEwOWQyMzIyMzVkNjljNmUxOTNmOWYgbGVnYWN5LXRydW5rCiszNzgwMiA1ZmJiZTgyMzNiNzYzMzM2YmExZWExYzg4MGU4Y2E2NjcyMWJmNGJjIGxlZ2FjeS10cnVuaworMzc4MDMgZGZkMDdiN2JlNDA3MmY3OTMzZjExYWYxNTEzOWYyODZkNTJlZTg1YSBsZWdhY3ktdHJ1bmsKKzM3ODA0IDQ2M2EwM2E1Y2EyMjgzZTZhYjkwM2UwMzMwMjBiMzMxOTJlNDRlNWYgbGVnYWN5LXRydW5rCiszNzgwNSA4MmQwMjU2NDEyM2RmYzJjNTE2ODI2M2YyMTMwMzY5MGE3YjUyODQxIGxlZ2FjeS10cnVuaworMzc4MDYgMzU5ZWJjNTYwOTNlN2ViMmY0NDk1Y2Y0MmY3NDQ1YjFkOGFjNDg1MyBsZWdhY3ktdHJ1bmsKKzM3ODA3IDk2MTc5YzA5NmQ2NWFkY2EzYTk2NDAwN2MxOTE1NTczMjdmZGMyZmUgbGVnYWN5LXRydW5rCiszNzgwOCA5MDQ3NzFiZWYzZjQ3ZmRiZDFmOTI3MTNiMGQ4NWVkOGM1Y2UxNzhlIGxlZ2FjeS10cnVuaworMzc4MDkgYWZlZTNjMzNhZTZkOGM3NTU5MGE4MTRlMjA3MWU4NGY3NGJjZDdlYiBsZWdhY3ktdHJ1bmsKKzM3ODEwIDhiMmEyZjdjMTNiODBkYzc0NGFiODYxNWJlMzk3MTJkYzlmZWQyZmEgbGVnYWN5LXRydW5rCiszNzgxMSBmMmNlMTViMDJiYTNmZWJiZGZlYzIxODA5M2JhMDY4NjBkNGI2MGM5IGxlZ2FjeS10cnVuaworMzc4MTIgYjk4MTliOWEwZGFkNTQyMTE3ZWVlNGVkNjcwNjAzNTQyZGEzMDhmZiBsZWdhY3ktdHJ1bmsKKzM3ODEzIDYzM2JlNDNiZWQxN2QwMzdiZmM5YTM2YjVkZTMwNTYzYjVhY2FhMzUgcmVsZWFzZTIzLW1haW50CiszNzgxNCBlYjM0NGUwM2NjNzEyNTYyZWUxMjgyZWY2MGM0MzA0MzkzNGZhMTE3IGxlZ2FjeS10cnVuaworMzc4MTUgYjRmMGFkODE1OWM3MzRkZjkxYjkwNTkyODYyNDU3YjM2OGYwNjE4OSBsZWdhY3ktdHJ1bmsKKzM3ODE2IGUxZjE0MDI2MDk0NzhhZjc4NjQ0YjUzMDcwZTJlNTI0OGVmNjcxZWYgbGVnYWN5LXRydW5rCiszNzgxNyAwZmU4YTE2YTMzNmFlYThhNDY4MWIwZGMyYmFkZDk3YjY5MDk5MWE5IGxlZ2FjeS10cnVuaworMzc4MTggNzdiMWMxNTE3NGI0NGRiZjEyMTE3NjVkNzVlMjZmZGE0NzMwM2UzYiBsZWdhY3ktdHJ1bmsKKzM3ODE5IDk0MmY4NzQzYWRmMDI3OGI3ODgyZTBlN2U3MGE3M2RmYzVkN2JiMGMgbGVnYWN5LXRydW5rCiszNzgyMCA0Zjc0NTZkMDNjYjlkZTYyMzk4NTBhNjllNjlkNjRkNWY3ZjhlNmJlIGxlZ2FjeS10cnVuaworMzc4MjEgYzg3MWVmOTY2NTVjOGQzOGJkYzk0NDMyOWQwNDkyNTNiYWQyNGY4OCBsZWdhY3ktdHJ1bmsKKzM3ODIyIGRjODA0NzZiNzgyYjc5MGVjZGE0Mjc2MDgzYmFmYWJlMGZlZDM5MTUgbGVnYWN5LXRydW5rCiszNzgyMyBjYWRkM2U4ZDM0OWYwOWQzZWJiOTIxZTRiMmEwYTc1NGI2MDkyMmM0IGxlZ2FjeS10cnVuaworMzc4MjQgOTU4ZGM4YjdhODI2YTE4MDVmOTVhZjVmZjBlZjNjYzI4MDJiNTc0MSBsZWdhY3ktdHJ1bmsKKzM3ODI1IDQzNzUwMDZlNWYwNzlmNzJiNmM5Yzk1YjM4ZjQ0YzMyMjBkNDczNGMgbGVnYWN5LXRydW5rCiszNzgyNiBmYmYzMDY0NmNkMTM2NDFmYjc5OWI1OGYzM2U0N2RiYjU0NjZkYmNlIGxlZ2FjeS10cnVuaworMzc4MjcgYTkxZTkyYjk4MmFjYWZmMDM4YjdkNTgwMTA5Y2NlNjcyZGY3YTE0NiBsZWdhY3ktdHJ1bmsKKzM3ODI4IDg5M2Q0NjU3NjczN2FiYmE4Y2NjM2NkNTY0YjBjMzRkMDZhZTZlN2YgbGVnYWN5LXRydW5rCiszNzgyOSAwNmVlNTNhNzZmMDE3M2FjMDQwY2I5NDI1YTIzYTEwYzU1MGU3YjM5IGxlZ2FjeS10cnVuaworMzc4MzAgOWJkOTgzY2ZiZTgxYmM4NjViNGY5ZGE5OTQzNzQyYzZiMjUwMzEzZSBsZWdhY3ktdHJ1bmsKKzM3ODMxIDA3MzlmMzZhZDU0NDE5YTQxMzE0ZWQwZGJmNTRlN2M4OTc1ODllMmMgbGVnYWN5LXRydW5rCiszNzgzMiBmZWZmNGU0ZjM0NWNhNWUzMzZmN2IwMGVjODA5MTdkNDU5NDdlMjdkIGxlZ2FjeS10cnVuaworMzc4MzMgMDIzODAxMzMyMzk1NWViNGJhMmE0MTI1MDc5ZjdmNDM5ZTZkYTNiNyBsZWdhY3ktdHJ1bmsKKzM3ODM0IDIzYjEwM2FiYjhmN2ZhN2E3OTZmZTM4OTUwMTg2MTdjMWYwODhmYjkgcmVsZWFzZTIzLW1haW50CiszNzgzNSA1M2IzZjUzZDdhMGQzMmE5ZjU1MGI5OTNiMmI3MmZhMDQwNmU1ZGRjIGxlZ2FjeS10cnVuaworMzc4MzYgNGNiN2I5MjM2ODFlNDdhZWI2ZTNlNTFiZjQ0OWRmZTllZGI1NzA0NCBsZWdhY3ktdHJ1bmsKKzM3ODM3IGQyNTYxNWVmNWQ4ZjYwNTk1MTYwM2E2ZDVjZmZiMjA5ODkzYjFiNjAgbGVnYWN5LXRydW5rCiszNzgzOCAyMjEzY2RiM2NhZTc5M2NiMGRkNmVhZDI4ZjI0ZDk4YmFjODBmMTdjIGxlZ2FjeS10cnVuaworMzc4MzkgNDM5NDQ2MzUxMGZiMmRiOWUwOWQ4ZDRiN2Q2ODRkNDUwZTBlZjU2NCBsZWdhY3ktdHJ1bmsKKzM3ODQwIGRjZGEwNmNiMDc4YTNlZjk2OTg3YmUyNGE1ODg0YjgwNDUwY2RjZWYgbGVnYWN5LXRydW5rCiszNzg0MSAzM2E4NDZiNzc3YTg5MWE5M2JjM2ViM2NlYWY3ZjJkMDk2Mzc1YTYyIGxlZ2FjeS10cnVuaworMzc4NDIgZjkyNjE2ZjhjMzNjNzQ1MTExOTgyODhjMDVlMWEyOTIyZDZkOGJlNiBsZWdhY3ktdHJ1bmsKKzM3ODQzIDQwMDVmNzlkMjgxYWQwZGYyOWZkODMyOThiZDQxNDk3MmVlZDFkMjMgbGVnYWN5LXRydW5rCiszNzg0NCBlYzI5OTU1Yjg1NDM1YmY4MTYwMjgzMWQ5N2Q4YWIwYWI0OGFlZGY4IGxlZ2FjeS10cnVuaworMzc4NDUgNDY4YTEwZWJiY2Q1MDFhMDg0ZmZmZjRjM2QyOGIwYmYyY2EyNzk3MSBsZWdhY3ktdHJ1bmsKKzM3ODQ2IDY1MjVlMDI4YWZiM2M5YzcyNmU4NDk4NDllMGZhNjEyZjQ5MDA5YzMgbGVnYWN5LXRydW5rCiszNzg0NyA3MDEwYTk5YjVlNjEyNDE3NmVjZTQyMTY4OGFlZDkwODU5NWJiZjczIGxlZ2FjeS10cnVuaworMzc4NDggMzJlZDI4NjFjOTdmMThkZGM3N2M1OGZhNWNhNmJiMTdhODY2NjZiMSBsZWdhY3ktdHJ1bmsKKzM3ODQ5IDQ5YjZlOTY2ZTU3ZjA4ODQ2ZTI3ZjYyZjIyMjNhNmQ3ZTIyNWQwOTYgbGVnYWN5LXRydW5rCiszNzg1MCA0ODk2NTZkYmRmNWE3ZjMxMTNmOGNmZjAyZDUyZGI4MmUyNmU3ZTY2IGxlZ2FjeS10cnVuaworMzc4NTEgYTA1MDg1YTYzZGVjODM2NGIxNzRlOWIyODNjMWUyZjlkOGE5NDkzNCBsZWdhY3ktdHJ1bmsKKzM3ODUyIDRmMmJiZDQ3MWEyMWM1ODEzOGQwY2E2MWExMjRiZTI0YzdjMGI1NTggbGVnYWN5LXRydW5rCiszNzg1MyA3MTM3MjQ0OTU4MmQzMjY4NTY0NzNhZDYwNzZlYzU2ZjFiMmM2NGE4IGxlZ2FjeS10cnVuaworMzc4NTQgZjEzY2UwYmI2MDZjMDJkOTQ0ODUyNDMzMjkzMmEzYWUwYWYyYjE3NCBsZWdhY3ktdHJ1bmsKKzM3ODU1IGE4ZGUyMTk1ZWZkNjZiZGQ4NDBmZDZjMDI0YzU2ODgwZThlMDNiMWUgbGVnYWN5LXRydW5rCiszNzg1NiA2NzcxZTE4NDBiYmNiZjAzYzE4N2IwMjkzODAzMjhjMTE1OWY5ZmJhIGxlZ2FjeS10cnVuaworMzc4NTcgYjRhZGIxMDIxMTAzMGFiMjUwOGM1Y2EyOTBiZTE2MzZkMWZlNTgyMiBsZWdhY3ktdHJ1bmsKKzM3ODU4IGI4NzFiOTRmMDdiNmQ2ZjNmYWFjOTZjMTRlZjRiZjQ1ZjgyNTVkNmQgbGVnYWN5LXRydW5rCiszNzg1OSAzNjU2MzhkY2U1ZjM0MzYwMjlmMjkxMTBkMDQwYzdiZWRlMWNlZjVkIGxlZ2FjeS10cnVuaworMzc4NjAgZTAxYTE3YmNkZjI4ZWU4N2NjYmY5NmFkNmMzYjJjMWNjYjJjYTNhMSBsZWdhY3ktdHJ1bmsKKzM3ODYxIGY1MzExMzAzYTM1NzAwMmQ2MWY2MWZkMGMyZjBjOWE2OWIwYTRkNGQgbGVnYWN5LXRydW5rCiszNzg2MiBiNDhjYTk2ZWI0NDA4ZGNjZGZjNTA2OWFkOGI2OGY5YmJhNzljZWFmIGxlZ2FjeS10cnVuaworMzc4NjMgOWExMzA5YTkwYjVkZjZkMGU0ZmYwNTI0YjUzY2RhOTY4MzVhNzllYyBsZWdhY3ktdHJ1bmsKKzM3ODY0IGJhZTE5MTlmODU0ODFkYmY2MGYwOWJhZGY0NTQ0Y2RmNTgxODkwY2QgbGVnYWN5LXRydW5rCiszNzg2NSBhMDBjZDY3MDM0MWJhN2ZlY2Y4OTgzNWQ2OTE0NzVhYTI4MjA3N2RjIGxlZ2FjeS10cnVuaworMzc4NjYgZWE5NTdkOWIzNjljZDhkZGMzNzBmY2UzMjY4ZTFiODljYzVjZWQ2NSBsZWdhY3ktdHJ1bmsKKzM3ODY3IDMxZTRkYTE2NjRiN2VmNjA1NjdhMTU4MDQ1ODFiMDQwZTU2MjZjYzggbGVnYWN5LXRydW5rCiszNzg2OCBkNWJhNGYzMDUwYjU4NzBlMjllYTU3YzFiNmEyZTA5YTQzZWYzZjQ4IGxlZ2FjeS10cnVuaworMzc4NjkgNzg3MzhhODliMjIzMTFkYjcxMjVmMjI3YjBmYWNkZTEwZDJmMTk2MyBsZWdhY3ktdHJ1bmsKKzM3ODY5IGZmODBkOGJiZWY2ZTEzNDI2YzhhODVkN2Y5ZDgzN2I4ZjhmODk4MzQgbGVnYWN5LXRydW5rCiszNzg3MSAyMDk1NTAyNTZhNzQ0MTYwMWZhYmIxN2JjYTkzMjZkYTQyZDgxNTNjIGxlZ2FjeS10cnVuaworMzc4NzIgZWY3YTAyYjE4ZWNjYTM5OTg3MDZhYTQ2YTcxMjAyN2E4OWFjOTU1YyBsZWdhY3ktdHJ1bmsKKzM3ODczIDgyMDRhNGQyMDEyY2I3MmRmNDJjYWZiNGUwNGM4MDllNmY4OGE0ZDQgbGVnYWN5LXRydW5rCiszNzg3NCA3MTkzMGQ3YjNiOGEyNGYyNDc3ODhjZjFiMzc2ZjcyODFiMGFkYTBiIGxlZ2FjeS10cnVuaworMzc4NzUgOTZmNjJjNjc5OGU4MWIxMTEzZjNlMzNiZjBjOWI5MjU4MzA3YzNiZCBsZWdhY3ktdHJ1bmsKKzM3ODc2IDliMGM1YmY0NzAwYzA4NDMwZTU0NzVjMWVjOWRmZmNkOGIzZjZmZTUgbGVnYWN5LXRydW5rCiszNzg3NyA4ZGFhNWE0NDg0MDNhOWZkNThlNjBjODg2NThjNTgwNjE4ZTA1Y2RkIGxlZ2FjeS10cnVuaworMzc4NzggMmI5YzJlZDVhNzZiZmY3ZTNhYjAzMGI0MzU5ZmVmYjkxYWVkNWNjMSBsZWdhY3ktdHJ1bmsKKzM3ODc5IDI2NGU0NWJhYWNkNTMzMWMxODQ1YTVhMjI2MzM5OWEyMDhmMDkxNDMgbGVnYWN5LXRydW5rCiszNzg4MCBlOTU5OWQ5ZDkxYzZlNzA3YzIyYjFiY2I4MDQ1ZjJjYmI1NGMzNjFlIGxlZ2FjeS10cnVuaworMzc4ODEgNmJkODAyMWY3NDFjYjg5ODFlNmNjMDA0OTg0NTVkYjFjZjIzNzQxNyBsZWdhY3ktdHJ1bmsKKzM3ODgyIGJkZDE0YWI2YzVjZjE1YmZlN2MxOTBkYjFiNTc0ZTMyYjc4ZDBjNmQgbGVnYWN5LXRydW5rCiszNzg4MyBiZTM3MGFiYjAyMGY5Yzk3NWJkYTU2ZmFiOTQyOTgxNTdmM2JjNDg4IGxlZ2FjeS10cnVuaworMzc4ODQgYzEwYWRiYWQ0NGZhYjk4YzI3ZjIyM2JiMWFjYTNjYjMzZjA4YzE2ZCBsZWdhY3ktdHJ1bmsKKzM3ODg1IDE1NzZlODQ1YzU3YmRhZGVjNzdkNDUzOGYzYTM2NDU5ZDA3ODUyMDAgbGVnYWN5LXRydW5rCiszNzg4NiBhOGZmNmVkODU2ZTg5M2I0N2YzNDc0ZDQ3MjU4OTJlOTYzOGIxNTc3IGxlZ2FjeS10cnVuaworMzc4ODcgYzE0ODNmMGU4MDBkMDJlOGVjMDEwOTA2MDA0OWFiYjY5MDk5NmY2MSBsZWdhY3ktdHJ1bmsKKzM3ODg4IDdmOTVmZTk4ZDgyMTZkMjE2OGU4NGMzZGI4YzdiNmM5OGZkMTkxODMgbGVnYWN5LXRydW5rCiszNzg4OSA3MTM1OGY2NTc1YjZhZmUwZWZkMTUzNGM3NTdlNTMwZWEyODhlMGZlIGxlZ2FjeS10cnVuaworMzc4OTAgN2U5OWIwNjgwYWRmMTEzMjEyZGI4Y2M4N2UyOGVjYmU4MWUwNTg0ZCBsZWdhY3ktdHJ1bmsKKzM3ODkxIDhkYTU3YzI4YjkxMGY1MTM4MjkxYjg4NzQzOTdlY2IwNmFlZDc2NGMgbGVnYWN5LXRydW5rCiszNzg5MiA4MWExZjc1NGQzMmNkMjA4ZjczNTAxZWJhZTQzMGU4ZGRmYTA0NjM0IGxlZ2FjeS10cnVuaworMzc4OTMgYzg4ZDE4NDE4MDUzYjU0YjM0NTAzMGRjYWQyYWQ2YmQwZTNmNDI4OSBsZWdhY3ktdHJ1bmsKKzM3ODk0IDViZTMxYTIwN2Q4NmQ3ZjRlYzE1YjFkNDdjNzQ4ODA0ZTljODFiODUgbGVnYWN5LXRydW5rCiszNzg5NSA3YTVhNTZhMTczNzc1OTI2ZTlkM2JlMzVlODc1YjU2NjRiYjUyMWNkIGxlZ2FjeS10cnVuaworMzc4OTYgMTYzNDA5YTYwMWJlZjQxY2JkNzg5MjNiMDYzZGIzZTE0Yzk3YjY5YyBsZWdhY3ktdHJ1bmsKKzM3ODk3IDJjODNiNjIyYTNlZTY4YzVhOTlkMjZmOTRmOTdkMjZiZjkwYmMzNWIgbGVnYWN5LXRydW5rCiszNzg5OCBjOWM3Nzk0MDYwYjBlNmVkYjkzMTdkMDI4ZGJhNDAwNzRkMGExYTk4IGxlZ2FjeS10cnVuaworMzc4OTkgN2U5NTVlOTg3ZDY5Y2E3ZDcyMzBiNTI5NTBmMmJiMmI5ZmNlYWQwNSBsZWdhY3ktdHJ1bmsKKzM3OTAwIGQzM2IzYTJiMDk0Y2I4M2M4YzlkMDhkYTY2YzRkNzJhMTFiYTVjNWEgbGVnYWN5LXRydW5rCiszNzkwMSBkMDcxNmFiMDNkOWRkYzQ1MDdiODcxMTQ3MzM0MjI5ZjZjNmIwM2YzIGxlZ2FjeS10cnVuaworMzc5MDIgNmE4MDZmZGE2NjhkNmM1ZjRhZTIzOTA4ODg5M2M4ZjQ4MzJkYWJhNCBsZWdhY3ktdHJ1bmsKKzM3OTAzIDI4MzBlNmNiNDE1NzY1YjE1M2U2M2JlYTdmMTNkNmFhMzNlYzhlNWIgbGVnYWN5LXRydW5rCiszNzkwNCBmYmVhNzE0ODAyYjNkYTk2MjBhNTExMDZkMGVmYjM1Njk0MGFmM2Y3IGxlZ2FjeS10cnVuaworMzc5MDUgN2ExMjkwNDQzOGQ2Y2E3OTcxMDcxZTUyZWE1ZDM0YmZkNmQ4NWU4YSBsZWdhY3ktdHJ1bmsKKzM3OTA1IGYzMWUxOGQzMTNjN2E0ZmM2NjkxNGIyZDI3ZTEzMGEwZjcyYzBiNjkgbGVnYWN5LXRydW5rCiszNzkwNyA3MTYzMDdmN2U2MTdjNDE4NTEzYWYwYjljYTExYmRhZGE3ODA5NWIxIGxlZ2FjeS10cnVuaworMzc5MDkgNjNhZmMyZDFiMGRhMzcyMmUzMDU4ZmZmNjIyOTZlMGE4MDQ2MDE4MiBsZWdhY3ktdHJ1bmsKKzM3OTEwIGNmM2Y4YmVlN2Y3YWIxMmE5M2JlNDcyNDNhNjUyYTNlODA1YzExZDYgcmVsZWFzZTI0LW1haW50CiszNzkxMSAyZWNkYzgzZmE4NmNkMmI5M2IxMWU1MGUwM2QxODcyYmRmODk1NzhlIHJlbGVhc2UyNC1tYWludAorMzc5MTIgMzg0MzJhZDExYzJhNDIyNmFlNmYzMjhmNTM5NWYwYWIzYzZlNmZmYyBsZWdhY3ktdHJ1bmsKKzM3OTEzIGFlZDFmZWQzN2FkNTg2NTY3M2ZjYTA2OWM1YzNjOGZhZTJmNzc5ZTUgbGVnYWN5LXRydW5rCiszNzkxNCBmZDFiZTQ5NGMzMWI2M2U2MTEwMTVkNWFlNGI1MWQ3YzQzNDFhOTkyIGxlZ2FjeS10cnVuaworMzc5MTUgOGNlY2I4ZGM0M2EzODA3YmNmM2FlOTU2NTU5YjQ4MzQ4NGZmNmQ4NyByZWxlYXNlMjQtbWFpbnQKKzM3OTE2IDc5ZDJhZTBhNjJlZmViNzQwZDY0ZmRmMjA0ZWI2ZTI1MDRlYzdkNWUgbGVnYWN5LXRydW5rCiszNzkxNyBhNmUyNTFkZTVlNDFiZGQ4MmQ4NTY3Zjc1MTU2M2ViNjlkNmQ0ZDViIHJlbGVhc2UyNC1tYWludAorMzc5MTggNzAyNmQwMzg1MDgxMTcyMGJhY2Q1YjZhZjAyNWNkOTNmNjMyY2IwOCBsZWdhY3ktdHJ1bmsKKzM3OTE5IDFjNGRiZTRhMDZiZDA1NDljMGI0MzU5YzQ5MTUyMjU3ZGNiYWQwMWMgcmVsZWFzZTI0LW1haW50CiszNzkyMCAyMTdkNzQxMDQ5YzBkNjI2ZjQ3YWE1MzI3MWFkN2ZiN2Q1NjY2NzlmIGxlZ2FjeS10cnVuaworMzc5MjEgYzg3MjYxY2U3YWM5MzI3NTRjNmU5ZTdlN2YzYTRiZDUxNTY2YjRlNCBsZWdhY3ktdHJ1bmsKKzM3OTIyIDhlYWY4MDhmZDk4MGMxMDdlZDQ0NzhkZmJiOWNmOTU5MGE3ZWVkYzYgbGVnYWN5LXRydW5rCiszNzkyMyBlNDM1MzJiODQ4ZDc1ZDgwM2FlZWQ2ZWI0N2QzNDZmYTc4NzgxYzc3IGxlZ2FjeS10cnVuaworMzc5MjQgN2U2NDgyYWI5NDU1ZGExNzc3NTM0ZTIwYzQxOTdiNWJmNjAxNWU4YSBsZWdhY3ktdHJ1bmsKKzM3OTI1IDZiZmIwYWI4ODNmMjBmNzZiY2Y0M2UyMDNkN2Y2NjBkNTQ5Yjk5MWUgbGVnYWN5LXRydW5rCiszNzkyNiBkYTk2N2ZiN2E3ZmI0ZjQzYTE1OGE5ZDk0ODNhOWJhNzY5NzlhNjJiIGxlZ2FjeS10cnVuaworMzc5MjcgMTcyYjQ3ZmYyZTRiYjM4MGJlZjdhYWVlYmUyNGYyNmRiMTRiOGE5MCByZWxlYXNlMjQtbWFpbnQKKzM3OTI4IGNlYzMxZWRlYTQxNGZlZjRlOTIwN2ViYWZjZTU2YTY1NzFmNDhhZGIgbGVnYWN5LXRydW5rCiszNzkyOSA0ZTI1NGYwMjhiNzZmYzFiYWM0Y2Q4YzgwYWNiYWRkNzQ2ZDg5NzQ3IHJlbGVhc2UyMy1tYWludAorMzc5MzAgMzNmNzQ4ZTVkMTQyMWM4MDM1NzIxODE4OGNhZTVlZjJhOGRhYTMyZCBsZWdhY3ktdHJ1bmsKKzM3OTMxIDhjODAyMmI4MWYwMjBhNmVjYmNmMWUzOTAwZDA5MzA1NDU5MGY1N2UgbGVnYWN5LXRydW5rCiszNzkzMiBhYmUzZWU1ZmM2YzM3ZGEwYzg2ZTNjMzgyNmJkMmIyOWMzMThmZjk5IGxlZ2FjeS10cnVuaworMzc5MzMgZjE4YTRkOTM3MTQyYTA1MmU4MGNkNzY1ZTU1MjRlYTAxMTQ3MjViZCBsZWdhY3ktdHJ1bmsKKzM3OTM0IDhiZjc2NWI0ODBiODBmOWEwYmQwYWUwOTFiNzliNDQ0OTUzOWZjMjYgbGVnYWN5LXRydW5rCiszNzkzNSA1MGUwYzM0NWQ0OWIzYmI3YmYwOTcyNDMwOGZjYzQ4NjFiNGFlOGU5IGxlZ2FjeS10cnVuaworMzc5MzYgNGM4MTA2YzM1OGNlMGI4ZDhhNjNlMDIzMjQ4ZTRhYTUwNmI2M2YwNSBsZWdhY3ktdHJ1bmsKKzM3OTM3IDE1N2ZhZTc2OTUzNmU2MzNhNjRiZjY5MWM0MWViMTkyOGFhNWI4MDcgcmVsZWFzZTI0LW1haW50CiszNzkzOCA2MTE1NjFjY2U3NDBmZmM4Zjg3ZmNjOWQyZWIwYjkxOTNlOTViZGYxIGxlZ2FjeS10cnVuaworMzc5MzkgZmJmNmUwNGRlZjY5MDI0YzI0NDQ5MTk1YWU1MzEwOWIyNzlkNWI5MyBsZWdhY3ktdHJ1bmsKKzM3OTQwIDQzYzAwZjBlNjMwNTU1NzdlNzA4NTM0MDRkMDQ0MmY0Y2I5MGUxYTcgbGVnYWN5LXRydW5rCiszNzk0MSBmNzMyODA5NjgzMjI3OTA4MWI4OGE3MGVlMzY2MDIyNGMzNjQ1ZTZlIGxlZ2FjeS10cnVuaworMzc5NDIgNGI2MDFiZDM0NmE0ZjQzYjEzOGMzZThiZDlmZGI4NDBiNzU5NmUxMyByZWxlYXNlMjQtbWFpbnQKKzM3OTQzIGM0YjEzZmExOGExMDNkYTE3Zjg1OGIzNjU0NmZjODI1YzhhMDA4YmMgbGVnYWN5LXRydW5rCiszNzk0NCA2MDliY2RhZTEwOGE2NTc4MzFiMjUyOTdlZWY5MDkyZjRhNDI3ZWVhIGxlZ2FjeS10cnVuaworMzc5NDUgMjM5OTYzMmZkOWUwZTI3ZjcwYTg4Zjk0Yzk5OWVlMjczYjYwNTI0YSByZWxlYXNlMjQtbWFpbnQKKzM3OTQ2IGQyZjI2ZWFhY2UyYzFmMzIwMTE1YTIzYTE2MjZmMjVkZWNmMjAxZWIgbGVnYWN5LXRydW5rCiszNzk0NyBkNjIwM2ZiZGEyNTE3ZDM4OTQyNjhmYjdkYjliYzFmNzI2MmQzZTc4IGxlZ2FjeS10cnVuaworMzc5NDggNmUwZGIwN2ZiZjkxODVkOTFjMGU4NDcyMTMxY2MyMzA5MjUzNTJlNCByZWxlYXNlMjQtbWFpbnQKKzM3OTQ5IGNjOWNlNjgzN2VhOWI3M2VjNDgwMzZiYzFlZWQ3MWNjNTM0OTUzNWIgbGVnYWN5LXRydW5rCiszNzk1MCA5NWQyNzZkNGY5ZTQ2NTc5NmFlZGFiNGRjMWQxNTA1MjFhZDg3ZjQzIGxlZ2FjeS10cnVuaworMzc5NTEgNjI0ZTk2MzVjM2FkMTFkNzI5YzUyODYwYWRkMzFlMjMwYzY3OWIyYyBsZWdhY3ktdHJ1bmsKKzM3OTUyIGYwMmNkMGQ0YTJhMDVhN2M5NDY5Yzg2YzI2NDg3ODI5MGJkMWQ5ZjQgbGVnYWN5LXRydW5rCiszNzk1MyBlZGMyMGQ1MzlhMTgxNWQ1ODM5NGQ4M2ZlODVhY2ExOGM3NjUwZGE3IGxlZ2FjeS10cnVuaworMzc5NTQgMTc1ZjYxMjU1NDljYWQ3MWI4YWI1MmExNGQwNjVkYzEzZmM0YWVmYiBsZWdhY3ktdHJ1bmsKKzM3OTU1IDBlYzM0NDY2M2Y2YTllY2Y4OGIzMmI5N2NkZDEwNjZmNTRlNjg0NjggbGVnYWN5LXRydW5rCiszNzk1NiA4Y2QzMTc2ZmQ2ZjAzMGI2MDQyMWFkMDQ4ZWZhZDVjMTMyMjI0MWU3IGxlZ2FjeS10cnVuaworMzc5NTcgOGY5Mjk1MTM5OTNjOTFkZmM2NDZhZWUwNzcyZTBlNzNjOGVmY2E4ZCBsZWdhY3ktdHJ1bmsKKzM3OTU4IDI0ZjBkYTkyMDAxMDQ0ZTgyNDliMzQ5N2IwYzA3ZDg2NGRjMWRjMTIgbGVnYWN5LXRydW5rCiszNzk1OSA1MTcyYzI4YzBiM2M4Yzk4MjUwN2Q2MTIxMmUyYTUyMTk5MDI5OTcyIHJlbGVhc2UyNC1tYWludAorMzc5NjAgY2Y1NTVlYzY5OGViY2U0ZmQ2ZGNjYzYzYmJhYTUxNTgyMzcwZTdjNCBsZWdhY3ktdHJ1bmsKKzM3OTYxIDUzYzZhOTU5ZjljZmQ1ZWQ4ZjAzYWRiYzU2MjJkMjgyMzVmNWExZjIgbGVnYWN5LXRydW5rCiszNzk2MiAwZGZlNjA4ZWVjZmFjMjBjZjY5OWJiODRhZDY5N2I3OWQ0M2IyNmU5IHJlbGVhc2UyNC1tYWludAorMzc5NjMgYjk2NmFhZGU1NDhjZjhiMTNhNzBlNDYwNWUxOTAzNzhlODVhN2I3ZSBsZWdhY3ktdHJ1bmsKKzM3OTY0IDhmZDc2NmJiNzZjOWU0OGUxMDJkNTQ0ZDFkMjg5ZWEwZTI5YTlkYTAgbGVnYWN5LXRydW5rCiszNzk2NSBmNDA5ZDRjNmRjNjA0MWViNTRmNGFjYjMzYzlmMTYwNWYzZDY2YzhjIGxlZ2FjeS10cnVuaworMzc5NjYgY2RkZDAxNmFlMDZhY2ZlOWNjMzk0YzMwMzg4ODQ1NDc2ODI0YWNkNyBsZWdhY3ktdHJ1bmsKKzM3OTY3IDBmNTZhNjY1NWViZmEyODMwMWE2ZjIwMTNmNWMwNGZmNjI2NmUzMDIgbGVnYWN5LXRydW5rCiszNzk2OCBlZjZkMWU1ZWI0ZDMyOWUzZjkyY2Q2ZjFmZGI1MjhmMWUwNjA1MmIzIGxlZ2FjeS10cnVuaworMzc5NjkgMjU1NzFlYTVlY2E2MmYwODViOGEwMTc3MjVmMDRkMDFhYzA4NDg5ZiByZWxlYXNlMjQtbWFpbnQKKzM3OTcwIDY5ODkwOTJjZDk2ZDVjZDkzMzE0OTA2NWIzZDVhNGUxMTdmZGQ1NWUgcmVsZWFzZTI0LW1haW50CiszNzk3MSA0MjFhNWRmNTA4Yjg3NzAzZjI3ZWE4ZWM2Yjg4ZjNmNDllYzg0ZTE3IHJlbGVhc2UyMy1tYWludAorMzc5NzIgMWQxZDYzNzdhY2IxMjNkMThjODJjMTY5YTczMzc3MDg1YWNlMzMzOCBsZWdhY3ktdHJ1bmsKKzM3OTczIDk1NzQyOWM0NmJiZjhkNzUwZTc2YThjOTBmNzhhZTA1NmIxYTJiODMgbGVnYWN5LXRydW5rCiszNzk3NCAwNWY4YTRmZWMzNTYyOTQ2ZmFmZmU1NTNkYTU5NjM1YTY1ZTg3NTQ4IHJlbGVhc2UyNC1tYWludAorMzc5NzUgNzNiMDljMmI3ODhiOGEyMjEyZDRlMjY1ZmVlOGFiOTlmZjk1NWZiYiBsZWdhY3ktdHJ1bmsKKzM3OTc2IDFkMDQ5MzZhNjQ1NmEwNGE5ZmYxMGMyNTk1NWE5YzgwYWVlNGEzYTIgbGVnYWN5LXRydW5rCiszNzk3NyA5YzFlYjMzZmUxMTBiY2NkM2Q5ZTQ5NDExMTY4NmYyYjI2OTllYWU5IGxlZ2FjeS10cnVuaworMzc5NzggOTY3MjFhMDNhZTMwMDI0ZDZlZjFiYjgxNWUxMmRlMjc3MWZhY2FmYyByZWxlYXNlMjQtbWFpbnQKKzM3OTc5IGFiOGIwYjczMTcxN2E1ODAzMGNiODFhOTM5YTU4M2VjZGY3OGJmNmYgcmVsZWFzZTIzLW1haW50CiszNzk4MCBmMGZjNmJlZmIwNjA3YTMxYTc4YTI2YTk1NDM2ZGUzNTgzZTMyMzUyIGxlZ2FjeS10cnVuaworMzc5ODEgY2NjNTBlMGI0NjZkNGVjZDhkMjAwYzRhZTBjMTA2NDEyZDk4ZDgxYSByZWxlYXNlMjQtbWFpbnQKKzM3OTgyIDQ5NzlhNDQzNDU0MzQwOTZmMDkwZWY0ZTJhZWFjODAzOTk4Njg4MzUgbGVnYWN5LXRydW5rCiszNzk4MyA2MGQ0ODJlOGY4NDUwMTdjMGFkNTVhOTdjZDgxNzUzNjFkNDAwYTNlIGxlZ2FjeS10cnVuaworMzc5ODQgMTUzMWIyNWViZGNkM2JmMzYwNzZkNGY2NjUxNTdiN2EyZjc4NzhiZiByZWxlYXNlMjQtbWFpbnQKKzM3OTg1IGU0NmY5OGU3M2U1MjcyYWMwODE2ZmZiNzQ3NWI5M2NhODAwZTVlMWEgbGVnYWN5LXRydW5rCiszNzk4NiBmZWQ1YTczNDQ2NWQzNjRmNzc1MDVlN2E4ZTA2Zjk1Nzk4ZWY3ZjljIHJlbGVhc2UyMy1tYWludAorMzc5ODcgNGU4ZmIxMmY4Mzc4NzIyYWJhMDY4OWFhZDZjZjhmZDY2YzFmMTkzMSBsZWdhY3ktdHJ1bmsKKzM3OTg4IDRlMzhlY2QxOTEyZTRhNjU2MGEzMmE0M2JlYTE5M2ZiOTk4NDc4M2YgbGVnYWN5LXRydW5rCiszNzk4OSAxYTkzOGY0NTYwNTM4NTExMDJjNzgzYTljZDk1ZGI1ZmIyYmRjOGZhIGxlZ2FjeS10cnVuaworMzc5OTAgNzkwNjZlYTM4YzUwMzEzZDIxZGI0NjA2NThmMzUwNmVkOWE2Mjg5NCBsZWdhY3ktdHJ1bmsKKzM3OTkxIDRkY2Q3OGYzYjVkMWJhMTZiOWUzMWRkMDkwOTE3NDI4YTY5Zjk2NTEgbGVnYWN5LXRydW5rCiszNzk5MiA3MTBiMGIwZTA3ZWVkNzJhMjQwNzc0MzE0NjI1MzU4MDRkYzFkZWExIGxlZ2FjeS10cnVuaworMzc5OTMgMDE1Yjg5MmM5OGVlMjQ2NmE4YjQzZGMyYWQ3ODIyMDI4MDIyYTM1NCBsZWdhY3ktdHJ1bmsKKzM3OTk0IGNlNGJmYmQ5YTE2Y2Q1ODhhMGI3ZmU4ZGViMzQxNzA0YWFhNTMwNzUgbGVnYWN5LXRydW5rCiszNzk5NSA1OTEyYjQxODE1ODQ2MTllN2M1YzdhOWRhZjVhMDg2ZTc4MDRkMDYyIGxlZ2FjeS10cnVuaworMzc5OTYgYTg1N2MyNWEzN2I5NjhmNWZhMWI1NjY2NWY1ZTg3Y2Q2YmNjOTViOSBsZWdhY3ktdHJ1bmsKKzM3OTk3IDBhNmRkM2YyYWJjN2QzOGM5ZmE3MzAzNTc0ZTM4NmJhMDAwYzZiMjkgcmVsZWFzZTI0LW1haW50CiszNzk5OCBhZmU5MGU5ZTRiNDg0ZDg3OWFiZjIzNzQzN2IxYTg0OGE0ZmFlZDc4IHJlbGVhc2UyNC1tYWludAorMzc5OTkgNDkyNjUzODU3NzgyZmU2M2FjYWJmZjdiMWYzNmM3NzdhYTc3ZWMyMiBsZWdhY3ktdHJ1bmsKKzM4MDAwIDIxYWJlY2VhYWJhZDZkNjFiOWNhNWEwODkzODRiMGI5Nzg5MGRiMGQgbGVnYWN5LXRydW5rCiszODAwMSBmMDVkZDE4MTZjMWY3Y2RmNWE0NjhlZDE4MTMwOGQzOTEwNTA0YmJlIGxlZ2FjeS10cnVuaworMzgwMDIgZDBhMDljNzk3NDA5NjRlMjBmMTk3MjJlZjY4MzY2N2NjNjdhNzdjMyByZWxlYXNlMjQtbWFpbnQKKzM4MDAzIGRiOGY2OTlmZjc4MjVmN2YxN2Y1ZGQ2ZmRhNzFjYjAwNjIyYWQzN2UgbGVnYWN5LXRydW5rCiszODAwNCBiMTMyYmE5MjU5YWIxNGY1YTRlZTdlOTM1NTQ2OTc1YzAwN2Q3MTU1IHJlbGVhc2UyNC1tYWludAorMzgwMDUgNzFkNzEwZTMzNmRmY2FiOTk1NjUyNjJiNTIyZmM3MDQzYjMxMTZhOCByZWxlYXNlMjMtbWFpbnQKKzM4MDA2IGJlZGIzNDBmMTJmOTcwYTAyODAzNGQyMWY4Njk2NGQyZDgxZjUzMzAgbGVnYWN5LXRydW5rCiszODAwNyA3NTJmYTg2ZjA2ZDI1YzMwMzU4ZmQ0NDJmOTBmMjkyZTJmYWI1YzExIGxlZ2FjeS10cnVuaworMzgwMDggYzJlYmEwNGUzMDQxNTEwODNiZmFlOWQzODQ4NDlkZDRmNGU2YzU3YyByZWxlYXNlMjQtbWFpbnQKKzM4MDA5IDc1ZjNhNTFhNGUzM2RiNjVmZDkzY2Y1NDJlZWY2ZDdhODcyYTNkY2YgcmVsZWFzZTI0LW1haW50CiszODAxMCAxNjgwM2IwMzk2NGU0ZDUyYTU2NjBkY2I2ZWE5NTBmNzk5ODYyNzc3IHJlbGVhc2UyMy1tYWludAorMzgwMTEgNjU3NGM1MTVlMDM1NjZiYThiNjM3OTNhMzk1NjFlZWNiZDEyNmNkNCByZWxlYXNlMjMtbWFpbnQKKzM4MDEyIGJlNDUwYTMzNWU5Njk2ZTNkYjFkZmZhNjkwZDM3MzY5MmNlMzNlZjEgbGVnYWN5LXRydW5rCiszODAxMyBhNjU5YjBjZWNiOTJmN2RlMzY4MTg0YTc2MGEwNzhhOWRiODJhOTgyIGxlZ2FjeS10cnVuaworMzgwMTQgZTY5MmU3N2NhZDVkNWE0M2Q1Y2U3OWI5MWJmZDU4NTFmOGUyOGJhMSByZWxlYXNlMjQtbWFpbnQKKzM4MDE1IGRlNDcwMWZjMTc2ZjllNDAwOGY1MDM2ZjQyZjE0ZGIxMmRlNjJjNjUgbGVnYWN5LXRydW5rCiszODAxNiBiYmRhYWNjNDRmNmY0YTBiM2Y5Y2U4M2EzNWZkZmUxNmJhYmE4ODU5IGxlZ2FjeS10cnVuaworMzgwMTcgYTg2ODY2YmFjMzY2YjhkOGFjZDQ1OWNhODVlMGM0MDlmZGYzYzNhYSByZWxlYXNlMjQtbWFpbnQKKzM4MDE4IDUxYjBkMThkYTQ0N2I3MzUzMTMxNzdhZGZjYzMyMGRkMjFjNTUzZGYgbGVnYWN5LXRydW5rCiszODAxOSBjMjk0YjExMzIzZDE3YTQ3ZDIzMWY2OGY1MWM4Y2E4ZTIzOTU0ZDgwIGxlZ2FjeS10cnVuaworMzgwMjAgMjU4NTYwYWRjNDNiMzFiNWVmODBlNTI5ZTFlMWFhNDM3ZmYxMGU0OCBsZWdhY3ktdHJ1bmsKKzM4MDIxIGYxZWRiNDdjZTRmYWI0NmI5ZDhlYzA0MTg2YzczMWFkZGJmZjM0NjAgbGVnYWN5LXRydW5rCiszODAyMiAzNjI2ZGI0MzMxMDRlMDcxZDMzOTFlZjRmYTQ0MjFkMDAzZmRkZTUwIGxlZ2FjeS10cnVuaworMzgwMjMgMGYwMDcyN2EyN2IzMGJlOTkyMDcxZTViZGJhYTIxZGYwNjAzMDBmMyBsZWdhY3ktdHJ1bmsKKzM4MDI0IDY5NjExYzdjZDIzYmRmNDdjNDA2NjUwMGVhZjFjNGZiOGFkNzE1ZmMgcmVsZWFzZTI0LW1haW50CiszODAyNSBjYTJjYTFhZWIwODA1M2I2OTdmMmNkZGY3Zjg0ODk2OTJhYTQ5NWFmIHJlbGVhc2UyNC1tYWludAorMzgwMjYgOGIxMTQ0YmE3MzRlZmFlMWZmYmM1NDBmY2FjZGViN2U2NTBmODJlZiByZWxlYXNlMjQtbWFpbnQKKzM4MDI3IGNiNTRmMTE1M2I5MzU0ZTk4MmVlOWJmNDJhMGIwNjkzZTk2NDJhYTEgbGVnYWN5LXRydW5rCiszODAyOCA1ZWEwMjVjNDIxZDdiYjg3NzdkNTMyNjEwMWQ5NjdkMjEzMDAzYjZkIGxlZ2FjeS10cnVuaworMzgwMjkgYzIwZjViMzhmYTIwOTY0YWQ3MmRmNWNiZTE4Y2VhYzYwODM0ZjZiNyByZWxlYXNlMjQtbWFpbnQKKzM4MDMwIGU1MzY5M2EwMmNmMDU1ZDBkZjkyNjI2ZmE2ZWM4OTI3NjRhMjQ3NmMgbGVnYWN5LXRydW5rCiszODAzMSBmZGVjYmEyNmZjODdkYmZlZDllZjQ1MjI0MzI3MWY0NmJkNTMzMTI1IHJlbGVhc2UyNC1tYWludAorMzgwMzIgYjNhZmMwMWMwNWEwNWE1NmEzYjQ2MGRhYmVjYTA5NGI4MmRhNmZjNSBsZWdhY3ktdHJ1bmsKKzM4MDMzIGRiOWI2NDkzOWQ0NWM3MjhlZGM0NGQ5YWNiYzcwYmYzMDM0MDc1ZGUgcmVsZWFzZTI0LW1haW50CiszODAzNCA4MGYwMWZkYmVkZWJjNDk4YjI5N2IyMTlkZjMwZTc4YzQyYmUxOGM1IGxlZ2FjeS10cnVuaworMzgwMzYgNmMwMmZmOTAyZjgyMGQ2MmQ4NTM0YjUzMGIwYzFhZjA3MjdjYThhMyByZWxlYXNlMjQtbWFpbnQKKzM4MDM3IDEzMDIxZDM1MTM1ODYzZDVjZjE2N2RjYzc4ZGNkNWU5MjM2YjcxMGMgbGVnYWN5LXRydW5rCiszODAzOCAyMTQ0YTM1MmFhMzdmYzBiMWNhNzcxMzAxYjU2ZmYxYTJjMjk5YjU5IGxlZ2FjeS10cnVuaworMzgwMzkgMzBiOTdjMWJiMTJkZGYzMmY5ZWFiNDNkNmY3YTliOWYwNjA0ZjM5YyBsZWdhY3ktdHJ1bmsKKzM4MDQwIDljM2E2NGMyODFlMWIzNWEwMWZhM2YwYWM4MjVjMzM3OTQxOGQ5NTIgbGVnYWN5LXRydW5rCiszODA0MSAwNWJjOGFjYWYwYmI0YzZiYzIxZTk4MmMzMWQyYjA2MmFiNmVkOTc1IGxlZ2FjeS10cnVuaworMzgwNDIgZTg5YjFhMjQwZmY3ZWQxNTJiNTdhNTgyOTBmNGY3NzVkZDMyYjY4NSByZWxlYXNlMjQtbWFpbnQKKzM4MDQzIGMxMzlhNDk5N2Q5ZjE0YzQzODhmMWIzMGMzNmYxYTkwN2FkNTc0OGMgcmVsZWFzZTI0LW1haW50CiszODA0NCA4ZmRhYTk3YThhYzM0MzVlZWVhNmM0ZGVhYTA3YjI0MDg2NDBiZmE1IHJlbGVhc2UyMy1tYWludAorMzgwNDUgMTFkYjI4ZTkyMDlmZWQzZTMxNTAxZTE5NGE0ZmEzYTYwYWMwYmY1ZCByZWxlYXNlMjQtbWFpbnQKKzM4MDQ2IDBlZmNjMTZmNWEwZDE2NThhZThjNTg2ZmZhZjIzM2ZlMmU4YTY0ZmUgbGVnYWN5LXRydW5rCiszODA0NyA0NzE0YWZmNGJmNzUyODdmZjMxYWFmNDM5ODkwNjU0MGI2MTQ0ODRkIGxlZ2FjeS10cnVuaworMzgwNDggOWU4MTk1ZTIxZGE2OWViMmMyM2U4MGMwY2Y2NDk2YTU4YmEzYWQyMyBsZWdhY3ktdHJ1bmsKKzM4MDQ5IDM2Y2Y5NGY1NzQxNTFmNGJkYjM1YmIxMzZmOTY1MGRhNGZiMmI5MjMgcmVsZWFzZTI0LW1haW50CiszODA1MCA2ZjRhNmU5YWQ2ZjMzYWJiZmEyYTM1OThhMTZmYmE1YzEzMDc2OGNlIHJlbGVhc2UyNC1tYWludAorMzgwNTEgNTIxYmVjNjBlYjMwMmZjYmMzNTIwMDUwOTA2NGYwNWVmMDJmNTdhOCBsZWdhY3ktdHJ1bmsKKzM4MDUyIDA0NzBkNzU0MTdmZjE1NWE3NDMwNDhlN2YyMTkzYzQ3Y2EwN2IzNTQgbGVnYWN5LXRydW5rCiszODA1MyBkMDQ3MDFlNTk4NzI4NDc5NzdlZDFjNmE3OGUzOWE3NDU0Yjg5OWEwIHJlbGVhc2UyNC1tYWludAorMzgwNTQgNDRlYmY5OGE1ODY4MjAzZDM2YjRlZjU3NDI3ODM0MDVkODJmOGFlNiByZWxlYXNlMjMtbWFpbnQKKzM4MDU1IGE0YmQ1ZDIxYzhiMjZjYjJhZjFiMTMyNWYwNTljNGUyYzNlODMzYTQgbGVnYWN5LXRydW5rCiszODA1NiBjZDRkZDZkZDk3MjFiZGE3MGUyYjAxNzgwMTk0Mjg3ZWJkZjEzOTZlIHJlbGVhc2UyNC1tYWludAorMzgwNTcgOThkNzliNDY5ZTc0ZDMxZmQ3MmY4MDZlOTJlNTc4MTk4MzI5MzhhOCBsZWdhY3ktdHJ1bmsKKzM4MDU4IDEyODVjYTEzNDVkNWMzMTMxZGI3NDczMTEyZDc2ODU1MDY0MTQzNzAgcmVsZWFzZTI0LW1haW50CiszODA1OSBhMjM0Mjg0ZjllMDYwMmYxYzVkNGRiMGVjZTVmZjkzZTllZDg3ZGU2IGxlZ2FjeS10cnVuaworMzgwNjAgNDZmYTBlMjBjYmNmZTQwODZmODc2ZWY3M2IyNWFkZmQ0YTkyMDAxNCByZWxlYXNlMjQtbWFpbnQKKzM4MDYxIDE5OTBmN2VjMGQ5YWQwYjBhNzkyMTMwMjE1ZDJlNTk2YzNiYzQ1OTQgcmVsZWFzZTI0LW1haW50CiszODA2MiBkYWJkNDNiZjBkZGRmZWVkNWZlODlkZmMzZWY3MDUyZWVkOGEyNzdhIHJlbGVhc2UyMy1tYWludAorMzgwNjMgYmU5NzZkZGYwZmY3MDcyMWNlNDBhMzQxNzRlYjYwMDFhZGJkOWU1ZSByZWxlYXNlMjMtbWFpbnQKKzM4MDY0IGQ0NzAyZTY3ZTExOTdmYjI5M2M5MDE4OTA3ZDQ0YjU3M2U5ODkzMjMgcmVsZWFzZTIzLW1haW50CiszODA2NSA3ZmI2N2FlOTMxMjhlMTk1MTY1Nzk1ZjQyMGZkOTFiMjBiYzUyZjJlIGxlZ2FjeS10cnVuaworMzgwNjYgYTBjN2RmNTJiYTQxNTczMWE5MmQ2NjQ1NmQ4ODMzYTkyNmIzZDAwZSByZWxlYXNlMjQtbWFpbnQKKzM4MDY3IDljYjhjNjg3ZjNkNjdmZmE3YmI2YzU4ZThkMjIzOGIxZDNkMTI4ZjIgbGVnYWN5LXRydW5rCiszODA2OCAzMDhlZmQ3MjY4YzI2Y2VhYTFlZTdmYTk2ZWE5OTU4YmQ3N2FkZWI3IHJlbGVhc2UyNC1tYWludAorMzgwNjkgN2Q1ZDZiZGM0Zjk3OWQ1YTg1YTgwNjgzMTNkODEwYWY2MDIxN2FjZiBsZWdhY3ktdHJ1bmsKKzM4MDcwIGVhMzQwMDA2YzFmMzBiODZlMTE4MjdmNjBhOTgzZGMyNTljYjNiNWYgcmVsZWFzZTI0LW1haW50CiszODA3MSA4NmE2MGQ0ZmE4N2EzNTZhY2I2NzQwZGUwZmU3YjUwYzNhNmNhZjEyIGxlZ2FjeS10cnVuaworMzgwNzIgMTkyODY5OTRmNzRmMzJhMzE2MDgxYWZlZGU1NjY1YTczZDllMTA3YiByZWxlYXNlMjQtbWFpbnQKKzM4MDczIDdjNDEzZDNhNDBhNTJiYTBjZTJhY2EzYWI1N2Q5NzcwOGVmNjA1ZWYgbGVnYWN5LXRydW5rCiszODA3NCAwMmZjYjVlYjg0Y2I2YTFmYmM2ZmY2ODYxOGUxZTUwZDM1ZjY3YzU0IHJlbGVhc2UyNC1tYWludAorMzgwNzUgMDM0YzYxMWIyZTg0NGUwY2U1YWVjYzZlMGU0NjVhZTcxNzNiZTc0YiBsZWdhY3ktdHJ1bmsKKzM4MDc2IDk4NjU0YmZhODBlYTVkZGIyNDMzODkzNTA3NTEzYTQ5ODQyOTA3YTkgcmVsZWFzZTI0LW1haW50CiszODA3NyAxZThiMDMzZjkxZGMzYmFhOTlmOThiZjY0YjJjYmM1ZmVlYjczNzI5IGxlZ2FjeS10cnVuaworMzgwNzggYTZiYTI4ZDFkODA2YWE4MzE0ODUzMmIwZDFhYjVhYzllMmE2YzNmYyBsZWdhY3ktdHJ1bmsKKzM4MDc5IGFiZTMxNDVkZGU0ZTdjZjY4N2Y5YzIxN2YwMjdiZmRjYWQ0NGE3YTEgcmVsZWFzZTI0LW1haW50CiszODA4MCBiNjYxOTQyM2MxOTYxMDE5NTIwMThmODMyYjVmM2Q2Njc3YWY4OWZiIGxlZ2FjeS10cnVuaworMzgwODEgYzFiNDQwZWFjYmIxODBiZmQ5ZGQ5NDRhMWE4MzZlNjVjZDcyZDNiMSBsZWdhY3ktdHJ1bmsKKzM4MDgyIDk5ZTNkZGIzYTc0YWFkNzlmYzFmYzM4MjdjMGJlZWE2OTI5NTYxY2MgcmVsZWFzZTI0LW1haW50CiszODA4MyA4ZDYwMDc3ZTk5NTE0OTBhOGUyODRlNTgwOWJmMDZmZmQ0OTBmMzRmIHJlbGVhc2UyNC1tYWludAorMzgwODQgNjcxOTM2OTA4M2MxZWI5MjE5ZTQ2ODJmZGVmM2RkYjkwMTg5MTA1YSBsZWdhY3ktdHJ1bmsKKzM4MDg1IDlkYzk2YWM5NDM0MjM4MmRkY2ZiMjQ1NGIxMDYwMWZkMGQyMTI4OWIgcmVsZWFzZTI0LW1haW50CiszODA4NiAyYWE5NmVlM2ZjYjVjOTBiNzJkMjUwMDI0MTI5NDMzOGVmMmY2ZWJiIGxlZ2FjeS10cnVuaworMzgwODcgNGEwYzFlNTE3ZTZiYjBmNThmZDczMzliOGRjNTY2MGZlMGUwMzlkNCByZWxlYXNlMjQtbWFpbnQKKzM4MDg4IDM5MTE3MjZhZWNiOTAwMWU3MTk1ZDdjNjVmODU1MTE5ZGIwZjBjZWQgcmVsZWFzZTI0LW1haW50CiszODA4OSA2NDJkYjFmYjM0ODFiMzNkYWQwNjk3NjU3NTUwZTg0NzlkNTQ1OWM1IHJlbGVhc2UyNC1tYWludAorMzgwOTAgYmJkYzFkNzMxMGY0OTdhNzhiNTMxNmIyZTQ4OGJhNDZiNWI1Y2EzNCBsZWdhY3ktdHJ1bmsKKzM4MDkxIGVjMTkyNWYwN2VjOTdlMDJjM2QxNzZiODNiMzFmN2I3NDUxNjVmZWIgbGVnYWN5LXRydW5rCiszODA5MiBlMjA4OGFlMGQ2N2ZkNjY3ZmZiM2I0MmE2MzNhMGJhZmEwZTU1Njg5IGxlZ2FjeS10cnVuaworMzgwOTMgNTdiMjNlNTc1ZmZjNjMwYzI5YzQ0ZmYwMmEyYzQyOGRjZWQ1ZDg2YyByZWxlYXNlMjMtbWFpbnQKKzM4MDk0IDk1YmJlOTkxZmNjMzMxOWY4Zjk5NjY0ZDE2MDU5MDU0YjFjZjJkYTUgcmVsZWFzZTIzLW1haW50CiszODA5NSBjZmRiZmE1NGRjNmE3MDFjYjU5MDBlMzNmN2M4Yzk2OGUxNmI4YmVjIHJlbGVhc2UyMy1tYWludAorMzgwOTYgYTdmZmRjMDlmMDAyNjdkNzY0OGY0YmNjZGE2MGE3N2RlOWQzODU0NCByZWxlYXNlMjMtbWFpbnQKKzM4MDk3IDY5NDY3MGY2NTI1MWQ1Y2Y4MGZkMTMzZGQ3NTMxNWFhNGE5NzJlZTAgcmVsZWFzZTIzLW1haW50CiszODA5OCA5M2IxYjBiZWJhNTlmOTAzNjI0N2E2NTc2MGMxYzIxNWU4NmQwYjZhIHJlbGVhc2UyNC1tYWludAorMzgwOTkgYWIxYTE3YzYzM2FlYmU5NzA0YTQ5OWVjZDhmNTg3ZmEyYTA1YTVlMSByZWxlYXNlMjQtbWFpbnQKKzM4MTAwIGE0ZDg2OWVjZWYzMzhiZWIzMmVmMjIxY2RjNDdlMWFhZTdiYTE3YjkgcmVsZWFzZTI0LW1haW50CiszODEwMSBjMGNjNjYwMWRkYWRhMmVhNTIwZTUxYWU1ZDIyMWY2YzIyNDY0MGNiIHJlbGVhc2UyNC1tYWludAorMzgxMDIgOTBjZDI0YTFlZTEyNDk2MTAyNGNiZWYzZTYxZTEwY2E0ZWVmODU1NiByZWxlYXNlMjQtbWFpbnQKKzM4MTAzIGFlYTIyMzdiMzg4ZmY3MmZlOTY4ZmMxMTNlZDczODg0YjUzMWJhZjMgbGVnYWN5LXRydW5rCiszODEwNCAyOTIwNjkxZjYzZjA2ODdjYmM1MDBhYzMyMDI1Mzg1MmZmMmJhMGY4IGxlZ2FjeS10cnVuaworMzgxMDUgOTE0NTM0ZjZlZjYxMjZhNDYyZjNmNmNlNWE4MWE4NzFiNzVmYTUwMyBsZWdhY3ktdHJ1bmsKKzM4MTA2IGExNWZhMDU5ZjlmMDMwMDdkMTczNTZlNTVmNDAwZTgzMmE1YjZjMDkgcmVsZWFzZTIzLW1haW50CiszODEwNyBjOWU1ZDFkMWU4ODdjYzAzYWM1ZmU4ODA5YzE0ODk4MzAzMTVmMmY1IHJlbGVhc2UyNC1tYWludAorMzgxMDggZGYwYzJmM2FjYzdjOTYxYjA5NzA0OWViNGE4MDg5MzFlMGIyMzdkZCByZWxlYXNlMjMtbWFpbnQKKzM4MTA5IGIwNDQ3MzVjOTI3YjEwNDI2MTI3ODY3YTE1MTgwMjg0MDdlYjRlYTAgbGVnYWN5LXRydW5rCiszODExMCA0NjM1MzU2OGU0MGQ5OWQzY2ViNTMxZjcxMmI2ZjI4OGU1Yzc1ZDJlIGxlZ2FjeS10cnVuaworMzgxMTEgOTllYmVjMmJlMDMxMjkyMWY4MzZiYmM1YTg3MzI1OTE3MjkyODY5NCBsZWdhY3ktdHJ1bmsKKzM4MTEyIGFhYmExY2U0YjNjYTA1ZmQ5MjBkNmNkNzJmNjI0ZDk1ZGNkYWY5OTQgcmVsZWFzZTI0LW1haW50CiszODExMyA4NmMzYTdjNmIwMGExYWIyODAyYjI1NTU5YWQxMmQ5MmRiMTUyZjhhIGxlZ2FjeS10cnVuaworMzgxMTQgZjU0ZTE0MDAwZDZiZDBlMmFmMWEzY2M5YjVmMmMxOTM4NTllNDMzZCBsZWdhY3ktdHJ1bmsKKzM4MTE1IGU4MmQxODMyNThmOWMxMDY0YThmZTVkMzY3MzExZWY3MzQ3ZDVmZmEgcmVsZWFzZTI0LW1haW50CiszODExNiA1Nzk4YWE2NTRlYzY0MGQ4ZGE5OTUzMTMxNjNiYzA4NGZiNGE3NjE3IHJlbGVhc2UyMy1tYWludAorMzgxMTcgMjg4OTFkYzI1NTgwY2FhYzg3YjBjMGMyYWIwZmYyOTM5MjY5YjgxYiBsZWdhY3ktdHJ1bmsKKzM4MTE4IDU4NDAyM2RhYzQwNjkxNWI1Njg3MmQxYzg4YTM1YTdhZTI4YjEyNDkgcmVsZWFzZTI0LW1haW50CiszODExOSA0ZWMwMDZjYTJiOTFiZWE3ZTUyZDE4MjQ1YTNkMDE1YjE1M2FkN2U0IHJlbGVhc2UyNC1tYWludAorMzgxMjAgZTgxMTUyMTUyNDMzZmIxOGFkZDRlOWFkMDI5N2Q3MGFkODgwNzczNyBsZWdhY3ktdHJ1bmsKKzM4MTIxIGM3MDIzOTBhOGUxMjIyZTk3OTAwN2UxY2E1M2E5ZDY0ODRjNGU4OTkgbGVnYWN5LXRydW5rCiszODEyMiAwZDkxNjNkYTYxYTNiYjAwMzU0OTdiZDAwMGFjM2M2ZDkwNTVkOGI0IGxlZ2FjeS10cnVuaworMzgxMjMgNjQ2MTk1YjU5MjA1NzdkNGY1YjYyZWM1OGZlYWIyZGVkZThhMjU0NCBsZWdhY3ktdHJ1bmsKKzM4MTI0IDc0YTkxZTQ1NTljYTViMjUzMjAzNTM1NWI4ZDgwY2M2ODQzOTZmOWQgbGVnYWN5LXRydW5rCiszODEyNSAzMjFiYzJkNDlhNWEyZTEwZmVjNGU0M2RjMGRiZTg1MGMxODgyOTI1IGxlZ2FjeS10cnVuaworMzgxMjYgNTg2YTc2Zjk2YjA5ZGQ0ZjI0YmMzOWU3ODc0MDM4ZGZmNjRlZGNhZiBsZWdhY3ktdHJ1bmsKKzM4MTI3IDU4OTgxZmU5MGJlZmE0ZTcwMDg0NzhjOWYyZDhkNjIyNGIwMjA5YzggcmVsZWFzZTIzLW1haW50CiszODEyOCAxOTE0YzRkYjRiMjg2MGM5NjU2M2U1MGI4YThiOGRkNzM0MGUzMjE3IGxlZ2FjeS10cnVuaworMzgxMjkgYjJlY2RhNGRkNzBmZGY2OGMwNTBiZWQ4YWNmZDhiMjJkOWU4NmViMyByZWxlYXNlMjQtbWFpbnQKKzM4MTMwIGFmMDEzMzZmZjE5ZGIzMDY4Mjk2YThhNjgzMmI2MjliYWY2ZmMwNDYgcmVsZWFzZTIzLW1haW50CiszODEzMSAwNDQyNzE3NGNmNmFiMTNmN2VmOWJmOGExNzUxMjIxNGI3OTNhZjNjIHJlbGVhc2UyMy1tYWludAorMzgxMzIgMDU1ZGQ3ZjkwYjFlYThiNmVlNmNmODU1YmViOGM1ZmZkNWQwY2NlZCBsZWdhY3ktdHJ1bmsKKzM4MTMzIGE5YTAzMzY4MjliYTA0MDNlYzdjMTNmYmE4YzA1ZDMyYzVmNTVkNmYgbGVnYWN5LXRydW5rCiszODEzNCAwMDA2YjJkZDM3YzIzNjkxZDYyMWViNGIzMDUzMzRkOWYzNjc4OGJhIHJlbGVhc2UyMy1tYWludAorMzgxMzUgMDA1NjJkYWJmZDRmMzdiODMwODdjNjViNDUzNzkzM2M0ZTZiZTI4YSByZWxlYXNlMjQtbWFpbnQKKzM4MTM2IDRhY2Y3YWJlNTgyNTc3ZWU2ZWVhZDcxOGRjNzk2ODYyZmZkNGIyODQgbGVnYWN5LXRydW5rCiszODEzNyBhMTNkOTQ0Y2E3NmM5NzY0ZWMxZWIxZGI0ZWViMTA3Y2Q1MjMzNDlhIGxlZ2FjeS10cnVuaworMzgxMzggMjFkZDUyNGJlMDM2YWNhNGZmYmFkYmI2Yzg1ZTk1NTVlOGRiOTI0ZSByZWxlYXNlMjQtbWFpbnQKKzM4MTM5IDcyY2Q5M2Y0NjNiNWFkMTlhMGI0NzA5NjA4MWE5ZGE1Nzg1NTZmZDMgbGVnYWN5LXRydW5rCiszODE0MCA5Mzc3MmI3MTZlM2Y5MTc4Y2M2ZGM3YzA0MzZhNjEzYmU3MTA5OGVmIHJlbGVhc2UyNC1tYWludAorMzgxNDEgZDhlYzRhZmExZmZiMGFmMmZjMDkxNDhiNTk3OTRkN2I5N2RlMDIwYSByZWxlYXNlMjQtbWFpbnQKKzM4MTQyIGU5Y2VkZTkxZDNjMzJmNmNkMWJlZTQ3Mjk5YmZlZTg5NGQ2YTkyMDkgbGVnYWN5LXRydW5rCiszODE0MyBhZmQ5YjgyZTY4ZjFmOGRhNTQ2MTVjM2JiZmJlYzE3MTY4ZjBiODI3IHJlbGVhc2UyNC1tYWludAorMzgxNDQgYjNhZjdjNmRiMWM2MGRkZDcxNzM1YmIwMzg2NDUyMDIxZGE1ZGNlYSBsZWdhY3ktdHJ1bmsKKzM4MTQ1IGJhOGMzZWFhNDNhNTk3MjZiYjQxNzJkOWFiNTRjNWM5NWYyNDEwYzUgbGVnYWN5LXRydW5rCiszODE0NiBiMmM5OTgxOTgzMDQ5Yzc4MjFlYWRhY2Y0NTMxMTJiYjZmZmU3Y2RiIHJlbGVhc2UyNC1tYWludAorMzgxNDcgZWFiMTc0ZDBlZDAzMWFkNWNmNTQ0ZGY3NWVlZDYzYjVlZTk1MmE5YyByZWxlYXNlMjMtbWFpbnQKKzM4MTQ4IGE4YTRhZmUxOGI2MTM0YTMwMzQzNTdlZjczMzIyZjk4ZTMzYzQ1NDAgbGVnYWN5LXRydW5rCiszODE0OSBlMjIxZDk5NTQ2MjY4OTVhZTUwMDhiM2I5ZGYwY2VmYTA1Nzk0OThkIHJlbGVhc2UyNC1tYWludAorMzgxNTAgZjc1YWM4NmJjZWY0NGVmNGY4MGY0NTc2OTllYWVjNGM5ZTdhNDg1ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTUxIDU3YmZlYjUzZjJmYTM0YjIyM2ZkN2U1NTAwMzgxNzE0MDZjZjU2ZjkgbGVnYWN5LXRydW5rCiszODE1MiAzZWM1NGM1ZjcwODE0OGNiMjYyZGQyMWM4YTM1MWRhNTNkNzQyNWIyIHJlbGVhc2UyNC1tYWludAorMzgxNTMgNWRjMjc0ZTE1ODIyNzY2YmJjYjEzNmVlOWJkNjkyMjQzNTRjYjBmNCBsZWdhY3ktdHJ1bmsKKzM4MTU0IDE4MTBkZmQ2MTVhZTdkZmQ4YWYxN2Y5OGQ5NTc5ZDhhZTE2OTdmZTQgcmVsZWFzZTI0LW1haW50CiszODE1NSA3NjIyOTA5NjUxYzUzZDc4YmM5ZjdhZWMyYWZjNjg3NjExZTc3ZDZmIHJlbGVhc2UyMy1tYWludAorMzgxNTYgNTM2OGQyYjdkNjZhMGE1N2U5ZmFhYWIxOWE3YjU2ODNmNDNiNGUwZiByZWxlYXNlMjQtbWFpbnQKKzM4MTU3IDRkMzgzYjk5OGJiNDhmNDc2OTQyMGExZTc3NTYxYzFkYjNhNzc0NzkgbGVnYWN5LXRydW5rCiszODE1OCBjZDUxNzcwMWZkOTNjOTQ0OGM1ODIzNzE0MjdhYTg0ZjA1NzE1OGE2IGxlZ2FjeS10cnVuaworMzgxNTkgM2U5YTRkNTMxZTU2M2RkOTRkODM2YWI5NDgxMzgzZDA0MDU2OWM0YiBsZWdhY3ktdHJ1bmsKKzM4MTYwIDQwNzI1ZjMwNGUxOGQ3M2Q5NDhhZTFhMGVlOTA1MDRkNmEzYTM0NGMgbGVnYWN5LXRydW5rCiszODE2MSA2N2YyMTkwZTFmNmQ5YjY1MDU1MTkwMTJhYTk5MDQzMjA1YWEzZGI2IHJlbGVhc2UyNC1tYWludAorMzgxNjMgNTZlNjEwMzI3YjgxNmM1YmU3YjlkZjk0ZGQ3MTZhMGFjNTliZWY1MCBsZWdhY3ktdHJ1bmsKKzM4MTY0IGRjOWQwYTllZGU4ODY0ZDNiYjY3OTM2ZGI0ZTcxNGFkOTdhYjBjMTAgcmVsZWFzZTI0LW1haW50CiszODE2NSBkZjM4MGUxOTZjNGI1YWEzNDQ1YTA2NzFkMjMyODNlZjk1MTk2ZjQ2IGxlZ2FjeS10cnVuaworMzgxNjYgMWQ2MjVkYWVkNTk0NDI4MjM2OWI4NWViODBlNTEyOWE2MzJkYWY5YSByZWxlYXNlMjQtbWFpbnQKKzM4MTY3IDFmN2NmODUyMWJiNTg4NmI1YTBmODI0MjNiNGRjNDBmMmMzYTQ5N2EgcmVsZWFzZTI0LW1haW50CiszODE2OCA5OThmYjFlMWM4ZTlhNmQyM2NhMmU2NjMyYjMzZWU1Y2Q3Y2I2OTQzIGxlZ2FjeS10cnVuaworMzgxNjkgY2IzMGNmY2IzOWU3NDQ1NzJhNDI4N2NmYmIzZTNmMGE4NDJjNmU5NSBsZWdhY3ktdHJ1bmsKKzM4MTcwIDk5MTA0MWY3NjQ0NzhjOTA1YWVmYjM5MzBlNzM5NmI4NDMzMjA2YjAgbGVnYWN5LXRydW5rCiszODE3MSAwYzMyNjMyN2U3MjIzOTFiNmM2NGNjMzVjNWJmNzFlNDdjZmIwZGRmIGxlZ2FjeS10cnVuaworMzgxNzIgZjFjMzVkYTY0ZDU1NGQzZDZhNWMwNTRhODE0NDQzMTJhZjgxOTg4OCBsZWdhY3ktdHJ1bmsKKzM4MTczIGYwMGJjMjczYWU3MGQxZTlkYmFlMWNjNGQ0OWQxYTQwZDM2MDY4NWYgcmVsZWFzZTIzLW1haW50CiszODE3NCBlOGJmNjIwODNhYzQ0NDZmMzI2ZjE5MzQ5Y2YxYzBmYzVjYjY0YTAyIHJlbGVhc2UyMy1tYWludAorMzgxNzUgNjBhNGIwNjRhMjQ4MGE3MDk3YzZkMmQyNmFhZjU3NTE1NDM2ZDE0ZCByZWxlYXNlMjMtbWFpbnQKKzM4MTc2IGJiY2Q4MTI3YjMyNjgyOTQ2NWJiNDRhYjBlM2RiY2U5ODIwNzUxZTkgcmVsZWFzZTIzLW1haW50CiszODE3NyA2MTI3YzA4OWEwNmM5ZTIyYjVlNGNkZTc5MDFhM2NkN2EzNDA2ZGQ3IGxlZ2FjeS10cnVuaworMzgxNzggNzlhZGUyZGRkMzA2ODgxZDE0NGEyNTE1ZDc1YzY0OTQ2N2M1NjU0ZSBsZWdhY3ktdHJ1bmsKKzM4MTc5IDcyNDE3ZmEyMWM3ZmNkNzVlOTViN2E5YjVmNTA1NDZlMzVlOWVmMDggbGVnYWN5LXRydW5rCiszODE4MCAzMjE2M2E4YzNiNjlkMzg3MGI1ZmRmNDQzY2ZjMmI2N2M5ODQ2MWZiIHJlbGVhc2UyMy1tYWludAorMzgxODEgZTU4Y2UwNDA2NmNkODIyYTBjZGVhNGIzMmVlNjE1Zjc0MmM3YzgwZCByZWxlYXNlMjQtbWFpbnQKKzM4MTgyIGE2YzgxYWQxZjQ0Y2I3NDMwYmNmYTA2NDlkOTMwMmFlODYyOTRmYzAgcmVsZWFzZTIzLW1haW50CiszODE4MyBhZDhmOWU3NWY2MWQyNDIwOGY1NGVlZjNlODI3OTg1YTQ2OGM0Mjc2IGxlZ2FjeS10cnVuaworMzgxODQgMmJiYzhiNGI1YjkzNzVjMjM0Yjg1YmEzNTEwYjgwZTVlNThiMTEwYSByZWxlYXNlMjQtbWFpbnQKKzM4MTg1IDA5NzQzNzYzNDk2ODliYjI2MTY1OGYyMmNiZWM1N2NkZDYzOGE0MmEgcmVsZWFzZTIzLW1haW50CiszODE4NiBmMWFlNDFlOGFiZjM4OTFlOTZhNjc2YmVjOTU4ODg0ZGMyN2JkYjI4IHJlbGVhc2UyMy1tYWludAorMzgxODcgYjY0N2VkZDNiOTZiODFmNWM1Y2Q3NzRhYTFmZDdiODI2NzJiZjhhYiByZWxlYXNlMjMtbWFpbnQKKzM4MTg4IDQxY2E3Yjc2OGI0ZmY0ZWZlNTg0ZjdlNDQ4NzY5Yjc1YTFkODk4Y2IgbGVnYWN5LXRydW5rCiszODE4OSAzYTk1MGYxYWZjNTVmZjM3NmI3OGJjYzVkZTZmNzFmMWVlMzEwYTQxIHJlbGVhc2UyNC1tYWludAorMzgxOTAgOWRkODdiYTYxNzk1NTAxYTA3OTQ2NzU1NWIzOTRjMTMyNGM2MjE0ZiByZWxlYXNlMjMtbWFpbnQKKzM4MTkxIGVlODA4ZTA4ZGQ2ZmI4OTk1NWMwNTRkYTY2NTYxNWU2YWVmYzI4NDQgbGVnYWN5LXRydW5rCiszODE5MiAwNjY0M2YwNzEzMzUwOTMwNDliZmFhMjllZjI0Mjc0ODE0ZDJmYTk2IGxlZ2FjeS10cnVuaworMzgxOTMgNGU1ZjA2YzRmOTU3OWNiYzdiYmQ1NmY0YzQxNWZjODkyNzJjODhiNyBsZWdhY3ktdHJ1bmsKKzM4MTk0IGZmZTc1NDJmOGYxZjdhNzg0NTQ3YmMxNjM3MjQwZjZiOWVkZjVlYTYgbGVnYWN5LXRydW5rCiszODE5NSA5Y2FmOWNkNTQ1M2Q5ZTk2MjU2MWU1ZDI3YmQyNTUxYTNlMWFhZDY1IGxlZ2FjeS10cnVuaworMzgxOTcgNDQ2MTFlNTQ5OWU3YzI3ZTc2ZWQ2MjIxOGMzNDEwNjU0Y2Q3YmQxOCByZWxlYXNlMjQtbWFpbnQKKzM4MTk4IDNmYzhlY2U5ZDJiODBhNDAwYWFmMDg4YjAxMzJmMmU5YmJkYTIzNmEgbGVnYWN5LXRydW5rCiszODE5OSBhNjJiM2I0ZmY1MmNiOTE4OTc5MDU0MjRhYzEwZDk3YzZiNTdiZWUyIHJlbGVhc2UyNC1tYWludAorMzgyMDAgYWVjNTk2NjUwMjkyMzQ0MjZjZjAyMzRmNjhmYjcxMDRmZjYwOTFiNyByZWxlYXNlMjQtbWFpbnQKKzM4MjAxIGQ5MjZiOGE1ZWY2ZTM0YTI0M2ZjMGVmNDI1NmJhNDBjM2VjNzBkNjAgcmVsZWFzZTI0LW1haW50CiszODIwMiA4NGY0M2QzYTE1MzU0YTI0NDg1NGNjNGZiZGJhOWQ1ZTMwNWNjMTlhIGxlZ2FjeS10cnVuaworMzgyMDMgZTZiZjJlNzI5NDFlZTBlZWYzNTFiMDc1MGYxZGFjY2MzYjg5NGViOSByZWxlYXNlMjQtbWFpbnQKKzM4MjA0IGUxNWNiNjJiM2ZmYmRlMGIyN2EwZDEyNGYzOWEzZmYxNzRmMzg4N2UgbGVnYWN5LXRydW5rCiszODIwNSBiYTI0YTAzMjRhMDMzYWVjZDM3ZDYwNjc3NWVlYjYyNmRiYTFkOTEyIGxlZ2FjeS10cnVuaworMzgyMDYgZGY5NWE0MTUxNWM0MTQ0Y2FhYzVhYzk4MDI5NTEwYTA4NTU3YjNkZSByZWxlYXNlMjQtbWFpbnQKKzM4MjA3IGJlNDkyOWU1MTc5YmMwYjMyOWIxMTQ5ZDQwMmNlMWJjMmUxOTQ5Y2EgbGVnYWN5LXRydW5rCiszODIwOCBmODBiYjhhZmY0MTkyZmNkMjI0NDNkNmM1YTQxNTg5MTRjZDRjOTgxIGxlZ2FjeS10cnVuaworMzgyMDkgOGY4ZjU2MGNlYzk3ZWM1YmJiOGQxODQxMDlmMjUwNWMyYzcwMWRlNSBhc3QtYnJhbmNoCiszODIxMCAyMDgwYzhjNDc3Mjk3N2Q4OTg1YmYzNmI1OTYwYTAwOTE1ZDY0NTUyIGFzdC1icmFuY2gKKzM4MjEyIGY0MmE3YzMzNWE1YjlhYjAwYzAzNDIxM2FlYzIxNjA4NDNhMzlhOTAgbGVnYWN5LXRydW5rCiszODIxMyA4MjQzZTUxYTIyZGVlZmU2NTI0YzNiMDNmNWQ5YWU4YWE0MDBiOTc3IGxlZ2FjeS10cnVuaworMzgyMTQgYTBjMGNkM2U4MWZkNDc3YjhjZjVlMGUwNzZhNTE2NTgyN2E2MzA0YiBsZWdhY3ktdHJ1bmsKKzM4MjE1IGJhZWIwOWY2MGM4MjgyNjVhZWQwZDVjM2E4MzhmZWUxYTZlZTlkMTcgbGVnYWN5LXRydW5rCiszODIxNiAzZmVlN2M5MTE2YzkxZmQ5NTBiYzZmNjYzMDVhNTA3N2Y2NWVjOTdiIHJlbGVhc2UyMy1tYWludAorMzgyMTcgMjZjY2NmM2U4NDgyOTYyNmY1YjAyMWI3NWRhZWNkMzVhOTkxNTU5ZCByZWxlYXNlMjQtbWFpbnQKKzM4MjE4IGE4ZWNkNGE5NjgyNTY5NTFmOTkwYzQ3Y2MwNGJlYzYwMGU5MTM3YjkgbGVnYWN5LXRydW5rCiszODIxOSA2M2YzNDQ1ZjJmNTk3MzUwNzc4YzhkNzQ0ZDA3N2FlZjAxYjliYmM5IHJlbGVhc2UyNC1tYWludAorMzgyMjAgNTZlMGNjNDM3YjhiNTA1ZjIyYTRjZjQ2MjA4YWFhMTM5ZGMwZGZlMSByZWxlYXNlMjQtbWFpbnQKKzM4MjIxIDY4MDA2MDAyNzllZDYzZTFjNWZlYWE1ZGRhNmNlY2RjY2U3NWY2YTcgbGVnYWN5LXRydW5rCiszODIyMiBmMjYzZjk0M2VmN2IyMGFhMGY3NWU0Y2E0ZjFiNWMxOTZhYzAxODUwIHJlbGVhc2UyNC1tYWludAorMzgyMjMgYTEyM2ZiNGQ0NWJmNGE2N2Q0NTAyNTMyZTc2NGQ4NTEwMzkzZmFjZSByZWxlYXNlMjMtbWFpbnQKKzM4MjI0IGNhN2Y0MzE1YjIxMjZmN2M2NGYyMzUzMjMxNGRmZTQyYTJlMjMyNjggcmVsZWFzZTI0LW1haW50CiszODIyNSBlNTFhODIxNjI4NDY0ZjI1Y2JhYjY3YjRhMDk2NThiNzMwNTAxNWUwIGxlZ2FjeS10cnVuaworMzgyMjYgYjJkMzg3OTAwNGNkMDZkYzMxNWI1ZGVmMjA3YTY1ODE2YWZiYTY2YyByZWxlYXNlMjMtbWFpbnQKKzM4MjI3IGI3YmNiZTM5OGJhYTY4OWFkZjI4NDViN2QyNDA4YzA4MDE1ZDI4NDAgcmVsZWFzZTI0LW1haW50CiszODIyOCBiMWE4NDIzM2Q4NTU3ZDNlMjE5ZmRkMDZhNTJlN2VjM2JjZTM1MTExIGxlZ2FjeS10cnVuaworMzgyMjkgZjBkYjliMTg2ZjNkZGMwZTFjNzFkYjBjYTk3MTdiYjBkZjAyZDQ0NyBhc3QtYnJhbmNoCiszODIzMCBkODFiNjE3M2YwNTBiZjk4Y2QyODE2NDJhMTVlZDI2ZjVjY2YxMDRkIGxlZ2FjeS10cnVuaworMzgyMzEgMjMzNjY4ODljNmI5NGMyYWJiN2I1ZDc4YTA1MDdmMzRmOWUzZmUwYiBsZWdhY3ktdHJ1bmsKKzM4MjMyIDg2MTgxNjhkY2EyNzA1NDViYjVlYWZiMDBkYWRlM2M3ZTE4ZDQxM2IgbGVnYWN5LXRydW5rCiszODIzMyBjYzI3YjI0OTc1NWRlNmVlZGE1MDU2ZGFlMzA5YzU1MDc5ODJjNTRjIGxlZ2FjeS10cnVuaworMzgyMzQgMzVmMzE3OTBjNmY5NmJhZmE5MTY4NTUwMTcwNTE2ZWQ2MWJiNjQ5ZSBsZWdhY3ktdHJ1bmsKKzM4MjM1IDE5ZTYxYTJhNTYzMjBjNjUwNjFmNDQ2NTg5YjFjODcyMjk1ODEwNDggbGVnYWN5LXRydW5rCiszODIzNiBhYTI0NmI5ZjYxODRmYjlhOGZlZmRkMWI5YjAyMzE5MGNiNmMyNmIzIGxlZ2FjeS10cnVuaworMzgyMzcgYjIyZWJmYzQ4OGYzMDI0ZjBkMzgxZGNiYzM1MmRhOGMzMWIyNDU1NyBsZWdhY3ktdHJ1bmsKKzM4MjM4IDVjZDRmZmZhZjkxMDVhZjgzNDY2YThkOTEzMjkzOTQ3YjkyNTM2NzAgbGVnYWN5LXRydW5rCiszODIzOSBkYmJlODNjMzI5NGEzZTMxYjBhMDk3ZDc2N2RmMWI1YzZhZGMxYzQ4IGxlZ2FjeS10cnVuaworMzgyNDAgZmY3M2UxNWEzZmI5MjNhMTk5MmE2NzQ2MDljNWE4NDQwYTRlMmZhYyBsZWdhY3ktdHJ1bmsKKzM4MjQxIGNlMjMyMDcyZWFlNjQ5M2JkMTc0ZmM0NTZhY2QyNDA0MDc3NjU0N2QgbGVnYWN5LXRydW5rCiszODI0MiA4YThkODQ0NzY3YjY2NjJmMDU1NzIyYWU5OTkzZWRiMTY0ZWQyZjNhIGxlZ2FjeS10cnVuaworMzgyNDMgY2RhYTE2ODY5NjA4NTVkZGQ4ODc1YTYzZTU5MjJjMjA4NDBmMGVkZSBsZWdhY3ktdHJ1bmsKKzM4MjQ0IGI4OTg4MTM0ODM3NTM1ZDkxMmVjMWE3NWFjMzMyMzA1ZWI0M2M1YzggbGVnYWN5LXRydW5rCiszODI0NSA5ZTMwZDllMmI0MzM2MzkyNTU3NjZhN2I1OTFjNjY2Zjc4MDk5Yzk5IHJlbGVhc2UyNC1tYWludAorMzgyNDYgYzU5NzU0MzNhYTY4NzdmOWQ4MjRiZmNhNTM3ZWVkOWExYmEyZDBiNSBsZWdhY3ktdHJ1bmsKKzM4MjQ3IDJiNDg1OTc0YjQ3MTViYzYyNmFiZTgzYTNmMzc5ZWZmMmRmZjcyMmYgbGVnYWN5LXRydW5rCiszODI0OCBhOTRkYTJjNmE2MjZlNGQzNGQ5YjY5MTVmOGVjYWVkZjQyYmFhNmNiIHJlbGVhc2UyNC1tYWludAorMzgyNDkgYTBiYzQ0MTk2NjNjMzEwNWVhMTQzOGYyMWE2NTMzMTcxNzQ0NzczZSBsZWdhY3ktdHJ1bmsKKzM4MjUwIDI4N2U3MWY0NGQ3OTY5OGQyNjUzNTkwMWQwZGQ2ZjAxMzBmODE1NmIgcmVsZWFzZTI0LW1haW50CiszODI1MSAxYWVhODE1NTFhMjIyZjZiZmIyMjlmZDVkZGZkN2I2NGM1MGU5MDQ2IGFzdC1icmFuY2gKKzM4MjUyIGJhNmUxNzI3MWM2Mjg5MTY5MTEyMTVkZTA3NTc2M2UxYmNjMGY3NmMgbGVnYWN5LXRydW5rCiszODI1MyA0YmQxODBkMTcxY2MwMzQ0ODU3MTBlZjNlNDljZGRkNDE1OTNlM2ZiIGxlZ2FjeS10cnVuaworMzgyNTQgYTMxNjgxYTZjZjg4NzI4NzgzZmYwMDQ5YjYxOTkyMDJmM2VkZWJjNyBsZWdhY3ktdHJ1bmsKKzM4MjU1IDE4Y2ZmM2VkNzRkM2Q5NmRmOWNmMDk2YWFiYTZjOWEwZTNjN2U5ZjMgcmVsZWFzZTI0LW1haW50CiszODI1NiBhMjE2MDAzY2VmMDQ0MDJkODBlMTU1ZGFmNWEzMDA3MGRiN2Y0YTI2IGxlZ2FjeS10cnVuaworMzgyNTcgMzUzM2UzY2I3Yjk3YTU3ZTkzMjM5NWZkNGE0YzU3MTYxMDAxODU4NCBsZWdhY3ktdHJ1bmsKKzM4MjU4IDkxZDU1YTMwMzgyY2JiMDgxNDc5ZjIzODY0NWViZTQwNDg3NzhiZmEgbGVnYWN5LXRydW5rCiszODI1OSBmMjVkY2Q3ZjNlNDg4MGMwNDg3YjE4MDAyMTUyZGQyN2ZjYTVmOGY5IHJlbGVhc2UyNC1tYWludAorMzgyNjAgNTk4ZDE2ZmEwMmMxOTkxMjE0OGM0ZDMyZTdmOTk1NzEwZGE2YTU4YSBsZWdhY3ktdHJ1bmsKKzM4MjYxIDczOTFlMThiMGE3Y2RkZWY2NDQ3NDk2YWJjN2UzMzUxZTUwYjAxNGMgbGVnYWN5LXRydW5rCiszODI2MiAyOGY4NDkzODQ2OGRlYTFlNTNjMWEzZjQwYjMzYmM4NzkyM2ZmMzNjIGxlZ2FjeS10cnVuaworMzgyNjMgMGExNjA4YTVlYjA1YWVlNDlhNDgzOTU3MDQzYTYyZjhhMjE0MDUxYyBsZWdhY3ktdHJ1bmsKKzM4MjY0IGUyYzEwOTdkN2U4ZmIwYmU1MTc4MzNkMzllYmM3YmNhYTBiOWZkYWEgbGVnYWN5LXRydW5rCiszODI2NSBiNmVjMWIzYjlmY2U3OWM3N2RmMTcyNjc1ODU2ZmVlNjY3ZjA0YTI4IGxlZ2FjeS10cnVuaworMzgyNjYgYjQ4MGFiYWYxZjZmNmU2YWI3ZDJhNTNhMjE3NmNmZGE5NTZkNWM4NSBsZWdhY3ktdHJ1bmsKKzM4MjY3IDZjMDJiYjNmY2NhNjc5MDk4MDk4MmUwZjFkMDlkMTNlNjU1YTkwZDUgbGVnYWN5LXRydW5rCiszODI2OCA3MDU5ZmI4YjllYjM5MzRlNWVmNTE3MDZkN2NjYWMzNWQwMDVjMzg4IGxlZ2FjeS10cnVuaworMzgyNjkgYzRkYjk5MmY4NDBmMzA0ZWRjYTYwYTI3MzJjOTI0Mjk0ZjNhNmY0ZiByZWxlYXNlMjMtbWFpbnQKKzM4MjcwIDQ1YTMyMGYzOGM0ODkwMWYzNWJjNGNmZTIxMzU1ZmU1ZTdkYmM0ODIgbGVnYWN5LXRydW5rCiszODI3MSBkNzk2ODYyMWQyOGQyZTdjZDE5NWFlOGMxMzIyY2UxMDNhMDMzMjI0IHJlbGVhc2UyNC1tYWludAorMzgyNzIgOGJiNDZmZGNlOGZkMzg0NDFlYTdjMjQ1NTI4ZDY2MmE5NTY2MzQ4OSBsZWdhY3ktdHJ1bmsKKzM4MjczIGE5OWY1YWQyOWVhYzY0YTJiZjA0N2JhYmY5ZGE0NWQyODlmYjY0MzAgcmVsZWFzZTI0LW1haW50CiszODI3NCA4ZWNhOGQ5ODAyNjBkZWQyNWEyY2NlMTg4N2IxY2UzNWNiY2UxOGU3IGxlZ2FjeS10cnVuaworMzgyNzUgMTNhODU4MDZiYTQ4Yzk3OTMzMTBhNzI4NDdmZDM0YjgxNmMzOTQ3MyBsZWdhY3ktdHJ1bmsKKzM4Mjc2IGE4NTk5Yzc4ODIxOGQ4ODg1MjI3YWUzOWZmNWM4OWM5YzljOTNiOWQgbGVnYWN5LXRydW5rCiszODI3NyA0MjgyZjg4MmIyODU5NTZlM2JlYWQ3YjEwYjNjNGJkYmQ2ODg1MTZiIGxlZ2FjeS10cnVuaworMzgyNzggYjkzODQ1Y2U0NDU0OTVlM2I0ODVjYjZiMzlhZWQ1ZjE4M2I3MDExMCBsZWdhY3ktdHJ1bmsKKzM4Mjc5IGM4OGFiMjkyYmYwNTI4YWE5NWE2NzEyZDBmMTI1OWEwMjEyODVkNDEgbGVnYWN5LXRydW5rCiszODI4MCA3MmZkMzczY2QwZjk1YTFjMmY2ZWQ0NWM2YTE5NzBhNjlmMjIwZmNlIGxlZ2FjeS10cnVuaworMzgyODEgMWQ4NjZjMDJhOGNhYjIwNWJiMWE0MDJiYTk3NzBhZTQ1ZWE0YTk0MyBsZWdhY3ktdHJ1bmsKKzM4MjgyIGE3MGRkODc2N2IwNzFiMzQyNjZkZGJiMDYyZTVjNjMyMmY0Zjg4OGUgbGVnYWN5LXRydW5rCiszODI4MyAwMmYzOThmYmIwZjA2ZDE3YzQ1YjNhYjA2ZTQyOGJjOGMxNThlMDczIGxlZ2FjeS10cnVuaworMzgyODQgYjMyYWUwZWVjZGVlNzFhZDBmYzRiNzg0OWVjYmU3MmY0OWRmZTc0NiBsZWdhY3ktdHJ1bmsKKzM4Mjg1IDhmNTczMGEzYmM0YWJmNzI3ZTk0MzczNDY2OTQ1ZDY5ODIwNjYzZDggbGVnYWN5LXRydW5rCiszODI4NiAzNDczOTJjOGViOGIzNmM1M2NiNWVlYTIwYjIxMTM2NmRjMzM2MzMzIGxlZ2FjeS10cnVuaworMzgyODcgOGZjMDMwYzVjNzBhYmUyOTE5MTI0NTQ2NGZjODhlM2E5YjkzZWVkMCByZWxlYXNlMjQtbWFpbnQKKzM4Mjg4IDU2M2NiZjRkNmJlNDY1NjVmNDVmMDQwNWJlZDgzZTIxZDc1ZTA5NDkgbGVnYWN5LXRydW5rCiszODI4OSBmZTdhMTU0N2YyZmFlYTQ0OGZlYWJlNmU1MTZjM2JlNDY3M2FkMTFlIGxlZ2FjeS10cnVuaworMzgyOTAgZmE2NWUzNDI1YTRjNWFkNmQxYTBlZDYwNzFkNGUxYzA1ODkwNWEyNSBsZWdhY3ktdHJ1bmsKKzM4MjkxIDY1MmI4NWQzNWE3NWRkYTEwZTJkMzMxYTU3NmU5M2EwZjczNzA3ZWQgbGVnYWN5LXRydW5rCiszODI5MiAyNjlhMmMxNGJjNTcwODRkMzZkODNjYmQxY2VjOTgzMmFiZmZlZDEyIGxlZ2FjeS10cnVuaworMzgyOTMgMzMxNmFhNTQwZTY4YzgwNzI4NDE5MWVlOTYyZmYxYjYyZDQ0OTc3YyBsZWdhY3ktdHJ1bmsKKzM4Mjk0IDEzOTM0MzQzYTUzYjgzMjYzMjQyNzE1OGJlNWFjOGE0NjBkZWM1ZTggbGVnYWN5LXRydW5rCiszODI5NSA1NDQ5YjdmODA2ZmI3ZGYyYzIyZWYzODAxZWVjMTU3ZGE0MWZlM2ExIGxlZ2FjeS10cnVuaworMzgyOTYgNWJkMmIzZTRmZGNjNGY1NzEzMDkyMGNiZTUwNTUzMGNiZjYyMGVlMiBsZWdhY3ktdHJ1bmsKKzM4Mjk3IDg0MzZhMjk1NTkxYjY4Y2E4MGE5MDQxZjZmNjRkNDlmZWE1ZDlhNmEgbGVnYWN5LXRydW5rCiszODI5OCA0YjhmYThiMGFmOTE2ZWU1ZDA0MmYyYWUyYWI3ZmJjZjNmZjAxZDcyIGxlZ2FjeS10cnVuaworMzgyOTkgZGMwOWNjOWIyZWU2Yzc4ZDI4NGQ1M2VhNTMzZTBlMDFmNzkyM2EwYSBhc3QtYnJhbmNoCiszODMwMCA2ODljMjMzODVlNGY5ZGQxMjNkNzkyYzcxMTM3N2JhOWI3MGFkYTA5IGFzdC1icmFuY2gKKzM4MzAxIDRhZjNiZmZlNTYyMDNhZWQyMmNjZTE0NThjYjQ4ZDEyNTg3OGI5OGYgbGVnYWN5LXRydW5rCiszODMwMiA3MjhlZGVmYjFlMTczNTZlOGY3ZDYyYmMwN2E2NWJjMjZjZGU2YjhiIGxlZ2FjeS10cnVuaworMzgzMDMgZTEzMDU4OTRiZjA5NmE4YzljOTZlY2FiNzk4M2UwODQyNDM5MjU1NyBhc3QtYnJhbmNoCiszODMwNCA0OTAxN2Q5ZWY2Yzk4NmI2ODczOGY0ZjFlODFjNmFhODhhZjIwMjNmIGFzdC1icmFuY2gKKzM4MzA1IDRiNzRmZjA3OTY1MmJmNWRiMDI5MWE5N2Y3ZjMzMTYyMjM5ODVmNzAgbGVnYWN5LXRydW5rCiszODMwNiA2OWI2OGY5MWNjNzc2NjkwY2I2MzIzYjQ5ZTQzMDBiODEwY2ExNDU2IGxlZ2FjeS10cnVuaworMzgzMDcgZjU2NDYzNDk0YmZkOTRlZTVhN2QwOTcwM2VkOWMxOGU2NjllNTE1MyByZWxlYXNlMjQtbWFpbnQKKzM4MzA4IDAzOTgwN2UxZTRkMTI4MmI5NzFmOTE4ZmE3MTE0ZTJhYzFhMGJjYTUgcmVsZWFzZTI0LW1haW50CiszODMwOSBlMWE3ZWI4MzJjYjUxYWJmOGI3ZGY1MmI1ZmZmMDI3MGYwZDUyMjFiIHJlbGVhc2UyMy1tYWludAorMzgzMTAgNGFhNTU0YjAwY2IwYjU1NmQwMjgzYzEzOTgwNGI1ODc4MTg4ZWNkMyByZWxlYXNlMjMtbWFpbnQKKzM4MzExIDIyNDZhYjkyMmViNDhlNDAwMDM3YWYxODQ3YjI5YjAzZmQ5ZDIzNTEgcmVsZWFzZTIzLW1haW50CiszODMxMiA5NTVkYTA4MGIwY2YzNjgwY2I5ZDk3YjY3MjYxN2Q5MTUyNWIzZWEzIHJlbGVhc2UyMy1tYWludAorMzgzMTMgN2Q5OTk4MWIyZWNlMzJlZDdhODcyMGNjYzY5ZDkwY2RhODcxZjQ3MyByZWxlYXNlMjMtbWFpbnQKKzM4MzE0IDZmZGJjNGU4MzNlMjBmZjk0NjcyNjk2ZmNmODNmMGVhMzRiZjZhNWMgcmVsZWFzZTIzLW1haW50CiszODMxNSA3NzVhNzJiOWQ1MmNkYzc2OGEyOWU4NTExYWZlOWJiOTlhMmY2YzcwIGxlZ2FjeS10cnVuaworMzgzMTYgZWQ0ZGMwNWVhNGI4YzEyNmFhNzA3YWIwZTM2OTE5ODg4YjdjYjY1OSBsZWdhY3ktdHJ1bmsKKzM4MzE3IDE4ZjZjZWJlNDdhYWFlNzM1OTlkMmUzZWNhOWM0NjFlYjNhYWIwMWEgbGVnYWN5LXRydW5rCiszODMxOCA2ODM3MTllMDQyMTgxODJiMDJlZDZhM2NkODQwYTc3YzcwYjVjNTNmIGxlZ2FjeS10cnVuaworMzgzMTkgY2Q2YjU0YmEyNzJmYjQ3NzRiZjdkOWRjNGI5NGY3MGZiYjE5MzdkNiBsZWdhY3ktdHJ1bmsKKzM4MzIwIGQ5M2I2OGE5OWY5NmUzODE1NjQyZmUzNjQxM2JlZmVlNDJkOGY5NjcgcmVsZWFzZTIzLW1haW50CiszODMyMSA2Y2YzOTlhYWZjNjY4ZTQ0MjYzYzBjMTFjMjdiODQxNmYzOTg3ZGIxIGxlZ2FjeS10cnVuaworMzgzMjIgMjFkZDczM2ViMTE4YzNiYWZlNzlmODc4Y2Y2MGNjN2M3N2RmNGMzMSByZWxlYXNlMjQtbWFpbnQKKzM4MzIzIDhjMGUzYzBhMjMzY2FjM2FjNDdmMGE1NzNhYjRmMWNlOGQxNjg5YjAgcmVsZWFzZTIzLW1haW50CiszODMyNCBhMDYzZjBkNmRiMjgwZTRlNDVmZGI5YTQ4YzY2NjM0MjE0NTIwOTk2IGxlZ2FjeS10cnVuaworMzgzMjUgYWY2MzBlYjI2ZDU5YjdmMWNkOTQ4Y2ZiNjFkZTgxOGQyZDVjMmQxZSByZWxlYXNlMjQtbWFpbnQKKzM4MzI2IDI5MzFmNjUwNGFmNWMzZDYwYWUyYmVhNmJjYzBjNWM2ZTIxMmRlZGIgcmVsZWFzZTIzLW1haW50CiszODMyNyAyZWVlOTBlZjMyYWJjNzI3NWE3ZDY2ODU4YTY3ZmYyNDdlMmM4YzU5IHJlbGVhc2UyMy1tYWludAorMzgzMjggYWQxMjYwNTRhZGU1NzUwMGM5ZTQ3OTk4M2Y2NmYwMWRlMDM3ZDNiZSByZWxlYXNlMjQtbWFpbnQKKzM4MzI5IDY3MGRlMzAxYjg4N2YxMDFiYWY5NDVlMjM4NDJkMjI5ZmE2MGRkMWYgbGVnYWN5LXRydW5rCiszODMzMCA1OTUyM2ViMzVjMWQ3MTI2YzAxN2YxZDI0NDhmYzRkOTIzY2NjZTM3IGxlZ2FjeS10cnVuaworMzgzMzEgYTA5M2FlYmYxYjQwZTdkMTE2YzdkZjM0ODZlYjdjNzMxZTNmNmJjNCByZWxlYXNlMjQtbWFpbnQKKzM4MzMyIDY2MDVlMTJiYzE2ZDcxM2UzNzkyNjAyMzEwZGQ5NDE0MWUxNDI5MjQgcmVsZWFzZTIzLW1haW50CiszODMzMyA1MWEwZjBhZDQ2YWMwZDljMzE3YzVmODI5YWVhNWVlZTc4NDdlZGE0IGxlZ2FjeS10cnVuaworMzgzMzQgNzBhMDQ0OTc1NWUyNjFkYjgzYmZjYmI4OTViZDdkOGFmNGM0NjlhZiByZWxlYXNlMjMtbWFpbnQKKzM4MzM1IDFmNWMyMzUxNjA1YTE1N2RjZTFjOWI4NzIwMmI2NGY5NjIyNDJlNmQgYXN0LWJyYW5jaAorMzgzMzYgMzI5OGFlNmYzNjY1ODdjMDU3OGUzMTg1MTljNDE0Zjk1MTIxNGU3OCBhc3QtYnJhbmNoCiszODMzNyA4YjY1NDhmNWYyNzlkZDk0YTBkOGVhYTYzNTVhMTI1OTRlOTc4NmEyIHJlbGVhc2UyMy1tYWludAorMzgzMzggY2MzYmQ0ZTRkOWYwYTU2MzE1M2UxYjRjYmE0Nzc5ZTcwMTQ1MzBlNyByZWxlYXNlMjQtbWFpbnQKKzM4MzM5IDAxMzNiMDIyNjI2ZWIyY2I0NWZlNjdiNmJhZWU1N2IwMjExMmMwOWMgcmVsZWFzZTI0LW1haW50CiszODM0MCBkNWRkZDA2ZDU1ZmM5ZGEzZjFmNGEwNDg3ZmMwMmYzYWRlNWY5ZjQyIHJlbGVhc2UyMy1tYWludAorMzgzNDEgOWQ3NjM5MzdhMjViNGI0OGFmNDgwMGMyNmNhZGI0YTI5YjBkOGFhYyByZWxlYXNlMjQtbWFpbnQKKzM4MzQyIGZmNTNkMTQ3MTdjNTI4MTM1YTQ1NDQ0NjdlZDU0M2ZkZjlhOWRmMzkgcmVsZWFzZTIzLW1haW50CiszODM0MyA3ZGYwNzdmNDcwNTY5MGQyNWNkN2E1N2RkMThmOTA4NjhjODhkZDA1IGxlZ2FjeS10cnVuaworMzgzNDQgZDVjZTg4ZWJkYmJkMGQ3NTAxOThjNDQ3ZGQwMGNjNWNiYWZlYmVlOSByZWxlYXNlMjMtbWFpbnQKKzM4MzQ1IDgzYzk3NWI0YTJjMzcyMmEwNmQyYjU5MzM5ODIyZTZjODM1MzBlNTAgcmVsZWFzZTI0LW1haW50CiszODM0NiBjNDQxMzMwN2EyZjMxMGJjYjc2NzVlMjZhNTcyMTkyYjFhYjNhMWVjIGxlZ2FjeS10cnVuaworMzgzNDcgZjczOGQ2NGM4MjdkMzA4NzE4MDZmYjcwNDYyMzM0MGZhZDliMzY1NiByZWxlYXNlMjQtbWFpbnQKKzM4MzQ4IDYzZmNkNjdlMzMyOWFiM2MxMjA2ZTNkMWMwMmQzODUyZWEyNjQ1MjIgcmVsZWFzZTI0LW1haW50CiszODM0OSAyYjI1OGYwY2JjMzFjYjk1ZDFmMTJjYWIwOTE4NzQ0MWJkZThjNGNkIGxlZ2FjeS10cnVuaworMzgzNTAgMGY0MWZlM2ZhZGY0NWUxZjg5Y2I0YjAyYTBkNzc2MTQ4YzA4ZjE4OSByZWxlYXNlMjQtbWFpbnQKKzM4MzUxIGYyNDZlNDQ4NTYzN2E5NGU0NDEwODBlNjViNTk1ZGQ3OTcwYzI4NmIgcmVsZWFzZTIzLW1haW50CiszODM1MiA3ZjUyNDE3ZTUzMGIzNGRiMjkwNjliYzI4YTI1NGU5Y2IxZDMzMjI4IGxlZ2FjeS10cnVuaworMzgzNTMgMjM2OWRmZTJkYWQ0NjllYTVjOWQwZjI4OTcyOTE5YTNkYTNjMGQzMSByZWxlYXNlMjQtbWFpbnQKKzM4MzU0IDk3MjQxNzQyNjIyNDdhM2FhZTcwNzBkZDVkZDQxNjlmMjFiNmFjYmMgcmVsZWFzZTIzLW1haW50CiszODM1NSBiNzQ1NTk1ZDQxZDFmMTYzNDE4MDBkYmQwZWM0M2ZiZDY0NDk4YjE1IHJlbGVhc2UyNC1tYWludAorMzgzNTYgZTNkNzQ4MzBlZDJmYTdkNWYzYmM2MmM5NzkwODI4MTM3OGQwMjU0YSByZWxlYXNlMjMtbWFpbnQKKzM4MzU3IGI5YmM0OWI1M2Y0ZDYyNWQ1Yzk0M2U2NmMxZjk1NzJhZGVkMzZkNDQgbGVnYWN5LXRydW5rCiszODM1OCAzNmFiZGQ0NzhlMDc0MWYyNDBiNDk5ZDY3OTIyOThiMzJjNzY5OTY3IGxlZ2FjeS10cnVuaworMzgzNTkgOWM2MmU3ZDY5MGE1MmFhOTg1ZDBiYmI2Zjc4ODc2MWQ0Zjk1ZWE4MiBsZWdhY3ktdHJ1bmsKKzM4MzYwIGU4NTJjZjZhYjViNTUyMTdhOTg1Mjk1ZjA2YzhhYjM5MDMwZTY2MjIgbGVnYWN5LXRydW5rCiszODM2MSA0YTFmZWZkZmM3OTMwNDYzMzMxZjgzZWY3ODY1ODRkMzJmYWMxN2I4IHJlbGVhc2UyNC1tYWludAorMzgzNjIgOGM5ZTNlZDU5NGZlZDJjODY2MTljMjlhZWY1NDllMGFjMzk4MTVhNyByZWxlYXNlMjMtbWFpbnQKKzM4MzYzIGJiMDY1NGNmNWU1MjA1ZTM3MzhkZjNkY2VjZDY2MWM5MTNiZGNkNDcgbGVnYWN5LXRydW5rCiszODM2NCA0ZDI5ZWIzYTNkZGJmMmMzM2EwZTNjYzQxNjZhZDg3NWYyZWU2ZWM2IGxlZ2FjeS10cnVuaworMzgzNjUgNDFmMjllMjZmNjhmNDQ4MDhkMzdlNjJiMmMxNTU0M2FjYmNhNDg0YSBsZWdhY3ktdHJ1bmsKKzM4MzY2IDQyMDllYzE3MDZhYmExNzU3YzQxYWZjMjNiNzFhODY5NmNkMTY3ZGIgbGVnYWN5LXRydW5rCiszODM2NyBhNzJlZTYzYzZjODQ5MDIxNmM5NzJjY2VhY2VhMjg5NTM0Yzk5NWI1IGFzdC1icmFuY2gKKzM4MzY4IGZjNTgwZmYwMGY2ZjU3MGM5ZGMxZTcwZmI3YjdiYWNiZmI1OWY3MzkgYXN0LWJyYW5jaAorMzgzNjkgNmIxYzdiMThmNTlkODdiNTgxY2IyMzc0N2VmY2I0NWNhOGNmMWQzMCByZWxlYXNlMjMtbWFpbnQKKzM4MzcwIDZlNzAzM2M3NGM3MGI3YzA4ZTlkYzQ2ZTMxZTVmOGZkOTVjMDY0ODQgbGVnYWN5LXRydW5rCiszODM3MSA2ODAyMGJkMWI5ZTJlMmVjOTMxNGYzYjdkNzk1MmQ3NDllMzhlNGMxIHJlbGVhc2UyNC1tYWludAorMzgzNzIgNmI2ZTZiOTgyYWM4NTdiZjc1YmE3YWNjMDQ2ODQzNWMwZmVhZjk1YiByZWxlYXNlMjMtbWFpbnQKKzM4MzczIDA4ZTNjYThmYjA3MWY1OWE3YzAyYzcxMGU5N2YxOTY4ZWU1OGU5MWUgbGVnYWN5LXRydW5rCiszODM3NCA0ZGE0NjI1OGJmZjhjZWM5NjFmMTY2YzI2N2U2MmRiNzZjMjZkMGM3IHJlbGVhc2UyNC1tYWludAorMzgzNzUgYzkzMzdjOWQyZjJhOTQ2NjFkMWUwYWMwODJkN2E3ZWUyYzNiMGQ1OSByZWxlYXNlMjMtbWFpbnQKKzM4Mzc2IDhmNjA5ZWFhYzNmMDAyYTMwYzA1ZmRkMTQwYTQ0NGU0MmQ3YTk4YjEgcmVsZWFzZTIzLW1haW50CiszODM3NyA1MTZjYTBiOTI5NzFiNzAzOWVkYjVmNjA0MjMzM2UyYjgwNWZkYmNiIHJlbGVhc2UyMy1tYWludAorMzgzNzggYWJiM2MxYWQwMGE3YmI1MWMzY2VmNTU1NzQzZTA3ZjdmYjhiMDYxOCByZWxlYXNlMjMtbWFpbnQKKzM4Mzc5IGFlNzMyODY4OTdhMzRhMzllMDFhOWYxNjMzMjhlMjI3MmZhOGY5MjkgcmVsZWFzZTIzLW1haW50CiszODM4MCBjMTY0MWVlZGE3YzkyODU1MDcyNjlhY2JmZWIxY2E0NjhlZDdmMWY3IHJlbGVhc2UyMy1tYWludAorMzgzODEgNDQwYzI1YmQ5OWRmODVjNDk0YTk2MWNlNGJhZGYyYTYwODNmNDYxYiByZWxlYXNlMjMtbWFpbnQKKzM4MzgyIDg3MjI0ZjJjNWUxMDAwMmRhNGQwZGJkNDNiZDY0OTIxZmU3Y2E4MjggcmVsZWFzZTIzLW1haW50CiszODM4MyBjNGY3NmVkMmVhZmEzZjdhNWI3ZGZkOGIyOTJhM2JmOTcxNzhlOTYwIHJlbGVhc2UyMy1tYWludAorMzgzODQgZTk0OWQ0NjM1NzJjZTY2MTFjMzE3MzQ0NjM2M2U4ZjY2ZGNiNGU4YSByZWxlYXNlMjMtbWFpbnQKKzM4Mzg0IDI2MzliMTBkYWE5ODViMjBiM2NhYmVjNDUxNjlkNTIzY2FjMjlkNjggcmVsZWFzZTIzLW1haW50CiszODM4NiBiZGE5MzM4NzM3NThlNTRlM2NkNjg5Mzc0MjUxYWQzZjMxZDg1YmExIGxlZ2FjeS10cnVuaworMzgzODcgMThiYTA4NWNjOGJiYmY1ZmVhZDNiOGM1NmQ1YTZiYTEzMjhhNDEwNCBsZWdhY3ktdHJ1bmsKKzM4Mzg4IDEzMTc2ZWQ1MmU2NWM0ODRkYmNmNGY4MWZiOGU3ODQ1ZjNhMzFmZmUgcmVsZWFzZTI0LW1haW50CiszODM4OSA2ZjJkZDA4MWZlMDUxMjY2ODIwNjEwMmJmZGJkODIwMWIzYjRmMjFkIHJlbGVhc2UyMy1tYWludAorMzgzOTAgMWMzNDkwNjBhYzA4ZjM3MGJhNmMyMTRjMjM1MDcxOTRlZGJmMDRmYiBsZWdhY3ktdHJ1bmsKKzM4MzkxIDkxMDM4ODAxZWI0NWZjMzJiYWJjODQzNGIwYTRmMzc1M2E3YmNhYjMgcmVsZWFzZTI0LW1haW50CiszODM5MiBjYjc4OTZkNzdkZTUyMmYyNGI5MWM3MDViZWRmZTgyMGJjZTMwYzRhIGxlZ2FjeS10cnVuaworMzgzOTMgOTI1ZDU0ZGY5MmJlOTUwYmQ1ZWRiN2U2N2I1YjU2OTQ0NTFmMDJjYyByZWxlYXNlMjQtbWFpbnQKKzM4Mzk0IDU0ODEzNGJhMjc5ZmVjMjk0MDNlYzc4NGZmNmEyNzI3ZWUyZjk1NWIgcmVsZWFzZTIzLW1haW50CiszODM5NSBlMzA3NGU5NGZiNzU1ZTBkMTBhZmZlYzMyNTJhMzNhNWZhYjM2NjBlIGxlZ2FjeS10cnVuaworMzgzOTYgNjU4NTEyNzc0NDY4MTUxNTEyMWJiMjFmYjNhM2FiYmU1YzEzMTlkOCBsZWdhY3ktdHJ1bmsKKzM4Mzk3IDliNGUzMThkNmM3MjY3NGVkYmE5ZTE3NmQ5NTlmMjNmMWMxZjVjZDIgcmVsZWFzZTI0LW1haW50CiszODM5OCA2YzkwY2I3NjZlNmJhNDBlMjNlZDI0YTNjYTkzYTlmYmQ4NWM2MTkwIGxlZ2FjeS10cnVuaworMzgzOTkgODhjMjllNTFiMDI5YTE4YzI5MmQyODQ4OGVjYjZiYjdmYWE2ZDZiYiByZWxlYXNlMjQtbWFpbnQKKzM4NDAwIDVmZDUwNjUxNjM2MTRkZGZiMmIyMGQ1YjM2YzgxM2FhZTVmNWFlMDYgbGVnYWN5LXRydW5rCiszODQwMSA4MDRjNTY3MzY0M2U2ZWY1MDM4ZWVmMmMyOTc3ZjY4ZjA1NDI0ZDlmIGxlZ2FjeS10cnVuaworMzg0MDIgYTQyMjVjZGMyMDQ3ZmQwZDYyYTc4YmM3MjJmZWJkODJhMTllZTRmYyBsZWdhY3ktdHJ1bmsKKzM4NDAzIGY0MzA3MThmOGI0MzBlNTU1MTk1MDUyZTM2MWNlY2NmYjU1NmEwMDUgbGVnYWN5LXRydW5rCiszODQwNCBmMDEzNDIzMmJkODRkYjMzMjg3YjFjZGFkYjdkZTJjMmJlMGI2ZWQ0IGxlZ2FjeS10cnVuaworMzg0MDUgMGJlMTcyNTlhYWM4ODZjNWM1ZDRiODM3MjhkM2YwZTFkMTRkNDgyZSByZWxlYXNlMjItbWFpbnQKKzM4NDA2IDczNzY0OWE2YzkzNWM5ZjBiMDhmNTZjYzkxYjFiMDUzZGEyMDM5OWQgcmVsZWFzZTIzLW1haW50CiszODQwNyBiODQ2ZGQxYjk3NTEwYWU5MjNiYWZmOGMwODY3MWM0MDNjNWQ2YWNjIHJlbGVhc2UyNC1tYWludAorMzg0MDggMWMwNzI2MTVlNWI4NmUzNmRmYzk0NGJhNzQzMTBjYzA5OGVlMDg2MyBsZWdhY3ktdHJ1bmsKKzM4NDA5IGNkNzQzMjFlY2RjNDdhNzEzMTU4YjY1ZWZiZDBjMjgwZDM5YmNiNDggcmVsZWFzZTIzLW1haW50CiszODQxMCA2OWVkN2U5MTJiM2QyOTcwMTYxZTg3Mzg1N2IwZTliNDVkZTZiNGVjIHJlbGVhc2UyNC1tYWludAorMzg0MTEgY2NmNjI3MmVlZGY0ODRjNTc0OTY4YTE2MjIwNjhkMWRiNWRkZDkyOCBsZWdhY3ktdHJ1bmsKKzM4NDEyIDFiNzhmYzI5NmZjODk1ODg5YTlkZjJiMTdlMThkN2ZkNmY3OTk5NTUgcmVsZWFzZTI0LW1haW50CiszODQxMyBjNjhiZTg2NTkwNzViYmM5OWJhODg1ZTc1N2Y2MWY3MWU5NjdmNzk1IGxlZ2FjeS10cnVuaworMzg0MTQgM2QwMGI2NDI1NTA1N2VjYzk5NTcwOGEwMDM0NGY3MThjYmQzNmVmNCBsZWdhY3ktdHJ1bmsKKzM4NDE1IDNkOTlhZGVmYmYzYzA1MGQ1NjUxOGNhOTE0YmJlNmY3MGUyZTQ3YzQgcmVsZWFzZTI0LW1haW50CiszODQxNiAzMjBjNzY0M2Y4ZTllZjk5MzRjNDA2OGJlM2IxM2U0NWUxODUzMWZlIHJlbGVhc2UyNC1tYWludAorMzg0MTcgNDE3NGY5NzhlNTY0NzMyZDRlYTdlOWE2YjgwOTUwZGM5YmVjMGY0NCBsZWdhY3ktdHJ1bmsKKzM4NDE4IDM3YjJmMTFjMWEwMDVmNzFkY2U5MjU3Yzc1NmVhNjNmMmYxNjYzODkgbGVnYWN5LXRydW5rCiszODQxOSA4MjU5ZmYzZWU0OTM2MTI3YTEwN2M3YTQ1NDYxYTIyZDM0NDEzMTNlIGxlZ2FjeS10cnVuaworMzg0MjAgY2E5MTc5OWNlY2JhMDEzNGJjMzlmOGQyNTM0Mjg5M2EyY2JlOTU2ZSBsZWdhY3ktdHJ1bmsKKzM4NDIxIDllZTk5YTM1NTY4ZDAxZmE4YmFmNjJhM2YwZTJkNjhmMDUwMjQ2NmUgbGVnYWN5LXRydW5rCiszODQyMiA0NjU3MjQ0MjUzNzAwOWUzNzgzNGYxNTFhODQ3NTNlMGU2MWUzYTg5IHJlbGVhc2UyNC1tYWludAorMzg0MjMgN2U1MTAzYjRiMjg5ZDdhYmE4OWIyZWZlOTU1NTFiZjAyMzIzNDViZiBsZWdhY3ktdHJ1bmsKKzM4NDI0IGYyNDExN2EzNjI4YWFkZTYwM2IwMThjNmI2MTUzMGU0NzY2YTBmYjIgbGVnYWN5LXRydW5rCiszODQyNSA5ZDY2ZmJhNzg0NDRmMWIyMTdmNjY0MTI1ZGQxMDc0MDMzYjExNDA3IGxlZ2FjeS10cnVuaworMzg0MjYgN2M4ZjMzNzhmNmY2MWFlZTlhNzRhNzQ1MWUxNmE1ZTNhNzM1YWUxZCByZWxlYXNlMjMtbWFpbnQKKzM4NDI3IDgzNWI2NDVhMTY4Zjc0YzAxYTY1ODc4NzYxMmNiMjQwOGY2ZmQyZjUgbGVnYWN5LXRydW5rCiszODQyOCAxYzI5NDNmOTU0Njg2Mzk2MDNiYTBhZmYzMmMzZTJiNjcxZDRiMzgwIHJlbGVhc2UyMy1tYWludAorMzg0MjkgNjMxNGU5NGQwZDM1ZDk3YmEyZGI4M2E1NzMzMzJhMzY2NzZiNTJkMSByZWxlYXNlMjMtbWFpbnQKKzM4NDMwIDY4NThjMjQ4NDAxMDgyMTMxMDJiMGFlYjYwYjkwOTk5NDg3NDMxYzQgcmVsZWFzZTI0LW1haW50CiszODQzMSAwMjhmOTJlNDRiNDgxNDdmYmYzNDU3NjQ5NzE2MGZjN2ZjYTlmZmMxIGxlZ2FjeS10cnVuaworMzg0MzIgYTI0ZTcwZjQ2ODRiMWQwYmY2OWI5MDEyNWU4OWMyNTVmZjdhNWMyYiBsZWdhY3ktdHJ1bmsKKzM4NDMzIGNkMDRmMmQxOGE2ZmNjZjkxODI0MGY4ODBiYTMwNThjODhjZjY5MGEgbGVnYWN5LXRydW5rCiszODQzNCBjODc4YmQwMWI4MWExNjM0N2Y2NmE2MGM2NDlkNzA5ZDQzYjE1MGVkIGxlZ2FjeS10cnVuaworMzg0MzUgOTNmMjY2NWVhZDVlMmRjZGVjMWEwNjlkYjdiMTU4NWNlZTNlNWI2YiByZWxlYXNlMjMtbWFpbnQKKzM4NDM2IDZhMjQ0MGQwNWY1MGMzMjcyZTY3M2Y4MjA3NjRmNWNkMmIxZTY3YWMgcmVsZWFzZTIzLW1haW50CiszODQzNyAzYzE0NGEzYzkxMWE3YmUxYmI0OWEzNDI4ZGZhYzFmMDNjMDY2YjczIHJlbGVhc2UyMy1tYWludAorMzg0MzggZTYxYWE4NjIxNWJjYTc5NzgzZmMxMjFlOTgyMTFiOWVjZDEzOGI0YyByZWxlYXNlMjMtbWFpbnQKKzM4NDM5IGJiN2YzNmFjOWYzYTg3ODg5NzFlNmUyZTYwZjgzZWRiZTk3M2IyNGEgcmVsZWFzZTI0LW1haW50CiszODQ0MCAyOWU2YmQ3MDhmZTc1ZDM2NDBmMmEzNjRlM2QxN2Q0Mjg5OWI0YmRlIGxlZ2FjeS10cnVuaworMzg0NDEgNDA0MGFhMjE2YjhhYjE2ZmMwOWNjNDhkMGY2YzMzYWRjN2E3ZDc5NCBsZWdhY3ktdHJ1bmsKKzM4NDQyIDdhMTI3N2ZhZDA0ZTkyNjU3ZmM5NzgzODQ5ZTIwYjNiNTYwMDA4OGEgbGVnYWN5LXRydW5rCiszODQ0MyBmNzc5NjZkYTZkZTVkYmMyYzgwMTdmYzc4N2JiODUzNjA3ZTlmNWUzIHJlbGVhc2UyMy1tYWludAorMzg0NDQgODkxYzMxZGFkYTRlYjkyNTExYmJmZjFmZWM3NzgwZTNmMzFlMjdiNyByZWxlYXNlMjMtbWFpbnQKKzM4NDQ1IDcwNWI3ZmI5MDA1NmNhZWZjNmI0ZGU2YTAyMjYxMThkYmNmMzA1OWYgcmVsZWFzZTIzLW1haW50CiszODQ0NiAzN2I2ZGQzODg1NmRkZTM4ODQyMTg5ZWEzYzVmOTAyZTk3ZjQ2M2E1IHJlbGVhc2UyMy1tYWludAorMzg0NDYgZDIyODUwOTQyNDE3MmY5NzdlZGFkNGY3ODYwYTljNzQ3Y2Q2NTVjOCByZWxlYXNlMjMtbWFpbnQKKzM4NDQ4IGZmM2NhNjU2YzI4MWRlYmZkMzYwZjM3ZDAyMDJmNTNkMTMxYzRjODggcmVsZWFzZTI0LW1haW50CiszODQ0OSA4OWI4Y2NmMTRjMGMwMTVlZTljNjc5NzM0NDZkNTg2MWI5YWQ4MGMzIGxlZ2FjeS10cnVuaworMzg0NTAgOWM2NmFiNTRjMWVjZmY5ZWJkZWU2MDE1NzNiNTMxZTczZjNmOWY5ZiBsZWdhY3ktdHJ1bmsKKzM4NDUxIGU2N2I1ODdmZWQ3NzljMjExMzM4ZjE4NTlmMmUwMzk4MjFmMmM5YWYgbGVnYWN5LXRydW5rCiszODQ1MiAzYzE3MmM4MjZlZWQzNjRkM2M5ZjJjOTgyNDg3YWE0ZDBjOTE2ZjdlIGxlZ2FjeS10cnVuaworMzg0NTMgMTkzMjdkYjc1ZDFjOTJlMzZjMzYxYmQxMTkyYjFlZjU0NTc1OTlhZiByZWxlYXNlMjQtbWFpbnQKKzM4NDU0IDM2OWU4ZTcxZWEzMzkxNjc4YWFkYzA4NGUyNjg4YTE0NGZkYmNkZjYgbGVnYWN5LXRydW5rCiszODQ1NSA0NTQ1YTE1NGZhYzE1ODNiZTQxYmM3OTg4ODJiYzBlMmJiNjExMmY0IGxlZ2FjeS10cnVuaworMzg0NTYgM2ZkZmJjYjQwMTMwY2UzYTU0M2Q1ZTk3Y2MwOWU0NjA3MDFhNDlhMCBsZWdhY3ktdHJ1bmsKKzM4NDU3IDc3ZmEzMGU3ZjEyYjA2ZDM2YzY4ZTBlYzM1MDg4NTdjNjYzMzk5N2MgcmVsZWFzZTI0LW1haW50CiszODQ1OCA2MDdjNDhiNWVmZDcyNjE1NTBhYmQyMTlmOTFlYTliNmI3MjBmNGY0IGxlZ2FjeS10cnVuaworMzg0NTkgNWMyNjA4NTA0OTY3YTJhMTc4NGMzYzZkMTQzM2ViY2M4ZGQzNTQwMyBsZWdhY3ktdHJ1bmsKKzM4NDYwIGNhN2MxOGVmOGJkYzEwMmNiNjQ4NDUyNThjMTYzMGYwZmJmNzI2YjUgbGVnYWN5LXRydW5rCiszODQ2MSBjYjQ3ZDYyMmFhMWUyZmMxMTlmY2FkY2I0OWRiMzE5MmVhMjNhYzhkIHJlbGVhc2UyNC1tYWludAorMzg0NjIgMGE2ZTc3OWQzNDdkNmYxNzVlMjlkY2NjMDdjYzYxMDcxZmQwYzk4NSBsZWdhY3ktdHJ1bmsKKzM4NDYzIDg2YWIzYTc1ZmYwODZiOTZlNGQ3ZmFiMWNjYTI2YzYxNTBhNGJjNzQgcmVsZWFzZTI0LW1haW50CiszODQ2NCBiOTRmMjI0NzM4OGU5MmJkMGU5YTE3MzdlZTAwMGNhZmM0N2UxMzM1IGxlZ2FjeS10cnVuaworMzg0NjUgOWYxODNhMjU4YmVkMGVlOWY2MmIzYTQwNTNmMjYwODJiNzc0NDZkOCBsZWdhY3ktdHJ1bmsKKzM4NDY2IDdlN2U4NmY0NTI1NWE5NTk0ODIwZmFkZTZiZjc5ZGQ0ZmVkNGY3OTcgcmVsZWFzZTI0LW1haW50CiszODQ2NyBlOWVjMmNlMzQwZmRjNDQyMGQzNjFmNTM4MmViYmZjMTUxMDkzYmQ3IGxlZ2FjeS10cnVuaworMzg0NjggNzBjYjBjM2ZlNGE3NDc1ZTJmOWU5NzI0ZTRjYjM0OWFmZWNkZGEwZCBsZWdhY3ktdHJ1bmsKKzM4NDY5IGE4OTlkNjkwZjI2NDA3NGZlYjVhMGJlM2U0ZWYyMGU3ZDJiZGE1MDAgbGVnYWN5LXRydW5rCiszODQ3MCBmZjNkZWY3N2IxMjk1ZjMzMjY5OGM2YTIzODFhMGJiMTlhZmNjNjExIGxlZ2FjeS10cnVuaworMzg0NzEgMWFlMmMzYjY2ZTU3YTM0NjM3ZjllNDgzYWViNzQxMjZiNmY3MmEwMyBsZWdhY3ktdHJ1bmsKKzM4NDcyIGZhNTJmMWZmYzE2MTE1NTc1MDY5MzEwODk1YzBkMjVkZjljODZjNmYgbGVnYWN5LXRydW5rCiszODQ3MyAzNzZhNzFmODk3OWJhMWQ1NjNjOGQ5YWM4NTYxYmZhMDMyMTZiN2U0IGxlZ2FjeS10cnVuaworMzg0NzQgMzJiODk2MDZmMGNkYTE3YWU2NGVjY2E2NDVlMWUzYjE0N2Y3NjRmZSByZWxlYXNlMjQtbWFpbnQKKzM4NDc1IDdmN2MzZGZiYTk4NTYyMGM2YzQ5MDAxNzdlMTI5ZDQ3MmFlMzkwMDggcmVsZWFzZTI0LW1haW50CiszODQ3NiAxYTk4OTgzZTU5NjMwZGNjMGFlZTgwMzkwY2NjMzE2OTRlMWFjOWYyIGxlZ2FjeS10cnVuaworMzg0NzcgN2ZiYTVjY2M5NjFlMTRhZDhmMTNiMzBlYWU3NTY5MjUyYmNmNDZiMCBsZWdhY3ktdHJ1bmsKKzM4NDc4IDY3OTM3YTM4NTJmZTQ0ODJlZDM2YzljZWMwODljMmY4NzNkOWNkYzAgcmVsZWFzZTI0LW1haW50CiszODQ3OSA1ZTdhZGVkMzI1MWVkMmJlZDlhZjVkZjNlZmUzNTY0M2IzMTI2NjM5IGxlZ2FjeS10cnVuaworMzg0ODAgZDgwNGE1MGEyMGFiNTI3OWU3MDhlY2MyOGYyMmU2MjBiMDg2MDk1NyBsZWdhY3ktdHJ1bmsKKzM4NDgxIDgwOThjN2MyNzA5NzFlMmQyYTMyMGI1YmI2OTkwZTlmMDVmZjk4MGMgcmVsZWFzZTI0LW1haW50CiszODQ4MiAyNGEzMzM3NDFjZWM5OWEwOWM5ZThlNjc0NTcyYzY4MGU1MWI4YzU2IHJlbGVhc2UyNC1tYWludAorMzg0ODMgN2RhZTFhODFjZWQ4MzgwNWYyODY4ZGZiNjQ3ZmZmZDFkZTMxOGYwZiBsZWdhY3ktdHJ1bmsKKzM4NDg0IDc3NzAzZWQ1NDNhMTBmMmQxYWFhMmNiODgzODk1YmNiMDMxZWNhZGUgbGVnYWN5LXRydW5rCiszODQ4NSBkNDM5Yzc0OGI0NTQ1MWNkYjQ3NjI3MzhhZDkwYWRmNzlhMjdiZDNjIHJlbGVhc2UyNC1tYWludAorMzg0ODYgOGI0ZGQyYzFjMmEwNjNmMDNiNzAwYTc0ODhlNGY5N2ZkMDc5ZmU5MCBsZWdhY3ktdHJ1bmsKKzM4NDg3IDRiMTIwN2NiMDFlYTY2ZmNjNzI0ZmI2NTdjZTZjZjViMDMzNmI2ZDQgbGVnYWN5LXRydW5rCiszODQ4OCA4MTMwMzBlNGQ3YjBhMWRhY2RlNDIxYTQ2MzllNmIyZGQ4Y2RmNmI1IHJlbGVhc2UyNC1tYWludAorMzg0ODkgYzYwZmRlOGIwMTA2YjA5ODkyYzU0NDI0ZGI2ZWFmZmMzN2ExYjdkOSBsZWdhY3ktdHJ1bmsKKzM4NDkwIDdjNTczMjY1MmEyM2NiZDcxZTliZjZkY2E4YjVjZTU3MzAwOWQzZWEgbGVnYWN5LXRydW5rCiszODQ5MSA2MThjZjI0YzMyOWY5OWZkNWIwMTdiYjNiMDdjYTMxYWJiM2M5YTg3IGxlZ2FjeS10cnVuaworMzg0OTIgMDdjZjFhMTY0MGRhNDEyMzQ5ZGY0NzA3N2M4YjEyNTNiYzIzMTNlOSBsZWdhY3ktdHJ1bmsKKzM4NDkzIGE0ZDEzOTc0ZjZlYjdjNGRmOTAxMDQxMDIwMjViNGUzYjQwZGJlYTcgbGVnYWN5LXRydW5rCiszODQ5NCBhYzZkZmM2N2M3N2ZmNmQxZDhhY2E2MWMxMzlmNmFiYzZmMThkOTQwIGxlZ2FjeS10cnVuaworMzg0OTUgYTM2YzVmZDMwZTIxMjdhZTEyZGQ1MzlmNjY5NDc4N2U5M2ExZjBlMSByZWxlYXNlMjQtbWFpbnQKKzM4NDk2IDlmMDIyNzZkNTRjYjRlYzMyZWMzOWE1MjgyMTRiOTk5NWYyMzYwYzYgbGVnYWN5LXRydW5rCiszODQ5NyAwMzg2Y2MxZWU5NjRlNGQ0ODc4NDI3ZWUzYWFmYzc4N2NmMmUxZTA1IGFzdC1icmFuY2gKKzM4NDk4IGUwZjRlYjY0ZDAwMzkxZTNjNDZiNWYyODkwNThiMjlmZjJmY2FjZWMgYXN0LWJyYW5jaAorMzg0OTkgMjY3NmUwNWMwMWYyMWFhODVjZTFjYmU1YzdkNWViN2VkZDA4ODVkNiByZWxlYXNlMjQtbWFpbnQKKzM4NTAwIGM5OWFlODYzNWYzYjU0ZGI4ODM5MDRkM2FiY2Q3MzBmMTI4YjhiZjYgbGVnYWN5LXRydW5rCiszODUwMSAwZGQxNDZmZWQ5ZGRhM2NlM2ZiOWFjZjk1MWVkODMxMjE2NTEzNTk4IGxlZ2FjeS10cnVuaworMzg1MDIgNTU2ZjZmMTA1NmE4ZjZkNWQwM2EyOGViZmY0YmMzM2Y5NzQ1M2U3YiBsZWdhY3ktdHJ1bmsKKzM4NTAzIDFlZGVhNGMyYjAxMWI1M2FmYmJiNTNjOTNjNDAyMDI5YjMyOWNjNDcgbGVnYWN5LXRydW5rCiszODUwNCA1MTZiYjhmZDc1YjRiZDU3OTgxYWNmMWE3N2ZjY2UzMzE3OGJiMGZkIGxlZ2FjeS10cnVuaworMzg1MDUgNzZjOWFiODVmNWE4ODc0NTI0NjdmYjIxNTMyZTRjZDExZmYyZmEzMyBsZWdhY3ktdHJ1bmsKKzM4NTA2IDVmZGUxN2IzNTQ3MjU0YmFiYTY0OTk5ZDIxMDE5ZTY0Mjk5Y2U1ZTEgbGVnYWN5LXRydW5rCiszODUwNyBjNWE0OThjMTA3MjM1OThiOWI0ZjE5NzRjNmFlZmNlOWExNmU1OWQ5IGxlZ2FjeS10cnVuaworMzg1MDggZmNhY2Y5ZDRiOGYwZmFlYjc1NjJmOTZjZTg2OGIxODE1ODRmNTczYyBsZWdhY3ktdHJ1bmsKKzM4NTA5IGQyNTk5ODQ5NjIwNjVmZTU4Yjg3NmY0NTU4MjBlZGRkMGMwNDYzNWMgbGVnYWN5LXRydW5rCiszODUxMCAzZTdhMjBjMjk3YTYwZTZlN2RkZTUwMWJhZmM5ZjllNDJlM2RiNzJhIHJlbGVhc2UyNC1tYWludAorMzg1MTEgMDgwZDhjZmVkOWQ0YTdhNTRkNWNjYmVlYzdlMGFjNTYwMmIyYmUxYyBsZWdhY3ktdHJ1bmsKKzM4NTEyIDY2MDQxOWJkYjRhZWY5YmI1ZGUyODVjNzY1YWU2ZGVlMTQyZjBjOTcgbGVnYWN5LXRydW5rCiszODUxMyA0MTZiNTM0ZTljYzk2OGVmZmViY2FmMTc1NWJlOWUzY2ZlMzgyZjVkIGxlZ2FjeS10cnVuaworMzg1MTQgNzdiNTcwODdmZTQ1ZGIyNDcxNzhmMGUyMzVlNDI2ZjdlNGQyOGY5MSBsZWdhY3ktdHJ1bmsKKzM4NTE1IDQzMjlhMWEwMDQ2OWQxNjNjYTU4NGI3ZTA4MDMxMTdiM2UyMGRmNTkgYXN0LWJyYW5jaAorMzg1MTYgODljZjI1ZTM2NzlhZTk5YTQ5MDJiYWMwNTAxNWJlYjg2Mjc3N2I3MCBhc3QtYnJhbmNoCiszODUxNyBkMWIzNWFmMjkyNjMwYjYwOTdjZjZiM2JhMjAzMDVkYzFlZGRlYmMwIGxlZ2FjeS10cnVuaworMzg1MTggYTJiN2NiNzNkOWIxZDcwZWJiNDgzNTNkNjRjY2VjYzgyMzU3ZDk1NCByZWxlYXNlMjQtbWFpbnQKKzM4NTE5IDVmMjYyOTg4MTFiNzE0MmE2ZjczMDg2NzhkNmQ3MmJmZjg2YzE0NTUgbGVnYWN5LXRydW5rCiszODUyMCAzZDBiYjNiMDVkMzlmMGJkMTRkOWY4YzY5ZTE3NzUxODQxZDQ3NGJmIGxlZ2FjeS10cnVuaworMzg1MjEgMTE3NmYxYmI0ZTFhZWEyZmY1MTgyNzIwYzQ2YWJiZjYwYzFmMWFjMSBsZWdhY3ktdHJ1bmsKKzM4NTIyIDRhMGMyMDJlZTc4OWEzNzNmNjQ3ZGQwMDkzNDg2NGVlMjk3OWIyNzcgbGVnYWN5LXRydW5rCiszODUyMyBkM2NlN2E5NDYxNmU5MTdjZmVkYmUwMDM2YjRmMTBmYjFjYjgwNmY5IGxlZ2FjeS10cnVuaworMzg1MjQgNjM2ZDZkNDMzYjYyNjM3YWVkNGVmYjE4YjMwNzFiZDQzMTJkNzYyNCBsZWdhY3ktdHJ1bmsKKzM4NTI1IGZkNmQzNTljYTI2NjIyMWI3YWVmOWE2MzI2NmRmNWFlZWYyMjM3MmUgbGVnYWN5LXRydW5rCiszODUyNiBiNWEyNWM1NmE4NTIzZDdmOTQ4YWIwNjY5M2Y5NmM5MTBjODVhMTY5IHJlbGVhc2UyNC1tYWludAorMzg1MjcgNjA1MGFlODQyYzhmMWM4OGI5YWFhMjM1NjI1ZWM0ZDgzZDlkNWJjNSBsZWdhY3ktdHJ1bmsKKzM4NTI4IGM1MDVjYmIyNmNlZGNkMDUwZjQ2ZDBiN2U1MWI1YjQwZmJjNDU5NTEgcmVsZWFzZTI0LW1haW50CiszODUyOSBmYTNjZGQ0ZjljZDAxN2E3ZWVkOTdlMTU3ZjI0YzhkN2U2NzlhOThlIGxlZ2FjeS10cnVuaworMzg1MzAgYjQzMTVlNjdlZGY1MTBiOTJmNmJiMjNlOTk1NGEyMzZhNGMzYzY0OCBsZWdhY3ktdHJ1bmsKKzM4NTMxIGE5ZjE2MWUzNmJmOTA0MWVlMGRhODY5ZTE5ZjVhOGU1NDViMWU1NDkgbGVnYWN5LXRydW5rCiszODUzMiBkNDhmYTBhZmRjYmFmZDUwZTE0MzM5MjFiNTdkYzgyOWVjNmVkNDQzIGxlZ2FjeS10cnVuaworMzg1MzMgMTNhOTUwYTM2MjRiY2FhMmI0ZDIwYjBkNGQ0ZDlmNTk2NmYyZDNmZiBsZWdhY3ktdHJ1bmsKKzM4NTM0IDExZmNkYmIyNzlkZTkyYWVmYWQ4OTNmNmQ2MjE3MTJmOTg3YmI3YmMgbGVnYWN5LXRydW5rCiszODUzNSBkOTkyN2E2NWY1ZjkyZTI3NmQ5MjI4NmU2YzQzZDkzMWMxMTE2ZGQ4IHJlbGVhc2UyNC1tYWludAorMzg1MzYgY2FjMzFiNGI1ZTc4ZDRkMjU3ODlkYTM1MDUzODFlMGRhZGY4M2Y0OCBsZWdhY3ktdHJ1bmsKKzM4NTM3IDg2MWJlOWNkMDRkN2VjZDQ4ZmMzZWM0MGNmN2U0Y2VhZTg0NjUwOTAgcmVsZWFzZTI0LW1haW50CiszODUzOCA0YWFmYjFjOWE3MGQ5MDBlODcxZWVlMzEzNDA3NzU3MWIxNWNmODdhIGxlZ2FjeS10cnVuaworMzg1MzkgZTQ4YjVhNjFkODBiZDZlYmQ1NWZhOGQxZmZiZmI5N2I2MmJjMmUxZiByZWxlYXNlMjQtbWFpbnQKKzM4NTQwIGE2ZDIzMTUxMDlhNGYyYWM5YWJmNmRiODQ1MTdiY2E5MzIyNTc5MGUgbGVnYWN5LXRydW5rCiszODU0MSAyZmQ5Yjg1YmE2NWZkZWZjZDVmMmZmMGQ4ZDBjZmQ1MWNmNGVhYzE4IHJlbGVhc2UyNC1tYWludAorMzg1NDIgZTY0MjI1MjVjMjQwMzE4OTVjZDQ5MTFhNzk5MGVhOThlZDBiNDBiYiBsZWdhY3ktdHJ1bmsKKzM4NTQzIDc1NTY0NTMwZjUwYzFlZmI0MDVkZmI5Mjc2NjhjZmFlNjc5MmZlMDIgcmVsZWFzZTI0LW1haW50CiszODU0NCA5MThiYzZkNTZkMjZmNjYxMjVmZjU0ZjY5MjRhNTFjYzcxNzljM2Y2IGxlZ2FjeS10cnVuaworMzg1NDUgOWZhNzY4YTk4YzVjYTM2MWI4MDhjMjYyY2JhNmYwZTg3MjFmYzkxOCBsZWdhY3ktdHJ1bmsKKzM4NTQ2IGI0MDU4NjEyOWJiMDg3MmI1ZTBjMDRiYzExNzQ1ZTI3OTAwNmVlNjkgbGVnYWN5LXRydW5rCiszODU0NyA5ZDYwODQxOWNkZjhkNTM2Y2VlOTQ1NWQyMWFmM2EzZWU5NDllNTRhIGxlZ2FjeS10cnVuaworMzg1NDggMzc4NTYxMGZmNzYzMDFmNGRmOTliNjFkY2VlZjg2MTZhOGYwYmVlYiBsZWdhY3ktdHJ1bmsKKzM4NTQ5IDQ2MzAwYjFhYTJmNjgyNWZkZmM0MTJkMzcwOTg3YTY2M2VjOGExZjggcmVsZWFzZTI0LW1haW50CiszODU1MCA0ODEyZjZhN2Y3MzU1NjgzYjIyYjYyYWM3M2FiMGNhNWM4MTcxOGVjIGxlZ2FjeS10cnVuaworMzg1NTEgOGMzNTYzZDA4YzYyM2RlYThjYmZjNzljMjk1OGE3ODJmYjk4Njc5YyBsZWdhY3ktdHJ1bmsKKzM4NTUyIDliM2EyYzQzMDJhYWMwNmUwOWU5YWU4NTZmYTQyZTMyMWZlNzFhZTAgcmVsZWFzZTI0LW1haW50CiszODU1MyAwZDQxMDhkM2EzYThiNzdkZmY1OGUxMzUxYjBiMTZjMzRmZDU3MGUwIHJlbGVhc2UyNC1tYWludAorMzg1NTQgNGM2NmMxN2M0YjI4MDliMzQ0ZTVjN2Y0ZWQyOTQ3MDQxNmQ1ODQ1OCBsZWdhY3ktdHJ1bmsKKzM4NTU1IGRiN2E4MzEwYjE5YTk0ZDYxN2E5NWFmMGZlNDc1MTkxNDZmZmFkYjMgbGVnYWN5LXRydW5rCiszODU1NiAwODViYzI3ZjkyYjc1MTlhZjMzNmE4M2Q2MzQzMzFmNjgwODZmZDMzIGxlZ2FjeS10cnVuaworMzg1NTcgMDBlNDdlYjEzNmIyYzA5NTE1MWJjYjI1NzRkMzcxMTFmMzBlZmZmZSBsZWdhY3ktdHJ1bmsKKzM4NTU4IDdhMWE4ZWM2ZGM1MzQ0YzBkMDIzYjAzODdhNjdhMmQ5ZTZmYjhmMzQgcmVsZWFzZTI0LW1haW50CiszODU1OSA4ZjA0NTY0MjU3MTU4MTUxMDFkOTAxNDY1MDIwOGM2YjQyMjIxNTVhIGxlZ2FjeS10cnVuaworMzg1NjAgNGFiZjIxYmUxN2QzNTQxOTVjMDlhMzczMzA5MTNlYTdhMzcwNzFkZiByZWxlYXNlMjQtbWFpbnQKKzM4NTYxIGU5ZmZhZDZkODgyMjhlYzgzZGQ3OWVlNGQwZDllMTM5MzIxZGIyYzIgbGVnYWN5LXRydW5rCiszODU2MiA1MWFmYjZlNzc0NzQwOGU2ZmU5NzBlMDc3ZjFhYjFlZDc3YjhiMjIxIGxlZ2FjeS10cnVuaworMzg1NjMgODE5ODI1ODRjNjFiYzU2MjQ2ZjU5ZTZiNjI1Zjc2YWE5MTU1YThjOSByZWxlYXNlMjQtbWFpbnQKKzM4NTY0IDQ4MTM5NzY4M2VhY2VmMGU5YjNhODFhODUwZGZmNDk2MzA4ZjJkZGIgbGVnYWN5LXRydW5rCiszODU2NSBlZDZlYzAwMGExMzg4OTdlNWMxN2U2NWI3YzU4NTQzY2Q0Nzg4NWUyIHJlbGVhc2UyNC1tYWludAorMzg1NjYgOTAzMDQ1YTcwYzNlYjYwNDViZDhmMGFlYmNjNmZjMGM1ZTI4NmEzZiByZWxlYXNlMjQtbWFpbnQKKzM4NTY3IDBjNDA4MDNlNWU0ZDQwOGUyYzdmMTcyZmJhMWM2MmZjZTllOGZjMDggbGVnYWN5LXRydW5rCiszODU2OCBmODdhOGQwZGYxMjUyYmI5MTU0OGUxZDRiYjFlYzBiZDY5YmMzNjk2IHJlbGVhc2UyNC1tYWludAorMzg1NjkgNDlkN2JiMmU5NmQyZjVjYmNjZWExZTc0MzI3MzBlOTQzZTMwZWU3ZiBsZWdhY3ktdHJ1bmsKKzM4NTcwIGFlMDYxZmM2MzE4ZGNlMDcyOWYzZDk1ZjQyNzM1Mzc5ZWMxODQyZTEgbGVnYWN5LXRydW5rCiszODU3MSBlYWMwMWNiY2FhZGE5YmJkN2JmZDU1MDNjMmMwNTQxNjlkMzQwZWFlIHJlbGVhc2UyNC1tYWludAorMzg1NzIgMWFjMjRlOTE4M2U1MTc3ZDYwODJhNzZjZTVmM2ZhODI3ZjBiOWJhYSBsZWdhY3ktdHJ1bmsKKzM4NTczIDRlYTlkZTAxZDMxMTU2ZGE3Mjc3ZjJhYTc4ZjZmOTEwOTFjYzU2ZTEgcmVsZWFzZTI0LW1haW50CiszODU3NCBjMmI1OTFkN2YyOWVmZGY5ZjNiY2U1NjBmMWNmMTRlNmY4YjQyZDJmIHJlbGVhc2UyNC1tYWludAorMzg1NzUgMDcyNWYwZDVhNWM3NTg4YWYwOTU1MGQ0ZDcwNWUzNDg4Mjk4ODE2ZCBsZWdhY3ktdHJ1bmsKKzM4NTc2IDgxN2UyMjUwNmZhOGY5Yzk2Y2U1Y2U5YjhjOTNlZTUwM2JlZDA3ZWUgbGVnYWN5LXRydW5rCiszODU3NyA2MDRmZjk4OTE1ZWM4MTg1NDZiMmRhY2ViZjAxZjI2MzA2ZDIzNDIxIGxlZ2FjeS10cnVuaworMzg1NzggOWYwNzhkNzY2ODA0NDQ3NzQyNDcyNTY0NGE5YzFjY2FiZjJmYzJhNSBsZWdhY3ktdHJ1bmsKKzM4NTc5IGMwNTE3OGY0MWRiMzkwNzg1YjMyNzEzZDkzNjY2YWM3NWMwYjk0NzkgbGVnYWN5LXRydW5rCiszODU4MCBhMGQzZjc3MzU0M2RiMjgxYTc2NDY0ODdlOTFjZDMyN2Y4NWU0NzE5IGxlZ2FjeS10cnVuaworMzg1ODEgNzkzMDJlNTA5MTBlZWNlMjBmMjE0MDY1MGI0MjJmM2U2OWM4YWEwYiBsZWdhY3ktdHJ1bmsKKzM4NTgyIGE5MWE0OGM5ZGUwMGM5YWJhOWYyYTY2YWViYmQ4MzI1ODYwYzJhMTEgcmVsZWFzZTI0LW1haW50CiszODU4MyA0MWE5Y2E4NjYwMzgyMDM2NDRiYWZhYTY0MjA4YTExOTE1MTYzNmY5IHJlbGVhc2UyNC1tYWludAorMzg1ODQgODQ4NTliNGE2MmM2ZWNkZTU2NjUxODAxY2Y1NDI2NTk4OWRkMzYxNCBsZWdhY3ktdHJ1bmsKKzM4NTg1IDVkMGQ3NmQ3YjMxZmQ4ODJlMWIxZTI3ZTAyYmRhODRkYWEwZTgwNjAgcmVsZWFzZTI0LW1haW50CiszODU4NiAxMzA5ZjY5YjRkYmJkZThiN2M1NzA2NTEzMTlkNDdhNTQ2ODllYjllIGxlZ2FjeS10cnVuaworMzg1ODcgN2RlNzZmMzRiM2RhMmYwOTY4NWExZjRmOTFkZDhlNTdlMmI3M2FiNSBsZWdhY3ktdHJ1bmsKKzM4NTg4IGY0ZGE0NmI5NDU3MDg5MjIzNWIxMDYzZWY4OWUzYjg0YzkyMTMyZjQgYXN0LWJyYW5jaAorMzg1ODkgOTViNjZkOWRiMmVlNjU5YTBjMmEyOTlkM2M0MTRhNTYyZTk2MDBjYSBhc3QtYnJhbmNoCiszODU5MCAzMDk4ZWZlNDJhMGYyMDg2YzQ0MDU4NDc5NDM5ZTU0MDY4NmI1ZjA4IGxlZ2FjeS10cnVuaworMzg1OTEgN2QyYzhkYWE0MDNiNjE5Y2ZmNzBjOGY1NzBjNjhjMzkwNTAxZTBmNSBsZWdhY3ktdHJ1bmsKKzM4NTkyIGQ2ODdhOGEwOWE3MmQ3NGQ2NDhkNGI4OTBjZTY3YmFhN2ExNjE1ODcgbGVnYWN5LXRydW5rCiszODU5MyAwZDQ0ZDkwNzFlOTdmYmMxMDYzOWNhNjQ1ZjRmMzM3YjFlMWVjYTk5IHJlbGVhc2UyNC1tYWludAorMzg1OTQgZjFmYTdiYjJiZjk5OTBmNDBjYTA5YmFiZGU3MzQ4YTNiMDk0MTY4MSByZWxlYXNlMjQtbWFpbnQKKzM4NTk1IDY5N2I5ZWVjNTVkYTgyYzRkN2EwYjNkNmQ5NjU1NjZhYmUyZDlhNDMgbGVnYWN5LXRydW5rCiszODU5NiBkNTQ0OWYxZjg0MGVjZDRlMjY1MmRkMjYyNGU4OWIzNGY4ZDUwYmUxIHJlbGVhc2UyNC1tYWludAorMzg1OTcgZjI5MDEyMTgxY2YwMTdiOGZiYTVmYjhlNzlhYTJhMjVmMjQ3MzAyZiBsZWdhY3ktdHJ1bmsKKzM4NTk4IGU1ZDE5MDMxYTI5NWQ3N2JkODYwMGE0NTI5ZWZhODU2YzQzZjk1MzYgcmVsZWFzZTI0LW1haW50CiszODU5OSA2YjY4NzVlZGY2MDdlMzJiNTg4Y2ZlZGVkZTA4MWNmYmUyY2UwNDg4IHJlbGVhc2UyNC1tYWludAorMzg2MDAgODQ3MTNkNGIxOWFmMTM2ZTRhNGEzZjU2YzA1ZjgwNzUyZTY4YjVlMCBsZWdhY3ktdHJ1bmsKKzM4NjAxIDQ0ZjE0OGJmYzZiODgxNzVhYjY3MDQzZTY2ZWZjZTlmY2Y1ZjJiOTAgcmVsZWFzZTI0LW1haW50CiszODYwMiBkZGMyMjc2YzI0N2U2ODZmOGYxYTA4NDgxYmVjZmE2ZmFiZjNjYzBhIGxlZ2FjeS10cnVuaworMzg2MDMgNTE2ZjE1NTIxNTk4NGRiM2I2YTQ5NGM0ODdlYzEzYjUxZDE1ZDYyNSBsZWdhY3ktdHJ1bmsKKzM4NjA0IGI1NDMzZDNjNmRjODg0NzZmMjI4MDlmYmFjNDhkNDMxNTVjOTM1ZTEgcmVsZWFzZTI0LW1haW50CiszODYwNSAyMWU2NTc3ZmYwNzRlMTE2ZGY2YTczMjMyZThkYTliNjNiZGU2MTgxIGxlZ2FjeS10cnVuaworMzg2MDYgYjEyMmZkOTNhNWI1MTZlMDE5MGRmYjM2MmU3ZDAwNTkzMzBkMGU5NyByZWxlYXNlMjQtbWFpbnQKKzM4NjA3IDE2Y2VmMDlhODM0MmRhY2NhZmNiODU4MTlhMmRiZmUxNzE0MTQ5M2IgcmVsZWFzZTI0LW1haW50CiszODYwOCA5OTA2ZTRkYTA4NmZkY2NmNDRjN2VmZTUzOTU2NDUzYTNkMmMzYzY3IGxlZ2FjeS10cnVuaworMzg2MDkgNTJiNjUxYTk3NTBkNWRiMzRjYTAyMWVhNGMzYWU3YzY0NjE1NjkwOSByZWxlYXNlMjQtbWFpbnQKKzM4NjEwIDQzMDM1NjgzOWQyODU5MWU2MjJmYTgyNmZlMzZkODYwYWI4Mzc4ZWMgbGVnYWN5LXRydW5rCiszODYxMSAyYzczMzY3ZjU0ZWVlYzg5NjI2MzVhMGQxNjY0MDA0ZjMxODAxYmUxIGxlZ2FjeS10cnVuaworMzg2MTIgMDM0OTI1N2UxZWQ1MmUxZjc5MmY4NjA1NzJhOTE4YmY3NjM2ODcwNSByZWxlYXNlMjQtbWFpbnQKKzM4NjEzIGIxNDI3Y2ZmMmY4MzIxMWI3MGFjYTMyYzE0OThhNTNjODk0NWYzYzggcmVsZWFzZTI0LW1haW50CiszODYxNCBjZmFlNGIxMjA2ZjhhYzlkNTBiMGI0Zjc2MmU2NzU0MTIzMGRhNTQzIHJlbGVhc2UyNC1tYWludAorMzg2MTQgMTE5NWY5YmEzNDM5MDk3Y2M1YjVhMzY3ZTNhZTFiNDNmMTU3YjI2NCByZWxlYXNlMjQtbWFpbnQKKzM4NjE2IDBiZTA1ZWJhMTE2ZDgxODRkODZlYTFjMzI5ODgzMzFlNjRiZWJhMjQgbGVnYWN5LXRydW5rCiszODYxNyBlYTAyNGE0YjI5YjZkMTExMmY2YjkxN2ZkZmRmMjVkZmM1ODAzNjlkIHJlbGVhc2UyNC1tYWludAorMzg2MTggMWFmZWZjZjE0ZjA2MzhjM2E1NTkzNjkxM2RkMWU2OTZkZjQ2NGRiNSBsZWdhY3ktdHJ1bmsKKzM4NjE5IGU4MzMwOWQ0M2E4MmU5OWE3NTAxYjQ5ODdiMjYwMzIwN2M0OTAzMzEgbGVnYWN5LXRydW5rCiszODYyMCBkMzU1ZGExZDdjOGZkMTliYjIwN2RiMmNhYTNjNzgwNjJmNzQ4MjkwIGxlZ2FjeS10cnVuaworMzg2MjEgNjVlOGFhY2IwZTk0YjE2MjM5Y2VkODJiNDIxMTMwMzZjMzk4YmZlZiBsZWdhY3ktdHJ1bmsKKzM4NjIyIDgxYjVhMTNmYTM4YTI0OTAyNzNkYTY2MTFjMGMwZGVkYmVlOGI1YjEgbGVnYWN5LXRydW5rCiszODYyMyA4ZDhiYTY2NzgwZWQ3Nzg1MDJjZTM4YjY2NzRhZWUzZmIxMDQ3YWExIHJlbGVhc2UyNC1tYWludAorMzg2MjQgNDUzZDg5ZWFiNzM5MzZmYjkxNWY5ODk1NzljNGFiMmIyYzNmMmFmNyBsZWdhY3ktdHJ1bmsKKzM4NjI1IDBjODJhN2VmOTU1NGRhZDlmYWM4NzkyODhlMGE3N2U3MjU5ZTYzZjIgcmVsZWFzZTI0LW1haW50CiszODYyNiAzYmI3NTk0OTg3NjdkNjkwZmU2ZjJjMjljYmJkY2MyMzgyNWUxNTM4IGxlZ2FjeS10cnVuaworMzg2MjcgZmRmMmY4ZmFkOGQ0NTczNjM4NmNhMzg1NjljMDA3YzgyYmE5NjMwNiByZWxlYXNlMjQtbWFpbnQKKzM4NjI4IDZmOWIzNmZjMTExYzlhZmRhZDQyZjk4NWMzMTM4ZmMyZjgyZmE5ODIgcmVsZWFzZTI0LW1haW50CiszODYyOSBiOGQ5MDVjYTllOTk5OTY2ZDY3N2FlNjQ1NDc2NGFmYmEzYTYwNjI1IGxlZ2FjeS10cnVuaworMzg2MzAgM2Q5N2ViM2I3Y2VjYWZmNDZmZGVlMjY5MDA1ZjY3ZWRhNDhjOGU2MyBsZWdhY3ktdHJ1bmsKKzM4NjMxIDcyYjllYjc0MjI2MzA3YmYyYWJiNmMwMzlkMmI2OWEyZGE2ZDAwMjQgbGVnYWN5LXRydW5rCiszODYzMiAzZmEzNDc1OTU0ODcyMGI2Zjk2MjZmYzNhOTc5ZTBhNTQ3OTdlYTFiIGxlZ2FjeS10cnVuaworMzg2MzMgNTE4MGNmY2M4N2JmZTcyNjQwZTUyODZkMDNiMTNkY2Q2NzAxMjMwMSByZWxlYXNlMjQtbWFpbnQKKzM4NjM0IGRmYTA5N2NjYmM0OWRhNDUzNzA2MTE1ZWI3YTkzZDQzMjYyMmRiODEgcmVsZWFzZTI0LW1haW50CiszODYzNSAyMThhNzYyNzU5MzJlZDY4ZDJhNjc5NzhmMjg4NDJmOWJmOTY3NjE0IGxlZ2FjeS10cnVuaworMzg2MzYgNjc5YzE2MTE1NjEzMWM5ZDQ1NzJhMDc2NzEwMTg0ZDc0NTc0ZTgyZCBsZWdhY3ktdHJ1bmsKKzM4NjM3IDk2MjgwMGVlMzBlZjVmNDJhMzI1ZWE2MmJlNjAzY2M0ZjUwZDUzMWYgcmVsZWFzZTI0LW1haW50CiszODYzOCAwNGJhYTY0NGZmMDAzMzkxZGViZmRjMmE2N2EwMjdkYmE0Mjk1YWUxIGxlZ2FjeS10cnVuaworMzg2MzkgMTFiNDM1MGI1ODc5MmRhOWY3ODE3NjU2MGM1M2MzNmM5MDA2OTZiMCByZWxlYXNlMjQtbWFpbnQKKzM4NjQwIGU1Mjc4MzMxZDlhOTA1OGZhZGE3YTRiNGExMDZjMmMzZWNjNWQ4NzIgbGVnYWN5LXRydW5rCiszODY0MSA2ZjM3ZDExNjAyNjEwOTkyODM0N2E3MGI2ZGY3OTIwMDcxNTMwYmM4IHJlbGVhc2UyNC1tYWludAorMzg2NDIgN2Y3Y2JkYjJjNjExMzdkYWNjNGJiNmVmZjZjNDgxODExZTQyOWM3OSByZWxlYXNlMjQtbWFpbnQKKzM4NjQzIDVmODkzYTRjZGU2ZmQ4ZDZkZGU4YjMzODI4NzcxMzc3MzJhYjEzNTcgbGVnYWN5LXRydW5rCiszODY0NCA1MDUwOWVlOTYzNjRjN2U4NjJiNmMwMzdlYmZlNDI4ZTIzNWVhY2Y4IGxlZ2FjeS10cnVuaworMzg2NDUgMzEzZWQyODE3ZDY4MDllMzNkNDQ3YjljMDg4N2ExNThlNzNmNmYyYyBsZWdhY3ktdHJ1bmsKKzM4NjQ2IDRkYjVlYTk1NzdiYWJkYzdjYjg0YmQ5NGNjODc1ZjVlMDhkOWY1NmYgcmVsZWFzZTI0LW1haW50CiszODY0NyAwNzc0NTE2NmY1NzEzYmE1NmMxYjhhZTgxMmI5YWY0ZmJjNjM4ODhlIGxlZ2FjeS10cnVuaworMzg2NDggZmNiNTA3NDE0YzQxNDhmNDFiZWExZTliZDkwNjhhNmUwMmQ3N2YwMyByZWxlYXNlMjQtbWFpbnQKKzM4NjQ5IDIzY2EyNjMwNjU3YzQ4NTA5YzM1YjZiMzg0NWE2YjA0YjQwYjY3MjcgbGVnYWN5LXRydW5rCiszODY1MCA2YTY0OTgxNjEyNGE3Y2U0NWE1YTEzYzY5ODk3YWM0MTk1YzE0YTc1IHJlbGVhc2UyNC1tYWludAorMzg2NTEgYmMxNTkyOTZkMjUzNTY5NmQwNDA4NTFhZDM4YjhlNGMwMjlmNmVkZiBhc3QtYnJhbmNoCiszODY1MiA1MTFlN2E5M2ExZTlmMTA1ZTY0MjJjYWE5MzU1Mjg1YjY4NWYzYTg5IHJlbGVhc2UyNC1tYWludAorMzg2NTMgODRlYjVlMTg1NTQ3NjE2NmJmMjllYzdkMGZiOWZjOTgwMWZhZjdiMCByZWxlYXNlMjQtbWFpbnQKKzM4NjUzIDMzM2NmMzAzNTQzYjY4MGVjNWUzZmRmN2U4Yzk2NjFmOTQ4OGE1MGUgcmVsZWFzZTI0LW1haW50CiszODY1NSBiZWIxY2I3ODVlMWQ1NDA2Y2IwMzVmNTJkNTJiNGEzNGVjYzY3ZDgxIGxlZ2FjeS10cnVuaworMzg2NTYgN2Q3NDA0YTZhNWVhM2QyNDM3NzE2Y2VmMTljYjlhMTZiYzYyNDNmMiByZWxlYXNlMjQtbWFpbnQKKzM4NjU3IDcxOWViMTAyZWE0NDg4NGZmYjk5NjJjZWU0NWEwYjViNTAxOTk3ZjEgbGVnYWN5LXRydW5rCiszODY1OCBmYjM5ZjRlZWFlYTQ3NjI3NWMwMTg0YTcwNzA1ZDhjMGFkYzNkNzc4IGxlZ2FjeS10cnVuaworMzg2NTkgMmVlNTc1YjliNjBlNWQyYTk1MGFhZDNkNDRiNzhhYjZmZDViOTkxMiBsZWdhY3ktdHJ1bmsKKzM4NjYwIGZkZTVhMWM2YTQ5N2U1NDU2ZDZjZjc1NWYxMzkzNGE4MDFjOWFiNjMgbGVnYWN5LXRydW5rCiszODY2MSA5ZDgwZTYzMDA0Y2RjNmM1MTk3OGIyMmFiY2YwMjllYzM1ZDkxNmIyIHJlbGVhc2UyNC1tYWludAorMzg2NjIgYTMwNWZlZGNhMWJmZmY1MzRiNmI2NzY1OGRkODIyNDcyOTI2Y2UxMSByZWxlYXNlMjQtbWFpbnQKKzM4NjYzIDA0ZmExMzJjOTAyM2RlYzA0YWU4MWNjMzY5MDYwN2Q2NGRjZWRhNTEgcmVsZWFzZTI0LW1haW50CiszODY2NCAzMzZmZWE0MDZmY2YwNmI4OGYzZmZlYWI3MTUzZmM3NTFjMmUxNGJkIHJlbGVhc2UyNC1tYWludAorMzg2NjUgNGJjZTJlNTA5NjFlMWNiODBkZGZiOTJmOGE3MmQxYmU0MTRlZjYyYiBsZWdhY3ktdHJ1bmsKKzM4NjY2IDk5N2IyNTVlMWNjYzg4YmVmOTE4MGNhYjkwNDg3MzI3NzY5NzE1NDcgcmVsZWFzZTI0LW1haW50CiszODY2NyA3NjMwMGM1ZmJjZWM4ZjU4NzhmNWYyYjNiNzEyNmViYmFmY2EzNjA5IGxlZ2FjeS10cnVuaworMzg2NjggZmRlZTg3YjcwMzdhM2I2MDAzZWM4MmUyMGQwYmJhMmUxY2VlOGVkZSBsZWdhY3ktdHJ1bmsKKzM4NjY5IDBhNmE0Y2NmNWNjZjlmZGQwYTliNjM3ZTk4OTRkNDNmMDNhZWQ2YjYgbGVnYWN5LXRydW5rCiszODY3MCAyM2UzZGZjMGM2NDdhOGY1MGViNmFjMTk0NWUyZTU1ZTkyZjdjMzBkIGxlZ2FjeS10cnVuaworMzg2NzEgMmIzOGVkNjZjNjdmZjc2OWUwZjQ0ZDZkMmQ5NDRiM2RlOTY1ZjU0YiBsZWdhY3ktdHJ1bmsKKzM4NjcyIGRjNmYzMTVmMWY3ZjE1Zjk2Yjk1ZDM0ZTk5OWY1MGFjM2FiNTUwMDUgbGVnYWN5LXRydW5rCiszODY3MyAxM2MxYzMzMTZjNmZkZWU0MmE0ZGVhZGU2ZTQ0ZDkxNTU1OTdiYTM2IGFzdC1icmFuY2gKKzM4Njc0IGNmNDMwMmMyMWUwMDNkYjhhNzNjZjcxZTMyMjZlM2VmN2MyMzYzZTcgYXN0LWJyYW5jaAorMzg2NzUgNmQxZWU5ZGIxNTQzZWYyNDAwNmM3ZDJmNzJkYzZkNDg1ZTRiMDdlOCBhc3QtYnJhbmNoCiszODY3NiA5ZjQ1NGFmMTdmN2EzOGZiNzI2NTAwNjkxMzBkOWQxMzRhOWI5MDM4IGxlZ2FjeS10cnVuaworMzg2NzcgM2UyZWUyMTk3MjdkMTAwZDYyY2ZiMTM3NDEwYjUwNDdmOWFmMWQ3MSBsZWdhY3ktdHJ1bmsKKzM4Njc4IGIxNGM4ZTYzMTBlNzEyZTc1NmRjMjM2NDk3NTJhMjUyZmM3YzRiZTAgbGVnYWN5LXRydW5rCiszODY3OSA5YWVhOWY4YmRiMmM0NzgxZDliNDVkNTZjNjQ0N2ZjMmY3MzNiNDkyIGFzdC1icmFuY2gKKzM4NjgwIDEwN2UxZThjOGZjN2U1YTBkMTQzYmI0MjM0ZmYzMTVmZTBiYjg3ZjcgbGVnYWN5LXRydW5rCiszODY4MSAyM2IzZTc5MDZlMGY2MzhmYThmOTJjYmMyNDEyYzU2NmRlMWRhMjhmIHJlbGVhc2UyNC1tYWludAorMzg2ODIgYzA2YzkwYmVhN2RiMDcwMzlmZTJkNmM5Y2FiMmU0MDE5MDliZGRmNSByZWxlYXNlMjMtbWFpbnQKKzM4NjgzIGJiYjYwZTI2OWNlOGRjNTA4N2NiYjhlNDNkZmNlNjcxMGM0NzkwZTkgbGVnYWN5LXRydW5rCiszODY4NCAzZGEyMWZkYzJlZTcyMjM1NWYwNjI3ZGZlZThhZTIwZWZkYjIzMDg3IGxlZ2FjeS10cnVuaworMzg2ODUgZjNmOTlhY2FlNTlmZjg3MGZhMWQwNDNhNGNjMmIwMzcxM2RiNGYxNiBsZWdhY3ktdHJ1bmsKKzM4Njg2IDRjMTNiMDE0NmIzZjZiYjQyNDY5MzVhNzUzYjYyODUwOTM4MzU3MjcgbGVnYWN5LXRydW5rCiszODY4NyA2ZDIwMDBiYWYzZGU5YWFlYjQ2OGQxYWZlMWI2NzRlMDkwYzlhZmQ2IGxlZ2FjeS10cnVuaworMzg2ODggZjEzZjJjYmRmNGRlMjlhNWE2OTk5Y2EwMGIzN2M2YzZmMmJjZTRkMCBsZWdhY3ktdHJ1bmsKKzM4Njg5IDA4NTJkMTk2YjU5MDQzZWZkOTFhM2M0ZTQyOGYyMTQxNGFiYmIzNDkgbGVnYWN5LXRydW5rCiszODY5MCA3OTMzNTMxZDAyYjQ2MjE0MjMyMGI1M2FkZGViMzI5MmFhYWVlZDc0IGxlZ2FjeS10cnVuaworMzg2OTEgNjllMTBlNjM1N2JkNzZmNmNmNTlhYTZlNzUyOGQ5M2QxNWUyNmUwZCBsZWdhY3ktdHJ1bmsKKzM4NjkyIGNlYmZiYWIwMTdhNmU2MzM1MDI5MzYzZGVlNGMyNDUxYjkyYWU2NjkgbGVnYWN5LXRydW5rCiszODY5MyA3MThiMGI1YTY0MTlmOGU1YTgwMWQzOWI2NWFiMWNlNDIwMzE1Y2Q1IGxlZ2FjeS10cnVuaworMzg2OTQgOTljMTZlNDRlNWQ0NmY3NDZjNTg2Njc4ZGQwNTg4ZDA3NjRjMWNhNSBsZWdhY3ktdHJ1bmsKKzM4Njk1IGQ1NWRlYWU0MzEwZGMyM2QxYTc5ODEyZmQwNWMyMmIwMWEyZGI2YWIgbGVnYWN5LXRydW5rCiszODY5NiA4ZjIxZWMzMjc0ZjFjNDY5YmIxNmY4M2UwMWI2Zjk1ZTE3N2IzNDg3IGFzdC1icmFuY2gKKzM4Njk3IGI4ZmY5YmMwMjNlNjc1OWM3ZmFmNzRkZDViZTUzYWQxMjQxNDk2ZjIgbGVnYWN5LXRydW5rCiszODY5OCA0YjlkZjQ4NTZmMzdhNjMwNjU3N2JlNTY2MGU5MDQ1NjQ1MDM0NWI5IGxlZ2FjeS10cnVuaworMzg2OTkgMjM4MGY5ZDFlYmFiOTVlZDRiMGE0OWNlODI5ZGFmYjA4NjlkNGVmNCBsZWdhY3ktdHJ1bmsKKzM4NzAwIDU1NDdmOTAzMDEwOTgzNDVkMmY5OTU1ZTFiYWQxMjcxMTI5ZmZjOGMgYXN0LWJyYW5jaAorMzg3MDEgOTE1MjNjYWVlMTgzOTA1ZTY0NmQwNmY5ZmI0OWQwZDQxZTJmODNhMSBhc3QtYnJhbmNoCiszODcwMiBlMGY1MTk4NTNhOWYyODA4NjEwZjkzYzBlMDhhYTc2N2RiZGUyZjQ2IGFzdC1icmFuY2gKKzM4NzAzIDU3YzZhNmE4MDJhMDgzMTY3Y2ViYjIxZDJmNjJlZTViYzllOTJiYmMgbGVnYWN5LXRydW5rCiszODcwNCAzYzdiMTk2ODk0NzlkOGFjNWQ0MjFhZmYyMTE4MWY5NGRhMWZmMjA2IGxlZ2FjeS10cnVuaworMzg3MDUgOGZjOGU3YTYwNzFjNTA0MTY5MDNjODUyNjNhNTVhYWZlYTEzMDcxNyBsZWdhY3ktdHJ1bmsKKzM4NzA2IDQ5ZTMwYzZjOTFjOGNlNWFmYmZhZWIyZmM0MzdhMzRlYmI3MDAzNjMgbGVnYWN5LXRydW5rCiszODcwNyBiMDE2MjM2ZGZiZDlkZDAyY2JlNGNjM2U0NTQ0NTQxMjg0NmYxOGMwIGxlZ2FjeS10cnVuaworMzg3MDggMjZmMzI3MmQ5ZTExMmVhMWVhYWMzMGQ2M2I0MjhjNzY0NTA0OGMxNCByZWxlYXNlMjQtbWFpbnQKKzM4NzA5IGE0MTI2Mzg5NTBhMTNhZDM0MGRhOTdhNjRiYmE3MDEwMzk5OTg2YjcgbGVnYWN5LXRydW5rCiszODcxMCA3MjFlNjBmNDU0ZjNjODkwNjU0Yzk5YzdkMzAzNTI3Zjc4Yzk3NzJhIHJlbGVhc2UyNC1tYWludAorMzg3MTEgMjk1NmRmOGUwYTQwNDVjMGZmMTNjNmRlYTQyZDJhZmJkY2FjMTc3MCBsZWdhY3ktdHJ1bmsKKzM4NzEyIDA3YTRlOGQ4ZWI2OTIyMTJkOTBkZDQwMzI0ZTkxMWIwOTgwMTc5OWUgbGVnYWN5LXRydW5rCiszODcxMyA0ZWFhYjM4NTY2Yzk0ZmY4NDlmNDAwYjljZDY4YTE3NDlhYmQ3ZWJkIGxlZ2FjeS10cnVuaworMzg3MTQgMDFiYTNiNDA0MzFmMjlmZWQ2MjllN2EyMTAxODUwNjJmYTQwMThjNCBhc3QtYnJhbmNoCiszODcxNSBmMWM2MzAzMzIxZDcwYmMzNWVmNWRmN2RhZGM2NWMyN2VjMDViODU4IGFzdC1icmFuY2gKKzM4NzE2IGQ2OWZkZTQwYzcxOWM5NWM2ZDUwNTg0YjA2MDdhOTcyYzgxYmNlZjkgYXN0LWJyYW5jaAorMzg3MTcgNzYxMWRmMjFhNTkwMDlkNTM0MGMxNzE2YmE0MTI1Nzk5YWJhOWZjOSBhc3QtYnJhbmNoCiszODcxOCA5M2NhYTdkZWNlZTM2MDY1MDkzNDFjYmMzMWFjNWFlNDBjNmVkMjBmIGFzdC1icmFuY2gKKzM4NzE5IGFiODFjODNhOWFjNmNjYWFhYzRlMjdlZDE2ZDgzNmE4ZjNmYTI2NmIgcmVsZWFzZTI0LW1haW50CiszODcyMCA2NTNjYzA5ZmQ5MzEwMTYyMzE4ZGFhZDk2NTAxYmUwYjc4YWViOTk2IGxlZ2FjeS10cnVuaworMzg3MjEgNDdjNTgwM2FhYjQ1ODFiOTg3N2ExMGZiZGI4OWVhYjM4ZTM0ZDRlMyBsZWdhY3ktdHJ1bmsKKzM4NzIyIGVjODdhMTE2NDBkMDAyYmMyNmYwZTBhNGM0NGMxNzQ4ZjI3N2Q4NjEgcmVsZWFzZTI0LW1haW50CiszODcyMyBmOTJkODQ1Zjg3MDMzMzRkODhmYTE1OGJlMGQ3YmRiZjI5YjAxYjNiIGxlZ2FjeS10cnVuaworMzg3MjQgYTUwZmZlNjU5MTFiMGQ0OTg4MGE2YTEwNThlZjA1ODM1ZTlkZDI4YyByZWxlYXNlMjQtbWFpbnQKKzM4NzI1IDAwZmZkYmZjZDVhOTI3ODY5MmVlNmU3MTE1MmQ1NTZiZmEwZTJhOTYgbGVnYWN5LXRydW5rCiszODcyNiA1Y2FmODBmNTVjODYzOGQ4Zjk1NTA3NDdkYWE2NjQ1YWFhODE5N2ExIHJlbGVhc2UyNC1tYWludAorMzg3MjcgOTg1ZGQ3ZjA2NDIwODFlYTk0YTM0Zjk5NGU5YWRkOWYyZjFkMzAwMiByZWxlYXNlMjQtbWFpbnQKKzM4NzI4IDRmMDgzOGI2OGJiYmYxZGUyOWQ3NjZiM2RlMzYyNWMyOTY5MWFjNWUgbGVnYWN5LXRydW5rCiszODcyOSBiNzJkZjhhZWU1NmRhOGY5Y2QyNzZlODZjZGIwM2VlOWFkZDBmMDlhIGxlZ2FjeS10cnVuaworMzg3MzAgMjg4OTJlNjUxMmJhNmI5YjczMTk3NjA2ZjNmMmQ4ZjRkOTgyMzhmNyByZWxlYXNlMjQtbWFpbnQKKzM4NzMxIDMzYTllNDBhNThkNTJhMDIwYzJiNTI4NjgwNzk0ODk1MzI1ODNhODUgcmVsZWFzZTI0LW1haW50CiszODczMiBhZDJkZDg4NDEzN2ZmNTcwMzhkNGUwNTM2OWMxMjgwMTZhYjZjMTc2IHJlbGVhc2UyNC1tYWludAorMzg3MzMgYmJhMDM5ZjJlMDUyOWIxNmEzZWQ1NjI4YjEyYmNiMTVjY2NmODJhZCByZWxlYXNlMjQtbWFpbnQKKzM4NzM0IDdjZmRhOTg5ODg2Mzk2ODMxZjUyZTNhNTgyNTBiNGVhZmQ4Y2FiODYgbGVnYWN5LXRydW5rCiszODczNSAzYmNkZDQ0NmExM2I5Y2I3OWQyOGM2ZTdlOGQ0ZDNiMmM4YmE5ODY4IGxlZ2FjeS10cnVuaworMzg3MzYgMzA2ZjdkNGRiNWVmY2NhZjE3ODRlN2ZjMzJkNDNkOGNkYmM3NWZiNyByZWxlYXNlMjQtbWFpbnQKKzM4NzM3IGE2YzU4NjI2NmRlYTU4ZmJjMTVhMjEyNWQ4ZGViN2RlYmJkNDFiOTQgbGVnYWN5LXRydW5rCiszODczOCA3ZTJkOGUxN2NmMTRhNDExYjFlNTYwNTQ4ZDc4MGRjZWYyZGYzOGM2IGxlZ2FjeS10cnVuaworMzg3MzkgMzBiMDJjN2VmOGJhNjcwMmViZmE2ZTZiMjE2OWI1ZDNjZDUzODVlOSByZWxlYXNlMjQtbWFpbnQKKzM4NzM5IGY5MDU0ZDIzNTg3MDAyOWFmYTMzZWY5NDViY2E3ZWNlOTk2MTZjMTAgcmVsZWFzZTI0LW1haW50CiszODc0MSBmMzE0MjNjNDk1ZDY3ZjAyNDNlMTM0YTVjNzU5OTJlNThhZjNmM2Q5IGxlZ2FjeS10cnVuaworMzg3NDIgZGUxMjE4OTlkMDIxNjE2MzQwYmY4Njc0MDk3YjU3Y2QxYTNkZTczMCBsZWdhY3ktdHJ1bmsKKzM4NzQzIDVkZGExZjllNjJhNzM2Y2ZiNWQwYmIwMTBhNDA1YzEwYmRkM2JmYzMgbGVnYWN5LXRydW5rCiszODc0NCAwNjU4ZTZlZmZhYzcwNDhmMWU5NTFlNzZkYmI5MWMyMDc4MmZhZmQxIGxlZ2FjeS10cnVuaworMzg3NDUgY2QyYzA0NGY2OTlkN2M4Y2NlZjUxMTZjODE0YWFiMWJiYjE3ZTZhNCBsZWdhY3ktdHJ1bmsKKzM4NzQ2IDEzZDVjYWExZTlkMDJhYTk5OTcwM2UyOGQzMzc1YmU4YzYwMDk2NTggbGVnYWN5LXRydW5rCiszODc0NyA1MWJhOGNlOGQ5MmFmZGYwM2I2OGE4MTEwMmRjZmZjMmFiMjc1YjQyIHJlbGVhc2UyNC1tYWludAorMzg3NDggNThmM2YwZDA0NWY1NDVhZGI5YWMzZjYwOGVmYjc2NDFhYTQzNGU0NSBsZWdhY3ktdHJ1bmsKKzM4NzQ5IDg0NDUzMDUwODQ3NTY3ZjgwMTcyOTgzNWYxYmY1YjMwMDE4N2NmMzQgcmVsZWFzZTI0LW1haW50CiszODc1MCBhZWY3MTNkZTdhMjNjNjQ1MTE4OGNlZGE5MDQ2YmM5ZTc0OWFiYmYzIHJlbGVhc2UyNC1tYWludAorMzg3NTEgZWFkNWU3M2FiYjUzYzk4ZjNjNjhhOWQzYjYzZDU3Yzk2YjM3ZmQ0YSByZWxlYXNlMjQtbWFpbnQKKzM4NzUyIDYzYzVkNmNlMDc2MzRkNjYyZTE0ZTg3N2QyYmJkNWRmYjYyNzRkOTggbGVnYWN5LXRydW5rCiszODc1MyA3ZTFhMzEzM2ZmZjJlYTU5MmYzMjgxOTk3YTY4MjUxOGYzOTBlODhiIHJlbGVhc2UyNC1tYWludAorMzg3NTQgNmFmZjIyNjAwZTE1YWEzNjZhZjhlNmE5MTAwMTFjMGViNjNmYjFkNSByZWxlYXNlMjQtbWFpbnQKKzM4NzU1IDExZmQyNjM3ZTViYjc0NGUzZmRkZmQ0MGE0ZGFkYmEyZGEyMzdkY2MgcmVsZWFzZTI0LW1haW50CiszODc1NiBlYjZjMjkxNWJhZGQzNWMzNDhlYjcxYTdkZGMzY2VkNTkwY2Y1NzM5IHJlbGVhc2UyNC1tYWludAorMzg3NTcgYTk1MTFjMTUxMjRiZTVhNTgwMzJlYmVmYzE3ZGI1MGFhYWFiMGEwOSByZWxlYXNlMjQtbWFpbnQKKzM4NzU4IDJlYTNkNjkxNTIwNDEwM2Q5OWNhMGRkMDU3NWEwM2U4MTM0ZjJlOTQgbGVnYWN5LXRydW5rCiszODc1OSAzOTM2Y2Q3ZjE2ZjI1NWYxMWM5YzI0Mzg5YWZkNzQzOWRjM2FjMTNiIGxlZ2FjeS10cnVuaworMzg3NjAgYjg1ZTgxMDQ2MGVmYzViNDI3NzFhNzU4NWU3NWNiODc0NDMxMmJhMiByZWxlYXNlMjQtbWFpbnQKKzM4NzYxIGZlNTMxYjVkY2ZkNjA5MmIxNDQ0MDA0MzhmM2E0ZWRhN2I1OWZjMjEgYXN0LWJyYW5jaAorMzg3NjIgODBjYzQ0ZWFiZGVlMjU5YTAwNzUwMThjMjZhNjNkZDVmYmFlYjdjYSBhc3QtYnJhbmNoCiszODc2MyA2YjIxZGM5NDM4YWQ1YzFlZjk5OTYyN2Y4ZjhlNTQyZTljNmFmZmQ3IGFzdC1icmFuY2gKKzM4NzY0IGNhNGQ4YjRmYmIwNWRiMzEwNjlhNmU4MDc1YTEyNzExOTljOGMxNTkgYXN0LWJyYW5jaAorMzg3NjUgNWMxZWJiNWFlNTIxNDM5NjgxNDM4MzlhZjdkZjkxM2M5NDZiMDNhNCBhc3QtYnJhbmNoCiszODc2NiA1ZThjOGNiMTFlNWJkYzJmM2ZiNzFjYzc2YWJhMGYxNDY3MmE2OGRjIGxlZ2FjeS10cnVuaworMzg3NjcgYWI1ODIyZjc1MTVhNWZlYzU3MmYwMzJjZTk5MWIzMjM2Y2IyMmFkYiByZWxlYXNlMjQtbWFpbnQKKzM4NzY4IDcxZmQ3ZWU0YjdmNTBiYzkzM2Y3MTE0MDgxYWY5MzJkZTg4YWJkMmUgbGVnYWN5LXRydW5rCiszODc2OSAzNGNkZmM1ZGQ3ZWEzNGU1NzY2ZDg4OThlMjRlMDFiMWE4MTczYzI1IGxlZ2FjeS10cnVuaworMzg3NzAgYjQ5ZDM5MTExYzQ4NmNlZDgzOTFjNzljYTM1ZjI4NWFlYzhlMTZlNyBsZWdhY3ktdHJ1bmsKKzM4NzcxIDU1MzVjZTBmZjdmOWY2ZjVkZTk4MDE0MjY4ZTAwYjU3NWY4ODBmMDIgbGVnYWN5LXRydW5rCiszODc3MiBkYTQ2MDg0MWI2M2NiODNkNjE3YmFkZjg4ZmJkYjEyZDhkYWRhYzlmIHJlbGVhc2UyNC1tYWludAorMzg3NzMgYmM5ZmJjMjNjZDRhNTk5MThkYjEyNzFiMDg2NGQ0MGI0ZGQ5NTZhMyBsZWdhY3ktdHJ1bmsKKzM4Nzc0IGI2NDk5NzNkMDk2MmViMDdiNTg5YmVmMzQyNWZhZTYzZmRkOTk0MzUgbGVnYWN5LXRydW5rCiszODc3NSA2ZGQyZDEzNmU4NDY2MWMwNzgzOGQ0MjMzOTM0MTQwNWU5YjJjNDU1IGxlZ2FjeS10cnVuaworMzg3NzYgZTc2MmZlYTc4Y2IyMzYzYmUxNjM1ZWU3NDZmZWEyZjhjOTE0ZTU0YiBsZWdhY3ktdHJ1bmsKKzM4Nzc3IDAxNDNkOTkwZDYwY2M2MDEyMGU0NmI0YTExMzA3YTk3M2NiYzZjMGMgbGVnYWN5LXRydW5rCiszODc3OCAxOGRjOTE1ODE2MGQ1Yjc4Nzk0N2EzMGM3NjA1OGY2NjAzM2UxN2EzIGxlZ2FjeS10cnVuaworMzg3NzkgNWE1MjIyMjVjNGRiMzU5ZmI3ZDU4Mzg1ZTM0ZGMyYzMzNjA5ZGMxNyByZWxlYXNlMjQtbWFpbnQKKzM4NzgwIDIwYjNjNzIzNTAyYWQ0YjM5ZjM4MzgxYjhlNDRjMGJlY2IxZDhjZGQgbGVnYWN5LXRydW5rCiszODc4MSBjMmE5YzNhMTg0Nzc2ZmM2MTQyNjU2ZTUwMGIyM2NlNzIzY2ZhMmQ3IHJlbGVhc2UyNC1tYWludAorMzg3ODIgOWE3ZjQ2YzQyNzczMTRmNzRkNTlmNmJjMTI0ZGZhNDdiNjk1ZDkxYyBsZWdhY3ktdHJ1bmsKKzM4NzgzIGI5OTY3NDdjMDhiNjg5MTUwMjA2NTQxZGI1MmM4MzlhMWUxYmI0OWIgcmVsZWFzZTI0LW1haW50CiszODc4NCBhZjVkNDgwMTRiM2U2MzY1ODZhODY2YzVkNTE4MDdiMTdhMTJmNzJlIGxlZ2FjeS10cnVuaworMzg3ODUgNWJjOTFiYjI0NGIxOTAyZmY0MzFmNzE1Y2JmYjZiN2Y0MGI2NDM2NCBsZWdhY3ktdHJ1bmsKKzM4Nzg2IDY0YmM1YTkyMmY1NzkxYjRiODc1Y2VjMGRhZTdiMTg1N2E3NTc3NDYgbGVnYWN5LXRydW5rCiszODc4NyAxNDNjZGE1YTkzNDgxZmRmMDczMmVmNGNjNjAxODRmNjk0ZjAyNTVlIGxlZ2FjeS10cnVuaworMzg3ODggMDM2MTMwOTdiOWNiMzQ1NDEwZjU0N2Y0NjBiMDU1NmI2MzcwMDBiZSBsZWdhY3ktdHJ1bmsKKzM4Nzg5IDc5MjAxZjgyMGVkMDRhOTBkYWFjZGNhZDQ2MTZmNWFmMDlkOGUyYjIgbGVnYWN5LXRydW5rCiszODc5MCBhZDZhYTJlZWNiNTY5YjE0NTI2M2VlOWQxMGJiM2E5NGNmMjgzZmJjIGxlZ2FjeS10cnVuaworMzg3OTEgMDc2YTdjN2ZlMjhiODEwYjUwMDAwNTllZDgwYzNkM2I5MzNmOTVlOCBsZWdhY3ktdHJ1bmsKKzM4NzkyIDdjMjc4MGM5ZTUxYmRmMzNhNWViMWE5YmY4MzU0NmU1MDdiMjMxM2QgbGVnYWN5LXRydW5rCiszODc5MyA4NjJlYmI2MjEzNTUxMDkyNThhYjk0OTRlZTcxNzkxNDI3MmRkNmE2IGxlZ2FjeS10cnVuaworMzg3OTQgOWU2NTljYjcyN2VhNjhjOWE1NDM5ZThjNzk2Njc1MTVkOTJiMjAwOCBsZWdhY3ktdHJ1bmsKKzM4Nzk1IDQ0NDY4ZWZiNTI1ZWQ1Nzg2ZGI5ODgyN2QyMWQ5YWU2NzRjOTFhOTEgbGVnYWN5LXRydW5rCiszODc5NiA0OGM3MWZmMzg1NzgyY2MyMjcyNTNlMmQwY2U4NWMwYjQzZTZkYTNiIGxlZ2FjeS10cnVuaworMzg3OTcgMTkyNGEwN2Y3ZjIzYWY3ZTliYzljYjE1MTA0NTdmNzkwNmEzOGMxZiBsZWdhY3ktdHJ1bmsKKzM4Nzk4IDQzM2Q3Mzc4ZGZjMmZjMjMxMDBmMGE2ZTkxYjFhM2I3YTkwYzE0OTkgbGVnYWN5LXRydW5rCiszODc5OSA2MWVjOGI3OTU2NDFjNGQyZWE1NDMyZjNjYmNhMjdlZGMxODE3ZDc2IGxlZ2FjeS10cnVuaworMzg4MDAgM2JjMjhmNjM1MTdhNGQwM2MzNDYwNWMwMzAzNWRmZWIxZTYxZjVlZCByZWxlYXNlMjQtbWFpbnQKKzM4ODAxIGQ1MjA3NGQ4OTRkZjI5Mjk0ODc2OTBkYWMyNjI2MWUzNDQ2YTYwODIgbGVnYWN5LXRydW5rCiszODgwMiBmYWQxZThlMDk0NTZkMGQ1MWVlY2M0OTU2ZTQwNDE1NWU3ZDVhM2Y1IGxlZ2FjeS10cnVuaworMzg4MDMgZmJjYjFkYTQ4MGRkNGIxYWYyYjE3ZDc3MWVkN2E1MTk3NWM1ZTE3NSByZWxlYXNlMjQtbWFpbnQKKzM4ODA0IDFhYzkxNGQzYmRjMzk0OGQzNDVlNTZiYjc4Yzk5NGNkMjVkY2VhYmQgbGVnYWN5LXRydW5rCiszODgwNSBkYWQyYjYyMDQ5NzQ1NTU5ZWY4ZDY4MDFiYzVmOGEzMzE0YWU4Mjc0IHJlbGVhc2UyNC1tYWludAorMzg4MDYgMzRmOWIyYWRhZTJjNmJmYjk1OWFkYWUzODRhNjg3YTAyYzI4N2NlMyBsZWdhY3ktdHJ1bmsKKzM4ODA3IDM4YjY1NDgzNjlmYWU4NWMyZTk4ZjA3NWNmMjA5YjdkN2I0Y2NmN2IgbGVnYWN5LXRydW5rCiszODgwOCBjZDNiOTUyNzA4YWYwZjlhYmU4ODA5YjY5NDk0MDhjZDBjYWEwZjBjIGFzdC1icmFuY2gKKzM4ODA5IDRlNjI5ZWJkMGUzZTU3YjBmNzk3NDdkMDk2ZmQyM2JmZTQ0OTgwNzAgbGVnYWN5LXRydW5rCiszODgxMCAwMjBlZDY3MWFhNjIxNWVhOTExNjJmZTU2NzFmNGRhN2YyZDkxZTI2IHJlbGVhc2UyNC1tYWludAorMzg4MTEgZDdhMjExN2ZjYTQyNTM1MGUyODhlMTUxNjcxMzY1NDAyYmZiNGRhYiBhc3QtYnJhbmNoCiszODgxMiBjNjA3MjlhNTc5MzI1ZjQzMWZkNDM1ZGIyZmEwNDJmYjYyMjc1MmJjIGFzdC1icmFuY2gKKzM4ODEzIDhlNmNkNTAwYzhmYjVhNTQwODA3YmY3MzM0MzJlMDQ3Mzg1OGJjZjIgbGVnYWN5LXRydW5rCiszODgxNCBmYzQ0MmMyZWIwY2Y2ZGJkOGFkYTFkYjE1ZTE3YmZkZDg2N2UzNWE4IGxlZ2FjeS10cnVuaworMzg4MTUgOTg2ZDQ2YzRmYWViMjI5MDk4Yzc2MjhlOTBjMGU3OGE2MzNmNzA5YSBhc3QtYnJhbmNoCiszODgxNiBjOGFmZGQ5MjcxNWMzMjc3NTE0Mzc3ZTMyZjEwZDdkNDUxOTQyMDE1IGFzdC1icmFuY2gKKzM4ODE3IDYwODMwYWQ2Mjc1ZTJjODAwZTY2NzdhNDQ3ZWJiOTY5YTgxYmYyMmYgcmVsZWFzZTI0LW1haW50CiszODgxOCBhOTllZTI1MGUxMGMxYzU2MzNiOGM5ZDA3MzdiNzMyNDEzMjQyMjhlIGFzdC1icmFuY2gKKzM4ODE5IDMwZjM3YzBlMTU5MjU2YzljODM2NjFjZmM1MzlkMTE3MDJiYjY0ZmQgYXN0LWJyYW5jaAorMzg4MjAgYTk2YjUwMTQ5OGE4MDhmMDIyY2ViODNmMGE2YTYwMmU5M2Q1MjBjNyBhc3QtYnJhbmNoCiszODgyMSA1YzYwY2JiNjUzMzBjZmFhNTc4YjA1NDRlOWMxZDMxOGRkMWQ0YjRmIGxlZ2FjeS10cnVuaworMzg4MjIgNzI2N2ZjNDBhZGFjMTUzYjc4M2UzNzM3MjBiMWI4Mzg4ODdjNGY4YyBsZWdhY3ktdHJ1bmsKKzM4ODIzIGQ0MzVkMjE0YTU5MjQxNDUyMDdjZDViNDEyMjUyMWNlYTJlZDQ2YTggcmVsZWFzZTI0LW1haW50CiszODgyNCA4NzcxOWFlOTI4OGNlZGJiOTk4M2VkZTUxYmNjNjUxYmQxNGQzZDg0IGxlZ2FjeS10cnVuaworMzg4MjUgMGYzMDYxZjQ5YTllODlhYjY4ZjgwY2E4YTk4MTk0OWNmOTQ1OTAwNSBsZWdhY3ktdHJ1bmsKKzM4ODI2IGFmNTkwZjYyMmMwYmMzYmU2ZmUyOTIxMzJlYjI2NDk0OTQxYzc4NmYgYXN0LWJyYW5jaAorMzg4MjcgZDRmZmM3NzFlOWZmOTY4OGRjNDE2MjRkNTA2NTk2ZTQ0NGRiZGU5MiBhc3QtYnJhbmNoCiszODgyOCBiNDc3YzRkN2EyMGMxYTY4MjBjMTdjYjkyODM0YjBlNjAxYmI5ODVmIHJlbGVhc2UyNC1tYWludAorMzg4MjkgYzRlYTE3Y2Y1MjExMTU2NDNmMWUzZDkyNjRjZmFkYWIxNjk5YTVlNiByZWxlYXNlMjQtbWFpbnQKKzM4ODMwIDhiMDNiMDkxNDFkMjg3MTcxZjFlOTYzZjA2ZDY3Y2Q4NzE2MmMyODggbGVnYWN5LXRydW5rCiszODgzMSBhMTMwOTZiODU5OGI5YTY3ZGI1MzYwMjI2NzA1OGI3ZWU4YTY4N2RjIGxlZ2FjeS10cnVuaworMzg4MzIgNmJkYzM0MjZkNDExM2YxMjVlMGJjYTQ5ZTAxMTE4NzRlNTVhMmY4MSByZWxlYXNlMjQtbWFpbnQKKzM4ODMzIGY5ZTMxZGI2YzcwMzYwMzZlYTViYzM2ZjQ0MTc5NDBiOTQzZjUyYzggYXN0LWJyYW5jaAorMzg4MzQgZmJiMmYzYmI4Y2NjZDE1ZjQxZTg5NjBjNjlkMWJjYWU5ZDU2OWMxOSBhc3QtYnJhbmNoCiszODgzNSAyODA0YWEwNDM4Y2M4ZDM2ZmMzZGUxYzg5ZDIwZjllMWE1M2YzMDkwIGxlZ2FjeS10cnVuaworMzg4MzYgYWUyNWQ0NWY4OTg3NjM1NGJmODQzMjU2ZmUzN2ZiNmVkNzMxZTk1YyBsZWdhY3ktdHJ1bmsKKzM4ODM3IDY3YTg5YjQzZGNjNzIzYTU1YjhmMzM2YjYzY2M0YzExYmUwNzJjMzkgbGVnYWN5LXRydW5rCiszODgzOCA0YzhlNTI0M2NhNDI1MzFlNDM4ZjliMWUwOTAyNDVlZTk3MGE4MzMzIGxlZ2FjeS10cnVuaworMzg4MzkgZDM0YmRlZDMxOWFhZTVjZmZmNDBiOWFjYjNjZjllYWQ1YjdkMzE4ZSBsZWdhY3ktdHJ1bmsKKzM4ODQwIGJjMTIzYjljZWY3ZmE5NjljN2IwMjI5YTFmMWUyM2FiNjRiYTNlNjIgbGVnYWN5LXRydW5rCiszODg0MSBjNjZhN2ZiZTE2Y2Y5ZTUxYzliMTEwNDkwMzJjNTY0OTAwZGFhNWMyIGxlZ2FjeS10cnVuaworMzg4NDIgMTMzMWM3Nzk5NjQwOTM2MmRkYzdhNjk0NjE0ODAwZTliMDFlYjQ3YSBsZWdhY3ktdHJ1bmsKKzM4ODQzIDdmNzIxMDlkZmI0ZmFmYzc4ZTIxMTNhMmQyNjRhZDkyNWU4ODMxOGYgcmVsZWFzZTI0LW1haW50CiszODg0NCBkMDU1Zjk0ZDA5MzZhNjkwZjIxZjFkNmVhNzUxMzZkNzYyMTJhNTk4IHJlbGVhc2UyMy1tYWludAorMzg4NDUgOTg1N2RhYTIyODA3YjczOWJiMDVhOWVkYzU2Y2MyZTYyZDkzZjcyNSByZWxlYXNlMjQtbWFpbnQKKzM4ODQ2IDM1ODE4NDBjODJlNzAxYjRiNDFkYTM5MGM1OWVmZjQ0MjcwZWNjODMgYXN0LWJyYW5jaAorMzg4NDcgMDhlMjBlOWM3NmZiZjNlZTM3ZDhhYTE4MzFjMWI1YmI2ZWRiNjkxOSBsZWdhY3ktdHJ1bmsKKzM4ODQ4IDI5NGRhYmNiMzc5YjUxYmU3Y2M0MWFjMjMxZTBiMTI3MjVlYmUyMmYgbGVnYWN5LXRydW5rCiszODg0OSA5YTFiMWUxYWU2NTNmYzk1NjMxMzQ3MzIyYWI0ZjdiNTljMzQ1NTdkIGxlZ2FjeS10cnVuaworMzg4NTAgNDljNmRjZWQwOGMyMWY0NDNiNmE1NDE0MWVkZjFhZjE2NmIzNzA5NiBhc3QtYnJhbmNoCiszODg1MSBjMWE4YzJkN2U1MjhiZGI3OTcwZjUyZDU4MDQ4YWM5MjVlNWM3ZWM0IGxlZ2FjeS10cnVuaworMzg4NTIgYWFlYWIyNDljODZhZDMyN2VmMTI3MmMzMGZmN2IwNTQ4Njk4ZDE1NyByZWxlYXNlMjQtbWFpbnQKKzM4ODUzIGVjOTdlNGMzNzA1NjNhZjk3ZDI2NDg4NDQ2Njk1ZjM5NmU2MDg0NjggbGVnYWN5LXRydW5rCiszODg1NCA1Y2NjODc3N2NlYTI3MTU3OTZlMzNkMjZjNjExYWI4ZjY0MTQxMWJlIHJlbGVhc2UyNC1tYWludAorMzg4NTUgYTUxODVhYzFlNGVjNmNhZmM3ZDJlNTQ4MjhlNzUyNjMwM2MzYWYxOSBhc3QtYnJhbmNoCiszODg1NiAxMGFmMTY1ODNiNzU1NTg5Y2MwZjQ2MjRmNzRiMjliNDAzMGIwZDZmIGxlZ2FjeS10cnVuaworMzg4NTcgZGFiYTg1ZWY2NTRhNDlhYmNhYjBhMTQ3NmRiMjIzNGYzNDc0ZTZjOSByZWxlYXNlMjQtbWFpbnQKKzM4ODU4IGMwYjRkZTc0MWIzODNkZmMzODVkYTg1NjNkYzFiNmI3OWE2MTAxYjMgcmVsZWFzZTIzLW1haW50CiszODg2MCBhMTI5M2VlNmUxZGI5YTk0YzhmYWU5MmUyMWU2YWI1YmM2Mzg0YWFlIGxlZ2FjeS10cnVuaworMzg4NjEgM2M2NzlkMDA4NzllYmIxYjUxM2IxOGVmNmFlYjE0MTJjZDQyMGY3NyBsZWdhY3ktdHJ1bmsKKzM4ODYyIDQ3NWY4YWRjYjAzMjk0MGU2ZjY2ZTQwN2QxNWNlZWM0Mjc4MTQ3N2IgcmVsZWFzZTI0LW1haW50CiszODg2MyA3Mjg3YjQxMTQ1YWUzNzZhMGZjZWE3MDEyMjE3NjA1YWViNzA2NzY3IGxlZ2FjeS10cnVuaworMzg4NjQgMmM3NDk4YzJhZTcwN2ZkYTM3MmNkNzQ0ZGQ1ZjJmZGE5ZThkODYyZSBsZWdhY3ktdHJ1bmsKKzM4ODY1IDc0YzEyYzFmMzY5Mjk0NjE5MzU4NDM4NGViNzNiMjM4ZjdiYmY5ZjUgbGVnYWN5LXRydW5rCiszODg2NiA5ZmU3ODAxZmM5YTRhMjE4OTNhOWNhNDZlMzIyN2U0NGVlMTVhM2U5IGxlZ2FjeS10cnVuaworMzg4NjcgYTE3MDAxZjhlMWI0ZWI0MTFkNDFjYTJlYTVjNDE5MmJkYzEyOWZjOSBsZWdhY3ktdHJ1bmsKKzM4ODY4IDljOTE3MmJlMWY2OTc1ZWJiNWI0MjQyNDZhMTdiNGU5NDFmMDQxNjAgcmVsZWFzZTI0LW1haW50CiszODg2OSBlNGUwY2ZmMTZiYzdlOTdiOTc0MmU3Y2MzZmY1ODg4Y2RjMWY5OTQ2IGxlZ2FjeS10cnVuaworMzg4NzAgNzVmNTE5NjEwOTdiOWQ5NzU4ZDA0MTgzOTU2Nzg1MjYwOGI0NGZiOCBsZWdhY3ktdHJ1bmsKKzM4ODcxIDFlN2E2YTVjMzYxNDNlNGNmNjllOTY3YjYzYmRlM2MzY2MzZGM0OGIgcmVsZWFzZTI0LW1haW50CiszODg3MiBiMTE2MzM5ZGRmMjc4NWYzNDExNzBmOGJkOTVlMzc5ZmIwYmE4YWI3IGxlZ2FjeS10cnVuaworMzg4NzMgMzY1OGE3ZTExYzE0OGQ4M2MwOGFiODNmMDlhM2I1ZWMwZWQ3MDc5NSByZWxlYXNlMjQtbWFpbnQKKzM4ODc0IGFlNWYyNzQ0NmY4MTkyNDc1M2RkZGUxYmIyYTQxMDNiZmY2Zjg2MDQgbGVnYWN5LXRydW5rCiszODg3NSBmMzMwMDc4NjQyNDNmMDk2MDY2ODkxNjA3OGU4MDBjNGNhNTA1NmM2IHJlbGVhc2UyNC1tYWludAorMzg4NzYgOTMzOWM5OWEyOTgyODEwN2E3YWM5M2VmYTgyZjRjZGNhYzBiNTRlMCBsZWdhY3ktdHJ1bmsKKzM4ODc3IDQwNDA4ODUwM2E3ODAyOTZhMTFkMmQxMjEwNzMzNDkwMjkxY2ZmYTcgbGVnYWN5LXRydW5rCiszODg3OCAzNzY3Y2RhYTY3MjgyNDhjYWVlYTE2ZTk0ZDIzNjg1NGRhNzFmZTRjIGxlZ2FjeS10cnVuaworMzg4NzkgYzkxZTVlMzFjNWZmMWMyYWZiYjBjN2Y3NTgzNmQwNzA5NjVhZWEyNiBsZWdhY3ktdHJ1bmsKKzM4ODgwIDZiYTI5M2I3MTE1Yjc5ZWQyMWU5Yzc2MDM4MTU5YmQ2ZTA3MjE3MmEgbGVnYWN5LXRydW5rCiszODg4MSA4MGZiMjg5MWIzM2JmY2IxMTNiMGM0MzM4MjU5NzI5NWQ3NTU2N2Q2IGxlZ2FjeS10cnVuaworMzg4ODIgNGEzM2M1OGMzMTljMDhiODYxODNhNWVhOTIxOGM4MDRmNzkzYjM5OCBsZWdhY3ktdHJ1bmsKKzM4ODgzIDA0NzQzNGFjYjVhOTE5ZDM2NDA2MWE2Njg5Mzc3ZTI2NjczOWRlM2IgbGVnYWN5LXRydW5rCiszODg4NCA1MGJlZDY3OGVkZGEyZDdmMjA4MmI2YzgzNjU1N2FhMjBhNWExMmExIGxlZ2FjeS10cnVuaworMzg4ODUgMWVhODA3NzY5MzI5MmQwMTcwZTM2NWFjOWViYjcwM2Q3ODBmMWZlNyByZWxlYXNlMjQtbWFpbnQKKzM4ODg2IGY2YWY5NDMwMWViYzI3NTE5M2RiZTA0OWNjYmFiMmEzNGE5MGRkZTYgbGVnYWN5LXRydW5rCiszODg4NyAxNDVjMDNhODVlYTgzODcyNTFlMGMwOTUzMzg3YTM4ZGI2ZWY0MmQ5IHJlbGVhc2UyNC1tYWludAorMzg4ODggOTM2Mjk3NzBhOTNmNDY3OWQ0ZDZhN2I5NDgyMzJiNmQyNjc2M2M5NiBsZWdhY3ktdHJ1bmsKKzM4ODg5IDg2ZjRiMTgxN2NhYTY5YzZhYTBjNTQxNDM5Y2I2ZTQ2YjA2NjFhMzYgbGVnYWN5LXRydW5rCiszODg5MCA2NzJlNWY2NTE3MmMyZjE2OWExYmQ0ODY0MWUzYzQ3OWJjNmViODM5IHJlbGVhc2UyNC1tYWludAorMzg4OTEgZDQ1MTU1NDc5OTc2NjZjMGFmOGVjZjJiZTA4M2M0ZTBjNmNmNGZiNyByZWxlYXNlMjQtbWFpbnQKKzM4ODkyIDA5MDU4MTJkZjRhNWYxNDkyNWQ1MTE3ZDQyYjI5N2MyZWIxNmUyNDYgbGVnYWN5LXRydW5rCiszODg5MyAxZGQ4YTBkNjQ0MzIxY2JkMDNlNThhZjQ5Njc3ZjUyMDgxYmRjYWVjIGxlZ2FjeS10cnVuaworMzg4OTQgOTE2NTE2OTgxMjYxMDYxZmUwNjUyZWM0NmQ2NjFlNWZlM2JjMjE2NCBsZWdhY3ktdHJ1bmsKKzM4ODk1IDM4ZDA0ZWQwMjhkMWVmNWFmZjUzMTEzYTMyM2FjOGUwNzhlZGZjOTEgbGVnYWN5LXRydW5rCiszODg5NiA1ZTUxMWRkZWY0OGIyZGI1ZDZiOTBkM2JjMDk5ODU4N2UxY2Q1Yzg1IHJlbGVhc2UyNC1tYWludAorMzg4OTcgMTg3M2U4YWY1YThhYzIxNTRkNTJhZjA1ODM3NWY2ZmM3NjRhMTViOCBsZWdhY3ktdHJ1bmsKKzM4ODk4IDNjYWJhODA3MjA0YmJjODgwYmZiNWYxNjVlNGQ2OWViM2Q5ZjE4YzggbGVnYWN5LXRydW5rCiszODg5OSAwYjAxZWU4NmNjZmQ4OGZiZjlmZjU1MjEwZWFhMjBmYmZmZDYyMjNkIGxlZ2FjeS10cnVuaworMzg5MDAgYTI5MWFkOWFhNmExMGMwMTgxYThhODE1YjM5Njc3MDIwZDcxY2Y3YyByZWxlYXNlMjQtbWFpbnQKKzM4OTAxIDlhMDdmNmQ0ODE2YWIxY2RiMThmM2MxNTJjNDI4OTYzN2E5NWQ0M2IgcmVsZWFzZTIzLW1haW50CiszODkwMiAxODRmMTBlMTE2ZmZmOTQzNTUxZTVlZjVhZmIyNzkyNDliM2MwNDU2IGxlZ2FjeS10cnVuaworMzg5MDMgZWY5MzBjYWU2M2E4ZTIxYmU1MmQ5OWIyNzRhYWEyMDA1NmZkZGRkMiBsZWdhY3ktdHJ1bmsKKzM4OTA0IDY2ZTA0MTRjZGZhNmFiMDg4YzI5ZTU3MDY2ZmVjYWFmYjE0NGE4Y2IgcmVsZWFzZTI0LW1haW50CiszODkwNSAxNjk5ZGM1MWE1YjU3NjljNjU5ODVlZGQ3YThlMDA0MWViMmJhNzkzIGxlZ2FjeS10cnVuaworMzg5MDYgYjE0MWQ1N2M0ZmNhOTZjMDE4NTRhNGQ5N2I2YTdlZTc2N2NjMzQ3MiByZWxlYXNlMjQtbWFpbnQKKzM4OTA3IDk4NTQ0NzJiOTIxYmE0N2IxN2E5NjYzOTU4ODRjMWExNDAzN2M4NTggbGVnYWN5LXRydW5rCiszODkwOCBlZjE4NDU2MmU4ZTAzZGU5NjFiMTg3NmFiYThlOWJmNjIwMmEyZTQ2IGxlZ2FjeS10cnVuaworMzg5MDkgYzA5NTg4OGZjNTQzYzgwYzk1MGMwMzBkY2Y5MTBmYjNkMjQ5ZjlkNyByZWxlYXNlMjQtbWFpbnQKKzM4OTEwIGIzMTczNmY2MjViYTdmOWM3NTI4MGQ1MTUzMWI4NjcxMzBkNTQ1ZTYgYXN0LWJyYW5jaAorMzg5MTEgMDJmMTNlMDBlMmVkMTMwMzU4OGVhOGQ3OWU3ZmJmOWQzYzEzM2ZiYSBhc3QtYnJhbmNoCiszODkxMiA4YjA1YTQ3MzJjZjM2MWEzODc1M2UwOWEwNGRkZjliYTcyMDQxOTZmIGxlZ2FjeS10cnVuaworMzg5MTMgMDBjZDM1MGNmN2JmMGM2MmQzZmUyZWQxYzBlY2M2YmJkNmNiZTJmOSBsZWdhY3ktdHJ1bmsKKzM4OTE0IGMwZWFkMjkxOGNmNzQ1NDAyNDFjZmNjMWM5ZGUzNDY1YTk0Y2U4YzEgbGVnYWN5LXRydW5rCiszODkxNSBmNzEzZThhYmYxNGUzY2E2MjNmOTJjOTg4NmQ0ZmU4ZGM1N2NmZjQwIGxlZ2FjeS10cnVuaworMzg5MTYgYTJiMjIyNzc3M2U3ZmU5NGI3Mzg0MzI2YzIzZDk5YTNjMmQxYjUyMSByZWxlYXNlMjQtbWFpbnQKKzM4OTE3IGI0MjNiNDI3ZTE3ZThkNjFiMWVhZjYwZDEzOGY0MTU0NGI1YTIwZTkgbGVnYWN5LXRydW5rCiszODkxOCA3YmNhYmJiNmI0YjdlZjQzZGFkYjhhMzMxNjNkNzZkN2ZkMDkyZmY0IHJlbGVhc2UyNC1tYWludAorMzg5MTkgZTNhYzVmMGFkM2UzYWNiOWVkMmNjOGVkMTYxMzkwOTNmODJmNmE1ZiBsZWdhY3ktdHJ1bmsKKzM4OTIwIDIxMjUxZTIyMWU1NjJmMGRjZWMyYzE5ODU5ZTNiOWMwZDQxZGFiOTEgcmVsZWFzZTI0LW1haW50CiszODkyMSAyNWEwZTFmYWE4YTVlZDhmMDkxZmNmMWEwZTZhMTFiZTRjMjYzOTc0IGxlZ2FjeS10cnVuaworMzg5MjIgZmNkMmMzODQ3ODY5OWYyMzFjYzhlZmI2NDEzMjBmNWJiN2RhNjA4ZiBsZWdhY3ktdHJ1bmsKKzM4OTIzIDFjZGMwMzM0ZDg3N2M3MWFiZmYxMmZkNGQ2N2ZlOTk5ZjE0MGYyYWIgbGVnYWN5LXRydW5rCiszODkyNCAxN2FhMjg5NjJiODVkYWEzOTNiMWZjYmFiNzA3ZTM2MTkwNmM0OTkxIGxlZ2FjeS10cnVuaworMzg5MjUgMWNhN2FlNDhhOTMxNTFiNDVlZmM1ZWY2M2VjZGI0YTdhNzYzNjY4NSByZWxlYXNlMjQtbWFpbnQKKzM4OTI2IDUyZmVkMmQwNjQxYTViZDhlZmE0ZDc4YTUwNmQ3NjI4ZjEwMmI3OGYgcmVsZWFzZTI0LW1haW50CiszODkyNyA4ODgwZDkxY2RiMDkzODNhNGZmZjMyMDE3OTc3NDNhY2NhMjFiMDRlIGxlZ2FjeS10cnVuaworMzg5MjggNzhkMGE1NThiMDkzODM0ZTg2N2QzMDYyZjE1YzJlNGQwOTVlZWY3YyByZWxlYXNlMjQtbWFpbnQKKzM4OTI5IDY1Yzk1YWQ2NzJhZThmZDU3ZGUzNDQwMjdhNjZiZjVmNWY3NjNhMGQgbGVnYWN5LXRydW5rCiszODkzMCBkZTc2YjM0M2Q5YzgyYjJiNmE3MmU4ZTBiYmQ4Y2U2MmI1YzdlYjFlIHJlbGVhc2UyNC1tYWludAorMzg5MzEgNDRlM2YyMWYwNTI1OTBkZGZhYmMxMjkwOWFmNTE4OGE0Y2Q4OWQ4YyBsZWdhY3ktdHJ1bmsKKzM4OTMyIDFmYjc2OGViZDkwZTJiMmM2ZjVkNjViMTVhOTBkNGNhYmU0MGFmZGIgbGVnYWN5LXRydW5rCiszODkzMyA4ZTk2ODJmZDU3ZjhlYTY5MGNhNDcwMGU4YTM1ZGZjMTRlYWIyMjk2IGxlZ2FjeS10cnVuaworMzg5MzQgYjc0YTFhNTEyOTE3OGE2MWYzMjQ0ODU3YmYxYzM3NDA0YmUwMWEzMiByZWxlYXNlMjQtbWFpbnQKKzM4OTM1IGUzOTRmN2U4YTBjMTVmODcwNGIyN2NkNzEwODQ3Njc4NDU1NjQ3NTAgcmVsZWFzZTI0LW1haW50CiszODkzNiA0YTAyYTQzMTc2NTU1YmFjYTMwNDVkNTU1MmE2ZmM3MGFlYzIyOGQ0IGxlZ2FjeS10cnVuaworMzg5MzcgMjc1ODQzNjMwNTIyODZlMThjODc2MDMyYmZkMGYyZWViMTM5MzIyOSBsZWdhY3ktdHJ1bmsKKzM4OTM4IDkwZmNhMDgxNDVkMTE0OTdlNjVhMGY2NjE4NGJkNDI2MmY2MmJkZjMgYXN0LWJyYW5jaAorMzg5MzkgNjJlYWM4ZDk1M2NmMWEwZjA2MTk1NTkzODcwN2YxOGQ1NDhjNTVjNyBhc3QtYnJhbmNoCiszODk0MCBiYWM4OThkMzliNTM4ZjEyODJmNTViY2ExNzQ5ZDg4YjBiZjk0MzgxIGxlZ2FjeS10cnVuaworMzg5NDEgYjM4YzJhYTY2ZWU3YjNlNGE3NDlmZGUyMDQ1MWNmOTQ4ZTBiNDQwOSBsZWdhY3ktdHJ1bmsKKzM4OTQyIDc1ZmQ5YTUxNTRjNDYxZTFkODdkZWJlYjZkNzYxNjk0ZTUwM2Q5ZTkgbGVnYWN5LXRydW5rCiszODk0MyA0MGY3ZTFkYTFiZGZlNTUyZTU2Zjg3NDM1MDI1NjM2ZDlkMmQxMTMxIHJlbGVhc2UyNC1tYWludAorMzg5NDQgYmE0NzI3ZGEwN2U1NGViYTRmYThlMmYyNDhjZGE2MDA0NTA3ZWU3MiByZWxlYXNlMjQtbWFpbnQKKzM4OTQ1IGNiMmJlNDQyOWE0Y2ZkM2FjOGMxOTUyNGU2MTlkZDZkNGEzN2JjNmIgbGVnYWN5LXRydW5rCiszODk0NiBlYTVjMjI4MGY5MTU3NDIzN2YzZDQxYWExODhmZTAyYjViOTcwMjYzIGxlZ2FjeS10cnVuaworMzg5NDcgMGRmMDVlYWExZTA5NmVlY2JkMDIxMjdmMWU2NWI1OTM0NzM4NDEzZCBsZWdhY3ktdHJ1bmsKKzM4OTQ4IGFjNTZkMTdiYzNkMTcwY2IxYmY2ZWU5YTViMGYxZTg3MTk5ODRjNGUgcmVsZWFzZTI0LW1haW50CiszODk0OSBmY2YwMTBjMzcwY2JjZWI3N2MzNWZhYTQ4Yjc2MWY0MjUxMjhiMjA4IGxlZ2FjeS10cnVuaworMzg5NTAgNWExYTMxZDllMzdlM2MxMzlkZTk3YjliYWU0YWU4MThlNDcxNTZkMyBsZWdhY3ktdHJ1bmsKKzM4OTUxIDIxNWI3ODg1ZTEwODU0YzUxOTk3NzY2YzFlM2FjYWZiN2E3OTI0ZGQgbGVnYWN5LXRydW5rCiszODk1MiAzMjliMjhhODU5NDc0YTM1MDdmYTNmMjUxYmNhMjU2ZDk5ODBkODg5IGxlZ2FjeS10cnVuaworMzg5NTMgZTAzNzE0ODA0ODQ1YjkyOWU4Y2NlNWYwMDBhNjFkNGU1MjgyMTBiZSBsZWdhY3ktdHJ1bmsKKzM4OTU0IDhiZmViY2YwNjM2MzcwMTQ1MTFlMWU0YzBmNzljNzgwZjcwNzEwYTAgbGVnYWN5LXRydW5rCiszODk1NSBhNDliODhlNTAzMDU5OGY5NDMyMzQ5NWY0Y2VkZjFhNmE5ZmQ3MzA5IGxlZ2FjeS10cnVuaworMzg5NTYgYjczZjEzMGM3Yjg0MDU4ZTY3YTM1MjQ0ZTZiNDRmODBkYmFmNWQxYiBsZWdhY3ktdHJ1bmsKKzM4OTU3IGQ0ZGFhYmFiYWE0NWE1ZmRmNzQ1ZGYwZmRmZmM4MmI4NzE3MzU5OTkgbGVnYWN5LXRydW5rCiszODk1OCAyOWQzZGVmM2E1NmFiNWEyZGM0MGE4ODM1ZmU3MDNiNTUzMmVhNzhmIGxlZ2FjeS10cnVuaworMzg5NTkgZjNiMDIyMjJhODBhMjA0MzIyZWQ3NzgxZGE4ZjIxZjEyZjkyMDE1NSBsZWdhY3ktdHJ1bmsKKzM4OTYwIGM1NTg5OTg2M2I5Yzc5ZTljMDYyMjc5OTA0MWI5NzQxZjMyMTgyMzEgbGVnYWN5LXRydW5rCiszODk2MSAxOWE1MDkxZjI2NTgwNjQwNjUwNzhlMDU4Y2ZiMmRlNTRlZjFjZTM5IHJlbGVhc2UyNC1tYWludAorMzg5NjIgNTU1NDUxMWIzNzI1NDkxMWE2ODY0MTYyMWExNTNmMTQzODU4ZDFmZiBsZWdhY3ktdHJ1bmsKKzM4OTYzIDA4NzczNWY4NjcwMWMxOWQ0MzAxYWMwOTA3YzkyMDMwNjM3Njg1MzMgcmVsZWFzZTI0LW1haW50CiszODk2NCBkNjA0N2U1NWY3YWQzZDZjZTFmY2RjY2M5MmFhOTIxMTJmNzY1ZDg0IGxlZ2FjeS10cnVuaworMzg5NjUgM2I0MWJkODc4OTE4ZDAzMDk4ZjM0MWFhZTJkNzFmOTU4OTVlZmNhZiByZWxlYXNlMjQtbWFpbnQKKzM4OTY2IDE0OTBmODExZjkzYTk0YTU2MTEwOWU2NmIwZTA4MjZhZTNkNmZjYjUgbGVnYWN5LXRydW5rCiszODk2NyA3M2YyNGY1YzRlM2Y5MzI1OGYwYTNkZmYyZjAwMGFhOGQxZDA5NWNkIGxlZ2FjeS10cnVuaworMzg5NjggYzA1ZTQ1ZTg3MjRlMmZlNGEyYWQ0MDU2NzZlNTUzODMzY2M1NTU2MiByZWxlYXNlMjQtbWFpbnQKKzM4OTY5IDU1NTQ1ZTAyMzE5OWZjMDZhNTAxNmNmM2UyOTRiOTA3NjQ0NDUwZmIgbGVnYWN5LXRydW5rCiszODk3MCA1NjA4ODc0OTcyMWE4YWQ3YjdhODdlN2M5Y2UyOTczNWFhZmQ2M2M5IHJlbGVhc2UyNC1tYWludAorMzg5NzEgZDQzMGIyOTY0MWJhNDBiZTRmM2Y3ZDE3NmM3MTMxNWMyZjg4ZWEyMyBsZWdhY3ktdHJ1bmsKKzM4OTcyIDY2MjQ4OGQ0MTg3ZGI2ODhhMjUyNTBmZWE4YjczZTY4MDdmMWUyNzMgcmVsZWFzZTI0LW1haW50CiszODk3MyA4MjM3M2QyNTI1ZWUwYmRiYTQ5OTRkM2M1NTBmYjgwN2U4OWUzNDIzIGxlZ2FjeS10cnVuaworMzg5NzQgNWY3NjNmOWU1MGY5MzcwZGU4M2I4YjdiMmQ2ZDkyMTIwYjkyYzY4ZSBhc3QtYnJhbmNoCiszODk3NSBmMjMwMDdmOTIxN2IxMzVlMTBlYmM4ZTQwNzRkYjkxZDFkMTFiZjI2IGFzdC1icmFuY2gKKzM4OTc2IDhhZThlNjRjYTliZDRkODc1NGM5ZWZiOTkxNzQzZjc1OGI1MTgwOTMgbGVnYWN5LXRydW5rCiszODk3NyBlNzk3OTNhOGVlZWFiNWM5ODUyZjVjYzZjYzU4YWUwYjRkMmU0MTZiIGxlZ2FjeS10cnVuaworMzg5NzggNGZkYTQwNjNjYzhjYzJjN2NlNWZlOWQyNzNjYTAzMWU3MjFmNzI2ZiByZWxlYXNlMjQtbWFpbnQKKzM4OTc5IGVjNGMxNmZlNzM4NGNlZDU2NWE5YmNiY2VmOGJjZmFiNjYyZjcyN2IgbGVnYWN5LXRydW5rCiszODk4MCA1ZTQ1ZGNiZjdjZmZkMDRjM2UyZmY0MzFhYTQyNzUxY2I4Yjc0NzJiIGxlZ2FjeS10cnVuaworMzg5ODEgNzQ4YzhlMmQ0MGVlYzA1Y2Q1ZmUxOWFjMjg5ODc3MWY2NzI2ZWJjOCBsZWdhY3ktdHJ1bmsKKzM4OTgyIGNhNWVmN2VlM2Y0MTdhYzMxMWNjZjEwOTQ5YmY0NzFmYTg0ZmFhMzMgbGVnYWN5LXRydW5rCiszODk4MyBlZTk5ZGIwNmMwZWJjZmQ4NmFjNWRiOTNjNjYyYjRlM2IxMDE2M2QxIHJlbGVhc2UyNC1tYWludAorMzg5ODQgYzU1NTEwZGFlYmQyNTJkNDE3YjRhYTZiNjAwYTdmMDJmZDAyYzA5NCBsZWdhY3ktdHJ1bmsKKzM4OTg1IDgwNzY0MjRkNDU1ZDBlYjM3YjcxZTI0M2I0YTdhZmRjOWRjMWY4MGMgbGVnYWN5LXRydW5rCiszODk4NiAwNzhkYTQ3NGIzMDIxMzNhMzFjOWY4MmQ3Y2U5ZjNhOTA2ZmFkMmQ4IGxlZ2FjeS10cnVuaworMzg5ODcgMmViNTY5YjZjZTIzNGE4NmQ2OWJmZGRhNDBlMWQ5MTI0NmJiOGYzMSBsZWdhY3ktdHJ1bmsKKzM4OTg4IDkyNGUwMjgyYjU3ZTk4MzVlYzZhMTFmODdmZTQ4MGYxY2JiMWViMTcgbGVnYWN5LXRydW5rCiszODk4OSA5MmNkOTUxY2M0YjE4ZDhiMmEzYzg5Mzk0ZGE0YjhmM2ViMmUwN2UzIHJlbGVhc2UyNC1tYWludAorMzg5OTAgODUxNDU4ZmZmZDM0MjEwZjYyMGViMzgwZTExYzZhYTMzMzQ5NmEzYyBsZWdhY3ktdHJ1bmsKKzM4OTkxIDE3M2U5MGUwZDJlMzFkN2Q4YjQwNjY2MDA0NmM0NjYzNTc3ZWFmZDUgbGVnYWN5LXRydW5rCiszODk5MiBhYTFjNTM2NjYwN2Q2ZjVhOTRlOWQzMjdhZmRhYmQ0YTFjYmYyNWMwIGxlZ2FjeS10cnVuaworMzg5OTMgYTJiNTA0NWRmNGY4NTY4MGJmMGZkNmQwMDM4MzgwYmNlOGY4ZTU5NSByZWxlYXNlMjQtbWFpbnQKKzM4OTk0IDc0YTg0NThiMjI3NjAyZjliNGQ1NWY4ZDUwYWFjYTlhZmVkOWU5NTEgcmVsZWFzZTI0LW1haW50CiszODk5NSBhYmU1YTVlMzljY2M3ZGFkMjNmZGVhODljNzY3YmY5YmU0Nzk5NWU5IGxlZ2FjeS10cnVuaworMzg5OTYgOTFiOGNkYmZkN2I0NjU5NDAxZjlhZjE3NDhhZjQxNzZiZjZmNWJhOCByZWxlYXNlMjQtbWFpbnQKKzM4OTk3IDEzMzJmMmU3MDViMjE2ZWQxZjQ1ZWI5YjIzN2M2YTJiMDlhNzhjZTMgbGVnYWN5LXRydW5rCiszODk5OCA4MzVhYjA2OTg0YTljOGQ4ZjY1YTFjMTI3NDUzYWRlMWYzYzg0MTQ3IGxlZ2FjeS10cnVuaworMzg5OTkgNWZiMjE2MzIzMWQzMzVkNTljMTVhZjY0NWI3MWMwYWQ0ZTNiNmQwMSBsZWdhY3ktdHJ1bmsKKzM5MDAwIGRiMTY3NmZkYjViOTFjMDY0MDBjMzcyNGE4MmE2YzI0MzcwYmQ0NTMgbGVnYWN5LXRydW5rCiszOTAwMSBmODljYmU2OWRiNjNmYTI1YmFjOGFlYTY4NmRiMmFmNjczMzA3YzY5IHJlbGVhc2UyNC1tYWludAorMzkwMDIgNTFmZTI0MTM4NDg2ZTk1NGNjMjZiYjk0NTYzZTBiMzVlOWM4YzgzNyBsZWdhY3ktdHJ1bmsKKzM5MDAzIGM0MjVjZGM4YWU4YTdjYTg4NmMxYTg0ZDI0YTU1NTg4ZWE4YTI0Y2QgcmVsZWFzZTI0LW1haW50CiszOTAwNCA0ZjVkMjZmNWUzZTY0NTJmZDIxNTMzM2Y0NDlhZTk1NzNhOTAzZGFkIGxlZ2FjeS10cnVuaworMzkwMDUgNDY2NmI0NTc0YzljYjU4M2ZmYTY1MDNjMjM5M2E0OGE4MzVmZGRiNSBsZWdhY3ktdHJ1bmsKKzM5MDA2IDY5NjQ1ODI0MGE2NWVjNGMzN2Q4MDU2ZWM4MjgxOTNiODlhM2I5NjQgcmVsZWFzZTI0LW1haW50CiszOTAwNyAwYTlhNDEwYmY3NGNiYjAzOGI1NDZkNzllZGY4MmI4YzhjMzA5YTU3IGxlZ2FjeS10cnVuaworMzkwMDggMmI1MTg2YjU5NWIxYWRkZGRhN2YwNTIyZTkyYjA0NWFlODQxNTcwMiBsZWdhY3ktdHJ1bmsKKzM5MDA5IDI3YWE1ZWVjNTQwMDRkN2MzMjNlNjU3NjJkOTMzODU0YjlmOGY3MDUgbGVnYWN5LXRydW5rCiszOTAxMCBkMWJhYzIwYzBiOWY0ZTEyYmZjMTg4MGY0MjhlYjU1MDFlZjczMGFiIGxlZ2FjeS10cnVuaworMzkwMTEgYWJlOTY4NjMyNWMzOGJhMDgzNmIzMzc1ZTIyY2UwYzVhZTcxY2NiNSByZWxlYXNlMjQtbWFpbnQKKzM5MDEyIDIwMTVkMTZkMjY0NzA0NmI1MmZiZmYwNWU3NmM0ZjYyOGJhOTFmOTggbGVnYWN5LXRydW5rCiszOTAxMyBjNmI3ZmFkZjBhZGFlMjdmZWM1NTZhMGE0MzFmMjExYTZiYTQ1MmJhIGxlZ2FjeS10cnVuaworMzkwMTQgMTdjY2FjNjk1NDEzNDAwMGFjOTkzOWY0OGZkYjk0ZDdmMWVlNTNjMCBsZWdhY3ktdHJ1bmsKKzM5MDE1IDRhNWYxODFhYzMyNDA4YWQxZmVhZjZiYjk2YjM1ODY1NGM2ZTU4OTUgcmVsZWFzZTI0LW1haW50CiszOTAxNiBhNTM1ODcyOTVmMjA1OTY1OTYyMDNlZDFmOWJlZjgxMGViZWUwMTA2IGxlZ2FjeS10cnVuaworMzkwMTcgMzIzOGFlNmQyYjMwNDIzMzM5ZjM3MTM5NDgwYzZkMzFhM2ZiNmVkYyByZWxlYXNlMjQtbWFpbnQKKzM5MDE4IDQzODRlNTg3OTEyNjE0MTk5YzEzOTNkMmE3NDRkNzU5NzU1Y2M1OTIgbGVnYWN5LXRydW5rCiszOTAxOSA2OGJjZTY4YzhmOTMyNzhmZjViZGVkYzJjNWEwZmI5MDUxOGM2NDU2IHJlbGVhc2UyNC1tYWludAorMzkwMjAgYjJiZDA1YzAxYTM1MWNmODNiMmIxMWIxNzdmNDQwMTU1NTFhYzYzOCBsZWdhY3ktdHJ1bmsKKzM5MDIxIDk4MTc5YzgyODFjZGI2MTMyNjBhYzRkMmIzN2QxYjgyYzQ5ODY5ZDMgcmVsZWFzZTI0LW1haW50CiszOTAyMiA4MzQxY2VmZGVjYWNlOGMzMmFhZmU5OTJiMjE4ZDBmM2E0MTZlZDJmIGxlZ2FjeS10cnVuaworMzkwMjMgZjBhZTExOTRkYjY5ZWE1ZTVlMTdhM2Q4MWNkNjBhNWZjOGUyNzVmMSByZWxlYXNlMjQtbWFpbnQKKzM5MDI0IDg2MGQ3ZjkzZTZiNGM5YWVhNDViM2QyMGQwMWU5MDIxNGU2MDIwZWEgbGVnYWN5LXRydW5rCiszOTAyNSA1NmFjNDNkOWQ2MjU4YjFhNjA2YTU5MTBmOWY3YzY3ZTMzN2RlODQxIGxlZ2FjeS10cnVuaworMzkwMjYgMTcxNGMyNDk5MjhlZjhhMGQ1YTY2OTg1MGUzNzliOWZkMjA0YjBhNCBsZWdhY3ktdHJ1bmsKKzM5MDI3IDJkMDY5M2I5ZjBiZDhjNzk0ZDQ5ZmEzMDVkMGI0OTcyZWRjODc5OTIgbGVnYWN5LXRydW5rCiszOTAyOCBmNTU4OWZjM2Q5NzcxNDgzYjNkYWY4MjY5ZjdmMDI4ZDA1M2QwNDZlIGxlZ2FjeS10cnVuaworMzkwMjkgYWNmNjhmNjdiOTc1Yzc1MWFjYmJjNjBhYmQ1ZDljYWJiNTI0MzNhZCByZWxlYXNlMjQtbWFpbnQKKzM5MDMwIDIzNGIyMmEyYWNmM2I3OTYyZWFhMDQ3NGI3YzJlN2U1NzAwNTdjYjEgbGVnYWN5LXRydW5rCiszOTAzMSAyZTllNjQyYTU4Y2VkMWY4OWI0ZTRkODc4NGE4YTkyODAxN2I4OThiIGxlZ2FjeS10cnVuaworMzkwMzIgNGMyMzc2MjAxMTE1ZDVhYWI5MjQyMzBjOThkOGZkM2I3NDMzODk4YSBsZWdhY3ktdHJ1bmsKKzM5MDMzIDUyMmM5YTQ5MDQ0MTNjOTg5MzVlMWQyNzczMjNlMTViYjNmYjVmMDAgcmVsZWFzZTI0LW1haW50CiszOTAzNCAwOWE5MTBjYjZjOGZmMDNiODE1N2IyODk3OWRkMDdjNmRkOTIyMmQwIHJlbGVhc2UyNC1tYWludAorMzkwMzUgOTczYWE0ZWUxNjE1MmFkYTM3NjYyYWM2ZDBmNmJlNTI1ZWMzOTkwNyBsZWdhY3ktdHJ1bmsKKzM5MDM2IGI2ZDJhOWQxYTkzM2E3YzBmOGIzNTNmMzQyMTI3NDBjMzJjMzM5NDUgbGVnYWN5LXRydW5rCiszOTAzNyBmM2QzMTUxZjg0MTc5ZjFmZmI2ZWRmMWY1MjFlMDUxZjUwZjkwNDg1IHJlbGVhc2UyNC1tYWludAorMzkwMzggYWI4M2FiMjdjODM3YjY0MWMwYTM5YzRiMGUyMWI4ZTVjMzNlZGY4YSBsZWdhY3ktdHJ1bmsKKzM5MDM5IDU4NjMyMDkyZTAyMzI3MGM5YWYzNDFiZTQzYmI3NGMxMWJkYzY2ZTMgbGVnYWN5LXRydW5rCiszOTA0MCBhZGYxODllYjRmNThhOGU1OTczN2ZmZjA2ZTgyYzk0MTFmYzA2NTUwIGxlZ2FjeS10cnVuaworMzkwNDEgNTg1MDU5ZGUyYjQwNGFkZmM5YTliOWQyNjQ3ZjY2YmJhOGIyNzg0ZCBsZWdhY3ktdHJ1bmsKKzM5MDQyIGJmYzkxZDRhZjY0NTMyYTBlMWRhODU3MjY2ZjBmNTBlNjUxM2E1MGEgbGVnYWN5LXRydW5rCiszOTA0MyAyZmIwYzc2ZDAyNTFhMWE3MDI2NTg4MmZkODExMTU3NmY1ODNkOTk2IGxlZ2FjeS10cnVuaworMzkwNDQgN2VhMmJlMmMwZTFkZTBmN2FjOGJjZTg2MDBjYmQyYjE0NDcxZWNiNiBsZWdhY3ktdHJ1bmsKKzM5MDQ1IDJkODMzMTIzYjExOTA2MzhiODhjY2RmOTIwMmJkODk3Nzg1ZWQyOGYgbGVnYWN5LXRydW5rCiszOTA0NiAwNDg2ODk1OWYxZmU2ODMyY2M5OTQ5YTNjYmI1ZTNhMzM1N2E3YmZjIGxlZ2FjeS10cnVuaworMzkwNDcgZGE3NzIwMDdkMzRkODA1OWQ5NjIzYjI2MjRlOGJhNjAzYTdkOGY2MiByZWxlYXNlMjQtbWFpbnQKKzM5MDQ4IDBlYzcxMTUyYzdlMmJlMTAxZTE1OTJkYTdjNmY5MzFmOGE0MWIwMGUgbGVnYWN5LXRydW5rCiszOTA0OSAyZWU2M2ZmNDU5NzBmZGUzMzcwMjI4MDljYjkwNDhmZTUwMTlmYTU3IGxlZ2FjeS10cnVuaworMzkwNTAgNTM0ZjhlYTU3Mzc3ZWE4OTMxZDViMjk3YjZjN2NiNWU3NDlkMzA1OCBsZWdhY3ktdHJ1bmsKKzM5MDUxIGRiMmNmNzU5OTQ4YWYyNTEyYjVjMjAzYjBjNmZlNjRhNWQ5NGRiOWYgbGVnYWN5LXRydW5rCiszOTA1MiBjZGVjOTc4YjkxNmNlMjViNzE1MzBhZmYyMDVjOGQ4M2Y4YzY1OGIzIGxlZ2FjeS10cnVuaworMzkwNTMgNzA2ODEyNjdhNzRhOWE2Mzc2MTUzMTU1ZDc4N2I1OWNjZTVjMDg3OCBsZWdhY3ktdHJ1bmsKKzM5MDU0IDNlMGRkNjJlZTMxYmY3Y2Q4NjQ0NWZjZjM5OThmMzZjNjY4ZmUwYzYgbGVnYWN5LXRydW5rCiszOTA1NSAwMDg3YWYwOTUzZjRkYzVkYTllMjc1ZGViMjE1ZTM5YmRkMTJjNDI2IHJlbGVhc2UyNC1tYWludAorMzkwNTYgNWQzM2Q4M2U4ZGVjOGE5NGEwZDljYTM5ZTZmM2Q3MmU2OGExYjI0NSBsZWdhY3ktdHJ1bmsKKzM5MDU3IDZlOTM0NDJlMjZkZDAzZjQ5YjY1NWJjY2RjNjk2NTI3MWY0OGJhYjYgbGVnYWN5LXRydW5rCiszOTA1OCAwMTJhMGFkYTBkMDVmZTgyZjRhMzFhODI3MTU2ODVlYTY5OGNhOWRmIHJlbGVhc2UyNC1tYWludAorMzkwNTkgMmNiNjI4NjAwMDVmNjAwYTQwOWFkYmFmMDAwYzcxNTc0YzNmNjFjYyBsZWdhY3ktdHJ1bmsKKzM5MDYwIDg2ZTlmNjE2OTdkOGFmZGY0MTU3NTIxNGRlNGU3MmFjNWFhOTIyYTQgcmVsZWFzZTI0LW1haW50CiszOTA2MSA3N2RlMjFjY2QyMTBlNGEyZDI2OWIzZjJmNGE2OWUyNmRkYjg0ZDY2IGxlZ2FjeS10cnVuaworMzkwNjIgZGM2OGRlNzAzNzZiNDA3ZTlhZTcxMDQ3MTdiNmFlZGFiYjdjYWVmMiByZWxlYXNlMjQtbWFpbnQKKzM5MDYzIDM5YmI4YTQwYTJjODVlNWQ4YWUwYjI0ZGEwYzA4NzIyNTY5ODQwYjMgbGVnYWN5LXRydW5rCiszOTA2NCA4MjlmNjZkNTYxNDBjMjlmM2YwNGRkMmVjOWE4ODY0MzRkMzc0ZjA0IHJlbGVhc2UyNC1tYWludAorMzkwNjUgM2RkOGQ0MWVjMzUwMzAyMDgwNDAyYTZkY2E2OTg3ZjRlYWIzOTNkZCBsZWdhY3ktdHJ1bmsKKzM5MDY2IDMzYTRkN2U1YzgyZjJiY2JlNGQ1ZDQ1YmVjYzYyMGY1M2YzNjkyNzMgcmVsZWFzZTI0LW1haW50CiszOTA2NyBiYmI4NGI1ODU2ZmNlNGRlY2I1ZjJmZWNhZTY5MDU1MTM5ZWZjYjU4IGxlZ2FjeS10cnVuaworMzkwNjggZmIyZjVhYTRkNWFiMDFmNWY1NmRjZGI0OGY3ODM5NTQyNjg2MzRmNyByZWxlYXNlMjQtbWFpbnQKKzM5MDY5IDhkYmI3MzFiYWE2MGYwNjU0YWJjNGQ4OGE2MzFiNmUwYzRiODBhYWEgbGVnYWN5LXRydW5rCiszOTA3MCBkNjBhNTBhOTBmZDE1MGVlODIzNTNjNmZiYWJkN2YxZGFhN2UwMTBjIHJlbGVhc2UyNC1tYWludAorMzkwNzEgMzI1M2RiZDcyYjYwYWNkYWY4NjJjNTdhNzYwMjNiNmFjZDgxOTc4ZSBsZWdhY3ktdHJ1bmsKKzM5MDcyIGU1ZjYyZTA0OWM2ZmQ5MjEwYjQ4MGM0NDg4YjhhNTk0MDY3MDRiYTQgbGVnYWN5LXRydW5rCiszOTA3MyA5MTBiNWRiNDYyM2UzMWVhMDUwMWViZmUxYzM4MjEyNmQyMjc0MWY1IGxlZ2FjeS10cnVuaworMzkwNzQgOTkzMDk4MDJkNDkwNDhlZmNmZTY4OGRmNGQ4N2JmZGRiOGZlMmU0MSByZWxlYXNlMjQtbWFpbnQKKzM5MDc1IDI5ODVmYzYzMDlhODRhOWU2Y2IyZDlhMTNiNDkwM2YyYmYwOTkxNzcgbGVnYWN5LXRydW5rCiszOTA3NiBmODQwZjQ0NzAzMjUxOWQxMTU0NWNjYWZkNzhiZDRkYmY5NGM1MmMxIGxlZ2FjeS10cnVuaworMzkwNzcgYjg0MTM4ZDk4Y2ZhMDNmZDkwMTUwMzYxZThlM2FmMmM0Y2ZiNzg2OCBsZWdhY3ktdHJ1bmsKKzM5MDc4IDcyOGEwZGU4ODM5NWMyMzBmNjZhNDJhOTlmNTA0NGIzYjY5Mjk2MGUgcmVsZWFzZTI0LW1haW50CiszOTA3OSAwNmM3NjI3MjI4OTJiOGNjZDJiZjUwNTUyZDhiZTBkMDZiZWMyYmExIGxlZ2FjeS10cnVuaworMzkwODAgNGQxZGE2MzYxMmViNWM5ZGU4NzQ0ZjViN2Y4YzQyNmRiODA0Yzk0OSByZWxlYXNlMjQtbWFpbnQKKzM5MDgxIGEzMWE3NzBiYjc3ODU4NzRlNDQ3MTE4MzdhMGUzYTBiNWMwYzJhNTMgbGVnYWN5LXRydW5rCiszOTA4MiBmNTQ3M2E3NjJiNTAxNmI2MmFhNTNjODZmYjI0Y2I4MTE2OTczMDI0IHJlbGVhc2UyNC1tYWludAorMzkwODMgM2M2YWVkM2YzYTMxMDJiYmIxYzMyYmRmZTI3MzJjYWJjZDM5MzUyMSBsZWdhY3ktdHJ1bmsKKzM5MDg0IDgxY2EzNWFkOTE5OWU4ODE0ODJkMWFmOTk5ZWZiZjFmODM1ODQxZTMgbGVnYWN5LXRydW5rCiszOTA4NSBkYWViZmRlMGUxY2YxYzQzZThhY2I2MWQxYjI2ZmRiNDdkMmMzYWM3IHJlbGVhc2UyNC1tYWludAorMzkwODYgYzgyYjc0NmM0MjhmOGIzYmI0N2E4NWZjNGYwMjUyM2M3YjM1NTg3OCBsZWdhY3ktdHJ1bmsKKzM5MDg3IGY3YzA4OGE4YjVkM2M4MTlkMzkyOTc5MjczNzlmZDk4NDJiZjQ4MDEgcmVsZWFzZTI0LW1haW50CiszOTA4OCBiMzNhNzI2NDQ1NGYwNjAxOWViNzE5N2Q5YWJmZjMwM2Y3ZjUxMmMyIGxlZ2FjeS10cnVuaworMzkwODkgYzU3NDI4MmQ1MGJmZWU0MGMzYjRlZTE3MTc1NDQ0OWM5MDhkYmZmYyByZWxlYXNlMjQtbWFpbnQKKzM5MDkwIDk4Zjk2ZjA3ZDU0OTg4NTM4MTNhMDM5YTY0YWMwZDFhNmExOGFhZTggbGVnYWN5LXRydW5rCiszOTA5MSA5YTgxMmViOGEwYWIyODZlNmM2YjMzMGZkYTI0YzBiYjlmOTJkOWIwIHJlbGVhc2UyNC1tYWludAorMzkwOTIgNzM5MDMyYmU5NmQ1ZDkwNWZkMzhiMDE1ZjU0NzVmYmViYjJmODU0OCBsZWdhY3ktdHJ1bmsKKzM5MDkzIDZhZDNmODYwMzQ2ZTk5M2EyZTI3M2EzZGMyODk3NzEyY2E2OGUwYjkgcmVsZWFzZTI0LW1haW50CiszOTA5NCAwMjFhNGFiZjdmMjc0YjMyNDUzNjRjOWI3NDE4NDQ4MzAzZDM1Mzg3IGxlZ2FjeS10cnVuaworMzkwOTUgMWE3MGNiZjc1OWNhZTUyMDdhMmQyYTc5YzQxOTVlNGRiYWJmN2M1NCBsZWdhY3ktdHJ1bmsKKzM5MDk2IGQ1NzQyOGU4NThmYzBkMDRmY2YwM2ExNWM3OTE4YmIxMTlkMjIyN2EgcmVsZWFzZTI0LW1haW50CiszOTA5NyBlYWZhMTNiZWVmMjY0NmRjM2E1YTQ2MWEyZDkxZGNhOGE2MTAzYzBjIGxlZ2FjeS10cnVuaworMzkwOTggZDZhMThhMzNiZDYyNTZmNzIyM2ZhMzlkMzQ3MjhkMjdiNTQ3Mjg2MiBsZWdhY3ktdHJ1bmsKKzM5MDk5IDc5OTA0NTVlNmFlMGEwZDZkM2FhMTYwOTNiMzliOTVhYWIzYjcwZjMgcmVsZWFzZTI0LW1haW50CiszOTEwMCA5ZTQ5MjczYTEzMzQzOTZhMDdmMjNiOWY3ODcxZjUyZWIwZTA4ZjgwIGxlZ2FjeS10cnVuaworMzkxMDEgMTIyODdlZmE4Nzc3ZjcyMmE3YTUyMjFhZWFkNDc4YzJhYjhkMGVkMiByZWxlYXNlMjQtbWFpbnQKKzM5MTAyIDBmYzI5MDAyNjkzOWE2YzBkODMwN2Q5MTVkNGZjM2U1OTMxYjUzNDMgbGVnYWN5LXRydW5rCiszOTEwMyA4ZmM1ZDZiYzM1ZmZkZTIyM2RkOTg1YTE1Mzg5ODcwNjY5NDA4OWU4IGxlZ2FjeS10cnVuaworMzkxMDQgMjdhNzE4MjIxZTcyZTc4NGY0MWExNjE4NzZmZWNmMjk2MjE5ZWViMiBsZWdhY3ktdHJ1bmsKKzM5MTA1IGNmN2E4NDljZTYxZmE2MDVmOTQxZGFkYzQxMTAxNzFjNGE5YmQ0NmUgbGVnYWN5LXRydW5rCiszOTEwNiA2OTUyODNjYmU0M2ZjOTBjMzc4NTU0N2UyY2U5OWM5ZWM0MzkzNjZjIGxlZ2FjeS10cnVuaworMzkxMDcgMTZkZmUxNTJiOWU2ZGE1ZjQyM2RjMjBmYzU0MzcwN2U1ZGY3MDFkZiBsZWdhY3ktdHJ1bmsKKzM5MTA4IDMwYjEzNDAxYzkxMjU2NDA4ODM0NTg5NzFlOGQ0MzQyNDU1NjdmMzEgcmVsZWFzZTI0LW1haW50CiszOTEwOSA5ZTRiZjI5ZTZjMmZjZDNhOGFlNDdmNjJiNDlhZDQwYjc0ZTdkNTc3IGxlZ2FjeS10cnVuaworMzkxMTAgZDdjNWJkNTk2OThkMDY4OGYwOTAxODdhM2NjM2QzY2MzNDg2ODgxMyBsZWdhY3ktdHJ1bmsKKzM5MTExIGU2YjA3NWJkNzg1NWFmNTRhNTY1ZGMzMWE1OWM0MDdiODAzMTBmYmEgbGVnYWN5LXRydW5rCiszOTExMiBiMDVjYzEyYTIxNzlmMjk0MTczNjU0NDFiMGQ0ZGMxYTFmNmQ5M2YyIHJlbGVhc2UyNC1tYWludAorMzkxMTMgYTIwNDNhZmZkNTQzMzAyMTE0NWI5NzliY2NmNDg1Mzk5NTYzYjg0OSBsZWdhY3ktdHJ1bmsKKzM5MTE0IDVkOTc3ZDdjYzMzNTY5NzE0ZGYwNzM1MmFjMDVkNWJiMDAyNzAzZWYgcmVsZWFzZTI0LW1haW50CiszOTExNSAxODE4NGQ4MmRhZWFhMTlhYjQ4ODc1ODgxMDRjOGZmOTQ5MzBlZWU3IGxlZ2FjeS10cnVuaworMzkxMTYgOWQxZTQ2MTExZDlhNzA4MjVkYjRjMGI5NmNkYmI1N2U4N2ZhZjE5NiByZWxlYXNlMjQtbWFpbnQKKzM5MTE3IGY4ZjE1ZTZhZWYzYTRhYTkzODMwMWRkZjUzM2U1ZDgxN2YzYmY0MTkgbGVnYWN5LXRydW5rCiszOTExOCA4ZjdlNDdhMGFhY2FiNmM4MDUyOWEwZDg0N2M5YTRkMDg4MGVhMGM0IHJlbGVhc2UyNC1tYWludAorMzkxMTkgNjgyNjY4MDNjMDEzNGQ0Mzk4YjM5NTQwNGNmMDMyOGFhYTI2NDAzOSBsZWdhY3ktdHJ1bmsKKzM5MTIwIGQwN2U5YzM3YmVhMDllMWI4MGIwYzQ3NjNmNGFiNDQwMDMyMTE4NTcgcmVsZWFzZTI0LW1haW50CiszOTEyMSAyMTBjYTM4M2FiZTc2MjBkNzhmNDIyMzVkN2ZhNTkwN2NhYjVmZTFlIGxlZ2FjeS10cnVuaworMzkxMjIgNzgwNGJiYjI2NDkyOGVkYzA0ZjBkMjVjY2JhYjcxM2M2ODdiNjJhMSByZWxlYXNlMjQtbWFpbnQKKzM5MTIzIDQ3NDE4NTAyOTQyYTg1YWI2YTMxOTVlYmE4MGU2MTE0NjlhZWViMjIgbGVnYWN5LXRydW5rCiszOTEyNCAyZjljZmVjYTI3OTk2Y2RmZmEyYzcxZTI0NTEyMzlkNjNmYjE4MjgyIHJlbGVhc2UyNC1tYWludAorMzkxMjUgY2Q4NzljYTg0NjI0NDg2ZGMxZGE0ODU3MDNlZjQ2ZjM1YmM2ZmU3YiBsZWdhY3ktdHJ1bmsKKzM5MTI2IDcyNmM5YmM0OWMwNDhhYWYyMWZmOTAwOWI2YWI5OWJkM2VlMGQzYmIgbGVnYWN5LXRydW5rCiszOTEyNyA1ZGYxYzY5MmJiNDE2NjY0NGViYzBlZDkxNzc2ZmI3YmZlYmM5MjIxIGxlZ2FjeS10cnVuaworMzkxMjggZTAyMDg3YWM0NzkyNjgwMTk2ZjE5MjUxZjZhZDY4ZjcyZDc5YTBmMiBsZWdhY3ktdHJ1bmsKKzM5MTI5IDMzNDA1MzY0MzZmNWEwZTI4MjU1MDQxYThkNjNmZDdjZjlmMjQzMTMgcmVsZWFzZTI0LW1haW50CiszOTEzMCBjNTg4ODQxMzQxMmI5NGViY2ZjMDZlMWNlMjM4ZGI4OTc2NmRkNTU2IGxlZ2FjeS10cnVuaworMzkxMzEgZjk0ZDViZmFkMDc4ZjgxYmMyNTQ4NjUxNDM5NDM1NWEzYTVlYTI0MCByZWxlYXNlMjQtbWFpbnQKKzM5MTMyIGUyNjM2ZDEwOGQ3ZDA5YTY1ZDhlOTk2ZmFhZDAzMTMxZWNiZjliYTcgbGVnYWN5LXRydW5rCiszOTEzMyA4OTcxMDgwNWJjM2RlZmU4NjI0ZmVmMTJhYzVlZDI0ZTJjNDdhYjgyIGxlZ2FjeS10cnVuaworMzkxMzQgZDZjODc2MWQ3ZjMxNDc1ZTAxZDVkNzE1ZDYyOWVmZGM3YmRkYTllNiBsZWdhY3ktdHJ1bmsKKzM5MTM1IDY2NmMwZWQ0ZmI5ZDQ4MGVlY2NiMmNiZjFlODM1MzNhNGUzZGZhMTAgbGVnYWN5LXRydW5rCiszOTEzNiA4NTc4NzFjNzFjM2JiOTA3NmIwYjM5ZTM3ZGVlNjEwZWMzZGFkM2MwIGxlZ2FjeS10cnVuaworMzkxMzcgYzg1NzA3MGU5N2U4ZDFlM2E3NTQ0OTQ4YjhkZmI2N2Q4MWM5NDNlNCBsZWdhY3ktdHJ1bmsKKzM5MTM4IGIzY2I2NDI4OWQyYmUyNDc2ODBmYzJiMWFkM2ZlNjBhMThkZDg0ZTggYXN0LWJyYW5jaAorMzkxMzkgMjc2MGEyZDk5MjM4ZjEyMWMxOTQyZjA3NzFiMThmYjI3OTIzNTlhOSBhc3QtYnJhbmNoCiszOTE0MCA1YjIzYTVkY2M2YTNmZjJiNmY4OGU2ZWEwOWIyNGVkNjQyYmUzNzAyIGxlZ2FjeS10cnVuaworMzkxNDEgZmRjZGU1OWRmYTFiZDg5ZjI2ZmYxM2NiNWEzZDBkMTZhNmJiMzU2YyBsZWdhY3ktdHJ1bmsKKzM5MTQyIDczZTZjYjVmNDAzOWU2YzBkYTU5NWU4M2VkMjk5YTdmNTY3NWE2NDAgbGVnYWN5LXRydW5rCiszOTE0MyAzYjVmNTQ2NmYxMDVlYWFjMmM3YzM5NWJkNTEyNDZiMmI5YWVmMWI3IGxlZ2FjeS10cnVuaworMzkxNDQgNzM0OTI1YjQ2YmE3ZTQ3ZGY3YjhlYTg3YTVlNzZlYTJjNTkxODQ3YSByZWxlYXNlMjQtbWFpbnQKKzM5MTQ1IDkyNDEyMTg5OTJjMWUwNjcxNmIzZmY4MTFhYjQwZTNlMjE1YzFjN2QgcmVsZWFzZTI0LW1haW50CiszOTE0NiBiODYzOTJmNTViNTk3ZWY0MzM3NjAxN2M5ODBhMjFkNjQ0MGRhYTVlIGxlZ2FjeS10cnVuaworMzkxNDcgYjhjOTA3NmQxNzRlOTJjNTNkYTAxZTgyNjE0ODkxMTJiODRlMjYzMSBsZWdhY3ktdHJ1bmsKKzM5MTQ4IDU4ZDVhNmM3YjYyOTBmYzAwODhjZTE5Njg0Y2M3OTNjM2UxMDliMzcgcmVsZWFzZTI0LW1haW50CiszOTE0OSA0YmY5OWVmMDZkMzhkYjM2NjE3MGFhNGQwN2Y5YzE3OTVkMzk3NjZmIGxlZ2FjeS10cnVuaworMzkxNTAgMzFkOTU1YWIyMjMyZWM5ZWY2MWNhNjI3YjBmNzQ0OTFlZGVmYmZlOSBsZWdhY3ktdHJ1bmsKKzM5MTUxIDljMTg4ZmY2MzEzMTk3NmMyOGQ0ZmQ4Nzc1Y2I0MDM4OTIzNDQ1YzMgYXN0LWJyYW5jaAorMzkxNTIgODEyN2E1NWE1N2NiN2JkNzgwYTU0ZDE0MTE0ZDE4NzdiYzNiNjQ3ZSBhc3QtYnJhbmNoCiszOTE1MyA5ZWNmMDNkZmQ1ZDYxNzdiMjNkNjBmZTJjN2QwNWE3ZGFkNjVmYzBjIGFzdC1icmFuY2gKKzM5MTU0IGQyNTY1NmFiM2UxZDAzYWU4MGJjMzU5YTYzMTNiMGQ1NzAzNGFkZjggYXN0LWJyYW5jaAorMzkxNTUgYWEyZjJmYWVmN2QyOTFkYTdkYzA0NzZmNmJjZTdlOGRhYjJjYzMzZSBhc3QtYnJhbmNoCiszOTE1NiA4ZDBkMzk1YzIxMWVkNzk2YTkyYWExZTAzZDk0NTg3YzNjM2JkMGQ3IHJlbGVhc2UyNC1tYWludAorMzkxNTcgZTA1OTg5ODNmMGE1ZjYyMzk3ODcwOWE4NmJhMjE2MjUyNWUwNzg0OCBsZWdhY3ktdHJ1bmsKKzM5MTU4IGUxZjdmY2E3ODRmM2E2ZmEzNDUyMjdjYzIxOTY1NmMxYjY0ODI2NDMgcmVsZWFzZTI0LW1haW50CiszOTE1OSBkZGQ3OGVhMzUxOWM1MWFjYmFhYjg0NzNhYjU4ZTQxNzM5N2QyNDNhIGxlZ2FjeS10cnVuaworMzkxNjAgOTU1ZDRiYWRkYmZjODY1OWEyODdkNmUxODcxOGM4NjdmYmNiNDkyZCBsZWdhY3ktdHJ1bmsKKzM5MTYxIDIxNGM5NmU1NDkwNTBiYWMzYWE5YTBiZjY4YTZlZGYzMjQ4N2FjNDcgcmVsZWFzZTI0LW1haW50CiszOTE2MiBiNjcwMGIzZGU2OTU1ZDUxZDJiNjA5ZDRlZjM0MWZmYTYxM2UwMjAxIGxlZ2FjeS10cnVuaworMzkxNjMgZGI3NjgzMTI5OWQwMDA4NWY5ZGFkNzI0ZDMyMmMxMWJhNzQwYjMxNSByZWxlYXNlMjQtbWFpbnQKKzM5MTY0IDM1NTkyYmFkMzQ1YmRlZDdhNDljOTlhYTk1MzAwOGMwNTdiYWNiYjkgbGVnYWN5LXRydW5rCiszOTE2NSA3NjNlODViMTA3YjQwZGJiYTk1NjUxY2M1ZGE0MjBlNjRlODM4NTE4IGxlZ2FjeS10cnVuaworMzkxNjYgNTdhNGQyNzQ2NjMyMzg0NmQ5NzNhNWZhMGE4MDc2Y2NlZmQwODFmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTY3IDg0N2U1OGRkYjdkOWVlNmY4ZDhjNzJiZWIyZWQ1MTFjMGE3ZmJlMWIgbGVnYWN5LXRydW5rCiszOTE2OCBhY2U3ZDgzNjA4M2ZlNzQxMDE3M2U2M2NlMDhiZjQ2MDFhYjVmMDA2IGxlZ2FjeS10cnVuaworMzkxNjkgZjljNWFlNjljMTZlZTJiNWExZDI4ZGQwM2I2NzIwMWJkZmVhMWViMiBsZWdhY3ktdHJ1bmsKKzM5MTcwIGQwYzY5NjViNTI1ZWNiYWVlODdiMGViM2UxNmI3Zjc1N2Q0OTdmOTIgbGVnYWN5LXRydW5rCiszOTE3MSBjMDg4ZWNhOTBhNjM1MDkyMTRhY2M0OTgyYzg2YTllMmZiMTIxMzI5IGxlZ2FjeS10cnVuaworMzkxNzIgNTI2ZmFhYWIwMGViOTUxOWRmZTdmMGQ5Zjk4ZWNlY2JjNGViYmNjMiBsZWdhY3ktdHJ1bmsKKzM5MTczIDFmZGJjYTM1MTQ5ODlkODE3ZDJmZDQ5MmQwZDRhMjNjZjJiYzVkNDggYXN0LWJyYW5jaAorMzkxNzQgYTBjMzFiNzBiZDE4MGY3OGY2ODM4NWEyZWU3MTYxNWNhZDJmZjYzZCBhc3QtYnJhbmNoCiszOTE3NSAwOWU4OGZkN2Q1NWE2OGExZjEwZGE0YWU3NTVjNDA3YjljZTkzNzhhIGxlZ2FjeS10cnVuaworMzkxNzYgYjczNWViNDI2N2U4Zjk0Y2FkOTAxMGQxMzNmNzI2YzQ0MTI4YmM0YSByZWxlYXNlMjQtbWFpbnQKKzM5MTc3IDdiNjQzNmQyMzQ0ZDFmNDVmYjZjZjNmY2U3MDg4YmYxOWIxNzM1Y2EgbGVnYWN5LXRydW5rCiszOTE3OCA3NGMzNzE3NjYxMjFjODE2M2UwNTk2NGFjZjE5NmJjMGFhZWU2NDFiIHJlbGVhc2UyNC1tYWludAorMzkxNzkgY2Q1OTVhNjlkY2E1Y2EyZDk0ODY2YTIxODA1Yjk2YzEwYmI1N2FmZiBsZWdhY3ktdHJ1bmsKKzM5MTgwIDkxOWYyZDEzMTk4MmI4YjE1ZGU5ZjA0NTIyODVhNDFlYzE0NzYzYTAgcmVsZWFzZTI0LW1haW50CiszOTE4MSA1NTgxNjNjYjcwYTk2ODJmMzczOTdlZmJkMGVjMjA4YTYxYWEyNGZjIHJlbGVhc2UyNC1tYWludAorMzkxODIgNjJmODE5NDgzMjkzOWJlMTRmMmJlZGE3YWI0ZDdmMjJiZTM0YmE2ZiBsZWdhY3ktdHJ1bmsKKzM5MTgzIDE5NDk3MjJmMzc4NzRkMjM2NzkxZTU0NDIwZTlhZTA2NzZmMmM1YmIgbGVnYWN5LXRydW5rCiszOTE4NCA4NzU2OTczYTZiOTkxMjRjOWNkMDk1ZWJiMTcyYzI2ZDEyZmY2MDMxIHJlbGVhc2UyNC1tYWludAorMzkxODUgYzZiNjljNmQwMWEzNzdkNGM5MzU1YzYxMmNlNjIyNGNmYmU4MzRlOCByZWxlYXNlMjQtbWFpbnQKKzM5MTg2IDk1YTlmZjQ3YjExZDAzOTkyOTc5OTM5MTU4NmYyZmU2M2VmMmUxYmIgbGVnYWN5LXRydW5rCiszOTE4NyBhNDk4ZGNhYWU5ZDc4MjY5YjQ0NTBhZTg4YTVlOWRlMmE5NjliY2VkIGxlZ2FjeS10cnVuaworMzkxODggMDI3ZTAwMGQxZjZkZjBlMDQxMTNmYWEyY2NjNDRjMWM5MTUyNzk4YSByZWxlYXNlMjQtbWFpbnQKKzM5MTg5IDMyZGU3YThkODg2Y2NkZjRjNTllYWZjNWUyZDE3ZTY1NzNlMzM1NGYgbGVnYWN5LXRydW5rCiszOTE5MCAwN2IwMWIzMzQwZjljMjU0MjZiOWMyMGI0MjcwYjgzZjliZjZlNzU3IGFzdC1icmFuY2gKKzM5MTkxIDNhNmVlZjMxZTk1YWUyNTUwN2ZjMzAzMTIzMTJmNDNhMTM1YTg1NDYgYXN0LWJyYW5jaAorMzkxOTIgZDYxZWZjZDg3YzhlMzgzNmNjNjUxZjI4YTMzZDE3NjVlNjRkNjdkZiBsZWdhY3ktdHJ1bmsKKzM5MTkzIGQ0NzZlNThjYzdlNzQ1YzljMGJhNDYzOTAzNjRmMzkzNTM1OTY3ZGUgcmVsZWFzZTI0LW1haW50CiszOTE5NCA5MmIzN2M3MWY5MzVlYWJjNDYxYzA3MGYyYjgwMmY5NDhjNDM5OWQxIGxlZ2FjeS10cnVuaworMzkxOTUgNzRmODIwMmQ4MzE1MDEzN2M4YzM5ZWUxMTBhZDkxYWU5NTQ0ZDNmMiByZWxlYXNlMjQtbWFpbnQKKzM5MTk2IGM1MmNkMWZkOTRmYzU0YmI4NGVkMjU2ZGQyZGJlMzJmYzJiOGFmNWIgbGVnYWN5LXRydW5rCiszOTE5NyAzZjg2ZjhjYmEwNWVkNTY4OTAyODcxYTE3NzZkM2RlMTZhZTc0YTk0IHJlbGVhc2UyNC1tYWludAorMzkxOTggN2UxYzFkNmRlYTFjMzE2OWEzYjBlMWE4NGFkMzU5NjQ4MGRjYTFjMSBsZWdhY3ktdHJ1bmsKKzM5MTk5IDk2OGQ5NDIyYWY3ODdmZTZmZjFhN2YzMzAxNDY4OTVmODNiNjZjMTQgcmVsZWFzZTI0LW1haW50CiszOTIwMCA3MjhmODJiZWJjM2ViZDY2M2YyMzcyMThkNWZkNzJkMzlhNTU0N2YzIGxlZ2FjeS10cnVuaworMzkyMDEgODc5Yzg3NmJjNTdhMzg5ODM2M2Y1YTcxYmY4ZDA3MTYzMTZjNWZlYiByZWxlYXNlMjQtbWFpbnQKKzM5MjAyIGI0MzFlZDdiY2RjMjI1MGFmMTZkOTAzNDUwNjhmZDg2NGIxYjEzYzQgbGVnYWN5LXRydW5rCiszOTIwMyA4NjBlMGZkMmZlZThlZjY5Yjk0YWNhMWYwNzI2ZGY3MDUyYWY5OGVjIHJlbGVhc2UyNC1tYWludAorMzkyMDQgYWVlYzM5ZmVkOGM1YzE2Zjc2NWFjMzk0MjVkMWYyMWY2ODcyMTFmYSBsZWdhY3ktdHJ1bmsKKzM5MjA1IGZhYWQwOTZkZWNmNmFiNGQxZTRmYWViMTBlMzg3ODQ2OWIxNzgzYTEgbGVnYWN5LXRydW5rCiszOTIwNiA5ZjQzNjU1MTIzMjYwMjQxZTAyNjVhMzU2NmU3ZDZlYmY0YWI0MDM3IHJlbGVhc2UyNC1tYWludAorMzkyMDcgMmIxMTdlYjE4OTQ0ZDIyNDQ5Y2NiYzA5YjYyN2Y5MzRkNzRkNjI5OCBsZWdhY3ktdHJ1bmsKKzM5MjA4IGU3ODk3MDNmZTRiZWU0YWEyMjU2ODcyZjhhZDdiYjdlZmY4NTkyY2IgcmVsZWFzZTI0LW1haW50CiszOTIwOSBhOTE3ZTJjNDc2ZjY2MTg4MTJkYzU5MzNkMTdhZDQyOTY3MjQ1NDU1IHJlbGVhc2UyNC1tYWludAorMzkyMTAgMWFjMmMzYTFjM2FjM2QzOWQ0ZDdkZGNmMGVjMDE1NjYwYjg4YTc3NSBsZWdhY3ktdHJ1bmsKKzM5MjExIDlkODM4ZGQ5NjdiMmIyMmFmZjFmMzMxNzlmNGQ1NWRkYmU3ZTg0ZDQgcmVsZWFzZTI0LW1haW50CiszOTIxMiBiZTZhYjNkODZjMjkyNWFkOGVkMDdlNmJkMTA4NjJhZDE2YjgzOWMwIHJlbGVhc2UyNC1tYWludAorMzkyMTMgNTNhYjUxNjNjMWFhYTE5NTNlYmIxYWQxZDFlN2QxMWJmN2FkMDY2OCByZWxlYXNlMjQtbWFpbnQKKzM5MjE0IDRhZGJkMzMxZDMzNTJlYjVmYWZkNzJmY2I1ODllNTEyZjRiMzVkYjIgbGVnYWN5LXRydW5rCiszOTIxNSA2ZWJjNDIzZjJkODFjZTkwYTQ0ODkwZTZmYmY1YTI4ZGRjYTUxNWY2IGxlZ2FjeS10cnVuaworMzkyMTYgOTcwN2JhMjc4ODk0MWEwM2UzZDY5MmJmNGIzYjU4NjAyNmE4NDYyYSByZWxlYXNlMjQtbWFpbnQKKzM5MjE3IDUyYWNiYjg1ODRlYWViNDYxYTc5NjlhMGU4MGM3ZjhhODIzODk5NGMgbGVnYWN5LXRydW5rCiszOTIxOCBjYTY2YTE2YzM3OWRjMjEwNzM5YzEwMmQ1YzA1NzcxYjEwZWRkNmYxIHJlbGVhc2UyNC1tYWludAorMzkyMTkgNDJjZmU0NjAzYzMwYzAwMTcyOTM1YzZmOTljOGM5YzU5YTEzN2NhMCBsZWdhY3ktdHJ1bmsKKzM5MjIwIGVkZjI1YzFhNGY2MDhjNGRiMzg5NTVlOTdlNjJlZTI0MmRmODk5NzYgcmVsZWFzZTI0LW1haW50CiszOTIyMSBmOGU2MGEzZjM0NDA5ZTlmODFmYmFjYzUyNzZmNTY3OTBmNTVmY2E3IGxlZ2FjeS10cnVuaworMzkyMjIgYzhiZDNiNTIzMGM0MjVjYTQ4NWJkODQ2NWZjOTdiOWU0ZWEzMGE0ZSBsZWdhY3ktdHJ1bmsKKzM5MjIzIGI0ZTU3MDMzN2JmNDc3ZTIzNmQ3ZDNmNmNhMjVjOTAzOTUyNTljNTIgYXN0LWJyYW5jaAorMzkyMjQgMzE0NDdhZGIxYjM1ZWMwYmEwOTM0ODI5YWNkYTliY2MwNDM1MzNmNiBhc3QtYnJhbmNoCiszOTIyNSAxNzc0ZmU3ZWMwYzdjNzBkODUwOWFjMzY1YjhiNTQ5MDc4OWFmMTJhIGxlZ2FjeS10cnVuaworMzkyMjYgODVhMzVmODcwMWIzYmI2OWExNTdjZDBlMjUxZjQ2ZjMxZGQxZWZhMCBhc3QtYnJhbmNoCiszOTIyNyAyOThkM2ZhNGVjMzlkZDE4MDJlZjc5YzNhMzdiOTQyYzMwOTFkZTM0IGxlZ2FjeS10cnVuaworMzkyMjggMmZlZWRmODUwNzg5ZDA3NTNlMmYxZGQ0MGFiOTJiNWI2NDFlYmJhYSBsZWdhY3ktdHJ1bmsKKzM5MjI5IDYzNmU1ZjFkYTczM2Q3Yjc0N2JkYTljNzczZDQ2NzU0ZTE3Mzc1ZTIgbGVnYWN5LXRydW5rCiszOTIzMCA3YTUwYmQ4MmRmMjVmMmJlOWUzZmFhYTgyMjJlN2Q3NzViNWZmY2Y1IGxlZ2FjeS10cnVuaworMzkyMzEgMzQ5YTBmZDU5OGUwNzlkMjE3Y2VkZTlkMmI4MjYzOGJkYTY2NWQwYiByZWxlYXNlMjQtbWFpbnQKKzM5MjMyIGM2YzI0ZmYxZTNkYTU5MjhhYzFmODBjMjI4ODUxMjcyYTQ4NDAxNDggbGVnYWN5LXRydW5rCiszOTIzMyAzNWE2OTgzMDJjNjNjNWIxZjA2ODU5YTc4YWQ4NzFjOTgzOGM0YjE2IGxlZ2FjeS10cnVuaworMzkyMzQgOGZmZmI0Yzk1NDg3ZWUyMzczMDg3YjcyMzY4Zjk5MGQxYjljMzQzZSBsZWdhY3ktdHJ1bmsKKzM5MjM1IDNmMWI0OGY5ZmYwZGE5ZjM0N2NkMDExNTQ2MThhYzRlOGM5NTIyNDIgbGVnYWN5LXRydW5rCiszOTIzNiBmMzBlYmRjM2JkZGY3OWIxZmNiYjYzN2Y3ZjIxYzg4Y2VjYTAxYjFkIGxlZ2FjeS10cnVuaworMzkyMzcgZDkxOTY0ZjVmZTBkNmJjYjBkMmFlNDAwMjRlMjc0ZDBlM2EyYTcxYyBsZWdhY3ktdHJ1bmsKKzM5MjM4IDI2YmY2YzI3ZTljZWE1ZWY1MzdlODZlZWRhZmIxYzU5NjFkZTA1MDEgbGVnYWN5LXRydW5rCiszOTIzOSBiMmZlNWY4ZmNmZGRjODRiMWEwMzRjNDI0NWI3ODQyYzMyM2E3ZjczIGxlZ2FjeS10cnVuaworMzkyNDAgNWE5MTM0ZmU1NzA5MDYwYTIzYWEyN2JlNmEyOTU4ZTVlZTc5YmE5MyBsZWdhY3ktdHJ1bmsKKzM5MjQxIDA5OTEyOGZmYWJlNjMxOWEwMDdmZmQ0MjIyMzdiMjE0MDZjNmRiODMgbGVnYWN5LXRydW5rCiszOTI0MiAzMDg2NjIwZGI0NmI5N2ZjMmQwODIwMTdlN2JmY2NmNzg3MjQ0OWM2IGxlZ2FjeS10cnVuaworMzkyNDMgYjQ4ZjBiMmUwZGY2MDk1ZGY1OWNmOGQ4OTAzYmE1YmZiNmU5ZGVhOSBsZWdhY3ktdHJ1bmsKKzM5MjQ0IGIzNjNhMjhlZDI0ZjliMTAzYzU0Zjk0YTA5MDc0MDhlZWE2ZDU1N2UgcmVsZWFzZTI0LW1haW50CiszOTI0NSBhYmRlMjE3YzVkOTBkMWE2NTFlNjU0YmFjYzg5ZGVjZTk2YmI2YjRiIGxlZ2FjeS10cnVuaworMzkyNDYgMzc2MDAyMzNkYjc2ODgxYzhmODk5NzRlZGZiYThjZjg0Y2Y1MDM4NSBsZWdhY3ktdHJ1bmsKKzM5MjQ3IDQ1NWMzYjc2NWRjM2E4ZjFiOTFjOGIxOThlMWNiNTdlZjMxN2MyNzAgbGVnYWN5LXRydW5rCiszOTI0OCAyNTkwZmEwZWM3ZTg4MWIyMzA4Y2EwZTE5MzRjNWFjNDRjMmRlOTRjIHJlbGVhc2UyNC1tYWludAorMzkyNDkgZDUzM2YwOGE5ZGZhYWM3M2Y3ZjNkYWZlNjEzMDAzZGZjMmVhMzVmNiBsZWdhY3ktdHJ1bmsKKzM5MjUwIDVmZTljZWVjYTExMTg4MTRjNDRmNGE2NmRlMWViYjExODZmOTVkNjAgbGVnYWN5LXRydW5rCiszOTI1MSBmMzk5NmFhNzhjZGVhNWI1OTZmMjlkYTE2MTY5MzYwYjY1NTA3MWQ3IGxlZ2FjeS10cnVuaworMzkyNTIgNTQxYmZiYjEwMDMwYmZmYWFjY2NmMjYwNGM5NTE3NjYyOWE5ZTFmMyBsZWdhY3ktdHJ1bmsKKzM5MjUzIDhhYTliZDgwMjg2YjIyMDFlNzVmMWEzNzMyNDEzZGMxN2Y0YjM0NzMgbGVnYWN5LXRydW5rCiszOTI1NCBhNjg5YTIwZjU4Zjc2M2FkYTAzMmRjN2M5ZGFjZmQzMjVlZjlmNmNlIGxlZ2FjeS10cnVuaworMzkyNTUgMWQ4NjExZDg1NTVjNWNhZmUwMGM4ZGVmYTA2ZmMzMThhOTFjNjFlZiByZWxlYXNlMjQtbWFpbnQKKzM5MjU2IGE2Y2JmY2QwZTY5MWJhMGIxYzVhNTdjOWU0ZTBjYjk5Zjk4ZDZlNjkgbGVnYWN5LXRydW5rCiszOTI1NyBjZTA5OTVlMDFkM2M3NDU3NDNjZWE3NmViYTQ5YmFhNDZlOWM0NTBlIGxlZ2FjeS10cnVuaworMzkyNTggZmQwMDQ2MTg2MWM5MDcwNjQ1ZTI2YjY5ZmY5ZjkwMmExODc2Y2YwMiBsZWdhY3ktdHJ1bmsKKzM5MjU5IDI2MTJlOTZiMTdiYmM1YmNhYWM3MmFlYTEwZjFkZjIxZTYwNTMyYjQgbGVnYWN5LXRydW5rCiszOTI2MCBiZDlhZjI2MGU5Mjc5NDJhZjVlMGQ5ODAyMzI3M2EzMWU4YjM2NzFmIGxlZ2FjeS10cnVuaworMzkyNjEgZmE5NWZlOTFjZGY3NjBiZTNkYjEyMDQyYzdhNzlkYzVmMTI3MTgyNSBsZWdhY3ktdHJ1bmsKKzM5MjYyIGJkY2IwMWE5YjYwYzU3OWY3MTZhYjA0Yjg4NDQ2M2I3NDhhZDA3ZjMgbGVnYWN5LXRydW5rCiszOTI2MyBiOTJhODVjM2JkYzgxNmFhZjkyNzdjZTRkZDlmMmRlM2IyODViNThhIHJlbGVhc2UyNC1tYWludAorMzkyNjQgM2ZhNThlNWJkZGZiMjlhNWMwNDBmMjJkMDU4NjQyM2QxZTEyMDU1ZSBsZWdhY3ktdHJ1bmsKKzM5MjY1IDE3ZTA0NDRkZDEyZGFlZmUxY2RlY2Q4MThlZGE2OWY0MjBiM2E5OTIgcmVsZWFzZTI0LW1haW50CiszOTI2NiBhYzljMGVlMTk5ZmM5NmVlYTFlNGJjM2IzMjIwOGUwODM0ZjFlMDBiIGxlZ2FjeS10cnVuaworMzkyNjcgMzA5NDg0M2U3YjkyY2IxMDNhZTBmYmUxYjNiNDY0OGRiZWYyZmM0NiBsZWdhY3ktdHJ1bmsKKzM5MjY4IDZhYTczYTFmMGNiYTg0NTQwM2M3ZjgxNjY5ZjQ0NGQzMjk2ZDVjNDMgbGVnYWN5LXRydW5rCiszOTI2OSAwZWY2NGE5M2YzZjI1ZTBkNjM4MWU4MzM4MzAwOGI3Y2I2OWZjYzRhIGxlZ2FjeS10cnVuaworMzkyNzAgMzAwZjNhYWY4NTNmYjg4OGE0ZGZjNDNlZmRjNjI5ZDFiNjgxMmYwNyBsZWdhY3ktdHJ1bmsKKzM5MjcxIDA0NGE1Y2EyY2RiODJjZGY2N2ZlN2E1NmMzNDZmZGQ4YjE4MzViODAgcmVsZWFzZTI0LW1haW50CiszOTI3MiBlZjExY2JjMDhkYWJhMGZkYTQ5MGMxOTY3Mzg5ZThkZDU1Y2QzYjkzIGxlZ2FjeS10cnVuaworMzkyNzMgZmQwMmI4NGZiMmRiMjI5YmU4ZDc4YmNlMmQ5Y2RkODZjNjQxYTBmMiBsZWdhY3ktdHJ1bmsKKzM5Mjc0IGRjOGFlNDk5ZWZjZjM5Mzg2OTcxNDhhNmY0ODMzMjVmMTExN2RlMWQgcmVsZWFzZTI0LW1haW50CiszOTI3NSA3MjU2NzFkYjc3OWE2ODE4MmJkMjZjMDdjMGY4ODZlZDc1Yjc2OGIyIGxlZ2FjeS10cnVuaworMzkyNzYgOWIyMjI3YTYwZGFlY2RmNTkyZDhkMWVmYjRkMDcyMWM2ODM1MTZiMyBsZWdhY3ktdHJ1bmsKKzM5Mjc3IDUwM2MzNjk3NTc4ZjhjOWU0MGQyZGUyODRhODljMDNiYmZlYzYyMDkgcmVsZWFzZTI0LW1haW50CiszOTI3OCBkZWY0MzRlMmE4MWFmYmRjNGIwMDQyZDRjZDc5OWQ4NDM5NTA3OWJlIGxlZ2FjeS10cnVuaworMzkyNzkgZDY1NzVjZDFhYjY3ZmM2NjMyYjBlMjU1ZDY0NDlmOTI1MGUwOTRlNCBsZWdhY3ktdHJ1bmsKKzM5MjgwIDAyOGU5NGE2ZWZjNTZhOTg3N2JiN2Y4MDAxNzk1Mzg2NzBjMzM0Y2QgbGVnYWN5LXRydW5rCiszOTI4MSBiOGM1ZDIyMjJlZDc1ODNiZGUxMDc1MzI4YTEyM2IxZWQ0N2YxZmE1IHJlbGVhc2UyNC1tYWludAorMzkyODIgZjZiNDYyZDJhM2EzNmM1MzYzNjc0M2ViY2IxY2JkMDU4ODA0ZTdmMiBsZWdhY3ktdHJ1bmsKKzM5MjgzIDNjM2E0NWE5NjU3NzIxZjBjYTEwNjYzNTRjZjE5NjU5ODZlYzUyMzUgbGVnYWN5LXRydW5rCiszOTI4NCBkZDQzNTdhNWRhN2NiN2Q3MDQ3OTdiYjlmYjMzYTVmNjdhMjNmNWNkIHJlbGVhc2UyNC1tYWludAorMzkyODUgYzU0OTlmMjU2Nzg2YjI4MjFmODJmMTczMWUzYWJkNDVjYjQ5N2Y5YSByZWxlYXNlMjQtbWFpbnQKKzM5Mjg2IDcwMGYwODM2OTA5Mjc4NTgyMGM4ZTM2ZDhkMjNlNWE0YzM3MjViMTAgbGVnYWN5LXRydW5rCiszOTI4NyBkZDIzNTc5NTNmZTM4NzE0ODRkODhiMGNmNDc0Yzg2ZTg0MDBlOThkIGxlZ2FjeS10cnVuaworMzkyODggMzk4MjVjYTM0NjQ3M2VkNTY4MDU0Njk0NWQxOGI3MWNiZjE5YmRhOSBsZWdhY3ktdHJ1bmsKKzM5Mjg5IDJmMWJmNjRiODM3ZWY1ZjQ5ZTFjZjQ2ZTM1ZTdkMmYyNDMxZGM1YjEgbGVnYWN5LXRydW5rCiszOTI5MCA2ZjFjZDI4ZDZiODc1MDEyZDAzNDBlNTA2MzJhZGZhMzNiYWRhZDAwIGxlZ2FjeS10cnVuaworMzkyOTEgNzI5YmU4Y2MwMDk4YmY1ZTE3ZWE2M2YxYzNiNWYzMmMwMmM5ZTczNCBsZWdhY3ktdHJ1bmsKKzM5MjkyIGMxZDIyZDRjMDg2NTUyODBjZTM3ZTNiNTFhNzA0MjY3ZGNhZDNkYWUgbGVnYWN5LXRydW5rCiszOTI5MyBjZDhkOGU2MzRhYjgwNmUwMTBlNmI3Njk2YWQwYTgxNDQ2YjAxMmFmIGxlZ2FjeS10cnVuaworMzkyOTQgZTg4MDYwOTRkNjQ0OGRmZjBkZTFmOGJkNmRmMTllMDA2ZTZmY2EwMCBsZWdhY3ktdHJ1bmsKKzM5Mjk1IGRlMmQ4NGUwNDQ3ZWVlZDg2MWI1NGE5ZjVlMzU2OTE0ZWRhNDg3MjEgbGVnYWN5LXRydW5rCiszOTI5NiA0ZmQwMzg3MzdlMjFkMmFjYjhlZjEwMDhmNzE3NWY3YzVlODVhZmVkIHJlbGVhc2UyNC1tYWludAorMzkyOTcgM2EyZmZmNjkwNTU4ZGMwNDNiZTJiZTM0MzEyM2UyZWE3ZGJjYjc4MSBsZWdhY3ktdHJ1bmsKKzM5Mjk4IDg3NzkxNmQ2MzJlMDcwNjliODU3NzU3YmU4ZTUwNWUxZGJjZWYxMjYgbGVnYWN5LXRydW5rCiszOTI5OSAyMGIxOGI3ZjgzMDk1NzhlMGM1MDI5YzA2YTgyOWE5NDIxMjQyZDlhIHJlbGVhc2UyNC1tYWludAorMzkzMDAgYzViZjU2ODUyNjdiOGU4ZGE2OTI5NjEwYjliNDE5Y2YxNzgzNzg4NiBsZWdhY3ktdHJ1bmsKKzM5MzAxIGQ3ZjM5ZTYyMDhiYTlhYzg4NWE0OGE2Y2MwZmJjNWU1MjBkMGUyN2MgbGVnYWN5LXRydW5rCiszOTMwMiA2NjA1N2Q1NTA2MjhhZTc2NWJjNzIyOWFlYTg5ZjU2M2RhM2UwZDkyIGxlZ2FjeS10cnVuaworMzkzMDMgNTAyODNhNDQxN2Q5ODg3MGY4YzliY2Y5Yjk2ODUxYTlhNjkxMmViYiBsZWdhY3ktdHJ1bmsKKzM5MzA0IGYyMDY5MTk1NzU3ODExMzM4ZDFlMjAzNTc4ZGQ0MTVmNTE1ZmEyNTggcmVsZWFzZTI0LW1haW50CiszOTMwNSBhZWI4NTgwYTFhZjc0ODk4ODcyY2YxZWFmZTJjYWFhMWQwZWQ0OTdlIGxlZ2FjeS10cnVuaworMzkzMDYgOGIwN2Q3MzFiZTYwM2RlZDQ4MjM0ODFiNjVlMTg4YjIyZDFlYzJmMyByZWxlYXNlMjQtbWFpbnQKKzM5MzA3IDNlYThmNThhOGM4ZWM2NDM0ZjA0ZmFlZTg2Njc1YThmZWQ5MTlhZmQgbGVnYWN5LXRydW5rCiszOTMwOCA0ZTU4ODcyNWMzZDc1OGU3ZDExZjMyMTFlOTNkZTEyYjczMzgxYWJiIHJlbGVhc2UyNC1tYWludAorMzkzMDkgY2RlMjc3ODJhMTY5MmFkNDFjYmQxNzFmMmFhOTJmNDZhYjAzOGQ3NyBsZWdhY3ktdHJ1bmsKKzM5MzEwIGY1NzEzZTMwMzgwYzQzNmJhOGRlMTJhOGE2ZjQ4NTFkNjk2MzUwODUgcmVsZWFzZTI0LW1haW50CiszOTMxMSA3ZjlhNDMwYjhjZTcxZWM5N2E3OGRjYzczNzY2NDBmY2IzNTY5Yzc5IGxlZ2FjeS10cnVuaworMzkzMTIgY2UxMjQ1MTIyMGI0MGE5MjdiNjJmZTM3YjRlMjRiMzNiY2VhMTBlNCByZWxlYXNlMjQtbWFpbnQKKzM5MzEzIDc2YjI3MjI4MDZhYmM1ZDc5NTNjYWQ4OWU1MjdjYjhiODRhYTk2NzYgbGVnYWN5LXRydW5rCiszOTMxNCAwODRkNDJkZjdiYWQ0ZTk0MDM5N2M2Y2JiM2E2OTgwOWJiZGQ5YzlkIHJlbGVhc2UyNC1tYWludAorMzkzMTUgNzk3ZDgyZWVjNjI1MjFiNmE2OGRmOWQzNmQ4YjI5MjRjNmMyYTRiZSBsZWdhY3ktdHJ1bmsKKzM5MzE2IDYyNDkxOGUxYzFiMmVmZWU5ZTRiN2JlZTMxZGRiODIyMTJkMTFiMzMgbGVnYWN5LXRydW5rCiszOTMxNyBhNDY3MzI1NzFmMmU4ZjA1ZWRjZDViYmE3OTZkZjkyNWM4ZWE2NDUxIGFzdC1icmFuY2gKKzM5MzE4IGY4NGNmODUzNDY0YWFhYTY3YjMxYjNkMTRiM2Y1OWZjNGYwZmU3ZDAgYXN0LWJyYW5jaAorMzkzMTkgN2MxNGM3ZDhiMzk2ZmY2MTFkZTk3OTQyM2VlZjA3NTYwMmE2NzU1ZCBhc3QtYnJhbmNoCiszOTMyMCA0NjgwMGYyYWQzMDhhNDg4ODdhZWE0ZTJiZWZhNjdkOGRjZmNmZmVmIGFzdC1icmFuY2gKKzM5MzIxIDAwMTQ1OTZiODQwYzZjZmRiZThkNTY2YjM4MDQ1ZjI4OGI1ZGNhZjMgYXN0LWJyYW5jaAorMzkzMjIgYjQ2M2JiNDgyNTk0OWJkNDI2MTBhNWZmMzhmNzNiNmQ5MGRkY2Y5ZiBhc3QtYnJhbmNoCiszOTMyMyBlN2VkMGU2YWVkMmYyNzM5NDRjMzE3ZWViMzZkMTdiNzYwYjJiOGU2IGxlZ2FjeS10cnVuaworMzkzMjQgNDQ4YzZmYmZmNjQxMzEyMmE1N2U1Y2UyMDZjMGYzYjAwM2EzNjM4NiByZWxlYXNlMjQtbWFpbnQKKzM5MzI1IDkzMzAwODBhM2Q0MTc1OGUyNmEzNmZjN2MzYmI4NWY2NTIzYWJjNTAgbGVnYWN5LXRydW5rCiszOTMyNiA5MjYxNjlmZGU1ZTYzM2YxZTJiYTg4MjdlNjVjYzNjZjBiMDNlNGNjIGFzdC1icmFuY2gKKzM5MzI3IGZkZWI0YThiY2I0ZTI1MDk5YTAzOGE3NzBjZmE4NWEwMmVlOWZkNTkgYXN0LWJyYW5jaAorMzkzMjggNDMyMTFiZTBkZTQxNWZkYTFiZDdjNmEzZjlhZDkwMGU5YmVhNjFmMCBsZWdhY3ktdHJ1bmsKKzM5MzI5IGQ2ODI3OTBkNWRiMGUyNGFiMzM3ZGJjMmY3NTNiYjFmN2YyYmIyMGQgcmVsZWFzZTI0LW1haW50CiszOTMzMCAwZjFhMjMxYzJjN2NhYjVkMjFkZmY5M2JmMDdjZTk5MmU0OTRhNjZmIGxlZ2FjeS10cnVuaworMzkzMzEgNzg3NDc4OTIzZTgyZjI3ZTNiYjA1NmJjNTM0Nzk4YWNhMzJkZmFjNyBsZWdhY3ktdHJ1bmsKKzM5MzMyIDA0ZGQ1YjA2ZDNjOGVkNTNkYmU5OGU5NjI0NGJlNzg1MzA2MzBmYmMgbGVnYWN5LXRydW5rCiszOTMzMyAzNGZmN2NhNGNlZjg1MjdlM2IxZmJjYmM5NTBmNzQyMTY1MGQ5Y2I0IGxlZ2FjeS10cnVuaworMzkzMzQgYTZlNzAwMDRlOTg3MGNkODdlZjMxYjJkYzBlMzRjMjBkYmFiNTI3ZiBsZWdhY3ktdHJ1bmsKKzM5MzM1IDM4ODI0YjZlMzYwMDdjMzY5NTFmY2Q1MWYzOWVmNGY0MzRlYmY5OWMgcmVsZWFzZTI0LW1haW50CiszOTMzNiAwZWIzODZlZTk0MGUzMDMyNmM0N2JjYWFiYTE1YjkyMWYwOGU1MDNjIGxlZ2FjeS10cnVuaworMzkzMzcgMDcxMzcyODY3NzNjYWZmNmVmMDc1OTAzNjM4OTJhODU3YWE2Mjg5ZCByZWxlYXNlMjQtbWFpbnQKKzM5MzM4IDRhY2QzMDc2MWJjMjE3NjMwM2JmNDJjNzRiYmIyOGUwOTZmY2M0ZjQgbGVnYWN5LXRydW5rCiszOTMzOSA2YjM3ZWFiZTJhYzQzN2JmZDQ0ODQ5ZGYwYWQ1ZTkwM2UwNjRmYWY3IGxlZ2FjeS10cnVuaworMzkzNDAgNWY0MDBmYjJkZDhhNjliN2NkNjlhMzE4OTFjYmJlNjQ0NDYwODYwYyByZWxlYXNlMjQtbWFpbnQKKzM5MzQxIDM5NzNkNjNkMjY2NzdjMDY3NDYxMzZmMWIxNTI2NTcxMzc4MTFhNWIgcmVsZWFzZTI0LW1haW50CiszOTM0MiA5MWQ5NjhiNzc1NzlhNWEzNjYxYmM0NmUwMWZlYTlhNmQ0YjQ5NWQ5IGxlZ2FjeS10cnVuaworMzkzNDMgNDNjZjU5ZTdhNjE0NWFjNzE4ZmU5NTM4NDNmNDIwYWNjODNhMWQ3YiByZWxlYXNlMjQtbWFpbnQKKzM5MzQ0IDRkYTZkNGUwYzNkNTYyOGMwY2YxZGVmNWFlMzUwY2VmNmVhZGUxZTYgbGVnYWN5LXRydW5rCiszOTM0NSAxMmE5YmIyNGI2ZDk2NDY2MDc0OTRkNjI4ZWNhODllYzBmYWVkOGFhIGxlZ2FjeS10cnVuaworMzkzNDYgYmVkOTNkMDQxNmRkZTgyYTM0OThlMmRlNzdjMzk5M2U3ZmI4NDNhNCBsZWdhY3ktdHJ1bmsKKzM5MzQ3IDdmMTYyNzc2NjYyMTZjMWU3ODdiMjAxNzdiYmNkZDA5NDRhNzc0YjAgYXN0LWJyYW5jaAorMzkzNDggMDFlZmY2MDc5ZjkwYjZmYWFmYmE3NDY1ZGY3ODkwNmFiMWIxMTdhMCBhc3QtYnJhbmNoCiszOTM0OSAxNzA4NDc5YWRlNGQ1YmFjZDQwMmRkNjMxMmUzNGU4NDc1MTZiNzA4IGxlZ2FjeS10cnVuaworMzkzNTAgYzllYjI1ZmUzOWNiYmUwNWQ1YWQyZmQzYzhmNTJiZDQ5YzIwNWNkOCBsZWdhY3ktdHJ1bmsKKzM5MzUxIDllMDVlYTNiMWJmM2I4NWYzYTI5OWU0ZDM0MmQ0ZmIxOTQ3MTk1ZDkgcmVsZWFzZTI0LW1haW50CiszOTM1MiA1YzdjY2EyNTQ3MmRlZmZlZTQ2ZDc1Y2E5OGM3MTUyZmZhMTVmODNhIGxlZ2FjeS10cnVuaworMzkzNTMgNmMwODY1YmVhYWI3MzEyOTIwODBmYTIyZGU0YWFiYmEwMTdmNTQzMyByZWxlYXNlMjQtbWFpbnQKKzM5MzU0IDg4MzdkZGZhYWQ0NWVhZjgzODE3YWQ4MWFkMzE3NWE5ZDdhNjJkMjUgbGVnYWN5LXRydW5rCiszOTM1NSBmOTYyODdkMWI1ZjZmOThiZTc4NWM0Yjg3MmM5ODViNjRiZTcyNzBkIHJlbGVhc2UyNC1tYWludAorMzkzNTYgNjM0Y2E0ZDhhMzA2YTIyMjIxOWQ2YWVlYjJhNjIyMGZiMGM2MTIxYyBsZWdhY3ktdHJ1bmsKKzM5MzU3IGI3MDk3ZDkxZjA0ZDFlYmQ1NmU0N2IwZTdkMjAxZGE1N2VmZDdiNDIgcmVsZWFzZTI0LW1haW50CiszOTM1OCA1YjFhMmZiODY0YTc2MjZjMTY0N2EwYjUzMTk3NjFkOWFjY2E4NTY2IHJlbGVhc2UyNC1tYWludAorMzkzNTkgM2JiOTMyODAxYjY0NTJmODhiNzliZDJlZWMyMGZjNTk5NzNlZWM2ZCBsZWdhY3ktdHJ1bmsKKzM5MzYwIDM3NDVlM2M2YTNlMTM2MDE2ODk2ODQyNWU0OWYwNTdlNWVlZjVmZTMgbGVnYWN5LXRydW5rCiszOTM2MSBkZGUwNTZhNjY2ZGRlZjUyYWQzMjAzMmRhMzhlNTkxZDMyOWFmOTk1IHJlbGVhc2UyNC1tYWludAorMzkzNjIgM2VlYzkxMDM4ZmJjYTlmNDM5YWEyZGE5NzQ2NWI5ZjU1ZjQzMTI3YSByZWxlYXNlMjQtbWFpbnQKKzM5MzYzIDBhNmRiY2I0ZTA1NjYyMzA1Y2FkMzg4YTNhYjM1MzI0YTA2ZjZlYjUgbGVnYWN5LXRydW5rCiszOTM2NCA0ZDA1ZjllN2U2ZTI5NGE5ZTQxN2RhNTc2MDZmYmYzMzEwZjUyYmRmIGxlZ2FjeS10cnVuaworMzkzNjUgMTU2YWJkYTRlNDU3M2E4ZTJmNGYxZmEwN2E5MDZlZDEyNTA4NjcxZSByZWxlYXNlMjQtbWFpbnQKKzM5MzY2IGZmMmU2NmZjMGEyOTI5MDRkYzA0ZDM3MjAyYzg4YmRjZTA1YzFkM2EgbGVnYWN5LXRydW5rCiszOTM2NyA0ODk2ZjgzMzRiZmYyNDQ1MzI2OGE1Y2I1ODgwYmRiYTlmNTE5YjQ1IHJlbGVhc2UyNC1tYWludAorMzkzNjggZTQ4ZmNkNGMzNThkNDk3YzA3ZjYwNzNiNmI1NTRiOWM0NjdkMDE3OCBsZWdhY3ktdHJ1bmsKKzM5MzY5IDM3ZmE3YjZkY2E5YmI4OWJhYjJkOTFlZDFkNjVjZjAwZjQyYWE0ZDMgcmVsZWFzZTI0LW1haW50CiszOTM3MCAyYTZiNjk0MmE3ZjdjYjYwNDA2MDU2YmY5MGM5YjQyMTQ3ZTNlY2U4IGxlZ2FjeS10cnVuaworMzkzNzEgYzRlNWVkN2EyYmEzN2Q2NTEwMDQ0MWJmMjBlYjNhNWExYTU0YjAxNCBsZWdhY3ktdHJ1bmsKKzM5MzcyIDg1ZjBhNmU4MzgwYjVkZDc5MmNkNTg3MTI0YjY3MGQxOTgyM2UyMjggbGVnYWN5LXRydW5rCiszOTM3MyA0ODE0NjNhNWIyMGM4OTZmZDhmMTc3NjZlNDgyNmIwNjkxYjJiY2Q0IGxlZ2FjeS10cnVuaworMzkzNzQgZmUzMjM1ZmNkZDc3MjUyZWRhZTdiYTE0MWM1MGM3NGUzZWU1OGUxMCByZWxlYXNlMjQtbWFpbnQKKzM5Mzc1IDdjYWFiYzc0OTk3NTY3ZWVhMjgxNGY2OTQyMmYwNDE0NmZjNzY2OTkgbGVnYWN5LXRydW5rCiszOTM3NiBkNWRmNTIyMmZkNmQ1NDJjOWFmYjVjYzY4YjVhOTFkNDI4N2NjMDIwIGxlZ2FjeS10cnVuaworMzkzNzcgMTY1MjBmY2MwNjA5NTBjYjBmNmEzZWE1ODA0MTc5ZTAyYmFmMDllOCBsZWdhY3ktdHJ1bmsKKzM5Mzc4IDU1ZTI3NTlkMDIxMTM3MjQ5ZjFhZjRjYzU3NDY4N2NmNWE5ZGM5NzEgcmVsZWFzZTI0LW1haW50CiszOTM3OSAyNDVlOGY0Y2JhMWRiMjQ4NmE0YTRiZGUzMTQ0YmNlNDk3Nzc3Yzg2IGxlZ2FjeS10cnVuaworMzkzODAgZTBiZDZmMzI0ZmQ2YTFkMjk1Yzc1NjA2M2Q2MDhjODVkOTc4YTAzZCBsZWdhY3ktdHJ1bmsKKzM5MzgxIDFiN2M0ZmJlZTBiOGJlMTBmMzA4ODIwN2Y5YWFlMmRkNTc0YjgzMDQgcmVsZWFzZTI0LW1haW50CiszOTM4MiBjMWYwZjE3MDkzNmQ1NTcyYjRhNmU3NWRmNDY3NzU4YmUxMGJlZDNkIGxlZ2FjeS10cnVuaworMzkzODMgMTMwYjZjZTliYmYzZGMxMjc2MDg1ZGYyZmQxNDY4ZWY1MGFhNzEyNSBsZWdhY3ktdHJ1bmsKKzM5Mzg0IGVkZGNlNDBlZDFiMTZlMTdkNjI3MGFmYmZiNDdkMTlkMTdmY2ViZTUgcmVsZWFzZTI0LW1haW50CiszOTM4NSA3ZDNlOGMyYWUzMzkxMzJlODZjYmFkYzlhNzQ0ZmZkYTljNzQzYmZkIGxlZ2FjeS10cnVuaworMzkzODYgOWQzNDNiYzgxODYzODE2YjViNjFkYTU3YjJmMTY1M2Y1YzljYjFmNCBsZWdhY3ktdHJ1bmsKKzM5Mzg3IDRhNTA3Nzg3M2NiYTBiYmE5OWZmOGJlZmNmNmJhZDc2MzU4YWNiYjkgcmVsZWFzZTI0LW1haW50CiszOTM4OCAzZDAzZDJjYmUxYWQxNmRlNTk0ZjE5NmRhOWNkYjVmNjdmMjBkOGVjIGxlZ2FjeS10cnVuaworMzkzODkgNjUyMzhjOWE3YTY2MDEwODBkMDVhNjg2MDc3MDYwMmVmNjIzNzg1OSBsZWdhY3ktdHJ1bmsKKzM5MzkwIDE3MDdjOTQ1ZDZjMjRkZDA4Nzc5ZDZmM2NlODE5YWM3MmQ2YTkxZDIgcmVsZWFzZTI0LW1haW50CiszOTM5MSA1OTU0NTFjMmM4ZWNkYzk5YzQwNjgxMTM3N2YxMTU1ZWVkZWRkYzdiIGxlZ2FjeS10cnVuaworMzkzOTIgYTE3MDEyMzQ1YWY2YWEyOWYwYzA1Y2MwMjA1YWU0OGMwODBlYmU2ZiBsZWdhY3ktdHJ1bmsKKzM5MzkzIGQwZTg2NTc2ZjBiNWRmNTc5ODljOGE2MjljY2JhOGYyYWVlNjNmNjUgcmVsZWFzZTI0LW1haW50CiszOTM5NCA0NDYxMjU5MzQ3MWM5NjBiNzM0ZjM5ZTJlNjg2NmRiOWRjZTA0YzdlIGxlZ2FjeS10cnVuaworMzkzOTUgY2I0OTlhZWUzNmU3OGFjYmZhN2UyYTg1ZTI2MjNiOGVkZDFlOTljOSByZWxlYXNlMjQtbWFpbnQKKzM5Mzk2IDdhMGQwYjRjODdkMDY0NTExNTYwOTkyYWY4ODQ1ZDRhOGNlYTJlYmYgbGVnYWN5LXRydW5rCiszOTM5NyA1ODJjOTBkZWRhOWRmZTMwNDI1Y2E2ZGEwNWE2NWQ1YjJjNTMzZDFkIHJlbGVhc2UyNC1tYWludAorMzkzOTggMDk5OTI5MGM2NzU4OGExMDI1YWNmY2E3NWI0MTE2OWExNmVkMzI3YSBsZWdhY3ktdHJ1bmsKKzM5Mzk5IDUzMTY4Njg1NGYwODZlYTM2MGVkZWJkMmU1YmIyNGJkODIyNGM0MjUgcmVsZWFzZTI0LW1haW50CiszOTQwMCAxZmRmZDAxMzBlMjgxOTIxMzhlZmUwZDMyN2M5NjdiMTY2YmQ5MTNiIGxlZ2FjeS10cnVuaworMzk0MDEgOTdjOTcxOTRlNjRiYjg3MjNlNjI4MzA5YmRmMDFlN2MxNzFmNjYxOSByZWxlYXNlMjQtbWFpbnQKKzM5NDAyIDM2NTE0Yjk1MDAyYWIxZDU5MmYwNTZiZjk2ODhkYWRmODFhY2MyMDkgbGVnYWN5LXRydW5rCiszOTQwMyA1OWE2M2IwOWE0YzI2OWU1MjY3NWFlMzM1N2FiOGUzOWIwYjZhZTc5IHJlbGVhc2UyNC1tYWludAorMzk0MDQgMzg1NWE5NjBhNmFhOTZjYTllYzg1OWZlOWExMjEwNzkxYjYyODU4YSBsZWdhY3ktdHJ1bmsKKzM5NDA1IDlhODM3MzgwYzNjNWYxMjdhMTc4ZGI2ZDA2MjJlOGJjNzMwMDBjMDYgbGVnYWN5LXRydW5rCiszOTQwNiA4YTNkN2Y5ZjAyY2MyZmUxZDE1ZjM2ZTNlZDA0M2ZmNDNiMzAzMzQ3IHJlbGVhc2UyNC1tYWludAorMzk0MDcgY2ZjYzI2NDFhOTEwOTgwZDMyYjg3MmVkOGIzODkzYjJmYWViZjhjNiBsZWdhY3ktdHJ1bmsKKzM5NDA4IDlkNDFhZmE2M2I3OTUzMTMzZTQ2NGVmMDA2MmI0ZjEwOTg3NWJmYTAgcmVsZWFzZTI0LW1haW50CiszOTQwOSAzOGU1ODhkMWQ4ODUzYjhhNDliZDM5ZWI1NjBmNmM2ZTkzODYyYWExIHJlbGVhc2UyNC1tYWludAorMzk0MTAgMDg1MjhmYmQ0ODA0OWZiY2VkZDRjZWI2ZjMxYTY1NDg4NzZlNjhmZCByZWxlYXNlMjQtbWFpbnQKKzM5NDExIDliZTkyZmU4YTdhODEwMTIwZTU1MDRjZDE5MGQ1NjRlZmJlNTg5NzYgbGVnYWN5LXRydW5rCiszOTQxMiAwMzU0MDllZjA5MDExZjU1YjU2ZGVlYjJlOTY3MGM0Mzk3YWNlNWNlIGxlZ2FjeS10cnVuaworMzk0MTMgMjU2ZTczODRmMjRkYmQzMzNjYjM1ZDJiYjliYmI5MDE3MTY4MTI1NiBsZWdhY3ktdHJ1bmsKKzM5NDE0IDEzMTI5NDZmMzJhYjVjZTExNzNhNWUyYWYxYjQyODY0ZWM2ZDFiZDAgcmVsZWFzZTI0LW1haW50CiszOTQxNSBhZGVkYTlmYjM0ODVkNjc0YzcwY2QyMDI2N2VlMDhhMDY2ZGVjNmMzIGxlZ2FjeS10cnVuaworMzk0MTYgM2U1YzA3ZmFhYjExMTM5OWIyNDAyY2U5Y2U1YmNiNzcxZWE2YzU2OCBsZWdhY3ktdHJ1bmsKKzM5NDE3IDUyMzNkMTlmZjg3ZjI3N2YxZDI2NDg1NDJmNWM1MTk4ZWEzZWU2ZGMgYXN0LWJyYW5jaAorMzk0MTggNzJkM2FkMDhiMmM2MjBiYWE2NjBjZGIxZjRhOWM0Y2NhY2ZiMzgzZCBhc3QtYnJhbmNoCiszOTQxOSA2OWVhYjg1MTc0ZmJhM2Q4NjJjZjYwNmI5MjhhNTc2Yjc4OTk0ZGZhIGFzdC1icmFuY2gKKzM5NDIwIDMzZjY2MmY2Nzk1ZjMzYTFlMTljNzk0NzA2ZmIwMmQ2YzM4ZTI2N2QgYXN0LWJyYW5jaAorMzk0MjEgNzEzY2NmZjcxZmRmZTRiNzAzMjMzZWYyZmNmNjA1OGUzOTY4NDIyOSBhc3QtYnJhbmNoCiszOTQyMiA4NTk2MGNhNGZjMDg5ZTlhMTZmNGJhOTNiNjYwNTA5Y2Y5MTNjMzVkIGxlZ2FjeS10cnVuaworMzk0MjMgZGJhMWUyZGZkOGRlYTc4NDVlYmI5Y2Q3MmNkMzY1ODM2YWZkZDI2NyByZWxlYXNlMjQtbWFpbnQKKzM5NDI0IDIwMGUyZWY0ZGJkYzY0M2M0N2Y0NTRmNjkxMTM3NWNkM2I0MjcxMjggcmVsZWFzZTI0LW1haW50CiszOTQyNCAwZjQwNWExYzUzNDA1NDk0MjY0Zjk3YjRkZGU4MmVlMWE2ODkwNGMxIGxlZ2FjeS10cnVuaworMzk0MjUgYWFhMzY0NmY0NTY3MTI2YjAwYjQ0MjEyZmRiOGNkOTJkNjIxNzI1ZSBsZWdhY3ktdHJ1bmsKKzM5NDI2IDAyMzRjODRhN2Q4ZGE4MjZhMjUxNzRkODIxNjU5NmQxOWJjNmZmZjkgYXN0LWJyYW5jaAorMzk0MjcgZTUyZWQ4NzhjNWVlMGFkZTIwN2NkMjllOTRmNDQ2MzBiNDY4YjFmMyBhc3QtYnJhbmNoCiszOTQyOCA0OTZkMjliMGJhNWJiYWY2Mzk2Y2IyMjljOWExMGRhMGI5ODY5MDBmIGxlZ2FjeS10cnVuaworMzk0MjkgMTFlMTVmN2FiOTQwNmVlYzVjNjJhZDFjNDZmMmE1YTMxNTkxZDNmNSByZWxlYXNlMjQtbWFpbnQKKzM5NDMwIGQ5MmYwZWQ2YTdmMmY5ZDdlZWI1YjdjMzViMDM1NmU4ZGMyZDIwNGMgbGVnYWN5LXRydW5rCiszOTQzMSBhODRjZGFiYjhhZjA2ZGFiZDk3ZTkzOTQ4YTE0YWZiNjNjNzI5ZjVjIGxlZ2FjeS10cnVuaworMzk0MzIgODllOGE1ZWMzZGEwNTc3YjcyYjE0ZGE0YzNkMjdmOTgwZTFhNzhjMSByZWxlYXNlMjQtbWFpbnQKKzM5NDMzIDY3NjNjOTFmY2ZlZjQwOTllOWM0NmJmNWZmYzJlNDJlOTU0ZmQ0YjAgbGVnYWN5LXRydW5rCiszOTQzNCBiYWVkOGI3ZGViNTZkMWM5NWFkOTQwYzU1YjkwMWNjM2U5MDdhYzljIGxlZ2FjeS10cnVuaworMzk0MzUgOWIyMTA0MDExZjcwMjZhNWNjOTYxZTBmNWVlMTI4YjEyZDYxMTJiNCByZWxlYXNlMjQtbWFpbnQKKzM5NDM2IGJiNjc3MDc5ZjgyN2NlMjAxNjVhYTBjY2YzMTBkZGM2YjMwZmEwZGUgbGVnYWN5LXRydW5rCiszOTQzNyAwZTg5NjRmNTM3MzJiZGM5MjBjNmNmMTBlZTI5YTljMWJiOWM1ZjMzIGFzdC1icmFuY2gKKzM5NDM4IDUxNmVkNjBhOGY5Y2FmNjcwZjNkMDk3MTgzZmVlNDE1MDQ1OGViYTMgYXN0LWJyYW5jaAorMzk0MzkgNjA2MWFhYTQ0ZWJjNTM1ZTQ5YjZiODM3MmIzOTE0ODE0NTRjY2M3NiBhc3QtYnJhbmNoCiszOTQ0MCBkMzMyYjIxNjhjYjI0NzI2OWE0NmZjNmE1ZmFiYWNmZDczNmE0MzU4IGFzdC1icmFuY2gKKzM5NDQxIGNkN2Q2YzZmMmRiMjE3NTRlMmIyMDM5NzdiMjQ1N2UyNDllYTNlZjMgYXN0LWJyYW5jaAorMzk0NDIgZTE1OGYxZTE3YWI0YjcxNTlhYzFmZWY2MWE1NjgyNmZmOTViN2NmZCBhc3QtYnJhbmNoCiszOTQ0MyAwNmVmZWVjNzRkNTlhNTIxMjQ5ODg3YThlYjdkNzNmNTAwMmVmMTFhIGFzdC1icmFuY2gKKzM5NDQ0IDM0MzhlZWJhNThjMzhhOGZkMzY2MzRjZWQ2MDNiMzVlNGJlNjllM2UgbGVnYWN5LXRydW5rCiszOTQ0NSA4MWEwNmE5YTFhYzQ3YzQ5N2I5YzhjODYzMTUwNDdhODMwMzY0ZjVmIGxlZ2FjeS10cnVuaworMzk0NDYgYWIzZGRiYmQwODYyYzhmNDNlZjcxM2M4NGYwNzI2OGNhOWQ2ZmY2NSBsZWdhY3ktdHJ1bmsKKzM5NDQ3IGJiZjgxNTdkMDM5ODRlOTZhOWE4Njc4ODk4ODA1ZmVhMjcxOTkzNTkgcmVsZWFzZTI0LW1haW50CiszOTQ0OCA0ZmM3YTdlZGNiNGI2YWZiYzk0MjQxOTZhMTMwMmQwZjUxNWQwMWE4IGxlZ2FjeS10cnVuaworMzk0NDkgNmI4YzU1ODc3NzU1YzdmZGVlMDU0MzRhNmU5ODkxYzE4NmJiNWYwNCByZWxlYXNlMjQtbWFpbnQKKzM5NDUwIDFhM2NmOTZjOGQ0NjRiZDU0NTQ4OTJkNjQ3NTBlMWYxZTYyM2E2ZDEgcmVsZWFzZTI0LW1haW50CiszOTQ1MSBiY2Q5ODExMjM1ZDQ5NjJiZTA0ZmI2ZDg3NTk5NTk5Yzg4Nzk3YmExIGFzdC1icmFuY2gKKzM5NDUyIGExNTk1ODRkYjY1YzEzNDE1N2Q1NjEyOGIwZjAzMzc4MWI1NWFlOGEgYXN0LWJyYW5jaAorMzk0NTMgYmE4NDRiZDdhMzJiNmJiNjUxMDUzMWE2M2FiMGRjMDAyOTA4ZDY2OCBhc3QtYnJhbmNoCiszOTQ1NCA0NjgxYThmYTQ2ZDA2ZWNmYzdhNGM2Nzc0NGZkMzU4MGNjZGM0NThmIGxlZ2FjeS10cnVuaworMzk0NTUgY2U1Yjc1MzI1MjBhODdkOTQ2NzQwMzk2MWY2Yjk4OGIzYTQ0OTc0OSBsZWdhY3ktdHJ1bmsKKzM5NDU2IDBlYWU1MjE5ZjNiODI0ZDBmZTYyN2ExZDdkYTQ3MzdhYmU0ODg4NDUgbGVnYWN5LXRydW5rCiszOTQ1NyAzZTYyMTIxMTNlODJhMGRjYmIwOWU5ZTA5NTk1NzIyZjY1NTE1MDQyIHJlbGVhc2UyNC1tYWludAorMzk0NTggYTE4NWQ2OTYzMGIzOGEyNzhjYzc0NjUwMzEyY2QxYmRhOGI4ZGVlZSByZWxlYXNlMjMtbWFpbnQKKzM5NDU5IGMzNTNjMjc4MmFlMTU5NWQ1ZTQ3NTQ3OTgyZDA0NDkyMjczNWFmZGQgcmVsZWFzZTIzLW1haW50CiszOTQ2MCA5N2RjOGYwNmM0ZmFiN2Q5NTRhYjUzZDYyMDAwMDRkOTM3MGE2MzA1IHJlbGVhc2UyMy1tYWludAorMzk0NjEgMGJjYjMwM2IzNDFiNjY0YjllMTY1NGM0ZDVhOGFjNWUwYzNlMTRmZSBsZWdhY3ktdHJ1bmsKKzM5NDYyIDBmZTgxMTdiNzYxZDc0YWQxYTJlZjcyMDQ4ZmY1MWFiMzRjYWNkM2UgbGVnYWN5LXRydW5rCiszOTQ2MyBmZTBjYTYwNDgyNjcwMjc3MjJjYjE2ZDgxN2EzOGZkOGFiM2NmOGNiIGFzdC1icmFuY2gKKzM5NDY0IDA3OTU2ZDRhOGU0YWJiZGQ3NWMxZjZhYzNmMzhjZWQ3ZDUxZjVmODQgYXN0LWJyYW5jaAorMzk0NjUgMTI5YWIyMmM0YjE5YTljYTRkMTllN2NlMjk1ZTc5YmQ1M2YxYzc5NyBhc3QtYnJhbmNoCiszOTQ2NiBmNTRlNTBjNTNhNzJkMzljNmFkZDdmNjNiOWIzMTU3NDg4NjUyNTIzIGxlZ2FjeS10cnVuaworMzk0NjcgYzg5M2NhZWIxMTM3MDU3OWNhNjM2NDgzOGUzMWUyMTU4ODQzYTI2MSBsZWdhY3ktdHJ1bmsKKzM5NDY4IDIyYTQwOTNiNTE1MWM2OWI4NzM5NWNlYzI2OWFjMDZmNmZhY2NjY2MgYXN0LWJyYW5jaAorMzk0NjkgZGFmMzM4ZWNkY2NjNmJmNjEwYTNmNjQ2ODJjNzMwZDQ0NjI2ZTExNCBhc3QtYnJhbmNoCiszOTQ3MCBiNzIwMTA0YjdkYjkxNjVhMDM4YTU1Mzc4YjFlN2Y0NTNmZmFkMjVhIGxlZ2FjeS10cnVuaworMzk0NzEgYmE0NGU5ZTJiNTU0NzI5ZjcyMGNkZDdjY2NlZjllYTAwY2IyMzlhMyByZWxlYXNlMjQtbWFpbnQKKzM5NDcyIDhmYTgzYTllYmM2ZWNjZWNlYmI5ZDA5NWExNTkxYWY3MGJkZTY0YzUgbGVnYWN5LXRydW5rCiszOTQ3MyBlZDY1ZTBhZDIyMTU5NWI3ODI5NjQ0ZjQyOTU5ZDkzYTFkNGRiNThmIGxlZ2FjeS10cnVuaworMzk0NzQgNzcxODQ3Y2JlM2I2Y2I2ODYwMjQ0N2FkMDdhZmMwYmI4YTFjNWVhNSByZWxlYXNlMjQtbWFpbnQKKzM5NDc1IGY2M2U2OTYwYzVjZmJlMjZiMWI1OWFmMWFhMjIxOWJmYThlYWVkYzIgbGVnYWN5LXRydW5rCiszOTQ3NiAwYjdmYTZmMDU1MmFiZTkwNTFlZTRmNGMzM2NkY2Y2NDc5ZTYxMTcyIGxlZ2FjeS10cnVuaworMzk0NzcgMjZiYTNkNGY0ZmM0MTU1N2ZkMjZlM2RmZWMyZDNmNmFmYThjMTk3ZSBsZWdhY3ktdHJ1bmsKKzM5NDc4IGE1NzgwMDJjOGY2NTk5MjIwZDBiYWEwYjYwMzg4YmZjN2ViOGFjZTkgbGVnYWN5LXRydW5rCiszOTQ3OSAxNWE4OTc1ZjdmYTkzZDVhMDY4ZjdlMmJmYjRiMjY0YTQ3YjA5NTQ2IHJlbGVhc2UyNC1tYWludAorMzk0ODAgMWYyYWYyNTk5NjhiNDU1ZDQwYjM1YWQ3YzQ1MTRlY2U0MzhjZTc5NiBsZWdhY3ktdHJ1bmsKKzM5NDgxIDBhMjhkNDg2MzZjODY0M2ZkZmNmYzhiNzIwNTE3NTE5MGNjYTMzNjAgcmVsZWFzZTI0LW1haW50CiszOTQ4MiA1ZDU4NDQzZjQ4OWI0ZmQyOTEwYTQwZjAxZGEzNTZhNWIxMGJmMTcwIGxlZ2FjeS10cnVuaworMzk0ODMgZTdmZDg1NTUwYmMwYjU5YjhmOTY2ZWEyZWY1ZTlhZTQzM2UyMDk0MSBsZWdhY3ktdHJ1bmsKKzM5NDg0IDk1MTZiYTU0YjlkZjQ0NzU3ZGU0ODI4YmJmYTI3YjQwNmIwMDA4NjAgbGVnYWN5LXRydW5rCiszOTQ4NSA1ZGIyNzMxNWVkY2ZmYTVhNjhlYjdhMTljZTE1ZDgzZjRlODE0Nzk0IGxlZ2FjeS10cnVuaworMzk0ODYgNGFiYWY2OTIzNDM3MTk0ZGJjNjMyMGFmNmE1MTJlZWY0MzRmZWVjMiByZWxlYXNlMjQtbWFpbnQKKzM5NDg3IGNlYWMwMjc3ODUyMzQ5YmU2NTg5YzEzZGFjYmIwZWVjYTA5OTVjNWEgcmVsZWFzZTI0LW1haW50CiszOTQ4OCBkZTFjNWQxN2ZkZTZjNjMwZTlmNTBhYWE1ZjQ2MWVkZWYzMDYzOWVjIGxlZ2FjeS10cnVuaworMzk0ODkgNDM2YmUyYzg5MTQwMmY0ZGNlZDNmZDk2NjI3MDUxZTlmNDk1OWRiMSByZWxlYXNlMjQtbWFpbnQKKzM5NDkwIDdkZDQzMTc1MGJkMzY1ZmQ1ZDM3MTFkNDM3MDYzZTc3NTNhMWIwODMgbGVnYWN5LXRydW5rCiszOTQ5MSBlY2Q2MWM5MmFkZjMxNjJlNjMxMDI3M2ZmOGVlMzY3NzE5MzgzMDk3IHJlbGVhc2UyNC1tYWludAorMzk0OTIgOTUyMWUzODAzODBmMGVhM2VjNDMzZTJmYmI1ZWZkOWFjYTU2NTI2YyBsZWdhY3ktdHJ1bmsKKzM5NDkzIDZiZGU2Y2QyMzk1NGM3MTI1NzM1NGFiMzIzMmE3OTgxZTA4YTlkMGIgbGVnYWN5LXRydW5rCiszOTQ5NCAxN2IxZGZkM2NiYmJkMzNmZWMxNjZiOWU5ODQ3MjFjZTY0MGVmNmZmIHJlbGVhc2UyNC1tYWludAorMzk0OTUgY2M5NDE2ZWU1OGUxOWYyODJhYmQ0YzExYzI1ODFhNzJjOGMxMzQ4NCBsZWdhY3ktdHJ1bmsKKzM5NDk2IGY3Mzc4ZTk3YjY2YTI0Nzg3Y2Q2N2I3ZGE1ZmJkNWEyZDliODA0YjAgcmVsZWFzZTI0LW1haW50CiszOTQ5NyBlNzNhY2NmM2VkZGI0YTMyZjljYzY1MTUwYThhZmQyNDYwNGQzN2I3IGxlZ2FjeS10cnVuaworMzk0OTggMzM2YjY2NGEyMjEwZTkyZDk0YmUxZDk2YjMzMzhhMWI3MGY1YTdiOSBsZWdhY3ktdHJ1bmsKKzM5NDk5IDU4MjQxMzBiN2FjMzUwZmYyN2RkYWRhNTkwYWExNzQzZjM4MTc0MTEgbGVnYWN5LXRydW5rCiszOTUwMCBhN2NjY2MzOTEyMjgwMjJhODJiNzIxMDNmOWVjNDY4ZDYwZWE0ZTY4IGxlZ2FjeS10cnVuaworMzk1MDEgZGM4NTM4ODQ1YjBjODkwZWE3OTI3NTRiNGY1MmRiNGM5OTQ5MDcyYSBsZWdhY3ktdHJ1bmsKKzM5NTAyIDM2M2U2ZGQwNzlmY2FjMzk3ZjNlOWQxMzZiYjM1M2NiMjdlMzQwNmMgbGVnYWN5LXRydW5rCiszOTUwMyAzOWRiZTNiZTMyN2FhYWZjN2JhNGM5ODQ4YThmYTUyNTI4M2Q4ZDNkIGxlZ2FjeS10cnVuaworMzk1MDQgZDUwNGEzMDJiZjUzZTNhM2RhY2I0Y2VkOTRjNzEwOGUwZWNmOTFlNyBsZWdhY3ktdHJ1bmsKKzM5NTA1IGYxN2VkM2I2MmFkYWIxNTY2OTQ3ODM3OGIwZDA4MWNjYWQ0ZDI5ZjMgbGVnYWN5LXRydW5rCiszOTUwNiBlYTUzZTdkOThiMDA2YWEyMzlmOTMzNDMxNzM1ODI1YWZkZTM1Njk3IHJlbGVhc2UyNC1tYWludAorMzk1MDcgZmE3Mzc2NWU4ZWY1MWQ4NTczNjlhZjFjMzc1OWZjMTBkMjg0ZmE3ZiBsZWdhY3ktdHJ1bmsKKzM5NTA4IDQ2ZjBhNDRmNDllNjQzZmU3Y2EyYzJhZDM1ZTc1MGRmZTY5MDhjYzYgbGVnYWN5LXRydW5rCiszOTUwOSA5NjZkZWFjMTVhODkwZGY3M2EwZTZlNTBiYjU4NjI3OGJmOGNiODRlIGxlZ2FjeS10cnVuaworMzk1MTAgODc1NzM5ZDcyZmMxYzdiOTg2ZWU2MDVkZTVjNzk1YjQwZTJhMWFhOCBsZWdhY3ktdHJ1bmsKKzM5NTExIGMwZDZiYWUzNWI0ZTc4ZmEyMGY3N2YzMTYzN2RmMmFiNzU0Y2QwYWQgcmVsZWFzZTI0LW1haW50CiszOTUxMiBlNDFmZGE5ZjBmZDEwMzNjZjE5MWE4YWRlZmI0YjEyN2EyMDE3MTQ4IGxlZ2FjeS10cnVuaworMzk1MTMgN2QwYTVhYzI0NjY5YWI2YmU0NzBhZDk5YWM3MWRiOGEwYTE0ZmZhMCBsZWdhY3ktdHJ1bmsKKzM5NTE0IDgxMjU5MDA5YmEyYzhmMDI0MTExYzczMDhiYzc3NDc2ZTU0NzA4NDUgbGVnYWN5LXRydW5rCiszOTUxNSAyNTM3OGJkYjFiM2EwZGE4Y2RkY2VmNDIwODA3Y2Y5NGUwNmY5ZTM4IHJlbGVhc2UyNC1tYWludAorMzk1MTYgYWNmYzBlMjJjZDhmYzU4ZTZiMjIyNmE2NmRlMGRlYTEyNzlhMmVjMiBsZWdhY3ktdHJ1bmsKKzM5NTE3IDc2ZTI5NWVhNTE1MmM5ODQ2ZjFlMDk2NzNhZTQ3Mjc3OWI2NjhhNjQgcmVsZWFzZTI0LW1haW50CiszOTUxOCAxMWEyNjUwZTg1NjhkYzBhNzUxYmRhNmI4NGQ3ZDA1NmYwMTMwMjhjIHJlbGVhc2UyNC1tYWludAorMzk1MTkgYmJiYjdkZGEzMmYzZWUwODU5Yjg2MjMzYmY2ZjM3ZjU3Y2IyNWFkMSBsZWdhY3ktdHJ1bmsKKzM5NTIwIGQ3OWFmMDY1MTE1NTA2ZmJkMzA4M2ViMDgzMjM0MWYzZWI1OTVlMDUgbGVnYWN5LXRydW5rCiszOTUyMSBiMTljZjczYzU0YTc4MDAxZDZkNmQ1YTEzZGZiMDVkOTdhNzFiMmExIHJlbGVhc2UyNC1tYWludAorMzk1MjIgNzI0YmJkNDg5YWQ0NzI3ZTkwNTJjNjliNTYzNDFiMmI1YjJjZDJhOSBsZWdhY3ktdHJ1bmsKKzM5NTIzIDU3ZjYzMGE5ZGUyNjE5NjE2ZjJiMjBhZTFjMzU3ZmI0M2UwMTI4NTIgcmVsZWFzZTI0LW1haW50CiszOTUyNCA5YjdkMTE3ZWI0YmM5NmRjY2E3NGM2YzhjZWU4YWJjOTE4NDkxOTJlIGxlZ2FjeS10cnVuaworMzk1MjUgMTE3NDRmN2JiNDdhODJkNzhiMzY5ZjliZTM3ZTZmNzMwMGMyOWVhZSByZWxlYXNlMjQtbWFpbnQKKzM5NTI2IDY4YWQ1MmIwNDQ1YmRiN2YyMjhhZWM3NzFjZjc4MzhiNTEzMzM5NDcgbGVnYWN5LXRydW5rCiszOTUyNyA0MTQxM2YyMzM0NWI0Zjc1ZTA0NTY3MTQ4MGI4MDljZDJhM2Q5NmNhIHJlbGVhc2UyNC1tYWludAorMzk1MjggOGE2Yzk5Zjg2NWViZDM5Y2ZlNzljNTBlYWRmODQxNTk5NGYxZGI1ZCBsZWdhY3ktdHJ1bmsKKzM5NTI5IDhhZDlhMmZhOGViMmE2MDc4Zjk2YWYzMGM4M2UyYzU1OWRhYjFlZWQgcmVsZWFzZTI0LW1haW50CiszOTUzMCBiZmJlMmM5YjEyMTU5OGI2ZTVhM2ZjMTU4MjdmMjA0MTQ0MGU3NDFjIGxlZ2FjeS10cnVuaworMzk1MzEgZjIzNWU4ZWYwZDU2OTA0ZmUyMDRhZGFiYTczNzVkZDcyNzJhNjJmYyByZWxlYXNlMjQtbWFpbnQKKzM5NTMyIDA3ZWFmNjBmNzU2NTBiMTcwZjM1ZDM5YjkzYWU1ZjFkYTI5YWRiZTAgbGVnYWN5LXRydW5rCiszOTUzMyBiOGQxYjQ1MjkyMDcxMTYzMzY4YjU3Y2NlNzFiNDBjM2UzNzkzMGUxIHJlbGVhc2UyNC1tYWludAorMzk1MzQgYWM4ODA0NGNkZTQ4NmIwMGEzZTQ3OGQ3Nzg1YjdmZDdhZDMyYmRmOCBsZWdhY3ktdHJ1bmsKKzM5NTM1IGRmYWJmMGM3ZjFhZGZkMTdjNDUyNmNmMmJkOWNhM2RjYjgwMmZiODcgcmVsZWFzZTI0LW1haW50CiszOTUzNiBjODY1NTg4NWU0MDY1ZDM1NTMzODM0OTA5MDkxM2Y4NWNhZmZkZjM1IHJlbGVhc2UyNC1tYWludAorMzk1MzcgNmRiZmJlZTU4NWNjODNmZTMzMjMyNjQ2YzZkNzhhOGNhODRiYjViZSByZWxlYXNlMjQtbWFpbnQKKzM5NTM4IDE1MmFlNzE5M2M5YTc3ZWEyYmEwYzg3YzRjNzQ3NjBkODBiZTYwNTkgcmVsZWFzZTI0LW1haW50CiszOTUzOSBmYTA4ODFmZDQ5YjdhOTUwNWUxNzY5NjVjZmE3YTdjODY0NzA0OTI2IGxlZ2FjeS10cnVuaworMzk1NDAgOGJhZDFiZmMzMzE5OTJjOGUxZjM0OWVkNTJiYTllMTY0NWY5OWIxMSByZWxlYXNlMjQtbWFpbnQKKzM5NTQxIDI2OTFjYmRhZTU5YmYzNTYxN2YxYTMzNjgwNTA2M2VkZmFmNGMyN2YgcmVsZWFzZTI0LW1haW50CiszOTU0MiA5MDkzMGQyZDBjMTkxMDc2YTJhMDI3ZDU5ZGQ3ZjI3ZWYzMzQ5NWJmIGxlZ2FjeS10cnVuaworMzk1NDMgMzVjNDM2NzQwODNhOWEzNDEzM2U3YTBmYTI0ZjMxMjI3NDQxYjFkMyByZWxlYXNlMjQtbWFpbnQKKzM5NTQ0IDFiMjVmZTg4MzRhZWZkN2VjYmVjZGI5MDAzYzQyNjg0OTdiNTlhYmMgbGVnYWN5LXRydW5rCiszOTU0NSBmZDUxY2U4ZDM1YWI0ZmQ0MmFmNWVmZjYxZDAyZGNjMjcwYjQ0M2MxIHJlbGVhc2UyNC1tYWludAorMzk1NDYgY2QzMTAyN2E3MTY3YTM3NTQ4ZjI4NTY3OWM1Yzk2N2EwYmJlYWM2ZSBsZWdhY3ktdHJ1bmsKKzM5NTQ3IGQzYWU3OTMwY2I5Mzk1MzNmY2ZmZDQ0ZDE2OTVkOTM2MmVkMGE0YzcgcmVsZWFzZTI0LW1haW50CiszOTU0OCA3M2ZlMjE2M2YwYjMwZDMzYTAyNmM4YmE2ZDI1MjkwZWE1MjU5MDYyIHJlbGVhc2UyNC1tYWludAorMzk1NDkgNWE2YzQ4M2VkNjg5ZjQxMDU4Nzg0Mjg4MjA3ZWI5OTBkYTMxMDQ2YyByZWxlYXNlMjQtbWFpbnQKKzM5NTUwIGMyOGQwZWQ4NmZmMDU4Yjk4MTAwZTZiNzcxMzA0ZDQyZDExNTE2OTggbGVnYWN5LXRydW5rCiszOTU1MSA4ZWY1MDBjNDUwNmM3MmI3NGJmOWZhMDUwMGE5NTlmZGQzZDUwZmY1IGxlZ2FjeS10cnVuaworMzk1NTIgZjRjMmM2MWNiNTYwOTU5NTI5OTQxMjcyZTE4MGRlNDYzMjYxZTI1YyByZWxlYXNlMjQtbWFpbnQKKzM5NTUzIDM3ODU5YzZhZDViYjVmN2ViYWQxOWExNjlkOThkZWE0MjZjMTIxNTIgbGVnYWN5LXRydW5rCiszOTU1NCA1MmM2NWQ3M2ZiNzQwMTlmNmY5YWI1NDdjMGZiMTg1MTA5YjJiMGJmIGxlZ2FjeS10cnVuaworMzk1NTUgMDk4ZWExZTE4ZThkOTc2MDRkOGY2ZjE4ZDBhZjlkYTFhOGEzNWI5MCByZWxlYXNlMjQtbWFpbnQKKzM5NTU2IDBhZTMwNzIxMjc1NTBhZTI0Yjc0MmYxYjMyYmNkMWM0MTUyYjEyZmIgcmVsZWFzZTI0LW1haW50CiszOTU1NyAwZGEzOTc1ZmIwYmJmY2Y3ODJkOGMwZjY3ZTY1ZTUwMmIxMDZhNzQ3IHJlbGVhc2UyNC1tYWludAorMzk1NTggZTYxMTlkNTc3Y2QzNWZkOGQ1Mzg1ZTUwY2MxZmRhYmU0Y2JlNDc5NSBsZWdhY3ktdHJ1bmsKKzM5NTU5IDAyYThjMDY0M2Y1YmNlMjY2YmVhYjc1MGFiOTFjNzAzNmVmNzgxN2MgbGVnYWN5LXRydW5rCiszOTU2MCAxY2YxNzAzN2EyY2E4Yzc1ODE3N2NiN2RhYTE0MWEwMzhhNDYxODIzIHJlbGVhc2UyNC1tYWludAorMzk1NjEgNWYyNzg1NzIyY2JhZDAzOTQxYTIxNjc3MTY3Yzc5NmY3M2YzZmVhMiBsZWdhY3ktdHJ1bmsKKzM5NTYyIDQ4MDZjYjAwOWE5Y2U2MjNjZWY4YzFhMTFhYTk4MDEzZDM0MWE2MDIgcmVsZWFzZTI0LW1haW50CiszOTU2MyA5YTJlMjAzMThjOWY1ZmJkYjc4YTkxOTQ0YWYwODhkOWVmY2NkM2FkIHJlbGVhc2UyNC1tYWludAorMzk1NjQgNjIwOTkyYWEwYTllZjU4M2QzNmJmOTNjNGMxMTljZGMyODJlYTA5NyBsZWdhY3ktdHJ1bmsKKzM5NTY1IGI2OGIxMzViNDU1MjYxZDI4Mjk5NzA3YzY2ZTUzMGNmOTA4NzQ5ZDYgcmVsZWFzZTI0LW1haW50CiszOTU2NiBiY2QwNWNmMmQ2MWJhODBjZTliNTc0YjkzODdhMmRiMzI1NTNmNmU3IGxlZ2FjeS10cnVuaworMzk1NjcgOGNjYWQ3MzIzMTVmODkyZGI1M2IzZGI1MTlkNzdlOGQwMDRlNGFjZiBsZWdhY3ktdHJ1bmsKKzM5NTY4IGFmZGFkZDU2OTE5NzA1YzFlMTkxOTUxZjJiZDRjYjU0YTNiNzA3MTcgcmVsZWFzZTI0LW1haW50CiszOTU2OSA1YzBjMDZlMjI2ZWMwNmVhNjRmNGE5MDZkMzY5MWU2MDcwODA4YTdiIGxlZ2FjeS10cnVuaworMzk1NzAgNDBkZGYzNjZmNWExNTJmNmJkMjBlOTgyMDkyMTkyOWJkOTJjZjM0MSBsZWdhY3ktdHJ1bmsKKzM5NTcxIDliOTk0YzY3ZTkwOWMwODZmMDI2MTcxMWI5OWI2NGE3NzRiOTEwMWYgbGVnYWN5LXRydW5rCiszOTU3MiA4NzNhMWIyZWZkYzczNjU3NmRhMDQ4NDgxNGNmNjU2MDg5YzAxY2VkIGxlZ2FjeS10cnVuaworMzk1NzMgMmMyODBlNDY2MWQwYTA2OTQ0NGNhMjEwMTRiNWE0YWQ1NjZmZjdiYSByZWxlYXNlMjQtbWFpbnQKKzM5NTc0IDM5ZWI2YTIyMWNmMzEyNDIyMWExNGIzOGU2M2Q0OTkxY2YwY2Q4ZmIgcmVsZWFzZTI0LW1haW50CiszOTU3NSAyMWJjNjI2MmViOTkyMGFjOGMyZTU3ZWExZTNmMGJmYzdkZTZhMGE4IHJlbGVhc2UyNC1tYWludAorMzk1NzYgODljZjJlM2ZlNzI4YTY4ZjRiYzY2ZmNhOWMwYWY3OWUwZTA4NWE5YSBsZWdhY3ktdHJ1bmsKKzM5NTc3IGY4NmNkMjc3ODZhYjMxOWI3MzY1NTEwYjU2MDUwM2Y2NjVhMGZhYTYgcmVsZWFzZTI0LW1haW50CiszOTU3OCA3NzU3MWY3MWIzZTY3YjBiZjNmNWQ4OWE0NjNjYmUzMDUwMmI5MzBhIHJlbGVhc2UyNC1tYWludAorMzk1NzkgNWE4YmY4ZTdkMDEwMmMwZTBiMWVmZGQ4MWFkMDBiNzIwNzFmMjFiZSBsZWdhY3ktdHJ1bmsKKzM5NTgwIGE2NzBhNWRkMWZjNmFhOTE3YmI2MmFkNDU2MDRjM2ZjYjY4M2Y0OWEgbGVnYWN5LXRydW5rCiszOTU4MSAyM2RkYTkyZGU5OTM4YTI4ZmY1NTVlYzgxMzhmOTQ0NjBiMzEyMDUxIGxlZ2FjeS10cnVuaworMzk1ODIgMWYyMzZlNTk4YWU5NzYzMWQ0ZGI0NDcyMzAyNTAwZmYzMzg0MWMzYiBsZWdhY3ktdHJ1bmsKKzM5NTgzIGFmM2EwNjYyNWE2ZTU5YzJkYmY5MmI0MGVhYmI3NGJjMmQ0NTY4MWIgbGVnYWN5LXRydW5rCiszOTU4NCAzNWE5OWVjY2FjYTY3OTMyNmY1ZTVjOTkwYjNiOWY2YTY5NGNmOWJkIGxlZ2FjeS10cnVuaworMzk1ODUgZWNiNzg4NjNhNGVlN2YzMTQzMmI3OWZjYzE0MzYxNDljMDU1MGRjMSByZWxlYXNlMjQtbWFpbnQKKzM5NTg2IDdiMmI4ZGI5ODEzNjMzNTA3Y2U1OTY1ZGYzODdkMjQ1NWI3ZTA0YjIgcmVsZWFzZTI0LW1haW50CiszOTU4NyBjNmQ3ZjFmZTlkMWViZTkxYTZhYmI4ZjMyNWUwYjhjZTU5MjBkOGZmIGxlZ2FjeS10cnVuaworMzk1ODggOTBiYjcxMTIyMjU3YzExMjNjZWM4OWI1NTA5YjdiOTI4MWVmY2Y0NiByZWxlYXNlMjQtbWFpbnQKKzM5NTg5IDRkMWJkOWQwYzAwNmRiNjYzZWNlNTc5YzhhMjQwZWU2YmEzN2IwNzMgcmVsZWFzZTI0LW1haW50CiszOTU4OSBkMDJkMzg3NTU0ZTIwMGJlZmNlZWM5OTliNzg4ZjQ1OTNiNDM0YjQ5IHJlbGVhc2UyNC1tYWludAorMzk1OTEgNzA5MjdjNzk5YTIxZTI2YjNiNWNkMGY2ZmMxMDVjYmFmOTcxY2RmNCBsZWdhY3ktdHJ1bmsKKzM5NTkyIDhmZmVlZGI2MDZkMzMwY2RkM2E0ZDE2YmE2NzZhMWE2ZWEzMGI0Y2MgcmVsZWFzZTI0LW1haW50CiszOTU5MyA2ZjNkMjA5NTU1ZWI1NWZmNDhmNTVhMWQ5NDVkNGVmZjBhYTIxZTQ4IGxlZ2FjeS10cnVuaworMzk1OTQgNzI2NjBjMDg2NmExOWYwMDM2ZTcyMDgxNzk4YmViYjhmNmUxZWYxYSBsZWdhY3ktdHJ1bmsKKzM5NTk1IDc3NGJmOWEzOGIyYWI5NDY2NmM1ZmI2NTRkYTRlMjRlMjRhNWNhMzYgbGVnYWN5LXRydW5rCiszOTU5NiAxN2E4MmJhNDU0NTJhYzFiNWExMmRlOWRkZDQzM2NmYTYzOWEzNzVkIHJlbGVhc2UyNC1tYWludAorMzk1OTcgMzk5YzQxMTc2YmI3OWEyZjI0ODVjOWQ0YTM4MDdhOGMyMDk1ZDRhNSByZWxlYXNlMjQtbWFpbnQKKzM5NTk4IGE5NTc2NWY2OTI4MjUxZDg2ZjBkMTM1N2ViNDY2NDFhYzQ4MzM5MTIgbGVnYWN5LXRydW5rCiszOTU5OSA0ZTBkMmE3ZjVmMTU0NDFiZGMxNTJmYjFlMGNhNGUwMGFmZmMwNWY3IHJlbGVhc2UyNC1tYWludAorMzk2MDAgNzc3YjI5ZDkxM2E2MjJhMmU5OWY4M2E3ZWVhMjNlYWZiMGY2NzA5YSByZWxlYXNlMjQtbWFpbnQKKzM5NjAxIDQ5NWU3ZmZhZDdlOGNjMDY0N2JmZTJkYzMwNGU5MGNjZGVmYTNmYzAgbGVnYWN5LXRydW5rCiszOTYwMiA2ODdmYWE5Y2Y2ZWIwOGMxNjJlZTM5MmY1NTA0ZjQ4OGJjMzI2NjMwIHJlbGVhc2UyNC1tYWludAorMzk2MDMgYzI2MGQzYjdkNTgyOTgzMDQwM2QxNWZiZDU0YTc0NDg5NjA0OGM4OSByZWxlYXNlMjQtbWFpbnQKKzM5NjA0IDAzY2ZkY2JjNGQxZjNhMzUzZGMzODUwN2ZhNDBjMmZmNzNkMmEwYTEgbGVnYWN5LXRydW5rCiszOTYwNSA0NWFhYTQzNmI5NDUxMjYwNjMxMjQyMjBiYmQ1MThlYzg4ODM3Y2JkIGxlZ2FjeS10cnVuaworMzk2MDYgMzAyOGUzMGFhODM1NTkwMzVjZWYyNzJiNDdkYmIwYjdkYmIwNzEwMCByZWxlYXNlMjQtbWFpbnQKKzM5NjA3IDI3ZTE0MjZiN2YzMWQ2NDJlNDExNGEyZmJmNjEzZDhkZjY0ODRmMjQgbGVnYWN5LXRydW5rCiszOTYwOCBlMjIzMzRiMWRhNjdmYjI5MTZlNjg2ZDNjNGRmOWNlNjNiNWM5N2Y3IGxlZ2FjeS10cnVuaworMzk2MDkgN2RkNGU2Y2I5ZDI3NTI4M2VjNTgwYWI3MWNmYTNjNjE5ZTEwYWZlZCBsZWdhY3ktdHJ1bmsKKzM5NjEwIDY4ZGJjYmYwNTE2YzU3NjU4NjIwNzkzZTI4NDYzYTc4MjIwODk5NjUgcmVsZWFzZTI0LW1haW50CiszOTYxMSBlMzE1NjRjN2JkYmY3YTI2YjNkODMxYWU4MDhhY2ZhYzU2MTcxODYwIGxlZ2FjeS10cnVuaworMzk2MTIgMWU3Yjc1NTE5NGE0ZGRiNzQ5NWU0MDgxY2VhNjc3YTlmNTEzMTQzNiBsZWdhY3ktdHJ1bmsKKzM5NjEzIDQwN2FjNDk5YTVhMzkxZjY2MGU0Y2Q2NWEzZGUzZTlmMTkyYTI1OTIgbGVnYWN5LXRydW5rCiszOTYxNCBlMGE5ZjY2YjcwMTQ2NzE2YjZjMTc0ZWZmZTE2NDM4ZGZkYTllNDcyIHJlbGVhc2UyNC1tYWludAorMzk2MTUgYWU1MzZlNjZlODZmNWYwMWMxOGNkNDI1ZTAyZGZmNjdkZjc3MWMzMSByZWxlYXNlMjQtbWFpbnQKKzM5NjE2IGI2NDYzOWNlYTNlZDg3ZmZmNGVjMGU0YTkyYjZlNDMxNWJiYjdjY2QgbGVnYWN5LXRydW5rCiszOTYxNyBmNWJkN2VhZDE2YzQ3MjM3MWQ1NWFhMTlhZTI0MDM2OGQ5ZWQxZjZkIHJlbGVhc2UyNC1tYWludAorMzk2MTggNGFlN2RhYWYwYTY2MTE4ODQ0OWFiODNkZmE5YTM3NmNkYWQ5OGE4MSByZWxlYXNlMjQtbWFpbnQKKzM5NjE4IDhkMzcyNzZmZGYwNzdkNmQyM2Q5NjNkM2Y3Zjk1MzgxZDAwZjE5MjYgcmVsZWFzZTI0LW1haW50CiszOTYyMCA2YjQyZWViNTIxNGRhOGEwMzIyZDMxNjJlNTNmZWUzMTkyYjk3Y2M0IGxlZ2FjeS10cnVuaworMzk2MjEgOGYyYmYxODY3NGNiZTkzMjgyMGYzZTlkNDBkMmEyODNhMWRjOWJiYiByZWxlYXNlMjQtbWFpbnQKKzM5NjIyIGQzM2Y0ZmM4NGQ0YWYyYjE5ZTYzZjYwMzIzNWE5MTQ5NzhiZWNjOTIgbGVnYWN5LXRydW5rCiszOTYyMyBjMzc4M2ExMmExYmMxOWQzZDBlYjI4MTI0ODc3ZTIxYmVjMjhhMzJhIHJlbGVhc2UyNC1tYWludAorMzk2MjQgY2E4NDQ1MTdjODQ5NTJjNDU2NDMwYmQ1NWI2MDRiMDM3MGZlZjU3NCBhc3QtYnJhbmNoCiszOTYyNSA2YTIwODMxZDM1N2Q1N2NkNjI0YmFiOTBkZTM3MzNlNTFlYjUxMzEzIGxlZ2FjeS10cnVuaworMzk2MjYgOWVmMjVjODlkMGQ2YzMwNjljZDgwYWI5NTk3YzBhMjcwMGUxNjE1NyByZWxlYXNlMjQtbWFpbnQKKzM5NjI3IGI1YTAxMjgyZGFkYWZjOTljY2E0ZWE2MTEyMzQ0MDUzZGI4Njc4MWEgbGVnYWN5LXRydW5rCiszOTYyOCA4ZWI3NWMyOGVkOTQxYzQzMmY1ZDEzZGMxNTBmYzM3Y2RiNTYxMDgyIHJlbGVhc2UyNC1tYWludAorMzk2MjkgYTJjZjI1NjQyYzhlY2RmOTZhODg2ZjQyM2ZkODYyYWI3MzUxYjhlZSBsZWdhY3ktdHJ1bmsKKzM5NjMwIGNiYTEwYzZkMzRlMzg1OTNlNjZkNmE5NjhkNTFlMGI4N2JlMDEwYjggcmVsZWFzZTI0LW1haW50CiszOTYzMSBhODNlOGRmMTM0OTg2MmFmMzE4NGE2MjE5ZGU1NDdlZmE3ZmVmN2YwIGxlZ2FjeS10cnVuaworMzk2MzIgMWQ0ZDg1YzczNWU3YzRmOGExOWU2MGVkYTYyYmNiNTExNGZkMmM2NyByZWxlYXNlMjQtbWFpbnQKKzM5NjMzIDZkMDRjYjJjZGQ0YWZjY2FmNTg4YzRlYWU0YWFkMTI0ZTViZmU5OWYgcmVsZWFzZTI0LW1haW50CiszOTYzNCA4NTY1MWViM2Q5YTkwZDEyMWEwZjQyYTViMDRiNzQxMmYxNTM2ZTBkIGxlZ2FjeS10cnVuaworMzk2MzUgNjc4NDhjODcxNzY4YjU1OWMzZjIzNGE5NGY5NmJiNGZmYzJkODdkNiByZWxlYXNlMjQtbWFpbnQKKzM5NjM2IDU2MTFkYjQ1MWEzOWJhMmVmN2I4YTUwYmMyYWEyNDU4NjBjYmI1ZWYgbGVnYWN5LXRydW5rCiszOTYzNyAwYmUwMDc3NWE4MGM0NTFjMDUxNjAxYTljNDA1ZDc2NGFmZjNjNDMxIHJlbGVhc2UyNC1tYWludAorMzk2MzggZGM1ZDcwNjI4M2Q2MmZlYmM0NTg3YWJkOWI5YzI5MmJlMjIwMmYzYyBsZWdhY3ktdHJ1bmsKKzM5NjM5IGI4ZTU3MWU2ZGUyZTNlNTc2N2ViMGVhYmQ2NTBhMmI5NjU0ZTdlNjIgbGVnYWN5LXRydW5rCiszOTY0MCBlNDU0ZDZjMWIzYzFmM2ZjM2MzMTcwMGI4NzBiYWMzNDNjNGU3YjFkIGFzdC1icmFuY2gKKzM5NjQxIDYzMGZmNTQ0MGRmYzZlOTQzY2Q0MzEzNWM2ZTg1YjdkOTY5MjQ3NzcgYXN0LWJyYW5jaAorMzk2NDIgNzUzNDU3ODc5NDI1NTkwYTQxMzU5NjA4ODAzMmExZDhiZjVmMGMxMSBhc3QtYnJhbmNoCiszOTY0MyA2YzNkMGEwYzE5NTYwMDg3YjU0MzUzZDI1NDZkYWU0MWVjOGNiZDhjIHJlbGVhc2UyNC1tYWludAorMzk2NDQgODQ1NDE3MzFiMTY2YTZjNDU1M2FhOGNmYmM5ZGY3OTdmMDFmOTcyOCBsZWdhY3ktdHJ1bmsKKzM5NjQ1IGY2YTIwOWI2OTUwY2FiNzNhYTAyMmI5OWI1N2IyNTJjY2JmYTk1ZjggbGVnYWN5LXRydW5rCiszOTY0NiBjZWVkMzNlYWM0MzYxNjgxMmEyNjcxZWVhNjVkODNlYWY4Zjk3ZjQ2IGxlZ2FjeS10cnVuaworMzk2NDcgNWQ1MjM2ZWFlOGJkM2Q2MGRmODAzOGNmNTk3ZTA2MDYzNDQxNWQ0YiBsZWdhY3ktdHJ1bmsKKzM5NjQ4IDQxMmQyMWUzMGMxMzBlMjI3NmI5ODQ3MDg5YTYxNzU0OGZlODdjZTMgcmVsZWFzZTI0LW1haW50CiszOTY0OSA2MTJhMTIxNzhlNDdiNzA4NGM2ZTEwM2Q1MDk1ZTBmMWVmNDY5MTJkIGxlZ2FjeS10cnVuaworMzk2NTAgZDE0ODEzZTc4YTUwMGZiMmI5MWFjNTRjZTVjYTFkNGQzMTkwM2Q2NyByZWxlYXNlMjQtbWFpbnQKKzM5NjUxIDlkNDMzODFjMTg0Y2JiYmM3ZGFjYzJhMjZlZDVlMDA4NWE0MDlhOWEgcmVsZWFzZTI0LW1haW50CiszOTY1MiBlMWRmNDhmMjg0N2FkOGU4ZGRmNjAyYjdmMjk0MDlhNjhlYzlhZjliIHJlbGVhc2UyNC1tYWludAorMzk2NTMgZTliYWUyZmViYWM4MDBlMDNiY2JjZWI3YjRlNDhhYWEzZDA5NzI1MCBsZWdhY3ktdHJ1bmsKKzM5NjU0IGYwOTUxZmRhZWQzN2MwYWYzMzg1OGRhMGE3ZmQ0MDZlYjE0NmFkNDQgbGVnYWN5LXRydW5rCiszOTY1NSAxNzJmY2Q5YzE5NTI2MTVjODFmZDBjYTgxZDhlMTBlNTU1MDZmY2Q1IHJlbGVhc2UyNC1tYWludAorMzk2NTYgOGJkZDhjMmM2YzQ5NWY4YTZmNThhNDFmZDU0YTZkNjMyMTZkNDlhNyBsZWdhY3ktdHJ1bmsKKzM5NjU3IDNlMGJiN2Y3NWFiNzY1YTljOGE1N2I5MDExYjgyMTlhN2Y2MTVjMDkgcmVsZWFzZTI0LW1haW50CiszOTY1OCBlNDY2YzBhNTUwYjg4Y2I4N2JhNDJhNTFiYjM3YmVjZGUyODdiMTk2IGxlZ2FjeS10cnVuaworMzk2NTkgMDJmZTVkNDk2ZmNlOTkyNDZjNjNiNTIzMGEyNzJmMmRkZGJmYjRlZSByZWxlYXNlMjQtbWFpbnQKKzM5NjYwIDY5MDdlNDcxYmRhY2U0MDBkMjMwYTA5NGM2ZjYzMDY3NmU0YTI0ZTcgbGVnYWN5LXRydW5rCiszOTY2MSAzYmU4MzUzNTAwODI4NjJiNWFlNjg4M2RlYjQwMGYyZGNjM2UwZWJhIGxlZ2FjeS10cnVuaworMzk2NjIgZjk4NzkyMzc4OTU0MTdiN2RkODUyODExOWJjZjQ4NjdkOGE4NWU1OCBsZWdhY3ktdHJ1bmsKKzM5NjYzIDI5ODVlNDJlYjJkMmIwOTFjYWQxOGE2MmYzZGZlYmI0Yjk5NWY0NzQgcmVsZWFzZTI0LW1haW50CiszOTY2NCAzMzBjMjMwNzUwNTQxOTEwNmY3MTY3MzZlMDEyMzE1MDBmZjFiYzJjIGxlZ2FjeS10cnVuaworMzk2NjUgMmZkYTdiMTc0Nzk0ZDljMDA3OGU5YjY1NzVmZTA4ZmQ0MWZjOTlkNCByZWxlYXNlMjQtbWFpbnQKKzM5NjY2IDU0OGJhZDIxNTQyOWYzOWFmOTM3MzdlYTE5NWI5NWRkYTAyYTgyYjMgbGVnYWN5LXRydW5rCiszOTY2NyBlMjk5NTU2MzYxMGY3MTc5NGVlZGM1ZjlhYmNhZDAyMWNlMDhiOGI1IGxlZ2FjeS10cnVuaworMzk2NjggN2E3ZTg3OWIyYWExYjJlMDU5MWViNTQ0Zjk4YTRjNmI4ZWZmZmJmYiBJRExFLXN5bnRheC1icmFuY2gKKzM5NjcwIGI2MWNkZDRmODg4YmY5ZjYxMjhmMzY2MjI1MTM1OGYxMTEzMGRiMTQgbGVnYWN5LXRydW5rCiszOTY3MSAwOGE1NTFlNzU2MWNjMmI0NjNkYzc3MjVhZmEyOGJkMmZlYjM4NGQzIGxlZ2FjeS10cnVuaworMzk2NzIgOTVjMGRkMTFhZmE3OGQyYTVmZTE4YzY0MjU2NGJjYWI3NDRmMTU0NiBsZWdhY3ktdHJ1bmsKKzM5NjczIDU4NmI0OGUzY2I5OGEwMzNhM2Q3MzExMjBhYmIwMTZlZjgwYTQ2MWMgcmVsZWFzZTI0LW1haW50CiszOTY3NCA5MjFhZmQwOGE1ZGNiZDQyMDEyOTg3ZThiMmI3Y2RlMzlmMGQ4MTkyIHJlbGVhc2UyNC1tYWludAorMzk2NzUgZDBhZjdiMDk4YTk5ZDYyZWViMmU2N2Y2MTczYmMyODcwNmIwOWM0YiBsZWdhY3ktdHJ1bmsKKzM5Njc2IDkyMzcyM2E5YzQzY2I5NmU4MTg1MzJlMDMyYTE5NTcwZjUxNWNiY2UgbGVnYWN5LXRydW5rCiszOTY3NyAzNTcyMjQ5YzFlNzcxMDI5NDI4OGQxY2Q1OTk2MzIzMzM2ZTRhMTczIGxlZ2FjeS10cnVuaworMzk2NzggZDQzZGZlNjk1ZDA4YTRhNzQzYjZkZTI1MTc3OWEyMzQ4YTk0Nzk3ZCByZWxlYXNlMjQtbWFpbnQKKzM5Njc5IGUxNmI2YmRmM2Y4OTlhN2Y3NmI4MTczZGI1ZGI3OTNkOWU0YTRlM2QgbGVnYWN5LXRydW5rCiszOTY4MCAyMmE3MjBiMzUzMTRkMDEyOTlhZGFlYTZiMmZhMDUxMWEzYjMzMmMyIGxlZ2FjeS10cnVuaworMzk2ODEgZTc4ZTg0ZjFhODI0ODdmY2M0NTNlYzNlNDRkMWViY2ZjNWI4MjlhOSBhc3QtYnJhbmNoCiszOTY4MiA3NjYzNWFiN2I3MDc0ZDg1NjM1MWJiYjg3ZDM0ZGY5N2ZjMTllYjA4IGxlZ2FjeS10cnVuaworMzk2ODMgYTY0YmUxMzhmMGY2YzQ4MDYwZDY0M2RlODk0ZjkyODE0YmRlNTMwNSByZWxlYXNlMjQtbWFpbnQKKzM5Njg0IDZlMDRhNTU3YWUyMGNkNmVmYzJkY2I2ODE4YzdiMTQ3MDg4ZTBjZGIgYXN0LWJyYW5jaAorMzk2ODUgNGUzOTg4MzczNzNjOWFkNmUzNzUxZjU5ZDhhMzQ3NDA5MDU3MTcwYyBsZWdhY3ktdHJ1bmsKKzM5Njg2IGFhZTM3NDMwZjUyNTk2MzQ3N2EwYzVhYWMzYTEzYmZhNjBkNjM0YjQgYXN0LWJyYW5jaAorMzk2ODcgODU2N2ViMjNlNjVkZWI0ZjNiMTM2YmMxOTU3ZWQwZGIzYzkzYzYzMiBhc3QtYnJhbmNoCiszOTY4OCAwZTY5MDc4Y2FkOTAwZmQzN2EyNTUzYjdlODdiMDliMzNhZGE0MDgxIHJlbGVhc2UyNC1tYWludAorMzk2ODkgNTY4NWVjNTlmMzViODQxMzAyMWYxNDNkOGU4NDYzOTZkMWNmZTU2MCBsZWdhY3ktdHJ1bmsKKzM5NjkwIGFhYjFkNWZkZjY0ZGY2NTZlZGYzYTI1ZjM2M2UyZDEyNzg3NTIwMWYgbGVnYWN5LXRydW5rCiszOTY5MSA4ZTg2ZGJhZDhjNzE0ZTk4OGM4YTA5MjFiOGIxZjdmZTEzYWFhMWI4IGxlZ2FjeS10cnVuaworMzk2OTIgNTljNGE2NTY0MmM1NjdhZDgwYTM4YzU1NDdkNWFjMDI4NDc4NjlhOSBsZWdhY3ktdHJ1bmsKKzM5NjkzIDZlNzBlZDZkZmFkNjc1Nzk3MDliMjIxOTdiN2UwOTkxMGU2ZjZhNGQgSURMRS1zeW50YXgtYnJhbmNoCiszOTY5NCBlOWUzMGQ5Mjg3MWU5YTI3YWEzYTY3NDQ1MDJhYWY3MmY2YWMwODg5IGFzdC1icmFuY2gKKzM5Njk1IDdiMzVjMjkwNDBjOTkyZmFiZTk0MjRlMzQ3ZWRmZGZjZWMzMWUxNjcgbGVnYWN5LXRydW5rCiszOTY5NiA3YjdlYjNlNzYyMGRmOTEwMDE4OGIzYjljYTMxOGE2NjIzMDUxMzQ2IHJlbGVhc2UyNC1tYWludAorMzk2OTcgNzJmZWJlZTU4ZTdiOWUzNjgwODA1YWI2YjE5YTQzZGUyY2UyMzJhMyBsZWdhY3ktdHJ1bmsKKzM5Njk4IGMzOGU0ZWM3YjdmMTFkNTZlM2NjYTM0MzZjNjJjMDU0YTkwYWYwYWYgcmVsZWFzZTI0LW1haW50CiszOTY5OSA3ZTc5ODliNmFjMzZjNGI5MTU1OTdhOGJjZWFmNDNmMGQzYzBhMDNhIGxlZ2FjeS10cnVuaworMzk3MDAgNWE2MjY4NmY3ZGZkZjY0ZWI2YzEzZWYzM2VhMmRiZTM1ZWZmZjdhNCByZWxlYXNlMjQtbWFpbnQKKzM5NzAxIDMwN2I3ZWVlM2UzZDkyMjA3M2E2NmM3YmU0OGM5ZThlYzNlYTE1YWYgYXN0LWJyYW5jaAorMzk3MDIgZDk0N2ZiZWMzNWQzZjA0ZjE0OGRlNGYwYWY0ZmY4MjZmOTA1YmIzYSByZWxlYXNlMjQtbWFpbnQKKzM5NzAzIDcyNTk1YTYxNTU3MWI0MDY3MWU5MzNkMjMzMWU3MmM2YzE3MmZiNDEgbGVnYWN5LXRydW5rCiszOTcwNCBjM2Q2NGJjN2Y2OTYyMjg2ZDRhNDBiMDhjNzUzNDNiZjM1Nzc0NGYyIGFzdC1icmFuY2gKKzM5NzA1IDU3ZjYyZTVhMzkyMTY2NjAwZTRjMDc2YjYwNWY3ODk5ZTZhYzFiMmYgYXN0LWJyYW5jaAorMzk3MDYgYzdhN2UzZDFiZmE3MGE0MjA4ZGQwOTc4MWJjNTkxYTcwOTA3MzI2NSBhc3QtYnJhbmNoCiszOTcwNyBhYzdmNTQwNzI0NmY0MGZkM2ZhZDQ4ZDUwNjllZjU5MTZhYmE1ZTYzIGFzdC1icmFuY2gKKzM5NzA4IGVmN2NkZGViMzI3Y2M4YzRjZDcwNTU1ZDQ1MDE0ZWNkM2I3ZTMzNzkgYXN0LWJyYW5jaAorMzk3MDkgYjEwODFjNDk1ZDQ2NzMzYmJmYTdkMmJjYTNiMTMyMDgwZGRhNDdkZCBhc3QtYnJhbmNoCiszOTcxMCAxNzQ1YzJlZGM1MTRkOTIzMmNlNTRmOTUxZTk3NDI4ZDBlZWFmYWZhIGxlZ2FjeS10cnVuaworMzk3MTEgYTQ0MjliNzc4N2Q0NGU1YjliMmY4NjEyNTFlMjBkMWM2ZWVjZmVkZCByZWxlYXNlMjQtbWFpbnQKKzM5NzEyIDIzNDJjZGI5MjY5NTZiMmQ4ZDhkZjMwNTNjNTc1ZjBlNmM0MWZlYjggYXN0LWJyYW5jaAorMzk3MTMgZWNlNWViNmYyYjVhMzNkZDI4YTkxNjVkZjJiMTE1NjRkYmM2NGZlMiBhc3QtYnJhbmNoCiszOTcxNCAzYmQ3NDgyNGEzYWNkMGExZTQwNmI1MzlkY2JmYmRhMzdiMDZlZDQ5IGFzdC1icmFuY2gKKzM5NzE1IGQyMDQ0ZTVhMDZjN2U2MzhhMmNhM2FiNzBmN2QwMjUxZTliMzRiYzIgYXN0LWJyYW5jaAorMzk3MTYgYTRiZWM3YjZiNjQwNWIzZWFhYzI4ZTQ1ZjIxNWU4NGRjOTJhNTFjMyBhc3QtYnJhbmNoCiszOTcxNyAzMGU4OGExNzVmZGM5MGM3OTc1MThkNjlkYzljM2ViZjY3ZDQ2OTk0IGFzdC1icmFuY2gKKzM5NzE4IDUyNWRhYzBkMjg1YmYyZTI0ODgwMGM1MjNkZWNiZDJkMGQ2MDZhN2UgSURMRS1zeW50YXgtYnJhbmNoCiszOTcxOSA3NmI5MWFjYWQ1ZTg4Y2NmNzI0YzRhZjE0NGUzNmU0OGIxYWNlMDM3IGFzdC1icmFuY2gKKzM5NzIwIGJjN2Y2ZGVhYjM0MGFlNzU3Mzg0NjJlZTdjYmFkZGFmOTRlOWJlZmQgYXN0LWJyYW5jaAorMzk3MjEgZGQyOTI2MWNiNDM4MjBlYmQ5YmU4NjBjNWE0ZTc1MzI4YmNjY2U3OCBhc3QtYnJhbmNoCiszOTcyMiA5ZWI0NDFhNzA3MjQ2YmRhMWU3YWYxZGIzODEwMWVhNjE5MzBmMTVmIGFzdC1icmFuY2gKKzM5NzIzIGNkYTg3MzU3MTg1ZmI5M2NmMGE3OTMwY2NjOGMxNzFmM2IyZDdkOTUgbGVnYWN5LXRydW5rCiszOTcyNSA1NjY5MzA3YzEzMWM1Mzg0NjY1NmFjZTlhNmYyOWMxYTE2OTk2OTRiIHJlbGVhc2UyNC1tYWludAorMzk3MjYgNDJkM2E0NDAwZDM4NjZjYTg2NDVjMGZkZDY0NjNlMjNkOGVmN2QxYSBhc3QtYnJhbmNoCiszOTcyNyAyMTYxMWZmNTU4YTUwMjM4M2I1NjllYmFiOTI0ZGI1YzlhNTBmNDczIGFzdC1icmFuY2gKKzM5NzI4IGFlNTM5YWY0YWZjNTAxZDQzOTZkMTJlZjYwY2I0NDM5YjQ0ZGQwMDQgbGVnYWN5LXRydW5rCiszOTcyOSA2MGRmZTJmNTVjMGY1M2ZjNjQ5MTY4YTc1MWVkZjNmZjQ5OWIxODFhIHJlbGVhc2UyNC1tYWludAorMzk3MzAgNjY3OTJhMmVmM2RiZDA0M2NhNGU5NmQzNzQxYjQ3YWM2NGY0Mzk0NSBhc3QtYnJhbmNoCiszOTczMSAwNmFkNjM0NTY0OWZkZGI2YTQ4YWFiNjI3YzhkZGIwNWNhOTllNzJjIGFzdC1icmFuY2gKKzM5NzMyIGQ3ZjQwNzA5ZTE1ODU0MGRhZmE3NTYxODA5MTNiNGVlNWY0OTJlZjEgYXN0LWJyYW5jaAorMzk3MzMgYmI1YmE1NDM1OWU1YmNkMzgyZjk5ODk3MjAwNzRhNTBiYTRkMTQyMyBhc3QtYnJhbmNoCiszOTczNCA0OTZlYjVkZWQ1ZTQ1YjNlYzgyNGQzMzJmMjRkZjk0ZWNjMDlkOWY5IGFzdC1icmFuY2gKKzM5NzM1IGM5ZmE4NWI0MDUzYjc1Yjc5MjQ5NDY4OGNiNTM2MzljNjI2NTgzZmEgbGVnYWN5LXRydW5rCiszOTczNiBlYjJjMDlkODc4NzAxODNmNzlmNzQ0OWViNjRjMzNlZDZjOGIwZDg2IGxlZ2FjeS10cnVuaworMzk3MzcgZmUxMDM3M2NmOGEyNzFkZGFiZDdkNTlmYjFiOGU0ZmZhMzM5MDlmZCBhc3QtYnJhbmNoCiszOTczOCA4M2YyNDVmNzI4MzJlMzkxZjhmZWE0YTJkNGQ3MDIzZGFhNjM5OGIyIGFzdC1icmFuY2gKKzM5NzM5IDUzNjU5MGMzMjMxMTg1MmEzM2ExODhmY2Q3MWVkNmRjYzhkNmM5YzIgbGVnYWN5LXRydW5rCiszOTc0MCA1NzQ3Y2VkMzU0MjRhNmYxMDY1YTIwOTcyZDIyMWViN2JiMTBjODA2IGFzdC1icmFuY2gKKzM5NzQxIGNiNWNjNDhiNWMyOTVhZjA4MmE5Nzc1MDQ3ZmU1ZmU0ZWM5N2UyYzcgYXN0LWJyYW5jaAorMzk3NDIgYmM3Y2ExNjMzNGJhYjU0YWQ4ODExYmIwMDU5ODcxZGU1OWRjY2RkOCBhc3QtYnJhbmNoCiszOTc0MyA5ZWQ0M2U2MzdhZTdiNWFlZDViMWFkYzhkY2Y5YjhmY2Y3YjExM2I3IGxlZ2FjeS10cnVuaworMzk3NDQgNjkxM2FiYjcwNDdhZWZmMThhODIwYjMzMzM4ZTEwNWRiOWFiYzZiMiBsZWdhY3ktdHJ1bmsKKzM5NzQ1IDhiZWMxMjBkYmIxNmE2Nzk0NGViM2RlZmI0YTY2MjM5NDNmZDkxMTQgbGVnYWN5LXRydW5rCiszOTc0NiAwYjgyNjhlMGQ3MGU3NzgyOTlhYTJmMmY5Yzg4NGM0NzhhYmExZjZlIHJlbGVhc2UyNC1tYWludAorMzk3NDcgNGYyODQzZGZhMjNjNzlhYzI3YThlYTYwMjM1YTgxNGUwZDJlODhkOCBsZWdhY3ktdHJ1bmsKKzM5NzQ4IGQxMjAxZmFlMDZhODUwMDczZTE1M2EzZTdjZWI1NjkxOGEwMzU1MmIgbGVnYWN5LXRydW5rCiszOTc0OSBkZmI4ZmMzNzdiNThlNjhkZTYwZDc4ZGEyOTdiMGU3NzQ0ZDEyZTk5IHJlbGVhc2UyNC1tYWludAorMzk3NTAgZWE2ODA4YmExNjM3YmMyNzg3YWZiZTNkMDJmNWU2ZDU5MjMzYWZmZCBsZWdhY3ktdHJ1bmsKKzM5NzUxIDdlZDg3MDUwZTE2OTc0NjZjMjIxNGQ1OGVkY2YzMGUzNWUyYWEyMjkgcmVsZWFzZTI0LW1haW50CiszOTc1MiA1MzkwZGRjNzdlYjg2NmRmZjM3MmQxYWVhMmQyYjUxYmU3NGIzMjlhIGxlZ2FjeS10cnVuaworMzk3NTMgZTAxOGZjZTE0ZjEwMDY1NDFlMTBiODQxMzE0OWNiMDkyMGQzOGRiZCBsZWdhY3ktdHJ1bmsKKzM5NzU1IGQwMzk5Mzc5ZDBjYjI2NGMzODIzMTMwMzBjMzQzMjc1ZTQzYWQ2Y2EgbGVnYWN5LXRydW5rCiszOTc1NiBiMzJhMzkwOTFhZWRjYjZiMDY5Y2YwY2RkZTZlOTMwNGNkYzAxY2Y3IHJlbGVhc2UyNC1tYWludAorMzk3NTcgMzcxNjA1MTgzMGMyY2M1YWIwZDVjMWM4MjI5ZTA1MDUxZDRkYzlmNyBsZWdhY3ktdHJ1bmsKKzM5NzU4IDFjNGQxOTJmMTU2OGRmOGNhZTJkMzUxNDFhNzI5MjQ3NTY0YTNjZmUgbGVnYWN5LXRydW5rCiszOTc1OSAwNWI3MTU4MjJiYTU5NmUyNzU1NTU1YzUxNWM4ZDM3MmMwODA0M2YwIGxlZ2FjeS10cnVuaworMzk3NjAgZTc4MTU0OTViYjI3OWIxOTJlYzE0ZGU1M2FjZDlhYTk5ZDNlNTg1YyBsZWdhY3ktdHJ1bmsKKzM5NzYxIDQwN2MzZGFjYmQ3YzMwNWZjNjc0MjMwMjg2YTI3YmFiMjM5ZTFkY2EgbGVnYWN5LXRydW5rCiszOTc2MiA3MThlOWRlMjJlYTcyNWUyNWI0MGZiNTc4NWJhZWRlMzBkYmVjMWI1IGxlZ2FjeS10cnVuaworMzk3NjMgZmRjYjU4Y2JmZjRkZjBkNmQwMjE3NmZlZTlkNWZkMjA4NDE2MDYxMiBsZWdhY3ktdHJ1bmsKKzM5NzY0IDI1YmEyZjMzMTNjOTFjYzRlNzlmNjc3M2JlYjJiNTc4OTRjMjZhNzQgbGVnYWN5LXRydW5rCiszOTc2NSAxNzgyOGEwMGE0NTQ0ZmEzZmI0MjA2NWJiNTFkNjBiZThmNTY1MTNmIGxlZ2FjeS10cnVuaworMzk3NjYgYTdhNDkzZGI2MjMxM2QwMzNiZGJjNGM2NWE4ODc3ZjM0Yjk1NmVkZCByZWxlYXNlMjQtbWFpbnQKKzM5NzY3IGU1NjE0NDcwNDgwOGQ3Y2U2YzMwNWMwYjRmMDUxNGUxZWJiZGJhNTEgbGVnYWN5LXRydW5rCiszOTc2OCA0NzQ5NmU3ZGJmMmZjZDMwNjBjNzkwMWExMjNmYzYxYjFjMjc2MmZlIGxlZ2FjeS10cnVuaworMzk3NjkgODFlYmQ2ZTE3N2EzZjhhOTA0MzU3ZDhjMDcwYTcwN2EzYjgzMDA0ZSBsZWdhY3ktdHJ1bmsKKzM5NzcwIDE0NDA5YjgyMDkzM2ZjNzdiZDVjYWI5YjExYTNhZWYyNWExNjU2N2UgbGVnYWN5LXRydW5rCiszOTc3MSBjMjhjMWEzN2I4NmFlMTgwMDgxOTYzMDk5MjY0Njg1YWRkNTRjODY1IGxlZ2FjeS10cnVuaworMzk3NzIgYjcyYjNlNTE3YTRkZTdhMjRkZTliMjMzZTdmNWM2NTliNTQ3NDBlNiBsZWdhY3ktdHJ1bmsKKzM5NzczIGViMTVjZGQ0YTJmMTAwMTc5MjA3NGNhMDc4OTAyNjk4OTQ1MmZmODIgbGVnYWN5LXRydW5rCiszOTc3NCBlMGUzMjBmMzZjOTM2M2Y2ZDVmOGJmYzQwNzNkZDZjNTI3OTQ0Zjk5IGxlZ2FjeS10cnVuaworMzk3NzUgZDkxZWQ3MTA3ZmQyZGEwM2QzNTZhY2JjNTI0M2E2OGQwYjUwNTg1MSBsZWdhY3ktdHJ1bmsKKzM5Nzc2IDc5YzViODE3ZmVkYzExNTc5MzBiOTBlMDFmMjNmYjk2MDZjYTM1Y2UgbGVnYWN5LXRydW5rCiszOTc3NyA3YTVhYzIwMzE1NGFhYTJkNzU3NWExYmQ5MjVkODg0M2Q3ZTZlMjAyIGxlZ2FjeS10cnVuaworMzk3NzggM2Y2MzM0MWQ5MzEyZjY5MjIxZDY2NzBkNWNmZTU5M2Q5NzE0N2FhOSBsZWdhY3ktdHJ1bmsKKzM5Nzc5IDUyOGUwMzg4MzlhMmFhZTdkM2RlYTJlNTdiOGY0NTRlNzZhOThlMDIgbGVnYWN5LXRydW5rCiszOTc4MCA0YWFmNTA2YTdkMDk5MmI4YzE1NGE1MGFiNTY0MzhkM2ZkZjJmMWU3IGxlZ2FjeS10cnVuaworMzk3ODEgZjM3NjIyMWJiYjc2YzFkMjcyZTQyMzg0MGMzNDhhMWM1YzIzZGJiOSBsZWdhY3ktdHJ1bmsKKzM5NzgyIDM0ZWY5ZjEzOGMzMDNiNzYyYWQ4NjgyYTBiYTQ4NTBiMDViOTMzNmUgbGVnYWN5LXRydW5rCiszOTc4MyA3ZWU2ODgwY2IxNmYyODUyZTA3ZjBkZjUxM2Q3MmQ0ZTJlMTc1ZWRhIGxlZ2FjeS10cnVuaworMzk3ODQgNTc2YjlhOWNlNTc5N2NmN2M2NzJhOTc0NTZkNjkyMWRhMTAyZGE5NCBsZWdhY3ktdHJ1bmsKKzM5Nzg1IDdkMDY1NDM1ZTg2YzFiODgyY2ZmYWIwY2Y0ZGM5MGNmODcyNzdmMzggbGVnYWN5LXRydW5rCiszOTc4NiA5YTdjMmQxZTU2ZGUzMWRhZWEyMGZhMzQ5YjIxZWQwMDQ5ZGVjZDI5IHJlbGVhc2UyNC1tYWludAorMzk3ODcgMDQ0ZDhlMGY2NWYyZmI5ZTM2MTE1N2FkMWIzODI1MzE3MWMyNWZkMyBsZWdhY3ktdHJ1bmsKKzM5Nzg4IGY2NGZiMjg0ZWQxNTRkNDg3Mjk1YTg5MGNhNWYyODI0ODIyMjQzZmMgbGVnYWN5LXRydW5rCiszOTc4OSAwYWVmMzUxMjIzZGFlZDk4NGMzODVkMjU4ZDZhNmVmOTVjZDc2NGJmIGxlZ2FjeS10cnVuaworMzk3OTAgNjZiOTA3NWQxNDJiOGVjNTNiNDZhMzRmZWQ5OGQ3NmE0N2MxNmEzYSBsZWdhY3ktdHJ1bmsKKzM5NzkxIDE0NGI1MjUzNTQzNGZkMzVlMThkNzk4MWM3MWQ4ZTYzYjJlMzkxNDkgbGVnYWN5LXRydW5rCiszOTc5MiA4OTNiZTk0Yzg4OTE4MmE5MDkxYjc5MjBhZGI0ZTNkMWQzNzcyNDdlIGxlZ2FjeS10cnVuaworMzk3OTMgZWZlNjA3MzBhMWVlYWI2ZDI2MjJhMGYyYTg1ZDY2ZmJkY2Y3ZjliNiBsZWdhY3ktdHJ1bmsKKzM5Nzk0IDk1ZDBhODU3YWU1MWZhMTVhNTllYzAxOWNlZjk4MDMzZjMyYmE3NTQgbGVnYWN5LXRydW5rCiszOTc5NSAxOWQ3OTZiZDc0MGY0YTA5NzQ5NjYyMWMyYTgzOTEwYTU3MmEwMDgwIGxlZ2FjeS10cnVuaworMzk3OTYgNzJjYjA0MWNjZGUzYWM3YmViMjk2ZDQ5YmZjMjAzYTVlNDNhZjdkMSBsZWdhY3ktdHJ1bmsKKzM5Nzk3IDMxZDM2ZGQ1OTU5Y2U5ZDllNjI0YmZhMjJhZTJkNTBkNmQyZWJhNTMgbGVnYWN5LXRydW5rCiszOTc5OCBhYWU0MTEzNTJmYmQ2YTRjMzBiOTc0NWE3MjNiZjc4NjhiYzBmYWQ1IGxlZ2FjeS10cnVuaworMzk3OTkgYjFhMGUxYTJiMjhmYWNiYmVlYTdiYjc5ODZkMDhkMDk1NDk1MzE3MSBsZWdhY3ktdHJ1bmsKKzM5ODAwIGM2ZGJmODhlNGIxNGI4NmQwMjE2ZjRjNzc1YzUyNDhlM2Y0M2Q1MTQgbGVnYWN5LXRydW5rCiszOTgwMSBkY2E3MGY0ZWM3N2I2NzQyOTQ4MDMwNjlmYWI1MGI3MWY3ODAwNzk0IGxlZ2FjeS10cnVuaworMzk4MDIgYTBiYjBmZDVlMTQzYTljODQ4NjkwMDhhMjE3NDA1ODQxMzg0M2IxMiBsZWdhY3ktdHJ1bmsKKzM5ODAzIDE2NjFlNzNjMDdhYmEzOTk5OThkODMwYjU3ODc5NzU0YmNiZjEwMjAgbGVnYWN5LXRydW5rCiszOTgwNCBkYjllMmRlYTRjMTEzZDZiZTlmYmM3MTgwYTBmOTgyYjg5Mjk1MDgyIHJlbGVhc2UyNC1tYWludAorMzk4MDUgMTlhMzdhOWY0ZWY5NGIyNmMxNjcwMjk0ZWRiNzc1MWViYmE5YmVhYiBsZWdhY3ktdHJ1bmsKKzM5ODA2IGY3YjBjYmVhOTA1YjViMzQ4ZDEwYjcyNzk1MmQyYWYzY2M5MGVlM2MgbGVnYWN5LXRydW5rCiszOTgwNyAxYWM5ZWQxYjVhMDNjMTkzNTNkNzZiYjdkODdkNGJiNGIxZmY5YjY3IGxlZ2FjeS10cnVuaworMzk4MDggYjhiMTNiMWZmZTc1NzFiNGFmNWY1YmM4Yjc5YWYxM2QwMjgyM2UyZSBsZWdhY3ktdHJ1bmsKKzM5ODA5IDkxNGVjMGFmYTUxYzIxNWIxMDg3OTg4YjIzYzkyNzdiNDU5YjM0NGQgbGVnYWN5LXRydW5rCiszOTgxMCAzOWYzNjMwYTcxMjRkOTBmN2I1NzlmNDk2MjQ2NjJiMzhmNTRjNzlhIGxlZ2FjeS10cnVuaworMzk4MTEgZGJjOTg4YmVhNTVkNmY2YzUxNDU2NTFkYjZjNTk3YmFkZGQ2YTgyMSBsZWdhY3ktdHJ1bmsKKzM5ODEyIGZkNjMwMDQyYWFkNDNkZWNmNTBhZjY0MjI0YjZhMDdkMTM0YzBiZTEgbGVnYWN5LXRydW5rCiszOTgxMyAzNzc4MDgzZmUyYzg2MmM0MGQ5M2VkMjNjNjcxMWIzNDIzMTZjMGVlIGxlZ2FjeS10cnVuaworMzk4MTQgODU3ZjY4ZmJhMjc1NDRkYWNhMzI4YjA5ZDNjY2RiNjdjM2E3MWUyZiBsZWdhY3ktdHJ1bmsKKzM5ODE1IDg0MmNhYTI0NTkxN2Q4ODVjZDljMzYwZjEwYzhkZDEzODAyNzg5YWQgbGVnYWN5LXRydW5rCiszOTgxNiA0YmY2NDU5YzhlM2JiOTY0MzMyNmQ1YWI5ZDYxNzI0Mzg3ZmI5MzRiIGxlZ2FjeS10cnVuaworMzk4MTcgZTE3YTMwN2IxMjE2OTQwOTA1ZGIzZjFjYzMzMjkwYTdkMDk2YmIwMiBsZWdhY3ktdHJ1bmsKKzM5ODE4IDhkYWVmZTg0OTk0OTM0ZGUzZTY1ODRmY2ZmMzA1MzhkMDVmMzFjOGYgbGVnYWN5LXRydW5rCis0MTMzOCAxOTMzMDVjOWRiZGIzNTQ5YWQ1OTYzZjVmODJkYTc0N2E2MmM1NTRhIGxlZ2FjeS10cnVuaworNDEzNDAgNzZhNmU5MDg2MjRkN2M1Y2RiN2U3N2Y3N2FiYzdmZTY0Y2Q2N2Q5NSBsZWdhY3ktdHJ1bmsKKzQxMzQxIDUyZjY1ODk4ODc0YTY4ODg1YjMyN2I3ZjdkODY0YzY5YzNkZjUyYzYgcmVsZWFzZTI0LW1haW50Cis0MTM0MiA0NGZlMTU3MjU1YmM0Y2Q4YTA1ZjdmMDYwMGM4ZmUyNzhmMmUwM2FjIGxlZ2FjeS10cnVuaworNDEzNDYgZGZiMTEzOWVkYzU1YTFiMGY3ZjI3MmVkNzczNWNmNTRhNDAwNDZkZiBsZWdhY3ktdHJ1bmsKKzQxMzQ3IGMyYTk4YmEzNzFjOGE5MGMwYmRjMWE0MmM3MjczOTkyMjg4Mjc5YWUgbGVnYWN5LXRydW5rCis0MTM1MiA4ODUyMzAxNzQxNGMxODczZGNmM2MyYzE1ODE1OWY5ZGM2NmZiZjE5IGxlZ2FjeS10cnVuaworNDEzNTMgMzliMWU3NGJhMTdjNTU0NzE4OTZlMWE0NDA0NTEyNjk4NjIwY2U4MiBsZWdhY3ktdHJ1bmsKKzQxMzU0IDliMGRkMWY1M2FlMjE4NmQ5ZjI4ZWYyMDg1ZGEyZDZiYzAyY2E3MzIgcmVsZWFzZTI0LW1haW50Cis0MTM1NCBhYmJmZTkxNzg3MzE5YjdmOTQ1NDNmNDBlYTdiYTE1ZDk5YWQ2ZTBiIGxlZ2FjeS10cnVuaworNDEzNTUgMmUyNWU5ODMyM2E3ZjY1MWZhOTI1YzU0MDc0Y2RhOTIwODhiZTVkNiBsZWdhY3ktdHJ1bmsKKzQxMzU2IDEzZGVlYzUyODFlZmNiMjBhNWQ0MjQzMDBhYTQ4YTBlNDE2NGM2M2IgcmVsZWFzZTI0LW1haW50Cis0MTM1NyBlYjlhMzljMWE3OGJiNzNlZGYzZjFlM2Q5NGY0YTA1MWNjZWU4MWU1IGxlZ2FjeS10cnVuaworNDEzNTggYTAwMGYzMjJkZDA1ZGJmYWJjNWQ2NjFmMzU1ZWU3NjkzMjViMTVmYiBsZWdhY3ktdHJ1bmsKKzQxMzU5IGVkMjQ3ZjZlNmYwNzU0ZGY4MGNjZTU5M2M5ZTE4N2Q1NjhmMjZlMTAgcmVsZWFzZTI0LW1haW50Cis0MTM2MCAyMGJiN2ZmMTY5NTI3N2JjY2RhNmU1MDNhZjE2NDIzMDc1Mjc4NTdjIGxlZ2FjeS10cnVuaworNDEzNjEgYTQ5N2UxMGIyM2U0NzBjYzc2YjM2ZjI3ZWU3MDRhZTUwODgyY2MyYyByZWxlYXNlMjQtbWFpbnQKKzQxMzY2IDY5MDM0YTA4ZTVhM2EzNGY5ZjllNzJhODRhNzc0MDc3NjRkYzYwYTkgbGVnYWN5LXRydW5rCis0MTM2NyBiNjUyZjUzNTIwMWQ2ZmNkZjc0YjA4ODkzNGUzMDQ0MjQ4MjAyNzM3IGxlZ2FjeS10cnVuaworNDEzNjggNmNkMTEwNzQzYmQyMDg5ZjBkNjUzYWE5NmYyOWQ0ZDU3YWQzYWNhYiByZWxlYXNlMjQtbWFpbnQKKzQxMzY5IDhiMDJkOGE1ZTcwN2YyNmYwMjQyZjk2N2MzZmYxNTA1ZDFhZWNmNWYgbGVnYWN5LXRydW5rCis0MTM3MCBmOWU1MGZmOTZmZjg1ZWJmNzZiNGNkNmFjOGIzNjcxMjFkNWUwNmUzIHJlbGVhc2UyNC1tYWludAorNDEzNzEgY2MxN2E1ODI1MThhZWZkNDJhMzM3NjBlOTU4ZmQwMzQxNzYwZGIyNyBsZWdhY3ktdHJ1bmsKKzQxMzcyIDBlY2JmZmJhZGMwMDU2ODIzZTU5M2YyMTdhZmYzNTI0ZmQ4NDI1Y2MgbGVnYWN5LXRydW5rCis0MTM3MyBhYjNkMWU2YTAyMzcyNzBlMmIwMTUyNzZiMjM3ZDlmMzIyNGU4YmFmIGxlZ2FjeS10cnVuaworNDEzNzQgYmZmYWUyZjgxMmY3NGFlZDc1YjAyMGEyM2NmYjJhNDhkNWJkYTM5MiBsZWdhY3ktdHJ1bmsKKzQxMzc1IGYzY2FmODBiZDY2ZDIxYmE4Mjk0YTA2NDkzMjQzNGM5YjEyNTBjOGQgcmVsZWFzZTI0LW1haW50Cis0MTM3NiAwMjliNmM1ZjI1OGU1YWI0NmJlMmQyMDc5OTk2NzM2OGMzMDI2OWVhIGxlZ2FjeS10cnVuaworNDEzODUgNjQ2YmE3NjExNWFjYjQzNTBjYzMwZjVlYzVhMGQ3OGFkNjdhZGE1NCByZWxlYXNlMjQtbWFpbnQKKzQxMzg2IDdiZjQ4NDAwZjI0YThlN2Q5MTQ0Y2YyZTZkZGZjYzExNzA4MTIwNTEgbGVnYWN5LXRydW5rCis0MTM4NyA5YjFlZmIwZWQ2MzU5MmRlMTJkNWJlZmM2NzQ1YjYyOWFjMTVkYjdlIHJlbGVhc2UyNC1tYWludAorNDEzODggNDE4YTYxZWFkMTFiODVkZWJjZTNmYTUxYTJkY2YyNGYyYWEwOWUyMSBsZWdhY3ktdHJ1bmsKKzQxMzg5IDIwYWExZDViM2IwODMyN2VhNjQzYTJlNzkzMTgzYjEzYjYyMGVlMTggbGVnYWN5LXRydW5rCis0MTM5MCBmZDA4OTE4Mzk0ZjljM2IxMTE5MmY2NThmYTQ2YmVmMTY2MDY0Yzk2IHJlbGVhc2UyNC1tYWludAorNDEzOTkgYTg2NDk4NjljYjYwYmJlYTA5NWRmZjU2NDFhY2RkZGQ1OTVlNzUyMiBsZWdhY3ktdHJ1bmsKKzQxNDAwIDQ5YmFmOGIwNDY4MTI1NWFmNDVjMDE5NmUxNDA5OWU1N2M2NDVlOGQgbGVnYWN5LXRydW5rCis0MTQwMyBkZTA5MGJmNjdhNTk4OWRiZmYyNWRhYTU1ZGVjYTFlYjg1YzU4ZWE0IGxlZ2FjeS10cnVuaworNDE0MDQgZWNmOWY0ZWQxMDllNWNkMDBkZWE2MjJiMzQ0Nzc4N2VjNzY3NDg2MyBsZWdhY3ktdHJ1bmsKKzQxNDA1IDZlMmIyODI0MzRkNDk1MTA5NDRmY2QxNDI5MmM5ODRiYjE3NzliZTIgbGVnYWN5LXRydW5rCis0MTQwNiBmODVkYzMxZjFmM2U0ZmUwZjg2NDg1ZDNkYmNiYmFhZmY1ZjM0YTIyIGxlZ2FjeS10cnVuaworNDE0MDcgZDgxMmUzOWFlOTA3YTdkNTk5MWY4NjVmZWE3MDJjOTM2NjBhZGU3MyBsZWdhY3ktdHJ1bmsKKzQxNDEyIGNhZWEwY2MwOWE0MmY5MWM5MTY2YzQ3OTc2ZDdjMWMyMTlmY2EyOTkgbGVnYWN5LXRydW5rCis0MTQxMyAxZDE5NTdmNTU2MjY3OTBkZWM4ZWQwYzFjYjgzMWI3YjIxZDRmNzdhIHJlbGVhc2UyNC1tYWludAorNDE0MTQgZmExZDU2OTQ3MzAxMzA3ZmFhNjcwODZlNDI5M2NjMzNlMGZhM2E0YiBsZWdhY3ktdHJ1bmsKKzQxNDE1IGYwZTMzNTUyMzVhNWU1MjVjODJmZWU2NzJkNjFhNTE5ZTFlOGU5M2IgcmVsZWFzZTI0LW1haW50Cis0MTQxNiA1ZjcxYTUwMjg5YTI1NTZiYWQ3Y2RhZDA3OThiYmRlZjQ5ZmU5ZjY5IGxlZ2FjeS10cnVuaworNDE0MTcgYWVmODUyNmZjOWJiYTZmOWQzZWMwZTkyNWJjYjA0OGQ3Mzg0YjYwOSByZWxlYXNlMjQtbWFpbnQKKzQxNDE4IGY2ZDhiMGRlMTM0YTIwMTM4ZTQ5NWZiMmRlMGZiMmRkNzc1N2Q0MjYgbGVnYWN5LXRydW5rCis0MTQxOSA0MTNjNjhiMzE0ODcxZWE0MWE5NTUzNThiZDVkMDFlMzBmYmNjYjYyIGxlZ2FjeS10cnVuaworNDE0MjIgZWUzZTBlZTFlZGNhN2QzNDgyYzkxOWIwNzI5YjUwMGFmNzk3ODFmYSBsZWdhY3ktdHJ1bmsKKzQxNDIzIDJhOTJkNWNlMGMwZDhjNDhmN2NhMWRjMDUxNTI2MWRmMWViZTc1OTEgbGVnYWN5LXRydW5rCis0MTQyNCA3ZjM3Y2NmNjk4Y2Y1YjAxNDYzMmQ2OGMxNmRhOWYyNjJhMzIwMDVjIHJlbGVhc2UyNC1tYWludAorNDE0MjUgNjg4OGRkZjFlYTlkNTNkNDRmYWE1OTE3NGVlZTAyMTU4ZDIzYmYzZSBJRExFLXN5bnRheC1icmFuY2gKKzQxNDI2IDQyOWY1MzdjZjZkNmI3ZTU5Mjc5NmYxNDI1MTQxMmJhM2JmMWU3ZTAgbGVnYWN5LXRydW5rCis0MTQyNyA0NDYyODcxYTZkY2VjMDEzZGIyODdiZmUwODUwMTA4ZGM2M2RmYjk3IGxlZ2FjeS10cnVuaworNDE0MjggODdlMjIxMGUwN2Y0OWFkNWQ1MGU1YmU5Y2ZkNjRkMjBmZGQwZTA4NSBsZWdhY3ktdHJ1bmsKKzQxNDI5IDZhMDE4ZDhjNTljOTFlMDQ2Y2I2NzFkNDY1OTgyOTY2ODU5ZTYwM2MgbGVnYWN5LXRydW5rCis0MTQzMCA2MDE1ZGYxMzZiMDBkMWJjY2M0MTJjZGJlMjA4OGIxYzA0NTU2ZTQzIGxlZ2FjeS10cnVuaworNDE0MzIgOWI4ODVjOTM0MTQ0YjcwNTVlMzZiZDYxN2EwZTBhYzhlMTIwN2QxNCBsZWdhY3ktdHJ1bmsKKzQxNDMzIDNlNjM0ZTQxYjZlYzNjNzk3MDFhMmFjZjJiYjE2YmZjMzZkMGI2NjAgbGVnYWN5LXRydW5rCis0MTQzNCA2ODY3OTk1YTE4YTdkYTkwMGU3OWQyMjA3NjVmZDE4YWE1Y2YyNWJhIGxlZ2FjeS10cnVuaworNDE0MzUgNzlmMmNlMzIwMTkyNWM5ZDYzZWNiMTY0NDg4NzZmNWRmYWJlZmE5ZCBsZWdhY3ktdHJ1bmsKKzQxNDM2IGRiYzkzZWU1M2UyZmVmZmNiZmI5ZWVlNDE1Nzc4NGIzZTkzNTA2ZGIgbGVnYWN5LXRydW5rCis0MTQzNyA2MDBiYmJhNTZmOWJhYjM4MmJkODA1YzU0MDU3ODU3YWFlZjA5MzNmIGxlZ2FjeS10cnVuaworNDE0MzggOWY3M2RjMDk1M2QyMDIwNGE1NDljOGM3ODFhNGM0ODg0YjIyMmNlYSBsZWdhY3ktdHJ1bmsKKzQxNDQwIGY0ODQyZjQyNzAwYmRiN2Y3M2RiODhjN2FmNjMzYjExN2Y0YTg5M2IgbGVnYWN5LXRydW5rCis0MTQ0MSAzN2RhOTY5YWQxMTZjNWJhOWI3MzU1YzIzZjNiZGZmYTA3MGZlZjA4IGxlZ2FjeS10cnVuaworNDE0NDIgOTAwMzgzNmEwMzZmMTMzNTJiNWJhYjFiMmVjNzM3MmEyMGQ4ZTI0ZCBsZWdhY3ktdHJ1bmsKKzQxNDQzIGY1MzFjMDVjZDI0MDg2NmU0NjBlZWVjZGQxMDAxYjg2ZWVmZGJlNTYgbGVnYWN5LXRydW5rCis0MTQ0NCA5NDc2NTY2MzBiMTI4ZGZlOGVlMjA3Yzc2ZDZmZjQ0YTIxNTZhMWUyIGppbS1kb2N0ZXN0Cis0MTQ0NSAzYWNiNmIzNDEwNzVjOWE2ZTgzNDYyNmRkNzg5MWIwYmI5NGU3YWIyIGppbS1kb2N0ZXN0Cis0MTQ0NiA0YWMzZmExNTg5Mjc5MDIzMDdlZWMyZjkwOTM0NzY2NDEzZTRiZjdkIGxlZ2FjeS10cnVuaworNDE0NDcgNTgzY2U5YzBjNjY0ZWJiYTk4ZDJiNzFhMzA1MzMyOGI1NDhkNjY5MyBsZWdhY3ktdHJ1bmsKKzQxNDQ4IDc2ZWQ3ZmRjOWQ4NWJkZjU4MjkxMjI0YzA1OTJkZjJjMTAyOGI2ZmEgbGVnYWN5LXRydW5rCis0MTQ0OSA0NGQ2M2VlZGZhY2FmMDQ3MGYzMjU0MjY5ZTFhOWIzNWRiOGMwNGFjIGxlZ2FjeS10cnVuaworNDE0NTAgMDg2Y2FjY2ZmZjBlNzY2YWMzYzc1OThjMGVlOWUzNDUxZWMyOGFkZSBsZWdhY3ktdHJ1bmsKKzQxNDUxIGYzMzRlZmU3NmY2YTU0NjIwMjViZjkyMjlmMmUyMTcxMmZkODQ1YjQgbGVnYWN5LXRydW5rCis0MTQ1MiA2ZDhjZTU1NzBjYjcwMjBjZGNiYzAzMDk3MWI2ZDE4NDUyNThiNGVlIGppbS1kb2N0ZXN0Cis0MTQ1MyA0MGYzZDc5YjIxMjUwYTQxNWY3OTlkMjQxMTJmZWZkZDIxYmM0NjMxIGxlZ2FjeS10cnVuaworNDE0NTQgOTRhNDA5ZGE0YmQ0MGI3MzI2ZjcxYWE2ZDg2NTQ1M2Y1NTZhOTU1YiBsZWdhY3ktdHJ1bmsKKzQxNDU1IDFmOWQ0YWMzNTAxMDI4MjMxMmI5YWYzODg5MzlmZTUwZWZjMzhlYjEgbGVnYWN5LXRydW5rCis0MTQ1NiAwZDFlMmU3M2MzZWMwMzM3N2E5MWU2ZjFjOWM0ZmM1NjA2NzQ2ZjE4IGxlZ2FjeS10cnVuaworNDE0NTcgMjk0MjBiZDNiNWNiYjE4YTRlODkyMDY0YzgxMDNmMGVmYmIxYTAwYiBsZWdhY3ktdHJ1bmsKKzQxNDYxIDMyMzZiNWZiMWZiNzBmMzA5NzIzMjlmOWFiNmY3MTUzODg1MTQ2OTQgbGVnYWN5LXRydW5rCis0MTQ2MiBlNzE2NDgzY2IzZjkxNGNiMTk2ZmFkNjI2YjRjMTY4YTVkNGU3Y2Q1IGxlZ2FjeS10cnVuaworNDE0NjMgMDM4NjdmYzZmZDgwNzhjYzNiNGI1NjlhYzM3MmMzMGY5NWU2ZmNjMyByZWxlYXNlMjQtbWFpbnQKKzQxNDY0IDViODIxMjBjYjQ5ZDYxMjJkZDBhYTZlM2JmZjQ4YTJmMTYxNzk2YTcgbGVnYWN5LXRydW5rCis0MTQ2NSBmOTlkNmNiODhmNmYyMDhiZTk2MWY2NThhZWM5MTEwMjk0NzU4MmQ4IHJlbGVhc2UyNC1tYWludAorNDE0NjYgMzk1NmQ2MjBhZjA5YmEwMGQwNjdlZDEwMWMzMzg5MGU5Yjg4MWRhYyBsZWdhY3ktdHJ1bmsKKzQxNDY3IDQ3ODllNzVhNmZlN2QwNjIwNjJkMjJhNTkzYmQyODgyMTU3YzA2MWIgcmVsZWFzZTI0LW1haW50Cis0MTQ2OCBlMjQ3M2M0ZjJlZTBkN2ZkN2VkYzJiY2UxMmQxNjc2NzE5ZTY1ODZjIGxlZ2FjeS10cnVuaworNDE0NzggZjQxNGZmMjg3ODIzYjYwZmYzMjcyMjFmZTU0NTFlYTFjYzlhNjJhMCBsZWdhY3ktdHJ1bmsKKzQxNDgwIDhmZDQ2YjY2MGU2Njk1MGI2OWI2YTQ5ZDZlMzU3YjFmNjEwNTE4YWUgbGVnYWN5LXRydW5rCis0MTQ4MSA3MWVhNmI3ZjU4Y2UzOGQyMjUwNTA5YTdjNTRhZGM3ZmM3YWUxZDA3IGxlZ2FjeS10cnVuaworNDE0ODQgODI1NjU1YmZkZjIwNjQ1MDBlYWYwNjJmN2VmMjVhZGZkMTk2NGI5MCBsZWdhY3ktdHJ1bmsKKzQxNDg1IDA0NDU0MmQ3MDVjMmNhZWVkYTlmYjU3NzRmYjQxNWU0ZDMxYjczMjAgbGVnYWN5LXRydW5rCis0MTQ4NiBmZTRjNjI3YjIwOTY1ZTkwNTk2NDNlY2Y5Yjk3MTc4ZjI2OTAzNWFlIGxlZ2FjeS10cnVuaworNDE0ODcgZTRhNWE4NGU1ZWJiMTM5NzNkZDM1MGZiMDFlZjI4MzgwMWJmNDVhOCByZWxlYXNlMjQtbWFpbnQKKzQxNDg4IGNlOWJhMDFlYjdlZDVmZmQxM2JlMjFhMzU3Njc0ZWM4ZGFmNmQ3MDIgbGVnYWN5LXRydW5rCis0MTQ4OSBkNzJkYjgyYTcwY2Q3YWRlY2M2YjUwMzQ1MWNkNjA0OWJlMzY2ODQ5IGxlZ2FjeS10cnVuaworNDE0OTAgZGY1OTI4NTU4YTU3YjQwZmVjZDY5MWI4NmZhZjhmYTI4MzM2YWQyMSByZWxlYXNlMjQtbWFpbnQKKzQxNDkxIGU5YmU5ZTYxODhmNGQ0ZTMyNmQ3YzE0ZWFiNGU3MmUwZTczNzU3NWQgbGVnYWN5LXRydW5rCis0MTQ5MiAyYjBjZjUwZTc3ZWM5OGExNTRlNzVmOGY5N2NjMDg0NzUzYmI3ZDExIGxlZ2FjeS10cnVuaworNDE0OTMgOWZkMGNkMzYyYWZmYzcwOTJmZDZkMTRlMmMxZDhlNzdkZDEzYTEyZiBsZWdhY3ktdHJ1bmsKKzQxNDk0IDgwMGY0OGExNGE4YTM4MTEyZmExMTAzODY3M2NkOTFjMTU0ZmNlZDkgbGVnYWN5LXRydW5rCis0MTQ5NSBhNmJmN2NhZWQxMzU3MDU2NGUyYzZlNWVlZmM3Y2M2ZjA4YTA0MjgzIGxlZ2FjeS10cnVuaworNDE0OTYgMWRmZDVkNjJkNzY0ZWRlYzVjNzJiMjZmN2YxZTUzYmIwYjg1ZWU5YyBsZWdhY3ktdHJ1bmsKKzQxNDk3IGY5MzczODdmNGRmMTIxZjhmM2QxZjkwZThiYzA3MDhlNjY4OTViOGEgbGVnYWN5LXRydW5rCis0MTQ5OCA0ZDFkMjc3MTc4YTU3YWQzYzUzNzJiNWRmZmNjMGM2YjI4MDkyYTgwIGxlZ2FjeS10cnVuaworNDE0OTkgNGU1ZTE2YTNiZTBkM2MzODg1ZDkyNzk1ZGVkOWMyYzY1ZTM1Y2E3MiBsZWdhY3ktdHJ1bmsKKzQxNTAwIDExYTFiYzM1MjkxN2EzZWRmMWFhZTJjYTUyZDAxNjczYzUyMWM4MjMgbGVnYWN5LXRydW5rCis0MTUwMSA4ZmVhZWQwN2ZjY2Q3MTQ1MjZiYmE4OTMwMzVjZWJjNjc3N2MyZDVlIHJlbGVhc2UyNC1tYWludAorNDE1MDIgY2YxNTcxNGM5YzhhYTM1M2Y2ZDkyMzc0MzdiZGZkY2Q5Zjc0Yzg1ZiBsZWdhY3ktdHJ1bmsKKzQxNTAzIDY4YjM5OGE4NWEzODc0YmQ0MmU2ZThjODBkYzMxNjVjNmU0MGJjMGQgbGVnYWN5LXRydW5rCis0MTUwNCAxMmYyMjJiNjE3Yjg5ZjZjZTEwMzMyZWNmMGE1OWE1M2UzNjExNjcwIGxlZ2FjeS10cnVuaworNDE1MDUgM2ZkOTdkZTBhNzkwODNlNDg4MTFlYjU3ZDJhMTYzYmY4NzAxYTUxZiBsZWdhY3ktdHJ1bmsKKzQxNTA2IGYxM2ZjMGM5YTZiM2E1Njg0NmJiNWEyZTBkMTkyZTIzNGJhNTZhZjcgcmVsZWFzZTI0LW1haW50Cis0MTUwNyA1MWY0ZWU0Zjk3ZWExYWJmOTcyZjgzZTlmNDAzODZkYjJiYjI4ZjI0IGxlZ2FjeS10cnVuaworNDE1MDggMWZhYTMwNjk5M2MwNWFmNTE4OGQ1ODIxZjE4ZWZmNjZmZjRjZTMyZCByZWxlYXNlMjQtbWFpbnQKKzQxNTA5IDlmYzZiZjY1NWY5Y2IwMjk0YjdkNmNhYzA1Zjg4YjVmZTc0YzViODEgbGVnYWN5LXRydW5rCis0MTUxMCBkNGE2ZDI1OTFjZjU4YTExOGYwNWEwMGYxMWMyYzRlN2UxNzI4YWNhIHJlbGVhc2UyNC1tYWludAorNDE1MTEgZTExMzIzMTg5Yzg0OTEyZTBlZTI2ZTkxMzMxYzljZDUzMjkzNmJiZiBsZWdhY3ktdHJ1bmsKKzQxNTEyIDc0ZTU2MWE3ZTgyY2FkN2FlMzhkODVjMzI3ZTc2ZGNmZDY5ZDY3ZTAgbGVnYWN5LXRydW5rCis0MTUxMyBjOTQyNjgyNzdkZTkzODM2ODViZTg2M2NjZTAxOGEyYTc2ZGQ3MTE3IHJlbGVhc2UyNC1tYWludAorNDE1MTQgMWY3NzQ1MjkyZTUwZWQ4NGQzOGUyN2I2ZDUwNzk4YzIyZTBjYjU2ZCBsZWdhY3ktdHJ1bmsKKzQxNTE1IGYyNjA1ZjVhNmQ0NmY4M2E3OWRlZTA5ZmJiMmE4ZGQwNmM5YjAwYTAgcmVsZWFzZTI0LW1haW50Cis0MTUxNyBjMmJiYTVmNDZhYjZlYWUxNzdhNmU0OTg1NmNmMjEyNWU4YTYyZjg2IGxlZ2FjeS10cnVuaworNDE1MTggZmFiMzcxMzZkZDZkYTUzYThhMDlhMjk5MGE5MTUxZTMwNTE2MTJkNSByZWxlYXNlMjQtbWFpbnQKKzQxNTE5IDlmNjg1MmZmM2QxOTFlNDhhNGMxMDExZGM0ZTJiNzQxZWYyNzMzNmMgbGVnYWN5LXRydW5rCis0MTUyMCAxZTFjM2Y1NTMyOGEwODYxNDA0N2UyYjcwMTIxOGJjMTVhYjBkYjI5IHJlbGVhc2UyNC1tYWludAorNDE1MjEgNzJkNWM2MGZhNDVkOWVkYzM5NWJkOWI3ZDgxYTgwMjgyYzQwOTJjNiBsZWdhY3ktdHJ1bmsKKzQxNTIyIDllNjMwY2MxZDMwOTBiOWVjMjBlNWZkNzdiMGViYTBhMjk0MDNkN2EgcmVsZWFzZTI0LW1haW50Cis0MTUyMyBjZjJiNGM4YWQxYWQ0ZTQ2ZjZmMmU2ZmE1YzY3OGFmNmE4YWUyMTdkIGxlZ2FjeS10cnVuaworNDE1MjQgYjdjNmM0NjFhODA4MTgwYjBiYmZiNzE0MTIzNTA5MjA2MGMxNzk3NSBsZWdhY3ktdHJ1bmsKKzQxNTI1IGUwZGRlYTg4MWY0YWJmNzFjNGVjYTRlODEzMzcwYjIwOWJmOWIwYmIgcmVsZWFzZTI0LW1haW50Cis0MTUyNiAxZmRlYmJkNjBkN2RkZGEwZWUwY2EzYzdjZjNhYjNkNDllZTg1YzBiIGxlZ2FjeS10cnVuaworNDE1MjcgN2M4ODAwYjgxYzUwYzlmNjU5YWNkNzQxYTg4ZmVhYWQ0OGI0NzkxYyBsZWdhY3ktdHJ1bmsKKzQxNTI4IDIxNTBhZjg0YTE4NWU5MDhkNWVjNThmYTRhNWJiNTdjZGM0Y2VkNTYgcmVsZWFzZTI0LW1haW50Cis0MTUyOSBlNmQzMWNiZjJlZDM4YzVjMWMyOWM2ZjU1MDJiNDI5YjNlMDBhOTEwIGxlZ2FjeS10cnVuaworNDE1MzAgYmI4MGI4ZjM5M2VmZjFkMmUxOWRkYzE5ZTQwZjVmNTIwMDEwN2RiYyBsZWdhY3ktdHJ1bmsKKzQxNTMxIDc5Mzc0ZWI2ZGI1MTZjY2E5YTg0YmRmOTZiNDdhMTc4NTg4OGZkMTcgbGVnYWN5LXRydW5rCis0MTUzMiBjYjFmZjJhODVlM2RkZDIyODE1ODY0OTkyYjFlNzE3OWYxN2Y0Yzk5IGxlZ2FjeS10cnVuaworNDE1MzMgMDMzYmI0ZGI1YWU4YzFhNjI0YjhiMWUzODFkMWI2YmFlZGIzNmQxMSBsZWdhY3ktdHJ1bmsKKzQxNTM0IDZkNmM3Y2Q0NTI5ODllNTgxOGEwYmEwZWJjN2E3YTMwNjFkZmY3NTQgbGVnYWN5LXRydW5rCis0MTUzNSA1YzhkYzVkMjE4ZDhkNzBmMmYwM2M4OTgwMzc2MDlkMTEzZmM3OTRjIGxlZ2FjeS10cnVuaworNDE1MzYgYjQ2ZGM2ZDEwOTg2NzU0MzFkYTBhZmQxMmNjZTk4MDc1ZTIyZjhkNiBsZWdhY3ktdHJ1bmsKKzQxNTM3IGU4MGExYWY2NzYyM2YwZjU3MjljMWNkYWMzYTcxZmE3YTA2ZWVmYzkgbGVnYWN5LXRydW5rCis0MTUzOCBiMmViMTU4OWMyMmI1MTM3ZWUxMzFkZmEyODA3ZjdmZDUyMmE5NmNhIGxlZ2FjeS10cnVuaworNDE1MzkgNDU3MmZiNGRmYmIzZjBmYjZhZDQ1NzMyOTZkNzhjYjY1ODc5OWVlNyBsZWdhY3ktdHJ1bmsKKzQxNTQwIGVmNjA4YjU4YmZkOGFkNWMxM2Q5NWVjYWVhYTUyZDU5NzBmZTM3OTcgbGVnYWN5LXRydW5rCis0MTU0MSBmODA1NjMyOGYwMWExNjNkY2QwZTUzNzY2ZDJhY2FkNjBiZjk4MTNlIGxlZ2FjeS10cnVuaworNDE1NDIgYjljNjgyZWQ5MTBjZGM2MmIzNzY5NGNlMDc0MGU3NzI0NzQyMWU5YyByZWxlYXNlMjQtbWFpbnQKKzQxNTQzIDkwNzk3MjMzMjA4ZWZlMGZhMTY1OGY1NzA4NTdjNjU3MDY5MzljYTUgbGVnYWN5LXRydW5rCis0MTU0NCA0ODM1M2NmNTEzNDAzYTFkYzYxMjZiMzQ1ZjNjYWU3ZjBmNTc4MmJkIHJlbGVhc2UyNC1tYWludAorNDE1NDUgZDdmNjNlZGU0OTVlODVlMjU1MWViNzFhZDU5NDNjMjI0YmUwNTZiMSBsZWdhY3ktdHJ1bmsKKzQxNTQ2IGQ3ZjUyZmM0MjI0NThhMTY1OTdhYmRkMmFkZTE5Yzc4OGMwYjNmNzIgcmVsZWFzZTI0LW1haW50Cis0MTU0NyBkOWQ4YjJlMmU2MGFkZjA2ZWUwOGMzOGUyMGM3MTVlNjZiODg0MzkwIHJlbGVhc2UyNC1tYWludAorNDE1NDggNzVhNzljYzRjZjdiNjkwNmM1MjAzYmJiZWU4ZTgxNDQ5ZWEyMWM4ZiBsZWdhY3ktdHJ1bmsKKzQxNTQ5IDlmYzdkZmU4NmY5NjYzNjA1YmU4ZjY1MGZmZmYzMTQzZDkwYzk5M2YgcmVsZWFzZTI0LW1haW50Cis0MTU1MSAxZDhlZmZkZTgyZjFiNDNlZjVjOGU1OTYxNTdkZjYyNDk2OWI2YjI1IGxlZ2FjeS10cnVuaworNDE1NTIgZmNhNzMzNzcxMGZkN2IzNDE3ZTQ3NDM2N2VjZjg1MGJlZDU1ZGJhOSBsZWdhY3ktdHJ1bmsKKzQxNTUzIDY1ODQ0NGJhZWJhMzdlZmM4ZTQ5NWFmN2IxYTIzMTRkZDVjMTViYjMgbGVnYWN5LXRydW5rCis0MTU1NCA3MjU1NWE5NjdkNmE4NWNiMzdjYzFmMTNmMWIyYjE2OWMzNTU1YmE4IGxlZ2FjeS10cnVuaworNDE1NTUgNzNlYmRjNjJiZjhmMGQxYzkxM2IxNjRmMzEwYTEzMGU2ZmJlMDdmMCBsZWdhY3ktdHJ1bmsKKzQxNTU2IDRkMDYxNjJhZDIwOWM4MmE1ZGJjZTQ2YmI0ZTE1YWY5MWZkNGU3ZmUgcmVsZWFzZTI0LW1haW50Cis0MTU1OSBkMTcyY2JhOTY0Yjc4MWJhM2U3ZWI0NjBlOGY3OWVlODU1NTM5OTEwIGxlZ2FjeS10cnVuaworNDE1NjAgOWQ5ZTRlZTRkYTg5ZmVmYzRhNjcwYjkzNDAwYWQwNzQzNmJmYTdkMSBsZWdhY3ktdHJ1bmsKKzQxNTYxIDljNDc2NWU5ZGM5MjcyMzY1MjU1MzVkNWRhNmRiMGUyNGVhNmZiOTcgbGVnYWN5LXRydW5rCis0MTU2MiBmOTk3MjEzODM2YmIyOTBkNjFkNGQxZjlhMzhmN2JmZGRjMzdjNzdiIGxlZ2FjeS10cnVuaworNDE1NjMgYTFiNmU2Nzg0Y2E1ODBlNWEzMDRhNTYzMTZkNWNlMjhjZGE1MmU0NCBsZWdhY3ktdHJ1bmsKKzQxNTY0IDE1Y2M2MDE2Nzk1ZTAzNDY2Y2U4MTViNDAxZDM2ODViYTM3NmY0MDAgbGVnYWN5LXRydW5rCis0MTU2NSA3NGU5ZmUwNjhjNGRkMjE4NDNmNGNmMTVlMWMzZGM2YTQ5NTA3OTBjIHJlbGVhc2UyNC1tYWludAorNDE1NjYgNGVhYTcyYmExOWEyZTcyN2JkMzBiNTJkNDlkNzBjMzgyOWUxMGFmNSByZWxlYXNlMjQtbWFpbnQKKzQxNTY3IGExN2NjZmMzNzJlOTlhOTg0MDRmZWIzNDMzNTAxZTBhODcxZTU0MmMgYXN0LW9iamVjdHMKKzQxNTY4IGU2NzVmZDI5NWI0YjllMjY1MTMxYzQ0YWIzOTNmYzcyODA4ZjUxM2YgYXN0LW9iamVjdHMKKzQxNTY5IGNjZDhhMGQyODk1MDk2NmQ4NTNmNTg2MmE2NGU2NzViZmVkNjk0MjMgYXN0LW9iamVjdHMKKzQxNTcwIDViMGY1ZDk3NjMyNThmOWFmODdmZDE2Nzk1MmYxZGI5YmI2YzI5ODkgbGVnYWN5LXRydW5rCis0MTU3MSBhNWQ4ZjA1YmFmOThjZjJjNTBkOGZmNTczNmYzYTc0ZTk3NGU1MGNiIGFzdC1vYmplY3RzCis0MTU3NCA5NmE0ZTgwNjQyNWU0MTg1NWU3NWNmNTMzMmNjYzRhYmUxYTUwNzUzIGxlZ2FjeS10cnVuaworNDE1NzUgNDY1MDE0OTAyNTJkYjdhYWEzMWRjOGNhNzk4Yzk4MTkxODc0MDAzMiBhc3Qtb2JqZWN0cworNDE1NzYgZWI2NmVhZTljMmM4YzM0MjA0MjAxZjNjYjNhNTNiZGJmYjJjM2MxZCBhc3Qtb2JqZWN0cworNDE1NzcgODUwN2Q1ODI1MzU0YWY3OTViYjViNWZlNmEwNDY5MWI2ODM4ZDM1NCBhc3Qtb2JqZWN0cworNDE1NzggOWMwNDkwOTk3ZTY2MjAwY2UzOGNmZTkwMDc0MDlkODY0YWQyOGM4OCBhc3Qtb2JqZWN0cworNDE1NzkgYWJmZWFiNzNjOGYxOWNjZWY3MmU4NDQwYTUxZGU3NzI3NzA0YmUwMiBsZWdhY3ktdHJ1bmsKKzQxNTgwIDgwNTYzZGMxMzQ4NzVmMGZhYWZjODk2NTU0ZTlkZTFjZTVhNDk0MjggcmVsZWFzZTI0LW1haW50Cis0MTU4MSA2ZjQ2MTBmNjkyZTBlYWI4NTViYmU4M2UyZGE0M2E3M2ZjNDAwM2ExIGFzdC1vYmplY3RzCis0MTU4MyA3YWFhMDlmMWEwNDcyNDMzMWMzZjVmNTVhNDQyNGIzYjFlMzc4MjExIGFzdC1vYmplY3RzCis0MTU4NCBjNTkzZjMzNjQzZGRmNTBiZWQ1MGNiMWVlNmUwNzg1M2JiNDU5ZmMyIGFzdC1vYmplY3RzCis0MTU4NSA4MWM5NDRjM2QxM2EwNThmNWZmNWM3ZWNlYzcxZTY0MDIwMmY5OGU5IGxlZ2FjeS10cnVuaworNDE1ODYgMTkxYjU5OTA5ZGVkOGQ0MDM4YzM3YTYzMWFlOGVlOGQwNjhhZjQzOCBsZWdhY3ktdHJ1bmsKKzQxNTg3IGU3MmJjNWRhZmUxNmViZWVlOWFmYjU1ZTEzZDVlN2ViYzAwODkwMGQgbGVnYWN5LXRydW5rCis0MTU4OCA1ZDk2YTUzNmJiZjNlNjVkMjNkYTgwMmYzOTk2NzU0YWI2NTU1ZDg3IGxlZ2FjeS10cnVuaworNDE1ODkgYWQwZjAzODVjNmYzOThmYzRkYWViOWEyMGFmMDRmZTM0MTE4NTM2YSBsZWdhY3ktdHJ1bmsKKzQxNTkwIGNmMzFiMmM4ZTg1NDYwZjBkNDg0OWRlZDBkMDc0NDhlYzhmOGFkNDkgbGVnYWN5LXRydW5rCis0MTU5MSAwM2FlMGI4ZWI2Y2JmYjRiMWNiYWVmNTQ4NDIwODRmN2EyYWQ4ODc4IGxlZ2FjeS10cnVuaworNDE1OTIgZTI2ZGMzMzQ4OTA5YmY3MDA1Mjc1NDg2ZTY5ZDdjYjc4NjdjMzdhNSBsZWdhY3ktdHJ1bmsKKzQxNTkzIDE2ZTAzY2ZiOWEwMjJhZTFkMzkzYjZlYjdjYTM5M2ZlYTBlY2Y4YTkgYXN0LW9iamVjdHMKKzQxNTk0IDc1ZDUzNmIyNDdlYWE5YzE4YmJhNTAyZjIzNWUzNTIwYWQ5MTMzNjQgbGVnYWN5LXRydW5rCis0MTU5NSBhMDg3ZTdiZjUwZjFkZTM3ODQ0MDFhZWQwNDYwMWE0MjVkYTliZGFkIGFzdC1vYmplY3RzCis0MTU5NiA1MDk5NTZhNTRmMzc2MTc2MTg2ZDYzNzYzYjc4NjdmYTBmYjEwZjA2IGFzdC1vYmplY3RzCis0MTU5NyAzYTQyMTRiZmI2ZTQ0YjAwNWVlMTJiZDgxNWZmNTc1MTZmZjFjYTRlIGxlZ2FjeS10cnVuaworNDE1OTggNTIyNTEyMjRjYjk5NWUxYmQ3ODk2ZWQ5ODA4NTg2NDAwOWYxMzJlNiBhc3QtYXJlbmEKKzQxNTk5IDViYTkyMGVlZjAxNjA0MzgxMzkwNTdhYzc5NjZkMDQ0M2I0MDI0Y2QgbGVnYWN5LXRydW5rCis0MTYwMSA4ZWRhMWE1OGE0OTAzNzBhMjZmMjI0OWZlZGU0YTU3MjI1MTlmZDJkIGxlZ2FjeS10cnVuaworNDE2MDIgZjAyMGE3YWRlNmI1ZDVlZWM3ZGI0ODNjZmU0NTBjZGQ0MmI2MWUwYSBsZWdhY3ktdHJ1bmsKKzQxNjAzIDFlMTI4N2I2ZjY1MjZmNTljYjNmMWQwOTQwYTc5MjE2MzMxNjczNDYgbGVnYWN5LXRydW5rCis0MTYwNCBjYjNhZTdjZWExMDY2NjI0OWMzZjJhMDMxZWY0ZmJiMmEzZWRjMGQ3IGFzdC1hcmVuYQorNDE2MDUgNWQwMzFiZDIyMzA3YmNiNDU4NmNhY2E5NWUwN2YyZmExNzVjMzVmMCBhc3QtYXJlbmEKKzQxNjA2IDNjMjFkNWJkMTViZTYzZmY1ZmRkM2Q0OGRmNjNlODY1OTAyNDFjNmEgYXN0LWFyZW5hCis0MTYwNyBjODk3MDdkYWEwMTE0NDljNDE1OWEzYjVmY2VhMmM1MGYyMjZjMDgxIGxlZ2FjeS10cnVuaworNDE2MDggMDFiZDE0NmRjNTIwN2Y3ZDdjMTdiZTIyYzM0YzdhY2JlYmJjNjM0NCBhc3Qtb2JqZWN0cworNDE2MDkgYzgwMDliZDYxMTRmYTY1YjA4NmJlYzhkMThjODYwZjk3MWM2MWM0YSBhc3QtYXJlbmEKKzQxNjEwIGVlNTU0MzBlNWNmZTc3OGRjY2E2NjczNmMwN2M1MjdmMTQxYzUwMDggYXN0LWFyZW5hCis0MTYxMSA1NTFkNThiM2QwY2QzYzc2YzUzMGZhZmRkNTg2Mzg2MzAzNTY2ZTlhIGFzdC1hcmVuYQorNDE2MTIgYWE1ZDhlNGEwMGE4YTQ4NjM4NjQ1ZDg1NDQwYThjOGU2NTcyN2ExZCBhc3QtYXJlbmEKKzQxNjEzIGMxZTY3OGU3YmIxMjgzOWJiYTM4ZjFlODc0ZWUyMWNlNDNmNWI0YjggYXN0LWFyZW5hCis0MTYxNCBhMjlkYzU4YTk5ZjM4OTRlYTQ5ZTNkZTM5NWJjNDJiNGVlYjVmZTZiIGFzdC1hcmVuYQorNDE2MTggMTFlZTk4MmY4YzhkMGU0NjBmNGYxYTRkMGRhZmZhY2NhZjlmZGEzMyBsZWdhY3ktdHJ1bmsKKzQxNjE5IGQ0N2FiZjk3NThjOWZlYWU3NTk3YzZmYzRiODJlZTlhOWViNjJlZjAgYXN0LWFyZW5hCis0MTYyMCBjNjI5ODEyNTAzOWU0ZGZiMTM4N2JiMDkxMWVhYjA5N2YyZWE5ZDFiIGFzdC1vYmplY3RzCis0MTYyMSBjMGMxMmFhNzU3ZTcwOWYwOWM3NmJkMzE3NjIzMDc3N2YyYTVlMmZkIGxlZ2FjeS10cnVuaworNDE2MjIgYWJlMWIzMzJlYWEwMGY3MDc0MDkzMmMxZjY5ODYwYzZhNjM3YTljNCBhc3Qtb2JqZWN0cworNDE2MjMgYzIzNmViNmQ5OTM0NTI3NWY5ZDRmZGFlYWYzNzZlMGFhOWRkY2I2MyBhc3QtYXJlbmEKKzQxNjI0IDFlNjllNjNhZTNhMDhiNDlmOThlYjc1ZjAxM2E5MzhhZDlhYmQ1ZmMgYXN0LWFyZW5hCis0MTYyNSBhYjhhYjliZTZmNGI0N2NhMGJiMWFlNjlhOTgxMGM0M2I0YWU5OGUyIGFzdC1vYmplY3RzCis0MTYyNiBhMjljODliNGU4YzYzMDk1YzcyYzE0ZTI1ZWU4MTkzOTk5MGFlZDM3IGxlZ2FjeS10cnVuaworNDE2MjcgOGFkMzE5ZjNhOTM1ZWM1ZDRhZmEwZjFjNWUyOGY5Y2U4NjgwMmQ2MCBhc3QtYXJlbmEKKzQxNjI4IDUxZTNhODM4YWViZTc0MDFkYzg2MjhjODIxNjZjMDAyZDljZjIwMmUgYXN0LWFyZW5hCis0MTYyOSBhYjQzMWIzMjRhNGJkNDM5OTczMjJmYWY5YWQzYjU2MzgxNzUyMmY4IGxlZ2FjeS10cnVuaworNDE2MzEgYjc3ZWRjZWU4ODhjYTM0NTFhNzA1YmJmMzQxZDA5OGQyZDNmMDVmYiBsZWdhY3ktdHJ1bmsKKzQxNjMyIGRiY2M4OTEyYTI0ZGVjNDRkNmVjYTNkMDkwMjlkN2MzOGNhYTZkNzEgbGVnYWN5LXRydW5rCis0MTYzNiA2NDljMzQxODBhMGY1MGUwMDU1MDRiZGY5NGUwNDJmYzhhYzcwMTZhIGxlZ2FjeS10cnVuaworNDE2MzcgOTZkMWZhMzY5NjRkNGUxMWEwMjczYjQ5ZTRmMDZkYzEyZmI5NTdjNCBsZWdhY3ktdHJ1bmsKKzQxNjM4IDk1NDEzNjliMGRjYWYwNDhmMWJkOTg2YTI4Yzk2ZmZlZWUzN2Y4MDggbGVnYWN5LXRydW5rCis0MTY0MSBjYzMyNjE1OTcxMzZjNjI1NmY5MWNhNzYzMGRkYzZjOTMyOTA3ZjNkIGxlZ2FjeS10cnVuaworNDE2NDIgNjMyMTY2OWYyZjRkMTBjNmJjZTViZTM1ZTkxYzE3ZDk5MjM1NTE2MCBsZWdhY3ktdHJ1bmsKKzQxNjQzIDBlYjZlZjkyYzU2ZTI1Nzk2YjNiMjljZGNjMTkwNDhkMTNjZWIzYjkgbGVnYWN5LXRydW5rCis0MTY0NCA1MmYxZDU3ZjIzN2RiYmRjNWQ4Mzc0NGRmNmQxM2Y0NjRiZGE2MTMxIGxlZ2FjeS10cnVuaworNDE2NDYgZTRiNjIxZTFlZGE2NjIyMDU2NTBkZGMxMTQ2ZjVhYTUxNTQ1NTJjZCBsZWdhY3ktdHJ1bmsKKzQxNjQ3IDMyZTdmZTljMjNiOTFjYjJmNTExODhmYjgyODUxYjg3YWE2YjcyNjYgcmVsZWFzZTI0LW1haW50Cis0MTY0NyBmNmU3MzRiMWYyNjFjNTQ2ZDgwZTk4NDkwMzgwNTRiZjA5N2ZmODRlIGxlZ2FjeS10cnVuaworNDE2NTEgNmY1MDJkMzVmYzc3NWJlNjdiODMxZDRkYjNlNWE1OTk0MWExMDg2MSBsZWdhY3ktdHJ1bmsKKzQxNjUyIDEwMjE0MGMzYTM2MTRkYjNlOTMyNWFiMDIxMjQ1NzE0ZTFkZGQxNmYgbGVnYWN5LXRydW5rCis0MTY1NSBhNWFkNzZhNzhmNGIyOWE4YWE3Zjc0N2RkYjZmMTZhODJkY2UzOGZkIGxlZ2FjeS10cnVuaworNDE2NTcgNTIyZTAwNzNkOWM5ZThiYjc1MTdiZmM2OWMyZWIzYmMzYmQ5ZjI0NSBsZWdhY3ktdHJ1bmsKKzQxNjU4IGY5NDQxODcxNWU1NTMxMjk5ZjNhYjdjY2RjMjE1YzBhMmMzMGNiMzcgbGVnYWN5LXRydW5rCis0MTY1OSAwN2ZkYjRkMmI4ZjYyMzM3ZDM5MzY0YTU2OTM1OTZmNGYxYWQxMDRmIGxlZ2FjeS10cnVuaworNDE2NjAgMDdjZTkzODg1N2UxYmEyZjE4NWM1OGQzYTJkZWE5NzYxZTEyNzdjMCBsZWdhY3ktdHJ1bmsKKzQxNjYxIDE2NDcwYjcyMmYyMDljMDEyNTQzZThhOTAwZWQ5YmQ3MTQ2NjRkOTAgbGVnYWN5LXRydW5rCis0MTY2MiA0MDM2Nzg3NGY4NjE2YWM3MDQ1N2E4MzNmMWRlYmRiZDJjM2I5NGYyIGxlZ2FjeS10cnVuaworNDE2NjMgMzc3ZGYzOWJjZGExZjI2ZmQzM2Y3YmY3NzdiM2JjMjQzMzE2MDQwYiBsZWdhY3ktdHJ1bmsKKzQxNjY0IGVkMzQ3YzQzNmQ1ODk2NmNiZmQ4NGZlYmMxNDBjNTMwOTNhY2VmYmMgbGVnYWN5LXRydW5rCis0MTY2NSBjMjUzZTk5M2RmOGFjZTgyMTYxZWIyZGQ3MzI5ZWNkYTA3Yzc2ZDZhIGxlZ2FjeS10cnVuaworNDE2NjYgNjg4MTczMTViNzRjYTk2OWE0Yzc2ZTUzMGQ2NzdiMTgyYzVlNjAzMCBsZWdhY3ktdHJ1bmsKKzQxNjY3IGJmZDZhNmZjNzBlYWY1M2Q2YzEwYmUwY2I0MTJlZDRiYTRhYmZiZjYgbGVnYWN5LXRydW5rCis0MTY2OCBjZjg4NjM2Y2RmNGJlOTlkNmJlZTljZWIyNTRlOWYyOGQzM2MzNGRhIGxlZ2FjeS10cnVuaworNDE2NjkgYTE0YTdmNjE0YTk2ZGE0YmI5YmY0NjA0NTkyOGU5YTA3OGFmYjhhOCBsZWdhY3ktdHJ1bmsKKzQxNjcxIGJlYzlmYWM5Zjc3YzczMDM0MWRhYjY3ODhkZGJkZDdlZjg2YThmOTYgbGVnYWN5LXRydW5rCis0MTY3MiAyN2RmMmZiZTI3MDY2NGNhMjI4NWZkZDcyYWUzMDAxZDZkMjk5NTVlIGxlZ2FjeS10cnVuaworNDE2NzQgZGIxYzBhYWJjNDA1YTAyZWE1NWFkY2JlYWM2NmFjMTdhYzk0OWFmNCBsZWdhY3ktdHJ1bmsKKzQxNjc3IGUwMWQ4NTI0YjZmNjQyY2JiMzkwOTQxYWQ0NzNmZDU4MGJjM2JhZWIgbGVnYWN5LXRydW5rCis0MTY4MiBjZDhiNWIzMWUwMmFhNGJiOGFjOTdmY2Y5Njc3YWM2ZDE0NzU3MmEwIGxlZ2FjeS10cnVuaworNDE2ODMgOTMwMWE3YzAzMTJhYzAzYjc2OTUzOWIwMjkzM2U3OTMzMmMzMzk5MSBsZWdhY3ktdHJ1bmsKKzQxNjg0IDM1ZmU5MDMyNWY1YjdhMjJjZmE0YjEyNDIzNmFjMDA1OWM2OTBmNTYgbGVnYWN5LXRydW5rCis0MTY4NyBmMGE1MzMwZjJiM2UxMWIxZjU3MGNmZTRhYmM0ZDQzNTNmODUwOTY0IGxlZ2FjeS10cnVuaworNDE2ODggNjM1ZTBkOTA5NjQ1ZWY2NWEzMTMyYTM4MGNhZjMzOWY3YTk1OWY0OCBsZWdhY3ktdHJ1bmsKKzQxNjkxIDZkN2QxYTk5NmEwMjNhOGRhMzVlZmQ5OWFhNjE2YzRhYmFlMTQ2M2MgbGVnYWN5LXRydW5rCis0MTY5NSAyNDlmZmUxM2NhZjhhNTRjNmZkNmJjMDBkYmM5M2M4NDk0NDI2ZjNkIGxlZ2FjeS10cnVuaworNDE2OTYgZmRmMGFjMzZlYjc0NjEyZmE0NjhiMzFlNTg0OTdmYzZkNDM4ZmI1OCBsZWdhY3ktdHJ1bmsKKzQxNzAwIDRiZmNkNWRjZDBiZmEyNTBhNTk5MDM1MjJiMzZkMmI1MWZjMDhjNzQgbGVnYWN5LXRydW5rCis0MTcwMiA3NTQ4ZDc2NTZkODk4NjRiM2FlMGIzZjFkZmNlOWFkZmJmMGEzNmYyIGxlZ2FjeS10cnVuaworNDE3MDMgZGU2OWE1MjRmNGVkYmM2YzNiMTI1ZTk4ODc4NDQ1MWM1MWE4NDY3ZCBsZWdhY3ktdHJ1bmsKKzQxNzA0IDY0YzZhYjU2NzFlN2Q3NzI5Njk4YjA5MThiMTdlNjRjNDgxNTIzYzIgcmVsZWFzZTI0LW1haW50Cis0MTcwNSBkZTBjMmZlYTY1YzIxYmM5YWNiZWQzOGQ4YTAwMWE3ZTQwNTBhMjY4IGxlZ2FjeS10cnVuaworNDE3MDYgYzY5MWZkNjNlYjNjMDk1YzZlZDBiYjg5Njg5NDZhZjM1OGQ5ZDNmOSByZWxlYXNlMjQtbWFpbnQKKzQxNzA3IDE4ZDI3YzQ0NDdkMTEzNmNkYzNiMTNlMDA2ZWEzMDNkZjY2YjY1ZmIgbGVnYWN5LXRydW5rCis0MTcwOCBjMTE1MTM2OTNjYjk3MDNjZTY5YTYxNDIxMWYxMzI5ZTk5ZmQxYWYyIGxlZ2FjeS10cnVuaworNDE3MTAgOTg2NTNkOWY5Y2MzOWMzZTU5M2I0MTRiYmVjYmI4ZGExNDNjNGM4MyBsZWdhY3ktdHJ1bmsKKzQxNzExIDY1MmJkNWU1Yjc3ODJmODZjMDdjM2ExNTIxMzY2ZWExMDlmZTA3NDQgcmVsZWFzZTI0LW1haW50Cis0MTcxMiAxOGYwOWFjNjE5ZTg5MmYyZTlkNWIwYzgzNTA1OGUyMjk3ZWRiNDFlIGxlZ2FjeS10cnVuaworNDE3MTMgYTU1ODMxZDMyOTE1YTA1ZjYxYTFjZjllZGFjM2E4YTkxNjg5MDc1NyByZWxlYXNlMjQtbWFpbnQKKzQxNzE0IDRkYjE3YTAwYmRjZDM1MzA3ZjM2ODcyMDExZDViZDM1YzYzYzRlZDMgbGVnYWN5LXRydW5rCis0MTcxNSBkZWUyNTNhMzExNmM0NTZmOWI4NmNkNzc4MWUyNWRkMzUxNGI1NTU2IHJlbGVhc2UyNC1tYWludAorNDE3MjIgNGVjNjAxMTEwOTA2MTM3NjFlOTkwZmViNmUzZGNkM2M4YjcxNjVmOCBsZWdhY3ktdHJ1bmsKKzQxNzIzIDY1ODZjZDk5MjBlN2UzZmY2YjFjZTA0OWE0NTk0M2QwMWQ0Zjg4N2MgbGVnYWN5LXRydW5rCis0MTcyNCA5Yjg5N2ZiN2FjNmEyMjE2ZDY4OThjZWMwOGRkM2I1MTA2NzkwMzQyIGxlZ2FjeS10cnVuaworNDE3MjUgZjg5M2Q0MDNhOThjMWY4MTljMDIxNmE2M2Y1MjkzOTNhMWM1ZmZiMCBsZWdhY3ktdHJ1bmsKKzQxNzI2IGZhMDhjNjk3YTI3NThkYjNmZWNmZDBkOGY4OTIyMGJiNWQxYTc1MTMgbGVnYWN5LXRydW5rCis0MTcyNyBhZGU2Nzg2ODdkM2IzMjgwNWM0MjY5OWZhOGNmYTNiMjIwNjk4NzE3IGxlZ2FjeS10cnVuaworNDE3MjggMzIxZWZkMDM3ODU5Y2NjZTgzZGU2NjNkOWMzNjdjMmZmYmRkMmYyZSByZWxlYXNlMjQtbWFpbnQKKzQxNzI4IGYxYWUxMTQ1N2QzNGJjM2IwYzY3ZjdjYzAzNDNlODllY2Q1Mjk2YzEgbGVnYWN5LXRydW5rCis0MTcyOSA4NzdiNWQ0Y2EzNjgxNzIxMzRmYTcwYjIxNDRmNGIwYTdlOWFiMzc5IGxlZ2FjeS10cnVuaworNDE3MzAgNzMxMDMyZDEwMTU5ZmJjMGQ1MjQyNDUzZDY4Mjc3OWUxNDY3ZjU3OSBzc2l6ZV90Cis0MTczMSAyNzkxOWNmODRkYzNkZGYwY2RiMzBlYzExMzRjZDZjN2M4YTkyMmMyIHNzaXplX3QKKzQxNzMyIGNlYzljMmMxNGUyOGQ0NGY0MDYwNjUyN2NlODExMmE0YzY3OGNhYTAgbGVnYWN5LXRydW5rCis0MTczMyA5ZWM1YjE2NWZlYTA4MTRhMjdiYWE4Yjk2NWYxNTI5MTA5ZDExYTNmIHJlbGVhc2UyNC1tYWludAorNDE3MzQgNzk2MzEwY2JmZmViMjMyNGU5NDZmZjU5ZTJlZTJlNTEyNjI2MDYyMyBsZWdhY3ktdHJ1bmsKKzQxNzM1IDRjMTVhOGU5MWFlNzRmZWM1YmQwYWM1MzBkYzY2ZmYzMWYxZmE5MzUgcmVsZWFzZTI0LW1haW50Cis0MTczNiA4MWQ1OTk1OTUxZmQ0MTBjYTg2ZGMzZjc0ZDUwZGYxNjM2NWQwZGY1IGxlZ2FjeS10cnVuaworNDE3MzcgOTgwNTYxOTU4ZjFkMzkzM2ZkNjIxMzUxZjlhZGQzZWQyOTljMGM0NiByZWxlYXNlMjQtbWFpbnQKKzQxNzM4IGZiNmU2NGViODZjMDM4ZjMwMmNlMjhmM2Q5ZjZmNzJjOTc4OTExNmEgbGVnYWN5LXRydW5rCis0MTczOSBlYTA4M2VmZGM5NmM3M2E5OTIwNDNlZmVjN2RjZTI3NzcxZTNkMWRjIGxlZ2FjeS10cnVuaworNDE3NDAgNzE5YmEwMmQyZTJjYTYzZDE1MTIyYjQ0NmRjM2YyOTNmZmVkNGM2MyBsZWdhY3ktdHJ1bmsKKzQxNzQxIDdiZmIwOTdmOTU5NzZmNGViYzc2YTM3OTVjZTMwMDc1MjVkZjE4OTggbGVnYWN5LXRydW5rCis0MTc0MiAzZDFiYWY3MTdjNWFmNWQ5ZWY4OTE4NmY1MDM3NTk0ZTcyNmI5YTBmIGxlZ2FjeS10cnVuaworNDE3NDMgZDAyMTRiYjFmZDUxMmI2N2YxY2U0ZWJiMGNlMjNmYzFlMTE5NmYyOSBsZWdhY3ktdHJ1bmsKKzQxNzQ0IDk2OTdlZWVhZjI0NjYzMmVjNDA5M2E3NzZhODZhNzAwNjEyNzlhOGUgbGVnYWN5LXRydW5rCis0MTc0NSA0NWY3YjczODNhNGUyMGE5NzEwZjUyZDljZDk2ZTU4MzcyNmY2NTc2IGxlZ2FjeS10cnVuaworNDE3NDYgZGUxNmE4NWMzYjRjZjM4ZTJlNTZhNzg4MzZmYzc1NzFiZGQyMWYyOSBsZWdhY3ktdHJ1bmsKKzQxNzQ4IDE1YjU4ZTQ1ZjFhMTMxNmFjYzE1Yjc0ZDE3ZTM4MDBlOWRmN2YwZTUgbGVnYWN5LXRydW5rCis0MTc0OSBkYTBiYWI1ZGQ3NDA4OWY3MjdiODZmZmM3MjkyM2QxZWU3MmY3M2RjIGxlZ2FjeS10cnVuaworNDE3NTAgZjY3YzRhYjMwNGVjZWE4MWFhOGE0Mzk0M2FmNWEzMjY3MzA4MDk1NyBsZWdhY3ktdHJ1bmsKKzQxNzUxIGFhN2Q3ZGY4NTNkNTcwNTkwNjZkM2Q1ZTVhOWZhNzEzZDNhMjIzM2MgbGVnYWN5LXRydW5rCis0MTc1MiAzYjkwMjU4ZmVjOWY2YjJlNmIzYzk4Mzk0MGJjYTAxNDg0ZDZkNzU3IGxlZ2FjeS10cnVuaworNDE3NTMgMWZmNDc5MGI3NjA1MDE4YzY0MWZjY2M0NTk2OTIxNDdhNTNkMDE1MiBsZWdhY3ktdHJ1bmsKKzQxNzU0IDhlYmUzNGViM2ViNzQ4MDJhNDlmMmQ3NzEwZjdlNGQ2NDRhNjRkNDEgbGVnYWN5LXRydW5rCis0MTc1NSAxMDQ0MGJjZmEwNjE3MTljN2I3ZTllZmY3NWQyMWU3NDcwMTllZTJlIGxlZ2FjeS10cnVuaworNDE3NTYgMTlkOTZjMmQ3ZGY1NGUyOWYwZWY1ODQzMTNhZWIxYmRlOWExMWY1MCBsZWdhY3ktdHJ1bmsKKzQxNzU3IDNmMzU4YWZiYjNkM2YzN2FmMjAzMjNjNmE3MDc4NGMxM2I3ZTAyYzggbGVnYWN5LXRydW5rCis0MTc1OCA0Y2JmMmEwMTBkOTQ1YjZiY2Q5NTVmYTA1MTg3YzI1Nzk5NzBlYjAwIGFzdC1vYmplY3RzCis0MTc1OSBlM2VjYTY1YWUxNDRmNWRjODQwYjg0NjU0NmRkNGRlNjU5OTEwNjlhIGxlZ2FjeS10cnVuaworNDE3NjAgMzAxZmIwYTk5MzcxNDRlYzk3YjMyM2E1YjhmNDUzZWI4YjViZTc1NSBsZWdhY3ktdHJ1bmsKKzQxNzYyIGZhNjlmMGZhMzZmZWY5YjJlOWM2YTYyMTdjZTRkMTMzNGM0YjNkMTEgbGVnYWN5LXRydW5rCis0MTc2MyBlMTRmNDc5NjQ3NDgxZTRmZDljNTE4MzYxNjJmMjk4YzczMjc2YTlkIGxlZ2FjeS10cnVuaworNDE3NjQgNDlhMDQ5M2YyNDVlM2ZiODRlNTVkZjE5ZTE5YTJlOTA3MzNmYmRhMCBsZWdhY3ktdHJ1bmsKKzQxNzY1IGE5ZDRmYjg2MDdkMjlmZTlmMDAwOGQ0N2VlZGNkY2M3NGU5NzRhMzggbGVnYWN5LXRydW5rCis0MTc2NiBlYzM0NTI4NDBiOTY2ZTZkOGRlMmQzY2ZiZmE0YmM3MGY3MGFjMjBhIHNzaXplX3QKKzQxNzY3IDRhYTAxODc5YThmNWE5YmNlODMzOTE1MTM5MmY1NzIxZDViN2M0N2YgbGVnYWN5LXRydW5rCis0MTc2OCA4Y2I2ODZkZDZlNjQ1OGZmNDllNmY4M2VlNTQ4N2I5YzU5OWYxM2RiIGxlZ2FjeS10cnVuaworNDE3NjkgN2M0ZDViMzhjNTVlNjYyYTY0MTA4ODY0YTM0YjllNGU2YjA5OTc3NSBsZWdhY3ktdHJ1bmsKKzQxNzcwIGI3MGIzZTViM2NkMWM5NmI3Mjk5YmJiNGFmMDZhMmMyZDM0Y2JlOTkgbGVnYWN5LXRydW5rCis0MTc3MSBiOGIzNzgyYjJkYzA3NWJlMjc5NDZiYTViZDA2NzRkZmM3Mzg3OTZhIGxlZ2FjeS10cnVuaworNDE3NzIgZTkwZTdkOWU5ODkxMDlhMTAxOTc5MDJjYjIzODVkN2YwNzE0ZWEyMiBsZWdhY3ktdHJ1bmsKKzQxNzczIDM1NTk2MzA3ZTc4NjAyMWIxMGI0YzJmZmExN2I0OTVhNDBhY2RlMDIgc3NpemVfdAorNDE3NzQgOTYzZDc0OWM5Nzc2NDBjMTllYzRlNzJmYTg5YTEyNzZkNDViYjAyMSBzc2l6ZV90Cis0MTc3NSA1YTg3NjQ0YTM5MDAwZjU1YzE2OTg2NmIyZTdlNjQzNGUyNTBiMWY0IHNzaXplX3QKKzQxNzc4IDhkZDM1ZGQ2YjBlODljY2U1OTJjNzExZTdiMjkxMjEyY2JlYWQ4ODMgc3NpemVfdAorNDE3NzkgM2JhMjMwYzc3ZDQwMDAzMTAzYzllMTNkYzA1ODZjMzU0YTI1MWE1MiBzc2l6ZV90Cis0MTc4MSAxNmUzZWViODUyMDZmZGEyZjBiZDFiYWJiNzc3YTdmYTZiMzgyZWYwIHNzaXplX3QKKzQxNzgyIDRkMWYzZWM0ZWFkNTk2OGE3MmU1Y2Q5NGU2YzUxNTllZDc3ZWE5ZjQgc3NpemVfdAorNDE3ODMgZDZlYTE1MzBkYTMwMDQzNTViNjM3ZTNhODgzOGYzMTc2YWRkMjlmYiBzc2l6ZV90Cis0MTc4NCA0MmFjZjMzYWEzYzhhMjhmMGU0ODAzYzBkMzE2ZWE1OGQ3ZTIyMjE5IHNzaXplX3QKKzQxNzg1IDA4ZTgwYTJiZjQwY2Y4NTVkM2YzZjdlOWZhNTBkYmIwMTExMWM5YWUgbGVnYWN5LXRydW5rCis0MTc4NiA5ODhmZGYwMjUyYjc5NGQ3MDZjZDVhMDIyMDczZWJjMjkwOTcxZGNlIHNzaXplX3QKKzQxNzg3IDYxNzA2ZTU4MWVmOWNhNDQ5OTE0YzczYjlmMjk0NjU5NjlmOWMzNjkgbGVnYWN5LXRydW5rCis0MTc4OCBmMmZhNDBlODgzNjMwYjYzZWNlM2U0OTVhNTRhYjY2MWU2NTJjZGU0IHJlbGVhc2UyNC1tYWludAorNDE3ODkgOTEzYTgwZjQ1OGU2ODc0NzlhNmI4OGQ1MjljNzc2OGRjMmQzZjM5YiBsZWdhY3ktdHJ1bmsKKzQxNzkwIGM4MDg5N2JiNTA1M2NlZWQ4NzhmMzFhYjYzZTM0MGU3YzAyM2M3YjkgcmVsZWFzZTI0LW1haW50Cis0MTc5MSAyYTVlNjAwOWE0NDUyNzAzMjE1Yzg0NWRmMTA0YzcyOTE1MDI1NmFlIGxlZ2FjeS10cnVuaworNDE3OTIgNTBmYTU4YTI0ZTYwZjQxNzBlNzc5NTk2YmI1NWU5NmQ4MGMxZmVkNCByZWxlYXNlMjQtbWFpbnQKKzQxNzkzIDBjZjMyNDhlMjdlNjU4YTZlYTQ4MTI5YzBhMjQ2NTRiNDZkZTI1ODEgbGVnYWN5LXRydW5rCis0MTc5NCAzZWQ1YTRhY2JlN2NiM2I5Y2JmZmE3ZjJhZGViZmJjOTE0ZWMxMjFkIGxlZ2FjeS10cnVuaworNDE3OTUgYTkzYmU1MTlmOWVjNDA3MjRjN2EwYmIxODE0YzA5NzgxNmQyM2FlMCBsZWdhY3ktdHJ1bmsKKzQxNzk2IDdlY2M0MGQyMDU4NjQxZmM3Y2IzMzFmYmU2YzhlMzU4NjE5MzcxOTEgbGVnYWN5LXRydW5rCis0MTc5NyA3NGJlZGZkMGJkNmIyZmZjYTFlYWEzMjkzYTE0YWRhZmNkZjljNmJmIGxlZ2FjeS10cnVuaworNDE3OTggNWNlNDcxMDNmODQ3OTQ5ZTM1OWQyMWE1MDE2NjY2ZmM0OTcwMWRlMSBsZWdhY3ktdHJ1bmsKKzQxNzk5IDNhMzk0MzFhNTRhNTNhYjc2MzNjYjhhOTIyOTFhZDcyMDk5YjIwNTggbGVnYWN5LXRydW5rCis0MTgwMCAzNGE1MTU0ZTYxMWNjMTA2OTcwN2I4YTc4ODA5NTU5NTM3OGQ2ZjUxIHJlbGVhc2UyNC1tYWludAorNDE4MDEgZjAxMTI1M2QzYzQ3MGQzMzkxZTBlYzcwMzA3ODI0OWVmYjA5OTdkNCBsZWdhY3ktdHJ1bmsKKzQxODAyIDYzMGQwMWZlY2ZlYzY0MWU0ZmNhYzA0YTJjNzg4M2E4ZDJiNmJmZGQgbGVnYWN5LXRydW5rCis0MTgwMyA1NmRkZjNhYTEyYjExY2NiYWEzY2VlOWQ5MTVkYzMxMmJhY2MzMGU0IGxlZ2FjeS10cnVuaworNDE4MDQgOThlMjU5NWQ3MzdmMDFjMzM5OWIyYTI2ZGU3MDI4NzhjMmMyMDNlNSBsZWdhY3ktdHJ1bmsKKzQxODA1IGU5YTEwZjc0Y2Y4OGFjN2UzN2MyOGUwOTc4YTRmMWQxNGQ0YWNkZTcgbGVnYWN5LXRydW5rCis0MTgwNiAwM2RiZWMwZDk1MDQ2ZTFhMWY5MTM2Y2EyYzU4N2RmYTNmNDlkODZiIGxlZ2FjeS10cnVuaworNDE4MDcgNzY3NDFlNzNiYjY0OTc4Yzk2N2E4MGZjMjhhYzAwMmEzYzI0M2RhYiBsZWdhY3ktdHJ1bmsKKzQxODA4IDdkNmFiOWYzOTk5NmNjZmEyOTcwYWIwZmFmODQxYTVlMzkzMDNmNTMgbGVnYWN5LXRydW5rCis0MTgwOSAwNDRkMzVjYTM0MjQ3YjZlNzkyMWQ4ZTJhZGI3ZDhhMzc1ZTNkZmZmIGxlZ2FjeS10cnVuaworNDE4MTAgNmNiNTczOWI3MWNlMGI4NGNjZTE3MTkxM2ZmYzczN2JjNzU3NDExNSBsZWdhY3ktdHJ1bmsKKzQxODExIDQzYmM3Y2EyZDlkZmI4NzliYmUwMzRhYzg2NjdmOTY3YWQ3NDg1M2YgbGVnYWN5LXRydW5rCis0MTgxMiA2ODYzMDZhNjdlOWIyNDYyNWZhZjUwZmNjOTgyMTZlMGNjMWNjYjMzIGxlZ2FjeS10cnVuaworNDE4MTMgY2FkYzc3OGFlYzc5NmYyMzU0NDdjNDU1NTdkMWZjZjJmNWQ4OTE2OCBsZWdhY3ktdHJ1bmsKKzQxODE0IDZmMDYzOGU3YmQyMzY4OGE0ODZjMDVlOTMwMGUwZjgwOWQxNTk5ZmMgbGVnYWN5LXRydW5rCis0MTgxNiA1MzZmMjRlMTZhZjI0NjgwMjE5N2JhZWVmM2IxMzQ2ODU4NzFjOWFlIGxlZ2FjeS10cnVuaworNDE4MTcgMTYyNzc3MThjZWI5YWU2NjMxZjI5NzU1N2Y1YzgxOTliYmRjNWFhZCByZWxlYXNlMjQtbWFpbnQKKzQxODE4IDIzZWI4Njc3YmRhZDEzOGZmNmRlZDdiMzg5NjE4YzM3MzNlODk5OGYgbGVnYWN5LXRydW5rCis0MTgxOSA3NmQ1MTE5NzI2MTYyNzc4OGFkNDRjNjNmZWIxYjY0MjQ5MmMxODUyIHJlbGVhc2UyNC1tYWludAorNDE4MjAgZTQzMTZkYTE5Y2ZjMWQ5NGFlOGI2ZmQ1NTJjNjU1Yjc5MTg5YWFlZSBsZWdhY3ktdHJ1bmsKKzQxODIxIDIxNDMzNzFiYjkxZmMyMzdlM2Y5ZDVjOTdjNGE1MzkwMmQ2MjBiNTAgcmVsZWFzZTI0LW1haW50Cis0MTgyMiAxNTZkZjc3Zjk5MmViZWZkZjZlODhlMWVkZTRhZDEyZWMwMzZlM2RhIGxlZ2FjeS10cnVuaworNDE4MjMgNTlhODliNTg4YzMwOTZhMzZiZTY5MGY0ZjE4YmRiYzczZDViNDZhOSByZWxlYXNlMjQtbWFpbnQKKzQxODI0IGUwNmRmNWUxM2RiOWRiNzE3MzdlY2Q3OTMzNDBhNjFkNmI5Y2RmM2MgbGVnYWN5LXRydW5rCis0MTgyNSA3MzBmODRjMmZkZGI1YjExNjQ5ZDg3OWFhYTQwYjZhNmVjMmFkZGY0IHJlbGVhc2UyNC1tYWludAorNDE4MjYgNDlkNjNmMzc3ZmU3MmQ3MTk1ZjE5MjJiYmNlZDNhZWE5ZDljOGI5MyBsZWdhY3ktdHJ1bmsKKzQxODI3IDE0ZjAwMmNkMDM3MWI0YTg3ZTJmYWY5ODczMDM0ODlmMTQ4NjJkNzIgbGVnYWN5LXRydW5rCis0MTgyOCBjODg2Y2IxNmExNTY0NjU2OGQyMmI2YmFkNjk0ZGYxMmJmOGQ5NDg4IHJlbGVhc2UyNC1tYWludAorNDE4MjkgZjM5YmRiZjRiMGMxYjdmYjRhOTk4ZmE3ZGI5ZWViYmM1YWJmMzVhZCBsZWdhY3ktdHJ1bmsKKzQxODMwIGE2YWUxMDJhNmUxMTllZjMxN2M2NGQ3N2NmMDJmNjJhYWU2YTc0NzggcmVsZWFzZTI0LW1haW50Cis0MTgzMSBiNTQwYjYwNzZmZDk5MTVlZDhkOGFlM2U2MjUwODRiNTM1NWI0ZWRiIHJlbGVhc2UyNC1tYWludAorNDE4MzIgN2NjMjE1ZjBjMDliM2JmMWVjMjdkNDE2YmEwMmQzYWI2NGUwYmRjMSBsZWdhY3ktdHJ1bmsKKzQxODMzIDIzMzk3NWRhMjQ3ZTIyYWU2OGMwZjdkOTNmNjQ0M2UxODNlOWNhMTggcmVsZWFzZTI0LW1haW50Cis0MTgzNCA4ZTQzOGJmNzZjYmJmMjUwNjJhNTU0YWM4NTc5ZGM2OTY2ODZkNjE0IGxlZ2FjeS10cnVuaworNDE4MzUgMTAxYjYxYTllZWQyZTUxOGM4YzNhNWYwOWIzYWM4NjBkMzNhZWY2OCByZWxlYXNlMjQtbWFpbnQKKzQxODM2IDgyYTUyYTQ2NGFhMjU2Y2JhYjc3ZTY1ZGY3YjQ5Mzk1MThkNGIyNDcgbGVnYWN5LXRydW5rCis0MTgzNyA3NGQxNmViMmNhYmRkMmVhNDNkM2IxNzExMTExZTY0MGU0YjY1ZGU5IHJlbGVhc2UyNC1tYWludAorNDE4MzggMjJkYmY1ODE4YjBiMjk0ZTQxZjQ3NDU5ZTkwMDdjZDEwYzE2ZmViYyBsZWdhY3ktdHJ1bmsKKzQxODM5IDg1MGY3ZDFlNGNhMjc2NDVmMzA5NWI2OGEzZTY1YmMxNTg0NzUzMzkgcmVsZWFzZTI0LW1haW50Cis0MTg0MCBhYTcwNzA0MTUwNWQ4OTljMzM0Mjg3NzExYWNjOWJiZjVkNDEwYzdmIGxlZ2FjeS10cnVuaworNDE4NDEgZTQ0YTgzM2VjYTQzMzVkODUxMjJhMjY2N2YzY2FkN2MyYzY2YjA5NyBsZWdhY3ktdHJ1bmsKKzQxODQyIDJlYjc4ZjVkMTQ1MDBlNDY1MmYzYmNkNTczOGM2Y2YzZTQ0ZDRjYmEgbGVnYWN5LXRydW5rCis0MTg0MyA3M2RhNTkxZjliZGJkZDVjZTk3ODA3MjYxNWFhYTdhMWRmN2IwMTQyIGxlZ2FjeS10cnVuaworNDE4NDQgZjkyODEyODNiMTA5YTQ5YmQ0MjdiZjY3NzIxYmRiZDA5YWE1Yzg3MyBsZWdhY3ktdHJ1bmsKKzQxODQ1IDA0MmViM2QxY2UzZjMzOGFlNjFlMzVmM2M1ZWJmNzRkYTUwYTUyZWYgbGVnYWN5LXRydW5rCis0MTg0NiA5NjNhOThkOGZlMmU0ZDJjZmYyN2Q2ODcyNTQzNGU3MjQxM2Q3ZWQxIGxlZ2FjeS10cnVuaworNDE4NDcgZmU5YmQyMWYyN2YyMjg5ZDUwZWUyNjE0MzcxNzQ1NWQ0OGNhNTM4NyBsZWdhY3ktdHJ1bmsKKzQxODQ4IGM3MWNhMWNkMzYzYjc1ZjM0OGVhNzY0YmZmNGI3M2E0MWI5ZDVhNmUgbGVnYWN5LXRydW5rCis0MTg0OSA5NmViMmE1Y2ZiZWY2MjNlZWZkMGI2MTFhZGYzODcxNWM4Mzk3OTZiIGxlZ2FjeS10cnVuaworNDE4NTAgMzQ1MWIxMDlhMjRjNTYzZTkxYWM5ODA4NGFlYzgyZjUyMzcwODY1MCBzc2l6ZV90Cis0MTg1MSAyOThmYzMyNjkzMTBiZTlkN2ExNzk3ZTk1ZDZmYTU1YjI1ZjJjNzViIHNzaXplX3QKKzQxODUyIDI2MTA3YzVkMDU3YzFmZjhjODkxZTc0NTQ4NmEwMzc4ZjcwOGI1OGIgbGVnYWN5LXRydW5rCis0MTg1MyBmNDUwNzc3NGQ0ZTQxZmZlNGVlOTU0MGExMDI0ZTQwMjBiODEzMzE1IHJlbGVhc2UyNC1tYWludAorNDE4NTQgZDk5M2EzZWU4OTFlZDgyYTQxYzUzN2Q2ZmY0ODA4YmJmYWQ2Njk4ZiBsZWdhY3ktdHJ1bmsKKzQxODU1IGNmZDFlMWY0ZmRkZGIxMjc2OTc1ZmI4ZmQyOWZkNjIyZWIyNzVlOWEgcmVsZWFzZTI0LW1haW50Cis0MTg1OCAxZTU5NWI2YzkyNGUxNzA4ZjViYjJjZjBiZmM5ZjI2YjE5MWJmZTdmIGxlZ2FjeS10cnVuaworNDE4NTkgYmI1MWQ2YzZhM2UwM2EzOTNlYzgzNjZlMDQ2ZGMwMzNhMGQ1NWIwOSBsZWdhY3ktdHJ1bmsKKzQxODYwIDUwODg2ZDQyYjQ0NGU0MGQ3ZTkzNjNjMWFiNjJhMjQwMjkxMjkwNzIgbGVnYWN5LXRydW5rCis0MTg2MSAxNDdjMzVmNDM1YTBiNWFkMDgxNzIwOGM2ZmFlZDY2NTU3ZDkzZjFhIHJlbGVhc2UyNC1tYWludAorNDE4NjIgNmYyNTAyOWRlOWRiNDM2ODQ3MTk1Mjk5NmY5OGI3MWRiNGY2YzIyYiBsZWdhY3ktdHJ1bmsKKzQxODYzIDgzNGRkNjY0YWVmY2E5ZmUzNTMyZjA5MTUwMmRjYjU0M2Y0NjVmYjUgcmVsZWFzZTI0LW1haW50Cis0MTg2NCA4YTJhYjVmNTE5MzJmZWEzYTEyMmE2ZTM4OTJkYWE5NjY3YTUzNDAyIGxlZ2FjeS10cnVuaworNDE4NjUgNjUyNDI5YzRmMmE0OTJmNzNjZTVhODlhNDA0ODFmYThmYzc4MmU2MCBsZWdhY3ktdHJ1bmsKKzQxODY2IDI2NmJiZGY5MWJiNTNlNzJiMjJmYzVkZTk3ZWZkMzZmOTA4YzZkYTAgbGVnYWN5LXRydW5rCis0MTg2NyAwMGRmMDVmYTgxNjE0YWU2MDkyMWRmNDMxMzkwYjJiYjJhN2E4Y2RhIHJlbGVhc2UyNC1tYWludAorNDE4NjggMDllZDZjOWJkYmQ5YTI5NWM1YzJjOGUwMDkzYWMwNzZhYjhlMWRiOCBzc2l6ZV90Cis0MTg2OSBjMTg1MDRjZWYyYmE2NWFjMzI1MTM1MjEzOWY0MzkxZjRiNzMxZjBlIHNzaXplX3QKKzQxODcwIGMzYWRjNzdlYjI4OTFlMjA0ZjJiY2VkN2VmMzE0MGZkZTJmZjI0N2Ygc3NpemVfdAorNDE4NzEgZjU0NDNiZGY5YjBkZjhjMTkzZmFhNzZhY2ZmOGI2NTQ2YTEwZmFmMiBzc2l6ZV90Cis0MTg3MiAxMjQ4NGI2NTlmYTg2N2E4NDQ4MzNhMjZjZWMyNjhmNDI5MjkzYjkxIHNzaXplX3QKKzQxODczIDQ2ZmY1YzU4NmQ4NjM5NzEwZWIzM2QxYTMyYjYyOWE2OTgzNjA3ZjUgc3NpemVfdAorNDE4NzQgYTIyN2VmMjZhMThkYmQ0MmQ4OTJiNzA0NjVkNDhjZWE4ZDAyYzllZiBzc2l6ZV90Cis0MTg3NSA1MGE0NzUyMWI0MGY0MzBlNWViZWE0N2I4Yzk4M2MyMjBhNTE3NmYyIHNzaXplX3QKKzQxODc2IGM4OGE4MzBkODMxYzFiZjM3MjYwZjQ1MTA1MGE5N2VjNmQ4YWUzYWIgc3NpemVfdAorNDE4NzcgMjkyNDM1YTczMmU4YzI0OWY5MWU5Y2JmYjNhMzBiNGFkMjMwYzg1OSBsZWdhY3ktdHJ1bmsKKzQxODc4IGFkZTQ2MzcxZjA0YjA1YzlhMGY2NjIwMzk2MzFhNzlhMDQ1OGRkZDYgbGVnYWN5LXRydW5rCis0MTg3OSA2ZGQ2MjU0MmI2ZTVkYmY4ZTFmMGRlMzRjMWEzZjgzOWY1MGVjNWJlIHNzaXplX3QKKzQxODgwIDg1YjJkODA0YWMwYWJjNzg5OTQ3OTk2Y2ZjNTQzZjk5MzVkZGMxZDkgbGVnYWN5LXRydW5rCis0MTg4MSBiOTA4NjU0NDM4MmUyMjA4MjM1Zjc0OWNlMTcxZThlMjg0NDJmNzI5IGxlZ2FjeS10cnVuaworNDE4ODIgZjMyMWJlMzRiODVkNWY1NTg0N2VmM2I1MDk5NzcyOGE5Y2Q4M2JiZSByZWxlYXNlMjQtbWFpbnQKKzQxODgzIDAzYTBiMThhNzViZjVkZGM4MDRkZjI5ZWY4MDQzNWI5NDM1MWE1NTQgbGVnYWN5LXRydW5rCis0MTg4NCBhODExZWJhMzBmYTRkZjNhZmI3NzAyODFlZDg5MWRlODhmMTc2YWZkIGxlZ2FjeS10cnVuaworNDE4ODUgOWI5Y2VkNGQ3OTIxZjZjYTEzNWU0MjQwZGQzOGQxOTgzZmQxODJiOCBsZWdhY3ktdHJ1bmsKKzQxODg2IDNmNjJkMzFkNTk4NWFiMjhkMTZmMDE2MGZhMGJhODgxMzc2N2MzYzUgbGVnYWN5LXRydW5rCis0MTg4NyA0MzFkNmU4N2I5ZmUwYmY0YmE0Y2VkOWFiMzY2Y2UxZWMwNjY5NzQ2IGxlZ2FjeS10cnVuaworNDE4ODggYjI2NDhjYTIzMWU4MDI1MzJkNDAyNjBhZTUzNWI5M2Q0YmJjNDJjZSBsZWdhY3ktdHJ1bmsKKzQxODg5IDc5NzBlMDJmYzg0N2I4NTE2MGI3ZTZmZWY5Zjk2ZmQzOTM2YmUxNWQgbGVnYWN5LXRydW5rCis0MTg5MCBjODI5NzVlOTFlOTk4NWM5ZmRmNTEzYWY2ODJiNDQzMmVhOTVjNDY2IGxlZ2FjeS10cnVuaworNDE4OTEgYmY3ZWVmNTA3MmI2OTE2OTNiMzYxYzJkZmI3NjkzMjI0MGYyNWIzOSByZWxlYXNlMjQtbWFpbnQKKzQxODk0IDgxZmE0N2QyZDQ3N2JkOWJmOGU2OTQ4MTU5YTU5ODUxODc3YTRmZTYgbGVnYWN5LXRydW5rCis0MTg5NSBlZTk4NGZlOTgxYjRlZmJhOWUzYjI5MWIwNWQyYTZlNjIxM2Q3OTc4IGxlZ2FjeS10cnVuaworNDE4OTYgZjgwZWUxNDI3MjdhODYyZDJkZWE5YjU3NWNkZGNjNWNmZDM5ZTVkYyBsZWdhY3ktdHJ1bmsKKzQxODk3IGRlZTkyZWNiOGExMTNjZjI4YjUyNTk2NDBiY2YzNDE1MmQ4ZDQ3NjMgbGVnYWN5LXRydW5rCis0MTg5OCBhYTQ1NjQ0OTI2NjAzYjA0YzUxNTJlNzdlNmYyNDY2NzhkNzE3NzljIGxlZ2FjeS10cnVuaworNDE4OTkgNzllNzBmYThjMjEyZmVjNzAyMGVhMmVjYTMxMjVlMTA3NmIxNzNmOCBzc2l6ZV90Cis0MTkwMCBjZWVmY2FjZTZmMjQ5OWRiNTAxNDM2NjJmZGU4NmZiMGJjNTIzYWNhIHNzaXplX3QKKzQxOTAyIDZjODE0NWZlNDk1ZWRjOTA1OGM4YzE0N2VlYTExOTZjMDNhYWQ1ZWEgc3NpemVfdAorNDE5MDMgZWYyZDdiOWZkZTdjZjllNGQ5NWFjMWEyMGZlYzBhYTI4ZmE5Y2U0YiBzc2l6ZV90Cis0MTkwNCA2OTFlZTUyNGYwMjc1NGE5YmRkMjc4YjE1OWVlZjE1MzJjODhhNDljIHNzaXplX3QKKzQxOTA1IDc2NTRkYTM2ZmU5Y2NhODY5ZTAzZDFhMTYwNTMwNjNmZTMzNjdhOGYgc3NpemVfdAorNDE5MDYgZjA2MTMzYmNjMDVlNjY3YjA1MzVjOTA5MTc3ZDE2YTg3NTI0NDcyYiBzc2l6ZV90Cis0MTkwNyA1MmE3NGEzMjM2ODIwNjc3Y2UxMTI3NTlmMzE4NDY1YTcxOGYwOTljIGxlZ2FjeS10cnVuaworNDE5MTAgNjE0OTQ4M2Y3YTNkNTU0M2M4YzVkNzczMDFkZTdlNTY2NDhmOTIzNyBsZWdhY3ktdHJ1bmsKKzQxOTEyIGVjZmVkMWY3NDc4Y2NkYjg3OTIxMjQyZTk3OTI4YWFkOTE1NTI0NzIgcmVsZWFzZTI0LW1haW50Cis0MTkxMyA5MjA4YTc5ZjU2ODNjZGJiNDk1OGM5Mjc1OTljNmE1NzMxZDQyYWY5IGxlZ2FjeS10cnVuaworNDE5MTUgMDM2MDhkNjZlNTlmMGM1NDQwMDFiZmQ4ZTdlYjhmNWNlYmMzZGFlMiBsZWdhY3ktdHJ1bmsKKzQxOTE2IDBiMTBlODU1ZGFkZjY0ODIwZTM2YTFlYjZlZGUxYWEyMGM2ZTNmZDcgcmVsZWFzZTI0LW1haW50Cis0MTkxNyBlYTZjZDFiZTk4MzdiNTI4OTUzNGJjNTE3YzYxZDAxMGQ1Yzg4ODZhIGxlZ2FjeS10cnVuaworNDE5MTggMjZiZThiMWQxODUzMDE3ZGM0ODVkOWJmMzUzOTNmNjJhY2ZlNDRlNyByZWxlYXNlMjQtbWFpbnQKKzQxOTE5IDkyZWY1NmM5N2NkZjQyMTBlZDYzZTZjNGFlMDEwMmFiN2ZlZDNkNmEgbGVnYWN5LXRydW5rCis0MTkyMCBiMzQ4MjE2NGExMDAzODE0NWIxOGU3ZmYwZjFiYzU4OTNlZThlMWFlIGxlZ2FjeS10cnVuaworNDE5MjEgNDRmMDc2MGUyNGExNjllZGFiODNmNDQ1ZTJiNzlmYmNmNzBhZGY0NyByZWxlYXNlMjQtbWFpbnQKKzQxOTIyIDM4YjBmZTUxYjBiNGY5OTVlNWM5ZDVmZDRlODBiYmNjNzBkZTI5NDggcmVsZWFzZTI0LW1haW50Cis0MTkyMyA0NGNmY2E2MTM2YzYzODJhNmU5YWJiYTkzMGIxY2MxMjA5OWIxMDczIGxlZ2FjeS10cnVuaworNDE5MjQgMDMyOTI0ZTc1YzI0YmEwMGRiZjE2MWJmOGJjNmI2Njk5ZDFhYjNlYiBsZWdhY3ktdHJ1bmsKKzQxOTI1IDAxY2JlZDVlODczMTA3MGIxN2YzNDg4ZjVkNTBjNWFhN2MwMjlhOGQgbGVnYWN5LXRydW5rCis0MTkyNiA4NzkxZThjNDQ4YjMxZTMwMDc0YzMxNzc4Mjc4OTMwMGMxYjUwYjQ3IHJlbGVhc2UyNC1tYWludAorNDE5MjkgODI1YTA0MTgxM2ZiZWUwNzhhM2JmZjNmMTEzZGVmM2E0ZWFlOTI3NCBsZWdhY3ktdHJ1bmsKKzQxOTMwIDIxNTMxZTM5MjExNmEwNjFmZWEzMTg1NTg5ZDQ1NmZjZTNiZTExNzAgbGVnYWN5LXRydW5rCis0MTkzMSAwM2E1NzQxY2ZlYTlmNjBhYmVmM2NjZTdmYmFiM2ZiYWU3MmI5ODI2IGxlZ2FjeS10cnVuaworNDE5MzIgODMzNjQ3NjNjN2IyYzZhODM5MjExMjU1MzljNTk5Yjc1MzgwYzM0MSBsZWdhY3ktdHJ1bmsKKzQxOTMzIDZkNzQzZTViYWYxNDdhZTRiNTFjNDJiOTJiZjI0NjA5YmZmMjQxY2YgbGVnYWN5LXRydW5rCis0MTkzNCBjZWUwNTk4MGYxZmQxYzUyM2YzNDIzNzE2NWZmOTg4NDJhMjNjMTk3IGxlZ2FjeS10cnVuaworNDE5MzUgOWI4ODg1YzllNTUxYzM5Y2E0Mzg5ODBhNzI0M2YwZjZkMTg0MzYwMyBsZWdhY3ktdHJ1bmsKKzQxOTM2IGM5ZGEwOGQ0ODJjMzZhZmZhOTkxNjViMmNlNTQ1N2Y0N2JlODY2MGIgbGVnYWN5LXRydW5rCis0MTkzNyAyNDEwNzhlZTZlODdhZTg2M2UzZWIxMTRmZGUxNWYzMzc4NDhjNDU5IHJlbGVhc2UyNC1tYWludAorNDE5MzggNjVkZjI1Njc0ZDFhZWY3MmQyMTcxNjcyMzI2ZDg0NDAyYjkyMDZhNCByZWxlYXNlMjQtbWFpbnQKKzQxOTM5IDc3YjRhYWFkNjkwM2ViYjhmZGUxY2U5NGI0MzFmZjM0MmY1MzMxYjIgbGVnYWN5LXRydW5rCis0MTk0MCBmNzIzZTE5ZmEzYjcxYTIwYjIxZmRlNzQwMmY5ZWI1ODhiYmRhZmYwIGxlZ2FjeS10cnVuaworNDE5NDMgYjEzOWM5OTk2NjVkOTk3OTI2ODlmYzNiMmNjZWNlMDRhNDI0NTJkNSBzc2l6ZV90Cis0MTk0NCAxMjIwNThkZmJhNzY4YTkzZDkyZmRiYTE5YTg1OWM1OTg3NTQxZDNmIHJlbGVhc2UyNC1tYWludAorNDE5NDUgNmUxNzk2OGQ0ZGU5MmIxNjMyYTgzZmY4NjI1ZjM4MmYyNDQyZDJkNyBsZWdhY3ktdHJ1bmsKKzQxOTQ2IGExYjFlNDUxZDgyZTg1ZTc5NGZhY2Y5MmU3MmFkMWJmMzNmNzY5ZjcgbGVnYWN5LXRydW5rCis0MTk0NyA0YzhhNzRhMjAyMjc4MzQ4M2M4YzJiNzM4YTRjOWJjYjIwZTMwNGNiIGxlZ2FjeS10cnVuaworNDE5NDggY2Y2OWUzMTkxMjE4MjhiNGE3NTJhYmQ4MWZmYjliYzMyNWM2YWIwMSBsZWdhY3ktdHJ1bmsKKzQxOTQ5IDE2ODVkY2QyZjkyOTkzY2Y1MWU1ZTMzYzllZmMwMjQzZmY3M2FlNmQgbGVnYWN5LXRydW5rCis0MTk1MCA1NmFkOWYyNzViZWMxOTNkMjk2M2MwYmEyMjU2YTBhNTgzMjY3NjgwIGxlZ2FjeS10cnVuaworNDE5NTEgYmI2ZmE0YTMxZjE1Mjk3NjAzOWUzYjY3ZTFhMzg3YWMwODZkYjYxZSBsZWdhY3ktdHJ1bmsKKzQxOTUyIDAyNmFlMWI4YTdlM2JhMDVlMTRjYWIxMGUwZjFmZjZiY2ExM2JkYjkgbGVnYWN5LXRydW5rCis0MTk1MyBlN2M5NmMxZDE0NGJhNzQyODU0MzhlMTM3NjFjZTVlZTgwZDJhNmY0IGxlZ2FjeS10cnVuaworNDE5NTQgZThkZWM3OGNmYTJlM2U2ZjRmMzI4Y2YxMmM0Zjc3NGRkYzRlZjE3YSBsZWdhY3ktdHJ1bmsKKzQxOTU1IGRlZDRhNDk3ZWI3NmZiODdiZGVjODJlYzkyYjk5YTUxZDhmYzU0YjAgbGVnYWN5LXRydW5rCis0MTk1NiBkM2Y0YzQ2N2U0MzlhMjU3ODUzZWU1ZTI4OTgyOWRhMDkyM2UzMTgyIGxlZ2FjeS10cnVuaworNDE5NTcgYTc3ZTViMDQ2YTUwODc2MzM4ZThjMTc3ZWU3ZmQwYWEzMmZkNTllMyBsZWdhY3ktdHJ1bmsKKzQxOTU4IGI5ZGQ0ODFiMzk3MmRkNjQwMTNiNWNiNmNjOWVlYWMxY2U4NDk2OTUgbGVnYWN5LXRydW5rCis0MTk1OSBlOTRlZTU5YTJkNDYxZDk1MDRhYzdmZTkxMWMzZWViOTI3MzdjZTlhIGxlZ2FjeS10cnVuaworNDE5NjAgOWY2NmJkZDVhMDYxMjM5MjQxYzg3ZjA1ZjYzOWNhODJlZTFjNjU1YiBsZWdhY3ktdHJ1bmsKKzQxOTYxIGVjZDQyMzcxOGEzMjdkZjU2ZDk5NjNiOGYzZThjMTY1Yzc1ZjI4ZWUgbGVnYWN5LXRydW5rCis0MTk2MiA4YWI3OGZiNGQxN2VkNGFjMTllNmQ3ZTk1ODU5YzFmMzAwODRiZTU5IGxlZ2FjeS10cnVuaworNDE5NjMgMGY4YzU1NDZkM2JmNDRiNzU0ZjNlMGZkOGFkMDI3NGRkOWUwZmRjMiBsZWdhY3ktdHJ1bmsKKzQxOTY0IDkyZTI0NjhiZGI0YTZhNDAzMTdjZGViZTM4ZTU3Mzc4Njg5ZDRkZmEgbGVnYWN5LXRydW5rCis0MTk2NSAwMGJkYzA4YTUwN2RlYzlkYTBjNmRlNjNhMTE0Y2M0ZjM1ZmU2M2M3IHNzaXplX3QKKzQxOTY2IGFmN2Q0ODQyMDhlOTI3MWE0Y2JhYmU0NTgyNWU2NjNiNzk2NjFlNTcgbGVnYWN5LXRydW5rCis0MTk2NyBkMjIyNGM4ZDQ1NDkyNjI1NDkzYzk2MjdhOTJjZjhjMDUxNzZkOWUyIHNzaXplX3QKKzQxOTY4IDU1N2U5YjZlZTdlMTFlNmY3ZWE1ZWEwNDI3YmZiMDQ3YjBlNTQ3NGUgbGVnYWN5LXRydW5rCis0MTk2OSAwZjUxODk2MDcyNjQwYWUxMTY3OTJiMTQ2MGZmY2JiM2Q5MWM3ZWZmIGxlZ2FjeS10cnVuaworNDE5NzAgNjBhNWExYWExNjgyYjY3MGUyM2U3ZmRkMDliYmQ5M2MzMWVkNjY1OSBzc2l6ZV90Cis0MTk3MSBhOWFiZGIxNGNmM2I3OGE0N2E5ZWJjMzRjZWI2YmExYzFmYmM3ZTUyIHNzaXplX3QKKzQxOTcyIGEyNjQzMjUzYWM3OTYyOTRiM2M2OGQ5MTlkOTRlOGZmNmYxNDFmYzMgc3NpemVfdAorNDE5NzMgMDk2OGYwNjJmMzUwNjk4OGI4ODZhNGY5YzFiNTJlNGMyNjdmMWUzMCBsZWdhY3ktdHJ1bmsKKzQxOTc0IGU3ODgwZjRmNTNhNDBkMzEzYzdhMDQ3ZDUwNDI1MjMzNjIyNGE4YjkgbGVnYWN5LXRydW5rCis0MTk3NSBkM2U2OGNiNzM5ZmIyNTc1ZmE1OWE0Y2Q0OGIzOGUxNWExYWY1MjE3IGxlZ2FjeS10cnVuaworNDE5NzYgNTkxZGY1NGQyZDMwZjE0ZTA2MTI0NWM2Nzk4NTRhNDUyODgwZWRhOSByZWxlYXNlMjQtbWFpbnQKKzQxOTc3IDNiYTlmZjc5YmIyOWI5NDdlYjk3ZThmOTkzNTA5MWQ4NTNkMTZmZTUgbGVnYWN5LXRydW5rCis0MTk3OCA4MTFkNjQ0ZDE5MTc2NzcxMDU0NzYxYTI3ZGZhZTgxNTBkNzE2YmQwIGxlZ2FjeS10cnVuaworNDE5NzkgNGFjOWI4ZmNkNjNlYThkODUzMTI2OTk0NDkzNTRlMmRlZDdhZDU5YSBsZWdhY3ktdHJ1bmsKKzQxOTgxIGYwOWU2MDkxYTc2MjllZWZmYjc2MTY1YjA3OThiMzBlM2QyMzIzMTQgbGVnYWN5LXRydW5rCis0MTk4MiA4ZGYxOTQyOTRjOTBkYzRhMTFkZjkwYmI1ZDJlZTMyMjU5NTg1YjRmIGxlZ2FjeS10cnVuaworNDE5ODMgZDQzNGIzYzczOTAxNjBmMzUyMjA5NDNkNWM0M2VkODZkZWFjZThiYSByZWxlYXNlMjQtbWFpbnQKKzQxOTg0IDI3YmRjMWUyN2VlZGI3ZWM0NTliY2I5ZTNiMDQzNGM4ZWZkNmViOWYgbGVnYWN5LXRydW5rCis0MTk4NSBjM2I0MmI3YmQ2ZDlkYWFkYzRhOTc2ODZmZWJkODQ3ZWNiZDgwNjRmIHJlbGVhc2UyNC1tYWludAorNDE5ODYgM2MxNTk3NmZmNjE4NzJiNWI5MDJiYzJiZDNlYmVkYWEwNmEyMzg2NCBsZWdhY3ktdHJ1bmsKKzQxOTg3IDZjZjdkMDRkY2MxZjU3ZTY3MzM3ZDE2MDllZjdlNmU1NDEwY2VmYmYgbGVnYWN5LXRydW5rCis0MTk4OCAwOWMyMWE2YmU2MDQxODQ3OGM3YmM5OWRmYzE1YzYzMDM0MTViMjk4IGxlZ2FjeS10cnVuaworNDE5ODkgOWY2ZWRjODc0NTQxY2QyOWMyNDQyZTQ5MTE0MGI5YjYwZWE5NmJjMyBsZWdhY3ktdHJ1bmsKKzQxOTkwIDI2ZTc4YjE5NmMxNzI3OGE4NjA5ZjNlZWEwNmYwODIzMjg2NGRiZWMgbGVnYWN5LXRydW5rCis0MTk5MSBjYWQ1OTFkOTIxZWNiMDJkNDAxZGQ5MzM5MzQ3NjJiNDc5ZjAzODFjIGxlZ2FjeS10cnVuaworNDE5OTYgMzAzZGVhODQ3NjM5MDRmYjg1NGNjYzhiOGU2Zjc3MTRlMWY1YWJkNSBsZWdhY3ktdHJ1bmsKKzQxOTk3IDc2YTFjMjBlODMwZTU1YzAyMWEyNWQzN2I4ZmE4YWEwMzIwNGJjZjQgcmVsZWFzZTI0LW1haW50Cis0MTk5OCAzYzAzMGVkZmY5ODVhNmJjOTk5YmYzZjcyYzc3NmFhMzI2YjczYWRhIGxlZ2FjeS10cnVuaworNDE5OTkgOWRmMzljOTYwYmYxYzY4MGJiMzRmMTdmY2ZiZWU2MDNiZTk4ZjZiZSByZWxlYXNlMjQtbWFpbnQKKzQyMDAwIDc5MGY4ZDllNDk4ODk4MTE2ODAyYTcyZmU3NTA0ZmJmMmIwMWY5MmQgbGVnYWN5LXRydW5rCis0MjAwMyA0MWVmMjkxMGRkNDk4YjBmODRlOGY0Y2JhM2E4MWUzZGQzYTU1ODk4IGxlZ2FjeS10cnVuaworNDIwMDQgMzVkZjZkZDgwOTExMGM3YjRlZGEzMjFmYjc3Yzg3YmFiYWUxYjMyYSBsZWdhY3ktdHJ1bmsKKzQyMDA3IDBkNTMzNTM4N2JhNzMyYzg0ZGY4ZTU5YTE2MzJjNTFmY2Y5Zjg4NzQgbGVnYWN5LXRydW5rCis0MjAwOCA0NzViNjQ1ZTEyZjVlYzA1OGMzMjgwYmY0MDI1ODZhZDU0YzZlMTNhIHJlbGVhc2UyNC1tYWludAorNDIwMDkgODc0N2JmNGI5NTQyMmNiMjNjZjA1NTEyMTUxYzgyMjRkZjMzOGI4NCBsZWdhY3ktdHJ1bmsKKzQyMDEwIDIxZTE3OGI5MzAzMGQxYmZhMmJhYzYzYzlkYzBiMDc0YWMyMzVhNDUgbGVnYWN5LXRydW5rCis0MjAxMSA4NGJhMjk5ZTJiNWZlZjQxMWIwYTcxZmI4MTZlZDU0NzI2MDZjYzNmIGxlZ2FjeS10cnVuaworNDIwMTIgZDAxMDQzNjRmNmQxYzg0MDgyNzcxODRlYmJkYjBhMzJiMjNlOTUwZCBsZWdhY3ktdHJ1bmsKKzQyMDE5IDVkODE2OTI4YTIyNDVlMTc0NTMxZWQ3M2RhYzcwNjU2MDVlY2U4NGIgbGVnYWN5LXRydW5rCis0MjAyMCBlMWZkN2JkMjg5NWIwN2Q0OGZmZTNhZjkwNGEwZDY1OTExNmUzMGU2IHJlbGVhc2UyNC1tYWludAorNDIwMjEgMTkyZTgzODk0ZTg5OGNhYzQwMzY0ODVkYzA2ZDc4MTNkYWU3NDEyYyBzc2l6ZV90Cis0MjAyMiA4YjhmMWE1MTQ2OGFkMjQ4MTEyYTY1ZDRjZmY3ZDk2NTA0YzBkM2I3IHNzaXplX3QKKzQyMDIzIDBmZTc1YTA0NmMwMDU0ODBmMjRiMDliNWI0YWQ0ZTYxN2ViOTBkYjUgc3NpemVfdAorNDIwMjQgNGY5NTA3YmU1ODU3OWI0MmNkMjk2NzBhNTZiMWM1MDc5M2I0ODA2NCBzc2l6ZV90Cis0MjAyNSA2NjJjNjM5NTRkZjI5NGI3NDg0NDAwMTY2OGVkNmQ0N2Y0ZDU5NGRhIHNzaXplX3QKKzQyMDI2IGZkMWIxMmQzYWJiNjljMzlhZmM4OTFjN2IzMTgxMTQ4OGVlNmQ5ODUgbGVnYWN5LXRydW5rCis0MjAyOCA1Mjc3NzcwYmM5ZDFiYTZhYmI3YjQ4MGEwNWI0NDQ5YjBhMTU3YjkwIGxlZ2FjeS10cnVuaworNDIwMjkgYWIxMzBkNTY2OTMxOWU4ZWE4M2U2ZDBjNzVlMDBmMGQwZmY5NWU3NiByZWxlYXNlMjQtbWFpbnQKKzQyMDMwIDVlMmE1OGM4NjdmNzJjMzcxYmZiYmNiNWY2NmI0OTA2MDI5YmQ1ZGEgbGVnYWN5LXRydW5rCis0MjAzMSBkYTA5OTVjYTFmMzA3ZTc4N2MyNGY4MWNjMDlkNjY1MTFmYjYyZWFlIHJlbGVhc2UyNC1tYWludAorNDIwNDEgNzhhNjk3NTk1NDdlYmU4MDEzZmVkMDBlOTNmZjZlOTE3NzQ2ZDU2NiByZWxlYXNlMjQtbWFpbnQKKzQyMDQyIDIxZDMwZjhlNDFmZmRlNjc4Y2M0NDBlMjJhOWExYjlkYmE5MDRlMzUgcmVsZWFzZTI0LW1haW50Cis0MjA0MyBlNjA5ZmVhOTJkMWUxOGE1ZmVlMWZhZWViMDRjYWE5NDE0MzdiM2ZlIGxlZ2FjeS10cnVuaworNDIwNDQgMGIyMzFjMDVhN2VkYWMxNjZkNDdiNDI3YzliMGRhMTAzYzZlMzJhOSBsZWdhY3ktdHJ1bmsKKzQyMDQ1IDg2OTc3NzZiYjQyMDM3YzIzMjUzMTU4NDdkYjVkN2VjZDI1ZTFiMjcgbGVnYWN5LXRydW5rCis0MjA0NiBhZTQ0ODA5MzUwMTYwZTU4MzMyOTE2NjUzMmE4ZWUxZWE3Y2RhOWMyIGxlZ2FjeS10cnVuaworNDIwNDggYzEyODAwMDIxMzk2OTkzMWQ1ZGExNGRmNWU3MjQ4MDUzZmQyOTNhYyBsZWdhY3ktdHJ1bmsKKzQyMDQ5IGM5ZWE1NTcwZGFjN2U2YzFmNGMwZjk0MTlmYTFlYjhlZWIyZDBlZmYgbGVnYWN5LXRydW5rCis0MjA1MiA3Y2E1MWNiNzBjMmUyNGRhNjI5Zjk5ZjIzOGJlMDJiM2FkNjJjMzgwIGxlZ2FjeS10cnVuaworNDIwNTMgYjk0ZWU5MmE2ZDZiNWViNTllODRjOGU0OTk0OGViM2ZjNmVlMDQ5MyBsZWdhY3ktdHJ1bmsKKzQyMDU0IDA3ZmJkMzRmMWY2ZWQxMzFhZmNiNDZlNDZmMmNmMzE3MzhmZjkzYTcgcmVsZWFzZTI0LW1haW50Cis0MjA1NSBlZjFkOGQ2YWM2YmVmYjZlNDg3YWU0MTkwZjE3ZTMyNjM1MzcxMjI4IGxlZ2FjeS10cnVuaworNDIwNTYgZWYzYjQzNTc4YTVmZmE3NzE0MzczYjVmMGU5YTJlOWNmNzE4ZWQ0YiBsZWdhY3ktdHJ1bmsKKzQyMDU3IGEyMTI1M2ZiMDhjOTcyZDAwNjFhMjQ1YjcxYWIxYmM1YTc3MWFlNjQgbGVnYWN5LXRydW5rCis0MjA1OCBlNzAzM2RmZmQ2MGNhZTgzNDk1NjE3NjdjMzBkZmUzMjNlMDdlMGUxIGxlZ2FjeS10cnVuaworNDIwNTkgYzdjZmVhMWViYjMyMzQxOWUyOWFmZGNiMWRlZDc1ZGI1YjJjNGVjYyBsZWdhY3ktdHJ1bmsKKzQyMDYwIDZkMmJlM2I3NmYyZTI4MzY1NzM0NTc0ZGNjNjNhZmNjYmMxZWQ0ZTAgbGVnYWN5LXRydW5rCis0MjA2MiA5ZWVhYTMzZjk2NDA2MzNjNjE2MjhiZDdhZGY1OTk2ZTUwYzZjY2M0IGxlZ2FjeS10cnVuaworNDIwNjMgYjBkN2QyOGNkNzQ2MWYyZjFjMzRkMzU2OTBjMTI4ZGZhZTAzZDhjOSBsZWdhY3ktdHJ1bmsKKzQyMDY0IDM4OGViYzZlM2RlMTE3OTczMzE1MDdkMjI5MmI4YWIxMTE2NGUxM2IgbGVnYWN5LXRydW5rCis0MjA2NSBlOGZjNjBjNGZhYWQ3ZTNhNzdlMmY4NjlmYWYzODAyZjNlNmU0MWViIHJlbGVhc2UyNC1tYWludAorNDIwNjYgNDA1YWIwZGM5Y2JjMzkxM2Y4ODQ5ZTkwMzE1MjUxZWJjMGZiZGVhMiBsZWdhY3ktdHJ1bmsKKzQyMDY3IDQzYjE2ZWVmZjIyNmIyZWVkY2NkNDM1MDI5MmM2ZGZlMWFjODIxYTYgcmVsZWFzZTI0LW1haW50Cis0MjA2OCAyYWZiYWFlNmI4OGUwYmFjZDJmMDI3ZGY5MDc0YWYzYzNlMGNmNGQ0IGxlZ2FjeS10cnVuaworNDIwNjkgMmM4NjMwYjZiYzM1OTk1OGIyYTA3ZTY1N2YzYzhjNTQ2NDUwMGQxZSBsZWdhY3ktdHJ1bmsKKzQyMDcwIDAyOTRlNjY2Mjc0OWFkNGM1M2VlYWE5ZmY3ZmEwNGQ0ZGRhMjY5MmMgcmVsZWFzZTI0LW1haW50Cis0MjA3MiBiZWNlYjhlNjZiMGJhMDRhZDBkMzA5YzE0YmQ2ODk3NjNlMzRlZWU2IGxlZ2FjeS10cnVuaworNDIwNzMgMmY3YjU0MDIyYjNiMWVlM2M2Y2Q0M2Q3YThhNTNhMDU0OTI2MDBhZSBsZWdhY3ktdHJ1bmsKKzQyMDc0IDRkYmE2MWU0OTAzN2ZlYmM5MDg2NzU1ZWI2NGYyZDU3OWQ2MDJlM2QgbGVnYWN5LXRydW5rCis0MjA3NSAyMGYyMWRjNzM5NmYyM2RlOWM3ZjBiMTA5MjdjYjc3NjNhNzY3NjM5IHJlbGVhc2UyMy1tYWludAorNDIwNzYgMzcwOWNlMzdmZTFjNGYxZWQ2YTFkYWM1M2Y2NTE3MjhmM2Y0Yzk4ZSBsZWdhY3ktdHJ1bmsKKzQyMDc3IDY1ZmU5YWNlZDAwMmJjOGE1MGM2OTFkZDhmOTliYTY0NTg2YWQwYzcgcmVsZWFzZTI0LW1haW50Cis0MjA3OCBiYzE4M2I1ZjhiYzE5ZGVmZTcxZmUzYTg0YWE5NWQ0OGM1YjVjY2I3IHJlbGVhc2UyMy1tYWludAorNDIwNzkgZTM2NDhiYTkxOGVlNDAwODA1ZWNkM2Y0NmQ2MzkyOWUzNDE5NGY2NSBsZWdhY3ktdHJ1bmsKKzQyMDgwIDJhZTQxNmFhY2I4ODc3NTdkZDk0ZTk1NzczNmFmNjIwOGU2NGY3ODQgbGVnYWN5LXRydW5rCis0MjA4MSA3YmI2NGFjZWFkZDdjOGM2OTNjZjNiMTk0OTI5YWIyNWM1ZmViNDJhIHJlbGVhc2UyNC1tYWludAorNDIwODIgYzRjOTNiZGUxODVjN2ZmNDQ1MWIwMjgxMDgyZThkMGIxMGJjNDUyZSByZWxlYXNlMjQtbWFpbnQKKzQyMDgzIDFlZjUwNjNhMGM2ZDk1NGVmM2ZlYzI4ZWYxZDU3YWZlY2JkZDc2ZTIgbGVnYWN5LXRydW5rCis0MjA4NCBmNjJkN2QyYzUwZGVlZDM0ZjhiNmU0MzA1NWQ0ZjE1MTFhZTA0NTA4IHJlbGVhc2UyNC1tYWludAorNDIwODUgNDk2NmEzNjFmOTM2NDI0NjVmYmQ3ZGEyY2U1OGIxZmJlYmIyYmYxZiBzc2l6ZV90Cis0MjA4OSA4NWI1YTJjZGJhYzEwN2JmZjE3NDA1ZjQ3MjhmODIyYTM2Yzg4ZjQ1IGxlZ2FjeS10cnVuaworNDIwOTAgYWUwN2IwZTdkNzBhODlhMDc3YzA0NTAwMzk1NmFhZDc0MjhhNmFjYyBsZWdhY3ktdHJ1bmsKKzQyMDkxIGM1ODMyMTRkNGM1MTA5NGM4YTQ2ZDk3ZDljMWM4NDE1YzI1ZWQzNGMgbGVnYWN5LXRydW5rCis0MjA5MiBkNzlmMDQzMjg0YmQ1MDZmY2E4ZjBjM2M3ZmU2NDlhZmJiMzdlMTAxIGxlZ2FjeS10cnVuaworNDIwOTMgMWFmN2Y3MTllZDI4ZjI3Nzc1YjFhYWM5OWE4NThkMDE4YWFiMjI3OSBsZWdhY3ktdHJ1bmsKKzQyMDk0IDNlZjEzODBmZDgzYzJlYjU3NzkyZmEwZGRjMWYxMWNjYTJiOWZhMjIgbGVnYWN5LXRydW5rCis0MjA5NSAyZTE1MWJjODIwZjcxODQwOThlMWE3ZmY5NzM5NGFjY2RkNzJmZjRiIGxlZ2FjeS10cnVuaworNDIwOTYgMjEyYmMyMzYzMmFiNWQ0NzQ5M2NkMTVmZGEzMTJhOWI5ZjMxZWJhNiBsZWdhY3ktdHJ1bmsKKzQyMDk3IDJkM2ExYzNjOTMwNTY5MTNiMmJjNjBmZjM1YjIyMmNlODhkYWIwZjggbGVnYWN5LXRydW5rCis0MjA5OCA2ODc0ZjI2OTNlYjhhMGVlZjlkNjhjZWNlYmUxMzhhOTkxNmNkOTU2IGxlZ2FjeS10cnVuaworNDIwOTkgYTUzMDE3NjE4NTg2NWVmOWViYjA0MjI5ZjFmMTJjNjEwMGY2N2RkMiByZWxlYXNlMjQtbWFpbnQKKzQyMTAwIGI1ODc2MTBlMjA2OWE0ZDljNGI2NzlhZTk0ZWI0Y2U3NTQxYzE3MzEgbGVnYWN5LXRydW5rCis0MjEwMSAxZDc2NDYzOGFiZGQ4MDMxNzZhMDVjMTMyMzdiNTRhY2FlNWFhMzI5IHJlbGVhc2UyNC1tYWludAorNDIxMDIgZWE2YTQ2ZDhjNTFlYzBhYmM5NGYyYmZlNGZhMmM1NDJjYmQ3ZmEwMiBsZWdhY3ktdHJ1bmsKKzQyMTAzIDk4ZmFhYzFkZjViYmVkZjVlYjBmZjVmMjcwNDE1NDE5NDY5ODU0ZDQgcmVsZWFzZTI0LW1haW50Cis0MjEwNCAwNzBiYjQyMWEzMDNiY2UyMDAyNzM0MTliMGYxMmE4MjRkYWI5YjVhIGxlZ2FjeS10cnVuaworNDIxMDUgOTI4ZGU0YTNiZTZmNTQ5YTEwYjgwNGM2ODM5YzY4OTViMDIxYzU4YSByZWxlYXNlMjQtbWFpbnQKKzQyMTA2IDVlOGFmMjQyMzU3NTA2MzQxYjcyMjNkODk2ZWQzZjk0ZTQ2YTZhNzQgbGVnYWN5LXRydW5rCis0MjEwNyBmZGE5MTJmZThiOWFkYzQwNzhiMTZkMmE3ZmI2YmFlNzM4NTY4NDI5IHJlbGVhc2UyNC1tYWludAorNDIxMDggNzZhYmEzZmE0ZTJmODE3YjVlNTMxZjMzOTdkZDhkZDE1MDExMzlhZSBsZWdhY3ktdHJ1bmsKKzQyMTA5IDE3ZjA5OTQ3OWU2YjczZGNlZTVkNjcyNTYwYzdlNzJiOTg3ODI4NTEgcmVsZWFzZTI0LW1haW50Cis0MjExMCA0YmNmNWZlNTRkODM0MGFhZDc0Y2UzYjI1Y2M2MDNkYjJjNDJiOWQ5IGxlZ2FjeS10cnVuaworNDIxMTEgOWVhZTMyYmRmODAxYjY3MDFiYzdiOWY4ZTlkOGQyMzAzNTA5OWZjYyByZWxlYXNlMjQtbWFpbnQKKzQyMTEyIGFhN2FjOTA4N2ExYzMwNjMyYWJmZDc5NTAyMDg2NDc1MDFhYjY3MWUgbGVnYWN5LXRydW5rCis0MjExMyBjMmIxNDk3MzEwZDEwMTU5YmMzYzUzNDg1ZWE3MGE5NGNhMWUxMzUzIHJlbGVhc2UyNC1tYWludAorNDIxMTQgYWVkMzJjZTM1YjgyZGZmYWQ3ZTViMjljYTZiYjJlMTMzYTgwNmRjYyBsZWdhY3ktdHJ1bmsKKzQyMTE1IGQ0OGY0YTRhMzA2ZjU5M2VmMGExMTRkYzE1YzM2MGUxNzAwNWU1MTMgbGVnYWN5LXRydW5rCis0MjExNiA1ODI1MWM5OTA0ZTE4OTI3MDQ0NmU2MzM1ZWEzMGIyNTVkYTdhNzk0IHJlbGVhc2UyNC1tYWludAorNDIxMTcgZWI0YTQ3YjgxOTQyNGNjZjM2OTgxMWNkNmIzMjJhYTgwYTZiN2Q1MCBsZWdhY3ktdHJ1bmsKKzQyMTE4IGIwYTlhOGQxNGFiMjIyNDRjMGFiMDRhM2M1MzA4ZWEyYmIwZmY4MTMgbGVnYWN5LXRydW5rCis0MjExOSAzMTVmNDQwN2FiMTJkNTc3ZTAwN2U4YTdjNzNjNmE3MGJiODI0YTU2IGxlZ2FjeS10cnVuaworNDIxMjAgZjhmY2NhZTZhMGY1ZGM4Mjg3ZjA2ZWE3NzY1MmFjNGUwYjJkYmJiNSBsZWdhY3ktdHJ1bmsKKzQyMTIxIDZlMTI3MDczNzFhMTMwZWVkNDJkYjEyMDIwMGU4ZTZmNmU2MTI4NWQgbGVnYWN5LXRydW5rCis0MjEyMiAxOGEyZDc1YTNjNjk2NDRmNzEzYzI1NTliYzNlOTk1ODdmNWIxMWJlIHJlbGVhc2UyNC1tYWludAorNDIxMjMgM2E5MmU1NjU0NzQ4NWFkODhkZmQ2YjhkY2IxZTRhYzc1YTkwNGFhMyByZWxlYXNlMjQtbWFpbnQKKzQyMTI0IGJhMTYwNDY0YThjNmMxOWNhMTMzOThkY2ZlNmNlOWM3OGIwNWMwZmMgcmVsZWFzZTI0LW1haW50Cis0MjEyNSAwNGE5NmNjODg1ODNlYzNjMjFmOTBmM2FmNGM3ZDFkMzBmYjMxZTE3IGxlZ2FjeS10cnVuaworNDIxMjYgMjQ0NTYzMzgwMjZjMDRmMmQ1ZGY4MjAzYWNlZDUyNDU4OWU5ZjJkNyByZWxlYXNlMjQtbWFpbnQKKzQyMTI3IDFlOGY0NjczZTQ0NzQ3M2JhYzRjNGUxNDFkOWY2NjgyNmNkNjdhYjQgbGVnYWN5LXRydW5rCis0MjEyOCBiMDVjNGNhODU5NDM0ZGI3NjFmZjNjZjUwMTBjOWQ3ZWU4OTcyZDBlIHJlbGVhc2UyNC1tYWludAorNDIxMjkgNDc0NmZhYjM0MDEyNDRmZmJmNGJmOGNjNmNiYjM3NGZkNDYwOTVhYiBsZWdhY3ktdHJ1bmsKKzQyMTMwIGFjMDJmNjU1YjMxZTM4MDhlMmZhYTc3YjlmZWRjNTJiZGFhNzcyMTggcmVsZWFzZTI0LW1haW50Cis0MjEzMSBjYTZjODAwYWQ1YTAyYzExOWJiMGMzYTM5ZGQ3MGFlZjZjYTEzYjY1IGxlZ2FjeS10cnVuaworNDIxMzIgNmZjYjU0MDUwNzRlN2E1ZTU4NDlkYmY0YTBmMzdmN2U3NjM3MjMyYiBsZWdhY3ktdHJ1bmsKKzQyMTMzIDk3ODg1YWRmNzNiNTQ3MWFjN2RhM2E0MzJmM2RmODFkMDJjY2Y3YWEgbGVnYWN5LXRydW5rCis0MjEzNCA3ODcwMmE1MDI4YTQxZjg1YWI4MGY0ZWM3MGMxZDVmODFhNTAyZDQwIGxlZ2FjeS10cnVuaworNDIxMzYgOWY3Y2UyODQ2YzMwOTU5YzU0NWQ5MTE0NmY4MTc0OTU1M2E5MzNkOCBsZWdhY3ktdHJ1bmsKKzQyMTM3IDYxYjhlM2UzZDY0MTgzYWNjMjgwNjQ0ZWI2NDk5MWM2NGJkNGI5YzQgbGVnYWN5LXRydW5rCis0MjEzOCAyODA2NTA3OTJlZjcyYjdjZWU4YjkzODk4M2IxYWYwNzRhZTAzYjg0IHJlbGVhc2UyNC1tYWludAorNDIxMzkgZjk0OTkxZDVkZDIwNjljYmRhYmZmOWQ0ODU5YWYwNWRiNDM0NDZmYyByZWxlYXNlMjQtbWFpbnQKKzQyMTQwIGZkZjFiZTljZmVkZjJiMzAxOTYwMzJkOTMzM2Y5YTU3NGYzMzY5NzMgbGVnYWN5LXRydW5rCis0MjE0MSAwMGVlMjE3MTUzN2Y3NWRlN2E3MDk1OGZiNzk4NTQ3ZTRkOTQ1MzY2IHJlbGVhc2UyNC1tYWludAorNDIxNDIgZjAxNTQzZTE1Zjg1YTQ5OTFlMzIwMTFkMWEyYjVhMTNlNDFjMTY1ZSBsZWdhY3ktdHJ1bmsKKzQyMTQzIDQzMTVjNTNmNTFiY2E2MDQyOWRhNTZkYjNlNWIzMTYzN2QwNjRhNDkgcmVsZWFzZTI0LW1haW50Cis0MjE0NCA0ZDJhMDlhNjQ4NWQzZTljOThjYjlhMWE2ZjY1OTc1ZjEzMTI4MmQzIGxlZ2FjeS10cnVuaworNDIxNDUgM2I2M2JjOTA0ZDkyZTdiNWI1MjUwNDNlMDY2MTkyZDcwZGQ5MDA1MCByZWxlYXNlMjQtbWFpbnQKKzQyMTQ2IDRmMTFiMjNlMzYxZjQ1NGQ5ZTlhOWViNzdhOTRlNGE2NjQ5ODQ4ZmIgbGVnYWN5LXRydW5rCis0MjE0NyA0NDZjYjVmYzNkMjgwYmY3ZmM0NmYyZDZkYWQyYzgxMjYwMjk4NWM4IHJlbGVhc2UyNC1tYWludAorNDIxNDkgYTE3YjczODI2Zjk3ODNhODAxNjhlNTQ3OGU3YjM0YzQ0NTBkODdmMiBsZWdhY3ktdHJ1bmsKKzQyMTUwIGM4M2MwMjJhMzQ5MWViMTZmZTFhZmY1YTc4ZTQxZWNlNjk3MzNkYzAgcmVsZWFzZTI0LW1haW50Cis0MjE1MSA4MTQwZjAwMGU5ZDQ1OWVmMzRmMzI5ZDM1YjU5ZjBjYzJjMGNlYzFhIGxlZ2FjeS10cnVuaworNDIxNTIgNjA0ZmU4N2FkNDdjN2MwYzE5MjRlYjM5ZjlkYWE3Y2E4NTgyZTBlNyBsZWdhY3ktdHJ1bmsKKzQyMTUzIDk5ZDQ5MWZhYTY1YzJiOWRmN2UxNDg4MDk3MWE2ZDExMDY1MmJjZjEgbGVnYWN5LXRydW5rCis0MjE1NCA3YjNkOTE1YjZlOWQwMDEyM2U4ZmM3ZTVjZjhhZDQ3MmEyNjRmYjZhIGxlZ2FjeS10cnVuaworNDIxNTUgNGY5MGM3YzA1MzY0ZjQyNGI2M2Q2MmQ0ZDEyYjEzZmNkMjcxNjgyYyBsZWdhY3ktdHJ1bmsKKzQyMTU4IDgzOGI1ZjU5MjRlZTE3MTQxNDY3ZTkxODgxNWEzZDUzZTBkZTM4MTMgbGVnYWN5LXRydW5rCis0MjE1OSAzYjRiNDQ1NGZlODY2NGJjNGJlYWYxNWNjOGUxYzE5NzNlODMwNjNiIGxlZ2FjeS10cnVuaworNDIxNjAgNWVlNDZiYmVkMWY5ZmUwNDY5ZTE2ZTJkZDQ0M2Y0Y2Q2NWU2MTkwOCBsZWdhY3ktdHJ1bmsKKzQyMTYxIDVjNDg3Y2I2MzI5NTA3OGRiM2YzMzllYWUzYzY3MGU2YjZkODI3YTYgbGVnYWN5LXRydW5rCis0MjE2MiA3ZjA1OTc0YzhiODAzMTdmMjg3MDY5MjE4ZTIwMDBlMTBhN2M1MGM5IGxlZ2FjeS10cnVuaworNDIxNjMgMDAwNmFlMTBiN2YwYzkyYzkxYTNlMDkwMjc0YzJhOGZhNDAyNTAzOSByZWxlYXNlMjQtbWFpbnQKKzQyMTY0IDc4YmQ3OGExY2U3NGI0NjFmMjU4YjU2YjU1NGI1ZmJmZTA3Y2I3MTYgbGVnYWN5LXRydW5rCis0MjE2NSAyMDEyYzU0OGNlNjk4Y2JmNDBiYjllNDVjNmE4MzgxMGFkMGE3MTljIHJlbGVhc2UyNC1tYWludAorNDIxNjYgMzExNGViMDYwZDBhZWQyZWE3ODY1ZTJmM2I0MmQxOGVhOTk4ZmU2MyBsZWdhY3ktdHJ1bmsKKzQyMTY3IDc0YTU5ODk2NGM5NjI4ZDBhNDdmOWNkZGU0YThlNDQyYjY1MmE4MTYgbGVnYWN5LXRydW5rCis0MjE2OCBhMjljYzIzYmI4OWM0YzVmNzdiZWUyMGMzMDk0Yjk4NzU2ZWNlMzhmIHJlbGVhc2UyNC1tYWludAorNDIxNjkgMDM3MmUyNWU0MzBlY2M1NzJmMmY4YTkyZjY5ZTgxYjg1YTQyMjg1YyBsZWdhY3ktdHJ1bmsKKzQyMTcwIGE1MGY1NjM1YTQ5NDljOTU2ZmU3Y2ZiMGFiMTJmNzg2YjQyYzAyM2EgcmVsZWFzZTI0LW1haW50Cis0MjE3MSBkNjhmNzNmOTZmMzFmNzJlMzQ0MzljNWZiZjRmOGI5NTk3NmZmZDQ2IGxlZ2FjeS10cnVuaworNDIxNzIgNmFiODJjNDcwNjMzOGYxZTQ2NWIyYjVhMWJiOTgwZjJmYjU0NTQ2NCBsZWdhY3ktdHJ1bmsKKzQyMTczIDA1NWZjZGM2NTJkZDQzNTZjZmE4YzQ4NTBmYzc2YjBjNGQwMjkyZTMgbGVnYWN5LXRydW5rCis0MjE3NCAxYjllYjk2MzJjODliOGEwOTRiMzFiYTA3MTlkYWI0Y2M0MjA3ZjEyIGxlZ2FjeS10cnVuaworNDIxNzUgYmZiMjQ3ZDdiYzNmNzI1MmYzMzk5MTg5MWY0M2Q0Yzg2NWM5OTc5YSBsZWdhY3ktdHJ1bmsKKzQyMTc2IGQ1NzM0ZGMwN2Q0YWJkOTk1ZTFlOTVkZmJjNDUxYTcwYWQ2ZjQwNTcgbGVnYWN5LXRydW5rCis0MjE3NyA1MTIzNDUzNjkwZTUxYTE4ODg2ZmVhMWVkNTE0NDgzM2VkM2FkN2I0IGxlZ2FjeS10cnVuaworNDIxNzggZDYyZGEzNmFhZTE1NTEyNWFjZmFjM2FjOTVhOWQ3NzdmZjYyZWFmOSByZWxlYXNlMjQtbWFpbnQKKzQyMTc5IGU3ZjE5ZWQxZWEyZGMwY2ExYmMyMDAwOWQ0M2ZjN2Q3Y2IyYmMxMzggbGVnYWN5LXRydW5rCis0MjE4MCBjMDFkMjI3MmU2YzNhNmZiNDk3NGY4ZTVlMmU0OGI0YmY4M2IwYjcwIHJlbGVhc2UyNC1tYWludAorNDIxODEgM2RmNjM0NjFiMTE2ZDM3OWQ3ZWU4NjM3YzBjMzcyNzNlMTIyMTM5NiBsZWdhY3ktdHJ1bmsKKzQyMTgyIGUwMjg5ZmJhNmZmMWVhOTM5MWI2Y2EzNzRmYjYwMGNmZDQ2MzliNGQgcmVsZWFzZTI0LW1haW50Cis0MjE4MyAwNDBkN2ZiNGViNTY4NDdhZGRlMTBkOGJmM2I2YTNiYTY2ZDlkMzZiIHJlbGVhc2UyNC1tYWludAorNDIxODQgZTk3ODE4YmMyOTE5NDRhZjZkMDllMWQ2N2IyYjA0ZDdiN2I4YjNjNSByZWxlYXNlMjQtbWFpbnQKKzQyMTg1IDEzNTk2MDVmMzcxM2ZiNTkyMzllZmZjMGZhMjUzN2IxZDE5Mjc1NzMgbGVnYWN5LXRydW5rCis0MjE4NyBhZjY4NGQ3M2YzYTY3M2RmOTczMWE3MzEwZWIwNmZlY2E4Yzg5YWNhIHJlbGVhc2UyNC1tYWludAorNDIxODggYzNiNjcyOGQ4ODZiODc3Y2JkNDFmYTQwZGMyZmU2OGYyZjZhMzQyOCByZWxlYXNlMjQtbWFpbnQKKzQyMTg5IGNkZTZlYTA5MWFhYWZjZTQ1ZTMxNTJiOTRjOWJhNTNhZWE1MjhkOTYgbGVnYWN5LXRydW5rCis0MjE5MiAwNjAyODg3ZGFkZjVmNTc0MWYzNTU0NzZkNmIwMTgxOTAxZDU2NmRlIGxlZ2FjeS10cnVuaworNDIxOTMgZjBhZGE2ZjBmNjc4OTkyOTNhOWM0MjE5NzQxMTI0ZTQwOTJhMTFjNyBsZWdhY3ktdHJ1bmsKKzQyMTk0IGE2MjVlODg3NjQwNzAzODE4ZTIzZjMwMzYwZmU1NDY3ZTNiODMwNzMgbGVnYWN5LXRydW5rCis0MjE5NyA5NTBlM2UzODQzYmJmMDA0NzdjMzFlMmU0NDk2YjBmNjAyYmRmNTNiIGxlZ2FjeS10cnVuaworNDIxOTggMDAwNGE5ZDA0ZDAzNjY1NzE0NmEyZTIxZjRmNWFiMzhkNjk0NDFlMSByZWxlYXNlMjQtbWFpbnQKKzQyMTk5IDIyODk5NTAyMTE3ZmU2ODkxZjY5MjFjN2FjMTA5MDk4ODYxYWE0MjIgbGVnYWN5LXRydW5rCis0MjIwMCBmYzEyY2NhNzNjMzVkMGJjZDE2ZmJkODBjOTRjNzFiNDFkN2I2OGFkIGxlZ2FjeS10cnVuaworNDIyMDEgMjliZmJiNTg4ZDkzZjg4NzcxN2FiNjFlMTEzZTEwZmVlNzIzZDA0YiBsZWdhY3ktdHJ1bmsKKzQyMjAyIDIzZmU0N2U5MzM3ZDhmOWM2ODQxMmExYTY1ZjRmNTJkM2IyNzA5ZjIgbGVnYWN5LXRydW5rCis0MjIwMyBiZmEyMjcyNjdmNDgxNGU4MmU5ZmJhY2VhOWEzMjFlNmExMWFmYzk0IGxlZ2FjeS10cnVuaworNDIyMDQgMGYyZDgyMDAzYTBmYjc0ZDRkMmFlNDliNzFiMzU3YmVmMjk5NTdlOCBsZWdhY3ktdHJ1bmsKKzQyMjA1IDI4MGQ2MDE5Y2Y0MjZjMGEwMzY2MTI4Y2RhNzZiMzRhODcxMjliZjUgbGVnYWN5LXRydW5rCis0MjIwNiAzOGE5NGU1OGE2OTU2YzZhYTk3MDhjOGVmN2UyODNjMDUzMTE1MDc2IGxlZ2FjeS10cnVuaworNDIyMTIgMTZiZmU5Mzg2MDY4Y2ZiZTE4YTM1ZWU5YzI5OTJlNjFjZWI5YjZmOCBsZWdhY3ktdHJ1bmsKKzQyMjIxIDgxOTQyZmM5YTIwZDE2NjllODcyNjlmYTZhNmJmMjY4MTk0ZGY5NTQgbGVnYWN5LXRydW5rCis0MjIyNiBkNjgwZmE1MjU1MTIyNmM0MGYyNTRjOWI0ZjZiMTI4OGY3NTFjNjAwIGxlZ2FjeS10cnVuaworNDIyMjcgNmE4ZDVlMDU0ZTk3MWQzZGI0ZGYwYTljY2MyZjlkYmE5YzlkNzQ3MyByZWxlYXNlMjMtbWFpbnQKKzQyMjI4IGYyMzY2MTA4YmNiMjgxYzZkNmNmNmI5ZWIzNDNmOTNmNzMzYzNmYzAgbGVnYWN5LXRydW5rCis0MjIyOSBiZDQ0YzdjMDk3N2Y1NzY3MjkxNjVmN2E1NDBmMTA0ZTIxZGJkNzEyIHJlbGVhc2UyNC1tYWludAorNDIyMzAgMjZlMGY2OGRlODZlNmJhYjEwMDA4YTMzMzRlNWZmNmRiMTdjODhlOCBsZWdhY3ktdHJ1bmsKKzQyMjMyIDY1NWZhMjI2MDY3OTg0NjNmM2ZmMTUzYTBhZDljN2M3OTcxM2Q4ODAgbGVnYWN5LXRydW5rCis0MjIzMyBlNjYyMjg1ODBlYTI2NDg0OGE4Y2ZhMzQ0N2QzNjhlMDJiNDIyNzliIHJlbGVhc2UyNC1tYWludAorNDIyMzUgOTRkMjdlMDE4MzNkYTQ3OWJkZjhlZjU4YjZlMjE3ZDE3ZTNiYzlkNCBsZWdhY3ktdHJ1bmsKKzQyMjM2IGNiMGRiYWU3MmE4ZTc2MWIxOTg5NGM5MjliMTcxODBjOGY2OGIxZDIgcmVsZWFzZTI0LW1haW50Cis0MjIzNyA1ZTJhY2Y3NDQxYmQ2OWJjZmNkZTViYjFlNGIzNzIwNTdiMDFiNjZhIGxlZ2FjeS10cnVuaworNDIyMzggZGMzMjQ2MzAxNWYxYmNkODQyNmVhMGEzMmI0NThhZGU1YmQwN2MwNiBsZWdhY3ktdHJ1bmsKKzQyMjM5IDhlMjNhN2NjZjYxNWQxOTRiYzRjYjMzYjYwYTNkMzI2ZGQ5N2IwYmQgcmVsZWFzZTI0LW1haW50Cis0MjI0MCA5YTRmZjZkNmU3MjQ2NDEzYzg3YTFlNWViYjE3OWJlYWNhNjI2NjMwIHJlbGVhc2UyMy1tYWludAorNDIyNDEgYTA3ZmIyZWY1MmFlNzU5OWM2YWY0M2M4NjI1OWJmNjE3MTI2ZWJhZCBhc3Qtb2JqZWN0cworNDIyNDIgZDFlZjIzYTE2NzYwYzIzMTM0Yjg5ZDU2YTEzZDRhNDI2ZDg1NGNhZCBsZWdhY3ktdHJ1bmsKKzQyMjQzIGEzMDQ2ZDQzZWI1MmYyZjFjYWZjOGI5OWU1NmI0OGM2ZTQ1NWNlM2IgbGVnYWN5LXRydW5rCis0MjI0NCAwMmYwNzQ0YTljZDAyZGQ4MDEzNjgwNDUyODZjNWFmMzJiYjdmOTAzIGxlZ2FjeS10cnVuaworNDIyNDUgM2VkYjFiY2Q0MzRkNGRhMWI5Y2IzOWNiMmYxZmE3ZjIyNWJmMjA1OSByZWxlYXNlMjQtbWFpbnQKKzQyMjQ2IDM4OGE1ODNlN2E2MzQ0ZDVlMGRlNWEwOWUyM2MzYzZjZWE0MmI5MTkgbGVnYWN5LXRydW5rCis0MjI1MCA0ZWQzMGVhYTAyNTYxMjVhNDIxMGMwYjI1M2EwYjUyYzFhM2MyZDg5IGxlZ2FjeS10cnVuaworNDIyNTEgYzE5MzI4M2U2M2JjYjc2MTI1M2FkOWE4ODM1YWUyMWZlNzQ3NTZlZCBsZWdhY3ktdHJ1bmsKKzQyMjUyIDg0MDRjOWVmZGMzNWViZmY3MDE1ZDU1MmU2OGM3ZWVlZjc3YzVkNDEgbGVnYWN5LXRydW5rCis0MjI1MyA3Nzg5Y2M1NTdlMWVmYTU0YzA4ZWE5ZDM2YTMwYmQxNjhiNDg1MTYzIGxlZ2FjeS10cnVuaworNDIyNTQgYWY2N2I2MjY1YWY2YWUwYmRmZDVhZWZjMzY5ZDZlYWU4MjUxOTQ1OSByZWxlYXNlMjQtbWFpbnQKKzQyMjU1IDAwMmY5YjhmZWMyMWU3MGI2ZWZkNTAxMGE1YzlkMmY0ODg5NjkyNWIgbGVnYWN5LXRydW5rCis0MjI1NyAwYTJhNGYxNDExMGI5NGE4NDFkY2VkYzFhMGFhOWRmNGZmMGFlM2I3IGxlZ2FjeS10cnVuaworNDIyNTggNTFmNzYwMjg4MTA0NTI5YWE3ZDA0NWY4NWY2OTVkZWNkMzViMWZkMSBsZWdhY3ktdHJ1bmsKKzQyMjYxIGYzOGI2MzUyNjNkM2ExZmZmNmFlZDRkNzA0MWQ3OTdiMWE4MTY0YjUgbGVnYWN5LXRydW5rCis0MjI2OCBjZDQ0NTlkMDhlZTIzNjhlNmNlOGQwZTJiNzZiYjIwMjYwMjk0ZDNmIGxlZ2FjeS10cnVuaworNDIyNjkgM2FiZjMzMjY0MTQ2MzM2MWQ4ZjliOGVmMGEyY2M1YTlhYzcxZjJkNyBsZWdhY3ktdHJ1bmsKKzQyMjcwIGVhNTRlYWY5MjAxNjAzMTg4NWRiY2ZiNTdhMWVhMWMxMmUzM2VjOWUgcmVsZWFzZTIzLW1haW50Cis0MjI3MSBkNTk2MTlhMzcxYzIxNzljMzIwZmU3ZDZkNjA1NTdiYWJkYWMyYjQ2IGxlZ2FjeS10cnVuaworNDIyNzIgZmRhY2Y3MmQ0OTc2MzAyYzkyYjQ1NTE5ZGE0NTk0NTZiYTAyM2M5NyByZWxlYXNlMjQtbWFpbnQKKzQyMjczIDU1MjQ2NGQ4MWUxYjIxNjk2MWVhMmE3NmFlZTU4MTViOTJhNWJkNGMgbGVnYWN5LXRydW5rCis0MjI3OSA4NDE2ZmIzMjA0MDM5MTlhNmRkMDY2ZjAyODZkOTViZThjMmFiNWRmIHJlbGVhc2UyMy1tYWludAorNDIyODAgMzk3ZjYzOWY3ZTZiOGFmZDBiODMyMDZhMGM4ZmQ5ZDE4MDM2MzFiYiByZWxlYXNlMjQtbWFpbnQKKzQyMjg0IDRjMmQ2ZWI4ZDVlOWMzYzYyN2VhYThmOWJlNWFmMzk0NzRjNjZjZDUgbGVnYWN5LXRydW5rCis0MjI5MCA4OWYxZGExMzQyY2E0N2RmOGFiYmRhMzAwOTQ3MzU1ZGExOWY3ZWVkIGxlZ2FjeS10cnVuaworNDIyOTEgM2NmOGE5ZWQ0NDZiM2U0YjEwNTkxMTU5NGQxMzEyNWIyNWZmM2ZjMiBsZWdhY3ktdHJ1bmsKKzQyMjkyIDkzZWZhNTliMzI5N2NmZmFjN2Y5MDZlZTlhOTM5MTM3N2VjNTBkMTUgbGVnYWN5LXRydW5rCis0MjI5MyAwNWUzMTRlZTI2Zjc3MDg4NWRkNzc5NjY3Mzg2OWU2NjkwM2Y5MDY4IGxlZ2FjeS10cnVuaworNDIzMDMgMTY1Mzg5YjE0ZDZiYTcxOWJjYzE1MTlmZTQxNzRmNTBmNTAzYzRkNiBsZWdhY3ktdHJ1bmsKKzQyMzA0IDgxZjQ0ZDEyYmVmN2ExOGUzOGY2NmU1OTE0ZDAzMzVmOGNiOTM3YWEgbGVnYWN5LXRydW5rCis0MjMwNyA3YjE5YTUzM2NlOWJhZDk1ZGY4NTdiM2NhNGFkZDhhY2U3OWMwZGJmIGxlZ2FjeS10cnVuaworNDIzMTEgMGM1YWU4OTI0MTA0ZWU2NDE3ZGIwZDQ1YzA1Yjc1MThmZGFlOGJmOCBsZWdhY3ktdHJ1bmsKKzQyMzEzIDFjM2IxNWRmNjdhMjkzOWZmMzAxZGI4ZGYwYzdlNmFhMTc2NzNkNDIgbGVnYWN5LXRydW5rCis0MjMxNCBjMDczZGZmYmU3MGVjOTVjMjNiYjQwZTQwZTA4YjBhOTk5YzQzYTNjIGxlZ2FjeS10cnVuaworNDIzMTggZDIxODc1ZDM1OTJiNjQ5NzRiMjZiMGEwMDFlYzE0M2Y0YzdlMzFjOCBsZWdhY3ktdHJ1bmsKKzQyMzE5IGUyZDQ2MDhmNWMxZDZkMGY4ZjQ1NWVmODQ3YThlZTBhNzc5MjU5OTkgcmVsZWFzZTI0LW1haW50Cis0MjMyMCBkNDk2YzA3NjRhZDYxNGE3ZTU4ZGE5ODNiNzdjNGZkYzFlYzg2ZWZkIGxlZ2FjeS10cnVuaworNDIzMjEgYWUxZGE1MTI0MzgyNGE4ZDdjYTM3ZWM3MDI3NzNmZmE3OGZkYjNhNSByZWxlYXNlMjQtbWFpbnQKKzQyMzIyIDZjNmI0MjlhNzAzMGM2NTAwOWQ4ZmRmMThmN2NlNjFlOWRlMDE0Y2EgcmVsZWFzZTI0LW1haW50Cis0MjMyMyA1MTI5NzgzMWI1Zjg5MDllZTM2NGY0YjgyYTk3Y2ExZmI2MjViNDZhIGxlZ2FjeS10cnVuaworNDIzMjUgYjQ4YTA0NzI5Y2M0OThiMGJkM2U4ZGEzM2Y4NmFkNTM4ZWUzMThhYiBsZWdhY3ktdHJ1bmsKKzQyMzI2IDIwZjc1ZDVlNzllOTUzYmU0NmZhMTVmMmJiY2E0MjA5YTYxMjQ2ZTggbGVnYWN5LXRydW5rCis0MjMyOCBjMDA3MGQ3NmMwZGIzZTA1NTMxZTJhOTc5NjJmNmMwN2QzMmE0YWMyIHNzaXplX3QKKzQyMzMwIDM2ZWFlM2ZjMzczZDUwMTA1MmFkNGYyZjFjYWMwOTNhMmQ5OTM4NzMgc3NpemVfdAorNDIzMzIgNzE1MzA5MjFjZTkzYjNlMzdlNWJkNGJhOTlkZDg2YTcyNTdhOWU5NyBzc2l6ZV90Cis0MjMzNCAyYTMyMzFmZTcyZTI5OGFkOWY5OTEzZmQ5N2NkY2ZiYTdlZjU4MzJiIHNzaXplX3QKKzQyMzM1IDk5ZGZkY2M2ZDYxM2RkZTQ0Yjg5YTgxNDZjMzllNjJjZDA3OTE2MjAgbGVnYWN5LXRydW5rCis0MjMzOCBjNDZkZTFlNWI5YTAzMjAxODA4NWNhZDZmNDZkNWMwMWZlNzRiZDAxIHNzaXplX3QKKzQyMzM5IDY1YWU3MzBiNjIzMTQzYTliNWNlMmExYmYxNTM5MmM3N2JlOWM4Y2IgcmVsZWFzZTI0LW1haW50Cis0MjM0MiAwN2JhOGFhZTNkYzY3MWE4NjE5MDE5MjBiYTJkNGVlZWVjNDZlNzhiIGxlZ2FjeS10cnVuaworNDIzNDMgYTJiNmRkYWI2NmQ3OGEwYjg5OWZiODc5NDg3ZGNiN2Y4NjEyNTk4ZCByZWxlYXNlMjQtbWFpbnQKKzQyMzQ0IGU0NzFmMWRmMmQwMzFmMTA2Njg4Mjk5ODhhZjE4YTUyZDQyYzEwNzQgbGVnYWN5LXRydW5rCis0MjM1NCA3NGIyNTMzYjU5YjhiZWI0N2RhYjI3NTU0Y2E3YzEyYzRkNmZlM2U0IGxlZ2FjeS10cnVuaworNDIzNTUgYzdhYjQxN2M1OWJjOGIwM2Q4NjY5NWI0YzJiODg3ZTc1MWEwMzExZSByZWxlYXNlMjQtbWFpbnQKKzQyMzU2IGFjZDcwMmUzMDZmYjQxNGI5ZGFlOGI2MDEyYmE2ZTI3NmY2OTVkNTQgbGVnYWN5LXRydW5rCis0MjM1NyA1NzRjMjVmZTYwMjg0NTIwZWQyNTNlMzM0YzI3NTlmODljZTIzYzk5IGxlZ2FjeS10cnVuaworNDIzNjIgMzQ0NzU0NDk3Y2IzZjU4OGU2NTg3NTgxMjQ1NmRiMGExOTA1ZGY3YiBsZWdhY3ktdHJ1bmsKKzQyMzY1IDIyMDQ5N2UwODljZThkZWI1YjBjOTYzN2YxMTMxZTQwN2MzNzM0ZWUgbGVnYWN5LXRydW5rCis0MjM2OCBkYjJmY2E5ZWEyNjQwNjI4MTg2ZTM2MWQwYTU1MzI4ZWEzNzYzMzBhIGxlZ2FjeS10cnVuaworNDIzNzEgYzBjMzZiYmQ1ZTBjMTk0Mzc2OGIwYjM5OTNiNmM1MTk0YWNkZTIxOSByZWxlYXNlMjQtbWFpbnQKKzQyMzcyIDE3ZWMxN2RkMmFiM2Q3ZmM0NjY0MTI0ZmI0NzE4ZDMzZWIwZWZjYmYgYXN0LW9iamVjdHMKKzQyMzc2IDk2Njg1ZjExMjcwOTQ0NDQ1MmQ0MTA0NDM3ZjZmZDY4ZDc0Y2UxYmMgbGVnYWN5LXRydW5rCis0MjM3NyAzNWRlOGJjY2ZkMGVkNzI4Yjk5YmM0MWFjZmI1ZTIyMjllNTA4MzQ2IGxlZ2FjeS10cnVuaworNDIzNzggOThmN2I3NDNkOTFiMDM1YmVmMjVhNDk2NmQ5MTMwNDVkZTVkMmY0MSByZWxlYXNlMjQtbWFpbnQKKzQyMzc5IGMwMzRjZGQ3OTYwY2VjNjE0NGVhMmJmNjVhNDRkZWYwZjgxOTg5YmUgYXN0LW9iamVjdHMKKzQyMzgwIDM2MjVjOGIxNDNkOWNjY2Q1OTI4Y2Y5MGNmZTFiY2FhNzBhZjhmYjkgc3NpemVfdAorNDIzODIgN2ZkYzYzOWJjNWI0ZDNjMDkyY2IzZmQ3ZDg3ZjczZGIzZDQ3YmEyNyBsZWdhY3ktdHJ1bmsKKzQyMzg0IGI4ZTczYzJkMWYxN2IyNzUwYzY1MzcxZjI3NzI1OTlkODM1MTdjYTYgbGVnYWN5LXRydW5rCis0MjM4NSA3OTk4ZDg1NjQ5YzllMDAwYjM3YmMwZDFmMDE2ZGY0NjYzYzc2OGZlIGxlZ2FjeS10cnVuaworNDIzODggZGE5M2Y5ZjJkNmU4YTgxZmRkYmQ1M2EwYTk1MTY2ZmU5ZDNhNzliNiBsZWdhY3ktdHJ1bmsKKzQyMzg5IDU4MjVjNmFjZTI4YjYwZWI1N2E1ZDU0MjU1OTNjZWYzYmUxYzA2MmEgbGVnYWN5LXRydW5rCis0MjM5MCA3NzVkZWZiYTRlZTc0YjU2MWJmNDM4ZGZkNzFlNDJiYzM0MThjZGY3IGxlZ2FjeS10cnVuaworNDIzOTQgNzY3YWRjMDk4NDE2MWJmNjMzMDUyNDM2MGFiMzA3YzZiNTI1MTc5ZSBsZWdhY3ktdHJ1bmsKKzQyMzk1IDczMjJkY2NiYTIyNDI4YTQyYWM4OTlkNTBlZDk0ZThkOTVmMjQxNjIgbGVnYWN5LXRydW5rCis0MjQwMCAxM2U5OGUzNjlhYmQ5Zjg2YWVjNzRiYjM0YzMzYzE1Yzg3OGE3MzZiIGxlZ2FjeS10cnVuaworNDI0MDEgMGYzODk0YmIyYWRhYWM4YTlhNWE1NmRjMTA0Y2EwMWRlNjlmYzNkZCBsZWdhY3ktdHJ1bmsKKzQyNDAzIDE1OTZmZjVjNzliNTAyZTFiM2M0YzhmMmMzODUyOGI1ZWEyYmJhYzMgbGVnYWN5LXRydW5rCis0MjQwNCAzMzUwZjg1Yzg4OWZkODBiZDNmYmViYTc4Zjk1MTJkMDJkMWM2MmU3IHJlbGVhc2UyNC1tYWludAorNDI0MDUgNDQ1YzBhYTgxMWNhNzBkZDlkN2I4MDc4MjZjNDZhMWM2MjU0YzNkNiBsZWdhY3ktdHJ1bmsKKzQyNDA2IDkxNGY1YjBkYTU0ZWUxZjQwMjMxM2U1OTExMzQxNTg0OTE0MDQ4YjIgbGVnYWN5LXRydW5rCis0MjQwNyA3YzljZmQzYjVkMGZhNmYxZDQ0ZTVjZjM0YzFjODU5ZmZiOWVlYTRjIGxlZ2FjeS10cnVuaworNDI0MDkgN2RjMWZlNzc3MTNmMmQyMGNjOTQxNTVmYjkxOWY4ZjAyYWMxMGE3MCBsZWdhY3ktdHJ1bmsKKzQyNDEwIDkxMzMxYTg4NzE4ZTAyYmUyMTFiNDk3MzQxMmZjZThmYjY4ZTc2YjcgbGVnYWN5LXRydW5rCis0MjQxMSA5ZjNmODdlOTIwYTZkMWUxOTU1NzcxOTFhMWI1MTljOWIxZDY5NWU2IGxlZ2FjeS10cnVuaworNDI0MTIgZDZkNDE1ZGYwZGYwYWFjMmExY2E3ZjMxYjQ5NThmOTY0M2UwMTg3MSBsZWdhY3ktdHJ1bmsKKzQyNDEzIDI2NDcwY2RlZWEzZDZmYmVjYTBjMzM3ZGQ1ZTdjZjE0OGM1NzMyOTkgbGVnYWN5LXRydW5rCis0MjQxNCAzMGFlZjNjZTJiMjZjMDkxOWNhZjdjZjZiYmFmYWZhZGJhNTk0NGQ0IGxlZ2FjeS10cnVuaworNDI0MTUgMjc5MTY3NmIzODI1OTAwNzYzMGQ5NzdiMTQ0NmE5NDYyYmYzNjA1NyBsZWdhY3ktdHJ1bmsKKzQyNDE2IDY3MmMzMGJmOTVlNjlhN2RlMThjMWQ3N2JjNWJmM2Q1NzkyNjZkMWQgbGVnYWN5LXRydW5rCis0MjQxNyA0Yzg2MDYxOTFjMGNmMzIyZTllNzg1MTc4NDAwOWQ3ZjJlMmQ3MjIwIGxlZ2FjeS10cnVuaworNDI0MTggMjI5N2IyNzBmY2Y2OGQ5NjBmZjIxY2EwNTQ5NmU0MzAwMTcyMjRkOCBsZWdhY3ktdHJ1bmsKKzQyNDE5IDAwZjljNmUxNTBiYTI1ODdjNjhmMzJmMWNlODU2NzcxZDdlZmI4ZmMgbGVnYWN5LXRydW5rCis0MjQyMCA5ZGY2MWI5NmFhNDI2NGJkOTQyNTk5M2FjMmI4ZTc4YTM2MGUxOWE3IGxlZ2FjeS10cnVuaworNDI0MjEgNzZjZTg4MGRjZTQ5ZTExMTNkZTZlMzBmNTI2Njc3MWI5N2NkZjg0YiBsZWdhY3ktdHJ1bmsKKzQyNDIyIDQ0MmMwZmIzYzRlZDExMThkOGIxZDJiNWYwZGRjY2ViYWY1N2UwZGEgbGVnYWN5LXRydW5rCis0MjQyMyA5MmFmZjk3NDE3YzQ2YTFhYWEwNmQ2MzA5MmQxZjNiMzZjNmNjNzAyIGxlZ2FjeS10cnVuaworNDI0MjQgNzFlNmY2YjQxNWE0YzI2MzI5NGQyYzI0MDdkZjg2ZmM0OWE4ZGYzOCBsZWdhY3ktdHJ1bmsKKzQyNDI1IDBjMDk2YmUyNzAwMDNkYWNhYTNlNWM2ODYxN2EwNDI1MWU5M2I2NzUgbGVnYWN5LXRydW5rCis0MjQyNiBlZDA3YzFhNWUyNGM2Mjc2MzlhMmUxMDFlYzc3ODRiODk5NWY0ZDY4IGxlZ2FjeS10cnVuaworNDI0MjcgODYyNDkzY2VhZTRiMzIzNzhkM2EzMGM1MjYwYWUzZjU2ZmRjYzAwNSBsZWdhY3ktdHJ1bmsKKzQyNDI4IDI2Y2FjMzcxZDdiNmVmOWFmYjkxZDZhYTU4MWNiMmU2NzViYjZkZjUgbGVnYWN5LXRydW5rCis0MjQyOSBjMDZlZTBjOTEyMDk1N2E3NzI2MWJhZjk3N2M3OGIzMmE0NThmMzU0IGxlZ2FjeS10cnVuaworNDI0MzAgZmRhYmRmMTQ4MzM2MjA1ZWU1NjJlZDQwYTVhYjlkOTM2YTAxNDlkYyBsZWdhY3ktdHJ1bmsKKzQyNDMxIDMxNjkzOGI0ZjhkMDAyODNjOWJhMWJjMzYyNjUzNmYyZTRmNjBiZDYgbGVnYWN5LXRydW5rCis0MjQzMiAwZDQ4OTEyODQ0MWFmNmI5NzZjODM5Y2U0MThhMjg5ZTVlYmY3MTllIGxlZ2FjeS10cnVuaworNDI0MzMgN2RiM2NiOWU4MzlmYWUzNWFkMjg3MmNjMDY3ODVlM2U3ZDdhYmI0NSBsZWdhY3ktdHJ1bmsKKzQyNDM0IGY3ZjBkMmE1YjIwYjgyNWYyNzBmNmFkYmQwZThlYmIzNjg3NGZjMGIgbGVnYWN5LXRydW5rCis0MjQzNSA5N2M4MWRjMDNkZGRiZTc2M2Y4Y2IwMWUyYWIyODcxZjcwMGM3NjdjIGFzdC1vYmplY3RzCis0MjQzNiAwNTZlNWI0NjA2ZGE0MzMxYTdkN2Y5NmU5YmEyZTliYjM2MmIxYzhiIHJlbGVhc2UyNC1tYWludAorNDI0MzcgMzYzMjVjYWVmZjljNjViMTRiMWM1NDY4ZTYwZDBiOWQ2ZTgwNGRlMSBsZWdhY3ktdHJ1bmsKKzQyNDM4IDIzZTIzZTE1ZTdlN2MxNDAxYmRhMTcyMjY4NTBhMmM5ZjQ2NDQ3OWUgbGVnYWN5LXRydW5rCis0MjQzOSAxMjMyZTg3Y2I4MTYwNzk5NGMzODhkZGFkZWQ2ZmU2MTIwMjRlNGQxIGxlZ2FjeS10cnVuaworNDI0NDAgNWJkMDJkYTAzN2JmYzNjZjYzYjE2MmRmMjk5Y2E2ZGE5MmRjM2Y4OSByZWxlYXNlMjQtbWFpbnQKKzQyNDQxIGM5MTg3OTEyYjU5ZTk5MTdmMzQwZDIxZDdiMzBkMDAyNDM2NTEzNzcgbGVnYWN5LXRydW5rCis0MjQ0MiA2OTNkYTg2Nzg5NDZiNjU2MzE5MzE5N2MyN2EyNWIwYzJlYzMxMTAzIGxlZ2FjeS10cnVuaworNDI0NDMgYWQzYzRiMmMxNzMwMDk0MmNiNWZkYjkwMzhmYWZkY2ViY2M0MjgwYiByZWxlYXNlMjQtbWFpbnQKKzQyNDQ0IGJjZTNmMzU2Y2Q3YjlkMWIyMzhiM2Y2ZTVmMzMzYTU2MDZhYWZhZWYgbGVnYWN5LXRydW5rCis0MjQ0NSBhOWY5ZGI5ZmE5NzRhYzgyNDY4ZTczMzBlZTg0ODk3OTQyYWQwMjU1IGxlZ2FjeS10cnVuaworNDI0NDYgYzU2NTBkYmY5MzZlYzBjMTE2MWMyMjMyZjQxOTFhZTYwNDg1NjQ3MSBsZWdhY3ktdHJ1bmsKKzQyNDQ3IDViMzk2MTQ4MTdhM2U5YzM1MzI2MzU0YzQwMThhOTk2NTJkNWYxMjEgcmVsZWFzZTI0LW1haW50Cis0MjQ0OCBiYzQ3ZjFhNmFjYjk5ZTViYTU2NTcwYTRhZmI2YzM0NTVjMDM2NTJkIGxlZ2FjeS10cnVuaworNDI0NTAgNDY2OGRmNDUwNjcyYzJlZmI5OTMwNWMyYzllNDA0OGZkNGU2ZDAxMiBsZWdhY3ktdHJ1bmsKKzQyNDUxIDE1NzZmOWJlYjUwM2JjNDhlY2RhOWEyMGVjZWMxM2VhOWIwZTczNTAgbGVnYWN5LXRydW5rCis0MjQ1MyA3ODdmZWJhZTMwZGJmM2M2YTNlNDg0YzI5ZWZkYjJiN2E3ZmQwMTQ3IGxlZ2FjeS10cnVuaworNDI0NTQgZDM2ODVmOWI3YjcxYjk3NTdhZTkwN2VjYjlkYWQ3OTY3YWI2YWE5MCBsZWdhY3ktdHJ1bmsKKzQyNDU1IDA5MjMwMzU3ZjkyNzkxMTg3NzhlMTQ0MDZkMmIxZDk5N2FhZjg2MjQgbGVnYWN5LXRydW5rCis0MjQ1NiA5YTgzOTZmNDYwYWZmY2JkYjkyMDk1YzYyNTg3ZmY5N2MzMDY5NjEwIGxlZ2FjeS10cnVuaworNDI0NTcgNmJmNzhkMmI1M2I0MzVmY2VmZmRiNjExZTQ1NTI3NmY5MzgzYmNjZCBsZWdhY3ktdHJ1bmsKKzQyNDU4IGExMjMyNjAyMjYyY2JmYWQxNTVkOTJjN2ViNjMyMmRkNzQxYTkxYmQgbGVnYWN5LXRydW5rCis0MjQ1OSBiOTM4MWE1NjIzZTJiZTc2Y2ExYjZhMGQ2MTI2ZDE5YWQ2ZTY3ODRkIGxlZ2FjeS10cnVuaworNDI0NjAgOGRlNTgyNDZmZWY4ZTBjNGYxOWIwZTQ4ZGQ4NmUwZjI4ZmEwOTdjOCBsZWdhY3ktdHJ1bmsKKzQyNDYxIDk0MTc4NmU2M2FjOGU2YTVjNzVhZjNiNTZkODYwNjIwZGZiMGUzZDcgbGVnYWN5LXRydW5rCis0MjQ2MiAwZWY3Y2Y1MjIyYjA4YWQ3YzE4YzFiNjQ5NmZiOGViNmM2Y2ZmNmViIGxlZ2FjeS10cnVuaworNDI0NjQgOWQyOWRhZWNiOWZhYWU4YWY0YjRhZmUyMjQ4YjgyZWM2ZGI2YjM5ZCBsZWdhY3ktdHJ1bmsKKzQyNDY1IDVjZTMyYTViZDI0MGE3NDkyYzA2N2I4ZWM1NThjOTI5NWUxODZkYjQgcmVsZWFzZTI0LW1haW50Cis0MjQ2NiAyMzg2YzEwNWE4OTQzNjQxMzJjNmE2YjgzYTRlNGIwNjYyMmEyZjVmIGxlZ2FjeS10cnVuaworNDI0NjcgM2UxZDhkM2I0YjZlZDg5MzIyMjBlNTUzNTk2YWM5OWIzZTIxZDAwOSByZWxlYXNlMjQtbWFpbnQKKzQyNDY4IDE4NDU4NzExZWJlZDg2YzViYzI0OGU0MGU2OGUzMzM1N2QyOTJjZGUgbGVnYWN5LXRydW5rCis0MjQ2OSA4YjRjYjIyNWI0OTc1Nzg4ODljMjA2NmIxM2RhYTBjYWRlNDFjYjcwIHJlbGVhc2UyNC1tYWludAorNDI0NzAgNTliNTMyYWIzMzc2OTIzMjBhZWRmNTIxMzIwYmY1ZjE5MmMxN2Y5ZSBsZWdhY3ktdHJ1bmsKKzQyNDcxIDU3MjliNGJjOWI4ZDM5NjlhOWU0MzZlNjRiNDVjYzA5OTliYmM1YWUgbGVnYWN5LXRydW5rCis0MjQ3MiBiNjBjNTBiMTYxMjZiNWRjZTcwNzZlYTgzN2IzYTI0YmY4NjRlMGFmIHJlbGVhc2UyNC1tYWludAorNDI0NzMgMzNhZGM1ZGQyYmYyMTk4Yjc2ZTdiZjQ3MjQwOGNjM2ZmM2JjYjlkMyBsZWdhY3ktdHJ1bmsKKzQyNDc0IDkyMDA0OTEzYjQxMjIwNjNhYjhiZmY1YzZhMjcwYTFiMDRkNmM5NTAgbGVnYWN5LXRydW5rCis0MjQ3NSA4MWZmZGVlYTFkMDY2MDFmY2Y0YjliZjc0NWM4NGIxNmEzZTk5YTJkIGxlZ2FjeS10cnVuaworNDI0NzYgMDJhMGViMWEyYjIxYmI5NDljMTFjNzhmNzJkNjRhMGNjYjhhNGQyNCBsZWdhY3ktdHJ1bmsKKzQyNDc3IDhlMTMyMzYyNDNkZDM0Y2ZlZDM5YTYwNDgyYjJkYmFiMDBjMDYzYWEgbGVnYWN5LXRydW5rCis0MjQ3OCBkYzZkZWMxNTY4Njk4MmQ1OTMyNWJjNDA0OGFmNTY0ODczYjA0MzIxIHJlbGVhc2UyNC1tYWludAorNDI0NzkgYTY0NTBmOTg4YWE0NDU3MmU4ZmMzOGFjODk4NTAxNTAwMGUxMGExMSBsZWdhY3ktdHJ1bmsKKzQyNDgwIDBmMWZjOGVmYjcwYjU4MmFjMTI0ZTE2ZjBjNGU2ZjI5NjQ2NzRiYzcgbGVnYWN5LXRydW5rCis0MjQ4MSA5ODlhYTI4NWVkYjliZGRmNTc0MTdlYjAwNWUyOTQzNjczNmJlYWQzIGxlZ2FjeS10cnVuaworNDI0ODMgMThmMjcyZjUzNjk5MTI4YTViMjA5ZjUwNzM3Y2ViYjJlYWRmYzE0ZSBsZWdhY3ktdHJ1bmsKKzQyNDg0IDI0NzVmZTk1NzgyZDAwNTY1ZWY5NDg5MmNkYWRhNDVhMjg5N2Y2NWEgbGVnYWN5LXRydW5rCis0MjQ4NSA4MmJiZDVkZTAyZjFjODg2OThiN2I0M2RkNTU0Njc2MTFiMjc4ZWNkIGxlZ2FjeS10cnVuaworNDI0ODcgYzZiZDAxYzdhNTY4YzUwNmNlMDkzNTIwMjNiNDIzOTkyYTk1MjUzOSBsZWdhY3ktdHJ1bmsKKzQyNDg4IDIxMGNmZTlkMzA3NzQxMjg2ZjFiZmRmOTEzMWI5MzAxOWQxOGQ5YjYgcmVsZWFzZTI0LW1haW50Cis0MjQ4OSAwZDVmODA3N2JkMjQxOTVhMDhiYzE1NTM4N2E0ZTQ0MzQwYzMxNmUxIGxlZ2FjeS10cnVuaworNDI0OTAgYTFiMzBmY2Q5ZTI4ZWI4NDVmMWNhMzRiNmVkMWFmZmU2ODU5YzRhNSByZWxlYXNlMjQtbWFpbnQKKzQyNDkxIDA1ZWUwNmI3YjU0NzM3MDBkZGFjNTc5ZjhmYjk4MWU3NGIwMmZlYWUgcmVsZWFzZTI0LW1haW50Cis0MjQ5MiBiZDdmMmQ4ZThkZWFiYmUwNDI1ZDNkNDE0YTBmY2FiODM0NWJkZThhIGxlZ2FjeS10cnVuaworNDI0OTMgNzgxNjU0YmU1NWVmMGM4ZGUzYTU5ODNiMTljZmRlMTA4MTI0ZjQ0ZiBsZWdhY3ktdHJ1bmsKKzQyNDk0IGM2ZmJhNDU2MjI3Yjk3M2ZkMjVjNmFhMGRhY2YzOWMzYjEwMDhjNWEgbGVnYWN5LXRydW5rCis0MjQ5NSBlNTczNzdmMGExNjdmMTQ2ZDNjMmVjMjM1MzhhZmRhYWE4MmE4YzdjIGxlZ2FjeS10cnVuaworNDI0OTYgMzhmNGIwOThlYTY5MGM5NWM3ZjYzMDU2NjRkYjAxMjlhZjNhYjU0NCBsZWdhY3ktdHJ1bmsKKzQyNDk3IDlkOTdjODMzOGQ0YzI0YzMwMjFhNWI2MjM1NzNmNDYxNDNkOWVkYjggbGVnYWN5LXRydW5rCis0MjQ5OCBjNThlNzliMmNhMDVlYjk0NDZhMzdjY2QxMzE4ZTYyMWY2MzA1NmQ3IGxlZ2FjeS10cnVuaworNDI0OTkgZThhNDllYjg1MTljMzU2NTliODEyOGQwOGNmMThlYmJlNWNiNGQwYiBsZWdhY3ktdHJ1bmsKKzQyNTAwIDJjMTg3MGFiYjZjZTU2ZGQ1Y2NmMjNhZjk3YTg1NjdmZGYwNDRkNGYgbGVnYWN5LXRydW5rCis0MjUwMSA5YzBmZDU4NjQ3NWMxNzA2NDQyNzA4ZmE4ZWZiNzYxZmJlZmY5MDkyIGxlZ2FjeS10cnVuaworNDI1MDIgOTQ2Y2Y2ZDU4ZmQxMTU5NTc3MzdjN2IwZGVjM2FhZjMzNDg5Mjk4MCBsZWdhY3ktdHJ1bmsKKzQyNTAzIGZlNGFlMGM0MTdjN2IyOTY2NmRhNmE2NTI0ZGMxM2JjZDc3MTVmYjQgbGVnYWN5LXRydW5rCis0MjUwNCBjYWIzNmFhZWUyZTNkNTdhNTI5MTVmODhiOWVlNDVmNzM1ZTBhOGJiIGxlZ2FjeS10cnVuaworNDI1MDUgZjZkNmU1MjIwODIzZTE2YTRmNjBhNTkzMGUxNmEwYzE1YWZjMmNkOCBsZWdhY3ktdHJ1bmsKKzQyNTA2IDFhOTg3OThhNGIxZGE3MjE5YzUzNDg5MTE0MDQ5ZDA0ZTQ0MmYyOTEgbGVnYWN5LXRydW5rCis0MjUwNyAzYTVmNzFkNmJiZWU5NDExMWU3ODU3MDRjMDIwYmVlOTAzMDVlMGIyIGxlZ2FjeS10cnVuaworNDI1MDggNDZlYzk0OGNiZGU4Zjc5NjlmMjc3OGM3NDY4NjZlN2ZmNmQyNTEwZSBsZWdhY3ktdHJ1bmsKKzQyNTA5IDA2NzFmM2M0NjJkNTAwNjhlNGRmMjg5YjQyNzQ4NGU2OTQ3ZTkzNDkgbGVnYWN5LXRydW5rCis0MjUxMCA0ZDc2NTNlNWNiM2JjYWFhYTI5NmUxYTAzNjQwY2QzMmYzNWIxZTU0IHJlbGVhc2UyNC1tYWludAorNDI1MTEgOTUyM2E5NDE1ZTE4MTBlMTJkNjlmMzJkMDg1YTRjOGI0ODI5MDQzZCByZWxlYXNlMjQtbWFpbnQKKzQyNTEyIGRjZjYyMTEzYzJlMzJjMWM1MTNlOWI3NmVlNDAzNGFkNGRhZDYzMDkgbGVnYWN5LXRydW5rCis0MjUxMyA3ZDI5MmNiYzcxM2FiMGZlOTllOTA2MmRiOWUyMTI5ZmUxODY1MTAxIGxlZ2FjeS10cnVuaworNDI1MTQgMzYxYzY1OGE1NWU2ZTMxYTMwYWVhZmRhMjZkZjhlYmNhNDkxMmM5MSByZWxlYXNlMjQtbWFpbnQKKzQyNTE1IGMzNmUzN2ExOGYxYTM5Njk0YjI1MWU5M2I1ZWYwODliNDQ4YzQyYzAgbGVnYWN5LXRydW5rCis0MjUxNiBhOWQ2YjFhZWMwOTYzYjRjY2Q4ZTNjYTljMjRiNmY5NGRiYTQ1NmJlIGxlZ2FjeS10cnVuaworNDI1MTcgNmQzYmEwMDRkNWU1OTcxYjBlNDY4ZDU5YzZmYmM4ZWUxMTRhNzA5MiByZWxlYXNlMjQtbWFpbnQKKzQyNTE4IGI3NjZlZDAzZDQyNTZhNmVmNGY3ZDQ5ZDJjMWM0MDI0YWE3OWJjY2IgbGVnYWN5LXRydW5rCis0MjUxOSBjNmZkZThhM2I5ZGY4YTA1ZWJhNjZiMTJhZGRjMzQ3NDdjMThkMDQxIGxlZ2FjeS10cnVuaworNDI1MjAgNGI0ZWEzOGRhOThlZDMxOTg0NjYzMGI5ZmYxYWYxZjcxOWI4ZTMwNSBsZWdhY3ktdHJ1bmsKKzQyNTIxIGQwMDgwNzUwNTczYjYzY2RjNzc2ZjkzZTBjZDJjNjMyOTYxYjJiYjAgcmVsZWFzZTI0LW1haW50Cis0MjUyMiBkMTEyZGE3OTY0ZDYyOWEyYTI4NTkyYTYyMmM2YjIzOTg1ZGFjMWIxIGxlZ2FjeS10cnVuaworNDI1MjMgZmY5YWZlYjA1YjM0MjY3NGRhNzhiZDI0OTVjMjZmYWFmMzlhNTM5OSByZWxlYXNlMjQtbWFpbnQKKzQyNTI0IGJkZGMxM2Q1N2I4ODJkMmZlZTJiMzBiNTMzM2Q4YTBjNDU4ZmI1NjcgbGVnYWN5LXRydW5rCis0MjUyNSAxZTM5NjhmY2FjNjgxOWVlNDY1MDFjMTE3NjE5Y2ZhYWI0M2JiOTM0IGxlZ2FjeS10cnVuaworNDI1MjYgOGE2ZmFlZDBhZjA0YjVjOTczMTUyOTAxZDJiNGQ5OTllNzQzNjc3MSByZWxlYXNlMjQtbWFpbnQKKzQyNTI3IGQ0ZTE3NjJiOGUxNTM0MGZmY2ExZTk3ZjVkZjcxMmQ0OWUyZjU5NjAgbGVnYWN5LXRydW5rCis0MjUyOCAyODQxM2MwODJjMDg3NjJlMGI1OGE1MTg1NWI2MDM4YTFlOGQwMWM4IHJlbGVhc2UyNC1tYWludAorNDI1MjkgZWIwOTc3OTMyZTJkZTg2NWVmNTJiNzRlN2RlNTdjMGE4YjJjNTM0YiBsZWdhY3ktdHJ1bmsKKzQyNTMxIDQ5ZDljMTIwMzU3YWQxMDE1ZjliMWZiNWUxZWZjYzNlZTc0M2YyNzkgbGVnYWN5LXRydW5rCis0MjUzMiA0ZDk4OGRkYTY0Nzg2NDRiOTFkNjFmM2RhM2M5YWJiMjI1OTk2ZWFiIGxlZ2FjeS10cnVuaworNDI1MzYgMjBjOGZhMWUwNjY4MzhmMDU5YWRkZGQ1OGI5YTlmZTQ2MTFiY2ZhZiBsZWdhY3ktdHJ1bmsKKzQyNTM3IDk4ZjZiNTlhNmUwYTA5ZGE2YjZmNzg2MWM0NGVmOGZiMTAyYjI2NGIgcmVsZWFzZTI0LW1haW50Cis0MjUzOCAxNDVkNWZjOWE2YTUxYTI2NDNmNWRlMTIxYjVhMDgwZTcwYjIwZTFkIGxlZ2FjeS10cnVuaworNDI1MzkgNGU1MGFhN2JiMWI1MmQxYzEzZTAzNTU0NWVhZjJiNmFkYWNmZTUxYyBsZWdhY3ktdHJ1bmsKKzQyNTQwIGQwZWJjYjRmNjAzMTM5YjM0MDM5YTVlMmVkZDNlMTA1MmMwOGFlNjUgbGVnYWN5LXRydW5rCis0MjU0MSA2OWMwYmVjMTEwMGFjODNjNzk4Mzg1YTFiNTE4MmIyMjdhMDM3ODZlIGxlZ2FjeS10cnVuaworNDI1NDMgNWYyY2I0NDVlMWM1NDllZGQ5ZDVjMmU2YjdmMmI2ZDNkMDljMTA0NyBsZWdhY3ktdHJ1bmsKKzQyNTQ0IGUwYzJhYmQ1ODFjNWIwYjU1ZTQyNmNmZjliNDA4ZTQxZWJmMzg0OWIgbGVnYWN5LXRydW5rCis0MjU0NSAzNmFlM2Q5Mjk4MzJkNGZmOGNhZTczYzY5NDZiZjU0YWRkOWNjNThiIGxlZ2FjeS10cnVuaworNDI1NDYgMmM4ZGMzNTgxYjcwZjJkMTFhNDRlYzQ5YTRmMjEzNDI5YzBmYzdkZCBsZWdhY3ktdHJ1bmsKKzQyNTUwIDA5ZDE5MzdmMmRhODk1ZmU4ZGM0MGM1N2RmY2FiNjIzMjE1NTMxZDcgbGVnYWN5LXRydW5rCis0MjU1MSA4MWYxYjBkZGM4YTE2ZjFhYTNlNjJlMGFmY2FjYzBjYmQ2MDVhNDUxIGxlZ2FjeS10cnVuaworNDI1NTIgNWE4MzY5ODYyMDZkZDM5MGRhYTZhMTU0ZTBlODgzN2IwN2EzYjhiYSBsZWdhY3ktdHJ1bmsKKzQyNTUzIDIxNjIyMTYxMzliOTU2OTU0MzJlMTc0ODc5YWZiODk5ODU0NmJhNjQgbGVnYWN5LXRydW5rCis0MjU1OSA5MTFjN2ZhNDk1YjI0MDQ3MDZmOGFhNDVjY2NlMGE5YTE0ZjhhYWEwIHRpbS1vYm1hbGxvYworNDI1NjAgMTQzYzM0OGZmNzE3NjlkNjBiMGRhZjRiZWYyMDc0MTlmZTMzMjVlNSB0aW0tb2JtYWxsb2MKKzQyNTYxIDQxMjc2MTRmNzUyYTFmNDM2Yzk5ZWM3OWFhODRhYzY5NTYyN2NiMGEgbGVnYWN5LXRydW5rCis0MjU2MiA5NTgwMDg3NWJkMTI1OTRiMzA0ODJjOWY4YjMyMDc5YWRjNjlmMTZhIGxlZ2FjeS10cnVuaworNDI1NjMgZTFjM2ZmZTkyNmMxMTU2MmRhY2M0NzY4MDhjMDM0OWNlNDBkYThjZCBsZWdhY3ktdHJ1bmsKKzQyNTY0IDVkODI4NzAzYzZhMTczMmFkZDQ0MjAxZDNmM2U0MmQ4NzA1MmI0ODIgbGVnYWN5LXRydW5rCis0MjU2OCA2MjU2NGRjN2JkNzI2MmQxMDEwODQxYzE1MGViMDY2YmE3MDczYmNmIGxlZ2FjeS10cnVuaworNDI1NjkgOGRiOTg1YjQwODZlMThjZWU3M2Q2YzkxNzQwZTAzNTBiMzlmMmExNyBsZWdhY3ktdHJ1bmsKKzQyNTcwIDJmZGE0ZDE1MGMzZGI0NmY2NDcwMjliYjcxNzUwMWVkNWExOGE1YTMgbGVnYWN5LXRydW5rCis0MjU3MSA2YjQyOTIwYWNjYzkyNjRmN2NhYmZmNWMzODYxNzJjMjI0ZjM0NWU3IGxlZ2FjeS10cnVuaworNDI1NzIgYzY1MDY0NDJkZmUwMTUyMmVkOGJkYzE4NmIzYTkxMzFhZWUwMThmMyByZWxlYXNlMjQtbWFpbnQKKzQyNTczIDkyY2U4YmI4YjEyYTdlYjVmNGE5MzJkNmE0M2JkZjllMmVkOGU0ODYgbGVnYWN5LXRydW5rCis0MjU3NCBjOTk2YTEyMjM0YzI1OWMwZmNhMGYzNTI4OGFjOWE0YTQwNWRjOTQ0IGxlZ2FjeS10cnVuaworNDI1NzUgMzkyNGFmY2Y5NWU3ZmQ5YjUxM2MxYzU3MGNiNzIxNWU1NzJhYzkxMyBhc3Qtb2JqZWN0cworNDI1NzYgYzlmYmIwNjdjMmE2YzkwZTMwYWI5MTdjMWM4NjBmZTIyNTQ4OWVhNSBsZWdhY3ktdHJ1bmsKKzQyNTc4IGJiNDgxMTVlNmRhYjMzNTMwOTZjMmEzNzY0MjEwYmU0ZTllMzRkNjMgbGVnYWN5LXRydW5rCis0MjU3OSAzYzBiMjYxMTNkZjZlZDViMzZhNjA2NDlkMmZkMzEyNjJlODY4MWE3IGxlZ2FjeS10cnVuaworNDI1ODEgNzEwY2JkZDQ3OGE4NTFiMzQwYWNmNGVmMzgxMGU5NzBlY2Q1YzYzMyBsZWdhY3ktdHJ1bmsKKzQyNTgyIDJhYjkyNzBlZjE5YWVhZjdmMGVhOGY0OGM0NTEwNjZiMjZkNTQ0NDQgbGVnYWN5LXRydW5rCis0MjU4MyA1Nzg4ZTBhNjg5ZTI1NzdlOGE1ZTMwNmY0ODhkNmQwOGI2M2JjNzQ2IGxlZ2FjeS10cnVuaworNDI1ODQgN2JmYmZiMmVmNGUyMTQ1YTU5MzQzODNiZGRlODYwMjEwMWQ1MDBhOSBsZWdhY3ktdHJ1bmsKKzQyNTg1IDU4YTg0NTFmZjc5NTg3ZTNlNzhiMjU0NjBiNWQwYmVmZTBkNDcxOTQgbGVnYWN5LXRydW5rCis0MjU4NiA2MTY1OTI3NDMxZDZhNjg1NTA4ZmRlNDA4NmU2NzFlNWNhY2Q4MmQyIGxlZ2FjeS10cnVuaworNDI1ODcgZGI1NzFmOWNhZDZmODdiZjBkOTBkMzE2YmRhMzMyYjIwNzQwZjhiMiBsZWdhY3ktdHJ1bmsKKzQyNTg4IDg0MTBmMDZhZDM2ZTE4ODU5NTg5NDlkMTk3NThkZjQ3NjA4NjdiYmYgbGVnYWN5LXRydW5rCis0MjU4OSA5NTA0ZjdhYzM2NjljMjgxY2UyMTRlMTg3OWRhNmZjMGU1OTU5ZGIzIGxlZ2FjeS10cnVuaworNDI1OTAgMjk2Y2RhOWIzZTJmODA5ZjQ1ODg4OGEzZGU5Nzk0M2FkMzFiOTNhMCBsZWdhY3ktdHJ1bmsKKzQyNTkxIDU4NDYzN2Q4MzFlM2ZjYmVjZGFlZDI0ODNlMmUwZWVmZjBiMjY3OTcgbGVnYWN5LXRydW5rCis0MjU5MiA2YzBiNmMxY2QxZjQ2OWQ1OTQ5NDNhMjU1YzQwMmVlZGE4ZTcwYjU5IGxlZ2FjeS10cnVuaworNDI1OTMgMmRkZWE1NTM1ZjA4NjQ5ZTU2NWNiNzQyMjA4ZDRlNzdiMTJkNTI5YSBsZWdhY3ktdHJ1bmsKKzQyNTk1IDc4MGI3YWZlNjE3ODVhZjdjMTQ3YTliNzE4NWIwMjRmYzU2MWFiMzggbGVnYWN5LXRydW5rCis0MjU5NiBkYmE2NDk0NzM1ZDAyYTU1MzkyZTVjZWExNjkwMjg0NDE3MGQyN2RiIGxlZ2FjeS10cnVuaworNDI1OTcgNjdjNzRlZmFkOGMyM2Y3ZmNhNDdmNDg3NDgyZTAwNGNmZGIwYzAxZiBsZWdhY3ktdHJ1bmsKKzQyNTk4IDUyMzBjNGMyOWViYjI3ODY0M2U3ZWMyMDY3NjI0ZWQ4MmVhODFmZmMgbGVnYWN5LXRydW5rCis0MjU5OSBhYzQ5ODk1M2NlNTc4ZmFhOTAyNzIyM2M3ZTIzMjVlZmI0ZjJjMzRjIGxlZ2FjeS10cnVuaworNDI2MDAgZTEzOTE5MTBiMDI2NTJkODM0ZTExODQ2MDM5NGM2MGU4ZTliNzVhYyBsZWdhY3ktdHJ1bmsKKzQyNjAyIDU0ZWI1YjFmYjM2MzJlYzhiYWMzY2M0ZTE0NDQ2ZjQ5ZTQ5ZmE3NzUgbGVnYWN5LXRydW5rCis0MjYwMyBlOWYwZGI0MjlmMmJiYWUzYmUxNjUwZjdhY2YyMmU4ZmJkYzFiMTRmIGxlZ2FjeS10cnVuaworNDI2MDYgNTJjYmM0NDdlMWM5ZmJlZTdhZjUwMmZkMmNlNzYwZDQ1ZDY0YTEwNCBsZWdhY3ktdHJ1bmsKKzQyNjA3IGRhMmExMDQ5MjE1ZDYzMThiZjNmN2YyMWQyMTQ4ZDQ4MjUzYmM3NzkgbGVnYWN5LXRydW5rCis0MjYwOSAwYmViZWIzOTMwNDU0MzNkMGFmYzQxNTI5MDgwODFlNzJiNmY4YTAxIGxlZ2FjeS10cnVuaworNDI2MTAgYjg3M2VjNjc4NTYwNTEzNmMzYzY0ZTQzOTVkYTllNDgwMzUxMjc2YiByZWxlYXNlMjQtbWFpbnQKKzQyNjExIDg2MTFmMzljZDgyYmZjMmFmM2Q0OGMxOWQxNDNlNjRiZjEyZTQ0NDYgbGVnYWN5LXRydW5rCis0MjYxMyA3ZDBmMTIzNDBjOWU0ZjU4YjYxYzA2OGU5MWM5YTQwZTA0NjllYzg4IHJlbGVhc2UyNC1tYWludAorNDI2MTQgZTBmZWFkYzdhZmZiNzJiZjgxY2Q1YTFhZDE4NTQ1ODE2MjZmOTdjMyByZWxlYXNlMjQtbWFpbnQKKzQyNjE2IDExNDg0YTcyZDk2NmZkODhlYmZmOWE3N2ViNGNlNmFlZWQxMDMyZWYgbGVnYWN5LXRydW5rCis0MjYxNyBhY2FhNzllNzMxMzMzZTUyZDBhMGU1NDJkMDRiYzViNmQxZmIzZjVhIGxlZ2FjeS10cnVuaworNDI2MTggZGQzZTVhOTQ1OTYyYzFlYzlkODExNTYyZGNlNjRlY2Y3NmYwM2E4YyBsZWdhY3ktdHJ1bmsKKzQyNjE5IDMwMTcxMDUzNWQxNTAyNzQ4MWMwY2JjZGQwN2Q4YjFhYTQ3MzNjMzEgbGVnYWN5LXRydW5rCis0MjYyMCAxODBkYmZjZjNiZWQwNjUwNTk4NTYzMjc5NDQzMDcyYzY3MTNlN2I4IGxlZ2FjeS10cnVuaworNDI2MjIgMDE1MWEwMjM3NGE4MmUyNTNhMzVmNTQyMmU4Y2FiODIxMDUyNWRjMiB0aW0tb2JtYWxsb2MKKzQyNjIzIGRmYWIyMmFlNDhlMzY3ZjQwOTM5ZTM1MTAzMjRlMWI2ZDBjMGRlYjggbGVnYWN5LXRydW5rCis0MjYyNCBiNmQyZjZmZDNlMTE2YjliOWZlOTViYzk4MmFjNzYzYzM1OWZmMTAzIGxlZ2FjeS10cnVuaworNDI2MjUgN2I1OGZiZGU1ZTVkZmMxYmRkMzk4MTBjNjc1ZWQ0MGFjNDAxZDNmNSB0aW0tb2JtYWxsb2MKKzQyNjI2IGUwYTc3MDEwZDAzM2JjOTMyMmE3N2NkZDBlZTI1YmE3ZDI3MTU4MjUgbGVnYWN5LXRydW5rCis0MjYyNyA3OGRlNWY2YjJmNjdiM2U4NTM5Mzg4Yjc3Y2FlMGUzMjRlYTc4NDFhIGxlZ2FjeS10cnVuaworNDI2MjggMzA1NjdiZTkwYzg1MTMxMWU5MmFkMTAwYmMxOTBjZGZjNDhlYTliYSBsZWdhY3ktdHJ1bmsKKzQyNjI5IGFhMDQwNDEwZmI5YTJkZjk5ZDBhMzgzYjM4ZGI2ZjdlYjU0NTY4MmQgcmVsZWFzZTI0LW1haW50Cis0MjYzMCAyYTJkNDZkMTkyOWE0MDZhZmU2NWIxM2UzZDdhYzM4YzIzNjBlZDQwIGxlZ2FjeS10cnVuaworNDI2MzEgZTMyNDhmMWZjNTRkYjcxOGE5NDIzODQyNzliZjQ4ZDU2YmU1MjVmOSBsZWdhY3ktdHJ1bmsKKzQyNjMyIDM1ZGJiYzFhYjQ0ODdkZmY4NzY0OTg3ODFmMzg4OWM0MmE5MzQzOTIgbGVnYWN5LXRydW5rCis0MjYzMyBjM2UyODQwOTY4NmNiZTJjM2E2NzkwMGViYjBkYjc4MWRmNWNlZWMzIHRpbS1vYm1hbGxvYworNDI2MzQgNjY0NWRiMDk0OTQzZGQyYjQ0NGZjMWUwMWQ0ODE4NzY3ODNiODNmMiB0aW0tb2JtYWxsb2MKKzQyNjM1IDlmM2U1OGRiZWE2MzFiYzY2NTM1OTQwNzUzYTUyODg5NjhkNjI1MjEgbGVnYWN5LXRydW5rCis0MjYzNiAzZDY4ZjM1MmMyZmYwMWYyMDdkNmE5MWNjZjRjNzBjMGI3MzZjYzlmIGxlZ2FjeS10cnVuaworNDI2MzcgOGZmMjhmY2Y4NzJlMGE5Yjk1YzZjOWFhYjA1YTA3NzQzY2Y2OGExMSBsZWdhY3ktdHJ1bmsKKzQyNjM4IGI2YjFjNDRkOTExMDUyODUzYzdjZGYxZjc0M2U4M2U3YmRkZmY1NDQgbGVnYWN5LXRydW5rCis0MjYzOSBjZDg0N2U3MjY4MzcyZTRlN2ViYmRiMDQxZjAxOWQ2MGNkYTI3OWI5IGxlZ2FjeS10cnVuaworNDI2NDAgODFiZTE1Yjg0MjQ0NTM5ODI2YWVmMWU2YmJiYzM2NzAwNDgxNjdiOCBsZWdhY3ktdHJ1bmsKKzQyNjQxIGJlYTk0NzU0NDQxYjFhNzBiNzEzZmVlZWVjODFlNmM2ZWU5OWU0MjcgbGVnYWN5LXRydW5rCis0MjY0MiAyNTg5OTAyNDI4OThlNmM2MDNlNzM2NGZhNTgxNGM3MjhhODRiZjQ3IHRpbS1vYm1hbGxvYworNDI2NDMgM2MwN2I2YzVjZjc4OGI3YmQwYzhmZWE4YTk5NGE0YzZjOTE1MDgwMyBsZWdhY3ktdHJ1bmsKKzQyNjQ0IGYxNTMwMmQ4YjJkZTU5ZjFhMTQxMjQxZGVhODAzY2IyZGVkYTFkYjcgbGVnYWN5LXRydW5rCis0MjY0OSA1YzM2YzIyMmU3Y2E1MzEwZTVjYzhiOGRiMjgzYmQ2NjlkMWUyNGQ0IGxlZ2FjeS10cnVuaworNDI2NTAgOTdlZTdiNTMzNjY0ODE3ODBiNmYzMzE1NTBkNjY0YWM4NjNmNjY4MiBsZWdhY3ktdHJ1bmsKKzQyNjUzIGMzNDQ1YjFjZjFiZjFlZDA0ZGJkMWMyZGY1YTgxNTFiNDEwMmQxNzkgbGVnYWN5LXRydW5rCis0MjY1NCA0MjkyYjQyNjgzYzVmY2M3NTU0MzM4YmJmZDg0N2JiNTNlOTFhYzUyIGxlZ2FjeS10cnVuaworNDI2NTUgNzFkODczMDU0ZDI5ZWRiZDIyMDMyYzhjOTE1Y2YwZWVjYmI4YjVjMyBsZWdhY3ktdHJ1bmsKKzQyNjU2IGFlMzlmY2UwZjlhMTZlYzBhNTg4ZDcxODk5ZGQ0NmI3N2Q1MTQ2MTAgbGVnYWN5LXRydW5rCis0MjY1NyA0NWU2ZjkwMTkwMmNhNTg1N2VlZTkxYWJhMDQ4ZGY3ZGQ1NjAxODY0IGxlZ2FjeS10cnVuaworNDI2NTggNjZmYzViMjYyODY4YmVlN2QyMzFjNzU5ODQ2YzFmZWQzY2Q1ZWRlYyB0aW0tb2JtYWxsb2MKKzQyNjU5IDk0MmFlMjVjYjM5MTUwNDA5MTAyZDRkNjY2ZTM3MzE0ODk1YTQyZDEgbGVnYWN5LXRydW5rCis0MjY2MCA0MDJkZTBmZWYxMTZkOGU3YzE0YzAyYzU2ZGRlMGNmZWI1Zjc0YjVkIHRpbS1vYm1hbGxvYworNDI2NjEgMTE1OTYwNjQwZjI1ZGU1YjAxZDIyOWIzMjJiNzllNzVmOGIyMGFhNiBsZWdhY3ktdHJ1bmsKKzQyNjYyIGY3YjQ3MjZhZGE2YzUwOWMwMzlmNjc2MmZlMGFhMWFiMzE2YjNiZjIgbGVnYWN5LXRydW5rCis0MjY2MyBjNDBhMzNjYTY1YjkxNjNiOWQ4MmRjOTNlYjliMTcyZjM2YzNiYmVlIGxlZ2FjeS10cnVuaworNDI2NjQgZTU4MGM4YjBkY2VhYjQwZWJmMjlmODU4NjlhNDY1YzQ4ZTBjNmFmZiBsZWdhY3ktdHJ1bmsKKzQyNjY1IDVmMzgyMmMyZTczMTA0YmJlNGY5ZDdjYTA4MWJiMGIzMDM4NTI0M2EgbGVnYWN5LXRydW5rCis0MjY2NiA5OTA2NmJlYTE3ZjhmMDMyZTgwNzhkNWFkNzhjNmFjZWI3NGZjMGQ0IGxlZ2FjeS10cnVuaworNDI2NjcgYmJmMTZmZDAyNGRmN2JjZWJjMGY2ZmU4ODJiN2NjOGNmOTc2MGI1NiBsZWdhY3ktdHJ1bmsKKzQyNjY4IGMwNjYxM2U1M2ZhZGYzNzQ5Yjg5MWU4ZmNmZDRhY2ZjZThlMjljNDYgbGVnYWN5LXRydW5rCis0MjY2OSBmMmE4OTVkMzNhNWNhZTkxM2Y2ZWRjODNhMDUxNWEwYjk3NTgxMjU3IGxlZ2FjeS10cnVuaworNDI2NzEgZDZjYmM3MWI4MDEwOTA5OWQyZDM2NzhiYmE2ZThlOTJhNjMyYjI4YiBsZWdhY3ktdHJ1bmsKKzQyNjcyIDg3NzA2NDM4ZGMzYzQxYmEyN2M3ZGM5NGRkMTM1NjIyMTE3N2YxMGQgbGVnYWN5LXRydW5rCis0MjY3MyBmZDU0OTdiNjQyMDljMjQxMTdhNDdjODZlM2U4Nzk1OGZkZDk4YzljIGxlZ2FjeS10cnVuaworNDI2NzUgOGEyYTVmNzFiOGIzZDdlMjcwMDZhMTIwNDc0MDI0Yzk5ZjM5OWI4ZCBsZWdhY3ktdHJ1bmsKKzQyNjc2IDY1ODNjODY4ODE3YWFhNGM5YjljZTM3YzM1ZGMxM2VmYjdlMTJlZDUgbGVnYWN5LXRydW5rCis0MjY3NyA0YTRlMGM1OGQ0MzdlODdmMGMzMTU5OTk1Y2Q3ZWI1OGUwYTgwM2Q1IGxlZ2FjeS10cnVuaworNDI2NzggNDE3ODE1MDYyMzM3OGExZTkxNTI1Y2FjYzRkOWFhNzc2MjU0Y2NiMCBsZWdhY3ktdHJ1bmsKKzQyNjg1IGJiY2U4ZWMyZmY4MWQwZGNmOTgzNzE2MWYxNjhmYmUyMDQ3NWRlYWQgbGVnYWN5LXRydW5rCis0MjY4NyA4YjY4NTEzODJlMjc1MzU4ZmE4YjI4YzUyZWY3ZmVjNzkyMmJjNDQ2IHRpbS1vYm1hbGxvYworNDI2ODggZmE5MmZlMTUyNTFhMDUxMDg1N2IyMDI5ZTZmZDJiNzVjMTk1OTY2MiBsZWdhY3ktdHJ1bmsKKzQyNjg5IDQzYjlkNWYwOTAxYmU2NjI4NDQ1ZjVhYTUzMDhjNzNjZDlhMDgwY2UgdGltLW9ibWFsbG9jCis0MjY5MCA0M2M3MDQ2MGNjZDU5MGQwYjU5NDhmNDU4ZGJiNGM4MWFkZmMzMWY5IGxlZ2FjeS10cnVuaworNDI2OTEgNzk2ZDE1MGU0NWE5NGJmZjEyMDU4NzQyMDIzMzQ5N2I3YzcwYjdkZSBsZWdhY3ktdHJ1bmsKKzQyNjkyIGEzZTRiZDQ3NWFkN2Y3NDg1ODQwZTEzYTQ4MzJmYjRkZDIyOWExMjAgbGVnYWN5LXRydW5rCis0MjY5MyBjMDk4MmI4MTU1YzYyZDNmZjQ1YTgyMWZkNmFkMzE1YjU3MjNiZTBmIGxlZ2FjeS10cnVuaworNDI2OTQgNjU4ZjhmZjJhNDQyZDAxODE1NmU1NTgxYWNiMTk3NzhjNmYwZTQ2MyBsZWdhY3ktdHJ1bmsKKzQyNjk1IDMxMDUxYTcwYjI5NzJkOGYyY2U0MGU0ODljZWRlYTk0OTQ2NDAwZGIgdGltLW9ibWFsbG9jCis0MjY5NiBkYmY5Y2M2YzM2ZWJkNzFjYmJkOTIzMzdmYzIzYmViNjliODgzMTcwIGxlZ2FjeS10cnVuaworNDI2OTggYTIxMzhkZmI1OTY1MjY0OTQ1NTI2ZTAxMmM3ZjVlMjgxZWMyOTdmNyBsZWdhY3ktdHJ1bmsKKzQyNjk5IDNmZmMxZTFkMmY1NzZmNjRmNmQ3MTgxYTYzMzY1MzI2ZTBhY2VmZjAgbGVnYWN5LXRydW5rCis0MjcwMiA5MjI1MzlkYmRjNGU1ZDljODZjNTBmNTM4YmYwMzNmYjdkNzYzMWQxIHRpbS1vYm1hbGxvYworNDI3MDMgZTgyMWI5MzZmM2ZhNzU2YTE3NjhjZTYzZmE0NWFjYmUwYjg5Yzg2MCB0aW0tb2JtYWxsb2MKKzQyNzA0IDhkZjU1MDE0YzhmYjBjZDI3MTRhMzNkYTNiNDFiMDgzM2FlZWJiYTkgdGltLW9ibWFsbG9jCis0MjcwNSBlZjUyNDZjZThmZTY1NjAwZjBkZmE1YWE5YWY0YWVhZmY0NjE4YmUyIGxlZ2FjeS10cnVuaworNDI3MDYgZGJhNzcwOTJkNDZlYmFmMmJiOGYyNDJiYzJhZDAzZDg3N2I0ZjU3OSBsZWdhY3ktdHJ1bmsKKzQyNzA3IDBmNzI4NGM0OTFhMzE3YmQ3ZmY2NDllNzZjZWFiZjgxMTUwYTc2MmIgdGltLW9ibWFsbG9jCis0MjcwOCBjMjk0MmNkZDg4YjMyNTA3ZjU1YTM5NDQ0YmI4ZDgwMTk4ZjI2MDY2IGxlZ2FjeS10cnVuaworNDI3MDkgMGI1ZTlhY2UyZTg3YjM4NjgyNTBmM2RkMzUxNDM4NWM5YTJlM2QyMiBsZWdhY3ktdHJ1bmsKKzQyNzEwIDkyYmE3MjQ4NGZmMzg0NTI0OGVlOTk3YjE2OWZkM2E2ZTA2NTA1N2UgbGVnYWN5LXRydW5rCis0MjcxMSA4ZTA0ZGUyNDgwZTQ5ZWE4NDY3NmMxOGFiM2ZkNjVmN2FjNjRkOWEyIGxlZ2FjeS10cnVuaworNDI3MTIgN2I2NmIyZGNjNWU5NmE2NGExOGRmMjFkMTNiYTlmMmFmMTFiNDhkNSBsZWdhY3ktdHJ1bmsKKzQyNzEzIDFlODNmMTgyYjVmOWFmODExZDQ3NDhlZDkxYWVhZmQzNmI0NTEzMTQgbGVnYWN5LXRydW5rCis0MjcxNSAyZjE5Yjk4MWFjMjQ3YzMyM2QwNDA0MTllYjYxN2NmMzJlYTdhNWUwIGxlZ2FjeS10cnVuaworNDI3MTYgMzJlMmI4YmRhNTM1YjhhNjg3MTVkMTcyNTQzN2YzOWEzNjJmZWJlMCBsZWdhY3ktdHJ1bmsKKzQyNzE3IGQwY2E2MzAyZGQzYzk4Y2NmMDcxZDgzYzYxYmJiN2M3ZDgzNGRjZTMgbGVnYWN5LXRydW5rCis0MjcxOSBjNDEzOGFkMWUwOWEwZTM5Yzc4MjMwNGVkMmRjOWU4MGJkNmUxZmEyIGxlZ2FjeS10cnVuaworNDI3MjAgM2UxOTI3MWVmYzQ2ZTY5MjYzOGNiZDM2MWQ3ZTEwZWE1MmExNDY1MSBsZWdhY3ktdHJ1bmsKKzQyNzIxIDgzYjg2MGFjZmU5NWU2ZjAxN2NjZDYyMDI5M2Y3NTQzODAzZTQ2OWEgbGVnYWN5LXRydW5rCis0MjcyMiBhMzY2ZGZjNzAzNWZkMTkyMGMxYWEwM2IyN2YzNTQ3YWYxOWU0OGRhIGxlZ2FjeS10cnVuaworNDI3MjMgM2RkOTJkOTdhNjdmZjgyMWRmMmUzNzgxOWIzY2Q4NmU5MjhiYWE3NCBsZWdhY3ktdHJ1bmsKKzQyNzI0IDIyYzUxNjMyYjQ1OWQ3NzAyZTRhYzg1NjE1YWZhMmZiMDY2MmI3MjAgbGVnYWN5LXRydW5rCis0MjcyNSA1ZTQ2M2FlNzA3MDc2ZGQyODcwOGQ3NjdkM2VmMmIyYzM0YjQ0ODZkIGxlZ2FjeS10cnVuaworNDI3MjcgOTVhOTJiMmI1M2VlNDlhYzYzNzg2ZWVhNzMxYmQyYzhhNTkyOTgzYSBsZWdhY3ktdHJ1bmsKKzQyNzI4IDA2NzQ3OTZiNjk2Y2M1YTIwNjBjYmEyMzM5NmJmM2QzOTcyM2E2MTEgbGVnYWN5LXRydW5rCis0MjcyOSAxZGFhMTk5Yjc4NGJlNGE2M2Y1MGM4MDVmNmFiNDNhOWM2Nzk2ZWRmIGxlZ2FjeS10cnVuaworNDI3MzAgZTM2NGJjNzZiZGM4ZDQ2M2Y2NGZiNzIzYjZjMDM1MDAxNGRjNzg3NSBsZWdhY3ktdHJ1bmsKKzQyNzMxIGQ2YzMwY2UzODY4YjEzZDdjOWRkZDMzN2U5NjU5ZmZhZTdiMmQwMzEgbGVnYWN5LXRydW5rCis0MjczMiBhYjFiNTNkNTQ5MDFhOGRhNzE2N2ZlYTI0Y2Y5MDk3OGNjNmU0NjViIGxlZ2FjeS10cnVuaworNDI3MzQgNjIzNzYzNDU3YTRlOGY3NTcwMTYzNDhiMWI0NjU1NTM4ZTk2NTI0MiBsZWdhY3ktdHJ1bmsKKzQyNzM1IDRjYzk1ZmNlNjVkYTc2Mzk2NzlmZTVhYmE5YTcyMzkyMjQyYWVlNjUgdGltLW9ibWFsbG9jCis0MjczNyBmOGZmYTdjYmY5NjA1ZGU1OGNjNGNmNzg3ZTc3YTVkZjUyYTQ5OGU5IGxlZ2FjeS10cnVuaworNDI3MzggYWY5ZjliNTkzYTUzNmQ3MjhkMmM0NzhkZTY2ZjA1ODZjZDUwMTQ0OCBsZWdhY3ktdHJ1bmsKKzQyNzM5IDY0ZmYzYjIyNWQ0ODUxNjE1NGQ0NTFjZmVlOGM0ZjA0ZDczZDIwZWEgbGVnYWN5LXRydW5rCis0Mjc0MCAzNTYxMmExMzFhYzYyNDgxNDk5ODI1ZGRhYzIxMDFiOWQyYWY4M2E0IGxlZ2FjeS10cnVuaworNDI3NDEgYTU0OTQ4MTgwYTNkZTIyOWU1ZTFjZjgzNWFjMDNjNWJjYmQ2YmUwZiByZWxlYXNlMjQtbWFpbnQKKzQyNzQyIDFhZWEzYWVjYTUzNWE2MzBjYWQ2MzRkODQ1YjI0NmJlY2M1YmRmNWUgbGVnYWN5LXRydW5rCis0Mjc0MyAxMjExYTY4YjI4ZGQzNzE3NzlkYzQyYTU4MzI2YzQ3YWYyZTRkM2QwIGxlZ2FjeS10cnVuaworNDI3NDQgY2Q3ZDI5MTkxNzhjNzU3NjM3NzdlMDk1M2JlMTE5ZGU1M2M3NGVhNyBsZWdhY3ktdHJ1bmsKKzQyNzQ1IGE3YjM2MzJkMGUwNTE1MjViZjU4NzFmZjZmNjg0MWJkMjIxODZmMGQgbGVnYWN5LXRydW5rCis0Mjc0NiBhMDBhOWVlZjYwNjNhY2U5OTdmZDNlMzc4Y2Y1YzU5ZjllYTA2ZGU1IHRpbS1vYm1hbGxvYworNDI3NDcgMzc2NzkyYmZiNTdlZjliODM0MGY0YmE0N2Y5ZjMyNWUyZjVhMmQxMiBsZWdhY3ktdHJ1bmsKKzQyNzQ4IDI1ZjhlNmRkZTRhM2IwOTZiMDVhYjMwNzM2YTFkYzYzNDYxNTZhYmIgbGVnYWN5LXRydW5rCis0Mjc0OSAyYjY1OTI2OGE3M2FhM2U2ODQ1MTY4OWVmNDIwZDdlOTZhZWQyZTFkIGxlZ2FjeS10cnVuaworNDI3NTAgOTY1YmI0YTU0MDk2NjMyYmYxNDQxZGFkYzgxMzY5NjAwODc1NGI2NyBsZWdhY3ktdHJ1bmsKKzQyNzUxIGQ4NTNiYzA2ODQ3ZTY2ZGE0YTVkYTdkMmY2MDRmZmE1ZDYxMWVkOWMgbGVnYWN5LXRydW5rCis0Mjc1MiA2ZTI4NWM2OWVmYzA1YjdmOGJkYmIwOTkwYWVhN2IwYzkzYmY4ZDU2IGxlZ2FjeS10cnVuaworNDI3NTMgNTczMjJjYjJjYTExMTdiN2YwZDJiNGMwZGQ1NDYwMWUwYmJkMmZhYSBsZWdhY3ktdHJ1bmsKKzQyNzU0IDBjYzU4ZGJkODdmZWJlMTgyMGFiMzY0OWQ1MzYyMWJkYmYzOTY1NTQgbGVnYWN5LXRydW5rCis0Mjc1NSBjM2M1ZDA2ZmFhMDFlY2QxZjY3YmVhNTE1YTNmMmI2OGFiNDVkNjVmIHRpbS1vYm1hbGxvYworNDI3NTYgZjY2NmJjOWY2MTdkODcwMmM0NTgyMjhmYzY0MmFmZjgyMTNiMWU2MiBsZWdhY3ktdHJ1bmsKKzQyNzU3IDA5ZDE3NDMwZjRjMjVhYzQ5NDJhZGY2YjE2MzcxYWE3MjVmMGEwYjEgdGltLW9ibWFsbG9jCis0Mjc1OCAwZTJjZDk0YzUzYTk4YTA4NDNmZWY3YmZiMjFiZDExOTVmZDQ3MjZjIGxlZ2FjeS10cnVuaworNDI3NTkgNDhhMjhiMzVkZDY0NTU2NWVhMmMyNGEzNGE0Y2QzNTBlYzIzYTRiNCBsZWdhY3ktdHJ1bmsKKzQyNzYwIDAyZDliNDc2OWE4OGU4NmVkZWMyYTgzMTA3YmQ3Zjc4YTM5YTI1MTQgdGltLW9ibWFsbG9jCis0Mjc2MSA2MDRhMTI2ZjgzYzIxNGY0MDk1ZDE5NThkNjBmYTJhMTY2MjlkNzkyIGxlZ2FjeS10cnVuaworNDI3NjMgNjg4Nzk1ODczZmYxY2VhMTQwOGY0ZjJiZjhhZDI0MzI5ODY2NWE0YSBsZWdhY3ktdHJ1bmsKKzQyNzY1IDFlOGNiNDdiZWFhYTQ4ZGY4NTZmN2RmYmM2NzNmMzQ4NDZiNWM4MzIgbGVnYWN5LXRydW5rCis0Mjc2NiBkZjg0M2IwN2Y1ZmUwYThjMzI0ZTQxMDUyNmJkNjIzY2M4ZTE4NDAzIGxlZ2FjeS10cnVuaworNDI3NjkgODlkNjlkOTIxMmEyZGNiOTBmYzg0ZjJhMDBlNWNkN2EwYzZmODI4OSBsZWdhY3ktdHJ1bmsKKzQyNzcwIDA0NzQ3MWNiOWU0ZDk3YjU3Mzg3M2M3MGE0ODBhYzBkODc5ZTgzYmIgbGVnYWN5LXRydW5rCis0Mjc3MSA3Mjg1YzM3ZDc2MzNlNGRlM2RiNTdiNGQ5ZjhkNTIxMzRjMmIzNTQzIGxlZ2FjeS10cnVuaworNDI3NzIgOGRkY2FhYTA4ZmRkZWQzZjFmODFlMmU1Y2I1NmQ0Y2VjZmQ3N2NlMyBsZWdhY3ktdHJ1bmsKKzQyNzczIDQyNDg3ZDhjZjMzODAwOGY4MTQ3MzFlYzNkZDNiY2FiMzcyYjExYjkgbGVnYWN5LXRydW5rCis0Mjc3NCAwNGQxOGJjZjc1MTlmODJkYWFlNTlkOGVkMmJmOTJkODM2N2U4NjUwIGxlZ2FjeS10cnVuaworNDI3NzUgNTE1ZWY3ZGQxNmJkOTdkNjcyNWU2N2MyNDY0ZmVjNTA0YWM1MzUyMyBsZWdhY3ktdHJ1bmsKKzQyNzc2IDg4ZGZkMzI4MWY3MWQ3Y2FkNTE2ODA3OTZjZGJjODA4NGU1NjNmZmYgdGltLW9ibWFsbG9jCis0Mjc3NyBiZDA2NDFkNjI0NjI1MzdlZDQ5ZWYzZTg3ODgzODg3NTQxMWRmMDk2IGxlZ2FjeS10cnVuaworNDI3NzggOGVhZjk1MzFhMmRlZDI5NmQwMWI2NDU4N2RiNTllY2E3OTA3Y2FmOSBsZWdhY3ktdHJ1bmsKKzQyNzc5IDY1ODJhNDQ5MGQxYWFiMTVjNWFjNGU3NjczMGJkMGIzNzAwZDNlZWEgdGltLW9ibWFsbG9jCis0Mjc4MCBjNTUyZjIyNzU3ODJjZjYyYjhhYjRjYzgxODdmMTdiYjU0YzYzODY0IGxlZ2FjeS10cnVuaworNDI3ODIgZTAxZjE3YzI3ZWYzMGM5ZjRjODM3MzM2MjYzMTU3MDViMTQ0YzAzOCB0aW0tb2JtYWxsb2MKKzQyNzg0IGEwMGJkM2NkYjcyODdhYWZiMzZjNGJiNDg1ZWMwYzhhZmZlNmQyNDAgbGVnYWN5LXRydW5rCis0Mjc4NSBkNWU1YTVkOWZlN2MwMjU0N2YxOThkOWYzOTNkMjM4MWZmZThjYzZlIHRpbS1vYm1hbGxvYworNDI3ODcgNzA5OWY2ZTY4MTgzZWNhNjQ5ZjgxMDBjMzlhZjFjMmYwM2MzZDUzMiBsZWdhY3ktdHJ1bmsKKzQyNzk0IGRlNDgxNmQzNDRlZWE0ODU4ZTZmNGM3MjJkM2EzZWI0YWEwMTRjODAgbGVnYWN5LXRydW5rCis0Mjc5NyBiMWEzYzIyMzhmOTdlMWE2NTUyZjk1ZDA0OGU1MzQ2NzJmZjk5YmFkIGxlZ2FjeS10cnVuaworNDI3OTggMmMyZGZmZTA3MGRmMjgzNjEyODQwOGNmYjIyYjU3NGM4NWM5NjkwOSBsZWdhY3ktdHJ1bmsKKzQyNzk5IGVmODc3OWQ0NTVlYzVjYzk2NGU5YWI3YTVkYzVjNzY2N2NiOWMzZTkgbGVnYWN5LXRydW5rCis0MjgwMCBhYmE3M2I0NjgwM2M3NzkwYjFiYzk1YjI0OTYxNDkyMDliNTIyZjE4IGxlZ2FjeS10cnVuaworNDI4MDEgMWQwNTVlYmQ4MzIyOWZhNzcwYmJkNmQ2MWExM2Q5ODUwYTYxNGI0MiBsZWdhY3ktdHJ1bmsKKzQyODAyIDU0NzU0ZjBkMjVjNzJmN2E1ZjFhOWVmOTVhNWI0NmNkZDEzMmQ3ZmYgbGVnYWN5LXRydW5rCis0MjgwNSA3YTMwZGMyYWYzMjkzODU4MTA1ZDQ1MTY5Njg1NzYwOTIzMDRiMmVhIGxlZ2FjeS10cnVuaworNDI4MDYgNmI3Y2EzYjIwMWYzZWZkZmFjZDg3ZWM3ZWVlNzRjYzJhMzczZWI0MCBsZWdhY3ktdHJ1bmsKKzQyODA3IDRmMmFmNTZkOGViZTRkMDI3ZTEzMzNkYTk5ZTAzYTFlNjUzMmNmMGQgbGVnYWN5LXRydW5rCis0MjgwOCBiYzA3OTdiMDZhOTllYmM2ZWE2NzViNTE3MDgzMmJkZWI3YzU4NmUwIGxlZ2FjeS10cnVuaworNDI4MTAgZDM4YWI1Y2FkOTQ1YjM1NGMzMWYxMDExNDAzNGI2NWYwYTA4MDIwOCBsZWdhY3ktdHJ1bmsKKzQyODExIGJiNWUzMDQ2N2ZlNGQxNzYyZTUwODE4Mzk1NWVkOGE3MzQxNTJhODIgbGVnYWN5LXRydW5rCis0MjgxMiBjMWM0NjIxMGI0YjdlNDBlY2M1ZjUzNzM3NjUxNDI2OWMyODFkYmY4IGxlZ2FjeS10cnVuaworNDI4MTMgMTJiY2QxNmMzMWFkZTZmZDQ1M2NhOTQ0MDZjYjNmYmE2ZjRjMTBiZCBsZWdhY3ktdHJ1bmsKKzQyODE0IGQwMmI0Y2ZlZmEwYTBiZTYwY2RlZmIwNzIwMzY0YThhMDg1M2FiODAgbGVnYWN5LXRydW5rCis0MjgxNSA3YTZiMTc0ZGRlZjJmMThlMzBkN2VmYzc5NDU0NWMzMWQ4ZmE5YjA4IGxlZ2FjeS10cnVuaworNDI4MTYgMDdmMzMwYWQxYjQ3NWUyYWI3NTZiYzczMjAwZjJhYjI0MGRmOTQ5NSBsZWdhY3ktdHJ1bmsKKzQyODE4IDliOWQ4MzkxYjY3MWNjNWYwZTU2NTBiMjkzYWU0YjgwMDI5NDg4ZDggbGVnYWN5LXRydW5rCis0MjgyMCBkYjYxMzFjNWFlNWFiZjIwOGZkZTFiMzg0ZjllYTcwYzVjMDFlMGFlIGxlZ2FjeS10cnVuaworNDI4MjEgYjI0MTZmYWIxM2ZlNmQzZmQzZDU3ZTNhMzRhMWJhZTJhMjAzMzljNSByZWxlYXNlMjQtbWFpbnQKKzQyODI1IDFmNTg0MTY0ZTAxMzE3NjFhNWFjMmMxYWVmMTUxZDdmMzIxZjVkYzggbGVnYWN5LXRydW5rCis0MjgyNiA2NTNkODU4NWYwODBhMDE3OTYxNzliZjU0Zjg2MDgyMTI1Y2E4NzFlIGxlZ2FjeS10cnVuaworNDI4MzAgNzQ3MDFlNGZjZGFkMGY5NDg1OTIwNWExMTExNDNiNzJlZjFmZjY1OSBsZWdhY3ktdHJ1bmsKKzQyODMxIGJhYzZiZDM0M2ExMjQ3YjgwNzViMjFjMjdkZjc1NWM2ZjZjMzFmZjEgbGVnYWN5LXRydW5rCis0MjgzMyAzYzUxOWE2MTJiZGI3ZWNhMjQzMjEzNzE5Njg0MmQ3N2U3MmYzZTlmIGxlZ2FjeS10cnVuaworNDI4MzQgOWU4MTc4OGIwZDRiNTkxMmQzMmY5YTA1OTY3NzM3MjQ0ZmY1MjA5NiBsZWdhY3ktdHJ1bmsKKzQyODM1IDBiNzgwOTY2MDQ1NmY3OTIyZDA2MzA2NzE1YjY3NWQ1OTE1ZGU5NjkgbGVnYWN5LXRydW5rCis0MjgzNiA5MTA5YjFhMGQyNjVlMWFlZmM2ZmIyODNkNjdlZjgyOGRjYTk4ZTAzIGxlZ2FjeS10cnVuaworNDI4MzcgMDFiYzhlZTNkMmZmODQ2YzRmN2EzM2E2MTllMGIyODZiNWIyNWQxYSBsZWdhY3ktdHJ1bmsKKzQyODM4IDNhM2FlZDQ5YjI0NTZlOTE3ZDhiNjYyMDYzOGQ2MjUxNzlmOGJlM2UgbGVnYWN5LXRydW5rCis0MjgzOSBkZWRjMmM5NGQxMTI2MjQ0MTg1NjJjZWQwM2MwNGM5YmM1MWI2ZjdkIGxlZ2FjeS10cnVuaworNDI4NDAgN2MxYWNhOGUzZDdkN2E1YWI5MjU1YmYzMWU0OTU0YjVlNWQ1MmQ3YSBsZWdhY3ktdHJ1bmsKKzQyODQyIGIxOTI5ZThkMTVmOTk5OTQ0YTUyYTdjYWY2Nzk0MWU3YjQ1ZWMxN2MgbGVnYWN5LXRydW5rCis0Mjg0MyBkM2QwZGQ5MmM3MzFhYjdlMGFjNDdiZjJhZDQxYTdlNTI0ZWRjOTYyIGxlZ2FjeS10cnVuaworNDI4NDQgYTk2OWJkMTU3ODhmNTE0MDUxNzdmOTQzMmJhZjYxMzViY2Q3MmMzNSBsZWdhY3ktdHJ1bmsKKzQyODQ1IDE4NDhkNzViYmRiMzhiZDVjNDRiZDI3NjAwMGU5ZWMxZTQ5MTEyZWIgbGVnYWN5LXRydW5rCis0Mjg0NiA0Mjg0YjMzMjRjZTJlNGI2NDFkMGEyNzhjNDczNDZkOWIwY2Y5Yzk5IGxlZ2FjeS10cnVuaworNDI4NDcgMzkxZjc0YzljMjYzNjgwOTcwMzZmYzRkZDQwOTA0NWMzMzJjYWFhNyBsZWdhY3ktdHJ1bmsKKzQyODQ4IGFkYmFhOWViYTk3NTQzZDdhMTFkM2U5NTY1N2UzYzFkZWIwODkzNGEgbGVnYWN5LXRydW5rCis0Mjg0OSA0Y2NlZjQ3ODgxZjc5ZDkzOGY5MTI1OTg4MTg5MjhhMDQ5M2VkMTBmIGxlZ2FjeS10cnVuaworNDI4NTAgMmQxZGYyNGUzM2RmNzEwZTRkMzY3Yzg4MmYxYzY3YjA3YTZlMWQwOSBsZWdhY3ktdHJ1bmsKKzQyODUxIDNiNjc1YWM5YTkyNTRlMTIwNWQwMjUwNDY3NzM3MjA1OThiYzQ4OTggbGVnYWN5LXRydW5rCis0Mjg1MiA4Y2QxNTI3NDYzOTg3OTdkODZkMGU3NmFhMDY2MDcyODM3MjlkYWE2IGxlZ2FjeS10cnVuaworNDI4NTkgNmFhYWRiYWIzNTMwMTU1ZWMxOWQ4MWNkYTNiZGFiYjMwNjFmYzZmMSByZWxlYXNlMjQtbWFpbnQKKzQyODY4IGY4MGNhNzEzYmI0YmVhMzUzOTM5MGMyMTEzNzU2N2FlYmVkMDE5YzUgbGVnYWN5LXRydW5rCis0Mjg3MCA5YjEzZGE2NDdhNWViYjU1MmJiODdmMDhhNTllMDNjNmNkOTM2MThhIGxlZ2FjeS10cnVuaworNDI4NzEgOGUwZjBmYjE0ZDM1OGI3YmZjMjVhY2JhZmZmZjNjM2U0YTU2NTExZiBsZWdhY3ktdHJ1bmsKKzQyODcyIDIwNGMzMDdiMDFjZTU3ZWMzN2ZlYjFiZmYzZGRjNjMyZWU2YWZkM2YgbGVnYWN5LXRydW5rCis0Mjg3MyBmZTA3MzZjY2JhNzU1MTgwNzIzNDYzNzNiOWYzMmM1ODcxOTg5ZTRlIHJlbGVhc2UyNC1tYWludAorNDI4NzQgY2Q3MmViNTVkNWY4ZDhjY2E3MWI5MGI0NTI0YzRhNjUwNTk2ODNlYiBsZWdhY3ktdHJ1bmsKKzQyODc1IDdmYWM1ZDc5ZDA0M2JmYWU5NzExMWYwNTc0YmM5YTcwYjBkYjRjMmIgbGVnYWN5LXRydW5rCis0Mjg3NiA0ZjYyOGVjYzMwY2IyZWI0ZTIzZTk0NWVjMDI1YzI3Yzk3MDAxZDZiIGxlZ2FjeS10cnVuaworNDI4NzcgOGViZjc5OTdjNmNkNTZlODNjODNkNmYzMGU0ODVhNzBlNTNjYzU0NiBsZWdhY3ktdHJ1bmsKKzQyODc4IDg5NTA3NGU1ZWQzYWI4MGE0NjNiMTBlNmJhOThjZDA2NThmYWYxYTIgbGVnYWN5LXRydW5rCis0Mjg3OSAxZTA0M2ExMjViZTY4M2Y1YjQxMDQ3ODgzNTQ3MWM3YmU4N2U2M2MzIGxlZ2FjeS10cnVuaworNDI4ODAgMmQyNGYzYTM3YTFiMzVmNTM0M2UwYTAxMTE2ODVkMTNiZWNhNjM2ZiBsZWdhY3ktdHJ1bmsKKzQyODgxIDFlMTkxMzkyZWM1YzYxODJlYzY2Y2NlMTYzOTM2MjhjODUwMGE1NzMgbGVnYWN5LXRydW5rCis0Mjg4MiAxNWQzMzI5NTYxNWY2ZjBhNDRhOWZmODc4MDczMTNmMGE3OTE5MGMwIHJlbGVhc2UyNC1tYWludAorNDI4ODMgOWViMjRmOTJhNzg0YmYwY2VhNjZjYzJiY2M2NmMxZWRlZjJhNGYwZSBsZWdhY3ktdHJ1bmsKKzQyODg0IGE3MzVkZjU1MmYwMmQ5ZmExOTk2MzJiMjQ0MDQ4NmUwOWViNTZiOTQgbGVnYWN5LXRydW5rCis0Mjg4NSBlNjI3NjdlNjRkZTgxOTZjNTIxMmY4NGJmYzE5ZjlmMTI4YTJjMjU0IGxlZ2FjeS10cnVuaworNDI4ODYgYzkxMjE1NjQyZGNkNDVkZTAwZTI3Y2Q3M2YxZTUzYjk0ODNmODJhYyByZWxlYXNlMjQtbWFpbnQKKzQyODg3IDQ1NTY3MmE4Zjg3NzYxYzcwZWI2NGIwM2Y4OGQwOGY4YzA4ZDgxMTQgbGVnYWN5LXRydW5rCis0Mjg4OCAyNTdhZDg5ZDkyZGY4NDUyMjM2YjhmZWQ2N2ViODBhZTQyNTZiMGZhIGxlZ2FjeS10cnVuaworNDI4ODkgYjE2ZTUwNDQxM2MzYjgzNDZjNThhMTVmYjhmMTVhMzE4Yzg0MGE0ZiByZWxlYXNlMjQtbWFpbnQKKzQyODkwIDc4YzlhY2JiNDYzYzMzYWYzYWQ1NmI5Njg0MTAwNjQxNTE1OWIxN2EgbGVnYWN5LXRydW5rCis0Mjg5MSA5YmI1OTBhMGI3ZmIwNGE2NTYwYzczZTM3ZWUyYzhiMzFiNmNhZGQ5IGxlZ2FjeS10cnVuaworNDI4OTIgNjhhMDk0M2RiYmU1MzNkYjI4Y2IyNmI3Y2ZkMTcxNWFkZmI3OGM0MSByZWxlYXNlMjQtbWFpbnQKKzQyODkzIGNhNGJiY2JiZDBkNTk1MGYxMDExYmM5MWQ2NjBkZDYxNmQwMjE4ZWIgbGVnYWN5LXRydW5rCis0Mjg5NCBlOWE3YTI3ODRlMTdlZmJiYTIzMDhlMWFjYWQ2NjdmY2JiZWZkMjgzIGxlZ2FjeS10cnVuaworNDI4OTUgYWNjZmIxNTZmOWNjNjQxZWFmNGMyM2EzOWVlNzRhMTJjZDkyNWUyMyByZWxlYXNlMjQtbWFpbnQKKzQyODk2IDhkNDFkZGMzMWU2MWU2M2IyMmUxMjdmMmE1YmVkZGQ4ODE2NDZmYjEgbGVnYWN5LXRydW5rCis0Mjg5NyBiMjJjNDhmZTYyYTRiMjg2NDM4ZGE3NDRhMmEzNTUyODIyZmViZTI2IHJlbGVhc2UyNC1tYWludAorNDI4OTggNDcwNmI3YTEyNTZjMjljNzQ5N2U5NGI4NmI3Yjc0OTUzNzE5M2MyZSBsZWdhY3ktdHJ1bmsKKzQyODk5IDZhOWM3MTY1YjE3YmRiN2I4NTEzNmUxZWUxMzE1OGRhYzI4MDY0N2YgbGVnYWN5LXRydW5rCis0MjkwMCBiMTdkYTVlMGE2OTdhMGZmZDE5MWQ1ZjgwZTgxNmU2NDkxODZhNDkzIGxlZ2FjeS10cnVuaworNDI5MDIgY2RlNzU3MzM1NDkyOWZiYjk2NWU1MGJmMzYyMTc0ZTExMDA0NjhiMyBsZWdhY3ktdHJ1bmsKKzQyOTAzIGRiNTZmNTcwYjBjYTEyMDVmM2U0NGJlZjBjZGMxY2FjMzMwNmU4YTIgbGVnYWN5LXRydW5rCis0MjkwNCBkMzQyYjBkYzQ5MzQxNGZiMjM0YzU5OTIyMzgyOTEyNGU5YmYzNzMxIGxlZ2FjeS10cnVuaworNDI5MDUgMTNiOThkMGE3YmFhOGI2ZWZiZTJkM2YxYmRlMzAxNDFhZmE4NDI5NCBsZWdhY3ktdHJ1bmsKKzQyOTA2IDdjZjVkOWJhNWY5N2VhYTNhNDg2N2EwM2I5Y2JmMjk0MGI3ZTlkZmEgbGVnYWN5LXRydW5rCis0MjkwNyBiNDhiYTdjZjQ1NzZlYjVjYTI4OTkyZTgyODgwODA0MTcyMzE0N2VhIGxlZ2FjeS10cnVuaworNDI5MDggZjZiN2UwYzM4NGRhOWZkZGMzMGY1MDIwOTk4OGNkODc0NjYxNWI3NSBsZWdhY3ktdHJ1bmsKKzQyOTEwIGE5Njk3ZGU1ZTE4YmZmNDIwMTNiZTA0ODg4YmE4OWYzMzA0NWM3M2UgbGVnYWN5LXRydW5rCis0MjkxMSA2MzJhNGRhYThkNGFmZTE1MzczZDMzYzMyY2Q5MzlmZTk0MmRmMTk5IHJlbGVhc2UyNC1tYWludAorNDI5MTIgNGIzNDdjNjU0NjM1ZjZhNWU1MmZjMmViZDEzMDc5ZjdkM2Y0MzM2ZCBsZWdhY3ktdHJ1bmsKKzQyOTEzIDU1MmRkNWZkYjlkODRmYzc4MTE1ZjRiYmVkMmM1MzQwZDBmN2FiMjIgcmVsZWFzZTI0LW1haW50Cis0MjkxNCBmZDczNTU5NmY2OWMxY2JjMzgwNmNlMDgzOTk3YjEzOTU0ZjdlYjgzIGxlZ2FjeS10cnVuaworNDI5MTYgNDM1ZjdmM2M4YjZkYTQ3NWVhZTVkNDY5ZTJjZDk2MjMyMzMyMWU4YSBsZWdhY3ktdHJ1bmsKKzQyOTE4IDZmMmVkYTQ5NWQ5ZGU2YjY4ZjE4NTJlMGViNDQ2MDM0YjM3ODE1MzAgbGVnYWN5LXRydW5rCis0MjkxOSAyNzkwNWViYWRkYWI1ZGRhYzVmZTAyOTU1MWE0ZTY3Yzc1NDViZGZlIGxlZ2FjeS10cnVuaworNDI5MjAgMDAyM2MwY2Y4ZmViYzBiOWFmM2MxMjUxNjUwMTQyMDE3ZWI5ZTk3OSBsZWdhY3ktdHJ1bmsKKzQyOTIxIDkyMjdhZTNkYjdlZDFlMmE0YWY0M2IyYzdjMjg3MTcyMWJmMzE2MWYgbGVnYWN5LXRydW5rCis0MjkyMyAxMmIwODEyM2VjYmNjZDgyZTE4NjQ4Yzk4MGU1MGJiMDVkZDhjMjIxIGxlZ2FjeS10cnVuaworNDI5MjQgNGRlZGMwNWFkNmI0NzY0YWE1MmJkNTA0NDk4N2VlNDRkZWQxYjdlMiByZWxlYXNlMjQtbWFpbnQKKzQyOTI1IDIxMDMzYmI3ZWNiZTE5YTExNGU3NWUzNmE3NTFiMmZjZmVjMzA0OTEgbGVnYWN5LXRydW5rCis0MjkyNiA1NmE0Y2YyYjAyZmRkY2ZkZDc2NmYzNWM3NjJhZDNlNjAxZjA5NmYzIGxlZ2FjeS10cnVuaworNDI5MjcgY2EyOWRkYTU2M2I3YTQ2YTRmY2UzMjdjNThlYjMxNDJhMWMyYTFmZSBsZWdhY3ktdHJ1bmsKKzQyOTI4IDkwMmVmMWRjMjk3OWI2Y2JmODI4MTdlMzVhMzgwZDRhNzE4ZDc0MGEgbGVnYWN5LXRydW5rCis0MjkyOSA2OWViNmQxYjk5ZjU2ZDZhNjQ0OTUyY2QwODI3NmFhYjVjNWRmNDc1IGxlZ2FjeS10cnVuaworNDI5MzAgM2UyYjU3NDcwMzhmZmZkNDY1N2YzNGM5OTcwYjNiZDFkNDc3Yzc0MyBsZWdhY3ktdHJ1bmsKKzQyOTMxIDBiZjUzNjM5MDE0YTk0YmIzZTA4M2ZkNDE5OWI5MDMzNDQwMjY4YzAgbGVnYWN5LXRydW5rCis0MjkzMiA5MWE5ZTJlMzFlOTMwZDQ2MTZlYmYwN2IyZTkzM2FhNWI1N2MyNzdiIGxlZ2FjeS10cnVuaworNDI5MzQgYjRlODlkMjliZWE4YzQ1Y2YyYmFhYWNjOWQxZjEwYjhkYzJlMTM3NCBsZWdhY3ktdHJ1bmsKKzQyOTM2IGIyMTg0ZDkxMGEwMGY4MTY5NjM2NDI4ZGU2OTI0MjEwMDIwYzgxOTAgbGVnYWN5LXRydW5rCis0MjkzNyAwZTM2ZTdjNjZiOGU4YTVhM2ZlMjlmYjEwOWEwM2RjNzk0ZmE4ZGRjIGxlZ2FjeS10cnVuaworNDI5MzggZjFlYWFlN2Y5NjJkM2Y3YTFhYWQzMTI5NGFjNTUyYTAxMjUzMTE1NyBsZWdhY3ktdHJ1bmsKKzQyOTM5IDE4ZjkxMWRkZTNlMjQwMGRkZWIwYmRkMDJlY2NlZWFmY2M0YmQ4NjUgbGVnYWN5LXRydW5rCis0Mjk0MCA1MDJhNjg4ODc3ODM5OTliYWY1ODQ4NDEwMzUwYThjMjBkM2U4M2NkIGxlZ2FjeS10cnVuaworNDI5NDEgZDQwYjQ4ZGY4M2U3OTRkOWEyYzA0MDBhOTU4NTAxZmYwYjMwY2IwYSBsZWdhY3ktdHJ1bmsKKzQyOTQ0IDZlOWIzNjg3ODlkZjBjZTU2NjNlMzFhNTIzOTNmZDJkZmVjMjY5MTggbGVnYWN5LXRydW5rCis0Mjk0NSAzNjUyYjUxMjhiNzA3ZGU4MzMxMTQwYjZlZDcyM2EzMTZkOGJiYzhiIGxlZ2FjeS10cnVuaworNDI5NDYgNzlkNWI3Zjc3YWM0NTk0ZjMzN2U2NDRjMGZjOGZhOTMxMGM1Zjc4OCBsZWdhY3ktdHJ1bmsKKzQyOTQ3IDk3ZDM4Nzk3YjhiYzA5N2FiM2YwYTNiNzMxYmUxZTA5YWQ5MjVjODAgbGVnYWN5LXRydW5rCis0Mjk0OCBkM2QyZjlmZmRjMDY1NDBjNmI5ZWFhODM4NmE3MWE5MTlhNWM4NDA4IGxlZ2FjeS10cnVuaworNDI5NDkgODA1ODAwMTgxZTBlMTlmZTZjYTJjYzAxY2JhODllN2JlZjZjMWRmZiBsZWdhY3ktdHJ1bmsKKzQyOTUwIDQ4ZTBhNWUzOTQwM2JhMWZmMGU0N2MzZGM3MTFmOTU3NjhiNTFmYjUgbGVnYWN5LXRydW5rCis0Mjk1MSA3YzE3ZTkyMjFmOTQxZjZhMWNkZDQwNzFkY2VjZmEyYmRkNjIzMDFlIGxlZ2FjeS10cnVuaworNDI5NTIgZmMxMGZmMzIyZGYxYjc5M2VkODVmYzgyNDI1YTViMzQ5MmQzOGZmNiBsZWdhY3ktdHJ1bmsKKzQyOTU0IDMyNjZhMDIwYTBkYWI3ZjBhNzI5NGJhZTk4MWY2ZTQ0YjhhZmEyMWYgbGVnYWN5LXRydW5rCis0Mjk1NSAxMWY4YjViOGNlMjAxODc4NjlhOWU5N2EyYmEwNzc2ZWY3NWZkNGM3IGxlZ2FjeS10cnVuaworNDI5NTYgZmFiNDRjNWM4ZGY0MmI5NTMxMWU3NTdlMzA1Zjc5MTFiOGU1ZDcwNSBsZWdhY3ktdHJ1bmsKKzQyOTU3IDJhOTA1NmY0YzE2NDc2NjM0NjYwOTE2MjdjMmQ2ZmRkMTRlZGMwZTMgbGVnYWN5LXRydW5rCis0Mjk1OCBkYjQ2NTA0OTNjMmI4ZTM5MmM5OTJhYzUyMzI0NGZkZjZlMWJkZjQ3IGxlZ2FjeS10cnVuaworNDI5NTkgYWU1OWZjZWQyZTE0MmQ0YWJmZDIyYzdiMTk3NDcyMzVlYjNiNzc5MCBsZWdhY3ktdHJ1bmsKKzQyOTYwIGViZWJhNzM1Mzg5NDdkZjMyNzAwZjgzN2M4NWQ0NWMyMDE4MzE5ZWUgbGVnYWN5LXRydW5rCis0Mjk2MSBmMTIwZjc0MGFiZTQxZTY3N2E2MWFmMzgwOTdmYzVjZmVlODNiY2JkIHJlbGVhc2UyNC1tYWludAorNDI5NjIgMDZlM2Y2MjdhZDk5NTg5ODliNTZlZDg5YTBkY2VkNjUzYWE0NjFiYSByZWxlYXNlMjQtbWFpbnQKKzQyOTYzIGUyNTZiNTMwMmI1NWMzODQ3MWUzYzI1NzMzYzk3MWZiZTAwOTJiOGMgbGVnYWN5LXRydW5rCis0Mjk2NCBkZjQzYzA0ZDI1NTQ1ZWQ0YmJkZTVjMDNkZTk0ZDI5Y2I0MWIwN2Q1IGxlZ2FjeS10cnVuaworNDI5NjYgMWRkNjUyMDRjMDlmZTdkNzkxZjYxOWZlYjViNTRjYWQxMTY3MDk2OSByZWxlYXNlMjQtbWFpbnQKKzQyOTY3IDAzZWY5ODcwNDNjZTAwZTkwNDQ5MGZjZjlmNjQyOTI4NzQ0MThkOGYgbGVnYWN5LXRydW5rCis0Mjk2OCBlNDQ2NWQyNzM3YzRlNzVkZDZlNDFjMDYxMzVhNmU0ZWFhZWRjN2ZkIGxlZ2FjeS10cnVuaworNDI5NjkgNjcxODc3ZDIyYTFjYzg4MjhmMjczZGYyMmIxYzRjMTBlNjIzNjFjNCBsZWdhY3ktdHJ1bmsKKzQyOTcwIDRiODY3ZTY1NGE4YTRjYzA3MzFlYmMzNWZhZjFmNTM1ODU1MTk2YWEgbGVnYWN5LXRydW5rCis0Mjk3MSBmMDYxMjVhOWQ0MDYzNTcxNWQ5Njg1MmUzYmYzOWNkODUzMzM2ZWUwIGxlZ2FjeS10cnVuaworNDI5NzIgNzM1MWFhYjg3ZTZkZTBmYjNiZWM3ZTRkOWViODVkZjcwZmE1YzA5NyBsZWdhY3ktdHJ1bmsKKzQyOTczIDBmMTlhNmZjOTc1NjA3YTYwYTQwMjZkZjhiM2I5M2MwMTFmMzNlMDMgbGVnYWN5LXRydW5rCis0Mjk3NCBmZGIwNWM4YWQ1MzMzYTM5MTc4MDdlNTg2ZWY0NGE1YTgzYWQyYmRjIGxlZ2FjeS10cnVuaworNDI5NzUgNDAyNTZiNTRjNzkwNjBiNjA0ZDYwM2RjMTIzYjBhODc3NjhiNjk3MSByZWxlYXNlMjQtbWFpbnQKKzQyOTc2IDY5MTNlYmE3OGQ0MDc5MTBjMmZlNmU5ZDkxZjI4NzkxN2FiZWY2MWMgcmVsZWFzZTI0LW1haW50Cis0Mjk3NyBjNzdlY2U2NjcwOWQxN2U1NzQ5NTUyZTIxODIwOTMyMzQzYTUzYzYzIGxlZ2FjeS10cnVuaworNDI5NzggYWIwMDMxOWMzNzQ0ODYxMDU0Y2IxMGI5ZWZiYTJhZmM3OTFmMGU2ZCByZWxlYXNlMjQtbWFpbnQKKzQyOTc5IDk3ZmVkNjE4YjVlNzIzYTRmYTNhY2U0MzY5YjE5ZTBjZWQ4NTkzZjQgcmVsZWFzZTI0LW1haW50Cis0Mjk4MCAxYTg0NjViYWYwN2RkNGY3MjlhYmUyNGZlZDc1ODY1NzRhYmZkNTgyIGxlZ2FjeS10cnVuaworNDI5ODEgYzllNDkxMzhmNjU5YjFlMTQ5OTA3YzJhZTUyNjQ4MzZiYjBiMzUyMyByZWxlYXNlMjQtbWFpbnQKKzQyOTgyIGRiNWU3MjBiMGNlZjllMjhmYmNjMjNlN2ZjMjQ3NWEwZDJmY2FlNDYgbGVnYWN5LXRydW5rCis0Mjk4NCA5NTg0MjUwMDdlYTZhOGE2OTM1ZDZhNDU4ODNmZDEzMjM0ZjY3ZTc3IGxlZ2FjeS10cnVuaworNDI5ODUgM2JlMjQyNWQ3NzQwMGQ4ODcyN2U0OTg2NzFjZjMxYjk4YTMwNTBhZiByZWxlYXNlMjQtbWFpbnQKKzQyOTg2IGNiOTg0YThiMTEzNDJmMGJlMTYxZWI0OGRkOTM3YTI5NmZmYzk0MWMgcmVsZWFzZTI0LW1haW50Cis0Mjk4NyA0MzA5YjNmYjViNDM1ZWVhOTAyMWExMTU5YzQyOGUwMDlhNDc1NGM3IHJlbGVhc2UyNC1tYWludAorNDI5ODggMzJiODY4YTQ5NjU5MzA5Yzk1OTMxOWMyMGJmODk5NTVhOTM2Zjg4ZiBsZWdhY3ktdHJ1bmsKKzQyOTg5IDNhZDQyZjk5YTZkYmI3ZmRjMDQ3ZTBjOTA2NWI1MTM2YmI5Njk3ZWMgbGVnYWN5LXRydW5rCis0Mjk5MSBkZGE0MjQxZjlhYmM3ZWExZWRkMjlmODc1YjVhMTJlYjIxNGU5YjYyIHJlbGVhc2UyNC1tYWludAorNDI5OTIgM2Q3YWRmODg3NGFjNThiODM4NmZjZjkzYWJkZjc1M2Y5MDc4MWQwOCBsZWdhY3ktdHJ1bmsKKzQyOTkzIDgyOTJlM2U2ZWNmZWE5N2FkMjllMTdmY2MwMDAzNmIxY2EwMGEzNjAgbGVnYWN5LXRydW5rCis0Mjk5NCA3ZWIyYzBmMGQwZmQ2NjUxMjZkMWE1ZTI4ZGY1YTdjYjRhNWJjMTczIGxlZ2FjeS10cnVuaworNDI5OTggOWEwODcyNDExMGQwYmViOTZkYjgxYzMyOTZiNjg2NjIwYTBjZjNlZSBsZWdhY3ktdHJ1bmsKKzQzMDAwIDMyMTAzYzVkYmVmYWMzZTJiY2RiZmQ0NjkyODA5MmIwNzMwZmExNGYgcmVsZWFzZTI0LW1haW50Cis0MzAwMSBhOGZkOTFjZDMxN2FjYmI4OTEwOGNlNDY1NzI3NTEwMzE1OGU2NWU0IHJlbGVhc2UyNC1tYWludAorNDMwMDIgMTVhNDU4MTcxZWIwMDg5MDYzNWE5MTFkYTY0YzYyZGQ5ZWMwNjIyNSBsZWdhY3ktdHJ1bmsKKzQzMDAzIDBjMDQwODM1MmVlNjljYWZlZGNhYTQ2NWNmYTFjMDI3ZTNlM2Y2YmUgbGVnYWN5LXRydW5rCis0MzAwOSAwMzVjYzg0MTQ3ZmIwNGU0ODlmYTA3YWQ5MmIxYWVjYzQ2NDE5YmYyIGxlZ2FjeS10cnVuaworNDMwMTAgODUxODhlNWI0OTEyZjU0YjcxMDA0OGJiYzYwMjA5OTI3ZjU5OWIxMiBsZWdhY3ktdHJ1bmsKKzQzMDExIGI1YTEzNTcwNTkyZGRjOTQ3MDdjNmM4ZjJhYmJhNWQ4MTJjOTE4YzAgbGVnYWN5LXRydW5rCis0MzAxMiA2YjFiMzJhODVmNDc2MDFkOGZjOTZhOTc4MDNhMDllZDY0ZDEzZTYzIGxlZ2FjeS10cnVuaworNDMwMTMgMjllNmU3YTEwN2RlMzkyMDVjNTQwYTI4NjdjNGMyNmM4Njg3OThkNCBsZWdhY3ktdHJ1bmsKKzQzMDE0IGJkYWZjYTIxOTJkMzdlYjFmMWFmMzAwOTVmODU1NWJlMzliNGRhZDkgbGVnYWN5LXRydW5rCis0MzAxNSA4YzFiZjc5OTk1MmNmMWQwMzQ1YjA3MmJjMGRiNDJiM2FkYjc3MzIzIHJlbGVhc2UyNC1tYWludAorNDMwMjIgOTU0NjllOTdmZDkwMDBhYjI4YzcwZjk5NjRiNzI3OWZlMWIyMDE4YSBsZWdhY3ktdHJ1bmsKKzQzMDIzIDQ4MDhlZTYyYjE1NmE2MTlhNTljMmE4MjU0ODY1MTJhMTliZGVhYmIgcmVsZWFzZTI0LW1haW50Cis0MzAyNCBiM2MzNjQwZDkyZjg0YTEyZTA1ZTI5ODQ1ODE1NWMwNzBmMzQ2MTMzIHJlbGVhc2UyNC1tYWludAorNDMwMjUgYzhmZmM5MTNkMDE0MzA1N2M3NTAzM2NmY2UxMjNjMDI0YjVjNjc1MyBsZWdhY3ktdHJ1bmsKKzQzMDI2IGZmMzAyNDI1OWQ5MWQ3MmJhZTdhN2MzYzdjZWRlMjIzMjIwZTg5M2IgbGVnYWN5LXRydW5rCis0MzAyNyBlMmFiNzU1YWU2ODU4MGUwYzAyMzM4YjU4OTE4ZWI5MTAzYmU3ZjFmIGxlZ2FjeS10cnVuaworNDMwMjggMjJmZmYxZjNjNzhhZTU0NTE4ODFkMDcxOTY1YTMyM2E5Mzk2Y2VjYyBsZWdhY3ktdHJ1bmsKKzQzMDI5IGNkZTU4Y2QwN2U3ZDg1MDQzYmVlNWYzMmI2OGM4ZTQ3ODI3MmJkNmQgbGVnYWN5LXRydW5rCis0MzAzMCA0YTg5NmZjMTIzODQyNzI0MTkzOWJmODBkZDQwYmMwZmEwNDJkNGJkIHAzeWsKKzQzMDMxIDU3MGM2MTZhY2YwYzE0ZWM3YThlZjI3NDM3ZTE0MzZmM2IyOWJjMjAgbGVnYWN5LXRydW5rCis0MzAzMyAzNzVjZTFjMDRlNjZiNTliMWY3MTNkNWE1NDM2ZDRkNGNlNWIwODczIGxlZ2FjeS10cnVuaworNDMwMzUgNDljNmViNjg4OTA2YjFkZGRhYmY1NzhmMDgxMjllNjcyOWQ2MTUxZiBwM3lrCis0MzAzNyBhYmE4MTRhYTRjNmE3YmQ4MmQxYTMzZjBjNGMwOGUxYzgxMTlkZmY1IGxlZ2FjeS10cnVuaworNDMwMzggNjljYmUwZmI3YTZkMjA0YjAxOWYyYmMzMjY3MzM0ZTkxMjM0YjE4MSByZWxlYXNlMjQtbWFpbnQKKzQzMDM5IDhlOGQwZTAzZjA3NmEyNDJjMmI0MDdjZjc5NWQxZTUzMGU4M2ZhODUgbGVnYWN5LXRydW5rCis0MzA0MCAyNTFmOTIxY2M4MWRjYzFkOWE1NWYyNWZiMWM2NDFmZjYwNmJiMjFjIGxlZ2FjeS10cnVuaworNDMwNDEgNWZiNTRlZDg1NDNiYjA3M2JiZjg5MzRkMzA1ZmQ4ODYxYjQ1ZTEzYSBsZWdhY3ktdHJ1bmsKKzQzMDQyIGQ5NjllMzM5YWMxZTUzN2ZmYzY0NWMwYmJkMjgxNWE5MGI2YjExZDAgbGVnYWN5LXRydW5rCis0MzA0MyBmOTE0NjMwZjQxOWMxYzRlNjgxMjJmYjZkYzdjYTU3NGVkMjRhMjU3IGxlZ2FjeS10cnVuaworNDMwNDUgN2ZhNGMyOWQ3MDMwMTVhNzk4MTc5ZTJkODFiZjk2MGM5YTEwOTk4MiBsZWdhY3ktdHJ1bmsKKzQzMDQ2IDlkM2EyY2RlMGRiZDMwZjljNzA1ZTEwODMzNmY2M2Q3YjRiMDIyMTUgbGVnYWN5LXRydW5rCis0MzA0NyA0NTFkYTNhNTI5MTMxNmRhMWU4ODc1OWY2MmFhNDk5NWVkZWJiNTAwIGxlZ2FjeS10cnVuaworNDMwNDggMTc5MDg0ODk5ZDk2OWIzNzk1NTZkZmU2MGNlY2QzMjcwNzMzZDYwMyBsZWdhY3ktdHJ1bmsKKzQzMDQ5IDg2ZjEzMzAxYzNkYjQxNGNmYWRjYTQ1OWJlMWNjMDNlN2M4OTc2NWYgbGVnYWN5LXRydW5rCis0MzA1MCA1NWU0ZjQ3NjU3NjNlY2Y2NjIwYWMzY2I5ZDcyOWIyZjVlYzk1ZDM1IGxlZ2FjeS10cnVuaworNDMwNTEgNWIzOGRjNTUxZjg2ZjhjNWJlYjIzM2EwNzBjNGVlOGNiZmUwOTFjYyBsZWdhY3ktdHJ1bmsKKzQzMDUyIDRmNDQ0MTJlOWY2YzEyN2NiNWEyMDBkZTE3ZThiYjg5ZDcyNWY0YTEgbGVnYWN5LXRydW5rCis0MzA1MyAzYmYyMzA2MWQ4NmNkOTQzNWY1NmM0OTQyYzMzOGIwM2ZhN2UyYTY1IGxlZ2FjeS10cnVuaworNDMwNTQgNjczOGY3YjI4MmY2NWM1YzkxYzA1YzQyNWJmZjA5NGExZjI0ODA5YyBsZWdhY3ktdHJ1bmsKKzQzMDU1IDM1NGUyMmYzZGFjNmYzMjJkYWM4NDZmODY5ZDJlNmIzNTczZDdmMTkgbGVnYWN5LXRydW5rCis0MzA1NyAxZGRmMGQ4MWQ2YzU5MGNjZGNiMzM1MjA3ZmUzYTQ4NzczMGM0Y2E3IGxlZ2FjeS10cnVuaworNDMwNTggNjE0ZDgwZGZmYzFmODhlMjAwZmM5NzA2YThlNzdiMTlmZmZhNGVlOCB0aW0tb2JtYWxsb2MKKzQzMDU5IDY4NTg0OWJkOTA1YzRhYjNkM2JjNjI1MjAzNTAzNDBhYmE5MzI1MTMgbGVnYWN5LXRydW5rCis0MzA2MSA5Nzg3ZjgzMGQwMjViNTg1YzRhYzc0NGU4Y2M3Mzg3Mjc3MGVmOTg0IGxlZ2FjeS10cnVuaworNDMwNjIgNjI0MDlhMWJjNGRiMzJlNGZlMGM5NGZlOTBmZmY2MmIwZGIwZjRlNyByZWxlYXNlMjQtbWFpbnQKKzQzMDYzIGFiMTdkYTY4NDI2YmE4NTQyNDBhMGU5ZjkxNTI4NWQzM2Y3ZWE4YzQgbGVnYWN5LXRydW5rCis0MzA2NCA1ZDJhYjQ4MjNmM2NjN2ZlMmY3YTcyZmRlMTdiZjA5ODZmNzRkNDVkIHJlbGVhc2UyNC1tYWludAorNDMwNjUgZjBiMGFhMzU3ZDQ5ZTQzNDlhZjViNDVkOWFkN2YwZDVlOTVlZWEzZiBwM3lrCis0MzA2NiAyNTAwN2MxNTU2NjhkZDc0ZTNkMTJjZDYyZmZlOTQ0ODAxYmFkYzcxIHAzeWsKKzQzMDY3IDU2MGFjMWJhOTkyNzRmYmVkOTg3ZGEyZmM2MDNlYjE2MmVkNGI4MzEgbGVnYWN5LXRydW5rCis0MzA2OCA0YWUwYmJmYzY4NjZlMTk1NDc3Nzk4YWY3M2E3MTY0YmFkMjRmMzExIGxlZ2FjeS10cnVuaworNDMwNjkgZDY4MzQ0ZDkzMmM0NThmODc2NzkxMWE1MjhlMGE0NTAwNmM1Njc4YyBsZWdhY3ktdHJ1bmsKKzQzMDcwIDg1ZWFmMGNhNjRmMmU0ZmY2YzNkNjRiMzEwNzZhZGFjZWU2ODE5ZmIgbGVnYWN5LXRydW5rCis0MzA3MSA3ZGFkODNjYTcwMmRiMmIwOWRmZTI3YzI5MTdkNmMxMTY3ZTIyNDI5IGxlZ2FjeS10cnVuaworNDMwNzIgNDkyMGJkNDkyZDk4NmI1YWFkMDJhMWVkNmQ2ODUyOTlkYjg3YTZjMiBsZWdhY3ktdHJ1bmsKKzQzMDczIDQ3MjdmMjYwZjZmOGQ5NjkzNWUwZGM5Yzc1Y2Y0NTk2YjAwYzM2MDMgbGVnYWN5LXRydW5rCis0MzA3NSAwZjZiNGNlZWE1ODA1MzhjODM4NjRhMDYzMjdmNmMyMmRmNGY3Y2FmIGxlZ2FjeS10cnVuaworNDMwNzYgNDk1MzQ0ZmVkMjU1YjVhYjhkMWIzM2FiYTllYTE4ZjczMDJlNWRjYSBsZWdhY3ktdHJ1bmsKKzQzMDc3IGY3MGMwMzY0ODllYzQzMTc4MDhhODQxMjRkMDg0NTQ4ZWI1ZDk5MTEgbGVnYWN5LXRydW5rCis0MzA3OCAwMzg5NGE3YTMyZWNkM2ZmZjQzOTdmYTNkYTBjMjIxZDRkMWZlMzlhIGxlZ2FjeS10cnVuaworNDMwNzkgYTJhNjA0OTMxZmY2ODA0N2ZjNjA2Y2EyODgwODAxZGEyYWMxOTE5MiBsZWdhY3ktdHJ1bmsKKzQzMDgwIDMwMjAzZTJiOTdkNzMyZDVkZmY2MDk1YjliZThhNjFiNzQxZDVjYmYgcmVsZWFzZTI0LW1haW50Cis0MzA4MSA5MmJlMmUxMTcwMzMxOTU4YzU1ZGJiMDJmZjA4YTI5OTg2Zjk5NDE5IGxlZ2FjeS10cnVuaworNDMwODIgODJmNzAwZmM0ZGUyMGRlNThiN2VkYmJjZWM2ZTQzZGEyYTZkYzc3MiByZWxlYXNlMjQtbWFpbnQKKzQzMDgzIGEyNTM5NThiZmE0YzQyYjMwMmRkZGU0Yzg5YTY1ZjdkMzRlMmIwMTIgbGVnYWN5LXRydW5rCis0MzA4NCBlNzIxZDY4ZGJmNmYxMjgzN2Q4YzZlZGI3YjVmZjM2ZDJlODQzOGE0IGxlZ2FjeS10cnVuaworNDMwODUgM2IzMDcyMGZhNTdhMTE0YjJmMGEwODJjZDRhMTQyOTY3Yzc1YjJhMiBsZWdhY3ktdHJ1bmsKKzQzMDg2IGMwYWViMTA2NTRiMmY2NjljZTNlM2ExZTJkMGYxYjUzMDIyZGE1MmIgbGVnYWN5LXRydW5rCis0MzA4NyBmZmY0ZWVjZGVmNDVmNjQxOGRlNDlkODFlYzBkZTFjNzExZGY3ZGQ1IGxlZ2FjeS10cnVuaworNDMwODggYmNlNWM3YWU2NTlhNTI1MjNlYzA2YmEwNzc1MDY4NmQyNWU4OTYxYiBsZWdhY3ktdHJ1bmsKKzQzMDg5IGM0NDk5NDQwNjhkMjI4ZjZlMzQ0Nzk2M2M0ZTFiM2Q5MzRlOGY3ZWUgbGVnYWN5LXRydW5rCis0MzA5MCBiZmI3NGE0MjBhYzhlYjM1MTUyZDA3NjJkOTUzN2Q0MGI0MGY3YWNjIGxlZ2FjeS10cnVuaworNDMwOTEgZTQxNWYxYTg3NGIxMDllZmI0NzIwM2Y1NzBjYTU5ZjI0ZTdiMTIwYyBsZWdhY3ktdHJ1bmsKKzQzMDkyIGE5YzNjOTM4MjQ2NTNlMDY4OTIxZjcwYmMzODE1ZmZiNzU2M2I2NDAgbGVnYWN5LXRydW5rCis0MzA5MyA1M2M4MDZmN2EyNTA4NmMyNDNmN2U5N2M5ZWQyZmE0YjNhZWU1Y2Q5IGxlZ2FjeS10cnVuaworNDMwOTQgYmQzNzE1MzUzYTA5YjU2MjY2Nzk0NTJiNDQwMzAxOTZlNzFkOTdmNiBwM3lrCis0MzA5NSA3YWRhMTZhMTQ5Njg2NzQ2MjMxNDNkMmQwODExNjU5MDUyNmNlZDdjIHAzeWsKKzQzMDk2IGNkMTgxOGVlN2VhOWE4Y2U4MzliZjFiNzYxMDFmZGJmY2FiN2E1YzQgcDN5aworNDMwOTcgZmYzODFiMzg4Y2ZmNDJjOTc1NDQ4N2Y2ZmVhNmZhNjZiYjZjMjE3ZCBwM3lrCis0MzA5OCAwODFiNGYwZTgxYjdiYWE2ODAyNTRhMzBiNzJjNDU0NTFkNzFiNzhkIHAzeWsKKzQzMDk5IDMzNDJiM2I1ODYzMDQwNTNhNzZhMGY2M2RkOTUwZTUxMmI2Y2VhZWMgcDN5aworNDMxMDAgM2UxZWU2ZTE2YzgxZjkxMmY2OTFjMjQ0YWYxNDY2YTBkYjUxN2I5YSBsZWdhY3ktdHJ1bmsKKzQzMTAxIGMwNDhhMDlkMDZmZjg2NzRlMDUwOTQ5NGE1ZTU4NmFhY2UyNzNjMDQgcDN5aworNDMxMDIgMTE4Mzk3NzZjNjZjMzI0MzY2YTc3YzIwODkxY2QxZmMwMDYwNzg2YSBwM3lrCis0MzEwMyA0MDUxMWJmNTkyOTc5ODNlNDk2NzRiZWY5YTI3MTFlZGZiODY5OTBlIHAzeWsKKzQzMTA0IGEwMTY3MmE5NmQ0NzI3MDQ2MzY2MGJmNTU3MDlmODVmOWQ5NjU4NTMgcDN5aworNDMxMDUgY2UyNjdmNjgwNjVlMjIwOTJmMTc4ZWMxNzYzNjRhN2ZjMzJhYzQ0YyBwM3lrCis0MzEwNiA5ZWYzZmFjNWQyYzBhMmE5NDk2MjJlNTRmOTkzMTBlMDkwYjAxMDRlIHAzeWsKKzQzMTA3IGVhNWI2NmFmNjI0NWE0MDllMmMyM2Q3NjYyMTVmODdkNGU4MzUwOWYgcDN5aworNDMxMDggZmRjMDViMTY3MjM2ZTc1NzIxN2RjNThkMTU5M2U3MGQxZmM4YTVkZCBsZWdhY3ktdHJ1bmsKKzQzMTA5IDVhZWNlZGM5OGFmNjU1OWUwNDUzOWFjNTkzNTQxZTdlMGU0NTRlMmUgcDN5aworNDMxMTAgZjdmZDExYTc1YTZhNGRjYjhhMjNiMGY2MGIzY2I0NzZiZDMyYjExNCBwM3lrCis0MzExMSBjMmMxMjgxNGY4NTRhYmYwZTA4MGExMTVmYmFhNDU4MDhmYjdjNjYzIHAzeWsKKzQzMTEyIDJiMDRiOWM3YjU4ZWIyZDAwNmU1Yjc2MTE5ZTM1ZjUxZDMxODM2MmEgbGVnYWN5LXRydW5rCis0MzExMyBmMDJhMDMyNTRiOTFlNzdjYTc0MDJjNThmNTc3MzE4MGYwNGI3NTA2IGxlZ2FjeS10cnVuaworNDMxMTUgMjAzYzA2ZmJiMDc1NDQ3NDNjMmQ2ZGQ0YWRkY2I1MzUyNDFhOTMyZiBsZWdhY3ktdHJ1bmsKKzQzMTE2IGQ3ZDEyZDdmY2MzOTJmOTc5NmFjN2Y4ZGU5NzkzODBiODU1NDEwZDAgbGVnYWN5LXRydW5rCis0MzExNyAyMzA0NWYxZTM5ZjJmOTFjOGZkMWZhNDUzZTM0MDE4MmVkMzg2NGIzIGxlZ2FjeS10cnVuaworNDMxMTggNjRjODNlMGY2ODNlNTY2YWM2ZGUwMDk2ZTJiNjI0Y2RmNmUyM2JiZSBsZWdhY3ktdHJ1bmsKKzQzMTIxIGIwMWM4MGQ4ODI2N2ZlNTBhZmJiMzQ2NzRiY2YzY2IzNzBjNWY5ODEgbGVnYWN5LXRydW5rCis0MzEyMyA0YzgwNGFiODdlYWRhYzBhYWM2MDI0ZjZiY2IzYzY0M2I1MmFmZWQzIGxlZ2FjeS10cnVuaworNDMxMjQgMWY0NTQ5ODY1YWFkYmU1NTRhZWQ0MjU5NWFlZDhhZWQxYjI1NmE0MiBsZWdhY3ktdHJ1bmsKKzQzMTI1IGU0M2Q1ZDJjYTUwYWJjZWJmNGM2N2VmNmFmODA2NDczYTczMTIwNWMgcmVsZWFzZTI0LW1haW50Cis0MzEyNiBkZDQ5ODQ3YTYwZDMwMGQxNzYwZjE2MDdjNTA0NGRhMjY1MWRlNzJkIGxlZ2FjeS10cnVuaworNDMxMjggYjMzZDkxNjY4Njk2MTVjZjI5NzRkYzg3ZTg5MmI2OTkxODU2Y2M2MyBsZWdhY3ktdHJ1bmsKKzQzMTI5IDk5NDkzMWI2Yjg3NTQ4OTI5YmMzNjEyY2Q4YzY1NWQyNjUxMmQ2MGQgbGVnYWN5LXRydW5rCis0MzEzMCA0M2MzOTNiMmZlOWZhNDc5ZDA3ZGI0Yjc5Y2VkMDFlYTU1OGMzNTRkIHJlbGVhc2UyNC1tYWludAorNDMxMzEgODFkMGU5MzIwOGQ5ZTgxMDVkMjcwZGM2NjQyZGVkNGE2MmYxNWNjZSBsZWdhY3ktdHJ1bmsKKzQzMTMyIGQxMzQzMGE4YmQyY2UyNTllZTk1Mjg1ZTNkOGE4NWFiYTY1MGI4OGMgbGVnYWN5LXRydW5rCis0MzEzMyBiNTVmNTMwNDE5NjUzNTk2NDRjYWJkYzlmYmJjNTIzODQwODVkNGVhIGxlZ2FjeS10cnVuaworNDMxMzQgNjg1ZTIxMjM4NjRkM2Y2YWYwNGI4NjdjYzkwNjlhOTIzMTg1NTg2NSBsZWdhY3ktdHJ1bmsKKzQzMTM1IDM4NDAwYjY2MjQwNDc1YTI5NTlkMjEwYjJlMGYwNTIwMjZiMTQzYzcgbGVnYWN5LXRydW5rCis0MzEzNiAzZjkwYTkzZmY1ZDBlYTkxODgyNGM1MWYwODBhYzY3Y2VkM2ExZWU0IGxlZ2FjeS10cnVuaworNDMxMzcgOTJjYjRhN2ZjNTU0ZWZmYTY5MTZiNzFhYmQyMjVhNmRiOWY0ZmVhNSBsZWdhY3ktdHJ1bmsKKzQzMTM4IDY3NzFmMGUwOGI2MGEyMzZmMjE2ZTY2N2ZlYjQxMzBiMTA4ZjlkODAgbGVnYWN5LXRydW5rCis0MzEzOSA5Mjk1MmFjOGU4OTExZjA2N2Y1NmJlYmM0OWFjZWQ4ZDk1NzRjYWZlIGxlZ2FjeS10cnVuaworNDMxNDAgYmI0OTFlNTVmYjRjMjQzM2E1MWNjYjRlMWVlZmY1NjA3ODk0NGYxZCBsZWdhY3ktdHJ1bmsKKzQzMTQyIDg0MzkyOGM2YjI0Y2RkZjZkYjhjMjU4N2NkMjc5Y2ZkODM4YWNmMDMgbGVnYWN5LXRydW5rCis0MzE0MyA2YzNlYzM3MzZjNTE0ZGY3YWMxZGQwODAxZjU3NGEwOGI5YTliOTA2IGxlZ2FjeS10cnVuaworNDMxNDQgOTkxMGZmNjlhZjk3M2JlMzM5YzJhNzU3OThiMGIwZTM0NWIxYWVhYiByZWxlYXNlMjQtbWFpbnQKKzQzMTQ1IDNiN2IyOTVjY2E5MDJiZjcxMGZmYjczM2RlZGRlNTA3MWE2YzliNjcgbGVnYWN5LXRydW5rCis0MzE0NiBjMDExYWY0YTJiMDFmZDI1MTdlZWU4ZTNkMmEyM2U2NWE5MmRlOTU1IGxlZ2FjeS10cnVuaworNDMxNDcgMDdhYjU1NzYyNWI5Y2VlZmVmYzdhZTY0MzhkNWEzOTZlYTU5N2Y3YSBsZWdhY3ktdHJ1bmsKKzQzMTQ4IDIzMzU3Yjg4YzAzZWFmYTZiZTI5ODVkZGY1NTZjZTE1MDVlMzVhZDcgbGVnYWN5LXRydW5rCis0MzE0OSAxZDMwODFjYjNlYTY3MzViYjJjZTZjYThhOTU3YmVmYmExNjQ3MzdhIHJlbGVhc2UyNC1tYWludAorNDMxNTAgN2MyMmI1YWEzNDM4NzFkYjk0ZDVlZTYzMWY0ZTBhZjNhNzc2NGRiYyByZWxlYXNlMjQtbWFpbnQKKzQzMTUxIDhkNDJmNjYxZmVjODAyOWUxYTIwYzM0M2RiYmQ3YjE4YTdjNjk5MGYgbGVnYWN5LXRydW5rCis0MzE1MiA3NzVjZDY5ZjhhMjM3ZGFmZWRiOTQ3MjllNmExMmY2NTg5MDc5M2E1IHAzeWsKKzQzMTUzIDZiNTE2ZjMyMWQ4NTI0Y2JiZWUxNGQxZTY2MTc5ODQyYzhmOWIxYjkgbGVnYWN5LXRydW5rCis0MzE1NCBiMzFiN2VjNWE2YjQzOTQwY2I4ZTkwMTBiYmU5YzMyYTU4ODhlODFmIGxlZ2FjeS10cnVuaworNDMxNTUgM2RhYmQ5YmI0OTZlOWE2OGNkNmNkOTRiNzYyMjk3M2ZjNzY2NDA1YSBsZWdhY3ktdHJ1bmsKKzQzMTU2IGI0ZDBmOGQ5NTE3OWE0NmJjY2I0OWQ4MGRkNTYxM2QwNWFlMGMyNGQgcmVsZWFzZTI0LW1haW50Cis0MzE1NyBkZThmNWQxY2RmNGQ5NTgyNGFlZDNiMGUzM2Q3OGQ3MmYzYjliNTA2IGxlZ2FjeS10cnVuaworNDMxNTggZDYyYjEzNDg4OTQzZDc4YzljOGQ4MTczMjI5MzIzMmE4NGI3OTA0NyBsZWdhY3ktdHJ1bmsKKzQzMTU5IDg1MmRlMzNlZDQyN2Q2YTQzMGY2MWNkODlkMzYyMmQ5YTM5MDVhOGEgbGVnYWN5LXRydW5rCis0MzE2MCAyZGM2M2NkYjA5Y2YwZGE4M2JmMTQ5ZmYzNTA3MGEyZDQzMzM3Mjk4IGxlZ2FjeS10cnVuaworNDMxNjEgZGI5ODZiZTJjMDBjNWQwM2E1ZGU1NDVhZTYzMWVkODJjMDVjYmQ3OCBsZWdhY3ktdHJ1bmsKKzQzMTYyIGU4MGZkYjNhMGY0MGE5NjM5YjQ4MWZhZjhmNjhmZDIxYWJhZjQyYzIgbGVnYWN5LXRydW5rCis0MzE2MyA3OWU0ZGJlNGJkYzZhNjM4ODA0YzZmNTVjZDk0YmIzMmJlN2Q3NmZmIGxlZ2FjeS10cnVuaworNDMxNjQgYTA2YzlmZDI1MTIwOGNhZDJkZWFkYmI1OWU5NDVjMGQ4M2JkZThiOSBsZWdhY3ktdHJ1bmsKKzQzMTY1IGQ4NjAzMTFmOGE5NzFlNzJhOWViMzMyNTI4ZmZlMzk0Y2RkYzYwNTggbGVnYWN5LXRydW5rCis0MzE2NiAzNjA1MjE4ZDAzZmEwNDM3YWU0ZjNiMzNlZGExMWE1ZDE1MmJhZmIxIGxlZ2FjeS10cnVuaworNDMxNjcgZGUyYjk0MmYzN2Y5NDhlMGNjNmFmNmRiNGJlOWI5MWIzZGRmNTE5ZiBsZWdhY3ktdHJ1bmsKKzQzMTY4IDVhNzc1MGRiMDk3NzhlMDIyN2ZlYTFlZjIxYjhhYTlmMDZkNGZlYTMgbGVnYWN5LXRydW5rCis0MzE2OSBhMGFjNzcyNTliOTljZTdmYzY5YTAyN2ZkY2Y2MzgyMmUyNzFjNTI0IGxlZ2FjeS10cnVuaworNDMxNzEgZDg1OTIyNzZiMTM3NDVhOTFiOGIzNGQzNDgxZDZkMjc0MjViNjY0YyByZWxlYXNlMjQtbWFpbnQKKzQzMTcyIDQ5MDdmYjg3OWNkOWM3YTYzODhhYTM3OWJmNzY3ODIwNTZhMDdkZWQgcmVsZWFzZTI0LW1haW50Cis0MzE3MyA2NDEyZWQ2OTc1ZGVlZThmYThkOTllZWFiNTU4ZjM5ZjFjMzZhZDU0IGxlZ2FjeS10cnVuaworNDMxNzQgODdlZDFmM2QyNzJlNGVjMzIwMGYwZjk1OGVmMjc1MTU5ZTlmMmMzMiBsZWdhY3ktdHJ1bmsKKzQzMTc1IDgyYWViNTRiMGJhYWIzZjFkNjgxYTcwN2MzMzQyYmYwMDViNTJjY2QgbGVnYWN5LXRydW5rCis0MzE3NiAxMzZiNDU3YjU0M2FiNjU3OTZiYjZmYTY0MWUxYjNkZDFjMDk0ZmI5IGxlZ2FjeS10cnVuaworNDMxODEgZjc5OTNkYzZiZjI2NGY4YmIzMDk0ODgxZDdmMDNlNWIyZWUxMGQ3YyBsZWdhY3ktdHJ1bmsKKzQzMTgyIGRiMzE3ZTQzNTdhZDU0ZTZjNzcwY2UyZjY3NWNmNzc2NzY3OWFhMjAgbGVnYWN5LXRydW5rCis0MzE4NCBkYjI5N2I5NDQyZTQwY2E1NjY1N2FmMTI1Y2MwMjQ4MzVhM2M3NjExIGxlZ2FjeS10cnVuaworNDMxOTEgZTczYjM1ZDgxNjE3YmViMWRkMjgwMTI0OWM4NjZhZGE4MDYyZGU2YiBsZWdhY3ktdHJ1bmsKKzQzMTk0IDhkYzQ0ZTlkNWM5MzliODJkNjI0MTFmNGMyMWNlNGQzNWRkYTY2ZjQgcDN5aworNDMxOTUgYTljMWU1MmFkZGYyOGJiYWQ4MDFjOTRmNzQ3MTcwNjdmMjJiZjU0ZCBwM3lrCis0MzE5NiAyNTFlY2VjMDRmMWJmZmQ2MzViNTcwZjFkNmU4ZDgzZmZkNjhiODM4IGxlZ2FjeS10cnVuaworNDMxOTcgZTM0NTA2ZTQ0ZTY3NjgyYjdkMzMyMzM1MGRlNTRmYzhhNzRmNjNjMCBwM3lrCis0MzE5OCA1MmRkNDVkYjFlODUwNDdhYmJjYzBlNTZmNzg4ZTJhYmU4MTIxMzEzIHAzeWsKKzQzMTk5IGJhZjY1ZGM2MzljMTRmZTBlMzk1MmY3YjUwNGNlN2FmMDA5MzZiNWUgcDN5aworNDMyMDAgMDhjZjhiOWVjMjA4NzIzN2I0YjIzMTg3ODY0YTA5MTdiZjkwMjk4MCBsZWdhY3ktdHJ1bmsKKzQzMjAzIDJmNGE0Zjk2YWNkMWU2ZjQ4MjljMTg4MzI4NDY3OTg0ZDZjOGNkZTUgcDN5aworNDMyMDQgYWEwMzlkZTg5MWM5ODdmZTZmZTA0NWU1OTg5MzVmYTQ5MzFiOTVhNyBsZWdhY3ktdHJ1bmsKKzQzMjA1IDBiYjc3MDA1OTNmNzVhMjFlN2E3YzU2YTU3ODFiOTZiZmY3MDAyMDEgcDN5aworNDMyMDYgNmU5MjkyMzhlM2FjNDdiMTgyOWYzMTU5MGVmZWViMTAyN2U1MmI3NSBsZWdhY3ktdHJ1bmsKKzQzMjA3IGM5ZWUzMmI3OTNlNzg4NDZlZDJjNjQ2OGQyYjI3MzlkMmRjZmQ1OTcgbGVnYWN5LXRydW5rCis0MzIwOCBlNzJkMWM3Yzg1NTQ4OTA5YzJmY2ZlOWZkZDFmYzgyYjU5OWI2YzdjIHAzeWsKKzQzMjA5IDNmODI0MTQxZWViOTllYmQ4MzRhZGQzMTE3MmVhMWE0ZTdjOWNlZTUgbGVnYWN5LXRydW5rCis0MzIxMCA3ZGFkZDNmYzVlZmFjNmJiMGM5ZGE5OTEwM2YxOTg0OGM1NzdiNmZmIGxlZ2FjeS10cnVuaworNDMyMTEgNzFjNTY5NGUzNDIzYjI0NWYyNGM4MjU1ODBlNzg1YmMyMmNlZmZiNiBsZWdhY3ktdHJ1bmsKKzQzMjEzIDYxNzc0MzExNDYwMGJiNGYzYmJjOWI5MTY5NGY1ZjI4N2UwOTFmNGQgcmVsZWFzZTI0LW1haW50Cis0MzIxNSA3NjdlNmJlNTg5YTA0MGRiZTU0NmQ3NmFlNjA5NDBmZDViNTQxZjcwIGxlZ2FjeS10cnVuaworNDMyMTYgZGJhZjBiY2U4ZDQ2MDJkMjBhNTUxYWQ0MTZhNGZiMTU0MTVmYTU5ZSBwM3lrCis0MzIxNyA3ZWFjMjNjOGU0ZTk4OTNlMDc0ZmU1OTYyNmExNDAwYWM3OWJiMzM4IGxlZ2FjeS10cnVuaworNDMyMTggNGVmOTk2OTVmN2JiYmVlZDk5NWIzZDgzMWMxZTFhZDk1MTNjNGFjMSBwM3lrCis0MzIxOSA3MDQ5ZGMwYzYyMWEzZDJiMDJiMzIxYzg1NTY3NzRhZDg0NjViMjM0IGxlZ2FjeS10cnVuaworNDMyMjAgNTIxN2M3MDNhOTRmOGFiZWE1MThkY2EzNTYxYWMwODcwYTVmYmI4MyBwM3lrCis0MzIyMSA5MWRkNGQ0NGQzYmM3MGRhNmY1NzRmOGFkNGMyOTFmZmVjYmNkY2RmIHAzeWsKKzQzMjIyIGQ3NTEzZjM4YjIyZjk5ZWJkNDg0NTlmOTQyNTVlZDM0YjIwNzg5M2UgcDN5aworNDMyMjQgNjkxZGQwNTkxNjkxNzE3YzdmNmM1ZjI3OWM4MzhjM2ZhMGIwM2JkYyBsZWdhY3ktdHJ1bmsKKzQzMjI1IDAwNTc4NjJhM2JkYmRhZjYxZWE4OGRhMjE4YjM5NjFmMjRiZjlhYTcgbGVnYWN5LXRydW5rCis0MzIyNiAyZDkyYWI3ZjVlODllMGQ4YmJmNGEyOTk2Zjk5ZmQ3ODMxYTE0MGY1IGxlZ2FjeS10cnVuaworNDMyMjcgNGQ4MDYwNzAzM2ZiMzE1ZGU1NmYwMjI3MmI0MWNkMGE0MmE2ZDhkMiByZWxlYXNlMjQtbWFpbnQKKzQzMjI4IDEwY2NlM2Y2NTE3MDI5YWFhOTcxY2Y0YjUyNWMwNzBhMGE4YWVhZmQgbGVnYWN5LXRydW5rCis0MzIyOSAzNTQ1ODExMjM5YjQwYmEzOWRlNDdiMzExNWY2YzEzMDk3Nzk1N2IxIHJlbGVhc2UyNC1tYWludAorNDMyMzAgMTZiODg1OWIwNzYwNWFiNmQxZjliZDFkNTAwODZjNWZlZTcxZDE5NSByZWxlYXNlMjQtbWFpbnQKKzQzMjMxIDlhZDBlNTE3NTI3ZmY0MWI3NzM3MTdhYTQwMzMzOTE2MTVjOTBjMTkgcmVsZWFzZTI0LW1haW50Cis0MzIzMiA4MTQ5ZDBhNDI0YTU1ZTAwNTUwZTE5MjYzZmNjMDI5NDY5NjEyOTM1IHJlbGVhc2UyNC1tYWludAorNDMyMzMgMWFmMjQ1ZmFjOTBhNmI2ZmFlZjg4YWZmMDA0ZDk1MzQzMGQyNGFlMyByZWxlYXNlMjQtbWFpbnQKKzQzMjM0IGMxZTcwMmQyOGNmMjg3ZmM2NGFmNmEzZmY0MWNlODc5MTliYjQyZTAgcmVsZWFzZTI0LW1haW50Cis0MzIzNSBhOTUwNDUwZWY0ZWI5Mjg3MjY0YWZmMThjOWM3YTkwM2QwNDZkOWJiIHJlbGVhc2UyNC1tYWludAorNDMyMzYgZDExNzBlOWFhNzg5YjNhNGFkMDE1M2RkYTJkMDczYzJjZTRkYjM1ZSByZWxlYXNlMjQtbWFpbnQKKzQzMjM3IDdjNWJlN2MwZmRmZGJiYzBhYzFkOTFjMDcwMzhiYzgxNDEyZGE0MTIgcmVsZWFzZTI0LW1haW50Cis0MzIzOCAzZTA5Yzg1NjZkZjFhZmQ3MGE1NTRkYjA2MDUyYmYzNTcxNDc0ZDgzIHJlbGVhc2UyNC1tYWludAorNDMyNDIgYjJlNmQ2YWE4NmQxYzFiMzIyYWMzNTA0ZjkyMGNjY2IzNDU5ZGJlNSBsZWdhY3ktdHJ1bmsKKzQzMjQzIGI0ZDkyZWYyZjMzODBkZWRiMjllMzBmZmY0MjgwMzIwMWFmYmQ2ZDQgbGVnYWN5LXRydW5rCis0MzI0NCAwYzYwMjkzOGVkOGU4Nzk3ODNhMWQ2NDI1Yjk0YzNlZDY0ZWQwOWE3IGxlZ2FjeS10cnVuaworNDMyNDUgMmI3ZWNlNzhlMjkzMTQ3Nzc3NjQzODY1ZjczYzE3YTdlNmFjMGJmMyBsZWdhY3ktdHJ1bmsKKzQzMjQ2IDQ1ZGQ5MzhiN2ZlYjIwZmQ5MDhjY2RmMDAyYjYxNmQ5MGRlODBkYzYgbGVnYWN5LXRydW5rCis0MzI0NyAwMjdjNmZjZWVlMGRhZjk4MGUzZTRlODM2MjU0MjczOWNmNGE1ZTI2IGxlZ2FjeS10cnVuaworNDMyNDggNDFkNzA1Nzg1NzhhMzgxMTYwZjQ4ZjliMmYyMjNmMDhjZTA0ODAxNCBsZWdhY3ktdHJ1bmsKKzQzMjQ5IDRmOTdiNmEyMjljZTAzMTVmNDM5MjNhYTUyZWFkYTcwYmVjMTQ3NGQgbGVnYWN5LXRydW5rCis0MzI1NSAwNjZjOWNlNDhjMzAwMmJlZWQ0ZTNiNmZmZTZlNTkwMzdhZWM2MzY5IGxlZ2FjeS10cnVuaworNDMyNTYgMjlkZjRmZTEyOGEwYWJlYWJmMDE3MDZmOTRkZTBlNDJkNTA3YjFjNyBsZWdhY3ktdHJ1bmsKKzQzMjYwIDcyYTcyMGRkNjRmYjRiNzA5ZmY2NDE1ZWMyMzA0NGY0MTcwOWI3MmEgcmVsZWFzZTI0LW1haW50Cis0MzI2MSAxZWQ3YjhkYzc3N2FjZmQ1ZjZlZjUzYmZhZGY0OTkzZmJiNDliZDFmIGxlZ2FjeS10cnVuaworNDMyNjIgOTczNTdmZTM0MjIyN2JkOWJlYTBlMDc4YTlmZmRjZWJlNzlkZjIzMSByZWxlYXNlMjQtbWFpbnQKKzQzMjYzIDdlM2JmODQ5MmMwM2E2OTY1ZmVmNTUyZTZmZTUyN2FjZGQwNTA3NTcgbGVnYWN5LXRydW5rCis0MzI2OSBhMThhYTNmYmRkNGFiMGQ4MWU3MjUyNjkxM2ZmODI3MjJkOTA4Y2NmIGxlZ2FjeS10cnVuaworNDMyNzAgZmI0ODFlMGY1Nzg2ZTUxZWUzZTFlMjY1NWExNjMzNTQ5OGE5Yzk5MCByZWxlYXNlMjQtbWFpbnQKKzQzMjcxIGE4ZGUwYjk2MDAyNzViYzQ2ODMwNDkxMTM0YTU1NzlhNTk0YTFjNTYgcDN5aworNDMyNzIgMjMxZDYwNGRlZDg0NmUwYTQxYjRjM2MxMWJkZmUzMTY5MWM2NGM5NiBwM3lrCis0MzI3MyA1MjBlNTViZDc2ZDZjMjNjOWJlNjE5MzM4YzBjYzg5NDgyYmJlOTI5IHAzeWsKKzQzMjc0IDY0YWUzMmIwNzgyOTlhMjQwYjYxZjMyNjRiNzA2NmYyZTU1OGYwYmMgbGVnYWN5LXRydW5rCis0MzI3NSBjYWE5YWZmMDg1YTY2NjNkMjNkOTA0YTk5MzIwMGNmMWY0ZWQ4OGMxIHAzeWsKKzQzMjc2IGY5ZjA0MTE1ZmJiNWY1MDAzZGIxYzA0OTI3MGFkM2U2Y2M0YWYwNzEgcDN5aworNDMyNzcgYjJhMDVlYTdlYWMxYWQyZGM1NjQ4NGRlNzg3ZGYyZTk5Y2YwNGYxZCBsZWdhY3ktdHJ1bmsKKzQzMjc4IDg2OGFiMmE2NWM3MzBlZWI0OTYwZmMzNDM2MjJjNGQwMmI5MWUyY2QgcDN5aworNDMyNzkgNjY4YTViYTc3ZGM2ZjNkY2U3NThjMjc3Yzg0Njg1YTE4ZWEyODVjZSBwM3lrCis0MzI4MCAzNWNjNWUxODBhYTNlNjY0ZTdjN2NiMzRmOWNlOTZiYTQ2MWE4ZjJkIHAzeWsKKzQzMjgxIDYzYzYxZGI1NTNhODY5NmRjM2QzMThiODRiNjE1MzFkZjc5MmZlOGEgcDN5aworNDMyODIgNzYwZmZiMGZiYTM3MzdkNGVlYjBlNGYxZDMyZjIzNjE4YjlkYTFkMiBsZWdhY3ktdHJ1bmsKKzQzMjgzIGI4NTY3Yjg0YzUzMTM3ZjQ3NmFhNDEwMWFlNjI4NTU4ZjcyY2RhODEgcDN5aworNDMyODQgMGFkMzg3ZmI2MzE0MzIzY2I1ZGY1OTNlZjM1YTQ2ZmJjNTk1Njc3ZSBwM3lrCis0MzI4NSA0YmZlOGFmZThmNjVlZDEzM2UxMjEzMzMzOTUxMTNiZDgwNWU5YzkzIHAzeWsKKzQzMjg2IDU5M2U4ZmI5YTNjYWZlNWM0NzdjZDU2MzdhMWRjMjdhNzU3MjQ1NzMgbGVnYWN5LXRydW5rCis0MzI4NyA3ZjMyMmVmNjg0Mzg3ZGExYTc5ZjRkYjg5NTBlOTBiM2VhNWZmZjgxIGxlZ2FjeS10cnVuaworNDMyODggZTM4ZmYyMTE5MWRlNTFlOTUyNmVmYTg1YTk0MjM4NjE1ZmZiNjM3YyBwM3lrCis0MzI4OSAyNDM2MzMwMWEyOTljNTEwN2VmZTVlYWIwMzY5NDNjM2E3YzVkNWQ3IGxlZ2FjeS10cnVuaworNDMyOTIgYzFhNmJhN2VjYjIzNGE5NWUwOGNhNDdmNDIwMjAzNGJhYWM0NmVmYiBsZWdhY3ktdHJ1bmsKKzQzMjk0IDY0MzE3YzcxZWQ2ZDM5MzYxZTA3MzY1MTMzZWNlYzM2NGVlYzM0YTcgbGVnYWN5LXRydW5rCis0MzI5OCBiZWQzZjUyZjBkYzYzZjdmMmEwY2EwYTI0Nzk1OGM0MWI5YTRhOTNiIGxlZ2FjeS10cnVuaworNDMyOTkgMWI3MmQwZTRmNGFhMGFkYTlmMzlmZDhkNjliY2Q1ZDY5NDYwMjk0NSBsZWdhY3ktdHJ1bmsKKzQzMzAwIDhhYjAxYTljMTQwYjcwMmEyOTdmYTJmNGVkOTQ1Njk4MzIyMDlmYTggbGVnYWN5LXRydW5rCis0MzMwMSAzOTVhZDBkNTQyM2Q2MGE0MWNkNjJjMGNkYjhhNGIwNjY3MmVjYzZiIGxlZ2FjeS10cnVuaworNDMzMDIgZjVjZDMwOTFkOTlmOWFjZjExZTdjYmFkZTM5NjNkMjNlOWFhOWQ3OSBsZWdhY3ktdHJ1bmsKKzQzMzA0IGIzOWMzZDdhNWFkNDUwY2RiMTZhYmViMTM5OTM2NjFlYjRmMzFkYjcgbGVnYWN5LXRydW5rCis0MzMwNSA2NDI1YTQzYmYzYzZlOWVmNThmYjM2NmFhZWY3MTNhNzUzOTdhNzY5IGxlZ2FjeS10cnVuaworNDMzMDYgNDk2MjJkNjVjMjlkMmFmMTc4MGY2NWI5NjRjMDQwY2EyMzRlODRhYyBsZWdhY3ktdHJ1bmsKKzQzMzA4IDUxZGY5OTQ4ODVlOTc4ZjM2NGE0NmU1ZjY5NWEwMDcyZjQzY2UxNjMgbGVnYWN5LXRydW5rCis0MzMwOSA5NmU0ZDUzMTI4YzllNzNlODU4MzFhMWYwM2Q5NjUyY2M5ZDlhOTI4IGxlZ2FjeS10cnVuaworNDMzMTAgYTgyZWUzMjk4ZTFhZDJiNjQyOGUwZjc3NDYyMjhmMmQ3Yjc5MWUyOSBsZWdhY3ktdHJ1bmsKKzQzMzExIGM4NDQzMDVhYThlZDFmMjJlMDgwYzVlOWViMTkxZjI5MmU2NzBjMWIgbGVnYWN5LXRydW5rCis0MzMxMiA2OWMzNThiZjZhMzQ1NmQ1MzhjZGEzMTAzMjBhYjI0MTZiNjU3ZjFmIGxlZ2FjeS10cnVuaworNDMzMTMgMmMxZmU3NjFmMDE5NDE5OTgwYjJlNTA0ZWI0ZmE5MDZhMTNjNWYwMSByZWxlYXNlMjQtbWFpbnQKKzQzMzE0IDA2ZDc2MTNhMzUyMzE5YzI5NTZmNDg1NzIwMzYwZjEwNGE4YThiMDMgbGVnYWN5LXRydW5rCis0MzMxNSA1MTUxMThjMGUzMzhiODNjYTU5OTJlZTg2OTYwYmUxNWMwZjljODE2IGxlZ2FjeS10cnVuaworNDMzMTYgYjM0NDQwNDE5YjY3OWU3ZTExMzdlMGVhYTEwNTk4ZGIwOWI2YmUyOSBsZWdhY3ktdHJ1bmsKKzQzMzE3IDMwZmFiYjg3ZmJjYzMwZmZkZjE3ZGQ2NDg4MTNjYzY3NTkzOTM1YjEgcmVsZWFzZTI0LW1haW50Cis0MzMxOCA1NGFhNWFhOGYyY2IyNmE3ZGE5M2FiMmE0Y2M1ZDc5MjRkMTg0ZDM1IGxlZ2FjeS10cnVuaworNDMzMTkgNDYxNzZmZmM4YmY1ZGRjZGZjMWNmZmQxZTU0ZTliYjVhNDQ3NDBiMSByZWxlYXNlMjQtbWFpbnQKKzQzMzIwIGUyMzRmZjhiZWFhMjAyMWIyZTEyZjQ5ZTc3NTQzOTQyZjQ4NWEzODYgbGVnYWN5LXRydW5rCis0MzMyMSBkN2E2ZWM5ZGU4ODc1NTgxM2Q5ZTI1ZmM1NDIyOGJiMDIzNmM4ODJkIGxlZ2FjeS10cnVuaworNDMzMjIgNWJiZjcyMjdhZDZlOWI5M2MzMTI1OTczZWJlZjc4ZmE1Nzc3OTQzNSBsZWdhY3ktdHJ1bmsKKzQzMzIzIGYxOTg5MGE4NmM0MzMyYzVlZDM2ZDQ1MjdlMDg5ZGE3MDdmYjc1YmIgcmVsZWFzZTI0LW1haW50Cis0MzMyNCA0MTYzNDg3NDg0NjA0NDg5YWEwZjQxZmQyYTE2MzY3ZTg4YWQyYmYyIGxlZ2FjeS10cnVuaworNDMzMjUgYzA4MThmMjFmNjVhMmRhYmFmY2Q5NTBkYmE5YTBlZWFlYzk2YzcxNCBsZWdhY3ktdHJ1bmsKKzQzMzI2IDkyMzhmMDRlZWFhNmNlODU0NDk1OWJhYjcwYmUyYzVjNzVkNjgyY2QgbGVnYWN5LXRydW5rCis0MzMyNyA4YWRkYzMxM2FiMGZjNzIwMzJhNzQxN2Y5NjllYzk4YmRhNWE3MWM5IGxlZ2FjeS10cnVuaworNDMzMjggNzk5YjQwYzRhMmM2MWJhOWExNTkwMWU3ODk0ZTQ2ZTg1MDUwMmY3NyBsZWdhY3ktdHJ1bmsKKzQzMzI5IDhkNTdkMjVlNjU0ODc5Yzg2OWRkOWZlY2U5MDlkMjc0YWEwNTcyNzIgbGVnYWN5LXRydW5rCis0MzMzMCA4ZjdjMDNhY2FkZGRiYzc2MjkyMTljN2E2OTA3ZTYyYThjNjMxNWEyIGxlZ2FjeS10cnVuaworNDMzMzEgNmUxYTg5OWNhYzhlZTZkZDIzZmFiNjZhNWU1ZTM1MmVkOWVkMjEyZiBsZWdhY3ktdHJ1bmsKKzQzMzMyIGE0ZDJmN2I4NDdiMWU4Mjg5NTgyZmMyNDQ4NGI3M2RlNTg5ZmVkNWUgbGVnYWN5LXRydW5rCis0MzMzMyA5NGY1NGVjNjJkMTQzOGIwNDMwNzYzOTdlYjliZGYwZTdiMzUzNTkxIGxlZ2FjeS10cnVuaworNDMzMzcgZTVjZmQ0YTNlNjVjNjE3MmFiZTkxMjY2NzIyMTAxZDk3NzFmYjBkNyBsZWdhY3ktdHJ1bmsKKzQzMzM4IDAwOThlNzI2NGVhYWM1NGEzZWZhZjhlMmJlMzgyMTM2YmRlYzIyOGYgbGVnYWN5LXRydW5rCis0MzMzOSAzNGYyMGFiNDRjZWZkNDkwOWFhMGZlMjViNTNjZjI4ZmNlYWIzODI5IGxlZ2FjeS10cnVuaworNDMzNDEgOWQ4YjMzYWZmNjBjMTAwZTU1MjlmYTA1YjViNjJjZGZmOTJiMTU0MiBsZWdhY3ktdHJ1bmsKKzQzMzQyIGIwNTIyNDdiMTgwOWZmZWM1NzNiOTI5NjgwN2QyMDQ2OGRmNjk1YTQgbGVnYWN5LXRydW5rCis0MzM0MyBlZTM2YzE2ZDhkMmJiMTVlOWQ0M2NkMGE4YTkxNGUyYjI4MWJjMzUzIGxlZ2FjeS10cnVuaworNDMzNDQgYzA0MWIzNjJiYjA0ZDhjZjE3NTNjNDdiYmIyNmFkZTQxNmRhODY1OCBsZWdhY3ktdHJ1bmsKKzQzMzQ1IGRjMTgzNWZiOWU3YzNiMjhhNWFjYzYxOTdlNmU3NjYyYTU0YjA4ZDQgbGVnYWN5LXRydW5rCis0MzM0NiA0MzQ1MmYxZmVhNjkzNGI5NDM4Mjk5ZWY2NDdkMjhkYTgwNmU5YjNjIGxlZ2FjeS10cnVuaworNDMzNDcgMzczZjdmZTBlNzMzZjRiYWJkMTA0NDY4MzBiYjcxYmNiNzExOGEyOCByZWxlYXNlMjQtbWFpbnQKKzQzMzQ4IDIyMzQ1ZDFlNjg1MjcwM2Q3ZjQ1ZWU4MjVhYjk5Y2Y4ZDhjODA1NGIgbGVnYWN5LXRydW5rCis0MzM0OSAyNjExMTZmNjg4OWMyYzRjN2E5NGRhYWVlYWM2M2FmMzhmOTczMDU2IGxlZ2FjeS10cnVuaworNDMzNTQgM2I2MWU0YWE3ZWRlMWE3YWMwYjI5ZjBmYTMyMjVlZDI4ZWU0ZWRhOSBsZWdhY3ktdHJ1bmsKKzQzMzU1IDZlYjliMTZkNmUyMTU4NjNkMjNhYTliYjFkOTA3NjliMTMwNTllODEgbGVnYWN5LXRydW5rCis0MzM1NiA0MWEyZDc4ZDQzYzY5N2NjYzAyODUzMWZlYjc0NWY2Nzg0MGJmZDc5IGxlZ2FjeS10cnVuaworNDMzNTcgMDQ5MDA0ZDc5ZmVmYjE4MDJiNmU1YzgyOGM1ODFiZjE0ZDAwYWNjNiBsZWdhY3ktdHJ1bmsKKzQzMzU4IDAwZTlkNTljMjNiNGUzOWEyNTUyMjk1YzMwNWNhMjY4MGJkYWExNjcgbGVnYWN5LXRydW5rCis0MzM1OSAzNTIwZjk3MTRlOGMxMDQyZDE4YTViYzYwYzE5Zjc5N2UzMGMyZGI3IGxlZ2FjeS10cnVuaworNDMzNjAgYzhmODdmMDhmZTBiZGRmMDhkMWQyNTQxMWFkZWRmMGU1MWExNzE1YyByZWxlYXNlMjQtbWFpbnQKKzQzMzYxIGMxMWZlMmUyOTg0ZDliMzc1ODk4OGM0YTI3YzE5ZGRkMGE2NWNiNGQgbGVnYWN5LXRydW5rCis0MzM2MiA1MmRlYmJjM2NjMDhhMmVhMzcwZWIyZDQ5ZWY5Nzg3MDRjMDI4OGFhIHJlbGVhc2UyNC1tYWludAorNDMzNjMgOTMzNDRkYTc2YWNkMGU1ZjQxMGEyM2ZmN2ZiZjE4Yzc0MzU3YjNjNSBsZWdhY3ktdHJ1bmsKKzQzMzY0IGE3ODE4YzI4NzQ5ZjRhYTcyNmVmMmE4MmQ3NWIxN2E5NTEyNjdjZWUgbGVnYWN5LXRydW5rCis0MzM2NSBmNGNhMDNiODcxNjBiZTZkZGQ0ZDgxMjhkZmUxNzY0MjYxMzc5ZTI0IGxlZ2FjeS10cnVuaworNDMzNjYgOTRmMTYxM2I4N2Q1YjJiYWYwOWE5OTIyN2FlMmI4MzlkNmZhNmViOSBsZWdhY3ktdHJ1bmsKKzQzMzY3IDAzNGMwY2Y1MDA3YjI4NDI0ZmViNjEyOTViZjljNGRhNjczMzQxN2YgbGVnYWN5LXRydW5rCis0MzM2OCA3YjUyNDgwYzEyYzYyYmVmYzY1ZjZkOWUzOTZlMjljODViNGFkOTlkIGxlZ2FjeS10cnVuaworNDMzNjkgYWYyNGViM2JiZmNlYjdkZWU3MWNhMDQ3OGMwMDI2NWVmZjcyYzkzNiBsZWdhY3ktdHJ1bmsKKzQzMzczIGUxMmU0OTNiNTI0NDQ1NGFmODJlN2E2MDljMjRjNGE5ZDEzZGNjOWYgbGVnYWN5LXRydW5rCis0MzM3NCBiYzUxNjFmMjkyYjc3MTMwMTkzOGE5NTZlNWY5ZjQ1YzdlYTY1MDg5IHJlbGVhc2UyNC1tYWludAorNDMzNzUgNWEzZjIyODA4N2FmZGUzYWIzNjlmMDUzMTI0YzczMmU3YTdmY2RhZSBsZWdhY3ktdHJ1bmsKKzQzMzc2IGI3NTQ0MGNiZmQzNGYxNWU5ZjVjNThlMTRjZWMyYmQ3MTI4ZjVlMmQgcmVsZWFzZTI0LW1haW50Cis0MzM3NyA2MTQ2MWVlYmQ1OGY3ZTNiYzQwY2I4MWE3ZTBiNmYwNzNmMTg0YzU3IHJlbGVhc2UyNC1tYWludAorNDMzNzggYTI4NDdiYjMyOGMwZTZlMmU1M2FiYTkxZDI0MDVhYTIzOWQ5NGJiMiByZWxlYXNlMjQtbWFpbnQKKzQzMzc5IDVkNjI1ZjU4OWYyYTdjYzdmODk0MWVlYWRlOWNhNzViMjZhNmY5MGIgbGVnYWN5LXRydW5rCis0MzM4MCBkOGRlNzUwMDI5MWRkNDU3NjFjMWZhMzE2ZjQ4MTNmMzM4YzY3NTI0IHJlbGVhc2UyNC1tYWludAorNDMzODIgYTc4MzQ4NDRkY2Y2MTAxNjhjYWRlZTMzZGEzMmVmZTM0NGIyOTFmYSBsZWdhY3ktdHJ1bmsKKzQzMzgzIGJhZGFhN2U5MWQ5YTdlNzBkYWU2MzMxNDMxYThmODc0MzhhNGYxYTEgbGVnYWN5LXRydW5rCis0MzM4NCBhMDNjOTU1ZmZlZDEwZmZlYjM2MTRkOGM5ZTRiNWYyYjZlODU1ZjMzIHJlbGVhc2UyNC1tYWludAorNDMzODUgODBjNGZjMDNmZjliN2Q2OGJmZWY2M2QxYjgzNDI1NDlhNDFlOWY4NiBsZWdhY3ktdHJ1bmsKKzQzMzg2IGRjZDQ1OWIwMzY3MDZjNzQ3MjRiZjJkNDNiOWE3NDJhMzRkZTc0Y2IgbGVnYWN5LXRydW5rCis0MzM4NyBiOTQyNjA5M2Q3ZWE2N2FkMTk5Y2U5YzE5NDMzMWZmMWY2YTJlNjdiIHJlbGVhc2UyNC1tYWludAorNDMzODkgNjNjNDQyMjY2NzA1NmI2YzFjMTFhZTZkNmU5N2E0OTc3MWY0MGEwNSByZWxlYXNlMjQtbWFpbnQKKzQzMzkwIDhjY2EyNDkyNjI2Y2U0MDhjZDU2NzExMDgxMWMwNjkyZmQxZDM3ZGQgcmVsZWFzZTI0LW1haW50Cis0MzM5MSA3NjJlNWI4ZDE4OWRhZWEwN2RmMTRlOTc3MGFiNWU4OWRhZGViOWUwIGxlZ2FjeS10cnVuaworNDMzOTMgZWZkMTQxY2JmNmNiMzc2OTQwMTA4NjA0MjBhNGI0MjQxNGMyNDVhMyBsZWdhY3ktdHJ1bmsKKzQzMzk0IGJiMWI0ODUxNjEzMTdmZWMwYTJiMjcwOTBkMGZkMTA3NTIwYTM0MDQgbGVnYWN5LXRydW5rCis0MzM5NSA0ZTFhZmYwZTIwZDE4ZmI3NDgyODBjYTNkYTdmZmE3N2QxMmQ0ODJlIGxlZ2FjeS10cnVuaworNDMzOTYgY2NiZGNmYzQwYzgxYzQ2OGI4MmQ3NTA0NjczYTIyMGZhNmEwMTE0ZiBsZWdhY3ktdHJ1bmsKKzQzMzk3IGVlNGE2MGM3MTM1NzEyN2Y3ZTU4MTQ2MjdhYmJlOWY3ZDE5MGU4MzEgbGVnYWN5LXRydW5rCis0MzM5OSA5YzY5Mzc4NTE2YWIwZmJiNTg4MmI3OGU5OTMxZTE5MDdjOWM3NWIzIGxlZ2FjeS10cnVuaworNDM0MDAgNTIwMzM3NmYxNTg5MmNiZGU5NGZhMDFlODlmNzdmODZhMjVjZDM2MiBsZWdhY3ktdHJ1bmsKKzQzNDA0IGVmODA1OWY4N2ZkMmY5MmViZDQxMTM3ODExNjc3NjU4ODgzMmUyYzcgbGVnYWN5LXRydW5rCis0MzQwNSBhMTU3ZjVhNjlkMzVjNjA5MDhlYTA2M2Y5YTdiMDlkZWE2OTI3NDE3IGxlZ2FjeS10cnVuaworNDM0MDcgYWIzZWZiY2E1YzkyMDk4NDE4Njg3NDBlOTc2NzE4OWI5NDg4YjEwNiBsZWdhY3ktdHJ1bmsKKzQzNDA4IGU0OTQ1NWU5NGJlZTI4OGYwOTRmNzkzNDkyODI0ZTM1ZGEwZDdmYmQgbGVnYWN5LXRydW5rCis0MzQwOSAxZjYxYWE0NmZlZTViM2QzMDIyODAxNDU0ZTk5YjExNDc3YTA5NmEwIGxlZ2FjeS10cnVuaworNDM0MTAgNDM3ZDI3NmM3MzJjN2JkYTc5MzVkYTgwNjI4Y2VkM2Y3ZjU2NTZmMyBsZWdhY3ktdHJ1bmsKKzQzNDExIDg5MTQyY2FkY2ZiOWU3NDc2OTEzOGNlNTc5ZWM3ZTQ3OTQ1OWVmODEgbGVnYWN5LXRydW5rCis0MzQxNCA5M2JhMTU2MTlmNWFhYzkyNzhlZjRmNDgyOTIwMGNlZjMxYWE2MWJmIHJlbGVhc2UyNC1tYWludAorNDM0MjAgNjBiZTNmMzlhNzJiZGY4NThhMTgwODRjMTk3NWRlNDc2MzNiNTVkMiByZWxlYXNlMjQtbWFpbnQKKzQzNDIxIDFjYTAxMmNlNDI3ZTMzNjRhYzUwZWI2MWY1NzQ3ZTJmZWQ1Y2FkYWIgbGVnYWN5LXRydW5rCis0MzQzNSBiODVhZDIxNjZjMDFiZTdhZDBlZTIwZTRjMzQ0MmE2M2U1MWQwYTk3IGxlZ2FjeS10cnVuaworNDM0MzYgYjhkMWE0NWEzMDU3MzI5NjM4ZWZiNDJiYjgzMmIxMWI2MTQ5NmM1MSBsZWdhY3ktdHJ1bmsKKzQzNDM3IDgxZDYxMTlkYmM2NmI1N2RhYTkzM2MwNDBhMDI5OGRmZDAxMzM4NjAgcmVsZWFzZTI0LW1haW50Cis0MzQzOCBlZmIwOWRiYWE0MGU2N2RiOTk2MmQ0YWRkNWMwZDc5MDYxNWQwNTM5IGxlZ2FjeS10cnVuaworNDM0MzkgYWNjZTA0MGUwYTFhYWJiMGNiZjQwMDIwYzdlYWFhNTI3ZDcwZGU5YSBsZWdhY3ktdHJ1bmsKKzQzNDQxIDQ0ZTZmYzhkMDJlMWMxZmM4Zjc5MjBmMGM4MTE3MDljNGM4ODJlMjAgbGVnYWN5LXRydW5rCis0MzQ0MyAyNDM0N2U0NjU2YTRmZDI1ZDNiMWVmMjA0ODNjODJmN2EzYThjYmI2IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDQgZTllODA5OGY2NTcyNDhlNjFiM2E4MjRhMTgwMWNmOTA2NjgyNTEwOCBsZWdhY3ktdHJ1bmsKKzQzNDQ1IGYyODRlODU0ZmU3MmVjNDdjMzBhNTY4ZDQwZjhkNWRkOWM0NTgxZTMgbGVnYWN5LXRydW5rCis0MzQ0NiBlMTU2YzU4MTRmY2NiYzUwNjVhZTQzZTEzYzhjZDRmMmIwZWI2MDIwIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NDcgMDhiZjExMjJjMTQ0MGYyNzViM2FjZDBmOWJlZjQ0MzE1NWNkYmFhNyBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDQ4IGZiN2I1MmM0MTE2YzM2M2ZmOTEyMjI3YTMzZjY2ZWQxMGEyOWI4MzkgbGVnYWN5LXRydW5rCis0MzQ0OSAxMzNkNGJiNjFiYWIyZjNhMTEzOTBmMDQ0NGRkM2MzMDNmZjM1ZTAxIHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTAgOTU1YTg2ZjhhMTQwYzAyNjgwZDE5MGRmNGEyZDVhMWU5ZjU0YzNjYiBzcWxpdGUtaW50ZWdyYXRpb24KKzQzNDUxIDc4Y2FjMjBmOTY0MmQ3MmQ2MTBjMmM0YWRkNmZiMDMxNjZiYWRkOWIgc3FsaXRlLWludGVncmF0aW9uCis0MzQ1MiA2OTE4Nzc5OWE5ZjZiZTdkZjgwZjYyYzViNWU5Y2M5MjE3ZmJiNjgzIGxlZ2FjeS10cnVuaworNDM0NTMgNzlhMGYwODBmODk4YzI1NGJjYTk5OWI5ZDNjMzM3M2QxYzg5ZjRiYSBsZWdhY3ktdHJ1bmsKKzQzNDU0IDVlMWI2ZjU1Mzc2MzEzYzVhYzViYThhMjVlNDEyYmM2MDg3N2M2NmIgbGVnYWN5LXRydW5rCis0MzQ1NSA4NDk2N2ExOTYyY2JiMmE1Yzc0MjdhM2VhNDRhN2Y1MzI1M2NkMjU3IHNxbGl0ZS1pbnRlZ3JhdGlvbgorNDM0NTYgY2U1NmM1ZTNjYjIwNTBlYWVkMGFhZjQ1MWU4MmIxY2Y4OGVjODY1NSBsZWdhY3ktdHJ1bmsKKzQzNDU3IGU1OGE3MWE4NTUwZTdjOTM3YjYyMGFkYzM4OGNkYTVjNzFjMmZlNGUgbGVnYWN5LXRydW5rCis0MzQ1OCBhYWEwNGJmYWZjNTg1NWExZmQ1ZjQ0NzMzNDVhZGRjYTYxNjJjMDQyIGxlZ2FjeS10cnVuaworNDM0NTkgMjM1ZjYzNWFjNDVhMDQ4NzBiZGE4ODgwOTJkZDQ2ODExN2QyZGI3YSBwM3lrCis0MzQ2MCAzNjE5MGQ3ZmQ4YWIyZWFhYzk4YTY0NWMzMTAxMmYzZjY0MDdmYTUwIGxlZ2FjeS10cnVuaworNDM0NjEgMDg5OWE4MDRhNTk0Y2NmOTI4YmJlNjkyZTU5ODMxZTdmZTljZWU1ZCBsZWdhY3ktdHJ1bmsKKzQzNDYyIDYxNDUyYmQxMjVlNWUxMDZhZDk0NmExODI1OTJlMzNmNDBkZmY4MzkgbGVnYWN5LXRydW5rCis0MzQ2MyAyMjhlMjVjOTNhOTc5M2I2ODk1Y2M0MzZjMzRlZDIxOTYyYzdhNmQwIGxlZ2FjeS10cnVuaworNDM0NjQgYzcyYmM4NDcwZjZjOWViODI0ZjdjOTA1OTg2NGExMjljNzYwMjY1NSBsZWdhY3ktdHJ1bmsKKzQzNDY1IDE5MDU5ZGY0NWNmZTkwMmYwZTA5MDk4NjFkMWQzOTYxOTUwY2U1NGIgbGVnYWN5LXRydW5rCis0MzQ2NiAwNDk2MDY5MzMzMjhlODkwODIxZTEzMzI5MGJjOTk3NGQ1MzU3MDQ2IGxlZ2FjeS10cnVuaworNDM0NjcgZjVlNzkyYTkzYzQzMWE0ZGIwZmZmNTU1NjhiOGI4MDJlZTEwOTkyZSBsZWdhY3ktdHJ1bmsKKzQzNDY4IDk4ZjVjOTE4YTI0YWNiOTMxZTFmNzdiZWJmMzA4NDM5MDZmNDQ1NjkgbGVnYWN5LXRydW5rCis0MzQ2OSAyMDJmZTRhYWZjYmIyYzA4MjMwY2E5OTZiYmMzMWE0ZWU3ZWUwYzEyIGxlZ2FjeS10cnVuaworNDM0NzAgZDE5OTNlZThhYzQxMWQxZmMxMjE3NmRiNDI4Y2QwMmEwZmFlOGQ1YSBsZWdhY3ktdHJ1bmsKKzQzNDcxIGNiMjY0NWE1NTRkODgyYWY3YTJiN2FmZDJjYmUxMjczZTU4ODhjMWUgc3FsaXRlLWludGVncmF0aW9uCis0MzQ3MiAwZDNlNWFjMDcyYjJhMTdiNDllMzczMDI1MDU5MGFjYTgzNzYzZGE5IGxlZ2FjeS10cnVuaworNDM0NzMgMzJlNzY3Njk5MDAxNGJkMWE5NTQxMzk3NTU3YzFjYTRhZmI2MjBjNiBsZWdhY3ktdHJ1bmsKKzQzNDc0IDE2NGY5NWU4ZTBjY2I1MDY4ZGVjZDIwZDVhY2VhMDBhYWZmN2VkYzMgbGVnYWN5LXRydW5rCis0MzQ3NiBjNDk4OGFjNTg5OTk3OTBlNTFmZjQzYWVhNjQ2ODY3YjEwOWMyNzg4IGxlZ2FjeS10cnVuaworNDM0NzcgZDY1YTljOWM4YTdhMmVhMzcxNzM0NmE0YzRmMWFjZjAzYjZlY2NmMSBsZWdhY3ktdHJ1bmsKKzQzNDc4IDU5OTEyYjQ4MTJlNmFkODVlZTRjNjc1MWNiZWU3MzJlMGE2Njg1ODYgcmVsZWFzZTI0LW1haW50Cis0MzQ3OSBmYjdkODk1YTg4OTdmNTNlMzZlODg0YjNjNGM5NDg3NTYzYmRkOWY5IGxlZ2FjeS10cnVuaworNDM0ODAgODY2ZGE3ZjMwZTU2ODYwYTYxMTg2YzgwYTZlMTVjYTFiOThlNGUxMCBsZWdhY3ktdHJ1bmsKKzQzNDgxIDY3MTkyZGEzZTY5Yzk4NWJiMTI3MmRhOTMyZDdkZTYwNzMwMzNmYWQgbGVnYWN5LXRydW5rCis0MzQ4MiBjNzcxMTVkZGRiZTE2ZGY1MmZiZjY4MjI0OWRmYTJhM2JjNWI1NTg4IGxlZ2FjeS10cnVuaworNDM0ODMgYWFjMDA1ZThiYjgwMDc5MDNlZDJlNTBlNzFmNTlmYjk4OWQ1NjAwNiBsZWdhY3ktdHJ1bmsKKzQzNDg0IGI4MGI1Zjg0YWU1NGYyZDQ1MjMxNWNmNjg4YmU0MTc3NGMwN2NiM2UgbGVnYWN5LXRydW5rCis0MzQ4NSBhN2VjNzhmOGQwODY2ZTY4ODJmODhkNThmMDNiZjgwMGYxYTZjYzk0IGxlZ2FjeS10cnVuaworNDM0ODYgYTQ5NTBlYTU1NmI1MzQzOWI5NTgxNzJhYmY5YjkxNmIwNzBjNDZlNCBsZWdhY3ktdHJ1bmsKKzQzNDg3IDc1ZjllYjAxMTIyNmUxZjNlZjdhZTFjNTZhYTYwYTYxMWZmMDkwYWUgbGVnYWN5LXRydW5rCis0MzQ4OCA2YzZiMjAwNDQzZTM2YzdiNDRlMDkxNjFjZGM3YjI4NTVlNTYxNTEwIGxlZ2FjeS10cnVuaworNDM0ODkgYzlhNjI3Mzc3NWI1MDNjNDFmNmRiYzZkNWY3YzRjNDAyNzgzOGVjNiBsZWdhY3ktdHJ1bmsKKzQzNDkwIGRhNzcwNjU5Zjc3Yjg0MmYxMmFlNGY2ZTBmOGViMmM0NmU2NzBiNmQgbGVnYWN5LXRydW5rCis0MzQ5MSA2ZmVmOTU3NzEyYjkwNmNmM2NkMjQ2MGY5MTQwNmJmZWEwMmQ2Y2NkIGxlZ2FjeS10cnVuaworNDM0OTIgYTYxZDNhZmRmYzRiNDkzYzk4MzA0ZDc3ZjQ2ZjFiOTI1ZmEyYWNlZiByZWxlYXNlMjQtbWFpbnQKKzQzNDkzIGYzMzAwNDhkOGJkZjgyMDI0MTRhMzM2NGNhZDI0ZjE5NTEyMGU2ZWUgbGVnYWN5LXRydW5rCis0MzQ5NCBkNjEwZmNkYjg5ZjdlYmIxYmY4MDlmNTIyMjBhNWJjYjZhZjk5OTlhIHJlbGVhc2UyNC1tYWludAorNDM0OTUgZmUzYjkzYzIyNDgxNGYzNjBlYjYwYjM1YjEwZDFjOThiNmQyYzhmMSBsZWdhY3ktdHJ1bmsKKzQzNDk2IGM2Y2YxMWFjYjQxZmIzMGJlODQ0ZjM3ZTRhNTNhZjljY2FkMGEyNDYgbGVnYWN5LXRydW5rCis0MzQ5NyBlNjBjOGI5YjJiNGYzZWRlZDVjOTBjMDMxZWFmMzBlMWVlMWJiN2UwIGxlZ2FjeS10cnVuaworNDM0OTggY2MzNWQzYTg3OWFkNDk0Y2UzMTU4ZmMyYmI2NTRkYWYxMjJhYmI0NSBsZWdhY3ktdHJ1bmsKKzQzNDk5IDM4NTBhNDQzNDgzYTFmYTJjZmNkYzA1Y2M4ZTNmNDUxNjY5ODJjMmMgbGVnYWN5LXRydW5rCis0MzUwMCAzNzA0MDQ1OWJmMmU0MWE4NDUwODFhZjc5YmZhMWJjODYzN2UzMWQ4IHJlbGVhc2UyNC1tYWludAorNDM1MDEgYTI0Y2JmOTRiYjhlMGNkNDU4MzUyODZjMmU0NzM5ZWFhZjUzODU3NyBsZWdhY3ktdHJ1bmsKKzQzNTAyIGJmNjY0YTE2MGZjMGFkYzc0M2NkZWI4Y2Q4YTk0ZTk5NDRmZmJkNWUgcmVsZWFzZTI0LW1haW50Cis0MzUwMyAyOTE0ZTdiNGQyNWE0MDA3MGZiNWE4MGUzZjhhZjljZjg2MzdlMmE5IGxlZ2FjeS10cnVuaworNDM1MDQgNDM2YjAzZmZhOGEyNDhmZDYyNjExY2NkZDk2ZWMxNDRjMTllNDQ1MiBsZWdhY3ktdHJ1bmsKKzQzNTA1IDRhOGVmNzBkZTIxMmU0MmMyY2VhMTlmYjY2Njg2YzJjMzAyZTdlYmUgcmVsZWFzZTI0LW1haW50Cis0MzUwNiAwMTZkM2QyM2ZmNTJkYzRkYmYwYzQxMzQ0NWFmMGIxNzIyZGM3ZTkwIGxlZ2FjeS10cnVuaworNDM1MDcgYTdmOGIwYmU1OTdlNTczODRmMWVmMWYxYTkzMjE1MjFjYzRmYmIyZiByZWxlYXNlMjQtbWFpbnQKKzQzNTA4IDQ3ZmJiYTg0OWE2YzgxOTczMDg4YTRmOTRiYjE5ZGE1NzUxYmUyMGEgbGVnYWN5LXRydW5rCis0MzUwOSA4NjcwYTI3MDFhMGY5NmYyYjg2ZDU5NWFhMjYxNWE0YmI5ODBjZjUzIHJlbGVhc2UyNC1tYWludAorNDM1MTAgZmFiNjcyYzNkZGU2NTg3NDMyNTk3Y2NlMDlmODVmZWRmM2EwZTQ4NCBsZWdhY3ktdHJ1bmsKKzQzNTExIDQ2MmM5ZDJhMDdiYjM3Y2EyODZjYjJjNDZmNDUyOTFmMDRlZWYwNTcgcmVsZWFzZTI0LW1haW50Cis0MzUxMiA5ODI1MTc4MDIzNmQ3ZjQ0YWI0YjAyOWEwMGMzMjhiNzczZWQxMWQ5IGxlZ2FjeS10cnVuaworNDM1MTMgZjA1YmQ5OGQ5MzVkNTZmNWVjMThiNTU1YTA1NjgzYWMxNDliNWZjMiByZWxlYXNlMjQtbWFpbnQKKzQzNTE0IGU1NDYyNzRkNjUwM2VhMjIxMzQ1ODBiNTc2ODA3YjFiM2ZiMjQ5NTQgbGVnYWN5LXRydW5rCis0MzUxNSA1OTE4NWZmYTg2MWRhMGYxNjBlM2E5YzI2MGRmMjVmNDVjMTc1MmY0IGxlZ2FjeS10cnVuaworNDM1MTYgYjQ3ZDgyMTllY2Q2MWZkYWY5MDY3ODc2MGU4MzMyMjBmZGQzNDUzNSBsZWdhY3ktdHJ1bmsKKzQzNTE3IDM1Y2Y5MTI5NzY5M2VmMDRmZmY2YTQ0ZDUyMDQ5NjY4ZmIyN2QzMjIgcmVsZWFzZTI0LW1haW50Cis0MzUxOCBiODIzZjVmZTk4MGNjMzlmMGI4NDUxMjExMTRmY2VmODI0OTEwMGZiIGxlZ2FjeS10cnVuaworNDM1MTkgYTUzM2Q1YjVkYjg0MDE0ZTczODVhMmIzMjE5NDczMmI1Y2Y4Mzc4MSByZWxlYXNlMjQtbWFpbnQKKzQzNTIwIDA1OTE0ZThkZWQ3M2VkYjk5ZWFhMzRmYWNkMjMzNGY1MDNiODk3MmUgbGVnYWN5LXRydW5rCis0MzUyMSA4NThhZTk1NGYwNTU4NzY0NzMzNzlmOTg3NmE4NjI4ZDZmYjJiYzFhIGxlZ2FjeS10cnVuaworNDM1MjIgODcwZDU2YTNhMjBiZTQ4NWE2Y2YyYzA3YWQxZjc0ZDAwNTc3MWE2NiByZWxlYXNlMjQtbWFpbnQKKzQzNTIzIDQ5MjA0NDAzNGE4N2JiYjRlYTQ1ZDk1YzdiYWJjMjZmNTM4ZmZlYTAgbGVnYWN5LXRydW5rCis0MzUyNCA0MjMxMmU1ZjExZmQxMTViMzA4MjI1MWJlMWM1MjIzNTlkYzcxMmYyIHJlbGVhc2UyNC1tYWludAorNDM1MjUgZjY0ODEyYjJiNWMxY2I0ZDE5NjkyY2E4MjZhMzI1NDgwNzUwYmJmNyBsZWdhY3ktdHJ1bmsKKzQzNTI2IGIwNjhhZWUxZGZiNWIzNTYyNGUwMThjZTEyZWQ4NDRhM2FlY2FmZjAgcmVsZWFzZTI0LW1haW50Cis0MzUyNyA2ZjA4NjNiZWRjZWEzMmQxY2YzM2RkNGE4MmM3YThmY2U2YzFmYTBiIGxlZ2FjeS10cnVuaworNDM1MjggYjA5ODFmMGMxOGZlYjZlYzNlN2Y2MWU2Mjc0NTRjMDFlZjYxODhmYiByZWxlYXNlMjQtbWFpbnQKKzQzNTI5IDhkMDU3OWQyYjY2Mjc5MmEzZTkwNWQwM2E2MzFiMzc1MGVhZjFiOWIgbGVnYWN5LXRydW5rCis0MzUzMCA4MjNjNDhkNjg3MWVjNzkzYWYzYWI1ODRiMjAyYWI1Zjk5MWQ0YmI2IHJlbGVhc2UyNC1tYWludAorNDM1MzEgMmNjZTliY2RjOWY2NDU5NWJhNTFjYThlZmE4NzJlM2U2OTMzMTFkMiBsZWdhY3ktdHJ1bmsKKzQzNTMyIDVmMzU3ZTYwY2RkZWE1OWNmMTUxZGIwOTI3MjcxZTZjMzVkODQ2MWYgbGVnYWN5LXRydW5rCis0MzUzMyA5MWU5ZmI1Y2ZlMTQyNTViMzk2MzhkZTc3ZGYxYjBmNDJlM2E4YzM3IGxlZ2FjeS10cnVuaworNDM1MzQgODM5ODgzNTRiNjRkOWE4OGJmYWVjMzA0NjFjNTlkNzRjZGQ5ZDYxZiBsZWdhY3ktdHJ1bmsKKzQzNTM1IGI3MzE3NGFmMjZhOWI1ZDdlYTkzZjBmYmY4ODJmMDJmZjgxM2RlOTcgcmVsZWFzZTI0LW1haW50Cis0MzUzNiBmYWI0NjkzNjFiYmMwZTRiOTk4YjVkZTEyYjFkMGQ2NTBkYTEwY2RjIGxlZ2FjeS10cnVuaworNDM1MzcgYWNlNjdlM2JjYTY4MzJlMTRiYTRlYWM1YTVkZGJiMGJhYTc3NGVmZCByZWxlYXNlMjQtbWFpbnQKKzQzNTM4IDNhODFkY2VhYTlhOGJlNDEzYTdlZjdlOGMzMzFiMzI3NzUyYjVlNTUgbGVnYWN5LXRydW5rCis0MzUzOSA0YWI4ZWM5ZTU5ZGZhZjM0OTFjMzQwNTE1NGZmZTVjMWFiODgwNGM0IGxlZ2FjeS10cnVuaworNDM1NDAgMGU0YjNjYWQ4OWZlNmMyMjZmMGFiMzU2NzZjMjExOGI5NDgxNTU1MiBsZWdhY3ktdHJ1bmsKKzQzNTQyIDNkNGEzZjRmYzk4ZThiMWZhZWE0M2UxZjA2N2NlNmZjMTA4MTRjYzIgbGVnYWN5LXRydW5rCis0MzU0MyA1ZTFjZjIxZDRhYjIzMTkwZWE1M2RhNTlmYTYxNzJhNmI0NDAxNTI2IGxlZ2FjeS10cnVuaworNDM1NDQgNGI2NWFiNDFjNzcxN2ZkNWVhZDM0NjBkODFmNjIyZTM1N2I0Y2I0NiBsZWdhY3ktdHJ1bmsKKzQzNTQ1IGZlOTdjMDAxNmQ0YjEzZmZiNzU3ZjhkOTJjZTQxYjU0MTVkODdkNmYgbGVnYWN5LXRydW5rCis0MzU0NiBhNmJjZTdhZWJlMDViY2ZkM2ExMTNhNjUwMzc5YTYyYmQ5ZGI0YjhhIGxlZ2FjeS10cnVuaworNDM1NDcgNGEyMDZmY2U1ZmU3YTg0MjhkOWFiM2Q0MzcwYjVjMmUzYzhhNzAwNiBsZWdhY3ktdHJ1bmsKKzQzNTQ4IDVhNmM3ZDZkZWYwYzljZTU1YzBlNjg1ZGRlNzkyZmE1MTM4M2QwMDkgbGVnYWN5LXRydW5rCis0MzU0OSAzYWEwYTQ4Mjc4ODhiMjQ0NGU5MGYxMWJjZjdiYTY5ZDBkNTAyMGZlIGxlZ2FjeS10cnVuaworNDM1NTAgODA2OGMyMmMzNzI0ZTZjZmUzNDA4NDlmNGU3MjY5NmQ3ZDU0OGI2YyBsZWdhY3ktdHJ1bmsKKzQzNTUxIDUzZWY2YzM3NzI3MWRmOGRjOGRiM2E1NDhlMDM0Y2I3ZTEwMmYxMzkgcmVsZWFzZTI0LW1haW50Cis0MzU1MiBmNGQ4OGNmYWVjNjBhYzUyMGU3NmQyMmE1MjQwODIxNTlkNjVlMWMyIGxlZ2FjeS10cnVuaworNDM1NTMgNDgzNzcyMmE2MGYwM2Q5NjU2ZmE4ZTA0NzRlNzA2N2VhZTZmZjk5MiBsZWdhY3ktdHJ1bmsKKzQzNTU0IGNmMTBmMjQ0MzU0MmY2ZDJiZTRlNmQ5NzQ1YzRjZTdlNzg1ZmM2OWUgbGVnYWN5LXRydW5rCis0MzU1NSAyY2YzYjVjNDUxZDc0NWIzNTVjM2IyY2E2YmExODIxZWRhYjcyODU3IGxlZ2FjeS10cnVuaworNDM1NTYgMjYwZWUzOTFmOTA4ZjIzZTJlZTY5NzA2Mjc0YzljMzE1YWNlYzg0OSBsZWdhY3ktdHJ1bmsKKzQzNTU3IGEwNjY4NWYwODg4NjdmYTdiYWM3Yjg3YmNjODMwMzU2NDNiZWNlNTggbGVnYWN5LXRydW5rCis0MzU1OCBlOTU1Mjg0Y2Q2OTQwMmRhYjI1ODc3NjNlYzFmMGZlMjFmMzcxZTBmIGxlZ2FjeS10cnVuaworNDM1NTkgODViMjZmNGZhMmE1MDRmZGI1MzRjOWE1MTI2ODY5ZWIwMmI3NjM5YyBsZWdhY3ktdHJ1bmsKKzQzNTYwIDI4MzRjY2Y1NTJmMzdmNjdjZTdhYWRiZTg2MjlmN2NlNDQ4ZmE0MjcgbGVnYWN5LXRydW5rCis0MzU2MSBhNjBhOTQ0M2U4ZGFkOWUyZmQwODg2NGNmOGJhZWFkYmIyYTI0OTg4IGxlZ2FjeS10cnVuaworNDM1NjIgOWMyYTQ2MmQ2NmJiNzNhYWM4YTg0MmQ2MWFlOTUzMDgyZGQ0Yzg2NiBsZWdhY3ktdHJ1bmsKKzQzNTYzIDQwMjBjZjZjMzgzZTA2MDZlNjg1YTQ5NWNiYjBmMDJiOTU4MjE5MmUgbGVnYWN5LXRydW5rCis0MzU2NCBlYTlhMDNiOGI5ZjZiMWVlNjBjZjM1ZjUyMTRlMDYzYTZiMDQyMmIxIGxlZ2FjeS10cnVuaworNDM1NjUgZGZjMzNlYzdmNzNhODVmZWFiMDgyOTA4Y2ExYTgwNzlhZmY4OGMyMyBsZWdhY3ktdHJ1bmsKKzQzNTY2IDc4MjYwNDlhY2I0YjFkM2FjMTEyYzhiNWY3YjBjMjIzOGY1Y2FlZGQgbGVnYWN5LXRydW5rCis0MzU2NyA1MDFmZGE1MTFiMGFiZDRkN2RhZDdmNmYyMzRmOTJmNjQ5NGE0YmI3IGxlZ2FjeS10cnVuaworNDM1NjggMDliOGU1YTEyMTQ2Y2M5OGY5OTczMzhmYzhiNDVhMzAzMDg5MTkzZCBsZWdhY3ktdHJ1bmsKKzQzNTY5IDU0NmI2MzE5MjQwMDYyZTllNjRhN2JhYzJjOTE4ZDcyZDYyZjAyMjkgbGVnYWN5LXRydW5rCis0MzU3MCAxMDA0MGQxODdjMjEwNGY1OGZiYmQ0YjQ2ZmQzNTIwYThhMWVkYTMyIHJlbGVhc2UyNC1tYWludAorNDM1NzIgY2VhNTRjOWQ5MjFkNTdhOThlNDk0ZTNiM2YxZjRiZWRiNDc2NzRiZiBsZWdhY3ktdHJ1bmsKKzQzNTc0IGU4MmFhODA0MTgyMWEzNTkzMzA1MWE3MTVjMmRmMDgxYTVlZmUyYzEgbGVnYWN5LXRydW5rCis0MzU3NSBhMzQ4MTg3MTEzMmNlNjU1YzE0NDc0MjI1NWM3ZmQ4NGQyN2JkN2UwIGxlZ2FjeS10cnVuaworNDM1NzggNzk4NmE1YjEzMWVkMmMwN2Q0OTgyMTcxYTIwMDczYzFmZWZmZjllYiBsZWdhY3ktdHJ1bmsKKzQzNTc5IGU5NTZlMTZlNzQ0NGZiMjRiYzhmZDE0MjY3ZGRhNmFlYTUzZTViNGQgbGVnYWN5LXRydW5rCis0MzU4MSA1N2IxZmYxMzg5OTVlODcwMTlhNTVkNWRjNTNkNGU3YmZmMjA2NDQ1IGxlZ2FjeS10cnVuaworNDM1ODIgM2VlYTY1YmI4OTZlZGMwNjNmMjdhYmYwNTQ4Njc5OWVmYjc0NWE4ZiBsZWdhY3ktdHJ1bmsKKzQzNTgzIDUxMzNiNWIwYjRhODQ1OGRkNWU4NTk3NTBiYTQ1MTc2ZGZmOWYxNTkgbGVnYWN5LXRydW5rCis0MzU4NCBlMTQyNTVkZjdmZDE2MWU4ODBiNDU3YWFmZDZmOWI5MDA5YTljY2M1IGxlZ2FjeS10cnVuaworNDM1ODUgOTJhMTdhMjgyMWUwNGUxNjliYWMxNDU5ODIyMTA4ZGMwMGQ4MTBkNiByZWxlYXNlMjQtbWFpbnQKKzQzNTg2IGViNjlkMmUzMTM0Y2ViMGE1M2Q0NmYyYjk3MmU3YTYyYTE4YTUwNjQgbGVnYWN5LXRydW5rCis0MzU4NyBlODE0YWQ5NzBmYzZhOTE2NWQwNWY0MTM4YTMyNGZmZjE5MmJkNDM0IGxlZ2FjeS10cnVuaworNDM1ODggZmJjNjJkYjk3ZTQzOWM1YmZmMTUyMTVkYjY4Mjg0YjQ0ZWM3YTY1ZCBsZWdhY3ktdHJ1bmsKKzQzNTg5IGE4Y2Q5MDVmZDk2Y2QzZWFkMmVlM2I0YjUzN2Q1NTJjYzg5Yzg4MmIgbGVnYWN5LXRydW5rCis0MzU5MCA3OTZhY2RlNzAxOTU0MTFmMTMwNmMxZjExZWExOGUxMmRhMzUxNGJhIGxlZ2FjeS10cnVuaworNDM1OTEgYmRiZTA3ZDk2YjhlZjRkYjM1Y2ExYTQ3YjExYzNjZjM5NWY2NDJhYSBsZWdhY3ktdHJ1bmsKKzQzNTkyIDAxZmQwOTNiODc4Y2M3NzAyM2Y0NWE2ZDIzMzkyYzEwOTcyYTBmMmYgbGVnYWN5LXRydW5rCis0MzU5MyBiYmUxY2RjOTI2MDUxYWQ4MjhjODA0NWUzMGMwM2RiZWJhZWEyZTZhIGxlZ2FjeS10cnVuaworNDM1OTQgMTE1NDI4YmIxZDNmNjQ1YmU4Zjg4NzgwZGVjNTk1NmVhNmZmNTIyNyBsZWdhY3ktdHJ1bmsKKzQzNTk1IDVjYzZkNzE1MzdhMzFhOTVmM2QzOTBiMWE2NzM3ZGQwNDRmZDJiYTYgbGVnYWN5LXRydW5rCis0MzU5NiA2ZDUwZmQzNjRjZjVjYjU5NmQzZjBkNDJlN2M1NjkxNzg1MTg1YmQ5IGxlZ2FjeS10cnVuaworNDM1OTcgZTQ1N2IyNGY5OGM1MWY3M2Y4MDY5ZWYxYjRmMjkyODczYWJjN2Y4YiByZWxlYXNlMjQtbWFpbnQKKzQzNTk4IDM1YzRiMDkzM2E4YjdlNTlkMTY0YmJiNDNhNWQzZTdhNjUxOTY3YjAgcmVsZWFzZTI0LW1haW50Cis0MzU5OSBmNWFkM2M3ZWMyY2JmNDUzYmZlNWI4YTIyOWI5NWYzOGM2M2FkMzFkIHJlbGVhc2UyNC1tYWludAorNDM2MDAgYmM5ZDUzYzAwZGFkNmMzNjMwMTA0NzhkZDMwNDE2MDJkNWExYjMxNSBsZWdhY3ktdHJ1bmsKKzQzNjAxIGUyYjNhN2Q5YWNhOTE4YWQ1YzUyNjI3MjI1ZjlmNmY3NWFiOTViNzMgcmVsZWFzZTI0LW1haW50Cis0MzYwNCAxMDQ5ZTlhZWIzODUwOWZlZWUxZGE1M2JhMGQxYmVkYzQ4MmIxZTY5IGxlZ2FjeS10cnVuaworNDM2MDYgYTM4MzAzNzdlMWE3OTYyMTljMTI0YmZkY2YyOTBiZTMzMDEyNTFjYiBsZWdhY3ktdHJ1bmsKKzQzNjA3IDJjZDFlNWIxNWUwNTBkZTNiZDZlNGEzY2E3YzM2NWIyYTZlNjMzYWQgbGVnYWN5LXRydW5rCis0MzYwOCAyOWEwNmEyZjNmMmQ4ZjI1ODM3YzY3ODA1ZDEwZTBmMjlkZDk0MDY0IGxlZ2FjeS10cnVuaworNDM2MDkgNjBiZWQ2NDFiNmQwMzMwMDQ0NTNmOGI3Njk0MmNlZDQxMGYzOWMyNSBsZWdhY3ktdHJ1bmsKKzQzNjEwIDVhYTNjZWY0YThhN2I0OTIyYWM4M2I5YTQ1M2Q1YWFmMDdiODEyZGQgbGVnYWN5LXRydW5rCis0MzYxMSA2ZGJlYTkxMWU4ODEwYTRhMjUzMjVhNjZhODA0ZmFkOWM2MWRlZmI3IGxlZ2FjeS10cnVuaworNDM2MTIgMGYzYjdhZmExODdhZTY2YmRjMTc2MGQwZmVlZGJiZGFjODIzNmQ4ZiByZWxlYXNlMjQtbWFpbnQKKzQzNjEzIDQ5ZGJlZGZiMWQ3NDgzMGU2YTE1NTk5MTczNmQ5ZjMzYzFhNGU5NGIgbGVnYWN5LXRydW5rCis0MzYxNCAxNmE2NGUzOTQ2MDIyZmI4YjMxZjZhYzUyNDJhYmFhZWU5Y2U5ZTJhIGxlZ2FjeS10cnVuaworNDM2MTUgZWZmNmM1MzQ4M2ZmMzlhMzI2NDYzZDQ3MDk5ZDYzM2Y2MjNlYzIyNiBsZWdhY3ktdHJ1bmsKKzQzNjE2IDA3ZTQ0ZmQwNmNmNzYzOWU3ODUxOTUyY2M3ZTk3MmRmZmE2NzhjZGUgbGVnYWN5LXRydW5rCis0MzYxNyAyZjU3ZGE5MjFhZWY3YzFlYTY3OTljNzk5YTcyZTU0YWM1NzhiNWNjIGxlZ2FjeS10cnVuaworNDM2MTggZGNjZTgxYjdlNjRkMDNjODU1NDE5YzIyMDdmNDFmN2M5ZjdjMTRmZSByZWxlYXNlMjQtbWFpbnQKKzQzNjIwIGQyNzA1OGM0MDlkZjNjNjk1Y2RjNTA3Mzk5NzMwZDZkY2VkMDU4OTQgbGVnYWN5LXRydW5rCis0MzYyMiBjMWNlZjFkMmRjY2Y0Yjk4NDFmNmQwZTQ0ODcwN2M3YTM1ZjI1YWY1IGxlZ2FjeS10cnVuaworNDM2MjMgZDI2OTdjNTJjY2FlNTliOTJiMDBiNzNhZWVhYTA2MmJiYjkwMTUzZSBsZWdhY3ktdHJ1bmsKKzQzNjI0IDZhYjE1ZmM4NWMyZDBjNjhjNzdjYzY5NWY4N2NkMjZiY2RlOWI3ZmMgbGVnYWN5LXRydW5rCis0MzYyNiBiNjAzMzA3MjkyZmM3NGFlODZhZjZhNTU4ZWUxMDQzN2FkYzhhM2M1IGxlZ2FjeS10cnVuaworNDM2MjcgYWRkMDA3ODcwYmJkYWQzOTA5MjFkOTIwYTY0ZDNkMmEyNTgyNjc5MCBsZWdhY3ktdHJ1bmsKKzQzNjI4IGQzNDUxNjU4ODI3MmFlZTFjODNiOThlNGRiNTQzYmZhODlmY2RhNzkgbGVnYWN5LXRydW5rCis0MzYyOSAyYzM4ZWU0YmRkOGFiMjk1ZTQ5OWFiNTMzNzQ0YjJlY2NjYzFjZGMzIGxlZ2FjeS10cnVuaworNDM2MzAgYzExNWIzYWUxYzE4NzlhM2IwMGJlZDBlNTdiYjdhZWM5NzEwNGE2ZiBsZWdhY3ktdHJ1bmsKKzQzNjMxIDFmMTA5YTQ5NTNjNjlhMjM5MTY5MTE0NGY2NjhiMTFlYjdmOTBlZmUgbGVnYWN5LXRydW5rCis0MzYzMiAwNGFmYjM2NTA4NDc2MGVhY2VhNmRkOGFkY2ZhMjgyN2ZhMDRmYjY0IGxlZ2FjeS10cnVuaworNDM2MzMgYTE3YjUyOTRlOTkzY2E5NmZjMTAxY2U1Yjk4ZGY5OWM5MjIxMzA0NyBsZWdhY3ktdHJ1bmsKKzQzNjM0IDllY2JjZTU1YTQ1NDY1ZDhhMDRiYmU0ZGU5NDA3ZjkyNzI2ZWI3N2IgbGVnYWN5LXRydW5rCis0MzYzNSA4ZWZkZWYyZWNmM2IxOTU4NWQxMjViYmQwMzIyNmQ2NDA5MWY3OWIxIGxlZ2FjeS10cnVuaworNDM2MzYgZjhmYzMwYzBmYzdjMzQ1MjE5M2ExZjhjM2YzYjFlOWI4YTg2Yjc3OSBsZWdhY3ktdHJ1bmsKKzQzNjM4IDIwZmZjMmNhMDNlMGNhNTFiYWY4OTY2MGQ4ZmI5YzNlNjk2NjIwMTEgbGVnYWN5LXRydW5rCis0MzYzOSA2MjU2N2JiZTdkODhkYTU4YjAxNGU5MDM5YzBjYmVjNDczZTdmODA1IGxlZ2FjeS10cnVuaworNDM2NDAgNThiOGQyOTgyMTQ0Zjg4ZDM2NWNiNDk5MmRiOWFhZmE5NDQ2MzY2MCBsZWdhY3ktdHJ1bmsKKzQzNjQxIGU2NTgyOTA1ZWViYTZiNTZiYzdmMjVhM2FkYjg2NDE0ODg4YWI3MjggbGVnYWN5LXRydW5rCis0MzY0MiA5MDNlMzE2MjA5OWUyOTBmODhiMWJlNTE3MTg4ZTFjYzllODAzZmRkIGxlZ2FjeS10cnVuaworNDM2NDQgODUyZjFjMWE4OWI0ZDM0ZTYxNzk4NzE0ODE2MmRiN2E5MmQwMGQzMSBsZWdhY3ktdHJ1bmsKKzQzNjQ1IGU3MDllNjI4ODZlNjAzOTQ1MjM5NTIwNTAzNTkxM2RmYWEyNTdiZDEgbGVnYWN5LXRydW5rCis0MzY0NiBkNmVjYmE1OTZlMWU2ODkxZDA0YTZhMWJkOGU2NzlmMzlhZTdiMGRmIGxlZ2FjeS10cnVuaworNDM2NDcgMjk2MzkyYzcxMDY5MGU2MGRkMTRkM2Q0ZWJiMTEzYzM3ZDVmOTM2MSBsZWdhY3ktdHJ1bmsKKzQzNjQ4IDRhOTk5YzZlMDBjMDJmZGE1YWUwMTM1NWU1OGM1ZDI2ZDg5NjdmMzYgbGVnYWN5LXRydW5rCis0MzY0OSBhOTgyYjAyYmVjMGJmMTg0NTA2MmJmNTg1YTRmZDFhNmExYTUxNWE2IGxlZ2FjeS10cnVuaworNDM2NTAgMTA1YThkZDAxODUxNjY1M2JkMDE1ZjY2NmI3ODNhYWUzYzc5MDY4NCBsZWdhY3ktdHJ1bmsKKzQzNjUxIDg5NmY5ZmVhZDE3ZTcyMGVjNGEyMWRlM2FjMjE0NTE4ZGE4NDg0NWYgbGVnYWN5LXRydW5rCis0MzY1MyBhMGYyYzM4ZDg1ZjQ1M2FjOTZlNTk2ZWZmMjdlMGMwNDEzMzBjOWI1IGxlZ2FjeS10cnVuaworNDM2NTkgMzk1YjFmNWM5NzUxNDkzY2FlNzFiNGU4NDE0MGNhZGYxOTI5NDY2OCBsZWdhY3ktdHJ1bmsKKzQzNjYwIDRiNzYxYTYzMzk5YzQyN2JiNzhiNTNkMmY4NzYyZjJjODQ3ZmE0MDggbGVnYWN5LXRydW5rCis0MzY2MSA2OWY3OTUxNzc2MWQxMmE2M2VlZjA2ZGRkZWQ3OTEwMGExZjUxYTFmIGxlZ2FjeS10cnVuaworNDM2NjIgZGJmNWIyZjJhNDI5MTY4NzAxNzQyNzZkMWE4YzY1ZjAzNjQzMTQ1YSBsZWdhY3ktdHJ1bmsKKzQzNjYzIDY1MzMzOGFhNjlmMmQ3ZGMwZDE2YmY3MWZlZTY5OGMyMjJiMWU5MjIgcmVsZWFzZTI0LW1haW50Cis0MzY2NSAwOTk5MDY2MTIyNmRiYWE1YzMwZGUxNGM5NDdkYjRkNjAxMDVhZGUzIGxlZ2FjeS10cnVuaworNDM2NjYgZWQ2ZmU3MjkxMDgzOTk4ZTU2YzM1OWZmNjcyMTk0YzA3MTBlNDMyYiBsZWdhY3ktdHJ1bmsKKzQzNjY3IDk3NmMwMTA5MWIzODVkZWQ5MDQ1MmUxYmY1ZjU4NDgyNTM1YWU4YTMgbGVnYWN5LXRydW5rCis0MzY2OCBkMzk2OWFlYmE3NzdkMTAwNmNkZjk5ZGI0NjBhOGRjOGE0MGUzODcyIGxlZ2FjeS10cnVuaworNDM2NjkgNDg5OGYxOTZhMjRkZWJjZWQ1YjQ4NTg3NTYwODc0NWEzODNhYTRkNCBsZWdhY3ktdHJ1bmsKKzQzNjcwIDNkNGYzNTNjM2Q0ZmIyNjk0OTYyYjI1NjRkNzllZDk3N2IyMGIyYWUgbGVnYWN5LXRydW5rCis0MzY3MSA0OGQxMmRlZjMyYjNjOGNlYjk5NDQ3ZjAwZjdmYWJiNmRlN2EzZTdmIGxlZ2FjeS10cnVuaworNDM2NzUgOTdiYzM0OGRiYzVkZjJkOWQ4NjE5MGNhYTM0MTk2NjEwOWU0ZWJjMiBsZWdhY3ktdHJ1bmsKKzQzNjc4IDVlYzg4ODNhMmVmOWExNjQyYjZjMDdmY2JkNzY4ZjQwN2Q3MTU0ZjcgbGVnYWN5LXRydW5rCis0MzY3OSBmNjYzNWYzMDQ2OTVlNjZiZjU5NTkzOGRmNzczYzIwOWVkOWM0ZGIwIGxlZ2FjeS10cnVuaworNDM2ODAgNDhjZGUyZjhkNTBlMWYxMzkzMjFkNDRjZjNmZjc3OGJmY2E0N2ZmOCByZWxlYXNlMjQtbWFpbnQKKzQzNjgxIDM2OWJiNWY2N2VmNjg1N2QzMTUwYjQwYjNiNTdhZWE4M2EyMjA4YjkgbGVnYWN5LXRydW5rCis0MzY4MiA5NjBiZjZhYTg1NGRkNjY1Y2NmYWI5ZGIzODhhOGIxMTBlNjA4NmYxIGxlZ2FjeS10cnVuaworNDM2ODQgZmM4YzkwYTQ0ZTY4Yjc5MzI3OWIzZjUwZGZjMzNiN2QxY2M2YmRjMiBsZWdhY3ktdHJ1bmsKKzQzNjg1IDFkYWY0ZjdiMzAyMTZhMTFkYmIyMWMxNjljZTJhNjEzZGRmZmQzYWUgcmVsZWFzZTI0LW1haW50Cis0MzY4NiA1YjExOWYyNTZjZGU1ZWIxMWE2ZGYyYTIxYmY2YTBmNWI0ZWJmNTY3IGxlZ2FjeS10cnVuaworNDM2ODcgZDVjYjc3MjMyMmJmNjdjMzMzNGMzMTA1OGUzOGUwNTEzZjkxMTUxMSByZWxlYXNlMjQtbWFpbnQKKzQzNjg4IDNmMDk1YzU1YzJkOWIxZDRkN2MxN2UxN2FlNDkxODM4YjAxNDBhNGIgbGVnYWN5LXRydW5rCis0MzY4OSA0Mjg0ODc5YTE4ZWFkODYzZWZmNGNkNzEyODczMDI3MzQ4NWUzYTY1IHJlbGVhc2UyNC1tYWludAorNDM2OTAgYWQ0Zjc1NTBkOGE0MDYyNThhZThjNmI5Y2RkMGIxOTU4MjhlNjQxMiBsZWdhY3ktdHJ1bmsKKzQzNjkxIGQxZGRhMTE0OGYxMDk2OWI4ZTEyNWYxNDdhNDAwMGZhNzIyOGYzN2UgbGVnYWN5LXRydW5rCis0MzY5MiBkMDMyMDFmMmY5YzI0YTU5M2I4OTg4NjRmMzg2NGNjOTkyZWQ3MmQ5IGxlZ2FjeS10cnVuaworNDM2OTMgMmIwYTVlZWMwMjhiMDdkZmNkYWEwYjZjMDdlODdkYzIxNDI0ODJjZCBsZWdhY3ktdHJ1bmsKKzQzNjk0IGMxNmI3NTJlZTkzYmMyYWRhNjFmNTFlMzM3MjI4ZWI3ZjRlZTYxNDMgbGVnYWN5LXRydW5rCis0MzY5NSA3Y2QzYmYyMzk5ZTYyMGE2MzQyYmZiZWJhOTIwZWQ0MGZmOTNmMGU4IGxlZ2FjeS10cnVuaworNDM2OTYgY2U0YWY1NDE2ZDc2NWViNWZhODk3ZGZlMThhNWU0YzNjZjg1YzA4OCBsZWdhY3ktdHJ1bmsKKzQzNjk3IDc5ZDNjNGFkOTMxMDliNzk5YTliOWZlMTBmMDFlMWZlOGEyZmRmZTcgbGVnYWN5LXRydW5rCis0MzY5OCBmZjcxODdkY2EyZjFhZjQxMWEzZTNlMDMzNjk0OTU3NjI1MTVjNGY3IGxlZ2FjeS10cnVuaworNDM2OTkgMjExNDEwMzdhMTIzM2JkOTRlZTI4YmQwNDBkM2ZmZWMzMmM4NzBhZCBsZWdhY3ktdHJ1bmsKKzQzNzAwIDdjNDA0OGVjMGM2ODhjNWU1NmE0NDlkYTA2ZTc1NDc0OTdjMWE4NTMgcmVsZWFzZTI0LW1haW50Cis0MzcwMSA1NTU2Y2U5OWYyMGM0ODQ2Zjc4ZDU2YWE3MzU0YWE0NzcxOTdlZDQ2IGxlZ2FjeS10cnVuaworNDM3MDIgMGEwMTQ4ODQwMTdjZGNjNjNlMWU1MzNhMDUwNDBjMzgxYWM0ZjU2OCByZWxlYXNlMjQtbWFpbnQKKzQzNzA0IDAxODQ1YTI0N2M4YjE1NWU2YTY2MDMwNGZlY2RlYjljODJmZWEyOWUgbGVnYWN5LXRydW5rCis0MzcwNSA4Yzc4Mjg4ZDBkYmJiMTRiODFmMTA4ODQ0ZjM2ZWZiNjhjOGU5NmM2IHJlbGVhc2UyNC1tYWludAorNDM3MDcgYjQzZGI4N2E5NzUyMzk3ZWIxNWY1Yjg1NTA1NDcxYTcxYWZmOGEzOSBsZWdhY3ktdHJ1bmsKKzQzNzA4IDBhZTFmYWY0MTFmZmYyMjQxNWFjOGVlNGQ5NjFiMzMyZTEyYzU2MzEgbGVnYWN5LXRydW5rCis0MzcwOSAwYTQ1Y2IzMGI2NGUwYmVjMDkzYTZkNzg5MWY5ZjU4YWZmYzIzZjliIGxlZ2FjeS10cnVuaworNDM3MTQgYTlkZjliMGJhNDE2NWU0YzhhNWUwZWYxOTViM2M5ZDFiODVmMGViNiBsZWdhY3ktdHJ1bmsKKzQzNzE1IDNjN2VhNTA1MThiZTIyMTVjYzNiMTIxOTZmYmY5ZDg4ZjFkMDdiOGQgbGVnYWN5LXRydW5rCis0MzcxNiBkMjJjYjE0ZGE2NzE0M2U3ODA4YTgyMjYxMjNiNjAwNTg1YTUxYzg3IGxlZ2FjeS10cnVuaworNDM3MTcgMTU4M2QzZmRkZGNkNzZhODAyOWI4ZWMzYzhkYmJkNjZmOWY4MmJkMSBsZWdhY3ktdHJ1bmsKKzQzNzE4IGE5NDcwZWI2MzdmMTk0ODgwNzcxYzgwMTU0YzEzZWFjYzlkOWNjYTQgbGVnYWN5LXRydW5rCis0MzcxOSA4NjlmM2M5ZDc0MDE0MDBlZTEwYzRhOTViZjVjYmYzZDQ4YmEwYzk1IGxlZ2FjeS10cnVuaworNDM3MjAgZjhjNGFhNTQxM2RiYTBmNmQ4YzIzN2FiYjUwMTlkNWFhYjBkN2EwMiBsZWdhY3ktdHJ1bmsKKzQzNzIxIDliZWQzMGRmN2E0YWVhOTQ4MzZlOTZlYzU1Y2Q5OTMwMDI0OTljZjIgbGVnYWN5LXRydW5rCis0MzcyMiA1YmMyYjRlM2ZmYzE2NDVmMmJlM2NhMWRjZmFkY2FjNjRhOTFhZGFhIGxlZ2FjeS10cnVuaworNDM3MjkgOTAwNmY5MjIzZDgwYjVjNDZkNmU1NGFjZTQ2ZjE3MTJjYzRjMjUyZiBsZWdhY3ktdHJ1bmsKKzQzNzMwIDE0OWZlNjg0ZTQwMTYwOTZiZDZhNTJkMWY3N2JlODNiNWZkYzFlZWMgcmVsZWFzZTI0LW1haW50Cis0MzczMSBiMzY2NmM1ZGRkOGEwYThiYzhjYjJlZTU4YjNlNDQzYjY4YTE0NmEyIGxlZ2FjeS10cnVuaworNDM3MzIgNzA3MzEyNTJkYTM0NjkzMDY1NDYzY2M0YzBkZjg3YWUwNjA5N2Y4NSByZWxlYXNlMjQtbWFpbnQKKzQzNzM0IGMxN2M1MjE5MzE2OWVlNDRjNzUyMjFmMzkyZjcwMzBlMDQzMTEwYTkgbGVnYWN5LXRydW5rCis0MzczNSBhN2Q2ODhlYmUzZTFhMjAzMjhmOTQ0ZWE4NWU2Y2VhY2NhNTIzZTYwIHJlbGVhc2UyNC1tYWludAorNDM3MzYgNDMxNjEzYmM5MzVlOTVhMzY4ZmUxMmVlMGU3Y2JhMjMyNzIxYzA1NiByZWxlYXNlMjQtbWFpbnQKKzQzNzM3IDcwOTI2NjI2YzZhMGEzNDAwMGU0NGYyYWU2Y2RjMzI4ZmY3OWU5YzEgc3RkbGliLWNsZWFudXAKKzQzNzM4IGJhOGYyNzY0YWE0YWMwOTAwMWZlODk5MzE4YmY0MDQxNzZmYjg1NjQgc3RkbGliLWNsZWFudXAKKzQzNzM5IGE4ZDQ5MjgyOTJkOGIyYjIyOGFiMGU1YTJhOTU4YjJhOGQyMDA4ZmIgbGVnYWN5LXRydW5rCis0Mzc0MCBlZGM2YTBjYzg0NjZiZTYxZWY0ZTE4ODExMTVlMWRhMjhlMDQyOTE5IGxlZ2FjeS10cnVuaworNDM3NDEgNDgzMTE0MDFhMjBlYTM2NmE1ZTE1ZmJhNzUzYjBkOTBhZGE3N2U3NyBsZWdhY3ktdHJ1bmsKKzQzNzQyIGYxYzQ0MDZiZjQ4MWVhZDIzNDU5YTJhN2ViM2EyNThmYWIxNmQwYjAgbGVnYWN5LXRydW5rCis0Mzc0MyBiMDUyOGU4YzZiNzg0NGQ5NTM2N2UyN2JkNzE2M2VmNDIzZTliOTg5IGxlZ2FjeS10cnVuaworNDM3NDQgMDM0MmM1ZjBmNGZmNjVjMzZmMmY4NWRiMGRmNjcyNTcwOTFiMzk2NSBsZWdhY3ktdHJ1bmsKKzQzNzQ2IDA0NmU2ZTM0ODM4MTc2OTU0MjdiMjRkODM5MGQ3ZjgwYjg2ZjZkM2MgbGVnYWN5LXRydW5rCis0Mzc0NyAyY2RmNTI3YjU4ZjZhMjlhYmJmNjE2MzIxOTNkZmZjMTRiYmM0NjEwIHJlbGVhc2UyNC1tYWludAorNDM3NDggMzk1OTgxMGJjNTQ5MTMyNjkyYzNmNDNhMmQ0YTNjZDQ3YzEzZjFiNiBsZWdhY3ktdHJ1bmsKKzQ1MjIxIDM2YmNiODNlY2JhZDUzZWI2M2UyM2RhNDM0MDQ5OTRjOGYwOTYwMTQgbGVnYWN5LXRydW5rCis0NTIyMyAyMzFlNDJkMDM2MmVkMjY3ZDNiMzUzMjU4NGE2Zjc0OTU5ODlhYjRhIGxlZ2FjeS10cnVuaworNDUyMjQgOWJkYTViYTQxNjc3Y2Y2YjMxNDAzZDVlYjRmOTU4OWRiNTgwZjhlOCBsZWdhY3ktdHJ1bmsKKzQ1MjI1IDZhZTRhZGVmYzU3M2I4ZWIwNmM5ZGFhNTU4ZTQ5ZWQ4OWI3NmQ4MzQgbGVnYWN5LXRydW5rCis0NTIyNiAyODZjODE2ODk4MjZjYWJiMTU3NzJmMmExOTIxYTg2NTA4NDQxYTQ2IGxlZ2FjeS10cnVuaworNDUyMjcgYTc4YmMwYmIzNDU5NjJlNjkwMjljZTNjMDk5MDg4OGIxNGFkY2E3OSBsZWdhY3ktdHJ1bmsKKzQ1MjI5IGViMGI5OTI3ZmZmZDAyNTI3NmE5NmRkYzI0MGFhZTI4NDhhOGM0OGUgbGVnYWN5LXRydW5rCis0NTIzMiBiZDM3NTc3NzkzMmQ5MWEzZmIwMDk0OTJiMjA4ZmRkYWY5N2VhNzA5IGxlZ2FjeS10cnVuaworNDUyMzMgMGYyZTg2ZDA4ZDhhZmYyMmYwOTI5YzdkOTkxN2I2ZDkwZDIxNWU5YSBsZWdhY3ktdHJ1bmsKKzQ1MjM0IDQyMDIzZjViN2Q2ZDFkZDczYjFlNDkxZTdmOTczMjFkOGEyOGRmYjcgbGVnYWN5LXRydW5rCis0NTIzNSBjNzgyY2Y2YjUxNmU0MmU4NzcxNGE5ZDdjNWZmNjU0N2JmM2EwN2Q4IGxlZ2FjeS10cnVuaworNDUyMzYgODA5NGNjMGM5OGQ3YTY0MmNhMzlhYTcwOWQwY2I4ODQ1OTdhNGQzNCBsZWdhY3ktdHJ1bmsKKzQ1MjM3IDMzNDIzYjg0NTU1NDA5NmIyMDIxYTNlMWZmOGE4NGMwOGM0MDBkN2MgbGVnYWN5LXRydW5rCis0NTIzOCAzZDYwMTUxMzkyYzIyNTdkNmI2YTU3OWRhMjk5ZjcwMTZmM2NmZmRhIGxlZ2FjeS10cnVuaworNDUyMzkgMjEzYzQxOThmZTIzZDliZDU4NTg1ZTYxZjM4YzQ3Mjc3MWE2NGNjYyBsZWdhY3ktdHJ1bmsKKzQ1MjQwIGI3NDQwYWI1Y2Q3MDZmNDkwZmFjODcwNDdiM2YyN2JiOTk5YWFhODYgbGVnYWN5LXRydW5rCis0NTI0MSA1YjM1MWRkN2QwODE1ZGUwZTIxOGI2N2Y4ZTVkMGM5YmVmZWYzOGUwIGxlZ2FjeS10cnVuaworNDUyNDIgMGJjM2Y3NGE0YTQ3MTg0MTllYjJjZTk2MGZhZDJlZTdjZGJiMWEyMCBsZWdhY3ktdHJ1bmsKKzQ1MjQzIDJlMjM0ZjRmZDc2Mzk5MDczNmRlNmQ0OWQ0MzYyMDk4MDdmNGE3NmMgbGVnYWN5LXRydW5rCis0NTI0NSBmNmExZjU1ZDNlNWNlNmJiOTNkYzg4ZTU4OGIxN2U4NDM2MjZlY2E3IGxlZ2FjeS10cnVuaworNDUyNDYgZGQwODVjMTNjNDlhNzVlODRiZjc1NmFiZTRkYjBlNmRhMmM2NjE0ZSBsZWdhY3ktdHJ1bmsKKzQ1MjQ3IGRjOWEzNmM4YjQ3MzBhYmM4ZjkzNWZlZGE2YTYzMTM0YjRkNDFkM2MgbGVnYWN5LXRydW5rCis0NTI0OCBkMTEzNjZmN2UxZTdhNTg2OTIxMjYwYTBhNWZjYWI5ZDM5MWM1OGMwIGxlZ2FjeS10cnVuaworNDUyNDkgN2NiNmEzMDQ0NjBmYzAwYWIwYjk0OGQ2OTg2ZTJiN2M3NWE3YjQ0OCBsZWdhY3ktdHJ1bmsKKzQ1MjUwIGUyOWNkZjg2NzhmZTk4ZTJkZjBkZTE3MGUzN2I5YzViY2MyMjk4NmYgbGVnYWN5LXRydW5rCis0NTI1MSAwMGJmOGYwMGVjNjMyNzU3MTg2YzU5MjBhYTU5M2RjYmU4ZTE1MzYyIGxlZ2FjeS10cnVuaworNDUyNTIgMDcyMDUwNjE1ZmMwYzE2NmNiN2Q1MGQ3NjRjZTc5M2ZlN2M1NmJiYyBsZWdhY3ktdHJ1bmsKKzQ1MjUzIGIxMTJkOGM3OTg4YzMxN2MwZGZhOWI2OTYyNTAwZWIxYmRhMzgxODYgbGVnYWN5LXRydW5rCis0NTI1NCAwYWY3ZjE4MDg3YTFmZmZhZjQyNzhhYzM2YjUwY2UxMTc3MzQwMjU2IGxlZ2FjeS10cnVuaworNDUyNTUgMWEzZTc5OWQwNjM0MWI0MTM5NTEyYTAxMDY5NWM2YWIxMzM0NzBhYSBsZWdhY3ktdHJ1bmsKKzQ1MjU2IDNiNGZkYzc1YmUxMmNlNzFhYTRlMTE5NWJjNjgwN2M5ZDY1MjZmZjEgbGVnYWN5LXRydW5rCis0NTI1NyAyOTI4NTRjNDNiOTliOWYzNTkxYWNmM2NlZjJkN2ZhOGE3YTYwYTJhIGxlZ2FjeS10cnVuaworNDUyNTggMWNlZDc5ZjA4MDUwOWM0NDRkZDUxNDExNTQ3YjcxMzEzMTgwOWEyNyBsZWdhY3ktdHJ1bmsKKzQ1MjU5IGE4NDE2YWQxYTVjNTljMzQwNzczZTVhNzg1MzdmMWJiMDZjN2QwYTggbGVnYWN5LXRydW5rCis0NTI2MCAxM2RkMzA5NzRhZDY5MTJlOWQxODY5MDE5YmJlZDdjM2Q2MGJmMjJkIHJlbGVhc2UyNC1tYWludAorNDUyNjEgYWVlZTg1YjZhNWRkODhhZDFlYzgxNTIzZGZlYTJkYWFkYjk0ZTE2MCBsZWdhY3ktdHJ1bmsKKzQ1MjYyIGY3N2RiYzBmOThlMzQzNTIxZmJkODQ2MzNlZDBmZGM3ZDc4ZDk2NjAgbGVnYWN5LXRydW5rCis0NTI2MyBhZGRlOWRlMTAyODdhZDQ1ZDk3MmI1ODZjZDdjNjQzYzdlOTZkNWVjIHJlbGVhc2UyNC1tYWludAorNDUyNjQgOTI0NTA0YjAwMTk2NDkwNDFmZDUzZWYyNzQyOWM4MGQ3ZDlkZTBmZSBsZWdhY3ktdHJ1bmsKKzQ1MjY1IGFlZDFjM2MzNWI4MzYzZTgzNTg3ZTkxMDEzMmExYzFkZjMxYTVjYzYgbGVnYWN5LXRydW5rCis0NTI2NiA2ZGQwZDhiNGJhYzU3NGNlNGQwNjg1MjlkYTlkYjE0YTkyMmUwNzc4IGxlZ2FjeS10cnVuaworNDUyNjcgMDU5MWQwMzIyZjA0YzI0ZGE1ZmI4YjczMThjMjdlZGNkZmI4MTVhMCBsZWdhY3ktdHJ1bmsKKzQ1MjY5IDFiMDc4NDkzZDUzODJiODNmNTMzMzY3ZmMyYWM1YmVkOWE3ZTRjZjcgbGVnYWN5LXRydW5rCis0NTI3MCAyYjJlOWMzODhmYmJlMjI1NTZjOThlZjk3MDdkMDMxNmZiZTY5YTQxIGxlZ2FjeS10cnVuaworNDUyNzEgNTZlMDBjOWI1MDExNzM0NjQ5MjBiNGNmNWU3YmZmNGMxYjYyNmY2MCBsZWdhY3ktdHJ1bmsKKzQ1MjcyIDQ0ZmIwM2E2YTUyNDk3MDg3ZTBlZDJiNjZjYjg3MzA5NmMwMjZmYjkgbGVnYWN5LXRydW5rCis0NTI3MyBjNGM1ZWViMDc3MzlhYjQxMDU1Mzc2ZWFlNTdlMzc0NjcxZjM0MDVhIGxlZ2FjeS10cnVuaworNDUyNzQgZjc2YjVkOTg3MzE0ZDc0NDc1ODBmNTVlN2FlOWVhZWFlMGU4NTk1YiBsZWdhY3ktdHJ1bmsKKzQ1Mjc1IGNhOTVhZDViMGZiYzYxZjllZDExNWVlNjAwODZkYTI3MjdlN2EzODcgbGVnYWN5LXRydW5rCis0NTI3NiAzOGFjYjkxODI0ZmNjNTczNTRmM2M3YmZiNWRjOGY4NWQzNjYzZjE2IGxlZ2FjeS10cnVuaworNDUyNzcgYzczMmY2NmM5MTNmZDM2MmJhYmExYzViMWE0YzA1ZDgyNjQyODEyNiBsZWdhY3ktdHJ1bmsKKzQ1Mjc4IGUwNzBjMzE2ZWI0NTU5YThmZTg5OTM0ZTAzYzZiNzU2MDZiNzVkMjQgbGVnYWN5LXRydW5rCis0NTI3OSBmNDQ4ZDAwNzU2OTFmOTUyZDdjZDRiZjhiMDkwYWNmZTRjYzA5ZGQwIGxlZ2FjeS10cnVuaworNDUyODAgNDgwYTU2MjVlMjg2OTIwMTc0NDcwMjE0NWQyNjVlNDk5OThiMGFmNiBsZWdhY3ktdHJ1bmsKKzQ1MjgxIGI3NGQzYWRiZjg4ODVlZmJkYTI0ZmU5MjhkMzFjMTZjZDk5N2ViYjkgbGVnYWN5LXRydW5rCis0NTI4MiBlNjBiMzE2NDdhNmIzMWQwN2ExNzUxNTk2NTc5ZTNhZGY2ZDg1NjQyIGxlZ2FjeS10cnVuaworNDUyODMgN2VkMGYwMDNiYTYzMTM2YTE1ODgyMDMxODdiZDYxZTMxZThjY2IwNCBsZWdhY3ktdHJ1bmsKKzQ1Mjg0IDdhZmFhNzUyYzc3MjA4ZTMzZjdkMGQ1Zjc2NTk2MGE2YTg4MzhjOGQgbGVnYWN5LXRydW5rCis0NTI4NSBjZDE5NWUwNzNkZDQ2NWQwZjVhMDBmYmUyYjg4NjEwNjQ2ZWU0NWVjIGxlZ2FjeS10cnVuaworNDUyODYgMGNhNTExMmUzZTEyOWEzZDA4NDUwOGQwZTU3YTc3ZTRkYzQyY2QwZiBsZWdhY3ktdHJ1bmsKKzQ1Mjg3IDcyY2ViMWIzMGQ0YmJjMjJhZWVkYzU1NzAyMzc0MzczZjE3NGI4ODkgbGVnYWN5LXRydW5rCis0NTI4OCAxOWQ5OWIzMTU1NWNlYmNmMGU4Y2Y0NjBlYTNmNjdkODhhNDU1NWMwIGxlZ2FjeS10cnVuaworNDUyODkgMWU5ZDdlNjZjMWJjZmE2YmFjY2ZkZjI1ODUxMDQ4MWFkMGNiMGVkNyBsZWdhY3ktdHJ1bmsKKzQ1MjkwIDg5NjhiMTI0MmYxODk5NGIzOWQzMTE0YTViZjUxYjY1YWIxOWM5Y2IgbGVnYWN5LXRydW5rCis0NTI5MSA2ZmJjMTFhMDNiY2MyYTNiNjg0OTdmYzUwMjI5OGQ3ZmVlYTExYjVlIGxlZ2FjeS10cnVuaworNDUyOTIgZjE5YWRkZDY5YWQ5MzlmMjBhNDUzNDJiN2RjYjdlZmJjMjg5NTA0MSBsZWdhY3ktdHJ1bmsKKzQ1MjkzIGI0M2E5NzAyNjQ3OTAzZjUyNDU5MmQ4M2RmOWFlNGY1MWQyODgwOGQgbGVnYWN5LXRydW5rCis0NTI5NCAxNTcxNzlkMmE0YzM1MjJlMmY0Nzc3NjFhNTlhYTM4MDQ3MDE2YmYxIGxlZ2FjeS10cnVuaworNDUyOTYgOGExODgwMzZiNzEzYjRhY2Y4MDFhOWU4NmQ3YzE0MjNlNjhkNGY3YyBsZWdhY3ktdHJ1bmsKKzQ1Mjk3IDJmZDZhZDU4MjIwMzJmYmE4YWU2ZDUyZDAwOGFhNTc5Mzk5OWEzMWIgbGVnYWN5LXRydW5rCis0NTI5OCBlODA4ZTJhZjkxZjYzNDliZDNkZmNmMWJiNzA2YWM0NzUzZTFlYTIzIGxlZ2FjeS10cnVuaworNDUyOTkgYzhhMDlmZDRmMTBkYTdlZTEwM2JkMTliM2JiZmZiMTk2OTY3ZDlmOSBsZWdhY3ktdHJ1bmsKKzQ1MzAwIGMyNmY1ZTIwNmRlNzlkNTQ4OWM0NTE4ZDRkZGRmYjA5NmFmYjk2MGIgbGVnYWN5LXRydW5rCis0NTMwMSBhNTM5MmJiMDc0NDAyOWNmMTViMTcxNzQ2ZTMxNzMyMWRlN2IzMTFhIHJlbGVhc2UyNC1tYWludAorNDUzMDIgMGRkMzJhNmIyOTY0ZTIzNDIxMDgxYzM3OTZlMjNlNWZkYjQ2ZTJlYyBsZWdhY3ktdHJ1bmsKKzQ1MzAzIDI4OTExNmE1MmJiMWU4ZTY3YTFkNzIyNTM0MTgxZWM0ZTEyYjVmMWUgbGVnYWN5LXRydW5rCis0NTMwNCAxZTEyZWM0OWRmOWI0ZGI5ODQzMDQ0ODQ4N2MwZDJiNTFkNzA2NjU5IHJlbGVhc2UyNC1tYWludAorNDUzMDUgMzk5YTlhNzIwOTVmOTMwYTIzMjNhNjY4M2U3N2FmOGUzOWZlZGIxZiBsZWdhY3ktdHJ1bmsKKzQ1MzA2IDE3ZjhhZGNjNzNlZDg2YjhmNThjMmQ3ZGJhNjMwMzA4NWNhMmQ1OWEgbGVnYWN5LXRydW5rCis0NTMwNyBhZjA1NmI2M2NlNTM2MDQzMGMxMDFmODFmNTg3ZTVjMDY2MTdmYjA1IGxlZ2FjeS10cnVuaworNDUzMDggODgzMWZkODIyYjYwNWRkYWJlYjhjODQ0M2IwNDIxZmIzYmU4MjcxMCBsZWdhY3ktdHJ1bmsKKzQ1MzA5IDc2OWM2MjYxMzU1ZTkzOWEyYmUwNmMzMGEyOTY3YjY0YTU0NjA0NTEgbGVnYWN5LXRydW5rCis0NTMxMCAyZThhYjc5N2NlYWY5ZDc0OGQ4NWNlZDJhYTVkY2I3ZDQ2NGE0NGJjIGxlZ2FjeS10cnVuaworNDUzMTEgOWE2YTAzNzVlZjIyOTVlYWY5MWQyMDM0NmFhYzIyOGFkMjc1N2VkYyByZWxlYXNlMjQtbWFpbnQKKzQ1MzEyIDY1ZWNiODNlYTdkZGZkMjMyZWU4MGUxYjQ5NDQ5YzNlYzRhNzU1Y2EgbGVnYWN5LXRydW5rCis0NTMxMyBiYzRmYmJiMmRiMzAwOWYwYWI3YzBmYTA4OWY2NzA5ZDUyNTBkYWJiIHJlbGVhc2UyNC1tYWludAorNDUzMTQgZmVkMjk3YzIwNjJkOTI4YTAwNDY1MDk5YjcxZGU1NjMzYjkxMjM2YyBsZWdhY3ktdHJ1bmsKKzQ1MzE1IDM2ZTE3NjJlYWQ4NmI4MGIwYWNmOTZkN2IyODU2NDIyMjY5ODhkYjggbGVnYWN5LXRydW5rCis0NTMxNiAyMmYyYzkyYTFkYTdmOTY1ZmFmY2NlZjY2MmNiNjY2YjBlOWNkY2E4IGxlZ2FjeS10cnVuaworNDUzMTcgYWQ0ODZlNDg3NWM2ZTE4M2I1MGYzMWQ3NzRiZDE4NmYxNGYzZTZmNiBsZWdhY3ktdHJ1bmsKKzQ1MzE4IGM2ZTExZjgwNGQwMGY3NjNmNDAxNWY4ODJhMzVlMzU5YWNjNzU5M2IgbGVnYWN5LXRydW5rCis0NTMxOSAyYzA2NTg4YWU2OWU2MjgyZWZmZGU1YzY2MzBlYTY5OWU0ZjZjYzZmIGxlZ2FjeS10cnVuaworNDUzMjAgNDIyY2RkMjRhZjQ2YzQ3NGU0Mzk3NGUyNjc3NjQxNDNkMTI5NjI4YyByZWxlYXNlMjQtbWFpbnQKKzQ1MzIxIDEwZTQ3ZjI3ZWEzOWZhMDc2ODZiMGQ2MGI2NWEwOWNkMTg0Mjc3ZWMgbGVnYWN5LXRydW5rCis0NTMyMiA0NTUxZGE4NDc2NTFhY2MyNjFhMzNiZjJjZmVlN2VhNTgxMDA0YTAwIHJlbGVhc2UyNC1tYWludAorNDUzMjQgMjFmY2M4NmU0ODIwODJiZWM2YmQ4ZDNkMTlkNTMxNWMwMjU0MDYyOCBsZWdhY3ktdHJ1bmsKKzQ1MzI1IDhjOTk4Yzc2MDE5MTBlZDRlY2E1M2U4YTAzMjBlYmI4YTBhOGQxYzYgbGVnYWN5LXRydW5rCis0NTMyNiA3NGQwNDgzOGNkMTEyNzRmYTYxNTM4MDIwOGJjMzZiYTdjODg3ZDBhIHJlbGVhc2UyNC1tYWludAorNDUzMjcgYjVmODk5YzE4N2Q0YzVjZTdhMTdkYTE2OWQ5YTViMzA1NTk5NDdmNiBsZWdhY3ktdHJ1bmsKKzQ1MzI4IDEyNTY3MTg5ZWYyNTcxZmRmYTk2MmRmMzg1YjJhMjcxNDZhMTZmOTIgbGVnYWN5LXRydW5rCis0NTMyOSBkZWMyNTllNGQ4OTE2YzY1ZDAwMDVhZTI0MGYwMzc4Y2FjNWI3ZTI4IGxlZ2FjeS10cnVuaworNDUzMzAgMmYzZjJlMzJkZmQ5ZDc2ZTcxOTg2M2VlMTViZWIwMTE5OTFhYmNkNiBsZWdhY3ktdHJ1bmsKKzQ1MzMxIDdkZjBjNDRmMzk4NjIzNjk4ZGNmMzBmYjhlNzM3MDQxYzc5ZTg2MWQgbGVnYWN5LXRydW5rCis0NTMzMiBiNjMxOWE2OTlkYWJhMWQ1OWVlOTYwMmI5NDkwMGEzMjQwOGQ1MDU3IGxlZ2FjeS10cnVuaworNDUzMzMgMmMwODRkODFjOTUxNDAxZGQwOWUwM2VhZDgyMWYyZjViZjJkZmMzOSBsZWdhY3ktdHJ1bmsKKzQ1MzM0IDA1NGFjZWRmM2MwZDkwYzE0NDE5YjlkZTAxNDgwYTE4ZDQ0YmI5MmIgbGVnYWN5LXRydW5rCis0NTMzNSBmNDViYzI0MWUyMDAwYjJlYTJjN2UzNjE2MWNhMjE1NGVlNzE1ZWQ5IGxlZ2FjeS10cnVuaworNDUzMzYgYjFjNmEzODY0YjFlOGMxNjkwOGVhNzMwYzlkZmFjZDAzMjJlNzQ4ZCBsZWdhY3ktdHJ1bmsKKzQ1MzM3IDA2NzhjZTlmYjZiMmIxMTEwZmI2YjY2OTNlMjM5NmFiMTVjNjVmMGUgbGVnYWN5LXRydW5rCis0NTMzOCBhODQwZTliYWZmOTZjYzk3MjU2ZGFjMmU1ZjRkMDFkMjY2MWZmNjgxIGxlZ2FjeS10cnVuaworNDUzMzkgZDEzZGVkOTE2NWVjNDQxNDFmMDgwYTE2OTE5NTQwMDZiMmUzYjRmYSBsZWdhY3ktdHJ1bmsKKzQ1MzQwIDY2Njc2YThlY2I1MmNlNGMwMzIwZDA1Y2U0ODY4NmJmMzJhZGRmYzIgcmVsZWFzZTI0LW1haW50Cis0NTM0MSA1YTlmY2Q2NzZiM2ZlOWVkMTA4NzFkY2ViZTFmMjMzZmU5MTdiMWQwIGxlZ2FjeS10cnVuaworNDUzNDIgYjE3MjRlOTI2ZTA3YzQ2OTVmNGQwZTU1YjRkOTg4ZjRjYzAwNDZiYSBsZWdhY3ktdHJ1bmsKKzQ1MzQzIDQzNDJlNDQxYjExY2NiNTUwMjhhNWIzY2YyMDAwNzNjMmYzZWI2MzcgbGVnYWN5LXRydW5rCis0NTM0NCBiOTNjMDU5NjBhMTVmYWI2YzdmODZhY2ZmZmVmMjQ1ODJjMzViMzQ4IGxlZ2FjeS10cnVuaworNDUzNDUgMzZiZmU0NmM1YzZhNjNjYmE5MWY2MzNkOTBjMWQzM2RiMGM3ODhjMyBsZWdhY3ktdHJ1bmsKKzQ1MzQ2IDNmOTczOWRlNjYwMzMzNTNjMzg0NWMyNzgxYjEzYjg0YWY0MTgxMjYgbGVnYWN5LXRydW5rCis0NTM0NyAwYTI4ZjE1Nzg3NWUyYzExNDRmODkyMTZiNjEzYzM0Y2U5NTI5MGYyIGxlZ2FjeS10cnVuaworNDUzNDggNjA2ODE4YzMzZTUwZmU2NzIzMDgzMGRkNzU1YjQ4NGRlZmZmZjgwMiBsZWdhY3ktdHJ1bmsKKzQ1MzQ5IGE0MjMxYWEzMjAxYWUxYTM5NGVlNjQzYzVhNDdjN2MxOTRmNjg0Y2EgbGVnYWN5LXRydW5rCis0NTM1MCA4NmRiNmRmMjQxNzQ0OGRhYWMwYTQyZmI1ZDhiODZlYTAwMDk5YjNmIGxlZ2FjeS10cnVuaworNDUzNTEgM2EzOWVkNTk3YjY4YWFmNzYwMzAwOGIzZDQ4NjJiZTg5M2FhZmIxYyBsZWdhY3ktdHJ1bmsKKzQ1MzUyIGU3OTVkNmM4NmE1ZWRlOTg0MWEwYWFhNGNmOTczYWNjMWU4NzllNGIgbGVnYWN5LXRydW5rCis0NTM1MyAzMGQ2YjllYWYwMmRiOGUyOWYzZmFmNjNlYTliMjljZGMyMzVlYWMxIGxlZ2FjeS10cnVuaworNDUzNTQgNTg2NDA5ODNmZDY2YzY5ZTc5YmU5MzEzNzI1ZTU3ZTk3NTY3NWVkNSBsZWdhY3ktdHJ1bmsKKzQ1MzU1IGZlODhlMDFmZjZkZThiNDkyN2JkODcyZTk5MWVlZGRmMmE5YzFkZDAgbGVnYWN5LXRydW5rCis0NTM1NiAyM2VkZjI5MGI2NzZmMjBiOGQ1NTAwNzg4ZWI5YWQyYTk3NzA3ZGQ2IGxlZ2FjeS10cnVuaworNDUzNTcgNWE0Yjk2NDEyMzJmODVmZmM1MDg5OWIxNzA5NGEzZTczNjY2YjY3ZSByZWxlYXNlMjQtbWFpbnQKKzQ1MzU4IDQxMzNlODQxZjBjYjkxZGQxODUyNGY0ZWY3YTFhNWUzOWFmODkwZWIgbGVnYWN5LXRydW5rCis0NTM1OSAzOTliMTE5YzA1OGExYjk2Y2U0MjZiZWI0OWVhYjA0MTYyMzRjYmI5IGxlZ2FjeS10cnVuaworNDUzNjAgNWU3MmIwYzc0MTAwZDc1MGQzYTlkZTlmMDU4OTUxNzBkNTNhYjI0NCBsZWdhY3ktdHJ1bmsKKzQ1MzYxIDk1M2ViM2RjMThlNTQzMWYxMDQ2NTcyMzllYjk5NzNhNzUzNmY1NjkgbGVnYWN5LXRydW5rCis0NTM2MiA5OTc1MTI4OWVhMDNiYWQzNWY1OTllODE1ZWFiYTA2ODc4NTg3MWE3IGxlZ2FjeS10cnVuaworNDUzNjMgYjM1MGU5ZDc5MWU2ZTJlZjczMGVmMjc3ZWU0NzI5OTM2NGI3NWRlOSBsZWdhY3ktdHJ1bmsKKzQ1MzY0IDFiNWIxNmNkYmUwZTFhMGJjYmIzNzQyNmQ2MmZjYzUzNDljZDYzNjMgbGVnYWN5LXRydW5rCis0NTM2NyA3NTFmN2M3OWI1ZmQxNDU5NDI1OGM1YzAxM2Q2NjNiZTU1NTk2MTZlIGxlZ2FjeS10cnVuaworNDUzNjggZWFjODNmZWViMTFmNmM4Y2I0MjI4MGFlOTgwNWJlYzI4MTdiMGIxYiBsZWdhY3ktdHJ1bmsKKzQ1MzY5IDRkN2IyMjM3ZmEwN2YzNzFmODlmZTk1OTA3NWY2MGY2M2ViMWY5OTQgcmVsZWFzZTI0LW1haW50Cis0NTM3MCAzMDhlMmU4ZWQ2NzY2MWEyMmM4OWI5YTE0NTllMmMyOTljMzZlY2FiIGxlZ2FjeS10cnVuaworNDUzNzEgOTFhZWM0NzQ2MjE4NWRlNDM3NDI4YTMyZTM0Y2JjOTE4MDRlOTBlNyBsZWdhY3ktdHJ1bmsKKzQ1MzcyIGFjNzllOTAzN2UwNmNmMzZkMmY5M2RiYjY5NDM3MGRlMWFlNTE0YWMgbGVnYWN5LXRydW5rCis0NTM3MyA3MjA0NzQ4YzI5MjE1ZDhjZjRkNjViYmQ2Nzg1MzgxZTc1NWIyZGE1IGxlZ2FjeS10cnVuaworNDUzNzQgN2VlNDA2OGUyYzYyYTI1MGUyYTllZWMyYmY5OGJiMDkyM2RkNmQwYSBsZWdhY3ktdHJ1bmsKKzQ1Mzc1IDI1NGNjY2I3ZWYxNzY5OWQ5YzgzMTYwMGJjYTg3ZTljN2NkYmE0OTEgbGVnYWN5LXRydW5rCis0NTM3NiBlMDU3YWYyZGZmY2VjMzE4ZTA3ZTFjMDExMzcwOTYxYmY2MzBmNzI4IGxlZ2FjeS10cnVuaworNDUzNzcgZmJjZGY3YzBjYzc0ZDMxMzVjYmUzZTQ4NWQyOGNkZTc3MTU0YTZjNCBsZWdhY3ktdHJ1bmsKKzQ1Mzc4IDBhMGQ4OWQ3MTBhNGRmMTViZTYyYzVmZGVkMTE4OWUwNTAxYWExMzMgbGVnYWN5LXRydW5rCis0NTM3OSA5YjIyZDhiN2JjYWFjNDMzNTYxODBlNjBmNmQ5NzUyYTI2ZjQ5OThjIGxlZ2FjeS10cnVuaworNDUzODAgZWU1NzM0OTc0NGYzNzExYWIzZGUwZTBjNmZhZWMyZDg5NjM5YzkyYyBsZWdhY3ktdHJ1bmsKKzQ1MzgxIGJiM2Y5MDc2ZDA3OWM1ZjQ0M2VlYzFkNTcyYzA4NjI5ZTZjY2YxMTUgcDN5aworNDUzODIgOTE1MGUyNjBjNDE3NGE3NTk5NDA4M2FkNWU1YWZhNDZlZDU4Njc0ZiBsZWdhY3ktdHJ1bmsKKzQ1Mzg0IGQ3MWYyNmU2NDQ4OWViMWY3ZWQzOTRmYTg3YWZjNWFkZTAyMzU2MGUgbGVnYWN5LXRydW5rCis0NTM4NSA3ODZkMDM1NmRlNTEzYTJmYjM0ZjFlMDI0ODk3MGFlZGZhNzEwNTdhIGxlZ2FjeS10cnVuaworNDUzODYgMjMwZmZmNmUwNjE4ZDI0MWIxZWMyNzZiNjhlZTdmNzIzMGI4ZWEwZiBsZWdhY3ktdHJ1bmsKKzQ1Mzg3IDM3YThlYjc0YzUwNDY1MTM2YzU1NDZhOTlhZGZjNmY5M2Q4ZTdhODEgbGVnYWN5LXRydW5rCis0NTM4OCBjY2IzYWY0OWJjYjMwMWM3MjVmYTg1OTFhMzUxYjI2MTllZGQyZWJjIGxlZ2FjeS10cnVuaworNDUzODkgMjMzYjEwZWNmY2VmNjYyZWViOWYxY2E5NGE1MmJjMjI2N2U1NzFkNCBsZWdhY3ktdHJ1bmsKKzQ1MzkwIDliZWYxZGViY2JhYTdmNzc2OTUzMjRhMjkxNWUyMjJiYjNhOTljNjkgbGVnYWN5LXRydW5rCis0NTM5MSA5MWQxNmE4N2NiZThlYTc2ZTcyODI1Yjk3ZjAzZGI4ZjNkY2FjMTNmIGxlZ2FjeS10cnVuaworNDUzOTIgZWM5ODZhYWJlMWZkZWYyNzEwM2FmYTUxNzgzYTlkOWVmYjc2YTExMCBsZWdhY3ktdHJ1bmsKKzQ1MzkzIGFmZTU2YjliNjY0YjI0MTc3NmM1NDUzOGViYWUyZjhkMWMwNTA5MDcgbGVnYWN5LXRydW5rCis0NTM5NCAxZDVhNGM4MjA2MWU2OGRhM2NkMWQ4ZDgyOTEzOTJhODg3Mjk1N2IwIGxlZ2FjeS10cnVuaworNDUzOTUgZDdkYzAwODVkZDg1YzhjNDY0NTAwNzMzYWIzYzk4MGY5MjJhMGU0OCBsZWdhY3ktdHJ1bmsKKzQ1Mzk2IGFmNDdkYTVlOWNlMTRkYjRhY2UyMjBhYjlmZGEwOGUwNDhhZTMwOTggbGVnYWN5LXRydW5rCis0NTQwMSBjZjcxYzM4MTRiMGIzMTc3YzljMDI5MDk0MWFjMmI5YmJlYTAwNjRhIGxlZ2FjeS10cnVuaworNDU0MDIgMTM2NmJmYTA4NGVlNzE3MWE0ZjAyNzgxYmJlOTc5YmE4OWRkZTVjNSBsZWdhY3ktdHJ1bmsKKzQ1NDA2IDg1NmJlZTE1MDBiYmNkZWFjMDE2NmE2MzA5ZTM3ZjM4MTdhZjA3ZjYgbGVnYWN5LXRydW5rCis0NTQwNyA2NDQxZjZmYTY1NzFhN2QyYmEyNjUwZjNmMzRlNmU5MTM4MGVjMzYzIGxlZ2FjeS10cnVuaworNDU0MDggYjk0MGFjNGY5NTU4NmFiYzBhNzg0YWEzNWE0MmM5ZWVhZTJkNmU5ZiBsZWdhY3ktdHJ1bmsKKzQ1NDA5IDMxOTI5ZGEwYjA1YWZhMTI5NTQ2MTdlNDEwZTM4NWU2NmJmNDhlNTMgbGVnYWN5LXRydW5rCis0NTQxMCA2ZTlhYjg3YzYwOGNkOTA1NTM3YTlmY2IwN2RkNTIxOTY5NjYwMjY2IGxlZ2FjeS10cnVuaworNDU0MTEgMjdhNjM5YzQ0NzFhNGUwMDczYjYwOWQwZjZmZTkxZWU2NWMzMzEzNiBsZWdhY3ktdHJ1bmsKKzQ1NDEyIDYyYzkwMzhhNTc4YThhOTIyN2U3MmMwYmUxMTJjNzlhNDIxYzQyZjMgbGVnYWN5LXRydW5rCis0NTQxMyA1ODhmOTdiMjRiZjllMWZmNjU2NzA0YWQ0MzlkMjUyM2ZmNjVkMzkwIGxlZ2FjeS10cnVuaworNDU0MTQgYzZkZjVlNzk1NDIzMDM5YzM4NDhlYWJjNTc5MTEyNjYxNWIwY2JhMCBsZWdhY3ktdHJ1bmsKKzQ1NDE3IDUzMDQwNTllN2RlM2IxYjMzYjI0MDJmZDkwOTEyMmRkOWNkYThkZjMgbGVnYWN5LXRydW5rCis0NTQxOCA5YjE2ZTgxNjFkZjc3N2QxMDE4NmViOTg2MzU4ODVjYmEyYzIwMDUyIHJlbGVhc2UyNC1tYWludAorNDU0MTkgYmZjNDhhZDgxZTgwNGNiMjVkNjU5MzI5NDY3MjBmNTg4NWM3MmQ4NiBsZWdhY3ktdHJ1bmsKKzQ1NDIwIDlmODIxMDMyNTRmYTRlYmVjNTE3OGM0MGFiZWEwMzYwYTEzMzUzMjYgcmVsZWFzZTI0LW1haW50Cis0NTQyMSA0YzZkNDY5OGExMTVkYzc3NzQ1MDJlZjFhNTI3MjU5NGQ4MDJiYmZhIGxlZ2FjeS10cnVuaworNDU0MjIgMDVhZjM5YTkwNzU0MzVkZmIxZmJhNDY2YTkwOWMwZjNjOTMwZDUwZiBwM3lrCis0NTQyMyBiMDI3MGM2ODA0MmVkNDc4NGFjZWM3YWUwMWYxMDg2NjdiODQ5MTZhIHAzeWsKKzQ1NDI0IDBhMTNhOTY1ODVjM2QzNjc2MjkwNjJkZWJlZGEyMGM3MjI0Zjc4NzcgcDN5aworNDU0MjUgNGNjMzRhZjAxOWQyYzI2M2I3NjBmYTFlODc5NTYyYjZmNDc1MTUxMyBwM3lrCis0NTQyNiBmYjJhZmYxODYyZTQ2ZjE4ZDJjY2JiMDJhZGU1NTU1NmJjODVlNmNmIHAzeWsKKzQ1NDI3IDhkYWFlN2JhMDc4YTU1NDUzYWJjNDgwODUxMWI4NTgzNTMzNTEzYjEgcDN5aworNDU0MjggYTY3ZjIxNThkNjFiMWFlYWZmOWJjMzc4YTU3YTc1OWVlMzY2MjJiNyBwM3lrCis0NTQyOSBjNDdjY2NjYTBiZjQzODZmODVlMDZkODU0NTAwNGMzOWJmZTRhZWVmIHAzeWsKKzQ1NDMwIDdjYWU2MjJlZGNjOTc4ZDQxZDMxOGMzYjk3MzJiYTYwY2QwODI5ZDQgcDN5aworNDU0MzEgYTVjOTc3ZTZmNWRhMTQ4YmU3ODM2YzlkOGY1ZDVjMDBiZGJkODQxYyBwM3lrCis0NTQzMiAzNTNmZTA2ZGFiNWIzNzI1YzdhNTA0ZmM1ZWNhM2NiZGQ3NmM0MjRjIGxlZ2FjeS10cnVuaworNDU0MzMgNjM2Y2E4MGE4Y2JlZGM3MDViZTZjNDdmZDAxNThkMTg5M2ZlMjllZCBsZWdhY3ktdHJ1bmsKKzQ1NDM0IGE1OTAyZTBlYzA3YzhiYTg2OWU5Yjc3NWM3OTRjNTEwZDU4MTgxMjkgbGVnYWN5LXRydW5rCis0NTQzNSBkMTU0NzQyNmFiNjEwNmVjYWQyZDNiYjBlZjM2MGY0N2Y2Yzc0NGE5IGxlZ2FjeS10cnVuaworNDU0MzYgMjQwMDk4OTM1Y2Q1ZWJkMThkZGEzMGQxZmY0OWQ4ZTJiOGQxZWVjNyBsZWdhY3ktdHJ1bmsKKzQ1NDM3IDYzMTQ1YzA2ZGVlZWI0ODNmMzRiZjkyODFjMDljNGExZDZhNmQwZWEgbGVnYWN5LXRydW5rCis0NTQzOCAxZDAyMzc0ZjRjN2UxYTVhNDYyMjFjMDZkMWU4Njc1MWQ5OWY3NDgwIGxlZ2FjeS10cnVuaworNDU0MzkgN2Y3Mjc5MWYwYWVjMzJmNjkwNDc4N2E3MmI5NzNhNzc5YjdkNjYyNyBsZWdhY3ktdHJ1bmsKKzQ1NDQwIGFiZjgyNDYxZTZiNGRmNTFmNTExN2YxMjUzNjMxODUyZjE2Yzg1YTMgbGVnYWN5LXRydW5rCis0NTQ0MSA5ZTM4MmYyZjQzOWQ5Nzc1MjMwNjZlNmY1YWQ3YTgxMGI3ZmNkMTFjIGxlZ2FjeS10cnVuaworNDU0NDIgYjczNzNiYzNiMDlmMzM5MmJiYTMyNjJkMTJjZWY3MGE1ZTcxNDQ0NiBsZWdhY3ktdHJ1bmsKKzQ1NDQzIDdiMmU0MzZhNGEyMTFjMmU1N2JmNGE4NGJlMjFmMWE1Y2FjYWM5YjkgbGVnYWN5LXRydW5rCis0NTQ0NCBlMTM4OGFiYTk4OTYyM2NhMDE2YzY3OWY0YjRjNmE2Yzc1ZjM0ZjZkIGxlZ2FjeS10cnVuaworNDU0NDUgOWI3OGRjMDdiMTcwY2M2NjUwNTk0OTYwMTRkZjEwMzYwMjMxNGRmNyBsZWdhY3ktdHJ1bmsKKzQ1NDQ2IDM1M2I1OTY1MWU0NTBlMTQyNjI0MDk0MTQwZTRhNDQzMzJmNDI0MmYgbGVnYWN5LXRydW5rCis0NTQ0NyA5ZWI0ZGMxY2M4M2U3YTYzMTI0YWI4Y2M4MmM4ZmNiMDM5MzcyM2U2IGxlZ2FjeS10cnVuaworNDU0NDggODMzZjM4NGViZDQxYjYzMDJmMmI3MWRkMzc2ZDYyODBmODY0YzU5MSBsZWdhY3ktdHJ1bmsKKzQ1NDQ5IGEzOWNjODRmZjE4NTZjN2FjYzViYzc4MWM2Nzg2MmI3MGM3MDNmZmQgbGVnYWN5LXRydW5rCis0NTQ1MCBiN2EzOTcyZTk5MTU3MjdlOTczYTg0Njg0ZjIwY2NhZDVlNGRhMzk1IGxlZ2FjeS10cnVuaworNDU0NTEgOTZhZGRhYTI1ODY5NzBiMDgwOThmOGRlYTVkMjI3M2UwNzY1ZjA3ZCBsZWdhY3ktdHJ1bmsKKzQ1NDUyIDBhNTRjMTVhYTE0M2M0ZDYwMDIwODEzNmQwMWU3NzZiOTg2N2E2NTggbGVnYWN5LXRydW5rCis0NTQ1MyBmMWM5ODUzZGYwZjdkNGFlNmE0ZGI0OTdjMmViYWFmN2JiZDAwZjZhIGxlZ2FjeS10cnVuaworNDU0NTQgN2NjMzE1MTZmODI1OGZmMTYyODgwMTA3ZGRiZDNhYzZlYTc0NzFmOSBsZWdhY3ktdHJ1bmsKKzQ1NDU1IDM4ZDE3ZDUxZWE5NWQ0NDg3NTA0MWI4OWMwNTAxNjdmMmM3NTE2MGIgbGVnYWN5LXRydW5rCis0NTQ1NiAwMWU1MWY1ZGI4ODFiODViYTFlN2FjOWRkMTM2NTkxMzg0NTllYWM0IGxlZ2FjeS10cnVuaworNDU0NTcgMzFkY2MzMTExMTMzYmU3MDE4ZGMwNGYyZDIxZjdhOGFiNjFiY2NkNyBsZWdhY3ktdHJ1bmsKKzQ1NDU4IDA4NGQxODhlN2RiZWY3YWVkNjk5YWIyN2IwYzcwOGZiNjk3OTY1YmUgbGVnYWN5LXRydW5rCis0NTQ1OSBiOTBhN2M2MDIxYmNjNDIzODJkYTY4OGY0ZjVhZDBiNDQyNjgzMTQ3IGxlZ2FjeS10cnVuaworNDU0NjAgNjA0YzliY2IzMDZjNmQyNmJkMzFiMjJiOTY2NzlmMjA4YWNkMGIyYiBsZWdhY3ktdHJ1bmsKKzQ1NDYxIDViYjZlNTRmOTQwOGY2MTc2YzkwNTlkN2YzYjlkNmVkYjY5ZDI1MWMgbGVnYWN5LXRydW5rCis0NTQ2MiBkOGIyM2JhNGEyNzRlY2Y0ZWQ3NmRkYzU4ZWYwMDM5MTQyZjJiYTc4IGxlZ2FjeS10cnVuaworNDU0NjUgYjAwNDRiYjRkZjJhZWRjZmJmMzExZGY1OTkxZDljZGI1ZDUyYmFiNyBsZWdhY3ktdHJ1bmsKKzQ1NDY2IGQ0YWU1YTI2MTU3ODgyZTFkMTBmNzlhNDI2NmQ5ZjVmOTE5YjA1ZDggcmVsZWFzZTI0LW1haW50Cis0NTQ2NyBiZTIzOGNiMjZkMzI1ZTM1ODMyZDdlOWUxYWU1MGRjYzE4NTNhNDcyIGxlZ2FjeS10cnVuaworNDU0NjggN2JiYjliNWY3YWRjZmQ4ZTE5OTQ0NjU1NDFiNzg0NzhmOGU2MmMzOSBsZWdhY3ktdHJ1bmsKKzQ1NDY5IGI5NWI1YzMzY2IzYTUzMzFiZWE3YzVhYzVmN2UzMTkzMDBhNWRhYzMgbGVnYWN5LXRydW5rCis0NTQ3MCAzMDBiZjFjNGRlZWRlN2MxZDNlYWY3Yzc1ZmU5MmYzNTg4ZGFmNjE5IGxlZ2FjeS10cnVuaworNDU0NzEgZGRmOGM5MTQ1ZjEzNjNlODJmOGM0M2M3YjBhMDlmYmRkM2E5MGFlOCBsZWdhY3ktdHJ1bmsKKzQ1NDcyIGI1ZmNlZjE1ODEzM2E5NzZmNjFmYWJlNjUyZjM4MzFiNTQ2ZDNmOTIgbGVnYWN5LXRydW5rCis0NTQ3MyBlMjM5ZDc0NWM2NDc0MDM3NjAwY2ExNDgzZGEyYzY1ZjFjOGE3ZDUzIGxlZ2FjeS10cnVuaworNDU0NzQgMmM3NmY3MWIyMjNkZTc1YTg4Y2FmOWZjZTY3MTJlMmYyZDkyNTMzNiBsZWdhY3ktdHJ1bmsKKzQ1NDc1IDVjNDUzMzAyZDVmNmEwZWM0MjE0OWFhNjZlN2M1ZDRlNDIxOGNjMGEgbGVnYWN5LXRydW5rCis0NTQ3NiBlYzAwYjc5OGFiNTY5ZWFlODQ3ZWI2ZjZhYzg3ZjE3OGIwZDU4ZWJhIGxlZ2FjeS10cnVuaworNDU0NzcgMzM1MjIzNDIyMTk5Y2U0MzMyODY4ODA2ZjJhODJmZGQwMTE1YjgzMyBsZWdhY3ktdHJ1bmsKKzQ1NDc4IGRkYTdjYzg4YzA1YWFiYzA2MWI5Yjk1ZmM4MTlhYmY0MTU4MzExZGQgbGVnYWN5LXRydW5rCis0NTQ3OSBjMDQxMzZhODA2MmExZGJkNTI1ZjgzYjZhZWE2MWJkYzcwYzhiMjhiIGxlZ2FjeS10cnVuaworNDU0ODAgMzg0ZTkxMjAyNTc4ZjkxNzA1ZGQxMGE5ODMyZWMzNDJmNDcyOWY2YyBsZWdhY3ktdHJ1bmsKKzQ1NDgxIGU4MTliODZhMTUwNmEwMzczNTEzZTMyNmIyYzI5MmFmZjkxOTg5YjMgbGVnYWN5LXRydW5rCis0NTQ4MiBjOTRkNzcwNTA4NWE1NDVjM2Y4MWQ3NmE1NWU4ZmIyYWNhOGQ4NTQxIGxlZ2FjeS10cnVuaworNDU0ODMgMTljMWJhYzE1YmRlYTE0ODczMGQ0OWNiYTMwNTRiYzk3M2Q1YTA0MCBsZWdhY3ktdHJ1bmsKKzQ1NDg0IGIzNzQxNDBlNDY3ZDJlOWEzZmExYjI1OWU3ODVhY2ZhZjQxOTRkNzUgbGVnYWN5LXRydW5rCis0NTQ4NSBmNzk5MWNlNDMxZTUyZWY2NzA3YTVlOWNiNWFiMDI5ZjUwZGNmNjI3IHAzeWsKKzQ1NDg2IDZmMzVmN2JlMzZjM2Q0NWY3OTM4MTM2ZWU3NzQyMTk0NTE5ZDY4YTAgbGVnYWN5LXRydW5rCis0NTQ4NyA4MWJmNGQzNzhiOWU2NzlkNzA0M2I2YjM3ZmI4YTJhZDJhYzBkNzdkIGxlZ2FjeS10cnVuaworNDU0ODggNzAyZDU5N2YyZjY4OWMyY2ZkNGE5YmVmODA3MTdjMTFmNzc5MzBiYiBsZWdhY3ktdHJ1bmsKKzQ1NDg5IGYxMTdhNWZkZTRlNTliZGFlY2EyMGU0ODIwZDRiZGU0N2RhMDE1ZDEgbGVnYWN5LXRydW5rCis0NTQ5MCA0ZDgyMDkzZTJlMTk3ODM2NzE2NmQyZTM4ODczMDcyYTg5MjY0ODVhIGxlZ2FjeS10cnVuaworNDU0OTEgZmJiYzBiZWZmZmY3NzhmYTlhMzhhOGI5MDZhYTk4ZWY5NGJiNDA4ZiBsZWdhY3ktdHJ1bmsKKzQ1NDkyIDE5ZDI0NzdjMTI4MzE2OGI4MTM1MWM5ZTk1OTYwZGIzOGY1MjU4MDYgbGVnYWN5LXRydW5rCis0NTQ5MyA2Y2ZlNDhlNjcyYzRlMDhiODRhZjQ3OWY5ZDA1M2M3NGI2MjNhYjIyIGxlZ2FjeS10cnVuaworNDU0OTQgZWZlNzQ5MjI1YmFlMmM2NTJmODE5OGM1NTg4MGJmMDdhYzM1ZGY0OCBsZWdhY3ktdHJ1bmsKKzQ1NDk1IGRmOWVjYWNiMGJmNjdjMGE1Mzg0MmNhNDZmZDZlYmY4YmI3YWMyZmQgbGVnYWN5LXRydW5rCis0NTQ5NiA1ZjQ1N2Y0MjZkOTE2YzE5OWRhYmYxY2I1MjJkYjM2NzllYTFlOTQyIGxlZ2FjeS10cnVuaworNDU0OTcgY2NjMGI1NDEyNzk5ZWE5MTFhOTM2ZDdhOTM2NDgzN2MwNjJiNjg1YyBsZWdhY3ktdHJ1bmsKKzQ1NDk4IDA4NmQ4NDM0YzdmN2RjMjQ4ODI5NmQwYzg3MDQxZDM0MWRhYTE1MGEgbGVnYWN5LXRydW5rCis0NTQ5OSA1OTk3ZDdjZWQxN2Q3ZGZmMzc4ZmIzMjEyZjgxNjdjOGYwMmRmZmUxIHJlbGVhc2UyNC1tYWludAorNDU1MDAgNmQ4ZTNlNjU5NDdmMmEyNTliYzFlMGQ5NmNjNmNiZDZmNTNkZTdmNiBwM3lrCis0NTUwMSA5Mjc0ODc5ZjA0ODQyOGI4Y2U2ODU2OTJiMWUxMzFkYWNjNjk3MDM4IHAzeWsKKzQ1NTAyIDg1Njk1ZGU2MDQ5ZTAxM2QwNGFmOWRlM2IxMWU1OThmN2MxYTM0YTAgbGVnYWN5LXRydW5rCis0NTUwMyA4NjI1ZTRhNWNlNGQwYmRhNDUyMTc4OTE0N2JhYzYwNGMxNzRmMjI0IGxlZ2FjeS10cnVuaworNDU1MDQgMjBjYjEzYmRmMWYwMDlkNWU5Y2Y3ZDYyYTdkNzA4MTIxMzA2NjQ0MiBsZWdhY3ktdHJ1bmsKKzQ1NTA1IGFjYjYxODM2ZjdmYWFkOWQxMzZjOGQwNDFmMTYwMjBmMzE5NWU4NzEgbGVnYWN5LXRydW5rCis0NTUwNiBjYzkxOTI1MDViNDA1YmM5YzcyMjZmZGJkMjU2YWY1ZWMyNzUzZmIyIGxlZ2FjeS10cnVuaworNDU1MDcgMmUzMjc2ZGMyMzFmNzYwNWUzZGIzM2QxNDNlMmVkNTBjOGU0NTliZiBsZWdhY3ktdHJ1bmsKKzQ1NTA4IDYxYWMxZTMyMmRhNzZkOTdlZTMwN2QxNDllN2ZiMjIwNjY1MDBkZWYgbGVnYWN5LXRydW5rCis0NTUwOSA2ZWI4NmE3MWY1YzgxNjczY2FkMjdmZjI5NWJmOTg1NDUzZGU0ZDY1IGxlZ2FjeS10cnVuaworNDU1MTAgMzEzNTY0ODAyNmM0YWVkNTIxZjJkZGQ0ZmJhM2M3YmEyZjdjN2NjMiBsZWdhY3ktdHJ1bmsKKzQ1NTExIDNlZGUxNzVlYWQzN2E4OTk2ZDU0ZDI5MDJkNGNiZTBlZTljZmIzMGEgbGVnYWN5LXRydW5rCis0NTUxMiBhNWU4Nzk4N2NhZTYzZWE4YzBiNDEzYjdjZjE5MDNkNmRlMDUzZjQyIGxlZ2FjeS10cnVuaworNDU1MTMgZTI1NGI5MjJjNGYzNGVmMGQxYjlkNDAzNjBmM2JmZTQxY2M4MDYxYyBsZWdhY3ktdHJ1bmsKKzQ1NTE2IGZjNTg5NzQxOGYzMWJkNGQ2NmRiZGE2ZmU3ZGU4MmQ4NjBkYzlkM2MgbGVnYWN5LXRydW5rCis0NTUxOCBmNTgzMWZmN2NmYmQyYmFmNDhmNjQ3NDhhMDcxMjBhMDJmODc4ZWI4IHJlbGVhc2UyNC1tYWludAorNDU1MjAgNDU3N2IyNDNiOTgxMzc4ZGZjYTMyNDEwOGU0ODBkN2ZkMmU3OGZlYyBsZWdhY3ktdHJ1bmsKKzQ1NTIzIGJlMmE3ZWM0NjJmZTQxNzlmMmQ0MzEzM2VkYmQ5M2MyZjU3NGMwZjggbGVnYWN5LXRydW5rCis0NTUyNSBmMDQ4MTE2YWFkZTA1NzhjZDJjZDg3ZTg4YWNjMjU4ZTJkZTM4MDZkIGxlZ2FjeS10cnVuaworNDU1MjYgZTg5MmI1NDQyODM1MDhhZWQ1NDZkMWFlMjljNWYxYjY2MmU1NGY0YSBsZWdhY3ktdHJ1bmsKKzQ1NTI3IGQ4MmRjZWQ2ZjFmYTc0MDdhM2VhMTMxYjYzNDgxZTg0OTk3Nzc1NjEgbGVnYWN5LXRydW5rCis0NTUyOCAxNzQwNjJmN2MxYmUwMDY4YTliZjU3OGI4YTViMzI4MTJiMmY2MGZjIGxlZ2FjeS10cnVuaworNDU1MjkgZWU5MGFiMjYwODZhYTQzNTM5ODZkYmJiNzdhZjI0N2ZkMTliMzI3NiBsZWdhY3ktdHJ1bmsKKzQ1NTMwIDMxYjBjZGExMWE2ZDZlYzkyMTdhMjY1ZTBmY2M4NTUzMGM5NTkxZjkgbGVnYWN5LXRydW5rCis0NTUzMSBkNDg4MjQ0ZGYyODg0YjE0NWRmMzgwMmE4YTI0OGJiZmU1YWZlZWZhIGxlZ2FjeS10cnVuaworNDU1MzIgNjM4NjQ0NDU4ZmM3NTI5YzZiMzg5ZjdlYmM3ZGViZWY1NTZlMjQwOCBsZWdhY3ktdHJ1bmsKKzQ1NTMzIDE3Y2NjYTU5MGFlOTM3NzVlODBiMDBiNjFjY2VjNzljOGI0ZmUwYTYgbGVnYWN5LXRydW5rCis0NTUzNCBjYzQ4OTg1YzMyNjZjNDhkMTM3M2Y1NWExNjhjZTM1N2U4OTAwMDMzIGxlZ2FjeS10cnVuaworNDU1MzUgOTEzZDM3OTBmZDk5ZTkxZmE5NTFiMzIwMDRjZjg4ZTgyNDYzM2JiNyBsZWdhY3ktdHJ1bmsKKzQ1NTM3IGUwYTYwMzFkZjdjMGVkZGYzNTFlNmQ3YjI2OTE3YjA5OTc2NDdmMTYgbGVnYWN5LXRydW5rCis0NTUzOSAwYzAxMjJiZDBlYTMxZDZjNGU2OWYzOGY5MTNjMTFlZDEzYmUwMmEyIGxlZ2FjeS10cnVuaworNDU1NDAgMjQwZmU0OTVkMTg2NzBhMjIyYmMyNjNiZmU1YTc5N2NhZTlmMWFkNiByZWxlYXNlMjQtbWFpbnQKKzQ1NTQxIDQ4OGZiYjRjYThlNTE0ZDZmZjBjZDhhNDkzYWU4ODNjMDQ3MGEzYjcgbGVnYWN5LXRydW5rCis0NTU0MiA4NzI1YjkwN2FjYmJmZWRmZGZmMmQ0OWIzYWFmMTQyNzBiZWFiYTNkIGxlZ2FjeS10cnVuaworNDU1NDMgMzVmMjdiYmQ5YWQ4YTJkZjVmNzczNzJiYzU5MjM0MmYxMTU3MmQ5NyBsZWdhY3ktdHJ1bmsKKzQ1NTQ1IGQ2NGJhZGFjNmNmMzEyNjVjOWFlNjU3NGZiMTg2ZDVjOTc5ZjlhYWEgbGVnYWN5LXRydW5rCis0NTU0NiAxMmFiMjBjZDdjMjczYTFjMWMzMzZlY2Q5MWUyYTMzZWFkNGIzMjc0IGxlZ2FjeS10cnVuaworNDU1NDcgZGQ0MTU2YzM2NzAzZmFjZDcyNmRmYjc0MWYxNGUzZGUxYzcwMGJlMCBsZWdhY3ktdHJ1bmsKKzQ1NTQ4IDQxZjEzYjU2ZGMzMmJjZTg0OTZmNzE1MDE3MDU4NDJmOTNmOWU5OWYgbGVnYWN5LXRydW5rCis0NTU1MCBlYmU1OWNkMTgyNzMwMmRlY2U4MGMwOTcwOGVlNjQ3ZjI5ODM4MTI2IHAzeWsKKzQ1NTUxIDE5MDQ1YzVmMGJhMmRhYzYzODU4NDVhYWE4Mjc5MTFjNmNkYmU4YzAgbGVnYWN5LXRydW5rCis0NTU1MyA4MGUwMDM0OTY0N2QwZDM2MTZiMTA2MGU3MzRhZTFiZjRkZmNlNzU3IGxlZ2FjeS10cnVuaworNDU1NjAgMjkyNTdlZjZhYmViN2UwMWQxMzhiZTFiMDlmMjM1ZjkyMTM2NzY2MSBsZWdhY3ktdHJ1bmsKKzQ1NTYyIGI3ZDQ3MWUxMjA0Mjc2YWYyOGU0Y2UyODgxNjBlMDhiNTk5ZGY3YjcgbGVnYWN5LXRydW5rCis0NTU2MyBkYzhlZmQ3MGFiNTY4NjgxMGYxYTY2OTU3NTE3ZjQzMWJhNGZkZmY1IGxlZ2FjeS10cnVuaworNDU1NjQgYWNkOGZiYTYxOTQzMGY4MWJlZDBhZjg0YTYyYjRkMWUzMTZjYzY5NSBsZWdhY3ktdHJ1bmsKKzQ1NTY2IGE0ZDVjZWZjMmRlNDA4NTFjODA3MjJiOGViMzA1NjkxNDQwOTRlZWQgbGVnYWN5LXRydW5rCis0NTU2NyA3NGY0NTlhMjg5YmU5ZGQwYjJmODg0MGM1Mjc3OTBkNjdmZmYwOWQ2IGxlZ2FjeS10cnVuaworNDU1NjggNTY0ZWM5NzM2NWY5ZDlmYWNkYzM0ZjIyNWY3ZDM3ZWFhN2RkNWFiMCBsZWdhY3ktdHJ1bmsKKzQ1NTczIGQ0YWU5YzAzMjViMWE3OWZkOTM5ZTI2ZjQ0M2MyZDcxMGZjMDFlOGQgbGVnYWN5LXRydW5rCis0NTU3NCBlOTZkMWNhZDQ2ODIwNWEzN2M3YzBiYmIzYmIyMzMzMTg1OTM2YjVmIGxlZ2FjeS10cnVuaworNDU1NzUgNDdhYzUyNGRiOGE3YzgzZThkZTRhODlhMTQxZjIwOWYzNWE3ZjQ5NSBsZWdhY3ktdHJ1bmsKKzQ1NTc2IDQ3N2JmOTMwZjNlN2Y0ZWQxMWU1YWJiYjRkMDBhOWRmOWRkYjIxNGIgbGVnYWN5LXRydW5rCis0NTU3OSA3NWU3MDZjMzZjODY0YTE0N2Y2ZTM0Y2FiNjIzMjZhZDRkMGYzMmRmIGxlZ2FjeS10cnVuaworNDU1ODAgZDNlNWM5NTY1ODFjZTJlY2U4MDY3NGRkNmIxMTc2ZDBkMDkyZWI0MSBsZWdhY3ktdHJ1bmsKKzQ1NTgxIGIwZjM3ZjlmYzYzZmY5YjY3MDRmM2U4ZDhjMGQ4OTBkYTNiMDMwZjEgbGVnYWN5LXRydW5rCis0NTU4MiA0Yzg5NDU1MmI5NjgwZjU1YjljNWEzN2VkMmI3YjY1ZWEwOTIwYzcyIGxlZ2FjeS10cnVuaworNDU1ODMgMmZiMTZhNjI5NDE1NzhkYjA3ODdmMWZkYTY1ODg1MDlkMzA2MDY1MiBwM3lrCis0NTU4NyBhYzEyN2NkODY2YTMxMmYyYTNiYzcxYTMxODk0YzJlMmUzMzM2NGY5IGxlZ2FjeS10cnVuaworNDU1ODggYzQzNDFlNmM2YTAzZGU0YjhlZGNmZDM5YTU4YmRiZTk4ZjkzMmU4OCBwM3lrCis0NTU4OSBhNDcxMTdmYTNjYTg4YzQ2MGI1ZWYyOTIzMGI3MGNhNmVlNWY3NzVlIHAzeWsKKzQ1NTkwIGIwZjg4MTQzZGM1Yzk1MDMzNWIzOGVmMjA1MzZhM2Y4ODE2MDk3NTQgbGVnYWN5LXRydW5rCis0NTU5MSBkMzVkYjg0Y2EwNzJjZjQ5YWUyM2Y5NzUzMTQ5NGNiZDY0ZTgxOWU5IGxlZ2FjeS10cnVuaworNDU1OTIgYjlhYWQ2YTc0NDUyZGM1YjcxMGViNWFlYmUzOGM1MzkzNTM4Yzg2YSBwM3lrCis0NTU5MyBhNGM3MGYzOTY4YmU3ZDlmODBhNjNhMmIyNjhlMzc1NTgzMTIzNTQ1IHAzeWsKKzQ1NTk0IDhkZjYwNzk2MzM1NThlNDJlMTk3NDEwNzEzYWYwMjBiMzc1ZjI3NzMgcDN5aworNDU1OTUgNmE0NWYyNmVhNjE5ZTU3MDY5MDM3MGZmODU1OGVhZGVjODVmMDJmZCBwM3lrCis0NTU5NiBiNjhkMjEzNjQ5MTY3MTNiNTNjYmY2NzVmMjE1Mzc2Mzg4ODBiMjE0IGxlZ2FjeS10cnVuaworNDU1OTcgZjczMTg1OWU5YjNiOTEyNjRiMzEyYTgyYzMxMjhkNjZhNDJkOGZmYyBwM3lrCis0NTU5OCA5NmFhNWNlODY0NDU4MDdiZTQ3M2ZlOTMzNTA1OWIxZWY1YmNkMGM3IGxlZ2FjeS10cnVuaworNDU1OTkgNzAyZDg1ZDk0MThhNzQ1NjAzYWZhODUwMGMwNDM2OTBiZjYzNjFjZSBwM3lrCis0NTYwMCBiMjcyNGExMmRkY2U0ZmZjNmYzOTI2NTk2MjcyYzIyZmI0ZjdmZGIyIHAzeWsKKzQ1NjAxIDcyMjQ1MTU5Mjk5ZTAxNTNhZmUyYmMxOTdkNzdmMTFiNTJjODhmM2UgcDN5aworNDU2MDIgYjQ5ODQzYTNhMWRmNGE0YmY1MmQyMjU3ZWEwMDk0NDk5M2VlOGU5NSBsZWdhY3ktdHJ1bmsKKzQ1NjAzIDliYjZlMzVjMWNjNDE4YjgyNWI0NTc5ODE2YjhkMjBjM2QxNjEwNjUgcmVsZWFzZTI0LW1haW50Cis0NTYwNCBjMjhmNzRiZWQ4M2JmODRiZGEwZjZjNGM4MDkwYzY4YjVhMzkzYTc4IGxlZ2FjeS10cnVuaworNDU2MDUgMzAxYzRlZGU0OWRkNmU2MzNmMjlkZDdhZmU1MTAyMTkwZTI4ZWQ1YSBsZWdhY3ktdHJ1bmsKKzQ1NjA2IDViYzkxNWZlZWQxNDBhMWZiODFjYWEwN2NlZmMzYTg2NWYyODRhZjUgbGVnYWN5LXRydW5rCis0NTYwNyA4MTAyNTU3YWZkZjE3NjZlMTRmYjE5OWM3YmNhOWMzMzU0YTYyNTJjIHJlbGVhc2UyNC1tYWludAorNDU2MDggNzQ5YWQyYTM2OTNmMjJiZTdkMDAzNWIyYmNiOGZmMTEyZGU0MTgzYSBsZWdhY3ktdHJ1bmsKKzQ1NjA5IGQ2MmM5ZjY0NjYzODFlNjdkOWEwYzUwODUxNjI0MTY5MmUwNmE1ZGMgbGVnYWN5LXRydW5rCis0NTYxMCBiZDc4NTMzOTRjN2FhNWZhMjk2YTBhMTIyY2U5YWI0NjkwZGE2MjRjIGxlZ2FjeS10cnVuaworNDU2MTEgZDE4YTJjODY2NjA5NWEzN2VlZjhkZDZmODhlMzFjNTQyOGJhYmY4YiBwM3lrCis0NTYxMiA3M2Q4ZTg5Nzc3ZTMzMDI3N2VhNDgzYWY0MDc0OWQ3M2QxNDdkMDE3IGxlZ2FjeS10cnVuaworNDU2MTMgOTFhMDk4MWVjNGMyYzEwNTNlOTY4M2MzOGQyOTQxZGU0MmFhNTQ1ZSBwM3lrCis0NTYxNCBmOWVjYTEzM2NmODg2OWNjNTgyM2Q3ZTc1ZmZmOGY2YmEwNTAwMGUyIGxlZ2FjeS10cnVuaworNDU2MTUgYTMxMjAyYzk0ODVkYWNlYjZkM2RmNDE0MmU0ZmJhNzI5MjAzYmVlZCBwM3lrCis0NTYxNyA3ODE0MGJlNTMxNWJjN2ZmYTQwZmI5ZWM2ZjRhZTQ1OWEzOTE1ODcxIHAzeWsKKzQ1NjE4IDM3YzI4YTZhZDUwMTFjODdlN2ZlNGI4Yjc3Y2IyYzhkMDgzODlkNmUgbGVnYWN5LXRydW5rCis0NTYxOSA1MGUwYmQyZTQ1ODgxNmEyMGVmZGU2NTliYThiOGUxZTVhZmYyZGExIHAzeWsKKzQ1NjIwIGZkNmYxOTBlMjZhOGMxMTllODA2NDhjNjRiYWQxMjE1MTkyZjU3MWYgbGVnYWN5LXRydW5rCis0NTYyMSA1MjU1MTIyMWExMzJkNTUxNzkyYjliZGE2MzBiZTlmMzdjMjVmOTIyIGxlZ2FjeS10cnVuaworNDU2MjIgNTYwODlmYWJhMDU2YTBjMDdiZWUxNTE1NWFjZDk0MDJiMDQ3ZmNkMSBsZWdhY3ktdHJ1bmsKKzQ1NjIzIDA2ZGNkZWRmYzk4ZmE3ZmVkNDY1OGZhNzM3YTRhYzkzNmE5NzRhNDUgcDN5aworNDU2MjQgYzJhZTZkYjMwNTcyYjM4NGU2NzUwMzdhMDI2MTlhNjIzODRmMWFiNSBsZWdhY3ktdHJ1bmsKKzQ1NjI1IGZkMjlhZDBiZWY3MDgzOTVjNGY3OTk2NDY3YmNjNzFjMjM3MjQ5NTggbGVnYWN5LXRydW5rCis0NTYzMCAwZTBlMzE1YjQyMDIzNTdjZTNjNTRmMGRiYjMwODg1ZTkyNzMyZGNlIGxlZ2FjeS10cnVuaworNDU2MzEgYzdlZjkyYjkwNDVjNjg4YTM3YTQ0YzY2NjQ0NDdhNWQ3NjY3YTNjMCBsZWdhY3ktdHJ1bmsKKzQ1NjMyIDcyMDRmYmFjNTc5Y2M4YWM0NWEyZDMwYmM0ZDc1ZDMzOWU4NGRmODcgcmVsZWFzZTI0LW1haW50Cis0NTYzMyA2YzYzNGM2ZDc3ZGQ4ZDNhMDAxOGRhOGEwYjNhZmJjYTRmNTg1MDExIHJlbGVhc2UyNC1tYWludAorNDU2MzQgM2YxNDMxYTllZGNiNzFlOTY5NmViZWIzOWY5MTQ0YTU1MTdlMmNmYiBsZWdhY3ktdHJ1bmsKKzQ1NjM2IDYyOGY0MWE4YjFjZTAzODM4MGRkNGIwZjlmMWZiYTAxZTcxOGIyYTQgbGVnYWN5LXRydW5rCis0NTYzNyA1NGYxNTUzNjlhOWMxMjljMzFjZjk3M2IwNmEwNmUwYzZlMzVmMzcwIHJlbGVhc2UyNC1tYWludAorNDU2MzggZmE2YjQ5YmE5YWU5YjUxOGZiZjE3NTgyOTMxM2Y1MjUwMTcyNGUyZCBsZWdhY3ktdHJ1bmsKKzQ1NjM5IGNlMmVjOGM4MzVlOTM1ZTkwOTcyOTA1NTUxYWE3ZTVkZDQ4MWEwMzcgbGVnYWN5LXRydW5rCis0NTY0MCBkZTRhNWY1NWUyMWRlMTNhNmVlNDgxYjAwZThiYjg3ZDBkY2M1ZTI0IGxlZ2FjeS10cnVuaworNDU2NDEgZmIxODM3ZTg4ZTcyYjYzYjViZjM0ZTRmMmZkYjdiMGUyNTMyOWUxYSBsZWdhY3ktdHJ1bmsKKzQ1NjQyIDEwZjI0MWZjOTU5MzlmOWM5ZDdjOGIyZDFjMmFkYzFlODE2ZDQ3NzEgbGVnYWN5LXRydW5rCis0NTY0MyBhYjRlNjVjODA5ZTZmZjMwMGU2YjQ5YTk4Y2IzNmEzYWU4MTVkYjljIGxlZ2FjeS10cnVuaworNDU2NDQgY2U1NTg1YWZjMjBmOTIxNGQ0NzhjMjA5NTllNGJkMDZhNWM2ZGM1NiBsZWdhY3ktdHJ1bmsKKzQ1NjQ1IDVmOWVhNzZlMjA3MjQ0NDRlNGQwNjU2YmE0ZjRmOTU4NGVlOGViNzIgbGVnYWN5LXRydW5rCis0NTY0NiBmNDlhMmRkYThlNzQ1Njg2ZDQ1NzQzNWM1ZjQ4ODk4N2JlYjk3NjJmIHJlbGVhc2UyNC1tYWludAorNDU2NDcgODM0ZmQ5YjNjZWVlYzIwMjA4YzcxMDg0YTBhNzA2MWFjYmNkNjNjNiBsZWdhY3ktdHJ1bmsKKzQ1NjQ4IDkwNDhkNzZiZjAxZTZkZjQ5ZDk5NGNiMWIwMWI0YjAzODc5MjkzZDQgbGVnYWN5LXRydW5rCis0NTY0OSA3ZGUyODQ5NTg4ODM2MDUxNmYwMjk3OWI4YjkxZGJlYzU0MDRiNjVkIGxlZ2FjeS10cnVuaworNDU2NTAgZmQ4MDhlZTY4ZWI5ODU1ZWUxOWIxMzRhNjBiNTRlNjE3MDI2ODE0YiBwM3lrCis0NTY1MiBhN2YzNzY1ZWE0NjQyOWI0ZjkyZGNiYzVlODgwNDQ5OWQ2YmYzMmM1IHAzeWsKKzQ1NjUzIGFlNmY1MDYwMGM0NmIzYmY1Nzc0ZTdlNjM4ZjlkN2Y1MjZmZGUyMWIgcDN5aworNDU2NTQgODhkYTg0Nzc2MTE5MjkxZGI4ZjQzMjNkNGQyNTliMDMzNGY3NGZjYyBsZWdhY3ktdHJ1bmsKKzQ1NjU2IGUxMjUyY2VhNDM5YzY1ZWI4NWQwZWZlYmUxNjQ0ZGUyNDE0ODQyMDYgcDN5aworNDU2NTcgZDBlNGNlZDQ4N2IzNjdlNDI0ZTUyZTZlZWVmNzIxZWQ5NmM3ZGY2ZiByZWxlYXNlMjQtbWFpbnQKKzQ1NjU4IGEwYWE5MTFiZTk2YTMxZWFjMTVjNDk3YmM5MDU5ZmFmYWE5Y2I2MjEgbGVnYWN5LXRydW5rCis0NTY1OSBiY2Y3MTVhOTg3NzRiMDRkODdhMjE5M2M4NzFjOTUwNGRiNmRmZmVjIHJlbGVhc2UyNC1tYWludAorNDU2NjAgZWE2NzYyOGRkYWU1NjU1MWYzMDBkZmIzOTI1MjJhNjlmMGNjYzk0ZiBsZWdhY3ktdHJ1bmsKKzQ1NjYxIGUzYThhOGRlMzU1ZTNmYjk2YTlhMDljNDRlNzBlODNhNTQ2OThkNzcgbGVnYWN5LXRydW5rCis0NTY2MiA3OTk1OWFmMGY5ZTBmMzFlNjgyOWQ2ZWIyYzk4ZGRmNTg4YjUzOTMxIGxlZ2FjeS10cnVuaworNDU2NjMgOTc3ZTdhN2UxNTVhZDQzOTQ2YzE2NjFjNDliN2ZlODQ0NGM2Y2E5NiBsZWdhY3ktdHJ1bmsKKzQ1NjY0IDdkYTRhZjk1ZWJhZGExMmQ3Y2ZkN2ZiZTJlYjc3Y2I5ZmQwYTgyNDkgbGVnYWN5LXRydW5rCis0NTY2NiA3YmJiMDcxMTNiMjlmZDFiYWM4YTdiNTc2N2ZlZTNlOTEzYmE2OWFjIGxlZ2FjeS10cnVuaworNDU2NjcgMjIyYjQ3ZDY3ZDQzMmI0MTg4MzdmMDY3ODg4MWYxZGEzYTY2OTI4YSBsZWdhY3ktdHJ1bmsKKzQ1NjY4IGQ2YjFlMmIzMDg3ZjM4NDAzZDI0MDU1NTQ1NzQyN2YzZWYzNGVlY2UgbGVnYWN5LXRydW5rCis0NTY2OSBjMjVkZDc1ZTA2Njc5ZWVmMWE5YWYyOGRhM2QxOWY0ZmUwMTIzZjQ0IGxlZ2FjeS10cnVuaworNDU2NzAgOTkxMDY2NTc2NDM0N2E0NTYxMzQwYjVkZmRhNGYzMTQxMWU1YTFjMCBsZWdhY3ktdHJ1bmsKKzQ1NjcxIDUwOWI1MzE3MTk1NGE4MmRlNjQ0ZTk4YTg3OTg2M2RlZTE3ZGQxZjYgbGVnYWN5LXRydW5rCis0NTY3MiAyZmQ0NzdiNjE0ZTNmNjJlYjhmMDNmNzliMWY2NWE1YTAzNjRkZWQ1IGxlZ2FjeS10cnVuaworNDU2NzMgODQ3NzEwZTVkN2UxNjYxY2ZiY2Y5Y2Q4NmFmMzNmMGNjMTBhODY2NiBsZWdhY3ktdHJ1bmsKKzQ1Njc0IDFiMTkyMDM3YjYyZjFmYjk1NjllOWIxZGQ0ZWI2ZTBlZTk0YjZkYzkgbGVnYWN5LXRydW5rCis0NTY3NSA1OGQxMGQ3ZDBhYTExY2VjODNiNzkyOWU3ZDdkYmI2NjI0ODc5NmI0IGxlZ2FjeS10cnVuaworNDU2NzYgYjZkMTBkZDNmOTk3OTVkNjEwOTdjYTBkYTBlMjMxNTA2MmY5YjcwNyBsZWdhY3ktdHJ1bmsKKzQ1Njc3IDZmNGVkZDkxNGM1ODZhMTYxZjNmOTQxNjUzNTExMjQyNmUwNjZmNDAgbGVnYWN5LXRydW5rCis0NTY3OCA3MTY3YzFjMGUwMTMxNzA1ZmNkODU1NjVkNzg2MjRiNGFmNTcyNjNhIHJlbGVhc2UyNC1tYWludAorNDU2NzkgOWMwNDFjODhlYjY3ODM3ODVkNDMzNzZmZjM0ZTY3NGY5MzAyNjQzOCBsZWdhY3ktdHJ1bmsKKzQ1NjgxIGQ2MGZiYzU0YzBkNGRmZWIyYTgyNjU3ZDAxNzU1MmQ2MTQ3MzM3ZGMgbGVnYWN5LXRydW5rCis0NTY4MiA5YWNiNTU1Mjg2ODAzOTllNjgyMGVjZjFiMWE4Mjg4YjJiMjY5OWZkIGxlZ2FjeS10cnVuaworNDU2ODMgYWRiMTBhZmRhNTViNGVkYTM0MGI2NGZmYmRlY2RlZTRiODljZGNhOSBsZWdhY3ktdHJ1bmsKKzQ1Njg1IDk3ZTU5ZDJlNjNkZjYzNzc1MzFjMjgxODU2NWI4NTE0YTU1ZWYyZjAgbGVnYWN5LXRydW5rCis0NTY4NiBkYWQ5YjMzZTc4ZTUzZDkxYmFkYTYyODM0Y2U0ZTllOTI3YTRlNTJjIGxlZ2FjeS10cnVuaworNDU2ODcgYzc4ZDMwNmFhY2NmOTEyNTE1M2JkY2Y3ZGJkMTc1Njc2M2FlMDE2NCBsZWdhY3ktdHJ1bmsKKzQ1Njg4IDJmNGQxN2JjYzk3NTFhOWM0ZmNlYmEyOWM0ZDFlZjRmZTRlZjI3YjggbGVnYWN5LXRydW5rCis0NTY4OSBlMGI3ZTM0YjU5NzEzMzFiYTY1NTFmZWM0MjIxMjkyZmY0M2QwYTRlIHAzeWsKKzQ1NjkwIDhiMGYwNzM1YjI0NmVlMTU2M2U4MjMwMTY0Y2NhMTM0MmI3NDQ3OWQgbGVnYWN5LXRydW5rCis0NTY5MSA3ZTJkNWQzNzRlM2EyZjQ1YWNlOTI2MDRjYWQ2YzYxYzNlYzhlYmFkIElETEUtc3ludGF4LWJyYW5jaAorNDU2OTMgOTJmMjE4YTZiMjBiODQ0ZDM1YTMwY2U2ZDdhODE3ZTQ1ZTdiYTBmZSBwM3lrCis0NTY5NyA2MTIyOGU1NTc5MWYzZWY3MDA3MDZjMTQxYTZkM2Q4OTE4MjE4NGNlIGxlZ2FjeS10cnVuaworNDU2OTggYWNkNWU1NTU5ZTNjMjc4Y2Q3ZWJiNzg3MTgyODAxMzMyZDIxNWY5MSBsZWdhY3ktdHJ1bmsKKzQ1Njk5IDMwMTU1MjBkNjdmZjFiYmFiZmVlYjFlZGRiYTVkZTIwZTA2YjM0NmUgcmVsZWFzZTI0LW1haW50Cis0NTcwMCA4OTViN2RhYmEyZDYwODRhYzA0NTQ4ZjhmYjQyMDFiMmQ4YmE1ZGE4IGxlZ2FjeS10cnVuaworNDU3MDEgMDBkZDFkYWU3ODhiN2QxMTgyYzJiOWM0YzkwMDUzMTJlNTFiNTllYiBsZWdhY3ktdHJ1bmsKKzQ1NzAyIGYzM2U0ZWQ1NTBiOGE0ZjcxMjg1NzhjZTY0NDJkZmYxY2Q3MGMxOTEgbGVnYWN5LXRydW5rCis0NTcwMyA0NDlkNGJhM2NkNDQyNDdhYjBkN2MxOTdiMjY5ZTEwZjVjY2M3NDI0IGxlZ2FjeS10cnVuaworNDU3MDQgMTRjYjJlZWNjNmY4OTQ0ZDJlYWEyNzJhYmRmMGE3ZTk3NzNkNjc5MCBsZWdhY3ktdHJ1bmsKKzQ1NzA2IGFmNDRkYjJhOTUyM2EwNTNhZTNlMmRhYWU0NTEwMGNjNzMyNWZhNmEgbGVnYWN5LXRydW5rCis0NTcwNyA2YzEyNDI3NmExZjBjYWZjZGY0ZGE1YTVkNWJlNmI3Y2VlZjgyMDJiIGxlZ2FjeS10cnVuaworNDU3MDggNDVmODQ5MjliMmFlYjg2NTI0OTU4Yjk5MWM2OGZmZDNiMWVjYzNlZSBsZWdhY3ktdHJ1bmsKKzQ1NzA5IDhlMTQxNDgzODZlYzA0ZTk2MGQyMDI3Njk0OWM1N2M2NDM0YTRmMGUgcmVsZWFzZTI0LW1haW50Cis0NTcxMCBhODY4YzIxOGEyMTMxYjZiNjZmZTM1NWZiNzFjZjlhNzUxYjg3YWQ1IGxlZ2FjeS10cnVuaworNDU3MTEgODg2M2ZlZDZjOGQ3MTlkOWEwZjgxNDcxZTY2NWU0ZDAwMzkzZDY5ZSBsZWdhY3ktdHJ1bmsKKzQ1NzEyIDE4NDM3MTBmMzJlODMyMTM2N2E4NDU1NjFkODUxNWNhZGM2M2I0OWYgbGVnYWN5LXRydW5rCis0NTcxMyBlNWZlYjA1MWMzMmZkYzNlYTY0YTAzNTdkYjRiZGMxZTAwMTFmMmI2IGxlZ2FjeS10cnVuaworNDU3MTQgNzA0YjgwNTI5NjY0YmE0ZTk4OTdjOTQxZDE4OGRlNTZlNDdkMDU1OCBsZWdhY3ktdHJ1bmsKKzQ1NzE1IGI1MzVjMTkxYTQ0YjA4MjA4MjFhM2M3ZWRhODVkYWMyZmFjZTY4NjcgbGVnYWN5LXRydW5rCis0NTcxNiA3ODNjYWI2OTMzNDc3YzQxYzc0NDFiMDdhYTQ2MDA3NzE5YmJmMjMzIHJlbGVhc2UyNC1tYWludAorNDU3MTcgNjhhN2MwMTVhNTQ3NDc4NDAxYjk4ZDFkMDZhY2Q0NWNmMmJlZDMzNyBsZWdhY3ktdHJ1bmsKKzQ1NzE4IDI2OWM2MmM3ZjY2YTUzMzM1ZmIxYmM3N2RjMzViNTA5NjE5ZWYwZDggbGVnYWN5LXRydW5rCis0NTcyMSBkOGQ5MDBkMGViOGE0Njg0Y2ZlNzM4NjVlZTM1NjU1ZDc0ZmM3NTc5IGxlZ2FjeS10cnVuaworNDU3MjIgMDljNDI1YTVhYTNhZjNjZWMxOWRkMmE4ODU5YWYwZTVlMjRiNjRmOSBsZWdhY3ktdHJ1bmsKKzQ1NzIzIGQ1ZTZlNDlhMzg3OTBhZWFhMTdkNDBkYzNmMmMxNWY1YWJiZTc3MDcgbGVnYWN5LXRydW5rCis0NTcyNCAwNmMwNTliOTJkMGJhYzc3YzNkMTBhZDBlM2QyYTM1ODIzN2U1YTgzIGxlZ2FjeS10cnVuaworNDU3MjUgODgzOWVhOTNiNmQ3MDQyOTQ3OTI3YjU1NjlkY2VjMDJhNTZhZjZjNCBsZWdhY3ktdHJ1bmsKKzQ1NzI3IGY4MWNkN2U5ZDAwMWYwODA5Y2I1YTdhNjVjYmFkOThjZGYwZjFhNTkgbGVnYWN5LXRydW5rCis0NTcyOCA1NTY0NGYwYTQwMWJiOTM1ZjVmOWQxYjNiYmI3OTkxODViOWIyOWI3IGxlZ2FjeS10cnVuaworNDU3MjkgMTY0OTcwNGEyMjFhMWE2MTE3NTZhMTc0NWRjZTIwZjQ4Zjk0YjhlMyBsZWdhY3ktdHJ1bmsKKzQ1NzMwIDhkYzJhNGQ4YTIyZTAwNjZmNzY0OTBjYzQyYjFkMTFjMjJjMWFhMTQgbGVnYWN5LXRydW5rCis0NTczMSAzNTg2NjJlMmYyNzNhMmRiYTkwNjBiNGIwYmYxMjM3NGU2MmVjZWU1IGxlZ2FjeS10cnVuaworNDU3MzIgZmVkNmUzN2FkMDNkMTA1MmU3Yjg4NjFiYTIxNGVhNThlNDA4NDU2YSBsZWdhY3ktdHJ1bmsKKzQ1NzMzIDljYzEyYmIwYjcwYTg2NjM0Yjg3ZmI1ODE0ZWMzZTQyYWU4OGRhNzEgbGVnYWN5LXRydW5rCis0NTczNCAyMmJiNWM2Mzg2MmVjNjIyYTk2ZjE2OTI3NDhmM2RhYWYyMjBhYTc0IGxlZ2FjeS10cnVuaworNDU3MzUgN2MyMjJjZTUxYmQ3ZmUwY2YyNTVhOGQyOTRmY2I5ODQ0MmVhNjc0YiBsZWdhY3ktdHJ1bmsKKzQ1NzM3IDg1YzljYTVlMDM1YWRmZjgyZjdmNzNhNGNlM2NiMDY0Mzg3NzU2MGYgbGVnYWN5LXRydW5rCis0NTczOCBhYzA2ODQ1M2E3OGE4MTI2MWRjYzhjZjdmZjE2ODlkM2Y2YmNkZDg1IGxlZ2FjeS10cnVuaworNDU3MzkgOTRkOWUwZGU0ZTQ5ZTMyMGUwOTg0MjJiNjAxYTI3YjUxYjIwMzIwMyBsZWdhY3ktdHJ1bmsKKzQ1NzQwIDBlODA5YjdhODRmMTc4Zjg0OWY3ZTdmYmM1YzUwYzg0YjY0OGZjNWEgbGVnYWN5LXRydW5rCis0NTc0MSAyNmQwNzcwZjJiN2VlMjg5YTM5YTNiNTVkY2VjMWMxZWU2NTg0OWM1IGxlZ2FjeS10cnVuaworNDU3NDIgNTA4NTY3ODU3MzIwNWU1ZTQwYmU3ZmQ4MDgwZDY5MTg2NGUwMTFlYSBsZWdhY3ktdHJ1bmsKKzQ1NzQ5IDA5OTI3ZjJmNzQ3OGU2M2NkYjRhYjU4MDhhNTBlNTMxMGI0ZmJhNGYgbGVnYWN5LXRydW5rCis0NTc1MCA5MjMzNTMyZWM4YjM1MTM1ODJkZWIyMjFjZjgyZDlmOTRjYjA1N2VhIGxlZ2FjeS10cnVuaworNDU3NTEgY2Q5ZWQyNzNhNjg3OTYzM2EyZWU4ZmE2MDIwNDVkNmYzY2RlYmM0ZSBsZWdhY3ktdHJ1bmsKKzQ1NzUyIDFlMWI1MzZjNjhiNjU2MDVlMzExYzc0OTRhODQwMmQ2NTY0Nzc5YTkgcmVsZWFzZTI0LW1haW50Cis0NTc1MyBkZmJkNTdmNGE3MTEyZjkyZjc0NDY1Yzk5ZDVmMzdjZmYzMmM3OTYzIGxlZ2FjeS10cnVuaworNDU3NTQgYTg0YTYyMWVjNWMyNGI5YzcyNzVhZGRhNDM0OWRkOWFjOThmNmVjOCBsZWdhY3ktdHJ1bmsKKzQ1NzU1IDA5MTM0NzdiZDI0ZWE0MGI0NDk4ZjA3OGJmMzhmMmVjM2Y4MGYzYjkgcmVsZWFzZTI0LW1haW50Cis0NTc1NiA3N2ZlYTA2ZWJjMTBhMGI3Mjk0YTE4YTI3YTkyMzVlOGUwZTk1ZWRhIGxlZ2FjeS10cnVuaworNDU3NTcgNzg4ZDg2NjVmZjU4YzU0NGNjOTYzZjdmMTIzODVkMmFhZDNiNWJjNyBsZWdhY3ktdHJ1bmsKKzQ1NzU4IDRkYTBmNzYyMTMyNWMyNjdhMDc4MTBkNWNlYzQyMDI1ZjBhZmEzYTEgbGVnYWN5LXRydW5rCis0NTc2NiBhZjk1MmJjN2ZlYjI2MTU5YTZlZWVkYTgwYmJkYmE1MWE0YTk0Mzc1IGxlZ2FjeS10cnVuaworNDU3NjcgOTQwY2U1YTc2YzVmZjg1YWJmZjc4NDNjODA1Mzk2YWViNTA4ZDAxZSBsZWdhY3ktdHJ1bmsKKzQ1NzY4IGQ1NTE0YTdlYWE0Y2NlY2VmODJiYzc4Yzk2MTlmOWYxNWM5NGE4NTkgbGVnYWN5LXRydW5rCis0NTc2OSAwYjhlNzgyYjg0ODRiODhkZDNjZWUyMThmNGNiZjc0YzJlNjc3YzU2IHAzeWsKKzQ1NzcwIGI1ZTdkNWIzYzQ0MmU3OWRiMTI4NGFiYjM1OTlhZWMyY2IxNmRiNWEgbGVnYWN5LXRydW5rCis0NTc3MSAzODQ1ZjcwZTBiYWZkYTA0YWZhOGNhMGI4M2I2OGJkOTAyYjIzNGI0IGxlZ2FjeS10cnVuaworNDU3NzMgYmI2YzVjMjAwYTNmMDNiZmM5MmRjZGI2YmNjYTAwZjA4ZGMzZjdhNiBsZWdhY3ktdHJ1bmsKKzQ1Nzc0IGI1ZTcxODNhZDExMjI1ZjkzMjYxNDFlOWQ1NzZiOWU1M2U2NGY1ZmYgbGVnYWN5LXRydW5rCis0NTc3NSAzNTE4ZTk0YWE2NjM3MjE5NGU1N2NlMGVkYWZmMjQ5N2U0NWYzZTc5IGxlZ2FjeS10cnVuaworNDU3NzYgMTlhZDNkMzVmYWM0YTg0YTVmMjI5NWNmZGY0YjBlYzQyZWM4MGMxZSBsZWdhY3ktdHJ1bmsKKzQ1Nzc3IDhiYzRhN2U1ZmVmODRmNzE4YmEzYTViYmQ3MGNmNzQyYmExMTEyZWQgbGVnYWN5LXRydW5rCis0NTc3OCA2MWM3ZWM5OTVhZGY1N2UxODM4YTNhZWQzZDI3YWRmNmRmMTk3MzllIGxlZ2FjeS10cnVuaworNDU3NzkgZTlhNzBiMTQ2ODU3OGQ4ZTQ2MDUxNWUwZjQ4ZDAxODNhNzY0NTdiNSByZWxlYXNlMjQtbWFpbnQKKzQ1NzgwIDM0ZDY5NmMxZWViYzY4YzE0YWVlYmExNGRmNmU2NGVmYzI0OGYwNzggbGVnYWN5LXRydW5rCis0NTc4MSA4ZTViNjRhN2IzM2YyYTFlMzhhNmRiMGUxOWM1MDhjN2FkOGFmZTU3IGxlZ2FjeS10cnVuaworNDU3ODIgMzllYjViNTIyNTIzOWNkZWM1MDBkZjE5YzBhODMwMDQ5OGU4YWJlOCByZWxlYXNlMjQtbWFpbnQKKzQ1NzgzIGMxMjQ3MTY5ZjNhMTY2ZDhiMDVjZmMzNzhhYzFhZjVjYzFjNGNkZmYgbGVnYWN5LXRydW5rCis0NTc4NCBkZTJlZThkZWRjZTg5OWFjMjJkODY4YThmYzY3OTE0OGVhZWFlZGJhIHJlbGVhc2UyNC1tYWludAorNDU3ODUgNTY1YmZmZGU4YmYxODMwNjQ4ZmYzMjI2ZjU0ODcyNzA1NzhjMTE5ZiBsZWdhY3ktdHJ1bmsKKzQ1Nzg2IDQ3M2YzN2RlMTNhMTM3ZjQxZjc0NDRhOGMyYTAxNWZhNDNkODliOWEgbGVnYWN5LXRydW5rCis0NTc4NyAyNTQ2YzQ3NzM0YTAxNWY4Zjk1YzY3NWU3ZWE1MDk2NjdiNzU4NGQyIHJlbGVhc2UyNC1tYWludAorNDU3ODggOGJkYmVkNjdhZGY3ODZlODU5N2ZhMmZkMDJjNGMwZmI2NDQ3ODcxMiBsZWdhY3ktdHJ1bmsKKzQ1NzkyIDM4OWU5MjJhNjQ3YzExMDJmNWYxZmYyNmE2ZDMxYjEzMWE4Mjg2NGEgbGVnYWN5LXRydW5rCis0NTc5MyA4NzRkNzdlZWZjZTQzMWMwZDgwOWVmZTM5ZDEwNTExNGY4OTYxYjQxIHJlbGVhc2UyNC1tYWludAorNDU3OTYgZjI3NDJhY2EyYWQwN2Y0NDI0YjRjYmU5YzdlYjMzNjMwMWIzOTM5YyBsZWdhY3ktdHJ1bmsKKzQ1Nzk5IGYwODA5NDgzYjRkMDVmMWI3ZjJmMGNhMmVlNGJmZjU3MDQ3YTNiYzIgcmVsZWFzZTI0LW1haW50Cis0NTgwMCAzNmM3YTQ0MjJlMzA3NTk0NWU4MTYwZTVkMjkzYzFjNzQzNzk2MTQ3IGxlZ2FjeS10cnVuaworNDU4MDEgNTczOThlYjk3OGMyNTRlNjcwYTcwMmM5OGRhY2RkZDlmZDkzZTgxMiBsZWdhY3ktdHJ1bmsKKzQ1ODAyIDg0NjlkM2Q4ZDRlZGI3NDZmOTk1ZjRmNTZlMWEwZGMyNmUxNDA2ZDUgbGVnYWN5LXRydW5rCis0NTgwMyA4ODczZDMwYTE0MGY4NDQwYjc5NmI3ODI0YzgxMWU3NzkzNWYzZGRlIGxlZ2FjeS10cnVuaworNDU4MDggNWMyMjc3YTI5NGVhNDVlM2I0YzBmMjFiMGUxZThjNjAxMzI4ZDAxMyBsZWdhY3ktdHJ1bmsKKzQ1ODA5IDUxYjZmOGUwNDJkZmJmOWJmNTlmMzlkYzFlZDZmYmY5YTMxNjUzZGEgbGVnYWN5LXRydW5rCis0NTgxMCAzZjUxZmZkNWQ4YmY3N2FhOTJmYmViMDQ4ZDgzNWI4OTY2MjRlMzA4IGxlZ2FjeS10cnVuaworNDU4MTEgZjYyNmQ1MmZhYmYwNDRjM2FkODkwM2IwNzYxOWUyNjEwYWQwMWQ5ZCBsZWdhY3ktdHJ1bmsKKzQ1ODEyIDQ2NWY1YjNhMDIzNDg0YTMzNThjZWQ0YTNkODVlZDQxZWY5Y2MyNjkgcDN5aworNDU4MTMgYWNhZjI3NjM5YTQxMWJmYmNmMGE0ZjUyOTk3MzZmOTY1M2RmYzcwZiBwM3lrCis0NTgxNCA2MTRjOTIxNzA3Zjk1NGE2ZjI0YTg1ZDk0MWZmZGFhNzAwNDZhZmRlIGxlZ2FjeS10cnVuaworNDU4MTUgMmEyODkxNTYxNmQ1MDFiYWE1YzU5MWYzOGJlYjBlMzcwNzY0MDA5OSBsZWdhY3ktdHJ1bmsKKzQ1ODE3IDMyYTE4N2YzZDViYTkzNmFjYzNmMDFjMzg5NTJhMjUyZDdiNDkwZDUgbGVnYWN5LXRydW5rCis0NTgxOSBlNGU4NDgyMTRkMjM4NTFiZDNlYjRlY2ZiYzM1ODc0Y2ZjMTkyZmJlIGxlZ2FjeS10cnVuaworNDU4MjAgYWI1M2EzNzhlZGE4ZjliMzczM2FkZjIxZGQ1NjA3Y2Q3NTY2ZGVjNiByZWxlYXNlMjQtbWFpbnQKKzQ1ODIxIGZjYzYxODM1YzZhYzhlNmYzOTg1OGM0MzM4ODdjNTU0OGNlNzhjYmIgbGVnYWN5LXRydW5rCis0NTgyMiA2OWYwNDU3YzE3YmIxODA4NTc4NTZiYmNlNGNkMDFhOTNmODZiMzFlIGxlZ2FjeS10cnVuaworNDU4MjQgOGY3YWJjMmJhN2QwYTIyZDVmMzAyYTMzNzY2YTNlODM2Y2UxMmVmNiBsZWdhY3ktdHJ1bmsKKzQ1ODI1IDlhYmVhYjk2YWY1NzIzNmQzYWZkZGIxN2EzN2UwYTY0MTk2YmEzYmEgbGVnYWN5LXRydW5rCis0NTgyNiA3Y2M3YzdhMTM2OTdiY2YwMmJmZTI1MmMwZWIwNWM0NzU3ZGJjY2VjIGxlZ2FjeS10cnVuaworNDU4MjcgODFkOTFmZjgwMDNiOTk0M2IxYzM1N2EyNjM5MGMwN2VjMDA3ZmE1MCBsZWdhY3ktdHJ1bmsKKzQ1ODI4IGY4OTQxMDQ0ODAxY2JmYjNkZjQzMjUxN2Q5ZmRiOTA4YTgzNDViMjQgbGVnYWN5LXRydW5rCis0NTgyOSBmYzdiNjE4MWQwOWVhZTMxN2Q5MmRjNDNhMDA0MjJmZDM4NWE1MzdlIHJlbGVhc2UyNC1tYWludAorNDU4MzAgZjYyYmQ1MTE4Yzc4Y2YzNDViNjgzOGJjMDU5NDI4NDczZDQxYjMxZiBsZWdhY3ktdHJ1bmsKKzQ1ODMxIDA3MzZiMjVjNTdjNTc2ODEzY2YwM2UxNzEzMzJkNTk4NGIwZDdjZWIgcmVsZWFzZTIzLW1haW50Cis0NTgzMiAxMzViMTc3ODgzYzM0MjViZWE2ZWI0YTUxZjE1NWJkYjFlZjM5MGNiIGxlZ2FjeS10cnVuaworNDU4MzMgYjg1MDdkZWQ0ZDE1Y2MzOGE4ODczNWNjZjY4OGY1ODYzZmQxOGI4NyBsZWdhY3ktdHJ1bmsKKzQ1ODM0IGVmZWViYzg3NzBlNWU2MjFiMWY0MjVkODEwY2M1NjU2YjI4ZmE3YmUgcmVsZWFzZTI0LW1haW50Cis0NTgzNiBjYTZjOTE1MzFhOTY3ODcwNDA1NzFkNGM0NWZmZTM4MDI5N2RkZDczIGxlZ2FjeS10cnVuaworNDU4MzcgY2YxOWExMjNhNWQ5YWNjYzYyNGYxNzBjZTUyNzRiZWY5ZjVmYWI4MiBsZWdhY3ktdHJ1bmsKKzQ1ODM4IDliNzVhZDIzNmYwMDAwODBkNmFjM2JkMDhlYTNkNDQ5OTI4YmM3MGQgbGVnYWN5LXRydW5rCis0NTgzOSBkNzZiOWFhNzIyOWZjNjk2MTg2MjNkZGQ0ZWIxMDBiOGYwM2NjZTFmIGxlZ2FjeS10cnVuaworNDU4NDAgZWU5OGVjZjA1NzczYTcwNzE3N2QzMzU1MWZmZWNiOGY4ZTQ5NTJmYyBsZWdhY3ktdHJ1bmsKKzQ1ODQxIDYzNTFjZDBmN2MyODVmOTI3OWFkZDFiNTVkYTZmZDA3Mjk2NzExZjMgbGVnYWN5LXRydW5rCis0NTg0MiBlZDMzNWU1MmQxNzA1NDk0ZmNhNzA3NjQzMjY4NjFhYWIwOWZhYjFkIGxlZ2FjeS10cnVuaworNDU4NDMgN2I4M2I2OGJlOGE2N2E0NWFhZGY2MDIwZDkyMTgyMWQ0NzBkNDQ5NSBsZWdhY3ktdHJ1bmsKKzQ1ODQ0IDEyOGMwMDYxYjViYjI2YjI5ZWJkNTM2MDYzZjY5ZjMyMWFlMTE4MGYgbGVnYWN5LXRydW5rCis0NTg1MCBjOTIwMmYxYzU2YzI3NGUzMDE3NzcyZTJiODUxMTJkMGM0ZDBhOGU5IGxlZ2FjeS10cnVuaworNDU4NTIgYjFjYmM2MDViZWM5Y2RmOWE0NmYwM2RkZTg3YzIyMzQ5NWNhZjkxYiBsZWdhY3ktdHJ1bmsKKzQ1ODUzIDcyOGMxNmYxNjI2NzFmMzQxYjc5YzJhZTc1MTk0ZjYyNWRlMjU3MjEgbGVnYWN5LXRydW5rCis0NTg1NCBiOGVjNjg5Y2IyZmJjYzRmNmFjYmQxYzBkOWUxYzc1YzkxNmRjZjc5IGxlZ2FjeS10cnVuaworNDU4NTUgYjdiNWYwYjM0ZDI1Y2NkZDdjMWUxYTFmYzg2MzczMGFkNGE0YzcxZSBsZWdhY3ktdHJ1bmsKKzQ1ODU2IDlhMTdiODJlYWZjOTQxMjdhMzdmYWM5ZmYyY2IyZGNiMmVkYmE5YzggbGVnYWN5LXRydW5rCis0NTg1OCBiYjNlMGM4ODk2MzI1YTUxMzAxMWEzNzA2MDIzMTIzNDhjNGUxYTE0IGxlZ2FjeS10cnVuaworNDU4NjIgYTgxMmQwZmFlNzRhNDI4YTE3MmVlMGZhYTU5ZTk4YmI5YWM4MDY1MyBsZWdhY3ktdHJ1bmsKKzQ1ODYzIGZlMjkzOThmNDhjOThkZmUwYjhiNzZmYjM5Y2YxODkzOWMzZTgwNWUgbGVnYWN5LXRydW5rCis0NTg2NCBhYzcyOTAwZTE5MTlhMWZlYmVjYTY2ZmFjYTg4MzczZDBiYTQ0ODNlIGxlZ2FjeS10cnVuaworNDU4NjUgYjcwNmIxMDBjOGZjMGEwMzg1MTNmMTA1ZjY4NjE4MmJhMDExMjY3NyBsZWdhY3ktdHJ1bmsKKzQ1ODY2IDhhYWY1N2JjY2JmOGI1NjgzYThhZGY3ODZiMzUzN2E5MGU3ZGE2NmUgbGVnYWN5LXRydW5rCis0NTg2NyA2Njg3NWI5Yzg5ZjQ1NDVmNTQ4ZGEzMGYzNzU1ZTIzNDk0MjNlYzRkIGxlZ2FjeS10cnVuaworNDU4NjggNjZmMWIzZWJhZWUzYTIxOWYyOTEzMzIzZmU2ZTZmNWY4N2NjOTM4NCBsZWdhY3ktdHJ1bmsKKzQ1ODY5IDZlMGIwNTNjNmNmN2IxNzZhYjVlMWI2ZTJiNjUxN2NjMWIxMmMzYmUgbGVnYWN5LXRydW5rCis0NTg3MCAwZmEzYmFkNDg5ZGQ0NzdmYzhmMzg4YTAzM2E5NGZmZmFjNDZjODgwIGxlZ2FjeS10cnVuaworNDU4NzEgYmM0OGU2YjFlNjU0NTVjN2VlOTAwYzgwNzQ1YzAyMDI5OTBhNjMxMiBsZWdhY3ktdHJ1bmsKKzQ1ODcyIDZhMTQ2OWIzOWQ3Mzc4NTNiY2QwNDE0NDhlOGRlNWY0NzliM2M3YTEgbGVnYWN5LXRydW5rCis0NTg3MyBlYjAzNTYyZGY0YTc5Njg0N2NhM2NjZjA0NmY5ZDE1Yjg4MGI1ZGJmIGxlZ2FjeS10cnVuaworNDU4NzYgNTQ1N2FiOWY4NTk5MTdiMDRiMWIzOWNmNTZmZGMxZDNkOGRjNzRlMiBsZWdhY3ktdHJ1bmsKKzQ1ODc3IGU1ZDExZGZiMmQwOGVjNmMxZjk1M2E4MDdiZDE3Zjc2ZThjMTRlZGUgbGVnYWN5LXRydW5rCis0NTg3OSAyM2Q0YWMzM2FjMTZlNzRjMjFkZWQ5ZDJiOTk1Y2E1MGIyZGQ2Yzc2IGxlZ2FjeS10cnVuaworNDU4ODAgYzA2YTYyZjA1ODlmYmE0YTgzODY0N2FjMjU1MTZlOTA1ZjU0MjE2MiByZWxlYXNlMjQtbWFpbnQKKzQ1ODgxIDRmNzJhNDlkNzBjODA1YzBmOTcxNzZlN2IyOWJkM2JlOTdkYzEwODIgbGVnYWN5LXRydW5rCis0NTg4NyA2YmMxZTgzYTk3YTY5ZmI4OTlhYTRkZWE0NzA5ZjQ4NGVjNTQ0MjU2IGxlZ2FjeS10cnVuaworNDU4ODggZTkyYThiOGVlYzczYjgzY2I1NjViZTlmYTk0MjM2MjdhNzhjODAyYiBsZWdhY3ktdHJ1bmsKKzQ1ODg5IGEwNmI2OWY4YzI3NmE4OTQxZGJjZTJlZTIxZTMwZTY0OWNlMmM1YjkgbGVnYWN5LXRydW5rCis0NTg5MCA4OGI4OWY5NmI5N2ZmMDc5NzdmNGNmZmM4NmJiNTcxODgxMzFjYzU3IGxlZ2FjeS10cnVuaworNDU4OTEgOGMzODNlZjc4MTk4NDlhOGM4YjBiY2ZhMWZhZjljMWZiZjg0NTJmMCBsZWdhY3ktdHJ1bmsKKzQ1ODkyIDAyNTE4Y2YxN2E2NmVhNzYxN2E3YzEzZGZkMzQ5NmNiOGVlMTM2MmQgcmVsZWFzZTI0LW1haW50Cis0NTg5MyAyOTQyNTA4NmU5YWI2MjhiMzE5MjRjZjZjYjMyMmY1YmRmMmY2M2U5IGxlZ2FjeS10cnVuaworNDU4OTQgMjIwYWQyMDM5NGRmMGIzMWE0ZGU1OWYxMDI5MmI4MjliYWIwZmM0YiBsZWdhY3ktdHJ1bmsKKzQ1ODk1IDkxYTY0MzZmMGE1ODRlMTJkNGE2YmUzODRlZDdiZGU4NTAwMDVlN2YgbGVnYWN5LXRydW5rCis0NTg5NiBjZTJhN2ZhZGMyYjA0ZTIzODhlMDg5NDY2ZmUzMDE4YzllNTZmN2UyIHJlbGVhc2UyNC1tYWludAorNDU4OTcgMGU3ZDM0YWFlYTYxMzFlZDk3YTBjMWI4NjZiMmU2MTk3ZWE4Yzk3MSBsZWdhY3ktdHJ1bmsKKzQ1ODk4IGJlNDk2NDVlMzk4NDEwYTY2YjkyZWY5YjEyOTA1MGE4NDNlNWJjMDMgbGVnYWN5LXRydW5rCis0NTg5OSBiNThmNzUwZDUyMTAxZmUzNzc3OTUxNzgxOWMzZDhkYjJmMDRjYjgyIGxlZ2FjeS10cnVuaworNDU5MDAgNzljOGEyYTk4OGNiMzk0NDc5YWEyYTA2MTUyZmIwMGMyMjc5YzcwOSBsZWdhY3ktdHJ1bmsKKzQ1OTA1IGE2YTEzNTlhYWI4NGRmNTMxZDdkMDM3YTc4NDJhODFjYzhhY2VkOGIgcDN5aworNDU5MDkgYmUwY2NhNzBjY2FhZGIzMTE1MmU1NTI1YzcxYmJjYTBlOGE3ODQ2MCByZWxlYXNlMjQtbWFpbnQKKzQ1OTEwIDU3YmQ3YzdkOTFlM2FiZTAyMWFlNWIzMDdiNmEzNjExZmU4ZDFmYmEgcDN5aworNDU5MTMgMzYxODEyNmM2MzA0YzcxYTgzMzgxM2UxZWY0NThiNDRkNGYzMDA0NiBsZWdhY3ktdHJ1bmsKKzQ1OTE0IGMwMWMzMzdhZDYxODhlZmUwMjVhOTE2MmQxMTg0OGUzYWQ5ZmVmMDIgbGVnYWN5LXRydW5rCis0NTkxNSBhNTk2ZWQ5M2NmNDI2NGIyN2RjZGY0NjYyMDMzYmUxNzVkZDc1Y2YxIGxlZ2FjeS10cnVuaworNDU5MTYgNzQxZmI4M2I0ZWFiNDc2MTJkOTA4YTcwMjE5OWNjMWFiOWZiODliYiBsZWdhY3ktdHJ1bmsKKzQ1OTIwIGMzMzQyZDg4YWVmZDRjYjY3OTdiOTBkNzU4M2Y1YjNiOWNhYzNkZDAgbGVnYWN5LXRydW5rCis0NTkyMSAyYzVlNzRjNjQ1ZTI4Yzk4ZGM2NThiM2JlY2NmOGUyOWNjNjA1MDhmIHJlbGVhc2UyNC1tYWludAorNDU5MjQgYzNhMzZkNDU2ZGVhMGJmMzNiNDk1NmJlNGFhNTU4OTAxM2Y5M2I0ZiBsZWdhY3ktdHJ1bmsKKzQ1OTI1IDBkODc5YmZmMjVmNjZjNzIwZDdkOGE3OTU5MWZhZWY3N2VkOTU5NjYgbGVnYWN5LXRydW5rCis0NTkyNiA5MGRkNTdmY2QyNGUxMmJhZDMxZDYzMDZhYTNkOTQ1Njk5MGNhZGE3IGxlZ2FjeS10cnVuaworNDU5MzEgNGMzOTE4ZjIzMDNiNWE5NWJmN2RhODA2NWVkODgyYzc4ZmQ0Zjg0NSBsZWdhY3ktdHJ1bmsKKzQ1OTMyIGU3MDM1Mjc1MjQ1YmFlMzY2ZjA1NWVjZGE5M2QyNzVjOWY0Nzc4MjEgbGVnYWN5LXRydW5rCis0NTkzNCBkMDE3MDI3NmM1ZGVkMzA0YmQ0NDM4ZjA5NjAyY2M4ZjQ0ZGI0Mzg5IGxlZ2FjeS10cnVuaworNDU5MzYgZGRmMDA2OWY2MWY5MmQ3ZWQ1ZDhjNmI2MWQ2NGY2OGI3ZWVjNjc1MyBsZWdhY3ktdHJ1bmsKKzQ1OTM4IDgyMjVhZWU5MTkwNDk1MDkzYWQ4NTg2MjczZWNiZTk3ZWRmNjMwNmEgbGVnYWN5LXRydW5rCis0NTkzOSA2ZDFlMjQwYzkxOGMxMmYwNzRjYzhhNDMzMDgxZWM0NGVkZmY5NDY5IGxlZ2FjeS10cnVuaworNDU5NDAgYjQ0ODU5ZjBiMzA4YmM4NDk2MTMyYjA0NGY3Nzk0NjJlM2NjZTYwMCBsZWdhY3ktdHJ1bmsKKzQ1OTQxIGViNDg3OWMwODVhYWE4N2YyYjk2NzkwZjE0ODE0YWE3MmFlMmNjMDcgbGVnYWN5LXRydW5rCis0NTk0MyBjZTBiNDdkM2U1ZDEwYzcwMjk2YWVkOTg1MTljMzI0ODA5ODI3ZTZmIGxlZ2FjeS10cnVuaworNDU5NDQgMDYwNmI5YzA4YWMyNGYxZGRiNzg1N2U1MmZjM2Y2ZThmOTdlMzQ0OSBsZWdhY3ktdHJ1bmsKKzQ1OTQ1IGYzYTVlMTUzYzMyOTQ5YjgxMTcxNjgyYmZlZTQ4NWFkMjIwYmNiMDQgcmVsZWFzZTI0LW1haW50Cis0NTk0NiA0Yzk5MjJkOGRjZGQxMDdmYzE4OTg3YTg2YTZlYTNjMDlhOTg1NDVmIHJlbGVhc2UyNC1tYWludAorNDU5NDcgZjFlMjQ0NTJkYmJhN2IxYWVkNDY5YmZhMDVlNThiYThkMDVmZDM1ZSBsZWdhY3ktdHJ1bmsKKzQ1OTQ4IDhkYTA4ZDg1ZmNiMWU2OTJlMTAyNzcyMDAwN2ViZjI2NzY0ZmEzZjggbGVnYWN5LXRydW5rCis0NTk0OSA5N2RiM2Q5YjE0NTgwMDkxYzQzZTU4MWI0Yjc4YzU3YzY3NDM1NTFmIGxlZ2FjeS10cnVuaworNDU5NTAgOGM4NmNhOGYyNjgyODgwMWQ3NDQ5NjM3MGMzMmE1ODE0NjdiODQ2MCBsZWdhY3ktdHJ1bmsKKzQ1OTUxIGVlYTE3NmU2N2YyMjg4NGM1NTY5Njk3ZDgxMGEyZWI1YjY2NjIwYWMgcmVsZWFzZTI0LW1haW50Cis0NTk1MiAxNDU3MzM2ZDQzMmZlNDU5YmVhOGMwNTRiOWQxNjc5MDMzNmNkYjFjIGxlZ2FjeS10cnVuaworNDU5NTMgNDI3MjhjYjE4ZWEyNTYwYzFkYTY1ZDc2ZmU1MjE0MzNhNjc0MmI3MiByZWxlYXNlMjQtbWFpbnQKKzQ1OTU0IGY2MWM4OTJjYWRhYzk3NzQxNTRhNGQ0OWZkNjFjOTQ4YjcwZjgxOWUgbGVnYWN5LXRydW5rCis0NTk1NSA3ZmU0OWRiY2JiZGFiMWM5NTk5ZTRlNWQ2NTYzOTdiODIyYmIyNzZlIGxlZ2FjeS10cnVuaworNDU5NTYgZjI2ZmMzYWVlZjk2Y2I0NzhlYjhmZWJlZGU1YTczMDA0ZWQ5OWNiZCBsZWdhY3ktdHJ1bmsKKzQ1OTU3IDY3MDEzMDllZmE3Njg2ZTYwMjcyMmNkMzUxNzQzN2FkZTExZjZiNDAgbGVnYWN5LXRydW5rCis0NTk1OCA4NmEwNTFkMjI2NGQyYTI5MDU4MmI0ZWYwOGEyNWY1ODVlZWMxMTk0IHJlbGVhc2UyNC1tYWludAorNDU5NjAgOWQ0ZmNjMzkwMjM2ZTRhYjVkODEwMDVkNTJkYmVjYTc0YTJkMzJhZCBsZWdhY3ktdHJ1bmsKKzQ1OTYzIDlhNjM3YmY0ZGY0MjdhYmEzYWZjYTA3NjJjMzIzMWUwZDBlNjk4ZDYgbGVnYWN5LXRydW5rCis0NTk2NCBlMmVmNjBmZWMzZGFkOTFhNmRmMWU0NTE0YjAyMGU1N2Y1MGE3MWEyIGxlZ2FjeS10cnVuaworNDU5NjUgNDA4MmQxYTExOTE3YzEwZjIwOTNkODJhNDc4OGRkYmJjZTM0ZWExOSBsZWdhY3ktdHJ1bmsKKzQ1OTY2IDhmNDA4YWEyYTdlZmE0N2Y0YTViMDcwNDZkNWFmNGUxMDg1ZTk1NTMgcmVsZWFzZTI0LW1haW50Cis0NTk2NyAyYTliNDVkYzMxMTQxZDllYmI0MTU5Zjc5ZWQwNjMwOWViYWU0YmZiIGxlZ2FjeS10cnVuaworNDU5NjggYjIxYmU5ZDIzNDFhOTA3Mjk3NDg1M2ZkZWQ5NTgwNGEzYWVhYTEzZCBsZWdhY3ktdHJ1bmsKKzQ1OTY5IDdmYzkzZDk1MzBiZjYwZGY4NTI4MjYwMmQzNTQ0MDA0MjZlMGExZDMgbGVnYWN5LXRydW5rCis0NTk3MCBjNGFhNTZkN2E1YzEwNjM5NDM2NzViOTM4ZGU0YWE2NzJkNjYzYTBjIGxlZ2FjeS10cnVuaworNDU5NzQgNWUzNTQzYjc4MzM3YmEzNzZiMjFhOWNhYjhhNjJjYjI3Yzk1NzJiNyBsZWdhY3ktdHJ1bmsKKzQ1OTc1IGJmMzczNTIwNjg3MWJkMjdlOWRhMWMzOGFjZTA4NmRjNTcwMGI5ZDUgbGVnYWN5LXRydW5rCis0NTk3NiAwNzk1MzcyYTg0YWJmZTBkYzYyNWJjMGE3ZGViZDM5NzczYzFmMmUzIGxlZ2FjeS10cnVuaworNDU5NzcgNzg5MGY2YjkyYzE0OWNmOWIxOTY0YWE5MWUwYTI1YWQzN2MzMzdjOSBsZWdhY3ktdHJ1bmsKKzQ1OTc4IDRkZTMxNTVlMTkyYmM5OTA4ZjZmZGRjOGM4M2Y2YmQxNzJiOWViNTYgbGVnYWN5LXRydW5rCis0NTk3OSBjZjc4ZjljNDc5MGVlMTI5OWE5NGNkM2Q1MTM3ODNmODhlZWRhYmRhIHJlbGVhc2UyNC1tYWludAorNDU5ODAgNTc0ZmZjNGQ3YmY2YmM3Nzc0MDViZjA0NGFmNWNkZjZiZDFkMjY1NiBsZWdhY3ktdHJ1bmsKKzQ1OTgxIGJiNjA5Mjk5NTQwOTkzNTEzNmEwMmM5ZDBlOWZiODNlODE3ZTFkYWUgbGVnYWN5LXRydW5rCis0NTk4MiBhNzk3ZWZiNGU3ZjgzZmVmMjM1MzNiYjRjMDQ3NzVlNjc1MzFiMzM4IGxlZ2FjeS10cnVuaworNDU5ODcgODVjODI4ODc4MTg4YjM1ZGJkZTA0ZGE1NzRhODI5NjBjY2NjMTdlYyBsZWdhY3ktdHJ1bmsKKzQ1OTg4IDhiNjAxN2M5MzdhYzI3ZjAwODkzYWExZTk5NGE4ZTdmMTY2YjhkYWQgbGVnYWN5LXRydW5rCis0NTk4OSA1MjU2MjRlOTRlNzhhZTc2ZGE4ZTg1MzJhYTM5NzFjMmI0ZGJjOGY3IHJlbGVhc2UyNC1tYWludAorNDU5OTAgMzI0NzJlYTVmM2NkYjYwOGYzNjcwMmRmYmIyZGVkYjAwZTE1OWIyYyBsZWdhY3ktdHJ1bmsKKzQ1OTkyIDM4MGRhZDM5NTU5OTE0ZjlkNTQ3NmFmZGZkMmY4MDg0NDkwOWFlZmUgbGVnYWN5LXRydW5rCis0NTk5MyBlYmQ1NzMyMTBlMjUwMzhjZTQ0YzA1MDY4ZTE2OTg1ZmY1ZDZiYjdhIGxlZ2FjeS10cnVuaworNDU5OTQgNGJkZjI3YmQ3M2QyMmFkNWU3NzRiMjYyMGE3YTNlZTgzZjRhMDk4MSBsZWdhY3ktdHJ1bmsKKzQ1OTk1IGNkZjhmNTMzNDQyNjllOTIwNGQ2NTlhZDc2N2MxNGI4MWE0OGVkMjAgbGVnYWN5LXRydW5rCis0NTk5NiA2NzY0OTJhOTNjOGE3YmY3ZGVjNTdiMWY2YTk5ZDIzNWYwN2IxNzMwIGxlZ2FjeS10cnVuaworNDU5OTcgZWY4MmM1ZDAxNDYwN2ZiYjU4ZmMwYzEwYTc5NWY5NTViODY0NTdiZSBsZWdhY3ktdHJ1bmsKKzQ1OTk4IGYyNTJjNmFlMGM0MjY0MzYyNmM5NDYyNWE1ZTcwNjA3NTQ1MTJjZWQgbGVnYWN5LXRydW5rCis0NTk5OSAyOWI3MzZmMDczYTM1YzNmYjhlNDA0MDIxNjdmYWI1M2ZmYTBmNGI0IGxlZ2FjeS10cnVuaworNDYwMDAgYWI3MDRiOTllMTUwY2YwMzc1OWU3ZWE2ZWZlYmNkY2Q2ODAzM2JmZiBsZWdhY3ktdHJ1bmsKKzQ2MDAxIGQ4MzU1Y2NjZmY0YWNmYzI5N2MyNjA4MmYyY2NkM2Y2MjE4NzJjYTcgbGVnYWN5LXRydW5rCis0NjAwMiBmZWE1ZDJmZDliOGE0ODNjNzExOTY4YzhiNzEwZjA1YTM5ODQ5MTlmIHJlbGVhc2UyNC1tYWludAorNDYwMDMgZTdkMzBkNzVkYWU3YzJiZmI0MDg1ODg0MDgyNjM2ZTc0Zjg0MTAzYyBsZWdhY3ktdHJ1bmsKKzQ2MDA1IGFkOGI3NmU5OTI2MTA1MmIxOTE2ZDMwMjczYzY3M2U4OTUxNTJkMjcgbGVnYWN5LXRydW5rCis0NjAwNyBjYTEwNTA3YTZhZmJmM2NjN2I2ZmJjMzI3MWEzYmFlZTYxOGM1NDM2IGxlZ2FjeS10cnVuaworNDYwMDkgMGFlNGJiNzRlNzgxYTgzNGMzYTRkOTIzYjI2MWVkMGU2N2JjOGFjZSBsZWdhY3ktdHJ1bmsKKzQ2MDEwIDMzNzlhZDY2YjBlMDczYTQ1ZmM3NTFlYWI1NTljM2QwNzViMWMxMzYgbGVnYWN5LXRydW5rCis0NjAxMSAzYjVjZDdjNjZkYTA5MDk3ODc1YmRkOTcwOTljOGQzMDdmMjUxNDJhIHJlbGVhc2UyNC1tYWludAorNDYwMTIgZDZkODc5YWYzNmQzNGE1YzcwYTIxYWFhNzY1NmVjYTU1ODJlNjFiYiBsZWdhY3ktdHJ1bmsKKzQ2MDE1IGY4Mzg1ZDZjOGY1ZWUxNjA0NTFlNzllZjk5M2ViZTkxYmU3MDVkZWMgbGVnYWN5LXRydW5rCis0NjAxNiA2Y2Y0NjYyNzYzYTFhMjkzYzQ2NDQ2YWRiYzcwMTA4OGEyMDBhYjk5IGxlZ2FjeS10cnVuaworNDYwMTcgMzY1NjNiMTNjZTc5MmE3MmJiMGY4MGFlMGQ1M2E3MGNmZjMzZmE2OSBsZWdhY3ktdHJ1bmsKKzQ2MDE4IGY5MTM1MDUwMDgzNDZmNDNkMTZkY2FlMjkwOWYyYTljYzBlNWQwYjYgbGVnYWN5LXRydW5rCis0NjAxOSBkNmVhN2Q0M2ViZmMwYWJjNzYwMjY0NWU0ZTI4YmEyOWNmZWIxMjJhIGxlZ2FjeS10cnVuaworNDYwMjAgYWM1MDZlMmRmMDRkNTM5NmE0OTY3ZTRlNzgzMGE5ZjU1ZjRiYzg4OCBsZWdhY3ktdHJ1bmsKKzQ2MDIxIDIwNGVjMzgzYjQ0NWFiZjM5YmY3NTJkYWVkNDBiYjI3ODA2ZGVhMjQgbGVnYWN5LXRydW5rCis0NjAyMiAzMDE4OGM1MjNiYzU1OGRhZDA3N2IzNWRjZDI4YmM3YTk1MTI2YTI1IGxlZ2FjeS10cnVuaworNDYwMjMgYWFlMmZmMzNlMjdjMzg1NDBkYWE3NGU3MWIzOTJjZGM3MGFlMTE1OCBsZWdhY3ktdHJ1bmsKKzQ2MDI0IGFiMWRjN2UyM2JmZTUxMzllNTY0NTcxZTk2NjBiNzY5ZWFhZGZkNTYgbGVnYWN5LXRydW5rCis0NjAyNSA3Y2FhNmQzM2E0YzY3OThkNDgwNjM0MWEyYTc3MGVjMWNhZmFjNDMzIGxlZ2FjeS10cnVuaworNDYwMjYgYmZiNzZhZTgyYzkxMjFiZTA4M2EzMGE4YmJlMjU1MGIwMmFjMDVkYiBsZWdhY3ktdHJ1bmsKKzQ2MDI3IGMyZTNiNWMzNmRlNDUyYmQwZTRlNzQ3MmFkYTMwNDE3YTYwN2YyZjEgbGVnYWN5LXRydW5rCis0NjAyOCBmYTNjNGVhOTlkOTVjYTZlZGVkMWE3ZjhlNTM5Yzc5NTM4Njc4M2I4IGxlZ2FjeS10cnVuaworNDYwMjkgMGI0NzMxMDQ5YjcxY2U4OTBiYmJlZDMzOWE3OTc2YmI5MmQzZjE0NyBsZWdhY3ktdHJ1bmsKKzQ2MDMwIDA3YWJjNjI4NDg5OWRmYTFmMGEzNTQwZjQwMjBmNjRkMzRmMTk0MTIgbGVnYWN5LXRydW5rCis0NjAzMiBiNzNmMjRlMjFiMGFiNjRjNWJiOWQ4ZDhmMTc4YWJhZmIwOGEwYmIzIGxlZ2FjeS10cnVuaworNDYwMzMgYjI4NmVkNDU0MzlkNjYwYmUwYzkwMDc3MDJiMjM0YzdlZGQyOTVjMCBsZWdhY3ktdHJ1bmsKKzQ2MDM0IGIzNWNkYTU1ZDYwYzZhMTk3MDk1N2E4YWFiNzhmOTY4OWI0NmRiMGYgbGVnYWN5LXRydW5rCis0NjAzNSA3M2M3YWQ1ZTg3ZGViYTc5Zjg2ZGM4MDRkMTM2MTk5NjZlMTNkNGJlIGxlZ2FjeS10cnVuaworNDYwMzYgNmZlYWE0MmVmZjY5ZjRkNTFmMTJlYjJlN2IyODk2OTZiMGFhMDg4MCBsZWdhY3ktdHJ1bmsKKzQ2MDM3IDQyZDZiYWI4ODA3OWZmNjBkZTIxYjE3NzYwYmZkNDM4ZGZmOGZhNTcgbGVnYWN5LXRydW5rCis0NjAzOCA4MWUzODVhNjQxZWY4YjA3MDNhZWViODVmN2Y5ZDZmNjAyZDZmNDQ1IGxlZ2FjeS10cnVuaworNDYwMzkgNGNiOWRjMGRjM2Y5ZWJkMWI1ODZiZjYwZWQ5OTVkMjI0YTc5N2NiZSBsZWdhY3ktdHJ1bmsKKzQ2MDQwIGM2NGNkMjcxYWNlYTlhZmM0NTZkNTc3YTVkMTRiMGQ2YTdmNzFhODEgbGVnYWN5LXRydW5rCis0NjA0MSBjMDdhNWMyMzA0ZjNmY2Y5Njk3MGM3MWRkYWZmNTBhZGJkMzc5MGQ3IGxlZ2FjeS10cnVuaworNDYwNDQgMjE5NTk3MmY3MzkxZDRlYzQxNmJjOGNkNWE2NDFlN2ExN2RhYTVkZiBsZWdhY3ktdHJ1bmsKKzQ2MDQ1IDI2ZmI1NjM4ODFjOTNkOThiYjViNDBkNWQ1NmIyOGYxN2M4NjVhY2EgbGVnYWN5LXRydW5rCis0NjA0NiBjYmYyZDU2MmUzMjI5MjkxMDQwY2FhMjBhYzgyYzkwOWRhN2UyMWZiIGxlZ2FjeS10cnVuaworNDYwNDcgYzQ5MDdkOTkwZGI1ZDcwYThlM2RiNzU4NTIyM2ZlYWRhOWMzYjA0MyBsZWdhY3ktdHJ1bmsKKzQ2MDUwIDI4NTExNTU0ZGZmMWZmNGViZDUyOWE2NDAyOTg0NTNhZGJjZGNlYWQgbGVnYWN5LXRydW5rCis0NjA1MiBiMGJhNGU4MjI5Zjc3NTE5NjQ3MTRkNzY1YWI0MDQwYWVhM2IyZDJmIGxlZ2FjeS10cnVuaworNDYwNTQgYWNjZGYxMTI0YmEyZWRmM2JlMjYzMmRmNzgwMTlmYjFhODQ0YTc4OCBsZWdhY3ktdHJ1bmsKKzQ2MDU1IDEwOTQzN2M0Y2FjNDc2MDk3Mzg4ODgxMjU2NWZlYWIxMTU5N2ZlODQgbGVnYWN5LXRydW5rCis0NjA1NiBmOTYxMjE3N2QwOGQxYmIzMzE5NGNhYTY5ZWNmNmUxNWRmZTgyNGJlIHJlbGVhc2UyNC1tYWludAorNDYwNTcgY2MwNTU2YWRjMmIwY2JmMTE3YzRjNWQzZDBiNDU1NjIzYTU3MmJmMyBsZWdhY3ktdHJ1bmsKKzQ2MDU4IDJkMTgyZmNmYWI2Yjk4MDQwZGZhZjBmMGE4YmVkZDZiNDMzNmZkY2UgbGVnYWN5LXRydW5rCis0NjA1OSBiNGJkYmQ3YjFmNWVlNzYyNzI4Y2E4YTEwZTAzODFjZGVmNmFkYzAzIGxlZ2FjeS10cnVuaworNDYwNjEgY2ExZjFjMjE4OWU3NGZhZDBkYmFiNDVkMTZkMTk4MTAxOTViYjRjNCBsZWdhY3ktdHJ1bmsKKzQ2MDYyIGE2OWVlNWJhZDliMjNjNmViODY5ZWI1YjY0M2MxZWU2MzE4ZDI2NzcgbGVnYWN5LXRydW5rCis0NjA2MyBkYWUwZTRjMzkwZTc3MjE0NWJmZWQ1Yjg4ODYyYjRlOGI0MTgyYjZhIGxlZ2FjeS10cnVuaworNDYwNjQgYWE2MjA4NTZlOGEzZjc1Y2E2N2ZmZTlkOTNiZGRkMDU2MWI1MTZlMyBsZWdhY3ktdHJ1bmsKKzQ2MDY1IDk1OTEwYmM2NWY2Yjk5MWY0N2M3ZWNjODY3MjlkOWQ5YTczNGQ2OWIgbGVnYWN5LXRydW5rCis0NjA2OCAxMDU1ZDYyNmVkNTk0ZDYzOGYwNDMzMTI1NzFkYTlhYzFhZDk3NTU2IHJqb25lcy1mdW5jY2FsbAorNDYwNjkgODgyYjYxMmE1ZmU5Y2I3YTM1Yzc4ZmVmMzQxMDZkZDMxNGM1MDViOSByam9uZXMtZnVuY2NhbGwKKzQ2MDcwIDI3YzgwMDU4MTczZThhN2FmMWEyYzZmODQwMGQ4M2IyYTQyMWJlNzEgbGVnYWN5LXRydW5rCis0NjA3MSBmYjRmMGZkN2ViYTRlYmUzNTc1OGZkZGViMjVlNDMwN2JjMWU4ZjgyIGxlZ2FjeS10cnVuaworNDYwNzIgNTEyNDFjYzk1ODgzZWRlZDVjOGQ3NWQzZDg5OWNhNGM0MjcyMTIwNyBzcmVpZnNjaG5laWRlci02NGludHMKKzQ2MDczIDdlMTZmY2NlMzRhMTM1Mzk1MWE5NWM2ZWIyNDdiNmNjNjE0Y2UwNjEgbGVnYWN5LXRydW5rCis0NjA3NSBkNzEwYzJkYmEzZTg4MGM5MjBjZmU4OWQwMWY5MDEzNTg4YzljMzA5IGxlZ2FjeS10cnVuaworNDYwNzYgZmViMDBkZjkxOTIyMDZjNDQ0YzQyY2IyOTQ1YzY1YThmODc3ZTI3OCBsZWdhY3ktdHJ1bmsKKzQ2MDc3IGNjZWQ4M2E5MTU3NzhhZjdkMjBhMzJhMTU4N2YyMDMxZTg4NDYwYmIgcmpvbmVzLWZ1bmNjYWxsCis0NjA3OSA2MDRhZjg2N2M2NWZiODEyNTI0ODNlZjVkYWU0YWQyNGFhNDhhY2VhIGxlZ2FjeS10cnVuaworNDYwODAgY2QzNGEwODgzMDUzNmUzYjE0NDdhMTUzOWY5ZWQzMGE1OTkzZDFhMiByam9uZXMtZnVuY2NhbGwKKzQ2MDgxIGVjNTRjNmRmOTA0MDJiZmVmMWJhNjEwMTk1NTM2OTgwZTJmMzJlYTMgcmpvbmVzLWZ1bmNjYWxsCis0NjA4MiAwMmEwYzY5MjhjNTBhN2MxYzY5MjFiOWQwZWQyOWE0ZjRiYTI4YTViIHN0ZXZlLW5vdHJhY2luZworNDYwODQgMDM3M2EwNzQwMDRjMmVhOWE1NDlmMmVlZjFhYTYyZDg1MGQ1MTdjNiBsZWdhY3ktdHJ1bmsKKzQ2MDg1IDVlYWY4Yjk1ODdkODY5OTQxYzQ4YWJkMTE0ZDcwMzJmYTZiYjYwNTUgbGVnYWN5LXRydW5rCis0NjA4NiA4NzIwNDJhM2IxMzQzYzlhNTIyY2RlMmY4ZTg1YmY4ZTE2ZWQ1MzM3IHJqb25lcy1mdW5jY2FsbAorNDYwODggZmI4MTZkZmNkMDMxNTQzMGUyYmZmZTc0NTAzYjBiYjgwMDJjMWYyZSByam9uZXMtZnVuY2NhbGwKKzQ2MDg5IDRjZWFiYjU0MTRkNWYyYTI0MzNmMmEzODc2NDlhYzY5M2Y1NGZkMmUgcmpvbmVzLWZ1bmNjYWxsCis0NjA5MCA5YTI4YmZhNmY3ODdjNDYzNzNhOGNiYmIwMGVlNzQyOTUxYjY4NDQxIGJsYWlzLWJ5dGVidWYKKzQ2MDkzIDAwNDU2ZmNhMzdjNDI0NGNkZWRkYjIxYjg0NTUzYmYzZTdlNzJlZTMgcmpvbmVzLWZ1bmNjYWxsCis0NjA5NCAwZGU5YTc4OWRlMzkwNGU1YzY5OGEwOWFkY2FkNmIxZTJlYWU3Y2Y5IGxlZ2FjeS10cnVuaworNDYwOTUgMGJhNzExYTQ5NmU2YjAwMTlkMDM0NDQ3ZDJmZDlhZTRkOWQyNmZhMCBsZWdhY3ktdHJ1bmsKKzQ2MDk2IGE2MzdjNzhiZjExOTVlZmM3YjVmNGE5NDdiZjFlMGZiMTg5NDQwYTIgbGVnYWN5LXRydW5rCis0NjA5OCA2YTZjNTQ5MmI5YWQyZWFkOWFlYThlMzAyMzc3NzdhY2Y0NTg3MDQ1IGxlZ2FjeS10cnVuaworNDYxMDEgZWUyMTM5OTM1YTFkM2FmNTJkNTAwOWI3NDcxOTI4NjQwMjIxNmZjMiBsZWdhY3ktdHJ1bmsKKzQ2MTAzIDViNTg3MTkwZjRjNjg1NzdhMzI1Mjk2M2M4NTc2YzRmNDNmOGMxNjQgbGVnYWN5LXRydW5rCis0NjEwNCAzMDc4ZmRiN2NmM2RmNTVjNzNmNDNhZmI1MzI3OTUyN2E5OTExNmZkIGxlZ2FjeS10cnVuaworNDYxMDggYjdhYWYyMWM0NzU2NDAzZjAxODI4YTc5YmZjYjI2YjcyZmEzYWI5NCBsZWdhY3ktdHJ1bmsKKzQ2MTA5IDc2YmVkZjllZDIyZmYyNGUzZDU0MzdjNjRiZjUwYjBlOTc2MDBkZjggbGVnYWN5LXRydW5rCis0NjExMCBjYTM0NTIxYmIxM2MzODM3ZDY1MWZjYTkwYzFkZjBjNGJjZTI5MjIyIGxlZ2FjeS10cnVuaworNDYxMTMgNzViZGQ0NGY4NWRjZDRhZGE4NmNlYjA5ZTJmNzJjNDQ3N2NmMGVkYiBsZWdhY3ktdHJ1bmsKKzQ2MTE1IDlhOTA3NTNmNmJmYmIyMWE5ZDdiZjIxM2VjOTdiNWYxNzQ0NDcxMjUgLi4vYmlwcG9saXRvLW5ld3N0cnVjdAorNDYxMTcgNjY3YTJjYWU3OWU2MjY5NjUxNmI5MTIwMzE2ZjBmM2ZiOTZkNGM3NiAuLi9iaXBwb2xpdG8tbmV3c3RydWN0Cis0NjExOCA1ODMxN2RmNGQzMGJiY2I0MmRhYjAzNzI4OTU1ODY1YjQ0ZDQ4ZWEzIGJsYWlzLWJ5dGVidWYKKzQ2MTIzIDRiMGZmNzg4ZTlmZGFlMGE3ZGJiNmVkY2Q1MjU1Mjg3ZmQ0ZjMyNWMgcnVuYXItbG9uZ3NsaWNlLWJyYW5jaAorNDYxMjUgMGYwZjA0NmEyOWZiYTQ4ZGM3ZjdlODNhYTM4YjRjY2U5ZGE4ODlhYSByam9uZXMtZnVuY2NhbGwKKzQ2MTI2IGZmNTBhZTEzZGI5ZTY4ZGZmNjBiNTNkODUyYTE3MTkzNDA1ZGE3ZmQgcmpvbmVzLWZ1bmNjYWxsCis0NjEyNyBlYWFlNjk5MGUyZDE4ZDJhOGRiNDdkNjZhYjA5YjYxOTdlNDk3OGE1IHJqb25lcy1mdW5jY2FsbAorNDYxMjggNGJkMjk5ZDAwZTRjNmYxNzNjYmZmMzVkZWY5MzgwZjQ5Mzk0ZTllOCBsZWdhY3ktdHJ1bmsKKzQ2MTI5IGJmNWZiNmU3NTI3YzJmZmU4NTFhOTlkNTIwZGNlYmYzNTcxYWJjODggbGVnYWN5LXRydW5rCis0NjEzMCA0OTVhMzRlNTRkNjBhNTI3ODUyZDg3MDRhNDRhZmFkMzkyMGZiYWYzIGxlZ2FjeS10cnVuaworNDYxMzEgOWVmY2NmNTZkNGU3MWY0ZDQ3M2VmMDJiNDgzYmRmMWQzZjQ1ZDliZSBsZWdhY3ktdHJ1bmsKKzQ2MTMyIGFmNDZjN2VkMDVlYjc5MWIxZTQzNjViNzgwODI0MmViZmJlMjY4NDQgbGVnYWN5LXRydW5rCis0NjEzMyA5ZmRkNDM0MjE2ZWY4MmVkYjJlZjdhNWZhN2MyNjdmOGNmMWViZGMyIGxlZ2FjeS10cnVuaworNDYxMzQgODk1ZGE0MjQ4MGYxYzM1NzM3MDhhYzEyODhkZGY0NmY4YzFlNDU5YyBsZWdhY3ktdHJ1bmsKKzQ2MTM2IGMxY2UwYjgzMTYzNjcwM2QxM2Q4MTA3ZWU2ZDQwNTMxYzBlNGZhY2MgbGVnYWN5LXRydW5rCis0NjE0MSAyNzg4MmE4ZTQzYTllODliMTAzM2IyMmEzNzMxN2EwNGFlZTllOThkIGxlZ2FjeS10cnVuaworNDYxNDIgNmI3OWZmZmJiZTFmMDQzM2QxYmQ1YWMxNTBlODRlNjQ1OTM1NWJhMiBsZWdhY3ktdHJ1bmsKKzQ2MTQ0IGVmYjdlODcyNGVlZmE2Y2U3NjA0N2FhOTVhZjQ0ZGNjZjFmZDE1ZjUgbGVnYWN5LXRydW5rCis0NjE0OCAzMzYzMWI2YjA4MDE0NzU5NmU2MjA1ZjUzZWI5YTk5YTY4NDFhODZiIGxlZ2FjeS10cnVuaworNDYxNDkgN2Q4MmNkZWQ4YWIxNTJlYjE5NTQ4ZmY5OTk4OTM3NjYxODUwNjQzZSBsZWdhY3ktdHJ1bmsKKzQ2MTUwIDc0YzgyZWJjNGU0NDk5MWNiNWE1YWQ3MGVhOTQ3NWYzNTNmNDVmNGQgbGVnYWN5LXRydW5rCis0NjE1MSBjZjVhOTA1N2VkM2E5MjA0ZWI4NzU2ZGI5YzQ0ZDIzNWJhNzBhZjM5IGxlZ2FjeS10cnVuaworNDYxNTIgZTA3ZGMxMzQ4ZGFkOWQ0YzQ0N2YyZjIyMDFlZDRjOTdmNTI3ZDJmYSBsZWdhY3ktdHJ1bmsKKzQ2MTUzIGI4YmVmNWEwN2RmNmNjZmI1MjEyZGU3ZmI3YzExMjdmZWMwOTA5ZTggbGVnYWN5LXRydW5rCis0NjE1NSAxZGM1NjU3ZjE3NDUzYzcwYTc4YmU2Y2E3NmUyNjNmMzRkY2Q4NTVjIGxlZ2FjeS10cnVuaworNDYxNTYgMzE0ZDY2NmM3YWRiZDFkN2VjMjQ5OGIzMTYwZmQwNzg2MThjOTM4OSBsZWdhY3ktdHJ1bmsKKzQ2MTU3IGRlOWYxYTE0MDYxMTkzNzJkZjllZjIzYTQyM2Q4YjYyYTA4Njk1ZTcgbGVnYWN5LXRydW5rCis0NjE1OCA5YWU2OWJjYWI5ZjcyMjE3YmJjMTRlYTlmOWU1MzgzODFmMzc2MTA5IGxlZ2FjeS10cnVuaworNDYxNTkgMDY5MWYzZmIzOWNhYTFkMGQ5YTQ4ZDRlZWU0ZWE4N2MxNWM2ODE3OCBibGFpcy1ieXRlYnVmCis0NjE2MSAyZDU1ZTk3OTAwMzU4YmI3YjQ1MzNkZDA5Njc3NWQ3NmM5N2Y2ZWQ0IGxlZ2FjeS10cnVuaworNDYxNjIgMzU3YjU0MDNlODFhZDNjOWY2MzcyMzM3NjllOWNhN2E0ZjYxYWRmYSBibGFpcy1ieXRlYnVmCis0NjE2NCAwNDJlZDZmODA4NDdjYzA0YmIzYTQwMTAzM2EzN2ZmYzM5ZDNkYTlkIGJsYWlzLWJ5dGVidWYKKzQ2MTY1IGE1ODliNzQ0MTVjMDIyZjZlMTZlNzAxNGRjNmY2M2E1YTU0MjA4MTMgYmxhaXMtYnl0ZWJ1ZgorNDYxNzAgODliMmNhNTEyMzA3MjNlMmE4ZWEzMGQxNjQ0MmFlMGEwMmMxMzY5MCByam9uZXMtcHJlYWxsb2MKKzQ2MTcxIDBhOTU0ZjRlM2UzNmEyYWNjOTc2N2JkMGZkMjExMDk0M2VjMTA1NDQgcmpvbmVzLXByZWFsbG9jCis0NjE3MyA0M2IxNDc0YjUxMmJiYjRjZjAwOGZhZGI4ZmMzZmExOTljZDNjZTRhIGxlZ2FjeS10cnVuaworNDYxNzUgNmRhMzFjNDllYjBhNjg2MzYxZTFhNTY1Y2I4ODhmMzc0NWJhNmMwZCByam9uZXMtcHJlYWxsb2MKKzQ2MTc2IDIyOTk1YzEwOWVmZDY3ZTVjMDY2ZWNhNjljZjNjYTBkNDg0ZjNhZDEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE3NyA4YWQ5ZTE0NDg5ZmZmMWYxYjU1OGUxYjhjNDQ2YWM4OWY0NWNjZDJmIGJsYWlzLWJ5dGVidWYKKzQ2MTgyIGI1YjI1Njk2NmZlOTJiNDE1Yjc0YjcwMzNkODg4NTRiMGZiZjQ2MzIgbGVnYWN5LXRydW5rCis0NjE4NCBiODI1ZTYyMjczNjY2ZTZkMmIxMTM4ZDU5ODJlMDlmNzgzOWUwMzM3IGxlZ2FjeS10cnVuaworNDYxODYgYzI2YjlmZGI2NWZiM2I1NzZiNjM1ZDUzMTdiMmY5YTQxNTczODZhMyBibGFpcy1ieXRlYnVmCis0NjE4OSAyNjBkNWE2Y2UzMGY0ZTI1NjlhYjgwMTdjMzY4Nzc1NzEyZDFmYWJlIGxlZ2FjeS10cnVuaworNDYxOTAgZmVmNDk2YWQ3ZjZjZDJiZGMxZjI1ZDdhYzA1YjQ3OTk5YmZkM2U3ZSBibGFpcy1ieXRlYnVmCis0NjE5MiA1MWQ2ZTI3MTgyNDM2OGVlZWFmMmJiYzY4NDc3MzkzY2NmZjBlNDA4IGJsYWlzLWJ5dGVidWYKKzQ2MTkzIGFhY2UzMTQ4ZjdlYmFmMDIyOTI2ZDNkMjc4NzhlYWMxYzZhMDkyNDUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5NCAzY2ZhZTNhMGU2OTU5MTA3MWQxNzRiMTRjMmJhYTI3MzE4OWYzNTBjIGJsYWlzLWJ5dGVidWYKKzQ2MTk1IGY3YTc3NDJhZWY4M2I4NTQyMzA3NGViZTE5ZWUwY2JkMTExYTFiYTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjE5NyA1OGQyMGZlYjZlMDM5YmJhNmYxNjE4OTM3ZjhlMzgwZTBlYTc5NjQ4IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYxOTggNjg2MGMzNmY3ZGI3NTE0ZjVjYWQ5YmUzNTViODI4ZWQ4NjcyODgzNiBsZWdhY3ktdHJ1bmsKKzQ2MTk5IDkxZmUxYjBhZGJmMjYxNGY5ZWIwYmE5NzRmNjgxYjQyMjE1M2Q3YmYgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjIwMCAzMmJhM2EwYzYwNDA5MzgzZDhkZDMzNDg2YjE5ZWY3MTYxYzBlMDY0IGxlZ2FjeS10cnVuaworNDYyMDEgYjI0OTFmZDBhNGRjNmM2N2RiNGIyOWFhNWFkOWFmMjMxNDJiODliOSBsZWdhY3ktdHJ1bmsKKzQ2MjAyIDFjNWVlOTYzMWM2YjhiODk2NmJlODU3OWRlMTU5ZTY1YjA5YjIzNjUgbGVnYWN5LXRydW5rCis0NjIwMyA4OGNjN2U0ZjAxZmY0ZDBmNTdmM2MyYTBhZDE5OGE5NmQ3Y2U2M2RiIGxlZ2FjeS10cnVuaworNDYyMDQgYmNlYTc0YjM1ZDFmZWRlMGY3OTE3YzE0M2EzY2JkYTU1MWRjYWMxZSBsZWdhY3ktdHJ1bmsKKzQ2MjA1IDY2MzIyZmNhOTFiNDFiYmJjMzI0M2VjMGViM2IzN2MxMDlmMmFkYTMgbGVnYWN5LXRydW5rCis0NjIwNiAwNDNlMjlhMWUzOTg1ZWNjYjAxMDFmYTY1M2RlNmQ3YmFjYjE0YWRmIHJlbGVhc2UyNC1tYWludAorNDYyMDcgNDU3ODgxMjhhMWIxNTQ0OWVhNmIyZmNhYmQ4NGIwODc3YzEyY2UxMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjA4IDY5ODE5OGNhYmJjNWFiNzc3NTFiNTkwOWMxMzlmZDI4ZGY5NDZiZmYgbGVnYWN5LXRydW5rCis0NjIwOSA4YzUxNDZjNTFlMmRmMDBlOGQyNzhkMTBmMGI0Y2ZkOTg4YzRjMGJjIGxlZ2FjeS10cnVuaworNDYyMTAgNzVlMWNkMjJiNTZiZGRjNGFmMGU4MDAzZjg0MmEwYWM0MmNmYzAyMCBsZWdhY3ktdHJ1bmsKKzQ2MjExIDNkZTcwNjRkZmE1NjQxNGFjNDVjOTgwOGM1MzUwNDVmYWZiYzI2Y2UgbGVnYWN5LXRydW5rCis0NjIxMiA5YmI0YzE5ZTU2MTM0YzY4OTFiOTBlOGFkNDhhYjdlMDk0NTY5Yjk0IGJsYWlzLWJ5dGVidWYKKzQ2MjE0IGFkMWUyNDM4Y2ZhYTViZjQ1ZTQ4Yzk5NDk2ZThlYjA0NDY1OTQ1NzcgbGVnYWN5LXRydW5rCis0NjIxNSA3YjNkNGE4MWU5NGRlNWFhYWFjNTZkZDgzYzc0ZWEyNzVmYmI1MDMzIGJsYWlzLWJ5dGVidWYKKzQ2MjE2IGUxNWIxNGM3ZmExNGQ1YzQ0MDA1MmFmMTEwNWNiMTkxODFhZWU5Y2YgbGVnYWN5LXRydW5rCis0NjIxNyA2ODhmMjU3NTcxMDQzMzEzZmExMGFmODA4Y2IxZWJlMDhkZmNkMTllIGxlZ2FjeS10cnVuaworNDYyMTkgNDE3NjhkZTE3ZWFkOTA5MmM0NTRhZGY5OTEwZjlkOGRiYjg1MmFjNyBsZWdhY3ktdHJ1bmsKKzQ2MjIwIDRjMGMzZWNmZmNhYzJiMzIxODQzYjE5Nzg5NGYzMDEzMzIzZmYyMmYgbGVnYWN5LXRydW5rCis0NjIyMSBiYTcxM2QzMWQwMGM2Njk5MjFiMzczM2NmNGM5ZWQwNTExMjA4YWFhIGxlZ2FjeS10cnVuaworNDYyMjIgMjljY2Q3NzEwNDEzZmVmZDllYTY5MDgyMGFiYjRlYjA0MDNiMzJlYSBsZWdhY3ktdHJ1bmsKKzQ2MjIzIDk4NmJlZTE2YmI0NDUxY2IxZDgyMzVhYjdlYjVlYzc4ZTM1MGI3MDcgbGVnYWN5LXRydW5rCis0NjIyNCBhZTZiYmYyZjJhNDEyYjZjNDFkMTU0NGMyMGU0MjQzNzNlZDdkNDk1IGxlZ2FjeS10cnVuaworNDYyMjYgNDE4MDk0MDZhMzVlYmEwNGY5M2FmYjRmNDU0YWNjMDVlYzk4NDEwYSBsZWdhY3ktdHJ1bmsKKzQ2MjI3IGRjY2JjYmJkNjcyMDhhMDc4MjMwZWNjOGE4MDNhOGQ5NDkwNjExZWEgbGVnYWN5LXRydW5rCis0NjIyOSA5YzA4YTdiZGJjMzEwYTc3NDYwODQ1OTlmNmRjYzU4ZWNlM2FjMGZkIGxlZ2FjeS10cnVuaworNDYyMzAgMTdlYWE4YjU3ZTA1MmY1MTQ2NWNiMzMxZmFiZmMzYzVhMzM3ZTcxYyBsZWdhY3ktdHJ1bmsKKzQ2MjMxIDA1NDk2ZGVlYmE2NGJlNzA0MDEwYmM2MWYzYzhlNWRlMmZkMGI1YWUgbGVnYWN5LXRydW5rCis0NjIzMiA2ZmMxZGMwODY0NTk0MDI1OTdmNzgzMDFiOTk0ZDBkOWY1YWI3MTQxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyMzMgM2U2ZDc3NTUyYmUzMDJiZWFjMjU2MmQ0ZDUyNzk3MTJlMDRkNjhmNSBsZWdhY3ktdHJ1bmsKKzQ2MjM0IGM1ZDYxOTY1Y2FkNDIxOWE4ZjdhMDJjZTNhYjJlM2NhY2Y3ZDg3ZWEgbGVnYWN5LXRydW5rCis0NjIzNSA1YTYzMzY5MDU2YTdmZTVmYzNjMGI1ZmYwZGUxMDg3YjE5NjUwNzE4IGxlZ2FjeS10cnVuaworNDYyMzYgZjI3OWQwMzFmMGNlYTNjZjhiYzRmMTAxOGFkOWZhOWQyNWU4ZDg2NiBibGFpcy1ieXRlYnVmCis0NjIzOCA3NGJlYjE4OWZkN2VlNDg0Y2ZjMmQyMzM4YWVhMjQ4YWJkYmY1ZWI2IGxlZ2FjeS10cnVuaworNDYyMzkgMmFhOTQwOTM1MWQ2MWY5MzE3Y2UxMWRhNzc1MmUwOTY1ZDcyZGIzYiBsZWdhY3ktdHJ1bmsKKzQ2MjQwIDg1MGQ0Zjc3MTdiOGRlYTBmOWJkZjU5MDBlNTAyM2MxNTBhZDZjYTIgbGVnYWN5LXRydW5rCis0NjI0MSBjOWRjMzAwZWVlNjgyYWNlMDVmNzdiNDg4ZDkwMzUzNjQ2ZWRmZmYwIGxlZ2FjeS10cnVuaworNDYyNDIgMDUzMjRhYTQ0NGJkZTFjMGI2ZjBkMjk5NGJhM2ZmNTE4NTUxOGY4MiBsZWdhY3ktdHJ1bmsKKzQ2MjQzIDRhOGM5ZjliNjZlNjhlYzk3MDVjMjNkYmE1YWVjMGE0OWZiZDcwZGEgbGVnYWN5LXRydW5rCis0NjI0NCAxZmRmMjlhODhmMGVlMGIxM2IyODkyMWE1ZmJmYjE3NTFiNWYwY2YzIGxlZ2FjeS10cnVuaworNDYyNDUgOTFjNmM5NDQ5MGIxYzU2NDRkYWI2OGY4OWU0YzQxY2U0MzM4ZTU2NyBsZWdhY3ktdHJ1bmsKKzQ2MjQ2IDJmMTZlMjcxNTIyMzViN2ZmM2NiODdiMTUxMTM1NWY3ODU3YzVhMjcgbGVnYWN5LXRydW5rCis0NjI0NyBlY2YyYmY0MTgyYWRmNDkzM2YxMmQwNjRjODUxYjg2ZjVhOTcwMTBkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNDggNjhhMzQ4Yzk4NjhkYjhiMzU4NjE1YmI0MDQ3MWJhY2EyNWE1MDIxYyBsZWdhY3ktdHJ1bmsKKzQ2MjQ5IGMwMDZjMjcyMTE2ZmZhYTZhODMyN2EzOWM0YTAzZmRiNGE4MjhjMDUgbGVnYWN5LXRydW5rCis0NjI1MSBjMzUwOGE5NDE1NjgzNjU5NmEwM2U4YTkwOTMyNjRjYzFkY2Q4OGJjIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNTIgZTE2YjQxNTc2ODZjYjlhNDg4ODUyZDQ0ODBmMjI3NTI2MTRmMDkzYiBsZWdhY3ktdHJ1bmsKKzQ2MjUzIDNkNDc3ZDE1ODQwMWM3MWIxMzg0M2Q3MDdmZmE2ZGJkYzFmZjc3NzkgbGVnYWN5LXRydW5rCis0NjI1NCBlYTBhZDRkNGZmOGVkZjBhY2I5ODUxOWUyZmU1ZDMwZTE1ZGUyZThhIGxlZ2FjeS10cnVuaworNDYyNTUgYzc3ZGEyNzM2ZmIyNjVkNmE0NDU3YWIwYzJjZTg4NTM2ODc0MTc2NCBsZWdhY3ktdHJ1bmsKKzQ2MjU2IDM1ODdlZTMxM2IwMDYxMDJhZTYxMGE1OTdlODRlNGU3ODI5NmEwYzUgbGVnYWN5LXRydW5rCis0NjI1NyAwNGYzOWVjYmM3M2M3NmE1NWFlOGNjMWVmNWI1M2RmNWI3ZWZkMGMzIGxlZ2FjeS10cnVuaworNDYyNTggZDMzZDhhOGI1NDVlZWViMTUwZDFiNGM1NzhjODBlOTMyZjQ0ZmI0NyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjU5IDhhNThhYTQwZGNjMDVkNTgwNDFhNmI0YmU2ZjM4ZDE2NDFiMzBlMmYgbGVnYWN5LXRydW5rCis0NjI2MCA1NTY2MjBjZDdiMWRlM2MxMTg2NTE1MmQ3NTlkYjAwY2VhNTQ1M2QwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNjEgOWY4ODRkMzRhMGVjZDRiOTllNzIyOGQ1OThmNWIyOTU3ZGE4NDY5OSBsZWdhY3ktdHJ1bmsKKzQ2MjYyIGU5ZWI1MjZiNzExMTU4MGQxODNkOGRmZDdmY2VkOGIyYmU1NmZhZGIgbGVnYWN5LXRydW5rCis0NjI2MyBjZWViZTZjYzQ1NzA0YzhjMThiZmFhNGQ3YTFkOThhMzg1ZGU0OTc1IGxlZ2FjeS10cnVuaworNDYyNjQgYWIwMjIxODExNzcxN2JiNjFiMGE3NmM0YzViODY2MWJhMDUzMzJiNSBsZWdhY3ktdHJ1bmsKKzQ2MjY1IDA4NzI4NzAwOTY1OGVlYzcwOTk1NzJhZjViN2UyM2RmN2Q5ZGJkYTggbGVnYWN5LXRydW5rCis0NjI2NiA3YTZhZjRhMTQzYzYyYmM1ZjZlNGZmODkwYzk5NzIyZTVlMDAzNDY0IGxlZ2FjeS10cnVuaworNDYyNjcgOGE5Y2Q5OTk1MzVkMTc5NzQ2MGNlNmMwNTYwZjhiOGNjN2EyNDNhMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MjY4IGViMjM3YTM3ZWEwMmRlYjMzMGUyZmU1ZTFmNDM3Mjk3MmIwODkwNzYgbGVnYWN5LXRydW5rCis0NjI2OSBkZGMyMDBhZmRlMWE4MzFiMWMyYmRhNzNmNmExMzZhNTI0NzNlOTFhIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyNzAgZDZkNTUzYjlkNDY5NzdmYmRjY2VkMDFhZTIxMDQzZTUxZGYwN2M3NSBibGFpcy1ieXRlYnVmCis0NjI3MSA0NmQ3N2JiMzJmYjBkYThiNDFhNjVjMWIyNTAxYjRmYTExY2UxOWJjIGxlZ2FjeS10cnVuaworNDYyNzIgNWExNDczNjU1MjdlNTM4NDVhMGY3YWMxYTNjZjZlZTY5ODA5MGJhYiBsZWdhY3ktdHJ1bmsKKzQ2MjczIGY5MzMyYWQ0Mjg3YTdmNmQ4NjI0ZDkwODdjYjAyMTkwMWQ0NzM1YWMgbGVnYWN5LXRydW5rCis0NjI3NCA4MmI2ODA4NDZkZjg4OTdmZjcyOGJjZTdkNmU2NWQ4MDNkNDliMzgzIGxlZ2FjeS10cnVuaworNDYyNzUgODFiNjQxZGE1Yzc5NTJhN2UwNDA1ZjgzYjk2ZTlhZjAxYTFlNDA3NCByZWxlYXNlMjQtbWFpbnQKKzQ2Mjc2IDEwMzVhMmIzMWU2ZGYyNjE2YzlhNDIwOGVlYjFhYTk0ZTBmYWRmNmQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI3OCA5NThmOTE2ODQyMDlkMDBjMzNkN2ZlZmE2OGNlNDZlOWQwM2E5Y2VmIGxlZ2FjeS10cnVuaworNDYyODAgMTY3MGZmNzI2ZThmZDdkNzQ3ODI4NjE1ZjEwMDlhMjc0NTI1YzQ3NSBsZWdhY3ktdHJ1bmsKKzQ2MjgxIDMwOTFhNzVlYjU2MGM1NmRlNzdmODY5ZmZmN2ZmMTgxOTE2OTcwMmIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjI4MyBkZDQxNzMxZGVlNmQ0YmQyYzhkMDVhYjU0ZTQ0NDUxNDhkMjUyYWM1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYyODQgMmY0ZmI2NDE0ZTg3MjA4YWJjMTgzMWQzNWE2NTZiMDJiNTcxNzhlNSBibGFpcy1ieXRlYnVmCis0NjI4NSA4YTk5Y2RlZjBjOTRhY2I1ODFmNTNlYjI1Y2MyMWYxNGI5NmY1OWI4IGxlZ2FjeS10cnVuaworNDYyODYgYTY1NGQ2MWQzNmQ1MzE5NjcxYjEwYjBiMWU1MjE4OTFiMTc5Y2U3NCBsZWdhY3ktdHJ1bmsKKzQ2Mjg3IDUzODJhYWYzYTBkYWM1ZmNmMmU1ODlkMWY0MWZmZjBiMjk5MzZlNmUgbGVnYWN5LXRydW5rCis0NjI4OCBjOGU0YjNiMzk3NzQzMDVmYWM4YTdhNTEzOTc3NmQ5N2Q5YTNkNWZmIGxlZ2FjeS10cnVuaworNDYyODkgODM1ZWE1OThhNDA2MGJhODFiOTg4ZGMxNjMzZGU5OWRjMjkyNjIwZiBibGFpcy1ieXRlYnVmCis0NjI5MCA2NjEwZDRiZThmYmQ5MDI1MDU0MDNkOTJjMGJmYzM2MDA3OTM2MDNlIGxlZ2FjeS10cnVuaworNDYyOTEgZmU2NTNlMjI0ODhjOWEwYjA4MzMxZDA1NGI4ZjBlOTYxMGE0YjA2MSBsZWdhY3ktdHJ1bmsKKzQ2MjkyIDkyYjBmYzU0ZDIzMDBkMDU4ZDAyYmU3MDRlMmI3MDJmZTllNzE0ODIgbGVnYWN5LXRydW5rCis0NjI5MyA2ZDg2MTVmOWYxY2NhOTc4Mzg1Yjc5NjM4YmM4MTIzNDViZmMyMjc2IGxlZ2FjeS10cnVuaworNDYyOTQgOGQyOGU2M2U4ZjIxNjY0ODNmMDAyZTVkZjY0OTZhODViMWNlOTZmYiBsZWdhY3ktdHJ1bmsKKzQ2Mjk1IGFkMmU0ZGU0N2QwOTYzNjVkYWVkN2UxNGNmYmVlNGUxN2MwODljODMgbGVnYWN5LXRydW5rCis0NjI5NiAyZjQ1YWQ2NmNkMzY1MDU4YjAwZGZkMjFmNjZkNjQwMGI3NDhlOTQyIGJsYWlzLWJ5dGVidWYKKzQ2Mjk3IDNiZWYyNDA4NmFjZTUxZGEzMmEyMWU2NTVmYWU1NTI1ZWZkZGY3N2YgbGVnYWN5LXRydW5rCis0NjI5OCBiN2I3NjE1ZWE1ZjVmMjA3M2Y0ZmMxMmY4MjEwZjZlMGU3M2Q0Y2VlIGxlZ2FjeS10cnVuaworNDYyOTkgOWY3YjFiN2FkZjAxMGUyZmJmZGM1NzhmODEyMDg3MTE0MWQwNGYzNyBsZWdhY3ktdHJ1bmsKKzQ2MzAwIDM2Y2Q0YTRhYjhmN2U4ZjcyYmE4MDIwY2I1N2QwYTgyNWE4YTE4NTcgbGVnYWN5LXRydW5rCis0NjMwMSBjMDdhOTZmNjk4Mzk2MmI0YjJhNTE4NWYxYjI0YThmZGZlMDk5NDZlIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDIgOTU3NzI3ZjJmZjA5ZjM5MzczNzI3MTc1ZDkyZTMxOGQzODhjZTRjNCBsZWdhY3ktdHJ1bmsKKzQ2MzAzIDk4ODM3OTAxNDQ3NzMwODJiMGM1ZjE1ZjE5ODc1YTBkMzNmNTJiNTcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMwNCAzNzhiYTY3N2I1Nzk3MDc2ZmQzNDg1MGRkMjcyZGNhNTViOTI5MjQwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMDUgNzhjNjBlNTk5YWZkYjdiYWRmNjFhNDg0M2E4YzgxZTU2NWUwYjcyMCBsZWdhY3ktdHJ1bmsKKzQ2MzA2IDMxYjljNzhhMDdmMzY5ZmQxZGMxMGVlNzY4ODJhYmEwMmFlMWNhMzIgYmlwcG9saXRvLW5ld3N0cnVjdAorNDYzMDcgMDViYmJkZGZjZTNmN2EyN2IyNTE1MzlkZWRkN2E5N2RjNjQ3YzM5ZiBsZWdhY3ktdHJ1bmsKKzQ2MzA4IGJlNzQxNWIwYTMxODUxYTNjOTNiYmJjZjA0YmJhYjYxMjAxNWEyYzcgbGVnYWN5LXRydW5rCis0NjMwOSBlM2VlM2ViMTg2NzhkYzZlODM3ZjNiZWU2YjU4ZGZiZTBiYzg2NTVjIGxlZ2FjeS10cnVuaworNDYzMTAgZDJkZjRhMzU5ZTM1MmFmNzdjMGUzODMxNzVmZjViZDlkNjdhY2M0MiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzExIGE0ZWU0NTlmZjI4OGE0MmU4OTJlZGQ4MGE5MzU0M2Y2MDk4NTE5ZGUgYmxhaXMtYnl0ZWJ1ZgorNDYzMTMgODhlOWQ4Njc3MDA2NmVjZDBmYmIxY2E5M2YwYjAxOTI5NmExYjYyZiBsZWdhY3ktdHJ1bmsKKzQ2MzE0IDQ1NGJkZTdlNDE2ZTQ5YmE3YmIwZTk3YmI3ZGNjMGIzMmI3M2FhMmQgbGVnYWN5LXRydW5rCis0NjMxNSA4OTBmNjE2MWM5OGE1YTkxNTdmMDg0MzE1YmEyMDBiYTI5OTI0ODQ1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTYgNjUzM2Q4YWUxZmQ5NTEyZWYxN2I5NGVhODkwMWI2MDNkYzM4YTkyYSBsZWdhY3ktdHJ1bmsKKzQ2MzE3IGEwNDNjNWQ3MWVhYTE4YjM2YWZlYTUwYzc3N2FmOGFlNjUzZjJkNGIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjMxOCA3NmIzMDFhYzRhNWU2MzQxODZmODRkZWZmZDRlZTFmNGI4MTI1NDAzIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMTkgOGEzOGRhOGUxMjhmN2RiYzY0MDg5M2U1NDQyYzkzZDMwMWVkNDY3MCByZWxlYXNlMjQtbWFpbnQKKzQ2MzIwIDUyMTNiNjA2NTE5Nzk2ZTkwMGU1NWI3MjgxZjZjYzg0MzkzNDdiYWMgbGVnYWN5LXRydW5rCis0NjMyNSAxYTExMzA1MDY5MGI3NDFmMzI3NmM3MWRlOTA0ZTFlYzZhMmI5OTZhIGxlZ2FjeS10cnVuaworNDYzMjcgYzAwODI3MDVmMmYyMzQzYTI0OTI5OWI0ZTQxMDBhZGY1YWZlMjc2OCBsZWdhY3ktdHJ1bmsKKzQ2MzI4IGY3NDNlM2M2YjliZjE2YTg2NzcwYWVlZGI1MGExMGQxNDc0ODY1MDYgbGVnYWN5LXRydW5rCis0NjMyOSAyZWQ0Yjc1N2MwY2YyNjNkODllZmUyMzc1NzgwNzQzODk0MTY0NzA2IGxlZ2FjeS10cnVuaworNDYzMzAgNzljOGRjYzI3N2E1ZjI2M2UzYmFjZDg5YWU5MTllMWI5YTk2YWUzZiBsZWdhY3ktdHJ1bmsKKzQ2MzMxIDEzZTBmNzFhNzBkNTQ0ZTRhYTlhNDcxMjY0MzA4MGYxNDQ5YmE2MzggbGVnYWN5LXRydW5rCis0NjMzMiAwOWQyZTk2OGQwNzQ3MjkzMjk1YTY3M2EwMWRlOGZkNWVjNjY4NWIyIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMzMgZmE5OGI4ZGYwZmUyMTc2ODQxNTQ4ZWZkMjczNTFhYmRkYjI4ZjQ0YyBsZWdhY3ktdHJ1bmsKKzQ2MzM1IGE0ZTQzM2MxMzZkYTQzYjAxOGQ3NWFiMjEyZjNhNTJmYzI4ZTQ1YTQgbGVnYWN5LXRydW5rCis0NjMzNiAzMWQ0MjE1NDgwYzY5OTk1OTA3YmY3YzRjY2NlM2IwMzJjOTk3NTIxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzMzcgZDJiMzhhNjFkZTcxMzUzNGU5YTAyODMxOWUyOTNmZWZmNjczOWU0OCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQwIGJlZjZhYWI1ZjliM2EzZDAxOGE1MmE1MGMyOGEzN2UzZmY2M2ZmNTAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM0MSBjMGRiZmVhOGMwZmI1YjkwODQ2NzdlYjMwNDM3YjViZTFhNDM0NDZkIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDIgZDEwOWIwODFkNDRiZTU0MDY4OWUwMTlhZmM3Yjc5MjJhMjNkNGQ3ZiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQzIGMxNGUwYzg5YThiMGQwN2U1ODBiZTZhNGYyMDBhYTA5NTViOTgxYzIgbGVnYWN5LXRydW5rCis0NjM0NiAyZTdhMDBlYmMzMTkyNjA1ODVlOTFlYTQzOGY0OTdmYWM1OGUzNDkwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNDcgNWU0ZGNlNzhmMjNkYTliMzMwY2RjNzEzMmU1MjkyOGI3NGFiMGM2YiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2MzQ4IDYyNGI0YmI5M2Q5MDI2YTJmNThkMjE4MGQ4YTdkMDM1ZjJmY2Q0NmEgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM1MCA0M2M4NmYzNDlkNDc4NGM3ZDY0NzdiNThmZWVjMTVhZWVkOGU4ZDkxIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNTIgNGJmZWFiMjMwZTM4NWQ2N2Q0MTRiMWQxMjkxOTQyYTcyOGM4YTM4NCBsZWdhY3ktdHJ1bmsKKzQ2MzU0IDFiYTNlNDBlODY0OTZhMjczNmJmYWE5MzhhYTVlZDkzYzU1MDNkYTggbGVnYWN5LXRydW5rCis0NjM1NSA1MmQxMzk5ZTFjNmQ5MWM3YWUxYzZmNTMwZDBmN2FhNDc1ZGZkM2MyIGxlZ2FjeS10cnVuaworNDYzNTYgYTE2OTQ4ZTk5MTVlY2E1NmQ4MzA0ODlmZDVkOTcxZDZmNDk3OWE0ZiBsZWdhY3ktdHJ1bmsKKzQ2MzU3IDBiOGIyOGYwZjMwMTQzYjEwNzU3YmRhNjM1Mjg0MTFhNzI3OTY1YmYgbGVnYWN5LXRydW5rCis0NjM1OCA3MjlmZjgwMDhjOWU1OTgzMDc0Y2UxOTViZGE0YWI0M2I2MGNkZTk0IGxlZ2FjeS10cnVuaworNDYzNTkgZDM3ZDVjNTUyMWUzODY0NmVhNTlhN2VlNDY2YjczMWQ4OTIzZTllYyBsZWdhY3ktdHJ1bmsKKzQ2MzYwIDJlNGEyNzRlMzEwOGFlYjM2MjMyNmI5Y2VkMjlkNTBhN2U2MmZlMDIgbGVnYWN5LXRydW5rCis0NjM2MSBhNWY1M2ZlY2ZjZTY2Y2IxOWQxMWI2N2E0ZWI3MDM5NDY5Nzg5ZWYwIHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDYzNjIgYjMyZjliYjJlMDc3MjdmYTZkMDQ4ZTdkNDNjZTFiZTMzZTMzMjM5NyBsZWdhY3ktdHJ1bmsKKzQ2MzYzIGY3MTBlZGNhYTY3NTg5OWVhNGI3YmY4YTVkNTA0ZDhhYTRjY2ZlNjAgbGVnYWN5LXRydW5rCis0NjM2NCAwNTc0NDkxN2I3YzM5YjIzODZkMzQzN2IzODg4YzRkMTkxMWI1ZTAyIGxlZ2FjeS10cnVuaworNDYzNjYgOTY0MTUxMDVjMjllMDFlZWFlMTAwMTFlNTUxMDcyNGE3ZGQyMzIyNiBsZWdhY3ktdHJ1bmsKKzQ2MzY3IDM4OTBhM2M3OTJiOTAzNzNlZTE3OGNmMjkwNjJlZDdkNTY2ODBiM2MgbGVnYWN5LXRydW5rCis0NjM2OCAzNWY0MTczMWJlZTk0ZTRiYWE0NWE0ODlmODMwOTczMThkNzQ2ZjFhIGxlZ2FjeS10cnVuaworNDYzNzAgNGQwYWJiOTljOWU1NDhkM2I5YzBkNzQxNTNjYzdhYWFlNzFjMzViZCBsZWdhY3ktdHJ1bmsKKzQ2MzcxIDJmNzFkMWE2OTJiZjRhMGJiMTYxYTAyMWViZjc5ZGE2M2FjMWMwNTYgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3MiBkMjE4OTZiMmRkMGFkNzFlZjdiMTUyMzgzMWEzOWUyM2EyYjI0MDRmIGxlZ2FjeS10cnVuaworNDYzNzMgZDg1YjM2MGFhNWY2ZjgxZDhhNDBhZThkMmQ3NjU5ZDRiZDEwM2Q4ZSBsZWdhY3ktdHJ1bmsKKzQ2Mzc2IDFhYjMyNjE3ZGFkZGY2NjdiOTA2NGIxMTZkYmNhMGU4Y2FlODRjMzggc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM3NyA3NjgwNzkwMmEyZjUwNWU1N2QwZTUyOWIyNmUxMzU4YTQ5NGIwMWE2IGxlZ2FjeS10cnVuaworNDYzNzggMjNmNzhlNWJkM2UzYWU1Yzc0MGYwN2JmMDg5OGRlYTcxZTIxMGRkZSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2Mzc5IGY3MDY1M2MxZTYzM2I2OGE5ZDk0MjQ5MjIxZGU4MjgyMTc2ZmM1OGQgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM4MCA3ODc3MWQ2NzNiNGI3MzEyNjI1ZDUyNjkwYmU0OTQ3ZTY4ZjAzM2JhIGxlZ2FjeS10cnVuaworNDYzODEgODE2ZjhlNjAwOTdhOWRhN2Q3ZDI0ZDg0MTgyZTJkZWY0OTQ5MjgxNSBsZWdhY3ktdHJ1bmsKKzQ2MzgyIDQxZjgzOWU4OTUzMjVkMzYyODBmMzAzZmExZjA5NTgxMWFiNDY4MmYgdGltLWV4Y19zYW5pdHkKKzQ2MzgzIDBmNjFjM2M2MmI4YmY4MTkxOGQzZDQ1M2VmNjIzMzhjYmI4ZGMwYzAgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjM4NCBjZmM5YTAwN2U4Y2ViMzBhODViYmY1ZjJlNTc4NzVhNTk4MzdkM2M1IHRpbS1leGNfc2FuaXR5Cis0NjM4NyBiMjBlN2NiZGE0MDkxMmM4MzRkNzliNzU1YWFiNzg4NGRmMzBlYjEyIGxlZ2FjeS10cnVuaworNDYzODggZDE1M2QyZjY2ODg0ZmMzMDE4NWJjMjFiM2I1ODk1MDM1YzQzY2IxYiBsZWdhY3ktdHJ1bmsKKzQ2MzkxIDcwYzBmZmQyMWJmMGE3MzAwZTE4YmE5ZWI1MzI4ZDNhYjFjOTc5MzMgbGVnYWN5LXRydW5rCis0NjM5MiBkZjA0ZjE5MmEyYTI3YzRmMDA5YmJjZGY0MDI0ZjFiOTBmNTkwNDk3IGxlZ2FjeS10cnVuaworNDYzOTMgYWM0NWVjYThjMzVjMjQ2ZGI4Njg2MTI3MTY2MGE1YjdiMjkwOTlkMiBwM3lrCis0NjM5NSBiMTg5NjY1NmYyMmU0NjkwNjNmMjk0MTM3MTA2ZDczMGI2N2U1YTRhIHAzeWsKKzQ2Mzk3IGRiYjE5NWM5ZGQ4OGUyNTQ2NjI5YWRmNjJlMDNiY2RjZTk4ZTQ5OTggbGVnYWN5LXRydW5rCis0NjM5OCAzM2MzMjg4OTZmNTI3ZWI1ZjBjNzY1Y2JlZTQ4NzAyYjlmMTBiNjEyIGxlZ2FjeS10cnVuaworNDY0MDAgYWRjMjE0ZmMxZTFjMTNjMzk4MDZkMzgxOGY1N2YzMWI2ODE5MGRiNCBsZWdhY3ktdHJ1bmsKKzQ2NDAxIDVkZGJkMjA1MDBmYzUwNDkxZjc4YjgxMWVhMmJmMDdhOTA1Mzk5NzMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwMyA2YjAzYTQ3ZWI1NGRmN2VkYWNjYTFlMTEzNTY0MTBiYTkwMDI5NjMzIGxlZ2FjeS10cnVuaworNDY0MDQgNmQ5OWRmNTU2MDZlMjRkMGZjZTY3Yjc2Y2U2ZjRjMDFiZTNkN2U2ZSBsZWdhY3ktdHJ1bmsKKzQ2NDA1IGU4M2UxYWFhYjFhM2FlMDQ2MTNlZGViNjU2MDg5MjNhNDYxZmIzMzIgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwNiA1MmYyYzlmNzRmNWFkNWE3NmIyYjFmOGFkOTYyZTQ1ZWYyYTA3OGMxIGxlZ2FjeS10cnVuaworNDY0MDcgMzEyOGNmYWRhNmI0YTdjZDhhZmViMjNmNDU5Yzc0MWE0MzE4MTU2NCBsZWdhY3ktdHJ1bmsKKzQ2NDA4IDQwMmYzYWM0MDUyZmZhZmRkODE0YjhkNGE1NmRlNGRkOWFkZmQwNjUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQwOSA4ZjdjN2FlYWMzYTU4M2EzYjkyZmE4ZWFlNDdiYzg4OThjODg2NjZlIGxlZ2FjeS10cnVuaworNDY0MTAgMWRiMGQ3Mzc0OWVkOWVkYTVlZGUwMGI3NjZlZTkxNDFmYzZkMzg1YSBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDExIDU2MDdhYjZjNjdkZmRiMGRhNmFlOWQ1YTM2NTIzYmI0ZjFiNTk5NmUgbGVnYWN5LXRydW5rCis0NjQxMiBmYTY3NWIzZDc1Y2E4MjI1ZWQ5NDcxNjQ4NTRiNDU3MDQxZDk0OGY4IHJlbGVhc2UyNC1tYWludAorNDY0MTUgZTdhZjk3ZTI3OGM0NGE3MTBkYjQxOWUwOTcwN2I4YzkzMWFhZDhkOCBsZWdhY3ktdHJ1bmsKKzQ2NDE2IDQ2OTdkMTk1OGNjYjA1YmE2ZDlmZDMxNDYxMGRhMTUzNDhlYTc4Y2IgbGVnYWN5LXRydW5rCis0NjQxNyA2MzFiNjY0OGZkZjQxYmUyYzQ1NzU5NTMyNTdkZDg5MTE2ODQ2ZmNkIGxlZ2FjeS10cnVuaworNDY0MTggMmJlZTE1MGEwZjc1MjI5YTEwY2I5MDdmOWIyNGU1ZTMwMTI4YjMyOSBsZWdhY3ktdHJ1bmsKKzQ2NDE5IGZlYTZmYjQ1NTcxMTNiYzYxMTcyNjJjOTFmM2NmMzliOGFkNjlmNTUgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQyMCA0ZGM2MWQ3ZGIzYTI5ZmY4NmFjZGU1ZjJlY2IwOTU2NThhNDAxZDY0IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MjEgOGUyZGMzZTQxODAxMWE2ZTI1ZDc2MDJkZGFlZWNjMTBkNjBlNzdjZiBsZWdhY3ktdHJ1bmsKKzQ2NDIyIDBlZWJkOWVlYjcxN2NhMzEzM2M3ZTFjZDRlZGRmNGM3MDhiY2I0M2QgbGVnYWN5LXRydW5rCis0NjQyMyBjZTYzOGQ0YjRmYzhjZGFmMGM0YjYzYTE2NDg1M2EyNzYzZWY2ZTU2IGxlZ2FjeS10cnVuaworNDY0MjQgOTBlZGFmMGQ5MDYyMTgyMThiYjk0YmZjY2RkZTNlMDAxZWQxZTlmZSBsZWdhY3ktdHJ1bmsKKzQ2NDI1IGUwZTQzZTU2MTUxMmJjOTYwNDEwYjdjN2QxMjZkMjFlYWFiNmYwMWEgbGVnYWN5LXRydW5rCis0NjQyNiA3MDhlYWYwODk2YmY0NTQ0ZDRkNTQzNTM4MzJmMzMwMDcxY2FhNjU4IGxlZ2FjeS10cnVuaworNDY0MjkgMzhlOWFmMzhmMzgxYzI3ZWM2MDcwYjVjNjJhNTM5YzM4ZjQ2ZDMyOSBsZWdhY3ktdHJ1bmsKKzQ2NDMwIDQ5OWNmN2MyZjc3NzNlZjk2ZmVhNGI0MjRiM2M5MzRiZWNjNWQ1NmQgbGVnYWN5LXRydW5rCis0NjQzMSA0MjA5YTNkMjk1ZTM0N2VlZDZmZTU0MTAyOGE4OWExM2MzYzQzMTExIGxlZ2FjeS10cnVuaworNDY0MzIgZGZiZDQ1N2NhNjdhYzZhOGYwOWRmM2NkZjU5NWJkZDBmYzU3NGU4ZCBsZWdhY3ktdHJ1bmsKKzQ2NDMzIDY4ZTFhMDJhNWIyOTFkODkzODFiZmY4ZDk1MDRlMDMxMzUwZjY0ZWIgbGVnYWN5LXRydW5rCis0NjQzNCAxMGE1OTczZTBjOWE3Mzc0ZjFjMWM5MTI3YTQ3MDIxZDdiYWJmY2Q5IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0MzYgM2Q4MWZhZjQ3YWY3N2RkMDlhZmRiZWQwZjQ5YjJjODIzMTVlMDNhOSBsZWdhY3ktdHJ1bmsKKzQ2NDM4IGNhNjU3ZTBiZDA5YzAzNzc4ZjAxNmMwZDBjY2U0N2Q1Y2E0ZDJmYzggbGVnYWN5LXRydW5rCis0NjQzOSA5ZjMzNzVlMzNkYjk1ZDA4ZWM0YzJkOTczYTYzZTEyNTQ0NzRmNzUyIGxlZ2FjeS10cnVuaworNDY0NDAgOTlkMDYxYmMzMTQzMWQxZmZhMWM2MjE0NzBmYTU5ZDAxNWRkZTQ3YiBsZWdhY3ktdHJ1bmsKKzQ2NDQxIDhiNGQyYTkwNzVhZjViMGMzZjNhMDlhYWJmMzUwZDFkYzM3NDUyNDMgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0NCA1NDljYWRhNGUzNmNjNTdhM2U1ZjJhZTQxOTk2OGNmMWVmNDhkMmIxIGxlZ2FjeS10cnVuaworNDY0NDUgM2ZmM2QyZjIyMDEyMjQ2ZmMxODA2NzUyMmNkZTE2YTg4OWY0MmRhMiBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDQ2IDMyODc5ZDI2MTA5ZDk2OTYwNmQ3ODdhNTUxNTUzMDgzYWFmYWMxNTcgc3JlaWZzY2huZWlkZXItbmV3bmV3ZXhjZXB0Cis0NjQ0OCAxNmExY2FkMGY5NDk5OTI1NDRiZjhiY2E1YzhiNjkyZWU5YTQ5YWU1IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NDkgY2UzZTNjNjNmZTVhZGRlMzBlZDBmNzk2M2FjZDJlM2M0ZWM0M2FmYyBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDUwIDAwMzQzMzUxMWU0ZGQ4NGFmYTRjMDQxYjJhYTc2N2U3MmUwYmY3NmMgbGVnYWN5LXRydW5rCis0NjQ1MiA3MzQyNmU3MWY2N2FiNTc2MmFmMzBkOTBiYTVhMzFkY2U4MTJjYzg0IHNyZWlmc2NobmVpZGVyLW5ld25ld2V4Y2VwdAorNDY0NTMgYTVkNWU3M2IyZWRiYjVmYjNlYjk5Nzk3MjVlMTAwYmRkMTQ2MDJjMCBzcmVpZnNjaG5laWRlci1uZXduZXdleGNlcHQKKzQ2NDU0IDc5NWQxY2IxZGYwMTNjZGYzNDVhOTI2YmFmNTA2NWJkMDE1YTBiMTUgbGVnYWN5LXRydW5rCis0NjQ1NiA0YzA4MjNmMGEwYTE1NzRlYTgyYzE5ZGU5ZDRjMWUyYTFhNTYwOWY1IGxlZ2FjeS10cnVuaworNDY0NTcgYTU2YWE4YWI0ODliNzBjNDVjNTI3MzA2ZTk0ZGYxNDVkNjkzMzQ3ZSBsZWdhY3ktdHJ1bmsKKzQ2NDU4IGNlYmE4ZjJlYTI0ZWViYTUwODc1ZDQ0M2Y0NmRmYjk3MWQ2ZDI5ZjYgbGVnYWN5LXRydW5rCis0NjQ2MCBjY2RjMGJjMTFkY2YyZTI4ZjZjNGJjOTY0NDBkZmYxNGZhNjQ5OWY2IGxlZ2FjeS10cnVuaworNDY0NjEgNjA2M2U0ZTZlZTIwZTE3ZDk0OWMyMTdlMzc5NjIzMmY2NzI2OTIzMyBsZWdhY3ktdHJ1bmsKKzQ2NDYyIDMwZTRlYTQyMzM2OTA5YWJjZTA2NWRkNWM0ODY5MmM1ZDQzOTdhZDQgbGVnYWN5LXRydW5rCis0NjQ2MyA3ODFiZDk0Y2ViYWQ1NWUyOGY3ODhkYzkyMjU0M2YzNmZkOTQ0Zjc4IGxlZ2FjeS10cnVuaworNDY0NjQgMDUzMDVkM2FhMDRkMWRiNjQzODJlODBiODk2NTQ1NWRlYTY0ZjdkMyBsZWdhY3ktdHJ1bmsKKzQ2NDY1IDUwNmVmOTEzMDIzOGI1ZWI5ZGEyYTc5M2FkY2Q2ZWQxNWU2MTE3NjggbGVnYWN5LXRydW5rCis0NjQ2OCA1YjA3NTNiOWQxNmFjMzg3NjhjMDY1ZWUwZDQyNDg1YzViN2I5NWZjIGxlZ2FjeS10cnVuaworNDY0NjkgNzIzMjdmOGY0YTc5NmZlNTZhNDdiOTA4NDhiMWJlZWFjNjc0Y2Y5YSBsZWdhY3ktdHJ1bmsKKzQ2NDcwIDgwMzhlNDFmNDZjYzBkMjQzNDFiMGJmZTg4MzYyMTJkNTlmNWRhNTQgbGVnYWN5LXRydW5rCis0NjQ3MiBlYWU2ZGUxYjQzODM4MGE1NTcwMmZiMzBmMWZiYjAxZDEwZWQwNzc0IGxlZ2FjeS10cnVuaworNDY0NzMgMDhiZjA4MjJjNTBhMGQ3M2Y5ZmY5MzU2ZGMyZTQ0MDQyNTQyZTEwNiBsZWdhY3ktdHJ1bmsKKzQ2NDc0IDhkYWViOWFmODQyMmNiZDQ3YzI5MjQxMjA1ODM4YjliZDM1NDI3OTggbGVnYWN5LXRydW5rCis0NjQ3NSA5YTY1ZmQ0MjU1YTM3Y2VhNzJlZDAxMzgwNTExZTA5ZTA2YzdkMTRhIGxlZ2FjeS10cnVuaworNDY0NzcgODA3NTQwY2Y3NzE0Yzk4OTRkMjlhYjA2ZGVmODMxYjI4MWVmY2IxNiBsZWdhY3ktdHJ1bmsKKzQ2NDc4IGU5NTcxNTVhZTliZGRjMjFjYTY2NjFlYTI1YzAxMWNjNDBhZjY0NGEgbGVnYWN5LXRydW5rCis0NjQ4MiAwMzhiYjhkMDA1OGIyNTM5NTcyZjE5NTgwZDBlOGM5YWFjNDNjNDIyIHJlbGVhc2UyNC1tYWludAorNDY0ODggNDU1NmMyYzkzMGY0YjAyNWU3OWFiMWExZWFiZDA0YWFkMWUyMjEwZSBsZWdhY3ktdHJ1bmsKKzQ2NDg5IDNkZWQwOTA4ZTk1MmY2NDZkNDAwZTllNTVjNmY4YzY4Y2I0MWY0NWIgbGVnYWN5LXRydW5rCis0NjQ5MCAwZjJmN2EwZDliN2RkMjAxNWI0ZDcwNGUxM2VlMTkxNWEwZGVjMTM0IHAzeWsKKzQ2NDkxIDI5YWU1ZTBmYzM0ODI4YjVlNjNmMTg0ZjMwMzg0NjExNjY4ZGJlZmQgcDN5aworNDY0OTUgNjMxYzIwN2MzNjkyM2QwMjNmODRjZDBhOTJiMjg5YjZiNzBiZTZkMCBsZWdhY3ktdHJ1bmsKKzQ2NDk3IDFhMjM3MDYxMzljYTBmYzI3ODY4OTQ4MzI1ZTJmNDIxNTFhYmNhNDggbGVnYWN5LXRydW5rCis0NjQ5OCAzZmVjM2NlMjA0MTM4NGFkZWJkOWRjNzNlZWU2MzI5Njk5MjQ1YzI1IHAzeWsKKzQ2NDk5IDU1MTgxNGU0YjQ3MTE3YjMyZjYyNzRjMWUzOTA4YzQ2NGNmODIxNDQgbGVnYWN5LXRydW5rCis0NjUwMSAyMzY3MjVmNjRhMzQxZmZlOTAxMjliMDk3OTAzZmUxMGE1OTM5NGIxIGxlZ2FjeS10cnVuaworNDY1MDIgN2ZhN2NiNmQ4YmU4MWUyOTBhYTJhNmU4ZDAyNGUzOGQ3NDgyNmQzYSBsZWdhY3ktdHJ1bmsKKzQ2NTAzIDAyMDNhOGFmNzRhNzVhOWFiZjYwZGZkNjlkZjhhZWIzMjdhZjM5MTggbGVnYWN5LXRydW5rCis0NjUwNCA2YmE1Njc4YmU3ZjI2MzU0NDZiOTg1OGYzZDMyZmM2YjgxYjdhYTA1IGxlZ2FjeS10cnVuaworNDY1MDUgZjc2ZDNlNjhkMWFjMzdiMDBiMWQ5NWJkZmJkOGJhZDMzODQwN2RmZSBsZWdhY3ktdHJ1bmsKKzQ2NTA2IDUxMjU1Y2M4YTBkYzA0YWJlNzMwNWU1NGRhM2EzMGY1ZmM0YzEyNGUgcmVsZWFzZTI0LW1haW50Cis0NjUwNyBlOTg5ZWU1ZDQwNGFiZTc3NjIxNGFiMDgwZTI3NjIwYmVkYzI3ZjBlIGxlZ2FjeS10cnVuaworNDY1MDggMzIwNGFhOWUyYjIyNTk2YTk2MjQ4OTkwNWE3MzVlODZmYzJjYmMzMyBsZWdhY3ktdHJ1bmsKKzQ2NTA5IDcxODYxYzM3ODA5MzcxMzYxZWRkOWVhMTlkOTFjYWU2ZWU2ZjdmOTAgbGVnYWN5LXRydW5rCis0NjUxMCA1OTNhY2NkZGUwMGVmMzMzZDNlYmQ1OWI4ODgyYWNiZTg2NTJlNTZkIGxlZ2FjeS10cnVuaworNDY1MTEgZjE3ZDM3OTIwZjZhMWJkZmNlMDg2MDkyN2UxN2I4NTdlNjM4YmViYiBsZWdhY3ktdHJ1bmsKKzQ2NTEyIDk1ZmIyY2QxZDNiYWNlNDc1Y2QyNDE1ODRkMWQwMDhjODI2ZTE3OWEgbGVnYWN5LXRydW5rCis0NjUxMyBlMGNlYTYwNTQxN2U0NWM1NTFmMjc2YWM0ZDllZTUzZDY3N2Q3N2UyIGxlZ2FjeS10cnVuaworNDY1MTQgOTI2OGMzMDc4MmMwYWZmNzFmNGYzMzA5YmFmMzUwMDA1YjU1MTYxNyBsZWdhY3ktdHJ1bmsKKzQ2NTE1IDkzOGMwZmNkNWJjY2I2YzczY2FiYzlhZDNkNmEzMzkzMzA3NGZkNGYgbGVnYWN5LXRydW5rCis0NjUxNiBkNjBjN2Y2YzJhYTAwNGJlM2JiOTQyYjBkYTBhMzE4N2E4MzU1NWY5IGxlZ2FjeS10cnVuaworNDY1MTcgYmYzMjY1ODFjNzQyMjI2MmE4YTlmN2IwODc0NWU2NjE4YTQ0YzYwNyBsZWdhY3ktdHJ1bmsKKzQ2NTE4IDlmMzI4NGM5MmViMzBmMTA3MTBjOWI2YjkyYzZkMDA3NmM3YWVhZWEgbGVnYWN5LXRydW5rCis0NjUxOSBkMzM4MzA2MzQ5MWY1OTgzY2ZjMWM1OWYxNjM4ZWEwZGU2MjFlMDMwIGxlZ2FjeS10cnVuaworNDY1MjAgYWEwNjVmODIwMjUyNDZiYTE3ZWIyMzI1N2MwZDAxODY5MDdiM2Y4YyBsZWdhY3ktdHJ1bmsKKzQ2NTIyIDU4ZTk5ZjJhNjRlY2ExZGUyYTZhYWU1ODc1N2IzMTVjNzE3MjY0YjIgbGVnYWN5LXRydW5rCis0NjUyMyA1NTMxOTU1OTkzZWQ0MTY0MDZkNTI0NjY0N2RhMTI2NTVlN2NjOTc2IGxlZ2FjeS10cnVuaworNDY1MjQgOWIwMDFlYmVhYTVlNDg2Nzc3NWQxMGRmZjQ5MDMxZjNiM2M0N2IxNiBsZWdhY3ktdHJ1bmsKKzQ2NTI1IDNkMWE5OWIzOWZjYTI1YWViNjE0MWU1Nzg1ZjUyYjhjNzNjNDgyNzAgbGVnYWN5LXRydW5rCis0NjUyNiA2NzQzYTZhMDZmMTU2ZDFkYmZlODllNzk1M2FkODI1M2QzMzk4ZTQyIGxlZ2FjeS10cnVuaworNDY1MjcgZmI1NmEzOTkyNjA0YmE4NTk3NmNkZDExNzE2Nzg0ZTA3NjZiMjIxMSBsZWdhY3ktdHJ1bmsKKzQ2NTI4IGY2NGIxM2EwMGYzM2IyOGM4ZWZhYTU1OGEwMzBjYTgwNzczMzkzMzkgbGVnYWN5LXRydW5rCis0NjUyOSBkY2Y5MmRkNzQwOGEzZjBiZDJhZjU0NDk0OTg4MWEzOTVmNjk0NTI4IGxlZ2FjeS10cnVuaworNDY1MzAgOGFjNjAzZTU3MGEwNTU4ZjlhMjc1NzE0NTY4MjYxODk0YTkxNzFhYiBsZWdhY3ktdHJ1bmsKKzQ2NTMxIDVhMTJjMGM1MTgzZTg4YTA1ZmI5MDM1Y2Q4Mjg2YTNjOWIwMmI4MTUgbGVnYWN5LXRydW5rCis0NjUzMiA0OGE2YWY4N2YzZTg2MmE4YjMzNzcwODIzNWQxNDYyMDIyZDU4OTE1IGxlZ2FjeS10cnVuaworNDY1MzMgM2ZlM2NjZGYwMTU1NTIxNjNjNGM5MWExZTk0NmNiMTExNmI2YWIwYiBsZWdhY3ktdHJ1bmsKKzQ2NTM0IGE1Mjk4ZjM3MWJlN2NkMmFkOTE5NDIyMjMwMzU1MDUwNTgwZjg5YjEgbGVnYWN5LXRydW5rCis0NjUzNSBjM2YyYzY2NzZiMDYxY2E3MTI4OWJkZGM3Y2UwNTIzMmFjZDRjZmI5IGxlZ2FjeS10cnVuaworNDY1MzYgZDViZGZkMTIwMjMyNzA4MjY3YWRkYzY0NmJlZTM2YTBlN2ZjODBkMyBsZWdhY3ktdHJ1bmsKKzQ2NTM3IDdkNTEwZTRmM2M5ODg1MDVkMDZiYzU5MWM1OTA5OGUwNTRiYjEzNjIgbGVnYWN5LXRydW5rCis0NjUzOSA0ZTRlNjUzYTgwYmY0YWY2NGFmMDk5YjE2ZWIyOThmODU4YjFhMjc3IGxlZ2FjeS10cnVuaworNDY1NDAgMTczMWZiZGYwMjlkMjA5ZTc2ZmE4Yjg1Mjg4NjQzZmVhYzI2ZjU4YiBsZWdhY3ktdHJ1bmsKKzQ2NTQxIDZkNzlhY2RjODEyZDIwMTBkMGQyY2VkZjBmZmZmYWJhNzM0MzFmODMgbGVnYWN5LXRydW5rCis0NjU0MiBhODJmZDdiMDQ0ZGM3YTdkNmQ1ZDY5MWE4NjFhMjZiYzhlMmQwMjA0IGxlZ2FjeS10cnVuaworNDY1NDMgOGRmYmEwODdkYzA3N2E2MWY1MGYzYWY2YTI4MzRjY2EyNGRjMzRlMiBsZWdhY3ktdHJ1bmsKKzQ2NTQ0IDQ5NGNhYjU2M2MxMTdhMTM5YmRhMTM4OTQ5OTZmMjhjYmU1NmQyNWIgbGVnYWN5LXRydW5rCis0NjU0NSA5Zjg2MmQ5Zjc3ODVkZGE3NTEwZTIyYWJjZDNiYzg5ZjdkNTE0Y2RiIGxlZ2FjeS10cnVuaworNDY1NDYgZWM1ZGM4YTQ5ZWRmYjY1NzQwMWRiNWMyMTE2OTNkN2NhOTRiNmVjYSBsZWdhY3ktdHJ1bmsKKzQ2NTQ3IGM0NTAxZmVmZDMyNGZiNDM2M2M5NDU2ZjdmYmY3MmQyYzkwNjg0MTMgbGVnYWN5LXRydW5rCis0NjU0OCA1MTA2ODJhYzVlODlkZDViNjViZDQ3YjhhYzhlMGVmYzJjNjQzNWIzIGxlZ2FjeS10cnVuaworNDY1NDkgNDQxNzExY2JmZTM0MTcxZGE2NzQzNmVmZjE4NWNhNDYzMTEwOWNhMiBsZWdhY3ktdHJ1bmsKKzQ2NTUwIDRmODU4Njk0NmM4ZjU2MzJhNDY1NzgzZTRhOGY2OWVhYzM4ZmYyMDcgbGVnYWN5LXRydW5rCis0NjU1MSAwYWJhNjNmZjdmNzNlMzg2ODNkYTU1NWZjOGI0YmNlZmVjZTgxYzc4IGxlZ2FjeS10cnVuaworNDY1NTIgZDIwMDhiMzFmZDYyYTI0ZDZhNGZlZTE1NjViMzU1ZWQwNGUwMjE3NiBsZWdhY3ktdHJ1bmsKKzQ2NTUzIDk5NTY0ZTYyYWVhOTJkZTE0MDg5MmUxNzgzMmZlMjE3YTYzZWNhYjEgbGVnYWN5LXRydW5rCis0NjU1NCBlMTE1OGUxOTUxZGE1MGY2ZWFkZjg4MjRjNGVlNzA3N2IyNDJjOTZkIGxlZ2FjeS10cnVuaworNDY1NTUgMTNmZWRkMGQwZjI2YzY2NGVkNTk2NGU0ZWFhNzU4ZTNkMDQ1OWU4NiBsZWdhY3ktdHJ1bmsKKzQ2NTU2IGM3NDdhZDUzZTA5ZTBmOTI5NDRjNTQ2MzU4Yzc4NTQwNGVkNzU3ZTkgbGVnYWN5LXRydW5rCis0NjU1NyAxNjhlYjZlMTViOGM3Yzk1MWRkMTIxZDkzZjhkNzFkYTk2YWU2NDc0IGxlZ2FjeS10cnVuaworNDY1NTkgN2YxZjM2YjNjOWY5YWFjMzkxOGVkNmU4NmYzZTNiZjFlODkxNGU4ZiBsZWdhY3ktdHJ1bmsKKzQ2NTYwIGVjZjcxNzNlNzlmZjU2NmY0Zjk1OGJhZGMxODllNTdiNzBmMjg2MGUgbGVnYWN5LXRydW5rCis0NjU2MSBiYjBkMmI5NTU0MzlmMzJlNDgxMjM3MDcwM2Y4OGU2MWUyMjQ2NzAyIGxlZ2FjeS10cnVuaworNDY1NjIgMmZlMzIzM2JkNDI2MTJmNGIxNzM0YzFhZTkzZGUyNjEwZjE1NjU4OCBsZWdhY3ktdHJ1bmsKKzQ2NTY4IGQyYWU1ODA4ODBiNGJiZGQ2ODVlYzdkOTBmNGQzOWZiZjkyNDhjYTYgbGVnYWN5LXRydW5rCis0NjU2OSBmOWQxODQwZmFkMzQ4NTI1NDA5MjVlZjdhZjliZTlmOWZhZDk3MTVjIGxlZ2FjeS10cnVuaworNDY1NzAgNjI5ZWJmN2QzYjVjYWNhNTlkYmYwYzEzZGM5YTlmOWFmNjhjZjU1ZiByZWxlYXNlMjQtbWFpbnQKKzQ2NTcyIDFhNTZkYTg2YzExYTg3OWZhNzE5NTBjYjQyZTJlZmZhMThjNjM5M2UgbGVnYWN5LXRydW5rCis0NjU3MyBiYWRjMTczN2RjODAxOWNmMmIzMDJkNTIwMDA1ZjAzNTcxMmEwZWM3IGxlZ2FjeS10cnVuaworNDY1NzQgZjBmMjkxZmE5YjQ2OTE4NDFlZGVlZTVlZTUzODAwMGVkOGUyY2VkYyBsZWdhY3ktdHJ1bmsKKzQ2NTc1IDNmZDgwMjc4NDVmODAyYzlhMGQ4ODA4YWM2NmY3NGJkNjcwODZkOWIgbGVnYWN5LXRydW5rCis0NjU3NiBmNTBkM2E1MWQ2NDZmMzNiZWZmNWI0MmJiZTYwNTg2ZDRjNDQwMmU1IGxlZ2FjeS10cnVuaworNDY1NzcgZDI1ZTI3OWM3ZWE5YjI1N2NkYzVhMWIxMmEzZjczNWQ0OWFiNjMwYyBsZWdhY3ktdHJ1bmsKKzQ2NTc4IGY4MzFlOGJjNmJkMzc4OTkzNDQ3NThhODVmNmUwMjc3NTA5NWM1MDAgbGVnYWN5LXRydW5rCis0NjU3OSA1ZjQ0MmY3YmY0MTllNGZjM2MxMjA5ODAzMDdkOTFiNjY1YzNlODlmIGxlZ2FjeS10cnVuaworNDY1ODAgZTA5OTdmZmEzNTcyNDY4YjllYTBlYTBjZjYyYjE2ODE3Y2ExMTFmNiBsZWdhY3ktdHJ1bmsKKzQ2NTgxIGE3ZjIyOTVhNzhhYzEzOTUwYmZmZTg3ODRiZjg0OTJmMGIyY2JiMTcgbGVnYWN5LXRydW5rCis0NjU4MiA0NDdhOTRiMDM5ZGViODBjYTFkYTkzMzNiYTNhYzgxM2I4NzBjOTM5IGxlZ2FjeS10cnVuaworNDY1ODQgNDI4ZTljYmI0MzQ2MWUwZWVmZmYyZjc0MzAwNzVhODQ3NTI2N2ZlYiBsZWdhY3ktdHJ1bmsKKzQ2NTg1IGRiMmQ4YWE5ZmUzZDQyMDhiOTkyODdmMDUzYmY0OGQxM2ZhZWIzZjQgbGVnYWN5LXRydW5rCis0NjU4NiAzMDMxYTcxMTBkYTlhODc1OTczMmZmMjYwMmZjMzk5MjIzMWFmOTQxIGxlZ2FjeS10cnVuaworNDY1ODcgYjFlYjRhNjc0OTk4MDU0YTZlNzUxYTE2ZTNhN2VhZjNiZTcyYWMwZCBsZWdhY3ktdHJ1bmsKKzQ2NTg4IGNmNjc3ZTk3ODg1MmZhNmNlYmViMDkzYTUwNGU1ZDRiODQ4YjkzMGYgbGVnYWN5LXRydW5rCis0NjU4OSAxNzVjYmRmOWE1ZmJkMDY1N2Y4NTE1ODYwZWM1MTA4M2JlNDBjYjgzIGxlZ2FjeS10cnVuaworNDY1OTAgOTk1ZWNkMjMxZjdjNTk4ZDViNDE1MTMwM2ZkMzI2NGM4ZDA3MjkzNiBsZWdhY3ktdHJ1bmsKKzQ2NTkxIGM1ZDUwODcyZWZmNDgyYTczN2U0OTE0YjJjNjI4NDE2N2JhNDQxOGQgbGVnYWN5LXRydW5rCis0NjU5MiBiOWIwMzZmMDIyMDdlMjliMjIxNTM0ODY2ZDcwZDJlZjI5ZDRmZDZiIGxlZ2FjeS10cnVuaworNDY1OTQgZDdkZDUyODQyN2MwZDE0YWE0M2IwZjhmYWQ1MmViNTU1Mzg2ZTlkZSBsZWdhY3ktdHJ1bmsKKzQ2NTk5IGYzN2U2N2JkNDM5MzE4NGExZWJhYWVlYzhkMTFiMjE5ZDU1MTc5OTkgbGVnYWN5LXRydW5rCis0NjYwMCAyNjMyYmQ1NWMyOWYyNTQ0YmQ5ODc0MTZjZjJjZDc5ZTYzNThkYjI1IGxlZ2FjeS10cnVuaworNDY2MDEgNzVkNjgxMTU5MzI5ZDk4ZjE2NTVkYmUwZjI3ZTU2MTBkM2ZlOGY5NCBsZWdhY3ktdHJ1bmsKKzQ2NjAyIDY5N2RkODQ4ZTFmMTM2MzZlNTU0M2ZkYTVmYzYxZDUwN2E0MzMyOWQgbGVnYWN5LXRydW5rCis0NjYwMyAyMWU4ZGQzZTM5NDU3N2M1ODE2NmI1MTUwMTAyZTEwYWJkZmJhMzg4IGxlZ2FjeS10cnVuaworNDY2MDUgMmViOGJlMGY4NzMxMjk3MTYwNzZkMzY5NDdlZTBhYTUzOTU4NTIyYSBsZWdhY3ktdHJ1bmsKKzQ2NjA3IGY5YzMwMWRjNWZiNzRjOGMyZTE4YTVkYWYyMGRkMDhmODI3NDFkMDQgbGVnYWN5LXRydW5rCis0NjYwOCAzODNjZDk0YzJhNjdkMzdmMmJhMWIxYzE3MjY1MGE5Y2I2ODQxNzc1IGxlZ2FjeS10cnVuaworNDY2MDkgNmY5YjUzNmU5NmY2NjM1M2MxZmU5ZTc1NTIzOGE5MDIzZTNlOWM1OSByZWxlYXNlMjQtbWFpbnQKKzQ2NjEwIDk2NmU3NDcwZmUyMzczMzNiNGUwZWYxZDU0Yzc5NTI4MDQwOWY3ZjggbGVnYWN5LXRydW5rCis0NjYxMiAyYjVhOWRjNDkwNWM5MzliZDRkM2Q2NDJlMGE3NzEyM2YxYmM3NWY0IGxlZ2FjeS10cnVuaworNDY2MTMgNjRiOTM3OWZhODBkYjA4ODQxMzU5ZDFlYTQzODhjNjJlMjM2YTRkYiByZWxlYXNlMjQtbWFpbnQKKzQ2NjE0IDQ2NDI2NWMxZDA4YjFjYTY3ZDQ1NmY4OGVjNTc0YzAzYzcyODc4MWUgbGVnYWN5LXRydW5rCis0NjYxNSAzNDczZmNmMGJjZWU4NDYxZjZmNjZmZDY2NjA1ZmRiZWQ4N2Q2Nzc2IHJlbGVhc2UyNC1tYWludAorNDY2MTYgYWFiYzEzNjAyNDQwYWYzZTZmOGI1MGNjZWQyYzRiNWU5ZGUwMzA3MyBsZWdhY3ktdHJ1bmsKKzQ2NjE3IDg1NTk5M2IwOWZkOTIwODJiNDJhN2Q2NTU1NjkwZjJiZTk0MGFhM2UgbGVnYWN5LXRydW5rCis0NjYxOCAzMmY3MDZmZDQ1MDNlOTg5MGU3ZjExYmM4NDQ4MWNmM2JkMzdiNTNjIHJlbGVhc2UyNC1tYWludAorNDY2MTkgOTcwNTI2YzFhN2UyZmYzNjQ0ZWYyYzI0NTYzMzJjYmZhNDcyYTNhOCBsZWdhY3ktdHJ1bmsKKzQ2NjIwIDEyOWFiODQ2YTcxZmFmZjYxMjNjMzU1ZWQwNTYyYzdlMzJlZjI4Y2MgcmVsZWFzZTI0LW1haW50Cis0NjYyMSBkNDE0MGY3OWYxYzcwNzk4YTMwMTI0M2Y2NGFhMDZhYTJkNjUxZTRkIGxlZ2FjeS10cnVuaworNDY2MjIgZjdkNDIzYzBiY2Q4NmEzYjAzYmM5YjU5NjQ2MDAwMmQzMzNhNDYwOSBsZWdhY3ktdHJ1bmsKKzQ2NjIzIGYwZjVkY2EyOTk5MDdhNDgyM2NiOWI5ZmJjMDU0OTJmMzE2NjMzN2EgbGVnYWN5LXRydW5rCis0NjYyNCAzNDcxNGU0MGQ0NjU2ZGYwMjc2ODY2NjE0YmRlYjA2YjIzMDg0YzAxIGxlZ2FjeS10cnVuaworNDY2MjUgZDFmYWNhNGYwYjgwMjYxMjViMWYxZDIyOTFmNzU5OTI5MDk0YmVhYyBsZWdhY3ktdHJ1bmsKKzQ2NjI2IGE0NjU0NzcxZTViMzAxNDRjYjgxOGU4NjBkMDM4NDhiMDUwYjZmOTUgbGVnYWN5LXRydW5rCis0NjYyNyBiZWYwMjM2ZDdiZmE2ZjEzNmUzZjU3OGVmNTUyZDVkYzA4MzdkOGQ2IGxlZ2FjeS10cnVuaworNDY2MjggNGVjOTQyY2Y4YzkyZWQ3NmU0MTRhYTgzYzI1NjRhMzY3MTU0OTE2OCBsZWdhY3ktdHJ1bmsKKzQ2NjI5IDgwNmYzZTE0MTE5ZDc3ZGM4M2ZkNzYxNjBhNDIyNDg1OTRmZWM1ZTggbGVnYWN5LXRydW5rCis0NjYzMCA3MjFhN2ViMjNlYmY5YzA5ZGNhOGI3YzM4MzAyYWE3MTE4YWZlM2RlIGxlZ2FjeS10cnVuaworNDY2MzEgMTYzMTgyNDlhYTMzMjQ2MzczMjBiZTM0NWU2MTQyZjI3ZDJkZDUxOCBsZWdhY3ktdHJ1bmsKKzQ2NjMyIDI0OGQxMDZmODk1MmVmZDRmZDcxYmM3Yjk0NjY2N2Y0OGZmYTA4ZWQgbGVnYWN5LXRydW5rCis0NjYzMyAwN2FjZjZmYTVhYTBlZGZmZWViMWUwMWI2ZThiMWRkZmFmNTYxNzQ4IGxlZ2FjeS10cnVuaworNDY2MzQgM2FhZGM2ZGM0YjFhNjQyMDU1YWFlOGMwNGRhMDcxZDUxZmYwYWM5OSBsZWdhY3ktdHJ1bmsKKzQ2NjM1IDZmNzQwNGYzZmM1NzY1YjM3ZDJhNTEzNzMyNDNjNjhjNzA0MzM1N2IgbGVnYWN5LXRydW5rCis0NjYzNyA1NzIyZjExMmQ1ZGE1NGJkMDViMTBiNWRlZDRhZTBmN2UwODJkNmU3IGxlZ2FjeS10cnVuaworNDY2MzggODIwNzJhOGY1MjY3NGYwMzU0ZjYzODU0ZjVjMGVmNjg4ZTcxNDcxOCBsZWdhY3ktdHJ1bmsKKzQ2NjM5IDA3ZTUwM2U4NThlZmUyN2Q0YjA4MzEyMmY4M2RjYzZjMGUyMTVmMDkgbGVnYWN5LXRydW5rCis0NjY0MCAwYjJiMDc2ZTU5MDhlYTNjMTIzNGJiNzY1MzUzODUyMWJhNDg3MmNhIGxlZ2FjeS10cnVuaworNDY2NDEgMTk0MzBjZGZmMmJkNmFhOTFmMjk5OTJjZWMwOGYxNDZkYmMwMDg1OSBsZWdhY3ktdHJ1bmsKKzQ2NjQyIGExMTQwMDNhYTNkM2ViMDcxMzM0NDNiMWJiYWJiZjk3MWIwZjEyZTYgbGVnYWN5LXRydW5rCis0NjY0MyA3MjM5YTFhODA0ODc5MDBhM2JmMTFkNmFkODAyNjg3ZjdhNGJkNWJhIGxlZ2FjeS10cnVuaworNDY2NDQgNDcyMmQzN2ZhYTE0Mzc4Yjk0YWRlMzA2MmJkMjg1NTkxYTYyNzNiYyBsZWdhY3ktdHJ1bmsKKzQ2NjQ1IGUwMGU2OGRkMWRkZmE4NjFhNzlmNzc1MjVkYzRkZjBiYjQxMThmOTggbGVnYWN5LXRydW5rCis0NjY0NiA1ZWM4OTczZGQyMjEzOTFiOWFjNThjY2I3ZTgwOTdjOTk1MDg1YjcxIGxlZ2FjeS10cnVuaworNDY2NDcgZGI3OTI5NzcyNjNhY2VlNmYwNGQ1OGQxYTQ0MzA1ODcxNDBkYWZjNCBsZWdhY3ktdHJ1bmsKKzQ2NjQ4IDllMGIwNTBjZTQ2ZjA1YzBlNzdlMzY1OThkNzUwYTg0OTA1MjJiODUgbGVnYWN5LXRydW5rCis0NjY0OSAyMTk2OWI3MWMzNmQwNzIxY2FlOGEzNjI4NDdhOTdjNTcxODE4ZjczIGxlZ2FjeS10cnVuaworNDY2NTAgNWRmYjIxYTM3ZjE5ZmFmOTBiNWU1MTUwY2Q2NzdhZWE1NTRlYWNjOSBsZWdhY3ktdHJ1bmsKKzQ2NjUxIDdkMzFkMDMxZjhlMTMzNTA5YWExMTdmZTRlZTViMjMwOWMxZDNjZTggbGVnYWN5LXRydW5rCis0NjY1MiA5MTNlNWU4NGZhZGU3NmQ2NGIzYjk5ODEwOGZmNTEzZTQxNGRjNDI2IHJlbGVhc2UyNC1tYWludAorNDY2NTQgZjE2ZDQ0ZDMwM2NmODQwMDllNDI5MDRmNWY4NTBhMGY5Y2UyMDRiMyBsZWdhY3ktdHJ1bmsKKzQ2NjU1IGM0NTg3YTVmNWU5NGVlNmM2YWNjMTg1M2JlYjQ0ZTExYTlkOWI2NmUgbGVnYWN5LXRydW5rCis0NjY1NiBkMDA3M2M2ZjZmNTZlMmQ4MTUzNTMyMDdmNDAxY2Q0YWMxOTU5ODZlIGxlZ2FjeS10cnVuaworNDY2NTcgMWMyM2U5NWE4MGEyZWY4OTRjNDM5ZDdmYmZlNjc4NmVkZWFhZjhjMyBsZWdhY3ktdHJ1bmsKKzQ2NjU4IGIwMGNiYjA4ZTBjYzExYmVlMGRlYWI0NTdhOWZhNGUzYTQ4MzdhYWUgbGVnYWN5LXRydW5rCis0NjY1OSA1OGRlNjFiZWRkZmNlZjNmZjJhM2UzZjE5ZTBjYTZlZGY4MDlhY2Y1IHJlbGVhc2UyNC1tYWludAorNDY2NjAgYzA1ZWYwOGUxYmE5NGQ5Y2ExNzk4NjkzMGJiZTQwNzkyYjBjMGQ1OCBsZWdhY3ktdHJ1bmsKKzQ2NjYxIDIzNzQ1NjA2MmI4MGY3MzZjYjg3MjIxMzMxYzkzNTJjNGEwOTk2ZmUgbGVnYWN5LXRydW5rCis0NjY2MiBjYjNmNTEzOGVjYjU3ODBhNGZkYjVjMGFjZWI0OGU4NmYxN2RhNTRiIHJlbGVhc2UyNC1tYWludAorNDY2NjMgYzkwOGFhYTkxZWFlMTc4N2MzMTUzNDdhNTVlNGZkM2E1ODFmNTdkYiBsZWdhY3ktdHJ1bmsKKzQ2NjY0IDFjOWQ4MDc3ZWNmYjIxZjljZmQ3Njc0ODc5NjJhMTU5YmQwYTI2NjcgbGVnYWN5LXRydW5rCis0NjY2NSA1YWRiYTcwOTYwNmIzYTY0ZDIyY2E5YjJiOGQzZjUxZWU3ODdmOTRmIGxlZ2FjeS10cnVuaworNDY2NjYgOTkwNjQ3ZTJhYmM0YjI0NTJiMjVlODc3OGQ5M2RjZjMwNGYzYjMzYSBsZWdhY3ktdHJ1bmsKKzQ2NjY3IGE0YjU4YWI2NTIwMjNjNTgxMjkwNTM0OGM3Y2NhMTY0OGFkMmJmYTkgbGVnYWN5LXRydW5rCis0NjY2OCBmM2E2Nzk5ODVlMGQ1NDhkZjMwN2E5OWE3NGE0NWYxYjAyMTc3NWI3IGxlZ2FjeS10cnVuaworNDY2NjkgMzA2MDViZjk1ZWY4YjhiZTdhYjA3YzA0YmQxNDAxNWM4OGU2NTY0NyByZWxlYXNlMjQtbWFpbnQKKzQ2NjcxIDAyZDQ3NTQwNWUzYjVmMjkwYjYwNGFmMDMzMzExMTBhNWQzZWY4MWIgbGVnYWN5LXRydW5rCis0NjY3MiA2NjQ5YjUxZTI0NWY5MjVkYzc3NDExMDFjMDk3NTU4NjI3YTk2Y2MzIGxlZ2FjeS10cnVuaworNDY2NzMgMjE3N2FlY2Q5MWZjYmFiM2RhOGQ3NzMwYTVhNjNhM2ExOTc2Y2E2MSBsZWdhY3ktdHJ1bmsKKzQ2Njc0IDA4NTVkYTE0YTgyMGMwZjE2YTVlN2JjYjkwYTY4NTE0NDI5YWVjMTAgbGVnYWN5LXRydW5rCis0NjY3NSA5NjM5Y2IxM2I5NDA1MzBkMTM5MGE3ZWQ0NjFmNzEwNDE3ZTAwODY1IGxlZ2FjeS10cnVuaworNDY2NzYgNjg3YWFjZDY0YmU5NjY5NjFhZDc0NzExODAzNjBhZTJlMmJkNzc5YyBsZWdhY3ktdHJ1bmsKKzQ2Njc3IDBkY2I5MjI4Y2IzZmQ4NTUwMjQwZDlhZDk0NDdiMWQxNDBlYjAyMDcgbGVnYWN5LXRydW5rCis0NjY3OCA2NTRmMDM4M2RiY2IyZTNjY2FlOTgxYzEzODJjNTU1MTcyMWI0Y2RiIHJlbGVhc2UyNC1tYWludAorNDY2NzkgYzRiNDQyMjJhNTk5NGIwN2FjZDRlOWU3NjhlYTM2OTFkZmQ2ZWM1NCBsZWdhY3ktdHJ1bmsKKzQ2NjgwIDE4ZGU1MGI1OGZiMWQ3OGZmY2U3NjEyMTUxYTg3ZTc2MWQ5ZTMwMGQgbGVnYWN5LXRydW5rCis0NjY4MSBmMDA1MThiYjViNDMzNTc3NWMwNmUyNjliZDU0ZjZjMjIzMmU4ZDJmIGxlZ2FjeS10cnVuaworNDY2ODIgODBhNjI3MzQwYzlmMjNkNzk4MDQ3ZmUzOGM1ZTgxZjNjZjBmNTdiZCBsZWdhY3ktdHJ1bmsKKzQ2NjgzIDExZjY2NzMxNTU0ZGJhNzgwZTUwNTA1NDdhYzFjNWEwY2NhN2QyOTkgcmVsZWFzZTI0LW1haW50Cis0NjY4NCBhNjBhZGYwY2IyZmQ3NGZiYzdkOTI0ZDMzNjhjMjMwZWY5ZTU1N2YxIGxlZ2FjeS10cnVuaworNDY2ODUgNzA4MWU4ZDUzMjk4ZWYzYzQ0OWZjZDdhOTI0MzFkNmVhNDIwYjk2NyByZWxlYXNlMjQtbWFpbnQKKzQ2Njg2IDZhZTQxOGU0YjM2YTlhNjdjY2RlNzIzYmZkYTIwOTVmZGI0NmU2OTUgbGVnYWN5LXRydW5rCis0NjY4NyAxZTM4ZmY4MWM4YTk1MmVlYmY3Y2JiZjM2NzI1Nzg1MmE4YzAzZWYyIGxlZ2FjeS10cnVuaworNDY2ODggODI4YzEwNmQ1ZWNjOWZkNzRjZDE2ZjhiZmQxYTkyODZiMTZkYzIwYSBsZWdhY3ktdHJ1bmsKKzQ2Njg5IDVmYmVmYjVjOGEyM2U2OWNkMDJhNmUzOTkzNWM1MWM5YzIzOTgxZTEgbGVnYWN5LXRydW5rCis0NjY5MCAwZGNiNjJkNmQ5OWEyOGE0ODA3NjY0YWFiMmMzNTg5YTU2OTUwN2E3IGxlZ2FjeS10cnVuaworNDY2OTEgOThlODFhZjQwMDA3ZWZkMThlYTY2NmVjNGRhNWQ1MmFkMTZmNGY2NyBsZWdhY3ktdHJ1bmsKKzQ2NjkyIDFjMDE2ZjljYTVhNzRhZDEzNzM2Y2I3MDEzZGRjZmQyZjEzODJlZDUgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjY5MyAyODBiOGVhZWUxYzAzNGRkYTA1YWMyZDg3MmIwNmEyOGM3YjAyYWRjIGxlZ2FjeS10cnVuaworNDY2OTQgYzk4OWZhZmZmM2RjNmM1MmRiYTJmMTQ4YjIzMjExMjExNzRkOTljMSBsZWdhY3ktdHJ1bmsKKzQ2Njk1IDMxMWY3NTFhY2E3YTMzMmQ4ODE1YjA1ZDE0MGZiOTQ2Yzc4OGMzZGMgbGVnYWN5LXRydW5rCis0NjY5NiBjYjNiNDM5YzI5Y2NmZGE5ZmUwODFmOTUxOTc2ZGIxZDYyNDgxZmRlIGxlZ2FjeS10cnVuaworNDY2OTcgOTMxYWQwNmJlYzU2MTk2OWQxNDRlNWE5MDNlZGQ4OGVhZjM0OGFiMyBsZWdhY3ktdHJ1bmsKKzQ2Njk4IDYyNWMyZDk4YTFmODA1ZDE3OTM3YzM2YTgzOWE1NTllZDMwNzMwZTkgbGVnYWN5LXRydW5rCis0NjY5OSA3YmZhZmRlZmZlZTI2MDk1NmVjMjhhZmRkM2JmMTUzNmJhN2QyODAzIGxlZ2FjeS10cnVuaworNDY3MDAgMWU4YjU5Mzg5ZTJlMTBiNjgyNjhlOTkzMThmMTRhN2I5OGE3YmQzNiBsZWdhY3ktdHJ1bmsKKzQ2NzAxIDFlODU2NTdmMDQ3NDBkNjBiNjk3ZGYyMmI0MmNlZmVjZmM5NmUyMjkgbGVnYWN5LXRydW5rCis0NjcwMiAzYTM2ZDVmNWIxMGZkMzA0ZTUxNmY4Yzk4ODg2NTRiMjBmYjJiNzkwIGxlZ2FjeS10cnVuaworNDY3MDUgZWE5OTY2Yzg4NjU3NDJkMjgwNDZhODNmNDE4NzlkZWIyZjJiY2Y1MSBsZWdhY3ktdHJ1bmsKKzQ2NzA2IDBjZDIyNzNiYzNiMTc1NmM4OGMzZjZiNjkyM2MxOGNlOTZjNTU0NDcgbGVnYWN5LXRydW5rCis0NjcwOCBkZWZiMmI5OTM0MzRmZjFmNjYxOTc1ZDYyOTgzZjdkZjBmMWNhODExIGxlZ2FjeS10cnVuaworNDY3MDkgYTJjZjg3MWI3ODAwZThkZGMzNzNhOTQwZWI2YzM1NzAxYjY1NGVkZiBsZWdhY3ktdHJ1bmsKKzQ2NzEwIDNmYjM4MzUxZGQzOWNiNzNlNWQyYmIzYjQ2NzU4OGYxMzYzNzVlYWIgbGVnYWN5LXRydW5rCis0NjcxNiAyYWY1NzU3ZGU3YjFlOWFkNjQ3YTk5MmYyZTZjNzMzMjRjODI4NmVlIGxlZ2FjeS10cnVuaworNDY3MTcgMWNiMmVjZTRiOWUxZGUwZWFiZDM5ZDZhZTQxYTIwZmU0OTM2MTNmOCBsZWdhY3ktdHJ1bmsKKzQ2NzE4IGEzNjY4ZTk0ZmM2ZDRkNDc3MmI0YzM0MDM0YmU1MTUzYTIwMDlmNDQgbGVnYWN5LXRydW5rCis0NjcxOSAxYjQ3ZDAzMGMzZmFlNWM3ZjVhYjNiMDZiZGY3NmZiMzNhMmU2OWExIGxlZ2FjeS10cnVuaworNDY3MjAgNzcwNGYzNzU0MWY0MjMxZmViZDYwMmNlMzEzMjkzZjU2MjM0MGQwOSBsZWdhY3ktdHJ1bmsKKzQ2NzIzIDg3MmU5OTFmOWI3MDE1NDA5ZWY1N2E3OWYyMzViMDc3NjJjOGFmNjIgbGVnYWN5LXRydW5rCis0NjcyNyAxMTAwYjUyYzU1ZmRmZTM2NDViZjEzOWU1NjA0ZmNhY2U3ZTdhNDcwIGxlZ2FjeS10cnVuaworNDY3MjggYTA3NjFjZWI4NjMzYTgxYTM0ZDg0ZjkwZmQzYzZjNmQ5MmRkYzZhNSBsZWdhY3ktdHJ1bmsKKzQ2NzI5IDBiNGVhYzQwNTBiODAwMjhiZjJmNTVhMGVjMTc5MDQxYmYzYTEwMTggbGVnYWN5LXRydW5rCis0NjczMCBmYzNiY2Q0ZTQ0Yjk2NGFlNzI4MDI2OWQyZTkxMjg0MGY5NTZlM2MxIGxlZ2FjeS10cnVuaworNDY3MzEgMGU3YmFmYjFiODJmOWMxYTE5ZDI3YjhlYTdmNzhjOGQyNmQ0ODFjZCBsZWdhY3ktdHJ1bmsKKzQ2NzMyIDdkMzFiNjY5MmFiNzQ4MDFkZWIzNWM2NTYxMDQyMDdhZmEwMjFiYjIgcmVsZWFzZTI0LW1haW50Cis0NjczNSBlM2MwOGYwNjZlYjgwZDdlODFlZDFkODk5MGQwMzhkMTA1NTU5ZjAwIGxlZ2FjeS10cnVuaworNDY3MzYgZmNiZjYzYzliNGY2ZmNlZGE2MjUyNTg3YmMxZWRmZWYxMjNiZmQ1OSBsZWdhY3ktdHJ1bmsKKzQ2NzM3IDRiMGEzZDBkODU4NDFiNzUwZjdmMzE0YjdlN2QzM2QwZTljNjliNzQgbGVnYWN5LXRydW5rCis0NjczOCAxZTA3MDRjZDllZTgxYWFhNTg4MGY1YThkYjAyM2ZhNGM4YjBlNzE3IGxlZ2FjeS10cnVuaworNDY3MzkgNWM1OGZkYTk1YWE1YTJiZmQ0MjFjN2ExZWQ0Y2JjZTk4YzU0MzRkNCBsZWdhY3ktdHJ1bmsKKzQ2NzQwIGYyOGY5YzE1ZTJkMGY4ZTAyMzE3ZTg3MGU2NmM2NWQ2NjkwMTM1YzcgbGVnYWN5LXRydW5rCis0Njc0MSAzNTgxZDFkYzQyNTMzNzIyMzA1OTZlYzg0OWE2YmYwZTYxMjVkMTczIGxlZ2FjeS10cnVuaworNDY3NDIgMWQyMzljN2U4ZDYwNzVhMzE4NjAxOGFiNmI0ZmE0MGRmZGFkMWIzMiByZWxlYXNlMjQtbWFpbnQKKzQ2NzQzIDcyYzhmMThlMDMxMTgzZGJlOWE3ZmNlOWZlNjYwMzExMWQ5NjA5OWIgbGVnYWN5LXRydW5rCis0Njc0NCA3NjE5MjE2YmJjMTk0YzM0MzFmODM3MDlhYWI5NmY5YTlhZmJhYmVjIHJlbGVhc2UyNC1tYWludAorNDY3NDUgZDNkOTYxZjM4OGJlMmIwM2FmNjRiMTQ4YzczZjAyZjQ2NzNjZWE3ZiBsZWdhY3ktdHJ1bmsKKzQ2NzQ2IGUyYmE1YWU0YjgxM2Q5ZmQyYzJkMjY4ZDhiYWY2YzI2ODQyNTU4NTEgbGVnYWN5LXRydW5rCis0Njc0NyBlMGQyOTU4NjIxMmEzNzdlZGQ5MjI3MzY4ZjRjM2M2ZDcwY2YzMjE1IHJlbGVhc2UyNC1tYWludAorNDY3NDggZGVlNzNmYTgxMTBmM2VhZDQzMDBmOTE2NDVmNjVkYjhjOGUzZTQ1ZSBsZWdhY3ktdHJ1bmsKKzQ2NzUwIDE5ZmQ2MTQxOTQwZDViMGE3YjRmYjJjNDEzODkxMmFiYjAyODNkOTggcDN5aworNDY3NTEgMjQ5MzBlM2I2MDYxOWFlYzMxOWNkZjMzYjJjZjQwYmM5MzExODI2YiBsZWdhY3ktdHJ1bmsKKzQ2NzUyIDM2NWNhMDRkMDg1NjRhMDlkMWNlYmFhZGFlNzQ1YjA4YTQ3NzZjNjggbGVnYWN5LXRydW5rCis0Njc1MyAwOTk5N2IyZjYzYTJjM2RhYjJlNmNkN2VhOWNiZmJmZjFiZmExYjJmIHAzeWsKKzQ2NzU0IGExOWMyMGM1ZTVjNzU2NjIxNTdiMTEwMmUzNmMwN2QxZTJjMDFhYjkgcDN5aworNDY3NTUgNmJhN2Q0NjY3OTg2N2JmOWQ0YWI2ZWU5OGUxNTVmY2QwMTE3Y2FkNSBsZWdhY3ktdHJ1bmsKKzQ2NzU2IDBlMzE5NjY3NDU1YzM1YzYyMjI0MzU1YjM3MjkzZWRlNGU1MDIzYjggcmVsZWFzZTI0LW1haW50Cis0Njc1NyA1YmM3MjcyYjgxZTU0N2RmY2NlYTBiMGZmYjgwMzUyMDk3Y2Y3NTU2IGxlZ2FjeS10cnVuaworNDY3NTggOTM1YWMyMmYwYjNmMDI2ZTUzZjhkYmM3Y2IxYmM5ZDY1MTM3MTYyZSByZWxlYXNlMjQtbWFpbnQKKzQ2NzYwIDVmMTk1NDQzZTAwYWE5MDljOTA1ZmQxNTFjMzlmY2U3OGVkZDg0OTIgbGVnYWN5LXRydW5rCis0Njc2MiA0ZTc5OGNhYTA4MmU1Y2RkMTJhMmQ3ZTFmNzJmY2VlMWI3YmNjMDU5IGxlZ2FjeS10cnVuaworNDY3NjMgYzIwMzg0MDU3YTA2YzI3YjczNjI1NWEwYjgyYjg0ZDE5ZGE1NjU5NCBsZWdhY3ktdHJ1bmsKKzQ2NzY0IGMzYzUyZjE1OTk5OWFlOTQ2MGFmZGRiNGQ2MzdjYzEyMjFmOTBmYTkgbGVnYWN5LXRydW5rCis0Njc2NSBlY2E0ZmUxMzI5NDBiZDNjNTJhYTZkYjExMGU4OWViNDIzNTYxMmMzIGxlZ2FjeS10cnVuaworNDY3NjYgMmVhMjYzYjYyODk3MmU0NTI3M2ZkOWZkZWI4YmUxZWU5NjY1YjYyNCBsZWdhY3ktdHJ1bmsKKzQ2NzY3IGRlYmM4ZDc4M2Y4NjllNWE4YzhhNzI5OGY3MjQwY2FjMWNmOWEyNzcgbGVnYWN5LXRydW5rCis0Njc2OSAwYTFiYWQzMmFiZmUzOWQ5YTBkYzBiYjI2Y2M0YzUwZjU2ZWI4MGUxIGxlZ2FjeS10cnVuaworNDY3NzMgNjdmNDMwZDkyYjM4ZTVjYTQ0YzIyYzc2M2E2ZjQzMTdmOWFmZjgzNCBsZWdhY3ktdHJ1bmsKKzQ2Nzc2IDQ2NTk5ZmM0ODZlOGZkYWFmMjFmOGJiODNiOWE4OGI0ZGYyMDRmMDUgcmVsZWFzZTI0LW1haW50Cis0Njc3NyBjNTczMjFjODQyMjZjOTE2Nzk2YThlZDVjMDdlYzNiNWVkMTZiMjZlIHJlbGVhc2UyNC1tYWludAorNDY3NzggNzdiNjU4OWZhZGI5N2Q4NWUwYzY0NWM4MTVjOTg5ZjM0ZTU1NjRiZiBsZWdhY3ktdHJ1bmsKKzQ2Nzc5IDRlZjFjNjg1YmNiZGNlNDQ0M2IzMjhhZTA3Yzk3NzcwMzlmZjMwZjUgbGVnYWN5LXRydW5rCis0Njc4MyAwNWE0OWM4OTg1ZmIwOWY0NzVjN2EyYTlmNDNiOWQxODNhOTY5OTc2IGxlZ2FjeS10cnVuaworNDY3ODQgYWMyNWVlZTkwMjU0MTc1MTIxYmNlYTE1NzYzNWU5ZWRmMWY5MmQ3NiBsZWdhY3ktdHJ1bmsKKzQ2Nzg1IDcyZTM3YWRhNDE3MDcyZmIxYTEzMDMwOGNlOGUzMGUzZjBiN2FjYWMgbGVnYWN5LXRydW5rCis0Njc4NyA3MGFhYzJiOTNlMDlhM2E0ODkwMGIyNWJkM2JjOGQ1YmJlY2VjMjBkIGxlZ2FjeS10cnVuaworNDY3OTIgNmU4ZDk5NzE4MTcwMGQ0MWMyMjMyNmZjZDM0OTgyOGU2YzFjYjk4NyBsZWdhY3ktdHJ1bmsKKzQ2Nzk0IDEzNWQxNTg2YjM1ZDU0YmFjODFkNzFmYTQ2ZTJkNmE3OTg0ODIzOWMgbGVnYWN5LXRydW5rCis0Njc5NSAxY2FmYmNkN2Y1NWNjY2E5MWM0MDg1YjFmNWE2ZWE1YWY5YWYyYWU1IGxlZ2FjeS10cnVuaworNDY3OTggNzZhZDExOGZmZTNiNWY4NTYyODY3NTlmMGVkYzc1M2Q0OGVmN2I0OCBsZWdhY3ktdHJ1bmsKKzQ2Nzk5IDVhNzQxOTM0MjlmMDY0ZTEyNWRlOTM2MmNjMTg2MzY0NGQ4YmE0MmEgbGVnYWN5LXRydW5rCis0NjgwMCAwN2YyNDE5N2I4N2NkNzBkMjExNjhhZjFhMTE0YzVmMzZjYWNmYzQwIGxlZ2FjeS10cnVuaworNDY4MDEgMjZhOTdlNWJkZjIxMjE1MTEwM2E3YjgzMGE0NTM3ZWExNzQ2OTFhMSBsZWdhY3ktdHJ1bmsKKzQ2ODAzIGIxMjlhNTAyNzFhZGZlYzc5MjA2MjM2Y2MyZWM1Mzk0NGJlZmNlNTQgbGVnYWN5LXRydW5rCis0NjgwNCAxODI4YWY1ZGNjOTk0NGEyZjc4NTViN2ZjYjE2ODY0Yjc4YjNiYTlkIGxlZ2FjeS10cnVuaworNDY4MDUgYmE2ZWViZjdjNzE5ZGZiNThhNWUzOTU0YThjZTViMjRiZmEzODkwOSBsZWdhY3ktdHJ1bmsKKzQ2ODA2IDE2Yzc5OGU4ZWFlMzI3Yjg1YTQ2MGNiYmExY2ViZmI0NDE5NzYzOTAgbGVnYWN5LXRydW5rCis0NjgwNyA0OTNmYjU3NzkzMmYyZDg4MzFhNDNiNTMxOWM0ZWM5N2YyOGExN2U5IHJlbGVhc2UyNC1tYWludAorNDY4MDggNDJmZTZkZTI0NjAyZmQ0MGY0MmUzOTNlZDEzNDQxY2Y1NDlhM2VlNyBsZWdhY3ktdHJ1bmsKKzQ2ODA5IGFkNWQ0NzM1YmVkYzg0NmM2YWVmMjFjMTAyZWNkYmNjY2VhNWMzMjEgcmVsZWFzZTI0LW1haW50Cis0NjgxMiA2NzQ1MGRiMjZmODE2N2U3OGJiYzNlMDUwOTcwODE0N2Q1NTdjYmU1IGxlZ2FjeS10cnVuaworNDY4MTMgZTE1ZmFmYTQxMDdkMjBkNmIwZDQxOWRmYjdiZjNkZDliMmRlODVjMyByZWxlYXNlMjQtbWFpbnQKKzQ2ODE0IDA4YjI0Yzg4ZDUxOTAxMGY1MTMzYjgzOTQzODdjMTI3NmU0ODRmNWUgcmVsZWFzZTI0LW1haW50Cis0NjgxNSBlN2QwODRjZjY1YmI5YjQwODQwY2VlOTMzZGFmMWJiYzU1MGJhNDM4IHJlbGVhc2UyNC1tYWludAorNDY4MTYgNDU0YWEwZWMwZWI3YjNhNmNiMzQxY2MyMTAzMDQ2YTMyNDNhYjZlMSByZWxlYXNlMjQtbWFpbnQKKzQ2ODE3IDgyMzMxZjExYTE1NjBiZmUzY2VmNDE5ODFiYmE5NGE0ZDVmZGUwZWMgbGVnYWN5LXRydW5rCis0NjgxOCBlMmQyZGM1MDY1Mjg3NzliYmQyNWQ2OTUwMjQxYWRkMTMzYTc2MGEwIGxlZ2FjeS10cnVuaworNDY4MTkgNDI4MDg1MjY1MTFjOWJiNDkyMGIxZTEwNzIyMWY4ZWFkMTczZWZmNiBsZWdhY3ktdHJ1bmsKKzQ2ODIwIGIyM2VlYjgwMjc4MDUyM2I2NTQ5NmU0YmJmNWVhNmM4MjYyYjNlYTYgbGVnYWN5LXRydW5rCis0NjgyMSAzMTI1MDk5YjM0OTcxYzMwYzc2OTc4M2VkMzkwMGE2ZTUxY2VhMjE2IGxlZ2FjeS10cnVuaworNDY4MjIgMmRkMTk3MDE0NjEyMmFkZWNlYzg3NjkyNmQyNDhiNTUyNjVhYWU4MSByZWxlYXNlMjQtbWFpbnQKKzQ2ODI0IGFhNWExYmNhMjhkZDg4Y2NjMmRlYzE0YjU5ZTQzYTRkODFlNjcwZjggbGVnYWN5LXRydW5rCis0NjgyNSBjZDVmMmM1YmFiNjUzYjU1NzM2ZTc3M2VhZTM4NWFiNDMyYzJmOGQxIGxlZ2FjeS10cnVuaworNDY4MjYgNTM4Y2YxODhmOGE2Y2JjMjIwOGE1MjI2MmViOWFiZGI5ZjI2MDY0MSBsZWdhY3ktdHJ1bmsKKzQ2ODI3IGJjMDkxMTgxYjg0MTM5NTUwN2E3NzgwMjFmNDU5NWYxYjFlNGIyNGMgbGVnYWN5LXRydW5rCis0NjgyOCAwMTQyNTM2YjUyYjY0YjNhODM2YTYyNzgwNzdmNmYwNWJjZTRiYzE5IHJlbGVhc2UyNC1tYWludAorNDY4MjkgYzVhZmQ0NDBhNGQwOWQwZGUwYzc3MzdlNTM3MWNkMmQzNWU3MmU3YiByZWxlYXNlMjQtbWFpbnQKKzQ2ODMxIDkyNDQwZGU4NjhlOTNmZWYxM2IzMzgzYmU5Y2M1MTBlOTdmYjRkZmMgbGVnYWN5LXRydW5rCis0NjgzNCBhMWRkMjVlYzJmNWJjNjY1NThjMzM4OWRhYjU1YjBiZjMxMmU3OTg3IGxlZ2FjeS10cnVuaworNDY4MzUgNzM2NjVmNmZlYzMxNWFlY2YzMGRjZjdlMzFhZjQ2OGZmYTdkOWI0NSBsZWdhY3ktdHJ1bmsKKzQ2ODM3IDdiMzE4ZTk2ZjgwYWE5NDhkYWE0MGYxY2EwNzFlOTllMWIzYTJjZTggbGVnYWN5LXRydW5rCis0NjgzOCBiOGYyMjg1MWMxZmYxZTU5OTI0YzVlN2IyNjU4MGI5M2E5MDI2NTU2IGxlZ2FjeS10cnVuaworNDY4MzkgMGIzZmUyYjczNGExZGZmMTQwNjU1ZjEzYzMwYzgzZGI1NTM2ZTY0NyBsZWdhY3ktdHJ1bmsKKzQ2ODQwIGJmNGU0ODViZWNmMzc3NjIyYjBmYzJiYWU5ZTJlYmVlN2MyY2QzMGUgbGVnYWN5LXRydW5rCis0Njg0MSAxOTVhMGQzZWVjZDQ1ZWI3NDNhYjIwNGJmOGEyZTYzMDdhMWU2Mzg0IHJlbGVhc2UyNC1tYWludAorNDY4NDQgOWQ4NDc4ZjczMmQ1YWRjOTFmMWM3ZGM4Y2IyOTk0MGVmZjFiNDc3YyBsZWdhY3ktdHJ1bmsKKzQ2ODUwIDlhOTQ0Njc2NzMyYTdkYjBlNDBiYjY1YzhkZWY2NjVjMzMyODI4OWMgbGVnYWN5LXRydW5rCis0Njg1MSBlODAwOTdiZjczYjYwZmFkOGU3ZjE0MGYzMDM2NWQxMzU2M2FlY2NmIGxlZ2FjeS10cnVuaworNDY4NTIgZTYxNTc1NWNhODcyNWZiMGI5ZjhmY2Q3MTVjY2RkMzljYjU2ZWJjYiBsZWdhY3ktdHJ1bmsKKzQ2ODUzIDBhOGEzOTJlMWZhZWNmMzBmODEzNTNlODMxNzI1MGQzOTM4YjU2ZDcgbGVnYWN5LXRydW5rCis0Njg1NCBhZjE3NDJhODA0OWVjNzg4NmU4NGQ1MTA1ZWVmODkzZmMyMGY0YjBkIGxlZ2FjeS10cnVuaworNDY4NTUgNTAxZWUyYTA1ZmVjNGI4ZmQwZGY1YjZjMjg4ZWFiNzJiMzVkOGVlOSBsZWdhY3ktdHJ1bmsKKzQ2ODU2IGFkZjIwODkyZDhjZmJjMGNlZmZkYzk3YmRiMTc3ZjFhYWM5OTNhYmUgbGVnYWN5LXRydW5rCis0Njg1NyA0OTAyNmFmOWQxZDc5YzQxYTBhN2FhNjRiMmZlYmRiZDEzNDUzZmE0IGxlZ2FjeS10cnVuaworNDY4NTggZTg0NjRhZmVmNGE0MWFhOWE3YjJmNjE1YzBjYzMxYjg4MGQ3MGNiZSBsZWdhY3ktdHJ1bmsKKzQ2ODU5IDFiM2I2YjE5ODJhYWNkMDMxNDg4OGVmZmI4MWJiZWQ1YzY1MTY3MzYgbGVnYWN5LXRydW5rCis0Njg2MCBhYjI1M2NkNDk3ZDIxMzc2NzMwMmJiZWI2YTI1Zjg4YTJjMDAwNGE4IGxlZ2FjeS10cnVuaworNDY4NjEgZmM0YWZlZTQwYzJiM2I4NThhOTU5NzRiYzM0MTc4NTE5MzczNzVhYSBsZWdhY3ktdHJ1bmsKKzQ2ODYyIGE3ODkzOTBkOGVhN2VkZGU3ZDA2MzRlN2NhYTg0NTVhYjdhODk0YzAgbGVnYWN5LXRydW5rCis0Njg2MyBiNTBhYjI4OGFlMjdmZjQ4OTU3MGJlMzFiODZhMzM2OGMzODkxZGY3IGxlZ2FjeS10cnVuaworNDY4NjQgZDY3ZGVkN2EyOTE0ZTRjZjNmOWMxNWExODI0NzBhYjQzMWFkZTBmNiBsZWdhY3ktdHJ1bmsKKzQ2ODY1IGZjYTFlNDI0ZDAyMzhmODk1MmIwODgzZjdlYjljNzc0NDU0ZDk5MGYgbGVnYWN5LXRydW5rCis0Njg2NiBjYmYyNzJmNDc5ZDEwN2IzMjNlY2E0MDYzOTYzMmEwOTlkODg5NjJkIGxlZ2FjeS10cnVuaworNDY4NjcgNWE5OTRkMjZhM2NmODk0YmE5YTE2ZWE4ODVmYTBiN2ZjMDVhOTk2NSBsZWdhY3ktdHJ1bmsKKzQ2ODY4IDBhY2M1MmQzZmJmMWY0MzVhM2ZjM2JlN2IyYmVlMTg3Yjc5ZjhjOGIgbGVnYWN5LXRydW5rCis0Njg2OSBlNmM4MDBhNDYzYjEzMTI5ZDNjNzE4MDJjYWE1ZDQzN2QzMTYxZmY4IGxlZ2FjeS10cnVuaworNDY4NzAgOGJhOTdjY2JmOTNhODNmNmU2YmZhODA2MmU1ZGJiZWJiZTg1NjA3MiBsZWdhY3ktdHJ1bmsKKzQ2ODcxIDY2Y2JjY2U0MjI3OGYyMmQyMTRiNjhhNmViMmVmZWM3NTk4OTNhNWUgbGVnYWN5LXRydW5rCis0Njg3MiAxZmE3OGZkMWU5MzM5MTQ3NGZjODk1MzE3MDk2ZTg1ZTJlNDQ3MmQxIGxlZ2FjeS10cnVuaworNDY4NzMgNjBkNzlhMmJjOTk3ZThjYzBjMzMwNDA4ZTMxNzMxMmIzYjdjOTkxMiBsZWdhY3ktdHJ1bmsKKzQ2ODc0IDFhMTFhNGE0OWZiODVhM2Y5NmY0ZTM0ZjI3MGJmYjBmZGIwNzk0NWYgbGVnYWN5LXRydW5rCis0Njg3NSAzZWVlN2JkOWEwZDA3MmI0M2JkYzZlZDcwYzdmNzUwZTI0OWE2ZDM0IGxlZ2FjeS10cnVuaworNDY4NzYgNDE1NzBmMDk5YTRjM2U2NTFmNmIyZDU3ZDc5YzA5YjY3MDc2NmMxYyBsZWdhY3ktdHJ1bmsKKzQ2ODc3IDkyZDhjZGM0YjkwYzAyYzRkMTc1ZmE2YTQ3MGE3Mzc5ODUxMjY0MDQgbGVnYWN5LXRydW5rCis0Njg3OCBmMTRhYjcwYzMyMGU0OGZkMmI1MmUzMWZjN2E4N2JjMjUwNzA1ZTZmIGxlZ2FjeS10cnVuaworNDY4NzkgNjllODljMjkwNDRlMmJkZDBmYjliNzU1M2IwZjliNWY5MzJmYTc3OCBsZWdhY3ktdHJ1bmsKKzQ2ODgwIDQ3ZDhkMTljY2FkYzcwNTJiYThjMmI1MjQ2OWEwMWVjNTMwN2I0YzkgbGVnYWN5LXRydW5rCis0Njg4MSA3OTk4M2NmNjM0YzAyNWFiNGE1ZTcxZWU4N2Q3Yzk4ZjM0ODBlOGIwIGxlZ2FjeS10cnVuaworNDY4ODIgNDZmM2ViNDc0Yzg0MmQwYjAwYWU5MjkxY2IzNTdmNzYxMWUyOWE0YSBsZWdhY3ktdHJ1bmsKKzQ2ODgzIGE5MWU3MzljZTMzMzI1ZmE0YWFmMTAwMjRmY2Q4YTM4ODczZDA5NmUgbGVnYWN5LXRydW5rCis0Njg4NCAxODkzMDRjOWQwN2VhZGE0Y2Q0YzIxOTE3MmFiNWVlNTkwYzJmNDkwIGxlZ2FjeS10cnVuaworNDY4ODUgMmFiMDM5NGU2ZTQ5YjRmMzUzYjg2YjAzY2VmOTYzZDVhNTNlNmVkNiBsZWdhY3ktdHJ1bmsKKzQ2ODg2IDYxOGQwODhkOTY2ODljZjdkZGFlNzgzZTJjNGM4ZjkzODRjYmJjY2QgbGVnYWN5LXRydW5rCis0Njg4NyAxZGE4NDU2ZWJkNDg3MTlhNGViZDc4N2U0ZmJiMzU2NWMzMDMwOTE1IGxlZ2FjeS10cnVuaworNDY4ODggZDU3NzFhMzg5YjhlYjdhOTg1NzhjZDgwNWVkZDNlMTI2MGZkNTNkOSBsZWdhY3ktdHJ1bmsKKzQ2ODg5IDE3MDNlZmRhNTc3NDJkMTgxYmUwNDVmMjA3MDhkNjVkOTJkYjk5ZDEgbGVnYWN5LXRydW5rCis0Njg5MCA1MTczMmU4MWM3OTYxNDY3ZjY4MzJlYjZmYjhjMDNhODdlM2NmMzhmIGxlZ2FjeS10cnVuaworNDY4OTEgOGZlMzczZmIyMWQ0MzBjNGE2NGViNDU0ZDAxZWNiZDJkZmI1Yjk0NiBsZWdhY3ktdHJ1bmsKKzQ2ODkyIDk3MWFiZjNhZWNmNDExNThjYzcwYzFkYjc5M2QxNDU0ZjE1YWRlMTggbGVnYWN5LXRydW5rCis0Njg5MyA5N2I2MWQ2ZjZiNzY4MTYyMDQ3YTljNjQ4NjFhMTdjNTBjNTMzODM2IGxlZ2FjeS10cnVuaworNDY4OTQgNGM3NGVjODMxYTZjM2JmZWUzZjg0NDkzZmM4MGJiOWJiNzZlYjQyZCBsZWdhY3ktdHJ1bmsKKzQ2ODk5IDM4MWE3MmFiNWZiODM5NGEyZDNlYTI4YmQ3MGMxMDBkNjM2YzdkMWEgbGVnYWN5LXRydW5rCis0NjkwMSBjODYxODQ3M2NkYzZlODE2YjY5Y2IwY2FlMGM4YTU0OTJkMGQzMmRiIGxlZ2FjeS10cnVuaworNDY5MDIgNTFmMzM0MmI3MGQzY2ZhNzM5ZWQyMGZkZjdkNDQ1ZTBjMjJjNjQzMiBsZWdhY3ktdHJ1bmsKKzQ2OTAzIDc2NWZiMWNjYzNkODk0ZGJkYjFhZGE5MWQzZmU5NDM2OGI2MjZkYzcgbGVnYWN5LXRydW5rCis0NjkwNSA5Yjg1MDdjZmJlOTUwMTA1OWYyNzcwZmNlZDI5NWQxYzliN2E3YmRiIGxlZ2FjeS10cnVuaworNDY5MDYgYTQ1NTJmMDhkNTNiMzQyNzNlZjRjYzQ0NjU3OTU4ZTc0NTkzZjE4NyBsZWdhY3ktdHJ1bmsKKzQ2OTA4IDljNTJlZmNhZmY2NTFkZWU4NTkyMTM3Zjk5YzdmM2M3Mzc0NTQyOTUgbGVnYWN5LXRydW5rCis0NjkwOSA3MGIxNjZjYTFjNDllMjM3ODg1NTIyZTgyNGQ4MGZhOWRlOGQ0ZjRkIGxlZ2FjeS10cnVuaworNDY5MTAgOTE0ZGExMDM2ZWVkNWRiNmIwNjhhNmM4MDhlYThjZmNkMzJlNzU2YyBsZWdhY3ktdHJ1bmsKKzQ2OTExIDkzNjQyOWUxMGI4Nzk2ZWI2YmVjMzFhZmQzMDk1MGUyNDkyOTRiYjIgbGVnYWN5LXRydW5rCis0NjkxMiBlYTM3MjNiMmQ0NmJkMTc4MDQ2ODRiYmFkMjg4MTFlMTBiZTY3NjBiIGxlZ2FjeS10cnVuaworNDY5MTMgNjQ1NjA5MmMxMjM1YTE3MDFhNzY0YTdjZWRmOTY3YmQ0NDIxYmJmZSBsZWdhY3ktdHJ1bmsKKzQ2OTE0IGUxYjE4NDc5Y2U5MzA3ZDNmNWZhODEyNDkxMGE1M2Q0ZDg4YzNjYzkgYWltYWNpbnR5cmUtc2YxNDU0NDgxCis0NjkxNSA5ODEyMmQyMTc2ZjE0MGExZjUwMjc3ZjkzMjdmMjI2MjU5OTVkN2EyIGxlZ2FjeS10cnVuaworNDY5MTYgNWRiMWZhNmU5NjgxODM1ZjUyZDBjYzk3NGY4NDE4NWU4ZGQyOTYwZiBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTE3IDk5MjEyNmEyOWUwZmQzOGQ0ZGZjMDRkZDcxNDEwYTExZmUwYTFkNTEgbGVnYWN5LXRydW5rCis0NjkxOCA0ZTc0ZGY5NTk1MThhNGI3MzgzYzZlZDRlY2NkNjY2YTI0ZGYxMjNmIGFpbWFjaW50eXJlLXNmMTQ1NDQ4MQorNDY5MTkgZjdkMjNiY2E1OTlmZWJjYmQxZTRlMTljMTAxZmU4MWYxZDNiNGVjNiBsZWdhY3ktdHJ1bmsKKzQ2OTIwIGE3MTRmMmYxM2UyNWYyMjcwNGYxN2FhMTgyNDQwYmU1NTQ5YTI3NGUgbGVnYWN5LXRydW5rCis0NjkyMSAzZTk2ZTUwMjVkOWY3YWFlNGIwNGYzNjU3ODZjYzU3NmRhNTIxOWFlIGxlZ2FjeS10cnVuaworNDY5MjMgNmYyZjE4Zjg2Mzg3NDNkNDlhZDQ3ZDEyOTFlNDZhNWVhMmE1YmM1NiBsZWdhY3ktdHJ1bmsKKzQ2OTI0IDZmMzA2MTFmMjgzZGNiZTcyZWY3NjA5MDZmNzA1ZjE4M2JlZjQ3OTcgbGVnYWN5LXRydW5rCis0NjkyNSA1ZDYyMmU0ODNmY2NmYTYyZGY1N2I0NGMzNDQ5M2UxYzMyNTY4OTY4IGxlZ2FjeS10cnVuaworNDY5MjYgNTEyNTA3NjZkNmY1ZDI1MTMyMDIwODZiNmZjYjk0Yjg1MmMxYWU3NCBhaW1hY2ludHlyZS1zZjE0NTQ0ODEKKzQ2OTI3IGJiMWYwMmU5NzExZGE1ZjUzZWFkMjdiNzIyM2Y1YzRhYTA0YmFhMDQgbGVnYWN5LXRydW5rCis0NjkyOCAyMTY3MTA1MTIzZTQ0NzhiYWFjNzUzYzE0OTY0N2FiZDk5YmI0OWFmIGxlZ2FjeS10cnVuaworNDY5MjkgNmUwYzBjN2NmMDY4OWFkNDgwY2M1ZWZlMTcyYTVmZDIwZWE5YzRiMyBsZWdhY3ktdHJ1bmsKKzQ2OTMwIDcwYzJlZmEwMDAwNzhmMjljNGRjZWQyNWYyNjk5NTFjNTJjOGYyM2QgbGVnYWN5LXRydW5rCis0NjkzMSBhMjQ5MGY3OTMxZDMxMTM5ZWI1ZDdkZmViMjBmNGNhOTkxYjQ4MjdkIGxlZ2FjeS10cnVuaworNDY5MzIgYmI2ODRhMGMyMmQ5NjM0YTBjZjBjMzc2MWIwZjY4OWY5NmYyOTQ3NiBsZWdhY3ktdHJ1bmsKKzQ2OTMzIDc0YmY1NzNiZmY0YzM1ZTdhODVlMjllODUxMThhYWMyMjJkYTFjMjkgbGVnYWN5LXRydW5rCis0NjkzNCAwYTVjZjI1OTQ1ZTJiNjc1Y2Q1MmRkYTE5YzA5NGQzZjJhNWFiODFiIHJlbGVhc2UyNC1tYWludAorNDY5MzYgM2U1ZmQyYjcwZTVhNzBkNWU1NzEzOTRmZjE1MjFjMzE0Zjc2NGQ5YyBsZWdhY3ktdHJ1bmsKKzQ2OTM3IGVjZThhNjc1MWRiNzQ4OGI3YjgwN2Y2ZTMxODE4NzA3OTY3ZTJlZTMgbGVnYWN5LXRydW5rCis0NjkzOCA2ZjdlNjRiNzJhNTg3OWVhNmNkYzgwMTUyNmZjZTdmZTEyOGU3ZDUzIGxlZ2FjeS10cnVuaworNDY5MzkgNDU1ODkxNmI4NDFmMWNmYTc4Mjk5MTlkNzNjNWIyZDU4YmQwYjc0YiBsZWdhY3ktdHJ1bmsKKzQ2OTQwIDYyY2Y2ZDU4YmI1M2ZiNmJkZWFhMDcwYTU1YmU1NGM2ZTUxN2U1YjkgbGVnYWN5LXRydW5rCis0Njk0MSA1Nzk2YWNmYmI2ZGExNjc4NGJkODIxMTY1MGJmYzA0YTVjOTBmZTI0IGxlZ2FjeS10cnVuaworNDY5NDIgYjdhMzYyMGQzZGJiNzY3MDVkMjk3MmY2M2E0NDZjZjQzMWM5YjQ4MyBsZWdhY3ktdHJ1bmsKKzQ2OTQzIDZkODA3NmQzODA1OTdhNjY5ZGY0YzEyYTIxYWM3ZmFlYTVmZTMwZWQgbGVnYWN5LXRydW5rCis0Njk0NCBkODU3YTMyMDc1ZDRiZWMwNzEyOTgzYzNhM2MzOWNkZWRiYjFjMTgzIGxlZ2FjeS10cnVuaworNDY5NDUgNTQ5YzU0NzcwMGFmODcyNWU1MDRlYmRjMDk1ZDE1ODVmN2RkMTk1ZSBsZWdhY3ktdHJ1bmsKKzQ2OTQ2IDA2OWZmM2E3MDY5NDEwNGE0M2YxYzYxZjQ5MWZiNmRhY2MyNGIzZWEgbGVnYWN5LXRydW5rCis0Njk0NyBjOTU5ZGU2NGE4ZGExODdlMWVlODdlMTc2MzgwMGM5NzQ2NTI5MDRlIHJlbGVhc2UyNC1tYWludAorNDY5NDggNDM3N2IxN2RkYjJjZmU1MDNkYWI4MmM1ZTc0OGUzY2MyNjliNmU0ZCBsZWdhY3ktdHJ1bmsKKzQ2OTQ5IDA2OTA2Mjg1OTI5OGM1MjQyZjFjOWM2YjU5Njg3MzUxNDA1NTk2NjMgbGVnYWN5LXRydW5rCis0Njk1MCBjNTIwZWVjZTAxYjAzOTY4NGI1YzgyYjdhN2E1OWM3YWVjOGQ0Y2IzIHJlbGVhc2UyNC1tYWludAorNDY5NTEgZDY4Nzc4MzU3OTFkN2M2NDJhM2RmMDkyYTVjODZkOTQ2NzVlNjc5NiBsZWdhY3ktdHJ1bmsKKzQ2OTUyIGI3ZjRiYTYwMWRmOTdhZjdjZTVjM2FjYzM1ZjIyMDBhY2ZkMWIwNDggbGVnYWN5LXRydW5rCis0Njk1MyA5MTdiZWVhNTU1OTVkOWJiMDY1MGUwY2E5NzU4NGRjNjlkNmFiZmZjIHJlbGVhc2UyNC1tYWludAorNDY5NTQgMTZlMDVjNjA2Mjc1ZWI4OGZmNWU4MzdkOGI5YjdjOGI3NzI1YWU5OSBsZWdhY3ktdHJ1bmsKKzQ2OTU1IGQxYWVjN2I0ZGJiODY5M2Y0Mzg5MmZmN2E2YWIxODEyZTI2MWM1ZjUgbGVnYWN5LXRydW5rCis0Njk1NiAwM2MwNWNhYjVmMjEyNzdhOWUxYjE5YmY3Y2RiNDhhNWU4ZGM2YTQ1IHJlbGVhc2UyNC1tYWludAorNDY5NTcgMGY3NmE1NmQ1MDZjYzIwMGM5NDJkYjQ5YWFlMTAxYWFhYzAxZGUzNyBsZWdhY3ktdHJ1bmsKKzQ2OTU4IDBjZjJlYjNjYzUwYTczYjZlNzQ2MjQ4MzY3ZDE2OGQ2ZDBlOWQ0NzUgbGVnYWN5LXRydW5rCis0Njk1OSA4NjgwODUzZTllZTQwOTc2M2ZlMThkMGMzMWYwOGI0MjVlOGRhZWVjIGxlZ2FjeS10cnVuaworNDY5NjEgZDE1ZGYwMmRiMWNjMTNmN2FjNDQxOGE0OGExM2Y5NGM3YTUyYjBlMSBsZWdhY3ktdHJ1bmsKKzQ2OTYyIGQ3YmM2NDcwZTgzODM1Y2JkZTBmMjI3NmZkZjNkNDI0MjgxMmNkZmEgbGVnYWN5LXRydW5rCis0Njk2MyAzMmFkYWFkNTlmYjM3ZDc5YWIzNTk5NTQyMTE4MjVmMTZjMDk3Y2EyIGxlZ2FjeS10cnVuaworNDY5NjQgMGE4Yjg1MWIwMzc1MjI5ZWJlZTA2M2Q2MTNjMWNlNmM4MTlmYzA3NCBsZWdhY3ktdHJ1bmsKKzQ2OTY1IDc3YjAxYzkzMzMwODhhZmE2ZTRjMWQ0N2M0MjE4MzMzODI1YzA4MDcgbGVnYWN5LXRydW5rCis0Njk2NiBhOWY5YjUwNzViYzBjZjAzY2VjYmVjOTVkMzkxZDVmYmJjZjUxZDVjIGxlZ2FjeS10cnVuaworNDY5NjcgZmQ0MTJhMDBhMDdkZjQ1OWMyYWMzNDkwMjQyMTk1MzA0OWVjMjM4MyBsZWdhY3ktdHJ1bmsKKzQ2OTY4IGQ0YjFmOWEzMWMyOTY5ODUwMzMzZDI1ZDVlNGZiNDYyNWIwNzYxMTUgbGVnYWN5LXRydW5rCis0Njk2OSA5OTM3ZjA5ZDc2ZTNhMGRlOGFkZmI5NDY1YzNhY2NiZTI1ODY1YmRlIGxlZ2FjeS10cnVuaworNDY5NzAgNzkzZjAyNjk5M2JiMjlkNmNjOTE1OTI2NTMyOWYyMDZlZDY3MGJlYyBsZWdhY3ktdHJ1bmsKKzQ2OTcxIDNiNjVlZWZiYWY3NmUzZGJkMGZjN2RhOGEyYjFjMjcwMjk4ODdlNGQgbGVnYWN5LXRydW5rCis0Njk3MiAzNGI2OTcwNDExOTFhZTcxZTI2ODdiNDY1ZTc1MzRmYWFlYjU3NGQ0IGxlZ2FjeS10cnVuaworNDY5NzQgYzc3YmU1YzQwNjNiMzFlNGI4N2JkN2YzYjY2OWE4ZTI1ZjNiNTVhNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc2IDk5Mzg3Nzc0ZWIxZGRhMTE4ZTI4N2Y2YjAxMThlZTVhNWI2YTUzODYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk3NyA1NGRmMzVlOWM2OThhN2Y4ZDg1YmIxZWNiZmEwYTNjNzJjNTRiOTVhIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5NzggOWU0ODI4MDAwY2ZhOTI4YmExMTlkMGY1ZGYxZmRhM2MxNjdkM2U0NSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ2OTc5IDdkYmJlNzg2ZmRjZDIzZGZhNzliOGE1YzAzODA1ZmVjNDU0Y2M2OWIgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk4MCAzNzMwNDNhMWJkZmJiODUwMWU5NDVjZjk0NjYxMDU2M2IwNDRjZWE0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDY5ODEgOTJlYjZlZDAzYzJlMWNjODUwMTIyODQ4NTg4NGYwODY3YTdiMGU3ZSBsZWdhY3ktdHJ1bmsKKzQ2OTgyIGNhY2Q0N2E2MWU3OTZkZmIzNjc0NDE3ZDQwMjVjYjM3MzlmMTAxNGEgbGVnYWN5LXRydW5rCis0Njk4MyAxZjk0N2YxMzQxZDE5NDdiMzJhYmRmMDkyZDE4ZWNlY2E0ODZiZjA5IGxlZ2FjeS10cnVuaworNDY5ODQgOWE5ZDU3ODJlNDM2N2I5YTAxOGRjNmY0MjkzNzllNTA5ZGU1NDA2ZiBsZWdhY3ktdHJ1bmsKKzQ2OTg5IDllODI3ZmQ4MzFkNzdjODQ4Zjc2NGFhZWNiYWZiMDBlZTBiODNhZjEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0Njk5MCBiNWVmYTIzY2M5NDg4ZDdhZDM2NmFmZGIwMGY2NDcyZGVmNjI5NmNmIGxlZ2FjeS10cnVuaworNDY5OTEgZTc2YjZmM2E0NDE5MzkzNTAyNDM5M2QwNTFiYjM4MTBjN2U5MmVkMSBsZWdhY3ktdHJ1bmsKKzQ2OTkyIDZiNGRhNGVlNzE0NmViOTA2NmJiOWU4Y2NkZjhiNmZkYmE3NGMyN2YgbGVnYWN5LXRydW5rCis0Njk5MyBlMGMzZjVhNDQ0MGZkNDM0MWJjN2Q0NmU0MjVhMGU1NWQ3NDJiM2FhIGxlZ2FjeS10cnVuaworNDY5OTUgNTU3ZTYyMTI2Y2IxZGMyMmViODViMGU1OTY5NDFhNmVkZDA2MGVlNCBsZWdhY3ktdHJ1bmsKKzQ2OTk2IGIyYTRiZTQ3MzcyODIzMDBjNGYwZjU1NTdkZjU2ZTVmNWI5M2RhOGIgbGVnYWN5LXRydW5rCis0Njk5OCA4YTUwZDhlOTAxOGM4NDc5NTcwMGFlZDhkOWE3ZDhjMjgzOTJmMmEzIGxlZ2FjeS10cnVuaworNDY5OTkgZjZkYzU1ZDMyZjcwMmNlMDljZTY0OGU0YmEyOGExYjJlMjRiY2ZlOCBsZWdhY3ktdHJ1bmsKKzQ3MDAwIGFmZjY2MjlkMWQxYzQxMWZmZjQ2NDJjYTFkMTkyOTliOWY0YzgzMjggbGVnYWN5LXRydW5rCis0NzAwMyAwM2NmNWRkN2M5MDYxNWJmODdmZmQ4ZWQ5NmU3MzJhOGRkMjQ3MDY4IGxlZ2FjeS10cnVuaworNDcwMDQgYTBiMDYyZmYyOTM5YzkyZWJlMzdjZmI1ZGE3NjhkNzhiY2U0YmMyOSByZWxlYXNlMjQtbWFpbnQKKzQ3MDA1IGM1MDI2NzAzOTA4OGUwMjA5NGQ3ZDJjYzM5MzNhZmM4MDFlY2YyZmMgbGVnYWN5LXRydW5rCis0NzAwNiAwMjY1MGE0N2VlOGJlMzkzODQyNjhmZjM4M2IwZWY5OTUxMzU0YzEwIHJlbGVhc2UyNC1tYWludAorNDcwMDcgOTZlMWIwYzhmZjlhOGRhMWFhMzMzODJjMzE3OTM1MzQ1MDFjNDhiZiBsZWdhY3ktdHJ1bmsKKzQ3MDA4IDEyNThlOTNiYjFkMDA1OTRkNGQxMDJiN2Y0YzAwZDc3OTI5MThmOGUgbGVnYWN5LXRydW5rCis0NzAwOSA0ODRkM2Q1YmE3ZjlhNWFiMDMzMDFlNGUyYmQ2NWZlMDQ3NjRlZTM5IGxlZ2FjeS10cnVuaworNDcwMTAgYjlkMTQ0MGMyZGQxNjMxZDRkMDg3NjA3Y2E5NDc5Y2U3ZDY4ZDFjZSBsZWdhY3ktdHJ1bmsKKzQ3MDExIDZhN2YxZjEyZWFhZjdkNDRlOGQzYzkzMzZlMjMxZDFmODQ0NDZhMDMgbGVnYWN5LXRydW5rCis0NzAxMiA0MTFkMGEzNTNhMTVjODRmZDdlMmIwZTVjZmE2N2M2NjYyM2M2YzkxIHJlbGVhc2UyNC1tYWludAorNDcwMTMgMzBkMjMzMzg1MmQ1MGYwMWQzZDM4YzllZTA3ODYyNmIxYjY4ZjY2OCBsZWdhY3ktdHJ1bmsKKzQ3MDE0IGFkNWFkZDllMDM2OTZkM2FiZGFmMTZjMDMzMWJkZjY0NTExNTdjNzcgbGVnYWN5LXRydW5rCis0NzAxNSBmNGI0NDEyNTY0Njc4OWY1NDU5MTA5MTVkNWQ1YWYwMDg4NWVjY2YxIGxlZ2FjeS10cnVuaworNDcwMTYgOTNjYzNmYzI1MDk5OTk5ZWFhNWU4ZjI2NTIyOWJkMjYwMzg5OTNlYyBsZWdhY3ktdHJ1bmsKKzQ3MDE3IGEzYzYxYzY0OGZjODE5NGRjNzk1YmM2YzE3OWI4ZDhjYjIwMWIzOWMgbGVnYWN5LXRydW5rCis0NzAxOCA4MDVmNDE4ODFlMjcwZTM4MTJmOTFkNDcxOWViOTYwMGNkMGIzNGMxIGxlZ2FjeS10cnVuaworNDcwMTkgMjg0M2JmNzBhOWNmZDRmOTllMjYzOTNmZjNjYWFjYTY2Nzc2YmViZSBsZWdhY3ktdHJ1bmsKKzQ3MDIwIDY3MjljMjdkMDFmZThkYjlmMTQ1MmNjOGQ0ZjE3MGJmNGI3ZmI5OGIgbGVnYWN5LXRydW5rCis0NzAyMSAxMThjNjUwZTJjOWIzYjQ0ZWRkMmM4YzZlODUxMDYzMzUyODhjMGEyIGxlZ2FjeS10cnVuaworNDcwMjIgNGE3NjYwMjQwNDNhZWVlNTkyYTZjMDkzN2RlMmRiNGIxNWEwYTY3MiBsZWdhY3ktdHJ1bmsKKzQ3MDIzIDBiOTVhMGFhYWFlZjk4NmFiNGVjZTMxN2MxNjdhMTIyZjhhMmM2MTUgbGVnYWN5LXRydW5rCis0NzAyNCAwYmY5ZTMwOTljNTdiYzczMGZkYjY1YjE2ZjViOTVhNTdlNTZkNWI4IGxlZ2FjeS10cnVuaworNDcwMjUgYzYzZDJiNjI2M2I1OGI3MjA3MTM3YjY2NDAzNWI3YmZlNDliOTNiNCBsZWdhY3ktdHJ1bmsKKzQ3MDI2IDQ4MzBkNjE0N2FhZjA5OTUyNGQ3YzRhYmQwYmRhNjU5ZjQxMTJmNmUgbGVnYWN5LXRydW5rCis0NzAyNyBhNzQ2MjA1ZjU5NzU5YzczMjhkODk4ZTc4YjhjZGJlOTgzNDFiYzMwIGxlZ2FjeS10cnVuaworNDcwMjkgZjA4ODVmZTE0ZDQyYWVlYTFlNzliNzQ4MDYxNzczYTVlMjlhNTcwNyBsZWdhY3ktdHJ1bmsKKzQ3MDMwIDQwOGQyYTU5NmY5OTIzNDU2YTcyYzY5ODgwMzYwZDg1OWM3ODQ4OGEgbGVnYWN5LXRydW5rCis0NzAzMiA1Yjk4N2QyMTIzMWJmYjY1NDY2MjM2MDBjMzY1NDIxYTZkNGZlZjA1IGxlZ2FjeS10cnVuaworNDcwMzMgZjE5ZTg3NzI4MWU0OTAzNzExZjE1NzdmZmU2MzYwODZjN2M3OWQ3NiBsZWdhY3ktdHJ1bmsKKzQ3MDM0IGQ0OWIxOThmNTQ1Y2Q4MmZiZjczNWEyMjk3OWMzMzJiOGE5N2VlY2IgbGVnYWN5LXRydW5rCis0NzAzOCA1MjM3NWYyMDMyNDQ4ZmU0N2IwNmU1OWE2MmMyOTA1N2JlOGFhMGE4IGxlZ2FjeS10cnVuaworNDcwMzkgZjg3MTZiNzZhNzFlZjdhMDdhMDdmZDI4NDU4NWZiMWQxODhjNzQ3NSBsZWdhY3ktdHJ1bmsKKzQ3MDQwIDNhZjMzMmZmZjUyNzlhN2FlNTY0YzlmYzRhYzkzMzhiZTZiNmVjY2IgbGVnYWN5LXRydW5rCis0NzA0MSBmZGNjYzZiMTRmYWQ2ZWRhNTU5YmFhMjUzOTZjNGFjYWY4NzRhYjgxIGxlZ2FjeS10cnVuaworNDcwNDIgMjZlNGJmMTk1YWUyOTJmZDk4OTQzMWYwZjMyYWM2ZDE1OWM0MTRkMiBsZWdhY3ktdHJ1bmsKKzQ3MDQzIGEzYmExYTM3YjUzNzQ4YmZhODQ0NDRhMGRhOWNkMjUxZjZlZTRhMDYgbGVnYWN5LXRydW5rCis0NzA0NCA4NjgxMjZlM2JjZjZkMDJhNTRmYjg4NTE0NzIxZWE4Y2FlNzEyM2EwIGxlZ2FjeS10cnVuaworNDcwNDcgNGZmZmU2NzdmNTUyOTZjYjc5YWJiYzRlYzJiYTM4NjdlODdkZTY4NiBsZWdhY3ktdHJ1bmsKKzQ3MDQ5IDcwMjNjZWRjYzVlZDA0YTQ1Yjk5Y2Y3ZjhlNWEzZWIxN2IzMjgyM2IgbGVnYWN5LXRydW5rCis0NzA1MyAwNTFjYzM5YTgwMDg0MzI3ZGMwYWRjYmZlYTY5OTFlMmVlNDU3YWJiIGxlZ2FjeS10cnVuaworNDcwNTQgNTNiMDRjMTlmZTQxNmNjYTkwZDg2NjIyNTcwODBmMDkwMzc4YjhmNyBsZWdhY3ktdHJ1bmsKKzQ3MDU1IDliMGY5NDMwY2JjYmRiYjQ5NjVhYzYwMjcyM2JjNDFlZjJjMDQyODIgbGVnYWN5LXRydW5rCis0NzA1NiAxNDkxZTUyYzg1OTcwZDI1MzhjODQxN2YyOWVjNWUwY2FmYjU2MDEwIGxlZ2FjeS10cnVuaworNDcwNTcgZTNhYzczOWQ0ODg5NTU1Y2ZkNDVlOGM5NmZiNjhkNTkyMzRmMjk0YiBsZWdhY3ktdHJ1bmsKKzQ3MDU4IGE0ZGQ2YjIwOWI2NWEyYTZlODZhZmYyYWExOWJmMGIwMDQxNTNlNzggbGVnYWN5LXRydW5rCis0NzA1OSA2OWVmMjNmY2Y1ZjgzZjJhMWU0MDEzOGI4ZmI3NmU0NGZjYzMxZGQyIGxlZ2FjeS10cnVuaworNDcwNjAgMTUyZWMyMmM0ZTY5NWRhMTE2ZjhiOGUxYWI1NTY5NGQxOTQ5NDNlYiBsZWdhY3ktdHJ1bmsKKzQ3MDYxIDUwNmM3Njg0N2VjNzE2MjVkNmUzNDljZWMyNTk4MTdmMzlkMjA2MTggbGVnYWN5LXRydW5rCis0NzA2MiAzY2RkZTQ1YTQ2OGQ1OWIzYjdjOTRmMmM0YjM2OTkzN2UwY2FjZDQ2IHJlbGVhc2UyNC1tYWludAorNDcwNjQgY2I3MjI1ZTg0ODA1NmNjMDdmMzUxNWRhMDIyMDk3M2U1MjkwOGIyNCBsZWdhY3ktdHJ1bmsKKzQ3MDY1IGFjYTM2ZjdmM2FlODdjYTBhMzc4MzhjZTA0YjRlMTkwYWU1NzAwOTEgbGVnYWN5LXRydW5rCis0NzA2NyAwNDFhZDAwNjg1NzAxMTZmY2ViNDFkM2IwNDEyMTYwMGQ1NzM0NjVkIGxlZ2FjeS10cnVuaworNDcwNjkgZWJlZTU1MzkzMDhhZWU3NzkyNGFkNjU1OGQ5YjEwM2QwYTE2ZTk5MCBsZWdhY3ktdHJ1bmsKKzQ3MDcwIGFlZDgwOTQ0MzIwNTNkMTc0ZjFkYTkxYTVjOTliOTMwN2I1YTM1MTEgbGVnYWN5LXRydW5rCis0NzA3MSAyMTE0ZWI3M2FlYjUxNzI3YWJhNDFiZWY5OWRmYmFmOTUwZWFjMTdlIGxlZ2FjeS10cnVuaworNDcwNzIgNTgwMzQwODRlZjQ0YWU0NWYyYjgxN2VmNDllNTNhYTRlYTdhNDQ0NiBsZWdhY3ktdHJ1bmsKKzQ3MDczIDY1MzUzYzRkYjhjMjFiOTNjOTVhYWM1NWIzZjA5N2Q3NTg2NmFjOGIgbGVnYWN5LXRydW5rCis0NzA3NCBhZmM0NzVkMDU2Nzg2OTU0MGY2MWNhN2Q2YTM4NTAxZDY0ZDgzMmQ3IGxlZ2FjeS10cnVuaworNDcwNzUgYWZjYjU4MmQ5MmQ4MzA0ODQ3MzVkYzk0OTdkMDZiN2MwNTNhNzI5MCBsZWdhY3ktdHJ1bmsKKzQ3MDc2IDc4ODE2YzVjZmYwNTA4YzRhMjhiNTg1YTY3ZmRkZmNkY2MwMGEzOTcgbGVnYWN5LXRydW5rCis0NzA3NyBiY2VhYTc3MjBjYzcxMWNkNTNlZWRlYjgzYTVhNTRmOWViYWZjMjM0IGxlZ2FjeS10cnVuaworNDcwNzggZDg0MjI0MzIwZjgyOGEwYjZkMjgzOTFkNDA1YzM0N2Y3OWYwMDk1YSByZWxlYXNlMjQtbWFpbnQKKzQ3MDc5IDliNDZhNGY1MmQwYzAzMTVmZjg2MjY4NDc0N2FkZGM0YmM3ODA3MDggbGVnYWN5LXRydW5rCis0NzA4MCAzMjNkYTQ3NmYxN2VlMTdmMjg1MzlmZTA3MjMxZjM4OGJiOTMwMzg2IGxlZ2FjeS10cnVuaworNDcwODEgYmFiMGIxZTZjNmQ0MWNiZmUyZTQ2YTM4YWQwODY3OWI4NDZhNDZkNCByZWxlYXNlMjQtbWFpbnQKKzQ3MDg1IDY0ZDFmNjZhMjM5YTYwOWM0NTI5ZmFmOGZmMjljOTU4MDU1MWYzODEgbGVnYWN5LXRydW5rCis0NzA4NiA2ZjA0MmY1YmY5NGRlNzg0NjkyYjMzOWFkZTk4OWJhZDU2MDUwOTRjIGxlZ2FjeS10cnVuaworNDcwOTEgYzc1MzI4NTZmZDE3NTkyNTI1ZWFmOWQ4OGEwZTRiZjExZjA2ODA3NiBsZWdhY3ktdHJ1bmsKKzQ3MDkyIDEzNDJkZmQ1MjczMzkwMDhlZWVkNDA4M2U4MGFiZjZiMzlhZTE0OTUgbGVnYWN5LXRydW5rCis0NzA5MyAwOWQxNjA2ZTc1MjQ5Y2MwMTIwZGYxMjU4NTk4NWEwM2Y0YTY1ZDhiIGxlZ2FjeS10cnVuaworNDcwOTQgYWQ1OTQ5MTUyNzExNmQzYTAyMjdhNmZmNTdkNzE3YmQxYjViMGU3ZiBsZWdhY3ktdHJ1bmsKKzQ3MDk3IGI5YTY0YjdhMzI2MTJkYjYyOWU5OGViOGRhYjhhYTE1NTJiY2E1NDYgbGVnYWN5LXRydW5rCis0NzA5OCBiODJjNDBkYzA4ZDgyY2QwMTQwNjY1YTNiZWIyNTJjM2Q2NzM1YzY1IGxlZ2FjeS10cnVuaworNDcwOTkgODE2OGQwNWY5YjQ5ZTYwYzQ5ZTYzNDRjYjNjMjkwZWEwNWFlYjFkNiBsZWdhY3ktdHJ1bmsKKzQ3MTAwIGYyY2MxNTZlYjkyOGUzZmRmZmYzOTk3NDBjZjU2Y2Q4M2FhZmU5ZDkgbGVnYWN5LXRydW5rCis0NzEwMSA1OGY0MTlkOGM2NDYxZmI5MTdiMDZjY2M5YzIyNzI5N2I0ZTY4NzY4IGxlZ2FjeS10cnVuaworNDcxMDMgMzVjZjBmODc5ODNlZGVjYTgwNTk2ZDgxMWRiNWYzYjFmMzQzMjY3MCBsZWdhY3ktdHJ1bmsKKzQ3MTA2IGYyNjYxM2JkNDg0ZDdkZTdkNTE2NDY4ZGYzZmYzYjI2OWVlNTdjNzEgbGVnYWN5LXRydW5rCis0NzExMyBiOGIyMjU1MGFjYWMwMTQ1NzIwYzUzNTU2ZWIyNjdjNGNjNzc5OTdkIGxlZ2FjeS10cnVuaworNDcxMTQgNzQxMzEzMDI5ZDYzZDk2OTQ0NzNiMjRlMGZhNWQwMWU0ZWZhNzhmMiBsZWdhY3ktdHJ1bmsKKzQ3MTE1IDIyNTQ3OWFjZTlhNzBkMjc5YWQ3NGYyMzJlNTdkZTE3YWVlZDk4OTIgbGVnYWN5LXRydW5rCis0NzExNiBjZWVhOGE5ODY1ODQ0NzdhMzBjOTQ1OTdjNzZkZWJhNjgxZDQzZTBkIGxlZ2FjeS10cnVuaworNDcxMTcgY2I4Mzk5OTZhMzg2ZWRhMDE3N2JjMGJhOGViYjY5ODYyMThmOGMzZiBsZWdhY3ktdHJ1bmsKKzQ3MTE4IDcyMWNlYzdmMDE4NTc0NzdmNTZmMzYyMDNlMGVhZWY4OTk0NmViNWUgbGVnYWN5LXRydW5rCis0NzExOSA0ZGVhNWY0NmVlOTg1NTQyNDk4MGM1YTk3MmQ0M2JhYzhhNTJlMmJlIHJlbGVhc2UyNC1tYWludAorNDcxMjEgZGU0MTAyNTJiOWZkYTNiOGQ1ODMzOGJiNTExZWUzZDc2NTQzMTg1OCBsZWdhY3ktdHJ1bmsKKzQ3MTIyIDUyMjUwZWVhZjc5MWQ2NjQzZGYwYjEzNzMyNTAyYzA0YWU4YjQ1MmQgcmVsZWFzZTI0LW1haW50Cis0NzEyMyAwNjAyNzcxYjhiNDliN2MzMzQwZGQ0ZDBiYTQzNmQ3YmRjMjlkZDA4IGxlZ2FjeS10cnVuaworNDcxMjUgMDk1NTQ2ZGRiMmYxNmM2NDczNDdjY2ZjMGY2YjM2OGEzYTNlNzYzZiBsZWdhY3ktdHJ1bmsKKzQ3MTI4IDdjODk5MGNjY2Y5YjJhZDliY2ZkMjA4MjhlNmYwMWIzMzYxNzQ4YzYgbGVnYWN5LXRydW5rCis0NzEzMSBhYzNkNGI3MWJjZTJiMjZjOWZhNzliZGQzNWEzZmM0MzFjN2QwZjkyIGxlZ2FjeS10cnVuaworNDcxMzMgM2NmMjE4ZThiNDQ5MjU3M2IyMjhiM2VhMzE5MjI5NmEzMTA4YmIyNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM0IDAzODhjN2RjZTRkNDI2NjZkMWVmNTMyY2ZhZGNmYjAyOTA1NzNlZTYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis0NzEzNSA0YjRlZDIzMDJkMWNmNTZlZjE2MTkzMDU0MTViYjBkZTJkNzg3MTI0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcxMzYgODUxZjM3OGFiOWNkYzViNzU2NGM0N2QyZmQ3NDMwNzU2NjlhNjE5ZSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MTM3IGQ3NDkwOGU3NGQzMDcyMGY1YzEwYzMzMzJiNDNiMDdiYmQwNjVkNmIgbGVnYWN5LXRydW5rCis0NzEzOSA1NmJmNTZmNWM4MjE0NzZkNWQ2N2NiNDI3NzkwY2YxYTY5MDk1ZWUyIGxlZ2FjeS10cnVuaworNDcxNDAgYTQyNjNjNDI0OGNiNjdlN2FkM2JkYzYzYmY0YzcxN2VhYWNkYzc5ZSByZWxlYXNlMjQtbWFpbnQKKzQ3MTQyIDViODA3OTY2MGVjNDVlNGM4YjI2MGZjZWZhNjZmZDhiNTEzMTAzY2QgbGVnYWN5LXRydW5rCis0NzE0MyA1ODI3MGE2OTBmNDNjNWQxOTAwOWRlMjA2MDczN2VmNjk0M2JlOGE5IGxlZ2FjeS10cnVuaworNDcxNDcgZjk5ZmJmYmE4OTgzNDYwMWQ0NDcwNGMxYjk0YzY2MDk5ODFiYjY4OCBsZWdhY3ktdHJ1bmsKKzQ3MTQ4IDJlZTViZGE5MjBhMjQ1YWUwODAyYWI2ZTE4NDFjNmY4ODIzNmNmNDEgbGVnYWN5LXRydW5rCis0NzE1MSAxZWFiNWFlM2IxZmZiYWVlNzJlNTlmZmRiN2U1Y2Y4ZWU0NDkxYTlmIGxlZ2FjeS10cnVuaworNDcxNTMgYjNlZjc0MWUyNjE3MWFmZjExZmNlMTFhZmI5YzBlODRiMzQ1NDEzOCBsZWdhY3ktdHJ1bmsKKzQ3MTU0IDNjOWQzYTMxM2Q4MWRlNTM5MTY4NDdiMzQyNWNjMmYwYmExYjNlMTAgbGVnYWN5LXRydW5rCis0NzE1NSAxN2Y4MmJkNjg4Nzg1MzJmYjI5OTM0MTgxYjZmNTRjZGNlZmJmNzdjIHJlbGVhc2UyNC1tYWludAorNDcxNTYgMjllNDNjNWUxMThmN2IwOTAxNDIzZmY2NGUyOTcyYmRhNTNhMzMzNiBsZWdhY3ktdHJ1bmsKKzQ3MTU3IDFiMmRmMmVjYmM2MzZhMmM4YjcyMjMzZTgyNWFjNjBlYjc5ZDczODkgcmVsZWFzZTI0LW1haW50Cis0NzE1OCAwYTgzZGMzNTI5ZDE1YWY0NDkzNGY1YjM0ODFjMGNiOGEwMzNmYzhjIGxlZ2FjeS10cnVuaworNDcxNTkgZjQ5Y2MyOTA2Y2QwMGY2MDQ3ODZkMmQ3MGVlMmJhYWE4MzM4NTA0OCBsZWdhY3ktdHJ1bmsKKzQ3MTYxIGM2ZDA0YzljM2M0YWU3NzRjNWEyOTAwMTY0NjkzMTFjZWNkNjkyYTQgbGVnYWN5LXRydW5rCis0NzE2MiA5OWIxNWMyNWI4NDAxNjkzOGFhNjk1ZTI5ZmY1ZDVlNjMxZjkyZGIxIGxlZ2FjeS10cnVuaworNDcxNjMgMTVmZTlkYmM1ZDM5ZWYxMjhmOWQ4OTM1ZTBhYThkNDAwMmM4MjIwNyBsZWdhY3ktdHJ1bmsKKzQ3MTY0IGRhMjJiOTA1ZGZiZWJkOWU5YWNkODg4YzM1NDE2YjhmZmM4Mjk0N2IgbGVnYWN5LXRydW5rCis0NzE2NiBhMjFlNDIwYTU5N2NjOTUwNTE3MTg4NGZhMjQzYWNmNDdmNGI3Y2RkIGxlZ2FjeS10cnVuaworNDcxNzAgZDg1NzA4NzY5YWIxZDk0YmNkMmI0MDQ2OGY4MWE2NjZlOWViOWM2OSBsZWdhY3ktdHJ1bmsKKzQ3MTcxIDEzOTI1NjFkNWRkN2FlM2RlMmI0YmQ1NTIyZDQwNzg4NmIyMmY2ZmIgbGVnYWN5LXRydW5rCis0NzE3NSAyNzJmMTk1YTI4NGU3ZTAxNGNhOTQyZmZiMTg1ODk2MmFmZmI3MTNjIGxlZ2FjeS10cnVuaworNDcxNzYgNDg1MDU2ZTUzY2RiOTljZjE1Njg4NzNiMzgzZTZjZGY2NjkzZjU4ZiBsZWdhY3ktdHJ1bmsKKzQ3MTc3IDZiMGM2M2E5NzUxNDdhOTRmNjliM2EwMzg4MzhjOTRlNzU1MDRiNzYgbGVnYWN5LXRydW5rCis0NzE4MSA1ZDJjOTgyYWJiYjM5ZTc4NDI2MWZjNjEwMGUxYzIyYzJhMTUwYjIxIGxlZ2FjeS10cnVuaworNDcxODggZDRkYmZiZjNmMmI5MGM1YzIzOTkwZmFiN2FmYWZlYzVlM2JkNjkxZCBsZWdhY3ktdHJ1bmsKKzQ3MTg5IGI2NjRhOTA4YmZmMzUwZWQxYjU2YjU2MGY0ZjA3MmQyYTE1Yjc0NjAgbGVnYWN5LXRydW5rCis0NzE5MCBjNTQ3ZjZlOTFjNTg0Yjk0MjYyMDVmYjg2YTMwMWZmZTc3ZDY0M2VlIGxlZ2FjeS10cnVuaworNDcxOTEgZTA3NmUzZDc2Zjc3MTBhMDAwMWUxZTM4Y2Y1NjJkYzQyNTdhNjg4YyBsZWdhY3ktdHJ1bmsKKzQ3MTk3IDVkZDczNjI2OGZmNDQwMjNkYjY2NWM2YmE3MWM0NGNkNmQxOGIyMDkgbGVnYWN5LXRydW5rCis0NzE5OCA2OTc1YmQ0ODg0ZWJjMmM4MDA0YmQ5NjhiYWQ3YmY0MzAwMDc5NTdhIGxlZ2FjeS10cnVuaworNDcyMDMgMGYzYmEzZGVmMWFkODBhZWQxZmM0YjUxZmY0N2Q1ODNhNjM2ZWFlMiBsZWdhY3ktdHJ1bmsKKzQ3MjA0IGMwMTIzMDA3Njg1OWMxZmU2NmNlYWZmMzE3MDA4NGZlOTg4OWU5OTggbGVnYWN5LXRydW5rCis0NzIwNSA4ODk0ZWVmYmIwYTQ5ZmM1ZWFmNTQ5ZTU1N2Q5YzFhYjVlMjNmM2RmIGxlZ2FjeS10cnVuaworNDcyMDYgNjM4MjQxZmY4N2JkZGJiYmUwZTIyMDY1Mjc3MDlhZTZiOTU3Mjc5MCBsZWdhY3ktdHJ1bmsKKzQ3MjA3IDI3OTczOTYyZmM5ZmI2MmNmOGY2Y2FhZjA2OWIyMzg3NTZhNTBkZGUgbGVnYWN5LXRydW5rCis0NzIwOCBiMTYxNGY2NzRiMzI3MDQzNWI5OGZkODBjM2VmMzNlYzExZTYxNDkzIGxlZ2FjeS10cnVuaworNDcyMDkgZTYxYTkzOGZlOTk4ZDVmNzk5NzRiMzc2MzEyZjBiYWFjMDJhYjgzZCBsZWdhY3ktdHJ1bmsKKzQ3MjEwIDI1MzdkZWRhMzUxZmE4OTEyY2VmY2ZkYjkyYmYyMjBhODRiMTE2NGEgbGVnYWN5LXRydW5rCis0NzIxMSBiOTQ3MGQ2N2Q5NmMyZTI3MDJlODA5ZDQxZjg4ZDc0YTg3MDZhZjEwIGxlZ2FjeS10cnVuaworNDcyMTIgMGU4YTk0YmEyMTA2NmRhNjVkZjlkNjYwOGU3ZTQ4YmJhNjM5MzcxYSBsZWdhY3ktdHJ1bmsKKzQ3MjEzIGU5ZDM5YzVmY2MyNzQ2MTRiYzJiNmUzZWI5MzRlOTRlYTczMWQwMmQgbGVnYWN5LXRydW5rCis0NzIxNCBmMTE2NTgyZjY2MjI0MjVlOThjY2E5OWViY2I3MDkyNTdjM2UyZGFjIHJlbGVhc2UyNC1tYWludAorNDcyMTUgMDkzMTU2ODk5Zjc1YWIyY2IwNmQwOTBkZDc5ODk0Yjc2NDFmM2UwNSBsZWdhY3ktdHJ1bmsKKzQ3MjE2IDE2YmYzNjY0ODMyMzNiMDhkZmJjZTNiOWY5OTI2NTI1NTU5N2RmODYgcmVsZWFzZTI0LW1haW50Cis0NzIxNyA4Njc1YTYwODQyNDBmODU1NzFkNDBlOTAzMDVjNDM1NGEwNDMxMzQ0IHJlbGVhc2UyNC1tYWludAorNDcyMTggYzViZWJjYmU0NTM5MWEzY2JiMmY4YjkxMWEzZWU2NDgwNjIxOTUyOSBsZWdhY3ktdHJ1bmsKKzQ3MjE5IDgxMzA0YzAxNDYzYTJlOWJkOGEzZTdlZjg2YTE1MzQ4MmE0NmQwMzQgbGVnYWN5LXRydW5rCis0NzIyMCA2M2EzMTlmMDczM2NhMDY2NmI2ZjIxYTMzYjQwMGQ0ZmRjZDkwNDc2IGxlZ2FjeS10cnVuaworNDcyMjIgMDFkNGIwNjg1MDY3NjA2ODEwOWUyY2Q5YWU5MTk2ZTUzNzYxZTEzMCByZWxlYXNlMjQtbWFpbnQKKzQ3MjIzIDc1YmRiMWViMDc2NjU5NWRhMzE2OTIzYmYxY2I1YjY4ZGQ4ZTM5ZDggbGVnYWN5LXRydW5rCis0NzIyNCA5YzkyMmUzMWI2YTVjODkxMDRjNDZiMjBmMDcwZDY5M2YzMmYzYmNiIGxlZ2FjeS10cnVuaworNDcyMzQgYzgyMzc1ZDU2MGIzZmU4YTI4YTI3N2Y5MTllNjAxNjI5NGRhNGRjZSBsZWdhY3ktdHJ1bmsKKzQ3MjM2IDQxZmMyMDNhM2U5MWYxNjE1YzE0YTZmYjM4MDgzZDAxOGY0NzQ4YWQgbGVnYWN5LXRydW5rCis0NzIzNyAxODk4OWQwOWQ1ODRlNmMzZTg0ZDQwNWM2NjQxMWFhZThkZmJlZjEzIGxlZ2FjeS10cnVuaworNDcyNDEgNmQ5ZTIyYzMzMGU0Yjc2NDAzMDA0NjlmZjM5YzU5ZjYzYWQ0NTBlNSBsZWdhY3ktdHJ1bmsKKzQ3MjQyIDBjNGU1YTBjMTkxNGY3YjIyZGZiMGIwZTNjZmRmODU2ODU3M2EzMzYgcmVsZWFzZTI0LW1haW50Cis0NzI0NCBkOWU3ODMxOWExOTI5MzgxMjY3MTRlNmQ3YjM3ZDAzMmNiNDRkMDRmIGxlZ2FjeS10cnVuaworNDcyNDUgNzU1MDQ0NzEzZTk3Y2EyNDNiYTZkYWJlZDZlN2E4ZjlkZjVlMTcyMyByZWxlYXNlMjQtbWFpbnQKKzQ3MjQ4IGI5MTU1YmIyNmIyODFlOGUzMzExZDM2YzdhZGY0MGU0YWNiYTFmYTEgYmNhbm5vbi1zYW5kYm94aW5nCis0NzI0OSBiMGJkMGJjZTk0MDZlZGE0YjEwMzI3NDk4ZDk1NGZiYjZiMTNkMzJmIGJjYW5ub24tc2FuZGJveGluZworNDcyNTEgOWU4MjE0MzVhNjEyZDFlOTcyYjM1OTZlMjQ4ZGViZWE5MzY5OWI1YSBsZWdhY3ktdHJ1bmsKKzQ3MjUzIDUwMGFlOTUyMTUwYjc2NjhlMzAwNzY1NDllZWQwNDA0OWMwYzMzOGUgbGVnYWN5LXRydW5rCis0NzI1NCA4N2U1YjAxMGIzYjA5ZDViNWI5YzU0Zjc0ZTM5MDg4ZGIzZjA0MWNlIGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNDcyNTUgNzFlYWRjMzVmMTYzNzI2MTE2NjlhOGY2NGY5OTYzZDU0MjBhZGQ0YSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzQ3MjU3IDQxNTYxYjAwMTRjOGI2ODE1NjQ4ZTUwNDIwODFmYTY4ZDZhZWU4M2IgbGVnYWN5LXRydW5rCis0NzI1OCA0MGYwNTg2NzMxNzBiOGE2YThhZGYwM2I2YWU1YzA3Y2YxYWE3MGFiIGxlZ2FjeS10cnVuaworNDcyNTkgYjg1MWFmY2MxNjQ5NjU2NzAzYTcyZDBlZmQ1YzJmOWZhNjY5YmZjYSBsZWdhY3ktdHJ1bmsKKzQ3MjYwIGUzY2ZmNjFiNzc3OTYxYWY0NmY0MmUzYzE3ZWZmODQ4Y2NlMDg0ZTEgbGVnYWN5LXRydW5rCis0NzI2MSA0ZGQxYTkzODNlNDc3ZmM2NzJjOTU0NDMzMDEyNWFjNzQ4MDU3ZGUxIGxlZ2FjeS10cnVuaworNDcyNjIgZDhjZTliYzQwNWU0MWI2OTU0NmExNDRkNzE3Y2Q1YWEwOTBlZTVkMCBsZWdhY3ktdHJ1bmsKKzQ3MjYzIDY4YzllOGE1NTM2ODNiMmMyMzQ4Y2NmMjc5OTg0OGY4ZmRiMzBkNjYgbGVnYWN5LXRydW5rCis0NzI2NCAyMDczZjMyY2Y3MWZjN2VhNDQ4NTZlYjUyNzhkNzA5Y2VlMDRhOTNiIGxlZ2FjeS10cnVuaworNDcyNjUgNjk3ZDA1NDgwMDUzZDZmZGVmZTY0NWUwODlmY2MxNDZkYjFjYTgxMCBsZWdhY3ktdHJ1bmsKKzQ3MjY3IGY0ZTMzYjEyYmI1N2IxMDBiMzRjMmY5MjY5MDUyZjQzMjA5NTEwNGEgbGVnYWN5LXRydW5rCis0NzI2OCAzNGE2NmUyZjg5NTk4MDI1YWQxYzczYTQ5YTRhYjgzZDFiYTVkNTczIGxlZ2FjeS10cnVuaworNDcyNjkgZjY4ZTUxYTY3M2RmNzNmMmIxZjQ3NDllNzQ2Y2YzOWJjMDk5ZjI2MiBsZWdhY3ktdHJ1bmsKKzQ3MjcxIDM0Y2I5YTZjZTEyZDg3ZjZhZTAzMTY2NjEwNzVjODhiMDkyNjYxMTAgbGVnYWN5LXRydW5rCis0NzI3MiAzNzRjMjI5ZDkwZThmMzY2ZTU5NTU5ODRjNDU2MTU5MTFlOTY3NjVmIGxlZ2FjeS10cnVuaworNDcyNzMgNWE0YWIzODIwNThhNWYxMGYzNGZmMjUyMGE2MDU0M2EwNDc1MTQ2MCBsZWdhY3ktdHJ1bmsKKzQ3Mjc0IGVlYmM5NWY5NThlNDhmMzc3ZGZkOTk1Y2U2M2NiYWE0YTA2NzU1NWUgbGVnYWN5LXRydW5rCis0NzI3NSAyMzhlMGIyMDM3ZmMyNDhhYTdlNjNkZTZlZGFlNDE1ZGM0NjYzMmEyIGxlZ2FjeS10cnVuaworNDcyNzYgMzQ0MjUxY2Q4ZDc2NDQwOWNjMDNjNTk2N2ZiMTVmNzhjMjdkNTQyNiBsZWdhY3ktdHJ1bmsKKzQ3Mjc3IDNmYTc5MGIwYWE2ODE1YzFlMWRhZThmMjMwYWM4NWRhYmU4MTk5ZDggbGVnYWN5LXRydW5rCis0NzI3OCBmOTNkYmZjYzY2M2IzMzA3M2M4MmJlZGJmYzNlNTg1YzFkNDBlN2UxIGxlZ2FjeS10cnVuaworNDcyNzkgNThjODhhN2M5MzI2M2M0OGJiZWIxZWVkM2EyMjAzYzIwNTAwYmM2YiBsZWdhY3ktdHJ1bmsKKzQ3MjgwIDhmZWZhOTllODdjMGQzODU2NDQ4ZmM3NjczZDI3ZGU4ZjhkMTA2ZmQgbGVnYWN5LXRydW5rCis0NzI4NCBlZDQzMjQzYzg4NjA1ZWZjOGUwOWFkNDRhZmMxYTI3ZjY1NjY0YmY0IGJjYW5ub24tc2FuZGJveGluZworNDcyODUgNDUyNDdiOTNhNWQ5YTEwMTkyMDdhMWRlMjIyOTBlZDY1ZTA2MGMxNiBiY2Fubm9uLXNhbmRib3hpbmcKKzQ3Mjg3IGIzYzBlMDc1OWFjMDk4MDQ0NjA5MmU0NWU3Nzg0ZDNmM2IzYWRjYWQgbGVnYWN5LXRydW5rCis0NzI4OSBkYTU5ODM2MTRmYWMyMjgxOWNhZWMwOTViZmUyMzhmMDFmNjM3ZTU4IGxlZ2FjeS10cnVuaworNTA0NzcgMTA4ZGMyZjFlN2RhMzJjZjFhMWM3ZTdlYmY1ZGRmYzRlYTVlMWM2NSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDc4IGJiMzA1MDI2MzI0NDIyYWU3YWM0NWRiM2ZkMDllNDIyYmU5ZTE5NTUgYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ3OSBiOGE4ZWZjMDBiMWUyNWUyZjRhZDlkN2NkYzQ2NWExM2VlNjgxYTA0IGJjYW5ub24tc2FuZGJveGluZworNTA0ODAgOTAzZjk4Njc2NTRhMTdhMzk0NzRjZWFlMzI5MzE2Njc1ZDQxNDQzOCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNDg2IDM1YWZlN2M0Njc3MjA2Y2QzNWJhMzdhMjA4NzU3NDgzZTE0ZTIzODggYmNhbm5vbi1zYW5kYm94aW5nCis1MDQ4NyBiNDI4MTJjNzc0ZDBjOTQ5YjBiYTc3Y2Y1YzNmNjE4MDcwMTM4MmVhIGJjYW5ub24tc2FuZGJveGluZworNTA0ODkgMDY2YWE0MmNlNWYyNDA5NzhjMTY1NmY1ZWNiNjA2Njk1ZWI4MmEwNSBsZWdhY3ktdHJ1bmsKKzUwNDkwIGFiYjJjNzZhNWUwNTBjZjhkMDZjMjYwNzNjZjIyNjViMmYwNDJiYzIgbGVnYWN5LXRydW5rCis1MDQ5MSAxYzViZGJjNzU4MGNhMThjZTY5OTJiMThiNzJiNDYyNjAyYjc3NTM5IGxlZ2FjeS10cnVuaworNTA0OTMgOWY3MGY2YmE3YjY5Y2JlNmJhZGQxMWZkMjkwNzMyNDkzNzU2YWFmMiBsZWdhY3ktdHJ1bmsKKzUwNDk0IGJiYzc4ZjAyMTAwN2MwZjA0MjE4ZDljYTI2YzBiYTc5YmYwNjgwYjUgdGltLWN1cnJlbnRfZnJhbWVzCis1MDQ5NSA2NGNjZDc0NWVhOTIwYmUxYjk5Mzg5MWU0OTYzN2QxZjM1MWM0NDk0IGxlZ2FjeS10cnVuaworNTA0OTcgOTVmOWUwMTg0NTU1NmY5NjEyODE2MWRhNGVhZWY2MWIzYmY1NmEyYiBsZWdhY3ktdHJ1bmsKKzUwNDk4IDNmNTU2MWM1ZDk1OTU1YjEzOWNjNjRlZTI3MmZlM2YwOWUzOTUzMzUgdGltLWN1cnJlbnRfZnJhbWVzCis1MDUwMCBjYTNkOWE2NzEyNmJmOGQ5MTRhNzY2MWI3ZGEyMDAxMTE2ZDBkOTIwIGxlZ2FjeS10cnVuaworNTA1MDEgOGNjOTc4NDEzMGEwZTgzZDA2Mjc3ZTU5N2FmMGE2NDg2MGU3OTZlZiBsZWdhY3ktdHJ1bmsKKzUwNTAzIGMwMmZhMTg3ZTBmNDljYjJkY2E3YTljNDQ4ZGI1MzYxOGE2NmU2OTEgbGVnYWN5LXRydW5rCis1MDUwNCBjNjdiMjMzOTdmMzA2NDlhZmU3NTRlNTczMDdjOGRhZjc4NzZjNTYyIGxlZ2FjeS10cnVuaworNTA1MDYgMGZlMDhhZWRiZDhjNGZjYmRmYjYwYTNjMjM1MjQ2ODBjMTI0NTljMSBsZWdhY3ktdHJ1bmsKKzUwNTA5IGM1NDc2NDVhYjczNjRjMjk0NzU2NmFkYWViOTdiMjMwM2RiNjFmNzcgbGVnYWN5LXRydW5rCis1MDUxMCA1MTQyOGMzNzhjYzNlMjZmMWZiMmRjNzNmY2FjODRjMzI1YTRjYzZjIGxlZ2FjeS10cnVuaworNTA1MTEgN2U0M2QwMmVlMjFhNjFlZGY2Y2UzNzRlNDVjYjk0ZmY3MTQ0NDhkMiBsZWdhY3ktdHJ1bmsKKzUwNTEyIGMxZjRiZjhmZjc0OGMwMWY2YzIzODU3MzA1OGU5MjQzOTc2NDczYTggbGVnYWN5LXRydW5rCis1MDUxMyAzNWM0ZmRhNDdkZmJkOGY3MzA4NWYxMjFiMzk0MDBiNTkxNDFlZmJlIGxlZ2FjeS10cnVuaworNTA1MTQgMDI1OThjNTdjYTA5Y2MwZThlYTkyNDBhMjM1YjNkZjA4NWY4Nzk5YSBsZWdhY3ktdHJ1bmsKKzUwNTE2IGYzNzM2NDY3OTUwMTgyNTU4OTlmYmFkYjc3ZTgwNjY1YjA5YzcwMWYgbGVnYWN5LXRydW5rCis1MDUxNyBhZTU2NDVjNzZkNWVhMzNlY2I4YWU1ODEzYTYxN2UzMTVlZmIxZmZkIGxlZ2FjeS10cnVuaworNTA1MjYgYjk3OGFmZTdjYWI2NmFlY2ZmZGE3Yzk4NzM3NGVjZWMwZjY3MjRiNCBsZWdhY3ktdHJ1bmsKKzUwNTI3IDhhZGRjOTEzMTcxZTg4MzQ4YzNmNDk3NzkxMjRiZWJmNDZlMTBhN2MgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDUyOCBmMmFjMzFmYzM2OWU2MmZlNzdmYjViNWM4OTI0NzEwZWZiNDJjMGI2IGxlZ2FjeS10cnVuaworNTA1MzcgM2IzOGFiOWM0YjAzNjk1YTMzMTU4NTFjOWZiYzhmYzcyNTBjNjA0ZSBsZWdhY3ktdHJ1bmsKKzUwNTQwIGM4NDk5N2UxZWNjNzY5MjU0ODliZDMwMWRjZTYzMGQwN2NlYzNiZWMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU0MSBiNmZkNDk5ZTQzNDNmYjc3NzkwY2ZlNGI3MzUyN2YxMzM4YjJmMjA0IGxlZ2FjeS10cnVuaworNTA1NDIgYzM2MTkxNWRmMjkxM2M2MWFmNzkwYTA2MTdmMmEwZTQ0MTdjZWQ0NyBsZWdhY3ktdHJ1bmsKKzUwNTQ4IGZjYmY0NjIxMTkwM2E0ZjJhMGQ3NjQwODY4N2ViZTFhOGU0ZjgwNjggYmNhbm5vbi1zYW5kYm94aW5nCis1MDU0OSBlNDAyNDRmNWZlYjk0ZDAxNTRkM2UwM2IwM2I4NzljM2JjYzExMGU2IGJjYW5ub24tc2FuZGJveGluZworNTA1NTEgZmE2Y2EzZjVmMjI2ZTU4MGViYmRkNjllMTFhZmY5OWI4NWEwZWJjNiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTUzIDFjYTAxNWJlNzBhZTIyZjg1YWVkNzBmOGM5ZWQ2OGYxZTI3YjllZDQgbGVnYWN5LXRydW5rCis1MDU1OCAyZDU3ZTRiMDhjZTY4Y2Y3YjE4YjM2ZDhmNTE2YjdhNWI4ZGZkN2E1IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA1NTkgYjI4NjUzNjIyMDkzODMwMmNjZTE2ZWI1MmMwZmM2MGNkMDdiNGI1NCBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTYwIGUzMWVkZWU1YmMzZjU0ZTM0MjY2MjAyOTc4OWJjNGU1YWM2NDE3NGQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NCAyMTZhOTdhMmVkMzZmMjU5ZGFlYWYyZjkxMTU5MjAzMjRmMTJhNzQ3IGJjYW5ub24tc2FuZGJveGluZworNTA1NjUgZGFlZThmOGMwMzVmOTZhZTE5ZDA4MzBlNzJiMTJhMTAyM2E0MjA5YyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTY2IGUzZjYwNjZjZTc1ZjU4MmQ5NGQyMjgwNzlhMGI3NTMzNzcxYWMzN2MgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU2NyA1MmE4NzM4ZjVhYjRkMWU2ODAwZDMzZGUwMTI3Y2Q2ZjYyNmU0ODk1IGxlZ2FjeS10cnVuaworNTA1NjggMDNiNmZlNTdjZDZkZjViYjM0Y2ExOWY0Yjc2MGI5NDMxODZjYzgwNiBsZWdhY3ktdHJ1bmsKKzUwNTY5IDAwZjk3NWVhZDM0NGFmYjJjYWQxNGEyY2U1OTUxOWQ5OGIxYzZjNWMgbGVnYWN5LXRydW5rCis1MDU3NSBkNjQ2M2U4ZWY5YzQ3ZDMyNzNkM2U5MDU1ZGFhZDExNjkzOWIwZDBlIGxlZ2FjeS10cnVuaworNTA1NzYgZjUwYjlkYTVlMzYxOTUzYWQ0MGIzYzI0M2EwYTZmNGQ3NDgwZjk4YyBsZWdhY3ktdHJ1bmsKKzUwNTc5IGFlMGMzMjhhYzViZjkxYmY4ZTY4YzVkOTQxMjFlZGQ4NmJjN2YzMzUgbGVnYWN5LXRydW5rCis1MDU4MiAyMTRiMjhkN2E5OTkzMzRkMDQxYWM3MDdmMGZkZTk5NjNhNTgwNmU1IGxlZ2FjeS10cnVuaworNTA1ODMgNjU1MjI5OTIzZDQyZjlmMzNiM2MzODIxMDQ5NzBlYzdmYmNjZDgzYiBsZWdhY3ktdHJ1bmsKKzUwNTg1IGM3ZGQ2Njk2ZWM4Y2IxNzBhMTdjN2FlMmM3MDJkMWJhZTg1YWY1ZGMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU4NiA2ZjY5YWZiNzg1ZDBiZjljNWEwMDA3ZDU3NGNkZDg5MTRhZTA1MjhmIGJjYW5ub24tc2FuZGJveGluZworNTA1OTQgZTZmMTZiN2E1ODRmMjM2NmQxMWE3OGM3ZjBmN2E1MzA2NGJlY2EyOSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNTk1IDkzM2JlM2UwYWM2Y2IwNTZlYTY0YTUwMTIyMzViY2I5ZjA1ZjYyZjIgYmNhbm5vbi1zYW5kYm94aW5nCis1MDU5NiA3MTdhNzg4N2ZkN2E3NmQ3MTRiOGMxMmQ2YWI5MDhkYzFiNzdkYmNiIGJjYW5ub24tc2FuZGJveGluZworNTA1OTcgNzE4MmMyNzc1YzFlNDU0MmNkN2Q0MjYyMDVjNDlkNjViM2Q4MGJjNSBsZWdhY3ktdHJ1bmsKKzUwNTk4IGIxYmIxNzlhOGFiMDU3ZGJjMmQ3NDVkYzkwNjY4MDYyMTNiMDY5YTIgbGVnYWN5LXRydW5rCis1MDU5OSA0NzZjZDgzNzc3ZjJiYTcyZWRjN2VmZWNhMjU1NmQ2YjhkZDg1M2EwIGxlZ2FjeS10cnVuaworNTA2MDAgMmMzZWM3MjBhYTdiZWIwZGE0MDAyYjg0N2NjNWVkN2RjNzgyNTY2YyBsZWdhY3ktdHJ1bmsKKzUwNjAxIGIwOTVlODM4OGIyZTY0NTI1ZGUyODM1YzcyMmViYmJkMmM2MTU5NWYgbGVnYWN5LXRydW5rCis1MDYwNCAzNmM1ZDA4NWI4NjkyMDc0MDNjZjQxZTYxYjdhMjJkNGI3MWVjN2Q5IGxlZ2FjeS10cnVuaworNTA2MDcgYzQ4YjNhNjhmNjk2MmE2OTViMjliZDE2MmIyNDI4OTlmNjNhOGQ3YSBsZWdhY3ktdHJ1bmsKKzUwNjEwIGI1NjJmZDc5NTAwZDFkMzcwZjY5N2NkZTUyZGU0MDk3YTZiNjRlOGUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDYxMSAyZjMwNTE1Y2Y2NmI5NmU5MWJhYTFjN2I0Njk5ZmM0MTQzNGVmMTM4IGJjYW5ub24tc2FuZGJveGluZworNTA2MTcgODkyYjdhYzI2ZDNiYjU5MDA4NDI1Y2YzNmVhODIzODc2NTIyMjE5YyBsZWdhY3ktdHJ1bmsKKzUwNjE5IGU0YjZhNGYyY2UxNDM3ZGE2MTRiOWQyMWVkZmYwNTg5ZGI1YWFhZTEgbGVnYWN5LXRydW5rCis1MDYyMCBjZDQ1OWM5MjBmOTkwYzk0M2Y2MTA2MWUyYjJmMzAxMzQ4YTQxZDBhIGxlZ2FjeS10cnVuaworNTA2MjEgYTc3NjhmZWY1OWIyY2QxZWJkMmJjNzk4YjEzOTdkN2M2NGFiMTQ4ZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNjIyIGZjNjlmYTZlNTRjODZkYzJlMTRkODQwNTE4ZjMxMjM1NzUzYjk3OGIgbGVnYWN5LXRydW5rCis1MDYyNyAxOGI5Nzk2YjdiYTU4Yzc0ZWFhMzIyZTU5Zjg5M2UzMDMyMWY3YWE2IGJjYW5ub24tc2FuZGJveGluZworNTA2MjkgYzg3MGVlMDY2YzEyNTQ4YzhlOTdhMzgxMThkZDc2MTNkZWM4YWVmNSBsZWdhY3ktdHJ1bmsKKzUwNjMwIGY3MWYyODQzNjMxZmVjZmIzYmEwOTU0MzEyMzI2ZTNiYTA4NTg3OWYgbGVnYWN5LXRydW5rCis1MDYzMSAyYTg0YjQ2YWQ2NGNhNjlmYTRlZGNmNWZlMGU1YWUzMDEyYjZmNTU0IGxlZ2FjeS10cnVuaworNTA2MzIgMTZmM2MwMmVkZTAyNTMxYjFkYjc4MGQ0ZWVmY2E4NDViZjI4Y2JkNSBsZWdhY3ktdHJ1bmsKKzUwNjMzIDBkZTU4YmNlNDdlZjMyYTMwZjFlZTdjMTk0YWVjMmFhZjAzYTVhOTAgbGVnYWN5LXRydW5rCis1MDYzNiA3ZGZjNzc2ZGQ4MWJjZWY2ODMwMDM3NjM4NTI5OWY0ODFmMjRmY2I5IGxlZ2FjeS10cnVuaworNTA2MzggOWYyYzNkZTc0ODU2ZGRkMTNiZmFlNjg4MGIwNTcxYzA0NDE1YzY4NCBsZWdhY3ktdHJ1bmsKKzUwNjQwIDg1ZmZjMGJmY2M5ODI5ZWFmMDZmZmM0MGJmN2Q2OWFiMTNkZGVhZmMgbGVnYWN5LXRydW5rCis1MDY0MyBiNjMyNTYzNDllNzc5MDA1MWFjNzE3NzQ0YTJiZjk3YTBlYmY5MzVlIGxlZ2FjeS10cnVuaworNTA2NDcgN2Y0MGVmODcxNzMxMTE0NmY3MDQ5MzdiNWViNTM5ZDY2MmU3MjVmYiBsZWdhY3ktdHJ1bmsKKzUwNjU1IDZiMWVkN2I3MDQ4ZTVlOGI5MTgwYjkxOTk3OGVkNTg0NzI3NDVlYzcgbGVnYWN5LXRydW5rCis1MDY1NiBiZjQ3NGY5ZDUyMjVlN2U3ZWE2MGM0MTllNDQ5YTgxN2FlMTgxMmUwIGJjYW5ub24tc2FuZGJveGluZworNTA2NTcgNWVjZjIyYTRlNWRmYzIwNDQ1ZDM0N2RhMDU0MGQ2NzhjNGNkNWMzYyBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjYwIDA1MjlhNTg1MDY0YzRkNzRkNDY1YmIxZGFjZGI2ODcwYTkzMDhhZGMgYmNhbm5vbi1zYW5kYm94aW5nCis1MDY2MSAxNDY3MWE4MGFiZWYwOTA3NDI2Yzk4ZGU2Y2M3NjJkYjZkMGU1NWYzIGJjYW5ub24tc2FuZGJveGluZworNTA2NjQgMmE3NmVjMmYwYjc5ZDBkNTRhMTljOWFiMDM2NjUyM2E0OTc1ZGEyYyBsZWdhY3ktdHJ1bmsKKzUwNjY1IDA2MzE2NDFmZGVmZjRlZTQ1MGMyZmY2NGY1MTEzYzNjYWJjNjgwNTMgcmVsZWFzZTI0LW1haW50Cis1MDY2NyAwMDcxNTM1M2Y4MmM1Njc3ZjdmMTMwMjA1N2MwMTc5NmRiNjg2OTBjIGxlZ2FjeS10cnVuaworNTA2NzEgYzEzNmZmNGQ0MjZkZmJjYjczMjdkNGUzNTYwOTYyOTNkMDc4ZGM1MiBsZWdhY3ktdHJ1bmsKKzUwNjcyIDkxMGE5NDhlMDI5MGYxODE3MTc4YTQ4Zjg4N2MzNGFlZDRiZjVhYWUgcmVsZWFzZTI0LW1haW50Cis1MDY3MyA3NTZkNTdhY2RhODViY2JhMjhmMjMwZTQ1ZDcxNDhmOGNmY2NlYjk5IGxlZ2FjeS10cnVuaworNTA2NzQgYmRhOTNiNDVjYTQxM2ViM2E1MTFkNTNiY2VlYTFkZWU1Y2UzN2I3NyBsZWdhY3ktdHJ1bmsKKzUwNjc1IDNkZGI1OTQ4M2YxMDMzNWYxNjUxNjljNjhhMjgyYWY5YzBhYzYxNDAgbGVnYWN5LXRydW5rCis1MDY3NiBhZWRiODVlZTRmZWMyZWVhNzBhOTkyYzU2NWQ3MjI1NTg5MmFhYmExIGxlZ2FjeS10cnVuaworNTA2NzcgNTBiMGI1NGZiMTdkN2UzZmJlNWFiYzAyZDE1N2RhYTQ1YjIzMGJmMCBsZWdhY3ktdHJ1bmsKKzUwNjc4IDc3NWY4NWI5OGU2NTk4Mzk2MzkzNGEyOGQ0NWQ5ZmIwMmI0MTg1MTAgbGVnYWN5LXRydW5rCis1MDY3OSA5MGQ1ZDFmZWE0ZjJjMTE1Njc4MzlhYWU3ZjVmOWI3MmZmMjNkOTkxIGxlZ2FjeS10cnVuaworNTA2ODAgMzVkNTBmYmUwYjg4OTk4MGZmYjM2NWRlOGVhMDNjZjk0NTAzYWNkOCBsZWdhY3ktdHJ1bmsKKzUwNjgxIDkzNGJhNWJlOGYzZjBjMjcxMjJhZDE3MzUyM2M3MDIyYTk1YzA2NjcgbGVnYWN5LXRydW5rCis1MDY4MyBhNTUxOTdiZDcyMDBkZTExMzIzZGFkYjhjOTVmMTY4NDhmNzdiNTRhIGxlZ2FjeS10cnVuaworNTA2ODQgNjA2NGNiMzAxMjA5YzhlYzczN2U3ZmI1MWI3ZThiZDU2ZDZmZDdiYyBsZWdhY3ktdHJ1bmsKKzUwNjg1IGFhODU3OTFmNTk5MTNmMWExMDZkN2E5ODJhMTJhYzNjMjcxNzZiM2EgbGVnYWN5LXRydW5rCis1MDY4NiBkMmJmY2MxYWFjM2Q0ZmFlOWUyOTM3Yjg3MDhmMjdlMzY5NmQwMGNkIGxlZ2FjeS10cnVuaworNTA2ODcgYmIxNzA3MjY1ZGU3ZTI2ODI0YmI1YzAwODllMjcwYjg0NTExNzQ4MSBsZWdhY3ktdHJ1bmsKKzUwNjg4IDAwODk0MTUyMTgwNTAyZGNhNjRjNzQ0ZDVlMDUzMWZmYTIxNTk1ZjEgbGVnYWN5LXRydW5rCis1MDY4OSA2NTRhNWIyNjI3MTdlMjdmMjljMjQ5NGYxZDAxY2VjNjA2NGFhNzM2IGxlZ2FjeS10cnVuaworNTA2OTAgNjI4Yjg1MTBmZWZiYjk3ODlkZDcyZjA4YjE3NDYwMGRkNzFmNTZmZiBsZWdhY3ktdHJ1bmsKKzUwNjkyIGZkYTNjYmQ3NGM3MThlZmNlNmY3ZmFkNDY1YWIxMTdhNTFlNWFlMjMgbGVnYWN5LXRydW5rCis1MDY5MyBmZjUzOTcwN2ExZWQzNDdiYmQ5N2IwOTU0MjdhZjczN2NlMjZjOTM1IGxlZ2FjeS10cnVuaworNTA2OTQgZTdkMGE3NWUzMTQ1NTNmNjA1MWY1ZjEyYTE3NGZlZDgwNTg2OTZiNSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUwNjk1IDI0NGZiNTI0ZGRkNDFiNTQ0YmY1NzZiYmY4M2M5NWUxZDIzOGY1Y2QgbGVnYWN5LXRydW5rCis1MDY5NiA5NzllMzkwZTJiYjRjNTY1ZDA2OGQzZmNlODE2OWJmMjQyMTA3ZWU5IGxlZ2FjeS10cnVuaworNTA2OTcgOTcwMTYzMzgxOGI0YmIyMDI2YmY0ZDcyYWY4YjM5MDBiNDE4M2QxMSBsZWdhY3ktdHJ1bmsKKzUwNzA0IDk1ZmE4ZmM4YTA2NWMzNzA0ZTgzOGY2OTQ4MzcyODU0ODM2ZDRiMmEgbGVnYWN5LXRydW5rCis1MDcwNiBhY2ZmMWMzNGNjYTNjMzVmNzEwNjc1ZDNhZjliNzFkNmNmMjNiYjYxIGxlZ2FjeS10cnVuaworNTA3MDggODViMjM5NjVlYzRjMDY5MWIzYTI1MTUzOGNmOTk1MjM4NzU2MGJkNSBsZWdhY3ktdHJ1bmsKKzUwNzEwIDA4ZjM1YWJlY2Y5ODBmZGE1NGU1Y2Q5YzZiYWMyMmJkNTQ1ZDBkMDcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcxMyBjNTc1OWI1YTU3ZjBjNjkwOTI5YTk5NzBhYjQ1ZmJmMDRmNGY2ZmViIGxlZ2FjeS10cnVuaworNTA3MTUgMWQ3ZGE4NjA4MDMxYmZkMmYwYzc0YTJkMDliNmVjOGI5ZWI1ODA5OSBsZWdhY3ktdHJ1bmsKKzUwNzE2IDVmZjVhNTgzYjEyZTljNjRkNTBmYmM1MTNlMmZmYWZlOTQ2NzcwODYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDcxNyA4NGU5MTY2YjcxMDhmMTBkNjIyNDUyMzYwYmFmZTlhMWUwNjAwM2IyIGJjYW5ub24tc2FuZGJveGluZworNTA3MTggM2M1ZGIyYjNmODkzYWRhMjdkZmFjNWQwYzVmZjA0YjA5YTZhMmJjYiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzE5IDVjOTAzZjY1MDcxOTllM2Q2MmViMjgwZjcwNTYwNTBhMGE4ODBmYjUgbGVnYWN5LXRydW5rCis1MDcyMCA4ZmU2Nzg2ZjUxNDQ1YmE0YjQ2MDcxZGI2MWM2MGI0YTEzZGM4MTYwIGxlZ2FjeS10cnVuaworNTA3MjEgNWFiNzZmYmYyM2YzY2YyMTdiZmZkZTdhNWExNWMxMWVkN2FlMjMxOSBsZWdhY3ktdHJ1bmsKKzUwNzIzIDJhMWZlZmIxODc2NGNhMzJkMWY2OGIxNWM1MWQwZTgwZGU4OWU5NDQgYmNhbm5vbi1zYW5kYm94aW5nCis1MDcyNSAxNDA1MzFiMTI0Zjg1ZGY1NzI5Mjc0MWUyNTA0NmJjOTU4ODVkN2FjIGJjYW5ub24tc2FuZGJveGluZworNTA3MzAgYmUxNzM0Y2M2ZGMwMmM1NzQ4OTZhMTYwMjZiNTkwY2I0OGFjMjE3NyBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzMxIGEzMmYyMGVjYzAyNGI3YmNiOTc1NmM3NDBjNWExYWQ1NWJjNmJhNGYgbGVnYWN5LXRydW5rCis1MDczNyA1OTc2OWI1MzQ3ODllNzUzYTU0MjA2ZjA1ZTkxOGYyMWY3MTJkMTQzIGJjYW5ub24tc2FuZGJveGluZworNTA3MzggZWI0NDBlYzc0YTEzZWJmNTUzMTMyYzc2MDRmZGFhN2MyNWM0MjVhZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUwNzM5IDA2MDcwYTEyYTZiMDJiNTcwZGRmNzk3OGY3ZjVhZmU0MjE3ODE5YTcgbGVnYWN5LXRydW5rCis1MDc0MCAzNTcyZmFhOWEyOWUwNzhjMzIxN2Y2OWYxY2I4NDBiOTI4YTQ3YzFjIGxlZ2FjeS10cnVuaworNTA3NDEgN2YzODE3MzI1MWJiYzZiMDA1ZWEwYWU1MzU3YzA3MThmYjcxYmExNiBsZWdhY3ktdHJ1bmsKKzUwNzQyIGFmNGEzYTBkNDdjY2ZlNmY2Yjc0NzM0NWM0NzhjMDg5YjZmMWU3MDUgbGVnYWN5LXRydW5rCis1MDc0MyBmMjAzMWYxNWQ5OWQ4MTI4YWRmMWNiM2E3MGJhYjcxYjk3YzBkZWEzIGxlZ2FjeS10cnVuaworNTA3NDUgYmFhNTQzMzdjM2Q5ZTk1ZmJhZDM1OTYxNTcxMmQ0YTQxYmZhNTI3OCBsZWdhY3ktdHJ1bmsKKzUwNzQ2IDdjMDliNjZmMDRiZDE0OTFiMDM2N2M5NzcxYTk0MjE5OTdmZDdkNGQgbGVnYWN5LXRydW5rCis1MDc1NCA0MTdjZGVkZTA2ODgwZjFkNTQ5ODMzZDZiYzQ3ODEyMmQxMTliOGU5IGxlZ2FjeS10cnVuaworNTA3NTkgZDBhOTU2NTRmODAzMjFjZTIzNTM5YzlhZDJiYThjMjdmMzY1Y2JiNiBsZWdhY3ktdHJ1bmsKKzUwNzcxIDA3OWU0MmUwYjgyNmE4OTBjZjBmMDM1NGY0YmIwMWJiZTI3NmM3ZGEgbGVnYWN5LXRydW5rCis1MDc3MiBmMWEyNzc3ZTVjOGIzZDY4NTRjNDFjNDFiODZmOGE2MzU0NDFlODEyIGJjYW5ub24tc2FuZGJveGluZworNTA3NzMgMTJlOTczYmRmZWVlMjk4ZjkxMjRiMDUwMWRiZWJmYjg3N2Y2ZjFkYSBsZWdhY3ktdHJ1bmsKKzUwNzc0IGVlNmFiMzMxNzU4MWJmNzg0NWQ4NGI1YTZlOTc3ZGJmODk5MTA1MDggbGVnYWN5LXRydW5rCis1MDc3NSA4MzJmY2U1MGRhOTM2MmVhNDQ0NDNmZWM5ZTZlMjQ5NWU2YTIyN2UzIGxlZ2FjeS10cnVuaworNTA3NzYgNzEzMmY5OGVmMDdiMzJkOTk0NDkzM2YyZGJlN2Y4ZTc0ODBjY2MxOSBsZWdhY3ktdHJ1bmsKKzUwNzc3IDc1YTcxMDY2NjJhM2ZkNjI3MjllM2QyMjIzODhkZjUzMjYyMjAxYzkgbGVnYWN5LXRydW5rCis1MDc3OCAxODA1ZTY4NGRjOTI1NzI5NzU0MjU3ZjYwYmViMTFlZmQ3ZThlOTAzIGxlZ2FjeS10cnVuaworNTA3NzkgYmM1ZDgzMWYxZGRhNTA5Y2JmNTZiZmZlYzVlNzM2NzBhYWE5YTgyNyBsZWdhY3ktdHJ1bmsKKzUwNzgwIGNkYmI0NGMzZGU4NzE1YTEwYzBkY2RhOGYwOGE5YmJlYzY5ZjNlODUgbGVnYWN5LXRydW5rCis1MDc4MSAwZTBhOTdjZWQ4ZTkxZjkyZTIzYThlYWVkZGQyZTZlNDc5ODNhM2VkIGxlZ2FjeS10cnVuaworNTA3ODIgZTk3NzNmYzI3ZTliMzZhNTk1ZGU1MTNmNzViZTNmZGFkZjIzNzg3MCBsZWdhY3ktdHJ1bmsKKzUwNzgzIDk1N2JmMzExOTI0Nzg0MDYyMjg1ZjJmYmY5YmY0NmQ4NmVjOGZjZTEgbGVnYWN5LXRydW5rCis1MDc4NCA5ZDE4ZDk2OGE1OGIzMzFmZTdmMjM1ZTk2MTZjMDEyODQzOTYzYTdkIGxlZ2FjeS10cnVuaworNTA3ODUgZTNkYTVmODdmZTY0MWQ4YjM5MmVhZTc1MWZjYTBhYzNmZjY5ZjVkZiBsZWdhY3ktdHJ1bmsKKzUwNzg2IDU0YmI3MjA2MzJjNDJmZDE4NWFkZTg5OTllOGMwZTI4ODIzZTZhYmIgbGVnYWN5LXRydW5rCis1MDc4NyAwYTRhZDgzZmQ2NTQ5MjI1M2MyODczNDk4MTVkNjBiZThiZGI2MGIwIGxlZ2FjeS10cnVuaworNTA3ODggM2FjODUwOTQzN2RmZGJjMjQ1MDA5NjhjYThkM2Q4MTQ5Y2RkNzY4NSByZWxlYXNlMjQtbWFpbnQKKzUwNzg5IGI1OGY3OTUyZTM4YWU4OTFkMmExMDM1NGY5NjEwMzM5ZjRhMzE3YTMgbGVnYWN5LXRydW5rCis1MDc5MCA3ODY0M2JlM2NmNDBiYjNhOWY0ZDQzOTM1NzJlZTAyMjMyYzYzZTllIHJlbGVhc2UyNC1tYWludAorNTA3OTEgYTNmZGE4NDMyMzRlNDhkMWNhNmM4MmIyNWU2M2NhNGE0NGE5OTNjYSBsZWdhY3ktdHJ1bmsKKzUwNzkyIGY4ODE5YmQ0ZTQzNzk3NzA1ZGFjZTAxMTdlMjJjNTYyYWI0NDk5OWIgcmVsZWFzZTI0LW1haW50Cis1MDc5MyA1MzQxOGNiYWQ3ZmQ0YzM2MmI5ZTc0OGZjOWQ1NjViMTM0OGMxYzNkIHJlbGVhc2UyNC1tYWludAorNTA3OTQgYTRjNGI3ZWE3OWMwYTc0ZjM2OTEzMTk5Yjc0Njc4M2IxZTExNzhkYiBsZWdhY3ktdHJ1bmsKKzUwNzk1IDgzMmQ1YTM0MTMwZmE1MzY0NTcwNzQwZGU3NTEwNjkwYTFiYzNhNWIgbGVnYWN5LXRydW5rCis1MDc5NiBhNGZjNGU3NTI2MzQ2ODI1MjdiN2YwZDFmZWUyNWJjMzI4YmQ1YjA0IGxlZ2FjeS10cnVuaworNTA3OTcgNjNhZWE2ODhiNWJiMjZkZmNjZGM0MGU1NjU3MjhkYjJhZWVjNzM4ZCBsZWdhY3ktdHJ1bmsKKzUwNzk4IDFiMWZkMThiMWFkYTUzODNjMjVlNTYyNGY4NjFiZjA1M2Q1ODYxMjggcmVsZWFzZTI0LW1haW50Cis1MDgwMCAwMmZhMTAxNWNiY2M0YzkzNGM4NDBhM2Y5ZmQyZmU2MjAwMWU5NzJjIGxlZ2FjeS10cnVuaworNTA4MDIgY2FhZjM3ZTQ1ZDQ3ZDQ3ZWM0NzgzNTg2Yjk2MDZlOTQwZThkMDE4OCBsZWdhY3ktdHJ1bmsKKzUwODAzIDg5ZTA5MGZlZjk4NTMwMjFjYWI2OTk2YjdkODQ2NGJlMThkYjQxMzEgbGVnYWN5LXRydW5rCis1MDgwNCBlZmRlNWVlODhjOWY3Nzc5ZjAxY2U1YjNmYzYzMjhmMTczNDJmOTM3IGxlZ2FjeS10cnVuaworNTA4MDUgMGMwMGUyZjUwOWUwMDc5MzQ3YTNkYTVkM2Q4YzUxNGZiZTcxODczNCBsZWdhY3ktdHJ1bmsKKzUwODA2IDdjZTdlZDJlY2Q5Y2FkMzRmMjY3N2M4NDMxNzc0NWNjYzJlMmI0OGUgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDgwNyBkNzFkNDY2OTc0ZTU4N2JiMzYzOTU3YTA5OWNmYWNlZmY4Nzg3MWY3IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTA4MDggZWFlZGNjYzAyODNkNzkxMGU0OWZmMmU3OTlhZmU5MzM4MjUxZmIyMCBsZWdhY3ktdHJ1bmsKKzUwODA5IDA3Y2VlMDFhNGZjY2MzODdmMGZjMWQ5MjhmYTUwZmE4MWVlN2NlMTEgbGVnYWN5LXRydW5rCis1MDgxMCBhNWY4ZDFkMjU1YTk3OWJjNzBmNGY2OGMwNzQzOWI2YzNlZDJkMzg5IGxlZ2FjeS10cnVuaworNTA4MTEgOTlhYTg0MjI0ZjE4MTlkNTUyNzI2YWE5MTFlYTg1NzA5NDU0ZjQ3ZCBsZWdhY3ktdHJ1bmsKKzUwODE1IDYzYTQ0YzkxYTRkNWViY2UzMjVmYzBmODIyYzJlOGY4MmRmMTJlMjcgbGVnYWN5LXRydW5rCis1MDgxNiA2MjI4MmZkYWFjNWEwYTEzNTY1OTUwMmJmM2MzNGI4NWY3NDQxNmY4IGxlZ2FjeS10cnVuaworNTA4MTcgNzkwYTc4MmQ5ODNjYzc0NDY0MTg1NDAyMjMwYmM4ZWIyMTc5ZGI5NyBsZWdhY3ktdHJ1bmsKKzUwODE5IDY2MjFlZGZkMjk2YWI4ZGUxNzBmMTYwOTg4MTcwYzY3MDdmMDIyN2EgbGVnYWN5LXRydW5rCis1MDgyMiAyZDRjOWFjY2I4ZmNjMTNjNDI4NmYxODA5ZmYyMDdlZTFjM2U5MjI2IHJlbGVhc2UyMy1tYWludAorNTA4MjUgODM3ZjU2OTUwY2VhOGI3NDJhNDYzZDc0Njk4NjAxNjM0OTJmZWIyZiBsZWdhY3ktdHJ1bmsKKzUwODI2IGZmOGU3YzQ2ZTQyOTgwMWYwNTZkMTFmMGUzMTRhYzdlNjZjNmY5NjggbGVnYWN5LXRydW5rCis1MDgyNyA5NTM3Njc1MmU2N2NmOTNiYjEzZjU0Y2ZmYjM4MmE5NDk5ZGMxN2RmIGJjYW5ub24tc2FuZGJveGluZworNTA4MjggOTAzZmRjMzhkNTY0NWU0YzJlMDE4OTIwMGY1ZjA1NGNkOTYxN2E3MiBsZWdhY3ktdHJ1bmsKKzUwODI5IGY5MGYzMjg2Mjc1NjFjNWQ2NzFhODRhZTM4ZDEyMjYxOWQ2YWYzMjQgbGVnYWN5LXRydW5rCis1MDgzMCBiOTE1MWM4Yzc5ZThmNTNlOWQzMzlkMDUwNDEwNjc1MzZjZjAyZDJkIGxlZ2FjeS10cnVuaworNTA4MzEgNWQxMTYyZTZiYzM3ZjQ4ZDVmMjhmOWJhYWU0YWVmNjZlOTNjMzIzYSBsZWdhY3ktdHJ1bmsKKzUwODMyIDQwZThjYWVmODQwZWYyNDliNTY3MGNlMDgxYmIxODlhNGJkYTZhNmYgbGVnYWN5LXRydW5rCis1MDgzMyAxNDkwNTI5ZTc0Y2UzYmFiOTI4M2I4NTUzM2JkMzNjOTZjYzNhMDZkIGxlZ2FjeS10cnVuaworNTA4MzQgYjU1YmYyYWRmYWU1ZTkxNDNhYmI4Yzk5ZGM0M2RmODMzYzg2OGVjNCBsZWdhY3ktdHJ1bmsKKzUwODM2IDVmMzMxMjA1NGNlZGU2MWU4MzVlNDg0MTMzZTNlNzk1NTQ0YjA3YTggcmVsZWFzZTIzLW1haW50Cis1MDgzOSBjZmJmNTc1NzI0NTdkYzAzNWQwOGIxNGE0NzViYzAxOTRhMjMxZTA4IGxlZ2FjeS10cnVuaworNTA4NDAgNmIyMDBiOGM2M2QzMzI2NmMzY2IzZmJjNzRlYjk5ZThkMDlmOGRhMSBsZWdhY3ktdHJ1bmsKKzUwODQxIDZkMTg0ZmI4YzUzNTA5OGQ5OWExNTNhZmVhNjZmZjI5N2Y5NDdiNTkgbGVnYWN5LXRydW5rCis1MDg0MiA3ZGE2ZjgxYWQ0ZDUzZTUyMWE5NmNmNTc1OTQ4OTY0YzRiMjJhNzM2IGxlZ2FjeS10cnVuaworNTA4NDMgMTdkNTY3MWZmZmNjYzNjYTk4ZDhjNmFjNzFhMWMwZTMyZjA0YzQwNiBsZWdhY3ktdHJ1bmsKKzUwODQ0IDljNmRjNmQwOWIwNzM2MjNlMzFmODgxYTM1ZjFhZTFjODEwY2ZhNDYgbGVnYWN5LXRydW5rCis1MDg0NSA5ZjNmMWVkZDljMzUwNjM4ZDE5ZDAzZDliZjU1NDUzMTI3NTYzZTZiIGxlZ2FjeS10cnVuaworNTA4NDYgMjY3MDY1MDc2ZjA1OWRlZjA0MjAxNWU4NWFmZDQ5ZTVmNTA1ODdlZiBsZWdhY3ktdHJ1bmsKKzUwODQ3IDI3MWIyYmIyZmM5MjNjZjBkZjAzM2FiNWE1MTBhMTVkYTZiMDk1YzggbGVnYWN5LXRydW5rCis1MDg0OCBmMjkyYTJiMTRiYWY0ODEyYzM0M2E3OWQ4OTYxY2JhYjk2NTI0NDE0IGxlZ2FjeS10cnVuaworNTA4NDkgYWNmNjAwNDcxMzY5ZjQzZjRiM2Y3MmIzNGU0OGI0ODc3ZmU2OWZjMSByZWxlYXNlMjQtbWFpbnQKKzUwODUwIGYwOGM1YmJiODA0MjFjZDM0YmU3YjFiODBmYjIwZWY2YmZjYjljMzggbGVnYWN5LXRydW5rCis1MDg1MSBiODE2NDJlNTIyODdmMzZiZjZhMWUwZjljYWIxYjFmNTJjOWQ0OWM3IGxlZ2FjeS10cnVuaworNTA4NTIgMWUwMGVmMDdiZWIyNzE5ODQ4MjNiOGQyZjM2MTgwNGFjZTVkMzljMCBsZWdhY3ktdHJ1bmsKKzUwODUzIDE4NWY0MjgzYTNiOWNkNGI2NzBkOWIwYWJkZjFmMmJiY2M0MTYyZTEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MDg1NCAyOWMyZmVlNmM5ODQ4ZThhMjc3ODlkNzFhNzBiYmQ1MzQ4ZDFlOWUyIGxlZ2FjeS10cnVuaworNTA4NTUgNDBiNDQ2ZWQzZjEyNjJkOTYyZTIzZTFhZmMzYzE5YmJiMDBlZTM0MCBsZWdhY3ktdHJ1bmsKKzUwODU2IDVlZTZkM2RhMGU2NDU2NDg3ZDEwNjgzYmY3NTY5NzExMjU4MDA0YzcgbGVnYWN5LXRydW5rCis1MDg1NyBiY2VmYmM1ZTY3MWFmZDdhMTY4NDI1Y2FlYWQzMmQwOGNmYTdlZGU2IGxlZ2FjeS10cnVuaworNTA4NTggMGIwY2M3YTQ5NjgyY2MwYWY4MWVkNGU0MDNmZTIzZDZiZDFkYjU3MSBsZWdhY3ktdHJ1bmsKKzUwODU5IGQ3NjU3NzVlZDc5Zjg1NjNhMTk5NTVjZjhlNWIwNWFhODk1N2VmODUgbGVnYWN5LXRydW5rCis1MDg2MCA4Y2EzMDY4ZWEzNDNhMjRhZTczYWFiMGY0MTQxMGE1MTA4Y2Y0MzBlIGxlZ2FjeS10cnVuaworNTA4NjEgMDI1YzI3YjgxMmY2OGM0MjRhNjZlYmI2OGIxODFkZGI0Mjk4NzBlZCBsZWdhY3ktdHJ1bmsKKzUwODYyIGIwMTFiZWNmOGM4MjJjMmJiNTY1NGM5OTFkN2E3NmQyMDAxZWQyMTggbGVnYWN5LXRydW5rCis1MDg2MyBjMThhNjY5NGEwNjZjN2U5NWQxNWM2N2FhYzViNGY2NjY5ZDA3ZWM4IGxlZ2FjeS10cnVuaworNTA4NjQgMDBhY2U2ZTQwOGIwMzcxYTBmMjI1ODgxNTcwNGM2MGZmOTI0YzI1MiBsZWdhY3ktdHJ1bmsKKzUwODY1IGExMTBhNDQ2MjE4OWEyMDAwMmI4ZDhkNGYwNzQyZTY1NGFmNGM3MGEgbGVnYWN5LXRydW5rCis1MDg2NiA2MWMwZmU0ODM3NmExMmQ4YTMzYzViNjQzNWUxZmM1YzE5NTRiYjI4IGxlZ2FjeS10cnVuaworNTA4NjcgNjA1MjJkZmU2MjU5OTBiMDQ1YTQwYTQxMTAwN2Q5ODljZTAzMDU4ZiBsZWdhY3ktdHJ1bmsKKzUwODY4IDcyYTUyZTZmYzZmMTBlNTNmNTBiNmYxMjFmMjA2NDI1MzA0NDgxMzcgbGVnYWN5LXRydW5rCis1MDg2OSA4NzliZDc1MTBmZWEwMGQyMTI2OTdiYWUyMmMzOTc1Yzg2YThiZjAxIGxlZ2FjeS10cnVuaworNTA4NzAgNmIzZDRhMGYyYWM1OTE1NzgwNzRkNWZkMzc4NGViNDJlNjg3Nzk0NCBsZWdhY3ktdHJ1bmsKKzUwODcxIGM0YTc1NDZhNTA5ZjE3NGMzODhkZTQzNDU2YzNlYmMwNmQwZTg2ZTIgcmVsZWFzZTI0LW1haW50Cis1MDg3MiBjZTRkZmYyYTk1MjM4MDBjYjY1MDcxNDJlYjA5OWNmYTY0ODYyY2QxIGxlZ2FjeS10cnVuaworNTA4NzMgZWVhNjc0MjExZDMyYmMxZDU2M2UwMmQyZWZkZDk5M2UzOTYyNzRiMSBsZWdhY3ktdHJ1bmsKKzUwODc0IDBkMGQ4MmU0MGI5MjdlNTNkYWI4NjNlZjYwNGRiMmE1YzU1MTVkODkgbGVnYWN5LXRydW5rCis1MDg3NSBjNmQ0YzBhZjJhMTIyMjY5YTE5MTBkNGFiMWE1MzNhYjBmZmJkNmQxIGxlZ2FjeS10cnVuaworNTA4NzYgYWMwMWI2MzU5YjYyMTU4OGNkOGZiM2M0ZjczMWQzYWQ2OTZhODIwOCBsZWdhY3ktdHJ1bmsKKzUwODc3IGIwY2RjYmNjNWY0NTc4ZGI2NGU0YzcxMDM4MDRhNmU0ZGI4NTExZmUgcDN5aworNTA4NzggYTc1MzAwMzZmMDU1Y2JkODQyMTgwMzkxOTY2ZmExNmE2MmY2OWIwOSBsZWdhY3ktdHJ1bmsKKzUwODc5IGUxOWRhOWIwMDJkYTMxYzYyZjE4ODNhZGExMmQ2YTQ1M2VkOTZlZTMgbGVnYWN5LXRydW5rCis1MDg4MCA2ZWIzNzU3YzJjOTkxZDM2ODllYjU4NzQ3YjMzYTY4MjFkZWY5M2YyIGxlZ2FjeS10cnVuaworNTA4ODEgMjhjZGQ0M2UwNTY5MDJjZmZiN2MwYzAyZWM2Y2U2MmNjNDYyN2VlNSBsZWdhY3ktdHJ1bmsKKzUwODgyIDA3ODE3MmVlYWFlNTNkNjE0MTIzMDc0MDg0ODRiYTk4MWEyYmQyZTMgbGVnYWN5LXRydW5rCis1MDg4MyAwYjNmZDA0Y2RmYjQ4ODVjNzM2OTVkNDY3MWVhYWFhMjY2MzBkYzdhIGxlZ2FjeS10cnVuaworNTA4ODQgMTEyZjIxODgyMTNiMjRjYjIzNzdhMGRlMmUwY2FmZGZlNTJjY2JmZSBsZWdhY3ktdHJ1bmsKKzUwODg1IDQwY2ViYWZhZTU2ZmY2MDNmODFjZGQ5ZTBlMmUyNTJhMWY3NGM2YjcgbGVnYWN5LXRydW5rCis1MDg4NiAzNTA0M2ZiYTdhZWQ4MDFjZGRhNTNhOGQyNzBiNzI4ZjM4MDMyZmY1IHJlbGVhc2UyNC1tYWludAorNTA4ODcgY2Q4ZjIwZDQwMGMxYzY1YTMzMGQ3M2U0Y2Y0OTdiYTRkNjBiZDJiYSBsZWdhY3ktdHJ1bmsKKzUwODg4IGVmMWU3ZjNkOWY5ZDgyZWM5Y2RkYjc1OWRkMDM4ZmFhZDM3YjJhZWUgbGVnYWN5LXRydW5rCis1MDg4OSA2MWM4YjQxMDRhZWZhZWE1MjExZjZmOWNmMGM4NTQxZTg3ZWM0ZWE5IGxlZ2FjeS10cnVuaworNTA4OTAgNzU0MzFiMGJmYjBlNzIxM2IwYjM0YjA5NjBmZWUwOTNhNjM0MTc3ZiByZWxlYXNlMjQtbWFpbnQKKzUwODkxIGI5ZjM1M2MyYzAyM2U1Yjk4NjMzMmQ3ODY4ZWQ2YWNjMzIwNTA5YWYgYmNhbm5vbi1zYW5kYm94aW5nCis1MDg5MiA2OTdhZTM2MmVkMDI0MTUyYTEwODc4M2M2Mzk2N2VhMDAxMTdkNzE0IGJjYW5ub24tc2FuZGJveGluZworNTA4OTMgNDI3NmQwYjQ2OWFmZmYyNGYyYjdlMjcxMDFlMDZlOGI1ZjcyYmRiYyByZWxlYXNlMjQtbWFpbnQKKzUwODk0IDI3N2Q3YWY1NWM0OTQ1YTc4MGFiMzg0ZDc2ZWYyM2FiZTc0NTNmNzkgcmVsZWFzZTI0LW1haW50Cis1MDg5NSA0YTZhZGU5Y2U3ODBkYjkwNTU3YTM2YTFjZDljMDUyOTZlNTRlNDM1IGxlZ2FjeS10cnVuaworNTA4OTYgNTU4NjVkN2JjNmVhNDkxNDQ1YWNhYTUzMTFiZTE5OWE1OGYxZWZjNyBsZWdhY3ktdHJ1bmsKKzUwODk3IGJmMTk4NGMxM2UyZjc5ODY0NDY0OWRmY2MwODBlODE4MDFhMGQ2MTMgbGVnYWN5LXRydW5rCis1MDg5OCA2ZGFjZGMxYTAwNTRmYTkzNjljNzNhOTU4ZjU5MTJhMmViYzg2NjliIGxlZ2FjeS10cnVuaworNTA4OTkgMGU5YTI2OWEyMTg5MGIxMDA1ZThiODA5MGRjNjc2ZjE3NjBhMTI4ZCBsZWdhY3ktdHJ1bmsKKzUwOTAwIGQxNjY0YTUwMWRhNWNiZGUwZTAwMTA3ZThmZmM5OTYxZThhYmRhMzYgbGVnYWN5LXRydW5rCis1MDkwMSAwZGU5ZDcxNDQ0ZjYyOTZlYjU4NDAwNzE2MTYwYTE0NjNhM2U1ZDc2IGxlZ2FjeS10cnVuaworNTA5MDIgYTliMmZkMmQ0Yzk2MTdjYTU0MzQwOTczZTkyMjQ2MWE2NjNlNDg3OCBsZWdhY3ktdHJ1bmsKKzUwOTAzIGM4MzRjYjk1NjM3YWNkYjE3ZDIzZGQxNmQ2YWFjMzJkYTZhMGQ1NGUgbGVnYWN5LXRydW5rCis1MDkwNCBjM2JiNGIyM2ViOWIzZmJhY2EyNjJjOWY4MWVjMDlmY2FmNjkyMDhlIGxlZ2FjeS10cnVuaworNTA5MDUgNDA2YzFlZmU3YmVlZDM0NjlmNjkxZTY5YjEzY2M5YmMzM2RiNzA1NSBsZWdhY3ktdHJ1bmsKKzUwOTA3IDA0ZGYwYTk3MjFiMmM3NGNiZjMwMTQyNWM2MjFlYjk1M2Y0MjMyZjcgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkwOCAxYjU5N2M4MDE1NzIyMmM0MzI5MTA4ZDRjNzM0OGZmNDc0MDQ0YjlmIGJjYW5ub24tc2FuZGJveGluZworNTA5MDkgOWZkYzY4NDFjM2ViNjljNzJlYTE3ZmIzNGEwMWM1NDNmMjNmYTAxYSBiY2Fubm9uLXNhbmRib3hpbmcKKzUwOTEwIDMwOGJhNjQzMTczYTAwNGYzZmJjYjlkYTRhNTZiYjIzMjgzNzg0M2EgYmNhbm5vbi1zYW5kYm94aW5nCis1MDkxMSBlYzUxNmJhZjhhMzBjNWQ1OWMyNWEyMWUyZDgyYjY0NGEzOTY1NDYzIHJlbGVhc2UyNC1tYWludAorNTA5MTIgZjNkNTQwNzUxYWRlMDdkZDk4Y2FiMTA4NjNlY2QyZmRhYjcxMTcxNSBsZWdhY3ktdHJ1bmsKKzUwOTEzIGM0YWM2ZWE0OTdhMTA1ZWQzNTQ0M2U0ZTZhMjQyNzZjNjlkOTNiOTYgbGVnYWN5LXRydW5rCis1MDkxNCA4N2M5ZTMzMWQ1YzhkNjExMmM4MTNkZTgxYTNkZjY0YWJkODVmMjY3IGJjYW5ub24tc2FuZGJveGluZworNTA5MTUgNmI5NmQ4YzkyM2JlYzViMTVlYTQ4NTBiMTMzNzI5YjgxNWQ0YmY4NCBsZWdhY3ktdHJ1bmsKKzUwOTE2IDNmNDQ4NWIyMGU3OTllOGNhZTI3YTBmN2FhODJjYzI3NTA5NDg4YTQgbGVnYWN5LXRydW5rCis1MDkxNyA1ZTg1ZWVlMzM1ODI4ZDgzNWQ4YTgwNDk1NDc5NTNiZWRkOGUwYzgxIGxlZ2FjeS10cnVuaworNTA5MTggMTJjZmExYmNmODQzZDc0YmNiZTEzZTg0MjUyNzFlM2Y0YjNmZDExZiBsZWdhY3ktdHJ1bmsKKzUwOTE5IDhiOWNjZDVkOTMxZTBmMjQzN2I1YWYzNDM0N2VlMDQwYzZiNDYxOTggYmNhbm5vbi1zYW5kYm94aW5nCis1MDkyMCA5MjVhYjQ3ODI5OTQyNDk3MDk3M2UyOTZmZDI2OTU0MzlkOWUyYjI0IGJjYW5ub24tc2FuZGJveGluZworNTA5MjIgYTU0YWUyNTgzYjcwMTAwY2EyMDhmZTExMzVlNmI3ODM3ZTUwMGJlYSBsZWdhY3ktdHJ1bmsKKzUwOTIzIGU3OTVlMDVkNmQ1NjVjNjJiOTMyYTM3YzAyYjY3Mjg1ZjI4OWMwMDkgcmVsZWFzZTI0LW1haW50Cis1MDkyNCA2YzhiYzdjZDcyYTZjOWZjN2Y0ODFlMDNjMDNmZWUwYTYxZTlhMjNkIGxlZ2FjeS10cnVuaworNTA5MjUgZmI2YmNjZmZiZTMxMGE0YjA4ODI2MGZkYzMyZGM0NzBjYzdiYWJkOSBsZWdhY3ktdHJ1bmsKKzUwOTI2IGNkYjQ3ODcyMjZhZjNiNTUzMTBhZTgwNWE5NDljZjMxOGEzMDUxMTUgbGVnYWN5LXRydW5rCis1MDkyNyBkNDUzNDQwYjMzYzZlNTE3MzNmMWQzZmIyYmJhYTAwZmE1NTZhOTQzIGxlZ2FjeS10cnVuaworNTA5MjggMWZhZDRmM2UzNmJhNGZiMDQ0MzlkNDY5Y2YxYjU0MThhNzFlN2NlYyBsZWdhY3ktdHJ1bmsKKzUwOTI5IGFiMzQ5NWRmNGNjZWNiYTZlMWQ2MjhmZDdhOGM3M2ZhNDA3MGUwNmUgcmVsZWFzZTI0LW1haW50Cis1MDkzMCBiZDI2YTE5NTNjMDViZTJlYWZkM2E2ZGU1NmQ2ODM4MDc5NGJhZjg1IGxlZ2FjeS10cnVuaworNTA5MzEgYTk5NWNmZjg0M2IzNDBlMWY1YWI4Yzk3N2QyMjRmYWZjMGNjOGIxMyBsZWdhY3ktdHJ1bmsKKzUwOTMyIDNmZWQ3ZmI2YmM5NjQ0OTM5Y2Q3ZWYzYzAxNzI2MTZhNGE1MGUyNDUgbGVnYWN5LXRydW5rCis1MDkzMyA1ZjIxNTQzYzMzZGM0ZWNhN2FlM2VhMjUzMWU3NDZmYmIwOTFmZDk2IGxlZ2FjeS10cnVuaworNTA5MzQgMmYzZDg3MWJmNmVmMjJmMzlhMjU3YzY2NjkzNGI4NzNlNDVjZGNjOCBsZWdhY3ktdHJ1bmsKKzUwOTM1IDZmZjcyYWQ5M2FkMmJhNjE3YzUxNTFmMTRlMWUxODRjYTViNGNiOWMgbGVnYWN5LXRydW5rCis1MDkzNiAxYzk0ZjY2MjM3Nzc5YjU2YmFhOTcxZTE3MWZmZDVhMGViYmQxMjg4IGxlZ2FjeS10cnVuaworNTA5MzcgNmE4OTk1YzJlOGJjOTkxZDE4Y2FjYzM0MDYwMjIxZjI0Mzg2MGIxZiBsZWdhY3ktdHJ1bmsKKzUwOTM4IDA2OTFkOTAxZDg5Y2JmM2JhYzBkNTNiYTU4NzFmYWY3ZDI0ODZkMjIgbGVnYWN5LXRydW5rCis1MDkzOSAwYWJhNmIxZjVhMDFjM2JkZjVkZjFkYTEyYjQzYmI1ZGUxNzdiM2MwIGxlZ2FjeS10cnVuaworNTA5NDAgMWEyMjJmMTEwYWFhZjk5ZGQxMjE4MjU4ODU2NGUxMWUxMTUyNTkxMyBsZWdhY3ktdHJ1bmsKKzUwOTQxIGNiMWU0MzJiNDkxOWYxMDY0NDA2YTY4YzhlZjE2MDgzNThiZDY1MjQgbGVnYWN5LXRydW5rCis1MDk0MiA0ZGQ1MmJhNTJkZTgzZWUxM2MzM2VlNzc0ZWExMmZkNDc2NTU5YTY1IGxlZ2FjeS10cnVuaworNTA5NDMgM2EyZDNlZGEzZTE2ZTVkNGQ5NmQ4ZmE1ZDU1N2Y0MTA3YmNiY2YwMSBsZWdhY3ktdHJ1bmsKKzUwOTQ0IDM0OTgzYzBiMjZiYzI5MjY2MjllMjEyNjc0Yzg4ZjI2MWY4NDEwN2QgbGVnYWN5LXRydW5rCis1MDk0NSA4MDY5ZDczYWNiZGY4YjVlOWQzYjg3YzZhZTkyMWFiNWY4YjBiOWQ3IGxlZ2FjeS10cnVuaworNTA5NDcgMzU1ODNmNTVjNWE4YTU1YTA2N2ExYmUxY2ZiNDBlZjFhZTRkMjY0ZiBsZWdhY3ktdHJ1bmsKKzUwOTQ4IDcyODE0MjlhMDFkNjdkNGJiNzA5ODZmMmU1NzcxOTVkNmJjNDMyZjQgbGVnYWN5LXRydW5rCis1MDk0OSAzNGMyMGQzZjI1MTA2NDA3M2RmZDZlYjNkMjkwMzI5Yjc4MTRhMDEyIGxlZ2FjeS10cnVuaworNTA5NTAgODhkYjYwMmYyM2E2ZDFlNWQ0NWE4NDEyNDAzYzBhZTljNTU3OTU5NCBsZWdhY3ktdHJ1bmsKKzUwOTUxIDQ1YTM1NGY3NGQ4MGQ2NTQwOWEwZGYyYTVhMmE1OTJiNmJkYjQ0NmQgcmVsZWFzZTI0LW1haW50Cis1MDk1MiA0ZGI5ZDk1MzNiMTYzZDE3OWMwOTk5YzBiNGJlNjdiNTc5MWY2YjUzIGxlZ2FjeS10cnVuaworNTA5NTMgZDg4ODhjOGI4NzJiMTNhNzM3NGQ0NjNhMzY2ODg3MGRkY2NmYWYxNSBsZWdhY3ktdHJ1bmsKKzUwOTU0IDZhNWY3OWE0ZTY4NzMzZTEzNmYxMjU2YzBjMWI5MTE3MjVmOGZmNTYgbGVnYWN5LXRydW5rCis1MDk1NSA1YWQ2ZTJhNzJiMmFjMmExNDIzOTdmNDIzNTljMWU1ZmM5YTgxMTkwIGxlZ2FjeS10cnVuaworNTA5NTcgNmQxZjY3M2YwNTkwN2M2ODNiNzE5NDZmNzBjMWFhMGU1MjQ3NDQ1OCBsZWdhY3ktdHJ1bmsKKzUwOTU4IDgwNTUxMmNmMTRlZmNhNjVlZDhjYmJlMGFhMGM5MmZiMTNmMWY5ZTQgbGVnYWN5LXRydW5rCis1MDk1OSA0NDA3ZTUxOTNhNGIwYzkxNzI4NWYyMmZjYzA4NDdlYzhlMDZjNGM0IGxlZ2FjeS10cnVuaworNTA5NjAgNGUzYWQ2NWY1NWU4ZWUyN2NlYTAxMjFiYmRhOTY0ZWNhZDJiM2M0NSBsZWdhY3ktdHJ1bmsKKzUwOTYxIGVmYmFlYzk2NzRkZmQxZjk5OGQwNjU2MzQzMjJjN2YxYWFlODllMWEgbGVnYWN5LXRydW5rCis1MDk2MiBkZDUxZTU2YjZjYjBhNWQyOWU4OTdiYmMyNWEwMGUzMTY0OWQ0OWRlIGxlZ2FjeS10cnVuaworNTA5NjMgMTUyM2MzOGNkNTA1ZmYyMTkyMmI2ZjhiNDdkZTFkM2Q3MDBmZjI2OSBsZWdhY3ktdHJ1bmsKKzUwOTY0IDM4OGI3ZDkwYmI4OTYzZTk3ZTRiZGNlYjFlNmQxODc0ZmIyZDg4M2QgbGVnYWN5LXRydW5rCis1MDk2NSBmNjlkOTFhN2NmNzE0ODk0ZWRkMDQ2ZWU1N2UzMTQyMDZjYTNhNzg1IGxlZ2FjeS10cnVuaworNTA5NjYgNzdmMzY1M2JmYzE0ODNmNzQwYjEyMGM3NzlhOGUzZmUzYWRiNjFiOCBsZWdhY3ktdHJ1bmsKKzUwOTY3IGFlZTlmMGQ1ZmQyYjE2NzI0NTNhZGVlOWRlNTIwYjYzYzczYjZjYzggbGVnYWN5LXRydW5rCis1MDk2OCBiNzQ1YjNmZDY2YTY0OWE1ZmE1NDBiZGY0Nzk3MWMyNmFmMGE5NTllIGxlZ2FjeS10cnVuaworNTA5NjkgN2RjNWYzZWRlNGNkYzYyYmZlZmIxZDcwYmQwYmFlYmNkOTc1ODM2NCBsZWdhY3ktdHJ1bmsKKzUwOTcwIDA0MWViNjIzMWNkYzI0MTZkOWI5NWQwNjVhODJlY2IxYTE0NzU1NTIgbGVnYWN5LXRydW5rCis1MDk3MSAxYjRlNWViMjEwNDlmYjVlNTlhM2IyNDQ2OGJjOGRjODk3MDIwYTk5IGxlZ2FjeS10cnVuaworNTA5NzMgY2ViZWUxZjg1MjIyMTkxMWFkYjBiYjA5NTZiMTk3NThkNGZhYzYyYyBsZWdhY3ktdHJ1bmsKKzUwOTc0IDFlYjkyMTU2NDFhODg0NGVhNjQyYzE0Nzc4Y2QzMDMwNWQzZTMyYjkgbGVnYWN5LXRydW5rCis1MDk3NSAyMTY4NzdiODZiYzI4NjVmNzVhZjFhMzk1M2VjOTg4Y2M1MjI5NTg1IHJlbGVhc2UyNC1tYWludAorNTA5NzcgOTM3N2M2NjA0NTQyY2U2ZWFiZjVkMGU2MmNkNDQzNWRlNmQxZWM5ZSBsZWdhY3ktdHJ1bmsKKzUwOTc4IDM2MWVmN2NlZWYyOGQ5ZjYzZWIzZTVjN2U1NTc1ODNmMGExMzU0M2QgbGVnYWN5LXRydW5rCis1MDk3OSBiZGU1OGE3OGZjNzEyZTJhOTcyNWQ0NzQ1ODFjMTRjOWIzMGExZTM3IGxlZ2FjeS10cnVuaworNTA5ODAgZDkzYTA0MzQwZTZiYmE1NzQ3ZWYwYjJmZjA5OTgwNTFlNmZjOTFlMyByZWxlYXNlMjQtbWFpbnQKKzUwOTgxIDY1ZTdiNDIyMzQ0NGYzNmM4NjdkOTcwMTJjNDBlOTRkNGUzMmYxMzEgcmVsZWFzZTI0LW1haW50Cis1MDk4MiA5Yjk1ODA5ODIwMzU1YjZmMWU0ODc0NzFiY2UxZWI5MDRkNzQwNzBhIGxlZ2FjeS10cnVuaworNTA5ODMgYzk4YTIzNTI5ODNhNDk2ZDE0YTk4ZDA5OTMwZTY0ZTFmZjcxNTNmYiByZWxlYXNlMjQtbWFpbnQKKzUwOTg0IDI5Yzc2MzVkMDE5OWFjNWJlMmM5Nzk5NDJlZTEwMmIwOWNiMjQ2ZTEgbGVnYWN5LXRydW5rCis1MDk4NSA3ZjQ0ZDYzNGYzNzdiZDY4OWIzOWRkNGZiMmFmYmZlOGRmZTA5MmM5IGxlZ2FjeS10cnVuaworNTA5ODYgNGFlZDQzNjdhZGQyN2NlZWJmYmRkN2Q4NTNmMmIwMjUwYzA2YTk5MiBsZWdhY3ktdHJ1bmsKKzUwOTg3IGQwZTYxNzA3MDRkZWU4NTA5NjAxNGIzMzdlZDA0MWQzMmNiMzFhYWYgbGVnYWN5LXRydW5rCis1MDk4OCBjODdhMzk1MWRmYzUwYWEwNzE4YmZkOGUyMGIwOWM2NjkxZjFkNTA5IGxlZ2FjeS10cnVuaworNTA5ODkgNGVkNWQ0YzhlNjU0MjRmNGE4MTFhMDU3YWE1NzcwMWYyZDllZTBhMyBsZWdhY3ktdHJ1bmsKKzUwOTkwIDM5NWQxNWU4Mzc0YTcwYTA2YTQ2ZGM0NzgzMjgwZDMzYzA4NTNlMmUgbGVnYWN5LXRydW5rCis1MDk5MSBhZWM2NjY4YzU4ZDFlMWY4OTAyZmU4NWQ1MjA2NzIyMWQ5YzllYjUyIHJlbGVhc2UyNC1tYWludAorNTA5OTIgY2YwNDZlMjJkN2RkNTljNGNhMzJkMjQ3MzQzZDY4YmQxMDFhMmZiZCBsZWdhY3ktdHJ1bmsKKzUwOTkzIDkzMGJiMWViOGRkNWQxY2FjNTI5NzQxNTM0ODgxNGJmNzQ3ZDg1MjAgbGVnYWN5LXRydW5rCis1MDk5NCAzZGQ0MTAxY2I3ZTk3NzlmZmY0NDUyM2M3YmE5YWRhNmNjNzU5YjhjIGxlZ2FjeS10cnVuaworNTA5OTYgZjdmMTBhOGI5NmVlN2Q2MDE0Zjc2NDg3ZGQ3ZTAzOTVjZTUwMzdmNSBsZWdhY3ktdHJ1bmsKKzUwOTk3IDdmMDQ3OTNmZTEzNWU1ZTg4NDk1N2E1NzRmNDVlMjVhMzM4NDI5OTEgbGVnYWN5LXRydW5rCis1MDk5OCA5MTAxNTE1MjRmNWVlYjBkMzE1MTEzY2FmNWNhMDEwZTY4YWFiMzVhIGxlZ2FjeS10cnVuaworNTA5OTkgNjYyODE0ODhlOTAyM2E4MjJkNjk3YWY5NWE3OWVlYzJlZDcwMjM4MSBsZWdhY3ktdHJ1bmsKKzUxMDAwIGI3OWI2OGI4MmE0NDVjMzMxMWUyNTkyMGM4NzU1NzdkOGY0OWQ1NDEgbGVnYWN5LXRydW5rCis1MTAwMSA4NmU4MWRlZmMyODU2ZTYwMjA4MTBmNThlZTc3NDI3YTBkZThiZDlmIGxlZ2FjeS10cnVuaworNTEwMDIgM2I3ODk1N2M3NzkxOTk4NGIwMTNiYjk2ZGI4MDUzNTg1MTM4YWMxYiBsZWdhY3ktdHJ1bmsKKzUxMDAzIGYzZTA4OTE1Yjg3YjQ0MzU2MWIzYzMzYjE0MWE2NTRjZDE4Y2ExZjMgbGVnYWN5LXRydW5rCis1MTAwNCA4NmMzNjE4YTQ5YzNmM2E1OTI0NThmNWVlOWI4NDczY2QxZTk5ODVlIGxlZ2FjeS10cnVuaworNTEwMDUgNDk2NmIxNzk2M2I0MWU3ZTdlNjA2MWU0ZGVlNmU0NWQwY2FhMDQ5YSBsZWdhY3ktdHJ1bmsKKzUxMDA2IDNkZThhNThhZTBiOWU4ZTEyZGVlMjQxM2FiNGI2ZmRiOTVlZjNkMjggbGVnYWN5LXRydW5rCis1MTAwNyAzOTM4ZTZlZmE3OTNkNmIzMTc2ZTY1YzAzODczMDIzZTQzNDdjODIzIGxlZ2FjeS10cnVuaworNTEwMDggMzE1YTY2ZDIyNDdhNzkxZDNiMGNmNDBhNzMyNTQ0MjU0NTA4MTgzMyBsZWdhY3ktdHJ1bmsKKzUxMDA5IGZmMjIzYjk1ZjIwN2UwOWQzM2JjNTA4ZDZlMjRlNGRhMmZjODgwM2UgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMCA5ZDdjNDVkMGQxYmY3ZWMzNjlmZTc4M2MxNDdiOTlhMmMyYWQwMjk3IGJjYW5ub24tc2FuZGJveGluZworNTEwMTEgZWUyZDQ2YWMyZjZlN2I1YjlmMTZlNDc3Nzc1OWQ5Zjg5M2EzNjA0NiBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDEyIDFjMGMxMjgzOGU2MjUzZWRmMTUxMTg4MDgxZDMxMjI5NmViM2ZlZjggYmNhbm5vbi1zYW5kYm94aW5nCis1MTAxMyA4MmI2NzU3ZmZmZjQ3NmI1NjE0NTc1ZTYyZjJlOWI0Yjc0MjU5MWI2IGxlZ2FjeS10cnVuaworNTEwMTggOTFjYTZlZWFlYjRhY2M1NjRlMGZhYWMzOWVhMTBiMjczM2I0ZTViMSBsZWdhY3ktdHJ1bmsKKzUxMDIwIGQzOWFlZTZjZGQzMmNmYWJkMWNiZGVhMmI2MTc3ZTJmMWQ2ZGJiNzggbGVnYWN5LXRydW5rCis1MTAyMSA1M2QwNTUyYTdhOGM1MDcxNTEzYmIxMDY3NWU5MjA5NmFjNDZhNTBmIGxlZ2FjeS10cnVuaworNTEwMjIgMjkxNWMwNzI5ZjBhOGNlNmQzMThiMzEzOTU2YzFmNTJjNGJjYjAwZiBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDIzIDdlMDMxODNlYjdhNTJhMWM5NGIwZGM1NzU0NzhmZTA1MGQ4YWQ4MDYgbGVnYWN5LXRydW5rCis1MTAyNSAxNTY3YzAxY2NhNzNmOWY2ODRlM2JmNjYwZmI5YTliMzY2ZTRhNTE4IGxlZ2FjeS10cnVuaworNTEwMjYgNDYzNzdiMDVlMTgxNTg5MTViNjQ3ODVlMWEwZTc5NmNkNmE4MWQ3ZSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDI3IDJmMjIxYmRkOWY0NGI4ZjhjOTEzN2M3MDJlNjEzNGI1OWJmNDk4MWMgbGVnYWN5LXRydW5rCis1MTAyOCAyMzJkMTU2YmViODJmYzZhZDQyZTI4OTMwOGUwZTc2YWZmNTk1YzM3IGxlZ2FjeS10cnVuaworNTEwMjkgZDIwYjlhMmQ4ZWU3MzAyMDRiYTJhZGE3ZjE0ZDlkZmZkZWFlYTM5MSBiY2Fubm9uLXNhbmRib3hpbmcKKzUxMDMwIGNkODJlYmZjNjZhZmQ0NjRmNzRlZmUyMmI4M2JiMmFlYTg1ZGE3YTMgYmNhbm5vbi1zYW5kYm94aW5nCis1MTAzMSBiZDUwYTQyYjdkZjBkMGE2ZWRmMTI1MWIyNzM4MmFiZWUyN2UzNmU3IGxlZ2FjeS10cnVuaworNTEwMzIgNGYxNWFiYjEyMGRjNTE2MzIzODViMGVkMDIxMDFjMjExMmUzY2ZiZSBsZWdhY3ktdHJ1bmsKKzUxMDMzIDdkNmI5NzE1ODE4MDVhNzUwYmVmNGY1YjQ1OTI1OTkwNmRiNDVkMDAgbGVnYWN5LXRydW5rCis1MTAzNCBmYTJkYWMzOTI2ZmZjMTU5ZGExMzk2ZDBhODA4MDUwZTRiMGUwODNiIGxlZ2FjeS10cnVuaworNTEwMzUgNTk3NjJlNzk2MjgxMmZhNzg2NGVkOTQyMWZlZDUyYTdiYTI1ZWM5YyBsZWdhY3ktdHJ1bmsKKzUxMDM2IDEyZmZlZDkyN2EzZDQ1ZDE5NTBhZGM1MGI2OWZmYjY2MDQ1YzE1ZDYgbGVnYWN5LXRydW5rCis1MTAzNyAzNDQzNjRiNDkyMDg1Njg4NjkzNmUxZWE1ZjhmNGY5MDNmZjFkNTRlIGxlZ2FjeS10cnVuaworNTEwMzggMDAzNTBjYmUwYTllOTQ4N2NiNmY2NTgwNWFmNWQ4OWViNTY4MjFjMSBsZWdhY3ktdHJ1bmsKKzUxMDM5IDg1ZmRjZGZjYTg1YzFjYmExYjk3YmVjNmZlMmNmZjhmMjVhMzI4YzYgbGVnYWN5LXRydW5rCis1MTA0MCA1ZjlmYTBiODYzYWVlODBmOTkyM2ZlZjVlMDhlMTQzZTQ2N2JhMjhjIGxlZ2FjeS10cnVuaworNTEwNDEgOGI5MzE3NGQ1MDFhNGNiOWI0ZTBkZDgwMWMzN2E0MDA2ODc4NTBjMSBsZWdhY3ktdHJ1bmsKKzUxMDQzIDFlYWQ0MTIyMWJkODgwZWMxOWFkMTI1OWIyOWYzYTA1NmE0ZDdkMmIgbGVnYWN5LXRydW5rCis1MTA0NSBjZTEwZTNjYzdhZWJlODlmMjRiNzQ3OGE1MDhiNzA4YzM2MDExNzlmIGxlZ2FjeS10cnVuaworNTEwNDYgODJmNTYyMDc2NTJmNjljYWIyYTljMjMwNjU1NjdlYzQwNzFlYzRkOCBsZWdhY3ktdHJ1bmsKKzUxMDQ5IGMwYWJiMTgyOTliNDQyZTExNjBkMmY5NThiY2UxOGY2Njg1MGNhYTkgbGVnYWN5LXRydW5rCis1MTA2NSBjZGNmMmJjYWQ2MjRlYThiYWM2MzY1NjNkZmI4MTkzMDA0NzQwYTdhIGJjYW5ub24tc2FuZGJveGluZworNTEwNjYgYzM4OThhNzNiMzg2MDc4NzUxMzdmM2YzN2RhOWQ3MWJiZDcyODg4ZiBsZWdhY3ktdHJ1bmsKKzUxMDc5IGVjNGYzNWQyYTY5M2NlMTk1MDJmMDZkNmFiNGY0YzViNWQxOGZlZjMgbGVnYWN5LXRydW5rCis1MTA4MCBiOTBhOGIwMzk1YmQ0M2ZkMTkzODQyNDUxZDBjNDk1NzNiNGQ3MTY2IGxlZ2FjeS10cnVuaworNTEwODEgOGVmM2Y4Y2Y5MGUxMjFhMGI0MGEwZTNmYjdjMzA4NmJjMGE5MTQ0MCBsZWdhY3ktdHJ1bmsKKzUxMDgyIDc1YmY3NzM2N2RhMzIwYjEyNTkzOTg5ZmU5MWViZWNmN2ViYjI0ZDkgbGVnYWN5LXRydW5rCis1MTA4MyA4Mjk2ZmI5NmNjMTg0ZjY0YTAwN2ZhNDVmNTZmODBlYjc3OTcxODBkIHJlbGVhc2UyNC1tYWludAorNTEwODQgNTVmODMwMTgzNTMyNmU2Y2JhYmZmMmE4Zjg3NzczMzljMGEyMDE1NyBsZWdhY3ktdHJ1bmsKKzUxMDg1IDg0OTc0YzY3NjkwMzFkMGY1N2FmY2U1ODE4N2Y3MjViN2I4NDQwYWEgbGVnYWN5LXRydW5rCis1MTA4NyA3N2NmMThiOGIxY2UxMzMwMGRjOWQxZjg3NGM1OGYwNDc3M2ViMzRjIGxlZ2FjeS10cnVuaworNTExMDQgMTAwNGExNmIwZjA5MWJiNzgzZjI4NDE5NTE5MTJiMGZiZWZhN2NhNCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxMTA5IGViMjNkMDk2ZDY5NDY4OTUxOTQ3NmY2YWNjY2E4YWI2ZDEyMDIzZmUgbGVnYWN5LXRydW5rCis1MTExMCBhOWM3NDJkNmM4ODhlZTMzNTMxYmFkYmZlZTlmZDRkNzMxNzFmMTJjIGxlZ2FjeS10cnVuaworNTExMTEgMDIzODE2NmYwN2I3MDM1ZGM2NmEyNDBmMTIzYjY3NWQ2ZDUzYWQzMyBsZWdhY3ktdHJ1bmsKKzUxMTEyIDQwNTg1ZmIzODdiYmFhODIzOTkwNGE2MjdhM2FmNTQ5ZGU1ZTg2YTUgbGVnYWN5LXRydW5rCis1MTExMyA0NjVhMDc4ZDJjYTZiN2EzNmQ4OTEzZjM0NDgwMzI2Mjg0ZjdmZjMyIGxlZ2FjeS10cnVuaworNTExMTQgYWEwY2M3NTUwNzRlYjg5MTAxYzM2ZDVhNTAwNGE3YzA0NjQzNmE3YiBsZWdhY3ktdHJ1bmsKKzUxMTE1IGVmYTgwNjMzMzA5ZGE4NzQ1YzIzZGJjYzZjNzYzMTNiYTRjNDk3MTMgbGVnYWN5LXRydW5rCis1MTExNiA2NTY3YzMyYWI4ODE1NTBlMGUwYzE1MjNiMmQwYmRlNTlkMzQyNmVkIGxlZ2FjeS10cnVuaworNTExMTcgOTk5YTQ5MTRkNTNjYjQxZjdkZGZmMzQwYmU5MGVmNjE1YzZjMzNlZiByZWxlYXNlMjQtbWFpbnQKKzUxMTE4IGZmNGIxNTc4MDM5NjgzM2Y1YTk0ZGU5YTQ0NDBjNzQ5MDBlZmU3N2IgbGVnYWN5LXRydW5rCis1MTExOSA5Y2I0NTY1ZTYwY2FiNDMyMTFhYzQ1YmIwZGU1NGJhMDJkNWFmOGIwIGxlZ2FjeS10cnVuaworNTExMjMgZmU0NGRjYmUxM2YyYzI3N2JhYmIyYTQ5NjBlZGEyMGU4MDYyNjVlMSBsZWdhY3ktdHJ1bmsKKzUxMTI2IDNiZmVmM2RiMzJiMzkyYTRmNjBiMGYxZjM5Y2Y1YjJkNWE4YjEzMzUgbGVnYWN5LXRydW5rCis1MTEyNyA0MDQxNWRmNWJhOWRlNWViNjc0Yzc0ZGY3YWEzYjI2YTRlNDhkODRhIHJlbGVhc2UyNC1tYWludAorNTExMjggYjkwZmU0YWUzMDA4MzQ2MmQ3OWZlMjg2ZWFmNGFhOWYzYmRhYjhhMCBsZWdhY3ktdHJ1bmsKKzUxMTI5IDUwMDlkZTUwNGY5MjQwMjFhNDAzMmVkOTY3ZThmNGZlNjVlOTg1YmEgbGVnYWN5LXRydW5rCis1MTEzMCAyMTRlNGE0Mzg0ZjEyYjEyZjQyYWFiYTQ1MThkMDdjOTUyM2FlOTg5IHJlbGVhc2UyNC1tYWludAorNTExMzEgMmU2MzBiMmQ1YjQ0NjBlZDlhNjYyYzhhMDhkMzEwOTE4OTA0ZmUxNSBsZWdhY3ktdHJ1bmsKKzUxMTMyIDcyYTNmNzIzZWZkMTY5NzIwNDk2YjdhMjM1MzRjNWNlM2Y3MGIzOTcgcmVsZWFzZTI0LW1haW50Cis1MTEzMyBmYzEwMWNjMzU0YTc5ZmI2NTBkYTViMTU5YjI4N2E5M2I4MGIxZjljIGxlZ2FjeS10cnVuaworNTExMzQgYjdlYWIxYzE4ZTlkMzdiYzdlMzgzZmUxODJiN2QxMzE4OGU2OTAyNSBsZWdhY3ktdHJ1bmsKKzUxMTM1IDU5NDMyOTZhNTE4MjE1ZDcwMDM2N2I1MjJjYWZmMWUwYjAzZTc3MzAgcmVsZWFzZTI0LW1haW50Cis1MTEzNiBiNTAyNjhmNDZmZmY5YTc2MGYzMDVlOTE3NGVkODRkY2I3ZDhkMjAyIHJlbGVhc2UyNC1tYWludAorNTExMzcgMzM1MDQ3NGYzNDMzYzk5ZDJkZTBiZjQwMTJlMGY3ZTBmNjgwNDc3MyBsZWdhY3ktdHJ1bmsKKzUxMTM4IGY1YTdmNGRkOTNlMGQ4NzVkOGE2MzViNDJhZTc2NWE5ZDA3ODUxZGUgbGVnYWN5LXRydW5rCis1MTEzOSA5OTc3ODhkZTg2NjczMzBjZTlmMjJhMTZlOTA3OWYxYzRmMDNlYTgzIGxlZ2FjeS10cnVuaworNTExNDAgMjQ4NWVmNGM1ZDQ5ZDJiZTA5YjYzMzJmNmJmZjUyNzc3ZDM2MTA2MCBsZWdhY3ktdHJ1bmsKKzUxMTQxIDBiYzZjZmI2YjVmYjIxYWQxNTY4Y2ViODM0ZGZjNGMwMmRlNDk0MWEgcmVsZWFzZTI0LW1haW50Cis1MTE0NyA5ZWQ1NjBiMzUxMzk4MGQ0YzY0M2NiZTUzN2RkNWUwOWQ4OTI4ODU5IGxlZ2FjeS10cnVuaworNTExNDggMjkwYzU4MmEyMmQwNDM5ODIzNjE2ODU4ZjdjOTVlYjlkNzg1YzcyNSBsZWdhY3ktdHJ1bmsKKzUxMTQ5IGI2N2Y1MjJkNzZkNzhkODAwMjllNTU4YzczMzZlOTFmZjQ4ZTk2ODQgbGVnYWN5LXRydW5rCis1MTE1MCAxNGM3Njk0ODk1M2Q1YzVmN2M2NGQyMGUzMWE0YTM2MmM5NzFiNjEzIGxlZ2FjeS10cnVuaworNTExNTEgMmYwMzE2NDhlNTg3ODQ0OTdlZTI1YWEyMTkxMWIwM2U2ZGMyZDE3NiBsZWdhY3ktdHJ1bmsKKzUxMTUyIGQxNTQyNjBmNDZlOGY3ZDc3N2Q5ZWRhNGRmMzM1MjQ1YmVjMGE2NDIgcmVsZWFzZTI0LW1haW50Cis1MTE1MyA1NmMwZTJmNTk2ZTc2ZjFkMzBmMzNmMDFiZGMzNjI5MThjMGMwYTI4IGxlZ2FjeS10cnVuaworNTExNTQgOGRjNmJlM2UxMWUwMGE3Yzc2ZTFlYjg1NTM4MjJhZTk2MGI4YjQwZSByZWxlYXNlMjQtbWFpbnQKKzUxMTU1IGRlNDk3YzQxZTlhZGVmYzhiNmQ0NGNkMTFjZWVmMDVhOTYzNjFmYzcgbGVnYWN5LXRydW5rCis1MTE1NiA1NjkxNjI0MjY5YTVhNjA2NzZmYmE1YzVmNjg0MDBjMTdmMmRmYWRiIGxlZ2FjeS10cnVuaworNTExNTggOWQwODlhYTU4ZTJmNGI1Y2U0Y2FkOWM0ZjUxZDM5MWMzYzJhYjY1YyBsZWdhY3ktdHJ1bmsKKzUxMTU5IDgwMjI5MjdjMTdhODQ2NDY4NWRlNTJmYjY0YWYwYjMyMzU0NWI5ODQgcmVsZWFzZTI0LW1haW50Cis1MTE2MCA1Yjk2OTJmNjYyOWY0MDdhZGU5NGM5Yjc4ODNlYWYwYzhmMDYwMWVmIGxlZ2FjeS10cnVuaworNTExNjggNmY3NzUxOGI2MzdkYjNiOGZmOWZlMDkxYjNlZjM5YjU3OTk2MDg2MyBsZWdhY3ktdHJ1bmsKKzUxMTY5IGI5NWI5ZjQxNTdhODIyMTMzMDEyMThmNTVkNGZkYjc2MzUwMjk4ZGUgbGVnYWN5LXRydW5rCis1MTE3MCA1YzNkNDkzODU4MTZkNzA2ZjdhMjJkOTdhNTA4ODhhZmI5YWNlYmU3IGxlZ2FjeS10cnVuaworNTExNzEgMTk5Mzg4YjQ2YzgzYTAwYmVkMmYxOGZmNmIxMGZmYzBiOTY0MmJlZiBsZWdhY3ktdHJ1bmsKKzUxMTcyIDlhODA4MWNmNGE3MGRhYjQ2YmEwZjEwNjMxMGNjMjE5MGNiYjlkMzcgbGVnYWN5LXRydW5rCis1MTE3MyAwZjNhZDViOTM2YTg1NzJiZmU3YzA3ZDhlMzc1Mzg2NzNmMjI4Nzg0IGxlZ2FjeS10cnVuaworNTExNzggNzRkMjNjZDA0NDIxMDRmZjk3NWI4NWUxYjc0ZjVlNGVhMjNkNmUyYiBsZWdhY3ktdHJ1bmsKKzUxMTgwIDdkNmIyZTA0ZTQzOTU0MDYwMGU5ODU5MGEyODMxYWQ4NTlmMjg4MTAgbGVnYWN5LXRydW5rCis1MTE4MSBmZWVlNjU4MjAxMWYxNzc2YTZlMWRlODk1ZmIzMmIzZWU5MGQ3Y2E1IGxlZ2FjeS10cnVuaworNTExODIgOTIyMmQwZGFhYjNjNmFlZGViMDFhOTQ3NTE0NzI1MjdmODYxMDU0YiBsZWdhY3ktdHJ1bmsKKzUxMTgzIDE1NmIyOGYwZjJkMzVhYzAwZTgyYzYzZDJhMTQwMTgyYzljN2VjNzYgbGVnYWN5LXRydW5rCis1MTE4NCBkZGVhNGQzN2M4M2NhNDUxYzMwNzljYWQ4NTVkMDRlNTg5YjgzMWU5IGxlZ2FjeS10cnVuaworNTExODUgYjhlMzdlMDI2OGYyY2FjMDQyZDkyZDE2MjAxNmE0M2MxMzhmNDg2MSBsZWdhY3ktdHJ1bmsKKzUxMTg2IDI2YTZiZWRkMTdlMjFkYjEwNjk3MzZkZTMyNTI1NjZjNTZkZTNjY2QgbGVnYWN5LXRydW5rCis1MTE4NyAzYzJiZjc5NTI2YmU4OTgxNGNkMDIxNzEwNDAzNDE4NzhiYmQzZjU4IGxlZ2FjeS10cnVuaworNTExODkgZDhmYTgxMGNmZDU0ZGZkOGYyN2VlYTNiYzIyYTE1MThkMDNiMDFjMCBsZWdhY3ktdHJ1bmsKKzUxMTkwIDlmMDg1MTZhNGQwYzllOTlkN2Y0YmQ0ZTQ3OTIyMTNlMjJhODgzYTEgbGVnYWN5LXRydW5rCis1MTE5MSBlYWQ0OGE4MjIyOTVjODNlMWYxZTgxNDFjNzliYmVhYWFjMjcwYzVjIGxlZ2FjeS10cnVuaworNTExOTIgZTU1ZjZkNzIyNDA0ZmE5MmIyYTQzYzcyZmYyMTMyN2Q3YTQ3MTRiMiBsZWdhY3ktdHJ1bmsKKzUxMTk0IDliMzI2MGQ4MzU1ODc5NWQxYTFkMzFkYjk1ODgxYjYyNjdlZWNlYWQgbGVnYWN5LXRydW5rCis1MTE5NSBkZTllMWE1ZGNhOTM2NjFhNzAxMGU3NzYwMTE4N2I3NjlkOTczYjk4IGxlZ2FjeS10cnVuaworNTExOTYgOGVkNjJkYjE5MDVjNGQzZTM4Yjc1YWY3MWI1ZDkxMzk1M2YxNzdmZSBsZWdhY3ktdHJ1bmsKKzUxMTk3IDJhY2E0ZjA0MDAxMmNlYjA4YWNmMDVjZTlhN2RjMmIzODY1MjM3MzkgbGVnYWN5LXRydW5rCis1MTE5OCBiZTEwN2IwNGMyNTI1YjZiODExMmEyMWJhNjU0MTJkZjMwMDAwNTA5IGxlZ2FjeS10cnVuaworNTExOTkgNmFhZjU1ZjRkN2EzYjZkMzVmZDkxMzcwNTNkMzk1YmFhODQyNDk1MSBsZWdhY3ktdHJ1bmsKKzUxMjAyIDZhYjRjMzlmZDdhMzgzZmQ5ZDk0MmZjZDhmOWI3YmU4ODQ1ODYwN2QgbGVnYWN5LXRydW5rCis1MTIwNCA4NjQxNzI1MTVlZTc2YTNiNDVkZjE0OGY2NjgyZTljMzkzMDNiOGY0IHJlbGVhc2UyNC1tYWludAorNTEyMDUgNDhmZDM4ODczNDYzNmRhMWFkMDIzYmU4ODRjMzQ0YWFhNjEzYzM0MiBsZWdhY3ktdHJ1bmsKKzUxMjA2IDEwODdkZjAwYTZlODdiOTFkNjY3ODcyNTJjZDVhNmJkZTAwZWFjMDEgbGVnYWN5LXRydW5rCis1MTIwNyBlNzc4NzU3ZDMzMzA3MjAxNDVlNzRmZGM1ZGIwM2UyYTk1ZmFhMDA1IHJlbGVhc2UyNC1tYWludAorNTEyMDggNzc5MGNkMGNhYmQwNGM5ZDExZDdlODU2ZmIzNjVlN2NjODA0ZWI5NCByZWxlYXNlMjQtbWFpbnQKKzUxMjExIDY1NGMzODBjZjhiOWYwNzkxNTZlMzIxMTFkMTYyYWQ4MDNjODkzMTkgcDN5aworNTEyMTIgZjY5YmUzYzZhMmQ0NjM2NDliYzU2ODQ2OTI4ODI5NDhhMDZjOTQ1NiBsZWdhY3ktdHJ1bmsKKzUxMjE1IGI5OTVlMjc2MGRhNDcyYzNiNTkwZDM2OTNiOGZkNjU2OTE0NzM0ZTIgbGVnYWN5LXRydW5rCis1MTIxOCBlMTFjYWFkN2UwMjlkYzkwYjhhN2QzYjg2OTRjODJkOTQ3NTFkODM0IGxlZ2FjeS10cnVuaworNTEyMTkgOWYzOTA4ODJhMmMzYTUxZTA4N2QxYzkxNThkOTIwODc4OTRjNmFlMCBsZWdhY3ktdHJ1bmsKKzUxMjIwIDcxYjBhYzgwYTEzNWUzZTJiYWNhMzYxMmIyMzFiNzZlNjljZWM3OTYgbGVnYWN5LXRydW5rCis1MTIyMSAyMTc5ZDlmMTQyNzgxNzNiZTk1ZGFiM2RlMGJhZWM3MDVlN2I3YjYzIGxlZ2FjeS10cnVuaworNTEyMjIgODQyYmQ2MTM0ZTlkMjFhMDEzZGE3ZjU5MTNjNWI2ZTU1ODgxMmJmYyBsZWdhY3ktdHJ1bmsKKzUxMjIzIGE4MGRmNTMzMDZmMGRjZmY3OWRjMThkMTk2YWJkYjg4NjM5N2RlYzcgbGVnYWN5LXRydW5rCis1MTIyNCA2ZDUzNmQ0M2MxYTA2NTRjNDY2NDE5OTM0MGVhZTNiNTNmMDFhNzBkIGxlZ2FjeS10cnVuaworNTEyMjUgODFjNmIwZWQzMTg4ZGRjYzI5ZDIxZTA3Y2Y2MzZkZjc0ZjIxNmQwOCBsZWdhY3ktdHJ1bmsKKzUxMjI2IDI3ZjliNGZlZTE0ZjdiNjgwOGM3YWYyNmEwNGZiMmJlZDljZjY3MWEgbGVnYWN5LXRydW5rCis1MTIyNyA5YTEyODhkODIwMGY4Y2IzY2UyMjBhNmYyZDc5ZDg4YWEyZDI3NjQyIGxlZ2FjeS10cnVuaworNTEyMjggZWQ2NTc2NWViNjc5YjUwMzMxNjRmMGI0Y2IxNDJhYjlhNTIwNjMwNiBsZWdhY3ktdHJ1bmsKKzUxMjI5IDZhOGYwMTY2MGEzYjJkZTRmMDhiYjIyYzUzYzYzMmI3MmJlMzQ4NjkgbGVnYWN5LXRydW5rCis1MTIzMCA4YjkxZmY2OThmNGZmMmYzZGY1NTZiZTUyMWQxMjAxYmQ2NGQ4YzhjIGxlZ2FjeS10cnVuaworNTEyMzEgZGViNzQ4ZjMzYzFkYjUyZWIwODRmMmJhZTNlYzNkMWNkYzRiOGQ3ZiBsZWdhY3ktdHJ1bmsKKzUxMjMyIGNlMTFjNmMxOTM5ZGI2ODRmMzA2N2VhNjQ0YjZkNDdiYzkxZTQ1ZGEgbGVnYWN5LXRydW5rCis1MTIzMyAxNTEwODY2YzkyMGViODJlNjI3NzNiNWIwOGI3NTFjMTg4MWMzZTUzIGxlZ2FjeS10cnVuaworNTEyMzQgMmRiYWQ1M2RlMmIxMjcxN2MwNzkwYmM2NDFiMDM0N2JiZmVmMWE1MSBsZWdhY3ktdHJ1bmsKKzUxMjM1IDY4YmVkNTM0ODQ1NDAyM2NjZWJiNDAyZjViMzcwNWNlODI5MzdhMWUgbGVnYWN5LXRydW5rCis1MTIzNiA2Y2FmZGM4MWNmZGU4Njk4ZTZiODNlNjgyZmEyNGEyNjk4ZjYyMWY4IGxlZ2FjeS10cnVuaworNTEyMzggNDhmMWRiYzU3ODQ1MDYxZmFhNTBhNWMyMzJlYzUzYWIxNjUyZTM2NCBsZWdhY3ktdHJ1bmsKKzUxMjQwIGVjZTk3Y2ZlNjA4MzdiMTc4NmVkZjkzNzJmOWUyZDljN2YyY2ExMGMgbGVnYWN5LXRydW5rCis1MTI0NSBjN2ZmMDJjMTU1OWZkODY2Y2MwODdhYWMwNjU4NDliMWNjYTAzZmJmIGxlZ2FjeS10cnVuaworNTEyNDYgM2JlNjYyNzMyM2I5ZDNhMDVlYTcwZTEzZDhmNmMxYTJhMjJlMWRlYiBsZWdhY3ktdHJ1bmsKKzUxMjQ3IDU3NDgyMTc2ZTEwMTE2NjNlM2ZjNTA5MjNjNDRiMzg4ZGQ4YmY5YjggbGVnYWN5LXRydW5rCis1MTI0OCA3MWJhYTA2NzY3ZGRjMjlmN2Q2OTExZmE5YzZlNTQ1ZmVhNzY3MGI5IGxlZ2FjeS10cnVuaworNTEyNTAgZGFlZGFhY2Y3ZTExMGEzY2QxYTIzNjY4OTAxNDliNzMyYjFjMWNjYyBsZWdhY3ktdHJ1bmsKKzUxMjUxIDUzMWIzNjRiYmMwZTBkODE1Y2ZlZWMyMmYwOWUyODE2M2M0N2QxOGUgbGVnYWN5LXRydW5rCis1MTI1MiA4MTU4YjRlMGM3YjliNWMzYjdkMWI5OTBhNzM0OWZmODdkMGQxZGZlIGxlZ2FjeS10cnVuaworNTEyNTMgYmM3NGFmYjhlNGVmNjFkNDhiZDhmMTlkYjU2NmZkNjI5YjhlNzI0MSBsZWdhY3ktdHJ1bmsKKzUxMjU0IDI0ZDJjYzMzMDAwY2IxODVmNTFlZjM1ZTNhZDRkMTNjN2YwODk2MjAgbGVnYWN5LXRydW5rCis1MTI1NSAyNDlhNTlhY2I2ZWZjZjAyMDRmMDk2OWU3NmY1NjU2ZDRiM2RiNGMxIGxlZ2FjeS10cnVuaworNTEyNTYgNzEyMzFiYzQ4NjIyZTM2ZGVlMzYwMTE3ZmMyMTI3OTVkNDA5NDNiYSBsZWdhY3ktdHJ1bmsKKzUxMjU4IDAzNTZkZDljYzI3NDM5NjE4NmM1ODUzYWRiYjc2ZTE3NmE0N2YwYzQgbGVnYWN5LXRydW5rCis1MTI1OSAzMTc2MDVmMmNmNmY5OWUxZDE2ZDViMDlkN2ZlZTY0Y2EyMjU0MjE5IGxlZ2FjeS10cnVuaworNTEyNjAgZDUyMzFlYzZkYWMzOTlkMzMwZDM5YjIzYTJiZDU3ODhiMWQ2MWZkNSByZWxlYXNlMjQtbWFpbnQKKzUxMjYxIGU3NzAxYjA1ZmQ5ZTIzZmQyNDA0NzRkZjk5MjVmNzA2NzIwNjRiZmMgbGVnYWN5LXRydW5rCis1MTI2MiBkZjk0NzhiZTA2Mjc5YTA0N2ExZGEzYTY1NTk3NmU1YWFkMjgyNDNmIGxlZ2FjeS10cnVuaworNTEyNjMgOGMxNmNiZWY3OTMyNjM1NzAyMGVhZWU2Y2RmMWY2MTExYjAyMTExNyBsZWdhY3ktdHJ1bmsKKzUxMjY0IGFiODUzOWMwN2IxYjNjNmU5MjgzYjVlOGU2NzkxZWExZmU2ZTNiYzkgbGVnYWN5LXRydW5rCis1MTI2NSBjMGE1OGE4NTVhYzBlMzgxMzZhNTg4ZTc1MTg2ZDljMzAwMTM0MDExIGxlZ2FjeS10cnVuaworNTEyNjYgNDIxODI2Yzk0MTA0ZjEzYWZmNzRjOTA3ZDE1ZThjZDU1ZjFmMzA5MyBsZWdhY3ktdHJ1bmsKKzUxMjc0IGE2YTZkZmYxNzkzNTZlMjk4MWZiNTUyZjM5MmU0NDRlYzUzNzQxNDEgbGVnYWN5LXRydW5rCis1MTI3NiA2MzViMDliMWY1NDJlMjkxNzUyOTc2ZTNkOTdmMTJlYzBiZmU2NmYyIGxlZ2FjeS10cnVuaworNTEyNzcgYTU1MzY5ZTIzZjA2OTRhNWU3OTMzZTIwMDBlYWEzZmI2Y2UxN2Q2MyBsZWdhY3ktdHJ1bmsKKzUxMjc4IDRlNWI4M2JhN2MyYTZhZjljYTAxYmNmODM1MzI1MGNiMTVlNjQ1ZjggbGVnYWN5LXRydW5rCis1MTI3OSA2NGZiNjhkY2E4OTY0OGI1OWQwMTYzNzE4MzFlYTgyMDMyMGI5NjM2IGxlZ2FjeS10cnVuaworNTEyODAgMjMxMmUxNzhiMzRkOTc5ODhjZmQ2ZTViZGQ2NTg0ZDg5YzgzZTFiMCBsZWdhY3ktdHJ1bmsKKzUxMjgxIDI1NGExODY5MzdhOWI0OTllOTcxODJlMzdjN2JlY2I0N2Q3OTNjY2UgbGVnYWN5LXRydW5rCis1MTI4MiAxNjBiODNjNzFkN2EwYWM5NjA3YjhjOWEwOTYzNjY0NTM1ODdhZTIxIGxlZ2FjeS10cnVuaworNTEyODMgYTk1MDkwMjgxMDMyMTIxYTAwMmU3NmY0MWE2YmE1N2FkYjcyMmJhZiBsZWdhY3ktdHJ1bmsKKzUxMjg0IDE0ZWM5Y2ZkOTc2MDBlMjYxNDY2NjQxMWZjM2FkNmI3ZjY1NjA2NzkgbGVnYWN5LXRydW5rCis1MTI4NSAzNTJmZmU3N2I3MWRkMGU3Y2E4ZjY2N2E5ZTZhMjA4NmRhYTNiMDYwIGxlZ2FjeS10cnVuaworNTEyODYgZWExZjhhMTFhNzJiOWEyYTAwMGEyNTQ0Zjg3YzExZjdjNmUzNDAxNSByZWxlYXNlMjQtbWFpbnQKKzUxMjg3IDlkNjRiZDc0ODMyMGFkYjQwYzdlMDNiYWI5MDRmYzA4NTRhYWYwOWIgbGVnYWN5LXRydW5rCis1MTI4OCBjZDY3ZTExMWUxYjg1YjdlMTVlYjFiZTRmNTlkMTk0NzMzOTZhMWM1IHJlbGVhc2UyNC1tYWludAorNTEyODkgMjA3ZTQ4N2Y0MjVkZmU0MWM2MTk5MDllNmFkOGRmMDllMTU1ZTkzNyBsZWdhY3ktdHJ1bmsKKzUxMjkwIGU4YzQ2Y2M5OWRmNWVkZDJiNTMyMzNhODgzMTQyZjk4ZjVkMmVlMzcgbGVnYWN5LXRydW5rCis1MTI5MSA3OTliY2YwY2NiZmQzMTNmZjU5NzI3YjZhYTk3Y2UwZTZhZGNiZjcwIGxlZ2FjeS10cnVuaworNTEyOTIgMTQ5ZGU3MjU2ODY0Y2Y5MjAwZDk3MjMyYjZmMjNkYzlkNWQ3OGQ5MSBsZWdhY3ktdHJ1bmsKKzUxMjkzIDg0Njc4ZjA3NTBiODQ0ODA0NzA4ZTRmMGQ3NGZkMjFkNWRkNGE5YzkgbGVnYWN5LXRydW5rCis1MTI5NSBlOTBlN2U3NjhjYjM1MjdhYmYyMGI0YjExODdkNDg2MWY3NzQxZjQ4IGxlZ2FjeS10cnVuaworNTEyOTYgZTZmYzRmOTlhNjFiZTE5YWFiN2EzZWJjMWQ5MmMxYmYzMThlYWU5ZCBsZWdhY3ktdHJ1bmsKKzUxMjk4IDRmOTBjMWQ1MzBkOTVjOWM5MDY4Mjk4ZDA5YjIxYzhhNjhjZTVlYjcgbGVnYWN5LXRydW5rCis1MTMwMCA2NGIzMzA2MGVmMDlkNWE0NzBmNDI2NzBhNTM2NzEzMDA2YzlkNGNkIGxlZ2FjeS10cnVuaworNTEzMDEgYmY1YmFlMWYwMGFkNDg1ZTQzMjBlMjk1NTg0M2FhMTA4NjgxYmIwYiBiY2Fubm9uLW9iamNhcAorNTEzMDIgYmU5MGZhN2FhY2RhNzljYzczZGRkZGZjM2FiYTIwOTg5ZTI5Mzc1ZiBiY2Fubm9uLW9iamNhcAorNTEzMDMgOTVmNjU2NjkwYTAwMDg4OWNiNzQ0NGI4YWM3YzM0ODAxMGY3MWFlNyBsZWdhY3ktdHJ1bmsKKzUxMzA0IDIwN2U3N2MxNDMzMDY0YjZjY2UyNzFlYTA2YTY2NDM4Mzk5NjZmMWQgbGVnYWN5LXRydW5rCis1MTMwNSA5MDk3ZWNmZWIzNDUwYzAzYjVhMGE0ODVmM2I5ZTdjNmEwNjcyMGYxIGxlZ2FjeS10cnVuaworNTEzMDYgNmU3YjNkZDU4Zjk4NzEwM2JjNzVjZjE2NDAwOTdlNzJlNjM0NmE0YyBsZWdhY3ktdHJ1bmsKKzUxMzA3IDkxMzMwNzZjMGJmOTcxZTk2YmVkYzJlNGU4OTU4ZGY5M2NiOTI2NmUgbGVnYWN5LXRydW5rCis1MTMwOCAyZGZlMWM2MjQzOTdhNGRhMTYyNjY5NDUyODAxYTFhNjg5OTFlOTA4IGxlZ2FjeS10cnVuaworNTEzMDkgMzcxYjljZDNhZjE1NjAyOTVkMDNkYzU3ZWU0NGUyMmM4NWZhNmZhMSBsZWdhY3ktdHJ1bmsKKzUxMzEwIDc5OGJlY2FiMzkwM2M0YWM5ZWU0MjkwOWJhNzc5ODY0NzkxOWY4N2QgbGVnYWN5LXRydW5rCis1MTMxMSAyNGNhYjIyOGIwMzk2YjcwMDI1Y2I5NzM5NDI0ZDc2NDMwMzQzZDlkIGxlZ2FjeS10cnVuaworNTEzMTIgYjUwNzNiNDhjOTI1ZjFhOTc2MzAzNjIzYjQ3ZTI0MmVmNzM4MTM1YSBsZWdhY3ktdHJ1bmsKKzUxMzEzIGRhNGJlMDQwOGI2MjU3Mjk2YTY4NzRkZmU1ZTEyYjVmZjM0YTE3M2QgbGVnYWN5LXRydW5rCis1MTMxNCBhMjdiZDUwZWIwZmQ4N2IwY2UzOTA2YmZiNGU1OTA2MjdkOGZkY2IxIGxlZ2FjeS10cnVuaworNTEzMTUgYzhjZTM5OTQ1ZGY1Zjg3NTc5YjBiNjljMjMzZTBkYWQwZDQzZGE2YSBsZWdhY3ktdHJ1bmsKKzUxMzE2IGE1ZDBmOWZiY2JmNGI4MjQyNWQwMjUwY2QwNTkzZWYxZjc5YWY1NDQgbGVnYWN5LXRydW5rCis1MTMxNyBkMjNiNjY3ZjA0ZGEyYmUxZTZjMTc3NmRlYWVhMjE1NGFhNTY0Y2MyIGxlZ2FjeS10cnVuaworNTEzMTggNGJiMzRlYjQ4NzM2NzQ3MGQ0Y2YyNmQyZTkyMzdhYTVlOWI5YzVlZSBsZWdhY3ktdHJ1bmsKKzUxMzE5IDEzNTg0MDRkNmRkOWVlOTQ1MmZjYzI5NDhmYzFhOWI3YzNhY2FkZjMgbGVnYWN5LXRydW5rCis1MTMyMCBmZmU3ZDNhYjM1YTgzNzBkMTYzMDAzMjIyMmM0OTA0Mjc3YjI5NjhhIGxlZ2FjeS10cnVuaworNTEzMjEgZmU4MGJiMTAyYWI2ZDUxZTBmOTRlZmUwNWVlNDUyMTI4NDFhNmY4YyBsZWdhY3ktdHJ1bmsKKzUxMzIyIGQ4MjIxODU1NDg5NzFhYjdmODA4MzMzMjYxNTM4NzkwM2I3N2FmNTEgbGVnYWN5LXRydW5rCis1MTMyNCBlZGQ4M2YxNjI0NTNhYTMwODg4YTY1N2U0MzJiYTZmMjQwZmE3OTU5IGxlZ2FjeS10cnVuaworNTEzMjggYWFmZTFhZDczZWQ3NDliZmZhNjNmZWE4YmIyYzdmNWEyMjhmM2Y0NyBsZWdhY3ktdHJ1bmsKKzUxMzI5IGQ5NjYwZjUxYjA1NmI3NGY3NTRiZWRhMmQxNzU0NDU4ZmE3MzM3OGMgbGVnYWN5LXRydW5rCis1MTMzMCBhNmFmZTBlZGE3MTFkOTk2YjcyNmE1NDhjMDU3OTNlYzU1YjZlOGViIGxlZ2FjeS10cnVuaworNTEzMzMgMmRjNjRkNTcwZThkN2E0NDk4YWI4NTAxMDhjODU3MDljMjc2ZGY5MyByZWxlYXNlMjUtbWFpbnQKKzUxMzM0IGEzNThhZjIxYTU0YTliZDM5ZjUwNmQ3MjkxZGYzNDM4NzlkMTdhODAgcmVsZWFzZTI1LW1haW50Cis1MTMzNSA4ZTg4ZWNiZDQwOGJmYzljZDBiZmQzNTYxZDc2ZGRlZmE0ZjdmZjQ4IHAzeWsKKzUxMzM2IDhmNWI5OTgyYmViYTA0OGI0YmU1NmIwNmI4N2RiZjEzZGYzYzY4OTggcDN5aworNTEzMzcgZTRhNjQyOWMxMjE0ZWRlOTExY2FhNTVmMGQ4MDYwMDU4NDY5YzAzZiBwM3lrCis1MTMzOCA4NDFlMGM4NmUwMGU0MjNmODE3MDkyZTJmZjVjZGFmYTRiODEwMTQxIHAzeWsKKzUxMzM5IGNiNjczZWQ1MDdhNzk0MDI1YmViNGEzN2FmODdkZWYxNmRkMzgwYWMgcDN5aworNTEzNDAgYjJmZTM2YmFjM2ExNjQ0ZTI1YmQ1ZDg2YThkMTQxNTdkNTczMmJhZSByZWxlYXNlMjUtbWFpbnQKKzUxMzQxIDFhNjg5YmUyNzMyOTczMjRjM2ZhM2RkNWQwYjgwOTlmYTUwY2U5ZTYgcmVsZWFzZTI1LW1haW50Cis1MTM0MiBlZGIxNjIxMDA5NzliODc5MjdiZGZlZDE1OGNlYmI5NjQ0ZTA1N2JlIGxlZ2FjeS10cnVuaworNTEzNDMgOWJjMGJjMGFkMWJmZTZjOTA5NmU3YjFjYzJmNDc4Y2E5YTIyYzU4MyBwM3lrCis1MTM0NCAwMTAzNDAxOGU4YjJmODBkOGZkNWM4Mjk4OGQyMzgyYWEzZGZiMzBiIHAzeWsKKzUxMzQ1IDRhYmI0NmRkMmI2MDdmOWVhYTlkYWQ1Njc2ZWFjODkzNzY2OTQ0N2QgcDN5aworNTEzNDYgMWVkZGUyMzQ5Zjc4NDY2ZmJjMDA5YzQxNzIzODY3M2MyODI4N2RlYiBwM3lrCis1MTM0NyBmNjgyNjllZDQ2MWU1ZDYyMDk4YTMyOTUxN2Y1ODk4ZTk1NTYwZDU0IHAzeWsKKzUxMzQ4IDY3ZTQ1NzA0YzA3ZWE1YTA0YWYwZTdiMWJkYTAyZGQ4MTdkZTEzMTMgcDN5aworNTEzNDkgMzAyMmNkNWUwMTAwNDRjM2JhZDFkNmI4MDAwYTAxNTNjNjNlYjRlZiBwM3lrCis1MTM1MCA1YjZmODIxMDFjNDA1YjE3NTZkYzgwMmZmMjIxNTM5NGJlYTgwZjE2IHAzeWsKKzUxMzUxIGE4YmIxYWQ3ZmM2ZmFkYzkxNDRmNjE3MjJjMDg2MDYxMDE4YjMyZDcgcDN5aworNTEzNTIgMGExZjg3YTg1NWIzZTYxNWI3Yzk4MjJhZWUwYzI0NzEwZGM2NjBkMSBwM3lrCis1MTM1MyBmYTI3NTg0NTg2NmM4YTdkNWU1ZTliMGZlNzIzNDc0YTUwNTVkOWU5IHJlbGVhc2UyNS1tYWludAorNTEzNTQgYTg3MzIwZWJkMGU2Njg5NjRiZThhNzQ1Mzk1MzBmODZiNDAxN2ZhNiBsZWdhY3ktdHJ1bmsKKzUxMzU1IDFmZjkzYmE0MDQ1MDg4MzcwZGRmMDRkNGYyM2UzZjYzYzk5YWIzNjQgbGVnYWN5LXRydW5rCis1MTM1NiAzMWI5YTRiNDI1MjhlY2ZhNTFmYTJjZDZiNTBlYjYwYWFiOGY1YzcwIGxlZ2FjeS10cnVuaworNTEzNTcgZGY4N2I2MDU2N2NlYjUyNGFiOWEyMzM0ZTY5MGIzZGNmZTNmZWI4ZCBsZWdhY3ktdHJ1bmsKKzUxMzU4IDA0NWUyMGZmODllYmI3MDkzMjE0MTI3YzY1ZDczMjMwODQwYjA5MDkgbGVnYWN5LXRydW5rCis1MTM1OSA4OWI3MzBiNzE0MzRmOWNlYTQ4NDhhYmM4NjZjYzhlODNjOGNkNGZiIGxlZ2FjeS10cnVuaworNTEzNjAgMjEwYzViNTU3NWNiNWNhMDFkMWEwMmM5YjY5NGRjYmViNmFhYWM3NCBsZWdhY3ktdHJ1bmsKKzUxMzYyIGI1ZDRmM2E3M2RlMDRmNzBlNzVhNTNkZjE3ODRiODdlOWRhMmU1NmIgbGVnYWN5LXRydW5rCis1MTM2MyBmM2RlZTYyNWZjNDgzYTYzZGZlNWY0N2Q1Mzg4MzgyMjAyY2NhYmYxIHJlbGVhc2UyNC1tYWludAorNTEzNjQgNGM2Zjc3YjU2NDUyZDZhNDhjZjJhZWNiNTkwM2NmZDg0N2RmNmQ0MCBsZWdhY3ktdHJ1bmsKKzUxMzY1IGNhNzdkZTM1ZGI2MjBhMTc1MDdkZDczOTBjMzkxOGFhODc2MjdjNDMgcmVsZWFzZTI1LW1haW50Cis1MTM2NiA3ZmI1NmFhZjUyYmJjZWE1NWMyM2E1ZjcxOTMwMTg4NTJkMzc5MzZlIGxlZ2FjeS10cnVuaworNTEzNjcgYjg3ZmUxMWZiN2UyOGFlMjkzZWY4YmRhNmVmOGQ3MTUyODg3ZTUxYiBsZWdhY3ktdHJ1bmsKKzUxMzY4IDBhZDdlODVjOGMwNGU4YTY3ZDcxNTY3ZTY3YzllN2EzNDkzOGZiN2UgbGVnYWN5LXRydW5rCis1MTM2OSA3OWJiZmExZGJkMWJiMGM2YTFmYmFmZjA3MTIwYjU5NDg3MjExMjk3IHJlbGVhc2UyNC1tYWludAorNTEzNzAgMWFjMTRkNDNlYzY0NDFlNmNiMjIwYjMxOGYyOTg2NzM5ODA4Nzg5ZCByZWxlYXNlMjUtbWFpbnQKKzUxMzc2IGM0ZTdiNDA3MGYwNzU0N2ZkYjEzNGQ1ZTZjYjk1M2IzMjY5Y2U4YWMgcmVsZWFzZTI1LW1haW50Cis1MTM3NyBlN2E1YjI4N2YyN2MxYTllZTkwMWQ1MjExMTg4NDU2YTI2ODVlNDAyIHJlbGVhc2UyNC1tYWludAorNTEzNzggY2JiNDM1YzVjMjFjNjcwM2YxOTcwMzhlNzQ3ZjUxNDg5N2Q5YzM4YSBsZWdhY3ktdHJ1bmsKKzUxMzc5IGRlNGVmMTc3Mjc4YmZmODU3ZjcxMTYzZDQ3MGUxZDdmMDU4MWJlOWQgbGVnYWN5LXRydW5rCis1MTM4OCAyNTUxZWI1NjcxYTQxZDhhNDZiNjgxM2ZmMTQ4OTNhOTQxOTE5ODk4IHAzeWsKKzUxMzkwIDYzMjM3ZmNlZmQ5OWVlNGY2NzU3MjJkNWMyNzEwNjU5YWE1ZGQ4Y2IgcDN5aworNTEzOTEgY2ZiMzg0NzNjYTExOTlkOTgzMmIzYWViYzIzNTRhZDYxMTRhYWEwOCBiY2Fubm9uLW9iamNhcAorNTEzOTIgODQ1MmQ1ZWU3YjAzYmMyZWMwNjQ5MDA2NjA4YmQxNDZjMDk0NTc3NCBiY2Fubm9uLW9iamNhcAorNTEzOTMgNGM2NzRhMDdiMjNjMzYwZmY5YjE4OGM4MWFmYWZmZWZhYjVjOWViMiBiY2Fubm9uLW9iamNhcAorNTEzOTQgZDIzYjdjYjE3MDBiNTBlZGFiZDQ1ZDBhZGVmODNhYWY0MzYyMTUwMyBwM3lrCis1MTM5NSAwYjVkOGVhZTNlY2EwNjFiN2ViZGU2MmJhM2E4MDNkNmJmMzg3Y2U3IHAzeWsKKzUxMzk2IGM1NTdkNDQ3NGYwZjRmMDdmOWIwZWMyYWU3OWQ1ODJjMmQ4Njk1ZTYgcDN5aworNTEzOTcgM2ViZjU2MDRmNjMyMGU1YjFlZTJhMzY0NDI5NTM5MWQxZGNkY2I2ZCByZWxlYXNlMjUtbWFpbnQKKzUxMzk4IGI4OGI2OWY5N2FjYzAwNjFhYWNkM2E2OGIyMDk2ZGIzNmQ1ZDEyZWYgcmVsZWFzZTI1LW1haW50Cis1MTM5OSA3Y2JjYjIyYzhiOGIyYzhhNGI2MzYwYTA1YTJiNzQ5MzQwNzBhNWUwIHJlbGVhc2UyNS1tYWludAorNTE0MDAgYTc0NWEyYmQ0OGFmMGI5NGIxZmNjZWQwNDVmNDhmMDA1NjhhYmU4YyBsZWdhY3ktdHJ1bmsKKzUxNDAxIDBhZjRmZmFiYTAzYzMyYjRjYTRjMDRmYTljMmUzMjRjN2Q0NmFlNmQgbGVnYWN5LXRydW5rCis1MTQwMiA4N2QxNTNmZmJiOThiNWE4M2I1ZTY4Y2YyMjBlN2JkNzZmMjBhNTIzIGxlZ2FjeS10cnVuaworNTE0MDMgYjBlMGE1ZWI5MDlmMTk3OWJhMTE0NTAxOGRjOTUzYjhkMzFkODZiOSBsZWdhY3ktdHJ1bmsKKzUxNDA0IDJjNDAyNjc2OTk0NTQ5OTA3Y2Y4MWM1ZjIyZDgyYTQ5YTNiOTM4YjYgbGVnYWN5LXRydW5rCis1MTQwNSBiYmVmMmVjZGVlMzNlYmI4MTkwMzMyMDk1ZjhkYTk0N2QzYzA2MzQ3IHJlbGVhc2UyNC1tYWludAorNTE0MDYgYmRlZTQ1ODg4YjY0MGM5NTYxZWQzYjhlNGVjZGM2YjAzZjhkNGYyMiBwM3lrCis1MTQwNyBkMjQwY2U1Njk2ZjlmZThmODU2MWE1NWZmOGQxM2RkMjgxNjI2MzlhIHAzeWsKKzUxNDA4IDEyYzQyZmY5OTQzN2JmNzJhZGU2NzkyNjcwYmQwYjhlYmRlMTg3MmIgcDN5aworNTE0MDkgODI3MTdiODQ4ODhlMDQ2YWFiOWNlMzEwOTNmNDVmMDVmMzQzNTRhNSBwM3lrCis1MTQxMCAwZjEzNWFmZmFiZjJjN2FmNDE2NzM2YzFiMTI0ODdiYWJlZDQ0NzllIHAzeWsKKzUxNDEyIDU5OWFiYzMxZjc3MGFkNzVhNzZjZjc2Yjk3N2U1NTJjYmVhZjlmMWMgcDN5aworNTE0MTMgOTYzNDk2Y2JmM2QzYzBmMWNjZTNmMGZmZGU2MmY0NTAwNjEwM2E2YyBwM3lrCis1MTQxNiA0NDYyMmViNThhMjViNmFmMDYxODgwZmNjMDU3YTFkNDU4NTE5Yjc1IGxlZ2FjeS10cnVuaworNTE0MTcgNWIyYzFiNjVkMzVlZWE5OGUwNGE0MTg4M2ZlMDIxYjExOGRmYzRhZSByZWxlYXNlMjUtbWFpbnQKKzUxNDE4IGMzMzE5MmUyYzI1YjE5NGZkY2I4NzJhYTQwZDFkZjJiOGFiYTY1NGQgcDN5aworNTE0MTkgMTU0ZjI1NmZmZjQyOTk1ZDlkYTEzZDc2NzRiMzMxYzRhYjI4ZjEyMSBwM3lrCis1MTQyMCAyMmMyZTI1ZWQwZTQwYmVjY2NkNmRhMWYwMjkxOGEyYTFhZWNlM2MwIHAzeWsKKzUxNDI4IDVlMTQzOTQ0NzcwYjQxY2IyNGVkMmMxOWQ5ZTU1ZTE5NjQwYTM4OTMgbGVnYWN5LXRydW5rCis1MTQyOSBlZWRhMjcwNDEzMGVmNTBiMDczZDllOGI2MDg0NDFlYmVkODUyMWY1IGxlZ2FjeS10cnVuaworNTE0MzAgNzNhMzI5MWM1OGRjMWVlYjRlYzY1MzVmNjJmYTQwZWM2YjAyMzJlNyBwM3lrCis1MTQzMSA0MGJiZTY2OWIwODllZmE3MGQ2YTMxZDVjMTU0ZDQ1OTM5ZDdjYTI0IHAzeWsKKzUxNDMyIDhkZDU3YzUzY2NmNmIyOTNjMzRkZGY4MWNkMzM4MGMwNWVjYzg5YTggbGVnYWN5LXRydW5rCis1MTQzMyBkYjQyZTg3Yzk3NzZmNzAyNDczYWE0M2I2ZThkNDQ4NGJiOTA3ZjVmIGxlZ2FjeS10cnVuaworNTE0MzQgMmZmZGVlMWMzODg0NGFiMDEyYjZmOTIzZDQ1NTI0Y2VjYzdiZDc3YSBsZWdhY3ktdHJ1bmsKKzUxNDM1IDZmMTAyMDc0MzA3NzRmMTM4NmMwNmQ2NjdiNTU0ZGU5OTVlODA4NjEgcDN5aworNTE0MzYgOGRkNzE1N2QyYTIyYTE5MTAyZTU0M2JiYmQ1MjU5NjFiMWZhNWFiNyByZWxlYXNlMjUtbWFpbnQKKzUxNDM3IGNmNDJhNDRjNTQ5ZWRhMDEzOWJhZDQ1ZTllMjJkNTE4MTg0YTEwMjMgcmVsZWFzZTI1LW1haW50Cis1MTQzOCAzNjc0ZjIwYWM3ODFmNjU3YzdmYmU2Y2U0MzQ0NWI3ZmJjNDUxNGU2IHAzeWsKKzUxNDM5IDE3ZjFkZjE1NTNjOWFlNDI1ZDJhYmMzMTU5NGMyNTEzMmZhODA4MDAgbGVnYWN5LXRydW5rCis1MTQ0MCA1MTFkYjcxYjVjMTQ4OWEzODVhYjYxYjJkNDY3Y2QyYzI5YzE2ZGU2IHAzeWsKKzUxNDQxIDUzOTE0ZDU0MGE2NzgwMTg2ZmM5N2FjNzFiYjI2ZDJjNWE4ZWNjMmYgcDN5aworNTE0NDMgOWRlZTgxZGNiOWI0MTliOWNhNzcxYWE0NGVkZTJiNWI2MGE5YzA3YyBsZWdhY3ktdHJ1bmsKKzUxNDQ0IDc4M2M1ZTI4MDNmOTU4MGZjODI3NmEwYWNhNzNlODg0NzU4NTI2NGYgcmVsZWFzZTI1LW1haW50Cis1MTQ0NSBjNDBmZTg2NTYzZmM4ODFjZWE5ZTIyMWMwZWFhZTFjMTVlYzkwNzEzIHAzeWsKKzUxNDQ2IGVkMGRiMGQ2Y2E5OTM4MWEyODg3Yzg4MzUzNDM0OGMzOTE1YjI5NzQgcDN5aworNTE0NDcgZTYxYjIyYmY3YWI0NzcyNTcwYzk3MWE4ZWZhM2UzNTMzNTMzNWEyZiBwM3lrCis1MTQ0OCAwMmJiZWVjMjcxNGYwNDkxYjA1MTU1NmQxMjZjNTgwNWU2NDBlNTc3IHJlbGVhc2UyNS1tYWludAorNTE0NDkgMzk4MjQ3NWM1MTQ0YmJjOTllMTk4MmI2Y2NjYTRkZTJmM2MwMjAwNSBwM3lrCis1MTQ1MCBlOGE2NWJiZDZhMjkyYzg3NDhlYjIwNDU2NjU2NTMzNjcyMDRkZTcyIGxlZ2FjeS10cnVuaworNTE0NTEgM2NiZWQxM2M0NjRkOWMxZGU0YzVlNDQ3Y2QzZTk2NzljYWY4ZTEwMCBwM3lrCis1MTQ1MiBlN2IxYTNkYjFmZTNjZGJjNzYwZTlkZjU3YmQxY2NmZjAzYTU5Nzk4IGludF91bmlmaWNhdGlvbgorNTE0NTQgYzZkOWZhODFmMjBmZGNkMDJjMzQzYWE2MjAyNGUwMTVkNTEzYzYyMCBwM3lrCis1MTQ1NSBmMThkNzc5YzdjZWI2NzJlZTM3ZTc4M2ZkMWZlYTRhY2VkYWRlY2U4IHAzeWsKKzUxNDU2IDVmZGRkZGQ1MTZjYjdjYzNjYThiZGU2Mzg2M2NlNDM4ZmRkZjJmNmEgbGVnYWN5LXRydW5rCis1MTQ1NyBjOGZmNDM4MDJmMzE0YzdkNmU4ZDI4YmQzOTM3ZjQwYTM3YmJhMDgyIHAzeWsKKzUxNDU5IGU4NmMwYjI5YjRhMjZhNDJlNGNlNjQ2OWYyY2EzZTliZmNjMzA5NWEgcDN5aworNTE0NjAgNzE5YzVkYjdiZmFkNDVhN2ZhOTE3ZDE1YmE1NjMzMWZhMDU1MzQ5NCByZWxlYXNlMjUtbWFpbnQKKzUxNDYxIDljYzZhNTQ4ZGVjNDk0M2VjMmRjNjI2NmIwNzMzM2JhYjg0MjU1MGEgbGVnYWN5LXRydW5rCis1MTQ2NiAyZjZiNDJhZWFkOTRmODFjZTJlNjBlM2YyYWNlZmU4ZjM0YTk4ZGJlIHJlbGVhc2UyNC1tYWludAorNTE0NzIgOGQ3MWY5YTZjMWMzYTJlYWYzMjc4MTNiYWRmMjBlOTRiMDZiYTVkOCBwM3lrCis1MTQ3MyBkNjVlNmRjZmRjYjU3ZWJkMDEwOTM5ZmJlMTk4YTlhNGNhZDMwMWNjIGxlZ2FjeS10cnVuaworNTE0NzQgOWYyNzgwMDkwMjZkYjM4MzRiNWUyZjA2MmQ0NzBmZTdhNDg1ZjJiNiByZWxlYXNlMjUtbWFpbnQKKzUxNDc2IDVmZjY5NmYyYTdhNWFhMjU3Nzc2MTE1ZDQ2MTM3NzI5N2U3MDMyOGQgaW50X3VuaWZpY2F0aW9uCis1MTQ3NyA0NGRhM2QyOTcxMDc5YmJmN2IxNjkxNGM0N2FkYTg1MGRiOWU1YzdhIGludF91bmlmaWNhdGlvbgorNTE0NzggZDkxNTg1YjJjZGMxMDA3OTc4ZGJmYmJiMDU0NWExZGNlMzNiZmY2MyBwM3lrCis1MTQ4MiAzZWE1Mjc1ODc0MTMxZTA4MmUxMjM0N2VkYjA1OTM4ZjU4MmNlMzhhIHAzeWstbm9zbGljZQorNTE0ODYgZjBmNDk3YTA1MDRjY2Y1MjVmMjJiZWZkNDY4MDA5NjE5ZWRhNjdjZiBwM3lrLW5vc2xpY2UKKzUxNDg5IGY4YTkwZDE4MjVjZTAwMmI4MTFkMTU0YjQ0YzdlOGY5NDE4ODVlMWEgbGVnYWN5LXRydW5rCis1MTQ5MCA1M2RmM2VmZjk0ZTNlNjE4MmVlOGE3ZGJhOGFlODkzZGM0NjRjZDViIHAzeWstbm9zbGljZQorNTE0OTIgMTg0ZjdiMTZkMjAzNmY2YzRlNDU2ZDQ5MTc5MjUxOTM5MjBlMTdjMSBpbnRfdW5pZmljYXRpb24KKzUxNDk0IGE1ZjM0M2Y3MjQ3MTM1ZmExODNlODUyY2EzZTI5MmQ3M2M1N2UzZjAgcDN5ay1ub3NsaWNlCis1MTQ5NSBjZTVlNDVlNGM1ZDA2OWNkYTBmNDMzZDM4ZWQwOTc4ODhlM2RlOTI4IGludF91bmlmaWNhdGlvbgorNTE0OTcgYTU5YmJmZDgwOGQ5NzI3MDg2YTFhMGFkYTM4YjhhZTI2ZTVhMjFmMSBsZWdhY3ktdHJ1bmsKKzUxNDk5IGU2ZTFiNDAzODI3ZTVlNTc5NDRlZWQ4YmRmOTM4MGE1ZjIzZTMyYTYgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTUwMCA4NzgyY2MwZmI1ZTBmZWMwZThhYzdkZmQ4ZmJmY2FmMTdhM2ZlNjkwIGludF91bmlmaWNhdGlvbgorNTE1MDUgYWM3ZjM5M2ZkMjliMzQyZjAzNjE5MDEzOWZjYmJiNTRkMzcyM2YwNCBpbnRfdW5pZmljYXRpb24KKzUxNTA2IGQxNzQzYjA4MjczNDcxNDRhZmUzODQ1ZGQxY2RiMmJmYTJmNDE5NDcgaW50X3VuaWZpY2F0aW9uCis1MTUwNyBiY2M0MTQzNzhmMzIwN2NjZDUyZDI0OGI0MzI5ZjhjNTFjM2E0OTVjIGludF91bmlmaWNhdGlvbgorNTE1MDggNmQ0MzVkYThiNzliMzE4NmFjMDRkNjE3ZTlkYzVlZDk0ZDlkNjA0OSBpbnRfdW5pZmljYXRpb24KKzUxNTA5IGYyOGJlNWRiNTAwNWJhOTJiZDgzZTQ2YmEzMWY1ZmVmZjRlNjUzMjUgaW50X3VuaWZpY2F0aW9uCis1MTUxMSAwNTBmYjlhMDk3Y2Q3Y2YwY2UwODEwOGZjNDY0MDE4Y2ZhNzgxNmU0IGludF91bmlmaWNhdGlvbgorNTE1MTMgNDcyY2E3MDA2ZjcwZjJhM2NhZTRhMDk2MmJmMzQ1OWJkMWE1M2RlZCBwM3lrCis1MTUxNSA0NDliYTBlZmI2YmQyNzkxMWQ5YTViYmRlOTc1M2IyMjgyNWUwODhiIGxlZ2FjeS10cnVuaworNTE1MjIgZTI4MDMxYWZlZmY1ZjJmYThiYmM1NjBhZTQ4MmQxYTI5NTJmY2YyYyBpbnRfdW5pZmljYXRpb24KKzUxNTI1IGQ1ZmE0YWZkNjYyMGU2ZTY3ZTAxYzU1YjQzMDhiOThlZmVmNjU0N2IgbGVnYWN5LXRydW5rCis1MTUyNiA1Y2NlMDI4ODc0YmM3OGUxMjMwYTk0YjQyNzc3ZDU0YjM0OTFiNTMxIGxlZ2FjeS10cnVuaworNTE1MjcgZjQ1NDUxODE5NDkxYjQ2NWVjYTc2MTQ4OTVmMDg1OWYzNWIwOGE0YSBsZWdhY3ktdHJ1bmsKKzUxNTI4IGFhYTc0NWZjN2I3NjdlOTcxMDFlN2UwMjgxOWJkNzBhNjkyYzc5N2IgaW50X3VuaWZpY2F0aW9uCis1MTUzMCA5ODExODFkMmE0ZmUwNzU1N2QzZTg3MjYyMzI4ZTE5MGU1MTNkZDhiIGxlZ2FjeS10cnVuaworNTE1MzEgM2RkNjFmZmQwNDllMTU3ZTI2Mjk2NDQ2ZjMyZTU1MmUxZDIwNWUyYiBwM3lrCis1MTUzMyAxM2Q1ZTVmMGU5OTNhYzdhNjRjMzdjOTIzZDQ3YTQ0Zjk4ZjJkNzg5IHAzeWsKKzUxNTM1IDhiOWVjMzQ0YmVkMmU1NzBmZDZlMmE0ODIyYWM1Y2YxMDZhOTE5MWQgcDN5aworNTE1MzYgY2UyM2Q4NjczMmIwYjg5YWYyMDQ5ZmRiYWViMDg5ODY0YzE2YTVlOCBwM3lrCis1MTUzNyBkY2VlYTQxZjRhNmRhZWEyMTI4NWRlODg3M2RiMTg5OWQyMzVhYTJhIHAzeWsKKzUxNTM4IGVmZTNmMmMwZGE1ZThlZDUyYjYyNThkYjhiYjNiMDE1ZGRhNmM2ZmUgcDN5aworNTE1MzkgNzQ5NmY5NDc1NGZmMGViMTgyZDY2YWZiODRlNjNhMjhkNjBiNTQ0MCBwM3lrCis1MTU0MCA2OWY2MWY5MGM0ZmMwOGE1NTY0ODgwNzYwZjlmMGE1ODZmZTJjMmY3IHAzeWsKKzUxNTU2IDFhMGY0NDdlNjBhOGFmYjM2NzJlYzAwMzZkMzBkODVmNzQ0NDU3M2IgaW50X3VuaWZpY2F0aW9uCis1MTU2MSAxY2Y1Mjg1YzhhYjk0N2Y1ODVhNWQzZGVkMjU3NGYzM2NlZmYxZDgyIHAzeWsKKzUxNTYyIDUxY2RjMzk4ZTBiMDYzZTg2NWM4MzA1MzgzOGEyZDc3NjAzODFjMmUgaW50X3VuaWZpY2F0aW9uCis1MTU2MyAzMTdkY2M1OTBmZmQ4YTI2YjY3ODlhYTkyOGZhNDdlZWNjYTZjYjdlIGludF91bmlmaWNhdGlvbgorNTE1NjQgZTRkZWVhOTM4ZGVmMDgyYWZkZWQ3MDg2ZmEzNmIyYmQ1YmNjYjMxYSBwM3lrCis1MTU2NSBhODhiYzNiYWQ2NTFiM2FmYWI2OGVjY2Q0MTc1YmRlMzRjZjUwNTdjIGxlZ2FjeS10cnVuaworNTE1NjYgYWRiZmQ4ZDU4NTFjYzYyYjU4YjAxMzJlYzIzNDRjOTUxY2EzYmU4ZCByZWxlYXNlMjQtbWFpbnQKKzUxNTY3IDI4MGM2ZGIzMWM1YTNkMjAzMmYwYTkzZTZjYzVkOWQ1NjIyNmZjMjIgcDN5aworNTE1NjggOTM0OGVhNjNiMDJkZmRlYzAzNzJmOWM2ZjZjZGE0YWRiNjUxZWQ3YSBwM3lrLW5vc2xpY2UKKzUxNTY5IDA4MDA1YmE2Y2ViOTMwZGM3MzdmNGZiMTJhMmVmN2RiYTFkYTIwMGYgcDN5aworNTE1NzAgNTIzZTZjY2U0MTg3MTUwZGQ5YTI3YjQxYTVlZjdmOWI1NzI2YWZkYiBwM3lrLW5vc2xpY2UKKzUxNTcxIDdlZDVjZTg5ZjI2YWU3YzQ5NWFmYWU1N2U3ODgzNjE4YTNkYTUzNDcgcDN5ay1ub3NsaWNlCis1MTU3MiBlYmFkNTljNzIzM2UzYTgwNWE2OWFjMzkzZDRjODE3NzViZmJiYjk5IHAzeWsKKzUxNTczIDdiYzQxOTJhNTI3OGM1OGJjYTk1Y2ZlZDU0MGYzYTM3Nzc3MDVhNjAgaW50X3VuaWZpY2F0aW9uCis1MTU3NCA4NDMzNTc4OGQ5Y2IyMTI2MmI3NTdmNDIxZjEwMTA1ZGNhNGZhMTMyIGludF91bmlmaWNhdGlvbgorNTE1NzUgZTVlYzFhZGIwNjFmNWFiNTgzZDI2MWFhNzZjOGU3NzNiMWY5M2I1OCBwM3lrLW5vc2xpY2UKKzUxNTc2IGJmNDJjODFkYjgwNmVmMjEyZjI1YTBhOTBlZGViNTBjOGY3NGIyNTAgcDN5ay1ub3NsaWNlCis1MTU3NyBhNTA0OGM4ZDhmMzMzMmFiN2Q0NDZhY2RhODAwOGI4YzUxYTI2MTk0IHAzeWsKKzUxNTc4IGEyNDNhNTBkYTIzYWUyZWY1MTBiNmNiZDBlMzk1ZWU3YzVhZTRmMzggcDN5aworNTE1NzkgZjllNzU2MGZlMDBkMjE4OTg5NjM1ZjA3NWE1NjIyOWFiMzdiYzRlMCBwM3lrLW5vc2xpY2UKKzUxNTgwIDc2YTlhNTEzMWFhZWM5NjM1NGE5MjdhNjhhZDkzMDhhZGFmMWU5M2UgbGVnYWN5LXRydW5rCis1MTU4MSA0NGFmNGIzN2Q1ZmY0MGEyZTdjY2VlZGYxYTk1NGEyMzU3ZGM0NDgzIHJlbGVhc2UyNS1tYWludAorNTE1ODIgMjZkMjk1ZTc5YWU4NzE2MzM3MTg4NGQxYWU0N2ZkYWU2MjFlMzBjNyBwM3lrCis1MTU4MyBlNjg0Zjk3YWUzZmFmYjE0ODBhMDg1MTJkYWNmZjVjMzkwYWY5MGZmIHAzeWsKKzUxNTg0IGYxNmE1ODNjNWIwOTA0NWQ4YTJkM2I0MzQ3N2QzODk2OWIyZjAxMzAgcDN5aworNTE1ODUgNGEzOGNkMWExNjA2MWIxZjNlMjA1Y2JlNmNiYTk3MWFhOThiOGY1NyBwM3lrCis1MTU4NyBmNTFlZGJjZDVjYzAwMDhiMDMzYTEzNTI1ZWU4YzRhNTBjZjc1NmEyIHAzeWsKKzUxNTg5IDkyY2YzOTc0ZDMyZmJjZWU3NjE5YTNhMDNhNWJiNjFkNjZiNzkzY2QgbGVnYWN5LXRydW5rCis1MTU5MCBlZGVjNzk2MmFmMjg3ZThjMGZhZTU2ZWFjMTY0OWVkMTJjODM3ZTlkIHAzeWsKKzUxNTkxIGUwNzZjY2E0ZDlkN2EwYzljYzNjZjliNGVmNTM0NTE2OGEzZjRhYjggcDN5aworNTE1OTIgZGJiNTk1NGZkZGNjY2IwMzk3NzUzN2RmNGI2MDY0OTliMTk4MTNjNiBwM3lrCis1MTU5MyBmMDc4ZTdlNGI5YTE1MDYyMjEzOWFjZjY3OTIxZGMxMTIwNDNmMTg3IHAzeWsKKzUxNTk0IGZmNjkzYTg2MWI3MDRmZGUxNzUwZWM5ZGRmMjE3ODNhZDc5MTQ1ZmMgcDN5aworNTE1OTUgZjgxMTVmNjg2ZTQwMTFjNjhjMTQyYTNmNzczMDgxYWJhY2EzNmUwMyBwM3lrCis1MTU5NiA2OTI3YWNiZmEwMWI0N2ZhYmE4NDQyYzIwMGYyNzY4NTA4MzU4YzRmIHAzeWsKKzUxNTk3IDRlNWM5NGQwMzY0OTNkZjcwY2QyZjQ2OTAwYmM1ZWZjODc2OWU5OTAgcDN5aworNTE1OTggZWIyZjcwZmRiZjMyNDBiOTlkMjYwNTA2YWVlMmFhZmEzOWRmNDA4ZSBwM3lrCis1MTU5OSA3ODU2NGUyNjlkMjMwYjJmNTM3NzdlMzNiYjcyODE5NDdlMjMzNWQ3IHAzeWsKKzUxNjAwIGY4N2EzZTYxODUzZDcyYjFkMTMzOTkyZjk5MWUzOTdiMzFhYWM4ZTggcDN5aworNTE2MDQgM2JmYzhiYjRlNzI2ZjBhNzM2YzljNTAyY2I4YThhMzVhOTNlYzk2OSBsZWdhY3ktdHJ1bmsKKzUxNjA1IGNhMmIyY2MyMzA3ZTQ0MTNmYTJiZmY1YjZhYWIwOTI3MzkwN2ZjNzkgbGVnYWN5LXRydW5rCis1MTYwNiBmNDk3NjUwYTE0OTA2ZjI3NjM4ZGZjMzMwZGIxYWIzMDVlNmQzZmVhIGxlZ2FjeS10cnVuaworNTE2MDggOTE2YWU2MzZhODNlNGI4MDAyYzA3MjRiYzY4YWM3NGQ4NDM4NjJlYyBsZWdhY3ktdHJ1bmsKKzUxNjE2IGJiMDczODA1ZmJhYmEwMTE1Mzc3NDg2OTI3YzI1ZDAxY2EyOWE2ZWEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYxNyA5MDQ5NTgyMTY4MTMxZDk4OWZhNWMyZWM2MWUzNmE3YzBiMGI3NTdiIGxlZ2FjeS10cnVuaworNTE2MTggNTU0Mjc1OTI1NGMwYjI4MGNkYmZlNjA1NWI1YTEzODI5NDkzMDIwZSBsZWdhY3ktdHJ1bmsKKzUxNjE5IDFiNzM1YTlkMjEwNzEwZGU0YjhjNGFhYjM0MDIwOTc2Y2FlOWQ0NzcgbGVnYWN5LXRydW5rCis1MTYyMCBhY2E3MDlmMzNhNmExNjhiMTk5ODY0NWRjMTdiNGY4OGMxZmQ3ODg0IHAzeWsKKzUxNjIxIDNkNzc5OGZlYWZjNTk4ZjllYmJkNzYxNGI5NTljMjE1OGM3NGQ5N2EgcDN5aworNTE2MjIgNmMxODRmYTU1MTcwYTI2ODZlMTkzMjMwZTdhZWE3NGU0ZDlhYjA2NSBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNjIzIGViZWIzNGFkZDRhNjJjZGNlNjU4OGQwNDkxZmM2OGE3Yjc0Mzg0NjQgcDN5aworNTE2MjQgZDBlZDdkYmFhZDU2ZTBhMGFlYTUyZmFiNjg5ZmQ4YmQ2ZGVhY2YwYiBsZWdhY3ktdHJ1bmsKKzUxNjI1IDBjYjllNTdlYzQwNjQ3OGM3ZGYzYjZlMDVhZDc1NzFiMjM2NDQ2MDQgcDN5aworNTE2MjYgYzRkOGMwNTQ2MTZjMDA5ZDBhYzAyNzk1M2Y4MWU1MzI5ZWRlNmExNyBwM3lrCis1MTYyNyBjMDkzNjMzYmViZWNjZmUwNGU5NDgzMjViNjE2MGM0Y2ZjYjFjMWRjIHAzeWsKKzUxNjI5IDU0MGM5NTkyNzI5ZTc0ZDgyYWQzMzFmNjc0M2VkNDk1MThhYzJhNzEgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTYzMSBkMGI4M2M0NjMwYzA5MjRkZjY2MTA2MzU0M2YzYzU0NzhjOGMzNWFjIHAzeWsKKzUxNjMyIGRhM2E5ZjQwMjg4NjA2NThhYjc5YzZkZTM2YjMzNjZiOTlhMTQ3MmIgcDN5aworNTE2MzMgNGY3NmY2M2EzMmYzNmJhYWYxNzE3OWFhNmNiZTk0ZjJmYjEyZjMzZiBwM3lrCis1MTYzNCBkMTRmMTBhNGQ5ZDQ2NjBkY2UxM2M4NzRiNTlhNjIxMzUxZDE1ZWRlIHAzeWsKKzUxNjM1IDA1YWM5YzQ5MjhhNDhmMTI5NGNiOWVkZmM5ODExNmQ3MTY1MGVhZTggYmNhbm5vbi1vYmpjYXAKKzUxNjM2IDZlMTk4YzY1NWVlYWFjZjM1NTkwNzUxNzJkYjQ4M2ZmNjIzYjlkZGIgYmNhbm5vbi1vYmpjYXAKKzUxNjM2IDkwYThlZTZjM2E4Njc2Y2M1Yjk0M2IyYjFkZWJjM2NhMGYxN2JhZjEgYmNhbm5vbi1zYW5kYm94aW5nCis1MTYzNyBiNTYzYjEyZTRjMDAzNjM5MmM0ZGI4MTUyOGU4OTBhYzZkOGJiYTM1IGJjYW5ub24tb2JqY2FwCis1MTYzOCBmZWYwMmRiYTliNWYzMjY4NzFlNjI3NTQ1YmM4NmYxZDJlNmNiMDMwIGJjYW5ub24tb2JqY2FwCis1MTYzOSBlYzQ4MDU3YTM0YjYwMThmNTdiYmY0ZjQ5NzQ2NTIwMzU1ZjI5NzM0IHAzeWsKKzUxNjQwIDA3ZWI4MDI2NGY2MTUxMWRlZjU3MjhkZjVjNmE3NTdlZDY4ZDliZDYgcDN5aworNTE2NDEgZjk3NDg5MGM2Y2QyYTdjNTJkMzAwN2QxZDZjYjMxNjhkNGNmMTFhZiBwM3lrCis1MTY0MiAyMThiNmU5MDBhOGQ0NDI1YmQ5ZDkyYTU4MjA1YWUzODgzM2M3NzZmIGxlZ2FjeS10cnVuaworNTE2NDMgNzU5MTIyODE1MWQ3MDJlYzUzM2JmYmFiYjhhMzgzNWU2YjliMDlhMSBwM3lrCis1MTY0NSA4OTNhZGQ1NTQ1NDE5NjcwODAwZWIxMTc2YjhkYjRiY2ZmZDM1MDA3IHAzeWsKKzUxNjQ2IGFhNTk0NjZlYmQ5YzE2MTYxYzUxYzExNDAwNDc0MTFkZjQxMzIxZjkgcDN5aworNTE2NDcgNzU0YTcyOWU5N2FmNWFjNjQ4NWE1ZmE1OGVlNGE4OWJkZDlkNDJmMCBsZWdhY3ktdHJ1bmsKKzUxNjQ4IGYwYjhmNzExODVmNTVkNmZkOGNjNTVlMmFlOTk5MTcwNzk0NzFhNTYgcDN5aworNTE2NTAgNDE2MTA3YTM1MTg1M2Q4ZWIzM2Q1ZmE0ZmM5NjE1MzM5NWI3OGIwZSBiY2Fubm9uLW9iamNhcAorNTE2NTEgMTZkNDg2YzdkYTgyNDVjMzU2MGZjNDNlOTk5ZDZhZWI5YjVjZjI1YSBiY2Fubm9uLW9iamNhcAorNTE2NTIgOGY3MzIxYWI4ZjQwZjczNzc2MmFjMDMyMDU4ZWUzMWM1OGUzNzIxMyBiY2Fubm9uLW9iamNhcAorNTE2NTMgNGQyM2U5YTEyNzEwMzg1NWQ4MzM3OWI0MDFjYzE3ZjYxZGRmM2RmZiBiY2Fubm9uLW9iamNhcAorNTE2NTUgZjEwZmVkYmU2YzEzOTYxYjhmYjYzYjA5NTYxNzU0ODAwNzVmMDdjYiBiY2Fubm9uLW9iamNhcAorNTE2NTYgNWIwMmViNWY2NWYxYmZmNmE0NWYwODg2ZGQ0NDgxOGE3ZmM1MWM4ZCBiY2Fubm9uLW9iamNhcAorNTE2NTcgMzU1NDk2MmQ4YjIxZDdlNTY1Njk1YWI4OGQzMmMwZDMxOWMyNjMzYSBiY2Fubm9uLW9iamNhcAorNTE2NjMgZTg1ZDViMjBlYTYwZWQ0MTgxMjZiYjc3YTBkNTcwZjg5MGQ1ZTViNCBsZWdhY3ktdHJ1bmsKKzUxNjY0IGE4Mzk1N2M5MWZkYjliYjc3MTcwNzBmOWIwNzJiNTE3YTc2MzVmYTUgbGVnYWN5LXRydW5rCis1MTY2NSAxZjE3MDU3MDU4OWVhNWZiNTAzNjAzNjM5MWJiMTMzZTk0ODBjMDIyIGxlZ2FjeS10cnVuaworNTE2NjcgNjBjMTE5MzQ3MDllYzc0Mjc4NGEzZjJhZDIwMGFjZTFhZmE4NWE2MiBiY2Fubm9uLW9iamNhcAorNTE2NjggYmNjYzkxNTgwOGQ4MDFmZmFhOGE1MjhiZWYzZWM1Y2U0NzA1ZmVkZiBiY2Fubm9uLW9iamNhcAorNTE2NjkgZGQ1MTRhMTc3ODQ4YWU2ZTUxNWRkNjc0MTkwMTU2Y2YxMjRhY2UwMCBsZWdhY3ktdHJ1bmsKKzUxNjcwIDg5MTc2ZTY1YWRkMmM5ODViMDAzNWQ5MmQ2YjBkYTlhNWFiN2U3ZGEgcDN5aworNTE2NzEgNzIxYzM5NGViMGJhMzNlOTlkODAyOTU3OTA4NmNjYTM2OWUwNGUzYSBsZWdhY3ktdHJ1bmsKKzUxNjcyIDU2MjZiMmVlOGNlNGNiYzVjNDEzOGE1OTdjZjA2ZDE0OGNlY2Y2MDkgYmNhbm5vbi1vYmpjYXAKKzUxNjczIGFhNjQxZmIxNzY5OGVkMzI3NzkwMzkwZmNkMzVmOTFmNzkzYjEzZTMgYmNhbm5vbi1vYmpjYXAKKzUxNjc0IDgyMDgxYmE5YTVjNTA3YzA0OWFiNzY0MTg4YjVhMDk5MmNjODdjMDUgbGVnYWN5LXRydW5rCis1MTY3NSAxMWY3MDUzMDUxZmY5ZWFkZmNjZjVkNjY5OWM0MDY3YTIwNmYzODMyIHJlbGVhc2UyNS1tYWludAorNTE2NzYgNGE3OTA2ZDhkZTg2MTA3Y2ExMDBjMDZkNzMyMjI4MWNkZTRmOTMyOCBsZWdhY3ktdHJ1bmsKKzUxNjc3IDcxZWEyYmU3ZDkxMjZhOGJjYWFlM2JmNjk1OTUzMTdiZjNhYzkxNWIgbGVnYWN5LXRydW5rCis1MTY3OCAxODRjMWRiZjcxOTRlNDA0OGExYjJiODExNThkNWNmYjFjMTBhODNlIHJlbGVhc2UyNS1tYWludAorNTE2NzkgYmE4Mzc1NDVjYzJmYWYwNzhjM2M5ODQ3ZmI3ZmRiOTliNTM4OWViZSBiY2Fubm9uLW9iamNhcAorNTE2ODAgYTY2NmQ3NWYzZGZmYzM5MzRlNmNlNWQyNTM0ZGIyYWNlYzI4NDQ2NCBiY2Fubm9uLW9iamNhcAorNTE2ODEgZDE5ODZkMzY5ZmVmYjg4OWI3NTg4Y2NlZTkzZTY3NWJjOTYzYzZhOCBsZWdhY3ktdHJ1bmsKKzUxNjgyIDg0MThmMWI5MDkwZTg3ZWVhYTlkM2VmYTMxNTU3Mzk0OTNhZTRlZmMgcmVsZWFzZTI1LW1haW50Cis1MTY4MyBlOTA1Zjc4ZWFmY2E1NzIxYTY2MjFlYmY4M2M4YWQwM2YwNTc1YzQ0IGxlZ2FjeS10cnVuaworNTE2ODQgMTM1MmFkOWFmY2MwYjhkZjNkMjBhYTNiMjZkYjllMzE1NzgwMjE2MyBsZWdhY3ktdHJ1bmsKKzUxNjg1IDJmMDg2ZDU4Y2ExMGY3ZTExMTMxYzdkOGM5Y2QwNjI3MWQwMzA4ZjMgbGVnYWN5LXRydW5rCis1MTY4NiA4ZmUxNjg3MDMzNDhiNzRjOWFiYmUwOWY1NjhjNTVmNmZmNTYxZjJkIGxlZ2FjeS10cnVuaworNTE2ODggNzY5M2I2OTkzZGRhZjNmODAzMDE3Zjg4M2NiYTZlODg2NDc0ZmY5ZiBsZWdhY3ktdHJ1bmsKKzUxNjkwIDMxNGM0ZTdhMzZkM2VmM2M2M2Y5OTZkZWFlMjgxOTk5YWViYzVhMDIgbGVnYWN5LXRydW5rCis1MTY5MSAxZWM3ZWYwZjNiOGQwNGY0Y2JkMWQ0MTQ5Y2FhYzM5Y2Y5NTQxODhkIGxlZ2FjeS10cnVuaworNTE2OTIgMjExOTdjYmVkNTFkYWM4OGYzMWQ0NTdmNTVhYzQ1NGRhODQ2NWZmMCByZWxlYXNlMjUtbWFpbnQKKzUxNjkzIGFhOGZlZGY2YmIyNDhlZGRiM2ZkMWY3NGNjMzM1NzJhZDZiNDIzOWMgbGVnYWN5LXRydW5rCis1MTY5NCA4ODMyYjhjMmZjNDk5ZjQ3NjQ5NzE0Nzc5ZTk0OTEzZGYxN2MwMjBmIGxlZ2FjeS10cnVuaworNTE2OTUgNGNlYzQ1YmQ2NjYzOTgzZWUyZjc2YzQ5NjZkZWY5MTdjNmU3ZDQwNyByZWxlYXNlMjUtbWFpbnQKKzUxNjk2IDA2MzMwZDBiNDY0YWYyNTMzNWQ3MTE2ZDZkOTNiYWZhZGYzNmU0ZjQgcmVsZWFzZTI1LW1haW50Cis1MTY5NyBjYjY2NDJkZWQ0ZTc1ODEzMmY2ZDU5NTA1MDc2OGY2ZTM0MTE0MDVmIGxlZ2FjeS10cnVuaworNTE2OTggMTAxZTA0YTRmNDAzYWFlNWM1ZTc0MzdjNzFlNDIxNGRhY2E3MjY2ZCBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxNzAyIGM2ZmVmOTQ0YWQ5NWRlYWZkMmFmMDY4MDdlN2NjMjEyYTdmZWE5MjcgcmVsZWFzZTI1LW1haW50Cis1MTcwMyA1ODk5ODBjNzgwMjU0NjA4YWQzM2FiNDU0ZjlhZTRiNzExNzhkOWE4IHJlbGVhc2UyNS1tYWludAorNTE3MDQgY2ZiNzdmZmYwMjQwMjEwODJhZDgxMWFkMjI0YWY3MThkYzEyNjE4ZiBsZWdhY3ktdHJ1bmsKKzUxNzEwIGFiY2E0ZTYyNmNiNWY2YThiMjYyOTk2MDZjYWEzNjcyMTY1ODc3ZjEgcmVsZWFzZTI1LW1haW50Cis1MTcxMSBmNWU3OGFlOGVjMGNiOGVjY2YxZThjODNhNjQwNzNkMWFmMmUzOTFkIHJlbGVhc2UyNS1tYWludAorNTE3MTIgMDBkMmM5M2I4OGJmZWQ1N2FlYWUxYTI2MTdjYTEzYTdiYmE2NzBkMiByZWxlYXNlMjUtbWFpbnQKKzUxNzEzIGM2ZDQ0YTk3NDlkYjQ4NmI2NjgyNzhiYjM3MDUwOGQzMzlmNzhlOTIgcmVsZWFzZTI1LW1haW50Cis1MTcxNCA5Y2ExOWRiMTdmYWY3OTUwMDMxOWY1YWIwMjVjYjc3Mjg5YWI0NzYyIHJlbGVhc2UyNS1tYWludAorNTE3MTUgMjQ0YzczNGYxZDhkMWRiODBjZTdhZTY5MjgwYWE0OTQxODM3Yjk4ZiByZWxlYXNlMjQtbWFpbnQKKzUxNzE2IGUxYWE5YTI5ZWQxNTFmZmJkZjE2ZTQ0NzA2YjM2NmJhZTZkYjJmOTcgbGVnYWN5LXRydW5rCis1MTcxNyA5OTU3NDY3ZmFmNDdjM2NlMTZjN2ExYjNmMDE3ODljMGM3MTdjZDgzIGxlZ2FjeS10cnVuaworNTE3MTggZDFiNDk3ZWMxOTBhMWFiNmNlOTM0ZTNmNDFiYTgzMmU5OTg4NDM4YSByZWxlYXNlMjUtbWFpbnQKKzUxNzE5IGIzNTE0MzgyYzMyNzQ3Y2M4MTQxZTgxNzBkZDRhMTM2N2Q0N2IzYTUgbGVnYWN5LXRydW5rCis1MTcyMCAwOGNhNDc2ZjhhMzQyNGRjMjYzYTdlMjIyZWE4ZDhkMzRlNzIwMTY4IGxlZ2FjeS10cnVuaworNTE3MjEgOTdkM2VhYjhjZGEyZjkyMGI1MDQ3OWEwZTU4MzQ2NTdiNDg2MmM0NSBsZWdhY3ktdHJ1bmsKKzUxNzIyIDlkNDQ3OTIwNjNiYmZkZTljNjNmYjY5OWE4Zjg2MWM4MjI4YjJlMjYgcmVsZWFzZTI1LW1haW50Cis1MTcyMyA2MjdhMjFjY2YyNGZjNDAzYzhjYjc5YTY0NTM1NDYyOTc5OGMzNmY3IHJlbGVhc2UyNS1tYWludAorNTE3MjQgMzAwZmU1MDZhMGFhNDIwYjAzY2I2ZDIyZjBkNDA0ODhkNzBjZWQ3OSBsZWdhY3ktdHJ1bmsKKzUxNzI1IDgyNjM5YzA1NWE2ZmE4NDc1M2Y0MmJlNDVlNTMxZTA2Mjk3NDZkMjUgbGVnYWN5LXRydW5rCis1MTcyNyAxNTVjYjE1NTdiOTc1MGQ0OTExMWIxMGUzMTg5ZTc5MDIyODg1ZGJkIHJlbGVhc2UyNS1tYWludAorNTE3MjggNGM4NWNlNzA0MjZlMzlmNGFhMTkwZDE0NTE5YzRiMWVhODNmY2MyYSBsZWdhY3ktdHJ1bmsKKzUxNzI5IDhkY2I4ODJlYzNlMWFhYzdkMzM2YTQwYWE2NGVjNjY1NjFmYzNkZWMgbGVnYWN5LXRydW5rCis1MTczMCAzMzAwZDc0OTJmMWExM2NhNjA0YmZhYTNmZTI5N2E0ZjMzMzhkMGYzIHJlbGVhc2UyNS1tYWludAorNTE3MzEgYzU5MWQ5OTU0ZmIzOTMzMGMyMTM2YjIyNjYwOTA4ODRmYTY2MGEwYiBsZWdhY3ktdHJ1bmsKKzUxNzMyIDNkOTY4YjVmY2FmOWJlZTc4YzZjOGYwZDcwNjNkOTFiZDE2ZTAxYzkgbGVnYWN5LXRydW5rCis1MTczNCA2YTUxY2I4MDY4ZjVjZWVlNWEzMDAwNTZkNjhiZjc4MDBkZDM3NWM4IHJlbGVhc2UyNS1tYWludAorNTE3MzUgNWQ2ZTk2YTJmZTZlODZkZDVmOGY2YTEyMzIzOTlhMjZkZDE3OTZjNyByZWxlYXNlMjUtbWFpbnQKKzUxNzM2IDlmMGIzZjljNzBkYTFjNzIyZmI5YmQ1NDk2ZDQ5ODU5ZjVmNGYzZDkgcmVsZWFzZTI1LW1haW50Cis1MTczNyAxNTEwOTc4MWYwMTY4ZWJkODUxM2U0ZWM5MTZhZTI3ZGRmMjBjZjNhIGxlZ2FjeS10cnVuaworNTE3MzggZWUwYzc1N2M0OTkwYWJhYWIyMDQ5YTkzN2M2MmQwYmQxZDEyNmNiMiBsZWdhY3ktdHJ1bmsKKzUxNzQwIGRlZDdiNjkwYzMwNjNiMGM3YjM5YzQwNDczOWYwY2RhYzM2NDdlZTIgbGVnYWN5LXRydW5rCis1MTc0MSBjYTk1YmQ1NTllNzE2N2VmMTUwY2U1Yjk1YzJiNzhhY2JkZTk0NzlmIHJlbGVhc2UyNS1tYWludAorNTE3NDIgNmQ3YThiNWViNTUxZmM1MTk3MTM2YWU4MjJkOTI0ZTM3MTZkZTIzNyBsZWdhY3ktdHJ1bmsKKzUxNzQzIDhmYjU5Nzc4NGYxODU1MTEyNWQ0M2Q5YzBkYmEyMTNkNzhiMzIzZmUgcmVsZWFzZTI1LW1haW50Cis1MTc0NCA3MWFjNzk2YTAxOGM2MzE5OWViNjkzNmMzNGUwNTEwYzgwZjkzN2E4IGxlZ2FjeS10cnVuaworNTE3NDUgN2M1ZTI5MzYyODAzYjFmZjNhYjlkZmNlMWZhMTQyZGQ4NThlNWY0YSBsZWdhY3ktdHJ1bmsKKzUxNzQ2IGU4YjY4ZGY5MGI4NGVkNWNhNWU2MmEzMGFlMmEyOTIzMzZkYzE0NzggcmVsZWFzZTI1LW1haW50Cis1MTc0OCBhNTI0ODk5ODBiNWI0OTNhNWQ4OWM5OWQ3M2MxMjVhMjU2NjJiZWNlIGJjYW5ub24tb2JqY2FwCis1MTc1MSBlNDY2ZmZmZGM5YTkxYzUzYzZkODg0ZWZhMGJlZWU3YzQzODhlNTk5IGxlZ2FjeS10cnVuaworNTE3NTUgMWM0MjVhODkwZjZjY2EzMTU3OWRhMGFmZjU1NTRlODJiMWYwNThmZCBiY2Fubm9uLW9iamNhcAorNTE3NTYgYzljYzI5YmU3NTU4NzhjYjZhYjYwMDI4OGY2Yjc0NjY4N2NlYTQyNCBiY2Fubm9uLW9iamNhcAorNTE3NTcgNzZiOGE3NWRiZTZhM2Q3NGUzNGJiZjQwMjk4YjQ5NTcwYzNiMWQ2MiBiY2Fubm9uLW9iamNhcAorNTE3NTggNDY3YzcxNmUyZjgxOGJiNDA3MmFiZmZiNjVjMTMxNzIxYjRmOWI3NSBsZWdhY3ktdHJ1bmsKKzUxNzU5IDhhMjBjOTRkOWQ5OWUyMmI5NDEzMTU1ODk3NDFiYjExMGFmNWU5OTMgcmVsZWFzZTI1LW1haW50Cis1MTc2MCAyYTczMGZiNmYzNGI0MzFhNzViYzRiODdkMzUwMWIxYThhNTkyM2EyIGxlZ2FjeS10cnVuaworNTE3NjEgOWRlYjA4ZWY0YmExZGYzNTBlNTA2NmI0YjFmOGU3OTBiZjg0ZDY5MSByZWxlYXNlMjUtbWFpbnQKKzUxNzYyIDk4Y2Q3YjE2NjZmYjQ4Y2Y1MWYxZTJkMWYwZTYyZDA1ZDQ3ODM1MDggbGVnYWN5LXRydW5rCis1MTc2MyA2ZGNjNjQ4NzkzNDEzODFiYjEzZTY3NTJlYzBmMzE4MDU1ZjNhMTE5IHJlbGVhc2UyNC1tYWludAorNTE3NjQgYWU1YjhhOGI5MTFlMjlkOWMwYjMzNTFiNTJjNzBmMzY2NGQzZDkwMyByZWxlYXNlMjUtbWFpbnQKKzUxNzY1IDMwN2ExMWMwODViNDYxMGQ4NmVmOTIyZDIzZTM3ZjFiODk2MTEwNDEgbGVnYWN5LXRydW5rCis1MTc2NiA4Mzk0ZDJlOWJmZDY3YWY0ZWIwNDNmODJhYTk2ZTI4YzE2Zjk5YTQ4IHJlbGVhc2UyNS1tYWludAorNTE3NjcgYjhmYmQzMjI3NjBhOWJiMTVhMGEzM2YzMGUxYWI0MWEwZTBkYWE1MSBsZWdhY3ktdHJ1bmsKKzUxNzY5IGQ3MTlmYWI3OTY2Nzg3NmNkMTQ1NjVhNDI3ZDc2OTYwZmQyOGY1OWMgcmVsZWFzZTI1LW1haW50Cis1MTc3MCBjYjg4M2U3ZTBiN2UxNzJjZjdmMTQ1MWRmMDQ4OWNmNTdjYzliMjVjIGxlZ2FjeS10cnVuaworNTE3NzEgYzk0ZjM3MDU0ZjE5NzBmNmZjMTYyYjEyNTFlZWYyNTQwODU4ZTIzYyBwM3lrCis1MTc3MyA3YTBhZDExMGU5MWU3OTE2MzFkZjg4OWMxMmY1NWYwNzZiOThmM2JlIHAzeWsKKzUxNzc0IDNiNzVlZGNjNGE2ZjQ4N2RmYzdjYWVlMTFmN2JmYzU2NzRlNGYyNTEgcmVsZWFzZTI1LW1haW50Cis1MTc4NSBkY2UxN2I1YmQzODdjYTNiYTc3OGU1ZDFiOTc2NjRmZDQxOGJkNDRkIGxlZ2FjeS10cnVuaworNTE3ODYgODFiNDY3ZmU5MmVlNTA5NjRjNTI4ZmRlZTBmMDlkMzc1OTcxZThiNiByZWxlYXNlMjQtbWFpbnQKKzUxNzg3IDRhYTk4NDE0MWZlZmNmYjY3Yjk4NTc1ZTgyZDZiMGRlMTk3ZDc1YmUgcmVsZWFzZTI1LW1haW50Cis1MTc4OCAyNTI3YTQ4MzUwOTkyOTNiOWQ5MDJiNjU1ODU3OTcxYjkxYTI1OTM4IHJlbGVhc2UyNS1tYWludAorNTE3ODkgY2QzYjdmMjU2NDlkNGYzNzk0ZjAwMGI3YzBjNGZjZjE0MjBhMjExOSBsZWdhY3ktdHJ1bmsKKzUxNzkyIDU2ZTdkNjk1Mjk4NTE1NWNiZmY1ZjBkZWQ0NTk0YmRjYTI4NWVlODUgcDN5aworNTE3OTMgNWU1MDJkZTBjZWRhY2ZkNWVhYWY5M2U2NWM3MTBjZmYwODRmZWM5OSByZWxlYXNlMjUtbWFpbnQKKzUxNzk0IDZkNDdjOGJjMDUxMjcxYjQ5OTQ5MGU5YzdmNzgxZDFlZGM3MGVhYzAgcmVsZWFzZTI1LW1haW50Cis1MTc5NSA2ZTZiYWYxYWZiMTJjMDU2MDI2YThkZDc2ZmQ3MDM2NDJjZDY1NDZmIGJjYW5ub24tb2JqY2FwCis1MTc5NiA5NDIwNDU0OWI1MTYwOTNkNzNkOTU1MmQzNWQwMTE1ZTRiNDcwNTRmIGJjYW5ub24tb2JqY2FwCis1MTc5NyAzNjNlZjgwNGEwOTZmNTE4OWJiZjJjOWNhYTc5NmM0NGQxYjJlZWU4IGxlZ2FjeS10cnVuaworNTE3OTggZWYwZjQyYmYyYTA4NTM1MGM5MzkzYjAzMDVmMzY0YTIzNGE5NTgyOSBsZWdhY3ktdHJ1bmsKKzUxNzk5IGM2NDNiMDMxZDUyNmM4MzU3NWQxZTczMjM0NzhmYzAwZjFjNWZmZWIgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgwMCBlODM3MjJhYTc4ZGQ0NzUzMTQ3OWRjMjM1ZDlhMzVjOWY2MjE1Zjg3IHJlbGVhc2UyNC1tYWludAorNTE4MDMgMzhiYTk1MjQ3ODNhMWVhYmU4ZjY3N2MwMDdmNmNlNTc5N2M0YjA5MSBsZWdhY3ktdHJ1bmsKKzUxODA0IGNmOWQzYjM4MjUxZjkyYWQ2YmIwNmMzNDdhZjcyM2QxY2U2NjQ0MWYgcmVsZWFzZTI1LW1haW50Cis1MTgwNSAxZWViYjY0NzMxMGZiNWVjZmFjYzVkZWI3NWM2ZDUxZWJlMTczOTM0IGxlZ2FjeS10cnVuaworNTE4MTEgNDA1ODA0MTkyYTY4MjgyNWRmODM3MmVhZjNjZmY3YzhhMzJlN2RkZCByZWxlYXNlMjUtbWFpbnQKKzUxODEzIGMzYTM1M2EwNzE0NjhiNThhNzIxZjk4MzdjOTAxNTFiMDY4Y2JlYTcgcmVsZWFzZTI0LW1haW50Cis1MTgxNCA0MWMxZTU0M2I5ZTk2OTc2MTQ1ZDUyMjVkYzg1MTVlN2MyMmVmZTliIGxlZ2FjeS10cnVuaworNTE4MTUgNGU4MTk3NGY3ZTE0MDNjNzRhNzRlZjY2OWM1MTlkNGJmOWU1NTcwZiBsZWdhY3ktdHJ1bmsKKzUxODE2IGQ5NjczYjYyY2UzNWQ5ZDBkM2JmMzBhNjJiZDA0ZWY3N2NjNjUxOGUgbGVnYWN5LXRydW5rCis1MTgxOCA0MzRhZmM3MjhmNmY3NGFmOTA1MDMxNGRiMTIxODZlNmVhMDM4MzU2IGJjYW5ub24tb2JqY2FwCis1MTgxOSBhMDY1YjU1ZTFmYjFkMDZmMDZkZDU1ZTdmZmU5MzM4MmRjMmQyNjkxIGxlZ2FjeS10cnVuaworNTE4MjAgZDVjNmZlYTI1MmYwNDg4MjY1ZTc3ZTgyY2ZhNGZlNDFhMzg4ZDk0ZiBsZWdhY3ktdHJ1bmsKKzUxODIxIGVjNmZkOWNlYmRhMTg1ODdiNjA2ZDY1YTE2YmY0NmQxYTBiOGYxMDAgYmNhbm5vbi1vYmpjYXAKKzUxODIyIDcwMTA4YzYzYzZlNTBlODM3ZDY5Y2RhNmY2MDc0NzBhMWM5MGRkYzMgaG94d29ydGgtc3RkbGliX2xvZ2dpbmctc29jCis1MTgyMyAzMjM5ZjkzY2Y0ZDIzZWQ2OWZjODgxNzI5NGMyODJlMDE3NGVmY2E0IGhveHdvcnRoLXN0ZGxpYl9sb2dnaW5nLXNvYworNTE4MjQgMjY1M2Y4MzM1ODc3OTM4N2QxZGQ0MTFmZjY3NjA1OWUxZGFmOTJjNiBob3h3b3J0aC1zdGRsaWJfbG9nZ2luZy1zb2MKKzUxODI1IDg5MWUzMzJjZDJkNmEyNjljMGNhMmIxZDQ5MDMwM2MyZmMxYjExM2YgcmVsZWFzZTI1LW1haW50Cis1MTgyNiAwMjk4Y2M2YzI5Y2Q2ZWNkYWNkNTRlYzI0ZTExNzAwNjFlOGMzZmEwIHJlbGVhc2UyNS1tYWludAorNTE4MjcgYzAzMTRjODkzNmU1MTE2ZDNiYmJiMmY3ZGE1ZTAwYzY2NmI5YzFiZiBsZWdhY3ktdHJ1bmsKKzUxODI4IGQ0ZTUzZTcwY2Q3ODI3NGQwNTM4NjNjOGY1NmJhYTU2MGEyYjVlMmQgbGVnYWN5LXRydW5rCis1MTgyOSA3YmUzMGNiZmM5YjI4M2FhMzg4ZTA3NGEwOGRmZmNiNDczYjJmZGQxIGxlZ2FjeS10cnVuaworNTE4MzAgNTI3YTNkMDA1MmM5MDExMjFiNThiYWFiOTYwOGVjZWMzODFiZWRiNCBsZWdhY3ktdHJ1bmsKKzUxODMxIDZhODNiMjc0MGZjN2NjZGEwM2Q5NjEwZTNjZDBiODk0MjkzMzkxYzkgcmVsZWFzZTI1LW1haW50Cis1MTgzMiA0MDczNWQ1ZjhhY2RiZTc3ODgxZGY5Y2ViZDIxNmZhN2E4NTllZWFjIGxlZ2FjeS10cnVuaworNTE4MzMgYjUyNzU4ODJhM2UwZDRiMGNjNDMxNDdiMzMzZWIzODc0MjZhOTA3OCBsZWdhY3ktdHJ1bmsKKzUxODM0IGE0YTIxNGJkZjhlYWMwZWEwZTljMzhkMWEyYzg5NDc0YWQ1YzhiNDcgcmVsZWFzZTI1LW1haW50Cis1MTgzNSA2ZjZlNTVmZDliNzkxYzJhN2RjYWQ4ODU2MTc1MWU3MTJhZjM1MTBiIGxlZ2FjeS10cnVuaworNTE4MzYgMGViM2YwZjU0YTI2NzRmZWY2ODBhYjUyOTFhZGUxYjVmYjk2ZWFiOSByZWxlYXNlMjUtbWFpbnQKKzUxODM3IGMyZmQ5NzhkZjM5MjI0MjVmNWZlODc5MWRkNDlkYTU1ZDA5MzMwN2YgbGVnYWN5LXRydW5rCis1MTgzOCA5ZTdkYzY0MzJhNDQ2NWI2MzVkNzcxZTZlODJhNmUxOGNjNzExNGQ3IHJlbGVhc2UyNS1tYWludAorNTE4NDEgODA0ZDE3MWMyY2I3MTU1YzY5MzIyZTdhOTY4NzUyMjhjMTE3YzA2ZCBpbnRfdW5pZmljYXRpb24KKzUxODQ3IDBmZmU3ZjkyYWIyZmRlZmEyZjg4NWEyZDE5OWI4ZWU2NDU4YjZmYWQgcmVsZWFzZTI1LW1haW50Cis1MTg0OCAzOTg2YjM2Yjg0OTUyMzM0MGQzMDljOWMwODVjZjA2NWFkNmMyYmRlIHJlbGVhc2UyNS1tYWludAorNTE4NDkgNWVmMDQwNmU2ZDUyNGM2Y2NmNjcxYjI4NDA5MjhkNTc1NTM5ZDY5NCByZWxlYXNlMjUtbWFpbnQKKzUxODUwIGU0ZThmMGE0ZWRhNGZlMjhiYzc1MWFjZGRhZTk2YzE1M2E3ZDdiMTUgcmVsZWFzZTI1LW1haW50Cis1MTg1MSA1NGQ0ZmQwODgzODVjN2ZkYzFlNDFmNjQwNmNkNTU3NGNmMjFmMmIxIHJlbGVhc2UyNS1tYWludAorNTE4NTMgZDA2YjJiNDJkMTM4ODE2ZmViODkyNzc1MDg1OTI5YTZlZDM1NTFmNSByZWxlYXNlMjQtbWFpbnQKKzUxODU0IDE1YWQ2YmEyZTFhNTQyNzgxYmVhYmExMjQwM2RmN2NiNzQwMWUyYTcgbGVnYWN5LXRydW5rCis1MTg1NSA2NmQwMzU3MDI5YjU1YWM2MTY4ZjlhMzAxODM5OTdlN2YyNTc4ZGE5IGxlZ2FjeS10cnVuaworNTE4NTYgYzBhMDcxZGY0NjIxYTU3OTRkNDVhOTJlNGE1OTUzNmQ3Y2IzZTU2ZCBsZWdhY3ktdHJ1bmsKKzUxODU3IDBmN2VlOTkyNWI3YzQyOTYyYjYxNTY0YmQwZDQ0OWEzM2NhMjNmYmIgcmVsZWFzZTI1LW1haW50Cis1MTg1OCAwYmFjNDBlNGQwYzY0M2E3OGMxOGI0NmZjYjBmNDhjNzg3MWFkMWZkIGxlZ2FjeS10cnVuaworNTE4NTkgYzVjOWRiZWVhZmE3NmExZGQ0YmYyNmYyMjYwMWNhZDZmZGQzNzI0YyByZWxlYXNlMjUtbWFpbnQKKzUxODYwIGNjM2NiM2E4MjM3ZWE1NDVkYjkxN2Q4NGM0OWQ4YTBhNWUxNzVjYzEgcmVsZWFzZTI1LW1haW50Cis1MTg2MSA3ZDQwZDM3ZTRjYzM1ZDYxOTE5NDA4MmQ5ZjgyMzkxNGZjMjJmN2I0IHJlbGVhc2UyNS1tYWludAorNTE4NjIgMjQ5ZmRiNTlkYzUyZjliNTNhNTI5MmFkZWIzMzgyZDU2N2I5MDlhYSByZWxlYXNlMjUtbWFpbnQKKzUxODYzIGRjNTBkNGFjOTVkOTFmYzE4MDAxODcwNDA0MTc1N2U5ZjI5ZDM1NjggYmNhbm5vbi1vYmpjYXAKKzUxODY0IDk1Y2YzMWU2OTMzNTAxZjJkM2YyOTZkYmIwN2QyNjUxMTMwYjNmOGEgYmNhbm5vbi1vYmpjYXAKKzUxODY1IDQxNzUwMWVlM2U4NmZmYWNlYmRmMGU2YThiMmQxZTk3NDU5NGY1Y2QgbGVnYWN5LXRydW5rCis1MTg2NiBlNTdkOGFlNDU2NjlmNGQ3ZTJkNGNlM2Q3ZjhhNjFlZWFmMmUxNmQ5IGxlZ2FjeS10cnVuaworNTE4NjcgNTRiODJiZDI1NjkzZTlkN2YyZGY2OGEzOGYxOWVkNTI5ZDlmOGM4NiBsZWdhY3ktdHJ1bmsKKzUxODY4IDUwNDRkMDY5YjUzMjkyZWUwMzBkMTYzZjE2M2YwZTgyZGY2OGZhYjAgbGVnYWN5LXRydW5rCis1MTg3NCAxMGViMWY2YjMwODA5MzQyNjI3Y2ExNDRlMDAzYWJmZGYyNGMzOWEzIGJjYW5ub24tb2JqY2FwCis1MTg3NSAwYmMzOWMxMzE5ZGRjMDM3YWIyYWI0MDQ0OWZmM2NmODI5MmZjYWFkIGJjYW5ub24tb2JqY2FwCis1MTg3NiAwN2E0NGJmZjk2N2Y1ODI2YzM1MTA4MWQ2Y2VkYjcxMjlkMTMyMzZiIHJlbGVhc2UyNS1tYWludAorNTE4NzcgNzRlNDI0YzE3OGY0NWMyMzlmMTk1OWFlNDU2ZDUyYWU1Nzk3NTYyNyBsZWdhY3ktdHJ1bmsKKzUxODc4IDJiMDVlYzVkZjc3Nzc5N2Q0OGVkMzFiYjBkMDU2ODM4ZTVmZTRlM2QgbGVnYWN5LXRydW5rCis1MTg3OSBhMDIzNWQ0MzVlZDRlNzJkNDljNWE1M2YyYzE1N2ZmODI3NWIyNWQyIGJjYW5ub24tb2JqY2FwCis1MTg4MCA3NTE3OWMyZWNhYzFjNWIwZjM1YzQ2NzcyMTQyOWIwMjlhNWZkYWJiIGJjYW5ub24tb2JqY2FwCis1MTg4MSBkYWRhMzRiNGQ2YjZhNGUyZDdhODlmMGFjMDNjMDBjM2M3NDVhMjI0IGJjYW5ub24tb2JqY2FwCis1MTg4MiAzNGFiMDUyNzQ1ZWMyYTcwZTRhMjFjYjc2MGY1YWEwNDUzYWU4ZjI2IGJjYW5ub24tb2JqY2FwCis1MTg4MyAwZWNlMjhjYjViOWU3M2U4Y2YwZjY1ZTIzZWEzYTI2OTU1YmFmODE1IGxlZ2FjeS10cnVuaworNTE4ODQgODk5ZDRkYzEyYzM3OGRiZTI1YjY4OWM0NTFlYjU0NWZkNjhjMTQ3ZSByZWxlYXNlMjUtbWFpbnQKKzUxODg1IGI2NzMzYTM2ZWVjZGY2NTU2YTgzOGMxN2E0M2U3ZWY2MjRkM2YxMjIgbGVnYWN5LXRydW5rCis1MTg4NiA4NzM3NTliMGIxMjYxNmE4MDRlMDFlOWZhYWY0NzNmYmVlMmY2ZmRmIHJlbGVhc2UyNS1tYWludAorNTE4ODggNGYzNmM0MTU5NmIxOGQwZGZmNzljY2MxZDRmMWM1OTFiYjRmNGFjMiByZWxlYXNlMjUtbWFpbnQKKzUxODg5IDJlOTk1ZjI0NGQ2YjYyYzk0MDkwOWVjMDIxYzc3YmRiZGQ5Mjk3YWYgbGVnYWN5LXRydW5rCis1MTg5MCAyYTM0OThkODc0MWI0MmM1MWFhNGIzNzlkNDZhMzRhNGE2NmVhNDM4IHJlbGVhc2UyNS1tYWludAorNTE4OTEgZjljOWY4YTA1YTg5NGJkMTQwNjJjYjA0MWRkNTAyY2Q5OTAxMzNlMSBsZWdhY3ktdHJ1bmsKKzUxODkyIDhkM2I3NjQzNTk5MjFhY2Q3MzAxMmY4N2M3MTRjYjg3MmM1MTM3NTggYmNhbm5vbi1vYmpjYXAKKzUxODk2IDMzMGJkYTI0MDVlZTZjNjgyMTgzZGM1ZWFhNTMxMGI4ODkyMzA0MDMgYmNhbm5vbi1vYmpjYXAKKzUxODk3IDE2NjBlYWEwY2MyNjYzMzMwYzMxMzhiMmZjYjJiMWVkYmUyMjhlNDggbGVnYWN5LXRydW5rCis1MTkwMSBmNWY0ZDJmZGI2MmMyOWFmOTQ0MDNhMjFiNzNmNGI0YzFhN2U0MGJlIGJjYW5ub24tb2JqY2FwCis1MTkwMiBkNDNkOTQyMmI3YWM3OWYzYjZlMWNmZmRkYmZjYjQzMTA3NTNiOTcwIHJlbGVhc2UyNS1tYWludAorNTE5MDMgY2VkZWE5ZTIzYTk1NWM3NTU5YzI3YWRlMzJlYzQwZmQwMDA3ZGUzYyBsZWdhY3ktdHJ1bmsKKzUxOTA0IGJiOWU5MTRlZGUwNTFmYWIwMGIyMmNmMDI4OGZmNGNmNzE2Njc1ZjIgbGVnYWN5LXRydW5rCis1MTkwNSA1OTBhOThhNzBiZjlkOTQ1ZGE2YzFmNmM0YWQ1M2Q0MzA4ZGE1YzA4IHJlbGVhc2UyNS1tYWludAorNTE5MDYgNmIwMWE5YzQ1NWRiZDI2NWRkZWZiN2E3NThiYmUzNTJjM2Y2YzQ3MyByZWxlYXNlMjUtbWFpbnQKKzUxOTA3IDc2Nzk2MmY4ODgzNDYwOWY4ZTg5NDgyN2U4OGRmYjQ0MjExYTE5NGEgcmVsZWFzZTI1LW1haW50Cis1MTkwOCBjMTBhNzFjZjE2ZTQ3MTQyNWU2ZDc1NjRlM2Y3YTY0OGYxNGI3MDJlIHJlbGVhc2UyNS1tYWludAorNTE5MDkgN2Y1ZjQ2YjU2NjExYzE1M2FlYzdiMDUzYzAwZjFkODkwM2ZhMWVlZCBiY2Fubm9uLW9iamNhcAorNTE5MTAgMjAxNDc0MTVlOTdmOWIwY2Q5NTFjMWVlNWQ2OGFmMjlhMjM4ODhkMyBiY2Fubm9uLW9iamNhcAorNTE5MTEgY2UyNDc3OGE2NDlmMWFlNTNmNWQwMDc1ODIxNDQ1YmEyNDkxNWJmNSBiY2Fubm9uLW9iamNhcAorNTE5MTIgNzc1MjM3ODA3N2E1MzdjYjNjZDJhNGMwZmE5NzUyN2JjNzEwNjAwOCBiY2Fubm9uLW9iamNhcAorNTE5MTMgYjQ0NzBhNTQ5OTNhMzg3YzU3OWJmNjc5YjIzYTFjNTQ2N2VkOWQzNCBsZWdhY3ktdHJ1bmsKKzUxOTE0IDc4Mzk0MWEwMGU5ZTI5NTIyOTFjMDhjODQyN2U2OWFlY2JmMTdkNmIgYmNhbm5vbi1vYmpjYXAKKzUxOTE1IGU3MGE3YjcxOTdiNjg0MWQ3ODM2NzA4MGI2ZWY2MzAxZjBhZjVhZDMgYmNhbm5vbi1vYmpjYXAKKzUxOTE2IGI2ZWU0ZDM1NDFjMGE1Mjg4MTIxZDI4OGFkZmQyM2E5ODEyMzY2ODAgYmNhbm5vbi1vYmpjYXAKKzUxOTE3IDA5NGRhZTQ5YWJlYmIzNGRhMzhjM2IwNjQzYmE4MDc2Yzc5Y2JmMjggYmNhbm5vbi1vYmpjYXAKKzUxOTE4IGUwMzZmYzljNjgyNzE0NzdjOTY1ZmE2OTIzYmIyZWVlODEyYjNmOGEgcmVsZWFzZTI1LW1haW50Cis1MTkxOSBiYzc3MmZiNTEzOTI5NWQxNThiNzI3NDU0NmY4YWQ2ZGNmY2IwN2Q2IHJlbGVhc2UyNC1tYWludAorNTE5MjAgNzFiODAyNDBhYzNkZGFlNDE5MmEyYzUwYTFjYmM1NGRiNmNkZGZiYiBsZWdhY3ktdHJ1bmsKKzUxOTI2IDAxNzExMDhhYjUxNTU4ZWIwNmI3YWI0ZTczZDA2ZjUxYzgzMzgzZjUgbGVnYWN5LXRydW5rCis1MTkyNyA0ODg4ZDJkNGQyOTJlYzM4ZDVlM2U5NDMxOTEzOTNlMDdjZjMyY2M3IGxlZ2FjeS10cnVuaworNTE5MjggNzFlMGYzZmM1N2RhNzc4ZjRmZTA4NDliNjRhNjVlYWE2MTFkZDU4NSBsZWdhY3ktdHJ1bmsKKzUxOTI5IGIzMDNkMmMyYzZjNTY0MzQzYTAzNjdlMGZmOGE2YWNlN2FjNTk3MzggYmNhbm5vbi1vYmpjYXAKKzUxOTM5IGVhMjRhOWM4ZWRhMjU4YjkzYWVmNTkxM2MyODgzZGM0MzU2ZGQxMmYgYmNhbm5vbi1vYmpjYXAKKzUxOTQwIDAwMzFmYzJlMDVlMjg2ZTJiYWY4OTM3ZTdiMzNjNzJiZWU5N2UyZWQgYmNhbm5vbi1vYmpjYXAKKzUxOTQxIDAxNTFjMDdjNTNlNTEwNjI3MzJjMDM3ZTI1NjQ1YmUyM2YwZGY3YTYgYmNhbm5vbi1vYmpjYXAKKzUxOTQyIGRlNDkyNGQwMzkwM2Y3NGM4NTlmYzIzMDdlYmIyZGIzYmZlNGM5MDcgYmNhbm5vbi1vYmpjYXAKKzUxOTQzIDFmNDg5N2Y1ZmIyYmViYTYxODhmNGUyMzRlMDJmNGIwZjI4ZTdkYTEgYmNhbm5vbi1vYmpjYXAKKzUxOTQ0IDQzYmFmNmJiMGY4YjBiNGU3M2QwZTAyZThlYmUwZmIzZWVkNDA1YjIgYmNhbm5vbi1vYmpjYXAKKzUxOTQ1IDU2ZjBlYzUwZDczNzE3NDhjOTg5ZTYxY2Q5YjI2YjU3MGU1MjM5ZTMgYmNhbm5vbi1vYmpjYXAKKzUxOTQ5IDkzNjI5NzA0N2MxNzllZDg3NzlmYzIzYjFlNmI0MzZmMzI0NmEyNWMgbGVnYWN5LXRydW5rCis1MTk1MCA2OTUzMGFhMjFiOGE2NDlmZjc0NzBhZTE0Zjk4MWMzY2FkM2MyYTY2IGxlZ2FjeS10cnVuaworNTE5NTEgMzViZjE2ZTdmMTFjZGUxNmM0NWQ2YzA3ZjM4YzUzMjljYWE4NTJhZSByZWxlYXNlMjUtbWFpbnQKKzUxOTUyIGVmZjg4YzZhYWFjMzc0NzZkY2JkOWM5Nzc4Y2E2MTFkODUyYTQ2OTAgcmVsZWFzZTI1LW1haW50Cis1MTk1MyBkZTQ4NjZkNDRmMTM3NzVjNWZkYTMyZDNmYjcxOWNiM2JiNTczMTU0IGxlZ2FjeS10cnVuaworNTE5NTQgN2Y2YjRmYzY3YmI2YjNmMzkxNzllYjgxYjg0MGEwYTE1OTliMzFkNCByZWxlYXNlMjUtbWFpbnQKKzUxOTU4IGRmOThkOTczMTM5MGYxNDc2ODE3Zjk0NDk0NDg1ZjdhZGMwYTBlYmMgYmNhbm5vbi1vYmpjYXAKKzUxOTU5IDA4OWRkZjE4NzdjYzA3OGQ2MTQ2NmQxNDJkZGExMmQ5NTRhOTdhZTAgYmNhbm5vbi1vYmpjYXAKKzUxOTcxIDI0ZjlhMTMwODRiMDE3NDc0NDM5MmZkOGMwN2JiNjNiNzg4YTY4NWQgbGVnYWN5LXRydW5rCis1MTk3MiBiOGNiNzIwMTM3OWM2Nzk1MGRlMTFhZWZkM2MwMzExMTE0NDM0MWNiIGxlZ2FjeS10cnVuaworNTE5NzMgYWVhMTljMmE0NWJmYzk0YWUxNjE1NzkzYmE2MGFjOTQ5MGYzNGQyNCB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzQgMjY2MTg1MjhmYTNiNzY0YjA4ZDY3ODFiM2I4MzM1MWJhNjY5ZDUzMSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTE5NzUgOTRhOGNkNTg4OGU3MGIwNzAzYjU2ZDY0YjFhMTE0NDEzNDNkNDM4ZCBsZWdhY3ktdHJ1bmsKKzUxOTc2IDBiNjNjMjg1OTM0ZmEwNTBmYmZiNGFiNjdiN2YyZmIxMjJiZTk5ZTcgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc3IDY5YmUwMTVhNGI1MWMwM2QyNDkwYTQ5NTc0M2YzZDg4YzlhZjVkZjQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc4IGM3ODFjOTgwYzlhMGRkODgwYjkzMWRmMWE1YzhmZWMwNDJiMjM2OWQgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTc5IDA3OWY5YmViMWQ3ZmEzNTkyMmIyODY4MGNjZGNhNjc1MWVhMDBiNjIgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgwIDU4NzJiYWJmZjYzODRmNDZlNTNlNTM5OTRkODFkZmViYzJkNjI3OGYgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgxIGUzYzVmM2I1OTI3MWYwMmVhZjBjMzZjOTA4ODc3ZmRmNjNlOGQyNGMgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgyIGUyNzQzMjIyNTgxZDI4ZGJlOWZhOGZiMWJmN2YwNDIwMDBlYjY4MWUgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTgzIDc0Mzk3YjAwOTkxNDFmY2FmZDllYzIyY2FmN2VkZTc5ZjVlYzM2MTUgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTg0IGI5NDI3OGUxYmNiMzE0MWE1MDJkNzM2MzVkNDM3MThhMjk2NjM0NTcgdGhlbGxlcl9tb2R1bGVmaW5kZXIKKzUxOTg2IDA0Yzk5OGZmMjhiN2Q0MWNkMzI5NzY0NzIxZTg1NjBkNGI0YmY4NWYgbGVnYWN5LXRydW5rCis1MTk4NyBjYWIwNTY5MDNiM2RkMjY0OTJmMDZlYTkzMjhmZTVhMzNmOTQwZjM3IGxlZ2FjeS10cnVuaworNTE5ODggYzIwYmQ3NGFjOWE2N2RkZWIyMjc1ZjA0NDE4MDVhYmE2ZWFhMjc2NSByZWxlYXNlMjUtbWFpbnQKKzUxOTg5IDQ3OWUzODljYjQ2MmY4ZGNiYTg4NWNlYmM5YTAyNjVlYWE3MTg2NDcgbGVnYWN5LXRydW5rCis1MTk5MCA3ZjZkZGY1NTVjMTIwYmM5MzVhODI5ZTc1MGNkZjExZGQwZmUzMzE5IGxlZ2FjeS10cnVuaworNTE5OTEgZDk5NzUzMzE0NDUzMzUzZGRlZWI5OTZmYjdkMDc1NzIyOTlkZDgwMCBsZWdhY3ktdHJ1bmsKKzUxOTkyIGI1MjkyZjk2Nzg3N2NjMzQ5YTE0MzU5MmE1NWJjZjE1M2EyZjkzNmUgcmVsZWFzZTI1LW1haW50Cis1MTk5MyAyNWJjZGYzY2QxOTQyMWQ0MzQ0N2U0ZWY2YjE4NDg5Y2IwNjhkZjk5IGxlZ2FjeS10cnVuaworNTE5OTQgMzQ3OGMxNjAyMDdiNzlkNmY4YzE4NWU0MjMwYzYyZTgyNTAyODI3YyByZWxlYXNlMjUtbWFpbnQKKzUxOTk1IGVjYWFmYzMyYzUwMDA2MzE0NDlhNjAxYjg0ODYxNDFhYmFmNjE4NWEgbGVnYWN5LXRydW5rCis1MTk5NiBjY2RkYjIyNjExZGM2ZjBkNTYwMGNlYjExNWNlZjlmMDI0MGE4NzIyIHJlbGVhc2UyNS1tYWludAorNTE5OTcgNjAzY2RlNWVkMWViYzU3ZjY5NTkxOWMyNzlhYTM4MzRiMzI2NGVjYiByZWxlYXNlMjUtbWFpbnQKKzUxOTk4IDNjN2YxODgxZTgyYTk2YWU0NjViYzAyYWYyY2VlOWViMmY0NGExYTkgcmVsZWFzZTI1LW1haW50Cis1MTk5OSBkZWM3ZDk5M2I2OGYyNDE0OWFkODhmMTkyODJlZWMyZTFlYWI1NmI0IHJlbGVhc2UyNS1tYWludAorNTIwMDAgZjhhN2RmYmY4MWQwODkyMmIxMDVmNzZkZTMwMzU4ZjYwNjM4MDA0NyBsZWdhY3ktdHJ1bmsKKzUyMDA1IDc4YzVhMDM5ZmEzYTY0MjNjZTA4MGQwNDlhYjQ4YTM0MDUyMjg4NDUgYmNhbm5vbi1vYmpjYXAKKzUyMDEwIDc4ZDRlNWU0NzBjZjgyNDNhOWM2N2EwN2M4NWZhZWFhYjZiZWRiZDcgYmNhbm5vbi1vYmpjYXAKKzUyMDExIGIwNzIyMjhjOTVhMjA0MDUwMTA3ZWEyMjU5ODRkMWNkODVhYjEwYzYgbGVnYWN5LXRydW5rCis1MjAxNCA3NGRjZmQzNmY3YzRhMzliMjU2NWE4YTNmMmQyNjlkMTliNTZjMjVkIGxlZ2FjeS10cnVuaworNTIwMTUgZTZhNGUwNjc4OTkzY2U4NmQwZGE3YThhZmYzMDlkN2FhNjBlMmZiNCByZWxlYXNlMjQtbWFpbnQKKzUyMDE2IDkzNDdjMmI0NTFiYWQ5YjFkYTNmYmEyN2JhNjQ1YjJhOGZmNTEzMGIgcmVsZWFzZTI0LW1haW50Cis1MjAxNyA2ZmI0NmU4N2Q1Zjk0YzYwZTU0OGZjMTQzYzU4NGEwNGRhNTQxYTFjIHJlbGVhc2UyNC1tYWludAorNTIwMTggM2I3MGRhOWVlMzY4NzU5MzAyZTdkYmM1NDdhNzY5ZTcxNTUwMjAwZiBsZWdhY3ktdHJ1bmsKKzUyMDE5IGE1MjE0MmJjMTU4ZjY1ZDVlMzY3Y2I2YjcyNDdlN2QwMDc1ZTgyODAgcmVsZWFzZTI0LW1haW50Cis1MjAyMCA2OGE1NmExNWQ3NTU5MzM2YzZhNWJmZTVmMzEwYTdmYTE0NjRkZGRkIHJlbGVhc2UyNS1tYWludAorNTIwMjEgOTRkZmJiOWRhYzU3OGIwMzdkZmJkMjg0ZDgxMjQ2ZDY3NDUzY2ZjMiByZWxlYXNlMjQtbWFpbnQKKzUyMDIyIGM0OWYwMmE1MGNhZGQ2ZjgwMWNiNWUyN2Q4ZWFhM2JkY2ViNjVmNmEgYmNhbm5vbi1vYmpjYXAKKzUyMDI4IDE2OTZkODViYTA0MzU2NDVhMmFjZjQ3NTQyNGVkODkyOTU4YzhlMTYgcmVsZWFzZTI0LW1haW50Cis1MjAyOSBhZjMxODZjNjQwOTIwN2M1OGNlN2QyNTE2MTkxY2Q4ZDUxZmE2NTg0IHJlbGVhc2UyNC1tYWludAorNTIwMzAgODg0ZDFjYjcwMjIxNWJiN2QwMmQ2NDY2NzFiODUzMTUzMTk2ZjhjNSByZWxlYXNlMjQtbWFpbnQKKzUyMDMxIDEyODY5YWFlOWY2ZDllZGZiZThiNjhiNDIyZjAxYjA2NjVmYzhmNDUgYmNhbm5vbi1vYmpjYXAKKzUyMDMyIGY5MGJhMzA2YzI4N2E0OGRiMDEwMzU5ZDJjYWM5ZDkxZGJiOGQzOTMgbGVnYWN5LXRydW5rCis1MjAzMyAzNTA3Nzc1ZjRlZDQxZDU2YTJhN2E4NzhhZmVkMjg2OGY3NjMxZmVkIGJjYW5ub24tb2JqY2FwCis1MjAzNSBmYjI4OWVlMWNkNjA3YjM3OWEwMWVhYzI2MDhlOTY5M2E0OWU0YWUwIHJlbGVhc2UyNC1tYWludAorNTIwMzYgYWI3OWVkMGY5MjgxNzVlMTkwNzUyMjFhNjhiZDE5NjAzYmNjZWVlNSByZWxlYXNlMjQtbWFpbnQKKzUyMDM3IGNjMThmZGFkMTA4YjdkNzIwMDc5N2ViMDVlMWM1MGMzNzkwODExMDYgcmVsZWFzZTI0LW1haW50Cis1MjA0MCA0ZjExNzQ1YzdlNWZjZTg4ODE0ODZjYzhmZjY0N2ZjMzVmYzliODM3IHJlbGVhc2UyNC1tYWludAorNTIwNDEgYzExY2FlMmI5YTc1ZjJhODE0MWQ4N2EwMTY1MDM4ODAxN2Q0OWE3YiByZWxlYXNlMjQtbWFpbnQKKzUyMDQyIDI2MzJjOWFmNjRhYmIyNTI3NjE0YjRjYTE2YWNiODkyOGY2ZmM1YzcgcmVsZWFzZTI0LW1haW50Cis1MjA0MyAxNWRkYWJlNjNkOTUyYzY3YjM1M2FjZTNkMjI4Mzc4MzBmYmU1NmI1IHJlbGVhc2UyNC1tYWludAorNTIwNDQgMWU1ZjBiMDQ2NmQ4ZGYwZGJhOWM0ZjAwMTYxNGU1YTY1MDNiODhiMSByZWxlYXNlMjQtbWFpbnQKKzUyMDQ1IDllMGZiOTU0NzkxZWM5MzQ5MmVjYTdhZTIyZmY5MzhjY2IxNTMyNWMgcmVsZWFzZTI0LW1haW50Cis1MjA0OCAwNTg2MTc0OWVhY2QyMTFhZmIyY2YxM2FkOWQwYWQzZmY4MDdkZmYxIGxlZ2FjeS10cnVuaworNTIwNDkgMDFjMDNhNzExYjE1Y2IxZWQwMWZkM2YwZDMxNGQzMDA1M2U2NmY4ZSByZWxlYXNlMjUtbWFpbnQKKzUyMDUwIDUyY2RiZTRiNzY0NGQ3MmFhOTJjYTBmYzY1NDg3ODYxNGNjMTNkNmUgcmVsZWFzZTI1LW1haW50Cis1MjA1MSAwZWRmMzk5OTYxOGFlMjhjZjk2OGE5YjAwZWRiMDI3MmNmMWIxM2FiIGxlZ2FjeS10cnVuaworNTIwNTIgMWRjMjJjYzIwMTMyZjJhYzA1OTk3N2E1YzRjN2ZhMmE4YzMwODQ4MiByZWxlYXNlMjQtbWFpbnQKKzUyMDUzIGRlNzlmMTg3MGFlOGYxZDg2ZDFmNTg1MTg2ODFkMzQ2ZWZlMzVmZWEgbGVnYWN5LXRydW5rCis1MjA1NCA1ZGZmYTM1Y2M2NDMwMmMyYzNkZGEzYWUxZmNkYmFjOGQ2ZmM4MjliIHJlbGVhc2UyNC1tYWludAorNTIwNTUgZDgzMzgwNmM3MzUxYTU5MTcyNjJjODg5MDBjNTJmYzgxZGM2NWE2NCByZWxlYXNlMjUtbWFpbnQKKzUyMDU2IGM0NzdhMGUyYjA2Nzk5ZGFhZDg5NDUyZDk4MWM3NWRjYzQ5YzM5ZDEgbGVnYWN5LXRydW5rCis1MjA1NyAyYzgyNGE4YTFmYjhjZDU2YWE4ZWI2ZmVmZjljYTU2ZDM1MzFmZGE2IHJlbGVhc2UyNS1tYWludAorNTIwNTggNDlmYmRkZmIxMjE3MDFkZGVlMTY0YWM3NTJiMTMyMTI4MGZiY2Y2OCBsZWdhY3ktdHJ1bmsKKzUyMDU5IDEzY2YzNDRkZThjOTg5ODRmMzVmOGQzODE5YzE4MTY4NDQxNTE0YzUgcmVsZWFzZTI0LW1haW50Cis1MjA2MCA1MjQ2MGIwOTJiNWE2NmQ1YTM1OTNhMTZmMmU0Yzc2MzFiODlkOGY2IHJlbGVhc2UyNS1tYWludAorNTIwNjEgZTFhYjQ2NTNlYmMwOTMyNTk2YjZiMDY0MmMyZjBlODliMTkyYzEzYiBsZWdhY3ktdHJ1bmsKKzUyMDYyIDM5ODZiZmU1MzEwMWRiMzEyOTIyOTQzYTZjOTMxM2Y3ZTk5NzQ5Y2YgcmVsZWFzZTI1LW1haW50Cis1MjA2MyBlN2E1ODM0MWIyZThmNzUzNWQ3N2NkMTRjMjI3YjJhNzE4ZDMzNWUxIGxlZ2FjeS10cnVuaworNTIwNjQgMWJmNTFkMmY0NjlkMmQyZmFmNzgzYmM2OGY1M2NlZjliZjI4NDZiOSByZWxlYXNlMjUtbWFpbnQKKzUyMDY1IGI5YTJlZjEzMDJkNDdjY2Q1MTUwZDU5M2ExOWM2MWU1YTAzYjYyNWQgbGVnYWN5LXRydW5rCis1MjA2NiA5OWQxYzkzNjc2Nzk0ZDJkNGI1ODNiNjQ4NjI3YmFlNmI0ZmNlNmI2IHJlbGVhc2UyNC1tYWludAorNTIwNjcgMzMwZGJjYWRiOTMxNzFmNjIzN2ViMThkN2FhODFiOTk3NGRlZjQ2YSByZWxlYXNlMjUtbWFpbnQKKzUyMDY4IGZmYjkwMTM3NGEzODI1MzlhOTA2NTdhNTRjODljY2RlMDhmZjJjZjUgbGVnYWN5LXRydW5rCis1MjA2OSBkOTE4MjZiYWM2NTU1Y2IwYTYxNDZiNzU1YzY2Y2I0NWUzYzRjZjY5IGxlZ2FjeS10cnVuaworNTIwNzAgOTVkMjQ3M2Y3NzcwY2IxMGM2Zjg5MzVjMDIxMTZjZGI3N2QxNDM2YyByZWxlYXNlMjQtbWFpbnQKKzUyMDcxIDljYWY1YTlkYTU1NGQwYmFiM2JhMWFjODQ5NjJjNDZiMDc1NGJmYzAgcmVsZWFzZTI1LW1haW50Cis1MjA3MiBiN2FlODk3N2QwNmU0OTdkNmZkYWRlYWEwYzg2ZDMzNmFlZGNlYWNkIGxlZ2FjeS10cnVuaworNTIwNzMgOWJlMDMyMjZhN2JmOGRhOTllZGYxNzkwYWU1NTk4NjIzMmZlYmEzMiByZWxlYXNlMjQtbWFpbnQKKzUyMDc0IGNmNThmYjg0NTBiYTMwNWQ0ZmMwNTlkOTA5NWE1ZWFhMDAyOTdjY2UgcmVsZWFzZTI1LW1haW50Cis1MjA3NSA0MGUyZmVlMDNhOTQ5MjI1MDk4YmI4N2Q0YmZiNDI4ZjdmY2RjZmJhIGxlZ2FjeS10cnVuaworNTIwNzYgNTEzMGI2OGI1NGU5NGE4YjA5MjIzYWQ5NTJjYWExNzA2NTNmMGYxMCByZWxlYXNlMjQtbWFpbnQKKzUyMDc3IGRmZDgwOWRjZjY4MDAwZmU2YTRhNjgwYTI1MGMxZjllYjk4ZDJlYzIgcmVsZWFzZTI1LW1haW50Cis1MjA3OCBjODlhNzU2YzA5NjVhOTBkMzVjYTYyMWIzMGI3ZDQ1MjFhMjZlZTU0IGxlZ2FjeS10cnVuaworNTIwNzkgOTA3MjhkZmMzM2U4NTg4NGRjY2VjYjgzNmU1YjAxNDVlYWVmODQ3MyByZWxlYXNlMjUtbWFpbnQKKzUyMDgwIGQ3NDMzODExMzFkNmM5ZjFiODkzZTEzNmExNjg0ZWVlNzc2MTg5YmIgbGVnYWN5LXRydW5rCis1MjA4MSBiZjQ3ZGU2ZDljOTE4ZTIwNmMzYWI3ZmNkZWNmNDUxZDg2ZmQxYjE4IHJlbGVhc2UyNC1tYWludAorNTIwODMgMjU3ZGFmMzliMDhjNjhlNjJmNGU3MGQ1NTEzOGQyMjY5YTgwOGMyMSBsZWdhY3ktdHJ1bmsKKzUyMDg0IDg5ZTRhZWJiZjMxYzQ2MDkzYjNjY2E3YzgxODIzYzg3MWRjYjZlYzkgbGVnYWN5LXRydW5rCis1MjA4NiAwMGFmNjk4NzAyNmE2ZDVjMWUyZDNlMTY0NWRkMWY2YTk3YjM5MGE2IGxlZ2FjeS10cnVuaworNTIwODcgMWRhMDRjOGVlOGZmMDAzMDg4NzA3OGE4YmRhNjhlMjQ1ZjZhZDdlZiByZWxlYXNlMjUtbWFpbnQKKzUyMDg4IDlmY2FhOGVlOGMyMmZkYjNlZDYzYzMzYTM2Mzc5MDg1NzZiYTVlMTMgcmVsZWFzZTI0LW1haW50Cis1MjA4OSAxNjk3ZDBkNGVmMzM3YTg4MjJiNTkzNTBhN2JhYTAxNWFlMDk0N2E3IGxlZ2FjeS10cnVuaworNTIwOTAgNWMzNmVjNWZkM2MyMzZlYjZjMDQ0MGNmYmU1ZmQ3OGU5OWY4OTg0NiByZWxlYXNlMjUtbWFpbnQKKzUyMDkxIGMwZTcxYTRiNzFjNzQ2ZjBiOGJkYWI1MDU4YzFiNWEyM2ViZmY0MWYgcmVsZWFzZTI0LW1haW50Cis1MjA5MiBjZGMzNjdhYjNiYmZjYjExZmRkNGY1Y2NjYzJkZWU4NzE0YjE2MjU3IHBlcDMwMl9waGFzZTIKKzUyMDkzIGIxNDQ5YTdlMTVlZGVlYWQ4NTdmNTNjYjgwZmY1ZGU5MzZmZmNmZGIgcGVwMzAyX3BoYXNlMgorNTIwOTQgYjQ1NTNiMTJlMjViZTlhY2Y2M2JkYjExYTM2YzdmOTFmMzBmN2UzMCBwZXAzMDJfcGhhc2UyCis1MjA5NSBiMjJiYWExNTQxNDc0ZjUxZmEyY2NmNTJiYzMyMjlkOTI5Yzk2ZTJiIHBlcDMwMl9waGFzZTIKKzUyMDk2IDg0YWZhMzY2ZWVlN2EyYjA2NTQxZTlkYjgzYTBhMzQxOGM3MTIzMTEgcmVsZWFzZTI0LW1haW50Cis1MjA5NyA0NWRiY2IwZTlmYTlmZDRmOTE4NjM5NzAyMTRhOTBiMDZlMDhmNGU4IHJlbGVhc2UyNC1tYWludAorNTIwOTggODE4MTE4YzNhMzQwZGZhMTI3YTJmZWEzY2ZkYWZlMzM1MjcyYzE0NiByZWxlYXNlMjQtbWFpbnQKKzUyMDk5IDU4MGY2YTY5NTE3MjM5NzVjNWVjODMxZjU0NmU5MWYwMGY1ZTU1NGIgcmVsZWFzZTI0LW1haW50Cis1MjEwMCAyYzg5ZDYxNmE5ZWQzN2MwMWYyYmI1NjdlODAwNzA1NDRiZWE2YTBhIGxlZ2FjeS10cnVuaworNTIxMDEgMmUxYzQ5Mzk1Yjk2MWY2NTU1NGY5YTFhNmQ2NzkyOTU0ZjdmZjkzNiBsZWdhY3ktdHJ1bmsKKzUyMTAyIDRkYTRkZTk1NDAxMmI0OWYzNTliNDFiOWU1NDU3YmY3N2FiODk2ZWEgbGVnYWN5LXRydW5rCis1MjEwMyBmMDE5ZTRmODYyODc3YWE3YjBiOTQwOTYyYmNhOWRiMzJlZDY3Njc1IHJlbGVhc2UyNC1tYWludAorNTIxMDQgMjhhOTRiZjdmNjdmM2M0YjFiMmM4ZmYwZGRlM2IwZmY3MjEwNWI0ZCByZWxlYXNlMjQtbWFpbnQKKzUyMTA1IGRlN2MwY2I1YTg3Mjk1YzZhMTQwMzY3YWYwYmIyZWE0YzRmZDkxMmQgcmVsZWFzZTI0LW1haW50Cis1MjEwNiBiMzMyZTFhYzY2Y2NkN2M2ZWY3ZjBmZTY2M2EwN2JjZGJlZGIyY2ZkIHJlbGVhc2UyNC1tYWludAorNTIxMDcgMDYyOTFlYWRkZTJkYjVhMmVjZDMzYTRiMjcxODQxZjM1YzM2ZjRmYiByZWxlYXNlMjQtbWFpbnQKKzUyMTA4IDQ0M2I4NzNmOWViOTA4NTVlZTRjMmZiNTI3NmU5ZDQzZWY4YmZjMGYgcmVsZWFzZTI0LW1haW50Cis1MjEwOSA1ZGQ2YzkwZDQyMjJjYjllNmQ3NmEzYjZmOGU0MmM3ODc3YTQwNGVlIHJlbGVhc2UyNC1tYWludAorNTIxMTAgNmIxYzRkN2QzYTI2YzMwNTQ1ZmZmMDNkNDllNWFlNWRhMzk1NTU5YSByZWxlYXNlMjQtbWFpbnQKKzUyMTExIGI3ZTM0ZmJjODBhZDY5YmNmZmNmOGUwMTA4ZmY4NDhhMmE2MmYxOGEgcmVsZWFzZTI0LW1haW50Cis1MjExMiA1MmU5OTY0ZWY5MjJkNzczMDQ4ZmJhODNmMjdjNzU2MDg5NzRmZjg0IHJlbGVhc2UyNC1tYWludAorNTIxMTMgNTRkMTc3ZWRlODgzODgwMmQ2OWIwZTk4MWVjNjI4ZmI2NDk5NmJjNiByZWxlYXNlMjQtbWFpbnQKKzUyMTE0IDhjODNmZDc5Y2VlNWJlMzA2NDY3NjIxMzQxNTU0MTliMDUwNGIxNDEgcmVsZWFzZTI0LW1haW50Cis1MjExNSBlZjA5ZTI2ZWYwOTlhNDM5MTViMDhjOWVhOWEwODMxYTk0NjgwOGY1IHJlbGVhc2UyNC1tYWludAorNTIxMTYgMmYyMzhhMmNkMTg5ZGZjMzdkNTdiNTNhNzAwZTQwOGJkMzU4ZjcxZCByZWxlYXNlMjQtbWFpbnQKKzUyMTE3IDBiNmIzNjBlOTIxNzk1MTMxMTZkZDhlNGU0ZWI3NGFhZDgxOTRiY2YgcmVsZWFzZTI0LW1haW50Cis1MjExOCA5ZTc2M2JjZDEzY2I5ZmViYmMzNjc4NjU0YmE3ZGNjZGUyODY0YjRiIHJlbGVhc2UyNC1tYWludAorNTIxMTkgMGQzNWI5Zjk0YjE1MTZjZjJmNWVlMjZlMWMxYjFhNTA2NWU2NmNhNyByZWxlYXNlMjQtbWFpbnQKKzUyMTIwIDkxNjc5Mjg3Y2I5NmNmOTg2YzAyNzI0M2JkODAxMGVhZGU1NWJjYzkgcmVsZWFzZTI0LW1haW50Cis1MjEyMSA0N2FiMGMyN2RkMWY5MjJmNGY2MGRiMzdmMDRiNWU1N2U5ZDIzNzhjIGxlZ2FjeS10cnVuaworNTIxMjIgMzYwZDA5NzFhNmVlZjFkODc4ZjBhMGQ1MzRhNWRhMzU1ZDEzODY0YyBwZXAzMDJfcGhhc2UyCis1MjEyMyA5ZTM1YjYyZWQ0ZDJkZjk3NTcyNTkxYzRkMWM1ZmE4NTkyODYyNTlkIGxlZ2FjeS10cnVuaworNTIxMjQgZmQxNGJiNTgzMWNkYWM0Y2NkYTVkN2E5NDJjMDEyNGE3ZWI5ZGM1ZiBwZXAzMDJfcGhhc2UyCis1MjEyNSBhZGE1NmI1NGRiOWE3OTM0Y2FhYzA5NDMyMWEzNzdkZmIwYmE0NTAyIHBlcDMwMl9waGFzZTIKKzUyMTI2IDY2MGNkMDcyMDgwZGYzZThiMDQ1NmQwMjEwZWRmNGE5N2UwZTQzMTcgcmVsZWFzZTI1LW1haW50Cis1MjEyNyA3OWI2NDRiZjAxMTY0N2E1MzFkM2VmZDJhNjNkNTdlNTgzOTBkNTVkIHJlbGVhc2UyNC1tYWludAorNTIxMjggZGI2Y2EzZWE1M2U1YjY3YWU0MTg0MWU1MGU3NWNmMjA4Mzg1NTNiYSBsZWdhY3ktdHJ1bmsKKzUyMTI5IGY1ZDdkZTUwMzFhYTRlMjI3ZGRlZDIyNzE5NTgzOGY2MmZlMWY3YjYgbGVnYWN5LXRydW5rCis1MjEzMCBjYTg4N2Q1NWM1OTIxM2QzNGRlODc4MzQzMjhhYWY5MTNkOTIwMmI5IGxlZ2FjeS10cnVuaworNTIxMzEgOGEyODUzYmY5ZWNhZDNiMTY1ZmRmOTdjZThhY2Q3NzQ1Njc0NTU5NSByZWxlYXNlMjUtbWFpbnQKKzUyMTMyIGUwMzljZjZiN2Q0MjljZTU5MDVhN2ExYTgyYzc1YTIxMDBmZDRkNTQgcmVsZWFzZTI0LW1haW50Cis1MjEzMyAxYjYxZTgyNjYwYmE5YzljMDEyMzIyZjQ5ZDQ3MjgxZTA0NTg4ZmVlIHJlbGVhc2UyNC1tYWludAorNTIxMzQgMTBiYjdhY2JiZGM4MzdlMjlhOWIxMWYxMzg3YTZiMWIyY2EwNDVmYiByZWxlYXNlMjQtbWFpbnQKKzUyMTM1IDJhZGQ0NGMwZGU2YzdkYWE2NDdlN2Q4ZDI5MzYxZWI0OWU4YTY1NDcgbGVnYWN5LXRydW5rCis1MjEzNiBhOWIxZjQwNGU4OGI1OWNlNDgxZjNiZjgyNzYzMmZmMTAzMjY4YzFhIHJlbGVhc2UyNC1tYWludAorNTIxMzcgMGM4ZTlmOTI3MmQ1ZjNlMTQ0NzFmNTUwYjA0MjBiMDg3ZDI2NzRmNCByZWxlYXNlMjQtbWFpbnQKKzUyMTM3IDBjMzY0MTBjMzllOGRkYmI4OTUxODU3ZGM0YWRmMzNmMjlmZGMzNWEgbGVnYWN5LXRydW5rCis1MjEzNyA0ZWIyODZlOTMxYTk1ZGRkYjE4ZDNlY2M2OWFjOTczMjQ3NWY0ZjNlIHJlbGVhc2UyNS1tYWludAorNTIxMzggNzk4OTM1ZTEyOTVlN2ZhMzI0MTA5ODMwOGU1NzUwMmY1MTVhZWVkZiByZWxlYXNlMjUtbWFpbnQKKzUyMTM5IDZiYTQwMmI2MDA0MThhNTY4NDUzZmFiOWVlZTdmM2NiOGFhMTQwYTYgbGVnYWN5LXRydW5rCis1MjE0MiBiZmFjMjMzODhhMjI0ZTc5OGJjMjExZjVhNmZiNTZhNzlkZDAxNjk5IHJlbGVhc2UyNC1tYWludAorNTIxNDMgZGY3YTU0MzVlY2JiNWNmZmI1NjBiZjIwOTMzMDRhZTk4NTg1MzUyMCByZWxlYXNlMjQtbWFpbnQKKzUyMTQ0IDQyYWJmYjM5MTMwMGEyNTA3NjU3YTlmNTUyMDllY2I3NTIyMWUyZTQgcmVsZWFzZTI0LW1haW50Cis1MjE0NSAwNGVjMzkxNDEwY2JlNDZlYjkyZmQwOTAzMzUzMjQwZjc3YTc4NmI3IHJlbGVhc2UyNC1tYWludAorNTIxNDYgNTI3MGIxZTM2NjQ4ZWYwNDI3OGFhY2QzODZhZjEzNjY4NjExYzU4NiByZWxlYXNlMjQtbWFpbnQKKzUyMTQ3IDQ0MDRhMzk4MTQ3MDY0MWQzMTdiODk5YTU1OTkwOTE5MzVmNjI2MTUgbGVnYWN5LXRydW5rCis1MjE0OCA4YWFhM2Q5MWVlZmE3ZjI5NmNmMmM3YzNkNzkxYmZiN2UzNjI2NjQyIGxlZ2FjeS10cnVuaworNTIxNTIgYjFlNzM3N2VjZjA0NDYwMTA0MzdjMjRjYmNmZDZkZDE3MGMxZjQ4OCByZWxlYXNlMjQtbWFpbnQKKzUyMTUzIGU4OGM0MjY3YWNkMWM3OTE3NGJkMGE2YTEzODIzODNmMjZjN2VmNjIgcmVsZWFzZTI0LW1haW50Cis1MjE1OSBhNGJiZmNhNDBjN2NmNzZmMDFiNWQ4MjRhZDZiNzAwM2EyY2U2NWVmIHJlbGVhc2UyNC1tYWludAorNTIxNjAgZjZiYmU4ZDZmYTMzMDM1NWUyZmE2MWE3ZGU4MzIyMDUzYTU0ZTJjYSByZWxlYXNlMjQtbWFpbnQKKzUyMTYxIDFmNTg4YTk4MmNjNTZjNzVlYmI4MGFlMDRkNTg5MTRkZDA5MDlhNmEgcmVsZWFzZTI0LW1haW50Cis1MjE2MiA4MDE3YjNmMjFmNjJlNmEwNGI3OThkM2E2MjJiZWJhNDI3NDFkMzNjIHJlbGVhc2UyNC1tYWludAorNTIxNjMgYzI3ZDhmODlhYTg5MTU1MTljMTBmZGE3ZmQ1YjcxYTYyMWYyYmQxYiByZWxlYXNlMjQtbWFpbnQKKzUyMTY0IDk4MTljZGQyZmNiMTU2OWFkYmE5M2ZjMzI4ZWQwNTAyMjdiNzI3Y2EgcmVsZWFzZTI1LW1haW50Cis1MjE2NSBhOWZlZTFmNjJmMTc2MDY3NjY2YzA4ZjdhNmZhYTg4ZWY0MDU0NTI2IHJlbGVhc2UyNC1tYWludAorNTIxNjYgYWIxMzU3NjM3NGIxYTk1ZmY3MGQ5ZTlhMzg1ZDBlYTIyYWYwZTU2MSByZWxlYXNlMjQtbWFpbnQKKzUyMTY3IDVlMjQ0OTk0ZTQyZTUzNDI3NWRlMjRiYmYxYTViODQ5M2Q1Y2FiNDQgcmVsZWFzZTI0LW1haW50Cis1MjE2OCA1ZDkzZTVjY2IzMWU3NGM3ODM0MzhkZGM3Nzk0ODgxNTU3ODM1MGJmIHJlbGVhc2UyNC1tYWludAorNTIxNzAgY2Q2Y2U2NjZlZmY5MWJmYTIxMjY1MTI5MDRiNDUxOTdjNGQ4NWEwNyByZWxlYXNlMjQtbWFpbnQKKzUyMTcxIGU2NTgzNjgxNTc5MWM3YmY2ZmYwMDEyMzFmMDQwODFjMjQ4YmM5ZTcgcmVsZWFzZTI0LW1haW50Cis1MjE3MyAzYjU3ZWVjZGM1MDRhMTAwYjVmZDM0ZDE2YjQyMThhOTA5NTUwYTY4IHJlbGVhc2UyNC1tYWludAorNTIxNzggMmE0NmI3NmJlYjllYmQ5YTI1NjI0MmVkZjA2ZjczMTdhMzUyMjQyMSByZWxlYXNlMjQtbWFpbnQKKzUyMTg2IDQ2NjNhY2UyMzQ5OWNlNjdhZjBiNGNiNTgyOWRmY2FlYjk5NmZlM2QgcmVsZWFzZTI0LW1haW50Cis1MjE5MCA3YmJmZjJlOWE5YzIxOWM1ZjkwZWQ1MWI0Y2JhYjEzMTJjMDVmYmEyIHJlbGVhc2UyNC1tYWludAorNTIxOTIgNWJlYzRhNjdmZjBkYTg4ZGNkNDczODI3NTRmODA4N2I4Njc5ZWJiOCByZWxlYXNlMjQtbWFpbnQKKzUyMTkzIDQ1YWM5Y2UwYmIxNTcxNmRjMWNkZTQ0MTQ5OTRiZTE5MDE5OTI4YTIgcmVsZWFzZTI0LW1haW50Cis1MjE5NCA2YmIzNzVmNTU5Y2U0Njc0YzFjZTdjMzQzMDNhYWU5NjY2MzkyNDllIHJlbGVhc2UyNC1tYWludAorNTIxOTYgZTgxZmY5YWY2NDFkYjI1Y2JjM2NhMzk1Y2I5YTA5MzRhYjMxMWZlMiBsZWdhY3ktdHJ1bmsKKzUyMTk3IDZiMWRkZjM4N2JkMTk1ZTU4YmEzMjQzY2VhYjNkNjY2NjM1YjMwZGUgcGVwMzAyX3BoYXNlMgorNTIxOTggNTQzNGVkNGZlODYyMjY3MWUzYWJkZDk1NGMxNTk0OTY4YjAwOWRmNCByZWxlYXNlMjQtbWFpbnQKKzUyMTk5IDQ3MTNkOTkwMGU5ZTljYjcxNjBhZDFhODdhZGExM2Q4YjgzNTk1ZTcgcmVsZWFzZTI1LW1haW50Cis1MjIwMCA3NzY3NGMwZjkyMTQxMDY5NzU2ZmQ4NjgzY2QzZjk3MjczZjRmZmM5IGxlZ2FjeS10cnVuaworNTIyMDEgNzhkN2JlYTNjMTIyMGJhMjVhN2EzOTkzZTYxMDkzYjk5ZmYyMDc3MyByZWxlYXNlMjQtbWFpbnQKKzUyMjAyIGRkNTRiZDZhNmIxZWNhNGM1ZjMwNzY2OTI2ZGFjZjNjYmNkYTYzMmMgcmVsZWFzZTI0LW1haW50Cis1MjIwMyAwNzZjMjBjYTVkN2I2ZjM1OWMzZjk1NjE5YTVjMmM0YmU3ZmI4ZWEyIHJlbGVhc2UyNS1tYWludAorNTIyMDQgMjZjMmZmNzI4MDI3ZmY4OTJlM2FlZjEzNmU1NmFkMmIxOTg2MWJjZiBsZWdhY3ktdHJ1bmsKKzUyMjA4IDVhZWE4YjFmZDI2MjU0MGQ4NGY4ZWIxN2Q5NDhmMWMxYmY4ZjZiMjQgbGVnYWN5LXRydW5rCis1MjIwOSAzNTcxNDcwMGNmODdjNTRiMDQzMWFiODU0OWVjYmIyNWZiNWY1NGU0IHJlbGVhc2UyNS1tYWludAorNTIyMTEgMGU5ZmRiMTY0ZDIwNjEyZDY1Yjg2MjhkNWI1NTVmZDczZWIzYjUyMyBsZWdhY3ktdHJ1bmsKKzUyMjEyIDk5NGFkNzUwYjBlM2JjMDU4YzU4OTNiMWJkNWZmOTFkMTcyYWMzNTcgbGVnYWN5LXRydW5rCis1MjIxMyA1ZDgzOTk0Y2Q4Y2RmNDBhNGIzMzVhODNhZmFkYzY1ZTE0MDU4YTM1IGxlZ2FjeS10cnVuaworNTIyMTQgZDI0ZWFhZWRhNzQ4YzQxNmY2NzI2ZGNiODJjODRkODQ4MTM4MzU5NiByZWxlYXNlMjQtbWFpbnQKKzUyMjE1IDkxMThlYTc4MWZkNTJhZjRkYTY0OTQ0MTUyMDY1MDI2MWQ1NmRkZGIgcmVsZWFzZTI0LW1haW50Cis1MjIxNiAyYTA1ZWU0YTIzZTA3MWQxZWQyNWY4YzgwOTE5OTAzYWQ2MDI2OTI1IHJlbGVhc2UyNC1tYWludAorNTIyMTggN2MzNDk0NGQ0YzgwYmU5NzU4YzAwYzZlMmM2NjIxNWRlZGZmMGE3OCBsZWdhY3ktdHJ1bmsKKzUyMjE5IGEyZjI2Zjk0NGI2NTcxNzlhZmUzNmQzZTZkNmZmZThhMjgyYjkzNDQgcmVsZWFzZTI1LW1haW50Cis1MjIyMCBlZDg4ZDZiN2MxZjk2NjkwM2JkOTFkOWE5ZWU3ZTAzOTFhYjIzMjdhIHJlbGVhc2UyNS1tYWludAorNTIyMjEgMTZlMjg5MmUxZTNjMmEyNjkxNWMyNjE4ZTcwNWM4OWFiZDY0MmM5OSBsZWdhY3ktdHJ1bmsKKzUyMjIyIDllMDQzMWZkNjc0YTI0Zjk4ZGIxYmNhYjdhY2IzYzYxZTkwMmY4YmEgcmVsZWFzZTI1LW1haW50Cis1MjIyMyAzNDc3OTQzOTFjZTQzNDBiYjVjMjFiMWU4MWM2NDYyMmFkNWVlZmE4IGxlZ2FjeS10cnVuaworNTIyMjQgZDNjMTk0N2QxNjY2NTMxZTFiYTFiOTgxZjgxMjZiM2Q1YjAwYWVjNiByZWxlYXNlMjQtbWFpbnQKKzUyMjI1IDkzZTJiMzExMmQ3OWUxMDllYzViNjQwYTBkNDMzNTM1YjBmMTI2NWYgcmVsZWFzZTI1LW1haW50Cis1MjIyNiA2OTljYzZhNWM4NmViOGE1OWFiMDU2OTFkODA5NWFlZjUxY2U1ZTYwIHJlbGVhc2UyNC1tYWludAorNTIyMjcgYjlkMzMwMWU1ZjE5NWU2MGQ5OTM3YmE3YTk5ZTQ1YmNjMjQxYjQzYSBsZWdhY3ktdHJ1bmsKKzUyMjI4IGRlZWVhNGRhMWYzNTQ5ZWYzM2FkZWM2MTk2MDQ5Yzc0ZDQ3NGE4MmIgcmVsZWFzZTI1LW1haW50Cis1MjIyOSAyMDQ3NGQ5ZTc1ZTE0YmRjMjA0NDY5ZGFkNDA2YjhmZTM5Nzc4ZDY5IGxlZ2FjeS10cnVuaworNTIyMzAgZjgwNWNjY2UyZjU2NGUwNTJlNjg2OGMwYmI2ZTI3NDY5ODIzYzdhNCByZWxlYXNlMjUtbWFpbnQKKzUyMjMxIDY5M2ZmNWQ3MzQxMjUxZjk2MzE2ZWQxNjVlYjRlZWZjNDZkMzVkODQgcmVsZWFzZTI0LW1haW50Cis1MjIzMiAwZGMyNjFkOGM1N2ZhODQ1MzFmMWQyODNlMTkzYTA0YjQxMWYzYjJhIHJlbGVhc2UyNC1tYWludAorNTIyMzMgODM5NjU5NzdmMzRhMWFlMzk0NzUwMDIwYzM5OWQ4ODM2ZDA3ZGVmNCBsZWdhY3ktdHJ1bmsKKzUyMjM0IDc2ODg5NGYzM2YxYzM0N2Y0NDA0ZGU5NWRiZjNiZWUzNjMxYWVjZTIgcmVsZWFzZTI1LW1haW50Cis1MjIzNSA3MTE3ZjZlNWFjODM5OGRlNzFiYWZjZDI1NjNjMGI4MzFkNjBlZTY4IHJlbGVhc2UyNS1tYWludAorNTIyMzYgOTFiZTk2NjQ2NDA3MzI4YWE3N2ZkM2M0ODAyY2JjODhjOTgwMGU2MSBsZWdhY3ktdHJ1bmsKKzUyMjM3IDIwZGQxM2FlZTIzMzQ5MTIyOTIxYWNiMjJlN2UzNDQyY2I4NDFjNjUgcmVsZWFzZTI1LW1haW50Cis1MjIzOCBjMzM5YTFhMTZlYzViNjQxNTZkMjYwZmM2MTkwZDNkNmRmMTNiZjM2IGxlZ2FjeS10cnVuaworNTIyMzkgNDc1MjI4ZWQyMDU0Yzc4MmNlNTIzY2RhNjY0NDY4Yzk0NTA0MzAzYyByZWxlYXNlMjUtbWFpbnQKKzUyMjQwIDBhY2UzYzgwNjExNDEyZGI4ODAxZTdhMzQwNzhjYjM3OTBjNjkyYTcgcmVsZWFzZTI0LW1haW50Cis1MjI0MiBhZWVlOWY1YTBiM2VjMGU1YzViNjJiYWQzNjRmODI4NzNiMGIzM2E3IGxlZ2FjeS10cnVuaworNTIyNDMgZGUyYjZhMWM5YjMxMTExNTUxYzg2ZTBkYjhhODFhNzE0MGZlZDY0ZSByZWxlYXNlMjUtbWFpbnQKKzUyMjQ0IGE2MDQ5NWIzNmYzOGNiMmVjNGI1YjEwYjRlOGQ1OGJmMGViNjEyYjUgcmVsZWFzZTI0LW1haW50Cis1MjI0NSBjMzg3N2I2NDMwYjVkODllMmUwOWJjMWE0ZTg3NDYyMTFiN2Y2NzE5IGxlZ2FjeS10cnVuaworNTIyNDYgZWRhOTMxZjM5OGMwZDVlZmNhMGY0OGVkMjhiN2MyNGM1N2UwYzBhNyByZWxlYXNlMjQtbWFpbnQKKzUyMjQ3IGVkZTA1ZDM0YzUxODNmZTMxNmE0ZWJjMDBjNzQ4ODBmM2RhOWMzYzAgcmVsZWFzZTI0LW1haW50Cis1MjI0OSA0ZWVmY2U4YmMyZjc0OGEzMzdkYTdmYmMwMDdiYjIyNGExOWUwOGQ3IHJlbGVhc2UyNC1tYWludAorNTIyNTEgNjY1ZDc3OThhMWJjOGE2MGI2OGJkZjMyZWVhMDM5NDJlYTRjNjNlZCBsZWdhY3ktdHJ1bmsKKzUyMjUyIGJmNmEwMmFkYTQ0OWU0YTJjOTgyZTUzNjM0NjM4NDVlODg2MGEwYjcgcmVsZWFzZTI1LW1haW50Cis1MjI1MyAzODM1Njk1MWMxOWY5OGFhNjRlZTQ0ZTY3YzE0NWVjNzcwYjMwY2E1IHJlbGVhc2UyNC1tYWludAorNTIyNTQgMWU0ZTAxNWMwN2MwNzRkZTdkYjQ5ODAzNDZkOGQxMTI1MzliNGE2OSByZWxlYXNlMjUtbWFpbnQKKzUyMjU1IGY0NmJhZGM4ZGMyMTMzOTgyZTMyOGU0NjBjOWMwODNhMjI2YTJhMjAgbGVnYWN5LXRydW5rCis1MjI1NiBkMzNlNDAxMWUyMDI5NDc5YWFhNTdlY2IwYmMwOWZkZTc3Yzk3OTg0IHJlbGVhc2UyNC1tYWludAorNTIyNTcgMjhkYjYxMTAxNDYzNmVlYTFjODhkMGNkM2ZjMmNkYjE0Yzg4NDMyZCBsZWdhY3ktdHJ1bmsKKzUyMjU4IDhjYTlhN2IxMWE3ZDQyNjFiYTBjMmI4ZTZhM2FiMDdkMzZlYTIzZTcgcmVsZWFzZTI1LW1haW50Cis1MjI1OSA1MmI2NWYyOGJlMTcxNzIwMzFjMzMwMjM4NTUxMzdlOGE0OGViNWM0IHJlbGVhc2UyNC1tYWludAorNTIyNjAgY2U1MTUwMzJmY2UzN2FhMWIwZDg3NjhkMDc3NjJkNzFiMmVlMTVmMCByZWxlYXNlMjQtbWFpbnQKKzUyMjY2IDMwOTA5ZTFjYWY3OWM4ZDU0NDYyZDVkNTkzMmFhNmFmZWJhZjkzMTcgcmVsZWFzZTI0LW1haW50Cis1MjI2NyAwZGFjNmRlMGZlNzhhZGZiZjk4ZmRlZWE0MzE4MGZmZTg4MzhjNmY1IHJlbGVhc2UyNS1tYWludAorNTIyNjggNjZiODNkMWJhMmZjNWY5OWY5OTI1N2FhMzNmN2Q4MDYzYzdmMWU0MyBsZWdhY3ktdHJ1bmsKKzUyMjY5IGIyZWRkNTEyNDFhZTIyMWE5NGNiMWQxNDY2NmQxZjZmMjkzNTdkMTUgcmVsZWFzZTI0LW1haW50Cis1MjI3MSA1NmI5MTFkY2MxODVhYzYwZmFlOWJlODM0ZWQ1NjNlZmJiZjg5ZDBiIHJlbGVhc2UyNC1tYWludAorNTIyNzIgZjdmYmRjNTYyZDdhZGY2ODk3YTNkNjhhN2QxYjhiNDIzYjE4MWY0MSByZWxlYXNlMjQtbWFpbnQKKzUyMjczIDViY2FiNGNhNjYwODA0OTdlYmQ3Y2NjYzc3ZDkyYjgwZjIzODc1NzUgcmVsZWFzZTI0LW1haW50Cis1MjI3NCA5ODUxMjY4NzM3NDBkZWY1NTc3M2JkZTU0MGM2ZDI2MjMxY2M0NmFjIHJlbGVhc2UyNC1tYWludAorNTIyNzUgYTFjMzgxYzA1ZGRlYzQ2NzcwOGVmNDlkOWVkMmMwZGE4ZGVmNTk3ZCByZWxlYXNlMjQtbWFpbnQKKzUyMjc2IGJhYWVlYTcyMmIxYzk3Y2EwMzE3OWU1YTAyYTQ3MTdlNzAxN2JhMmEgcmVsZWFzZTI0LW1haW50Cis1MjI4MiBhMDQ1NGYxZjk3YzZjYWJiMzZjNGZhY2NjNTg5MzhjOWRiZjA5NDVhIHJlbGVhc2UyNC1tYWludAorNTIyOTMgYWM2NTBhZDZjODE3YmUyYTU2Njg3YWEwYzc5M2QxMWQ5MzQzODI2OSBsZWdhY3ktdHJ1bmsKKzUyMjk0IDY4YjRkMGRhYjQ5YWQxZWVkNmI2Mzg2YzhlNjIwZGY2OTcyOGYzNDAgcmVsZWFzZTI1LW1haW50Cis1MjI5NSA3MDE0MGNjY2QzZGE3M2JkZDQyNjM5OGNmYjVhMTAwMzgxMThiMDM4IGxlZ2FjeS10cnVuaworNTIyOTYgNjY3MGRkYTRiMjdkOWYyZDEyMjBlYjQ5NGUyYmQ4ZjE2ZTg0ZDBjNSByZWxlYXNlMjUtbWFpbnQKKzUyMjk3IGRlYjFhMGI1ZGJjYjhlYWI3ZDg0OWJmMjE0ZDUxNzYxNmJhYjRjZTEgbGVnYWN5LXRydW5rCis1MjI5OCBjNjhmYWMxZWI2Y2JlNDc4YjRjNjU4MzkxNmU3MWM0MTkwOTNkYmQ1IHJlbGVhc2UyNS1tYWludAorNTIyOTkgYzAyMDgxOTVhNTU4NTA3NTYzYThiZGZjNTM3MDJkMzM0NDBkMzc0OSBsZWdhY3ktdHJ1bmsKKzUyMzAwIDc2NDBhNTc4MjJhNjdhYzZhZDk0MTkyY2RmNGU3YjM0ZTlmNjdjN2YgcmVsZWFzZTI1LW1haW50Cis1MjMwMSA2NDc1OThjMWE5ZDkyNDNiYzZmZGJhMDY3YmU0OGFhMTE3MzMyNDYyIGxlZ2FjeS10cnVuaworNTIzMDIgNmU2YzIyMGMyZmE2MjJhYzI2OGRkNGY4NTcxNTIzOGJjYjVjMWY3YiByZWxlYXNlMjUtbWFpbnQKKzUyMzAzIGQyN2U3NjMyNjgxOTg3YWU1Njk5YjUxZDg3YzI2MDRiMjcxNDM4OGQgbGVnYWN5LXRydW5rCis1MjMwNCAxN2Y0MTc4MDllMjM5ODNjMDNkNjY2MmZiY2U0YzQ5NmNjYjNmNzYyIHJlbGVhc2UyNS1tYWludAorNTIzMDUgNDE1OTM4NmY4ZGJkZmMwNTU2ZDYzMDc2YWVmNWU2ZGE0MzFhMzc5ZCBsZWdhY3ktdHJ1bmsKKzUyMzA2IGEwYmY3MjgxYmQyMGI2NWE1ODRmNGE2Mjk5Y2JlY2UyNTk1NmQ4MzQgcmVsZWFzZTI1LW1haW50Cis1MjMwNyAxMGFiZmNiNjZlNjdiZGVmYTdkN2M1NzA5ZDk1NzA2N2ZlMjRmZTI3IGxlZ2FjeS10cnVuaworNTIzMDggY2Q1ZjdjZDIwOThlYjNmNzRhYmU4ZmI4NGZmYTkxMGIyZjEwNmViNiByZWxlYXNlMjUtbWFpbnQKKzUyMzA5IGY0NDMwYmVjMzAxM2UyOGY5MTExNDVkYTVhZTZjMGQ2OTE3MDgxY2QgbGVnYWN5LXRydW5rCis1MjMxMCAxYTFhNTlmNTBiNGFlMjI4Zjk2MWM5YzJkZGYzNTY1YzllNzUyMTAyIHJlbGVhc2UyNS1tYWludAorNTIzMTEgYTI0ODAxZGE5MmVlMGQ1MmI2MTAzMGZhZDdhNzBlNWU2YWYxYjhiNiBsZWdhY3ktdHJ1bmsKKzUyMzEyIDFlOGU5MDBkOWY0OWQyN2I0MGIyNWI2NDNhNDNjYWI5NWI5NjdjOWIgcmVsZWFzZTI1LW1haW50Cis1MjMxMyA3ZmFiYmM0YTBjNGU4NmI2NjgwM2U4NDYyZDc3YzQ5ODE3OWU2MWY5IGxlZ2FjeS10cnVuaworNTIzMTQgM2NmYTg4ZmIwZjQ1Mzk3OGMwYTZmMjBiMDNjMjY2ZjgyODQzNDEyZSByZWxlYXNlMjUtbWFpbnQKKzUyMzE1IDYzNTQzOGIyOTY3M2ZkNjExZjIyOTliZDdjODY5ZWYyMTRiZWRiMWYgbGVnYWN5LXRydW5rCis1MjMxNiBjNGM0ZWVjNjRjMTM2NGJjNjg4NGFjMGI1NGE2YmY3MDg2ODMxNGU2IGxlZ2FjeS10cnVuaworNTIzMTkgYzc3ZDlhOWZlNzA0MzY5MmYzY2NlMmNhZTEyMTIxNzk0YzFhZDY5OSB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTIzMjAgOGU2ODViMjM4OWRjZWVhZjM5MTRhNTE0NjA5NjEzNDg1YjRjNmNkYiB0aGVsbGVyX21vZHVsZWZpbmRlcgorNTIzMjcgMzliOTkxYmE4NzhmNzkwNWM2ODQyODU0NTMxNjVkZGY2ZmU4MWJkZCBsZWdhY3ktdHJ1bmsKKzUyMzMxIDEwOWY5MGMyNjZmYmMyODczNmM0MzVhNWQ5OTAzNWVmMzA3YmFiY2EgYmNhbm5vbi1vYmpjYXAKKzUyMzMyIDM5ODVkN2UyMDY3ZGI3NWYxNzBlMDg5MTk5NGIwZmQ3MDk2M2U0MGIgbGVnYWN5LXRydW5rCis1MjMzMyBiNjFhOTBlNzQ3ZTdjOTI5MDI1Mjk4M2M2NTZhNDI3MmM3OWY3ZjA2IGxlZ2FjeS10cnVuaworNTIzMzQgODRkM2I3MmRjMzM5MmE2ZDEwZGVjZjliYWNlMGI1YmI3YWMxMjFmOSByZWxlYXNlMjUtbWFpbnQKKzUyMzM1IGI5NGJjYjdhZWQzZGQzYWE3YTBjOWU3YTAyZGQ4ODg5ZWY4ZDIwMGUgbGVnYWN5LXRydW5rCis1MjMzNiAzYmM0YTk0MDFhMTE2MTdiNTY1NzYyZmJkMDEwZmY1MzAyOGQ1NWFiIGxlZ2FjeS10cnVuaworNTIzMzcgZGFlNzRhODA5NGQ5MGEzYjBjNTI2OWZlNjYxZWFhMDA1YjJjZmJiOCByZWxlYXNlMjUtbWFpbnQKKzUyMzM4IGJiMzVjNTViYzQ2NzBiZDBkZWIyOTU3NmUxOWM2Zjg1ZGRmMDJmOGQgbGVnYWN5LXRydW5rCis1MjMzOSAwZjUwNWVjOGI5N2FhMjFlMGZhYTE2ZDQ0MGY0NjkwZjczZDUxZTI1IGxlZ2FjeS10cnVuaworNTIzNDAgNDVlZmU0MzU2YjYxZWRhMDMwOTY3ZjExOTk3ODRhOGZmNGMwOWI5YyByZWxlYXNlMjUtbWFpbnQKKzUyMzQxIGMwMDZkMjI3OTQ4ZGVlZDQ5ZGM4MWUxM2IwNjM1NmEyZTA2OThjMTggbGVnYWN5LXRydW5rCis1MjM0MiAwNWMwY2QyN2FiY2EwODY2MTM0MGNhN2NlODAzNDNjZjdiOWI4NjAyIGxlZ2FjeS10cnVuaworNTIzNDMgZGU4OGMzNjNkNjIyMzYyODYzMzI4ZTI2ZTJiYTMyYWQ4YzJkMmEyMyBsZWdhY3ktdHJ1bmsKKzUyMzQ0IGEyOWQxMDBjNzgxNTNjMTBhMmEyNGFlNzBiYThhOTVhZTg5MjY3YzEgbGVnYWN5LXRydW5rCis1MjM0NSA1NjE1ZWFjOGFhNzk3NmZjZTY2NjJkODg0NjZjNDNhYmZjM2M0NWUyIHJlbGVhc2UyNS1tYWludAorNTIzNDYgMmExYTVkYzI1NWFkYzkyYjcxMTQ4NjgxNTc1YTFhYmMxZjQ5MTY2NiBsZWdhY3ktdHJ1bmsKKzUyMzQ3IDFlNTU1ZjA0OGUzZDRiYmUwYjYzMGM5NDMyYzQzNjVlYjZiMWU5NjIgcmVsZWFzZTI1LW1haW50Cis1MjM1NCBmYTk2YmZmOTNiY2FkMDBhZDczZDY5Mjc0OGY4NjgzOTAzMmUxZTUwIGxlZ2FjeS10cnVuaworNTIzNTYgYmY4ZGFmNGE2ZTcxYTFlYTJlNWRlNTFmYzY0OGRmNzVlNWFhODg0MSBsZWdhY3ktdHJ1bmsKKzUyMzU3IDQ2OWMyZDZjODE2NWIyNTY3NTMzNWFhNWVhMzllODkwYzM5NzBhYWUgcmVsZWFzZTI1LW1haW50Cis1MjM1OCA4NTA1MDgzOTFkNDZiZGU0ZTAwMTcyYTQ5NDkxYzFhYjI5NjAwYTgzIHJlbGVhc2UyNC1tYWludAorNTIzNTkgZTFjYjMyNjQ1Zjc3ZTFmOTdlZjkxNzdjYzEwMTExZDcxODBlYTYwZSByZWxlYXNlMjQtbWFpbnQKKzUyMzYwIDdjN2ViMTkwYjI2NjMwZmM2MmU2NGU4OTU1MDk1MjZkYjZjM2YyNTUgbGVnYWN5LXRydW5rCis1MjM2MSBhNjUxMWU4Mjk3ZjA0OGM1MzJhODc0OTU2Y2VkYTU1ZmY5NTg2ZWNhIHJlbGVhc2UyNS1tYWludAorNTIzNjIgZmI1ZGIxMmYwMjY3NjAyMTljOGFjNjM0NDE1MmM0NjE2OWE0NTIxMyByZWxlYXNlMjUtbWFpbnQKKzUyMzYzIDE0NTEzZGIwZDYyZDUwZmYyMmEyMzc2MWUzM2I5MzU4NzdmZjJlZmEgbGVnYWN5LXRydW5rCis1MjM2NSA1MmZlMGVjZjU1YzFhMTgxMDVmZjVjMmQ3NzlhODcxZjdmY2FmNTQ4IGxlZ2FjeS10cnVuaworNTIzNjcgNDA1MGYyNTNhNmY4YTVmMDI3OTM4OGNiNmVhMTA3OTliNjc5ZDNkNyByZWxlYXNlMjUtbWFpbnQKKzUyMzcyIDM0NTU1NDIyZGM0NWY4OGY1MjkzZmI5ZmJhMzE5YjU1OWU4NzZhYTkgYmNhbm5vbi1vYmpjYXAKKzUyMzc3IDQ5OGNmNGIwOWQ4YWMwM2U0NWYzYTBlMjZhNzNjYjkxM2ZlNzY3ODAgbGVnYWN5LXRydW5rCis1MjM3OCA2NjA5ZjAyMDY0OWYwZDBjZjY1M2U2OWU4YTE5MDZhODZhM2NhNGQzIGxlZ2FjeS10cnVuaworNTIzNzkgYTFhNjc5MTA1Mjg4NmM4OTBhMGYxMTljNTI1YzNkMjcxOGYyN2M0YyBsZWdhY3ktdHJ1bmsKKzUyMzgwIGIxZDcwOGMzM2VhYjQyOTAyNjJlOTY4NTNjZmI0MzQ1ZjllMDczMGEgcmVsZWFzZTI0LW1haW50Cis1MjM4MSBmYjBjNmE2N2E5MzllOGEyZWEyNzc5Zjc5ZTMyYzNiNzY4OWMzN2U0IHJlbGVhc2UyNS1tYWludAorNTIzODIgZWU2NmExNWE5MDMwMjFjYTI1MDRhMzIzMjRkM2RjYmM0NmVhOGE5YiByZWxlYXNlMjQtbWFpbnQKKzUyMzgzIDU5MmFjOTM1MzJlZmRmYTlhNDBmNDdiOTZiMWMxMjMxZDJlYWUwZTUgcmVsZWFzZTI0LW1haW50Cis1MjM4NCAxMDQzNGQxYjQyNjYxYjcwMDE4OGM4MmVmYzM1MDcxZjgyNGNjMWU0IHJlbGVhc2UyNC1tYWludAorNTIzODcgNDEwYzFjNzhlZDUxZTEyZGMzZGU5NTc5NTlmNmI3OTcwYzM3OTk0YSBsZWdhY3ktdHJ1bmsKKzUyMzg4IGUyZGYxMzU2MzQ5ZjE2OGJhZWJiMzM1ZTIxYzE1ODMzMzA0M2Q0ZGYgbGVnYWN5LXRydW5rCis1MjM4OSAwNTA5YWIxNGIyZDk3Y2VlZWZlMjVlOTY0MzJmNGUzNzNlYWFiODJlIGxlZ2FjeS10cnVuaworNTIzOTAgMThjMTJkMzQyMTQzODJmYWY4YzVmYTVjYjNjNjM2NDkwNTM4NDJjNiBsZWdhY3ktdHJ1bmsKKzUyMzkxIDE5ZGUzMTY0OTJlNzM4Y2VlZGVjYjhlYzU4MDg0NzUxMzZkYzY2YzAgcmVsZWFzZTI1LW1haW50Cis1MjM5NCAzYjg1MzMzNDI4Zjk4NmRkNmQ5MWQ1N2YwN2NlNTA3MjFiMDE4NWI1IHJlbGVhc2UyNS1tYWludAorNTI0MDUgODZlYTg4YzUyMDViZjUwNDUxYTMyMzBmNjczNWRjYzJmMjNjOTYzYSByZWxlYXNlMjUtbWFpbnQKKzUyNDE0IDgyNmU4Njc0YTExZDU4OTU3ZmJhZWFkZGU4YzA5NjRlZWMwN2YyMzEgbGVnYWN5LXRydW5rCis1MjQxNSBhMGQ5ZmNmNmYyMTUzZjUyOTdhMTRiZTJlMTk3ZGI5NWExNzE5ODlkIGxlZ2FjeS10cnVuaworNTI0MTYgMzg0ZWY4N2ZjYzI1NzllYTZkNWU5Yjc3ODUwMmEwYzRmZjhjNTEyMCBsZWdhY3ktdHJ1bmsKKzUyNDE3IGM1NDQyYjQyNGE4NjkzODVlMDMzY2U3YzI4ZmU3YWE2MDI3ZGZhNmMgcmVsZWFzZTI1LW1haW50Cis1MjQxOCA1MDMwZmI0YTQwMGZlYmI5YWM4Y2Q0NzkyYjg2NzZiOGU1OThkOTU1IGxlZ2FjeS10cnVuaworNTI0MTkgZTljODQ0YzRkMWExYzk1ODdlZmQ3NmQ5ZTExYjdhZDc5N2FhZWZjYiByZWxlYXNlMjUtbWFpbnQKKzUyNDIwIDc0OWQ4NTVlZTM1NzFhYjdlNTdjMmY0OTE4ZDU1MTAyMWNmYTYzYzEgbGVnYWN5LXRydW5rCis1MjQyMSAxMjNjMTRlZDMwOGExNTM4MWQ0MGIwODM5ZjUzN2QwOGVlZmU4Y2I2IHJlbGVhc2UyNS1tYWludAorNTI0MjMgNGVjZjE2NjI0NDk4NDRlNmUwY2RjOTliNDQ4MTdjZDNkOWQ5MWNiMCByZWxlYXNlMjMtbWFpbnQKKzUyNDI0IDhjZDBiNzExM2E3MWEwNTUxZTM4MzBjZmZmZmE1OGEwMTgxNmEwNGYgcmVsZWFzZTIzLW1haW50Cis1MjQyNSBiMjE0MjdmZjI2NDc1ZjljN2Y0YTcwMWRhMzI0ZTk1MWMyYjE2MmZlIHJlbGVhc2UyMy1tYWludAorNTI0MjYgY2RkMzQ3NmQxYjA2YjNiNGVjYzg5ZWQzNWQ1YjQ4YjZkZmI2MDNhNiByZWxlYXNlMjMtbWFpbnQKKzUyNDMxIGU4MmU2OTZjMDNkYzhhZDYzNmE3MzMxNzUzMzJmMjdjNWM3YzY3YjcgbGVnYWN5LXRydW5rCis1MjQzMiAwNTAwNDBjYmEyNmE0NWE4MTk5OGJkNzk1YTJhNmUyZDAzMzRmNTZhIHJlbGVhc2UyNS1tYWludAorNTI0NDYgOTE4NjU5ODI5NmNiMDllMTU5NTVhNTdkMTg5YTI3MWY5ZDdlODllZCBsZWdhY3ktdHJ1bmsKKzUyNDQ3IDk0NzM2NmUxMzFmZGFlMjAxMmQ4Zjk2YjJkMjlmZjk2MWI2MjhjYTUgcmVsZWFzZTI1LW1haW50Cis1MjQ0OCBkNzhhN2E2MDU2MTkzOTY4ZTg4NTZjYzgyN2Q4M2QxMTM5Zjg4NGU0IHJlbGVhc2UyNC1tYWludAorNTI0NDkgMTU4NmZhYjNjODQ4Yjk0NDcyN2UxYzRmZGQ5N2FmYjM5NjNiNjdlMiBsZWdhY3ktdHJ1bmsKKzUyNDUyIDBjMWNiOTJkYWM5N2VmMzllMTE1ZjljNTljYTMzNDkzOWU4YmM4ZTggbGVnYWN5LXRydW5rCis1MjQ1MyAwZTgzZjhjNWQ3MGFlYzM0NzMxYjBiOGUxZmM1YTcwYWNmYzYyODIyIHJlbGVhc2UyNS1tYWludAorNTI0NTQgYzBmNTZmMjQ2MWY1Mjk4ZmJjMTM5MTRmNzllYTNjNzE0NmZmODc2OSBsZWdhY3ktdHJ1bmsKKzUyNDU1IDVkYzQ3MzE2NTA4ZmI0ZThiZjI2YmQwMmZkYTU1ZTBlZGFhMDFlNDYgcmVsZWFzZTI1LW1haW50Cis1MjQ1NiAwMTVmODlhNzM5MjllNGJiM2NkMmI0N2RkMDAyMWEyMmYzNTg0NGVjIGxlZ2FjeS10cnVuaworNTI0NTcgMzRkY2JjNzQ2MjQzZTY3YzIxNmNjOWM5YWE0OGFlY2JiMDA2OWIxOCByZWxlYXNlMjUtbWFpbnQKKzUyNDU4IGU1Y2I0Y2I1NjU0MWI5N2NiMDI3ZWRhYTJlYmI0ZGJhMzZhNzNlNjQgbGVnYWN5LXRydW5rCis1MjQ1OSBkM2RiYjMyNmZmYmFjNzlhNTdjMzlmNmI3NWNhOTU0ZTRmNjRiNWIzIGxlZ2FjeS10cnVuaworNTI0NjAgYWQ0YzliYTFkYjU3ZmQxZTAyYzA0ZDY2OTc5MWZiOTdlNmI1ZjM1MSBsZWdhY3ktdHJ1bmsKKzUyNDYxIDVhMTA2YjRiY2RkMjhmMjNhYzNiZjk0OWZjZTE5MGUwMGE5N2UxOTYgbGVnYWN5LXRydW5rCis1MjQ2MiBlNTc4MmUyYTQxMmJhMThlMzJiYjY5NmM0Y2U4YjExNTM0Y2YxNzljIGxlZ2FjeS10cnVuaworNTI0NjMgN2FmOTRhMjcyM2VjYjEzNGZmZTBiMGRiYjAzYWVhMWFlOTIzNWY3YSByZWxlYXNlMjUtbWFpbnQKKzUyNDY0IDBkNTE3NmUyYmZlNGI0NGE5MWU3NGIyMzYxZDJmMzkzMzg1YzMyYTMgbGVnYWN5LXRydW5rCis1MjQ2NSBkZGIxZGI1NjU2MDg5M2M0YjdhNTYwZTU5MDM1NWE5ZTVjZTZlMTBiIHJlbGVhc2UyNS1tYWludAorNTI0NjYgZTg2N2I1OTUwNzllOTI3ZTRmMmNlZGY5YTBiYTQyYjUxMTc5MDU5YyBsZWdhY3ktdHJ1bmsKKzUyNDY3IGI1NmI1NjJlM2E3YjdjODFmMTBlMTY5NmFmYWNlMTlkMjA1MmYyYzYgcmVsZWFzZTI1LW1haW50Cis1MjQ2OCA3NjJkY2FkNzIwYjUzZWFjZjE0YTdjMzcwNmY3MmVlNTljMTVkMGJmIHJlbGVhc2UyNC1tYWludAorNTI0NjkgZTJlODBhMDE2OTQ1MjIwOWE2ZTRkMjJiYzljY2FkMjAwMWVkNDdiYiBsZWdhY3ktdHJ1bmsKKzUyNDcwIGM1YTZhY2UzZmM3ZmQyNTRiMjM4ZDdiYzBiNGEyMjk5YzQxMmQxOTYgcmVsZWFzZTI1LW1haW50Cis1MjQ3MSA1OGRiOTY4ZDE0NDgyZTdjOTQ1NWJiMmI3NzZmZjJkNmUwZDc5MjVhIHJlbGVhc2UyNC1tYWludAorNTI0NzIgNmI5MWMwZGNlYTU4YTY2NmI3OTExY2Y4ZGYwYzg3YzBmNzg2ZDQwYyByZWxlYXNlMjQtbWFpbnQKKzUyNDczIDhmOWFkMzU4MTM2ZjAzOTE0MjlkNDFiNWZiYWQzNjZiNjMwMGMyYjQgbGVnYWN5LXRydW5rCis1MjQ3NCAyOWMwMWU2MmNlNmJjYWU2ODE2OTBjMjZjZDJhNTJlM2NjMTgxY2ZkIHJlbGVhc2UyNS1tYWludAorNTI0NzUgMTk1NTU5YzViYWNkZjA2YzI2MmY2MGRmZWZmNDE3MTM4N2Q4YWU1YSByZWxlYXNlMjQtbWFpbnQKKzUyNDc2IGUzYjljNjM5NzcyMzQ4MmNkMWFlYjk2M2RkNDNiZWZiYzIwNWVmZTIgbGVnYWN5LXRydW5rCis1MjQ3NyBmNDViMmYwYzU0MmZjM2MyYjhhZWE3NWU5NjZlMjIwZjVmOTYwY2E2IHJlbGVhc2UyNS1tYWludAorNTI0NzggNzcwYzcxOGJjOTdlMDJhMmIzY2IyN2U0ZGI5Y2QzNTBhZTFkZDYzYSBsZWdhY3ktdHJ1bmsKKzUyNDc5IGJiMGRiNDVmMjBlYTJiYzM3N2ZiNDZlYWI1NDc2ZGUyNWUyZjFmMjMgcmVsZWFzZTI1LW1haW50Cis1MjQ4MCBmYjlhN2IyODhkY2UyOTQzNTU2ZTI1NTczZDEwN2EyYTZiMDkxY2M0IGxlZ2FjeS10cnVuaworNTI0ODEgOWQ2OTFkMzc1NWQwZGU0ZTFlYjEyNzQ5YjljMzFmN2Q5YWY2OTdhZCBsZWdhY3ktdHJ1bmsKKzUyNDgyIGI5MTE2NmU4ZDM4ZGIwYzcxYzNlZDM5ZTZjZjljOWE0MzNlN2YzN2EgcmVsZWFzZTI1LW1haW50Cis1MjQ4MyA5OGU5MDA0OTkwNDM0MTU0MGNiMjkwMDRkOWQzZTQ5OTU0ZGNiNmZiIGxlZ2FjeS10cnVuaworNTI0ODQgODYyNDkwOWY1MDMxZjQwZDkyNTVmN2U2NzdmOGQ3MDkxMTI5ZGYxMyBsZWdhY3ktdHJ1bmsKKzUyNDg1IDk4OGQ5NWZmMWZkYjcyYWQwNTdjODA3Zjg3MDZhNzM5MGI2ZjBhMWYgbGVnYWN5LXRydW5rCis1MjQ4NiAxODg3MWExMGZmYzFmYTU0ZmNiMjA5ZjgyYTU5ZjE2NWYyMjE4MjE4IHJlbGVhc2UyNS1tYWludAorNTI0ODcgNDNhODI2NDY3YWQzY2VhYmZiNDE0NGE3NGEwNTIwMTNlMWJjOTUwZSBsZWdhY3ktdHJ1bmsKKzUyNDg4IDVkNWYxODQ0MzY2NGQxNTcyMmQyYTc2ZmQ0NDkwMTJkNGE5MTVlNTkgbGVnYWN5LXRydW5rCis1MjQ4OSBkYzFlNDM2MTc5NzI4MjJmMjdkMTdiYmMyNzc3MWE1ZjRmYWY3N2JlIHJlbGVhc2UyNS1tYWludAorNTI0OTAgZDBiZDhhOGFmYjAxMDNjNmMxM2M1M2M1ZjVmYjgxOTdjNGExMDkxNCBwM3lrCis1MjQ5MSAxY2NlMDUyNmQ5YjBhNTNmNGZmOTU3MTNkZGUxNTNkYzcwZGFlMmRjIHAzeWsKKzUyNDkyIDIxOTA4YzcwZDI2NGJjZjkzMjczODgzOWM0M2Y0YTEzZDYwYjM3NTYgbGVnYWN5LXRydW5rCis1MjQ5MyAxM2I4YWQ2NzlkZWZjNzQzNGIxYmExYzVlMzNhMWZiMjM0OTgwOGZjIGxlZ2FjeS10cnVuaworNTI0OTQgNTEzMzlkMzlhNTk2YWZmMDJhZDE1YzM4ODQ2N2FiZDcxYjM2MTA1NiBsZWdhY3ktdHJ1bmsKKzUyNDk1IDY5NzI4YTdkMjMxMjM5Y2VjNTE1MGViN2IxNWRiZjZlOGM3NWI1MTIgbGVnYWN5LXRydW5rCis1MjQ5NiA3ZDBiZGQ2ZTFjNDY4YjJiNTYxYTYzNTU0M2I4ZmUyZmE3YjMxMDFjIGxlZ2FjeS10cnVuaworNTI0OTcgYzM4MWZjZjlkMTA4MWM2NTVkOGM2NmU5NTJmOWZmZTI5N2Y4OTBkYyBsZWdhY3ktdHJ1bmsKKzUyNDk4IDJkNWE1ZGVkZDk3NTk2ODFlOWViMjNiMWI5NzVkNDI4NzlmZjgwMWUgcmVsZWFzZTI1LW1haW50Cis1MjUwMCA0YzUzYjI0M2MzOTIyYTQ1NDMxNWMzZWU1NzZjNGYyMDdkZWRkMTI4IGxlZ2FjeS10cnVuaworNTI1MDEgYzU4ZDFiOTY5ODQzOGU2YWMwZjhmNGJkMDE0YmUwNWE2YTk0ZTI3NiBsZWdhY3ktdHJ1bmsKKzUyNTAyIDc5NjMwNGVmYTI2OGMwNWQyZTNlOTdmODhjNjIwOGRkNTc2ZmMzMzEgbGVnYWN5LXRydW5rCis1MjUwMyA2MWU0YjU5YWRhMGMyOWVmOTI0ZDExYTg2MmYwZWY1NjIzMzNiMTE0IGxlZ2FjeS10cnVuaworNTI1MDQgMzYwODYwNWE3NGQ1OGU1NmVhOGEyYTllM2IxNTgyYjU3ODc3Y2FhNyBsZWdhY3ktdHJ1bmsKKzUyNTA1IGM0ZTVlNTNiYTczZjM1OGI5ODk0MDFjZjM0NzNiZDQxNmVlZjA0NzUgbGVnYWN5LXRydW5rCis1MjUwNiAzMjFjMDc1Zjk1Y2ZkYWM3ZDFlMThiYjA1MWFlMzgwZmRiYmYyMjViIGxlZ2FjeS10cnVuaworNTI1MDcgYTE4NjM4MzNjNGU2ZjcwYWM4OTI4Njk5NjU5ODIwN2U3OWNkMWY3YiByZWxlYXNlMjUtbWFpbnQKKzUyNTA4IDRjNjFmNDAwY2UzMGQwY2I5Zjg1NmMwYjhmMTQzNGU4ZWZmYWQ1MTQgcmVsZWFzZTI1LW1haW50Cis1MjUwOSAzODBhMzVkNzhjNjA4OTZiODY5ZjI3MGU5MGNkMTkxZDFhMGM1NGE4IHJlbGVhc2UyNS1tYWludAorNTI1MTAgOWFjYzE3NzVkNTcxNGJiZmUyMTkwM2IxNGVmNTZmZTJlMzNjMWEzNSByZWxlYXNlMjUtbWFpbnQKKzUyNTExIDZhNjQ2OWUyOTRlNzJmY2FiYzlhNDBhMzU4ZWFjYTA4N2YxNWFkYTQgcmVsZWFzZTI1LW1haW50Cis1MjUxMiBkMDIwZTJmNzA4YmU4MjlmMzU5N2M0MWU4ODYyYzI5NGMxOTAzZjhjIHJlbGVhc2UyNS1tYWludAorNTI1MTMgZGUyNjFmNzYzYjRjYzA0OTU5MDQ3ZmNhZTRiOWY2MDJmNTYzMWZiYiBsZWdhY3ktdHJ1bmsKKzUyNTE0IDQ4MWJiYTQxZjlmNDUwZTI2NWYxYTkxNzJhMGI0NmI2ZDQ0OWMyMzYgbGVnYWN5LXRydW5rCis1MjUxNSBkMjFkZDhjYmM3MTYxNjdhMDQxNmM4NzM2OTRiMzY1MmNjYzlkZmUyIHJlbGVhc2UyNS1tYWludAorNTI1MTcgN2M0MDU4NjgxMjI0OTU1ZGU2YWVhMmZhYmE0YTFhYWYyMzNjMTllNCBsZWdhY3ktdHJ1bmsKKzUyNTE4IGQyNDVlZmM3ZWM4OTAwNDhhZWM3MWJlYzljY2YxNDIxNGQ4M2VhNWUgcmVsZWFzZTI1LW1haW50Cis1MjUxOSA2YTg2MGM4MWFiN2QwODM5ODI3OGM3Y2E2ZDY5NjNiZTQzNmQxZWM5IGxlZ2FjeS10cnVuaworNTI1MjAgNGQ4MzNmY2EzNjcwMmNiZWFjNDczNjE2MDIzNDg4ZDkwN2QxZTg2NCBsZWdhY3ktdHJ1bmsKKzUyNTIxIDJhMWVhZTZjMGViODYyYTVhODRkYmU1MDBiMjBiZGM1MmE4NGMxN2QgbGVnYWN5LXRydW5rCis1MjUyMiBhNzJkOTcwYzM4NGJkMTM1OTRjNTYzMTViOGE1ZTJhYjNlYWVhNDc5IGxlZ2FjeS10cnVuaworNTI1MjMgM2QzZjEyN2QzZTBjNzliZTgzZmI1MGIyY2ZmMzUwZjczMGZlMGY3YyByZWxlYXNlMjUtbWFpbnQKKzUyNTI0IGZkOGE1ZjkyNWQ0ZDUxMzljZTI2MjM3MjExM2JmZGYxMzIyNWE2OTMgbGVnYWN5LXRydW5rCis1MjUyNSBlZDIyY2E4Zjc4ZmYwM2E1MzBiMGJmZDUwNjMzZmRhNGRhOTBlZGNkIHJlbGVhc2UyNS1tYWludAorNTI1MjYgYzdkNzc4ZGExNjJjOTIwZmFhZWMyYjNlMTNmYjg5ZWEzNTUxMzExYiBsZWdhY3ktdHJ1bmsKKzUyNTI3IDk2NjMxMDBjOTVjYTJkMjYxMjE3MTU0Zjc0MzY0YTBlN2M3MDFhZWEgbGVnYWN5LXRydW5rCis1MjUyOCA3YzQ0MTQ0NzE0ZjY4ZjkyYTdhYjc0MjMzZDQ0NTFmNjk5YzRiOGQ1IHJlbGVhc2UyNS1tYWludAorNTI1MjkgZTE2ODAwYWMxZWVhMTQxZjBkMjNlNDNjMzIwM2Q1MzA0MGFkODA5YyBsZWdhY3ktdHJ1bmsKKzUyNTMwIDgyNjk1ZTczNjgyM2YwMjg0NmVjZWMwNTA3Y2ExODQxMTg5MmM3YjYgcmVsZWFzZTI1LW1haW50Cis1MjUzMSBmNDljYjYwOTA0Mjg3M2I2NWRmOGViMzU3MjFjN2MzMjRhZjhhOWY2IHJlbGVhc2UyNS1tYWludAorNTI1MzIgZGE3OWM0ZTlhNWJiZmI1NzRhMmNmMDJkYzcxMDFkYmEzODkwMzMxMSBsZWdhY3ktdHJ1bmsKKzUyNTMzIDkzNjY3YTc4NWI4MzQ2NjBmM2U1ZWUyZDUwYmUzYjEyNWI1YmY4NzYgcmVsZWFzZTI1LW1haW50Cis1MjUzNCBjNjc3NGViM2EwNjczNjVmYzk4OTY0MjQ3Y2M5OGI4YzJmOTkyNjk2IGxlZ2FjeS10cnVuaworNTI1MzUgOWFiN2E3NzM2Y2EwNWQzNTJiYTk5OGQyNWViMzQ5YmMwZmFlNWI3ZiBsZWdhY3ktdHJ1bmsKKzUyNTM2IGJmNzhiZTYzZjIwZDU2YmU0ZTgwM2I3MmM4NDEwMDRmYzMyYWQ3ZTUgcmVsZWFzZTI1LW1haW50Cis1MjUzNyBkOWE4ZDRmMWQ2NTE0YzdmZTk0NzM3NjUzMWIwNzZhYzQyMmJhZGVlIGxlZ2FjeS10cnVuaworNTI1MzggZjU2YjI1MTY4MTQyYzk0NTRkZDA4OWU5Nzc1OWM4ZDA4MTc3YTQzNCBsZWdhY3ktdHJ1bmsKKzUyNTM5IDdjZTg3MmJmMDBhM2Y5ZGExNGMwNWQ1NDZhMTU1NzgyZmM4MTI0Y2IgbGVnYWN5LXRydW5rCis1MjU0MCA0MTRlYzI2MmQ2MDhlNGRhYTFjZDM4ZDU0MGNkZjEwMTE3MWE5ZjFjIGxlZ2FjeS10cnVuaworNTI1NDEgOGQ2ZDMxNWIyYWYzYjk1ZmFhNjVkMDI2NTczZTNkNmMzY2FiYTViYiBsZWdhY3ktdHJ1bmsKKzUyNTQyIGNhM2QxZDNjNGQ4YzJjZjMyZjRhNzc3ODExMzM3NDJiODZmM2NkZWQgbGVnYWN5LXRydW5rCis1MjU0MyBjMzcwN2RhODBhZWYzOWU5NDdiOGZkYjFmZDliMmYwMzMwNWE2MzFhIGxlZ2FjeS10cnVuaworNTI1NDQgMTAwNzMyOGY5ZGI1MTRlZWNkMWI5MWVmNmI4YWFmYWUzYzQxY2RkZiBsZWdhY3ktdHJ1bmsKKzUyNTQ1IDc1NTA2ODEwY2JiZjRjYzA1YWNlYzc4ZmJmZTYxYjFiOWI1ODVlZDggbGVnYWN5LXRydW5rCis1MjU0NiBmZmNjNjk2ZTFkYTNjMjQyOGM2ZGUxNjAwMTQzZmVkYzg0MzQwNjE5IGxlZ2FjeS10cnVuaworNTI1NDcgMGQwYWU4NGRkMWI3YWVhZWI4MTBmNjBkY2Y5MzE0ZjExOTBmMGMwMiBsZWdhY3ktdHJ1bmsKKzUyNTQ4IDE3MTVlNmEwYWVlOWFkMGZkNzlmZjAxMzQzYmY4MTY4OTE4NGQ5MzYgbGVnYWN5LXRydW5rCis1MjU0OSBjNWEyZjQzMWM2OThlZjMwZjQ4ZmMxZmU2NDljZTdiNGJmNmI5NTk4IGxlZ2FjeS10cnVuaworNTI1NTAgYThhNmUyYjg0YmJhZjY4ZDQ3YjkwNTZiYjk0YjlhZDc1MWVlZWIyMiBsZWdhY3ktdHJ1bmsKKzUyNTUxIGI4ODUwYWVjMDQ2NmZmZWQzODJjNWZlYmZmNjFiYWQ0MjMzY2MxNzIgcmVsZWFzZTI1LW1haW50Cis1MjU1MiBiYzhmZmMzZTNjZGI0ZTljZjU5YmJkNmRmY2E1MzAxMzEyMjM5ZTg2IGxlZ2FjeS10cnVuaworNTI1NTUgYjgyMDQwNjg1MmEwYTljZDBiZTRkOTJiM2RiZjYzZTRlNDM0Yzg2MiBsZWdhY3ktdHJ1bmsKKzUyNTU2IDMzODQwYzQwNzJiNzQ3NDIxZmQ3NDkwNzhmM2VmNzkwOTVlYjczM2MgbGVnYWN5LXRydW5rCis1MjU3MiAxYWJjZmVmZWEzZWVhNjk3MzE4MmYzMWQzNmE4Yjk1ZmM3YmU0OGY1IHJlbGVhc2UyMy1tYWludAorNTI1NzMgM2I2ZmI1NDM5YzEwNjFhOTQxNDAxMjQ1MDc2YzMxNWJlYWZjYzc4NyByZWxlYXNlMjMtbWFpbnQKKzUyNTc0IGI2NzU1M2MxNGZiY2FlMWUyMDRiNzU2ZGM0Y2M5MmUxZDRhZGM3YzQgcmVsZWFzZTIzLW1haW50Cis1MjU4OCBhM2JlNDBjMDcyNTAzMDM3YjZlZmZmNWEzMWVlOGYxMGIzNmRlNDI0IGxlZ2FjeS10cnVuaworNTI1ODkgODcxYjA1ZDI1MmJlMGFhMTFkYWZlMTg3NTRhZDE4YmNiMjZiMGQ2NyByZWxlYXNlMjUtbWFpbnQKKzUyNTkyIGFlNDExZmUxZWVjMDFiMmEyNTI3MTJiMjQxMDkxZDMxOGI3NDliYTkgbGVnYWN5LXRydW5rCis1MjU5MyAzZTRlMGJlNDBmNTIwOTM4NTc2ZTc2NzZmZjA0NTc4MzBiNjZiMzUyIHJlbGVhc2UyNS1tYWludAorNTI1OTggZmY2Nzg2NjlhYTZlMTMxZWNkMmFlODdmMDIzMTE0OGVkMGU1YTQ3NSBsZWdhY3ktdHJ1bmsKKzUyNjE5IDUzMGQ3ZWIwYzZjNDhmMWQ1MGFkNTQ0MGU1ZGEwZTM1ZTgwODQwYWMgbGVnYWN5LXRydW5rCis1MjYyMCA2ZGY0YTkxNDNkZGY4ODA0ZWU5NThlMzY3ZDUzNTdkNDE3Yjk3ZDI3IHJlbGVhc2UyNS1tYWludAorNTI2MjEgZWJhZjM0N2Q0MmZiMTRkNzNiODliYjlkMmFhMDcxOTFmYzcyZGMyNiBsZWdhY3ktdHJ1bmsKKzUyNjIyIDAwM2Q4M2RhOTkzMjYyNTAyYjE4ODdjMGI3M2ViMzY4Zjg0ZWRhNWQgcmVsZWFzZTI1LW1haW50Cis1MjYzMCAxZjA1NWZjYjZjYTY2MGJkN2EzZDBkOTg3YmMxMDU4MTE1YzdkYTVlIGxlZ2FjeS10cnVuaworNTI2MzEgZDc4NWMyOWY1MzQwMzViZTMwMmIwYmQyNTYyMzVmNDkwOTZlMzA2YiBsZWdhY3ktdHJ1bmsKKzUyNjMyIDFhMGY0Njg4M2VhNWYwZjEyMTIxM2YzMjNjNTU4ZjZiMzdiNTliNjUgcmVsZWFzZTI1LW1haW50Cis1MjY0NCBjYmUxMzNkNzJlMzk3MmQ3MWQyM2ZmMGE1ZTdiNDg1N2EwYzU1ZjNjIGxlZ2FjeS10cnVuaworNTI2NDUgNTUzMWY0NjIzMmI3YWY0YmE0NTVkOGE3YWY2NDAyZjVlOWU2NDA2MCByZWxlYXNlMjUtbWFpbnQKKzUyNjQ2IDI0NDk4ZDQzMTI2Y2I4OWQ3MmVmN2QzMjY3MjU1Yzk1ZGQ3NzZkYmUgcmVsZWFzZTI0LW1haW50Cis1MjY0NyBlZDJhYzgwODRlMDQ4NTBkNWMwMTdiZTI2ZTcyMThmNmE2Y2VmNjk5IGxlZ2FjeS10cnVuaworNTI2NTEgMWRlNWU3MzlmOWZmNTkzZGU5MGEyM2U2NTEzOTNlODgxZGQ5NDFlNSBsZWdhY3ktdHJ1bmsKKzUyNjUzIDNjYzJlYWYwZTU4MTQ5OWRiZmZiMDM5NDdiOWJiZTA2ZWU3N2JiZGUgbGVnYWN5LXRydW5rCis1MjY1NCBmODg2Mjk5ODI3MGZiZmJhMDgwNmU4ODE5NmU4NDMzZDdjZTkzZGZmIHJlbGVhc2UyNS1tYWludAorNTI2NTcgOTYzM2Y1MzhjOThkYTZlZjVkYzM0OGYzM2YwY2MwNmUxODM2NjZmYSBsZWdhY3ktdHJ1bmsKKzUyNjU4IDhkNjhiMjI0YThmMDU4ZTMxMzY0ZWJkMTJlZjlmZDU3YTllMjkxNjkgcmVsZWFzZTI1LW1haW50Cis1MjY2MiA2MWNkOGM4N2NmZTJjMzdlNGQzNTc3Y2FlZjU3YzFiMGYyOTI0ZWM4IGxlZ2FjeS10cnVuaworNTI2NjMgNzhjNzViM2QzZDBiYjE0MjAxNmY0YTQ2NDk2ODVjY2E3OGE5Y2E3ZiByZWxlYXNlMjUtbWFpbnQKKzUyNjY0IGZhOTAyOWE0MWNlOGFiMDljODM5ODhjZGRmOTBmYThkZDIxZjZhYjIgbGVnYWN5LXRydW5rCis1MjY2NSBiZDE2MjNkMDRiZmM0NGUxNzkxODIwZjFlZDU1MjRmMGQ0YjE4NmQ0IGxlZ2FjeS10cnVuaworNTI2NjYgNGY4ZWJhY2VjNWYwNTM2MjhjOGYyNGQxODI3MjI3NzczYzA4ZjllMSBsZWdhY3ktdHJ1bmsKKzUyNjY3IDAyYzM2NmIyYWFjMmNhYzY1ZjMwN2ZkZWY4Y2VhNjhhZjM1MzFmMTMgcmVsZWFzZTI1LW1haW50Cis1MjY2OCAwZGVhMzdiY2JlZmY0YzAwZDIxYzdjYzAwMzNkNTczMjMwMDc5OTMzIGxlZ2FjeS10cnVuaworNTI2NjkgN2I4NTEyMDZkMjRjZTM0YzM0OTllZGUzYzJmMzVlZTI4MzFlMTM4YyByZWxlYXNlMjUtbWFpbnQKKzUyNjcxIDcwYzc1NmFhOTI3M2MyMDg2MzcxYzk1NmY3ODRhNzA5NzMwZWExYzYgbGVnYWN5LXRydW5rCis1MjY3MiAzNTdjOTk1MzdlODUyZGQzMzlhMmRiMDYxOWYxOWQxNTU4NGY5ZGVlIGxlZ2FjeS10cnVuaworNTI2NzMgNTc2NzQyMTJjMzdjZjJjOTU2MGU2ZjI0ZWQ1YjU4MThiYTY4MzAzMiBsZWdhY3ktdHJ1bmsKKzUyNjc0IDI0YTVkYzc3NzkzMTY2NDZlMGQyMGJmMzEyNjU2YTdiOTJiMTk1YTQgbGVnYWN5LXRydW5rCis1MjY4NiA1MjZjOTU4NGYyNTI3ODY3MjY3NmQwNzg3NTc1NzY2ZjYyZTVlMmNmIGxlZ2FjeS10cnVuaworNTI2ODcgMDI1YjI0YTI2MTMxNGQxMGVhMWRlZWJlNjU2YmEwYjdhYjNjMzNhMCByZWxlYXNlMjUtbWFpbnQKKzUyNjg4IDA3YjI5YmNmYzAxMzUyMzY5MTFkMzE1NzA0YmI1YmUyMTg3MzA1MjggbGVnYWN5LXRydW5rCis1MjY5MCA2ZDk5NzYyY2Q4MTg4MWQ3ZGNiNDNlZTg3ZWViZTIyOWYwNzZlNzM2IGxlZ2FjeS10cnVuaworNTI2OTEgNmMwNjc3MjczYzVhYmIzYjU4YmVjNmQ1MDE5OTIzOGM4ZTU4YTlhNCByZWxlYXNlMjUtbWFpbnQKKzUyNjkyIGFkNzk2ZmU0NzJjYWVmZTQ3MThmZGVlNWExZmNjY2U4MjA2MTg3MTUgbGVnYWN5LXRydW5rCis1MjY5NSA3MDU5ZGY3YzE1ZGY4MjMxNmMxODlkOWEzNTY3OTY5NDBlNjBiN2VmIGxlZ2FjeS10cnVuaworNTI2OTYgYzMwYzU4NGNjNmFhNDk2YjFhOTk1ZTExODZkYzJlOGJjNWRlNDRlNyByZWxlYXNlMjUtbWFpbnQKKzUyNzEyIDU2MWZmYTc1N2RmYjVhNGMyMjYxYWI2NTNlYTAwMDZkZGNiM2E0MzkgbGVnYWN5LXRydW5rCis1MjcxNiA1NGY2MjJkZDNiMjY2NjRhNTJhOWUxMjYxMjJiYmRhYjQ1YzkxNzZjIGxlZ2FjeS10cnVuaworNTI3MTggNzMyNDI1ZTNiOTI3NGI3M2Y1Zjc3ZTFmZTY1ZTA0M2RjYzMwMzc2ZCByZWxlYXNlMjUtbWFpbnQKKzUyNzE5IGQ3NWNiZTJiOTYwMTljOTIwOTFiYmMzNzg1MWJmN2NlODM3ZTE2ZmMgbGVnYWN5LXRydW5rCis1MjcyMCAwZTVmMmQwNTQ4ZWI2Yzk2NmE3MjE2OGVmMDg5ZTEyZTM4ZTQ0ODk3IHJlbGVhc2UyNS1tYWludAorNTI3MjUgNmYyOTcwOTIyYzQ0Y2Q4NGZjYzYwYzg3NGUzYjg4ZDY2NjI0NGU2NyBsZWdhY3ktdHJ1bmsKKzUyNzI2IDYxNmEyMDhmNGI4MDUxNDAxYzhhYzRjYjcwNmNiMTcyMzJmYjFiNzMgcmVsZWFzZTI1LW1haW50Cis1MjcyNyAxMGE5Nzc0YmIzZTM0N2UwZWU3ZDBkZGE2OTNkZWNjYzk3YjY4Yjc5IHJlbGVhc2UyNS1tYWludAorNTI3MzEgNDQ2MGVjMjRkYWM5MGY5YzlhYjY5ZDBkMmQwY2YyZTBlNzA1YzA5YyBsZWdhY3ktdHJ1bmsKKzUyNzMyIDM1Y2YxMzNhYzdmOGYwMTNhYTgxYTc5YWE3MjNlYTg3ZWQ0NDk2ZjggcmVsZWFzZTI1LW1haW50Cis1MjczMyAyY2YxOGYxMjc2NjNjNzgxNjAyZTQ5NDhmYjUzYjA2NDQ1ZDU0MjRkIGxlZ2FjeS10cnVuaworNTI3MzQgNjMzODEyZThjYTFiNmE5YTVhZDJmNWVjMDQ2YjQxOTEwOTM0M2Y4ZiByZWxlYXNlMjUtbWFpbnQKKzUyNzM2IDkwZDM1NTgyOWJiYjc4Njg4NTg5M2UxYzBlYTA2NWNjMzk4YmY3MGUgbGVnYWN5LXRydW5rCis1MjczNyA5ZjdmYzY4YTIwYWVkZGNlZTZiOWNlOTVlZTA2NzZlNmQ0NGNjYjc4IGxlZ2FjeS10cnVuaworNTI3MzggYmY0ZDIwNDc2YTg2MTRlOWExYmRiMzhlMzVhMWVjYzJhNTk5ZDQ2OCBsZWdhY3ktdHJ1bmsKKzUyNzM5IGVjYmU5MWI1ZTQ2YTUzNWE4NTM1MTk4MWRkMWNkN2U0MGJkYmE5NGUgbGVnYWN5LXRydW5rCis1Mjc0MCA1OTFkYWE1MzYyYjJkNDhhMjcyMTM1ZGRlZWExNTFmNTU5M2ZhOTQ5IHJlbGVhc2UyNS1tYWludAorNTI3NDEgZDQ5ZTBkZTQwMTlkMWY1NWUwMWNjMjA3YzhlMThlZjY5YjkwODU5MCBsZWdhY3ktdHJ1bmsKKzUyNzQyIGVmZjExZTQzNWY0MTAzYTZlNzUxNzEzZmNlNjRiZjNiNjY1NjM3YTYgcmVsZWFzZTI1LW1haW50Cis1Mjc1MyA3ZTBjZjZlMzY1MGM4ZTkzYzQxNWNlM2FmYTg4NmJlMzRiZWQ0MmNjIGxlZ2FjeS10cnVuaworNTI3NTQgZjkxYjZkODVjYWI1NjIyY2E0ZWIxMDJkZTBlYWI2ZTZmODZlZjQxMSBsZWdhY3ktdHJ1bmsKKzUyNzU1IGExYzBiNTE0Y2I1MzlhMDc4MzY5NTM4OTY2OWZjOGQyNWEzNTY4ZTYgcmVsZWFzZTI1LW1haW50Cis1Mjc2MiBiODBhMzY4ODUzYzc1YTc2MGE2NjE5ZjhmNGUwN2JjNWY2NDExY2Y1IGxlZ2FjeS10cnVuaworNTI3NjMgOGEzNjVmZGNkYzQ4ZGNlZTU5Njg5ZGIyMGRlNWNiMTU5OTcxNjEyOSByZWxlYXNlMjUtbWFpbnQKKzUyNzY0IGJhNTYzYWI3YTU3YWUyZDg3ZjZlZGFkOTdmMDdkYWQxZWE1M2JiNWIgbGVnYWN5LXRydW5rCis1Mjc2NSAyNTE1ZWM0YjViMzM2NTY1MWM1OGJmNjE4ODkxNjE1YTc4Y2U5NTRhIGxlZ2FjeS10cnVuaworNTI3NjYgZTI2YzUxNzgwNzM3NTFjYmM0YzFiMjZkMGU3Y2Q0MWUzNThmZmIxNyByZWxlYXNlMjUtbWFpbnQKKzUyNzc2IDdjZWU5NDM0OTgxYTJhYThmYmU3ZDUyNGIwZTQ0ZmU2M2E1N2I1NmQgbGVnYWN5LXRydW5rCis1Mjc3OCA0YzYyYzgyOTBkNGY1ODJmNGE0ZDMyMWMwM2Q1NWRmNWI1NGU1YjhmIHJlbGVhc2UyNS1tYWludAorNTI3ODAgODlmMmU4ZGEwZjBmOWVkZDYxYzhmNTM3OWIzNGM3MjNhOGZjNzZlNiBsZWdhY3ktdHJ1bmsKKzUyNzgxIGMxYWM4YmRlNWUxNzZkMzRhOGUyYmRmOWEzYmU5OWZhYmFhYzA3ZDYgcmVsZWFzZTI1LW1haW50Cis1Mjc4MiA1YzA4ZGNiN2QyODA5ZjQ0Y2Q0M2I0YmNlMzBiMTEzNWIyMmU2YzdhIGxlZ2FjeS10cnVuaworNTI3ODMgNzhjMGU3MmYxNmQzZDA3N2Y5MjJlODAxMzNhNDg4YzBlMjQzMWRjYiByZWxlYXNlMjUtbWFpbnQKKzUyNzg0IDMyMGRmZGVlODk2ODk3YzVjNzJjNDdjMzhkMGIxNjA0NGUxZjJhZGEgbGVnYWN5LXRydW5rCis1Mjc4NSBhMDQwNmU5MzNhODE3MzdkYjVhZDZmOGY4NjJmYzQ0ZTA4MjI4MTY3IHJlbGVhc2UyNS1tYWludAorNTI3ODYgNWZhNWVmNTU5YTJmMTNiOGYzYTM2NmZmNDg4MjJmY2IxMTMxMmE1MyBsZWdhY3ktdHJ1bmsKKzUyNzg3IGI4NzFlN2JkODM1NWIyOTIyZGM5YjcyMzgwMGU4NjMxZWMxYTU0MWMgbGVnYWN5LXRydW5rCis1Mjc4OCAwZmRjMmI4MjExZjkyZTU2NjE5ZTZlYmUxN2UzODllZjVhODE5MzQ1IGxlZ2FjeS10cnVuaworNTI3ODkgYmUyZjViMmQ1M2IzYmQyNjFjNjkxNzMyZDI4ZDA3ZTlhYmEwYzgwZCBsZWdhY3ktdHJ1bmsKKzUyNzkwIDQwMTY2ZTUwMTFmODE5MGE4YjkwMDcxOGFlZmRiNTE4Yzk0NmVlYTAgbGVnYWN5LXRydW5rCis1Mjc5MSA5ZmQxMzU0ZGE2ZGI2YjJiZTg2YjQ3YTE5NTlhNTI4ODZjNWJjNWI5IHJlbGVhc2UyMi1tYWludAorNTI3OTIgMjcxMTMzOTgxZTYzZTFiYzc4Zjg5ZTc3MDEzZDEwMGE3Yzc5OTEyYyBsZWdhY3ktdHJ1bmsKKzUyNzk0IDY0ZTBhYzgzOTZhM2Q2ZWUyM2UwZjM1NGUwNDUyODg1OTAyZWMyN2QgbGVnYWN5LXRydW5rCis1Mjc5NSA2MDZlMWYwZTg3YmRhZDZjZDI0MzU5NWUxYmNiMTQwODQzNmZhMzgwIGxlZ2FjeS10cnVuaworNTI3OTYgNDJlYWVkOGQyYjQ1NDJhZmZjZWYwMTAzNWI3YTAzOTUyOTk4MTY3MiByZWxlYXNlMjUtbWFpbnQKKzUyNzk3IGYzYTYzMTg1NzU0NDc1Y2Q1NWIwODU2OWIxOGFkNTZlM2ZmZmUyMWQgcmVsZWFzZTI0LW1haW50Cis1Mjc5OCBkN2FjM2I4ZjIxMzkyMTllZjhkMjY2Nzc3ZGFiNWYxOGJkNDY1YzMzIHJlbGVhc2UyMy1tYWludAorNTI3OTkgOGZkYTVjODZjYzE2Y2VhODkzMTE0YzVjZjA1N2FmODU2YWIxODk3ZCByZWxlYXNlMjItbWFpbnQKKzUyODAwIGNmMGU2ODU2MjYwNGQ5YTJhMzY2M2JkMzBmMmQzY2EyNzMzN2U5NzggbGVnYWN5LXRydW5rCis1MjgwMSBjZTRjY2Y4N2Y1NmU0NjM5NGViZjBmMzMyOWNlNjVlMTQ3MjM3MTU0IHJlbGVhc2UyNS1tYWludAorNTI4MDIgYzdhOGNiMDk1YzQ4NTFmODE5MGRkYzE3NDdiMDVkYzFmOTdjZWQ5MiByZWxlYXNlMjQtbWFpbnQKKzUyODAzIDk1YWU3NDFlMjg3YmFmN2I3MDkxYmE1ZTYxYzJiZjAwYjJhNjU5ZTcgcmVsZWFzZTIzLW1haW50Cis1MjgxMSA5OWNiMzgzNTFmZmM0MGJiYzMwMWY3YzNjZjEzYzU1ZGJlYmQzMjZiIGxlZ2FjeS10cnVuaworNTI4MTIgYWIxODg1ZjM0NDNhN2RhYjNhOGU0OTRkZmI0ZjgxN2FiYmU5ZDZhNyByZWxlYXNlMjUtbWFpbnQKKzUyODEzIGEyN2VkZTJjYTYwNjhhNTE2OGI1NjJkYzRmOWI2NWMwN2YxY2IyZTIgcmVsZWFzZTI1LW1haW50Cis1MjgxNCA2MWIwNjliODRkMGFmY2M1MTBkMjU3NjJjZTYzMmRjNDMxODgzMTdjIGxlZ2FjeS10cnVuaworNTI4MTUgYjBjMDhlZjFjMzAzMDkwN2E2NmQ4N2I3Y2RiZTJlM2MwMjMwY2JjZiBsZWdhY3ktdHJ1bmsKKzUyODE2IDZlMWI5MDA3YmJkYzYwNDhiODI0ZTZkYzliMjE3N2VmZWI1ODRhMWUgcmVsZWFzZTI1LW1haW50Cis1MjgxNyBkMTgzZDgxMjQ4MDNkMDI3MmU1Y2RkZTQzZWE4YWZhOWQwZjBhODkwIGxlZ2FjeS10cnVuaworNTI4MTggYTAzN2ZhOGY4NDU4ZTMxZjMxZjJhNzE3OTBlMzdiODc3YzhlZGFkMSByZWxlYXNlMjUtbWFpbnQKKzUyODE5IDI1OWQyNjkwMDg2MTdjYmMxN2Q5MTBmMDA0ZjA0OTFhYjczZjAwYTkgcDN5aworNTI4MjAgZDc1YjBjYWE2N2RiOWRlNjEyMTA5NzhiZGJhZjFlNmFhNGViZTRjMSBwM3lrCis1MjgyMSA5M2RiZmM2NTRiNmEyMjJmYmQ1MmFiOGZmNDNiZWI3OTExZmJmNjAzIGxlZ2FjeS10cnVuaworNTI4MjMgN2YzM2YyNGE3YzQxNjdjODI3OWQ2OGVkY2E0MmVhOWI2ZTNkMzk0MCBwM3lrCis1MjgyNCAyNWNjNjE2MTQ3MjA2M2JhY2M2YTNmZWRkNTllYWUwMmU2YjM2ZDAxIHJlbGVhc2UyMy1tYWludAorNTI4MjYgYTNlMGYxZTExMDgyODg4ZTkzZDBjODI4NWVhZmYyNTk2OGQ4NWRlZSBsZWdhY3ktdHJ1bmsKKzUyODI3IGI2YjAyNTkzMTQ1MTMzMzc3ZGUyODMxZWFkOWEwYjBlOGNmOThiODAgcmVsZWFzZTI1LW1haW50Cis1MjgzMyAyOTFlNjMzNjg2N2I2NzRmMGY4NGZkNGNjMGY0NjM2MjFkY2M2NzE1IGxlZ2FjeS10cnVuaworNTI4MzQgY2QzZDZiOThjYWVhZDI2NmI5MDAyYzhjZDc3MTk1YzZkOGViZmRlMCByZWxlYXNlMjUtbWFpbnQKKzUyODM1IDAwNDYyY2E0ODg0NTQ4MGU5Y2E4NDIzYTRiZjc1YjcwNDdiMjJmYzQgbGVnYWN5LXRydW5rCis1MjgzOSBlNzA3MGQ2N2RiOGM3YzlmZTMzZjBjNzhiOWZkNTY0MjA0ZjM1ZjA1IGxlZ2FjeS10cnVuaworNTI4NDAgMTkzMTQ2ZTRkMjc2YzA0NGVmN2FhMjFiM2Y1ZWM0ZDNiNzhlZWM0OCBsZWdhY3ktdHJ1bmsKKzUyODQxIDk2YmU5ZDc0YWQzNjc1MDQwZDYwMjFjM2U3OTY5MWQ1ZTVlMjY0NDYgbGVnYWN5LXRydW5rCis1Mjg0MiA1ODZkZDhlZWRiNzVmZWY4NzlhNmNmYjRmYjUwMDI2ZDkxNDQ3YzNlIHJlbGVhc2UyNS1tYWludAorNTI4NDMgMjUwODM1ZGM1NDRhYTYwMDNkMjAzNjYwNzZhMjUyZTNkNjUzMmVjMyBsZWdhY3ktdHJ1bmsKKzUyODQ0IDIwYmU0MzFlNzU0MDFhZmQ5Yjc2ZmY0MGExZjhjYWNkNWJmYTczODQgcmVsZWFzZTI1LW1haW50Cis1Mjg0NSA0NTRlZmYyNzA2ZDNiOGJiMjcxZGNjZTE0N2Y1ZTc5YTgxNDlmMDJhIGxlZ2FjeS10cnVuaworNTI4NDYgYTU1ZDQ2NWQ0MGNmZDI0ZGU1ZDUyYzEwOWNjMjY3ZjFhNmZlODY1ZCByZWxlYXNlMjUtbWFpbnQKKzUyODUwIGVmMTU0NzAxNjcwMzNjNzRhZTUwNWQ3ZDQyYTBkZmI2ZDNkZDllYWIgbGVnYWN5LXRydW5rCis1Mjg1MSBhMTAxNTMwMmQ3ZTRkNDJhMGFmMTY5NWMwODZkMmVmYTgyN2QwOGVmIHJlbGVhc2UyNS1tYWludAorNTI4NTMgODgxMzM0MTdkZmQwNWI0ZTE1NmE2YmNlNzE0ZDJhZjAxOWM1Y2FiOCBwM3lrCis1Mjg1NSA3OGZiNzk5MGM1YWE1OTViZmJjNGYxN2NhODFkOGZkYzI4YTYzNGI5IGxlZ2FjeS10cnVuaworNTI4NTYgYTFmZDkzYjU4OTEyMTA4NzhhYzNiNGFjN2U0ZjkwNjY0MzNlNDkzZiByZWxlYXNlMjUtbWFpbnQKKzUyODU3IDAyZDUxM2U4NzFmZTk1NzJkMjJmMTYyMDI2NDk4OTZlNjhlMzE4OTEgcDN5aworNTI4NjIgNGUzNjhlODJjNzBkNmExZTMxMjA4NDJmYmUyNDFhYjMyOTY1YzJmYyBsZWdhY3ktdHJ1bmsKKzUyODYzIDM5YWQ5OWRkNjdlNGRlNWNmYTliMzE1ODI5NDMyZDExMjUxNDU0NmIgcmVsZWFzZTI0LW1haW50Cis1Mjg2MyA5OGExZWNhM2E5MzA4M2NjZjAxZjQ1ZDA5YTI2MDk2YmRlNDEwNmY5IHJlbGVhc2UyNS1tYWludAorNTI4NzIgZmVmNWI3NzQ4MThiZGM0ZTYyNjJhMjMwMDRlYTJmZGQzYjkwNDU1YiBsZWdhY3ktdHJ1bmsKKzUyODc1IDFlM2Y1MDIwYmI1NTU4ZjAyNzc3OWEzZTIxYTg2YmQzNTI3MWYxNGQgcDN5aworNTI4NzcgMmU1MDExYWNiNDE0ZDRiMjY3ODhjMDM1N2EwNWIxYWE1NGI3MGY3MiBwM3lrCis1Mjg3OCBiM2VkMDUzY2M2YTFmMmIxZjJhY2MwMWNhZTk1MzRlZjc5MTliZDQyIHAzeWsKKzUyODkwIGQ4MDBkNjczNzU1NjQxNDQ0YTJmYTZjYzc4YmQ4NjI1MzM5MjlhMWYgbGVnYWN5LXRydW5rCis1Mjg5OSAwZTJhMDczY2JiYmZhN2NmN2RmYWFmNWQ0ZmQxNjczY2FlYTRiNDc2IHJlbGVhc2UyNS1tYWludAorNTI5MDAgYzdlN2U3MTk2YTRjY2YzNTVmYWU5MTJmMWQ5ZTkyNDI2NjY0MmQyZSBsZWdhY3ktdHJ1bmsKKzUyOTA1IDNhYjEyZDFhMTdkMmVlMzQ4ZmQ4YWJmMGVkZjU1MDZhNzdmY2IwMWYgbGVnYWN5LXRydW5rCis1MjkwNiBjNDM3ODdlNmQ3MDYxZDU3ZmQ3MDgxNjRkMGVmMDJmYzAwZDlhNTYyIGxlZ2FjeS10cnVuaworNTI5MDcgMjZiNzEzYTE5NTM0ZjI4ZTdkZTJhYWI5YWVkYzY5ZmUxN2M1Y2ZiMyByZWxlYXNlMjUtbWFpbnQKKzUyOTA4IDNlZTlkMWEzNmQ0NjQzMDljZjRjYmMxNTI4ZDY1MTcwZjlhNzU4ZTAgbGVnYWN5LXRydW5rCis1MjkwOSBhMDE0NjkyY2ZhNjY4ZGVkMWMwYmNiYTQyYmU5MzNjN2FkMTE5YTU5IHJlbGVhc2UyNS1tYWludAorNTI5MTAgNzNmMGZjMmY4ZjI3ZGMwOTdhZjFhMjI0YTE4MDRmNWUyMjYzMGE0MCBsZWdhY3ktdHJ1bmsKKzUyOTE1IGMxYTZkOTRiODAyNzc2OGYyMzYzYTAxZDg2YTFkYTQzZDNmM2M2OTYgbGVnYWN5LXRydW5rCis1MjkxNyAwY2FjM2U1MzFjNWExNWIxYTI5Mzk0MGUyZGY5MTk0NTBkNzI4OTc3IGxlZ2FjeS10cnVuaworNTI5MTggZjFhNmFiMzU3NGVmZGJkZDY5MWU2ZjEzY2NkNDllNTBjMDA5YTA2MyByZWxlYXNlMjUtbWFpbnQKKzUyOTM4IGViMzBkMzBmMjJhMTg1NzllZmQxZjA1YWE3NTEzMjJmN2UzN2M2NzcgbGVnYWN5LXRydW5rCis1MjkzOSA5ZmYyYjc0NThjNzBkMGFiYzc5NzI0MjNjMzU1NWRmMzczZTA3NDU0IHJlbGVhc2UyNS1tYWludAorNTI5NDUgOWZlNTg1NWIwNWRkYThmN2RlZmQyMDY5Mzk3YzRkYzViZmJlNGVhYiBsZWdhY3ktdHJ1bmsKKzUyOTUxIGQ1NTc2OTcxMmY3M2RmNTg4NWM4MmExNzhhNmM1NjU4ODVkMmIxMTIgbGVnYWN5LXRydW5rCis1Mjk1MiBlZWY3MjVhNDBhNjY3ODExNWIyZTU5YWIwNTBjM2EyYWViZTdiYjNjIHJlbGVhc2UyNS1tYWludAorNTI5NjIgZTVjZTVhMDUzNDExNjk2YmQwNjZhODA2MWEyMjg3M2MzZDI4NDM1ZCBsZWdhY3ktdHJ1bmsKKzUyOTYzIDZlOTFmYzg4YmY5OWNmODUwZTFmZThmYTFjMjA0YWZiNGYyMDg4ZTEgbGVnYWN5LXRydW5rCis1Mjk2NCA2YjAyZmUxYjM4MmZkZmM5NmU0YTRlYTc5NTAyYTRkY2I0YTE3YjBhIGxlZ2FjeS10cnVuaworNTI5NjYgYTE1YmQ4MWVmZGI2MzY5OTZkMzE3NGFkNjUyMmM0YTcyODNmMjY3YSBsZWdhY3ktdHJ1bmsKKzUyOTY3IGZhMjgwZDdjN2Q1ZWQyYjcxMThhMjIxYTVhNzk0ZjE0OWZhY2JhMzAgcmVsZWFzZTI1LW1haW50Cis1Mjk2OSBhZTkyYzhkMGYwOGQ1OTRiNTA5NGU2OWU1ODY3ZmNmNTU2MjVlYjM0IHJlbGVhc2UyNS1tYWludAorNTI5NzAgY2Y4N2M4ZjMzZjlmNzJmN2Y0ZjI0ZTI3ZDRjYjNjMGJlMWFjNDcwMyBsZWdhY3ktdHJ1bmsKKzUyOTcxIGI4N2M1NjM5YmMzYjgwYTQ5MGMyYmQxMTkwNGExYzkzN2U1N2I3ZjQgcmVsZWFzZTI1LW1haW50Cis1Mjk3MiA5ZDQ3MjU1NWI5MGQ3ZmE0NTU0NGE3ZDllNzZlMzU1YWJiOTI5YTM4IGxlZ2FjeS10cnVuaworNTI5NzMgNjhlZjA3ZDljODFlMWMxNTUxYTAzOTJkZjg2NzcwZTU1OGE3Y2QwZSByZWxlYXNlMjUtbWFpbnQKKzUyOTc0IGQ5YjRlZmM0ZWJlZmZmYzhmODU3NjI3Mzk2Zjk5MGI1NDRhZDFiNjMgcmVsZWFzZTI1LW1haW50Cis1Mjk3NSBkNGViNjdkMWQ5MzE4ZTc4NmVlZDRmMjQwZWM2ZTJmNWIwZjA5Nzc5IGxlZ2FjeS10cnVuaworNTI5NzkgNDQ3ZWYwZTc0NjI5OTcxMTM4OTMxY2NkNWVkNWU0MDY3NDQzNjFhYSByZWxlYXNlMjItbWFpbnQKKzUyOTk0IDBjNTFiMDA1YzIxNDRhNDQ5Njc5NzAyNGEzYzExOGVmOWMzNGM1MTEgbGVnYWN5LXRydW5rCis1Mjk5NiAzZDViMzA3NzI4OTJhY2E2YWZhODRhNWUzZWUyMzU2MmVlMjBjZDA0IGxlZ2FjeS10cnVuaworNTI5OTcgMDRmZGY5ZmZiMTg4MmU5YmNmYTA4ZWJjZmM1MDBmNDg0MWNhNmM4YyByZWxlYXNlMjUtbWFpbnQKKzUyOTk4IDYxMzA3MmI4ZjhkMDljM2Q2YWVjNzI5YzliZGY4MDBjZWJjNTg2MWUgbGVnYWN5LXRydW5rCis1Mjk5OSBhMzExYTEwYmEwYmZkNmYwNmY2N2UyZGUzNGQ1YmZhMmNjNWQxNjNmIHJlbGVhc2UyNC1tYWludAorNTMwMDAgMzE1YzVhNjMzYjA1YmYyNTRmM2ZjNjZhNDYyZmI4ZWNjOTM3NjhkOCBsZWdhY3ktdHJ1bmsKKzUzMDAxIGIzMzMyZWMyOTNmMjZkOWIwY2JiMmE5MTIxNDRkNDgyZDg3OTllMDEgcmVsZWFzZTI0LW1haW50Cis1MzAxMiA4MTAwODE4MTI5OTZkOGZlN2UyNWRiZDM1ZGFiOTgwMzNjMmUzY2EyIGxlZ2FjeS10cnVuaworNTMwMTcgY2M5OTJkNzVkNWIzYzk5MmE5ZWQwOTFlMTE4OTJhMTEzYzEzNDVlOSBwM3lrCis1MzAxOCA2NDgyMjYxYjEwOTIxNjBhMWZmNDk4ZWM2ZGVhMDJmNDc4MTUwZDM3IHAzeWsKKzUzMDE5IDUwY2U1NmIyNGNiZTMxMzczMWI5N2RmOGRlZWY0NmFjMDExY2Y2ZGIgcDN5aworNTMwMjMgMWNiN2IzYWU0MTRkMDVjMjAxOGEyYTQ2ZmZhOGZkMDdiYTFiNWZjMSBsZWdhY3ktdHJ1bmsKKzUzMDI1IDU2ZTg4YmJhZDlhMGU4ZGIxMTVmN2M0ZjE3ZTFjZDVkODkzOTllN2UgbGVnYWN5LXRydW5rCis1MzAyNiA0ODA3ODliMzI5NGRjNWJiY2ZiNDA1ZWNhZWUyYzg0YTFlYjVhYWQ2IGxlZ2FjeS10cnVuaworNTMwMjkgZTRmMmI5MmM3NTdjOTVkNjRkYTRhYzgzMDc1YTY4NDY2MDEyODczNyBsZWdhY3ktdHJ1bmsKKzUzMDMwIGNlZWVkMDI4NzIxNjgyMzJmYjAwYTRhNmVkMWFkNjFiYWRiYjJkMTEgcmVsZWFzZTI1LW1haW50Cis1MzAzMSBhOTEwYWJlNzgxNTkwYTU1NGI3ZjE5ODMwMzllMDczYTE2NWNiYTcxIGxlZ2FjeS10cnVuaworNTMwMzIgOWUzOTY5OGFmYmE1NmNhNjlmNDE0Njk2YmViYTNjNjI4NGRhMzU3MiBsZWdhY3ktdHJ1bmsKKzUzMDMzIGVlNWU0MWRlYTk0OTJlYjU5OTZkMGY0OWZlMjgyNjJjZGFhNDgzOGYgcmVsZWFzZTI1LW1haW50Cis1MzAzOCAwZGRkMDU5M2Q0MGJlZTkyNDBmYjhkMzU3OTAwYzAwMDlmMzI1NzdjIHAzeWstbm9zbGljZQorNTMwMzkgZmE5OTM0NjI2NDEwNDQyYzFiMjgxMDFhNTc1YjA1Y2YyMDIxMjU5ZSBwM3lrLW5vc2xpY2UKKzUzMDQwIDQ2N2IzODExOGIyOWEyYjZhZThlMzkxOWYwYjQwMWUyODhlOTUxZjIgcDN5ay1ub3NsaWNlCis1MzA0MSA4MzM4NGE2OTI1YTRjOTJjYjE4M2U1NTlhODE1MWVkMTgzOWQzODFjIHAzeWstbm9zbGljZQorNTMwNDIgNTk3ZmU4OTVhOTU4MzYyZjZlZmNhYTA2MTJiYmRkZWI4NTdiNzBiYiBsZWdhY3ktdHJ1bmsKKzUzMDQ0IDRmN2Y3MmJjMzQwYTdlNWQzMDE4OTM4OTVkNGY0N2E5MDBiYjY1MWMgcDN5ay1ub3NsaWNlCis1MzA0NSA3NDU3M2ZkZTRmMGNlNzcxYTBmZTEwNjYzOGUwNzQ4MDVmMzZmZmQ0IHAzeWstbm9zbGljZQorNTMwNDggMGQ2NGYyOWVmMjczZDJjMjMzNGI3OGY4MTZmOWIyMDY3OGY2MThjOSBsZWdhY3ktdHJ1bmsKKzUzMDQ5IDdkNzlmZDE4MTZhODQ1ZDk3MDhmY2RhMTFjOTM3Zjc5NzBhYWIwZjcgcmVsZWFzZTI1LW1haW50Cis1MzA1MCA4MWNjZmVkYzFjOTllN2Q4ZDBmMTA1YmZmZjliNGM1NmFmZWZiZTJiIGxlZ2FjeS10cnVuaworNTMwNTEgOGUzZjJiMDIyZjcyNzcxYzcwYzViMDZkNjQ2MGQ0NzA5ZDM0M2RhNCBsZWdhY3ktdHJ1bmsKKzUzMDUyIDM4YWExYTAxMDIxOWVlYWM0ODZlMzQ1MmQ5YWFjZGVlMjM2OGY3YmEgbGVnYWN5LXRydW5rCis1MzA1MyA1NmRjNzJjMWExZjQzZGVlYWM0MjYxZTRmNGUzODYxYTI1NGY3YTFkIGxlZ2FjeS10cnVuaworNTMwNTQgY2RmNjM1MTNhOGNkZmZjMzQzODJiMmQ1YTg1MWI3NjQ0ZDQwYTJlNyByZWxlYXNlMjUtbWFpbnQKKzUzMDU2IGFkZDAzYTlkNzc4YjgyODE5YTFiMjk5YTJmZmY4MjhjYjUzOWI2OTkgcmVsZWFzZTI1LW1haW50Cis1MzA1NyBmZTJhM2M5NjZjOGVhZjFhNzY4NDE1OGE5MTVmNzYzNmY0NmI2NjQ2IGxlZ2FjeS10cnVuaworNTMwNjMgZWIzYjIzOWE0ZDA3ODA2MTY2ZjI4OTJkMTM3ZjU1NmUyYjIyZjA1YyBsZWdhY3ktdHJ1bmsKKzUzMDY0IDk1NDhjYTBlNjU2MGVjZDQ0NGViZGE4NDk4ZWQzN2E5NTgzOWJlMTYgcDN5aworNTMwNjUgMjE0ODBkODliNDdmMTJkMGNmNTE5YWNlZmMxZjA3MWM1Mzk0ZjU2NCBsZWdhY3ktdHJ1bmsKKzUzMDY2IGIyN2Q1ZDk4YTU1Njc2YzY1OTY0MTVmZmI0MGY2NGQ2NjczMzRhNGEgbGVnYWN5LXRydW5rCis1MzA2NyAxN2U3NGNlMmJjMzVlNzliNjU0YzIxNTIxZDViZDlkYzg1Y2Q4ZDZmIGxlZ2FjeS10cnVuaworNTMwNjggZGNjNDBiOTNiZmJlY2JhM2IwNDVkNDRiNzEzOGNlN2ZkMTBhY2IxMyBsZWdhY3ktdHJ1bmsKKzUzMDY5IDBiMDRjYjc1MWMxYTIyMTEzZGEzNjY5OTBlM2U2NzgxZWNjZjdlYjAgcmVsZWFzZTI1LW1haW50Cis1MzA3MCAxNjQ0YmE3ZGNlMWYwNWRlMDZkYTQ5ZDMwOWY5NjUyYTE5MWE2YzIxIHJlbGVhc2UyNS1tYWludAorNTMwNzEgZjk4MzQwZTM2YzMxMTVlZDc2M2UxNTg3YzZkNDhmZDBjNzQ1ODE2MCBsZWdhY3ktdHJ1bmsKKzUzMDcyIDMwZjA5Nzc2ZWQ1NTYwMGEwYzQ4NjNkNDczNGMyMDgxMjU4MTJjOGIgcmVsZWFzZTI1LW1haW50Cis1MzA3MyBmZTY5OGQwNzhjZjk3ZTc3NjdhYTFiMmNhMDQ5MzM2YjExMjA5Yjk2IGxlZ2FjeS10cnVuaworNTMwNzQgYThmYTI2YTNhMmNhMWM5ZGFmM2RkODkyYTA0ZjY2NmU2OTY0ZmM0ZCBsZWdhY3ktdHJ1bmsKKzUzMDc1IDZmODY0YTkxYzYxMmM5ZWQ3MjlmMTEwNmY5NDVkNzVmMzFlNTIwZGIgcmVsZWFzZTI1LW1haW50Cis1MzA4MCA4NTY1ZTNmZWE5YjYyYTJiYzM4N2Y3MGQ2YWM5NTJhOTcwMTA2NjliIHAzeWsKKzUzMDg3IGQ0ZmNiNTY1NjMxNjJjMjc1Y2Y0ODhmNDkxOWRkYmNiOWViOWVhN2EgcDN5aworNTMwODkgZjFhNGNlMWZlNWIxMGI1ZDIwODY3ZjQ4NjE4OGYzODI0MWU0NTMxNCBwM3lrCis1MzA5MCA1MTM5NWMwYjU0ODJmOGM0MGZmZjA3MDE1Y2I2YWE3NzMwOGUxYTgxIGxlZ2FjeS10cnVuaworNTMwOTkgOTZkNTMzZWZiZTdkZDRjN2YwN2I1NGI1Yjk3YzVlNjk4ZDZkNDZjYyBsZWdhY3ktdHJ1bmsKKzUzMTAwIGZlOWI1Njk5MDg5NDQ4ZWNmOTc1YmNjOWIwMGM0YWQxMGQ0NDliMjggcmVsZWFzZTI1LW1haW50Cis1MzEwMSAwMzdmM2NlYTI2NTUwMmM5NmY2NWU5MDNlZjNhMTdkY2I5Nzc5NGFjIHJlbGVhc2UyNC1tYWludAorNTMxMDYgMTI1MGZlNDJjZTVjNzkxMjQwNzc5OGIzN2FkZGYxZjhlM2M1M2EzZiBsZWdhY3ktdHJ1bmsKKzUzMTEwIDhmYjMzNTAwZTA2NzBiODU4ZDVhMmY4NTk0YjAzZTlkYzc1NThhYzggbGVnYWN5LXRydW5rCis1MzExMiA3OTA5YTRlZTU2NmIwNTgzNDJiMTUwNGZhNTNiNzIwM2JlNTk0ZmUxIGxlZ2FjeS10cnVuaworNTMxMTMgMmQ1ZWQyNjdhNDBmYTFhY2ZkMjk5OWRjMWEwNDgzOWFiOTlmODJmMCBsZWdhY3ktdHJ1bmsKKzUzMTE0IDgzZjVlODBjZTFmMjljMzExYTA3NjBiMjRjZjc2MGVlYzQ1YjljOWIgcmVsZWFzZTI1LW1haW50Cis1MzExNSBhODU5NWRlYWQ1NGFkNWQ3ZmE5YmVjNzNjN2IzNDcyOGY1YzQ2YmI1IGxlZ2FjeS10cnVuaworNTMxMTYgMjJhNTdmNGZmYmNkM2Q0ZWU5NTFhODE2MTQ1ZDU4YmQ2Y2ZlZmYyOCByZWxlYXNlMjUtbWFpbnQKKzUzMTE3IDM1YzQ4ZjY5YmFjZWM3OTU4MjdmZjQ4MTVhNmMwZTNkYzAwMzI5NGMgbGVnYWN5LXRydW5rCis1MzExOCBkMmZhN2RhYWE1OWJmMzA4NzA4OWQyMDY2M2RmMDg4NDNmYTkwZjU1IHJlbGVhc2UyNS1tYWludAorNTMxMjAgM2Q2NjY5YWRlY2U0YTY0Mzc4YWJlNmZlYzMzZDQ0MGExZjFlZWY3ZiBsZWdhY3ktdHJ1bmsKKzUzMTI1IGU4ZTIzZWQ2YjY3ZjEzNGNhZDFiZmE0M2IzZGQ3YTUzOGI0MjBmNzEgbGVnYWN5LXRydW5rCis1MzEyNiBmYjVlM2ZjNDIyN2JlODIyYjNlN2ZhYWY4OThiZmY5MGJlMWQ2YTIyIHJlbGVhc2UyNS1tYWludAorNTMxMjkgOTRlYmY0YTJmNzM4ZjAxMWU1OWNjMWY2NjI0YjljMzJjZGE1M2IxMiBsZWdhY3ktdHJ1bmsKKzUzMTMxIGY5NGUyYjE5NTE4OWVkYzk1NjczZjg1NDFlYTBkODQyNTdmYzY0ZGIgbGVnYWN5LXRydW5rCis1MzEzMiAzN2U3MWZlYWVhM2QyZmMyMDRiOTJiN2ExNmJhNWFhNmE1NDg4NDY4IHJlbGVhc2UyNS1tYWludAorNTMxMzcgODgxNjI1YzEzYzIwNmNiNzI1MWRhZTkyY2IzNGU5NGQzMjliNGE1MCBsZWdhY3ktdHJ1bmsKKzUzMTM5IDY2M2M5ZjFjZTNhYWJmOGQ4NGMzNTc1YjY1M2UzMGE1MzU1YWEwZjAgbGVnYWN5LXRydW5rCis1MzE0MCAyYzUwNGM2MmQ0ZDhkZDU0MTgwNzU5MTE1YjViNzU1NDc0ZWRlNWZkIHJlbGVhc2UyNS1tYWludAorNTMxNDEgMmY4NGI2ZTgxOTAyYTg0MTc0MDQ4NjI5MTZlMTdmMDM1MDg5OGVlMSBsZWdhY3ktdHJ1bmsKKzUzMTQyIGY5MjZiYmMyZmQ2MjkyNzdlNmEzYTNkN2ZjMjA5MDYyZWEzZTllYmMgbGVnYWN5LXRydW5rCis1MzE0NSA1YzY3NDg0YzRjZjVlZTE3MmM1NzA1ZjkzNzNjNjM5MGY3ZjM3YmEyIGxlZ2FjeS10cnVuaworNTMxNDYgOTJmM2VmOGZhNGFmYTA4MDY3NjdkZDE5ZWMyMWU2MGVhOTQ4NjIzZSBsZWdhY3ktdHJ1bmsKKzUzMTQ3IDA5ZjRiNDYwYmFlYjdlNWZiNGM3ODQ0N2IxZjk4YmJhNGY3OTFmNGMgbGVnYWN5LXRydW5rCis1MzE0OCBkZWQ5OWRiNzBjYTY3OGRkMDliM2RlY2FjZjg2NzIzNGVmMGE4MGQ5IHJlbGVhc2UyNS1tYWludAorNTMxNDkgZTRiMGZmNDQ5MjE1ZjI1ZjJhZDU1ZGQ0Y2QzZDI1MzE2YWJiMWRkMiBsZWdhY3ktdHJ1bmsKKzUzMTUwIDI4OTgxOWZkZTNhZjBlY2Y0OTY0MDg3YjBiNzI3YTBkZGQ4YzU2OTggbGVnYWN5LXRydW5rCis1MzE1MyA1YzdlYTkzNDZmMTI3NDUxODhlOTI0ZjYxOTY0MmE5ZWE4YmYyOWFkIGxlZ2FjeS10cnVuaworNTMxNTQgYWM4YTlhNDEyMWQxN2FhNzFkYmFmNWFlZGE3M2JkNmIxNmYzNjYyZSByZWxlYXNlMjUtbWFpbnQKKzUzMTU1IDY3NjNlNDVjN2Y3ZDM0ODM1NDJlNDJiNDNiNzViZTljNmFiODkyNjUgbGVnYWN5LXRydW5rCis1MzE1NiBlZjRiOGZjZDE0ZDcyZmUzOGJjMDAyNzk4MDkzYmFmNjAxYTE3N2RhIHJlbGVhc2UyNS1tYWludAorNTMxNTkgMWUxYjljMmUyYWYwZTMyMmQzMTE5MDIxMTA5YzYxY2RkOTU1MDU3NSBsZWdhY3ktdHJ1bmsKKzUzMTYwIDEyYWY2Nzg4ZDkxMTU1OWM5Y2VmNGU4MGM5ZWU0NzhjYzNhNTRmNDggbGVnYWN5LXRydW5rCis1MzE2MSBlODVjYTNmZDRiZDYzZjM4MGEwYWIzMWI4ZWI0MTI4NDZkYWY4NWUwIGxlZ2FjeS10cnVuaworNTMxNjIgMjY3NmQ4Mjg3YTExYjBlOWEyZmQ5MjFjZmY1Zjc5OTg2NTk5NmRjZSByZWxlYXNlMjUtbWFpbnQKKzUzMTY1IDZmOGM2ZjgzMGI1MWNlNjVlMjVkOGY1NTRjZWJiZDA5NDA1ZjVlZWUgbGVnYWN5LXRydW5rCis1MzE2NiA0ZDc3YTJjNmFhNTUzMzczYTY0MDVhZDg2MjM5Nzc1OTFlM2JhYzNlIHJlbGVhc2UyNS1tYWludAorNTMxNjcgMTk1ZjY4OWFmNWFmZjRiY2MwNjVmZjVmNzQ4OGY2NWViM2IzNDY5OCBwM3lrCis1MzE2OCBiY2U3ZTRhOTI2YTkxYmE1YjQzYjZlYWExMDliYjQ1NWM5MDk5ZjkyIHAzeWsKKzUzMTcwIDU0Y2Q0Nzc4ODgxMWMwM2M1ZWQ1MTRhYTBkMDEwM2Q0NmE0ZmUxODEgcDN5aworNTMxNzEgN2EzNWQzZDFhYzVhMzAxZWYzZGM1MmY5MTQwODQ0ZjA0MjIwMTFhNSBwM3lrCis1MzE4NyBkNjNmYTkwZGY5ZWFkODQ0N2NlYWQzYjdmZTQyM2MxMWFjMTgwMWI2IHJlbGVhc2UyNS1tYWludAorNTMxODggYTMyMjIwNzVmNWM2NmExM2NiY2JkNTc2YzI2YjllMDVhMmIzNjUwNCBsZWdhY3ktdHJ1bmsKKzUzMTg5IGIxOWVkNTQzZDY5NWEwMzA1ZmEwMjgxNDk2NDM4ZTQxOWM4NjQ1NDggcDN5aworNTMxOTAgYjlmY2E4ZmIwZmIzNTE4ZjE5MTQ1M2JlYTk2NjljYzUwNDlmNmM4NiByZWxlYXNlMjUtbWFpbnQKKzUzMTk3IDk0Mzc1ZDgxNDg3ZGE4MTgwYjBiZDk4M2UxZDc2ZjQyNTcyZDE2OTUgcmVsZWFzZTI1LW1haW50Cis1MzIwMCBjMWE0ZGM3MWNkZDM3NjAxMjA1ZmI2NjRkNDljNDIyZTI3NjFjYjE5IGxlZ2FjeS10cnVuaworNTMyMzIgYmU4MjQwY2U1MmZmN2YzOWJhMTY2MWZkYjdhYjk2NWUzNWUwNDhkYSBsZWdhY3ktdHJ1bmsKKzUzMjM1IDJiMTliMmFkYzVjMWI4YTg3MTQwMGU5MDEwYzRiMDJlOGE4MTExYzIgbGVnYWN5LXRydW5rCis1MzIzNiA3YTEzODM5YzYzNWRjNTVjZGU0N2UyMWZlOTkzZWQ2MWQ4N2Q2M2Y4IHJlbGVhc2UyNS1tYWludAorNTMyNDMgOWNjNzYxYjllMmFjNTYwZjQ4YTRjYzU4OTI0ZTY5MWQzZWFiNmYzZiByZWxlYXNlMjUtbWFpbnQKKzUzMjQ0IGRjN2Q0ZTVkOGI0OTdlMmIwMWJiZDg2ZDI3MDllMzM5ODE4YTU2ZTEgbGVnYWN5LXRydW5rCis1MzI0OSA0MjAzZjhlNmU4NmFiNDBiZmZkMmMzYjgzN2EyZjQwZWI3OGQzYzBiIGxlZ2FjeS10cnVuaworNTMyNTAgZDk3NDljM2U2MzI2YWUxNjIzZjlkMWQ0YWU0YmY0OGM5NzFhNjQ1YiByZWxlYXNlMjUtbWFpbnQKKzUzMjUyIGY5YjI3ODIwNzk4Yjc0NzRmMzZjZjM0MWFiMTcyMmExODZmNTczMjEgbGVnYWN5LXRydW5rCis1MzI1MyA2OWZlNjgzZWNlNTY2Yzg0MjMwNzdiZjE0MmQ2MzUyNzU3NmNmMmFlIGxlZ2FjeS10cnVuaworNTMyNTQgYWZhYmZmZDU2MmU5NGNiZGUyNGUxMzkxZDhmNjhhZjQ3MmU0NGQzMiByZWxlYXNlMjUtbWFpbnQKKzUzMjU1IDQ1YzczMTUyYjRhYzU4MzE0NTUzZDEwNWM2MzRlNjdhODQ0MDJjZmIgbGVnYWN5LXRydW5rCis1MzI1NiBjYTI5NWMyNzBiMWMzZjJjMTU1YTk1MmE5ZGNkZTJlMzcxZTM0YTUyIHJlbGVhc2UyNS1tYWludAorNTMyNTggNDI3NGVkZmRjZTk4MThlNTQ2ODRjZGUyMGU3YjgxN2RhNGE0ZmE4MiBsZWdhY3ktdHJ1bmsKKzUzMjU5IDMwZGEwNmIyMjVhZmFjM2JiMThjMDhkMTc1ZDk3ZjNhMTNjYTE5ZGEgcmVsZWFzZTI1LW1haW50Cis1MzI2MCA5NmQ3NmQwOWE0ZTljMjI1MmRmYTg5N2ZkNmNhOGY5ZWFjNzQ0Yjc5IGxlZ2FjeS10cnVuaworNTMyNjIgN2Y3Njk5NmM3YmY0YjhlYzc0YmY0NmEwNGQ0NGQwZjU5NjUxNjkwYiBsZWdhY3ktdHJ1bmsKKzUzMjYzIDkwOTM3ZDMxNzRjYmU1Njg2Y2E5MWRkZTkwYzcxZjgxNWM5OWQ1YWMgcmVsZWFzZTI1LW1haW50Cis1MzI2NCA5MzM0YjBkYzNhMTdkOTBlMjdlZjQ1Nzk3ODg5NzAwNDM2NGE1Y2NkIGxlZ2FjeS10cnVuaworNTMyNjkgM2E4ZmQzNjM4ZjI2MGExYzU1ZTFhNTc4YmFlZDVhMmYzYTc3M2Y0YyByZWxlYXNlMjUtbWFpbnQKKzUzMjcwIDg0YWNlYThlMDcyZTY2ZTMxYjQwYjc1Y2VlNTBjZjZmMTFkNzk4YmMgcmVsZWFzZTI1LW1haW50Cis1MzI3MyBmNzAyNzlmMDBkZmM4MGMwZGZiOTg4OWY2ZTgzNzk2MTgyMWZlNjc1IHJlbGVhc2UyNS1tYWludAorNTMyNzUgNjg0NWUwZTYyOTAwZmMyMTk1NTliMWE3OGEyNmNmYmI0ZDI3NDQwYyByZWxlYXNlMjUtbWFpbnQKKzUzMjc5IDE2N2U3YmE3NDc1NjEzYzIyNjgwY2FiOTZiZmFmZWRiYWMwNTdiMTQgbGVnYWN5LXRydW5rCis1MzI4NSAwN2M0NzAyMDIwZGM5MmFkZTY1YjFmMWExZmM4ZWRkZjJhOTFiM2Q5IGxlZ2FjeS10cnVuaworNTMyODYgNDEwNTU3MGRhMzBhZDJiMjEwODljZDAxNWYxYzVkYWI3YzI0OTMxYyBsZWdhY3ktdHJ1bmsKKzUzMjg3IDE1MjBiYWFmMjdiZjc0ZTk3OTc5ZDdhZjA3NTIxMmZlODRhYmZmODUgcmVsZWFzZTI1LW1haW50Cis1MzI4OCA2YmQ2NWNiNWI5NTIwNjJlMzBlYTJlMjM2ZGM1MjE1OWMwYjliMGEwIHAzeWsKKzUzMjg5IDk5NWI3ZmNjMjk2ZGY1Njg0YWM3MzlhMjFjZTY0YTQ1MmI4NzA0YjMgcDN5aworNTMyOTEgY2M5NDljNjA1NTc0ZGE3NWRjODU5MWI3MmY5ZmVmNWY0YjE4ZjkxZiBsZWdhY3ktdHJ1bmsKKzUzMjkzIDdhMTFhM2FiZTY0YzFmNmY3YzVjMjM3N2JiOGNlZWU1YjI1ZWUxZWIgbGVnYWN5LXRydW5rCis1MzI5NCA0NGM2MjIwYjFkYzNmZmE2NmRhZGZkZjI5OTBjNTgzZmZkZDg0OWZiIHJlbGVhc2UyNS1tYWludAorNTMyOTUgOTkwOTNiNTI3YzAxY2EzZmY1OTBlYTJjMzk4MGRmYjE1ZjJmZWM4MSBsZWdhY3ktdHJ1bmsKKzUzMjk2IDAzNTQ3YTRjZDMwYWZhMTBhMzhiYThjMjJhNjg1NTYyYzg1ZjhhNTAgcmVsZWFzZTI1LW1haW50Cis1MzI5NyA5NDBmZjVjNzdmM2E5MTA3ZWVjYjE2ODBhZDcyYTNmY2I5OTQ2ZGUxIHJlbGVhc2UyNS1tYWludAorNTMyOTggOGRhNmRkYTY3OWY4YjJhOGU1ZGRmNmI1ZWIzOWIyNWMwNGZlN2RmMiByZWxlYXNlMjUtbWFpbnQKKzUzMjk5IDRkYzc5ZTI4MzIwOTRkNTJhODI3M2M4MmY4ZGI1MzNkODllNTViMzEgcmVsZWFzZTI1LW1haW50Cis1MzMwMCBiZDdlNDFkZTk4MmY2MGU5ZjI5ODA4ODI0Y2MzZjVlNWU1Nzc0NjY1IGxlZ2FjeS10cnVuaworNTMzMDEgOWFmZDJjN2ZhZWRlNjNhNzE3OTVkMzFhNjU3ZThlODRiZGM2NTcxZiBsZWdhY3ktdHJ1bmsKKzUzMzAyIDFlZDNlZDlhZjM0OGNmYmE0Y2U3OTMxNzY4NmM4OWJhNDBkNjEzYmYgbGVnYWN5LXRydW5rCis1MzMwMyBkZTUwNDAyNGE2ZTc3YjQ1OWIwOWVhNDA2ODdhMDY5ZDU2MTM2ODM4IGxlZ2FjeS10cnVuaworNTMzMDQgOTJkZDJiYjk0Y2E5Yzg3OTE0MDdlYjI3YjAyMDM0YmYxMTdmNjc1ZiBsZWdhY3ktdHJ1bmsKKzUzMzA1IDVkNDMxMDI1Yzk5OWE5NmUwZDI3NTc2OGFjODE4MTU3YTBjMDllMGUgbGVnYWN5LXRydW5rCis1MzMwNiA2MWQ2MzRhMGJkNmEyM2Q5MDM3NDEzOGNhNjc0Y2I3NzFlMmVmZGIxIGxlZ2FjeS10cnVuaworNTMzMTYgMGQ5MmNhYTJkMGY0MmIyYzM5MmNkZGZjOTE2MWE4MjNhNDg4NGFkMiBsZWdhY3ktdHJ1bmsKKzUzMzIxIDZkZGI2MzZmOTVjMDA5NDRjNjg2MzBhZGEyYTJiNzhjZWE2Y2YyNWEgcmVsZWFzZTI1LW1haW50Cis1MzMyOSBiODFmNGVlOTRiMDRjYjk2YWY0ZDE5Y2FmYTMyMjkzMjY2NmQ1MWY1IGJjYW5ub24tb2JqY2FwCis1MzMzMSA0OWRjN2ZjNjZiZWUzODJhMDU1YzI4MGY3NmVmODQ5YjUwZGJhMjU3IGJjYW5ub24tb2JqY2FwCis1MzMzMiA2NzI4N2NhNGUxZTg1M2ZjZGE3MjJmM2I5OTM5NmYyZDRlODg5ZjZkIHAzeWsKKzUzMzMzIGJiMWVlYTljZWQ3MGRhYjc4NDRmMzNiNDU4MWUwNWJiOTE4ZmNhMTkgYmNhbm5vbi1vYmpjYXAKKzUzMzM0IGYzMWZlZTI2MmI1MTQ1ZjA0M2M1YjM4MzIxODYwOTQxMjY4YmViMDQgYmNhbm5vbi1vYmpjYXAKKzUzMzM1IDY5YmM4MDZkOTY2MTY1M2EzNmMyOTU0ZTNjNzczODk3NGM1ZWU5OTIgcDN5aworNTMzMzYgMGI3OTdhN2I1MzEzMDRmMjUwOTBkOTk1MzhjNjNmYTQ1MmM0NWJhOCBwM3lrCis1MzM0MCA2NjdiZDAyN2Q4MDA5OGQ0NzBiOWNlODg1NTdkNWQ2ZDQ0MzE3OWUyIGxlZ2FjeS10cnVuaworNTMzNDEgYjRiYTcyNDlhYmE1NjgzMTEwNTZkOWYwZGEzYjkwMTUyZWQ3YWYzNiBsZWdhY3ktdHJ1bmsKKzUzMzQyIDZiMThhMDk1YzJlN2FiN2MzZTMzYTA2NmM4YTc0NTkyNWJlZjQ0YWQgcDN5aworNTMzNDkgNGJhYjY1ZmNjYThlNjM2OTliMDIyNjI0MmRmZTA4MjAyNDU5ZDk4OCBwM3lrCis1MzM1NyBmZjcxYjgyZjZjOTU2MDgzYjBjZDI4Y2IyMmM0ODY4ZmVkMzY5ZDE1IHJlbGVhc2UyNS1tYWludAorNTMzNTggMTNmYzE5NDIwNGM0ZTc0YzZlNDNjNjZiNWU0MTdlM2NkODBmOWUxZiBsZWdhY3ktdHJ1bmsKKzUzMzYwIDQ2OGFlM2UzOTJhMmEyYjY0ODBmNGFkZjZiNDc4OGRhZGIxYjFjMGMgcmVsZWFzZTI1LW1haW50Cis1MzM2MSA5MDk0NmQ1NDM0YWEzMmE3NzY3YmU3Yzk5NTk0NTEzNDlkM2UwYTJlIGxlZ2FjeS10cnVuaworNTMzNjIgNWYxMzAyNzFmMzg2OTVlZjQ5OTY3MmQ2Y2M2MzhlYTFjNGY0YjMzZCBsZWdhY3ktdHJ1bmsKKzUzMzYzIDdlMjUwMDIyNmM0MzZjNjVhMWRkNzkzMzY4ZjhjODViZWYxMzFhOTkgcDN5ay1ub3NsaWNlCis1MzM2NCA4YzM2OTM0NmE0Y2M1MDhjOWRjZDM3N2M2MTI3YmYwNTRlMmNiNWM4IHAzeWstbm9zbGljZQorNTMzNjkgZTFlNDQ5M2Y2ZThmMjQ3YWYyNTlhZTI0MTY0Y2M5MWFjYTFjODNlNCByZWxlYXNlMjUtbWFpbnQKKzUzMzcwIDQ2ZmM3NTYxNWRhNTIyYmM4MDhjNTM0YjU2YTA0ZWMyNWE0MzNiZjIgbGVnYWN5LXRydW5rCis1MzM3MSBiNjBiNDIwOTdiNzhiNmFjYTRkYmVjYmQxZjM3YWE1NmU1OGQ0OTYzIHJlbGVhc2UyNC1tYWludAorNTMzNzMgODEzZGNjODNlNDJjMjdkYzA2YTNlMGQ0M2I4NDEwNzRiNTk1OGMyZCByZWxlYXNlMjQtbWFpbnQKKzUzMzc0IDQzYzc1ZTU0MGU5MjJmYjZlOGY3ODYwNzI0YzhjZjNmZDE3YmJiNzEgcmVsZWFzZTI1LW1haW50Cis1MzM3NSAyMTExOWRiNWUwOTY2NTBkNDNhYzU1YzRlN2UxNWY5MjFjOGI5ODIwIGxlZ2FjeS10cnVuaworNTMzODAgMjY4NTk5MDBmYTVkZTdlNWRhNmIzNWU5MWViMTIxODBlY2Q4OTA5NCByZWxlYXNlMjUtbWFpbnQKKzUzMzgxIDdkYTNkYmM4MTQ1Yjg0ZGJhYTJlMjM3ZDQxOWNjYjg4YjUxMDZlZTUgbGVnYWN5LXRydW5rCis1MzM4MyBiZTE5M2FmMjJmMDQ3ZWIwYWY3NjNjY2QzYjNjZDllNGJmZTY1YWQxIHJlbGVhc2UyNC1tYWludAorNTMzODQgZTE4YWYyOGI0OWRhOWE1OTEzNmFmM2MyYTQ2NTFiMTAxNThiMjBhNSByZWxlYXNlMjQtbWFpbnQKKzUzMzg1IDUzYzBiMDljNDhjMTFmNGNjMDRhMWYzZmFiMDc3YzQwYTE5N2E2ZTAgYmNhbm5vbi1vYmpjYXAKKzUzMzg3IDFjNGJiZTYzZmRmYzQ4NzcyNDNhYWE3YWFmZWU3NTMyNzFkZTVkMzMgYmNhbm5vbi1vYmpjYXAKKzUzMzg4IDdkODg2OGNmYmE3YzVlOWRmNDBmNmNiNDMzOWMzNTZmYmJjNTE3MWEgbGVnYWN5LXRydW5rCis1MzM4OSBhMmUxN2I3NTE1ZDNhMzYzZTI1MjcwMjBkZDNkNmJiNmQyN2VmZDUxIGJjYW5ub24tb2JqY2FwCis1MzM5MCA2ODk5Yjc0MGU4ZWFlNmRkZDdkY2RkODk5OGJlZDI1NGNiMjhhMDQ4IGxlZ2FjeS10cnVuaworNTMzOTEgNzhjZDM4NGQzZmNmOTA5YWM4NTJkZTM4NzZhNDUyZTk0NGQwZmJkYyBiY2Fubm9uLW9iamNhcAorNTMzOTMgYzdiZDg5MmMwNTY3ZDcyZDIwN2MzZTI2NWM3MzEwOWFlZDA3ZGFhOCBsZWdhY3ktdHJ1bmsKKzUzMzk0IDZkMTZlYmM3MTU2OTVjMDkwOTE5ZjA5ODUzYzNlOTk1NTZkYzUwNWUgcmVsZWFzZTI1LW1haW50Cis1MzM5NSAxODAyY2Y5MzI1NGJmNjY0NTQ1ZjBmZDE0YjVkMDRkMDU2ZmU4YzlkIHJlbGVhc2UyNS1tYWludAorNTMzOTYgOGJmNjhlY2M3Njc2YWYxZmJkMzRiOGVkM2IwYmM2YWY3Y2I1NjM5MCByZWxlYXNlMjUtbWFpbnQKKzUzMzk3IDJjNTcxZjZjZTIzYWIyNzY2OGMyYWUxMmQ0ZGI2NDI4NzdiNGVkNmUgbGVnYWN5LXRydW5rCis1MzQwMSBlOGFkZThhNmU1Y2I5Y2E0YTIxMzVhMWZlYjY3YWY5YmRkNTljMzg1IGxlZ2FjeS10cnVuaworNTM0MDIgY2Y4YWY2Yjc1OThiYzUzNTU4OWQ3NWQ2OTViMWRjYjczMzAwMjFmYiBsZWdhY3ktdHJ1bmsKKzUzNDAzIGNhNTM3ZTliYTdhN2YxYTYxMDY4ZjUwNWM1ZjMzZTg1NjFhZTkwODEgbGVnYWN5LXRydW5rCis1MzQwNiBiMzAzZmIzODNmYTQ2OTQ4Mzc1MmUzZjNhYTY3ZjdiZWVhZDgwYzkxIGxlZ2FjeS10cnVuaworNTM0MDcgZjI3Yjg4OTliNjEzNTIzMmE3YTJhZTlkNjNlMzE0NDExY2E2ZDgyOSBsZWdhY3ktdHJ1bmsKKzUzNDA5IGVkN2FjZjE4ODFhOTQwZmM2NWM3ZDI1OTVjNjFmMzVjZmQyNWQ0NDUgbGVnYWN5LXRydW5rCis1MzQxMCAyYTQ3NmM5NGJlMjAwNDA1YTkxZTgyNTM5ZTJlZGFmYWMzZDIzNzAwIGxlZ2FjeS10cnVuaworNTM0MTEgNjhiNDFjMmQ2NjYzMWFhYzRiNDE0YjJjYTZjNjFmZWZlZTM0N2NjNiBsZWdhY3ktdHJ1bmsKKzUzNDEyIDJkZjgwZTcxNmU1YzlkOTI2NmZmZWQwYTlmMjNiOGRkNmY0N2E1MTggbGVnYWN5LXRydW5rCis1MzQxMyAxNDA5ZTFmMjczYjUwODUxMzU2MmM4NjM5MGVkMzNlNmIwMjE1YmExIHJlbGVhc2UyNS1tYWludAorNTM0MTQgNzNiOTNkYzVlNDQwYWMwODg5MjYzNWRlMGVhMTljMGMzNjdmMTljZSBsZWdhY3ktdHJ1bmsKKzUzNDE1IGYzMjgzMjk0NzFkZjU3MTM5NmEzYmFjYzlkYWFmM2YwYzEyZmI3NWYgbGVnYWN5LXRydW5rCis1MzQxNiBjYTFiNDBjYzZiNzRjMzU5OWEyNDZjYWU5NTQ0NTc1YWFmYTgzNDNlIGxlZ2FjeS10cnVuaworNTM0MTcgNDI2ZjFkMzczY2RkNjU3ODBmODc3OTgxMzJjYjQ5YjljMTNjYjBhOSBwM3lrCis1MzQxOCA0ZWJmMGI4MDVjZTg0ZjdhNzlmMDBjYjlkMDE2M2UyZDRlODZhNTdlIGludF91bmlmaWNhdGlvbgorNTM0MjAgYjlkNGNlZDIzNTA2MjFmNjY4Y2ZmOTQyZmM0MzUwMjMwZWJkOWE4MiBsZWdhY3ktdHJ1bmsKKzUzNDIxIDRhZWUzZjY3MmY3N2UwZmVhZjAyY2NkYWJkMDFlZWQ4YjYzMjM2ZGUgcDN5aworNTM0MjIgZGJmZDg2YzNjNzkxM2FhMWNkMjQyN2ZhZjE5NDZhZWJmNTExNmE4ZSBwM3lrCis1MzQyMyA5MGMzODI3MTY4NmIxMjEzMTQ0MzViMzg5ZmMyYjE3ZWM4OThiMzVmIGxlZ2FjeS10cnVuaworNTM0MjQgYTAwNGMzYjAxOWNhMTUzMjI1MGM1MmM1YWZhY2ViOTAwYWU0NDk4ZiBwM3lrCis1MzQyNSAzZDc5YmM2ZWQ2ZWNlNzIyODlhMTZiYzhmYTM4MWFjMDk5NGUwMmM2IGxlZ2FjeS10cnVuaworNTM0MzMgOThkNWY5MGNiOTA1YWZlYmNmY2ZkMWNkMzdiYzFlMjczODFmZTEzZSBwM3lrCis1MzQzNCA2ZWZlM2E0YjEwYWM5OGFkMmUyNTc4OTI4MjJmYTk1NDEyMjlmY2YwIGxlZ2FjeS10cnVuaworNTM0MzggZGI4YzE3NWQxMjgzZDdmYjc2NjIwMzAwMmFkNjBmMTcwOTY0NDA3YSBwM3lrCis1MzQzOSA4ZTJjYTU0NDQ5MDAxZWNiMjNhZTVhYTUxODc3NGUxMGVmZmU3MWZkIHAzeWsKKzUzNDQwIGNmOTgzNDViOWQ2YjAyMGFmMDBlNjc3NzBiMGYzYTcxMjNiZGU2OWQgbGVnYWN5LXRydW5rCis1MzQ0MSBmMzc2OTZlNjQ2ZmFjNWQ1MzU2M2QzOTg3OThmNGQ4MDIwZTMzM2EzIGxlZ2FjeS10cnVuaworNTM0NDIgY2M1YzA3MWM4NDIzMTFlODNmNmNlYTA4ODNmNDQ5Yjg4NzdmNWVmNSBsZWdhY3ktdHJ1bmsKKzUzNDQzIDg2Y2UxZGY2YTg4ZTcwYzFhMzkwYTMzYTA4ZGI3ZGU0Mjg4YzA2MjYgcDN5aworNTM0NDQgODJiOWI1YjEyMjU2ZTQ1ZTBjYTQ5MWQyNGJkNmVjNWRhOWM5M2UxZCBwM3lrCis1MzQ0NSA2ZjViMzM5NDcyNzRlOGI0ZDNmYzUxZWM5NDUzYTJlMjFmMjY0N2U0IHAzeWsKKzUzNDQ2IDM0MjUzMmY0NTM2ZTYxODQ4OWFjNTI4MDA5M2YzOTczYjU1NjJkMmIgcDN5aworNTM0NDggZDAyZDI5YzUyMzJhMWNhYmNiMjcwMDM0N2Q4NGRhOTg2NTFkMWU4YSBwM3lrCis1MzQ1MSA0N2Y5ZWZkYzA4NTVhOGQxNzYxYTBhNDI0NzkzNTc2MmY0MmMzNWMzIHAzeWsKKzUzNDUyIDFjMjY1MDVjMWRlNmViNTBlYTg2NGE5NzcwMjhiZGY2OTU3OGE5N2MgcDN5aworNTM0NTMgM2Y3ODI3NGYyYTM0OTQzNWI3NDUyZTJkMjQyZmI2MGE1NDczNjY4MiBwM3lrCis1MzQ1NCA0YTRiYzVjNzZlNDU5MGJkYzhlNWU3YWRhMmJjMzRmNGVjYzA2NGNiIGxlZ2FjeS10cnVuaworNTM0NTggOWJlNjJjNDVmM2E4Nzk0MGYxYjBjZGUzYjNiNzZkY2RkZDhhOTM2NSBsZWdhY3ktdHJ1bmsKKzUzNDU5IGU1YjY0MWU3MDBmMjM1NDVhMzk0YzBhODM4MGZjMDE3NTIwMGNmYTggbGVnYWN5LXRydW5rCis1MzQ2MCBhNGNkYjljOGFmMjViZDY3YTM5YjE0OTJjMzhjMWMzYzFiMjVhZWY2IGxlZ2FjeS10cnVuaworNTM0NjIgMzc5YWY0MThmYzM2NzUyZGU5NWY0YWEyYmI3YmRkNTk1OGJlODExMSBiY2Fubm9uLW9iamNhcAorNTM0NjQgNDhkMzhkNzc3MDI0OTYyOWViNTE1M2IzOTA2MGYxNTE1ZDI5NWYyNSBsZWdhY3ktdHJ1bmsKKzUzNDY1IDAzYTVmMmIwNjgyNTNmYWUwNTM0NGE0YmQyYmM0YTM2ZGJkZTVjYTEgbGVnYWN5LXRydW5rCis1MzQ2NiA2Njc4MmU1Yjk5MmY1N2Y0YjcyMWIxYzk1NjRhOTljNTQ0OGVmYTE3IGxlZ2FjeS10cnVuaworNTM0NjcgNGE5N2YzYmZiNTVjZTFlNWJkY2NkOTNjZjU5ZjcwN2Y1YTkwNjgxOSByZWxlYXNlMjUtbWFpbnQKKzUzNDcxIGI3MzM4ZjNiMWIwMjI0NWVhNGNmYzg2OTBkYzM0NjFlMDU4OGIzZjUgcmVsZWFzZTI1LW1haW50Cis1MzQ3MiAwOTFkZjQzNjAzOGQ3NDVlYTlkNjI3Zjg4MjAyYjMwODQwZjRkNWNiIGxlZ2FjeS10cnVuaworNTM0NzMgMTkxZWFhZTVhMjlkMmVjM2Y0YTVmNjMyOWVmYjY2YzdkMTFmZTU1MiByZWxlYXNlMjUtbWFpbnQKKzUzNDc0IDRkODU3ZGE3ZTZjNGY0MTMyODc1NDNmOTY2ZTk1ZjNhM2RiOTExMDQgcmVsZWFzZTI1LW1haW50Cis1MzQ3NSA3NzMyOWIxMjdkNDM3NGU0MTY4NjE4ZjJkNGYwYjI2ZmVmZTBmNzMyIGxlZ2FjeS10cnVuaworNTM0NzYgOTRjYTA2ZDk1OTMwNmY4MmM1ZWIxMzM4MWM0ZTMwZTZjMmJjYjQ3YiByZWxlYXNlMjUtbWFpbnQKKzUzNDc3IDkwMTYwNDkwYzZkNDA1MmQzYjQ3NTE5ZDczMzUzN2VjNTliMjExODQgbGVnYWN5LXRydW5rCis1MzQ3OCAyMjNmZjM1ZGNmZmMxYjA2YWQ0MGJmMDc0NTQ1NjQxZGU5MjYyMzZhIHJlbGVhc2UyNS1tYWludAorNTM0NzkgZWU4N2VlZjk1N2YzNTkxMzYzMjc3MDM0MDdlM2ExMzlkMTQzMDBlNSBiY2Fubm9uLW9iamNhcAorNTM0ODEgY2E2MDdkNzQ4ZjY0ZTY2MDRjOGE1YWUwNjAyYmZiYTQ1ZWNkYzlmNiBsZWdhY3ktdHJ1bmsKKzUzNDgyIDliZGYzNGIzZjcyZWIwZmVlM2MyYjE5YjM5ZjJkODg5ZDVkMzY3ZmIgbGVnYWN5LXRydW5rCis1MzQ4MyAzZjFkZmFmMjkzZmExZGEwZWY5Yjk0OTA3OWY2ODhmZjlmMDU1MDRhIGxlZ2FjeS10cnVuaworNTM0ODQgMGJjNDJjMTU2ZTlmNWVmZWU3ODljOTUyYTRkMGU4ODZmNmU0NGVhMCByZWxlYXNlMjUtbWFpbnQKKzUzNDg3IDlmZTkyZjE4YmI2YTQyYTc0NjkzZDZhZTk4MDgzYzYxYTdiZDQ4ZTAgcmVsZWFzZTI1LW1haW50Cis1MzQ4OCBiOGFjZWM0YTRjODljYTZiZDNhZjg1OWI3ZjY3YjQyNDE3YzllYjRiIGxlZ2FjeS10cnVuaworNTM0ODkgYjA1MWQxOTdmN2E0OTM3ZmNjZWZjNjdhYWViODBjMjE2YTQ1NTI3NSBsZWdhY3ktdHJ1bmsKKzUzNDkwIDA1YTg5ODZkOTUyNjczN2M5MjQyMzJjNTdkYzUzMmNiODA3NGFjZjcgcmVsZWFzZTI1LW1haW50Cis1MzQ5NiA2ODBkMTdhNmIxNWYwYTA0MjRhMDNkNjA0ZDBkNDUyMzFlZTE2ZDIyIHJlbGVhc2UyNS1tYWludAorNTM0OTcgMzliM2E1YTNjNjQ1Yjg5YjgwZjVmM2I1YzBkNGEzNGQxYWU0ZDRkYiBsZWdhY3ktdHJ1bmsKKzUzNDk4IDYwZDMxYTEyYjE1MGQ1MDljZmQ3MGJmMTk4ZDA2YmNhZjY1ZmViYTggcmVsZWFzZTI1LW1haW50Cis1MzQ5OSAyZjgwYWY2NzQwNzRhZmMyNTI2YWUwMDFhYWQ4YzRiNWU2Mzg0YmJiIGxlZ2FjeS10cnVuaworNTM1MDEgNWJmNGYwNTkwM2IyMGM2MGY3OGViYzQ1MDY2MGQyNzQ2Y2E3YWVhMCByZWxlYXNlMjUtbWFpbnQKKzUzNTAyIDU5Y2Y4OWU1ZjIzN2VkYWE1MTYwODQzMTMxMzIxZjhmODRhYzhjNDIgcmVsZWFzZTI1LW1haW50Cis1MzUwMyA3YjM4Zjk5NTVjNjQ2NTk0MDE0Nzc1NzFiNzFhZjliOTkzYzU4ZmFmIGxlZ2FjeS10cnVuaworNTM1MDQgMTBiZmZkMTliNTM1YTQ0OGU0ODJlMjllZmZlYWZjODU5ZDJiM2YxMiBsZWdhY3ktdHJ1bmsKKzUzNTA1IDNhZTRmOTMwYmYyN2I0Y2RjMGM3N2ZlMTZiZGY1MDQxNmE4Nzk2NTIgbGVnYWN5LXRydW5rCis1MzUwNiBhYzRjMmY1YzNmYzBlOTkzNDMzNjQ2OGIzYzkwOTkyNzlmOTg5YzkyIGxlZ2FjeS10cnVuaworNTM1MDcgNWY4YTU0YzgwNGZmNmYwZGQzMmIyYzI1ODE5MmRhOTNhOWE2ZWQ2NCBsZWdhY3ktdHJ1bmsKKzUzNTA4IDBiZmZjYTY0Y2NjNGJhMDRlNDEzMDg4ZDA3NDBlYzgyZjQ4NDgxMTkgbGVnYWN5LXRydW5rCis1MzUwOSA3N2UwZjQ3MThhN2NhNjE3Nzg3ZTcwZmIzYThmNmZiZGU3YmEwNWM2IGxlZ2FjeS10cnVuaworNTM1MTAgYzg2ZGYzMTFlNjJjZWNlMjEwMDZiZTZiYzM2MjA5ZmFlZjJiNGI4YyByZWxlYXNlMjUtbWFpbnQKKzUzNTExIDJmYTZlODJiMWYxN2I3YWVmODc2MTM3OTcyYTczYjdjMmZmZGU3NzcgbGVnYWN5LXRydW5rCis1MzUxMiA1NzNhNDYxNzYxNzUzOTUyYTBiMDUyYzIxNTA0MjMwNTRkMDc1NDBjIHJlbGVhc2UyNS1tYWludAorNTM1MTMgNjY2ZmFmODkxMmUwNWYzN2ZlM2FiNGQ4MTNkYTI0OTIxNDViY2RhZSByZWxlYXNlMjUtbWFpbnQKKzUzNTE1IDE2NzlhNGFkYTE3MTJiMGQ4ODk5YTU4ZmRhYzlhZDBmY2Y5MDQ3ZGYgcmVsZWFzZTI1LW1haW50Cis1MzUxNiAzYjZhYzRmNGI0MzcyNDBiZGZhMGY4NTM0MGFlY2RjNTZiYmIxODM5IHJlbGVhc2UyNS1tYWludAorNTM1MTcgYjIzNzExYmUyYjNlMDM0MjEzOGY0NzRmZjMxNjY0ODQ4ODcwZmQ0ZiBsZWdhY3ktdHJ1bmsKKzUzNTE4IGJiNGMwYmJiYTI3MmY4ZDc4Zjc1MjZmZDI0YzYyMDgyODE0MDA4YjggbGVnYWN5LXRydW5rCis1MzUxOSBiMTZiNGY5NzZlNzBhZDg3ZjY2Mzk3MmMyY2FmYTQwNzkzZjQ3OGMxIGxlZ2FjeS10cnVuaworNTM1MjAgZWNlMmFmNzY0NjIxZDA1N2U0MjU2NGE0YjQ0ZDM0MWI5NmVjYTU0NSByZWxlYXNlMjUtbWFpbnQKKzUzNTIxIGRlMmJiZGVjZTgzZWRhZmQyYWUxZGE0ODkxOGE0MzI3MzU4NmYyMDUgcmVsZWFzZTI1LW1haW50Cis1MzUyMiBkN2JlMDNlYmY0NjY3MzFjYjdiZTYxYzQ3NGM2NTFlOTUxZmY0NDRmIGxlZ2FjeS10cnVuaworNTM1MjMgOWYyMzkzZTllYWNhYmY0MzgwNjNmZGFmMjhmMmY0ZjE3ODc5ZTgzMiByZWxlYXNlMjUtbWFpbnQKKzUzNTI0IDA4MWNhNjA4MGZmMTQ1MzA0ZTRkMzRmMTE4OTE5OTY0MzUyY2Y1MTUgbGVnYWN5LXRydW5rCis1MzUyNSAyOWI4YjY1YmFlM2ZhYjVlMGY0Yjk3MGJkOTZiZmEzYmUwMzBlMjEwIHJlbGVhc2UyNS1tYWludAorNTM1MjYgN2Y0MDY1ZWZhNDRlZTIzOTY1MTExNTE1ZjRjMzA3MmUyNWUyYTMzYSBsZWdhY3ktdHJ1bmsKKzUzNTI3IDg2YWIyZjIwYTMzMzM4ZGMwYTJmMDEwYWYwYzkyOTMxNGViNjg4M2IgbGVnYWN5LXRydW5rCis1MzUyOCBkMmUyZWRkMDcwODJjNGZiZWRlNDhiMjdiMmZlYjNiZTc2NWUzOGE0IGxlZ2FjeS10cnVuaworNTM1MjkgZGEzMGEyNmRmZWIzOWNiNTAxYjViMGMyODVhZGVkYzVkZGU3YmZhNSByZWxlYXNlMjUtbWFpbnQKKzUzNTMwIDY4NjBiYTg4ZDY3ZWE5ZDMwZjc5ZWU4MWEyOTM4NjNmMTI3MzJjZDggcmVsZWFzZTI0LW1haW50Cis1MzUzMSBkZjI5NGJjNWNlNmU4MjY5ODc2NTIxNjdjMTJmMzg5NTQyYmNmNTdmIGxlZ2FjeS10cnVuaworNTM1MzIgMGU5NWM3NzUxMmY1NGExMGMyOWMwNzM4MGIwMmE3MWYwNTQ2NDkxNiByZWxlYXNlMjUtbWFpbnQKKzUzNTMzIDI5MzMxMWU2M2E3MzJlMjFkYTdlZjY2MzBmZmYyNWQ5ODAwODA0N2YgcmVsZWFzZTI1LW1haW50Cis1MzUzNCAwMzE0NGM0ODY3ODJjMWIxM2UxYmE2MDg3OGI1OWY0OGUwZmYxNjAxIHJlbGVhc2UyNS1tYWludAorNTM1MzUgZGJiZGZjMDM4ZGM5NDdjZDkyNDBiYzI5NzVmODI4MjVlN2YyN2NhZSBsZWdhY3ktdHJ1bmsKKzUzNTM2IDM4ZDk0NGVmZTYwMGM2YzRlZjY5N2VmZTM5NThmNDUzZjkwYjYyNmMgbGVnYWN5LXRydW5rCis1MzU0MyA0ODA3YTZhYmY5MDYyNGM5OGI3OWM1NTNiMTNiYzA1MDJlMzliNmNhIGJjYW5ub24tb2JqY2FwCis1MzU0NSAwZDA5NmIxNDZiNDg2OGIzMjhiNTgwMDNhNzU2ZWMwM2RiMmMxMTVmIGxlZ2FjeS10cnVuaworNTM1NDYgNDE1OGJhN2Y0NmEwMzVhYTQxY2YyMjkxZGJmYjc2ZjRmNzcxMjBlMCByZWxlYXNlMjUtbWFpbnQKKzUzNTU2IGE1YjI2OWNlMDc5ZGVkYzZiMGZmNGM4YjQzMTk0ZTA1ZTA5MDA5OWQgbGVnYWN5LXRydW5rCis1MzU1OCA2NTZkZDAwOTVmNTJlZGMxOGRlZTk1ZDIzZDY5YmFjYjE5YWFiZGMyIHJlbGVhc2UyNS1tYWludAorNTM1NjMgZTQzODE2ZGRjNGYwNWQzMThkNTQwOWU3MmFjYTlkYzczZGM3YTlhOCBsZWdhY3ktdHJ1bmsKKzUzNTY0IDE1ZGVjYTM5ZTBlNmJiYzc5Y2M0ODE2MDYzZGJjZTIyMDBiMjNmMmQgbGVnYWN5LXRydW5rCis1MzU2OSA0ZmE5YzgwZmIxN2FiODZjMTlkNDg4NGEzNTRmYzUyNTkyMzliM2ViIHJlbGVhc2UyNS1tYWludAorNTM1NzAgMTE2M2Y1NWRhZDk1ZjgwY2Y3ZjA1ZWYxOGJiODZkZTU3ZjJlN2M1ZCBsZWdhY3ktdHJ1bmsKKzUzNTcyIDJiYmYxN2MxYzY5Y2I5ZDFiZGNjYTE0ZGMzODQ0NzEwMWQ1MDgxNjkgcmVsZWFzZTI1LW1haW50Cis1MzU3MyAxMjg1NTAwMGUxM2JkZWFiNDg4N2M3NDRjM2UxNjU5OTU1Njc1OWFjIGxlZ2FjeS10cnVuaworNTM1NzUgMjM0M2M2OGNhMWM4N2EzYWZmNTAyM2FiMjdkODFiMGU4Y2FiNTUwNyBsZWdhY3ktdHJ1bmsKKzUzNTc2IDE3NTFjYTNmZWZmZTk2YjQ0OGY2ZTM2MmI0ZDE2MmNjOWZiN2YyOTUgcmVsZWFzZTI1LW1haW50Cis1MzU3OCBjOWQ3Yjg2ZjkzNzdjYjE4YmJmMTM2ZmNhYmY5Y2FjZWFlZTEwYWUzIGxlZ2FjeS10cnVuaworNTM1NzkgMjQzMWY4MmE2YTE3NTZmYTc0YWQyMmNlM2I3MjAxN2RhNGZhMWZmYiBsZWdhY3ktdHJ1bmsKKzUzNTgwIGFkOTM2ZTBiNmZjZmQxYmIyZGJmOWE3YTM5OTBmMWNhMzc5ODM3MjIgcmVsZWFzZTI1LW1haW50Cis1MzU5MCAxNzgyYjYyMmFhYzcxYjliMGUzYWFkOTEzYThmNjVjOTFkZTA2ZDk5IGxlZ2FjeS10cnVuaworNTM1OTEgMmQ4MjM5YWJmYTYwZmFlM2MxYmU3NWViYzBkYmM0NGM4ZTJkNWI4YyBsZWdhY3ktdHJ1bmsKKzUzNTk0IDVmYzgxOWM2YzEzZTJlZjllN2JkNWQ2ZTcwNjBkZjZjYmYwZmE1YjggbGVnYWN5LXRydW5rCis1MzU5NiBkNjBhZDkxNGQ4MzNlZTk2Y2RiZWIzNGNkNWFjYzZiNGFjZDEwYzYyIGxlZ2FjeS10cnVuaworNTM1OTcgYWI5Yzg2NTE5NjI4MWFmYTJhNzU3N2NmNjY0OWU3NTc3OGU3YzIwNiBsZWdhY3ktdHJ1bmsKKzUzNTk4IGZmYjk1ODBmOTY3YmFhNmM5NjIyODVkNWQ4MzY2ZWY4MTVlMGE3OTQgcDN5aworNTM1OTkgZDViYWJiMzI2YTUwZDEwM2IwMTU0YmVjNGQ2YzBiMjUxMDgzMDhmZiBwM3lrCis1MzYwMCBhMjY0NDIyMjgwNTg1NWM4MTdkZjFkNTM2YzI0ODI3ZmYyYzQxNjljIHAzeWsKKzUzNjAxIDVkYWUwZDdmNjgzYWIzNzk2OTJmZDRjYjQ1YTkxOTFkZDkyY2UyMGQgbGVnYWN5LXRydW5rCis1MzYwMyA0YjEwMDFkYTM5OTI4NmE4NjNhYzY1OTk5MjIxNWVhYWJhNWQ5ODE0IGxlZ2FjeS10cnVuaworNTM2MDQgMGFjYTAwMzljYzFiNWVkMTVmMTBhOWRmNDFlMjY1ODQ3ZDAzNzU3OCByZWxlYXNlMjUtbWFpbnQKKzUzNjA1IGJkMzczOWE4NzI1OTVhMDcxNmQ4ZjYxNzc3YzMwZmI2OWZlODRiYTkgbGVnYWN5LXRydW5rCis1MzYwNiAwMzdhYmNhODE3YjYzODNiZGI0OGE3NzYxMzg0NDZhOTI1NWU0MDg2IHJlbGVhc2UyNS1tYWludAorNTM2MDcgYzE0N2M2YmM1NzlmMjgxOGFkMTMxMzJkYTA4NDFlY2QzMGFhZjMxZiBiY2Fubm9uLW9iamNhcAorNTM2MDggNjdlYzRhZmZiZDE0YzBlNGQ4NzE1ZDVhYWYwZGIwNjIwYzQ1M2ZmYyBiY2Fubm9uLW9iamNhcAorNTM2MDkgMGYyMGMzYmM2MjcwNmEyMmZjMWVhMTE5MmQ2ZWFiYjA3YTAyY2ExOSBiY2Fubm9uLW9iamNhcAorNTM2MTAgNmViYWQyYTZiOTkwNzg2YWI2MTIzYmM5NmI2MTY3MzE1MTdhMmJhMiBwM3lrCis1MzYxMyA1ODM4OWRlYTY1MWNkNjkzMWU4YTQxY2EzNzFlZmUxYWFlYTc4Y2U0IGJjYW5ub24tb2JqY2FwCis1MzYxNiA3MmMwYzZhZWMxZWQxODVjNjM2Y2UxM2YwNGE1YTcwNjM1YzIyMDEyIGJjYW5ub24tb2JqY2FwCis1MzYxNyA1M2EzNmRiMmMzODc2NDA5OGJlOGY2MTBhZjYwM2I5NGEwOWQ0ZDhiIHJlbGVhc2UyNS1tYWludAorNTM2MTggMmE4ZTllZmI1ZDIwYzNiYzVkY2M3MTllZTI3MTRlNjg5YjAzZWFjOSBsZWdhY3ktdHJ1bmsKKzUzNjI0IGFkOGNkZmI2OTg3MjEzZWQwY2Q2ZDVkM2RlNDhmNTc1YzIwODAyNTggbGVnYWN5LXRydW5rCis1MzYyNyA4NDgwOTY4ZjRmNGExNGU5MjkxYWI1MDE1NTk5ZDE5MTdmNmFhOTE5IHAzeWsKKzUzNjM0IGYxNzAxYmEyNDUyYjQwZWE4ZGI4OWMyM2IyYzNhMmM3YzMzM2EzODEgcDN5aworNTM2MzUgY2NhYzYzNmIxNTJjZTY4MmZiNGYyNTI1MjViZTQ1ZGFiZGY4ZDY4MyBsZWdhY3ktdHJ1bmsKKzUzNjQxIDZkOWNhOTBkOGJmNzQ5ZDk1YmQ5ODBhZmQxMTdkZDAyY2E2YmVlNTggbGVnYWN5LXRydW5rCis1MzY0NCAxYWY4ZmVlMzMwMTNjMGU3NjJiMjQwYTU4NDM0ZWU5ZTE3MmJhMzJjIGxlZ2FjeS10cnVuaworNTM2NDYgZDNlODg2MzFmOTJiYjZhMDdiYTcwZTk1ZDllYzIzYTFkMDVjYmIxZiBsZWdhY3ktdHJ1bmsKKzUzNjQ3IDI2NWM1MWJhMzkxMDIzMTQ5YzY5YWQwNWM1MGE1OGM1NjE2ZDZlZTEgcmVsZWFzZTI1LW1haW50Cis1MzY0OCAwOWRjYWNjOGEwYmMyYTFlMzBmZDg0N2EwMzY3ZDdjYWQ1ODU0NjY5IGxlZ2FjeS10cnVuaworNTM2NDkgMDUyOGQ2Zjk0ZWI2ZWU2M2Y4ZTQ4YzBkMWFmMjcwN2IzOTg3MmYxMCBsZWdhY3ktdHJ1bmsKKzUzNjUwIDZjNDFiMDEyMjc0N2FmNTlkNTFmZTc5NGFiMGE1OGQ3ZTFiOWQyNGQgbGVnYWN5LXRydW5rCis1MzY1MSBkNTk0ZWM4NThmZTk3NGRjNWQ5MmMxNzAxMzZiMGYyMzY5NGQ2ZjQ5IHAzeWsKKzUzNjUyIGY4M2Q2YWEzOTBmMTA2YjkyZmI4ZmYyZGZlMmRhNGViODg1OGQ4ZGYgcDN5aworNTM2NTMgYzc3OTMzNDVhMGM1NDRjMjQ4MjdjYTVjYmEzNjdkOTJkZWI2YWZlZSBsZWdhY3ktdHJ1bmsKKzUzNjU0IDQ5OWJmMzA0MGFmN2JmNDUzYmZkMzFkZTIzZTU5YjNiZDVhYTFiNDIgbGVnYWN5LXRydW5rCis1MzY1NSA1NmRiZGI3YjQwNGEzOWJlN2E1YzI4MzNhNjgyOWQzZGQzOTRlZDBkIHJlbGVhc2UyNS1tYWludAorNTM2NTYgMDc4NzU1NDk4Y2ZlMzU1MGJiNjAxMmRlYzBiNTZhMzVhMjc3OTZmMyBsZWdhY3ktdHJ1bmsKKzUzNjU3IGQ1MDk5NDY5M2M5MjU2ZmQxZTFiY2JkNzBlZWNlYWM4OTUxZmU0ODMgcmVsZWFzZTI1LW1haW50Cis1MzY1OCA0ODdlZjBmOTAzZTAxNTg0MTdjNzg1Yjk0ZDFjMDM5OGRjYTY4YzhjIGxlZ2FjeS10cnVuaworNTM2NTkgOGViMDNiMTE4MTY0MGYxOWU1NDk5YjIyYzJkM2UyNGZiZTIzZTRkZiByZWxlYXNlMjUtbWFpbnQKKzUzNjYwIDI5MDBjNzU2NDA1NWQ2MmMyZGY4MGE2N2IyN2Y3NDg1ZjYyNjZlZjcgbGVnYWN5LXRydW5rCis1MzY2MSAzMDIyNzc4ZWUwY2M2ZDM2ZmI1NDg2NzE3Mzg3ZGIzZDBiMTNmNDI1IHJlbGVhc2UyNS1tYWludAorNTM2NjIgZmZhYWFlMDJjNjYyOWNjNTU2ODhlZDhlMzZlZTAxNTE1OTQwN2ZkZCBsZWdhY3ktdHJ1bmsKKzUzNjYzIGEyZDdmNGMyOWU1YjA4OTEzZGZlN2ZjOTk0Mzk4YmZlZDU4ZWU0OTQgcmVsZWFzZTI1LW1haW50Cis1MzY2NCBjOTk0YzI0NWQ5YWI1Y2Y5NjU3MDU0ODQ0Y2MxMDM4NzA3ZDdlMTVkIGxlZ2FjeS10cnVuaworNTM2NjUgZDhmYjBmNmFhYWQ0M2NiMmY4MjAzODhiMjAzY2I5YjFkYWNlYzE3YiByZWxlYXNlMjUtbWFpbnQKKzUzNjY2IDFhZDA1Njg3MzdmNjEwMTMyNGE1NDc1MmZkYTE3MmI5ZWQ3NTZkYmMgbGVnYWN5LXRydW5rCis1MzY2NyA0N2JiMjgwM2ViMWJlMzY5ZGYzOGI5Y2Y2ODFjNDI3YWVlMTFhOTBjIHJlbGVhc2UyNS1tYWludAorNTM2NjggMWY3MWEzMmY5OGQyM2JjMDMwNDFhZDZlYTc2NjBmYTg3OTAxOTE4ZSBsZWdhY3ktdHJ1bmsKKzUzNjY5IGEwNGM3ODE1NDZlZDJhOTdiM2Y1YjZiYmM4NTNkMGMzYjEwMGQ4NGQgcmVsZWFzZTI1LW1haW50Cis1MzY3MCA5ZjVlYWVhM2M3OTU0MDliYzMzNThmYWZiNGY5ZWRjNmE5MTEwOTFjIGxlZ2FjeS10cnVuaworNTM2NzEgZTc3NmM4M2EwYzE5ZTI3M2U3MjA4ZjFjZmQyYTk2MWIwYTQ0ZmI5MCBsZWdhY3ktdHJ1bmsKKzUzNjcyIDcxNTZjZmRjMzY2N2UzYmZkMDUyZDQxOGJkYTM2ZjkyYjU5OTFjN2IgcmVsZWFzZTI1LW1haW50Cis1MzY3OSBmN2U5MDcxYzNhMWYwMGVkNzEyNGYxZGUwZGUwYTI4ZTFkZTZjOGY3IGxlZ2FjeS10cnVuaworNTM2ODUgNzkzZTAzMjNkNGQ2NWJmYzg5YjQwZDc4MTYyY2Q3NzFjNTc1YTE4ZSBwM3lrCis1MzY4NiA0Y2RmMjFhMGRiYmNlODkxZTc1YTkyMGQ0ZmFmNGMwZWNiZGQ4MzMyIHAzeWsKKzUzNjg4IDFkNTQzYTMyMDM0NjEwNzMwNWM0OTEzZDgyN2QxNDlmMjBhNDM0ODcgcDN5aworNTM2ODkgZjZmMzkxZDFkMDUwZmUzNmQwMDI4ZmVjMmRjZTEyMmJmMzBjNDRlOSBsZWdhY3ktdHJ1bmsKKzUzNjkwIDgzZWZmZjRkNWFlOTQyNThlYzY5MmNlYmZiMTgyYmZjZWVmNzBjNWIgcmVsZWFzZTI1LW1haW50Cis1MzY5MSA0ZDkxNTY0NjQ2NzM2ZGY3MTA3ODE4YTI5OWFkY2FiNTZjNDM5ODNkIGxlZ2FjeS10cnVuaworNTM2OTIgYjcwNDJiZGY5MGE5YmFlNDE0ZjQxNDE1OGE2MTM3ODFkZTY4ZGZmNSByZWxlYXNlMjUtbWFpbnQKKzUzNjkzIDk4NDA0MWU3NDQ2ZDMxYzZhM2JhMDRiNWM1OWEwMDhjNmVhYWQ1NzMgbGVnYWN5LXRydW5rCis1MzY5NCBkMmZlODkzYTQ4NDM3MjU3MDU5NzAzZDA2MThlNjhiNmZhMzM3ZmVlIHJlbGVhc2UyNS1tYWludAorNTM2OTcgMjY2YzFiMGY5ZTE2YzY4ODY2NDZhYjI5MzdlMDQ0MGI2NmU2YzQxNiBsZWdhY3ktdHJ1bmsKKzUzNjk4IGJlMjk1ODc4MjU2YWFiY2YzZWUwNjNkYzBlZGI2YmU1M2RhMjk1NzcgcmVsZWFzZTI1LW1haW50Cis1MzcwMSAyMjc2MGQ1M2Q0ZGE1ZDI4NzdmODE0ZmExOWRkNjFiZjcwMDZhYmE2IHAzeWsKKzUzNzAyIDBjZTE0YzRjYTEzMzdkMTA2ODNhNDY5YTc3YWM0M2FjODhiZTRiZGEgcDN5aworNTM3MDMgNjkxN2M2NzZjOTJmYmI0OWNkMWIxMjUyMmQ5M2E3M2EzOGZkNGU5YSBwM3lrCis1MzcwNCBlOWE2MjM0YjI2YWZkMWUwMjUzOTYzMjU1MjNhY2JhM2QxYTNmYWYxIHAzeWsKKzUzNzA1IGU4YjI5MTNmOTI5N2Y0N2Y5NDJjMTVkM2E5M2YxZGIwMDY0MTIyOWEgcDN5aworNTM3MDYgOGQ5YTBlYzRkOTc2MDA3NzYzOThlOTk2ZGRkMmQyOGQwZTA5MTZiZCBwM3lrCis1MzcwNyA5ZmQ5NjQwODhlMDcwNWY1MmU4NTA1N2VhMDJlZWIxNzUzOTY3ZDg2IHAzeWsKKzUzNzA4IDgxZTQwMzRhZDg4Mzc2MTIwMjZmZjFlZGRmODFlZTM1NWYxOWU0NjIgcDN5aworNTM3MDkgYzE1Y2ZmMmRkMThmNWNlZDk1OWI0NWYxMTdkM2IxNDA5MjMxMzA4YSBwM3lrCis1MzcxMCBiN2Y4OWRiOWExZDA1YWE4NjQ1YTU3OGJiNjhhN2E0M2NhY2VlODZjIHAzeWsKKzUzNzExIDQzZTM2OWNjMDJjNTVmNDczZjZkNGE3NTZmNWZmYzhkNDE4OTM3MmUgcDN5aworNTM3MTIgYzRiZTQ5M2RjYjZmOTRiNTZiYjZjNWNkYmZkNzEzMjZlMTc2NTc4NSBwM3lrCis1MzcxMyBmZmRjOGQzOThlNDkxMWI3YzQxYzhlY2NjNzcyYTdmOWQ1ZTZiY2NlIHAzeWsKKzUzNzE0IDcyMjc3ZTE5NjdiMmI2ZGZjZTIyNDNjZDdlZTkxMmY0YmUxMWI3ZDMgcDN5aworNTM3MTUgMDRmNWNiYzc0NDI0MWRiZDQ2NGU0OTNlZWIwYTg1ZWRhYTBlOTNjYSBwM3lrCis1MzcxNiA2NzUyNWVmYzk5YzU3ZjdhOTc0YjhlMzQwZjgyNTFhNThkZmJmMzMzIHAzeWsKKzUzNzE3IGFlOGVlOWU1ZTgxNTAzOGZjZjYwOGMwNDlkOTQwNTE5ZjkzMGZlZjQgcDN5aworNTM3MTggNTYyMmExM2FkOGFiMTFkNzAxM2UxMTZiYWEzZTZmZjIxNWIyYTFmNSBwM3lrCis1MzcxOSBlMjgwMGU4ZGQ5YzQ4NGM0YTk4OTVmY2JhNjk1OGFkMmY3YmI4ZDRiIHAzeWsKKzUzNzIxIDQzNWVkNjQxYTMzM2Y4MzM5NjMzYWU3MTExMTI5ZmJlMWYzZjgyY2IgcDN5aworNTM3MjMgZWFlZGY4NGVhYmNkZjY4MzhkZGQ4NDlhYTQxNmM3Yjg3YmY3Mjk5ZiBwM3lrCis1MzcyNCA3ZGEyYWUxYTRmNzA5ZDBmMTRkM2E5ZTU4YWQ2ZmQ4YjJlNzFhOWVhIHAzeWsKKzUzNzI3IGYyMjk2NDVkNjA3ZGRlM2U5MGYxMzNkMzQ4ZTAyMDlkNmNkOTk4MTggcDN5aworNTM3MzEgMzUzYzAwOWY2YzUzODUyNTQwZmFjYmEwZDMxYzY1M2VjYTc2ZGM5OCBsZWdhY3ktdHJ1bmsKKzUzNzMyIGYzNDBjYjA0NWJmOTJkMGU3NzcyMzg1YTcxOTdlOWIwYWYzN2YwYTggcDN5aworNTM3MzQgNGEwMWY2ZTAyMDE2ODg2NDFkZjVhZjk2OTRkMjk4MTA0NmVkYzVjMSBwM3lrCis1MzczNSA1ZGJjZTJlYTEzM2MzYzAxZTc2YjBjNmQzYTQ5NDE2OTVhYmJhOTFiIGxlZ2FjeS10cnVuaworNTM3MzYgOTA1MzZiZTA5M2Y3ZGE1ZjlkZTY2MzhiMWQ2NTExZGIwM2I3N2NjYiByZWxlYXNlMjQtbWFpbnQKKzUzNzM3IGZjZjY5MDJmMjEwZWQzYjA2Yjk1YmM1MjA0NTFlNzQ5YmViY2ZmZDggcmVsZWFzZTI1LW1haW50Cis1MzczOCBjYjgxMjNhYjJhMDY1ZDhhMDkwZDE0MjNjZmFhMTIxM2NjY2UzZTQyIHAzeWsKKzUzNzM5IDVkZTc1NDdhNWEyMzcxMTExMzg2NjEyYTlhOWEyZmE2MjNjMDY0ZWQgcDN5aworNTM3NDAgM2QxOGQ4ZjM2NmIxMTg0ZDYxOWJhNzQ5NTBhM2Q3MTU4ZDY0ZDI1OSBwM3lrCis1Mzc0MSAyOWQ2NTc0MWY2Yzg5NmYyZTFjMTkzZTAyMGNmN2RkYjQxMjcyOWIxIGxlZ2FjeS10cnVuaworNTM3NDIgYTg0NDYwZTUzMTYwOTNkMDAzMGZlYjhjNzYwYWMxYzNhOTg4NTcyNCBwM3lrCis1Mzc0MyA1ZWY3MGM0OWQ4NWEyNDMzNWI0M2FmNDNjM2YwOWI2ZGY2MzE5MmEzIHAzeWsKKzUzNzQ2IGU2Njg1Yzg0MGVlM2MxMWE5MWUwYTMzNzIxYTU3YjE3Y2Y1MWY4MzcgcDN5aworNTM3NDcgNDI5YTRiYzMxYzhlMzY3MGU3MDAwZmE1NDA5YzdlMmI4MGY1NDc1MCBwM3lrCis1Mzc0OCBkY2E5YmM4ODMwNDA5NjU4ZmI3NzJhNmQwYjMwNTNjNmRkNDM0NWQ1IHAzeWsKKzUzNzQ5IDUwMzMwZDE4ZDFjZDcxNDFiYWZjMmM4YTk5ODBhOGI4Y2E4ODNkNzYgcDN5aworNTM3NTEgMTgwZDRlODk5NjgzOTA2OWZjYTg4MTljZjlmM2NjYzVlYTJlYTNlMSBsZWdhY3ktdHJ1bmsKKzUzNzUyIGVjMWViZGY1NGVhZmQ5YWJiMTQyNDE4ZGM2NWNiYTRhNjJkZDMwMGEgbGVnYWN5LXRydW5rCis1Mzc1MyBiYmU2ZGUzYTk3NDUwMDZmNDEyNWFhYzMyNzJjZWJjNDMzZjNlM2VjIHJlbGVhc2UyNS1tYWludAorNTM3NTQgNzI0ZTBiNjNhNzliNWQ0YjBjYjE2N2FiOGY5NjBlYzUxZTZiMzkyOCBsZWdhY3ktdHJ1bmsKKzUzNzU1IDdhZDI5ZTk5ZWVjODU3MjYyMGZjZjA5ODcwM2FhNTVkNjA0Yjk3NjUgcmVsZWFzZTI1LW1haW50Cis1Mzc1NyAzMmQ0NmFiYWE4YWJhNGM1ZTdhOWNhODI5NTI1MjNjZGNkODFkOTY4IGxlZ2FjeS10cnVuaworNTM3NTkgOWQyNTNjZDM4YjViNjVhM2Q2YzY0YzQ4ZjhjYWYzNDVlNTVlNDI2YiBwM3lrCis1Mzc2MCAyOGM0ZDliNzc0MGVkMDEwMzg1NzNlZmFjNzAxZmU3MDE3OGNiMDQ1IGJjYW5ub24tc2FuZGJveGluZworNTM3NjEgMzVjMGQzOGFjZGNlMDgwMmYzYmJkMDQ3ZDZjMDAzZWNjMDBjMTQ4OSBiY2Fubm9uLW9iamNhcAorNTM3NjIgZDRhNmE2N2EwMGEwYmEzNWJjMjFiOWFjMzIwM2U5YjA4NTgwYjBiNCBwZXAzMDJfcGhhc2UyCis1Mzc2MyA4MWQ2OGRkODRhYTA1Y2Y4ZDU4ZGY1NWFmMTc0NmQ4MWE5OTlmYjE0IGxlZ2FjeS10cnVuaworNTM3NjQgMWRiYTYxYzA3NzAzNGUxNjg3YTFmZjYxNWFjMmRiN2JhZjA4NzJlYSByZWxlYXNlMjUtbWFpbnQKKzUzNzY1IGRhZjA2MzUyN2I5NzIxNGM5NWUyNzMyN2RkZDk5MmVjMDdlNGQwMmUgbGVnYWN5LXRydW5rCis1Mzc2NiBkOTQ5OTMzY2Q2YjQ2YzcyY2Y3YzQwMjkxNDEyZDJjNmViN2FmNjE5IGxlZ2FjeS10cnVuaworNTM3NjcgYmQyNGQzODI2Y2M4M2RmMGM5YjU4Y2RkZjFjN2UyYzRjNzMyNjJmNCBsZWdhY3ktdHJ1bmsKKzUzNzY4IDE3N2E3YmVlNjRlOWViMmQzNzcyY2VmZjgxZDE5YzJjOWE5YWVkYTQgcmVsZWFzZTI1LW1haW50Cis1Mzc2OSAzYmJlYzkxYzViOGZlNjZlYzM0ZjBmOGYxYWIwODg0YTE0YTg5MzBlIGxlZ2FjeS10cnVuaworNTM3NzAgODg1YTc3ZmQ1YzAxYzdkYmY4M2EyOWQ1ZGNiZTk5ZjU5NmEwOTA3MSByZWxlYXNlMjUtbWFpbnQKKzUzNzcxIDM5ODNlZTBmNmY5NjRkYmIyMjhmNWUxYjE1MmRiYWRlOThhYzU1OWQgbGVnYWN5LXRydW5rCis1Mzc3MiBkNDc2OGJmZjY0M2VhODEzZjY2ZWI2ZDc5NzIxNWQyYjUyYTVhMmU4IGxlZ2FjeS10cnVuaworNTM3NzMgYWJmZDk1MTg1YWI5OTE5MzY5NDFkYWRjNDBkYWRmNWFkMjFmNmJiNCBwM3lrCis1Mzc3NCA5MGUyMmZlYTgzNjM0NDU2N2RjNTVkZThhOWE4YTBkYWI3Y2U4M2M5IGxlZ2FjeS10cnVuaworNTM3NzUgZGM1Njc4OWIyOWU5YTYzYjRmNTcwNGYwZDgxNDUxMDM5NzFmMTg5YyBsZWdhY3ktdHJ1bmsKKzUzNzc2IGE2NTQ2YzI3MzY5YTZjNGYxMzBlNmRmMTBlYzY3YTE1YmJmZGYyMzMgbGVnYWN5LXRydW5rCis1Mzc3NyAwOTcyYzIxNzZhZjliOWE5MGY4ZmNiMGZjNGVhNWRiNDFiMmFkYWM1IHJlbGVhc2UyNS1tYWludAorNTM3NzggYTYyMTg0YjAzZjBmMTUwMmQwYWI4ZTdkZWY5MmM5YjY2NmJmYTY4MiBsZWdhY3ktdHJ1bmsKKzUzNzc5IDczNDgxZTA3Nzc1OGE5NDE5M2ZiMDExZmU5NjZhYzU5NzhlZWRjOTEgcDN5aworNTM3ODAgNTAyZGUwNzlhYjNhMjA1MjAzMzUxYTBmZjUwMmI4ZDg0MDk2OTYwMiBwM3lrCis1Mzc4MSAxZDUzZWEwZmMyM2YxNWY1ZDJjNjA1NzZlOTZjMzA1YmMwZmE3MjY3IHAzeWsKKzUzNzgyIDQ4YjZkMDE1MzQwYWU2OTc4OGI1OTY5MzRmMDQzZjNmMWY1NzIyMjcgbGVnYWN5LXRydW5rCis1Mzc4MyA3ZTRiNjM1ZjFkMzFkYmEwZDdlYWUxZTEzYWIzZTgwY2M0ZmEzYTI5IGxlZ2FjeS10cnVuaworNTM3ODQgOTliMGUwNGIyZWIxY2EwMTFmOGZhODNiMzJlYzQ3ODEzZDVjMzZiNSByZWxlYXNlMjUtbWFpbnQKKzUzNzg1IDJhMjUzMjg4M2Q4MGZiMzcyZGIyZTNlZWE4ZTI3Y2VlOTZkNzc3ZDYgbGVnYWN5LXRydW5rCis1Mzc4NiA5MTRkZDUwNTlmMzhmMzIyNTU3YTgyNDQzY2UyOGY2MWY1Y2YwMmEzIHJlbGVhc2UyNS1tYWludAorNTM3ODcgNDc0OTc3Y2Q0ZDljODQ0MTQyOGE5MTQzZDM3ZWFhYTM3MTYzMDc1YiBsZWdhY3ktdHJ1bmsKKzUzNzg4IDI5ZmI4ZGJkMTBiODVmNGIyOWY3OTg5ZDA0NWQ5NjMyN2QzYjc5YWYgcmVsZWFzZTI1LW1haW50Cis1MzgwMCBiYzJiZDBmMDFkOTViNTQzNDk2ZmZhMTZjNWJiZjZhNDI1NGE1OGUzIGxlZ2FjeS10cnVuaworNTM4MDEgYjRiMzI3ODQwZmIxNTEwZTk3YzU0MDk0MDYxNDY2MTRmNTc1M2JmMCBsZWdhY3ktdHJ1bmsKKzUzODA5IGY0ZjY5NWE3NTY2NGFmM2JiZjJmNzg1ZDA1MzNlM2Q2Y2RjZTVkNGIgbGVnYWN5LXRydW5rCis1MzgxMSBkNzk1YTU1ZTliZTQxZDZkOWQ1MjBkMjczYmY2NTZkZmMwZGIyNjY5IHJlbGVhc2UyNS1tYWludAorNTM4MTIgNzM2ZjNkOTBlNGUyODQ4NmY3MDc1Y2MwMzgzNzQwNjk4ZDJhZDI1MyByZWxlYXNlMjQtbWFpbnQKKzUzODE2IDllMzU2NDVhZjQwZjY4MmVjYzJmOTFmNjllNDBjZDcxZGQ1ODQ0MDcgcmVsZWFzZTI1LW1haW50Cis1MzgxNyAzNWFlMjgyNTdhMjgwNWI0YTcxZTllYjEzYjE3ODBmM2VkMWYwOGUwIHJlbGVhc2UyNS1tYWludAorNTM4MTggYjBmOGU5YjBjYzE5OTI4Y2NmOTczYTU1MjhmZmE0M2I3Nzc3ZmZhYyBsZWdhY3ktdHJ1bmsKKzUzODE5IDgxYjVkZjU3OThjMjdhNWE0YjBjOThlMWNlZjE4ZWNmZmU1ZWI4OTkgcmVsZWFzZTI1LW1haW50Cis1MzgyMCAzNmQ3YjNiNmVlNTk2ZmU4MTg4MTgwZTg5MmU2ZmVkZmYwNmZkNDA1IGxlZ2FjeS10cnVuaworNTM4MjEgZDM4NmI0NjA5OTNiNzNiODZmZmRhY2MwODJjNTI1M2VlYzQ1MDUyYiBsZWdhY3ktdHJ1bmsKKzUzODIyIGRmMDIwNGNhOTczOWYxNTc1ZWYwM2E5Y2JkM2QyMzBhOWU1NmM5NmEgbGVnYWN5LXRydW5rCis1MzgyMyAwY2M0NTBiODk4Mzg5MTZkMTUyM2JiNDdjZTBlNGJmODU1NjFlZjIwIGxlZ2FjeS10cnVuaworNTM4MjQgYzllNDEzYjFkNTQwNmEwYThiZjdiOTQ0NmM0ZjdiZGJjYjRlMzU2YSBsZWdhY3ktdHJ1bmsKKzUzODI1IDU3N2JmMjFiMmM4NmRjZTA1YjAwMzE0NDY5OWFhMThjMjcwMWIyY2MgbGVnYWN5LXRydW5rCis1MzgyNiA1M2ZkMTQ0YTNmMWFiM2NiOWYyNTgzMDJhYjVmOThhNmJlODU0NjdmIGxlZ2FjeS10cnVuaworNTM4MjcgNjcyYjkwNzU3NjQ3MTNkYThkNTYwZTc5OGViYTBhYjAzNzU1OWQ4YiBsZWdhY3ktdHJ1bmsKKzUzODI4IGMzNGJkNjU4OWUxZWViY2QzOTc1MzE3MzY5Y2M3MmQ2ZDljODc0Y2IgcmVsZWFzZTI1LW1haW50Cis1MzgyOSBkNWExNWY4NTNkYjc0ZGU3NmNlOTI2YjViNTM1NWYxMWI1ZWU2OGEyIGxlZ2FjeS10cnVuaworNTM4MzAgMDFkNTRiODhiZjU4NmUzYjhkMGI0YTYzNDllMjJkNjc0NjE1MGI5YiByZWxlYXNlMjUtbWFpbnQKKzUzODM3IDZmYTBkNjgyZTFlNTUwYWEwMWIzZDMzYzFiZDcyMTZkMjUxOTY5MWYgbGVnYWN5LXRydW5rCis1MzgzOCA4MTI4NjE5ZTk4NGRlOThjZDY3MTQwNTRhOGQyYTY0NzZkOTk1N2U2IGxlZ2FjeS10cnVuaworNTM4NDEgNDM3OTczODQxMTVlNTk4ODgxZTYxMTZhMDNkYjA3NzQzNGQ3OWMxZiBwM3lrCis1Mzg0MyA1NWRlYjFkYTRjYjhkZTE2MzUzMTJlNGZkZDFmYzk1MTFlZDc3ODM4IHAzeWsKKzUzODQ0IGU2OGI0OGMzOWQ4YWNiNTNmM2YzMTVmODc5ZjE4YmEzZTM5ODMxYzIgcDN5aworNTM4NDUgNjA4ODNlNjE0Mjk4ZjMxYTZjZTY5ZGY0NDRmODhlYzY3NjI0YTQ1MSBwM3lrCis1Mzg1MiAzZmJjZDZlMmJjYjc3ZGRkOWNkMDgyNDgyNGFjM2FkZDk5M2IzMWE4IHAzeWsKKzUzODUzIDM0MjdhOTczNDVmY2ZlNzQ4Y2Q0Yzg5MWE2Mzk0YmJiZThkZjEyYjIgcDN5aworNTM4NTQgYzE2NGIwYjc1OTcxNjBlZjUyMjQ4ODIyMTNjYmY0NDY5N2U3NTc1ZCBwM3lrCis1Mzg1NSAxMjQ4OWE1ZGZiNGFiMDJlZjYzNzNmYjNkYWU4YTEwZGI1MTVlY2VjIHAzeWsKKzUzODU2IDkwOTc2NWViMzgxYmRmNWI3ODRiY2E4OWNjNTc2OWE0MDY3OTVmOTAgcDN5aworNTM4NTcgMjk5ODcyNDQ5MDVkZmZkNDRiYTNlNWEwN2YzMTJmYzg5NWFjZjhkNyBwM3lrCis1Mzg1OCBjNTBlMjYzMzAxZGFiYjUxZjBhNzZjZmUxNGQ2OTQ3ZDhiMjVkNTE3IHAzeWsKKzUzODU5IDIwZTA4YTg3OTE1YTU1YWE4NTJiZjYyNjM1NjE2NTBlMDM3ZDhmNDggcDN5aworNTM4NjEgZjNhNTlhY2NhNTFmZmU4NzI0MDg3YzY4ZDRkMTUwMDgzMDM4NmFmMiBsZWdhY3ktdHJ1bmsKKzUzODY0IGM5M2Y5MmE3ZDkyMDJlMmE1MjBiODE0NGYwMTI5ZTM1MzI1MjhmMmIgbGVnYWN5LXRydW5rCis1Mzg2NiAzMmM0ODk3YjVkNDZjMDBlZWVjZWYxYmFlYzdkYzIxZDBkMWJiNWMxIHAzeWsKKzUzODY3IDNiYWM0OTI1OGE0YTU4MGY4ZDk5NTA1OTRmNThjZjdmMTk1ZWVlODkgcDN5ay1ub3NsaWNlCis1Mzg3MiAwZWEyNGY0ZjI0NjdhZmM0OTNkMTM0ZjU1OGFhNDcwY2JlODA0N2U4IHAzeWsKKzUzODczIGJkMTQxOWU5NDc3M2YwOGEwYmVkNjExNDI0MGZhM2UyMzliMTljNDcgcDN5aworNTM4NzQgYjA1NzkwZDA2NmI0NzQ0ZTUyZDNjNzJkOTI5YmRmMTg3Y2MxNjBmNCBwM3lrCis1Mzg3NSA1ODNmZTc1M2U3MjEyOTc5MTAxYjRlZTMyZTg1ZTBkM2QxNTMxMTAxIHAzeWsKKzUzODkyIGI1OGE0Mzc0YWMyMWU0NWIxYTA2MmYwZTdmZmMwMGQwMzNkODViOTkgcDN5aworNTM4OTcgNDJlNzljNTkyMTJkMjJkMjUyYTA0Zjg1NWI3Zjc5YjMyYjE0MDM2OSBwM3lrCis1Mzg5OCA5MzA0N2VlNDg2ZGE0YTA5ZjRkZGEyZDNjNmEzZDNkNTIxNTJhNDVhIHAzeWsKKzUzODk5IDJlNGRhYzA1OWNjNTRiM2E0MGUyMzdjZGNhNTk4ZTM4N2E1NzM0MzMgbGVnYWN5LXRydW5rCis1MzkwMCA2NWNkMWYyODBlNjNjMGI2NmUwZTY4N2EwMDU3NjhmOWFhZjhlYmJkIGxlZ2FjeS10cnVuaworNTM5MDEgODgyYjljMTQ4OTVjMGNjZTVlOGUzODAxYzlmM2M5ZmVhYTUwMzRjMSBsZWdhY3ktdHJ1bmsKKzUzOTAyIDE5MWM0OGNhOGJmOWMxMjY4MTk1NDI4Yjg2NzhlYjg2MmYzNTNjOTEgbGVnYWN5LXRydW5rCis1MzkwNiBlODU0MjcxNDk1ZGUxMDQ0Y2FmNmRhYWEwOTU5ZjI1NzMxM2Q3YWI3IHAzeWsKKzUzOTA3IDgzMDg4YWQ4M2E2YjBmMmRhODMyYWNiYWQ1ZDYxZmEyYTg3NDQzMDkgcmVsZWFzZTI1LW1haW50Cis1MzkxMCAwYzQxMGM3ODUzMWNmMzAyMzNhYTgxNzU5NzRjZmUxNmVmZDU5MzM3IGxlZ2FjeS10cnVuaworNTM5MTEgZDAxYmQzN2JmNWNlNTI2MTgwZDBhYTMxY2EzOTJmNzM2OTc4YjQ3ZCBsZWdhY3ktdHJ1bmsKKzUzOTEyIGYyZjBiNDFmMjcwZGFlNGM2OThmMmNhZmE4ZTQ1MzBmMWYzOTg5OWUgcDN5aworNTM5MTMgZWFhZWU3ODVlYjg2ZDc4ZjI0MmNmNDNjZTE4MDRmYTZkNTY4N2IwNyBwM3lrCis1MzkxNCA5N2M3N2IxZTM0YmYyNDMxMjI1NDNlMmU0MWFmODVjMGNlNzIwN2E2IHAzeWsKKzUzOTE1IGE4YzNhYWFiMDBlYTIzMjRhNmYwMTgwNjc4NmQ3MWU3OGUwMjYxNmIgcDN5aworNTM5MTYgMTlhZmIwMzAyYTA2ZWIxZTZhYmM3NTVmMjRmNTNkZTIyYTdjNzRkZSB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTE5IGQ4NDJlMzVmNWEzMTBlNTQ2ZWU1NmEwNWJkMTA1NjFlNWRiY2I3MGQgbGVnYWN5LXRydW5rCis1MzkyMCAwNzBiOWEwYjRjMDQwNDA3ZjM3YmUyOWU0YzM5OTNmYTViMzZhYWE5IHJlbGVhc2UyNS1tYWludAorNTM5MjEgMTNmMzkzMWI5ZmM0NjkyOTQyZTNlY2U2MmRkMGZiOWI2OTA2NzA5NyByZWxlYXNlMjQtbWFpbnQKKzUzOTIyIGY1NzkwZjk2YWNmM2MzOWRkY2M3ZDFmYzE3YWVlYTJjZTc4OTYxZjggcDN5aworNTM5MjYgNWJkM2EyMmJhNDk2YjFjNDA5MmMyZDQyYTQwNTBkZGY0YjE0YjU0NyBwM3lrCis1MzkyOCAxYjk3MmI3ZTM1MmFkZjMxMDUyOTE1MTI3MGVkMTlhOTg5MWM5NWQ1IHAzeWsKKzUzOTI5IDQwYjE3YWZjNGFhN2JmNzFiNTA0Yzk0ODc2NmZmZTQwYjgyODk3NjggcDN5aworNTM5MzAgMGQyZGMzNjExZTNiMzgyNmZmZDkzMTU2NTQwOWUxYzE4YmRlYjAwYiBwM3lrCis1MzkzMSA2MTBjN2FjYzk5ODI4ZTYyZTFmZDM3ZmIwZjY3Yjg2ZTQ1MTJhOTNmIHAzeWsKKzUzOTMyIGJlNDFkYTY2Y2UzN2Y2NDFmNWI2NTZkZmE5ZTlmNTJiNjliNWY1YzEgcDN5aworNTM5MzMgMjVhODQ5MDBlMjA1NWMxNGM3NjYwZTRjZTYzNWI1NjQ4NzQ1ZmYxMSBwM3lrCis1MzkzNCAwMzg4M2FjYjY1MGI4MDhjNjlkZjQ2MTkyN2ZkYWNkMzUwZDE3ZGNlIHAzeWsKKzUzOTM1IDYyMTQ0M2ZjMDFiYmExNTU5ZDA4YmNiYmI0ZmM1NjJjMjYzYmI3NTkgbGVnYWN5LXRydW5rCis1MzkzNiA5ZDFiMGMyOTVlYmJjMGZjMTc4YzYyYzQxZTlmNjFiMTMwZDM1YzQ4IHJlbGVhc2UyNS1tYWludAorNTM5MzcgOTNmNTgyODAzNzMzMDRkZTIxOWM4YTA1YzY2ZmUzOTEwYjRiOTg4NiBwM3lrCis1MzkzOCA3YmM3Zjc0MGY2OWZkYzlmOTJmZDU0ODgyMDdhMGYzYjMwM2ZhMTQ5IHAzeWsKKzUzOTM5IGMzNDUxYTc3YmZkMTY0ZGY1ZGZjZDgzNzBkNTA5ODdkODk5M2ZkMDIgcDN5aworNTM5NDIgOTBjODA3ZWU4NzY3YjFiYjY1MDgxYjZiYWNiYmQyNjQ5MTdkNTZhYiBwM3lrCis1Mzk0MyBlY2U4YTM5ZmEyODJlZGM2MmUxNGZiNzY5Y2IxMzgzYjZmZDc0OGZkIGxlZ2FjeS10cnVuaworNTM5NDUgNTVkN2U4ZmE1ZWE4ZDRmYThlNzE3MDczMGRmNTU2YWJkN2QxZDdhMiBwM3lrCis1Mzk0NiBhMjYyOWJlMWIxZDAxNTk5MjcxOTJhM2NhZGU1MTVkZGU1MjE4NjlhIHAzeWsKKzUzOTQ3IDg5YmE5M2M3MDFjODg0NzM5NmQ4MmY5NjVjNjc1Y2FkNWFiNWVkOTkgbGVnYWN5LXRydW5rCis1Mzk0OSA0NWFmZmFlNDY1ZTQxMTkyOTE4MTQyZmVmZjc0NmYyMDRmNTFmZmUzIGxlZ2FjeS10cnVuaworNTM5NTEgMDM3NmYxM2ExYWY5MTMwNzA0MmRjNGE1YjJmNTg3YTNlZDliYjJkMyBsZWdhY3ktdHJ1bmsKKzUzOTUyIDZhYTFiZTVkZDAwOThiMzU3MWYzNWJhNzIzOTk3MjgyNGUyN2QxZGYgcDN5aworNTM5NTMgMmMwM2Q3MDY4MzVlNDYwYmJkYzg4ODExYzU0MGY5MTA3ODM0YjAwMiB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTU0IDA0N2VlMjNjMGY4NzhlOTMzZWMyODQ4MjFhYmZmZDk3M2E0ZDk0MTMgbGVnYWN5LXRydW5rCis1Mzk1NSBjOGMwNjczMDI2NTk5YmNkNjQwZWZhYTk1MzZkNGQyOTM2ZDY5OWUwIGxlZ2FjeS10cnVuaworNTM5NTYgMTg1M2NmMDZlMzZiYTMxMmFiZDEyM2U4YzJkMTY5ODk4YjQ3N2QyOCBwM3lrCis1Mzk1NyAyY2ExNGQ2YTM2OWI3MjViMTNkNDliMGFlMzc3YjMzYjI1MzQyNmRiIHAzeWsKKzUzOTU4IDg2NDcxOTBkYjk2Y2QxYWE4YjQzYjI2NGYzMWI1OGJkOGJjMDQyZTMgdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk1OSBmYzIzZmM4NjM5YmFmMDBkZTUxYjQ0NjUxN2ZlZTk2YTI0MWQ3MTAyIHR3b3V0ZXJzLWRpY3R2aWV3cy1iYWNrcG9ydAorNTM5NjAgNGI5ZDBkYWM3OWNjYzA5YmMxZjdiNDYyMTJjNzAyZjE0MDA0MzVjMyBwM3lrCis1Mzk2MSBjNzllNjIzNGZiMTllZjZhMzRjZWE1YTI1OWNkMGRkNmJmNmIzNGEwIHAzeWsKKzUzOTYyIGJiNzNkM2EwNDU3ZTk3N2Q4NDg5NjBiZGVlYzJlNzk1OGNlZTY2MjcgcDN5aworNTM5NjMgN2Y3MDc0ZDRmODJjZjcwY2ExZDcwOThkM2NkMjM4Njc5NGY5NmY1NCBwM3lrCis1Mzk2NCBkOTc2YzlhNjMxMTE0YThmYWIxYjBmNTExMzNiYjRjYTEyMDgyZDQ5IHAzeWsKKzUzOTY1IGIwODI2ZThlNDVjNzhlZjU0ODhiZjhhNDhiOWNlYzg3NzM2MTliZTggcDN5aworNTM5NjYgMzA5M2VhOWI0MDI0OTcyODE5ZGMwNzc0MmVjMDAzZGJjMDY4YWJlNSBwM3lrCis1Mzk2NyBlNzU5ZmQ4ZDk1YWU3YmNjYzQ2MjU5ZTFlMDRkMWE1YWZkODQzNjRiIHAzeWsKKzUzOTY4IDFlNGUyOTI0ODZiNjg4ODk4NjJhODA0N2M4MDEwOTY0MDEwYmRiMzggdHdvdXRlcnMtZGljdHZpZXdzLWJhY2twb3J0Cis1Mzk2OSBmM2YwYzY5N2FhNWIxNjMyZWQyZTBjNGFmM2RkOTBkZTIzZTMzOGM5IGxlZ2FjeS10cnVuaworNTM5NzAgZWUzNjAyYzdhZTA0MTQ3NGE4Yzc1ZGFkMDRkY2JkM2RmZGEwNTA5ZSBsZWdhY3ktdHJ1bmsKKzUzOTcxIDQzMDgxMWJkYmZlZjY2YmM5YTg1ZWM5NGNjYjdhYjY5OTg5YWFjZGUgcmVsZWFzZTI1LW1haW50Cis1Mzk3MiA5NGM0ZTM2YzMxMjQyYjg5ZTAyNjAxNTBiMTJhZWIyYzFmZDEyMTI1IHAzeWsKKzUzOTczIGRhNzNiNWEwZmQ5MGFiYTMyYzRjYjFkMDkzNGRkMDRhM2Q3MjhkODkgcDN5aworNTM5NzQgMmNlMjI5YTdiYTNmNjllYzU0N2U3OWRjNDBhNWIyZDU3ZjU4ZjQwNiByZWxlYXNlMjUtbWFpbnQKKzUzOTc1IGM4M2FjZmIxYTYzMmY3OTQ2ZjM0NmU3MjJmNzBkZTc5MWYzYzIzNDYgbGVnYWN5LXRydW5rCis1Mzk3NiBmZWRiMDNlYWM2YWQ2ZDExMDQ1MDQ4ZDI4OTZiMWU3ZWIwYWY3NDJlIGxlZ2FjeS10cnVuaworNTM5NzcgYWExOTVhMWFhOTU1MjhiODg1MzIyZGZmYWJiNGJlMzA0MThhMzcxMSB0d291dGVycy1kaWN0dmlld3MtYmFja3BvcnQKKzUzOTc4IGU1ZTk4MzdkYTcwYjc4NjAwYTgwYTUyZTc3MjZmYzIzOTI0ZTcxZmYgcDN5aworNTM5NzkgMGVhNTI1NThiZGZlYzI5YWY5Y2Q5Yzk4ZTBjMDVkYjJiZDI1YTAyMiBwM3lrCis1Mzk4MSA1NDFhOGIxYjVkYTc1ZDlhZjU0OTQzNDcwNGIxYWI1NjNiNzIwNzcyIGxlZ2FjeS10cnVuaworNTM5ODIgZTY2ZGRiNmUzNGU4NDQ2Nzc2NWE3NmRlN2NjZTNjZWIzMzQ5ZDY0YyBwM3lrCis1Mzk4MyA0MTYyOTJjODI0OWNlOGM5MDgwYzU0MTExZmE3ODg0NzA1ZmFlYzg1IHAzeWsKKzUzOTg0IGMyNGU5NWQxMTc1MjAxYjU3NDcwNDE1YWJjM2IwZTJhMGNiNDdhYWQgcDN5aworNTM5ODUgZDU1NDZmMDlmMjBlNzYzOGI3NTgyNDhlNWQ1NGYxYjg3NmUyYWFkMiBwM3lrCis1Mzk4NiAzMGU1Y2IzYTU1YWMzMTQ3ZDllOTJlYTM4OGY0Zjc5NDU2MTZlNzY3IHAzeWsKKzUzOTg3IDE0MGYzNTI0MDI3ZjBlMGI1YTcwY2UyZmYxNTk0ZjMxYmEyNDZjOGQgcDN5aworNTM5ODkgYTllNmM3M2UwZmE1YjIxMzJjMTUzMWMzMWFhZWY0Y2ZmZTRkNTI2YiBwM3lrCis1Mzk5MCAyZDlkMTA3MDJlYzQ0ZTJmZTRjZjgxNDljNmM2ZjI1YTQzNGVkYzIyIHAzeWsKKzUzOTkxIDZjMGQwYmU4MmI0N2JhZjI5YTU4MTE4NDFjNThjODgyNzI5YWJkZWYgcDN5aworNTM5OTIgMTE3NzdjODg3ZjdjZTAwZTRiZDdjZWFlYzYxMzY5ZmY4Yjk3ZTQ1NSBwM3lrCis1Mzk5MyBhMmM5ZWI5YWI2MDk2NzRiNDUyZjNkYmI0OTk5MWIyNjc1YzM2MTZkIGxlZ2FjeS10cnVuaworNTM5OTQgMGI0NzQ0NmNjNDA4NGEwMzgwZGI5Njc3MThlNDdmNzFkZTQzNThlMyBsZWdhY3ktdHJ1bmsKKzUzOTk1IDQ2Zjc3MWUyNjdiYzgxNTgyOGI2ZWQwNmUwMjNjZDVjM2Q0ZGNhYTIgcDN5aworNTM5OTYgM2NhYmJmYTQzOTg0MDkzYjEzZDdjYzRiM2RmOTQ4OThjNTExZTc1YSBsZWdhY3ktdHJ1bmsKKzUzOTk3IGQ2MjgwNWE5OTNjNTA4ODE5ODJmZjUxZWQwMTZlNDFiNjlhYzU2ZGMgbGVnYWN5LXRydW5rCis1Mzk5OCA1ZWFkMzIxMzBmNjQ2ZThiMmU2YWZjZTBkOTdiMzIzNWQ3NjEwMWFlIGxlZ2FjeS10cnVuaworNTM5OTkgNGE0ZjZmMDI2ZjFjNThmNDk5YWFjYTgyNjZlY2YxMTcyYjJjZTE3NSBwM3lrCis1NDAwMCA2MWZlZTE4NTNjYTg4ZjM4MjBiZjdhM2M2M2ZiZjQ1YTcyNTYxZDJiIHAzeWsKKzU0MDAxIDgwZTg2MWU3ZmFiZTg4ODU4NmVjZGEyN2Y2OGM0OTljYzRmNmNlMzggcDN5aworNTQwMDIgYzNiMjhiYTkxOGY4M2ViZmYyZTRjZTgxMTY1NGRhN2Q0YjNmMjMxNyBwM3lrCis1NDAwMyAxZjc5MGRhNzk4NDA5ZDkxY2U4OWNiZDBiMGQ3ZWZlZjQ3NjlhOGI0IHAzeWsKKzU0MDA0IDQzMWIzMjM4NTkzZWFjYmFjNjVhNTlmMTRjY2I0ZDk5ZWI4MTU3NmYgcDN5aworNTQwMDggNzYyOTY0Zjk5ODcxMDQ3YmYwMjM5MTk0Y2E3MjU0ZDFkMzJkNDZhNSBwM3lrCis1NDAwOSBjMDM0NDcwZTNjMGFlYjkxNjQ3NDEzNzJhNTcwZDllYjE0YzA3NzQyIHAzeWsKKzU0MDEwIDhiZWI3NTQwMmU3NGJmNTU0N2Q0ZmY0OTdiN2I4ZGEwMGNmOGQ4MzkgcDN5aworNTQwMTEgOTMwMzFlNzE2NWFiMDEyOWZiYmQ4YTEwOWY2YmVhYjAzNGU4ZjRkNSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxMiBiYTkyZTlhZGUzNmYxMTc4YWQ0NTY0NzU2ODMzODc1NWI2YjMxM2MzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDEzIDZkOTFlNzRmY2Y1NWU1MjA4NmQ4YWUzZmY0YjJjMTgyNTEwOTJiYjEgcDN5a19ub19hcmdzX29uX2V4YworNTQwMTUgMzRhN2MyOWU2NWQxNjJhZjFhNzA4NTAxMDhlYjc0Y2MwNjVkYjk5OCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxNiBlMTAzYjkzN2Q3NDc1MTBlNGVlMzEyMGVhZmEzY2Q0ZGU4OTYyMzEzIGxlZ2FjeS10cnVuaworNTQwMTcgYTFhZWU4MTBiNzM5Njg2MDYwZGZmMGRlZTI3MWIyZjkzNGEwYzRmMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAxOCA5NTMzZWIwZTg3Y2ZmY2JmNTJmMmNjNmYxMGMyYmZlYmQzNGE4NzRkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDE5IGYyNTI0NjgwNTg1MDdlYzdkOTQ0ZDk4NDM2ODE4MzA1YmJlZDA4OTYgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjAgYmQzNTkwYjhjNzhlZTU5MWUwNDFlYzVlYjM2M2NkY2UyNzIzMDk3MCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyMiA5ZGQ4NmVhZDUxYzM3NzZjZDZhNGFhMWJjNjRiMTdiYWYwMWJkNjc5IGxlZ2FjeS10cnVuaworNTQwMjMgMTY1NDYxYWQzOGRiOGUwNWUxODE1MmJhZmI5MDVlOTBlMDdjMTViMCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyNCA4M2I4YzcwZWZkMWU1ZjFiZWE1ODM0MjcyNmFjNWM4ZGI3MjRmNGJkIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDI1IDllYjYwYTA3Mjg1YTQ3ZWQzNDcyNmI4N2EzYmI2ZTFlN2YzNzQxMDIgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjYgYThjNzliMWU2OTZhZTdlZDMyYjE4NTQ1YjNlMzI1MDA3YjFiZTM0ZiBsZWdhY3ktdHJ1bmsKKzU0MDI3IDE2NWJiZWQzMzc5ZDZkM2Y0NWJlMWVkZjJhZTEyZjU4NDcyODYxMGYgcDN5a19ub19hcmdzX29uX2V4YworNTQwMjggMmM2Y2Q5OGRiMGI4ZjNlM2U3N2MzNmMwOWQ3ZjIyNjliNjM3ZDc4YSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAyOSBiMzVjZmQ4YjQ5MTA2MTRkMmJkZDcwMDEzZWUwODJiYzllNTE1MmZiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDMwIGFjMGViYWU0NTg3MjIyZGNhMjFkZDE0NzdlYWY0Yzk0NmE2NTc5M2IgcDN5a19ub19hcmdzX29uX2V4YworNTQwMzEgNGM1NmZjZWZiMjgzYjdmNmJhNDViNGU1YWZlMzkzY2IzYjAzOWFiYiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzMyA0MDg3YzBlYzczM2JiYTU0ZTgwMTM3MjdlZDY0ZjE3M2I5YTYxNzVmIGxlZ2FjeS10cnVuaworNTQwMzQgMDFkZGVjYjc3ODE1NDI2MzgzNGU5YjAwYjFjZGEyYWQ2NDA5MGU1ZSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzNSBlNDc2YTVhNzhiMjkzN2U3NjcyMTIyZjAxYWI2NjQ1NWRiMGE5M2NmIHAzeWsKKzU0MDM2IDU2ZDUxZjU5NDg2NTNkYTJhMWU5OTc5ZWZjNGIxMWUyZjZkYWQxZjggcDN5a19ub19hcmdzX29uX2V4YworNTQwMzcgN2Q3ZjMyMmYyY2I2Nzg3MjkwYmY2NzM1ODNmNzg5MzE1YzcyZjQ1OSBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDAzOCBlMjIwOGQ0ZjVhN2ZjOWI4NmIzNTU2ZDUzYmNjODcwMjI2OTRmMWIwIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDM5IDc0NzJmN2I3ZDkwMzQ0NjE2MmIxYTZiMWVkM2QyMTE2ZWM4NDVmY2UgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDAgMWRjZTI1MDI1Njc5MjFiMjUyYzkzMDA0ZjNjZDI4NWVlNWNlMWU4YiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0MSBiZGI1MjcyOGIwMmVmNGFiNzJkODk3MGY0ODM0NWM1ZmM3M2I5ZGZjIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQyIDQ1NTU5NjFjNWEyZjk2YWE5M2U4MmI5N2E0NDliMzYyZGNmNTk0OGQgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDMgZTE2MjY4YzI3M2JiMjY2NGM2MDk5ZWVjNTAyYmZiNWE0YTU2MDllYiBwM3lrCis1NDA0NCA0YWUwNDkwZTFhMGMwZjM0OWY2NzgxYzA2NDVlMjI5ZDQ2YjExYzc1IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ1IGRlMmM5ZjlhZWExZWU3NmQ1OWQzZTBlNTJiN2VmM2JjZjNhYWE3OTEgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDYgNjljYTY1N2E2NGU3ZWRiZjA1ZWIyYzM0OTBjZGZhNTVkMjRhMTg3NyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA0NyA0YzFlMmMzM2ZhY2QwOGNlZWI2NzBlYzhjNDM1Yzc4Yjc3N2NkMWUzIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDQ4IDBjMTRiNjZhY2E3MDJiNGQxZjlmZWFkZmMzYTYyMjY3MDVjYjY0ZjUgcDN5a19ub19hcmdzX29uX2V4YworNTQwNDkgZWU0NjIxN2M4N2FmN2E4NzM4MTlhYTNkY2M3MzMxMjRmOTY1OTg1MyBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MCAyN2EyMTg2ZjQ1Y2I0YjIzNzE2M2U2ZTc1YjI4ZDk0YWU2MDFkMzFlIHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDUxIDkxODVjNzBhMTU4NWU5YTZmYzBjMmRmZGVmNzY1ODE5NjZlYWQ5MDMgcDN5a19ub19hcmdzX29uX2V4YworNTQwNTIgZDliMTUzNGVjNzlmZTc1MDQzYzAwODE5NjUxYTQ5NTI3MTkyYzhjOCBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA1MyBiNDZjNmQyNzYyNWUzZTZjMDM5NjljMzZiNjQ5MjU1ZDAyNDdmMjg2IGxlZ2FjeS10cnVuaworNTQwNTQgNTJlNDUzMDc3M2M5NzAxYTA2YzExZTExNTc3ZWRlOWJiMWRmMjYwZCBsZWdhY3ktdHJ1bmsKKzU0MDYwIGJlNDRiZjJkYjM1MGU0YWEyYzQyNTY5MTFmMzAyMTYzNTVlZWUxMGUgcmVsZWFzZTI1LW1haW50Cis1NDA2MSA4ODg4NGU3YmFjNmRjMmEyOGZhODhiMDg2MTRhYzdlNjA2MjMyNDIzIGxlZ2FjeS10cnVuaworNTQwNjIgNTJlOTVmYjA4OTAxN2RhYjg5Zjc2MGM1YzUxYTFhZGM5Y2U1NDU4NiBwM3lrX25vX2FyZ3Nfb25fZXhjCis1NDA2NSAzMmE0ZTVlZTJkOThjMTQ1NzliZDUxZjUyZTg2YWFhMDM1Yzk4MjM2IHAzeWtfbm9fYXJnc19vbl9leGMKKzU0MDgwIDFjNTg2MTFjNTFkMGNhNmZhNTk4MmI1YTEyODhjYWNmYWQwNzMwNjcgbGVnYWN5LXRydW5rCis1NDA4NSBiZTY4ZGE1NjFkY2Q2Nzg3MGY5NjViMTY0YzliMjdiNjdjMjVmZTFhIHJlbGVhc2UyNS1tYWludAorNTQwODYgNGUzNDgxOTYxZmJiYzJlY2UxNjUwMjVjYmNjMDg5YjIxNjExMGVkYyBsZWdhY3ktdHJ1bmsKKzU0MDg4IDY4YTQ4N2QyMWMwNjlhNzVjMzNlYzg2YzVmYzZmMzkwMmQ1Nzc3YWIgbGVnYWN5LXRydW5rCis1NDA4OSAzMjRhNzFhMTAzZWMyZGZlY2NkM2E1MDk5ZTgwOWVjMjJkZGU2ZDk0IHJlbGVhc2UyNS1tYWludAorNTQxMTQgMmYyYjg5MzVhODFlMjYyMDI2YmExZjUyYmYxZGU4NGQ4ZWE2MDZkZCBsZWdhY3ktdHJ1bmsKKzU0MTE1IDZkZWY4MmI4Y2YyMGFhMjIzYmE3YTVlYWE5OWM0Yzg5OWQ0ZWMxZDMgcmVsZWFzZTI1LW1haW50Cis1NDEyNCBmZTlhOWQzOWEzNTE3ZmVmNTg5MjQzZTc5ZmFlNTdlOTcwMTY4MjU0IGxlZ2FjeS10cnVuaworNTQxMjUgM2IxZWZjZTM1OGEzNjAxMjczMGVkYzE2YjhkZmJmZDQ4NzAxZDEwZCBsZWdhY3ktdHJ1bmsKKzU0MTM2IDM3MjA3MGJhNmZkMzFmNGUzODlhOTBjY2IzY2IwNjJmZDgxN2M3ZjggbGVnYWN5LXRydW5rCis1NDEzOCBlMWIwMDBiZWQ0NjJmMzhiZGQwZjA3Y2VhMTc1ZjUzNzI2Y2RkYWQxIGxlZ2FjeS10cnVuaworNTQxMzkgNmQzNDU0YzM3MWRkNDNhYzlmMzFiNGEzMzZmMTQ0MmQ0NmRiZjk0OCBsZWdhY3ktdHJ1bmsKKzU0MTQwIDg5MWMyOGQ1MzU2OTY5YjA0OTI1YWFhNmY0NWJlNjFhODU2MmVjNmIgcmVsZWFzZTI1LW1haW50Cis1NDE0OSAwODFiNGU4YjZmNWI4MjE2NWMzMDVlMjdkN2RiMjM4Y2MxNjgxYzI4IGxlZ2FjeS10cnVuaworNTQxNTAgNjA1ODU1MzBmMzBiOGJjZGEwNTVhNzBhMTZlMDNkNjAxYzY1MTY3ZiBsZWdhY3ktdHJ1bmsKKzU0MTUxIGU0MjI4MDIyMDJiZTBhMjA1ZTA1MGIzNDI5ODQxMDkzMmJiMzAyZWMgcmVsZWFzZTI1LW1haW50Cis1NDE1MiBmMWU4OGMzNTAyZDlmMWFhZjgwYzQ1Y2ZlOTY4OGZhNmI4YWJhNjdhIGxlZ2FjeS10cnVuaworNTQxNTQgNDgyNTQ3MzkxNTlmZmFlYmI2ODJkZmJjYWIxOGQzMDRjMTVlZTE3ZCBsZWdhY3ktdHJ1bmsKKzU0MTU1IDMzYjQzZGViYjk3ZWU3Njc3YjY2MzZlZDVmMTBkNmFkMDRlNzUwNTYgcmVsZWFzZTI1LW1haW50Cis1NDE1NiA1YzE5NmFhNmVjZjQ4ZGI5Y2Q5ZTM1ZGM4ZmVmMmIwMzhiNGU4MTM0IGxlZ2FjeS10cnVuaworNTQxNTcgYjZkY2I3NzgzMzg1N2Q5OWE5NDZmNWNjM2ZkNzY1MGRkNDM2OTcxOSByZWxlYXNlMjUtbWFpbnQKKzU0MTU4IDEwODBkZTQ5YzgxZThkZjU2NGM4YTA0NzhiZjYwNDkxZDc1NDEyMzAgcmVsZWFzZTI1LW1haW50Cis1NDE1OSA1YzA4ZTY0NjBkYzU1NGY4ODIxOWViMTRkNWNjNThkOWRhMjliMjNmIGxlZ2FjeS10cnVuaworNTQxNjAgYjBmMjZhNzgxM2M5MDk2ZjQ5ZDY0ZGViNTMzZDJkODlkMzc1OTYxZiBsZWdhY3ktdHJ1bmsKKzU0MTYxIGY4M2U1ODIyZTY3MjZiZTk4OTA2Nzk0MWUwN2I4MGY5ZDdiMmQzOGQgcmVsZWFzZTI1LW1haW50Cis1NDE2MiAwOWQwOGZjYjhmN2I5ZDIyMjg0OWZjNzcwYzllZDc2NjZkNGY2MjJmIGxlZ2FjeS10cnVuaworNTQxNjMgMmVlMzY2YTJkMmI4OTFmN2JmYjc5ZjZmMzY3M2NhMGFhYjZjZTVhOSByZWxlYXNlMjUtbWFpbnQKKzU0MTY0IDRlODM1ZGYyYjRiYTg4Y2I5YWQxODVjODljNWFmOWE5NWI0NTExOWMgbGVnYWN5LXRydW5rCis1NDE2NSA5NjNjMGU0NDI4MzIxMTRiYWZlYjdiMjFiNjIyMjAyNjRkNjJlMDJjIGxlZ2FjeS10cnVuaworNTQxNjYgMDY5OTJlNmIyMDVhNDQ5NjE0ZTZkOGY0YjI1Y2U4MzRhODQwNGNjMCBsZWdhY3ktdHJ1bmsKKzU0MTY3IDNjZmRiODBiYzY4ZTg3NGNlNmFjMzgyYTQ1OGE2YmI1NzRlMjEyYjEgbGVnYWN5LXRydW5rCis1NDE2OCAxZWExOWY3NDUwNGNiYzYwYTEyNDllZWM0YzYzNjM2MjZkY2QzNGM4IHJlbGVhc2UyNS1tYWludAorNTQxNjkgZDQ1NzcyMTU1MzlkZGQzNzQxOTBlOWI1NjExNTBmYTc1NDY2MTAwMyBsZWdhY3ktdHJ1bmsKKzU0MTcwIGE2YTA5NWJmNjQ1ODVkMDE0MmY0ODUyNjJiNzM2M2EzMDcxNjdmNTQgbGVnYWN5LXRydW5rCis1NDE3MSA2N2NjMGU5NWU4YTU3OGZiMGE0NmVjMmI2M2E2NWZmOTVjOWZhZjU5IGxlZ2FjeS10cnVuaworNTQxNzIgNDFlZDk0YmU2ZDVjYWEwZmIxOWI0ZmNiZTVlMGMyZDUzMWExNDhkMSByZWxlYXNlMjUtbWFpbnQKKzU0MTczIDZhNTk5YWVlN2NhNDBhMTI2MTAyODBjMmViMjUzZjA0M2QxMWEzMmQgbGVnYWN5LXRydW5rCis1NDE3NCA2MTRiY2QzN2M2ZjNhNGVmZDJlNTQ1MTQ0OTBiMzhjMWVmMDkyNGMyIHJlbGVhc2UyNS1tYWludAorNTQxNzUgNmNkMzY2ZTZiZWVjYzU4ZmJlMzgyZmQzODE3MjljNDM2N2Y2N2Y1NCBsZWdhY3ktdHJ1bmsKKzU0MTc2IGU2NmNmYzcyNWU4ZGIwZTEwZTFiOTJkMTY5ZWYyYWZiMDI0NDE4YjMgcmVsZWFzZTI1LW1haW50Cis1NDE3NyA2ZDhkY2FkMTJmZDliZmI4NGMwZTJlNWVkOTU2ZmJlYTIzNTQ0YzNjIGxlZ2FjeS10cnVuaworNTQxNzggODI4MGI3YzQwNTU3NjAyMjhkOTNiMjcyYTI3Nzg3Y2RiMDBhOTM4ZSByZWxlYXNlMjUtbWFpbnQKKzU0MTc5IGVmYTBhNzYxOTE4YzI4YzcyZjU2MDIwN2E4YTlhMmY2NjMyZGM3Y2EgcDN5aworNTQxODAgM2FjMjRjMDExMGU5NmY4YTUxZDI0MjUyMTI3YmUyOWNhNTA0ZDU1NCBsZWdhY3ktdHJ1bmsKKzU0MTgxIDFjMTRiMjNiOWMxYmNmNjk3MWViZDA0YThhNzBlODZlZTBiY2FkZDEgcmVsZWFzZTI1LW1haW50Cis1NDE4MiA3NTdlOTNhNDA5NmM1MjRiYTllMzg4ODUxYjVlNmUwMWE5ZmUwNjk3IGxlZ2FjeS10cnVuaworNTQxODMgMTZjMjE1ZTQzYmFkMGEzZjQxZTJkYTAxNjliNmQ3YmYyN2RiM2JhNCByZWxlYXNlMjUtbWFpbnQKKzU0MTg4IDcyOGM2MGU4NWVmYTU5NGZjZDNiMDE1NDRhMTkyNGJkNjg0NzI3MmQgbGVnYWN5LXRydW5rCis1NDE4OSBjOGVkNGFlYTZjNTgzMzBkOTZhNzY0OTVhMGVlNDBhZTBhNzIxODAwIGxlZ2FjeS10cnVuaworNTQxOTAgMjEyMzNjMmU1ZDA5Mzk5NDA3NGRjOGFiNzhmZjc0YTJmZTM1MjgwZiBwM3lrCis1NDE5MiBmNDc5YjljNzRiNzgxOTk3OTFkNjU3NzA2NTc2NTBiNTM3MzcwMjRhIGxlZ2FjeS10cnVuaworNTQxOTQgMTI5ZmZmZjJjZTZkYzQ1ZjM1MjA2ZWYxM2ZlNWEyZTRkNDBmMGRkMCBwM3lrCis1NDE5NSAyNDJkZTE2YTZkNDQyYzBkNTY3NTkwMjVmNmMzNzA2MTI1ODhkYWVlIGxlZ2FjeS10cnVuaworNTQxOTYgMWEwYzkwNzkyOGI0MDEzNDNiNjcxNjU2MmFmYzQzZjc3YzYyYWMyOCByZWxlYXNlMjUtbWFpbnQKKzU0MTk3IDg1MGMzMmRiMjdlNjQ0MDY1NmYyOGZhMjM0MWRjOWUwZDA3Y2YzMzAgbGVnYWN5LXRydW5rCis1NDE5OCBlMTk2MmFiMTJmY2U5YWJhODk0NWZhNzNlNmY5NzNhYzRjM2Q5ZDlkIHJlbGVhc2UyNS1tYWludAorNTQxOTkgN2RhMjNiZjg5NDlmYzRhOGViODg5MTViZmJlMmExMGQ2NjRkYzBjMiBsZWdhY3ktdHJ1bmsKKzU0MjAwIDgxZTQ4NmIzMDA3ODg1YzA1NzE5NDUxZTMyNmFhMWRlMTNmZWQwYzkgcmVsZWFzZTI1LW1haW50Cis1NDIwMSBiMDkyYjJjODNhYjdlODU5NjdiMzNmNzZhMzVmNTA0MTM0NWRkYzU0IGxlZ2FjeS10cnVuaworNTQyMDIgNTEwMjMzNmNhMzQzNTQ0Y2Q2NWNmMjVlMzU3OTdmNGZkYWEyYzA1YyBsZWdhY3ktdHJ1bmsKKzU0MjAzIDQyM2IzNjQ4NDNjZGMxY2FlMDAyNWNmODg5ZjBjODI5MTRhYWU5YTcgcmVsZWFzZTI1LW1haW50Cis1NDIwNCA5OGJiYzkzYmQ1NWJhMGE2NDlmNGI3YzA2YjgxYTc3NzhiZDMxOTY1IGxlZ2FjeS10cnVuaworNTQyMDYgM2I1MzhhY2Y3Njk0ZTEzMThiY2FmNjQxOWFmNGExMTAyYzYxMzliYyBsZWdhY3ktdHJ1bmsKKzU0MjA3IDQ2Y2ZhYmI3ZDU0NDYzZTY5ZTJkYTNmYWI2Yzc1NTVhYjExODUxYzUgbGVnYWN5LXRydW5rCis1NDIwOCBlNDJjNjNkN2MyMzBhODgwZDdhNjc5MjdkY2Q0ODlmMzU0MTc0NTlhIHJlbGVhc2UyNS1tYWludAorNTQyMDkgYmFhYmVmNmMwMGQ2OGUyNzY3NTZhZDhjMjhkNTA0ZDZkZTRkOTc2MiBsZWdhY3ktdHJ1bmsKKzU0MjExIGJmZGJkM2VjMjdkODVhNWVmNDM0YjQ0NjZmZTRhZDEzODU0MDZhYzMgcmVsZWFzZTI1LW1haW50Cis1NDIxMyA0YTBlMjI4YzM2ZTU3ZjcyMjEzNDdlYmUzMzQ1Y2E0MzI1YzA2NzVlIHAzeWsKKzU0MjE0IDZlMWNmNGQyOGFmMzRlYjUyZDVjOGI0YjRjMDc1YzkwZGQ3OGE4ZTAgcDN5aworNTQyMTUgMTU3MjYwZWY2NzdjYWQ0Y2Q0ZWU2MTBjOTQ2NzhlYmI4ZmE0YTFmNiBwM3lrCis1NDIxNiA2M2FmMzdjMmQwYzBlZDI4OWJhODVlYmYyMGViNjhmZTNiOTAwYTA2IHAzeWsKKzU0MjE5IDkxOGVkYWJhYWE4NGU2MjViODM5OTA1ODYzOWUwY2RkNTk0MDFkNWIgbGVnYWN5LXRydW5rCis1NDIyMCBjMWE5N2IwODIxM2E5ZGI1MzRjZjQ5MTJlYjAyYjhkMzZmOGRkYzU1IGxlZ2FjeS10cnVuaworNTQyMjEgMzJhZjk1ODhhMTgyZWY0NDhjMDk4OTU0OGRmNzE1MmE2NTkzMGU0OCByZWxlYXNlMjUtbWFpbnQKKzU0MjIyIDhhYTdjYjUxZDM1ODRmOGY5M2IyZjljYjE0OGIzNmFkYWE1YjlkNWEgbGVnYWN5LXRydW5rCis1NDIyMyAyZjVkODRkY2I2NTU3ZGFkMzVmZDdhOWEyOWQ1MDdjZDEzN2Y4MWVjIHJlbGVhc2UyNS1tYWludAorNTQyMjQgZDk0OGEyYzBmY2ZkZGQ5NTEyMDhmMGMwNTY0MzgxMDk0YWNiOGM2NiByZWxlYXNlMjUtbWFpbnQKKzU0MjI1IDU1NjU5ZTY0Mjc3YmU2Y2Q0MDY0NDkwNmQwYThhZTRhYTkwMmQ5YmQgbGVnYWN5LXRydW5rCis1NDIyNiA5YjU2ZWFkMzUzMmNkNzhlOWM2NjJlMTlhZTE0OTc4ZTBkZWE0MDU4IHAzeWsKKzU0MjI3IDBiYjk2OWYxNTExOGEzODgwZWMxYmU3OWJjMzI4MGIwMDc0NjYwZGEgbGVnYWN5LXRydW5rCis1NDIyOCA4MzQwMGRmOTczNzlhZTJmNTU1NzM4ZWNlMGI5ZWM0MTc2NjNmZjFmIHJlbGVhc2UyNS1tYWludAorNTQyMjkgYTdjOGE0ZDFiOTQwN2QyOWIwNTgwYzg0OTAwNjg1NDVlZmQ5ZDIzYyByZWxlYXNlMjUtbWFpbnQKKzU0MjMwIGYyYmE4MTJmNzIwMDc2MGI2NWJmZjc1YjMxZGIwMDNkNzRiNWM4ZDEgbGVnYWN5LXRydW5rCis1NDIzMSAzYmUyMTc1YmJiMDAwNzRkMjQzYzg0YmY5YzlkY2Y1NmY2OWE5YjE3IHAzeWsKKzU0MjMyIGZmMGM0NmZiMTk1YTM1NmE5MmYyZDJkYzY0NDljMzIxZWI3MGUwYzggbGVnYWN5LXRydW5rCis1NDIzMyBiZTFlMmY3NDU2NjlkYzA5NWM3NTU0YzUzNmViYjdmYzExNGUzYTQ2IGxlZ2FjeS10cnVuaworNTQyMzQgOWNmYzljYmE2NzY4YjE2ZmQ2ZDUyZjkzOWE5MzA0NDRjMjM1ZGM3MyBsZWdhY3ktdHJ1bmsKKzU0MjM1IDFhMGY2YTEyODc0YzJhYWMzM2Y3MDY0NWMzZDkwNmZkYzIzYmQ5OTUgbGVnYWN5LXRydW5rCis1NDIzNiBlODMxMDg1NWZjYzdhNjc0NGQ4MTUwMDA1N2M5NzI1ZGI3ZmJkMTYxIHJlbGVhc2UyNS1tYWludAorNTQyMzcgZjc1NDU3ZDc1MzJjZTBjZTdiN2Q1N2Q0NzAzZDlhYzM0NTcxZjk3YyBsZWdhY3ktdHJ1bmsKKzU0MjM4IDdmNmQ1MzkwYTExYWIyZGQ3NWEyZjgzNmI3YWQ1NjlhM2NhNWYwYWIgcmVsZWFzZTI1LW1haW50Cis1NDIzOSA3NDQ2YWQ2Y2I1OGJkY2JmY2U4MTg5MzFkYTBiYWZjNmRjZDNiNTViIGxlZ2FjeS10cnVuaworNTQyNDAgMDliZmMwY2RmZjlmZWUzYmU0ODhkYmUxYjIwNGM5MGRiNDc3YzFkZCBsZWdhY3ktdHJ1bmsKKzU0MjQzIDI4Nzc3OTg0M2M1ZDM5OTRhMjFlNWQzMmIwZTNmOGZhZGE1ZTY2NTggbGVnYWN5LXRydW5rCis1NDI0NCAzNzE3YjE0ODFkMWI5NTczNzlhYjIxYjBmZmJkNjkyMDljOTYxNTQxIGxlZ2FjeS10cnVuaworNTQyNDUgMWZlZTlmNDJiMWZhZGQ5NzUxNGE3NTkxNGQ0MWEwMjRlMjc2YzQyZCBsZWdhY3ktdHJ1bmsKKzU0MjQ2IGIxMzI2YWEwNGIyYzNkYTI0NTY4YTdmODZmOGE1ZGE1MjkzNmYxNDUgcmVsZWFzZTI1LW1haW50Cis1NDI0NyA0N2FjMWJmZWEzMDQ3YzZjZTgwYmYxNTc5MjQzMDRmMTVhNzBiNWY4IGxlZ2FjeS10cnVuaworNTQyNDggZmVkZDZjY2M1ZTViNGY4NjQ3Y2I4YTQyYmEwNTA1NDZiNTNlYzU4MiBsZWdhY3ktdHJ1bmsKKzU0MjQ5IDRhYTkxODdiNTE1OWNjZGUzNTg2NDEwNGU1ZjZiMzUwNmNjYjMxODUgcmVsZWFzZTI1LW1haW50Cis1NDI1MCAxYWYzOGFmMzE0ZjI3MjczZjg0OTI2NmQyMjMyMzUwOGU1M2FiMjY3IGxlZ2FjeS10cnVuaworNTQyNTIgYmUwZDQ5MTM0ZTRmYTJlODVmNmYwNmMzZmQxNTcyYzk1ZWJjMTYzOSBsZWdhY3ktdHJ1bmsKKzU0MjUzIDFiYmQ2ODhhNmRlMTZmNTdjOTlkNjQ4MzhhMmU1YTlmMzQzMjZlODIgbGVnYWN5LXRydW5rCis1NDI1NCAwMDIzN2Y1MTRmMDYyOTJhMDRiMjE3OTc3NWFiYTFlYTJkZmNmNmJkIGxlZ2FjeS10cnVuaworNTQyNTUgMDFjOGYzZTMzMzJjYWExOGI5MmY5NTBmNWI4NzVkOGZmZjUxNjA5MCByZWxlYXNlMjUtbWFpbnQKKzU0MjU2IDcxODA5YzA4OWEyNjM5NWU5ZTcwMTBkZTE3Yjc1OGNkNjczYTNiMGMgbGVnYWN5LXRydW5rCis1NDI1NyBkM2EzNWZlMTM4MzhhMjE5NjdhNzYzNTdkZmFmZTc3NzUwMjg2YzFkIGxlZ2FjeS10cnVuaworNTQyNTggNTk3OGUwNzI5MWZlNzY4MGQ1ZTAwOGViOGNhZDliZTgzM2JmM2I1ZSByZWxlYXNlMjUtbWFpbnQKKzU0MjYwIGEzZjMxMTMwNGVhNjMyZWJiMTIxOWM1NGI4ZjU2YWQ2MjgwMTRiYjAgbGVnYWN5LXRydW5rCis1NDI2MSAyYjUxYjA0YjI1NDU0Y2ExMjI4MzAyOThlMDJkMDZmMmY0ZWExOGM0IHJlbGVhc2UyNS1tYWludAorNTQyNjIgMTAxYTFhYjU3M2RiNGViMjQ3NTE1MTk3Y2NlYjE0Y2ZmYTIwZDgyMCBsZWdhY3ktdHJ1bmsKKzU0MjY1IGNmNDUyMDI3MDczZTI4Y2NlMzY1YmM2NTk2MTYyY2VkOGU3NGU4MGUgcDN5aworNTQyNjggZjExOGFhZGMxMTIwNWM3NTRjZDZhZjIyMmY5OTY5NjFiZDAxNGFkNyBsZWdhY3ktdHJ1bmsKKzU0MjY5IGM5YjQwYjBhYTMwMzIwMWQ3NWZhOGFlMDBmYTQ0OTVkZTk1YTczNDYgcmVsZWFzZTI1LW1haW50Cis1NDI3MCBhOGFlMmMyOWM2NmFlMmQ2MGRkYTYwMDAwZDc0OTU1NmY5MDA1ODBhIGxlZ2FjeS10cnVuaworNTQyNzEgNWFiN2RjOGU3MzFhOTdhYWUyODFjODQ5MWIxODEyYjVlZjFiZjdiYyBsZWdhY3ktdHJ1bmsKKzU0MjcyIGQ0ZWEwNjhjMzgyMDRkODBkMTVkMmM5YmM3MTc4OWFlZGJkN2VmY2QgcmVsZWFzZTI1LW1haW50Cis1NDI3MyBkNzA0NDQ2NWI3NDNiZjUxNWEwN2M0NmQzYzMzZTYwZTM0MTY4Mjc3IHJlbGVhc2UyNS1tYWludAorNTQyNzQgNjBhMzVjMDdkMzJkZjM0MWE0ZWI4OWY3Nzk5Mjk1ZTFmYjZhZmY1MyBsZWdhY3ktdHJ1bmsKKzU0Mjc1IDViNmUxYzAwOGNhMzIzZGM3MTQ2YWYyM2Y0NzgzZTczMzQ3MjVkNjEgcmVsZWFzZTI1LW1haW50Cis1NDI3OCA5YTBjY2RiYmM1NjhkY2U4MmIwOTM1YWUxMDZmZTBjMWM1ZTRiMmZiIGxlZ2FjeS10cnVuaworNTQyNzkgNzJjNWI1NWNhYTFkYjJlMzczZDQwNDI5YTRjOWM4NTc2ZTU1ZTJjMSByZWxlYXNlMjUtbWFpbnQKKzU0MjgwIGQ4NTBiZjU2ZmRmNmNhMmZkZDg0ZjBmMzNlZGNhYTQ0ODM4NWEzNWUgbGVnYWN5LXRydW5rCis1NDI4MSBkY2U5NDBkOWE4ZTljZGYwZDY1NThkMzM4MmRlNWU2YWM1MTZiOTIyIHJlbGVhc2UyNS1tYWludAorNTQyODIgNDdlZGU2NWUyZWZkOGZmZWIxMDk4Y2UzOGFiYWY5NGMzYmQ3MTBhYSBsZWdhY3ktdHJ1bmsKKzU0MjgzIGFkZjYxMmY3MDZlNGU5MDY0YmJkZThlMDJlYzEyYzc5MjE5MWI4MmQgbGVnYWN5LXRydW5rCis1NDI4NCBhN2RhYTAyMThjZjBjMDYzYTVlZTNkMGMwOTY3ZDUwYjA0NGVlNDViIHJlbGVhc2UyNS1tYWludAorNTQyODUgM2VlOTVmZGU3Y2ZhZTQwNDk0MjNhZDEyMzQ2YTc2ZGI4NWMxYTkyZiBsZWdhY3ktdHJ1bmsKKzU0Mjg2IDIxMTIwMWU2YjA0NWVkMmM1MTE1ZTAwMjEzNTljYmZkYzIxNThmOTAgcDN5aworNTQyODcgNzE3YmMyYTRlZWU3N2I2ZjJkZjAwZDJmZWRjOThmYmFjZDBhZTVkMiBsZWdhY3ktdHJ1bmsKKzU0Mjg4IGE4N2JjYzM3YmYwZmVhNzdhZDI5OWNhNjE3YTllNWEwYjk1NzQzYzkgbGVnYWN5LXRydW5rCis1NDI5MCA3MTAwYzU5MTgyZmYzMTZkZjg3N2E0NGJlNTFkNTYzZmVlOTRhZGU3IGxlZ2FjeS10cnVuaworNTQyOTEgNDVjZTM4OGVjNTlhNWQyM2JlMGIzOGEwMDJiNGMxMTIzMmY4MTdjYyBsZWdhY3ktdHJ1bmsKKzU0MjkyIDJjYjVmYjdjZDM1N2U0YjgxMmUyOTFjNjUyZjU3NmE3MmE0MmQwYmEgbGVnYWN5LXRydW5rCis1NDI5MyA1YmUzZDIxNzczNDA1ZGY2N2I3Yjg3MTYxMWQ2ODRkMjViYTRmNzI4IHJlbGVhc2UyNS1tYWludAorNTQyOTQgNjZmMjY1YWM0ZWM0ZjkwYjVlYjI2ODBiYjRmZmE3MDBkMzQyYjU1NCByZWxlYXNlMjUtbWFpbnQKKzU0Mjk1IDFlMTJiZWQ3YTJmZTVhNDZiMjczNmNmNTg4YzhjNzVjZThiN2E1ZDcgbGVnYWN5LXRydW5rCis1NDI5NiAwMTM1NTEyNGNlNDA1MTViYzE4MWMyZGUxM2IyYTI3YmJlYzViZDM3IGxlZ2FjeS10cnVuaworNTQyOTcgOTFhODBlNTJkODYzZWQ1YjJhY2U1MmU1NTVhNmUyN2U2ZTcwZDdjNyBsZWdhY3ktdHJ1bmsKKzU0MzE1IDkxYmQ3MzhhNDIwNjdhMTNhYzNjYTUzZTIyNzM5NmNiNTgxYjZjNjEgbGVnYWN5LXRydW5rCis1NDMxNiA4NDQ3OGRlYjRhZDk2YTlhY2RlOThlN2QwOGE1YjFkNTljZjBmMGIzIGxlZ2FjeS10cnVuaworNTQzMTggNDc5ZGNiZDc5YjU3ZjE1ZWY4YTJlNjFhNGZjZWMzYjAwMTdmNTg5YyBsZWdhY3ktdHJ1bmsKKzU0MzE5IGY5YTI2YWEzZDA5YzQ0YzI2ZDk1MmJhNzYxNDBiNmI3NmM2NzI4YmEgbGVnYWN5LXRydW5rCis1NDMyMSA5ZGIzZTMyNWRkODhkNGIxNzc0YWJmNjM0NGMzMWMzNWE2YmY3YTFkIGxlZ2FjeS10cnVuaworNTQzMjIgNzI4NmQ4MzJhZDI3MjcxNDVhZjQ0MzkwNWI5MjA0Njg3NWMwY2EyYiBsZWdhY3ktdHJ1bmsKKzU0MzIzIGUyY2VlZGUyMGQ4YzI5NDI0Yzg4NmQ2NTIwNTA2Y2Q3YjAwMWVhOTQgbGVnYWN5LXRydW5rCis1NDMyNCAxNmQ3ZGNkN2E2OWM0MmY3NWQ3ZjMxODhmNDBjN2MyNjY4MGFjOWMwIHJlbGVhc2UyNS1tYWludAorNTQzMjUgYmVkNTdkZmYzZGI4NmU2OGYwZmM5NDQ3ZTg2NDkxZWE1OTViMjExOCBsZWdhY3ktdHJ1bmsKKzU0MzI2IDdhMzMxYzdmOTQwNGZjZDAwMWFjMzgxZjY5Yjg1MjhjNTE4YjQ2ZTkgbGVnYWN5LXRydW5rCis1NDMyNyBiYmFmNmM5MzU2NjM2ZmE1MzdhZGUwNTI0ODZiNmZmYzlkZGM1YTk5IGxlZ2FjeS10cnVuaworNTQzMjggOGZhNGU5ODBiNTg5OWZiOWJkMjE1M2E4ZWZhMzM5YTUyMDE4Y2ExOSBsZWdhY3ktdHJ1bmsKKzU0MzI5IGI4OTQzN2UzYmM4ZWJkN2Q2YjdlOGEyYTM3YzVjMDJiODMzYjMxNzQgbGVnYWN5LXRydW5rCis1NDMzMCBhZGU4ZDFjODEwMDkzZTU4NDRmNjg1MjZiNTI0ODlhYWU1NTExYjE5IHJlbGVhc2UyNS1tYWludAorNTQzMzEgYjEzZTYxMjhlZmE3MmE0ZTI2NjdlMGNlMjg5N2NiYTI2YzIwOTlhYyBsZWdhY3ktdHJ1bmsKKzU0MzMyIGI2YzEwMzg0NTA1NGYxODhkMmFiNTE5MWIxZmZlOTMxYmZmOThhOGEgcmVsZWFzZTI1LW1haW50Cis1NDMzMyBjNmY0MTUyOTBmODA2Y2IwNTVmZjZhOWI2YmI1OTI4NTMzOGE1NzEyIGxlZ2FjeS10cnVuaworNTQzMzQgN2QzMGQ2MmE5MDFhYTgxZjEyNDA5Y2ZkNmNhYzk5NzNhZWJhNmRkNCByZWxlYXNlMjUtbWFpbnQKKzU0MzM1IDVhM2ExYjAyNDE4YWZkMGNiOWYzYTE0Y2M2NTMzMjllMjFmNTQyMzcgbGVnYWN5LXRydW5rCis1NDMzNiBhNGUwYzc5MDE1ZDgyZmUyOTg1YTlkZjc4MmM1YWE1OGU3ZmZiOTVjIGxlZ2FjeS10cnVuaworNTQzMzcgODFlNWM1ZDE5OTg4N2M5NWIwMjU3MGM0ZTA2NTExZjlkYzZkNmYyYyByZWxlYXNlMjUtbWFpbnQKKzU0MzM4IGEzNDE5YzZjMGNmZWRmNmFmYjE3NDg2ZGQwZDYwMzZiZDAyNGIyMzUgbGVnYWN5LXRydW5rCis1NDMzOSA1M2VlMjc5NTI4N2I0NGM2Yzk2YWRkZDk1YTUzMTkyODA4MGI5ZTg3IGxlZ2FjeS10cnVuaworNTQzNDEgMWQ4MGQ4NGM3NzkyNDk3NWJjYjM5M2VkMmRkZDBjNjNjYzgyOTUwZSBsZWdhY3ktdHJ1bmsKKzU0MzQyIGI5MGQ4YjJlNWVkMDcxNzRjNDhlZjZhYzg0YTk4YjMxN2RlZjM5YmUgcmVsZWFzZTIzLW1haW50Cis1NDM0MyAwYzEyMmZlODI3ZDc4YTQ2ZTIyMmY0NzBlYjg0YTVlZjRkZDAwZThiIGxlZ2FjeS10cnVuaworNTQzNDQgN2IzNmE2NGRjYjA4ZDAyNjYyMjI3YjIzM2Q5ZWU0N2NkNGVjODBkMCBsZWdhY3ktdHJ1bmsKKzU0MzQ1IGFjNzFkYjlmYWRjODZiOWFlMTY5ZmU2OWQyMGEwNTdlZWM2MTUxMWQgbGVnYWN5LXRydW5rCis1NDM0NiAyOGIwNDAzZjhjOTJiNzFkYzNjNDM0NzBjMzE4ZTU4ZDAwYjg4YWIxIGxlZ2FjeS10cnVuaworNTQzNDcgOTNlNjdkMzYyYTgxYTI5YTk3OWY2NjY4OTQ0NDUwNjhkYWRkMWMyMiBsZWdhY3ktdHJ1bmsKKzU0MzQ4IGQ5NmViYjIwZDNlMWY2MTA1YzkzNWM4MWQ5MjRlY2QyOTQ2NTc0OTEgbGVnYWN5LXRydW5rCis1NDM1MiA0YTc5ZGQxNWJhNTlmNjVlMzkxODQ0YWYyZDk4OGVhNjE2MjU0NzMwIGxlZ2FjeS10cnVuaworNTQzNTcgNDkzY2FlNzA1ZjkxODhjM2JiNzA5Yzc3NzVmZDk2M2ZlMWViNGM5OCBsZWdhY3ktdHJ1bmsKKzU0MzU4IDc4Njg2YzdhMjNhN2Q1MDNlODIyNmM0OWJhNjc1ZmZjNTAzOTgxNWMgbGVnYWN5LXRydW5rCis1NDM1OSA5MjJiNzcwOGE4MGFmZTIwOTZkODA4OWQ0Y2FiNTE5YzIwYmIwMDY1IGxlZ2FjeS10cnVuaworNTQzNjAgMjI2ZDlmY2Y5ZDU5Y2RhNDc3ZTI5MGQwMWJkMWIxZWRiM2RiNTA2YyBsZWdhY3ktdHJ1bmsKKzU0MzYxIGRiYTVhMzNhMGU3OTk1MjgxNDAyMjliNTNjY2Q2NGMwZTYxZmNjZTQgbGVnYWN5LXRydW5rCis1NDM2MiAyMDlkNjg4ZjNjYTVlZWMyZTE4NjExYTFlNzUyMWNhYTljYjc4ZDliIGxlZ2FjeS10cnVuaworNTQzNjMgZWFmYmZhOGEyYjMwMGMzYWJhOTFkNWU2YTQ1MmUzYzE3N2UwNzc0MyBsZWdhY3ktdHJ1bmsKKzU0MzY0IGYxZjE4NjQ2MDI1MGEyZjUzMDhlZTQ2NDAwZDA2MTEzNThhYzgzMWYgbGVnYWN5LXRydW5rCis1NDM2NSBjYTMzOGQ1NjNhN2FkMTZmZjhjZDFjOWJlODMwYTAwZmVlYjI1NDMxIGxlZ2FjeS10cnVuaworNTQzNjYgZDMxMTAxM2ExNjM4YTk0Y2IzNmNhMTE2MDU2YzEzMDM2ZThhN2JkNyByZWxlYXNlMjUtbWFpbnQKKzU0MzY3IDVhMWEwYWE5YTRiYmFlMTk3NmE0N2NiMDE1OGYzMGUxNjFhMTVlNmEgbGVnYWN5LXRydW5rCis1NDM2OCA4OTQ2OTFjYTQ4MzUzZjBjNDFiOGE1YmVhMTE0MTMyZDRlZjhkMDE2IGxlZ2FjeS10cnVuaworNTQzNjkgMWRjZGJjMjVkZWE3YzY1OThlY2ZiNDNkNDdhOTE0N2EzODdlODU2NCByZWxlYXNlMjUtbWFpbnQKKzU0MzcwIDUyYTY5YTA2NDYzN2E1OTk1MzdlNGQzNTJhYzA5YTA4NzcyNGZkNGMgcmVsZWFzZTI1LW1haW50Cis1NDM3MSBkZTFkMDVjNTViNmZkZjNjZWEyMjVlZTc4NTE5NGJkODgzZDAzNzdiIGxlZ2FjeS10cnVuaworNTQzNzIgZmY5ZDgxZTc2YTc2ZjdkNTdlNjJlOWQyZGJhNTM0YTA5ZDdkMzFiYSBsZWdhY3ktdHJ1bmsKKzU0MzczIGJjMmE1YTU0YjVjYWYzZjRlMWYwZjZkYWE2M2UwNjE4NDMyOTVlMjMgbGVnYWN5LXRydW5rCis1NDM3NCBiNTAwNzYxYjRiNjI2ZGMxZmI5MGMzMDhlMDhmOTdhYWE1ODY0MjJhIHJlbGVhc2UyNS1tYWludAorNTQzNzUgNTZiMmI5MzNiYWFlMmM0NWRmZTUyNmZlMTFjNjBjNTM3ZmI4N2MyMiByZWxlYXNlMjUtbWFpbnQKKzU0Mzc2IGMzMDFiNWJjZGZkYzUxMGRmYjlhOGIzNTQ1MmM4ODAyMGE1ZmU2MDkgbGVnYWN5LXRydW5rCis1NDM3NyA5MGU1N2UyYzdhMDMzM2ViNzhkZGMyYzUzNjQ0YjVhNzgxNDhkNjVkIHJlbGVhc2UyNS1tYWludAorNTQzNzggMjkwMGVjMDQwMzFkOTRjM2FmOGQ2YTg4OTkzZGZiZTYyYzE5MGEzOCBsZWdhY3ktdHJ1bmsKKzU0Mzc5IGZjNWUwNDVjZWFlNDM4ZDIzODkwZDNmNjU2OWRlMjYwYjU2MGFiODQgcmVsZWFzZTI1LW1haW50Cis1NDM4MyA1MTRhZWZmNjNjOWZmYjU1MTEwMDk5N2RiNGJiYTZlZjNkMGFmNzhiIHJlbGVhc2UyNS1tYWludAorNTQzODYgNjI4MDU1MmMxMjk3MjNlMzdkN2IzODhiNGI1ODI2NjFhMThiZWYzYyBsZWdhY3ktdHJ1bmsKKzU0Mzg3IDk5NDNhZWE0ZjJkMWRmMjJjN2E2MGNlMzNjOWFiOWRjZGE1MzY0ZmYgcmVsZWFzZTI1LW1haW50Cis1NDM4OSBiYmNlMmQ4ZmY3M2Q1NGUwZjk3NzkwYTI2Y2UzOGFhZTRkYTQ0MjQ4IGxlZ2FjeS10cnVuaworNTQzOTAgNGViNGNmYjYyNTRlYmI3YjhmM2YwYWMyNDliZDEzZjdhNWRkNjRlOCBsZWdhY3ktdHJ1bmsKKzU0MzkxIGQxNTVhZTYzNjcyODQ4ZWFhMTZiZTA2ZGM1NzAxM2E1MjZjNmI3ZGMgbGVnYWN5LXRydW5rCis1NDM5MiAwYTZjNTEzNWQyZGVmNDk4ZTgyOTU4NzExMzQ4YzA4Y2ViZTQxNzlmIGxlZ2FjeS10cnVuaworNTQzOTMgZmM1MjdlYjk4ZGNlNjg1NWNhOTM5N2Y2ODE0ZDMxMDUzYzJmNjRjZCByZWxlYXNlMjUtbWFpbnQKKzU0Mzk0IDM3NmI0MjM1ZGQ0NDQ0ODFiNzg2NGYzNWQ4NjZhMmZiNjM2M2RhNWQgbGVnYWN5LXRydW5rCis1NDM5NSA0YWNiNDVjMjk3ZWQxZmI2YjhlMjlkNTM2YTBhMzUwOWE3MWNmMzZjIHJlbGVhc2UyNS1tYWludAorNTQzOTYgOGQ5N2RlZTZkZjY0NDQ0MTZlM2NjNTZmNDQ2ZmEwZTJiZjVhMWNmYyByZWxlYXNlMjUtbWFpbnQKKzU0Mzk3IDQyMTdmMzg1MGYwYjhhNWI2ZTczNjAwNTljNjBmN2UzNmU0NjI1NmIgbGVnYWN5LXRydW5rCis1NDM5OCA1MmMzMzljMGNiMzhiYzY5ZDY3ODNlNWRhZWU2YTQ5NjhmNzAxYjA4IHJlbGVhc2UyNS1tYWludAorNTQ0MDAgYTM3N2Y5NDJlZTBhZGMxODk4NWY5NGI5ZTRlYzdiM2UzNmY4MjBhOCBwM3lrCis1NDQwMSBhMzEyYzI3NmE1ZTc5YmNmYjM3MGI3NDk5OTk4MzIyM2JkYjM3MDIxIHAzeWsKKzU0NDA0IGI0M2E1MmY3MTY5NmEwNjUzYjI5NTI2Nzk5YmM3YWE3YzBjNmRlZjAgbGVnYWN5LXRydW5rCis1NDQwNSBkODM1ODA5ZjQ1ZWM0NDkxNGY0YmNkMTA4MTlmZjZlZGJjNzE2ODU2IHJlbGVhc2UyNS1tYWludAorNTQ0MDYgMDE5NTFmNmI4MTlkMTNlYWIyM2I2N2U1YWExNDYzNGQ2Y2Y4MGUzNCBsZWdhY3ktdHJ1bmsKKzU0NDA3IDk0MjA1OTg2YWQ1MzA4YTk0M2RmMTc4M2E2MjEwM2E3Y2E3MzUzZjQgbGVnYWN5LXRydW5rCis1NDQwOCAyNjkwZGU0YmVhYTEzZGE0YWNkOTZmMTBjZjEyMjc3MTZhYTk0YjI0IGxlZ2FjeS10cnVuaworNTQ0MDkgNjQ1MDcwYjgzOTQyNmJmMWY5M2JjNzU4ODIwYjUyNGZkN2ZkODlmYiBsZWdhY3ktdHJ1bmsKKzU0NDEwIGE2OTc5YWM5NTMzZmFlNjY5ODc2YWMyYWQ5ZDE0NWUxMDczOGExNGUgcmVsZWFzZTI1LW1haW50Cis1NDQxMiBjNTdjZDU0NjYxMmRkODNlODdkZWMzMTdhYzQ2ODA5OTZiNjU5YTdjIGxlZ2FjeS10cnVuaworNTQ0MTMgMDZjZDYwYjBiZDE2NGM3M2UyMmE1ZDQ5MzUyOWU3NWY0N2RlZTY5OCBsZWdhY3ktdHJ1bmsKKzU0NDE0IGQxYmE4MTM0NTI4ZTI4YzBiYWIzYzRlNDkzNjM1ZjNmYjAyNDIyMzEgbGVnYWN5LXRydW5rCis1NDQxNSA3MmRhNDhkOTYyNTdmYzMwYjAzMmEyYjRmNWY5MTQ1YmMyMTFkNTgwIGxlZ2FjeS10cnVuaworNTQ0MTcgOGJiNTcwYWU0YzQ1YzcyZThlYzIyZjk5YzY4OGU3ODc2ZWVlNjQ2MyBsZWdhY3ktdHJ1bmsKKzU0NDE4IDc1NDljNGIzYWEzNmEwMWQzOGVkMDU1ZmZmZWVjNTEzYmYwYzdlOWEgbGVnYWN5LXRydW5rCis1NDQxOSBmM2Q0Mjc0ZDA2M2QzMGJjYzgwOTYwMjA0NTEzMzdkNTJjODE4ZWYwIGxlZ2FjeS10cnVuaworNTQ0MjEgZWJlNTJkYmMzNTUzZjdlZTYwODlkYzNjY2VhODFhNTllYjdkZjI1OSBsZWdhY3ktdHJ1bmsKKzU0NDIyIDkxMjY4Njc4ZDU3Zjk2ZDUxMDBjMjY0MTUxNWRiZTllN2JkNmJlNDQgcmVsZWFzZTI1LW1haW50Cis1NDQyMyAxMzczYTgzMDgzYmIyMTNhOWZjYzM2YmExODE4YzAxNjZlZmM4ZTA2IGxlZ2FjeS10cnVuaworNTQ0MjQgYTJhZTI0ZmZhNjBhOTAzNTU4NTE4Y2IwZWQyNDQxZWJkMjlkY2M5MSBwM3lrCis1NDQyNSAzYzczYThhMjA4Mzk1ZmM4Zjg5YTUxYTA5Zjk3MjhjY2E2ZDgzNzhkIHAzeWsKKzU0NDI2IGUzYmE2MGRlM2Q4NDJlMWQ3NGMyMTA0YjI3NjNlNjY4MzY5OTZmMDYgbGVnYWN5LXRydW5rCis1NDQyNyAzNDNiZTM5NmJiZDdjNjEyOWM0NjEyZjU5N2U2YzI2OGVkZWYxNWQ3IHJlbGVhc2UyNS1tYWludAorNTQ0MjggMTlmN2ZmNDQzNzE4ZjdhOWRhMWFlYTllZGJmMDBhMTM1Zjg2MDg4MyBwM3lrCis1NDQzMCA1ZTI0ZjYzNmFjNzU3NmU4YjM1ZmRkOGQ4NzkzYmIxNTRhMWVkMDgzIHAzeWsKKzU0NDMyIDA3MTAxNmM3MjkzOTJlNTUzY2EzYzlmODlkMjQ4YjkzODAwMjFlYjAgbGVnYWN5LXRydW5rCis1NDQzMyAxZjg0Mzg5MGE0ZTYxYjQ3MTVkMmMzYTE0YTVlYzJiMTVkZGMwMWU0IHAzeWsKKzU0NDM0IGIxYTE4YzdlZDVjYTY3OWFlYTg4ZjA3NDUxMzE4ZWM3ZDY2YWJjNTggcDN5aworNTQ0MzUgMTZmZTkzNmY4OWIxOWE1NTExMjM0MGVjNWQ0YTg4ZDA3N2I3OGU4MCBwM3lrCis1NDQzNyA4ZDc5OWE5OWNmNjhmNGQ2OGU3M2E2M2ZkMTViOWExNjFjMThhMTg0IHAzeWsKKzU0NDM4IDAzN2ZlNmE0NDRkMmZlOTgyNzRlYmFhY2VlNGM3MWQ5MDU5YWZkN2QgcDN5aworNTQ0MzkgOGQwNmMxMTIxYjMzMWE1M2YyOTI2MDMwZjQwMDYwZjllNzkyODUzMSBsZWdhY3ktdHJ1bmsKKzU0NDQwIDZjOGMzM2E0M2ExNTU1YjgxZWNlYzkxMTBmNWVkZjBkMjQ5NTkwYmIgcDN5aworNTQ0NDEgOWYwN2Q0MTBjNTU1NDY5Njc0MjU5ZTI2YTc4ZTQ1MjFkYjU1MDdhYyBsZWdhY3ktdHJ1bmsKKzU0NDUxIGM3YzI3NTRmZjJkNmRkYjlhOTBmMTgyNzcwZTdhM2I5YjIyZWZhZWEgcDN5aworNTQ0NTIgZjk5NzNhNmUxYWZlMDFlMGZiM2JjOTdkN2E0MGZhMDFmN2QxNzllZiBwM3lrCis1NDQ1NiA4ZDI5NzgxNDI1OTMzODlmZWE0Njc2OWE5OGNjYjU3OTYwZGJmNzlhIGxlZ2FjeS10cnVuaworNTQ0NTcgMjM2YWYyMTYxZWI2NzhhZDQ0ZGU0MWJkMWM1OWYzOWNjMGJjOWE1OSBsZWdhY3ktdHJ1bmsKKzU0NDU4IDYwMTgxOTRhZmJiZGUxM2UxZmEzZDI0ODg4ZDdjMDQ3ODE4MWFmNjkgbGVnYWN5LXRydW5rCis1NDQ1OSBjOTk3ZTkwN2M0YzY3MDYwZDgzODFhNzZhOTExNTM1ZGNlZTU3ZGJhIGxlZ2FjeS10cnVuaworNTQ0NjAgMzA3ZTVkNDE2NGYzYTNiYjEyMTUwYjcwN2JhZjE5OGM2ZmQ2MjJjMCBsZWdhY3ktdHJ1bmsKKzU0NDYxIDVhNzcxYjRhOGI3OGNjNDNkNzU2MjBmNTk3ZDIyYjdhNjc5MmM0OTIgbGVnYWN5LXRydW5rCis1NDQ2MiA0NTY2OWM0MTRkYjQ1NTY3NTUyNDZlOTcxMGJiZWM1NTU0ZjczMzNkIGxlZ2FjeS10cnVuaworNTQ0NjMgYjhiMTdhMmZhY2U1YWFmM2NkN2Y3MzkwY2I3YzM4YmViZmRmYWY5YyBsZWdhY3ktdHJ1bmsKKzU0NDY0IGI0M2EyZGE4MzJhNzBkN2E4OWMyZmI5Y2FhNjMxNmNmNDZmNWQwNzIgcmVsZWFzZTI1LW1haW50Cis1NDQ2NSBlYzZmYjA5MTAzOWI0NTNjMGMwZTkyMWZlYTQ2ZWM3ZjFmMTBiZGNkIGxlZ2FjeS10cnVuaworNTQ0NjYgNTBhNmIzM2M5ZDJjNWMwNzEzMWEwOWMxZjg3NTdjYTY2NmU5YjEyMyByZWxlYXNlMjUtbWFpbnQKKzU0NDY4IDlkMGMwNTQxMTczNDgzMTQwMDllNTg5ODE1NDAyMWU4NDk0ZTgzYmEgbGVnYWN5LXRydW5rCis1NDQ2OSA3ZjI5YmUxY2VmYmExMjU2MzQwODFjMzEwYmRlMmEwODM5NzRlNTZhIHAzeWsKKzU0NDcwIGUxMmM1MDRlNDY2YjViNmU5ZjJjODYwYmM3MDcyMGJiZTNiYjc2ZWYgcDN5aworNTQ0NzIgZjI5ZjFhOGI3ODY5MmQxY2ZmMTkzNmUwYTA0MjAyMGE2ODU1MzhiYyBwM3lrCis1NDQ3OCA4ODEyNzE4NjY5ZTE5NzkyMjEzY2VhNjg2OGYzMzRjNDRlMDM3YmE5IHAzeWsKKzU0NDc5IGI3NTJhMWUwOTQ0YjQzNjA4ZWIzODAxOTRlZDZmYzY0ODZjMDZlNWIgbGVnYWN5LXRydW5rCis1NDQ4MCA5Y2YyMmM1ZWVlM2Q3ZmEwMDAxMDIyMzgwYWY3ZjM5Y2NhMDE4NjNiIGxlZ2FjeS10cnVuaworNTQ0ODEgMDhkMTYxODNhOWMxNTA1MjJhZTZhZTdjMGYxNmE1YmNmNjU0N2ZiOCByZWxlYXNlMjUtbWFpbnQKKzU0NDgyIDFkYzRjNGNlMmRiOWZmMDIwZjJiOTIwMzk5ZjQ2ODc4YzhhYjEyMDQgbGVnYWN5LXRydW5rCis1NDQ4MyBkMTZhYmU1YzkyZGViZjU1NTE2ZTkwYWU0ZjU5M2NhZjU4YTBjOTdmIGxlZ2FjeS10cnVuaworNTQ0ODQgODUyYzk4OTZmZTkyMzY1MWFhZThmZDU2MDA0N2Y3ZmJjMTBhMzYwMyByZWxlYXNlMjUtbWFpbnQKKzU0NDg1IDQ1OWUzNmIyZWE0NTFmY2RlMjIwZmMwZmEyNjNiNmQ1ZmM4NWVkNjEgbGVnYWN5LXRydW5rCis1NDQ4NiA1YjcxMTYzMmNhZTEzMmFiOGZkYzNkNWU1YjUyYmU0YmRmYTk3Nzc3IHJlbGVhc2UyNS1tYWludAorNTQ0ODcgY2I2ZWIxMzJhY2NmMjY2ODk0ZjBiMWRmMmFiZDhlN2NlYmE2MmNkMSBsZWdhY3ktdHJ1bmsKKzU0NDg4IDczOTNjNzEwZDRiYmJlZGQ5YTIwN2UyZTY5MmUxOTQyNzQxMGU0Y2QgcmVsZWFzZTI1LW1haW50Cis1NDQ4OSBlNTViZmIxYWMxZTdjY2FkZWEwNjM2YWQ4OTI5NzZjMWQ0NjE0Y2RiIGxlZ2FjeS10cnVuaworNTQ0OTAgNWJkOTY2MzYyMGJjOTc4YTEyNzk3MmE3Y2U3YWJjNmYxNjQ3YmJkYiBsZWdhY3ktdHJ1bmsKKzU0NDkxIGIxZThiZmRmZTRiNzk1YTAyZGVlNmM3ODVkMTRkOTQwMTRmYzllYzAgbGVnYWN5LXRydW5rCis1NDQ5MiBjY2M0NDdhNmQ5MTY0OGY3MTE2MjExNWY0NWQwYWQ3Nzk5YWRlY2IxIGxlZ2FjeS10cnVuaworNTQ0OTMgZDI1Zjc3NTc0ODY2MzFlODQ0YjFhNGY1MGU5NzJlMDE0YTliMzlhMCBwM3lrCis1NDQ5NSAxNWE3ZTBiN2U0MjU2YjVjOTBmOGMyMjU4YWRlZDY5ZmNkYTU3MDEzIGxlZ2FjeS10cnVuaworNTQ0OTYgZjg4OWY2NWE0ODYxYmViNWZjMDE5MTdjYzJkNWFhOTU2NTNkNTRhMCByZWxlYXNlMjUtbWFpbnQKKzU0NDk3IDQwOGRmYzdlMzAxODRjMjE1YTA2Mzg0YTFkNTlmODFjNjNjNGI0MzUgcmVsZWFzZTI1LW1haW50Cis1NDUwMiBkNDI4ZTIxZDZlYWY1ODA2NGVmNGNhYWY3MjNkNmY3NWM2Nzk2ZjFmIHAzeWsKKzU0NTEwIGJmYzRlODA0NjEwMjM4YjhiMDBjMzkyZTNkYWNiMjczNjMxM2YyYjMgcDN5aworNTQ1MjQgYWNmOWE1NWM4ODVkNzkxMjc2OWU2OWNjNjgyZDkyMzEyYmE4ZWQyYiBsZWdhY3ktdHJ1bmsKKzU0NTI1IDUyZTJmY2Q1M2FkMzM5NjYzZWViZGFmZmNiMTM5YmI1ODAzZjE4NGMgcmVsZWFzZTI1LW1haW50Cis1NDUzMiAxNzU3ZjgwYjVmZGJhZTQ3OWRkZjYwNDNiNzA5OTM5NzViNmJmNTIzIHJlbGVhc2UyNS1tYWludAorNTQ1MzMgYWZiMWM2Y2IyYzg4NDIyOTE0ZTY4YWZhMDFiZDBlODVjY2Q5Zjk0ZiBsZWdhY3ktdHJ1bmsKKzU0NTM3IGZlMTg0MmI0OGI2NmZmZWM4YTY5ODY0OGZhYWU3MmZhMTAyMGY0MGEgcmVsZWFzZTI1LW1haW50Cis1NDUzOCA0MmViNWJiNzc2NjE1N2FmMzUwYmE1ODAyM2E4YzRkZmU4ZjI2ZDg3IGxlZ2FjeS10cnVuaworNTQ1MzkgOGRlYmNlMmM0ZmIxYjRlODcyOTRiNWM2YTM2NTkyNGU2NjhlZTM2OSBsZWdhY3ktdHJ1bmsKKzU0NTQwIDUxZmJmMmE3NTU0OGIxYTY0MDA4NzgwNzZhMDc1ZmMwMTU0ZTQxZTggbGVnYWN5LXRydW5rCis1NDU0MSA4ZjFjOWU4ZWZiYmJmZDE5ZjhmMjliZDFkNTUzZGRjNmIzOWY0Mzg4IGxlZ2FjeS10cnVuaworNTQ1NDIgZDg3NDg2NzNmZDlmOWE1ZWFhNmI3ZTc5MWViYzYxMGU1YjViNzlhMSByZWxlYXNlMjUtbWFpbnQKKzU0NTQzIDAyNTc0ZjQ4NWIxNWMzZWJkOWZjMWQ2MmIwZTk5OWJjNmY1OWZiZmYgbGVnYWN5LXRydW5rCis1NDU0NCAwZWE1NTk1ZDc1ZGFkOGEzYTMzNTFhMTIwY2M5NWYxMjhlMDk3NTEzIHJlbGVhc2UyNS1tYWludAorNTQ1NDUgMTJjNzA1NTgwNzRlN2NkMGViMzI5NzM1ZTQxYjE1ZTcyZjVkMDg1ZiBsZWdhY3ktdHJ1bmsKKzU0NTQ2IGE3M2FhMGI4MjFjYTU4ODRjYjNmMDYyNWUyNDhlZmQyY2I4Y2FhMzkgbGVnYWN5LXRydW5rCis1NDU0NyAzYjU2ZTdlODk0NzAyZTBlYzBkYzAyNWUyNWE1NDE3OWNlOTNlZTJjIGxlZ2FjeS10cnVuaworNTQ1NTMgNzRkMjliNjM1NDE2Yjg5YWJjNTBjYWNiZDBhNTAyYWI3M2EwMzcyYSBsZWdhY3ktdHJ1bmsKKzU0NTU0IDNmZjZkM2ZhODEyMjliOTBlNjJiMzlmZGM2MThjMjEyODlhMGVjZjEgcmVsZWFzZTI1LW1haW50Cis1NDU1NSAxODk5NWJkOGJjOGIzYWE2Yjk1OGM4ZWIzZGE4MTljZTI2NjFmM2JmIGxlZ2FjeS10cnVuaworNTQ1NTYgMWMzZTBkMmMzNmRjOTc2MjNmOWE4Y2MxZjUzZmNlN2NjY2UwNjg5NCBsZWdhY3ktdHJ1bmsKKzU0NTU3IGVmNzBjZDRkYmE1MGI2NTc0YWQxYTViNzExZGUxNTVlYzRhNTU5NzIgcDN5aworNTQ1NTkgMzhhM2RhMDI2ZDVlNTc0M2RlNjdhNWVkOGIzNTkyMzQzZGMwNTA1NSBsZWdhY3ktdHJ1bmsKKzU0NTYwIGU5MzhlOWVmNDM0YjgyZTYxZjhiODVjZTAzMjIzZDI3MGFiOTA0ODQgcmVsZWFzZTI1LW1haW50Cis1NDU2NSAzMmY3MmU1NzYxOGNjMTViMmVmNjEyY2Q0OGI4NmMxZjYzM2YyODhiIGxlZ2FjeS10cnVuaworNTQ1NjYgOGZjNjM5NmYwNzZhNWVjYmIyMWE1M2M1OGY5Yzg5NTc2ZGEzZmJkMyBsZWdhY3ktdHJ1bmsKKzU0NTY3IDY1MGVlMTc5ZjNjZWMyMGE3YmFlNmRmZjIyNDRhMzhhM2E1YTIzMWIgbGVnYWN5LXRydW5rCis1NDU2OCA4MjU4ZjI1ZDQzZDc5NjQ5MDM0ZTVmMzZmNWQ3MWJhYmRjMTM5MGZkIGxlZ2FjeS10cnVuaworNTQ1NzAgM2MwOTEzYjY1ZThkNmQ1NWU3ZDYxNGY5ZDhkMzk5Y2Q5NmFkZDZhYyBsZWdhY3ktdHJ1bmsKKzU0NTcyIGViMjVjOGUyYjRhMWViZTI0NmEyZTY0YWJmNjIzYjI5NGYyZjExMmMgbGVnYWN5LXRydW5rCis1NDU3MyBhMDdmOThjZmZiZGZlZjk1MTM2MjY1ZTFkNjRlZGVhZGI4ZGE5ZGQ5IGxlZ2FjeS10cnVuaworNTQ1ODAgMmJlMTMzMDEzYjcxY2FiMjgzZWY0MDkzZDc3Y2FkNTRlODgxZjM3MiBsZWdhY3ktdHJ1bmsKKzU0NTgxIDhiZTc0NGQ1YzU2NzM4OTIzNTViY2NkMGY0ZDg0NmU0ZmEyMGZkNDAgbGVnYWN5LXRydW5rCis1NDU4MiAwM2Q1ZGI4MzI1ZjQxMWE2Yjc4M2EwYTZkOTliM2RlNzZlMjMyNGNiIGxlZ2FjeS10cnVuaworNTQ1ODMgYTMxYjBiMThjYWM2MmQ4ZmUzNzM1ZjQ1YzIxN2MwNzRiY2FlYWZhYiBwM3lrCis1NDU4NSA2NTMyNmEzODE1Zjc2MGFlODg3NDE5OTllNDcwYTgyZmQyZmZiZDM0IGxlZ2FjeS10cnVuaworNTQ1ODYgZTQ4OTNlZTlhODg1Nzk2NDAwNTZmNDAyMTRjMDFhYmExZWM2ZjA3ZCBsZWdhY3ktdHJ1bmsKKzU0NTg3IDUwOTVhZmVlMDgwZjEwMDlhNTgyOWM4YWQ3NDA3ZTczYWRjMjY2ODggcDN5aworNTQ1ODggODM0ZGE1MmViMmE0ZWJlNmY4MGUwNTlkMTEzYWNmMWIwNDhkMzI4YSBwM3lrCis1NDU5MiA0NWEyNzYxYzliMTZjZTNiM2U0N2IzZThkOWJmOGU5MmQwYTJmMjllIHAzeWsKKzU0NTk0IGQxNDRmODE1NzRjMDg1ZGUxNWI4MjkxYzBiMDBiZjViY2NkYWI3MjIgbGVnYWN5LXRydW5rCis1NDU5NSBkNDE2ZDk3MTcxODE1YmE2MjhlNDU3MTE1YWEyNDNkMWZkNmJiODU1IGFtay1tYWlsYm94Cis1NDU5NiAzZTZkMDMyMTdhMDJiMDU5OWY2N2UzYTM5NjhjNGQ0Y2Y0MzgxY2I5IGFtay1tYWlsYm94Cis1NDU5NyA0NmFkMjE5Mzk2OGVmYTdhMjhmY2M1OGQwNmZjNzM2MDA0MzNkZDg3IGFtay1tYWlsYm94Cis1NDU5OCA3MzA1NDVmMjQwODZkZDk4MTkzNzY1OGYxY2QxNzAwZjcyZWEwODFkIGFtay1tYWlsYm94Cis1NDU5OSAyZDI5NjY1Njc5ZTY3NDY2MDM0NjUyNDUzNmEzYjRlZDIwNTFjYjNkIGxlZ2FjeS10cnVuaworNTQ2MDAgZWZkY2U4ZDhkYjk5MDAyOGE0MTJkYzc3MThlODQ1MzBhYmYxMThhYiBwM3lrCis1NDYwMSBmOWRmYmI1ZDM1YzJmMzJlNjIwZjRkNDI4YTdhMWNmNWNhNjgwYzgyIHAzeWsKKzU0NjAyIGI4OTdiNzdhMDA0ZjdhNThkODY3MjBlOTI1MjMyMTlhZWYwM2Y0NTMgcDN5aworNTQ2MDMgMzllNDM4NmQ3MWY2NTI1YWI2NTQwNzgzNzNhNDU2N2ZhMjk4MGVkZiBsZWdhY3ktdHJ1bmsKKzU0NjA0IGY1N2U4ZTMyNTQ3NWVjNTA2NjM4YjA0NjUzMGU5MzU0OTVkZGNjZGYgbGVnYWN5LXRydW5rCis1NDYwNSA1YThjYTlkZDg5ZGIzNDdjZmUyODdmZTVkOTNlMDZmNmY3MjFhMzZlIGxlZ2FjeS10cnVuaworNTQ2MDYgZTMzNDlkNDEyNjgxZWU2ZjBmNDE4MmIxZWZlY2QwNWJjZDk3MmVlZCBsZWdhY3ktdHJ1bmsKKzU0NjA3IGZhMjE4MWJkMjcwNDliZDhmYTNjOTEyNDI0NGY5ZGJjOGM2YmVjNTUgcmVsZWFzZTI1LW1haW50Cis1NDYwOCAzZmQ4ZjA2NTc3ZmZmOWE1MTA3MjBhOThjZTJjMjc2MDY1YTAyMzMxIGxlZ2FjeS10cnVuaworNTQ2MDkgNTE5ZTcyZDYzMGQyMDg3Mzg5NmU2ZTRkNjdhMWE4NzE3MGY1MDk1ZiBwM3lrCis1NDYxMCA4OGMyYWM1OTA0NDFjMmU1M2NjNjA2Nzk0Y2Y0ODEyNzA0MmYzOTBkIHAzeWsKKzU0NjEzIGNjZGM1YjNiOWIxMTdhYzlkYWI0ZWRhMDg5ZGY0ZGEzYTc2Y2MxMmMgbGVnYWN5LXRydW5rCis1NDYxNCAzNzhiMmY0N2U4MDhmNzEzMTFhMDZhZTE0ZGZjZGI0ZDY4ZjY5MWNhIGxlZ2FjeS10cnVuaworNTQ2MTUgNmY5ZTY5M2Q3NmExODQ4NDhhNGZjMmQ5Njg0NDJlYmU0ODVhZmFhZiBsZWdhY3ktdHJ1bmsKKzU0NjE3IDhlM2M3YTVhY2JjZGYwMDE0N2YyM2JhMjBiMzI0ZWE2MWI3OTU3MzAgbGVnYWN5LXRydW5rCis1NDYxOCA4M2UxYjA2MTE3MTQ2YzZkZjg3YjFhMGExMWYzYTg0MzFhOWE1NTNjIGxlZ2FjeS10cnVuaworNTQ2MTkgNGU2MGUzYTYwZjUwNGNiM2MxYmQzOGI2MWQwOGJmNTAxNTdkYTcxYiBsZWdhY3ktdHJ1bmsKKzU0NjIwIGE1MDc1YTUyNzNkZjc4ZDRiMTk3ODQ0NzI4MWYyZWFjZTQwYzVkNjIgbGVnYWN5LXRydW5rCis1NDYyMSBjZGIyNTc5OGNmMGJhMDVhNGRkNWJhOGVmMjA5YzdmYjI0YmE5MmM0IGFtay1tYWlsYm94Cis1NDYyMiA1ODQyN2UxZTUxYmRjNjA2ODlmZDQ4ZDdhODFiOTNjOGI1ZGViYWMxIHJlbGVhc2UyNS1tYWludAorNTQ2MjMgZGM2ZTlmNzljYzRhZmJmYzY4MDRhNmNjMDhkOGVkNzk2MjAwNjFiZSBsZWdhY3ktdHJ1bmsKKzU0NjI0IDUwMjYzMjNkOTkyODgzMzQ2MzU4OTkxNTQ3ZGVmYmE2NjY0MjlkYTMgbGVnYWN5LXRydW5rCis1NDYyNSA1NWVjYzNhNDU2ODY2Mzg3MmE3OTUzN2E2ZmI1ZDlkNzdjM2FkMjE1IGxlZ2FjeS10cnVuaworNTQ2MjkgYzFmNjdlMWVlZTU4YjYxOTMxMjc5MDYxNTNlOGZjOTlmMTI0M2VlOCBsZWdhY3ktdHJ1bmsKKzU0NjMwIDM4YTg2MTE4MWZkZDU4YzM1ZDllMzg0MzFmOTQwYTlkYzA3ZDIzYmYgbGVnYWN5LXRydW5rCis1NDYzMSA0MWRiM2YzMGEzZjlmMGQxYzExYzYxMGQyZjFhYTU4YzdiNDE2NWVjIGxlZ2FjeS10cnVuaworNTQ2MzIgZGI5ZWFkYzA3ODI2NDIzNjFiZjQ2Mzc4M2E5NjY5N2M1Y2QwNWYwZiBsZWdhY3ktdHJ1bmsKKzU0NjMzIGY4NjU1N2U1MDNmM2E3ZDEzZWFmY2FkZjAwNjYzYzFmMTU1OGM0ZWIgbGVnYWN5LXRydW5rCis1NDYzNCA5MzQ3ODc0NDEwMzg3OWE4NWI0MzFiMjM5MzI0NWE2NjI5MGE2NzMyIGxlZ2FjeS10cnVuaworNTQ2MzUgYzJiZjNkNjQ2ZWZmYTJiMzI5MDBmNTMzYTlkNzljNDM4YWRiNjhhMSByZWxlYXNlMjUtbWFpbnQKKzU0NjM2IDJjZThlODA1MzljZjc5MTYzYmRhYTA2NTVhNGQ1ZTBkYmNiNDk0NTggcmVsZWFzZTI1LW1haW50Cis1NDYzNyBmYzdmYmNmMmFlNTE3N2FmZGYyNTdjZGE2M2FkNDI4MjJhOGVmOGQxIGxlZ2FjeS10cnVuaworNTQ2NDEgZjIxOWJiN2U3NGM5MjE3MmE4YTliMzQwYmU1ZTU2N2QxZmZlMjg5NSByZWxlYXNlMjUtbWFpbnQKKzU0NjQ0IDdkZWU3ZjdkMjlmMDhjOWU4MDM3YmEzMGUyNzBmNGJlNGVkYjQ4YTIgbGVnYWN5LXRydW5rCis1NDY0NSAyMjExOTQyNDlmYTg2ZTNjNWQxMzE2YjFiNjk4M2VlNGQzNGY0YTI0IHJlbGVhc2UyNS1tYWludAorNTQ2NDYgYjViNzUwY2Y4NWMyMDk1NmU2YmU2ZmM3MjUzYjhhMjA3MmZmNmYyOSBsZWdhY3ktdHJ1bmsKKzU0NjQ3IDY5NmE2NjZkZmU2MTQxNjllNjU3YmY0ODAyNWVhMjllOThjODgwMjEgbGVnYWN5LXRydW5rCis1NDY0OSBlYTZmMmM1ZDI3NDkyZjJjNTViNTk3NzMwODI1MWExOTY2YmM0YWYzIGxlZ2FjeS10cnVuaworNTQ2NTAgZTk1ZDJiY2ZlYjQ2MzFlNjMyYTAzZjQ0MDUwOWRlY2VmYWZlM2FjYyBsZWdhY3ktdHJ1bmsKKzU0NjUxIGFjZGI0ZjNjM2Q2MzIyYTNhOTdiOTAxMGEyZDNjNTc1OTk4NDgwYzggbGVnYWN5LXRydW5rCis1NDY1MiAxYTVkYTA3OGM0MzVmMmY3NTU4MDA1YmQwM2ZlMmMzNzk4MjJjYjg2IGxlZ2FjeS10cnVuaworNTQ2NTMgOTBjNGMzZjA0MjA1NmFmYmVkYmU0NDYwYTlkYzkwZTQyYzljZmQ3NiBsZWdhY3ktdHJ1bmsKKzU0NjU0IDM1YmRjNjFhYzhlYWRlOWYyYmYwNGViOTQ5MjUzNjJlN2E3MTJjMDEgbGVnYWN5LXRydW5rCis1NDY1NSA0N2QwNWYxYWViZGRmYmRjMmUwMGRjODVlNTJjY2Q1MmE3MDFmM2IxIGxlZ2FjeS10cnVuaworNTQ2NTcgODFlNThmMDEwMWRiN2ExMjE0ZTkxMDU1MDcyZjhhYzJmZDEwNGJmMSByZWxlYXNlMjUtbWFpbnQKKzU0NjU4IGY3NjRhNzU1MjE2MmVmYzMwOTM4YjdlZDg4ZTUxYWNkYzMxYmNhN2EgbGVnYWN5LXRydW5rCis1NDY2MCAxMmZmMjA5NDhhMDIyNTczN2M1MjRkZGE3MjI1ZmFjMzcxYjM1NzgxIGFtay1tYWlsYm94Cis1NDY2MSA2NzYwZjM4ZTllZDY3NjFiZGY2OGFhOTEwMDQ4OGRjMGVjYTk2MTMyIGFtay1tYWlsYm94Cis1NDY2MiA2YTNkZDFjNGE3ZGYwMTQxNTU0MWFkOTNiY2E5NmY3M2FjMjZjMzBlIHJlbGVhc2UyNS1tYWludAorNTQ2NjMgNGEwMzg2MGFlMDhiNTcwN2RlZjhjMTY4ZjcxZWY5YWVhNjk2MWQ0MiBsZWdhY3ktdHJ1bmsKKzU0NjY0IGVmNWQzZTUzOTM4NDcyMjA1Y2VlZmU0MGFiYmMxYzQwNGFjMzViYjcgbGVnYWN5LXRydW5rCis1NDY2NSA5OWJmMTQ1NTU4ZDM1YjI1NTljOGU3NzJlNzFiMzI3NTE5MTE0YzAxIHJlbGVhc2UyNS1tYWludAorNTQ2NjYgNDhkOGQ1ZDMxN2FlZTNhYTJjYzY2NDhlY2RlNjFkNDA2OTVhNzE0MyBsZWdhY3ktdHJ1bmsKKzU0NjY3IDM0M2VlZjM0Mjc3NzNiZTA5MDIzMjBmM2RiOTEzNTZlYjUxZjI1ZTggcmVsZWFzZTI1LW1haW50Cis1NDY2OCBlNjg1YmZhNmI0ZWFiODc1MDI0ZDQyMTc1YmQ1NDA4M2Y5MGE2NmQxIGxlZ2FjeS10cnVuaworNTQ2NjkgZjcxZmVlYzdkNTQ3ODlmOTRhM2VlOTlkZjllMzc5ZmQ1NDZmNTU1OCBsZWdhY3ktdHJ1bmsKKzU0NjcwIDg5MGJiOTAwMGNlNTU1MzNmYTZmNTU3MzNmYjYwYWFlMmE4MTBiMGIgcmVsZWFzZTI1LW1haW50Cis1NDY3MSAyMmExNjdjNDY3OGMyYTg1ZWY3YmE2ZGQ5ODQ4YzQ3OGE3ZWMzZDAzIGxlZ2FjeS10cnVuaworNTQ2NzIgODUxMTJkZDUwMDU5NWVlMjMzZGY1MzM2Y2E2MjE5YmJhNDY5MWQ2MiBsZWdhY3ktdHJ1bmsKKzU0NjczIGNmYWM2NGEwMmEzZDgzZTE2MzQ0NGExZGNjZTI3MzYzYTA5ZTQ2ZWEgbGVnYWN5LXRydW5rCis1NDY3NCBjNzM4MTgwNDQ0N2JjM2Q0MTRiMGY5MzNjNDBhNGU0NjM3OTg3NGM0IGxlZ2FjeS10cnVuaworNTQ2NzUgYWMyNTVhNDJlYzBlMWE5MTQzMmZhZGMxYTljZGQ3ZmQzNTkzMTZjYyBsZWdhY3ktdHJ1bmsKKzU0Njc2IGQ0MWQxYmEyMDljOTQyYWUwNzFhNjc1MmIzYjQxMWMyMGI4MzBhNDQgbGVnYWN5LXRydW5rCis1NDY3NyBjYjZjY2U0ZDQyMzJiZjQyOGQyNDBkY2M1ZWRlN2VkMTgwMTQ3NWZmIGxlZ2FjeS10cnVuaworNTQ2NzggZTFhYjI1ZmQ1YmFkODE0NTVmNGM5NGM4NGJlMTM0NDNkNDZiYjdhZCBsZWdhY3ktdHJ1bmsKKzU0NjgxIGRkN2M2OWJkMGM1MmExMzViMzEzNjc0MzVhNzM5MmYxODljNDIzMTIgbGVnYWN5LXRydW5rCis1NDY4MiBlN2Y3OGEzN2FlNTBiMGI5ZjI5MTMzOGIxZThjOTE1NmFjNzhlMDEyIGxlZ2FjeS10cnVuaworNTQ2ODMgYjdlMzc4ZTlkMDJkNTVjM2U4ZGIyY2RmOWRiYzgzNmFhMmJiNTEyYiBsZWdhY3ktdHJ1bmsKKzU0Njg0IDU4NmE3ZTg3NzUwMGUyMGVkZGMyNmU1YTdmZDVjZjk1MDNkYWM0MDQgbGVnYWN5LXRydW5rCis1NDY4NSBkOGNkODhmOTMwOTgwZGUwZjg2ZWNiMDUzNGE0YzAyYWI5MjQwYmQ4IGxlZ2FjeS10cnVuaworNTQ2ODYgYjAwMWI2NTQ3OGZhYmU5ODM2MTA4MDRhZDg5OTM5MjUxN2ZmZmYyOSByZWxlYXNlMjUtbWFpbnQKKzU0Njg3IDQzMjUwMDE4Mjg1YzJiYjIxOTkxODJjYzE0YTEwYzZhYzhjMjhjYzUgbGVnYWN5LXRydW5rCis1NDY4OCA3MTJhMTVlZmNmMTliNzM2OTEyZDNlYWYwMGVhM2JlNjRhZmVkYzA4IGxlZ2FjeS10cnVuaworNTQ2ODkgNTEyZjU2YWZhNGEwNTEzZTcwZDQwNjA1MGNhODcyM2JiNWM4MDFiNiBsZWdhY3ktdHJ1bmsKKzU0NjkwIDRjN2ViYzM5N2Q5NDdjNzEyNmQ3NmJkYmEyMGQ3ZWEzYzQ0ZjIzM2QgcmVsZWFzZTI1LW1haW50Cis1NDY5MSA4MTIwMjdmMWVlYTUzNWEzYTMxOTFkN2UwZWNkOWFmYWYyN2YzOGMzIHJlbGVhc2UyNS1tYWludAorNTQ2OTIgMjhhZWMxMzU4ZjU5NGUxNGJmN2JlNmQ4NmIwZGFiNTI1MTVmYzJkNiByZWxlYXNlMjUtbWFpbnQKKzU0NjkzIDQ3NzdjNDAwN2I1YjE5NDQyMzk1M2Q0MWIxZTVlNmFkYWFiYTZjNWQgcmVsZWFzZTI1LW1haW50Cis1NDY5NCA4MTcwZDQ0ZGQ5MDQ4OGRlMDI3OGU1MTFjMDM3ZGIzMWIyOWRjNWE2IHJlbGVhc2UyNS1tYWludAorNTQ2OTUgODBmZjc1ZmEyNzU0ZWIwZjhiNDVjMDQ3MmU0YmYxMTdkNjFjMWM0NSBsZWdhY3ktdHJ1bmsKKzU0Njk3IDlhNTBlMmI2YjY4NTc0N2Y4ZjkwNTc1NGM5MjdjMWI4NWI2ZjlhNDIgbGVnYWN5LXRydW5rCis1NDY5OCBlYTZmYmY0MDRjMzRkOTYzMWI4MzA3NGNhNDE2Y2VlYWQ3YmE4ZWZhIGxlZ2FjeS10cnVuaworNTQ2OTkgNTgxZDEyN2U4MjJiNzE5NDZlMTY0ZWM4N2IxYTE1NjY5MWJkMzVlYSBsZWdhY3ktdHJ1bmsKKzU0NzAxIDkxMjAyODEyNDFiODJjZWMxMDFlYWRjYTVhNjliNGM0NzE1MWM1NzYgcDN5aworNTQ3MDIgYmFkNWY4MzI4MDlmYzI5NDE5MTNlNDBmYzE4ZDliMDJlYTAwYzBlYSBwM3lrCis1NDcwMyA1OGQ0OWNhZTg4N2YyZjlhM2RmYmQ3NjEyNDE5MThkZmE1MWM3ZDY1IHAzeWsKKzU0NzA0IDNiMTM5NmIwMTIzOTM4MjAyOTBmYzMwNTA4ZTEzZTE0OGY0OWFlMTYgbGVnYWN5LXRydW5rCis1NDcwNSAyMzQ4NjlkZDI3ODRlZDBmNmZmYmJhY2IyYTUwOTlhZTMyOGY5NWJmIGxlZ2FjeS10cnVuaworNTQ3MDYgOTQwOGRjZDNjZTg4ZmRmMDJmMWJmODc0NDE3YTcxYjIzYzk3NmY2NSBsZWdhY3ktdHJ1bmsKKzU0NzA3IGM3YjgzMGM4NmY0MmJiZDM4MWNmZjYyZjE5MmM4NTQ0MjcwMGY4YjUgbGVnYWN5LXRydW5rCis1NDcwOCAwMjBmZDZkZTY1MjVkYTM0YzA2YjAxZTJlY2YxNzE5MGYyZjg1NmZkIHAzeWsKKzU0NzA5IGM1NjYwMDU1YjQyNWRkYmFhZDZmYTRiNzk0OGVkMTcwZWMwNjJjZjYgcDN5aworNTQ3MTAgZDhiMTQ5OTRkODcwYjY4ZTRkMGI3NTlkZjEyMzZjOGY4M2I1Y2FmNiBwM3lrCis1NDcxMSA4MGY1ZWUyMWU1NDU1ODdkZDUwYmVmM2NlZjBiMzI4NTg0ZGMzNjc3IGxlZ2FjeS10cnVuaworNTQ3MTIgY2MwMGJjZTZjNTlkMzdhMzc4NDkzMDc2NWUxODYxODM2MGY3MzEyZiBsZWdhY3ktdHJ1bmsKKzU0NzE0IGI5MTI0YzBlZjE3YTMyMThkZTQ3M2M0NmI3OGU2NmNkZGQ5OGViYWMgcDN5aworNTQ3MTUgYWY1MTFkMjQ0NjM2OTNjZjQ0MGQxMWM4ODYzOWJiYWRmY2Q5ZjkxMSBwM3lrCis1NDcxNyBlMjlmYTRhMWNiZDkzMWIzZmVhNzI1MzQwZWM2Nzc4MjExN2Q5YTVkIHAzeWsKKzU0NzE4IGE1NzA3YmY0ZjZkMTQzMzkyZWZiNjFjOGM0OTgwOWVhYzI2YTQ5OWQgcDN5aworNTQ3MTkgMzM5MDE1ZDk4Yjc4NjQyMjU3N2FmZjRiNTU1NTNkMDBlOTU3ZGQ5NyBwM3lrCis1NDcyMCA1MjJiM2YzNWQwZWI3ZGJiNjM3NTMyZGE3N2Y4NWUxNmJmNWMwNTQ4IHAzeWsKKzU0NzI2IDRkNTBmYWQ5NTc2ODIwNjJmNDQ5NzUxNDBkZjk0YjY2YmUwZWY5Y2MgbGVnYWN5LXRydW5rCis1NDcyNyA2NTczZWMxZTVkYzBjZGZmNGFiMjA2ZjdiOTk1ODYyYWMzZmUxYTc2IGxlZ2FjeS10cnVuaworNTQ3MjggZjQzOTFhYmU1YjAyMzQ1ZjIxNTZiYzQzNTdlNTkzMzEyYzBhMmY5NiBwM3lrCis1NDcyOSA4NTQzOTkyOTdmOTU3ZTg1MjUxMmZhNThlNWI0YjdhODU4OWFhOWVhIGxlZ2FjeS10cnVuaworNTQ3MzAgNjdmOTAwZDJmMmU2MjE0ZWM4MTFjMjU3N2YwNmVmY2ZlODkzZWM1OSBsZWdhY3ktdHJ1bmsKKzU0NzMyIGFlNGNlZDI4YTgzOTAyYmIyMWU5ZjMyZTUyNjU1Nzk5NTA3OTUyYzggbGVnYWN5LXRydW5rCis1NDczMyA0Zjc3MDE2MjU0YmM4NGJmNTFmZTI1MDdiYWZmMmY2NTM0NWY3OTAwIHAzeWsKKzU0NzM3IGM5MGQ3NWE1ZTE5MTE0YmM3YWFlYzJhNmNhZWZiNDRiNTg0MzczM2QgcDN5aworNTQ3MzggZDQxMDhhY2E4NzY0MjdhOWFiYTVlYjk5ZDMyY2MzMmM0NTcwNmZiOCBwM3lrCis1NDc0MCBiYTMxZTcxMjEwZDQ2OWQzMzYxNzg2Zjg0NzM2ZDgxNzMzMDBjNmRmIHAzeWsKKzU0NzQxIGU3ZDk3OTEwMTQzMDhhODc1MTlhOTM5YjNiOTUwY2I4ODFjNWI2NjYgbGVnYWN5LXRydW5rCis1NDc0MiA3YzY5NzJmMzdmZTM1MzIwY2MxZmJjYmMyZjU4M2I3ZmQ0NTIwYjU4IHAzeWsKKzU0NzQ0IDA0ODZkZWFhYWRlM2U0MGU4NmFhNWUzMThlNjMxNjJhMDRmOGFhOGIgcDN5aworNTQ3NDUgNDU2MWY2ZGEzYjdkMzk0Nzg2OGY1NTFmYmM3ZWRlZTk4ZTZjNjgxOSBwM3lrCis1NDc0NiA0MDExMGQwNmU4MmFlMjNiNjc5M2U2Y2QyMjljOWE5OTE3OGI0NDU4IGxlZ2FjeS10cnVuaworNTQ3NDcgMTVmMzRhZDQ2ODFiODg1NDVhMzc2YTVlZWU2ZjM3NmMwZTdkZjg3YyBsZWdhY3ktdHJ1bmsKKzU0NzQ4IDczYzAxNjY5NmE4MmY4NGJlYzdjNWQwMmYyZGNlNjgwNGMwMWIzOTcgbGVnYWN5LXRydW5rCis1NDc0OSAyNmNiY2Q3OWExNTMxMDE1NjUwM2U0OTliMjgxODA3YjNhM2MyZTc4IHJlbGVhc2UyNS1tYWludAorNTQ3NTAgMjhiYzdlZDI2NTc0NzMwNWE1MjYxMjQ3ZTVhMjAwMmY5ZmYxMDUxMyBwM3lrCis1NDc1NCA5ODFhMzFmZjE5NjZkZjMyNTkzNDlkMWVkNzZiMDVkMWZjZTBiN2FhIHAzeWsKKzU0NzU1IDAwZDlmNTBiZGMzMWFhOTRjYjE1YTI2NzAyYzY4MWM0MjA2ZGE0YzYgcDN5aworNTQ3NTYgZjM5MDc5M2U3NWRlYzNkOTdhODFmMDFiNjAzMjAxZjM3ZDY5YWZmYSBwM3lrCis1NDc1NyA0NmQwZjQwNTc3MDViMDk3ZTlhMTcwODcxZmQwMWE1YjYyMTFkZDA2IGxlZ2FjeS10cnVuaworNTQ3NjAgMGRmYTJhNTY0MDc2MGU2ODhmNTQ3YzRhNGMwY2FjNWM0ZmYzYjAxYyBsZWdhY3ktdHJ1bmsKKzU0NzYxIDM2NjdkMWE4YzkxNmYxYTNkYzgxYTkwM2UwY2RiZjgzMjZhNjdhYmEgcDN5aworNTQ3NjIgYTAxY2IzZGYzOGRkZjM0NzQxYjI0ODJkYTczZDk5N2VkZDIxMDg0YyBsZWdhY3ktdHJ1bmsKKzU0NzYzIGM0ZjQwM2Y0NTBlZGE2NWU5YTIxNmM3MDlhMzkyZjA5NDBlMDQwYTIgbGVnYWN5LXRydW5rCis1NDc3MiBjZWRjOGQ3ZDFjN2ZlYjUyYjI2ZmViZWQ5ZWNjNzljMjc1NTU2MTQwIGxlZ2FjeS10cnVuaworNTQ3NzQgODZjNDZkYzZhNzc0YWU5NzQ1YTUwNDhlNDQyOGY4MGFlMTc3ZjEzMSBwM3lrCis1NDc3NyA2NWNiNmIxZmEzOTUxZjM0NTA4MGQxYzgyYWI3MzdiNzlhNzRiN2ZjIHAzeWsKKzU0Nzg0IGMzNGQ3MDViODg0ZTRlOWYwNzMzNzliNTFmZTBhY2EyZTVmZWE1YzkgbGVnYWN5LXRydW5rCis1NDc4NSBjMGM0NDA3ZDM1MzFjNmJhZjU0Y2MwODU5NDRkZmVlY2NmN2I5MDYzIGxlZ2FjeS10cnVuaworNTQ3ODYgODQ0NzMxNGY1MDBhOTdjYzU1YzRmZDg0NjlhYmZhYzlmZDEwMzFiNSBsZWdhY3ktdHJ1bmsKKzU0Nzg3IDk1M2JkZWZkODFmZjU1NmFlNjIxZDdmZjg2ZDExODMyOTI0ZDUyNWQgcDN5aworNTQ3ODggMzU2OTU4N2JlZjA2NWViOTAzY2NjOGIzNjIyN2ZlMjhkMzdhMzY2NSBwM3lrCis1NDc5NyA0NThjOGRiMmU5NDYxNmEyYWYzM2M0NzcwMzcxMmM5YTg2MjlmODYwIHAzeWsKKzU0Nzk4IDBhMzg5YjQ3ZjEyOWU4ZjZkMDZlYmI4ZDEyZGNlZjM4MTg2ODE0YmUgcDN5aworNTQ3OTkgZDFjM2RkMTg0ZTM4ODJiOTk0NDI3NDM2ZWJlYWE0ODA5ZWQzNmZkZSBwM3lrCis1NDgwMCBlMmQ3YTRjMzkzNjBhOGYxYzEzN2IwOGE1MWE0NmRkOTY2YmJlMDI5IHAzeWsKKzU0ODAxIDNjMzM5ZGU4MDAxMDU2YjZkMmEwNzRhMjQwOTgzMWE4YTY3OGUxMjIgcDN5aworNTQ4MDIgMzVmOWZmYzZiNTEwZjhmOWM2NmM2NjJjZmIyMjhkNmVlMDM1MjA3NSBwM3lrCis1NDgwNSBiODIyZmJkODVhZmViM2I3YWIyNDc3NDc2NTkwZGM0MmI5NzI3MTI0IHJlbGVhc2UyNS1tYWludAorNTQ4MDYgNWRmZDJmNGJjODM0YjY4MzMzYzVmMTk2ZTAxMDgyMzM1NTUxOTQ1MCBwM3lrCis1NDgwNyA1MzRlNGM3MDdlOTFlNmJkYThjZDMyNTg1M2Y5NjEwMjViNjkwZmViIGxlZ2FjeS10cnVuaworNTQ4MDggYmFiOWMzODE3MDkyNmIzNzZiMTUwMGJjY2UwMzM1YWJlNjkzZTJkMiBwM3lrCis1NDgxMiAwZDFlNDE1ZWMzNmNjZDM2OWU0MDZkMWRiYmU5NzE0NDA0MjFmYjhiIGxlZ2FjeS10cnVuaworNTQ4MTMgODJmMjc5MWI3YzAyMjE2NGFmMmQ4MjNiODViYzNmNDA2YzIzNDRhNyByZWxlYXNlMjUtbWFpbnQKKzU0ODE0IGVhM2NhNDk1ZjMyMTFkM2IxZTg1ZjYwNDBkYjIyYmZkZjgzMGI0ZjYgbGVnYWN5LXRydW5rCis1NDgxNSBlZDgyMDIzOWY4Nzg3NjA2Y2ZiODQwOGI5NGI0MjY3MDQxMzE2M2ZhIHJlbGVhc2UyNS1tYWludAorNTQ4MTYgODQyMzc3MjA5N2M3NGE2Y2MwYWRlZDg3ZmZlNTMyYjQ2ZjM0ZjM4MyBsZWdhY3ktdHJ1bmsKKzU0ODI1IDVmOGE4N2ZiNGRmMzMyZDlmOWIzZTc0YmU0YmI5Y2UxNGU5YWU1MWEgbGVnYWN5LXRydW5rCis1NDgzNSAwNjBjNzlmNmQ5MTk2N2ZlZDNjMjc5NWM4ZGEwOTFlNDRlMmYyMjg4IHAzeWsKKzU0ODM2IGQ2N2I1ZDk1M2I0NTIzYjI4YmI2MWNjMDZhMjM5NTZiMzgxODljY2MgcmVsZWFzZTI1LW1haW50Cis1NDgzNyBiYzc1YzUyM2I5ZDgxNzE2NGU3ZjFkNDRlYzNhZTNlNjFhZTA3OGUzIHJlbGVhc2UyNS1tYWludAorNTQ4MzggNTYyM2UyMzNlOWNjZmQ0N2JlMzk2NzhlMTE3NzkzYTI3MjBjMWYwNiByZWxlYXNlMjUtbWFpbnQKKzU0ODM5IDQ1NzlhMjc0ZmQ2ZTJhNTllZjZmYjQzYzFjOTc5OWE2ZGMwZThhMGEgcmVsZWFzZTI1LW1haW50Cis1NDg0MCAyZmU5MWQyMDFiMDUyMmMxYzMxNzU1YWQyNmRlYjZkODdkNWMxZDczIHJlbGVhc2UyNS1tYWludAorNTQ4NDEgMzFjOTI4MjhhZWZiMWIyNGU5MDA1NWIxNDk3ZTA2ZDllZGZiYTI5ZiBsZWdhY3ktdHJ1bmsKKzU0ODQyIDNlNWZkYjkzYzk1YTdjYzJlOWQ3NjAwYzZkNDE1MmIzNDY3ZTc1NmIgcDN5aworNTQ4NDQgY2M3MDdmMWFlMGI2ZWVkM2QzMjU0Mjc0Y2I1ZmZjNTEzZTcyMTlmZSBsZWdhY3ktdHJ1bmsKKzU0ODQ1IGE0OTg1OWY0NGM0MzBjNjU0MjA2YzdlNWNiNDhkMDA1NTg2NTExYzkgcDN5aworNTQ4NDYgYjVhMmU3NTNiNjgyMzFiMGQxYzNkNTY0ZDg0MmI5NWQ4NDBkNTMwMiBwM3lrCis1NDg0OSBlMDExNjk2NjM2NWUyYjdmNmQ5OGZhNDM2YjUzNWFkZmMwNTZkZmYzIGxlZ2FjeS10cnVuaworNTQ4NTAgYzFjZmQwYWY1ZjU3MzI3MTQ3YzMzNWQyN2U5ZTliYTg0N2FiYTcxYyBwM3lrCis1NDg1MSAwOTA5NzJjMjBhNDcyZTliMmQ1YjljMTEyNmI3MThlNDUyN2UyZWZlIHAzeWsKKzU0ODUyIGEzMGFmODMzZDM4OWI4MjhkZTMzNDViZjQxNzM2Njk4ZWRiNWZlNDAgcDN5aworNTQ4NTMgOTY1NzM5NWMyNWU1OGJjZGVlNjFiZmQ5MTk1NzBmMzQ3MTZjNWI2NyBwM3lrCis1NDg1NCA5OTAyN2MyYjNmZDJkZTQ5YTk2N2ViZTAwOGRhNTQyMmNhNDQ4ZGE1IHAzeWsKKzU0ODU1IGJlYTBhNTU5MmRiM2ZkZTk3ZjY5ZGIyZmNjMTQ1MjBkNTVkZGI5MjkgcDN5aworNTQ4NTYgYTVlNDEwNjM5ZTI0ODYzNTU4MDcxY2JkOGJhYzRiNDJhZDIzMTFjNyBwM3lrCis1NDg1NyA2MWMyOGQ3NzhlMzc5MzJiMzhhYWEwYmQ3ZDM0NjBiNDE4ZjMzMDlkIHJlbGVhc2UyNS1tYWludAorNTQ4NjMgNDkwZDhjMDlhYmNiODE0OTUwYmU3YmI3YTI1YzNmZjIwNDdjN2ViNSByZWxlYXNlMjUtbWFpbnQKKzU0ODY0IDRlMGU4NGY5ZDE0ZTJiNWQyODY0YjFiM2IxZTE1MmQyMGMxMmMwNWUgcmVsZWFzZTI1LW1haW50Cis1NDg3MyBjMzJjNGIzZGE5M2ZkNGJmZjY0MTdkNjY0MDk4YzRhYTAwZThhYWU5IGxlZ2FjeS10cnVuaworNTQ4NzQgNTg1MjdiOWIyNDJjN2Q0YmQ1MTk4MGRkNWExMGExMWFiNmViZTk3NCBsZWdhY3ktdHJ1bmsKKzU0ODc1IDVhNmQ5MDNhYjdiNWJhNGVmMGQxZDkxZDJjMWIwZWQ2YjFhYTQ4OWMgbGVnYWN5LXRydW5rCis1NDg3NiBkYTQwM2QyYjg4NmFiNThiZjBkZjFjMTFkYzcxZGRjM2RhNTg5N2U1IGxlZ2FjeS10cnVuaworNTQ4ODQgNzZmZDNiOThkMDA3ZjZjNDhjYWU5MTliMzliZGMxM2U4N2NjM2UwYiBsZWdhY3ktdHJ1bmsKKzU0ODg1IDE3ZTQzNjNlZjJiNTMwZjFhYTlhMGJjMTI4NDE4ZWU2M2Y3YzQ0ZTAgcmVsZWFzZTI1LW1haW50Cis1NDg4NiAwZjY3NWE2Mjk3NzBhYTFjMmZiYWQwMDI3YzI1NTkwN2ZiMWFjOTgxIGRlY2ltYWwtYnJhbmNoCis1NDg4OSAwMWU2ZDg0ZTM4OTI0NTI0NzMyMzZmMjNlZWFlZjc0ZWU5OTkzNmFlIHJlbGVhc2UyNS1tYWludAorNTQ4OTEgMTg3OTVkNDliOGQyYWM0MGJkZDM4ODkwMzQ3Yjc0MDBjNGY0NTQ4OSBkZWNpbWFsLWJyYW5jaAorNTQ4OTIgZjQzNjY0ZThhMWZhNGM5ZmRjNDUwZDA1NzI0ZTcyZDk0ZWM0MTgxZSBkZWNpbWFsLWJyYW5jaAorNTQ4OTMgYmZiNmYxMzMyZmI0ZTMzZDVjNzI0YTZiYmVhZjU0NmE1MDk2NjRlNCBkZWNpbWFsLWJyYW5jaAorNTQ4OTcgZjc3N2QxZGQ0ZGNkZGEyNTc3ZDJmYWY0MmQxNDZmYmM0YTljOWNhMiBiY2Fubm9uLW9iamNhcAorNTQ4OTggNmI0NjVjYzAyNWIzZjc1Y2JmYmM2ZWI3ZDQ5MTY1M2RjODhlNjIxYSBiY2Fubm9uLW9iamNhcAorNTQ4OTkgODRiNWFjZWQ1MzU2MTM4OGYzMTE3MzQ5M2Q4YjkwZDViMDM5NjU3NyBiY2Fubm9uLW9iamNhcAorNTQ5MDAgYWY3MjZmYjY4MWZhYWFlYjg4MTY2MjRhYzYxNWNlN2Q0OTlhMjVlZCBiY2Fubm9uLW9iamNhcAorNTQ5MDEgMGI3MDgzMGVkNzQzZmNjYWQ4ZWFkYTM0MDQ3OWU2MWNlM2JmMTVkNCBiY2Fubm9uLW9iamNhcAorNTQ5MDIgYmI2MGI5NTM5ODM5NDFlOTIyNjRiMjdlMWIzZmEyNTY3NGJlYWQ0MiByZWxlYXNlMjUtbWFpbnQKKzU0OTAzIDhjZDA5MzI3NGQ1NzgxMGQ2ZDE2OGEzM2Q3ODZhNWQzYzgyZDZkNjYgcmVsZWFzZTI1LW1haW50Cis1NDkwNCAxY2M2YmYyMzQ5ZTRlMWUwM2NkMDc1ZDZiOWI4OGM5NTJmMmY1MGJmIHJlbGVhc2UyNS1tYWludAorNTQ5MDUgOWE4YzNkOWY0MDVhOGE1ZmM2N2QxN2ZmZDM3MWZiMWEzMzIzYzM4MiByZWxlYXNlMjUtbWFpbnQKKzU0OTA2IDZjNmM4YThhZmIzODFlOGFhNDQ1ZDhiZjc3MDA0NzFhY2NjOGM1NjkgcmVsZWFzZTI1LW1haW50Cis1NDkwNyA1YTQ2MTkyMTQwNDNkMDE2NjMyZWU4NDJlMDhkNTg4M2M2NzlhMDI4IHJlbGVhc2UyNS1tYWludAorNTQ5MDggYWEzYzdiYTUzZjlkMmY0Njk2ZTBlZjIyMGRkMzIzMDA2YTc3ZjhlMyByZWxlYXNlMjUtbWFpbnQKKzU0OTA5IDBhNmU1MzdiOGQ5NmIzNjdhOTQ0ZjY0MWVmZjI5NmE5Yzc2Y2M1MDIgcmVsZWFzZTI1LW1haW50Cis1NDkxMCAwYzUwMTlhZmM1NWI1ZTJhZWNkOGQxZDY3YjY5Mjc5MGUwYjNhZmQ5IHAzeWsKKzU0OTE3IDFlMjhjNjhiNGU0M2ZiMmY5NTZkODgyYjAwMzVkYTQzZjM0YmNkNTYgcDN5aworNTQ5MTggMjgwNGU0ODg2MWJhNjI3ZjQ4OGRlNTY2ZGYxM2I4ZjliOGY1ZmQ1OSBsZWdhY3ktdHJ1bmsKKzU0OTE5IDQ1NjM4YjM3YjgyYzgxMzhlNWQ2NmY1ZDljNTAxZDM2MTAzMmIwNWUgcmVsZWFzZTI1LW1haW50Cis1NDkyMCAzY2NiNGMxNDNkM2I4YjI1M2VmMDE0ZWFjZTFmYmUxMTJiNzY5MzJlIGxlZ2FjeS10cnVuaworNTQ5MjIgM2MyNjcwOTJmMTMxZTVhYjc2ZTU3ZTVmNWI5MWEyOWRkMWFiZmUwZCByZWxlYXNlMjUtbWFpbnQKKzU0OTI0IGY1NTI2ZDJlYjY1NDdiMWQ4Y2FiY2NhMzlhZGUyOWZlMTU5MmVjOGMgcmVsZWFzZTI1LW1haW50Cis1NDkyNSA1NWQ3NjFhY2RjYmNkNDEyZDllZjE0YWNmMTk3OWI5NzUzMGY4YTIxIHAzeWsKKzU0OTI2IDI2ZGY1NjZmODBmMGRkNzhmYzQ1MGZjY2VlYmYzMTA0ZDU5ZDA1NjEgcDN5aworNTQ5MjcgODEwZDMzM2E3M2ExMGRkZTBmNjAzZjVmYWZiNTJhYzVhZGEwZDAwYiBsZWdhY3ktdHJ1bmsKKzU0OTI5IDNjMTIwNWNhNDQyYjZiYzg3NjBjZDhkZDYyMmQ3YTg1OWU2YTRiNGYgbGVnYWN5LXRydW5rCis1NDkzMCBmZDBmYmZmZDZkNTBmNzg1Y2ZkNjA5OWZkZDQwMDU3YTVmZDcxNDY2IHJlbGVhc2UyNS1tYWludAorNTQ5MzEgMDlkZGJhZGU2NWZlZGEzOTAyY2RjZTdhYzZiNjZmYmYyOTI0ZTE2ZiBsZWdhY3ktdHJ1bmsKKzU0OTMyIDkxZjMxMjE3NmVhZjM3OGYwNzg1YTdmM2E5OTNhYmYwNjdmMzY1YjIgbGVnYWN5LXRydW5rCis1NDkzMyBmNDQ2MTkzOGY1MGUzNWJlMzg2NjRmOGIxZTU0NDUyZjY1MTdkYjkyIHJlbGVhc2UyNS1tYWludAorNTQ5MzQgMmY4NzZhNWZmYTBkM2Q0ZjJjNWZiZWIwZTZlMzlkMzg1NTA5ZTA2ZiBsZWdhY3ktdHJ1bmsKKzU0OTM1IGQzNmEzNjFjMDVmZDAyN2QzYjc4MTA2YjhhNTNjNDEwZTYzMWQ4ZDkgcmVsZWFzZTI1LW1haW50Cis1NDkzOCBmNThjMGQxMWE3NWMzMTUzOTZkODEwOGU4YzgwYzlkMDIxZmI5NWNlIGxlZ2FjeS10cnVuaworNTQ5MzkgOGQ1MDE4ZDc1MDhhMmE3YjNhNmIxODdhNDg5M2VmYmM2NWU4MDgxOCBsZWdhY3ktdHJ1bmsKKzU0OTQwIGQwNWQ5ODY0YjYzYzc5ZWM2MWZhMzk2NmZmZjNiN2I1ZWM0ZjlmMDUgcmVsZWFzZTI1LW1haW50Cis1NDk0MSA3ZWE1OTQ5NzE0YWQxNWI4NmUwN2ViNTdiZmVmZTk5OWUxMzZkM2QyIGxlZ2FjeS10cnVuaworNTQ5NDIgYWJmYTcwNTViOGYzMDliMjUwNWE3MjUzN2VkNzA4N2I1YzE1YzI1ZCByZWxlYXNlMjUtbWFpbnQKKzU0OTQzIDdlOTlhZjg2OWM5MTc2ZGI0NjgxYWJiMzU0YThlMWYwYmE4YjlkZjcgcmVsZWFzZTI1LW1haW50Cis1NDk0NCA1MTlmMjMxMzQ1M2I3MWJkODI1MWRkZWFlYmM4Y2NkZjgwNGY2ZWYxIGxlZ2FjeS10cnVuaworNTQ5NDUgYjY4MjcyNDQ5ZGY0YjAzMTFiZDcwYzk0YTI3YTQ3MzUzNmEzNTViNSBsZWdhY3ktdHJ1bmsKKzU0OTQ3IDcwOGM4YzVmYzE3MzIzNmFjZDI4YzA4ZDlmNDU3NWU3YTE0Zjc2ZTIgbGVnYWN5LXRydW5rCis1NDk0OCAxYmIxZmE3ZmQxNzQxYjM3YjFlNzg5YTM3MzU4NDE3NzlkYjViOGQ2IGxlZ2FjeS10cnVuaworNTQ5NDkgNDdhZWIyNDg4MmJkNzlkNWFmYjg5ZDdlMDc2NDk4NDVhZDc0YjFmNCBsZWdhY3ktdHJ1bmsKKzU0OTUwIDNlZTg0OTc0NmMxYmY1YjUzMDBhYTE5YzkyMmU4MjE1NjkzZTUyOTYgcmVsZWFzZTI1LW1haW50Cis1NDk1MSAzNzk3Yjk4MDkyY2VhMmRhOGZkYTY5MmJkMDNlODM1ZjRiMmNjNjJiIGxlZ2FjeS10cnVuaworNTQ5NTIgY2E0ODk4MDRhZTIwMTA2M2Q0MmUyMmNiNGYwNTViNDg3OTA1NWUwMSByZWxlYXNlMjUtbWFpbnQKKzU0OTUzIDRiOWZhODA5MmU4MjcxMDNiY2QxYjFiMmY1Zjk2NzZjZWQ0MGE4MTkgbGVnYWN5LXRydW5rCis1NDk1NCA3ZGVkNzg3ZTYzMTE2Y2M5YzI2YjY5NWNhY2M5NmU5MmNhMDRlMmY4IHJlbGVhc2UyNS1tYWludAorNTQ5NTYgNmM0ZDc2NzhhZjVlMmQxOTM3ZmM4ZmIxNjdmNDFhMjEwNjFjNmU5MyBsZWdhY3ktdHJ1bmsKKzU0OTU3IDEwMDJmNDJlMTBjZGYyZDJiYjVlODFmYjdjY2RjNzkzYjFmODM4MmQgbGVnYWN5LXRydW5rCis1NDk1OCA3MWI1YzFlMmMwOWMyMjFmMTEzMzM3ZWM4MWM4Yzg4NWVlZjJhZWRjIGxlZ2FjeS10cnVuaworNTQ5NTkgMDE5OTA0YzY0NzE3Yzg2ODczOGE4ZGJhZDdiYmU3MzkzODg3MmFiMiBsZWdhY3ktdHJ1bmsKKzU0OTYwIDFmMWZiODE4ODhhZTI4ZTVkYjVkOTM3Yjk3MjNlNDZiMjNiMTE5NjcgbGVnYWN5LXRydW5rCis1NDk2MSA3NjFjZTM5NDZiODZlYjgzNjMxMTUwZWU0YzA3NTgwMjkxMDdhZDVkIGxlZ2FjeS10cnVuaworNTQ5NjIgM2Y0M2ViZmE5MmRjZjIzZDU2NGIwN2FmYWM1MmQwNGYzZWE2NmY1ZCByZWxlYXNlMjUtbWFpbnQKKzU0OTY5IDBmMjlhMWEwOTcyY2RmYTQzZWNkMjQ1ZmNlNDk0ZTc1ZjAzOTQ2MjIgbGVnYWN5LXRydW5rCis1NDk3MyBlNjE2ZmExMzBjMmZjYzNkMDUzY2JlMDdlOTQ2ZDE5Yjk4NDVmZWEzIGRlY2ltYWwtYnJhbmNoCis1NDk3NCAwNzNkNjhjMjkwNDkzODNiMGZjM2Y1Njk2MTM0YjUyOTNmOTQ5ZDJmIGxlZ2FjeS10cnVuaworNTQ5NzkgYjZlOGFkZWMwNTRjN2Q3Y2NkM2JlYTZkMjk5NDY0NzE4ZDAxNzdiOSBsZWdhY3ktdHJ1bmsKKzU0OTgwIDAwYmYxNDc2MDFlNDhkMTVmZTk0MjEwMTkyYjVjZjljMjk2MWU2ZDEgcDN5aworNTQ5ODEgZjc2NjNjNjczNGJiZTRlNDMyYWViZjRiZGE4ZmFlZjZlMDA1N2VmYSByZWxlYXNlMjUtbWFpbnQKKzU0OTgyIGQ5YTQ4N2MyZmE5NjE2MDEwNmRhOGM1OTRmNDM3MzE5NTNkNzM2ZDEgbGVnYWN5LXRydW5rCis1NDk4MyA2ODc3Yjc4ZTgxMGQwMjQ1NjI5ZWVmZmJkZTA5NGY1NmZkZDE5YzhhIGxlZ2FjeS10cnVuaworNTQ5ODQgODkwNWRmNjE3NjEzZTFjMGU4YmYxOGRmZWNkODNmNGYxNzU1MjBhNCBsZWdhY3ktdHJ1bmsKKzU0OTg1IDdjYzMxMDMyZTIwNjNmZTA2MTM4NGY4ZWM1YWYzZjQ3MGYwYzk0YzkgbGVnYWN5LXRydW5rCis1NDk5NSA5MzhjNWFlOGRjMzE0YmUyOTg5M2RiZTBiZTNjZTQyMjMyMzg3NmU1IGxlZ2FjeS10cnVuaworNTUwMDEgMTI2NDlhNzM0YmU2MjgzZTBhYmFkZjBjN2Q5N2U0NGE0NDA4OTk5ZiByZWxlYXNlMjUtbWFpbnQKKzU1MDAyIGNjOWFmZWRlZDIzZmNhMTY3MDQwOTYxODA4NDlhYTVjNTQ2NTM4ZmIgbGVnYWN5LXRydW5rCis1NTAwNCBhZGZhYmM1NzM2MWQzN2M5OTk5ZmMxNWU0YmNkNWZiZTNjYjVhN2NjIHAzeWsKKzU1MDA1IDA2MTQ1ZmJjN2FiOTMxODM0MDRmZWQ2ZjhjNjNhZTQzMjVmMzc4MjQgcDN5aworNTUwMDcgMjcwMDg2OTk0ZjQ4NGU5NjE5NTMwY2I5OTRhODcyYjE5NmNiYjlhOCBweTNrLXN0cnVuaQorNTUwMDggYTZhNDM2YWFlZmRiZWVlZTI4NThkZTUwYjc4MTQzYWQ2Y2YxMWVjMSByZWxlYXNlMjUtbWFpbnQKKzU1MDExIDc2ZTM3NWFiNzUyNTc0MDYyNjgxNTZiZmMwNjMwYTNhMmZiZDNmNTAgcmVsZWFzZTI1LW1haW50Cis1NTAxMyAyOWFlNjY3ZjMyMzk0MTE2NDc4MDZjMjc2NWExN2QyYzVhMzI4OTk4IHB5M2stc3RydW5pCis1NTAyMSBhZDFkNTZjMDc0MjMzOTZmMWJiNmVkODNmNDQyOTg5YTBiYmY0YTI3IGxlZ2FjeS10cnVuaworNTUwMjIgNTIxMTYwYzliMzY5ZDA0YTljZjk5OTQ1NjU4M2M2MTUwMjkxNDk5ZCByZWxlYXNlMjUtbWFpbnQKKzU1MDI0IDRmODAxYTc1ODkzNmQ0NDY2NDQyYjE1MTJjNGYzMzU5MDRjYzg2NDYgbGVnYWN5LXRydW5rCis1NTAyNSA2YTU2YWVkYmUyODA4YTNhNmI5ODEwYTE2MjE5Nzg3M2Q1YjllZjIzIGxlZ2FjeS10cnVuaworNTUwMjYgODczZGZiNTJjMzM0NjA2YTA5YmMyN2VhZWM5NTQyZjA1ZDQ4MzA2YiByZWxlYXNlMjUtbWFpbnQKKzU1MDI3IDgyZTc5OTgzY2IwYzI5OTg0ODlkMzhlNjcwODVmNDQ5NDAxZGJlY2QgbGVnYWN5LXRydW5rCis1NTAzNiBiODZiZDc3ZDNkNDA0MGUzZDE1ZDQ2M2QxYTcwMGZmODQxYjExYWViIGxlZ2FjeS10cnVuaworNTUwMzcgYmM3YTAzNzlkM2IxOGViM2I0MTczYzQxYzZhNDEyYmY3ZmJjMTBiMyByZWxlYXNlMjUtbWFpbnQKKzU1MDM4IDg2YTIzMmVhOGJhNDVkY2ViZjRlM2UxYTdiMzRjYjY0NDM2N2UyNjYgbGVnYWN5LXRydW5rCis1NTAzOSAwMGZlNGJiMDI5MzY0ZDdhMWFlMWVlY2I2MWExYmZiOWU0OTZmMTI0IHJlbGVhc2UyNS1tYWludAorNTUwNDEgMmIyZDU3ZDZjYzdlYjgwNWU1ODU5N2EzNmI3NGI3MjE2MTkyMzJhNiBsZWdhY3ktdHJ1bmsKKzU1MDQyIGQzZGYzMWQ0NTQ1NzFiYTg1YmI4YTZmNTg2NmI1NjE3ZjZmNjA4ZTEgbGVnYWN5LXRydW5rCis1NTA3MCAzNzY5YTUxOTYwMzVhMzA3NTA4NGMzODljNzczYzE1MDVmMDhhNjQ2IGxlZ2FjeS10cnVuaworNTUwNzIgZTUwZDgyYzQxOGE3MmZlNDUxZDdmZTg4MjE3MzFlYWM0NDgyMmJhNyByZWxlYXNlMjUtbWFpbnQKKzU1MDczIGEzYmY1NWEwM2Y2NmY3YmIyYzQzM2UyMzg2MmFjYzI2NGMxOTZjYzUgcmVsZWFzZTI1LW1haW50Cis1NTA3NCAzOWU5NTM4MDUxODQ5MzdkNGE2ZmZiOTY2MDFhODY2M2I5ODllM2QyIHJlbGVhc2UyNS1tYWludAorNTUwNzcgZWFiMjk1ZDkzYzhlNjUwNjkzMGMyNDE2MjAxNmNlN2Q5ODJiY2E3MSBwM3lrCis1NTA3OSBiZWFjZjQwYjU5NjA3YTYyYmU5YjY3Yzk4ZTJiYTA5NTJjYTY4NmY4IHB5M2stc3RydW5pCis1NTA4MCA5ODBmZjBiMWI5NTc4NTU0ZGZiM2E0MWE0NTRmNTRmNmNhNDNlNzBhIGxlZ2FjeS10cnVuaworNTUwODEgM2Q3MmMxMDkxZTVhMzliYWVlYjhhODA4ODMwZmE4M2UyNTBjMWE5MSByZWxlYXNlMjUtbWFpbnQKKzU1MDgzIGJjNmEwZmUzMjM1MTdlZDQ4MjVlN2UyZTJhZGFmOWZlNWVjZDNiMDAgbGVnYWN5LXRydW5rCis1NTA4NiBkNzA1NjU0NTdlYWJiMDRlODI4NDFhNWUxODcwYWYwY2I0NjIzMDZhIGJjYW5ub24tb2JqY2FwCis1NTA4NyA3YTRmMTc0ZGY4NDQxMDk0ZDM4NjI4Y2JhZWYzOTVkYTllMTk3MGVjIGxlZ2FjeS10cnVuaworNTUwOTAgYTY4NDY3Y2MwNmQzYjRhMDUyZmQyZWJlMTNlM2Q4M2Y5OGE1OWYwZSBsZWdhY3ktdHJ1bmsKKzU1MDkyIGU5YmVmNWI0MjAwMTU1NGRhMDg5MGQ3OTEzYzg1ZTQyMDQ0NjM2OGUgbGVnYWN5LXRydW5rCis1NTA5MyAyNWNjMWNlZTVlNjkwNDFhZDAwYTI3YzJiOWEzNTE3ZjIxZDI4OWU1IGxlZ2FjeS10cnVuaworNTUwOTQgN2I3NGExOTc2MDliODYyMTg2MDdhOGY1OWQ0YjU2NmM1MDBjNGVkMiBsZWdhY3ktdHJ1bmsKKzU1MDk1IGMxZjZmOTg0OGIxN2NjMThlNzhhMTY0ODRjNTY0Y2UzYTM4Y2E3NjIgcmVsZWFzZTI1LW1haW50Cis1NTA5NyA4MjVkOTY2MzM4ZWE3MDAwNjFiM2Y1ZjhiZDBiNmVmNDQ5MzM3OTJkIHB5M2stc3RydW5pCis1NTA5OSAzNjhmZWQ5YWY3NjE3OTkxMTU3NzQ0YTJjNzMwOGU2M2I2YTc0ZWZiIHB5M2stc3RydW5pCis1NTEwMCAxNWI4MTBlMjFmZTlhOTBiNDE0YWEzNzk5YTY0MGNhNWQxMTNiMjYzIHB5M2stc3RydW5pCis1NTEwMSA5YjAxZGZkMDNjMjk0OWMwYzk2NGQzNjYzMDUxNWM1Y2NhYmJkMmFjIGxlZ2FjeS10cnVuaworNTUxMDIgMzdkODJiZWU3YTE2MTVjYzVhZmRjYjMyNTRiZGU0MWFhM2MwNDU5YiBsZWdhY3ktdHJ1bmsKKzU1MTAzIDFjMTcwNWJmMzZiODhiN2Q0MWI1ODMxMzEzNjgxYmNiNGExNTAyNWIgbGVnYWN5LXRydW5rCis1NTEwNCBhODVkNzE1MDA5ZWNjMWE4MGU1M2M1ZWEzNWRiZWYyZGRlNDE1MjMzIHB5M2stc3RydW5pCis1NTEwNSAxZTVhMmEyYjE4ZWVkYjg5Y2NhN2U4MzFlYTcyNjc2YmZhYTg2NDJiIHB5M2stc3RydW5pCis1NTEwNiBkYzVhMTU2N2FmOTg0ZDVlNmZjYzg5Y2JhYmZiZjIwYThkMjI1ODA4IHB5M2stc3RydW5pCis1NTEwNyBmNmZhNDcwOGE0ZGI0NzExZjljNDM2ZTQyMGIwNTA0NzFiNjNjMGQ3IGxlZ2FjeS10cnVuaworNTUxMDggMmM1NDc2M2M0NTA0MjFkMGJmM2NhYjhhMmVlY2Y3OGRhOGJmODQ2OSBweTNrLXN0cnVuaQorNTUxMDkgY2ZiM2UwMDIxYjNiZjhkMzJiZmFmNzYxN2MyZDgwYmJlMGY2MWNkZSBweTNrLXN0cnVuaQorNTUxMTAgY2IzYzkyMDYyZWM0MDVlOWQ4MTg3MGViYWRmOWYyNzlkZmQ5MGM2OCBweTNrLXN0cnVuaQorNTUxMTEgY2E0NDhjNjA3YjE0MDFjZTgwYjc4ZGM1YmRiZmIyNjhhNmU1Y2FlZCBweTNrLXN0cnVuaQorNTUxMTIgYTE0ZmYzNzBiNjNkOTMyYjZhNTgwYzg0ZGU1N2ZmZTE1ODg4Yzg5MyBweTNrLXN0cnVuaQorNTUxMTMgYWMxNmJlY2UxZTVmYjdmNWU0ZjIxMWY3MDBkZDAwYjY3NWZiNDZkOSBweTNrLXN0cnVuaQorNTUxMTQgYjM5YWJjYmJiYmJhNGI1NDJhYjVlNTI5MjU2MWM1ZWVkNGQ1ODdiNSBweTNrLXN0cnVuaQorNTUxMTUgMWRlNTQ5NDcxNzIxYzM4YTIyODdhZDNhOTRhYTM3MmE3Njc1MzQzMSBsZWdhY3ktdHJ1bmsKKzU1MTE2IDQ5Njg2ZWQ1NmVjN2ZlODcxN2ZiYzhlMjRlM2NmYzM1YTE2OGY3NGYgcHkzay1zdHJ1bmkKKzU1MTE3IDViOGVmOTRiYjgxMGZkMDI3ZDdjNTBkZTE5OGZmYjIyMTNhYTBjNzAgbGVnYWN5LXRydW5rCis1NTExOCAxMTYyNTAyYTA5ZGE3NmIxZWQ4NDlhMWIwMGE2Mzk0ZjRmYmExMDJhIHB5M2stc3RydW5pCis1NTExOSBhM2UzMDAxYjM1YmYwYTE1ZTJlYjUxZGRhZWQ3NjE0NzUwYjJmMGM2IHB5M2stc3RydW5pCis1NTEyMCA3ZjM2Zjk2YjZjNzY1ODZmODM4MjA0NGE5ZDA1ZTI4ZTE5ZDBhN2M3IGxlZ2FjeS10cnVuaworNTUxMjEgMDUyYmYwZGVlNmI4NTQ3MDY0ODAxODBmMzAzZjM3YWNkOGEwZTQyMCBsZWdhY3ktdHJ1bmsKKzU1MTIyIDkyZWFkODdiZjk4NDNjNDFlNzFjNzc2OTNjOWUyNmIwMzI4MTBlM2EgcHkzay1zdHJ1bmkKKzU1MTIzIGU3OGUxYjYxNmM3MmZjODJjZWZmNjE5NTJlOTdmOGRiZjQ5ZWUyMDQgcHkzay1zdHJ1bmkKKzU1MTI0IGE3MzIzYzcyYjVjNzFmOTAzYWNkMmU4OTQ5NGEzNTUxNzgyNzUxMjIgZGVjaW1hbC1icmFuY2gKKzU1MTI1IGJlOTAzOWI1NzRkOTdjZWM5ZWZmMzI2YmFlOTg5NWQ0OGRhMzhlOTkgZGVjaW1hbC1icmFuY2gKKzU1MTI3IGM0OGZlNGRjMzRhOTE0MjMwNmZhODU2MWQwYmEzZTE4Zjc0OWFjOWYgcHkzay1zdHJ1bmkKKzU1MTI5IDIxMzFlMDM3MjFlZmRjOWE3NzA4YjNmMzI0ZWNiYzdiZGUyYmU5ZGMgbGVnYWN5LXRydW5rCis1NTEzMCA1MmI5OWE5MTVmYWE1ZTc5N2Q4Mjg4MzJhZjkxZDZjNTUyMTNkMzM4IHB5M2stc3RydW5pCis1NTEzMSA4Yjc0M2Y1NTU5NjEwOGRjNTc5MTZhYzg4ZDhhNTg4OTczNDI0N2Y2IGxlZ2FjeS10cnVuaworNTUxMzMgMDc4YjRmMmZkZmM5NDc2YTc5YTM5NTY4YTM5Njg1NjE5MTNkNWE0OSBkZWNpbWFsLWJyYW5jaAorNTUxMzQgM2I1N2YwYjdlZGRmZjkxNWVjODRmOWEwNTJiZjA0OGYwYzRkN2Y1NCBweTNrLXN0cnVuaQorNTUxMzUgOWUxZGZjODU1ODkwNWJkYjg3ODBiZWMxOTJiMTI3NmRhODk2MWNmNCBkZWNpbWFsLWJyYW5jaAorNTUxMzYgZTJiMWQwMjIyYWZlY2YyNTFkOTFlMjM5ZDRkMTEzNTkwNGJjZTc3NSBkZWNpbWFsLWJyYW5jaAorNTUxMzggZGY0NjAxMWM1OTM2MjU2ZmM0MDM1MjA2Zjc4N2FjMmI5NzM3ODZjYyBkZWNpbWFsLWJyYW5jaAorNTUxMzkgODY4MDk3MmVkOGYwMzZlYmYyN2IyZWVjOWY4YTNlZjZiYzY2MzUxMiByZWxlYXNlMjUtbWFpbnQKKzU1MTQwIDYxNTc5NWQ1MmI5ZmQ5OGE0ZmEyMWM2NDdmYWI0NDcyNmJkODk0ZDYgbGVnYWN5LXRydW5rCis1NTE0MiBiZTdlYjNmZDM3NzY2MTMwNzFiNmQzY2FjMzgwOWZhZmY3NGNhMzVmIHAzeWsKKzU1MTQzIDI2NmUxMjM5NGI5N2QyZmIzMzRkMWVlN2Y1MGMzZGVjMGRjOGM5ZDIgcDN5aworNTUxNDQgOTQ2ZmQ1NGI0NTdmNWU0MjZhZDBlNzYwMTFjYmQxOTNjMGY5ZTAwNyByZWxlYXNlMjUtbWFpbnQKKzU1MTQ2IDYxYWNmYjgzMTYzM2M4ZTcyZDMzNDM4YTkzYjExNzJmMTMwMDRhMWQgcHkzay1zdHJ1bmkKKzU1MTQ3IDZiN2QxNzgyYTU3NDk5NzBhYmYwN2U4MmIwMjdmNDUyZDM0ZWZmN2UgcHkzay1zdHJ1bmkKKzU1MTQ4IDgzOGNhYjM3OTM3NmU3YmZhMDFmYTZiNGI5MTBjMzRkMzA1Mzk2MzkgcHkzay1zdHJ1bmkKKzU1MTQ5IDEwN2FhY2I5YzU5NTg4MzFjYjIwN2QxZDczZWI0YTBlOTRjZWUxNDAgcHkzay1zdHJ1bmkKKzU1MTUwIDZiYzE1NmQzYzAwZWMyNTNjYjFjMzgxMmE1NWUxNGZiZTkzNjA0YWEgcHkzay1zdHJ1bmkKKzU1MTUxIGUyNWRjZDg3NGI4Mjc5OWNlYzNjNzRiZTk1YjUyODFiMDJjY2JkOGUgcHkzay1zdHJ1bmkKKzU1MTUyIDQ2YjAwYzczZTMyZmZiNTJmZmIxZDNkNmQ1NDFjMjUxMzZjZjNlN2EgcHkzay1zdHJ1bmkKKzU1MTUzIDE0NDBiYmI2NzE1MGE3MDFmY2EyNmEyOGRjMDliYTk1ZTA4NDRhOWIgcHkzay1zdHJ1bmkKKzU1MTU0IGVhNWNjZWU2YjI4NTRiZTJhNThjODM0MTY2OTJiYjgwMjllNThiYjcgbGVnYWN5LXRydW5rCis1NTE1NSAyZDM3NzQwOGE5ODdiY2M3ZWQzOGQ2NGVkNTU4NmYyNmFhNWI3NTc0IHJlbGVhc2UyNS1tYWludAorNTUxNTYgNTU0ZmYyNzE0NWUxNGFmZWM2NjUxZDM0YWNjMWE1MjRiNzVlOTVlZCBweTNrLXN0cnVuaQorNTUxNTggZjMyMDJmZTc4NTk4MTlhNGFlNmIyMzY2NzZiYjQ0ZjU2ZDJlNzAzYiBsZWdhY3ktdHJ1bmsKKzU1MTYyIDg3MjhjZDAxMmJkODdlNzY0MmJmNjFjYWI3MWQyOWJkMzg0NDMyOTIgcDN5aworNTUxNjMgYzc5MWE1ZTJlMDllOGZlMWQ3ZTk4NDAzNDE0Y2ZmMDIwNmI0NGU2ZSBweTNrLXN0cnVuaQorNTUxNjQgMmRjYzA1YTgwOTA1ZmVlNDZhZTU2YTk5Y2RmOGUyY2U5YTMwY2MxMyBwM3lrCis1NTE2NSAwYzNhMzE0ODIwOGUwYjk2NGY1NjU2MjRiOTM5ZDlkNTljMDlmYjcxIGxlZ2FjeS10cnVuaworNTUxNjYgZDRiYTY2MzI3N2Y4ZmJjMjczNDdlZGRkODJmMmYyMzdhODAyMmIzYyBwM3lrCis1NTE2NyBjMTA3NWYwNjY1MGE3NjFlYjUyOWYwYzg4M2MyMDIzMjk3NmEzODU0IHAzeWsKKzU1MTY4IDVkMDk2OTE2N2Y2ZGI3NmQ3MWYwMzFkYjdiOTAxYjYzODNkYWQ1M2IgcmVsZWFzZTI1LW1haW50Cis1NTE2OSA1NDE3OTUzOGEzODc3MjU1ZGM2NWE4YWY1YWY4YWI2NWUyZTk1NGVmIGxlZ2FjeS10cnVuaworNTUxNzAgNDQzMTAyYmY1ODk1MDU0N2FiODdiYWJkZWE3NTVlMDljOGM4NmI5YyBweTNrLXN0cnVuaQorNTUxNzEgNDExMDI3M2EyNjExMDlmMjQ2NjcwOThjMDc3ODRhMzljNTMyNTgzMCBwM3lrCis1NTE3MyBiZTFlNzA4ZDVkM2RmMTViOGYzYmZmMDE5ODFjZmM1ZjQ4ZTExMGU1IHJlbGVhc2UyNS1tYWludAorNTUxNzQgYTUyMzRmM2M3NTUxMWVkMmJjMGRlNDJlOGNmZWMyYjM2MzllYWE0YiByZWxlYXNlMjUtbWFpbnQKKzU1MTc1IDg0M2QwY2NiMDA5NGRmNzhjZTcyNDNiMTkzN2E2NjhlYWEzNDZmMzggcmVsZWFzZTI1LW1haW50Cis1NTE3NyBmZGZkZWUxOTFhNjEyYjk0YjMzMTI0YTY0MTllYzMxMzA3NDY0NjNmIHJlbGVhc2UyNS1tYWludAorNTUxNzggMjA1ODcxYzk3MTVkYjYzYzExN2ViY2QwY2Q5NGFmZDhkZDM0OWFjNiByZWxlYXNlMjUtbWFpbnQKKzU1MTc5IGExNTNmMjE0ZmExYjg0MDhkNTQ1MzY5ZWU1NDBmNWRlZDk3MWM2ODcgcHkzay1zdHJ1bmkKKzU1MTgwIGE2ZWI2YWNmZTA0YWMyYmYzMDQ0Mjg1YWVmNTUyYzBiN2RmZTRiZWEgcHkzay1zdHJ1bmkKKzU1MTgxIGM2NTY4NTUwYjFjNjEwZGM0YjVmODc3ZTU3ZDQ4YTJiZWIwNmIwYzEgcHkzay1zdHJ1bmkKKzU1MTgyIDhlN2M2MGIxMzU2YjczODNmYjNjYzk4NDk4NDMwMWFkNDM2YzRlODkgcDN5aworNTUxODQgOWNjNGMzZjBiNTgwNzVhNDM4M2UyMDQyZWMzZjgwNmJiZWViN2RlNSBweTNrLXN0cnVuaQorNTUxODUgNzA0NzJjMTU3YmI5YzAwNTM4NGU3OGRiOTVkYjY2YjViMmNlN2MyMiBweTNrLXN0cnVuaQorNTUxODYgOGY3N2Y5NjA3MTEzODgwNWMyZmNjZDBmYjMxZjYyMDliNWZhNDk1NCBwM3lrCis1NTE4NyA2YTAxNmYzZTAwNTE2NjdjM2UzMjQ1ZjFlZjc4MWQ5ZmE4YWM1Nzg1IHB5M2stc3RydW5pCis1NTE4OCBjODQwMDA5NmQyZDcxYzhmNTM3YmQxYzhmZGQwZWZmODVjN2ZmNzk4IHB5M2stc3RydW5pCis1NTE4OSBiYzZhZDYzY2Q1ZjFmNmUwODc5YjNkMmU4MGVlN2EwY2Q0Mzg3NGFhIHB5M2stc3RydW5pCis1NTE5MSAyZDllNThjNWFkMzQzZDQ0MTQ0OGI0NzEzOTA0MWQ0ZTY2YzRmMGJmIHB5M2stc3RydW5pCis1NTE5MyAyM2E4YjNkZmJlOTUzNzEwZmRjYzY3ZjA3ZTA4ZDExZDc1OWExZmVjIHB5M2stc3RydW5pCis1NTE5NCA0NGViYWU0ZjYxYzRhMmIwMDBlYzUzZTkyNDk4NTczZjQ4M2FkZmFhIHB5M2stc3RydW5pCis1NTE5NSAwNTBjOThjZDQxYzRmNzRhY2QyY2U5M2MxYjNhMDc4YzNmOGU5ZDZhIHB5M2stc3RydW5pCis1NTE5NiA1MjUzMzM3MGYxYWQ0MDNjMjMzNjYxZjJmYWIwMDUyMzY0NTlhM2MxIHB5M2stc3RydW5pCis1NTE5NyAzNzBiOTE1MzNjNTNkOGMwMDg1OTQ1OGUzODU5ZTljZjRkOTZlZDk1IGxlZ2FjeS10cnVuaworNTUxOTggZjBkYTFiN2I4ZTVhMmFlNDlkZGIzMjlhZWM3YjgxZWFmNjlmMDNkOCBsZWdhY3ktdHJ1bmsKKzU1MTk5IDc2ZTYzZTAzMzM1NjA1ZGM2M2FkOTI0YjhlNTllY2U2OTUxNmZhYzIgcmVsZWFzZTI1LW1haW50Cis1NTIwMCA1YzcyODUzNDk3MGMxZTI2MmE3OGRjMGVjNDgwNDg0MDljNTRiYjcwIHJlbGVhc2UyNS1tYWludAorNTUyMDEgN2ZlNmFmY2JkM2YyYTZhNjc2ZDkwMjI4ODY2Y2NjYjE4ZjM4MzE4MCBweTNrLXN0cnVuaQorNTUyMDIgNjUwZmY4ZDdjYzM4MGFhMTQ1ZWRmNjhmYWRmZmUxNmViZTYxZDY1ZiBweTNrLXN0cnVuaQorNTUyMDMgM2E0ZjA2YmMyNTRiYjVlZGRiMzg4NmJlNmRkMTUxNWFkMzk3ZDYzNCBweTNrLXN0cnVuaQorNTUyMDQgMDJlNjk4OTg4NTIxYTk5NTc4NTdhZTM5MmYxMmQ1OGJhODY3NzU4ZiBwM3lrCis1NTIwNSA5YjE0YzFlNTg5MzYxYmNhM2Y3YzJjZTc5NDY5YTk0YWUxZTIwZGVjIGxlZ2FjeS10cnVuaworNTUyMDYgZGQyZDQwN2RjZmQwYzQ3ZDFlMWEwMjIwYWU1OWU4NWM0MzE4ZmE0YiByZWxlYXNlMjUtbWFpbnQKKzU1MjA3IDQ3NWM3YzU0MzdmYzYyYjgzZDBkNzBlOTgzNjg1MGJmNWY2ODFiM2EgcHkzay1zdHJ1bmkKKzU1MjA4IGEzNjNjZWEzMmI5YmFhYTAyYjBmYzM4YjE0M2EyNTUzZjkyNWFjYWMgcHkzay1zdHJ1bmkKKzU1MjA5IGEzMjQ4ZmVmYzBkYzhiNmFlZTA1NmM4NTUyNDYyMzRlMDkzNGQ1NzggcHkzay1zdHJ1bmkKKzU1MjEwIDg1ZDUxY2I4YWU1ZWQ4NTI3ZDYzNTg2ZTE3OTgzOTQzMDI5YWYxODAgcHkzay1zdHJ1bmkKKzU1MjExIDRhOTUzM2U5MzY1ZTBkOTc4MTY3NDEyOTE4MzUwY2U3NzQwNDhjZGIgcHkzay1zdHJ1bmkKKzU1MjEyIGIxYmJlODAxMTE1Mjg5M2NjYzUxOGQ2NzY4NDRlZGMyNTExNWJiNmUgcHkzay1zdHJ1bmkKKzU1MjEzIGQxMjgxMWRlY2Y5NGQzN2Q5OWRlZGVlNjIxODQ5MDZhNzc5MzUxNDYgcHkzay1zdHJ1bmkKKzU1MjE0IDY4OGUyYmMyMDgwMjYzOGFlZDU4ODM1ZWJlY2I4MTdhMTQ5MDE2OGQgcHkzay1zdHJ1bmkKKzU1MjE1IDdhOTZjODY0MDU3NTFiZDllYzk5OGQ3ZWZlZjAyY2NiNWQ3ZTBjOTQgcHkzay1zdHJ1bmkKKzU1MjE2IGRkM2FjMWNkMWM5MTk2ZjMyZDEyNmFiMDMzOGVhMmMxYWExMGUxYjUgcHkzay1zdHJ1bmkKKzU1MjE3IDVmMjAyODZiMGRhOTkzNjI5OGIxNjE2YjhlZDRiNTU0OTMxYzI5MDMgcHkzay1zdHJ1bmkKKzU1MjE4IDI0OGRmYzFiZDQ0YzAyNWJhYzkwMmJmZDczZTEwZTEyOTkyNTE4ZTUgcHkzay1zdHJ1bmkKKzU1MjE5IDI5NzczNGY4YTYyN2FjZGY2ZWJhZDg1NmYwYjU1YTNkZDI0ZWNhY2QgcHkzay1zdHJ1bmkKKzU1MjIwIDkxNWQ1MjQ1NWZmYzRiZmVmYzIyYjZkMzFlN2U5MzYwNDQ5ODc5MTEgcHkzay1zdHJ1bmkKKzU1MjIxIGM0YTk5OTNmMmNlNmNlYWEyMDk3ZjI4NjVkYWE3ZDViOTIxYjYwNDQgcDN5aworNTUyMjIgOTkxNDQ2ZmY2YjE1YzA4YjBkZjJmY2NjNGY0YTI0ZDczYTFlZTc2MiByZWxlYXNlMjUtbWFpbnQKKzU1MjIzIDc3NWQ0NGE1NDM5OTU1MGJkNTkxZTZhMTFjMmE1NDEzNTEzYzEyMDUgcmVsZWFzZTI1LW1haW50Cis1NTIyNCA5ODcwOTE4OWQ5ZTFjMDBhYzk0ZTYxOWFlMGJmOThmNTk1MWMwNmU2IHB5M2stc3RydW5pCis1NTIyNSAxMDQwNTY4ZjkwMmNhMmIxYjg1YWFhMzZkZWZkNzk4NTk3YTUxZjRmIHB5M2stc3RydW5pCis1NTIyNiAxZDMzNDkxMmExMDQwZDlmZTg1NGZlNDgxMDhjMDU1ZWUxNDM2OTAxIHB5M2stc3RydW5pCis1NTIyNyA3NTk0NzA5ZTYzMWIzMzM3ZWU0YmM2ZmVmZjY0NzdlMjQ4NTNhYzdiIGxlZ2FjeS10cnVuaworNTUyMjggOGE4YmYyYzA3NGUwNGYwYmIzMjQ0NGVlNDg4YmIyNTBiMzVlODU1YyBwM3lrCis1NTIyOSBjNWViZjljMjE5YmU0NjUyMDYwYzRmYTExMDI2MmY3YjdiYjAyYTFhIHB5M2stc3RydW5pCis1NTIzMCBmYjcwNWYxOGJmM2Q3NjY1ZjY2OGM2MGIzYjg2N2Y1ZTgxMDczNWViIHB5M2stc3RydW5pCis1NTIzMSBiYWI4YTljN2Y0OWViNjIwMTcyZmJjZTQyNzU4YzI3ODVmNzIwNjNhIHB5M2stc3RydW5pCis1NTIzOCBhNmU0ZjJjYmVmYTliZDBiMzUxYWVmNGM2MzM5YjEzZTU4MzI3YzBjIHAzeWsKKzU1MjQxIDQzNjdiN2FmNzUzMTliZDY1ZjdlNzgxYjllOTlmZWI0MDcwZTI2N2IgbGVnYWN5LXRydW5rCis1NTI0MiA4ZWRkNzQ2MjkxZmVmZGVlNmZkZWMyZDgyNzc1NmZlMGQxM2RhNGI5IGxlZ2FjeS10cnVuaworNTUyNDMgMDJkMjQ4OGZlYzYwY2ExNWNiOWE2NWJmMmM0NWU3YzY3NmU1MjQ4MCByZWxlYXNlMjUtbWFpbnQKKzU1MjQ0IGNmOWRkN2YwZjRhMjBmMDI2YTI5NDdlMGJkMjUzOTQwNzhlZGMxMWMgbGVnYWN5LXRydW5rCis1NTI0NSA2YzRhYTQ2MTFjODgxZGM2MmNlNWE5YzRkNjc4ZTU4MjExMDE1MDExIGxlZ2FjeS10cnVuaworNTUyNDYgY2JhOGM2YTVlY2YwMjYxNjc0Njk3YzdmNWRmNWU0NGYzMTgwMDAzNiBwM3lrCis1NTI0NyBjZjc5ZmVlOGI3MWExMGE4ZDY5OWE1ZTMyMzA3MmQ2NWRjODUyZDliIGxlZ2FjeS10cnVuaworNTUyNDggMDExMjc4MjFhZjc1NjE0ZWE1NzNhNzc5ZmYwNjBmZTcxYjc1NWQzOCBwM3lrCis1NTI0OSBkMjMxNjg1ZTllYTdkNTRhMmRjNGY4YmZkNmMzZjg0Yjg0ZTdhOTMyIHAzeWsKKzU1MjUwIGYyMjNhNDRkYjEzYTY4ODM3ZmU4ZmYwZTEwYTBkNTBiNzY2ZTg0NjAgcDN5aworNTUyNTEgOWI5YzUzYzFhYTVjMDk1ZjA5ZmI5YmJhMzg2ZDVhMTVlNTNiMzE4ZCBwM3lrCis1NTI1MiBkYzM5YmZjNWM3NGU2MjJiYzU0OGIyYmQ1ZWY0NDVlMWJmODUwMWMwIHAzeWsKKzU1MjUzIDgxZDlmNTI3MGU4NzUyZDQ3YzFkYWUwM2M0NTY1MDQyNjI2ZjE3NjAgbGVnYWN5LXRydW5rCis1NTI1NCAzZWVlMDZjYjE1YTNlZTFiZWUzNDQzMWYxOWEwNDVmYjQ5NzIyYzIxIHAzeWsKKzU1MjU1IDdkOThjMTJhMzQ0ZGJiMDMwYzQ4MTQ5NjcyNmM4NTdhOGZiMDJjOGYgcDN5aworNTUyNTYgZDkxY2M4ZDQ5Mjk0ZThhZjQyZTEzNDhiYzFiZTBlM2FiMWYxMzc2NiBweTNrLXN0cnVuaQorNTUyNTcgNDU0OGNlYjMxYzk0OTM5OTE1ZWY3Y2I0ZjE0ZGNjYjA3ZWEwOGUzYiByZWxlYXNlMjUtbWFpbnQKKzU1MjU4IGNkMjQwM2QzNzBlMGY2N2M0MWI2OWZlMjdhMDFmMzc5NTNiYjg5NmMgbGVnYWN5LXRydW5rCis1NTI1OSBiOGZhNGFjNmM1ZjA3YzYwOWRlZjczZjZjODRiM2Y0ODQ3ZDI3NjU1IGxlZ2FjeS10cnVuaworNTUyNjAgM2ZhNDBiNTliOWI2OGUyZmViYmQwNWJlNDcyZjJhNDQ3ZGNlMThmZCByZWxlYXNlMjUtbWFpbnQKKzU1MjYxIDUxYzc0MTIyODk1ODNmZmVhMTQ1MTFhMzI5YTYxOWM0Mzk4NWU1NTcgcDN5aworNTUyNjIgYmNmNTdhMTUzYjExYTU3MGZlMGU1NDU1M2RiZTIwNzJiYTE2YTgwMiBwM3lrCis1NTI2NCBkN2M3ZmU5YjZlOTcyZTkyNTg2NjJhM2RkNjQyZDdkYWNkMmRiZjZkIHAzeWsKKzU1MjY1IDkxNTM5MmQ1ZjBiODY0NmIxNmQ1MTQ0YmI5ZGU3ZDM3NmU5OGNkNTMgcDN5aworNTUyNjYgMzI2NzNiODg4YzI0NGNlMThjY2Y0MWVjZTBhNTk4MDExNTlkMTc4NiBwM3lrCis1NTI2NyA1YTJmNTkyMGNmNzUwZmNkNThjZGRiZjI1OTQ4ZTgwMjU5YTMyOTM2IHAzeWsKKzU1MjY4IDdkNDkwMzhlOTljOTkxNDgxMmQ5Y2U0NDU2OGVmYmYyYjYwMzlhYjkgcHkzay1zdHJ1bmkKKzU1MjY5IGVlNDdmZDVjMGU1ZDc0NjdmZWIyOGVlZDE2MTBmODI1MDBlYzIzY2MgcDN5aworNTUyNzAgZTE2YzhlNWM1Y2E0YzExMWI2NWY5MWFlOWEzODRhOWQ5NzdmMGMyYyBweTNrLXN0cnVuaQorNTUyNzEgMjcxOWUxN2M5MjhkMzY2ODA4Yjk0NGIwY2NjZGU5ZDFlMjMwOWVmMCBwM3lrCis1NTI3MiBkZGM0YmUyNzg2ZmQyNTgzNWRmOGU2NmUzMjQyM2JhODM4YmQ5MGJiIHB5M2stc3RydW5pCis1NTI3MyAyMGI4YjI5NTkzYzBkOThkNGM4MTlmZjRkOGZkMmMxZmQ1MGViMWQxIGxlZ2FjeS10cnVuaworNTUyNzUgZTA2ZTE5NmEwNWNmZjM4MWJjNDZlYzM2NjA1Mjg3NDJiN2I0ZGU3NyBweTNrLXN0cnVuaQorNTUyODAgOTcwNmYzYjQ5MDY3MGYzMTg5NzBjNzZhZTE1MWQ1YTg3ZDc1MWMxZiBwM3lrCis1NTI4MiA3OTkzZjIzYWQ0NmNhNTRmMTBmYjlhYzU5NTAxYzNjZGQ3NjU4MDhlIHB5M2stc3RydW5pCis1NTI4MyBkMjM3ZjQ3ZjI5M2YyOWI5YWE2MDUwZmIxODBhNjFhMjc2ZGY2YmM1IHB5M2stc3RydW5pCis1NTI4NCA5MTcwNDBkZmVjNTgzOGM3ZmQxMTNlNzFkMTFjOWYxYjZkODA2YmU3IHB5M2stc3RydW5pCis1NTI4NSAyNjE3MTMzYzdhZmEyNzM4MzQ4ODI2N2UxOGZmMzE3MjIwMTQ3NjQ0IHB5M2stc3RydW5pCis1NTI4NiA2MDI2YjhhMjZjMDVmZjRkNDg2YzRlMjMyNWU4NTE4MDhlYTBmY2FiIHB5M2stc3RydW5pCis1NTI4NyA0ODJiNTk5MGQyZmIzZGY2ODY3NDU0M2JkZmZmYTViMGIyMTE1ZmEzIGxlZ2FjeS10cnVuaworNTUyODggYzE3ZDc2MGNiNmQwNmYwOTYwYzEzYmRkZmEwYmY4YmFhMmM4ZjJhZiByZWxlYXNlMjUtbWFpbnQKKzU1MjkwIDdiYmI5N2UxNGFkNmVkMTJlN2YxYzRmYjY2MzAxMDIxNzg2OGU3ODggbGVnYWN5LXRydW5rCis1NTI5NyBhNDg5M2M0ODAyNjQ4Yjc3YWMyNjllNTVjZjAzYzVhNzEyYjkzYzQzIGxlZ2FjeS10cnVuaworNTUyOTggOTJlYjVhZTRjMThmMTUxYTU4OTU2YWVjZTI3M2RlNGRhODAwM2VlZSBsZWdhY3ktdHJ1bmsKKzU1Mjk5IGExNjBiNDM3ZmYzNWZlMTY4MjRmYWJiYjY3ZTJmY2Q0ZjU1NzY2MmUgbGVnYWN5LXRydW5rCis1NTMwMSBiNDYwMDg0NDc5OTMzMzkxZjgxOTg0NTlmYWQzZmUzNGIwZGExNTYxIHAzeWsKKzU1MzAzIGI3ZTkxMzZkNGM4MzhmOGVjZmJhN2FlYjQ2MzJlZDk3OGYzOTBlYzggcDN5aworNTUzMDUgN2QyNGE2OGQwYTFjNjE2MzYyMmNmNDc0NjBmMDQ0NjE3Yjg0Mzc1ZCBwM3lrCis1NTMwNiA2NTY2NmVjODNjMmMwMGM3MTNiMjA5MTI3ZWVlOGNkZDhiZDk1MTJmIHAzeWsKKzU1MzA3IGFhZTU0OWViYTcwNzVmNTQ2ZTdjOGUyMTFlNzZkZmMwZmE2MjMzYzggcDN5aworNTUzMjAgYzRkNTdkYzYwYjAxOWI1ZTNlOGZiMjM1YzMxNjVjYTNjZmU3NjZjYiBsZWdhY3ktdHJ1bmsKKzU1MzIyIDE1MjNhYTgyNzE0NjVlOWYyNjU5Y2ViNWQ2YThjOTZkNjY1MDA0MjQgcDN5aworNTUzMjUgZjYwYzg3N2Q1MmM4YTA5N2E1ZDgxMTNmOWRiM2NmZWEzZTJjYjQ2NCBweTNrLXN0cnVuaQorNTUzMjYgYzdmNTQ2NjBlYTE3ZWZhZmZiY2RjYzA5MjQwZmZhNmQ2Yzg3NTAxYiBwM3lrCis1NTMyNyBkNmU2Zjk4MmM2MzdiNjk4MDdkMzg3NDQxZWU1NjE3Mzk5ZmM4Njc3IHAzeWsKKzU1MzI4IDAwYzAyYzQ0ODhjZWY5MTFlMGUyMTM0MDViOGJhZTk0ZTc0NjNmYmEgcHkzay1zdHJ1bmkKKzU1MzI5IGYzMjU2YzhjNzJjYTgxMzBkZTMxYTZjODk3Y2Y1MjU0NDBmY2RlZTMgcDN5aworNTUzMzEgYmM0M2NiMjMxNjQwNDA4OTIzMmFjZDZkYjBiYWU2MzIwMWIyODUxOSBwM3lrCis1NTMzMiA1NTg1MThmZjlkOTFhYjYyNDI2ZDBjZTc2NGFiZDJlMmM0NzI2ZGI3IHAzeWsKKzU1MzMzIDZkZWI0YmIxMDA1OWY5MWNjY2I4YmVmMWM1MjZmMmEwMWM2NmMyNWQgcDN5aworNTUzMzQgMWRiMzE5NDFlMDEzOTFlNzk2ZDg3MjM4ZWRiZjc3MTRmZGI4ZDE3NiBwM3lrCis1NTMzNSBiOWM3MjRkZDcyYzgxOGYxYTFkMzcyY2U1ZjkwNGEwMWYzNWNhNGJhIHAzeWsKKzU1MzM2IGQ4MTNmYzM2Yjk3MDFmNTI0YjRlN2JlZTAyNGE3M2IxMjNlMWUyYmIgcDN5aworNTUzMzcgMWM5YTI5OTY1NmJlMzcxYTFhMjk3Y2Y1ZWIwNjFkOGU3YWVlNzE2NSBwM3lrCis1NTM0MyA5YWQ4NDA3MGIyMmQ4NGYxNzVhM2I4OTAzNjdjZjkwNjkyYjY0MThjIHB5M2stc3RydW5pCis1NTM0NyA2Y2EzZDVmM2QxYmUxMzFmZjY2OTdhNzlkZjBlODRiY2E2YzQ5M2FlIHB5M2stc3RydW5pCis1NTM0OCAzZTFlYjdhZjRlYTBkMjFlN2YxZTkzMDVkZjE3NTBmMTc3ZDk1NmNmIGxlZ2FjeS10cnVuaworNTUzNDkgMmI3MTEyYTYzNTcxYjJlZTBjNDk0Nzg0MTJhM2I4ODg4N2ZjMzE4ZSByZWxlYXNlMjUtbWFpbnQKKzU1MzUwIDI2MzQ5YTY0ZWY3MDE1YmMyMGI5OTMyMjlmMzUwYzRmYmUxZjdkODAgcmVsZWFzZTI0LW1haW50Cis1NTM1MSBkM2NkMjkyMGJlYjY4N2JmMjE3MWVmNzk2MTM4MGQzMTZiY2QyMGQ4IHB5M2stc3RydW5pCis1NTM1MiBjOWM1MmI4N2MzMGI1ZmIzM2FjM2FmOTQ5ZmMwM2Q5Njg0MTFkMDA3IHB5M2stc3RydW5pCis1NTM1MyBhOGI3YTgxNTk5ZDA0OGFhYTE0MjRkNjU0NTE0YjNjMmUwMDM0MzE4IHB5M2stc3RydW5pCis1NTM1NCBkMTE0NmQ0ZGI1NDk0Njg0NGY0OTk4YWY4YTA4OTJiOTY2NmI4ODUwIHB5M2stc3RydW5pCis1NTM1NSAyMDI4NmVjYTQ3NDMxNWE5NjNiMWY2MTIyNDE5NDU2MzdhZTU1NTFkIHB5M2stc3RydW5pCis1NTM1NiA0MzBiNmVkODAxNDhlOWIwMDkzZTlkMGNjOTdiYjkyMzE5ZjkyYmU4IHB5M2stc3RydW5pCis1NTM1NyA2ZWE5MzcwMGQ3NzkyMDcwNmZjYTU0ZjBiMmQ3M2VjNjA5YzFmNmIzIHB5M2stc3RydW5pCis1NTM1OCAyOTY4NTk3MTE4YzEzOWM4YmI3YjM3ZWQ3M2IwM2UyM2M4ODRkMzJhIHB5M2stc3RydW5pCis1NTM1OSAyOTM3ZjUzNzEzMmVhM2ZmZTQzNWZlOTUzNGQ2NjAzZDgwNGZjZDNlIHB5M2stc3RydW5pCis1NTM2MCBjN2IxNTVhZDM3OTExOTA0ZTUxYzg1ZmVmNGM4MmExMDY3ODFjYmQwIHAzeWsKKzU1MzYxIDM3ODdhM2ZiYzQ1OGQ4ZGJiOWM5N2FjYjJiZjI3OWZhOTFkN2Q1OWEgcDN5aworNTUzNjMgNzhkNzY0MzVkYTlhYzljZTNmMmEwMGVjNWVlNzk0ODlhNjQ2NmJjOCBweTNrLXN0cnVuaQorNTUzNjQgYmJiMDk5ZDRlYzgwMjRiZjgwMGUwMmMwNjM1ZjI4Yzc5ZDE3YjE4NSBweTNrLXN0cnVuaQorNTUzNjcgMDUyZDU1ZThhZjc3MzBhNzRmMjUwODJhNzE0M2QxNzQzODYyMjhmYSBwM3lrCis1NTM2OSA5MmY3MTlmYTliMTZlOTBjYWJiOTU1YTQwYzE1NjVkNDQyYTY3MDU5IHAzeWsKKzU1MzcwIDRlNDFiNzJkYTBmYzY2MzcyNDFmN2MzZWEzNDRiN2QxMWYzMGNiZjAgcDN5aworNTUzNzIgMGFkNjk1MWMxOGY3YzU3ODJiY2M2MjdkZTRiNjRmOWM2OTdmOGUzMyBsZWdhY3ktdHJ1bmsKKzU1MzczIDY5ZTFmN2VjMGNlOTE2ZjFmNmUyNTEzOTRjNmI2MWY1YmMxZmYxOWQgcmVsZWFzZTI1LW1haW50Cis1NTM3NCBkMGMwNzY2Njk3MzJmZDJmODRmMGFjODM4MzEzZDAyNzI4NWI3YzQyIHAzeWsKKzU1Mzc3IDA0MjRhOWZhNGIwYjRkNGNmYzM2OGU4YjA2NzI3ZmUxZDExZWJkZjMgbGVnYWN5LXRydW5rCis1NTM3OSBiMDE1NDZmMzZhMjI2MzA0YzkxOTU4M2YzY2I3NzdjMjZmOGJmMTNjIHAzeWsKKzU1MzgwIDA3ZjA4MzIyOTdiMWU3MmU1ZmZlNmFlNjQ2OTg0ZWY5NGUxOTExOWMgbGVnYWN5LXRydW5rCis1NTM4MSBjY2E5ZTMyZWU1NTAxYmQ4ZjhkZDNkYzFhYzM1NmY2YWYwMjFmMDYwIHB5M2stc3RydW5pCis1NTM4MiBkYzZiNWYzNTVkNWE4Y2JiMTVmNWMyM2I3YTU0MGZhMjBhNjhiMmEwIHB5M2stc3RydW5pCis1NTM4MyA5YjgyOTNiZjhmZWM4YmZmOWQzOTg5NjgzMTc3MjdiZGQ2MzczYmM2IGxlZ2FjeS10cnVuaworNTUzODQgNzU4MWVjMTYyMzBlZjE4MzE4M2FlYmFhZWMzZGE2NmE3NzkyZjk4NiByZWxlYXNlMjUtbWFpbnQKKzU1Mzg1IDYxYzRjMjIyYTMyNzBkODMxMjVkY2EyNTk0NTAwNmViMzNkYjdiYTggYmNhbm5vbi1vYmpjYXAKKzU1Mzg2IDZmMTI5M2FiM2FjNDhlODM2NmVhNGZlZjIwNDVkYWYxZTYzNTRhYWQgbGVnYWN5LXRydW5rCis1NTM4NyA2OTNiOGQ5MTQ3NzE3MDgwOWFlOTJiMzU0ZDhjZjQ1OWE0MDRmOGQxIHJlbGVhc2UyNS1tYWludAorNTUzODggMzg4ZTRmMjFlNzQ5ZTI3ZGMwM2Y4YTA0NDc1ZWNlNjQyZjg4Nzk3NCBwM3lrCis1NTM4OSAyZWNjMjk2NDQzYzMyYzNjMTEyZjM2YzcxMTIwYTA0NGMyYTI2Yjc2IGxlZ2FjeS10cnVuaworNTUzOTQgNzU2ZTFkNDA0Y2I4NjFiOWUxZGFhMGY0MzAwZDI2ODk0ZDI4ZmNhZSBsZWdhY3ktdHJ1bmsKKzU1Mzk1IGUzZWE4ODFiMTRmZWQyYjUzYjY4NDA5YTQ2MjMwY2RkZWFjOTdiYmUgbGVnYWN5LXRydW5rCis1NTM5NiA3OWRkOTA3ODcwOTFkZmUzZDFlMGM2NDY1MzcxYWRkODMyYmRmZTA0IGxlZ2FjeS10cnVuaworNTUzOTcgY2M2ZjQ3ZjFlMTNhNDQ2ZGQ1MzI3MjhmNzY1MTIxYjNlYmI5OTIxYyBsZWdhY3ktdHJ1bmsKKzU1Mzk4IDZmMGRiYTgwNzczNGFmYzZhZjkwZjQ3MjNhMWUwMDA0ZjhlODg3ZGEgbGVnYWN5LXRydW5rCis1NTQwNiBjMTJhMzA5Nzg3ZDNjYzhmMzk0MzA1YjJiZDVjZjVlM2Q2Y2Y2YjIzIHAzeWsKKzU1NDA3IGIwODVlYjY2YjdmNmRhNmUyNDM3MjNhYmQxMWJhYTMxOTIwMzZjNjAgcHkzay1zdHJ1bmkKKzU1NDA5IDQxYTE4MzBlZWUxNjUxOGRjMzI2NjM5ODAyY2Y1NzFmNjlmNzEyMWQgcHkzay1zdHJ1bmkKKzU1NDEwIGVkYTllNjBjOTc0NTQ3OGJjNjlmMTVjZDE4NWFmYzY0YmU0NWUyMzEgcHkzay1zdHJ1bmkKKzU1NDExIDRkMTVhZDQxNjUxZTRjMGY2OGVjZWQzZmRjNThlZjlhMTM0NjJiNzYgcmVsZWFzZTI1LW1haW50Cis1NTQxMiAxNTExODljNzJhMzcyYjlhMjM0OGZhODdlZDRmM2JlOWEwY2FlMjEyIGxlZ2FjeS10cnVuaworNTU0MTMgYTY3OTZhMjQ0ODFjZTUwMTMzYjdhMzBkYjQ3ZTk3NDM5MmUxMDhhZCBwM3lrCis1NTQxNCA2ODliYWUwNzY3ZTIwYzFlZGJmNmJmN2Y1MDZiMjhmNjg2MzEzYmFjIGRlY2ltYWwtYnJhbmNoCis1NTQxNSBjMjQxMWJkYjYyODZjZmUxNjM2MTAwYzExYjA3ZDgxNzliNTIyOGExIHB5M2stc3RydW5pCis1NTQxNiA2MDk0NWJkYjFiNzU0ODU2YTE5NDczYzEyNDRmOWNkYjllMTdiMmFmIHB5M2stc3RydW5pCis1NTQxNyBiMGI1MTRiYWRmMGIwYmE5ZmM5ZWNhNWNhNzZkN2MxZWU1NzYxNDJhIHB5M2stc3RydW5pCis1NTQyMCAxM2E2YzZiZWY2MDk3MDFhNzc1YjJhNjYzNTY2M2U1OTE3ZmZlZGJlIHB5M2stc3RydW5pCis1NTQyMSAwZWFkMTA2NGVhZDAwMmQ3ZmRlZjk4YWJjNDMzODYxYjRkYzQ4YjMyIHB5M2stc3RydW5pCis1NTQyMiBlZGI0YzkwMjhiZTAwMmEzZWFlMDQ0NDVhZDAyMjM1Zjk3Y2VhMDVhIHB5M2stc3RydW5pCis1NTQyMyAxYTljZDc2MzY0ZTNkNmEyM2NkZmYyMjY5YWYzYTU0ZjM3MzBlNzJkIHB5M2stc3RydW5pCis1NTQyNSA1ZDlkZDFiOGQ5MDhiNzhjYzliYjQyMDg3MjI5OGY1ZDNjZGNmMTE0IHJlbGVhc2UyNS1tYWludAorNTU0MjYgNDdiMTU5ZDY0MGE0NTRkZWNmNmEzYjY0M2NmZGNmY2M2MzlhYmQyMCByZWxlYXNlMjUtbWFpbnQKKzU1NDI3IGY0M2U5ZDFmYWJhYThiNmZiZTQwNjU2NjI1NTgwNmM3Mzc4MDA0N2YgbGVnYWN5LXRydW5rCis1NTQyOCA4ZmU5OGY2MGViNmUzNzk3YzM1NGM0YjljZWQ3MzNkYzBiNjA0NzAyIHB5M2stc3RydW5pCis1NTQyOSAxNDFlMmFlZmZiYWE0M2ViMzhhYjE3MGRiZTM4ZGU4ZDRmZDA5NWI5IHB5M2stc3RydW5pCis1NTQzMCBjZTYwZjQ3YjE3YTI1NDFjOWI0YmQ4MmM4MDA5YTZkMmFiYjZjYWViIHAzeWsKKzU1NDMyIDY1YzNiNDMyZjUwMWI3ZmYzZGU2OTEzZjQyMzRkMWU5NDgyMjM1N2MgcDN5aworNTU0MzMgZDZhYTdlZGYyMTdhNjUyMGU2MjcxODA4MTY3YzgwODY2ZWFlZWZhMCBweTNrLXN0cnVuaQorNTU0MzQgNDdkYzcxNjA1MzQxZDNhOTdkZGRkMTY2ZjkzNmI5ZWI4MjRlN2JhYSBwM3lrCis1NTQzNSA4YWQxYzg4Y2UxYWM2Nzg0ZDc0N2FkYjhmYzFiNjkyMWQyOTMyMGMzIHB5M2stc3RydW5pCis1NTQzNiBiNTkyOTg1YTk1M2ZmOTBkZDc3ZjI3OTljMTIxZDU0OWJkZDY5OWMzIHB5M2stc3RydW5pCis1NTQzOCBiMjlkNzFkNDNjODA5MWYzMjUzMDFmNDFlZTM5ZjI4ZTlhMDkwYTIxIHB5M2stc3RydW5pCis1NTQ0MSA2NTFmYTJjOWMyYWJlNWYzNDNjMWFiZjdkYWJlZmVkNGQ2YWE5NGY4IHB5M2stc3RydW5pCis1NTQ0MyA2ZDhkNjYwNTAwMDNmMWY4ODNlZWQ5YzA2MmMzN2Y2MDYxYjBiNzk3IHB5M2stc3RydW5pCis1NTQ0NSAxMzY0MWFkYmE2ZWNjNjA0ZGY4MDdmYTE4ZDRmNTlhMWVjMmZjN2QxIHB5M2stc3RydW5pCis1NTQ0NiBmMTllNjMxYmUxMDFiN2FmODIyOGU0NzJiZTNhODhmZDg0NDI2ZmRhIGxlZ2FjeS10cnVuaworNTU0NDggNGEzYTYzNzY5ZDM0YTkzNDBkZGI5NTA3NDM4ODdhZjE1ZjkwM2U4OCBsZWdhY3ktdHJ1bmsKKzU1NDQ5IGQ0ZGI2MjZjMjI5MDc2NmI4ODYyYmQ1MGJkMWI2OTU3ZWE3ZDA2ZWUgbGVnYWN5LXRydW5rCis1NTQ1MCAzMTJjMTExOWRjMTQ2YTdhM2I2MWFmZmNiN2RlZDdkNTUxNmQ5ZDdmIGxlZ2FjeS10cnVuaworNTU0NTEgMjk5ODc4ZDYyZTJmNzllNjE4NGZkYTg0N2U1NWVhN2VlYzU2N2ViMCByZWxlYXNlMjUtbWFpbnQKKzU1NDUyIDBmOTNiNzAwYzRjOWYwMWYxMDVlZTUzOTcwYjJiNjhjMGM2NjcxYjIgbGVnYWN5LXRydW5rCis1NTQ1MyA1MTVlMjU2NGVjYTdmYTgxYTlmN2RmM2FkNDdiNmVjYzEyYzAyNTVkIGxlZ2FjeS10cnVuaworNTU0NTQgNGE2N2YxMDM4MzNlYjhjNTJmZjVkNjIyMjk5ZDc1YzVkYThjNjFlYiByZWxlYXNlMjUtbWFpbnQKKzU1NDU1IGYxNGE1YjAwNWExZTJjNGUzOGNkNWY2NTNiZGVjOWIyY2IzYTVjNGYgbGVnYWN5LXRydW5rCis1NTQ1NiBiZWU4ZDAxZWY0MmM3YjEyYWZhOTU5ODYyODI3NjUwY2M3ZGI4YTU5IHB5M2stc3RydW5pCis1NTQ1NyAxMzI2YjBiMmFmYTA5MTUzY2JjODllZjFiZTY0YTg4MDA4NjM0MzlkIHJlbGVhc2UyNS1tYWludAorNTU0NTggYjdmYjk0MmI0MDNlOWU5MWIyYWRiNTZhYmU4OTBmOTRjNTIyYjAzOSBsZWdhY3ktdHJ1bmsKKzU1NDYwIGMyZDMyYjVhZTkwYjNhMzEzZmQ4ZWM3NjczOGVkYWY2YzA0NzI4OTggcDN5aworNTU0NjMgZDFjMzhhZjA2NWJmMzljMTk0ODQ4MDc0NGVjNDMxMTA4NTFmNTZkMiBweTNrLXN0cnVuaQorNTU0NjQgZWNjNjg1OTI1YjUyZDNjMDQzNTk5NmZhYWFhZGIwMmRmNTIzZjI3YSBweTNrLXN0cnVuaQorNTU0NjUgNmQyNDZhYzYzMTk4MmRhNTlhYzJmMzUyNDhmYzllZWI3YTE3MjdiYiBsZWdhY3ktdHJ1bmsKKzU1NDY2IDAwNDEzZjcwY2U1YzNlYmM2OTYyNDQ0NjYzOTM2YTA0ZTI3OTJkMjYgcHkzay1zdHJ1bmkKKzU1NDY3IDc3OWEyMTA1Mzc3NzhkNTRkMDcyMDI1MWU1NzY0MmVlNDU1NmY3ZDAgcmVsZWFzZTI1LW1haW50Cis1NTQ2OCBjMDI4YjI3NzVhOWE0ZWZmYTVkYTA2NjNmOTJjMDJiZmFlZTliOGI3IGxlZ2FjeS10cnVuaworNTU0NjkgNWJlZjJjMjJiZjg1NzA2ZTJiNGFiNGMyMDgxMGNkNTJhZjQzOTQ4ZCBwM3lrCis1NTQ3MCAzMTAyOWY2ZWJjYTJhODdlZTMyZWM3NzhhZDhjMzkyMjQ5NWE2NWMwIGxlZ2FjeS10cnVuaworNTU0NzEgNjdjYjgxODM2MGYwZGM0NzBiNDQzMWE0Y2E5NzI2OTFkOTE2YTNhYSBsZWdhY3ktdHJ1bmsKKzU1NDcyIDYyY2YyY2I3NGUzNTFhNmMxN2ZhZjFjN2Y5MTNlZWVlMjNmNTczZDcgcDN5aworNTU0NzQgYzBlODlkMGVlMGU1YmE4MmJiZTk4Njc0NDhlYmZiOGJiNGIwYzgyZSBsZWdhY3ktdHJ1bmsKKzU1NDc2IDJjMDBhMTkxMDI3MWNiNTdkNDJlMWU1YzdkNzdlMDRkMWQ3ZWJlNjMgbGVnYWN5LXRydW5rCis1NTQ3NyBhNThiYTY3ZmFmMWFiZjM4OTRhYTM1NjMzNjI1OTY5ZTM4M2U2NTMxIGxlZ2FjeS10cnVuaworNTU0NzkgZTM1ZjFlZTIyYWI4ODkzMThjMDcyOGM3NGQ1MjhhNmJmZTVhOGVhYSBsZWdhY3ktdHJ1bmsKKzU1NDgxIGFjOGE2ZGVlZjk3NDBkOGQ1MmU0MjYzYTA2ZmZmYWI3MjZhZGU2ZTUgbGVnYWN5LXRydW5rCis1NTQ4MiAzNWUxOGEwZDEwZjI2YmNmNDAzNDgwMTMzYWY4ZWFlMDdjYWRiNjcyIGxlZ2FjeS10cnVuaworNTU0ODYgZDI0YzllNDMyZDUyNGZiMDJjOTFhYzhlZjg0NDVjM2JmNTQ2MmY3YSBwM3lrCis1NTQ4NyAyNjcxZTA2YmFhNGMwN2IzMTU5OTA0ZDVjNGZhM2U3YmU5NTZhNzQxIGxlZ2FjeS10cnVuaworNTU0ODggOTkzZjhhOWI4YWIzOTk3NDE4NWYzNWYyMzEwNTcxN2Q1MjIzMTNlZSBweTNrLXN0cnVuaQorNTU0ODkgOTQ1N2I5ZjViZGQxMDkzMmZiMmMxMmJjMjg2OGI2YWQ2MzdmM2VmYiBsZWdhY3ktdHJ1bmsKKzU1NDkwIDgxYjE3OGYwYjFlZjM3NzhlZGI1YTVlZmMxYjdiNjM1NzNjZDllNjIgbGVnYWN5LXRydW5rCis1NTQ5MSAzZDNiZjI3NDA5ZTYyMDJiZjhiNDc1YTAwYWFmYmUyMWQ5NDlkMmY4IHB5M2stc3RydW5pCis1NTQ5MiAxNDQ2YjlmY2EwMWRiZDM2NGViOWZjMDgzZjIwY2M1YjRlOWZmN2Q2IHB5M2stc3RydW5pCis1NTQ5MyBlYmIwYjZkNmRhZGEyODAyMWI4YWFlZGJmN2I5NTE4NjI1ZGI2MWIyIHB5M2stc3RydW5pCis1NTQ5NCBlZTI5NTE0NDRhODk2NDY0MTZmYzAzMDhjZTRjM2U5MDY4MmU4ZjYzIHB5M2stc3RydW5pCis1NTQ5NSBhNDA1NzMyYTI2MmRjNzRmMmZiNTBmNmQ3YzMxNTU1YzZjMTY1ZjhhIGxlZ2FjeS10cnVuaworNTU0OTYgZDdmNmQ2ZjQ1NjJlZTYxZTE2ZjA3ZGI2Y2Y1YzE1NGFkYTM3M2RlNiBweTNrLXN0cnVuaQorNTU0OTcgOGUwNjJlNTcyZWE0ZDZhZTYxNTc3OWZjY2NmMjI5ZTg2MDllNzY4MiBweTNrLXN0cnVuaQorNTU0OTggZjk5NDliNjNlYWIzYTEyNjIxOThmYTc1NTdkODJiYmMzYTQ2NDE0YyBweTNrLXN0cnVuaQorNTU0OTkgZDA3ZDM0YjUzZGI1ODA4YzQ4NDg5ODYxMTJjOGYzMGEzYzA1MGNhYSBweTNrLXN0cnVuaQorNTU1MDAgNTBkYWZhMjJiOGE0ZTdiNmI0MDJhOGYzNzc0YmMyYjVlZWNkZTU4YyBweTNrLXN0cnVuaQorNTU1MDIgN2M5ZGRkNGEwODE0NmY2ZGMzYzVjYzdkMDM3NTdjODU3MjhkNDdhMSBsZWdhY3ktdHJ1bmsKKzU1NTAzIDNkMDU4NTg3NjkxZGQ0OWI4YWI4NTRlOGI5NTIwODM5YWM3YTM4NTMgcmVsZWFzZTI1LW1haW50Cis1NTUwNCBhOTIyN2Q3YTM0ZmE4ZTcxNDA3NmE3YjcyYWYxYTlkN2ZjMDM2MWZiIGxlZ2FjeS10cnVuaworNTU1MDUgZWM4M2QyMTA2NWFhMzZmYjFlYmI0MTNkZTlhNTdmMDY4ZGMwZGUxNSBsZWdhY3ktdHJ1bmsKKzU1NTA2IGVhN2FlODkxZjkzODk0Y2FlMGUzYmUxMWRmODY4MzMxZTBhYmNkZjQgcDN5aworNTU1MDcgYzg5NzU1OWE4OWZjOTQ2NWQ0Mjk4ZTIxMjljMmFjOTlmMzE3NzMwZCBsZWdhY3ktdHJ1bmsKKzU1NTA4IGJmYzczZDg0OWUyOGE5ZGViMjAwNmU1ZTc4ZWI0NjgyMWE0OWI4NzAgcHkzay1zdHJ1bmkKKzU1NTA5IGRiNDlhMTI0NzM5ZGVmZTYzMzRhNDI3ZTZiNDE4OWZmMTkzMWViZGEgcHkzay1zdHJ1bmkKKzU1NTEwIGI1YWNhMDI5NWI3OTJmYWE3OTA5NjMwZmM5NDM3OGMxN2NlZDliZjQgcHkzay1zdHJ1bmkKKzU1NTExIGFlNjkxMjI3ZmQzNDM3ZjllN2I0NTM4ZmJiZjc4OWVmMDBiZmViNGUgcHkzay1zdHJ1bmkKKzU1NTEyIDk4ZWY1ZmZjZmYyODQzYjQ1YTU4NDgzNjk0NzdkYWYzM2VmZDk5ZGMgcHkzay1zdHJ1bmkKKzU1NTEzIGRkODBhNGM1ZjQ3ZDA0ZDA1YTYyNDQ3MzQ2NDA3YjhhNWM3NjZjMzMgcHkzay1zdHJ1bmkKKzU1NTE0IDI0YjYwNjIyYjk0NGQwNGRmZTEyZmM2ODI5MTdjYmU3YjkwNjllMzcgcHkzay1zdHJ1bmkKKzU1NTE1IDg0M2Y3ZWZjMDU4ZjIzYzlmZjEyMWMzZmMzZjlkZDg3ZDE0ZmE3YjEgcHkzay1zdHJ1bmkKKzU1NTE2IDhjM2U0MGIxNzliZjQxNGZhYjBiN2JkYTI4Zjc5MmE1YjMxYjYwZjcgcHkzay1zdHJ1bmkKKzU1NTE3IGViNDVmODVjNGM3OTI2M2JlNGE2Mjk1NTFlYjg3ZjQ3NjliMDA2M2UgcHkzay1zdHJ1bmkKKzU1NTE4IGE3YmUxNDhmN2M1NjA4MDY0MDkxZWExMmI2YzgyODJmZGExZTI2NzggcHkzay1zdHJ1bmkKKzU1NTE5IGY3ZjJhNDljMWYyZTU0ZTNjNTg4NGQ0MTU3YTU3ZDYyMWQyYWFiZGQgcHkzay1zdHJ1bmkKKzU1NTIwIDcyZDdjMGYzYmZmZWU4ZjA3ZjQyOWNmMzYyNDVlZDI3YTU1OWUwZTkgcHkzay1zdHJ1bmkKKzU1NTIyIGZmN2JlZmU5MTliNWIxNjZiODA3OTg3ZWM0NzViZmJhOGRmMzcxNTYgbGVnYWN5LXRydW5rCis1NTUyNSBhMGVlM2IyYmEzNjFjM2VlMzM5NDgxNDg1NzI3OTY4YTM0ZmJlYTEwIGxlZ2FjeS10cnVuaworNTU1MjYgNGNiZjk0OTQzNmViNTdhZDZlZmFkZjgxYmY5NGVhYTAyOTI2YjM2MiBwM3lrCis1NTUyNyA4YzM1Nzg5MzRkZjZkYTg3YzI2MTZkMTAzYWZkNmQ2YTkxNGZkNDQyIGxlZ2FjeS10cnVuaworNTU1MjggOWE0NDc1MTQ4NTVmMTE3MWY0NjFhOTQzYThlOWE1ODkzOTY2ZmJkNSBsZWdhY3ktdHJ1bmsKKzU1NTI5IGE2YzkyZGVlYWUyN2YyZmZmZWEwMDNlMTU2NzAyYWJjYzZlZGQ1YTUgY3B5X21lcmdlCis1NTUzMSA4MTQwNzdlN2FkZWUzYWNmNzIwMTgyZjI5ZTg2Y2I3MDkzODZjNmI0IHB5M2stc3RydW5pCis1NTUzMiA3MDlmODJlMmE1NWNiNDU0YzJkNmRiNTVhMjM5NGE0NGFiNjFmMmViIHB5M2stc3RydW5pCis1NTUzMyBhYjM5NjYyZTQ1NGJjZTRiMGU0OTBiMDRhNjVjYTlmNTNjNmU4ZDc5IGNweV9tZXJnZQorNTU1MzQgZTI0MGQyMGRhM2VjOGZlYTg1NTM5NDA3YzMxNjBiM2UyNDgzY2Y5YyBjcHlfbWVyZ2UKKzU1NTM1IGU4ZjYyNGQ0OGRhMmRkZjFlODRlNGViMmZmZTgxNWYwNjEyOTc1NjMgcHkzay1zdHJ1bmkKKzU1NTM2IDU2ZTkwMDcyODkyOTUzMDQ2MWNiMTU3YjdjYWE5NzBjYzgxNGFhODAgcHkzay1zdHJ1bmkKKzU1NTM3IDIzMzIzNzcwN2ViYzk5NzljYTA5MGQ0MjUwMzdjZGI2ODFmNjNhZTAgcHkzay1zdHJ1bmkKKzU1NTM4IGJmZTk1MzA0NmQwNWIyMjZmZDg5NmM5MDcwMDdiYTM5YWRhNDRiYWMgcHkzay1zdHJ1bmkKKzU1NTM5IDUyM2RmMWRlMGE1YzJiOGVjMjA2NjAwOTNiN2Y0OGYzN2MzMDliMmUgcHkzay1zdHJ1bmkKKzU1NTQwIGViMTg4ZDdmZWE1ZDk4ZTQ2NjcyYmVjM2IyMTMzZmNlNTVjMzQ0NzUgcHkzay1zdHJ1bmkKKzU1NTQxIDIxMWRjOWQ2MzY3M2I1ZGM3ZjhmYzRmY2JlNDZlNWMyOTUwMzhjYzIgY3B5X21lcmdlCis1NTU0MiAxMjlmOTY1M2IwYTIzOWYyZDdmNjIxYTM5OTI0YjcxOTI1M2I3YjYwIGNweV9tZXJnZQorNTU1NDMgMWY3ODkxZDg0ZDkzZmUzNjRiYThiMjIyZjFlNDNiODMyYzY3ZTU3ZCBweTNrLXN0cnVuaQorNTU1NDQgNDc3NGE5NGQyZTZkNjY1ZTk0OWY0NmY4YzUwY2NlY2NkMDY4MTdjYiBwM3lrCis1NTU0NSA4MmU1ZGI0OTYwZWRmYjM0YjEwOTE5NWQzM2E0Mjk4MjM5YTRhN2E2IHB5M2stc3RydW5pCis1NTU0NiA5Y2U4ZmEwYTA4OTk3MjdiYTAzYTM3MzBiYWQyMzQxZTYyNGFiMDY2IHB5M2stc3RydW5pCis1NTU0NyAzMDhlNjMyNzAyYmZhNGFlOGQ1YzZkYTQ1OGFlOTdiZGY1MWU2MDFlIHB5M2stc3RydW5pCis1NTU0OCAyMWRjNDYyOWI3MTIxNDU4MjgxYWQ4YTA3NTAzMzc5NDI3ZmVmNGVkIHB5M2stc3RydW5pCis1NTU0OSBjZjE1MTk2N2VlYTNjZjAxNTQwZDBkNDM2YTliNDNkOTBhM2RjMzIzIGxlZ2FjeS10cnVuaworNTU1NTAgNmY4ZjgyMjgwNTQ1ZGQ5M2QwNjEyMTYxYmQzNGRjMTY1NGU2NjFjYyBsZWdhY3ktdHJ1bmsKKzU1NTUxIDM5NzlmOWUyZDAyNjI4N2Y3OTAxMGNkY2E5OGZmNTE5MjdkM2FjYjcgcHkzay1zdHJ1bmkKKzU1NTUyIGNmMDg5MWYxZDYwYWE5ZGIwNTU4Y2UzNWM3ZTcxOTU4ZGU5ZDM4NTggcHkzay1zdHJ1bmkKKzU1NTUzIGU2MzEwMWZhYWRhNjhjMjFlYzc4OTBkNzJhMzQ2NjU4M2MxMmNjYTIgcHkzay1zdHJ1bmkKKzU1NTU0IDg2YTlkNWY0MzMwNzc0NDIzNTg4NzQ0ZjNmNGMyYjhkYjBiYTJjY2MgcHkzay1zdHJ1bmkKKzU1NTU1IDEwNDI2YWQ1YTZlMGIxMzdlNTE2MGE2MWU5NTczNmI3MTk0ZjdlMzIgbGVnYWN5LXRydW5rCis1NTU1NiAwNTdhOWMzZDA2N2QxMTM0NmM3ZGY0MTU4OGJjZWIxZGMxNzAwMGJiIHB5M2stc3RydW5pCis1NTU1NyA0MWNmY2ZkZTA4YTk5YTc0NWY3YWIzZWFmYmY0M2M1MDE4NmVjZjMxIHB5M2stc3RydW5pCis1NTU1OCAyZjQ4YzU2YzVlODE2OTE1MmQ1OGJiZTU0MGE4NTczY2RjOTgwZTY0IHB5M2stc3RydW5pCis1NTU1OSA5OGM2NmVmYzk1NTMzM2E1YjMyMTgwZTRhOTQ5YjllNDY3MGQ3N2RhIHB5M2stc3RydW5pCis1NTU2MCBlNGU4YjEyNzcwZTQwNmJiM2UxYThkZTgwZGM1OWM0Y2FhMTU0OTZhIHB5M2stc3RydW5pCis1NTU2MSBlNmZjNjdhZDljNTRiYzFkZGRiMjFhNmMzYjI1YzNhYjI0ZDM5NGJkIHB5M2stc3RydW5pCis1NTU2MiA5Njk4NjhkZjE5MzhiYzQ4MmZjYzk4ZWY0YjY3NGY3YWI2YmY4MTdhIHB5M2stc3RydW5pCis1NTU2MyA0NmE5NGVhZDNkNjhkZTNiMzFjZDdhM2Y2MDUzODU1MTFhNTBiOTk3IGxlZ2FjeS10cnVuaworNTU1NjQgMjQ5MDA3Njc5NTI0NGQwNTJkYzFlZjhjMDQ2OWUyYjdhZmQ2NjliZSBsZWdhY3ktdHJ1bmsKKzU1NTY1IDk5ZTMzMDY4YzMzNDdkYzI5ZWVhMjg4OGU4ZmQ3NzEyOGIxZTA3NzkgcHkzay1zdHJ1bmkKKzU1NTY3IGNlYzJhOWMyMDBiYTJjYTJjYjZhZTU4N2EyNTE5MmQwMTMxNzc2MjYgbGVnYWN5LXRydW5rCis1NTU2OCA1MjJjNDkzOGJkZjY4MThlOThmYjUwZjlmM2Q5NjhjOGFjZjA4ZDRkIGxlZ2FjeS10cnVuaworNTU1NjkgMmM4YmEzZmFhZjQwYzA1OTUyOTM2OGQxMTQ5NTYzOTJmNWFlNWQ3YSBsZWdhY3ktdHJ1bmsKKzU1NTcwIDYzMTkyNzFjMjMyNjE3ZDhhZWJkNTU5N2I3MDc2Y2JiZDYzZDBhODcgbGVnYWN5LXRydW5rCis1NTU3NSBmNTc3NzVjNWQwYjQyMzY2MjhjMjkwMDExZWNhNDY5Njc1ZDE1Mzg2IGxlZ2FjeS10cnVuaworNTU1NzYgMWEzODVkMGFlODJiYTBlYTUwYjc0MDJiZTc3YzUwNDAyOTE3ZGYxMSBsZWdhY3ktdHJ1bmsKKzU1NTc4IDBlODBmYmQ3MzAwNWM2ZWNmNmE5MTRlNWYwMTQ5YjY3MzJmYmU0ZmEgcmVsZWFzZTI0LW1haW50Cis1NTU3OSBjYzBhZWVlNThhNGQ4NzI5ZGFhMzBjYTkyYjk5Mzc0OWVjNzJjOWE1IHJlbGVhc2UyNS1tYWludAorNTU1ODAgY2VjNmQ5NmMwODRhMTY5NmRmMDg1MGE4NTc5ZDJkM2MzZGNjMWY2YiByZWxlYXNlMjQtbWFpbnQKKzU1NTgxIDM0ZThlMDNlOTIxZjdlNDc3YWY2YTBjNTBkYTA2YzM4MDEwZDE0NWEgcmVsZWFzZTI0LW1haW50Cis1NTU4MiAyZjRkOTIwYTU2ZmMwZjQxZTIwY2RiNTRlZjMzYWY5NmUzMTc0M2UyIHJlbGVhc2UyNS1tYWludAorNTU1ODMgZGNiNDNmNDAzOTBiYTc5MmQ2ZTY5YjY2NmQ2MTY4M2Q3YmZiNzA4ZiBweTNrLXN0cnVuaQorNTU1ODQgMWVjMWFmYTJiZGI1OGMzOGM0MDk0NjBkZjU1MGI4MDk2N2E5OGIxNyBweTNrLXN0cnVuaQorNTU1ODUgMDg5ZjQ0OWEyMGNkYTAxOTM0ZmQzZTcyMGY5OWJkODdmNTY2YTM3MSBweTNrLXN0cnVuaQorNTU1ODcgODVjOTM1ZGJiZWYyNmJmNDA0NzgxNzJhNTUxZGIyY2UxOGZmYjRhNSBwM3lrCis1NTU4OCAwNDc4NmFlNTJkYWQ0MjEyN2Q1YjBkNzI1ZTcxYjczMzQ3NDJkOTZkIHB5M2stc3RydW5pCis1NTU5MCBiZWRmYmRjYWYzNTU3Y2QwMGZhNDE4NTU5NmQ0YjU5YzhkM2Q1ZWJiIHB5M2stc3RydW5pCis1NTU5MSA5NjU3YzMzM2M0ZWE4ZmMwZDc2YzhhZGZhMWFkMTFlNTU1NTgwNTQyIGJjYW5ub24tb2JqY2FwCis1NTU5MiAzODc3ZjM3Yzk4NjEwYmNjNmU2N2MzMjRkNDg4MzVmZGJhYmZiYTE0IGxlZ2FjeS10cnVuaworNTU1OTMgZTc0NmEwNmIzZWFmZTliYTA5MTljMDBjYTVkN2Y2ZjM1NjNkOGI4YSBiY2Fubm9uLW9iamNhcAorNTU1OTYgMDBmOTRkMzVjNjFjZTdlYmIxZDMxNzExNWU5NjQxZjliMjJjNTI1NiBiY2Fubm9uLW9iamNhcAorNTU1OTcgMWVhNGIzY2Y5ZDk4MTRlNzU0OWYxOWU1YWY2Yjg4ZGY3ZGY0NGJkYiBiY2Fubm9uLW9iamNhcAorNTU1OTggNWJjN2Y1NmY1YzMzZGVmODhhZjdlYTVkNzAyMjMxM2Q5MDQ3OGI1OCBwM3lrCis1NTU5OSBhZGJmNjgxZjFiYjJlYjc1MTY4OTA1MjM1NjcxMDE0MzQwYzVkNzU5IHAzeWsKKzU1NjAwIDEwNTY1MzA2MTZhYzNiMmQ4MzNmYTEzNDgxZTA4OTk2YjFmODI4MjMgcHkzay1zdHJ1bmkKKzU1NjAxIGU3MTYyYjZjYTdhMDQwZDhhY2FmOGU0N2U4NGU1NDBkNzhmNzdkZDQgbGVnYWN5LXRydW5rCis1NTYwMiAzODkwNzdhNTRmY2UzZWM4OWU3ZTdmYTY0NzgxZjFjNDZmNGRkMjZmIGxlZ2FjeS10cnVuaworNTU2MDMgZmJmMzQyYmNiNzg0NjUyNTFhZTkxM2JhZDZmZjkzNWYyODJmYzMyMiBsZWdhY3ktdHJ1bmsKKzU1NjA0IGVjM2I4ZTk0YTM1NTcxZTU5NTViNTc5ZmExZjEyMzJiMzA2NTlhNjYgbGVnYWN5LXRydW5rCis1NTYwNSBmMjhiZWQyNjRiMDJjYjMyMDJhYTIwN2Q3NGNiNWUwMGVlZTA1YzgyIGJjYW5ub24tb2JqY2FwCis1NTYwNiA1ZTQzYzczNjdkNTQ1YTg2YjI2MDNiNmViYWNkZTBiZGY2ZTRiNDQ2IGxlZ2FjeS10cnVuaworNTU2MDcgYzM2Yzg4NzlhOGRhZDk4NDU3MTllYWRiNmVmNjgwNGU2NTE2NjIwYSBiY2Fubm9uLW9iamNhcAorNTU2MDggYWE3MzIwNmM5Y2U2NzU2ZWJiNjM0N2EyNTU5NmQ5ODI5Y2FkZjVhYSBweTNrLXN0cnVuaQorNTU2MDkgZjZhOWUwMzRjYzYyODI0MjYzZWRhNDc4NzU4ZDg2MGViYzI4M2ZiNSBweTNrLXN0cnVuaQorNTU2MTAgMjQ5YjUyNWUxYWMwZTk4MGI0MmE5OGNmYzZhYjRhOTdiMGNhZTBjYiBweTNrLXN0cnVuaQorNTU2MTEgYjdjZmIzZmQ4ZGIwNTk5NGRmM2EzZDg0Nzk1OGU5NDI3ODliMDI2ZiBweTNrLXN0cnVuaQorNTU2MTIgYzMyODdlMTk1YTFkNTgzZWNhMmVmZjM3MDg1OTMzYWYyNDQzZGE3NCBweTNrLXN0cnVuaQorNTU2MTMgOWJhZWMyZjU0NTA5ZjY4MzU0ZGRiOWEwMmU1NzdjZTVmMTliYjQ5ZCBweTNrLXN0cnVuaQorNTU2MTQgNGNhZWViNDEzMTg2MmZlYTFjOWFlN2U2M2FhNmVmY2NjZTZiNzg2MyBweTNrLXN0cnVuaQorNTU2MTUgM2ZkYTllNmEwYjZkMWVkM2I3OTg5Y2VmN2U1N2JlNTE0MjRkMDljMSBweTNrLXN0cnVuaQorNTU2MTYgODFkNWIwMDcxMTY5YWMzYjE0MzE4NGM1OGI3MjQwODliMGJiMTI3MSBweTNrLXN0cnVuaQorNTU2MTcgOWRlODc1NjkxODFjYjhmMzFmZDFmYTA3NGY5MGNiODBkMjA5NTZhMiBsZWdhY3ktdHJ1bmsKKzU1NjE4IGFkZTdiMDY5M2UwNzZjMjEzOTNkMTJjYjQ2NjVlOWJmODk3MDY0ZjAgbGVnYWN5LXRydW5rCis1NTYxOSBhOWViYzUwNGY2OWQ4Y2NiOTI4YjIyYTNhNzYyOGIwMTU0NjA5ZjJiIGNweV9tZXJnZQorNTU2MjAgNzU4NjY2ZTI3ZmJlZmI0MTY0NTgxM2NmNWEwN2Y4ZDk0MzQxNmE1OSBjcHlfbWVyZ2UKKzU1NjIxIDhiNGZiNzFmZmYxZDM2NjM3MTYzMzAwOGExODBjOWQyNzU0ZDQxZGYgY3B5X21lcmdlCis1NTYyMiBhZWNkNzhhZmE1YTI2ZTk0Mzg3YjcwNGE0ZDI5MDY5OTdjOThmYTU5IGNweV9tZXJnZQorNTU2MjMgMGU3YzcwZDQxYTE5YjA2ZTkzZDM3ZGE2YzFjNDA0MWJlYTA0M2RjMSBjcHlfbWVyZ2UKKzU1NjI0IDQ4OTA2MGU5N2QxN2ZhODc0Y2U4YTcxYjg4Y2I4Nzg1NDEwODQzZWIgY3B5X21lcmdlCis1NTYyNSA4ZDYzN2Q4MTZmNzU0MTdiMDk5MWQ3YzJhNzg3MGZiYzM5YmZmNWI4IGNweV9tZXJnZQorNTU2MjYgMzcwMDUyZGM4OTkyZjM0NTE1NDI2Y2FiZjMyOTg1YzgyNmQ5YzM4MSBjcHlfbWVyZ2UKKzU1NjI3IDZkZDk3Njc2MzdiYjQzZDdmYjA3OWVhZGU3ODZmZTg1MTBjNDIxN2QgYmNhbm5vbi1vYmpjYXAKKzU1NjI4IGQ1YWQ5MTQ5MzYwYmI5NGQ2MTk2MWViOTI1ZTlmOTI5YThlMTBlNDUgYmNhbm5vbi1vYmpjYXAKKzU1NjI5IDM3Y2E0ZGQ4YWJlZjQ2OTNkYzJlNmY0Mjg2ZmEyZWQyZTM1NzNmYjYgcDN5aworNTU2MzAgZGU1MWFhYzQ2YjFiYzg5NDUzZTg2NGEwYzc5NmM0ZDYyMTc1MWY0OSBjcHlfbWVyZ2UKKzU1NjMxIGJhN2VhZWUzMzgyMjc5MThiNjA1YTJjNWEwMjQ2MjBiZGY2YTUxZmEgcHkzay1zdHJ1bmkKKzU1NjMyIDVhZDJkNzcwMGQzYzUwNTA1OTNhNWRmYjkyMWM1ODFkNjc3ZWY3MmUgYmNhbm5vbi1vYmpjYXAKKzU1NjMzIDUzODFiNGU3MWEwNDA2YzkyMjQ5NGY3ZDI5NGIwODc3ZWFmNGZhOTggYmNhbm5vbi1vYmpjYXAKKzU1NjM0IDUwM2Y1YTU2NDZkMTdhMDk5MjhiMzVhMTJlZDE3NGYyZjgxMDVjNDQgbGVnYWN5LXRydW5rCis1NTYzNSBlMTRlY2U3NzdiOGI0NWI4Zjk5MmVmNzI3MzAxZTczYTJiNmIyM2JlIGxlZ2FjeS10cnVuaworNTU2MzYgYzc4MzQ5NzEzMTdjZDQ5YmEyYjY1MmU4MTMzZTgxMjlkODFhZjYxOCBwM3lrCis1NTYzNyA4ODVkMGVmOTBlMGY0NDFjZTU3YjJhMWZiYjJiMTI1NTE3Mjc5OWFlIGxlZ2FjeS10cnVuaworNTU2MzggMDZlNmQ2MjE1YzViNzhiZDEzYTkxYjU5ZWUwMmFlMzA1MzQ4YzFhYiBsZWdhY3ktdHJ1bmsKKzU1NjM5IDc2ODg3ZTNlOGU1N2E2YWQ0ZDhhYTJjYTRhMDJlNjIxODZmMjM2ODEgcDN5aworNTU2NDEgYWU4MDU3OThmYTY3ODJjNmJkOTVjZjA2YWY3OWYwMDg2NDNmYTIyNyBwM3lrCis1NTY0MiA2N2VlNDY5NmQxNDlhYjY3YjVkYzkwZjdlOWFlMTBmYTdkNjgwMDQyIHAzeWsKKzU1NjQzIDM3N2I1ZGQ2MjkzZGE5OTY2MjVlOWFiYmQ2OTQ1OTViODM1ODk5YmUgcDN5aworNTU2NDUgYTFlZTI1NmZiYzhmODQ1OThhYTI1MDUwYzk0NDlmN2E3ZjE5NGRiNSBiY2Fubm9uLW9iamNhcAorNTU2NDYgMmFlOTk3NWFjYTIwNWU2YTAxYjA0NmZlNzI4MTEzYmQwZTJiZDg1OSBiY2Fubm9uLW9iamNhcAorNTU2NDcgOGIxY2RmOTMyMWZkMTM2MGExMDA1NTFhMjliNjMxNTBlMzdlMGZhZiBiY2Fubm9uLW9iamNhcAorNTU2NDggOTM4NjJhYTc2ZjdjMmEwNzk2MjU2NTdkNzVlZDk5MWY5OWNmMGQyMSBweTNrLXN0cnVuaQorNTU2NDkgOWIxZmZjZTI1NmI5YWFlNjg2NTk2Yjk2NWQ1YzYwYzIxOWNhNDI0YSBweTNrLXN0cnVuaQorNTU2NTAgNmMyZmE3MWRjNDU5ZjM4NTEwZTVhODgzYzZmZGI2OTk4ZWI2MzMxZiBweTNrLXN0cnVuaQorNTU2NTEgNDkyNjg3Njk1YzY2YzgzNTYyZmI2NDNiMDg2YzdkNTA2ZjVjYzA4MCBiY2Fubm9uLW9iamNhcAorNTU2NTIgMDk4MmZiMDhlNzliMWQ4MTQzNTBmNmNkNjI3ZjU2MzQyYmYwNDBhYyBiY2Fubm9uLW9iamNhcAorNTU2NTMgMDAzY2UzNmRkMjAyMjM0OTA4YzVhNzdhMjBlOWNlY2ViYzA1ZmIyZSBiY2Fubm9uLW9iamNhcAorNTU2NTQgMTg4MjE2YjQzZWY2YTc0YjM3MWViNDZmOGJhZDkyZDE1NjM2YjJmZCBweTNrLXN0cnVuaQorNTU2NTUgMzdhMjg1NmQ4ZjBlMWQ5MWNlYjczMTZiODhlZjEwODY4YTQ4N2RmZiBiY2Fubm9uLW9iamNhcAorNTU2NTYgNzViOWNlMWE3NzQ1ZjNjZjQxODc4Yzg3ZjdhODczMWRkZDY4MzdlMiBiY2Fubm9uLW9iamNhcAorNTU2NTcgNjJlMzk0ZDUwYWEwNjExMzM5NjE5NzMzODkyNGY0OThhNTQyOTYzNiBweTNrLXN0cnVuaQorNTU2NTggNjc5NmYwY2IwYmVhNDgxMDA4ZGUxMTQ1ZjFhYjE5MDgyOWQ1ZTVhZCBiY2Fubm9uLW9iamNhcAorNTU2NTkgZGVmZTI1MTNiNzhlMTcxMDU0N2JmZjZkM2U0ZjRkOWYzZmYwMWQ0MiBiY2Fubm9uLW9iamNhcAorNTU2NjAgY2ViYWY3YzNhYjhjNzUwYTgxNjFlOWRlZTNkZTIxZDdjNGZmNzc4MiBiY2Fubm9uLW9iamNhcAorNTU2NjEgYjZmMDQ5NzRkOGE3N2ZmZDhhMzYyZjdhM2Q0NDBiNmIwYWZmYzA4NCBiY2Fubm9uLW9iamNhcAorNTU2NjIgNTYyNjAyYzkxMDFkOWYxZWVhZmNhYWE2ZmE4OWE0MWM1NDE3YjM3ZSBiY2Fubm9uLW9iamNhcAorNTU2NjMgMzZhMDU2OTZiZTgyMTgwOTI2NWNkZGJjM2NiNTM4OTFlOTBjNzNjNCBweTNrLXN0cnVuaQorNTU2NjQgZjQwZmYyZDczOGVhNDI2NGIzMGViODc5NGMzOWVjNjgyOWE5NTk4OCBweTNrLXN0cnVuaQorNTU2NjUgYzQwYmZiMzdmYTE1NDI0ZTkwNGQzYWQ3MzE4ZmRjZThhMjZlY2Y5MSBwM3lrCis1NTY2NiA0MTgwNTk5OTRlNDcyMjJjYmE5ZDQ4OWIyNmYyNzE3NmExZWIxZTJkIHAzeWsKKzU1NjY4IGFhNGI3MjU0OWE2OTY4MjdlMGM0MzRhMTdiMDhkZWNmZDIwYTk2N2UgcDN5aworNTU2NjkgZDViYmY5NzU3MGUzNjI2ZGMxOGMxMTIwY2ViMzExNWUzNGM2MWEwOSBiY2Fubm9uLW9iamNhcAorNTU2NzAgZTcxZGU1NzUxM2UxYmQzYjJjYjVlNWY5YTc5YmM2MzExYjgzOGQ2MiBjcHlfbWVyZ2UKKzU1NjcxIDA2MzVhNmNhMTk4MDAyMjBlN2RkNDY0OWUyMjhmYjQ0NWQzZWMzNzUgbGVnYWN5LXRydW5rCis1NTY3MyA3ZDM3OWM0NzYwMDc0MjE0NTM5NjM3NzlkNTY2NTI0ZjI4ZTIwNTQ1IHAzeWsKKzU1Njc0IDNhZmZjZTJlZjc4MmNiZWFjNDVkZDNlNjNmYTBmNDhkNjZhM2FlNDUgcDN5aworNTU2NzUgZGQzOTYzNTQwY2Y3NzA5NDA5MGEyOTQ0MTUyYmJiMjE0YTBlMDcwZCBwM3lrCis1NTY3NiBkZGYwNDcxYTZkZTM3M2I5NGM0ZmM2YmFmZmRmZjJlNjkwZjFkYzVlIGxlZ2FjeS10cnVuaworNTU2NzcgYWFmM2I2ZDgyYjYzZjM2ZGQ4NzU4Y2Y3NzJiY2I1ZWU0NjYzNTZmMCBsZWdhY3ktdHJ1bmsKKzU1Njc4IDI3NWQ4N2E0N2Y2NDE0ZmU2OWYzNDkzODQwMWQ1YWMwMDcxYTNmNDYgcmVsZWFzZTI1LW1haW50Cis1NTY3OSBjZGVhMDk0Y2YwNDUxZjY3MGY2NDIzNjhmZTUzYjJhMmEwNzcyOGZhIHAzeWsKKzU1NjgwIDM5NGFiNWZmMTg1NGU0MTZhZDNkMjY3Mzk5M2ZmMDVmYTYzYmMyNTMgY3B5X21lcmdlCis1NTY4MSBiYThiNWFkOGU3NmViZDdlY2E1ZDBhYzI4YTVkZDNkMDA2MzIwOGFhIGNweV9tZXJnZQorNTU2ODIgNTE2Nzg1Nzg1MWMxMDlkNGIyNjRhYWQ3YTA5MzAyNTUxYzFiMjAyYyBjcHlfbWVyZ2UKKzU1NjgzIDQxYzdjZDE2YjE5OGMwMDZkYTM0MDEyMDZjNTdiZmQ3MTQxMzJmYjcgYmNhbm5vbi1vYmpjYXAKKzU1Njg0IGFjZDFlMjYyNDk5ZGQyOGNmYTNiNGRmNDQyOWE2OGI3MjM0Y2M2MTcgYmNhbm5vbi1vYmpjYXAKKzU1Njg1IGE2MDQyYzdkN2M1NWZhMmMxYjEyZWFjMDc4ZmIwZjE1ZTVjZDc2MzkgYmNhbm5vbi1vYmpjYXAKKzU1Njg2IDVjMjk0MTFhMDVhNWY1OWM1ZWY4MTBjOGQ2N2UxZTBjNWE4NDc2ZjggbGVnYWN5LXRydW5rCis1NTY4OCBhZDZjNWI4OGI1YzRiMDE5NzBlMGMxMzQwYWVhODY2MjU1NzBkOTM0IHAzeWsKKzU1NjkwIGMyZGM0ZDE3ZTk4YmM0MDRkNDY5NDc2MTI4YmY1NzM4MTU4NzYxN2EgbGVnYWN5LXRydW5rCis1NTY5MiAxNzY5OTkzMTE3OWU4ZjMwNTZiOTU0NzM5ZGE5MjBmOGNiMTgyNjIwIHAzeWsKKzU1Njk1IDEyMDBjMGUwOTU1Mzc2NTkxMmRiMTlkYjIyMzkzYzVhNjgwMGZiZmYgY3B5X21lcmdlCis1NTY5NiAwZTI5YmI4MGUyMjc4ZWY2MmU1ZDIzNDI2OTIzYWE5NjJiZTMxYjA1IGxlZ2FjeS10cnVuaworNTU2OTggOGU3ZWNiZDhhYWFiMTg3Njg2MDE3MzEwMTAxNjhlYjU4MzZjODY1ZCBiY2Fubm9uLW9iamNhcAorNTU2OTkgMGY0MjRkZTQ1NmRiNDYwOTkwZWU3NTY0ZDNiMTNmY2I2NzhlMmEwNyBjcHlfbWVyZ2UKKzU1NzAwIGJiOTQyYjYwYjBmZWYyYjYyZjU5NzUyNjMyMmE4YmI0MjY0ZDkwZTIgY3B5X21lcmdlCis1NTcwMSBkZmNlOWEyNjM1ZTk2Y2YxMmE1MzUyYmE4M2UzMGIyMmI1MDU5YjAxIGNweV9tZXJnZQorNTU3MDIgZGYzZjc2YWNlMmQ3NGQ3M2RlOTAzZjA1OGRjYWU4NWIzYTg2ZTNiMiBjcHlfbWVyZ2UKKzU1NzAzIGFmMGFjODM2MDJiNDc4NmEyMTE1ZTViZDEzNmE1NDA3ZGRlYjkxNTcgY3B5X21lcmdlCis1NTcwNCBkOGE2YWZhNmU4YzYwZWU3NWQ1YTA0OThmNTU2NDcyODY4OTk3OTM1IGJjYW5ub24tb2JqY2FwCis1NTcwNSBkMGI0YmJhYWZhYWU0YzQxNWI1NWY5YjdiMGY5N2Y4ODUyNzA0YTI2IGxlZ2FjeS10cnVuaworNTU3MDYgZGQ0Njg5ZDBlYzg1YjZjMTAzYTU2MzNkNDAwYzk2NjljZTFmMjUxZiBweTNrLXN0cnVuaQorNTU3MDcgZjI4N2I4OGMzYzIxY2ZiYzU0NDI1MzIxZWFhZTI0NWEwOGZmMDc4NiBwM3lrCis1NTcwOCBjNDUxMTE1MGVmNjA3MTIwZTZjMzlmZTNkOWY3YzRkYjQ0ZTNkYWM0IHAzeWsKKzU1NzA5IDcxZDg2MWVlOWZmMGRiZGFlMDdhZTNjNDBiMzJlZWMxOGEzMDY2YmEgcHkzay1zdHJ1bmkKKzU1NzEwIGI4YmVmOWExY2RmMDFjZDgxYjRkNmU3NTFhNjgwNmY0YjRiZDM0ODYgcHkzay1zdHJ1bmkKKzU1NzE0IGRiZDJjZjQwNTI3ODI1ZmJmMTE0ZTRhOTM2YTA2ZTcyZmI2NTk1ZDggcHkzay1zdHJ1bmkKKzU1NzE1IDEyN2YxNTFmMzE3Yjc3ZWE2MTMzOGQ2NzY3YmQ4NDA2ZDkwZWEyNzcgcHkzay1zdHJ1bmkKKzU1NzE2IGIzODBjOWM0OTczOGFjYTA1YTE1M2VkNjVjYTZjN2EzOGU2ODI2ZWUgbGVnYWN5LXRydW5rCis1NTcxOCBjZWYwN2RiMWNhZWQxYTA4MjdlNDliZDkxNzFlNDNiNTJhZWQ5OGQ5IHB5M2stc3RydW5pCis1NTcxOSA5MWJiMTk4MTNjYTYxMWZjYTIxMDgxZGYyYzAzZTBkMDU1ZDQ0NTc4IGxlZ2FjeS10cnVuaworNTU3MjEgYzYxY2FhZjU2MTYzMGExZWE3MGQ0YTUwNGU4ZTc4Njc2YTIxOGUyZSBsZWdhY3ktdHJ1bmsKKzU1NzIzIDY2N2MxYTcyNzljOWY3Y2I0ODc4MzZhNTc2OWY3YjFlZGJlMjMwMTUgYmNhbm5vbi1vYmpjYXAKKzU1NzI0IDVjYTdkMTcwZTQzMTJmNTQwYjRkNjAyYjhlZTIyZThmMjM0NzNhYTAgcDN5aworNTU3MjYgY2NmMjA5OTI1MzgzNjllN2Y5ODIwNjdjNTU0MTBkM2E4YTAzNjAyZiBsZWdhY3ktdHJ1bmsKKzU1NzI3IDk2ODYxYTA0MWY1NDZjZjQ3OGY3Njk2OTg2MzRmZDM3OTc0MjBhMjkgcDN5aworNTU3MjkgMjkzNGFmMDVmOGJmYjA5MmJjZDFjMDVkYWZhNzRlYTEyYmVjODc1MiBwM3lrCis1NTczMCA5YWNiMzk0NzgwZGY5MzYxOWJkYjA0ZTZkMjNlMWM1NTI2YWFlZjljIHAzeWsKKzU1NzMxIDI0ZWZhMmU0NDhiY2UyZmFlMTBhYjRjNzdmYTFiODM0YmJmNjdhZGUgbGVnYWN5LXRydW5rCis1NTczMiA5MDQ4N2E4ODdiZTEzNmZiZTkyNDFiZTc3ZTFlYWNmZTc5YTE1NmUxIGxlZ2FjeS10cnVuaworNTU3MzMgZmVjMTI5NjU0NGFiOTZjMGVmNTI4MmJkZTRiMjRjZDNjZmMzOWMxNCByZWxlYXNlMjUtbWFpbnQKKzU1NzM0IGYwMTIxYjIxNWQzODk2MDMxMzM3NGQ3Y2ZiNmFiMTU5MzgyYmU0NDMgY3B5X21lcmdlCis1NTczNSBmYmJmODUxZTIzMGE1OWU1ZmQ2MzljNDQ0ODQ5OGY4Yjc4ZmVhNzU3IGxlZ2FjeS10cnVuaworNTU3MzYgZGE1MWY3ZjkwOGNhZDhmZTdmZDkxYjkyMWRjMzhmODUzNzQ1ZTE5NyByZWxlYXNlMjUtbWFpbnQKKzU1NzM4IGRmZjYyNGIyYTI0OTEwNDJlNzI4YjIxNWU0YTkyMjViMmFmYzdmZWMgcDN5aworNTU3MzkgZjlmNjAwMDMyN2UyN2JkMmViOGQ0YWM1YjExOTM0YmZkNDk5Mzc0YSBsZWdhY3ktdHJ1bmsKKzU1NzQxIDMyOGU0NTllYjY3MDI5NjExZmRmOGEzODc1NjAzMzM4MmZmMTUxYjEgcDN5aworNTU3NDIgN2IzZjY0YjNlNzM5Mzg4ZWQ0M2ZkMGI0ZGFlZWE4NGMwNzk5OTY5OCBwM3lrCis1NTc0NCAwNGY0YjU1N2QzYzQ1MTFiM2NlMTBlMzFhMjY0ZGZhOWEwNTFmODA1IHAzeWsKKzU1NzQ1IDA0MTg2ZjUyMTkyZGRiMTNlM2UyZWYzMTAzMTU1Yjg4NDFkMzgzOTQgcDN5aworNTU3NDYgN2UwYzIyMGI1NWE2NDAzM2M4M2Q4N2I2MWFkYzk5M2NjOWU5ZTkyMyBsZWdhY3ktdHJ1bmsKKzU1NzQ3IGI0ZjEzYzdmZGZkODhkMTY4YTE1ZDUyMjJkYjBhMGQ5MzgzNzNjNmMgcmVsZWFzZTI1LW1haW50Cis1NTc1MSBlMzFkMmY5NWYyMjU0ZDI0NmQzZTU5ZjI0M2JiYzllMGUzNWZkZDk3IGxlZ2FjeS10cnVuaworNTU3NTIgZTE5OTcyODM0MTcwODhkYWNiNjc5YzVhZjIxMGMxZGY4Yzc5YmUzMiBsZWdhY3ktdHJ1bmsKKzU1NzUzIDgyYjkzZmE5MWRjZjM0MTNkMDJiOTdmZjJlY2QxOTA5YzM2ZTE0NjIgcmVsZWFzZTI1LW1haW50Cis1NTc1NCBhYmRlMDgzODQzY2QyY2EzMjE5YWZlZTg1NDcyZmVkZmRmOWQ4NjM1IHAzeWsKKzU1NzU1IGI4YWJkZmExYzlhZmMxMDAyZDEyMjk1MGYzYjI5YTU1YzQwZGYwM2MgcDN5aworNTU3NTYgZjZmYWIxYzcwN2U5MDlmZmQwNTc5NGNmZTFmNmRmNTgyYTAxY2U3ZiBjcHlfbWVyZ2UKKzU1NzU5IDUwMTRmOGRhYTU3ZmFkNTc4NmJhYTdkZjQzYTBkNDY1NGNlM2ViZmEgcHkzay1zdHJ1bmkKKzU1NzYwIGU0YWIwODAzOWM3NWY4MGZkOGY4ZWU5NTVmNjAxNzdkNTU2N2RjMDYgcHkzay1zdHJ1bmkKKzU1NzYxIDczZGQyZGEzMWQzN2ViZDgzZWZjY2JiNTBjYTg1MjIzNWUyN2M1MGQgcHkzay1zdHJ1bmkKKzU1NzYyIDhiY2ZjNDZlNDQ0YjU4MjY2YmRjY2IxZjFhYTYwYmZiZmUxMzljNTkgcHkzay1zdHJ1bmkKKzU1NzYzIDUzOTYzYTJmNTY1MjliZThjMTY1NDg0ZTVkZTZjZGZkODlhOGY0MTcgcHkzay1zdHJ1bmkKKzU1NzY0IDU3OThhMmZiYWIwMzA0ZjEzNjdiZjE1ODY5MmI4OWM0ZGJmMTQ3MWYgcHkzay1zdHJ1bmkKKzU1NzY1IDcxNjA0ZDQ5YTM4NjM5ZWNhMTQ3MmYxN2Q3NmI4NTgzOTExYTc3ZTUgY3B5X21lcmdlCis1NTc2NiBjMzZhYzY3ZWVmNWI3NzZhMTJjMDQ3NTNmNzA4YTVkYzlhY2ZiZWUwIGxlZ2FjeS10cnVuaworNTU3NjcgNGIzNGZhYWE5NzdkZTg5NjliMmUyYjk0NThlOTExNTY5MjY5MDEyYSBjcHlfbWVyZ2UKKzU1NzcwIGI2YzFhMWExNWE2Y2RiNDUwMWEwNThmZTBkMzk2MDhiYzg5OTFiYWEgbGVnYWN5LXRydW5rCis1NTc3MSBlM2ZiZGQ3Y2I5NjljZWI4YjJjODQzOTZiZGVjODgzOTFmNmFjMDI3IGNweV9tZXJnZQorNTU3NzIgNzYxOTRlNjgyZTIxY2M2YWQ1M2ZkNGM0MzBlMzQ1MmMzZGM4ZWQ5NiByZWxlYXNlMjQtbWFpbnQKKzU1Nzc0IGM1Y2Y5YTRmNGZhOTc5Y2QxNzU1NTkxOWI2ZDI4NzUxNDM5NDhiOGQgcmVsZWFzZTI1LW1haW50Cis1NTc3NSAzNWFjY2VkYjVkMDNiNDhlMDFkNzlmODI0MDAzZjFmNmJlZjkwOTEyIHJlbGVhc2UyNC1tYWludAorNTU3NzUgY2ZiY2ZmNjZlNzI1YWI0MjhlM2U5YTJiMTVhMmM3Nzk2Mzg5NmNhZSBsZWdhY3ktdHJ1bmsKKzU1Nzc1IDAxODEzODQxZDY0YmZiNDM2NmNlMGRkMTFhNmUwZjY4MjhkMmY2MGIgcmVsZWFzZTI1LW1haW50Cis1NTc3NiAzOWExYTIyZjk2Y2Y2M2YxMzQyOWQ3NWFhNDIwZTc4MmMwZjg4NDJkIHB5M2stc3RydW5pCis1NTc3NyBiM2Y2MWJhZTEwYzM4Y2Q4NTk0YTBlZjMxMDViMWI2ZmM3MjgxYWUyIGNweV9tZXJnZQorNTU3NzggZWYzNzQzMWViZjJjOTQ1ZTFlM2FjODEzYmZlYTQyYmY5NjFkZDdiYSBweTNrLXN0cnVuaQorNTU3NzkgNGM1ZmJlNjViN2RlNzkzNTlkNGYxNTc1NjRmMjhkMTY4NjA2NDg3NSBweTNrLXN0cnVuaQorNTU3ODAgYjMwYzc1ZDIyZjM0YjIzOTcwYTRlOGUzOGQyODg2YzRmYjQ1OTkyZCBweTNrLXN0cnVuaQorNTU3ODEgNzAxNWNjY2YyOWUzYmJkNzVkYzI3NDc2MmMyMDlkM2I0ZjIzYTBlYiBweTNrLXN0cnVuaQorNTU3ODIgMzBlNjFhYzFkNjZjNjJjY2Y1NDA5YTU1NDZiNTY0NTA4MGZhZDUwYyBjcHlfbWVyZ2UKKzU1NzgzIDlhZjUyNGUzNTFmMzI1MGYzMWYwZDY0OTA3ODc3YjhlYjcxYTJjMmIgbGVnYWN5LXRydW5rCis1NTc4NCBmMjI3NzQzOWRjZGM5ZjhhZDRhODgzOWE0OTc4OThjMDJjODNiYzgxIHJlbGVhc2UyNS1tYWludAorNTU3ODUgNTg4Njg2ZDRjMmNmODdlYjk2ODRiNzZkYzVkZDI5MTljMDc3MjZjMCBsZWdhY3ktdHJ1bmsKKzU1Nzg2IDZmZDhkNTI0ZDU2YjJlNjhlZWI2NTQyMzg4MGU1NjUxNDIzNjA4ODAgbGVnYWN5LXRydW5rCis1NTc4NyAxMTkzMGRjZjlkNGZiNGRhZTZjOTRlZjRiN2M1MGU0MDYxNjFjNDdmIHB5M2stc3RydW5pCis1NTc4OCA3ZTUyYjViZWM1YTQyNjk5NzYzNTY1MzU5ZmVhY2E4OWJhNjgwMmExIHB5M2stc3RydW5pCis1NTc4OSBjZTVhZjlhNzQ2Y2IyMDhjM2UyYzM2YzBiMjA5MWM5MTFkNjI5MGZiIHB5M2stc3RydW5pCis1NTc5MCA0NTk2NzI3ZjZjMzliYzU4ZjgxZjE3ZWI4YjNkNWIzM2E5Y2E5MzE4IHB5M2stc3RydW5pCis1NTc5MSBiMDVjNmQ0MmQ0ZjcyMWZiNjZiZDkzODA5MzJiNjRlMTdhYjYwYmVlIHB5M2stc3RydW5pCis1NTc5MiBmMTQxYzVmNzc4NjBlMzBkYzM5Njg2ZTQ1OTVlOTQ1NGI1OTBjMTVkIGxlZ2FjeS10cnVuaworNTU3OTMgMDU4NzlhYjg3ZTViNDg0Yzk5NWI1ZTY1ZTQ0MzFiNDk1ZjY2OGVlZiBsZWdhY3ktdHJ1bmsKKzU1Nzk0IDdiMzdhNDM3MjM2MTYzZjhiNDNhOTY2ZjgzYWJiYmNlNmFmNjRjZTQgcDN5aworNTU3OTUgOWQwMmE0YWRmNTc0ODFiNjBkMmY5NzViNmM1NzlmMWQ2ZDFhZDU5OSBweTNrLXN0cnVuaQorNTU3OTYgYjM5MDBhNTEzNDZiNTJjNGQxMWRlOTk2YWYwMDg3YmQ4ZDc5NDc3NCBweTNrLXN0cnVuaQorNTU3OTcgNTliN2U5MzQ2ODg1Y2M2MGNiYWVkOGYwNmM3MGFkZjg0ZGJlZWY5YSBwM3lrCis1NTc5OCBjNjM5MjI4Y2ZlMjNkNDRhOWNhMTU5MTE2YjkzNzc4NjZjYjI1ZjY4IHAzeWsKKzU1Nzk5IGEzMjYxY2RlM2EzN2U2ODNiMjI3MTA0YzVkZWM3M2Y2NjYwZTM2NzIgcHkzay1zdHJ1bmkKKzU1ODAwIGZlZTcxYzdhZjUyZjRmMGUwOTZlZGJhNTU5M2MxMTJiNzlhNDZiYjkgcHkzay1zdHJ1bmkKKzU1ODAxIDk0MmQ4MzAyZjRkNmYxNTQzOTQwMjQwNjMzMmE0YzczNGY2YzVmODYgcHkzay1zdHJ1bmkKKzU1ODAyIGM4YjBlM2I4YjQ1NmJjOGYyYWI1OWQ0NTVlNjc5YTMxZTRlNDc0ZjMgbGVnYWN5LXRydW5rCis1NTgwMyBjMmFjMjJjNmY5OGQwM2ZjZDI4NDY5NTE0YjE3MDdiYThhODZhMTFiIHJlbGVhc2UyNS1tYWludAorNTU4MDQgMWJjOTAxZGRiN2RjMjFiM2FkZGE3ZTk3ZjEwMjBiNmE4ZTZkMDRkMCBsZWdhY3ktdHJ1bmsKKzU1ODA1IDgyM2MyZjc1OTFmNTAyZWE4NGUwMDBjNDM1M2U4OTNiMWY5YWM0OGQgbGVnYWN5LXRydW5rCis1NTgwNiA4MTUwZDFmMDEwYWFjNTY2ZjIzZDAyZmE2OWU5NTVjNzY3ZTFlN2U3IHJlbGVhc2UyNS1tYWludAorNTU4MDcgMTQ3NDViNGZhNzE4YTU5ZjVkNTFkYTQ0Y2Y2ZTk4OGM5NTQ5NzJiNCBweTNrLXN0cnVuaQorNTU4MDggODI3ZWM3NjgwMTk5NTM0ZmM5Y2M0ZTliZGNmYzRjZGQyMTY1Y2RhNSBweTNrLXN0cnVuaQorNTU4MDkgY2Q4ZjE2NWJkN2UyOTdhNGExZmJiYzZhYTBhYjI5MmNkNTAxMTgwNSBwM3lrCis1NTgxMCBjNmEwYjc1ZGJlYzIyOGZmOTA3NTJjZjJiNWUzZDkzM2RkMjk4OTQzIHB5M2stc3RydW5pCis1NTgxMSBlZjA5Y2IwMTE5NTk2NGEzZmRkNjIxZDdlMTVmODFkMmIwYzliMmZmIHB5M2stc3RydW5pCis1NTgxMyA1NGVmNjQ1ZDA4ZTRmYmI2YzM5Mzk0YjBhNWRiYzcwOTE4ZGFlY2MyIHB5M2stc3RydW5pCis1NTgxNCBjNDFmZDU3MjM4NjA5NjAwOTcxNGJjNzhmOTQ4OGZlZjBhMTZlOGMxIGNweV9tZXJnZQorNTU4MTUgZTQyMDAzOTM2OGI3OWJlMmIxOTJkNDAyNTUzYWQwMjgyNWMxYmFmYyBweTNrLXN0cnVuaQorNTU4MTcgYWU2YmE2MTg4ZDM4ZDQwNGUzMGFhYzdkNTEyYzZiMDc1MjMzMGVjMCBweTNrLXN0cnVuaQorNTU4MTggNjQ2NGNjNjM4ZmFhMGQxNDhmNjdlMTcwYTZhMzJiODFjZWYzZmExNCBweTNrLXN0cnVuaQorNTU4MTkgZTY2ZGFmYTk4NDAzZDYyNTY0NDYyMjU4MDVhOGVkMTMzM2I5NTAxNSBjcHlfbWVyZ2UKKzU1ODIwIDE0ZWM5NjczZjg5NDdjNzNmMzJkZWVkYjc0NTJiYjhkZTdkMmNkN2EgcHkzay1zdHJ1bmkKKzU1ODIxIDI0NTNiOTM3OTI1ZTg5M2ZlODY3MzJkNzk1MGM3OTliNzg5MDQzYjggbGVnYWN5LXRydW5rCis1NTgyMiAyOWQxYWYyMjBjM2M3YTViNWM0YThmZDBlMWNjMDMzMmY4ZDc4NGRiIHJlbGVhc2UyNS1tYWludAorNTU4MjMgZTE1M2JhMzUyYjUxM2M1ZjhjNzhhOGRiNzE3MzllZjg4MDJmMGFhMyBweTNrLXN0cnVuaQorNTU4MjQgZjQ4YzE5N2Y5YzM4ZmRlNmY2NDU2M2JjYTMzYmIzNzk4YzE0OGE0MSBweTNrLXN0cnVuaQorNTU4MjUgNThhMTMzMzBkZmRlOTk2N2Y5MzgyMjllZmM1ZWNkMTk2NDRlYWM0OCBweTNrLXN0cnVuaQorNTU4MjYgMGQ4MWE2NTY0MTJhMTdkNDFhYThhNzU3YTY3MjAwMjc1MmMxNDQ3NiBweTNrLXN0cnVuaQorNTU4MjcgMTRiNjVkZTliNzk4NTQ5MGExNzhiNTZiMjI0YTZjZDgxNjVmOTQ3NSBweTNrLXN0cnVuaQorNTU4MjggNTIyYTQ5NDVkZWY4MGU2MGM3MjNlN2I1ZjMzOTM1ZTA1ZTRlNTFjMCBsZWdhY3ktdHJ1bmsKKzU1ODI5IDFiYmNkMzkyNDE3ZGNhNTczYmRjMGQyOTIzMjQyMjQ4Zjg2OGFhNDQgbGVnYWN5LXRydW5rCis1NTgzMCAxMGY4YThhOTE5ZTJhMGQwOTdiN2EyYzQ5YzJiNDRkNTMxMmMwMTY3IHJlbGVhc2UyNS1tYWludAorNTU4MzEgN2I4NGU4OTE5YjAwMGM1MTMyNGE0YmE1NmViNzRlNDg4M2NhYTc1ZSBsZWdhY3ktdHJ1bmsKKzU1ODMyIGI0ZjRlZTg0YzMwZDdhYWU4MTJkY2NmODZlMDMxMGQ5NTlmMjY2ZWUgbGVnYWN5LXRydW5rCis1NTgzMyA4NjkxY2M3NmQ0NDE5MjUwY2U1MmYyYzg4NjUxYWJjMDMwYTA4MDRjIGxlZ2FjeS10cnVuaworNTU4MzQgMDY3MmRiZWQ1ZjdhOTc4ZTE1NjYzZDJmYTY0Zjk3YTFlM2I2ZWQ4MiBsZWdhY3ktdHJ1bmsKKzU1ODM1IGQ2MGQwZDBlZTRmOGM5YzgzNzI5YzNiZDY3YWJjYjRkY2JiMTBhNzIgcmVsZWFzZTI1LW1haW50Cis1NTgzNiAyYmY0ZGM5ZDA2NDdiY2FlNTYxMjQzOGQ2NjNhYjlkOTJmYTM0NzJmIHJlbGVhc2UyNS1tYWludAorNTU4MzcgMDUyN2FiOTQzYTRmMjIyY2Y4NjE4MTJjYjc3OTIzMGI4ODk2NWQ4YSBwM3lrCis1NTgzOCA3OWYxM2JmOGRkMjdhMjg1NzhkYTlkNmEwOTdkZjhjYzRjZjMwZWYyIHAzeWsKKzU1ODM5IGU2MmI2MDZlZmYwYjgzNjZlZjAwZjlhZjY2YzUyNjg3ZDk1NGQ4MDEgbGVnYWN5LXRydW5rCis1NTg0MCAyYmQ5NDE3ZGFjZDVjNTNhYmU3ODU0ZWVkNjQ0ODljMDQ5YjBkZjA5IHJlbGVhc2UyNS1tYWludAorNTU4NDEgMTZjZWU2NzRhNDEwZTU5MjYyNWJlNDYwY2M4Y2ZhMDVmNTcxNjQ4MCBsZWdhY3ktdHJ1bmsKKzU1ODQyIGU4NDEzOTcxMjEyZGY5NDUwOTBhNDhlYmVkYjY1NGQwNTUxZTU1ODYgbGVnYWN5LXRydW5rCis1NTg0MyAyODgwNWE3MjA0NTQwMDJjOGIzNmQ3YjU4YTZiMGY5NTk1NzMxMmFiIGxlZ2FjeS10cnVuaworNTU4NDQgN2M5MjI1ZGE1ZjYxMTU5YjQzNjhmMzQ4MjM4NWJhNzg4MDc3ODk0NiByZWxlYXNlMjUtbWFpbnQKKzU1ODQ1IGUyYzM5YTMwZTA4ZGQ2ZGM0OTlmNWI1YzcwMWQ3NjllNmFkMjBhYmIgbGVnYWN5LXRydW5rCis1NTg0NiA3MzFiNjk5NDIzMTc4MDE5ZjA2MmY2MGFjZDYxMGNlYmI1M2NmZDRjIHJlbGVhc2UyNS1tYWludAorNTU4NDcgM2RjNTA3Y2EyZTJiZWJiNTEwMzRkZGRmNDI5ZjkzNDliMDdjM2YyYSBwM3lrCis1NTg0OCA1OWM2ZjRjYmIzMjY4ZWMyYTQwNzgzOTM3YjdmN2VkNTQ4OWZlMjE2IHB5M2stc3RydW5pCis1NTg0OSAwMjIyNGRhNjBmZDE4M2JmZTE1YWFlOWRmYWYxZjU2ZDBkOGY4M2YwIHAzeWsKKzU1ODUwIGNkMTI1ZmU4MzA1MWI0ZTUwODc4OWRiODY0NDcxYzZjMmYyMTE3ZjggcHkzay1zdHJ1bmkKKzU1ODUyIDY0NDM4NTNiYTMxNDg5MWU3Y2RlN2MxZWIxNDg5MTVkMTcxYWQ1NmIgcDN5aworNTU4NTMgNmJlYjc1ZWVlOWM1MmYyYjEyYzliNDdjYzFkMTg4NjNlMzZiNjIzZCBwM3lrCis1NTg1NCBiMWI4ZWU4MDdiZGFkZTIxOWYzMDZjMmUyMzE4MTUwYmY3Yzg1NzYxIGxlZ2FjeS10cnVuaworNTU4NTUgM2RkYWFmNjE0ODA0NGFiNzllMDY3N2IyMmQ1Mjc0YjQwYjkxZmI1YyBsZWdhY3ktdHJ1bmsKKzU1ODU2IGIyMzlhMmJjYjI0ZjM1M2MxODIxMzc3NGQ0MDU0NTg2NDM0NTg4NGYgbGVnYWN5LXRydW5rCis1NTg2MCA3ZWFjY2Y1M2FkYmQxNGMzYThiNzBhMThkMWQ4ZTliMWZlZjU5ZjVlIGxlZ2FjeS10cnVuaworNTU4NjEgNzk5MGJiMjc1OWNiMzc5NGM3MWU5NzFjNTBjNjM4ZTYxYjAzZDI2ZSBweTNrLXN0cnVuaQorNTU4NjIgZjViNjU3MzFiZDZjOWZiNjFhZGI2YjU2Yzc0YzNmZDM3MGE0NzVlZSBweTNrLXN0cnVuaQorNTU4NjQgNmE0MzgyY2ViNzFlMmM5M2NmZWVkMmU0NTg4MGQ3ZWRkMjg4NzU3OSBwM3lrCis1NTg2NSAwZTliMGI4ZmMzZTdjZjFkNmZiYWQ1YzE0OGFlMjI1Y2RlZmY3OGU4IHAzeWsKKzU1ODY2IGIzN2E1NjhmZDQ0MWViNTVhMmFlOTU1ODYzOWJiNzZhZDBlYjdjMjAgcDN5aworNTU4NjcgMmQ1ZTIzNjVjN2RiMDViODMwZTUyMjJkNGYyYmM0NGNlZDc4ZjAzZCBwM3lrCis1NTg2OCA5ZTg1N2I2YzFlNTYzZTc3NGY0NDQzMjNjZDAyY2E1ODQ3ODZkNDgwIHAzeWsKKzU1ODY5IDE5ZmE5YzdkM2M0ZjA5ZDRjMjM4YzQ0ZjdmNjcwM2RkOWVhY2VmNTIgbGVnYWN5LXRydW5rCis1NTg3MCBlMWFmZTU2Y2E2YmEzMDgwOTIxMzIyODY3ZjIzNmQ5MzhjNjhkMjAyIGxlZ2FjeS10cnVuaworNTU4NzEgYjdmOGRkZDA3MmI4NThmYTM0ZGE5YWMzMjkyMGI0NzAwYzY5ZTJkYyBwM3lrCis1NTg3MiA1OWJjOGRhMDFjNjU5Y2Y4MTQ1N2YwZmYwYWYwMTkxNDRhYjg1M2FiIGxlZ2FjeS10cnVuaworNTU4NzMgZGRlN2MzN2Y0NTM2NGQ3NjYxZjM4MGJhYmQ4YmFlMGJkZDBiY2U0MCBsZWdhY3ktdHJ1bmsKKzU1ODc0IGI5NGYyODQ4MDViZTcwODI2ZTFhNTk4YzYyNzE3Y2RmYzEyMGNmMjEgbGVnYWN5LXRydW5rCis1NTg3NiAzNmI4ZDc0ZGViOWU5MjEwMmM5YmE1ZjhjNDZmY2YxZDcyNzg5MzNlIHB5M2stc3RydW5pCis1NTg3NyA3NWVmZTZiZjhhM2VjZWQ4NDFmYmVmZDZhNDdiOWE2MGYxNWRmMzFjIHJlbGVhc2UyNS1tYWludAorNTU4NzggNzFmMzE5MjkxNWUxMzFlMmY5MWE5ZDI4N2ZlMTM2OGU4YmQwYTQ3NyByZWxlYXNlMjUtbWFpbnQKKzU1ODc5IDQzMzIyZmY1ZTMxMmM0YTU0OTA0NWNlNjU2ZDEyNjQ0ZjE5YzEwNzEgbGVnYWN5LXRydW5rCis1NTg4MCBjOWUzYzgyODM4YzMzODMzY2Q0MGY3NWQ4NjM0MzNjNTJiYTAyYzJlIHAzeWsKKzU1ODgxIDczYjZjZWJjNmY3MjdhMWM5YzRhYzA0ZWZkNzc3M2UxMDRiMDJiZjQgbGVnYWN5LXRydW5rCis1NTg4MiBiMzU2Zjg3MjA5NDFiMjU5MmEyYjdkMmM3ZTQ1MjZhZDIxNTNkYTAzIGxlZ2FjeS10cnVuaworNTU4ODMgODIxNzhhNjA4MmVhZmJkMTUyMTRmZjQ2ODU0Zjc1OTM3ZmE3ZjkwNCByZWxlYXNlMjUtbWFpbnQKKzU1ODg0IDZmM2MzMzVlZjcxNmZmZTA0ZDhkMWNhYjI2MjA0OTZmZGNjYzNkNmEgcDN5aworNTU4ODUgOWI2YzQ2OTQ2ZTAyZGQ1Y2ZmMmFkMDljODIwMTc1NmUwNTAxZDZhMSBsZWdhY3ktdHJ1bmsKKzU1ODg2IDY0NDk4NTBjNTc1OWE1MGFjMjZlMTM2MmM4MjNlMTJlOWM5YjU0MTEgcDN5aworNTU4ODcgZDFkNzljNzFmZjYyY2FhZDg4YTRlM2FjYzcwYTAxY2MxMDllMGFjNiBsZWdhY3ktdHJ1bmsKKzU1ODg4IDlkNDA1ZTEzM2QwYjI0Nzc2Y2NmMDM3ZDYxZTZjOWMwZjg3ODQ1ZWIgcmVsZWFzZTI1LW1haW50Cis1NTg4OSA5YmJmZDg0NTY3ZDUwYTQwOWRiY2YzMjBjZmE5YzAyY2E1ZDk5ODI1IGxlZ2FjeS10cnVuaworNTU4OTAgZDBlNGEzMmY2Yjc4OTUxMmViOTQ0NmI1YTk0YjVhODFhODEyZGYzNiBkZWNpbWFsLWJyYW5jaAorNTU4OTEgMTYwYjczMThhM2NhYjZlMmUyMTE0YjNkYjY1MGYyZjA5MDIxMzI0MyBweTNrLXN0cnVuaQorNTU4OTIgMTgwODQ2Yjg3NTVmOTg0ZmIxOWVmYWE0ODMxYzJhMjlhZTQ2OTE1YSBweTNrLXN0cnVuaQorNTU4OTMgMDU2NjI3Y2IwZTQwYTBmY2ZlNTFhNGNjNTU0NjBlZTI1MWU3YzI1NSBweTNrLXN0cnVuaQorNTU4OTQgZjgzY2M5YjMxYTk3N2JkZTk3MzVhYzJkMzY3MzRiMzIzYmIxZjc2NCBweTNrLXN0cnVuaQorNTU4OTUgOTZlZWZjN2E2N2EwZmM1N2UxYmRhNDVlZDhhZDBiOWYxZWVmMmExMyBweTNrLXN0cnVuaQorNTU4OTYgM2U2NGQwZWFjNzc0OGVjOGY1ZWU1MjU5MjcwNzQxOWY2MjFjZTRjZSBsZWdhY3ktdHJ1bmsKKzU1ODk3IGUwZjkyNzQxNGRmYTM5YTE2MjY4MTNlYWJiNTEyMzQ5NjU1NDZkZTcgcHkzay1zdHJ1bmkKKzU1ODk4IDYxZmQ1NDQ0ZDk1ZjgwYmUxNDQ4MWY4OGQ1YzYwNmEzNzBmZTFjZTIgcHkzay1zdHJ1bmkKKzU1ODk5IGZhYTYyNmQ2ZTY3NTE3MmRhYjU2ZDFiYjQ3YmY2ZTY0YTYzYzVlNmIgcHkzay1zdHJ1bmkKKzU1OTAwIDE3MWYwZTA3MzY3MTI2YWNjZmJjMjdmZDhkN2E1ZGI2MmVjN2Q2NjAgcHkzay1zdHJ1bmkKKzU1OTAxIDk1YmU2YzNhZGU2ZTljOTVlM2U1MDE4ZGY1NDQyZmRmOTIzY2U4YmYgbGVnYWN5LXRydW5rCis1NTkwMiBkNjc4YmEwMTc3ZGFmYTFkMjExY2E1YzI2ZjE3MWFmNjNlMGZlYWY0IHB5M2stc3RydW5pCis1NTkwMyAzOTEwNTMzYjY2YzdhZDQ4Mzg3ZjM4NmVjNWNlMWU1MTRkNmY4ZDdkIHB5M2stc3RydW5pCis1NTkwNCAzYzNmNjE1ZWRjZmZmN2EwNWI5NWVlMDg4NjJlOGI2NTdkMmQ4OWNkIHB5M2stc3RydW5pCis1NTkwNSBjNjMwZTNhNjg4ODNkYzM0OTA0NTRlYTdjMmUzOGNjZmI1NDBmNmE1IHAzeWsKKzU1OTA2IDU3YzM0NDE0OTcyN2YyZTRmOTFjZWViZTkyZTYyOTIxMjFhNGU3MDcgcDN5aworNTU5MDcgMDJkM2VkMmNjMzQ3NTkwMDIyYzA4YTcyODNmNzU1N2YyNzZhZjU5MCBwM3lrCis1NTkwOCAxOTBlMmYwNjliMTgxODAyYTYzMTBjMWJjZWRkMDA3MjBkZTY3YzE0IHAzeWsKKzU1OTEwIDVlMTQ2OTY4NjhmOTcxMzlmNjI5NGIxMDQxOWU4M2IxNmZlYWNjNjkgcDN5aworNTU5MTEgNmY3MjIwOGM2NDNiNWU0OTAxYWIxMjRlNTdlODBjNWNiYzZjYThlNCBwM3lrCis1NTkxMiA1YzI2ZmUwN2RlZGY1ZDg2ODViYzEzODEzNTBlMDY0OTkyYTJkZTBiIHAzeWsKKzU1OTEzIDdiZjgzNjA5ODBmMWYzYzE4MTI0MzhlNTcxZDE4ZDBhOThlMTVjOTAgcDN5aworNTU5MTQgOGRiMDY5Njc2MmI0ZjE3ZDczY2M2YWViNGE5NjNjYmQ5YzkzYzljNSBwM3lrCis1NTkxNSBjYTY5M2Y0ZmQwNWQwZTI5YjA4MDgzM2QwYzYzYTQ1M2U4OGU4NTEyIHB5M2stc3RydW5pCis1NTkxNiA4ODEyMTYyZjBmODJhNjk4YzExNjUxNzY0ZTcwMDYxMjZhNTcxOGVlIHB5M2stc3RydW5pCis1NTkxNyA4ODFhYjFkNDE3ZWJlM2ZlZGI0N2I4ZjNiOGNlNGMyMGE1Zjk5MTk1IHB5M2stc3RydW5pCis1NTkxOCA4MDJjODRmOTlhYWQxNWI2NjBiNGVmNTA5MzMyYTk0MmQyZTgwM2NhIHB5M2stc3RydW5pCis1NTkxOSAwNjM1MzBmY2MzMmU5ZTE0NWNlZjJjYTMzYzM0NjZmOTNmYzUwZWEwIHB5M2stc3RydW5pCis1NTkyMCA2ZDY0NzIxZWNkMjY4Y2UxNWUxZTdmYzY4NzQ3Yzk2NzAxYjhjYWI2IHB5M2stc3RydW5pCis1NTkyMSAzZmFhOGM4MDk3MDI2YmU1ZjFjMGQ2MDQwZTk1YTAyNzc3ZmFiODEzIHB5M2stc3RydW5pCis1NTkyMyBhOTlhOTZiNWIzZjVjYzE2Mjc3Y2RjNGY1MGQ5MTY0YzA5NzFjMGI3IHAzeWsKKzU1OTI0IDE3MmRjZTVmYWJhMWRiYWE1NDcyZjgwMWQ1ZWU0M2VkNzY1MGJlYjkgcDN5aworNTU5MjUgMzQ3M2E2ODVlNWU3ZjhlNDRlOWI1MzZhZmYyODk5YzM4ZmIxNzA0MiBweTNrLXN0cnVuaQorNTU5MjYgYWYyNjA4MDA0MDIxZDZlZGIyMDdlNGY1ZDE5NTJkMThmOWNmZmNjZiBsZWdhY3ktdHJ1bmsKKzU1OTI3IDA0NTliODhlMTRiNDE0ODM3MjQ0MzA2MmRjMDNkYmEwMDM5ODk2MmQgbGVnYWN5LXRydW5rCis1NTkyOCBiYTVkMWEzOTc3ZTkzZDEwZGUyOTc5ZThiYmQwNWFmYzM4OWFlNDQ5IHB5M2stc3RydW5pCis1NTkyOSAwYmQ3NTkxNmVjNTgxOTEyY2EwZDNlM2RiNzZhYzkwOWI1MmJhNThmIGxlZ2FjeS10cnVuaworNTU5MzAgZDBjZmZmODkzMGU1NWFlZTcwZWExMzhlNWJmOGEwN2JmNTlkMTA5MCBsZWdhY3ktdHJ1bmsKKzU1OTMxIGRjN2E4MmM3Y2U5ZWNiNTg1YzI4YzBkNThiOGRmMmYxZGVjNTE0ODYgbGVnYWN5LXRydW5rCis1NTkzMiBiYzkwZmM5YjcwYjc2MjM5N2ExZjg0YTQ1NDY0YmNhYWZiODA4YzhiIHB5M2stc3RydW5pCis1NTkzMyA0ODc3MDA4MDc0YTkxYjgwNDQ5MDRjZTU0MzU2ZTQ1YjVkMWZjYmE5IHB5M2stc3RydW5pCis1NTkzNCA2NTdmZTc5YTZkZmViYjNhNTA3NmZlYjlkNzMzZmRmMTBiODIzN2U2IGxlZ2FjeS10cnVuaworNTU5MzUgZThiMjA2MGNjYjU5YzdhYjUwOWEwOGY1YmZiOWFhYjMzNzg4MWJkOCBweTNrLXN0cnVuaQorNTU5MzYgNDViYjk3YTRlOGI2NzExNzhiNjUzZDAxMTUwYmJiZmE2YThmZWUxYyBweTNrLXN0cnVuaQorNTU5MzcgNGZiODVlNmY4MmU1ZTJmMDMyMmM2NWIyMjc1ZjZiMzQ2MDVkMWFjZiBsZWdhY3ktdHJ1bmsKKzU1OTM4IGU5ZmIwNmI0NDQ2ZTBlOWU5NGU5NjRjNWNiYzZmMjRhMWE4ZTY5MDcgbGVnYWN5LXRydW5rCis1NTkzOSA1NjA1NzE5YmVlZTNjYWY1MzgzY2M1ZjU4YjA4YjE3NWNkMDQ3YzZjIHAzeWsKKzU1OTQzIDgyNTA0MWZjOGUyYzFlZDRhM2JmZjE3NjQwNThiODUzZWZkZjg0MTkgcHkzay1zdHJ1bmkKKzU1OTQ0IGNlNjNhNWRjYjBhZjEzNDE1ZjliZmE0NzU1MWNhNDg3ODljYjAyNWYgcHkzay1zdHJ1bmkKKzU1OTQ1IGY4MzNiNDNjMjc1Njg5ZWIyNDRlNmJkMWQ0MDg1MjU2MWYwZThjZTggcHkzay1zdHJ1bmkKKzU1OTQ2IGZiYWJkYjBkN2RkMjJjNGE2MTY3NTFlODdlOTE3MGQzNzBjZmFhMDEgcHkzay1zdHJ1bmkKKzU1OTQ3IDhjYTFkM2E3ZjRmMGY5ZGY3ZTg0MjkxMmFlNzc4ODU1ZjkzNjNhOTAgcHkzay1zdHJ1bmkKKzU1OTQ4IGRlODgwMzgxNjU0YWY2ZjcyMGVmZDQzMzMxMGJhMTUzOWU3ODVmNjMgbGVnYWN5LXRydW5rCis1NTk0OSAwMzE4YTBmNTQ1MjBlNDI3MWE5OGMxYjc5MDE2ZDE3MjdhOWJkMDJlIHJlbGVhc2UyNS1tYWludAorNTU5NTQgNjBiZTI3NjEwNTdiZmRkM2U0MzE4Y2E1MDNhZTk0ZGM4OTZkOTYwZCBwM3lrCis1NTk1NiBiNTM5MTIxNGRmMzVkZWU3ZTY1ZjY5ZjlhNGM0OGE2MGUxNTEzODEyIGxlZ2FjeS10cnVuaworNTU5NTcgM2Q5ZTBlZmNhNWQzNTI5NjQzZGJhYzlkZDc3MGYzMmE1NDQ4M2Y4YSBsZWdhY3ktdHJ1bmsKKzU1OTU4IDUwYmViZWRjNjE0ZWQ1NGQ1NDQzOWM1YmY2MmUwODNjZDVhMWUyMTYgbGVnYWN5LXRydW5rCis1NTk1OSA5ZTExNGIxZmQ5NGU4MzgwOGZmNTA4MjBjZjRhODlkYWQzNzEyNmMyIHAzeWsKKzU1OTYwIDA1ZjFmZDMxMzQ0ZGQ4YmU2ODA4YTRkMGVlMjllZmZlMTJlOTIzODQgcHkzay1zdHJ1bmkKKzU1OTYxIGZmYjFhZTcyMzNhMjI5OThmMTk5MWE1MGEzOGNlNGI4NWY3ZGE5NDEgcHkzay1zdHJ1bmkKKzU1OTYyIDM3MTg5ZTM3NWVjNzk2YWIxNjA3YzVkM2Y5ODE5MzNjYTc2ZTAwOWQgbGVnYWN5LXRydW5rCis1NTk2MyAyMjljMjhjYjlhZmIyMzI5YzBmNTU3YmFkYmQ1YWYwOGIzNDYyZDczIHB5M2stc3RydW5pCis1NTk2NCA1MzY5OGY5YTRlYjc2ZTU0OGIyYTBiNjc2Y2FhNzc4NTNkNmQwYjBlIHB5M2stc3RydW5pCis1NTk2NSA1Njc1ZjZjM2ZmODNkMWYzMDdmMTI5ZjAyZmQwY2FkMGY4YThhZjdkIHB5M2stc3RydW5pCis1NTk2NiA5NzM5OTJhNzQ0MGExY2M1ODIxMDg1MjU4Y2M2NjM2ZWQyOTJhYzM3IHB5M2stc3RydW5pCis1NTk2NyBiN2U1NDk4NTczMjE1OTdiYTlkNDdkMzUyZTM3Y2M0YmRhOTQ2NTU5IHB5M2stc3RydW5pCis1NTk2OCAwZTAxMGRiMTIyYzcxYTJlMjNjNjJlMDUwYWUyZGVmY2RhNWM5OWIwIHB5M2stc3RydW5pCis1NTk2OSA4NjkzN2IwY2Q1NmE2YzBhYWI5OTAzNDM2ZjE3NTc5NTQ4NWQ2YTJkIHB5M2stc3RydW5pCis1NTk3MCA3MmZjN2QwMjlkM2QyYjNjMWQ2ZjEwODNmNjk0MmJmYTZmNzQwNjQwIHB5M2stc3RydW5pCis1NTk3MSBkMTdhMjcyNDc5ODYzMDI2NWFkMDM1NGQ5NjQ2NDc2MGJkOTc2MmE2IHB5M2stc3RydW5pCis1NTk3MiAzNjU2N2ZlMDJlYTVkMTExNGQxM2FhZTUzN2Y5NWQ0NzBhMTE3MzJmIGNweV9tZXJnZQorNTU5NzMgNDk3ZmFkZTFmODczNDgyNDZhYTQwNmQ3YzRlODM0YzljNzI2ZmI3NyBjcHlfbWVyZ2UKKzU1OTc0IDJjZjdjZTQxZWM2MDM1OWIyOWMwYTk3YWU3ZDBlZmUzMTA1NTA4ODQgY3B5X21lcmdlCis1NTk3NSBmZDhkZDc0NDcwZjk1OTA0N2VmOTM0YTk5ZDVmMDM0NTQyNTk5NTc4IGxlZ2FjeS10cnVuaworNTU5NzYgNDRiNDRiMGE5ZmUyNTdjNzQ4ZjkzNzUxZDU3NDAwY2NiNGVhZWMwYiByZWxlYXNlMjUtbWFpbnQKKzU1OTc3IDI3MWY2ODZmNjIxODExZGNjNjMyODIzNDkzNWI0MTA2OGNlOTg5YTQgY3B5X21lcmdlCis1NTk3OCBmNjU2NzJiOGU3ZDFmZWU5NDdlNmZiOTFhODVjOTIzMzIzYzI0OWZkIHB5M2stc3RydW5pCis1NTk4NCA4NWM0NDZmNGIxOTYyMmNjODhjOGE3YWZiNDhlODkxNDMyNTU1ODVhIGxlZ2FjeS10cnVuaworNTU5ODUgNGY2Y2U5OGIwNjBkMWZjNmM5NDU2Y2JkNmY1NGYxYTY1ZWI0YTFkOCBwM3lrCis1NTk4NiAyNDYzMjRiMzk4OTZiMTMwYmQ3MmVkMTg4YzU5YTQ5YTlmN2Y0ZjBjIHB5M2stc3RydW5pCis1NTk4NyA1ODM4YmVjN2MxMTU4YWUzMDA1NzY1ZTYwN2U5ODdkM2IwNGU0OWM0IHB5M2stc3RydW5pCis1NTk5MSA2NzI3Y2M5ZWQwOWZmMWY1YjA1ZGIzMTZiNzA0OTQ5ZDlmYzhiYzM2IHB5M2stc3RydW5pCis1NTk5NSA0ODc3NDdkOTEwYzc2MmMwMmVhM2RlN2FmZDZkMzhmZTE5NDI5MjZiIHJlbGVhc2UyNS1tYWludAorNTU5OTYgZDZkMWU4NmFkNDZjMWU5MGQ3ZThlMzE0NzBmYTRlODI1YTA1NGM5ZSBjcHlfbWVyZ2UKKzU2MDAxIGVkNmM4MmRhMWE2Y2VlYjFkOTVkMTg3OWNkMDQxM2QxZmI2MjU4YjMgbGVnYWN5LXRydW5rCis1NjAwMiA5YmE5OTJmNjRlOTU3ZjA3ODZjMDU4NDQ2MDVkMmEzYWI1ZjNiY2E2IGNweV9tZXJnZQorNTYwMDMgZTRlNmE0ZDdjMTZlOTU4Y2U0OTE0MDI1MzkxYzkxYjhjZTIyYjk1NSBwM3lrCis1NjAwNCA3ZDdjNDgwNTYzZTIxY2NmZGMwNWI4YTdlZjE4MzU0MGVhM2M1OGJmIHAzeWsKKzU2MDA1IDhlODYwOTQzMmU1NmM4OTFmYTNhODFiNTc1MzRiNDhiNTdhODUwOGYgbGVnYWN5LXRydW5rCis1NjAwNiBjZWQ4ZGI2MThlNWI2YmVhOTU5OTY4MTQ4NjQ3NGYxMjRjOTBhZGVkIGxlZ2FjeS10cnVuaworNTYwMDcgNDFkNDVjMjJmMTQ3ODYxZDI4OTk1ZWM3NWZjYzgwZDBlMjhhOWE5NSByZWxlYXNlMjUtbWFpbnQKKzU2MDA5IDg1M2I4NDA5MzE1MTQ2ZjQxMzI0M2YwZWNlOTY0YTAzNDY0NTIxNTcgbGVnYWN5LXRydW5rCis1NjAxMCA1NmVjMzQ3ZGE4ZTQyZjRkNjQ4Zjc1OWEyZTVhMGIyMjY4MDY1M2FkIHJlbGVhc2UyNS1tYWludAorNTYwMTEgYTlhZWNiZjViMTNmMDIzYzdkYzk4NzIyMzMzODhiNDY1OTIwMjA0MCBsZWdhY3ktdHJ1bmsKKzU2MDEyIDAyZGE2MzA1OGQ2YjE0ZTlhMTA2NDQyOTg5NmViYmE0NmZkYjVkOTggbGVnYWN5LXRydW5rCis1NjAxMyA1OTQ5N2VjMjhjYWFiZTEzNDJhNjQ1MTMyYTM3MDE1YmU0MWQyM2NhIHAzeWsKKzU2MDE0IDA4MDUxNTc3MzRmOGQ5ZGMyMGY4YzczZDk0OTU0ZmIzNTEzMDQyNTMgcDN5aworNTYwMTUgMjU5ZGUzODc0NDIwNjAyMjI0Njc5MDQyZTQ4NjkyOGMzYTdjOWMwMCBwM3lrCis1NjAxNiA4MjgyM2UxM2I2NmNkOWU2MGIwYTZhYjJjYTQ5OGFhNmQ4MzA4ZTE0IHAzeWsKKzU2MDE3IDBlMjA0MzYyMzI5ZWRlNzI5NTRlMDNlOTczMDY0Njg1MmVmOTJlYWUgcDN5aworNTYwMTggYjQ1NjVlMDk2MTMxZjFkMWRmMDQxNzk4NTdmNzAzOGMyNTZiNDk5YiBwM3lrCis1NjAxOSBiMmU3MzM2ZmViODI2YTc2ZGJhZDk2YTgxNmZhZTRiZGJkNjM2YTM2IGxlZ2FjeS10cnVuaworNTYwMjAgZTRmNjQ5YzRmNDU3MjVlZGY2ZDliYmRjNmU2NjE4ZmJjNzAzOTY2NiBweTNrLXN0cnVuaQorNTYwMjEgMzJmZTJiOWU5ZjExMTQzM2M3Nzg4MjExMTg5ZTAwOWM2YzExOTM4MyBweTNrLXN0cnVuaQorNTYwMjIgZWJjODdiOTRlNmVhYjVkMTAzODAzMDk5NTgzYmJiYzMyMjM4M2ZlNiBweTNrLXN0cnVuaQorNTYwMjMgYTRhZTYyNjUzYTVjYjE2OWNkZTBmNWFlZmQ1MGJhMTRiZTBhYzcxMSBsZWdhY3ktdHJ1bmsKKzU2MDM3IDdjODkyZTczZThlNDlmNTA1NThhMjYwOTFmMjE2OWFhZjliNGM2ZTUgcDN5aworNTYwMzggYWFiOTA4MGFjNGM3ZWEzNjllMmQ3OGEwZDE2NGFhMGVmOTU1MzZkMCBsZWdhY3ktdHJ1bmsKKzU2MDM5IDY2YzgzNDdhNjRkZGFlZDA1YzFkZDg1ODY4MDZiN2U4NjY4OTU4MWMgcmVsZWFzZTI1LW1haW50Cis1NjA0MCAwNGE0MTg1YmQ0ZDNjYzE2NTM1ZDA2YzkxZDk2NWY1YTZlMzRiNTdkIGxlZ2FjeS10cnVuaworNTYwNDEgNjdmNzA5N2MzNGYzNDk5ODI4MDUxZmFjNmVkMzI0NDkzZDA1MTdlNiByZWxlYXNlMjUtbWFpbnQKKzU2MDQzIDcwYTA4MzFmZWRhNjkwZTQ0YTUyOTgxMGYyOGJmMjk4Y2JjZWIzMDggcHkzay1zdHJ1bmkKKzU2MDQ0IDRkYjBhMGNjNTdhYmVlOTU0MTFjZTBkMTk5Mzc0Y2VmMmYyOGQ0MmQgcHkzay1zdHJ1bmkKKzU2MDQ1IDA0MTM5ZTMwZTY0ZGE5NTFlZjdmZDU4OGYzZmEyN2I3NzBjMDY2OWQgZGVjaW1hbC1icmFuY2gKKzU2MDQ2IDg0MjUzMzQ3N2NlYTU0NDQ5ZWIxNzc3YzYyNTYyMTFmNTUxNDI1MjYgcHkzay1zdHJ1bmkKKzU2MDQ3IDFmMDZkNWVlNDBiZDdmMmMxYWM4N2EzMDFmNmI4OTUyM2EwNWUyOTkgcHkzay1zdHJ1bmkKKzU2MDQ4IDY3MTBmNDUzY2Y0YThhMmU5NTc1OWI3YmYzZmU4NjI3N2QyMGZmODUgcHkzay1zdHJ1bmkKKzU2MDQ5IDM4M2M4OTA3YmVhMDQ0ODAzMWRmYjg0ZjdjZTUxNDNlZjhlNDI3YzYgcHkzay1zdHJ1bmkKKzU2MDU4IDZiMzI1YjA2NWFlZGFlZjMxZGFjZTViYTk2ZTc3Y2QzYzFhMTkwZmUgYmNhbm5vbi1vYmpjYXAKKzU2MDYwIDM5ZWFhOWMwMjQ2ZTRhMmIyMDgzOGQ0NGM2ZWYyZmI4OTBjOWI2YmIgcDN5aworNTYwNjkgZTEzZDViMTA1M2VmODMxOWZlNmYxZTIwODc2M2Q4NDJlMjM2NmQwOSBwM3lrCis1NjA3MCBiZTlkZTA1YmI4ODljYzJiOWQxMWVkMDU3ODk1ODM0NmVhZjg4YjgwIHAzeWsKKzU2MDcxIDk1OTI3Njg0NDc2YmUxNmJkYjNmYTA3ZWY1MmU0YTcxZGI4MzliNTAgcDN5aworNTYwNzIgZjk3YjY2ZTlhYThmMGQ3YjY2ZjZhZDJjMGZiNGE2ZjJlZDkzOTZiNyBkZWNpbWFsLWJyYW5jaAorNTYwNzMgNDU5MDEyOWU0YzJiNWRmOGQ0ZDI2N2RhODllMmRjNmQwMzE3NTRmNiBweTNrLXN0cnVuaQorNTYwNzQgNzljMjY1NjA1NmY2NzVlYWE4NTBhMjViNGUwMTdjZTUyZGY3ZDQ5MyBweTNrLXN0cnVuaQorNTYwNzUgOGZjOTMyMTVjMGNjZmJiMDQwODgxNGNhNzNmZmVmMzAzZmI4NmRiNyBweTNrLXN0cnVuaQorNTYwNzggYzI5MWQyZjZkMDE3ZjI1MTVmY2Q3MTk0Y2RjNzVlOTBjYmY0MjRhNyBjcHlfbWVyZ2UKKzU2MDc5IGI5YmY3Yzc2MGExMDI1YmJhZWM3YzI5MTQ0MzI4YWQwZGRmZTcyOWQgY3B5X21lcmdlCis1NjA4MCA5YjU2YzkxNjI1MzQ3NGFhNzZiMTRiN2Y2OGEzYjk5NGUwZTdlMGVmIGNweV9tZXJnZQorNTYwODMgZTg3NmY2NDM5ZGM3YmM1YzJiNjY1ZWRmODY4ZGU0NGI1N2NlYTY0OCBjcHlfbWVyZ2UKKzU2MDg0IDQxZThhZDJjOWJhOTkxYzk1YTAyMTM5NGM5ZGM1YmYyODQzNjlkMzIgbGVnYWN5LXRydW5rCis1NjA4NSBkODM3YjU4NDZkNDE0ZmNkODBmNjlmNTEzOGZjMGY2MzhiMDExNjNlIHJlbGVhc2UyNS1tYWludAorNTYwODkgOWE2YWM5YTdlM2E0ZmY5ZmM2OTEzYTI5MjQzMTMyMmRhNjhiNjgxZCBwM3lrCis1NjA5MCBkYjMyMDg3MDRhYzBhZjlkNDkzNzQ0YTBkZDI2MDQ1Y2IxNWNjMTU3IGJjYW5ub24tb2JqY2FwCis1NjA5MSA3MDViYzczZWU0MzMxYzhjMzBjOGNjMjNmMjA4MWYwYzM5NjliZDY1IGxlZ2FjeS10cnVuaworNTYwOTIgYjAwNzRmZDkyNjIxYzY3M2MxNzJiZTYzOTJhMDAyN2JkM2RhOGM0NyByZWxlYXNlMjUtbWFpbnQKKzU2MDk1IGJmNmViODg0N2E0MjQ0MDI5ZGIwZmRhNTNiNjhhNTg1MDk1NWE4ODEgYmNhbm5vbi1vYmpjYXAKKzU2MDk2IDE1OTAzMWRiOGU5ZjI4NTczMDc1ZTVlYTVhNmIyYzc1ZjMxOWY4OWEgYmNhbm5vbi1vYmpjYXAKKzU2MDk3IDYzM2IwNDk0N2FjNDYwNWMwNjRiOWJmODljMmMwZDc2Zjk1ODFjZjEgY3B5X21lcmdlCis1NjA5OCBiYjA5ZWFkMDQ4NDA1M2FkYTk1NTg3MDcyZDgxM2YyY2JmMGFmZjU5IGNweV9tZXJnZQorNTYxMDAgYTIwMDI0MGRlYThhYjc2MzllNWJjYWU0NTYyOGQ4OWZlMDAxZTg1YiBiY2Fubm9uLW9iamNhcAorNTYxMDEgM2Y1ODljNTY0NDI2ZDg3YzFkMDU3MmQzMDJkZTYwOTUyMzUxYmViNSBiY2Fubm9uLW9iamNhcAorNTYxMTEgN2ExMThhYzE0OWEwNjY3MDAzYTVlZmYzZGMyNmYzOWFlODZlZjNkNiBiY2Fubm9uLW9iamNhcAorNTYxMTIgNTBkMzI2NDdiMDM1NjUyYWIyNzUyYjczMjAwODZkMjdlYzJjNWVmZiBiY2Fubm9uLW9iamNhcAorNTYxMjMgNWYxNDhmNmUwYTQ2Nzk4ZWFlYjI1NWRiZDI4ZDEwMDdhMWExNDEyOSBjcHlfbWVyZ2UKKzU2MTI0IDMxNGFkYzNiN2JiNDc5OThiOWRlNjkzZDEyNmE0MzZhZmNmNDE2ZWMgcDN5aworNTYxMjUgN2ZmMzVhZDQ2NmVjNTVlOGRiM2JmMzNjNzBjOWM3ZjYxYTg2MDM3YyBweTNrLXN0cnVuaQorNTYxMjYgODYzZWQ3Y2Q0NWRjOGVkNTY2MWQzOTcxY2YwZGE3NjJkMDcwYTBkYiBweTNrLXN0cnVuaQorNTYxMjcgNDE2NzY4MGIzYWUyNGYzZjYyYzEwOWJjNGRmNmYyZWIzMmI2MTRjNCBwM3lrCis1NjEyOCBhODU4MmUyNTc0OGI3Mjk1N2ZjZDQ3ZDI5ZGExNDNiZjQyZTZiNjMxIHB5M2stc3RydW5pCis1NjEyOSBkYTRjYzY3NjczYTg1MWI2ODk2MTE3YzI5YTA0MDAyOTJlYWEzMzRkIGxlZ2FjeS10cnVuaworNTYxMzAgYzc2YTk0MzIyY2NjODhjZmM0NDE5N2FmYmRmNTI2NzhlYjhlMThhMCByZWxlYXNlMjUtbWFpbnQKKzU2MTM0IDc4YmMwNzhjNzM1MGUyZjlmZjYyMWFmNDMzNjBlMTYwZjMxYWQ4ODYgcHkzay1zdHJ1bmkKKzU2MTM1IDgzNzUzNTk5NDIwZGM5MzhiMmNiNWUwNTE0NzQwZDE1MTBhZDlkY2YgcDN5aworNTYxMzYgMjg5OWNmOGNhNTcyNWYwYTA0MTk5ZDI4YWU2YjNkOWJlMzJjNTAwYSBwM3lrCis1NjEzNyBkY2NmMTRmZTAwZWNkM2NjMWU2NDdhZTEyMzEwZDcyOTMyMGY2YWMwIGxlZ2FjeS10cnVuaworNTYxMzggOTA4NTgwYjljOGUxMGJmMmI0MzNjYmU5ZmM0Y2MxMGVjN2Y3MGM4MSByZWxlYXNlMjUtbWFpbnQKKzU2MTM5IGY1MzU3MTI0Y2VmZTU0MjEyZDIwNDJkZDU3M2FkYmM3Y2IyZDU4NTcgcDN5aworNTYxNDAgMWY3YjY2YTlmZmIwZDI3MmIxN2IwZDlkNjA5MGFiN2Q4NmE4MTM4MCBweTNrLXN0cnVuaQorNTYxNDEgZTNiY2I5ODRiMjRjOGU5ZDkxOWE0ZWE2NjliN2YyMTU1OTFiZTM4ZiBiY2Fubm9uLW9iamNhcAorNTYxNDIgZDRjNGY4OWM3NzdkNDUzOWFkZWVlYjNjYmMwMDgwMTI4OTcxYzJkNiBwM3lrCis1NjE0MyA0MDdkMTc0ZGI2ZGVjN2ZmNzdhNGE3YjA2OTM0NjNiNzQ3YTJkMDFiIGxlZ2FjeS10cnVuaworNTYxNDQgYzNlYTI3NzljNjM1OGE1MjUzNWEyY2U2NDYyNzY3YmY4YzA2YTNmYyByZWxlYXNlMjUtbWFpbnQKKzU2MTQ3IDYwNGJmYTYzYzExMzg5ZmRhOTNiYWI3ZGYxNDRmZTk5OGUwMWJlNTcgcDN5aworNTYxNDggMjEzNzQzNjkzNzVjMTY1OThmNzExNWJmYzNjMjBiZThiZDQ0Yzg3ZCBjcHlfbWVyZ2UKKzU2MTQ5IGFiNzRiZGJmNmRhYWZkYjdlMWNmOGY3NTEwNjdmN2QzOGFlYzczYWIgY3B5X21lcmdlCis1NjE1MCBlYjJkNTI1ODYwMTc1ODc5ZmFkNTk1NjVmNDJmY2M4MDEzNjlmN2U3IGNweV9tZXJnZQorNTYxNTEgZmViMjc2YzA4OTE3MWM4ZGYyODNhMWQxZDhiZWE2YmI1YmU3YzdlNSBjcHlfbWVyZ2UKKzU2MTUyIGMyY2MxMjAzYmQ2OWM5NmVkOTgyM2IzYWJiZTM5MmM2YTlmMDRkODggY3B5X21lcmdlCis1NjE1MyA4MTdjYmZmOWZiZWI0ZGI0NDVlYTQyNDUyNDg5NGJmNjI1NDAzMGY0IGNweV9tZXJnZQorNTYxNTQgOGExN2U0YzQyYTM1ZmI5NjliOWE3ZTQ2NGY1YjA0ODllYzBmZjU3NCBjcHlfbWVyZ2UKKzU2MTU1IDViMWU3NGZjNDJiODFmYjUwNmMxNTQ1Mzc5MDlhMWNkNDBmOWMwYTIgcDN5aworNTYxNTcgYTUzZTQ4YmU2ZGY5NTUyYzYyZmQ2MTMwNDdjMWM2N2M5NzFkNDU5MCBweTNrLXN0cnVuaQorNTYxNTggMGRjNjI2NDdhZmYwY2NkYzc5NTQxYmI0OWE2OTcxZDgyOTBiNmU5NCBweTNrLXN0cnVuaQorNTYxNTkgYWU4NzAyMjhkNWYzMzRlMzkxNzI3NTYzZGFjOThlY2RjMDY4YWIxMyBweTNrLXN0cnVuaQorNTYxNjAgMzFmNDc3YjA4OGM5ZjYyM2JiZmExZTMxYzJlMDNjMzMwM2Y1MWMzMCBjcHlfbWVyZ2UKKzU2MTYxIDhlZWFhOTkyMzkwMWYzODg0NTIyMDk3N2ZkZWI3MTE3MzVlOWYzNTkgcHkzay1zdHJ1bmkKKzU2MTYyIDAxMDJmNWU1MzcwMzlmNjI2ODY0Njc3ZjhlZTIwZTk3Y2U0M2Y3NzIgcHkzay1zdHJ1bmkKKzU2MTY0IDUxODdlZDY4YWJlMGI4ZDNlM2U3MWExYWRkNDRlMzY4Mjc1YWJkNjcgcHkzay1zdHJ1bmkKKzU2MTY1IDhhOTRjZTUwMjIwOWIwOTU1YTQxZWI2Mjc1MTg1ZDI0MTFmYWNjYzIgcHkzay1zdHJ1bmkKKzU2MTY2IGU0NzY5OTcwNDhhMGFiNTEzZDU3ZjIyMWVlYTAxMmFjMGU4MGFjMzIgcHkzay1zdHJ1bmkKKzU2MTY3IGU2YzVmZmE2ZGM2NzM4MTRlZmM5NDhkODI5OGQ5ZWE0MDE5Y2U2YTQgcHkzay1zdHJ1bmkKKzU2MTY4IDQwYTZiOTNmOWUwYmU4YTExNmRjNmY2YThjOWIxYzE0ZjZlMTI3MGMgcHkzay1zdHJ1bmkKKzU2MTY5IDNmNzgyNzgxMDIwYmUyMmY5NTFiMzJjZjQyZDZhMDgyMTQ3NmZjZTYgY3B5X21lcmdlCis1NjE3MCBiMGVhYmE4YjlmMDI5MzU2MjMzYWUxYjc3MmJkOGZhOWE3YjQyMDcwIGxlZ2FjeS10cnVuaworNTYxNzMgNzk2Yzc5NjIzOTM4MzY3NTFjOTYyMGNkMTI0YzJhNThjYzQ2MDFjMCBjcHlfbWVyZ2UKKzU2MTc0IDhiMmZlYmZkYTVmOTlhMzllZTc2M2FkZjMxZTBmZTg5NmI0MThhOWUgY3B5X21lcmdlCis1NjE3NSBjNDA0NGU0N2ZjMWFmZWQwZTc0ZjU5ZmJkNGE4ZDI1YjczMGQyZDQ1IGNweV9tZXJnZQorNTYxNzYgOWU1YTM5NjA5YTIwOGRkMWVkMGE0OWVkZjRkZTcwMmQyMDJiOWFkYSBsZWdhY3ktdHJ1bmsKKzU2MTc3IGQ2MzYyZWQ1NDhiMGIxNzBkYzUyM2I5ZmIwMzBlOTViMDBlYmMyM2QgbGVnYWN5LXRydW5rCis1NjE4MSA3MjI0ZTQyMDgxYmQzODFiYjk4OGFjNjBiNTk0Njk5MDE1YjcxNDBhIGNweV9tZXJnZQorNTYxODIgZGQ4OTYwNTEyNmU1ODVjZGZkMWQ3ZDA2ODhkNGI4ZmM0OTQ5ODE1MCBjcHlfbWVyZ2UKKzU2MTgzIGRiYzc1M2MwMjAwNzM2MmRlNzA1OGM4MmFhMmNkNDFkZDNkNzEyNzUgY3B5X21lcmdlCis1NjE4NCA5YzA4ZDkxNjljMWNkNDQ5MjE0MTEzMTMxMTMxYzE3ODNlNzVmMWI5IGNweV9tZXJnZQorNTYxODUgMzc0MTNmNjIxMTIwYTI4YjA0NzViOTYwODk3ZDRkNmQ0MzhmZjQyZCBjcHlfbWVyZ2UKKzU2MTg2IDA0ZTI0Yjc5MjE4YWYyODkxZDgyOGQ3ZDk0ZDQ2ZmVlOTk2NDYxMGUgY3B5X21lcmdlCis1NjE5MyBlNjJlMmI4MTEzNmEyMmQ5NjdmYTQ3MmNkNDI4YjJkZjVmYzI5MzI2IGNweV9tZXJnZQorNTYxOTQgYjJmZmMwMjg1ODVmYjJkMGZhODQ5NDFlZjljNDlhMDJlMTJiMzJmMSBjcHlfbWVyZ2UKKzU2MTk1IDRmYTY4Mzg3YjZiMzU5ZTljMDUwZTYyZDdlMTU4NzUyMDkzNjNiZDIgY3B5X21lcmdlCis1NjE5NiBhYTMwYjJiMDU5OGU0ODA3Y2JiNDk1ZGNkNWI3YjgyOWM1NzEwMjk5IGNweV9tZXJnZQorNTYyMDIgNTM3ZmU4ZGI4MzM0OTg5ZDAzMTE3OTc0ZmI2MmYyY2MwMjk3OWIxYSBwM3lrCis1NjIwMyA3NGQxMWQ0NDI4OTg1Y2E4NjRkMDljZThhNDMxODYwYWZlMGJiMDM0IHJlbGVhc2UyNS1tYWludAorNTYyMDQgNzgyZjRiM2U0ZGIwOGUzNjBkMmEwYzJmOWU1YTM2MTc3MTAxNGU1MSBsZWdhY3ktdHJ1bmsKKzU2MjA1IDI2MzhiOTc0OTM3MTQ3Yjg4MTljNmE0Y2Y5ZmY0YjJiYmYwMDkwMzEgcmVsZWFzZTI1LW1haW50Cis1NjIwNiBlYzRiNzNjYjI0NDM5NDc2NzFiMTczZDQ4Yjg3NzFjMjI5NjAxMjUwIHJlbGVhc2UyNS1tYWludAorNTYyMDcgZDg5ZDkwMGM1ZDc4MmQ2ZjA0MWEyMjAwODJiMWYyZmJmMjI1MThlYSBsZWdhY3ktdHJ1bmsKKzU2MjA4IGJmMjIyZWJmZjBlNTQ3NDNjNWM0YjdjNjZhY2ZhOGZkZGI4NTc1ZjAgcHkzay1zdHJ1bmkKKzU2MjA5IDBlYjg0MGYyZGFmYTlkOWEyMTllOGM1YTBkYmEyMDU0ODU5ZDBlZGEgcHkzay1zdHJ1bmkKKzU2MjEwIGE2MmVjY2I1M2YzMDFiYjMxYjRmYmY5NmQ5M2Y4NTg4MmJhZjJhYjAgcHkzay1zdHJ1bmkKKzU2MjExIGJmZjllYmFiZmMxNTU5MzljNDUyN2VhZDg2MjFhMzViZTY3ZTg5MmMgcHkzay1zdHJ1bmkKKzU2MjEzIDE2ZTgzYmY4MWRlOTg4OWViOGNkMDJiMTkxZWM5ZGExMjM5OGIyZGYgcHkzay1zdHJ1bmkKKzU2MjE1IGRmYjg4NThjMDY2NDBkZGU0NmZmMmFlZjdmMmZlMjM0NjE5YjBmYzQgcHkzay1zdHJ1bmkKKzU2MjE2IDc4MjAzMjk4YjQyYjc5NDRiNWJhY2Y5ZWViYWNhNmJhMWYzMThmZTEgcHkzay1zdHJ1bmkKKzU2MjE3IDI5YmE2YzM5OTA5MDFkZTY5MDRkYzU3MGM2NzI2MjEwZjU4ZDBjZjQgcHkzay1zdHJ1bmkKKzU2MjE4IDZiMzBiZDEzMGRjMTdkOGMwZTdkMzQ0NDBkNTlmZGRiZjFmOWEzODUgY3B5X21lcmdlCis1NjIxOSBmNGI5OTE5NTY2MmZkZWI1Zjg5OTE3YTIzZmI3MjRiYjUwZWZhMTZiIGNweV9tZXJnZQorNTYyMjAgMzM1MDZkMTNkZDc5MGRkYjhjOTg3NDViMDNiOTRjYWExNzZiNzkxOSBjcHlfbWVyZ2UKKzU2MjIxIGQ5ZDQ4MmQwMzhkNWRiMjFkOTg1N2ZjNDVkMWU2MWI2YjViNjFkYmIgY3B5X21lcmdlCis1NjIyMiA0MDJhMDZlY2M2MTMxMDZmMjkxNzQ4M2Q0YjVhODk3MDE4YjkwNWZmIGNweV9tZXJnZQorNTYyMjUgZjA5NzlhODY2NzBmNDdjNzhkM2RlNDExYjQzMDk5Mjg4NjIzZDUyYyBweTNrLXN0cnVuaQorNTYyMjYgZTM4MDQ3NTUwMzgzNGI2OGMyYjQxYjMwNWQxYTJjMjA3MTExNDVkOSBweTNrLXN0cnVuaQorNTYyMzAgYWNkMWY2NDI3MDZmMmM3Nzc4OWE0NDkwMWY5YTkzNjQ4NjFmNTU0ZSBweTNrLXN0cnVuaQorNTYyMzEgOWQwZDhjYWUxY2M3M2FmYjIyNTk4OGY3YmZkOTgzZjJlYWJiNjNjYyBweTNrLXN0cnVuaQorNTYyMzIgM2RiMDA4M2Y2NjgzN2QwMTJkODYwZDYxMjdjODQ1OGIwNjFlOGI4YiBweTNrLXN0cnVuaQorNTYyMzMgOTFhZGU2N2FiMjMwZGM1MGNmZjhhOWVlOTZkNWRmZmY3NGY3MzE0MCBweTNrLXN0cnVuaQorNTYyMzQgZjBhOTYxM2ZjZDkzM2JhY2M0NTk3NTBhYThhMTJjZTkwODA3N2MzZSBweTNrLXN0cnVuaQorNTYyMzUgOGNmZGFkMjA0Njc2Mzc5NzFmOGNkNTc3YmQ2NjU4MDI3Mjc3Y2EwMiBweTNrLXN0cnVuaQorNTYyMzYgZGRiOTE5ZGNiNDgyMGZmMDUyMmJmZDIwNWUxNTU5Yjk1MzA4Nzg0NCBweTNrLXN0cnVuaQorNTYyMzcgOGQ0YjY5ZTMxNTgxYmQ0ZDgxMjI2ZDcxN2YxNGE4NjJlNjg0ZTRhZSBweTNrLXN0cnVuaQorNTYyMzggYjJkYzMxNzE4YjAzZjI2NDA3ZGZkNTdkZjcwMjZmOTIyNTYxMTRmMSBweTNrLXN0cnVuaQorNTYyMzkgZjRhMWI3NmE1YTYzZDNhYTRkNmE0MzNhN2MzNzg1MjE5MWIxYzEzZSBweTNrLXN0cnVuaQorNTYyNDAgNTYyMTUwNzFjNzQyZTdiNTA5Y2M3YjQ2ZDE2NjJiYzk2OWM0MTRlOSBjcHlfbWVyZ2UKKzU2MjQzIDlmOTllYTRmODFlOTJmYzkwNTk2YjQxOTdhNzFjY2I4M2M1MDI1YmEgcHkzay1zdHJ1bmkKKzU2MjQ0IDM2NDFhMjA2MzBmM2M4YzkzOGYzNjUxMzljYTJhMDBkZDgxODA5Y2MgcHkzay1zdHJ1bmkKKzU2MjQ1IDBlNDQ2MDgwM2I0YTgwOTM1NDdmMjlkNzM1MWYwMDY3OWY0OTc5NGIgcHkzay1zdHJ1bmkKKzU2MjUwIDhiMzE2MDdjYWEwY2IxODg4Zjc3ZmRlY2I4NzNkZWU3YTNiZjA0NmUgcHkzay1zdHJ1bmkKKzU2MjUxIDliMzg2NjA0MjFlZTliOWZkNDUxMzA3NjUwZjUzNTNiMDk3ZjE5Y2EgcDN5aworNTYyNTIgYmY1ZDA0ZTBkYTRjNzUyMjRkMmMzMmE2YzJlNDBiOWZiNzc0NTU3YSBweTNrLXN0cnVuaQorNTYyNTMgNjIyODA2MjkwOWYzNDdkYjA3NzJhMmU0MDAxOWI0MGU1Zjc2ZWZjYiBweTNrLXN0cnVuaQorNTYyNTQgNzQ3YjE1MTlhMzZjZGZlMDZmZWY3Y2QzOTcxMzlmZDEzZjY4OWNkMCBweTNrLXN0cnVuaQorNTYyNTUgMWRjZjFmMTA4NjJjMDIyMDViZDVjZjQ1MTY5YzA1MTIyZjM3NjRlZCBwM3lrCis1NjI1NiBlOWJmYjI0Zjk2ZTA2M2Q1MDRhNTc4YWVkM2E0ZDI1NDAzZjBjNDllIHAzeWsKKzU2MjU3IDkwZmNkMDgyZGEwZGNhY2U4N2M1ZmNkM2Q0Mjc2YzU3YTM5ZDkyNDcgcHkzay1zdHJ1bmkKKzU2MjU4IDgxOTMwZWFhZTcxNThmYTMwOGIzYjNhOTE3NGExODI4YTIxZTQyZWUgcHkzay1zdHJ1bmkKKzU2MjU5IGU4NDBhNGNmYjQxZjZlODc2MTMwMTcxY2IzN2I5OTVmYWMyOGE3NDIgcHkzay1zdHJ1bmkKKzU2MjYwIDk2M2Y1MGVkMmI0ZjhiYzcxYjc4YjQ2NzA2YjZlZWNkODM0MTYwNGIgcHkzay1zdHJ1bmkKKzU2MjYxIGM2YThhN2RmMzdlZjY1Y2QzOTAwOTkwOGM0MGQ3YmYwNzY0ZTUxNmQgcHkzay1zdHJ1bmkKKzU2MjYzIDc5MDgyY2MxNGJmMTQ0YjI0YTA5OTdhNmU3YmZkMWZkNTQwZTNmNDggcDN5aworNTYyNjQgMWFjMmMxYjgwMzI0MDU0YTA4ZjQyNjMxYTczY2JlYzcyYTJmMmI4NSBweTNrLXN0cnVuaQorNTYyNjYgMDkwNTg4YTE3NDkwMzNiZDJmNTMxZDVjODJjYjc4N2Q1NTA0YWE1ZiBweTNrLXN0cnVuaQorNTYyNjcgNzVkM2NhYTQ2YTkzNmIxMGY1MzA5ZjEwOGIwNmVhMDk4MDdjNzg4ZSBwM3lrLW5vc2xpY2UKKzU2MjY4IGRmNDc5NTBjODM3MDhlOWJjOGMxN2M4NmI1YzFkOTg1MDI5Y2NhZDAgcHkzay1zdHJ1bmkKKzU2MjY5IGJkNGUzNzJmNDc5ODU0MDQ2NzRkNWU4ODllNDVlNmUxNGJmZGI4ZjkgcHkzay1zdHJ1bmkKKzU2MjcwIGEzNTUzNTllNDdiNDU4NzFhNjZjYTE1NmQyYTFjNmRjOWM4M2Y1ZGEgcHkzay1zdHJ1bmkKKzU2MjcxIDViMzkzMWFlMjYyZmM3ZGUwNzRkZDIwZjcxNDlmNDVmNDExNTJiODYgcDN5ay1ub3NsaWNlCis1NjI3MiBhODM4YjhjNjQxMDM2M2M4ZmI1NDQwNzIxZjYyM2MzOTM2MmE4MTUyIHB5M2stc3RydW5pCis1NjI3MyA1MTZkYzcyM2M4OWViYjY5NmM3ZDc4NTE3MGI0OTUwZDNhM2FiMDBhIHB5M2stc3RydW5pCis1NjI3NCAzYmVmYjVhZGIzNGViZTZjYWViYjY5NjZkNzQyODgxYTg5MmU5MzYxIHAzeWsKKzU2Mjc5IGMxYTYwYjRiODNkMzliMjhkMzVlNDcyMjczMDAyZTY3NTU3YTVjYWQgcHkzay1zdHJ1bmkKKzU2MjgwIDA5YmYzNTc5M2JjZGQ1OTM2OTM2OWNmYjdmMzlhYzUyZGVjYmE5ZDQgbGVnYWN5LXRydW5rCis1NjI4MSA3YTI0ZmU3MGMxNmRiYjRkZjYzMDFhNjcwNDZjYjBjNDkwMDJiZjlmIHJlbGVhc2UyNS1tYWludAorNTYyODIgODU0Y2M0ZDVhMzNkOGFmZGM3Y2RiM2FmZGUyNmU2Yzc2MTJlYmQ1MyBweTNrLXN0cnVuaQorNTYyODMgYmJjMDk0YzMyOGVmZDkxZDhlNjg0MTRmODgwZWVkNmI4YzhjMGIzNSBweTNrLXN0cnVuaQorNTYyODQgZTVjY2ZlYjExY2Q2NzExOTkxNDBiNDAzMTg5YzNjM2QzYzU1MWUyOCBweTNrLXN0cnVuaQorNTYyODUgOWI3MmYwNjM2OTg2NGEwM2JhOWJmMmNkMGFmMGQ5ZWMwMDVmN2I2YyBweTNrLXN0cnVuaQorNTYyODYgZDFjN2MyNTQzOTAzYjhkNzI1ZjhhZjQ4NzU5M2I3YTRhMTg3MWFiOCBweTNrLXN0cnVuaQorNTYyODcgN2M2YTc5NWI1MjVhY2Y0OGYwYzNiZThjMThmYzQwMDljYzY5MzkwMSBweTNrLXN0cnVuaQorNTYyODggY2EzY2ZiMzRlM2MyNjM1OTc1ZDUxY2UxODg2YThlMzcyNzEyZTVhZiBweTNrLXN0cnVuaQorNTYyODkgMjNmMWQyYzM2ZDEyY2YzODUyZTM4YjU0ODk3MGI5Zjk3YWZmZDJjNCBwM3lrLW5vc2xpY2UKKzU2MjkwIGE1YzIzNDIyYWY2YzY4YmE1ZmY0ZTZjYTQ0MzUwZTgzN2FiMDVhOTAgcHkzay1zdHJ1bmkKKzU2MjkxIGNhMDY1YjUxYTYxNjZkNTczZmEwMTg3Y2ViNzYwZjEwNDcxYzY2OGEgcDN5ay1ub3NsaWNlCis1NjI5MiBkNWNmMTkxNjk5MDQ2MjczYjcwMjdiMTE3ZWMzZjU4ODk2YzE1NTlhIHB5M2stc3RydW5pCis1NjI5MyAyNTViZDQzY2E3OGY3OTM3OWY2MmE0ODA0ZTVlMzZhMzQ0ZGU3N2U3IGxlZ2FjeS10cnVuaworNTYyOTQgMjNhYzhkMTQwYThhMmU5NWM0ODc5ZGRkZGQzMjZkN2U2ZmE4ZjE0NiByZWxlYXNlMjUtbWFpbnQKKzU2Mjk1IDE5NmU1YzYzMjNhMzZiOGZlYjI5OTYwNTIzZTNhOWY3OWRhNTkyNzcgcHkzay1zdHJ1bmkKKzU2Mjk2IDYzMTlhZGIwMDQxZDZlZWZlYzIwYmNjNjJmM2QwZTQ2ZmJhMGZhYzcgbGVnYWN5LXRydW5rCis1NjI5NyA4YjgxNTgwYWQwYzEwNjA3NGVhNjdkNWIzZDc4Mzg2NTI4MjE5M2UxIHJlbGVhc2UyNS1tYWludAorNTYyOTggODZkMWRiZmM1ODMzMWI2MjA1MzNiZDQyZGYyMDU2ZmI5NGY1MzI1MCBsZWdhY3ktdHJ1bmsKKzU2Mjk5IGI0M2U1ZjMzNDhhZWE5NTJhYzRjOTI0YmY1ZmI3YmI1ZjdhZTViNTcgcmVsZWFzZTI1LW1haW50Cis1NjMwMCAyOTNiODNmOWRhOWZkZGU2NzZkZTk0YWE2NWRkNDM2NGY5NDkzZTc0IHAzeWstbm9zbGljZQorNTYzMDEgN2MzNzg0YmJmYzA5YWU4YmIwNzEzYjhjMjIzYjlkMzQ4NDJiMTkxNCBweTNrLXN0cnVuaQorNTYzMDIgMjQ4YTIwNjk5MGFlMDliOWJlZDFkOWQ4ZjM3NDgzMjNiMmY1MTBmZSBsZWdhY3ktdHJ1bmsKKzU2MzAzIDEwZTljOTBlYWYwM2U2ZGZjOTM3OGM3YjJjYjc4ZWYxODZhNDY5MGYgcmVsZWFzZTI1LW1haW50Cis1NjMwNCAyYzMzZGYwOWMxYzcxZjU4ZDIxMzZiNzIxODYyNDA0YTI1ZDc2NGJhIGxlZ2FjeS10cnVuaworNTYzMDUgYzI1NWMxMGRhYzZhNjkxZWI2NTRjMjRkZjI1ZmUyMTE2NjAyZjFiNiBweTNrLXN0cnVuaQorNTYzMDYgNGM0OWNkNjViNWYxNzA1MmNjYTkzMjRlYzUwOTcyNTA0ODY3NDMyZCBsZWdhY3ktdHJ1bmsKKzU2MzA3IDJhZjNmMDY3YTQzMTAyZGNiM2E1NTA3MDZiNjdkNjFmMTZlMDNlMjkgcmVsZWFzZTI1LW1haW50Cis1NjMwOCAzNDNiNjBiNjA0YmQ5M2QwZTY2MTgwYWVmZTdlMDk3NThjYmYzMTNiIGxlZ2FjeS10cnVuaworNTYzMDkgNzJjNTgzMzhiMjJiNjM5Yjg5OTZmZjRjNTkwZDk2Nzk1NTlhYjE5YSBweTNrLXN0cnVuaQorNTYzMTAgZWM3NDA4NGE4Y2JhMGEwN2ExMDFhNzZlNjc4NGY3ZmY4NTA3ZDQwMyBweTNrLXN0cnVuaQorNTYzMTEgNmNiOWVmYjVjYmU1YmU4NzY4NzIzNTVmMmE5ZTgwOTM0ZjMxOTk1ZCBweTNrLXN0cnVuaQorNTYzMTIgM2UwNmYyYjkwMTAyNjQxMmRmZmY4NzA4YTZmNGZmNzhlMDkxOWFjMSBweTNrLXN0cnVuaQorNTYzMTMgM2ZkMzU1M2UyNTg4NTRlYTM4Mzc5YTdiYzFkMDY0YWNmZGU4N2Y0MiBweTNrLXN0cnVuaQorNTYzMTQgNTg2NjFhODIzMzhlODJjZjEwMmUzMTZlMDE3OGViN2NiMjJiMzA5MyBweTNrLXN0cnVuaQorNTYzMTUgZTcxNWUyMDgxNjM3MWExNDdlZTVmZGIwYmNhMTcxMmM4YjAwYmE4NyBweTNrLXN0cnVuaQorNTYzMTYgMGI4OTc3NDExYjA3YjRlNjg4MjU4NzYwMTgyNjk2MGI5NTI4NzI5YyBweTNrLXN0cnVuaQorNTYzMTcgODRhMjE3NTc5YWU1OWQ1Mzg0OGNkYmUxOWQxZTBmYjVhN2E0ODllZSBweTNrLXN0cnVuaQorNTYzMTggODQyMjlhOTA2NmUyZjg2NjAwYjUyYTRjY2JhMmRjZDA0NjZkOTI4NyBweTNrLXN0cnVuaQorNTYzMTkgMDY4MTIzMzM0NGQ5M2ZkMGRlOWU1ZTM0NjFjODE2MDU0ZTExN2I2NyBweTNrLXN0cnVuaQorNTYzMjIgYjQ1YzBmNDQ0ODEzMWRjY2IyM2Q1ODE3ZmUxZjRlOWQxOTVlNjJlMiBwM3lrCis1NjMyMyAyYWNjNjM1OWQwNWQ0MDU1ZDYyZTZkMDgzZWY5ZDM1YjI2ZGMxODQxIHAzeWsKKzU2MzI0IDQ4YzVhODQ5YTBjMmZjZWZhNWE3ZGUzMTBhNjY4MjcxNjk3N2I5ODcgcHkzay1zdHJ1bmkKKzU2MzI1IDczODQ2Zjk2MjljNTY3ZWJhZmEwZWIwMGFiMWNiZDBjOTdiOTgwMjAgcHkzay1zdHJ1bmkKKzU2MzI2IDQ4NGEwMDk2YmFlOTBmNjYxOWFmYzY5MTZiM2ZmOWZmMDYyZmI1ZTIgcHkzay1zdHJ1bmkKKzU2MzI3IDA0OTRhZTczNTA1ODJiNTgxOGQwOTYxYTVmYzA1NGU4YTg3ODgyYmEgcDN5aworNTYzMjggZmJhZTAxMmZmMjk1ZGNhZjdiYjQwMDRjNWQ3NTM1YzM0YWI4MzlkYSBweTNrLXN0cnVuaQorNTYzMjkgNzY5ZTcwNzhhMmFhN2YyNGQ5ZTk4ZjQ0NDAzZGQzZjlhMDBlYmRjZSBweTNrLXN0cnVuaQorNTYzMzAgN2NjODQ5NmYyMzQ4MGMwNmJkZjNhOGNiMjQwMDE4NzFkNmE4MDY2ZiBweTNrLXN0cnVuaQorNTYzMzEgMmZkMTQ2OTcyM2EwNzAyZWIwOWVkNjU2MWY2NzAwM2JiOWI5YTgzZiBweTNrLXN0cnVuaQorNTYzMzIgYWZlODcxNTQ3YjFhMzkwZjIyYjJhN2ZjMTEzMjQ4MjJhOGVlMjE5YyBweTNrLXN0cnVuaQorNTYzMzMgMTBkZTZhOTFkYTRkYTE5MGNhYmY1NzQ4M2M1YzAzNjEyZDY1NTg2ZSBweTNrLXN0cnVuaQorNTYzMzQgNmEwOTc3NzJlYTg2YjVhNDAxNzU4NzgxODE1ZmUyYWJmM2NiNzJiYyBweTNrLXN0cnVuaQorNTYzMzUgNmU2NWYwOGYxMjc2Mjg2MjFjZTE2YjY4OWRhZWI4OWJlYWZkNGJlNSBweTNrLXN0cnVuaQorNTYzMzYgMWMzNzkwYzgzMWZjMTY1NTZhZjEwZTdiYWNhNzhkYzM2NGI3NTcwYiBweTNrLXN0cnVuaQorNTYzMzcgOGVhZjAzZmMzZjEyOTVkNjE0MmM4YTAyNGYxMGI4MTVlNTk0MTI4OSBweTNrLXN0cnVuaQorNTYzMzggMjJkNjU4NGI4NzEyNmM4ZmI4OTkzODM4MzUwYjkwYjBjOTllYmJkMiBweTNrLXN0cnVuaQorNTYzMzkgNWQxNmY0Nzg0NjVhNTM1NThmMjZkZDAyNmZmOWQ0NjcwY2JhYmRkMCBwM3lrCis1NjM0MCAwYzBkNzUwZWU3NWU0YzI1MjFmNmE4ZDM1NjY2M2U4NzRlYTE0YWU1IGxlZ2FjeS10cnVuaworNTYzNDEgN2JjNDcyM2Y1NjJmYWNlMTFkYzk3MDdiZTk4NDdmNzIyNDlkYjIzMiBweTNrLXN0cnVuaQorNTYzNDIgMDk4MDAzNGFkYWE3MjJiNDY0ODUzM2Q2ODNlZDgzY2YxM2Y0ZjdjZSBweTNrLXN0cnVuaQorNTYzNDMgNjkzYmUyN2Y2MjZmYmJhOTZjYTE4MmY1NTM2ZDZlMzNiNDYxMzZmNSBweTNrLXN0cnVuaQorNTYzNDQgMTdiYjM5ODA0ODNlY2ZiZDIwNjFjYWZkMTYzZDE0MGFmYTM3NTRkNSBweTNrLXN0cnVuaQorNTYzNDUgMTA4OWE0ZjU3ZDIwOTViOWZiZDVjYTNkYTExNTJjYTcwODg3MTQyNCBsZWdhY3ktdHJ1bmsKKzU2MzQ2IGMyODA2NDdjMzMwY2YyYWFkOTI0NzYzNzQ2NWQ0ZjRjNmFmYTY1ZDggcHkzay1zdHJ1bmkKKzU2MzQ3IDdjMWM5MDJkNzAwMDMxMmQxZDg5MDQyNDljM2RlNTVmNzZlNDgyNzggcHkzay1zdHJ1bmkKKzU2MzQ4IDc2MDIxYmJiODljNzM4Mzc2Y2IzOWFhN2Q3OWM0N2EzMWM4OTg2ZTggbGVnYWN5LXRydW5rCis1NjM0OSBjYjg2NWUzOTllODRjNjVhOTgxMmUzNDhiNjdmYWJkYjM4MTBjYjM4IGxlZ2FjeS10cnVuaworNTYzNTAgYWVhZDEzNmNhNDllMjk5NTc4OTcxYjlmMjI3MGI0NzEzNmZkOTQxYSBsZWdhY3ktdHJ1bmsKKzU2MzUxIDBkNjJjZGQzNTU3ZDVhZGY4NmY3NDE1OTg2MTA1ZmYwZDhhZWNhZWQgcmVsZWFzZTI1LW1haW50Cis1NjM1MiBiNmVhYTY5MTY4ODRjZGNmMWY4MmY0M2Y4ZTNjNGI3YjQ5ZDM3NTVhIGxlZ2FjeS10cnVuaworNTYzNTMgZjMzNjU4ZGEwNjM3NTQ2MmI3MGI2N2YwZTk1ZDdmNWVkOWU4NjA2MyByZWxlYXNlMjUtbWFpbnQKKzU2MzU0IDNmODc5ZDcyNmQxODk4MTRjMDE0ODI0YzJhYTRjOGNmNjQzM2E3ODQgcmVsZWFzZTI1LW1haW50Cis1NjM1NSBmOGM3NWU4NDk5NTYwOTQ2NTA2NjdkMTgwMzg4ODkxYzhlMTg5ZDc2IGxlZ2FjeS10cnVuaworNTYzNTYgZjAxYWEzZDE4YzlkM2FjMDA2ZDEzZWI2YTEyZmRmYjFiZDAxZTcxMSBweTNrLXN0cnVuaQorNTYzNTcgNGNmMDQ1OTQxMDg1NDUwZDIxODg2NjAyOWZlMzc0ZGFjZjEwY2Q3YiBsZWdhY3ktdHJ1bmsKKzU2MzU4IDU5OWVhOWU1YzZjNWQ4ZTlhMzY1ODZkY2E5ZmRhMTk5OGQyMTFhMWIgcmVsZWFzZTI1LW1haW50Cis1NjM1OSBkOGJmNDI2NzIzMzA1NmQ1YTM3ZjU4MjhjM2E5ZDEyNjlhY2FjODVmIHJlbGVhc2UyNS1tYWludAorNTYzNjAgYzI5YjBkYmRhM2Y2YWRmOGEyMjRjMjhiNTdlNGIyZGEwOTRmMmRmMSBsZWdhY3ktdHJ1bmsKKzU2MzYxIDBiZmY0YjZiOTJiZTJiNzNmZmEzOWNkZDY3NzM5NTE0MTQ3NDY2NGMgcDN5aworNTYzNjIgNjE0MTJlMjVlNjFlMzBkMWNhZGE0NzNjNDJmNjNmMmQwMjBlM2U4NCBwM3lrCis1NjM2MyAyMDJjMzc4MzU2MjhiOTE1YWQ0ZWFkYmUxNDM2MTExYjBlODBlNzNkIHJlbGVhc2UyNS1tYWludAorNTYzNjQgOGNjNjUwN2IwNjI2YmI0ZTEwZDM4OWI4OTJiNzk1NTcxMGYyZTNjOSBsZWdhY3ktdHJ1bmsKKzU2MzY1IGRhMmY4OTQ4Y2MxOGQyMDhhYTgxNGQ5ZGNmNzU3NjYyYjE3MmI4MDEgcmVsZWFzZTI1LW1haW50Cis1NjM2NiA2OTdjMGE3OGQ4YzkwMDVkOWRmMDFkNWViZDFjZThhODBhYmUzMTFmIGxlZ2FjeS10cnVuaworNTYzNjcgODVkNGEwMmQwYWJiMGM2NzQxN2E0M2VmYTMxNTUzYzI5NzliMmM2OSByZWxlYXNlMjUtbWFpbnQKKzU2Mzc1IGNmODkwZTQxYWMxMzUxZjU0M2E0YjQ5MGFmNDA2YWFmZGNlYTI0MTIgcHkzay1zdHJ1bmkKKzU2Mzc2IDUwNjZiMDAyNWJmMDg2NTAxYzlhYzE0ZmE5Y2RiMTRhYjc4NGQzNWUgcDN5aworNTYzNzcgYTVhM2RmNDlhY2YzMDI5ZTQyYmYzZmU1ZDQwYjYwNjM1NGQzMWVlNyBwM3lrCis1NjM3OCAyZDIyNTA0MjgzMDU3Mzg5NTYxOGVmNzgxNDhmMmE4MjU0MDBlOTQxIGNweV9tZXJnZQorNTYzNzkgMDljZDNlNTAzMjM1ZTY1YzZlYTFmOTNlODg3Yjg2Y2M3MmRlODQ4NiBjcHlfbWVyZ2UKKzU2MzgwIGE1ZThkZDU5OTYwZGRkOTlkMTVlMWQwOGI0MTU2MzI1NmZjNWMxNmYgbGVnYWN5LXRydW5rCis1NjM4MSA0NWM3ZDQ3MzVkYTM2YzIzZmYxNDliZGE5OTZmMTk4NDVkNzZkNGU5IHJlbGVhc2UyNS1tYWludAorNTYzODIgOGFmMDdlMTFmMTk3ZTI2MTM0ZGExYWRkM2RiNWViNmE2YWMyODVlMyBsZWdhY3ktdHJ1bmsKKzU2MzgzIGRhYWUyN2ZiYjgxNjZlZGUxZDhmNTdkMWVkYjg4ZDg4YmM0NzgxOGQgcmVsZWFzZTI1LW1haW50Cis1NjM5MiBjMjNkOGMyN2RjOTIyMjM4NTA3MGI3MTA1MzUzY2Y1M2Y2MzU4NmFlIGxlZ2FjeS10cnVuaworNTYzOTUgMThlNWFlOTFiZDI5NzllMDJkMjYxOWQyMzI4YmFiZTFjMmJiODc3MSBweTNrLXN0cnVuaQorNTYzOTYgZWJlOTYwZDFkNjI3ZWVkNmNmY2I5MzI4N2JlMTMwYWJhOWMxYmM4MiBweTNrLXN0cnVuaQorNTYzOTcgZjcxNWJhY2RmZDAwZjMzYmFjZDVkMWY2NGVjMzMyZTI2YWY3NzI2MSBweTNrLXN0cnVuaQorNTYzOTggMTkxOTk5YmU2Y2Y1OGVmYTY4MjJkZDA5Y2JmMDNiMzY1MmNmZTUzOSBweTNrLXN0cnVuaQorNTYzOTkgNWFlNzc0Y2MyNmViZGQ3MDc2OTcwMGM5Zjk2NzM3OWY3NWI2YjA1NCBsZWdhY3ktdHJ1bmsKKzU2NDAwIGQwNjJmNjdjMzI2MDRkNDIwZTRkM2JmMzU2M2VjNjNlMTllNjRkODIgcHkzay1zdHJ1bmkKKzU2NDAxIGY1YjVkYWNiOWFlMjliYjEyYjQ3MTk2MjJjNjlkOTBiNDI1OTg1YmIgcHkzay1zdHJ1bmkKKzU2NDAyIDNmMjQyMDlmMjUxZTNhZDExM2M0NjQxNjgwN2FhNjcwZmQ0OTE1YTMgcHkzay1zdHJ1bmkKKzU2NDAzIDM3NzIxMDMyMDBlYzg5YmM4OGJiM2IyZjFiNjY3ZmNlNTBlYjY5OTMgcHkzay1zdHJ1bmkKKzU2NDA0IDg0NzdmYzM4OGVlYWVlM2U4ZjI1YTUxMWRhYmE4ODNlNGJmMTViZTMgcHkzay1zdHJ1bmkKKzU2NDA1IGE4ZDQzMDg1YTg1NzBiMGNlMzMxYTYwOTU3OGYyNWRiMDJjMDg5MmMgcHkzay1zdHJ1bmkKKzU2NDA2IDQ0YmM0OWEwN2U1MjQ5NThlODJhOGI5OTQ3OGM0MTliZjYzNjk4ZWUgcHkzay1zdHJ1bmkKKzU2NDA3IDUzMzdjM2E0YTI3M2Q5MDc3ZDhiZTUzNzA2NWZlYTliYzQ3MDIzZDggcHkzay1zdHJ1bmkKKzU2NDA4IGY1MWQzYmU0MzVkZjY4ZTNkMWQ1MjViMTQ2NzJjMDU4NWY1YTY2ZWIgcHkzay1zdHJ1bmkKKzU2NDA5IDA1OGFiZjg3OGFkNGRmOThmYmMzMzA2ZjdlZWNiOTIyN2Q2YmI0MDQgcHkzay1zdHJ1bmkKKzU2NDEwIDNiZWE4ZmFjM2E3Y2Y2ZDQzZDZmNDRkYmFiOWQwOTBlMzhkNzdhZjggcHkzay1zdHJ1bmkKKzU2NDExIGM0YWIzZWY2MTk0ZjczNzIxNDc3NmU5YjFiNGFkMzUxMTMyOTY2NGQgcHkzay1zdHJ1bmkKKzU2NDEyIGY2NTkyMTQ2YzdmYTY4ZjdhMTU5NDE3N2Y0M2JiMmE0OTM1YjRiZWQgbGVnYWN5LXRydW5rCis1NjQxMyA1NTAxNDFmZDY3YzIzZGU4OTUzNWI1ZDI5MjI0MGQ0MWE1NTI5OTlmIHAzeWsKKzU2NDE0IGM4ZTYyNDU3OWE0ZDYzZTZiZDZlZWQzNWU5ZTI0Zjg4ODBmZjhmYWQgY3B5X21lcmdlCis1NjQxNSBmOTQwZTQ3MGU1NTAyNmUxMmQzNGQ3MTQzNDAwZmYyMDc3YjQzNWY0IHB5M2stc3RydW5pCis1NjQxNiA2N2IwMWIwNWE4MWI2MjM0ODdmYTJmNDlmYTA1ZDYyZTliYmM3N2Y4IHB5M2stc3RydW5pCis1NjQxNyBhMzA5Y2RiN2NiMzMwZDEwYWYxZjhiOTNkZjhiOTA0M2IxOThkMDJkIHB5M2stc3RydW5pCis1NjQxOCA3ZDE2YjQyZmNkYmRlMmNjNTEzZmNkYjQyNzc1NmJjOWYwY2FkMzUxIHB5M2stc3RydW5pCis1NjQzOCBkMDcxOTQwNmIyYzY1OWU3ZGI0Mzg5NjJiNmI1YmM1NGM2MGJhZTZiIHB5M2stc3RydW5pCis1NjQzOSA3Y2VkM2U4NTE5ZjE0MTg4OTFkMzAzNzc3ZjVkODVmMTQ4ZjcxNmFlIGxlZ2FjeS10cnVuaworNTY0NDAgMzVlYjcyMjE1NjMwYWYxYWZlNGZjMWEwYWMzOTgzNzU1MDRmYTRkZSBweTNrLXN0cnVuaQorNTY0NDEgNjc3NWVlNmQ4OWQzZjlmZGIyOTk3ZmFjZTFjOWYyZjQyNTUyZDRmMSBsZWdhY3ktdHJ1bmsKKzU2NDQyIDE0OTgxNWJhMjg0Y2NkZmQzZDhiYjFjY2Y1YzQxNmRhZTliODJiYjEgcDN5aworNTY0NDMgYmQ2YWNmZGI0N2QyNWE2Y2ZlYzFmYWIwYTNkOTBjMTg4Mjg1MzM1MCBweTNrLXN0cnVuaQorNTY0NDQgNGM2NTgzNzdiOTA4NDc1NDkxNmUwYWYxODkzYzQxODM5ODJkNDM3MyBsZWdhY3ktdHJ1bmsKKzU2NDQ1IGMxZTllZWVkYTM0ZjliZjI4M2E4ZmI1YTBhNjAwYTA2MzQ3NDAyYjcgY3B5X21lcmdlCis1NjQ0NiAxYWU1ZjEwMmZkM2Q2ZTI1MTVmZWY4NThkZWZlYTBkMjg4N2VkNjc2IHB5M2stc3RydW5pCis1NjQ0NyAwMDdlZDZjZGQxZjdiYzc0YmU4ZDkzMTFkMjE5NTAyZGRmMjY2OWVhIHB5M2stc3RydW5pCis1NjQ0OCAwODY0MmJkMWJlMTg0YWUxMmMyZTM3ZmQ2Nzg2ZmNjYWE4M2E1NTk3IHB5M2stc3RydW5pCis1NjQ0OSBkZmFjYjUxZDEzODYxNjEyMTc5NWMxMzEyODM4MjA5ZjU2Yzc3YWY5IHB5M2stc3RydW5pCis1NjQ1MCBiZGM2N2RjMWE5NWUyZTQwMzQ3ZTljODVkYzA1OWIxOWFjOTQ2OGIxIGNweV9tZXJnZQorNTY0NTEgZDAxYWU2OThjYjU4MzhmNzVjYjUwNzhiNmNiZDY0YWUzNTZjODMzOSBsZWdhY3ktdHJ1bmsKKzU2NDUyIDI4YWY5NjEwMzhkZTgyNmE1MDdkNjg1YWY4YTZjZDIxMzcxYjg0NzMgcmVsZWFzZTI1LW1haW50Cis1NjQ1NCAzNzkwMmVhNDFhMTdiNDMyYWRiNjAzYjBhMjRlYmFkNTdmNTFmMDlmIHAzeWsKKzU2NDU1IDdmNzYwZGI0ZTc0NmJhZWYxOGIzNTRkZjA5ODUzZTY1MGY5YzU3ODcgcDN5aworNTY0NTYgYzAyYTMzNzg4YThmNWViZDMyMmY5NmU1YWM1YjMzOTYzNGY5ODg1ZiBsZWdhY3ktdHJ1bmsKKzU2NDU3IDNmYjU5NjY2YjI4MTBhNDFkMDJlMTY2NDY2OTg0ODEzY2Q2NGRjM2MgcDN5aworNTY0NjAgNDk5OWEwOTQ3MzQzNGFjZDQzZTQ0MGQ5NmIyYzg4NmIxYWQ5MTVmNyBweTNrLXN0cnVuaQorNTY0NjEgYWMzNmYwNmE2MTJiODBlMGIxMTQ1YTM3OTJlOWI0ZWZlNTc2YTgyZiBweTNrLXN0cnVuaQorNTY0NjIgNjM5NTVlM2NmOTkzYjYxOTUzMjEwYzg0MGExZTExMzdjMjY5Yzk0OSBweTNrLXN0cnVuaQorNTY0NjMgOGM0YTMzMDc5Y2E2MDBkODcyYjY0NjI3OWNmNzkwNGM4OTZlYWEzYiBsZWdhY3ktdHJ1bmsKKzU2NDY0IDNlMzMyMTVjNjZlZGU4ZmYyYzU2NzRiN2E3YjFhY2QxMDYxZjM2M2QgcHkzay1zdHJ1bmkKKzU2NDY1IDExNjI1MWFkYTkwNThmZTYwN2U4YzgyMjUzNTdhZjMzODAxM2I3ODQgcHkzay1zdHJ1bmkKKzU2NDY2IDYwYjcxOGI2ZmM5YjE2MzNjYzI0YTlkZGY3ZjI1NjM2M2I3ZTc4YzggcDN5aworNTY0NjcgNGJiYmUwYzU1ZmEyMTU4ZmUyMTY1MzdjOGZjZGZiM2ViYWQ3NDJiOSBweTNrLXN0cnVuaQorNTY0NjggYzQ2ZjBhZmI0MDNjNDA3ZWI5OWVlODQyZGUyMjA1N2VhMzViYzUyZiBweTNrLXN0cnVuaQorNTY0NjkgOTY0YzRiZjg2ZDlhNjk2NzU3ZWUwZDIzNDRiYjYzOTRjODIwOGExMyBweTNrLXN0cnVuaQorNTY0NzAgYTJjNWNlYmQwZGM1MWYxNWI3Yjk5NWFiZTkwZjVmZGViYmZkMTU5OCBweTNrLXN0cnVuaQorNTY0NzEgNTdjNjJiZDM2YjE5YmI4MWJkYzk0MTcyN2ExZTlhMzUxOGI2MDk1OCBweTNrLXN0cnVuaQorNTY0NzIgNWE5ZTNkMzdmNjYxZjEzZWZkZTE3MWNiYWVhNzE4NDAyN2UyODMxYyBweTNrLXN0cnVuaQorNTY0NzMgMzMzZmYwNTg0OTM4YzU2MzM5ZGU3NTY1YjMzNWNiNjc5NjgyYmI0OSBweTNrLXN0cnVuaQorNTY0NzQgN2EwZDFiYWE0YTUzZGVkNDI0NTFiMTgwOTJkNmFiNTQ5NTkxMDYyZCBweTNrLXN0cnVuaQorNTY0NzUgMmJlMjUxZGQyY2JkZjE2MTMzYzRiNTQ5MTAyMjExYTJiNzliOGRhZiBweTNrLXN0cnVuaQorNTY0NzYgNjYyMGE1MTBlOWE5NTExMGRiMTM5MTJkNjY1NTE4YWRlN2RkN2Q5ZCBsZWdhY3ktdHJ1bmsKKzU2NDc3IGUzNzE3MWE0YjE0Nzk1OWY2ZjIzZWMyYTA4ZjIyZDRkYjY3MzI3ZDkgcDN5aworNTY0NzggZmQzNDU4YTkyYTg5NDBkYmQ3YTY3NTExYTIzZmZhZDk4ZTc3YTk3NCBwM3lrCis1NjQ3OSA0ZTg5ODcyZjA4MmUwNmI4ZmU4OTI2MDVhN2U2MjBjMzYxMjg5YzhmIHAzeWsKKzU2NDgwIDUzMWUxODFmNWI1MzBmOWU0NTI4NjA1NDA0OWIyNjQ0ZGU3MzdlMjIgcDN5aworNTY0ODIgMTJkZjkwNjAwM2VhOTIyNmYyMmNlMzE4ZGZiMWQ5MGYzYjk5MDRjMyBwM3lrCis1NjQ4MyBlNzBjZGNlMGU4YjI5NTVjNDQwMDhhNDQ4ZjA5MzViOWRlN2QxODVlIHB5M2stc3RydW5pCis1NjQ4NCBjOGI4NTBiNWEwNjY2OTFmYTg4Y2ZlNTJlZDM1ZThiODJhMzk5ZWU4IHB5M2stc3RydW5pCis1NjQ4NSAwM2FiOGM4YmIwYWUxODRjZThjODJmMDZlNTgxZGVjNDFmZGRjOWIzIGxlZ2FjeS10cnVuaworNTY0ODYgMjNiZmRiNzU3MWE3ZGFkMWNlODVhYTY1ZWViMTY0NWFjOGJlODIzNiBwM3lrCis1NjQ4NyA4OGVlMGE1NTYyZWUyMjE5MGRmNzFmMDAxOGNmZTU4OWQzN2UxOTIyIHAzeWsKKzU2NDg4IDM4ZDFiZWI2NTBiYWNmZTJiZGVjMzI2OThhMGFiOGQyNTliMjRiZmEgbGVnYWN5LXRydW5rCis1NjQ4OSA4MTFjOWFhNmVkODgyZTQwNTc1MWRjNmY0ZTk1YjcxOTRmNWIxMDNmIHAzeWsKKzU2NDkwIDI3ODYzOGNkYzY0N2FhMjg0ZWEwZmFmM2NmYmRiYmIwY2Y1Y2M2ZTIgcDN5aworNTY0OTEgNjE4NTlhMzlhODdlNzI2NDUxYjcxODU0YTdlMDFjNjdmMzg0NWZmYSBwM3lrCis1NjQ5MiA3YmZlOWExMDdiMjk3NzcyMDNkNjQyMjA2Njc3MDZlNzY3ZGJhYTY0IHB5M2stc3RydW5pCis1NjQ5MyBjMTUyYzdmYTE3YzRkMDI4NzNjN2YwNjY0ZmM2NTQ0MmMxNWI3ZDRjIHB5M2stc3RydW5pCis1NjQ5NCBmNGFmNmY0YjUxY2MzNjE4ZmZiMzM4ZDEyZTk1NzA2ZWYxOThmYjcxIHB5M2stc3RydW5pCis1NjQ5NSAxNDU3NDEwMTY4NDg4MmM3YmRkZjUwMTU4ZjIxZDMxZDhhY2I3NjBkIHB5M2stc3RydW5pCis1NjQ5NiA2MGM3NjcxOGUwNGEwMDVmYzc3NmYwNzdjMWNlYzRjOGRmYmE3YzQ5IHB5M2stc3RydW5pCis1NjQ5NyBmMzJmYmY5ZmE2MGIxYzg5NDA4ZGM1ZGIwODEwZjY2NDM2Njk4MDRhIHAzeWsKKzU2NDk4IDQwOTk4ZjE4YzVkY2NiYzMwMTdlMGJhMjU1M2FjNWNmODlkODFjMzkgcHkzay1zdHJ1bmkKKzU2NDk5IDgzNjcwYzJmMWVhODRjNzExYjFkNzkwMDgzZTJjNGFlNDg3M2I2NzMgcHkzay1zdHJ1bmkKKzU2NTAwIDljZTU0Y2YwZGJlMmE2OWRkYWZmZGZmMGI4ZWQ3NDRiMzgyM2QzNDAgcHkzay1zdHJ1bmkKKzU2NTAxIDM2YjY3MDMwY2E0NzJkYTM0YmEzNjRmY2U5M2FlNDE1YTQyNmI0ZDcgcDN5aworNTY1MDIgYjU5MGY0YTA2YmY4NjQ3Y2E2MjdkODQxNzc1MDY2ODVkYmZkMzgxNyBweTNrLXN0cnVuaQorNTY1MDMgNWU2NmJiNjljMWUzZTQ4NmU3YmY3NDVkYzc0NmRkMGFhNzUyY2JkNiBweTNrLXN0cnVuaQorNTY1MDQgYmZlMDQxYWZhZmU2OTBjMGViNjg1MDU0NmEyOGRjZTQzYjNlOGI3ZCBweTNrLXN0cnVuaQorNTY1MDkgM2ZlNjQzZDYyZWNjNDVlYjA0YzA0NjgzZWEwM2E4MjY1MzljNGI1NyBsZWdhY3ktdHJ1bmsKKzU2NTEwIGZkNjcwNTM5YzA4NWQ1NjAyMjZiOWUzY2ZjZGU5NWVhOGVjZmI3M2MgcHkzay1zdHJ1bmkKKzU2NTEyIGU1MGUzM2I3ZTBlMGNjYjcxMTQwNTI4NjhiMGNlYTNkNTQ0NGJjNWMgcHkzay1zdHJ1bmkKKzU2NTEzIDY0MDk1MmRmNDQzMTRiNGJhMGRhYjU5ZWQ3NTJlNjhkYzdjMmRhMTkgcHkzay1zdHJ1bmkKKzU2NTE0IDk1OWU1MmFlMjYyN2EwODlhZDU4YjBlZThjNWI1M2QxZDI0NTBkYjcgcHkzay1zdHJ1bmkKKzU2NTE1IDM2ZmJjZGE4MGIxYzQ1N2ZiNGVkOWEyMDYzZGE5ODljYmVkYzEzYjggcHkzay1zdHJ1bmkKKzU2NTE2IDViOWM4ZGNlNGVkZDdlOGNkNmJlMWMzNWFhZjllMmU3Nzg3ZjdlOTMgcHkzay1zdHJ1bmkKKzU2NTE5IGQ5NGQ1YjQxNmE5NDdhZjRmODVlODIzZjFkMmZjNmQ5MjkxMzM0MDEgbGVnYWN5LXRydW5rCis1NjUyMCBiYzhlNWUxNTcxYWNjZjBlZWU3OGRlNGRlY2FjYWYzNmQzNzJkNDZjIGxlZ2FjeS10cnVuaworNTY1MjMgMzBlMTEyMzUwZTIwM2EzNjlmNGNkNTg0MWU0ODBlOGUwN2Y5OTYwNSBsZWdhY3ktdHJ1bmsKKzU2NTI5IDc0NmE1MDIxZTFhYTg3MTFlNWI0ODk4MjRhNTc2Nzg0MGJkMjFmNTcgcHkzay1zdHJ1bmkKKzU2NTMzIDBlMmZhNGM2YTQyODM1NTM3MjIwYjdmOWQ1MzE4YWMxNWJkYThhODIgbGVnYWN5LXRydW5rCis1NjUzNiAxMTM3NzI0OTMwYTcyYjM4OGQ0ZTk0NzRiZjVkMDQ4NzMxMTRhNDY1IHAzeWsKKzU2NTM3IGRhNjI4MzZkZDk5Zjc3M2Q2NGExZjgxYWE5MDA0NDg1ZWU3MzVjNWIgcDN5aworNTY1MzggMmZkYTU1M2FjNmUxNjNkYjE0ZjI4OGQzMzhiYTU3ZWM3NDNjNmJlNiBsZWdhY3ktdHJ1bmsKKzU2NTM5IGU5ODkxZDc4N2VkZDgyNjkyZDE4Yjg0M2YyM2IxYTBjY2IyN2ZhZmYgbGVnYWN5LXRydW5rCis1NjU0MiAxMjA1ZDMwMzQ2MWMzMjNiOTgxNDU0ZWFmNjNmOGUyOWIzOThjYWYzIHJlbGVhc2UyNS1tYWludAorNTY1NDMgMjc4NjRhMTgxZjAxYjIzOTJjYzlmODg5YWYxMTRmM2E0OTgyODdjMyBsZWdhY3ktdHJ1bmsKKzU2NTQ2IDc5NWE1ZGNkYzk4MjAzMDMyZTUyMjI3N2IxMTlhMWQ4MDVjYTJmY2YgcHkzay1zdHJ1bmkKKzU2NTQ3IGQ0OGFjYjI4NDY2NGM3NDRiMThmMGY3NTk3MmVkZTY5MDU5NGIxYjIgcHkzay1idWZmZXIKKzU2NTQ4IDVmM2Y1NGMwYzZjOGViMjBkNmI4MTNiZmFmNTYyYWJjNzE0OTEyYzUgcHkzay1zdHJ1bmkKKzU2NTQ5IDhmZjg5OTY0MTU2MzUyZjc3YWFmZTRkOTIwYmQ2MDQxZDdhNzMzZTEgcHkzay1zdHJ1bmkKKzU2NTUxIDZmYTdkOGZiMDc3MzE4ZjhjZmFlYmZjODlkYjI4NDVmNGViZjVmNGYgbGVnYWN5LXRydW5rCis1NjU1MiA0MzRhZTY2YjdkZTA0ZTliY2NhZjk3NzgxN2M4Y2YzMjZmMGU5ZjQ5IHJlbGVhc2UyNS1tYWludAorNTY1NTMgNjQ5MDNmZjc2ZWRlMWEwOTY5ZThiMTY2ZDgxYTU0YTE2ZTQ1NGUwNyBsZWdhY3ktdHJ1bmsKKzU2NTU0IDU3ZmFjZjM0YTcxODYxMGM1NjkzYjRlOWZlMzg1YTQzOTBmYjE1ZGYgcHkzay1zdHJ1bmkKKzU2NTU1IGE1NDM0ZmFkYTlmZjQ5YzQwN2UwMWUyNzI3N2Y2MGI3OGI0ZWY0MTEgcHkzay1zdHJ1bmkKKzU2NTU2IDJhY2M4OTAyNzY4YzQ0N2YwMzM2NjM4ODljODY1YTk1YmJhNjgwYTMgY3B5X21lcmdlCis1NjU1NyAwN2E1NzdiNjIwZWM2OTE4MmM0ODUzNzEwMDk2ZGJiNjlmYTYzODM4IHJlbGVhc2UyNC1tYWludAorNTY1NTggZGVlYzQxMjZmZmFjZWIwNmUyNmZhZGU2YTBhOGZiOGUyN2ViOGViYiByZWxlYXNlMjUtbWFpbnQKKzU2NTU5IGIwMGJkMDhhMDk0OTQ5MTIyNzliODQ5NzlkNTJiZGIzNGExZDgwY2EgcHkzay1zdHJ1bmkKKzU2NTYwIDI3OGM1MjEzNDE0MGY2MTdkY2ZmMWNhYTA3ZGNkZTg0MDhhYzg0ODkgcHkzay1zdHJ1bmkKKzU2NTYxIDEwNzFmNzA3NmU4ZTM4YzczNGZiNThjZmMzNGJmYjljMTBlZTlmY2IgbGVnYWN5LXRydW5rCis1NjU2MiAyMGJkNWJlMjRhYjU2YjliOTg1YmM4YWJmMWJkNTY5MDA2ODA1YmJhIGxlZ2FjeS10cnVuaworNTY1NjMgODYyODViMzk3YjRkMTA0ZDQ5N2VhMGRjNGQ0YTIwMTc0MzU5ZWNhNyBweTNrLXN0cnVuaQorNTY1NjYgMDU0NmMxMTVhOWNmM2M3MmIzNjA1MWI4YmViZDAzZWRmZjI0MDk1MyBsZWdhY3ktdHJ1bmsKKzU2NTg0IDllODRiNDg2ODk4NDY4MWU4ZTFmY2MxZTdiODNiY2FjMzBiMGFmNzcgcHkzay1zdHJ1bmkKKzU2NTg1IDkwZTQyYTBiMjIwMmNmODU2ZGM1YTEzODA5M2Y1ZjIyZmJhYzdiNGUgcHkzay1zdHJ1bmkKKzU2NTg2IGY2NzIwNzFkODJmYjgzOGRjOGI2NWQ2NjUxMzg3MDRiODE3NWMwNTAgcHkzay1zdHJ1bmkKKzU2NTg3IDM1N2NiODk2N2U4NWVlMGY3OGNjZDkyMDFjNTYzN2NlNjE3OWYwNTggcHkzay1zdHJ1bmkKKzU2NTg4IGU5OTE2YTRlMDZhNGRkM2E1MWMxYjVlNWE3ZTQyMGM0YWRhMjA0OGMgbGVnYWN5LXRydW5rCis1NjYwMCA3ZTdkY2UzMDg5ZTM3YTljMTBmYmUyMWFiNjMyNmNmNjA4YzI1ZGQzIHJlbGVhc2UyNS1tYWludAorNTY2MDEgODViN2Y0MGUxYzFjZjBhNWI1NWY2NjM3OTJhMTY3MWU2MWI2ZjQzMiBsZWdhY3ktdHJ1bmsKKzU2NjAzIGQzNDcxZWY2ZmUzOGE5Yzg4Y2E1MTZmMjE0N2RmMzc0YTlmN2E3NmUgcHkzay1zdHJ1bmkKKzU2NjA0IGUzMWM0ODIxOGIwY2I5MWEwYzhjZDI2YTQ5N2IxYTUwN2Y2YzAwOTQgbGVnYWN5LXRydW5rCis1NjYwNSA3ODVkZTIyNDk5NWQ1MTE1YWY3NWQzMWY5NzhlYzllY2IzODVlZWVhIHB5M2stc3RydW5pCis1NjYwNiBlMWRhZTg2MjZjMTFhNmRlMDlmN2M2ZjVmNDZhZDZiMDE2MTRmOTRmIHB5M2stc3RydW5pCis1NjYwNyA4NmMxM2NlNjBhYWRlNWQ5Nzg3M2QzOTcxYmJlZTY5NjlkNjhkNWZmIHB5M2stc3RydW5pCis1NjYwOCBkNTJiZWY1NTJhYTQwN2YxYTYyMmQyZjkyYTMyZTliYTlhMDc3NTMxIHB5M2stc3RydW5pCis1NjYwOSAzMTA1YjdjZjM1YmVhNzA3N2ZiYTk3NmU4NGFkY2FjZjZlY2NmMzM2IHB5M2stc3RydW5pCis1NjYxMCBiOWFkYWQ1Njk1YTM5YWQxMDg5YTk0ODBkZjFmZDMwMGJmNDc3OTZkIHB5M2stc3RydW5pCis1NjYxMSBlOTRkNTA2MGIwYzFjNGEyNGY2MDcyNWIxMDAyNWU0YzNhY2QyNmI2IGxlZ2FjeS10cnVuaworNTY2MTIgZjFmMWY1ZTEzOTVjOGI0OWVjZWQwNzNjMjU0MTc3MjMwMThmOTUwNiByZWxlYXNlMjUtbWFpbnQKKzU2NjE0IDVjZDVmMzJiNGEyODg2NDg4MDYyZTAxNjNkNTQxMWFiNzliMThiNDYgbGVnYWN5LXRydW5rCis1NjYxNSAzNjVlOTkxYTYzMWI0YzU2NWQ2NTUwZDdmYWEyMjVhODkyOTE1MGI5IHJlbGVhc2UyNS1tYWludAorNTY2MTcgOGFkOGEzMzRiZTBmMzU1ZmQwNDc5MDBmMTYzNzMzYzU1MDUxOTA1MSBsZWdhY3ktdHJ1bmsKKzU2NjE5IGU1OTgxNzNmOTVlODgwNDFmOTUwZjE1MjQ4YjJmNjFiM2E3ZmMyMzYgcmVsZWFzZTI1LW1haW50Cis1NjYyMCAyNTEwMzNhMWMyZTMyODVkYTI3NGQ4NmNmNmY0NWQzMmI1YjdhY2E5IGxlZ2FjeS10cnVuaworNTY2MjEgN2U4NDY5NjE3YjFjM2QyNTZlN2U5Mzg1ZjYxMzJkYzg1MjNiOTA2YiBweTNrLXN0cnVuaQorNTY2MjMgMGMzMDBiMjkyMDBjMjI4OWI1Zjk1NTE5ZjY3YTIzNTM3YWEyM2VkMyBweTNrLXN0cnVuaQorNTY2MjQgY2U3ZmMwOGQ1ZjQ3ODUzMTQxNjQwMDY2MzYyZDgzMWFlMTdhZjJhOSBsZWdhY3ktdHJ1bmsKKzU2NjI1IDQ4Y2ZhYWE4Mjg3MzBkZTFhMWExNTljYTU0NWQyMWNjYzIxNjkzZmEgcHkzay1zdHJ1bmkKKzU2NjI2IDQ2ODYyMTU2OWJlOGU5NWVjZDkzM2ZjOWM4NmVjNmJhMjE2MzM1NGYgcHkzay1zdHJ1bmkKKzU2NjI3IGJkODQ1NmM5NTY5YWMyNTMxNDRhZWQ3ODFkMDI1NmZmOGNjNTM4N2EgcDN5aworNTY2MjggOGU2OWFjMWJkMDQyY2NhZGZkYjg0YzYwZmRiNDgyZWNlYmQ0YTVjYiBwM3lrCis1NjYyOSA1MDQwODRjMDRhYzAwMGNkZDNjYmNkZDdmYmE5MmJiMGI3NmZhNGVhIHB5M2stc3RydW5pCis1NjYzMiAzYTAxNTM1NWIwN2FhMDM1MDQxMjI4MzQwOTRlMGFjMjA5M2FkZTI0IGxlZ2FjeS10cnVuaworNTY2MzMgYjYwNjhkZDZhZTAwYzNlMTU3ODkwODhkODk5MjE2YTc1MTEwYWU5MyBsZWdhY3ktdHJ1bmsKKzU2NjM1IGVmMmRjNjJkMjdlYjdkOGYzMTk5MjViMzFlMzBmMjhiZTMzYWY3NjYgcmVsZWFzZTI1LW1haW50Cis1NjYzNiBlMWMwYWE5NGMwOTJmOWMyMGUzZDNkMmFkYjQxMzBmNjdmZGFhOGY0IGxlZ2FjeS10cnVuaworNTY2MzggM2Y3OGFjYzAxMDM5ODE1YjZmYmQ5NTIwMjUxMDIxZTE4ODYxMmFjYiBwM3lrCis1NjYzOSA4YjU2YTA2OTYxNGVmNGEyMTUwZDJmMDgxMDIzNjliMjc5ZmEzNDAwIHB5M2stYnVmZmVyCis1NjY0OCAzOTJmOTgyMjFkMTNlZWFjNDhlZWUwMzkyNDU0NzY5M2QyNzFkYmE4IHB5M2stc3RydW5pCis1NjY0OSA4YzE2NWQyMDcwOWY2M2ZjNjNiNWYyZGQwZGI4YzhkMzgzZDQ5ZjU3IHB5M2stc3RydW5pCis1NjY1MCBhNmQyNmE0ZDY3MmRlYTNiZDgzZjI0NGE4M2VlNDY3ODVkMTY3ZGE2IHB5M2stc3RydW5pCis1NjY1MSA5ODk4YTY2OTY1YmNkOTg3ODU5NGNhNjJhZmJhNTFkZjAwMTVlMzk2IHB5M2stc3RydW5pCis1NjY1MiBkM2E1Yzc5NmM4YmEwMGZmNWYwMTMxYTJiYmIxMmZkZGI4NzkwY2UxIHB5M2stc3RydW5pCis1NjY1MyA2NzA1OWI3OGJjZTQ3NWQzYWZhNTRmNWQ1YWFlMDI2ZDViZDBkM2M2IGxlZ2FjeS10cnVuaworNTY2NTQgODAxYWQyZjBkMGI1ODA1OTdkYzJjODFmOTA0NWJlMDZkMDk0Yjc4NyBkZWNpbWFsLWJyYW5jaAorNTY2NTUgMDdjMmY4MWMyNjdkNjE5YmM3NjNkYWVjOWNjNDUxNTFhMmQ0OGU4ZCBkZWNpbWFsLWJyYW5jaAorNTY2NTYgY2Y0NTk2NTJjMzUyMzRiNzgzZGY0MzllYmU2N2E1OTg4NjZjNzFiYiBkZWNpbWFsLWJyYW5jaAorNTY2NTkgNmYyMzMwZTA5MDliZWM0YjdiMDRiNmQ0YmFjYmQzZDA0MzM3ZTEyZCBweTNrLXN0cnVuaQorNTY2NzIgMDJjMjcxNzdkZjc5MzRiY2NhMWQ2Y2VhZDNhN2RiNmQ1NDE4YWZiOCBweTNrLXN0cnVuaQorNTY2NzkgMGNiYmE0NDI2Y2QzYzRkMmFhOWViODBhYzFmMzQ2ZGMwYTAwZjdjNCByZWxlYXNlMjUtbWFpbnQKKzU2NjgxIGUyMWQ2NDc0NmJkM2NjNGY1MDZhZTk1YzIxNmNiM2ExNGE0Y2MzMDUgbGVnYWN5LXRydW5rCis1NjY4MiA3NTVlMzFkZWE0N2U1OTZmMzBhNjQ3MGE3NDIwZWEyOTFhMjdiMjQ2IGRlY2ltYWwtYnJhbmNoCis1NjY4MyBjMzNjMzdiYTljYjNiNTllMDdiMWU5OTkwNDFjZTFjODRjNzc0NTVhIGRlY2ltYWwtYnJhbmNoCis1NjY4NCBiMWZmNTRmOGY5ZDgzMTNhNTFiOTQ0NzljODg0NGVkMTU1NjFkOTQ5IHJlbGVhc2UyNC1tYWludAorNTY2ODUgM2FkYjAzMzVkZTUwNmNkZWQyMTllMDc2ZDlmZDE5YWRmOWU0NzVhYyBwM3lrCis1NjY4NiAxNjhkMDU1MTYwZGMxOWY5MTExNzRjOTNjMDJiZGYwZWI3MDMyZDg3IHAzeWsKKzU2Njg5IDcyM2NiOWUzZmE1MDBlNzUwZTBjZjBkZWIyZDQ1OGU2MjU5MGQyMDUgbGVnYWN5LXRydW5rCis1NjcwMyA3Nzk0ZGExMzM0YTAxZjc4NDllNzA3YTQzYzczN2VmZWQ5MTg0MGE3IHB5M2stc3RydW5pCis1NjcwNCBhZTcyYmY1YWU0NjUxOGNhNjFkNWI1MDliNGYzYzVkNGExMjNlZWE0IHB5M2stc3RydW5pCis1NjcwNiA0NjYyNWU2MTIyZTk5YmZlMGNhNDFmNjlmMjlmYzYyOTE2ZGIwMjVjIHB5M2stc3RydW5pCis1NjcwNyA4MWFkZTAxNDQyNDdkNzg3NWQzM2Q4NTJkMzI0MTQxMGMzYjUwMjFkIHB5M2stc3RydW5pCis1NjcwOCBiMWJmMWJhYjk3Nzk2NjAzMTUxMGRmNTQxMTAxM2FjNWJiYTAxNTBmIHB5M2stc3RydW5pCis1NjcwOSA2YzNmYTQzZjFkMWQyNTExOTZjYjFmOTQyY2YwMzk2NWY0Njk0ZjA4IHB5M2stc3RydW5pCis1NjcxMSA3NDAxZmY3OGViMjljMDNiY2E4ZDMxMTM3YjgxZTBjNzliMjM0ODliIHB5M2stc3RydW5pCis1NjcxMiA1MzVkYWUwNGQ2Y2Q2NzQ2NDU4M2MyZTAxY2I1ODNmZmZhZTc4ZDIzIHB5M2stc3RydW5pCis1NjcxMyBlMzE5ZDJkMjg1YmEzZDY3NWFmNmYwMTc3MTJmMzU2MGJmNmEzOTU2IHB5M2stc3RydW5pCis1NjcxNCBjMzUxNDA1NTlmODdlOGRhOGNlNjE4ZDY5N2JiYWFlNTNlOWJhNDQxIHB5M2stc3RydW5pCis1NjcxNSBmNmNjNzZlNGNhMjUxYmRhYzdmOTA3ZjE3MWRlNDBkYzRmOWI5ZjBmIHB5M2stc3RydW5pCis1NjcxNiAzZWQwMjBlOTViNDQ0ZTMwZTM5MWU5NWY2NzAzNTIwOGFhMTM5YjYwIHB5M2stc3RydW5pCis1NjcxNyAzYmUyOTcyYTI5Y2FjNWM3MGU5MDc4MTg3MjE2ZjlkN2ZhYWIwMTU3IHB5M2stc3RydW5pCis1NjcxOCBhZGU1ZDFhYzFhMmM4YTUwMzlhZGUwNmI1MGY0YWRjMjM3NmMyMDBkIHB5M2stc3RydW5pCis1NjcxOSA3MTMwNGVmYmMzMTZhNmQyZjQyZDM1YjY0YTVjYTExNzBkNGJkODI4IHB5M2stc3RydW5pCis1NjcyMCAwNTcyOGU1MmIyODMyMGQxODAxODJmNjg1ZGQyODc5NTZkNjE3ZTQ1IHB5M2stc3RydW5pCis1NjcyMSBiNmJkYmI2MzI2ZDJmMGI5ZTE5N2Y0MDYxYjVmZTM1MDI5YjcwNmJhIHB5M2stc3RydW5pCis1NjcyMiAwZmE4NGZmYmE3Njk4YWRlYjI4NWNlZWVhMjI5ZWVkMTQ3NWU2MjdhIHB5M2stc3RydW5pCis1NjcyMyBjNjE5NDQ4MGIxZDU5NjFkNGVkZjM0YThlMTI5MzFmMDQ5ZWM5NzgyIHB5M2stc3RydW5pCis1NjcyNCAxMmRiYWVjZmI0NGI5MTQ3ZTgzMzk4NjQ3M2Y5OTU1NzI0OGExOTFlIHB5M2stc3RydW5pCis1NjcyNSAxMzMzNTAzOTg3MjIxMGE5MWRmZDk0OGViZDA5ZTFhNjFiOTFmNzJmIHB5M2stc3RydW5pCis1NjcyNiA4ZDY5YTA4NGUzNjU1Y2E1NTMwYjU5ZWFlNjU0ZDQ2MDA1YmE0OTM3IHB5M2stc3RydW5pCis1NjcyNyAzZmU1N2RhYWE2MDgxMzQ5Njc4YWFjNTgwZTIyYjZiZmQ1ZGI3ZGEyIGxlZ2FjeS10cnVuaworNTY3MjggYmE2NGZjYWI1MjE0MmE1ZmI4N2M5ZWEwZDA0ZmYzYzU1ZWY2MDMwMSByZWxlYXNlMjUtbWFpbnQKKzU2NzM1IGFhNWVlNjUzMjhmYjY5NDhhNjM4MTk2NWE0YzM2OGFiYWU4MTgwNzAgZGVjaW1hbC1icmFuY2gKKzU2NzM3IGVkMzc1NDJmNDczZWFlMjg2NWQ3MmUwZjQxNmMxZTc4NmFiYTA5OWQgcHkzay1zdHJ1bmkKKzU2NzM5IDUyOGE4ZDllZjIwMmU1NGQ2MzdlNmViOTM3YWE3NDQ3NDIxMDg3MGMgcHkzay1zdHJ1bmkKKzU2NzQwIGE0MGFlZGRjMGM4MWJkOGU0N2E5YzI4ZTU4MjYwODYyMjU0YzU2ZmMgcHkzay1zdHJ1bmkKKzU2NzQyIGY0NDA5YzVkNzk5NGQzYTBmZWNmZGNiNmExOGI3MjZiOTVmNTQyOTEgcHkzay1zdHJ1bmkKKzU2NzQzIGQyMjM1YWVlMmQyNTUwMmNhYzE5NjJkYjY5Y2QwZGU0MzBhM2M4Y2YgcHkzay1zdHJ1bmkKKzU2NzQ4IGE4NGVhZGY2MzcyZTM4YjIzNmNiZmViMDg3ZDNmYzQyOTFiNGE5M2MgcDN5aworNTY3NTAgZmRiZWQ3M2U1ZGE3ZjVjYjExMDkzOGE0YTg4MGZiODdmOGFiMDNlNSBwM3lrCis1Njc1MSA2NDg1NzdjYzY4OGFmNmNlYjA3OTcyOWE1N2JmYWYxZTg2NjQxZTRiIGxlZ2FjeS10cnVuaworNTY3NTMgZGQ3NGUwMjBhMTMyMzg2ZDQxNjk4ZmE4NzJlY2VkMGFkYTIxNDA3ZiBweTNrLXN0cnVuaQorNTY3NTQgNjI5MTg1OTkyYWEyMTUwYjAyOGQ5ODljYWE0NWMyNGJhYmY2NDQ0MSBweTNrLXN0cnVuaQorNTY3NTUgMDgwZjJhYTE4MDE1OGU3MmU5Mjg4Yjg5MmZjZWEwN2I4ZmQ0MWE5ZCBweTNrLXN0cnVuaQorNTY3NTcgNDlkNTFjMWZjMTc3OGMxMmVmNjUxNTg2YTlhNjlhYWZmYTczOGQwYSBweTNrLXN0cnVuaQorNTY3NTggMTc4MDAzNWQ1ODEyM2M3N2ZjZThiMDU0YTc0NjY3ZGM2NWVmZTVhOCBkZWNpbWFsLWJyYW5jaAorNTY3NTkgODhkN2EzZGY1Zjc5ZTUyOThhZTYyNDBhYWQ0YmI1ZjljM2U2MGNhYSBkZWNpbWFsLWJyYW5jaAorNTY3NjAgYjQ1MDA1NjQxYmNhNjI4OWQ5MTQ1YmY0ZWY2NzBjZWUyYWZmNjQ5NiBwM3lrCis1Njc2MiBkYmZjM2NmMTUyMmQwN2E0ZTY5NmM3YWMyMzM2ZWQxOWY3NWI2M2YzIGxlZ2FjeS10cnVuaworNTY3NjMgOWIyNmVlNmU2ZDBhNDVkZmM5YWIyOTJkODM4MGUxOTQ5YWJlZWUwNyBsZWdhY3ktdHJ1bmsKKzU2NzY0IDI1OGUyYjdhNzhlNGZlMTc0Nzg0MDNlYmE5ZmNmMjE0ZWEyOWE2ZmEgbGVnYWN5LXRydW5rCis1Njc3NSAwYWRiNzIwN2U0YmViN2I0ZDNmMDk3NmUzNWJjZmYzMWJjZjI2MThkIGRlY2ltYWwtYnJhbmNoCis1Njc3NyA4YjQ1ZjIyOTdkYmQxNDliMjkyMWMyZDZlYzhlZjQ3MzE0MGYzOGE5IHB5M2stc3RydW5pCis1Njc3OSBiMTBiYTM4ZTZiODA4MTIzNmE1OTAzYTJhMTlkNmRiOTFmZTQ4NGEyIHB5M2stc3RydW5pCis1Njc4MCAyMjkzNjExOThlOGQ1ZWQ4M2M2NTlhNGQwODA2NmRiNmQ2ZDc4NDVkIHB5M2stc3RydW5pCis1Njc4MSA0NDAxNzZmMDYxNDc5NDI0MDYxYTg3YzI2YjJjYjUyZDE2MTBjNmY4IHB5M2stc3RydW5pCis1Njc4MiAzZmMzY2VkYzQ5Y2EzYzZhODViMTg1ODA3MTRlZDkxNGE4NmYyNWI4IHB5M2stc3RydW5pCis1Njc4MyA4MWEzODAzZjQzY2Y5ODllYmQ4NGZjMzdmZWNjN2YzYzUxZjllNDMzIHB5M2stc3RydW5pCis1Njc4NCBmNGM5OWNhZDhkMmY2NGIyN2Y5MzZkNTNlMzk4ZDU5ZWNmMDE3MzkwIHB5M2stc3RydW5pCis1Njc4NSBmODI4MWRjMmU2OGRlZDdmM2I2ZmY3N2UxYzY0YjdiODg3YmE3NWVhIHB5M2stYnVmZmVyCis1Njc5MCAyYWIxOGZmYjQwMWNmMWI3YWQwOTQzZjc0ZGE5MTg0OWZlMjZiYThlIHB5M2stc3RydW5pCis1Njc5MSAyYTExM2E4MjY0YjE2MjEwNjk5NGM2OTc0ZWQ1YTRkMzMzMjY2MmU0IHB5M2stc3RydW5pCis1Njc5MiBmMzI0OGMzMjBkZDAzYTFkYzJjNmU3OGZhNjdjMjI4ODVhZDU1YzRiIHB5M2stYnVmZmVyCis1Njc5NyBmZTVhMDYyMWY5MTg4MDZkYmZhMTJlMmJhODg3M2Y2Yjk4ZjFhZmY1IGxlZ2FjeS10cnVuaworNTY3OTggN2QwNzhmYTM0YmJmNjNiZjJhMmJhZTlkNTUwNGM2ZDA4NGI3NzJiOSByZWxlYXNlMjUtbWFpbnQKKzU2Nzk5IGIyMmQ5ZmQ0YTc4NWFkZmFhMzJhNTdmNDllODBlNmYyZTFjN2RhMTggcHkzay1zdHJ1bmkKKzU2ODAwIDZiYTJlNjc1ODBmYzk4YjgwMmQ1MDM0YjlhOTlmZGY5NWQxOGM1MmQgcHkzay1zdHJ1bmkKKzU2ODAxIDM0NWM4MTJmMzM2NjVlZGYzMmVlYzBmYWFiY2FmYzJmZTI4ZTcyNDQgZGVjaW1hbC1icmFuY2gKKzU2ODAyIDI5NzM1ODk5Y2ExNWEwNjk2YTg1OTNhMTJiZmNlMjUzMGQwNDI2YzggcHkzay1zdHJ1bmkKKzU2ODAzIDZmZGQxYWY2M2ZhNmE1ZmZiN2E3NDU0NGJkZTk1MmIxMDJlMWNiMGMgcHkzay1zdHJ1bmkKKzU2ODA0IGU3ZmQzMjdlMGMxOWEyODhmMDk1NWQ3NTc4Y2E3MDg5NThmMzFiN2MgcHkzay1zdHJ1bmkKKzU2ODA1IDQ5ZDRjNGNkZjBjODYyODNjMWJjZWJjNWI3OTZkNzAxNDE5ZjFkMWMgcHkzay1zdHJ1bmkKKzU2ODA2IDlmMTg0OGY1OTZlMGNjNjRkNWM2NDhkNjhkMWEzNDVhZGZkYWNkOTMgcHkzay1zdHJ1bmkKKzU2ODA4IGUxMTUwYWFlMGY2NGQ2ZGI5NjRkYTM5YmEyZTU3ZTg0Mjg0MTQyNmYgcDN5aworNTY4MDkgMTNkYzgzNmQ0YTk5YTg1ZTA3OTI0ODEzZDdiZTBhMGFkZmQ3ZWQxMSBweTNrLXN0cnVuaQorNTY4MTAgYjIwY2MxYzBjZjEwZTQ0NjFlNzY0MWYxM2Y2NmZkMWZhZmE4ZjNiNiBweTNrLXN0cnVuaQorNTY4MTEgNGRlYTNiNjhiMDEzYjBlOGRkMmM4MDcxZDkzOGIzZTk5ZjFlMDkzMCBweTNrLXN0cnVuaQorNTY4MTIgMDRhMTRkZjQwNzNhNGVmOGUwMWZhY2RjZmM4OGYxZGExYzkxYjBhMCBweTNrLXN0cnVuaQorNTY4MTMgYzFlZDQ5MGJkMjY2NzRkY2Q5NDc3NDdiNzgzMTYzYzEwNjBjMWFhYSBweTNrLXN0cnVuaQorNTY4MTQgYjY1ZjZhYzUyOTY4YzY2MzQ3NGU1YmFmOWU4ZDM1MGZlNTc2N2E2MSBweTNrLXN0cnVuaQorNTY4MTUgM2YxZmNkMDgwZWM0YjUwMTBiMDM3OTdhYWY3MzEzOTgwMGQ0YTczOSBweTNrLXN0cnVuaQorNTY4MTYgYzhhMDkxYjg0MmQ2ZWRjZjMwMWI3ZmY3YzNkNWQxYjhiMzg5MmE5NyBweTNrLXN0cnVuaQorNTY4MTggYzk2YjRjMzg2NTJjMzllMjQ4MzMzYmQ2ZmNlMDNiOTMwOGNkOGYzNiBweTNrLXN0cnVuaQorNTY4MTkgNjY4YTVhZGNjODdjZjJjZjk3ZTU4OTBlZjM3NzdhYjhmMmU5NGUyZSBweTNrLXN0cnVuaQorNTY4MjAgYjU2YThkODIyZjIxYjY1YTFlNjU3M2U3ZmM0NDMyMGI4NTdkYjJiZCBweTNrLXN0cnVuaQorNTY4MjQgYThmMTNhNDNlYWExZTUzZGMyZjFkNjZlZDU1MmY5Nzg5ZjA2NGMxOCBweTNrLXN0cnVuaQorNTY4MzAgODZmZDM5YzJjNjc2OGRjZjJhYTkzYWJlMTQyNDAzMzZlYzVjNWY4NSBsZWdhY3ktdHJ1bmsKKzU2ODMxIDg5YzgxZmQ3MDM4ZTYzMTczZjQxNzQxY2FkNmI0OGQxNWU0Y2QwZDcgcmVsZWFzZTI1LW1haW50Cis1NjgzMyAzZjZiZTEyYjk1MzQyM2ZkYmMxNWU2N2YwZWZkMDIzM2U3ZmE4NDQ2IGxlZ2FjeS10cnVuaworNTY4MzQgNTdjZDA3MGFkMzA0MmYxMmVkNDIwMzNhODA3M2UwZmFlNjJlNzlmNiByZWxlYXNlMjUtbWFpbnQKKzU2ODM1IDVmNjBjOWU0MTQ0MDNhZTVhNGY0YTEwMWY4OTUzNDhjMDg1ZTY3YjkgcDN5aworNTY4MzYgZjRlMzY2YzM5MmJlNzA2ZWMzYzkxZjc5MjJlNDY4ZmUyZmNhZmU5NyBweTNrLXN0cnVuaQorNTY4MzcgMTdjZGJlZGJiMTVkNDU0YTNkYTc1ZDdkYTM0MTE0YjZmMTA3YmM1MyBweTNrLXN0cnVuaQorNTY4MzggOTVkM2E2NWNiNzRjNzBmOGJmYTE2YzQxZGJhODMyN2M2MWExYjhlZCBweTNrLXN0cnVuaQorNTY4MzkgOTYwOThhYmM4ZjhmNjc2NmM1Y2VjZjY2ZmE2NzBiMDA0Y2FlMDQyOSBweTNrLXN0cnVuaQorNTY4NDAgYzMyMWMyYjU5OGYxNzQ4MDkwMTdhYTllNTY3MmUxZWY5MDM2NmZlOCBweTNrLXN0cnVuaQorNTY4NDEgZjYwNjlmOWRkNTJkZmE5YzliNmYxMjNiZmY2YmFiNjFlMDQ3OTc3MyBweTNrLXN0cnVuaQorNTY4NDcgOWVkZjMwYmZjMmViZTBhZDgxMzA4YTY3ODEzYWFlZjU5YTdjYzNmNyBwM3lrCis1Njg0OCA5OTE4OTg5YjczM2I1ZWM3ZjU1MTczN2I3OGYzYjM5YjU5MGNiZjM4IHB5M2stc3RydW5pCis1Njg0OSAyM2Q5NjNhNzU2OTYyZWExMGI0MDMxNGI0YTdkY2Q2YTQyZThhYmIyIHB5M2sKKzU2ODUwIDVmYmQxNWM2MWIxMjUwNTE3Y2UxYzY3NzZmZDk5MGI5ZDNiNDQ2YTAgcDN5aworNTY4NTEgM2UxYTE1MTg1ZjhjZjllZWMwOWM2NjRiMzk5YjZmYzg4MjBhNjUwZiBweTNrCis1Njg1MiAyNmNhM2Q2ZjQ3M2FkNmRlNTY3ZjBhMWM3ZTA5NzY4NDIxOWM5ZDZlIHB5M2sKKzU2ODUzIGRiMjU5ZDE0MWU3YWVjMDJmNmFiN2U4YjhiYzc1ZGZjNDgzMmRlM2YgcHkzay1zdHJ1bmkKKzU2ODU0IDRhYWVhMzVkY2NjZjhkMjE0ZWE4Y2Q1MDgzYjNiNTFhOTFlNjJhMTQgcDN5aworNTY4NjAgMGM4OTQwOWJkYTdhYmM2MGYzOWRiZGNjZmEyODQzMDY3ZDEwNjMxMyBweTNrCis1Njg2MiBkZjRjZDkyOTcwOTgxOTQ3YTI5ZjVkMGZiMWIwZGU2NTFlY2FmMDIwIHB5M2sKKzU2ODcxIDQ4NjViNTEwY2Y1NGU4ZGExZGYzYjYzZTZmZTc5MWQ4MTAyZmM4ZmQgcHkzay1zdHJ1bmkKKzU2ODcyIDNkYTBhNGRiMjEwMjRkZTViNjc1MGMzMzIyNWEwNGRlMDNiMGRhNzEgcHkzay1zdHJ1bmkKKzU2ODczIDUyMmEzZTNhMDNhOTZjZTE5YmI4NmE4YzE5ZTRmNjI3MmY2ZWIxNzQgcHkzaworNTY4NzQgMDQzYTEwMmExNzBlZTJlZjNiYTMyZWFlNDVkMGJlNmVlMDYxYTg2MyBweTNrCis1Njg3NSBkY2YyNzM4NWYxMjUxOTAyMDY3OGE4ODdkNWUxOGJjYzRjMTAzMDhmIHB5M2sKKzU2ODc2IDE2NmM3NDA1MzZiNWY3M2FiNDc2ZTQ5OGNjODM1ZTY2ODA2YjA4NTUgbGVnYWN5LXRydW5rCis1Njg3NyA4MmE1YzMwYzE3ODYyMDZhZGM1ZDFkMjQ0YTRhMWQ3NjI0YWM0NmFiIHAzeWtfbm9fYXJnc19vbl9leGMKKzU2ODc4IGJlM2ZlY2QyZDMzOTQyOWMzODUwNDJmOWY4YTVhYTg4MWI5MTdkNzMgcHkzaworNTY4NzkgYTI0ZTI3ZjA1ZTQ4MjljYjg3MjM4ZmQ5NjhiZGE5ZDZlZDI5ZDRiNSBweTNrCis1Njg4MCBjMGRiZjQ1Y2MyMDcyOThmNGMwNzAxODNkZDA1ZDU5OTkxYmU5OWUyIHB5M2sKKzU2ODgyIDA4NzBlOGU5ZTk5ZjU4ZjZhZGVmNjQ2ZjdhYjM4ZGMxZmVlNGYzYTkgcHkzaworNTY4ODMgZjBjZmVkMzhiOWQ5ZTFmNTQ4NWQ2MDYzMDE4MjhmMTZlMmI3NmI0YyBweTNrCis1Njg4NSAwZTVhZWJhM2M2N2RiMmE1YzQ4NmIzOGJmNzI3MDRhZTBmYjE4OWI5IHB5M2sKKzU2ODg2IDUwN2Y1NjcxZTM4ODYyOGY1ZGU4MTYzNDAzNzVmNzllZDI3N2QyOTIgbGVnYWN5LXRydW5rCis1Njg5MCAwYWIzNDIxYTA5MDY3N2M5MDliOWQ3ZjQ4ZjIzNWJjMWQ1M2M3YzdiIHB5M2sKKzU2ODkyIDlkNGUyMjAyMjRmYjVkZDdmYzUyNzMwYzUyYTM1NGVlODYwMWUwMDEgcHkzaworNTY4OTMgY2MyNWQxNjBmMGY3ZWUxMGIwYTM3MmMwY2JkOTA2ODk1NzcyNGUyMSBweTNrLWJ1ZmZlcgorNTY4OTQgZWViMzdjOTc5M2VhNTM0MzY4ZDA0OTk4MjE5N2E0N2NlZTI0MmNmMCBweTNrCis1Njg5NiBmMzcwMTZkNDI3MjlmYmVmOTg1N2VkYzkyOTc3MWRmODIwMmRlN2IzIHB5M2sKKzU2ODk5IDc3MDMxODdjN2M2ZjExN2NjOWIwMTVlZTg5NzRmZmZlY2MyMThjNzMgZGVjaW1hbC1icmFuY2gKKzU2OTAwIDkzMDczNmVlOTNkOTQ5MGE5M2QyOGZhMWNiMzYyZGM3MjZhYjYxODEgcmVsZWFzZTI1LW1haW50Cis1NjkwMSAzNDZkMGI4NDAzMGI5ZGY5NThmYWY4NTQxYWZjZDUzOTJlY2JkZjc0IHB5M2sKKzU2OTAyIGU2NDI4NjA1M2IyNTIyODUxNWZmODgzY2IwNTRjOTlmOTE3NmUwOWYgcHkzaworNTY5MDMgZDk1YjE1YTU1ZjJjMDYzMGUwY2U1NjA2MDI5NGY1NTI3NzVjOWVlNCBweTNrCis1NjkwNCAzZWMyMGM0YzFhNGZiYzUxMzM2OTJlZjA2ZjYyMTQ1ZmFkYTdjMWJkIHB5M2sKKzU2OTA1IGFmZmIxZTg3ODgxYTVmMWFmNjNmMmZjMzM5MTc3NWRiYzgwZmY0ZjUgcHkzaworNTY5MDYgODFiZDNlOTRjZjBjMzFkODM0MmI2NmEwYzJiMmZiMDNjNjFjMmFhYiBweTNrCis1NjkwNyAzODU4ZDBiOGIwZWY3NmZiZDBkYWJlMTUzNmQ0MTBhZDlmYmRhZTNiIHB5M2sKKzU2OTA4IDNhMTU3MmQxZmYxYWQ1NGZlY2RhZWEwNmNiMTVlOGM4ODRkMzAwODcgcHkzaworNTY5MTAgZjgyOGYzNTAxNGFlMzliYWU1MDg0ZDkxODFmZTlmNjA3YWY4Nzg0OSBweTNrCis1NjkxMSA2YTA5NDIzMTY0ZmU2MjRmNTY3Y2ExNGIxMDJhNzU1NDE1MjI3NzBkIHB5M2sKKzU2OTEyIDVmOWU3OWQxZTE1ODRiNTlmZTgxZWU5YzkxZjc2Mjc0MDk2NTAwZGUgcHkzaworNTY5MTMgOGQ2ODY3Y2I4YThkYjcxODk1MThlZDA1YzViODI1ZmQ3MzBmNzA0NCBweTNrCis1NjkxNCA2Y2RkY2U0MDk2YTIyN2UyMGNhOTUxNDA0ODNkNDhkYmM3MDNlM2JjIHB5M2sKKzU2OTE1IDc0YTNjNjgyNjY4M2U0Zjc0OWEyMThlMzc2Mjc3OWRjMzMzNDYyZTYgcHkzaworNTY5MTYgOWMzZTY0NDBmNTRjMzIzYzY4MTUyMTZlNGNiMTU5MjIwMzhkZDc4MiBweTNrCis1NjkyMiA0M2UzMmIyYjQwMDQ4MWNhMzdiODYzOGMzYWM2Y2M2Y2I3YWU5MWMxIHB5M2sKKzU2OTIzIDY4ZmY5MDk4YjJkYzgzNmQ1YjBkMGI0YmQ2MjMxMTkxNzU0N2Q2OTYgZGVjaW1hbC1icmFuY2gKKzU2OTI0IGFhYjY4NzkzNmVjZDgyNzRiZTQ4ODAyODkzZmMwZDlhYmYwYTdmYjQgcHkzaworNTY5MjUgMGM5YWQwYjJmYWM1NGFiOTBhMjdmYjM0M2IyY2ViYzAyZDk5ODI2NSBkZWNpbWFsLWJyYW5jaAorNTY5MjYgZDE4NTVkMGU0ZTAzYzM5Mzc2MTA3NjcyODk0MWZjYjBiYzA4YmM0YiBweTNrCis1NjkyNyBjZmFkZDdjYzljNDU3N2E1NmM5MWI3ZDUyNGFlZTA4NzI1N2M5MzY5IHB5M2sKKzU2OTI4IGE0NGM1NjQwMjZiODMxNDg2MDU1ZmIxNGViYzhjN2Q0NTVmMzEyNjQgcHkzaworNTY5MjkgMDc3YzY4MTg2ZTIzNzdkNDVhYTI3YjJhNmI1YTZiODYwYTk4ZDUzMSBweTNrCis1NjkzMCBjZjkxMzc3ZTI0NDRlNDE0YTVhZTQyMjdiZTZlN2IyNTNmM2FiZjE1IGRlY2ltYWwtYnJhbmNoCis1NjkzMSA0MjFmOWYzNThlNGZiYjRiOTU3ODM2YTY0MWE1ZWI5NDcxMDgyZDg2IGRlY2ltYWwtYnJhbmNoCis1NjkzMiAwYzBlMzU1Y2Y3NDA3Y2QzZWM0NjUyZjdhMDM5ZGM5MWExYmJiOGI5IHB5M2sKKzU2OTMzIDg0NDdlY2QxYmY0NTgxYjg5YTUzZmY3ZjlmNDc1NTE2YWI2ZDdmZjkgcHkzaworNTY5MzQgYThjNzQyNDI1MzU2MmNkNGY0YzMxOGQ0MTFmNmUxZjE5ODcwNGQyOSBweTNrCis1NjkzNSBlMGY2MjI4NmE5YTQ1NGJkM2Y5M2VmYmFlNzIwZTg2OTYxYTYzMTgyIHB5M2sKKzU2OTM2IDY1ZjFkNDE5ZjYzMTA5ZmU3NzFlYjhhZGI3Yzg0Zjg2ODYyZjBjNTkgcHkzaworNTY5MzcgMjc2MzMwZjQyZTc5MzZiNDZmMGFhYzRkZmY3YWMxZmM0OWM4MDU4NiBweTNrCis1NjkzOCBiNjYyNWQyYjM3OGFmMTJkZjMyNThiZjE5ODk2MWU4ZTdmZWY5OTIyIHB5M2sKKzU2OTQwIGFjMTkyZjg5YzEwOTNjYTIwMWIyMWYxMzJkNWE2Y2YzN2Q0MDU3MDQgcHkzaworNTY5NDMgYzY5ZDEyMjY0M2Q1MGQzZDNiNTRiMWY0OWE5ZDRjY2IxMDFmMTA3OCBweTNrCis1Njk0NCA3YWJhY2M5ZTM5OTU4ZjA4NTQzYmY2M2UwZmM0ZmYxYTVmYWI4Yzk5IHB5M2sKKzU2OTQ1IDNlNjgyYWU5ZDI5OGVmMTE4YTU5MmZlYzU3NzBhNjFjYzk3YzRlYmIgcHkzaworNTY5NDYgYjdiM2Y0ZTMyNTMzZWIzZmYwMjY2YTk0NTVhM2NlYWVmMGJhMjgzMiBweTNrCis1Njk0NyBmZWU1YzZiYmUxNDRkYWI4MzRlYWVmNDliNDY3YjFkNzNkZDRmM2RkIHB5M2stYnVmZmVyCis1Njk0OCA0YjQ5OTVjOGUzZmQ2NzZlMWFhYzU5ODczMmMwYTZlZDExYjljYjdkIHB5M2stYnVmZmVyCis1Njk1MCBjM2IzNGIwZjgyMTZhZTM5ZTMxNjBmMjI3ZmMxZDFmYTk2NDVjZTJiIHB5M2sKKzU2OTUxIDM0NmFmYTY1OGU0NDYwMzg1MDY1MzlmYWIwODNjNWEyZTY4YjcxZDMgcHkzaworNTY5NTIgZTc4MTA4NWFjOTg5ZTRjMGMxYTNmMjU0ZmVlMmNjOWQxMTQ0M2ZkOSBweTNrCis1Njk1NCA3Zjk0OWMxN2NjMzY3YmJjYjM0YzU1MjVmNzQwOTA5YmVkNGZlYzhkIHB5M2stYnVmZmVyCis1Njk1NSAwZmNjMThhYmEzODVkZTRjOTYwMWRiODNkOGYwZjA3YmJhZjBhZjA4IHB5M2sKKzU2OTU3IGQwMjBiOWIxZDk4YjZhZDU3YTk2MDk2YTYwZWY2Nzc2ZTFjN2M2ZDcgcHkzaworNTY5NTggYWU5Y2Y0OGVkNmY3MjhmZDdiMDMyNTdhMWYxODQ4MjgwY2FmOGU0ZiBweTNrCis1Njk1OSAwZDk5NTNkN2I4Mjc1N2NmYzQ5MzJjOWVjMTc2YWJhNWMxMmZlNTQ3IHB5M2sKKzU2OTYwIDE1MDE5ZWFlMzllODI3ZjQxNDBhM2EyZWVhM2UwM2Q1YzllZjkyYzkgbGVnYWN5LXRydW5rCis1Njk2MSAxMzgxMDQ2ZmU4OTQ1YmQ3YzM1ODAzZjQ0MzM1NWMyYWU5N2FmNzEwIHB5M2sKKzU2OTYyIGI5MGMyMjA0MTYzNTFhNWU2YzU4MzJlYTcwYzA0MWM2YmM5OGI5NjEgcHkzaworNTY5NzEgZWIyYzA2NzZjNzNmMWIxNmRmMmE3ODc1YzU4YzE4MjNlMDFhNTBkYSBweTNrCis1Njk3MyBkNGVlNTRhODg0ODUwYmNlNmM4NjJjZmUyMzUyNmU5NjY5MzkxZmQ2IHB5M2sKKzU2OTc0IDUzYjczYzI3MTFiNmM2ODJhNGUxMmE5NTY0MjY4YTlhZTM1NjI5ODAgcHkzaworNTY5NzUgNTQyNjE2MzRhZDQ2ZDVlOTZmMDI4ZDIzOTg0M2VmOTRjYmU3NzQ4OSBweTNrCis1Njk3NiA3YTQ1ZThiNzhkNjNmZjQ0ZWU5ZDAxYWNjZDliOTAwMTViNTFmOWYyIHB5M2sKKzU2OTc4IGE3MjQyNzlmYzkzMWE1ZjFhMGZlZTYwMTVjYTU2ZDAwNjFmNTQ5N2IgcHkzaworNTY5ODIgZmIwNjllYWZhZjg5ZjUzMWIyY2ExZjY5ZWUxZTE3YmYxOTc0YWJlMCBweTNrCis1Njk4MyA0YmNlOTRkOWVjMzFlNDUzOGMzMDZmZmU0YzE3ODljZTJkOWJmNWViIHB5M2sKKzU2OTg0IDZhZjZiYjQ4MjRkNWJlNjFjMGNmMDdjZmY3NzAxMmQyN2JjYmFjY2UgcHkzaworNTY5ODUgNDdhYWYzZjRhMDM4Y2U5NGFiODRmYjcyOWRiNDdlODI0N2Y2ZTI1NSBweTNrCis1Njk4NiAwZWQzZDE4MjkyMGI4ZjhkNjRiZGYzNDhhMmI3MjczMGEzMzNmNGIyIHB5M2sKKzU2OTg3IGNmOWIzYjQ4N2ZkYTFmNjViZDQwYTQ2MzFiYzkxNWNlNWU2YjJkYjAgcHkzaworNTY5ODggMzc3YjQ4MzgxYTQ5YzAzMzRjYTJhNTcwNDFhYzQyOWQyNmNiOTQyZSBweTNrCis1Njk4OSA1YWViMjYxZGUwYmRhY2M4ZjdiOWVhNmQ0NWY1ZWEzNzVhNTZmZmViIHB5M2sKKzU2OTkwIDFlNDkzNjk2NDc3NmY1N2ZmNjA5MjFkZWJjZGFmZjcwN2JjNWQ3NDcgYWxleC1weTNrCis1Njk5MSBiYmNlZjZkZTQ2NzQwNTZkYjZhZWNjMjU1YmM2ZDZkNWNiYzIwZjU2IGFsZXgtcHkzaworNTY5OTUgZDY4YTcxYzk2NWVjMTUwNWI3MWY1ZTEzNWNiOWU4MGEyNjUyZGVkMiBweTNrLWJ1ZmZlcgorNTY5OTkgYmZlMjAyYmZmZGY0MmZiNDQ0ZmUwNDNmZDNjMGRmMTY3N2U5NmFkNyBsZWdhY3ktdHJ1bmsKKzU3MDAwIGJkYzQwMjkzZDc1ZWZiOGViMGYxZmUzNDk3MGI4ZTZjMzQ0NTIwN2UgbGVnYWN5LXRydW5rCis1NzAwNCA5Y2NmOWQ2N2JiMzQ4Yzk1YzAxZDBlNTc3OTJiYzE3OTFjZDIzZWE4IHB5M2stYnVmZmVyCis1NzAwNSBkMzM3MWZkNDkxMDI0NWVjMmE4YTQ3OGNhMDllZmJkMWMyODI5ZmM4IGxlZ2FjeS10cnVuaworNTcwMDYgMjI5ZDYzNDVhNzNhMTEyNDUzMDc3N2RmZTI2Zjg5N2NmM2FlMGQxMSBweTNrLWJ1ZmZlcgorNTcwMDcgNjc5MzdmZWU3NWFmNmEyNzA4ODFhNmQzZTEzNGFlN2IxODkxY2FlNiBsZWdhY3ktdHJ1bmsKKzU3MDA5IGI2MjM3NzdmMjJiMGRhNDAzYzE3Yjk5ZWE5YWJmZmM5MGViMmUxZTMgcHkzaworNTcwMTAgM2MxYTIwMzY1YTA1YmMxYTA0YjFiZGRjYWNiMzU3YjBiNzUwYTlkNyBweTNrCis1NzAxNyAyMTlmZTM5ZWRlOTlmN2U0MjMxOGQ0ZmI2OTgzZTg2NWZmYmViYmU2IGxlZ2FjeS10cnVuaworNTcwMTkgMjc0ZjNhZTRkY2M3ODAzNDA3NTg1YzM2NjI4Y2E1ZjJjZGRhMGFiNyBhbGV4LXB5M2sKKzU3MDIwIGI3YmQ0YTI2ODljMTZjZTVkMTEzYzYyYjYyZGIwYTI5ZDhiYTY3ODYgcHkzaworNTcwMjEgODZmYWYyMTEzZDM2ZjU4ZGE3YjIwNWNiYTA2MTk5MTllYTdkZTI0YSBkZWNpbWFsLWJyYW5jaAorNTcwMjQgYTUyOGY3ZjhmOTdhMjljMDRmMmRkM2NlOWQxNmU0Zjg5NDhjMmE3YSBweTNrCis1NzAyNSAxYjkxZmFhMGRlMmQxZTM2ZThlMWRhYmRlODI5N2FhOTNhNzRjYzNmIHB5M2sKKzU3MDI2IDliMDIxMjg1MjFlMjcwNGFlZWQwYjNiNjc0YjFjZmZlYzNlMmRhYWYgcHkzaworNTcwMjcgMzBjMGQ1OWRiMGM2NDg1MjdmY2RmYzg5OGQ3MzdhMzY2Y2M2ZGYxNiBsZWdhY3ktdHJ1bmsKKzU3MDI4IDUzOTFiNWY4Y2Q3YTBlMzZhZjVhODZhZmI4OTQ1ZmZiZTMxOTQ4ZGMgcHkzaworNTcwMzIgMTNiMjNhZGRlZjQxZDgyMDYxOTYzNzE3NTg1MmEzMjM2YzRhYzExNyBkZWNpbWFsLWJyYW5jaAorNTcwMzggM2JlZWYxNmQ4MTY3MTNjMWQ3OTMzZjI5YWNkZTliNGNjNmI0ODMxOSBkZWNpbWFsLWJyYW5jaAorNTcwMzkgN2M2NmYxMTE5ZTU1NGUwMjA5Mzc2NGQ3ZjRiNjMxYzI2OTllN2FlNCBkZWNpbWFsLWJyYW5jaAorNTcwNDAgNGViZWE2YWZkYzg3MTEwMjhjNjFjYzkxMTkxOTAzOTc3ZjMxZWJkYyBhbGV4LXB5M2sKKzU3MDQxIGVkOTg5ZGQ5OTVkMjQ0MjEyYmM2NDY1ZDgyNmRiODllNDkwOTI4NGYgYWxleC1weTNrCis1NzA0MiBhYzVjZTdjNDNlZTc1OWRlNDk1NjcwODE2ZjFiYmE3ZWEwYzQ1MjdlIHB5M2sKKzU3MDQzIGY2YWYwYjI1OThjYTEyYzFkYzUzNGY2MzhhZmVlNjBkNDMwYTZlYTkgcHkzaworNTcwNDUgOTgwMzA4ZmJkYTI5ZjljODkwNjQ2YjEzOWIyMzQ0YThhYTA5MjY5NSBweTNrCis1NzA0OSAyMDQ3N2NiZmQ5OTY3ODA4NTRhOTZkMDcwZWMzYjU2MjM4NmJjYTBiIHB5M2sKKzU3MDU0IGY2OGI2YmY0NjM2NjFlMmJkZTIyZGFjMGFlMDU1ZTk2MTZjYjNjYTcgcHkzaworNTcwNTYgZjgyOGE5NWE5ZGE2YmE5MDhjOWJhMGMyNjYzZGQyMmEzYmE4ZDRjOSBkZWNpbWFsLWJyYW5jaAorNTcwNjAgNDYyMDY2MWUwNmFmYWY0NTE5Mzg1ODYwM2M0YzFhZWY4MDZjYjYxYSBsZWdhY3ktdHJ1bmsKKzU3MDYxIDE3YmU4ZmJlYzE1OGM0NWIzNzIwZTUxMTE0ZTczZjI1MGU5ZWRkMzAgcHkzaworNTcwNjMgMjQ0OTcwMTljNDA3MzU2NGQ2NDlhZTFiMmJkZmNmZDU3M2ExYjMxNCBsZWdhY3ktdHJ1bmsKKzU3MDY0IDcxN2ZmYjE2YjVkMTI1NGYyNzkzZTM1YzY0YWNkZjA5OTk0MjQwMzQgcHkzaworNTcwNjUgYzYyZjY2NjlhZTIyYjg3Nzk1YmEzNjQ5NDc1MTYzMTQwMWFhNWFmYyBsZWdhY3ktdHJ1bmsKKzU3MDY2IDllMTUyOWJmMDQ0MjI4YjdmN2I4YTE2YzUzN2RiOTE3ODU2NDgwZWQgcHkzaworNTcwNjcgNzI2MWE5MWJlMDAzNjgzMDgzNWY3ZTRhY2MyYTk3NmE4ZTkyMzdlZiBkZWNpbWFsLWJyYW5jaAorNTcwNjggYjFhYmY4NDZjZTgxNTJjMzgwMzAzMTI2OWE2ZGE1YTVjYTdmNGUyNSBsZWdhY3ktdHJ1bmsKKzU3MDY5IGEzZTc2NDMxNzA1YjI2M2M4NjY0YjE1MWJlYzA1MzcwMTg0MjI3ZGMgbGVnYWN5LXRydW5rCis1NzA3MCBlYWI3NWFlMzIxMmJkYjJkNGNiZjg4ZWZiZWJmOThlNDNjOTU0ODU5IGxlZ2FjeS10cnVuaworNTcwNzEgM2NjMmNjNzk1NzY1ZmE5ODRjYWRkODNmNzQzZDdlYWI0ZDBiNmY5YyBsZWdhY3ktdHJ1bmsKKzU3MDczIGQzMzYyYzQ5NTI5NjBiNGMyM2YwZWVjNjUyYjMyYWJmODllYmU3MTAgbGVnYWN5LXRydW5rCis1NzA3NCA3OTI2YThjYTkyOTA0MmVhNzkxNzhhNzc4NjI3OGE2Y2U4MTE5ZDM1IGxlZ2FjeS10cnVuaworNTcwNzYgMTIxMjEzYmJmMzU4Zjg2YTkxZGRkMTdhOWM5YjdiZWVhMWVhNzFkZCBsZWdhY3ktdHJ1bmsKKzU3MDgyIDRhNDg3MTkxZmM1NGMwYTE3MDllZTBkYzcyMjg5NGQ3YjQ3NmVmODcgcHkzay1idWZmZXIKKzU3MDgzIDY2YTU4YzFjMjgzYjNlNTllNzY1ZTk4YWU5YzdhOTgwNzM1MjQyNTEgbGVnYWN5LXRydW5rCis1NzA4NCBiYmI0ZjQ2NjNjZDMyMTJjOGQxMDBjMWFkYWJhYjQ4MWI2OWIzMWYyIHB5M2sKKzU3MDg1IDdhNTYyYTAwOTczZWQ0ZDM1MjhkODI3NGUxYWU5YjU3YTYxNjRhNjkgbGVnYWN5LXRydW5rCis1NzA4NiBjZWQyN2I4ZjA4OWJhNWIwNzYzZDkzNmIwNTEzOTNhOGFlMWY1NzZhIHB5M2sKKzU3MDg3IGNiOGMxZGQ3ZWUzMmIwMjdhNmVjMzdjOTg4NTIxZWQ4MWI3OGNhNWEgcHkzaworNTcwOTIgNjAzZGM1M2M0NzE2MjBlOTU5YTg5NmJhZDdjYzczM2YwZTA2OGE4NiBsZWdhY3ktdHJ1bmsKKzU3MDkzIDEzNWIzY2Q1ZTcyMzJlZWZmMjE5MWZlMGU0NWVhNTA3Nzk4NzNhOWUgcmVsZWFzZTI0LW1haW50Cis1NzA5NCBkMjY0MTA3YzdkYTZmNmExYmQ2MzQ1Yzk0ZjA1NWZkMTViZTRiNDg0IHJlbGVhc2UyNC1tYWludAorNTcwOTUgYTE3NjhiYmQ3NjgxOWVkYjQ5ODdlMTk4ZDY2OTUwYzRhYzE2Nzk1MCByZWxlYXNlMjUtbWFpbnQKKzU3MDk2IGQ5N2ZkNDQ3NzdiMmMxMmM4OGZlNjBjNTk4MTMyZWRlYWRlOTZjNTggbGVnYWN5LXRydW5rCis1NzA5NyA0ZDJhYTRiZmIyZDYwMTRiZTYxYTI0M2U2ODZlMjZjZDQ1ZTg2ZGUzIHB5M2sKKzU3MDk4IGFmMTgwZDU0NmVjMjIwMjhlM2UxNGYzMWE2MjIzZjIxYjIwMjg0ZWEgcHkzaworNTcwOTkgOGRiYzk4MWYwNDBiOGM0ZDZmNTc1ODA4OGM2YzU2YjgzNzFkM2Q4MiBweTNrCis1NzEwMCAxMjRiZDI4MjQ5M2Q1NTZkMzNhYWE1YzkxZjhkNTQwNjA5NTcxNDMwIGFsZXgtcHkzaworNTcxMDEgZDNhODlkOWQyZjVlMDZhZjE3YzVkOTA5NGE5OTc5ZGRmN2M5YjYyYyBhbGV4LXB5M2sKKzU3MTAyIDQ1MTgzZDBiMjBhNzk3ZDgxZmEzZDRhMmYyYzliOTE0NTU4NDFiY2IgcHkzaworNTcxMDQgODlhM2NiYTFjZDUyNDIzMDdmNDYzZDBmZGU3MjRiMjFlZDYzOWFmMyBhbGV4LXB5M2sKKzU3MTA1IGYxYTJkNTFmMWNhYjI4NGYxNjc4ZmZjNzUyYzBmNGY3NTFlMTNhMzcgcHkzaworNTcxMDYgMTgxMDRkYmE4NWUzMzczZTgxNDBiY2Q3MjAyNGZiOTVhZGI1MTdlYiBhbGV4LXB5M2sKKzU3MTA5IGVjYjdiMmRkM2FmNTgwM2U4YzBjMzM4MTAwZTgxMzJhOTk0MDI5NGYgYWxleC1weTNrCis1NzExMCAzNDEyNDYxM2JjNGRkYWJmYTcxMTIwOWFkYmIzZjJmMzUwNmI2M2I4IGFsZXgtcHkzaworNTcxMTEgNDZmNDgwZTExNjZjODRhN2JmZWUzYjEzZjkzY2RhMjY5ZDlmYjM3YSBweTNrCis1NzExMiAwZGViZjk0NTVjZGMxNzc1ODQ4ZDc4OTA0NzI5YTJlZDMzOTIxZDQ5IHB5M2sKKzU3MTEzIGE2YzQ4OTI1ZGU1M2IwODYwZGFmODc4YjUzYjQwMTIxN2FlMDY0OGEgcHkzaworNTcxMTQgMjBhZWM5ZjM0NTk4ZDM1MzkxMWQ1ZDY1YzdmNzZiNDdhOTE5NTVlMSBweTNrCis1NzExNSBhMjg1OWFlODlkYTkxYTFiZWI4YWM3N2E2MDZiM2VhNTBjZTIzYzdmIHB5M2sKKzU3MTE2IDQ4YTMxYjBiZjUwMThiMzYwZjFjOGY5MTI1NzVkYzhjYTg5MDA1MjcgcHkzaworNTcxMjAgYjdhNWJjNjlkMmVlNWJiOTQzNzFmOWZmNmY0ODVlOGQzODZjYWZkZiBweTNrCis1NzEyMyA3YjM5MWE0ZWY4OWNlMmQxM2MyOWQxMjEyOTZlNTMxOTlhODVmMjhmIGxlZ2FjeS10cnVuaworNTcxMjQgMTJkZDYzNzdmZjg1YmVkNzlhZjFhYTM3NDc1NDcxZjM2ZmQzYWQ3MCBsZWdhY3ktdHJ1bmsKKzU3MTI1IDI4MWI1MThlNGJjYzI4Y2E0M2U3ZWQ2NGYwOGI4NTUxZTQyOTZjOWUgcHkzaworNTcxMjYgZmY1YWRiMzM3NGFkY2RlY2M1NTc1MTkxNjY4YzI4ODgxNmM3ZmNkYyBweTNrCis1NzEyNyAyMDU2ZDgzNTNhNjg5YjUxNGZhYzAyMWE0NTk4NjQ1ZTgzNWZhNTEwIGxlZ2FjeS10cnVuaworNTcxMjggMjYwNmFlYWE4NmQ0MDY1ZDRiNWVjZDg2N2MzZGQwZjJiYThkMjAyNiBweTNrCis1NzEyOSBmY2Y2ZGM1MWFmNTQzMWY0MjQwNWViMWMwMDMzNzJkNWU5NDA5YWYzIHB5M2sKKzU3MTMxIDRjNWVjYzJjY2FiZGQ1MmM1ZWYzOWY0N2YzNDA4MmJmOTBlODNlYmIgbGVnYWN5LXRydW5rCis1NzEzMiA5ZmMyMWM4YmFiYjk2Yzc2M2RkOTE0Y2UwYmQ5YjJiY2RkYWU3YzM4IHB5M2sKKzU3MTMzIDZmNDkyMjgwMzQxMTY2YTJhNDdhY2IzMDMyNDBmYTdjMDMyMzNlYWQgbGVnYWN5LXRydW5rCis1NzEzNiA4NjEwYTFjYTY1MGIzNDJhZWY4MDFhNDMxOThlNjBkNWMwY2JhYjA2IGxlZ2FjeS10cnVuaworNTcxNDIgYTVlOTg0ZWRhNDVhMjBjZTcwMDM4OGE1MzI3NTMyZjY3MmY4NjgzNiBweTNrCis1NzE0MyBlMzk0NDkwOTVjYzVhYjZhZjYxNmFlMDkxZGFhZDI3NDhlYmJkYmQzIHB5M2sKKzU3MTQ0IGNjN2I1YmMyOTdjNGVkNTJhNzUyMGNlNzk0NGJjNDlkMjQ0MGI3NmUgcHkzaworNTcxNDUgYThjYTE0Y2VjMTFjZDY4YzYwMTBkMjRiYjZmMDRmYmMzMTI0NWY0ZSBweTNrCis1NzE0NiBjOTE2NzMxMzIxYzBiMDFlODM5OWJkOTYzMmIzNWM2NjBmMGY0MmY3IGxlZ2FjeS10cnVuaworNTcxNDcgZjJmMGU5NWE3OTdiYzc3ZmUyYjAzOTZjZjZhNzQyOTk2NjY1Yzc1ZiBsZWdhY3ktdHJ1bmsKKzU3MTQ4IDU2ZDhjODcxZGM4NmIzOWRiZGVlZWM5NTJmOTY4NWUwNjEzZTM0MmUgbGVnYWN5LXRydW5rCis1NzE1MCA5YzRmNWIxZDZiOWRiNWZhZGQyOGYxZTcxNmU5NGU1NmEwNTNiMGYzIGxlZ2FjeS10cnVuaworNTcxNTEgOTg2Nzc2NDU2NzkxMzY1ZTA3YjMyNWZjYjI4ZWFjNWI4MDZhZGE0ZSBweTNrCis1NzE1MiA3NDQ0NjUwOWYwZjI3NmYwMmE2NWMwMDE4NmRlZjBhODQzZTJkMWU2IHB5M2sKKzU3MTUzIDkyNTE1YjY0OWI5MjI3ZTE0NDc2Mjc2NWQ2NzA1OTQ5OWZmMThlNDUgcHkzaworNTcxNTQgMWI0Yzk1OTc0YTdkYTcyZGY4NzljN2RhMzI1ODY1MWRlZDlkNGZjOSBweTNrLWJ1ZmZlcgorNTcxNTUgMTcyMWZmNWUyODY0ZDVjMDdiMjExM2ExYmM1ODc4ODJiZTVjNWQ3ZCBsZWdhY3ktdHJ1bmsKKzU3MTU2IDY4NzZhZTkxN2ZiMWJhYzcxYmMyOTYwMWI2ZWI4MGI0Njg1MDJlOTggbGVnYWN5LXRydW5rCis1NzE1NyBhZDA2MzI3ZTFmMzlhNzNjY2RjOTM5YmUwMDg5YWZhYmFkZTcyYTAzIHB5M2stYnVmZmVyCis1NzE1OCBiYzMxZGZjZjdkZmEwZDQxNGM0ZDVhNGZkZDc1MGZiYmYyMjA0M2RlIGxlZ2FjeS10cnVuaworNTcxNTkgMzdkNzA4NTRkMjU1MmNlN2ZhOTU1MTEyOGIwYWNlMzZhOWE1OGUxYyBweTNrLWJ1ZmZlcgorNTcxNjAgMzhkZmVkZjFkMmFhOGE1NmJmMjdlODlhZTM2MWRkN2IwODRkMjY1NiBsZWdhY3ktdHJ1bmsKKzU3MTYxIGI4MDU0MTI1MWUwZWQxZWZlMzkyYmI4YmYyY2RkOTYyMzNlYTIzYjMgYWxleC1weTNrCis1NzE2MiBkODg1OTJkZDNhNjEwOTJhYzUxZTU4NDNkMGMyYzE0MWMwODA0ZTY0IGFsZXgtcHkzaworNTcxNjMgYzU5Zjk5NDI2ODJiYjFkY2VjZTcyOWMxMzZlMzRjOWNmM2EyZTQyYiBhbGV4LXB5M2sKKzU3MTY1IGRmZmJmZTYwNzc3NGYwNzNmZmM4OWM3ZTg2Y2NjNzYzMzZhMTUwZTggcHkzaworNTcxNjkgZTBjYzgzM2ZkZDNlYmRlOTcyNDBiZTQyMDI2ZjA0NjEwOGY4OGNjNiBweTNrCis1NzE3MCBhNTRkODY2ZGM3YjRlZmQyZWI3YTc3OTA4ZDRjYzhmNmFlMzEwODEzIHB5M2sKKzU3MTcxIGFmMTJhNDZkZjczN2FkMTZhNmJjOTM0YWNlMTkxYjZlM2FhY2I5ZDUgcHkzaworNTcxNzUgYTkzMWM2MDE1YjkxN2E3ZmM2N2IwM2UyNDMyYjA4NzQyYTU1MGJmOSBsZWdhY3ktdHJ1bmsKKzU3MTc4IDY5NzUwYjA5OGVhMjQ3ZWQ5Mzc2NDZiNzNhN2UyYmZlNzFlZDcxOWMgcHkzay1idWZmZXIKKzU3MTc5IDA2OTUwYmQwNGU2OTY5MmMyOGQ0ZjMxOTM2MjMzNjE3ZjRkNDM0OTIgcHkzay1idWZmZXIKKzU3MTgwIGFkNDc4OGRmNTA0ZTA5NjQxZTM5NTYzMWI4MmE1ZWE4OThlZDUyYTAgcHkzay1idWZmZXIKKzU3MTgxIDg1YzIyYjRkNDQ1NTliM2M1ZjQyNjk4NzRlY2E2ZDczYzc1YjhjNTYgcHkzaworNTcxODIgYjNjYTdmNWI1MzdjNWQ3MmJmYTBmOWZjZjYzMWNkOTMxMzVkNjk3NCBsZWdhY3ktdHJ1bmsKKzU3MTg2IDgxYjQ1YzBkYTJjOGI4YTY1YjMxM2YyMTI3MWUzZjI1NDYwZDI3MjkgcHkzaworNTcxODcgNzZlMDQ5NzNiMTVkZmQwY2Y4MjA2YWZkZmE4YzEwMDNiMzEyYWE0OCBweTNrCis1NzE4OSBlZDk3YTlkMWMzNDczNDQxMmEyNDRkMjc0YzljMDVhNzU3ZGE3OGQ1IGFsZXgtcHkzaworNTcxOTAgMGJjOWNmMWNmOTU5MTg5ODI5NWRiZDZhMGQ1MmQ3ZDNjNWZjZDYxZiBhbGV4LXB5M2sKKzU3MTkxIDhkY2U2ZTI4NzBlODA5M2U1NjNmYmY1MTBjODdiYTViOGMxMDg5YTUgYWxleC1weTNrCis1NzE5MiBmNzhiZjU4NDI3OWU2ZGQ3Mzc3MmM1NDQ3ZGRmZWM2MzU2MzYzOTY5IGFsZXgtcHkzaworNTcxOTMgMmM1MWJlOTkwNGRlMWNjZTQ2ODJiNzAyZTllNWIzODBmNDU0MTNmNSBweTNrCis1NzE5NCA3ZTVlZmY4N2Q2NjRhMDA5Zjk4M2UwYWZmZjU4OTU3ZDQxOTkzYzY3IHB5M2sKKzU3MTk4IGZjYTM1NDE2MDQ1ODUxOGRjOTc4MjJiNjU3YmViOGYwZjMxYWViMTcgcHkzaworNTcxOTkgNmI1MzBlMDI5YjNjM2Q4M2ZiNzVmYWFkZDdmNzBjMTA0ZGQyMTU2YSBsZWdhY3ktdHJ1bmsKKzU3MjAwIDk1YjM3Y2FlNDdjNGY3ZWMxNjYzMzk4YjRjNTI3ZDIyM2E5YTY5NTQgYWxleC1weTNrCis1NzIwMSA3MzlkMzEwNTA5N2ZlMDIyZWIzNGE2MTQ5MzE5NmQwZDI5NTczZTRhIGFsZXgtcHkzaworNTcyMDIgNjkyZjU3YTVkYzc2YTE5YTNmOTZiYjE4N2UzOTRjZGI4YjZmZTFkOCBweTNrCis1NzIwMyBkMDNlYjc3NDU3NmEzZTZlNDkxOTJmMzhhMzlmNjkwYmFhZjk3Yzk3IGFsZXgtcHkzaworNTcyMTEgNzA1NDYxNWYzN2ZlNjAzYTY2YzRmNmYwMDgyZDM0N2RmZmVkNmI0ZSBsZWdhY3ktdHJ1bmsKKzU3MjEyIGNkNDU5MWI3NTRlMDExZDM2YThhMjU5YjdhYWVlY2Q4ZjNmY2M5M2UgcHkzaworNTcyMTQgNTg1ZDhiZWNlODI2N2QwNTk5ODZmY2Y3YjBhYmIyNWQyM2VmZWQzZiBweTNrCis1NzIxNSA5YTJmMzc5NDFiMmIwNWNiNTQxMDFhNWZjMDc5MmQ3MWE1ZDgyNTVjIGFsZXgtcHkzaworNTcyMTYgMGY1MGUwOTFhMzZmZWM2YjdmNTY0ZGUyMDMxNGM0MDlkNmQyMGI1MyBsZWdhY3ktdHJ1bmsKKzU3MjE3IDE1MDQ3YjJhY2QzZDU1NDA5Mjk4M2I5YmRlMmZiZTIxODdkNzczOTQgYWxleC1weTNrCis1NzIxOCAwNDk5M2Q5NmU3MzgxNjMwY2I5MGZlY2RkYzRiZjA4MTg0MmM2M2NhIGFsZXgtcHkzaworNTcyMTkgYzIzZGNkOTRkY2NlMDFiNjA0ZTJhZDljM2VmMzI2MTAxYTkyOGI1ZiBhbGV4LXB5M2sKKzU3MjIwIDM2NDVmMGI5NDkwOGJiYWRiYTczNjUzYjc2MzkwYzEyNTlmZWYzYWUgYWxleC1weTNrCis1NzIyMSBhZjZhNzE5MGNhYmNiM2FjZjljMzFiNzJmZjdlOGUwMWFiNmI2MzAyIHB5M2sKKzU3MjIyIGU3MWMzMjIzODEwZjI0NWJlMGRkNTNlZTZkZDdhMzIyYzlkZGE4MWQgcHkzaworNTcyMjMgMmY0Njc5MzAxMTMyZTg1ZTQ4YjZlZTVkODU3Mjk0ZDQ4ZmZlN2RlNCBweTNrCis1NzIyNCA1YWJhOTY0NjRiODc5N2VhMTIwM2VmNTg4N2FlNWMwNDNmMzU3ODNkIHB5M2sKKzU3MjI1IDVjMDg0NzJjZmMzNDVjOGY2YjUwZjgzZDIyYTI4OWYwYzY5MmYyNTQgYWxleC1weTNrCis1NzIyNiA5NTQyZTJlNmVmMDJiMmY4YTdjNzNjZjdkNzg1NzFjNGIzZmEwZDQ0IGFsZXgtcHkzaworNTcyMjcgNDNiMzU0YThmNzczY2Y1MjdiMjQ3MmM0MTM5NDdlOTdlOWE0OGZiZCBsZWdhY3ktdHJ1bmsKKzU3MjI4IGQwZjNkMjliNzA4ZDMwOGJhMGU2NDMyYWMwZTYwYWJlODNiMzg0ZjEgYWxleC1weTNrCis1NzIyOSBkZGZmNTIxYWM3ZjFhOTExNjA1NTgzYjU3NjZjMGY3NDdiODJhZGUyIGxlZ2FjeS10cnVuaworNTcyMzAgOGQ3ZmE4YTVhN2UzOGZlNWI2MmMyMGNkNTM3ZTVmOTkxMDMwZDY4MyBsZWdhY3ktdHJ1bmsKKzU3MjMyIDJiNGZlZTFkNDg2MWFjM2NiODFmOGYzMDc4ODE0ZmFkZDY0Yjg5N2QgYWxleC1weTNrCis1NzIzNyA0NDc0ZmYxMGJiMGEyMmI5NWFiZWVjOGVkNTRjYmVlZjRlNTBkNDhiIHB5M2sKKzU3MjQ0IGFiN2E2ZTc0YmJmMjM4MTQ2OTllY2Y0MzM0OGNkNGEwMzZhNTc4OTYgcmVsZWFzZTI1LW1haW50Cis1NzI0NSA0ZjExMjU1OTU4YmU5ZjI0NzY5YzVkNjViMzgxYjNiY2JhMjc2MmUxIGFsZXgtcHkzaworNTcyNTEgYzA0MGRiYjY5ZGY3MWM5MTBiMjcxNDIzNzJhNzY0MWI1ODY3ZWE1MCBhbGV4LXB5M2sKKzU3MjUzIGVlOWViYmY1ZjNkYzhiMDJkMjViOWI0N2Y0NzRmMDllNmRiNmJjOGIgbGVnYWN5LXRydW5rCis1NzI1NCA2MmVlZTc5ZGU5MjNhYzdkNGMxMTZlNGU5YzM1Mzc2YzBmMWU2MTNkIGxlZ2FjeS10cnVuaworNTcyNTUgMWVmZTliMTBjNGE2ZjMyYWJhNmM1NGVkY2U2MDhjMmI5NjZkZDU1OCBsZWdhY3ktdHJ1bmsKKzU3MjU2IGZhY2RkNzRhMGJkZDFiNzRkMzMyMGM4MjIwZmI5NWVmNjhhN2MyNDEgbGVnYWN5LXRydW5rCis1NzI1OCA1YmY2OGZjNzM5MjNhOTY5ODdiNzIwZmI0MjUxZDUwM2Y0NmVlNzE4IHB5M2sKKzU3MjU5IGYzMTgxZTlmZGU0ZDdhMGU1YjQ2NjNlMzMyYjU4M2U1ZWU1MGQzOTEgbGVnYWN5LXRydW5rCis1NzI2MCBkZTZmMzBjNjI3MzA1NDM3MDcyZDJhOTI1ZGU0ZGFmYzAzYjY5NjQxIGFsZXgtcHkzaworNTcyNjEgZDllMzdkMjZmNzhlOTU5MjM1YzgzZTI2ODhiZWYxN2UzYWMzYTEzMyBhbGV4LXB5M2sKKzU3MjYyIDZkMjUyODM4ZDIzMDYzOTdkMWIwN2FkYzBlODkxMjM1NWE2MGMzYTkgYWxleC1weTNrCis1NzI2MyBiOTM3OTJjZWQ5ZTgwZjE2NmJhZDFkOGVmMDJiNjdlMDJkMjRhZGNlIGFsZXgtcHkzaworNTcyNjQgYWVjZmY5ZTBlZWFlNGQ5Zjg0NzAzNjcxNTlmOTVhYzBhYjRiMjI0MyBhbGV4LXB5M2sKKzU3MjY1IDYwNTRkN2QyMzQ5ZjA0NjI0NmExZjU0MTQxMzk0ZmUyMTRlNmMxOTkgYWxleC1weTNrCis1NzI2NiAyMDgxMTE2MTI1Y2VhOWY1NjgyZGMwZmVjNGI2ZjU1NWYyMmI5YTdmIHB5M2sKKzU3MjY5IGU3Njk2ZmNlMzM3NjEwYmEzZGUxYTk0OWEzZmMzMjdlMjY0ZTZlMDkgcHkzaworNTcyNzMgYTAzZjM3OGMzYmY3YmYyYzgxY2U1ZDZhODkzMGE1NTZlNDE4Yjc0NyBhbGV4LXB5M2sKKzU3Mjc1IGM5NDdhMDQ3NjhlNDVhMjMxMWRjMGRhYTFkMjYxNDY1MjVlYzlkNmEgcHkzaworNTcyNzYgZTMxYjM4N2U2ZDc3NWMxMDVhYjBkZGU5MDFiM2M5ZTQ4Njg0ZTYxMCBweTNrCis1NzI3NyAwMDgxZGJhY2I3YWE2MTIyY2MzZTM1NjhkZTYwZGJiMWI2ZDUzM2Y2IHB5M2sKKzU3Mjc4IGQ4MDBhOWNkYWI3NjQ2NDEzODgwZDYyNmYxZDRmNDMwOTcwYmMwNWUgcHkzaworNTcyNzkgM2I0ZTM5ZTgzMTkzMjEyYzNlNTY2M2ExN2QzOTA4ODY5YzEwYWNjMCBsZWdhY3ktdHJ1bmsKKzU3MjgwIDg0YzVjMDUyNGQzY2VmN2RjZDgyNjFmYjljYmRhYjMyNTM4YzQ0ZjIgbGVnYWN5LXRydW5rCis1NzI4MSAyNjczY2RlZDg4NTU0NTEwYzAwZmJkMTUzZTk3ZDdjZjJiNmE0ZWQ4IHB5M2sKKzU3MjgyIDc4MjM3MGM5MzU3NThlNjQzMzRjNGIzZTIwOWUxZDA4MDUzNGI0MTEgcHkzaworNTcyODMgOGJhZDg3MjJmMGU2NDI4ZDJhYjdhMDljZTFjNGE3Nzk2NGMxMjE1NCBweTNrCis1NzI4NCAwOTJmMDJjZjAxOGY5ZDkzNzkwMDMwMjI4YzQyOGU2ZDJkZWM3YTg0IGxlZ2FjeS10cnVuaworNTcyODUgMWJmMTc4NTVlOGU4NWYxZjM3NjJlMWIxMjViYWM1NTZmYWRmOGM4YyBweTNrCis1NzI4NiA4YjY0MDBmOTcxNmZlZTNkYmY5NGI4MjJlYjAxNTZjMDQwZTFhN2VhIGxlZ2FjeS10cnVuaworNTcyODcgNWEyMGVlODA1ODE5NThiMDE1YzI5M2ZjOTMxM2Q3NTc3YzM2NjkwNCBweTNrCis1NzI4OSAwYjA2MDY5NjYwYzIyYmVjMmU3ZDc0ODU5NWI4OWU0OTYwN2IzZTI1IHB5M2sKKzU3MjkwIDllODFiMjI2ODlkMmQxN2RjM2QyMTVhNDgxNGJiNjhjNjdlMjZkYjAgcHkzaworNTcyOTIgNjg4Y2Q0Mzk4ZjQ0Njg1NjA2YTM0MjYyODJmYjgxYWI0YjNmZTYxNiBweTNrCis1NzI5MyA1MDk4YzY4NzkwOTE2ZjRkYzI3Y2NiMjA5NjEzMjY0ZGRiOGE3MWViIHB5M2sKKzU3Mjk0IDU4OTE3NTE0ZTQyM2VjZjIxZjFhZDZkYjdjNjIyYzdiMzQxNjBlNzcgcHkzaworNTcyOTYgYWFkMTdiMWFiMGM5MmRiM2JhODFmYmU3MDQ1ZmRlYjM1M2JmYjE4YSBweTNrCis1NzI5OCAyZWMxNmI2YjRkMDQ0MjM2YjU4OThhNDdmODM3OTA0NTBkZmEyZWIzIHB5M2sKKzU3Mjk5IGU0YWRlMTZhNjk0ZmY1NDZlMGE1M2VhNTg4NzJlNmFiM2Y3NGJlMWIgcHkzaworNTczMDAgMjZiMjlmN2I4ZmZkOGVmOWZhYWMzYTgwOGY4NTEzZmJiMjdlNzBhOSBweTNrCis1NzMwMSAxOTk1MDRmYjkxYzU4MGU2YzZhZmFkZjNkZGMzOWZmZjVkYTRlNmFiIGxlZ2FjeS10cnVuaworNTczMDIgN2ZlMjg0OGZkNDFkNzQ2Y2I4OTQ4NGYwMGIxNmI5NjlkMDcxZTk2OCBweTNrCis1NzMwMyBhZTgzZWZiNzM1MDZkMjU3ZWMzMTNhYTcwMGZlMDQ0ODM1NzU0NDQyIHB5M2sKKzU3MzA0IGVhZTEwZDljOWM0ZWVkYjUxOTgxMjE4NmI3NDNkZGI5ZWY1MWYyZGQgcHkzaworNTczMDUgNTA2YjkxN2QyMzYzYTg3MGZjNjAxNjUxZWM3ODlhMDljMGI1NjgxNSBweTNrCis1NzMwOCAzMjg0MzA3YTczNTE5YTlkNWJmNDU3MjNiMjI4MzVlZDJmNzQ2MmU4IHB5M2sKKzU3MzEwIGYzNDc2ZTliYmU2YWIzNjEwNjAzZjM5MDkwMjYyODU0ZGM2NDgwZDAgcHkzaworNTczMTEgN2Y0ZDkzZTAyOTVjYWM1YjVmZDBlYmNlNzljYjA1NTZmMzJiNjMzNiByZWxlYXNlMjUtbWFpbnQKKzU3MzEyIGZhOWE0MGVmMDc4MGRkNzdmY2NhYzdkN2I4ZjgxOGI1ZjVkYjkyMDQgcHkzaworNTczMTMgMDZkZTYyZjMzYzM3N2Q2MzNhMWJmYzQwNmNjODI1ZGFhZGJhNTA2NSBweTNrCis1NzMxNCBhOWE0Y2Y5MWNiN2U3YjVjZmVhYjE1ZGFiYjMwYWZlZDMxM2UyZmU5IHB5M2sKKzU3MzE1IDgwYmM2ODg1MGEwODYwZGIxYzdlZmRjMTdhMTE1ZTBkZjY3OWQ4MzggcHkzaworNTczMjAgMjQ4MGI4NjRiZTAzOTdhNjA1YTk2ODEyOTUyNjNhNzRjNDZhMzMwNCBsZWdhY3ktdHJ1bmsKKzU3MzIyIGRlMWJhY2U4MWU2ZWQyYTRlNTNiODhhM2I2Y2U4OTYxOGJmNDg5OWQgZGVjaW1hbC1icmFuY2gKKzU3MzI0IDhlODdkOWQ2ZTgxMjc1YzEyNGY1YTdiMTYwOGQyYjUxMmFlMGI4MjEgbGVnYWN5LXRydW5rCis1NzMyNSA3YTc1Y2QyOGIxMjVkM2I2ZWI5OTNhYzYyZjA5NjkxODZmMjg4MDQ2IHB5M2sKKzU3MzI2IGIzNDg1NTBhMmJmYzY4OGQ2YWJlN2E0N2QzNmEyMDlhOGVjOTZhZTggbGVnYWN5LXRydW5rCis1NzMyNyBiY2JkYzk1ZGZiYTlhYTU0M2YwNDEzZWUzOTczNWE5NmY2YjBhMjk2IHJlbGVhc2UyNS1tYWludAorNTczMjggOTA4NzMzN2YzYTNmODk5MWRmZTEyZjcxNGQ4ZTNhYWJmY2UwMzc4YSBsZWdhY3ktdHJ1bmsKKzU3MzI5IGE5MTFjZDlkMTk4OTNiZThmNGRmODk0OGQzOWNiYzA3ZGE3MGM5MzcgcHkzaworNTczMzAgZGRlZmJkYmRiY2I1MWNlMGFiMTg3YTUyNTVmMzM5MTRkY2RjZTE0OCByZWxlYXNlMjUtbWFpbnQKKzU3MzMxIGFkYjgzZjRhYzRjYmU1ZTI1YzBhMmFjZWZhYzVjNjIxYzEyZDU1N2IgbGVnYWN5LXRydW5rCis1NzMzMiA3MjlmZTk5YjQwYTU3MmRlYzllZmFjYWYxNmMzYzQ1YTZhOWYzZWZjIGRlY2ltYWwtYnJhbmNoCis1NzMzNCA0ZWRmYzU5YjcyYjJiNGYxZGM5YzNjOGU4ZDA0ZmNlNzI0Y2ZkMDAzIGRlY2ltYWwtYnJhbmNoCis1NzMzNSBhZjhmYzQ2ZDRiNTYxNzhlZmYzNjIwMzMwMDQ1NDYyMjYxYzc4YTJlIGRlY2ltYWwtYnJhbmNoCis1NzMzNyA3MWM2OGRlM2IxYzU3NGQ4YWFhYTZjN2IwMWNmNDYwNTg3N2U2ODIyIHB5M2sKKzU3MzM5IGY1M2YxYTFhYzAxNjQwZjhiM2MzYmI4MDdjMWQ3ZTFkNmYwNDBjYmQgZGVjaW1hbC1icmFuY2gKKzU3MzQxIGEyY2MwMThmMzcwMGRkNDE5ZmUzYWI0ZjYzYzQ3YzA5ZWIwMzgzN2EgcHkzaworNTczNDMgOTA4MGNjNzZkYTk4ZjBlMTA4ZjFlZTlhYzhmZjRlMWE0NGYxNDU2MyBsZWdhY3ktdHJ1bmsKKzU3MzQ1IGUxY2RkNmVlOTEwZTdkYjIzZjZiN2EzOGY4NzAxNjllNmY1MzdiYzAgbGVnYWN5LXRydW5rCis1NzM0NiAwMGY4YjI0ODI3NjRjZjZjZmNiOGUyMmNiNDI3Njc3ODE1YThkYmZlIGRlY2ltYWwtYnJhbmNoCis1NzM0NyAwMzE4YWJjZmFmMzZhNmZkNjg0ZmI4MTBhZjE3NjE0ZWNlYmU0MGNjIGxlZ2FjeS10cnVuaworNTczNDggOTUyMDU3OWNjMzBiZmRjYTlhNzczOTdlYzgzNzIxZGVlOTZhMDEzZiBsZWdhY3ktdHJ1bmsKKzU3MzQ5IDgxODg2ZTA1ZmQ0MDE2YWJjNGViYzBlYTgxZGFlNDIwNzU3ODM5NGUgbGVnYWN5LXRydW5rCis1NzM1MCBhMTU2NTQwNDU5OWU1ZWQ4NmY2ODA5ZGVlODhlYzA2NjRiNzA5NDY5IGRlY2ltYWwtYnJhbmNoCis1NzM1MSAyNjUwMGJhMDlmNzBjNjIwNTc4NGJjOGExYzIwYzQxYzBkYmZhNGFjIGxlZ2FjeS10cnVuaworNTczNTIgZTIwNDJlYzMzMGE0NTU1MjI5YTBmMWEyNGVlYmMyOGVmMTI1YTlmMiBsZWdhY3ktdHJ1bmsKKzU3MzUzIDlhMzQ3YmExN2NhYjBlOGY4YWRiMmUwMDlhMWQyZTg1OGE1MWJkM2IgbGVnYWN5LXRydW5rCis1NzM1NCAzZWQ3ODE0Y2NhMzY2ZDA5ZjdlMWU2YjU0ZWM0NmRjYjgzMWFmMDc3IGxlZ2FjeS10cnVuaworNTczNTUgNzdjZjI4MDhlZWE2Mzc1MTFlNjE2ZjA1MDI2YTk1Njg1NjBiNDFlYSBsZWdhY3ktdHJ1bmsKKzU3MzU2IGNlNTJjZDcxYThkOWEyN2MxMGM1YTkwOWUxMzFkODc2YmUzMGU0YTAgcHkzaworNTczNTcgMjA3M2VhMzAwNWE3ODc5ZWI1OTcwNDlkNDdlN2RkZjZiYjYzY2U1MiBsZWdhY3ktdHJ1bmsKKzU3MzU4IDc5MjNiZmYxOTIxMmIwMzljMzVhNzgxNjNlZDE1NmI0NDVmMTdmOGEgcHkzaworNTczNTkgMDc3ZmU3ODYwY2M5YjE4Njg1NWY1NDNmMWEyNmU0NDVkZDdhN2MzMCBweTNrCis1NzM2MSAxYzk4YjQ0NWQ4NDcwOTljMjY1MmE3NTdkNDM1MTRmNzBkODI1MWYwIHB5M2sKKzU3MzYzIDQyYjM5Y2I1MzZkOWU0YjU5ZjQ5NTlmNjlmZWQwMjllZWI4MGQ3ZWYgcHkzaworNTczNjQgMGI2MjUzOWFjZmI4ZGVkNjcyNTFjNzU0OGM2NmFjOGM2ZGIzNGJiOCBweTNrCis1NzM2NSBlNzQ0YTIwZWQ4YTZhZGJmMDQ2MzJiN2IyNjJjYWU1MDllMjY1MzVmIHB5M2sKKzU3MzY2IGY5NGM2OGZjZjc5ZGM1MjYyY2U1YzRhM2EwMDhlZTc2ZTQxOGQyYzYgcHkzaworNTczNjcgMjczYWNlMzU5ZTU1ZTZjYmI1NjcwOGE0YmIzNmQ4NTQ5OTIwMGNjZiBweTNrCis1NzM2OCBlM2UwNmIzODk0MDZhOTBhMzRlNTlkNzQ3NGZhNTZlYTFiZGQ2Nzc5IHB5M2sKKzU3MzY5IDU2N2M5MjNjYjFjNjFkOTJlNWI3NDhiOTQyOTg1NGM3NmI1NWE5NmEgcHkzaworNTczNzIgODNjODQ0OGM2ZGU0MTE1YWQ5MjFlZDBkYzgyOGU1NTYwMzllZDRhNyBweTNrCis1NzM3MyA2NmY3M2NlOTdiMzJkNzE0YTA5ODk3OTg5OWI2YWQ2ZWNlNzY2ZjYxIHB5M2sKKzU3Mzc0IGI2MjZiODRiNTA3MDQ1MTAxZTJjMjFiZjIwMGNlY2MyYWY0ZGJlOWIgcHkzaworNTczNzUgMTlkYTQxZmMxMTdhMDNhZDc4NjllY2U5N2IxZjdlMzQ4MmEyMzEwMyBweTNrCis1NzM3NyBiMTk3YzFjMDRiYTE1ODY5MjEyNDQ1MmQ5ZjhiMGU2ZDE4YzQwMzJkIHB5M2sKKzU3Mzc4IDA1ZmUwMjdlMmQ4MDk4Mjg0ZGQ4OTc4YjMyOWE5OTk1MTEzMTM3NDAgbGVnYWN5LXRydW5rCis1NzM3OSAzMTQxNTE1ZjZjNDVhMjhlY2QxYzYyZTdhNzZjMzk2MTljMTk3NjVlIHJlbGVhc2UyNS1tYWludAorNTczODAgMmI5YjIxNDAyNjUwNDBkMDFiNjU0NDUxMDFlOWQ0ODExNDA5Yzk2OCBweTNrCis1NzM4MSBkM2JhYWIyMDk2MjY0OWUyZWY0MjM5YWQ0NzdlYmY0OTg5YmQzMzBmIHJlbGVhc2UyNS1tYWludAorNTczODIgNzMyMzMzMTg3NmRkNDM5OGRjMmUxY2RhMWM1NTUzZDA1YTNmN2RmYSBsZWdhY3ktdHJ1bmsKKzU3Mzg5IDg5MDFhN2NlNmMwNzQ1YjJlY2M4MjUzYWY2YzcyNzVkMWU5ZWRkZDUgbGVnYWN5LXRydW5rCis1NzM5MCAzZmJhMTRlYzlhYWViNDgzY2E5YTEwYjRkY2I1NmFhYzI0NjJiYjhlIHJlbGVhc2UyNS1tYWludAorNTczOTEgMmM0MjJhNDk3MmYxYzk1NjA2ZGRmZTZmY2VmMDBkMTNmYmMzNjg4YyBsZWdhY3ktdHJ1bmsKKzU3MzkyIGQ3NTE3YzMwNjc5MTQ1YWEwY2NmODZmMTZlNmQ4MTJkMDlhNzQ0M2EgcHkzaworNTczOTMgYzNiNTNlMDc0ZWQxMWIzYjhhZGQyZTZkYThlN2ViZmMwMWMzYjgxNSBweTNrCis1NzM5NCA5NDI4NjBmOGNkOTdlOWM1ODNhOGViOTFmYmE4ZjQzZDUxZTZiYmQzIHJlbGVhc2UyNS1tYWludAorNTczOTUgNThmMzVkZjBmNmY0ODg2ZDQ4OWE3MTA0Yzg4Njc0YmY1ODFlNzc1NCBsZWdhY3ktdHJ1bmsKKzU3Mzk2IDRiNzAzNmRjNzZkNTU5MjE5NzhkNmQwNjJjMzExZjdiZjhiMTc5NGIgcHkzaworNTczOTcgZTI1NzhmMzA0MmIyZDUyNzU2NGNiNzU1ZTg1ZGM2YTNjMGQyODZkYyBsZWdhY3ktdHJ1bmsKKzU3Mzk4IDhiMWIzMjcyNTRjMGQzNTE5OWRmZDIxYjBiMzhmZmIxODdmOTFiZTkgbGVnYWN5LXRydW5rCis1NzM5OSAyNTZhNGQzYzU4MWY3MmQ2NGVkMzM0ZTRkNGUyM2ExZWI5NTZkNDIyIGxlZ2FjeS10cnVuaworNTc0MDAgZjc5OGMzNjYyNzBjMGZiY2UzNmQwM2IxNDhjNzQ4MzFiYjMxODNlOSBsZWdhY3ktdHJ1bmsKKzU3NDAxIDhjNTY5NTY5NzFhZGUzZWQ2NTY4OTcyZTdjMTI4Mzc4NGY3NjY4MWMgbGVnYWN5LXRydW5rCis1NzQwMiAzMDI1ZTY3NmU2NjkxODM4MTM5M2UzNTRlMzFhNmE2NDAzMTNiZjRiIGxlZ2FjeS10cnVuaworNTc0MDMgMDY2ZDM5ZmFkNDA4ZTFkMWQ1NzllMmJmMzhlNTM0YTA4MjQyM2MwYiBsZWdhY3ktdHJ1bmsKKzU3NDA0IDQ4ZDkxZjE1NThhMDA5ZDk1ZTVhNjM2ZjM5ZjY5NjVjMDFhMTA1NmMgbGVnYWN5LXRydW5rCis1NzQwNSBjNmQ2MzIxZGM3Zjk0MmMxOGZmNjQ4ODZmMTE0NTQzOWJkYTQ3MWI3IHB5M2sKKzU3NDA2IDcyMWMzZWExM2Q4NGEzYzA1OWExMzkzYTllMmEzYTQ0NDMxMTJlZWQgbGVnYWN5LXRydW5rCis1NzQwNyA2MTI0YjJlZjY1MTIwMTYxOWU0MGQ2N2FiMzk1NjU1MTRjNjBmNmMwIHB5M2sKKzU3NDA4IGE2ZTViMzg2OGYzZDgyNDI0MjMwYzRhNzJjYTNmNWRmMDdmMDdjYWYgbGVnYWN5LXRydW5rCis1NzQwOSBlNDJlN2QwMzE3M2IzMTQzYjc1ZTVkMDMzODdlMjU3MDdhYjQwOGNkIGxlZ2FjeS10cnVuaworNTc0MTEgNjFmYjU5NzkxN2QxY2Y5NzZiZWFiMDBlMDdiOWVhY2VhNzI5M2NhMCBweTNrCis1NzQxMiA4NDYxOGIyMDY0YzE2YWMzNjNlNTg5MjVhNDJiN2MxMDExM2M4MjBkIHB5M2sKKzU3NDE0IDZjZjZiODMxYWIzNmNlMDZlMGM1NGZmYjE4YjE3MzVjMmFkMzY3ODkgZGVjaW1hbC1icmFuY2gKKzU3NDE1IGNmMmIzN2I5MGM2NmY1NDk0N2M2YmYxMTE0YmU3ZDAwOTk4MjAyMDEgbGVnYWN5LXRydW5rCis1NzQxNiBlMWEzNjU1OWQ4YjY4OTc4YWQ2NmMyODAzYjU0NmViZDk3Y2NjNzMwIHB5M2sKKzU3NDE3IDhlOTc3MTFmYWRjMTQ3MDA3MjA1NDE2MGMzYzBiYjc5OWFjNTgxYWUgZGVjaW1hbC1icmFuY2gKKzU3NDE5IDM4MzYyMGU2MmVlNjRjNGU0YTA3Y2MyYmE1MjAwNzc5YmMxN2M3ODIgcHkzaworNTc0MjEgYjBhNzFiZmZhMGExZjcxMzZmM2VjODcwZDA5ODM2ODFiY2ZhOWM3NiBweTNrCis1NzQyMiBkMDI2MTBiMGE5ZjNhY2RjNWU2Mjk3MjI3ODk0OGU5ZDM4MzMyZTY1IHB5M2sKKzU3NDI0IDhlNjE3MjdkYjUyOWI1YjE2OGQ3M2VhMTE2MDgxMjRhNGIzODA5YjAgcHkzaworNTc0MjUgNDFkYTQ5Yzk3YTU5ZWM2ZjgyNzE2MWRhNmZjYjdlNTVlYWY1NGM2YSBweTNrCis1NzQyNiAwMWVlNjMxMWJhNDY5NGMyYzU3Y2QzOGVlMTJiOGY0MzQ1YWUwNzU1IHB5M2sKKzU3NDI3IDA5OTQ5NThmZmQ0ZmQ0ZDcyOGMxMWY1ZmI1MmJmYmJjOWY5OTJjZDMgcHkzaworNTc0MjggNjliOGUyOTc2NTU2NWE3NDMxZGRiOWI3ODY1YzJlOTRkOGJmMmFmOSBweTNrCis1NzQzMiAzY2Q2MGY3NDRmOGU5M2I2MDBkNDc5ODMzMzhkMDA1NTQzNjA1NDI4IHB5M2sKKzU3NDMzIDNjYjVkZWYxODY1ZGE2NTgwZWUyYmI4Nzc3Y2QyYTU4OGUxNjAxNDQgcHkzaworNTc0MzQgNzhmN2VkN2Q4MDY0OWMxMTRhZTA3NjA3YjA3OWQzNGZlYzVhMGVkMyBweTNrCis1NzQzNSA1OTk1MTQyODkyMjZlMWE0OTkwYWE4YzZlNWVhY2IwYTAyYjZkMzVkIHB5M2sKKzU3NDM2IDAwZTEyOGI1MjcyZjU1ZWFmNjcyMzhkMjRjMDc5ODQ3NzE2YTUzNjcgcHkzaworNTc0MzcgNzc2YjhiZDY4YjMwMWEwNjZiNTAzYmZlOWQyNDg0MDU2MzMwODI3NSBweTNrCis1NzQzOCAyYzJlOTA1ODk0YTM4MGM2NTY4ODlhNjYyZDUyMjFhMDJjNDZjM2MyIHB5M2sKKzU3NDM5IGE5OWVjNGJlZmRhOGFkZmY1MjZlYWMwNDBjN2RkOWZiZGU2YTYyOWUgcHkzaworNTc0NDAgNzRiOTkzYThhZDZmZWY3MzE5NDM2NTlhMTljMTBiODE1MTA0Nzk5NyBweTNrCis1NzQ0MSAzZDVkMDliNDUxYjY2YTJmODVlNGM3MmRjNzFhMWZkYmJhZGZiODYwIHB5M2sKKzU3NDQyIGY4MWQ5NGMwNWEwZWNkYTQxZGUwZDk4YWM0ZTc5YTI2YjlmOTgzN2MgcHkzaworNTc0NDMgODcyYzdjM2YwYWYzNTQwMGVmYzUwNmZiNDJmMDJjYTAzYWFkMDgwZiBweTNrCis1NzQ0NCA1MzU1MzM3NzA5ZTEwOTUwYmM2ZTI1NmY4NWM0M2M4ODIxNGFiODdlIHB5M2sKKzU3NDQ2IGZiNThmYjNiZGRjMTliOWRkNjkyNzFlODU5NzM2NTU4MGRiM2JiYmIgcHkzaworNTc0NTUgMWI0MjBlNmUwMGViMTY0YTVmZDAwNDdhZDMwMzIwOTUwZTMyMzJmZSBsZWdhY3ktdHJ1bmsKKzU3NDU2IDIyYmJhZmE2OTMzYmQ5ZmNkMDAyNzllNzg1MGYzMTE2NGZjOWE2Y2QgbGVnYWN5LXRydW5rCis1NzQ1NyBiYjI4OGUwNGI4ZTU4ODQ2YzljM2IxM2FmNzhjNTY5OWM3NDY5YjUzIHB5M2sKKzU3NDU4IDMwMmFlZWUzMmRhODNhNDlmYzc0OGVkMTIwNmE2N2Q3MjQ1MjE1YmUgcHkzaworNTc0NTkgYmQ5M2FjMzBjNzc5NTJiZjlkMjM3NjcxNjA4ZWI4Y2E3OGNmN2E4MSBweTNrCis1NzQ2MCAxODRmODAwZmRiZjY3ODVmY2RkNDY1ZmQ3ZmY1YTBmMmFkNzg1MGMzIHB5M2sKKzU3NDYxIDU0M2YyYmE5N2ZhYjlkN2QxZTY0ZmUxNjNlNjYwMmIyNWVmOTA5NWEgbGVnYWN5LXRydW5rCis1NzQ2MiA3ODM0MGNjZWExNGJlNDJlNzBmMzczMjBhMTJmYzA3Zjk5YjU2YzVmIHB5M2sKKzU3NDYzIDZkMTNlMThmNzA2YWUzOTY5ZGZlOTY5NWMwYTA5ODVjNjFiYTVjYmUgcHkzaworNTc0NjQgMDhiNjI3OGFhMWY0MDlmY2FiMGNiY2NjZGYzZjE4Mzk1OTEyN2ZhYyBsZWdhY3ktdHJ1bmsKKzU3NDY1IDI0MTA1MzczOTczMzMyNDYzYWQxMzRkYWVmYmRlM2M0Yjg0NjIxNzEgbGVnYWN5LXRydW5rCis1NzQ2NiBiYjMzNmE2OGE0N2YyNTM0NDZiZDczNzg5YjZkMGQxMjhiMjgxOTY1IGxlZ2FjeS10cnVuaworNTc0NjcgNGNkMTFlODI1NjQ0ODA5ZTFiNjYxOGZlZTBiNTc0YTMwOTRlMzM1NiBsZWdhY3ktdHJ1bmsKKzU3NDY4IGNhZmUxZjY1M2RiMzZiNjMxZDQ2NjczZjMyNzczZjYwMDBlODRiOTcgcHkzaworNTc0NjkgNmExODFhYmZjOGE0MDcwY2YzZjMxNDA5OTUyNTZmMDJkM2ViNGFkOCBweTNrCis1NzQ3MCAyMGUxY2M3NGU4Y2E1MWYyNTg4NmM5ZjQ2NTNlNjk5MmZmNWVhMDQ0IHB5M2sKKzU3NDcxIDVhOWI3YzJmMzU4OWQ5NTEwNTM4NzY1ZjA1ZjkwMTc1NzMwNzAzY2YgcHkzaworNTc0NzIgNzhjZjJiZGE4ODU3MTg4MmZjNWVjMGE1YzFiODc2MTJmMmUwZTE2YyBweTNrCis1NzQ3MyBlZmZlZWE3Y2Y4OTg0ODUxYjUyODI1ODg0NjJiNGI2ZDVkMmJjN2E2IGxlZ2FjeS10cnVuaworNTc0NzQgZDhhNjNiNjMyNzQxMmY4ZGNmZjQwOWFiYWZmMWZiYTJmOTM1NGIwZCBweTNrCis1NzQ3NSBjMzFjMjA3YjhjODZkNTU3N2M2NzkwMzVkNzYxNzBhOWRhYTE3NWViIHB5M2sKKzU3NDc3IDA1NDhkZjc4MTBhMGNiODMzYzEyYWU1ZTg0Mjg0NmI2MjdmZTU3MDcgcHkzaworNTc0ODAgM2E2ODlmODhjODM4NWUxMWQzMGU4OTRhMWFhZDg1NTVjZDgwMjcxYiBjcHlfbWVyZ2UKKzU3NDgxIGE5YjNjZTA2NjVjM2EzNWQzMmY5MWM1MzAyMzhiZGI4YzRmODBkY2MgY3B5X21lcmdlCis1NzQ4MiA2NzNjYmM4NWQ4YzQwYmMyMGZlMDE0N2IxOTFlODAwOWViNGIyMDJhIGxlZ2FjeS10cnVuaworNTc0ODMgZWIxOWYyZmFlZWExMmIyMmQ3NTM0NjNjOWViZWRjM2I2NWM4MzNjMCBsZWdhY3ktdHJ1bmsKKzU3NDg0IDM0ZTZmYTc4YjY0MzI4ODUyYTE5Mjk1YTNjMDU1OGJiNDM0YmUyZDEgbGVnYWN5LXRydW5rCis1NzQ4NSA2ZTczNTkxMDY3MTgxYTMzMjUzOTE2MzcyODI5ZmMwYWQ5MTFmYjdhIHB5M2sKKzU3NDg2IDMxNTJkZjcwNTE3YTZmMTIxNDdhNjFjNDc5N2NlZGNjZWJmOGYxYWIgcHkzaworNTc0ODcgYjU1ZTdjNTMyNTNjMGQxMTQ5M2M5MWU2OTU3YTJkNmIwN2Q3ZTk4MiBweTNrCis1NzQ4OCA3ZmZhZGRkMWRlMzA1MGM0ZGZjNTQ3NDM0ZWU0MzNkZTllYTQ3MmU3IHB5M2sKKzU3NDg5IGVkMWQzNTExOGVkOGYwZjQxOGU2NDE4M2NiNjliMDk1NmZjNjNkZDMgcHkzaworNTc0OTAgYmJjNDQzMjZiNTNkNjk5ZTBjYzhiNDc4Y2MyYjdhZWMxYmM3N2MzMiBweTNrCis1NzQ5MiAwMjdjN2QwNDRjZmQ3Y2Q4ZDQzNDY3ZjI4ODI0ODdiZDEyZTQyNDA4IHB5M2sKKzU3NDkzIDYzODBmODhlM2RlZWRiMzJkM2FjYTk2NzQ1ZDVmN2JiMzFmMzFiYjYgcHkzaworNTc0OTQgZmVkNGY3MmIwNGNiOWQ5ODI2OTc4NTEzMmFmZDU2MzBmM2E3MTk0YiBweTNrCis1NzQ5NSAxMzkwYzExZTY0MGIxYTZjY2RkNDg2ZTc3MGMwYzg4YmNhMzc5M2Y5IHB5M2sKKzU3NDk2IDgyNGI5ZDUyZTAwNmJjYWM5YmU1ZWFkMjcyYzBjN2Q5YzgzYzQ3ZGYgcHkzaworNTc0OTcgZDViNTJkNTZiZWJhZmJkZWQ0NmY2ZmQwNjNlNzE5ZmJkMWIxYzM3MyBweTNrCis1NzQ5OCBmM2IzZmZkMTM5NTQ5ZWFhMTkzNmNhNWJmOTk0OWNmMDlmOTg1ZDIyIHB5M2sKKzU3NDk5IGVmNTYyODFmMDNiNDVkNDU4YjFlZmZkMTk1OTMwZDdlNWRmZDI2ZDUgcHkzaworNTc1MDAgMTU0N2RlMTZmZWM5NTFhNmJjMjNjZjljZmYzZWQ4ZTQ0NDkyNzM4MiBweTNrCis1NzUwMSAwMzY1OThkZTQ2NjBkNjI0ZjlkYzk4NzU5Y2NiOWM0NDk2ODA0NDMzIHB5M2sKKzU3NTAyIGJmMWE1M2NjNmU2NTFmN2Q1MGU2M2FhMWI3YmE5ZmRhNGQ0NDUyY2QgcHkzaworNTc1MDMgNzhlMDBhMGY2MDE1ZTVhMWIwNzQzMTg2YTYzNGVlZjIwZmUwZTExNCBsZWdhY3ktdHJ1bmsKKzU3NTA0IGVkMTU5NGExNmJkYjdjYzMwNzg4NDRhMjNhOTQ3ZjhlOTBhMmZlYjkgcHkzaworNTc1MDUgODRmYTk0N2ZmNjk2NjAyYWQ5ODkxZmM5ODkwZGJmMWZkMmE3NWE0NSBweTNrCis1NzUwNiAxYjFmN2NhM2ZkNDkzMDVkZTI5NTJkN2FkZjJhNzBmNDc4ZmI3ZGYzIHB5M2sKKzU3NTA4IGEwOTcyOGI4OTUzMDIzMmQwMjg3MDI5OWEzNWI2MDkxYWFhODUxMDIgYWxleC1weTNrCis1NzUwOSAzZWI1ZGRhZGZiZjc4YmViOTEwNzMxNzVkOTgwOTg2Y2E0ODNhY2MzIHB5M2sKKzU3NTEwIGQ2ZDQ5M2I2MTdlM2U1MWJjYWE3M2JkZDBlMzM1ZmIzZDM1MTA0NDEgbGVnYWN5LXRydW5rCis1NzUxMSA0MDNlYmQxNDU4YWZmYjVkZmFmYzhlNjcxNGVmN2RmZmVlMTQ3ZTA0IGFsZXgtcHkzaworNTc1MTIgNmRlZGIzM2QyZGEzODQ5YmFhZjlkMDk4ZTk5Zjg5ZjllNTMwMWRlZCBweTNrCis1NzUxMyBiYWI3NWU0YzY0N2Y2ZjQxZmQ4NGVlNjk3ZmNiMGZlZmU1MzgzYmQyIGxlZ2FjeS10cnVuaworNTc1MTUgMzg5NWMxMjllNDg2MjIzNzExNGRhODEwNjY4MjgxMWYxNGUwMmQ4MCBweTNrCis1NzUxOCBjMmM3NmEwNDQ2ZmFiMjY4NTM2YmFmNTFjMTM1NzI4OTNkNTVlYmU0IGxlZ2FjeS10cnVuaworNTc1MTkgYTEzNDg1YTNiNDA3ODNmNGM4NmIzZDg4MjQ4MmIxNzI3MmUxNjEzNCBweTNrCis1NzUyMiBmZjNjMGJlNzFkYzJiMzdjMTQyMTk3YTIwNmU0NjU1ZDE1Zjg0NzEzIGxlZ2FjeS10cnVuaworNTc1MjMgZDhhZDI5YzY4NzYzZWFiNDJhMzY0MjY3NTQxOWM1YTExYWZlYzgxOSBweTNrCis1NzUyNCA4NWVhZWNmOWQ2NzgzNDFjNjNjYzJmNGNlNTQyYTgwMzgxYmMyODJjIGxlZ2FjeS10cnVuaworNTc1MjYgNWZkNjVlMjUwODQzNTVlYjVjYTNlMmMzNjAzZjRjOGEwZDNiZjBkNiBweTNrCis1NzUyNyA1NmJiZDE3NjcwNTc1ZjMwYTMzMmFhNTUzODY0N2I3Yzc0ZmRmYTEzIHB5M2sKKzU3NTI4IGE0MGRmYjUxZGY5MTU0YjA5ODc0NDA1YzJjZjVkYzBmMmMzNjRmNGEgcHkzaworNTc1MjkgNDI2YWRiZmY0OTFkZDU2YjI4MWU5ZjQzNTgzNmFhZTE3NGFiYWY3MSBweTNrCis1NzUzMCBkOTExNWE0NTBmMWM2OWM1YjU0YWI4MjIzNDAxYjljMDQxZWM4NWQ5IHB5M2sKKzU3NTMxIDgwMzY1ZGQ0NTVmYTY4ODk5NGZkZGI5ODBlMWU5ZWUxMTVjNmQyZTUgcHkzaworNTc1MzIgNGM3OGMwNDhjM2JhMDRkYmE0NWQwNzQzYzc0ZGVlMzk4ODRiMDMxMSBweTNrCis1NzUzNCAyNTE5NzUxNTMyYWY3NmI2N2E0MDM2ZmM0MzU3ZGFlMmNhNTRjYWUzIHB5M2sKKzU3NTM2IDE5ZGMyZWVhY2JjMTFhMzdlNjlkNjM3MDVlZGE0YzAxYmJhMWY0YjMgbGVnYWN5LXRydW5rCis1NzUzNyA4ZTEyZDU2ZGQ2MDNlYWNhZmQ0M2I5ODk0NDA3YTQwN2ZmYWVjZGMyIGxlZ2FjeS10cnVuaworNTc1MzggYmI2MjQ5MmI1ODRlYjZmNTU2ZjJhM2UyOTc4YzBhYjRmYjNlOGM0ZSBsZWdhY3ktdHJ1bmsKKzU3NTM5IGU2NDg0ODVjZjNhZmUyNjc1NzMyNmUzOTc0MDVjZjA2YWQ5OGUwMjQgbGVnYWN5LXRydW5rCis1NzU0MCBkNWZiYjg0M2IwYTlkZDAyOWE2ZDk3NGViYjg4ZjZmYWNjZDY2ZTUyIHB5M2sKKzU3NTQxIGU5NDYxMDBiYjlmZDljZjNiM2ViYjY0MzBlZmRlOGI1ZDI3ZjJiNTMgcHkzaworNTc1NDYgZGQwNjcwYzYwMWQ5YWJhYjQ2NWI1YTNkYWYwOWU5OWJlOGIxYjc2YSBweTNrCis1NzU0NyA5MDQ2OTdiZTY4Y2NiNTg1NzM3MGMxMzc1YWM1OTQ3OGU1NWU1ZmI2IHJlbGVhc2UyNS1tYWludAorNTc1NDggMjUyYTg0MjgwYjczMmFlYThlZjQ4YTE4MGFjZDFmNzY5NWI1N2E2NyBweTNrCis1NzU0OSA5YjI5NDg0NmQyMGQwYmFmOTdhY2YwMWViNWNlYzdhMzg1MDQ0ZWJkIHB5M2sKKzU3NTUyIDJjMDJiYTcyNzE0Yjk0NGU2ZGUwNTQzNjZkM2NhM2JmMzc0NDE2MGMgcHkzaworNTc1NTQgNmI0NzgxZGM4MWZmZmNjY2M5YTQyNzUzZGVkYTNlNGI1ZmFiY2Y5MCBweTNrCis1NzU1NSA1OTRmODllYzA2MDc3OWUyNzkwMTI2ZWU0OWU3ZWRjNTBlYzhjNDlmIHB5M2sKKzU3NTU2IDdiZjhmMjMzOWVjNjliZmMyZGY2ODk2MWI3OTFjNzkzNzU5NGY4OTkgcHkzaworNTc1NTcgZTJmZmEwY2Q5N2I5N2JmYzc1NWNhZTJiNTQ1ZTgyYmI2Zjk4OGQ1NyBweTNrCis1NzU1OCAwMDIwYmM3ODRjNzY5ZjhiMGViZGEwMzNiNDY3NDU1MzViNTYwYjdiIHB5M2sKKzU3NTU5IGE0OTY2NWY4ZDJmNGQwNzIzMmNjNTljYWEyNjY3ZTIyMWE1Y2EwYzEgcHkzaworNTc1NjAgMTkxOTZjY2UxNDMxMzBiMjEzZmU4OTBiYTMxZjA4NDE5YzdmOWNmYyBweTNrCis1NzU2MSBjMDljMzI2NGE5MDA5NTBjN2VjZjU4YmFkNDExNmQ5YjdlYTIyZTFjIGxlZ2FjeS10cnVuaworNTc1NjIgNjI4NzRiMzRkOTVkOTljNzJkM2JhMTQ4NGYwMjcwOWRhNDU5YjM1NyBweTNrCis1NzU2MyBmYjMyNmZkOWQxODQyZDNjZDg3MWFmZTgxNjA5YzVkMDFlMjljYTY2IHB5M2sKKzU3NTY0IGNkMjM1MDI3ZTY0YzM3YmYyZTRlNjBmZjAxNWM0ZjY1NzdkYzNiMzkgcHkzaworNTc1NjUgN2VhOGE2Y2NkYzQyZGQxNGU2MWU0NGIwNzZmYWVlNDIxZjM3MjQ1OCBweTNrCis1NzU2NiBiOTdmYTQwNTUzNDM4ZGQ2NDM0N2RhYTI0MGNmMjAyYmJkODkxM2JiIHB5M2sKKzU3NTY3IDAxNzA0MThkYWRlYWJiM2VlYzdmZTI0MTg1MDMzYTg1NGE5ODcwZWQgcHkzaworNTc1NjggNTgwNWZlMTdjYjJkYzYwNDFlZGFiZDMzZmZkNGFjYzdkZDdhOGEzOSBsZWdhY3ktdHJ1bmsKKzU3NTY5IDdhNjJjMjQ2OWRlYTJlNGU5YzNmNjk0NjVmMzkyZmU2NjdlZTAyY2MgcHkzaworNTc1NzAgMjRhMDUzMjU2NzhiMTNhZTNkMWFjMWY1YjRiOWQwODY4MTljM2QwYiBsZWdhY3ktdHJ1bmsKKzU3NTcyIGNiMjhlMTRlZTgwODBkNTI4ZTAxYTk0M2E2MmIxOWNkMzQ3OWRjOWQgcHkzaworNTc1NzMgMDQ0YjYyODU4MTVmMThiMjMxZDEzNTNhNzk4ZTZjYjhhOGIxNTY4YiBweTNrCis1NzU3NCA3OTczMTA0MDIxN2I1ZjY1ZWY1YmU0NTQzYWUxNTAyNWY5YzEyODM2IGxlZ2FjeS10cnVuaworNTc1NzUgZTIwZDViNjQxODljOTQzZmYwZDE5NDFkYTM5NjA5NzhkOWQ3NDc2YyBsZWdhY3ktdHJ1bmsKKzU3NTc2IDNmMGYxYzc3NWQ5ZDQyZmExODBjM2Q1YmExZDI5MjkxN2UwMGUyZWUgcHkzaworNTc1NzcgOWZiODMzMWNlYzJjZmU3M2RlNzUzNGY1N2Q3NWY5NjkwYTY5MTFjZCBweTNrCis1NzU3OCA4ZTAxZjI2MjYyY2Y5ZTRkMDBhOGJiN2Q0MzFlZGM2NzNjNzkxYzBiIHB5M2sKKzU3NTgwIDkyMjA5MzFlNDc0MWJmMDRmOTY3NWFhZjQ4YmUwYjQyMjM2MzcxMmQgcHkzaworNTc1ODEgYzcyYTNjYzIxZWY3M2UxMzIzNTJjMjlmMzIzYzllMjFhNDJiNTcwNCBweTNrCis1NzU4MiBhZWNiZjU2Nzg3MDQ1YzA5NjgzMTgxZDQ4NTk1MzQ3MmZhNDA2MmY3IHB5M2sKKzU3NTgzIDg3MTdiNGY4ZTFlNWVkODMzMDQ0MWJiZGIyNTU5YzAxN2JlNmIwMWUgcHkzaworNTc1ODQgYjExMGJhYzlkZjQwOTAyM2I3NGIyMGI2ZjY0YzViYjhiMmM1MzM1YiBweTNrCis1NzU4NSAzODRmOWQ5Yzc1YTAyZmZlODY3YTAxNDJiMTI0MjZhNmJjYmU5MTlmIHB5M2sKKzU3NTg2IGI0YjE0YzRiZWI4MmNhYjg3ZTNhMzY1YjUzYWM5ZDBiYzM5N2U1MzEgcHkzaworNTc1ODcgMDBjYmIzM2NiODY0MGY4ZmRkNzk2ODMzZmVjZTBjZDgzNzBkYmRjYSBweTNrCis1NzU4OCBmZDFmY2JhNWUxNmIwNTYzMmUwMDUyYzYyYzFjNjUwYmVjMGE2YTc1IHB5M2sKKzU3NTg5IGYzYjBhYzRlNjg0ZjlkZGNhOTQ1OGRmMGI1YjM0Yjc0ZjMwNmMzYzQgcHkzaworNTc1OTAgN2JlMGUwMGIwMzY2ZDlkZGNhYzdlZDgzOGZhNTk3NjBiNDU1ZmQzYiBweTNrCis1NzU5MiAxMWVjNDA5N2ZhZmU3MTU0YTFkM2JiZjI0MmJiNDVhZjVhZmEyY2QyIHB5M2sKKzU3NTkzIGNiZDUwZWNlM2I2MTJjMDhhNjY5ZDIwY2ZlM2Q4MzVhMjU1YjM5NzMgcHkzaworNTc1OTQgYWVlMjFlMGM5YTcwZjM5MDYwM2RkZWNiNWZjZjFmZmVhODdhNjc0YiBweTNrCis1NzU5NSBhYTM5NTBmMTExZDlmMTJhNGFkMGMwYjM3NGMxNTRlYjk2OTM1ZWU5IHB5M2sKKzU3NTk2IGI4NDY1ZjAyZmNiMWVlNmZjMjQ2NTUyZWQwMDIwNTU0OTFmYzdlNmQgcHkzaworNTc2MDEgZmRlZjMyYmJiY2I4NDA3OWFmYzkzYmY3NmUzMDM4NTA2Mjc5OWU4YyBweTNrCis1NzYwMiA0OWRjZTNkYTBlODAzY2YzYTJlYzM5NjZiYjhmMmM5NTllMjc1ZTkxIHB5M2sKKzU3NjAzIGUwYjZiNjI4N2M2YjIzZjdiMzk2NGYxNDg2MmE1MTU4YzlmNWM0M2UgcHkzaworNTc2MDQgYmM5OGFmOTcyNjc4ZDg4ZWI3MzhiYjNkYWY5YzQ1YzY3N2M0M2E5NSBweTNrCis1NzYwNSBlODM2YzEyYzU0YzJmNDQ2MGY5M2YyYjkyNTdhZTgxYjUyZmE5N2MyIHB5M2sKKzU3NjA2IDgzYzEzMWRmZGQ4NGMxODg5NGNjYzgzMWRkYjI2OGFjOGY4ODUxNDAgcHkzaworNTc2MDcgMWRmZTY4NWI4NTc2YmZlYTE4NGE1ZGU1ZWJmNTg0NzJiNGUxZTE2NSBweTNrCis1NzYwOCAxNzFiOWYxNWMyMjNhNGJkOWU4OGVkMWExN2IwOTVkNWFlZGM4NDI4IHB5M2sKKzU3NjA5IDMyNDMyMGQ5NDYxMDJmMTBiOWIxZjljYWM3OTQ1NTdhM2I3MDg0Y2EgcHkzaworNTc2MTAgNzJhZmFmOWFiMzBiYTc5YmU1NDE3MjVhODAwOWViN2NlZWIxODk3ZSBweTNrCis1NzYxMSA4YjA2ZjUxNDc0NDU4NjE5ZjNhYWJkNDNhMTFlODQxYjRjYzYyMGRkIGxlZ2FjeS10cnVuaworNTc2MTIgNjhmZTM1MDkwNzU5MjgxODgxMjRmNjQ3ODcxYWY0YmEyMGRhMTJlMiBsZWdhY3ktdHJ1bmsKKzU3NjEzIDlhMTNlOGZiMWEzYjZjYzljNzhkNjQ5NmRiOGZjZTEwMDRlMmY4N2UgcHkzaworNTc2MTQgOTZkYTFiOWRlZThkYjJjMTk2Njk3MzljYjJkMGM3MDQyZWYxM2NkZSBsZWdhY3ktdHJ1bmsKKzU3NjE1IDRlY2JhZTA3NDgxZjIxNGExMWRkNTM5OTQ3MTIwODdlZGY0M2JiZDIgcHkzaworNTc2MTYgM2JmMmNhZDhmMjJhOWNlMTAxNzcyZWRhN2Y1OWUwYjAyMWExOTIyZCBsZWdhY3ktdHJ1bmsKKzU3NjE3IDY2ZTM2Y2U1YTU2YzZmMjYyYWEyMTBkMTA0ZTMxMGYyZDQzMmQxYTQgcmVsZWFzZTI1LW1haW50Cis1NzYxOSA5NjIwMTM0MDEwYTVhZDJlNTdmOWFlMWJkNzZmYzNjZTJiN2EyZjQ3IGxlZ2FjeS10cnVuaworNTc2MjAgZDE3ODlkNGZmMDBjNmVjNjZlMGNmMzllZjNhNGZiZTc4YmQ1ZTdhYyBsZWdhY3ktdHJ1bmsKKzU3NjIxIGNhYWQzNWU4MjEzYjhhN2VmZDc0ZjE5YjU1YjYyNTExMzFjYzUzZDUgYWxleC1weTNrCis1NzYyMiAxZWRjNmUxN2FlMTg1ZDQyMGQ3MmM2NzJkMTgxYTU3MWY4MzZjNGM5IGxlZ2FjeS10cnVuaworNTc2MjMgMjVhODkzZDY3YzY0MTg0MzA1OTY5Y2QxNjA3YzVmZWM1NTlhYWRkNiBkZWNpbWFsLWJyYW5jaAorNTc2MjQgMjdmMDI4OWI2ODM1MWNlOGM0MmZiYjIxNzBlMWFhMWIwNzhjMjQ2YiBweTNrCis1NzYyNSAzMDUxMTA2OGQzZDQ4MmU5MTRlNmQ2NTU0MzkyNmI3MjgzNGE4YjVlIHB5M2sKKzU3NjI2IGU2YTlmY2QxYjQ0ZTgxNTRmYjI1YWQ5ZWE3YTg0MDk2YjhmZGQ5OWMgbGVnYWN5LXRydW5rCis1NzYyNyA1MzNmYjUzMjFkNmJjMWQ0YzA4ZWMwYzBjMzYzNjE0NzY3ZjIxZjYxIHJlbGVhc2UyNS1tYWludAorNTc2MjggOGJiMWZlMWE3MmE0YTMyYjVlODBiZmU0ZTRhNjc0Y2FjMWI2NzkyMCBsZWdhY3ktdHJ1bmsKKzU3NjI5IDg5YzRmZjk3ZmQ4OTNlY2EwNzVhY2FjYTEyNDU1OWYxMTFlNjg3ZWIgYWxleC1weTNrCis1NzYzMCBkNjlkODA2MDBjZjE3MjE3NjY1ZGQ0MjQzMDQ2MGM2YWE0OTgyY2YzIGFsZXgtcHkzaworNTc2MzEgZmIyY2Y2ZThjZDg2MTE1Mzk3MzljODY3OTIzNTE2ZmRjYWI5NGZhYyBsZWdhY3ktdHJ1bmsKKzU3NjMyIGRlYzJlYzgyNjg3NDExN2FiMDkzNDE5OWY2NGFjOGIwOTdkMGNlNDggcHkzaworNTc2MzMgMWEyMzBjYjc3ZjA1Y2JlYzZkNTUwZGE3NjdmZmU4MDMwZDJhZmI3OSBsZWdhY3ktdHJ1bmsKKzU3NjM0IGI5MmZiMjRjNWQ0YjUwNjFiNjI5ZDhjMTVkMDNlOWI1ODAwOWJmZGEgcmVsZWFzZTI1LW1haW50Cis1NzYzNSBiMmRmNDRiOWMyNTEzNDhkN2YxOGU4NGE4YmZkNWVhYjNlOGExMjdhIHB5M2sKKzU3NjM2IGE3OTUxYWJiODUzNGIzMTAyYjk2MDU3YjhhYWM2MzZmZjEwYTBiNzIgcHkzaworNTc2MzcgZDFhMTdjZDI2YTRiMDJjZmVmMDVjZGQwNzUzNGIzMWY0ZmFlZDgxMSBweTNrCis1NzYzOCAzN2JlYWUwOWZjYjBmZDVmZWE5YjNkYzc4YTEzNzRmYzkzNWVmN2ZmIHB5M2sKKzU3NjM5IDUwYjc4N2NiYThmMWNkNmQ3NWE2ZjY5N2FjYTg1NWUzYWY2NWRlYmUgcHkzaworNTc2NDAgNzEzZmJhMzRkNjZiODhiNDExZGZlNjc5ZGUxOTA3MTE2ODljZmFjNiBweTNrCis1NzY0MSAwZTUxMGFmZjVlOWFlMTU0MmI4M2QwZmYzY2I1MmRhMDgzMzlhMzk1IHB5M2sKKzU3NjQyIGNiNWFlMDIwYTA2MGViYTc2Yjg5MGVlMjk3MDViNDQ4N2FhNDYwZDAgcHkzaworNTc2NDMgOWY3NGI2OTkwNTZhNDY1NmQ3N2RjMjNlNzVjMGQyOGI3Nzg4Mzc1NyBweTNrCis1NzY0NCAwNWM0NzM4ZjhhNDNjNzMzMGQ3Mjk4MzYxMjFiZTk5OGFlY2M4NGZiIHB5M2sKKzU3NjQ1IDFjZTg5ZjI1NzhjZjgxZGZiYzYwMTM3NjFkMDExNWE3MmE1NDU1ZDUgcHkzaworNTc2NDYgMGU5MDY1MTAyNjJkMWE5OGU0OThiMTg1ZDY5MTBiODk4ZjhhOGQxOCBweTNrCis1NzY0NyA3MWNkNTU5OGI3NGQ2ZDBiODAwYTgxMmI0OWUwYmUwODhlN2JjNmI5IHB5M2sKKzU3NjQ4IDZiM2U4YWE1NGRkOWQ5MTg3OTlkNDFmN2FiMTdjYjVjZWJlMzkzMzMgcHkzaworNTc2NDkgNTQyYjliMTExOTE1Y2VkNjQwYjU5NmYwMmNlY2VmNjBiMDg5ZGMwNyBweTNrCis1NzY1MCBkZjhlZjljODM3MWE0NTUwMjkwODQ5ZTJhNTQ3MDM5ZDFiYzhkYjdjIGxlZ2FjeS10cnVuaworNTc2NTEgODI2MDIzMTVlYWViOWU3MTBlZWUxMTUwYTJmOWU5ZjQ3YmFjZGZjZSBsZWdhY3ktdHJ1bmsKKzU3NjUyIDlkZjkxMWQ2NTRhZmNiYzRiMjk1YzhhM2VmNzQ4ZDBiZTFlMDBjNmUgcHkzaworNTc2NTMgMGY4MmZjNDJmZDY4MWFmOTI0OTRiMWMxZDFmZjhlZWY1NTdmMjllMyBweTNrCis1NzY1NCA3ZmRlNmVkZjJiOTIwMTI4MjY1YThkNWJkZjFjYmNjMzhjMDU1MTliIHB5M2sKKzU3NjU1IDc5MTkxYmRmYTIzYjUyYzI5YWFkNjgxOTk4OTU0MTRhMDIxMjA2NjEgcHkzaworNTc2NTYgM2E1NmU3M2FlOTE5NTc0NTlhMTMzOWI0NTk1ODMwYzU4ZGM0Y2U3NyBweTNrCis1NzY1NyBmNDg1MWRjMGRmMDQxNzQ1NzZmMTIwMWQ2MWIwZWVhNWFjMTRjMGY2IHB5M2sKKzU3NjU4IDcwNzNmNDgxNDdiZGFmYzBiMGI0OGY4ZTQxZTdiMzI5OTZhNjg2ZTAgcHkzaworNTc2NTkgNGJlYmIyMjgxN2NmZWVkYjNmMjUwNjY5Y2Y1ZDRhYTJiYmY5M2QyOCBweTNrCis1NzY2MCAwZDI4YTUyMGM5YjE4ZWExOTZjMTcwYjNhN2QyOWIyMjAxYTQ5NDU5IHB5M2sKKzU3NjYxIDE3MjI0NTkyNWFlNjAzZDE2MTJkYWVlZGJhMDk0MTZjMWQ1NmZjZGQgcHkzaworNTc2NjIgYTAzNTMyNjA3ZDFjYTdhODNkMTVhMGNlNzhmMTljOTdhNTNiNmJiYiBweTNrCis1NzY2MyAzM2U4N2Y5NzBhMjJjMDMyMzk1MmQ4Zjg5ZDFmYTQ1MmYyYTNlNmU5IHB5M2sKKzU3NjY0IGVjZGEzMzA1MTczOWQ5NmU5YWVmZGE2YTIzM2IzZWFkNjYwMzQ2MWIgcHkzaworNTc2NjUgOTg4NTRjNzYyOWM4ZTAzM2YzZjhjMzQ1OTJmNThkYTA2MzkyNGFmYyBweTNrCis1NzY2NiBhYmVhNTY1MzA0MDQ5OTY1YzhhODgyMmRmMDk0M2M4MDdlOTg2NmUxIHB5M2sKKzU3NjY3IDI1MGE5ZDA3YzJjYzJiNmYzODMzMzVmMmUyN2E5MGQ4ZDY4NWZlMjcgcHkzaworNTc2NjggNGQ2YzEzNDQzNDBjMmM3MmEwYmYzNDIwYWY4NjFhNTg4ODYyYjYzNSBweTNrCis1NzY2OSBiOTIyNmNhZDlkZmRiMDhiZGJjN2I0MWQ5ZTMwYzhiNTMwOTU1OTdjIHB5M2sKKzU3NjcwIGRjZDI4NWMwNzgxMzVjNTk5Mzg1ODBkMzgyMGQzMTI3NDVmM2JiMjMgcHkzaworNTc2NzEgZGMwZjBmZmQ0MjU3MjhlNzIwNzg2NDE5M2I2Y2Y0NTM2NWNmZjYxNSBweTNrCis1NzY3MiA5NmJkZTA4ODJlNWY0YTQ3ODQ4MDZiNWM3MjU5M2YzMDEwNDMwZWY1IHB5M2sKKzU3NjczIGVhZmM4YjIzNTg5ZDEzYTAwODUwYjgxM2VlNWUyYmI2NDQxMDQ5MjUgcHkzaworNTc2NzQgZTE0MmNkNGI1NzEwMWM1YzIzNGZkMjk2MzY1NmVlZTlhNTQ5N2I5ZCBweTNrCis1NzY3NSBjZDgwZWI5ODk3MjgzZjM1ODNhNmQyYjc2NmVjOGUwYWIxMDAzN2U1IHB5M2sKKzU3Njc2IGFhNTdjZWUxMTYzMTNmNmFmZTExOTU1MjZmNzI5M2IwMzIyN2MwNjIgcHkzaworNTc2NzcgYjc1NGMwOTA4ODk3ZWJiMjYzOTJkNDFlODMzYjhiZGE1MDE5MDA1OCBweTNrCis1NzY3OCBhYzhiMzg5ZjAwMjVkNzM3YjQ0Y2Q0Mjg3OTA3Njc5ZDlmMjQ4YjFiIHB5M2sKKzU3Njc5IDVmZGU1ZDY5NjRkN2NkNzE5NDVlZjM2N2U1NjhiNzUzMGI3MWE5NTkgcHkzaworNTc2ODAgNDc3MTYzOWZjMDQ5OTYzOWZjZjk3MTE5OGYwODRlN2RlNTE2MGFiOSBsZWdhY3ktdHJ1bmsKKzU3NjgxIDA3ZDY3YTk3MjVhNzhlMWIxNjc2MDM5ZWU4MDQxMjc1ZjFjMTlkZmMgcHkzaworNTc2ODIgYWI4OWUxMzBkNjRhODRmYWRmMzFkNjE5OTkyNzc5NzljZjdkODA1NSBweTNrCis1NzY4MyA2ZTM1YzdjMTc2MDRlNmFmMjhmMGUyN2Q5NmI1YzUzMTU0YjhiMmJkIHB5M2sKKzU3Njg0IDBkY2Q3ZjA4NzM5YWM4MDcyNzQ1MjRmZmQ4YjMxZDA2YTdjNTdiNjIgcHkzaworNTc2ODUgODhiYjQ1OWZkYmY1N2M3Mjg2MWY5MDAwMTMwYmQ2MGRhMDE2N2IxOCBweTNrCis1NzY4NiA5ODM0MzAxYTJmZDNlMDE3ODcyZmYxM2ZhOWZjMTJiNTg3ZTQzODg0IHB5M2sKKzU3Njg3IDBjZDQwMWJmMmFhN2RkYWE3NGJmMDFlMzI1MTNlZTAyYmNhYWU0ZTkgcHkzaworNTc2ODggOTUwODQ4MTE3Mzk3ZDcyNGQ0NDBjYTFhOWFhNzZkYmI1MDBlN2NkNCBweTNrCis1NzY4OSAwMTA0ZDc5OWRkNDQ1NDJiMjU4MTIyY2IwMTRmZGQ1YzJiZmFhZTI4IHB5M2sKKzU3NjkwIDE2NTkzNGJjNDQyOTYxMDQ2MDc0MjQ5M2Y5YTNiNjBmZWE5ZDhhNDcgcHkzaworNTc2OTEgZDVmM2MyZjQxNmYyYTg4YjNlNGM2NjhjYzExNzAyZTg5YWE4MDEyZiBweTNrCis1NzY5MiA5MDdhNDVkZjEyOTUzYTU4YWNhOGI0NGRlNjA3YjA3NWYzYmRhYTYxIHB5M2sKKzU3NjkzIGEzNDY0NGE2NTdmNWEyNmZmNmQ1MmM2NTRmZWQ0MjllOWYyNTRjMzAgcHkzaworNTc2OTUgMzkxOGE4YTUxYmQxOTdlOGNmYzUzMWRiNGFkMDYwNWVmMmM0NDc3NCBweTNrCis1NzY5NiA5NTJiZjZhNDRjMjc3ZjcwMzllZjhlMGY0YTYzMDY1MTQ2MmUzYTkxIHB5M2sKKzU3Njk3IDEzMjFiYTBiNjcwZjEwMTAyMDc0ZTdlMDU3NjRkYzc4YmJlMDdkYWIgcHkzaworNTc2OTggYjk2Y2EzNTA4OTFkMWRhMmYyZWYzYjlkOTMwYTU3YmZmYzY0M2Y3NSBweTNrCis1NzY5OSBhNmQzOTMwYjU2MTM4MGFhNmRiM2MxOGNiZDI2NTA0NGVhOTVjNWJjIHB5M2sKKzU3NzAwIDkwNzU3MTJkZWU4ZmQ0ODZlMDc1N2IxNTdjMDBmODgyYzdkYTE4NmMgcHkzaworNTc3MDEgODA3N2VlNDlmYWRmZGNkMzZiMWUwM2ZkMzM5NTg4YjkyZTQ5MjY2YyBweTNrCis1NzcwMiA3MDgwMzNlZDk1MTU5NDhkMDEzZWI5NmNlYzVkMTgzYzQ0MzgyNDk1IHB5M2sKKzU3NzAzIGNjMGZlMDU2YmFiZGY1YTk2ZjQxYTM4ZTI5MWEyOWZkNjg5MTFhMjQgcHkzaworNTc3MDQgYWMyZDVkMzQ2MjUyYTI0NDc0OTcwZWZmNTQyYmZiZDE3MjlkZTdlNCBweTNrCis1NzcwNSBiNWQ5YzE5NWEwYzUzYTk3YjI1ZGQ1MzMzOGJlMjdkNmVkMzNjMjY3IHB5M2sKKzU3NzA2IGUwOTNjYTU1OWMyM2NlYmZlZTc2NTNhZGZiODdlZGMzN2Q3OGQxMjIgcHkzaworNTc3MDcgOGNjZjZmNGM3ZjEyNTY4NTcwNGU3ZjU0YWI1ZDA1MDg0NDlmZjMzOCBweTNrCis1NzcwOCA0Mjc1NDIwOGE2NTQ0Y2ExOTM2NGY0NDdjY2RhOGM5NGYzZjlhNDU0IHB5M2sKKzU3NzA5IGU4MmM4MGEwNDQ4ZDViNTY1YzZmYzM1YTA2NTE1YzAyODc3YTk0OWEgcHkzaworNTc3MTAgY2M3ZTkxNGEyMmQ5Y2M3NDBmNmMyOTlmODM4ZGRkNDYzOWFlMDU4NCBweTNrCis1NzcxMSA2ZTEwMTNiOTIzZTNjMWM4MmFjMDVlYjFjMWI5NjZkMWM1ODlmZWRmIHB5M2sKKzU3NzEzIGZmYTQyMzNkZTg2NjIyN2FkYTBkMjc0ZGE0ZDQ1NGE5OTgxYWJlOTYgcHkzaworNTc3MTQgOTYyNDgzMmYzMTU2ZjM2Zjc3N2MxY2RmN2M4MTBkYzRkYWQ5NWIxYiBsZWdhY3ktdHJ1bmsKKzU3NzE1IGExMTM2NzMxN2NhMGZjY2ZhZTk0ZDIxOWQyNjQ2M2I5NGViOTgxYTMgcHkzaworNTc3MTYgOGIwYjExNDZkOTA4MDVkZTU0Yjg5ZDFmZDZmMWJkNjlhMWFjZjlmOCBsZWdhY3ktdHJ1bmsKKzU3NzE3IDExMzIyMGRhY2U2NDZiYjMxMGI3NTNjYmEzN2RlNDA3ZGU4MmE4MGUgbGVnYWN5LXRydW5rCis1NzcxOCAzOWQ5ZTUwMDBlN2NmNGMyY2E0NWIwZDAzZGEwNWVjNTgxMDU4ZGQyIHB5M2sKKzU3NzE5IGRmNTNjNTc2YzUzMWVjZTFkNDdiYzA1MWQ5NDc2Njc2Mzg5M2MwMDcgcHkzaworNTc3MjAgYjZlMzNiNWVhYzQwZmFlMDUyZTFhYzA3MGRmOWM3M2FhODk2ZDBhYyBweTNrCis1NzcyMSAwOGY3YTZiMjVjOGYyYmQ0NjYwNTcyZWQ1YTc4ZmY1ZTcyOTBkNzg1IHB5M2sKKzU3NzIyIDY1MDBjOGJkN2ZlYWI3MDUwMTg3ZjU5NzUyODc5MmY1MWM3YmZkMTcgcHkzaworNTc3MjMgM2E3YmRiMGE1OTQ4MmJhMDEzMWFhNThlNjMzNDM4MTIzNzRhOGUyNyBsZWdhY3ktdHJ1bmsKKzU3NzI0IDU2YWZkZDZkNmNmNzhlOTFhMjY2YzAyYWNmYjA4ZjYyNTRiZWRjZDQgcHkzaworNTc3MjUgMjI3Y2NkZDBmOGRiN2FmMjhiZmYzZjdjYTc2NTkwYzcxYzllMjU2MiBweTNrCis1NzcyNiA5NzNkYTJlYmMyZDBmMzdkMGFkMDU3ODllYjIyNmRmMzgwOWNmMjQ5IGxlZ2FjeS10cnVuaworNTc3MjcgNmZjYjg3M2YzOTZjNjg4OWRlYzU5YTdhYTRhNzkwODFkNzQ3MTcyMCBsZWdhY3ktdHJ1bmsKKzU3NzI4IGQ4M2MyYjIxYWMyNmVjMmVjZjQyZThjYzQ1YzdhMjYzYmNkOWNmZGIgcHkzaworNTc3MjkgN2VhNjg4ODU2MmQxZDM4NDcwMzNjMTE2NmMzMTVlMGM4NGY2OTdiZSBweTNrCis1NzczMCAzYmYxYjhiMzQwODAzMmQ5MDdjYWY5ZjU0YzY1MjJiOWZhMjA0ZGU2IGxlZ2FjeS10cnVuaworNTc3MzEgN2RmZWQxY2ZlNzYyYzU0ZTY0NDVhMGQxNjQxZmVmZmQ2NmIyMTA1OSBweTNrCis1NzczMiA1YjdhYWZhZGYyMjMwMTk0ZGU0ZTU3ZWViMjQ0ODU4YmNkNTBjMzkxIHB5M2sKKzU3NzMzIDBhMzhjMTI5NzE3YTMxNTVlNzZhOWJjNDI2Y2RlZDBjMzhjMDIxNmYgcHkzaworNTc3MzQgZDYwMzY3YTEzMTZmNDM5MGQ3NzgyNTI4MmUzYTRkNmUwNDM4Yzk2YiBweTNrCis1NzczNSA3ODNlYTY4MjFlMDQ3MWEzNTc3YzhhOTRhOWE3ZjlkODVmNjA1Yjc0IHB5M2sKKzU3NzM2IDFhOTAxYjFjN2NkMzE4NjE1MjcyNWE2MWNiMTdkM2E1NGM1ZWUzZDUgcHkzaworNTc3MzggZTdhMzkwYTM2ZWM4ZjczYmMwNDgxMWM4ZDRlMjc5NTA2NzY1NDE2OSBweTNrCis1NzczOSAwMmQxYjVlN2JlZjU2OGZjYTJiYWY1MzAwNjZmZjliZjhiYjcxOTU5IHB5M2sKKzU3NzQyIDA5M2ZkODRmYTc3YzQ1NDkzZGExN2MyOTM4NWE3ZTEzYjY0NThmM2QgcHkzaworNTc3NDMgNmMyMDNiN2IxZTBhMTE5N2NmZDFhNzY3M2VmMWVlYzYzZGU2MWJmNCBsZWdhY3ktdHJ1bmsKKzU3NzQ0IDZiYmVjYzAyOGJjZTI2NmEwNzIzYzc5Nzc3MDVlNjZiYTdlYTEyZTMgcHkzaworNTc3NDUgYTU1MzI0Yzk2MDJkNjIxZmFlM2QxMTFiNTVjN2ZlNjEyYjYxZGYxOCBweTNrCis1Nzc0NyBiZWFmNjYzMDgxNDg4NGZjZTczODdhN2E2MThkNjM5MWQ3MTZlZmFkIGxlZ2FjeS10cnVuaworNTc3NDggNjZhNWM0YmE5MzhlYWNhZGY0NDU1ZmUxYjJlNjcxZTM0MGM3NzViOCBsZWdhY3ktdHJ1bmsKKzU3NzQ5IGM0YTk2ZGU1ZTQ0ZTU5ZjhiNzg5NjE5Njg1ZmRkNzhiZjUyYzlhZmIgcHkzaworNTc3NTAgZmY5MThmY2M1N2QyYWEzOTMxMDMzZGE4NmQ1ZTE1MDU2ZTVmZjY0MSBsZWdhY3ktdHJ1bmsKKzU3NzUxIDIzMzY0NDk2ZGYzMTM3NGMyNTExMTM2MmRkNjU3MGUxNzJjZDZkMDIgcHkzaworNTc3NTIgZGI5YTE3NjE5MGQzNjBkNzg5NTFkMmRlY2ZiMGZhMmIwYjJkZTM2ZCBweTNrCis1Nzc1MyA1MDRjMTVmMDVkZjM1NDRhMzlmNmU4MzMxYzJjNzNhMzUyNDdhYWJjIHB5M2sKKzU3NzU0IDBmZDFiNGUyZjRlZTU4YWVkZGRkYzdjYTA2MzE5YTI0YTM0ZDg1YjQgcmVsZWFzZTI1LW1haW50Cis1Nzc1NSBkY2VkZDMyZjA2ZGUzNzExZDBkNTFkNGU0MjkxNzhkZDMxYmVjNDMzIHB5M2sKKzU3NzU2IDNlM2JjODQxMjJkN2JmN2NmNGQxZWViZGNiZTgzYTYyOTUxMjM5YWQgcHkzaworNTc3NTcgYmYxMWVkNDBiMTA1OGRiNGEwMjVkNzQ0NDczZTBmN2RkZThkZWQwNyBweTNrCis1Nzc1OCA4N2EwZmRjYWE4NGE2NDQ5ZGYyZGYxODAyODJmOTUxYmU4YjU3N2ZlIHB5M2sKKzU3NzU5IGFlOTA0MjBkMjYzNTVlMjcxODFlOTE0ZDcyYjcwNmQzZWU0OGM1NmIgcmVsZWFzZTI1LW1haW50Cis1Nzc2MCA2OGY4YjIzOTMyNDM3N2UyZmJkNTEwMTEzMDIzYzE0ZDFlOWFiYzcxIGxlZ2FjeS10cnVuaworNTc3NjEgYWZiZjZmZDc3OTgwNzlkZTI2ZGMyMTZmMWZiYWFmYmUxNjQ5ZTk5MSBweTNrCis1Nzc2MiAyMGQ4ZDExYzliMjEzODFmNWM4NjlhNTVhOGZiMmViZTE5YTRjZDcwIGxlZ2FjeS10cnVuaworNTc3NjMgY2IyNTBiMDQ3M2ZjYjZmNzY5OTJjYzZiMDZmMGIzMmZiYWRiNmZmOSBweTNrCis1Nzc2NCA1ZDMxNGMzZTk4ZWRlNTY4NWYwNDZkMDBhODk5NjQ2NmU0NjUyY2NkIGxlZ2FjeS10cnVuaworNTc3NjUgOGRmZDE4MDgzNTQwZDkwYmVhOGY5OGU0M2M1Yzk3YmYxNjg2ZWJlMiByZWxlYXNlMjUtbWFpbnQKKzU3NzY2IDFiY2RlYTFkYzhjNzUwZjdkYzczZDBhZWVhZmQ0MGI4OGRmNWRmNzcgcHkzaworNTc3NjcgMmUzYzAyYzYyNWRlYWMzNzA1YTNiNzEyNmYwYzJiMDgwODQ3NTk1YSBweTNrCis1Nzc2OCA4Yzg5YjhjNDhiNmNiOTBmZTFkNThkZjEwODVhMjFhOGU5NjY5MWE5IHB5M2sKKzU3NzY5IGE2YmQzZGFiM2ViOGM0ZWM0YTBiNmM5NjVmOTJhZjAzODZjMjJiYWMgbGVnYWN5LXRydW5rCis1Nzc3MCA5MmU0N2QzMzg4NGU0N2U4OWYzYTZiMTM2NzgwNWYzODQxMTAwMDliIHB5M2sKKzU3NzcxIDFkNTdmYjdlZmIxNWIwZGJhNGI2NzQwYzE3MzU2MGY4OTUxNzYxNTkgbGVnYWN5LXRydW5rCis1Nzc3MiBkZDA2ODg3NDBkMjQzZGI4NjM5ZmM4YjdkYzgwODQwN2E4MTk3ZDJjIHB5M2sKKzU3NzczIDRhMDdhMjg4ZjVjNDlhZjRlM2FlOGExODI0YmI3YjJmMDQxZGExZTEgcHkzaworNTc3NzQgNjk4OTA2YzJmNDY5MTMwYWJiMDlmYWVkZTdkZmE4MThjZjQ1MTJjZiBweTNrCis1Nzc3NSBhOWFjYzA2ZGE1N2FiNDQ0MDk2Yzc1ZTNhMDdjYWRkYmQwOTA2ZjVjIHB5M2sKKzU3Nzc2IDU0ZGVmMThlYjMxZmRmZDE2YTU3MTFkNzUzNjM1ZjY4ZTZiMjUyNDUgbGVnYWN5LXRydW5rCis1Nzc3OCA0NDQxYzM4NzY1MGQ5Yzg2MzIwMzU4M2Y4ZDk5NThhNWQxNTJkOWNhIHB5M2sKKzU3Nzc5IDRlNmI0YmE2MGMzYjI4NDIwYmE0ZTJjNWJmMTZmZTIzOGUxMjQzNTAgcHkzaworNTc3ODAgM2M0MzI5NDMxYmJjNDg4MmJmOWVlM2MzODFmMTQzMDlkN2JmMGM4YyBweTNrCis1Nzc4MSAzMmY2ZGQ5NWQxYmE3Y2E3ZjJiMjYyMDFkMDBhMjc1MDRlODBkYWRmIGRlY2ltYWwtYnJhbmNoCis1Nzc4MiBlOTFkMmJmNzFmZGVkODdhYzNkMTMxY2JjNGI1YTBhOWIyNGYwZjVkIGRlY2ltYWwtYnJhbmNoCis1Nzc4MyA5ODFlY2M1MjY3MDMwM2Q3ZDIzMWZmN2FhOTU1ZGVmMjcxOGQ1NTc4IHB5M2sKKzU3Nzg0IGQyZTlkYWRlZGNjNmQ5YWM4YTI3ZTUzZTMwZDc2ZDNiYmJiNGZlMjMgZGVjaW1hbC1icmFuY2gKKzU3Nzg4IGRlZTRjNzhlYTkxMGM4NGJkMThhYjE2ZDk2OTMxMTRiZGQ0M2UyYjkgcHkzaworNTc3ODkgNjkxYjVjY2VmMGM4MTFiYmZiMWQ0NTk2NzU2OTU2NGE3ZWE3NzA3ZCBkZWNpbWFsLWJyYW5jaAorNTc3OTAgZGQ2Y2YwMGMxNzk0OTRhN2VjY2M3OTI4YWUyMzE1ODZiZmI5YmRmYiBweTNrCis1Nzc5MSA5ZmIwMzI3YjMxMTAwOTNjOWE0MjM1M2QyNTg0YTE3N2ViYzUzOWFkIHB5M2sKKzU3NzkyIGVlZDE1ZWM2Yjc1OTk1YmNlNTA2NWViNTVjZjk2MWRkNDViN2RmYmYgcHkzaworNTc3OTMgYTg5ZDQ2OWUxZmY3NzcxNjkxNGNlMWE0MjQ0ZmE1MjlhNzFjZTY4YSBweTNrCis1Nzc5NCA1N2UzZjZmMGE1ODhjMDJmMjYxMmVlMzA5OTI0NWE5MjI4ZDViOGRiIHB5M2sKKzU3Nzk1IDAxMzVmMGU2NzZiZDAxYjQxMTNhYWE0NmMzY2VkZmRlNWE1N2RkNTIgZGVjaW1hbC1icmFuY2gKKzU3Nzk2IGVlZTViZGQzNzE1ODc4NDA5MmU0YzJlN2YyZjM4MDk2MzQ2MmIwMTcgcHkzaworNTc3OTcgY2RiN2I5ZjgyY2M0NTYwODdmODFjNTk0YTgwNDZiZWNhNjYxODkyMiBweTNrCis1Nzc5OCA3YjAyMzdjYmQwZWQxMTk0NjQwZjhlMGY4MTUzOTQwN2E1YTZhZmVjIHB5M2sKKzU3Nzk5IDkwYzcxNWJjN2QzMDVkYTNkMTczNzNhNjdmOTU0ZjdhN2ZlOTk3MWYgcHkzaworNTc4MDAgN2VjMDRjYjI2MmQyMWUyNGRlNDNiZTg0ZGNhNGQyMDJkODAwODFiMyBweTNrCis1NzgwMSA4NDU0YTJiZmFlMDQ0NTZmMGY0NTBiOWUwYWUzMzIwNzE2ZjY5MjAxIHB5M2sKKzU3ODAyIDk1ZDZmZTJlOGUwZTkxZjFjOTM2YTNkYmYzMDlhODQ2M2E5ZWYyNjkgcHkzaworNTc4MDMgMGNmNzAwNDY0MTc3NmQ3MjM3ZGY0MTQxYjE0NmQ2NGY4ZmNhYTFkZSBweTNrCis1NzgwNCA3ZWExMzY3YmEyNzU4OGI0MmJkZWNlMDdjNGU3ZmQ2MDcwZjZiNjNkIHB5M2sKKzU3ODA1IDg4YWFhMzgwZjA5MTdjMjcwMDc0ZDBhYjhlMmU3OWI4N2U1MDk2N2IgcHkzaworNTc4MDYgMTRlZTY3MDU1N2NmMDAwODAxNTUwYzE3NmFmNDQwZjFmNTBhZTk5YyBweTNrCis1NzgwNyBmZWMyYzAyOTlhOGNiYWQyMWIyZGVmOTNmYTg2MWI4NzlmZTdmNDkxIHB5M2sKKzU3ODA4IDg4MzRlNjU2ODNlN2I0MTI4N2Q2ZDc4NGZiYmNiOGI0NDJlYmMwNDMgcHkzaworNTc4MDkgMzQyNDgwMzMzN2EzNzBkNjk5Y2YyMTZiZmNiY2RiMTM5ZTJjYTUxMiBweTNrCis1NzgxMCA4NWE2Nzg1Nzk5ODMxNDE4YjZiZmJiNzM3ODEwOTFlZGY2ZmVhODIwIHB5M2sKKzU3ODExIDcyNzUzOTg2NWYwNDY1Y2NiOTg1NTgwOTgxOGI2NmQ3YWFiNDkxNmQgcHkzaworNTc4MTIgZWE4YjhlM2Q4YzkzMjg3ZTEwNTJlYjk0YjY0MzQ4MDJiNDE0M2FlNCBweTNrCis1NzgxMyAzNDQ5MWRjMTQzZTdjZDg0NmNiM2Q3ZDAzZThjYWE1ZTE2MDBlZGMwIHB5M2sKKzU3ODE0IGUxNDA1NWU4MmRiOTkxZWI3NTc2OWFkYjUwMDkxZWZjZmRhZGI0ODYgcHkzaworNTc4MTUgMjIxZmZhZGMxYTRjMjY5NTAwODk2YTE2ZWEzMmI3ZDMzYjFhZGI4NiBweTNrCis1NzgxNiBjOTJkNDI2ZWVlNzUxYjQxZGQxZDE4YjU5ZmE3OTlmMmMxMWQ0YzE4IHB5M2sKKzU3ODE3IDQ3MjkwY2FmN2U4ZTgzZDE4N2IxNGE1YTdhNGFkNTYwOThhMWY3YzcgcHkzaworNTc4MTggZDE1ZDljNmJlZGE3YTEwNGE0NmVhZWUxOWIzOTBjNTJlMjVhMjVmYSBweTNrCis1NzgyMCA1ZmE1YjIxMzNmZWJkOGE0NzU4ZGVlNGRkYTEwYjg1MDhmMDQzNjRjIGxlZ2FjeS10cnVuaworNTc4MjIgYmMxOGFjZjhiNjE4MmRhMTk4OTkyZGUzYzY5NDQ5Mzk2MTMwMTI2NiBweTNrCis1NzgyMyA0MzA3N2MyNzlkMTdjODY2ZTNkOWU2NWE5MjQ0YWJlOTI0YzNjNGRkIHB5M2sKKzU3ODI0IGQ2N2I5NGY0OWRmY2NjZjAzYTU4OGEzMWJiNjEwNWMzN2QxYTRkM2MgcHkzaworNTc4MjcgOTk4ZDc1N2YzZmIwYWU4YjUyMTdjY2NiMzIwMDRkMWU1MzMyZmQ0ZCBsZWdhY3ktdHJ1bmsKKzU3ODI4IDk1OGM0Y2M1OTkzZTFlNmExMDRkMTdmODAyMGM4ZjYyN2I2OWY1NWEgcHkzaworNTc4MjkgYTEyYTAyYjlmNjQ5ZGFjYzc5NmEzNDcxODk5Y2U0YjQ3MjQ3ZjYwYiBweTNrCis1NzgzMCAxMTI2ZTdlODVmMTgwNDU4ODZhMTU5YzA4ZDBjM2VkNWJjZWIwOTZmIHB5M2sKKzU3ODMxIGI1ZjA2ZTU3YTI0ZjQ5ODViZWFkMjI2ODcyNjkzYzIxZTNhNmIxM2YgcHkzaworNTc4MzIgZjdmOTQ0Mzc0NDM4YzAzYzM3NjgzZmQ2MmM3M2JmYjFjYzlhMTNkNCByZWxlYXNlMjUtbWFpbnQKKzU3ODMzIDcxMTI1MjQwMmIyZjU2NzNhNmYzN2FhOTA1Zjc1ZTI2YzZlMmIyZmUgbGVnYWN5LXRydW5rCis1NzgzNCA3NzAwMGYyNjQxZWU5MTY5N2EyMjE1Y2QzNmJjMmNmMDc1YzljYWZkIHB5M2sKKzU3ODM1IDVjMzBmMTVhNmI4Nzk5N2JiOTM1NDI5NWQ2N2VhOTc1YzkwMTllODQgcHkzaworNTc4MzYgMjM2MWFhZWFmY2JjYzg1OWU2Y2U1ZDIxNDQ5NDJkMzViMzQ3YjRjZiBweTNrCis1NzgzNyAwODJjZWYzYmUyOWIzMzlmM2E1NWRhYjcxYmRiZGE2OTUxZjA2YmIxIHB5M2sKKzU3ODM4IDA2ZGM0MzIxYTU2YTBiMzk5ZTEzMDcyNzk5OGI5YjI2NGM2YmQ0MDYgcHkzaworNTc4MzkgYTdkNTQ0MDM1M2MzNWQ0MzlmOGMzYzA4MmQyNWY3YmJlZDlkZjk5YiBweTNrCis1Nzg0MCBmZmIxMDBiZTAzMTBkYTU4NGY2OGY3NjNkNDAyMGFmYWZlMGM5ZTgxIHB5M2sKKzU3ODQxIDFiYjYzYTMyYTZjOGQ5MWFmOTY2ZWEyYzkzNTlkZTViNWQ1YWUxNzYgcHkzaworNTc4NDIgNDIzMTRkN2Q2MDgzZDRmZWFmMzAzMWI5YjgzMWEyODYwMTZjYTVhYSBweTNrCis1Nzg0MyBhNmYzYmMyMTZjMzcwYmM2OGFlODMwZjg0YzAwYzE4YzIxZjNmZWYwIHB5M2sKKzU3ODQ0IGI1ZTBmNzcyMTAxNGE2YzRlMTlkNGIxMmZlMjllNjViOTg4OTQxNmQgcHkzaworNTc4NDQgY2QzZjc4M2NkMDhhMTY3ODFlMjM2YzBiOWNiNTcxN2QxZDk5NWZhOSBweTNrCis1Nzg0NiAzMzVlZjg2YThjNWNhYzk4Yzg4MTk1MjJlYmUxMmUwNjQzZTE0NjFlIHB5M2sKKzU3ODQ3IDlmZjExMjZmMDk2YzJhNzU4Mjc5ZTNmZTZhYmY2MWU1YjRjMzBkODkgcHkzaworNTc4NTAgOGMxYzJkNWJlZDMyMjZmNWQwMzVhZDdjMmI2MzNmMWJiNzUxMTMyNyBweTNrCis1Nzg1MSAxZDBmNGIzZWVmYWIzNzcyYzQwMDM2MmE2NzdkYmVhMTE5OWJkOWRjIHB5M2sKKzU3ODUyIDIwYWJkYjkxNmNlMzIzZTE5NTNkYmVhY2FlOTBjYzlhZmNkNzQ5NWMgcHkzaworNTc4NTMgMjc1Zjg5NGRiZjEyMWM0MDQ5NjBhMzA4M2YzNGI5ZGQ1ZjUwOWVkZiBweTNrCis1Nzg1NCA5Y2ZhZDlhNWM4M2IzODBlMmRjZTg0ZWU0ZTdlYjRlMjVlNmM2NzIxIGxlZ2FjeS10cnVuaworNTc4NTUgOWFmOWM4YTcxYmZlODNkMmZhODg5NTFkM2I0N2ExMTBiYTRkNDAzMCBsZWdhY3ktdHJ1bmsKKzU3ODU2IDQ3Yzg4MGU0OGJmNmIyZTkyY2VkNGM3OThkYzhkODUzYWVmMDRhNzYgbGVnYWN5LXRydW5rCis1Nzg1NyBlOWI2NzM2YzE2MzIwODViNmQ2NmQxMzgyNzZmNDM2ZWRjYzUzMjQ2IHB5M2sKKzU3ODU4IDY2Yzc1MWU4MWM5MGU2ZDQ0OTY1YTMwYTk2ZmQ1NzRmZmU3MjJiMWIgcHkzaworNTc4NTkgNTFhZmMxZDU2NWY4MzJiZmQxZDNlZDhmMzJiZjhkNjVlYTM2NjIwNiBsZWdhY3ktdHJ1bmsKKzU3ODYwIGJkOTlmZWFmZjk5NThjYjYwYjEwYWZhNWJkMTcwMDRlNDdhYmZhOTMgcmVsZWFzZTI1LW1haW50Cis1Nzg2MSA2MjBkY2E2NzUxMzdhMTY0ZDBkNGE2MjVmNGEyMGY5ZDc2NWE5N2E4IHB5M2sKKzU3ODYyIGVlMWIzZWI3YTAxMzZkY2MxMjY5MzNiNWQ0ZTNjYTcyMmI5MmMzNzYgcHkzaworNTc4NjMgMGEwYjgyMjY1NzA2MjI4MmIzOGU3M2ZjNmIxMTY1ZjM4N2ZkMjYxNSBweTNrCis1Nzg2NSBiZWQwZjUwZWM3MGI3ZjllZjQ1YWU2OGY2ODExZjlhYzljYmUxM2Q4IGxlZ2FjeS10cnVuaworNTc4NjYgZDg0MjQ1N2U0YjBlMzlmYjJiMTMyZTE0ZjIyY2RlZGNhNDVmZTQwNiBweTNrCis1Nzg2NyBiZjNjOTQyMTNkNWQxZTI0MzU5MzdlMmM4NWVmOGE4ZDE0ODg1NzczIHB5M2sKKzU3ODY4IDU4M2U0MWQxMjk0YjRhNTNhMDIwZjdiYzdhMDFjZDc2NmNjNDIwOTUgcHkzaworNTc4NjkgZGEyODVkM2IwNjVhYzJhZDBhYjA5N2Y0ZWQ1YjgyNzZmNjZhODJjZSBweTNrCis1Nzg3MCA4MDhmMzJhMGQ5OWMyZTAyYzRjY2I3MzhhZWZlMzgzM2I4MWZhZTZiIHB5M2sKKzU3ODcxIGI3YmZhNzgwYTg4MjhlYzY2NWQyMDgzOTRkN2Y5NTQ0OGU2M2VjNjMgcHkzaworNTc4NzIgZjRkMmVkNTBkZTg1OWQ5MWQ5NDA0YzcyMmZhMzViMzJhY2JjOTVmZCBweTNrCis1Nzg3MyBjNGY2M2JiNGQzOGEyYzQzZjY2NTk2OWY3ZWE3OTY2ODkxYjRiNDBkIHB5M2sKKzU3ODc1IGFjYWNlOGViMGJkODI2ZDAzMGM5MGI1NzJlMjA0OTEzNzNkOTZiNmQgcHkzaworNTc4NzYgOWViYTY4OWVjZjI4N2RjNzczZTNmOTViOTU1ZGIxMjk0N2VjMDRmMSBsZWdhY3ktdHJ1bmsKKzU3ODc3IDMyMGM2YmVmOGQzMGMyOWE5NjlkZTQ5OTBmYjc0YzIxYzVkODY2NTkgcHkzaworNTc4NzggY2FmMGQ3ZTNiMjlhNWY2ZjhkYzdiZWUxNTBjMTZlODhmNTFmOGY3NCBsZWdhY3ktdHJ1bmsKKzU3ODc5IGFkM2Q1YWNhY2YwM2RlNzBiZjUzOGNlNGM4N2I5NmVlNzRhZjQ1MjkgbGVnYWN5LXRydW5rCis1Nzg4MCA5YjE4MzNmYzVjN2IyMDdiMmNjNjEwNDVlY2U2YWQ2NmM0ODRmYzFmIGxlZ2FjeS10cnVuaworNTc4ODEgY2UzYTA3MTM1MWZjY2Q1MGRhNzdlY2U5NjUzYTg5YzdhYzIwODQ0MyBweTNrCis1Nzg4MiAxNGU5Yjg3Yjc1M2IyNzliMzcyMjU5YmZiMjg3OWE1NTdjMTcxMjhlIHB5M2sKKzU3ODg2IDM4NmMyMmQ5M2FiNjViNjNiMDVjYWQ4OTM5NDAwMDU5ZjY3OTg3ZWIgcHkzaworNTc4ODcgZDQ0Mjk4NGYyOTBiOWMyNWUwZGUyODdjZDEzZTg5M2Y1MTRkMGY1NiBweTNrCis1Nzg4OCAzYWMyMzdiY2E1ZWU1Mzc5YzM1ZmViZjgxYTU0ZWM0ZGI0ZWQ1ZGI1IHB5M2sKKzU3ODg5IGQ4NjY3MmJkZTY0MDY1NjVhZGVlYzUzMGUxODBlNWY0YWQ2MzdjNWIgbGVnYWN5LXRydW5rCis1Nzg5MCBlYTE4NDUxMzY2MGI1ZDI4MTZhN2ZhNzgyZDVkMmMxYjQzZmE2NjFlIHB5M2sKKzU3ODkxIDI3OWI5NTZhM2E5NjM1ZGYxYjY0MWI4OTg2ZDg5MTk0MThmZmY4ZGIgcHkzaworNTc4OTIgMTQ3ODY4OGY0NTY1ODdhNTBlZGY1OTkxODQ3M2QxNTQ4ZTIzNWJlOCBsZWdhY3ktdHJ1bmsKKzU3ODk1IDM2ZjU2YTNlZjM2ZjgwOTAxYzA2NTBiYjM5ODgzYWY1MjZiNzc1MmIgbGVnYWN5LXRydW5rCis1Nzg5NiBiNzUxNmEzNDZmMGYzOTg4NDMxNGMzYjYwZDExNGQwMjY0ZDI3ZjBkIGxlZ2FjeS10cnVuaworNTc5MDMgMWIwZDE1NDQ0Y2E1ZDQyNmRmOGExMDFjYTRiOTEwYTYwM2ZjZmZjZCBweTNrCis1NzkwNCBjZTBjYjJkODY5MTk5ZGY4YjcyYjVkODkzNWY4ZjVjZjJiN2FlMGJkIGxlZ2FjeS10cnVuaworNTc5MDUgMWI1YjA1NDZhN2RkMmQ5Y2Q1YjFiMjhjNGM2YTBmOWZlNTYzYzk1OSByZWxlYXNlMjUtbWFpbnQKKzU3OTA2IDQ2M2IzNDFhOWQ2MzFlYzRkZjIzODQ4NzIzZjZmOGQxNWExY2EyZTggcHkzaworNTc5MjMgNDkwMjY3MWRkNjc4NTI3ODlhMGU2MWZkMjc0MGZmZGVkMWU1MjljNCBweTNrCis1NzkyNSA3YzZlN2QxOWZmNTNiYzRlZDgyNjg2NjFhYmJjNjEwNjJjMjJlMzdhIGxlZ2FjeS10cnVuaworNTc5MjYgYjVmNTM1Y2YxMzVmYzlkYzQyMGVjOTEzNGZmOTE4YTkyMTliNmNlMCBweTNrCis1NzkyNyBiNTFhYzJkMmQ1MzhiZGEwZjZmNTdkZDFlZWEwM2M4OGNlNzAxMDIyIHB5M2sKKzU3OTI4IDU2NGFlNTZiZDJkYTYxYzhmMjQ1ZTM5OTlhMGZiYzU5MTc0OGJkMjcgcHkzaworNTc5MjkgZjRmYjc0ZjYzODA2N2YzZDBjNDkxMzdjM2Y2NGQzMjQ0MTQ0NDYzZCBweTNrCis1NzkzMSBkZDBjNjUzYmEyOWYyMzA4ZjI2MmM2OGY2MzU4Zjk3OWY4NDMyMzMzIHB5M2sKKzU3OTMyIDU3OGIxNzQ2MWY2YjZiOWFiYTE3YjAzZGM5MjE4NTRmZmNjMWIzN2UgcHkzaworNTc5MzMgMTE5OTNiY2IwYmEzZDFkOWE0NmJhOTM5MzQ5NmEwMzM5ZmJkZTM4MSBweTNrCis1NzkzNCA0MzU5Nzc3OGVmMmNiYzUxMzM0ZGExYjliMmY1N2RiZDk4MGNhMTg4IGRlY2ltYWwtYnJhbmNoCis1NzkzNSA3ZWI5NTQzNTFhNGZkN2RkNDc3ZjBiNTA2ZmM0Y2NmMjZlZTlmZTNlIHJlbGVhc2UyNS1tYWludAorNTc5MzYgYzQ4Y2Q2ZTA2YWNhNTM5ZDA1MjkwNzY3NjA0NTM4YmMwZmNhMGY3YiBsZWdhY3ktdHJ1bmsKKzU3OTM4IGE5ZmI2NWM4ZWFjYjM4MWVlMjQ4YzE1NTNiOTNjNTBlZjdiZGViZjQgcHkzaworNTc5MzkgNDhlZTYzOWE3NWRkNzJmZWRhZDE5NGFiNDNlZTU4MDZhZDcwZDVmYiBweTNrCis1Nzk0MCBlMjUzYjIwNDUyNTA2OWZlZWM0ZmMzYjIxYmEwNjY0MmY2ZmY3Yjc5IHB5M2sKKzU3OTQxIDNjYmI0ZjkyMjBmNDE5MjViMTA4ZmZiN2FhYTMyNGNkN2E2YTVlN2EgcHkzaworNTc5NDcgYTMxMWFiMmZjMWE3MDA1MTUwYTRiZmY0NTFhY2QwMDdjODFjZTNjZCBweTNrCis1Nzk0OCAzNDM2ZGFmNDU1MTZhZTc4YzhiMjJmZjM1MDUwZDdhYjQ1ZTI3OTllIHB5M2sKKzU3OTQ5IDQyOGQ5MjE4MDRmYTQzY2Q4ZTYxYzRjNDE4YjhmMzI2NmU4ODE0ZDYgcHkzaworNTc5NTAgNjU1MDcxYmY2YzQ1YzZkODY1YjQ0M2Q0YTVjOWQxMTM1NjJhMWMyZCBweTNrCis1Nzk1MSBhMWNjOWI1ODllMjIyZWYyOTljMTVmNzYzMTg2MDU5OTU0ZjJhNTU5IHB5M2sKKzU3OTUyIGJiZDRkMjk2Zjc0YWNlOGYyOGUyYjY5NGY0YWQ4ZmJmODYyMTQ1ODYgcHkzaworNTc5NTMgOTc4YzQyYjUzOGQxYzliNGU5Mjg3YzdlMWM3MWVjYjEyYjhkNzlhZCBweTNrCis1Nzk1NCAyMDUyZjU0Y2VkNDk2NjBiMjg5ZjRjMjkxODhmZThlNDJlNzY0YjI1IGxlZ2FjeS10cnVuaworNTc5NTYgMDI5NGJiMmU5NWRlMzI5YmY1OTA3OWQ2MjZiMmJlYmY2M2VhNjNkZCBweTNrCis1Nzk1NyAzOGYzZjllZjE5M2QyYWE0NDkzYzI4MWNjNGMxY2IyNDM3M2I1MzI2IHB5M2sKKzU3OTU4IDQ3ZDkyZGI3Y2QxMDIyMmNkN2ZiMTI2Nzc4YmU5MTJiMzc3NzNkNzcgbGVnYWN5LXRydW5rCis1Nzk1OSBjOWFjNWI4ZTRhODE2OTVlZGZjMWFjOGU0MjA4MzUxODI5MjkzMjM4IHB5M2sKKzU3OTYwIDFhMGM3MzU4MDY2NWVmNmQ0MTViYTM2NmM5YjUyYzUzY2ViNjkwZWIgbGVnYWN5LXRydW5rCis1Nzk2MSA2YTA0OGZmMzA0ODg4NzhhMmZkMjM4ZDJkOTJlMjRlMDYyZWQwNWE2IGxlZ2FjeS10cnVuaworNTc5NjIgNDI1MTI3YzFkMTEzYzRmYWFhZjNhYjNiZWYwMDllMTJiODc5NDk5MiByZWxlYXNlMjUtbWFpbnQKKzU3OTYzIDhlNzBmZDZhN2RjYjA5NTIzZWYwNGVmNGYxZTU2NWQ5NjVjZDM5N2UgcHkzaworNTc5NjYgMDgxZTM2MjMyNWRhNjhlM2IzNzcxM2NlMjU0MGY4OGNjMjQyZDQxMyBweTNrCis1Nzk2OCAzNGJjNjM4YWM3MDc2ZWMxNWJhMTczZmZmNWU1ZTk1Nzg2MjllMDAxIHB5M2sKKzU3OTY5IDQ5ZDZmYTk4ZGM3ODE3ZjUxMDVjMDc5ZWVlNDRkNTZlN2ZkYWMzODEgcHkzaworNTc5NzAgNzkwNGZiYWZhYjNkZTUwODY1NGZmOTExY2IwMzk0NzdlMzlhMmEyMSBweTNrCis1Nzk3MSAzNDg0MzUwYTRmNjlkZjM3NjQyMjY0ZDJiMmNiMThkYmJkZGY1YTQ1IHB5M2sKKzU3OTcyIDgwZmZjYzE2MWIzMGM4ZjY4YjI4OTk4ZjViZjVjOWJhYzk4Y2RiNTYgbGVnYWN5LXRydW5rCis1Nzk3MyA1M2I4ZmMwNzkwNzdmNDhiZWFiMWI4YzJjZmNjMGYzNTkzNTk4ZmI0IGxlZ2FjeS10cnVuaworNTc5NzQgYzZiMTEyM2UwZTZjYTRiZTFkMDUyMGYwMjYyMGIxOTRmMDRlNjFiNyBweTNrCis1Nzk3NSAyOTRlMzU0NTJkMjU3OTg1MjhlNGI0YmE1NjYyYzkxNThjM2JlN2M2IGxlZ2FjeS10cnVuaworNTc5NzYgZTk0NjA3M2RlZTM4YjA2NWQ2YWRlNzA2MGMxMDYzMjQyODhjYjcxZiBweTNrCis1Nzk3NyBlNmRlOWFkZDdjMDc1YmM5NzBmYzVhMmRmNDJhYjZmNDQzZmRmYzFkIHJlbGVhc2UyNS1tYWludAorNTc5ODAgZTJiNGZjOTYwODMwZmMyMmJlMWY3YTg0NTczOWRkYzA0Mjk0ZTM4OSBsZWdhY3ktdHJ1bmsKKzU3OTgyIDc5MDgwYzQ4ODliYzI3ZTk1ZDhjYzliMjFhNzZhYmRiZThmMjgzZTUgcHkzaworNTc5ODMgY2M0NDQyNzU0NTEwNWUzMjNhMTE3MzJhODVlYTk3Yjg4N2RmZTI4OCBweTNrCis1Nzk4NCBkMzEwNDdhMWNlMTk3Njg0ZjJmNTUyOTZjODk3MTVlZTJiZjIwMmJlIHJlbGVhc2UyNS1tYWludAorNTc5ODUgNDUzMTIyMGU1MGJhOGMxNGZiMTdhYTAzMzNiYjk2YmYyZTcxMTk0YyBsZWdhY3ktdHJ1bmsKKzU3OTg2IDVmZDA0NTFlNzQwNjA5ZmM2YTlmYmE5NzBlNTdjNTkxZTRhYjJiYmUgcmVsZWFzZTI1LW1haW50Cis1Nzk4NyA3ZmI5Y2Q5MWU2NDg2MWQzZGU4OTM1ZTZhM2RkNDY4OGIyY2M3ODNlIGxlZ2FjeS10cnVuaworNTc5ODggNzFjM2U1YjY5ZTE0ZTcxZGUzMzQ1ZDU1NTAzNzg5NzM4OGEzNGYzZSBweTNrCis1Nzk5MCAzYzJhNGY2YWNjZDU2YWRkNDM5ZmU2YWM1NjQ1ZDRkZWRiMGJkYzliIHJlbGVhc2UyNS1tYWludAorNTc5OTEgNThhZjY2NzUwMTk4NjJkYWI0NDlhYjY0NTlmOGY1YTg5Y2JlOWQ5NyBsZWdhY3ktdHJ1bmsKKzU3OTkyIDA4ZTEwNTU0ZTQzMDM4MDcwMzZhOTE4NDkzNTk4NTllMGYzN2JhMzcgcHkzaworNTc5OTMgOTFjOTkwMTFkMDY5NDRhNjE3MDE4M2VhYmM4ZmRhZjJkMDQ2OGNhOCBsZWdhY3ktdHJ1bmsKKzU3OTk1IDcyYTk2ZTZhN2MyZmJjNWJiOGRlMTg0YWRlZWFiMGM2MDFkYTNiYzggcHkzaworNTc5OTcgODg1ODEzY2NiZjQ1NGNjMGQ5M2Y1OTY2ZTA0ZjIxNWIwN2Q2ZGMyYSBweTNrCis1Nzk5OCBhNGJkOGE0ODA1YTgwMjQ3NzE2ZjE4MWJmOGVmN2E1ZWFiYjBjMmYwIHB5M2sKKzU4MDA0IDBhMzFkMWM0NWE4OTJiYTlkMGRkM2Q1MzFlZmQ3MTdjNzQ5ZjEzYWIgbGVnYWN5LXRydW5rCis1ODAwNSA4ODdlMWZlYWJkYmRlNmFjOWExNmE1MDI4MTcwNjhlYjBlMTIwZThmIHJlbGVhc2UyNS1tYWludAorNTgwMDYgZmRjNjc1Y2I1ZThhZWMwMzc4Nzc4YWQ5NDRmYTM5NjBmZGY3ZWU2MSBsZWdhY3ktdHJ1bmsKKzU4MDA3IGJlOGY3ZDNjZDdjYzEzYjJmNmRmNmQxOWRkZjc4Y2ZmNzUwY2MyZmEgcHkzaworNTgwMDggZmNiMDJjYjk2Y2EyMDFjMTcyNTU3MzExYjczNTUwMzhlYzhhMDI3ZSBweTNrCis1ODAxMSBiNGEyZjEwYjM5ZDIwZjEyMjI1NTdiNzE4MWMwZmM2MTU1Mjk3MDg0IHB5M2sKKzU4MDEyIDc5ZGRhNTY4ZjQyNWEzOTA5ODRhYzI5ZTJmMTQwZTNhNjA2ODNlZDcgcHkzaworNTgwMTMgYWMzZmMyYWU0YWJjZmYwZGUxZDIyMDdiYmUwYzc3Y2VlNzBmNDhmNCBsZWdhY3ktdHJ1bmsKKzU4MDE2IGM3NmFjYTRlMTAwZGUxMTYyZjQyN2ZkNzFjMTY1NDljNzRlY2U2NDYgcHkzaworNTgwMTcgN2MyZjVjNjJmOGNhMGQ5MzczM2Y2NTAyNzgzNzk3NDllMDVkYzgwMSBweTNrCis1ODAxOCBlZGZiY2YxZmY3MzQwNzUxMGU2ZmQ2MzdkNTAyNmI5ZmFjOTc2NGE3IGJjYW5ub24tb2JqY2FwCis1ODAxOSBjOWM2MTY1ZjdjMGQxZTA0Y2M2Yjc0OGQ1YzJjNDM1ODU4Y2U4NmE3IGJjYW5ub24tb2JqY2FwCis1ODAyMCBlN2ZkMWZkOTFjNTNmYWI2ZGE4NTRkMjhkZTZjODA1NDM5MTQ2ZmRiIHJlbGVhc2UyNS1tYWludAorNTgwMjEgMmRiYTVhYzhjZTE1OWYxZTA3YmEyYTQzNjgxYTA1ZTUzNGZhMTAwMyBsZWdhY3ktdHJ1bmsKKzU4MDIyIGJhMDhmN2YzNmU4ZWQ0YzA3Zjc0MzRiYzEwZWI3OTYyNWM1NzY0MTkgbGVnYWN5LXRydW5rCis1ODAyMyA1NTY1NjlhYjNmOWRkODU1NTBkOGY3MTYzMWFiYzFhOTI0ZjExOWUwIGxlZ2FjeS10cnVuaworNTgwMjQgMTZjYjg1ZmVmYzVkMDI1ZTMwNGU1MWMyZDQ0YmQ1YzUyODUwNzA3OSByZWxlYXNlMjUtbWFpbnQKKzU4MDI1IDFiYzRhOGQ1N2IzMTI5ODVmNGYyOWNkNTU3ZWQ3ZTIwNDdiYzFmMjggcHkzaworNTgwMjYgNzA1MjU5MzU3NGJmNDdiNDQzMzY3NzU5MDAyZmI1MDNhZTYyMDdmMiBweTNrCis1ODAzMSA1N2VhYmIwNTFjZmRjYWNlYzhmNzdhOGE1OWYxMTU1ODkwNmEzM2I3IGxlZ2FjeS10cnVuaworNTgwMzIgM2JjM2YxMmNhZTI4ZjAyYjM1NzJhYTJiZTdmY2IyNTAyNWVmMDdlNSBsZWdhY3ktdHJ1bmsKKzU4MDMzIDgwZDJkYWVjNjFjYzhjYWM1YWFjZDlkZDBmNTY4MjVlNDliMjU0NzcgcHkzaworNTgwMzQgMjg3MTZkZDE0YmM1ZmEyNzE0MmNhNTc5ZWNhZTdiNzhmMjlhZTY5OSBsZWdhY3ktdHJ1bmsKKzU4MDM1IDdkYWRkMjFmYTg3YzEyYjAyOWE5NTZkNjkwM2ViZjNhYWRlNGNjMDYgbGVnYWN5LXRydW5rCis1ODAzNiBmNjI4NTc1MzNjYmVhYTJiOTRhYWFiYjgwMzFiODY1ZGE4MGQ5ZmJjIGxlZ2FjeS10cnVuaworNTgwMzcgNGIyMTM0ZTQ3MzBjMjJkNWQxNzIxMmUzYTg1YzQ0ZWU3MDM1MjQwNiBsZWdhY3ktdHJ1bmsKKzU4MDM4IDA2ZjY2ODJiMjE2NmUzMDdjMmFhMWYyYTdiMTk4ZGU2NGI4ZThiOTEgcHkzaworNTgwMzkgZmM0NzBiYmU4ZDI0MmI4N2IyODBlNTgzNjIxZGE4YmEzNmRjMTI1MyBweTNrCis1ODA0MCAxZjllZWUwOGFiMzVlOTU3ZmY1NjVmZmE1MmJiMDI2ZjUyMTI5Yjg2IHB5M2sKKzU4MDQxIDc1NWZhNTE4N2QxYmMxMmU5ZDQwYjk1MzA5YzM2Y2M2MGM0MTU3NzQgcHkzaworNTgwNDIgODg1ZmIxN2M1ZTMxOTY4MjVmZmU0NzZmYWJjOTNmODZkNjJhM2FmYSBweTNrCis1ODA0MyBmYTU1ZDQyYzhkOWM4ZDJlNTdhNjcyNjZmYzdiODk1NTc4MDlhMmMwIGxlZ2FjeS10cnVuaworNTgwNDQgYjhhODIwNmMwODQ5MjUwNWYzZGQ4MzU4MTdkNDU0MTc5ODU0YTZmZCByZWxlYXNlMjUtbWFpbnQKKzU4MDQ1IGIzNjdkNmU0MjIzMTVhOTA0YmU0NWQ4NmY2NzdiMjVlYWQwZjA3NDMgZGVjaW1hbC1icmFuY2gKKzU4MDQ2IDFmNjIyNzM2NWMzNmRhYmFiYWExODE4YTYzYzZhZjA3MGU3YWY0YzQgZGVjaW1hbC1icmFuY2gKKzU4MDQ3IGU4NWZhYTAyMTkxYzQ3Yzk1MGMxOTcyYjMzN2UxN2Y4NzJlMzFhYjAgcHkzaworNTgwNDggMDg4MWFiYWI5MzczODQxZThkNjQ3ZjAwYWFhZmYwYWY5MGY5OTIyZiBkZWNpbWFsLWJyYW5jaAorNTgwNDkgZmZhMDc0N2E3Y2I3YTIwNjE0NzA4MzI0OGZkYjMyODA5NWVkZGZmNiBsZWdhY3ktdHJ1bmsKKzU4MDUzIDJhZTZkYjBiYzdlYmNiYmJjNzMxMmRiNmUwM2FhMGY1NTc2NDI1ZDcgcHkzaworNTgwNTQgODc2YjdlZjQ3NzVkOGZiYjllNGE1ZGEzZjQ0ZjA5YTgzMTg3OWM2YiBweTNrCis1ODA1OCBiYWViNjZjZTdiNTFkZGIzNjcyYzQ1NTZjNzMwNGZiZGEzNGRkNGNiIHB5M2sKKzU4MDU5IDc4ZjFjMzI5Yzk4MzcxM2E0MWYzMWE4NWE0MGU4ODM2ZmM0YzFmMjMgcHkzaworNTgwNjEgYTA5ZWEyY2ZlNzZhMzA1YjAzNzEyOWMxY2Q4MTQ5NWQxZjYzNzJlNiBsZWdhY3ktdHJ1bmsKKzU4MDYyIDc1Y2Q1NDg2MzI1MDlhMmVhY2E3ZjBjMzBmNzM4N2E2YjViM2RlYzcgcHkzaworNTgwNjMgNzZjMWNjNjcwYzYzM2VmZWQ5ODE3YWEwMzA5MmJiNjBlZTBmNzczYyBweTNrCis1ODA2NCBhMTFiNDg4NWI0NDVmMjc4MGNiODA2MzUwMmU2NWIyNGMxZTE1NzllIGxlZ2FjeS10cnVuaworNTgwNjcgZThhYTcyNGRhOTA1ODRkMzQyYmM4NzNiZmNlNTA1MjBmYTg0ZTI3ZSBsZWdhY3ktdHJ1bmsKKzU4MDY4IGIzNTVkMmRiYTliNmUyNWEzOWE3ZTJmOWY5NTJiMmVjN2E1NzY4NmQgcHkzaworNTgwNjkgODA3YWRjMDMwNjUzNTE1MWZjODFmMDM2MWU5Njg1Zjg4N2YyZmFhYyBweTNrCis1ODA3MCAzZDE0OTY0ODlmNTg1MWM2MGY1ZTU3MDllNTU3ZWE3NTZkODdiNzI5IHB5M2sKKzU4MDcxIDkxNzZhNTNiNGI2MjUwZWFjODUzNmQwY2YwYjE4YTFhZGY4ZTBjNDAgcHkzaworNTgwNzIgZjhhNWZiYTM1ZWIzNmFmMzRhOWIwMmZmMzhjYjI5MjljOGQzYjk5MCBweTNrCis1ODA3MyA3NWIyNjVjMDhjOTEwYmU1YTg1YmM0NDMwODVhMjEzMzhmNDQ2MTMwIHB5M2sKKzU4MDc0IDlmN2YzMTQ3MDMxYzI2ODZkYTI2Y2Q0MGExMjA5YWMwNzY2MjNmMDYgcHkzaworNTgwNzUgODc1MDUyYzJiN2IzNDZmY2RmYjNjNjQzZmQwZGFmN2E1MWRkMzI4NyBweTNrCis1ODA3NiBiMjdkMzQ5MTYyYmRlZWVkMTZkZGMzNmUwODMzY2ZmNWVjNTUyZGQ5IHB5M2sKKzU4MDc3IDA5Mjg3ZjIwNTVhYjVkOGRmMTY0ZWM3OTRjYjgzYWJiZGMzODgwMTggcHkzaworNTgwNzggODdkNDExZWJiYWUwZTI0MjdhOWFlY2FiYjU3ZGRiODI4ZjRhNzY2YyBweTNrCis1ODA3OSAwOTlhYjgyM2I4NGM0YTFlYTRhZTEwYTc1ZTMxNThiZDY3NzFlOGIwIHB5M2sKKzU4MDgwIGZhMDJjZDJjYzMzYjhiMzkzNThiZmU3YzA1MzZkNTA1M2Y2MDZkMDMgYWxleC1weTNrCis1ODA4MSBhN2RiOWViZWQyOGFkMTI5ZTBkN2IwZDJhNWY5ZDY5OTY2MDRkMjc3IGFsZXgtcHkzaworNTgwODIgZDlmYzkyOGRiMWZhZjU2NDRiNThmMDlkNTdkNDY1NjRiZjM4MTk2MyBhbGV4LXB5M2sKKzU4MDgzIGE2Njg5NzQxOWEzNGVmYTk3OGFjYWExYzNiZTNhZDJjZjhkMWE2MGQgYWxleC1weTNrCis1ODA4NCA1YTUxZDFiNjU2Mjk5NWRhMWUyYTE5YTgxZjljZWFiZWNiZWI4MTc5IGxlZ2FjeS10cnVuaworNTgwODUgZDE1NTJjMTUwZTkxNGQ3YmNhYzIwYjZkYWI0MmZmMjdhOGJmYzBiYyBweTNrCis1ODA4NiA2MGZiOTg2MTJhOWU3ZGFjZDYyYjQ1YzQ2MWM5NTg3NjQ5Y2Y5ZDAwIGxlZ2FjeS10cnVuaworNTgwODcgY2VhNmE4MGJmZmIyOWIwZjgzZjI4YmY1ZDQ2YzViM2Y3MjIwZDZjYSBsZWdhY3ktdHJ1bmsKKzU4MDg4IDM0YjUwMDAxZGQyYzM1NzcyNmI5ZDRkM2YwNTkzNjcyNDg5YmEyZjggbGVnYWN5LXRydW5rCis1ODA4OSA4NjJhZTQzY2ZiMmIyZTIxNmNlODBjNmFkYzk2ZTIxZGQ5MDAwYjE0IGxlZ2FjeS10cnVuaworNTgwOTAgNzhhN2I5OWQ5ZjQyYTBmYzMxM2JmNGFmYWI2MTgyZjM0YWI2NTkyMCBsZWdhY3ktdHJ1bmsKKzU4MDkxIGNlZDI0Y2NjNDlkZDZiYjM3ZTZjODBlZDQ1OTllNmYyOTNlYzdjNDcgbGVnYWN5LXRydW5rCis1ODA5MiBhYzE5OGZiZDM3MDA0ZmNhODE5NGM1NWUwMDY4ZTYzNzY0NjE4ZTcwIHB5M2sKKzU4MDkzIDI4MmUyZDBjMjkzNzFjMTEzNDEzYWE3MTdmYzBhYzk1MDFmNzFmZDggcHkzaworNTgwOTQgNWJmZmI2Yzc5YzA2MTEyNDBjYzZjZTM5ZmJhMjYxMTUyOGZiMjdmOSBweTNrCis1ODA5NSAyNmFlMjEwOTY5YzA1ZTdiZjU0YTE0MzM3YTE5MjQ3NDlhZmI2NzNkIHB5M2sKKzU4MDk2IDRhNmM3ODgyMjZmNWMyZmQ4MTExYTAzMzA3ZTM1Y2Q2N2RiNDhmNzIgbGVnYWN5LXRydW5rCis1ODA5NyAxOTMwMjBiZjUyZGMzNTZjOWY2OGJlNGJlNTY3M2U5YjdjMmUwNjY4IGxlZ2FjeS10cnVuaworNTgwOTggMWRhZDU4ZTAwYzNhNTBhZDdmOTY3M2UwNzE2MTRiYmQ0ZjAyM2I0MCBsZWdhY3ktdHJ1bmsKKzU4MDk5IDMzODE3ZGE1M2ZkNzQzYTk0ZTk2YTc2NTQ5ZmNlOGE2ZDgxYjRkYjUgbGVnYWN5LXRydW5rCis1ODEwMCAyMGE4MGI4M2E2YzUyNjk2ZmZkYTNmYWMzOTM5MDRlZDA0N2Q2ZDIzIGxlZ2FjeS10cnVuaworNTgxMDEgYjNhNGExNGQ4YWMzMTIzMTk1YjkwOTM3MTc3ZWNhMGIxYjY3YWNiMyBsZWdhY3ktdHJ1bmsKKzU4MTAyIGViZGYyYzA5YzE4OTkwODc0MmZhOTQ0NjYyZDc3MzQ0YTBlYTU5MGEgbGVnYWN5LXRydW5rCis1ODEwMyBiZmUxOGI5MDdkODczNWU1MWE5NzYzOWM4OWU0MGIzOTk0YTk2ZGRkIGxlZ2FjeS10cnVuaworNTgxMDUgMThkNWFhNTEzNWNhM2E1MzNkZGFiMDMzOGZkNDNiZmNmNjM4ZGI3ZiBweTNrCis1ODEwNiAzZmYyNDk4Y2Y1NDhhNzcxNzJhOWNjYzQ5ZjkxY2RlMGFlMDRkNDg2IGxlZ2FjeS10cnVuaworNTgxMDcgZTgyODc2YTYyMWI1ZjQzODIyNDBlYjcyNzAzZWNhYTg3ODY4NzMwMSBweTNrCis1ODEwOCBjNWI2YWU5NDQwYjVkZmY0MWQ1ZTJlYTE3NzRlODcwOTA4MTM1NGEyIGxlZ2FjeS10cnVuaworNTgxMDkgZWFkN2MzYzZiZTFiOWE4ZDkwOWFiYmI5MDc3YjcwOTkxOWU5YTQxMSByZWxlYXNlMjUtbWFpbnQKKzU4MTEwIDI3NGZlNGJiZTNlMDcwZDhjNDI2Mjc0NzYxNTY3MDNlMjlmYjI3MDQgZGVjaW1hbC1icmFuY2gKKzU4MTEyIDI1ZWE0ZTY2ZjlhMDA0ODBjNTFiNTM0N2FkNzBmODgxODBhMDRhNTUgbGVnYWN5LXRydW5rCis1ODExMyA2MzdiZmIwYzVkYWU4NWNmYjcwNGRmMWVmYTY3NDBkNDE5NGFlNGU4IHB5M2sKKzU4MTE0IGNhMDZjNGEzMDkxZWU3NGI1Y2EyMjg2MmFjOTNmM2RlOTQ0MTlkNWEgbGVnYWN5LXRydW5rCis1ODExNSA1NTUzZjhiNGRlYzBkZTA4MDc4NGNjMDI3ZDI4YzI0NDQyYTE0OWUwIGxlZ2FjeS10cnVuaworNTgxMTYgYjU3OTVkYTdkZDI2M2E1MTUxMjQyM2Q2ZGFmZjA4NzFhNDc1YjVhYSByZWxlYXNlMjUtbWFpbnQKKzU4MTE3IDA4NTg4ODc2ZTRhNzRjZjU4MTE1NjRlNWFmNmM0NGYwMjViNzJkYWEgbGVnYWN5LXRydW5rCis1ODExOCAyMDM5OGI1NTI2NmM5NmI1ZjFmYjE2N2ZhMzdhN2U5MDdhZTljODA4IHJlbGVhc2UyNS1tYWludAorNTgxMTkgODQwZmY1OGQxZTllZmE0OGYwMzM4N2Y0Njk3NDM3ODlhMjUxOGVmNSBsZWdhY3ktdHJ1bmsKKzU4MTIwIDc1NmE3YjdjZGM0ZTVhZDk5NjBiZmMxNGQ1MDRiY2NmOWUzNzhlYTMgcmVsZWFzZTI1LW1haW50Cis1ODEyMSA5MDA3MTU0YTdjNDkxNTc2ZjNhOGFkOGZiNGVmNmUyMzljY2EwMjVlIGxlZ2FjeS10cnVuaworNTgxMjIgMDZlZmU4MzU4MDRhMmQyYTZhNTQ2NTBkNWI5YjVjNDA2Yjg3ODkyYSBsZWdhY3ktdHJ1bmsKKzU4MTIzIGMzOGUzNTNlODc2MWU4NDAwNDZiNjQ3YzY3NmVkY2ZmNWFhN2EzYzUgcmVsZWFzZTI1LW1haW50Cis1ODEyNCAxZTNmNTdlNzNlMDRjM2FmMzZlNmI2ZWQwNmM0MmVhYTk5ODc4ZGY5IHB5M2sKKzU4MTI1IGEwZDIwMTJmZjRjMTViNWVjYzljYzE1YjBiOTRiZTYzNzQ1MzQ3OTcgbGVnYWN5LXRydW5rCis1ODEyNiA4NGRjODZmMjExOTY0YjczNzRlMTFjNzgxNWNmYWUwNTFlMTllMDdhIHB5M2sKKzU4MTI3IDVhYjVhNWM3MzY2OGZkYjliZTVkMmNlZDQyYjg3MjhmODZjZDUyYTQgcHkzaworNTgxMzEgOTQyZmExYzRhOWQwZWYwMTI2NmQ1Zjc2M2FhODRkZjVhNTA5MjU4MiBweTNrCis1ODEzMiBiZjJkOGI3OTQ5M2FhMjAxNzJjMmE0MGY2ODgzNTM1ZWNjYmFkMjZiIHB5M2sKKzU4MTMzIDcxMDdmMzljMmY2NmMyMGU0MzBiYTdhNTU4OTRiNGRhNGIwMGE1YzkgbGVnYWN5LXRydW5rCis1ODEzNCAzOWViY2YwYTk4YjRkMTM0N2U3N2Y2YmUyODliYzZkOTIwMDM0YWJkIGxlZ2FjeS10cnVuaworNTgxMzUgZTEwMDM3MWEzZjYyZGU1M2FlMmYwYTVjODI1NWIwZDYxYTdhNTA5MiBsZWdhY3ktdHJ1bmsKKzU4MTM2IDk0OWEzNWIyN2QyMDQyZGZiZGM5ZTBkNTAzNGJlMGIyYjQ2YWVmNmUgcHkzaworNTgxMzcgYjJkY2Q3NTdhNmEzNzVlY2ZlZTJhNjVlZjY2OWNmMGFjMGQ3MjljYSBkZWNpbWFsLWJyYW5jaAorNTgxMzggNTI3YzQ0ZWYyNmNjZDJlMzgzYjIxZWQzOTY5Yzc2MTc2ZmQ5MjBjZCBkZWNpbWFsLWJyYW5jaAorNTgxMzkgYzc5YTJmMGE3MDM0MmQ0NGMyZjg3N2NiN2VkZDBkOGVmNTJlYjQwNSBsZWdhY3ktdHJ1bmsKKzU4MTQwIGM2Nzg1MTEzMGZjNGM2ZTlhY2ZjODVkYTI3Y2JlMzQ5ZmI4YjJiOWIgZGVjaW1hbC1icmFuY2gKKzU4MTQxIGYxNGZiN2IwM2RjYTFlYjc2OTY1NjEyMTNiNTBmYmQwODYwNzUxYjcgZGVjaW1hbC1icmFuY2gKKzU4MTQyIDk4YmE1YzIyMTE5ODZjYzJhYjlmZjQ5ZjMwNjdkZDM3ZmM0ODJiYmYgZGVjaW1hbC1icmFuY2gKKzU4MTQzIDYzZjMxNTRjNzMxZDAyMmNiYjA5ODk5MzhlYzY2N2QxYzZjOGQzNzEgbGVnYWN5LXRydW5rCis1ODE0NCA2M2M5NTc2M2E0M2JlNGU5MTk0NGRhZjE5ZWEwZjAzOGU3NzVjYjY1IHJlbGVhc2UyNS1tYWludAorNTgxNDUgYzhjN2E5NDdhNjQxOTdiODZlZmU5NDQ1ZGQzZjg4NzA5M2VlYjlmNCBsZWdhY3ktdHJ1bmsKKzU4MTQ3IDJmOGIzZWE2MmEyZTFlYWNhYjRlZDkwMjM5ODc0MDg5YjEyOTQ5NDQgbGVnYWN5LXRydW5rCis1ODE0OCBkZjhkMzJkNWU0NDQxMGQ2NmExMmUyNDNmODZlMTY5YmZiYTA0NTliIGxlZ2FjeS10cnVuaworNTgxNDkgNjJjM2MxMDRjYTAxMjAzOWI2OWY3ZDk0MjViNTlmMTZhOWM3OWEwZCBsZWdhY3ktdHJ1bmsKKzU4MTUwIGViOThmMjIzZDZlYWVhZDQ1ZmIxODc1MzdiYmNjNzNjNDRjNmFiM2IgbGVnYWN5LXRydW5rCis1ODE1MSA4YjZkYzY2ZTBlYjU0ZWM3YWY2ZmVhMTQ2YjMxZWIzNTVkMzEwNWVjIHJlbGVhc2UyNS1tYWludAorNTgxNTIgZTBmNWFmMTRjOTg4M2NhNDAwNWZiY2MwMTMwNzIwNjhlZGU2YzBhNCByZWxlYXNlMjUtbWFpbnQKKzU4MTUzIGU1MWVkZGUyODA3ZjFlYTExZTFiNzM2OTBhYTdhNDdhZmM0N2VjNzAgcHkzaworNTgxNTQgMDVkN2MzZDBiNzdhMjI4YWVlNGI4MWUzZTYyMGQyY2RmODU0OTNjMyBsZWdhY3ktdHJ1bmsKKzU4MTU1IGZkZmY0OGY4N2YzNWU5MDc1NzhkZjBhZTc0YTlmMzVkMjc3ZDU1MmEgbGVnYWN5LXRydW5rCis1ODE1OCAxMzM5MWY5ZDIwZWE0OTkyNjJmY2NmNDU3YWU2OTFmZGI5NmI1NjBhIHJlbGVhc2UyNS1tYWludAorNTgxNTkgZTAwMjMzOTVlNTM5MzI4Yjk4MTkwZDE3N2JiZWJiZGVmN2U3ZDg3MSBsZWdhY3ktdHJ1bmsKKzU4MTYwIDczZjJjOWQxNmNmNGQ3NWM0Y2VhNGQ3ZjY2MmMxY2I5NWU1ODgxMWMgbGVnYWN5LXRydW5rCis1ODE2NCA5MDQxOTY1YTkyZjJlZjY2ZjA1ZWQwNTE4NzQ2YjU0ZTI1YWExMjQ0IGxlZ2FjeS10cnVuaworNTgxNzMgMWI2NmUyYTU3OTZmMThjOTQ3NWE2ZmM2YzQ4MDBkODJlMWVjNWExYyBsZWdhY3ktdHJ1bmsKKzU4MTc1IDJlN2RkMjAxZWExZDJjN2VhOWU4NjI4YTdiZTUxYTQ3NWNlYWRlMzUgbGVnYWN5LXRydW5rCis1ODE3NiA3NjMwMjQ4YjU5M2NkZmQyMDMwNzIwNzJjNzBlNTU5NWM1NTRlNjcxIGxlZ2FjeS10cnVuaworNTgxNzcgYWU5ODIyOTNjMWFlMDg5Y2I3ZjE2M2Q5MzNmMWM4YWQ2YjkxNjhkNiBsZWdhY3ktdHJ1bmsKKzU4MTc4IGUzMTM3OTVlYTE3NDJkZGZhZTFjNTZiYzZiZjgwMzE3OGEyZTUzNTAgcmVsZWFzZTI1LW1haW50Cis1ODE3OSA5Y2MxMzJjODQ2MWVjNjQ1NzFmNDIyNjc3NzkwMDY4NGE0OTlhYjA5IHJlbGVhc2UyNS1tYWludAorNTgxODAgZTAxZGQyYmYwOTlhNWFkYTBhNTcyMzEzYzgzMTVkMzc3MTE4ZWY0NiBsZWdhY3ktdHJ1bmsKKzU4MTgxIDg4OTBiZTkzODZiN2FjNDdhNjA4NzlkY2JmNWVlNjVkNzlhOThlZjMgbGVnYWN5LXRydW5rCis1ODE4MiA0ZTU3YzM2ZjZkMmUzNjYyMjgzMmU0M2ZmOTg4MjE4Njk1NTc3MjZiIHB5M2sKKzU4MTgzIDVkMzQyOGZmN2ZmYTE4MjNkYWYyMjI1MTBkOWZjMjJmOWNmMGE1NzcgbGVnYWN5LXRydW5rCis1ODE4NCAzNjMyMDNkNzVkNjlmM2RmODczNjk2YmUwNGIzNDA1ZGE4MDU4MGFhIHJlbGVhc2UyNS1tYWludAorNTgxODUgYzU0OTBhOWVhYWUyZjdlZmMzZWMzYjAzNDA1NzUzZDNlNTk2OTViMCBsZWdhY3ktdHJ1bmsKKzU4MTg2IDJmZGZmMGI1YmViNmFiN2M2ZjFjNzhjNTE3YzZlNDViNThhZDcxMjIgbGVnYWN5LXRydW5rCis1ODE4NyA0ZTU0M2ZhZTBkZWQ4OWY4YTIxMGM4NzRkYjliZTc1NzViZjlmYTQ1IHB5M2sKKzU4MTg4IDUzMzVmODlkZjA4MWJhZTQ4N2FkNDIxOGE2YTA2MGU5Y2FlZmZlMzUgcHkzay1pbXBvcnRsaWIKKzU4MTg5IGUzOTVhNjM2ZWU0YTdjZWU2M2VlNzhmOTFjMTQ5NmNiNzIxYjNiZWYgcHkzay1pbXBvcnRsaWIKKzU4MTkwIDY0MWQ0Y2FjOTc1NmQ4YTcxNzNjYWQ5N2NlZDUwN2VhOTFmYzljMWEgcHkzay1pbXBvcnRsaWIKKzU4MTkxIGMxYmNiNjMzOTM1Nzc0YTA5OGZjZTVhYzU1YWU3MGUyMjExMTIwNGUgcHkzay1pbXBvcnRsaWIKKzU4MTkyIDU5NzVhNzMxNmMwNjUzMjJlODllNWMxYzFjNzQ3M2MzODhjOGZlYzggbGVnYWN5LXRydW5rCis1ODE5MyBiOTIzNmE3NWE2ZTVhZWQ0YTk5N2MwYzE3YmNiMmNhNjdmNWUwOTIwIGxlZ2FjeS10cnVuaworNTgxOTQgZWYyMjM1NDZiNGJkNmRlMzM4OGNkY2U2MTM4YTRhNjhjODUyNWZkOCBweTNrCis1ODE5NSA2YTBlYTA2NWE5OWEyZjk4ZTgxMjBlNDFjYWEyOTZiMDBjZTY3ZTcxIHB5M2sKKzU4MTk2IGYxOTI0NDJmNDRkODFkOGE0YzJmMTY3MTliZWJlNjNlMzRlMzNlMmUgcHkzaworNTgxOTcgYjI5NTgyYmRjOTNjZDZjY2JhZWFmMTQ2ZGRkZGM2NzI4MWQ5NzdmYyBsZWdhY3ktdHJ1bmsKKzU4MTk4IDdkZGQ0MDUwM2UxYTFkMDAyNjkyOTZhNGU1YzBmZmNjMjNlNTdjYTEgbGVnYWN5LXRydW5rCis1ODE5OSA3NWU2YmZhMmQ0ZDIyMGU3YzFhYmU2YmNlY2IyNWE5OGJkNmEzMjhiIGxlZ2FjeS10cnVuaworNTgyMDAgM2VkMmY3NzE2M2ZjMzBmOGY5MjdiZWY0ZmNlZTlmNzBhMWUwNzNiYiByZWxlYXNlMjUtbWFpbnQKKzU4MjAxIGYyZWY4YWUwYmMxODc1Mjk1NTQ3MmU4MGZmZmQ4NjNmYjgwMGJkMTMgcHkzaworNTgyMDIgMWJhYzM4NmMxN2NjNjliOTlkMzMxNWI5ZmFhMTUwNTI2YzlmZjYxNyBweTNrCis1ODIwMyBlYjM5NmRlODJjMDMwZmM3MGFmYmUxYzQ3NjYyMWIwZTdlNDFhODBkIHB5M2sKKzU4MjA0IDhlMTNkM2VhY2FjY2I0YmU3Y2JhZjZlYWM3N2EzMTA5NWJlY2VkMzYgbGVnYWN5LXRydW5rCis1ODIwNSA2OTI0OTM3NzFhZTMyMmM1ZDY4ODA2NTg3NTU2NTJiMTE4M2M0OGI0IHJlbGVhc2UyNS1tYWludAorNTgyMDYgZDFmYTgyMGIyZGNhMGQxZWFkNzc1NzEzZGMzZDAyOWRhNGE1NzQ0MyBsZWdhY3ktdHJ1bmsKKzU4MjA3IGMxOWVjOTUxNWEzMzY3NjI1YmE0NjM4MDdhZmIyMGM1YTllNDgyZjggbGVnYWN5LXRydW5rCis1ODIwOCAzNTdmNTQwMTVhMmQzYmExMGNkZjEzMWM4MzQzNmNhM2I0ZTIyZjVjIGxlZ2FjeS10cnVuaworNTgyMDkgNDRhYTRmZmRjMWFjOTZmODgxYjYyNzNkMjM0OGIwZjZjNjczOTMzMSBsZWdhY3ktdHJ1bmsKKzU4MjEwIDgxNDc4NDY1ZmVmM2IxNDczODQ1OWZiN2Y4NTMzMWU1ZWRhZmNiNDUgbGVnYWN5LXRydW5rCis1ODIxMSAzNTdjZjA3YTIzZmUzNjZiZjZhYjZkZWJiNTYxM2I5NzA0ODhmZDNiIGxlZ2FjeS10cnVuaworNTgyMTMgYjA2YjE5MWI3Y2ZhMGI4N2FlZWZlOGNmZDQzMmUzYzc1ZTUyYTM3YSBweTNrCis1ODIxNCBhNWQzN2NkY2QzMTYxNzNhMTM1ZDNjN2I4ZWM3MzIyZGZlMTZiNTJlIHB5M2sKKzU4MjE1IDUyMWJmODdjZWJiZDllMDhhZmRjYzE3YzRlZmUwMzg1YjkwOGNlY2UgcHkzay1pbXBvcnRsaWIKKzU4MjE2IGVmMTcyMTgzNjE3ODJhMDgxODc0ZmQyOTkyNTk5NjE0MzYwZTdmNjkgbGVnYWN5LXRydW5rCis1ODIxNyA0MDkwOTFiMjhjN2U5ZDY4MzQ2YjQyY2QxODg1YTRmZTliNWMwODg2IGxlZ2FjeS10cnVuaworNTgyMTggN2QxNGEzMTg4ODUwMWRjMWQ5MDE4NzkzNTY2NDBlYTg1ZTMyZWY2ZiBsZWdhY3ktdHJ1bmsKKzU4MjE5IGUxYzA5ZmE2ZmMwZjVkMjZmZTMyYjI5OTA4OWI5OWQ3NmU1Mzc1ZGEgbGVnYWN5LXRydW5rCis1ODIyMCBkYzM5ZGRkZWEzMzAwNDVlOTQ1NDY2MzFjOTFiNjdkN2JmYjc2OThlIGxlZ2FjeS10cnVuaworNTgyMjEgNDZjNDY3ZGVlNjU5MzhlNzNlOWI0M2EyZDczNzRhMTk1ZjJmMGQzMyBsZWdhY3ktdHJ1bmsKKzU4MjIyIDBjOGZlYzc2MTExYzdmYWVjNjIxY2E4OWM0ZWU5OTYwOGU0MjQ3MDcgcHkzaworNTgyMjMgZGE5NTE5Nzk3YzYxMDU4YTE5YWEwZWMyOWU0ODc5OTc1MWU2YmJkYSBweTNrLWltcG9ydGxpYgorNTgyMjQgMTgzN2NhZTkwZTUyZTU1MGZiYWM0ZTU1NjQ3MWVhZWYyMWZjNzQ5NiBweTNrLWltcG9ydGxpYgorNTgyMjUgZWM4NDZlYmFiMmVmYTBjNTc1MTYxYzEwZGFmNGM4ZDdmMDg5Yjg3YiBsZWdhY3ktdHJ1bmsKKzU4MjI2IDBmZjQxYjE2M2Y1YmExZjVkMjg5OTkyZDZhYTE0NGNlYTVmNWI2Y2UgcHkzaworNTgyMjcgZjMxZDQxNTU1NGNkYmZjNWI1NDlkZDM3NmUyYWZkZGExOTA2YmNlZCBweTNrCis1ODIyOCBmNmNiYWI3NTkyOGY2ODY0OWM0NTZjMDlkMTYyZWI5N2YwZDViZTQzIHB5M2staW1wb3J0bGliCis1ODIzMCA3M2QyNmNkOGUwYjU2NGYxMDgzMmI3YmVmYjU5OTJhZDMwMjY4NDIyIHB5M2staW1wb3J0bGliCis1ODIzMiBmYzAzMzZmNDQ3YWVhZjBiNWZmM2VkNjQ0ZWFiYTQyZjE1MGVhMzI4IGxlZ2FjeS10cnVuaworNTgyMzMgMzdmZmJiN2ExOTYyOTMwZjcyYTVkNGIwZjk1ZTIwZWYyMmRhNmNiNSBweTNrLWltcG9ydGxpYgorNTgyMzYgMDQ3NmEyY2M1NjU4NzQ0M2NmNDZmZGViY2Y4ODUxMTA2MTFjODhmZiBweTNrCis1ODIzOCBjZWYyZWQ4MjkyYjZjZmRiYjg1NDYxMjk4NWEyYTZlOTU3MzA0NTMwIHB5M2sKKzU4MjM5IDVmNzMzOGE0ZDFkZGRkMjYxODFmNjBhZGFhYWQ0OTZjNzAxYmY4NzQgcHkzaworNTgyNDAgNTVhNjYzMTZjODllZDJjYjE2MTRjMjdhNTU2MGZiZDQ1YmRmMTQ2NiBweTNrCis1ODI0MSBhNGRlMzEyMjE1Nzg0N2YzMDhkYmQ2MmIzYTFiMDFmMzUxNGZjNTBhIHB5M2sKKzU4MjQyIGI0ZTY4OGZkNjYwMmE1NjkwMTUwM2UyNjQ2YTk3ZWQ3MmFkOTgxNjcgbGVnYWN5LXRydW5rCis1ODI0MyA5OGZmOWIyZmY3NTc2NTFkNWQyYTZmYjM2MzhlMTA1NWIwNjcyYzk3IHJlbGVhc2UyNS1tYWludAorNTgyNDQgYjkzZWQwNDNmMjcyMWI1YmNmY2UwZTAwMmZhODQ4ZjgxY2EzNmVlZSByZWxlYXNlMjUtbWFpbnQKKzU4MjQ1IGU5OGUxMWQ3NzY4YzY1YjY4MjE4MjcyZGRhZTNhM2Q1MTAxZWNhNDIgbGVnYWN5LXRydW5rCis1ODI0NiBiNzBlZGI1YTc2ODg0OTFjNzNmNTU4NTE1YmM1YTcyMjdmZmY4M2NmIHB5M2sKKzU4MjQ3IDc3M2U5NzZiYWIzYWZiNTE0OWQyNGEzZTFkMTRjZjEzMWNjNWVmNGUgbGVnYWN5LXRydW5rCis1ODI0OSAwYjYxNGZkMmRjMmFlMDU2YjZlMDkwMWE2OTcwODFmNjQ5YzAwY2UyIGxlZ2FjeS10cnVuaworNTgyNTAgOTQ2M2RkYTE5MTYwMTNhZjhkYzc1YWEyOGQ0NGVmNmNjZmQ4MDE5YSBsZWdhY3ktdHJ1bmsKKzU4MjUxIDUzZjdjOTJiNDAyNDc1NWY2MjBkOTM3MTIwMTkyMDc0ODdjYTg3ODMgbGVnYWN5LXRydW5rCis1ODI1MyAyZGMwZTZlM2FkMjAwZTZhYWVjM2NhOThmY2E0MDc0NDdhNzg2N2Q5IHB5M2sKKzU4MjU0IGY4MWUzOWM0MzczZGE1ODNkYzQ1MzM4YzUzYTUxYjliODg4YmE4MWQgcHkzaworNTgyNTUgNzliMGRiMDM1NmQzMWM5YTY0YTVkODhjYWE0YWI1M2M0MzljZjU4ZSBweTNrCis1ODI1NiA4ZDdlOTNiNDdjYWJkNTNmNzNjMzc3OGQ4YTZmOGY2ODQ4ZDU3NTI3IHB5M2sKKzU4MjYwIDFhNzlhNDUwMDNmNWRiOTQyNjgwOTBhY2U2M2RhMGFkYzE1Yjg4NzAgcHkzay1pbXBvcnRsaWIKKzU4MjY4IGI5MDI4NmFiODYyOWFmMDI0MTM4MWMwNDBiMzdlODQxN2JlOWMxNTUgbGVnYWN5LXRydW5rCis1ODI2OSA4NTZmOGVhOTIyZGY1MTI5NDJkYmZkNDNiZDI5M2EyMjFhZmI5YzIzIGxlZ2FjeS10cnVuaworNTgyNzAgZjUzMDA1OThiMTFjYWQxMzExZTMwOGIyYzA1MTFjNzFiYmFiNTUwNyBsZWdhY3ktdHJ1bmsKKzU4MjcxIDE5NDRmNzlkYjhhZDM0NGZlNWVkMWVlOTU3NzlkNWVlODVlOTQ3NWMgbGVnYWN5LXRydW5rCis1ODI3MiAxM2JhYWRhMmE2MDE3MWU0MjJhNDg3YmNhOWQxZjI2Nzg0YWUwMDU5IGxlZ2FjeS10cnVuaworNTgyNzYgYTdjNDhhYjgwOWVjNDg4MWM5MWJjYjgzNGQ3OGU4N2Y5MzVjZDVlNCBweTNrCis1ODI3OCAwZmY0NmVmOTQ2YjEzZGM1MjMzNTMyMjY2NzdiMjNjMTBmZDc4ZDU1IHB5M2sKKzU4Mjc5IDliYzk4NTU4MmNiMjg1NjcwYzE5OGM0N2FlYjRjZjA3Yjc0ZmY5NjggcHkzaworNTgyODEgN2ZjZDk5NDVkMWJmZTM4NDc3NjM3ZGJlYTgyMjg1MDlkYjNkYmQyOSBweTNrCis1ODI4MiBlODhmODNjM2IyNWU4YzllNTIzYWEyZDUwYWRiNmVjYWE5ZThiMjBmIHB5M2sKKzU4Mjg1IDg2NjcxNzI2OWNhMzgyMzUxMzQ0YzhiODkzOTlkNWQzMDhmOTFkNDcgcHkzay1pbXBvcnRsaWIKKzU4Mjg3IDg4MGIwYjIyYzE1YTlmNzFiY2YyZGU2ODJjMDJhMDIxMmQ3YzQ0ZjEgcHkzay1pbXBvcnRsaWIKKzU4Mjg4IDM4MWVkNDEwMDNlNzY3YWYyOTg0Y2VhNTc3NDhhMjc3NTYzNjIxZGQgbGVnYWN5LXRydW5rCis1ODI4OSAxMDZhNzFjNTE0Nzc1MWJiZmUwNTZiYjEyNzk0ZWUyMGZiYjgzZGNjIGxlZ2FjeS10cnVuaworNTgyOTMgYTFjYTRlYTQxZTdlOWZkNTgwOTc5MmJjMzI0NjE1MTM4MTFjYjc4OSBweTNrCis1ODI5NCA5ZDZkOWFjOTVhZTE3NjBkMDEwM2FmOGI0ZjdiZjYxYjMwMDFmNThkIGxlZ2FjeS10cnVuaworNTgyOTUgNzk0MzI2MmU1ZmM0Mzc2N2QwNDk1YmRjNTk1MWQyZGMwMmVhZWM5OCBsZWdhY3ktdHJ1bmsKKzU4Mjk5IGM5YmY2ZTcwMzA4ZTc2NDFhY2JiNzNkYTFhY2RjOGQzNzU3Yzc2YTUgbGVnYWN5LXRydW5rCis1ODMwNCBiMTJjZjQ2N2IwNWNjMmQzNzcyZjA0MjY5YWE4MzU5ODEyYzIyNzVhIGxlZ2FjeS10cnVuaworNTgzMDUgMzMzYjA1MmU5ZGE5YTBhMjBjZGNiM2JmNWY0NmYwOTIzN2I0YmU3ZSBsZWdhY3ktdHJ1bmsKKzU4MzA2IGNkMjgxYzEyODM2ZGM0ZjA4N2M1NGMwNjc0NTcxODczZWUwODM1OWMgbGVnYWN5LXRydW5rCis1ODMwNyA3MzJjYTI3YTY3OGNmZWMxZWY0NGU1Y2ViZDJiMzI5NjE0ZjdlZGQ3IGxlZ2FjeS10cnVuaworNTgzMDggMWIxYTU2NTJmZWQ4Zjc3NmY4ZTQxYjcwZTNjOGU0N2ZiZDRiYTc1NSBsZWdhY3ktdHJ1bmsKKzU4MzA5IDlhZTRlOGE1MzQ4NjYyZGVjYTAyZDZkZmFiNTlhOGZkM2I3NDFhOGYgbGVnYWN5LXRydW5rCis1ODMxMCAxNzZiNjEzMWIwYmFmNDEwM2RmZjQxMjg2Y2VkYjIzYzY3ZTBmM2I2IGxlZ2FjeS10cnVuaworNTgzMTEgNjViMzY1NGM2N2Y2MzFjNjdlNDM2MGEwZjZmYWY5OGVhNTA2NWFiYSBsZWdhY3ktdHJ1bmsKKzU4MzI1IDViNTI0OWRkMTZiNDUwNzliMThjMGNmNGViMDc3YjZjYzAwNjI0MzQgbGVnYWN5LXRydW5rCis1ODMyNiA3M2Y0OTY1NjQyMGJjYTc3MTU3MmZhMjIxNGZhNjM5YjJlMTI1ODhiIGxlZ2FjeS10cnVuaworNTgzMjcgZTg2OTRhYjUzYTVlY2EzZjIxZmE2M2Q4MGQxZGVmYzg5ZmNhZGE3OSBsZWdhY3ktdHJ1bmsKKzU4MzI4IGMwYWJkZDU3OWViMjZhZmY0ODcxZmNjNTJkNTJmNzViOGViZGI0MmIgcmVsZWFzZTI1LW1haW50Cis1ODMyOSBmMmM5ZjI0YTBmNWE4OWQ0ZDhkZTNiYTIyYTM5MjUwYTYzODdhMTEyIGxlZ2FjeS10cnVuaworNTgzMzAgOTk1Njc3MjE5YTY1NTgyYTg0ODZkYzI3ZjQ2NDIzYTEzMGIwM2VlNiBsZWdhY3ktdHJ1bmsKKzU4MzMxIDI3NTExNTk5OWI1ODEyMWZkMzFkNmFkOThlODEzNzI4MjU5ZDVlMmUgcmVsZWFzZTI1LW1haW50Cis1ODMzMiAxYmVhNmZhZmNjNTA1NzEwOTY1M2YxZTVlYjI2MmRhNGU4Nzk3OTY1IGxlZ2FjeS10cnVuaworNTgzMzMgYTU0MzAwNjMwOGJiOWJkOTQwZWI1YjE4YmI5ZmI5NDlmNzliOTVmZCByZWxlYXNlMjUtbWFpbnQKKzU4MzM0IGU4NDExOTdjMWQxN2Y1NWYwYjI3ZTliMzkzZjM5YjBiNjU1YzU5ZWQgbGVnYWN5LXRydW5rCis1ODMzOCAxN2IwNzM3MGE3ODI5MDFhZGYxODI2ODg4NWMwNjZiMTRhMGM0YTA0IGxlZ2FjeS10cnVuaworNTgzNDMgNjhmYzEwN2RkYjUwYjk4YWZkMTM2ODE2ZTliNmE1YjYwMzNhNmY0ZCBsZWdhY3ktdHJ1bmsKKzU4MzQ0IGY3MzUzNTk1YjdmYTgxOWY5NmVjY2VjNjMzMWRhZDIzMDlmYzliNGMgbGVnYWN5LXRydW5rCis1ODM0NSBhY2RhYzQxZjcxMDk3MmE5MjI1MTVlNjI4YTVlOTNjYWNkMWEwZDFiIHJlbGVhc2UyNS1tYWludAorNTgzNDYgZWQ0OTllMzQ4YTExOWQyNzdkZGZlMjE4OTM2MTc3OWY4NGIzMDA0MyBweTNrCis1ODM0NyBhZTJhOTlmYzczZGE2ZDJiZWIxYTJiYjA5ZDFlMmRhMjM3ODU5Yjc4IHB5M2sKKzU4MzQ4IGYzNmQwZjcwNzdmY2JmNWY5NzYzZTI3NDM4NjE3NGI3NDAyNDAzZDkgbGVnYWN5LXRydW5rCis1ODM0OSBhZDM2NmUzMTZlMzA2NGYzYjQ2N2ZmM2EzMzE3YjJmZDM3NTI4YmVlIHJlbGVhc2UyNS1tYWludAorNTgzNTAgMzlmNGM1MDZjZDcxOGIwNDM3ZjgwZmIwMDFjYWY1NGU3NzkxOWEyNyByZWxlYXNlMjUtbWFpbnQKKzU4MzUxIDNjZDE0NjNjOTM4ZDZmN2M4MzI4MGY3OTZlMzEyNGY2ODg5ODQ4ZDggbGVnYWN5LXRydW5rCis1ODM1MiAwNzQxMzBhMDczYjY2ODJhZWQ4ZTgxZWRlYWJlMzQyZWQ5OTI1NGNkIHB5M2sKKzU4MzUzIDIzMTkyYjFiNzFlMjc1NTRkZTZkZjMwNjQzZGVjMWNmZjllZjgxZjIgcHkzaworNTgzNTUgMTRhZGRkYTgzMzQ0MzM3NWUyOTFlZGM1YWE2NzE1MjRiMzA0MjU4MyBweTNrLWltcG9ydGxpYgorNTgzNTYgZjVjNzlmNDNiYmY2OTU4NmUyZmFhY2MwNmI5ZjA4NWI5YWIzYzkzNCBhbGV4LXB5M2sKKzU4MzU3IGEzYmFkNjk0YzI4MzlkYTNlZjdkZjVlNTU1OGVlZmM3NzhiZTMzNjcgYWxleC1weTNrCis1ODM1OCA5NGU1MzZjMzY0NDkzZmM4YWM2MjYyNWM1ZGE3YTY5YzNiYWYyYmMyIGFsZXgtcHkzaworNTgzNTkgMzA0ZDJjZWExMzc4MzViNzRkMTI5NTMxMDQyY2MxZjliNTdmNTc5MyBhbGV4LXB5M2sKKzU4MzYwIDhjMTBhYWMzNzAzNzkyNWRjY2I3YmJkZmI0YjcxNGI2MWJmYjNmZmIgcHkzaworNTgzNjIgOGJhNTMwMGNiNGIzYjVkNmIzODA3MWM3NTYxOTY1ZGQ0NWFlZTMxNiBweTNrCis1ODM2MyA3NjdlMGMzMTBhNmFhZmE3ZjA5YmNkZDdiNTdiZGVjNDRiY2M1NDkxIHB5M2sKKzU4MzY0IGY2MTQzYzQxMTcxMzU2NTAxZTQ2YWVjYWE3ZGFmMDRlOTdmODVkOGUgYWxleC1weTNrCis1ODM2NSBmNjA2MWM3MWE0ZDIzNmI2ZThkNTNiOGNjMzdmN2ViZDYxOTAyNjgzIGFsZXgtcHkzaworNTgzNjYgZmFiNDA4OWRhYjlmOWYwZDE3NWVkZTliOTQwNGM3MjhkYzM2MzQ0MCBweTNrCis1ODM2NyBkZTQxZTk3OWFlYmViODk4Y2I2NmE5YTJkZTZhMjVlZDUxZjUxNThjIHB5M2sKKzU4MzY4IDA0NTk1MmZmMDhmNzQzYjIzMTYzNTI5YzdlZTJhM2NiZDU5MDE0NjcgbGVnYWN5LXRydW5rCis1ODM2OSA5ZTYwMjBiYjIzNTIyYjMxYzhlOTcyZDAwYTRjMzU0NTkyOTk4ZjRkIGxlZ2FjeS10cnVuaworNTgzNzAgNGRiNWRhYjdmMjM1ODlkYWM3ODQ0M2RhYjRlY2I0MGUwYWI3Y2YyMyBsZWdhY3ktdHJ1bmsKKzU4MzcxIGZmNGJiZTY4MjNmYzliOTMwYTJhOWUxZDE5OTM3MTY4M2ZmZTBkMTUgbGVnYWN5LXRydW5rCis1ODM3MiA5MTkwNGYzZTdiZTFiYTRlNzhlMzExOTdlNWFhMzJjZWYyNTE1NmNiIGxlZ2FjeS10cnVuaworNTgzNzUgNjYxNGQ0MmQ3ZjBhMzM1ZDliMWQ0MWVhMDUxY2FkMzk1NTVlYTBkMyBweTNrCis1ODM3NiAwYmEzODEwMGNkYTkwMzI1MTVhNzdiOGIxOWNjMGZhNzI2MjMzMWYyIGxlZ2FjeS10cnVuaworNTgzNzcgOGJkOTEwMDM2Yzk3Zjc0MGI3MGI0OWMxMWE4Yzk5N2JhYzljOGY4OCBhbGV4LXB5M2sKKzU4Mzc4IDU3MTNiMTc2ZGRiNjk4NDg3ZWU4ZGIwNjRhNWUxMzUxODkzZTkxYWEgcHkzaworNTgzNzkgMjdhZjQ1MjQ5YTgwM2QxNWM2MDFmNzcyNDQ1YWE4YjFhOGRmOTEzMyBhbGV4LXB5M2sKKzU4MzgwIDY1OTg3YjM4ZGYyZTM1OGNkMzMyY2VlMmQ4NGVmNzIwMzUxOGY4ZGUgbGVnYWN5LXRydW5rCis1ODM4MSA5NjVlNzE1NDE3N2M2OTUwNTkzODEwODU2MTJiY2U5NTVmOGE1M2M1IGxlZ2FjeS10cnVuaworNTgzODIgZWJmMmE1Y2YxM2ZiZGUxZTQ1ZGYwZTI2ZjA4N2Y1MTgyZWU1YTlhYyBsZWdhY3ktdHJ1bmsKKzU4MzgzIDk4ZjYxODBiOWIzMzMwYjEwMWY0YzEwNjM2MjFkZTYwODNmZTBkOGIgcHkzaworNTgzODQgMzMwMjFlNDAzZjNjNjU5ZGEzM2M3MDYxYWI0YTY2ZDI3MTM4YjczYiBsZWdhY3ktdHJ1bmsKKzU4Mzg1IDljMzAxNWZjNWJmNDU5OTcwMmRhN2FjZjBhOTNlZjM5YTUzYzM2NjQgbGVnYWN5LXRydW5rCis1ODM4NiBjNDhmOTM4MWRkZjEzMGY2NzQ3YzJiNGZmODVlY2ZhMDFjYWI2Y2QyIGxlZ2FjeS10cnVuaworNTgzODcgZGM2ZTJhZGY4ZGQyYTMwNmU5ODZiN2Y2ZmYzNTMxNjBmYjIyNjgwMCByZWxlYXNlMjUtbWFpbnQKKzU4Mzg4IGExYjc2NzU3ZDYyZWUwZmIwNjE3NTZiMzNmNDEyYWY1MTBjN2Q2YzEgLi4vY3R5cGVzLWJyYW5jaAorNTgzODkgMjRkMTExODA5NDgwMDk0YjM3MTNiMDllNGI3NzE3MTcyNDVhNGQzMiAuLi9jdHlwZXMtYnJhbmNoCis1ODM5MCA0N2MwMjc5MWVjNmIyYzZiZjE2MGNjYjc3NjdiN2QzOGNkNDE4MDRhIHB5M2sKKzU4MzkyIDRhNzJmYzVkZmI3OWIzZDIwYTc3ZjVhY2MxMGUzMmNlYjQyNWZlMzYgcHkzaworNTgzOTMgYzk0ZGE4NDc2NWVlMzAyNTJhYjg2ZjhhMDg4MDMzOTI3ZTliNjFhMiBjdHlwZXMtYnJhbmNoCis1ODM5NCBmYTkzZGQ0ZTM0YmMyMzA0NjdiMTkwMGNiYzY5NjMyZmVmODkxZWIwIGxlZ2FjeS10cnVuaworNTgzOTUgYmMyNWJhZmEzM2IxZmM0NmY4ZDgxYTM3MGU4YTJiZTJmOTg3N2QxOCBweTNrCis1ODM5NiAzN2Q4MjcwYWM4ZDk2MWI0ODNiODU5ZjhhMDAxZDg4MTQ0OTNhNWZjIGxlZ2FjeS10cnVuaworNTgzOTcgMzQwZTZmZDVkNzVmMDU1NTUyODg0NmM0NjhkZjcwOGMwOTM1Y2FkMyBweTNrCis1ODM5OCA0MTViMWJhY2ZlZDdhZjAwY2QzNTU2NWMwZTMzZDAwZjYwNjNiY2RiIHB5M2sKKzU4Mzk5IDhjNWU2MGRkYWE4MjdiNWYwMTczNTE1YTNiMTExOGZkZDFkZGFmMjIgbGVnYWN5LXRydW5rCis1ODQwMCA4ZDQwYzUzNDhjYTlkOTNkMDJkODgwYWI3NjgxZDQxYzYyZmU0ZDU2IHB5M2sKKzU4NDAxIGRhNTJiNGM3NzZhNDU0ZmExYTBkOTBhNTYzMGEzYmRjNzUxMmIyNDYgbGVnYWN5LXRydW5rCis1ODQwMiAwNmJhNDJjMmMwZDA3NDZhNTZkNWY2YzNmZDE5MzM2MTVmMmFkZjk1IHB5M2sKKzU4NDAzIGU1ZDY4OTNkYmIzNmVmNDRlOTAyOGJiNmZjMzM1YjYxZTNhMWQzOWUgbGVnYWN5LXRydW5rCis1ODQwNCAxZDUyZTc4Mzg0MmRhMWE4MDY3MTA4MWE5ZTgzN2M5NTlkMDFhOGI0IGxlZ2FjeS10cnVuaworNTg0MDUgOWY3ZGUxODQzMWZlOTUwZDUzOTFlNTc3NGVlZDFjZDA0NTgxMDk5OSBjdHlwZXMtYnJhbmNoCis1ODQwNiBmZmVjNDlkM2QyMTU0NzFmYmRmZWFkN2IxMWRlNmEyY2NmOGZiYmM1IGN0eXBlcy1icmFuY2gKKzU4NDA3IDRmOWVjZWE4MTc3Y2JlZDk3YjlhNmMxOGY1MjEyZmFkOGJkYTBjODYgcHkzaworNTg0MDggYjRkOGY3MTQ1OWU5NDliY2QwNTcyNTMyMTNhY2Q0MDk3YTZkZmU2YSBweTNrCis1ODQwOSA0YzE4OWM3MTQ0Yjc5NGI0NjdiMzRhYWM4Y2U0NWU2ZDMxOGYwNzMyIHB5M2sKKzU4NDEwIDJmMzBiZmI3YzczODVmMzhkMDQ3N2RiZDhlODVjZGZhNDU5YTA4MzEgcHkzaworNTg0MTEgYjlkMTlkNTFkZTM2OTc1YTVlN2M0NTcwNWQ5NjU1NjBkNDMxMWMxMyBweTNrCis1ODQxMiA2ZTYwZjY1ZmYzNjQ3YzlmMTcwOGM1YjU0YWY2NmNlMTY3NjM1OTAyIHB5M2sKKzU4NDEzIDJiNzQ2ZjI4YjM5OWE3MTA2OTdkOGEzMTBhYzIwY2FhZDZlOTJkOGQgcHkzaworNTg0MTQgOTkzNzFiZDJjYThmODdkOWI1YmJjNGNlNDBlZWM1YzgzMTdiODc2NSBweTNrCis1ODQxNSAwMjcxMGI4OTcwMWUwODM3NTMxNzE1YzY0ZDkwMTUyODhmN2U5ZjY2IGxlZ2FjeS10cnVuaworNTg0MTYgMzljOWI1NjEyNDUxYTI3MjczODQ2M2E4MTBhZDBjMjU2Y2MwZTQ5NSBweTNrLWltcG9ydGxpYgorNTg0MTcgMzljYjVkOTZjZTc3MDA0ZTk3Mjc0YTQxZWYwOTA2YTZiMmZiZWJlMCBweTNrLWltcG9ydGxpYgorNTg0MTggOGM1YTQzM2E5ZDkwZTdkYTM1MWVjNTU0MTMyY2Y0NzYxY2U0ODgzZCBweTNrCis1ODQxOSBiZjEwMTQ0NDhjNDE3ZDk0ODU2ZWIzYzEzN2RjYzJjM2NkNDllNGJhIGxlZ2FjeS10cnVuaworNTg0MjAgYjYzNzhmYTZlMTY0OTBhNzJhNGY2ZmQ1NmZkY2M0YzBkYjcwMTM3YSBsZWdhY3ktdHJ1bmsKKzU4NDIxIGNhOWIwOGU3ZGMyM2RhMDEwYjBmMWQxYTdlZmZhMjRkNWFkMTQ4OGEgbGVnYWN5LXRydW5rCis1ODQyMiBlNDlhZTk5ODA4MDgyMmUzNDcxYTlkNGFjYWI3Yjk1MGY4NjZhNmQzIGxlZ2FjeS10cnVuaworNTg0MjMgMTZkNGI5MDQ4NTFmZTBhMWIxNzQ2MjQ2ZTdmMjM2ZTY2N2U0ZTYxYSBsZWdhY3ktdHJ1bmsKKzU4NDI0IGNkYTBiNjI1Mjc1YTYxYjFhNmIxZGNlMjRhNGU4YzI2ZmFlYzI2NTEgbGVnYWN5LXRydW5rCis1ODQyNSA5YjZhNDczY2ZhMjI4YjJkNzJlNjRmZDZjOWJjMGViMDYzMTNmYTA5IGxlZ2FjeS10cnVuaworNTg0MjYgYTQ0ZTRjYzMzZjVlMDNkY2VlNTljZDI0YzMxY2FjZGQ1ZTkyNjFmZSByZWxlYXNlMjUtbWFpbnQKKzU4NDI3IGEyNjIxNzhjMWMwYWY0NTJjYzcxOWZmM2Y4ZWYyNTA5MmVkM2UyZTggcmVsZWFzZTI1LW1haW50Cis1ODQyOSBhM2ZkNmU1OWJhODM2ZWNmNDcxMzgwODA2NmMyZTc4YzY5ODU3Yzc5IHB5M2staW1wb3J0bGliCis1ODQzMCA4MWY1OThhNzZmNTlmYTM0MjgwZTY2YTA0OTZjMTA4Yzg1ZDc1OGExIGxlZ2FjeS10cnVuaworNTg0MzEgZmMwNDhiNzJiZjNkMDhhYmE0Njg0OTY1YmJkNzMyZWU0NzlkOWY5NyByZWxlYXNlMjUtbWFpbnQKKzU4NDMyIGQwYmEzOWRlN2FiN2U1MGM4MTAwMzBhZjY4ZGIyMGRiNGRmMzEyOWQgcmVsZWFzZTI1LW1haW50Cis1ODQzMyBmYjMxMGI4NjIwZWNlMWQxNjVjNTc2MDU1MGE5YWNkMjZlMjVkMGVkIGxlZ2FjeS10cnVuaworNTg0MzQgOTYwMzIyMWJiYTkwMmFiMDMyZDBlYjQ2MGMyMmM2N2YyMDAwZGJmYiBsZWdhY3ktdHJ1bmsKKzU4NDM1IDEwNGQyZjI5Zjg4NmI4YzkyZWI3NTUzMjI0ZWE1ZjUxZjMyZWJiZjUgcmVsZWFzZTI1LW1haW50Cis1ODQzOCA2YTk3ZjcyNjBjYWQwOTg1ZjM4ZjBkZTRiMmJlMWNmZGI3NmZlYjdmIHB5M2sKKzU4NDM5IDgzM2IwZTc4MTUwNmRhZDBhMjkyNDVjYzNhYTY3MWJlZDFmZGMzODUgcHkzaworNTg0NDEgZmI5ZDUzMDZmNGM3MjI0MGJjZmQ0ZDI0M2M0MjMzMjZjZWNhMTdlOSBweTNrCis1ODQ0MiA5OTNlMjRjNzI0YjhjN2QzMmJjYjkzZDE1ZWFjYjE4ZmU1NTQ0MTRiIHB5M2sKKzU4NDQzIDRlYTk0NWNiYmI2ZDQ5ZDFlNDEzNTEzMjhjYmU5NDljZThmMGUwNTkgcHkzaworNTg0NDQgNDgzY2I0MWE1NjkxYmI1NTZhZjUyMjlkNzdkYzU5NTdkZDJkZjYwMyByZWxlYXNlMjUtbWFpbnQKKzU4NDQ1IDM1ODY2MzFkOGQyMWM1OTM2NzU4M2Q3ZjI3OGE2YWFhNDU4Nzc4OTAgbGVnYWN5LXRydW5rCis1ODQ0NiA5ZjAzNjYyNjBjZmJiNDg3MzcwOGVmMWEwNWUyNDMzNGQwMzFmYjEyIHB5M2sKKzU4NDQ3IDY0NGUyOGVhOWIyMmE0NjBmZmMwYzU3MmNiNDY3M2IzOWJhMzhmNjkgcHkzaworNTg0NDggOGU3MmRhY2Y3ZjNhNTI3YjEyNWE2ODk4OTVhYTA3ZWNhYjg2MWIwZSBweTNrCis1ODQ1MCAwMmEzM2RjYTQwMDFhNThmYzlkNWFlZjI3ODBkNDZiZmY3MWNmODY2IGxlZ2FjeS10cnVuaworNTg0NTEgYzNhMjU4MjBmNTEyMzVjZDRiZTdkNDI2MWQ5YTViYWNlNzM3ZjkxZCByZWxlYXNlMjUtbWFpbnQKKzU4NDUyIDk5MjVjZTFmZDdiZTdkZmI0Njc5ODQ3MTMwMjNlMWFmYTEzZjY0ODIgcHkzaworNTg0NTMgMzA2ZDUzOTVkZmEyOTk4MDk5ZTQ5NTNkNWExZjVkOGNmNjdlOWY5ZCBsZWdhY3ktdHJ1bmsKKzU4NDU1IGFjNjJlYjI2NzIwNmUxNWQzOTk0NGI2NjNhNzdiNjA5ZTk4ZDYwMmEgcHkzaworNTg0NTYgMDAxNTU3MmQxMWJjZjk4NjNmMTEwNjI2OGQyMWEyZWFiYWM3ODIwNiBweTNrCis1ODQ1NyA5ZmJmNzMzYTA2MzliZWE3N2Q5MTA1YmVjMWE4N2RkYjk3YWVjMmVjIHB5M2sKKzU4NDU5IDRlMDVjMjRlMjZmOGE1MzRiNjRiNjlmZWExYTM0ZGEzMDA3ZThjYTMgbGVnYWN5LXRydW5rCis1ODQ2MCA3ZTI3ZDUwYzg2NzIxZTYxZmZmZmU5NzA0YmQ2NjNhZTgzNjdiN2NjIGxlZ2FjeS10cnVuaworNTg0NjEgYjQwMzVkMzY2NWJiODMwMjIwYjFjMzVkNTdkZmZkNTZjYmVmNjJmNyBweTNrCis1ODQ2MyAxMjZkMmZiNzM1YjVhMjY0YzA2YTVmODE1MzZhNjMzMTIzZDIwYWU4IHB5M2sKKzU4NDY0IDVhZDU3OGFlOTg3M2U2MTc0Njc4MDgzZDNlYTMwMzM3M2IyMjdlMTAgcHkzaworNTg0NjUgOTAyOTRkODBhM2M1YmNmZGU2YTIzOTkwNDUyMjE1MmMyY2I5ODZlYSBweTNrCis1ODQ2NiAxOTMxOWU3MGZjM2VkYmI0NWIyZDAwNzE2MWMxYjNhMWRlMDk0MTgxIHB5M2sKKzU4NDY4IGE1YTRiNzg2YmIyMTViNmIwYThiYTk0MGI4NDZjMTFlMTRjZjRkNjcgbGVnYWN5LXRydW5rCis1ODQ3MCAyMTk1ZDFmMTc5NTgzYWY2ZjBjM2VlODVmZjU5N2NlNmZiZGVkZDY3IHB5M2sKKzU4NDcxIDY5NzQwMGZjZTdjNWMwNGI1YjE3ZGU4ZWM3MGRlN2RjMjI4YzM1ZWEgbGVnYWN5LXRydW5rCis1ODQ3MiA1MDU5OWJiYjBjNjcyMzk5MmNlNzQyNDdhZmY2ZmJlODkwOTg4NDk0IHB5M2sKKzU4NDgxIDE2ZTIzN2VjZTI3ZDM5ZDQ3ODE1NGVjOGVhMGIwNTYwMjE0NGNkZWQgcHkzay1pbXBvcnRsaWIKKzU4NDg1IGM5ZTYxZDY2ZmY2NTE4MjgxZWM2NDBkM2UzMzcwZDZkZGZhYzVjNTQgcHkzay1pbXBvcnRsaWIKKzU4NDg2IDZjYjYzOTdkMjIxYWYyYThhMzczZDdmNmViM2EwM2MxOTI5MzJiM2MgcHkzaworNTg0ODggZDcxMzg0Y2I1NjA0NGRhMTk5MWFmZWZmM2I3ZTc2YTE2YzQ3ZWI0YyBweTNrLWltcG9ydGxpYgorNTg0OTEgZTcyYWQ0ZDI1NmU4NDBiYjdkOTg0NTA1NTA3M2YwYjM4MDBjOTc3YyBweTNrCis1ODQ5MyA2OTdjYzMxYTgzZjY1ZTkyMGQyZjIyM2VjZGNkZGI5MjY4OGVkMjdkIHB5M2sKKzU4NDk1IGFjZTQ1YjM2MWU4NzNlMGUxN2Q4MjIwOTZiYmEzMzQ2NTkxNGE1MWIgcHkzaworNTg1MDAgNDA2MDA0N2IzZjFkM2IyMGNmMDE0ODcyZGExMTFiNDFjNmYzOTU0NSBsZWdhY3ktdHJ1bmsKKzU4NTA2IDA0NmVkYWExNTY2YTdiODg1ZDY4YjU4NGFjZWNjZGM4MWM2MmMyMGEgbGVnYWN5LXRydW5rCis1ODUwNyA3Y2EwYmMwYWQ5NjAzNWJjY2QwNTFhYjI0YjI0NDdlOTMyY2Y4NTQxIGxlZ2FjeS10cnVuaworNTg1MDggMDE2ZGE4ZTJmOTRiOGNjMzgzYzBkOTQ0NjE2MTdmMTVmOTJiYzc0MyBsZWdhY3ktdHJ1bmsKKzU4NTA5IGM4ZWUyNjA3MzA1MDNlOTkxZjIxYWFmNGUwMGNmZWExNzk2YjcyN2MgbGVnYWN5LXRydW5rCis1ODUyMiA2MTU3ZTBkMjdlZWY2MTM5NGFmZGQ2YzgzYWQ0ZWQxYzg5MGYxMDRkIGxlZ2FjeS10cnVuaworNTg1MzAgZGE0NDMzNGViZWEyNDUyY2IyMzAyYjgzOGVhZjhjZTA2MTZlMTdkZCBsZWdhY3ktdHJ1bmsKKzU4NTMxIGYxZjcwMWMyMjRjMWMwYjllNGJkZDY5ZTRiNWViNjAwMjFmYjBiNzIgbGVnYWN5LXRydW5rCis1ODUzMiAyN2E0ZDIyNGVhMWI5MDlhYWNiOGFjZjg5ODBhOWM5OTZlYmE3OWFiIGxlZ2FjeS10cnVuaworNTg1MzMgYjgzMzQ2ZjNiZmFmZGE0YzNmMTcxOTJhMzFmN2UxMTZiM2ZmZWRlMSBsZWdhY3ktdHJ1bmsKKzU4NTM0IDE0M2FjYmJmYWZkN2M3MDZlY2NmODc5Yzk5NjA0YTI4MjY4NjVlYTEgbGVnYWN5LXRydW5rCis1ODUzNSA2ZGI3YmJlOGYyN2NlNjcyNDJlOTZmMDJiNjdhMGViYjU0YWFlYzEzIHB5M2sKKzU4NTM2IGQyMTY1ZGMxYjA4ZGZjMDY1MTk2ZGY0ZjhkMGQyNzZkYjJhYjI5ZjggcmVsZWFzZTI1LW1haW50Cis1ODUzNyBjYzE1ODM2YjY4MDhiOTk4ZmJlZDk0MTk2ZjY3OTBlYjI4N2ExYzBhIGxlZ2FjeS10cnVuaworNTg1MzggZTlhZjcwNjM4ODg4ZGZkMGZkMDljMWJmMWU3NTE4MzhmMzhiN2QzYSBsZWdhY3ktdHJ1bmsKKzU4NTM5IGYyNjc3ODQzMDQ3MDA0ZGU2MzYwMzQyYmU2ZGQ5YjY3N2Y4MmIxNDIgbGVnYWN5LXRydW5rCis1ODU0MCA0NDUwN2M0ZGVjMmI1ZjI4NDQ4N2NlZDMwNjE0ODE1ZjgzNDcwYmY1IHB5M2sKKzU4NTQxIGQzN2MwMDUxNDA2ZTY2ZTQ4M2Y5NTJiYWM4MmE5YzY0NGViM2YwOTQgcmVsZWFzZTI1LW1haW50Cis1ODU0MiA1NDhkMDZlOThmNTY0NWNmNzA2NDUwNTQyNWVmNTA0OWFkMjQyYzhiIGxlZ2FjeS10cnVuaworNTg1NDMgYmI1Y2I4OWVmZTE4YWU4YzBlNDU1NGRiZTdkMzEwNjFmYjYwMjk2ZSByZWxlYXNlMjUtbWFpbnQKKzU4NTQ0IDk2YWY0MWU1MGU1NjExN2NkNmVhYzdlN2UyNjk5NzNmYzE2M2Y0YjAgbGVnYWN5LXRydW5rCis1ODU0NSBiZGQ5MjQyNTE4MGY0YmRmMzNiYWMyYTQyMGYyZTc1OTA1ZGE1NWEyIGxlZ2FjeS10cnVuaworNTg1NDYgMjMyMGNkNGY2OGI1OGJhN2ZlYjEyNjg5NzExM2NhMTliYTJmODY3NCByZWxlYXNlMjUtbWFpbnQKKzU4NTQ4IDhhMDE2NzQxNjIyMzIwNTkyNWRmNWM1NDYwYmI0MmU5MTUzNjY2MzYgbGVnYWN5LXRydW5rCis1ODU1MCA4MDc0NGM4ZDM0ZDhiMTRjYzUyY2YyMTk0MDYyMGZlMTU0M2Y3ODZkIGxlZ2FjeS10cnVuaworNTg1NTEgZGQwM2FhNzQxZjU2ODg5YzUxMjYyOGY2MjZmNTFmMTJmZmJlY2EzZCBweTNrCis1ODU1MiBiMThmNjA5MmY2ZTAxNzdlZDI3ZWQ4ZWY2Y2YyMzY4YmQ5MzVlODhmIHB5M2sKKzU4NTUzIGEyYmI3NmQxMWQ2NmIzMTNlNGE5NThmZGU1MDI4MTk3Y2ZjNzgxNDkgcHkzaworNTg1NTQgNTdmM2YxMjZmM2Y3MDEyY2IyY2VlMTQyNzg1ZTRjNTczNGI1MzczYSBweTNrCis1ODU1NSA3NTkzNDM2MDU4ZGQ1MzEwMTQyZmY0NTJjMGU0YmI5YmZmYTM0ZWQyIHB5M2sKKzU4NTU2IGYwYmNjMTFjYTk2NTY1OWQ0MzFjOTI4YzJhN2JlYWI3ODg4MWZiMjUgcHkzaworNTg1NTcgZDM3OGFjZGMzMGVlZDIyY2U4ZDY4YjViZjc4ZmE1ZjM5NzZkNGJlZiBweTNrCis1ODU1OSA2NWZlMTk1NTE4Y2IyZmQwYmZmYTQ4MTkzNzc1NzJmYmJhMzIxOGYyIGxlZ2FjeS10cnVuaworNTg1NjEgY2I5NGViZDlhZmE3YTFhY2Y2Zjk1NWQ0ZmZmYWFlMDdlYzAwZmY2MSBsZWdhY3ktdHJ1bmsKKzU4NTYyIGEyMTQwZWI1ZmM2YWNlZjE0ZThkZGM5Nzk3NzQxYWYxNGE3NzU3YjAgbGVnYWN5LXRydW5rCis1ODU2NCAzY2I2Nzg2MjhhZjM4ZTg1NmNlZTNkMzZiODA2YzgzZGQxMGJlNGM3IGxlZ2FjeS10cnVuaworNTg1NjcgMjUyYjlkMjJjYTU1NWM3MGMyYjhmMjBjMDQ0YmJkNjlkNzQwZTA0NiBsZWdhY3ktdHJ1bmsKKzU4NTY4IGQ3Mjc5YzMyMWJiN2NjOGUyNGRjM2NhNWZmYTUwYjc5MzA3YWRkNTEgbGVnYWN5LXRydW5rCis1ODU2OSAyMDFkZDA5NDk5OTkwZWYxMjlhYTBlZTViNDhjNjZkNWE4Y2IyMjY3IGxlZ2FjeS10cnVuaworNTg1NzAgYzRjYzNjMjQ4OWEwNDgyOTUwYjk4MWQxZjE3ODk4YzcyZGM4YWE1YSBsZWdhY3ktdHJ1bmsKKzU4NTcxIDg4OTk3ZjA4MjE3NDlhZDBmZTE1NmM3MTUxYjIwZjM3YWQ3NzA2NWQgbGVnYWN5LXRydW5rCis1ODU3MiA1ZTQyMTE3ZjljYmNjMDEwNTM1MGIxNGIyOTkzNDdkMGViNTA0OTRkIGxlZ2FjeS10cnVuaworNTg1NzMgMjUyOTZlYzAyYjE5YzUxZmQyZDFmNDZlZTRjNTc2MGFiMWYyNGUwOCBsZWdhY3ktdHJ1bmsKKzU4NTc0IDVjYmExNGE1NjRmZGRmYWVkODAwMTZkNzU2MWViZDMwMWQ0ZTIzYjEgbGVnYWN5LXRydW5rCis1ODU3NSA4ZmUyMjY5MzFlZTcyMWFlM2RjYTExNWFkNGM4N2E2ZjI2YzdkNmY4IHB5M2sKKzU4NTc2IDdjMzVhNTkzMTc1NWZkNjVkMDBmODA5MDk0YzYxM2IxMjVhOTBhNTEgbGVnYWN5LXRydW5rCis1ODU3NyAxYmY0NzYyMzlmMzk1OWUyMGJjMGQwNTk1ZDUzNzMzOTM0MjYyNTY5IGxlZ2FjeS10cnVuaworNTg1NzggYTU3NjM1MTAwZGMzOTQ2YjE2NmQyYWU3ZDgwY2ViNThhZDRmYjZlZiBsZWdhY3ktdHJ1bmsKKzU4NTc5IDQ4MjIwZDY0NGM4ZTEwOWEyYzAxM2E0MDJmOWU3NzNmYzFiOTQ3MDggbGVnYWN5LXRydW5rCis1ODU4MCBmYWY1ZGU2OWU5NzcxZTY3NjZhMDg0MGFmNTIzMTA2NzhhYTkyMDkyIGxlZ2FjeS10cnVuaworNTg1ODEgYzVjOTdkN2FlOTBjZThmNGY1ZTdlNDhlN2U2NzFhMjVmY2Y4YjM5NiBsZWdhY3ktdHJ1bmsKKzU4NTgyIDRmNjYyYmEwOWYxZmJlMzg2MWZjZDVhZTg1YzBjMzUyNmRlMWJlMzMgbGVnYWN5LXRydW5rCis1ODU4MyA2ZGY5ODU3NDRkOTY3OGZhOGIwOGYyOWE5ZGM5Zjg2YTQ3MmE2OTg5IGxlZ2FjeS10cnVuaworNTg1ODQgMDMwNTYzNjVhMWI2NjJjYWYyODc2YzQzYWQzZmU1ZThiZTczOGIyMiBsZWdhY3ktdHJ1bmsKKzU4NTg3IDAwNjdhNmFiNDg1NGU3MTY1N2E1YmI5MmI3MmFlMjcxN2YyNmEyNmQgcHkzaworNTg1ODggOTAyMTI1YjU5NGNjODk5Zjg4ZTcwNTc5NzllZTlkOTQ1MDVhNTU1ZCBsZWdhY3ktdHJ1bmsKKzU4NTkwIDE3ODI1ODNmMTE1OGJmMzU5MDM1OTdmOTRiZmUyOGRiZWVkZTI1MDEgcHkzaworNTg1OTIgYTU4ZjMxOTM3ZGFmOWNkY2RhN2RjOTNlZmViNDFhNzJlYWZmNmNkMSBweTNrCis1ODU5MyBlODJkOWE4OGVkOWU0Mjg1MmM1YWRlZjFkNGMzNWFlN2E3OGEwYTM3IHB5M2sKKzU4NTk0IGI2YTI5YTBlYTMwN2QzOTM5ZGU3ODRlMDllYjIwYjk1N2JhOGI5ZjIgbGVnYWN5LXRydW5rCis1ODU5NiBiMTA1NDQ4MjdhZjcwYjM1NzAzYzJhNGZmM2ZiNDM5M2EzYmE4Nzc2IHB5M2sKKzU4NTk3IGEzMmU3ZWM5MzM5NGUxNTI1ZGVjY2ZhYjIxZTk2OWZiMWM5YzIyN2UgcHkzaworNTg1OTggMDQwODhhYmY0ZTRmZDAzZTc4ODU0NTZmZTM4ZDE3ZmMzZjg0NGI2YyBsZWdhY3ktdHJ1bmsKKzU4NTk5IDUzZWU4OTQzZDE2NThkYWFjM2E4MGZmODE5NzE3NTAyODhiYWY0ZmIgcmVsZWFzZTI1LW1haW50Cis1ODYwMCBkYzgxYmNmYzM1MWFlMDFiYTM3ZTNmM2I2Nzc3NDQwODdmYTc3YzY5IHJlbGVhc2UyNS1tYWludAorNTg2MDEgZWI5MDhhMTljMDVhMjRlMDgwMzA2NmI4NjVjNzUzOGM4YjNkYTE1MCBsZWdhY3ktdHJ1bmsKKzU4NjAyIDk1ZDhjOTEzZThiZjM2MTEyZWM3N2JhNjM2YzcxMWJiMWRkMTQxM2QgcHkzaworNTg2MDMgOTk1MjZjNDAxNDdiMTQ1YjRiYzIwYTAxNzlkYWJkZGJiNmNhYmFhMCBweTNrCis1ODYwNyBjZDViMzgzYTM5N2U2ZTIxMmRmNmZmYjVkMzI2YmRkMmEyY2FjYjI2IHB5M2sKKzU4NjA5IDQ0MWQ2MDlkMDk2YjVkZjY2MDNlMTRmNzQ4Y2JhNDc5NjI4NjI0OWQgbGVnYWN5LXRydW5rCis1ODYxMCA2MzRjM2Q0MDQ4ZTdkN2Q3MGU2NTE5NjNiMWM1ZDhhZWRlODFjOWM5IHB5M2sKKzU4NjExIGY5Yjc5NTRkNzg4ZDYwY2QwNGQ1MjRlZjIyNmY2ZmRhZGE4NzRiMWIgY3R5cGVzLWJyYW5jaAorNTg2MTIgZGE4MjMwZmFmMmFlYmJmYTMxODBiNDg4YWFjNTM4OWJiMmYyYWU2MyBweTNrCis1ODYxMyBjOWYyODY5N2UxOTk1YjkzMDBkMjA2NmRiNTVlYWJlNzRlMzM5NGI3IHB5M2sKKzU4NjE0IDc5OTA0ZTg0MWRmMzgwYzYwZGJhYzcwZjg5ODZiNGMxYmEzZTRmMDAgY3R5cGVzLWJyYW5jaAorNTg2MTUgMzQ3OTJiOWU0YjQyOGRlYjE0ZDY2OTlhZmMxYjdhNGZkODQ1NGYzNyBjdHlwZXMtYnJhbmNoCis1ODYxNyAwMDNkMzUyMTVlZjJhYzYyNjdlZmQxY2E0YzVjYTVkNzFmZjlkM2VlIHB5M2sKKzU4NjE4IDBjYTFkMjliODNjMmI2ZGE5ZGFhZTlkMmIxNzBiOGRhOThkZWZjZmEgbGVnYWN5LXRydW5rCis1ODYxOSAwYzc2ZTUzYzFkNjUyZTEzNzg4M2QxOWE3NWY1MWM3OTY4ZGJkNDhlIHB5M2sKKzU4NjIwIGEwOTgzZjU1Yzk1NzVjZWNmZmUwZDA0Zjk1NmFlZWU0MWMzMmJlYjMgbGVnYWN5LXRydW5rCis1ODYyMSBhNzYwYzFhMDdkMjZmMGE4ZjExNTY1ZjdiYTNlN2NlODJjMTczYjdjIGxlZ2FjeS10cnVuaworNTg2MjIgMzZiMmFhZjQ1N2I0YWUyYjg0MmNkZjFlZWQxODQ3ODNhYjU2MmFjMyBsZWdhY3ktdHJ1bmsKKzU4NjIzIDA4ZWUyNTZhOWJkMTE5MTY0MjMwMzI2ZmMyNTZhOTlmNzdmYWJmZTcgbGVnYWN5LXRydW5rCis1ODYyNCA3NDA4ZTFhZTk4YzRhMDc1YmNhOGFiZWNhN2E3ODZhMTc1YjRhMDNiIGxlZ2FjeS10cnVuaworNTg2MjUgOTc0ZTY0Y2MwODNkY2E5MjZjZDQzMWMzNTA1NDY0OTUyNjkwZTFmYiByZWxlYXNlMjUtbWFpbnQKKzU4NjI4IDNhMTRjOTA0ZGEyMzI3YzA0MTBkZDIwYTQ3YmZhMzliNDIyYTMxMmIgbGVnYWN5LXRydW5rCis1ODYyOSA3MzIyNzVjNDAyNmI1MjBiYTRlMTY0ZTZjZGM5MGNkNTIzMDJlODAwIHJlbGVhc2UyNS1tYWludAorNTg2MzAgZTUzZDk1YzNjMGM0ZGIxNGU5OWViYTNhY2MxNjk5ZjJiNjU2NGUzZSByZWxlYXNlMjQtbWFpbnQKKzU4NjM5IDNkZjVjNzQ2MTYwM2NmYTlhNTViZWM3OWRkMGYxNTdjYjc0ZTU4MTcgcHkzaworNTg2NDAgMzNlZmJmYzI4ZDJiMzc5YjUzYzUyZDI3N2NjMmU2YjQ3Y2VmZWU5ZCBweTNrCis1ODY0MSA1OTBhMWJlZWVmODlkMWRhYzFkY2IxMjRiZWYzM2NhYzdkNmEzN2M4IGxlZ2FjeS10cnVuaworNTg2NDIgN2M3YjQyZjY0ZjQxZDQxOGQ4MzU4NGQ4N2U2NGIyYmM3YWM5NTJjNiBweTNrCis1ODY0MyBiYWMzNDNhZGZmZDlkMjczMmY3YmE0MWVjNmRmMTJmM2JjMzI0MzA3IGxlZ2FjeS10cnVuaworNTg2NDUgM2U2MzQ4YmM5YTI4Mzc0OTEwNDllYmM2OWE3YmIxOGQ4NTI5MjExOSBsZWdhY3ktdHJ1bmsKKzU4NjQ2IDhkZWE1OTk3OWJhMmU5ODhiYWVkNTJlZTVhMjNmZGI3NDlhOTQzZWEgcHkzaworNTg2NDcgNTdjMGQwODg0MzA2NDg1OWVlMWRmY2I2YTdlMWNjZWRiYTg3YmIyYiByZWxlYXNlMjUtbWFpbnQKKzU4NjQ4IDUxYmExMmUwYTFkNTBlMjczMzExZTc0NmUxMmU2MmUxZThkODUwZTEgcHkzaworNTg2NDkgOGZlMjRlNWVlZWZmYjk5ZDNiYWNjNDk1YjliMDYwN2M5NzhlM2MzZSBweTNrCis1ODY1MCBkNjYwMThlZDNkZWQ1OTBiYTFmNmM2NjcwNWVjM2FiMDA0MDM3ZGVjIHB5M2sKKzU4NjUxIDkwMGVmMGViM2Y5NGI1MDEyNTAxZjQwMjhmOWFlZGYxMTU5NjAwOTUgbGVnYWN5LXRydW5rCis1ODY1MiAzNWRhOTE1YWRlZGNhY2MxYTAzMmE4YTg0YjVjMTdlNzU4N2VmMTVmIGxlZ2FjeS10cnVuaworNTg2NTMgODIzNzcyZjFkMmJlOTA4YjVjNTQ5MmUwYjc0YjM4YmJkYjk5MmI5ZSBsZWdhY3ktdHJ1bmsKKzU4NjU0IGZlZDY0MzE0ZDk0NDk4M2ZiM2ZmYjgzMzgwOTQ5OWI3YmE3MjJiODUgcmVsZWFzZTI1LW1haW50Cis1ODY1NSA1MzA1NzNjZDRmN2E3NzgxNjhiZDA2MWRmYWNhOGEyMDBmZTk4MjdkIGxlZ2FjeS10cnVuaworNTg2NTYgNTA5YTczNmViZGI5NzA2MjA2NmExZGE1NzIwYjRmZTliMjkzMGY2NSBsZWdhY3ktdHJ1bmsKKzU4NjU3IGE4ODE4ZmZlMjRkMTFmMTAxNDVjMzUxZTRjNjhhOTVjNzU4MDg5MjQgcHkzaworNTg2NTggNzA3NWQ0NjRkOTM4NDUzZmIzODY0Mjk0Njc2NWZhZjUxZGJlM2M5ZSBweTNrCis1ODY1OSAwNmJkYjg0MzllMjk4NGMyNzY0NzYwODI5NTAwMzllOWM4ZTMxN2FiIHB5M2sKKzU4NjYwIGQzYmYwMDlmYmJhOThkM2I3YzMyMmRjZjFlY2VhZGU2M2I4NjhmN2YgbGVnYWN5LXRydW5rCis1ODY2MiA0YmI2YTBjMzUzYWI2ODZlNzY1NzEyZjI1YjE2NGVkOGFlMWQxOWRmIHB5M2sKKzU4NjYzIDViMTJiMGJkODE4ODBlOThmMDBlOWM5NzM2MmFmZGI1N2UzNWQ0YTEgcHkzaworNTg2NjQgMTk5OGVlMGVmZjJjMTI2NmE5MDc1ZjgwYzJmZDIxNDFhMzU3N2M0OCBweTNrCis1ODY2NSA2YWI2NGY2YjRjMDMxN2U3MTBhYmE3OWUwNWMxYzhhNmZhM2VlMzcwIHB5M2sKKzU4NjczIDA2NTMxODQ4YTM5NDZlYWU4OTkzYTRjNGVkYWMwODkxMTBiZDBhOTAgcHkzaworNTg2NzQgNjRjZTNiZjNhNmE5ZDM4ZGM4NTBjNjFhMWQyNjdlM2MyNGJlZTYzZSBweTNrCis1ODY3NSBmYzZiYTA4OGJkNzdjYWIxOGQwOTI4YTcyOTg3MmQ5MjkxOTJkNGVlIGxlZ2FjeS10cnVuaworNTg2NzYgNWE0ZThiZGFkYjg1MDRjYjdhMTdhZDExNzJhZTBiY2VkMTU2NDk3OSBweTNrCis1ODY3NyA1MGEzNDc1ZGI0NjZiN2Q5ZDNiYTFkZGNhNzI3MWE2MDM2NWQ4ZTMwIHB5M2sKKzU4Njc4IDA1MDJhOGM2NGVmMjBlZmY4YmI4OWM1NTU3OWNjZDZhNzQ5NDEyNmIgcHkzaworNTg2NzkgN2ZiODY4MDIzZDc1YWVmODVmYjIxZTFlMzQyMGFlODJhZWVjMjQ3NiBweTNrLXBlcDMxMzcKKzU4NjgwIDE3MjZhNGM5MTZmMDEzMTQzZGIwYzgwOWVjNmJlZGY4Yzk3YWE5Y2QgcHkzay1wZXAzMTM3Cis1ODY4MSBmYTdjZDhlYWIyZDJjM2UwN2ViYWFkMDNkM2FhMjljN2ZlNmExYmEwIHB5M2stcGVwMzEzNworNTg2ODIgYjEwMmI4MzYxZDVlOTNjZWY1NDFmNzk5ZWFlMzNkYTNjOWZkMTEwYSBweTNrCis1ODY4MyAwNDBmNTIyZmVlMTEyMzhmMjA2YzhhMDYxYjBkZWE3YWY2ZDBmNTRmIHB5M2sKKzU4Njg0IDIzZTZlYzFiNWYzNTBkNmY1NjU0Y2E3OTZkZWJmMzNlMTQ3YzFiMGQgcHkzaworNTg2ODUgZmZhYTZjZTRiZmI0Nzg5YmVjZmI5ZjZmNzk2N2ZhNmIzMzVkMDkyNiBweTNrCis1ODY4NiBkNDZhMzFmNWM1ZGYyNmIwOTEzZDYyZTNhZDhlMzNlNmIwNmIyOTMwIHB5M2sKKzU4Njg3IGZkNGQxMGU5OTNiNzljNDM4ZWIxYjJjNjcwZWE3ZDU4NWE2NTdiNjkgcHkzaworNTg2ODggOTdlMmU4OWM2NTkxMmYyZDYyMmE1NTkwMzM5Y2QzM2FhNDUwZWE3OSBweTNrLXBlcDMxMzcKKzU4Njg5IGUxODlkMzJiMzcxOTA2OGJhZjZiZjI3ZWRiNjQ3MDI2NmQ0YTAyN2MgcHkzay1wZXAzMTM3Cis1ODY5MCA2MWJjODJkZjM1ZmY5MDZhNzM0ZGQyYjNmN2E1YzgzNWNhMDg0NTAyIHB5M2stcGVwMzEzNworNTg2OTEgNWQwYmU5N2YxNzA0MGNmM2U0YmRjNzBkMTQwN2I1NDg5NzI0NDhjOCBweTNrLXBlcDMxMzcKKzU4NjkyIDJlOWVkY2RkZGQ0NDNhNTNjZDhmZDVhNzUzNjVkYTY1ZjM5ZmMwM2MgcHkzay1wZXAzMTM3Cis1ODY5MyBkYWNjNzMwYzcyOThkNTkwMjYxOTE4M2MxMjdhYjY2YjdkZGI4ODFkIHB5M2stcGVwMzEzNworNTg2OTQgOGZkM2RiNjUzMzE4ZWJlZGQ4MDY4N2JmMGRjNjQ0YWY0YWYyNmQzOSBweTNrCis1ODY5NSBkYzk4MTYyZWY4NDRmMGE2ZjFkMmRlMDY5MDEyMjY1MTU1YTAwODkwIHB5M2stcGVwMzEzNworNTg2OTYgZjViYzk0ODFmODgzZmNhNjRiOTVlM2FmMjdkZjY4MTNlMjNlZDcxMCBsZWdhY3ktdHJ1bmsKKzU4Njk3IDYwOGVlNGI4MjBhZmE3MjBjZGEzODEzYmVlOGZjYmEwMjFkYTQ3MjMgbGVnYWN5LXRydW5rCis1ODY5OCAzNjU5MTNkN2FmN2Q2NWQ0OGJkZjQ4ZjY3ZTEzMTI2ODVmYWI3YjA3IGxlZ2FjeS10cnVuaworNTg2OTkgOTFmZDY1MDQ1ZWVlNjhhZGJmODRlZmYzZDY2MDZkNjQxOTc3YzAwYSBweTNrLXBlcDMxMzcKKzU4NzAwIDczNjBjMTJiZDgxZDQ5ZWQ4YmFjNTFkMGY3NzU5M2MyMjQ2MDhlNDEgbGVnYWN5LXRydW5rCis1ODcwMSA1MWE3Mzc0MTA1YWM0YzNmNWNiNTMxODcwMjhmYmIwZjY5YmNlZTE3IHB5M2sKKzU4NzAyIDNmNDY3YWNjZWNkMmU0NjJiMGQ3YjViZGY4ZWE1YjZkZmNhODk1NDIgcHkzaworNTg3MDMgMTJkMjBmZGZlYTYyZjUxOTc0YzUwNWM5OWIyMjUzYjI5NjZjNWZmNSBweTNrLXBlcDMxMzcKKzU4NzA0IGQ4Zjc0NDJiOGNhZTg2NmZhOGZhNTEyZjk3MzAwODgxOTQ4ZjUxN2YgcHkzaworNTg3MDUgYzM0NzIwNzc3Y2I2NmZmMzRhYTRiZGU4ZWRiMDdhZGM3NDY5NzBkYiBweTNrCis1ODcwNiA0MGUzYTJkYjVkOWUzMDNkZDdhOWVlMDU0MTgwYzE4MDljMjMzNTRlIGxlZ2FjeS10cnVuaworNTg3MDcgMzIzNTQ4NzBkZmIyYmI4ZmY2MTI2YTZjYzFlMzVhNWRmNDM3M2U3MyBweTNrLXBlcDMxMzcKKzU4NzA4IDc2YTU1ZjdiNTA2MDA3NTJhMWEyN2E1MWZiZDg3NTNhNjczMTZmMmIgcHkzay1wZXAzMTM3Cis1ODcwOSAxMjRjYmYxYTBlM2VhNDgwNTE5MmU5ZTg3YzVjZThiZTdjNWI0NDdlIGxlZ2FjeS10cnVuaworNTg3MTAgYTVkZDI3OGIwYzFmYmE0MGRkNzlmNGNjNDc4ZTQ2MDQ4OTU0ZWJhYSBsZWdhY3ktdHJ1bmsKKzU4NzExIDAwYjEzNmI3ZGE4NDRkMzJkZTg4ZDJlYWE1ZDkyMWEyZmE5M2RhOGQgcHkzaworNTg3MTIgNDdjNTUzZWI3NWQ5MWQyNmJhMjYyNzU0NjNkYTk5MWYwMjRiNDI0ZiBjdHlwZXMtYnJhbmNoCis1ODcxMyA4ZjdmNmM4NTBkYmQyNjJiNjljMmI1M2M4NGYyMDljZTJlOWM2ZDY1IHB5M2stcGVwMzEzNworNTg3MTQgMjZmZTcwODlmMTRhZjFlYmQyMzdkYmZlNzFkZGJkMzVkMDIzY2RkOCBweTNrCis1ODcxNSAzMzQ4MDc2NWY2NjkzMDFmYjQyMWZiNTBhMWQ3ZDMwYzAzM2ZkMTE4IGxlZ2FjeS10cnVuaworNTg3MTYgZTJmZTU4NjA0Y2IxY2ViZjc4ZWI0NjRhMDBiNzkxZjQyNTEyYmY4ZCBsZWdhY3ktdHJ1bmsKKzU4NzE3IDhlZGViNTE2OGJmNTE2NjQxNDY3M2ZkOGI3YWI3ODkzYzVkNWIxMGUgcHkzaworNTg3MTggYzEyMTRiZDZlZDE2MDUyZTk5ZWUxZWNlMDE1NDY5ODU0Mzg4ZDJmYSBweTNrCis1ODcxOSBlNTEwYjcxNmJkODBiN2E3NjljZmQ1YjliYzEzNDY2YWE2YTg4OTI0IHB5M2sKKzU4NzIwIDA0NjgyNjg3ODE3ZWI5NDRhZjA5OTQ4YjU3YjFjZjFkY2E4NzY1ZjUgcHkzaworNTg3MjEgZTkxNTA2YjRiODVmOGFiZDAzZWY4Zjc1M2JhNDRiY2U4MDMwNGU2NSBweTNrLXBlcDMxMzcKKzU4NzI4IDc4YThhZWE2Y2IwYWU1MWUzMmQ1ZmMyNjJhMDlkNjNmNTA1NGQyZjQgbGVnYWN5LXRydW5rCis1ODcyOSBlMjM0ZDk3NmI1ZDQ3YjcwMDE3YzliNDNmNzJmNzdkNTk2M2U2NGI5IGN0eXBlcy1icmFuY2gKKzU4NzMwIGUzYTAxZjQ5M2U5NGYzNTgzODA4YTljZGI1YjQ2MGMwNDcyY2U1ODIgcHkzay1wZXAzMTM3Cis1ODczMSA0MzFjNWExYTYyOTAxMTBkMTBlZTlhMzBjZGJkMDAwYjU0ZDFhZGIyIGxlZ2FjeS10cnVuaworNTg3MzIgYmNmNjI5ZTQzMDgyNzgzYjI1MmVlMGIzNTAxMWFiOGZlMTMxOGQ2OCBweTNrCis1ODczMyA1MjUzMWI0ZjUzNWQzYjk0OTY5ZWMwNzRmOTA5ZTA5MmEzOWExMTI2IHB5M2sKKzU4NzM0IGVlYjM3MjgxODk1OTU1N2YzZmZkNGNlODgzMDAwMWQ4MzZmN2Y0YWUgcHkzaworNTg3MzUgZmU1NzBjZDViMThmMWYyZDY2NzBkNTdiOTVjOGFkNDUzYjEyMDYyYyBweTNrLXBlcDMxMzcKKzU4NzM2IGQ0N2EwNGEyZTBiYjQ1ZTVlOTE2NzkxNWE1NDViNmQyYTljNmJiNTIgcHkzaworNTg3MzcgZWE2NTAxMTM0Mjg2OGM0MjJiOWU3MjhlOTk1OTk2NTFiNzA0YzQxMCBsZWdhY3ktdHJ1bmsKKzU4NzM4IDYwZDk2MTIwNDYwYjFjNDcyZWE5ZGY0MzI4ZjAwZTVhZTc3NDg5YzAgcmVsZWFzZTI1LW1haW50Cis1ODczOSBlNDIwYWE3ZjUwY2I1MGRiMzU0NTQ4YzkyZjkwMGU5NTBkOGI4ZjQzIGxlZ2FjeS10cnVuaworNTg3NDAgM2U3MzhlNTJhM2NlYjExYmJlYTQ1NzM0MjVmNTc3NzAyYTY2MDZmYiByZWxlYXNlMjUtbWFpbnQKKzU4NzQxIGJlZjg4ZGE4MjFhNGMyYzcyNjY5YTBlNGNkNTM2ZmQ1ZjNmNmUzZTcgcHkzay1wZXAzMTM3Cis1ODc0MiBhMmY5ZTZjZWYwMmY3OGE3YTZlNDg3MGZmNTg1NWIzMjNkYmRlOWIyIHB5M2stcGVwMzEzNworNTg3NDQgZmJjNmZjNmRjNGZmZTFiMmMyNzQ3YzcyNTBhYjU1ODE3YTc1OThhOCBweTNrLXBlcDMxMzcKKzU4NzQ1IDQzMWJjOTA5NDAxOTU1YTIxMDNjZDBjZDZkYWUzYTZhMzkzYjE5MDYgbGVnYWN5LXRydW5rCis1ODc0NiAwMjFjZWUxODlmOWUxYWJlNWI3YzIwMDA3MjIxOWMwNTAwM2MwZmE1IHJlbGVhc2UyNS1tYWludAorNTg3NDcgZmQ2ODVkN2U4NTlhYTEwZGJkNGQ2ZTM5NDVjODQ4Yjc3OTIyYTk2OSBweTNrCis1ODc0OCBmODdkYzZhMDRjZWFiYTMwN2MyMDhiZjJjMWIwMmNiYTA4NTg4ODllIHB5M2sKKzU4NzQ5IDNlNWVkZjE5ZDVmMDVkMmZmYTFkMDIxZGE3ODE2MTVmZDJkODVmMDQgcHkzaworNTg3NTAgYmQyZjhiYjExYmNjMzYyNTFiMWYwYzQ0MGI1NTY4ODYxNzk5NjcxNyBsZWdhY3ktdHJ1bmsKKzU4NzUxIGU4ZDAwM2IzODcwZjAzZTE2ZDUyOWY4ZTNlMGZmZjg2ZDQyNWY5ODIgbGVnYWN5LXRydW5rCis1ODc1MiAzZDg2NjU3OTExN2RhNzA4OTc4ZGQ3OWE3ZDJiZWE1OWUwYTk4MzYxIHB5M2sKKzU4NzUzIDc5ZjVjYTllZTE1NDljMTVmNTU4OGNhM2U3ZDNhMDExM2I0Y2Q5ZjYgbGVnYWN5LXRydW5rCis1ODc1NCAwZjc0MWM4OWQ4MDNhYTM4ZTI3N2FhZmQ1NGQ5YTM2YWRiZDNjM2Q5IHB5M2sKKzU4NzU1IGMwMGRjNzU4NjcxNDNlNzk4OTAzZGI5MmY1YzYxNWQ3NWQ4OWQ2MmIgcHkzaworNTg3NTYgMmI3YWFkYmNlYTM0ZjY1ZTQ4MzUzYWU2OWU5ZDhjODYyOTFmZWJmMCBweTNrCis1ODc1NyAxNTdiYjAyODkyYmM5NGY3MDliNDZhZWUwZDhlM2U3NzNkZWFhNDhmIGxlZ2FjeS10cnVuaworNTg3NTggNWExY2QzY2EwYjM5MWNiN2U0NWU0MWQ2ZjU1OWE1NWI1MWYyMmEyMSBsZWdhY3ktdHJ1bmsKKzU4NzU5IGMxOWI2ODQ5NDExYzAzMjQwODc2MzllNGMwODc5NWI1YmI5ZjU0MzcgbGVnYWN5LXRydW5rCis1ODc2MCBlZDNjMmFhYTAwMmEyYTdiMDliMTQxZjBkYjc1NjFiZjM4MjllMmJhIHJlbGVhc2UyNS1tYWludAorNTg3NjEgOTlmZjlkY2YzNzYwZTEyOGQ5ODlmOTdkM2I0Yjk5ZmUyODA3NDI2NCBweTNrCis1ODc2MiBlNWViOTNhMGEyMGUwNTIzMWU4MjhhNWE1MmE1NTk0ZjgwZjViOTkyIHB5M2sKKzU4NzYzIDMyNzY3YjRiNzkyMWE5YzllOWM2YzJiOWM0MzJjNWFmNjNlM2JkYzIgcHkzay1wZXAzMTM3Cis1ODc2NCA4YWMyODRiNjVlMzdlMDY4Yjk4MmE3MjJlMmM0NDUyNTBkZTAxY2FlIHB5M2stcGVwMzEzNworNTg3NjUgOGE0MGI4MzFhYjY4OTljNTA0OTM5NDQ3NTk3ZjU3OTZiOGVjMjc5OSBsZWdhY3ktdHJ1bmsKKzU4NzY2IGM0NjI0ZGMwZDQxYjEwN2JiYWFlMDhkOTM4MDQwOGJkYjdiMDM1ZjkgbGVnYWN5LXRydW5rCis1ODc2NyA1ODkwZDUxMGFhNmY3NDY1MTg5MWU0NmQ5NWVmMTEwZTlmOGFjZmIxIHB5M2stcGVwMzEzNworNTg3NjggODk0OGY4ODFlNDAzZmIyZDUxZTVhOGNiNDA3ZDI5ZDU2NzEzN2NlMiBweTNrLXBlcDMxMzcKKzU4NzY5IDI3NDg2YTAyYWU2NGZkNWE4OTUzNzUwMmU4MTI5YTdjMDk2NWM0ZmIgcHkzay1wZXAzMTM3Cis1ODc3MCA4NzBmNzA1NjBjOGYyODkxYjM0MGU5MThlZDA3OTQ4NGRmYWMzZWYxIHB5M2stcGVwMzEzNworNTg3NzEgYjZjOGE2NjljNzljYTM2NjA4ZjA4MWY0MGZlYTI4MzgzNTRjYmRjNyBweTNrLXBlcDMxMzcKKzU4NzcyIDA0YmU4OWZhNzQ5N2MyOWUyYTNiMDUxY2ZmNjgxMmIyNjMwOTEwNDIgcHkzay1wZXAzMTM3Cis1ODc3MyBkN2FiNWFmM2M5OGVhOTY1ZTU2ZjBlZjAxNDg5MjQwYmQ4OTk2MWQwIHB5M2stcGVwMzEzNworNTg3NzQgYjRlOGU1MjNiODgyZWUyNmQ2ZTE3NGYwNDVjM2E2NWUyY2YxODgyNyBweTNrCis1ODc3NSA1YjNiZTRhYjJmZTFkMTFlMzNhZGMxZTUwMzRkMWU0MDlkMWNkMTk1IHB5M2stcGVwMzEzNworNTg3NzcgZWUxYmM4MzRkOGM2ZmNkNjUwNTM1NmM4ZjgwZjZmNmQwNzgzZWRmNyBjdHlwZXMtYnJhbmNoCis1ODc3OCBjNTBlNmY5MjQxOWYzYTAyZjBkMTc2OWMxMDRlZDA3NzJlNmY2N2U4IGN0eXBlcy1icmFuY2gKKzU4Nzc5IDExYzJmZGU3OGQ1NzcxYjczYzJhZDkzZmFjYTQ3ODllZDBkNzc5YWEgcHkzay1wZXAzMTM3Cis1ODc4MCA4OTA0YTBiY2JmNGZmOTIyNmFjOWM2ODFlM2U0OTc2MzM0YjIzMGZjIHB5M2stcGVwMzEzNworNTg3ODEgMmE5Mzk0ZmI1MGFjMTZjNzk2N2I2MDljNTFkNDUxYWQ4ZThjOTkwZSBweTNrLXBlcDMxMzcKKzU4NzgzIDhjN2RhYWMwZDRiMGIzZjQ0NmJjNzJkNmE4M2RiMjViMzNkOTE2OGIgcHkzay1wZXAzMTM3Cis1ODc4NCA1ZmNiNjYwMmM0OWE5YzVkYzExNGRjOGYyZWI2N2EwMWE2NDRjNTA1IGxlZ2FjeS10cnVuaworNTg3ODUgYTdmOTVlMmI5MzU4MjRjYjFiYmNmYjI3YzRjMjllZTIyMGJkZDc0ZiBsZWdhY3ktdHJ1bmsKKzU4Nzg2IGI2MTA4Mzc3NGMwOGM0MDU0Y2MzY2M4YTY0ZGFiMjY3OGMyYzA4NjAgcHkzay1wZXAzMTM3Cis1ODc4NyAwNjA0NmQxNzkwYjkzMGI5NGQ1Mjk5ZTlhOWIyODdkNmQ0Mzg5MTkyIHB5M2stcGVwMzEzNworNTg3ODggOTBkNWQ4NGNhMjdkODFmNGJiYTg5ZmZkNDkzN2FmYjMwNmRhMGNjMiBweTNrLXBlcDMxMzcKKzU4Nzg5IGE5ODIzNDQ1MTY2OWU4NTIzMjFlMGRmMzE3OGY2YTJmZGY5ZjQ0YjUgcHkzay1wZXAzMTM3Cis1ODc5MCA2ZGE5MGE1YWU5ZmFhMDM4YmFmMTk1MjYzZWYwZTA5MmM1NWFmM2ZmIHB5M2stcGVwMzEzNworNTg3OTEgNDI2NGEwN2EzOWQxM2Y2OTQ2NTlkYjI2ODM4NWE1MjI3ZWIwODJkNiBweTNrLXBlcDMxMzcKKzU4Nzk0IGEwMzBlY2VhNGMyNGI3NWNhYWY4ZWRjMzE4ZTlhMTdlNTI0YjRhZGIgcHkzay1wZXAzMTM3Cis1ODc5NSAyODAzZTk2Y2M2NGFmOGM0MTcwY2QzZDAwZjA0YTc2MGJmZmE0YTBlIHB5M2stcGVwMzEzNworNTg3OTYgNGIzNjIzNTY4ZTZjZjg0Yzg5YjUzNjg1ZDIwOTVhNzU1M2I1YTI2YiBsZWdhY3ktdHJ1bmsKKzU4ODAwIDg0NGFjMmNkZjdhOGUwNTkxMWRjNGE2OWQyZDg5MTVlYzM4MmEzMmIgcHkzay1wZXAzMTM3Cis1ODgwMSA3YzQzZjRkY2M3YzdjMGI4NjA5ZTQyYWI0Y2E4N2I5OWQ1MmI3ZWE3IHB5M2stcGVwMzEzNworNTg4MDIgNmQ0NmZlYjE2NGI2YmRmNjdjYjgzNWNmMGIwYzFkNDBjNTMzNDMwMiBweTNrLXBlcDMxMzcKKzU4ODAzIDAwYzk4NDY2NjE1YjIzYWY1NjgzZTZmMDliMzE5ZWYzMzNiOTI0MzIgcHkzay1wZXAzMTM3Cis1ODgwNCA4YmIzZTc3NjhjYTY4ZmYyMzhmZmRmZGYzNmZlNzMzOTMyNTAxZGIwIHB5M2stcGVwMzEzNworNTg4MDUgYWQ4YzNmOWVjMWIyOTc4NjJhNjQzZjkwMjlmNzk0NTMxYTdjYmQ1NCBweTNrLXBlcDMxMzcKKzU4ODA2IDdlZGJmMjU4Y2FkMDAxMTkzMjM5NTgyNmMwY2E1MmY2ZjFkNjg5NTUgcHkzay1wZXAzMTM3Cis1ODgwNyAxMTlmODQxYmI4MTY0YWRmYjdjMGRlYzk5NzllNDEzMzU4ZTczMDkzIHB5M2stcGVwMzEzNworNTg4MDggMDExMzVkZGQ3MjZkY2E5ZTE5ZmZiNjRjYWIxYmQ1OTIxMzg4ZDg0OSBweTNrLXBlcDMxMzcKKzU4ODA5IDM1NzUyODQ4NTc0MzUzMjgyY2VmMmZiMWQxYjNiYjY2MzhhNGRiNzIgcHkzay1wZXAzMTM3Cis1ODgxMCBiNDliMzEwN2U0MjAzMGNiZGY3YmZlYjgwOTRhNTk3OGMxYWRiYTMyIHB5M2stcGVwMzEzNworNTg4MTEgYThlN2NiOWUzN2M5NDVkMTJmMDM4MDRlNGQ5YTE3NGRlMDBlNGZlZSBweTNrLXBlcDMxMzcKKzU4ODEyIDE0MmYyNjk0N2FiYTdkODQyMTE5YjA3YzQ2NjFkNWI3YzFhNjVkYjcgcHkzay1wZXAzMTM3Cis1ODgxMyBkMjQ5NTQ1YmE3OTIyNGE0Y2IyNjhmZDcyZGU0ZjU5NDk4YjE3MGQ1IHB5M2stcGVwMzEzNworNTg4MTQgY2ZjZmFkODdlYjdkMGY0ZTEyNzZiMWRiN2I4MDQ0ZDEzZWU3Y2Y3YSByZWxlYXNlMjUtbWFpbnQKKzU4ODE1IDcwNGU2NzExZTUwZGNlNWU2MWEyNzUwMGRkNzI0MzVlYTc4MDRlZTggcHkzaworNTg4MTYgZDJiYTJiZjRlNzZiYWRhNTg0YTVmNTE4Njk1MzkzMDI3MDE2NDM5YSBweTNrLXBlcDMxMzcKKzU4ODE3IDMxN2JhNTNjZDQ1YzhlNmViMGJhNWY3NDI0MDllNjgyNzkwZjczZDUgcHkzaworNTg4MTggNTIyYmJiOTAwNWE0MTdkY2QxN2VkYTljNjI3NGRmMTVlNjEzNGY0NyBweTNrLXBlcDMxMzcKKzU4ODE5IDJmZjBlODFlNjhmY2EyMzA2ZTUwYjdhM2M3NTdhMTAzMTdmNTM4NTIgcHkzaworNTg4MjAgYTQxNDBhMjhjM2U3NjFjYjIzZjdlYzE1ZDFlZTViOTQ2NmJlOWUzZCBweTNrLXBlcDMxMzcKKzU4ODIxIDg3ZDM4ZjQyZDE2MzQ0MGNhNDJjNDZiZjY4ZDVjZjBmNWQzYTVjNWYgcHkzay1wZXAzMTM3Cis1ODgyMiA2ZTQ5MWQxMjc2NWM1ZjdiNGNmMjUxYjIxYjUzNGY0OWFkNjNmOWZjIGxlZ2FjeS10cnVuaworNTg4MjMgNDQ5MGYzMzViYmNkMzhiYjcyMGY2OTgyODQ5Yjc1NGUyYzhhM2EwNyBweTNrLXBlcDMxMzcKKzU4ODI0IDZhZGM5OWE2ODg4ZmRlZDBkMjdjMzU1MGM5ZmRhZmRmOGZkZWE5MDYgcHkzaworNTg4MjUgOGZkNjk0ZDBmOTAyYjg2NDdiNGNjMGUwMzRkNTI5YjNiNDQ0OGUxMyBweTNrLXBlcDMxMzcKKzU4ODI2IDBjNTE3MTc5Y2I4YzQwNWM1NjgwMWM2YjhhYmJmYWZjM2VjYWMyYTggcHkzay1wZXAzMTM3Cis1ODgyNyA5MjFhZjdmMjc2MDBmN2M0OTQzOWNlNmEwNTJlNzQ4ZDFjNzZhMjU5IHB5M2stcGVwMzEzNworNTg4MjggOWRlMDcyNzViMDA4N2E2NmVlNjYyM2E5MWY5Yzc3OGU3NmI4YTQ3YiBweTNrLXBlcDMxMzcKKzU4ODI5IGZkMWMxMGQyMWM5ZWU0MzNkNTFlODI1ODU5NzA5NzUzNjU5OWQxYzEgcHkzay1wZXAzMTM3Cis1ODgzMCAzY2JjNzhjM2E0MDM1NDk1ZTRiMmYwNDczODdkYjhkNzdkNDk0MzFhIHB5M2stcGVwMzEzNworNTg4MzEgZjYxYTBlZTc0NzZmYWM2MTIzNGJlYTA3MzBjYzg2YjRiNjc2NzRkYiBweTNrLXBlcDMxMzcKKzU4ODMyIDQ4ZTc3OTIyNDExZDljNWE1OGNjZGM1YTM0MzNjYjlhNDYwZTQyNjYgcHkzay1wZXAzMTM3Cis1ODgzMyBiM2Y4NmM0MWQwYTNhMDcyNWM4OGMyNDMxODM1N2QzNmFlYjFjMDRmIHB5M2stcGVwMzEzNworNTg4MzQgZjdiNDUyOWQwOTg0MmEzZDZkYTkxODMzN2RmNDAxYWJjNWExNjM3ZSBweTNrLXBlcDMxMzcKKzU4ODM1IDE0ZGZlMmYxMzU4MjMyOTllNzg5MGEzNTYyYzhjYWRiMDYyNDMxMzggcHkzay1wZXAzMTM3Cis1ODgzNiBlOTAwNjVlMTcyMTIwMjA3ODZiMjUxZDM2YzRhZTQxMGJmNGIyZDc2IHB5M2sKKzU4ODM3IDY1OGNkMzRhOGM1ZGJlMTk2OGNjOGU3YWNhYmZjOTIwNTdkNjIzODcgcHkzaworNTg4MzggZGUzYjYzZjhiMTdiNmNkZTY0YTFmMTAxNzQxNWViMTkyYTljZWM5YyBweTNrCis1ODgzOSAwM2MzYTU0MDcyZDkxZWY0MzFiYmM1NzgxMjY0MDMyNTQ5ZTI4YTdmIHB5M2stcGVwMzEzNworNTg4NDAgMTg5MTI1N2RmZDExM2RhNjgyMjQxNzNiZjM3YjY3MTk1ODFlM2E1NyBsZWdhY3ktdHJ1bmsKKzU4ODQxIDA5ZjkyMmM0Zjg4NzI1ZTZhZDdlOTU5MTRmOGY2YWFhNGRlN2I2YjggcmVsZWFzZTI1LW1haW50Cis1ODg0MiBlZjFkM2U4NzI5NmYzNjU4OTEwNTk3N2NlZjI0ZTdkZTlkZjg3MTUwIHB5M2stcGVwMzEzNworNTg4NDMgZjFmZGQ2YjcwMTVmMDA1YzUyYWYxMWYyMmNlODkzMjJmMjgwYTJlOCBweTNrLXBlcDMxMzcKKzU4ODQ0IDU4NWFkNzcxM2VmZWZlZTQyMGEyNjUyMTc5NTcwNDg5MWI4NzBiOTAgbGVnYWN5LXRydW5rCis1ODg0NSA0NDdkMmE0NTAxY2I3MmE2NWMxZTc4ZjQ3NjhiZGI2ODljNmMxYWQzIHB5M2stcGVwMzEzNworNTg4NDYgNTA0MjNmNDRlNmRjZmZjNWQyMWIxNzA2N2I3ODRkNmQ5YjIyZDAzZCBweTNrLXBlcDMxMzcKKzU4ODQ3IDcxZjg0MzU3NTFiYWE1YzcxZmUwODNlY2QzM2Q5NTg3YjI5ODU5YjAgcHkzay1wZXAzMTM3Cis1ODg0OCAxNTNjMGM3NDQxYWFmNmZlMTE0MDgxYjk2NmE4OGMwNmNkNGRmOTQyIHB5M2stcGVwMzEzNworNTg4NDkgNWFjZDlkZjI3MTA4NTI4M2Y3YzI4NzkwNTM1NGQ5ZTY1Njg5YmQwNyBweTNrLXBlcDMxMzcKKzU4ODUwIDUxYTBkZTliYWIzNzQ2YWYxYTVkN2Y5NjMxY2I2ZWU4YTVkNjgyNzYgbGVnYWN5LXRydW5rCis1ODg1MSA4ZDRlOWM0ZjAzNTBhMWUwYjRjYTFjMzY3ODAzNDMxZTg2ZTlkZTRhIGxlZ2FjeS10cnVuaworNTg4NTIgMzc0MjNjNzZlMjA4NTg2OGE5NmRkOGFiMDA1YWMzZjZjMzYxNGE2ZSBsZWdhY3ktdHJ1bmsKKzU4ODUzIDBmZDFjYWE4NTIyNWZhY2EyNTlmZTM4ODAxNmUzNmQ2ZTA2MDA0ZGYgbGVnYWN5LXRydW5rCis1ODg1NCAzNzE1Njk0NWNhMzUxNmU1YjdiOGE2NTU5YzczOGVkZDA5YTZkODc4IGxlZ2FjeS10cnVuaworNTg4NTUgMDFlNjMzM2YzYjZjZWYyMzg3OGJmY2QwMTAwODQ4M2YzYzg3Yjg0ZiBweTNrLXBlcDMxMzcKKzU4ODU2IDE5ODdkYmU3ZWI2ZTdkNzE3YzcwODRhNGIwMTA1Yzk1YzA5MmU5NmYgcHkzay1wZXAzMTM3Cis1ODg1NyAwOGVlM2M3M2I2YmVjYWMxNjI1NTA1ZDZiODZmODhmMTZkYzk5NzMzIGxlZ2FjeS10cnVuaworNTg4NTggNzBlZjBiNmE4MzQ1ZjEyMmE5NTk4NTBiMTY5ZTI1NzBmNmM1MGRlMiBweTNrLXBlcDMxMzcKKzU4ODU5IGZlOWMyMjMzY2QwNGY4MzI4ZjkxOTQ2ZjdiNzgyOTZjZmUwNGRkYzggcHkzay1wZXAzMTM3Cis1ODg2MCAzMDc4ODE0NmYwYTZjMDdhYjEzODI2ZGEwNDQxNzgyOTA3N2EyZjFkIHB5M2stcGVwMzEzNworNTg4NjEgNzc4ODIzYzBmZmI2Mzk5YjNhYzc4YWViMDZjNTBlMjFkOTI4MjNmYSBweTNrLXBlcDMxMzcKKzU4ODYyIGYzYzMzN2U5ZDFlNTk3YzNhZDRhMzkzYTFiM2VjN2ViMTE0YTg2YWIgcHkzaworNTg4NjMgZjlkNDAxZjFlMWVmMGIwYzdiZmM1OWFkOTNhYjE4YmQxMmUyZTdmZSBweTNrLXBlcDMxMzcKKzU4ODY0IGM0OTBhZTA4ZDYwOGIwMTYwODM4YmI2MzM5NzYwZTgxNzcxYTFkZDUgcHkzay1wZXAzMTM3Cis1ODg2NSBjMTU1ZjFkZWRhNjVkODQ3YWFkZmMyMmY1YjhlOWNhMDBmY2Q1ODlmIHB5M2stcGVwMzEzNworNTg4NjYgNzlmZTdkMDYyMDZjMThmNDQwYzRlNTgxYWRhZTFiZWRkMmQzNzQxZSBweTNrLXBlcDMxMzcKKzU4ODY3IDUzYWYwNDZjYzJjNTJlMmU4M2U3NDkyYTc1ZDI3ZDVmZjc1YjQ1NjAgcHkzay1wZXAzMTM3Cis1ODg2OCBkN2RiNDY3Y2Q5NDA3YWEwOTY0MDQ3YTRiMmQ1YjNkZWE2NGU5ZDM5IGxlZ2FjeS10cnVuaworNTg4NjkgYTQ5NGE5MTUxMmVjOWVlNDU4MmVhNmM2YTVmZGYxODZmZWQ3MGU3ZCBweTNrLXBlcDMxMzcKKzU4ODcwIDhkMzFhMzZmMGNhYWU1MDg5ZGUwY2Y5MzQ4YzE0ZWFkNGFhNWNiZTQgcmVsZWFzZTI1LW1haW50Cis1ODg3MSBkMjQ4NTJiODZkNzBiYzI2NGU5MWM5NzQwYjZhNzcyZGExMTI2MzRlIHB5M2stcGVwMzEzNworNTg4NzIgMjlhNTk4ZTY5MzgyNjBmODY3MDkxN2I5YzIxYzEyMGE1MzMwMTUxNCBweTNrLXBlcDMxMzcKKzU4ODczIDg3MTc4ZjM1ZDcwMDc0OTU3OTZhOGM1YjE1MWIyZDkzNjljNWU5YWYgcHkzay1wZXAzMTM3Cis1ODg3NCA1NTMxMzg0ODA5MTg1MzY1ZjYxYWY4YjZhZjkwZWFiYWVhYTcyMDYzIHB5M2stcGVwMzEzNworNTg4NzUgY2M2NWI2NDAxOTg5NDZlNGJmYmEzMjc1YTAwMTI5MTZmZTgwOGVlZCBweTNrCis1ODg3NiAwYjIwNjc5MGZlYjY0M2VjZTNjZjhlMTBkYjUzYWZlZDkyNjcwMzA2IHB5M2stcGVwMzEzNworNTg4NzcgZDgyNGMzMTVmY2FjMjhlNDVkYWY0YmIzNmE2NTc1NjU5YWI4YzExOSBweTNrLXBlcDMxMzcKKzU4ODc4IGRlOTczOTI2YTM1Y2ZkMjUzMjM4OGY4ZWQ5NGQyZDU1NWEzNDE4ZWUgcHkzay1wZXAzMTM3Cis1ODg3OSBjOTNhZDZjNDE3ZGYyNTFiZmFhNmIyM2RjMjlhZDlhNDc1ZGY1YmQ0IHB5M2stcGVwMzEzNworNTg4ODAgOTFiYTE2OThhMDExODZjMmQ2YjdjNWFhOTVkMmQ5YTIyZTgyMGExOSBweTNrLXBlcDMxMzcKKzU4ODgxIDZkYjM4MDg1MmY2M2ZlMWNlZjJiYTZiMmQ1MjVjZjU4N2JmMTFiYjggcHkzay1wZXAzMTM3Cis1ODg4MiA5MzBjNjBmOGFhZmZhNzI4OThmMDk0MjAxMjQ3MTU4YWNmMjE4NmMxIHB5M2stcGVwMzEzNworNTg4ODMgZmMzYmVjMjBlYzE1Mzg4OGIxNmQ2MDQ1YTBlZGE0OGQyOGNjZWJhMyBweTNrLXBlcDMxMzcKKzU4ODg0IDAyMjU3ZWM1NGQ3OTEzY2Y3ODJhZjQxNjgwYzY0NDAyMjMzYzBmNmUgcHkzay1wZXAzMTM3Cis1ODg4NSBjYjhlZjI1NTFkMGQwZTM0ZmM5M2M4ZWU1NDBmZmNjNmUyZjRiNTg1IHB5M2stcGVwMzEzNworNTg4ODYgYjMxMGZkMmIwMTg0N2EwYzkxZDA3YThmYWIwNzg1YzI3MmUxZDBlYyBweTNrCis1ODg4NyA5MGQwYzM3NjZlOTI4YTMyYjYwYmNhNjNmZWFkZjNhM2E5NWIzYjk1IHB5M2stcGVwMzEzNworNTg4ODggMGQ0NjJkNzg5YjE4ZWM2YTU5ZWJlMjExNjY4OGQ1YjY5ODVjMjE1ZCBweTNrCis1ODg5MCBjZmU4ZmNlZDhhMTIyNmFmZjBmMTQ0YjBmOWI5NGYyM2Y4NzQ1MDI4IHB5M2sKKzU4ODkxIGM1ZjcwOGJjNGNiN2ZjMDI5YTc2MjkzNzMwMTFhNDNkOWZkNTgxZTQgcHkzaworNTg4OTIgNzM0N2Y3NWI5YzM0NDJiZDYzM2FkYWU1MzI2OThmMjRjMmEyYmUwNyBsZWdhY3ktdHJ1bmsKKzU4ODkzIGRhNThjZjliY2IwMWI1YTcyNmJjMzY2NWUxY2E0MDM1NjQ3Yjg5YjEgbGVnYWN5LXRydW5rCis1ODg5NCAwNmJiODEwNzQ3ZTFkMzYwNzFmZWVhMmRiZGIxZDlkNGI4YjllYzBlIHJlbGVhc2UyNS1tYWludAorNTg4OTUgOWYxN2E5YTViNWFlZWQ3NGIyYmUxZWYwYmI2YjgxZDllOGI2YTkxMyBsZWdhY3ktdHJ1bmsKKzU4ODk2IDhmY2MzZjQ2YzY5ZGUxNzNmMjg3MzdiZTU3OTM4NTNhZTAwYzNmZTcgbGVnYWN5LXRydW5rCis1ODg5NyBmYTgyZWM5YzgwY2Q2Nzg2N2ZmZWQyMjM5NTU3MmE5OWI1ZGJmNGU2IHJlbGVhc2UyNS1tYWludAorNTg5MDAgZGU2M2VmMTg2YzFlYzUwMDE4ODE1ZjQzMWZlNmZmMWNkMmQ0M2E0MCBsZWdhY3ktdHJ1bmsKKzU4OTAxIGY0NzRkZTk3MzQwNDc4ZWFjNzExNzhhOTI3NmFjYmVkMWFiMTA5OTEgcmVsZWFzZTI1LW1haW50Cis1ODkwMiA3YmQ3MmM1NmY2YTQwZDJkNDM0MWJmMTgyYzhjYzk5NDFmNGMwOGNjIHB5M2sKKzU4OTAzIDEyNDdkMjRiMjg3YjhjNmRkMjBlMzVmMzg5YTRkYWY0ZDIyNTFjNDEgcHkzaworNTg5MDQgZGJhMjQ5MWNmNzE3NjI1YjFhZDY5ZmM1ZDlhMDllODliOTRjYTRmOCBweTNrCis1ODkwNSBkZmI0NjAwMDRjZmUyZGY3MDM5ODZhYTEzYmY4YWMzZDkwODNmNWQ5IGxlZ2FjeS10cnVuaworNTg5MDYgMmYwNGFiZDEzMzk0NGRlMzEzN2YwMGQ2YjZhZDQwYmExZjViMjE5NSBsZWdhY3ktdHJ1bmsKKzU4OTA3IDJkOGQ2ODU1YTYwMjQxOWVhOWE5OTZlNzZkODNmZTJjYzdmZWU1OGEgcHkzaworNTg5MDggMmIzYWJlM2QzYWU2ZWEzM2QyYjM5ZjI5ODM0ODgwY2I1MDg0MjFlZCBsZWdhY3ktdHJ1bmsKKzU4OTA5IDY2ZDI3NWYyOWFjNTUwZWFmNWI3ZjJhNjFmY2JhODhlZDQ4MjNjYTMgcHkzaworNTg5MTAgNzAyMmFmZmQ3YmQwOWNmMTE1NTNjMjJmOGUwYWZkNDM3YTNlZGNmYyBweTNrCis1ODkxMiA2YWM2MTg4MmY5MzcwY2ZmZmJkYWZiNGZjZjhjZTYyODJiYzQ0ODNkIHB5M2sKKzU4OTEzIDZkMzQ3Nzc5NTIxYjViMjUyMjcxZWVhMDc1ZjljODFjODRlYjU5OWUgcHkzaworNTg5MTQgMzYwZGY2NDEyNDRkOWU4MTFlZmQ4OWFkMDYyMmFkNDZiYTY2ZmVmZiBweTNrCis1ODkxNSBiMjJmMjdlMDcwMTE0OGViNjNiMjFlZjJjMzkxNTRjMDNmZWMxNWIyIGxlZ2FjeS10cnVuaworNTg5MTYgMmY3YzQwMWNiNjJlMDQ5NzMxZGIzNmI5ZTViMDEyZTVjOTI1OWFkNCBweTNrCis1ODkxNyAzYzFmODU5M2ExNGU0YzU1ZTdjMDA2NDgwYzM2ZWQ0MWFiNzg0Zjk2IHB5M2sKKzU4OTE4IGFkZTU2NjNlODg4NjhhMzFjMDQ0NWNiOTk1ZjVhNzA0MjhkZGVlZTMgcHkzaworNTg5MTkgZDVjMjViZjI2OTJlZWFjZmU5Y2Q5YjFkYmIxMDBmZjAzOWE2YjdiNSBweTNrCis1ODkyMCA4M2MwNWQyZTEwZGVjZDA2MzMwNGVlNTdlZTllN2NjNDg1ZWRhY2E3IGxlZ2FjeS10cnVuaworNTg5MjEgODFlMzNiZGU2ZWUyMGFjNDRhMDE2OTYxYWE4MTZlOWM5MGZiOGRhZiBsZWdhY3ktdHJ1bmsKKzU4OTIyIGRkYzdkMTRiZTFlOTkzOTQxOGIzNDMyNzgzOWI0ODE2OTYzNDgyNmYgcmVsZWFzZTI1LW1haW50Cis1ODkyMyBjMWY4ODMxMTU1ZGUwZTU4YjgyMzNiYjE1ZjQ4OWVmNzM1ZGI2ZDlmIGxlZ2FjeS10cnVuaworNTg5MjQgYWFlZWU1MGEwNjQwMTY3MWJmNWEwNzkzMzYyMjk2MzFhNmRhNWFmOCBsZWdhY3ktdHJ1bmsKKzU4OTI1IGFjMTJhYzg4YWVlYTkzYTEwNmJiNjhlNzU4ZmIxOWJjZmMxY2VjNGMgbGVnYWN5LXRydW5rCis1ODkyNiAyMGRjNjc4NmY5YWNmZTlmZjA3ZDMzNDRjMmFjOGVhZWFiYzE5MzBhIHB5M2sKKzU4OTI3IGY4MmEyMGRkYTQ2NWVmMjBkODE5NzFjOWYxMDA3ZjE3NTM2MWUxYWIgbGVnYWN5LXRydW5rCis1ODkyOCAxNTYxNzYzY2RhNzJkZWM2Y2MyMTkzNjk0NWFjNGFhNDgxMjhmYzEyIHB5M2sKKzU4OTI5IDE5N2ZmYjk5NmZiODg5NTk5YjdiZjJlNWJiM2JkZjkzMTcwMjBkNTAgbGVnYWN5LXRydW5rCis1ODkzMCA4NWNmMzM0YjMyYzNhYzIxZWJjNDFjNTE1NjFkNmUzYjdmNmNiMTIxIHB5M2sKKzU4OTMxIDQ4N2YzNzM3ZWFlZmQwMjEzYjBlMTkxMTAzYmU5NjMzNjkwNDlmZDIgbGVnYWN5LXRydW5rCis1ODkzMiAxYWRmMDY2ZjE4NzlhNGI5MzdhYTg5ZjFlMWE0ZTQ2MjhhZWVjYjEwIGxlZ2FjeS10cnVuaworNTg5MzMgNWExNjlkZTM2ZGU3OGNiYjc1OWY1Y2VkYmFmNTJjNjhiZmRjOGM1YiBweTNrCis1ODkzNCAwNjg2NTUwNTRiMGQwZDEzNjJhYTcyYjFjMGNkN2RkYzNjZmUyNjBiIHB5M2sKKzU4OTM1IGQyZjllMjAxMjBmOWU5MzU3NDllZWU4NzkxNTg1MGMzYTY0MmFkMTcgbGVnYWN5LXRydW5rCis1ODkzNiAwMWE1YmRjMjgyMGEwMTFmYTdjNjA4OTM4OGM3OTY0OGI4ZmU3M2RkIGxlZ2FjeS10cnVuaworNTg5MzcgYzRlMjkzNmQxMzA3NTIzMjQ2NTA5YzAzZjFkYTZjZTZkMzdjMWI4MSByZWxlYXNlMjUtbWFpbnQKKzU4OTM4IDU1Y2JkMGM3YWFjZmMzODc0MjBiZjI5MzU3ZTQ2MjFjNmFmM2ZkMTMgbGVnYWN5LXRydW5rCis1ODkzOSA0ZWQxNmNhNGQ5ODAwOGRhMTAwN2FhYjczZTg1ZjE2MGE0NGYzMjJhIHB5M2sKKzU4OTQwIDI5YmVjZTE0Nzg5MzkxZGYxYjM0ODQzMTBmYzhlZTUzOWQyN2ZhOWYgbGVnYWN5LXRydW5rCis1ODk0MSBhZGU1OGViN2M4Yzc1YzViZWNjM2I1YTEyOWNkODM4NTRkNjhhOGQzIGxlZ2FjeS10cnVuaworNTg5NDIgYWYzNDI4ZmFlMTVmZDgzMzkwOGVhYTA5MjY2N2VkYTA1NWQwZWQ1NCBsZWdhY3ktdHJ1bmsKKzU4OTQzIDAwZTYxNjVmNDQ4MjlkZWFiZjA3NWYzYmZlZTVlZjlkYzU4MzljMDkgcmVsZWFzZTI1LW1haW50Cis1ODk0NyA3YmM0Y2M5NzJiMGIzYzYxZWU0NDZhYzBkZWYwMGJiNDUxNmI0ZWZmIHB5M2sKKzU4OTQ4IDhlZDNhOTVjYTExNGZiMWMyZDI0MDIwNTc2ZmVhYTljNWU0YzNlN2QgcHkzaworNTg5NDkgMTY0YTZhYzk0ZDNjODFmNDIyNzc4ZmFlZmFkMGYzY2VlMDQ3N2M4MyBweTNrCis1ODk1MCA1OTEyYjY2Y2NjMmQ1ZmY3NWI2YWRiY2E3YTIwOTQ4MzllYWVmNGRhIHJlbGVhc2UyNS1tYWludAorNTg5NTEgY2U3N2Q5MWVhMWQwYmJkZmZhMWJmY2Q0NmE0MzBmMGM5M2E2NmY4NyBweTNrCis1ODk1MiBkN2U5YmVjMWZlYWE5YTVkNjA3NTMxNTRkZWYwYmRlZGJlODY0MjEzIGxlZ2FjeS10cnVuaworNTg5NTMgYTIyMTMwNjBkOWRkYjA0OGQxZGEyMTc5OTJjZjE0YzYxYjJkOWRlNyBweTNrCis1ODk1NCAxZDZkYjlkZDNlNzdhN2NjOGQ4OWZjOGY4NGVhMDg3YzRiYWZkY2ZkIHB5M2sKKzU4OTU1IGIzMWY2MWQ3ZjhiMGVlMDE0ZWJiMDlhYzdlYjY0YjJhODY4MDE4NGQgcmVsZWFzZTI1LW1haW50Cis1ODk1NiAxZTBlYTFmMDMwNThiNWEyNTFkZjEzZmQzOGFmMTdmMjRjM2FiMDQ3IGxlZ2FjeS10cnVuaworNTg5NTcgMDgxMTE4MmE5Y2U5YWMxZGQyYTA5ZWVmYTRkZDgyNzU5MzgzNDhjYyBweTNrCis1ODk1OCA3M2M4ZTI3ZWI5Y2VmNDAyZmFjZjhhOWNjMzFlZjkzMWY4ZmRhMDRlIHB5M2sKKzU4OTU5IGNjY2VhZWMxMTQ0MmY5NGE4OTMwMzMzYzNhNmU5OTg2MTBiMGQ2MDkgcHkzaworNTg5NjAgMjQxMjgxMTIzZmQ4MzUxZDEwZTAyMThkMzIzOWE1YmYxZjEwZWZmMyBweTNrCis1ODk2MSBhMDYwYjNjYzJjNjJiMTI5NmUxYzVjZTkxNTU0NmJhMmEwNjc2OTliIHJlbGVhc2UyNS1tYWludAorNTg5NjIgMmM5N2UyNGIxNmNmY2E5MzM0OGE4ODUyMDMxYjQ4OWE1YzhmZjA0YyBweTNrCis1ODk2MyA3Njg0NGEwYTU3OWY5OTJlMmIwNDhiYTg3Y2JiM2Q2M2Y0MmQwZGQ1IGxlZ2FjeS10cnVuaworNTg5NjQgZDVmYzZlOTYwOTFmYjZmZWQyMzdhNDkyNDNmODIzMDA5OWYzZGM2MyByZWxlYXNlMjUtbWFpbnQKKzU4OTY1IDAzNzdiYTliYzM1OTE3NTJiNzcxM2JmNDhiNDdhMzczMWU5YjkwYTUgcHkzaworNTg5NjYgZTE2MmU4ODFlYTVmNGUzZGE1YzQxZDIzOTJjYjJkYWMxN2E0MDFkMiBweTNrCis1ODk2OCAyNGM4NGQ1OGNiODAxMGIxOGU2MjNlNzkzZGE3MmZiZGExODdhN2ZlIGxlZ2FjeS10cnVuaworNTg5NjkgNTNmYzBmNDFmNjhkN2YxNjY2YzA2OTE5NmNlOTM2NTYxMGY5NDYzOSBweTNrCis1ODk3MCA5YTEyODEzOTFjNDZlOWM1MzEzNjc2NmFiZGUwMzYwYWZlZmVhMWZiIHB5M2sKKzU4OTcxIDg5OTk4OTNhNmUyMjE1MGM4OTg5N2FlNDFiMzg2ZmM1YjI5ZjIyYzAgbGVnYWN5LXRydW5rCis1ODk3MiAwM2FkMWRiN2M4MGU0NWQ2ZGU2Njk1ZWE4MWJkMGM2NTI3Zjg4ZGExIGxlZ2FjeS10cnVuaworNTg5NzMgM2MyOWQ3M2M3NzY5NGU2YzczNTc0Y2U2MDcyYzhmYjZlMjI1ZTE4NyBweTNrCis1ODk3NCBlZTA4MTYwOWNlZThjZDM0NTMxOTEyNDI3NjNiZDJlMzQxY2U4YTI3IHB5M2sKKzU4OTc1IDk4Nzk1NzM4YjRjMjc5M2YwY2Q4Y2Q4YTgyMTk1ZmMxYzQ5NWRhNjUgbGVnYWN5LXRydW5rCis1ODk3NiAwYWU5MDc4Nzg2YjQwMmUzZjJiZDdmNjE5NzQ2YzVhMGQ5MTBkNzI5IGxlZ2FjeS10cnVuaworNTg5NzcgMDE5ODI5ODAzODQ4ZTZmMTFlZmUwMThjM2ZmODM0YTZhNjBhOTY5YiBsZWdhY3ktdHJ1bmsKKzU4OTc4IGRkM2M0ZGQzZWNmZDE0Y2RkYTg3YjRmOGNkYzkyYWViMjQ0ZDc4YjEgbGVnYWN5LXRydW5rCis1ODk4NSAxNzkxODY1YTY2OGI5ZjJkYjRhMGQ4YzdjZjg5YzFhYzY1MWZiYzE4IHB5M2sKKzU4OTg2IGZhNmNkZjU1ZGU1OGYzNmEyNzQyMGFhNjkwOTBkYTkzMzE3MjRhZGYgcHkzaworNTg5ODcgZDRmOTcwNmNiNDZiM2MyYjEyMWUzZTQzODczMWNhMGZjZTViMTFjOCBweTNrCis1ODk4OSA1MTYwNDFkNTI2NTZkNDgxYjE1NzVlMWU5NDFhYTIyMmI2ODI1YmE4IHB5M2sKKzU4OTkwIGY0YTNiNGUxNTVjMjU5Mzc0YzlkYzk1ZDNjMDk1ZmQ0YmE0YjdmZDkgcHkzaworNTg5OTEgOWEzNWU5MjY2Mzc5YmNhYTk1YjM2MjU2ZGI1NTBiZTBmNzc2NTVjYiByZWxlYXNlMjUtbWFpbnQKKzU4OTkyIDhlZDAyODBjMmFiNjc0ODUzZWExN2UwYjJlMmFlYmJiYmMzMTE0NDQgcHkzaworNTg5OTMgZjQ0NGUyNTkzNDFhOTZlMzljNTQ3ODFjNmQzNGUzZDNhNmQ3NjNiYyBweTNrCis1ODk5NiBkZTZiMTI2YThkMzc0OTViNjlhMjkzOGZiMjgyODI4NzY4MDVlYTUzIHB5M2sKKzU4OTk3IGI1OTgyNWQ5ZGI4Zjk5ZTY2MGFlYTFiYTU3YThiYzU4ZDkzNTNhYjMgcHkzaworNTg5OTggYzc4ZGI0OTM4NDgyYzdiNmJjMGNiODYzYjE2NmExNjE2MjU1ODA0YiBsZWdhY3ktdHJ1bmsKKzU4OTk5IDU5MDkzMGUxN2UwYzk4Zjg3ZWJkNTA1N2NjZWQzZDQyNzVhMDg1YzUgcHkzaworNTkwMDAgZDQxOTMzMzBkMWJlZWFmOTJiMjAxYjI2Mjg3ZGJlOTUzODZhMDBjYSBsZWdhY3ktdHJ1bmsKKzU5MDAxIDE3Mzk4NjljYmM2ZTdlMzU0MGE2NDU0MTdiNzhmY2JjZTM2YzhmOWYgcHkzaworNTkwMDIgNmIwMTJmMDFhODg5MDkzMjlhN2YwNWZmZTU0Mzk3ODI5MTY2YThiYyBweTNrCis1OTAwMyBlMjAyMDNkMDMzMWNjMjk4ZjE1MmIxYjRkYjQxNmU5ZDAwYjkxMjU0IHB5M2sKKzU5MDA0IDE3YWFmOTVhZjkwOWExNjJlM2FhYjJlNDU2OWNlZjBiYzNiNTc3ODUgbGVnYWN5LXRydW5rCis1OTAwNSAxMTY1ZDI2MWZiMDVkYjU3M2Y4MmNlY2RjZmZhMDk4YTBjZDgxZGI0IHB5M2sKKzU5MDA2IGMzMTU5NGZiMWVkNDRmMDM2YWE4ZDQ1Zjk4M2JmYmM2MzMzMjkzNjkgcHkzaworNTkwMDcgNTU5MDE1N2Y0ZmM2MTc1NDk3ZmRlYjQwNDY2NjE2OTViMThiY2RmMCBweTNrCis1OTAwOCA0YTZhN2FlYTU3ZjRmZDg4NjRlODI2YjYzNTM2NjQyODQ3ZTQ4YmU4IHB5M2sKKzU5MDA5IDcwY2ZjN2I1MDRjMjg2MzYyNDQxMDIyMzU0YzFhMGYzNzY4MmQ0MGYgcHkzaworNTkwMTAgZjZjY2E0YjIyNjBjYWJmYzgyYTEzMDA3YjVmNzc0Y2M5MzlhM2U4ZiBweTNrCis1OTAxMSBkYzIyNTZlMzAxYTkyMzkyYzljNTVmYjMzMDg0ZWI4NmI5YWJiNTYwIHB5M2sKKzU5MDEyIDcxZTc0NTYyZmI2NDEyODU4ZWVkM2I0YjA1NmQwZTMwNTVmNDUyYmEgcHkzaworNTkwMTYgYTk5ZGE4OTNmMjBjMWVhZGZhMDJiMzdlN2YzMzQzMmUyOGM0YjkyNiBweTNrCis1OTAyMCAyNWE1ZjZhMzAyOTI1ZDU3NDkyMWQ2NTMyMWMzMjg4ZTA2NDY3ZWQxIGxlZ2FjeS10cnVuaworNTkwMjEgMmRmNTNmMDUzOTJjYzFhZTc4NGM4ZWQ1MzY1MzA5NTg1M2ZkMjhiZCBsZWdhY3ktdHJ1bmsKKzU5MDIyIDFmYjM1Mzc3NmRmYjRlODYwOGJmMDk2NjdjNWFiMGRjMDM4ZDFiOTggbGVnYWN5LXRydW5rCis1OTAyNCAxNDk0YmRlNTEwZmY5NGVkOTZhZDUwY2EyYzQyM2YwMDRkZGFlYTM5IGxlZ2FjeS10cnVuaworNTkwMzMgOTk1ZDI1YWFjMTZhYWE5MmJjOTUzYjc2MDdmMjNjOWJlNTU2YjEyYiBsZWdhY3ktdHJ1bmsKKzU5MDM1IDM4ZjYzNDE5YWJkNjQ3M2E0NGU5Yzg4YjdmM2EyNzFkODRhOTE3NTMgcHkzaworNTkwMzYgZDUwYzcwOTlkNGFhNGMwY2Q0NGY3YmFkZjY2ZjFhNmE2Y2U2NTAxNCBweTNrCis1OTAzNyA0ODNlOTU4ZDEzYzc2YjY2NGRlMTZiMzc2NDJiNTk1NGViNmFhMzI0IHB5M2sKKzU5MDM4IDEzMzI0NTBiYzk1MjFkMDM4ZTc0ZTM2ZDI5Y2FhYzdlZjlhMGVjNjMgcHkzaworNTkwMzkgNGNlYzBjNjM5MmMxM2FkNWJhNjg5YTA2ZWEwNTc0ODBiYTFiZDc2OSBsZWdhY3ktdHJ1bmsKKzU5MDQwIDUyMGUyZWQ5NGJjYzUzMGQ1ZGQ0ZDI3MDkyMGZhNTUzNWVjYWFmOWMgcHkzaworNTkwNDEgNDFmN2MxM2VmMTYxMWM1YmQyMDExZGZlYzlhNjVhY2U1ZTI4NDMyMiBweTNrCis1OTA0MiBiOTFmZDc0ZjMyZDhlOWM0Y2MxOGNmYzZhYTVkNmRhYTc3NTBhMzE4IHB5M2sKKzU5MDQzIGZjZDc2MzM5ZmUxZmU2Zjc0ZjlhOTI0MzdjYWJiYWQ1MDA0NTg1ZDAgcHkzaworNTkwNDQgM2E3MzBmNDkwOGUzZjJkYjNlOGYzZTkwM2ZhOWQ2YmM0ZWNkZTc1ZCBsZWdhY3ktdHJ1bmsKKzU5MDQ1IDcwZGRiZTY3ZDNjNDYwYTFjOGU0NWFiY2IwMzg1YjEwMGEzMWY1MjUgcHkzaworNTkwNDYgMTlmOTk2NTUzMTg0ODA2YjljNzk2YzZjMzc4MDY4MDE3M2VhYjRlOSBweTNrCis1OTA0NyA2YWE4ZTEzNWQ5Zjg0ZGY0MDFkMjIxOWNjNzk2ZmYyOTI1YzNlNjcyIGxlZ2FjeS10cnVuaworNTkwNDggNDk2ODFkNDM2ZGY5MjM2YTYzNGRkNjAyODZkMTA0MzU1MTU2MTVlOCByZWxlYXNlMjUtbWFpbnQKKzU5MDQ5IDBlODk3OTA1ZWU5NDNkOTQyMjQyYWIwOWM4YTI0OGI1YzBlZDJkNjAgbGVnYWN5LXRydW5rCis1OTA1MCBlNWQ0OGZiZTE2NDYyYzQwZGMyMmY3MGYwZWJmYWI0NDU1YjFmOTIyIHJlbGVhc2UyNS1tYWludAorNTkwNTEgNzgwYzcyODQwNmU2NzVmMmI0ZmM5OWVjNmVkMmVkOWVjYjMyMTcxYSBsZWdhY3ktdHJ1bmsKKzU5MDUyIGRhOGRjZDVjZjVhMDFhMzQzMDU3MDgxOWQ1YTc0ZTM5NjVkZjNkMGIgcHkzaworNTkwNTMgMWFlOTIyNGY0ZWU3ZjAxYTVhNDA3Y2ZkYTQ0ZThmNTgwNjBhMjQ0ZSBsZWdhY3ktdHJ1bmsKKzU5MDU0IDU0Yjk3M2YwZjU1YjViNWQ2YzA1NmEyY2UzMzI4ZTE3NmYzNjRhMGYgbGVnYWN5LXRydW5rCis1OTA1NSBiNmY1NzgxZjVjM2YwZjU1Y2Y3NTIxNWY5NmVjNmMwYjhlZjYxNWNlIGxlZ2FjeS10cnVuaworNTkwNTYgNDc0N2VmOTY0MGFlOGIxMzc1MjE3MDIzNDgwMmM0NjA0Y2Q3NjIwYSBweTNrCis1OTA1NyA2MWVmOTBhMWIzNWUyNTdjYjFhMDc0ZTVlODg3ZTE0Y2QzNGMxMDk5IHB5M2sKKzU5MDU4IDQwZGZjNDg1YjBiZTM3ZWJhYTMxYzZlODkxMDY5ZTg3MDViNWFhNTAgcHkzaworNTkwNTkgNjk2OTljZmRkMjZlZDBlNTNiY2YwMzVlZjhkNDFlNmY0NTNhYmUxZiByZWxlYXNlMjUtbWFpbnQKKzU5MDYwIGIxYmNkNTk5NjcxZjA1MTgxZGM5NTE1NjI0MGI0YTc0NDhkMGZhNmEgcHkzaworNTkwNjEgYTkxNWYyYjEzNWMwOTVkZmU5NDkyOWY4M2I2YWQzMjBhNDk5MzM5YSBweTNrCis1OTA2MiAxNDZiYTk3ZmZlMWFiMmM5YWY0MzZiMDIzYzYzZmI5ODM4NjFmZWIxIHB5M2sKKzU5MDYzIDhlYTdmNTlkZmY2YmM2M2FjOGZjNTBiMmU2NzAzMTlhZjc2YjAxYmMgcHkzaworNTkwNjQgZmRmMTQxNzAzMzdhZDc4YzVkZGM0M2U4MGIxMDU0MGRlODNiMTdkZSBsZWdhY3ktdHJ1bmsKKzU5MDY1IDJhM2Q3MzQ5NWYxODRkY2IxZmQyNmVjNmE2OGJjZDc2MjRiMjQyMGQgcHkzaworNTkwNjYgMzJkNDU3YTc4ODViZGYzODI2YmViZGRlYTQ5OTQxNGU5NGMwNjFjZCBsZWdhY3ktdHJ1bmsKKzU5MDY3IGQzY2IxNmIzMjFkNTVjM2ZiZmQ3YTg1MjRmYTRmOWFkNmM2ODgxMWYgcHkzaworNTkwNjggNzRmMjI5NTRmMTg5OWRiNGM0OWQwY2Y5NmRkYWQyNWMxNjg5OWM3YSBsZWdhY3ktdHJ1bmsKKzU5MDY5IDZjYTAwNDQ3NWFhMGZjODQzNzhiMDQ4Mjg0YzAyOGJkNmNiZGU2MjggcHkzaworNTkwNzAgMmRlN2QwMGZiZjE5MmFjM2E2ZmZjMTk4M2ZhMjg1Yzg1YzEzNGU0ZiBweTNrCis1OTA3MSA1NTc2MTRjNGZmMDBmMzA5ODdiNjY3OTAwM2FjZDQwZTczNjg0MjY1IHB5M2sKKzU5MDcyIDI5YjBmNDk3NWQ5ZjMxZTJkMTA2ZWJiNGYzNTY0ZjEyNDk4OTc5NTggcHkzaworNTkwNzMgN2FiNDkwNjRkNDMwYWE1YzkzMDQ2MzU4YTExMTBhYjJkNDMyZDhhZiBsZWdhY3ktdHJ1bmsKKzU5MDc0IGY1NGVjZjQ5NGNiNzExMDUwMjYwODJlODM5OTQ5YzhmNzM0MDgzZDEgcHkzaworNTkwNzUgOGI3ZDQzMTNlYmMwNTY5Y2FjOTJmZTM3NDBkMzM3YjVhZGQzMjE1ZSBweTNrCis1OTA3NiBlOGFjMWFlNDUwM2NkN2E4MjgwNzIyODI5NWQ0NTU5ZTdhMGUyMWE0IGxlZ2FjeS10cnVuaworNTkwNzcgOWM0YmYxOGU1ZDMwZTYzMzRjYzM0NDU4NGIwZmViZWMzODgwMGQwNCBweTNrCis1OTA3OCA3MWExN2Q0ZDNhZmEwZGE0MTY4ODY3MWUwY2M0MGUxYmVlODE5NTE1IGxlZ2FjeS10cnVuaworNTkwNzkgMmJhNWFiMzg2OGM5MGZiMWY0N2Q5NDZlZDVjZjRhMjlkOTFmZmQ2YiBweTNrCis1OTA4MCAzOGIxZGViNGU0ZWJkZjgzOWY3YzkxNmY4NjlhNGI5NzYyY2NjOTBmIHJlbGVhc2UyNS1tYWludAorNTkwODEgODgzODg0ZmRhYWU4ZTExNDNjZmEyOThjOTUzMDBhYTE2OTJhMTVmNSBsZWdhY3ktdHJ1bmsKKzU5MDgyIDg2MzZkY2I4MDFjZTA2MDNlNDdhNjVmYmQ0NmY0OTYzOTZjOGVmYTQgbGVnYWN5LXRydW5rCis1OTA4MyAyNWQ5Y2UyODNiMzk0ZjFhZWQ2OWY3OTNmZjNjNWRkMDQzNjkyNDdhIHB5M2sKKzU5MDg0IDNmYjdlZDVjMjNkZDY5MGQ0NDQwYmRkNjZkNzk1MTRlYzQxMTYyZWEgbGVnYWN5LXRydW5rCis1OTA4NSAzYjA0ODk0MTE2ZmUyMjJmODIxNDM1NWRmYmQ2ZWM2YWZlZjU0NThkIHJlbGVhc2UyNS1tYWludAorNTkwODggNzgyY2I0MDM3OGY0NGY4N2ExNGM2YWJhNTE3YWQwNGZhNDVjZTcyMiBsZWdhY3ktdHJ1bmsKKzU5MDg5IDJkYmNkMzkwYjZmMTUzNzg4M2MxOWQzYzQxZGNkNGM4YTg3ZDJiNWYgbGVnYWN5LXRydW5rCis1OTA5MCBiMDk5ZDM5YzM0ODJkOTVjYWZmNzJlZjJlODRjZjIzM2EyYzFkMWRlIHB5M2sKKzU5MDkxIDJmZDdjOTExMTYzMmEyNTAwYTEwZjgyNjY3ZjNkZjM1NTcxYmQ5ZTUgbGVnYWN5LXRydW5rCis1OTA5MiA2Yzk2N2MyNjg0MWE5MTQ1NTJiZDA2ZTFmNWM3ZTk2M2FjZjljNmVmIHB5M2sKKzU5MDk0IGNiYzhiM2JkMzE1NzgxZTUzYWZiODkwMjZlNTRkMDFmYzA2ZDEzM2IgcHkzaworNTkwOTYgOGUwYzRjNzEwMzc1ZjJkYzkxOGIyNDM2ZmIyNjQ1ZWNmMDgxZTc3YSBweTNrCis1OTA5NyBlYTk4ODRmMTQ1NDU5ODg1YmI1MTRmMWNlMDg1ZDc5MTliMjk4MTI1IHB5M2sKKzU5MDk4IDJhM2NhOTAwMDhmZmZlYzFlY2MzMDFjZGE3YTQ4YWY2YTU5MjhkNjkgcHkzaworNTkwOTkgMzJiZmY3ZjI5NzVkODEwYTk5ZDY5ZDliM2RhYjllMTVkOGRhNjdhMSBweTNrCis1OTEwMCA2ZjE0OTUyNmU4NjRjNDEwNDZlNGRkZWEzYjUzZjJlNTdjNDVhMmMwIHB5M2sKKzU5MTAxIGRkYmM1ZTJjNjg5YTdhNDExMTAyZDhhNTkwNjJhOTFjOTQzMDFkZjYgcHkzaworNTkxMDIgMDkyYjUzMDY5ODNmNzIwYmJlMDFlYjNlMWJlZjk3NzIyMTk1ODhjZCBweTNrCis1OTEwMyA3NTM2NDM2NDQwOGI2OTMxZDgzZDg5YmM1MDVmMWQyZTUyZmVkYjQ1IHB5M2sKKzU5MTA0IGZlNWIyZWRmZmFlNzY5YWNjYTUwNWIyOGYzM2E4MDdkZWFiNDQ1NjYgcHkzaworNTkxMDUgMjNiZWZlNTQwZDBkNTQ2ZGQxNjllN2I1NTRiZDliYzYwNjgwZDY3OCBweTNrCis1OTEwNiAxMDNiN2Y5NTUwMzZlYTM2ZjVmZWM1ZDNiZDY2ODBhNTZjYmVjN2IyIGxlZ2FjeS10cnVuaworNTkxMDcgMTIwOTk3MDYxMmRmZTE4MTE2MDYwMTRkMWVhNzM4NGRjZTRmYTk1YyBweTNrCis1OTEwOCA5OGI0OTY2NjQ5ZDUxYjA5M2UxOTE5N2UxYzkyYTZkYmE0YzEyMzJhIHB5M2sKKzU5MTA5IGIyMzFiZGE2NTNhNGY5YjM1ZjYxZGNkMjY1M2RlYWQ4YWRhZDY4YmYgcHkzaworNTkxMTAgMjU5ZThhMmQ2ZjhjMjcwNTk0NTBlODJkZDc4ZWYyZmFiNjNlOGJiZiBweTNrCis1OTExMSAxNGM0YmIzYzY1YTdjN2VlZjdlYmJmMTkwMWUxZjhjOTI5OWZjYTcwIHB5M2sKKzU5MTEyIDI2NTVkMTEzMTIzMmMxY2ZkMjVjYjIwOTM1NDkzNjkzMmMxYzMxY2YgcmVsZWFzZTI1LW1haW50Cis1OTExMyA0MWIyZjI2YzdiM2RiYzUwODg2MWJlYzQxNDNhMTk1ZTZiMDYxNzAzIHB5M2sKKzU5MTE0IGQyMzgyOWE5ZGIyMTE5M2M2ZTRmMTVjNGI5NmMzYjE0ZTRhYTNhNWEgcHkzaworNTkxMTUgOGQxZWVmMzkxOWYwNTFlNzlkNTc5YjY5OGE2NjBhNzcyN2MyZjBmMCBweTNrCis1OTExNiBkOWJjZDk0ZTU5MzVlNmI1ZjkxYTRiMjFhZGFjOGYxNDE2ZmJhNjMyIHJlbGVhc2UyNS1tYWludAorNTkxMTcgOGJjYmYzMjJjMmI1YzI3OTBlN2MwOWZjNWY1NTcwOGUzYjdiNzNlNiBweTNrCis1OTExOCA0YTc1NTNiMTc2YjZhMWEzY2Q0YzMwMWEyNjVkMmNhZjRjZjI0OTI0IHB5M2sKKzU5MTE5IDcyOTYyYWJkOTBhMTZhYjg1NmJhNjllMjNlZjBmMmVkYmY1YzdmYzQgcHkzaworNTkxMjAgYThkZDg4NzRmZjJkNTFlYmI3NDBhMzQzOTE1YzAwYzg1ZjAwMzFlMiBsZWdhY3ktdHJ1bmsKKzU5MTIxIGY2MzI3MjBkODEwMjdjZTg5ZjI0NjFhNDUwNzI1M2NkNmUyNDFhODQgcHkzaworNTkxMjMgZGE0Nzg0NzFmMWI2Yjg2ODU3N2ZjODZkMzk3YWFhNDc4YmRlNmJiMCBweTNrCis1OTEyNCA2ZDZiNjA5ZTQ1N2M4MDc1MmFjNWRlMDU3MWM1MzFjZTFmNzAwYjc4IHB5M2sKKzU5MTI1IDg3NDRlNDFkYWY1NDVjZDE4NmMxMjVlNWNjMTJjODBlNWFjM2I4NzggcHkzaworNTkxMjYgM2M3MjVhNDNhYzhjZDhlNjczMTJhNDY0ZWFjYTgwNmVlNjQyNTY0NiBsZWdhY3ktdHJ1bmsKKzU5MTI3IDkzNTBlNDI1ZTVmM2JiN2U1YjY0ZmZmMGZiZDhhOTVhNGI0MjA1ZmYgcmVsZWFzZTI1LW1haW50Cis1OTEyOCA0OWNlZmVjY2Y5M2ViZjVhYjUyZmVhYTFlNmQ3OGQwNjdmNWQzNjM5IHB5M2sKKzU5MTMwIDZmZjY4NTA1MTk5YWUxODUxZmQ2YmI2N2FkYWE0ZmU5MzZlZmNlYjggcHkzaworNTkxMzEgNjJjZjA4YTY0YmMyMzE0MDQxOTNlN2Q4MGI3NDIyMzQ3YTM0MTViYyBsZWdhY3ktdHJ1bmsKKzU5MTMyIDVmNmE4ZTJiOWU5Y2E2ZGQ0NDYyNzJlOWJiOWUxYzUyNjFmMzYxOGMgbGVnYWN5LXRydW5rCis1OTEzMyBlNzI1MTY2YzhjODE4NGY4MGZmZDZmZGVjZWM5NDY3NTBjZDQxZTExIGxlZ2FjeS10cnVuaworNTkxMzQgYWYzNjAzODBhYTE2ZmYzN2U2NjBlZjFmNWE0MjIzNTNjOWVmY2I4MSBsZWdhY3ktdHJ1bmsKKzU5MTM1IDIyMzBmMTZlNDAyYjEwNTEzM2Q0YjhkMTdhOGY2YWRiNWQ1NWI1NzggbGVnYWN5LXRydW5rCis1OTEzNiBlZDI5YjkxNjJhZTllOWE3MzhiYWFmMzA3MTNlMTc3MWFlMjJlMDU2IGxlZ2FjeS10cnVuaworNTkxMzcgYjQ4MWFkYjA0Njk5YWMzZDYyN2U1OTgyZTRmZWZiNTc4MzA0YzBiNSBsZWdhY3ktdHJ1bmsKKzU5MTM4IDRkMGZlN2RhNGNkNWY2ZjIwZjRkZDExMjhiZTdjMmJiOWU1N2JhNjcgcmVsZWFzZTI1LW1haW50Cis1OTEzOSAzNTg2YTY2MzQ4YmY4NGNhMGRjOTA2YjczNzA1NGFlZjJhYjc0NTQ2IGxlZ2FjeS10cnVuaworNTkxNDAgNGUxYTE5YmEzZDRhNjM4ZjVhZGNkMzQ4ZTA2Y2Q2ZmRmM2MxMjRjNCByZWxlYXNlMjUtbWFpbnQKKzU5MTQyIDY4Y2FhNDdmNWUxNTNlMzU1NzMwOGIzMzc2NjFhYmY1ZjQ4MDI2MDUgcHkzaworNTkxNDMgMTFlM2UyYWUyMzY0M2QyMjFjNjAxMzI2ZjQ5ZTc5MDFjYzBmMTFlZiBweTNrCis1OTE0NCBhNGExNDA0ODY2OTEwM2RmMmNhYmViM2IzNzkzMDA2MTFmNjg0NjMzIGxlZ2FjeS10cnVuaworNTkxNDYgNTVmYWZiNDZmYTQ1NWY1YmNhNmUwYWFjMGQ0NjcwODVlNzMxZDQ3ZSBsZWdhY3ktdHJ1bmsKKzU5MTU0IGE5Y2Y3ODBmNjM5NmE3MmU5Y2ZmODA3ZmE5NWIzZjg2NDg1ZTFmN2YgcHkzaworNTkxNTUgYjg2ZTZiZjc0MzhmODhmMzM5Y2JjNWI3ZTQ3YTE5ZTg4NjU2YzMzZCBweTNrCis1OTE1NiAxNzQ3OWEwOWVjN2NjZDU1MTkwNTcyYTg0Y2U3MjI5ZTgyZDVkYmViIGxlZ2FjeS10cnVuaworNTkxNTcgYmIxZTE1YmI3YjU5ZWM4NTliOTQ1NjkzMjhkYTUzOTg2ZjFlOTE2YiBweTNrCis1OTE1OCBiOWI5NDc4NWIyYzcyZmM1YzhiYzc0YTkwODJmOTI2MmI4Y2IxMmUwIGxlZ2FjeS10cnVuaworNTkxNTkgMTU1ZTk3MjVkYTJmOTM0NzU5NTUyZmNkMWRiYjIwZWFkY2JkNzk3YiBsZWdhY3ktdHJ1bmsKKzU5MTYwIGNmNjAzOGRmOWQ1MjY5YzhlMWVkYTc3NGM5ZTEyODgzNjk5MDU2NDUgcmVsZWFzZTI1LW1haW50Cis1OTE2MSA0OWE3YzdkYmE4Y2FmZjRkYTlmMDcwM2I4ZjQ5MmE0NTk4MDgxZjdmIHJlbGVhc2UyNS1tYWludAorNTkxNjIgMGI1MzU3Y2M0MTZiOGYzNTgyNGJmMzM0MTEyMGYyZmUxMmY4N2YzOSBsZWdhY3ktdHJ1bmsKKzU5MTYzIDJiZWQ4NDE1ODVhOWNhNjViMGI3NGI3NzI2ZTQ3NGRkYmJmOTU5NGUgcHkzaworNTkxNjQgZDNiZTZlNjE1ZjhjNDZkYWE2NWFmODI4N2ZjMjY1OGVmNjY3N2Q5NSBsZWdhY3ktdHJ1bmsKKzU5MTY1IGVkYjc1YzA5OGE0YjA1OWQ4NDIwNzY5NDg1NzM1NGVkNjEyNjEyYzMgbGVnYWN5LXRydW5rCis1OTE2NiA2ZDYxNGI4YzUxMjUzMmVjZjgwNzExMDMxNGM3M2RmMjBmZGQwYjBhIGxlZ2FjeS10cnVuaworNTkxNjggY2YyMjA1OTYwY2JiYWFkNmU0NWNkNzM1NGE1YmZkOGFkNTYyOGI1NiBweTNrCis1OTE2OSAyMDY4YmY3Nzg5MWQwYjQyNDA5MjRjYzhjODQ1NzVkMTMxYmRlODgxIGxlZ2FjeS10cnVuaworNTkxNzAgMjE4M2Q3MmFiZmFhY2ZjZGU1Y2EzZmY5ZjM0ZDg1YTZlMjBjNTNhYSBsZWdhY3ktdHJ1bmsKKzU5MTcxIDRjZjliYjljZWY5MWY1MDNmYzYxOWRhYzcwMjM3NDk1MjgwMTZhMjYgcmVsZWFzZTI1LW1haW50Cis1OTE3MiBkNTYwMWViZTE1YTk0NzBkMWRkMzNlODVkNzM1MjdjNTYzNGQzYTA2IGxlZ2FjeS10cnVuaworNTkxNzMgMTRhYTNlNGU3Mzc1OWI3YTY2N2JjN2JlZmYxNjNmMjNmZmM1N2IxMCBsZWdhY3ktdHJ1bmsKKzU5MTc0IGUwNDY1YmEwZTk1ZDY4YmYxNjI5NTFmZmQ0MmJiNmEzNGE0ZWFlNWQgcmVsZWFzZTI1LW1haW50Cis1OTE3NiA3ZGQ3OTYxZTBlZmYzZmY0YzdmYzIyZmVkNjNjZDE5YjYwNDlhODE2IGxlZ2FjeS10cnVuaworNTkxNzggMjJlMDk5MDVlNDAwMGFlN2NmZjQ4NmNiZmM2NzUyMWJlYzQyOWZkNiBweTNrCis1OTE3OSA3YjRlOTRhN2I5MmU5ZWUwMWFhZjc3OWU0NWRkODc4ODBlYzMyN2M4IHB5M2sKKzU5MTgwIGE3YzE4YjkyNDIzNmEwN2U5YTYzZjUxODNkMWQ4MjhhYjUxYzJhZWMgcHkzaworNTkxODEgN2IzMDExMTI0N2Y2NzIwMDdjMjZlYzdlMzQyOTk0ZGYzMzA4OWNlYSBweTNrCis1OTE4MiBlNjE2NWUzODljNTAyMmI0Njg3M2E1ZjI5ZGU4Mjc5MTA4MDJhYTVlIHB5M2sKKzU5MTgzIGZmNWRmMWZjMGZjYzRhNmRmMzM4YThjZWM1ZjE4NGQwOTk0ZTcwOWMgcHkzaworNTkxODQgNTJiYmUzMzY1YzcyYzI3MGY3NWQxNzNjMGM2OThlYjRjZTYwMTYwNCByZWxlYXNlMjUtbWFpbnQKKzU5MTg1IDczZjgzODk5ZWI5ZDllYzAwZTYyMmNkYjAwZTE3ZDgyNjViOTc2YzggcHkzaworNTkxODYgZTRiMWUwNWNlMjYzNTI3NTVjMDJkMzNkOTExOWY3YTRlZjMxNTE1NiBsZWdhY3ktdHJ1bmsKKzU5MTg3IGViYzczODkyOTdkNjkxYzZlMTU5YzU5OTk5ZTdlMDI4NWYwZDU2NmQgcHkzaworNTkxODkgNDhhZjYzNzUyMDdlNzA4ZGI0MWMxOWI2MDM3M2JjNjFkZjAzZmViMCBweTNrCis1OTE5MCBmNDhkMmVmNzJlN2UzOTQyNGIwNGFhMjU1OGI5YmY2MGJhMDliY2EyIGxlZ2FjeS10cnVuaworNTkxOTEgMDQ3NjQ1N2ZmYjM5MWZkMmYwNDY4YzcyMmU3YmM1ZTYzNzU0MTU2MCBweTNrCis1OTE5MiBlN2ZlZDdhNTk1NzY4ZGNlMjkzZTVkMDYzZTYwZGY4YzgyMGJjYTE4IHB5M2sKKzU5MTkzIGI0ZGE3MWE4OGZjMDE1ZWQ0MjhhN2ZlZWNkYTE4MzhmMDk1NTk5Y2MgcHkzaworNTkxOTUgZjJlMjQ3OWFmZGYwYjMzMDhmMjc1YmE2OGZmZTc2ODU2MWY0MzkyNiBsZWdhY3ktdHJ1bmsKKzU5MTk4IDhmOTJiNGVlNmZjNGNmNTk1NDg5YmJjNWI4YjkyYjJkNWQxZjJhMTAgcHkzaworNTkxOTkgYmEzMDU2MTE5YjI4M2MwZDM5NDM4ZDJlNTkzMTA2MzRmMTRjMzY1NSBsZWdhY3ktdHJ1bmsKKzU5MjAwIDVkMTA0OWQ0YzNjNjU4NDcwZGUwMzcxM2JkYzJlNmJjOWZkZDEzZGUgbGVnYWN5LXRydW5rCis1OTIwMSBiZmUwMzdlM2ZkNTVmZjJmYjg3ZGI2MDVmZmY5ZTZhODMxNTRmYmIwIGxlZ2FjeS10cnVuaworNTkyMDIgNDVjZWQ2YWIwNjZkNWJjNjEzZDE4ZWZlOTcwMWMwZmVmNjQwZTQ4YSBweTNrCis1OTIwMyA2MGU2ZWFhMzc4ZDlmOTFiZTJiNDk4ZDY2MmE1NmQ1ZWNhYmRhMTk3IGxlZ2FjeS10cnVuaworNTkyMDQgZDQ0ZmZmZGEyY2QwODc1N2RlZDU5YjczYWM0Mjk3YjM4NTE3MTZhMiBsZWdhY3ktdHJ1bmsKKzU5MjA1IDEyZTcyODAzNWUyYzZjZjJiZmQxMzMzODY2ZmY0OWQ2MzFiMGE2YTMgcHkzaworNTkyMDYgNzFmNDdmODY0NjkxZTg0NGYzNmM0ODFiZTNiZTc2MWIwYWY3Y2YzYSBsZWdhY3ktdHJ1bmsKKzU5MjA4IDdlOGU4Nzk3ZjlkMGE4NTE4YjU2YjEzMjg5YjE1MzZhZmVmZDhkMWYgbGVnYWN5LXRydW5rCis1OTIxMCA5MThiYmVlM2E1NDU4ODAwZjJiZTFlZjFiZmIzOGY2NzYwMTU5Yjg1IHB5M2sKKzU5MjExIDFmMDI0YTk1ZTlkOTE2YTM5NDUzZTNkNjM5ZmUwN2VjNTUwNTk4MGUgcHkzaworNTkyMTIgNTNiMDhmZDg4YmY0NzViYjRmNjc5OTkxZTExNGRjMDRjMjExYzBhYiBweTNrCis1OTIxMyA1MzBmYjk4NTJjNTA0M2ZlYzBiZDM3M2JiM2QyZTI1ZWUxMzVkZDkyIHB5M2sKKzU5MjE0IDRjMzkwMjllM2ZiMDMwYTY3Zjc1NWY3YzYxOGZjM2NlOTA4ODIxNGIgcHkzaworNTkyMTUgNDI5Y2FkYmM1YjEwOTNjZDgwN2VjODgxNjVkNThhN2MxY2Q5YzE1YiBweTNrCis1OTIxNiA0MWI3ZjgwMjY1ZGIxOWIzOTg0ODU3NTQzZmIzYzFhNmNiYmE2NDU5IHB5M2sKKzU5MjE3IDE1NjQ5YWVmMmRiNTVlMTI3MDA5NDFhM2NhM2YwMTU3ZTM5ZWU5M2EgcHkzaworNTkyMTggZWNjYjE5NzA0NGRkNDk1ZDdkNjEwNGYwNzY3NTdmNmQ2OGIyOGU4OCBsZWdhY3ktdHJ1bmsKKzU5MjE5IGMwMjRiODk0ZDkyOWNlZDRjYjZlYzUzOTBmODg0Yjg5NDNhNmE3YzMgbGVnYWN5LXRydW5rCis1OTIyMCBlNmNhOTJiMThjZjRkYTQyZWM1OTA3ZGViZDQzNjVjY2ZlMWU3NWIxIHB5M2sKKzU5MjIxIGYyMzg1ZDk4MjgyYWJhMGQ5MTBkMDA5OWI3OWFlY2FiNjFjYjVkMDYgcHkzaworNTkyMjIgYzRhNmQzZWM0MmMxMjQ5MjY3MWM3ODc3OWE5ZjA2NGMzMGQ3NTY4MiByZWxlYXNlMjUtbWFpbnQKKzU5MjIzIDZlZDc3ZmRhOGI5MTQ4MGFiOWJmNTE5YWM2Njk0MzAxMWIyNWQ0YzYgbGVnYWN5LXRydW5rCis1OTIyNCBiNmI1YjZjZGQyMDJhOTBlZDVkZTMyMDFjNzllYmE2YTAzYmE0MzVhIGxlZ2FjeS10cnVuaworNTkyMjUgOWVmODU3MjRmNGIxZjUyMzdhMzMyYTRlM2VlMTM1N2Q0MWM4Y2EyMyByZWxlYXNlMjUtbWFpbnQKKzU5MjI2IDQ5YWM1ODdlMjJlOTFmMDE3ZWIxZDAyMzAwYTRiMzhlN2ZkZTVhZTggcHkzaworNTkyMjcgMjk1Y2YwNWZkZDJjMzI4Yzc1MDFjNDNjMDY1NjFlNTk0Yzc2ODhmOSBweTNrCis1OTIyOCBkNjM5NDU4YzdlMDI0NWNiM2MwNGMxMGJhMzBjMTNkZDNlOTFkZmNiIGxlZ2FjeS10cnVuaworNTkyMjkgMGNjNTUyYWI3NmJkMzljM2YwNWMzMzI4MjA0NDRjYzUwMTlhN2JhNyBweTNrCis1OTIzMCA4OTRmZWUyNzlkYmNlZjE2MWJjMTFlN2VhNGZlZTE2NzI5ODQyMTdmIGxlZ2FjeS10cnVuaworNTkyMzEgNDQxN2FiNWIzNTFlNmNkODRjZGQwM2ZiZTdlMGI1Y2I5NTI5ODcwMiBsZWdhY3ktdHJ1bmsKKzU5MjMyIDAwMDQ4ZmVkYmFhMGUyMmUzZmY1NmI4YjljMjBhNDcyNWI5ZmZhYzcgcHkzaworNTkyMzMgM2VmNmRiYzQzNTMxYTFjYmYyODRhNmVjZWRiZjA4Y2U0Yzc0ZTM2NyBweTNrCis1OTIzNCAyOGM4MDI4MzcyNTIzM2QxZjQ1NjQ2Y2VjNzExN2M0NGM3MjUzN2FiIHB5M2sKKzU5MjM2IDNjZWJkZTQ3OGNjNGRmZTMzNzc1Yzk0MTM0MzZkZTE0NWE5NGI5YTIgcHkzaworNTkyMzcgNTMxMTMxMDZmZWJiNTk1NWE0MTE1Yjk5YzMwNjY5NmZiYWQxMzIwZiBsZWdhY3ktdHJ1bmsKKzU5MjM4IDNhYTExMGY2ODBhYjNlMGEwODE3Mjk4NGUwODhhZDU3ZjZkZmFhY2QgbGVnYWN5LXRydW5rCis1OTIzOSBmNTY0NDA1YzgxMDQxZGZiOGU2YjA1NThiNmY4ZWJhMzU0NzhkMDk4IHB5M2sKKzU5MjQwIGI0NDA1OWUwZjA3NTllZDEyY2FhZTUzNTllMWMzYWY4NTY0MGNiYTcgbGVnYWN5LXRydW5rCis1OTI0MSAyZjQ3YjIyOGJhMDY1NGEwYTBjMTViNThhMTAyZWI1ZWI2NWEzYzA0IGxlZ2FjeS10cnVuaworNTkyNDIgNzU3N2I5OWVjNTNiNTkyYmNiZTliZjQ1OTFkNGI3MWI3YzJjNDlhOSBsZWdhY3ktdHJ1bmsKKzU5MjQzIGM1ZjJjOTc4OTMxMzVmYmY4NzNhMDZkOTI5NGJkYjQ3NDAzOGZjMjEgcHkzaworNTkyNDQgZjRlN2M3MjliM2EyNGVjMmI4NWJlZmZjYjRlNTc4ZGViNjYzMGM5MyByZWxlYXNlMjUtbWFpbnQKKzU5MjQ1IDE2NWU1MjdjMzk5YWVlNTI4NjUwNGYwZTMyZGVlMmUyMjliNjExZjQgbGVnYWN5LXRydW5rCis1OTI0NiA1MWMxZWFlYjg3ODZhNjkyZDUzNjQ2YmMzY2JjOTg1N2VmYWM3ZjgyIHB5M2sKKzU5MjQ3IDY2NGIwYmM5MmI5NmZkZTllNzVlNjA4NzlhMGIxN2Y5ZGFmOWE1NjEgcHkzaworNTkyNDggZGNjNGJjNThhZjUyYjdlYzZmMDUwNTEyYTQ2YmM0M2VhM2UzNjU5OSBweTNrCis1OTI0OSA4MGI0MmRiMmVhYzkyYmU4OWVkMTQwYjY5ZTQyM2Y3NDFiMTBmNmVhIGxlZ2FjeS10cnVuaworNTkyNTAgMmJhYWJlZTQwNzAyZjg0NjBjMWJlNzFlZmEyOWQwMzU0MDg5ZjM3ZCBweTNrCis1OTI1MSA0Y2I5NWZjNDEyOWUwZTEzNTg0MWYwNzJmNDRlNTUxMGY2MGJmMzk2IHB5M2sKKzU5MjUyIDM1MWI3YmQ3ODZlNGFlZWQzM2Q5NmZmYWE0ZDYwZGJlZWNlM2U5NjMgcHkzaworNTkyNTMgMmIyMWYxNThhYjlmZjMxNTA4NjM4ZTgyYWJiYzE4ODMxNDViMzAyOCBsZWdhY3ktdHJ1bmsKKzU5MjU0IGMyMThkMWFjOTE2ZTVmZTQzYmRkM2Q1YTVhZDU4ZTM2MjBlMmIyNDcgbGVnYWN5LXRydW5rCis1OTI1NSAxMTBmZjYxNGVjMjhhZGRlZjYzZjFmY2JmNjBkYzY1OGQ2MGQwNTA5IHB5M2sKKzU5MjU2IDk0NGFlMzQ1ZTlmZmI0MWE5YTE4YWVmMjE4YWM5MjA3NjM1MGRlZDkgbGVnYWN5LXRydW5rCis1OTI1NyA4NmE3MzViNDJhOGZjZWQ5ZmJiZTBjNWJiNWY2MzVkZTczZDE5NTliIHB5M2sKKzU5MjU4IDIxMzIxZGNmMGFiNWQ5Zjc2ZjA2MWNjY2ZlMDBlZTNmNzg5ZDdkMTggbGVnYWN5LXRydW5rCis1OTI1OSA2ZDdmZDk1ZWYxNGFlOTdkMjYzMTc4NTVmMWEyOTdlYzNmMWExZjVlIHB5M2sKKzU5MjYwIGU2MzQ1MTFiNGFmNWRhOGNmZTY4N2MyMjNlODhmYzVmMmUzNDljOGYgbGVnYWN5LXRydW5rCis1OTI2MSBiMjFiMWM0ZjA0Mzk1YjliMmExYTUwYTA1OTVjZTYzNjBjYmUzNTljIHJlbGVhc2UyNS1tYWludAorNTkyNjIgNGYxYjIwZWQ5OGU1ZmE3NTc4MDgwMGQ0NjgzNzkwMGNjZThjM2IxMCBsZWdhY3ktdHJ1bmsKKzU5MjYzIDYyMjRkY2FjODA3ZDg3MzAwYzliN2M5OGE2YWRkNzk2YTIyYTNkZTcgbGVnYWN5LXRydW5rCis1OTI2NCBiZmRlYTY1Mzg4YzMxYTY1YmFiYmYzZGU4MTlmMWQwNDI5NTQzOTcxIGxlZ2FjeS10cnVuaworNTkyNjUgMTk5ZGZmODUzMGFkOWRiOTZiM2UwMDdmNTBjZTBkMzhlNzRhNzkwYyBsZWdhY3ktdHJ1bmsKKzU5MjY2IDgyMzE0MWFkYjA4MDFhYTQzZWVhYmZjMjNjZDE5MWI4NzZjMWVhOGMgbGVnYWN5LXRydW5rCis1OTI2OCAwODg5ZGFmNmQwZDk0YjVmOTY3YWQ2OTcwZTJiOWQ1MTdhYWE2YTZhIHB5M2sKKzU5MjcwIGYzMjQ2MzE0NjJhMjdjNmQyYTY4NGYzYmI1NzA5MTg1ZmY2YjhmMmEgcHkzaworNTkyNzEgMWFjN2JhYWViY2U3NzU0OWE2YzU3YjQyMjVmYzZlMWY3Y2Q3N2UxZCBsZWdhY3ktdHJ1bmsKKzU5MjcyIGFiYTNkMDk0OWExZDU1MmRkN2VlZmExOWRkYzRhNjhkYTc2MDZlZTEgbGVnYWN5LXRydW5rCis1OTI3MyBlN2JjYWM4NTYyNDUyYzY5YTQ4MjBjMmM1ZTM4OWU3M2YwYWUwY2U3IHB5M2sKKzU5Mjc0IDFlMjY2MDE1Y2Y1YmFlY2ZkNDMwNzgwNGIwYTRkZWM2OTZmNTI3N2UgbGVnYWN5LXRydW5rCis1OTI3NSBmZjE3NjZlYjJmY2VlZjMzZTU5YTY0NTM5NDcwOWJiZTBhMjE3YTlkIHB5M2sKKzU5Mjc2IDI3ZmRjYTNhYTdkNDY4ZDBjYWQxMDk4YzljMGIyOGYxZWYyZGViZTAgcHkzaworNTkyNzcgNDBmY2FhZGZiMTY2M2ZkOWRmYmFkYThmNWM1MzI1ZDBiYzllYjZmYSBweTNrCis1OTI3OCA0ZTFkNjQ5MTM2N2M3NThkMzA2ZDIyN2I2ZTdkZmUwNzc3NzYxZjNhIHB5M2sKKzU5Mjc5IGNlZGI3YWRjODdjNWY3YzNhMzdlYWJmMTBlMjc1Y2E5NGQzZTkxODUgbGVnYWN5LXRydW5rCis1OTI4MCAxNjlhODM2NDUzNjcxNzA5OWFkNDViNDFjMTU1YTY1NmMxNzUxNjY4IHB5M2sKKzU5MjgxIDU3ODFlMTkyOGJjYTY1NjMzYmQyZWM1YzNlZmFjMTM4NjkzZWUyMDkgbGVnYWN5LXRydW5rCis1OTI4MiA3ZjBlNDg1MzZhMjdiMzVjMDI5YWNjOTNmOWQ0N2MzZDdhOGU0NjQ4IHB5M2sKKzU5MjgzIGExYzNiZDM4Mjc3MWNlNDliYWU4ZmZmYzAwMDg1OTNmNDZjZDdkOGUgcHkzaworNTkyODQgOTFkMTE0ZDFiNTg1MTM0ODFhODM0Y2ZiMjdhMjlhMmU1MzIzOTAwYyBweTNrCis1OTI4NSA0ODZkYzRkZjM3ODk2ODcxMGI4MDY5ODk2Yjk0ZTM3OWZmZjIzYWM1IHB5M2sKKzU5Mjg2IDIwYWM0Nzc3YzBjYTEwM2U5MmY0ZTI5NzdlYWI4YzUyODUyYjdlZTMgcHkzaworNTkyODggODAzZWRmOWIxZGQ5MTQzMzI2ZWNjMmU2YWZhYzc1YmNmNjM4YjRkNiBsZWdhY3ktdHJ1bmsKKzU5MjkwIGVhZDBkNDdiMDEyYjU5MmI3YWJjZDExOWUwMjM2MTRmODNhMmNhZDMgbGVnYWN5LXRydW5rCis1OTI5MSA3ZWFiMTdiZThjYjQ5NzgwYjhkMDM2N2UwNDcxYmE1OTUzNjA3NDQzIGxlZ2FjeS10cnVuaworNTkyOTIgNjQ1ODIwODNjYjlhZmE0M2MwNzQ1MDkwMDEzYTdjN2NhYmE0MmIwZSBsZWdhY3ktdHJ1bmsKKzU5MjkzIGZlNmJlZGFmYjQ2YTY0NjBlYjAwY2VkMDhhYTJiODE0ZDllNzg2MjIgbGVnYWN5LXRydW5rCis1OTI5NCAzMGY1NDk3NzgyOGIzMzc1MGIzNWI2Y2M2NWQzODY5YTBlZDk1YTAzIGxlZ2FjeS10cnVuaworNTkyOTUgOTcyMTBkODYzZDEyMzRjNmU0YjYzZDc5MmQ3ZTljMDc4ODM1NDNiNyBsZWdhY3ktdHJ1bmsKKzU5Mjk2IDRkMTZlZTM5MzAxZjljMjFlOWQ5MmNkZjY5YjhhM2IyN2E2NDRkYjkgcHkzaworNTkyOTcgOTczMjY4NWVlZTE3MmFhNzY2NTllY2JjYTZmZjJlOTY1ZDE4NDdkZCBsZWdhY3ktdHJ1bmsKKzU5Mjk4IDhhY2Q4ZjVjNjA4MTc1MmEyYzhhNTYxOTkxZWExNmU4ZDlhNDJiMjAgcHkzaworNTkyOTkgN2U4OWY1Y2Y2YjIxNGY0YmJmNTc3MmQ4NjcyMGVhNzBkOGM5NjI4OSBsZWdhY3ktdHJ1bmsKKzU5MzAwIGFhNjAxN2EyZThmOTI2ZmQxMTk0MmQ0ZDcwMWMyNTM3ZDQ0Y2IzODkgbGVnYWN5LXRydW5rCis1OTMwMiBiZTdhODVjMzRhNGM0Zjg3Mzg2ZThjM2RlODA1MmUwMDM3YTM2OGUwIGxlZ2FjeS10cnVuaworNTkzMDQgYjYzNzM0OTMzNmZkOWQxMjI3YWYwNzM1MzBmOTUwNTM2Yzc3OGVhNCBweTNrCis1OTMwNSBlYWQ3YTA1M2Y1YjQzNGZiOWMzNmI5NjMyYzAzMWE0NTgzYmQzN2UwIHB5M2sKKzU5MzA2IDQ0ZDBjNzFkYzNjM2IzODlkZmVkY2YzMjg3N2ZlNTAxYjcwYzA3ODQgbGVnYWN5LXRydW5rCis1OTMwNyBhZWVmYjg5NzM4NGZiNDBkYTlmMGVkNmQzZjU2MWVmY2JiZjhkZTMwIGxlZ2FjeS10cnVuaworNTkzMTAgMGJmZWM2MDk4MzdlYzUwMWFiYzgxNjY1ODU3NjYwYmFiMTZiNDUwMSByZWxlYXNlMjUtbWFpbnQKKzU5MzExIGUwOGIxMmMzYjkxMzY0M2IwYWQ3OGM2NzI0NjBjNWVjZWJhNzhlYjkgcHkzaworNTkzMTIgZDc1MjEwYmJjYTk3YWY4NzllNjQ2MTEzODc0ZTFkNjY3NjQ3ZDMwYyBsZWdhY3ktdHJ1bmsKKzU5MzEzIDJhNDM1MDdjZDk1MzJlYjA0MWJmNTg0MTcxMGRjNGM4YjdhYjMxY2IgcHkzaworNTkzMTQgODI1Y2ZmZDZjMGNkYTc0ODY1MjQ4MTJkMDMyNmJkNzQ0N2MwNjQ5NyBweTNrCis1OTMxNSA4ZTc0YWYxOTdlNmMwMzI0ZDlhOTVhZjgzNDVkYmJkMGM3OWRmZmY1IHB5M2sKKzU5MzE2IDg0MmIzZDQ1YmZlNGMzY2Y3YjI2MjQyYmZjMjJlODI1Y2YzYjNhMjQgcHkzaworNTkzMTcgMDQ1MDVjOTg4YWJjZjdjM2JlZGEyNmM0ODU2NDdkOWJhNDRlN2JlZSBsZWdhY3ktdHJ1bmsKKzU5MzE4IGVjZTY1YzY5YjFkMzE0ZTBhMWI0NTY5NzFhNjk4NGUxODkzZDJiY2YgbGVnYWN5LXRydW5rCis1OTMxOSBjOGIzMzljZmVmMWZlNWI0NjJkYmNkOTdkMDk4YTNhYzg3NzQyMDI2IHB5M2sKKzU5MzIwIDMxYTNjZTM4YjU2YzM1ZDlhMDQ4YzJhMjhkYTZhNjYzZjJkMjNjNWIgbGVnYWN5LXRydW5rCis1OTMyMSBjOWZjNGIxZjliYzY5MmY1ZWQ5NzNjMDMwNDJhODE0NmI2M2VjMWFkIHB5M2sKKzU5MzIyIDBjZTYxMjIxYzYzZjg0ZjI3NWFkZjI1NDliOWUxNWY1ZWY1NDdmYTUgbGVnYWN5LXRydW5rCis1OTMyMyA2MGVmOWM0ZTQwMTI0ZGMzMzNjOWNhYjAyZmJiN2RhMjgyOGJjYjUyIHB5M2sKKzU5MzI0IDdlNTA0MmVlOTQyNDRmZGVlZGVhMmEzYWE3OGViMjJhOTdmODg2NjQgbGVnYWN5LXRydW5rCis1OTMyNSA1MzMyMGQ1NDRiYzdhZDkyYjlkMjhhYmI5YzQwZDZkMmM2ZDFhNTliIGxlZ2FjeS10cnVuaworNTkzMjYgZjBiMzMxOWI3MjY2YjhmMmNhYWUyNTFlZWUxYmFiM2NiNDE2NDk4MiBsZWdhY3ktdHJ1bmsKKzU5MzI3IDJmZmE0Zjc5OTRhM2U5Yzg0NWZhN2MxMjY0NDFkMDRlZjZmZWZmNmYgbGVnYWN5LXRydW5rCis1OTMyOSAxNmJhMDAxNjhjNmFlZGE0NmRlODE5NWZlMTA4YzhmNDQzNTFlMTg4IGxlZ2FjeS10cnVuaworNTkzMzAgMWU3MjZhZWFiNmE1MjlhY2NjNWI0OGFhYzM2MTJjNzY1Mjg2OTZkMiBweTNrCis1OTMzMSA4OGY4NjQ0NWJlNzczZTg1YTAxYmVlMDNkYTc0MzEzYjk2ODI5YjM4IHB5M2sKKzU5MzMyIDgyOTkxZmY3NWM1YTZlNGI3ZmYxZDk3ZjY1ODI4Njg0NzA0MjYzYzggbGVnYWN5LXRydW5rCis1OTMzMyAxYTJhNmRmMGZiZTAxNzBjODFiM2UzZjEzNzE5M2M2YjI0N2M4M2E5IHB5M2sKKzU5MzM0IGZiODRiZDk1MDBhNDBlYTZhZGI0OTYxMDhiNGE1OTMyM2Y0MTNmYTYgcHkzaworNTkzMzUgNTY1MDEyZDExMjNkZjJlMmE3Y2JiOWVjYjA2ZGRiMDNkOTFjMzJkZCBweTNrCis1OTMzNiA4MWUwYzBlMmE4YzEzODQ0YzM3OTcwZGNiOWI1YjE1OTFkZWNlYTdhIHB5M2sKKzU5MzM3IGFmODZiODljZTc4NDcwYTliOWZiZGYwNWI3MjZmM2YyYjI3MWViMGQgcHkzaworNTkzMzggOWQxNTI1MzA5MTBhNjUwZDNjYWQ0YWYzMDc0OTVhMDJmZGMwMWMwZiBweTNrCis1OTM0MCAxYTdkZmI2MWI0ZDhlMTZiN2U0NjUyMTU1ZmM5OWI5YzFlNGU1YTMxIHB5M2sKKzU5MzQxIGVmNTM5OWIzNTNjOTVkYTcwZTdlNzdiMmYyZjNiMzI4YTk1ZjQxNjAgcHkzaworNTkzNDIgNTY0OWY3Y2UzMDYyODU2MWNkZmE2NzhjYTMxNGFiYTUwNjdkMTIzNSBweTNrCis1OTM0MyAzMzQxNjFmNzRiOGU1ZmRmZWExMDI3MWZkMDFkM2UxMTU2YzQ4MTYxIGxlZ2FjeS10cnVuaworNTkzNDQgNjEyZDhkZWE3ZjZjZTMyMzkxMjM1ODRkODc1ZjUzMDU1N2FjMDdmYyBweTNrCis1OTM0NSBlNGMyMjUwNWYwMTFjZjA2NzBmN2VlMzQ4NjgwYzUxNTU0ZTYyM2ViIHB5M2sKKzU5MzQ2IDYzZTYxYzc3MGE5MzJjODQ4N2M1YTc4NThjMWRhYmE1MTA5MTI0NDUgcHkzaworNTkzNDcgYzI3ODc4MjgxYzhmNzgxYjY4YzExODA0NTRmZjYzNDk1OTUzYzEzMCBsZWdhY3ktdHJ1bmsKKzU5MzQ4IDVkOTkxMDgwZDg4ZTVmYTFiMTQ3NDA5N2Y0OGIxNDdiZGFiODI5ODQgbGVnYWN5LXRydW5rCis1OTM0OSAyNmE0Mzc4NjM5NWI0ZDJiMjJjZTQxYjM5NzFkNTgxOWVkOTRlMzA5IHB5M2sKKzU5MzUwIDE3YjQzOTAxYmI0MTVmYmEyOGFlZTkwOWNjZTY4ZDY3OTU3NzVjZDMgbGVnYWN5LXRydW5rCis1OTM1MSAyNzg1ZTIxNjBmYTZiMjcyNDIxOGNhNmZjY2M5N2NjODlkNGUxN2EwIHJlbGVhc2UyNS1tYWludAorNTkzNTIgMjUwYzRmZDRjYTU0MmQyNDhjNzgyMDkzNGVmMjFhMzNlMGExODE2ZSBsZWdhY3ktdHJ1bmsKKzU5MzUzIDg2NzE2MTM0ZWQ4NzZmM2I5ZjQxMjI4NDQxZDExZjY1OGQ0NmIxZDcgcHkzaworNTkzNTQgMTM0OWVhNDQxZTQxYmJjYTNmZjZiZWNjYmRmYmU2Y2E1ZjE0MGY1MCBsZWdhY3ktdHJ1bmsKKzU5MzU2IDQwZmM4NDA1MTdmYzAxMmJhMTQ3MWM1NTJmMGZjZDBmNjA5ZDMzMzUgbGVnYWN5LXRydW5rCis1OTM1NyBkYWQ5ZWQzMzliYzM0NThkNjBkOTVjNGM3ZTVlNTJlYmJlMjk2ZmNmIHB5M2sKKzU5MzU4IDkzNDA2OThhZTQyMTM5MDg2ZTIzN2JmYjgyODA2NDdmZDViOGFlYzQgbGVnYWN5LXRydW5rCis1OTM1OSA3OWFmYTRjNTUyMTFkZmFiNThhZGY0ZTAwNGVkNDllZDdkNGQ2MDg4IGxlZ2FjeS10cnVuaworNTkzNjAgNjIwMGE0NDdkYWExNjY3Nzk1MDE1MGY2N2MyODAwMjdlODFmMzM1MCBweTNrCis1OTM2NSAzMjBmN2VjNjNmMGJkZmQyN2UyZGRiOTFjMDY1YjI2ZDU1NDA5ODhkIHB5M2sKKzU5MzY2IDU5MGExNDQ3NjAxOWEzYzJiNjJjMDI2ZDAyZTZjOTkzY2NmZjk3NzMgbGVnYWN5LXRydW5rCis1OTM2NyBkMzNmOGNjNzA3Y2JmZTNiOTFkZTNkYzRlNDk4MDg5YTI3ZWUyODNkIGxlZ2FjeS10cnVuaworNTkzNjggODYwY2U5NzU1ZDE1YmQ3ODUxMDcxM2RiMzQyM2UxZjI4YWQ0NzIxYiBsZWdhY3ktdHJ1bmsKKzU5MzY5IDU1YzA1MDQyMzAzYjM5ZjA1NGM0NzIxM2Y1NjFiMGJmNTk3ZWM0YWEgbGVnYWN5LXRydW5rCis1OTM3MCBhMWJjNjU5NTRhOWNiYzFlMTdlY2E4NWI3MGJiZTcwNzc4ZTk4YWE3IGxlZ2FjeS10cnVuaworNTkzNzEgMDVkYTQ5ZWIxMmMxNGYwMzQ4YTVlYzNjMzMzYTkzMTQxODA2MmRjYyBweTNrCis1OTM3MiAxZjcyMmIwODU0MDI3YzVlYzJkNzBjMjQ4OWNjYjRjNDBiNDY5YTYxIHJlbGVhc2UyNS1tYWludAorNTkzNzQgNTM4NDc2YjZkN2UwNTJiNTBhODJmZGIxYTgyNGJmMDQxZTNlODZiNSBsZWdhY3ktdHJ1bmsKKzU5Mzc1IDE3YzE3ODA3YTYxMTc4YWQ2ODhhZTgxYjQxMTU3NmYyOTQ4NWY1YmMgbGVnYWN5LXRydW5rCis1OTM3NiBkNjRiZWI4ZmFkMDY2MTc3ZjkxZWU5MWU3ZmY3NmFjMGM5MzdiMjg3IHB5M2sKKzU5Mzc3IDg1ZTRiZmYzN2JiZGNiNmQ1NmYwMmVkZjg1MzIzYjA1YTE5MjZjNGEgbGVnYWN5LXRydW5rCis1OTM3OCA0NGMwOTBjNzQyMDI2MDIzY2EwZjBiNzMxNTI2YjNjNTc1YWQxZTdjIGxlZ2FjeS10cnVuaworNTkzNzkgMWQ5OGZjMjY1Zjk5MmU1NjZjY2JiZjAyZDNmYmZhMjhhNTM3NDgwZSBweTNrCis1OTM4MCA5YWQ0YWVkZjM0OWJlOTJhMjg0ZDMzN2ZkM2RkMjhiYTBhZTExMDE0IGxlZ2FjeS10cnVuaworNTkzODIgNmVmOGI1YjhlNWQ2ZmZlOGIwNGY2NzY4ZTViZjNkMDFmMGE2Mjg5MyBweTNrCis1OTM4MyBhZmQyOTk2ZjIwMjEyNDc0OTYyMDg4OWI2MjM5OGZmYjZmNDRlMTc2IGxlZ2FjeS10cnVuaworNTkzODYgYTUzZWY3Nzg1OTBlYmIzZDBkNjZlMDJmMjBmZjkxMWZmMjJmZjAzYSBsZWdhY3ktdHJ1bmsKKzU5Mzg3IGJjYzE3M2MzYWQ3MDkyYjNiNjcwZTIwYzkxYTNmYmMwOWJmMTFlYTEgbGVnYWN5LXRydW5rCis1OTM4OCBmMTFkZDRkMzE1ZGQwZGE2N2I3MGRiYTA0ZmE1YTExYmRhY2Y5YWJiIHB5M2sKKzU5Mzg5IDc0YmRkNTBmMDdlNWRjM2M0OGE2ZjQyMmM5OWU2ZmI5YmQyMTM5NTcgbGVnYWN5LXRydW5rCis1OTM5MCA3MWFkNWUyYmVkZGEyN2QwOWM1MTlhMTlkNjM3NjFmNjFiMGRjMDM0IHB5M2sKKzU5MzkyIDkzOWU4MTJjYzA5Y2U3YjAwOWI0M2FiOTIzMGNmMDcxMWJjNTk1MTcgcHkzaworNTkzOTMgNTBiMDNhZmEwYmJlNzkzMzdhZmQxMjhlNzAxMzIyMmE2YTdkYTk5ZSBweTNrCis1OTM5NCBjMjMyODM2Y2U1Yzk0MzY0NTQwMDUxOGYzYWZiZGQ5OGNlMzBkYzFlIHB5M2sKKzU5Mzk1IGNlMjgwYTA0ZjU1ZTBmZTg3YjVlOWNhMWVjNjBkNmExMWVhNjVkNWIgcHkzaworNTkzOTUgNjVlODIxNDBlMjgxYmYyNmYyZTIyZWRhMDVhN2Y5OTU2YzQyMGY4YiBweTNrCis1OTM5OSAyZmNlOTg5ZGEwMjEzY2FkNDg2NDUxM2MwMzRlZGY1MDcyODc3OGE3IGxlZ2FjeS10cnVuaworNTk0MDAgMzM1NmFkNjJjMmEzNjk5NzFlZWI3NWY3ZjJiMWU2ODU4ZTU0MjJjZSBsZWdhY3ktdHJ1bmsKKzU5NDAxIDU4MmQyYTgzODYzY2M0MzkwMzUwYzE2M2I5MTI4M2U0MmYyZjBmMDQgcHkzaworNTk0MDIgODA4ODQ2NDNhNmY5ZTdkMTM2Yzk2MjdkMTI3MTQ0N2UwNzgzY2I5ZSBsZWdhY3ktdHJ1bmsKKzU5NDAzIGM2ZmIzOTNiNmM4MTU4YjIwNTlmYzUwYjIxODY4OWZkMjQ0ZWM0ZTYgcHkzaworNTk0MDUgNzBjYzdmNzQwZDM0NzI2MGEwYmU2MjkwN2I0YjY2ODAxY2ZhNGRiYyBweTNrCis1OTQwNiAyMmUzZjViZDE0MDc4NjMzOGFmNDZlNGIyZTFjYmZhOGVmY2Y5YjY4IGxlZ2FjeS10cnVuaworNTk0MDcgNGRlNTk0NzQwYTg4Zjk5NmI3MDEwNjNjMjY5YTk3Y2E2ZjllNjFiMiBsZWdhY3ktdHJ1bmsKKzU5NDEwIGE3MWE3MWNhYjYwODI1YWMxNzI2ZTUzMGNjOWVlNjJjYWE1NDQ0NWYgbGVnYWN5LXRydW5rCis1OTQxMSAwYmIxMDhhM2MwYzk3Y2U4YjRjY2U1OTM3YTVhZTliZWFmYTczN2JiIGxlZ2FjeS10cnVuaworNTk0MTMgNzdjYjhmZjM0OTEyYWNkMDdkM2IxOWVmNTFhNGMzOTAxYzI4YjYxMSBsZWdhY3ktdHJ1bmsKKzU5NDE0IGE5ODc3YjdlZTg1ZGVjOGM4Y2Q0ZTk3YjliZTY3ZjY3ZWZiODI5ZDggbGVnYWN5LXRydW5rCis1OTQxNSA2MjRmNTExY2U5ZjI0OGQzOGFkMDhhMDI3M2M5ZDI0ZTBkNDRjODAzIGxlZ2FjeS10cnVuaworNTk0MTYgMDM5NDVhMWQ0ZmIzY2Y1OWY4MjEyZmZkN2I0NjE1MDI0NjI2N2QzOCBsZWdhY3ktdHJ1bmsKKzU5NDE3IDlhOTc2YTZlZTkzNjY5MWVmOWE0M2VmMGM0YWFmOTM4NWJhNzEyM2UgbGVnYWN5LXRydW5rCis1OTQxOCAxMThlNmQ2OGI0NGExMjg4YWI3NmU4NDk4MzE0MzExN2Q0MWY0NzI4IGxlZ2FjeS10cnVuaworNTk0MTkgZjJmNzM4YTQzN2Y4NzljNjQzZGQ0NjQ2NGQ1YjlhNGM3OGFjZTNhMCBsZWdhY3ktdHJ1bmsKKzU5NDIwIGFkOGI4MDQ2MDY0NGYxZjhmYTYzNTQ4NTdjMjM2NDNmOTA0NmM5MmEgbGVnYWN5LXRydW5rCis1OTQyMSBhYWQ2NWEyNDI0ZTM4ZDhhNzJhN2MwYTI2NTZkZjAzOWQxMDQwMzg4IHB5M2sKKzU5NDIyIDRlZTc0MzEwZWNmOTg4Nzc0YjM0YWJhNWRmYjgyYTU4ZDAyYjUwZTkgcHkzaworNTk0MjMgMTc0NDhlNWU5NjcxZGE0Yjk2MTk2MzA4ZjUxM2Y2MDIyZDg1OGQwMSBweTNrCis1OTQyNCA2OTlmY2RmNWJiZDc0YjAxMDg0NGZkNDFhMTdjYWE2ZWE5Y2ZjYjczIHB5M2sKKzU5NDI1IDZiNTE3YWMxMGU4ZWY4ZTIzN2FkMWI2YmNhZWJiMTYzYzQ1NDg3YjcgcHkzaworNTk0MjYgOTFjY2NlNzQxZDExNDFkOTZkM2EzZjMwM2MyNTQxMTY0NWRkNzA5YiBweTNrCis1OTQyNyA2ZDVmMDg2MDFmNGE5NWI0MjE1ZmM1YzlhZjQ3YmYxZGZhYzIxNDJhIGxlZ2FjeS10cnVuaworNTk0MjggNTBhNTBlNzUyMTQyM2EyNzE1MzgzOTM0NjUzMjkwYTVhODcwY2FmMCBweTNrCis1OTQyOSBhNWM0NzM5MTIxZTE0ZmQzZGExNzQ5YTViMGRlYzYyZTk0ZWZjOThiIHB5M2sKKzU5NDMwIDYxZGY1ZjUzNzk2OWU2YWFlY2I0ODJkMzY1NDIwMWFmOTQ2ZjI1ODkgcHkzaworNTk0MzEgZjY3ZWM0ZWI0NzhhODkwOGM5MDIzMWFhMjBmMDU4ZTZlOWMwZWRjYyBweTNrCis1OTQzMiA0NGEyNGI1OWIxNmQwMjEwNjgyZGRiMDJhYWZiYWRiMWM1ZWM1NjRjIHB5M2sKKzU5NDMzIGJlM2I2NjAxZjk4OWE2OGU1YTAxOWNkODM4NjU0NzBmYWQ5ZDFiZTQgcHkzaworNTk0MzQgMzY5YTRlMDZmZDMwMTE2MmI4N2ZiZjgwODkzMzUyYmRmYzA0ZjhlYiBweTNrCis1OTQzNSA2Y2U2ZTJmM2RjYjJkNjg3Zjk1YWQ0NTE2MmMxN2QzM2QxNjQwMzQyIGxlZ2FjeS10cnVuaworNTk0MzYgNWFjODc0ZDA5NTU2MzZkNTM5Y2RjZDE5OTYyYTBmYzhkYjJmODJkMiBsZWdhY3ktdHJ1bmsKKzU5NDM3IDY2ZGJlMTJkZGYzMWQ3NmM0OGE2MDNiZDkwZWYwMzQzMWZlYzI2MTYgbGVnYWN5LXRydW5rCis1OTQzOCA0MGJmZDZmMWNjMTY5MDMzMjJhMTZjMmI3MGQyZDA5MjBlZjk1MTE4IHB5M2sKKzU5NDQxIGQ3N2ZkMWI4YzBjNTQ3MzIwOTNmMTQ3MTIzYTBjNDhmZTNjMjVhMzIgcHkzaworNTk0NDIgNWFiZmQwN2U5N2Q0ODlmMjVjNWRlMjAyZWY2ZjM0ZWMwNDRiYjJiYyBsZWdhY3ktdHJ1bmsKKzU5NDQzIGFhYzMzZWUxYThmYzczMjc3ZGUwMTJmZGQxYjViNzMxYWIwNzY4ZDQgcHkzaworNTk0NDQgODg5YTY0MjFmMTM1YjU5ZWMyNDJkNTQ1MDcyYTBlOGY5YjcxMDhjYiBsZWdhY3ktdHJ1bmsKKzU5NDQ1IDljZjJiZjk0NjFjNDEwZDg1OGVhY2MxZDZhZWJhOWVjZjU0Mjg0M2IgbGVnYWN5LXRydW5rCis1OTQ0NiAzM2ZmNDBlNmUxMzc1ODk1NmUxZmU0NmZhM2VlZmM0ZGNjMmM2OGI1IHB5M2sKKzU5NDQ3IDU5ZTY0ZmEzYWQxZDljYTJlNzc1OTk5MzBiZTc1ZjNiYjI5MzFmNDIgbGVnYWN5LXRydW5rCis1OTQ0OCAyMDI4ZmViOTRiNTc1NTIwNDlhZTU4N2M0NzQ1NzdjN2UxYWNhMjBmIGxlZ2FjeS10cnVuaworNTk0NDkgNDQ0ZGEwOGY3OGE0ZGE3OWY2YzcxN2IxN2ViYTIwN2VmNjBkMTVhZSBweTNrCis1OTQ1MCA2MGE3NDBmNWE1N2EzYTE3ZTlkYTYyZDQ3NjZkZmJlYjgwMzRiMzRjIHB5M2sKKzU5NDUxIGEzODZlZjI4YjAwODcyODgzNmFhOTQzNGQ4ZTRkZWZiNzkyZDlmOTUgcHkzaworNTk0NTIgMTJjZjlmZmY5ZDBhZWQzNmQ2YTJjNmZlN2I0NDY3Zjg5ODdhZTViNSBweTNrCis1OTQ1MyA2YjM1ZGY0MGJjYWNhZmQ2ZDJkNWNhZWJkOTM2OTBmMDYwNjUyODFiIHB5M2sKKzU5NDU0IDc2Y2U1OTdjNzJlZTBlMTA1NWU1Yzc5MDdhOGNmNTg0MmRlNzE4OWEgcHkzaworNTk0NTUgNDc4OTVjYTZmMGNiYThmYjFhOGY3NTkwMjcxNWU4YTUwM2UxMDdmNSBsZWdhY3ktdHJ1bmsKKzU5NDU2IDFiMGNlOWZmYTk3MjZkNTM5NGM0OGI5YjU4ZDkxMzNiMzVmYzA1MzIgcHkzaworNTk0NTcgNjgyZDk3ODhhMDM4ZTcyZmJhYmIxMDAzNDY3M2MxYzZmZDAwNDIzMyBweTNrCis1OTQ1OCA2NmNlMzMxNGMxOTgyMGE3MWFiOTRhODZiMjkwZDk4ZjI3MjdlYzhkIHB5M2sKKzU5NDU5IDI0NzQ5YTM4MDQwOTM0MDFkZTgwMzE0MDdmNzgwY2U2NmFiMGRjY2QgbGVnYWN5LXRydW5rCis1OTQ2MCBlYjY1ZTEwNWU0YjhjZGFkYTIwMGE5NTJiZGZhOTRhNDgyNThiNTdiIGxlZ2FjeS10cnVuaworNTk0NjEgYTRhYWI3MmMyY2MwYmM0OTQzMTlkMjExMDVlNTdhNWRlODQ3OGVmMyByZWxlYXNlMjUtbWFpbnQKKzU5NDYyIDJjNmZlMmRjYzg4ZWExZDgxYmM1YzIxODk2NDM1ZDZmOWM1MTJlM2YgcHkzaworNTk0NjMgZTY1ZTljNjQ5Y2ZkYWZiMzhjMzRhODg0M2ExOWE4MzI5ZjJiYzRhZSBsZWdhY3ktdHJ1bmsKKzU5NDY0IGY5MDk4NzI5MTdiOTVkOWIzY2RkOWZmYWU4NTQ1MDk1M2NiYjU3NTIgbGVnYWN5LXRydW5rCis1OTQ2NSA3YWU2MDRiMzUzM2I1MzYzNTRkYTMxYTNjM2UzN2Y4YjUwOTY3YjdlIHB5M2sKKzU5NDY2IGI1MjM5Y2NmOTRiNWJhNzM5OGE3YzcxN2M0NjE0ODNiZDgwYzAyZDAgcHkzaworNTk0NjcgNzI3YWYxNjFjYTQ2NGFiZDI3MTMwNDRhY2RmNWY1MTM0YTY4MDNhMCBsZWdhY3ktdHJ1bmsKKzU5NDY4IDJlMTljM2U1MTFiZjU5MzlmNjNmNDZlYjY0M2RlMGU3MTI3YjBkMTYgbGVnYWN5LXRydW5rCis1OTQ2OSAzZTA4NjdhMDc3NjU3ZTQxNDg3NTUwNDRlMWJkODM2MjQ4ZDExYTIxIHB5M2sKKzU5NDcwIGViMjI2MGRjYjM2NWZkZTY1MTFmNDFhZmM0ZDgyNGE0ZjI5Mjg5ZWIgcHkzaworNTk0NzEgYTZkMTA1OWYyMmUyY2QxNDA0YmEwYTAyY2YyMjhkNTI0N2I0NGQ5YSBsZWdhY3ktdHJ1bmsKKzU5NDcyIDRlYmJhOWIyNjg4ZjQwNzJjMTdmNTllYjRhOTRkNDAzMGJiNTU4ZTMgcHkzaworNTk0NzMgNjZkNDc5NmVlOTJjYmZjNDY4ZGY4ZGY3NmMzZjIxYzczZDg5ZTFmOCBweTNrCis1OTQ3NCA5YTA5ZDQ0MmJjZTI3YjJkNzM3NmZkMzliYjExYmIwYzhlMWY3OTc0IHB5M2sKKzU5NDc1IDk5Mjk3ODJmNWNiNDhkMDdiNDQ1MTA2YzIzNWRiMjI2MjgxYmNlODEgbGVnYWN5LXRydW5rCis1OTQ3NiAwMTcwNzE0ZWIwNDQyMTU4YzMxMGEyNGZkYjQ4N2ZkYWExMTcxZTI5IHB5M2sKKzU5NDc3IGUxNzZiNGFlYTljNTBmNWExOWQyYWM1YjQzZDQ4NmI2Y2MxNGZlNWUgcHkzaworNTk0NzggYzJlNzJmZWI1M2IzNmViYzE1MGE5NjgxYjQxOGU5NTU3MDg5MmIzMCBsZWdhY3ktdHJ1bmsKKzU5NDc5IDU0MTA1MmIwNDRmMDllMzEwOTZkZGQ5N2U2MjljYmViOGI3YzQwNWYgcHkzaworNTk0ODAgN2E4YzhjNTY4NWZjY2IxNGZmY2I2ZjZmN2NhNjBiODk3ZDkzOWY2YSBsZWdhY3ktdHJ1bmsKKzU5NDgxIDZhZTk0YTJiYTVkZmFmYTAxYTBlNDM5ZDE3NTk1MWRhOWFiN2Q2NDAgcmVsZWFzZTI1LW1haW50Cis1OTQ4MiAyMjZhMDYyYWI0M2VmNzc3OTc3OTRiYWM4NWQxZTE4NWY1NjJiZTVmIGxlZ2FjeS10cnVuaworNTk0ODMgZDhlMDY1NDNjZGQ4MGUzNDVlZGUxNmM2ZTJhMjdmMDQ5ZTdkNWFjNSByZWxlYXNlMjUtbWFpbnQKKzU5NDg0IDU4OTI2MmQ4MWUyOThmZWVjNzA4NjMyZmRjOGI3ODljMTY1YjYyN2YgbGVnYWN5LXRydW5rCis1OTQ4NSBmMDRjMDM2NWM5YWFmYmIzOWU4YjYxZGFjNmNkNjJlYTUxNDAxOGRlIGxlZ2FjeS10cnVuaworNTk0ODYgMzA5NmIwMTI3MzNlMTlhNGI5YmNhMzczMDUwMTk4MjA2ZjAwZjlhNiBsZWdhY3ktdHJ1bmsKKzU5NDg3IDY2ZWQ2ZTAzZWJiZGE5ZWZhMzIxMjlhZDc3NjIzOTFkMTJmZGVkZmYgbGVnYWN5LXRydW5rCis1OTQ4OCA3MTYyMzg3ODA1N2IyZTRmZGJkYmEyYWI0ZjU4ODAxMDg3ODBjOTg2IHB5M2sKKzU5NDg5IDQ0YzQxOGIyYmY3ZjY2MDllZjcyMTBiMDMzMmRjODA0ZmYwZjU1YzQgbGVnYWN5LXRydW5rCis1OTQ5MCA3YTYyYzZkOTEwN2RmOTgyZGYxZjc1YmRhMzU1NWVjMzIzNDNkZTkxIGxlZ2FjeS10cnVuaworNTk0OTEgMjk0YjFhNzlmMjAxOWFiYzAyZDY4YjE5NWIyZTliNjkwZmY5YmIzOCBsZWdhY3ktdHJ1bmsKKzU5NDkyIDYzNWEyMzI4MDExMjYzZDI5NTdjYWFmZTYzZDRiOWM1NjJkMjIyYWYgbGVnYWN5LXRydW5rCis1OTQ5MyBhMzI3ZjNlMjYxNTYxMWJjNTQ4MzY4M2EwZTA5YjNhNDEwMmZiZGU2IGxlZ2FjeS10cnVuaworNTk0OTQgM2M4YjcwMmU1ZjIwNzBlZWNmMTA0NzFmNGNmNTA1YTc5NzIxNjM1ZSByZWxlYXNlMjUtbWFpbnQKKzU5NDk5IDk2MWU4OWNjNzkxMWMwYTZjMDM5NzA4YzMxNTU1NjczMTQwMTRlODEgcHkzaworNTk1MDAgOTA1YTk2OTk3YjdjODBlYjJkYTMzMzdiYWM5NWI4NzhkY2Q5YmM3YSBsZWdhY3ktdHJ1bmsKKzU5NTAxIGRjYTk1OTU2NzMwZmMzZjYxOTcwYTZlZmEzYzdiOWQwNmIxZWFkNTggbGVnYWN5LXRydW5rCis1OTUwMiA3ZGE5NDc1N2VjNWJkM2Y3OGY4NmZiNjlmY2QxZTE4ZThmMTk1YzA4IHB5M2sKKzU5NTAzIDIwZWQxZDQxNTQwOWVhYzBhOTFjZTcwZTcwZDJiNDg2OTIwY2E1OGIgbGVnYWN5LXRydW5rCis1OTUwNCAxYmI5YjA3YTAxZGRhMWViOTNjZTQ4NDYyOGM5M2UxZjZhZWQ3YmRhIGxlZ2FjeS10cnVuaworNTk1MDUgNDVjNzhlNTBjYmQ1ZTBlNWU3ZGFkZWU3NzgyMmI0YmJhNjZkM2RjZCBsZWdhY3ktdHJ1bmsKKzU5NTA2IDE5Zjg5NGFlODY0YWYxZGEyYTNjMjRlMzRiODdjMTEyNjI1ZjljNzUgcHkzaworNTk1MDcgMTRjNWQyNzVkZGYxNDAzYTZlMmRlYzcwNmU1YzVjM2VlNmVmZTNmOCBsZWdhY3ktdHJ1bmsKKzU5NTEwIDExNTcwNjg0NjJiNTM4ZWM4YmEwNjRiMzk3ZTI3NzI0M2ZjNWYwY2YgbGVnYWN5LXRydW5rCis1OTUxMSAwNmQxMjJiNGJmZmQ3YWVkOGJhZTQ2ZWNlNTc4YTU4Yjc0OWQ0MDM3IGxlZ2FjeS10cnVuaworNTk1MTMgMmNlNTBhMjYwZjUzZDQyM2I5NjMxYmU0ZjE2YzRiMjg2MGI5MGM1MiBsZWdhY3ktdHJ1bmsKKzU5NTE3IGU3MGFjYmYyNmNkYTg4MGUzMGM4ZmEyMTg4ZDZiNjZiMGNiYzg5M2MgcHkzaworNTk1MTggMzAzNzI3YzU4YjUxZTAxNGE2MzY5ZGY3MTVlYjAxMjYzZTRjMjQxOCBweTNrCis1OTUxOSAwNDNjYTliNjZmNzk3MjIwMDkzNTlkYzc5Y2U5YzI1ZTQ2ODlmNDExIGxlZ2FjeS10cnVuaworNTk1MjAgNjE4Y2UyODFhNTVmODQ1MjFmNmIyYTRkOTVkOWU5ZTljM2YyYjg2NCBsZWdhY3ktdHJ1bmsKKzU5NTIxIDRjMGViNTg3NDgyZjYwY2EyMTFkY2Q4MmM2ZTI0MDkwNDRiZGMyODcgcmVsZWFzZTI1LW1haW50Cis1OTUyMiBhYWQ5MGViYmZiNTA0YmQ1ODM2M2U3NmI4N2I5NTY4ODhhZWIxOTBkIGxlZ2FjeS10cnVuaworNTk1MjMgYTY0OWFhNTJiMDc5OTA1MDAxM2FiMjA0MWZjNmIzNDBkOTk2Yzk5YyBweTNrCis1OTUyNCBlZTExNzQ2MjEyYjJiZDI1ZTVmYjg4NWIxNmY2MDZkN2IxYWQwMGRkIGxlZ2FjeS10cnVuaworNTk1MjUgNWE1MGE1YjU3MGIwMmU2ZjM2MmJiNmUyMzlkMDY0ZmQ3ZjA4MWQ0MyBsZWdhY3ktdHJ1bmsKKzU5NTI3IDliNDBhZDA1N2Q1OWUyMDdjYWY1MTdiMjAyOWMxMDA4NzI5NWNkZmMgbGVnYWN5LXRydW5rCis1OTUyOCAyMTFhYmNmYjQ5MjhiMmMxNzFkNWUyOGJjOTAxOTVlYTI2MjczMTEzIGxlZ2FjeS10cnVuaworNTk1MjkgYTQ2Mzc0MmZhNDExYjg5OGIyMmU4ZDlkNGM3MDA4Mzk4Yzk0ZWFiOCBsZWdhY3ktdHJ1bmsKKzU5NTMwIDc3OTFhNWVhMTVjMzg0ZWUyZTUzNzFmNjYyYWYyNTQwNmYzOWUyMmYgbGVnYWN5LXRydW5rCis1OTUzMiBlOTdmMTA1ZDFjODM0MGZjYWJhZmIyYjExYWVjZWQzNWY1ZGFmMjQ4IGxlZ2FjeS10cnVuaworNTk1MzMgYTE0NDg5ZjZkYjZmOTJiODc2M2Y3OTAxNjdiN2MwYzM4MjE3YWM0YSBsZWdhY3ktdHJ1bmsKKzU5NTM2IGEyZDBjNmE4ODkwOTgwMTA5NTY0MTJhMTYyNmQ1YjY4YzFkMTc1MWIgbGVnYWN5LXRydW5rCis1OTUzNyAwYTU0NDUyOGRjOWY1ZDc3NzY1ZjZjYzEzNDA2N2MwMjc4OWYwZGU4IGxlZ2FjeS10cnVuaworNTk1MzkgMDVjNTAxYTk1MzA4NzUxMWYxNWJhYTBlMWQ5Y2VmN2M4Y2VjMTQ1MiBsZWdhY3ktdHJ1bmsKKzU5NTQwIDA5Zjc0MzE2ZDVmYjU1ODBhOWY2Yjc4MGE1Y2QyN2NjZTFkMDgwNjMgbGVnYWN5LXRydW5rCis1OTU0MyA3NWM2YmZkM2IxZjMyZWMyMTdjYTczMWU1YzU1NGY5ZmYzMTBmYWJhIHB5M2sKKzU5NTQ0IDRhNmMwNmE3N2RlYjE2YTA3OGM0MzYyZWZjNGVkNjc5OTRiMmViZjkgbGVnYWN5LXRydW5rCis1OTU0NSBjMGYyY2Y0Mzg5YzUwMjg4ODAxYjdkOGMxNWYyY2ViNGYyMzYyMDViIGxlZ2FjeS10cnVuaworNTk1NDYgMTFiNmY1YjY4YWQxYTcyOWUwN2M5YTA4MzlkYjc3OWY2NmRkZDAzNCBsZWdhY3ktdHJ1bmsKKzU5NTQ3IDU2ZjM0MmM4NGU4NzA3NWZmNmM5NmE2Nzc1NmE5ZWY4N2MzMjFkNjkgbGVnYWN5LXRydW5rCis1OTU0OCAwN2FhMTkxNzBhNjczZGE2YjNlOGM0YzY2YmZkODY4YjJmOTBjMGU0IGxlZ2FjeS10cnVuaworNTk1NDkgYjViMzA4MGIzNjBmZGVhZTQzYWVhODA3ZGM5MGE2M2M1YjI3ZDI1NCBsZWdhY3ktdHJ1bmsKKzU5NTUwIGVhYjAwMmI4ZTE3ZThlMmU4NDg3NjkxZDdiZjgwOTE0MDczNmUwYmQgcmVsZWFzZTI1LW1haW50Cis1OTU1MSBiNTljMzI4YmZhNjIzZTBmOTY2NGE5NjI3Yjk1MDY1YTkyYWYzMTczIGxlZ2FjeS10cnVuaworNTk1NTIgYTk5MTI4ZjZjOTdkZjM5MzBmYzM4OTk2YjA3YTI5NzA5ZDBkM2E1YiByZWxlYXNlMjUtbWFpbnQKKzU5NTUzIDdhYzExN2IzYmUzN2ViN2FlMzI5NzA3ODdlNjMxYjIyYWJhMDQ5OTQgbGVnYWN5LXRydW5rCis1OTU1NCAxNWZiZTdjNzkyODQ5NzM5MTc3MTE2MzE1MGZkMGU4OWRiNjMxOTZiIGxlZ2FjeS10cnVuaworNTk1NTUgOTU4NTgxMDk4MTUxYWI3NjFiNjFmZmM5OTE3ZTYyNjEwOTUwODI4MyByZWxlYXNlMjUtbWFpbnQKKzU5NTU2IGRjODg0YjYwNTBkNDVmYjUzMDZiNTE3YTRjMzkxNTNkMDgwOTgwNzAgcmVsZWFzZTI1LW1haW50Cis1OTU1NyBmOGQwZmFmZmNlODg3NmY1NTRiZjZlMTg1Y2QyOWU3MDNiZGE2MWZkIGxlZ2FjeS10cnVuaworNTk1NTggMWQ2OWFhYmY2ZjdmMjI3NDZiNGM3MjAzYWY1YzliMDE5ZDIyZTMyZSBsZWdhY3ktdHJ1bmsKKzU5NTU5IGQ1MWIzOWMyMTYwYTNiODU1ZjRmMjY1YzQyMGM0NjQwZDdmNTc0ZGEgbGVnYWN5LXRydW5rCis1OTU2MCBhMjhhYzliNjdiZWRiNTZhYTFlMjQ3MzgxOGNmYzEyOThmZTFlMWQ4IGxlZ2FjeS10cnVuaworNTk1NjEgNjE2ZmVjMGViNTE0YjY1MTA2MGM0MDlhMzkyOGQ0YTliMDVmOTZiMiBsZWdhY3ktdHJ1bmsKKzU5NTYyIGUyZWZmZWM5ZDVhZDdjZjA5NmZkYzQwYzZiZDM1YWE1Y2IxZWZlM2YgbGVnYWN5LXRydW5rCis1OTU2MyA0ZGMwMTQwMmQ3OGFmZTJjOWI0YTRiZDgwMDRlYjA4ZTI2NDczMzVkIHB5M2sKKzU5NTY0IDI2Mzg0YjgxODBjN2E1NWNkNmEyZWQ0NDEwN2NmNGUzMzkwMjVlYzYgbGVnYWN5LXRydW5rCis1OTU2NSA4NmEyNjc5ZGNhNDY0YTI4NGZkMDJiODE2NDZmMjY5MjA0OWEyY2U4IHB5M2sKKzU5NTY4IGY3YmM3OTExMmJjZmE4OWJiZWFiMDM1ZDhiY2VhNDNlODJmZTg5ZDkgbGVnYWN5LXRydW5rCis1OTU3MiA2MzE0YjlmOGE3ZTAzZjBjNTdlOTk1NDM4YTQ5ZDg5MWNmYWQwZDMyIHJlbGVhc2UyNS1tYWludAorNTk1NzMgYjEzNDdjNjhkNDU2ODVhZTJjODNmNTJjMjA5Mjg5NDY2ODFlZjM5NCBsZWdhY3ktdHJ1bmsKKzU5NTc0IGI4OWIwMzM0MzcyYmE4M2FiZjRkMmZjMjQ0YWMxNmJlM2RmOTcyODAgbGVnYWN5LXRydW5rCis1OTU3NSA1MWMxNzVjODZmMzZiYjNiZWQxMzNhMWIwYTE0OGYzZTI4MTllNWNlIGxlZ2FjeS10cnVuaworNTk1NzYgMTc0ZTBiY2IyYzNjMTMyYTI2YzlmMDRkM2NkNjBmZDlmN2RmMWNmYSBsZWdhY3ktdHJ1bmsKKzU5NTc3IDBhZDEyYzc5YWYxODVkZjgzOGYyMTZmNzc2ZTc0NDNlMWMyMzkxNzIgbGVnYWN5LXRydW5rCis1OTU3OCBiYjcxNmViY2IwODJhMWU3OTQ0MmU2MjU4MTNmYTE2M2JjNDY4ZDFhIGxlZ2FjeS10cnVuaworNTk1NzkgOGQ0ZDMzNTM2OTk1MGMxMjAyYjMzZmU5YTU4ZDU2ZGUxNWRjYTYyMiBweTNrCis1OTU4MCBiYWQ1NWE1ODU5NTliMTFmOTM0MWM5NmY2MTRlYWIxYTc1NTQ1ZWMyIHB5M2sKKzU5NTgxIDU1ZGFkYzhiNjhmYzE5NDJmY2UzNmJkNzNlNDg1MmZiNmQ4OWNhMDggcHkzaworNTk1ODIgMjEwYzUwN2RhYzk5NjE4NDgyMTc4MWNiMTNhYjhmZWViOWM5MzJmMyBsZWdhY3ktdHJ1bmsKKzU5NTgzIDZlYTBlMTVjZTU3MzZkZjc2ZGE1MWIyNWFlY2Q0M2ZmZjdjMzFkNjQgcHkzaworNTk1ODQgOGRlYWQ2ZjgxYmFlMDFiZTRjZDM0YmM5YjVjOTRjNWJkM2M4ZjA0YiBsZWdhY3ktdHJ1bmsKKzU5NTg1IDgzY2VkNDE3N2VhY2M0OTNlYjVkNTZlNGUwZDBjMjQ3MWRkODA0MGMgcHkzaworNTk1ODYgZWFlZmI5M2I1ZWQ0NDM4NDA2ZmM3ZjgwYTEwYWMwMzUyY2JmNWFlZiBsZWdhY3ktdHJ1bmsKKzU5NTg3IDMyZGQ5Yjc3NzNjM2MyMWQxZjUxNmVhZWE4ZmY5ODJkYzYwNDFiNjIgcHkzaworNTk1ODggNDQ1NDEwNzQ0ZmQ2MzczNTk3MTNkMGQyMzE3NmQ4YWI0OTViYmIzNiBweTNrCis1OTU4OSBiY2U3MGE0NzdmMWRhM2RhMzQ5M2JlYjRjZGNkNWZjN2UzOWNlMGZmIHB5M2sKKzU5NTkwIDJiMDNjYWNjMWI2YTRlMWFiNTgxMjliZWJmMGM0NTUyYzkxOGJhMjQgcHkzaworNTk1OTEgOTU3YmFhMzdjZTBkNGY0YjE1ZjI3YmQwYjQzMDQxZmZlZTVmMDhkNiBsZWdhY3ktdHJ1bmsKKzU5NTkzIGM4ZDMxMjc5ZmNkY2I2YTcxMmE5YTM1NjA2ZjZmMmM1YmYzMWM1ZjEgYWxleC1weTNrCis1OTU5NSAyNzUwZDUzMWZkYzAyM2RiZGI0MDJkYjYyZmIxOWNjODNmNGRhNzMzIHB5M2sKKzU5NTk2IDg2MzY5MmRjNDExZWYwMWYwYzY0MjAyYjViMTVhNDAzOGFkNmM4MzggbGVnYWN5LXRydW5rCis1OTU5NyA1ZjU5MTIzZTc4MWZmNjRjNTgxYTNmZWVhZWRjYWE4Y2VjODc3Yzk2IHJlbGVhc2UyNS1tYWludAorNTk1OTggMWRiNjI0M2U5M2YyOWJkMmMwMTU5ODllY2Q5ZmYxMmEzMzU4MDg0YyBsZWdhY3ktdHJ1bmsKKzU5NTk5IGRiNjc1MjExYzJmNzUzMTE2MmZkNzg1Y2UyZjljMDlmODY1ZDE5YWYgbGVnYWN5LXRydW5rCis1OTYwMCBiOWJlMTE3YjI4MmMzN2JiMzVjYTkyMDIyNWI5NWNhODNhNjk0NTgxIGxlZ2FjeS10cnVuaworNTk2MDIgZWRiNmFhNjI3NTNiYzc5MDdmZWYzY2U0ZjMzNjYxMjk1OTkxM2JlMiBweTNrCis1OTYwMyAwODQ2OGEyNjNhOTU4MThmOWIwYmY3YTk2NmZmMzJkYjA1ZmM2N2UzIHB5M2sKKzU5NjA0IGViNjk1YzU5MWU3MDRiYTQ5NzMxYmE5NzE2N2I1NmRlZDZmMzZjZWIgbGVnYWN5LXRydW5rCis1OTYwNSA3MWJiNzBmNjA5N2I4MjAwNGNkMTY4N2QwZDVkNDU1YTc2NTIzMzg3IHB5M2sKKzU5NjA2IDM2MjUyMzRiZjNkMmVkMzY4MDFjYTBjNjRlZDQ4NTRmMDUzNDI0YWUgbGVnYWN5LXRydW5rCis1OTYwNyBkYTJiMTA1YjBjNTIzZjRmYTM5MmFhY2JjMzgzZTEwM2E5MGE2NWViIHB5M2sKKzU5NjA5IDU2NzAxMDRhY2QzOTU0OTUxY2FlMmYzMmE5OWQxOTk4OTI2YTQxYTIgcHkzaworNTk2MTAgN2QyZGExY2Q4MGExMWJiNmY1NDhjNjRmMjZhZjZlNDUwZDAzMDQzYSByZWxlYXNlMjUtbWFpbnQKKzU5NjExIGYyOTIyNzM1ZmI3YWIyOWUzMDJiNDk5M2E5YzY5Yjg4YTUyNDI0MDYgbGVnYWN5LXRydW5rCis1OTYxMiBhZTBmMmVhMDQwOWY0NDAwZGQwNTMxMTAzOGEyMDk4NGE3Yzk0Yjc4IGxlZ2FjeS10cnVuaworNTk2MTMgMWZjZjFlNmQ4YmIxZGVkOTVhYmY1N2NjZjM5ZTBiYjg1ZDllYWJiNyBsZWdhY3ktdHJ1bmsKKzU5NjE0IDg2MzU4YjQzYzhiYjI1YzFiOTJhMWZhMWRmODVmYjk2MzkyMmM4YjcgcHkzaworNTk2MjAgOTVjZjNkNTNjYWUwMDFiZTZiY2Q4NDMzNjUyNDNlNTBlNDBkZjhmNiBsZWdhY3ktdHJ1bmsKKzU5NjIxIDgzYTEzOGZkZmRmYTk4MThhNTRiYmUyMjI4NTY5NmYwMzE2ZmVmYzcgbGVnYWN5LXRydW5rCis1OTYyMiA3NDJkNjU5NjFiMWZhNmNjNGIzOTkyYTcxZGQzOTU2ZGY3ZmZkOWMwIGxlZ2FjeS10cnVuaworNTk2MjMgMzcxNWYwMzc0ZjZhZTdkYzE4OWUyYTFhNTkzYjBlMzQ5M2E4OGNhOCBsZWdhY3ktdHJ1bmsKKzU5NjI0IGE2MzE5YWI0OWUwYTNmYmU0MjhmN2FlZDNjZmE3OWFkMmQ5NDRlY2IgbGVnYWN5LXRydW5rCis1OTYyNSA2NTU2ZjNmMjJjMTlmMWJiZWUzOTViNTUwOTEwYmQ4NDgzN2ZjMDFhIHB5M2sKKzU5NjI2IGYwNWFjMTQ1MTFmZjYyZjE1OTA1MmE3MTA3OWQ2YmU2NzBmMmUyZjEgcHkzaworNTk2MjcgMWViNDk4MjM3YmE1YjU4ZDFhYmJhMTMwNzBmMjI0NjY0Zjk3MzFmYSBsZWdhY3ktdHJ1bmsKKzU5NjI4IDQ0NmU4YjYwN2JkM2EwMGYzY2Y5NmFjMzE3NzJiYTJhOTE1YmQ4ODcgcHkzaworNTk2MjkgNDFiZmJmYzM2Y2Y3MjYzYTEzOTMwMTMzNDY3NzcwMTc0MDEyZjBhYSBweTNrCis1OTYzMCA4MWIzYWM1OTA4OWMxOGE0MWJkOTA1ZDdhYjFlNDY4ODFmYThiY2FmIHB5M2sKKzU5NjMxIGFjYjZhNGIyYzA3ZjMxZWI2ZTAwODgyNTllOTc5Mjg5OWE2Mzg3ODkgbGVnYWN5LXRydW5rCis1OTYzMiA0MjUxODUzZmE5YjkzNDhiMmJlZjk3MmVlYmJjZjQ2YmM0MTlhMzViIGxlZ2FjeS10cnVuaworNTk2MzMgM2VlNWRlMTc2ZTc4NTJlZDZiZTg3NDJiMDYxNTRmYmE5NTBhNzI4OSBsZWdhY3ktdHJ1bmsKKzU5NjM0IDdhODZiMjBjNWI0YjFkM2M0MzMxNTE3YTE4OTU5ZThlMDgxNTA1ZWIgbGVnYWN5LXRydW5rCis1OTYzNSBlYjEyMDc1MTNlZTdkZWU5YTU3YzU3ZTVmMDFlYzFiYmQxMjY5NDI3IGxlZ2FjeS10cnVuaworNTk2MzYgZGRhMjllNzEyODE1MDZmMWQyMjE4YTZlZWYyNDc3Y2UyYjA0ZjFhMCBweTNrCis1OTYzNyA0NmQ1NDAxMWUxZTU2M2M0YzM4NzhlYzgzYzFjZDFiZTA3OTdlMjU1IGxlZ2FjeS10cnVuaworNTk2MzggZTM2NmM0NDk0OGEzMTQxYzhjYjM1NmY0NGNlODU3ZDBiZTliZTY4MCBsZWdhY3ktdHJ1bmsKKzU5NjM5IDYwN2U2OGNiMDk0OGQ3MDdhYmM4ZjkzNmE3YjdiNzQwM2VjNmYyMjYgbGVnYWN5LXRydW5rCis1OTY0MCA5MzgwZDVkYTc3MTY4ZTBlOTdhZjI2MjBjNzIyODQ3ZjkxZDliOTIwIGxlZ2FjeS10cnVuaworNTk2NDEgOTAxZjcwZGIzYjM0MDQwMDhlODI0MDhhZDAwNTM5MjI1ZGFjNWI4NyBsZWdhY3ktdHJ1bmsKKzU5NjQyIGVlZTFiNzZhOTRlMDExOGEwNmJjY2U2NmUwYjMzMzcyM2MwMzRkZWIgcHkzaworNTk2NDYgNjUyZjdhYjU5MThiMmY3ZDljYWRhZjBmNGMyY2U0NGRmYjEzN2RkOSBweTNrCis1OTY0NyAzZmY3NzhhMzU0MTA0OGJmZTg4MDkwMTY4MTczMjc3ZDA3ZDFjZmMyIHB5M2stZ3JhbmRyZW5hbWluZworNTk2NDggOWIyZTI1NTFhZmJlMzc4NDNhZDlkN2U2MTc1YTJmNGI2ZGYwODNjNSBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjQ5IDk0YTI5MzczNDkzYmQxMDA0ZmNlZmY1MGM0MGFlOTdiMTBhZjVmZTIgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MCBmNjdiMmU4M2IzNDc1ZGRkZjlhYmVhMmIxNDZhODZkNThlYmY5NWY0IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NTEgZGIwYzhiNDFkZGIwZDVlNGMyOWQ5N2IwMGY4ZTY0ZTBkOTFjYzQwOSBweTNrLWdyYW5kcmVuYW1pbmcKKzU5NjUyIGI5ODhlNGQzNWVmM2NkMGQ2NWNhYWRkZTVmMDRlYzJlM2Y1M2Q5YmQgcHkzay1ncmFuZHJlbmFtaW5nCis1OTY1MyBhMWZmMmZhZWRjNmJlOGZiZWQ2NmNhNzk3OGFlNjVkMWQ0YTZiYjk5IGxlZ2FjeS10cnVuaworNTk2NTQgZDlhNGE1ZjAxMjFlMThiMWRlOGUzZmM2NDQxMDE4MzkyNGFiYjEyNyBsZWdhY3ktdHJ1bmsKKzU5NjU1IDZjMGM1M2I5ZjM3YjRmOTk0NzFlNjI5Y2M0OTM2Yjc5MjFlNzk0YTMgbGVnYWN5LXRydW5rCis1OTY1NiAxYTU0OGE2NTRjMWEzZTY5ZTBlNTA1NTQ0MTYwYWY3MWRlNzU4ZjI1IGxlZ2FjeS10cnVuaworNTk2NTcgOWFiMzFmYTM2ZmI1MmZjMTMyYzU3YjlmNDYzMDcwYWI0MjM5MTYwMiBsZWdhY3ktdHJ1bmsKKzU5NjU4IGY2NDVlMDdkODcwYWY1OTZhZjFjZTBlZjcxY2JjYjc3MGFkMDk0MjggbGVnYWN5LXRydW5rCis1OTY1OSBmMGU5YzNkMTY3NjZkMjQ2YWY4NTAwMDBjZmNmNTRkNWIwNWU4YjBjIHB5M2sKKzU5NjYwIGRhMzA4NzdmOTc3OTk5NDIwZGQ4ZjM4Y2UzNDExMmZkYzc4OTE5M2QgcHkzaworNTk2NjEgMDk5YTE3ZTJkMmJkNDlmMzRiYWZhZjE2NDA2Y2RiOWI5YWNkOGQzNSBsZWdhY3ktdHJ1bmsKKzU5NjYyIDY2YmVhOTEzMjRjZDkzMzcwZmQwYzY0YWRjNTFlOTQyZDViOGE5NWMgbGVnYWN5LXRydW5rCis1OTY2MyAxZTZmMjdiNjk3M2NjNWEwNjcyZTNiZTljZDhjNTk1ZDhiMTQ4NDc2IHB5M2stZ3JhbmRyZW5hbWluZworNTk2NjQgODk5ZmVhZDllYWUyMWI2YTBmOTk4ZWYwNDNiZGEzOGZlMDI5YWMxZiBweTNrCis1OTY2NSBlOTA3ZjgxNGQ5YTMwNzE5YzhiN2I2YzdjMGFjMWRiYjZiNTVlYmRjIGxlZ2FjeS10cnVuaworNTk2NjYgNjZkYTM3N2JhODEwNzg5MzMyYzBhZGQyYjBjNDI2YWFhYWE3ZWMzMCBsZWdhY3ktdHJ1bmsKKzU5NjY3IDZlOTNkMmQ2ZWIyODAxZGJiZDFmNDkwYmU3YmI5YzI3MWZlNTMyZjIgcHkzaworNTk2NjggZTlmNDgwYjRjMTMzY2Y2ZTljZTVkYjhiODg3YTJiM2ZjODhlYWQyZiByZWxlYXNlMjUtbWFpbnQKKzU5NjY5IDVjZDI4ZjAxMGZjNzFiYTBhYzk3MDIzYzI2MmQ5Mjk3NjY5OTcwM2IgbGVnYWN5LXRydW5rCis1OTY3MCA0YWUzMDA3ZWIwZjQ3MTYwNGU1ZTNjYzRkNjE2NzM3NjYxYTRkNGNmIHB5M2sKKzU5NjcxIDRmOTcyM2Q5Y2EzMjBhZjY3ZTlmNjBhMmMxOTdkYTJlNmZkZmQzMGUgbGVnYWN5LXRydW5rCis1OTY3MiA4Mzg2ZWVkYTIxYzhlMzU4ZjlhNGU0YWIwM2VkZWJhYTZiMWQxOTkwIGxlZ2FjeS10cnVuaworNTk2NzMgYTNmMTg2NzkwZmY2ZTA5YWE0MDJjOGM0ZWIxOGExOWFlOTRlN2ZmNyByZWxlYXNlMjUtbWFpbnQKKzU5Njc0IDE4YTFiYzQ5YTY5NmUwNWRkNGU2MzViOTU2OTUxMjUzNjI2MzUxNTAgcmVsZWFzZTI1LW1haW50Cis1OTY3NSA0YzA1NmMwYTBiOWY1NjY5OWE3OTYzNTM2NzEzN2M1ODU2ZTkyZWNlIGxlZ2FjeS10cnVuaworNTk2NzYgOTY4YmRhODFlNmM4MGJhNWZmZmYxNWRhYzc3ODhhYmI4NmI3YjE5ZiBsZWdhY3ktdHJ1bmsKKzU5Njc3IDI3ZTRlNTMwY2YyZjZmMDY5NTdhNWU1MjljY2VmNWM2YzdjNjc2NjIgbGVnYWN5LXRydW5rCis1OTY3OCAwY2JlOTRiZWEyYzdlZjYxMGRlYTdiMDVkMWJhYjlmMDRhZjlhZjQ0IGxlZ2FjeS10cnVuaworNTk2NzkgNjIwOGIxN2QwZGJlZGYwZGU4MmQ5MGQwZDlkMDQ1ODQxN2QwZGQ5MSBsZWdhY3ktdHJ1bmsKKzU5NjgwIGI5MWNhODdlNmYzMjcyMTQ3Zjk0YWI2NWNlYTc2OGIyNDk0MjAzMDcgcHkzaworNTk2ODEgZmEyZjcxODNiMWFmYzU1M2MxN2I3ZTZhZTVkMzM4MjVhOGEwMWZjNCBweTNrCis1OTY4MiBjNzMyMTBlYTYxYzg2NTE2ZWVmMDIyYWJhODhjNzhkMWEwZmIyOTc2IHB5M2sKKzU5Njg1IDAzNmIwMGRjOTc2N2Y3NWUyMzAwNWY0M2E1NzhlZDI1NDk0NjA5MWMgcmVsZWFzZTI1LW1haW50Cis1OTY4NiA1M2FjM2ZjNjliNzhiMWZkZTA4MjVmZjM2YjhjNDY4NGI3MWI0ZGQ3IGxlZ2FjeS10cnVuaworNTk2ODcgOGQ2OWVkZDNkMjkwMjg3ZTlmZGU1YjdlOWI5YTUxYTQwNmVmMWUxZiBsZWdhY3ktdHJ1bmsKKzU5Njg4IDE3MzU5YzlhNGE3ZDI3YTE4YTIzNmNhNjQ1M2Y0MzlkZGIzMzliNjMgbGVnYWN5LXRydW5rCis1OTY4OSA1ZTAxNzBkM2M0ZGE1NDRjOWExN2YxYTZkZDNiYTZjZjI3NTEzZDUxIGxlZ2FjeS10cnVuaworNTk2OTAgOTQ2MjljOTU5NjVhMTE4NGYzM2MwODJjODFlMWUxYTNlNDVlMzgzNiBweTNrCis1OTY5MSBjZjI2NjdlMmJhMmY1ZTJlNDE3N2NjYTAxYjVlY2I1ZDllMzAxNWQ4IGxlZ2FjeS10cnVuaworNTk2OTIgNTE3MWI1YWU2ODhhMjE3YjllYzhjY2I3YTNkMDVlNjg4ZGEyMWQ1NyBsZWdhY3ktdHJ1bmsKKzU5NjkzIGQxYTM2ZGRiYWE0OTJlOTI2Nzk5YzU0N2NiYjk1OTgwZTgyNWMyM2IgcHkzaworNTk2OTQgY2JhOWZmNzYwNDMwNDhlYzJkYzdiMzIwNGMwZjVlMTQ0YjMxYWM1MyBsZWdhY3ktdHJ1bmsKKzU5Njk1IDI5ODZiYjQzMjIyMjE3MjFhYmU0YmE0ODY5ZmZlMGU3MGFkODcwNmIgbGVnYWN5LXRydW5rCis1OTY5NiBkZTAwYWYwM2JiNGQ1Njk1NTRhZGY5ZGNiZDMzMzBjYjU4YjA5N2ViIGxlZ2FjeS10cnVuaworNTk2OTggZGNkZDFiYTA5NjQxMGU5N2MxMDk0NTgyNzMxYmJmYzcyYWY0MmVhZSBsZWdhY3ktdHJ1bmsKKzU5Njk5IDc0MmNhZjUzNTU1NzZmZTZlZGYzNjM5MWU0NDY3MzQ4ZjAxYmRkOWUgbGVnYWN5LXRydW5rCis1OTcwMCBhZDJiY2JlODNmZGMyZmQxNGI3NTlkMTVjZWFjZGM3ZmQ2YmVlNjExIGxlZ2FjeS10cnVuaworNTk3MDEgNzY0M2E0M2YyNWExZTY5N2YxNmIyM2YyYWNmOGYwYzZkYmZhMTc3MiBsZWdhY3ktdHJ1bmsKKzU5NzAyIDEzYWFiYzIzY2YyZTJjMGUyMjU5YzliNTA2Njg5NDU4MTg4OTc0MzggcHkzaworNTk3MDMgNjFjMTY0ZjI1NDM1NjQyYzMzYWE2NjYyZjlmNjkzZWQ0MTViOTRjNyBweTNrCis1OTcwNCA3NmE4OWRkNGE1MTIzNzI3N2JlNTU1ODE0NDA1MjUzZTM1MDJlNTUzIGxlZ2FjeS10cnVuaworNTk3MDUgZDJjMWJhMDk5MjkwODNjODI1NjY0ZTBiZDhhMGQ0YTE2OWY5ZDk5YiBweTNrCis1OTcwNiAzOThiNjI0Njc1OWZjMmQyZTNjYjRkMDNhZjVlMThhMTllYTI5NTgzIGxlZ2FjeS10cnVuaworNTk3MDcgNzdjMzdlMzJmZTM1YjVjMDcyNTQzZWVjOTgwMTM4MGY2YTI2NDJhZiBsZWdhY3ktdHJ1bmsKKzU5NzA4IDEyN2NjMmZlYTlmYjlkMTVlYzA2NjZkZmJjYTE3MzI0ZWQzMTE3MWUgcHkzaworNTk3MDkgZGNlMjU5NDg5MThkMGQ5OGEwMzMwZGQwMTgyYjk1NzI3ZjQ2MmJmNCBsZWdhY3ktdHJ1bmsKKzU5NzEwIDgxNjY5ZmJjODQ1ZjEyNDk3YzY0ZjY3OTUyYTQzYTdiM2JiZDNmZmQgcmVsZWFzZTI1LW1haW50Cis1OTcxMSA1ZDdkMmFmNTlhZmUxY2FiNTIxYTY2ZGU3YWRmMTEyYmY5ZDc0MWYxIHB5M2sKKzU5NzEyIGJkMDI1OGRmMzMwZWM1ZGFlOWIxNmQyZGZjYjgyZWY4ZjE3MjA1YTQgbGVnYWN5LXRydW5rCis1OTcxMyAyOTJjNWU1MWEwZTU5NjE4ZWY4YThiNDhlMDAzOGI3OTIxYzQ2MDExIHJlbGVhc2UyNS1tYWludAorNTk3MTQgOTAxOTA4NmZkMjBhNGRiNzUyZjI3YmE2N2EzM2Y4ZjkwMmY5ZDI1ZiBsZWdhY3ktdHJ1bmsKKzU5NzE1IGQwNzdiMGM4OTNiYzY1NjE5YWI3MzA0MjY2NjZlNTc3ZTg4YTI4NTIgcmVsZWFzZTI1LW1haW50Cis1OTcxNiBiZmVkNzAyNzdhYjNiNjg2NTM3OWY3YTM4NTg5MzU3YjVlZjZmNGMzIGxlZ2FjeS10cnVuaworNTk3MTcgNjEzNDE3NzViYzQyMTcyMzE1ZTE4ZWIxNDRmN2E3NDUxN2RlNmVjZSBsZWdhY3ktdHJ1bmsKKzU5NzE5IDgzY2E3MzVhMzk5NWE3MjE1NWY2YTBmZWZjNjA2MmIyYWJiYjE0OWYgbGVnYWN5LXRydW5rCis1OTcyMCA2NDZjZmYwOTYwMzliYWZhNWU5Y2YwMGJiN2UwYmZjODM1ODJlOTJjIHB5M2sKKzU5NzIxIDczYmMwMDIyNTJiZmQ1ODNiZjZmZTVjMmRkMmUxZDI0ZTIwMzJhN2MgbGVnYWN5LXRydW5rCis1OTcyMiAzNGM5MWRmNjA1MzI5OTkwNjQxOGM5YzVjOWEzZTNmYWQ5NDEyNmUzIGxlZ2FjeS10cnVuaworNTk3MjMgNTdjN2Q0MmY2Y2RlYjE4YTdhZTIzOTZkZDJiNzU2ZGQ1ZDkwMDVkYiBsZWdhY3ktdHJ1bmsKKzU5NzI0IDIwMzdmNGNhYmIwN2NjZGE2M2RlM2YyMWU4MWM2MzUxZDU2ZmJhOGIgcmVsZWFzZTI1LW1haW50Cis1OTcyNSAzZmNhZjZjYzMwNmQxZTRlNmFhOWZjZjIwZmFlNzYwZjE3ZWNhNGUzIGxlZ2FjeS10cnVuaworNTk3MjYgMmUyZmEyOTE5MTRjNTNjZDRkNGRiYTZiZTIxODZhMDJjOWVmOTFjZiBsZWdhY3ktdHJ1bmsKKzU5NzI3IGRjYzdjODY1Yzc3YjEwMTdkYTkyMDM4ZjEzYTIyNGVmMGRmNzc1NGUgbGVnYWN5LXRydW5rCis1OTcyOCA3YmI5MWIzYmEwZWNjMjg1MzUwMmYwZTJlODQwNGJjMTVjOGM4OWUyIGxlZ2FjeS10cnVuaworNTk3MjkgNWEwY2JlMzZhNjAzNzc5NWUzYTBkNWYxZjJiZDBhYTlkZmVmYzg0YyBweTNrCis1OTczMCAzM2EwYWU3MDY3MGY0MzY5MjM0ZDg4OTg1NTMwZTY5MDBkMjRlZWI2IGxlZ2FjeS10cnVuaworNTk3MzEgOTRlZWFlZWIzY2U5M2RmOGQyYjNhNzExZTc2MDc2NWQyNmYzZDA4OCBsZWdhY3ktdHJ1bmsKKzU5NzM2IGU0OGI0NjlkMWQ4NjZiNzdlNWI2N2JiMjAwYWM0ZGYyM2QzYmVhNmEgbGVnYWN5LXRydW5rCis1OTczNyA3Nzc0MjlhMjMwMjY2N2YxZDU2MzNjZDg0NDJlOGQyZDlmM2M4NGFlIHB5M2sKKzU5NzM4IGMwYzIzNjlmOTQyNjdlYTE1MGNlMmUyZTJmZWM2MzdlNzRmMThkOGEgbGVnYWN5LXRydW5rCis1OTczOSA5Y2FmOGE3YjExYTZiODljMTc5M2JjNmY0ZDRjMDhjYjg1YzlkNGQ0IGxlZ2FjeS10cnVuaworNTk3NDAgYmJjOWU4YzA4Y2Q1ZWVlMzdjMDM1ZTkxMWUxMDRjMTY3YzQwNTZhYyBweTNrCis1OTc0MSBmYzgxODZiNTAxNDViOWQyYjdmMmQwMTRkNWU5ZDk4NWUwODZjNDU1IHB5M2sKKzU5NzQyIDBjMGFlYmM2NjU2Zjk0ZDI1MzM0NGNlNGExMmEwMzNmMzg5NzZiMzcgbGVnYWN5LXRydW5rCis1OTc0MyAzYzZmNzU0M2JkZDZiNGFhZDk3ODg5MDYzY2Y0Y2I3ZDk1NjE4YjUxIGxlZ2FjeS10cnVuaworNTk3NDQgMDFkNWI4ZTdkMTIxMjA1ZWM3YjIxYThhZjBkNzNhNDhlY2JjNDg4YyBsZWdhY3ktdHJ1bmsKKzU5NzQ2IDE0MjZjZDEzNjczOWZiZGVlMjdmZDA2NzRlY2I5NDY4M2UxNGIzNjYgcHkzaworNTk3NDcgMzFlMjk0ZDA4Y2UxYzlkZjNmMjg2YzUyMzI4Njc5ZmMxNWIxNmFiZiBweTNrCis1OTc0OCBiZDg1ODc5ZWZmYTY5ZGFjZGM5OTUxYzg3NWVlZjQ0NjVmMjQ3NjNhIHB5M2sKKzU5NzQ5IGQwMGRlMGNmMDRlMjc0ZjAyM2EyZDI0MWVkYWUzODU5OGU2OWFiNjYgbGVnYWN5LXRydW5rCis1OTc1MCAwZjFjOGJhYjg5OGRiZDliY2QzOWM0NjYzMjIxZGNkMzdiODUwNjdiIGxlZ2FjeS10cnVuaworNTk3NTEgOWQ4Yjk1M2Q0YWY1MmVjYWJkMDZkNDA0ZWM2ZmIyOWY0MGQ0ZDRjNyBweTNrCis1OTc1MiBlZGJhMGExYjdlYmUxMDhjNmI3MjE1MmJkNDg5Nzk1NTU0ZDBlNmVkIGxlZ2FjeS10cnVuaworNTk3NTMgMjQ0YmIzMWMwMzZiZDU0ZDczMWVlYmI4MDAyODFjN2UyODc3YTAzOCBsZWdhY3ktdHJ1bmsKKzU5NzU0IDExNWRhMjI2OGNkOTU4MTEyM2I0OTk3YTgwN2QwNzgyZDRkZGU3YzUgbGVnYWN5LXRydW5rCis1OTc1NSA5OGNjMWNjNTc1NzNjYzA2YzJhN2U0ZDc5YTUwYmMzODgwOGNlYjA2IHB5M2sKKzU5NzU2IDA4MTM4YmMzYzA2MGVjNmYzNDZiMjkxNmZjNDE4OWU3Mjk4ZjdkYTYgcHkzaworNTk3NTcgNGU3NGMyNzY3OGJhMTVjZTk4NjRkZTk5MmYzMDdkNWIyNjc3ODdkMSBsZWdhY3ktdHJ1bmsKKzU5NzU4IDY1ZmU2ZTU2ZDRmOGQ1YzlhMjkwMmJlZTlkYjg1M2RjZTg2NGI0M2IgbGVnYWN5LXRydW5rCis1OTc1OSBhZmIxMzM3OTA2YWU4YTUyZThlYmRhYjc0YjVjZjFjNjRkY2Y2Njg4IGxlZ2FjeS10cnVuaworNTk3NjAgMjgxYzk0NzkxNDJhM2U0YWJhMDZiMjYwMGU4NGI3YmIzNGY3NzY5MiByZWxlYXNlMjUtbWFpbnQKKzU5NzYxIDhiZjZhOWEzYTYzMjliZTM5Y2QwMGJlODA2NTA0ODlkZDg1ZjE4YjAgcHkzaworNTk3NjIgNTZiYTc5MWQ4YjM1OTIzNTQ3YmYyY2FhMzdjMzlkOGFiNDk3ZjdmMSBweTNrCis1OTc2MyAyODQ4ZmZiOWQxN2E2YzNjOWIzOTI2NmFhNzA4MjI2ZjlkYTViNzBmIHB5M2sKKzU5NzY0IDMyNjgxYWU2YzVjMTQ4ODU1ZmI3NDZkNDJjMTExYzRiODE1Yjg2NDMgcmVsZWFzZTI1LW1haW50Cis1OTc2NSA3YTIwNjViNWJlNzViMzIzNWY1OTI4ODViZDFhYWU3MGVlNmZhYTBhIGxlZ2FjeS10cnVuaworNTk3NjYgYmVkZDhiZmQzZmQyNjgwNDc5MDQ0NjU0ZWVlZTJmODE5MzBkNTA2MiBsZWdhY3ktdHJ1bmsKKzU5NzY3IGZhYjJhYTZiODA3MzYzMzJkY2YxMzAxODkwYWE4NDdjNDU2MTZlMDUgbGVnYWN5LXRydW5rCis1OTc2OCBlNWJmNjY5NmUyZTM2YTc0Y2M3MWEwYzg0ZDQxMTBlZTg3MDgzNzA5IGxlZ2FjeS10cnVuaworNTk3NjkgM2JjMDQwNWRlNDkxNWQ0ODdjNDVkZWNhM2Y1YmJkZjlmNWJjYmIwMSBsZWdhY3ktdHJ1bmsKKzU5NzcwIDQzMjFhNWFiZDZjZTJlMmQ3ZDY2MmQxNWZmZmYwZjNhNGJhZGEwNTcgbGVnYWN5LXRydW5rCis1OTc3MSAxNTVmNWMzNmZmOTI5NTYxZmYyYjU0NzkyMmQ1YjVkYWZhZjhhYjYwIGxlZ2FjeS10cnVuaworNTk3NzIgNzlhMzQyNDhhMjYyZmJhOWE0MjdlYWU4NjRiZjJmMzZiYzU4MzZhNSBsZWdhY3ktdHJ1bmsKKzU5NzczIDY2MTk3ZjhkMGZkZjBmODcyNzAzMDYzMTVjOWI2YjRjNzM4YzZkNDAgbGVnYWN5LXRydW5rCis1OTc3NCA1MDdlNzZkN2ZjZGQ1YzViZjY4NWJhNWI0NWJiNWNjZjlkYTgzYzAyIGxlZ2FjeS10cnVuaworNTk3NzUgNjQ3OTRiYTllMjVhZDVjMWM5MmVkMzE0YWRjZjY4NWJjN2E4ZWUzMiBsZWdhY3ktdHJ1bmsKKzU5Nzc2IDk5ZjYzNzBjNmNkMDU4NGE3NTIwMjMzYzAxYjBhZTdlNGRkZGNkMGUgbGVnYWN5LXRydW5rCis1OTc3NyBkODk3OWU2NDI5ZTVmZjhhYmNjZDJkMDQ4N2UxNjNiOWU2NTdhMjk3IGxlZ2FjeS10cnVuaworNTk3NzggNmIzYWFlNWM2OWJmMjA0NGUyNTkzZjBjMjJmMjAzMTkwZDU4YTUxYSBsZWdhY3ktdHJ1bmsKKzU5Nzc5IGVkNzU4ZjZhOTdiYjEwY2FjNTM5YzVhYjA5ZDg3ZTc5NGIzMjgyZGQgbGVnYWN5LXRydW5rCis1OTc4MCAwOTAwODNhMjMzZjhlMzY2ZGU4Y2M5ZTZkNmUyZmYyOWYxMTdhOTBhIGxlZ2FjeS10cnVuaworNTk3ODEgYjI0ODg4Y2I5NTUzMzM1ODRjOGM1ODk0MGY3NDA4NjBiYjg5Y2Q1OSBsZWdhY3ktdHJ1bmsKKzU5NzgyIDJhY2M2NTJlNThhMTljNmMzZDYwODE3ODQ1YmJiOTI2ZWVjYWViMjcgbGVnYWN5LXRydW5rCis1OTc4MyA0MjBmZTZkN2Q1ZjQ1ZTVmOWZlZTRhMjRmY2ViZmZlMmE2ZDQyNmRkIHB5M2sKKzU5Nzg0IGFjN2RlYjFjMWQzY2UwM2FlNzEwN2QzZjNkMzRlOGJjMDE1ZmFmYjQgcHkzaworNTk3ODUgOGViOTYzNjNmMWQ1OWMyYjc1ZWM1MTRjZDlmYjU0ZWNlYjlkNjA5NiBsZWdhY3ktdHJ1bmsKKzU5Nzg3IDE4MTFlYjAzYmEwMGM4ZjkzNzFlMDVhY2VlM2Y5MTFkMzJlNDcwZWYgcHkzaworNTk3ODkgZmEyNTBhNTgwOTlmYzRhYWE3OGE1NmVlMWZiZWMyN2FmMDcxNWEyMCBweTNrCis1OTc5MCA3Y2JhY2FhNWY4ODU4ZjQ5NDc1YmQ1MzI0ZGIxODllYWE0NDViYjk0IHB5M2sKKzU5NzkyIDBjNGQyNThhNWIyNWVhMGZkYTU5YzY1NmZkZDJiYzJmMzRjODdjMzggbGVnYWN5LXRydW5rCis1OTc5MyBkMDQ2NWU3ODJiMDE5MTAzYzhhODQ1YmI1NzE5ZjI5ZjMwMDM2MGQwIHB5M2sKKzU5Nzk0IDY3NGM5Yjg5ZDEyNDE0MDFjZTJmYjVjMzBjN2UzODA0YmNjZDI4ZGIgcHkzaworNTk3OTUgYjhlMzRiY2RiYTQ1NDgzNzU0YzRjZWEzMDRlODQ0MGI4MmU4MWY3NCBweTNrCis1OTc5NiAxM2I3Y2EwNGJkNzBlMTQ2NDJlZDZkOTdiMTBlODVmNTRjMzk5YjBlIGxlZ2FjeS10cnVuaworNTk3OTcgOTc0ZjAzMjBkNmIzY2Q5MzIxZDJhOTJiNmM2MDRjOGMwNTIyNmI1NCBsZWdhY3ktdHJ1bmsKKzU5ODAzIDQyNjQ2YTg3Mjc3MmVmYWRhMDYyMDkyY2MzY2ZmMTQxNDVjM2EwMmUgbGVnYWN5LXRydW5rCis1OTgwNiAwNWJjYjc5MGVmNjMyNGJlOGI3ZDZmMmEwMDY0MmQ2YjVjYzNjMGQwIHB5M2sKKzU5ODA3IGE4Njk3YWZiZjE3ZWY1YzcyYzA1ZTM5Y2RmNWNlMjRmYmM0YTBiOWQgbGVnYWN5LXRydW5rCis1OTgwOCA0NTUzNmQ1NTg3ZDQ3NzAzMjUwMWExYzUzNjQ1OGY5YjRlNGIzZWQyIGxlZ2FjeS10cnVuaworNTk4MDkgZjljOTUwZThmMmUwYWU2ZmFiMjkzN2VjYzNkNzIyYWJkYWExZWNmNiBsZWdhY3ktdHJ1bmsKKzU5ODEwIGI2ZWE1Mjk5M2NhZTUwYWU2NTYwNDNmZGU3MDUwMWRmNTY5MTA1YzQgbGVnYWN5LXRydW5rCis1OTgxMSBmMjcwNzRkMTQ3ZjRlMTk4YTdiMzA4NzkyYjFiNWJjOGQ0NTRiZDY4IGxlZ2FjeS10cnVuaworNTk4MTIgNmM0YjBjYzlmNmM5MDBiYjI1YjQ5MjFlMjFmYjc5NWJkNmY4MTIyNSBweTNrCis1OTgxMyA3ZWEyMzE1NzhiMDJkZmEwM2M3ODYzNmU4M2U2MGUyYThmNGY1ZWRjIGxlZ2FjeS10cnVuaworNTk4MTQgM2E5NDQ5MzVjNjEwZGE0ZmNjMDJiNGIxOTgyOWNmNTU3YzA4NzY4OCBweTNrCis1OTgxNSA4NjRlNjc5YTBlODUwODA0YmJmMjNlYmQzNGVmMDY4Yjk2NmMxNzBkIGxlZ2FjeS10cnVuaworNTk4MTYgNGQyM2Y1YTdkNGM5NjA5YzMwMzRmZWMzOTRjMDM4YTFjYjc0MGU3ZSBweTNrCis1OTgxNyAxOWNlOWVmMzRiNjIzM2NiMzgzNTU4Y2JiNzdiMjRiYzY5Y2QyNmU0IHB5M2sKKzU5ODE4IGI5ODk3N2YwYWJhMWM2NTdjNDAwZWIxZGFhZDU1OTIyMmNiOGVmMmMgbGVnYWN5LXRydW5rCis1OTgxOSBhYzUxY2ZlNWM1YzZiOTgyODRjMzY3NDQ0MTg2ZjdjY2FiNTU3MzkwIGxlZ2FjeS10cnVuaworNTk4MjAgZjNjMWY5YzhjZTlmMTA2ZWNjYmYxZjQzNzZjMmIwMDIwNDVhNmE2MSBsZWdhY3ktdHJ1bmsKKzU5ODIxIDc2ZmNlYjU4YmNmNTFkMWU3OTkzMjY0ZTdiMWM1YWZkNDZmZjFiMDEgbGVnYWN5LXRydW5rCis1OTgyMiAwNmQxNWRhMWYxMjU4YzQ0NTQ1NDQwMzAyYmVmYmY4YzE1YWUxYTc3IGxlZ2FjeS10cnVuaworNTk4MjMgMmNkYjY2MTY3NWY5YzAzZDlhOTYyZDY4YTcxMjFlM2NjZDc3ZjQ0OSByZWxlYXNlMjUtbWFpbnQKKzU5ODI0IDU5OWYyMmEzNDlhMjRmZTNhOTkwZWExY2I1Mzg3NTcyMDBjMTVkY2IgbGVnYWN5LXRydW5rCis1OTgyNSBjZGMyODViZDBlZmI0NGU3YTQ5MDZjMWRiM2UxMTFhODkyMjIxOGRlIHB5M2sKKzU5ODI2IDMwNWQ3ZDJjZTA0NzAxYjQxY2UwOTRlNTA4M2UwMDZlNzVkYTUyMDYgcHkzaworNTk4MjcgMTMyZDkwODQ3MWM4MzhiOTEwNTVjZjMwMDQxNDE0ZjUwMjZiMzM1YiBsZWdhY3ktdHJ1bmsKKzU5ODI4IDBhYWUxNDk1MGUwYmMyYmQzN2YwZjQ2MWEyNDc4ZGM1NzE2ZDU5MGQgcHkzaworNTk4MjkgM2IzYWI5MjViMjYxZTczNGI2NGUzZDFmMDU4ODE0MzY5NjNjZTk0OSBweTNrCis1OTgzMCBkYjVlMDFjMzNlYjc2MzNjMDEzYTUxNGQyNzlhZjMyNDc5ODg5YjU3IGxlZ2FjeS10cnVuaworNTk4MzEgZmQ1MzJhOWIyODEwNjM4MzM5MTg4NjRjZWFkNzk1Y2ZlNjRjNmU1MiBsZWdhY3ktdHJ1bmsKKzU5ODMyIDZiNzE1ZWE4MDQzNzc0NjhmZDk2ZTE1NGY4YTM4YjViYTM0YzdhNDkgcHkzaworNTk4MzMgY2YzNmUwMWU4M2YyMGU3NDBlOTEzNWI5YjM2YmY0OGQwMGRhMGNhZiBsZWdhY3ktdHJ1bmsKKzU5ODM0IGFkZGMxODU5NmExNTc1MzVlMGFlZGE4MDM1MmFmNTIxOTUyM2U2YjcgbGVnYWN5LXRydW5rCis1OTgzNSBjYTE0MTVjNjEwNWY3ZmQwZGU3YmUxY2ZkZjBmNTczM2NkNmViMGY3IGxlZ2FjeS10cnVuaworNTk4MzYgMTllMWZhNzhkMzMwNTQ5ZjQyYWNkMjRmMjQyY2E0NWQ1NTFkYzdkNyBsZWdhY3ktdHJ1bmsKKzU5ODM3IDVlMDI0ZTkxZWUwNjdkNzUxYTk0MjkwODJjYmU5YTZmMTM2N2YwZDMgbGVnYWN5LXRydW5rCis1OTgzOCBlOTc1NjI2NmUwYjkzODE0MDM4NDg0MTliMTcwZWUyMjk2ZjJhYzM0IGxlZ2FjeS10cnVuaworNTk4MzkgNmQ1MjE2MDNlMDdkZTdmYjc4OGVkYTVlOGY4Yzk1NDI5MmQ5NmM0ZCBsZWdhY3ktdHJ1bmsKKzU5ODQwIGM3NWQzNjBhYjg3YjM4NzY2M2ExODMyYzQyYTA1NGFiN2FjM2JjYmMgbGVnYWN5LXRydW5rCis1OTg0MSA3M2UxYmYxNzlhMDFhZDc4MjRmZjVhYTJiMjljZTA2OGE0NTdjZDY3IHB5M2sKKzU5ODQyIDIzNmU3NTI2YWJlYWY1OGYwNWRmZTk3ZWQ1Y2NlMmYyZTlhYWE4OTAgbGVnYWN5LXRydW5rCis1OTg0NCA0MmNmNTljY2NlNjYyYjc1MDBmNzc0YTk0YTYxZmRiZTNkNTdjNWVmIGxlZ2FjeS10cnVuaworNTk4NDUgYTI5MzhjNTUyMDBjZTRhNmRjMWNkMGQ1MTBhODljZWYyNDFkZTNlYiBweTNrCis1OTg0NiBmYjVhNjMzMGY3MWIzOThmY2ViMGU0MDUyMDJhODg4MDViYTFjYzE0IHB5M2sKKzU5ODQ3IGNjODY4ZmNmNTA1YWViNTllNDEzYzI5ODE5MWEzM2NhODY5YWQ5OWEgbGVnYWN5LXRydW5rCis1OTg0OCBhNWI3ZjJkODc2MWQ1YTFkMmFiMjZlMjFmMzYwN2EzYWVmNjkyYTc5IHJlbGVhc2UyNS1tYWludAorNTk4NDkgNjBiNTQ4MDFiNjQ2MzJlODBkYTQxMTQxNTRhZDljNDA0NzRhMTEyOCBsZWdhY3ktdHJ1bmsKKzU5ODUwIGExZGRlNjgwZTY5NDIwZjdiZDJiODEwZjI5YTc2ODgxZmE3MzVlYmIgbGVnYWN5LXRydW5rCis1OTg1MSBjYjIyZjg3NDhkYTdjZjQ1NmI4NmViMmY3MGY0YmMzMWU5MmI0NThmIGxlZ2FjeS10cnVuaworNTk4NTIgMDU3ZGU0NmVhMTdlMjFhNjBjNGI2OTAyMmUzMTg5NDk4ODIzOTI4MiBsZWdhY3ktdHJ1bmsKKzU5ODUzIDg4ZDc2YjkyMDZlNjY3MzI2YTNjZjgxZGYyOGViYzZmMjVkNTYxMTEgbGVnYWN5LXRydW5rCis1OTg1NCBkMWExYmE1MDI1NzllOWUyMjI1NWE3OGQ3YjZmOGUzMGM4MzY3MjQzIGxlZ2FjeS10cnVuaworNTk4NTUgNzZjNzY1YTc0ZmI4Y2I0Mzg1ZjkwMjcwNWZhZmI2NjRkZTNlZmNhYiByZWxlYXNlMjUtbWFpbnQKKzU5ODU2IDVmYjliMmY2YmFjYjdjNmJlODg5YjAwMDRmOWM2ZDdhMTFjY2FiZTEgbGVnYWN5LXRydW5rCis1OTg1NyAwODhiNTA3N2M5MDBjOGQ0ODczZGRiNWU5Nzk5ODg3Mjc2ZGQ2MDI2IGxlZ2FjeS10cnVuaworNTk4NTggZjQ1ZWFlZGI5MjBlMjA1NWVmMzdlMTJmYjFkM2JlZDRlYTQwNjJjMCBsZWdhY3ktdHJ1bmsKKzU5ODU5IDlhNjBiZDhmMDBkNmFmYTkwNDJmYzI4MjFmZTBhMjhiNjEzZDJjMDEgcmVsZWFzZTI1LW1haW50Cis1OTg2MCA3NmNhYjg2Nzg5MTZlNGQ0YTgwYjAyYWUzZDE4ZjE0OGY4ZDRhNTkzIGxlZ2FjeS10cnVuaworNTk4NjIgNDdlNzhjMmQxNmRlMGQ0MzAwZTZhN2MyNzIyZjUzNmU4OWVhNTMyNiBsZWdhY3ktdHJ1bmsKKzU5ODYzIGI3ZDFiNjI3YTdkNTFlNGQyYjIyZTAwOTE3MGVkYTUzOWQ5MjZiOWQgcmVsZWFzZTI1LW1haW50Cis1OTg2NCA5NGFiNTcyZWQ2ZGRmMzYwODAwNjAyNzlkOWI3MWYwZmQwM2UyN2U3IHB5M2sKKzU5ODY1IDMzNDQwOTE5OTYxMjQzMjE0Mzk2ZmQyOTUyNzk2YzhjMDlmNjkzNWUgcmVsZWFzZTI1LW1haW50Cis1OTg2NiBiZjdiYmQ4ZGIxYTgyZDc4MjU5ZmY5MjU0YzBmNGNiYTIzMzIyODhiIGxlZ2FjeS10cnVuaworNTk4NjcgNWY2NDBmOGY5MmY0OGQ0ZGJkMmI4OTMzMDI5MjFlZGQwZDE5M2M5NiBsZWdhY3ktdHJ1bmsKKzU5ODY4IDFkNzRkZDgyMjhkYjBjYzk1YmM3MDAyM2VjM2U5MmE3Y2JjZTlkM2MgbGVnYWN5LXRydW5rCis1OTg2OSAxMGViZDAyN2MyNDM5NDI1ZGMxMjViMzQyZjFhYzFjMTU0MTk2ZDNhIGxlZ2FjeS10cnVuaworNTk4NzAgNTA4NjllNzQ3ZTc2ZTllNDBhOTY4Mzk1MDRmN2RiNWI4YzYxNzE2OCBsZWdhY3ktdHJ1bmsKKzU5ODcxIDlmNmFhNDk4NDk4ZDI4NWMxYTFhY2RkNzdkZmU2OTQxYTI1NTUwMzUgcmVsZWFzZTI1LW1haW50Cis1OTg3MyBhNjBmOTJiYTBkMWVkNTYzMTU1NWIyYzI5YWEwNTcwN2YzYjEzMDk5IGxlZ2FjeS10cnVuaworNTk4NzQgNjc3NmQ2ZWYyMDFhMTAzNzU4YjRiZmMxMjdlOTM5ZDU2Y2ZiOWNlNyByZWxlYXNlMjUtbWFpbnQKKzU5ODc2IGRjOWQ5NWI3MTdjNTdlM2U2MWY0ZGIyOWVkZjkwZDk2NTdlZTU4ZWUgbGVnYWN5LXRydW5rCis1OTg3OSA5YTk3OTA4YjRjOTdlZjkxYjFkMmRiNTEyMzY0ZTE3MWY1MmQ3OWJkIGxlZ2FjeS10cnVuaworNTk4ODAgYzliNmJlNDgxNjU3ZGQ5NjI4MWNkMDI2ODdhNDUxNjMyNzA2YWViNyBsZWdhY3ktdHJ1bmsKKzU5ODgzIGEyOWFkYzNiMGYyNjZiNjM2Yzk2MmU0MjljMTQwYTBiYmIzYzE4OTcgcHkzaworNTk4ODQgZmFlOWNlZGI5MTQ2YmRmMTYyYmI4ODdiYzM4MzlkNzFmNzU1YTE0NyBweTNrLWltcG9ydGhvb2sKKzU5ODg1IGZiMjg3NDE1YWNhMGU2ZmE1ZDJhMzI5ZTI4YTM2MDRjMmYwMTM0MzMgcHkzay1pbXBvcnRob29rCis1OTg4NiBhOTNlMGU4MGMxOGEwMTcxMDgwMTQ4N2IzMWRkZTljMGM5YTU5MzQ0IHB5M2staW1wb3J0aG9vaworNTk4ODcgNzZhNDYxZGUxNTQ0NDQxMGZlMTkwNWQ2YWU3YTdhNzMxMmI3MmQxYiBsZWdhY3ktdHJ1bmsKKzU5ODg4IDQyNjc2YTQ4NDBiNWE3MTEwYWNjYzY4MmM3NmVjNDJjNjMxNzg5NzcgbGVnYWN5LXRydW5rCis1OTg4OSBiNDQ2Y2Q2MTM4OGYwNWI1ZmRkNWU2NTdkZDFiYWExZjI3Yjg1ZDAwIHB5M2sKKzU5ODkwIGQ4ZDdhNzhjNjQyM2MxYTQxNjIyYzViNjcwNjliNTZmMDgyMTA1NWUgcHkzay1pbXBvcnRob29rCis1OTg5MSA4OTY5ZDc0ZDBkMjJmMzE5YzdjNDVlNjQyNTlhZDc0Nzc1NjE4NzUxIGxlZ2FjeS10cnVuaworNTk4OTIgYzMxMTM5MTRlNjZlOWUwZDY2OTM5YWMzZTFhN2ZjOGFjZmQyMjQzMSBsZWdhY3ktdHJ1bmsKKzU5ODkzIGFmNmYzNDU2NTdiNGI3OTQxZjMxZmQ0Y2U2MzkzMjQ4ZmFjZTZlNDUgcHkzay1pbXBvcnRob29rCis1OTg5NCAyMDU3OGRiMDc2MjlhMjA0NjZmNTRmNjdiYjgzNDBmOGI4MmJiMjEzIHB5M2staW1wb3J0aG9vaworNTk4OTUgZGJhZmNkODI3OTc5ZTA5N2UwOWZmZWExNzYzNDFmYjZkNTJiOTdkNCBsZWdhY3ktdHJ1bmsKKzU5ODk2IGU3NTNlMzFhMGM4ZjE3OTQzOGExOWZmNzQ2OTBjZWUwNzQwM2ViNDcgbGVnYWN5LXRydW5rCis1OTg5NyBkZjg1NmUwZTFiMmEwODljOTQxZGY0YzJhMzE3MzBkNzU1NTVkODUyIHB5M2staW1wb3J0aG9vaworNTk4OTggNjlmNDk1MDgyNDEyNjcyNzM0ODkxZjY2ZTIyOGE2MjlkZTZlMDU3ZCBsZWdhY3ktdHJ1bmsKKzU5ODk5IDYwMTI2YWEzYjgxNjk3NzBkNzk4NDg1YjJmNzViZmU5ZTFiOGU1ZWQgcHkzaworNTk5MDAgNzg1MWU3NWY1NDM4Y2E0NTk4ZDMwNWM2Yzk5ZmI5NDQwZmRjMGQ3YSBsZWdhY3ktdHJ1bmsKKzU5OTAxIDQwM2NmY2E5ODYzZmQyZTMwOGIwNDVlMmFmMThjMGY2ZDJhZmNhNDggcHkzaworNTk5MDIgNWRlYzRhZGU4ZmE5NTI4NGIwNjBlMGM1NDNmMzA0MzZhMTBkMDA3YiBweTNrLWltcG9ydGhvb2sKKzU5OTAzIDgwNThlMTY4MjBlZjg2MGU0YzkwYzQ3ZTA3MGFiM2JmNzZmODkwMzggbGVnYWN5LXRydW5rCis1OTkwNCAzNTRiZTBkYWZlNTRiMjIyYWYyNWE5M2RjOTg1ZWZiYzI4N2M5YjU3IGxlZ2FjeS10cnVuaworNTk5MDUgM2NkOWI4NzdlYWUwOWEzNWI5Y2NkNzk1ZGU3NWQ4Mzk3MjlhNDg3ZiBsZWdhY3ktdHJ1bmsKKzU5OTA2IDc4NTIzN2ZhNWY0MDE0NDRjMzFkNjE3ZGRjMDZlMDEwYTM5ZThmYTYgbGVnYWN5LXRydW5rCis1OTkwNyA2YjBiNWVkZmIxYjc4NWMxNjkxYzdjZjY5ZDU5ODI3MTFjNDk5ZGVjIGxlZ2FjeS10cnVuaworNTk5MDggMDZmOWY1MWFiOGMwM2RkY2JiMWQyOWE2OTNkMjYwYzgxNDM2YTIwNCBweTNrCis1OTkwOSBiZTA0ZWU0YzRmZDczNDU4NjljOTgwM2Q1ZDEwYjgxZGZhMTkyYmEyIGxlZ2FjeS10cnVuaworNTk5MTAgMmFkM2UzNWM1ODI1YzM3ZjI4Yjc4ODJiYWJkYTMzMzc1MzVjODE3MSBsZWdhY3ktdHJ1bmsKKzU5OTExIGFmM2EwY2ExYWI0YTAyYmUyYTU5MzE4NmE0MzA0NjNkY2JmMzdiOTEgbGVnYWN5LXRydW5rCis1OTkxMiA2MmY2ZDc4MGExMWRlMDM3MzQ2Mzc1YWY4ZjVmY2I5NjYyZDhiYWNlIGxlZ2FjeS10cnVuaworNTk5MTMgM2NjM2E1NWQxMjMzNDUxM2ZhNzM2YTUwNDU3M2U3YjYyMThhZWRhYSBsZWdhY3ktdHJ1bmsKKzU5OTE0IDk0MjYxZjMwMjdhNTkzZGVmNDRhMzU4NmQxMzBiOGQ2MTQ4ZGI5ZmUgcHkzaworNTk5MTkgNTlhODJjZGZhMTM3ZTg4YjhjYzM2ZDY1NTAzNWNhN2Y0ZTliNzA5MyBsZWdhY3ktdHJ1bmsKKzU5OTIwIGFhZGNkYTdhNGJmN2FmNGVlM2EwOWI1MDEyZTRmNGEyZDU1Njg5NjEgbGVnYWN5LXRydW5rCis1OTkyMSBkOGU0MzQyYzE0NWU2YjVhODhhMTQ5MWM1NGYxZjFmMTlkYzY5NTJhIHB5M2sKKzU5OTIyIGU3YjgyMTAxYjk3MGY4ZWM1YjEwZTU1ZTlkOWQ5MTgyZDQyZTMyOWIgcHkzay1pbXBvcnRob29rCis1OTkyMyA3OTU3OWZhOGQ3NTJmMmJmYTk0NDM0ODRmNGE2NzYwMWI3N2VhNjUwIGxlZ2FjeS10cnVuaworNTk5MjQgZjBiOTMzZjEyOTgyNjdkOGU2Y2EzNTUxMzYyODE3OWM3MGJlYjRlNyBsZWdhY3ktdHJ1bmsKKzU5OTI1IGEyMjAyMTFmODMzMTMxNjAyOTFiZGY1ZmE3NjY1NmUyMzBmMzkwNTIgbGVnYWN5LXRydW5rCis1OTkyNiBkNTgyNGZkZDlhMTVmMGZkNzY2OWNjNzhjYjFjMmNkMTE5YTViZTVhIHJlbGVhc2UyNS1tYWludAorNTk5MjcgNzc2YjRlMDU5ZjgzNmExZmMxMjQxY2FkNzNiZGRlNmIxYjgzNmZjNSBsZWdhY3ktdHJ1bmsKKzU5OTI4IDNhZjNmZDM4ODdlZTIzZTQ5NWMyMjI1NDBmYjExMGVjYmQ4YWJjYjkgbGVnYWN5LXRydW5rCis1OTkyOSA3Yjc5ODU0OGE0YWRlNGQwMjZmNWU5ZDhkOWM4YjI2MDNiYzIzOWY2IGxlZ2FjeS10cnVuaworNTk5MzAgN2RiYzNmNDI3OGViZDM0ZmI3MWYwNDgwZTI2N2M5YThmMDg3ZGM4NSBsZWdhY3ktdHJ1bmsKKzU5OTMxIDI3M2QzN2JmMjNkM2JlMmQzMmFjMjg4Y2E5OGIyZWNkMGI2OTMyNjEgbGVnYWN5LXRydW5rCis1OTkzMiBhNTRjYzQ3NzJlNzM3MzgzNWI5NmNlNjg2YzI4OWZjYWI0MDJkOGEwIGxlZ2FjeS10cnVuaworNTk5MzMgNWE3MWRjYzcxZWZmNzYzOTRkMzU5OTkyNzcyYTBkOWEwZDkyYTc5NCBweTNrCis1OTkzNCA1MzUxMTA1ZmY4MDhhMzE3MGE2M2M2ZWY3ZTdjOGQ4MDk1YWJiY2UzIHB5M2sKKzU5OTM1IDRjYThhY2M5YmVkNzE1NDg5MjdlYTgyNzVmZTljYTAwYjRlZGVhNTggbGVnYWN5LXRydW5rCis1OTkzNiAzZjY1YmNjODk2NmYyOWQ4OTA4ZTBlY2FlMTU2ZWU5ZGMyNTg4YjIxIGxlZ2FjeS10cnVuaworNTk5MzcgYjY3MmMwMTVjMmRiODRmZjQ2Nzk2MzEzNjcwNTI4ZDMwN2QwNGU2OCBsZWdhY3ktdHJ1bmsKKzU5OTM4IDk0NjhlNjA2MzYxNzM0ZTE1Y2NmYTBhYzBjZTk1OGU0YjliOTM1NGEgbGVnYWN5LXRydW5rCis1OTkzOSBjNzM3NjhkOTc3YTlmOTJiYjljZGI5MDQ3OGQ1NzFjYWQxOTkwZDJiIGxlZ2FjeS10cnVuaworNTk5NDAgODk0ZDJhZDQ1MDI2OWU3ZTA1ZDg5OTg3ZjNkZDY3ZTE4MDhkYTA5NyBsZWdhY3ktdHJ1bmsKKzU5OTQxIGYyZDgyMGI1YWUyYWU2NDM3MDYwYmYzODQwOTI2MDFhOTU5NGZjZjEgcHkzay1pbXBvcnRob29rCis1OTk0MiBjMjU3NjBjMjEzOTdhMWU0MjM5MGUzMzY0YWVlYzljYWFiNWE1NWVlIHB5M2sKKzU5OTQzIDQyOTNhMDZhZmQ3MjdmNzUzNjAxNWY3ZGYzZDJhMWMyNzJlYzliOTAgbGVnYWN5LXRydW5rCis1OTk0NCAzODdkNDhjM2EwYjNlN2MyNzQxODcxYjE5YTExYjdiMjdjNmZhOGEzIGxlZ2FjeS10cnVuaworNTk5NDUgOTE5MjhkOTllYmIwOTI3MDdiNDYyZDZjZThhNTQ5YWY4MWI2NTNhMSBweTNrCis1OTk0NiA0MjZmZWY4YmFkZTJkZDdhODZjOGE2OGQwMGI0MDk1MTY2OGFjN2I4IGxlZ2FjeS10cnVuaworNTk5NDcgYjQwOTk0MWM3YTUxZTEwMDlkYjE0MThjMTAyMzM1ODI3M2QzZGJjZSBsZWdhY3ktdHJ1bmsKKzU5OTQ4IDdlNDFlMWM0NmI1N2IwZWE2YTI4ZWYyYWM5NmVjYzA5YWUwYzA3MjUgbGVnYWN5LXRydW5rCis1OTk0OSA5YjZkMzQ4Y2VjODdlNGJhNGMzMGUzYTdkOGZkNzNkNDE2MjI4YzNjIGxlZ2FjeS10cnVuaworNTk5NTAgZDY2ZTU4MzdhYTU3YzMyMmUxZGZlNjAxMzA1YzFmNWU5NDZlNmE0ZCBsZWdhY3ktdHJ1bmsKKzU5OTUxIDMzZjY3MDkwNzVlODNjOGE3ZTVjMmU2M2EwZjAxMmIyOGJkNGZmZTggbGVnYWN5LXRydW5rCis1OTk1MiAzMjJjMjM4YTY0ZTUyNzM4NWEzNTk2N2Y1ZmNkYzdlOTg4M2IyZDM3IGxlZ2FjeS10cnVuaworNTk5NTMgNjJlYWNlNjc4MGY2NThjZGU1MWE2NWExZTVhMGNlOWI1OGQyY2Q3NyBsZWdhY3ktdHJ1bmsKKzU5OTU0IDExNTQxNThhMTk5Zjc3OTRmMjU4NTVkOWVmNzIxYzQ3NzFjNjViZTUgcHkzaworNTk5NTggNjI3ZjJlMjI3M2I5NGZlOThiYjkxZDczZTE5OWE3NGRkOTMwYTE2NyBweTNrCis1OTk1OSAwMDUwMjFiZjVhY2VjNzNjMzIzZWRjNDdkYTg5OWUzNjYzMWJlMDY1IGxlZ2FjeS10cnVuaworNTk5NjAgODI3ZjA0NTE3MzRmZDk2NjQ3N2FmM2JiY2Q1ZWVmNTVhN2E3NzU0ZSByZWxlYXNlMjUtbWFpbnQKKzU5OTYxIDVkZmRlZDlhZDhhMGNjNmRmZWJhNzY4NTNjYTllM2NkOWQ3NzQ4MWUgbGVnYWN5LXRydW5rCis1OTk2MiA2YWYxOTRjNDk0Y2MyZmRmM2Y3MjM0MmMwNDllNWRjNTc3OWFhY2Y5IGxlZ2FjeS10cnVuaworNTk5NjMgNzc0YTk1OTcyMjhlMGFkYjdmOGUxYjlhNWI2OTNiN2Q2NDllNjVhNSBsZWdhY3ktdHJ1bmsKKzU5OTY0IGNhYjg0MTI5ZGNjYjU0NTY0MDYzZjE2Mzk2MTg1NjVmZjM4N2U4YzAgbGVnYWN5LXRydW5rCis1OTk2NSBmMDM0ZWI1ZDhjZGY0OWFjNTExMzkzZmM5Zjk2YzZkNmE0YzdiYzQ2IHB5M2sKKzU5OTY2IDM1N2IzNjU1NjBmNGI3OTIzOGU5MGY4NDkzZTQ0ZWJjOWQ3OWZlYzYgcHkzaworNTk5NjcgYTAwZDkwMDA0YTI1MTk2YWRhNmNmY2EyMDc3NjEyZTdkZDg0Y2ZjMyBsZWdhY3ktdHJ1bmsKKzU5OTY4IGU1MTFjY2YyZmZiZTY3YTEyZTIxNDIzOTBhNjgzNmNkNTc2YjJlMDUgbGVnYWN5LXRydW5rCis1OTk2OSBkMDIwOGQ2NWRjMjJjNTAxMDhhNjczOWU4YTM1YTk3OTM5OWVhZTViIGxlZ2FjeS10cnVuaworNTk5NzAgODY4OWY0NmQyNWQ2YWY1NWM4Y2JlNGQ1ZjE3NWRmOGMxNWZmNzljNCBsZWdhY3ktdHJ1bmsKKzU5OTcxIDE0ODU0YzdjNmEyNDg3MGFkYjU4OGQyYTYxNWE3NTU3MmIzZmZhNjkgbGVnYWN5LXRydW5rCis1OTk3MiA1YzdiN2ZiZWE2ODFiMTVkODRlNDMxMjk5ODBmODNjZWI1OTk4ODRlIGxlZ2FjeS10cnVuaworNTk5NzMgMGJiNmNmNzdjODVhZjg1MzRkMGZlZWVjYmE0NDRhZWFmMTkxYTMxOCBsZWdhY3ktdHJ1bmsKKzU5OTc0IDQ2ZTczMWJiNmE4NWYxY2VkYzc2NDg3NGM5ZmFiMTJkNjRiZTUyZmEgbGVnYWN5LXRydW5rCis1OTk3OCA1OWYyOWIwMTM2ZmI1ZjYxODQ5N2YwOWY4YTQ1MmE1MDY0YjQwYjNhIGxlZ2FjeS10cnVuaworNTk5NzkgYmZhOGQyMjU3ODIzMjIzZGI3YzRhM2RkY2U2NjE0NDQ0MWFlMWY3OCBweTNrCis1OTk4NCAyOGM4MWMyNzM4OWUyNTQzMzlhOTBjMzEwYWI1Nzc0N2FlMzIzMjMxIGxlZ2FjeS10cnVuaworNTk5ODYgNmU1Njc1Y2EyNTU5YzZhNzM3ZWYxYjQ2YjgxMTQ5Zjc3MWE3ZDQ3YSBweTNrCis1OTk4NyBjNzkwNTg3ZjI5OTI1YzE1MTQ1MTA0MGQzOTQzNzJhZTY4N2Q2NjlhIGxlZ2FjeS10cnVuaworNTk5ODggY2I5MDQwNGE0NmFkMThhMTIyYmYxODJhZDI0MTdlOWNmNGZhNWE1MCBsZWdhY3ktdHJ1bmsKKzU5OTg5IGYzMDJjZjk5OTYzM2ViN2M2ZDJiMGUwZjI2ODRmNGRlZmJjOTAwYTUgbGVnYWN5LXRydW5rCis1OTk5MCA2ZjA0OWNhNTVlMDZiMmMxMDhlYzBkOGQwZTg0YmIwYjgyM2RjMzg1IHB5M2sKKzU5OTkxIDk5MmE2MTFiMmUzMTQ2NmMxNzA0YmE3ZWU2YzE5NmJiODRiNGYwMWMgcHkzaworNTk5OTIgMmYxMWY3ZDliZGM4NGUwZDZiYmEyZWZlM2NlNWE0OWZjMGNlOWZhNSBsZWdhY3ktdHJ1bmsKKzU5OTkzIDcxYzc5OWViMjRiMjQ4MGFkZmI3N2Y0M2RkMjc1ZmZhNGUyMWE4ODAgbGVnYWN5LXRydW5rCis1OTk5NCA3ZjJmMjFhYTM2OTA2YTlkZDFlNzg1N2M4OWU3OWU5NDFhODE4YmE4IHB5M2staW1wb3J0aG9vaworNTk5OTUgYjIzYjQ3N2Q3ODk5YTY2OGY2ODQzNDk0YTY3MTM1OTQ1ODkyNDM4MyBweTNrLWltcG9ydGhvb2sKKzU5OTk4IGM0MzgzZDc2NWNhNzE3ODM3NDg0YTNjMmFjNWQzNzFhODAwNjY0OTggbGVnYWN5LXRydW5rCis1OTk5OSBhNGEwMjQzMmU3MzMzZTk5ZWYwOWVjNTdiMzlhMjllYWEwZTc1YjhjIGxlZ2FjeS10cnVuaworNjAwMDAgNDFmMWIzY2IwYmIxMDM1NWIyNDk1ZjkxM2VlYjQ5NmYzOTc0MzE0YyByZWxlYXNlMjUtbWFpbnQKKzYwMDAxIDJmN2YzZjVlNzNkM2M1ZWFhMTQwMmM5MWFmZTBlNGNlMThhYjI3MjQgbGVnYWN5LXRydW5rCis2MDAwMiAzZDcwNDI4OTNjYzUwNDZjZWQ3YTE5NmQ1OGI2ZDIwYTFmNTllOWU3IHJlbGVhc2UyNS1tYWludAorNjAwMDMgY2FmNThjODMxNDk5Y2M3ZDU5NDUzNTkxODk2ZDAzMTBlZDk1ZmQyNyBsZWdhY3ktdHJ1bmsKKzYwMDA0IGEyZjNkNDk5Y2UxMmVmNGNlMjFiNTZiY2IxZTA5YmEzYzU2MjI2OWUgbGVnYWN5LXRydW5rCis2MDAwNiAyN2Q1OTY3NWI5MmM2ZjdhMGQwMDVlYmE4OWNhYTg1ZDVkZTA0YmIwIGxlZ2FjeS10cnVuaworNjAwMDcgZjEyOGU2ZWJmOTBmODFkMGZkMmEzMDU4YmM3ZmEzY2FiNjZiMzBmMyBsZWdhY3ktdHJ1bmsKKzYwMDA4IDJjOWJjNjFkNGY3M2YzNzZlMzU4OTVmZmRkNzBmZDkxMWIzMTA2MzAgbGVnYWN5LXRydW5rCis2MDAwOSBjNzg0ZjIwYzk2N2U4NDRiZWRiYjJmZDM3NDFkMjliY2NhZTkyYThkIGxlZ2FjeS10cnVuaworNjAwMTAgYWE1Y2Y2Mzk0NjQxZGMxZDNhMmJmMGQ2Mzc0ZGI2YWM0ZWU4MDViYyBsZWdhY3ktdHJ1bmsKKzYwMDExIDk5MDAwZWEyMWZmMjc4YWJiODk0OWRhZWM3MGE3MTU3NGVjZGRkNzMgbGVnYWN5LXRydW5rCis2MDAxMiBiNDY5ZTkwMjczZWIwNzJkZjdmMDRkZWVlMzJjNDc5MTU5MjlkM2I1IHB5M2sKKzYwMDEzIGQwZjc5NjNjZjhiMDMzNDhjYmNjNDUzMDg2NzIwNTg2NTQwM2EwODQgbGVnYWN5LXRydW5rCis2MDAxNCAyNmI2MWE1ZGYxMWI2MTJkMzExMTY2Mjc0YTcyYWU2MjQ5ZDMxNTlmIHB5M2sKKzYwMDE1IGNiMGRjZDZlM2IxMTQ3ZjNhY2EzYjJlMjcwNWY2YjFiOTBhODg0NjYgbGVnYWN5LXRydW5rCis2MDAxNiAzYjM4NTZiMzYyMWIyMDg5NWRhZTRmMzRhMzIxMmQ1ODgxNWQ4NGFjIHB5M2staW1wb3J0aG9vaworNjAwMTcgZGY3MWZjZGRiNzVlYWIxN2EwNWZlMjYxZTQwMjMzMDJhMmVkNjg5ZCByZWxlYXNlMjUtbWFpbnQKKzYwMDE4IGEzODAyODUzYzMxNzYyNjZjZjdiMjYwZDAwZDJlNDkwOWMxODJkODUgbGVnYWN5LXRydW5rCis2MDAxOSAxNzBjYjI3MzlhMzkwZTI3ODMyMjk0NDYyNWVmMWI5NWI4Y2VjMjJlIGxlZ2FjeS10cnVuaworNjAwMjAgMDc2NmVmZDJhNmQ2M2U2M2EzYjNkZGI1MzNkZGYyY2FhZTg3YTYwMCBsZWdhY3ktdHJ1bmsKKzYwMDIxIGQ4MTZiYzBjNDBiNjc1OTZlMjUzNWUwNDc0NTZhYjVhMTZiN2M3NzYgbGVnYWN5LXRydW5rCis2MDAyMiA3MTcyNjVlZDIwNDFiMzE5N2MyNWU2MWNmNWIyZTE2MjE4ODI1ZThjIGxlZ2FjeS10cnVuaworNjAwMjMgM2I0YmM0YzcwNGMxNGY2OTBiZjQyYTBhZGRmNjVkZmI4NWNlNzQ2ZiBweTNrCis2MDAyNCAyMjJiOTE4Y2UwOTI0Y2VkNmVlN2RiMTljZDNhNGJlNWYwYWMyZTY2IGxlZ2FjeS10cnVuaworNjAwMjUgMjllNGM4NmQ1MDcxYTZjOGU1YmEyODEyMDFlMTgxYjIyMzU5MDdjOSBsZWdhY3ktdHJ1bmsKKzYwMDI2IDA3NmM4YWJiZDU0Zjc4OTlkODIwNDU5NTU2NTJhMGM5MTZhYmVkZWEgbGVnYWN5LXRydW5rCis2MDAyOCA4YjQ5NTQwM2JhMjM1YmRhOGUzZTgzYmIwYWE3MDczY2E0ODQ3ZWQyIGxlZ2FjeS10cnVuaworNjAwMjkgNDI4ZGQ4NTFiYjhhZTgwZmQzYjEzYjIyNzgzOGI0ZDNmYzI1N2RkMSBsZWdhY3ktdHJ1bmsKKzYwMDMwIGJiMzNiMzJkZTNhMGI5MzcyMTU0MjkzZGJiMTk2YzJhNGUwN2I1NGQgbGVnYWN5LXRydW5rCis2MDAzMSA4NWNmMjIwZjE2ZDg1ZWU0MDQ2NjgxOTc0NjMyMmI4ZWQzNTliZTgzIGxlZ2FjeS10cnVuaworNjAwMzMgYTBkZDA5MmJiNmMzNmU3YzZkM2I1OGI0Njk3OTkzNTQ0NzQwNDU5OSBsZWdhY3ktdHJ1bmsKKzYwMDM0IDRkNjFjODg3NjI0ZDM1YmI2Y2M2MzAyMWI3NmIyOTc1ZTkzYmY2MjggbGVnYWN5LXRydW5rCis2MDAzNSAyNmE4NmMyOWFkNjAwYTY4OGU0YTQ5NGM5YTRhZWVkNDgyODZiNGUzIGxlZ2FjeS10cnVuaworNjAwMzYgODQwZTg3ZTE4MzA2OTQwYjgwYzcwNWIzOTJjMzRkODYzZWY1NWU0ZiBsZWdhY3ktdHJ1bmsKKzYwMDM4IGI0MDAzYjZjNmQxMzdlZjk1NGM0NzMzNmRjY2M1Zjk2ZTNmNTNhNzIgbGVnYWN5LXRydW5rCis2MDA0MSBhM2JmMGUyNGI5MWU2OTRlZjk0YzQ4NTY3ZjA5MWZiMzkwNmJkZTQ3IGxlZ2FjeS10cnVuaworNjAwNDIgNzliYWJiNGNjZWM4NTJmZmZkOTNiOTYxMzE3ODZlN2QzNDEwZWM5YyBsZWdhY3ktdHJ1bmsKKzYwMDQzIGJiZjQ4NDU4MTA0MzdkNjZiNjE2ODdmZTczYjc4NzU0Yzg5YjAyYjUgbGVnYWN5LXRydW5rCis2MDA0NCAxNGQ0MTA0OTc2ZmNjN2Q0MWM4Nzk3YjAxMDZhNzA0NWZkNjg4OGE2IHB5M2sKKzYwMDQ4IDI5NDYwMjA1NjBlNzNmOTU5M2M0MDEwZjRmZDk3NjM2MTI4ODFlYjQgbGVnYWN5LXRydW5rCis2MDA0OSBkOTgzM2QyYmY0Njk1ZmZjNjVhNzgyYTljODllMmM3MzYyYTI3ZmY2IGxlZ2FjeS10cnVuaworNjAwNTAgZGJmMDg1Njc3NmRkN2MzYzJiZjlmNmVkN2U0ZjI1NGRlNjcxNTdkMCBsZWdhY3ktdHJ1bmsKKzYwMDUxIDk3YTdjMTI2ZDA0ZWJmNjY1NTEyYTUwMGEzYmU1OGQ4NjViYTY4M2EgbGVnYWN5LXRydW5rCis2MDA1MiA4ZGE5ZWJmNzMwMjY0N2VjYWI1Mzk0OTE0NTcyM2M3ZjRjMzYyOTk4IGxlZ2FjeS10cnVuaworNjAwNTMgNGE2NzY3M2UzNDgxZGMxMDRlNWU2ODdlNWJmM2IzN2NiY2YwMDc2MiBweTNrCis2MDA1NCA1NWRkYjE2NmYxZDFhYTMyYjQxNDBlZmY2MTgwYzBlY2IwMWRiNGQ5IGxlZ2FjeS10cnVuaworNjAwNTUgM2Y0MGFkM2MxM2RkN2VjMmI0Y2ViMjQ3OTE0ZjQ5NjEyZWJkOWEzZiBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDA1NiA3NjVlNTdjMDAxYjFhMTFlYmJmZTMwZTc2MzgzNzJlYTllOTA4MzkzIHJlbGVhc2UyNS1tYWludAorNjAwNTcgNTgzMDNlZDcyYmExYTdiZjEyNWVmNjYwOTY0MjhkNDM3MGM4ZDZmMyBsZWdhY3ktdHJ1bmsKKzYwMDU4IDEzZjc0Yzg1NDRjYzhhOTIxZGU2YjRmYzYzMTY0MDRhYjNjOTkwMmQgbGVnYWN5LXRydW5rCis2MDA1OSBlYjhlZjk2OWVkNjhhNWY3ODZmYTQyOWFlMzQwNzBmZDNhY2EzMmI2IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMDYwIGQ3YTg3YzdmMTRkOWVlOTc2ZjQ1NmU3Zjk5ZWUxMjVmYzczNTE3YTcgcmVsZWFzZTI1LW1haW50Cis2MDA2MyBhNTA3MmJhMzVmMGEwZjNhZDE1Njk0NTEwOGY0NjcyY2Y4YmZjZTdiIGxlZ2FjeS10cnVuaworNjAwNjQgMjE3OTgzM2M5YzlhNTkwOGYzOWMxMDYyMWRkN2RkMjQzMTNlNDc1MSByZWxlYXNlMjUtbWFpbnQKKzYwMDY3IDBiN2I2MmRkNGRjYmQyODNmNzZmMTEyMzVhMjAxZDAyZjE1ODk1NTUgcHkzaworNjAwNjggYzQ3MDliODFhYmRlYjZjN2MxNmNjYjYwYWFhMTk3ZWM3OTVlZDQ0NCBsZWdhY3ktdHJ1bmsKKzYwMDY5IGZlYmRlM2NhZjI5MTI2YzUzYjJjY2Y1MDQ3NzMxNGFmOWMzY2FmMmEgbGVnYWN5LXRydW5rCis2MDA3MCBmMjc5N2UwNzA5ZTM4Y2UxNGRmM2NiNDQ1NGQ5OTNlZmYzOTcyNDY1IGxlZ2FjeS10cnVuaworNjAwNzEgM2Q3MmY1MjA5ZTY3ZDU0OTgyNTNhMTg2NTRlMmM4NzZiNzA5OTYwNyBsZWdhY3ktdHJ1bmsKKzYwMDcyIGY5Nzc1NDM4MzY5YWI2MTE2MWJhYTQ1NTBiZjNmNjZlZjlkZjY1NTYgcHkzay1jdHlwZXMtcGVwMzExOAorNjAwNzMgY2UzMjZhZmRmMDk4OWZjYjYwZDdkMThkODk1YTVhOWIzNjY1YTlmMCBsZWdhY3ktdHJ1bmsKKzYwMDc0IGNjMGEyOTYxMTk1ZWYzODFhY2FkYjUyNTVhZjgxMTRhYTI5MTllZjkgbGVnYWN5LXRydW5rCis2MDA3NSA3M2I1ZTkzOWUwNTgwZGRiZTgxMDUwMWI4OTJhMGJjOWM1Y2QyNWY4IGxlZ2FjeS10cnVuaworNjAwNzYgNTJlODIxNDE4YTc5OWI1MjRhZDgzNTgxMTU5OWE2NTdiNDQwYmIwMyBsZWdhY3ktdHJ1bmsKKzYwMDc3IDhlZGJlMDI1YWVkNTcxMjhmMTM4NzViZTU1NDU4Y2MxNTc5Y2M3ODcgbGVnYWN5LXRydW5rCis2MDA3OCBjN2NiNTgwMDYwNmUyZjZkZTAzYmI5MmJkZWQ3YWViYTExMmQwNDg4IGxlZ2FjeS10cnVuaworNjAwNzkgYTZmOWEyYmE4OTYyYTQ2Mjk0M2I2YTM0MzVkNDQ2MTFlZjE1Yjc0MyBweTNrCis2MDA4MCBjZGU0MWJkMDhlNWUyNGNkOTM4ZDYyMjc1NThkMDQ3ZjVhMGNiOTllIGxlZ2FjeS10cnVuaworNjAwODEgZTNmZGJjODA5OTk5ODA4OGJkMDdhYmU0ZDAyYjEyYzQ3NjQ0ZmM0ZiBsZWdhY3ktdHJ1bmsKKzYwMDgyIDg1OWJmODVhNTU2YTk4YjgyMGIwMDE2ODJkMzhhZmUwNDk1MGMxYTAgbGVnYWN5LXRydW5rCis2MDA4MyAwZmU5MzZiNzcxMTQyMzUxNGFjZTA3OGM1ZTViZmI0NDY3YjA3ZWNhIGxlZ2FjeS10cnVuaworNjAwODQgYWZhMGVmMzc5MTg2NWQxOGNlYjcxMzhkNjM1MTgxZjFiY2UzMmRiYyBsZWdhY3ktdHJ1bmsKKzYwMDg1IGEyNjViYWE3OTEwMDM0M2JhMTViODVkMDU4NzU0M2UzM2RmMmMzNjYgbGVnYWN5LXRydW5rCis2MDA4NiA4MDM2NjYyMWM1MDIyOTgxYjcyM2E4NjhiYTI0YTVlMzMyNjAyMjVmIGxlZ2FjeS10cnVuaworNjAwODcgOWMwYTkxM2FkY2Q0YjhhOTZlNmI5ZjkxY2U5MjU0MjFhNWU4MjJlZiBsZWdhY3ktdHJ1bmsKKzYwMDg4IGU0ZTZmYzljOTc3NWQ4MjAyNDM4MjliMTk0NjM3MWUxZmJmMTVmOGIgbGVnYWN5LXRydW5rCis2MDA4OSA4YjU1MzIxMTYxMTUyYmIwZmMyZmIwMjg0ZmEyMzdiOWRiNTgzYWFlIGxlZ2FjeS10cnVuaworNjAwOTAgMzYyNWVlZDRmMGNkOWJlOGM4M2I1NjhmZjQ3ZTNhMWExZGZhNDA1OCBweTNrCis2MDA5MSA4NzdiNDY3OWI5ZmU2OWI0MDViZTU4M2VkMDhmNjYxMmRjNDYxOGFhIGxlZ2FjeS10cnVuaworNjAwOTIgNjFhMTFjYzk1NjMyZTg0MTUwNWYyZmFlMTMzNWM2Y2Y4MDhiMTk0NiBsZWdhY3ktdHJ1bmsKKzYwMDkzIDE3MDA5ZDYyMTFiODM2YTY2MDE0NmRmMzcwYjM3ZWJmZjUyY2RmZDggbGVnYWN5LXRydW5rCis2MDA5NCBjYTI2ODNhNjc5NDMxM2EzZmVjMTc1ZDc0MDU4N2M1MzczOWUyMzhjIHB5M2sKKzYwMDk1IDRhN2FmZmY1MmVhNzFmNDg3YTIxZWQxOTY4NWJhYWE5N2NiY2QxZWUgbGVnYWN5LXRydW5rCis2MDA5NiBiMzEwMjAwNmRkN2VjOWZjZWNlMzgyMjhlZjEyN2Q3YzEwZGFhNzM5IHJlbGVhc2UyNS1tYWludAorNjAwOTcgYjUyMGQzM2JlZTA2MTU0Zjk3YzVhZWVmMmUwNzc5NmE3NWRkOThlNiBsZWdhY3ktdHJ1bmsKKzYwMDk4IDRhYzQ4NDI0OWJkMWUxZmRjNjIxMWI2MTZiMWM2Y2Y5MWFmMGFhZjUgcmVsZWFzZTI1LW1haW50Cis2MDA5OSA0ZjM1MTE4ZWVkM2I4ZjIxNjI1YzdmYjUwM2Q2Y2M1ZTc2NDUyYzc3IGxlZ2FjeS10cnVuaworNjAxMDAgODhmOGYxNTJhMGIzMzJjMmQwYjkxNDdkMDIxOTFiYWY4YTVhNDU1NCBweTNrCis2MDEwMSAzYzljY2MzMmRhOWFmZTY0NDk3MGE3N2ZmYjQ4YTNiZGJlMTFiZmQzIGxlZ2FjeS10cnVuaworNjAxMDIgMjEwMzIzZTJhOTI3MjZkNGJjYmU1M2JjNmZiZTE5NzJkN2IxNGQ0NCBsZWdhY3ktdHJ1bmsKKzYwMTAzIDE1NTM2ODY1MTk4YWIyMTk2NTBjNTBiOTg3ZGY3ODYxZDI3NzA5YjYgbGVnYWN5LXRydW5rCis2MDEwNCBiNGQwM2E5MmJkZGY5Y2JjYjdjYzA1Y2Q3Mjc2MTg0MzQwY2YxNjViIGxlZ2FjeS10cnVuaworNjAxMDUgM2QxMzFjODM4ZjA5YjhhMzAxMWU0MzA4ZGM5M2JlMmI0Y2JiMWQ3NyBsZWdhY3ktdHJ1bmsKKzYwMTA2IGQ4YzEzZWNiNmU4NTlmZWU2ZGMxOWRmOGZkNGNiZjMxZTBhZGFkOTEgbGVnYWN5LXRydW5rCis2MDEwNyBiZGE0OWViNDYwNzQ5Zjg0MzA3OTVmMjRlZjJmZDZjM2FmMzg2ZTQ3IHJlbGVhc2UyNS1tYWludAorNjAxMDggMTdmODQ1MzMyNzc4NDE1NDVhZmMxNzQ5YmY4OWExM2VlMjM2OTEzNSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDEwOSAxM2RjNjVmZTg1OTlmMDhhOGQ0YWU1ZGY0NTYwMGVjZTdmMDcyMzZiIGxlZ2FjeS10cnVuaworNjAxMTAgZWMwMmRiZTZiMDUxMDFiNjEzYWFlNTM2ZTExMDQ1NmIxMTlhNTQ0ZSBsZWdhY3ktdHJ1bmsKKzYwMTExIDVlNjYwMzBmMWE2N2E0Njk1NDg0NzViYjhmMGEwOGY4ODA2MjE0MmMgbGVnYWN5LXRydW5rCis2MDExMiBhYzJlYTk1NTIyOTMwYjJjMjFjNmRiZGVlODZlNzc3MTQxNzJjZWYzIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMTEzIDBhY2U3NDc2NzQ3OGNmNjdlNmIwNzQyZWQxZjkwNGEwY2M1MzM3OWMgcmVsZWFzZTI1LW1haW50Cis2MDExNCA0Nzk2NTg4ZDlmOWFjYjc1MTM3NTI2NzczMzZjM2NmNmJhMjdlYzhiIHJlbGVhc2UyNC1tYWludAorNjAxMTUgYzIzODkyZjVhNjlmMTZmODFiMTFkZjdjODBiMDBjNmQ2Zjk5NTYzNiBsZWdhY3ktdHJ1bmsKKzYwMTE2IDExNDgzYTY3M2E0NWVlZDRjYjQ0MjU1MjVkMGRjY2NkZDlmNzNmMWYgbGVnYWN5LXRydW5rCis2MDExNyA2OGY1Y2M5NWI3MGE1ZTZmOWMwNDljOWE4MTZhNGMzZDE5ZGY2YTRjIHJlbGVhc2UyNS1tYWludAorNjAxMTggNzY0NzE1MmY3NDI0NWI3ZWU1Mjk5YjFkODg4NmNlZTc5YTI0NDUyNyByZWxlYXNlMjUtbWFpbnQKKzYwMTE5IDFlNTYxNDU2N2E2ZWQ5NjljZjk0Mjc3NDViZWRiODdiMDJjOTk3M2QgbGVnYWN5LXRydW5rCis2MDEyMCA4MTZhN2JkYmY2OWU4ZmMxOGM4OWY4Zjk3ZTBlNmIxYjQ4NDZjZjRjIGxlZ2FjeS10cnVuaworNjAxMjEgMTEyMGIzZDYwNmYyOGMxYzVhZDkwNTJkNDY0ODRhNTM4Nzk1NDYzMCBsZWdhY3ktdHJ1bmsKKzYwMTIyIDZkNDNmY2NkYTkwYzNhMTQyY2I0ZTAyMWVlM2MwMWNkYWIwMGVkNjYgbGVnYWN5LXRydW5rCis2MDEyMyAzZTBmNGE0YjlmNTVhZTYxMjI0YTdlMjI1YmI1NWU2OTgxZWU4ZDc2IGxlZ2FjeS10cnVuaworNjAxMjQgZmE2Y2VlMTRkY2JhNDhkMGFiZDVkMDFiNGQ5MDc5MTg5N2I4MDBjMCBweTNrCis2MDEyNSA1NTM0OWQ0ZDlmODMzOWU1MGM1ZWQ2ODljZTgzNWZiZmRiYzg0N2RhIHB5M2sKKzYwMTI2IDFlOGI5ZTdjMzRjZWM1NWQwNjE3YWRiM2RmMDEyMTQwZTNhYzgyOTIgcHkzaworNjAxMjggMDJhMjEyMGU1ZGIyM2I1ZmI0ZDRkNDZmM2Y5MDFmOTVmODQzNjhmMSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDEyOSA5NDFjZjJiZjIwMGU0MzkyYTNmOGJkODZmMzZmNjUxOTViYTVlMGUwIHB5M2sKKzYwMTMwIGI5OWY5Mjk1ZmQ5Y2Y4ODZkZWViY2RjNjQ2YjI5NTQ4NjZhOTc1YWEgcHkzaworNjAxMzEgOTQyZTRiNDJkYTE0ZDU2ODVjZTJhNjdkZDczYjNmNWExN2QxOTFiNSBsZWdhY3ktdHJ1bmsKKzYwMTMyIDE1MGNiNDhlZGIwN2UxYmE4NjEwZGZjM2MxMDAyMjc2OGM2ZWVkMTYgcHkzaworNjAxMzMgM2YzNGQzYjAzNTBkMTM1YjlkNjFmY2VmNTA0YzU2YTM1MGFlOWZjOSBsZWdhY3ktdHJ1bmsKKzYwMTM0IGUzNjQ2OWU2ZDhiNjc4MDljNzM0YmFiYmYxODFhODljMmFlYzdiYjUgbGVnYWN5LXRydW5rCis2MDEzNSBhYmNiNzkyM2Q4OThmZGEzZGVkMmI1YzYxMzQ1NDM3N2M3MjY3ZDFjIGxlZ2FjeS10cnVuaworNjAxMzYgMTQ1YjNlNjA1Mzc4NDM1MjY2ZTU0M2EwMDQwOGY4YzI1ZDk2ZjU2OSBsZWdhY3ktdHJ1bmsKKzYwMTM3IGIyOGZkZWYyZjBkNzFiMThkNjg0NDdkZmRiMjdiYTk5MjliZDA4MjggbGVnYWN5LXRydW5rCis2MDEzOCA0MjRjY2NmZDJiYWFhNzIxOGE5Y2I0ZGFmMzliZDIwOGU2NThiM2M0IGxlZ2FjeS10cnVuaworNjAxMzkgZWFjYTIzNjdlY2M5OTI3OGIyMDk2NjVhYjYxYWRkMDg5NDFhMjQ1MyBsZWdhY3ktdHJ1bmsKKzYwMTQwIDg0ZjFhNjU4YjIzMTkyMzcwNWNlOTI4OTliMDBjNTA3YTYyNzViYTYgbGVnYWN5LXRydW5rCis2MDE0MSBlZjg1OWNkNzU0YTc2ZmE3N2UwODRhODU4ZTM0YzJlOGY1MmEwNjNiIGxlZ2FjeS10cnVuaworNjAxNDIgZWEzODlhMjY4YjU0NDk4MDcyN2NlMzg1OTdkMzRmYTk4ZjhiOTliNCBsZWdhY3ktdHJ1bmsKKzYwMTQzIGVhYjAwZGI4MGMyNzk1OWYwMjJmNGFkOWM2ZDBmMzg0Y2RkNzNiMTQgbGVnYWN5LXRydW5rCis2MDE0NCBlZjdkNzJkOTg0ODViZjQxNGE4NjIxNjdiMGVmMjc1OGJmOWUxMzJjIHB5M2sKKzYwMTQ1IGFjOTcwZjg4MzE4NzU2Y2UyYWRiZDZiZDZiYTNjOTBiNmE2YjY0NmEgbGVnYWN5LXRydW5rCis2MDE0NiAwZjA3MmVkYjMzNDM3MzI2MTc5NDVjNzViZDAzZTk1ZTk2ZjllZTYxIGxlZ2FjeS10cnVuaworNjAxNDcgYzNiZjhmOWJlYWE3MjcxMjllNGUwN2U3NjNjMTY3OWU1YjQ5Y2VkMSBsZWdhY3ktdHJ1bmsKKzYwMTQ4IGViMmVhZmRhMjliNzZkZDliMWIyZWRiNjI3NzRmZjU5NGU4MWFmYzMgbGVnYWN5LXRydW5rCis2MDE0OSA4OWIxM2I2OTM4NjQ1NDA2NWYwNWI2NmU2NWE4OTQ2NjgxMDMxMDVmIGxlZ2FjeS10cnVuaworNjAxNTAgZWQzM2RhMmU3NGU3MGUzZTE0ZmE5OWZjZjg4MDI5NzRlMmQ2MzU0MSBweTNrCis2MDE1MSA5NDExYjFiOTEyMTgxMmI3YmVmNmU3ODgzYjkzNWI0NGVlMTIyOTUwIGxlZ2FjeS10cnVuaworNjAxNTIgZmFiYzY4OGEwOGM2OGZmYmI1ZDE2YTUzNDRmZDA5NmViNjMwMWZkNyBsZWdhY3ktdHJ1bmsKKzYwMTUzIGFkNmE5ZGIxZmY0NWM1NDI3OTJhYTNiZDk1MGJjNmU1YThiM2E0NjMgbGVnYWN5LXRydW5rCis2MDE1NCBmNmQ0YTJjNDk1MzE1MGU4YzYzYzBlODAyZWIyNGI0OWNkN2RmZGE2IGxlZ2FjeS10cnVuaworNjAxNTUgOGYxNWY4ZGU0MjE4NWFhYzRhYTFkZmFlYTkyYTQwZGY1YzE4NGZmMyBsZWdhY3ktdHJ1bmsKKzYwMTU2IDhhYmQzNmYzYWI3YTNhZGM4MjlmOTQ1NzE4OGRiNGU3ODUyMzk2MjcgbGVnYWN5LXRydW5rCis2MDE1NyAwYWU1OWY2MDhiNDRmOWMxMWU4YzAzNjEwZWNmZWI2NTYzZDUxZWM4IGxlZ2FjeS10cnVuaworNjAxNTggMTk5MGZhNmI5ZTgyODdkODEyYTcwYWQ4YzE5ZjY1NzQwNjE0M2MxZCBsZWdhY3ktdHJ1bmsKKzYwMTU5IDc5ZjE1MDUzNzUxZWQ4NzZkYzI2NGI0OGY4NTNkZWI5YTYwNjJjNjMgbGVnYWN5LXRydW5rCis2MDE2MCBkZmZmMDQxNzUzYWExOGUwNjA1OTQ2NzhmMDQ1ODEyYTRmOGM2NmUxIHJlbGVhc2UyNS1tYWludAorNjAxNjEgMjdkYWMxNjU0MWQ5MDkwODY0MjQyZTQ1ZDA1NTE3YzY2Y2UxZDA5ZSBsZWdhY3ktdHJ1bmsKKzYwMTYyIGQ5NjIxNDA1NDA2YmRlZDU1OTRmZmI5NmE3M2IyYjRkZjBlMzk4NmEgbGVnYWN5LXRydW5rCis2MDE2MyBhNmIxOTBiMGNmMDY4ZTdkMjRjYzczZGRiMTczODVlOTdjOWI4MGIxIGxlZ2FjeS10cnVuaworNjAxNjQgNDMyYzRhZTBmZDA0NmZlOTNmNDUzYTExMTk4YWMwMzFiZTg5M2ZlOCBsZWdhY3ktdHJ1bmsKKzYwMTY1IDMyNDEyZmNlYjFiMzRhZDYzNDJhZjcxMTVkZmU1MWJmNWYwYjQ2YWYgbGVnYWN5LXRydW5rCis2MDE2NiA3Mjk0OTVmN2IyMjFhNDVlMDhlZTg2ZDExMTI2NDRlMmJlYWYyN2QzIGxlZ2FjeS10cnVuaworNjAxNjcgYzY5YTdiNTVhZDZiZmZhNTlmZGYxNzJkNmQ1ZjlhODhlZjcwMzlmNSBsZWdhY3ktdHJ1bmsKKzYwMTY4IDhhOWIzYjBiZTU3MzlhYWU5NjJkODJkNTBjMjAzZmNmY2NhYzAwZmYgbGVnYWN5LXRydW5rCis2MDE2OSAxYmU0YmJkODM0YTE0Y2QyZmFiNWEwNjBkYzYzMTFiNDEyMzNkMDkyIHJlbGVhc2UyNS1tYWludAorNjAxNzAgN2M1NGY0YTJkNDM4NGVjZGEyMjRmZDFlMDMxMTBlNTJkZGM2ZTc2OSBsZWdhY3ktdHJ1bmsKKzYwMTcxIDBiNDFhOTFjZDI2MWEzNTI3YjhmOGUxZjU0MTJkNWVhMDY2NTNiY2IgcmVsZWFzZTI1LW1haW50Cis2MDE3MiBkZjIyZTYxODBlNjdhYzkzNTg4YmY2NGE4MTVhNTQzN2MzZjYyMmM1IGxlZ2FjeS10cnVuaworNjAxNzMgMjk2NDNmYmUxMTUwNzA2YTQ5MmEzY2E5ZTg2YjU3MDA1MDgxOWQ3YiBsZWdhY3ktdHJ1bmsKKzYwMTc1IGI3NmM3OGNkYTNhYmZlMWQ3Mjc1YjBiYzdjYTRlNmUyMjIyNDE3ZTcgbGVnYWN5LXRydW5rCis2MDE3NiBmZWJhNWQ1Y2FjMjIxZjBiZDkxM2ZkOTZlZDMyODUyNTc5NjVhMjI0IHB5M2sKKzYwMTc4IGMzZDllNTdlNzFmMmMyMzQwMTkzZDYyZDBiNWE1YTA0ODU4M2RjY2UgbGVnYWN5LXRydW5rCis2MDE3OSA1YmVhNDU5MmNkN2ExYjcwZTA3ZDg5NWQ4ZDhjMGEyM2Y2ODRlNDUxIGxlZ2FjeS10cnVuaworNjAxODAgMTAxZDg2YTFhZjg1ODhmZGI0YWE0Njg4MWZkMTM3YjJjM2VkMmE2MyBsZWdhY3ktdHJ1bmsKKzYwMTgxIGViNGI1MGY3MzlmNmUxYTVkOWE0ZWQ0MmE4ZjA2NGFmNmEzOGJhZmIgbGVnYWN5LXRydW5rCis2MDE4MiAzMTA3ZmRiOTA4MWU1ODRlZTY3YjVhNWExZjhmOWFmZDkzNTNjNTBjIGxlZ2FjeS10cnVuaworNjAxODMgODEwM2YwMTk4OTY3Yzk2NTM3NjgxM2RiMTM4NmE2ZmM4ZjE2ZjU0ZCByZWxlYXNlMjUtbWFpbnQKKzYwMTg2IDcxMWFlMGU5OWMwMjdkNWU3Zjg1ZDJkOWYzOGI3MWY1OGUzMjg4YTcgcmVsZWFzZTI1LW1haW50Cis2MDE4NyBlYTYxZTllZGQ5Nzk5YjhhNTYzZGI5ZGViOTg5NmZjODlkZDdlZjUzIGxlZ2FjeS10cnVuaworNjAxODggN2YyYjUyNWY5ZGY0OGM3ZTgwNzUzZTkyMjExODA4MDliNmIxYmJjZSBsZWdhY3ktdHJ1bmsKKzYwMTg5IGI1ZTgwOWY5MjZkZTE4N2VjMWZhODQ5OTllNTFjZjY0OWU5ZjhiNDEgbGVnYWN5LXRydW5rCis2MDE5MCBmZTdkNDIzNDc0ZGVhZDliNmQzMmY3OTVlYTY4ZjliNWZjZWZiYTczIGxlZ2FjeS10cnVuaworNjAxOTEgZmZhY2I0NDY3M2VhYjc2ZDkzYTliMzJlOGQ0YWMyODY0ZWViMjAxNiByZWxlYXNlMjUtbWFpbnQKKzYwMTkzIDEyYjY5MTAxMTVlMGZmMjg3NGU5ZDkwMGI3NDc2MjU2YWZmYzRlM2YgbGVnYWN5LXRydW5rCis2MDE5NCA5ZDhjODc3ODg5YzNhZDBiNWZhZDM4ZjhlNDYwYTYxNmIxZDdjNmI0IHJlbGVhc2UyNS1tYWludAorNjAxOTUgMDBhNjg1OTZlNTA2NTBkNDFkODM0M2UwNzJlOWY3MDRlMmQyZmRkMSB0cnVuay1tYXRoCis2MDE5NiBlMDUwNGExYzVmOWQ3MmQ3MTQ0YjJiNTdmNDk3ZGI3YTU1NmFiMmRiIHRydW5rLW1hdGgKKzYwMTk3IGU0M2MyYWI2YTU3Yzc2OTVlODhhNzRiNTk1NzA1MTcxZWMxYTMwYjMgdHJ1bmstbWF0aAorNjAxOTggMDkxODA2MzgxY2Y4ZDZjMTUxMmJiODA4YTdhZDA1MDQ4ZmFiYzYyNiBsZWdhY3ktdHJ1bmsKKzYwMTk5IGMzY2U1NmM3ZWNkMTFiYWQxNTVlN2MyYWE5MzA1M2Y3ZjQxMWY5Y2EgbGVnYWN5LXRydW5rCis2MDIwMSA3Y2EwN2ZlMDI5NThkMTM4YjU3MzEwMzdmYmE3OWI5MGIzMTkyOTYwIGxlZ2FjeS10cnVuaworNjAyMDIgYmI3ZWUzZDg5YzJmNjA3NjgzOTA0YTU1M2UzZDljYmQ4Y2JiNWY4ZiBsZWdhY3ktdHJ1bmsKKzYwMjAzIDU2ZjBmYmFlYjY3ZmRmYzhlNGI2NzBhMTdjMTRmMWI4YzAxNGZiYmEgbGVnYWN5LXRydW5rCis2MDIwNCA4NjdjMGFhZDc5YzE2YTcxZWViMTU3MjJmNzBhZDU2YTI0NzZhNDA5IGxlZ2FjeS10cnVuaworNjAyMDUgYzNlZDZkYTdhMTQ2ODQ2YzAzY2NhNWY1ODczMzQ5NWZiODFkYWFlNSBsZWdhY3ktdHJ1bmsKKzYwMjA2IDUyOThhYmJkZDkxY2NlYzY4MzY3YzY2YjRhZmU3YmMwODA0ODA0OTQgcHkzaworNjAyMDcgNmJkNDg0OWI1NDU4ZGU1NTAwZDMwNTJhZDRiZjlmNGYwMzgxMjI2NiBsZWdhY3ktdHJ1bmsKKzYwMjA4IGRmODBjNmI2MDZhNDg2Y2U1MGQ5ODZmNjY3NGE3MTdiYThkODgyZDkgbGVnYWN5LXRydW5rCis2MDIwOSBkNjJjMTI2ZmU1NmEyZDY0MzE3YjY3NTMwOWYyZDNhY2U3MDhmMmVlIHJlbGVhc2UyNS1tYWludAorNjAyMTAgZmVmYWEwZTY2ZmRkMGUzNTEyMTNmYmFiMDkyOTE0MWVlOGIxODhkNyBweTNrCis2MDIxMSBlYjU5MTAwOTJmNTliYmI3NWRiNmYzODExNTQxMWNiYWYzY2I4ZWIxIHRydW5rLW1hdGgKKzYwMjEyIGM0Yjk4YmMxMGJlN2UxMTYwZTUxYjk2NmRjOTlmOGUwZTYxZTI2YzUgdHJ1bmstbWF0aAorNjAyMTMgMmUxNTEzNzY5NDFmOGI1YmI2OTY1YmJiODc0NWRmOTY4Yzc2ZTZlNiBsZWdhY3ktdHJ1bmsKKzYwMjE0IGRmZDIxNzkzYTViNTc1MTE2OWVmZTg2YzIwZGJlOWNhOGNlMjE2YTkgbGVnYWN5LXRydW5rCis2MDIxNSBkZmI2ZjM2N2E0MDZiYmFlOWU0ZThmNjY2OTQzMDYwNmJlMGI1NGM0IHJlbGVhc2UyNS1tYWludAorNjAyMTYgOWExMjExYzc3ZTAyOGIzYWJjYjM4MzBhOGJkMjJkNWZiZDIwYmU4NSBsZWdhY3ktdHJ1bmsKKzYwMjE3IDY5NTgyYmIxMTE0YzM2YmRmZTQzNDMyMTY3MzcxZmNjYzYzNDgzNjMgdHJ1bmstbWF0aAorNjAyMTggYTQwMjI5YWRmYTJjY2Q4ZDUzMTU5N2I4ODlkOGRiMTYwYWZmN2I1ZiB0cnVuay1tYXRoCis2MDIxOSBiMjg1NGU5NzRjYTk2NzBmNjBiY2RhMWRhMGE4ZjZiNmExZDAyMzM4IHRydW5rLW1hdGgKKzYwMjIwIGJjY2M3NjgyYzZkNGJhNGE1MmQyZDY0ZGZhOTBkZDI3ZmYxN2JiYWMgcHkzaworNjAyMjEgMDA1OTIxZmNmZjQzYWRiYzg5M2JjZTc3Nzc1ZjZjYjI1ZGNkZGQxNyBsZWdhY3ktdHJ1bmsKKzYwMjIyIDE0OGM4N2E2NjdjMjAxZDA2ZjFiNzkyMjJmMDYxNjE3ZDU5ZDFhNmYgcmVsZWFzZTI1LW1haW50Cis2MDIyMyBmZGQ3NGJkZWVlMTViZDQ3YzM3NzliYzg1OTVjZDRjOWVmYzU3NmQ0IHJlbGVhc2UyNS1tYWludAorNjAyMjQgNGM4MzA4YWMyMGNkZDlkZGMzMWFmYjFkZDliZTI3MzJmNjBjYjhkNyBsZWdhY3ktdHJ1bmsKKzYwMjI1IGI5MzRkMmVlNjNmNjM5YmRjNWJjYjllNjE2MmU2NmZlNzllOWNjMGMgbGVnYWN5LXRydW5rCis2MDIyNiA3MzMzMzViMjJmOGZkNzhhMzBmYTI0YjUzNzhjOTY2ZGQyMzA3ZGJjIGxlZ2FjeS10cnVuaworNjAyMjcgZDlhNjA3NTI1NThlZjdkODRkMjkyNDBlMTIwZTk5MTE0Mzk1NDY3NyBsZWdhY3ktdHJ1bmsKKzYwMjI4IDk1YTQ4NzM1MTc0MDgwYWU1NzgyMjdhNWY3MDA3ZTQ2YThhNjA5ZmQgbGVnYWN5LXRydW5rCis2MDIyOSBjZGM0YWVjZWRkNGM4NWNlZjY4NGUwMWUyODFkZWIzYWUwNGNmZmQ1IGxlZ2FjeS10cnVuaworNjAyMzAgY2M3M2E4ZDE5MzhiNDJlYzRiOWZlNzFkZDJkZDBhNThmOWIzMjIwZCBsZWdhY3ktdHJ1bmsKKzYwMjMxIDAxMmY1MTZkNGQyMmYzOGViZTAyOWUzOWVlMjE2MDUxOGU4NjZkMWQgbGVnYWN5LXRydW5rCis2MDIzMiBmZWQ4YzM2ZDg3MTUwYzM3MDEyZDNjZTMwMjQyNTBjY2Y5YWE5ZjJjIGxlZ2FjeS10cnVuaworNjAyMzMgMjJhOWQ5NzU3YTE2OTdiNzkyM2NlMzc5ODUzYTE4MDk0MzE4OTI1OSBsZWdhY3ktdHJ1bmsKKzYwMjM0IDA2M2VkMzc3ZmQzZDYyZjRmMTM1NzE0MGFjMDA2MTQzYWU3NWRmYjYgbGVnYWN5LXRydW5rCis2MDIzNSBjMGYwNDgzNTZjMzZjODkwMmUxYTI4NjJmZDU1NjM5Y2M0OGQ0YjQwIHB5M2sKKzYwMjM2IGUyMmE5MmVlYzY2MjAwNjc3NWNiY2Y5YWNlNjkyMGRmODU0ODIzM2IgcHkzaworNjAyMzcgZjNhOWFkNDQ4Y2NhZDE5ZWIzNzI1ZjBkOTJhMjc0NDE1ZjU2ZDM1NiBsZWdhY3ktdHJ1bmsKKzYwMjM4IDQzNzE3MjA5M2EyM2EyNDIxMDZhMzA4YWIzYWFhZmQzZGQ1N2RiODUgbGVnYWN5LXRydW5rCis2MDIzOSBjYmEzMDg0YjI3ZTcyNjkwNjQ5NDNjN2FkMmM5NzdjYzQ1ZWUxYjhhIGxlZ2FjeS10cnVuaworNjAyNDAgOTk5YTVlZTljZDJjM2ExZjc1MTAxNTlmNTQ5ZmUyY2I4NmU3OGMxZSBsZWdhY3ktdHJ1bmsKKzYwMjQxIDk0OGJiYTBlMjQ3Yjg5NTkyOWFjMmNkYTViM2RjM2IyYTQyYmU1M2QgcmVsZWFzZTI1LW1haW50Cis2MDI0MiBkOGFiMzI4MjBiMTdkYjViYWMxNjYxMWU2NGFkY2M3YTVlYmI3YmQyIHJlbGVhc2UyNS1tYWludAorNjAyNDMgZjJkYTdmY2YzYTI0NGEyMDkwZGZjOTM0OThhZGEzNGRkZGNmNWQ5MiBsZWdhY3ktdHJ1bmsKKzYwMjQ0IDdmYTNhZTliYTAzMWRhZjY4OWEyNjJhNDQ5MjA1ZTA5NjAxOWI1MTYgdHJ1bmstbWF0aAorNjAyNDUgYzMzZjI3NzlhOTM4NjA0YzI5MWZjY2MzMTAyNGQyMGIyMGM1NTEyYSBweTNrCis2MDI0NiBlYmJiN2JiMDAzM2JjMzRjODdkMjZjMjdhODVmMGJmNTg4ZjQyOTM0IGxlZ2FjeS10cnVuaworNjAyNDcgZGI2MjRiMWJhMDZkZTliNWM4OTdhZjU2MjAzNGI1NDk4ZTU2NjFjZCByZWxlYXNlMjUtbWFpbnQKKzYwMjQ4IDI5ZmY5MDY2ZGQwYzgzZGRmNDUwYjdiNGYwNjI2ZTBhY2Q3NGRhZjEgbGVnYWN5LXRydW5rCis2MDI0OSA2ODVlOTZkMjA4ODFiYWQ2ZGIzNDRlNWExNGYwMTQ3MDY2Y2VhOGU1IGxlZ2FjeS10cnVuaworNjAyNTAgOGJkNWYwZGI3ZjVkMTA3MGEyZDRjMDA0YzA0OGJkMTQ2MDc3YmU5OSBsZWdhY3ktdHJ1bmsKKzYwMjUxIGE4Yjc1MDIxMGI3OTkwOTFlOGIzMjgwMzBiNjkxNmE2YTI0ZDI4ODUgcmVsZWFzZTI1LW1haW50Cis2MDI1MiA2ZWYzYmU0N2E0NGU3ZTQ2YzFmYTFmMGNmMzJjN2YwMTgzYjI3MmRjIGxlZ2FjeS10cnVuaworNjAyNTMgZDE2ZGU2MjUyZjdmYTQzOGVmNGY2NGFmNzhmM2RiNWY4NDcxZjJiYiBsZWdhY3ktdHJ1bmsKKzYwMjU0IGU4ZWZhNjJlZWMxNTdkMGYyNWQ4N2ZiYjU2ZWRkMTMzNmJjYmFhZjYgbGVnYWN5LXRydW5rCis2MDI1NSBhOGM3NDEyNTM3NmQ2NTE5NDQ2ZjU5NDcxMmVkYTQ1MTM3MDE3ZTU2IGxlZ2FjeS10cnVuaworNjAyNTYgZjRhNmMzMjM1MDBiZWUwNTUyMDZkYTAxM2ZkYTY1MWYyY2VlMWVkOCBsZWdhY3ktdHJ1bmsKKzYwMjYxIGE2ZjBlNGJmYzJkZDcwZmViNDJiOGM4YjI1ZjAxYTA4NzlkNTkyMzMgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyNjIgN2UzYWZlOTA2NDQ5NWIyYjBmZWI4YWE1ZTRlNWE3Y2YyMzJmMDJjMSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI2MyAzZjYxYjY2NDNiN2VlYTFkZGE1N2E3Nzc1MzdkMzVhNjNmMWFmMjZmIGxlZ2FjeS10cnVuaworNjAyNjQgNzU3YTdmMzFlNDYwOTJjMDhjNDZkZGQ4NzA0MjY4ZjA3NGUyYmVkZiBsZWdhY3ktdHJ1bmsKKzYwMjY1IDY5YzU3MDNkMjBmYjQxMDkzNGExZTMwZDljYjYzZmViYzNkYTYwMjUgbGVnYWN5LXRydW5rCis2MDI2NiBlYmRiZThkZjYyYjAzOTg1MzRlOTM1NTFjYjU4NzEwYWY2N2U1N2FlIGxlZ2FjeS10cnVuaworNjAyNjcgNDI2OGI3N2Y4ZTU2N2QwYzAzNmIzMzU4NTBmNDQwMTE4NDY0NmZiZiBweTNrCis2MDI2OCA3NDJhMjY0Y2NlNGZhYjM3ODJmNzExMzg5ODk3MDRkYjg3N2ZkZTA5IHJlbGVhc2UyNS1tYWludAorNjAyNjkgY2UxNTlkMDFlZTMyMmE3NzFhYzczNTZmYzEzMTBlMGJkNDc0NGIyYyBsZWdhY3ktdHJ1bmsKKzYwMjcwIDZkYTBlZWEzNjc4M2E5MzA4OTFlM2JhYzc4YjE0NGVmZDQ0NGI5ZmUgbGVnYWN5LXRydW5rCis2MDI3MSAzYmQxOWM4YWYyYjExZDFmMTNjZDEwNTA1M2YyMGRiZjZlYjQyODFjIGxlZ2FjeS10cnVuaworNjAyNzIgZmFlNTQ1OTFjMDM1NjU4NjExNzU2NmZjMjY2MTRlNzJlNjJlYTU1ZSBsZWdhY3ktdHJ1bmsKKzYwMjczIDg0NDIwMzIwOWZiMDZlY2JlODUzNGFlNTlhYzJhYzFiODE1NDBjZGQgbGVnYWN5LXRydW5rCis2MDI3NCA1NDU1OGUwMjljMmRhNDIwYzVjYTZmMmQxY2ZiY2Q5Y2RjMDIxM2UyIGxlZ2FjeS10cnVuaworNjAyNzUgOTM0YTU5ZDUyNTQzMTRkMzczZmRjYzNjYTI4OWM2N2I3ZWYxODYxMSByZWxlYXNlMjUtbWFpbnQKKzYwMjc2IDk5NzJjY2NmNmEzM2Y0NDlhNTk4OTI1ZDc3ODMzN2I3MTI1YTM4NGIgbGVnYWN5LXRydW5rCis2MDI3NyAxMjA5OTE0MzcyNGYzNGNjY2Q5YTYyYWYwY2Y4YTIxNWIxZGZiMWY0IGxlZ2FjeS10cnVuaworNjAyNzggMDhlYjFjNDExMTEzOTFkYmIxY2RmMWY2M2UzYmY3N2YxYzhhMTU4YSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI3OSA1M2U3YmNmYjU0YTQ1ZjVmZDFjYjE2ZTI1M2FmNDM1YzI3YmViYTMyIHB5M2sKKzYwMjgwIGFhODM4OTU4ZTU0YWIxMzg4ZTRkOWNkODczOTk2NzQ4NTIzY2QxNGEgcHkzaworNjAyODEgNjU0N2JlMTFmNDQzODVmYzgwZjMwZjlmMzE3YzJjNjY3NDRlNDU3OCBweTNrCis2MDI4MiA4YmNhOGViMzZlMzdmNTE4OWQwOTUzNzFiZTdlYWZkZDkzMTJmMWE4IHB5M2sKKzYwMjgzIGJiYzcxOWE4YjU4YmY2ZDljNGI3YTFmZTMzZGNhMDU4MGNlNGNjMDkgbGVnYWN5LXRydW5rCis2MDI4NCAwNWYwMWRkNzU4YTFiZGZmZDlmYzMwN2E4OWM0NjQ5ZWI1OWI2MzcyIHB5M2sKKzYwMjg1IDNhNDQyYTAwOWE4M2U1ODY4NjhkNDZhMGI5YzA5MGU5M2ZjMzk3NzggcHkzay1jdHlwZXMtcGVwMzExOAorNjAyODYgOGU0MzViZGQ0YmM4OTY2YWEzOWFlZWQxOWEwNjc0YjY1ZTAwNzgzOSBsZWdhY3ktdHJ1bmsKKzYwMjg3IDFiZTkzZGQxNzlkZjdhOTAyYzQ5YjQ2YzQzOGE5MTY0NGU1ODQ1NTIgbGVnYWN5LXRydW5rCis2MDI4OCBkY2NlYWVmYTY3ZmQ4ZTU4MmU1Y2UxNGU5NmFkZDQxMDVlZTA1ZDBlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjg5IDI3ZDIyN2E4N2E3MzdiYmQxMTJmNWVmOThmMWFmNDNjMTU4YWEwZWIgcHkzay1jdHlwZXMtcGVwMzExOAorNjAyOTAgZWY0MmJkN2ZjYmM4M2UzOTAyZDgzYTFkMGQwMGU0YmNjZWM3NTIxOCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MSBkZGIxZTQ5OWEwMWY4MTYzZGUxMzNhZWY5NzcyNmI5ODhlMGM4MmJhIGxlZ2FjeS10cnVuaworNjAyOTIgM2M1N2E1MWY3Mzk0Zjg3NTMyOGQzOTcwZTA5MzQ5OTM2NzE1ZTJiOCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5MyBkOGU4ODM1OGY2YzI0MDgyOGI5NmNjNmMzMjUxMzg2MTY2YjBmNjllIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk0IDQyNDQ5ZjY4Mjg4NWJhMDZlZjdmNWEwZmQzY2NiZDg2OTVkNGQ4MjcgcmVsZWFzZTI1LW1haW50Cis2MDI5NSA1OTUwZDhkZTgxMzRiNTQ5ZWY4MmFhNjkxMWUzMGY3OWRjMzlkZDBjIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMjk2IGI1NDc0NmUyYTg4MGJkMzU4YWJkZDQwOTQ1ZjQ1Zjc0OTY1MzMzMGYgbGVnYWN5LXRydW5rCis2MDI5NyA5NDY3ZWEyMDA0NmMzMWQ4Y2Q3Yjc1MDVlMTQxYTQwYTg0NTA1MDkxIHJlbGVhc2UyNS1tYWludAorNjAyOTggMWY0YjFiYWJiOWUwN2IxYzNkYTVmZTdiMjI2NmEyNGFmMDgwNjg1ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDI5OSBlYTFkNDdjN2E0Njc0N2IxNWEzYzA2NzU5Y2FlZDU3YjYyMDkxZmZmIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzAwIDg5MTA1MGE2YTVjOTAxNzI3NzRmZWMzZTNiZWNlYmM5N2M5MjdlNzQgcmVsZWFzZTI1LW1haW50Cis2MDMwMSBmYjY4ZTQ0NTg3ZWEyNTlkNTIyMDIwYWVmMTRmYzM2OTNhODhiMTdmIGxlZ2FjeS10cnVuaworNjAzMDIgOTZmNWRjYjQ4MGE2MDJmOWRlNTNjZDlkMjNlZTM3ZjY0ODBlNjFlOSBweTNrCis2MDMwMyA4NTEwMzAxNjJkNzI4MzRmMDhhZWI5MzBiNWJhNDRhODk3ZTI2MzRkIGxlZ2FjeS10cnVuaworNjAzMDUgNjY2Y2ViNjc5OWE3ODE1NzFlNWRkMzk4OTY5MmMwZGNhZjJlNGViOSBsZWdhY3ktdHJ1bmsKKzYwMzA2IDZhZTIyMDMwZTE1MjU3NmVmNjhjNmEwYTJiMTM5YjQzYWY5ODViM2EgbGVnYWN5LXRydW5rCis2MDMwNyBkMzQ3YzFmOWMzOGFkNjU4YjlhN2FjYzdjMmM3ZGY4MDk1NzA3Y2Q3IGxlZ2FjeS10cnVuaworNjAzMDggYzZlNWM2MDRlYTYxZGVlMmNhMmE2ZWFjMmIzYzdjY2U3MmU2MmNkYSBsZWdhY3ktdHJ1bmsKKzYwMzA5IGJlNDRmYWVkNTQyZDdmZDA4ZjYxZTQ4ZTJlNGE0MzU3MjViM2U3YjUgbGVnYWN5LXRydW5rCis2MDMxMCAwZjA5M2U4YjJmNTMxYjRiMTRmZWM5YjU0YzQxYjhjYTkyOTBjNGVlIGxlZ2FjeS10cnVuaworNjAzMTEgMzA3ZDQxMDllMjNlYTVmZGVhMGFjMmI0MzNhZDU4OTRhY2M2NjI2ZCBsZWdhY3ktdHJ1bmsKKzYwMzEyIDMxMjRjYzViOTczZjE3YzQ4OTcwN2Y5MDgzOTkxZjFkNWNiNjIwODMgbGVnYWN5LXRydW5rCis2MDMxMyBiNzA0ODUwMTEyMTQ1MzhmM2U4YzEzNzBhODRhN2M4ZWQ2YTQyZTQwIHB5M2sKKzYwMzE0IDM3ZDc2Mjk3NWE5NTNkZTFjYzZlNThlMGU3MTkxYTgwODlhMTE2YzAgbGVnYWN5LXRydW5rCis2MDMxNSAyMjFkZWMwM2UyNjEyNTdiYjQ3NjdiMzczMzZlOTIxMWFjZjhhZWExIHB5M2sKKzYwMzE2IGFlZGI3YWMyNjI3ZWU0MjUxZjNmZDZhYmI4MTUwNmMwMDg0ODlhZDcgbGVnYWN5LXRydW5rCis2MDMxNyA0N2JiMzFkMDY1NzcyZDEwMDdhNTRhYjVhMWQ2Y2NlZmRkNjFmNjY1IGxlZ2FjeS10cnVuaworNjAzMTggNjRkMTNmNDU2ZDA2YmFjZjNlOTAzNDA5ZWU0MjE0N2RhYTIyMjdhZSBweTNrCis2MDMxOSA4NDMxNjE3ZjIwZTJhOTVhYmQ2MTg5OTNmOGRmMjQ1ZTI4OGNmMzRjIGxlZ2FjeS10cnVuaworNjAzMjAgYWFiNWM4ZThmMzhkYzAzMzlkMjMwOGFlYjU1YWJmZTBlMTY4NjliYiBsZWdhY3ktdHJ1bmsKKzYwMzIxIGFhYTVhNzk0Zjg4N2UyMWQxY2ZiNjRhZjc5YTM5ZDUyMTc0NTIxZGUgbGVnYWN5LXRydW5rCis2MDMyMiA1ZTBiNDYwZjI5NGE1YzdjYzFlMWFkYzgxYWQ3NDcyZTQxNWEyY2EwIGxlZ2FjeS10cnVuaworNjAzMjMgYTc1MGEyNmI1ZmFkYTYyZTZhMGVkOTlhOTZiYmRlMjA0M2Y5MjJlMyByZWxlYXNlMjUtbWFpbnQKKzYwMzI0IDUxYmI3YjFhZTc2NTkxMDU4ODM2ZjE2ODdiYjAzZjlmZWRiMDQ2OWYgbGVnYWN5LXRydW5rCis2MDMyNSBkZjIzZDUyNDk1NTBkN2Y3ODg4N2ZlYjA3NmU2Mjc1ZjBmNmRkN2E5IGxlZ2FjeS10cnVuaworNjAzMjYgNjk5YjM3MTcwY2FkYzZiMDE5NGNmYTRjMzYzZmY1ZjU5ZDE2MDBjYiBsZWdhY3ktdHJ1bmsKKzYwMzI3IGNiNTgzOWQxMzIyNjE2YTAxNDk3ODgzNzhhMmQ4NmU0ZmZjYzU5MjcgbGVnYWN5LXRydW5rCis2MDMyOCA4Y2JjYTkxZTMxNTQ5NzBiYjQ3NTZkMjhmMjVhZWU4ZDQxOWE5NmJkIHB5M2sKKzYwMzI5IGZiYjlhZTlhNTE0ZmViYTkwY2FjNzI5YmIzY2Q5OTI3ZDU0ZDIzMzIgbGVnYWN5LXRydW5rCis2MDMzMCA1ZDc4MmM4ZDQwMTY2OGNiOTNkNjE5YzRkODQ2OTcxNjdkNDUwMzFhIGxlZ2FjeS10cnVuaworNjAzMzEgZGNhM2Y2NDZlOGExZmI1OWZmMjhhYzY2NzhiNDE5NDJhZmVmMDRmOSBsZWdhY3ktdHJ1bmsKKzYwMzMyIGYzYjU4NDg0M2Y5ZmJkYzljNTRhYjUxNDU2ZTZmYzdlMDc0ZGEwZmMgcHkzaworNjAzMzMgOTYyYzQ5MWUxN2Q2Y2E4YzY4MDNiMDJkMGEyNzFkMDdkZWFiOTI0MCBweTNrCis2MDMzNCA1Zjk4NDQ2ZTBmMWJiN2I3NTYyNGJjNTcwMjk1ZTViZjFmYTRkYzAwIGxlZ2FjeS10cnVuaworNjAzMzUgNTBmMmQ3YmRhYmM5YTQ2YzcwOWMxMTg2YjExYmNjYjEzNzgzNTZjNSBsZWdhY3ktdHJ1bmsKKzYwMzM2IDkwOTM5MDhhMGNmNWQ0YzJjZjY3ZDYzZjlhMjZhOTlhOWQ4NTg5OTIgcmVsZWFzZTI1LW1haW50Cis2MDMzNyBlMzM2MjU4OTU1NTAyNjE3YjU4MzI5YzdmYTA3MGI0ZTc3OTIxNWQwIHJlbGVhc2UyNS1tYWludAorNjAzMzggNWIxN2I0NGJlMWJmODc4ZDY5MWVlY2Y5ZjMyYzk2ZThlNDJiY2RiNSBsZWdhY3ktdHJ1bmsKKzYwMzM5IDYzNWE3NTYzNjBmMThjOWExMTVjY2JlMjU2NGE3NjM2ZGNjNjEyNDQgdHJ1bmstbWF0aAorNjAzNDAgNzJhNjcyN2JlZDljOWUxNGYzZTU1NDYwM2FkYTc0MjI5MGNlODhhZSB0cnVuay1tYXRoCis2MDM0MSA2YWRiZDYyYjlhYmZhMGUzMGI1OTdkN2NlMTEwZDllMTI0M2I2YmVhIHRydW5rLW1hdGgKKzYwMzQyIDJjYTJiMDg0MGIzNWQzODQ1ZDgwYmQ3Nzg2MzVhMDY1ZDM2NmE2NDkgbGVnYWN5LXRydW5rCis2MDM0MyAyMGJmOTQyODVlZWZlODY4NjVjMTQ0OTJmYzBkZmYwNzdjMGYzNTFlIHJlbGVhc2UyNS1tYWludAorNjAzNDQgNGRkMGZjZjNkYWY3M2UyNmYwM2MyYjhiN2VkMTE4OGUxNjkxMTU4MSBsZWdhY3ktdHJ1bmsKKzYwMzQ1IGZmNThiMzBhOGQ1Mjg3MWQ2Y2YwNTQyY2Y3ZWExYTcwNGQ4YTE0ZWIgbGVnYWN5LXRydW5rCis2MDM0NiA2YmJmNmZkYzE1MmI5ZTQyZWRiZjExYTYwNWMyMTYyMzE5OTgxZTYyIGxlZ2FjeS10cnVuaworNjAzNDcgNDY3YzcxZjM2NWZkZWI0ZjY5OGVjNDcyMTM0YWI4NGI3MTk4NGZjZCBsZWdhY3ktdHJ1bmsKKzYwMzQ4IGYwMTgxM2IzM2NhNGJjZGZiNGNlMTM1NWU3ZDNiMWVhMDk4OGVhMDggbGVnYWN5LXRydW5rCis2MDM0OSA2MmYwYmE3NDUzNTdmMDU5YmVjNmRkZDNhNDI1N2IyODI4ZmFjN2NiIGxlZ2FjeS10cnVuaworNjAzNTAgN2MwMjE4MmUyOTc5YTIyZWU3NThjYTAyZjI1Zjg4MmIyYjg0MGQ0OCBweTNrCis2MDM1MSA5Yjc0YzljOGI5MmM3OWZiZjkwNGY0Njc2ZTczY2RhOGRjMzZmMGQ3IHB5M2sKKzYwMzUyIGY1ZTUyYTUzZmNkMTQ4MzRmNjM3MmI2Y2UxYjZlYWQ5ODkxM2IyMDggcHkzaworNjAzNTMgZWUyNDNjYTY1ZjVmNTQ2OGJkMDk2MzljODA3MDQyZmYzZWNkZjYyZSBweTNrCis2MDM1NCBmMTVkM2JmNGNhNTZhMTJkMWIwNmM2MjYxYjUzMGZmMTgwNDU3YjRjIHB5M2sKKzYwMzU1IGUyMjRhZDRiOGI4Y2FlMzE2ZmRhMDRhMjU5NzUzYWVhMmU2YTA1NTYgbGVnYWN5LXRydW5rCis2MDM1NiA3MDdkZDlmMzg0ZjM4OTYyNGIyMGYyMTBiYWI5YjliNDc1MTA2ODdjIGxlZ2FjeS10cnVuaworNjAzNTcgZmNmYTEzMTk5ZWNiZGEyOWVkOTU5MWQ1MmFkNzU4OGM4YmIzYTE3NiBsZWdhY3ktdHJ1bmsKKzYwMzU4IDFkNzFiZjQ3NWE4NWYzYWM2NjdlZjdlMzA1M2RlYmFlNTExZDg1YmQgbGVnYWN5LXRydW5rCis2MDM1OSAyZTRkZDM5YmY2OTA1NjMyNjlmNTE1ZTc3NDA2MTQ1ZTI0ZjlhOWMwIGxlZ2FjeS10cnVuaworNjAzNjAgNjA0YWFjNDMzN2E1YzViMTM0YWE5NWM1MWM2YmJiMzczNDdlNTE0YSBsZWdhY3ktdHJ1bmsKKzYwMzYxIGMzMTViNjcyNDVmN2Q1NGIwMzBhNTNlMjRkMDUwNGQ0N2RkY2NmNGQgbGVnYWN5LXRydW5rCis2MDM2MiBhM2Q1NzAwYjFkNWEzZTA2MDcwNzdiNWNmZTQxNjUyMmJlM2Y2NGIyIGxlZ2FjeS10cnVuaworNjAzNjMgMWZmMmJiNTE4N2RmZjkyYTU0MjNmZmM5MTNjYjlhMmQ1NzU5MjQxNiBsZWdhY3ktdHJ1bmsKKzYwMzY0IDg1Y2NjN2MxNTQyNWRlODI3OGFkNDMzMjlmMmYyYmY0MDk5MTQ5MDcgbGVnYWN5LXRydW5rCis2MDM2NSBiMDY0ZTI1ZmI4NDIzNDE5Zjc3OTllM2VjYWUzNWQ5NTRmOGI2MGNjIGxlZ2FjeS10cnVuaworNjAzNjYgNTYxYzA2NWUzZjJkNWZlOGVmYTNjNTY0OTJlMzVhZjFjZWU1N2Y4ZSBweTNrCis2MDM2NyAwYTcwZjViMzBiOGFjMTg3YTQ3OTc5NDY1ZmU0MmY0MmJhMTMyZTgwIGxlZ2FjeS10cnVuaworNjAzNjggMjI5NDVkYmNkMDMwMWY4Njc3YmY0MGUxMjg5MTk3MzZiMGYxMTZjMyB0cnVuay1tYXRoCis2MDM2OSA0NzI1Yzg0YjA0MjI3OWI5NTY5MmQzMmQxNjE2Y2VmZjIwZjViOWJkIHB5M2sKKzYwMzcwIGY3ZDIzNjBlOTUzZGU3Y2U5ZDczOWNlODI2YzdmYmMzNDkwMWJmZjkgbGVnYWN5LXRydW5rCis2MDM3MSBhZmE1OTkzMjI0ZTU1NjMwNjRlYWFjYzEzZjAyZjliNjhlYjc2NjJmIHJlbGVhc2UyNS1tYWludAorNjAzNzIgYmUzMTQwZWM2N2M4ZjYzMDhmNDg3YTBiM2U2Y2IzNGY1ODYxOWE0NSBsZWdhY3ktdHJ1bmsKKzYwMzczIDc5ZjQzOWQ5OWY4YzNiOGIxOTA2NzU3ZWRiYzMxM2Q1M2VjNWQ0OWQgcmVsZWFzZTI1LW1haW50Cis2MDM3NSA2OTVlNWJmM2FmOWMwNTY5MjE0ZmNjZDM3YWUyNWY2NzAwZGZjYmVmIGxlZ2FjeS10cnVuaworNjAzNzYgNzI3Y2M4MTBkNjkwYmNlODg0NjY0MzcyMWQ2Yzg3ZjExMWVkNWE2MSBweTNrCis2MDM3NyBmMDYyZGRhNTQ4OTRmMjQwZjk4YTA0ODU0ZjA3NjAzNGQzMjY0ZGUxIGxlZ2FjeS10cnVuaworNjAzNzggZWEzZmUzMDJkMzkyMDY0MGZjNjI4ODc1MDZiNWE5YTYzZmFmMWRkNCBsZWdhY3ktdHJ1bmsKKzYwMzc5IGViZmJhYTEwNTFlMmQwZDc4ZDZjZGQyMTliNTU5MDExNTViNzhiODkgcHkzaworNjAzODAgNTIzMmYwN2Q5YzhlM2RiMzg5MjQ4NGIyN2YxZmVjZTI3ZTdhYjRhYiByZWxlYXNlMjUtbWFpbnQKKzYwMzgxIDFjOWFjMDBjNDc1ODc5NjE1YmM3MWMxZTNjMDE3Yzc5Mzc4NzZlZDIgbGVnYWN5LXRydW5rCis2MDM4MiA0M2NhZjgxOGNmZjA3MjkxYzI4NTM3ZjZkNDFjN2RmZWFmNDk3YmU4IHRydW5rLW1hdGgKKzYwMzgzIGVmMmQzYmY4MzgzZGNiYjI1NmU3YTdhODZhNDcyNzc2MGQyNGYyNTMgcHkzaworNjAzODQgZjA3ZTZmMzI5NzU1M2U3YzU4NGE4M2M3ZmU3NDA1ZmQ1NTgxMzk1ZSBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDM4NSBlNjE0ZDI0OGJkZDEwMTU3YmZmNzdlNGI1MGRjNWNkMzg5NTY1YjdlIHB5M2stY3R5cGVzLXBlcDMxMTgKKzYwMzg3IDU4M2FjZTEyYzVjZjEzMWMwZTQ2OWFhZmYxZjQxZjM3YWM5ZmNhOTUgcmVsZWFzZTI1LW1haW50Cis2MDM4OCAxNWY1YjczMWUwMGIzODE1YTM2YTJiYmQ4MWVkNmRmNTM2NDBlZGYwIGxlZ2FjeS10cnVuaworNjAzOTAgYTI4ZDBiMTRiNzdkZWVmNDVjM2E3YjhhMGY1NGZkZmMzZGIwOWViMSBweTNrCis2MDM5MSAyYzNkNDk3ZWJmZDZkYmFhZmMyNzgwNjRhZGEzZjY2Y2Y1YjhmYjU2IHRydW5rLW1hdGgKKzYwMzkyIDk0ZjE4YzJkZWFhNWRhYWJlMmIyMjFkYWY1ZmUyNzZiNThiMzY5YjEgdHJ1bmstbWF0aAorNjAzOTMgMGRhMmVmOWZlZGMwMzJmMDk3YmFlNmFmMDQ1ZDA2ZmI4NzEyYmNjMCB0cnVuay1tYXRoCis2MDM5NCA2YWM3ZDJlOWEzYmM0MDI1MDcxMjg4YjJmNjcyZGNiYzA2MDYzZTVlIHB5M2sKKzYwMzk2IGFiNjcyNjA3MzdiMWM4NmUxMzFkYWU1M2E2ZTcwZDY3MjdlOTRmM2IgcHkzaworNjAzOTcgMTVlOGIzNDI1NGVjZmI1Zjc4ODUxYzNkNmQ0M2Q0YjdmNTAxY2EyMiBsZWdhY3ktdHJ1bmsKKzYwMzk4IDFlNTgzZWI3MWIzZmIzNjE5Nzk4OThiYzY3ODk0MGI1MmExZWNmMDQgbGVnYWN5LXRydW5rCis2MDM5OSA3N2QwNTJjZTFmNGM3YzVkMzUwNGM3YzE5OWU0YmVmZTVkMTJiMmZmIGxlZ2FjeS10cnVuaworNjA0MDAgNzU2NDEzYzBmZjFkOWFhODdlNDUxMTkxY2E2M2MxZGU4M2JhYjVhNyBsZWdhY3ktdHJ1bmsKKzYwNDAxIDdhNmE4MGU4NGE4YTAwNmU0Njk3ZjNlMjMwMjg0NTY4MWU4NTYxOTYgbGVnYWN5LXRydW5rCis2MDQwMiBkYzQ2YTY3YTdiN2I3MGQwMTE3YjNmNTNmMjkxMjM5M2IwNmY0Y2NkIHRydW5rLW1hdGgKKzYwNDAzIGJkMjQ2ZjMzNjg3Zjc1NzVjNDlkNmUwMzNkZDE3YzIyMGFiYThlMWMgbGVnYWN5LXRydW5rCis2MDQwNCA1NDY3M2Y3MjQxMDZlYjFmZTZlMWZkODMwODQ1MWNkMmYyMDkxZjE0IHRydW5rLW1hdGgKKzYwNDA1IGVmZWE0MjE3YTk1NDMzY2UzMGNkYTNkYzRhODJhMTU1NDk0YzYxMTAgbGVnYWN5LXRydW5rCis2MDQwNiA0MThhZDE1OWZlODQzZWU0NzcxMGNlMTU2NTA1MzRhNGQ0N2Y5MjJjIGxlZ2FjeS10cnVuaworNjA0MDcgY2MyMmQzZjEyYjEzN2Y3MjgzZjlkZjcwYzljNTcyNTI4MGE0NTQwMiBsZWdhY3ktdHJ1bmsKKzYwNDA4IGMzYjM4YTg1OTg5ZmM3NjUyMzIyZjE0M2ViZTM5MDBhYzZlMzdiMTIgcHkzaworNjA0MDkgODYwOTRjNDY3ZWFmYjE0ODBjZWEzMThmYTA3ZmJhZjgxYjI1ZmM2ZiB0cnVuay1tYXRoCis2MDQxNCBlOWQzZDU2MWRiZDFhZjI5OWVjZDUwYmU5MmRlN2ZlNWZjMTBiMmJiIHRydW5rLW1hdGgKKzYwNDE1IDNmOWZlMjcxNTUzZjE2ZDYxMTZjOWUzYmEzMTgwZTYzNmFhNDUxNGIgdHJ1bmstbWF0aAorNjA0MTYgMzAzY2VmMDYzYzM1MjBlYTZkNTVmNGUyNGVjMDVjNTYzZTFiZDkyYyB0cnVuay1tYXRoCis2MDQxNyBiOWJkYzZhOThiZWEyMjg4YjRkM2FiYzAzYTgzMzc3ZDQ0MjJiNjljIHRydW5rLW1hdGgKKzYwNDE4IGVkZDM2N2MyMmM4ZmNjNDQ5Mzg2NjEyOGFjZjg0MTY1N2I3YjMwNTYgdHJ1bmstbWF0aAorNjA0MTkgM2ViYWFlMzQxYzFiMTIzZTVkOWU1NDNkNTY5ZjFkNGVhYTE0MDRhNSB0cnVuay1tYXRoCis2MDQyMCAzYjRmMGM1ZWNmNTNmZDYyYzgyMTc1YmY4OTM2YWFjZDE0NzE2MThlIHRydW5rLW1hdGgKKzYwNDIxIDI5ZDYxNWRkMWQ5NzA1NWY5ZGE1MmNlNDA1MGVkNGVlNzRiYzExMWIgdHJ1bmstbWF0aAorNjA0MjIgYjM3MmMzNTRhMjhjMTc0NzUyZTA2MTRiMGFjMzI4MmJmNWNhNDBjNCB0cnVuay1tYXRoCis2MDQyMyA1MDljZGY2ZDY0Nzk1ZWRmZDk0OTUwNDRjNmQ1MWUyNjNmN2Q0ZWQzIHRydW5rLW1hdGgKKzYwNDI0IDkyNzczZDdlNjUzZTRjMWZlNDk3ODgzOGUxM2I1ZjRmMDExMzYzMWIgdHJ1bmstbWF0aAorNjA0MjUgZTc5MWJiMGFkY2RlODI5MDcxN2I0YWQ3MzM4NTkzMGZlNzU2YWRmMiBsZWdhY3ktdHJ1bmsKKzYwNDI3IDdhYzdlMDg5YTA2ZmM5YWQ0Y2UxYWNhYzEyNjM3ZTU4YmVlMDc4YjAgdHJ1bmstbWF0aAorNjA0MjggNzE2NmVkNDk4YzZkM2NiZGU1ZDE4NTFjYmNlOWZlMzJmZjIyMzM2ZCBweTNrLWN0eXBlcy1wZXAzMTE4Cis2MDQyOSBjZDY1YmEyM2E1MGU3NjEwZTQwMTAzZjM0MzVlNWRhMTc2YmIwY2RkIHRydW5rLW1hdGgKKzYwNDMxIDk2ZDAyNDkxNjRmYzY1MjZmY2ZjMmI3ZDMwMGE0ZWE5MGFhZjZlYTYgbGVnYWN5LXRydW5rCis2MDQzMiBiN2FhOGJkZTdiY2Y3MGY0OGM4OGRmYTA0NjI2Y2VhNzZiNTVlMDE3IGxlZ2FjeS10cnVuaworNjA0MzMgMjUwZjI5YmFiNjFiMTJjMzY2YWIzMzA2ZjUyYmU0OWNmZGZiMzUwMSBsZWdhY3ktdHJ1bmsKKzYwNDM0IDkwZTg2ZWUzNjg0YjNjMWI1OGQ2ZTNlZWMwMmIwMGI5YjZkYzE2N2UgcHkzaworNjA0MzcgZTk3NjRhNjk1ODA5N2EwNGQ4OTNjMjRmNTlkZmNhZjBlZTBjMTgzMyBweTNrCis2MDQzOCA2MjkwOWQyZTU3M2I5NzRmNzBkOTY5OGFhYTZlMWE1MjMzZjEzYWFmIHB5M2sKKzYwNDM5IGU0MzIzODc2MGMzODczOTZlMDc5ZDZlNzNjMGUxMjlmNjE5ZDA1MzcgcHkzaworNjA0NDAgMjYyNzg3OTZkNGRhMTMxOWYzOTM4MzcwMGY1NDdjY2Q2OTlhOGRlNyBsZWdhY3ktdHJ1bmsKKzYwNDQxIDUzYjkwZjMxZWZkNmU2NmEyODBhNjkwZTYzMDhkNDg0ZWViMDg5NmQgbGVnYWN5LXRydW5rCis2MDQ0MiA1MTBhNDgyODlkMWQ2ODhkNTE4MWNiZmQ4M2Q0YTllYjhmYmQ5NTM4IHB5M2sKKzYwNDQzIGM4ZmNhOWI1Y2QzYzMwZGNjYjVkNGRkNzJmZmFkNDFlMzVmMjlhNWYgcHkzaworNjA0NDQgNzYzOGQ0YWUzMTBjMjFmOTgwMDg5NjIwMTVlNDRkZTA0ODAxODkwMyBweTNrCis2MDQ0NSBiZDhkMjM2OWYxNDExYjM1MDZiNjRlYzhlMjUyZTBlMWY4MDczMjc0IHRydW5rLW1hdGgKKzYwNDQ2IDVhYjIzN2M5NjY5NWRmN2EwYjdiZThlNjc3ZjM0ZjBmZTMzMDY0NjAgdHJ1bmstbWF0aAorNjA0NDcgYWZkMGNiMjVjNzNlMjEzMTgwN2IwMTMwMWQwYzY1ZWQzN2QwZWNhZiBweTNrCis2MDQ0OCA5NjM5YTczYWZhNDc3NjE0YzBlZDM2ZDJhODk4OWM3NDVhNTM5ZWRjIGxlZ2FjeS10cnVuaworNjA0NTAgYzA1ZWU3N2IzOWYyZGMxMDZkZDdhYWU5MWI5MTI5ZTNhODIwZjg2NCBsZWdhY3ktdHJ1bmsKKzYwNDUzIGI5ZWUzMWEyNmYzODVkM2NmYTk0YzViZjkyNGZjODQ2ZTI1MGJmODkgcHkzaworNjA0NjMgYmUwNmIzMzk1NzY4NGM0NGIwOTU1Y2Q0ZjlkNmU3ZDg4MmM3YjQ1ZiBsZWdhY3ktdHJ1bmsKKzYwNDY0IDdkMGRmNWVjM2QyZjRiZTdlYjM2NGFmZTNiZDk1MmQxOTAxMjUwNWQgbGVnYWN5LXRydW5rCis2MDQ2NSBlODQ3NmFlZjg1N2MyMWMxMGU5MTU0M2U3OTk5MGQwYTNlNjI1MzI0IHJlbGVhc2UyNS1tYWludAorNjA0NjYgNzE5ODM2MDNlYTk5OTkwNDI3MjQ1MWJhMzMwMjYxN2MyNGE2ZDE4YyBweTNrCis2MDQ2NyAzZjI0OTZkYzkxZGIzZjY3OGM3ODIyMTc2Nzc4NWEzN2NmYmE5ZGY1IHB5M2sKKzYwNDY4IDg5MzBmZjIzMGVlOWU0NjNjZjRmNGQwMTBkNjVmM2RkNzhmZjlmODggcHkzaworNjA0NjkgZGU3YzMwOTdiMmMxMDY1MmUxN2E4NmJmZGEyZjgwNGE4NDVkMGQ3MyBsZWdhY3ktdHJ1bmsKKzYwNDcwIGU3N2I4MmFlZDFhODMxMzFmZjQzNTM5MTUwMDVmOGI1MTJlMjE5NTIgbGVnYWN5LXRydW5rCis2MDQ3MSAwM2U0YTM2YTU2YmJhNDk1ZTEzMTVjZjJmZTBhOTBlNzYxMjJhMDA4IGxlZ2FjeS10cnVuaworNjA0NzYgZjM4MGQ5OTEzOTBlMDlmMjNkMTI4NDcwOWVlMmI0OTY5MThiOWY3YiBweTNrCis2MDQ3NyBmMTgzZjExODk4MjQ4ZTc1NGVmYmJlNDM5MzEyMTMwMTcwMmIyMTQ0IHB5M2sKKzYwNDc5IGQ2MzVmMjllNTVmODI5NDcwZjVhMmRmMWEyOGNlODk1M2M2N2VmMTAgdHJ1bmstbWF0aAorNjA0ODAgYTc3YzhkY2JjZWQ5MTBmZmQzZTJmOTNkMTJiODJjMGE1YWM3NmY0OCBsZWdhY3ktdHJ1bmsKKzYwNDgxIDNhYTRiOGRmYmM0YTRjYjU0MmNlOTRmOGU0MjA2YTgyODBmZTg3MjkgcHkzaworNjA0ODIgODY1OWU1MjYxNGRhZGQ2OWUxMWJhNmUzNzE1ZjU3Y2NjODhkYTczYyBsZWdhY3ktdHJ1bmsKKzYwNDgzIDNmMTZhYzkxNTIxNGVkMzllNTZmZTc0YmZiNzljZTIzZGMxNjg2NDMgbGVnYWN5LXRydW5rCis2MDQ4NCBmMGU2YmI5YjI0ZjY4YjFlZjNkY2JiNGFhZjMwZTI1ODljM2E1OTQ3IGxlZ2FjeS10cnVuaworNjA0ODUgYTRiODQyNTdjN2Y4NTdmNTI3NmQ1ZDUwMTU2N2NiZGI5MjZiM2NiZSBweTNrCis2MDQ4NiA0OTJiMzAyYWRlZDY4OTQ4NzJmYzNhZjI1YWRmYjk2NjQ1MGJkMjIzIGxlZ2FjeS10cnVuaworNjA0ODcgNjc4NTA5ZjlhMDNmNzJhMWVlYjQwNGI1NWJkYjNkZjc4OWFmY2UzOSBsZWdhY3ktdHJ1bmsKKzYwNDg4IDMxNjRiNGFlMjdjM2MxZGYyNTFhZWM3MmM0MDBiNzIxMjE3ZmExZTMgbGVnYWN5LXRydW5rCis2MDQ4OSBkNzU0MDAzMWI5NTkyMTczOTYxZWViNzk5NzM2ZWE2YWE1Mjk3MDlkIHB5M2sKKzYwNDkxIGM2NmRhNTdiOTQ4ODk4MGU1NDA1NWZhOTYxYzEzNWQ0MzBjNjFhNzMgcHkzaworNjA0OTIgMzg2MDRmYTJhNDhmMWZlZTE1Yjk3ZmU0N2I2ZmFkMmUxN2JiYzA3OCBweTNrCis2MDQ5MyBhMjgxZTMzMTk4YzBhZTM0ZDFiYjE1NThmM2U3ZTZhZGI1Y2NmZWYwIGxlZ2FjeS10cnVuaworNjA0OTUgN2NiNmU1NjE3ZGEwOWQ4OWYzZTljZjMxODhhNTNhNzg5YjhiNTEzYSBweTNrCis2MDQ5NyA5OWVmMjQ4ZmIzMTUzZmQwOTg5NTYwYTA1Yzg1NTFjZTMyMjI5NzRhIGxlZ2FjeS10cnVuaworNjA0OTggMmI2MzY5MGQ1MTI4NTk3YzcwMWNkZDM5ZjJiNmIzYmJhNWEzNzhhNyBweTNrCis2MDUwMCAzM2JiZGM3NmFmYjYyZTE0NWVmZDYyYWFlY2UyZDkyNWQ2YmIwY2ZkIGxlZ2FjeS10cnVuaworNjA1MDQgMzk3OWFlMWVlYTE3YTcxOTgwOTRiNjllMGU5ZjBkMmIyNGRhNWY5NiBsZWdhY3ktdHJ1bmsKKzYwNTA3IDY0OTJhNzhlOTNiNGMxY2NjMWI5MzdmN2M3NzY3MzlkODlmZmFjYmUgbGVnYWN5LXRydW5rCis2MDUwOCBmYWE4OGZmNGNjZTRkMjU5ZmFiMTM3OTI3OWI5MWIxMWQ2OGY3MTNhIHB5M2sKKzYwNTEwIGJkYjcwMjk1MjQ4YmNmYzM1Yzc4MzNjMDQwM2FlZjI4Yjg0NWExMzMgbGVnYWN5LXRydW5rCis2MDUxMSBiZWVhNzNjYTJiODhlN2Q2OGNhYWZkMjM0N2JkN2M3M2JjMmE2MDg2IGxlZ2FjeS10cnVuaworNjA1MTIgNWNiODI4ODM2MGU3MzhjM2IyMWEwNjg3YzJjOTQzNjEwNjNhZjcwYyBsZWdhY3ktdHJ1bmsKKzYwNTEzIGQxMmM5N2NjNzQ2NzEzZDQ3YTI2NzMyZTRlYzRiNTZhM2QwMTEyOGYgbGVnYWN5LXRydW5rCis2MDUxNCBmNGI0OWVmY2VkYzBlZTI5ZTRkNGZjZTIyNjUxYmY0ZTdlOWFjMGQ4IGxlZ2FjeS10cnVuaworNjA1MTUgZGY1ZTUyZTA1MjQ2ZmNhMGU5NTNmNDg0MWU5Y2YxNWRiZTVhMGMzMSBsZWdhY3ktdHJ1bmsKKzYwNTE2IGQwYjMxZjI0Njk0ZGJlNzFiOWE3M2ZmNDIzYmJkZjIyOTVmN2JiOTYgbGVnYWN5LXRydW5rCis2MDUxNyAwYjRlOGFmZWQ2NjMxMjRkMDViNzdiMGY2ZDNhZDdlNDA0Mjc4MDg5IGxlZ2FjeS10cnVuaworNjA1MTggZjVlMThjOWJkZTcwMTc1MjM4MGNjZDY5MmQ4N2M2NzJiNTcwYmVjMyBsZWdhY3ktdHJ1bmsKKzYwNTE5IGNlOTgxNmY1MzY5MDliNTlkZWE2OTk3YjQ0NTUxNjJiZDAwMWRlYmQgbGVnYWN5LXRydW5rCis2MDUyMCA0YzU5YThmNzllNDI4MWVjMjU1ZTk5NDljOGQ2NmZkYmIxZDdmOWMzIGxlZ2FjeS10cnVuaworNjA1MjEgZTJhOGI2NzY1YWIzZmIwYzhjNWJjNmRkMTRkNWQwMTZjY2E0MzU5YiBsZWdhY3ktdHJ1bmsKKzYwNTIyIGQ1NGQxMzNjNmE4ZGI3Zjc2Zjc4MDkwODZjZjI3ZDZmYzRlNTFhZTYgbGVnYWN5LXRydW5rCis2MDUyMyA3ZTJlNjAzZjRjYmVjZTA4NTI4ZmE2YjA1NTk3MDY1NGRiMmE5ZTg1IHB5M2sKKzYwNTI0IGEzZTZmNzQ1MzNkNjBjZDBjYmYzYjE0ZGNhMGI1NGM2MDIyZjJkZjQgcHkzaworNjA1MjUgNjQwOTEyNDNjMDdiY2VjOTU5MmQwNDIwZGViOWQxMjcyYzU2OTlmYiBsZWdhY3ktdHJ1bmsKKzYwNTI2IGE4MWVmNjNhMTAwOWEyOTk0Y2NiZTAxZDI3Y2JhYTQwOTI2MWMyYjQgbGVnYWN5LXRydW5rCis2MDUyNyBkOTgwZjE3NWM4ODYzNGJkYWIwMDA5NTM1Yjc4MWNlZTY3YTMxYTYwIGxlZ2FjeS10cnVuaworNjA1MjggNmQ3NWJlMmMzZDNlNDEyYjM1M2Y4NjY5NzkyNzA1NTAzZjQzMGM4ZiBsZWdhY3ktdHJ1bmsKKzYwNTI5IDY2MGQyOTg5YjE2MWNkNTQwYWM5OTdjZmY2MzNkYzRkNjc4Njg4ODIgbGVnYWN5LXRydW5rCis2MDUzMCAwNDY1M2Y5MjY2NGYzMWQyMTYxMjJjZmFiZDk0MWY5MmExZGUwYjZkIGxlZ2FjeS10cnVuaworNjA1MzEgNjViMTI1MmMxYmMxOTBhYWY2MDJjNzk5NmY5NTYwZGQ3MTVjODBiZSBsZWdhY3ktdHJ1bmsKKzYwNTMzIGYwM2FmNjAxMjI1YjFkZTllMGFjOWQyYjUzMWU2M2Q2ZjJiNzRlNWIgbGVnYWN5LXRydW5rCis2MDUzNCBiMmRlOTdlYjFmNjdjNzQzMDU3MmJhOTY2ZmQ4NWVlZDU0NjEyYjQ1IGxlZ2FjeS10cnVuaworNjA1MzUgOTViYmY1NjEzYjE4ZjQ5ZGU1MmM0MjJiNjhkNmNjYWUyYjBlYWE2YyBsZWdhY3ktdHJ1bmsKKzYwNTM2IGFlZmRjYjUyNDA2ZGQ3MWZlYjdmMTQ1NTk3MDJkNDdiZjhjODQ4MWUgbGVnYWN5LXRydW5rCis2MDUzNyA1OWQ4OWQ2MWMzYTBiMzBjZTkwZWVmM2NmYjg1NWE3YzU3NDExMDIyIGxlZ2FjeS10cnVuaworNjA1MzggYzJkY2Y1NGU5MWZkMTg4ZTYxZTA2ZTg3ZWMxYjk2NjI0MTcyN2NiMiBsZWdhY3ktdHJ1bmsKKzYwNTM5IDI0OTY5NDA1ZTFhYWQ3ZjRkZDA4MGI1NjljMzgxOTU4YTc4M2EwYjYgbGVnYWN5LXRydW5rCis2MDU0MCBlNWUwMjg5OGI2YzQyYzExN2FmNjhjODc4OTVjMTRhZjZjM2Q0ZjZkIGxlZ2FjeS10cnVuaworNjA1NDEgMzk0MDkxZmQxZDUzMzU4MDYxNDViZGM3ZTNhZmVlMTY1YjU4MjI1ZCBsZWdhY3ktdHJ1bmsKKzYwNTQyIDIxNTk0YzVhMDYxYTUwZTA1ODA1MjJiMzhhOTRlYmRhYzI3N2M5ZjggbGVnYWN5LXRydW5rCis2MDU0MyBmMmNkZWQwYzFmZDc3YTZiNDVlOWJmNmMyZmI2NDE1YjI2MzEzMGQxIHJlbGVhc2UyNS1tYWludAorNjA1NDQgM2FjNDhjYjM0MDI3MzRjNjI5ZmFlNzc1NjU3YWVkNTE5Y2FlY2RiOCBsZWdhY3ktdHJ1bmsKKzYwNTQ1IDI3Y2E0NzAwYmM2ZGYwZmY3OGI0NTg0YjVhNjI2OThiMjE3ZDEyYjYgcmVsZWFzZTI1LW1haW50Cis2MDU0NiA0MDNhN2VlNWE1M2VjZWI2YTE1OGRlY2ZmMTUxNDlmMDIxMzk5Njg0IGxlZ2FjeS10cnVuaworNjA1NDcgNmM4YzZkZTQ0ZmY3NTg2N2MwMmI1ODIyMzEwYWZlZTFmZjNkOGRiNCByZWxlYXNlMjUtbWFpbnQKKzYwNTQ4IDZlMTM0YWE3Mzg3OTY5NTI2OThiMDcyM2ExMTIzNTlkOWVjNzRhYTQgcmVsZWFzZTI1LW1haW50Cis2MDU0OSBiNjZhYmYwZmQ1OTEyOTZlNTQ2ODY4NTdmNzJlOTIzMDc5MGMxMGE0IGxlZ2FjeS10cnVuaworNjA1NTAgNWJkYzhiNTk5MjIyYmExNGY3ZmJhZGJkY2UzNTQ3NWJlNzEyNTQ4NSBsZWdhY3ktdHJ1bmsKKzYwNTUxIDRhZDA5NTY1NTc5ZDdiY2Y3MjA5YWQ2YmNjZmFlNWVmZTZkNWMxZWQgbGVnYWN5LXRydW5rCis2MDU1MiBiZGNmNDBkMWIzOGViNGY0NzczZmMzZjNjMzQ4NjI1M2EyYzY2MjMyIHB5M2sKKzYwNTUzIDViYzU4N2Y5MDE2NGM1YjA3YWNkZGJjNjY3MWMyYzg4OTE0ZWRkYTcgbGVnYWN5LXRydW5rCis2MDU1NCBlYjk3ZTgzMDJmYTMxMDZjNDg0MzZjY2UwNDVkYTkxZGU4YjVkMTYxIHB5M2sKKzYwNTU1IDRhYTYzODMxMzI5ODBiM2U0MmMxZmQwMWI4NWE4N2RhMzgzZWRjYzkgbGVnYWN5LXRydW5rCis2MDU2MCA0ZjZmNDRiYzUxOTU3ZTMwMmEzMjRhNGYzODVhNzM5ZjM0MWZmZDIyIGxlZ2FjeS10cnVuaworNjA1NjMgNzUwMzlkMzExOGFlZWFkNjVlMzdhMTIzZDI3MjVmYzU2ZjVlMmM5NCBsZWdhY3ktdHJ1bmsKKzYwNTY0IGEzZmU3NDg1ZjVjNTU2YjNmZWVjNWVjYmZjOGM5NjNkYzJmMzE4NjkgbGVnYWN5LXRydW5rCis2MDU2NSAzODUwZDEzYmY5NmI3NTM5YjVlODI4YWNlYWJkZGYyZWM5MjFkNTY4IGxlZ2FjeS10cnVuaworNjA1NjYgZjAzOTU1ZmFmZmI0NzRiNjEwZGExZjU1YTViZGI3ZmI0YjgzN2E1NCBsZWdhY3ktdHJ1bmsKKzYwNTY3IDhmZGQ2ZDYyZWE1NWFiNzRjMmJlOWE2N2U5YzAwYjU3ZGU5YzE2MGUgbGVnYWN5LXRydW5rCis2MDU2OCBjYzMxOWE1ZjUwM2U3NDA2ZTFkZDA5ODU5ZTZkODNlYTBkYzA4OTYwIGxlZ2FjeS10cnVuaworNjA1NjkgM2Q3Yjg0ZGFhMzRhNGQ0Y2JhNTlmNDJmMTc0MzVmNDk2M2ExZjI0YSBweTNrCis2MDU3MCAzYmU0ZmFmZDljYzBkZjM3N2U4ZWY3OTZhMmNmMGRmNzI1NDkwNjU2IGxlZ2FjeS10cnVuaworNjA1NzEgMWJlYjdkMjkzZjU1MmM4MGNiNTVjZDI3YjRiZTBhNDE3NTg5ZDBjMSBweTNrCis2MDU3MiAzOGRlMGU0MWQyNTRkNzQ2OTQwZDhiYmRkMjM5NWQ4YjU4MzBkZDgyIHB5M2sKKzYwNTczIGY2OWRhM2Y1NzIxNzY2ZTFmYjFkZmE2NzI5NjY4YzQ1YWE2YmVhMmEgbGVnYWN5LXRydW5rCis2MDU3NCA5YjY3ZDI1OTVhMjMxYjZmODkyZDc1OTQ5YzY4ZTM4MWQyMDFkOTU3IHB5M2sKKzYwNTc1IDY0M2MxMzk3Zjk1NDBmMDJlYzhiYjQyMWUyZGJkMTUyZTFmNTY1OWEgbGVnYWN5LXRydW5rCis2MDU3NiA5Njg2YzRiNDYyNDNkYTg1YzJlNTNhMDdmNmQ3ZGQ2YTZjOWM2ZGJjIHJlbGVhc2UyNS1tYWludAorNjA1NzcgZTYxMTM1ZjdmOWJiZmFiN2M1YjE2NjAyYjFjNjAzNDgxNjZkODU0YyBweTNrCis2MDU3OCBjYjFlNWMzN2QzZDAyNDBlOGM1OTc1ZmViNjJhYTNkMGEzMzdjOGVmIHB5M2sKKzYwNTc5IDg2NjAyYjYwMzQ2MmM4MTZhODY2MjJiMzFiNGNkYzRhNjFkYTM4MDUgcmVsZWFzZTI1LW1haW50Cis2MDU4MCAxZjg3ZWM5OTFlNTlkZWFmNDVhZTYxNzZiNzUzMjFkZTQ4ZjIwMDVjIHB5M2sKKzYwNTgxIGU4N2JkOGRkZDAxYjBhMDkxMWU5ZDYwZDZhZmQ3MDY1NTFkYTJmMjEgcmVsZWFzZTI1LW1haW50Cis2MDU4MiAwZGZhYTkyYmQ1MzQ4ZGI0OGMxZWExNmIwNjE1NWExOGJhNjEyNWZhIHJlbGVhc2UyNS1tYWludAorNjA1ODMgZTYwNjliMjQwMzFlYWU0YTBlN2E1N2ZhMGRhMDU3YjUyZWEwOTU2NCBweTNrCis2MDU4NCAzZjhmODY0OTNkYWFlODI5NzBiNGI5OTg2NjU4OTRiNGNlMDlmZmU4IGxlZ2FjeS10cnVuaworNjA1ODUgYmRmNzQ4Njg5M2JhYWEyYzcxZjU5NjQ3YTkyYmNiNjA2NzlkNTNhMyBweTNrCis2MDU4NiA2NDYzNDc0NDRmYWE1MmNjMTA1ZGEyNTZhNWM4YTY2OWRmMDE0Y2U0IHB5M2sKKzYwNTg3IDViZGE0Zjc2YWQ5MmM2NzUxYTQzYTQwNDUzYjE2MWE1OWVjNGM5NGYgbGVnYWN5LXRydW5rCis2MDU4OCA5NGQ5ODA5NjYwNTZmZTNlZTkwNTllZTRkMTZlM2E2ZTdmNmM4YTViIGxlZ2FjeS10cnVuaworNjA1ODkgZjJmOTkxNjM0NzgxNDg0YTQzYjNiMGRhNzA2Y2ZjZGI5YTk5MmI5ZCByZWxlYXNlMjUtbWFpbnQKKzYwNTkwIDhkODkwMzdkNWZjMWFjMjBhMTE3NTZlMGQwY2U0MmZhZTU4NGE4NTIgbGVnYWN5LXRydW5rCis2MDU5MSAwNjBmMDM5ZDJmYWI1NDU3NThjMGJjYmY5N2Q1YWEyYTRjOTc2Y2Q4IHB5M2sKKzYwNTkyIGNmYTI4MDQyNGI2NTBmODc5ZWUzMDg3ZGMwNzVlZTcyYzhhYjhkZGIgbGVnYWN5LXRydW5rCis2MDU5MyBiMDExMzY2MTAyZGJhYjc3OWQ3YmM1NzI1YzdiOWJhOWYwNTk0Y2NkIGxlZ2FjeS10cnVuaworNjA1OTQgNGQ1OGMwZmE2ZTM0MzIwN2I1YjE4OTBiYTUwZTQxYjljYWU0OTVmYiByZWxlYXNlMjUtbWFpbnQKKzYwNTk1IGRhYzQyMTdlOTk2NWEwZWE5ZTIzY2E4NjY4OTAyY2NlNzYwMDNlYjYgcmVsZWFzZTI1LW1haW50Cis2MDU5NiBkMmI0OWE2OGU2ZjdiYjBlYWQyNmIyZWQwNzExOWY5OTg4ZTExYzdiIGxlZ2FjeS10cnVuaworNjA1OTcgNWZlNTU3Yzc2MGEyMDBkNjc4NmYwYmRkYzc5N2QyZTNiYmJlMDkwYyBweTNrCis2MDU5OCA2ODc0MzdmN2I3ODQ5MTY5MmZhY2Q3MTBjZjAwZTZlMjczNTAyOTM1IHB5M2sKKzYwNTk5IDFjMmEyNjY4NmU1NDQwMWJkZjFkYzEwM2VjY2NkM2E0OWZkOWNjNzEgbGVnYWN5LXRydW5rCis2MDYwMCA4M2I1ZDZiMmFhNzBmM2NiMzVjZDljZWUzZTBhODEyYTc2ZWM5MmYzIHB5M2sKKzYwNjAxIDAxZDFhNGZmZDViMzVmOTk4MWQ0N2FhZGNjOTdkN2RjMTVhOWVlOTggcHkzaworNjA2MDIgNjg2MzZlYTg5MTUzMTE5MzUwZjVmZjhmYmZmNzlmZGYxZmM3MzdjYyBsZWdhY3ktdHJ1bmsKKzYwNjAzIDhiYzFmZGM2MzM3MGQxNGZiM2QyYWFmMDZkZjM5MmNjOWZjOTI3YTggbGVnYWN5LXRydW5rCis2MDYwNCBmNGMwZTUzYzM1NjFhMzZiOWQ2YTViMTI3NGJmZWNiNzlkZjEwOWY5IGxlZ2FjeS10cnVuaworNjA2MDUgNzdiMzcxYzY5NThjZWRlZGQwNTdkM2VjNjRmMTljYmJmYjJhZGNjNyBsZWdhY3ktdHJ1bmsKKzYwNjA3IDhmZWM1MGEzODU5ZjRkMWRmMmE0YzdlZmYyYjk3ODVmMDg1MzA2MWIgcHkzaworNjA2MDggMTExY2IyYWQ3YWY0OGQ2NTFmMjE0NTdmYmU5NGFjZWJlZmU3Y2VjYiBweTNrCis2MDYwOSAzZWNkNTI2YzM1YzU2NzFlNWQxZDFlY2RiNzJjZTZjMmE3ZjY3ZDJjIHB5M2sKKzYwNjEwIDhlZjNjN2MwMDQ3MDE1OWFmMGJlMDc4MDc3OThkM2EzYzc4MjgxMzEgcHkzaworNjA2MTEgYjY1Zjc5ZTM1YjA4ZWNlNGI4OGJkYmUzM2U4NzY3ZWE4NTNiYWRjNyBweTNrCis2MDYxMiBmZGQ5OTI5MWNjNDU5MTZlOWVjMjNhYWYyNzIzYTIxMTU2NGEyMWVhIHB5M2sKKzYwNjEzIDE2NTNmNWZmM2MwMDE0YWFmODMyOTE2NGJlNDE0MzdiOWM3NTBiOTkgbGVnYWN5LXRydW5rCis2MDYxNCBhNGM4N2M4ODk2NDgzMWQzODNmNzg4NWRjMzgwYTYzMWM2ODQ4NTY4IGxlZ2FjeS10cnVuaworNjA2MTUgNzM3ODI3YjRjNWQ3NWY1MjU5MmI5NzA4M2ZlMmJiNTBjNmRlYzRkNiBweTNrCis2MDYxNiA5MjBhNzYzM2FlMDg5MjI1MWRlYzEyZmM4MjIyZDFjZjRhNzZmZjE2IGxlZ2FjeS10cnVuaworNjA2MTcgMTQyYTExYjMwNTdlOWFmODdmMjYzZGQwNzI2OTg3OTZmN2Y0YjE3YSBweTNrCis2MDYxOCBiODQ3YTk4MjNiMmZmZmFhMjU0NGE2MDM2NjY4Y2Q1NjViNWMzMzg4IGxlZ2FjeS10cnVuaworNjA2MTkgMzNiNzhhYWZiYmIyMjIyYzk5MDE5MGVhYmM4OTRkYWMyNjkxMWVhMSByZWxlYXNlMjUtbWFpbnQKKzYwNjIyIDY1ZmIyMTc1MDk0MjVjOWU3MWU3ZjEyMWI1ZTEwZmFlOTFjMmE3MmMgbGVnYWN5LXRydW5rCis2MDYyMyAwNTcxYmM0YWI2YzI4MjFiYTk4YzI2Y2FmYTU3OWIyOWE4ZjE3MmIzIHB5M2sKKzYwNjI0IDgxOTAwYTkxNDIyYmY3MTIxOGQ0ZGY0MWU5NGQwMzY1NTkwNmY0NjEgcmVsZWFzZTI1LW1haW50Cis2MDYyNiAwZjdjMzE3YmJlN2Y4Y2RjNmZkYThmZjRlNjQ1YjA4OTY3YzM0NTYyIGxlZ2FjeS10cnVuaworNjA2MjcgMGJhMzFjZWE2ZTAzYjJjOTIzNzk4ZTdhODkzYjNhYjc3MTgxYjZlYiBweTNrCis2MDYyOCBkYmUzYTEzM2I3MTgzNDJhYmI5MWFmMmZkOWZmOGZkYjUwNjM0MWQ1IHB5M2sKKzYwNjMwIGY1NWE0ZjExOTE0MTk1YTNmZTgwN2FjNDJhMTE0NTA1ZDdiOTUyYmMgbGVnYWN5LXRydW5rCis2MDYzMSBhMjEyNmVkYjIwN2IxMjg0MGNlMDRjYWUzODU4YTE0Njk3MDUzMjkyIHB5M2sKKzYwNjMyIDM0NjYyNWJhNTkwMzJjYjc0NGM2NTIyYjcxZjdiMGQ2NTI3YzM1NWMgbGVnYWN5LXRydW5rCis2MDYzMyBmZmUyZDBmNTdlZmQ3MWNmY2U2YzU3MTQ5NjAwYjliYTMxZTAzM2RlIHB5M2sKKzYwNjM0IGQzOWUxYTBlMDk2NTQ4MjM1MzUzYTA4YzM1MjhjNDIxMDgzODQzYzggbGVnYWN5LXRydW5rCis2MDYzNSAwNjNkMDIyYWMwMTFiODVlZTg2ZjAwZDIzNDk2M2QwYjI0Y2MxYjFiIHB5M2sKKzYwNjM2IDNmMTI0OTc1ZTA5OTU5NDVkNDY4NGFlM2MwZDZjNGQwYTJiMGYxZGMgbGVnYWN5LXRydW5rCis2MDYzNyAzYmIzYzc0M2YxMDVmNzEwYWE4YzczMzM0MTcyOTBhNTk3ODkzMTA4IGxlZ2FjeS10cnVuaworNjA2MzggOTM4YmE2MjJhY2EwM2NmMmRlNmU0OGQ4Mzc4NjNlZTc3OGZkZWRlZSBsZWdhY3ktdHJ1bmsKKzYwNjM5IDA5NThjYzQ2YjMzZjM0OWZjYzMxZjIwNTBmNjE2Y2Q2YTIzZjZiYjMgbGVnYWN5LXRydW5rCis2MDY0MCA4Y2JiOGFhNDViYTlhOWFkYjVjNjk1OTUxYjhmYWQyODdlNGU0ZmI5IGxlZ2FjeS10cnVuaworNjA2NDEgZmViNmRkMzZkNTNmMzNlOTY2MzAyYTdmYjQxNGY5ZDUwMmNiZjVhYiBsZWdhY3ktdHJ1bmsKKzYwNjQyIGM3M2EyODAyYjczODY2MGQxMmEzOTQxNDIwOGVmOTFmMDUyMTEzYzIgbGVnYWN5LXRydW5rCis2MDY0MyBlODJhYjI0MjNhYWI3MDljNmFjOTdhNjQ4ZjMyNmI4MWJiNmQxMTJjIGxlZ2FjeS10cnVuaworNjA2NDQgNDRlMmQ5ODk5MTE1ZDcyOGE0YTlhMWNmMTg3YTE4MmIyYjc3YjFmYSBsZWdhY3ktdHJ1bmsKKzYwNjQ1IDdkYzlkZWUwOTllODgwZGE3ZjFiOTAxMTgxNTNhMDE3MmVkOTIyNWQgbGVnYWN5LXRydW5rCis2MDY0NiA1YWM2MDVjMGYyN2NhOGQ4NGJhOThlZGQ4NDQ5Zjk2NTgwZjJhMTJmIGxlZ2FjeS10cnVuaworNjA2NDggMjE5ZjdmMjEzNGQ0OGVmOWYwMTViNzUyZmRjM2QyZGNmZGRhMzg4YSBsZWdhY3ktdHJ1bmsKKzYwNjQ5IGRlYjQ4NzNmYTBmMDRjNTdiYWRlZWYyNjYyMmE4ODMwOTUwM2ZmNzEgbGVnYWN5LXRydW5rCis2MDY1MCA3ZmE0NzI1Y2NlODc5ZGFlZGExOTExMGFkYmNiYTkzNWI1Y2RiYjY3IHJlbGVhc2UyNS1tYWludAorNjA2NTEgMmM2M2YxNTIyYmJlNGU3NmVjZDNhOTNmMmU1MWNlYTgwN2FlOGIzNiBsZWdhY3ktdHJ1bmsKKzYwNjUyIGNkZDJlYTA4MGUyMzY1ZGRhZWQ2NjIyN2YwYTcwOThkMTY0ZjVjNDAgcmVsZWFzZTI1LW1haW50Cis2MDY1MyA0ZTMzZmM4MmU3ZjMxODhmNTkxNThhNWEzNTkxNGI5NWFlMmY4YTRhIGxlZ2FjeS10cnVuaworNjA2NTQgNDAzZjcwNWQ1OGM5MmY2YWE0MjVlOTRlOGMxZDFmODViMWFkM2U5NSByZWxlYXNlMjUtbWFpbnQKKzYwNjU1IDM4MWY0YTI5MzNiNTg5NzAxNGExZTg4YmI1ZjkyYjhjNTAwM2U5MjMgbGVnYWN5LXRydW5rCis2MDY1NiA1ZDhmZWNhMzMzMTVkZTk3YjdkM2FkYjE5OWNmM2NkYzIyNDVlMTJjIHB5M2sKKzYwNjU3IDU5YTY0ODViYWMwMjMxZDFjZjYyZWEyNTE5YzMzNmUxYzM2OWNiMGEgbGVnYWN5LXRydW5rCis2MDY2MCA0ZTQzNzIyZmQ1MDNlMTYyN2MxMDY3NDI3YjQxYjUzYjIyZDU4MjJlIGxlZ2FjeS10cnVuaworNjA2NjEgMjYyMjYzNzM3YmNlMmRjZmYyYmFhMzI0ZDNjNjg4YTk5YmM5MDEzZiBsZWdhY3ktdHJ1bmsKKzYwNjYyIDFjMzI2ZGVhNDk0YzJjOWViODcwMGNhOGIzOWM4MGY5N2U0YmY0ODEgbGVnYWN5LXRydW5rCis2MDY2MyBlOTRhZjBjN2FhMTJiYTI4NzJmYjY1M2VmMjQzMWVkNWZjYjkzZjQ2IGxlZ2FjeS10cnVuaworNjA2NjQgNDE2Njk0NWEwY2M0ZmZiNzZiODZiMzgxYWM2NGNkY2MzZjliMDMwZSByZWxlYXNlMjUtbWFpbnQKKzYwNjY1IDA0NjNmODAxZDdkYzUwOTczODUyZDIwMjY3NGUzNjAzNzJlYzQ4NmMgdHJ1bmstbWF0aAorNjA2NjcgNTRkY2Y4MDZkZWQ2M2MxODdkODcwYTM5MmU3MDAwNWU2YTExMDg3OCBsZWdhY3ktdHJ1bmsKKzYwNjY5IDQyNDIyY2YwMjA4YjBhZGVkNmNhZmY2ZDVkNzg2YjAyOTgyMmY1MTUgcHkzaworNjA2NzEgZWNhOTBiOGFhN2ZkYjhlMjk3OWRjMDk0ZjhlNmZkN2FhNDAzNWE5YiBsZWdhY3ktdHJ1bmsKKzYwNjcyIDNmYTdmYjMyOGQ5YWEyOTBiZjc4ODQ3Y2Q1Nzk1OWI1MjZkNzI3ZGEgdHJ1bmstbWF0aAorNjA2NzMgMTk4MGQ3MDU4NjI3MjU3MDczZDIyYzQ4NzA0NDA4NTAwMDQ2ZGU0YyBsZWdhY3ktdHJ1bmsKKzYwNjc0IDgyZDQ0MjgwYzEzNTZlYWQwNTQwNTYxZTFiMjIwZTU5NGEyOWE3MTAgbGVnYWN5LXRydW5rCis2MDY3NSA3N2M1NzkxYjdjMjEwMTc3ODFjNzY2M2I0MjUzOTQyZjY3YmY4ZTNkIGxlZ2FjeS10cnVuaworNjA2NzYgMTViYzhlODMyNDIwN2MyN2UzMTFiZmIyMjY2NDdhNDI5ZWY4YTBlNSBweTNrCis2MDY3NyA2OGQzMWE5MWZkZjMyOTIyOTYzNTVmZGVlZDM1NDM3NmQ4OTcxMDJjIGxlZ2FjeS10cnVuaworNjA2NzggNTk1MGM0OWYyMjVhZGVhNDIxNjAzNTE4NGFkMDk2OWM0ZDJlNjZjOCBweTNrCis2MDY3OSA5N2I0MjBiMmQ4ZDEwZTBjYzUyMjM2OGRlNzk0Mzc2MGZkNmQyM2ZlIGxlZ2FjeS10cnVuaworNjA2ODAgNWJhNWM0YzlhMDE2OTY2MWY3ZDFiZDdiNGU0YTM5MGVjMzA0NTFlOCBweTNrCis2MDY4MSAyYTgyMWUwMDFhMmI0NmQzZGE4MTA0YmY4ZTk3MjkzZmMxMTg0YWNjIHB5M2sKKzYwNjgyIDg1MjdlZDc1NjNkMGI0YmNmMzg5NzhjNWM2OWUzNmNhODU5NmJiOTQgcHkzaworNjA2ODMgMGYzZDU4ZjljZDM1MjZkY2I2ZjJiN2M4MTg0YWZkYjNhNmEwZGViZiBweTNrCis2MDY4NCA2NDU5MzhlMGViNTJiMjUwNmJiYWM3NTlkZGViODc0OThhYzU2MjFhIGxlZ2FjeS10cnVuaworNjA2ODUgMjQ5MDZiNzkyNTQyNDM3ZWYwMGY2YTMxN2FhOWQ5ZDhkMDMyOWY0NyBweTNrCis2MDY4NiBhZWJkOWM0ZDE5ZWRmYzFkNDkxMGY0YzQ1NzdjYTk3ZGNmZDkyZmI2IHB5M2sKKzYwNjg3IDAxNTllNjJiOTdjNTVjNjA0OTdmZjEzNmI0YTQ3MzI5ODFhNDFlZDQgbGVnYWN5LXRydW5rCis2MDY4OSBhODIxNTdmNTM0YTdlMjk5NDU1MDQ5Y2Q0NjJhZWMyMTU0NmNhMmY4IGxlZ2FjeS10cnVuaworNjA2OTAgYTJiZjJhNTk0MDRhOTBlZjYzYTRjOTJiNWVhZmI5MzI5Y2Q5Yzc0ZCBweTNrCis2MDY5MSA0Y2QxZDA0NzRhMTM0ZTVhODAwM2M1ZjI5MzkzZDY2OGQ4MzVlNTM3IGxlZ2FjeS10cnVuaworNjA2OTUgODM4MjFlMGYzOTViNGQ3YzUxZGY1NDEwMTZlNTFjMGQyYjlkYjNkMSBsZWdhY3ktdHJ1bmsKKzYwNjk2IDMyOWM2YjJlMTEwNTE3OTRiYWU4NmNjM2I1MDljMjk1MjI3NzY2MzQgbGVnYWN5LXRydW5rCis2MDY5OCBiYzYyODU0ZWU5YzIxMTQ4OWMzYjhkODVlN2QzMzAxNDc5YjEzYmQzIHB5M2sKKzYwNjk5IDYyNjBkYjIyZmY3NTJmNDVjNDhjMGI4ZTdjMGNmZTRiNmE4MmQyM2EgcHkzaworNjA3MDAgNTg1YWVhOTA0ZjBkYjRkZGE4MjZhNzMxNjMzYTU1NTQxNWQyY2ExOCB0cnVuay1tYXRoCis2MDcwMSA4NzI4ZjgxNmNhNzUyMDNlNDQ5YmVhNTNiOWY4YjA0NGNlOTk2MGI3IGxlZ2FjeS10cnVuaworNjA3MDIgODY4OWI2NzI2NWJmYmYzNmYyNjUxYzc5NDU0MWJjMzYzMjJkMjVjZiBsZWdhY3ktdHJ1bmsKKzYwNzAzIDYxZWJhODMzMmMxNDVlMDI1Y2NlZGMyMGE2ZjRkODEzYTBmNWU5ZjMgbGVnYWN5LXRydW5rCis2MDcwNCA3NDUyODBkNzE0MjU1Y2VjNDcwOTQ3ZmM5YmExOTliZjdkNTdiNzU3IGxlZ2FjeS10cnVuaworNjA3MDcgODY5MDZhNWNlY2E2MzQ4ODI1NjYyYzRkMzlmZjAwYzg3NDU4YjRjMiBsZWdhY3ktdHJ1bmsKKzYwNzA4IDJkNmY2NDBmNzA4MTM5YzgxMGRkNDQwYWQ4ZGU3MTRiZWVjODMyYjUgcHkzaworNjA3MDkgODUzYzczYjAyOWUzZTI5ZTc2ODU1MDI1Y2FlZTEwMzNlYjVmNzQxNSBsZWdhY3ktdHJ1bmsKKzYwNzEwIDdmNGNlZjA0MTg2ZjFjYmJmNWMxMzQwNjI3NTVjZmZkNjBkY2JjYTEgbGVnYWN5LXRydW5rCis2MDcxMiA0YWUwMzk3ZWYxYzVmMTRkOWM0MjdlZWQ1N2I5ZjA2MDE2ZGZjYzY2IGxlZ2FjeS10cnVuaworNjA3MTMgNmViZTg5MzI4YjVlNzNlOTYyMWRlMjFjNzRiN2ZhOWE5ZTU5NjEzZCBsZWdhY3ktdHJ1bmsKKzYwNzE0IDFkYzcxZjA4ZWE3YzdjOGI5ZGYwODA1NDQ2NTI3ZDg2ODJkYTU3YzIgcHkzaworNjA3MTUgZmI1NTFjOTM4YTU5OGU5M2U0MTQyNDI4MzFiNDFkYjAyODFkMTI2ZCBsZWdhY3ktdHJ1bmsKKzYwNzE2IDAxM2U2NmNiMzZjMGZlNWIyYWI0NGRhNzJiOWMwYjkwYzA0NjM0ZGQgbGVnYWN5LXRydW5rCis2MDcxNyBmZDc3ODlhMWJmY2RhMmE2NWRkMzQyNDJjMjlmZTMwZmRhNGRiNThlIGxlZ2FjeS10cnVuaworNjA3MTggZjhlZTA2YTUxYzBiMmYyMDM0ZGVlNjM2MDQ2OTFiZjUyNGJlNGE0YiBsZWdhY3ktdHJ1bmsKKzYwNzE5IGM3ZjlmOWZkY2Y4MjcxYzMxMjExMjUyMzMxOTQ3M2Q3MzJhZDRlZGQgbGVnYWN5LXRydW5rCis2MDcyMCBhOGNhOWUwNjVkOWRlZTE1ZTk1ZDM0MWE3N2U5OWViOGI5ODZkZTE1IHB5M2sKKzYwNzIxIGE1MGMxZmI3ZDkyMGE4MWIxOWFhZDg3ZTBmMDJiMjVkMzI0ZDNlMWUgbGVnYWN5LXRydW5rCis2MDcyMiA5ZjFhMmM5OTI1NWZmNDFjMTEyZjQ3ODVlNjM4ZGEzY2MxYTc4MjUyIGxlZ2FjeS10cnVuaworNjA3MjMgMWRjNWNhMTE0NDhjZDA3MzA4N2M5Zjc2NTIzMWI3NmZhZmRjZWU4ZCBsZWdhY3ktdHJ1bmsKKzYwNzI0IGRjNTBkZWU3ZjhlNTJlMzFmZmQwM2ViZGM2NzcwMTZjYjZkZDY5NDcgdHJ1bmstbWF0aAorNjA3MjUgZTY3MDUwZDYyYWRmYTQ2ZWRhZWFiZjYwZDNiMTlmYzIxMWIwNWY1NiBweTNrCis2MDcyNiAzZTVhNzkwZTBjZDY1ZDllNzhhNThiYzA4Y2JmMzZjOTE4OGYyZWRlIHRydW5rLW1hdGgKKzYwNzI3IGVlZWYzOWE2ZjRkZDk5NWFmNmIzMzBhNzI0NDljZGY5NTY3NWYxYTQgcmVsZWFzZTI1LW1haW50Cis2MDcyOCA0YWZiY2RlMzQzZWRiYzNkMjgxYTk0MmQzODVjMzMxN2E0NDMzYjJjIHJlbGVhc2UyNS1tYWludAorNjA3MjkgNDU2NWM2OTQyMGI4Y2IzNGE5ZjEzOWU0ZTQwMzEzYjRmY2Y0YTZkMiBweTNrCis2MDczMCA3OTA1NTRhZTJiMDRhY2IzMGFkYzcyNjcxMGIwN2I5MWQ3MGRjMGZhIHJlbGVhc2UyNS1tYWludAorNjA3MzEgYzBhYTZkOGY1Y2RiNDIwZTI4OGUyN2M2NjlmODc5MWU2N2QxMWU1NyBsZWdhY3ktdHJ1bmsKKzYwNzMyIGMyZmMzMThjNGZhMzMzZDZlODBiNWM3YjRmODA3NDliOTRhODI1ZDIgcHkzaworNjA3MzMgY2EwODUzNjIyZjFhMWY5YjlhYzE5MWI4ZTIxNGQ4Yjc5MTQ0NGRiZiBsZWdhY3ktdHJ1bmsKKzYwNzM0IGY4NWI2M2Y1NjcwNjA0MThhNzk3YjUzNWNkYmE1YzI5NjFkZDZkYzcgbGVnYWN5LXRydW5rCis2MDczNSA4MDhmODRjNTY2ZjBlZGFkNmFiYjY5NzQ1OWUyNzhjM2ZkZDBlMmFkIGxlZ2FjeS10cnVuaworNjA3MzYgODViNjhkN2Q2ZjQxMWVjY2VjYWIxZmUyNDhjYmM5ZjIzZGFmZWIwYSBweTNrCis2MDczNyBhMzlmYjg5OGJlYjFhZDNkYTNmNjExMTJhY2ZmOTRjN2RlMzlmZTgwIGxlZ2FjeS10cnVuaworNjA3MzggOTJiZDIxZTZhODJjNGQyYzc0ZjViMmNlZTUxMmRiYWQxMWE2OGJiMyBsZWdhY3ktdHJ1bmsKKzYwNzM5IDUwNzYyYjE5NGEwMGFkNmIxNWFhMWQ2NzVkYTFjZWU1NWU2NzBlYTUgbGVnYWN5LXRydW5rCis2MDc0MCBlZWI3MmNmMzdhZWI0Y2I0ODE1NmU0ZDFjYzRmZGZiNGIxMWY1ZmQ5IGxlZ2FjeS10cnVuaworNjA3NDEgNGNhNzA2NjNhNzlkMDlhN2Y1MDhkMGE4ODFiNDA1MjIyZWMzMzM0MCBsZWdhY3ktdHJ1bmsKKzYwNzQyIGYwZThiNTQxZjExMzIxNTg0ZjFlNGY2MjE5NTg0ZWQ5MzVhN2E1MDkgdHJ1bmstbWF0aAorNjA3NDMgMjc1ZWQ4NTkzZWM2MWQxNjBmZjZhZWQyMmQ1OWNiY2UxM2MyZmU2MiBsZWdhY3ktdHJ1bmsKKzYwNzQ0IGJhMTdiMjFhYjkzZTY2NDc4NjlmNmE4ZWU3MDU1NTVhY2U0MjM0NGQgcmVsZWFzZTI1LW1haW50Cis2MDc0NSA3ODlhYTY3ZGNlNmQ4MmIyMWZiZjY3ZWQ1NzM5MDBhZTg3MDcyMDMyIGxlZ2FjeS10cnVuaworNjA3NDYgNWY1YjQ2NDVkOTEzMmI0YmE5OGU2OGVkYmQ0YWI4NmNhN2I2MGM0MyBweTNrCis2MDc0NyA4ZWI4ZTlhMzI2MGQ2ZWU5ZDBiYmQ1YmMwYzYyNmY4MjkzNmFlNTk0IGxlZ2FjeS10cnVuaworNjA3NDggYWU1NWU3MTRkNzQ0ZDJhMDI2NTNhMGQxNjJhODc3NDBmNTAxOTdjNSByZWxlYXNlMjUtbWFpbnQKKzYwNzQ5IGE0N2Y1ZmZjMDgyMzUzN2Y3MjVhNTI4OTdkZTllMmYyOTBhZjJiNmYgbGVnYWN5LXRydW5rCis2MDc1MCAyN2Y4ODU5N2QwMmI4YzExMThlNTA1YjY5MDE1OTkzZmJkZWQzZDYzIHB5M2sKKzYwNzUxIGIxY2I2YjQ0Yjc5ODczMzM3NmRiYTg5Mjk1ODExZTAwNmE2ZmI2MDQgcHkzaworNjA3NTIgZDY3M2QwMDNiNmNhODFlMTRkNzY2ZTY3OGVmNjk5N2IzODIyYzVmMyBsZWdhY3ktdHJ1bmsKKzYwNzUzIDk1YzAwMDI2NTQwMDkwNzA1NzU2MjQxNGMyYWQ1NDllYmRlZDI5YjYgcHkzaworNjA3NTQgZDMxOWY0MGNkMDAwZmI4NGVlNDg3NTc5OGNiYTYxMmIzOTU4NzgxOSBsZWdhY3ktdHJ1bmsKKzYwNzU1IDhmOGFkZWM5M2NmMmNiY2Q2ZGNkMDJjNTk1MzYxZmI0MTQ0MWY2YWUgbGVnYWN5LXRydW5rCis2MDc1NiBmMTIwNTEyMWU4NDhhNjIzM2NkOGRmNDU0ODc3N2MzNmM5ZmU0YzU3IHB5M2sKKzYwNzU4IGNlZWUwOTgxZjE0MWQ0MDIxY2M1NTMyYTc3MTg4Zjk3NzJkMTM4MTEgbGVnYWN5LXRydW5rCis2MDc2MSAxMTRkYzIxNTgzNjlkODc2MDAyZTNkOWVkZDk1YjdlYmJlYjFjNDYwIHB5M2sKKzYwNzYyIGM1MjA1NTg3YjJhYmMwNjdmN2YyODk1YjNlZTAwMmQ0ZTEzZjZkZGMgbGVnYWN5LXRydW5rCis2MDc2MyBhZTllY2VkYjRmOTFjNjM4ZDUxNmI4NTlhOGM1MmQ5ZTQyNzI4M2Q4IHB5M2sKKzYwNzY0IDE4Yzc2YWY0ZjM2NDg4NTQ1NzU2NWMxYWEyNTY1MTY2MzNhMTQ2YzIgcmVsZWFzZTI1LW1haW50Cis2MDc2NSA2ZWI2NDJlMGFkZDgwY2Q1ZjdhODc2NjBkMzg2MmE1NzVlMGFlYjE5IGxlZ2FjeS10cnVuaworNjA3NjYgN2VkZjcyMjViMDVmOGIyYjU3NjE3YmJlYmQ1MTM2ZWE5Nzk0ZjE1NiByZWxlYXNlMjUtbWFpbnQKKzYwNzY3IGJlZWEzNWIwZWQ1MGFkNWExZjU1OTYwY2U1MGIyZDlmODA3MmQ3Y2YgbGVnYWN5LXRydW5rCis2MDc2OCBiMGYzODBhOGI0NDdiNGIzZmZhNGJkNWY1ZDIzNGY3ZTYxMzQzNDI0IGxlZ2FjeS10cnVuaworNjA3NjkgZjkwM2E2NDNhODhiMWI1MWE0NjgzNzM4NGY5NDk3OTRmMTFkN2M4NyBweTNrCis2MDc3MCA1ZjJlYTk2NWY4NTNlY2UxODgwYmUwNDg5ZmYzZjg5OTJjODUwYjNkIHJlbGVhc2UyNS1tYWludAorNjA3NzEgMzBiNTZiZWJkZTU0YWRjOWQ3OGNhOTUzMjBiYWJkYTVhZWMyZDNlOCBsZWdhY3ktdHJ1bmsKKzYwNzcyIDczNzIzMDhlYjYyZjlmNjRkMGQ1YWFjZjU4M2IwMGY4MTFlNzM3OGEgbGVnYWN5LXRydW5rCis2MDc3MyAzMzEyMmZmODM0MDUxNThlYmY2YjhlYzE3YWNhOTdkZmM5ZGEwZWNmIGxlZ2FjeS10cnVuaworNjA3NzQgN2QyZmJiNGU1NzY4NmE0ZmU4YjczN2IyOGVmMTdiODM2YWEzYmFkZCBweTNrCis2MDc3NSA2MDhiZDEwMTRmYmVhNmZjZDNkZjlmMTZjNDFjYjFkMjJiM2MwNWIwIHRydW5rLW1hdGgKKzYwNzc2IDU4NGZjMTVkNDdhYzJhNzBhZGI2YmI4OTU2MTIyODk2MTJiZmRjNzkgcmVsZWFzZTI1LW1haW50Cis2MDc3NyA0NDBlNzE1YmIzZDJlZGFjNjBmMzVjMDk0OGE1MzNmYzNhNWJlMWFkIHRydW5rLW1hdGgKKzYwNzc4IGQ2ZWY5Y2I1NDNhZjVhODE3YmEwNDNjYWJjNTllMTMyNDUyM2IwNzIgcmVsZWFzZTI1LW1haW50Cis2MDc3OSA2ODVjZWUxNDEwZjhlMzQzZjg5MjhkZDk1MTAwM2ViOTVmYTllMGQ1IHJlbGVhc2UyNS1tYWludAorNjA3ODAgZjhmYjI3MTA2ZWNjMDE4NGYyYjZlNTYyYWE5MjdkNmI1ZjU0ZDAzZSByZWxlYXNlMjUtbWFpbnQKKzYwNzgxIDA4M2JmNmUwYWU1MDUxY2I1NWQ2YmQ3NDJjOGQzNGJmYjE3ODA0YTEgcmVsZWFzZTI1LW1haW50Cis2MDc4MiA3NmIyZGU5YzliMGI3ZTUyM2RhNWQzZTk3OWI3MzBkMzRjOTc1OTA5IHJlbGVhc2UyNS1tYWludAorNjA3ODMgMWUwZWUzMjRjNTEzNjY4NDM0Yzg4MjJjZDkyZWJkOGMxZWIwZTY2YiByZWxlYXNlMjUtbWFpbnQKKzYwNzg0IDU2Nzg2YTJkZWVjNDNiODczNmFjNWZlYjQ0ZDFiNzFjY2EzOGQ4NzAgcmVsZWFzZTI1LW1haW50Cis2MDc4NSBjN2U2ODNkNTJiM2IzZTExMjg4ZDIyM2RiNjJkNjZkNjE1OThlNmRiIGxlZ2FjeS10cnVuaworNjA3ODYgNGZjYjcwMDExNWQ4MDNhOWRiMzRjMzhmZTlkZTA4YzExYTU5YjE1ZiBsZWdhY3ktdHJ1bmsKKzYwNzg3IGU3MGY1NmNmNjk3MjJlMjAxNjkyYzUxMDQ3Y2U2ZDdhNmFiYmQ0ODYgcHkzaworNjA3ODggNjgwMTZhMDg4OGI5NjgzNzVjMGFjOWQyMTUzMDY2ODJkMTIxMmQ3MiB0cnVuay1tYXRoCis2MDc4OSAwOTVjYTlmZjBkOGVjYTljMzFjOTU2ODhiYjY3NTg0ZWE1ZmExZTI3IHRydW5rLW1hdGgKKzYwNzkwIGU1MThlMzlmNGE5ZTk1OTE3NmQ1YjBlMTAyYzE1YWY3MTQ5YTZhNzMgbGVnYWN5LXRydW5rCis2MDc5MSBlZjc1NDgxNzNlNjE3MWU5OTU0OTVjZDdiODMwNzkzNTgwMTFmZGUyIGxlZ2FjeS10cnVuaworNjA3OTIgMGRkMDVlZWQ2M2RlOTg2Nzc5Zjk1MjIwNDBlOTZjMGYwN2JiNWU1YSBsZWdhY3ktdHJ1bmsKKzYwNzkzIDhjYmUwYmQ5M2MyOGIwMTMyM2EzODkzMjFiMTI5NTkxMjBlZGVjYTEgcmVsZWFzZTI1LW1haW50Cis2MDc5NCAxOTBkNTUzNzNlNTA1N2QzYzhhNzRhNjRmMmFkNTkyM2ExZTY4MjJiIGxlZ2FjeS10cnVuaworNjA3OTUgNWFkOGFlNGQ3ODRlNmFjYjg2YmQ3ODVjMjA3ZDczM2VjNDZiNDI2MyBsZWdhY3ktdHJ1bmsKKzYwNzk2IGUyMmJjOGI5NjU0NzNmNTgxNzY5M2NkNTljYjkzNjY1NGRjYmFiYjMgcmVsZWFzZTI1LW1haW50Cis2MDc5NyA2NWFlNjhjN2FjYTM4MTYyYmEwNDg4ZTM2ZjhkYTA5OGJjMWNhMjFlIGxlZ2FjeS10cnVuaworNjA3OTggNWMxZGE3YjFiNGE2YjgyOGRiZWIwMDg1ZThjZTVmMTljYzZlMWUxZCBsZWdhY3ktdHJ1bmsKKzYwODAwIDBhOGFhZTU3NWNkZGRiZjNkMTMzZmNiNGVlZDkxMDgwZTNmZTQxZjMgcmVsZWFzZTI1LW1haW50Cis2MDgwMSAxZGMzMjJhZGJiNjc2NDAyZTUyZjUyNjhkNjZlMzRlMTA3NWY4ZTZhIHJlbGVhc2UyNS1tYWludAorNjA4MDIgODllYzQyYjI5ODYzMGU4OGIxYjk2OGI1MzMwN2I5YzA1NDY1MTRlNCBweTNrCis2MDgwMyAxNjdhOWZjODI4NDQ5MWNiNWNlYmUxMjVhMWQ5OWEyYTFjZWZkNDM2IHB5M2sKKzYwODA0IDgzZDJjNzA0NDNmYjcyYjJkNjA3MGVjYTQ0NDQ1MTI2Njg0ZWNmN2EgcHkzaworNjA4MDEgYTAzMzYxNzc5MmQxOWRlYzRiMWRkMGE2NzlkNzU0YTI4MTUyMjMzZSByZWxlYXNlMjUtbWFpbnQKKzYwODA2IGYxOTlkZTM4YWQwMTAxMzc3YWE0MGZhODI3MjIyZDAwOTAxYmVjN2MgcHkzaworNjA4MDEgOTU3MDIwZWQzYWZhZTllZTQ2NzVlMzQ4NWJhNjFjN2MxYmRmZGEzOSByZWxlYXNlMjUtbWFpbnQKKzYwODAxIDcyMWE1OTEwZmJmMGQ5OTBhNGNiMjM1YTg4NjI5OTk5ZTNhZmQwYjAgcmVsZWFzZTI1LW1haW50Cis2MDgwOSAxY2ViMmE2YzYwZWVhZTlkMTU4YjVkNGI2YzQ2NjdjNzNiOWQwMWQzIHB5M2sKKzYwODEwIDJkOWVjYTBiNDZmZDNmMDhiYmJkZGViNDQ0YWZmZmQ4MjBmNmMyZTMgbGVnYWN5LXRydW5rCis2MDgxMSAyMTgzNmUwYjllYjAzMTk3MWQ2ZGFkZmQwMWU5YWZhZWI4MjJjMWY3IGxlZ2FjeS10cnVuaworNjA4MTQgNzQ2YThlMWE3ODVhNTkwNWY4MDNjYmE3MjU5MjE4MzRhOTBkY2M1ZiBsZWdhY3ktdHJ1bmsKKzYwODE2IGUxOGNiMjFmNWY1ZmYwNzRjNGMyYWY0NjM3ZjYwYzkwM2I1NjU2MzYgdHJ1bmstbWF0aAorNjA4MTkgNDFkYzM2ODY4ODkwOGMzZjBkMTM5MjM3MGJjNjU5Yjg4ODE3OWQ2NSB0cnVuay1tYXRoCis2MDgyMiBlZWM2N2FmNGQ3ZGZmMTE1YjhkZGU3MWVmMjUxMTg2OGI0ZmFmNGE4IGxlZ2FjeS10cnVuaworNjA4MjQgMTBiMjYzYTIwMmNhZDM3ODYzZjcxMDczNzE4MDczNDU1YTA3NmE0NiB0cnVuay1tYXRoCis2MDgyNSBjZjVhNWQ3MzJlM2NjYjI5MjhiZjllYjJhYWIwY2VjNzAwNjBjMmY0IHRydW5rLW1hdGgKKzYwODI2IGY0ODM3NGI4YzFjM2Q4ZDM1NjFhMzliMTJmNTRiMmNjOTRlYmMzMDggdHJ1bmstbWF0aAorNjA4MjcgYTIzNTY3M2I5ZjhlYTI0YmE4MTc2MjYwNGEzZDRkMjBmOTRmYWE5ZSBsZWdhY3ktdHJ1bmsKKzYwODI4IDg5MWZiNWMzYmMxODJhMzE3NDVlNmNiOGZiYjFiNjdmNTAyNTRmYWMgdHJ1bmstbWF0aAorNjA4MjkgYjJmM2ZkOWE0YzY1NzE0OGQyMmQ2YWMwZjQ1ZjU3MDc2YjRjMTg1MyB0cnVuay1tYXRoCis2MDgzMCBhOTc2ODliM2U3NDI1ZTdkMzhlMTM5ZTZmYzA5ZmRlNjc3YWM0NDk5IGxlZ2FjeS10cnVuaworNjA4MzEgYjI3ZGUyOWEyMzI3YTYyMDg3NjlmZTFmMmVmY2IwN2VjNzU1OWUwNyB0cnVuay1tYXRoCis2MDgzMiAzMzIyMWFkYzBjMjA2ZTMyZmYxNDFhYTI4NTk5ZTIwNzVkMjU4ZDAwIHRydW5rLW1hdGgKKzYwODMzIDRiNDMyMTQ2MWE5ZjAyODdjYTdiZGMwMGU1NGVhYmMwM2UzMzViOGYgdHJ1bmstbWF0aAorNjA4MzQgYTU3MzkyNWM5MWU0MmVhMGNhN2I3YTFhYTZiNjE4MmE4MDFkYmQ5OSB0cnVuay1tYXRoCis2MDgzNSAzYTU1YzBmZDgyMmZiMzA1YTljOTgxOTM3ZjBiNDQ0ZmNiNGRiZmFlIGxlZ2FjeS10cnVuaworNjA4MzYgN2EzNTViNmIyMWFjOGQ2NGE2YzE1NzNjNDc2NWY5NGI2YzNhYzE4MCB0cnVuay1tYXRoCis2MDgzNyBkZjUxYmFkODY3MTAwNTQ2YWMxNzAyM2NmYjI4YjE1MmE5YjJkNDJhIGxlZ2FjeS10cnVuaworNjA4MzggNDUwNGRmY2MxOTI0ZGQ1ZjMwM2UyMmI1ZDUyZmY2MDk1YTNmMDFjNiByZWxlYXNlMjUtbWFpbnQKKzYwODM5IDNjNGQ1OTNlMTUzODY1YjdjZjZlZGJmMzZjYzY5ODNkZDZiYjQ2MjggcmVsZWFzZTI1LW1haW50Cis2MDg0MCA5MTVmZGFjZjcwMmRhM2FiNGUxYWY1NjliMmM5MWMzOWQ1ZjY4YWRiIGxlZ2FjeS10cnVuaworNjA4NDEgNTU3MjM2ZDc1MmUyZDk3OWVlMmZlMjJjZDliOGYzM2JjMGYyOTZjYSBsZWdhY3ktdHJ1bmsKKzYwODQyIDBlMmFhYTdiOWIxZmM5YmI5ZTVkOWFiYTVkYWJhYmNhMjExNjQzMjggbGVnYWN5LXRydW5rCis2MDg0MyBkOGYxMmJhZTM3OGFkMDdlNTk5MDM1MThlYzgxZGQ3ZTcyNmM2Y2E1IGxlZ2FjeS10cnVuaworNjA4NDQgMTY2ZTNiYTdkZTI0Mzc3NWVkODk1MTg4M2RiNWFlMGNiMTUyMzJhNSBsZWdhY3ktdHJ1bmsKKzYwODQ1IGM0NDc1MmQ5MGZkMmNjZTQwZDliNTZkZDJmNGZiZTE4YTI1ZDU0NzUgbGVnYWN5LXRydW5rCis2MDg1MCA2MmRmMWUzMzk4MzJiNmY2OGY0MjEzZDg0Nzk4OGM0NDJjYWM3MTkzIGxlZ2FjeS10cnVuaworNjA4NTEgNzExMzliNjkyNDM5YmRlZDgxODJiMzg2ZWRkMDEyZDI2NWRiZDFjNiBsZWdhY3ktdHJ1bmsKKzYwODUyIDlhY2ViOTA1NGIzZjlmZjJhNzA5OWQ2MjIyMTBhOTBmNWMxNWY1YzMgdHJ1bmstbWF0aAorNjA4NTMgN2M0YzQ2MzQyMTM3M2I1MmU0ZTc1NzVlZjE2ZjU3OTQwMDI4ZDBiNiBweTNrCis2MDg1NCBkMzc4NTlmMjllNTExYTEyYzQ3Y2NjODEwNTkwMzA4MTY1Yzc3ZjY1IHRydW5rLW1hdGgKKzYwODU1IDhjNjhkYjg2ZmY4N2E0MTNiYmRhZDBkNTY1NWRmZDYyZGQwYjEwYjUgbGVnYWN5LXRydW5rCis2MDg1NiAxYTg5ZTkxMzMzNzM5NTA3ZTI2ZTk2ZGFhYWJlMGM1ODYzMzhiMjA2IHRydW5rLW1hdGgKKzYwODU3IDMxOGNhNmJjODlhM2Q1ZGYzYzZkZjVmYTdkOGZiNTc4ODlkMjg5NWMgdHJ1bmstbWF0aAorNjA4NjAgZjM3OGVkZDIxZGYyNmY2MjI5MzM3ZTEwMDg2YTRkZGM0MzdkMzFmNCBsZWdhY3ktdHJ1bmsKKzYwODYxIGFjMDk1Yjc3NGUxOTNiZjRmODc5YjU2NmIxMjg0YWM4YjZmNWIyNTkgdHJ1bmstbWF0aAorNjA4NzEgMjcwZmNkMmU5NzgyNjhhNDQzMjg2MzQzYjRhZWY2ZmM0MTFmMTdlYiBsZWdhY3ktdHJ1bmsKKzYwODcyIDY1NTA2NTlkYmM5ZGI2NmUwNTk4ZmNmZDJlZWE4Mjc0ODdkM2NlZTYgbGVnYWN5LXRydW5rCis2MDg3MyA2MjEyMzY3MzkwZTMyNGFjNzFiNzE5YTg5NzQ5YmM4ZjhjOGI0M2ZhIGxlZ2FjeS10cnVuaworNjA4NzQgMTg3MmJkNmNmNGI0NWI1OGFkYTllMjk4ZDM5YmMzZmE4ODI5YTUyNiBweTNrCis2MDg3NSAxMmZmMTQ2ZjU5YTcwNzFhZDhkMDg1NzUzNzFlYjdhMWUxYjUyM2Y0IHRydW5rLW1hdGgKKzYwODc2IDkzYjYxNTc0MTA3NDBjODNiNmI4MjE0ODEzZTQwZTA0MWUwYzVmYjkgbGVnYWN5LXRydW5rCis2MDg3NyAwOGNiNWFiZmI1YjZhMjRiMThkZjJmMzI2Y2VjMTQxOTliYmMzNWJiIGxlZ2FjeS10cnVuaworNjA4NzggY2MwMjMyZGUwNjZjMzNkZTY1OTJhNWI1MDczODJhMTE3NzZiNWMwMCBsZWdhY3ktdHJ1bmsKKzYwODc5IGI3MjMxYmY2YmZiNzk1OWUyYzdhZGQ5MjM2ODQzNDE2OTdiODBmYTEgbGVnYWN5LXRydW5rCis2MDg4MCA3YWY5NTU4NDM5Mjk2MjlmNmNmMzlhMDcwY2Q5OGRjNTJiZTM2YjM3IHB5M2sKKzYwODgxIDIxZWIxZTZlZGFmYWYzOWU3MTQzOTBhM2UyYzdjYjdlMzM1MjczMmYgcHkzaworNjA4ODIgOWNjN2E4NjczN2M5NjUyZmYzYTUzMTg2NzIwZWNiMGY0YjllNzA2MyBsZWdhY3ktdHJ1bmsKKzYwODgzIDNkMmZmMDE0NjU3NDkwY2IwZDFiYWQ3NWM1OGI0ZTc1OGUyN2FhZjQgbGVnYWN5LXRydW5rCis2MDg4NCAxYmM5MjNhMTA3ZDk1NmU2OWU4YWNiMTc0MDFhNzZjZDBlMWE4YzYxIGxlZ2FjeS10cnVuaworNjA4ODUgMGU5MmVmNTdjMGQ0YTllZDNmMzI2Y2NlMzAzZjFiMTU0MTI0NDA0MCBsZWdhY3ktdHJ1bmsKKzYwODg2IGQ0YjBmMTI3Y2ZjYjFlOTBiNWEwNWY4YWIzMzAzNzJjOGYzM2JlNjIgdHJ1bmstbWF0aAorNjA4ODcgNTA4NzQxNTA1NGYxOTM3ODZlYmQ5YTNkNjljZDc1N2IzNDE1NWM1ZSBsZWdhY3ktdHJ1bmsKKzYwODkxIDJlZmNkN2Y2MDZmOGNkNTFiMmFkZjNiMjFjYTIzYWJiN2E2YWUxMjAgbGVnYWN5LXRydW5rCis2MDg5MiBiZjZiMjY4ZTc3ZjNjNDJmMGRjODUzNTVhOTM3ZWQ0NTc3ODljNGU3IHJlbGVhc2UyNS1tYWludAorNjA4OTMgM2ZjNTg2MzA3ZDY2OTNjNGQzZTI4YjU0NmVkNzQ2Y2RmZWI3MWZkMCBsZWdhY3ktdHJ1bmsKKzYwODk0IDhlY2U1Y2E0YTc4NWUwNzRkZjEzOWU5NzVmM2RjOTFlMGM3NThjZTAgcHkzaworNjA4OTUgNjA2ZDRjYzVjZGIzMGJiYWQxNmNkMzYxNTc1MjhiMzE4ZjhjYTI2YiBweTNrCis2MDg5NiAyN2JlYWUyMWE4MmM5Njk0M2Q2YWQxZGQ4NGU3ZDdlY2Y3M2EyN2ZiIHJlbGVhc2UyNS1tYWludAorNjA4OTcgYmM3MGU4Yjg5YTFjMDU2YzY0NTQxMTFlZTU5YWMwZTYxMmIwMjhlYiBweTNrCis2MDg5OCBiMGNjN2E2ZGExZTAzMmUyYmQ1MWMyZTEzNDQ3NTM2ZTg5YjViNzg3IHRydW5rLW1hdGgKKzYwODk5IDNlZTc3OTU5ODU3YWYzYWExZjg1YWZiY2E5NDljNGQ2NDFmNmI5NzkgbGVnYWN5LXRydW5rCis2MDkwMCAyOTVmMzdmYzYyMWI5NTNjMTdlYjVmNmI3OTAxOTQ1MDNiYTQ5MjY5IHB5M2sKKzYwOTAxIGY5ZjQ3OWNlNTBkMGJhNGRmMDdlZDNiOTg3YzQxNWVmOTc1NGQ4ZDAgbGVnYWN5LXRydW5rCis2MDkwMiAxNWQ1Nzc2ZjI3MDNjYzA4Nzg4YTVkODU1ZmRlNjYxMDVjYTFiNjE3IHB5M2sKKzYwOTAzIDllMjZjMGIyMzk4N2Y1ZjYzMWMzNDg2Njk2NWM3ZWRiYWVmMjRhOWUgcmVsZWFzZTI1LW1haW50Cis2MDkwNCBjNDc0YzkyN2UwMzYwZmUyMmU4ZWViYjUyYjY2NmY2YjkwYjI2ZDFlIHRydW5rLW1hdGgKKzYwOTA2IDI5YTY2ZTYyMWRiZTNmMmQ3OWMzNTMzNjI4NjAyNjk1MDNjZDg5MjkgcHkzaworNjA5MDcgMmZmNTFjNDEyZTU3N2I1NDVhOWJmZGUzMmEyYTQ2MWQxNzY5YzNmNCBsZWdhY3ktdHJ1bmsKKzYwOTA5IDBlYTIzNmE3MWQ3NzczYzZmMTIyODE5MmFmOTBlZjA0YzgxYjMwM2YgbGVnYWN5LXRydW5rCis2MDkxMCA1ZDcyNmRhMjFkNzU0MzEwNWZiZWZiNDdmOGJhY2M1ZmJjMDMwNTc4IGxlZ2FjeS10cnVuaworNjA5MTEgMDliMTY3YTQwMThiNmRhNjhlMjA4MTJlYmYxYTA1MzU3ZTBiNjIyNCByZWxlYXNlMjUtbWFpbnQKKzYwOTEyIDE1MWU3ZmZjN2U4OTM2OGEwNjBmNWFiMDdkMjQxYjllYTdkY2UyZjMgcmVsZWFzZTI1LW1haW50Cis2MDkxMyBkMTIxOTlkNjAyZDNjYTlhYjNkZjg5ZmQ0MGRiYWRlOTI4MTBmMzg1IHJlbGVhc2UyNS1tYWludAorNjA5MTQgMWQ1MDhiYmJkYjQ5YTJiMTE2MjllZTE4NmE2MzkyODI5MWIwODY5NCByZWxlYXNlMjUtbWFpbnQKKzYwOTE1IDlmNDI4YTVlNjJiMzE0MjdjYzVmYWYwN2I3NzRkMzlkMzQ0NmQ5MGQgcmVsZWFzZTI1LW1haW50Cis2MDkxNSA5NDU1MDE2NWQ2MjY4MjJhMGJkNTFkM2VkMmI2MDNkZjE4YWFlOTRkIHJlbGVhc2UyNS1tYWludAorNjA5MTggODBlY2Y2NzM0N2U5NTQxZjEzNjRhMjQ4OTQ1NGFiYWVmMzljN2MwZCBsZWdhY3ktdHJ1bmsKKzYwOTIwIDFjOTU4ZmU3MThlM2UwODkwMjIzYTA0MDgyOTQ3Nzc0YTEyMmJkNTEgbGliZmZpMy1icmFuY2gKKzYwOTIxIGI1MjY1YWNiZWU3NWNkZmU0OWYyZGE1Nzg3YzE2Y2M0OTQ0MmVhNzggbGVnYWN5LXRydW5rCis2MDkyMiBmNmVlZWEwMTljMWY0Y2U1ZDU3YjlmM2NiZGJkZGRkY2EwYzEzMzA1IGxpYmZmaTMtYnJhbmNoCis2MDkyMyA4YTE4N2Y1NjI5NTk0OTI1YzE1ZjQ0NzE1NDk3MjgyNTY0ZjgwYWI5IGxlZ2FjeS10cnVuaworNjA5MjQgZjgyYmQ5ZWY3ZDc4ODNjNDBjN2E4NDYyNjRkMzhlNzY2ZmYyMjgxNiBsZWdhY3ktdHJ1bmsKKzYwOTI1IDAwYmRkOTZkZGVkYTMxYTMyMzU3M2JiNzg2M2VjNmI0OWU0NDQ5MTkgbGVnYWN5LXRydW5rCis2MDkyNiA5MDQ4Y2U5ZTM3YzhlZmZiMTBiZmRiNzJlNWRjZTAyOWNkYTE0OGQ4IGxpYmZmaTMtYnJhbmNoCis2MDkyNyBmOWUyNTU2MmIyZDFiOTllM2ZhNDUwYTYzN2FlMTdhY2E3MDNkYTdmIGxlZ2FjeS10cnVuaworNjA5MjggZTliYzRmYmRhMTkxMjVkZTczMTY0YTJiMzk1NGU3ZTMyZGM5NTM2MSBsZWdhY3ktdHJ1bmsKKzYwOTI5IDU5NTNmNmZjMDIwNDQ5NTFjMDljOTBhMmJkY2IxYWY5N2YxNjg4ZWMgbGliZmZpMy1icmFuY2gKKzYwOTMwIDMzNzgyY2E5ZjZkY2QzMzMxYjM5NDdmN2RiNzc3M2ExNzc4ZGM3MjkgbGliZmZpMy1icmFuY2gKKzYwOTMxIDE4NGQxYjIyNzVkYzg3NmFiNWU5NWUzZTUyMDk0MjQ0OWVkNTZiZjQgcHkzaworNjA5MzIgN2QyNjIzMGJiNzYzMDJiMjZlZTFlMWNkOWU4OTYxNThkZGQ0ZGZmZiBsZWdhY3ktdHJ1bmsKKzYwOTMzIGVjMGE4NTdlODk2ZGRhYWExYmI5N2E4Nzk0YTU2NjFiOTllNmUwYTMgbGliZmZpMy1icmFuY2gKKzYwOTM0IDdiZTIwZjQ4ZmY2NzBmYTg2MDA4ZWZhNTA1NDU2N2QzNmM2MzBhODcgcHkzaworNjA5MzUgZDg5ZDRkZjk2N2U2MGM5Nzk5MTg4NmE0YTFlY2VjYTZmMDQ2MWVhNSBsaWJmZmkzLWJyYW5jaAorNjA5MzYgMzRhZmU2Y2IwMmExNThjMTc0ZTA1YmQ0Nzg1MjA5ZDVjMmQ3MWIzMyBsZWdhY3ktdHJ1bmsKKzYwOTM3IDkzMDA1M2M5ZGIxZGMzOTY1ZDgwNjUzMmZjYjYwZDY5MGE4YTg2NDEgcmVsZWFzZTI1LW1haW50Cis2MDkzOCBjNTlmZDgyYTU2YjAzMzNlZjYwMDg0Yjg2NGJmYWJlMGUxM2NmNjkyIGxlZ2FjeS10cnVuaworNjA5NDAgZTI4ODdkYzViZGI1YTZhYjgwZGFmOWNlZTRjNGZkYmVhZDQ0ZDQwYSBsaWJmZmkzLWJyYW5jaAorNjA5NDEgYTllMWZkYWY0MTNkOWZmMjZiMjhkZmQ1OTIzNDUwNzFjYzJiOThiZSBweTNrCis2MDk0MiAzY2M1N2ZkODdkMGUwZTk2MDlkOGVjM2M3YTkyMzZmM2JlOTQ2ZmFhIGxlZ2FjeS10cnVuaworNjA5NDMgMDJkNGY5OGE3ZTEzMmVlZWU3YjNkOGRlZTk1YTUwN2YyMjQ1MWNmYSBsaWJmZmkzLWJyYW5jaAorNjA5NDQgM2JiZjk2ZDk2NjM5MTI0NzI0YzJjOGYyNDRkMjdkNGYxOTI4NTNlZiBsaWJmZmkzLWJyYW5jaAorNjA5NDUgNmVhNmM4N2E3NTAxMjdlYWMwYTJiYzQ1YzVhM2E4NTg4ZmJkOGM2YyBsaWJmZmkzLWJyYW5jaAorNjA5NDYgOTJkYjY5ZGM4ZDRiMDY1OTc0MmRkZDI1ZTFkZjZhODk4ZWUzOTNiOCBsaWJmZmkzLWJyYW5jaAorNjA5NDcgOGVlZjU2ZTA5ODZjZjAxMjE1MmE0MWI4NzQ1OTcyYWFlMTY3Yjg2MCBsaWJmZmkzLWJyYW5jaAorNjA5NDggOThjM2Y5YTFkMzY2MzAwZjVjODQ1YmZlYzhmZTcyYjA0N2JhNjQzNCBsaWJmZmkzLWJyYW5jaAorNjA5NDkgODVjNjMwMzZjYTAxOTEyNWQxYjRiOGUwODI4YzdlMjBjMjUzNDc1ZCBsaWJmZmkzLWJyYW5jaAorNjA5NTAgZjBmOGIyMDAxNTE1ZTA1ZDkzNTljYTM4MGVlNmFjN2NhYTYxODdmYiBsaWJmZmkzLWJyYW5jaAorNjA5NTEgYTdmMzUwYjNlZDI0OTA2M2MzNmJmODAzMDdhZjFiY2QxYTJjYTYwYiBsaWJmZmkzLWJyYW5jaAorNjA5NTIgMWI0Y2ZhMDA2YmUxNTkwOTEwYzM3ZTI2ZWYwNDEzYTcwMTIyODNlYyBsaWJmZmkzLWJyYW5jaAorNjA5NTMgMzczMDllMzNjNDJjNDUyZGFmNjBmNDJmMzVmZTZhZDBiZGZiZThmZSByZWxlYXNlMjUtbWFpbnQKKzYwOTUzIDQ1NDY2ODEzZGVmNzdjYjJiYmY1NTQ4NWUwNzYyNGIxYzVmNzhlMGYgcmVsZWFzZTI1LW1haW50Cis2MDk1NSBiODg3ZGJhMmI1ZTFjMTQyODEwM2QyNTIzNzIzMjNjZWQwYjMzMzNhIGxlZ2FjeS10cnVuaworNjA5NTYgODUzYWY1YmJiNDk3YjIzMDM3MTY1ZjU1NDk1OWFhZWQ0NzJiNjI2OSBsZWdhY3ktdHJ1bmsKKzYwOTU3IGJjOWZkODRhZmRlY2NlYjNjOTZhY2UyOGI2N2FiNjJhMTc0NDQyM2YgbGVnYWN5LXRydW5rCis2MDk1OCBhYjM4ZDc3MWY1NmRhOTk2YWRmNDUzZTFjZjVlYWVjZjQwMzRmZWJiIGxlZ2FjeS10cnVuaworNjA5NTkgZDQ2NjI3NzMwYTJhMzAzZWVhOWYwZmRmZWZhYzdjNjhiZGU0YTdmOCBweTNrCis2MDk2MCA0MjdiNTRjN2VlMjUyZDY0NDYyNWFjMjhjNDBmZTZlNTY5Y2IzNjkzIGxpYmZmaTMtYnJhbmNoCis2MDk2MSA2ZDZhMjkzZmJhZjNiNTEwOGQ1ZjhkYzA3ZjNkZWRhNjgzYmUyN2I0IGxpYmZmaTMtYnJhbmNoCis2MDk2MiA0YTk1MjJmZDc1YTZlMmFiNTc2NWFjNmI4MjJkYWUyYzY5NjAxNTkzIGxlZ2FjeS10cnVuaworNjA5NjMgMDkxYjI3ODc2YTFiODY0ZTFmOTA0MDQ4MGIyOTBmMzYwZTNlZDI0MCBweTNrCis2MDk2NCA0MmIzYjExNzM5MWRjYjUyY2I2YmQxMDJiYmNlNGRiZGIwNzdlYWZjIHB5M2sKKzYwOTY1IDY3YTlkMzM4NTg1MTM4MGUwZGU5M2I3MzE4NTM0OWYyMDk0MTU4YzEgbGVnYWN5LXRydW5rCis2MDk2NiA3YzUxZTFkMTRjOGM1OWQ5YzYwNTZlYTAwMTNkMTgyYWM1ODY2NTIxIGxpYmZmaTMtYnJhbmNoCis2MDk2NyA2YTZjYTVlNTc5ZjY2ZTNlNzQwMDMxYzA2OTk3NWRkNGM5MDI0MTI1IGxpYmZmaTMtYnJhbmNoCis2MDk2OCAwNzllMjFmNTkzMTkzYWQ3ODNkZTViMTUwYmIzMjM0MTJmYTc5N2UzIGxlZ2FjeS10cnVuaworNjA5NjkgMTFhNzNmYmJmODZmMmRmMzk4MDU3OGJkNjQyNDM2ZmIzNTVhNDMwZSBsZWdhY3ktdHJ1bmsKKzYwOTcwIDhlYjU5ODMzMTIzMTU3MDg1YThiMzBhMjE0NGZkZGViNzdlMzBjNDYgbGVnYWN5LXRydW5rCis2MDk3MSAxYzcyYTczODIxMzM2YjFkNmQzM2ZhZGE0YWYwM2FkMWJlZTk0MGI0IHB5M2sKKzYwOTcyIDE0N2I0OGIzYmMyMzRlNjgwNjlmNWIzZWMxZTQ3YmFjM2M1YmVlNWUgbGVnYWN5LXRydW5rCis2MDk3MyA5MDAzNDdmNzAyNTg0YmI2MjczNTE2MTRjY2UyYmZlNjBiOWE2ZTI3IGxlZ2FjeS10cnVuaworNjA5NzQgY2E1ZjJmOTYwNjE3NGMzNjUxOTM2NDIxOWQxZmFkMDY1NThlNzVhMSBsZWdhY3ktdHJ1bmsKKzYwOTc1IDk2YTM0ZWVmODlhM2QxZGJmZTI0NTE0NTE4OGI4MDgwYWI5Y2M3N2UgbGVnYWN5LXRydW5rCis2MDk3NiBkZGE5MmEwOTdlOGM2ZjZkMjI2MGJmZWRlMjNkNWM0NTYyMDFkZGM5IGxlZ2FjeS10cnVuaworNjA5NzcgNWUwNzcyZWQyMGQxZDY4YTk1NjUwMjE1MmM2MGFiOTMyZmRkNDlkYSBweTNrCis2MDk3OCAzOTM4MjJmMmVmOTAxYzM2NTVkODRiMmJmODQwNWUzZWFiNGM4NWViIGxlZ2FjeS10cnVuaworNjA5NzkgZjFiNTBhYTVkNWFmNDgzYWEyNjNhYTk3ZGNhMWE5M2NlNzEzZWNlOCBweTNrCis2MDk4MCA3MzRmYzBhMTk2NTdkNWYwZjJhODRiYWQ5MTViMDUzMTY2Njk0ZTJiIGxlZ2FjeS10cnVuaworNjA5ODEgN2E4ZGUyYTdiMWE1NmJkZjIyMmZlNmYxNDY2MDczYTFlYjE0ZWU3YiBweTNrCis2MDk4MiA4Zjk5NGQ2OTc3NDc1NTBkMTI2YTVlZWYyYmE4N2I5YzY0MzFkODA3IGxlZ2FjeS10cnVuaworNjA5ODMgMzY1N2MyN2VhMmZkMmI5YTU3NDczZmVkNTkyNzNmNjJjYjM3OTZmMSBsZWdhY3ktdHJ1bmsKKzYwOTg0IDkzMGIyODAyYzAzN2I5MzU1NDllM2EzN2YwODA3MjI1ZjFiNjc5YjIgbGVnYWN5LXRydW5rCis2MDk4NSBkN2UyMzJlOWYxYTFlZTE1YzJiM2Y4NTkyZjdiN2M1MTI0OTZmYzI3IGxlZ2FjeS10cnVuaworNjA5ODcgMWIxOWE1NzE0NWE1YjJmNWE2NmY2YzM4NWU0YTQ3OGEwNzMwZjJmZSBsZWdhY3ktdHJ1bmsKKzYwOTg4IDk3NzEzOTU2YzFiMGRmM2FlZDc4OGFlMjE0ZThlODNjYzRiMDFhMjMgbGVnYWN5LXRydW5rCis2MDk4OSBiYTM1OWI2YzMzYzM4MTU2NDFlYTkxYjAyNzk2ZDVjZDU1MmQ3MDk5IGxlZ2FjeS10cnVuaworNjA5OTAgOWYwMzc4ODc2M2UwOWEwOTAxMzcwYzcyNWEzYjM1NzEwZjc0NWViNCBsZWdhY3ktdHJ1bmsKKzYwOTkxIDFjYzQ3ZTEyOWZmNDdmNGVhNmQ0ZDY0ZjJiZDU4MGJmZTY0YzhkZTggbGVnYWN5LXRydW5rCis2MDk5MiA1OGMzZjM0Mzk2NzA4YWRmMzQxN2NkZjZkYmQyZjc1NTg5NmI1ZWQ0IHB5M2sKKzYwOTkzIDJjNWQ5MTZiZDExYzlhOWUxMTQ2NWNiOTViN2RkMGMwMGM3M2M4MzIgcHkzaworNjA5OTQgNDI5ODVlYmJmYzQ1MzA5YjY5NDA0ZjQzMmUyY2FhZDgyOTc0ODk4NyBsZWdhY3ktdHJ1bmsKKzYwOTk1IGU4NGFkMmEyNThhNDY5NDk0MmY5MTQ3MWQ4Y2JiZmE0MTNkZWMwMjEgbGVnYWN5LXRydW5rCis2MDk5NiA5NzRjZmYzZTAwMjE2MjFhZTRhYjQ4Y2YwZWE3OWU5MGVjZmZmNmNmIHJlbGVhc2UyNS1tYWludAorNjA5OTcgMTMwZmJmYjE2MDM2YWY0Njg4MDEyZDZiZjViODk4YTQxNGY2MjBlMSByZWxlYXNlMjUtbWFpbnQKKzYwOTk4IDc0OGFmMGI4MzY3NGNjMWMxZmUwZmM1ZWZjOWQ5NWU5ZDFjNmI2ZDIgcmVsZWFzZTI1LW1haW50Cis2MDk5OSBlYzdmMDg3M2I2NjRkZjQ2MzZlZDMxYjdiZWRlMGUwMzFhMDA2NDhlIHJlbGVhc2UyNS1tYWludAorNjEwMDAgMWQ4NGJmNWY5NDc4NmE4NDZjMDgwMjhmOTliNmMzYjgyN2FjZjQ2MyBsZWdhY3ktdHJ1bmsKKzYxMDAxIDQ3YTU4Y2EzZTEwZWI3MDI3ZDBjYzk5NGUzYjFhZGQ2NTdmYjk0YmUgbGVnYWN5LXRydW5rCis2MTAwMiAzOTE1ZDVmNjUwZmE5ZGUwN2FiYjcxZDI2MTJjODYxYzEyYTZlNDZmIGxlZ2FjeS10cnVuaworNjEwMDMgN2RkMmMxNzQ2MjY3ZDJlY2UxNzkyODE1MzVhYjBmZWFhOWFkNjQyMCBweTNrCis2MTAwNCA2YmE1MzA4ZjdiYTQxNjViOGZlMjBkOTllZTliYjUzZTMwMjI2MjMwIGxlZ2FjeS10cnVuaworNjEwMDYgZWVjNGMxZTllOWNjODhmZWQ2MTIzOGNjZjRlM2ZlYjE2YWViNTY3MSBsZWdhY3ktdHJ1bmsKKzYxMDA3IDZhMTNmZWNhZjJkZmIyNmM0YjEwMDY1MTQwZWMxMDhiNGMwNzc2NzAgcmVsZWFzZTI1LW1haW50Cis2MTAwOCA0ZWI1YTY2N2M4ODJiNWE0ZTI3NDE4MDhlN2Y2YzA0MGY2ZjViYTY0IGxlZ2FjeS10cnVuaworNjEwMDkgODBlMGEyOTMwYzZkNTk4NWU1NDg0N2YyYWM0YjczMmUwZTQxYTM2MiByZWxlYXNlMjUtbWFpbnQKKzYxMDExIDI0MWNmODFhMDUwODc5N2ZjYzVkOWI1YjAxYWNjYzQ3ODhhYjM1M2EgbGVnYWN5LXRydW5rCis2MTAxMyA5ZjE4M2FlMzQ1OGJmYjhhOTMxNzNjM2Y0MjY3N2Y3OWM0ZDk2MmYyIGxlZ2FjeS10cnVuaworNjEwMTYgNDBkMjY5ZDZkYTljNTgzMDdjM2FhNDc3YTUyNDA4OTZhNzk1ZWQyMyByZWxlYXNlMjUtbWFpbnQKKzYxMDE3IGEwMTIxM2E1NDI1ZDFjNDA1MWVjYTJlZDc4OWRkNjQ0YjUzMjgzM2EgbGVnYWN5LXRydW5rCis2MTAxOCA2NjkzMDQzZDI3ZmQzMjk3Y2E5ZmQ5MWU5YzNmZThiNjJmN2ZmMzYxIGxlZ2FjeS10cnVuaworNjEwMTkgODEwYmQ2NzczODYzNmVjODU5YzZmNTAyOTMxN2Q2NzlmMTBiMDRmOSBsZWdhY3ktdHJ1bmsKKzYxMDIwIDE5ZDg1Mjk0MmRkZGQyMmMxMDlmYzY4NmY0OGQyZGIyMWFlNWVhY2YgbGVnYWN5LXRydW5rCis2MTAyMSA4NTMxZjg4YjU3OGUyMGE0Mjk3NmUzMzU2YWUxZWJmYjA3MDQ3OGRmIGxlZ2FjeS10cnVuaworNjEwMjQgMzA1NzhlMDRkMzVjZGMwYzg2MTVhODc3N2JmNjE0YzZiYjBjNThkMiBsZWdhY3ktdHJ1bmsKKzYxMDI1IDI3YmFiMzk4OWY2MzUzY2Q3MmIzZDdmM2UwMzJjMDg5NDM0Njk4ODcgbGVnYWN5LXRydW5rCis2MTAyNyA4MTNjMTQ2ODU4Zjc4ZTEyOGIxMTQxZjgxYjY0NTgwYzE2MjNlYjFlIGxlZ2FjeS10cnVuaworNjEwMjggYzEyNmJkOWI1MDViZjg2YjgxZWFiZTQ3OWNlZjZjYjIxMDdkMmJhZSBsZWdhY3ktdHJ1bmsKKzYxMDI5IDZhOTkyYjY2ODBiMWI3NjQ1NWNlMGUyMTEzY2U0MDM5YmQ4YTc0ZGIgbGVnYWN5LXRydW5rCis2MTAzMCAxYjBlYjc2ZWY3MmFiZDkwODJhMDk1MTRlODc5MTg3ZmNhYTg1Y2EwIHJlbGVhc2UyNS1tYWludAorNjEwMzIgOWIxMTVjNWU5MTE1MmIwNzIzZmZkZTk1YjliNTgxMmIxOGMwMmJhNSBsZWdhY3ktdHJ1bmsKKzYxMDMzIDk3YTE5NzJiNjcyZTdiNWI1MzVhYjAzZmVmODgyZjFmMWY4Mzc2NmQgbGVnYWN5LXRydW5rCis2MTAzNCAyMWE1ZTlhNTQ4M2E1MjI0MGI1MWI2MmJkZjkxYjU2NDEyZjM1YWMwIGxlZ2FjeS10cnVuaworNjEwMzUgN2VmYTRkMWJjZWQzOGMzMGM1Nzk5ZDU3MTI2ZmM0ZWJmNTgzMmFlNiBsZWdhY3ktdHJ1bmsKKzYxMDM2IDQ4NDg4ZmE1MDcyOWU0ZjBiYTAwNWE1ZTJiMzM2MDAzNzk2ODAyOGMgcHkzaworNjEwMzcgMDAyYTVhYzc5MmIxZTZhN2Y5OTY3Y2ExMDIzNGY4MmQ2MmQ5ZDY3NyBsZWdhY3ktdHJ1bmsKKzYxMDM4IGVhYThjMTkzOTEwOGUwMWQxNGRmZTAwMjdhZTViZjBkM2UzZmE3OTAgcHkzaworNjEwMzkgOGM3YmEwZWQ4NDQzYjUxMzcyZjljNzliZTlkM2Q1MmVkZDBkYTk2NiBsZWdhY3ktdHJ1bmsKKzYxMDQwIDE4ZmVkMTRiMDZiNjA2NjRmYzJmZDIwZmMzMTVhYmU2OWI0ZmFhNzcgbGVnYWN5LXRydW5rCis2MTA0MSBjMDNhZmY2ZDA3ZjUzYjEwNmM2MmM2Mjk1ZjkwY2U1YjU2YmUxODM3IGxlZ2FjeS10cnVuaworNjEwNDYgZDg5ZmUxZDJmYWRkODJhMGNjODM2MTI4YzFhOTAzNGQ0MGM5ODg0YiBsZWdhY3ktdHJ1bmsKKzYxMDQ4IGFkZTdhYzg4ZDJkMDllMjBlNjIxYjYyMTE5ZDhhNzFkMDZkNThlNTEgbGVnYWN5LXRydW5rCis2MTA0OSBhZjkyOGZmMGM1YzY5ZDFjNTgzYTFkNjllODMxNGMwYjhmN2Q0NTdiIGxlZ2FjeS10cnVuaworNjEwNTAgMWI2ZmI1Njk5NjM0NTc4NDBhZTk3ODM3ZjAzM2FjNDFhZDE4MDJjNyBweTNrCis2MTA1MSBiZjhlZTU5M2NiYWQwM2M3MjRlNWU0OTZhMGRlZGRmN2RjMzE1Yjc3IGxlZ2FjeS10cnVuaworNjEwNTIgNTVlZWZiNDNlZjZmM2FkMWEwMTE3N2VkYWQwMmMzMTY1NmY0NTc3NSBsZWdhY3ktdHJ1bmsKKzYxMDU0IGE3N2UxY2Y3ZWQyNTI2MmE5Y2YzNTM0N2ZkODZjMzAyNzM4Y2Q0NjAgbGVnYWN5LXRydW5rCis2MTA1NSBiMGZkZTkzNjYxY2U4NzUxZWRmYzZiYjM5Y2NmYzNhNGI1ZmQ3OGY2IHB5M2sKKzYxMDU2IDA5YzljZWVjZGQ1NmQwNGJmMjM3MTkxY2QxNDg2ZDQ3NmQ2OGMzYWIgcHkzaworNjEwNTcgNzEyOTM3MmY1MzNmNDFiMzc0MTUyNmFmODI2NDk5NWE4Yzg5NTRlOCBsZWdhY3ktdHJ1bmsKKzYxMDU4IGRjNWIwMTA3Mjk0YzBkYzRmN2Q2ODk1M2ZlNTI3MTExMDFkNWFjODkgbGVnYWN5LXRydW5rCis2MTA1OSBlNTdmZmEyYjVkMDdmMDEyNWQ2Yzc4OWY0YjUxNGRmOTU4ZmJmNmVhIGxlZ2FjeS10cnVuaworNjEwNjAgYjI5OGNiNDk3NWQyZGZkYzAxMGViZGVhMDhjN2MzZThmMGVjMjZhNCBsZWdhY3ktdHJ1bmsKKzYxMDYxIGZjZTVhZjVjZTE2YTZkNzBmMDEwNjU1OTlhZDNjYjZiYTgyMzQ1MWYgcHkzaworNjEwNjIgOGI1MmZmNDFlMGUyNzk2MzMwZGI0ZTZjM2RlMmJhODc5MGI0OTdlZCBweTNrCis2MTA2MyBmODhiZWJlZWI2NzNlOTg2MDg0ODBlZjE5Mjk2Yzc3MWZmNDM1ZDA2IGxlZ2FjeS10cnVuaworNjEwNjQgM2E2Y2E4OWVmNzZkNDc0MjVhZGQzZDQ5NTFkNGM5OTIzYWZhMTY2ZCBsZWdhY3ktdHJ1bmsKKzYxMDY1IDE3YzhlYzg4OWZmNDJiMGNmMjQyMWI1NWU1NTcxZjU5ZDJhMzc4YjMgbGVnYWN5LXRydW5rCis2MTA2NiBjNWU3N2UwZjJmMzJmZmFmNDJjNzVhNzRkZGNhMWU3NGYzZTAxMTcyIHB5M2sKKzYxMDY3IDE0NGU4NDY3MmVmOTM2ZDk3MDgwMTVmZDcyNTIzNDMzMmFhY2RmZTAgbGVnYWN5LXRydW5rCis2MTA2OSA0Mjg5YzQxMDQyNzkwMzZlZmI4NjJkMjI0OTIwODBjNjgzZGFmNDJmIGxlZ2FjeS10cnVuaworNjEwNzEgZjZkYzA4YWQ1NjRiMWM2OTZlNjdhM2ZiNDIzMGMzOWI2Yjg3Y2M5YyBsZWdhY3ktdHJ1bmsKKzYxMDcyIDRmNjM5YWY1OGExOTBjMDk4YjY2NWEzN2IxZGUwNWJiNDZkODkwZjMgbGVnYWN5LXRydW5rCis2MTA3MyBlODFlNDVmODAwMmU4YzA5YTNjZjEwNzEyNzZjYTA3NjJlMDM3N2Y0IGxlZ2FjeS10cnVuaworNjEwNzQgNDVmYzNlY2IzMDIzZWQ4MGM5NzU5MDE4YjJiOTJlZmU3YTEwMWQzZCBsZWdhY3ktdHJ1bmsKKzYxMDc1IDliMzgxZWQxZGIxNDMzMmU0MTRmOTc5NDIyNmIyMjU0YjY2YWE0ZjAgbGVnYWN5LXRydW5rCis2MTA3NiA2MjRhZTg3ZjFjOTYxZmQ5MWY1YTE1NWZiYTY4OWMzZDY0ZWZkMTI1IGxlZ2FjeS10cnVuaworNjEwNzcgMDg4ZGZjMGY3MWI0OTgwY2I4ZTI5NTMwNjVhMGVhNDc3Zjg5ODlkMCBsZWdhY3ktdHJ1bmsKKzYxMDc4IDRhZTQzMzE0Yjc0NjI4ZjlmOWNiZWM3MzdhN2VmOTQxNjY2YjMwYzQgbGVnYWN5LXRydW5rCis2MTA3OSBiZjFhYjNiZjc5OWM4NjM2ODM4OGMyOWE4Y2IxMmY0Yjc4ZGQ2OTQ2IGxlZ2FjeS10cnVuaworNjEwODAgY2FjZDdiYTExYjc3NThjMTg5Mjk2MDJmZjJlMGNmYjZiY2YzY2YzNyBsZWdhY3ktdHJ1bmsKKzYxMDgxIDJiMzY3MjUwYjBjZDMzNTkxN2IzMjAyNTRlZTk4ODUzNjM0YWNiZTMgbGVnYWN5LXRydW5rCis2MTA4MiBmZTczOTRiYzc5ZDYzZTIzNTIzOThmMTI0MDk0MDQ0MjE5OTZhYWZhIGxlZ2FjeS10cnVuaworNjEwODMgN2FmZWY4ZjQzZTRhNTJlMDgwMThkNmM5Y2MwMTQyMjg4MDM3MTAxNSBweTNrCis2MTA4NCBjNTdjYjJmOGMzNTA1MmM1NDY0NjI4ODBjNmE3OTMwZTVhMjI5OTExIGxlZ2FjeS10cnVuaworNjEwODUgZDEzMjNmY2YzYWExNzk1M2RjMDI0YzY1MmZiMjBiNmU3YzA5NDBkNCBweTNrCis2MTA4NiBmMzNmNjZhMjA4MmZiZjMyNmZmNzRlNjJmNGJmMjQ0ZTAwMTczMDk4IGxlZ2FjeS10cnVuaworNjEwODcgZmZkZDMxZjFjZDIwOTRkMjZiOGIwYzBhYjRmODZiNTUwOWU2NzM5MSBsZWdhY3ktdHJ1bmsKKzYxMDg4IGNhNDVlYjcxZjJkMmJhMzFlY2QyYWZiMmIyZmY1ZGViYmYxMzVlMGMgbGVnYWN5LXRydW5rCis2MTA4OSBlNDI1ZGRhNGY2MzAwNjBkZjZhZTgyYWFmZTk1MTYwMmQxNTMyNmMxIGxlZ2FjeS10cnVuaworNjEwOTAgZjJmMzNkYjU4OTIwMGJlYzNiZDNiNzk2OTI4MDkwNTRjN2UxMjkyZiBsZWdhY3ktdHJ1bmsKKzYxMDkxIDdkNzM0N2RkOTRlODc3ZDc2OTlkNjdkZTdjOTJlNWZkMmU2ZjRmYWIgbGVnYWN5LXRydW5rCis2MTA5MyBmNzg4NDE2NGYwODg5YmViNjEyMGMxZTI2NjZmYjUzYTY3ZTQ0NjdiIGxpYmZmaTMtYnJhbmNoCis2MTA5NCAyYzkzMTgzYjhhM2MyNjk0NDZjNTM0ZjA1YWJjMjk5NDk0NWU5MDJiIGxpYmZmaTMtYnJhbmNoCis2MTA5NSA2YzQ2MTIyNTVmNjA1MmMyYWFhNDljODE3ZDJhNzg2MDAyZjdjNjYwIGxpYmZmaTMtYnJhbmNoCis2MTA5NiBiNzhjM2E0MzcxZDUxMTEwYTM3NTQ2OGQ3MDRlNjBkMmI1MTY0OGUwIGxpYmZmaTMtYnJhbmNoCis2MTA5NyBkMTc2OTBjNTA3NjY2ODM4YzZjYjlmN2IzYTNjNjQyODA1MGE5YTIwIGxpYmZmaTMtYnJhbmNoCis2MTA5OCA2NTkyZTVhOTBjMmNkODRmMjEwZmQ5ZjY2ZGEyYTc0OGY0ODRiNTFlIGxlZ2FjeS10cnVuaworNjEwOTkgOGFhZjE0OTVkYTM5NTljZDg0NGNiNWE2ZGQxNmYzZTI5YTM2MzAxNCBsZWdhY3ktdHJ1bmsKKzYxMTAwIDNlNDM1YTIxMTM1Njk2OGQ3ZTQwZWIyMzFiOWU2YjVhNWViMTMzYTMgbGVnYWN5LXRydW5rCis2MTEwMSBkNDQzNGYwM2I5NzAyMmIyNzVmMDQ1NmJhMDM2NjJhZjAzYWU4NGRiIGxlZ2FjeS10cnVuaworNjExMDIgOTZkNWExNTczMTZlMzUxODA5Mjc3ZDgzZTQ2MjkzZmQ0ZTc4YjU4ZSBsZWdhY3ktdHJ1bmsKKzYxMTAzIDhjM2M1YjRlZWY1NTU3MTkzOTg1NmIzMzE3YTIwNjI1MTFiNjgxOWQgcHkzaworNjExMDQgOGRkMzBmZTExYTRiMzRkMTA3N2JlODA4ZjJlMGYxNGFkYjg0MzQ0YiBweTNrCis2MTEwNSAxMTg4ZWRlMTU3MzViOWI4Njk5MTBjYzQ2Zjg3ZDU3YzE5N2VjNmY1IGxlZ2FjeS10cnVuaworNjExMDYgY2MyMjA3NDVlNGU1OTNlNmMzNmI2ZjZkZjJmNzRhNTQwY2Q4MmUzZSBsZWdhY3ktdHJ1bmsKKzYxMTA3IDUwNGI0MzU3YmRkZDM4ZTczYTNjZWVhNjI2ZDI5OTAzMDA0MTJlMzMgbGVnYWN5LXRydW5rCis2MTEwOCAyZDJiMGUxNTVmMTk4ZmJjNmY2MDdmMWM4MjkzYjhlOGE2MDk4NTY3IGxlZ2FjeS10cnVuaworNjExMDkgYmYzZmEzN2ZlNzljZDAzOGMyZWQzZmI2NDJjYjU2NDQ2Y2M3OTQ5OSBsZWdhY3ktdHJ1bmsKKzYxMTEwIDBjYjQ4MTk1NjQ1MmZjNWY1YzEwMWVlM2YyNDA4Yzk5NjU1YWFhOGQgcHkzaworNjExMTEgMjQyNTQ0MzBlODlhMGM4ZTA1ZDc1ZDk4ZjgwZDZiZTMyNmJhNmU2NiB0cnVuay1tYXRoCis2MTExMiAwMTI4Y2U3NzM1NGY2MDUyNmRiOGRjODdlZTUwNzY5MzRiM2JhNGMyIHB5M2sKKzYxMTEzIDcxMGQ1MjViMDU0YzgxZWIyY2U3YjYyZWFjNDlhMjE2ZjRkZjA4OGYgbGVnYWN5LXRydW5rCis2MTExNCBjMzhkY2I3ZDk0YTZkYTliZGZjYWI4ZjQ3Zjk0M2U1MzcyOGQyNWY1IHB5M2sKKzYxMTE1IGU0ZmZlNjQ5OTU0ODFhOTcxMDViOTMwMGI4OWVmZDdjY2VjNmY1YjkgcHkzaworNjExMTYgNTk3NjJkNjcxNGEzMTNiOTVkOTJkNWIzZGY2N2E2MzVhMmIwMGUxYSBsZWdhY3ktdHJ1bmsKKzYxMTE3IDk3MmZjN2Q3Y2I3MjY5NzhjMjg1NTAyNmM0NDI4YjcxZTc0MTUxMDEgcHkzaworNjExMTggNDNlMDg0ODQ3ZTUzMzIzNDAxZThjZjdjMmQwMjhjMjY4Y2NmODAyOCBsZWdhY3ktdHJ1bmsKKzYxMTE5IDdkYTM2YjQ5YzllNWFhZTJmODUwNWQzZWMwNmIzNmI2MTBkYWFkYTIgbGVnYWN5LXRydW5rCis2MTEyMCBjNTQ2NTIzNjY3NzI4Yzk1NzA3ZGQzODVjZTBhYjI3ODA2YjVlMzEzIHB5M2sKKzYxMTIxIGRiZjFkZGM1ZjQ3OTUzNzk0NzQ1ZjZmYzlmZGUyZTU0MjlkYWUwZjMgcHkzaworNjExMjMgYmNlNGM0MGRmN2RmNzRlZmQ4N2ZlZTI5MjA5ZWIxY2UzMzZmMTk0MyBsZWdhY3ktdHJ1bmsKKzYxMTI0IDEwOTYyYjNmNzdhOWIzODFiNjMxODE2YWNiMTZhOGZjNDljZDY1OTUgbGVnYWN5LXRydW5rCis2MTEyNSBmYWNmMDFmMTViMTUzNTU1OWMyYmEwNWM0ZjVhYTcyMDQ2Yjg4ZjFjIGxlZ2FjeS10cnVuaworNjExMjYgOTM3YTNjNWFmNjkxOTJiOGVkMThmNGU3YWVmNmMxZTU5ZWNkMGRiOCBweTNrCis2MTEyNyA4Y2Q5ODRjMTdkZWM4NWFjMDczOTE4NWQwZWNjZTdkMGU0OWZjNThjIHB5M2sKKzYxMTI4IGIyNjljMmQwM2ZkMmQ2YTI3MDhlY2Y2NjMwYjdmZWEyMTkyNWJhOTggbGVnYWN5LXRydW5rCis2MTEzMiAwOTQwNzEzYjY3MjZjYTI2ZjNiZDllNmZmNDVjMGU4N2JmNWQwZjdlIGxlZ2FjeS10cnVuaworNjExMzMgMDVjMzk2MTkxZTQzMjkxZjc2MGJjMjAyOTM3OTNmNmE5NGZlM2I1NyBsZWdhY3ktdHJ1bmsKKzYxMTM1IDRhOTU4OGIxZTRiOTVkZjEzYmQ1MTA4ZWJhMzQ3YzA2MWVmZTIzMTQgbGVnYWN5LXRydW5rCis2MTEzNiA4OWNmYjM4YTRiOTg2MjNjYTA1NTI2ZDZhYjkyMjYwN2VkMDhlZTBmIGxlZ2FjeS10cnVuaworNjExMzcgMjA3Y2EwYThhZmQwMDIzMGFiYjVlY2UyNDc3ZDY4ZmI3MzBiMmE0MCBweTNrCis2MTEzOCBjYTExY2YyNGViODU1ZjVjODZjYzFjNDBmMDQ3YjQ2NWNiZTdlNDhhIGxlZ2FjeS10cnVuaworNjExMzkgNjdkNDA0ODY2ODQ2MjA5NGVkZjNlY2U3NTZmNDAyOWE2MmZkNTA3NSBsZWdhY3ktdHJ1bmsKKzYxMTQwIDAyYTAxZTU3OGQ2YzVhMGJlMzQzNzgzMDY2NjBjM2ZjYzRkNTljNjMgcHkzaworNjExNDEgYjdlZTkwNzRjYTBlYjNiNzdlZmZkMmIyMzFiMzA5MTY3OTE2MGVhMCBsZWdhY3ktdHJ1bmsKKzYxMTQyIGZjNmY5MDU0NWNiNDhlNWNlZjVmNmVjYmIxMGZlNmVjY2RjZDc5N2MgcHkzaworNjExNDMgMDAyM2MwNDIyOGU2YjM1MzMwNWQ1Y2FkYWE4ZmU2NTkxODMxODEwNiBsZWdhY3ktdHJ1bmsKKzYxMTQ0IDg5NDZlMjdhNDU2M2JjMmQzZGIyOWU0NjBmOThjMTgxYWRlNzVkZjIgbGVnYWN5LXRydW5rCis2MTE0NSA5YjhmYzQwNWY5YjA0ZmM1MTFhNmMyMzgxMTE5OTRlODEyMjg1YzQ0IHB5M2sKKzYxMTQ2IDlhZDU0MmVhMDViYTFkYTliMDA2MWUyZWU5MmU4Yzk1MDdmNDA2NjMgbGVnYWN5LXRydW5rCis2MTE0NyA0NGQxMGQzOTA5MmM2NWVjMmZlYmNjYWU3MjZjODYyZmY0Yjg3NTQ3IGxlZ2FjeS10cnVuaworNjExNDggNmEwNGRiYjBkMTRiNDlkMTVmMzBkYTNmNzdkMzlmNWY2NGEwOWU2NiBsZWdhY3ktdHJ1bmsKKzYxMTQ5IDMxMjc5NTZmM2IzM2U3ZDFkZmEyZjVlMjcyMTU1ODY4OGM5NTViYjIgbGVnYWN5LXRydW5rCis2MTE1MCBhOGZiZDkyNzE0YTlhOWM0NzIyN2I4ZjI2ZTg3NmY0NGVlODI2MDdkIGxlZ2FjeS10cnVuaworNjExNTEgMmQwYmQwOTVjNDIwYjA3MTEwMDBkOWJlNjY4NDhmNmNmZDk3MmIzYiBsZWdhY3ktdHJ1bmsKKzYxMTUyIDBhZGZiYThhZTk1NzEzYzRlMGQ3MmYxNWQwODk2ZGFmYmZhNmI4ZDQgbGVnYWN5LXRydW5rCis2MTE1MyA4MmMzYjBiNWFhOTI1OGQ4OGUxN2Y5N2QxNWYwOGYwNzJmNDhlN2UzIHB5M2sKKzYxMTU0IGMwOWRiNzhiZDA2NmNjYjEyZDE1ODc4OWRiZGYzNDk4YTYxMzg5M2EgcHkzaworNjExNTUgY2M1NTQzYjU2MTBiMmQwNjUyODQ0NDY2ODQ5NjlkZWQ5ZWY2NWY0MyBweTNrCis2MTE1NiAwZTAxNjliMGVhY2M2ZGRmODA2OGQ1YzdjZDE4NDczYTdjMzBiOWQ5IHB5M2sKKzYxMTU3IDViYTA2NjkwYzE4NDc5OWIwNWM1ZGI2MDExMGUyM2ZhOGM3MGE1MzggbGVnYWN5LXRydW5rCis2MTE1OCBkZjE1ODI3ZjM0ODgxYjlhZjA5MzYzNTA4MTNjZWQ1YzEyM2M4MjMwIHB5M2sKKzYxMTU5IDM2MmE0NmU3YzMzYTJhNmFmNjdhNzk3NDMwZmQ2NGZiOTA1NzY2NmEgcHkzaworNjExNjEgMjBhNDI2NzRiMTExMDRhYjk4NTg2OWExZGJlNzRkMTYwZTVmNTRkMyBweTNrCis2MTE2MyBjZDE1YTVlOWMxZGU1OWJiZWZkYTdmNmZmODVmNDYxMjAwNTZkM2Y0IHRydW5rLW1hdGgKKzYxMTY0IGMxMjVjNjFlMDZhODYwNjczMjBiNTI2ZDgwMWZhOWY3Y2ViY2RmNTUgdHJ1bmstbWF0aAorNjExNjUgNzBjNDFiZDY4MGI1ZTdjYjAxYTQyNTZiZWNlOWIzMjRlYTY0ZDA4MCBsZWdhY3ktdHJ1bmsKKzYxMTY2IDM0MzlmYTIxNWZhZWMwYWUxOGNiMjg0Mzk0ZjFjYzUwNDU5NWRiZWEgbGVnYWN5LXRydW5rCis2MTE2NyA1YjcwNzhlY2NlZTgzNjk3ZjU0NDE3NDJkZjhlOWFkYzU0ZTdjYzgyIGxlZ2FjeS10cnVuaworNjExNjggYTYyZjk1YTRhZGZjNWUyYWQyNjM2ZTA3NjQ5YmJjNzdhNDA3NTUwMSBsZWdhY3ktdHJ1bmsKKzYxMTcwIDQwNjBkYjEyNmVjZjM2YzUwNTQyOGMyNGRjNmRiNTRmMWQ1N2FjNTkgbGVnYWN5LXRydW5rCis2MTE3MSA4YmJlNTMxZmNkM2M4Y2E3MWY1YjQxZDEyNmIzOGRlMWM3Y2FlZTRkIGxlZ2FjeS10cnVuaworNjExNzIgZjcyYjJkZTk5N2I5OTI3ODg1YTk0YzczOWM5YWM5NzgxYjI4N2ZiZCBsZWdhY3ktdHJ1bmsKKzYxMTczIDk2Y2E4YzdjZWRjNGQwMzFlYmIyMDhlNWFkYTkzMThlNjA4Y2E2MjggbGVnYWN5LXRydW5rCis2MTE3NCA3NjI4Y2I0MDNjNTNlMWEzNmFlM2QyZjk0OGIxNzE1NTk2YTY2MzY1IGxlZ2FjeS10cnVuaworNjExNzUgYmJkZjA2YTg2YTI0MzI5OGIyMTA3NGU5YWU1M2NhY2NhYzA4NGMzMSBsZWdhY3ktdHJ1bmsKKzYxMTc2IDBhOGVlY2FjNWFkMWRjOTM0N2RlNGNhYjQ3MjViODE2MTFmMDVmZWEgbGVnYWN5LXRydW5rCis2MTE3NyBmNjUzYzBiODkxNmI4ZTU2NWI3MDc2NmQ5MWEzZjIyNTBkNGU2Njg4IGxlZ2FjeS10cnVuaworNjExNzggNDczMjhkNzZlOGFiYmQxNzYzMWVkNjY4MDViNzUyZThmYzE1YTNiOCByZWxlYXNlMjMtbWFpbnQKKzYxMTc5IDU0ZjFjYjhhODFmNjYwMjVjN2VmMTI2ZThlN2U0NGViNDAzNTZkMzIgcmVsZWFzZTI0LW1haW50Cis2MTE4MCAwNTY1MTMwZDdkOWY2NGMwZGY0NDBlNWMyMTVmMmE0ZGU4MzQ2MGNjIHJlbGVhc2UyNC1tYWludAorNjExODEgMWY3ZDYyOGM3MGE5YWVmZTc2MmMyYzMyMjEwODc2ZmFmOGQ2NGM3OCByZWxlYXNlMjQtbWFpbnQKKzYxMTgyIDdhMWZjNjFkNWMzZTQ1ZjNhMjIxNWQ0MmNhODU2ODYxYTE4MGQxMTkgcmVsZWFzZTI0LW1haW50Cis2MTE4MyA1Y2NiNmViMjAyZmYyMWMwMTgwMDQ3NTU1ZWNhNjY5YmI5MjZjZTE3IGxlZ2FjeS10cnVuaworNjExODQgODhjMWUxN2NlZmZjZjM1OTNmYjFiNWIwZDYxNzQ2YWVjMGFlOTgxYyByZWxlYXNlMjMtbWFpbnQKKzYxMTg1IDg5M2M3YmQ0YTkyYmQ4ODlhODVlNjkxZjQ5MTg4YzM3YjBhNzIzNTcgcmVsZWFzZTIzLW1haW50Cis2MTE4NiA1NjY4MWQ1YmVlNzA5MzBiYzRjZDgxYzI4OTFmY2U0YzMwZWE2NzBhIHJlbGVhc2UyMy1tYWludAorNjExODcgNGQ3MTMwMWE2ZDRiN2ZhOTc4ZTBkZTJjZjBhYjI3MWExNGVhZTI2YiBweTNrCis2MTE4OCBhMzFiNjUwNTE1Y2I5Y2E0MWM1N2MxNWQ0YmRiNzNiYzEzOGVkY2YwIHB5M2sKKzYxMTg5IGNmM2E4MGYxZGE3ZDA3YTAzNGZlNDcxM2YwNDhmMzc5OGU2YTQ5ZTEgbGVnYWN5LXRydW5rCis2MTE5MCA2MDY4Yjc1ZWMyN2EwZjE5YzcyMDJjODBlMDgwZGU3ZmUzZDlmNGEyIGxlZ2FjeS10cnVuaworNjExOTEgNDRhZDc4ZmUzNWZhYjEzMTdjZmNkMDMxODdmNDc2ODUxMWFmMWU2OCBweTNrCis2MTE5MiBiOTMyZjAzNWZiM2VmNDM2ZGFiMDA2MjFiNTNlN2YzMTNmZDAwZmUyIGxlZ2FjeS10cnVuaworNjExOTMgMjRmNDIzMGJhZWJlN2RmYzZjYjM3NjlmZTk3OWIzMWRhNjkxNzZhNyBweTNrCis2MTE5NCBjNmQ5YTM0ZjAyNGZkYmE0NjZhOTIyNzllM2YxMTU2YzI5MTdkZTIyIGxlZ2FjeS10cnVuaworNjExOTUgMmM3M2M1ODMzZjIwMDVhZTlmNTZkY2NiYzVmOWQyMDlhMzIwNWYyYiBsZWdhY3ktdHJ1bmsKKzYxMTk2IDdlNGI3NTNhZmVjNmUxNzk0ZTM3YWM4ZWRjNjQzMjUxZTQzNWQyYTEgcHkzaworNjExOTggYTU1MTM2Yzc4YjYwNDFkM2VlNmY1MDVmZTExZDVlOWFiNDU1YmZmZiBsZWdhY3ktdHJ1bmsKKzYxMTk5IGExOGE0MjRjMmJkMzRlNzg3ZjkyMzM4NzE2ZDgyZDdkNDhlOTA3MDUgbGVnYWN5LXRydW5rCis2MTIwMyA0MWE3MDc3NDRiYzg5OGRjYTNkZmIwZDRiNTc3MmY1MjIzMTUxZmYxIGxlZ2FjeS10cnVuaworNjEyMDQgNjI4MmRmZDVkYzQ5NGY0MDkxYmEzMjg1Mjk1YjY5YTNiZWI0NzMyYyBsZWdhY3ktdHJ1bmsKKzYxMjA1IDg4MmViYTE0NTExOThkNWEwZmZkODFiZjIxNzhmZjE3YWRmODdiMzMgcHkzaworNjEyMDYgMjU0MDZiM2ZmOTdhNmZkMjVkZDU1MTFkZDUwNWUzMTliMjhlNGE4OSBweTNrCis2MTIwNyA2NWVmNjA4ZGQ2NmNiMDQzMjBiNWMyNzFjZjU3MDVjZDk5YjBlNDNmIGxlZ2FjeS10cnVuaworNjEyMDggZTk5ZTFkOGI4MDc3NzBlZThiZTZiMWFiMzUxNjQ1MDMwZDI3MGQ5MyBweTNrCis2MTIwOSBjNTE4ZjM5NDczZmQwYjkwMDNkODM4MDE1MjIzNjViZWZiYzUyYmFjIGxlZ2FjeS10cnVuaworNjEyMTAgYTE1NGYxOTgyNTkyOGNiYWYxZjJmYzQzMjc4OWJkZTNmMmU3YTQwZSBsZWdhY3ktdHJ1bmsKKzYxMjExIDA3MjM5MmVkNGVhNjkxMzkxNzcxZjQwOTVkMzk3ODZmZDA4NzU1OWUgbGVnYWN5LXRydW5rCis2MTIxMiA4NDAxMzhlMjQ5ODBjODk5NzQ2M2MzZDg2NjQzMTQwMDAwYmQwYWMxIGxlZ2FjeS10cnVuaworNjEyMTMgMmQ1NTFkMDQ2MDIyZTFiNzQ4NjZhNjU1NDIzNzliZTkyZmJkM2JiNyBsZWdhY3ktdHJ1bmsKKzYxMjE0IDRkMzYxZjAxNjQxY2I2MTFhYjNmYTkwM2MwZWYzNDhjYzZmYTM5NDQgbGVnYWN5LXRydW5rCis2MTIxNyA5MWQ3NTcyZTM1YTFjZDAxMGVhMDE0YmQzOGQ0NjdhN2MwMjI4Yzc5IGxlZ2FjeS10cnVuaworNjEyMTggZDdlNGM2M2ViY2FkMDdiZTZiMmJjMThlMDNjMjVlZDFjMzI2NGEyNCBsZWdhY3ktdHJ1bmsKKzYxMjE5IDU0ODlhZjY4NjQwOGMxZWMwNzJiYTBiODk2YmYzMzFiMTJlZDJkZTEgbGVnYWN5LXRydW5rCis2MTIyMCAzZmMwOWNjZjAxNDE4NWQyY2I0Y2VmMWM1YWUzNTA5NjE5NjUwZjg3IGxlZ2FjeS10cnVuaworNjEyMjEgMGUyMjRhYTIxOWEyMWI3ZmEyMjVkYTEzYjE1ZTcxMDE0YzA5NDAyOCBsZWdhY3ktdHJ1bmsKKzYxMjIyIGYzZWI0NTdlOTZhNzVjM2Y5NzdlNTcwYjI1ZTMxYmQ4MTJkZTVmMGUgbGVnYWN5LXRydW5rCis2MTIyNCBlNDRjNzQ1YmVjMGJhZGI3OTAxNmVhY2QwY2E2YjJmM2NmZTgxMGFmIGxlZ2FjeS10cnVuaworNjEyMjUgNGVhMzZjMDEyYTJkZTUyMjc0MjEyMWQ0OTMyNjUyOWM5OGMwZmIxOSBsZWdhY3ktdHJ1bmsKKzYxMjI2IGRkMDE2YTZkZGNjNWE5MDI4ZjA1YmE1MTdhZGQzNzc5NDc5NGJhOWYgbGVnYWN5LXRydW5rCis2MTIzMCA5N2JlYTM5MjM2YTkzYjY5YzQ0ZjkxYmRhOTQyNjcxMzYyNjJjZTU4IGxpYmZmaTMtYnJhbmNoCis2MTIzMSAyZDQyNTMwMTVmNTg0MGExNGNiNGRhYWRkNzcwNzkwOGJhNTkyYzMwIGxpYmZmaTMtYnJhbmNoCis2MTIzMiA5NmFhNmQwMjdlMmU3NjkxODE2ZTQ5YjMwNGQ5NzU4MjgxNDIxY2IzIGxpYmZmaTMtYnJhbmNoCis2MTIzMyA1NTQ2ZGM0YTQyNmFhYTY2OTliNGM3N2JkMjFhY2RlNjdiYmM1MzdmIGxlZ2FjeS10cnVuaworNjEyMzQgZDM4N2IwMWRiYzFjOWRhYWY5MDY2YjExNjgyZTdjOTVmNTMzMzNiMCBsZWdhY3ktdHJ1bmsKKzYxMjM1IDkxY2E5NTQ5OTA2YWNhYmM5YWE2NTdlNDFmNmMyNWUwMjVkYzQ3YmUgbGVnYWN5LXRydW5rCis2MTIzNiA0OTU3MDBlZTMzNDU2Zjc2NGNlYzFjMTQ1Mjk1MjY4ZjEzNjgyYjU0IGxlZ2FjeS10cnVuaworNjEyMzcgOGE1Yzc1ZWZhZTRjMjBiZTlhNzQxOWI4ZGIxMGFlMWVjMjU2NmYwZiBsZWdhY3ktdHJ1bmsKKzYxMjM4IGRkMzE4YzNmNmNiNzlhNzQ5NTliZjZhMmY1MzUxYWMyZjRmMTQ0ZGQgcHkzaworNjEyMzkgMDBjYjBhMzVmYjQ5YjJmYzk3ZjZjNzRjYmYzYzc0Y2EyNTE2ZGFkNSBsZWdhY3ktdHJ1bmsKKzYxMjQwIGZmM2U5YWVhYTY5MjM1Yjg5MjU5MjA1ZWVhMzE2NmU3YzFlNjMxMzggbGVnYWN5LXRydW5rCis2MTI0MSAzMGZhNjc3NzA5NmYyMTAyZWQ3ZDRjY2M4NzYyYWRkYjM2NGVhNjQ1IGxlZ2FjeS10cnVuaworNjEyNDIgMTFlOWUzNjY3YjM2NWNkZWQ3N2U4YzE3NmVjMjlhOTIxY2IwODJjNyBsZWdhY3ktdHJ1bmsKKzYxMjQzIGJlYWI5ZTEwYTE4YmRlOTc4ZjQyNmY5MGM4Zjg5YThlMDkwODJiNjIgbGVnYWN5LXRydW5rCis2MTI0NCA5OTYwZmQyZjVlYTk0MDg1YWVlNjk5YmNhZDk4MGM1MDQ1NWFmOWVmIGxlZ2FjeS10cnVuaworNjEyNDUgMWE2OGVjZTE1NDdhYjQ3ZjcyOTdjZGZiZTg2M2FmZDZkY2RhYjVhNSBsZWdhY3ktdHJ1bmsKKzYxMjQ2IDIzNDQwMWFkZDI5OThmYmZhNTQ1Nzg0OGM1ZjQ5ODUyYjMyM2U0ZmIgbGVnYWN5LXRydW5rCis2MTI0NyBjOWQ2NmJkYmNjY2Q0NGEzNTljNWJiODM4M2I0ZTJhZGI1YzgxZGU1IGxlZ2FjeS10cnVuaworNjEyNDggNDM2MTA1MTI1NDQ1OTFmNzhlODdlMWQwNzBmZWI3MjM3NTM2YWYzMCBsZWdhY3ktdHJ1bmsKKzYxMjQ5IGY1MjQ2OTExYzkwM2YwYzNmZWUxZjU0ZmE4ZTkxMGJlMTM1ZjBiOWYgbGVnYWN5LXRydW5rCis2MTI1MiAwY2Q0YWQxYzkxNTNlYThhMTQxNjU4YjUxNTI3YzU0ODEzYzIzYmIxIGxlZ2FjeS10cnVuaworNjEyNTMgZDQxYTQyMDY0MDVjMTM1ZmYwZDVkMjkxZWFiNmZlNGUxNjk0NjdkZiBsZWdhY3ktdHJ1bmsKKzYxMjU0IDIyMTZiMTAwYjJkMmVkZWZkMjNmZWFkYWY1NmMxZWVmYjhlYTZiMDggbGVnYWN5LXRydW5rCis2MTI1NSA0Mjg4OWIxYTdkYzI1NWRkODA1MGNmOTMwODBkYjg2YmRhZGYxNTE4IGxlZ2FjeS10cnVuaworNjEyNTYgYzE5N2UxODQ0OWI0MDRmOTUzYTU2OTc1NWM4MGFkMWQwOTYyZmE2MSBsZWdhY3ktdHJ1bmsKKzYxMjU3IGVlZmM2MDRhZDkzNWFiODQzMDYxMTZkOTk2ZTU4ODYzMTQ1ZDQ3NjcgbGVnYWN5LXRydW5rCis2MTI2MCBkMGJlMmMzNmNiZjhkNzk5MjIwZWY5MDBlNThkZjk3NWViZTExNDIxIGxlZ2FjeS10cnVuaworNjEyNjEgNzM5NWVkMGYwZjdmNzc0Mzk2OWJiOTdmYTYyNzQ4NTQ5OThlYWI2NyBsZWdhY3ktdHJ1bmsKKzYxMjYyIDliMDQ5NDE2NzNmMTczZjIxNGM3NDkyMzIyNTc2OTgxMzg3ZDljMmEgbGVnYWN5LXRydW5rCis2MTI2MyBlZjg5MzM5MDQ4N2JhZmQwMWU4OGFmYzhlM2RlYTQ4Y2Q0ZWM3OWYwIGxlZ2FjeS10cnVuaworNjEyNjQgNjFkMjI3MDFhNWU1ZWI2MjZhZDdkZDA5ZmYwNjEwYTQ1Y2ZmZGJlNiBsZWdhY3ktdHJ1bmsKKzYxMjY1IGIyNjJiZWNlMTMyM2NjM2U5MTFjZDAxYzE5ZmRlNDFmMjBhMDQ4NGUgcmVsZWFzZTI1LW1haW50Cis2MTI2NiBiOGVmNzFiMDE0NDYxMDc2OGE1ODRjZDE0ODYxNDMwZDliZTk1MzMwIHJlbGVhc2UyNS1tYWludAorNjEyNjcgNGM0Nzk5M2FmYjFiMTIzMGRjYWY5ZDMwNzUzYjZlYjE2YjhlZTMxNyBweTNrCis2MTI2OCAwYjhiM2U2NjNlM2ExNWM3NjQ3ZWMxODM3YjFhNzZmNTE0YmJiZDFkIHJlbGVhc2UyNS1tYWludAorNjEyNjkgMDY1YzRhNzZhYzAxZjE1Y2E0ZjNiYjM0MzAxOGMwM2IyNDBiMmJhYSBsZWdhY3ktdHJ1bmsKKzYxMjcwIDE1NzQ2YmY0YTBhNjNjNDk5MDkzODMyNzZhOWFhMWNmNGU5NDYzNzEgbGVnYWN5LXRydW5rCis2MTI3MSBhNGMyNjU1NjVjYjZiNjc3NDZjNmM0ZGQyMjUzMTZlNzc0OWJkNjQxIGxlZ2FjeS10cnVuaworNjEyNzIgMzk4MDMxM2Q5YjhiMjdjMGUyMjM3MGNmMjFjOGI0NjAzNzE1MjJkZCBsZWdhY3ktdHJ1bmsKKzYxMjczIDM2ZmVmOTlhZjE4ZDEyMTQzZDM2OGNkYThlMTgxMDExNGE2OTgwMTYgbGVnYWN5LXRydW5rCis2MTI3NCBlOWJlNmFlYjRkZjA2MjFmYjI5MjE4ZTUzNDRlZTY4YjFjZjc3YmQ1IGxlZ2FjeS10cnVuaworNjEyNzUgODk4ZGMwZjhhYjYzNWFmN2U4NmZhMjI5ZmNjMTgxMzMxZTdiY2RhMCBsZWdhY3ktdHJ1bmsKKzYxMjc2IDE3YjJlYTBhZmE2MTE4ODgyODFhMGYyNDliMGM2ZWIxMDEzNWM4ZTYgcmVsZWFzZTI1LW1haW50Cis2MTI3OCBhZjI2N2U1NGJmMWRkZThkOGI2N2RmMDI5ZjA3OTllYWQwN2U4NDgzIGxlZ2FjeS10cnVuaworNjEyNzkgYmJhYjhmNjRmOGQ2MmM1NjljNmQzYzgwMWYxOGM5MzNiZDQwODcyZSBsZWdhY3ktdHJ1bmsKKzYxMjgwIDllY2IwM2VmMWM2MjQxOTdiNTIzOTZjNzZjNWYxMTZkYzU4NTAzMzUgcHkzaworNjEyODEgNDg1YjIxOTU0NzQ2MDk3YjI1MDUyMjI0Y2U0OWUxNjE4ZWUwZDE1NSBweTNrCis2MTI4NSA0NGFhNTlmODU5MWRhYTZlNzc0ZGE4YzZhZmJjNTI4NmQyY2U1Yjk2IGxlZ2FjeS10cnVuaworNjEyODYgMGJlOWIxY2YxYjE2MjExNjdiZGFhMmY3ODU3MGQ4Y2JhZTQ1YmQ4MiBsZWdhY3ktdHJ1bmsKKzYxMjg3IDcxMjJmYTY1Njk3YjhhNzNlNjEwZGI0ODY4MTNhMDNlOTZhMzJhZDggcmVsZWFzZTI1LW1haW50Cis2MTI4OCA1ZjQ5YjU2OWRlZGYxMTRjNWZlY2JhYjVjZDYwMmY5ZTJhODU5YThiIGxlZ2FjeS10cnVuaworNjEyODkgYTg3NTRjMGRiNTNmNTAzMTNmNWRmYzQxNzhlZTZlMjdmNDk0N2ZkZiBsZWdhY3ktdHJ1bmsKKzYxMjkwIDM0MzU5N2M3ZDY4MmIzNTUyNTgwMzUyZGVkZGQwY2RiMzY5NzhhMDQgbGVnYWN5LXRydW5rCis2MTI5MyA5YmJlNTVmOTg2N2VlOTQ4NTRlMzQ1ZjlhZjc4N2ZjZGU5MTQ0NWY3IHJlbGVhc2UyNS1tYWludAorNjEyOTggMzkxZGUxNDMyMjZmZDdiMzc3OTZiYzk3OGZmM2Y3OGYwNWIwODkxOSBsZWdhY3ktdHJ1bmsKKzYxMjk5IGY4NmZhNWZlYWYzMTRkZmE5N2IwNjBiMDFiYTIzNjc0MjMzNzg0NzcgcmVsZWFzZTI1LW1haW50Cis2MTMwMyA5Y2Y3MDcyOWMyM2YyMDg4YmI1MDMwYjA5MDkzOWIzNWJkMjJkZWFlIGxlZ2FjeS10cnVuaworNjEzMDQgMzdhYTQxNmI0YzQ3YjRlZjVmOWYwOTNhYzg2ODc1NzQyMzBhMTRiYSBsZWdhY3ktdHJ1bmsKKzYxMzA1IGU1YWFkYzA1ZjZmNTFlY2Q1YmQwNmY3NjJhZmIxNmUwMTM3MjFmOTAgbGVnYWN5LXRydW5rCis2MTMwNiA0NTA1MGQzNzZkNTdmYjg2ZjgwNDI0NWZiZmMwNjhlZjZmZjkxNDljIHB5M2sKKzYxMzA3IGMyN2FhYmFlMDZmZGM3NWIyMjhmNjhkM2Q5M2YxMDRmZDNhMjMyZDAgcHkzaworNjEzMDggOWE3MjdjOWY5YmFhMjU3ODY0ZDUzYTY3ZTJkM2EwMDIxYTk5N2JjYSBweTNrCis2MTMwOSBhZjQ0Y2VmMWNkZjVhNTVjOTNmZDlmMTc5MmRiMGE5YmE4OTJlNWI3IHB5M2sKKzYxMzEwIGM4MzA2MTZiZDJmYzkzMTA1M2M0MTc5NDNmMTRlOTRmNGYyNTM2ZDkgcHkzaworNjEzMTEgOTQwNTNiMjdhMzUyNTkwYWMyMGQ2NmJmNWQ4ZTZlZWQ0MTExNThjMSBweTNrCis2MTMxMiA1MDY1NDc4MjJiOGQwMTAyMmRhNjU1MDBlNGI2MWNhN2ZlOTZkNTJiIGxlZ2FjeS10cnVuaworNjEzMTMgMTU4NDIwOTRiMDg5YTJjNzhiNTAyNWM2YzdlZDhkOGNkOWFhYjYyZSBsZWdhY3ktdHJ1bmsKKzYxMzE0IDhiYWI0MThjYzg3OTNiOGMwMDg2YTAwMjdhYTgxOGU1YTgyNzI0OGEgbGVnYWN5LXRydW5rCis2MTMxNyA1YjQyMzljMWY4ZjgyZjYwOWY4ODgwYTQzNGMxMzljMWQ1OTYyZTIzIGxlZ2FjeS10cnVuaworNjEzMjkgN2YyM2I4MDRlOTRjMDRhYzRmYjc1ZTE2NTcyOWM0ZGYzNjczNmVmYiBsZWdhY3ktdHJ1bmsKKzYxMzMwIDY2MDcwZmRiZjBiOTMwNzczMGM3NWQxOWI3YzEyYjU5OTExZTU4OWEgbGVnYWN5LXRydW5rCis2MTMzMiA2ZjE5NTc1NWYxNDRlODAyZGMxZDhmNzI1MTZkZDBhYTFlYjg5NzJmIGxlZ2FjeS10cnVuaworNjEzMzkgNDU2Y2VlYzY1MzU3YzE2NjU3YjBhZGJiYmNmZTI3MjBhZjA3YWIwNSBweTNrCis2MTM0MCBhZWFhMzAzMTQ3ZWViMjNmNGMwYjQ4MDMxNmVjMzY0ZTQxMjY4OWE2IHB5M2sKKzYxMzQ0IGI5ZDZmODcwYmZiMTY4YzVmYzM2Y2RlY2M3MGExOTU4MzA3MmM1NTkgbGVnYWN5LXRydW5rCis2MTM0NSBkOGRmNGFhMDYyNjFkZTVlNGMwYWEwNTFlNDQ4Njk3ZDQ3OTFlNDM3IHJlbGVhc2UyNC1tYWludAorNjEzNDYgMjAyMjk0M2FkNDUwYzQxZDY0NzA4ZmI1Y2FjYTJkMjY3MmI1YjhmOCByZWxlYXNlMjMtbWFpbnQKKzYxMzQ3IDVkNzY0ZDUxOGY2NWViYjkxMDg1Njk3MjdhN2M4OGIzMjBjMjdlYjggcmVsZWFzZTIzLW1haW50Cis2MTM0OCBlODU3MmQ5YWM4NWVmM2QzZTRjMDBjNGVkOGYxY2E3YTZhZWQ5OWRlIHJlbGVhc2UyNC1tYWludAorNjEzNDkgZjdjMzY1OGM3MWMzZDZjMzIwMzk4MjUwNzMyNzVmNWQ3ODNhYTQwMyByZWxlYXNlMjUtbWFpbnQKKzYxMzUwIDE2MmM2OTUyZWEzNGQ0ZTcxZjVmOTk5N2ZkODBhMWI2ODgzOWEyZmQgbGVnYWN5LXRydW5rCis2MTM1MSBjZTVmNmZkNTc5MTMyZjRiOTUwYjA5NTVhZGNmNGViODE4NDA3YmU5IGxlZ2FjeS10cnVuaworNjEzNTIgN2Y0ZTYwMjFiYzlmNjA5NGZlMmEwZDZhNzUwYjBhNmVhN2MwZWUwNCBweTNrCis2MTM1NiBlMDliYzFjNTI5NWJjMTk4NDVhMGYzNTRkYTJlODMwNjZmZWI4ZWU2IHB5M2sKKzYxMzU3IDdhZGFhYjY0ZWI3MmU0N2U1N2ZiYjRjY2JhZjg3MDNkMGMyZjU4MTIgcHkzaworNjEzNTggNzc1MmE1N2Y5YzQ5MGQzMWYwZjNhZjhjNjEyMTU1MzY4ZTM5ZGJkMSBweTNrCis2MTM1OSBlNDQ2OTEwYzlkNDM3ZjRkNGEwMzBhYjAxNDRhZGJkMTFhZmEyNGJhIHB5M2sKKzYxMzYwIDc0MGI1ODA4YzU3YWU3YjNkNGM3OTNiYWRlNTExY2ZhZjlmNTJmZWQgcHkzaworNjEzNjEgNDJhNmFhZDM5ZTVjZTliZDQ1ZmJkYTNmN2Y2OTkxOGI3ZDY4MzUzNiBweTNrCis2MTM2MiA3Yjk1YzU3YjU4MjFiZmFjMjdlZTZiMTVlNDYxNmFlMzkwYzFlM2NiIHB5M2sKKzYxMzYzIDk4NjMzOGViMGMwZGU1Mjg2MjVkNDViOWZhNTFjM2VmYzhiOTA3YTMgbGVnYWN5LXRydW5rCis2MTM2NCA3NDMxZjNmYWEzNTY4YTQyZTFlZDQ0M2ZhNmQzNWI3OWE5YWE5NDFiIGxlZ2FjeS10cnVuaworNjEzNjUgOTM5NWEyMmE5NjZhOTRjYTA4OGI1YzRhN2Q1OTEyNDRmNGIyNmQ1MCBsZWdhY3ktdHJ1bmsKKzYxMzY2IDAxMWQ3OWFmMDVlYTkxM2ZjYmY3MzNkNWUxZWYyNGQ2YmYyYWY5ZWMgbGVnYWN5LXRydW5rCis2MTM2NyBkNTAyNGVlOWU4OGEzMWIxYjZjNzQ0NDg0MjFlMTNhZDY4MDIzNDNiIGxlZ2FjeS10cnVuaworNjEzNjggZDcyZDUyN2RlNzExOTY1NjVhZjczNWYyYTg0N2Y0ODg5NzU0N2E3ZCBsZWdhY3ktdHJ1bmsKKzYxMzY5IGNiYjllMmY0YjIwMjgzYWNhMzM1NGE4OWNkZjg0NmZiMjcxNjUxYWEgbGVnYWN5LXRydW5rCis2MTM3MCBkYjViMzIxZWRjYmIyYzFmOTNlYTBlYzE0MWY4YjU2NzYzZmM2ZGQ3IGxlZ2FjeS10cnVuaworNjEzNzEgNmEzM2Q0ZjZmMTZmNzgyN2U2ZTJmMWVmNGU3MDczM2FhYjYxNGRhOSBsZWdhY3ktdHJ1bmsKKzYxMzcyIDU0M2U4ZGRlMzYxZjhhNjFjMjE2ZTc3NGFjNGZmZTc0NmM3NTFjYmMgbGVnYWN5LXRydW5rCis2MTM3MyA0OWRjOWFmOTBiM2QxZjI5ZGVkYjViYWVjMzg3NGQzNjI2OTZiYTRjIGxlZ2FjeS10cnVuaworNjEzNzQgNjYzNDFiZWQ4MmIzMDUzZmZlNjZjZTgxYTRmMTkyNThlMDRjMGY5YSBsZWdhY3ktdHJ1bmsKKzYxMzc1IGQ5N2JiYWQ5YTM1ZWVlZTIwMzcxYzI0MWM2NGNmZDhkZGZiMTA4YWEgbGVnYWN5LXRydW5rCis2MTM3NiBiYzgxMzI2NWUyYzY1MzNjNTUwY2NlZmJmZTczMjZmMWVmOGVhMzU1IGxlZ2FjeS10cnVuaworNjEzNzcgZTJlNTQyZmRhY2QwOWRlYjhhZGEzNWY2M2Y3N2JmZmE3NDhmODA3YiBweTNrCis2MTM3OCBmNmIzY2YyZjMzMzExZmNlNzE1MWI2MWY3YzZkOGQxZGI3MTNlOTI0IGxlZ2FjeS10cnVuaworNjEzNzkgN2M3OGVhNzA3MjE5ZWU0ZDAwZTY0NjM1Y2NkYTFhZDI3MTlmYjRkOCBsZWdhY3ktdHJ1bmsKKzYxMzgwIGU3YWE5YjVmMjFiNTBkMjhkODVkMDY3NGFiYzg1NzM0YzhiMGY1ZWYgdHJ1bmstbWF0aAorNjEzODEgNTM3Mzc1MWFkNGI0MTBiODI3N2Y1MTRjZjI0YzJmNTM3ZmNmZTJjMyB0cnVuay1tYXRoCis2MTM4MiAwZTBjMTQ5OGJlMWE4MGY4NmI5OTQ3NGI1Y2UyYWJmZDMzZGViM2JkIGxlZ2FjeS10cnVuaworNjEzODMgMzU0ZTM3N2M5NTkwMjQ0YWJlMDdhOTc5MmE4YWEwMmM3YzZjMWE2MyBsZWdhY3ktdHJ1bmsKKzYxMzg2IDE2NTgwZGMxNDI5NGU5MjIzOTg0ZWE5MTI0MGM4OWMxNTI1OGY4ZTggcHkzaworNjEzODcgMDA1M2ZjOWY1YTFmNmU3MDU4NjQ0OGM4ZTkyZTU0ZGY5ZDBjNTc1ZiBsZWdhY3ktdHJ1bmsKKzYxMzg4IDljODkwOWVlNTcxZjRjNTA1ZjUxMWQ1ZDFhMzdiNmZkYTU1M2Y1YjkgbGVnYWN5LXRydW5rCis2MTM5MiBiOTQwYjFhZDlhM2FhMjE5YTIxYTk0OGIxMjE3ZjFkZDBlMDYwZmFlIGxlZ2FjeS10cnVuaworNjEzOTUgYzA3YzVjN2E5MTRlZTMxZjlkNzBjNDRiYTBlZmY2NDAxNDJjMGEzMCBsZWdhY3ktdHJ1bmsKKzYxMzk2IDgyM2UxMWViZjY2ODI5YmFmNTUwYjkxNjAxM2I1MzRmZDc0NWY3MDkgbGVnYWN5LXRydW5rCis2MTM5NyBhNWM5MzkyMjlmZjI3ZmI0NjQ2ZDFlZWNiMWExZWRkYWJiOGZlZDhiIHB5M2sKKzYxNDAyIDIxMmU5YzhhZDA4N2ViMTZjODk0ZTAwZWM5ODUyMDE4NDU1OWYyY2IgbGVnYWN5LXRydW5rCis2MTQwMyA1OWViNWFmNjFjZDczNjg1MTczOTg4N2E3MDUyYjY2ZWUyYzk5YmVhIGxlZ2FjeS10cnVuaworNjE0MDQgNTMxZTYyNDE2ZWViNjdkNWU5Mjk3ZTA3ODgxM2MyMjhmZDU5OGRlMCBsZWdhY3ktdHJ1bmsKKzYxNDA1IDBkMTBmMTkzYjliZTI1YTZmZWM4OTlhYzQzZmY2MjBmMTExZGI1M2YgbGVnYWN5LXRydW5rCis2MTQwNiA0ZTM1OGVkN2Y1MTU2MTdmZmM3YmE1MmIwMWU1M2VjNDk4MzE4YjEwIGxlZ2FjeS10cnVuaworNjE0MDcgZmVhN2JhODkxMGE5NjBiZjcwZGQ5MmU0ZTc3ZDc3MDE2MTVjZGI5MSBsZWdhY3ktdHJ1bmsKKzYxNDA4IDgzMmM4MjBlOWQxNDRjYjc2Yzg3NzhhZDZmY2ZmZTIzMmIxZjVjNDYgcHkzaworNjE0MDkgMDU4ZmJmYjk4NWFlOGEwYjY1ZDcwNDE1YTYxOTkxNWU4YzVkYWQ0MCBweTNrCis2MTQxMCA3MDI2NTdlZmFiOWJlOTEzOTNkOWNlYjRjOTI3MDYzNjBkOTU5NGM2IHB5M2sKKzYxNDExIGFlMjFhOGQ3MDMwMjZlMTgyMjIzMGM0NmVmYjZkMWFmNmYxNTY1NGYgcHkzaworNjE0MTIgZDBjNjc3ZGRkNmI4OWMwMTRkNjVmOTE3NDg3MjA1N2Y4YjI2OTZiZCBweTNrCis2MTQxMyAyZTBlMTQwMjk1OWQzZGU3MDdjNTFmOWVlMTI2MWIwNDIxNDdmYWE0IGxlZ2FjeS10cnVuaworNjE0MTQgMzlmYjJjNzg4NDFlYTI1ODI0YmIxYWIwNjk2YTJhOTdkYjViOWEwMSBsZWdhY3ktdHJ1bmsKKzYxNDI2IDM3OTczMTI1YjJjMGNjMGFmOTU3OGZiZDNiNTYzYjgyNzU0MjVhNmQgcHkzaworNjE0MjcgZDcwZmFiOTdlYmI1ZWE5NzMxMDc1ZTM5N2I5MTgzMWIzMTQ1MGU0ZiBweTNrCis2MTQzMCAxZjBlN2UyZGJlMTVjYmFlOWU1NjQ1YzYxMzRmY2U4MjYyYmYzYzJkIHJlbGVhc2UyNS1tYWludAorNjE0MzEgNzlkZWE2NTMzMmY4NmYzN2Y5YzY1M2RlMjQwYzE4ZWVmOTZhZmVkNCBsZWdhY3ktdHJ1bmsKKzYxNDMzIDJmZjNlNDMyMTdiN2U1NDRhMzllNTQ1ODNlNTBlZmQ5NjQ3NWExOWIgbGVnYWN5LXRydW5rCis2MTQzNCA0ZDI5MTI3ZjNmYTBkN2JjYTcyOWNkYzUwMWQ2MGQyMjA5MjY3MThjIGxlZ2FjeS10cnVuaworNjE0MzUgMTY3MzJkYjAwODIyZWE5ZGFlMTdlMWE0YTMzY2ViOTM0ZTdmM2ExZCBsZWdhY3ktdHJ1bmsKKzYxNDM2IGM0NDAyZWM2MGMzYTRhMTUyZWU2MjVlN2QxN2MyNWY2ZDM1NWM1OWMgbGVnYWN5LXRydW5rCis2MTQzOCA0ZDM5ZDRhNmE5ZGJhNWE4ZDg5ZmYxY2M1ZWI1ZGYzZjQzZjg3YTY4IGxlZ2FjeS10cnVuaworNjE0MzkgMjJhNGExMTFkNTk4YWUxM2JhNzBmYjcyMTMyYjAwMmM1MjNkOGFkNyBsZWdhY3ktdHJ1bmsKKzYxNDQwIDQ4MjQ3YTRiMzhlZGYwOTczZDE3YTU2NDU0NGVlYTBjN2M5MjIyYjQgcHkzaworNjE0NDIgNjJlZjBlYTAzNGY0ZTk2OTA3OWUxNjRjODA1OGYyNTE2ZDA5NzdlYSBsZWdhY3ktdHJ1bmsKKzYxNDQzIGJiNTQzYTgwOWZlMjRjOGM1MjUxZWIyNThiZjJlOWQ2MGY4NTBmMTUgcHkzaworNjE0NDQgZjExYzAwMjQ2ZmI1MjVkMTdjMzRmMjZlNmE0ZmI2Y2I2NWM2NDMyZSBsZWdhY3ktdHJ1bmsKKzYxNDQ1IGFjYmY5Y2Y1OTRmOGJkODUyNjRkNmE0NGY1ZWZjNDY4NjY0YWEwZDYgcHkzaworNjE0NDYgMzZmM2M2YmYyYzk3YmZhZmVkNjk4MWFmMjMyOWNiNDMxYTE1NzRhMyBweTNrCis2MTQ0NyAwZGI3ZmExNGM3OTQ4YmYxNDM2OGY2NWMwZGRmZjY4YjNkM2UzMDYxIHB5M2sKKzYxNDQ4IGNiMzYwZmM4ODkxMjI3NzNlM2JiMjNlNDc2ODgzMGUyMjZmZGYwZjcgcHkzaworNjE0NDkgNzEwNDc4YTE5NzdhY2ZjYzQ1YzM5ZTg2NjMzZGZiYjcyMDdlNjFhOSBsZWdhY3ktdHJ1bmsKKzYxNDUwIDgwMThmNTA2NTY2MWJhYTMyYTA0Y2QyYjg2MjdjMzlkNTgxZjA3YzYgbGVnYWN5LXRydW5rCis2MTQ1MyA3ZThjZWIzOTQ0N2VjYmJhNjZjMGVlZDc2MTg4YzE5ZjExOGRmNTlhIGxlZ2FjeS10cnVuaworNjE0NTQgYjVjYjdhNjc4ZjM4OTFmYzQ5NjdlYWE3NTMyYTg4NzA5OGNjM2EzNyBsZWdhY3ktdHJ1bmsKKzYxNDU1IGRlNmIyODM0YjhhZjk5MGQxMWEwZDczM2M1NzcyNDg5ODU3NjVmNjYgcHkzaworNjE0NTcgNDMxODI1ZWFjNGFlMzczNjNlNGU5ZmQwNGE2NzBkMjg5NTNmYjViNCBweTNrCis2MTQ1OCBkMzNjYWRiNTk1ZjY1ZGRhZjhiMDNhZjllMGU2YjdjNDkzNDNmNmE4IGxlZ2FjeS10cnVuaworNjE0NTkgNmE3ZmE4NDIxOTAyYTk1NGRlYzc3OWZlOWE3ZjRhNDYxOGIxYTk0MiBweTNrCis2MTQ2MCAyYzI2MGJlMTI0MmQ5YWZkMjczMTg0N2Q0NzJlMzdmNWViNDg4NjY2IHB5M2sKKzYxNDYxIDM0ZjRkNDdlYzQzYTRmMzZjMWI3ZDA3OGM0MTg2ZWRhYjQ4MDQzYmYgcHkzaworNjE0NjIgOWQ5YTM4YjhlYjFiMTFhMDI4MjVlYjA0NTkwYzlmMjVlMWE4ZDlmOSBweTNrCis2MTQ2MyBhMjAwYzM4N2U4YjI2NTEzNWRlMTZiNmQ5ZTk3ZjY4Y2U0NWI4YTMwIHB5M2sKKzYxNDY0IDE2YjQ0NzY0OTQ0ZWI4YTNlYTgyZGM2M2Q5MDhlMzY5OWE5NjZmNGEgcHkzaworNjE0NjUgNmMzOTNkY2Q0NWM0OGYwNzA3MzJiMWE4ZDhlOGJmZjhiYWE0OWVhOSBsZWdhY3ktdHJ1bmsKKzYxNDY3IDMyMjY5M2JmMTBjYWM2Y2QzYzA4N2UwMDFlNmE5NGMxMDIyZTQxMWQgcHkzaworNjE0NjggOTczYTIzY2Y2ZjBiN2EwOTU5ZWQ2YWI2MmNlNzliMGRlMjdiMTBlOCBsZWdhY3ktdHJ1bmsKKzYxNDcxIDdmMTNkNjkwNGUxNGE0OTRhZWVjODg5OWRhYmQ3OGMyNGVjOWQ0Y2QgbGVnYWN5LXRydW5rCis2MTQ3MiA4YTNmYTg2YzMwYTZlMmM3MmQ1YzdiYmZjMjM4YTk1ZWJmM2Y2MjJkIGxlZ2FjeS10cnVuaworNjE0NzMgMzc0NWZkYjk5MzJmMDdjNDg0ZTlmMzE1NTdiYjI4YjZhZmM1MjliMSBsZWdhY3ktdHJ1bmsKKzYxNDc0IDhkZWZhMWQ1ZjA2NmQ5MzAxOGQ4YjdjN2Q5ZjU3ZGUwZDRjMzc2ZTUgbGVnYWN5LXRydW5rCis2MTQ3NSBmZjBhYjdiMjhmNDkxN2NkODYzNzQwNzRkMmVmNDlhOTgxNWIxMmVjIGxlZ2FjeS10cnVuaworNjE0NzYgZTMxZDMxNzgxYTc1M2UwZGNhNDFkMjQ2Njk3MjllMzhlZjkxM2NjNCBweTNrCis2MTQ3OCA3OWZkYzg4ZmY5ZWNkZGU1Zjk3MjRhYjBlOWE4YzYyNDdmYTdiM2FhIGxlZ2FjeS10cnVuaworNjE0ODAgNGRhYmQ5MDcxODdlYTczOTFhNTRiNTMxZGE3MmY0MzQ2ZGQyZTE5NSBsZWdhY3ktdHJ1bmsKKzYxNDgxIDk2NmZmMTY4YjU2Njk2YzEwNWMzMDQ0ZTY2MmQxN2FhZjM3ODkwY2MgcmVsZWFzZTI1LW1haW50Cis2MTQ4MiA3YzQ4NTRmZmNkY2Q4OGNjNTcyYmVkZDgxOTRmZjVkMGZjNjA3MDBlIHB5M2sKKzYxNDgzIGMwZjE2NWUxZGJjMDVkY2U1MzM3ODMwZmE0MzNlOWRhMGI0NTgzZjIgbGVnYWN5LXRydW5rCis2MTQ4NCBhN2JiMDA0ZTdmMDZhOTNjZDg4NTczYzJjNzhiZjQ3ZjYwNzY2Yzk5IGxlZ2FjeS10cnVuaworNjE0ODUgM2RlYjcwZTQxODJhMDdhMmE3OTI5ODA1YjIxNjExNmFmY2MzZmU5YyByZWxlYXNlMjUtbWFpbnQKKzYxNDg2IDI3ZTdkYzJlNjI5MDVlOTIyOGY5ZTBhYjFiNjllNGFiMjUyZjdiOGIgbGVnYWN5LXRydW5rCis2MTQ4NyBhYTMzZmI5MGVhYTUyYTliOWJhNzllYzBhZTI3NmUxOTBhMmY5ZTQ3IHB5M2sKKzYxNDg4IDA0NDg3YWQzZDFiZWY0MTUzNTBmZDNjY2E4Y2I0ZGY2ZDc0OTU2OWYgbGVnYWN5LXRydW5rCis2MTQ4OSAzYmIwZjFhMTkzOWQ5Mzg3OGI0ZDY0OWJlYWU4ZTcxZWQ1OTE5ZDFkIGxlZ2FjeS10cnVuaworNjE0OTAgYjM1OTQ4MGNhODg2NDYwZWNmZWY4NTE2MDg5MTlhZjVhMGEzMzJiMCBweTNrCis2MTQ5MSA1YzBiNWNhYmVlYzk2NmQ3ZmVjODM2NDI5OWUxYWI4MjcyOTZkMTMxIGxlZ2FjeS10cnVuaworNjE0OTIgZWRjYjM1NDIxNzZhNTNkMTQ4MmVmYzVkMmQ4NDliNTU5ZWQ5M2IxNyBsZWdhY3ktdHJ1bmsKKzYxNDkzIDEzNzI5YzcwYzhkOGMyOTQ5OTZmMDc5ODk5MWE0YWRkOWRlNjZiMDIgcHkzaworNjE0OTQgMDQwNTAzNzNkNzk5ZGMwZDUzOTMwYzY5MTU4NWZjMjgyZTA1NzQ4YyBweTNrCis2MTQ5NSAyNTQ2MzEzYThiMjdhZDRmYWM4YWM5MmYyZjJiMzhjOWM4MDFiYTA1IGxlZ2FjeS10cnVuaworNjE0OTYgYzUyNDEwNjlmZmZkYWE5ZTdmMTM1ZmNmYTRiYzFhZjY4MDIyNmRkMCBsZWdhY3ktdHJ1bmsKKzYxNDk4IDUyNjgyYmQ3MzhhNzVjZjRjYjcxMmU2YjE4YjQzY2YzMjI5YmFjYWYgbGVnYWN5LXRydW5rCis2MTUwMyBlMjI3ZWQyY2E5ZDE1YWJiYjYxMzMxNDFiMzkxYTAyNTRiYTM5ZjJhIGxlZ2FjeS10cnVuaworNjE1MDQgZDRiYmY5YjQ3MTBmNDdkOGY3YzZjMGZkMDY5M2IwMzI0Yjk0MmY0MCBsZWdhY3ktdHJ1bmsKKzYxNTA3IDZmYzZhODA2Nzg0Zjk1ZjA2MGZlZWVmNDRiZjUzNWI2YjA0OTYyNmMgbGVnYWN5LXRydW5rCis2MTUwOCA4NjczNjQwMWQzOTQ0NDdhY2FmZTljNDU2NjQ0ZDQwMmM2MzdlOGVlIHB5M2sKKzYxNTA5IDk3MzYxZDkxN2QyMmQ0MDFhMzZjZTg2ZGZmNmFkMDliZjJlZGEyMzQgbGVnYWN5LXRydW5rCis2MTUxMCA0NjM0MjQzMTc5NTUwYWY1NTgyZGE0MGMzN2EzZDgzZWRmYTcyMDE1IGxlZ2FjeS10cnVuaworNjE1MTAgMTE3YmJkNDRhZGFlNjQ2YWViNjU0Y2NlZGJjOWMzYWU2MjY2NWNjMiByZWxlYXNlMjUtbWFpbnQKKzYxNTE1IDhmMDBhMDk0OGYwMGUyZTU3ZTc5MjA2NWFiMTczNmFkYjVhYjM1NDEgbGVnYWN5LXRydW5rCis2MTUxNiA2YzE3ZGFjNzA1NzE3Y2ZjZDQyNDBhMzg3MTNhN2Y4ZjQ3ZWY1NmVlIGxlZ2FjeS10cnVuaworNjE1MTcgOTYzOGQyZWEyZjU3YmFhMzY0NzVhODU4MjNkN2Q3MzAwNjNmNWFlOSBsZWdhY3ktdHJ1bmsKKzYxNTE4IDNiMzliN2JiMmMwN2MyNjhmOWE3MTg4NDhiMWU3ZTYzNTg1OGEyYmUgbGVnYWN5LXRydW5rCis2MTUxOSBlMTQ4Mjg1YmQ1MTE4Mzg5MGQxNTk1NmZhMzBhOTAyYzA5YzE5ZmMzIHB5M2sKKzYxNTIwIDk2NjAxZjhmMzM5MTQ0NWQ5MmIyYTU3NzJiMjYwMTY1NTkxOTUwYWYgbGVnYWN5LXRydW5rCis2MTUyMSAzMGM0ZTFjYTg0MjEyMzY2OTg5ZGY4MzNhZTIxNzcwMjVmMTc0NzdhIHB5M2sKKzYxNTIyIDliOGM0YjUxMDdmMGY1NWNiNzNjMjA3NWY2YTNjMTJmYTEyY2YyMmUgcHkzaworNjE1MjMgMjExMzllYTU5YjZiYTI1NjVmYjZiOTQ3NjU4ODAzY2I4MjVkMWUwNSBsZWdhY3ktdHJ1bmsKKzYxNTI0IDc4Y2E4YzI1NjFkYjhlNzk2NjhkMTU3NWRmOGYxZTdmOWIwODMxNWQgbGVnYWN5LXRydW5rCis2MTUyNSA2ZjBlZGEzZTkyYjM2MWIyMTg3N2U2NjQwNWI1NWY2OGIwZDdkNjY2IGxlZ2FjeS10cnVuaworNjE1MjYgNTgxYzNlNWIzNDliMTIwZDI5NjUwYWRkNjZkMTQ4ZGQwZDhlYWE5OSBsZWdhY3ktdHJ1bmsKKzYxNTI3IDkyMzM4MGFjZDFjZGQ4MDU1Yzk4YmM2NzczNWQwZDRiOTg2ODhlZTQgbGVnYWN5LXRydW5rCis2MTUyOCBjNDI0MDk5YjRjZTRiNGRlNGJhYWE4M2Y2MDBmMTJjMDRkY2ZhZDhjIGxlZ2FjeS10cnVuaworNjE1MjkgNTA3NzFhM2ZhZDJjYWFhODhmOTQwZWEzOWVmYjAwODI0YzYwYjhhMiBsZWdhY3ktdHJ1bmsKKzYxNTMwIGYzMDJiZWY4YTAwNGFhZWYxMjcxMzNiMTQyNGM1ZDU1ODIwNWZkMzEgcHkzaworNjE1MzEgMWNkOTMwYjgzNWE2MzkyOGQxNzE4MWJmZTczMThmNmI2YmMxNDgxNCBweTNrCis2MTUzMiBlYTkxOTE0YmNiOTc3NGY1ODU0OWJkYTkwMzViNWY5NzQyY2Y4YjZlIGxlZ2FjeS10cnVuaworNjE1MzMgYTYyOGVmODJlYjdlMGM5ZTM5NWM1YzhiMDQ2OWZjN2VlNzdkOTA4MSBweTNrCis2MTUzNSBlMGU4YmVmMGQ1ZWNjYjI3MjRlMTQ3Mzk5NjdmM2VlZTA3YjhlYjZhIHB5M2sKKzYxNTM4IGNjNzU4ZThkZGM5ZDc5NDA1MmFhMGFkMDg2NTc5YTIxYzQ3NzlhYmMgbGVnYWN5LXRydW5rCis2MTUzOSA5NGE2MDgyYTc3MGZhMzBmY2Y4NWQwYmQyMWJkNzI0OTk1ZjEzODZhIGxlZ2FjeS10cnVuaworNjE1NDAgM2E3MmNiY2MxYmI4MDZjMmI2OWM2YzVhZjI1NzVmZDQxNjg5YzJiNyBsZWdhY3ktdHJ1bmsKKzYxNTQyIGViNmQwMDc0NTNiYzJjMjc5ZDA5NjE2MTNlMjA3OGRmZWEzNTAyMGMgcmVsZWFzZTI1LW1haW50Cis2MTU0NCBkYzRkNjhhZTlkM2RiZjA0MTU5NzY4N2RiZmQxNmIwNDQzM2Q1OTcyIHJlbGVhc2UyNS1tYWludAorNjE1NTMgMGQ3NjU5YzJiOTk4NTI3NGI2NjMxYzZhMWIwNzI2NWJmNmY1NjczMCBweTNrCis2MTU1NiA1MTU2MzM2MTU3MzVhZjA2YWI4MzZmOWQxYWQ2Nzg0NWIxNDcxYjRiIGxlZ2FjeS10cnVuaworNjE1NTcgYmNlNjlkYjcyZTAwNDNjNTgxMmI3OTBhNzU0MzhhNWM2NmU4NTZjOSBweTNrCis2MTU1OCA4M2M1NWFjZmI5NTk4OWFlODkxYjdmYzA3N2MwMzk0MDk2OGRlMzUzIHB5M2sKKzYxNTU5IDFiYjY3ZTUwM2RmZmNhNDM2NGRmNjRiNTNiZmNlNjVhMmJmYjdjZmMgbGVnYWN5LXRydW5rCis2MTU2MCAwMDVkYjkzNGVlMjVlZjk5MGJkYWI1ZWE1NmZkZWQ1YjZjZWZlZGZjIGxlZ2FjeS10cnVuaworNjE1NjEgMGU3OTc5M2ZmZTg3MDVlMWQ1ZTgxMTUwZGZmMWU0ZWI4NWI4NjYxOSBweTNrCis2MTU2MiAxNmM1NzZkZWU5ZDNiYWMxODRiNDE0OTM2ZmRjZGRhZWExMjZkMTUwIHB5M2sKKzYxNTYzIDJmNjQwZjBmMDY5NzZiMmVhZDkwMzkzM2Y2NjBhMjAzMTBiMjExODAgbGVnYWN5LXRydW5rCis2MTU2NCBlZTBkZmNjZjhjZWU2ZWNlODg3YmQ1MzkyNjc4Nzg3MjhiNjU5YWMyIGxlZ2FjeS10cnVuaworNjE1NjUgYjBkMDE5NjliYmM4N2RlNDVkYzE3Yzc3NmY1YjE4YWQ2NjEyNWZmOCBsZWdhY3ktdHJ1bmsKKzYxNTY2IGYzYmUxMjIyMGZkN2UwMWJiYjJhODA2NWNiZjFhZDZmNGM2ZTgwNjAgcHkzaworNjE1NjcgZmE3MGU2YWU4MzFhZTFkZWFkMWI5YWRiYWZlMGZlNWY1NjJhMWU2MSBweTNrCis2MTU2OCAwNWFjM2MxOWI3YTgwMzY0MzI1NmFhYWM5NzYyMWFjYjA1ZmEzOGQ1IHB5M2sKKzYxNTcwIDg2MGUyM2E2MWU1NTEwZmJjMzNlMzhhZjNkNTY1MTEwZGM4N2I3MmEgbGVnYWN5LXRydW5rCis2MTU3MSAyODkzYzAxMjlmZTVjMzYwMmE2NTM5MzY4ZjNhY2RhNGQ3M2IxOGFlIGxlZ2FjeS10cnVuaworNjE1NzIgYzhjNTQ3YzUxZjlhNmYwYWU1NTAzZjA5NWUwYjkxZDBiZGM3N2E0YyBweTNrCis2MTU3MyA1MWUyNDUxMmUzMDUyODU1NmMyYmI3MWE0YzY4MDI2MTA4Nzk3NzJiIHB5M2sKKzYxNTc1IDIzODVlMTZhY2I0Mjc5ZDUxZmM3MWFjMDkxZjFiYTI2MDlhZmM2YmMgbGVnYWN5LXRydW5rCis2MTU3NiA5NmJkOTcyMmUzMWQzMDA5MjVhNmE2MzFlZmNkY2U0YmE4Nzc2MzczIGxlZ2FjeS10cnVuaworNjE1NzcgNzI3Zjc0M2NmNjMwYjFkMTllMGUyMjZhMTg3MjY1MDJkZjczOTM4ZiBsZWdhY3ktdHJ1bmsKKzYxNTc4IGY3YTZmMzM5NDMxMDY3NDAyMjE0ODdmYWM4YjA2YzhkOTM0YWQxMzAgcHkzaworNjE1NzkgZjA5NmVmOWM0MTE0Zjc1N2ZmZTNhNzAyZjkyZTY4NWNlYjQzOWVjZCBweTNrCis2MTU4MCBkODdkN2ZjMmMyYmYzM2FkNTAyZWZlMjA5ZjdjM2FiOTI4NGVjMmEwIGxlZ2FjeS10cnVuaworNjE1ODEgMTlkNGI2OTdmYmY5YWQ1M2MwMDQ1NjJjMzdiN2FmOGM1OTdjZGU5ZiBsZWdhY3ktdHJ1bmsKKzYxNTgyIDczM2MzZWUxOTg5OTY2N2Q1ZjY4Y2RkMWNiNzllOTFlYjE4MDI3MTcgbGVnYWN5LXRydW5rCis2MTU4NSBjNzdlMzExOWUyNjc1ZTA4NjEyYjk2OGVkZWY2NzgwODg4NjY0NGRlIGxlZ2FjeS10cnVuaworNjE1ODYgMWRmYjlhZTc4YTM3MjdjZjgzZTQ1MGQ2YmYyOGJmZGQxNjE4ODljYSBsZWdhY3ktdHJ1bmsKKzYxNTg3IDRjYTcxMTlkMTcwMDVkZjYxNTExYTVhMDQ0ZTE2ZDhhOGM0NjQzOTkgbGVnYWN5LXRydW5rCis2MTU4OCBiODRlMGUyM2NhYmQ4OTA0NzVhNTc4MTYxMGU4NzYzY2JmMTRmYTQxIHB5M2sKKzYxNTkwIDdmNzc3MDcxOWU4NDg2OTljOTE0MTg0NjJhMmE4NTMwMDE2NjA2NjAgbGVnYWN5LXRydW5rCis2MTU5MSBkNGUxZGI4Nzk3ZjZkYzgwY2FmYzEzZWQ4ZWFmNWQzZmEyZDJlNjNiIGxlZ2FjeS10cnVuaworNjE1OTIgODE5MTE2OTUwMDk5MDg3YmVhZmFlYjhkYzIzOGM4MDNlNzc4OTVkZSBweTNrCis2MTU5MyBkNWNmZjdmOWExNDJiZTcyMDYyNGNhYmU4NjkwMDQzMTRhMjQ2MWEzIGxlZ2FjeS10cnVuaworNjE1OTUgMmEwMTA3NWNkOTAyMTQyNzI3YWU2NWE1ZjU4Yzk4ZDUwODVlMDkzMCBsZWdhY3ktdHJ1bmsKKzYxNTk2IDMwMjYyNWZhNmEyYTY5YWRjOGQ3OTI0MjllZDhlODg0NjdmODBkMmUgbGVnYWN5LXRydW5rCis2MTU5NyA0NTk3MGIwNGNlODNlMmQ1MzQzNzQyOGM2ZWIwNDJhYjY0MjM5OTk0IGxlZ2FjeS10cnVuaworNjE2MDAgOTYzZDY3ZGYzNzIzN2U1ZGM4YTExNDZmNWJiY2ViNmNiY2M3ZmM2NyBweTNrCis2MTYwMiBhOTg1NWRiNDBmZmIzM2Y0YWIwYjRjOTM4NjM4ZGRkYjVmYmNlMmU1IGxlZ2FjeS10cnVuaworNjE2MDMgMWRhMjQ5OTY4M2I0M2MzZTBkMTc2ZTk2MTAyYmE3Yjc4ZTc3Nzg1MyBweTNrCis2MTYwNCAzYjMyM2ZmOTMwNGM1ZjA1NzYyMmJmZmNjYWJjOWU0ZWI2OWI4ZmVmIHB5M2sKKzYxNjA1IDQyMmI0OWRmZDE1YjUzYzNlNzU1MGE1YmM1ZTM1ZTRiYjU0ZTQ1YjYgbGVnYWN5LXRydW5rCis2MTYwNiBlMGM5YjllZjA0NjYwZjlmYjgwZWMwNDU2OGIxYzQzZDNmMjJkNWM0IGxlZ2FjeS10cnVuaworNjE2MDcgNDI4NDcxOGZiNjMxZmFkZDMyMjI2ZjQ1OWZjZTk0OTY0ZjA5ZjlkNCBweTNrCis2MTYxMyBhZDFkNjA0YmM4ZWQzNTMwMTRiYjJlNGQ0MzJiOGQ5YzU0YTcwNWIyIGxlZ2FjeS10cnVuaworNjE2MTQgYWRiYzkzNGJmMWZkNTEwMjc1NTczMjg0MGI3OGM3NjU3NzAwODUzNCBsZWdhY3ktdHJ1bmsKKzYxNjE1IDIxNDc3YjFiYTU4MTdjNWM4ZTJiOGE5ZGY3MzVkNzk4NjYyYjRiZDMgbGVnYWN5LXRydW5rCis2MTYxNiA1Y2MwNGEyMDQ3NjZmMmU3ZTU0MzBhMjI0NjQxMGI4YmI3OGJiNGFiIGxlZ2FjeS10cnVuaworNjE2MTggODU1YzQyOTBkZmQ3YWEzNGRiMDllM2ZmZGJiZGM3ODJlMWQ0ZjAzNSBsZWdhY3ktdHJ1bmsKKzYxNjIxIDc0YWI4YmQ5NmM1ZGViM2EyZTBmMDRiMmU1ZWM0M2ZmZWRhN2YyNjkgbGVnYWN5LXRydW5rCis2MTYyMiBiMGI2MDhlNTc5Y2Q1YWUzNjBkNzBhMWNlYTUyNDNhNjA3MjYwMTA0IGxlZ2FjeS10cnVuaworNjE2MjMgZWJjMTMwYTRhMjczODI4ZjY2YWQ2ZmJjNzM2NzA0YmYxYjY0MTU3YSBsZWdhY3ktdHJ1bmsKKzYxNjI0IDkzZjk3MDdiNjY0Y2U0YWNkOTQ2OWIxODBiNmI1MGM3NjM4NmNiNjIgcHkzaworNjE2MjUgMzMwZjU3NGM1OGY3YzNkYmVkNWVkNGQwMzdjYjZmNTNhNmIwYTM5NCBsZWdhY3ktdHJ1bmsKKzYxNjI3IDg4MTdhOGUxMmE1NTllY2E4NzMyMGNmZjExMjAxZmRjMDZlNGYwY2UgbGVnYWN5LXRydW5rCis2MTYzMSAzYmYxOWMzMWM5NTZmMTQxMjRkM2FjZjViZjJkYzFhYmRmY2IyYjZmIGxlZ2FjeS10cnVuaworNjE2MzIgZGM1YmUwYjNjM2JlN2RhNDI2NDZkNDYzMmU2OTgwMGQ3ZjhhOTFhNyBsZWdhY3ktdHJ1bmsKKzYxNjMzIGU2NjVhMGIxNmRhMGU4N2IwYzNhMDM2YjNiNTQ5MjZiODM0YzBlOWYgbGVnYWN5LXRydW5rCis2MTYzNCAyNDI3NTU1MmM5NzMxNzE0MjE5ZTEzNWVmMmVmODU5NDUyZGE2NDcyIGxlZ2FjeS10cnVuaworNjE2MzkgNDQwYjA4YTMyZTBiM2Q1MDRmNTMyNWVjYmJlMGJlNTIyYjBiZGUyYyBsZWdhY3ktdHJ1bmsKKzYxNjQzIDE2NTdmMGFjY2E3ODIwMjEwNWQ3NzM2MDIwNzg1M2RmNWNhMDVmMjAgcHkzaworNjE2NDQgYWUzYWQwNjU3N2M3ZDdhNWQwZmRjZTY5YzgyNzRmYTZjN2Q1NmIxNyBsZWdhY3ktdHJ1bmsKKzYxNjQ2IDJkYTBiZjJlMmY1Y2MxZjNhYzQ2OTg3NGE2Y2RjYzk3ZjM3MjZlMDMgbGVnYWN5LXRydW5rCis2MTY0NyA2NWYzNjEwNGZjYWQ3MmNhODkyMDRlNmVjNDMyMTZiYjhiMWM1NTRmIGxlZ2FjeS10cnVuaworNjE2NDggMzk4OWZjNjFlNzg5Yzg5NDUzNjhkMzYwYWY1ZWY4MjFmYTgwNTZiNCBweTNrCis2MTY0OSAzYWE1ZWIxODI5MTMxNTAxOTA3ZjMwMDVkYmI2YzgxYzFhYzE4MWEwIGxlZ2FjeS10cnVuaworNjE2NTAgMjkzYzYxMDZmYmUzNDk3OTgyYzk1NGRjNjBlMjUzZDE3MjIyMGE3NCBsZWdhY3ktdHJ1bmsKKzYxNjUxIDY1MDllZjhiZmU5YzM2M2RjN2ZiNTQ3NjY3ZTllZjY2NDNkNjE4YWYgbGVnYWN5LXRydW5rCis2MTY1MiBjYmFkMWY1Y2FiYjE1MTFkY2ExNjA0NWViN2FiNTA2NGUzNTNiZTNiIGxlZ2FjeS10cnVuaworNjE2NTMgZTg2MjgyMTk5NDY1MTk3YjFhMTY0MTE3MWRjNGE5M2IwMGEwZjdkOCBweTNrCis2MTY1NSBmYzkzYmY1ZmVjZTFkNjQyYmI4YmRlNThjNTM5ZGU0ZjFjOGZjNjhlIHB5M2sKKzYxNjU2IDhiMGI4OTAyNWQ5ODI4YjNhODBiODIyMWExYjRkZGJkNzEzNjVjMGQgbGVnYWN5LXRydW5rCis2MTY1NyA1YmQyYmRiMzllOWNkZWY1ZjM0OTBkZTIyYWQwNDdiZWQ3OWE5OWM2IGxlZ2FjeS10cnVuaworNjE2NTggZDAwYTlmNzVkMjIzZDkzNGUwY2VjYjZjYWMyZjNmOWEzZWZlYjJiZiBsZWdhY3ktdHJ1bmsKKzYxNjU5IDBmZGIzNjE2Mzg0MWQ4YjY5NmE5OTAyYjBkYjhjMDZlOWMyOGJlMDkgcHkzaworNjE2NjAgZTAyMDNjNjU4Yjg2NTAxZDlmNTEyYWEwYTY4OWMyNWE1ZmRmOGZkYSBweTNrCis2MTY2MSA5YTQ3NzA5YTI4Yjc5ZjRiYzZjMTUzZDg4MjRkYjI5ZTBjMjMyNTM4IHB5M2sKKzYxNjYyIGZjMjEwNjczZWVmMDE1NDQ0Mjg2MmI4OTQ1NTc0OGMwNTc4M2ZlYzAgcHkzaworNjE2NjMgNjBkYjlhNjc4NTUxZDE3NTA3MGIxZGYxN2Y4YjVlOGZmNDdlMTBkMCBsZWdhY3ktdHJ1bmsKKzYxNjY1IDZhM2VmM2M5MDk1YzA1OGY3YWRiZmQwZjBiNGViYzkwMTNiMzg2NmUgbGVnYWN5LXRydW5rCis2MTY2NiAxMzJjZjNhNzkxMjYxZjRjMmI1MDJhYjhmODVmZDM5OTgyNjQ5NjY3IHB5M2sKKzYxNjY3IDA2ZTY0MWNiM2EyMDA3M2ZhOTA2YmIxMzgxY2JhYjc0MzQzZGI1ZTEgbGVnYWN5LXRydW5rCis2MTY2OCAzOWE0ZjQzOTNlZjE5ODI0MDQzNjk1MjRmYzgzZDRlNjRlN2Q1MzVmIHB5M2sKKzYxNjY5IDhlNWVjNjliNzZhNzRjNTBkYzEyYjUxMjE3NjM2MjMxZmZlOGYwNDIgcHkzaworNjE2NzAgMzZlMjk2ZTY2ZDIxNmFjOTdjZThhOGM3MzQ0YTVmMjM4YjhhNzYxNyBweTNrCis2MTY3MSAxMzM0OThiOTFmMWM0MDNjZjU2NjFmZDg5N2Y4NWQ5NWNmZjExZmRlIHB5M2sKKzYxNjcyIGM5NTY2M2M2ODRjYWY5YTFlNDIxZjk0NWFiYTU5NTk0NDEyYzMwOTEgbGVnYWN5LXRydW5rCis2MTY3NCBkOWVjMDY4YjA4ZjMwOTQ3ZTg5NWVjZmNhMzlmZWJmMjExMzA2ZTZmIGxlZ2FjeS10cnVuaworNjE2NzUgN2QyZTFhYzgzNGI4NWY3OGM5OTU3ZDU2MzBkYjA5NmI3OTNmZmQzNCByZWxlYXNlMjUtbWFpbnQKKzYxNjc2IGQxNGE5ZTVmODBhZThmYzIzNDlhNTM0MWZlZmY0MDJjYTA3NzRlZTMgbGVnYWN5LXRydW5rCis2MTY3NyAxYzdjMDhkMjlmZWVlNWQ3MWExNTg1MWZkZDllYjkxMWUyYWZlZmEzIGxlZ2FjeS10cnVuaworNjE2NzggZDUxMWUzMjE3NDNhOTExYTViOTEyNDliOTY0NTMxZmI1MGZiZTg1ZiBsZWdhY3ktdHJ1bmsKKzYxNjgwIDI5MTMxODkyNjExYzU1Y2Q0NGUxNWU4NzY4NmUyNDY3NzJhMTI3MDAgcHkzaworNjE2ODEgN2NhNTdlMjJhNTIwNzg5NDBkODhmMjcxNWRhODNmMWM5YWJlNTRiMCBsZWdhY3ktdHJ1bmsKKzYxNjgyIDkxYWM4MDQ5ZTcwOTM0MjJlYjgxYWI3MTUxODk4YjEwZDZjNmViYjkgcHkzaworNjE2ODMgZTgzNjBiNWQ1YTEwNzQ4NDQ0YTE2Mjc1Njk5MmFhZGNmYTM5NGE4YyBsZWdhY3ktdHJ1bmsKKzYxNjg0IDY5NjIyNWI1ZDU1NTU5YWIxZDc2OTI3NjU4MDcxMTZjYjZiODA0YjUgbGVnYWN5LXRydW5rCis2MTY4NSBmM2Q4MzhkYWI0MGVkYmQ1OTY5YTEwZWUwZmZhODYwZjRlNTNiNGI1IHB5M2sKKzYxNjg2IDI4NzMzYWRhNGQwMzFkZTE4OTg3NzVlZmU4NzdiMGQzZmVjZTA2YmMgcHkzaworNjE2ODcgN2M2NjY3YmI4Zjg1MzQ3NGU1ZTc5MDE5MDU2ZDc3ODU5ZWNjZGU0YyBsZWdhY3ktdHJ1bmsKKzYxNjg4IGFhOWRhNGEzYzk3Y2UwNTZkN2I3M2M4NDdmMTc2ZGNjNzY5YmI4YWQgbGVnYWN5LXRydW5rCis2MTY5NiBjNDVhNDU2NjkwMTdiOTI1MGVmYzZmMzVhZGI1MTM2NDUxOTBjODgyIGxlZ2FjeS10cnVuaworNjE3MDAgOGY4YjAzYzJiYmZmMDE3MmM5NjU5Y2JjYWY4NmNkNTRiNmRhMjg5NiBsZWdhY3ktdHJ1bmsKKzYxNzA0IDk0NGQ4N2E5YmJkMGFjZGQ0ZDFhZjgyM2QyN2M2ZjY0Y2U3YWJmYjEgbGVnYWN5LXRydW5rCis2MTcwNSA4ZWYwNWFjZWVmMmI0YTllNzQ3MDZlYTE2ZTg0MjUzZTQwMDI4N2I2IGxlZ2FjeS10cnVuaworNjE3MDcgNzA0YTg2NGVjYjAxNGM1MDc2OWI1YTY3NzM4N2JhNDdmOWQ2ZGNiNSBsZWdhY3ktdHJ1bmsKKzYxNzA4IGFkYjVjYWIzMDFhNmVlNTVmYWU4NWZhYzk0MWE4YTA5YmFmMDRkYzUgbGVnYWN5LXRydW5rCis2MTcwOSA1NDRhNDZkZjAyMjJkYzkyNjk4NTNiOTMwZTA1NDVjMTg5NWMyY2E4IGxlZ2FjeS10cnVuaworNjE3MTAgZjBlNGQ5YjQ1ZTdmMzYzYTJhYTMyOWNkYjhkMWJiYWM4MmFiMjNlYyBweTNrCis2MTcxMSA3ZjAzNTU5MmQ2ZTFiZjUwYjQ1ZmRjMjdlMTJmODhmNGExYTAzN2Q5IGxlZ2FjeS10cnVuaworNjE3MTIgODVmYmQxZDI2NWEyOTUxMzliNDAzYzFlNjlmMzM5NWU2Mjg0NWM5NiBsZWdhY3ktdHJ1bmsKKzYxNzEzIDQ0MTUyN2JmYzc5Y2M3M2QwNWQxYzRiOTU3N2Y0MDNjYmVlNTRjYmEgcmVsZWFzZTI1LW1haW50Cis2MTcxNCA5OTM1NWJhYTc0OGRjZDRlNjE2M2I2MWFlNGQxNTdiMGQ2OTJhZjA1IGxlZ2FjeS10cnVuaworNjE3MTUgMjI3NTYxMmMxNmE5ZmMxNzM4ZDFjMGU0NGI4MTc4Yzg0MjM5MDJiMyBsZWdhY3ktdHJ1bmsKKzYxNzE2IGJmMDdiYWQxZDcyZjYzZmM4OTA1M2UwODhmMDczOGM3YWNkNDMyMGIgbGVnYWN5LXRydW5rCis2MTcxNyA3MmRjMTZlODAxNzkwZTIzZjE0YjAyMDU0NmQyZmQ2MjcxZDNkMGNlIHB5M2sKKzYxNzE4IGQ2NzkzZWNlMzI1NDRkZTY4MzIxNjIzYWEyZTZhOTMxYTEzOGFjNDMgbGVnYWN5LXRydW5rCis2MTcxOSBhMDI1MzcxODQ5OWUzYjZhYTVhZDk0NDZhZjhmZWI1YTdmNTRjYmMwIGxlZ2FjeS10cnVuaworNjE3MjAgMWY4YmE1ZThhMmZhOTNiZGJlNzA0NzhmN2EwNmVlMTFlODIwMjU0YiBsZWdhY3ktdHJ1bmsKKzYxNzIxIDJlM2Y4NmU3M2ZhMjc2MWU0ZjU2NzdhNzM0YjY5ZjcxZjc5NzhiMmMgbGVnYWN5LXRydW5rCis2MTcyMiA3MjhkYzEzMzI3YjJmYjk0Y2NiOTFjM2U2ODFiYjJhODMyYTE3ODA3IGxlZ2FjeS10cnVuaworNjE3MjQgZTQ3YzNjN2JiZGRjN2I3YmJmNzY3NDRmNjkwMGZkYWQ5ZTRhNDZiZCBsZWdhY3ktdHJ1bmsKKzYxNzI1IGE3Mzc2ZDE5MmE2ZDc4YWIyMDQ2MGVlZTE0YTM5OGViNTM4ZjI3NTggbGVnYWN5LXRydW5rCis2MTcyNiA3YWE1MmViOTA3NGY5ZDJhOTkzN2QzZGQ3MjA3NGY5MjdhYzNkN2E0IHB5M2sKKzYxNzI3IDhjMWZmOGU1NDczOTcxMWE1ZWVhYWY4MjIyYzc2ZTdkZGZkNWFjZGYgcHkzaworNjE3MjggMzc2YjVjYjhhMDE0MzU5OWZiYzM2MmU4ZTNkYzVkNDQ0YTZmOTAxNCBweTNrCis2MTcyOSA3ZjZiY2E3OGMzNjQ4NTc4OTQ1YjA2ODEzMzg3NDY3MmEzNmM3M2ZmIHB5M2sKKzYxNzMxIGNkZWJhMjBjY2Q2YTAxZDRlZjNkNmJlYTljOWE0NjlhNzA5OTI3YWUgbGVnYWN5LXRydW5rCis2MTczMiA3MjY0YzA1MWEzOWNiYjQ0MGYyNTgwZDRkODQwMzVhY2ZlMjViODRlIGxlZ2FjeS10cnVuaworNjE3MzMgNjFmNWM2NjNiNDlkOGJhZGU0N2ZiNDA2MDhmYzIwNzNkNTIwNDJlMyBsZWdhY3ktdHJ1bmsKKzYxNzM0IGE5OWNhMWU1NzVlZDk3NTgxYjQ3NWQ1MWI0ZDgyZDQ5ZGRjM2QwNmYgbGVnYWN5LXRydW5rCis2MTczNSAyNDA4MzMwNWQxYzcwNDY2MTVhOWM1YjVmYmFiMDBmOTE4NzlmYjlkIGxlZ2FjeS10cnVuaworNjE3MzcgMTFmYmM4YWZlMzA1ZmUzMzllYmFiM2NjMjRhNTIzMDJiZWY5NTVjYyBsZWdhY3ktdHJ1bmsKKzYxNzM5IDA0YzIxNDg1NjRlNDU5Y2ZkOWI0ODQzYzNmMzk1MTRlZjRkZjFkNzAgbGVnYWN5LXRydW5rCis2MTc0MSBlZWViNmI5NTJkMmY4OWVhZTQ2YmQzZjI2N2MxYWJkODIzYzJlNDlkIGxlZ2FjeS10cnVuaworNjE3NDMgZjk3Nzg1YzdkZTliNjIwMWUwY2IyZjk4ZjQ0MTAyMzNkNWVmNjBjZSBsZWdhY3ktdHJ1bmsKKzYxNzQ0IDIyNjdjYTE0ZDU0YmFhNjk0MGZiM2M5NjExODk1MDJjYTE0MzRkY2IgbGVnYWN5LXRydW5rCis2MTc0NyBiNDk3NTRlYTk0ZGI5MjZkMTU3ZTAwYTRlYzJjZjBjNDIzZTg0M2QxIHB5M2sKKzYxNzQ4IGIwYTQzYmQ1YzI4MTgyYmFmYzI2YTA3NTUzZTIzMmNlYTU0MjIwMDUgdHJ1bmstYnl0ZWFycmF5Cis2MTc0OSA3MDgzNGMwZTQ5MWJkOGJmMTRkOGI0YmNjYTE4NDE4ZDgxZDMxYmE1IHRydW5rLWJ5dGVhcnJheQorNjE3NTAgNDM1NjQzYjc4MGM3MTlhNzAyMWVjOGQ0Zjk5YzdjNjExNTc0YjEyZiB0cnVuay1ieXRlYXJyYXkKKzYxNzUyIGM2MzJmOWUxZWE1ZGJkNGE3ZjkxODYxMDk3NTUzNjcwNmM4ZjU0NjkgdHJ1bmstYnl0ZWFycmF5Cis2MTc1MyBkNGJhNWJkMTE1ODBhODc3OTBiNjEyZmI5YzYzNGVjMWI5NWE2ODM1IGxlZ2FjeS10cnVuaworNjE3NTQgZGZhMGEwMTFhMjQzNWE2MzcxNDRjOTVmZWQ5NjhiMDJmYThkY2Y0YiB0cnVuay1ieXRlYXJyYXkKKzYxNzU2IDY2NjcwMDg4OTRlMGRiMjZlMWNlOTI4MWU2M2FlMjRmMmEzZDRlYWQgdHJ1bmstYnl0ZWFycmF5Cis2MTc2MCAyNDhmOTI3YmE1N2ViMjYzYzBkZDZjOGM0OTkxZDM0ODczOGMyODIyIHRydW5rLWJ5dGVhcnJheQorNjE3NjEgNzUxZGU2MTZlMDgwMTdmYzBiMThkMWE2Y2Q1NzI2MzVkY2YzMmFkMCBsZWdhY3ktdHJ1bmsKKzYxNzYzIDAxMjJiNDZjZTRlMGJkZDRmNWE4NDRmMzNiNDUyMGY2NjQxZDg0MGEgdHJ1bmstYnl0ZWFycmF5Cis2MTc2NSBmMmFiNTBkMGZhOTA4ZWJlNzlhMTJlZGE4ZGRiMWVmMjg5MmYxNGUzIGxlZ2FjeS10cnVuaworNjE3NjYgMmU1YWIzNWNjYWYxYWRkYjIzY2E3NTkwM2E5ODA0MDM0OWQ2ZDZhOSBsZWdhY3ktdHJ1bmsKKzYxNzY3IGQ2ZjBlM2U1NTZhNDUwOWUzN2FkYjA3ZWUyYTI5YWFkMTE4NWUzZjQgbGVnYWN5LXRydW5rCis2MTc2OCBlNjdmNDIxYTIwYjBiMWJkYmVhNWQzYjYxZjZjNTUzY2ZiYzJiODE2IHRydW5rLWJ5dGVhcnJheQorNjE3NjkgMzFjZjM4YmRhYWMwY2IwM2U3NGM3ZTFiMWQ1ZWZkMmE2NjIzM2Y0NCBsZWdhY3ktdHJ1bmsKKzYxNzcwIDEwYjBkODFhMjE0NWRiZGUwYzRiMjRjODhjMzM4ZGMzNTUyZTUxYmIgcHkzaworNjE3NzEgOTU3Y2JhNzU1MzE1YjQ2NTE1MjQzMmMzNDdjMjdjYjk1ZmYwMWU3YiBweTNrCis2MTc3MiBmYjFkMzVjZmI4ZDJkZGE4MmZiNzQ5MmRhNzQ4OWFlNzIwYzU2NGFjIHRydW5rLWJ5dGVhcnJheQorNjE3NzMgZmE0MThjZGYzYmZlOWYwNDBlZWY5YmIyYmNkM2FkYWQ2Y2U4ZWNhOSBsZWdhY3ktdHJ1bmsKKzYxNzc0IDI5NmY5YmM0MmI5NjNlZmQxMzc4YjU3MmJlY2E4ZDljOGUwZGExODIgcHkzaworNjE3NzUgM2YwZTNmYjI3MmE2MjFlNmQzMmUxNTI3NGU4MjAxZTc0ZjU1MWY0MyB0cnVuay1ieXRlYXJyYXkKKzYxNzc2IGY0YzUwYTUxZDI0ZjBiZjMwMDEyNGFmZjhlMTFkYjNkMjYzZGNkMGEgbGVnYWN5LXRydW5rCis2MTc3NyA3MjJiZWY2ODM1Yjk0NGZmYTMwMTdmMTgwNTcwYzJmYjUyNGYzMjlhIGxlZ2FjeS10cnVuaworNjE3NzggYWY4ZmI1M2E1NGZkM2Q0NGEwODYyNzg0ZDViYWJkZGFkMzEyZmVmOSBsZWdhY3ktdHJ1bmsKKzYxNzc5IGE4ZjU0YjZhOGMxODU1ZDQ1ZjI0NWEwZTRlMDgyN2NhNmNmZGY0YjEgbGVnYWN5LXRydW5rCis2MTc4MCBjNjRjN2I3MjdjNjI1OGU0MzQwOTllZGRiOTNkYzAwZjgxNDEwYzBhIGxlZ2FjeS10cnVuaworNjE3ODEgN2RhNWI2ODk3MWE1YTlmMGZkNzhkZmQ0YTM3ODA2NDE3NzhlNGE3NCBsZWdhY3ktdHJ1bmsKKzYxNzgyIDk2MzRjMTdlOGZlNTYyMDUwOWMxZjFjNDgyNTRjOGNkZTA3MWQwMTYgbGVnYWN5LXRydW5rCis2MTc4MyBmMWVjYjNlOTc4ZGI0OWQ1N2E1YTgzMmFkNjUzZmQ2ZDQ0ZDU4NThkIGxlZ2FjeS10cnVuaworNjE3ODggNzU2M2Y0ZDJmMzZlYTQ2OGRiY2UzMjcyOGNlMjA2MjgzZDUxNTBmYyBsZWdhY3ktdHJ1bmsKKzYxNzkzIDg3MTBiYTdmYmEyYmVhN2Q0Y2ZiY2RhYzRkZTE4N2I3ZjA0MDU2NGQgbGVnYWN5LXRydW5rCis2MTc5NiBmMWU1MTc4NTk0N2Y1YjVmMTVkMzJkZjQzZTQwZDYyNzZlZmQ0Njc5IGxlZ2FjeS10cnVuaworNjE4MDUgNzI5NmNjYmI4NThjMmI4OWVmNTBmOTg1NzMyNjA5NjhlYTBlNGY5MSB0cnVuay1ieXRlYXJyYXkKKzYxODA3IDFkNWExMTYxOWVjYTg4Y2U3Nzk0NTkyNDczZDhlM2UxODA5ZTg3ZDEgbGVnYWN5LXRydW5rCis2MTgwOSBkZjVjOGI5N2NiMmExZmExZmY2NDVkZmVjNjUzM2EwMWI5ODMzMTgyIHRydW5rLWJ5dGVhcnJheQorNjE4MTAgYzFmYzZlMGE5NGI5YjdjMDQ4Y2Y0NDAzZTQ5NGVjYzM4OThmYzQxOCBsZWdhY3ktdHJ1bmsKKzYxODExIGFmMWIwZjk4ZGFkZjlkMWJkZDA2N2ZjZTQ1ZTJhNWY5OGJiNTUzMTggcHkzaworNjE4MTIgMzlkYzk4NWM2ZmM2MDY0NDA5NmY3ZTc4ZjY1NGVlM2JjNTg2MGQyMCB0cnVuay1ieXRlYXJyYXkKKzYxODEzIDQ2N2MxNmE1MDM5MmNjMGI1ZjRlMzc0MzYzMzdhZDZhMDQ4OWZmMDIgbGVnYWN5LXRydW5rCis2MTgxOCAwYTQ4NTU5M2FlMWNlNWQzOGViNzAxOWI1YzE4ODQxZWY2YjA4MDQzIHB5M2sKKzYxODE5IGQwYjkxYTkwYmFjYzk1M2Q3NDQ3NjZhNzAxNjdmMTIxYjVmZjhkYTggdHJ1bmstYnl0ZWFycmF5Cis2MTgyMCA1ZTkxNjg1ZDljMDY4NTJkZWI5NzdmYzBhZTFhZTM0NmE3NmMyMWRjIGxlZ2FjeS10cnVuaworNjE4MjEgZjViMWZhMTIxNGYwYTE1NGY4MDFiZTI1NTE1YzAxOWMxYjQ5OTVlNiBsZWdhY3ktdHJ1bmsKKzYxODIyIDdjYWFhYjA0YTRkOGRhMzI4MGYwOTVmZDAyNmM5YjQxZDZhMjcwMmQgbGVnYWN5LXRydW5rCis2MTgyMyA1Y2E5Mjg0MDJlNTQzNjVjZGRlM2IwYjNmNDE5ZDBhNTFhMjc4ZDI4IGxlZ2FjeS10cnVuaworNjE4MjUgYTM5Y2YzMzUzMTJlNzdjYjU5MmU2M2NmNTJkNDc3Zjk1Mzc2NWRjOCBsZWdhY3ktdHJ1bmsKKzYxODI2IGJmZWU4NzNlZGYzZmY2ZjdiMDZkYWE2NTgyYzAzNDE4Yzk5YzI0Y2UgcHkzaworNjE4MjcgNjgwNTFmOGM2NjE4ZWRiOGZlOWYwMTlmNjk0MGVjNTg1NjM5ZTAyNyBweTNrCis2MTgyOSA0YTZiMDkzYjMxOWJiZmM4ODA3MjEwMjZhOWJkZmI4ZWVjNjc3NzMzIHB5M2sKKzYxODMxIDM3MDhmMDkwNmVmNWU2ZjIzYzFhZDZhMGI2YWZmYzUyYzU5NTJmNjkgcHkzaworNjE4MzIgNWYwNGUwMmJiNDBjNWQ1NmRjOTRjYmFlMTAzMTRlY2M5ZmZiMjU5OSBweTNrCis2MTgzMyAyY2NlOTE3ZDc5OTYzZDhkNmJhYjBhM2U4ZjFkNWYyNTVmZjA4YmE2IHB5M2sKKzYxODM0IDhjMjYwNGZlNTg4NjhhNTVmOGNiMTIwZDM5M2FkMTYyYzM0NDFjMjQgbGVnYWN5LXRydW5rCis2MTgzNSBkZjkwNzc0ZjkyYjA2OWQ5MGQ3OWRlNDcwMmY0NDFmOWQ5YzVkZmIxIHB5M2sKKzYxODM2IDMwZWY1MTEyODEzMjY4NTM3M2UwMWI0OTgwYmRkZmZmOWVlNzk3YjEgcHkzaworNjE4MzcgODU5ZmY1YzdjNjBhOGMwYzZkNTE1NTJlZWJmZWM3MjVhYzFhNjk5MCBweTNrCis2MTg0MSAyNTQzMWZmNmNlNjlkZjY1Y2M4OWE2ODYwNWIyYzdjMTA1NjE1N2ZkIGxlZ2FjeS10cnVuaworNjE4NDIgMzhkZTBkMjAyMzM4Njc4MTk4YjZlZWY4Njg0NjgxNTAyMGI0Mzc2OCBsZWdhY3ktdHJ1bmsKKzYxODQ2IDJkMGUwODkxN2EyZTM2MGY5NTllMTRlMDBiYjhmNjkxNTRmN2M4MjkgbGVnYWN5LXRydW5rCis2MTg0NyA0NjFmZjQzZTc0ZDAyMmFiOTc5MzBmMTI4NzBjZjIwZmI5NTY3YmVjIGxlZ2FjeS10cnVuaworNjE4NDggNDFlZTlhNDAwYWQxMTQwMjY2NDBjMDc1MGI1YjQ0ODJiYjBlOGUwYiBweTNrCis2MTg0OSAwMmFlMzExMjU2YTc3YTFhOTRiNDVkMDc1OGRiMGE1NDU0ZjM3ZDA3IGxlZ2FjeS10cnVuaworNjE4NTAgYjJmM2U0NmU3OGEyOWE5NDMxN2M2YzRlM2Q1ZjFjYTJiNjVjMjkwNyBweTNrCis2MTg1MSBiZmNkYTU1MjQ5MmU2NWY1NjdiNmQyYzQyNWI3ZWMyMWI4ZTYxY2IwIGxlZ2FjeS10cnVuaworNjE4NTIgYzg2ZTlkZDE2YjhkMTRkNWZiOWMyYTc3ZDA0NDdhMGIzYTY5NDBlNyBsZWdhY3ktdHJ1bmsKKzYxODUzIGM5MjMwMDkzMDc3MmQ2NjY5ZmNmOTc4YmI1MmJjMjUzOWVjOGNhMWIgbGVnYWN5LXRydW5rCis2MTg1NCA0MjI4NWQ2Mzc1NWFjMzhmMGM0MGI2MTc3OWE1MTExZjk1OTI2YzU4IHJlbGVhc2UyNS1tYWludAorNjE4NjMgZjNlNjQ4ZmVlNGMxOWFkNWJlOGQ2NDEzM2Y4OTI2ZDBkNzFlN2FjNyBsZWdhY3ktdHJ1bmsKKzYxODY0IDA5YWRmZjNkNjY5MTU0Y2Y1MWM4NDM5Zjg0YWI0Y2MxOTI1NjkzNzEgbGVnYWN5LXRydW5rCis2MTg2NyBjZTQ1ZmQzYTdhM2ZiZTYyZGJjYmFhOThjOTY5OWY0ODE3NDFkNjY0IGxlZ2FjeS10cnVuaworNjE4NjggZGU4M2VkY2ZlYjNkMzA5MDVjZDgwYjE2YmZmMjIwM2MwMWY1MDcyMyBweTNrCis2MTg2OSBkZTU0NDk1YTQxNGE3YjkzNzRjODM3MGY2NjM2MjA5MDlhYjU3MTFiIGxlZ2FjeS10cnVuaworNjE4NzAgMmJmZjVhNzI5MDM2OWRiNTVhOGUxNzU3NjQyMzg4YWFlNzJhZWNhYSBsZWdhY3ktdHJ1bmsKKzYxODcxIDk1OGNmMGMyN2RhOTM5MzY3MWVhMGU3MDJiNDIyMzUzZTUyY2Y4YzUgbGVnYWN5LXRydW5rCis2MTg3MiAzOGEwYTczN2NjZDQyNTMyODZiMjlkY2QxZTc2MjQ2N2NkMGM3YmQ4IHB5M2sKKzYxODczIDE0N2YzNWY2ZTZlNTg2YWYzOTcxNmNiNThmMjczZGViOWQ5NzcxMzMgcHkzaworNjE4NzQgNGY5Y2E4MjdhN2Q4N2U5N2NkZTQ5ZmM4YTdkMWU3ZjE5OGNlOTJhOCBsZWdhY3ktdHJ1bmsKKzYxODc1IDBkZDQ0MWNhOGViMGMzOWM3ZTNjZjc1NGU2MWYxNjA4YTE2NjNhNGEgbGVnYWN5LXRydW5rCis2MTg3NiBhYmJkODFmMmNjNjhlNmIxNzk3ZDMwZGU0Mjc4MTU4NDUxMmZjMGFlIHB5M2sKKzYxODc3IDA0MWU4ZDdjYzY4NDA5MzBjZGViNDA4YjI1MTdhMWFiNjEyZDM3ZDEgcHkzaworNjE4NzggOWIzZjBmYTVkOGNhMDc2MDI0MGQwMmU1MzFiZjM3Y2YxMzg2ODRhYyBsZWdhY3ktdHJ1bmsKKzYxODc5IDg0YmI3NzAxZWZiYWQ4MjJhMDQyNTgyNDBkZjhkOGVhNzM2OGRjMjQgbGVnYWN5LXRydW5rCis2MTg4MCAyYTFmNDgwMWQ0OTRmY2E0NWQwMDc1OTJlN2UyNzFhZDIxNjk4ZmVmIGxlZ2FjeS10cnVuaworNjE4ODEgYWU2NTlmZjA1MjhiYzE3YjYxZjFhZGFiMTQwYjI5ZjUxNWIzN2MwZCBsZWdhY3ktdHJ1bmsKKzYxODgyIDQ3YzJmZmMzOGQxZDEwM2NlYjRlNWQ3ODI3MDUzZDQyZGE0ZWZiZTQgbGVnYWN5LXRydW5rCis2MTg4MyAxYTJjOTY0NWY3MWRmM2MwNmI3ZmNlODEzOWY3MzMzOGRjMzk1N2UzIHB5M2sKKzYxODg5IDJhODY2ZWE2NjUwOWI2Mzc4ZDNhNmU4MWFlY2VlMmFhOTcyOTAzN2EgbGVnYWN5LXRydW5rCis2MTg5MSBhN2NiZmNiYWE2YjA2MTU2N2E1OTYxOGI5NzY5ZTFjMGQ0MTk2MzUyIHB5M2sKKzYxODkyIDIyYmQwMjI5M2VmYTVkNWQ0MDUxMWIzMWYyMjEyZDFlZWU2OGVjZWEgbGVnYWN5LXRydW5rCis2MTg5MyAwYjYzOTk5MTU4YjA3MjY0YzhlZDdlOTkyYmEyNzM4ZGFmMWU1ZDgzIHJlbGVhc2UyNS1tYWludAorNjE4OTQgNmJlYTJmMTM1MWIxZjVmM2E0ZDdkNWM2Mzk2MjkzMmI1MTBiYWI0NCBweTNrCis2MTg5NiAyNTZmOTM5NGQ5M2RiNWYzMjJmZGZmNDM5ODYyNGJjM2YyZmQ2NGYzIHB5M2sKKzYxOTAwIDcyY2M0MDBkODA1MzZkMWUxNTQ1NmVmNWUzNTc0MDM5NWU2NmQxNTMgbGVnYWN5LXRydW5rCis2MTkwNCBlODFjYWM3M2RhZjJmMDgxNDk5YmE4YzBlNzhiOTdkOWQ1NDA3OTM0IGxlZ2FjeS10cnVuaworNjE5MDUgN2QzYTZkYzQ3MWNkOTEyMzdmZDAzZjFmY2JiYTJjYjNhMDQxNzJhNSBweTNrCis2MTkwNiAxODk5ZTA4ZmE0MjExNjRmNGNmMjUyZjJjZTBkNDU1ZTEzM2Y5Yzg4IHJlbGVhc2UyNS1tYWludAorNjE5MTMgNWRmNzJiOTg4N2ZhNjg5ZTk5NDlkMzQyNjE0NzM2OTY5YmQ5Mzg3YyBsZWdhY3ktdHJ1bmsKKzYxOTE0IDQ2Zjg5ZjQ4MGJkNGM1MGNkMjAxM2Q3ZDAwZjFjYWQ5ZjI4NTQwMGEgcHkzaworNjE5MTUgNjIyZDNiMTE2OGFhMjk0ZDI1ODg5MjhiOWI4ZTAyYzAwOWVhMmU0NiBsZWdhY3ktdHJ1bmsKKzYxOTE2IGY5NGFjOGY5Y2Y5NmQ0ZWZjNDQwMWRjMGFlNWY2ZDJjZWM1MzllMDEgbGVnYWN5LXRydW5rCis2MTkxNyA2NzkwOTUwOGUwNDE1YTQwZTA1ODBhMGU1OGE0YzZiMWRmNjIyYjhmIHRydW5rLWJ5dGVhcnJheQorNjE5MTggYjUxZTRiNTBlZDMwZWMyOGQ1ZmE2OWE4MTY3ZmM5MTdjMzY1ZWZhMyBsZWdhY3ktdHJ1bmsKKzYxOTE5IDE1MTE4NTY2Zjk4NzI3YmMyYWFkMDFkOGI0NjRmMTI0ODJhYjY2NzggbGVnYWN5LXRydW5rCis2MTkyMCAxNWRhMDk4YjNjZDg1YzE0N2I3Nzc4ODJmYmM3YjA4ZDBiMzViNjMxIHRydW5rLWJ5dGVhcnJheQorNjE5MjEgNGVhNmYxMmJiZThjNjliZTY3YzRiMzlhYmJhY2ZiMjY3YjM1M2Q2OSBweTNrCis2MTkyMiA1NGI5MGQ3ZWRkYjc4MWEwYTVjYThkZmNjNzFjOGRlNDM1OWY1ODBkIGxlZ2FjeS10cnVuaworNjE5MjMgMjk2YzIxOGYzNWNmNmMzNzJhZDZmZTEzYjY3NTk1NWFlMTI3ZGY4YSBsZWdhY3ktdHJ1bmsKKzYxOTI0IDhmNmNjZDA3NWEyNGQ4MzY2OGE0ZDM3NGU4NmI4ZGUxNWI3M2MwMTEgbGVnYWN5LXRydW5rCis2MTkyNSA3ZGE4OTE4MTAyZmVlMTU0YzE4ZTBlY2I1MGRhNWJmZmE0MzVmMTUxIGxlZ2FjeS10cnVuaworNjE5MjYgY2RkYjI5N2MyNDY1M2I2ODZjYjQzMTQ4NmRjNzMxODRmYWI5NGMyYyBsZWdhY3ktdHJ1bmsKKzYxOTI3IDg1YWNjNDA4MTFiM2Q2NDRjZjUyZTI1NjA5MzE5MjlkMzliZjVkZTUgcHkzaworNjE5MjggMWFiNWNjMjUzNDFhZDE4MTdjOGZmYWFlMjlkZjRhMzhkYjMzZjNhMSBsZWdhY3ktdHJ1bmsKKzYxOTI5IDFkZDAwMDE2YTY5Y2VkOGViNzNkMzY2ZjhlYTVkYmRjMDMwYTQwMTQgbGVnYWN5LXRydW5rCis2MTkzMCBkNTc4NGZjMTllN2FjNzA2OWIyODdmMjllOGU3MTlmZDMzY2EwOTEyIHRydW5rLWJ5dGVhcnJheQorNjE5MzEgNmVhNDFkNTIzOWUwN2U2ZWY2NTU5ZTE4ZmI5ODI2MzU4NGE4Njk4ZiBsZWdhY3ktdHJ1bmsKKzYxOTMzIDFjN2ZhNGFjZWNiM2FkMjU2N2EwZDc3NDQ0MDhjNmY0M2VkYjFkOWUgdHJ1bmstYnl0ZWFycmF5Cis2MTkzNCA5ZmNjY2Q1OGQ2NWRiZjkzNjc3Mjc4MjA3MTFiMTdhYzJiMzFkMGQ3IHRydW5rLWJ5dGVhcnJheQorNjE5MzUgMjBmYzQxYzE3Y2M3YzYwN2Y5ZTlmMzc0ZjE4NjIxYWFjMDI1MTdjYyBsZWdhY3ktdHJ1bmsKKzYxOTM2IDUzNDFiMzBiMTgxMjViZjE5MjVjMGQ0NGYwYzQ3MjM4OThiNTEyOGEgbGVnYWN5LXRydW5rCis2MTkzNyBjYzBkMTk3N2Y4MjBjNzk4MjBlNmQ2NDg2ZTc4NGIxY2M0NzhhNWUxIGxlZ2FjeS10cnVuaworNjE5MzggMmU3ZmYzOGUwYTE4M2VhODhjNGUyYTVjOTg1ZTIxOGQzY2E4MjE1YiBsZWdhY3ktdHJ1bmsKKzYxOTQwIGNjZWVhOThjY2YzNWY3NzRlODJlNDU5YTQzMDQ5NjFmYjRhMTRmMzAgbGVnYWN5LXRydW5rCis2MTk0MSAyYmNiZDM4ODJlZWVkNmNmNzA4NWFhMzNhZDhlMjMyZDQ2NTU2NzM4IHB5M2sKKzYxOTQyIDRkMTk4OTIwNDA2MjBhNDc0MThhZjA3YTliNGNmNTc5ZDdhZGUxNTYgcHkzaworNjE5NDMgOGQ2ZmRlMTZlNDkzY2IyNGM3NWQxNTJkMzgyZDAxMzBmNGI0ZDgxNiBsZWdhY3ktdHJ1bmsKKzYxOTQ0IDY0YmQ5NmZmOTRmMTQ5NDE4MzEzNGIyNjhkNTZlMjc5Y2JiZjdiNTIgcHkzaworNjE5NDggMWI2YzBmZjEzNGZhNGExZDhhN2E4ZjNjMDA3YTZmOTg0OTc0NTc5NiBweTNrCis2MTk1MSA5OTVjOTk2MGY3ZmYzODM0YTkxZDZjM2ZmMTc1NGU5MGI4N2M0YzM4IHB5M2sKKzYxOTUyIGRjZTlkMmQ5MmM4ODE0NzJhMDdjMjhkYjA1Y2MxZWZjMzY4Y2VmZDUgbGVnYWN5LXRydW5rCis2MTk1MyBjNzhkMzU4NmM0NzRmNjY0MDY5NTM5N2JjMmQ3Y2E1Y2Y4ODI2OGVlIGxlZ2FjeS10cnVuaworNjE5NTQgZGFhNmFjZWFiZGZjNTg0OTBmOGE4ZGEyMjZlOTQxOTQyNzAzZTYwZCBsZWdhY3ktdHJ1bmsKKzYxOTU1IDc4NTA0ZDYwNGI0NDhjOGI1Y2Q4ZGU1MWEyODA2ZjE1ZThlODRhNzYgcHkzaworNjE5NTYgZDAwZGVkOGIyNjc3MWQ0OGMwODk4M2ZiMjY5NGU3NTZjMzE1NGRmNiBsZWdhY3ktdHJ1bmsKKzYxOTU3IGE5MzVjNTBjYjUxYWE0NWVlYjFlNDI3YjM0ODA1MWFlZTRkMjI3ZTEgbGVnYWN5LXRydW5rCis2MTk1OCAyNDg2NzY5ODhjNTQ4ZmNjY2Y5YjA1NTlmMmFiNzYyNDZjYzQxNDM3IGxlZ2FjeS10cnVuaworNjE5NTkgMzhmZTY0ZTNiMTMxNzNhZmM5MzM5ZWFlNDNiZGNmMzc4NzRhZjY5OCBsZWdhY3ktdHJ1bmsKKzYxOTYwIDM2ZDgyOGQyN2MzNjQwOTExZTg2Y2Q2YTZmYWUyMDI4NDkyNWY3ODcgcHkzaworNjE5NjEgYjA2YTE1ZWZkYzZkMWY0MmNmODY5MmE4OGVmOTg3YjU1MDgxZmRlZiBweTNrCis2MTk2MiBhZTI4MzE1NDI1NTgxNjdlODQzZGE3MjY3ZjhhMjY4NDdhNTU3NWVkIHB5M2staW1wb3J0bGliCis2MTk2MyA1YzI3MWVmNmNiMzI2MzgzYWY3MDRjNTBmZDk0ZDhlOTM2MjI0YWZkIHB5M2staW1wb3J0bGliCis2MTk2NCBiNDVlN2I1N2EwZDgyYWFkNThkZTc5Y2I4MTVmYTk3MjQ2Yjk3OGZiIGxlZ2FjeS10cnVuaworNjE5NjUgZWY0MGVjMzJjNWU0ZDc3MzliMmEyNTA1ZDcwMjRkNTI4YmIwYzIxZSBsZWdhY3ktdHJ1bmsKKzYxOTY2IDg0NzkzYmY1YTRiZmMwZDI2MDljYzhhMGYyM2MxNjU5ZmMzZTVjMmEgbGVnYWN5LXRydW5rCis2MTk2NyA2MTkyZDViMTJiNmFlMTdiNTNhMmRhZjhjNmEzOWE2NzY5OWM1MWI2IGxlZ2FjeS10cnVuaworNjE5NjggZDc0MGM3MWYwMmZmMjdhYjlkOTUxOGQ4MzMyYzY4MGViY2UxNzEzNyBsZWdhY3ktdHJ1bmsKKzYxOTY5IDUwNzhiN2VlMTZkYzE3MWQ2OTdiYTMxNTM5OGE0ZDA1YzFlYzkyYWQgbGVnYWN5LXRydW5rCis2MTk3MCBiMzUwOTYwYWRlNmQ2Njk2NzczYjcxZmUwMzk2YjZmNjM3Nzc1YjVjIGxlZ2FjeS10cnVuaworNjE5NzEgMzEzZjM4MWZjMGE3MTcwY2MxZTgxYTk3NGE3N2FjMDZkNDUxY2U3ZCBsZWdhY3ktdHJ1bmsKKzYxOTcyIDZmMTMxZDJjMzYyODIwOWJlZmZkNTg5NWNkZDUyMzMxNTM5Y2RmYWEgbGVnYWN5LXRydW5rCis2MTk3MyBlYWM0MWY5MDI5NmM2OWM2ZDA3ZDI5ZjFmZWI0NTNhNGMwZTQwMGQxIGxlZ2FjeS10cnVuaworNjE5NzQgNjIxMzhhMGY0MjMyNmJiMDM0MGJlZTcwZmQ0N2IxMTE0ZjJiMzE5NCBsZWdhY3ktdHJ1bmsKKzYxOTc1IGEwZWEzYTBlZmM3MTA5MzRhZDY2ZTM5MDcyMTEyMzBmZjIyN2Q2YTEgbGVnYWN5LXRydW5rCis2MTk3NiBmMWFlYzdkZWMwNWNhMjFlYjgzNjc0MDZkZWM5OGViMDZjZmE2ZmQ4IGxlZ2FjeS10cnVuaworNjE5NzcgZTM5ZjY5YmY1NjEwZWFkMzk4NTE3NzQ0NTkwOWE3YmFmOTRmOGExZiBsZWdhY3ktdHJ1bmsKKzYxOTc4IDU2NDQyZGI2MGEzNjJiZmI2MmU5MDQ2M2Y2ZGEzMTQ5MzZiMmRkOWUgbGVnYWN5LXRydW5rCis2MTk3OSAzMWJhM2ZhMTU4NWIwOWRiMGM4MDI3N2RlMjE4MGVhY2MxNjA0OGQzIGxlZ2FjeS10cnVuaworNjE5ODAgY2I1NjMzMGQ3YWRjOGNkMTAzOWJlNDA0ZWVjZmY5MWI1NWJhMmE3ZSByZWxlYXNlMjUtbWFpbnQKKzYxOTgxIDZhNjZkMzI2N2QwY2Q0ZGNhNjNmNTYxZjE2YjY3MGE2NTkzOTY1NjIgbGVnYWN5LXRydW5rCis2MTk4MiBkYTU1OTdhNWMxOTU4MmE4ZTM3ZDU0MDU4ZjQxNzViNWZhZDE4NzJhIHB5M2sKKzYxOTg0IDEwYTM5YTY2MmU2OWNhNGRkZmZjMmJiZmViN2I1MDgwMWFkNDlmYjUgbGVnYWN5LXRydW5rCis2MTk4NSAxOGUxOWFjOThkMzRjMDE5MzMxMjlkYzdiYTc2MTRiNDE5NjIyMGMzIGxlZ2FjeS10cnVuaworNjE5ODYgNTlkMDgyNTkxZjU2ODA0MWEwYzYzZjRhNGU5YzJkYWY2ZTJjOTQyOCBsZWdhY3ktdHJ1bmsKKzYxOTg3IDdmZGZmMDJlNmY0NWVhOTg0NTFhN2I5YmIzMDcwMThlOGQ4NjM1N2EgbGVnYWN5LXRydW5rCis2MTk4OCA0YmY2MWZjY2M0ZTY4ODI0NzdmY2YzYTk0ZjU5NDVhYjk3NTI2YmY3IGxlZ2FjeS10cnVuaworNjE5ODkgNmU3YjI4MDhiOWE2OWU3N2E5YjVhZjFjOGVkYjJjMmFiMTdhMDM1YSBsZWdhY3ktdHJ1bmsKKzYxOTkwIDFkNTA3NDdlNTNkMzY4YjBkODFkYTkyMDZmMGZkMjM5Y2E2YzA4ODkgbGVnYWN5LXRydW5rCis2MTk5MSA3MjMyMjU5YTA1MjllNjk2MDI5ZjM0NTg0MmE0NmVjMWQxYjlmMDg3IHB5M2sKKzYxOTkyIDFlMTBiMzBmNzQ5OGMzZDcyZGI5ZGUzYTNjYmU3NjEwOTY2YjZkNmIgbGVnYWN5LXRydW5rCis2MTk5MyAzMTAzZWEzZGY0OWQ5NGM3ZTcxYzVhMDFiYTdkNmY2ZGJkZGM0OTAyIGxlZ2FjeS10cnVuaworNjE5OTcgYmJmY2JhZmVhZTg0M2QwMGE5NGIxYWQzYjMwYmZjOTQyODFiZjUxYyBsZWdhY3ktdHJ1bmsKKzYxOTk4IDY0ZjJlYjQxNzBmMTk2MGEyOTU2ODBmN2ZlMWU4MzU2YjYxYWJhNjAgbGVnYWN5LXRydW5rCis2MTk5OSA2OWQwMDkwNzQwODgzZWI4ZDNmMmI1ZWY5ODgyODYwZDZhZDJhMjRiIGxlZ2FjeS10cnVuaworNjIwMDAgZjlhNjI5ZjQxNjU2ZGE3MjBhNTRmZGZhZmIzMzRmMzliYWY0NGRkZiBsZWdhY3ktdHJ1bmsKKzYyMDAyIDIzNjVjNDdmZTY0ZGRjMzRlZjBjY2E2M2I1N2NhZmMwNDg1N2UwYjEgcHkzaworNjIwMDMgODQ4MTYwZDEwNzgwNjFjY2JiNWQ2N2NlNzJiMjI0NWUzNjllNTUyZCBweTNrCis2MjAwNCBjYTM4ZjdhNGI0Yzk1OTY4Yjg0YTI3NDFmNDFhZTMyYWMyNDAzYmM2IGxlZ2FjeS10cnVuaworNjIwMDUgYTQzYmUwNzQzMjRkMmYzZjFiZTk5ZjZlNGRkNTJjNmRmODBlMzE4NSBsZWdhY3ktdHJ1bmsKKzYyMDA2IDA5ZmE4Y2IyYmZlOGY0ZjJhYTc1MDAxNDMxYmU1MzY3YmJhNzA3ZWMgbGVnYWN5LXRydW5rCis2MjAwNyBhYWNmOGJlNTFmOTAzMDc4NzcwOWJjNWNkNDRhZWNhZGZlMzhhNzAzIGxlZ2FjeS10cnVuaworNjIwMTEgYTIxODU0ZTUxMGI0N2JjY2NlZGUyZGVmYTg3M2Q3YjAyNGYxMDJkOSBsZWdhY3ktdHJ1bmsKKzYyMDEyIDY1NGFkNzRhZGUxMzEyMDE2ZDdmNWJlZTU3NTQ2NGQ5ODUxYTNhYmEgbGVnYWN5LXRydW5rCis2MjAxMyAxYjViNmFiYjFmMmVkZTliMTQ1YWE4NDYyN2JhYmNmZjA5NDBjZjdjIGxlZ2FjeS10cnVuaworNjIwMTQgYzNlNjc0Y2JkNzJlOWQ5YWI0NTE3ZjkwNjc2YjAwZDY5Nzg4ZjUyNSBsZWdhY3ktdHJ1bmsKKzYyMDE1IDNiOTk0Zjc0YjEwMDQ4MjEzZWZkMjhiN2U1NWFhODA5OTQ1ZTZmNzIgbGVnYWN5LXRydW5rCis2MjAxNiBjNzdjYzIzZTM5NGYxNDQ4MTYxMmMwOTE0ZGY0ZThkMjUwNjA2NTM1IHJlbGVhc2UyNS1tYWludAorNjIwMTggOTczNGE0MmNmYTE1ZTAxNWVjZGRiOWYzZWQzYjJiOTE0ZjI1ZGJhMSBsZWdhY3ktdHJ1bmsKKzYyMDE5IGM0ZWQ2NjRhMWRhMWMwYjAxYjA5YTk2ZWYzZWVhNmUzNWMyMTE5NGMgbGVnYWN5LXRydW5rCis2MjAyMCAzZWEzZTUxZDFlZTNmYThmNjdiYzQ3M2IyNTQ4NTRkMjc4NmFlOWYyIGxlZ2FjeS10cnVuaworNjIwMjEgZWZlZjRlM2ZlZDE3ZGFjZjJmM2JjN2M0MDI3ODQ1ZGY3ZGQ1ZTQ1YiBsZWdhY3ktdHJ1bmsKKzYyMDIyIDg3MmFiZWQ3ZDA2OTRkODliNGZkNTQ5NzI5YTc2ZjNmZDhiMmE1MDggcHkzaworNjIwMjMgN2NlMWE4ZmQ4YTcxY2E5N2U2YzI2ZDhmY2VlZWVlMTFhMGFkMTE1ZiBsZWdhY3ktdHJ1bmsKKzYyMDI0IGUwNmUwOGU4ZmRjZWRlYzZiYWRhM2IxZGEyODc2YTlmOGNjMGEwNzIgcHkzaworNjIwMjUgZDFlMWI3NDBmNjg0Mzg5YzFlZWIyYTg2MzNiYTJhNTZkOTI2MDgyZiBsZWdhY3ktdHJ1bmsKKzYyMDI2IDBlYTVjMDU1YWI1NGY0NmI2ZjNkYzI5YzM5MjVmYjg0YzgyMmY5NWIgbGVnYWN5LXRydW5rCis2MjAyNyAwOTA1M2E3YzFjZGZkODE4ZjA5MmY2YThjNGM3MDQ3ODQ0MDNlYWMwIHB5M2sKKzYyMDI4IGZlNTNkMWEzNmVmNjNiOTRkMWU1OTVmYmY0ZTVmZGYzNTMwNjAyMmUgbGVnYWN5LXRydW5rCis2MjAyOSBjNDQwYTU3MzcxNDlhNzEyZGI5YmQ0NWFiZDg0NmY1NzY3ZWMzNmQzIGxlZ2FjeS10cnVuaworNjIwMzAgNmIzYWM4OWUwZGQ0OTI0OWExMDhkOWRjNWY4NWY4NTVjMDk5Mzg0YiBsZWdhY3ktdHJ1bmsKKzYyMDMxIDk1OGNmN2VjY2FlMjQ5NjJkNzk1MGJhYjIyNzU2NWI5MzliYjUyMDAgcmVsZWFzZTI1LW1haW50Cis2MjAzMiAwYTRkYTM5N2UxZGI0N2IwODZjZmRiMDBkZGJmODliM2FlYTQzNTM3IHB5M2sKKzYyMDMzIGYxODQzMzM3YTY2YzE1ZTUzM2M2MDIwZTkwYmI3YWVlNmZlNDQ2ZmQgcHkzaworNjIwMzQgNDYzNDhkZTYzZjYxYTBlYmE3YTFmMzRjNGQzYTRhNWU4ZWQ5OTcwYiBweTNrCis2MjAzNSA1MTEwY2YwZTVmOGZlYWYyNDFjYjkwZGZmMmZmNzUwMDA1ZTRkZWM3IGxlZ2FjeS10cnVuaworNjIwMzYgMTY3MzZlYjQwMTUwYWE3ZDc4ODQwNzhmYmIxMDY3NWIyYWJjZjdkNCBsZWdhY3ktdHJ1bmsKKzYyMDM3IDIzZTQyNTc3MjI2YTdmODVmYjhhYjI3MjFmZmQ3ODM0ODA4OWM1YWUgbGVnYWN5LXRydW5rCis2MjAzOCA2ZTAyZmYwYmQ2Zjg5NDRiNzEyMjlhYjE3MTA4MjA4OTg3ZjAyYWVmIGxlZ2FjeS10cnVuaworNjIwMzkgYjBiZjA2ZDQ5NjQ3ZGQyNWQxYzNkMzY2Yzg0MWE0NjI5MDhmODc2MyBsZWdhY3ktdHJ1bmsKKzYyMDQwIDRjNjc4ZTljN2EzMDUwYzI0MTJiMzYxNzRhMTAwNWE3YzNmZDNiYjggbGVnYWN5LXRydW5rCis2MjA0MSA1MWVmZjJmZDk1MjcxMzY2Y2U4NzgxZDE3ZjJhMGNkNjBlYjAwMDJlIHB5M2sKKzYyMDQyIDBjMjFmOWI0YTgzMWE0NjE2YTg2ZDI2MmFlYWI2N2VmNjFlZmNjMzAgbGVnYWN5LXRydW5rCis2MjA0MyAwMWE3ZTY2NTI1YzI2MjRjYzdjMjgxZDMzNmEzODMyOTBlZjBlMjAxIGxlZ2FjeS10cnVuaworNjIwNDQgZTQ0ODZjMzQzZjdmYTY4ZDlhMDcxYjAxNzlkNjc1YTUxZTFkOGQ5YyBsZWdhY3ktdHJ1bmsKKzYyMDQ1IGVkODhmNGRlNDk2ZjE5ODA2YjM2NmE3MGVmMjlkNzcyYmNhMTZjZGYgcHkzaworNjIwNDcgMmZmODhhZTk4NTBjNTJlNWNlN2FkOWM1YTEyZWUxNTNhNjIxNGM4MSBsZWdhY3ktdHJ1bmsKKzYyMDQ4IGUzNzBkOWNkMTQ5ZWEyNjA0YmI3OGY1MWExNzE1NTYxOWU1NDVjZWUgbGVnYWN5LXRydW5rCis2MjA0OSA0MmM1ZDI4N2E4NTJlNmYyODk4OGNkNmIyNTkzMjNkYWMwMDc3YWViIGxlZ2FjeS10cnVuaworNjIwNTAgZjA1MWU3YTgwYWNjNzZiNDAyOWVlNTg2NjIxNDk1ODFmMmIwNmUxOSBsZWdhY3ktdHJ1bmsKKzYyMDUxIDI5ZWE1MDdmZDk5ODIyMzM3NDM4NzQxMDIxNjgyZjAzMWM4MjMwYzMgbGVnYWN5LXRydW5rCis2MjA1MiBjMTEyMjE5MDYxNzExYTQ1MDFlODc2ZTBkMDZlNzNlNzExZTk4MDBmIGxlZ2FjeS10cnVuaworNjIwNTMgMDdmNzVkNTUxOWI0N2I0YzBiMTc1ZDNjM2YyNWFhZmJlMWI2ODk5MiBsZWdhY3ktdHJ1bmsKKzYyMDU0IDU5ZDQyZTZkMTg4NTNiYTBmYWQ5OGY5YmZmZTUxNTQwNDhkNWFjMmEgbGVnYWN5LXRydW5rCis2MjA1NSBlYTc1YjEyZmU4ZTc2ZjliZmU4MzEzZjY4NjA0YzhkMDE0ZjMyOGJjIHB5M2sKKzYyMDU2IDk4Mjc2YmU2NDU3OWZjM2MwYzYxMzFmZjJlMmYxNTFlNTcwNTc4M2QgcHkzaworNjIwNTcgMWM5NzIzMmQ5M2ZmM2U5YWUyMGU0YTE2MTg1YzRhYjNhMDYxYzQ4NSBweTNrCis2MjA1OCBlODk5OGU4MGVhZjJiZjhiNTk5MDE4NTg0NzhjY2Y3Y2Y2Zjk1YmRlIHB5M2sKKzYyMDU5IGJlMThkZjYzNDQwNTg1OTM5NTYwNTBjODc4NzdhNWY4NjczYTMxMTQgbGVnYWN5LXRydW5rCis2MjA2MCAzMmVhNzY1NGZmOWM0ZWYzNWZkM2M5OGM3YTAyZDgwNzJhNDE2ZWE2IHB5M2sKKzYyMDYxIDRjN2JiNDA5ZGFkNmQwMGQ5MGQ2ZGFjNDNmODM0OTcyMmQ1ZDEwNTYgcHkzaworNjIwNjIgYTdmYjRkODdjYmRlMzk3ZGE0ZmVmMzVmNmY3OGU5OTBiZDZlMjllYyBweTNrCis2MjA2MyAyYmMxZDVhYTcyOWVlNDk2YzZlOTJmZmM4MGVlNDRlNGM5MmI0OTY2IHB5M2sKKzYyMDY0IDYwNDI5MTRlODI4Njc3Y2IyOWU2ZGE5MmYzOGE1ZWVkODhiMGIxYmEgcHkzaworNjIwNjUgYzViMTQ5YWQzMDBmOGMwOGMxZWMzOGViMzJhOTFiMDYyNDc0N2MxYyBweTNrCis2MjA2NiA1N2JiYWM1MzE5MTk4MjliMzNmZGZkM2QzMTg2Y2U1NGI4NzA0YWQ4IHB5M2sKKzYyMDY3IDYwMGYyZmY4YWE5ZTkxNzBjYzYwOTdiNTczNTE2ZTY5MzZmM2YxY2EgbGVnYWN5LXRydW5rCis2MjA2OCBmZmJlNmM3OTA1MjNjZDI4OGYxODkxZjkxNzFlMmRlYTA2NTliMzcxIHB5M2sKKzYyMDY5IGFlZDY5OGM4NjQ3Yjk5MTRmMDE1N2JhN2EzYTE5MjkxMTJjZTgxNzkgcHkzaworNjIwNzAgZjBmYTYwNWIyYTc4YTYwOGI3ZjczMjkyZWRjYWUzZGEzNzNiMzEzYiBweTNrCis2MjA3MSAzOGY4ZGZlY2U5OGU1YmQ4M2E3M2M2YmZkMDc1MzIzNjMyOTE5Yjk4IHB5M2sKKzYyMDcyIDg2NDU3NGE5Y2QyNmVhNmQ1ZjU2YTk3ZWM4ZTRiOTkwOTgwOTc2NTcgcHkzaworNjIwNzMgZTkwMzJmNWRkNTM5YjNhNjQ5MjYxNjcxNWNiMmU5NDAzMWUwN2U5MCBweTNrCis2MjA3NCBiMmQ5M2E5NjBiOTg5MGY2ZDgzMTYzNWU4OGM5ZmIzYWZmNzhiOTA2IHB5M2sKKzYyMDc1IGUzZGM4NjdiNjE4MmVlMTI4YzI1YjAwMTVlZjA4MmZhYTJhNWJjMDQgbGVnYWN5LXRydW5rCis2MjA3NiAwN2IzNmQyYjc1MzRjNWM4YmI0OTZhNzJhOTFmODBjYzExZmNjMzcyIHB5M2sKKzYyMDc3IGU0NzQ4MTc2NGU1NzMwODQ4OGExOWUxY2IzOTIzNDFjMWQ2NDE5NDMgcHkzaworNjIwNzggODFlZTI3MGE2ZWI1NGYwMDM3MjAwNzEzN2JmZmM0ODJkZjM1MzMyNyBweTNrCis2MjA4MCBjM2VlMGYwZmJlZTFjZWY2MjRiMjA0Y2I4YjNlYWVmZjZlNDlhMmFmIGxlZ2FjeS10cnVuaworNjIwODEgNjFjOTI5MjNjZjdmY2ViM2U5MmYwZjViYzc3M2I3Yjk4ODRlZDlhMyBweTNrCis2MjA4MiA0MTUxNTZkNGNiZDIwYzhjNjJlYTkxODc0ODkxNmUxMGNhMTY3M2UxIHB5M2sKKzYyMDg0IGM3MDE1ZTM1N2EyYzk3OWM0MjQyYjZmMjI1OGQwMDg1ODYzNzQ4ZGYgbGVnYWN5LXRydW5rCis2MjA4NSAxNzg4MWY5NmVhMDFlMzA0MGYxYTZmOTJiMzNhNGQyMDA5NmYzYWVjIGxlZ2FjeS10cnVuaworNjIwODYgNmRlY2ZlMzhhODA5MTk5ZjEyNTg4NTAyMTg4NDhjMDY5Yzk1ZDBkYyBweTNrCis2MjA4NyBkODZiMzMzYzcyZTc0MWI5YzZhMjA3N2IwYjZmODhjZmY2MDhkYTliIHB5M2sKKzYyMDg4IDMwZGQ2MDY5ODY3MWYxYjg2NjY1NWQ4YzdmODAxOGFjZjIyNjAyNTkgcHkzaworNjIwODkgNWExN2QxNTdkZjAwMTY0N2I2MjMyNGQ4OTk4NTIyYzc3ZTQwYjU1ZCBweTNrCis2MjA5MCA3ZGZmNWU0MWZhN2FlMWJiMDI3NDU3ZmMwMWJlODAwZmYxYTQwNTVmIGxlZ2FjeS10cnVuaworNjIwOTEgNGM1MDY1ZGRiOWJkNjM4ODMzMDAyZjIzOGZlNjQ1MzY0MjcyZjhlOCBsZWdhY3ktdHJ1bmsKKzYyMDkzIGFiNGY4YzQ2YzNkOWI2ZGM2OTY2YTk4MzUwOWVhNTg3NmJjYmQ4ODYgcHkzaworNjIwOTUgNDc3OWUzNDk2YWUxYWZiYmZiODEyZWI2ZTU1MjMyZGViMzYxMjRjNSBsZWdhY3ktdHJ1bmsKKzYyMDk2IDA3MzBmM2Q1MGNkY2ExYjE2ZDNkZDJhZmU0OGNjNThhYzVlMThmNzAgbGVnYWN5LXRydW5rCis2MjA5NyAxYzc4ZDhlODc2NTNhNWRmYjI3OTE4MTVhM2NiNzVjZjYwMzU2NzFkIGxlZ2FjeS10cnVuaworNjIwOTggMGIzNzQ3NzI1NGY2NDE4MDgyNzY4N2UyNGRjZDJkMzllYmIyMzg5MSByZWxlYXNlMjUtbWFpbnQKKzYyMDk5IDU5Mzk5MDBkOThkMjE0OTkxOGExY2Y0ZjliNDFhZTg3NzZkMGQ4MTggbGVnYWN5LXRydW5rCis2MjEwMCBkNmUxMzMzZTYwNzVjZjQxY2YyZDFjYjc1NjZkZjllYjY3MDhhN2IwIGxlZ2FjeS10cnVuaworNjIxMDEgYzdjMjUyMDQ4NTU1Mzc2OGU0OTlhODNmZmRmYWM0MjY5OTNiMDc1YSBweTNrCis2MjEwMiBmNzUzOTE4YWJlNjUyODM4YjFiMTNmMjgzNTE4ZmExYzc2Mzk4MTJjIGxlZ2FjeS10cnVuaworNjIxMDMgMGIyYTRhMTI0NWEzYzk2NjcxNjc2YWVjZTg3NjI0Mzk0ZDY4MTRhYiBsZWdhY3ktdHJ1bmsKKzYyMTA0IGJiNGE1NDc0MzBmODVjZTAzNWM4ODE0ZmQwZGMwMzAwZTk0OGJhZjYgcHkzaworNjIxMDUgMDNlZDAxMThlNzMzNzYwMzhjZGFjZjkyMDk5ZDQ1OTcxZGM3Yzk5NiBsZWdhY3ktdHJ1bmsKKzYyMTA2IDhlNmE0Y2M3ZGZjMDRkYTY5NGI5ZGMzNDlmZGY0NDI0NjZkYzhhZjYgcHkzaworNjIxMTAgODExNzkwNmI3YmE3NWU2ZTJiNDk4ZjAyNjFkYWFhMDU4NTZmNGE1ZSBsZWdhY3ktdHJ1bmsKKzYyMTExIGExNzJjMmUzOGFjOWUyZWE2MmVkOWU4YjVlYmExYjY2NjhlMTZiNjAgbGVnYWN5LXRydW5rCis2MjExMiBhOTQ0NjljNzRiOWViNGJiMzJkOGViMDZiODRkNmMyNDljYjA4NDdhIGxlZ2FjeS10cnVuaworNjIxMTMgMGE1Yzg2MzUwYTg5Mjc2MTNmYTQ1MjQ5YTAwOTNjYzMwYTMxOTYzYyBsZWdhY3ktdHJ1bmsKKzYyMTE0IDJiMGVjYzdmZDdlZWEyODJkZGIxMmY0ZWIzNjcwYzUxZGE0NGNmYWIgbGVnYWN5LXRydW5rCis2MjExNSAyMDVkN2ZkNTBkMzVhOTZjYWI2MzY5OWVmMjYyZmQyM2FmZTY4OTUyIHB5M2sKKzYyMTE2IGY1NDdlYmYwMjg0MzI4OWI5NDgxZDE5ZThmNTk2Mjg3NzFmYWQ2MjUgcHkzaworNjIxMTcgODc5MWFjOWNiY2NkNWJmMWYyYTI1NzgxZTZkNDgyY2I4M2I0NWRhZSBweTNrCis2MjExOCA5NzViZDIxNjA1MjcwYTA3ZDkyNTdjOTQ2YTc5NWI0ODg4YzZhOTExIHB5M2sKKzYyMTE5IDE1Zjc3M2Y3MzAwZTM3MmM1NmEyMWQ1OWZlNDljYTI2OTU1YTY0NzcgcHkzaworNjIxMjEgZWNhYjAzNzY2Y2FjY2YzNDE3YmY0ZmY5ZDc1YTNkOWE3NzVhNDk1NCBweTNrCis2MjEyMyBlZWMxNDQ5MTdhMTg5YmUxMWVkNWVmYTM1YzY2MDRkMDNiYzYyYmNjIGxlZ2FjeS10cnVuaworNjIxMjQgNzZhODFlZjliMzc5MWU5NGMzNmE1MDJhOWI2MjA1YjA0NzY1Y2FjYiBsZWdhY3ktdHJ1bmsKKzYyMTI1IGFhOWJhYmI5YTQ4ZWQ5Y2MyOWI5MmQ4YmZiYjZhZDY2MTQyZGEzOTEgcHkzaworNjIxMjYgMTYxN2JiMDVhNzhhZDgxODNjMmRhMjYzODcyMTAxODk3YjM2YTE2ZCBsZWdhY3ktdHJ1bmsKKzYyMTI3IDRkODNiOGQwMzI5OWY1YWExZmE0ZTczNDEzYWYyNGVlNDRkMDA2ZmQgbGVnYWN5LXRydW5rCis2MjEyOCAyODQ4YzY1N2FmMGFlNzRmNjMwYmYzN2UxMjEzYzk4Zjc5NTNkZDNlIHB5M2sKKzYyMTI5IDlkY2RhNTZiODcxZTFjZWEwYjFlOTQ4ZDdjZDRjNjFiYzk4YzViMzMgbGVnYWN5LXRydW5rCis2MjEzMCA4MTQyMmYxZGU4OTA5ZGEzZGQzNzJhNGNjZTMzNDUyMjlhYmMyMDExIHB5M2sKKzYyMTMxIDk3MzZjMjBkMjZlYjZmNjQ4YWQzMWY0ZDI2M2U3NjgzMDRmZDk0MTQgbGVnYWN5LXRydW5rCis2MjEzMiBkZGZlOTQ3NDBlZGVhNTdlOGJiZWRiMDE5OWQxNzVhMzdiNzAwYzU4IHB5M2sKKzYyMTMzIGE3MmU5MTc0OTFhNDg2ODQyNDM4ZjczOGY4MzY5MDBlYjI3ZWQ5YWUgbGVnYWN5LXRydW5rCis2MjEzNCA2N2YxYzQ2NTI3OWNiYzFkNGUxZjhiNzYyOTYyNGUyZmRmM2M5OWI4IHB5M2sKKzYyMTM1IGNjMzMzM2I3YmQ5MzY2NjhjMTY3ODBkODBmMDNkZDNjZjZmOWU5M2IgcHkzaworNjIxMzYgNzZmNTc3YTllYzAzM2ZkYTA4MTQwYWFkNzhmNjU5NWEwNThjZTViNSBsZWdhY3ktdHJ1bmsKKzYyMTM4IDAzYjI2ZjkxYmY2ZDA1MDNhMzQyMmJkZDU3OTQ0NTEwOTk5MmMyNDYgbGVnYWN5LXRydW5rCis2MjEzOSA0YmE2ODE5NWE1MTE2MzI2M2NlOTM0MzA2OWEwZmMwOGNmNDBmMTNiIHB5M2sKKzYyMTQwIDdjMDgxYzBiMGY1NTg4ZGJjMWIwMzQ4ZWNlOWRiZDFhNDNiOWU5MGIgcHkzaworNjIxNDEgYWM1ZTRkNTRiMjNlOWQ1NmUyZTE3MzQ4NzkwM2IzMzZmZTE2YjM5NCBsZWdhY3ktdHJ1bmsKKzYyMTQyIGZiM2M5YmI3NmIyOTQ1OGZiMzM4NzUzMzk0OTcxMDljNDYxODE5OTAgbGVnYWN5LXRydW5rCis2MjE0MyBkODE4ZjZkMjkzODQ3YTdmMGIxMTE5YzUyMGMyMmQ3YTRiYzRlMWExIGxlZ2FjeS10cnVuaworNjIxNDQgY2NkZGM1NmJkNWIwNzBmYjhmZjY4ZTIzNGEyY2NkMjRkNTBmNjNjNyBweTNrCis2MjE0NSBiMjhhMmQyNWZkOTJkYzA1NmZkNTZlMWU1NzQxZjNjODg4MDZiODVhIGxlZ2FjeS10cnVuaworNjIxNDYgM2QwMzUyYTU0MWNlNTY2MmI2OWFlNGM3NDI2Yzg3NDc0YmExNTlhZiBweTNrCis2MjE0NyA0YTExMzMwM2YzMTY1NDJkYzdkMzNmM2EyMTk5MWY3MGE1ZTY5YmI3IGxlZ2FjeS10cnVuaworNjIxNDggMzk5ZTc0YmIxMmM3ZGQwZjkwMTczZjBkZjZkOTg3NjZlNjM3ZThmMCBsZWdhY3ktdHJ1bmsKKzYyMTQ5IDgyNzMxNzY4OTg2ZDQ3NDlhMGFlMzhiNzE4MTFiY2ZmYzcwOTkwZmQgbGVnYWN5LXRydW5rCis2MjE1MCBjM2E3NzI1ODhkYjc2ZWJkZWM1ZWU4NmU4MGZhYzRkOGMzNmMxMTA1IGxlZ2FjeS10cnVuaworNjIxNTIgNmFiZTI1Yjk5MjRiYWM5ZjNhZGNkY2M4MTRiNmU1MzdhN2JiNDE4OCBsZWdhY3ktdHJ1bmsKKzYyMTUzIDYxYTBjNzZlY2Y4NzZlZTVjNzJkNzU5OGU0ODA1ZWQwYTU1YzMxOWQgbGVnYWN5LXRydW5rCis2MjE1NCBhMTllYzRmMTcyNzc5NzJhM2Q1ZWVkNzZmOWRmZTM2MzVjZjgxOWE1IGxlZ2FjeS10cnVuaworNjIxNTUgZjgwNmZkOTk0MWRhNjhjNDU1ZDZjMGJiNmNkYTJiNTQyYzBjYjZlNyBweTNrCis2MjE1NiAwY2U3YTIzNTJhNTNlYTA3ODAwZmJlYTcyZDEzM2YxNWYwYTc5ODE2IGxlZ2FjeS10cnVuaworNjIxNTcgZTg5MTZjNjRkZjRjNWZiNTAwZmQyNmM0MDgyMDk2YzAxZDg4ODdmZSBweTNrCis2MjE1OCA0OTAxZTc1Zjc3NWFlMWFjMDI1MmFkMzUyNzRmNjU3ODIzN2I5NTFmIGxlZ2FjeS10cnVuaworNjIxNTkgMzcyNmRlOGNiOGUxZDNjMDA0MzBhZTdhMWM4ZmExMTVkMDdjZjU4YSBsZWdhY3ktdHJ1bmsKKzYyMTYwIGY0YmYzZTdiY2JlODBhZTI0YTcxZDE4MmMxMmUzMmVjMTgwNDcxMjAgbGVnYWN5LXRydW5rCis2MjE2MSBkZTc3OTczZDdlMWEwYzRkMmZjNTk0YzhlNGE0ZTEwMDg2OTFhNjNmIGxlZ2FjeS10cnVuaworNjIxNjIgMzQ0MmU5ZTZiMmNmMThkZmE2NTA3YjUyMjI3NzNhNGFjNTVjZDdjZiBweTNrCis2MjE2MyA5YzkyNmIwYTY0OGY0MjQ4ZGRkODU0Yzc5ODM5MDdhM2I2OWIyOTllIHB5M2sKKzYyMTY1IGIxMDI5MmVhZmIwNzM3MTgyNzVkZTZkNTRjOTMzZmRmYzFmYWE2MDggcHkzaworNjIxNjYgYzNkY2MwYzdiZmQ5NTdlMTI2MzhkMWNlMDdiNDkxZTRhYzM5YTkzOSBweTNrCis2MjE2NyBhMWE1MThiZTU0N2RkOTJjOWJiYTdhZDZhODc0YmYwZWM2MjBiYzFkIGxlZ2FjeS10cnVuaworNjIxNjggMTA1NWYzNjliMWZjZWUwNzlhMmNkOThhZmQ5ZDVlYzczNTU3NjFmYyBsZWdhY3ktdHJ1bmsKKzYyMTY5IDYyNTNhNzIxZDhhNmEyYjNlNjliMzU5YTJmNDkyYmI3ZWIxMDFjZDEgbGVnYWN5LXRydW5rCis2MjE3MCBlM2Y3ZGNmYWEwMzBjYmU4NGY1YmRhMzRmZmJhNDlhZmNhZTdhMTIwIGxlZ2FjeS10cnVuaworNjIxNzIgODUzMmQ1NjkxODUwOWFiOGUxMTJjMzEzNWNjMTBiNDA5MWM0YWU0OSBweTNrCis2MjE3MyAxMGQ5NGM4Yzg0MTRhYjY3MmUyMjc4MGIwMmJiZWRkYmQ3YmE0NzYzIGxlZ2FjeS10cnVuaworNjIxNzQgZjg0Y2RmYzIyMWQxMzVlMGUyZTEzZTViZDkyNWQxMTI5ZGYxNjQ2YiBsZWdhY3ktdHJ1bmsKKzYyMTc1IGJjNzAwYWQwMjk2MjMxODUyNjRlOGM1ZDJkMjE2YmVmMTEyYmFmMmMgcHkzaworNjIxNzYgNDM1MmQ0MWFmZmIwMWIyNWYwZjE2MjhiZjNjYmFlOTkxOWUxNjk5NyBweTNrCis2MjE3NyA4NjRhNTY3MWM3YTQzY2E3NzFjNDZiYzY3NmVhNTI2ZDUyOTkwMjZhIGxlZ2FjeS10cnVuaworNjIxNzggMjJhNzRlYWY2YjIyNTNmYzEyNWIwNzkxYzJlNzEyOTdiOTFjZDlhMiBweTNrCis2MjE3OSA0MmE3NThmOTYxYTE3OTMzY2VlMmJhMzZjMTg2OWY4MDMwMmFkNWQzIGxlZ2FjeS10cnVuaworNjIxODAgMDEyZDk3YmJlZWFmNmY2YzE4ZWVmZDQ1NDEwZDM0MmVhNGFiMjNlNSBsZWdhY3ktdHJ1bmsKKzYyMTgxIGU1M2YyY2NjZGYxZDcxYjI3OTcwMTc5YzRmNmNkNmJmMjExNDZjMzQgcHkzaworNjIxODMgZmI1ZWFhNGJlNzAwOTFhNmVlYzQ1ZGY3MmY1Y2VlMmY2MWQ4NDllZSByZWxlYXNlMjUtbWFpbnQKKzYyMTg1IGY0NmNkMjQwZTEwNTg1Yzk0OTA1NTJmNjI3ZDc4MDc3MjE1M2M5ZjUgcHkzaworNjIxODcgMDM1Mjg5ZTZmZTIzNWRkMzA0YWU0OGQ2YzhiMTU1NTRhNjBhNmEwMSBsZWdhY3ktdHJ1bmsKKzYyMTkwIGM3ZGEzMWMyYzQ1ZmY3YmRhMGJhMjdjMmJlYzMzMmUyMjg1MzE2OTIgcHkzaworNjIxOTIgOWM2NDc1NDI3NjA1MjE0MzJmNzc4OWZjNWZhYzhhZGNmNmZhMDdhNCBweTNrCis2MjE5MyBlMjhlZDg1Y2M5NjJkZDc0MWM4MWY5MjE4ODk5MjVmODI2OTEyYjRhIGxlZ2FjeS10cnVuaworNjIxOTQgMjdkMzI0MzYwYTYzZTMxNGUyMmFhMmE4MTAwY2NiYTNmZjIzOTA0MSBsZWdhY3ktdHJ1bmsKKzYyMTk1IDg2ZGE5Mjk4YjkwOGI4Yzk3NmI4MWRhMDkyMTEzYmI5YzQyNWJlMmIgbGVnYWN5LXRydW5rCis2MjE5NiBkZjc2MTk1Mzk2MzFhMjY4YzJlMDY5YTAyMGNlOGRhNGViMjg4ZmZhIHB5M2sKKzYyMTk3IGE5M2QyOTE5ZWE1OWJkZDlhMGExMGQ2NDQ2MDdjYjliZjFiMjAwOTcgbGVnYWN5LXRydW5rCis2MjE5OCA0YmRiZWY3MDk1MTU1YWJjZjhiMmY5NjA0YWY4NzVjMzk5NzNmZDBlIGxlZ2FjeS10cnVuaworNjIxOTkgNGU3MjQ4OWYxNmQwNTBhZmI1NDczNDc1ZDczZTg5MThhZDQ3ZjFjMSBsZWdhY3ktdHJ1bmsKKzYyMjAwIDNhYjU0NzRiZGU0NTdmODRlZjUwN2MzN2E4ZDI2NDQxYWJmZjE5NDkgcHkzaworNjIyMDEgM2Q5YWQyN2Q5MzBiMDc4ZTAxMGQxODBmYTczNWM5YWIyOWVlYjMwMyBweTNrCis2MjIwMyA1NmU0OTk1MmQxYTRmNjNiYzUzOTQ5MmEwZDdiM2JkMjA0YmQ3ZWNmIHB5M2sKKzYyMjA0IDJkOTVmN2E5ODNkODJkODBmZDhjYmFiNGRiMTk5N2NkNDFjYjIyZmIgbGVnYWN5LXRydW5rCis2MjIwNSAyN2RmM2I4MTM1MTgyOGQzNzRkN2M5MTBmMTY5NDljMGQxM2Y1MjM0IGxlZ2FjeS10cnVuaworNjIyMDcgYzI2NjcwZjFlNTIwZmVmNGYxODAyMWFiYTJhZGM2OTE0YzcwZmNmYyBsZWdhY3ktdHJ1bmsKKzYyMjA4IDIzYjY1ZjJkNzYyMTlkMjk5YmYwYTU2YTBlMTBkNjYzOWVjNGQwNGYgbGVnYWN5LXRydW5rCis2MjIwOSAwYmU0MDBjYmQ1YjhhMDJjNmNhOWUzYzYzNDY2YTIwNDFjZmU4ZDNiIGxlZ2FjeS10cnVuaworNjIyMTAgZDc2ZTU5ZmJmMDZkNDE3Yzc1MjJlOGM1OWJkOTExNjNmNmY4NjUwOCBsZWdhY3ktdHJ1bmsKKzYyMjExIGZkNDdhOTAwOTA1YzJkNmZmN2JjNmNmYmZlZmFjMzE0YWNjMzVjOGIgcHkzaworNjIyMTMgNjBjZGI2NzAzZGYzM2U4YmJiNmI4M2NiNmYyNjJiZWMwMTI4MDdiNSBweTNrCis2MjIxNCAwOWYzNmQ1N2M5ZDYxM2E5M2Q0MGVhNDBhYjQ2NzFhYmYzOTQ2Zjk4IGxlZ2FjeS10cnVuaworNjIyMTUgZjljNjFjOTZhNzY5NWIwYTg1MWEwYTgwOTFjNGIwNDg4MjdlZDJiNiByZWxlYXNlMjUtbWFpbnQKKzYyMjE2IGNkMDgxODQ2MzdjNThiZWYyNGEwYzgwZjljODJkZmUzN2M0ZjkyMjIgcHkzaworNjIyMTcgODlkZDE2MmYxNTViZmNhOWUzZDkyMjEzZDNjODMxOGUzNWEzODQwNCBweTNrCis2MjIxOCA0NTg5ZDgzMWFhODBiYmU1MTZiODE4ODBhNDY1ZjIxMmEwOTE2Njk4IHB5M2sKKzYyMjE5IDIxOGYyZDU1ZGU0ODgxYWMxZDU4YWI3N2Y1MGQ3MDYzOTU2MDAzNzkgbGVnYWN5LXRydW5rCis2MjIyMCA0MzQ4MzQzMjE5MjQ4OWQ5YzkzYTJmY2M1ZDU2MzhkMzdhMWUxOWQ3IGxlZ2FjeS10cnVuaworNjIyMjEgNjNhMGQzM2M0Y2QzNTQ5ODYzNjc2NDM2ZTMyYTQyOGVhNzQwMTI0MyBsZWdhY3ktdHJ1bmsKKzYyMjIyIDI3MGQ3OWY5MDA3MTFlYmQ0NjRiMTE1ZDcyZDEyMmYxMmFhMDRmMTcgcHkzaworNjIyMjMgZTAyNGI3NTUyNzk1ZWNiOWVkNjY3YjM5MmVhOWZhYTg1MWU1YWU1YSBsZWdhY3ktdHJ1bmsKKzYyMjI0IDYzZjlhODUyNjA5ZTMxODg2ZjEyZmY1MGNkOWExMmRkYzY3N2U3MGEgcHkzaworNjIyMjUgYWU2NGZhMWJjOWNiYjRiOWU0MmYxMGM0YzJlOGYzOGNiMzRhOTkyNCBweTNrCis2MjIyNyA1MGY1MTg0ZWVlZDhkOGFmMTFjZjFjODE4MmQ2MjYyNDBkMDkxYzAxIGxlZ2FjeS10cnVuaworNjIyMjkgMzgyZDVlYTE3ZDc4YTQ4ZDJjYWVhYTAyNjMzN2E1M2FkMTRiM2RkMyBsZWdhY3ktdHJ1bmsKKzYyMjMwIDg1NDNmOGM4MWRhMDg4YWQyN2QyYWVmYmViYjIzYmYxMWRmNzUxMzYgbGVnYWN5LXRydW5rCis2MjIzMSAxZjE1NDYzYWY5OGMzOTRhMzE3YTNmYTc2NzMzZDQxYTE2ZDg2ZWMzIGxlZ2FjeS10cnVuaworNjIyMzMgN2ViZTgxYjFlNDIzMmE1YTZmZGVlYjY2NmFiMzhjNGUyMjJlNjgwZiBsZWdhY3ktdHJ1bmsKKzYyMjM0IGQ5MTdkYTJiMTk0NmUxMmM0NmY1MjMyNmE4ZTY3YTNmNWE1MTkwMzMgbGVnYWN5LXRydW5rCis2MjIzNSAyN2M3MTM5YTk4ZWY3ZTllNmQxMWM0NDc0OThiZTE5MzI4NDQ3OGE5IGxlZ2FjeS10cnVuaworNjIyMzYgMDQ5OGViYjZjNDFiODMwOTgyNjE4MTYzOWFjYjliZTlkYjM3MTQyYiByZWxlYXNlMjUtbWFpbnQKKzYyMjM3IDdmZDI3NGE1OGQ1YzFlMGVjNWViODdlNzFjMWU5Y2UyYzk3YWIzNWIgbGVnYWN5LXRydW5rCis2MjIzOCBhYmRjODFlMWNiNWJhNjU1YmRiYzJkNDEyZWRiYzllMGJhZWEyYTVjIGxlZ2FjeS10cnVuaworNjIyMzkgYWY0YzQ2YmYzZDA5NzJiNzQ1NzAwZWQwNDNmMTc1NGE3MmM0MzQ5OSBsZWdhY3ktdHJ1bmsKKzYyMjQwIDYwODg1ZjhlODU3NWNlNmU0ZjZkYTYwOTMwMDQ1NGUyNDg5OWYzMGYgcHkzaworNjIyNDEgYWZjNjIxYTFiYzQxOTAzOThmZGQ0NGJiMDhmNmU3ZWE1ZjA2YzIyNCBweTNrCis2MjI0MiAyZTkxN2IwYzhmNmU4OTJiYzRkYjhhMWZkYTVlNmZiZmJjZGNmMjRhIHB5M2sKKzYyMjQ2IGIzY2QwMzM5Y2E3N2U5NzkxODk4Y2YxNmMyZDg3OWRhZGJmNTM5OGQgbGVnYWN5LXRydW5rCis2MjI0NyAyYzQ1NTNmNjU5MjQzNTE2Yjg3MTBjMDJkOTMwYjNiZTEwMDdkODU0IGxlZ2FjeS10cnVuaworNjIyNDggYmU3YjBlYjU5OTBjNmI2MWE5NjQyOGExNzg0ZTY0YzI5NjIxY2FkZiByZWxlYXNlMjUtbWFpbnQKKzYyMjQ5IGFmZjM4MzlkMDM5NDFhZDQ1YWQ3YzFjNDllZDhlMzE0YmExOGFkYWYgbGVnYWN5LXRydW5rCis2MjI1MSA1YTU2OTJlM2M5YmUyMjk1NDcxYTY2ZTg0YjRmY2E0ODhiZDVlYmZlIHB5M2sKKzYyMjUyIGZmMzRlZjBhODA5NjQ4Y2RjM2UwOWI1NDY5NzcwZTlhYTk5MzA1NTMgcHkzaworNjIyNTMgMThkYjhjNGQ0NDg3YWU2OWEzZGVlZTBhZmM2NWZjNTg0MjEyNzc2NyBweTNrCis2MjI1NCBlZmE5Y2MzYmQ3ZjNlYmE2OGZhNzhlNDlkYzJiMTFiNmFlMDU5NWU4IHB5M2sKKzYyMjU1IDExYjE4ZGQxNTkwM2ViOWMzYmE2NzMyMDE1MzhmNzUxMTk4MmM3ZWUgbGVnYWN5LXRydW5rCis2MjI1OCBkOGI3NzFiZTIxZGY0NDk5YTI0YjA5ZTVhNmIzNWQ1YmJlNmNmNzRjIHB5M2sKKzYyMjU5IDM2MDMyNjc2NzI4ODBhNDFjNWE4OTdmYTAzYjllZDJkNzU0Mzc3NDIgbGVnYWN5LXRydW5rCis2MjI2MCBjZTMxODc0NjIwMTFmNjgzODZjYjUwZWI5OTk0ZWY3ZDVkM2RmMjdkIGxlZ2FjeS10cnVuaworNjIyNjEgMGI1NTg3NWMxYzljMWQ2NjBmNzMxYTMyOTU5YTkxNmU5ZTM1ZjczMCBsZWdhY3ktdHJ1bmsKKzYyMjYyIGNkNGIxZjNmZDFhOTc0MDc1MDI2NDNiMzA0ZjFlYThmZjVmYTgyYzcgcmVsZWFzZTI1LW1haW50Cis2MjI2MyA4NDJhNmMyYzliY2QyYTczMGNjYzQ1N2YyMWY2YjJjZjVmNGNkNDViIGxlZ2FjeS10cnVuaworNjIyNjQgMjI4N2E0YWIyNGQ4NzYxMTk4OGY1MTZiNGFjNWYyNWMxZmU4MGY1YSBweTNrCis2MjI2NSAzY2U3Yzc5NmJjYTEyNDk1YmNhMDdiN2ZjY2JlYTYwZGE0YmMwYWExIHB5M2sKKzYyMjY2IDhkNTU1ODUwZjczZDk2OGZkNjdjYjJiYTZjYTE1ZjkyNzE3NGU3YjIgbGVnYWN5LXRydW5rCis2MjI2OSA3Yzk5Y2VkYzNlNTRhNWVmYmY4ZGIzYTQwMzQ0OTU3MTNjODI3NmFhIHB5M2sKKzYyMjcwIDVlNTVkNDI3NWEwOTQxMGQyOTZiNzcxYjA2ZmM5NDY2ZTlmYTVmMGMgcHkzaworNjIyNzEgMWFhYWIzMjE4M2YyMjc0NTg1OTZhZTAzZjlhZDljYmM2ZmZjYzBmNyBsZWdhY3ktdHJ1bmsKKzYyMjcyIDA0MTBmZjgxOGVjNzhlZjFiMjI0MGIzYTI3ZTAwOTJlY2RiZDU4OTEgcmVsZWFzZTI1LW1haW50Cis2MjI3MyA2NDVjNTM1ZjgyMjMyNmViNzcwMTg2NzYzZjA3N2RkMmM2OTYzODIxIHB5M2sKKzYyMjc1IDg0MTZjZGQxMWMxMTcyMTgwMmU5ZDI3NTY3MTU0NzQxODRiY2FkZTQgcHkzaworNjIyNzYgNjE5NjUyOWFmZDczODQ3NWY1OWJmMGI3N2RhZjUxMjE1ZDdhMzI5MSBweTNrCis2MjI3NyAyOWE3YmVjNjEwY2JmMjM5Y2U5ZDg1ZTIwNDRmM2I5MWFjNDRiNzU2IGxlZ2FjeS10cnVuaworNjIyNzggNDVmZGFlNGNkYjU1N2YyYTZjODUwZGU4OTUyMTI3NTZmOTkyOTc5OCBsZWdhY3ktdHJ1bmsKKzYyMjc5IGRkY2U3Yzk0MjFkMmU5NmZkNTVhNmU5Y2RlYTIyNTUwZjljZTVhMDMgbGVnYWN5LXRydW5rCis2MjI4MCBhZmFjM2ZmNjBjNmM1YzEwODgxNDczY2EzNjM1YzMyM2Y2MTlkZWJjIHB5M2sKKzYyMjgxIDA5NGE5Y2U0YjliZDRmZGRmM2FiZjk0NmYzODQ3ZTQ1YjJiN2IwNGIgcmVsZWFzZTI1LW1haW50Cis2MjI4NCA5Nzk3NGQ5NjcxMjcwYjc4N2U5YWMyNDg2YzE1NmQ4NGFiZjQ1NjFkIHJlbGVhc2UyNS1tYWludAorNjIyODkgYmMzMzc3MGNhMTE0OGM2MDI5YjI3NDk0NGY4MDRiYThjZGU3NmRiYSBsZWdhY3ktdHJ1bmsKKzYyMjkwIGEyNDg1NmJhNzdmZWQzNGNhZDUyNTk4YTEzOTNjMzM1ZjNhZTcwNzIgbGVnYWN5LXRydW5rCis2MjI5MSAzMzYxYjk4ZmY0ZmY4Y2U4Zjc5ZmQ3MmUzYjk1ODFmOGUyNDFlN2FjIHB5M2sKKzYyMjkyIDM2NTNmYmRkNDQ4MzliYmExMDg2MDc2MGRmYzI0NDM5YmFjYmQ5NjggcHkzaworNjIyOTMgYzFmYTJlNzU4ZTA1YjVhNGIwN2JiNjY0NWZkMjZjMjU0YjY2MWY0NCBsZWdhY3ktdHJ1bmsKKzYyMjk0IDk0NzgyYmU4ZjFlNzdiNThiZjhjOTVlZGE0ZTVhZGM2ZDM3ZTkwZmMgbGVnYWN5LXRydW5rCis2MjI5NSBmZTI3NTFhY2FkM2UxM2E1Y2JhZmMwNDNmZjQ1MDMyMWIxYWU5ZTQ5IGxlZ2FjeS10cnVuaworNjIyOTYgY2EyMzNiZTY0NTk4OWNhZGZmNDQ2NmQxMjU2MTE0NTY1ZTYxOWQ5NCBsZWdhY3ktdHJ1bmsKKzYyMjk3IGQ0NmY2ZWIwOWViY2ZiODY2NGFkYjg5YTcwOTYzMTlhMGE2YzY5ZTIgbGVnYWN5LXRydW5rCis2MjI5OCA3NjRhYWIwZThiOWIxZTQ2YTM0ZTI5MWI3M2JiYjg3MDAxYTFkNjgzIGxlZ2FjeS10cnVuaworNjIzMDEgOGI5MTRmY2U5ZDg0YzA4NGRhNDk5NmUwNDg0OThhYTJjMDk1M2MyNSBweTNrCis2MjMwMiAyYTk4NTgyNTVkZTEwODczZTg5OGIzOTA4NzNlODQwM2Y4YmU4NmYxIGxlZ2FjeS10cnVuaworNjIzMDMgODQwMDY0ODAyOTUyYjM3OGU4MWY0NjI3YTAxNzVjNmY4MmRjZWE2NyBsZWdhY3ktdHJ1bmsKKzYyMzA0IGY3ODFjYTE0Mzk1YjA2NTdmMmFhZTYxOWU1NjE2ZjJjYWRiNTI4ZjcgbGVnYWN5LXRydW5rCis2MjMwNSAzOWVhMmZjNDUwM2QxMjMxNzk1YTdjY2E1ZDc0YWViMTM0OTUzYjIzIGxlZ2FjeS10cnVuaworNjIzMDYgODNlNjk3NWMzMTk5ODQ0MTdhYjFmMmNlZTE4MzNhYjJjYTI3YzNkMCBsZWdhY3ktdHJ1bmsKKzYyMzA3IDMzMDdhNTQ1MGMzNzlhNjkxYTJlODlhNmQxZWFhOTllMzM0NjhjNzIgcHkzaworNjIzMDggMzZkMGExZTBjMDI0YmE5ZDAwNzZiNThkMWMxYjcyM2Y5MjUyODhkNCBsZWdhY3ktdHJ1bmsKKzYyMzA5IGI1NDRiYjYxYmNhOWNhYmQwMzM3OGY4Y2M3YjU3MjJkNWE4MWJiNjIgbGVnYWN5LXRydW5rCis2MjMxMCA5YWQzMGNjY2U0OWMxODFjZGUzOWJjMWY1MzAyZmE4MjFjZWU2ZWQ5IGxlZ2FjeS10cnVuaworNjIzMTEgMDIzNDNlY2FmMGJiMDA4OTc5ZGZlYWEyNTQ0YTMwMzFmYjA5MDc3MyBsZWdhY3ktdHJ1bmsKKzYyMzEyIGUwYzNhY2IxMTZhNTU0YzEwZTYyOTdlYzIyODllZTA3YTY4YTg4MmQgcHkzaworNjIzMTMgOGYyYjY1ZWM3YmJhYjc4YjlkNDBlNDg0YTJmZGI1OGI4M2JhZGMyNCBsZWdhY3ktdHJ1bmsKKzYyMzE0IDI5MjMxYTk3MzU4MGVhODRkM2VlMWJmZGYwZWU5Mjg4YzU2ZWFkMTcgbGVnYWN5LXRydW5rCis2MjMxNSBmYzMzZTc1YjkyNTcwZGMzZjEyZjQxM2M0NjRjNzMwMDhiMTlkNzJkIGxlZ2FjeS10cnVuaworNjIzMTkgN2E1YTU4MGJhNmVhMjNiYTk4MDYwMGM0NzFhMTVkMDE4MTcxZGUzZiBsZWdhY3ktdHJ1bmsKKzYyMzIwIDA1MjgyNzkwMDc4MjZkN2Y4ODQyYmY2N2RkZjZlZWUyNGE1MTViYTggbGVnYWN5LXRydW5rCis2MjMyMSA4NWYwZTFhYzBiYzliMmIxMDZiMDQ1NzMwOGEwNTA4MzdiMmU1NjljIGxlZ2FjeS10cnVuaworNjIzMjIgNDdkOWJiZTEwODk3MjBjZDFlM2QzNzA3NGVhNTNiZmNjMDllMmUxMyBweTNrCis2MjMyMyAwMjhkODYyNTQwOWIyMjJkYWQ3Y2RiNjlhMDJmZDY5ZjdhNjVmYWQ4IGxlZ2FjeS10cnVuaworNjIzMjQgNGFmZGM2OGVhNTJlYTU4YzY1N2Y1ZDQ1MGU3NzQ3MGE1OWE5YjMzNCBsZWdhY3ktdHJ1bmsKKzYyMzI5IDY5NTJlNzE4MWZmYzg4ZjhiZjkxNmQ5NzIzOWY1YThkNzQyNDFmN2MgbGVnYWN5LXRydW5rCis2MjMzMCBiNDIwZWFiZjk4MzU0NTk3NDMwYWQ4N2JjZDg3MjlkNTcwMGM0MmYwIGxlZ2FjeS10cnVuaworNjIzMzEgN2MyMWNjMTRiOTRmNWE2NGQyODZhM2RjYzVhYjc0ODQyZmUxNGYxMSBsZWdhY3ktdHJ1bmsKKzYyMzMyIDAzZDljNjY0YTdiYzg3MDVmZDVjZTZmZmE4YmZlZTVhMDQ0YzMyY2MgbGVnYWN5LXRydW5rCis2MjMzMyA0MGZkZDVjZDJlZjUxZDYxNjhkMDc2MjgyNWYyN2ZlY2QyYjRhMGNjIHB5M2sKKzYyMzM0IGZiMDgxMDI1YjIyMzBiZDdkNDhmMWUxMzM5NGUwMjVjN2U0ZDViNTYgbGVnYWN5LXRydW5rCis2MjMzNSA0Njg3OWU3ZmM0ZDMzNTRiZWYxZGQ2MDg5ZDQwYTI3YzQ3ODQzNjAzIHB5M2sKKzYyMzM2IGM3NDQyMzUxMDM2MTgwNzFkNjA4OGJmM2I3ZDRjNTIyODlmYmE3NjUgcHkzaworNjIzMzcgNzJhNzY0ODY5OWQwODM4OTlkMjM2OTJmMWI2ZTQ1OWIxNDc2MjI4ZiBweTNrCis2MjMzOCBiM2RjYThmNTUzNWVjMjIxZjUwZjhiMTM4NzBkODdlNzMxZDkyZWNiIGxlZ2FjeS10cnVuaworNjIzMzkgNjE0ODdiZTZmNDQyOTJkZDM4ZDVjZWIyMzM0MzA3ZGY5OWQ3NjBjYSBweTNrCis2MjM0MCA4ZGQyNDc0MWI2YWFmMGI2MjQzYmI2N2M4ODAxMzIyNDgxYmVlOTI2IGxlZ2FjeS10cnVuaworNjIzNDEgNmU0Y2E5ZjcyYmJhNmRkYjJkMDZlOGQ3ODBhNWFjOTgyOGVmZTczMiBsZWdhY3ktdHJ1bmsKKzYyMzQyIDBmZWRlNGQxYjE0YmEyYTUzYjEyNzIxOWFmY2YyZmVkYTNkZDU4ZmQgcHkzaworNjIzNDMgYWQxNzBhMzM1OTY3YmFiMjE3YWQwM2I1MDk4NWJlYzBjMGFiMGQwMiBweTNrCis2MjM0NCA1OTc1M2JkY2UwODk4NDljZTFjZDdjYTliYmU3OGU4ZDg5MWUwMjMzIHB5M2sKKzYyMzQ1IDI0MjA1YjFmOTU0ZWY3NWU2MjMyZDdiNjg2MmFhNzk0NzNiZmNhMzggbGVnYWN5LXRydW5rCis2MjM0NiA5OWJmYjhkZTM0YjFmNmQwMTYxMzZhZWJlMDg4ZDc3ZTRjYWY5MWEwIHB5M2sKKzYyMzQ3IGVhYjE1Mzk4ZWVmMDBhY2I2OWU4MGIzZWUxNTJkZDFjMTFjZGM2OTEgbGVnYWN5LXRydW5rCis2MjM0OCA5MWIwOTlhN2YzZTIyYjgzZWE4MjAzNGY4NGYyZjZlNmEyOGQ2NDBlIGxlZ2FjeS10cnVuaworNjIzNDkgOTgxZGYxM2FhYjIwMDhjMTE0ZjQ1MTg1NzRlZmJiYzM4NmZmNWRkYiBweTNrCis2MjM1MCAxODQxZjkyZTMwZGVmMGE1YjMxMjdmNWFhMWZiMGEwM2QzZTcyZjM0IGxlZ2FjeS10cnVuaworNjIzNTEgZWYwNmVkODA0OTE4YTFhNDAzMjFjYWRmYmQzMzljODlkYmVlOTgzMCBsZWdhY3ktdHJ1bmsKKzYyMzUyIGNlNTU5N2FmOTljN2Q5NWNiZjViMTlhY2Y1ZDAwNzM0YWMyOWI2OTIgbGVnYWN5LXRydW5rCis2MjM1MyAzZTA5NWFiNzVmYzg5YWVkMDJmMGM0ZDVjNzljZjg3OGE0N2UwNjYyIGxlZ2FjeS10cnVuaworNjIzNTQgMTlmZDQ2M2VhNzI4ZTQwZTg2ZjY4NzhiY2MyNTVmMGQwNmQwOTRkNSBsZWdhY3ktdHJ1bmsKKzYyMzU1IDM4YzgzMWI0N2RjNWJiNDMxY2MwODJlNDk1NDAzZDczNTk0YmNmNWQgbGVnYWN5LXRydW5rCis2MjM1NiBiMDRmMjA1MmU4MTI2Mjk2MWQyYjNkN2Y3ZTUxNTAxOTkwODZiMDZiIHB5M2sKKzYyMzU4IGI3MjMxMDY5MDFlMGNmMGYzYzQ0M2IxZTFiZWYzYWE4ZTcyZDUwNzUgbGVnYWN5LXRydW5rCis2MjM1OSA5ZjNjYTE5MTYyYTczOGE2MjBjNjAyNzYxYTYxY2JmMDFkMmVhMmY2IGxlZ2FjeS10cnVuaworNjIzNjAgNDgyODk2NDVjZGVmNzdmZmRlYjU2Y2JiYjNlYjBiY2JmYjY2MTVhYSBweTNrCis2MjM2NCAxYzliYTQwMTFmNWRkODViZGRlYTNjZjc4NWQ4NGM2YjMxYTY5Y2FmIGxlZ2FjeS10cnVuaworNjIzNjUgMDdkN2U1Y2RjMWEwMTBjZjkxYTI0MTcwODk4MDg3NTE1NDQ1NjUxZSBsZWdhY3ktdHJ1bmsKKzYyMzcwIGJjOTZiYWM1ODZiNGMyMWZjMmIxMmUyYmYyYmNjZjAxNjgzMWVmZDcgbGVnYWN5LXRydW5rCis2MjM3MiAxZmVmMjZmODliY2VhMTg2YTU0MzIyMDJkOWYwZjZlNzRkMjE5N2E1IGxlZ2FjeS10cnVuaworNjIzNzMgN2NkMzYzZGY3YTg0NmNkMTgyNTA0YWZkZTgwYjU4ODgzMmI1ODIxZiBsZWdhY3ktdHJ1bmsKKzYyMzc0IDUwMjRiMTJhMDM5ZDFjN2RlMWEwYjIzZTc4YjE0N2I0ODE4YjA0MDkgbGVnYWN5LXRydW5rCis2MjM3NSA4OTE4YzUxZGUwMTA4YWNlYzcxMTNjNjU4MTlhMzkxYzY0M2IwZWQ3IGxlZ2FjeS10cnVuaworNjIzNzggNGY4MjYxYjkyZmM1NjBkZWQ0MzA2ZWFhZWU2NTFjY2E1NmRlODFiOSBsZWdhY3ktdHJ1bmsKKzYyMzc5IGZiOGQzZTFmNjE2MTJkNDRlZmYxM2RiMDYwMTI3MzAxNWIxMTQ2MDUgbGVnYWN5LXRydW5rCis2MjM4MCA1YmM3YjIwZGMwNGE5ZDI0OWE4MjMzOTQ1NzY0MTVkYTdmZTg4YTkwIGxlZ2FjeS10cnVuaworNjIzODEgNWM0MzE1OWY1YWQwYjA2NTk5YjZiN2EzOWJlY2M5ZWJjMDBjNmJjZCBsZWdhY3ktdHJ1bmsKKzYyMzgyIDc3OWNhYTFlMGZmYjJlMGM4MmUxZTczY2U3ZjE0NGQyOWMyM2MyMjEgbGVnYWN5LXRydW5rCis2MjM4MyBhMTk5NzM5OWY4NzI0YzRhYTMzNTQ1NTg1ZDBlZDczMTdlMDkzYmEzIGxlZ2FjeS10cnVuaworNjIzODQgYjY5ZjQ0M2VmNDgwNzE3OWNiMTFiNmI1MmViMzY1MzM5ODk4ZjI4MiBweTNrCis2MjM4NSBiZWI3YWJjZDZjMDFhNTQzZGFkZjZmODI1OGRmZjVmYjdiZGUyZTY4IHB5M2sKKzYyMzg2IGUxNjU5M2RhNDg5ODljNzAzZGFlNjczNmE4MGZlZDU4ZTJmYTAwZDQgbGVnYWN5LXRydW5rCis2MjM4NyBlMDI5ZDdjN2RlODExNDQxMzNmZThhODk5MDUwOWFjNzdkYjY0Yzg3IGxlZ2FjeS10cnVuaworNjIzODkgOTdjMjE0MTdhZjQwYWQ3YjI3NjY3ZTU0Mjk4MjMwYmU0ZmEwYjcwNSBsZWdhY3ktdHJ1bmsKKzYyMzkwIGIxYzcwYzg5YzNkYTZjMzljMTEzMmVlMTMwNmQ2ODg0N2IyNzI0NDIgbGVnYWN5LXRydW5rCis2MjM5MSAzNzQ4MzNkZTU3MGMyNDFiZTA2MzRmZTE0YmU0OTJmNTAyZjYyOTUwIGxlZ2FjeS10cnVuaworNjIzOTIgMTBkYTI3OThlNThkODM2NDFjYjAzMjJjNTdlMDM4ODNlMTA3ZjJhZCBsZWdhY3ktdHJ1bmsKKzYyMzkzIDRmNzE4MDYxZjQ1YTQ0MTg3YzUyMGIyYzYwNmI0NmZhZjFjNDE1NmUgbGVnYWN5LXRydW5rCis2MjM5NiA4MmQ4NWEwNTkyM2JmMzk4NDZhNDUxNmIxNjAyMGYwZDBlNTc1MGI3IGxlZ2FjeS10cnVuaworNjIzOTcgZDBmYTQ1ZTYzN2EwNTAwMTkwY2QzZGZiM2U4N2VlZGJkNTQ4OGZkNCBweTNrCis2MjM5OCBjMzY1OWNlODkzZTdlOGJiZWJiOTI3ZmJhZmIwODcyNzkwNmI4Yzk4IGxlZ2FjeS10cnVuaworNjIzOTkgNjQ0YTY3ODMwMDYxYmEzNWI0ZjhhZmZiOGEyYjY0NTIxMmZlNGYxZiBweTNrCis2MjQwMCA2NDhiNGQwMWNjY2Y1OTU1ODE1NTU2NWIzYjNjNGZiOWFjZGViY2NhIGxlZ2FjeS10cnVuaworNjI0MDEgMTAyMzZkMWQwODYwNzY3YTQ5YThlZTE0YjFjYTUyOTRiM2M5ZWJlYyBsZWdhY3ktdHJ1bmsKKzYyNDAyIGRhNGE4N2Q2M2IwZWUzMDBiMjAxZGEwMmZlMTQwYWUxMmZjOGQ1OGUgbGVnYWN5LXRydW5rCis2MjQwNSAzODVlMjE4ZDBmNmM1YWU1YjNmZjdjYzczYjgwNDMxNzY1M2ZhM2JkIHB5M2sKKzYyNDA3IGZmNThjYjVhYTc2ZGE2MDA5Y2NkOGUyMWU2YTI2OTNmMGY0Mzk2ZGIgbGVnYWN5LXRydW5rCis2MjQwOSBmNjQxZTUwNWZmZjQ2ZTE3NjVhNmQxMGYyMzUwMjEzM2NhZDQxZDc0IGxlZ2FjeS10cnVuaworNjI0MTAgMzViZjgwMTJhMzc2ZTYzZDE1YTkxM2U2MzgyOWUwN2FiZjAwOTAxMSBsZWdhY3ktdHJ1bmsKKzYyNDExIGQxNjYyNTFkODAxNDQ5MTY3Nzc3Mjk4OWVjZWM2N2U3OTY4M2ZhMjQgcHkzaworNjI0MTIgMzFmZjU5ZDk4NGJkZTJjOGU3ZjgzZmY1NjcyMGY2NTQzN2EyMDEwMSBsZWdhY3ktdHJ1bmsKKzYyNDEzIDgwYjE2NTk1ZTQ2MjZjYzg0YjkyNzdmMDBhNzBkMGZjZDkyZWQ4YTggbGVnYWN5LXRydW5rCis2MjQxNCBhMjBkZWYwMTAxZGUyNjllMWFkYWRkNDllMWJlZDAxMDNjNDIxNmEyIGxlZ2FjeS10cnVuaworNjI0MTggZjNjZjEyYmQxMTEyODQ2ZDBhYTQxNTEyZDA4OWJlMzA3NDBlMTA3YSBsZWdhY3ktdHJ1bmsKKzYyNDE5IDczNzMyZDY2ZDBkNWY3YjU3MzUzMjU2ZmFmOTdhOWUwYmE3NDI3MDcgbGVnYWN5LXRydW5rCis2MjQyMCBjNzhjZmUyMTI2ZGExODQ2MTM2ODZjMTZlNWQ3MjA0ZGFkNTkxOTU2IGxlZ2FjeS10cnVuaworNjI0MjEgNjBmNDQ1NmZhMzM4M2UwNzgzYzE0MTQ1MWUyZjM2YjcwNmIzMWUzNCBsZWdhY3ktdHJ1bmsKKzYyNDIyIDYzOTY1MzI3YjNlZjY1ZjFiYzc5ZjE5ZDE4NDE3YzkyMDc5Mzk3MjAgcHkzaworNjI0MjMgNjMyM2JkYzJkNjcxMWZiZjJhZDVjY2Q3MWNmZWVjOTRlZDFiNzdlZSBsZWdhY3ktdHJ1bmsKKzYyNDI0IDAyMjI5NjAzMmQ4ZjY5NjRhMGZkNWMyMTM2NmU3OWQxZGNkY2IyMGIgbGVnYWN5LXRydW5rCis2MjQyNSBmZGQ1YTAxOTg3NjlkMzA3NWE5MzZlOGU4M2E3MjEyYzljYzYzZmMzIGxlZ2FjeS10cnVuaworNjI0MjYgMDUyZmQ4ZjFjYTM3MWM2ODczMzgxMDFlNjU5ODQ1Y2FiOGNhZTZmNCBsZWdhY3ktdHJ1bmsKKzYyNDI3IDQwNmVjYTJkZGJiYzRmODlmNmZhYWMzYjM0NDdkMjdhZDM4OWMwYTkgbGVnYWN5LXRydW5rCis2MjQyOCBkZjEzY2NhYTVhZTk3YzAxZDg2Nzk3NTQ4ODUxOWRkODg0MDYwMmNlIGxlZ2FjeS10cnVuaworNjI0MjkgNjA3NzYwNjMzOWJiOWZkMDIyMDk5NzBlYWRlZTg2YTY0Y2U4MzUyOCBsZWdhY3ktdHJ1bmsKKzYyNDMwIGQzYWY5ZmQxY2ZhZmY2NzY4NjVlYjhjNmE0NTU3YTNhZDhkMmM4YjUgcHkzaworNjI0MzEgZDBiOGE5MGNhMjcwOWY1ZmU5M2IwODhhOTg0OTJmMmZiZDZkZGI4MyBsZWdhY3ktdHJ1bmsKKzYyNDMyIGJiMGY1OGFkYzkxY2UwNzIwZjA5MzZkNTljZWJlM2FhMWQwOTVjMjIgcHkzaworNjI0MzMgZWM0ODQ5MGI5NjlhYmRlYjM4YjA2ZTI0OTkyZDExZTY1ZjFkNGVhYyBweTNrCis2MjQzNCAzODc0OWMwOWM1NTYzNTAxZDA1MTE4ZmZkMzUxYmFjZDczMmIyOWMzIGxlZ2FjeS10cnVuaworNjI0MzUgYWU1NTRlNWQ2ZTA2ZGIzMGZhNTY5M2FiYzdiYjRkOTczNDMwMTMyNCBsZWdhY3ktdHJ1bmsKKzYyNDM2IGY1MTk1M2NjZTZhYjE5YzYzMjM2MDc0YmM0YTI4MzkzZWU1YjJhMjAgbGVnYWN5LXRydW5rCis2MjQzNyA5OGUwNzJmMjJjNGYzZDYyOGYxMTY0OGMwYjczZTQ5MzgwYzM1M2RkIHB5M2sKKzYyNDQxIDFhY2QwMGYyYTM4MDdjYmE2MDFkODViNzg5YmU1ZmUyY2QxYjQ2MzEgbGVnYWN5LXRydW5rCis2MjQ0NCBiN2RmMzBhYzViNWEyNjA4ODc1ZjE0MzU5NzgyOWNkMDM0MTRmMDAzIGxlZ2FjeS10cnVuaworNjI0NDYgMDQ5Mjg0NzBhZDg2MDlhOTg0NzNkMjEyZGFiODlhYWZhZGY0Mjg0NiBsZWdhY3ktdHJ1bmsKKzYyNDQ3IGJhZTJmNGZlZWZjY2NhY2FhZGExNTlkMGEyOTY5NWYxZjZlMDAxNWUgbGVnYWN5LXRydW5rCis2MjQ0OCBjNDRiOGNhM2Y0ZDI5NThjYTg2YmYyM2JhNzI3ZDBiNWY5YzNmZmEwIGxlZ2FjeS10cnVuaworNjI0NDkgYjEyNTgzNjQzMTI4ZWFjZjg1NDc0ODdhMzUzM2IzMzlkMGMzZjIzMCByZWxlYXNlMjUtbWFpbnQKKzYyNDUwIDQzNGJjY2VjYTdkZjA4OTBlNDJlMmM3NjJiMTE4MDlhYjgxNGYxMGYgbGVnYWN5LXRydW5rCis2MjQ1MSAxMDhmZTU3YjlhNjhlMWU5NzhmOGRmYTc2MTk5YWIyYzA0YjgwZGVkIGxlZ2FjeS10cnVuaworNjI0NTIgMmYwMDY1NDQ4ODgzYWJjNTlmNWEyZmZlNTkyNDQ3N2NhOTg4ZTUzZCBsZWdhY3ktdHJ1bmsKKzYyNDUzIDA5NDFkNzllYTdkNmVmYjYzZTBkZDI1NzdjNTJhY2NlYWRmN2U4MzcgbGVnYWN5LXRydW5rCis2MjQ1NCA4OGE4ZGVmNTgwMDc3N2FlMWQ3N2UwYjIzNGEzNzliNDY3ZjIzNGNiIGxlZ2FjeS10cnVuaworNjI0NTUgNjQyZDU3MTIwOTNiODBiMDhlNGJkMjA4ZmFhZThmMmIxOTA0ODQ1NiBsZWdhY3ktdHJ1bmsKKzYyNDU2IDY2Yjc5OTMwNjhiZGEzMWVlNzIzOTEyY2NiNjNmNzg2MjgzZDk4NzIgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU3IGZiM2NiMDQxOTVlMGY4MjJiMDczZGY3NTVjYWJjZDY5MmQ0ODFiZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU4IDE0NDAzYTU0MjU4ZmM0ZTg5NTk1ZjZjM2RlMWFhYzE4MDIwZTlhZDEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDU5IDBjNTgyNGIwMDI2MzNiYTQ2MTU4MDMyNjI3NWU0ZDNiOWM0NmI4YmQgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDYwIGQ3ZmVmYjM1ZTk5M2ZmYzk0NzQyYjA5ZDlhN2U4NzYzMWU3YjAwZTEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDYyIGMwY2RhY2YwN2Y1NDBkOTJjOGVjMDNkYjI5OGQ5OWJlYzJiZTlhN2QgcHkzaworNjI0NjMgZmVkNzJmYTk2N2JmNWE0YTMxZDY3MjZhMDhmYTg0NWYzMzRmM2RmMyBsZWdhY3ktdHJ1bmsKKzYyNDY0IGE3NDY1NDM1MjM2NmVmMzg0ZjgxMTgzMjQxNTQwNGJiNTg0Njg5NzIgcmVsZWFzZTI1LW1haW50Cis2MjQ2NSA5OGRjYWQ5MDkyYTg4OWVmNDdhOTE0ZjNkNTkyNDRkZmE2MmVhMjM3IGxlZ2FjeS10cnVuaworNjI0NjYgYzlkZTY3MDViZDExMjk3NWE1YTJhYjI0YTliODllMzhlZWQ4YzMxMSBsZWdhY3ktdHJ1bmsKKzYyNDY3IDJlMWVhNjFjOTRjYzdmMTcyOGU4OWUyYWJmM2YxN2M3OGJjYTU5MmUgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDY4IGVkMjY3YzY5ODliNmNjYjQ2YzU1ODhjYWE3NTI3MjY5NzI5OTA3ZWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNDY5IDNjNmEyNWU0ZGJiNWYwZjk2M2JiMWE2OTg4Y2ZhMmM1MjJmNmI3OTYgbGVnYWN5LXRydW5rCis2MjQ3MSAwN2NmMjg0ODBhZDFlYzgzNjJhYzUwMmQ5OWQwZDEwZTM3MTg2YTZlIHB5M2sKKzYyNDcyIDNlOWI0ZmE5M2U1YzQyOTFjNmYyODViZTBiZDFlNzA0ZTExNmJkNGYgcHkzaworNjI0NzQgNjIxYTJlYWNjMjdjNDg5OTNjNjIyODNkMGFjNjNlNzBmZWExZDcyZCBsZWdhY3ktdHJ1bmsKKzYyNDc2IDVlNjM2YzlkNjFhZTU3NWNkNmE0NWU4MTUzNDQ0NzMzY2Q4MTVhZjQgbGVnYWN5LXRydW5rCis2MjQ3NyBhMDIyNTYwMGJmZjE0OTY4OGE1YjBlMmI1MmY3OWY1NDMxNTZlNTNmIGxlZ2FjeS10cnVuaworNjI0NzggM2U4YTAzYTY0OTdlMTcxNDFkM2Q2YmJmMTY0NjkxNWFlZTYxZTg5MiBsZWdhY3ktdHJ1bmsKKzYyNDgwIDQ1OTA4M2M2YmUxNTNlYmI1ZmRhNmEwMzZmY2I2ZWJjNDU3MDg5OTAgbGVnYWN5LXRydW5rCis2MjQ4MSA0ZmY4ZGZhZWMzZmM2ZGI5NDNjNzljZTYzY2I0ZjRmOGFiNzJmZDZhIGxlZ2FjeS10cnVuaworNjI0ODIgYTUxYjMyOTI0NWIxNDRkYWJmOGFkODEzZGE2OTRhYzIxNTlmYTYwNCBweTNrCis2MjQ4MyA4NWQ0NjcxNTY1Yzg3NDljZDViZmQzOGI1Y2VkNjhiN2YwYjVjYmM1IHB5M2sKKzYyNDg0IDkwZTIxNDZjYjhhMzA4YTMwMTJlNzM4MDE1N2NhYzExODI5NGFhMzUgcHkzaworNjI0ODUgOTU5NDdmZGY0MGFlNDhhZWQwZmVmYTM4ZDRhZmE0ZTBkZTgyNTJmZSBsZWdhY3ktdHJ1bmsKKzYyNDg2IGQxZmI0OWFlYzc2NTEwNDRjOWU4MGU2MjAwYzQ0MDU4M2JiNTRiZmUgbGVnYWN5LXRydW5rCis2MjQ4NyA4ODY0ZGZhOTljNzYwMmNlOGYyOTkxYWE1NWE1MDUyMGQ1ODFjMTM5IGxlZ2FjeS10cnVuaworNjI0ODggMzUxMTliMDM2ODZkMmQ0OWYzMWM0NDIzMzhiMTljZDA4MWE5NzE4NiBweTNrCis2MjQ4OSAxY2YzYjM0ZGY2YzYwZWMwZDA0MDgxODdhNjY4MTJmMGQyOGQ4OTNhIHB5M2sKKzYyNDkwIDY2YzhiZDFiZWRmMzIzMmRmMGU0YTJkMmI5ZjAwZTEzYzg0ZDA2NTMgbGVnYWN5LXRydW5rCis2MjQ5MSA4YjcxOGZjMTVmM2Q2YjUyMzE2MmFkMmU4MDVmNDIxYzJhMDUzOWRiIHB5M2sKKzYyNDkyIDViYTZjYmJjYWVlNzM2NDUzYzlhYmUxYjlhMDljYzhiYzJkNDg2MDcgbGVnYWN5LXRydW5rCis2MjQ5NyAwNGJkNzZlOTIwNjU0MzJmZTNmOTdmMzM0OTI4MWU1NzNjOTFkZWViIGxlZ2FjeS10cnVuaworNjI0OTggNjg5ODYzNTUyMzgwNzMxZmY0N2JhOTMyYmQyODI2NTEyY2IwZjIzNyBsZWdhY3ktdHJ1bmsKKzYyNDk5IGNlNjIwY2M5YTZhODY5NDlkMjNkODViMmM5NTA4MmI2NGYxM2E2ZTkgbGVnYWN5LXRydW5rCis2MjUwMCA5ZTA1ZjE1ZjkyMWIwMTBjZGY1MDljZDA0Y2Y3NWM5ZWJiNDZhNzE2IGxlZ2FjeS10cnVuaworNjI1MDQgMGM3Y2E0NzFmYjhkNzc4YmNiMzU3YjkxZGNiMjU1M2RmM2NiY2Y3OCByZWxlYXNlMjUtbWFpbnQKKzYyNTA1IGM3MzgyODA2MjAzMTMwYmE0MTEzNDQ1MzgwNzkyM2YyYTc3ZTViYTcgcHkzaworNjI1MDYgMmEzMWJjMjhjMTBmZmYwYWQ4MzYzM2Q2NmZmM2I3MWM1ZTYwYmNiNyBweTNrCis2MjUwNyAwZTExODViZmEzMTM0Y2QyNDAxZTUwOTYwNjVmMDRmZDEzOTc4MDdmIGxlZ2FjeS10cnVuaworNjI1MDggMGNmYzg0NWI4NTJkODI0YTFkZTllM2YwZTBmODVhMWM2NmJhM2JlOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjI1MTEgNTIzODMyN2Y0NWJkNDA0MmM3NmI1ZDRiOGNkY2NhZjhkZmY5NDExNSBsZWdhY3ktdHJ1bmsKKzYyNTEyIGZmZWVjYmViZjNjYTdjZTc2YjBmODhhNWQ3NjAwOTJmZGZjZjNiMzMgcHkzaworNjI1MTMgZWIyNzQ2ZThiOTgzMzBkZTFiMTAyZjFmYWYxMzg1M2I5NWVmZGFjOCBsZWdhY3ktdHJ1bmsKKzYyNTE0IGFkMzQxNzUwMzYzNmNmN2VlNTcxMDkyYjNiZmJlYWM0NDhkODkzNjkgbGVnYWN5LXRydW5rCis2MjUxNSAzNjFkNzc2ZDM4MGViOTQyNzNjNGY0M2VmNTk1Y2E2Yjc1NDA5OWJlIHB5M2sKKzYyNTE2IDQ3MjMzYTE3ZTk3MDc5NzRlYWVmNDg4MzRjMDFkMzI2NTgxYmI5NzkgbGVnYWN5LXRydW5rCis2MjUxNyBkNThlYzM4ZTZkYjFhOTU4YjI4YTUzZmZjZmMzMmEwMWU5YmIzNTUxIGxlZ2FjeS10cnVuaworNjI1MTggYWVmMzUwMWQ4ZTc3NmU2OTA3ODQyZDA0MjA5NTFhYTJjYjgzZTEzZCBsZWdhY3ktdHJ1bmsKKzYyNTE5IDA2ZTY3Y2IyMjE1ODA4NmEwNGI5NDM0ZTA3MDY4N2VkN2EyNjk5NWQgcHkzaworNjI1MjEgZGFkODhjYjZlZjFmZGQ1OTUzYmU5NmJmODE3MzIwYTU2NDNkZGJmNSBsZWdhY3ktdHJ1bmsKKzYyNTIzIGVkYjNjM2Q2NjAwNjdlYWU1OTI4MjAzMjZiYjcwYjQ2OWY3ODgyOTUgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTI1IGM1ODk1Yjk4MWQ4ZjBmNGRiYjBjYmM3Y2MyNGQ2NGNiNzlkM2E5OGYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyNTMxIDZiN2M5MWQ5ZGM1MTFiZjE1OGIxNWM5ODQyMjNmYjZhNzM2NjVmMDIgbGVnYWN5LXRydW5rCis2MjUzNSBmMzY1YTAxOGFmNWI2OTQ2OTUwNjcyNTgxNTI0NjVmNWUyYmRkYzMxIGxlZ2FjeS10cnVuaworNjI1MzYgNzY3MDAwNWRhOGM1NjhiZWIzYmU0NjE0ZDE3YTRmYjg5MjRkZGIxNCBsZWdhY3ktdHJ1bmsKKzYyNTM3IGQ3ZDU2NzJmNWQ1ZTA1MGJiYzNkZTZlYTBmNmY2MDYxMzhhNWQzZTcgcHkzaworNjI1NDAgMDZhYTgwMmJmY2IxOGM1YjAxOWUyZjY1MTQzOTFiNjU0ODQ1MTc1MCBsZWdhY3ktdHJ1bmsKKzYyNTQ1IDNkOWRkY2UyZGE4NTIwNDc3MGNhYjc1N2Y5ZmEzMjY0NzIzNmM1MTYgbGVnYWN5LXRydW5rCis2MjU0NiBlYmM0MGU1MDA4Njk4YTU2ZDE3MTM0Yjg0NTY0ZDIzMTc2YjUzMjU0IGxlZ2FjeS10cnVuaworNjI1NDggMThlOWEzNzJhN2EzYTBjYzc5NTBmMDEyNjc5NWI4YTg4ZTQ0ODZjOCBsZWdhY3ktdHJ1bmsKKzYyNTQ5IDg0ZGYwODJkZDIxNjc4MzU4MTU4YTFkY2QwNWY5YjZkZWVjZWExYjAgbGVnYWN5LXRydW5rCis2MjU1MCA1OWRiNTc1YWUzNzQ2MjU2NWY0N2Q2YTQ1YTI1MDMzNTVhMGEzNTFmIGxlZ2FjeS10cnVuaworNjI1NTEgYzVkYzA1Y2QzODU4OWJjMzBhN2JkZmNhNmVkYWRjZDM3YjZkMTczZSBsZWdhY3ktdHJ1bmsKKzYyNTUzIDU3NmZhMjQ0MGEwYzhkOGY4ODlkM2FmYTU3NmZmMDc1Yjc0NjJiMDQgbGVnYWN5LXRydW5rCis2MjU1NCBkMmJiNWYxMzE4NzM4YjAwNjQ3NWZhN2RmMTNiYzgzYTU2ZWE5MjJjIGxlZ2FjeS10cnVuaworNjI1NTUgMDdhNGUxNzEwMjYyOTljZjI3YThmMGEyMzRkOWE1MWM3YThkYmQwMiBsZWdhY3ktdHJ1bmsKKzYyNTU2IGE1MTdlY2NjNzgzYjllMGM4MWEwNGU5ODA3OTlkZGQwZWRkMThkYTYgbGVnYWN5LXRydW5rCis2MjU1NyAxZWE0ZDFiMThhZWQ1OGQ0YjViM2RhOGQwNzA1Mjg0YTQzZGVjMDNjIGxlZ2FjeS10cnVuaworNjI1NTggNGU0NzU0OGVkZDM2NmQyYjExNmJmM2YxYmRkZmE5MWEwNGY1MjM0YiBsZWdhY3ktdHJ1bmsKKzYyNTU5IGZlZjZkNmJhNzhhNDAxN2E4ZDA3ZmUzNDk3NGMzOGMzNjBmOTFkN2IgbGVnYWN5LXRydW5rCis2MjU2OCBjMzRmMGU2MDlmYTZhZTQzMGRkMWM2ZDM2NDFlMzU2OGI0OTc0ZTc2IHB5M2sKKzYyNTY5IDhkM2FkOGFmNjkyYjVhMzRlZmZjODEzNzQwNzg1YTEwNzdiMTFlY2YgbGVnYWN5LXRydW5rCis2MjU3NCA2ZmVhZDRjZjc5MTExZGIwZmRmY2M3YmYzNGYyYWMzZjdjNjBiN2U4IGxlZ2FjeS10cnVuaworNjI1NzcgN2Y2MGIzMzdiMDQ5MmQ0ZmU3ZTE3Yjg5YjcxZjMwNmE2MjIwNWU3MyBsZWdhY3ktdHJ1bmsKKzYyNTgwIDAxNTRkZjI1MGVmNmI1MDk0YTU1ZWYyMGQ1YTNmMWNjM2ZjZjdkZTYgcHkzaworNjI1ODMgZTQyZDM5Nzc4ZWFkOWNjYjQ1ODc1YmIzNmYzOGZkMGRhYzc2NDgzOSBweTNrCis2MjU4NiAzN2Q2NDViMDE1MjMxNmU0MWIxMTg0MDI5ZDM2YmE2ZWY2YjNiYjAwIGxlZ2FjeS10cnVuaworNjI1ODcgN2I0MDgxYmVjNzgzNzg5Zjg2NzA3N2NhNzZhODlhY2M3ZWFiOTdiYSBweTNrCis2MjU4OSBjYmEyODFiMTZhODI0NWUxNTZmYzFmOWIzODEzYjdiNDg5ODJiNmQ3IHB5M2stY3R5cGVzLXBlcDMxMTgKKzYyNTkwIGVmNDIxYTM2NWExZDRjNzAzMTIxZTdjNTFiODE5ZTA1Njc0MzU2ZTAgcHkzay1jdHlwZXMtcGVwMzExOAorNjI1OTIgZDZjNmYzNjZiMjIwNjJmZDNkZWYyYjQyYzFmMTU0NzE3YWNjMTY0NiBweTNrCis2MjU5MyA4ZjVjNzU5ZTAxOWM2NmNiZDBhMzQ1NzllN2Q2OGUwMDcyNjU3ZjRjIGxlZ2FjeS10cnVuaworNjI1OTUgM2QwZDNhNjgwODk2Y2RjZTc2NzkxNjFkNDIxY2IyMWZjODMxZDQ1MSBsZWdhY3ktdHJ1bmsKKzYyNTk3IDk0OGJlYTk2ZGQyMDFiMzIwYjZhOGViYjdmYjA2NGYwOGIzZDc0NDEgcHkzaworNjI1OTggYWYwZWYwNDQwMWJiMmU3OWI2NGY5Mjk1OTkyNjhmNWE2ZmY5MmIzMCBweTNrCis2MjU5OSA3YTZkNzQ3NGNlNmUwOGIwN2NiNmE1M2FkOGY3M2VjYjczMDE1MDdlIGxlZ2FjeS10cnVuaworNjI2MDAgYjEwMTU1NmI5OGVhZTYwOTllOTZkYTMzYWJhOGViZjk3NDNhZDIxZCBweTNrCis2MjYwMiAwMWJlMWM4ZjAwNmJkZDU2MzcxYWIwODk1NGQ5MDlhZTIzNWExNTE0IGxlZ2FjeS10cnVuaworNjI2MDMgMDE0NTM1NzE5NjY4ODVjM2Y0ZjdlZDY3M2JhMWFkY2ExZGY0NWJhNSBweTNrCis2MjYwNCAzMDM2ZTIxYWM2NjFkZGEwMTNlNjc3NzJkOWEzOWQ5N2EwMjg2MDE0IGxlZ2FjeS10cnVuaworNjI2MDUgMTQyMzgzNGI3MmQ4ZDhkMjZlMTczM2I4Nzc2YzEzMmYyZmJhNjIzMyBsZWdhY3ktdHJ1bmsKKzYyNjA2IDY4Y2ZjNTFlNDMzMWVmZTFiNzdlYmI1YjUxMThhOTJmNzQ3NjExYWYgbGVnYWN5LXRydW5rCis2MjYwOCA2NWFjYzU1ZjFhNjkwZmE0MDZmNzBkNzZmNzM2YjkwMjIzNDkzODQ2IGxlZ2FjeS10cnVuaworNjI2MTAgYTQwZDdlNjA1ZjllMTE3YTY2MTc4ZmY0N2E5N2FjMmI1YzhkNmQ2NCBweTNrCis2MjYxMSAzZjIxMTdkMzI3MWY3YzBmNjBkNDVkNzEyYWEzODljZjM5MzFjZWEzIHB5M2sKKzYyNjEyIGU0MmZlMTliYTZmZGYzN2U4ZjI2ZmE5OGQzMzQ0YTJiZmQzZDUzMDkgcHkzaworNjI2MTUgODdkMzEzN2MzMWQ0MzYxMDJkZjc2ZDBjYTMyYTNjZTlhNTIzMTQ3MSBweTNrCis2MjYxNiAzMzE1ZjZiNDQ0MDMwYjg3ODdiY2VhNDNkNjY1MDZjNDk5ODI1ZTIyIGxlZ2FjeS10cnVuaworNjI2MjAgNTZmODFlYTljYjc5NTBkNGU2MmQ1ZTc5NzllNmY5MThiODk4MjgzOCBweTNrCis2MjYyNCA4MGJkNGJhYTYzOTgxOTIwMzY1YTcyNTQ1NzMzNzQ0MDllNDk2NDVmIHB5M2sKKzYyNjI2IGVhMWE5Y2Y3MzVhNTY5NDU0MzM2OGQ4NDE3YzUyMTk4YTc3YTgwMDkgbGVnYWN5LXRydW5rCis2MjYyNyA1NDYwNmVhOWY0YzdiOTMzODQyZWJkNzBkMDUwZGMzZTNjZGEwYTRkIGxlZ2FjeS10cnVuaworNjI2MzYgMGJhMTJjMzJlMmI1Njk1OTAwODVlMjAxMGM5ZWUyZWQwYTYwNDZlNCBsZWdhY3ktdHJ1bmsKKzYyNjM4IGM0ZDkwZmE5MzVlYWE0MTMwNWYxOTQxYjU0ZmZiYjVlMDRhYzc4ZjQgbGVnYWN5LXRydW5rCis2MjY0NCBhMWM2ZjJhYjU5N2UwMzc5NjIxNDVhYjA4ZGQyMTVjNmZjMGRjYjVkIGxlZ2FjeS10cnVuaworNjI2NDUgMjBiNzA3ODY2NDU5YWRhNzRhMDYzOTA4YjhiY2FkOTZiZGRmMGQ0ZiBsZWdhY3ktdHJ1bmsKKzYyNjQ3IDFmZmVjMmE2ODdlOTU5NmY0OGFiYWEzOGYzMDM0YzllYzY3MzFiOTkgbGVnYWN5LXRydW5rCis2MjY0OCAzZjg0ZTZhZTM2ZGFkMjllMDkwYTRiNDc0NmEwM2JkNDhjYjI2NjdlIGxlZ2FjeS10cnVuaworNjI2NDkgYjU1YzU1NjdjYzc2NzMzZjQxZGMxMTk2ZWI1NTUxZjVlZTlkYmQxMCByZWxlYXNlMjUtbWFpbnQKKzYyNjUwIGViOWRhYjk1NmE2ZWI4YjgwZTVhZDRhZmRjMjMzODYzZTFkNmQ5YTQgcmVsZWFzZTI1LW1haW50Cis2MjY1MSA4MDYzNTQ4OWU4ZDgzMTQ0YjRjMDlkN2Y5NDRkMjQyZTQ3MWMyNTVhIGxlZ2FjeS10cnVuaworNjI2NTIgNmQ5NDk3NTk3YzRmM2ZlZmI0YzE4YTZjNTEzYjc3MjkyNWMyYjQ4NiBsZWdhY3ktdHJ1bmsKKzYyNjUzIGNjNjYwMjlkMmVmZTU5MzlhYmMyNjQ0OTQxNTU3YmMzYmU4NzIyZDcgbGVnYWN5LXRydW5rCis2MjY1NCBmZDI3YWM1ZmNjODE4MDhlOWFmZDkxZTZhZDc2NmIzZGRlNjgxYWRlIHB5M2sKKzYyNjU1IDAzMmEwYTBkM2ZhOTYwNmNmZTE4NzFkOWJmZjZhMjEyZTZhZGJjNTQgcHkzaworNjI2NTYgYTg1OWY4MzVlZjUzZGE4YTI2MWY3MjgwMTcxNzJlZGY4NWFkMDE5OSBsZWdhY3ktdHJ1bmsKKzYyNjU3IDBmZGVmMTQ5ODFhOGUzYmIwYTFjMmQwNDg3ZjUyYzdiM2I3NWE1ZTUgcHkzaworNjI2NTggYmQ5MTAwMGM4ZTczZGM3NzZhZjhiNmM2NzRkZjJjOGE5ZGY3NWY3MyBweTNrCis2MjY1OSAzZDQzNzc1MjE3MGI1MmRjMDQxNzgxMTkzODc2Y2UwZTRkYjFhYTZlIHJlbGVhc2UyNS1tYWludAorNjI2NjEgYmZhODJiNDkzMzM1NDA5NzFlNjg5ZjRmZDI3OWZhMjMyMTc5MDBiNSBsZWdhY3ktdHJ1bmsKKzYyNjYzIDBkZWI0YWIwNDI2ZTI4N2Q5NmUwOGMwMjM5NTVhNDgyOTk2Mjc0NDQgbGVnYWN5LXRydW5rCis2MjY2NiBlYzA5YWQ1YmVkMWFjY2ExMGMyY2Q2MWZkNGJiYmFmOTFhZjYyMWY2IGxlZ2FjeS10cnVuaworNjI2NjcgZWE1OTQzMDZlYTg1NDJiOThiZTA2ODYzN2IwNzEyYTc4MzJhMTcyMSBweTNrCis2MjY2OCA2OGIxZDQ0YjVmNzRhNzlmMDM2MDI1N2QzZGM4NzYxNTExYjZhZDQ0IHB5M2sKKzYyNjY5IGVhMzBmMDNiMjRmNDFmODIxNTM3YjZmM2MyZGIwYTA0YzAwZWU1MGMgcHkzaworNjI2NzEgOTQxOGRjNGE3Yjk4NWQ1Y2ZiYmRjYjlkMTVjYmI4ODAyMDY1ZWE3MCBsZWdhY3ktdHJ1bmsKKzYyNjc5IDViYjk0MDY1YjA3OTk5Y2UyZTM0Nzk2NTllN2UzNzA2MTZmNzBhYzIgcHkzaworNjI2ODAgODNjYzA5NjgyMDgxZGMwNDkzZTkyMjNiODUyNzEyZmZjOGE2ZTkzMiBsZWdhY3ktdHJ1bmsKKzYyNjgzIDMzOTBlYjc1OTFmNjEyOGIzZmQ2NjQ4ODY3MjRmNzE5MjljODAwNjYgcHkzaworNjI2ODQgYzk3ZTM2YWJjZGQ1OTU2ZjViMzc4MWRjNjkzM2ZmMzBkNzVjMDVhZiBsZWdhY3ktdHJ1bmsKKzYyNjg1IGFjYjJhOTM5NDI5NmE0NTc1MTQ0MTYxYTMzNWY4NThlYjI0YTlhYjcgcHkzaworNjI2ODYgMTg3MmUxZGMwMzVmYzMyOWI5ZThiOTlmMjNjM2YwN2ViMDRmZGU3ZCBsZWdhY3ktdHJ1bmsKKzYyNjg3IGI3YzY2ZDNlMmUyOGRiMDJkNmNjN2E3NzhlYmQ2NzNjYjJjZDYxZTIgbGVnYWN5LXRydW5rCis2MjY5NiBhOTRiOWRiOTIyM2ZjZDIwZDA0OTBlNTc1ZDNmNDE1ZTM3NzQ3YzQzIGxlZ2FjeS10cnVuaworNjI2OTggYWFhMGFiNDkwMTI2ZTAyZjE4NDA1NWNmYzI4MDQ3ZDA3M2IzNmMzNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjI2OTkgZGU3NmJlMDJkYjQyNWIzZTZhNGY2MGI3MWY4NjE5ZmViYTliYmM4ZSBsZWdhY3ktdHJ1bmsKKzYyNzAwIDZkYjM5MmFjOWY0ZWIxNDJiNGI3ZGU3NDY0ZjQxZWRmNDYxMDMyODAgbGVnYWN5LXRydW5rCis2MjcwMSBiOTNhMDQxY2MyMjEzZTU4OWQ0MmE0ZTRhNzcyMmRhNGVhYWZkYjE5IGxlZ2FjeS10cnVuaworNjI3MDIgMjhiMDk5YWM0Y2Q4ZjdiOGM3NTFlNmQ0MzRiZDRjZjM4MjI3M2IzNiBsZWdhY3ktdHJ1bmsKKzYyNzAzIDZjNGVmZTUyZDU5NGQzZmY0ZmEwMWZhYmQyODc2OTgxZGQ1MWFmMDMgbGVnYWN5LXRydW5rCis2MjcwNiBjMDdmMTlhZjU1NGE5ZjYzMGQ3ZWJmYzE5NTAyZDlmNjRhYmQxZTMzIHRsZWUtYXN0LW9wdGltaXplCis2MjcwNyAyZTQ2MzQ0MmU1NzA2MDRjOTVkYThjYjQzZjY5OTk3MDQ5MDQ2YTBjIHRsZWUtYXN0LW9wdGltaXplCis2MjcxMSBmZTMwMGE5NzJmYjhkZjI4NzUwNDc1Njk1OGQwMjliNWFlZjhlODYzIGxlZ2FjeS10cnVuaworNjI3MTMgNzE3MmUxMWU5ZmM4YzY3NmRjZjYzZmZkOTk1NWY1ZDIwMjU5OWI1YSBsZWdhY3ktdHJ1bmsKKzYyNzE1IDY0MzQxNWY5MWE1MGM5MmZmOTM1Nzg5OTJmYThhNjg1MTlkN2U5MGQgbGVnYWN5LXRydW5rCis2MjcxNiAwMzFkZmU0NTU1ODVjY2RkMDc4OTdiOGU2ZDAwNGY3OWNhNDI2NzlhIHB5M2sKKzYyNzE3IGM3YzI1Y2M5OTYzZGQzMzI3ODM4YTUzOTU1ZWE4OWYyNDJlZDUzNzcgcHkzaworNjI3MTggMDVhODE3ZTI1ZjIwZDQyY2M3MGFhNmJlNmNkNzQ2NTJkMmUzNzVhMyBweTNrCis2MjcyMCBkOTA3MWZhODI0NGFmMzQzMzY2OWE3YzcwOTBlNmE1NzY2MDdhZWJmIGxlZ2FjeS10cnVuaworNjI3MjEgOGE5YjhiM2NlMmUxMjIyNTAzNzExMGMwNjk1ZGEwMTQxN2M4MWE1ZiBweTNrCis2MjcyMiA5YjEwYmY2NGYxMjQzMjE2YjYzMDcxMWM1YTgyOGMzOWMwODU4MDRhIGxlZ2FjeS10cnVuaworNjI3MjMgNGM5MGJlOGE0ZDM4MjdkZTRhNDMyNWE0ZGZhOWYxNDhlMmNmMTczYyBweTNrCis2MjcyNCA4ZTMzZjMxNmNlMTQwZGE5NzU4NjNlYTRlOTVkY2Q4YTBiNTQyMWZlIGxlZ2FjeS10cnVuaworNjI3MjUgMTVmMWQyMzJlYWU5MTM4NTdiODI0ZTg3MWExZDNlOTc2MmRiZTJkYyBweTNrCis2MjcyNiAxMGU4ZWY5NWIxMWY5ZGI2MTg0ZTU1NDA5MWZiOGVmNTM5NzFmY2MxIGxlZ2FjeS10cnVuaworNjI3MjcgODZmNzM4MzhhNGJiNzE1MDFmMDM4ZTM5NDRjNWVhNzM2OWI4ODU5OCBweTNrCis2MjcyOCA1NWJmOGQ2OTBlNjdhZjQ2MGJjYThlNWU1M2E0NjU3NGIyODliNzdhIGxlZ2FjeS10cnVuaworNjI3MzQgNGRlZDM1NzU0Y2I3MjFmNDk2MTIyMDhhMGViODg1MTkwMWZhZGQzMCBsZWdhY3ktdHJ1bmsKKzYyNzM2IDM0YTUzODBlZTI3NWFlMGNhMTcxNzE1YTY3ZmZhZTBmZTA1YWQyZmYgbGVnYWN5LXRydW5rCis2MjczNyA4OGEwOTgwNGJiYTM5NDMxNWZlOGEzNTNiNDA3MDVjZTc3ZjljODNiIGxlZ2FjeS10cnVuaworNjI3MzggYjc0YTNmOTQ2YTVlNjc4MTJlOWIwMmY0OTIzODAyODBkMTAwZjk3YSBweTNrCis2MjczOSBkYWMyMTg0M2NmNTM1MTRjNTdmODRlOTlmZmJiODNkZGVlNmYzZDcyIHB5M2sKKzYyNzQwIGUxOWY4N2E5ODc4YzI4OGQzZThjOWUyZDgxMDM3N2MxMzY2MWM4MDggbGVnYWN5LXRydW5rCis2Mjc0MSA5MWQ1ZjA4NDE3MDAwNjgxOTI2NWIxZDEyYTBlMjZlNjNkMGQwNDkwIHB5M2sKKzYyNzQyIGYyYTRkOGQ0ZjA2MzRjZGIyYzY5OGY1ZWE3NDc3N2RjZjhhYzcwODcgcHkzaworNjI3NDQgMjcyOWU5NzdmZGQ5ZWE3ZTNlZGFjNTMzMWI2OGYzZjc4MjYxYjU1NSBsZWdhY3ktdHJ1bmsKKzYyNzQ4IDcxMDZjYTg3MWJmZDFiNjc1Y2Y2ZWJjMjFjYWMwMDA5NTI0NjJiNzMgbGVnYWN5LXRydW5rCis2Mjc0OSAyZjM1MWZhNTNhNmIzZjBlYWZlODg4NmI5NGUwZGQ3MzY4YTQ1ZTQ2IGxlZ2FjeS10cnVuaworNjI3NTYgNWFlOGQ1NGQwOTUyOGY2NTU2MTgxZDVlYmZhYWM3MTE3N2YyMDJlZSBsZWdhY3ktdHJ1bmsKKzYyNzU3IDExZWQ0MDVkOTljYjg2ZjNiNWExNzg1ODVlNjlmMzJlOTQ0NWJhNzAgcmVsZWFzZTI1LW1haW50Cis2Mjc2NCAxZThiOGRmNGRmODMxNTNkZGFiMjc4NzY5OWNlYjZhOTZlYjBmMThjIHB5M2sKKzYyNzY1IGM4MmY2M2VmYmM0MDgzMWI0OWNiYmZiYzgzMjFhYmVkMTY3Nzc3ODUgcHkzaworNjI3NjkgYjBmYjU1ZWNlODlmYzNlY2NjYzU0YmNjZTU3NDQwMGY1YTI4MWFlOSBsZWdhY3ktdHJ1bmsKKzYyNzc0IGY4NDY4YmZkNDM1NzYwNGNmNDk5OGI5ODhjNDM0MGViN2NmNzVlNGQgbGVnYWN5LXRydW5rCis2Mjc3NSBkZGQ1ZjQyMzMyYjk4NTYzMjU3NmM3ODJlYmI1MmU2ZTRmM2U4ZjM1IGxlZ2FjeS10cnVuaworNjI3NzggY2RhODE2YzNhMWU0NmJlM2FmMmViN2Q4Y2UyOTJkZTgyOGQxZjM0ZCBweTNrCis2Mjc3OSAwMmE4MTQyZDgzZGIyODM3MzdmNTFmN2Y5OTUyNzA5NDE3OTUxZjU4IHB5M2sKKzYyNzg1IDkxMzBiNDhhNzEzMGUxNWE0OWM0ZTEyODQyNmJmZjE2MTRkZWJkOTQgbGVnYWN5LXRydW5rCis2Mjc4NyA0YjE5YjQxZWY2MDY0YzUzMDVjYWNiNzdhNWNiYWRmOGJjOGJmNmFiIGxlZ2FjeS10cnVuaworNjI3ODggMWEyZGJjODRiZGZjZjBhOGM0YzZkZTBiMDdkYjQ0ZWI2YmY3ZTMxZSBsZWdhY3ktdHJ1bmsKKzYyNzkwIGY0MDY0YjVjOGM1ZDJkZjRhMGRhNmYyZjUwNDJiNmVmOTFhYzE4ZmYgcHkzaworNjI3OTEgOTExYzg3ZjhlZDVlNTczYTZlMGY4NTRiMzczNzkzZDE1YmIwNjBiYSBweTNrCis2Mjc5MiAwYzJlNGI1NWY4MGI5N2I1NmQ3MWQwMzRkMTMyOTExZDAyNDE2NmMyIGxlZ2FjeS10cnVuaworNjI3OTMgZmZkYjVmNDEzOWZlN2E4NzJiMmQ3YzBiOGQzZmNmMjFlNmNiMDlkOSBsZWdhY3ktdHJ1bmsKKzYyNzk0IDEwYjEzOWQ4Nzg2MDIxYzA5NWFiMzU5NTNmYjg4YTA1NmNhN2I0ODYgcHkzaworNjI3OTcgY2VlYTQwZGFhODQ5MDc5YjUxNWVmODAyNGY0NDYwNDA4MGFjMTZjYSBsZWdhY3ktdHJ1bmsKKzYyNzk4IDdjODBiYWM3ZDc3NjU2Y2I3MWQ5Y2E2MWNlMTVmYjdlZmM4NDc0ZDIgcHkzaworNjI3OTkgYzhhYTIyMGM2Y2VlZjk1OGFkNWQ4ZDUzMjMxZWYwZTVmNzJhOTY5YSBsZWdhY3ktdHJ1bmsKKzYyODAwIDczN2ExOGIyZGVkMzY1ZjBiYmZjOTEwY2ExOGZkYzI0NmRjNzQ1ZjEgbGVnYWN5LXRydW5rCis2MjgwMSA3NGI5Yzg1MzYxZjg4ZTI1M2I5ZjdiYjQ5ZGZhZTA0NjYxOWI5YWQ3IHB5M2sKKzYyODAyIDc0ODZjMjlmOTNhM2VkZDExMjA2MThjNTQ5ZjZiMDM0YzRlM2Q2NmQgcHkzaworNjI4MDMgMGU1YTk2ZmM5NDIyYjRlMTM4NTUzNzFhNDJiMzkwMjg3M2RkOWZjMSBweTNrCis2MjgwNSA3N2RmOTkxZWE2Mzc5OGY1Yzk1YzM5MWY3ZTRhZDcxNDAyMzg4ZTIwIGxlZ2FjeS10cnVuaworNjI4MDYgZDE5NjUwODhiODVkZDczNzZmMGI3ODY4YWFlY2FmOGJkNDU0MWVjMSBweTNrCis2MjgwNyA4YjkzMWE3OTgyN2E5YjY1ZTAxMzBiN2ZjOWEwNTRjN2Q3NjAwYTZhIHB5M2sKKzYyODA4IDVmYmQ5N2YxYmMzNWUzYzk2ZTNhZmIwYzUyYWJmNGRkZDVjYmExM2EgcHkzaworNjI4MDkgMzhiOTRjMDk3YTU1MjZmNWFiYWMwMTRmNzRiNWY5MGZhZGZjN2UxNCBweTNrCis2MjgxMCBkN2UyMDI5YjNjYTRiZjExMzBjYTM5MWI0NmRhZWI4ZDg3MjYxNjFkIHB5M2sKKzYyODExIGI2MzU0NjJhNTc5OGYwM2U1NTJmMWNjMTAxNTZhYTUzZTAzYTA0MmUgbGVnYWN5LXRydW5rCis2MjgxMiA4MTU0NjQ5YzU1MTY2MjAxZTA5ZDBiNzA0YjRjYWQyZTdlMzk1MTc1IHB5M2sKKzYyODE1IGE5YWNmMThhOGU1NzUxMWM3YmVhODg2NGNhMzllMTg3Y2MwMzUwOTMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE2IDQzMDdlZWQxZjczYmU5YzRiN2ZiOWM1ZDdkZTMyOTUzODc1ODAzOGYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE4IGI5YTNhYmY1OWE0NTQ2ZjAwMmQ2NmU0MTgyODAxMTNjNTY5NzkwZTAgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODE5IGE2NGY0MGI2MjE2OTYzMGM2N2ZhZjRjYmNhYmY2NDdlMWM2OTNiMDggdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIwIGJiOTU2ZjRlMzI2ZWM0NjE1NWYxOGY1Y2ViMjA2NWQzMDI2ZmE2MDIgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIxIGM1MzgxNTI2NjM2MGYwNWZmNWExZWEwNjU1YzUzYmI4MWRiYWI0YjYgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIyIDRiMDM5ZWRmZWU2YmVlNDkyNjgxZTdkODUyZjUwMzhjMjJkNTdlN2QgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODIzIDk3NDdkMTEzNzA4M2NhNTNiNzU2YWZkMGEyMTBjNjY5NjljZGJkNWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI1IDY3YmE5M2FkMDBmZGYxYjkxMzU0ZGJhMTE4MzJiMzZjNGJmNjlmMTcgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI2IDJjNDU1OGRmZjUzZDkwNjRhNzdhMTJiNzIwMDI4OGZiMmY2YWY4OWMgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODI3IDQxZThlNzJhYTllZGIxYjBiOTZkMDliODE2ZGQzMjdmYTAyOWZmNDEgdGxlZS1hc3Qtb3B0aW1pemUKKzYyODQxIGVmNDdkZjI1NDIzYzc2YWFjYTQ0MjU0ZGFiMDliNmJiN2M5YWU1ZTQgbGVnYWN5LXRydW5rCis2Mjg0MiA5NTcwYmMxMjgzMTQ0NGEzYjgzMzU0ZjdlOGQ3Nzg1Y2JjMGExZmUwIGxlZ2FjeS10cnVuaworNjI4NDMgYWQ3NzUxYTk1ODA5OGQ3MTNkNmVlODJjZmMxNDA4NmExODEyZjMwMiBweTNrCis2Mjg0NCA4MzFhMzBjZDIzYTI4MjA1MmQ5YjExMmU5NzI4MDg1NWU5NTc5NTExIHB5M2sKKzYyODQ1IGUzNDU5YWQwMTM2ODZjYmVjZTczNjYxZWJmNDhjNjRiNWJkMDM3YTMgcHkzaworNjI4NDYgNmVjNTYwOGI2NjNjMmNmMjgwMzBhNGI3MGNjNDAyZGYzMTMwMjgxMiBweTNrCis2Mjg0NyBhY2Q2ODI3N2M0ZGQwMTI3YTc5ODIxMDM1ODQwM2RmZjViYmQ1NTVlIHB5M2sKKzYyODQ4IDJlZjFjMzgxMTM4ZDU3M2NmZDk0YmZlZTk0YTVmNmIxMWVlZjcyNzcgbGVnYWN5LXRydW5rCis2Mjg0OSAwZTc2YThmMzQ3Njk1YTM3NTBmYjY4MTFkNTVkNmRiYmQ3NzhjYmQ2IGxlZ2FjeS10cnVuaworNjI4NTMgYjEyNGUzMTYxNGVkOTY5MzM2Zjc1ZTFlMjc2YWE1OTM2MDc5MGZiOSBsZWdhY3ktdHJ1bmsKKzYyODU0IGM1NjI0MDJjMWMwODI5OTI2OWJlZjM2ODc1NmM4MjFiOGIxY2JhMWYgbGVnYWN5LXRydW5rCis2Mjg1NSBjNjdjMDk1NTRkMjMwMjA0M2ZiMzc4MDkxY2QwMzI1M2MzM2I3ZTkzIHJlbGVhc2UyNS1tYWludAorNjI4NTYgZTM1OTM1NDc1MTUzMzc3ZDY3MjdkNjRlNmM1MmY3MmMzYjg0MDE1YiBweTNrCis2Mjg1NyA4MTQ4MDY5MjYzYWExZjAyMTBjZGQwZDU4ZjE1OTNmYmFkNGU2ZWY2IHB5M2sKKzYyODU5IGFlZDA0MjM5YTNmYzI1ODUyMDUyZGM0NmYzOTE2ZDYwNWJmZTM2NTEgcHkzaworNjI4NjAgY2VmNWFhM2VkNzEzMzU0OTA0NzI4NjYxODdiNjM5ZmI1YTY2N2ZhOCBweTNrCis2Mjg2MSA0OGU5ZmIwYTcyMTc5OTg3N2YyNmVkYWVmMDFhYzZlNjAyOWI2ODEyIGxlZ2FjeS10cnVuaworNjI4NjIgNmI3OTcwYWEwZGRhMzI3ZjI1YTgzMTUxOTUxZDhhN2I5NjZlYWJjYyBsZWdhY3ktdHJ1bmsKKzYyODYzIDlmNDU5Nzk1NThhOWJjZDgyMTk2ZjIyYzcwMDlkMTVlZWNjMzQ0NGUgcHkzaworNjI4NjQgZDlkNGNlZjQyMWEyZGM0NGFjNDJhYjhkYzhiMWZhMDhiNGYzZGUwNSBweTNrCis2Mjg2NSBkNDQzMGU5MDIxYzIyM2U4ZmU1MDYwMjkyNmI3YzIxYjU5Y2ZkYTlkIGxlZ2FjeS10cnVuaworNjI4NjYgNzJiZTEzOTBhZTVmNDdiZjc4OWI0YTczZDE1ZmFlZDM3MTg0ZWZkYSBweTNrCis2Mjg2NiBlNjlmODRlZTRmM2E1NTAyMmUyZjI1MmVjZTJiYWQ5NDA3ZDIxNTVmIHB5M2sKKzYyODcxIDk4MWNhZjI0ZGQ4YTZhYWQ4YzM5MjlmZjBhZGFmZmIzZGI5NWRiMDQgcHkzaworNjI4NzIgMTZkZGRmZTBhOGNkYzQ2NjIzZTNjN2QwNTk3OTY0MTIxZjEwZTY1MyBweTNrCis2Mjg3MyBjOGI0OWQ4YzM5NjdlN2FlZGE0YWU3OTgwMzA2MTYzYWJlMTk0ZTAyIGxlZ2FjeS10cnVuaworNjI4NzQgZjJkNzcxZjM3MGJkOGUwYmEzNTg5ZmExNmUxZGNlMmE0YmI5NmU1NyBweTNrCis2Mjg3NiBjYTQxMDI0MTRhMzQ1Y2VlYzgwOWJmYTZiNTI5MGVkNjNiNjgzZDI4IHB5M2sKKzYyODc3IDExNDA3YzFmNjhjYTQ4NGMyOGIxZDk0NjkxZGI1ODg1N2FmM2ExZmEgcHkzaworNjI4NzggZWFhYzU2MTlhMjFmZmMwNTQ5Y2RmM2UzMmIyNjdmM2IzN2I4MWQxZCBweTNrCis2Mjg3OSAyMDI4ZmEyZmMxZGRmY2M5NGFlMmUxM2YxY2ZhYzY3MzIzZDZjYTdjIGxlZ2FjeS10cnVuaworNjI4ODAgZTk1ZGQyNWRmYjBjYmUwODA1ZWU5MzgzMmE2NTBlMGYzNTUwZDYzMCBweTNrCis2Mjg4MyA1YzViMzYzZDJmMTlhODFhOWVhYzVmMzgwMTUwNDZiZjk5MDhjYmE4IHB5M2sKKzYyODg0IDlmYmMyZGE1NGUyOTNkZTkxMzFjNTBjYzU0MThlYTEyNmFiNDdkMzkgbGVnYWN5LXRydW5rCis2Mjg4NSAwNDdkYTNmNmZkN2ZkOTRhMmVhZDc3MTUwNjQ0YjhmZjg5YTI2YzJjIHB5M2sKKzYyODg3IGNhYzZhMWEzMzRlMDRjYjA2Yzg3N2M5YmU1NmQ0NWI4Njk4ZTYzMDcgbGVnYWN5LXRydW5rCis2Mjg4OCBiNzEwOWEwY2QwZjlmNTdhNTFmZjViNDkyNWQwY2Q0YTNjMDVjZTdiIGxlZ2FjeS10cnVuaworNjI4ODkgYTc2NzBhZmI1YzA5MmQ5OTYxMzMyMTQ4OTQxNjBhN2U5M2E5NzE4NiBweTNrCis2Mjg5MiA2YWRhMTVkNzk5MGY3MjY4OTk3N2Y0M2E0OWMxNDg3NTIzMWUwMDZlIGxlZ2FjeS10cnVuaworNjI4OTMgYjVhNjc3Mjc4YjVmYTg1ODQ2N2MwYWVkZjAyNzQzNzk1YWFmMGU3OSBsZWdhY3ktdHJ1bmsKKzYyODk0IGI4ZTdhMTYxNjExYzE0ZjMyZGJiYmQ4Mzc1MzdjZDNjMGU0OTZmN2MgbGVnYWN5LXRydW5rCis2Mjg5NSAxZmIyNDZjYjI5YWU0MTFlZThmY2E4MmY1ZDE4MTBkNWU1NjY3MDI2IGxlZ2FjeS10cnVuaworNjI4OTYgZGZiMGJiNWZhYTZiYzlmNjM0YjA0MTIzNzVkYmZiYjk4YWEzNzYxNCBsZWdhY3ktdHJ1bmsKKzYyODk3IDZiZTY0NzE5YTUwOWFjY2JmNDBjNWZkNzNiZDkxMTg4MzVjM2EzYTEgcHkzaworNjI4OTggMmExNzNhOGIzYjEzZjhhZTE0NWI3YWQ0ODg4MTlkNzI3YmU1NjNmNSBweTNrCis2MjkwMCBmYjE5ODRmYjE4MmQzYjk2MTEwZTJjMTcxZjA2ZWExMWI4NGU4NzE5IGxlZ2FjeS10cnVuaworNjI5MDEgMjI0Y2FkODIzNTkwNWYwMWQxOGZhNTVmZTY0YjMzOGM2NDBiOWIyMiBweTNrCis2MjkwMyA1ZTRiZDgyNDk4NDYyNGViMjk5ZWJiZmZkMjJmYWRlZTg2ZjJjOGFiIHB5M2sKKzYyOTA0IGRjNTczZWUwZDkwNDE3Yjc5ZTI2ZTU4MWNhYTAzMmNhOTkxZjNhZDYgbGVnYWN5LXRydW5rCis2MjkwNSBhMTMwY2Y0OGFkNjdjYWVmMWIxMTMzOTRlZTkwODM2YzgxMDUyNDMzIHB5M2sKKzYyOTA2IDVkMTVhOGJjYzQ0NTY2MjU3YTczYWM1M2JlMWZlN2VkNTUyNGYyN2UgcHkzaworNjI5MDkgOGJmZTJiMDY1MjdkYWQwMzRkMzg4MmJkZGEyOGNlNTkyODVmNzExZCBweTNrCis2MjkxMiBiOTMwMDU3MTJlMzk5ZmYwYzJlZWRhZmNhM2ViNzIzYzUyZGIyNDJhIGxlZ2FjeS10cnVuaworNjI5MTMgNWI2ZWE0ZGJhNDRjOWNjZmUxZWJjYjA4NGMwNWY4YjFkZjNkMjA3YiBweTNrCis2MjkxNCA0ZDAwN2EzMWI0NjQ1M2Q3M2NiNzVkNDEzYzNjNDA3NDkyYzM1NmU4IGxlZ2FjeS10cnVuaworNjI5MTUgMzc2NzVmMGMzMzhhNjYwNWYxZTU5OTMwOTM0Y2M2MjFhNzIxNDRmNCBsZWdhY3ktdHJ1bmsKKzYyOTE3IDgxNmMyMWM3NjJjODUzZjk2NjA5ZGY3ODJlMWIyM2NiNDg0MzAxYzQgbGVnYWN5LXRydW5rCis2MjkxOCBlYmM5ZjY2ZmU5OTAyOTI4NjM0OWEzNDhiNGM2OTFlOWNmNjQ0MGVjIHB5M2sKKzYyOTIwIDk0NmZiYWU0YmFhYjU2NmI0OTVlZWM4YmY5OGUzODFiNjM1NzkzYWQgbGVnYWN5LXRydW5rCis2MjkyMSA0YmQ5ODk3ZGNlMDdjZmExMWI4YjQ1Y2NmNTZmNDVmZTI4NDdhNjU4IHB5M2sKKzYyOTIzIGE4OWJlMjUwNzJlM2RlN2YzZTgxZDUzMzYzZGIyN2FkZjFkMjQyYWMgbGVnYWN5LXRydW5rCis2MjkyNCA1ZmI4YTUwNGZhOTZmMTExNWI3NWRkNTgzMWY0YmUxM2Y4ZjAxMTliIHB5M2sKKzYyOTI3IDE1YzcyMjAyODYxNTVjMWI3Yjc5YmI3MzQwZjhkNjRlZDRiYzdmM2MgbGVnYWN5LXRydW5rCis2MjkyOCA1NGU2MjJlZjM1MDBlMjdmYjdkOWM5ZmNkYWQ3OTVhYmExMzhlMmNmIGxlZ2FjeS10cnVuaworNjI5MjkgODRhZjBjZmE3YjgxZDk0MzRlNzRhYWI5ZmMyMjc5NTkzOWE4MjBmYSBsZWdhY3ktdHJ1bmsKKzYyOTMwIGNkNmM2ZGViN2Y4NGU0ZWM0NDMzMTJjZjczNzk4ZGQ0OGY4ZTE0NDAgbGVnYWN5LXRydW5rCis2MjkzMSBjMjQ0MzhlOWFiNTRmYmEzNmVhMjBlY2Q1MWMxNTNlMGQwZGUwZmNhIGxlZ2FjeS10cnVuaworNjI5MzIgY2NjMzM3YjQ1YjJlMzFhMDBjZjQwMTNlOThjNjQ1ODdhMjdjMWVmZSBsZWdhY3ktdHJ1bmsKKzYyOTMzIGVmYjk3OWE0OTQ3ZDAwMzhjOWRmMGNmM2IwYWEwODU3ODMzYWJlMjUgbGVnYWN5LXRydW5rCis2MjkzNCBmM2Y2YTg5NWE1NTVkZjM2OTVjYzllZGZmZGZjZWZjZWViMDAwZTIwIGxlZ2FjeS10cnVuaworNjI5MzggMzk1NWM1MDJjZmEzNzIyZmEwOTk0MjE3ZjUyMjg0NDBkNWYxNmVlNSBweTNrCis2MjkzOSAxN2NkNjEyYjA2ZGExZjg0ZjJjMTM2NWUxMDA2ZDhiZWMwODkzNGU3IHB5M2sKKzYyOTQwIDhiNjc2ODVhOGJjM2VlNjc5MjNhMWI3ODgxYTAzN2M3ZjFlODFhZDUgcHkzaworNjI5NDMgOGJhZWJhMTNhZTkzZDQzZjBlNjM2OTI2YmUyOTJkNjkxZTllNWVmMSBsZWdhY3ktdHJ1bmsKKzYyOTQ0IDUxYmFiZTczYzBjYTM1ZjZhMzQ4Y2YxMjBiMDQwNmQ1YWVjYThmYTcgcHkzaworNjI5NDUgYTQ0NDk4NWE2NzVhZTRlYWU0NjBkMjk3NmJiNjk5ODJmOTdlYjIwYyBweTNrCis2Mjk0NiBiNDMyNTA2ZWZjZTdmZDk2ZWU4YWY2ODMxNDZkOGZhYTFiMjJiNjg4IGxlZ2FjeS10cnVuaworNjI5NDcgZTBjYTc0YjM2NGU0OWI1NTYxOGE4MjNkMmJkOWVlYjQxNTY0ZDkxMSBweTNrCis2Mjk0OCBmZDBiODk0YmM5MGM1MmE0NGY1NmVmMjY4NzA3NjQ3ZTU5ZjRkMWVkIGxlZ2FjeS10cnVuaworNjI5NDkgYmQyOTU0YzQ5MTY5OGMxNDJiYWY1MzZhZDNkMWFjOTkxNDQzODVjZiBsZWdhY3ktdHJ1bmsKKzYyOTUyIDQ0OTU0ZDY1YTczYTQ1ZGQ1MjVhMzFiNGRlYzVhYzQ0OTZjMWNkYTUgcHkzaworNjI5NTMgODdkODU0YmMxZTQ1ZTcxZjA5NzRhODY4MmQxMDllOWMwMDYyYTNiNiBweTNrCis2Mjk1NCBkZWM1MzFjMGFjZjliNjJmOWY4NTM0OTYwOTE5YzQ3ZWRiNzNmOTc1IGxlZ2FjeS10cnVuaworNjI5NTYgMzdiMjdhMjVhODQ3MDRhOGFiMDgyYTVkNGY4ZTkwN2JkMWM0MDYxMSBweTNrCis2Mjk1NyA4MDI1MTlmMDQ3NTQ1ZDQwMTEyOTcyMWQ3NDAzZTM2YmY3M2QzZDQxIGxlZ2FjeS10cnVuaworNjI5NTggZmU5Yjk3ZGJkMjMyZDJjZGFkZjg3OWFiN2Y2NmNhZmEzYTUyMjQzMyBsZWdhY3ktdHJ1bmsKKzYyOTYwIDRjNWVlMWIzODA0NTAxN2U4NjU3YjMzZmFkNWVhMWNmNjUzM2E1NjQgbGVnYWN5LXRydW5rCis2Mjk2MSA5MWZmZDlmM2NjZWM5MDEyMDZkYTI3OWViMWZhYTQwYmRkNTQwZmY0IHB5M2sKKzYyOTYyIGM1NmU4M2QwOGQwYjA1ODM1MzRhYjk0MGVhMDAyYWI3ZTlhOTViMTkgbGVnYWN5LXRydW5rCis2Mjk2MyAwN2EzNWM5YTVkM2ZiOGNmZGNmNDhlZjFiNmEzMTc5ZDBiOWMzODUxIGxlZ2FjeS10cnVuaworNjI5NjQgNDk5ODc1Y2I2YmEyYzQwZDI2MDQyZmJkMDRjNmQ5NWIzMTNlNTk3YyBweTNrCis2Mjk2NyA0MzkyNjk0ODU1Njk5MDk3MTQ3MDc2ZmI3ZjdhN2Y5OGM3Zjg3ZjM0IGxlZ2FjeS10cnVuaworNjI5NjggNTY3OWNlNjZlNzRiODgzOGQ1ZGI3N2Y3YzkyYWJhZWM4ZDY0YTAxNyBsZWdhY3ktdHJ1bmsKKzYyOTcwIDhkZTUxZGFhNTA2ZmQ4NTQ5NmZmYTkyMGZjYjFkYzUwMTA2NDI3NWQgcHkzaworNjI5NzEgYWE5MjUwZTZjNDA5MzRlMDU4MDVjMThmMmZjNjAyZDMyOWVkZjIzYyBsZWdhY3ktdHJ1bmsKKzYyOTcyIDc2ZWM2NzVlMjBiOGNiZmQxNTM2ZjlhOWRhM2U2M2RlNjAzZTU3YTYgcHkzaworNjI5NzQgMjNlYzMzZjY2NzM2MGU0YTE1MDllMDFhMDgwYTkxMGM0MjgwMGVlNCBsZWdhY3ktdHJ1bmsKKzYyOTc1IDg4NGY4NDI2Y2NjZjc4OTEwY2I5M2JkYzA1ODkwYTBkZmNjMDMyYzAgbGVnYWN5LXRydW5rCis2Mjk3NiBkMGY0YzI0NjY4ZjIzN2RhNjYzYzJmNDU4YTI1ODVkZDIwMjRjMDJkIGxlZ2FjeS10cnVuaworNjI5NzcgYmU4YzQzYTNmZDYyZmY2Mjk3NDc3YTZhMjY1ZmNkNGY0NWRjNjJiZiBsZWdhY3ktdHJ1bmsKKzYyOTc4IDM4OTM4YjcxNDAxODI0MDY4MjQ4N2JjMGY0MDZlY2VkZDcyN2VmYTYgcHkzaworNjI5NzkgZTNkNGRlOTM1MGZiNGRkYWRmODliNmZmNWRkYmJkNzdkMGY5YmFhMSBweTNrCis2Mjk4MiAyZWNmYzcwMTNlYjVjMzM2Y2QxMGIyMzljZWJiYTdiYmZmNTg0NTk1IGxlZ2FjeS10cnVuaworNjI5ODMgYTFmNDU4YjAxNDlmMDkwMjNhN2E3MGY2ZTQ0NjRhMjJiN2NmOGIxMyBsZWdhY3ktdHJ1bmsKKzYyOTg0IGFkN2QzMTlhZGY3NjdhYzZhNTc3NTBhNTMxNmIzMGRmN2NhOTE1YTUgcHkzaworNjI5ODUgNDFhOTc2NDlkZTYxNzU3YTVhNzA2OTgxMGNkMjg0NDQ0NzVhNDRiMiBsZWdhY3ktdHJ1bmsKKzYyOTg2IDEzMmY4MmQyNDAyOGVkN2Y3ODY1ZTc3MDc2OWE1YWM0MTU1ZTQwNDEgbGVnYWN5LXRydW5rCis2Mjk4NyA0NTE2NzRmODZkNzU0NGVhMjM1MGYwNjQ2NTZjNzNjOThkODNjOWI2IHB5M2sKKzYyOTg4IDc2NTRlYjVkMGE2NzAxZDIzYjQyMjE5MmFhNTc5MDA5MjUwNTJjZDYgcHkzaworNjI5OTIgYmM4YjIyNjYxMWRkNDNmYmJiOGMzMzI4MjJhMmZjNGZlYTU4ZGU0NSBsZWdhY3ktdHJ1bmsKKzYyOTkzIGIzOGVkN2MxY2FiMWMxOWU3MmRjMzYwN2RhNzlhMmFhYTIyZTEwYzAgbGVnYWN5LXRydW5rCis2Mjk5NCAyZDFlZjk0ODdjMzE1MzgzMmU5NzA4NzRiMTlkODg2ZTg2MDgxODljIGxlZ2FjeS10cnVuaworNjI5OTUgYmUzYzlmODg2NmU3YjcyYzkzYTlhNDMwMTNiMzRjN2YwZGZiN2YxNSBsZWdhY3ktdHJ1bmsKKzYyOTk2IGFhYzdhMjJiZWY4NDVlMmE1ZDMzNDhjZDI1MDNhOTY1MjFkNWZlMWEgbGVnYWN5LXRydW5rCis2Mjk5OCAyNzBmNTRlODJkMjA4MWIwMGFiY2RiMTUyMGQ1YmJlMzViOWZjYjBmIGxlZ2FjeS10cnVuaworNjMwMDAgNzYzZDcyZDAwMDI1N2EyODU3NGFjZDZkZWI5NDNiNzc5ODM3MmFmNiBsZWdhY3ktdHJ1bmsKKzYzMDAxIDM0MThmMmViY2U4NzIzMmYzMGM2NmViMDliODJiMDBlM2RkOGYzNTkgcHkzaworNjMwMDIgNmI0YmZmMjhjN2JhMmI1YmVhODQ1MGM0OGY1Mzc2NDY2YWFmYWViNSBsZWdhY3ktdHJ1bmsKKzYzMDAzIDg3ZGU3NThkYmQ2NDY1NWI2Yjc5NjI2OTBkY2ZmMmMzOTJiYWM1YTYgcHkzaworNjMwMDQgMzNkNGUwM2IyM2JhZGU4MTUwNTljNTgzZWIzMmQzOTkzNzdmYmNmMiBsZWdhY3ktdHJ1bmsKKzYzMDA1IDExYTBiMjIxZjM3MjY0MzA3NDdkODMxMTI3NDY5NjRkMmYwMGU2MTUgcHkzaworNjMwMDcgYjZiMmNlYTVkMzA2ZjdiOTcxNGFlOTMwMjg3YTI0MjRiY2FjZmZhYSBsZWdhY3ktdHJ1bmsKKzYzMDA4IDQyOGI2NmMwNGQzYTkxMWIyMzk0ODhmMzM1M2RmOGFhMWU3MGQ0M2UgbGVnYWN5LXRydW5rCis2MzAwOSA2MGIxOGIzOWEzYTJlODM5ZjZkNWYyZWYzMmU3YTYxYmE2NGNjMDJlIHB5M2sKKzYzMDExIDJkMDRlNTYwMTJlZGM2ZmRkODc2ZDhhMDFiY2UwMjQwZThkMDdhZTUgcHkzaworNjMwMTIgNmVkYWFhNzdhZjI3Njg2ZTI4MzczYjZjMWQyNGU1NzhmZTkzZWJhMSBweTNrCis2MzAxMyAwYzAyZTE1YTdjMWZjZDIwNTRhYTA0ZGQ3ZGE1N2ZlM2RlMTZiNDMzIGxlZ2FjeS10cnVuaworNjMwMTQgMmNhN2EyNzk4MTYxYzQwYzZhODAxMTQxMWY4YzNmN2E2NzZjMzJhNCBsZWdhY3ktdHJ1bmsKKzYzMDE1IGJlMWVkNjJkOGI4MGM3ZDA3MDhkOGY3Y2E0OWIwY2NiYWFlYzliZGMgcHkzaworNjMwMTcgYzdkNTMwZThiN2Y1M2JjZDNlYzEzY2JiMDQ1NTQ0YjJiYzI0NmU4YSBweTNrCis2MzAxOCBmMmE2M2VjNTA1NWU2YzI0N2U4MDBlNDFjYTVmMWJjN2JmNzljYTZhIGxlZ2FjeS10cnVuaworNjMwMTkgOTFmYWFlNDljYmViYWE1YzgyOTlkMzczYzAwZDNhNzRmZmM5MjM4NCBweTNrCis2MzAyMSAxZTQyN2JjMGY4MTg5NGZjNTFiZDAwODBkYmFmM2ExODY0YjcxMWVkIGxlZ2FjeS10cnVuaworNjMwMjIgYzBjNTdiZTk4ZWVkNmM0NGEzNDEzYjBjN2MxMGNmZGQzZTgzOWQzNiBweTNrCis2MzAyNSBjMTVjZjAxNDE1ZjkyNTY1ZWE0YWI2OTY2ZWUzYzFmNjJjMGEwYTAxIGxlZ2FjeS10cnVuaworNjMwMjYgZDhlMDAwZWM3Nzk2YmZjNjFlNjE1MTk3ZDNmMGY5NzM5ZjI4ZjY2OCBweTNrCis2MzAyNyA4OTJmOWIyOTU5YzlkMTY1NjFjNWU4MDAxNGQ0MDM3ZWRjYzY2YTg5IGxlZ2FjeS10cnVuaworNjMwMjggMzg0OTY4ZDRkNjU1ODZlMGVjMjdhY2ZiYWJjNGQyMjgzMTlmNTJiZSBsZWdhY3ktdHJ1bmsKKzYzMDI5IGFhYWU0ODliOWQ4MWMxYjQ4NDJjNDE0M2VhNTI2YTc2OTllMWYzMTggcHkzaworNjMwMzAgMmNhYzMxZmMxN2MyMWZhYWVmMzlmYTRiMTEzZTIwM2UxNGJiYmQ4MCBsZWdhY3ktdHJ1bmsKKzYzMDMxIGQyMzQ1MTE5YTJkYWJkYjE5ZjA1NmJkMWE3Yjg3MTQ5MTAzNDNlMTIgcHkzaworNjMwMzcgZmIxNGZmMDU3YzA5Njc2NmZkZDY2ZGRlNTU4NjlkZDcxYzQyOWFhNiBsZWdhY3ktdHJ1bmsKKzYzMDM4IDE2ZjE2ZmNlNTMwMjVmNjJjMTg2YmY4MGY5N2I5ZTAyM2I5ZDVlNTUgbGVnYWN5LXRydW5rCis2MzAzOSBmNjM4OGRjMDE5Y2M4MmY2Y2JjODUxYzRmNTg4MDVjNWM0OGYzMzYxIGxlZ2FjeS10cnVuaworNjMwNDAgMjI0ZTA3YjY1ODYxYzI1NmJlYzBmMDgzZjMxY2QwYWJlOWFhN2UwYSBsZWdhY3ktdHJ1bmsKKzYzMDQxIDljMThiYWE3NjBhZDBkMGRkOTE4ZWNhNzRiZTRmODNiZWY5MmVmMjMgbGVnYWN5LXRydW5rCis2MzA0MiBiNDA4MjdlYjRiODBiNzZlYzNhMDgxZDUyOTVmNDRjZTVjMDAxZDVjIGxlZ2FjeS10cnVuaworNjMwNDMgZmRlZjcxNzk3ZTgzMjMxYmNjMjM5NDljYWJlZDc1Mjc0ODAzY2Q1NSBsZWdhY3ktdHJ1bmsKKzYzMDQ0IGRkNTUxM2I0NzJkYzk3ZjkwOWE2ZGEzMjVhZDk4ZmJiNTVkMWZlMGIgcHkzaworNjMwNDUgNTI1NjZiNDQ1ZmM3NTU3MDMwMTVjOWFjODU2ZDI2NDI3NjMzMmU1NyBweTNrCis2MzA0NiBlNWFlYjNkZjE3NGU0OTdlZjVjZjM1NDgzZTJmOWFjMzExYzQzOTUzIGxlZ2FjeS10cnVuaworNjMwNDkgZDg4NTA3NTg4NzkwNDg5ZTViNzlkZmJiYmEwYjBkNGU4ODI1Y2FhMyBsZWdhY3ktdHJ1bmsKKzYzMDUwIDg3Nzc4MzMzM2VhZWRmZTUxYTMwMWYzZmY2YmZmYTU0OGUwYzc2NGIgbGVnYWN5LXRydW5rCis2MzA1MSA2YmQ2NjYwNzVlMTRjOGQ3ZTY4Yjk5NDdkMGUzM2IwYmRhOGE5ZjNmIGxlZ2FjeS10cnVuaworNjMwNTIgNWRiYmM0NDlmMDJiZTIyNWY5MDY4ZjBkMDk1MTI1ODU5YzYzOTA4YSBsZWdhY3ktdHJ1bmsKKzYzMDUzIGM3ZDFhMTcwYzk0YzM1Y2QwMTY1ZGU2NWZjODA0YWRmZTI1ZmQwMTIgbGVnYWN5LXRydW5rCis2MzA1NCBjMjEzNmMxNGRjZDc5NDA5ZDhlMTAyZmQ4YzM5YjU3ZDZhYWRhZDdkIHB5M2sKKzYzMDU1IGY0ZTYxZGNkYjZmODVhNGQ3MzU5NzlhY2IxOGMzZDM1ZmM1YjViOTIgbGVnYWN5LXRydW5rCis2MzA1NiBiMjliNDZhNDM5ZDlmMGM4ZTU1YmU0MDNiOTIxMDZiODBmNjY0ZDE3IHB5M2sKKzYzMDU3IDljNzY1ZjRlZDUxMjM0NTAyZjQ2MWEyYjFlNWFkZjFmM2RjMWJlMjAgbGVnYWN5LXRydW5rCis2MzA1OCBhZmFlZWRhZGJkYjM2YjM4YzFjYTY1YTc1YjM3OWI0ZmJhMDdlYmUzIGxlZ2FjeS10cnVuaworNjMwNTkgNGZiNmMwYzE2OWZmMGI1Y2MyNDIzOThlNzY2MmEwMjU3YmFiNDA0YyBsZWdhY3ktdHJ1bmsKKzYzMDYwIDBkZjYxNjE5M2I5ODgwNmI0NTlkZDljNmQ5N2M4OWExMWI4MWEwYzYgbGVnYWN5LXRydW5rCis2MzA2MSBhNzNlODdmMTVmZmE3NDllZTI4N2E3OTAzMmY0MjU2NTgwNDM2NzBhIGxlZ2FjeS10cnVuaworNjMwNjIgMDgxZjJhNjYyNjM0NjViNTk1N2RhMjI3MTJhZGIxNDI5YTUwYjYzNCBsZWdhY3ktdHJ1bmsKKzYzMDYzIDdmNzdkYjk1MGNiNDRlZmQ3NmE3ZGFlZGQ0NWNmZTZjNzYwMGQ3MjYgcHkzaworNjMwNjQgODE4Y2FlYmUzNzMzMTFlMTk0ODFjODE4ODc1YWM1NTRlODQ1ODdlMiBweTNrCis2MzA2NSAwNzU3MmE4MjU0MGZkZGU3MTcwZDMzZjc5YzE2ZDNlNTU5OGFhNDBjIHB5M2sKKzYzMDY2IGJlODdiNzcyNjg2NjBiNWQ4NThjNWU2MTFmMGFiY2M2MDg1MWUwMDcgbGVnYWN5LXRydW5rCis2MzA2NyBkZWRjZTdjYjdhNWRmZjdjYTIyMGViNTBkNjYxZjU0ZDQyNjMwZGU3IGxlZ2FjeS10cnVuaworNjMwNjggMWZkZmIyOWY0ZmI4MzYwOWNmNmRjOTJiMDQwZGNmNmU4YzRmZWE5ZiBsZWdhY3ktdHJ1bmsKKzYzMDY5IDVjY2QxNjVmMzBhNDUxMjMyOWJhZTE2MmY0ODNjMThhNmQxY2NjM2EgbGVnYWN5LXRydW5rCis2MzA3MCBiMTdiMjllNjBlOWJiZDhkYmU1MDgyOGFjODI4YTgyNTUzMzNjMGI1IGxlZ2FjeS10cnVuaworNjMwNzEgNDlmZjFmYzAwYzZjNTM0ZTFmNDFhZmNlYTIyYjY0NjYyNjIzOGQxZCByZWxlYXNlMjUtbWFpbnQKKzYzMDcyIDY3ZTQzNjNlYTJlMDY3NGU3ZmQ0NjIzZTk4ODVjODMwYTc3MjQ5NWMgcHkzaworNjMwNzMgYWIxOTBmNzFiOTE3Njk1NjA1MWExOGZlYzg0OWUwYjllNmQ3ZGRjZiBsZWdhY3ktdHJ1bmsKKzYzMDc0IGUzNDAxZjMxNmEzYjk0Yjg2ZGU0NWQzMTZmZGFlNjQ4NmJmOTg0ZTUgcHkzaworNjMwNzYgMjFhZTJiNjViYmJiMzY5N2UxNjg1YTQ1MDk1MzQzZmRlM2I1NzQ0NyBsZWdhY3ktdHJ1bmsKKzYzMDc3IDc2NjgxYTYzMDZhODA3MGUwMTY1MjNjY2QxMzczYWVkMDg4OTA4MmEgbGVnYWN5LXRydW5rCis2MzA3OCAyMDY3MDBkNzQ5ZjBmMzIzOWQwM2UyYWMzODY2MTdmNDdjN2Q0MmYzIGxlZ2FjeS10cnVuaworNjMwNzkgYmQyYzk1YzE2NWVhNGMwZDNkZWVkZTMyMjUwYTkzYmMwMmY1YzdlZCBweTNrCis2MzA4MCBhOTQ5NWEzZmUyZTBiNzgzZGFkNTFhZTBhMGZmMGRlODdkNDI1Nzg1IGxlZ2FjeS10cnVuaworNjMwODIgZTAzZDhkM2U2NzU0NGY3N2Q3MzkwZWNhY2Q4YzAyNjM4Mjk0N2MwNiBweTNrCis2MzA4MyBiNzFmY2ZkOTg2NmJhZWViMGRlZGY4YzI4OWM0OGU5MzQzMDFjMGFiIGxlZ2FjeS10cnVuaworNjMwODQgYWJlM2YzMDVmNmM5NjAxZGIyOTgwODUxODg5Y2ZjODMyYTdjY2U4MSBweTNrCis2MzA4NiA3ZTQ2OWUzY2ViZGE2ZTA5ODM3MTI5MjBkZmNjNTk3MWRkN2U4NzgwIGxlZ2FjeS10cnVuaworNjMwODcgYjcxMGQ3MTlhMDgyYWQ1OTU1YTY1ODgwYWNmYjZmYWVlMGU1ZGM0MSBweTNrCis2MzA4OCA4MTEzMTA0NmQxYjA5MjkwZmNiYzBjNDk1NWYyYjI5YmNlNDM5YjJjIHB5M2sKKzYzMDkxIDZjMTVkYjZjZTVkYWY2NGJjM2NjYmZlMzcxZTgxMzJlMThiNGU5MWYgcHkzaworNjMwOTIgZWQyYzE4ODhlMTQzMDE0MWY5YmUzMGU0ZGYzODBiYjg3ODZjOGI4OSBsZWdhY3ktdHJ1bmsKKzYzMDkzIGVmNGVjOTY4ZmRiNjY4MGVmMzM4ZjAzNmM2MjIxM2IzMDdmZDlmYmMgcHkzaworNjMwOTQgNzQxYjI2NjdhYzBiNzE0ZjZhZmRjMTEyMmIzNzk5MGNkODAzZDcwNiBsZWdhY3ktdHJ1bmsKKzYzMDk1IGYzZDBlYzBiNzM3ZWI5YzJiZmFlNzk4MjI1MzY0ZWI3YWM5MTBhYTggbGVnYWN5LXRydW5rCis2MzA5NiBjY2M2NjNhYTRhNzY0NGM3ZTFiNWUxYTFjNTQzYTE1OTFhYTI4NTA3IHB5M2sKKzYzMDk3IDZhMTliOWJlYTE4ZTdiZDJlMThmMGJlYWYwNGY1ZjI4Zjg5NGRlNDYgbGVnYWN5LXRydW5rCis2MzA5OCA4ZWE4ZmIxNGRmNzE1M2RjNzExYzA2MjdkOWUwZWVhZTdlNzExNmZiIGxlZ2FjeS10cnVuaworNjMwOTkgZTk0NTc0NDU1ZDlkZDA3NzNhOGVkOWQ4ZDUzYmJjMmZlZjM2NzJkZSBweTNrCis2MzEwMCBjOGI3NzAwN2ExYzE0NDMzZWNmZmVkMzg2YjlmOWQxZjBjMTcwNzZiIGxlZ2FjeS10cnVuaworNjMxMDIgMjJjZGI2ZWMzZTU2OTJhMjVkMjVhZmM4YjYzMTMwMWEzMDBmODQzMyBweTNrCis2MzEwNCBhNDI3N2MxYzk4YTg1NDEyZjg5MWUwNjMzZDMwMWU4ZWU0YTgzYWUyIGxlZ2FjeS10cnVuaworNjMxMDUgZDdjMjA3YjgwYzQwYWEyNmY2YTAxYTRjMTU4OTkwYzgxZTk0ZjAzMyBsZWdhY3ktdHJ1bmsKKzYzMTA2IDkwNjg2MDQ1ZmJhOGQxMmY1YmIwY2Q3NGYwYjJhY2ZhZGM2ZTczZTMgcHkzaworNjMxMDggYTlmZjcyODkwODJiMjBmYzkyYTA3MWQxZDA3ZTBhYjZjYWEzYzFhMSBsZWdhY3ktdHJ1bmsKKzYzMTA5IDBkNDk1NzU0MGM5NmU5Zjk3ZDE4ZWIzM2ZmNDE0YjM4YjQzYWFiYjIgcHkzaworNjMxMTQgYzJhYjdhMDZlZDI0YmVhZDRlYzYzNmVjNWEyNDk1ZDQzMmNhNTgwNCBsZWdhY3ktdHJ1bmsKKzYzMTE1IDUyNmQ4Y2Y3YTkyMDZlM2Y2NDQyMmYzMWFiM2U3NzNmN2Y0NGY5YzEgcHkzaworNjMxMTkgNGM4Mzc1NTc0YWE5ZTc0NjEwYTg5NjI5ODQ1ZDgxZWMzNmMxMjk1ZCBsZWdhY3ktdHJ1bmsKKzYzMTIyIDYyMmEyNTk2NzIyOGQ5YTA4MWI3ODNjODJhY2Y3MTU0NzI4ZmM5MmIgbGVnYWN5LXRydW5rCis2MzEyNCBmMGEyODVmYzIwMWQwMDVlNTAzYjQ2ZDgwMDE5MjM2YzM4MjZhYzIyIHB5M2sKKzYzMTI5IGJkZTM4YTdiMjMxODM5OTJlODEyODljM2RjYmU2NGNmMGFkYjI0YTggbGVnYWN5LXRydW5rCis2MzEzMiBhMzc1YjEzNDZlYjM3ZTMyNDZlZWY1OTZjOGQzODIwZjYxYTA2YmE4IGxlZ2FjeS10cnVuaworNjMxMzQgZGFmZGUyZWVlM2QwZDhhMTNlOTY5MmExNTQ0MTBiYmM4YjdjOTViNSBsZWdhY3ktdHJ1bmsKKzYzMTM2IGM5ZTVmYWE0ODJlOGJhZjFkZTliZTI1ZTBlYzYyOWU3ZmE2YmZjNDEgcHkzaworNjMxMzcgYjMwNWE5NmE0YmUyZTQ0YWExMTZlZGUwZDQxZjMxNWViZGVlOGRlNyBweTNrCis2MzE0MCBhY2E1YzFkMWM1Njk0YTNlYzA1NmYxMDIzYjFhNTk5OGE3MjE3MmNiIHB5M2sKKzYzMTQ0IGE5YWEzNDJhMzY3YTkyMmQyMzlmY2ViYjU0OTQ5YmRiNGMxYzI4MGQgcHkzaworNjMxNDUgMmYxNDUxOGYzMDBiOGZjMzNhOWVjNjYxOGY2NjQzZjRlYmFmYjMyZSBsZWdhY3ktdHJ1bmsKKzYzMTQ5IDc5OTMyMWU3ZTdiYjQzMjkxNzZiYTM3MWQ3MWFiMWI1ZTUyMWM5ZDIgbGVnYWN5LXRydW5rCis2MzE1MCBjMWE2OGY1NDBkNWJjM2IzYzU4NzNlN2QyMGE4MzZlNTAzNzY0ZmE2IGxlZ2FjeS10cnVuaworNjMxNTIgODM3ZGUyNGFjMWY3YTVmYmY1NzdkYTg0Yjc5MmU0YmFmOWZlY2FiYSBweTNrCis2MzE1MyA0YWM5Y2MxZDc3OTg0YmM5YzNlY2UzMzEwYzAwNTFkOWUxZDk3YzUxIGxlZ2FjeS10cnVuaworNjMxNTQgNjRkMTlmMjg1MWUxYmRmMjEzMzIyMGQ1MTY0NDNiNTE5MDc3YjgzZiBsZWdhY3ktdHJ1bmsKKzYzMTU2IDEyODBiOGVjOWRhMzg1MWY2YmFjOWQwYzI4YTEyYjI5M2NlNTZlMjQgcHkzaworNjMxNTggNWE3Y2NkNjVlNTliM2QyZWFmNzljNTNkOGM1N2Y5YzExMmYwMjc4ZCBsZWdhY3ktdHJ1bmsKKzYzMTU5IDA4OWM4ZDBkZjc3NDQ0ZDE1OTY0ZTgyOGE0MjE0ODUyNWRkZTE1ODAgbGVnYWN5LXRydW5rCis2MzE2MSBiYTIzZmMxNTc2MThiMzk5NzAzMGExNzZiM2NlNzRmY2NiODkzNTQ1IHB5M2sKKzYzMTYyIDM5ZjZmN2YxNzJjYThlNTQ3YzI4ODdmYmM0NGIwNmFmNmZhNGNmOGUgbGVnYWN5LXRydW5rCis2MzE2MyBmZDIzZTZkMTc3ZTlkYTZkN2I1MzRhNTU4NWM4NjMzYmRkOGExMmM3IHB5M2sKKzYzMTY0IDA3YTUzYmI4MmJhYTA1YmRiMTdjODM2NGJmZGM1N2IwZDZkYThlNDIgbGVnYWN5LXRydW5rCis2MzE2NSBkZjExYWZmMDkyY2Q4NGU5NWFhOGFhZjg1ZjU0NWFjMjZmY2ZjOWVjIHB5M2sKKzYzMTY2IDZhNzc4YzBhNTE3ZTYwZWJkODM3NjY0NGNjZTk0NzZjZDk5ZjQzZGQgbGVnYWN5LXRydW5rCis2MzE2OCBiM2VhYzNhN2ZkYzNjNzUxODQ5NThmMTVmNTZkNjBhNTk5ZTVmNjVkIHB5M2sKKzYzMTY5IGU5OTczOTAzNjYwNjlhNDk3NGY5NTlkYWU1NzIyZjhkNjQwMTVhNGEgcHkzaworNjMxNzAgZDI4MTBiOGFlZDZkMWZjMDc5MTY3MzA3ZGRiYWUzYTZjNTRjY2YyNiBsZWdhY3ktdHJ1bmsKKzYzMTcxIGZmOWIyMDU3NzIyY2I1MDZhOTQ4ZmEwOWFiMGI2ZWQ0ZGUzMjBiM2IgcHkzaworNjMxNzMgOTA5MTYzN2UzMmIxZTNiN2QyODExYTZkNTc0MWY4ZTM4YTNjN2FjNyBsZWdhY3ktdHJ1bmsKKzYzMTc0IDk5ZjUwYWY2OTJkMDI4YzEwNDE3YTA5NGFkNTY4ZTgzMjkzNDY0ZDkgbGVnYWN5LXRydW5rCis2MzE3NSA5MmQwMGY1ZjNjMGQwNDAxOTVlN2E5YjM4Nzk0MzlkZTM3MDE3ZDA2IGxlZ2FjeS10cnVuaworNjMxNzYgOWQ0NmMyODlkMTY2MDUxYWRjNjQ2ZGMyNzlkMmZhMDk1MmE4YWU1ZSBweTNrCis2MzE3NyBlNjQwMzliYmZlMjY4NjdlOTVkNGNkZWJlN2VhMTFlZTJiZjM2ZWExIGxlZ2FjeS10cnVuaworNjMxNzggMWU1NzNjMmNkOWJlNjFhMTgwMzU5NDgyMWYxZTBkNjkyMjk4YTA4OCBsZWdhY3ktdHJ1bmsKKzYzMTc5IDJlYmUyNzI3ZmM5MmFlNDA3YzY3NDgzNWYwMWM4ODkxNjA5NTE2NWQgbGVnYWN5LXRydW5rCis2MzE4MCA4YTQ5ZjhlZjdmODk0MjMzYThhMTBlZGVhN2NiOGJlNzBhOTIzYjRhIGxlZ2FjeS10cnVuaworNjMxODEgODk0MTQ0YjE3M2M5ZjYyZTE1MGQwZDk5MjU5ZjNiZjY2OWI1OGE1NiBweTNrCis2MzE4MiAwM2IxMjMzYmY1ZmUwMGM4NmZkZTkxZTU5ZDExYTViODYwZDYzMGM4IHB5M2sKKzYzMTgzIDgyNmFmZjk1Y2YwYmQxYjJiNDhjODQyODU0OGZmMDkzZTExN2Y5M2IgcHkzaworNjMxODQgNjViNzVmNzgzOGYzYjczMGVjNTdjYTNiODI5ODFkOTI1NjYyOTBlOSBweTNrCis2MzE4NiA1MWFmZDU2NmRiMmJkNDI2M2E0ODg3YjFhOWQ3YjEwYzhmMTY0NzVlIGxlZ2FjeS10cnVuaworNjMxODcgNmRmMDM5NGFiYmYxYmRhMmIwZDdlNTVmZDQ3NjVlNmJmYWEyYWNiYSBsZWdhY3ktdHJ1bmsKKzYzMTg4IDI4NDUxYjVlODE2ZmRiYTAyYmViYjZiNmI4NTM3MjI1ZWQ1YWQ4MWYgcHkzaworNjMxODkgNjI2NThiMGFjYTA4MjJlNGM5Njg1N2MxZTNjYTI5OTlkYzBiZWI0ZiBsZWdhY3ktdHJ1bmsKKzYzMTkwIGVlYWQwOGI4ZTFmZDA2M2UxZDNlYjQ4NTUzMjZlZjhlN2Q4ZWU1MTEgcHkzaworNjMxOTEgYTU5NjRlZTY2MTkzYTRiMDJhZGQwOTJhODk2ODk1MDk1NWEyODhkMiBsZWdhY3ktdHJ1bmsKKzYzMTkyIGRhNmVmMTEwYzM3MzUyNDJkNzE0MjZjYWMxYjRlYjQyMmRlZTQ2MDQgcHkzaworNjMxOTQgZThmNzQ4NDcyNzMwYzdiZGEwOTc5NTFmOGQ2MmM2OTJjOGY5NmI1NyBweTNrCis2MzE5NSA5MTFhN2JjZGMxN2U1OTEwY2QzZmU4ODgwNDI5MWNmODllZmY2Yzg5IGxlZ2FjeS10cnVuaworNjMxOTcgNzU1NjhjZGRhOTQ0NzA5ZmIxNjc0NjlmZjc1NTIwN2E0YjNiMzlmYyBweTNrCis2MzE5OCAzODRjNTRmYWRhYTJmYmQzZDQ2NjZkMmNlZjlmOWI3NzUzNDZiOWFkIHB5M2sKKzYzMTk5IGE5NTk0YTVjZGY3ZmI4NjJiNDQ5YmY3ODY4YzJjNWZkYzc0MjZkNmEgcHkzaworNjMyMDAgNTVkOGMzNTMyMmE3MGRiM2FlOTlhODFkYmVmMjU1ODgzZDYwMzdiMyBweTNrCis2MzIwMyBjMjZjMDJhNDIwMDgyNGJmZjI1ZWIxZDI4ODM3MDE2OTcyY2Q1MDA5IHB5M2sKKzYzMjA1IGVjZGVlZmE4YmI2YTg0MTYwOTVhYzg3ZGFmMmU0NzcxYmExNzNkMTYgcHkzaworNjMyMDcgNjlkYTdhNGYyZjhlMmQzMDliNGU3Y2NkNjE2ZmU0ZjE4M2YwZWYxNCBsZWdhY3ktdHJ1bmsKKzYzMjA4IDQ3NjkyZjZjODE1ZWRkYmE0ODRlMjJhMWQ3YTdkZDMyNDE2ZTZiZjEgbGVnYWN5LXRydW5rCis2MzIwOSA3YzhhY2FhMjdlYWUxZDQ1NWRjYWVlYTFiOGZkNDk1NTYwMmJjYzg0IGxlZ2FjeS10cnVuaworNjMyMTAgZTRlM2IzZWJhMjI2ZmQ4OWI2NzMwMjExOWZjNDE3N2JhMmM0ZDFiMyBsZWdhY3ktdHJ1bmsKKzYzMjExIGQyYzFlZDQwOGExZDc2YTY1NzAxNWY1MjNiNTJmZTg3NTFhMzRjMGUgbGVnYWN5LXRydW5rCis2MzIxMiA3NjQ3N2I5Nzg4NTA5YjQ5YTQ5MjZhODk4NDA0OTA4YzFiMTI5YWQyIGxlZ2FjeS10cnVuaworNjMyMTMgZjIyZWQ4MDI4OWQzMDE0Nzk2NzlmMjg1ZTFhYTY2ODlmMjliYWZiNSBsZWdhY3ktdHJ1bmsKKzYzMjE0IDQ5MDM4ZWUwZTViNWI1MzAwMzdiYzRhOWVhNGZkZTNjMjZjODVhMWUgbGVnYWN5LXRydW5rCis2MzIxNSA4MTIyYTMyNGI3YTU1MTlkZGFhNGI4NDk1ZDRlNTczOWRlYjIxMGRkIHB5M2sKKzYzMjE4IDYwM2E5MzVlYWFkYTk4NWFiNTJiMWY0MDBlODJiMWFkZWY2Yzc2N2QgbGVnYWN5LXRydW5rCis2MzIxOSBhMTc1ODVhNDVlZTdlYTBmMGM4NDkzOWU2Nzg5MTcyZThhMjg1NDgzIGxlZ2FjeS10cnVuaworNjMyMjAgN2I2ZTIyMmVhZGE3MGFiNjJlYjgwMjgxMGRjZjE3ZTAwNTQ1NmU5YiBsZWdhY3ktdHJ1bmsKKzYzMjIxIDVkZDZjNTFhZWVkZWE0ODhjM2QyODcwYjBkYThlOTAzNmExNWFkNTggbGVnYWN5LXRydW5rCis2MzIyMiA4YjIyM2QzNTFiMDk1OTJiMDNjZTc5NDAzNWFiMjRiYWEyM2RhOTgwIGxlZ2FjeS10cnVuaworNjMyMjUgNTYxZTVmNTAyNmViMGE0NGIzOGI1MGYzODRlZDdiYTJhNjRjOWE3OCBsZWdhY3ktdHJ1bmsKKzYzMjI2IDg3NjA5MTJhOWU5ZmUwNTkwNDU0N2YwODIyMzQzODI1MmFmYWYzMjcgcHkzaworNjMyMjggMDNkNjg3NWJkZTBlYmIxOTE3YjE4MDQ0NTA2ZWM4MzgwNTUxNWY4MiBsZWdhY3ktdHJ1bmsKKzYzMjMwIGU1MzZjNjUwMTQwMmMxMTdkMGVhNGZmODM5MGZlZDQ4YzlmMWI2MjUgcHkzaworNjMyMzEgOGZiOWJkNTk2MmU0NmZhMmZjNWRmZTAyNWRlZmNkMzkzYjA3MDA3ZSBweTNrCis2MzIzMyBmMmM0YWI3NGNjNjViY2ZmZDM3N2JmZjhjMTYwNmU2MmJmMDcyZDQ4IGxlZ2FjeS10cnVuaworNjMyMzUgOTA1YjYyNzFlZjExOGFjM2QyMDQwMGI4ZjdhZDhmNWE1MDgwZGM0NCBweTNrCis2MzIzNiA3MWFhOTAzZWI3YWMyMjQ2ZTliZTZjMzZlMGY1MjA5M2UwY2UzYmIzIGxlZ2FjeS10cnVuaworNjMyMzggODNlOTUwZjI5ZDQ0MzM2NmUyNWViY2QwNzZiZGZkZmYyNWJhNmM3ZCBweTNrCis2MzI0MCBhM2I0ZjFlNjVjYmVhZTU2NGZmZDRjOWUxMmMxMWYzMTQwMGYwYmNlIGxlZ2FjeS10cnVuaworNjMyNDEgNDJmYzkyMjEyMGQ5NmU4YzFlODE3OTBiZmE3YjEwY2FiZWY0ZjlkOSBweTNrCis2MzI0MiA5OTNkMGJjMDdlMDAyYTliOTU5ZGJlOWYyNWYyMDViZmFmNGUzNjFiIGxlZ2FjeS10cnVuaworNjMyNDMgYzU0NmM0MGZjZWNlMGE2NzdjMmYwMTdkM2RhNGJhMDQ3NTRkOGZkNCBweTNrCis2MzI0NCA5NTgyODZiMTVkZTA1MGQ5Y2NhMmE0NDg2NzgwNGYzNGIwMjdlMmYxIHRsZWUtYXN0LW9wdGltaXplCis2MzI0NiBmMjhiNzA2NDE1OTVmMmQxNmZkZjhmMDZlMDU1MGY3MzIyYzdmYTcyIHRsZWUtYXN0LW9wdGltaXplCis2MzI0NyAxNzk1NmRiYWQwZTQxZTFhNGVkZjYyNTkxYWQ0MjYzZmZhNzk4YWU0IGxlZ2FjeS10cnVuaworNjMyNDggNzA4MjE0ZjM1MWZlN2Q4YmRlNGE5ZDIyMTA1NDRjMzBmZTE3MmQ3OCBsZWdhY3ktdHJ1bmsKKzYzMjQ5IDdlMThkNjU5MzgyNDNhNTA3NWY2YzE3ZmE2ZDg4OWEwOTViNDE4NjIgbGVnYWN5LXRydW5rCis2MzI1MCBjMjI5ZTc1ZmMyMjQ5ZTZhZGU0M2IwNjVkMWRlZjY2OTNlMzEyNmQ0IHB5M2sKKzYzMjUxIDM1YTg4OTkyNTZjMmNhN2IyOTM5M2RiMjgxOTFkODFlMjMzZGRjNzMgcHkzaworNjMyNTUgNGViNTlkOGJhYzRkNjRjOGIzOGE5MDIxNjc2MjA3YjBkNmY2MTU4MSBsZWdhY3ktdHJ1bmsKKzYzMjU2IDA2NjNmMmZhYjkzNDUyYzdjMzkxNGM5NzQ4YWNlMmY4M2JkZDRkYmEgbGVnYWN5LXRydW5rCis2MzI1OCA0MTYyOGYzOGM1YTI4ODc0ZmQ2MGE4NjgxNDVmNWQyMDljN2UzYmM0IHB5M2sKKzYzMjU5IDZmMjU5YTljY2M4NDgxODg1MzQyN2IzNDZlMGZjYzFjZGJlYTBlZDggcHkzaworNjMyNjAgZjBhNDcwOTFjOGQ4NmRkMmYzYmVkYzlhOGI2MWFlYzFmODIzNWZkMiBsZWdhY3ktdHJ1bmsKKzYzMjYxIDFkZjQ2NjcwMmRlMmE4YWQyY2IzY2E3N2ExMDBiMmE0Y2U1YTFjN2QgcHkzaworNjMyNjIgYWFiOGI4ZDRiNmE1MDg1NWNmM2E5MTc4NWU0YTQ3ZWMzMmFmZWQ4ZSBsZWdhY3ktdHJ1bmsKKzYzMjYzIGQ1ZWFhN2RhZWMyZjQ3MzA1YzE1Yjg4ZjhhNjBkY2FkYWM0NTc1ZGUgcHkzaworNjMyNjUgMDU0ZmY0MTI4Zjc0NGVlZGMxZGUyZmQxOGI0ODUwZGEwYTFjMzIzYSBsZWdhY3ktdHJ1bmsKKzYzMjY3IDI3ZDY5ZGM3Mjc5MzIxZDBkOTQ0ZmQ0ZjIzMzU3MDY0NTZmMDhiMDMgcHkzaworNjMyNjggNWU4OTMyOTkxYWRmZDEyMWMzZTU1MzJhYmY1NzNlOGFmYTRhZGRjOCBsZWdhY3ktdHJ1bmsKKzYzMjcwIDNhYmE0NDI1NjI2NTc5ZWZlMDY5OGU2OTYyOGE2MjhmNGZlNjMxM2IgcHkzaworNjMyNzEgNjJkOWVjOWM5ZWZkMTAyYTc1NDI2NmQyMjBlNzZmNGQ5OTI4ZTNjYyBsZWdhY3ktdHJ1bmsKKzYzMjczIGY1MTNiYjdiOGQ5N2U1NWI4MWYzYjE0NWE1Yjg5ZjNmZWRkOGVhYmQgcHkzaworNjMyNzQgYTA5MmRjZTZlOWQ0YTk2MTAyODQzM2RkZTNiODRkMGZlM2E5ZGI2YiBsZWdhY3ktdHJ1bmsKKzYzMjc2IDNjYzBiZjdmMDRiNmY1NTEwZGZjNTI4YzUyOGJhZDY2N2FhYzExYjIgcHkzaworNjMyNzcgODc2ZDJmMGU5MmU0ZTNhMTU0MDhhNWZmOWQ2M2RhNGMwNGVkYzQyOCBsZWdhY3ktdHJ1bmsKKzYzMjc5IGU0YmI2ZjE3NGIwMDQ0NDdjZmUzNjUwMDhiYzg0Zjc5YmY3MmJkMmQgbGVnYWN5LXRydW5rCis2MzI4MCA2ZGM5MWIzNjZkOWZmZTcyYmEwMjQwNWI1OTBkYzc0ZDNlMjRmMDI0IHB5M2sKKzYzMjgyIDU3Y2YwMDFhYTJhMjRlODZjYmY4YTM0N2RlODg0NzI0MDlmMmZkMmUgbGVnYWN5LXRydW5rCis2MzI4NCBmY2Y1ZGFjNTEzOTRiOGJiNGZmN2UxM2NlMjQ4OGQ3MTBmMTFlY2IxIHB5M2sKKzYzMjg1IGJhZGEwZTg3MWFjMWNmMTllZjM5NzU5YzBjZWVjYTEwNTRlMjJlMDEgbGVnYWN5LXRydW5rCis2MzI4NyA1YWYzOGI5NWExN2ZhZTI5OWUzYTU5ZGE2NWRiYjNkNmFmMzMyNmQwIHB5M2sKKzYzMjg4IDk2YTg3NmFmOTMwYTQ3ODc3NzViM2ZmMzhkNGZmNmM3YzY1ODgzZjcgbGVnYWN5LXRydW5rCis2MzI5MCA4YTEwYTQxMTlmYzI3NTczYWZlYWNmOTU3MjZlMGIyNGI2Mjg4NDM4IHB5M2sKKzYzMjkxIDFiNDRlZDFhOTA0NjVlZTRhZGM0MDRhZmEzMTE1YTQxNjJiOGJlZTMgbGVnYWN5LXRydW5rCis2MzI5MyBkYzQwOThjYTgyM2UyODc5YmVmMzViZTcyZmFiMjBkNDkwZTZjZjgzIHB5M2sKKzYzMjk0IGQ0Yjc0M2JkZWJiMTZjNWM5MWFjNWU5NmJhM2I3OWU5M2MyZGFkYTMgbGVnYWN5LXRydW5rCis2MzI5NiBjZmE4YzYxOGVkMzUzNzA5YWEyMGJlNDAzM2ZkNzQxM2U0N2FiY2Y4IHB5M2sKKzYzMjk3IDgwNDM1YmM3YWFjNDgzOGY4OGI1YmZhNTQwYzIyOWEyMTgwYjBiYzkgbGVnYWN5LXRydW5rCis2MzI5OCAxZTU1YjJkMWM5M2VmMzU4N2NkYzI2YzcxZWYxM2MxZDFhZWI4N2IzIHB5M2sKKzYzMzAwIDU5YmNkZmQyNzUwMWZlYTRjZDEzMjUxZWY1YTAyNmQxYTcxNDQyZjkgbGVnYWN5LXRydW5rCis2MzMwMiA1Mjk4NzM5ZjBhNGRmYzE3ZjRiMWRiNDkxZWRhODI1MTEyZGI3OGUyIHB5M2sKKzYzMzAzIGQ0YWNlZDMzZDU3YTU5MjRjMzI4N2E5NWRjODk3ZDkxY2ExZTNmZmMgbGVnYWN5LXRydW5rCis2MzMwNSBlMTE2Y2EyNmQ4ZjFjYTZiYmMwMGM2OWEwOGNjYTJlOTlkMWE0N2NlIHB5M2sKKzYzMzA2IGVkNTMyY2E3YWU3NWNmZDY5YWU2YWI4MGUxNzA4N2NlMDU0NjkwYjYgbGVnYWN5LXRydW5rCis2MzMwOCBhN2MxYjMxNzAxMTM4MzJhZmE2ZWEwNDAxMTUxZGNmZmIwNWU0OTY1IGxlZ2FjeS10cnVuaworNjMzMTAgNWE0NjA4MjcyYzUwNmE2YzA0MjhkYTIzZTE2OTgzZmNlNmY2NTIyNyBweTNrCis2MzMxMSBmZGE0ZDQxYTA3NzM4Nzk1Njk3ODgwYzdmOWVjYTMwMjY1NWIwYTdlIGxlZ2FjeS10cnVuaworNjMzMTMgMWQ2MmQzMjYxMmQ2ZGNmYjJkMjY0NjJiNWVlZWM5YTM5MGY5YWQwMiBsZWdhY3ktdHJ1bmsKKzYzMzE1IGE4YTU3ZmY2ZjU2OGJjNGU5ZDM2ZDBlYTZjMGJjMTIyNmE1MjA1ZmMgbGVnYWN5LXRydW5rCis2MzMxNyAxMzU2YTQxODgzMGIzNGNjMThmZjM3MzVmYzBlY2U2NmI1NGM4NzA2IHB5M2sKKzYzMzE4IDYyOGRkNWVjNGRkMmU4YTc4NGEyMGEyYjNiOGFhZDA5MzE0ZmQ1YWUgcHkzaworNjMzMjAgMTU3M2M3NzZkZjgyZWM1NTVlOGJmNzg3OGZjY2NmOTI4MjFlNzRmNyBsZWdhY3ktdHJ1bmsKKzYzMzIzIGQ1OTI5Y2Y4NjhjYmJiNTIzMWIxOTE0M2U5YjM5YmMwOWY2M2E1NWEgbGVnYWN5LXRydW5rCis2MzMyNCA5MTg5NjIyNzI3MmE2OTJiNTFkNTBhMGI1MTNjMmM5MGU4YzkxNzcwIGxlZ2FjeS10cnVuaworNjMzMjUgOGUwMDE3OTg2ZjUwZWU2NGExN2U4N2Y4Y2NhMGE0ZDc4ZWMyMGZkMyBweTNrCis2MzMyNiAzOTE5NzlhZjY2MmJjNDhkYWQ2NzQ0NGU0YWVmMjZlZjlmOWNmNjkxIGxlZ2FjeS10cnVuaworNjMzMjcgZTY4ZTYxMDg2MmJlYjVmOWE1NzEyY2RkYjMzMmE5MzU5NWUyY2VmMCBsZWdhY3ktdHJ1bmsKKzYzMzMwIDg3YTc5MzUyMzQyYzYyMTVlYWNlMGY2Y2NlNDM2NjE3NTU1NjZjOGYgcHkzaworNjMzMzEgMDgxYzE1ODA2ZTI4N2MwMzY2MTZhNTA4MmNmN2E0YmViOTE1MDY5NyBweTNrCis2MzMzMiAwZDU0YzcwNTY0NjhiMzJhNjhhNTc3ZjM5MjM2NGIzZGQ5NmE1YWUzIGxlZ2FjeS10cnVuaworNjMzMzMgMzk3ZjI5ZGQ4MmJkYzVkYzRlZjNmZjViNzA2NjA1NTM0YWVjNzMxNyBsZWdhY3ktdHJ1bmsKKzYzMzM0IDMxY2M4ZTFhOGZkZjVmMjM3ZjVlOWE5Njk4OTM5OWZmOTJjMWY2YjUgcHkzaworNjMzMzUgOTYwYWRlODU2MDc4ZDY1NzEyYWQ2N2Y0MDY2ZWM0NjdkMDgyMmU3NiBweTNrCis2MzMzNiBhZTE2ZTk0YmIwM2FlOGVkZmQ3MDM2NDhlZTVjNDA1OGU2ZmQzZWU0IGxlZ2FjeS10cnVuaworNjMzMzcgMmI4Zjc0NGRiNzliNzIxNTg3YWMwNmRjYmE1NWQ3OGIzMjY1Mjg0ZCBweTNrCis2MzMzOCA2NzgwZjAxNTk4YTIzNDRmNzllNzNmMWQyNTYxN2QzZmI1M2UyOGE5IHB5M2sKKzYzMzM5IDhkOGUwNmY0YmUxZmY0YmY2ZTQyNTJkYWU0NTcwYTQzYmNhODI2ZGEgbGVnYWN5LXRydW5rCis2MzM0MCAwYzcxNDJjNTZkN2VkOWVmNTc1NThiOTgzMmMwYTY5NGNjZmM1YjIwIHB5M2sKKzYzMzQxIGE4YWUyYWEwOGU3ZmY1MzA1Zjg3NWVjOTJjNDk0NjAxMzM3NjBhN2QgcHkzaworNjMzNDIgM2MwM2U5YjQ2Njk4NDE3NWFmOGY4NjcwOGVhZGVkYzBlNzYxYzlkMyBweTNrCis2MzM0MyA1OTNiNjQ5OTA0Yjg2NjM2MDQwZWJiY2RiMWI0MWQxNjFjMzgzYTVjIGxlZ2FjeS10cnVuaworNjMzNDQgMzY1Njg3Mzk4NTE4N2M4ODEyZTNiZjY5MjYwZDdjZjI5NGQxYmY4YiBweTNrCis2MzM0NiAyZTJjNzEyZmUyNmQ2OTdkZDY2YzljZGEwMzVhNjIwZmJkN2M4YWY4IHB5M2sKKzYzMzQ3IDU3ZjYxZGFkN2IzYjRmM2YzOGI0ZTY4ZTZhZWQxZDczOTEyYzMwODEgbGVnYWN5LXRydW5rCis2MzM0OCAzNDA3YmY5ZGFjMzg3YTRjNGFiN2NkZjBiYWZkYWE2YTg4MWJjZTliIGxlZ2FjeS10cnVuaworNjMzNDkgNThhMGQ1NTI0ZjlhM2JhOTUwNjE1M2QxYmYwMmFmNDhkYWQ4NzhkZCBweTNrCis2MzM1MCA5OGY2ODcyNmRhMDJkNTBhNmI1OWNjNDhiMDEyMWJkNTcwN2Y4MDMxIHB5M2sKKzYzMzUyIGI2MzA3Mjk1NzFlNjY4ZjRlNGUwNzI2ODZhN2EyZmZhOGMwZmM5ZmQgcHkzaworNjMzNTQgOWFjMTEwNDNiMzk1MzYzZTE4ZWYwM2RmYWM5NmM3N2I3NjA3ZWFkOSBsZWdhY3ktdHJ1bmsKKzYzMzU1IDk0N2NhZWUyMzk5ZWYxZjg5MWQxNDIzOTA1NDFlYjcyZmQ4ZGU5ZTEgcHkzaworNjMzNTcgM2RmMDkwZWQ0ODEwM2Q2MjI5MjA5NDVmZTdmMDNlNzQ2YzljMmY0YiBsZWdhY3ktdHJ1bmsKKzYzMzU4IGQ2ZmU1MDIzMzYyNjBmNjAxMzQxODJkZTJiYzlkOWRlNjE3MjQwMzUgbGVnYWN5LXRydW5rCis2MzM1OSA0ZWE5OTMwOWU1MjU0YzhiNTZhMjMyZDhmNjUwNDgwYzE1ZDE4YmU1IHB5M2sKKzYzMzYwIDRmMWEwNzlkZjQyN2NiZDllODNhYThmZWFhOTAxYjliMWUzYWJhYTYgcHkzaworNjMzNjEgYjBiMzI3MzJmNjZlYjdiZTI2MGI3Y2QxNDRiZTNmOTk0MjM1NDQxNCBsZWdhY3ktdHJ1bmsKKzYzMzY0IGVkMTMwNDBhYzJlNmU1Zjc4NDc5OGZhZmYxOWRkYmQxZGQ1M2I5YWUgbGVnYWN5LXRydW5rCis2MzM2NSBmZjJkYzAyYmE0MWFhM2QxMTEzMzhhMzc0ZmFlZWY3MzBjZmQ0MzVjIGxlZ2FjeS10cnVuaworNjMzNjYgNDU2NTBjMjVhMDI4NjUyNjZmMzY3MzZmMjRjNTQ0YzMzYTQ5N2RlZiBsZWdhY3ktdHJ1bmsKKzYzMzY3IDU0ZmQwNDU4NTUwYzZhNzUwMzYyMTVkZmRhNTUwZDQ5MjgzNmViMjMgbGVnYWN5LXRydW5rCis2MzM2OCBhYThlMTMyNzliNWIxYWMxY2M1NWU1ZmY3NDdmZDRmMDYyMWM5OTg2IGxlZ2FjeS10cnVuaworNjMzNjkgYTJjZWY5ZTg5YjdjMmU2OTgzZTIzZDVkMDlmYTUyNWU3MDAyNDQ5YiBsZWdhY3ktdHJ1bmsKKzYzMzcwIDVkMWFmZjQ2Y2MwZGYxZTM4M2IzYmFmMWYwYTIyYTE1ZGI1NjJlMzYgbGVnYWN5LXRydW5rCis2MzM3MSBiMjQwM2Q0NzBiNjlkZDdjOGJmYmYwNjg1N2U3ZDkxNmFiNjE4ZDJlIHB5M2sKKzYzMzczIGRkMGJjYzIxNmZlMzU5MjBhZjQ0NmUyODU3MzU0Yzc5YzNlM2Y0MWQgbGVnYWN5LXRydW5rCis2MzM3NCAzYjgyN2YzNjQ3Y2IxODQ2OGFiNjQwNjhhNTk4MmE5ZjZlMzdiZjNhIGxlZ2FjeS10cnVuaworNjMzNzUgODkzYTRkYzE3YTkxYzVlYmExMzczNTM3MjViZTY2NmM1ZWE1ZTc1YiBweTNrCis2MzM3NiA4OGJiOWRmMzg1ZGMwZDc1MDYwMGVmMzZmODRjODViN2EzM2U0NGEwIGxlZ2FjeS10cnVuaworNjMzNzcgMGYxNTczNWMxODMxZjU0ZWEwZmFkNWMwYTFmZGIyN2RjNzc4NjhiMiBweTNrCis2MzM3OCA2Mzc0MWM3NTIxYWEwYzIyMzNjZmE4YWM0MWFlNTg0NTg5NGNkNmJmIHB5M2sKKzYzMzc5IDBlNjdlMjFhNDExMzIwYzc3MjJmYmFmM2M1NGQ3Y2Q1YjgxMzJhZTQgcHkzaworNjMzODAgNTMwNDA0NmJiMzU4ZDU2MDE1Y2I2OTc1MDVkZjMyYTczOWZiOTYxNiBsZWdhY3ktdHJ1bmsKKzYzMzgxIGFiZTM1YTg3YjAxZGEzMDMxMWI4OTczNWNlOTZlZGQ5MDc0MTRiZDcgbGVnYWN5LXRydW5rCis2MzM4MiA2MGI4NTkyNGVjNmQwMjhlNmEyZmI4N2M3NmI1YjQ0MGNlMTk3Y2Y0IGxlZ2FjeS10cnVuaworNjMzODQgY2U3YWE4OGI2NjllYTEwZGMxY2M3OTVhYzBiNGUwZjIyMDRlMjY3YyBsZWdhY3ktdHJ1bmsKKzYzMzg1IGEwMmJjMmE4NGQxOWNjZDBiODAyYjg0OGQyODQ3NmQ2MjAwMGYzNDMgcHkzaworNjMzODYgODgwZmU4ODc3ZGY5NzhiOWVjZTA5MjdkMjIyNzZhZTRiOTE3ZTZlNCBweTNrCis2MzM5MiBhYjgwYmJmYTZmMGMwODkyNTRjNWU1NmE5ZGZiMzFkNjFhZGVkZmRhIGxlZ2FjeS10cnVuaworNjMzOTMgYmU1ODFhY2VhNGU3Mzk5NmIzNzQ4Nzc3OTRlMWYxNDdkOTQ5ZDU5NCBweTNrCis2MzM5NSA2YWY2NDUxMjI5NGFkMDlkNzI3YjFmMGRiMTMwNGQwZDU1NjcyZDI2IGxlZ2FjeS10cnVuaworNjMzOTYgNDJiNzhlMGU2ODQ4MDczNDk2MjE1MDQyNDljNjVkMThiOGEzMDJjNyBsZWdhY3ktdHJ1bmsKKzYzMzk3IDg0YmI3MmQ5MGJjNzI1Mjk2MzgxNTNhN2ZkNWE4NWQ2ZDNmYmVkZjYgbGVnYWN5LXRydW5rCis2MzQwMSAwNjgwNzk3YWU0NTQ2MjllMDU3ZmYyMjNlMjZkYjMxMjMwMTE4ZWEzIHRsZWUtYXN0LW9wdGltaXplCis2MzQwMiAyMTQ0YzlmMzY1YzhmYWFmZjMxM2ZlNWQyYTUxMWY5YWI0MmVkYTFkIGxlZ2FjeS10cnVuaworNjM0MDMgMWNhOTY3NTY2ODgwZTgwNjQyMDNiYjIzYTc4MGY4N2I3Mjg1YzZkMiBsZWdhY3ktdHJ1bmsKKzYzNDA0IDZmYmQwNmRiNzA3NzYwMTZkMDM1ZTJjNTc1ODNiYjNiY2IwNTI3YTYgcmVsZWFzZTI1LW1haW50Cis2MzQwNSA2Yjc5NzczMTRjMDJmZDYxYjdmZWUyYWNkNzRjZmJlNTYyOGRiNDdiIGxlZ2FjeS10cnVuaworNjM0MDggM2JiZjQ0ZDMyMzYxMjJhY2I5MDc4MDE3YTQ5MzZiZmY4ZTMxZTdhYiBsZWdhY3ktdHJ1bmsKKzYzNDA5IGYyYzAzZDcxNTk3ZDQ4YjJjNGI5NjNiNjRkMGMyNjdmYWJhOTA4ZWUgbGVnYWN5LXRydW5rCis2MzQxMCA2OTRkMzZmYjZmNGRmYTI2NjgwYzQxNjIzY2U3MWQ4MDAwNjVkMDZlIGxlZ2FjeS10cnVuaworNjM0MTEgYTk3ZWIxNzdmM2E3NzljZDlhNGE5MGJiZjZjZjVhNTJiN2IxMmMwYSBsZWdhY3ktdHJ1bmsKKzYzNDEyIGFjOTNlZGMzOTZhNjRmOTRiMDI3ZjY0ZDM0MDM5MmE2YjhkYTI1ZGYgbGVnYWN5LXRydW5rCis2MzQxMyBiNjYwNTBkYjg0MWYwNWJhYjI4MjNmMTQ1ZjVlNTFjNDJmNDVkMTc2IGxlZ2FjeS10cnVuaworNjM0MTQgNjgzNmU4ZjFkZWRiY2Q0NmYwM2Q5Zjc5OTlkMjE4ZmYyNTkyMWQzMyBsZWdhY3ktdHJ1bmsKKzYzNDE1IDc0NjA0MTVkYThmZWM3NjkxMDI4NmI3ZTkzM2RiYzhkOWFhNTMzZmMgbGVnYWN5LXRydW5rCis2MzQxNiBmM2RkYTlkMzY2OGZkMzMyM2I3OTk4ZWRlMTdjNTIxZTZmZGNjNjYyIHB5M2sKKzYzNDE3IGQ2MzM0NGJhMTg3ODg4YjY3OTJiYTgzNjJhMGRkMDllMDZlZDJmOWEgcHkzaworNjM0MTggZWY0Y2NhMmQ2MTcxM2QzM2MyYTUwMjUyMzVkNDAzMGUzNjk1ZDAyYyBweTNrCis2MzQxOSAyNDk2MTg4OGFkOTU2YWNlODA3Mjc1NjJlNzU1N2M2YTI3ODlmNzgxIHB5M2sKKzYzNDIwIDhhNzQ2MTJmM2QyYmFlMWRjMjJiZjU2MDRmYzhjZDQxMmRlMDU2NzQgcHkzaworNjM0MjEgZDZlMWVhMjFjOTQ4ZWMyODg1MWY4N2VlMTFmNTIyOWE5ZTNhZWZiNyBsZWdhY3ktdHJ1bmsKKzYzNDIyIDkyNDBhNTlhMjVlOWRkYzQyMmMzNTg0ODMwN2ExM2IwNTdiYWE3MmYgbGVnYWN5LXRydW5rCis2MzQyMyBjY2UxYjI0M2MxMWQxMzYzZDgxNzEyMDRmZWY4ZWYzZGRkMTdiN2I1IHB5M2sKKzYzNDI1IDcxMThmYWRlNTc1YjllYzFlZDI5ODEwZGMzYmMzZjg2MmFmNjQyZGYgbGVnYWN5LXRydW5rCis2MzQyNiA2NGYzODczNDM4YjFjYjI2NDVkMTg3YmY0ZGRkYTRlZGZjZjU4MWFjIGxlZ2FjeS10cnVuaworNjM0MjcgNWNlOTA0YzkwZTYxOGM3NWIxNDJlM2QwYjQ0MWY1NWE2YmU0YjQ1ZSBweTNrCis2MzQyOCBkOTUzZWE1OGNjOGJjYTM1ZTQyYTk3ZmRmYWRmYmI2ZTA4NzFkZjkyIGxlZ2FjeS10cnVuaworNjM0MjkgN2ExZGMzZTdjNzliNTI0Mzk5ZWJhM2ZkODA5ZDMwMTBhNzBiMDUxNSBweTNrCis2MzQzMCA4MDFhMDlkZDBlYjhhYmRmOWIyZmViNzU5NWNkYTQ2MGFlYzE3MDVhIGxlZ2FjeS10cnVuaworNjM0MzEgYWM1OWZkZDgwZTQ1OWU2ODIwMGQyNmRhMGFhMWM0NmZkNzI5YWNiOSBweTNrCis2MzQzMiAwYWExYmRlOWQxOTRhOTdkNjI1N2Y0NDFlZGI0NjMxNWFhMzgwZDc1IGxlZ2FjeS10cnVuaworNjM0MzQgMzNjN2ZlODVlMzVkZmY2MDAyZDlmOWZkMmI5YzJlZTA3ZTk2NTE1YiBsZWdhY3ktdHJ1bmsKKzYzNDM1IDEyYzIyOWQwMjFjYzJjNjBhNDY2OWMyMjRlYWM3ODEyMzQyY2ZkNTQgcHkzaworNjM0MzggZjg2MmRmYWY5YTRiZTNhMzA1ZmI1ZWJkOWQ3NGU0MDcxODAyOTcxMSBsZWdhY3ktdHJ1bmsKKzYzNDM5IDcyOTZhMmZiNDc4NmRkYTkwN2I0NmVjZDg2MTljMThjZGY3NGY0N2UgcHkzaworNjM0NDAgM2Q1Y2RkYzZlNWU3ZmM1MDAzNjhiNTJjYTZjNmYwNDhkMjMxOTJkZSBsZWdhY3ktdHJ1bmsKKzYzNDQxIDU4NWY3Y2EzOGE4NWFmODA5NzEzNWM5MzcyZjUwNzI0N2E5Y2RjNzEgcHkzaworNjM0NDMgYmJkMzBjNDkyYTk5OGMzZWQ2ZTE3MDgwNzQyZWIyYjI2ZDVmYmNhMCBweTNrCis2MzQ0NCBjZGI3NWFmMjM4NWEzMWZkYTY5M2QxNjM5ZWZiODYxNjQ1OWVjYTRlIHB5M2sKKzYzNDQ1IDlmMzU0MDAxZWEyNTI3MTE1ZGE1ZjkyY2JjNTY1NDhkYmQ0NTY5NzMgbGVnYWN5LXRydW5rCis2MzQ0NiBlZmUyMmVlZjI2YmUzZTI3NWU3YjA4ZTUxZWVjNmY0NGU4MGVmMDQ4IGxlZ2FjeS10cnVuaworNjM0NDcgMjBiMWM1YzRlMzA0NDVmMmI2YTg3YzY4Y2YxMmFmMmM5ZWY2YjdiOCBsZWdhY3ktdHJ1bmsKKzYzNDQ4IGE5Mzg1MjlmNGQ2ZGQzYTIxODkxMzI3MjgwNzkwYmQ3MjBjMjgyMzQgcHkzaworNjM0NDkgMmU5ZjU3MmI3MzIyN2E4NTlhNDljZDIwZDQxNWZjZDFlYWM2MmI5NCBsZWdhY3ktdHJ1bmsKKzYzNDUwIGI4NmIyOWUwY2YzMjlkMTBjMTg2MzJmZGE0ODk3NzVhZDZlMjFhNWYgbGVnYWN5LXRydW5rCis2MzQ1MiAzMGY2MzJiMzY4NjhlOWQ3MGVhZDIzMTNkNTYxNWI0MTkyNWE5NDA5IGxlZ2FjeS10cnVuaworNjM0NTMgMzc0OTkyODdmNzU4YTcyZGIyZDJhOWIzOTAzZjBmZmFiMTg2MWNiYiBweTNrCis2MzQ1NCA2MWE2NzViYTc5MDYwMjU5YzdhOTkyMWQwMWQ5NDkzMWJhOGZiYWY3IGxlZ2FjeS10cnVuaworNjM0NTUgMzZjNzFkM2E2ZWY4YzFlODhmZGEyMTBkZWMzODRkZWFiY2Y1NjRhOCBweTNrCis2MzQ1NyAzMDcxYTMzN2Q5MjFmM2ViYWVlOTQyMjQ2NzdjNzdmNjRjZTgwYmQ2IGxlZ2FjeS10cnVuaworNjM0NTggNmE2Y2I5ZDRiZjk0NTAyZDM5ODhmM2ZmYWZkODA1YWExOTc4N2ViYiBsZWdhY3ktdHJ1bmsKKzYzNDU5IDc5NmNiOTNjOTcwN2Y3YmZjZjg5MjNiMTY3Yjk4ZWQ1YjM0YmNkNWUgbGVnYWN5LXRydW5rCis2MzQ2MCBjZDkxZGFmMDMyN2M2ZWQxZTI1MmNkNjIwOTEyMWMzNWVkYmZiYjQ0IGxlZ2FjeS10cnVuaworNjM0NjIgMTJjYTFlODIwMjgyYmY0OWM1ZDk3ZWVmZDk3NzI3YWExYzE5MDUyMyBweTNrCis2MzQ2MyA0ZWNjZThmZWQ2ZTFkYjY0M2ZhY2NkYWU2OTA4M2I2NzQyZmRjMDcxIGxlZ2FjeS10cnVuaworNjM0NjQgOTVjYjAwOTM2NmRjYjkzMDk1ZTU4NTJiMjkyM2U4YjU5YjQwYjliOSBsZWdhY3ktdHJ1bmsKKzYzNDY1IDhiNjI4Y2EyMThmM2Q2YzM2MjliZWVjYTU5MDc3YzE0M2FkZDk1MTMgbGVnYWN5LXRydW5rCis2MzQ2NiBhMWY3MDQzNWQ4ZTM3M2Y5NjBiOTgyM2VlMmZjNzJiNjNmZTk0YWU2IHB5M2sKKzYzNDY3IGNhOGQ4YzhmMjk2MDMyNTM2ZWVjMDg5OGZkZmYxNTBlOGY3ZjRiZjIgbGVnYWN5LXRydW5rCis2MzQ2OCA4NTMyNmZiNzU1ZTI5OTBhMWRjMGIwYTQ4ZDMyMWFkNjNmZDFkZjQ0IGxlZ2FjeS10cnVuaworNjM0NjkgZTgwODUwMDU1YjkzMTcyYzE0MGJhMjEyYWNjYTNhMWU3Y2IwYzllZiBsZWdhY3ktdHJ1bmsKKzYzNDcwIGI4M2Q3ZDAyOWUwZTE3NWViNDk1MTYyMDQ0ODcyNDkxNzEyMmRlZjEgbGVnYWN5LXRydW5rCis2MzQ3OSA2M2RkZDNlZTRhMmQxZDc4MjhhYWM5MDA1MGM0NzA0OWZjNzQyNGYwIHB5M2sKKzYzNDgwIDg1YmEwODdjMGNjNzRiMmNmNzVlMGRhMDAxMDc4ZmQ4NDBkMTAyODEgbGVnYWN5LXRydW5rCis2MzQ4MSA0NTRkMzhjMWY0N2U5MWE4MDI0ZTZhZmFjZGM0NjM2YzUxYjU1M2Y1IGxlZ2FjeS10cnVuaworNjM0ODIgZWFhYTE5ZTk0OTk4M2M3MTZiYjA1NmEwN2M3NjlhYjdlODM3MjgzOSBweTNrCis2MzQ4MyBkMTdmYWM4OTZhMGJjNmJmZmNmMDllYjE3NGNhOTBmMWNmYmE1MDFhIGxlZ2FjeS10cnVuaworNjM0ODQgNzc1NTcyMTZiYTMyMWExNjE2MThkN2I5NzMzODlmZWFhOTc1ZDcwMSBsZWdhY3ktdHJ1bmsKKzYzNDg1IGQ1ZGQ4YTg1Mjk3MDU2YWVjZDdhZmMxMWUxMWM1ZTNjOThmZjVmOGUgbGVnYWN5LXRydW5rCis2MzQ4NiA1Y2VjNDM2ZDY0YTI4MTJhZjc1MmEwYjlmMjVmNTYxNTkwMGQ4OWM3IGxlZ2FjeS10cnVuaworNjM0ODcgYjUzNjA0ZmFkNTRiMGU2NjI5MDFhN2JhNWI0MTFhNzdhNDBmMWE3MSBsZWdhY3ktdHJ1bmsKKzYzNDg4IGFlMTkxMjAyMzJiNGE4ZTMzOTA1NjY0ZTE1MzJlM2U4YjU4YTgzZDcgbGVnYWN5LXRydW5rCis2MzQ4OSA3ZmM5NmQ3ZWNmMmVkNzFjYzFmMTc2ZDJiOGZmY2JlMWI4NTBmNzRkIGxlZ2FjeS10cnVuaworNjM0OTAgNTFlMzI0YjU3M2IwOTk0NmI3ZjEyYTc1YmZkNWQ1YjcyMDA4NGU3NSBsZWdhY3ktdHJ1bmsKKzYzNDkxIGE4ZjE1ODNiNzhmNmZlZTcxNzZmN2NlMmQwOGYzMGNjMGNiMDg1OTAgbGVnYWN5LXRydW5rCis2MzQ5MiA0YWQ0YmVmOTFlOGU3ZjQ0ODllOTcxZTE2ODI5MDYwYzI0YTk0YmFjIHB5M2sKKzYzNDkzIGY0MTliMmU5NmE5ODdjMWQzNmM3OGI4Nzg5YTI2YzM4Y2VhYmQwNTEgbGVnYWN5LXRydW5rCis2MzQ5NCAxNzNlNWU4YjNlNTllZDJhNGEwYmFhMTBiOTkwNDE1YjA5NjI2NmNlIGxlZ2FjeS10cnVuaworNjM0OTUgMDkxMjUxMWI5ODk3NjJiZDQ5OWRkZTAyNTA3MzljMDcxMDhjYTFhZiBsZWdhY3ktdHJ1bmsKKzYzNDk2IDMyYmQxODcwOWRmZGYwMDRlYWMzOWEwZWEwZmYwYjc2NTM4YzM5MzQgbGVnYWN5LXRydW5rCis2MzQ5NyAxNGViODA0YjNmYzdkZjFjMzIzNmZjY2ZjMTk1M2RiMDBlMDQ0NTMyIGxlZ2FjeS10cnVuaworNjM0OTggNTlhYjJjZjAwMmZhOGI1YWQ2ODc4MmNhMWM1ODdlOWMzMmI2OGNhMiBsZWdhY3ktdHJ1bmsKKzYzNDk5IDUyYTY2MzczNDM3ZDMyMzdjNGY5YjJmMmVhZGNjNmIyYjgyNmY0YjQgbGVnYWN5LXRydW5rCis2MzUwMCAxMmM1NmQyZWI0ZDk3OTk1OTQwMzQwNTdhMTAxNjE1YjZjZTdmYmRiIGxlZ2FjeS10cnVuaworNjM1MDEgZGUxMWJmODQ0OTFkNmNlNDE5NTIxY2RhNmE0MjNmODBiYjIyMGFjZCBsZWdhY3ktdHJ1bmsKKzYzNTA3IDQ2YmQ4Y2ZhNzU0YzU4OWEzNjVmZjgxM2ZkNzEyZWExODIyM2UzYzQgbGVnYWN5LXRydW5rCis2MzUwOCAzMjkxY2U0OTI4YmM0NDYyNmM2ZjIwY2VlM2E2OTI1MThkNTMxMjdjIGxlZ2FjeS10cnVuaworNjM1MTEgMjJkMmZiNzYxYWMxZDM0OTI5OTdjMzNkMjFlYjEzMzVkNThkN2M3MyBsZWdhY3ktdHJ1bmsKKzYzNTEyIDljOTMwYTMyY2ViYjI1NzhlZDMxNDhjMjU1ZDZiN2ViZDBiZjkzMTMgcHkzaworNjM1MTMgNTM4ZTQxMGMwMDg4MzE3ZjBlYzI1ZmYzM2Y1ZWM0NzRlMDFlMGU2ZSBsZWdhY3ktdHJ1bmsKKzYzNTE0IDU1YTUwZDM5MWJhOWE4MzkyN2FlZjA2NmExM2E4MjRjZWJhMGZiZTcgcHkzaworNjM1MTYgMmQ3ZmE4NGM4NzhkYjU5MmJhNTk1ZmZhYzg3ZGZkNzA4YzJjZWU1NiBsZWdhY3ktdHJ1bmsKKzYzNTE3IGQyOTAwNTBlZDhiMjJhMmM2MTcyMDkyZTJhZWMxZTg0M2MyOTAwMWQgdGxlZS1hc3Qtb3B0aW1pemUKKzYzNTE4IDdhYTlhZDY1ODAxNGE0M2JjNDYwNTU0ODY3ODgxZTZjMDRmOTlmMzMgcHkzaworNjM1MTkgOWRiY2EyNzU0YjQwNmMzYzIyZTY2MjJmYWExMDI5ZjdmOWU5MGJkNSBva2tvdG8tc2l6ZW9mCis2MzUyMCAxZDIyNzIzYTU3ODUyNDZkNmYyNzRiYmVmYjkwODc2NjViNmQ1NWE1IG9ra290by1zaXplb2YKKzYzNTIxIDM2MDc3NzY1ZTFjZjQ1OGEwYzcwOTg1NDY2MmUwMTQ4Mzg0Y2Q0YWMgb2trb3RvLXNpemVvZgorNjM1MjIgNzc5OGJjODZhYmEzMmExNWU3NjgyZTg5MjA3ZmUzNjYyNTBiMjAxNSBsZWdhY3ktdHJ1bmsKKzYzNTIzIDhjODFmYWEyMTBjMWRkZWYyMjAwZGYxNGQzZjZlOGQyODEzOTY3YzUgbGVnYWN5LXRydW5rCis2MzUyOCA1YmUyZDgyYWM1YWNkNTk1Nzg3N2Q4NzM3YmU1Y2NkNjJkYjAzMjU0IGxlZ2FjeS10cnVuaworNjM1MjkgY2RkMDAwMDYzMWNjNzg1YWUzODA4MTFmYzQ3YmFjODhlMGE2MzI0ZiBweTNrCis2MzUzMCAyYzM0ZjE5ZTM5MjJhNmFkMTQ4OTdiZmI3MzI4YzRiYTFmMjkyNjQ1IGxlZ2FjeS10cnVuaworNjM1MzEgYzZkYmM0MzIzYTIyZDI1ZTUwNTI5OGRlOTUyYjI1ZTI0YmE2Y2I1NyBsZWdhY3ktdHJ1bmsKKzYzNTM0IDgxYzNhNmY5ZDg1ZjBhM2RjMmE2M2M5NzZhZTg0ZjgwOWQ2ZDRiNjkgbGVnYWN5LXRydW5rCis2MzUzNyA0ZjZlYTVjNTlhYjMxYmE1ZjA1Yjk3OWRiOThjZTQwNmE1NjA4OTMxIGxlZ2FjeS10cnVuaworNjM1MzkgMzhhOTdkY2MyYzljNWE5M2VlOTBkYjQwMDYwY2ZhYzhjMDNhMmQ5NyBva2tvdG8tc2l6ZW9mCis2MzU0MCA3MTE0ZTFlZmUzZjk2NzRlOTJjZTlkMzY0Yjc0YzRmM2ZhOTQyMWZmIGxlZ2FjeS10cnVuaworNjM1NDEgYzUzNGI2OWFiODcxZDVhMTI4NjFiNGIyYWZiZDRhMGU2ZGM5NGU4MSBsZWdhY3ktdHJ1bmsKKzYzNTQyIDJmZmZkZWRiMTBmOGM0ODI1NTVjNTQxM2UyYzk5ZjZmMmU3NTc5Y2MgbGVnYWN5LXRydW5rCis2MzU0MyBlMTg1MjNmODQyZDdkMTM5NTBkZDk5OGEyMTViZTVmYTRmMDllMzBiIGxlZ2FjeS10cnVuaworNjM1NDQgNWEyOTU1MjQxMmZhMmJjNmVlOGEyMDJiNmI4NWIyNzcwNTgxNjcyMCBsZWdhY3ktdHJ1bmsKKzYzNTQ1IGJiMDQzMzJjN2YwMTc4MmJmYWYyOWIzMmRkYjE2MTU2YjdjOWYwOTkgbGVnYWN5LXRydW5rCis2MzU0NiA3MWRlZWU2Yjk0MWU5M2I4OTVjMWU0Y2RiYTY1NzZkOTA4OWZlMTJiIGxlZ2FjeS10cnVuaworNjM1NDcgOWZiYzQxYWJkZDRiZWUwYjhmNGU0NDE2MjQzYzk1ZjRmNDY1M2I0MiBsZWdhY3ktdHJ1bmsKKzYzNTQ4IDM0MmZiZGNjYjdkOTY5ZmZkZjcyZWE5YmMwYmU3MmMxZDViOTk0YzEgcHkzaworNjM1NDkgOTkxNzZiOWQ5MGIzN2ZmNmZkNzFiZDE0ZTAzNWY1ZmE3NTk1M2E1MiBsZWdhY3ktdHJ1bmsKKzYzNTUwIGUyYmVmNDRmNDU3ZGRjMjM3NDQwNjcwMmZhM2I1ZjM4ZmY2NDY3ODUgcHkzaworNjM1NTMgNTk0ODI4ZWEwM2ExMDVhZDQzZWNmNmEyNmEzMDE3YTIzNjQxN2I4OCBsZWdhY3ktdHJ1bmsKKzYzNTYxIGEzMGZlZGU4NzY0M2Q1YmIwMTZkYWVjNDZjYTI3N2ZiODUyZjA2ZjEgcmVsZWFzZTI1LW1haW50Cis2MzU2MiA1ZWM5NTI4YzkzZGVhYTU2ZGY5ODI1NzkyYTNkN2IzNzAxYzQ4NDBiIGxlZ2FjeS10cnVuaworNjM1NjMgNWQxOTI5OWVlMzQ2M2VkN2QzNzk4NDRlZjQyOGU5Y2I3OTE3OWQ1YiBsZWdhY3ktdHJ1bmsKKzYzNTY0IGM1YTg1ZTRmOWU4NjY2YjNkYWJmYTZjN2YzNjAyNzg5OWRhNDMzYjAgbGVnYWN5LXRydW5rCis2MzU2NSBhMjE4ZDVjYjI1OGIyMDgzMTMyODIzYTA5ZGRmOTJkOTU1OGIwYjFkIHB5M2sKKzYzNTY3IDQ2YzZiOTc4OWRkZWNjMzA2ODIwZjI2ZjBhNjkxZTk2YzU1NWEyYjUgbGVnYWN5LXRydW5rCis2MzU2OCAwMzRkNmM5ZTI2NzFmOWU1ZDMzYjM4YzUwYjgzNDBkODA2ZDMwZGM0IGxlZ2FjeS10cnVuaworNjM1NjkgMjdjMGQ3MzUxZWE4ZGZhYzRhZDMyNjdiM2JkNmQxMWM1ZmViZTQ3YSBsZWdhY3ktdHJ1bmsKKzYzNTcwIDcyN2ZkYjkwNjE5MTNlMjYyYjgzN2MyNDcxZjJjYTU2MzQ2YTljMzMgbGVnYWN5LXRydW5rCis2MzU3MiA1NTY4MDA1ZDIyMTczMjI1YjcwNjQxZWVlZDNmMmNjZmMxMmYwYmY3IHB5M2sKKzYzNTc1IDBkMGQ5NjQxZjliZDk3N2E1NTc5NTA1YTcwNWRjODVmYmNlNDkzM2QgbGVnYWN5LXRydW5rCis2MzU3NiA0NWZmNzM3NjcxZjYzMzlkYTljNTVhNGRmZTQ3ZjQ5YmNhZjQ0MjkwIGxlZ2FjeS10cnVuaworNjM1NzcgNmFiYzYzYzYxNTI2NWY5MWUyYTkwNmNhMTYyZmI2NGJhZmE3MDViNiBva2tvdG8tc2l6ZW9mCis2MzU3OCA5MDkxMmIxMGFlNzJmMzhjYWMzZDEyOWRhYjBmY2Y1MmI3NWVhYWJjIG9ra290by1zaXplb2YKKzYzNTc5IGZkMWEyZjQ5OTZlZjE2OTBjNTNmYjM4N2YwYjI1YWMyNjkwMzZjMmQgb2trb3RvLXNpemVvZgorNjM1ODYgMjhjZjk5YzE5M2M3ZDU2ZjIwMTM4ZDQ0NjU1YTdkZWQ1YjdmMjRhMSBsZWdhY3ktdHJ1bmsKKzYzNTg3IDBmNWYzMmJjZGM4ZmNmZGQxNTExNTBlZGZiMmQyYzVmMTU3MTE1NjEgbGVnYWN5LXRydW5rCis2MzU4OCAwNWFhMjFkNmRiZWJlNjI5OWZiZjk2NTRmN2YxOTkwZWM3M2Q2N2I0IGxlZ2FjeS10cnVuaworNjM1ODkgYmExZmE1MTFiNzJkMWZjNGIxNzU1NTAyZTk1NGY3ZjRmNDFmNWU5NSBsZWdhY3ktdHJ1bmsKKzYzNTkzIDIxOGExMDg2NzI4YWI2ODc3MDA3YzQxNGE0Njk0ZTMyYzJhZWZkY2Ygb2trb3RvLXNpemVvZgorNjM1OTQgODdiMTQ0MTg4OWE1MzMyZjE2OTY4Y2ZkYTkzYTE2MTMzYjZjNDZiZSBva2tvdG8tc2l6ZW9mCis2MzU5NSBmNWIwMjkwMjBlMDIzZmZkZmNlNWExNmI2ZDFjMzUyODVhNzE2YzVmIG9ra290by1zaXplb2YKKzYzNTk2IDY4MGJiOWRkNTgwNzQ0ZDFiN2Y0M2VjMmQxZTg5NWI0OTE4YTA4YjAgb2trb3RvLXNpemVvZgorNjM1OTcgMGZlY2QzODY3OTNlNjIwYThkMTFiNTE5OWQwNjhjYmY1MDA1NzFkNSBsZWdhY3ktdHJ1bmsKKzYzNTk4IDMzOWUxNzE4MzE1Y2Q4NjM0ZDc4YjViYzVmYzE5YWQ2NTc3NDI3MDQgbGVnYWN5LXRydW5rCis2MzU5OSAzNzY3YTVhYTk1NjAyNWI4ZjllYjBjMGViMDM3MjE4ZDgyZDEzNjM5IGxlZ2FjeS10cnVuaworNjM2MDAgY2IxYzg5YTQ0ZWRiNjUzNDQyYmNlOTNhMTlkMzY2NTk4MjEwMDQzYyBsZWdhY3ktdHJ1bmsKKzYzNjAxIDcxZmRiY2Q3YmFhOWE2YTc3NTMyYTRlY2NmYmY2ODkzNWMxMDBhZDIgbGVnYWN5LXRydW5rCis2MzYwMiAyNjBiNjJhYWZjYjQ5N2JkOTgwZGMzYzk1MmNiZDlkMjYyM2MxM2EyIHB5M2sKKzYzNjAzIDlhY2IzMTRiOTA3Mjc4ZjA0NjFiYTBlMGNhZTQ1YzUzNDM4NjgyNmUgbGVnYWN5LXRydW5rCis2MzYwNCA3M2IyNDEyN2Y3YjYzZGY5NzcyODM5NDkyZGE1ODJhMjI1MTQ3MzNmIGxlZ2FjeS10cnVuaworNjM2MDUgY2FmM2FjZGZlNWU0MzhkNjBjNjgyNzUyNWRhNTkxNjNjMzJkOWYyNCBsZWdhY3ktdHJ1bmsKKzYzNjA2IGFmZTE0OGE0YWQyN2RmYzUxNmI5NWFmNmFjZDg4MzZjYzU5NmExOGQgbGVnYWN5LXRydW5rCis2MzYwNyBlNTM0ZWUwYTRjZDA0NDFhNzAxY2MzOTE1NjM1YjYwOTMxMDZkNDU1IGxlZ2FjeS10cnVuaworNjM2MDkgODA2NTliOWE0Y2Q3ZDNiNjMxZDE2NmYyODQ2YWZhMTMyMTc3NzcxMyBweTNrCis2MzYxMCAxNTQ2YzFmYjhmODI4MzQ2NmM4Yjk3NWNjMDI1ZjgxMTI0YTFhMzJmIHB5M2sKKzYzNjExIGQxMjU5ZmZiMTAzYzI4Y2U1NWI5MjEzZTdmZDIxMGI4OGM2ZjVlY2EgbGVnYWN5LXRydW5rCis2MzYxNCBkNTU5MWMxNmI5OTdiMWEwM2ZlMTJlMjI5MDY5MGViYzFmMzcyMjdhIGxlZ2FjeS10cnVuaworNjM2MTUgNjBkZjhmNjU4NTc1YWNiZDFmMDI0ODhkODU0NDFmZWRkOWQzNzViYiBva2tvdG8tc2l6ZW9mCis2MzYxNiA4OTU3MDhiMDU2YjdiZDQyMTBkZjZmZWIxNTQxMmM1YWI0NWFhMjllIG9ra290by1zaXplb2YKKzYzNjE3IDk2NzAyNjI1Nzk2MTFmMWY5YTY2YmQzZDNkNjc2NDBiMjk3MDI2MjggbGVnYWN5LXRydW5rCis2MzYxOCAwMDkxMTllYjRkMmQ4MDAxOWU2OGNkNTI1OGQ0MWI3ODA0YTRkNjFlIGxlZ2FjeS10cnVuaworNjM2MTkgZDY4OGYzZjdjOGRmZDJlMGUzYzFlNWI2NDMwMTljZjBlYmY5YTcyNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM2MjAgNzcwZTRlMTMyNzc1YWEwYzVkYWE1NzUxMzc5ZGM3YjI5YWIxYWY3ZiBweTNrCis2MzYyMSA0OTkwNmQ0MzJiNDdiYWIwM2U0MTJkZTg4Y2Y2NWEzZGViYmI1ZDc1IHB5M2sKKzYzNjIyIDU2MGM5NzM5OGI4ZTUzNGVmNmQyZDEyMGViNWM4MWQ3NjBmODAzYjEgcHkzaworNjM2MjQgMzhiMWEwMTdkYmY2MDA3MWNhZmRmYzA0ODUwNDRlYTQ0YmI1ZTBkZCBweTNrCis2MzYyNSA4MTNlMGY4YTc0MWQ1OWJkNWNhN2I2NTA1NzY1NWViOWRkNzQyNTE3IGxlZ2FjeS10cnVuaworNjM2MjYgMjZiMzU5ZTIzN2I1NGQ5YTZkYjgwNTMyZTY0ODM0NGUwODJhNDFmNyByZWxlYXNlMjUtbWFpbnQKKzYzNjMwIDQ2ZjM1MWVlOWQ1ZWQ0MTMwMzRmMmU5ZjM3NTM0ZmY0MWEyODFkY2QgbGVnYWN5LXRydW5rCis2MzYzMSA3ZmUzYTg2NDhjZTI0MmY1YjJkNmNiZjE3MDNiZWU4YzRlYjk0NjdiIHB5M2sKKzYzNjM0IDZlZGM4MGQ0MjAyMTE0N2M1MmFiZjdmOTI1N2JlNDIzMWIyYmIyNTIgbGVnYWN5LXRydW5rCis2MzYzNSA5MzgyNmIzNWZhY2NlNjZiZGZlMWFjZTRhMGI3OWQxY2VjMDI2ZWZmIHB5M2sKKzYzNjM2IDgyNzI1NDM4NDUzYmE5Y2U2N2E2NjdjZmQwNWYxYzQ4YTJiNWU5ZWUgcHkzaworNjM2MzggMzE2NjExZmIxMjY4MmY3MGI0ZDU3NjE3MDA0N2Q4YTk4ZGE2OTgwZCBsZWdhY3ktdHJ1bmsKKzYzNjM5IDUxMTliYzc3YmQ2ZGRlMzMyNTg0NmM5MzFlNzBkYjRiMjYwMDAwNTggcHkzaworNjM2NDAgNDBhMTYzMGVmMmNmODQ2MWExZDE2ZjRhNzk2Y2FiYmRlNzk0MmQyMiBweTNrCis2MzY0MSA3ZGY0YmE0ODQwNThmZGNmMTExOWEyNGEwYTAxN2U3NTQ1MjYxZTU5IHB5M2sKKzYzNjQyIDFjNTFhYmViOTI1ZmU2ODQ1YWMyYmI0YzEwNjg2NjE2NWIzMzBmOGYgcHkzaworNjM2NDQgYWUwMTg2OWY2MmJlOGJlZjVlNjYyYmQ4MjAyZWJlNDI5OWZlYTFkYiBsZWdhY3ktdHJ1bmsKKzYzNjQ1IGQ3YmYyNjY5ZmU2NjA4OGE0NGY4ZjIyZGI2YWY4Zjc4ZWZiZjIxZDcgcHkzaworNjM2NDYgMDhjZTE5MmYyNGIwNDIzNTJiMzljYjA2MDQxNzExNmM2ZGJiNDAyNCBweTNrCis2MzY0NyBmNzYyYTlhYjY5ZGQxOGJlOTQwMmYyODMwZGQzNWE3NWE5YzhlM2Y3IHB5M2sKKzYzNjQ4IGM5ZDcxN2I1YjdhMjQ2YzRhMjZjMzYwMzBmMDIzZTk0MDk5MDAwYzMgcHkzaworNjM2NDkgNjU5NTNhZTk4MTIyNzkzZGY4NzMxMjFiNTY2NTM4NGM2NTZhM2M5YSBsZWdhY3ktdHJ1bmsKKzYzNjUyIDhjMmY1YWFjYzFiYzk4M2MwYzc0MTQ4Njc0MTRkMDkyY2RkZmI4ZjUgcHkzaworNjM2NTUgNzBmOWE1ZGIyNzljMjBmMjNlMThmNTFjYjYwNDdjY2IxYjE0NWFjNSBsZWdhY3ktdHJ1bmsKKzYzNjU2IGYyOGNiYWIxMWFjZDc0Y2IwMTc0ZjgxYmI3OTZkMTkxNjEzMWQ3MWIgcHkzaworNjM2NTggZTI0MjAyNjFkNGEzMDBjNTU4MTFjYTZhZDcwNjU5ZmY0ZmI1NDVjOSBva2tvdG8tc2l6ZW9mCis2MzY1OSA1NDExYjZhMjI2ZTVhYjE5NTI4NzU3MGVhN2FhZDM5NTljMmQ0ZGZjIG9ra290by1zaXplb2YKKzYzNjYwIDBmZDU1M2FkNTNmNjQ2NDE0MTZmOTQ2NDZlYzBmNjY4MDRmNGE0MzEgbGVnYWN5LXRydW5rCis2MzY2MiBhZmJkZTM2MGRkMWE5NWRhZmZjNjQ4YzBkNmJlMWUzZTM5Mjc3Nzg0IHB5M2sKKzYzNjYzIDZkM2UxMzMwYTNhYTg0YWQ3NDY1MzNlYmEyNDMyZTM0ODg5OGJiZjUgcHkzaworNjM2NjUgZTcyNWZmMTgzNDJiMTNmY2FjMGFmODZmYjdiNzFhNzk4OTQ3MDcxMiBsZWdhY3ktdHJ1bmsKKzYzNjY3IDM0NmE5OWRmNTg4OWFiYTRkYzk0ZDViZTQzM2RjOWU4YjVhYzZiZGUgcHkzaworNjM2NjkgMGE0NTUwODE0MzIwN2RkODJhZDYyOTdkNmRjNmFkZDdlODA4ZmZjYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM2NzAgMGI5NzQyNThlMTViODMyZjVhNmIwOWYxNmNiOGI4ZjA3MDYyYWZhZCBsZWdhY3ktdHJ1bmsKKzYzNjcxIGI5ZWFiNzQ5YmE2NjAwNzVmYjMzNWI5OTIxZjFjYzNiOGRjZGFlYmYgcHkzaworNjM2NzIgMDRiZDM2OTBmYjFmZTVhMzgxNTY0ZjY1ZmZkMzE0Nzg2YThmZWM5YiBsZWdhY3ktdHJ1bmsKKzYzNjczIGFiYWZjY2ZlNzUwMWMyMzFjZDg2YmIzZTQ0YjQxMWNiNjYzMjI1NjUgbGVnYWN5LXRydW5rCis2MzY3NCAzMjY0YWFmN2NmMzAzZjA1YmE3MjJmZDIzY2QyMmUyYjE5ZjUxYjVlIHB5M2sKKzYzNjc1IDRmZTE5MmQ0ODk2MDMyZjM1NjA2MDA1Y2RkZjFhMTFjNTNjZDgzZDggbGVnYWN5LXRydW5rCis2MzY3NiA2NTNkMDRmMzA0Mjg3NzFkNmFkYTU0YmJhNjRkZDgyOWNjNTMwYWU2IHB5M2sKKzYzNjc3IGU5MjM5YWQ3YjhjMDcwMjdjZGFiOWRlNTAzOGI0ZmY2MDk4ODZmNzcgbGVnYWN5LXRydW5rCis2MzY3OCA0ZDk4ZWJhZWQyNzgzNmY3NzJhN2NjMjljN2IwNzZjNGVjMWE2Yzg3IGxlZ2FjeS10cnVuaworNjM2NzkgMTk0YmJmMDRiMDE1NDQyNWMxNTNlZDkzNzNiMjk0ZGU3NGU2OWRiZiBsZWdhY3ktdHJ1bmsKKzYzNjgwIDJjY2IzNGQ1MzdkYjY0ZTY1MGVjMWUwM2EzODU2NjI1ZTRiMjljYjQgcHkzaworNjM2ODEgOTZiMzQyNjNlNDQ4ZDRjYjM3ZjVmYWEyZWEyMjkzMTY0MjQ3ZDgwZiBweTNrCis2MzY4MiAyM2FiNTg2YzQyN2EzN2UyMWY2MWRlMjc2ZjAzMmEyZTJkODIwNTg2IHB5M2sKKzYzNjgzIDgxMWE4MDY1MTIzMmU4ZDA4NTRlZjgyNjI4YzY1NmYwYTcwNjJmNTQgcHkzaworNjM2ODQgOGNjM2FkOGJmN2M0ZTY3YWQzOTZlNzEwNzM4NWVmMWUyYWI3NzE0NyBweTNrCis2MzY4NSBlM2UwYzFhNjUyMDQ5ZmU5ZmVjNzVmZmE3NWQxNzAzZDVjMGNiMzZjIGxlZ2FjeS10cnVuaworNjM2ODYgNzA4YTU2MTI3OWNhYjQ2MTFjMDBkMWMzZjQ5NzQwYzMwN2M5ZDAzMCBsZWdhY3ktdHJ1bmsKKzYzNjg3IDlhMGQ0ZGMwN2M4OTU0Y2FiZTQ4NzkzZDYwM2IxOWM1Y2Y0ZTY1MzcgcHkzaworNjM2ODggMzRlNDFmNGU5NjJmMTRjMWRhNTVkNDk0YjUzNDYxNjA5NWIzNzVhZCBsZWdhY3ktdHJ1bmsKKzYzNjg5IDRhYjNlN2FjOGJmNGFhMzY2MDQyMDgxN2RjNjU1NDQyYWQ4NjY4MmYgcHkzaworNjM2OTAgMTdiOGY0NDVkMDQzMWVkMGZjOTE2ZDE4MDI2NWMwNzhkZjJiMGJiZiBsZWdhY3ktdHJ1bmsKKzYzNjkxIDY2MmQxNWFmNTJkZjY2NjU0ZWI1NDZlYWM4ZGJiOGJmYjdlYjViODMgbGVnYWN5LXRydW5rCis2MzY5MiBhOTQ2YmY3NjY2NTQ0MDg2NWQwMmY4ZDQxNGVkMjU3ZTQ3NjI3OThlIHB5M2sKKzYzNjkzIGNlOWNkY2ViYWVmMDI0N2JiOGJhYzhmNmExYTYwOGIxNWUyZjA4ZGQgcHkzaworNjM2OTQgYTZkNjE3NzA4NjY1YWY2N2RlYzkwYTY5MTUxMjcyODgxMmFlNjhiYyBweTNrCis2MzY5NiA3MDEwNGEzZTFkOWQzOTk5MzI0MmM3YWQ4YmI1ZDY3YjNjMDg3OTVkIGxlZ2FjeS10cnVuaworNjM2OTcgYmRhMTU4NTlmNjU4ZjIyMTBmYTU4Y2U5ZGI1OTcxNjEyYWM3MzQ0NyBweTNrCis2MzY5OCBjNTYwNGJlN2FjZGZlMGEzNzc5YjJhZmM1MDRmZDljOGU1ODcxNmU2IGxlZ2FjeS10cnVuaworNjM2OTkgYmE4MDE1ZTIzNDg3MjA1NDQzYzJiNTY0YjFiOGM2ZTUyNmU0M2RhNiBweTNrCis2MzcwMCBlMWZjYzM4ODFjYjY4NzViNGRmNzFjMTMxMGUxNjRjM2RmYWY1YTcxIHB5M2sKKzYzNzAyIGUwMTdlMWZkZTM2OTJlMjllYWIwMDlmNTg0YWQ0NmRhOTAwYjRhNWUgcHkzaworNjM3MDMgMzk3NWVjMmIwZGUyYWYyNDI1NzVhOTkzOTQwOWZjYTM4NmY2ZjY2NiBweTNrCis2MzcwNCBmY2Q0NTZhZTUxNWJhODgxODZkMjE2OWY3MjgwYmU2MWEyY2Q3ZTBmIGxlZ2FjeS10cnVuaworNjM3MDUgMDI3Yzg4N2U5ZGE5MjM2ODdmYTY3YTg0NzllNDY4NDI5MGJiMWZiMiBweTNrCis2MzcwNiBiYzRkZjUxYzAxZDUyNTUxNzFlZDYyZmU5NGNiNTQ4YzJlOGIxNjQ3IHB5M2sKKzYzNzA3IDdjNWI1ZjBlYjMwZDk1MGI4ZjBlNTEyZjliZTA1ZjNiNzdkMDYyOWIgcHkzaworNjM3MDggZGJkOWFkNTJiNGQwZTlmY2YxMDcxOWIyYjVjNGNmZDM3M2EzMzc5MiBweTNrCis2MzcwOSA3OWM3ZTg0OGVhMTdjYzkxYzUyNjVmYzVlZWJkNjNmZTAxNGQ2MGYwIHB5M2sKKzYzNzEwIDZiOTczZDkzNmIwNzk3MTYwY2MxNmI1ZTQ3MTU2OGY1NmVlOGFlYmYgcHkzaworNjM3MTIgYzJhMGE3MDg0NjJlYmEyN2ExYjM1MDMwZWQzZjU0NjBlZWI3ODg0NSBweTNrCis2MzcxMyAwNjE5M2UzZGY0MTZmNWIyNzJjOTg1ZGY1NTM1MDNjZWYxOWZlM2Y3IHB5M2sKKzYzNzE0IDhmZjBiOTI1ZWE2NDg4NTk5NTZkOTliNjFhZGZjYzY5NjRhOTBhOWUgbGVnYWN5LXRydW5rCis2MzcxNSAwNTI1Y2Q1YjI1ODI5MDA2OGY3ZmRjY2RiYmUzNGI3YmNhY2MyY2NmIHB5M2sKKzYzNzE3IDZmMWE2MzJjYjJlNTMyYjgzZjljYjViN2FmOTc4ZmQyY2UxMmI2YzYgcHkzaworNjM3MTggM2M3MGQ2OGJlYjMwOTU3YTk3NjljN2YwYTNmZWZlMGM4MDI5MThmZCBsZWdhY3ktdHJ1bmsKKzYzNzE5IGY2MWI2YzMxMDAxY2I1ZmM2MjBlNTBmYTAzMWIzMDI2MjMwN2VkMjEgbGVnYWN5LXRydW5rCis2MzcyMCA3ODllMGYxNWMzN2I2ZjYyN2FhNTg1OGNjYmZjMzlhMTVjYTUxNDQzIHB5M2sKKzYzNzIxIDJmOTMxOTE2OWZlYzljNjMwZDgzMzhmMTk0YjE1MmU2ZTZjZmM2OWUgbGVnYWN5LXRydW5rCis2MzcyMiA1OTdkOGZkNTY5M2U0Mzk2MTcwYTU1MmFkZDM2YzAwY2FhYjgyNTRhIHB5M2sKKzYzNzI0IDI3M2U4ZGUzNDYwM2RjYTI3ZGVjNDU1MjZjMjMyMmFmMjA1ZmMyYzggbGVnYWN5LXRydW5rCis2MzcyNSBjNGE0NThlY2QyZWQ3ZjAwMmUxZGMwYWRiYzIyMTljZWI2MjA3OTI0IGxlZ2FjeS10cnVuaworNjM3MjYgZjZjODhmMTcyYmJlYzY4YzgyNTY5OGM4YWY2ZjAxNTRhNWZlMzg5MyBsZWdhY3ktdHJ1bmsKKzYzNzI3IGM5MWIzN2RiYmEzZjE4YmRjMzYwNDc2MzI5ODAwNmY5ZmIzMzc1MzYgcHkzaworNjM3MjggYThjYzhlNmYwYzFhNjkwMGI0OWQ2MTVlY2MxNzFkNWY1NjRjMmIwZiBsZWdhY3ktdHJ1bmsKKzYzNzMxIDYxYTU2OTdhNzYyNjUxZmZlZWJkMWI2NDgwMmI3YzI0MDA3NjdlNmIgcHkzaworNjM3MzIgMTQ3NGYyNTEyOGM0NGVjYTgwM2EzZTk1MGJkZDI2MTc4N2I4MTFhNiBsZWdhY3ktdHJ1bmsKKzYzNzM0IGUxYTRiZjkxYjJhZWRjNDBlNGQwYmI1NDMwYTU2NmExYTRjNGRiZTAgbGVnYWN5LXRydW5rCis2MzczNSAyMzM3OTY5NWI0ZGIyODBjNDdkY2JlNTMxMjQ5ZGI2OTQ0YmM1MGUyIHB5M2sKKzYzNzM2IDM0M2FhYWE4MDJlODEwNDJlNWVjOWQ1NzEwYTY1ZWNmYThjOTkzYzQgbGVnYWN5LXRydW5rCis2MzczNyBkYzI3YjNiNDZmMGRmYzIwYzk1ZmE4NjYyNDEzMTYxNjJmZjhlMzdjIHB5M2sKKzYzNzM4IGU0MTA0NTk3YzJhM2VmNzYyZDk2MjFiYjU5OTI0ZDU3NWViZDRkOTAgbGVnYWN5LXRydW5rCis2MzczOSA1MWM2M2I3ZWMxYThiY2VhODQzYzk2NWE3ZDQzYTZiZmZiMTU1YTMyIHB5M2sKKzYzNzQyIDUwMmU3MmYyOGU5ZWM3ZDU1MjQwZTUxZGMzYTIxODU0ZTg5YWNiMzUgbGVnYWN5LXRydW5rCis2Mzc0MyBmOTRhY2FiNzhhYTk5ZDdiZTM1M2RmNDEwYmY2Mjg4NDIzYzY2NzJhIG9ra290by1zaXplb2YKKzYzNzQ0IDNlYWE3MjM2NzEzZmExNzY1ZmZlMzYyZmFjMGQ2MGQ5NWE0ZGFjMzIgbGVnYWN5LXRydW5rCis2Mzc0NSA0YTdmMzQ4MGY0NTRkYjc2N2RlMjQyNGY5MDRjN2IwZTczOThmOWRlIGxlZ2FjeS10cnVuaworNjM3NDYgNGQzZTk1MzczZDllMjQwZjE1ZDYzY2I2YjVhODM2YjRhNDY5ZmE1ZCBva2tvdG8tc2l6ZW9mCis2Mzc0NyA0MzRmMWQ1YWNmZTRjZTg1ZWMzZDhmYzNjMjdlMGRkNDBkNjNjMjQ4IG9ra290by1zaXplb2YKKzYzNzQ4IDg0OTQ2ZjQ1NTNmMTM5OWZmNWE3YmY1ODgwMzJjYTY1MjQ0ZTM1MzMgb2trb3RvLXNpemVvZgorNjM3NDkgNDkzYjMyYzdkMTIxMjI3N2NjZjkwZDEzNTdkMmVlYjBjNDFmN2Q4NyBva2tvdG8tc2l6ZW9mCis2Mzc1MyA0ZWUyOWZmZDI4NTY4NjVhNTRhMWU1NGYyZThhZjEzZWNkMDgxOTZkIHB5M2sKKzYzNzU0IDc3ZjhhZThmYzcwYjRhMDliNTViYzljMzU3NzhkMDA3MDBmOWJkYzYgbGVnYWN5LXRydW5rCis2Mzc1NSA2N2Y0Yjc3NjdhMGFiMTFhYWQzYTY2OTY5NjU0MTU3OTljMTMxYmI3IGxlZ2FjeS10cnVuaworNjM3NTYgYjk3ZGQ1ODg5MjQ2OTlmYjNiNWUyMWRiNTQ4YmNkOTM5MGY0ZjUxOSBweTNrCis2Mzc1NyA5M2ZlOTEzZmFlNTU0N2ExOWMyMTNmNjAyYzcyYmYzMzk3N2E0NzAyIGxlZ2FjeS10cnVuaworNjM3NTggMDkwNjViMDEwYzk1MDhhNzc5YzBjM2YxMGEwMWU4ZDNjYzFhM2YzYyBsZWdhY3ktdHJ1bmsKKzYzNzYwIDdhZTc5ZTk2ZmM0MmY4ZjNlZmEwOWE4MGRjODZhZDI1NWQ5NWFjZmUgbGVnYWN5LXRydW5rCis2Mzc2MSAxMjUyNDdlY2U1NjI1MmE2ODFmNWQyNWIxMmNiMzYzNWMwMzliN2JkIG9ra290by1zaXplb2YKKzYzNzYyIGExY2I1NDMwOWI0ZDRmNDM2MGE4ZGEyYjE1MDk0ZDA1OWRmOWVmZTggcHkzaworNjM3NjMgZGNkNmJmYjBkYjQzOWM5ZDE2N2E3YWE0MjQyZDZlYjVlMTgwZDA1MSBva2tvdG8tc2l6ZW9mCis2Mzc2NCAyM2I5OGY3ZWY0NTQ3Njc4N2IxMzIxMGRmYThlOGI4ZGVhMDJjODliIG9ra290by1zaXplb2YKKzYzNzY1IDc5ZjMxMjdmMWQ3MjcwZGViMDYxMDg0ZWQ3Y2Y4ZDI4OTVhN2FlNDUgb2trb3RvLXNpemVvZgorNjM3NjYgMDcyYmZiYjY1NDg0ODVlNDNhYjNmYjM4OWE4MGMwMzhlMDEzNDE0NiBva2tvdG8tc2l6ZW9mCis2Mzc2NyAxNTY3NDZhNjNhNWM4ZjMzMjdjOGJlY2M3OGZmMjUyNTM3ZTQzY2YzIGxlZ2FjeS10cnVuaworNjM3NjggNzY1MjkzNmZhZDM5ZjhiN2UwZjZiZWQzM2VlMDJlNDczZGZjNTNhMSBweTNrCis2Mzc3NSA1ZTIzYjBmY2M3OGVlNmE0M2RjN2UzMjdlZjNkYTM4ZTkxOGVhNmNhIGxlZ2FjeS10cnVuaworNjM3NzYgMjljOTUzNmMwNGFkNDg3NjllZDk3MzZiYTI3N2E0Mjc0YjYwNmJmYyBsZWdhY3ktdHJ1bmsKKzYzNzc3IGI2Y2JlYzQ5OTc1NjIyZDY5NzI3YmMzOWU0NTUxYTc3M2M1NWIzMzMgcHkzaworNjM3NzkgYjE0YzRiNWJhYjA4ZDM2ZmZiOTI1Mjk2MGZhZDMwZjBjZDQ1MTE0ZCBweTNrCis2Mzc4MSAwMDE1NDU2N2Q1OTM1YjI4NGNhYzI1NzMyYmU4OTg4ZTAzNzMyMTdhIGxlZ2FjeS10cnVuaworNjM3ODIgZWY1MWZjZGEzNDhiZjkyM2RkOTgyZWE3MmJiMjM2NjdjMDYwMTIyMyBsZWdhY3ktdHJ1bmsKKzYzNzgzIDYzYjQ3NDU1NjFjMzQzNmVmNWQ3MjAzYWJkZDM2ZjljNTlmZmM4NjMgb2trb3RvLXNpemVvZgorNjM3ODQgOWU2ZTZiODE3ZjMyMDJlMzBkYmNjODg0OTVhZmE2NjVmZTMxMDQ0YiBsZWdhY3ktdHJ1bmsKKzYzNzg1IGZiMmQ5YjBiNDQ3MDMyYTFmN2RhZjM4MWY1ZWZkOTI5OTc5ZTBkNGMgb2trb3RvLXNpemVvZgorNjM3ODcgZTgxZDAyZDA5Njk3NGYxMzA1ZTUyNDE0MjEzOTgyMDlkNzAxYTg2OSBsZWdhY3ktdHJ1bmsKKzYzNzg4IGUyYzVhZTMwY2ZmZWFjZDQ4YTBlZmQ1NjFkM2QyMTY3NTExZTA2NjcgbGVnYWN5LXRydW5rCis2Mzc5MSBjNTk1ZGEwNTVmZDA5MjIxMmZhYTZjZDU2MzgxMWU2Y2UzNWU2NzAyIGxlZ2FjeS10cnVuaworNjM3OTIgYzkwY2RkODM1OTYwNmU0MzcxN2JhMGQ5ODAxOGYwYjE4MzdkYjM5MyBsZWdhY3ktdHJ1bmsKKzYzNzkzIDM5ODY5ODAzYmZhZWVkZDA2MDQzY2U0NzM4NDk1NmY4MDM5NTA5MWEgcHkzaworNjM3OTUgYWVhM2M1NTQzZDQzZjJiOWQ1MWMzNzg1Njc4M2JkY2QyOWI0ZTk1MCBweTNrCis2Mzc5NiAzNjZhNDM1NTExZGQ1ZDRhYzQwNTk0MjJkMDI0OGVkNDk5YTA4ZDM1IHB5M2sKKzYzNzk4IDFkMjliZmEyNzM2ODFiOTQyYWQ4OGVjODEyZTVhMmY0NGNmNTg0MDUgcHkzaworNjM3OTkgOTIyZTVhMjRjYzgyZTllZmRhNDg4Njc4MzI5NjZmZTdlZTcwNTllYSBsZWdhY3ktdHJ1bmsKKzYzODAwIDIzOTFkYTZjNDJlZjA4YTE2YzcxY2Q2YTZiOGRjMTJjNjQzNjlkNDYgbGVnYWN5LXRydW5rCis2MzgwMSAyNjNmZDZmYmFjYWM1ODQ1ZTk0NjI0NDEzMTFkYjFjMDJiODNiYmI3IHB5M2sKKzYzODAyIDg4MmFhMTQ2NjVlNDdmMWZkODgwNzc4MmQwNjQ0OTE4YTUwMzk1NTIgbGVnYWN5LXRydW5rCis2MzgwMyAwMTlkM2IxMTBhNmVlZTlhNGEzZDY2NTY0OTQ1NTIzMWZhOWY2ZTJlIHB5M2sKKzYzODA0IGNmNWYyNzMxZmM1NjA3MThjMWYzOTFiYjNiOWYxYjIzYzg1YmMyMDMgcHkzaworNjM4MDUgMWUxZGY4OTIwOTVhNzE0MTU0MTA0NWE0NmE2NmU2MGI2NWRiOGFkOCBsZWdhY3ktdHJ1bmsKKzYzODA2IGVhMjczYzhlM2VhYTMwNTQ0MGVkZjFlMTBlZDM2MDRmZmI2YjBjNTcgbGVnYWN5LXRydW5rCis2MzgwNyAzMzg2NWJiNTgzOTYyZjI1MzA1NjlhN2E0M2JmNWRhNzM5N2JhMDA2IGxlZ2FjeS10cnVuaworNjM4MDggZDY2MzljZDk1NzVmZjIwYWVlYzI5ZDBjOGEwZGRlNzcwNjM1YTE4YiBsZWdhY3ktdHJ1bmsKKzYzODA5IDZjZTQ0MzVmMTVhZDRlOGVkY2Y5ZjI4NzY1Y2YyYTA4MDBkYzRhYzcgcHkzaworNjM4MTAgMGU5MTY5MGRhZTJmNjM5NmNhZjQyMThjZTI0MTdjYzVlOTQ0MmQxOSBweTNrCis2MzgxMSBlY2E4ODI3MzExOTRjZGFjNDE1MTNlNzYwOTQzOTljOWYwOGQ2YTM3IHB5M2sKKzYzODE0IDQ3ZWY5YTgwNmNlOTdiZTc2OWE0MzExNTQyNWU4NDg3YjEwNjk3NjYgbGVnYWN5LXRydW5rCis2MzgxNSAwZGEyN2ZkZjAxOTIwNTc0OGZjNjY4MDdjN2U2YjBlYjk1MjA4MDJiIHB5M2sKKzYzODE2IGM0MWMzOTU0NThlYjAyOGMxZjg0NDk3MmIwOGY4NDE0OWE4NzA5MjQgcHkzaworNjM4MTcgYmJhMjlmNDYyYmNjNjkwNDk3M2JkZWQxN2M4MGVjZjhkNGFkZGIzYyBsZWdhY3ktdHJ1bmsKKzYzODE4IDEwNWFkNjEzMjVhYzFjMjJhMGM1MDg4MTQyOTYzZGI5ODI4N2FmOWIgbGVnYWN5LXRydW5rCis2MzgxOSAyMTUxMGNjMGMyZTQyYjdiZjBiNTc3ZjBjMjhmM2Q1Y2NhZWZjYWY5IGxlZ2FjeS10cnVuaworNjM4MjMgMGIyN2NlM2M2YjIxYzljYWY3OGY3NDY1NGUxZDcxYjg1YTk1N2UwZCBsZWdhY3ktdHJ1bmsKKzYzODI0IDNkY2Q3MDAwNDY5NmZkZjg3MzMwNDExOTA1ZDhjMGIxYjBiNjkwZTIgbGVnYWN5LXRydW5rCis2MzgyNSBhMmU3MmVjZGJlMDJiZTg3ZTA4ODdmNDcwNzkzNGU5OGQ5M2JjMDc5IHB5M2sKKzYzODI2IGMwNGFhNGFhYmUxN2ViZDk1YzhjOGRlMzcxMjI2ZWZhNWIxOTE0MjkgcHkzaworNjM4MjcgMmU4NzY5ZDVhNzg2Yjk1NDRjMmZiOTQ4NmQyZDBiZDFlYTliNWYyMSBsZWdhY3ktdHJ1bmsKKzYzODI4IGZmNmNjOWQ0ZmZkMzVhZTUxYWMxZjk2YTAzZDQzYTZkZjFhNTYwMzIgbGVnYWN5LXRydW5rCis2MzgyOSAwM2FmZTY5ODVlNWRmNzgwMjA2YjE5MDU4OGM2NDQ0NmU0ZTIwOTBjIGxlZ2FjeS10cnVuaworNjM4MjkgODJhNDdkNzhkMjc4Yjk3NjM1YjUxM2ViYjg5YThhZjUxZmJlYTM0OCBweTNrCis2MzgzMCBhZjM2ODVmYTljYTkxNDgyNTY1MmE0ZTViZGZkNjhkYWI3NTc3ZDg1IGxlZ2FjeS10cnVuaworNjM4MzEgNTFhODY1MzEyOGUzYWQ1ZjM5ZDU2NjNlYWRkMTU2OWEyYmYzZDU5NCBsZWdhY3ktdHJ1bmsKKzYzODM3IGJlZTI3MWU3NmEzZTUzMTFiNzEyYWU4ZDE3ZDIyY2VkZmUzZTIyYTEgYmVuamFtaW5wLXRlc3RpbmcKKzYzODM4IDA3NWM2YmQyMGYwNzgwNGRiNmZmOWZlOGUzY2E0MmQ4NGY5NDg2M2YgcmVsZWFzZTI1LW1haW50Cis2MzgzOSAwMTU2YzMzNmU2YjNkNTFlYWJmNmJhNTUyNjYzZmNlNzU5ZGQ1NTQ3IGxlZ2FjeS10cnVuaworNjM4NDMgMWJkZjA3NDA5NDAzYjRiNTU3ODI4NzFlNmRhMWFhYWU2ZDM2MmI2MiBweTNrCis2Mzg0NCAyZjVlZGUwMGZhOWVlMTdhYWY0NGNhMTFkNGYxNTQyZjE4MWJkMzEyIHB5M2sKKzYzODQ1IGM0ZTJlZjA5YTJmMDRiMjk3NDE0YzhhNmNmMzQyMTZjZjYwMjM2Y2QgcHkzaworNjM4NDYgMTA2MmI3ZGVjOTViN2E2N2EwZWRjOTg5ZmIxZDk2NGVjMjYxYzZlMSBsZWdhY3ktdHJ1bmsKKzYzODQ3IGQyMzYyZjk5YTQwMzY4Yzg5N2I1MzM0MjZkMjAyYzliODg4MGMwZTAgcHkzaworNjM4NDggNjIyY2FiYmFmMmJjZTk5N2Y1OWJkY2FmMWFlMzJlZGI4ZGMwMTljMSBsZWdhY3ktdHJ1bmsKKzYzODQ5IDJhNjNhYjM1OTVhMTllMjkzMWQzYjRkOWI4MjE0NWRmYjBlYThmMzEgbGVnYWN5LXRydW5rCis2Mzg1MCBlY2YyZWQwOTU4ODE1NTdlNmIyOGE3OTRiMDllMDNkNTQzN2RmMTc5IHB5M2sKKzYzODUxIGIxMzA0NGQ1NTRhZmRiMzEyMDgxZGUxYzQ4OGEwYzllMzI0ODA4ZGIgcHkzaworNjM4NTMgODNhMTAwMDJmZWRiZGE4NDk0MTYwMzI5NDhkM2I1NWE2MDg3NTE1OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTQgNjUzMDI2NDE0Mzc2YzgzYTZjZDhlODM2OGQxMDU1NzkxMmUwNDUyNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjM4NTYgODhiZDA3YzBhODQ3ZDAzNDExNzRlMjVlOGU2ODQ2YTBiZjI0YTczNiBsZWdhY3ktdHJ1bmsKKzYzODU3IGJlYTNjMWY1MmUwNWI4ODc0ZWIwMjAxMTNiMzdkY2E5YTg3N2MyYjggdGxlZS1hc3Qtb3B0aW1pemUKKzYzODU4IGU4Nzk3ZTZlMDdhNzQwNWVjNTA1Mzg1ODY0MGYxY2ZlM2VkZDhlYjIgbGVnYWN5LXRydW5rCis2Mzg1OSBhNjVmMDk1YjI3ZjNjYzQwODU2YzUxNzZhNTQxNWJiZjkwYmJlNjEyIGxlZ2FjeS10cnVuaworNjM4NjAgMzcwMjcyOWEyNDcwNzNhMDUyODgwODViNTQ2OWQ5OTM0NTUzMGY0NCBsZWdhY3ktdHJ1bmsKKzYzODYxIGZjZjlkOTVlZjUwZDc4YjMzMWY0Yzg2M2ExNDEyMjNiZmRhZTdjMjIgbGVnYWN5LXRydW5rCis2Mzg2MiBjZmI1NDkxMDAxZDAyYWU0YjgxNWYzYTRhYmQzNzlmZjUyZWEzY2VlIHB5M2sKKzYzODYzIGU3ZjBmZDgzNThmNWFlZjc0MTc5ODNkYWIzMDVmZDFjYTljYmM0ZWIgbGVnYWN5LXRydW5rCis2Mzg2NCA0ZGVkZWY0YzBkZmQyOTA5MjU5MDUxMzJkNjY2YzBjYjUxNWQ0MTczIHB5M2sKKzYzODY1IGMwZmU1NGEwMjhlMzY1OTIwMTNhZmZjZTg0ZDVmZGViNTNkNWE1NTcgbGVnYWN5LXRydW5rCis2Mzg2NiAzMTQ3NmRiOTlhYzMxZmYyYTg0MmM4ZDA1YTk4OWZkZWRjNzZhZDQ3IHB5M2sKKzYzODY3IDA2ZDc4NTZjYTlmNDZhOGZlYjk0YTJjYTExOTcyYzIzODQ0YmQyMjMgcHkzaworNjM4NjkgODIzYmU0YTI3NWUyYjk5ZTEyZTE4MmNmYWFiMmQ5NDg5MjY2MWVkMyBweTNrCis2Mzg3MSBjMGQ2MTZmMGFkODYzOWQyYzYwOWY4ODhmN2M2ZmYwOWNiYzM1ZTBmIGxlZ2FjeS10cnVuaworNjM4NzIgMzFkMmZmODY5NmJkYzhlYzIwYzkzN2Y0MjJlMThlOGM5ZmZkMDY0YiBweTNrCis2Mzg3MyAwYmYwOGRlMzM5YTBkMjEwM2FmMjE0OWIwYTM0NjE3YzI4OTZhZmFjIGxlZ2FjeS10cnVuaworNjM4NzQgZjE1MDE3N2ZmMWZmNzk0ZDI5ZGQzY2M0NjQxMTAyZWE1ZDZkOTQ1YiBweTNrCis2Mzg3NiBlYmJmODk1MDU2ZWE4YWNmMTFlNTdjNzhjOTU2YTc0NTAwZDM2OTAxIHB5M2sKKzYzODc5IGI2ZGQ0OWVlMDM1YjVkM2Q2YThmOGMwNDBjODE0ZTBhYmQ1YzVmMWQgbGVnYWN5LXRydW5rCis2Mzg4MSA2NDA0NDQ2ZTVhYTM2YjIxMGI3OGZhYjQ5Zjg1ZjdjZTZiMjIyOTI0IHJlbGVhc2UyNS1tYWludAorNjM4ODIgN2VhYWFkMDliNmNkZDRiN2Q5ODZiZmI5ZWYyNThkNzY1YWVmNjkyMyBsZWdhY3ktdHJ1bmsKKzYzODgzIDdkNjYxMTA0NjQwNDliMTAyYTBlZTlmOTYzM2U0YmE4MDk0MjQ4MjYgcmVsZWFzZTI1LW1haW50Cis2Mzg4NyAxMDBlMzI1MDliNTc3NjUzNmNhNmRjYWJmYjIyNjRkMDQ0MjFjZjU3IGxlZ2FjeS10cnVuaworNjM4ODggMDU4MDUzMWMzNzU1NWFkZTgzMWVmNzEyNmE4NzRlMGFhNzAyMmJjOSBsZWdhY3ktdHJ1bmsKKzYzODg5IDViYzdkYTY1MDNiMDVlYjc3NmUxNjE0YTM5ZDYyYjk4ZDk2MWMxOWEgcHkzaworNjM4OTAgNzkzNzNlMDcwZDQ4NjAwOWVmYWQ5MmQxMTg1YzZjZTQ1YWE2OTFhZCBweTNrCis2Mzg5MSBiYjJjNGJkYzNjNjgzYjQ4ZmE5ZTk1YmQ4MjgzZmQ5NDA0OGMyNGJkIHB5M2sKKzYzODkyIDFmMmYxNTc3YWU3ODE5Y2RiMDRmNDExYjkzYWYyNmJmNThhYjVlNTggcHkzaworNjM4OTMgYjZiNTM0YjgyOGIzMzliYmQ2ZWY3YmEwMjI1ZmM4ZWJiOTExMmMwMyBweTNrCis2Mzg5NCA2NWE2MDYwOGFiNWE1OWIwMjg0OTNjZjc1ODg0ZTE5NWU0NWFiOWUwIHRsZWUtYXN0LW9wdGltaXplCis2Mzg5NSBmOWViYWNhY2UzNWQzY2I1N2M2OWVhZmM1ZTA0N2NlYTFiOWFkOTlmIHB5M2sKKzYzODk2IGUwY2EwMjE4ZmYzM2MwMjRiNTFjMjE0YjUwMTZlMmM5Yzk0MDI5NjAgcHkzaworNjM4OTcgNDQ0MDI0N2I4YTQ0ODFkZmU2ZTRmM2YwMDUxMDQ0OGYzZjFkMGU0OSBsZWdhY3ktdHJ1bmsKKzYzODk4IDc3MDg4ZDQxYzc5MDFmY2QwYTAxYjQ0MjU5NWE2ZjFkY2ExMTdmYTggbGVnYWN5LXRydW5rCis2Mzg5OSBlZDQ3MWE4MDA5YTYzMTkxZjRkY2E5YjM1N2Q4MWJkZDM0M2M4NjE5IGxlZ2FjeS10cnVuaworNjM5MTAgNDdmZjI0YmM2MTE2NWQyZjMyNjc4MTk0MzJiMTU5MDQ2OTE5OGI2YyBsZWdhY3ktdHJ1bmsKKzYzOTExIGMyM2U2ZDUzMDBhMGEyNGM0YTUxMTFhMjQ1NDg4OGFhNTEzMTJhODQgcHkzaworNjM5MTIgMzk5OTE5ZTYxZDIzOGMyMjIwYzNjZmY4ZjAwMzMxZTJjMTMwZDYzYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5MTMgZjczZTZmNmQ5YmE2OTdjYTkyN2UzZGNiMzQ5ZGI4ZmIyODgwYTczNyB0bGVlLWFzdC1vcHRpbWl6ZQorNjM5MTQgNTM1M2I1NTBjOTY5MmNlODg3ZDI2MGFkYTlkMDA0NTVjOWNkNWJkYyBsZWdhY3ktdHJ1bmsKKzYzOTE1IGE3NmU0OWIyMTlhMmNhMmM3NTRlNTU0NzU5NjYyOTVlMWRlNjY2NDggcHkzaworNjM5MTYgODZlZDk3OWRlODk4N2ZiMGRjMzE4ZDJlMDk3ZWU0NjkxMDRjYTNjZSByZWxlYXNlMjUtbWFpbnQKKzYzOTE3IDMyNThiYmZjNDU2ZTY3NGMxYTQ4ODRhMDQwOGRjZDc5YTcwNTJmODEgcHkzaworNjM5MTggZTRhMTg2NDM3NDQwNDJiNjMxNTgzY2VlODg2YTE4MmY0Y2E3NzE4NSBweTNrCis2MzkyOSBlZjBjY2NkZThjMjQ1Y2I1NTZmNDIxZjMyMGY5YTY4Y2JiYmY0MmM3IGxlZ2FjeS10cnVuaworNjM5MzAgNTcyZDgxZWNmMDBkNjBlM2Q2ZmQ5ZTVkMjhmNGExZGZmOTAxNzRiMCBva2tvdG8tc2l6ZW9mCis2MzkzMSBmODIxMTY2MDBjMGYxODFiY2I1MzlmYjg1NjQ2OTQ2ZTg5MDM2ZDdiIG9ra290by1zaXplb2YKKzYzOTMyIDJhMWM2OTc4ZGM1NzYxMGUwNWY3NmI5ZjUxZjQ3MjVmNWQyYzE0MGQgbGVnYWN5LXRydW5rCis2MzkzMyAyMWJlYjBkNWUzMjk5NTI0YjFhNDlmMmQ5Njg3NTczYTk2YmVmOWEzIHB5M2sKKzYzOTM0IGQ1N2FhNzUyYTQwMTE4Mjc3ZjYwYTFkMzk2NTI3YTliMjE4ODJlMjAgcHkzaworNjM5MzUgZDBmNzgzYmE3NjY5YTMwYzExYmFlMWYxMzVhYTgwYWJiZWNlMzBkOCBweTNrCis2MzkzNiBhNjU2MTlhZDU5ZjI4NzM4YmM1ZmM2OTg3MTQwYTE0YTBhNzcxZWQ0IHB5M2sKKzYzOTM3IDhmY2M5ZWMxODgyNDYzYWJmZTE5YWM5MWJkZWJiYjk0MGRjODU1YjEgcHkzaworNjM5NDAgNThmNGI2MDc3M2ZlNjA3Y2JlYzhjZmI3NTViZTQ4NGM3NTMyYWQ0MSBweTNrCis2Mzk0MiA4YWQ0ZWJkYmQzNzNhYTczOTM0MjgyYzUyMDM5ZTQ2ZGIxMTA2MzUyIGxlZ2FjeS10cnVuaworNjM5NDMgMTBmYjJkZWMzNjY1YjRiNTg3MzM2MWM0ZWVjNTBjMjEwZjE1MWY1NCBsZWdhY3ktdHJ1bmsKKzYzOTQ1IGIwZDQ3OTliMGRiODQ0ZTdkNzFhNDhkNjU1M2U4ZTk0M2Y0NzA5ZGMgbGVnYWN5LXRydW5rCis2Mzk0NyA4NDgwZjU0ZmNkNmRmNGMzMjRhMmZkNGViMWViMDQyMjE5MWVkYmUxIHB5M2sKKzYzOTQ4IDcxYmVkMjA4ZmU1MDQyNDJkZjczOTgzNGE1ZmM3NDNiNzdkYTU2NjYgbGVnYWN5LXRydW5rCis2Mzk1MCBlOTVjMTViYjk5NTAyYjdjMTc4NGU4ZjZiMjViYmJmMGEyMzgwZGFmIHB5M2sKKzYzOTU1IGMzNGUzNDA1NzcxNGEwMTFhYjk3ODc3NjA3OGI3ZjZhMWZmNTg4NmYgbGVnYWN5LXRydW5rCis2Mzk1NiA0NTRjN2IwYjY4YTg3YmM5NzgxYjMxYTU5YTA3NGRjYTI4ZWU1ZTJhIHRsZWUtYXN0LW9wdGltaXplCis2Mzk1NyBmMDRiMDU5ZTZjOTgyMTE1NWZkYzY3NTg5Mzg0NDQ4YTllYTU4ZjJiIHRsZWUtYXN0LW9wdGltaXplCis2Mzk2MSA3MzUyNTQzY2JhMDNjNDMxZWE3ZDE2NTJkYjBiYjAyNTJlMzAzZTBmIGxlZ2FjeS10cnVuaworNjM5NjIgYmJjZTE4ZDAwZDg3NTI1YWNhZjdiNzQyM2ExMDU4ZGE4MDAyMjAyMiBsZWdhY3ktdHJ1bmsKKzYzOTYzIDFkMGE4Y2FjMTVlZjA0ZTc1NmM2ZTdmYjI0OGQzMzNkOTIzODYwOWMgbGVnYWN5LXRydW5rCis2Mzk2NCA4ZTBiYzFmYzA5NWU1MGZjNDY3MmY5NDY3NmUyMmEyODllMDg1MGM0IHB5M2sKKzYzOTY1IGFkMTNjYjllOTRmMWI3NGY5ZGEwNDQ3ZmJjNmZmZjdlODk0Nzk2ZmMgbGVnYWN5LXRydW5rCis2Mzk2NiBmZDZmMzA2YzA0ZTAwYWYyYTgzYzRhMTI4MmI3YWQxOWQ4NTNmZmM5IHB5M2sKKzYzOTY3IDJhNDk2ZjFlYjlmMTY0Zjg1OGMyNmJkYzU3NzNjYjVkZGI0ODUyNDMgbGVnYWN5LXRydW5rCis2Mzk2OCAwZDdjY2I1MDAwN2NlMmMyMGY4MzdhNGRhYjkwMjI3NjcyNTZjMDdmIHB5M2sKKzYzOTcwIGI1NTMwOWVmNTRjNzczODdmZTNkZjdmOWZjNTJmZDViNjAxNmNhYTggbGVnYWN5LXRydW5rCis2Mzk3MSA5NDVkYTE3MjZjZjFhMDhkZjJhZTRlZjg0MTZkZWJmZjkzOTJjY2IzIGxlZ2FjeS10cnVuaworNjM5NzIgOWUyNzFjYjI1ZTU5Zjg5ZjI5NmZkNzEyMmNjN2I0MTM5Y2RhYTJhMiBsZWdhY3ktdHJ1bmsKKzYzOTczIGY3NDUzYjBiMzM5ZTA1ZTY3MGI1N2EzZTE0NzY5YTYxMDVlOTZhMDMgcHkzaworNjM5NzUgYjM4MmJlYjdiZTM2ZjI1MjZlYTRmNzI0ZTQwOGZkN2ViMDZhMzRkOSBsZWdhY3ktdHJ1bmsKKzYzOTc2IDc4ODBhNDI3NzE1ODJiY2U1Zjc1MTFlNjZmNDg1NmNjYWZjZTY0MzAgbGVnYWN5LXRydW5rCis2Mzk3NyA0ZjVlNmFhZjVhNmE4MGE2NTM5MDk1NWViZTRkYmI4OWYxMTgyNmRiIGxlZ2FjeS10cnVuaworNjM5NzggN2ExZDRlODIzM2Y4OTAzMTI4Mzg0YzU3MTI3NDY1OTRkN2Q5NjZjNSBweTNrCis2Mzk3OSAzMjU1ZjFmMTYwYWRlZGMxMDQxZTllYmFlNGRmNDM1MDQ4NDk2MjJkIHB5M2sKKzYzOTgwIDEzMGNlODZkNjFiNjc5MmU4MmExMGUzMmZhNDdkZGZlODZhYjI0YzYgcHkzaworNjM5ODEgZWJiZjAxMTU1MGNkNmE5NDRmOTAzYzg3YTkyYzBlMzY5MmNjZTE3YiBweTNrCis2Mzk4MiBhZjY4MGZkM2ZmZGM3NjM0ODgxY2ExZWMxMzQ4OTg1NTMwZTczYTJlIGxlZ2FjeS10cnVuaworNjM5ODMgOWVhMTA0ZjFlNWNkMjYzYzU2MTBiZDI5YzI3Yzg0OTljZjNmNWNjNyBweTNrCis2Mzk4NSBjYWE5MGNmNmJlOWEzZDU3ZDQ5ZjlmNzQxNWQxYWRhOWNkYmRkNTdhIHB5M2sKKzYzOTg2IDIyODRmYTg5YWIwOGQ1NTc3MTBmNDcxNTA4NWY4MTI1NTA3MmY1OTAgcHkzaworNjM5ODggMjIxMGY0MmU3Yzg5OGIzZGEyMzAwZTRjYjk2NjA1YTg1MDk0ZDg2ZCBsZWdhY3ktdHJ1bmsKKzYzOTg5IDI0OTU0ZWI4MGI5YjYxN2IzNDI1YjYyM2JlNTU1MmNhMGEyMjk0NzAgbGVnYWN5LXRydW5rCis2Mzk5MSBmMDg4NTA4ZjZkOTlkYWVmMmVjMjcxYmEwN2M3Y2U0MmFiMzA4YzZhIGxlZ2FjeS10cnVuaworNjM5OTQgYTAxOTNiMDhmMGViOGY3NTZmYmFlNzdkNmMxZDg5NzdhNzUyZTQxMyBweTNrCis2Mzk5NyBjOWE1ZjJlYjcyMGNjNTViNTQ5NGEyZDBiYjkyZDAwY2RjOTc4NzAwIGxlZ2FjeS10cnVuaworNjM5OTggYzg5NDM0Y2I5MTRkOGNjOTc0MTAwNDdlY2UwYTkyZmZmMzllZTk1ZSBsZWdhY3ktdHJ1bmsKKzY0MDAyIDNhZWJhYzdmMjcyNTJlNDQzNzcwZWRkNzM0ZjVmMzhhMzAxZmRlMDMgbGVnYWN5LXRydW5rCis2NDAwMyBiZjE0M2JlYjA4ZThlNjIxYTUyZDFhZGM5YWI5YmRjODg4OTU0NjhiIGxlZ2FjeS10cnVuaworNjQwMTIgOWZkYTA5MGMwNDVmNmUzMTQ0YTIzZDMzYTFjYWNiYTNjZThkMmRjNiBsZWdhY3ktdHJ1bmsKKzY0MDE0IGViZjZmNjM5ZTExNzg1ZGI0NWZhYjBjZjlkNzllYjU3MjJlMzNiZWQgbGVnYWN5LXRydW5rCis2NDAxNSA5YmVjZTU3Y2RjZTMxYjgwOTEyZGNmNjRlNTk2ZGU3MmM4YWU5YTlkIGxlZ2FjeS10cnVuaworNjQwMTYgYjMyZDdiODMyOThhOThlNDBiMzE3NzJmZDBiMTQ3NTRlZjM2NjU5OCBsZWdhY3ktdHJ1bmsKKzY0MDE4IDcyMDFjMDE5M2FkZWQ4M2JkZmM3Y2Y2ODNkNjI1ODNlNTVmM2JjMzIgbGVnYWN5LXRydW5rCis2NDAxOSA0MGYyZDVhNGZhZGNjMzNiZTIwOTAyMmIwODFiNDBhMDhiMjI5N2RhIGxlZ2FjeS10cnVuaworNjQwMjAgNjc3NTY0YTI3MDdhYWM3MWJiNDIxYWRiZjIwZTk5MjE3NDczZDA2ZiBweTNrCis2NDAyMSA1ZjY1YzgzM2RjODcwNmEyZDVkZGFlYWVlNmRhYmUzNTY5OGVlYTAxIGxlZ2FjeS10cnVuaworNjQwMjIgNGY3MGE5ZGUyODY1MTk2MDdlMmNjMTVmMGY0NGZiMmIzYzBlZGFmOCBsZWdhY3ktdHJ1bmsKKzY0MDIzIDdkMzYxM2RjM2YxY2NkZTUwY2ZhNjZlYjgzODEzNGRkOTA4NGVmNDggcHkzaworNjQwMjggNzhkM2QzNTk1NTVlYTViYWY1NzMxYzk5ZDg5MWYwY2JlOTZiYzE5ZiBsZWdhY3ktdHJ1bmsKKzY0MDMxIGYzZGY1MWI2MGRjMjYyM2I1NTY1NmJjY2RmNjFlOWQ4Zjg3NWRmYzUgbGVnYWN5LXRydW5rCis2NDAzMiAyMmNmY2ViMzMzOGU2OGFmODQ5MjEyZDE4OTg3MTdiMzk2ZDAxN2I2IHB5M2sKKzY0MDMzIGE3YjE2MjIyNzRiMzc1MmRmMGQ2YmFkNGI2YzA5MTljMTBkZDY5ZjQgcHkzaworNjQwMzQgNWQyNzQyZTM2ODg2ZjAxZGUwMzJhNWUzNTI1MzU0NmZhNWZjZjMwYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwMzUgMWZmZTZhYjg0YTFiOGVkYzI0ODkzOWZjNmQxMWRjYjhmZjZlM2M0MyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwMzYgMWMwMzA5MGIyYTBhMmZiZTYxNGM4ZTM0MmE2OGRkYWY1OWQ4OWYwOSBsZWdhY3ktdHJ1bmsKKzY0MDM3IDI0ZGYzNDM0Y2NmN2JjMjg0NWVlN2QyYzZjZTMyNTNkZTExNTlhY2EgbGVnYWN5LXRydW5rCis2NDAzOCBjOGUyOTU5ZThiMGYxOTJhNGIzMjE4YmZmOWE2MzFiNmI3ZDg0YmE2IHRsZWUtYXN0LW9wdGltaXplCis2NDA0MCAzMWFlZTY3MDE5YTJhZDRiNThjMDliMjgzMDY0MzZiZGI1MzMzMWJlIGxlZ2FjeS10cnVuaworNjQwNDEgMDI2NTEzYmUzOGRhYTc3YmQwYzg4MjRmOTk5N2E1OTE4ZDIxNzNjYSBweTNrCis2NDA0NCBkNTY0NTBkYjYwYTIzZjM0MzRkNmJkMDIwNzRlMWJmMzViYzcwNjRhIGxlZ2FjeS10cnVuaworNjQwNDUgNTMyNTNmMzYwMTRlMDAxZjFjZjEzY2FjMTllYWI3ZGE1YmMwMmUyMiBsZWdhY3ktdHJ1bmsKKzY0MDQ2IDk0ZTM2MzBkYWNhNzMwZmM4NWY0OGY1NzE0MzY5ZWM0ZGQyN2RiZDggcHkzaworNjQwNDcgMjQ2YTgwMjYzN2FkZjdlZDhjNjBiMzA3OWFhZWZjNjc5MmI5N2Y0YiBsZWdhY3ktdHJ1bmsKKzY0MDQ4IDUyMjk0YWY0YjY2M2NhZGE4ZTFmZDk4ODc5ZWRjNDkxOTk1NDZjNzQgbGVnYWN5LXRydW5rCis2NDA0OSA3YWNiN2U3YTVmMjgwOTA1MDRkOTYwMGIyYWVkZWViNjBmNGI1ODk1IHB5M2sKKzY0MDUwIDY0MjhjNGYxYWUwOTdhNDI1YzFiY2U0ZWZjMzJlZTkzMmQzMDcwMGUgbGVnYWN5LXRydW5rCis2NDA1MSBkNGNkNzIyM2FmM2JmMjljM2NhN2NkNWM3NjlhNzMxOWQ0MWYxZWZhIGxlZ2FjeS10cnVuaworNjQwNTIgNzcxZjdhODA0ODc0ZmQ3ZGEwYjNmY2VmODk1YzJmMDI1MzJhYjEzZiBsZWdhY3ktdHJ1bmsKKzY0MDUzIDAyMDU5MjY4YzgyNWZhMzYwZjEyMzVhMjE4NjY5OTM5OGFkMTA3Y2MgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MDU0IDZjZmEyOTdjNjU1NTBjOWMyZjQyMjYzMDU4M2MyY2Q3YzlkOTU4NzMgbGVnYWN5LXRydW5rCis2NDA1NSAxMDU3N2UyNWY3OGY2YzJhMDVhMzIzNGMyNjNiN2ZhYWQ3ODQ5YzUyIGxlZ2FjeS10cnVuaworNjQwNTYgMmQ1ZjFkOTU2ZWY2YmNmNDJjYjdlYTU3NTBhZGY5N2Q5MTg3YjYwZSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNTcgZGY5YjMzN2JhMzExMjQ4OWQyNWYzZmFkOTIyYjdiNDA1ZGFiMWJlZSBsZWdhY3ktdHJ1bmsKKzY0MDU4IDM5MzlmZjg5ODM0Y2Y2MGMzZjJlNTAzMjhkNmUwMzcwODA0NmFmYmIgbGVnYWN5LXRydW5rCis2NDA1OSAzMzQ5MmMyNDFkYWI1Y2E4MTJjOTBmZjRiY2U2YzVjN2Q1ZDVjN2EzIHB5M2sKKzY0MDYwIDEzOWVjZGJmNGYxOTZhMmU3M2JlNjBlM2E4ZDc5YzJiM2FjNjU2ZGUgcHkzaworNjQwNjEgYzFhZWI2Yzk0YWYxMGZiN2E4MTE5MjQ4NWM0MGQ4YmIwMWIzMjg3OSBweTNrCis2NDA2MiA1M2M2MGM3Y2NjZDk4MzRiYTkxYzc0Y2I0ODI2NDliY2Q0NDRlYmRhIGxlZ2FjeS10cnVuaworNjQwNjMgNDkyZjhlMTMwNWNmNjJlMDYxMmRjZDUzMjU5YjZjNTU4OTgxZDJiMCBsZWdhY3ktdHJ1bmsKKzY0MDY0IGVkNTcyZDI2MGZhNzE3MmIzMTY0OTE3YjAxM2U2OTY4MGQ2Mjc1YTAgbGVnYWN5LXRydW5rCis2NDA2NSA4OTU4N2VhMThlZDdlMTg3NGYxMWJhMzMyOWNlZWI2NTdiYjIzNWI0IGxlZ2FjeS10cnVuaworNjQwNjYgMjk2YWIxMDM4YjdmNzg4MDJlYjk3NDExOWQ4YzUyODY2Y2I3NDdhMSBsZWdhY3ktdHJ1bmsKKzY0MDY3IGY0OTg5NTE2YjRkNmEyODY3MTRmMGQ2ZDJmY2MwOGVjYTQ1MzI3NDUgbGVnYWN5LXRydW5rCis2NDA2OCBkYzlmNGQ2Y2QzZjE3MjY4M2VlMTkxYzI4OTM3NGNjNGM1NWJkMDkwIGxlZ2FjeS10cnVuaworNjQwNjkgY2Q1ZDI1ZGQ2MTMxMTJmN2JjOTVjMmRhYWNkMmU0MDgwZDk2YzZkMCBsZWdhY3ktdHJ1bmsKKzY0MDcwIDgxM2I4N2IxNmRjNTA5MDJmMzc4YjhkMTdjNmJkNWNlNGM1NjljYmIgbGVnYWN5LXRydW5rCis2NDA3MSBjMDA1NzZlMjAyZGFkY2ZkZjEzYTQ0OWRkMzM5NDI3ZTY5NWFhNjM3IGxlZ2FjeS10cnVuaworNjQwNzIgNzUyMTJiNDA4ZDdiYWJhMmMyYzJmMWRkYzQ1NWU5YzRhMWVhZDJmYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQwNzMgZDVjYzNjNWNjMTg4ZWMzMjllNTEzMGMzYTI0YjViMzQ5YjFkYzMzZSBweTNrCis2NDA3NCBkZmMzOGU1YWYxMmQyNjUyMDVmNmJmY2VkOWFjNWRhMWJkMDJiZGJmIHRsZWUtYXN0LW9wdGltaXplCis2NDA3NSA0MDg0YTg0ZTRkM2I3NDAwM2FkOGJlOTYzNjgyNTY4MTAyZGFmYWIxIHB5M2sKKzY0MDc2IGVlNzNhNmIyN2MzYWE0YTZiZjM1ZTFhOWJmYjBlODBhYzQzMWUzM2EgcHkzaworNjQwNzcgMDM2N2E5Mzc4OGRiYWExMmZjZmNjOWI4MTkzYzFkZWQxODY3ZWQ5OSBweTNrCis2NDA3OCA5MzBkOTMwOGIzMmFhNTY1YzhmY2NmMTk2NTBmYjQzYmYzMzVhOTc5IHRsZWUtYXN0LW9wdGltaXplCis2NDA3OSAwOWViOGQ2MjYyNmEwMjYzNDk5ZWNjMzZjN2YxZTEzYzYyYWE4YWQzIHB5M2sKKzY0MDgwIGJiZTIwNzdhNDAxYmM0OWIzNjgyMzFiODIwNjY0ZTM5YzdjMzIxNzcgbGVnYWN5LXRydW5rCis2NDA4MSA3ZDgyNGZkMTMxYWQ5OTMzOWJhZWU1OTczM2YyODIxZTY4ZTZkNjY4IHB5M2sKKzY0MDgyIDI2YTcyODNmN2YxNzljNGYxNDdiNTczZGMzNDI0N2YxYjI4OGZjNzcgcHkzaworNjQwODMgOTg4MjdhMjFlMzUyOWViNDU3NmJiODI2MTRhYzcxOGRkMmNmN2IwOCBweTNrCis2NDA4NCA5MWViMjQyMDRlMDhhNmMwZWNlOTFiZjFhYjhmNGNiMGE1YjMxN2EwIHB5M2sKKzY0MDg1IDI5MjViNTY4YWFjY2E2MDhmZjk3OTdmNmMzNjNkOWQ0OThmMWYyZmMgcHkzaworNjQwODYgYWNkYTQzMjUyNzEwMDE3YmE3OGYxNTUyNzc0YzExZjlmMmM4M2ViMiBsZWdhY3ktdHJ1bmsKKzY0MDg3IDJlYWUzMWEzZWY4OTMwMGFiYjEyY2RiMGE2ODVlMDg4OTNkZmJjYmIgcHkzaworNjQwODggYmQ1ODRmMTIxYzRiNTAyMjQ1MDJmYzhlNjNkOTU0YzAyMDk2MmUwNCBweTNrCis2NDA4OSBmZmM2YTJlZjc2ZThhZDcyNGMxNTQ0NmZkNzQxMjg5MDgyMzhkMjM3IGxlZ2FjeS10cnVuaworNjQwOTAgNmRkZTM5MWJlOTdkODhiN2MxYTNjZDNlZTU4MjUzMTgxMWRhOTUyYiBsZWdhY3ktdHJ1bmsKKzY0MDkxIGY1MjliZjJkZjQzNjhjYTg4ZmMyY2M5MmFhNjg5NzA3MmQ3YjcyYTUgcHkzaworNjQwOTIgYWZkM2I4ZWVlMmZiOTg4M2ExY2VmYTc5OTEzYzFhNDZkZjY0YzA3NSBweTNrCis2NDA5MyBlN2E5ZWFiMzYzYWRhYTU3MmI3NTExNzE3OTcwOWUxZTc3ZTdhNjMxIGxlZ2FjeS10cnVuaworNjQwOTQgODI0OGNjZmViNTM0MjliZDYyMjliZmQ2N2U5NzE2MTg4ZjIwMjc4ZCBweTNrCis2NDA5NSBlYzgyN2Y2ZTRjYzZiNjY4ZTgwOTRjNzQ5NGU0M2NkMDlhYmE2MWVmIGxlZ2FjeS10cnVuaworNjQwOTYgMGNhMjQxOGM3NzAyNTdmNWRjNzAwOGNkOTc2ODE4YzIwZmRmOTJmNSBweTNrCis2NDA5NyAyNzE4NDVmMzIzYmU0MzMyZmQ3MWY3MWFiODIxYzNlNDNiNjA4ZTYxIGxlZ2FjeS10cnVuaworNjQwOTggMDEzYmU2MzIwYjgyODZlNDg4YjAzMWQzYzk5ZjJiYjY5MWY4ZjY3MCBsZWdhY3ktdHJ1bmsKKzY0MTAwIDFlYWM4ZmYwMWQ3YjA2MDdlZGNkMjNkMDRlMzZlNTcwN2RlMzAzY2IgbGVnYWN5LXRydW5rCis2NDEwMSA3ZDcwYjU5ZWVhZjJkZDkwZDQ2ZGZjYmI5YWQyZWQyMzk0YTQwNWYwIGxlZ2FjeS10cnVuaworNjQxMDIgZGEzMDdiZWVlYmI5MjAyMDRiNGM3MDM0ODYxNWY0NmI4Yjg2OGYwYyBsZWdhY3ktdHJ1bmsKKzY0MTAzIDJhN2I2ZTk5Y2M1NGNlZWI0OGNlOWM3Y2YzNzU0NmFkYjkxM2ZlYWQgcHkzaworNjQxMDQgNDUxMWVjZDI1NjM0M2M2YjI0MDI4MmMzY2I4NTAzYmQyYWRiZjljZSBsZWdhY3ktdHJ1bmsKKzY0MTA1IGFjZGRiMDBiMWRlNWYwNDUxM2RkYmY2ZjBmZDE1NmRkYTIzZDBiMzkgbGVnYWN5LXRydW5rCis2NDEwNiBlODFkZWNjYjE3YzZiNjY3MmY2NzA5ZDhiYmEzMmU4NjAwZDg1NTUwIHB5M2sKKzY0MTA3IDk0ZjY0ZjExZmRkMDA5OGU0YWQ1YTNkNmY3YTAwNmYyZTVkYjAwYjkgcHkzaworNjQxMDggMjUxMTQzMTUxOWEyMjFiYzE4NjRkODBiMTg0MTlhMTIwYmNkZmM5ZiBweTNrCis2NDEwOSA4OGE0MmRiMzc3N2MyM2I5NDdjZWZiY2ExMjM0ZTgyNmRjY2VhODAxIHB5M2sKKzY0MTEwIGI4MmUwNTQ1ZDExMTU0YTllYzIwODE1MTEyNjE5MmI0YWI2ZWQ2MjcgcHkzaworNjQxMTEgYjgzM2E0MDA5OGMwMGY3OTk3NjY2ODZlNTU1YWUzMGUyNGJlYTU4YyBweTNrCis2NDExMiBiMGVmMDAxODdhN2VjMTY3YjgxNTE4YTBiMGFlM2U5NmNhN2Y2ZWNkIHB5M2sKKzY0MTEzIDI1NDNjNGM3OTU0MzNhNjMxNGQwMjE5ZTJjNGZmYmZlMDZhYWQ1M2YgbGVnYWN5LXRydW5rCis2NDExNCAxYzk2NGVkMzVlZjlmYjI3OWI2Y2MyZGNhMzlhZTBlZWY3Y2MxMjU1IGxlZ2FjeS10cnVuaworNjQxMTUgOGZlNDdiMmM4YmZlMzdhNDA3ZGNkMzJmYzJmMmY3OGMzZjA2NzY4OCBsZWdhY3ktdHJ1bmsKKzY0MTE2IGNiODQ5NGNlMTMzN2M4M2ZiNDM2NThkYTA4MTAxZmZhMmFlNGRmODMgbGVnYWN5LXRydW5rCis2NDExNyAwZjU1NjRmZDA0MGE5NGEzZWU5OTgxZTBjMTg0ZDBhMTFhMjM0Zjc1IGxlZ2FjeS10cnVuaworNjQxMTggMjQ1ZGNhMjY3MTJmNzYzMTIyNjI1YjM5NDIxMGViY2JmOTY5NDQ4MyBsZWdhY3ktdHJ1bmsKKzY0MTE5IDUxN2UxNDE3ZjdlMmNkOWU5OWEwZTgzNjEwMjg5MGQ5ZDQ5OTgyZTggbGVnYWN5LXRydW5rCis2NDEyMCBjZWY5ZjI3YTRjYzMzYTFmZjg1Zjg3MjFlMjhlNTQ4NDA4MDM4ZTQ1IGxlZ2FjeS10cnVuaworNjQxMjEgMjEyYTFmZWU2YmY5M2Y4Yjc0ZjgxZGQzNTY3YmY5NjRlNjI3ZWEyMCBweTNrCis2NDEyMiA1YzZjZGZjZDZlYWU0OWVmYTVjN2ExNTJiZjgyMDVmMGZhYTdmYzUzIHB5M2sKKzY0MTIzIDU3YzlhYmFiNDgzMmM4YjYyNGU3Y2JjYzhmY2ZlNzY2NzkyYzRkM2EgbGVnYWN5LXRydW5rCis2NDEyNCA0ZGQxMDAzNzA4OGMyODJkMTc2YjQ4MTY2ZDhkODg4YjdjMTdiODI2IHB5M2sKKzY0MTI1IGMzNDlmOWZiYzcwNDQ0YTdiMzg1YmJlNDliYzI3ZTA5ZGJjZTQ2YTEgbGVnYWN5LXRydW5rCis2NDEyNiBlMmViNzAyMzUzOTJmYjBkYmMxNDNlZjRjM2FlZTgyNGNkMTg1ZjFmIHB5M2sKKzY0MTI3IGI3NzJiZWUzYTEwZWYwYzA1MjJmMTU3MzAxYTgxY2QwYzgxZDliMDIgcHkzaworNjQxMjggOGRjNDMxMmEyZjc1Nzg1MGE0M2ZlNWZmOThkOTlkODc4NGE5ZGU3YiBsZWdhY3ktdHJ1bmsKKzY0MTI5IDkxMjFjNWNjNGYwNTQxMGZmZDIwYjgyNWU1ZjZiMjJiMzA4M2VlNzIgbGVnYWN5LXRydW5rCis2NDEzMCA3MmI0OTQ2YzQ0M2FlNDUyNjNkZmU5YTM1YmUxZjNjYmJlYWMwNzEyIGxlZ2FjeS10cnVuaworNjQxMzEgZTZiZWE3MmU5NDM3MDNlZWI4NjE1OWFjZTcxMDI3NGM4MmVjYTUzMSBsZWdhY3ktdHJ1bmsKKzY0MTMyIGU5MzU5OGJkN2Y0Mjg5Mjk2ZDAyNDMxNmJjMmM2ZTJjZDJjN2Q5ZjEgbGVnYWN5LXRydW5rCis2NDEzMyA2OTYzNDRlZjhiYzA0ODgxNWEwZGZkM2YyNDA2YmQwZWRjNGFlYjFhIGxlZ2FjeS10cnVuaworNjQxMzQgNmRkM2ViNDExNzBhNThkYWI1NzlkMTAyMTk2MzM2MmUzOGNiMDk3NyBweTNrCis2NDEzNSAyODIwMTA5YzhkNTUyOGY3ZDM3ZmNiYmM0NmVjYjM4MWNkNDE4YTZiIGxlZ2FjeS10cnVuaworNjQxMzYgY2M3MmY0MWZmMDE0MWE0N2FhNmNjOGNkMzc0YzE4ODBjYzE3MzRlZSBweTNrCis2NDEzNyAxNzdmMWFhZTNiYjQ0OTFjMDI2ZTNmZGNlN2Y0MWY4NjZiZDg1NTFjIHB5M2sKKzY0MTM4IGRhNDdlN2UxMzVhZTlmMzE2ODNhNGEyYjM2NTQwYmQ2N2ZiNjY0OTEgcHkzaworNjQxMzkgNmYzYzEzNTdhN2ZiZGU3ZmEyYzZjNzQ1MDk1MzM0NjMzZDk2NzllOSBsZWdhY3ktdHJ1bmsKKzY0MTQyIDY3MzUzMmFhMzc4YjFmOGZlYTYzMGVhYWQzYmExNWFkYmQ2YTIxOGQgbGVnYWN5LXRydW5rCis2NDE0MyA0NDVjZDZlYmEzMzFlOWQ1NmJlODBlZWU1MjBkYWU3MmYyZTZmMWI1IGxlZ2FjeS10cnVuaworNjQxNDQgMDQ1ZjgzYTFiODY0MWMyNGY2ZjQ0ZmY2OTI1YWI1ZjJhMTdkNjQzNSBweTNrCis2NDE0NSBkM2UyYThlN2JmNDU5MTIyZjIxM2QzMWQzZTM4YmYzYmE0N2FlOWExIHB5M2sKKzY0MTQ2IDMyZmVmNjMxZjc4OTM0YzA2YjlkYTEwY2E0ZmQ4NTUxOWE4ZDE4MzUgbGVnYWN5LXRydW5rCis2NDE0NyA3YTViYjU1M2RhMmIxNzJiYjNhY2UwZDRlMTUwYmY3MTZlYWYwNjc0IGxlZ2FjeS10cnVuaworNjQxNDggNGM2YjhiOTM5NzE4MTk3ZTI0ZDhmYmRlYmFlOTM5ODAyZjc1ZWE0OSBweTNrCis2NDE0OSA2YTdlYjBiNzAxOTgwOTlhODNjODBmZWJmMmQxODQ5MjlmYjlmMDBlIHB5M2sKKzY0MTUwIGI0NWE5NTM5MDYyMGFlNjcwNjM5ZGFkNzZkMzdmZThkNDUzY2JkMzMgbGVnYWN5LXRydW5rCis2NDE1MSBmNzUxZGFiNzEzMDI0ZDk0ZWFjYmQyZTZhNmIwYzU1MTYwMjI0ZmI4IHB5M2sKKzY0MTUyIGFmZGQ0OWM0NzU5OWQ4YmFmNTZmYjg1NzFhYzhhZDZjMzE1YjQ0ODMgcHkzaworNjQxNTMgOGIwZTJjOTZjZTgwZTA1Y2NlNzdlMzE5YjkyZDAyN2NmYjE5ZTM5NSBweTNrCis2NDE1NCAxYmZlYTk1NmQwZDcwOTlhZDliNTkzYWI5MTgxZDVlYzgyMDMwNGE3IHB5M2sKKzY0MTU1IGJmYjgyNzRlMzkzOWE5NDliNGMwYTM3OTk3N2MxYmY4YWY1OTc5ZDAgcHkzaworNjQxNTYgN2IzYTAyN2FiNzg1Yjg0NTBhMzFkZmVjYmFiZjIzZDQ1M2NkZWM0YSBweTNrCis2NDE1NyBkMTVkODY4MGEwMGE2MGNkMTlkYjhlNDVhMDM5ZTFlYzBmNDFiMTRhIHB5M2sKKzY0MTU4IGY1MjgxM2Y0MzE4OWQyM2MwODRhMDYzZDdlYjJhYjRjOWIyODZhYzcgcHkzaworNjQxNTkgYTAyMWZmMTE3MThiNmE5NWE4ZTFmMTc5NjlhYzU3NzM4M2ZmNzc2YiBweTNrCis2NDE2MCAzOGQxNzZlYmIyZmFiOTYzZmIzZWI1ZDZmZjEwMzUzMThlNTk5NTcwIHB5M2sKKzY0MTYxIDE4ZWFhMWQ1ZjM5NDI5ODE4ZTg0ZWU4ZmVlYzJmZTk4ZTFmMjYwYWEgcHkzaworNjQxNjIgNWFmMTUwODlhMTAwNjQ4YjY2ZjFkNjQxYjI2ZWFiOWJmYmNlMjUxYSBweTNrCis2NDE2MyA4MDk3NWU2MWY4YzhjZGU1YjUyOTlhYjlhNWRkZGNlMjVjNWQ1OGYxIHB5M2sKKzY0MTY0IGYzMWUzMmEyMDEzY2Y0MGE0OThiNzFhZjQyMzE3OTdmYmQ1ZTA3NjAgcHkzaworNjQxNjUgZjZhZWE4MDhiMzU3OTk5MzNkZTJmMDI1ZDU0ODljMzdhYWJhMTRkMyBsZWdhY3ktdHJ1bmsKKzY0MTY2IDUyNThkNGQ3ZGU3N2I0OTg2NWUwNTNkNzc1ZjE4NDhmYjA0NmMwMWIgcHkzaworNjQxNjcgNWY0YTUxZjYzOWYxZDVmZTczYTk4MDlkZDUxNjk2OTNhZGMwYTc2YiBweTNrCis2NDE2OCA5MWE4ODIwMGZkZjBkZDg5MzQ4Mzg4YjM1ZmRiNTIxZDFiMjQ5NjUyIHB5M2sKKzY0MTY5IDQ0MDE5ZTM3YWM5MjVlNTVlNDg5OWJmMjM1MTgyNDU3NGYxMzUzYjcgbGVnYWN5LXRydW5rCis2NDE3MSA2NTBiM2Y2ODQ1ZjkzMWU4YmMzMWU0ZGU4NzBiOGMxZGVhM2JmODk3IHB5M2sKKzY0MTc2IDVhOWNmZjdmZDA4ZjViNzkxN2Y3MDc2MGViZTBmMzc1ZDFiOTg3MTIgcHkzaworNjQxNzcgNTg3MGViZTI1ZGQwOTFhNWJkNThiYjUxYWQ3ZjM4ZWFlZDE0YmYxNiBweTNrCis2NDE3OSAzYTNlMjMxYjg2NmZiZTJhZmRmMzkwMWQwN2YxNjc4ZTA0MTVmMzVlIHB5M2sKKzY0MTgwIDBhZTUwYWE3ZDk3YzUyNzdlN2JmOGVmODVkOWJiYzhhNWFlYTlhNzggcHkzaworNjQxODQgYjM3NjliNmJhZTBmMGFkNzg3M2I2MDZmMWFjNjM0YmY1M2ZjNTNlYyBweTNrCis2NDE4NSAzZDY4NjllMmM5MmFjOTk2OWFjZThhNjhkMmQzOThjMjNkYjc1ZmRjIGxlZ2FjeS10cnVuaworNjQxODkgZTg2ZjM4NThkZjIwY2E5M2Q2ZWFjMDRiMDMzYzk1N2VhNzUxMWU5ZSBsZWdhY3ktdHJ1bmsKKzY0MTkwIDUwM2ZiM2M1ZTA4MTRjMTA1ZjJlNTk4ZTFhNzE2MTc0YzhhMTA1NjggcHkzaworNjQxOTEgMzAxN2U3OTRiYmI5YWMzNWQ0YThlZmNlNzhkMTkxMThmYWVkMmUxYyBsZWdhY3ktdHJ1bmsKKzY0MTk0IDQxNDE0OTNkZDNhMDU1NmFiYjIzNzBiZjBjY2I2ZjZjNTk5MDNmYjEgbGVnYWN5LXRydW5rCis2NDE5NSA0MTQ4NGQxODM5MGNmYzMwNjJkOTEyMzBhMGVkZDJkZDU4YzAwZDJkIGxlZ2FjeS10cnVuaworNjQxOTYgZjRmZjU4ZTM0NmVlNDkzZWJhNDJjZTM2MGQ4NDI1ODRhYjJkYTRhYyBsZWdhY3ktdHJ1bmsKKzY0MTk3IDk3Y2Q5NTM2N2Q2MGZmYjVkNzQxNjg4ZTgyNmMwNWU5ZDUwNjQ2NzkgbGVnYWN5LXRydW5rCis2NDIwMiBlMjRmMjZjM2NjZTQ2NDhlNzY3MTE4N2I4MzhiNzI4YzE4MWQxMTVmIGxlZ2FjeS10cnVuaworNjQyMDMgZDQwN2Y5NThjMTM3NGVjOWQ2NGY2NDExZmJhZGQyNGFhMzBkMWI2YSBweTNrCis2NDIwNCAxMDllOTc0OGM3ZjQzNTFiZjZmMmFkM2IzM2VjMmVkMTIyZDI1ZGZkIHB5M2sKKzY0MjA1IGZjZGY4MTRjOWIxMTI4YTIxOTNiOTQ3ZDRjZjJhYjZmYWQ1YzliY2IgcHkzaworNjQyMDYgNjU4NWZkMWQ5YWQ3MTIzZDZjYWE4Yzc0NGExZWNjYzRmYjZmMzQwNCBsZWdhY3ktdHJ1bmsKKzY0MjA3IDRiODY4MmVhMzdjMWY0MjQ4ZGQ2YzY5ZjlmZTU4ODU2ZTYxN2I4OGMgcHkzaworNjQyMDggZmQ3ZWIyNzQxMDEyMWM5NWQ4MDI4ZTU2N2FlZDE3OTI1ZDcyZmQyMSBweTNrCis2NDIwOSA1NzI2ZTkxNTdiZjAyZmI1ZDg3ZGQzN2YxYjQ2NDdiYzkzZmM2N2M3IHB5M2sKKzY0MjEwIDkyYjc5YjZkMWEzYjliYmQwZTE4YThhZmU1YWRhZDQ5OGIzZTAyNmEgcHkzaworNjQyMTIgZGI5OWY4NzUyNzEwNmNiNzNiZTZhN2QxNmI2ZjE0MTgzNmUyNjQ5NiBsZWdhY3ktdHJ1bmsKKzY0MjEzIDcxY2I3ZWE0ZjExMDM2NzUyNGZiM2IxYWI4ZGQzZTEzOGYwY2ZhODEgcHkzaworNjQyMTQgZmNmZTEwZjNkYzE0NmNmNTA1YWNlZmJmYmM5YmRmODZlN2M4M2Q3MSBsZWdhY3ktdHJ1bmsKKzY0MjE1IGIxZjRlYTRlYjU1NTYzOTkzNDFjZDZmZmVlNWQ0NmE0NzM5Mjg0MDQgcHkzaworNjQyMTYgOWM3OWVlNDlhMmQ5NTJiOGVhZmY5ODM2ZjAyY2Y5ZWYxZTcwODYxNSBweTNrCis2NDIxNyAzMTk4OGI0MDE1MzU3OTU0NmE1ZTIxM2U3NzdkOTU4YmQwOTMwMDY3IHB5M2sKKzY0MjE4IDEzMDcxYWRkOGY0OGFlNThjYTQ1YmJmMzhiNzcwZDM3NmZiYWMxNzAgcHkzaworNjQyMTkgZTMwYWYzMjY0YTBmNTczYWMxMDI4OWM3OGVjOTAyZTI2ZTE1ZjIxZiBsZWdhY3ktdHJ1bmsKKzY0MjIwIDVlYmNkZWIwY2IyNmM2N2E4NTFkODQzMTM1ZmRhMTZhNTY2MmJkMzggbGVnYWN5LXRydW5rCis2NDIyMSAxNDY0MzQ1YTE5NjgzYjc0YjVhZmRmYWEwMTBlMTFhNjA5ZjJhYWEzIGxlZ2FjeS10cnVuaworNjQyMjIgOGY2MWFlMDExMzBmODg5MzlkYTUzYzQwMjY2ZTI3MWU2ZTAzZjZjYSBweTNrCis2NDIyMyBkNWFhMjViZjkzNjAzZWI0ZTFhODI4MmZhNTU4NTY5ZjY3NzkxMWYyIGxlZ2FjeS10cnVuaworNjQyMjQgMzhkMDQ2N2Y1ZWM3NjlkNGQ0Y2NjODU4OWY3MzdlYmY0NDljNTQxYyBsZWdhY3ktdHJ1bmsKKzY0MjI1IDdhOGVlMDVjNjk3ZjUwZjEyMmRjMTBiMTE0NGY1YjI5M2RlNzI3ZDUgcHkzaworNjQyMjYgYTM1ZGE5NGUwNWZjNWE1OGVlYTdlNmMyODg1MDUzMTM0NGFiYWVlZSBsZWdhY3ktdHJ1bmsKKzY0MjI3IDhjNjA2OGYxNGVlOGNlZjEwMTNlMGUwY2JjMTRkNWJmYjE4ZTAyMDMgcHkzaworNjQyMjggYjVlMDI3NzVmZmZjYjNmYzRiOTlmNTE4MTgwOGY4YzdiMTM0Y2EyNiBweTNrCis2NDIyOSA2NDM0ZGQ3MDRkNjBlYTYwODAwMzgzYWViNjQwYjRlMTJmZTg4MGQ3IGxlZ2FjeS10cnVuaworNjQyMzAgMmRmYWEwNjgzYmU4YjY2M2QwNjAzODQ5NzJiMDJkMDNkYzE2ZjM4NyBsZWdhY3ktdHJ1bmsKKzY0MjMxIDRkYThiN2E4Y2YyZTk0YmJkYzU2NWU5MDI1OGZmYzAxYzlmMmRlZDIgcHkzaworNjQyMzIgYTEwNjg4YWRjZGQ2MjUzNmZiZDk1ZWMzYWNlOWQ5MWQ4ODM1NjBiOCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyMzMgMTY4YzllOTY3NzJjNTc5NzJiZmE3OWJmYjg4Y2Q0NmUyYWFhY2UxMSBsZWdhY3ktdHJ1bmsKKzY0MjM0IDdmZDllOWNiZDcyMTUzYWQ4ZDVlZGY1ODU5YmViMjQ5ODRjN2EyZDMgcHkzaworNjQyMzUgYTMzM2M4NzcwZTMyMTMyNzM5ZGRiNTA0ZmM2MjU2YzhmN2Y1YzQwOSBsZWdhY3ktdHJ1bmsKKzY0MjM5IGZhYTdjYTUyNDI3MTg4NDIyZWQxMTdhZDczNjg3MWNiYzJkMGE3NzUgbGVnYWN5LXRydW5rCis2NDI0MCBjZGJmMTI5MTJkNGI4MmE0NDhlN2Y4NjdmNzM2MmJhNzAxMzgyMTZkIHB5M2sKKzY0MjQzIGY1MjU0OWZiNzRhMjY1MTkxMWE2ZDg5YjEyMTkxZGZlYmE4ZTgyYTUgbGVnYWN5LXRydW5rCis2NDI0NCBiOTA1Y2IyNzkzY2M5YWFmM2FkNWRiNDUzNDMzMjY0ZmQ4NDdiNzJlIGxlZ2FjeS10cnVuaworNjQyNDUgYmI4MTdhNWQ2OGI3YzMwODNkMjBmNzQ5NjRhNzBhYmY2ODlkNWJjOSBweTNrCis2NDI0NiBhNDUwZGEyNDAwODk2ZDI0MzNmMDNlZmNjYzU4ODRkMmI3NzczMDM2IGxlZ2FjeS10cnVuaworNjQyNDcgODcxNDdkYjgyZWIxZTMzMjI2M2YzYTk0ZWNmNWNjZjQ5MjQxNjU3ZCBweTNrCis2NDI0OCBhZjg4NzNkZjAzMjI1ZWMxMGZjZGE2NGY5ZDg4ZWNlYzFhMjYxZDMwIGxlZ2FjeS10cnVuaworNjQyNDkgOWI4ZmY3M2QwMTg4NTkzNzZjOTBmNjUyYjZmZDBiZmJjNjY3ZGIwZCBweTNrCis2NDI1MCBkMDExNjVmYWU5OGU5MDA0ZTNmODM1OWI5M2E2NjdkMTQ4YWM3ZTBhIGxlZ2FjeS10cnVuaworNjQyNTEgNDZlNTg0NjE1MGQ1ZTk1ZjhhMmExMjA0YmZlZGU5OGQ0MmJiMWZiZiBweTNrCis2NDI1MiA2ZDFkYzc2MWFiNGUwODg5ODlkNzU0NGI0ZTFkMmI3OWJkZjA0ZGU5IHB5M2sKKzY0MjUzIDEwNjk1NzgzNzlhMDEyY2QxYzlmOGMyNGE1MzlmMjBjOTQ3ZTNjODAgbGVnYWN5LXRydW5rCis2NDI1NCA0NDZkNWMyOTkwOGFhOTg1MmU4MzRiM2Y5ZjI5NGE2NjFlZThiZmVlIGxlZ2FjeS10cnVuaworNjQyNTUgMmYxNmNlYTIyNGY1Y2M0ODUyNDE5MjIzY2RmMGRiNjc0Y2NkZTFiNCBweTNrCis2NDI1NiBkZmY3NjJhZGY5ZDYxMTIyYTRlYjY2NWMwYTNhZWQ0YTYxZWIxNGQyIHB5M2sKKzY0MjU3IGYzNmYwOTJkYmU5Nzg0NmMyMjZlMTA5ODM2ZTI3YzViYzNlYzFjNWUgbGVnYWN5LXRydW5rCis2NDI1OCBhYmE1OGYyOGUxNjZiM2Y3YWU3Njk1Yjg1NWVlM2VmNDI4Nzc0YjE5IHB5M2sKKzY0MjU5IGYyZTJkNWI5NjRkZTM4YzFkNGEyOTkxMDg1N2VjOGYyNjVkMGM3M2UgcHkzaworNjQyNjAgMzdjZjVhMWU2MzllOTBlZmNjZGRjM2Y3YjFkNmFjYWUyOTVjNTQwYiBsZWdhY3ktdHJ1bmsKKzY0MjYxIDU3YWE4NzNkOTZmY2E4YjkyMDQwNzRmYzhmNDQzNTFjMmEzYTJiZWMgcHkzaworNjQyNjIgMDk1Yjg1ZDdhMDE0MWUzZjdlZmFkOTE1NmRiZmYyOTZiZDE4ODM0NCBsZWdhY3ktdHJ1bmsKKzY0MjYzIGU4ZGY5ZTQ4NzNiNDc4MDEzZmUyOTk3ZDU4NTllY2Q1ZGZkNjJkZTMgcHkzaworNjQyNjQgMTBhOGNlOGRiNmJmYjRmN2M2MTEwMmMzMWM1ZjAyYzdjYzI4ZjU1ZiBweTNrCis2NDI2NSA2ZjBmZTA2NmE4NGJiNTA0ZTRkYjQ3MWViZjVkZDVkOWZjNWVlYTJhIGxlZ2FjeS10cnVuaworNjQyNjYgNjFlNTI4NmQ5MzdjOGFjZWQ2OTFhYTFlMzZmMjMzNjA2NDBlOTgzYSBweTNrCis2NDI2NyBhYTI1MDMxODhiZjM0ZDg5MjhkNzExNTk1YWY0NDFiZDc2NWFmOTljIGxlZ2FjeS10cnVuaworNjQyNjggYzhmOGE1NzhjMDFiOThhZGRjYTIwZGM2ZjE2ZGQzOTUxMWI3ZDI2YyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQyNjkgZTljOTM1Y2Q3ODg4YWViZjkwZTA1NzllMjQ3ODEyMDZmYjYyYzAyYyBsZWdhY3ktdHJ1bmsKKzY0MjcwIDE4OTg2N2FhYmFmYTM3Nzg4M2ZmYjU4NTAzZjc4YjIzNTliZjJkNDEgbGVnYWN5LXRydW5rCis2NDI3MSBiNWJmMTY3OTBlM2M2OWQxZjU1ZDRhZGRhOThkNDkxZjEyYzAxMzczIGxlZ2FjeS10cnVuaworNjQyNzIgNTE2YzE5ZDg1OTFhOWI0NjAzNWQ4NTI1NWExMzJjMGIzZjk0MTAyMyBsZWdhY3ktdHJ1bmsKKzY0MjczIDk2YmZmN2UxMzdmYmQxMjMwZDNkNTg0NDZmMjgyNmQ3NzU4NTg3YzAgcHkzaworNjQyNzQgNGIxZTAxNTA1ZDRkMzdlOTlmMTdlYTJlYzQ0MTBjMGU2NzFmOGI0MiBweTNrCis2NDI3OCA5YWQ2OTEyN2U2YWE2NTRhMzZmNzdiZjQ4YmE2YTA1NGFmODg1NGE2IGxlZ2FjeS10cnVuaworNjQyODAgOTE1NWZmNzhmZDA2NGQ2ODBmNzMwOGYzZGZhYTc5MTE4Y2VhNjMwNSBsZWdhY3ktdHJ1bmsKKzY0MjgxIDdiYTc5MDFkYWQ3ZjhjNmI1YTBhMmNjNGY0MDY5M2MwNmFjZjI2YjUgcHkzaworNjQyODMgMjVmYTNkZDAyMWY1MmFiZTFhMjY5OTYwYzY5ZWQ0ZTM2YjhjMWY0ZiBweTNrCis2NDI4NCBiMzNlODMzNGY4MmY3OWUzMzc3YTA3ODc1NWE2N2U5NGUyNDczOWJlIHB5M2sKKzY0Mjg1IDVjYjUwZTdhOThhMjg1OGE5MTM3NDI4MDEyMTk4ZDUxOGQ5ZTgwYjUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjg2IDk5MWNhYWQ4MWEyZGE2ZjU1ZmMwMTY4MGU1OGU4NzcxMmU1NDdiZGIgbGVnYWN5LXRydW5rCis2NDI4NyA0ZTMwNGFkZWQ3YTg1MGI0YmY2NzFmZjg2Y2MwNzU2NmQwYWM4ODA0IHB5M2sKKzY0Mjg4IDYxM2RhZjdmOGU0ODZiNDcxMTY0MTEyYThiZTdiYjA2NTdiZjY1NWYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkxIDE0MzUwZTc1ZDAyYTRiZTJkYjJlZDFmZTdjZjQ4MTBhNDUzYWEyY2UgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkyIDM4NmE3Mjk4NGFmNWRjZjM1ZDBiMDQyMzBiOWJjOWIxZTBmMzY0MzQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MjkzIGY3N2Y4ZTc5OTcxNDk0ZmJmZmFkYWY0ZDc3Y2EwODY1ZWNkNDVjNTUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjk0IDI2ZTljODcxZDIzZmExMjgwZDEzM2VhOTkzZTZhM2YwOTIzZjI1OWIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0Mjk2IDQwZDYwMWRlMjhkYzA4MTc2Njc1ZDEyMzY2ZjYxYTRhZmU2YjE3OTQgdGxlZS1hc3Qtb3B0aW1pemUKKzY0MzAwIDZmNmZlZDRmMDYyNmI0NzdhZWRiYmY4NGQ4MGMzZGNjNzczZmZlODQgcmVsZWFzZTI1LW1haW50Cis2NDMwMSBhNmQ3YmZjZDc0NTY5MWUwYTRkZGMwMWIyMmE5ZDA5NjNiNTI4MGZlIGxlZ2FjeS10cnVuaworNjQzMDIgZWUyODIzZTFmMjNiNjVmOGJkNDBmZTc4YmZjMDgwZGRiOWMyMTBiOCBweTNrCis2NDMwMyA0NjUwZWVmYjU4MzhlOWM5NjA0YjgxYmY2MDY3OTdiMTNiZmUxYzc3IGxlZ2FjeS10cnVuaworNjQzMDQgMzg0MzI4NjBiM2I0NjhjODY3NmVmMTRkMzU4NDAzNTlkMGE2OTFmZCByZWxlYXNlMjUtbWFpbnQKKzY0MzA5IGI4ZTljYzI4MDIyYzU0ZjQ3MTAwMjg0ZWJhNDA2MjBlMWU2NmIwMzcgbGVnYWN5LXRydW5rCis2NDMxMCA0ZWQxNjU5NDBiZGQwMTkyNTFkYjNhODhjNDcyNTI2MDAxNzExZTY3IHJlbGVhc2UyNS1tYWludAorNjQzMTEgNWM4NWQ1NWM0ZmIyYmRhNDk1ZWMzZDcwNGM4NTIxMTE4YmVmODUzZCBweTNrCis2NDMxMiA1NjZjNzEzN2FhOGRhZWM1NGI4YmVlMWZiMjgzOTU1MDk3ZDlmZDdmIHB5M2sKKzY0MzEzIDJlMTNmZmFiMTk5ZmZiYzJjODk2OGJmNTQ5MjBhNzZkYzM3NzRhZGQgbGVnYWN5LXRydW5rCis2NDMxNCA2MDliMDlhOWZlZWI0MWY3ZjIzMzUyZmZlOThkZTgxZDQyOGFlYWE2IHB5M2sKKzY0MzE2IDg0NTkwYTY0ZjNhMjI2NDMzNjg0MGJlOTBkMjlmYmRkNzg0OGY4NWIgcHkzaworNjQzMTcgZjhhODg5NGRhNzdhNGI3Mjc2NWI4ZmVjOThjMTc1M2M4ZDk0ZjkzNCBsZWdhY3ktdHJ1bmsKKzY0MzE4IGEyOWJmNjlmYjM0NDY0N2M2ZmYwMTczNmY1NzlmODJiMmYwMmE0MjcgcHkzaworNjQzMTkgMzAyYTZkNzYzMzc4NDA2NWUyMzFlZThkYTMwMGZmNzA2MTgyYTk1YyBweTNrCis2NDMyMCBjMDc0MThkZTNjZDMzMjhlYzk1MzU2NmZjYjExMDhkNzU5NWI1ODZhIGxlZ2FjeS10cnVuaworNjQzMjYgYjhjOWEzNTQzMzgxM2IyODM1ODlmNWFlNjk2ODBjYzBjYzQwOWU1ZSBsZWdhY3ktdHJ1bmsKKzY0MzI4IDk4ZDAxMmE4ZTQ0NWYwOGJjMjBkMThiZGQ4ODUzZjRiM2RjZTdiNTUgbGVnYWN5LXRydW5rCis2NDMzOCA4ZTg1YzQ2Y2Y2NzNjMjY3ZWFmZjJkMzEwOTA5NDVhNWVmMjc2Zjk1IGxlZ2FjeS10cnVuaworNjQzMzkgMjhhYmMyMDJjNzcxMDU5NzEyZTk3OWQyMjliZDg4NmQ5ZGE1Mzc3YyBsZWdhY3ktdHJ1bmsKKzY0MzQwIDBiMWMwMWVlYzc4ODUyOWZkZjI2MDM0ZTY4OTY0ODA3MDFkMDA0M2EgcHkzaworNjQzNDEgMDM2MzliMDljMzc2MDMyOGFhNmYxMWM0OTAxNGQ5MTlkZTg4MmNmMyBweTNrCis2NDM0MiA0MGE3NTkxM2YwNGE2NGI0ZmY4MWQwNGEyNmI2ZjdmM2Q1N2QxYTM5IGxlZ2FjeS10cnVuaworNjQzNDMgZjY0OTk2NzYwOTg0NzI4Mzk3ZTc2YjM4NWFiYTZmNDE4ZTE0YmNhMSBweTNrCis2NDM0NCA2ZjI3ZDUyZThkOTU2ZTMyMzc5NTY4NmFmYTE4OWZiMThiMTk4ZGQyIHB5M2sKKzY0MzQ1IDY4ZDg3YmMwNmZhMzcwZDI1YzAwZTk4ZTUwMGVkNWU5MmJiYzI1MTkgcHkzay11cmxsaWIKKzY0MzQ2IDg3MDAxMTg5OTk1YzFhZTA4YWQ2M2E2MTUwOTEzYmY0MjM5YmE0ZjggcHkzay11cmxsaWIKKzY0MzQ4IGY2NzI2ZjMyZWY3MDQ3N2JmM2EzOGRjYzg2MTdiY2E0NTQxOWY1YjcgcHkzaworNjQzNDkgY2EwNzQyMzJiODc5NzY3YTI4MWM3NmQ4YTIxZjNjMTRmMDc1MzA1MCBsZWdhY3ktdHJ1bmsKKzY0MzUxIGUzOWM4MTBhN2ViMjc3OTE4MDA1N2NhZmE5ZGQ5ODY4OTkyZThjYjAgcHkzaworNjQzNTIgZWY4ODNmYjRjMDc2ZGQ2Zjg3NWJjNTljOGE0ZWMyZWE3MTM0ZTgzYiBweTNrCis2NDM1MyA3MGQ3MmE3NWNjZjFlNmYwNmQ0MjAxZDczZDM5Zjg3Y2Y1ZjRhNzk5IHB5M2sKKzY0MzU0IDVmOTQzNTMxN2RlMTcwNTUyOTI5OWI0ZGIzMTg5NmU4OTdjN2Q3MDUgcHkzaworNjQzNTUgYTA1MjNjN2MxYzRmNzg0NWViNjU2M2U1ZWM1NDc5ZGQ4NTYwZGVlMCBweTNrCis2NDM1NiBhMTc0MTYxN2YwNmY0ZDU0Y2YxZjBjMzQ2YTVmMjNjMGRjM2JjODhhIGxlZ2FjeS10cnVuaworNjQzNTcgZGY1YmIwYTY1OTRiYjdiMTE3OTk2ZmYzNDU4NGY3NTBjNzhlMTY2ZCBweTNrCis2NDM1OCBhNGI4ZGJlMWI2MzM2ZjFiY2JhNzUwNzNjMzE0ZWM1NjEyNzE5MzQ4IGxlZ2FjeS10cnVuaworNjQzNTkgMTg3YTgxZGRhZjJiZGY4Y2VhMjVkOWExNmUxNjY0NWNiNmI1OTlkMCBweTNrCis2NDM2MCAwM2E5YTlkMzA4MWVkYWI2ODFmNTE4NzI2OTdhNTA1MjQ2ZTM2ZTAzIGxlZ2FjeS10cnVuaworNjQzNjEgYTQwOGEwNWQwZTI1MWI4YjYwOTY2N2Q2Yzk5NzU5MjJlN2Q3ODQxZSBsZWdhY3ktdHJ1bmsKKzY0MzYyIGQ1MmE3M2Q4ZDIwZjAzMmI5M2Q3NTg2ZjhlMGJkMGQwMjJlYzc5NWQgcHkzaworNjQzNjMgNjZjOGY3NmNhYzQ0NmQxYTQzZjdjNGQxNzgwOTMxMTMxZDRmMjQ2MyBweTNrLXVybGxpYgorNjQzNjQgYWM4NTRjZGUzMTM1ZTU3ZWMxZjRmYzk1YWU1ZDc0NDk1MGYzYzUzMSBweTNrCis2NDM2NSA1NjRjMjlhMGZhYjFhMDRmYTk0MmQyM2FjYzk0ZTRiMmJmZGZlZDg1IGxlZ2FjeS10cnVuaworNjQzNjYgMGIxNDlmYzQwMTg2ODZmYTI1NzRmMmFiZGVhNDViMGRjZWM2NDg5NCBweTNrLXVybGxpYgorNjQzNjcgMjhmNTY3YTQxM2Y0MTRiY2MwZTI0ZDBmOGU1OGJiY2Y3NDFmMGVlMyBweTNrLXVybGxpYgorNjQzNzAgYWIxMmUzYWQyZTY2NWYyZTJjNWFhZTliYjMxNjNkZjY1NDY0ZDFkYyBsZWdhY3ktdHJ1bmsKKzY0MzcxIGI0ZDgyMzQ4MzQyMWViNDA0YTcwNjVjOTI4MDkwNTQxZmYwZDQ0NDcgbGVnYWN5LXRydW5rCis2NDM3MiBhNjUwM2FlM2UxOWMxZmZjZjcxZTlkNWI5MjgzMjc1YmZhMTljMGIwIHB5M2sKKzY0Mzc1IDZiN2RkYzBmZGE5Mzc4Mjk1Zjc3ZjdiZTA4M2NkZGQ2MjFiNTkwMmMgbGVnYWN5LXRydW5rCis2NDM3NiA1NzAyZWRlNDIyN2E0MWJmZWNjMzI1MWJlNTZiZmRiZTY3YTRjNTEzIHB5M2sKKzY0Mzc3IDk1NDA1OTc5MTBiOTY5NWMxZmM2OWRmZjM3OTBkZDUwYzQwNTY4NGEgcHkzay11cmxsaWIKKzY0Mzc4IDRkYTc3MTU4OGJhMzEwMDY4OGQ1ZWE2MTY4MTc5NGMyNDJkNDgyYzEgbGVnYWN5LXRydW5rCis2NDM3OSAxNTg4ZTJmYTNlN2U3NGIyYmEyZjEyMzRiYzBiOTdjMTQwMzhkZTE2IHB5M2sKKzY0Mzg0IDZhZmRkNmZlNTUxMmRmNGRhMTUwNGMxM2IwMzI2YjE0M2JiMGMzNzkgcHkzay11cmxsaWIKKzY0Mzg1IDVhNDE2YTY0MTdkMzg5Y2NiZTI0Njg3ODU1YmY5N2JlZWNiM2QwNDEgcHkzaworNjQzODYgNzQ0ZjljODA5ZjMwM2Y0MDcxNWJiZjJkYWRiNmFlNjg1OTM0ZmFkYiBsZWdhY3ktdHJ1bmsKKzY0Mzg3IDAzMjI4MDhjMjBmZWU2ODU2MzA3ZDAzZjFjMjhjNWM4ZTFiMzBiZjUgbGVnYWN5LXRydW5rCis2NDM4OSA2OTA0MDA5MmI4ZjgzMTc2Yzk5M2U5MzI4MWQ5ZDBlN2U3MDIxOTE4IHB5M2sKKzY0MzkwIDJjMTA2ODMyOGI1YmE0NzZiMTcyODkxMzk5ODZmZjI2OWU4ZmE2NzQgcHkzaworNjQzOTEgMDdmOTQ3MjYwMTc4M2UxMmMyOGM4NzhhZjhjNDMwODRhNmRlNzM3NyBweTNrCis2NDM5MiBlYTE5NGM5YTZjMmY5ZGU0NDNhMTViZjI2OTIyMjk0ZGFlMzkwMGM3IGxlZ2FjeS10cnVuaworNjQzOTMgMmRkZDg2ZTM3MDBjMjBlZGNhZGIyODUyNmIzN2VlY2JlZGU5MzNlMSBweTNrCis2NDM5NCA1YmQ0M2ViOWU1MjBjMjc2Mjc5YzNmNzZhODEyODhhOTFlNWE1OWQwIHB5M2sKKzY0Mzk1IGEzMzVjNGQ2NDNiMWNmZTE0MTk3YTllZjE5NWM5YjI4MDRmNjA4ZmMgcHkzaworNjQzOTYgYjFlZDJiMDA1ZTNkYmVhZGRmNTQ2NGM1MDU1MjFjM2ZhNTk0MGMzMiBweTNrCis2NDM5NyAwNzMwMjI0ZWNmNWZlZTFiMDdjYTgzZGQ4YWIwMjY3YTE5MjU1MDlkIHB5M2sKKzY0Mzk4IDJmMmYzMmFmOGM0ZWU4ZjY1OThmNjMyZGM4MzcwMWEyMDcyNmQxMGEgbGVnYWN5LXRydW5rCis2NDM5OSAyNTgxZWUxZjI2ZjllNGI4ZGQzNjcyOWFkYmFjNzFmYjFiYTA2ZmI0IGxlZ2FjeS10cnVuaworNjQ0MDAgZWNmZjFhMWEwN2I1NTVmODVlODYxODc2ZjY2ZjJiNWQ1NGU5MzNlMSBsZWdhY3ktdHJ1bmsKKzY0NDA1IGIzNGJjNjM4YjhhN2M3OGIxOTBlM2Q5Zjg2YTU2OTM4MDcyMzEwY2MgcHkzaworNjQ0MDYgYmUwN2YzNzlkODdhZGYwZGQ2NGU2OGM2ZTY5ZjdkMDdjNWM5NmRmZSBsZWdhY3ktdHJ1bmsKKzY0NDA3IGE0YmU0YjE3NDc3MTFkZTE0ZTFiOWNhNTQ3ZWJkYjNjZDZiZTE4NGYgbGVnYWN5LXRydW5rCis2NDQwOCBlMTA3MDYyYWE5Y2Q3Nzg2ODdmN2FhMzk1YzgxZjViMzJhZTU4OWMzIGxlZ2FjeS10cnVuaworNjQ0MDkgOWFmMGQ2NWJjM2IyNzg0NjA2MDMzZTBmZjc1ZWUyYjU2MzY0Y2FlMiBsZWdhY3ktdHJ1bmsKKzY0NDExIDI3Yzc4Y2JmYTdjNjgxYjhhMzdiMjIzMTBkNTIxOGNlZDllMzU3YmQgcHkzaworNjQ0MTIgMGFlZWIyYjQ4MzQxYzc3Mjg0ZGQwZTJjNThlNTFlNDFhMWI5NzgzMyBsZWdhY3ktdHJ1bmsKKzY0NDEzIGRiNjJjNDQ4YTM0OWUyZjE1YzRjMmNjZWU4OTY5MWFmMjY3ODU5ZGEgbGVnYWN5LXRydW5rCis2NDQxNCBjYjg3MWY3MzZiZTAyNGE3NWY0YWU3OTM1YjhhNDhlNjRjNmM5MmU5IHB5M2sKKzY0NDE1IDJiZjQxMTJjZDY4MTVjNzAzZTM2NTUyNWU5YThhYjQzODk3Yzg5NjIgcHkzaworNjQ0MTYgYjQxOGRkMzlmNzk4YmVmODQ3MWZjMTljOGNkMDBkYzI3MTVmZGUzZSBsZWdhY3ktdHJ1bmsKKzY0NDE3IDU4ZjQzYWNlMjk1ZTVjMzk4MTk3YTMyZDNmMGQxYzc4OWQxMmM5YmMgbGVnYWN5LXRydW5rCis2NDQxOCA2YjRiMjkyYzNhMmRhOGRhYmQ3NjIxMWM3YTlkNjE0MWUxZDA3NGZlIHB5M2sKKzY0NDE5IDI1ZDZiMmQwZWU0MmVlOGE3ZjVhODViM2MwM2M1OTkzMTEyNDVkNmYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NDIwIDA3ZGNmMGVhNzg4MGY0MGY5MTE5NzM3NGZkOTUyZDI1NmJkNzU0ODEgbGVnYWN5LXRydW5rCis2NDQyMSBjMzkyNjNlOTRjMzMwNzRkNGI2ZmU1YWM0ZGVmNGUwNGI2MWRmMTBjIGxlZ2FjeS10cnVuaworNjQ0MjIgN2I5NmZhZTQwMGQ2MTg5ZTllMDY1MjUwNjVmYTFiNzU4OWVlZjVlZSBsZWdhY3ktdHJ1bmsKKzY0NDIzIDFiZmQ1ZTcxMmI5NGNhMTVlZGI5NDM2N2MwMmE0MzhmY2Q4MDg2MGMgcHkzaworNjQ0MjQgZWRjNzAxZDAwYjYyMjQxMjAyZDUyNWRlNzE1ODk5NTY2NjIyMWM3MSBsZWdhY3ktdHJ1bmsKKzY0NDI1IDcxN2U4YWVlNGE5ZDA3ZDdjZGE5ZjU4M2YzYTczODhjZWNmOWRjZDIgbGVnYWN5LXRydW5rCis2NDQyNiBkMWE0NjM1MGIwNDc2YzRmY2MzMzljMDQzMjA0ZDI5ODczMGY2MjRlIGxlZ2FjeS10cnVuaworNjQ0MjcgYmZkYTM5OGM5MTdlNWRhMjUwYTljNjA5Y2M2ODhmMmRjODk2YWZiOSBsZWdhY3ktdHJ1bmsKKzY0NDI4IGE3MTg2ZmVlNzU5NmI2NjNmNTM0NWM0YTRiMDk2NTZlMWU2OTdjNGQgbGVnYWN5LXRydW5rCis2NDQyOSA2MjllZWRjYmIyNjU4NTM1Mjg0NzliNDkwODI5YzFmYTA5Y2M5OGNmIGxlZ2FjeS10cnVuaworNjQ0MzEgZDhkYzZiMzdmZDc4OWVmNGY5Zjg5NTQ4MTljYmU3NWFkNjVmNjNhYyBsZWdhY3ktdHJ1bmsKKzY0NDMyIDVlYmVmZjgwNDI1YzU0OTliNGMzMmFjYjI5MmU2NWZjZWY5NzU5NmMgcHkzaworNjQ0MzMgNGUxY2FkYjc4NzFlZWNlMTQzOGE3ZTY2YWMwOTFhYzI3NmM2ZTE2NCBweTNrCis2NDQzNCBhMTA3YmMyZDhmMzQyN2Q5OTc2YjY5NGIwYzU1YjcwNjgzYzI1MWYzIGxlZ2FjeS10cnVuaworNjQ0MzUgYjMyMTAxYzE5YmY4NDg1NjMyMGNkZDM4MDEwZjM2YjczMTJlZmJhZSBsZWdhY3ktdHJ1bmsKKzY0NDM2IDRmZmE5YmJhN2M1ZjAwYjhjYWI3ZDQ4ZDFiZTlhMjVjYTkwZGI4NGIgbGVnYWN5LXRydW5rCis2NDQzNyAyNDUyMGU4MjQxMDcyZTc0MDE3OTFhNWQ2NTlmYjIyNmMwMDA0OGQwIGxlZ2FjeS10cnVuaworNjQ0MzggNDI2N2FkYWNkZDUyNzhhZDk3YWM1ODVmZjYxNGQxZTYzMDkyZjg3MyBsZWdhY3ktdHJ1bmsKKzY0NDM5IGEwNjdkYzA0MzhkNTMyYzU1MjM2ZjM0YTkwZWNmZTVkNTZmYTAwNDcgbGVnYWN5LXRydW5rCis2NDQ0MCA3NWI2YjI3MzdlYTcxOTM2OGI3ZjZhOGE2OGNlZmIzYTcyY2NmOGI3IGxlZ2FjeS10cnVuaworNjQ0NDEgYWM2ZWFiMjQ3M2M1YjZmMWUzMDIyZjQ0MmMzYWNjNzQ2NjU5OTM5MyBsZWdhY3ktdHJ1bmsKKzY0NDQyIDE2YjdjNTAwYjc1M2EzYzk2ZTYwNDhkMzM2M2U4OTQwMGI0ODZkMjUgbGVnYWN5LXRydW5rCis2NDQ0MyA5YzY3ZDNkY2U5MjVkOTRmZjU5NTdjMzM2MGYwNTc5NzA2OTUwY2Q0IGxlZ2FjeS10cnVuaworNjQ0NDQgYWVhZDBjNzgxY2JlZjYxMjZhMTFmOTUwZWQxMjI5MTljMGQ2ZmYzYyBweTNrCis2NDQ0NSA1NTZlNGY2ZWM5YTA4Y2FjZWFiNzhkNDY1ZWFlMTUzNjY2YTY3Y2M1IGxlZ2FjeS10cnVuaworNjQ0NDYgMDE2MTY2YjdiOTc2ZTMzZjBiYzY0MGE4YTQ3MmRjMzFmZDRhNjdkOCBsZWdhY3ktdHJ1bmsKKzY0NDQ3IDVlOGE3ZjlkOTUyMzkzMjFmODJlOTcyYmMxNmI2NmE1NDgyOGU4NTMgbGVnYWN5LXRydW5rCis2NDQ0OCA5NjgxNTI3MTk2M2Q1Y2FiMmFjM2MwY2I2NzUwOWRjMTE1MWY2MTUyIGxlZ2FjeS10cnVuaworNjQ0NDkgZTE3YjgxYTk1YWVkMmU4YTk4NTgyMzUwZjEzNDE1YTEyZmE0OGYyYiBweTNrCis2NDQ1MCA3MGUxYTM4Yzk4MDViNmE2YzE3YTQ5MmZjY2NlNGUyZjcyZWNmOTQ0IGxlZ2FjeS10cnVuaworNjQ0NTEgYzU3ZDFlOTU0ZDkzNDU3YzMxMzZkYWJmNWYxNmQ0YzI0ZjViMzgwOCBweTNrCis2NDQ1MiA5NmFkZjk2ZDg2MWE0NGQxYjI5ZTkxOWFmODBmZjA0MTk1YTM3M2M0IGxlZ2FjeS10cnVuaworNjQ0NTMgN2NkYmUwMWE0NTc2NGIyZTM4NDNiNTE4ODgzZjI2MjAwZTA0NmI3YSBsZWdhY3ktdHJ1bmsKKzY0NDU0IGFjMTU4Y2E2ODZjYjUxOWEzODAxMjJiOTI5YTRjYWZhM2UzOWFhZTYgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NDU1IDhiNmMyODU2ZGJlNTEwMzdjMmZkNmVhMzVjMDQzY2FiOGYxMmM1MTUgbGVnYWN5LXRydW5rCis2NDQ1NiBlYjlmYWUyZmEzZjk2NjQyZWJiZjVhYzcxY2E1ZDcyNmI5MThiM2JhIGxlZ2FjeS10cnVuaworNjQ0NjEgNjVjMjM2NjNkMGJkNjk4MTMyZWM3OWYwMGI1MTRmMjM0NTExZTg4OCBsZWdhY3ktdHJ1bmsKKzY0NDYyIGRhNjg5M2UyMDA0ZjRjYTcwOTFkOTljNDNjY2Q3NGRkNjg1NGNkNTggbGVnYWN5LXRydW5rCis2NDQ2MyA2OGNmM2NiYjIxZDI1OGQ4ZTAyMjE2ZDRjY2UzYzdiOGQ2OWQ4ZTBkIHJlbGVhc2UyNS1tYWludAorNjQ0NjQgN2I1MWVhOGNjNTU4ZGJiMzRiNGM0MDI3MWFmZjJmMDJlMTVkYjk5ZCBsZWdhY3ktdHJ1bmsKKzY0NDY2IGIxMWIwOWMxZWZlZjJiZWIyMzU3ODNmM2Q2N2M0NTFlNDBlYTZkNjMgbGVnYWN5LXRydW5rCis2NDQ2OCA4OGJkOGVhYTUxNTJlZGM1Nzk3MjRjOWU1MzkwNjM1ZmM1YzMwNmEwIGxlZ2FjeS10cnVuaworNjQ0NzEgYTlhZDk5ZDBjNzIyNGJlMThhZGUyMzdlYTg0Y2IzNDczNDViOWNjYSBsZWdhY3ktdHJ1bmsKKzY0NDcyIGUwZjFlMWM1NjZkOWQ2NzU0MzJhMTZmNTUxODNjYzNjMTIxMTRhN2UgcHkzay11cmxsaWIKKzY0NDczIGY4NDY5MWY0ODljMzhjNjA4MzdhZDA1ZjEwMGE4Njk4YjRjNDRiZDYgcHkzay11cmxsaWIKKzY0NDc0IGRkOTA3ZDZhN2E4NWQxNjNjN2UxMjFjNWNlM2QwZmYzYzdmM2RjZDIgcHkzay11cmxsaWIKKzY0NDc1IGYwMDI3YmZkZjliYzQ0NTI1NmY0Nzk0ZTdhY2YyOTA5ZTc3NTM1ZGEgbGVnYWN5LXRydW5rCis2NDQ3NiAxZjY3MWM4NWRmMDQ3YzViNzUwMjZjMzQ2NDcyMjAxNTkyZDhkMmY2IHB5M2sKKzY0NDc3IDFkYmQ3YTUyMmEyMzY5ZjNiNTI5MDU2OWU2NjYxOGE4YjQ4ZDFkNTEgcHkzaworNjQ0NzggNmMwNGQxNDk5NGQwODgwMTNjNGI4MTZiYzhmZWM1NDdkYTVhNjFiZSBweTNrCis2NDQ3OSA5Njc2ODg0Nzk4ODMwZDgwMTY3NGFlZTVjOWM2Yjc0YzU2M2VlNWMxIHB5M2sKKzY0NDg5IDZlMDZkNGE4NmUzZDAzMjhkOGQyMDg0MDAzODY1YmE2MmFiYmZiN2QgbGVnYWN5LXRydW5rCis2NDQ5MCBiMDE1NjkzMTE0ZjY3OTdhYzRiMGYxYjFlMmUxZjMxYzYzM2M4YTk2IGxlZ2FjeS10cnVuaworNjQ0OTEgNzUyZTFhYmFmMTVhNTZiNWIzZmFlODQxZDcwYTk1MmJkY2I1MGQ5ZiBsZWdhY3ktdHJ1bmsKKzY0NDkyIDA5ODE3M2U4NDRkMTUyODUzYzUyOTYyN2FmOGZhNzM2YWQzZWI3ZWIgcHkzaworNjQ0OTUgNWQ1ZjcyODVmNWM1OWI0ZjUxNTY2NjI0YmU5NTc4YWNhNjcxYjBlZSBsZWdhY3ktdHJ1bmsKKzY0NDk2IGM4M2VlZjA3OGZkOWYwZWNhODhlZTU4NzNlOTA2NWMxNDU5ZTE2NjYgbGVnYWN5LXRydW5rCis2NDQ5NyBiMWJkY2JjOTdhMTRjMDk0YWIwNGU4MmIyMTY5ZjA4NmMyNmYxZjdlIHB5M2sKKzY0NDk4IDY4ZmQzYWI4NDg0ZWViN2QwYjVmMzYzMzcyNzhmZjZjZmViNGE4YjUgbGVnYWN5LXRydW5rCis2NDQ5OSAxMmJlNDRjNmE3MDJlOGIzYjdjYWFjOWY3N2YwYzQxMWQ4ZTgwNDkxIGxlZ2FjeS10cnVuaworNjQ1MDAgN2U3NDdkZTIzMWIzODI3MzdmNjMxOGYzYjIwNTBkM2Y1NjFmMGQ2MyBweTNrCis2NDUwMyAyMmZiZGRmMThkNDg4YTEwMDE4MzJlNzQ3NWE4YzU3ZTkyZDU1NWRiIHB5M2sKKzY0NTA2IDI3MGZmNmY0ZDk5ZjNmZDBkZjkyZmY3MjI3MDY5ZjI1ZTJiNTE0NGIgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTA3IGQ4YWZhNDFjNjk2YWJiZGViMDNkMmRkY2M0NzcxZWM2YWNiMDkwN2YgcHkzaworNjQ1MDggM2I2ZmZjZmUyOTcxZTFmZDM5OWUwMmUxY2JmZmFiNmE0NmYxZWU3NyBsZWdhY3ktdHJ1bmsKKzY0NTA5IDk1NzRmZWQ5MzY4ODM2YTViZmY3NzkyZjJhN2Y5MzFlMjZmODBiN2MgcHkzaworNjQ1MTEgMGFmNmYwMzAwZWFmZjQ0M2Q2ODZiMmE1OGY3YmJmZTRiN2RlN2I4YyBsZWdhY3ktdHJ1bmsKKzY0NTE1IDc3ODhlOTg5M2I4NWJiOTFjNzczYzcxZDBhMzUzYTQ1ZDBlZDEyOWQgcHkzaworNjQ1MTYgM2FkYTQ2ZjIzMjFkYzI0NDY4MGI0NzJkYjBlMGIwYWIwMzgzYmYxYiBsZWdhY3ktdHJ1bmsKKzY0NTE3IDNjOGQzYjk4Y2ZkNzNjZDIyMzQ2YmFlZDdmN2Q1ZWExMmVhMTAwOGYgbGVnYWN5LXRydW5rCis2NDUxOCAzODBhYTJkMTYxZDM5Mjk3MjM4MDA4Y2U0ZGU4MWEwMWMwZmI5ZmQzIGxlZ2FjeS10cnVuaworNjQ1MTkgMGI1MmJkYzRjZDg5Mzk5OTFiOGE0YWFlOTc1MmE2MzBmMDE5MzEzNCBsZWdhY3ktdHJ1bmsKKzY0NTIwIDY0YWJiNjFlOWQ0ZjdmMDQ3M2Y3YjdmYTRjODgxMzYzMGZiNWMyZmMgbGVnYWN5LXRydW5rCis2NDUyMSA1N2M4MmNiMGZhZmZjZTliZmQyY2QxZDg5YmFmZTcxNjk0MzQyZjBiIHB5M2sKKzY0NTIyIDM3YTIxZDA5N2QzNGQzNTE0NWU2OGM2NWY5NjU3ZWMyMGM4MmI1ZjIgcHkzaworNjQ1MjMgZTVhNTFlZDllNjM0MjcwZTI0ZTMxMTNhMmIzYzMxNjRjZTYzNzhhYiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ1MjQgZDFlODY0YTVjNjBjOGI0ZjJlMDc4ODgzZjM4N2NkN2UwNTQzNWMwNyBweTNrCis2NDUyNSBmZmJkNGUzMzNlMmY5YmQwZTNmMDg4MTViYWFmNjAxOTNhZGQ3NTE4IHRsZWUtYXN0LW9wdGltaXplCis2NDUyNiA3ZGUwMzg1NTA1MjNkYzJiMzg4ZjZkNDVkNTQyN2YzNzBkZWU0NjVkIGxlZ2FjeS10cnVuaworNjQ1MjcgYmRlMmFiOTQzNTkzYzNhOWFjMTgzN2U1YzRiOTBkZGYzMDJhZWNiNSBsZWdhY3ktdHJ1bmsKKzY0NTMyIGIyNjExNjQyNWIxMTQzNjAwNjUxZTdmNDgzNjUzM2JmZTRmYWY4MGUgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NTMzIDdlYjM3Mzc2NTdkMTJlZmM4MGMwMDJmM2FhOTZlYWJkMjY2ZDYzNTkgbGVnYWN5LXRydW5rCis2NDUzNSA4ODIxYjQwNWUwZTZjZjllODZhNDlhNTZhMDQ1N2ZmMzVkZGY0MjllIGxlZ2FjeS10cnVuaworNjQ1MzYgMDY0YjBiNzViYWQ1M2I1YmE3MzY3ZDFhOTJlNWVmNGQ2MTI3YjYzYSBweTNrCis2NDU0NCA4YzkyOWNlMGZiNDFjMDg2NTFlNWFiZDM1ZTg1N2Q4MjQ5MzA0YTVmIGxlZ2FjeS10cnVuaworNjQ1NDUgNzIzYzBmZjY5OGI3ZjU2ZjgzNWU0ZTUxZjEwNTRlNjkxMTdlYmYzNyBsZWdhY3ktdHJ1bmsKKzY0NTQ2IDdmYmMzNzRjOTU5ZDJkNzc5ZjVjZTY2NGYzNWVmNGZjMDgwNmY3ZTUgbGVnYWN5LXRydW5rCis2NDU0NyA1OGRjMzY3ZGMxZWEwMGJkM2NjODM1M2RjNGIyNjUyYjFjNDM5OTlkIGxlZ2FjeS10cnVuaworNjQ1NDggYzRiNzY2YWZhYzZmNjQ2ZTg3MWExMzE0ZDU0M2Y2NjFmZGFkMmEzZiBweTNrCis2NDU0OSBkYzQyZWZkNzI4ZWViODIyZDU2MzQyZTM2MzNiZThjN2M1MzI2MWFjIGxlZ2FjeS10cnVuaworNjQ1NTAgZWRkNDhiMDg0OTRkYTg5NmNiZmU1OGRkMzBiYWJjODRiNTM2NjEzMCBsZWdhY3ktdHJ1bmsKKzY0NTUxIGJmYWYxNDI5NTc5NDllMDQzYmQ4Y2ZlNmM3Y2RkOGU5ZmRmZmRjZjUgcHkzaworNjQ1NTIgNjA1YWI2ZjkyODM4OGFmNWYxZGZhYTkyMmM4OTVhNDlmZDA3OTE5MSBweTNrCis2NDU1MyBjNzEyYmNkMzIwM2I0Y2U5ODA0Y2FlZmEwMTc4YzhmNjdlMGIwYzgzIHB5M2sKKzY0NTU0IGM1NjA3MmVhYWNjMjYxOGExMzM5ZDhjYTI3ODAwZDkzMzE0Y2M4NDMgbGVnYWN5LXRydW5rCis2NDU1NSBhNjliZDNhYjlmOTk3Y2RiYWExOTYzNTdjYjVmMjcxMTZjNWQzMjQ2IGxlZ2FjeS10cnVuaworNjQ1NTYgNzI0MzQwMTNiMDMwZmRjOGQwNWEwZTI1ZmE4MmQ1MWNjMGVmMjU1YyBweTNrCis2NDU1NyA0M2Y2YmIwZWFjYjJmNDA4M2I5NjhiZmQ0YjdiNzE4NmMyOGFmYTI1IGxlZ2FjeS10cnVuaworNjQ1NTggNWI0Yzg3MDk5MDNkMDdhNTI1M2VlMTE0NjM0NjQ0YjM2ZmU0NjQ2MSBsZWdhY3ktdHJ1bmsKKzY0NTYxIDg4MzkyMDIxOTQyYTZkZmRjZWU4NmEzMTg2NGQ4NzZlYWEyNzc3ZjggbGVnYWN5LXRydW5rCis2NDU2MiBlZDVkYzEzYjg5OWJhMmQ2YjU0NWJmOGFhMTc5NGE4NWMxMjg3YmQzIHB5M2sKKzY0NTY1IDFjNGJkNTAyZGU2MjliMjkwZGM4NzFkMWZiMmIyMTI5NmE3NTliODUgbGVnYWN5LXRydW5rCis2NDU2NiA1MDg1OWFlNGFlYmJhNGJkNjJhMzY1YzhkOTk3NmZmMjEwOWYzMGNmIHB5M2sKKzY0NTY3IDg0MWFlMTc2N2I0YzU0ODM4YmUwNGJmMjUwN2VmOTY5ZDkwYTQ0N2YgbGVnYWN5LXRydW5rCis2NDU2OCAyNDhiOGFkZmNjOTdhMzhmNWYzODNlMGEwYjhiYTllMTVlMzhmOTExIGxlZ2FjeS10cnVuaworNjQ1NjkgOTAzYjZlMmEzMDRmYjBiMzA3Y2NlNGM5YTVmZGY3M2RmNjk4NjRmNiBweTNrCis2NDU3MCBiODU3NzA0NTk1OTFiODhiNjgyYjAyNjIyZjcwYzNmMzk1NWEzYzA1IGxlZ2FjeS10cnVuaworNjQ1NzEgMmM4ZTNjY2VhYzRlYjRlMDQwMWU0YTg1ZDFhOGFmYmE2MzJkYmEzOCBweTNrCis2NDU3MiBhZmNkNjhhODdlZWNhZDIxMTBlMWY4OTg1OGRmNTc5OTYxN2I0ZTA1IGxlZ2FjeS10cnVuaworNjQ1NzMgYmRiYjY2YmMzN2RjZTFiM2ZjYWNjZTI5ZDY3N2E1ODRhMTAyYjQyZSBweTNrCis2NDU3NiBhZmJkNTBhZDRmMzQ4NDA1ZDZiZDM1Yjk4MjdkNTMzNzJkY2FjOTE1IHB5M2sKKzY0NTc3IDFkZDEwYjA0ZGI0NzQxYjlmYzkzZDQyMjg1OWIyMGY0Nzc3ZGZkMzggbGVnYWN5LXRydW5rCis2NDU3OCA4YTI4MWJmYzA1OGQ3ZjBkMWVhOGY1MmQ5YjZjZDEyZjJjNTVlNmU4IGxlZ2FjeS10cnVuaworNjQ1ODAgMGZjNzg2MWVjZTVmNmNmMGU2MjNhYjc1NjdmOGZhZTczYWE1N2Q4MyBsZWdhY3ktdHJ1bmsKKzY0NTgxIDU1YWM2YzdjZWI1OTgzYzI1ZjFmYTk2ZDZmNWMyNDU5ZjYyNmZhZTEgcHkzaworNjQ1ODIgM2M0OWFmMmQ1YmYwYWZlNjVkMGE4MTEwNDNmMTdlZTUzZjNlNjY2YyBsZWdhY3ktdHJ1bmsKKzY0NTgzIGFkOWJlYjQxYWFjMTA1MDBmNzY1OTU3NTJkMTYxZTFiY2QwZDcxZDEgbGVnYWN5LXRydW5rCis2NDU4NCBlMTdhZGZhZjRmNjRjOWM0YTQxN2FiMDdhNjllY2IwODU5NGE2YjU0IHB5M2sKKzY0NTg1IGQ5NGZhNGNiNTJlNzM0OWE5ZDA5MGMzNzJiMTcyOTBhZjJkMWRjZDIgbGVnYWN5LXRydW5rCis2NDU4NiBlZjkyNzAzNzQ4NDQ0Y2NlOTE4ZTFjMjM2MzcxNmYxZDlmOWRjNGJhIHB5M2sKKzY0NTg3IGY1ZjcwZjIwYjY3OGY5NjZmNjZhNDFiZmZkN2MwMDllNTQyMTc3MDYgcHkzaworNjQ1ODggNGQyZDBhMjFkNDk0OGRhOWMyYzdiMWNmMjdmYjRkNDdmNGQ0NWE2MyBweTNrCis2NDU5MCBiZTU1YjdjMmM4ZTY5MjVjYmJlNjhmNThjMTVlMGU3OTQ2NTZmY2YwIGxlZ2FjeS10cnVuaworNjQ1OTIgNzNjYmNkZTc1ZTA1OGMzODc0NmVhY2VmZmU0MDkyZDkwNDQ1OWE2ZiBsZWdhY3ktdHJ1bmsKKzY0NTkzIDI5N2UxMjE4ZWZlNTA5ZjkzN2JmODE4NjgxNzk0M2RkNjMxMTZlMGYgbGVnYWN5LXRydW5rCis2NDU5NSBlMTQ3MzljNTg0MDEzNjkzNDc1YjYxODQzM2EyZjM4OGIzYjlhOTgwIGxlZ2FjeS10cnVuaworNjQ1OTYgMjU0MTJjNmQyNzc2MzU2NTgwZjgyNzAxNjU3OGU2N2Y4ZjIyZWI0NSBweTNrCis2NDU5NyA4MmM0NjgxY2Q5YmQwN2EzYWQ3ZWQ1YzFlNjFlZDQzYWEzMmQ2ODY3IGxlZ2FjeS10cnVuaworNjQ1OTggNzYwNDUxNWE4MTk4NWFiNzA3MjdjM2U0YWZjYmU3NWNmMDhjOGI4NSBsZWdhY3ktdHJ1bmsKKzY0NTk5IGE5MDBiYjFkZWQ5ZDliNmU3ZTk2ZmVkNWE5MDU1YWM5YjNhYWI4YWMgcHkzaworNjQ2MDAgYjlkMmZmNWUzZGNmYzBhZTllYWRlOTU1MTY3NjA1MWM0ZmQwZmM3MCBweTNrCis2NDYwMSA4Y2NiMzU3MzlhOTZmMjBiMmFkNzY2MGJjZDJlZTAzOTc4MjM2Y2FlIGxlZ2FjeS10cnVuaworNjQ2MDIgZTI5YjRjZTY0MWY5NDMxOTVmODUxYTgxNGIxYjRjNmJjNmZkYWI1MiBweTNrCis2NDYwNCBmZDc5YzRkOTc3NDVhZDFlY2RmYjc5OGUyNWI4MmEwNGJjNGUyOWU4IHB5M2stdXJsbGliCis2NDYwNSA4Y2ZiODliNjFjMmU1MWI3OTJiMWViZjM5ZmY2MGQyOTc2ZTI4MmU5IHB5M2stdXJsbGliCis2NDYwNiBiNmFkNjY0Y2FlNDk5ODgyNzJkYjhmZDNhMmE5NzRlNDYyYjU5N2YxIHB5M2stdXJsbGliCis2NDYwNyA3YjJmMjE4OTUzOTIzYzkwZTQxMWU5YjM2NjY2MTM2MWQ3MmNjYzA0IHB5M2stdXJsbGliCis2NDYwOCA3MzljYzlmZGVmZTVkNGFlYjY0MTcwOGI1ZTkwNjg1ZGRiYWY5MGQxIHB5M2stdXJsbGliCis2NDYwOSBhZDlmYjlmMWQ2ZDNiZGJhZjUzMTcwNDQ1MWQ2ZWVjYWFiYTJlZmQ3IHB5M2stdXJsbGliCis2NDYxMCA0MTZhNTZlYjI0ZjMzYWFkYmZjYzM4YzIxZmIxOTdmNDhhMzU0MjI0IHB5M2stdXJsbGliCis2NDYxMSA0NDZlM2RhYzBjMzFiZDQ5ZmIzNjY3OTgxODc3ZTY5MzZjNjNjZWYzIHRsZWUtYXN0LW9wdGltaXplCis2NDYxMiAzN2M3ZDE3NzQwY2NhNjg5NDI2MzU3MzE3ZGNlYWZkODNkMDFmNzA5IHRsZWUtYXN0LW9wdGltaXplCis2NDYxNSBlMjcxOTc2YWMzNzI0ZWEwYjE0MzM3ODY3ZTJlZjhkYTc5M2YxM2JkIHB5M2sKKzY0NjE2IDVmNzQ2OGFjMTRjZDg3YTVhMjEyMzJjNTljOWMxMTdlZDQwZWQxNjIgcHkzaworNjQ2MTcgOTEzYWEyNzRlZDc3YjU3ZDFjMzFmYjA5N2UxZTQ0ZjczY2M4ZDVlZSBweTNrCis2NDYxOCBhY2RmZmI1YjQzNTIyMTEzZGZkYjVkZDA1YmM4ZmJkOTZkM2M5ZWY0IHB5M2sKKzY0NjE5IGVlZDUzMTdhYzgzN2UyNjNkMzBlYTkwMDQ4ZjNmYmJlYzdjNGVhNzggcHkzaworNjQ2MjAgZjkyYzgwMDk1YzE0YzlkOTFiNDVjNWRkZWE1MTM0OWU1MTQxOTUxOSBweTNrCis2NDYyMSBiYjY1ZjliNzZjMWZhNTFhMDJkYzU4M2RkMDUxN2Y1MzhmN2UxZDlmIHB5M2sKKzY0NjIyIDgwMTA5ZDQwNDRjZGE0ZmU5MWU0YzRhNjdiNDkwMWRkMTQ5NGFlN2YgbGVnYWN5LXRydW5rCis2NDYyMyBlMTBlMjU3Y2JmNjE1ZWJiNjcxMGVkYmI2MGI2NDhlYmFlMzJlMDQ2IGxlZ2FjeS10cnVuaworNjQ2MjQgN2QxNTMwZmFjMWY2Njg0MTc2OTJjYzk0NDcxMmQ3MTg2YzYzYTcyZCBweTNrCis2NDYyNSBlNjhmZTkwZjE1YWIwMGUwMzIxODZmODU5MGVkMGNlNGViYmJkZDlkIGxlZ2FjeS10cnVuaworNjQ2MjYgNDIzMDk0MzdmMWNhMjVjMDE2MTM4NzQ5OGQyYjM2MTJmMjQxYzBkYiBweTNrCis2NDYyNyA3ZTI5OWFiMzVkOTVlMTk5ODk5OTc5MGRjNmQzOWQ4ZWJiNGEyMmZhIHB5M2sKKzY0NjMwIGNhMTM1M2JmZDQ4YTMyMzIzMDFkZWQ4MTc5ZDBmNTQ0Y2FhMjBhMzEgbGVnYWN5LXRydW5rCis2NDYzMSA3MDM1NzgxMTc3ODYyN2MxYTIwMTUxNTMzMDNkNmE2ZWJlZjA3M2RiIHB5M2sKKzY0NjMyIGQ2NjQwNDllY2FjYWQ4YmUxOTg5OTgyYjUwZTFjNGY5OTFjOGEzMjIgcHkzaworNjQ2MzMgN2RiZDZiNjA3NzA2YTM2M2JhYTZkOGYxMDg3OGFiZTVlNDZlNjUxOSBsZWdhY3ktdHJ1bmsKKzY0NjM0IDcwYTRlYzQxMjg4MjJhY2NiNDc1NGQ1NzUwZWZmNzI0NTc4MTVjN2UgcHkzaworNjQ2MzUgY2RhNTU2ZDIzOTI0NDdiOTkwNDAxNjk4YWZjOGFhNWVkMTM2OTZkYSBsZWdhY3ktdHJ1bmsKKzY0NjM2IDJkNDg3N2Y3NTAwZWZhYzM4MTIzZDRmOGJjNGNhMjUzNTNiOTE4MzUgcHkzaworNjQ2MzcgNmMzODYwOTE0MjkyYzZiZTgzMDZhZWM2MzY2Y2RjMDUyYjJkMzc4NiBweTNrCis2NDYzOCBhMDZhMGUxMTMyZWUwMmZiYWQxMWY4MjRjNzcyNTJhZGQ5ZmRhOTgyIGxlZ2FjeS10cnVuaworNjQ2MzkgNjBmZDA4ODY4MTFjNzVkNTk2MDcwZTY2ODJkMmQ4ZWE1N2M5OWE5NyByZWxlYXNlMjUtbWFpbnQKKzY0NjQwIDRhODMyOTUzNTIzNGQ3NWI1ZDc2YzRkYjg3ODIwMTEwZjNhYzY2ZDAgbGVnYWN5LXRydW5rCis2NDY0MSBlOGJlZTMwOTdkNDQwZTUzYmJmM2Y1ZTg5NjA1ODVlZWQ1YTRiNjQzIHJlbGVhc2UyNS1tYWludAorNjQ2NDcgNmNkM2NiZTA3MDM1ZTk0ZmRiYTg4M2RkYTQ3YWY5M2QwNWFkZjI5YiBsZWdhY3ktdHJ1bmsKKzY0NjQ5IDgwMTc1NDIwMWIxMTQxMjg2MmIzNTliMGUzOWI4MjJhYjY5OTJmYjAgbGVnYWN5LXRydW5rCis2NDY1MCAyZDAzNmI3OGRmYTQwYmQ2MTI1ZDJkNjFmOGUwNjFjNDRiNDkxZThjIHB5M2sKKzY0NjU0IGI3ZjNkOTcwZTQ0ZjAzMTcwZjM0NmNjOGFkYjg4NjQ1YmJjNzJmZjAgdGxlZS1hc3Qtb3B0aW1pemUKKzY0NjU1IDY1YWY1NDRkYTEyMWQ0ODUxNTE5NGQyZWQ4MTY5YTQxNjBjOTU3MzUgbGVnYWN5LXRydW5rCis2NDY1NiA1ZDhmNDcwMDViNzNlYjBjODU5NzBkNmFkMGIyYWMxOWY4NmEwMzljIGxlZ2FjeS10cnVuaworNjQ2NTggZjkyNzI0MGRlZjFiNzNjN2VkMTlkYjhiOTAwMmYyNTZlMTM4M2ZlMSBweTNrCis2NDY1OSBiMzljZWVjODFjMTc0ZjgxZGRlMTJkOWM4ODE5MGU2MTFmYTY3ZDlkIHB5M2sKKzY0NjYwIGUyMmRlYWViNmMxYjAyZjIxN2I3NDQyOTg5ODExZGFmOGVhY2MyMzIgcHkzaworNjQ2NjEgYWRmNDhmMmZhZGZjYmJlOTU3NGJiMzA2ZWVlNjkyMDA1OWQyYTQ0YiBweTNrCis2NDY2MiBkYWY5ZmFkN2M1NTE5MTM2ZTIyODljYTg5YTM3MWFhNDgwYWZhZTc2IHB5M2sKKzY0NjYzIDgzMmFlNTEzZDM0NDQ1MDE2NmE3ZjYwNWNlNDU3MmJmMmZjYjM3NmIgbGVnYWN5LXRydW5rCis2NDY2NCBlNGJiYjFkM2RkMTQ1YzhjODZjZmFjMDY1MTZhNTZlMjRkMDhkNTQxIGxlZ2FjeS10cnVuaworNjQ2NjUgMzA5NTQyZmQ3ZmU4ZDMzODA2NzViZjNjZjE0YTdjMTEzMzZkMWY2NyBsZWdhY3ktdHJ1bmsKKzY0NjY2IDgxZmQ4YThiYWE5YTczM2NiNTE5Y2EyZTgxMWQ5YTU4ZWI0NTM3NTAgcHkzaworNjQ2NzAgMTg5OWJlMzEyMmMyMjBlYzlmZDdiYzk5ODE4ODc2N2JkM2UwZTI5OCBweTNrCis2NDY3MSA1ZjRhODk4MGMxYWNiZjY5OTdjMGQ3ZjYzOGZmYTQwZDg1YzYyNTI2IHB5M2sKKzY0NjcyIDdlNTYwMTZhNjU2NTllMGQyZmUwYTBhMDY4OTljOTdjMjUyMTc4MzkgcHkzaworNjQ2NzMgNzBlMWQyYmJiYzMyZmFkMTU4ZDliMzJhNDIwMTM0YmIyNTdkYzExMiBsZWdhY3ktdHJ1bmsKKzY0Njc0IDQwMjVmNjM4OTExZmExOTYxZTExM2RiOWQwODgxN2YxOTEwM2Q2YjYgcHkzaworNjQ2NzYgYmQyMzM0MTIwYTMwZTdjNDcxYjQ3NTQzZjE3NjliNGJlZjRmMmY2YyBweTNrCis2NDY3NyA2OTAxZDVmZjBmN2FiNmE5MzAwZGM1NWVmYzY1NzFhY2RmMTAwMTNmIGxlZ2FjeS10cnVuaworNjQ2NzggZmIwMmZlZGZlNjQ3ZjJjODgyZjM0NGE2NzdlYjczNTZjNzUyOWQzYSBweTNrCis2NDY3OSAxZjhiZTI2ZDA5OGFjYTZiZWU2YmQxYjM3YTBlZGZhOThmNjhmOWFlIHB5M2sKKzY0NjgwIDk4ODYwY2ZhMTlmZDM4YmNmYmM4MDJkZGE0MjhiMjg2YjU3NmIxNGYgcmVsZWFzZTI1LW1haW50Cis2NDY4MSBhYTFmYmUzMjFhY2YxZjBhMmY0ZTQ0MGY5ZTQ5OTRlZTA3OTUxMDhjIHB5M2sKKzY0NjgyIDM1MGEyODliMGVkNDVjNDRlNDdlOGZiOWU5YTQxNDgxYzBiOTI5NjUgcHkzaworNjQ2ODMgZWY4ZDc0ODdhMDc3NzNjM2Y4MzI0MzU1NWI1MTMxNWNkZDdmYmJjNiBweTNrCis2NDY4NCBhNTcyM2E4MzY3ZTc2YTE4OTY2MzQ5ZDVjOThkMzIwYTU0YTBkYTI4IHB5M2sKKzY0Njg1IDQyMjRmZjc3YTFkZGNmZWYyNTBlMTlmNmE4YjhhMTI0ZmFlMjc2OTcgbGVnYWN5LXRydW5rCis2NDY4NiA4OTNkOTBiNzczMWJkMDE1ZjA2MWNjODc4MzNhZmYyZTlmNzgwNjQzIHB5M2sKKzY0Njg3IDdkMWU2MTQ5MmM3ZGZkNzhiMjFkNDExOTYzMjVmMWUxOTJmNDU2MzAgbGVnYWN5LXRydW5rCis2NDY4OCBhY2ZhZDg2NDBlMjFmZjliY2U0ZmViM2UzNWY0ZGRlZTJhYjM4MWMyIGxlZ2FjeS10cnVuaworNjQ2ODkgZTUwMjA0NjY2OGIxMDBjOGY2OTZmOTVhMDUwMmY0NjcyNzg4OTc5OSBsZWdhY3ktdHJ1bmsKKzY0NjkwIDgwN2Q2OTk1YmFmZDNlZWQyNjc0ZDllYTAwODY5MmQzMzM1MjNiOTggbGVnYWN5LXRydW5rCis2NDY5MSBjZGFhYzc5YTcyMzc2OGQ5MjgzMDEzNDYzZmI3NDQ3Njc5ZDI4N2NmIHB5M2sKKzY0NjkyIDJkMGMzNjQzMjIzZjY5MjY4NTA4NjMyMjM3YTI3NzMyNDYwOGY0ZmIgcHkzaworNjQ2OTYgNDBlY2I5MTMzOTllNjczMTM0YjY2NzRjZGZiMTJmOTIzYzQwYjhlYSBweTNrCis2NDcwMCBiMWIzYWY4MmFkZDZmYWQzYjI0MzM4MDZiNTk3ZjAwNjE2MmJhZjZmIHB5M2sKKzY0NzAxIDRlNjg1OWM2ZDM4YzhhMmNhYTkzNmE3MmRlMWIyMjM4MDZkNWYzMjEgcHkzaworNjQ3MDIgMTNjOTg1MmRlODFhM2QwMWEyOGY5MmY2MjIzZWZjOGUwOWE5ZTI2OSBsZWdhY3ktdHJ1bmsKKzY0NzA5IGVhN2NjMThjOWFjODZmMjMyY2NiZmE1YTkxZDI4YTA0OGFjODIyN2EgcHkzaworNjQ3MTYgZGM5YjNmMjg5MmI4YjBjNDllMzJiNDY4OGJlZDhiMmM1YzU4ZWEwMiBweTNrCis2NDcxNyAwNDgxNzc5M2I5NjI1YjI0NjA4ZGFhMTdhYjMyZTkxM2E5MTdlNzNhIHB5M2sKKzY0NzE4IGYyNzIwNjEwMWZmOTQzYzJhMDJlYjRiODUzYTQ0ZDY3ZGJhMjJmZDUgcHkzaworNjQ3MTkgYzkzNTk2ZWMxZDNkZTY2NWQzNjEwYzJjYmEzZDE4NGVkNTNjOTVkZCBsZWdhY3ktdHJ1bmsKKzY0NzIxIDZmMTMyYTI2YjIyZjc3Y2U0NGZmMTI4NmFmZjUyZDM1YWQ2Y2RlODYgbGVnYWN5LXRydW5rCis2NDcyMiBkNzUyNjY3MGZmMGFkZWVkZTgyZDhkMzJmMzI3ZjBmODFmM2EyODNhIGxlZ2FjeS10cnVuaworNjQ3MjcgM2IwMGU5ZjlkNjkyNTlmMmM1MzJmNWRhYzkxMWMxMmJjYjM4YTEzNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ3MjggOGYxMzQ2NTAyMjM0NWRkYjMwZmMxNjU0OTlmNjdmZjVlYmY4MDE4MyBweTNrCis2NDcyOSA0YmY4NDAzNWNiNWY1ODQxZWI3MDk3OGU2YjA1YjQzZjExODhmMmYwIGxlZ2FjeS10cnVuaworNjQ3MzUgZjc3MjQ3NmFkOTBkZjhlOTI3NjQwNGM5ZTA2N2I3OWEzOTM1MTZiZiBsZWdhY3ktdHJ1bmsKKzY0NzM2IDIyNzlkZDRhMmY3MzJiNzUzODc4OWRlZTQyNDdjMTRmNzg5M2ZkZDkgbGVnYWN5LXRydW5rCis2NDczNyA0NzIxZjI3ZWQ2YzI3ZTg3NTNkM2FhYzYwODkzYTAzYTQ5MDlmZDE0IGxlZ2FjeS10cnVuaworNjQ3MzggZmIyNzkyNDJmOTcxMDJkMGRhNzY1MjAwMzNhNmJkYTc5YmExYTJhYyBweTNrCis2NDc0MiA0ODAwZGQyMmY0NTU4MzhmMmQyMGI1ZTYwZDU0ZGE3YjdlN2YxMWJlIGxlZ2FjeS10cnVuaworNjQ3NDQgZDY2NTc5ZjkyNWM0NmY4NWI4YjFlOGRhNDFjZWI0YTM1NjEzMGI2MyBsZWdhY3ktdHJ1bmsKKzY0NzQ1IDI0NzYzNzNmNTU0ZDE1MzkxZjhiYjJiYTQ4M2Q4MGZhMjNkNzFhNjcgbGVnYWN5LXRydW5rCis2NDc0NiA0NWI2NzIzNjdiMWY3ZDUyMmMzY2RmMDVmNTBhMWY3OWI0OGFkMzlhIGxlZ2FjeS10cnVuaworNjQ3NDcgNGJhM2QwN2I4NzFmODczNDM3NDkzYmE2ZTM0YWU4MjlhY2FhYjY1MSBweTNrCis2NDc0OCA0YTcyYmUxZDVjMjE4MTFjODUzZjhmMGY5MGQ0YWZlZDE3YTIzZjlkIHB5M2sKKzY0NzQ5IDZhZTcxZjUyMmIyZjBhYmZlNmQwMDk1MmQ2ZWQxNWZhZmVlMjhhM2QgcHkzaworNjQ3NTEgZmEzNDA4ODM4MGY5YmYzMDljZDgxMDcyNjViZDYyMGFkYTQ4MGMxZCBweTNrCis2NDc1MiBhMDg4MmJmYWY1NGQ4ZDdkYTJmOWJlMzAxMjllYTAxZjc2NDI5OTlkIHB5M2sKKzY0NzUzIDA3MzgxMTljMWVmOGZkOTVhODgxMzIyZjljNWFlYTU2ZTJiODA5Y2QgbGVnYWN5LXRydW5rCis2NDc1NCBhMzEyZTAzYTA2MzMyNTFkMWZlM2QyNWQ3YTg2ZjZkYTY4NzFhM2Q3IHJlbGVhc2UyNS1tYWludAorNjQ3NTYgYzMxOTNiNzE1NmJiNjY1MDQxMzRmMjFhMGZmOTZmZjFkMWE4NjMzMCBsZWdhY3ktdHJ1bmsKKzY0NzU3IGMzYmMwNTIzNzI3MmVkZWUwMjE4NjJjYzc3NGJjZTQ2YzE4MGQwYTkgbGVnYWN5LXRydW5rCis2NDc1OCAyYjllMTMwZTIxYmM1NDYyOTc4OGI5NzVjOGNlYWMyMzJkOTQ3N2VjIGxlZ2FjeS10cnVuaworNjQ3NTkgNmM5YWYxNGQ3YjgxMzQ3NmUyMTk4MmI5NTZjMDVkMjE5MTdjOTdiZiBsZWdhY3ktdHJ1bmsKKzY0NzYwIDcxZDMxYWI3MzUwNzMxZmFjYjRmYzcwODgzNmM2ZTU2NThlOTNiOGQgbGVnYWN5LXRydW5rCis2NDc2MSAzYWU5MjljMGVlN2EyODVlYmJlNTZiOTdkNDRmYjMwOGY5YmFlMmZmIGxlZ2FjeS10cnVuaworNjQ3NjIgMGM2MmEyNzllNGRhZmQyMGEyMmU1MjE0YWMxMWY2NmMyMGZiN2M5OCBsZWdhY3ktdHJ1bmsKKzY0NzYzIDM5NDdiZmRkYTc2ZDI3Y2UyMmFjYmY1ZmY0ODczYWI0ZTk3ZjFjZDAgcHkzaworNjQ3NjQgNjQwYWY1NDRhODYxZjcwNGEzNjNhYWEzM2UxMjY4ODE3MzYzNDNkYyBweTNrCis2NDc2NSAyMjMxYTVjZWUzZjU2ZWM4MzEwMDg3MzhhMjkyZWZmMmM0NTkwOGIzIHB5M2sKKzY0NzY2IDQ2MTRhYzMxMmNjZWU5ODAyNmMyYTAyN2JlZmUxMmY2MDkwNGY0MDEgcHkzaworNjQ3NjcgMzBmYmY4ZTQ1NTQ5ZDAyOTY5NDAxNjg3MDczM2VlOWVjNTZkZDBjNCBsZWdhY3ktdHJ1bmsKKzY0NzY4IGQ3ZmQzMmNlMDdhYTYyYWY1ZWZlOTc2OTBiZTQ2NDg4N2E0YmNiYTYgbGVnYWN5LXRydW5rCis2NDc2OSBhMjQ0ZDZiMTQ1MDE4ZTgwZGRhNjMyZjg3NjQzNzBmNWQxZTNkZWY4IGxlZ2FjeS10cnVuaworNjQ3NzAgNWIyZjAzYmViZTNiYWY2YmI1OGMxOWIyN2U2NmQ1YTJmNmM1YzU5YSBweTNrCis2NDc3MSAwOGM1YzhjMTE0YjI5YThlODI5MDNiYzFmNzNlNjQxOTc2YzZjODc0IGxlZ2FjeS10cnVuaworNjQ3NzIgMjY3OTk4NjFkMzE4Y2UwN2E0NjNiN2E5NGFiOTZkNGQwOTVkN2FmOCBsZWdhY3ktdHJ1bmsKKzY0Nzc0IDY1ZjY5Y2JhZjRmMGQ1YjNiNmY4MGFhNjlhZjdjNjhiNjBhNTg2YTQgbGVnYWN5LXRydW5rCis2NDc3NSBiYzk0M2JiZmRiMWVjYjMzM2VlOGJhY2JhMmNlNDQ4MzhiOWFmODk5IGxlZ2FjeS10cnVuaworNjQ3ODEgODNmNGI3NzdkOTRjNWUzNTIzZTliZDZiNTAzNWM5ZmM5ZjFjZTYwZiBweTNrCis2NDc4OCBmOGI3NDM2MzI1OTNhYTQxMzdhM2RjMGEwZmFlMWNmNmEwOThjMDI0IGxlZ2FjeS10cnVuaworNjQ3OTEgMWJjNTQzOTQ0ZGFhMjhkZDBkYWNkZGQ5YTA2YmVmYzQyNzE3ZmIwMSBsZWdhY3ktdHJ1bmsKKzY0NzkyIDRjMDFkNzhlYzU5ZmZmNGYwMWU2MTM1NTYwNWRkNGQyMTgwNzA4NGEgcHkzaworNjQ3OTMgMzYxODg1NDRjNTYxMDI2ZjZmODNkNmVmYWZkOWI4NGFmNjdlOGJmNiBsZWdhY3ktdHJ1bmsKKzY0ODM1IGJlZDNkZmQ5OTI4MWU0MWU3NThjMTQ3YzcwMzgzNDU5NzY0ZDlmZWMgbGVnYWN5LXRydW5rCis2NDgzNiBjMzJlOTE2NTBjMTQ0YjkyN2RiYzIyMjU3OTdiMzE5MWJiYWJlMDMzIGxlZ2FjeS10cnVuaworNjQ4NDIgNjhjNzk2NGQyNTM0N2QyN2QxYmFhYzhkOTc4ZDA3MTNjYTI5NjJiOSBsZWdhY3ktdHJ1bmsKKzY0ODQ1IDhlNzM4M2NiZTU2ZTQ5YTdlZGQyNTI3ODI0ZmM2ZDRjMTY1NzYwMTEgbGVnYWN5LXRydW5rCis2NDg0NiBiZDQzNWU4YjJlMjgwMDZkZWVjNjQwMDdjMjQ3ZTVhNDg3NGI5ZTU2IGxlZ2FjeS10cnVuaworNjQ4NDkgMDVmZWQ5YmY0ODlkNzgzZTFjNDY2NjRmM2YxYjc5OTA1MTNmYzZiMiBsZWdhY3ktdHJ1bmsKKzY0ODUzIDdjZmMyOGFjMDcxNTIwMWM5MzZkN2E4NDI5OGU5YTVlMjY0YThlMjMgbGVnYWN5LXRydW5rCis2NDg1NCAxMjc0MjExYTM4OGY5YWQxZjg2NjY4OGQ5MDc4NTMzYjVlZjAyZTkyIGxlZ2FjeS10cnVuaworNjQ4NTUgMzI4ZjMzYmFmZmEzODI3ZDY4MTkzNDc2ZjdkYmI0YjAyNDlmMDk5YyBsZWdhY3ktdHJ1bmsKKzY0ODU2IGZkMDU0ZTczZTJmMjM5ZTMzNWY1NGZkZjQ2ZmI0NDM3ZjkyZTAxMjQgbGVnYWN5LXRydW5rCis2NDg1OCAxZDQ0ZTAwNGM5MWY4YTJlOTg1NWE3YjgxNWNiNWFjNTRkZTNkYTA4IGxlZ2FjeS10cnVuaworNjQ4NTkgNzYzMjVjMTlhZjg0MDg0ZDNmNDA4YzhkMGViN2ZiM2EyNjVlNWFkZiBsZWdhY3ktdHJ1bmsKKzY0ODYwIDFjZDRkNjI0NDRiNjE0MTQxNzI1M2YyYmViZWVmNjQ2NjNlOWU4OWMgcHkzaworNjQ4NjEgZTE2Mzg0ZTNlZTIyYTY2NDY2ZWZiNDk5OGRmNmUxMzZhYzhkZGU3MiBsZWdhY3ktdHJ1bmsKKzY0ODYyIDU0NWU0NDIzNmYyODZkNTZkYjJiOWU3Y2JkMTUzZmNiMzc4NGM2YjUgcHkzaworNjQ4NjUgYzAzYjIyM2MyYjY5MGI1YjUyMDA4ZTZhNjdjZjZmZTBkYWRhMWNhMSBsZWdhY3ktdHJ1bmsKKzY0ODY2IDM4MWFlMmFkODEwYjc2MzI3ZTNkOTJmOTMyYzNmYThjOTU3NWJiMDAgbGVnYWN5LXRydW5rCis2NDg2NyA1M2I1MWMyMTNiM2RiMDE4Yzc3MTA3N2ZhZTNiN2YxOTZiNjljODIzIHB5M2sKKzY0ODcxIGUyODZiZDBmNGUxYmRmNjAxMWVhNGM0OWY4NmQ3NWUxNzJhNGJlZDUgbGVnYWN5LXRydW5rCis2NDg4MCAxM2U1MjVkOTc0YjE1OGJmNmRhYTQyZThlM2Q5MjM0N2E4MWEzODU2IGxlZ2FjeS10cnVuaworNjQ4ODEgNGY4MDRlZTc3MmViMmZjYmNmZjJkMWQwZGI1YjFjODk2MTRjZTUzMyBsZWdhY3ktdHJ1bmsKKzY0ODgyIGZhZWE2ZTlkYTYzOWFmMWQwMWQyYTZiNDIzMjEzZWVjNjZlOTJhYTkgbGVnYWN5LXRydW5rCis2NDg4MyBjNjU5YjUzOGY3YmFjNTZhN2E3Yzk1MDVlOWVkZDVhZDBhN2Q0NTIwIHB5M2sKKzY0ODg0IGNkNzc2M2IwNTQ0NmYwMzg4NDRkYzMzZjMwZGFjZGRiNGU5NjhhNDcgcHkzaworNjQ4ODUgOGRhNWQzOGRkY2EzYjhkY2QxNGJlYTBlNmM0NzBkN2UyZjg2YmZiMCBsZWdhY3ktdHJ1bmsKKzY0ODg3IDkwYjZkMTlmMDZjMWQ5ZmYyOGVmNjgxMjhjZjA5NjRjZDU0YmNlM2QgdGxlZS1hc3Qtb3B0aW1pemUKKzY0ODg4IGE3NDdjZDA2NmYzMjExZjkwZGEwYjAwZmE0NDJiOWM1MjZlODc0OWUgbGVnYWN5LXRydW5rCis2NDg5NiBhZDMwOTEyMjc4NGNlZmY1NmJjNjY5NGUyN2UwZTAxMTc4MjgyNDQ3IHB5M2sKKzY0ODk3IDM4ZDNhNTBkZWZlYzk3ZjQ2NzllNzkxYmI0ZTJlNzE4ODIxNDM0MzggbGVnYWN5LXRydW5rCis2NDg5OSBkNmRmZmRiMzBiZGRkOGFkYmU4NDVmYTY3MGQ1ZTJkZGRkNjE0YTFmIHB5M2sKKzY0OTAwIGJjMjdjODk2N2NhYzFmYWZhYjViOTBmODM1MmFkYTJiZGI5MDMxYjggbGVnYWN5LXRydW5rCis2NDkwMSAyYzlkMGE3ZTNiYzRkM2RkM2ZmMDQ3OTA1ZDBjNDkxZmQ3NTJhYzRkIGxlZ2FjeS10cnVuaworNjQ5MDMgYmViMGZmNWEyYTBmNThjNTZiYmQ5ODk1NjY0NWQ2YWJiY2ViMzUxYyBsZWdhY3ktdHJ1bmsKKzY0OTA0IDVmMjQzMWRlNjNkMGE1MTQ4ZGQyZjNjYzQ2M2MzZjkyNjc1ZTliNjUgcHkzaworNjQ5MDUgMmVhODI5ZGQ2YjVhMWRlNzE1ZGQ3NDQzMzIyZmY0MzcxMDMxOTliMSByZWxlYXNlMjUtbWFpbnQKKzY0OTA2IDE5Y2RhYWQ3ODhiOTBmMGEzMDEwM2YyM2MyMjgxNmQ4ZjUyZDMyMzUgcHkzaworNjQ5MDcgNWVlMzNiOWRkZWNjNjkzNGY4N2Y2MTliMmI2MDc2YjNmNDdmZTFiNCB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MDggYTcwZDkwNWU1MDQxOGIxMTk0MmEwODhhNjIwMzA3NzhiMDc0MTNlNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MDkgZTIyOTZiNTAwNjNkZjNlN2I5ZDRmYTcxMzk4N2IyYzYzZWU1MTc5MSB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTAgYjM1YzhiMTk0MGFmNTIxMDBlOWUzYWU5NzkzM2Y2YTliZjM0NGIyNCBsZWdhY3ktdHJ1bmsKKzY0OTExIGI1Y2YwY2IwYzdjZTU4YjczMDM1ZDA1MGI5ZTZhYWJkMjhlODE3ZTQgcHkzaworNjQ5MTIgODY4NjU2MzI4MTUzOTU4NWJkYWI1NzhiZDE5YTliMDI0ZWU1NjYyYSBweTNrCis2NDkxMyA1YWFmYTIzY2JmZmM5OTY5MTYyY2IzMThhNDU5YzcyY2I1ZmMyMmRiIGxlZ2FjeS10cnVuaworNjQ5MTQgMjMyMTA0MGVjOTBiZTY3NGIzYjgyYmJjMjc1NjNkNTJlYzQ1MTcwYyBweTNrCis2NDkxNSBiOTA3NTJjNWU4YzE1M2M2OWE4ZTc3ZjI3YjAxYWZiMTIxMjBmYWU5IGxlZ2FjeS10cnVuaworNjQ5MTYgOGNmY2Y3OTMyNzI0NWNjNzAzMjNmMzc3MzliODU5YzM2ZGJhNDAxYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTcgYWIyY2ZkN2MzYmU4NzYyN2E2ZDI5NjlkY2FkZGI4N2ZmZmNhYTZmZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjQ5MTggZTUzZTRhNzFmNTZmZDE4NmJkZTgzNjlkYTYzYTQzZWU5MGMzMDJkYSBweTNrCis2NDkyMCBkNjExYjAwOTFkNWY2NGVlYWZlYzU2NmZhNjQwMTU5YzE1ZTFiN2ZmIGxlZ2FjeS10cnVuaworNjQ5MjEgNWQ2MWFkMjE0YjljMDY5Yzg4YjFhMTk4ZjE3MjRhMjQ1MjcwZTMxOSBweTNrCis2NDkyMiAwNDE1NTA3MzgyMDFmZGZlNDQ2MWU3OTdlNzUzY2RkNWUwOGMyNjZkIGxlZ2FjeS10cnVuaworNjQ5MjMgOGQwYTk3NjgxNmYyZjlkZTc4MDM4ZWFmYWU0MGI4ZmFjNGRkZjJhNyBweTNrCis2NDkyNCAxOGJmMmFhYTg3YjVmMjRlN2IzMTQzZTAyNmRiNDc0MmY5ZjM5YTBhIHB5M2sKKzY0OTI1IGM1NzEwZjBkZWJhZTI3NTE1YTdkOGEzMDlkMTFkY2UxNDY3MGU5MGIgcHkzaworNjQ5MjYgZTVlMTJkMzEwNTdlZDUwNWJlYTc1MDI1YzhjNmZkZjBmMzM1ODYwMCBsZWdhY3ktdHJ1bmsKKzY0OTI3IDVhYzI2YjFmMjVkOTFlZWM0YmFiYTQ4OWIyMmFlZDBmYzJiYmRiMzQgbGVnYWN5LXRydW5rCis2NDkyOCA2YzEyMzdjYjVhYWE2NmJkY2U4ODVkMDkyMTFhN2RmNjU2Y2NmYTdlIGxlZ2FjeS10cnVuaworNjQ5MjkgOGJhY2UyMTRhZTU0YTIwYzkwYmFjYzk2MmFiOGZiNDk1NmQ1ZmE2NiBsZWdhY3ktdHJ1bmsKKzY0OTMwIGFmZThkNTE1YmZlMmU5Yzk5YWI3MmZhYjM3NjFjMTgxNWFkN2ZmYmMgbGVnYWN5LXRydW5rCis2NDkzMSA4MWUzNGQ3ZTRiYTBhN2ZhNjMxYmQzYTQxODBhMDczOWMyMzlhYjljIHB5M2sKKzY0OTMzIDZmZDhhMWQ4NDQ4YmNkMTY2ZmUzNzBjNDNjMmRjNGNjZmU2NGE4OGIgcHkzaworNjQ5MzQgYmUzZDMxMDZkYTZmMjQ1MWFiZWE2ZGIxZmM2N2U3Yzk5M2U1NDA4MyBweTNrCis2NDkzNSBhZmRkNjRlZGYxODllNWY5Njc5MzcyMTA2MjkyZDVkNDYzMTMxYmM4IHB5M2sKKzY0OTM4IDkyYjFjYWZhMzI2N2I2Njg4MDM5YTNjZDdiODI2ZjNhNTk5M2Q2MzMgbGVnYWN5LXRydW5rCis2NDkzOSA3YTMwYjNjNWNiNTdhN2JjOTZlYWI2YmMzYjQzMzM3ODQwZGNlY2NkIGxlZ2FjeS10cnVuaworNjQ5NDAgYzNiYzQzODg4MmNiODJmNGUyZTlkYzg0Mjg5YzI4M2NkY2RmMDQ3OSBsZWdhY3ktdHJ1bmsKKzY0OTQxIGFlMzRiOTUxYjMzNzc2MjZhYjRkN2ViMTc1MjkzNDc1NGY5OTI5YWIgbGVnYWN5LXRydW5rCis2NDk0NCAyYWQ3NDlkNTdlNjJjMDUwNTg0NzUyMGYxZjYxYzE3NmYzMTRhODJkIGxlZ2FjeS10cnVuaworNjQ5NDUgMmNjNGUxYzQ3NWY4MTNjMTRjYTAwMTA3ODY4N2MyYWI1YjhmMmRiYSBsZWdhY3ktdHJ1bmsKKzY0OTQ2IGMwYzA2ZmZhZWE4MzEwOTEzZTAzNGFjODRmMjcyZWFlYjE5ZDQ4NWUgcHkzaworNjQ5NDcgMTkzNjljN2Y1NzkxNGE1Y2Q0MmI2MDA4M2RkZWM1OTcwYjFhNzgxMiBweTNrCis2NDk1MyBlN2E2YTQ1MTVhYjBiMzliNTViMjQxYWRmMjE2ODVhY2E1MzM3YTg5IGxlZ2FjeS10cnVuaworNjQ5NTQgOTk4NjgyMDcyM2UwY2ZjNzI3MmRlODk5ZDgwYTFiNDAwZDVjOWE5NSBweTNrCis2NDk1NiAzZDg2ODI1NGZmN2VlZmQ2ZTNhMWZhYmMzNzE3Mzk3YTM3YzkxNzU1IHB5M2sKKzY0OTU4IGMyYjExNGQwZTFjZjRkNzM3ZDU5MDM1ODc0YjEzNWVlYzNmMmIxMGMgbGVnYWN5LXRydW5rCis2NDk1OSA3NDE5NTQ5OWU5MDkzY2E3NWVjMTFmMWE0YjRkYjUzZWE5MjE0MzZjIHB5M2sKKzY0OTYwIGQ0ZTQ3MzI5MWExN2NmYjM2Nzk4NjljZDRkNjYxOTQ4ZTdmY2E1YWYgcHkzaworNjQ5NjEgMmZiZTI4ZGVjYTJhMjg0Y2Q4NDMxMTVlNDJkMTJjYjhlNTc2Y2IzYSBsZWdhY3ktdHJ1bmsKKzY0OTYyIGY5YjgwYTgyMGEyNTY5Y2FiZDU4MmZjOThhNDFkOWRkOTQ0NjRmZDggbGVnYWN5LXRydW5rCis2NDk2MyA3ZDU3MGRmNWU5MGE0MTNiZTE3ODg3MDI3OWE0ZWU4ZmJhNDQyYjYzIHB5M2sKKzY0OTY1IDJlZTA5YWZlZTEyNjAyNTBmZDc4ZDAyNzViNzdlZWRlYTViZmYzYWIgcHkzaworNjQ5NjYgZGVkMjE3MDQzNzA3YzJmNWQ0MzY1YmQ4ZDg3OTI3OTRhMGU0NGMwNCBsZWdhY3ktdHJ1bmsKKzY0OTY3IGY0ZTdlZjQzMjlhOTU3ZTkyYWZiMTFhNGYwZWZjODJkYzZlZTZmZDkgcHkzaworNjQ5NjggMWZkYmEwOTc5MzJhZjg2ZmE0MTZlODMzYTcyZDZjYmQ5MjE1MThmMSBsZWdhY3ktdHJ1bmsKKzY0OTY5IGY4NzIzZWIxMDVhY2Q1ZmFkZTBkNmU2YmFmNTMyMjQzMjEzYjdmOTUgcHkzaworNjQ5NzAgZTI2YzcyNGQ1ZTIzZTM3NDhmODZlZTU3NTQwYzg2MmU0NGJhY2I0OCBweTNrCis2NDk3MSA5MTZkMzNlYzdiNWFmZWNjMGI0M2RkM2M1YzQ0ODM4NGYxMjU4MjE5IGxlZ2FjeS10cnVuaworNjQ5NzIgNDMyZDI3ODA4YmQxZWU2MzkzYTY5YWZkYjhiOTZjZjU0ZDNjOTA1ZSBweTNrCis2NDk3MyAxZjI0Y2VjMGYyZTFkNjhkMjY3ZDE3ODE4NmVhZjFjY2IxMzhjY2Y0IGxlZ2FjeS10cnVuaworNjQ5NzQgOTdiYTkzNmU4ZGY4NGNhNDdiMGM5NjFmZjIxZjVlNjA4YjRhNTc1MCBsZWdhY3ktdHJ1bmsKKzY0OTc1IGQwNDBhM2I2M2RmNDI1ODg2N2ExNmFlMDliZDNjZDEzZDljODY4OTYgcHkzaworNjQ5NzYgODc1YmViNGFkODg5MTUwYTYwNTgyMGY0M2Q0NmU0MTVkMTU0ZmQ0NyBsZWdhY3ktdHJ1bmsKKzY0OTc3IDM1MDA0ZDliZmQxNTYwNDA0NTMxYWZmMjJkYjk1OTM1NDQzYjk3NWYgbGVnYWN5LXRydW5rCis2NDk3OCBkYTJkMzYzMzc5ZjI2ZTRlNDRiZDE0ZGFkODVjMTAwZjIwNDRlNGFhIHB5M2sKKzY0OTc5IGE0NDgyYTFhMzBjNmQ5M2NjMzIzNDNjOGIxMjg2ZWQ4Mjc1ZWU3YjYgbGVnYWN5LXRydW5rCis2NDk4MCAxZTAwOTE3MDg4NzVhNzg1MTJmNDEzNzM1NDM4MjgxMGVhOGM5ZTMwIHB5M2sKKzY0OTgxIDljYjI4YWQ1YTQxYzAwMTI2OTBlNTk3MTU5NGIyNWJlNTYwYzExYTEgbGVnYWN5LXRydW5rCis2NDk4MiAwMWZiZTNmYzg4M2UwYWViMWVkZTMxNDM4MmJhOTNiNDM2NDY3NjkxIGxlZ2FjeS10cnVuaworNjQ5ODMgNTFjMGQzYTA3MWFkMDA3ODA2ZmM3ZDVkZmRmY2EyMmFjM2E4YzE4OCBsZWdhY3ktdHJ1bmsKKzY0OTg0IDNmYTQ0ZTVlNGUyYjFmMmNkNmQ4ZDQyNTgwZDQ1Zjc0OWUzODllMGIgbGVnYWN5LXRydW5rCis2NDk4NSBjNjYyZThjZmZkZGY2MWQ1YjZlNGM1ZGFhNjk5MmU5NDRiZjBmYjc1IHB5M2sKKzY0OTg2IGVmZjlkMTFjNDc2MjZhYmNlMDcyNjdhYjIyY2VmZThlNTczNDZlNGUgbGVnYWN5LXRydW5rCis2NDk4NyAzYTNhNWE0OTIxNDcxYzM0ODAxNDFmZGRiNDU3ZjcxY2E1YjJiNDExIHB5M2sKKzY0OTg4IDNiYjFmOGJiYTMzNjc2YTM1OTc3YTkzNjRkYzNjZmM5MTk2MmEyNmEgcmVsZWFzZTI1LW1haW50Cis2NDk4OSBiYmQwYzkwMDI3YmZiNzdiNDY4Y2VlZjMxNWZiMWY2MmIyNTdiN2M2IHB5M2sKKzY0OTkwIGJkNDg0MTA2OWM2ODQ4NThiMjcyZDIyNDhhYTU1ZjNlNjNmYzEwNDQgcHkzaworNjQ5OTEgZDE0ZDBiMTVlMThlNzBmN2U3NDg2OTUzODA1ZmU0Mjg1MDliOWQ3MyBweTNrCis2NDk5MiAzOGQ3MTliZWRkYmRkODYzNjUxYzkwYzFkMjYxZjFhNjQzODY2M2QzIHB5M2sKKzY0OTkzIGVhMjNlN2M1NjE1NDU2Y2NjNTlkM2IzZDdlMDFlNmY3MjFmMmVkYjggcHkzaworNjQ5OTQgZmNlZmY5NTRmMzgwNGM2MmIxY2U2NTVlMjRkYzkxMzRjMjMxZGNkYiBweTNrCis2NDk5NSA4ZTllNjUzODNhZmI2NTAyZTM5ZGU3NGQxNTA3NTBlOWIwNWVhMTI4IHB5M2sKKzY0OTk2IDY1ZTljMDEwMmVmOWM0YjA5NDdiOTBlZDIxNTgzOGFmMWI3MjNhOTUgcHkzaworNjQ5OTcgOTI2YjJhMTk2MDgzMTUyNzg1MDhiMTA1ZjA3N2NlZTRhMGJlMWU5ZCBweTNrCis2NDk5OCA5ZWJkM2YzODU1NzU5ZDU4YWVlNGViOGI5N2NlZjM3YmRhYjgyMzRlIHB5M2sKKzY0OTk5IGFjYTViMmU2YTY2ZjMyNGI3NDU0NmViODBmNTRmMjE4YzczNTUxMGQgcHkzaworNjUwMDAgZjU4ZTNhMGVhOTlhMTdiNzZjNWUwODZkZjg5NTg4Y2Q1MzgzMWNlMiBweTNrCis2NTAwNCA5YWEwNzgxNjE1ZmIxYzdhNzYwYWRiNmRkNWQ1MjY4MWRhMDJkYjg0IGxlZ2FjeS10cnVuaworNjUwMDUgYzBhYjJiYWZiMjY0NDBiNTlmOTg0OTA1YzY0MWEwNzY0NzRhNDY1NSBsZWdhY3ktdHJ1bmsKKzY1MDA2IGNlYTA2NmRlZGZkZmIyMDg4MjU5NmVhMzM5MzI3NjcxYjJhYzU2ZTEgcHkzaworNjUwMDcgY2EwZDYyMGNkNjNiMmE1ZmJkYWVkNDFiZTg2Njc3NTdmZDFmZGNhZiByZWxlYXNlMjUtbWFpbnQKKzY1MDA4IDJiYjg2NmQyODJiYWQ1NWRmZTY1ZTcxMzliMTI5MzNiZjgyYTliZjcgcHkzaworNjUwMDkgMTc3MzAyZmVhYjM2ODk1NWVlZDAzMjVlZTk1MThkYWY1YWE4OWI0NyBweTNrCis2NTAxMCBkZTBiZjYwZjEyNDVhYzczZTQ0YmIyNWUyYzU4ZWFlNmU1ZDA4MmFlIHB5M2sKKzY1MDExIDRmNmVkZWE0YjU1ODU2MTFjMTU0ZjVhMjBmYjBkMjc5N2NkMjc3NWMgcHkzaworNjUwMTIgYTUxOTFkN2VhNDA1NDBjMzE2MWU1YWNkNDk3MDJhNzAxMzRiOGM4NiBsZWdhY3ktdHJ1bmsKKzY1MDE2IDVmNmRjMmY4NmE4ODQ0MTc1YjJiOWIzYWRjMzc3ZjkxYjdlYWJlNmEgbGVnYWN5LXRydW5rCis2NTAxOSBlYzM4ZmJiYjhjY2ViZTFmMjY3MDkwN2U2ODkyNjgxNThmOGFmYmYxIGxlZ2FjeS10cnVuaworNjUwMjAgYjY0NWFhMmJjYTljYzcxMjE5YmMyMzM0OGNiMTA0MGI0ZTZjMWExOCBsZWdhY3ktdHJ1bmsKKzY1MDIxIDJlOTBmZWYyMjZlYTZjMjAyZGE3MDFkYjZhMjBlZGFkNzA4Y2Y2YTQgcHkzaworNjUwMjMgYTA5NjNlNDZmNDNlNWU3N2U5MjM1NWI1NTQ4N2YxZjQ3NmQ1ZTM2NiBsZWdhY3ktdHJ1bmsKKzY1MDI0IDY1NGZmNTc1NTQzNmFkNTNhNmRhMWMwZDEyYjE0YjU1NzRiYjJjM2MgcHkzaworNjUwMjYgNjU1MjI3Yzk4OGE3OGQ2ZDIyODNjMTRjOGY4YzFhYjc2MmE3OTg5YyBsZWdhY3ktdHJ1bmsKKzY1MDI3IGFjYWNhMTFkODBkYmM4NGQzMTA5YWQ4NmJkOTEwMzQ1NzYwMjc2NjYgcHkzaworNjUwMzAgNTlhYzVhZWYzYjJkMWZmM2MzYTZjNzZjOTQ0NTkyZGUxNWIyZTU2YyBweTNrCis2NTAzMSBiMmYzZGUzNThhZjQwODAzMjRkN2FmODQ1YWI4MjE1ZWY2Yjk4MDE2IHB5M2sKKzY1MDMyIDA5YmViOTZiYTIwZDQ3YzYzNDE3MjdlMWZlYzZmZDBjMTA2ZDRjODkgbGVnYWN5LXRydW5rCis2NTAzMyBlYzg1YjU4YWQyYmE0YTA4MGE2MDFiYjExYjg0NzZiOTY5OGU1MmVjIGxlZ2FjeS10cnVuaworNjUwMzQgNmM4YmFjOTEzYWFiZmNjMDhjNWZkNDdmNWNlNGU0YTRkNmRjYjhlNyBweTNrCis2NTAzNSBlYmU5MzIzMjkyNDY5OTdkNTM4MTIwYTM4YWVmN2E1NmVlMmMzODM2IGxlZ2FjeS10cnVuaworNjUwMzYgNjA0ZmViZDIwNGNiMmQzZTYzZjI5ZjE0YjkxZTdkNjk0ZjkyYWE0ZiBweTNrCis2NTAzNyBlYzk3YjdhYWQyMzFiZWNjZjdhMjc4M2U0YjQwMjg4OThjYWE5MzY2IGxlZ2FjeS10cnVuaworNjUwMzggZWZlNzA2YWFiMzJiOTFhZTI4M2FlZjFhZWZjYjY5NzM0MjZmMmRjYSBsZWdhY3ktdHJ1bmsKKzY1MDM5IDAxODA2Y2RlZGRkZTM2MDhiZjA0MTQ5NDBiZWU4MTk5ZGMxNTJhMWYgbGVnYWN5LXRydW5rCis2NTA0MCAwOTFkZjRjMDhkOTlhNGRlNTM1N2M5OTk4Zjg0ZTU2OTA5YThiYjk5IGxlZ2FjeS10cnVuaworNjUwNDEgZmJmMTY1YTc4OTUzNzNjYWQzMGNjNjBmMWYzNjVmMmIyMzdkNWY5YiBsZWdhY3ktdHJ1bmsKKzY1MDQyIDdlMDMwYjYyODI5NGRiMjI5YjhlMDcyNDE0YjU1YzcxNTdiNzExZDEgbGVnYWN5LXRydW5rCis2NTA0MyBiOTgyOGIyYTUxYzBmZjM1MWYxY2I2ZjM1MjJlNzVjODRmZTYxMzM2IHB5M2sKKzY1MDQ0IDkyMWM0YTgwOTkyMzgzMTdkNWRmOGYzZTI3NmZiYjk2NmFjNThjMTkgbGVnYWN5LXRydW5rCis2NTA0NSBkODdjZDVlNzM2NWFhODJhYzc3MTc1MzQzZmY4OTdjMmU5OTE3YjFhIHB5M2sKKzY1MDQ2IDc2OGJjZmY0YzBkYWVkYTY0N2RiZDI3NDQxMGQ4ZGY3MDEzZmVjZjUgbGVnYWN5LXRydW5rCis2NTA0NyBmMmM3Mjc5MjU4YzEyZGM0NjY5NmM0M2M1ZDkzNDRhZjMxMWRiMDBkIHB5M2sKKzY1MDQ4IGQzMWQ2MWY0NjQ5OGQxNDIxNzNmYmIyNTEyNmJhZGRjZjRlM2UzOGIgbGVnYWN5LXRydW5rCis2NTA1NSAzMGZkZDBjM2I2ZGUxYjgyMzVlNzVhYjU4MDA5MDZmOWM3YzQ0M2Y5IGxlZ2FjeS10cnVuaworNjUwNTYgOWM1NmNkOTdmZjRkZWUzMDk0NjhjMzUyMzBkYmI5ODU4NWE1ZjQ2ZCBweTNrCis2NTA1NyAyN2JjYTdmYWMzNjJkNzE1OTBkZDYzYmU4ZWE2MTUyNTRmNmM5MTc4IGxlZ2FjeS10cnVuaworNjUwNTggYzU5MTFhN2I1ZmEwMGJjMjc1ZjZjZDdmYjZkNzI5YThiNGU1ZWQ3YSBweTNrCis2NTA1OSA0NTIzM2Q0YzE4ZDIzYjA2MGFlZGUzYmI1ZjIzNmYzZWJhZWMyZmI1IGxlZ2FjeS10cnVuaworNjUwNjEgYTI5Yzg2Y2U3NjY4NzExMTNiZTI3NmM0Mjg2YjJhMWVmZjQyMTU4MSBsZWdhY3ktdHJ1bmsKKzY1MDYyIDFiZTViNmJlNDNjYjY5ODU0MmM4MzkyMTk2NzUyNDhkYjgyYWM1OWYgcHkzaworNjUwNjMgNzlmODRiYzJiMTQ5MjA4NWY3ZmQ2YzNkN2U2YWI2NTVlOWE0YjU2YSBweTNrCis2NTA2NCBkYmMyYjdhZDBjMjIxN2MwODBlZGMwMWM0Nzk3NjFhY2RlNGZiYjI5IHB5M2sKKzY1MDY1IGVlZmI5ODM3OTY0NGQ5YmY4NGM1ZTJmZWIzYTI1OWExNWEzNWI1MGQgcHkzaworNjUwNjYgNzhhMjlhMDUyMDc5ODJkMjZlNzNiYTAwNmIzZTQ0OWFhZmNiNzc2NSBweTNrCis2NTA2NyA5OTFjYWRkNDdkOTczMmYzMTEyMTFlZWJkZTkwZmE4ZTllN2Q5YTM0IHB5M2sKKzY1MDY4IDIwNjg3MTBiMzJjMzUxM2MyNDM2MmIwOGI1MTU5MzE2Mzk0NjRhYzUgcHkzaworNjUwNjkgZjI4M2UzYjVmOTE3YWIyNmI1MzhmNGU4YTA0NGZiMDdiNzg2OWFkYSBsZWdhY3ktdHJ1bmsKKzY1MDcwIDU2MDM4OGNkYTE2M2Q5M2RkOGM4NGY5YjA4YTIyZmViNDViZGEyZTEgbGVnYWN5LXRydW5rCis2NTA3MSA3YzZlYzdhODAxNmFkZmE3MzRmYjk3MjJjZTEwZGJhNjZjOWE4MWMxIHB5M2sKKzY1MDcyIGJhMzliNDBlYmYyZDkzMzljYWJjN2Q1ZjA0M2EwYWZiMDc5Nzc0NDcgcHkzaworNjUwNzMgODNkMGQ0Y2I3YTY2MWM5N2NmNTk4NDhiYzY2MTc2Zjk4OGU4OTJhNyBweTNrCis2NTA3NCAzZDUyNjUyNWIzZTgxZDk0YWE0ZjJlNGM2NzA4MWE1NjgzNDk4ZjVlIHB5M2sKKzY1MDc1IDVjMzMwMDk5OTRiNDYzNThkNmVmOTgzNTM3NGQ4Y2UzOGQyNWIzZmIgbGVnYWN5LXRydW5rCis2NTA3NyA2ZGQ1MjBlMWJjMGRiMzYxZmFhMWNkNjNlYWU0MTZjOTRjZjNlYWRmIGxlZ2FjeS10cnVuaworNjUwNzggNGRlYWRjOGY5ZTBhMzkzZWE2MWFhZGY4ZDlmZDk0ZTNlNmIyMDE4NiBweTNrCis2NTA3OSAwMzFiNWFkNTQ3ZTQyN2I0Mzc3OTRiODE4MWYyOTI0OTA2MmIwODNmIHB5M2sKKzY1MDgwIDE2ZWM0YmIxNGE2OGVhNDI4YWNmMDllYmYwYzkyOTgxZGEyNjQ2ZjMgcHkzaworNjUwODEgYTk2ODAyOWI2M2RiMTIxZjAwN2E3ZGM5MGFmODhhYzU4MmRkNDdlMSBweTNrCis2NTA4MiA4MWVjODI2M2JkNmUyNWM5YTg4NTVjZDBjZTlhZTg4MTczMjk3MmJlIGxlZ2FjeS10cnVuaworNjUwODMgNThkNGJmMzE3MjhmZjhiNDI5NjExYjNmNGIwZTQ5MjFiMDhhMWFjNiBsZWdhY3ktdHJ1bmsKKzY1MDg1IDE5ZTc3OWQwMjA1MzUzZmM4Y2UxOTAzNTczNGUzNzgyOGQyZDQzZDYgbGVnYWN5LXRydW5rCis2NTA4NiBiNzRlOWQwOWIxODA2OTNkMDBjYzViMzM0NmMxMDE0ZDE0NmMxNTcyIHB5M2sKKzY1MDkwIDc4ZWU2YmEyMDk5ZWU3ZDJjNmQ4YjViMjIzZmI5ZTExOWIzN2Q4NWEgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MDkxIDY0NGNhNDQ4Nzg4MWU4NzllMDEwZWY1M2ZmOTk0NjhmOWE4MzQwNWMgbGVnYWN5LXRydW5rCis2NTA5MiAwZWFlOWIyNWEyZWQwYmRlMDU5NTFiOWEwMGU1Yzk4MjcyYWQyOGQ2IGxlZ2FjeS10cnVuaworNjUwOTMgOGVjMTgzMGQ1NzE5OTczZTcwNzNhODFiODk4YjNhMTEwMzdjMWExMCBsZWdhY3ktdHJ1bmsKKzY1MDk0IDFhY2ZlNDI4ZThmMTliOTc5MGY0NTdkODJmY2RiNGMyZTRlYzNhZjYgbGVnYWN5LXRydW5rCis2NTA5NSBjZWM3MDRiNzliZGYxZjU1MDEzNjlmMTZkOWZkNzUyNzcwMDU5NTdiIGxlZ2FjeS10cnVuaworNjUwOTYgMjkyNTEzNWNhMDUwYTY0NDc1ZGRmMzJhYjBjMzc1NGU3OTRlNjA2NyBweTNrCis2NTA5NyA0ZWM1YTBlYzYzMWEwNTUzYzU1NjhkMzQ4YmI4M2FiOWQyY2UxYjUzIGxlZ2FjeS10cnVuaworNjUwOTggZTg1ZDU2OTBjMjk2ZWY2ZjMwZjVlOTczMGFhNjFiMGZkYTdjYTAyZSBsZWdhY3ktdHJ1bmsKKzY1MDk5IGFjMWNkNDZiZjdkNTdlOWI0ZDc0ZjJjZjBiNWIzMTEzNWNkZTFjNmQgbGVnYWN5LXRydW5rCis2NTEwMiAxYjIwYWZhNDhkNThhZTUxMjU0OTNmYzIzMzllMjk4ZjcwZmMyZTRkIGxlZ2FjeS10cnVuaworNjUxMDMgYzQzMjMwN2VjMDBkZDZkNjg4MWFiMDExZDQxNGE5MWU0ODYxMTFkNyBweTNrCis2NTEwNCA5NTc2YmI3MWEwMWI0OGMwY2Q0MDkzMGRlNjk3OGU2OGM1MTllMzEzIGxlZ2FjeS10cnVuaworNjUxMDYgZTdkNjRlODI5MDM1MjJiMzM2NzAzZmRmMWE4YzFjM2VkMmE2ZTJkOCBweTNrCis2NTEwOCA5YmRiNzQwNGVmZTc4ODlkYjhiZTc0M2ViODIzYzNmNjZlN2RkMTcxIHB5M2sKKzY1MTA5IDQ5NzI2ZGNhMTZkODExYzMxOGRjMzNmYTUyZWNhMjdhNTQ1ODU3OGUgbGVnYWN5LXRydW5rCis2NTExMSBiOTMxYTAyMjY0NjY1NmJmMTljZDU0ODJmMjBlMTJkNDhlNjU0Y2IwIGxlZ2FjeS10cnVuaworNjUxMTIgZjkwNDBkMTA3ZDY2NDdkZWY3OWRmZTM0OTI4ZTQxMzhlMDQ4MGY2NyBsZWdhY3ktdHJ1bmsKKzY1MTEzIDI5Nzk1MTMwNjQwMDUyMWI3ZDc4NDBiMmMxYjAwNzUwYjBlNWRmYmYgcHkzaworNjUxMTUgNmU3NzE2YTNiZGVjMTA2MGI4ZWI1M2FjNmE3N2MzOTJmMDU2ZjYyMSBweTNrCis2NTExOCBkZWNlMTdlZGJlZDA4YWI2OWM5MjIxZjg2OGJkMGQ0NTU2Y2Y2NzlkIHB5M2sKKzY1MTIwIGZlZmZlYzI2YzU2Y2I5NmRiY2VjMzJlN2Q5NmU1YmM5MTBmMjEyOWIgcHkzaworNjUxMjUgNDBkYjQ1YmZjMGYyY2RiY2NkZWZhNjVmYTY1NTkzOGQxN2I3N2JjZSBsZWdhY3ktdHJ1bmsKKzY1MTI2IDQ4ZTgzZTY2OTM1YTlhNmMzMzhhNTc5YTk1ZjAxMmY1NDFhNzk1NTcgcHkzaworNjUxMjcgYTVmZmUzNGM3MmM0ODk5ZGMwY2FlNzgzOWQyZmZjNmNmYTIzODc4NSBsZWdhY3ktdHJ1bmsKKzY1MTI4IGNhY2EzMzgzMmExYTUxMjdjMjI3ZmFiZjk5ZDk4MzU4MWY1ZjllZTEgbGVnYWN5LXRydW5rCis2NTEyOSBlNmJhNmY0MTQ2OWJmMzBiZWQ0YmVjYmJlMjUyZmFmNjRlYmY5MGViIHB5M2sKKzY1MTMwIDZjNWNkZGIyNjdmZTI0ZDU5ZDViMzFlYWUwZDBiMmMyZDU5NGRkYTQgcHkzaworNjUxMzEgN2FkNmU0Y2Q3NzEzNjZkOTQ1NTgzNzdhZTA4NmJjMDBjNmUxMTUxNSBsZWdhY3ktdHJ1bmsKKzY1MTMyIDQwYjBlMzMxOGE4YmJhZGQxNzQ0N2E2ODRkYzUyOTA4NDAxOTRhMGMgcHkzaworNjUxMzMgMzNjNmFmNjlhZTBmMTc1MzFkMmFlYTgzNDc2ODg3NDZkMGZhNTI3MCBsZWdhY3ktdHJ1bmsKKzY1MTM0IGU5MDdkYTgyNTE2OTE5MjllOGZlNTVmOGMyYmQzZjI0MjkxOTk1MGQgbGVnYWN5LXRydW5rCis2NTEzNSA0OWJlODgxMmQ0MzMwYWVkZTUwMGQwOGE5NjIyYThhYmIzNWZjNmRiIGxlZ2FjeS10cnVuaworNjUxMzYgOTZlYWZhYjQ4OTAxMmVkZjJkOTgxM2JmZWQxMDBiZWE0NmFjNDI2OCBsZWdhY3ktdHJ1bmsKKzY1MTM5IDdmNTQyMmQwNDA5Zjk0NDQ3ZTdlMTRlNmQxNGJmZmM4MzNhYjY2ODEgbGVnYWN5LXRydW5rCis2NTE0MCBkZmMzNzU4M2YyMDQ3NjdlY2FlNjllNDY1Y2VlMTYzZWMwOTlmYjc5IHB5M2sKKzY1MTQxIDk0OGU1YjMyMzMyOTFiZTE1MjU2Y2YxMDY4OWI1NjdmMzc1MTZmMGYgbGVnYWN5LXRydW5rCis2NTE0MiA0MDdlYjAwNDAwNDE0MWNhOGVmNjJhYzc4N2I5MTc0MzcyMDEzZmJjIHB5M2sKKzY1MTQ0IDg5ZjVjZmVjMDU3M2M1ZWEzMzEyYjc5OWM1MDBmZGYzMTFjOGJlYWEgcHkzaworNjUxNDcgN2MxNDdhNzZhMGIyNzI0Njc1ZDQ5MDQwMmJiNDRmOWY2ZjYwZTViMCBsZWdhY3ktdHJ1bmsKKzY1MTQ4IDhjZGIxODFhYTlhZmM2NzU4MDhlOTJjZjY2NmFmMTExM2YyMmUzYWYgcHkzaworNjUxNDkgNzBiZTY5YzkzZTMzYWE1M2U4ZWMyNWMxZDBhZjAyODgxMGY4ZmY3OCBsZWdhY3ktdHJ1bmsKKzY1MTUwIDQzYzY5MzQ1MTRkN2NjMzQyZTYzYTI0MjgwMmY5MmU3YzdjYjZiMGQgbGVnYWN5LXRydW5rCis2NTE1MSA4OTg5MjEzZjM4NmIyNmJlNDRkYmJjOGU0Y2QyYjFhY2FjZWU0NGZlIGxlZ2FjeS10cnVuaworNjUxNTIgNjQ0ZmE3YTI0MGM4Yjc5NjFkNmU3YWIyNGNjMmIwOTMzYWEwZTFiOCBsZWdhY3ktdHJ1bmsKKzY1MTUzIGJiMjYzNjg4MjUwM2RkMjZkZjJlZDc0ZjkwNGZlYmJiMmE2ZjBlZjMgcHkzaworNjUxNTUgZDI3ZTI4MDIwNzA5MmQ4NTA2YjI1ODM3NGJhNjdjZTM4YjZiODhmNCBsZWdhY3ktdHJ1bmsKKzY1MTU2IDFkNGNiMjZlYzg5ZmE2OWRhYzcxMTM5MzEzOGJhNWU1ZmQ5NjYzNTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTU3IDU3OGE0YjBhNTIyZDI2MGZkMTAwODU1MzRhMjY0MzkyODAyYzk1ODAgdGxlZS1hc3Qtb3B0aW1pemUKKzY1MTU4IDFlZDY5NGE3YWI2MDE0NzM5NDE0MDljOWUwNjNjZTNhOGZmYWRiYjMgbGVnYWN5LXRydW5rCis2NTE1OSBhOTdmZDVhM2IwOTBiNjljNjljY2U0MWUyZDFhZmE2MTU2OGEyNWJjIGxlZ2FjeS10cnVuaworNjUxNjAgNjA1MzUyNTBhNjJjNmE0MGY2ZGRjNTM0N2NhM2YxZWZkNTc3ZWY3MSBweTNrCis2NTE2MSA2MjgyM2VjYTg4MWJlNGE4N2VjNjBkYTBlYmUyYmI5MzAwMTNmOTc3IHB5M2sKKzY1MTYyIDdjY2NlMmE3Mzk0YTAyODJiZTQwYWJiNGU1Y2RmMTA5OGQ1ZTA5YjMgcHkzaworNjUxNjMgMzY0MTA2Nzk2YjIxMDQ3MmVhMjlkZjY4MjQ1MjAxOWY0N2JlNTIxZiBsZWdhY3ktdHJ1bmsKKzY1MTY0IGVjYzZiZTM4MGM1YmM4YTQ4MjBjZDI0MzM0OTIzZjAxYzg2NGE4NDQgcHkzaworNjUxNjggMDY4YzAwYmY1YTI0YWZmZjM2OTUxNDBiMjYzYTAyZDk1ZTZjYWU5NSBsZWdhY3ktdHJ1bmsKKzY1MTcxIDBhNzQxYzEzZmM4MWM2ZWMyOGVmOWJmYmRmZmUwYmZjMGI1NmE1OTMgcHkzaworNjUxNzIgM2Y2ZDQzZDU3NTVjYjliYWYzNDA4YTQ0MzA4NDcyYTJkNTk4MzIxYiBsZWdhY3ktdHJ1bmsKKzY1MTczIDkyMWI2NzU5Y2JkZTcwOWRiNjYyZmNlNWMxYmQwMGE5MzQwMWMzOWQgcHkzaworNjUxNzQgYTlkZmEwODUxYjA3MzhjNDEzZjYzNWVjYzI1Njc3NjBmYTYyZTcxMyBsZWdhY3ktdHJ1bmsKKzY1MTc1IDk3NWJiZGNjYzU1ZWQ1ODI5NTBiZTBhNTU2NDBjZDQ1MTNiZjRjYzggcHkzaworNjUxNzYgODMzMWJjNGU4Mjc4YzgzYmZjMTljZjhjNmVkZTNkNDhkMmE2MTZjNyBsZWdhY3ktdHJ1bmsKKzY1MTc3IGI4MzZiZjI1ZjE3NmEyOWYzYjYxYjliNzg3Y2IxZGE2ZDAzNDJjMTYgbGVnYWN5LXRydW5rCis2NTE3OCBiYTI3NjdiZDQ2MjA1Mjk5OTA2MDc2ZDNjZTNlMDM5OWEwM2NlMjQxIGxlZ2FjeS10cnVuaworNjUxNzkgZDg3OThkNWVjNGI5M2E1N2VhZGE3ZTZjZTYwZjkzYmQ3OWI1ZDg4MCBweTNrCis2NTE4MiA1ZDM4MzNlNmFhZTMwZWExYTlmNGJiYTkxODNiZWUzYzMzMTQyNDg2IGxlZ2FjeS10cnVuaworNjUxODMgM2I1YzI2MTNlZDA1ZGM5OTAxZTM0ZDk0NDgwMDgzNGNjZTA5YzViNyBsZWdhY3ktdHJ1bmsKKzY1MTg0IDk2YTllYmZlZTJjZDJjNzY0NWNmZjljYTlkZjgzM2E0YTQ1NDFkMDEgbGVnYWN5LXRydW5rCis2NTE4NSAxYTJmOGRkZTgxZWNjNDI4ZmU0ZmM2YzQ2MmI3MTNlYWU2ODQ2ZGRlIHB5M2sKKzY1MTg2IDczOWJiMDcyOGVmZTUyOTliYjNiYTcxYzgwMGRjODA0YjE3NjkyOTAgcHkzaworNjUxODcgZWE1M2VlOGE4MzMzMjFkOGU3MGZjNWJkZTEyNzc5YmEwMDU1OGQ2ZSBsZWdhY3ktdHJ1bmsKKzY1MTg4IDkwZmJiYmNlNzU3YWY4NzE1MWExN2Q3N2YyY2NhZGRmM2I5M2FjZjQgbGVnYWN5LXRydW5rCis2NTE4OSA5NTYxYWFlZGZiNzM4ZjA5ZmJhYzhhMmEyNTc3OWMxYzUzNjMxZjc1IGxlZ2FjeS10cnVuaworNjUxOTAgZGQzMTQ5MGQzZWI2ZGU4MjA1ZDg2ZGUwMDZjYWFkMDA1YzFmOTBmYyBsZWdhY3ktdHJ1bmsKKzY1MTkxIDgyMWU3M2Q3YmNjNTRhNGI4NWNiOGVkZDM5ZTczMDE1YmVhZjBiNjMgcHkzaworNjUxOTIgNjc5ZTNjMjcyZWMyNjJlMmRiZjFkODM5Nzc5OWEzMWY5MjJlYzIzNyBsZWdhY3ktdHJ1bmsKKzY1MTkzIDEwZjQxYWRjMGQyNGU2MDIyM2M1MWExZGM5ZGJkZDZiNmMyOWIzOGUgbGVnYWN5LXRydW5rCis2NTE5NCA3NjFkY2FhYWEwOWUyMTA1OTkwY2RmOGI4ZjZkMmRjZjJiYTQ5ZmQyIGxlZ2FjeS10cnVuaworNjUxOTUgNmNhOGFmNjQ3NDdiNTA4YzY1YzgwOTE0MTUzOWE2OWI3NmJmYTliMSBweTNrCis2NTE5NiAyMGI0YjgzYTU0YWVmZjEyMDE0NWFkZDVlOWQ5OTE5YzcxZGMyM2M4IHRsZWUtYXN0LW9wdGltaXplCis2NTE5NyBmY2JkOWY0ZjA5NWM0ZjAwZTA4NDg1YWEyY2QxZThmMTcwYTdhNWU0IHB5M2sKKzY1MTk4IDA0NDFkMzBkNjcyYmUwNjU3ZGQyZTVmMmY4NGZjZDM2M2ZhZjM1MDIgbGVnYWN5LXRydW5rCis2NTE5OSA4Mzc1YjNmNjQ3MGY2MGI5NDFkMWZiMGJjMGNkNzQzYjdhYzRmMmQ2IGxlZ2FjeS10cnVuaworNjUyMDEgMGQzN2FiMDBmNmQ2YzQ2ZDQ5YjQwNmQ2OGU2ZjhlZWYwZTg0MTQyOCBweTNrCis2NTIwMiBiZGRjMWExNzI0N2UzZjk1NzY2YTE0MzE1N2EwODVjZDgzZGNmY2JmIHB5M2sKKzY1MjAzIGFiMjIxNzdlYjZkYzQ5NTY2M2ExNGQ1NjQ1YTcxOGY2YThhNmY5MzggcHkzaworNjUyMDQgNDVmODhkN2JmMDU3NmMzNGRjNGEzZGU2NDhiYWM4ZjY2NGFiYmNlOSBweTNrCis2NTIwNSAxNzlhN2Y0MTYyNDBhZjVmNjJmN2NmOWRlOWNmY2Q2MDY5Zjc2NTU3IGxlZ2FjeS10cnVuaworNjUyMDYgYjUxY2Q1ZDM3OTVjZmI1MThjZTU1MDFlNmQxYjY3YWJjZGExZWVkMiBweTNrCis2NTIwNyAzZWZhMjA5MTZhOTA0M2Y5Y2RiMmM0ZmQyOGIxNDVmZTFjMDkwMjY3IHB5M2sKKzY1MjA4IDg4N2VlNmJkOTI4NGZiOWI2ZWFlNDFmYmMyM2VhYjQ3MzI5ZWU3ZWYgcHkzaworNjUyMDkgYjY4NzA0NDU3ZWZlZjEwZjI3Nzc1NmQwYmI3ZGFhNjkyNDk0OTZiZiBsZWdhY3ktdHJ1bmsKKzY1MjEwIDc1OWE3MzIzNTkxZWJkOTQwZDM3OGY4MTI3ZGFlN2YyNTQ1YjE1NmUgbGVnYWN5LXRydW5rCis2NTIxMSAzODUzODU2ZjdjNTA1NWQ3YTQzODM3ZjAyZDUzNGU2MzdkNzVhZmEwIGxlZ2FjeS10cnVuaworNjUyMTIgMDhkZGNhZDg1MTM0OGViNGY3MTFhNDQ5YWMyMGRmNDZhMTA0Y2UyMiBsZWdhY3ktdHJ1bmsKKzY1MjEzIDFiMWUxZjg3MmUwOTgzMWRhOTIzYTljYmRlYTc4OGY0ZjdmZDQ3ZTcgbGVnYWN5LXRydW5rCis2NTIxNCAwN2I4OTY1MzE0NWUwMzJhOGI0ODQwMjc2YTJkMGI2NTc0ZjU4YzdkIGxlZ2FjeS10cnVuaworNjUyMTUgNDIwM2I3ZjA4N2MxMDIzNjRiYTk4MzFkNGQxNWY0ZTUyMjY4OTFlNyBsZWdhY3ktdHJ1bmsKKzY1MjE2IDc0ZmIwZGYyOWE0ODc2YTM3NTUyYjI5OTU3ZWI2ODg4NDVkYjgyYzcgbGVnYWN5LXRydW5rCis2NTIxNyAyOTAwNzhlOWI2YTIwMmVkYzUyM2I1NWI5ZjQ4MTQ2OGQ1YTdlYjhhIGxlZ2FjeS10cnVuaworNjUyMTggMWM3OGFhN2VhMzM2MGYzOTJjNGY2ZjY4N2RmZGNjNzU3ZGVhNDgzZiBweTNrCis2NTIyMCAxY2U3ZTVjNWE3NjE3ZTk2NmJiNzQxMTFjODkxNGU0Y2FmMzc2NGFmIHB5M2sKKzY1MjIxIGQ5ZDQ5ZjY3Mzg5ZjYzOTlkYjA4ODQxNzY1ZGYxMjg1NTc4NjY5NGUgcHkzaworNjUyMjUgMTAxYmIxOGMxMGQ1NzVkY2MzMGEyMjQ0MWYzOTQzNWE1NTNmZjg1MSBsZWdhY3ktdHJ1bmsKKzY1MjI2IDc4MTYzMGUyNTU0MGEzNTYyOGM2YTY2Yjk2ZjI3ZTgzNmE1ZjQzY2UgbGVnYWN5LXRydW5rCis2NTIyNyAzNWE0NjJmZjk4NzMxNzNmZmI3NDJjMmY2ZjJiMmEwMjRhOTJlNGEwIGxlZ2FjeS10cnVuaworNjUyMjggYTAyOGMwYjJhY2VlNzg5NjAxMmNkMTg1ZTNmYjFhZDkwMWE5NjIxMyBweTNrCis2NTIzMCA4NjJjMGVhYjFjNTA5YjUwZTBhZmNkMTIxOGRiNDZiYjQxOGRlMWE0IHB5M2sKKzY1MjMxIDhmZjI1ZGIwMTA3ODI5MjFiMjk2N2QyMjJhMmU5MmY0NTM3ODY2NDEgcHkzaworNjUyMzMgMTgyZmNhMDI1Y2EwNGQ1NWNjNGFjZjdmOWIxODMzODNhNjBkMDE4NSBsZWdhY3ktdHJ1bmsKKzY1MjM0IGI3MWQ3NmJmNDUwNjZiZDg2OTI3MWJhMjIzNTBmZjU0NDU2NWQ0ZjQgcmVsZWFzZTI1LW1haW50Cis2NTIzNSA5NzJmNDg5YWUzNTZmNzVmZGJhMDY0MzE4MWQzMjg5MjA4N2MwODI5IGxlZ2FjeS10cnVuaworNjUyMzYgNTU2NDAxNTFlMGZjYzBlZDg0NGI1N2M5ODQzMDI1ZGU2NzBhODQzZSBweTNrCis2NTIzNyBiZTA3YzMwODNjZWFlMjkwYjkwMzhhYWI5MWFmNTYwZDZjNjk3NjhmIGxlZ2FjeS10cnVuaworNjUyMzggNzRlZWY4NWI0YjJjZGRlNzY0ZmFkMTYwZDQyNGQxMGFiNGJkNDJhNyBweTNrCis2NTIzOSAzMDBkZjZiMWU0YjBkNzdmNDIzNDRhNmM4Zjc0ZWMwMzRkNjc1NjJiIGxlZ2FjeS10cnVuaworNjUyNDAgOWE2ZjhmYjE3NWUwNTdiMTIxZjgyNmVhZmE0ZjcyN2ZmNDI2YjA0OSBsZWdhY3ktdHJ1bmsKKzY1MjQxIDMwNDg1YmMxNzI2ODA2MTVhMWVjOTdhMjAyMjRhZWYyNGVmYzRlZmEgbGVnYWN5LXRydW5rCis2NTI0MiA0OTdkMjI0MGUxZjBlOTZjOTE0ZTU2NDRlMzk0ZTZiYmQwN2UwNTU2IGxlZ2FjeS10cnVuaworNjUyNDMgZDNkNTg2MDE5YWZmZjBlNzU4OThmODAyNTE5YmYyNjNkNjZmOTljZSBweTNrCis2NTI0NCBiMjExN2IxODA0OWM0MmEwYzY3ODIzN2RiMGY1MTFmYTA3YmRhYmQ5IGxlZ2FjeS10cnVuaworNjUyNDUgNjEzYjI0MDE0YWZiYTFjYTc5NTVhYmNiODBlZTUyZjAwZTRlYjRjOCBsZWdhY3ktdHJ1bmsKKzY1MjQ2IDc2N2NjODllM2ZkZWM1OTM2YzQ2YzliNzA5MmI2MzUzYjA2OTZiZjAgbGVnYWN5LXRydW5rCis2NTI0NyA0YTQ2MjFhNjg3YTc4N2ViM2Y4M2I2ODdlNjAwNDE4OWYzM2FkODU3IGxlZ2FjeS10cnVuaworNjUyNDggMmQwZTA0MDAxZTgxYzM2YjY0ZTkwNzM2NGJhOTdkNWZmYWVhYjBlYSBsZWdhY3ktdHJ1bmsKKzY1MjUwIDJmYjU1ZmYwNjI3NWU2NWM3MDgyM2Y1OTVlMDRmMjkyNGUyNzg3NjUgcHkzaworNjUyNTEgN2IwODQ0ODEzMzg5M2JlOWIzMjRhYjEwYWNkZDNhNjg5MTZlMDRlMSBweTNrCis2NTI1MiA3MTUzMmFkN2YzZWRmNjA4ZDlhMWUxNDQ5M2E4Njc2MDY0NGQ3YjFjIHB5M2sKKzY1MjUzIDBjMTJhMzdkNWU1ZDNkNDY0OTNjZWFjOTFmNzIyN2NhM2RmZmYzNWYgbGVnYWN5LXRydW5rCis2NTI1NCBiOGQ0ZGJiMjkzOGE1OWExZjkzMGM2YzE0MmJhZjM0NDI3NDk5NDZlIHB5M2sKKzY1MjU1IDlmOWU1ZmU2M2VjMmNkNzQ1OTJiYTdiZGQzYzZkMzA1ODhjN2JhMjAgbGVnYWN5LXRydW5rCis2NTI1NiAzMTExYjY1NDNkZDllOGFlOGU0MGY2YmIzNWQxMTExY2JjZThkMTU4IGxlZ2FjeS10cnVuaworNjUyNTcgZjNiZjJlOWJiODY4YzZlNTBjZjA5YjYyNTgyZWEyYWVlNjA3NDA5NSBsZWdhY3ktdHJ1bmsKKzY1MjU4IGIwMWUyMGQzNzMwNDI1ODYyNjlmZTM1YTk4YWNlMmMzMTVkYzYzNjMgbGVnYWN5LXRydW5rCis2NTI1OSBlM2RhODY5ZGU5OGVhYjE1ZTRlZjBjZDJiNzZmMmFhMTVkM2MxZjYyIGxlZ2FjeS10cnVuaworNjUyNjEgMmRhNDJkY2JiOGNlYmIwNGVkYzUwMmQ0MjI2NzE1ZjYzZDBlYjk2MCByZWxlYXNlMjUtbWFpbnQKKzY1MjYyIGNjODRlZTY2NjdiNzBlNTg3ZDUxZTdlNGEyMjViYTA3NzM2N2RhZWMgcmVsZWFzZTI0LW1haW50Cis2NTI2MyA5NWRmMTE4ZjQyYzZmMjFiMDA3YWE1ZTgxMDFiYWE5M2I3Yjc2Yjg2IGxlZ2FjeS10cnVuaworNjUyNjQgMTUxYzFjZDk0YTQwMmJjMGU0ZTNmM2UwZmE4MzM0MTUxN2U0NGFiZSBweTNrCis2NTI2NiA4YWZjNGUyYzRjMDIzNmRkNTlmZjY2NWY2ZWQ1YTRjYzAzYjk1OWViIGxlZ2FjeS10cnVuaworNjUyNjcgNDBhNTczZjAxZmM0YTJkMTcxZmZhMTViYjVhODFlOGQ3ZTZhYjQ5NyBweTNrCis2NTI4NCBjY2JjODc3NGQ4MmI1NWM0MWZjNzAxMjI0YTY4Y2MxMWI2NmZiNzE0IGxlZ2FjeS10cnVuaworNjUyODUgNzkxYTYzMWEyYzdjODI4MTkyNzgxMWFmZjk2NjJlNjhlN2NiYTA5NyBweTNrCis2NTI4NiAyNjJkMmVhOGFiNTBkYTViZjRiMjYyNjI1M2I5NGRlZWQxNzRjNGE3IHB5M2sKKzY1Mjg3IDNhMjY3ZmU3MzgzYzQ4MTEyNjYwNzI4ZGVlMzE4NzlkODk0MjVlZTUgcHkzaworNjUyODkgNTAyMjhkMmIzMmMxNDExNGRmMmEyYWViZTllYWZkMjRjZWQ0MDdmMyBsZWdhY3ktdHJ1bmsKKzY1MjkyIDIxZWFjOTEzODI0OTViYmJlMDA4NDgxMTc0M2Q5OTkyYzZhZDY2ZTAgbGVnYWN5LXRydW5rCis2NTI5MyAwYzdmYWIwYjA1YzAzNjM3NmIzZTRjNzkxODVjZjdkN2UxOGM1MDFmIGxlZ2FjeS10cnVuaworNjUyOTYgNjg5YjVlOGFlNjlkNGIxNTM1YTFmNmE4NGE4ZTQzZDNjOTc2MDQzMCBsZWdhY3ktdHJ1bmsKKzY1Mjk3IDAwODM0MjUxOWU4NjU2Nzc3YzMyMzkzY2YzZTgxYjhjNzA4ZDg5ZDUgcHkzaworNjUyOTggZmQzMDhmMDM4YWZiYTc5N2I5Y2I1MGFlNGFjOTBmNDBkMDUxNjNiZSBweTNrCis2NTI5OSBiNDBlMTNiY2I5ZWE1ZTg2NTM4Y2Y3NDhiNWVkZmJkM2ZkYmQ3MTE4IGxlZ2FjeS10cnVuaworNjUzMDcgNDBlOTQ5YTY4MzQ0NjVhNDFjZGY3NjQ2OGRkYmE5OWNmNjQ2NjkzYSBsZWdhY3ktdHJ1bmsKKzY1MzA4IDhkMDVkZGE3MzVmODc5Yzk5NDBkYTdlNTNlYzg2NWQwMmY4NWI0ZGYgbGVnYWN5LXRydW5rCis2NTMwOSBiMzVjZTk1NGEzOTIxMGFiOTY0NGY5YWQ2MTA5ZjJmNWQyNjE3ODI3IGxlZ2FjeS10cnVuaworNjUzMTAgOGYzNjIwZjVkNjhhYWJkNTk5MGQwOWZjOTc5MGU2MzE5YjFiMGEwYyBsZWdhY3ktdHJ1bmsKKzY1MzExIDkwYzI1YjM2ZTBhZDY5NTc1Y2FjODg4NDYwY2M1YmQzZThjMmI5ZTMgcHkzaworNjUzMTIgODNjN2E4ZmFlYjc4ZTY5YjdkNWVmNjg0MTQyYjIxNTgxZWM1NTJiMyBsZWdhY3ktdHJ1bmsKKzY1MzEzIDEyZTNjMzhkMzE2ZTM4ZGMxM2MxNjdmZjIwYmM3Y2YzODIxNDBjNTMgcHkzaworNjUzMTQgN2Y4MjJiNWQzNjcwMTQ3ZjljMzE0ZmNmODYzMGExZWYxMjY0MDdlZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjUzMTUgNjdkMTc3YWFiOGE3YzVkYjAzYTJhZTA1NWU4MzIwYzk5MTA5YjMwMSBsZWdhY3ktdHJ1bmsKKzY1MzE4IDhhMTMzNjYzZWJkZTA5ZjY5ZmI1M2QyZjRjMzgwNTY5YTAyODEwMWUgbGVnYWN5LXRydW5rCis2NTMxOSA5MTU0NTUzZjg3NmJjN2MyNTYwNzUzMzMwMTBlNDA4NjA5MmY3N2QzIHB5M2sKKzY1MzIwIDBmYmRkYzA0YWVlMTU5YTRmY2UyMTYyYmRkYjIxNWNhNjYyMTZiZDggbGVnYWN5LXRydW5rCis2NTMyMSA1ZGI0MzI4NGVhN2FhYzI2YTE0N2M3MzhlNWEwODA5ODczNjAwMDIzIGxlZ2FjeS10cnVuaworNjUzMjIgMWVjMzhiNzA3Y2Q2YjE0OWU1Nzk4N2YyY2Q4M2MzOGJhODJkNGQ2NCBweTNrCis2NTMyMyA2ZjIzMmZjZmI2NTc2YzU1ZDRmYWQ3NTRjNThmMDlhODdiYjcwNmZmIGxlZ2FjeS10cnVuaworNjUzMjQgYmU3NTIxYWY4NDVhMGU4NGM2YzUwODk0MTdlNWIwMzZmYzUyOWM1OCBweTNrCis2NTMyNiAzNDc2MDNmNzk0ZDExYjU0YjA5OTMzYjNkN2U5NzZkMzZkNmMxMzFkIGxlZ2FjeS10cnVuaworNjUzMjcgMWRlNzE4YTMxMDA0ZTE5NjdlNWNkNTEzMmNkNGVkNmJkNjU2NGRlMSBweTNrCis2NTMyOCA0Y2ViYjVjODRkN2NmYmE4NmY4MWY2MDQ3Njg0YjhlOWY2ZTgwNGNjIGxlZ2FjeS10cnVuaworNjUzMjkgMDM3ODE4Y2FmYzM5MzU5OTYwNmVhMGY5YzE1ZWY1OTYwOTlmNDhhNSBweTNrCis2NTMzMCA0YzExZmMzYjMzYTIzM2ZiNGMyNmZmMzIzZjI2YzdlNWNkOTE5NDVhIHB5M2sKKzY1MzMxIDM1YjFhMjA0NzBkYjA3OWMwNDU3YzZhNGFiN2Q5NzM2NzJlNjllMTAgcHkzaworNjUzMzIgYjM5MDFjNTY2MGY3MWQwYTcyYzBmMTQ1NTcwN2IxNGIwMjQ1OTE0YiBweTNrCis2NTMzMyAxODczODhjMTE1MDUwYzk5MTA0MDgxNzVkMmY1ZjIyNGE5MTYwYmIzIHJlbGVhc2UyNC1tYWludAorNjUzMzQgMGFhZmQxYWU1MTIwOGExYjZjYzMxMjBiZWFhYjNhZGRmNTdjNDIzYiByZWxlYXNlMjUtbWFpbnQKKzY1MzM1IGM0ZDI0ZmM4YmE4YTJlYzY1YjJhNDNkODhhM2I1MmQ1MDBkYzQyMjMgbGVnYWN5LXRydW5rCis2NTMzNyAxM2IyZTExZjNjZjViZDc0MDZkYWZhNDhkZjFmY2JjMzdkMGQwZDIyIHB5M2sKKzY1MzM4IGZlYzk4NWNiZjUzZmFiMDU4Mzc5OTUzNzAwMTI0NjRkOTcwNjk4NDcgcHkzaworNjUzMzkgNDU1MDE0NGIxNTYwNjZmZmZjOGZhNmRlODg0ODBjMzE1NTQ5NmYwMCBsZWdhY3ktdHJ1bmsKKzY1MzQwIDU0MjhmN2ZhMTcxY2YxYmE5NjJjOGQ5YjY0ZDIyNGYzYWI5MzYxOTcgbGVnYWN5LXRydW5rCis2NTM0MSBkZTc1ZTcyODBiN2FhNjE4Y2NhNWRiZjcxYmVjMmUyZjk4MDVmN2JmIHB5M2sKKzY1MzQyIGE5NGYxMzZiNTI4MzgyYzM5NDI4Mzg1MTMyM2M4NTc4YzMwMDI5MGQgbGVnYWN5LXRydW5rCis2NTM0MyA2MzFjZDlhZTVjOGUyMmUyM2I3YWUyZmY2ZWU1MmZhZTU0ZDJmMTk2IHB5M2sKKzY1MzQ0IDRmZWNjOWI5OWQ5ODUyMmRmMmRmNTYzOTg3Zjc3MTVjOTJhZmM5YzUgcHkzaworNjUzNDUgYTQ3NmVmNWVlYmFkYmU0Mjk3NmUzM2VkODhkNWE1NThlMDZkOWNhMyBweTNrCis2NTM0NiBjNTllOTBkOGQxYzcwODIxY2UxMjI0ZTVmMjVhNzVhYzI0ZGI0OWI2IGxlZ2FjeS10cnVuaworNjUzNDcgM2MxNTVkNzgxM2NjMTc1Y2I5MTc5YTFiMmY0YmQxNDM3OWVkMmQ4NCBweTNrCis2NTM0OSBjMmI1YTBhYjMwNzA2Mzg2YjlmM2M5M2E4M2RlOTQ3NGVlNDYyNmI2IGxlZ2FjeS10cnVuaworNjUzNTAgNzBkNDBmOWFkMWQ3YWNkMjc4NGUzNjc1NmM0Yjg2OWRiN2NjMzM4MSBweTNrCis2NTM1MSAwZDJkMjZmZmUyMGViMjQ4YWMzNmUwMjgwMTQ5YjQ5MzEwZjdmNzljIGxlZ2FjeS10cnVuaworNjUzNTIgMTQ4MDIwYjVjNTMxMmUzOTgwM2EwMWZiYTE2N2M0NTQ4ZGY0ZDMwYyBweTNrCis2NTM1MyAxMTQwNzc0ZjY5YTU3MmM5NWE0MjAxYjFjYTk0MzhmYjlkYzQ1ZjhjIGxlZ2FjeS10cnVuaworNjUzNTQgZjFmYzdkOTM1MDlkM2ZlZDIxOTAxMWFmNTQ5YTg0YTBmZTVjM2I1YiBweTNrCis2NTM1NSA1ZDJjZDk2YTE5NmJmZDIyYTQzODNjMDU2OGNhYzJjMzFiNzcxODUzIGxlZ2FjeS10cnVuaworNjUzNjUgZjEyMWE5NjNhYjY5NGRiYmYzNzU4Y2JkYWZmNDZhYjJlYzMxMDQ5OCBweTNrCis2NTM2NiBlZmY0Yzk0YzAyY2QxZTEyZjg4YjA1MWI0NWQ3MzgwZDA2ODM5ZjJmIGxlZ2FjeS10cnVuaworNjUzNjcgYzBkZjFjNjQ3N2JiOTI3N2FmMzQ5Mjk4ODI2YTI5MjVhNmE0MDk5NSBweTNrCis2NTM2OCA5NWJjMGNmMzEyMDNjZjg3NzJiNzM3ZDIwMWVjZjhkMTg0MTFiMzkzIGxlZ2FjeS10cnVuaworNjUzNjkgY2MzNzE1NzBlMTQxMzIzZmEwNDdkMzhlNzJlMjc2NTA0MjE2YzZlMSBweTNrCis2NTM3MCAxMzgxNzc0MmE3ODEwYmExNDM2ZDljODAzYzc2NDNlNjhjODU5YTExIHB5M2sKKzY1MzcxIDE5YjZjNjM1ZjVjMWQzMzAwZTY5MTM4MzU3YTk4ZmFiMzZhZjhmNDAgcHkzaworNjUzNzYgMTUyMmYzZDViZTZlN2E5NDY5NzM0M2E1MTJlZjhiM2M3NDAxM2RjYiBsZWdhY3ktdHJ1bmsKKzY1Mzc4IGI4YThkMTEzMDc2ZmI5NDU4NGY5MTlhOTUxYzVkMzNlNzQ4YmExMDYgbGVnYWN5LXRydW5rCis2NTM3OSA0YjcyYzdmNjMwNzc0NWY3ODg2YmNmM2VmY2E5OWQ4ODc3MzIyMjk4IGxlZ2FjeS10cnVuaworNjUzODEgMTNlYmI0YjVkODlhYTg5YTA2NjE4NmNiZDE0Yzc3ZGQ1NTE3ZDkyZiBweTNrCis2NTM4MiA0NWJjZDk2ZTU2ZDFkNDIxZmFlNzZjNmM0YTMyN2M3ZDg2OGU0MDJjIGxlZ2FjeS10cnVuaworNjUzODMgMGFmZjNiZjBhMzQyNmYxMjQ0MTliODQwN2NhYzg4NjRmYmExYjUzNCBsZWdhY3ktdHJ1bmsKKzY1Mzg0IDY5MjJmODRhNzE1OGY5ZmM5MTU4YzRkNzRkMmY0YjJhN2RmNzEzM2QgcHkzaworNjUzODUgNmI3YzYxMDI3ZWIwNGZhMzcxOGU4N2RiNjc5Y2FlNTlmZGVkMTM3OCBsZWdhY3ktdHJ1bmsKKzY1Mzg2IDUyNzlkNzk2MTA5MzdhNWI0YzQ3NTAxMTk3ODEzYmU5NDNmN2QzYmIgbGVnYWN5LXRydW5rCis2NTM4NyA0YjFiYTUwZDNiZGY3YWRlMjU1YmM0ZGY3OTI1NTI3OTI5MTFhMjM0IGxlZ2FjeS10cnVuaworNjUzODggMTY2MGIzMzUzODIxMDJkYzZjYjM5MDUxNzIxNTBhYTRlNTcyNzgwMyBweTNrCis2NTM4OSBmOGQyYTMxODVkOWFhZmYzYzJmYTEyYjg3OTdkYjI0YzcyOWJiNGM3IHB5M2sKKzY1MzkwIDRmNDZmM2Y3MjMxYmZmODljMzk4MjlkOGQ3Y2Q1OTM0Mzk5NmUyZDcgcHkzaworNjUzOTEgZDIxYzBhMmI2YjExYTRlOWY2OWI0MzJkOGM1YmJlZmQ5ODMxM2VlNCBsZWdhY3ktdHJ1bmsKKzY1MzkyIDAwMThiMThmNWY0NjQwYTcyODc1NWU3NTc3NTUzZTlmZTE0MDBlZWIgcHkzaworNjUzOTMgZjBiZDM3ZWE2OTQwNWNiNDM1ZWUxY2ExYmJlZWUzM2RjYTE2NGVlYiBsZWdhY3ktdHJ1bmsKKzY1Mzk0IGI4OTQ1ZDhmMDBlYTI1MzAzZjg3YWRhYjRkYmYzY2Y0NjRhZTcwMTMgcHkzaworNjUzOTUgYTdiZjUwM2M4NTdlOWM3ZWYyM2FmZDhiNzFjNTFkMTdkYzYyN2M0NSBsZWdhY3ktdHJ1bmsKKzY1Mzk2IGU4Nzk2YjU1ZjgxYjA4ZDA1ZjJmNzJjNjE0ZjgxYmEyNWY0OGMwMzcgcHkzaworNjUzOTkgYmE4NGMxZTNkZDYwY2VmYjNjYTc2MWYyYjFiMWM4NzcwZDY3ODJhOCBsZWdhY3ktdHJ1bmsKKzY1NDAwIDRhNGMyMGEyMTY3YmIxODNlNTdhODRlNjFjNTkxYzUwOWM5OWI4NmQgcmVsZWFzZTI1LW1haW50Cis2NTQwMSBkNTg3YWE1ZTgyNGQ2NTE5YmNkYTViM2FjYzRmMDlmZGIwYjVhZWYzIHB5M2sKKzY1NDAyIGZlZGRhZjIxYzJhNDlmN2RmOTQ3NzVlNmZlY2VkY2YzN2QwYTc3ZDMgbGVnYWN5LXRydW5rCis2NTQwMyA3NDc1YjBmY2M1ZmYyYmMzZGUzMGU1Mzc3YzcyNWYwYmFiNTRlMjczIHB5M2sKKzY1NDA0IDY1NDQyNTQ2MTczZWE0MjgyMDI0MTdlODRkYzY2OWIxZTQyY2RjZDAgcHkzaworNjU0MTIgNzYzZmYxYmE5MWM3ZjJkM2U1OWIzMzE5ZGQ4YjA3Yzk3MTdjNzI4ZiBweTNrCis2NTQyMCBiZjUwMDg1ZmJjZDMyZDFjNDJkNDNlNmVjMzc2OTA2MzFlMDQwYWMzIHB5M2sKKzY1NDIyIDk3NjA3ZmNiN2IyNjE5NjFlYjY3OTM2MWNjNTcxOTk1NWVjZjBhNGEgbGVnYWN5LXRydW5rCis2NTQyMyBjYzQzYjk5OGY1YjUxODNjYjFiMTIyODRiNWM4YWRhNWMxMzQ1NzFkIGxlZ2FjeS10cnVuaworNjU0MjQgNDM3ZGRiYmNkZDI5NGI3MzVlNjkwYTQ1MDJmNDNjY2EyMGY0OTBjOCBweTNrCis2NTQyNSA0ZTZhMGFlMWE4ZTdhYWU5Njg0NzQ0ZjZhMmIyNDEwMDkwM2FhY2QwIGxlZ2FjeS10cnVuaworNjU0MjYgNzRjYzkzMmFkOGRiNjg2YjdiMGQwOGE3YTNlYjliMWU2MzRkMjI3YSBweTNrCis2NTQzMCA4ZjMyYjEzMjY5YjRiMWFlOTQ3ZGZlODA1NmU5ZmJlMDJkOGQ4ZjlkIGxlZ2FjeS10cnVuaworNjU0MzEgYmQ1MWNmNzE3NjI0NWIwZWViZjZkZGQ2ODE4ZjZmNTNiYjAzZDk0NyBweTNrCis2NTQzMiBlMDA3YWY3OWY2N2M2YTUxNzBhNWIyNmY5OTE2ODZkOWY1Y2UzOWJlIHB5M2sKKzY1NDMzIDFkYjQ4Mzk0ODEwNjc4OTM2MzgxY2FjYWYzMmEzMzhlMTZkNDM1YTIgcHkzaworNjU0MzcgM2U0NGRlYmMyYmM5MGE3NmIxZjYxODNkZmU5MjQxZmMxOTUxOGIyZCBsZWdhY3ktdHJ1bmsKKzY1NDM4IGRmNWIzOTRkMWUyNDM5Mjk1YTYyMDkwZTY5MjM2NTk0ZjU2ZTEyMDEgbGVnYWN5LXRydW5rCis2NTQzOSBlOTM0OTU2ZGRjZTM3MmMxZTIxZDc1N2NjNDBkZDA2MGIwMTgzZDE4IHB5M2sKKzY1NDQwIDRlNDVkMGNmYWY3MWI1MmJkMTM5MWM2MjkwZGUxM2NmZmZiYWIzMjYgbGVnYWN5LXRydW5rCis2NTQ0MSA4YzQ5YTNlOTBmNDBhODRmYjgzNDkzZGMzNWQxOTg2ZTI5YjZhMjY4IHB5M2sKKzY1NDQyIDE4MDNkZTVhZTBkYzM3MGRmMjM3MjI3NmQ1YjhmZmM0NmEwNzdlNDYgbGVnYWN5LXRydW5rCis2NTQ0MyAzM2RhYWU2MzM5ZWUzYTI3MGEyOTJkYjY3YzUxNjcyM2MwMzNhMWVmIHB5M2sKKzY1NDQ0IDk4NmNiZGFmMTU0ZmMyNzNiMzcyYmU5ODZjNDkxYTQ2N2Y0MTM2NDEgbGVnYWN5LXRydW5rCis2NTQ0NSA1ZjNlZjY0MDBhOTY3NjJlNjBjMjdlZDUxYTA1NWU2ZDc5MTFkYzdmIHB5M2sKKzY1NDQ2IDI1MTI4MjU4MDA0MWEyODA2ODcyODdkODRhOTliZmZjM2YyM2ZiMzQgbGVnYWN5LXRydW5rCis2NTQ0NyAwYzZiNmJkODVhY2FkMzczNzFiOTlmYWEzYzgxZmNlZDk3ODQ4NzVmIHB5M2sKKzY1NDQ5IDFmMjJkZTkzZGFmOGUzM2NmZDAwYzdhZTBlNTMzMDU3YWY3OGU4ZjggbGVnYWN5LXRydW5rCis2NTQ1MCA4MmQ0ZDZkZWUwMzQ3NWUzZTZhZmFhNGIwMzg3YjgzNWNkZjYxZWRlIHB5M2sKKzY1NDUxIGQ0ZGI1ZGVkNzZjZTFmYzE4YzRkY2MxNDY2MTY0ZDhhNDQ5MDMxZjUgbGVnYWN5LXRydW5rCis2NTQ1MiBkN2JhZTdiZDM5ZDZmMjMwNjIxNTAwZDcyZDRlODZhNzliMzQ4MDQ1IHB5M2sKKzY1NDUzIDJlOGNkZWUzNGQ5NzdlZWFiOGEzOWEzYTgyOWI1MGEyZjBkMjhiZTMgbGVnYWN5LXRydW5rCis2NTQ1NCBlMzYyMGI3M2E3ZDE0ZjczM2FjNTJjNDYxOThiNzUyMjgzZDVlZjRhIHB5M2sKKzY1NDU1IDM1ZTdkYzk3N2E2M2MzNjQ0NzNmMmM0MWE4NjdmODBjZTIxZGQ3ODYgbGVnYWN5LXRydW5rCis2NTQ1NiA4OTcyY2U1NjI0YjRkOTE2MDdjYWZlYjIwMjM1Mjc5ZGYwOTY5N2M3IHB5M2sKKzY1NDU3IGM3N2FjOGJkZDNmZWI0YzdjZGE5NDZlNDkxMzYzNTdjMGE0MWYyNDEgbGVnYWN5LXRydW5rCis2NTQ1OCA0MzIyYWYxYjZkM2Q2YmQ1ZWViMDE2NmU2YmQ1ODNkZDE3ZmNlNjA0IHB5M2sKKzY1NDU5IDI4OGNhMWM3Mjg4ODA5NGI1OTMyYmZiMjc3Mzc0ODQ5NzViZjE1YTkgbGVnYWN5LXRydW5rCis2NTQ2MCBkYzg1MGRhMDRiZDU0NzIxNmUzMTQ3M2Y2ODUwMWZhZTIxMmM2MmVmIHJlbGVhc2UyNS1tYWludAorNjU0NjEgMTUwOGNlYTJjNmI1NmU1ODAyMjJmODI5ZmI1NjQzMDgzNDIxNDAzNiByZWxlYXNlMjUtbWFpbnQKKzY1NDYyIDU2YjNiMmNjZmQ2ODhkOGE1NGU1MTI5OGQwYWNiYTVmNjAyZWE1NGEgbGVnYWN5LXRydW5rCis2NTQ2MyA1NWUzMjU4MDk0ZjAzMmQzYTYwMGI1YjRjYjcwZGIwMjAzYjg5OGU3IHB5M2sKKzY1NDY0IGZkZjNiNmY0OTlkYWUxZWE5NDAxOTk0OTAxOWUzNjFhNzA4MmEwMmIgbGVnYWN5LXRydW5rCis2NTQ2NSBkYWRhOTRhNTMyOWYyZjgyOGQzZTc5NmMzODljMWNiNTUyNTY0YzI0IHB5M2sKKzY1NDY2IDFjMjRhMDlhY2I5N2M5NDA4Zjk3NjZjNzA4ZTg1ZmMyZjExODQyOGQgcmVsZWFzZTI1LW1haW50Cis2NTQ2NyAyMWYxNDYzODdhNjNjZmI1YzkyODhkN2JiNWM4YjMyMmJkYmUwY2VjIGxlZ2FjeS10cnVuaworNjU0NjggOWRjYjFkMjhlZmJiOGYzOWYzYTU0ZDI0NjExMDI4YTc1ZjY5MjA3YyBweTNrCis2NTQ2OSA4YmQ1NjUwMTkzYzYwODRlMzM2ODUwMGFmNDQxYzg3ODMyMzc5YTdjIGxlZ2FjeS10cnVuaworNjU0NzIgNDBiZTM3ZTY5MTU4ZjZmY2Y2ZjkyOGJmODg0M2U1ZDI3YWQzZDk1NyBsZWdhY3ktdHJ1bmsKKzY1NDc1IDY0MWVkZWU0ZmNiMTRmMWQ2M2NlM2JlM2NkYmYyMWYxNmMxMTJhZDcgcmVsZWFzZTI1LW1haW50Cis2NTQ3NiBjMjM1YmE3MGU1OTRiMTQwNjc4YjU1ZDQ5MzhmYjQxOGFjNDM1ODlhIGxlZ2FjeS10cnVuaworNjU0NzcgZGYwYWMwNmNkZGNjM2U4YjVjMTBhNmRkYzBhZjlhYzIxMjFiMjhmZCBsZWdhY3ktdHJ1bmsKKzY1NDc4IDUxMzQwNmEzN2UzODUzNmZlZmY1ZGU0Mzk2NjQ2NGY0N2MxZjM0MTcgcHkzaworNjU0NzkgYmNmNDBjODE4OTFlMTBmOWQwZTM4MTU2YWE3YzdmODJmZWRmYmU2YyBweTNrCis2NTQ4MCBhYjRjOWMzODRkMzE4ODAyMzc0ZjA5MDFkYTIxNDVjYTQ3Y2ZjZGFkIGxlZ2FjeS10cnVuaworNjU0ODEgYThhODIzMmNiNTQxOWEyYmJkZDU4NTMwNGEzNzAzMWZiYjY3MTg5YiBsZWdhY3ktdHJ1bmsKKzY1NDgyIDU5ZjRmOTk0NzMwZmE3OWE4MTliODcyMDg1NWZkM2M3NGFjMGJhZTEgcHkzaworNjU0ODcgNDk0MTFkN2RjMjU3NDczYjA4ZGQ2MDQzNzVlODg4Y2RmNDIwMTFiNSBsZWdhY3ktdHJ1bmsKKzY1NDg4IGVhODNmZWU1NzQyMjMwYjk2NjQwYWNmMGJiMGI4ZWExN2RmZTdhZDMgbGVnYWN5LXRydW5rCis2NTQ5MCA2Yzg4ZGUzYzRkNGRkODUyYTZjNGE1NzIwNjA4OTQyZGUwZTUzNTdkIHB5M2sKKzY1NTAyIDIxNzQ1NTYzZTY4MGUwZDRjZmYxZGEzYzlmNWMzMzU2MTk5YjkyNzMgbGVnYWN5LXRydW5rCis2NTUwNiA2YmMzY2ZlMDk4Y2U0NTc4ZmIwZTcyMmQyNDlkZTliZTc2M2IwNjYyIGxlZ2FjeS10cnVuaworNjU1MDcgNTFmNWM4ZTg4NWNhOGM0OTgzZjEzYjA0NTljMzhhZTgxNDM2NDI5MCBweTNrCis2NTUwOCA5M2JjYzkyMDFlZTA3ZjczNzI0ZDU3MGJkMWMzNjM2ODlmMmQxODk1IGxlZ2FjeS10cnVuaworNjU1MDkgZmFjZDgxOTcyNTIzYjk2MzhlOWMzODkzYzJkZjA3Nzg2MzI3NWM3YyBweTNrCis2NTUxMCA0ZDg0MjdkMjVmODRlMWNjOTdkNjAzMGU0YjY1YmE5YjQ2ZWU2NjcxIGxlZ2FjeS10cnVuaworNjU1MTEgY2ZmODJiOTkwYTIyOThhMjkyY2U1MDEwNzgzZTY0Mjg3NDgzNDI0NyBweTNrCis2NTUxMiA0N2NkNDUxNjg2M2VlYTdiYmRkNjRhZmZmZDZlNDJjN2FjZDc4MjNlIGxlZ2FjeS10cnVuaworNjU1MTMgZTliNmU0NDg4ODcxZTlkMmQxY2M1NGFjMDQyZTVmZDA2OWI0MmVhOCBweTNrCis2NTUxNCA5NzlmMGE4OTkwM2YyOTM1ODJiM2VjZWU4YzYzZjI3MjJiMWI3MWY4IGxlZ2FjeS10cnVuaworNjU1MTUgNTdiOGM3NzhkYTA3MzRjMzE5MGRhYmY4MzIyMDkxNDMwMzc4N2U0ZCBweTNrCis2NTUxNiBmNzg0NmE3MWUzOGEyMTEwODYyODYzNjE0MzAyOGI4ZjI2M2MyNGEzIGxlZ2FjeS10cnVuaworNjU1MTcgM2QwODNlNjkyNjVlZjBjYzI3NTBhMmY3NzcxMjlhY2RjNjVlMzE3MSBweTNrCis2NTUxOCA2YzZhMDMwNTY3ZGQwNjMxMmFiZTQ2ZGNmY2NlMWQzM2M5NDdjOTI3IGxlZ2FjeS10cnVuaworNjU1MTkgY2YzMzFmZWYzMjkzYzcyMDBlOTdhZmE2ODUwOTZhZmU5MGFkZDBhNSBsZWdhY3ktdHJ1bmsKKzY1NTIwIDU5NGM5OWMwZjA3ODRhMmY2MDQwMDJlZjFlYTMyMTZlMGZhMzE0OTAgcHkzaworNjU1MjIgZGYyNzdlNjQyZTU4MDBiMzk0ZTI2ODhjZDZmN2QyZGI4OWUzMTkyOSBsZWdhY3ktdHJ1bmsKKzY1NTIzIDBkYTMwMmY3ZmU5NDMyYzczM2Q5MWZiMDhhMDRhMzkzN2Y1ZmRlMDkgcHkzaworNjU1MjQgMzgxYTcxZGYwNjBlNGY1OTMxOTM1NmVhN2M2ZDdmNjgxN2E3N2UyMCBsZWdhY3ktdHJ1bmsKKzY1NTI1IGZmYzFkOGY4YzVhZDAyNWI2ZTI5ZDBkYjhmZDg2Y2MyMGYyYzAyNmUgcHkzaworNjU1MjggOWZhYTg3OTAyMTE0MzRmNDU0NjU0YzBiYjY2YzkxMGUwNzY2ZTJjMyBsZWdhY3ktdHJ1bmsKKzY1NTM2IDY4ZGY4NDJkNjMzMDg0ZmRkNWM5ZTZiZmNlNTVjMmYyMTczZTU4NGIgbGVnYWN5LXRydW5rCis2NTUzOSA1Yjc3NGZlMDRjN2UxNzdlM2Q4YjNiMjMxNWUwYzgyMGNkMjgwYmIxIGxlZ2FjeS10cnVuaworNjU1NDMgYjY1NGQxNGNiOWQ5ZWUwZDQ3Y2YyM2U2YzE2NGM4ZjBjZWFlOTg3MiBsZWdhY3ktdHJ1bmsKKzY1NTQ0IGU1ZmMzZTE5OGRkYWMxYzdjNzljNTdhZTk5YTA3ZWFjOGMzY2IyYmQgbGVnYWN5LXRydW5rCis2NTU0NSAxNjM1ODkxYjE4ZTgxYWQ2ZmM5MTdjNmE0NDBlMGI2YWVkYzdkMjQ4IHB5M2sKKzY1NTU4IDIzNjYzNzM5MDQ1N2U2YjMxODFlYTZiNjJiNzY1ZjQ4YWE5MmM4M2EgbGVnYWN5LXRydW5rCis2NTU1OSA3OWVhMzQwZDFhNTlkYWZlMGM1ZDY0MTlkYWUwZGUxZGU5NWI4MWU3IHB5M2sKKzY1NTYwIDgzYTcyMTkzNjRiMTM2NzE4ODNkM2VmOTRhMDJjN2EwYTVlMTE4MDYgcHkzaworNjU1NjEgNTQ5MTA4ZTlhMGEzMjIzMTdiNTI4OTJkMzQyOWEwMGNmNWEwNTQ4NSBsZWdhY3ktdHJ1bmsKKzY1NTYyIDljY2MxNjgyZTE5Yjg3ODlmNDAyZDc3YWIxZmViNjA4MDVlM2Q0ODIgbGVnYWN5LXRydW5rCis2NTU2MyA1M2FkZTllNjhiNTYyZTMzYjRlNThlMzc1MzJkYWRkYjRkN2ExNmRkIGxlZ2FjeS10cnVuaworNjU1NjQgMTIzNzNmYTY4MDRlNGI5ZjYxZTBjMzU2NWU5N2ZhMWM4ZWIyNDMxOCBweTNrCis2NTU2NSAwM2RhZTAzN2IyYjcyNzU1NWQyOGRjMGQ2Zjc2Y2ZhOTY5MzNjMzEwIGxlZ2FjeS10cnVuaworNjU1NzggZjFmYzk0NzcyMmYyOWE0M2NiMjk3ZDQ5MTg2MTNjMmZlN2U2ZDkyYiBsZWdhY3ktdHJ1bmsKKzY1NTgwIDA0MmQxNmEwNTAxNjkxMWJmMDliY2M4ODE3YzhiMmFjZTkxY2ZhN2IgcHkzaworNjU1ODEgYzhjOWU3OGZjMDgyMzgwMWE3MzdiZjJjYjBjMDNkNTIwMDE5MzE4ZiBsZWdhY3ktdHJ1bmsKKzY1NTgyIDg1YjY3ZmI1NjcyYjk5ZjMxMjlkZTAzM2YwYzYwMWZlYjZkNjVmYTcgcHkzaworNjU1ODMgY2ZhZDNmN2Y1ZTYzOGVjMWRkODQ3MTY0ZjFiNzk1MDdjNjMwN2U3ZiBweTNrCis2NTU4NCAwYmY2YzQyYWI0ZTQyMzg1NmI4OTQ2MzhlYWM5MzE3OGNkM2E5NzZjIGxlZ2FjeS10cnVuaworNjU1ODUgMmIzZDQyZWZmZTViZTE2OWE3OWQ5MTU5YmY2NzQwYjE0NWQyYTY4ZiBweTNrCis2NTU4NiA2NDE2ZTYwNDRhMzAxNjc2ZjAyYTZhNWI5MmVmZGI4OWYyNjk4ZmYyIGxlZ2FjeS10cnVuaworNjU1ODcgYTZkNmMyZmFkMjIwMGVjZjlmMjY4NDM3ODUwMjM4OTdlMTIyMDUyNCBweTNrCis2NTU4OCA2NTkwMWZmZmZjNmFiZTVhMzBiZGQxY2QwMzEwOGU5YTc1YmM0MzBkIGxlZ2FjeS10cnVuaworNjU1ODkgNDg3ZTBkOWEzODFhODAwMDA2YWY3Njc0MjgxMGMxOTY0MWRlZTg0NCBweTNrCis2NTU5MSBlNmZlODNjMmUyNjIwNmY0YWFlNjJjMjMzNmU1OWZkZDg0Y2U0ZDk2IGxlZ2FjeS10cnVuaworNjU1OTIgYjJjNTA1ZDRhMjAzZDgyZDgwMmU1ZDg0NzRlZDYyZTMzM2Q5MzQ0MyBweTNrCis2NTU5MyBmZDdiOTNhMDFjMDRiN2U0ZWQxZDk3MzVkZTRhZjFmNzc2OGExOTY5IHB5M2sKKzY1NTk0IDk0OWI5YTJiOTg2NzYxMDk2MjcwZTEwZjVlNmFhMDJkNDM1YjM3ODYgcHkzaworNjU1OTUgZTJjNzA2Zjk5MDZjMzg1Yjk3OTM2ZWEwNTk2Yzg1MjY5MmZhMjhmZSBweTNrCis2NTYwMSA3MjI0ZmZmOTg4MjNiYzk4MzAwNzk5YjNjZjljNzY2ZTc2ZDY1NjVkIGxlZ2FjeS10cnVuaworNjU2MDUgNDc5Njc2OTBiNTg1NWVjOWNhMzMxYWViMjMxZWNlNDE4YTc1YTEzZSBsZWdhY3ktdHJ1bmsKKzY1NjA2IGFhZDU4MDlmYzQxOTU1YjE0MTFkYTc3NzBkOGY2NzgwYjY1Zjg1ZTcgbGVnYWN5LXRydW5rCis2NTYwNyBlZTBhNTJjOTgyZTVmNmFhNDVkZWYwOGEzY2NlOGJiNjBmMGZlMmZmIHB5M2sKKzY1NjA4IDYzYWVhOTljOTcxYTY3ZDhlYzBiZDljZjlkOWRmNjdjNzEwMmJkZmMgbGVnYWN5LXRydW5rCis2NTYwOSBkNjE1YWE5ZmRmMzYxMDQ4ZGUyZGIxNGZmMzAzMjk3YjBkMmQ3YTdjIGxlZ2FjeS10cnVuaworNjU2MTAgNmQ4ZDkyMGNkOTMyNDBhNDdjZDBiMjI2ZGI4MjE0NzczZGJjOGU2YSBsZWdhY3ktdHJ1bmsKKzY1NjExIDFhMTE3MTdhMTU0YjRkZjIzMDVkYzNiNGY5YmJlYjQ0ZWYzYThiNTIgcHkzaworNjU2MTIgZDM1Mjk2NDRjNjgyM2VjNGZhYzdkMWI4YTE3NDkwZTI4ODc4NjYwZSBweTNrCis2NTYxMyAzODhhNGJlN2Q2NzlhMTVmMWYyNTg2ZDgwMWNmODMxNjUyYTlmMWVkIGxlZ2FjeS10cnVuaworNjU2MTQgOTlmOWJlYTkwOWI1NTlhNzJmNDRjZTQ5MTE3NGRiZDg1ZjE0MDZhZSBweTNrCis2NTYxNSBiM2FiZmYxN2UyZGQxNzRkNDdmNTA5YTM4NTVjNTgxMDVkYWMwMTExIGxlZ2FjeS10cnVuaworNjU2MTYgYWNiOThkYmIxYjA0ZmVlMzUwOGQzMWJkMGM2NWJjMzIxMTA2ZGNiZSBweTNrCis2NTYxNyBiYzZhMzU3MmJjODk2ZDNiMTdmZTRjOWVlYjY0NzY3MTQ5Njc2OTczIGxlZ2FjeS10cnVuaworNjU2MTggOWY4NDMzOTZkZjg5OGRhZWIzNjAxMmIyMjk4YTllZWVlMjRkMGI3NCBweTNrCis2NTYxOSAzMDEzNWI2ZTM4ZmRhZjczMjIyMmUwOTI0YjIzOThhMDRiNWI3ZTU2IGxlZ2FjeS10cnVuaworNjU2MjAgMzNjZDZjNWQxYTA0YjFmOGQzODE5MTJkNGExY2RlODZkOTAzYWFkOSBweTNrCis2NTYyMiA1YTE1YTcwNDRlN2Q4ZDZiYThjMmE5YzMwM2EwNzE2MjhjYWY0ZjFmIGxlZ2FjeS10cnVuaworNjU2MjQgYWM4MTAzMzQxYjgwZTkwMjA1Y2RmYjRiMDZjZGQxYWI5NTc3ODQxYyByZWxlYXNlMjUtbWFpbnQKKzY1NjI2IDA1NGRjMTExYjFkOWMxMWE3MGQ3M2JlNjNkNzYzZDZmMzdhODFhY2YgcHkzaworNjU2MjcgNmU0ZjQ3YTY5ZWZhNzU0MjI3NGVlYWI2NDJhY2JjOTdhZWE0YTAwOCBweTNrCis2NTYzNyA2OTQ4MTRkN2IxMDQzYzEzNTBlYjQ4ZTNjYTNlZWIxNzFiNjAxYmY3IGxlZ2FjeS10cnVuaworNjU2MzggMGI2NzFiY2U2OTRlNDg5NzgyOTY0MWFlZWQ2MGU0OGZlZTRlNzBkZCByZWxlYXNlMjUtbWFpbnQKKzY1NjM5IGNlNTlkYWMzZmNhMjRjYjZhM2RlYmM4ODNkMmE3YTRjNWJkMzUwYTUgbGVnYWN5LXRydW5rCis2NTY0MSBjZjY5ODVjYjZkMTU2ZGRiYWNiMDE4ZDlhMDdlYjc4ZTFkNGMwMjgxIGxlZ2FjeS10cnVuaworNjU2NDIgNzUyN2RhMmIwNWU4YTk4ODM2ZDM5YjcwMjk5MTc4NzQyZTg5NjNjYyBsZWdhY3ktdHJ1bmsKKzY1NjQzIGQyMWQ4Y2JlNmJkNGRkNzQwYWUzNjkyY2I3NWFiYzVjNTZiNmYzMTUgcHkzaworNjU2NDQgMGFhZTcyZjhkZGE5MDQ5OTNkN2U4YmZjYzE2NDE2M2UyZWI0OGJiZSBsZWdhY3ktdHJ1bmsKKzY1NjQ1IDI5ZDkzNmE0Zjg4NTg4NmZkMDc1ZTA0NjZhNjkzOTAxM2FkZWQ3ODMgbGVnYWN5LXRydW5rCis2NTY0NyBlYmVhYTY1MzZkMzI4YTMxODgzZTQzMzc5NWNmMzc3ZGVhNjc1ZmM0IHB5M2sKKzY1NjQ4IDc3NzlhZjM4OGFlYzFhM2UwMDIzMjI1MjM3ZDllMGQxY2Y1NWJlYjQgcHkzaworNjU2NDkgZWY0MWRhZTMwZjM1ZDM2ZWQ0N2U5MmRmZGU4OTNmMzExNDMwNDNjZiByZWxlYXNlMjUtbWFpbnQKKzY1NjUwIGVlZmU0NDUwZjc3M2YyY2ZhMWY0NWQ0OTQzOTQxNzIyNzJhNzZhZjYgcmVsZWFzZTI1LW1haW50Cis2NTY1MSBkZDdlMmQ2OGI2ZGRkZjE2MDg5OTY3NDI5OGFlODA3Y2I5YTI0M2IxIHJlbGVhc2UyNS1tYWludAorNjU2NTIgYTMzOTNlNTgxYjE1Yjg0ZjkxOWNlMjhlZjFhYjE4Yjc3NTg3NDBiNyBsZWdhY3ktdHJ1bmsKKzY1NjUzIGIyMTlkNTU0MDRlNzZhYTY2NGUyYjk4NzM3MDU4MTMxZjBjYzgwZmUgbGVnYWN5LXRydW5rCis2NTY1NCBiOGM0YmYzOTM3OTRlOWIxZTc3Mzc4OGIwN2I5NDNhOTQ3YTk2NzVmIGxlZ2FjeS10cnVuaworNjU2NTUgNzlmYTNlMGMwOTg4OWFhY2JhYTAwODJiNjJkNzY0NGY3OWMyZGU4MSBsZWdhY3ktdHJ1bmsKKzY1NjU2IDNjOGVmMzQ2NjkyMzcxMjM4ZDEwMDI1NTZhYjUyMDlmYmI0YmNmNjMgcHkzaworNjU2NTcgNzAxNTE2NTU1MzkzNzM2ZjljNjk5ZWMzZTZjZTgyMzhlZGE5ZTdhZSBweTNrCis2NTY1OCBmMDQ3MjUzM2JmYzk4OTA2MzVmODkyODQ0Nzc3ZDczYjg3MmI1MmYzIGxlZ2FjeS10cnVuaworNjU2NTkgNzljMjkxNmZlNThlNDFlNzFjMjk3ODU2ODVjNmE5ZDhhNWNkMWYzMiBsZWdhY3ktdHJ1bmsKKzY1NjYxIGNkM2IwYjdmZDhlMWI3ZTJlM2NiM2VmMWNmZWM3MDJhNGRmMmQ2ZjQgcHkzaworNjU2NjIgMTMxZjg1YmI2OTMwMGM0OGU2ZDlmNmRhMjc1N2MyMjE0ZjhhMGM5NSByZWxlYXNlMjUtbWFpbnQKKzY1NjYzIGVjY2Q5NDI5NzAyZTRmNTczYmRmNDQyYjZmYmJiYThlOWM0ZTk0YTUgbGVnYWN5LXRydW5rCis2NTY2NCBkNzhlMjRiMTJmNjMzNmI4N2E1MTZiNTJkYjAzZGQwNDJiZDBmZWU4IHB5M2sKKzY1NjY1IDUwZmZmYzgwMDg0NTdhOWJlMGVjZWY4NjdhYWUxMjE0M2Y0MWU1MTkgbGVnYWN5LXRydW5rCis2NTY2NiA5ZDc4ZmQ2MGJmMmE1ZWFjZDc0NWFlMzRhZmM4NDYxNjhjYThjYTYyIHB5M2sKKzY1NjY3IDA2MDBmY2U2NzgzNTIyODhjZGI3Nzg3NjQzNzI4NDZlNGRlNzI1MTUgbGVnYWN5LXRydW5rCis2NTY2OCA0ZjFmZThmMTZlZjkzZDYzZjhmMzgxN2EyZTY5Y2U1ZmEwNWFmYmEzIGxlZ2FjeS10cnVuaworNjU2NjkgMDQ1NTZlMmE3OTg0Zjk0MTgxNjlkYTE1NmM0OTgxZDRiNmY5NTdmOCBweTNrCis2NTY3MCBmNjAyNmEzNzk4ZDQ0MDEzY2MwNzRmYmQ0YjExZTAyMzFkYjdlZDM1IHB5M2sKKzY1NjcxIDZiMTkwOGVhNmI1MzU0NGY2M2Q5ZWExZDVlYTBjOGRiYzUyYTRhOWUgcHkzaworNjU2NzIgNzBmMjc5NWQ2OTAyODI2MTUyZTkwYjhmYjU5ZWFlNTI5NzczYWM5YSBsZWdhY3ktdHJ1bmsKKzY1NjczIDYxZDUwZGE1ODE2YTM4NzIwYWI0NDkyZTAyNzAyY2VhNDE0OWFjZjAgcHkzaworNjU2NzQgZjEyNjBmNDMxMWVlNzhjODUxMzI5M2MyY2FkNDMxYzJjMzg1NDY2NSBweTNrCis2NTY3NiBhZGUzM2UxM2VjNjkzMDY2YzZkZDY3ZjkxYTUyZDUxZWU5NzhmNGNhIHB5M2sKKzY1Njc3IGU4NTA5YWM1MDFmMzI0ZDg1Nzc1ZTQwNGYwMWJkMmNmNDIzMWFlYjcgbGVnYWN5LXRydW5rCis2NTY3OCBiNzU2MjFhNDIwZWNiMjhlOTIzOTAwYTQwNzFlMDRkMTk5NmJmNzkwIGxlZ2FjeS10cnVuaworNjU2NzkgYWY3Mzg4YWQzMTY0ZWI3NGRkZGQ5ODUxMGMzMDBlMDUxZDQ0NWVjOCBsZWdhY3ktdHJ1bmsKKzY1NjgwIDI5M2RmODE1M2Y2MTg1OGVhY2JjYjlhMmM4YzgwNTA1M2VkOGM2ODMgcHkzaworNjU2ODEgZjhhMzQ2ZmNkMDQxOTYzMjFhYzZiMzczN2NjOWZiNzg3NzE4OWE1ZSBsZWdhY3ktdHJ1bmsKKzY1NjgyIDYzM2ZiMDI2MGFiMzIyNTQ0M2ZkZWUyZWNhY2Y2ZjgwODlhMTE0ZTMgbGVnYWN5LXRydW5rCis2NTY4MyAzNjUwYjFjZTRiZDg0NjQxMGRhNjhiZjRjZDQyYmExN2M0YzNmMWYwIGxlZ2FjeS10cnVuaworNjU2ODQgNjBlMGUwOTc2M2FiNjBkNDQwNmMwYmE5NWVjYzU3MzZjYjYxNmE2OCBsZWdhY3ktdHJ1bmsKKzY1Njg1IDEzNmY2MWI3NGU4ZmU5ZDFiNjJmZjJmNWE0Nzk0NjMxYzg5MGMyYjAgcHkzaworNjU2ODYgNjc5Mzg1NzVhZmM2Y2M2Y2U2ODU3ZmM1ZDU4NTYyMWQ3NWJjNzkxMCBsZWdhY3ktdHJ1bmsKKzY1Njg3IDU0YTJkYjhmZGM2MjZkZTk0ZTM0YWNlNGM0MGM3ODUwY2UwYzFhYmUgcHkzaworNjU2ODggMGE0MzM3NmJhYTZiZjJhOTA3ZjAyZDY5N2NmZTVjODBhOTVkMTY3NCBweTNrCis2NTY4OSBlOTYxY2MwMTQ2MTkxNDFkMjk2MjM4ZWI1MGFiNTRhNGJhODQwMzdlIHB5M2sKKzY1NjkwIGM2ZjBkZTVmMmM2ODUyM2Q2YjIyMmRiNjhjZjFjNzRmNWJjZDdjNjggcHkzaworNjU2OTEgOTIzMzI4NmM3ZWQwZGM1ZTcyYjgzOGNiY2U2NDA0MGJmYWZmYmNkZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU2OTIgMWQ4MTcxZDY0NDYzZWQwMjRlYmMzYjYxZDRkZjg4YTZkNzQ2OWQ5ZiBweTNrCis2NTY5MyBjZGQ4OTg0MzNkNTg4ZTMwZGY1Yjk4NmFhMzQ1MjdmNjQ1YmEyODMzIGxlZ2FjeS10cnVuaworNjU2OTQgYzA1Nzk4OWU4N2ViOWRkZWExODE1MTlmZjk5M2E4ODkzODg3YzI1MCBweTNrCis2NTcwMCAxODAwNjJlMzM5NTY5ODBkNTViNjBmNDNiY2JkMDlmMTkyMzE0MzkwIGxlZ2FjeS10cnVuaworNjU3MDIgODE2M2RhZWU3ODVkNDBhM2Q3ZmI1NWFkMGQ5ZmRiMTQwZjEyYTc3ZSBsZWdhY3ktdHJ1bmsKKzY1NzAzIGY2MjdmODAyMDFkMzlmZTE1ZWY5YjJlZjZkZjEzZGJiYjA5ZWE2NGYgbGVnYWN5LXRydW5rCis2NTcwNCBlNjFkZWI2OTBlNzA4NDAyZDQ1MmVhNmNmZTU3ZTE0Y2MxMWVlMTQxIHB5M2sKKzY1NzA1IGEzZjk1MGQxNWMwODNmNTZhZGQxYWYzZGEwMmRjMTQyOWYwOGU4ODYgcHkzaworNjU3MDYgYzM3ZjRiMDM2MzdmMjI2NTgzOTM0OTMyZDg5NDAyZTA0ODA5ZDZkNCBsZWdhY3ktdHJ1bmsKKzY1NzA3IDcxMDE0Njg1ZTBlNWY1Yjk5ZTNjNzFkNzg4MjlmYTk0NjE2ZGMwM2MgbGVnYWN5LXRydW5rCis2NTcwOSA3ODBlMTcwMzg5MDI5OWFiYWFlMTA0MzZhYjIwOWQ1MjBlZWIwNWUzIHB5M2sKKzY1NzEwIDE3MDI4NzNmMjQ5MmYyMzA1MjVhN2Y5MDYxZGFhYjA0ZmZiYTg5MDEgbGVnYWN5LXRydW5rCis2NTcxMSBjNmQ3OGY4Njk0MDVkNzUxNGQ0Y2E3MmIxMzk4Nzk5NGQ1ZGM5YzQwIHB5M2sKKzY1NzEyIDFlZDg2Y2UwYmViMjY2YTI3ZDlmY2NlMmY1MjE1NmFiOTU5ZTg0ZGUgcHkzaworNjU3MTMgZWFkMzU4Y2U0ZDhhYjA5ZmYyNzM4YmZhOGZhYzIwMjZlODVjZjZiZCBsZWdhY3ktdHJ1bmsKKzY1NzE0IDg3ODg2MTUxNWIxNjBjOWFiYjY3ZmZiMzZiNzk0MDQyYTQ5YWM4ZWMgcHkzaworNjU3MTUgOWZiMTBmM2QwZjg3MzA5ZTk1NDhjZTE0NDZlZGE5ZmE1NTdmOWE4OSBsZWdhY3ktdHJ1bmsKKzY1NzE2IDg5NGI0YWNmZmZlNDBkMGJiNWNlZDY3NGZhMGE1OGM4NDRmNWNiOTEgbGVnYWN5LXRydW5rCis2NTcxNyA4YzBmODUxOTZlMzdjMmUxMWRkZmMzNjc5MjVkYmVmNGYzOWMwMzZkIHB5M2sKKzY1NzE5IDkxOGE5MThhOTk5NmM2MDkwNzBlZDA5ZDQzYTkyYTdmZWUxM2FmZDEgbGVnYWN5LXRydW5rCis2NTcyMCBiOTczZmNjZDAyYTViOTA3ODFlYzI3MzQ0OGJlNjA5YjMzMGE3NjQyIHB5M2sKKzY1NzIxIGNhNGM1MTM1ODYyOTc4OGMxN2RhMTUwYTg4MmNmMjBjOTQyOTdkODIgbGVnYWN5LXRydW5rCis2NTcyMiAxZDY1YzhmNWMwOGUxMzgzNTdkZGExYzI0OWYwYWEwYTMyNjRhYzA3IHB5M2sKKzY1NzIzIDVkZjU2Y2Q1NTE5YTU2OTQ3ZDA0Y2Y4ZWJkMjc1NzAyYWM5MDJhODUgcHkzaworNjU3MjQgMmQ3NmFmN2Y3NzAyNjhhOTJkYjQ0NDA3OGE4MmI5ZjYxZWMzYTM5MyBsZWdhY3ktdHJ1bmsKKzY1NzI2IGI2MGUwOTI4ZGIzZWM3YTEwNTI0MDNiYjI4MjA1ZGZiNGI1MWFmZTUgbGVnYWN5LXRydW5rCis2NTczMSBlMGM2NTkyMmI4Nzg3ZGY4YTQyOWU1MDcwZTkwZDYwYjc3OWM5NDlmIHB5M2sKKzY1NzMyIDlkZTY4YWQ4NjA3OGMzNjFhYjMwYTE4YjJjNzY3NmM5ZDU3Y2JhYjMgbGVnYWN5LXRydW5rCis2NTczMyBhZWZiOGU5ZDM4NDRmMWU1ZWE4YWQzNmNkYzljMTZkMzMwMGU3M2U3IGxlZ2FjeS10cnVuaworNjU3MzQgMzFjMzlhNjJkM2Y5NjU1YTcyZjgwODAwNDcxYmM1ZjU3MDUzYzA5MyBweTNrCis2NTczNSBlYmE3NDU3ZjRiYjY5M2I5MGMxMTI2YTcwNWI3NzY2MTI1NWNlNDYxIHB5M2sKKzY1NzM2IDE1M2U5ZTY3ODY0NjRhMTg0MzczZTllYzlhMGZlMDA3ZDlhNDBmYmYgbGVnYWN5LXRydW5rCis2NTczNyBmZjg1NjUzNTQ1ZjVjYTcwZjRmMGVmMmIyZDM0N2U3Y2Q1YWM3YmExIGxlZ2FjeS10cnVuaworNjU3MzggZWIxZTY0ZTUzNWU2YTE3MTI2ZWZkYjRlOTAyOGMwOTU3ZGU3NzZjNSBsZWdhY3ktdHJ1bmsKKzY1NzM5IDVhMzVjOTYzZTc3MTIyZWE2YzM0OWFjOWU1ODZkNjU2MTk5MTUzZDQgbGVnYWN5LXRydW5rCis2NTc0MCBkOTlmZTU2ZjlmZjhkNjQxYzE2MDNlNzYxYTY4YmQwZDlmZDhkZmQxIHB5M2sKKzY1NzQxIGFmNGU0MGY4OTNiZDk1MGQwNDcxMzFmY2YyNTAzZWY5MDEzYTIwYWUgbGVnYWN5LXRydW5rCis2NTc0MiAyYmUxN2QzNjhhOWM1YjhmZTYwOGJmZjg1ZTc2NGJiNzViYjYyNjc3IGxlZ2FjeS10cnVuaworNjU3NDMgZjI0ZjI2YTEyMTg2NzVlZTA3NDIxZjhjMzM3ZTZjNTljYTgxOGQwMCBweTNrCis2NTc0NCA0OGRkZGZkMmZiZjNiYzAwMzQ3MWEyYmRhYjNlOGFjYjUwYzI3MmJlIHB5M2sKKzY1NzQ1IGFhZWYwOGFhMmE3ZWZmYmFjMjliMTM4N2VmMzg5NTNhYTY2YzY3MjAgbGVnYWN5LXRydW5rCis2NTc0NiA2MTJiMGMwZTVhMGYzM2Q4YjkyZDRhZjFmNTQyMjExYWEwNTY1MTIxIHB5M2sKKzY1NzQ3IGQ5ZDUxOGNkNDkzYzMyZWZhZmM4YTNiYzUyNTEyNDgyMjFmODRjNzIgcmVsZWFzZTI1LW1haW50Cis2NTc0OCBjNzQ4MWM3M2MxNjNhMTk3YTdmOTgyYTNlYjE4NmI2YmVkYjEwYmQxIGxlZ2FjeS10cnVuaworNjU3NDkgNDM1ZDY0ZmQxM2E5Y2Q5ZDRkMzA2ZTQzNjE0ZmE0ZmY1ZDlkOTM1OCByZWxlYXNlMjUtbWFpbnQKKzY1NzUwIGY0YzJlYWFkMDlmODQ1ZTEzODMwYzQ5ZWE4N2JmYTM1YTRmOWM0MDcgcHkzaworNjU3NTEgNDU1Njk4OTVmN2I1NjE0YWFkNTNmY2VjODNiOGRiM2E0ZDIxYjEzMiBweTNrCis2NTc1MiBkZGM2NWNkMmYwYmJiYWMzNWYxZGY0YzAxYTU2Mzk2OTI0NTJhNjk1IHRsZWUtYXN0LW9wdGltaXplCis2NTc1MyA5MGQwNDk5ODNmNWIzZGZlNmM3NzM2OTkwMjdkYjFmOGQ5OWQ0NTg0IHRsZWUtYXN0LW9wdGltaXplCis2NTc1NCAwNzQwOWU5ODVjMzljOWFhMTcxY2ZlYjhkZjE3NjE1NDc4MzIxNjEzIHRsZWUtYXN0LW9wdGltaXplCis2NTc1NSA5YzQ5ODkwNzIxOGZkN2U4MGIyZjMyMTkxMjU2OGYzMmQ0OWQ1OWQ2IHRsZWUtYXN0LW9wdGltaXplCis2NTc1NiBmYzFhMGFjZmNlZjgwOGJmM2NmNDM4MThhNTU0ODYzMTllZTE4MTVjIHRsZWUtYXN0LW9wdGltaXplCis2NTc1NyBkYTU4MzMzZWM3ZGE3NjFjNTExMmY3NzhlNTVhYmZmMDZjMTAxZmJhIHRsZWUtYXN0LW9wdGltaXplCis2NTc1OCA1MDQ5M2Y5ZGQ4YzcxYTRhNDcxYmNlZmNiNTliNGNmOGIxMTQ5OWQwIHRsZWUtYXN0LW9wdGltaXplCis2NTc1OSAxNmI5ZWUxZWVlMzFmYTI1OTQyODg1YTE4NDJlYjAyODA5MzVkNzc1IHRsZWUtYXN0LW9wdGltaXplCis2NTc2MCA5M2FiOWZkYTgwYWIwYzRhMGQ1MzYyOWY3NzZkYTA5ZTQ4NThjMTBmIHB5M2sKKzY1NzYxIGY0ODI4NzVlMmEwMzFhYWI2YzM0Njk4NWZhMDMyZjM5MmJhZTk2MDAgbGVnYWN5LXRydW5rCis2NTc2MiBmNGMyMjZjNjFiNzFjOGY2YjNlOGM2NGFiNzNhZTRjYmViMmJhMTE1IGxlZ2FjeS10cnVuaworNjU3NjMgMmY3ZTU3ZmMxZjNhNjY2YjU3MmNlYTM4ZmIzMTRkMzE4NDA4NmUxYyB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjQgYThmM2U2M2I0N2U0MjQyZDM5Mjc4M2U5YjAxNDdjNWFiNTIwMzk3OCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjUgM2RlNjllNmIyY2IyNTIxZDhmYjZiNWI1NmQ5YThiMGI3NGIwNDM0OSB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjYgYzUwNTliMTJkZGM2ZDE4NDZiMzA1MDA1Mzg1OGRlM2I3M2VlNjM1OCB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjcgOWI5ODU2N2Q1ZGRlNTA3MDRhZThhNTZkM2FiZTA5YTE5NGU4Y2UxZiB0bGVlLWFzdC1vcHRpbWl6ZQorNjU3NjggN2EwMzgwMjBjOGRkNjNlNmRiYWQyNmM2MzFjODRkNGExZjc0ZDhlNyBsZWdhY3ktdHJ1bmsKKzY1NzY5IGNhYmY5N2I4MjMzMDg2MWU1YjY1MTBiNGYyNjE0YmJjZWQyYjZlOGYgcHkzaworNjU3NzAgYjM3N2MxNDczMjNlYmY5ZTA4NjcyYjIxNGQ2NDAxZmUwZTM1ZmZiNCBweTNrCis2NTc3MSBlNGM5OGQ2MTU3YzcwMTk3YmI0YWM2YTRiNDJjZjVkZGNiZGFjOWM1IHB5M2sKKzY1NzcyIDcxYjUzZDZlYTdhNDVmZGI1ZTBkYjY1YWVhMTUzMjJjNDk0ODEyMDkgdGxlZS1hc3Qtb3B0aW1pemUKKzY1NzczIGQ3ZDcxMzlkNTg0MDZiNjU1Y2E5YmMxODJiYzQ5MzFmNzJlMTEzZjUgbGVnYWN5LXRydW5rCis2NTc3NCAxZDg4YWQ1ZjRkZWYzMzYzZjI0ODUxN2VkMzk1MDgxYTBkZGI4MzFiIHB5M2sKKzY1Nzc1IGMzNmNjZjJhNzFlMTZlNjE5NWZiNzczNGQ2YzMyMWRmY2FlOTJlZWQgbGVnYWN5LXRydW5rCis2NTc3NiBiMjlkZjM2NDJiOTdkM2I2ZmM1YmUxNTAwMDA3N2RjN2Q4MTRlMGI3IHB5M2sKKzY1Nzc3IDQwYzA3YTYxZTFjMjZjMWZmYTA0ZGQxOTUyYjk0NTU3MjE3ZjQ0ODggcHkzaworNjU3NzggMTJjM2EwMzM4OWU3ZjNlMjBhN2VjODJiNWM2NTIyYWVkZmUyYTljNCBweTNrCis2NTc3OSA0OTIxM2Q0MjljNjgxYTAxZGFlMGIzN2RhOWFlOThiOTlmMTdmOTEyIHB5M2sKKzY1NzgwIDJiZWJjMGE2ZDA0MjgwZDBjNzMyNjdmNWRkYmY0NzkyNDcwZTc5NmMgbGVnYWN5LXRydW5rCis2NTc4MSAwNjg5MWFlYzQxZGU2ZTY5YjcxYzU1NWViYmMzMmU4MjMxZDUxMjBhIHB5M2sKKzY1NzgyIDE5NWRhNmQwYzc3YzEwNjhlMjhhZDI5ODg5M2Q5OGM5ZDMyZTk3NDkgbGVnYWN5LXRydW5rCis2NTc4MyA4MGE5ZmY1OWViMDIwMmIyYzJjN2UzYjUyNTE2OTY3YTQ4Y2MxODY2IHB5M2sKKzY1Nzg1IDUzMGI0Y2IxOTQ0MjVhMjNhNDZhYzI4YzIxNGJmNTFkZGY5YzI5NjEgbGVnYWN5LXRydW5rCis2NTc4NyA3NTY1ODU0M2I5MTliZjUzNTQyODMzYzBiMjFiOTdiODc0MTBlMTM4IGxlZ2FjeS10cnVuaworNjU3ODggMjJhZDg4ZTVjMDAzYTQ2ZDM0ODFlZjFlNGQ2MzMwM2UyM2M0MmE0ZCBweTNrCis2NTc4OSA0M2ZhNTBiOWViMTI4ZmQ1ZjcwMmM1Mjc0MDg3OTNkMTc5Y2E2NjFlIHJlbGVhc2UyNS1tYWludAorNjU3OTAgNTUyOTUzMzA2ZDM0MmM1OGU2ODFjNzZkODc1MDc4NzA1N2U4YzUzOCByZWxlYXNlMjUtbWFpbnQKKzY1NzkxIDhkOTlkMDNhMDZlNDRhNzc0N2MxZDFjMGY1MjU5ZjhhNTk4MTE0YTAgbGVnYWN5LXRydW5rCis2NTc5MiBiMGM0YWI4MjMzZmE5YjVjZmJmY2JkODA1ODA5ZTk3ZjRlMmJkOTg5IHB5M2sKKzY1NzkzIGQ3ZmJlNzNmZTdmNzQ0NzhlZTcyNzUzMTVlNTFhNjRiNWNiYTMyMjYgbGVnYWN5LXRydW5rCis2NTc5NCBkZDk5MmI2NDAzZjRjZmRiODAzNWE0OGFmZGQzMzU2ODM0ODQ0YzhhIHB5M2sKKzY1Nzk1IDYyYzY5ZDg4ZTk4NWQ3Yzk3YTcwYzdiYTkzZmVlYjFlNTZkMGEwYWIgbGVnYWN5LXRydW5rCis2NTc5NiBlZGI1YTg1OTM3NDllNmNlYzlhZjgyNmIyMGMwODliMGM0MzAyZmM0IHB5M2sKKzY1Nzk3IDg5NTM4ZDVmYjgxYWRiMmZiMjA0MDM2YWJkMzdiYTJjMTQ0N2YzMjEgcHkzaworNjU3OTggOTlhMmVlNGUzYTA1NzNjMGY0YzUyZTRhNzA1Y2E4N2JiZjUxMjc1YSBsZWdhY3ktdHJ1bmsKKzY1Nzk5IDk1ZjFjN2RiODkyM2Y0OGJmNDRjNDc5NmE5YTc4Y2Y5N2E1NjdlMzQgcHkzaworNjU4MDAgMzUxYWQ2ODQwN2U3ZmYxZjQ1MTVkYTM5MzgwNjBmNTE2N2NiMThlOCBweTNrCis2NTgwMSBmMjg3YmViMzUyZmUxNjM5MzkwZmVjOWFhMzA0NzY0MTVmYmRmNTdhIHB5M2sKKzY1ODAyIDU1MDg4NjJhMWRlNTA1YzgwZDNiMzZmMmYwM2Y5MmY3MzRhY2FiNDYgbGVnYWN5LXRydW5rCis2NTgwMyA1YTg3YjBkMWNlOTFlMThhMzA1NzhkZmY3NjlkY2ViNDc0MTQ5MTFhIGxlZ2FjeS10cnVuaworNjU4MDQgNjAxOTRhYjJiNzU2MjViNGQzMjlhZTc3MWZiMDFjMDBmMWUxODNlZSBweTNrCis2NTgwNSAzMTk1YmQ2YjZkZDdjZGFlZmJlOGRmMTQ1NGQ4ZDg2NGMxNjlmMzM0IHB5M2sKKzY1ODA2IGZjOTBiNTgxNTE2ZWJkOGExOTIzMTgwZDRkZTQ3ZWQ5ZTQ3NzUyMDAgbGVnYWN5LXRydW5rCis2NTgwOCAxYTQxZDQ1NmQ4MDJiZmU0MTQ3NTRlNjJmNzBhMWY0MmIxNjI5ZDg1IHB5M2sKKzY1ODA5IDIxMTkyNzE0N2M2MDZlMmQ3ZDg1MDcyNzQ5NDc3MzlhNGUzYzY5M2MgbGVnYWN5LXRydW5rCis2NTgxMCAyMjU0YWE4MjRkNGRhM2JmZTNlMDk1MWM0NjFmOTNiZWIzZTViYzI2IGxlZ2FjeS10cnVuaworNjU4MTEgNzUxN2JkY2M3NjlhMWUxNzUwMGFlYTdiMmMxMjc4NTMzNjliYzhmNyBweTNrCis2NTgxMiA0MjA3MjE5YWNjN2E4MDM5YzNkZTQ1OWM1ZjczMzJjYWUxOWYyMjFlIGxlZ2FjeS10cnVuaworNjU4MTQgNGI0NTY0YmViNmRhMmUwYjEzNGY5M2FmMDFiNGYxMTNiZDU3ODRiNiBsZWdhY3ktdHJ1bmsKKzY1ODE3IDE3ZjAxMDUxN2IzMzUwNjA1MmU2YWNjMjg1NzkzNjc2N2E3MmZlODUgcHkzaworNjU4MTggMWQyOWU1M2NlMmFmNjY3ZjYxMGE1NWRlYjZlYWFlYjc3OWJkMTc1MCBsZWdhY3ktdHJ1bmsKKzY1ODE5IDc2NjIwMDEwZDc4Mjk4NjM3ZmJkNjNkMmRkYjQ0NWNiYWRhNTMzMjIgcHkzaworNjU4MjAgNWMwZTVmMmNiYzdkODljMGNiMGYwMDJlNzA4NzdiZWQ2ZDZmN2RlNyBweTNrCis2NTgyMSAyNjE0ZDUwMWRlOWFlZmMxN2VlNzg1MGNmM2M0ODU1Mjg4YWU0ZWUwIHB5M2sKKzY1ODIyIGUxNDNhOGYzNTI0MTdjZjA0OWNjOTBhZDE1MjBkMjFmNmViOGJiZmIgbGVnYWN5LXRydW5rCis2NTgyMyA0NzFhNGE4OGY1MWM2NGMwMzIzMTBhNzlmMTE4MmE4YjkzNzQ1ZjMzIHB5M2sKKzY1ODI0IDAyNGIyYjk4NDg2Njc2Y2M0MWI0ZTdjNzYzMjc4NzNhODdlN2M1M2MgbGVnYWN5LXRydW5rCis2NTgyNSAxZmRmYTM4MmFlMTMyZTEwM2I4NDk5YzdkODY1YTc2Mjk0NGVkMDg3IHB5M2sKKzY1ODI2IDlkMTg1NmFiYTlmMjQ5M2RhODE5NzVjOTYzOWQ3ODcwNjUzZDFmM2EgbGVnYWN5LXRydW5rCis2NTgyNyBkNjUzN2EzZTFiNzNjMDM5YmMzZGZjYzM2MTAxZTQ0MDhmNWMwZTMyIHB5M2sKKzY1ODI4IDI4ZDkzYzljM2EwMzAzNWNiMWQzYjUxMDZjNmFkYTZhMTUyMjlkY2UgbGVnYWN5LXRydW5rCis2NTgyOSBkYjU4OTI0MWU2Zjc0Yzg5NTVmNTYwNjZmNjhmODA2M2NjZjEyYzkzIGxlZ2FjeS10cnVuaworNjU4MzAgNmRkYTAxNjQzMTA2Y2ZiMmQyNzBiMGI1ODk5YWM4N2Y2OTQ0ZmZjMSBweTNrCis2NTgzMSA1OWQ5N2EzZWUyMTllNDYxNWM2MGEzOTljZTdkMTMxNTlmN2JlZWQ4IHB5M2sKKzY1ODMyIDkyZjRiYjM2NjM3YzM0ZTgyOTkzNmRhYmM5NWYyYzUwZDAxNGQxYzIgcHkzaworNjU4MzMgOGQ4ODM1MDU1M2MzZjVhNjc0OTUyOTIxM2E0NWRhM2JlMjQ3NWU0YyBweTNrCis2NTgzNCA4YTdhMjU0NTljNmYwMjE5YTIzOWVkMTIyMDU5YTBlNzdjYTUxMDk4IGxlZ2FjeS10cnVuaworNjU4MzUgZTEwNzEzYjJkNTQzMzhkOTg3OTEzNGE4OWZkZjkzOTEzOWQyMzhhMCByZWxlYXNlMjUtbWFpbnQKKzY1ODM2IDMyOTE0OTA0OGI5MGNjOTU2NThlMTMyMWNmMDJmM2I3ZjNlMTMyN2YgcHkzaworNjU4MzcgMmJhYzBkNDIxOTI5ZTQ1NjllOWFiYWUzNTI3NTY5ZDE1MDNhNDNjZCBweTNrCis2NTgzOCA0MjhkMzg0ZWQ2MjYzNDk5NmRlNWJkNzQ0OTQxMDIyZmMzYWU5ZjcyIHB5M2sKKzY1ODM5IDVjMTA1ZjlhNzhlOGUxZjk5OWNlZTExMmQzMmRiYmMzYTU3NzhmMmIgbGVnYWN5LXRydW5rCis2NTg0MCA5YTg5ZmI1ODA5OGI2YmE1Y2ZlMmQyZjNjNTE4YjU5ZjZkY2Q0YTJlIHB5M2sKKzY1ODQxIDU0MTM4ZWUyMGU1N2MyZTlhZDJkZmJjNDE4NjU1MWM3NTJkYjE4NzIgcHkzaworNjU4NDIgMDI3NWQ4MWUzMWQwOWNiZTM3YWM5YjJmNTE5ZjVkYmJjNzg2ZDVmYSBsZWdhY3ktdHJ1bmsKKzY1ODQzIDI5MWE2ZjIyMDM2MDcwYzVhMDMwNDFlMTk5MjExMmM5MGMzOTQwN2MgcHkzaworNjU4NDQgODNmNzc5ODUyNGYxYzcwMTlhYzEwOTkxMzEyNGY1YjA4NzlhNjE2YyBweTNrCis2NTg0NSBiMGUzYWM4NmNkZDgwMmEzMWY1ZTZmMjUzYTA3MTFkMzAwMjZhN2YxIHB5M2sKKzY1ODQ2IDdkNjQ4MDZmZWIxNTYwOGQ2YWYyZWVhOTgwMDc4MTc3MGQ1YjQ2YmYgbGVnYWN5LXRydW5rCis2NTg0NyA1ZTNmYWFlNmVmYzY3MTlkNDRiYzBlZGIzYjI3YmMzMjEzOGRmNTVjIHB5M2sKKzY1ODQ4IDE0ZjJhNGNiNTdkZTA0MzU3NmI4NzhiMjZmZDUwYTE4NmUyZTg0NGEgcHkzaworNjU4NDkgN2M4MWQ1YWE1ZjQxN2QwODU3NzY4NTJjMjJmY2QzYmQ3OTYyNGM2YiBweTNrCis2NTg1MCAxOGFhOTE5ZGYyNDVhYjlmZWYxMTg2MjllODFmYzJmZjRmY2EyZWU0IHB5M2sKKzY1ODUxIDk0YTdmYjMzYWZlYTUyOTAwODg3ZjcxMDg1NzA0ODZlNDg1YWQ1MGIgcHkzaworNjU4NTIgNDNhODg1ODQ0YWQ4ZDRlMTUxNmYwZGIyYWFkZWExMGQ0ZjQ0ZjhjMSBweTNrCis2NTg1NSA0ZGYxMjJhZGE3NmZhZjQ2ZGEzMGExODJkZTJiN2VlZmE2YjVlNThmIGxlZ2FjeS10cnVuaworNjU4NTYgODNlYjJhYWE1ZmFhYTQ0NTljYTY4MzA3YTI2M2QzNmNkNzBkOTMxNSBweTNrCis2NTg1NyAxNGU4MTliZWVlYWI4YzA0YWM2NGNlNjE1YzdkYTNkZDI2ZTEyNTFhIHB5M2sKKzY1ODU4IDIwOWE0NTgxYmQ5MTlhMDM1NDZiZmM5ZDAzN2ZmMGRmZjg2MDZjZTEgcmVsZWFzZTI1LW1haW50Cis2NTg1OSA3ZjAzOGE0NzAwYjFjMDgwNGVjMzk5NmVhYmM1Y2JmYjQxOTk5YzU5IGxlZ2FjeS10cnVuaworNjU4NjAgODNiMmQwN2I0NzViNTAzMDdiNDhmNmFmNTczOWUxNmJhYjY4NThiZiBweTNrCis2NTg2MSAyNDgwNjIyOTY1ZTYwMDhiNzhkNTA3NGMwODcyZGQ5NWVmZWY5OTU3IGxlZ2FjeS10cnVuaworNjU4NjIgNzUxMWYzZTY3MmEyOWYzNzI5NWRlNTNkODFlZDUwY2ZkNDEzNjIzYyBweTNrCis2NTg2MyBlYTNkMTNjZDdjMWU2YjZmNWU0ZGU2NzM3ZjY3MmMzNGU2MDU5YzFkIHB5M2sKKzY1ODY0IDdlYTgwNWQ4NzllMWFiNTdjYjI4NjIxODhhMjRkMTE4OTFkZTM0NTggbGVnYWN5LXRydW5rCis2NTg2NSAxYTA1OWFhZmU0OWYwZTRiOTk0ZWMxODQ0NzQ4ZWRlNGUzOTQ0ZDU4IGxlZ2FjeS10cnVuaworNjU4NjYgYWE2MTMyMDkzMzJkNTFhYjZlYzYyOWI4MmFlZjBkNzFiY2FjOTJlOCBweTNrCis2NTg2NyAyNWYwNmE3MDNmODlhOWU4OTZmNTUwODc0ZGFkMWNkM2U3NDMyZGM4IHB5M2sKKzY1ODY4IGJkMzdhMTg2NjM4ZjI4M2Q0M2RjYzVkNDNmYWMzNzRkNTllNjBjYzAgbGVnYWN5LXRydW5rCis2NTg2OSBmMDRiNzAzZjJkZGRhMWIxMTdhMTk1NTZiMDI5ZGU0Zjc2OTQxZmY3IGxlZ2FjeS10cnVuaworNjU4NzAgOTdhMjRjNjA5YzJlZTg4MDQwMDk4YTRjOGYzYjljYWJhMDJhYTVmOSBsZWdhY3ktdHJ1bmsKKzY1ODcxIDZkMjJlZThjNzNjYTM0OGMxMTRhNmZiNzkzMjJmZmI0ZDZiY2NlZTEgcHkzaworNjU4NzIgNDlmNTJlMjg1YTY0MDJiY2Q1ZjlkMGU1NTgwMDlkZDQ1YjdhZjJlYSBsZWdhY3ktdHJ1bmsKKzY1ODczIDJiODI5ZmZhNDgxYjU3NDFkMGUwNDgxZjMwNGMwNTk1YzNmODE2MWEgcHkzaworNjU4NzQgOTZhNGNkYTY1YzU1MmZmYWQ4M2MzYzhiNWNiNDkzYzhkMTlmZjQ1ZCBsZWdhY3ktdHJ1bmsKKzY1ODc1IDUxMDkxOTA3MzExOWY5MTllMjYyMzhkZWYxNTkyOTg5ZjA3YWVjZDAgcHkzaworNjU4NzcgNmFiYWRhMDVjMzEzMTM1OTEyNDZiMmFmNzhhMGJlNDdlYzY1ZDMyZiBweTNrCis2NTg3OCBmNDlkOTMxNGQ0MzkxMTFhMWZjMGIyNzVjMzc0OGJkMmU2MGJlZWU3IHJlbGVhc2UyNS1tYWludAorNjU4NzkgZWYxOTU1ODQ1NTA5NGZjMWFhYjgzYzBiZmYwNGI4ZDFhZTNjOTNlMSBweTNrCis2NTg4MCA0Yjg4MDY0NTYwNzg3MWMwMDVmOTA5YWFmZTIxMGVhYzhkMGZkYjY3IGxlZ2FjeS10cnVuaworNjU4ODEgYzc4MjNiMzUxZmJjYjc1NjQwMjkwYjk5ZWI5MDBmYTJhZTllMWI2MiBweTNrCis2NTg4MiA4MmM2OTZmMDQyNGE0N2U0NmE4YTNhOGI0MGM4ODUxNThlMGQ4NTFlIGxlZ2FjeS10cnVuaworNjU4ODMgOTllNzgzZWM3NzgxNTg3MWM2N2FjYjIxNjdjNjdkOWQ2NDFjMjJjMiBweTNrCis2NTg4NCBjMWE3ZmRiMjQ2MjhmMjQzZTFjZjMyZWIwMTc0MTg4OWMzMmYzMTU0IHB5M2sKKzY1ODg1IDUwNGU2ZDAzMGU4NGM3ZGZjNDU5ZjRlYjYyNmFiYmE2YjRlZjJlNTMgbGVnYWN5LXRydW5rCis2NTg4NiA1MDEyNTZjNTRjODRhNjQ4NTFlOGY2N2U2YzkwMTFjM2U1ZDg1MjU2IHB5M2sKKzY1ODg4IGY3YTYzOTZiNDk2ZjAyMmFjOTk1Njg2YWM1ZDE5YjU3M2RiM2VmMmYgcHkzaworNjU4OTAgZTc4MDI0YWYwY2YwM2E0N2ZkOTc1ODVmOTE0NDM2ZjhmMjIyOWYzMCBweTNrCis2NTg5MSBhOGY5OGE3MjczNzEyMTIyYWI5ZTc0Y2M3Mzg2ZTViYzczYjA3Nzg3IGxlZ2FjeS10cnVuaworNjU4OTIgYmVlNDAwMzM2ZmQ1YzdhMDQzNDA3ZDc5NTQwMmRkZThhZDhhYTIyNCBsZWdhY3ktdHJ1bmsKKzY1ODkzIGFiZGU0ZGIzMDdhNTljNTYxMTgzZGU3ZmVmY2QwMzY0OWMyNDkzM2EgbGVnYWN5LXRydW5rCis2NTg5NCAxYWYyMTEyMzY5MDQzMGRlMDcwMTJkYmQwODE1ZjI5YTk1YWM3MjNiIGxlZ2FjeS10cnVuaworNjU4OTUgOGYyMTU2YjE1YmI4ZTY5MGNiNDM2MjA2NzkxZTFmNmY2MzkxNTZlNiBweTNrCis2NTg5NiA2Y2Q3YjE4YmI3NDJhMzZhMmM1NGZjZTE1ZTg1Zjc3YzcwMTE0NmY5IHB5M2sKKzY1ODk3IDNhMTFlNzliOTQ3MTVkZGQ3MTAzNjVhMzk4ZWY2MTI3NTIwOGZjN2UgcHkzaworNjU4OTggMGZlNmNiMGMzMTBkNzI5ZGFkNTBiMzY1Y2I0MWFkNjFlOGUxOGRhMCBsZWdhY3ktdHJ1bmsKKzY1ODk5IDZkNmQzZTAzNzU1MDNjZDI1YmU3MjczNmM1YzZlNTg1ZjAwYWI5MWQgcHkzaworNjU5MDAgZDQyNjI5MTg1MzgyZWIzZDdjZmRhMWE3MGFmMzhhYjM0YTY2MmU1OSBsZWdhY3ktdHJ1bmsKKzY1OTAxIGMxMjVlNzVkMjFhMDQ4Nzc0ZjY1YzVhN2M4NGU2MzkxNzM2MzZhYzAgcHkzaworNjU5MDIgYTM2YjZjMWNlYzU2NzgyMjY5NjcxODQ2ZGY2NDcwY2Y3NDM0MDgwYSByZWxlYXNlMjUtbWFpbnQKKzY1OTAzIGU4OTQyMDRhZGZiZGFhYTI3ZDA1MzllYWQxNTkzNjhiYmMyNTA1NjQgcHkzaworNjU5MDQgYWU1YjczYzUyMDk3ZTZhMzQ2NmZkNWUwZWZlNDhiMTkwZTdhZDcxNSBweTNrCis2NTkwNSA1MWYyZjhmZWU1YzQ1MGQyMWZmNmFjODgwMTVlNzU3NjgzODJmMDExIHB5M2sKKzY1OTA2IDZjYzg5YzYwZjc0ZDZiOTc2NWY3NmU5NTRhNzUzMzMwNzc3Yzk3Y2IgcHkzaworNjU5MDcgNGY1MDIyODIzMTk5MGVhMWRlYjliODkzNzZjMGEwODU2MGYyNGJhMCBweTNrCis2NTkwOCA2N2NiMzM4ODAzNzdiYzNhZGUxYTU4Yzg5NjJkNmFlMjNlZmU1MDU2IGxlZ2FjeS10cnVuaworNjU5MDkgMTFlNzJlYmY5MDZhZWZlYmE2ZDgxM2Y1Mjc2NjhlY2Q5ZjdjYjMzMyBweTNrCis2NTkxMCAxYmU3ODkwY2Q3NTk3ODAxNmVmZDc1ODllYzY0Y2VkZmMxM2MwOGQ0IGxlZ2FjeS10cnVuaworNjU5MTEgYzAzMDI0ZGI4MDFmOTZhZDY1OTQwMTcwODA4MjhkM2I3NDBjNDA1NCByZWxlYXNlMjUtbWFpbnQKKzY1OTEyIDA0MGQ5NTgwNTAwY2RiNjcyMzk5Njk4NjBhMzhhOWU3MDFkMTRkODIgbGVnYWN5LXRydW5rCis2NTkxMyBlOTk2MTRjYTAyMDRiN2U2MDMxYmZjMjI3Zjg4MjY0ZDcwYWVlYmJjIHB5M2sKKzY1OTE0IDFjYjkwOGEwNDNiM2YwZjkzODM5NzdlNTk3Y2Y0YTZlZWI1YzAxNDEgbGVnYWN5LXRydW5rCis2NTkxNSA3NjA4YWZlMTFmYjk2MDQ5ZTdlNDE2ZmMwY2JmZjRiYWQ3MjExYjFjIHB5M2sKKzY1OTE2IDgxMzNmYmI3NDU4NzU0YTcyNWU2NzI1MDM2MDNiYjJlZDQ4MTgxZTggcmVsZWFzZTI1LW1haW50Cis2NTkxNyBiMTk5ZjM0MTllNjU4MDJiOWRkNjcyYmRmZDc5OGYxNmI2MGRhZjcwIGxlZ2FjeS10cnVuaworNjU5MTggYTE5ZDY3ZDc3YjIyZjc4N2JlMTY1YzUyMDk3OGUyYjZiOTlkYTYyOSBweTNrCis2NTkxOSA4OGNhNTE3NTQ2ZmQwMjM1N2NmNzIzM2RjOTQ3YmUwY2YzYjQ1MTU3IHB5M2sKKzY1OTIwIDAzM2Q2M2JmNzA4ZWEyYWQ0MWM1MmQ0Yjg0MTQ2ZGEyMzFmYTljNjggcHkzaworNjU5MjEgMDEzZDRkODQwN2NiOWY2OGU3NjU2ZDExZjYyYjc5MThhOTUyMWU0NSBweTNrCis2NTkyMiBjNjI4NjJkNzNmOWVjNjRkNjU1NDk0Y2YxZjYxNDQzNDQ2ZjJkZWEyIGxlZ2FjeS10cnVuaworNjU5MjMgNzMxNjQ1NjViOTIwZTIwNTk2ZDMzYTk5M2I5OWVkN2E3OTM3ZTc2NSBsZWdhY3ktdHJ1bmsKKzY1OTI2IDI3ZDE5YjY2NTAzNTc5ZDhiM2E0MWU1MmFjYWI5MDc5OWYyYmIzZGYgbGVnYWN5LXRydW5rCis2NTkyNyA1MDllMzBhNzk2OGUwMWJlMzI5ZWMxMjE1NDBiM2U3NTVmYzRlNTY2IHB5M2sKKzY1OTI4IGM0MTFjZjY5NDI4OTZjYzIxNjA4OWE2OTUwNjQ2ODQ0MzIyZjJlYTQgcHkzaworNjU5MjkgMDFiOWUxOGQ2OWFjNDQ5ZWU5NTlhYjU4YTFhMWE5ZmRjZjhiMWI0OSBweTNrCis2NTkzMiBhMGFiYWZmOTdlMDAxYTRiOTBlNDZkZjM2N2Q3ZjEyYWM1MGRiOWVlIHB5M2sKKzY1OTMzIDk1OWQxYWE4YjU4YWViZTMyNjMwZWYwMmJkNDJhZWFmZWYxOTYzM2IgcHkzaworNjU5NTggNTdhODczNTY0N2NmODc0NWQwYjYzMjY1MGFiNDg0NDMwMGNlNjQ4MyBsZWdhY3ktdHJ1bmsKKzY1OTU5IGE3NzAyMmRjM2Y2MWQyMjFkMTU4ZmE5ODE3ZjQwZjI1MjdhY2ZlMzAgcHkzaworNjU5NjQgZTM5ZDQ0YWRiNjE4MDZjOTY5MmMzYzBlMGEyMzI0NTY4N2E3NTM0ZCBsZWdhY3ktdHJ1bmsKKzY1OTY1IGE4ZDY5YzFhM2Y0ZWZkMzg3NjhhMzc5Mzg2M2JkZWUzZWNkNzI2NmEgcHkzaworNjU5NjkgNGZhYWJiMTg1NjJjNjNkNzI2ZDU2YTdjMGUwY2Q1NDVkOWYwOTYwNyBweTNrCis2NTk3MSA0YjFmMjYyY2ViZGY0MDAzMjcxOWYyNTM3ZjllOGIwZjEwZWZmNzM0IGxlZ2FjeS10cnVuaworNjU5NzIgMmRjNjQ2OWZjNGM0ZDRiM2M2YzczOGY4OTQ3NTFjMzRjODNmMTJjYyByZWxlYXNlMjUtbWFpbnQKKzY1OTczIDE5NDRkMzEwNDBlMzA2NjFiM2JjNmRjYzliYzAzOGIwNGNjMzNhNWYgcHkzaworNjU5NzUgYWZiZmQ4ZjIxNGRkMTMzN2Q2ZDE3NWM4Y2ZmYWZhZDJlN2E1MDFmMSBsZWdhY3ktdHJ1bmsKKzY1OTc2IDJhYTc5YWQ0ZWI4NTJkZGRkNmE3YWE1YTA1Mjc3ZTg5ZjA3YTc5MDggcHkzaworNjU5NzcgYmNlMDNmODdmNjVkYjFhMTA0NGExNGM5ODdhYzhhMGMwOTBmNTMxNiBsZWdhY3ktdHJ1bmsKKzY1OTc4IDQ2YzFiY2M0YzFkMzAzNzQwNTUzYWI2ODY0YmMwYWY1MmQ4NjMxNWUgbGVnYWN5LXRydW5rCis2NTk3OSBkOTUyZTc1M2M2MTFmNzVhYWNkZjU3NTJjNWMzNGU1NjUwMzQ5MjNmIHB5M2sKKzY1OTgwIDc0ODk5ZTZjODdhNWM1ZGE2YWViOWMzZTVlODE4MjU5N2FiZDA0ZjMgbGVnYWN5LXRydW5rCis2NTk4MiBmOTcwYTRmNzU2MGZmYTIwZTk0YjU1YTU4OTY3ZGRkNGZhYTg5ZjY4IGxlZ2FjeS10cnVuaworNjU5ODMgZTNlNTA3MzUwZWQ0ZDRkZTg4ZjFkYTE0M2RhMDE2MjQzODZmYjFmMyBweTNrCis2NTk4NCAyMDQ0MzFkNDRjZGM0OTI4NGMxYzNjZGQ4MTViZTdlZGNmNGY1OTk2IGxlZ2FjeS10cnVuaworNjU5ODUgY2ZkNzlhNGMxNjA0MzNkZDU0ODU2YzQyOGVmZDM0MWQ5NzVjZDExOCBweTNrCis2NTk4NiA3NWY2NGZkMWYxMTM3ODhiZWM0ZmU3ZWNlYTdkZmRiOGViYWFkZjFiIGxlZ2FjeS10cnVuaworNjU5ODggNjViMmRkNDZlMTcxMTg5N2I5MzEzY2JjODg0MWU5NzMxMjVkOGUyYSBweTNrCis2NTk5NCBiNTIxMzgzYjgxYTcxNTcxNWVhZjc4OTU3M2Q5OWE3NTNlZWE2YjhjIHB5M2sKKzY1OTk1IDk2OWVkYzNiNzA3ZjNiZmE4NDNiMTU3OTYyZWIyYzQ5OTQ4YWZjNmIgbGVnYWN5LXRydW5rCis2NTk5NiBlN2I4NTg5MGU5YjEwNzM1MDRkMTVkYzEzMGIyNTE5OWU3YmY2ZGM3IHB5M2sKKzY1OTk4IDU4N2NkNGY2NmMyZGNkOTVmYmM5NTE0MWNmYzY1ZjcxZjViODUyYWIgcHkzaworNjU5OTkgZGZlNTQ2YjY2ZWVmZDc1ODNhZDUxNmNkNjcyYTA3MTRkYmVjNjFjNiBweTNrCis2NjAwMCA3NmU3MWNlY2M0ZDMxM2NiYzBhNmYzZTI1MzMyODgxNTllODc2MDEzIGxlZ2FjeS10cnVuaworNjYwMDEgMDdlYzcyY2YxOWM3ZDYxYzhhMmQyNjgwZWYwMjk1OTlkZGRiYmViNyBweTNrCis2NjAwMiA3YmIxYzYwZWFmNjRmNTllNWJjZWM4NWY2MjY2ZjQyZjZmNzI3NmFmIHB5M2sKKzY2MDAzIDg1YzA4Y2YwOGIyYjVlZWY3NTNkNGVkZWMzYmYxOTc4ZDQwN2RlMmIgcmVsZWFzZTI1LW1haW50Cis2NjAwNCBlMTQ1NTJiNzMxN2JjYzk1NTk0M2JhYmRmMzU5MjMwNmU0YjJlMDE4IGxlZ2FjeS10cnVuaworNjYwMDUgNjgyZTlhNDJjMTVkNTNiNDBmMDJiZjM0YjJiY2M3Nzk5NjNlOTE0NCBweTNrCis2NjAwNiBiMTY4MmM2OTNiOWExNWQ4NzlkNjc1NTIxZjYxZDVkZDNkOTdhNzQzIGxlZ2FjeS10cnVuaworNjYwMDcgNWM3NWEzM2VmNWIyNzYzNjM3ZDg4ODNjNWQxY2E2YzU5MjdjZTRlMiBweTNrCis2NjAwOCBkMmJhMzZhN2E3MTI3NDVjYjhjNTcwMTM3NGVmYTI2ZjdlYThhOTYxIHB5M2sKKzY2MDA5IGFmYjk4MDhiMGYzMGZhMjViMzY2OGM3NDg1ZGNiMjFiMDEwZTA0NDEgcHkzaworNjYwMTAgYTI3MjAzNTNmMGQzNDlkNzQxZTliNThhYzIzZDJjMWMyYWU5YzVmNCBweTNrCis2NjAxMSA5ODRlMWM2MDI5NzkyYzlmMjk0NTc0YWE2ZDNjNTY2ODIzYTE2MWZlIGxlZ2FjeS10cnVuaworNjYwMTIgMmE2YWU3ZThjN2MzNmUwMzNmMjBiYWYzNTk2YTZmNmI2YjMxMmQyYSBsZWdhY3ktdHJ1bmsKKzY2MDEzIDZlYTFhNzIwYjA1N2VlMWJjOGVmMTY5ZTA1NDNiYzI3NjFiMzM4ZDIgbGVnYWN5LXRydW5rCis2NjAxNCA3MGVkYWM4OTBmMmI2ZGY2MmRjOTMwOGY3ZTA1MTRhOGRiM2NiODdhIGxlZ2FjeS10cnVuaworNjYwMTUgYzAwMTlkNDU1NTFkYzc1MGM3NjY2ZjIzMDk4MzdiMWQ1Yzc4YmU1MSBweTNrCis2NjAxNiBjOTVmMzg3ZWQxZjQyNmNlNjUyMWMwOGI2NTlmNmIxOGFmMzIzZDdkIHB5M2sKKzY2MDE3IDU4ZDI5NWU3ODAwZjdhNGYyZmI3YTJmMjFmNWNhMWY5OGUzMGEyNWYgbGVnYWN5LXRydW5rCis2NjAxOCBkZTk1NGRkNjc5N2I2ZTY3OTQ1ZGFlNzE5OWM3YjEyMTU3NGFmZmY5IGxlZ2FjeS10cnVuaworNjYwMTkgODgxMTk4M2RmY2FmOGIyMjZmNDM2NzNkM2Q4NjQ1MDU2MWRhZGM2NSBweTNrCis2NjAyMCAxYTQ5MjJmYTUxNjA2NTkyMWFjZDA3NDg3ZmNlYTIyZmM3NTNiOWIyIGxlZ2FjeS10cnVuaworNjYwMjEgNjc4YTBmMGU2MWJjNWQ2YmM1MjYxZWM3M2I3YTU1MTQyNmJjYTQ2OCBweTNrCis2NjAyMiAyYTQ3YjNiYjExZmQ4YmQ5ZWE5OGYyZTY3MTU3MDNkOTIwMjlmYjZiIHB5M2sKKzY2MDIzIGRmNjI0ZGY2ZWZhM2NkYTA0MWVhNGM0YTMwYmZiOTVmYjRkOGE1NGIgbGVnYWN5LXRydW5rCis2NjAyNCAzZGM0ZGZhM2ViYTE2OGNmYmE0MDE2ZjliZjdlMDM5ZDhjMzQyMzY3IHB5M2sKKzY2MDI2IDZmYWM2MzYxMzNmMDEwNmVlNGEyOWUxNDg2MjVhMjVhMDU5YjYxODUgbGVnYWN5LXRydW5rCis2NjAyNyA0ZmI3ZTdiMmM5NjJhYzA4NjliOWFkNGRkMjViYWYwYmM1ODY2OGQxIHB5M2sKKzY2MDI4IDllYjBjZDMwMzI2ZDhiNjU0NGJkYjBiYmZiYjk1YWNiZGI4NWZmZDIgbGVnYWN5LXRydW5rCis2NjAyOSBkZDE3N2Y1NzZiZThhOTVlNmUxYzhhOGExZWU5YTlkYTAzYjA1MjdiIHB5M2sKKzY2MDMwIDVhMjA1OTNhODE4ZmMyMzJhYmNmNjIzNTMxMjJmODY4NGY0MTA5ZTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2MDM0IDgyZjczYjBiNWEzMDhlOTgyYzUwMzIyZjlmY2RhMzk3M2I5ZjI4NDIgcHkzaworNjYwMzggNTQ4ZGNjYzQwMDhlZDkzNGJhZmFkNWY3YjcxMGNhNDJkYmJiMjFhYiBweTNrCis2NjAzOSBlZGQyY2E4OTRhNjdkYzZiNGY5Y2M5MmQ2OGZhNDVhNzc1OTUwMzM2IGxlZ2FjeS10cnVuaworNjYwNDAgMDNjMjNjNTA2NTRlNWUzYTYyYThmZWM2ZjRhN2ZiNGQxYjIxY2Y2YyBweTNrCis2NjA0MSA0ZGIxZjUwOTgxNzVhYmNjNTZlYWQ2ZjA1ZDg5MjFiNWMzZTRiYjJjIHB5M2sKKzY2MDQyIGQ2ZTg2YTk2ZjliMzUwODljYjJhOTc0NjA3M2QwNWM4YzBhYzZlMDUgcHkzaworNjYwNDMgZDAxYzFkNzY4ODQxNTM0MGUzMmI2YjczMTdmYzFmOTZhNzg4MDVkZCBsZWdhY3ktdHJ1bmsKKzY2MDQ0IDEyZDI3NjIwNzZiYWE2MTFmNzY5YmJlODA2ZmVkZDI1ODc2MDVmZWUgcHkzaworNjYwNDUgYzQyYmY5OGIyNjBmMzUyMDQ2ODQzODcyNTYyNDc0NDVlMDI1MzYwNSBsZWdhY3ktdHJ1bmsKKzY2MDQ2IGQ5ZmUyOWU5NWQ2MDE1Yjc4Mzc1NGM0MmRhYjc3MzcxMWE4NjUzYjcgcHkzaworNjYwNDcgZGU2ZmI5ZjM0NTEzMjc1ZDYzNmY1MDEyODQ3YzM2YTM2YzVjYTE5ZCBweTNrCis2NjA0OCA0N2E4MDFjMjlmMTNkNDhlNmMwZmNlNzRmZjk5ZDIzNDdiZGJlMjRhIGxlZ2FjeS10cnVuaworNjYwNDkgYWEzYzkwY2UxOTMyYmFlNzdjYTlhNjQ4ZDgxMWM4MTMxZjk3M2ZjMCBsZWdhY3ktdHJ1bmsKKzY2MDUwIGZkZDFlZTIwYWI4NmIwOTgwN2QxOWE0NDc4MTBkZGE2ZjA2MzlmNmUgdGxlZS1hc3Qtb3B0aW1pemUKKzY2MDUxIGYyN2NjZmRlYTgzNDAxMjAzOGNiYTA4MjdiMzZkNzQ3YjU5OTRmN2YgcHkzaworNjYwNTMgZWZjNDk4NjNjZDhmZjliYjM5ZDEzNmFlYjVlOGJkMjM5ZDAxZTI3YSBsZWdhY3ktdHJ1bmsKKzY2MDU0IDQ3MTkyZDBiNzMxZjEwNDk2ZjNlNjIzMmQ5OWI2NWE1MGNkNmM5MzcgcHkzaworNjYwNTUgNmNlYjdjODllNzc2YmE5MjQ0OTk3NjljNjk2OWI1ZTNiMDY3YTAxOSBweTNrCis2NjA1NiBjNTYyYzhkYWU0OWE2MDU4NzBlNmU4YWE2ZmE3YjhlMmVlOTE3Y2FlIHB5M2sKKzY2MDU3IDI3ZTE0MmQ5OWE3MTczOTM2YTY1OGZkYjAzY2VmODhjMTI2N2RiODYgcHkzaworNjYwNTggYmJmZmUwOTE0YzU2ZTYxMGYxMThlMTNiZWFhMDc5YjE5MThiZTE5MiBsZWdhY3ktdHJ1bmsKKzY2MDU5IDBjNjVjODAyNzUyYTJiODIwZDNlYjNiZGJmMGNjNjU3NjY2MjFiY2UgcHkzaworNjYwNjAgYThjNTM1ODBjNWVjNDcyMjVjMThmNGM1MWJhZmUxYzNkYjRhYjEzYSBsZWdhY3ktdHJ1bmsKKzY2MDYyIDMwODM0YjlhYTE5MzdmMWZmODJkNDg3NzQxMzEzZGE4NTA1MmEwYTggbGVnYWN5LXRydW5rCis2NjA2MyAwMTMxMzhjZGI4NzNiMmVjYzE3ZmE2YjQxNGNmMzRmNGE3MzRlZjhjIGxlZ2FjeS10cnVuaworNjYwNjQgMDNlMjE2ZGM4ZmVjY2I5MWE0MTI3NDI2MDM4ZGRjNzQwYjE3MDU4OCBweTNrCis2NjA2NSA1NmVkNDQ1ZmE2MWU2MDM0ZDQzYjI5Y2Q3MjUxOTU0NmYxOGIzYmY0IGxlZ2FjeS10cnVuaworNjYwNjcgOTZiYzU4OTZhMjQwNTUxY2RiNzY0MzZiZmNmN2I0OTc0MWI0NTFhMCBsZWdhY3ktdHJ1bmsKKzY2MDcxIGEyZjIwMjhiNzNlZDNhYmU1NjhhYjY5MGI0NmEwYzRiZTlhNDhlMGYgbGVnYWN5LXRydW5rCis2NjA3MiA4NGJkZDUzZTM5MDY0ODZkZWIxYzE2ZmYxZmUzODU3MzI0ZWYxN2MzIGxlZ2FjeS10cnVuaworNjYwNzMgOTYwNTg5ZDJhMTJkOWFkNDM3OGU1NzdjNzFmYWQ4Y2JkNmRlOGIwOSBsZWdhY3ktdHJ1bmsKKzY2MDc0IGZhN2I2MWQyYmIzZDdjYzdjYjc4MWU2MGZiYTkxNzJkNDJlNGQ0ZjUgbGVnYWN5LXRydW5rCis2NjA3NiAxMWQ4ZmEzYzg4ZDhlODM2ODFkYzNhZWM0MWJjNjFmZGY4MWJhMDdmIGxlZ2FjeS10cnVuaworNjYwNzcgNDhjNWViNTEzMzcwZDhmYThkNGUyZTQ5ZDljNTdhNWE0NDc2NjBiNyBweTNrCis2NjA3OCBiNTE1NjkwYjM3OWQ3ZGRlYWI1MjgzZWEzZTA1NzFjMzMwMGEyZGEzIHB5M2sKKzY2MDgwIGY2Nzk2M2NkNDM5NTNjYzFkOWVlMDUwYTFiMTVhYzhjNDI3OGVmOWMgbGVnYWN5LXRydW5rCis2NjA4MiBhMWQ5ZTgzYmM3NmRhM2FlZTI3ZGE0Zjk3ZGRlMmRhOTBmODY5MGE0IGxlZ2FjeS10cnVuaworNjYwODMgZWIxMzRlZWUzMjMyMjYwMDM3M2Y1NDhmNjg2YjM1YmY5MGRjMDc4NCBsZWdhY3ktdHJ1bmsKKzY2MDg0IDM2YWQ1ZTdlMzliNGZiZDk2Y2MxOTgxNGVkYzdlNzA2YTIyNWFhMTMgcHkzaworNjYwODUgOWMxNzVmODg2MGUyM2RmMzZlMThhMGQzMTgyZGEwZWVhNDhkMDhmZSBsZWdhY3ktdHJ1bmsKKzY2MDg2IDIyMWRlMTM5NDY4MTEzY2Y1ODkxMTFkODQ3MzI2NGMyYmIxM2Y4NDMgcHkzaworNjYwODggODFhMWExNTQ1MTcyMmI4MTk1ZjU3NzRhNmRjOTRkYzU1M2FkZmMzMSBsZWdhY3ktdHJ1bmsKKzY2MDg5IDVkYTZmMjFjZjgwNTk0MjFkMWQyNDY0ODRjZWRjYzRmOGRkNTViZmQgcHkzaworNjYwOTAgZmMxMWE5MDRmNmNkMTc5MGFmOTIwZTg0NjEyMzk4MTM0NWUzYjlkNyBsZWdhY3ktdHJ1bmsKKzY2MDkxIGJlZTZlYjc2Nzc0MjdmODNkYTk1NjZhYjY0YTRjYTcwZWM4MGUzYTEgbGVnYWN5LXRydW5rCis2NjA5MiA2MjRiNDRiN2NkZjI5MjE4NGZmNzQwMWI4MGQ2NzU1NGJkZDkxNWVkIGxlZ2FjeS10cnVuaworNjYwOTMgYmU2M2VjNzQ4ZWUwNjRhMjA2ZjNhY2NjMDJhYmIxYzE0N2EyZmJjMCBsZWdhY3ktdHJ1bmsKKzY2MDk0IDdlMTk0YjljYzBhMmI0ZDFmMjRkMGY0OWNlZGZmNWNmYjA5ZmJiYWUgcHkzaworNjYwOTUgYjRjMTRiNzBmZTBmODE5OWFjNGJmZDEyOTY5ZmJkNjYzYzA0YjNlMSByZWxlYXNlMjUtbWFpbnQKKzY2MDk3IDdiMzk1MDFiMGE3NjI0N2MwOTIwNmQ3MGViMzkzZTliMDgzZmViYTcgbGVnYWN5LXRydW5rCis2NjA5OCAxM2ZkZjk4ZWEyOTAwMTMwNzJlNzZhMWUwOTcyODgzYzQyMGM4NmFhIGxlZ2FjeS10cnVuaworNjYwOTkgMTc2YzQwOWZkNzQ3ZTgxMmEwNjcyZGRhYThkYWMwMDAxYWYwNTZlNyBsZWdhY3ktdHJ1bmsKKzY2MTAwIDhjZGE2MTVlZjIyYmI3NDhlMGVlMzU5NDQ4MTRlZDlhZjk4M2FmM2QgbGVnYWN5LXRydW5rCis2NjEwMiA1ZmEwZDMxYTY3MWI3ODEyYjBjZWY0ZTM5Mzc2MmE2M2ZiZjFjZTYwIHB5M2sKKzY2MTAzIDU3NjQ0MTUyN2Q0ZjdjYzNkYjcwNjkyZDM0NDZhMTlhMjJiMTE4OTEgbGVnYWN5LXRydW5rCis2NjEwNCBlZDU5ZjNiNjdiM2FlM2MxMTg3NGI4NzVlYjRjMmUzOWU2ODQzZjdiIGxlZ2FjeS10cnVuaworNjYxMDUgOWRiM2ZlNzgwYmZjNmExMDIwZTg0NmNlYWY1YTgwYzAyODhkMmVmMCBsZWdhY3ktdHJ1bmsKKzY2MTA2IDkyNTE1MzIyNTU3MGMzYjhlMjJjZTU4OTFkY2M5YjcxZjQ0NjkzYjggcHkzaworNjYxMTAgNTE5ZTA0NzU5OTFmNzZiODFkNTMwMTU4NDc1NjMxMDM5NTlhNmY5NSBsZWdhY3ktdHJ1bmsKKzY2MTExIDY5NmY1ZDg0MTlmMjA5Mzk1YjNmNjIxNzIzNDc5ZWQ2NTA5YzRlYjAgcHkzaworNjYxMTMgN2VjZWMxYjMwYzNmNDA1MzE3MTA1ZmQ4MzVkNThmMDE0MmM0YjNlMiBweTNrCis2NjExNCA5ODg2NjFmZmQxMDI5Y2IwMzdmNjI0ZmUyNDQ4YzEwOGNmODViOWJhIGxlZ2FjeS10cnVuaworNjYxMTUgNTFmNzk1Yzk1MzBlYzBiY2I0NDE2ZTlhOWM2YzBhYmQzMDU1YTFjYSBsZWdhY3ktdHJ1bmsKKzY2MTE2IGE1YTA3MWM4MGYyZDI1Mjk0ZTFiNDcyMzQxOTUwMmM5ODFiNTc0MjkgcHkzaworNjYxMTcgMTJmYjM2MjZlZTU5ZjE4ZGVmODI3ZTA1Mjk0ZDEyMTYzNGIxODRmMyBsZWdhY3ktdHJ1bmsKKzY2MTE4IDM3YTlmNjkwYTk0YTlhY2IzOTIzMjc1MTZlNDMyMzA1OTYzODU0NWEgbGVnYWN5LXRydW5rCis2NjExOSBiNTM2NWYzNDY0MGYyYzY2NGMxOTIyOTRlYjYwMzU1MjkxZmNlN2FjIGxlZ2FjeS10cnVuaworNjYxMjAgNjZlMWFmZDMzNDVmZGIwYmI0YzFmOTdhOWQxNGQwYzFjMGM4MThkNCBweTNrCis2NjEyMSAxNmMwM2Y3Y2JjMjIxZjk0MDVjMTM1OWJiMmE3M2ZmZDQ0ZjIyODkyIHJlbGVhc2UyNS1tYWludAorNjYxMjIgMzJjZTQwMmE3ZTNkZjIwYzBmNWNlNTBlOTM1NDg3NGIyNDBkYmNlYiBweTNrCis2NjEyMyBlNjAyMWFhZDJkZTJkNWVjOTk0ZjY3NjYxMDJkMWU1YjEyOGVlNWUwIGxlZ2FjeS10cnVuaworNjYxMjQgNjgwYjA3NmQwYzEzYTAzZjMzNGE2NzQ5ZmE0NDYzYTVlM2IxMTUxOSBweTNrCis2NjEyNiA0ZmM0ODBiZTFlNGQyYzY3OGEzOTJkNDNhMzlhNDg3NjJmMTlmOTM0IHB5M2sKKzY2MTI3IGJjNTg1YjRkNDYwNmI1MmMzYzdlNTFkOTYyZTVmZjE3OGY4YzhiNmIgbGVnYWN5LXRydW5rCis2NjEyOSA5ZWQzMjg3YmVlZjE4YTRiN2JhYmEwNDEwMWRiYzIyZGMzYWZkZjhmIHB5M2sKKzY2MTMwIGFiYTg1OThjNzg1Y2E1M2UzMzYyMWQwYThhYTRiYTM2NDE0OWNmMjAgcHkzaworNjYxMzEgMjM2ZmNmMjkzOWM3ZDUyMzg5MzRjNmUwZDgzMDA1YmQyZDFmNWQxNCBweTNrCis2NjEzMiAzYjk2MDgxMThmOGQ4N2I4ODExYjM3YTQ2YTA3NDkwOTUyNDkxZmY4IHB5M2sKKzY2MTM0IDhhMTA4ZDU0ZWYwM2NhYTFiOGQ3YmE4MjA3NjJkZjBhZWIzNTRiMDUgbGVnYWN5LXRydW5rCis2NjEzNSBkNTYzNjIxZDc2ZGI0Zjk0ZTc0NWViYzYyYjkyMTc4ZWEzM2RiMmNiIGxlZ2FjeS10cnVuaworNjYxMzYgY2QxODYzMDZmMzg1YWM4Y2ZiZTYxODc5ZjQ4NGNiMTFiZmYwOWQ1NCBsZWdhY3ktdHJ1bmsKKzY2MTM3IDhjNGY3NTA2NjFlYzM5NDQwNDlmMGJlNTA1MjBmNGQwNzE4OTgxZjkgbGVnYWN5LXRydW5rCis2NjEzOCA0YzE3NzBhNTVhODVlNWRhMzMzZTdlNGVkZTBhZTEzMDRjYjU4OGNjIHB5M2sKKzY2MTM5IGNhYTQxZTE2MWIwNDExZjQwNmM3M2UxOGU4OGNkODdmMTc1OTNiNDkgcHkzaworNjYxNDAgM2JkYzQ2ZmFlZjRkYThiMDZkMDcyOTVjY2ZhZDhjMDcyYzZjMTI3YyBweTNrCis2NjE0MSA0YjI4YmY1ZWUzOTNiNDNiYTQ5YmI4ZTg1NWM5ZDE2MDkwZDY1N2Q1IGxlZ2FjeS10cnVuaworNjYxNDIgOTllZTNiNzdiYzBkYjJmMmFlMmEzYTg3YjEwNTg0M2YwMDUwMTU5MCBsZWdhY3ktdHJ1bmsKKzY2MTQzIDE4OTc3NDNiMzE1ZGUyYWY1NGJiY2E3MDhjMmJhMjE3NTAxMGVlYzIgbGVnYWN5LXRydW5rCis2NjE0NCA0ZGE0Zjk2Nzk2NzI1NzQ0ZmMyZDQ4N2QyZjUyNWVjMzQzNDRiZmFlIGxlZ2FjeS10cnVuaworNjYxNDUgMzc3OWZjOWRmZTVmNzM4OTBhYWE0NmUzYzdlZjEyZTRlMDZmZDkwMCBsZWdhY3ktdHJ1bmsKKzY2MTQ2IDM4ODg5Y2I0NTE4ODEwNWQ3MWY4MzljNTM2YjU2Y2Y0MzFhZjU2N2EgcHkzaworNjYxNDcgN2E2ZTZhMDRlMjhkMTQ5MmJhMTFjMDc5M2NkODhlNDlkNTk4YTliNyBweTNrCis2NjE0OSBkODNjZTRiNTgxZTYxNTZkM2E3YmFlYTAxNjFkYjRhOWI0ZmU5ODI4IHB5M2sKKzY2MTUwIGQwZDUzZGU5ZDgyZTJmMWU5NzhjMDU1MWM0NzY1ZTM3MjcyNmY1ODQgbGVnYWN5LXRydW5rCis2NjE1NCAzODE3Yzk2ZmQ1NDA4YTBiM2Y0MTZlN2Q2MzJlZmY2OGE2ZDY4NzllIGxlZ2FjeS10cnVuaworNjYxNTUgMWMxNGNlMDg1NDE1MWVhMDRlMTYzMWI2NmMxOTRhYWE2YWYzNWYwMCBsZWdhY3ktdHJ1bmsKKzY2MTYwIGJhNWM0Y2UxMmJiZGYxNmQ1OTRlMDI2ODRiMmZhYzE5MWNjNjEyOGUgcHkzaworNjYxNjEgNzUwZGEyZDE4MDg5MmVhOThiMmUwZGFmZmUwZTNhYWViMzc2N2EyYyBweTNrCis2NjE2MiBjN2ZkMGU4ODFjNDUzMDNhZDlhNDEyOTAzY2E2MTEwODJhZWY0MTYzIGxlZ2FjeS10cnVuaworNjYxNjMgODhjOTNhOWI0MTM3M2FkMWNlMmE2ODkxMWU4M2Y2NDcxYTcyYmMzZSBweTNrCis2NjE2NiAzYjc0ZDE0NjJlM2EwZjdkNGQ2MzJhNTA5MjJhMDgzODY1MjYzMjNkIGxlZ2FjeS10cnVuaworNjYxNjcgZjFhZTY5Y2RkNGZmZGJmYWI2N2FjNjA4YzMzY2NmYTQ5MDdmYWE2ZCBsZWdhY3ktdHJ1bmsKKzY2MTY5IGQ4MjZhNzU1NzFiYzk3OWY5ZDA1OTc5ODcxODg3ZDIyMjJlNWQ5OTkgcHkzaworNjYxNzAgNzg0ZDI0YTVjZTdiYWNjZjk3YzQzOGIzOTRlNjE5ZWUwYmQxYzkxNiBweTNrCis2NjE3MSAyZDgwZDAwYjFlZjM2MDMzMGE3Y2UzNDg0NzhlMDYyNmY4MzlhMzdjIGxlZ2FjeS10cnVuaworNjYxNzIgM2JkOTAwMmU3NDFmZmMzMDY2MmIzZTgwYjk0ZjlhNzExN2NjMjE5MyBweTNrCis2NjE3NCBlMmVkYzFjMTFlNTA3NzQ0Mjk1MjUyZjAyODU3YTMyY2VkNjRhMjhmIGxlZ2FjeS10cnVuaworNjYxNzUgNjM1NmE1NDE0ZDAxOWNmYTk5YzQ0M2Q0YzM0N2JiOTg0ZmQyMzAxOCBsZWdhY3ktdHJ1bmsKKzY2MTc3IGJmMDQzZDBkYjdkZmM5ZmE5N2FhYmI1NWQyNDk4MjIzZDc4ZmZkNjUgbGVnYWN5LXRydW5rCis2NjE3OCA3NWM1YTJjOTM3NmU5YjQ1ZDY0MWM3NzExMzg3MjU3MGUwZGY0ODQ2IHB5M2sKKzY2MTc5IDJhNjBmN2I0MjMyOGRiMTRhMmU5N2I0ODk1MGNlY2I4YzVkNGZhNTMgbGVnYWN5LXRydW5rCis2NjE4MCA1ZmQzOWI4NGZjMjkyYzllNTA2ZmJmMGY0MDA5MTI0NGYyNDM2MzEzIGxlZ2FjeS10cnVuaworNjYxODEgNGM2ODNlYzQ0MTViM2M0YmZiYzdmZTdhODM2Yjk0OWNiN2JlZWEwMyBsZWdhY3ktdHJ1bmsKKzY2MTgyIGI5ZWQxNGViOWU4N2JmYzZhZjdkMzYxOWE1YjU2NzQwODRjMGE5MmYgbGVnYWN5LXRydW5rCis2NjE4MyAwZjY5MzBhNDMzNjI4YzdiNTVlMWEzNGQ4MzM2ZGVmZWY0ZDdhNzBlIHB5M2sKKzY2MTg0IDMzODMwOGM5Y2NjYmNhZjcwYjJjMzA1ZmEwZWJmYWQwYWI2YzEwYzAgbGVnYWN5LXRydW5rCis2NjE4NSAwNmY1NGUxMWEwOGI0YWI1MDFhMTA5N2RiN2Q2MTc3NDY1ODM0YTE5IHB5M2sKKzY2MTg2IDIyYWIxMDZlMzE4NmI1ODQ5NDYwZDFmZjNmOTY5YjI0ZjcwMzNlMTQgcHkzaworNjYxODcgZjgzZGNjZjQxN2YwZGE2ZDNkMDY3NWEyNWRmN2M5NDI0NzczNTUxOCBweTNrCis2NjE4OCA5MmEwMWZlMjRhZTA2NDFhZmVkMWE5ZTQyZWY4M2ZkMWU4MTEzZGMwIHB5M2sKKzY2MTg5IDYxNTQ1MTZiZTQ5Y2RjOTRmYjNiYTkzMzFhMjgyNzcwYTAxMzFmOGUgcHkzaworNjYxOTAgMTRmYzE2OTI2YzAzZmM4NTg5MjA5NzY2YmU2MmVkYmU5ODE3Y2ViMSBsZWdhY3ktdHJ1bmsKKzY2MTkyIDAxZjJkY2UwNmY3ZDEwMmZiOWQ0MzI2MzNhNzM1YTk1ZTYzMTdhZmEgbGVnYWN5LXRydW5rCis2NjE5MyBlNmM3YjZmYTA3NzFlNDBiODdiMDczYzI3ZjllMmIzZTY3MjkxN2U1IHB5M2sKKzY2MTk0IGE1Mzg2MTAxODY1Yjk3ZTBlMzg3Mzk4NmJiNDY5YmZlNjMxNmYxYmUgcHkzaworNjYxOTUgMTc3ZThhNjFhZjQ1YzUxNDBkZTA2Yjc2MjMzNWI2MDE4YjVjZWRlNCBweTNrCis2NjE5NiAyYjg1NWE5NDdmMGY1ZjYwNDQ4YzE2YmM0OTViYjg3NGY3MTFlOWIxIGxlZ2FjeS10cnVuaworNjYxOTcgZTBhYjViMjg2MTI0NTZjZTc4ZjkzYTZkNGQ0OWE4M2U4NjU2NDZlMyBsZWdhY3ktdHJ1bmsKKzY2MTk4IGU3YmNmZDcyMDg5OGFiYTQyNTc5ZDJhZDk1NzIxNDg0NjRlNzA5OTQgcHkzaworNjYxOTkgNjVlMjM2ODNjMDEwYzNkYTQ3MTljMTU5MDM1YjJlNjhkMjExN2NiYyBweTNrCis2NjIwMCBlMzg0N2U3YzI0ZTAzMmU0YTE0Nzc3YThjOGZlZmRlMTczNmM5ZDU1IHB5M2sKKzY2MjAxIDk5NTdhMzZmYzE2N2VjY2QzNzNjYzZkOTA5MWNhYWJlY2U2YzkyNTYgcHkzaworNjYyMDIgNWI3ODQ1ZWY0ZWZkMGQ5YWJjNGFjYTVmZjlmN2ZiNTMzNTY5NDA1MyBweTNrCis2NjIwMyBjNTMyMzRmZjYxYjAwZjRkZmVhMDlhYWVjMDAzZTU5NDQ4MzllNTcwIHB5M2sKKzY2MjA0IDgxMmVhMTA1YjFiMGVkMGI5ZjExMzA1ODJhYzZkOTcwZDJlYmQ5ZTYgcHkzaworNjYyMDUgZjcxYTg5MjhjMWI3Yjk2M2E3NjhiNDMxMDk0YWI3ZThkZTY4NzVjYiBweTNrCis2NjIwNyAxNDI0OWJjYjkzZDBjYTY1ZDlhOGE0YjZkY2IxMDk0M2I0MTdhNjFjIHB5M2sKKzY2MjA4IGM1YmU5NDg0YjE0YmQwN2FmNGU4ZDQ2M2FiOGE3YmEzODAxMGU5OGIgcHkzaworNjYyMDkgNDVjNDM4MDg5NzllOTU3NjM2ZWQzZDkwZjE0MjFhOTA5MjAyMGVhNyBweTNrCis2NjIxMCBkYzc3NGNlMDFjMWZhMmI1OTMyMjY1ZWNlYmVmOWIwOWQ0N2Q5MWYzIHB5M2sKKzY2MjExIDgzM2QzZWNmYmJmMDkxMDk0MzdiMDM2YjQ2ODQ4MjA1NTg2MjQ1NTAgbGVnYWN5LXRydW5rCis2NjIxMiBiMjY2NTg0NzZkNTU1OWYwMzFiOTQzYjgyYmMwOWY5Yjk2MGQ2YjVmIHB5M2sKKzY2MjEzIDMxNjkyMzY3NzNmMWI3NWIzMWRmY2VjMjg1MDc2ZTRlOTExYTA1ZDMgbGVnYWN5LXRydW5rCis2NjIxNCAyYzJiZWY4ZmZjYTEzOGZkZDNiMWIxZjMxNzkwYjAxNTJmYWUwNWFiIHJlbGVhc2UyNS1tYWludAorNjYyMTUgNWMxMGFmOGQzM2Y1Y2QyZGUzMmRjMTUwYzAyZTFkMTUwOTljNWUwOCBweTNrCis2NjIxNiA5NGNjMTFlYzdlYzIwMmUzMzY0Nzk1ZTcyOGFhZGI2OTUzY2MwZjFlIHB5M2sKKzY2MjE3IDViNzZhM2U0NWFiM2UwMWI3OWFjZWZmNGMwZDBjM2ExMmM3NjI2Y2YgbGVnYWN5LXRydW5rCis2NjIxOCBhZTJjMWIyNzVmZWIzYWFkYjJlMjQ0NTcyMzdiMzVlOGRmNzkyYTIyIHB5M2sKKzY2MjE5IDQ0NTJmZjFmYmM5ZDUxMzQyYzJkNWNmM2U1MWQxOTk5YzhmNmZmZDMgbGVnYWN5LXRydW5rCis2NjIyMCBiNzU3M2VmMjRjNzE5ZWMxNWJmYTM1MTIzMjJkNDMwMjk0NmQxYWEwIHJlbGVhc2UyNS1tYWludAorNjYyMjMgN2Y4ZWY5ODI5NGJjMTFjMzc1Y2U2MmJjZmUzNGJlYjk2ZjhjY2Y4OSBweTNrCis2NjIyNCAzZmEwNjZkMmEzOTdkYzcwODU0YWEzMmQ4MTcyM2U1N2E2MGMyMjRkIHB5M2sKKzY2MjI1IDZiMDRiYzQyYmFhNWJhN2E4ZDc2ZTNlMjVhZGY5NzlmNTEwMzlkY2UgcHkzaworNjYyMjYgYzYxODNhODk4ODBlNjI4MTNiNGQ0Y2RiNmJmN2U3YzVkNzM5NzQyMSBsZWdhY3ktdHJ1bmsKKzY2MjI3IGZkZDkzYmZhNmMxYmE1ZTc1Yjg5MGY5OGZlMDc3YzliYjQxYTBlOTQgcHkzaworNjYyMjggYTY2MjAzNDNlM2RiNDdmOGJlNmYyNjI0MGYxODVkZjI4ZDA0ZWRkMCBweTNrCis2NjIyOSA4YWZhNzcyM2FmYTc2YWQwN2EzODE0ODY4ZjQ4ZGVlN2UwZjdiNTYzIGxlZ2FjeS10cnVuaworNjYyMzAgYjQ4NjY0OWNhOGJjZTIwMTdhMmEzMjg0OWViYWE3YjNmYmUwNTI0MCBweTNrCis2NjIzMSA4OWE5YmMxODU4NmExNzMyZjFhZDIxNDhkZTUwNzY0MmQxNmVhMjQ5IGxlZ2FjeS10cnVuaworNjYyMzIgYjQ1ODY4ZmU0ODljYjIzOTNmZGEwZTE0NTMwYTBjODE2NDk4NjY0MCBsZWdhY3ktdHJ1bmsKKzY2MjMzIGU3ZTcwZTg4MTE2MGJhYjMzOTQ4Y2VlZTBkN2FlOWE0MTM2OWNmZDUgcHkzaworNjYyMzQgYTY3N2Q2OGU4MTA1YzlhZmRkOGE0MmUzZDIyMmJmMzMyOWZjYmIxZSBweTNrCis2NjIzNSA0MzMyMjBhNjBhOGQwMzUwZjQwNmUxYjE1ZjA3MTJkOWI3YjZjMTUxIGxlZ2FjeS10cnVuaworNjYyMzYgOTdiOWYwYmU5Mzg1MjQ5ZjMyYjY2NjJiZmVmZjM1YWY0ZGFhMjY0ZSBweTNrCis2NjIzNyBlNzQwOTY5NzM4ZWYxZjhhZjVmYmY4ZWM4NTQwOTE0OTQyNTI1NWQwIGxlZ2FjeS10cnVuaworNjYyMzggZWNkN2Y1OTBlMTQyNDc5YzE2ZWVhYWVkN2I1Zjc1YzhjMjM5OTM3ZSBweTNrCis2NjIzOSBkYWI3YWJiNzdlOGY4NTUzMmIyN2I2YzRjZjM2N2JlN2M3NjdlZDBlIHB5M2sKKzY2MjQwIGYzMjUxN2Y4NzZiNjdjMWM1ZjFjOGYyMTQxOGQ5YTQ0Y2YxZWJhYjQgbGVnYWN5LXRydW5rCis2NjI0MSAyNmJkZDk0YTQyOTM3NzZhMDc3ZGIxNDEwNTgwODk1ZDgwNDFhYzFlIHB5M2sKKzY2MjQyIGMzYjgxMTIxNGNlOGZhYWQwMTg2ODMzM2YyY2I0YjBhOWJjYTZhOTAgcHkzaworNjYyNDMgMjM4YTA4OWQ0MmJkNjJlMDg3NmU5YzNiMDVkZDAzYWQyOTRhYTExMiBweTNrCis2NjI0NCBkYzA3MDlhMmI0MmY1NzcyMzRhODYyODBmNTdmNWM0ZTI0OTAxNmVmIGxlZ2FjeS10cnVuaworNjYyNDYgNDg4MmU0YzQxY2UzZWZlYjViYzJmMzUzYWE4ZTdkNTkzNDA3MzYyNCBsZWdhY3ktdHJ1bmsKKzY2MjQ4IDE5MzM4MjQ3OTI1ZmM0Y2Y5Y2UzMTUzYzI2NzI2MWQzZTJlYWRkNDAgcHkzaworNjYyNDkgNzUxZjFiNTY5OWJhZGU0ZTgwNjU3YTgxMThhOGQxZThhMDkxNmI5NCBsZWdhY3ktdHJ1bmsKKzY2MjUwIDEyZWY3YTkyZTU5YmJiMjQ1ZDhjOTMzNzUwMDIxOGQ0NDYwZGU3MjUgbGVnYWN5LXRydW5rCis2NjI1NSA2NjIzMzZkNTY3YTllY2U2ZTFiMzhhZjQxNTVjN2MxM2E2MjRiZTA3IHB5M2sKKzY2MjYwIDZlNzFiMzk4YjZjY2RmZjY4M2FjMTIwMDEwMjRmMDBlZmJlNjRhOTYgcHkzaworNjYyNjEgZjgzNjgxNDJmOGQzYjQyOWYxMWM4NGFjOTkzOTJkMTAzYzMzOGVhZSBweTNrCis2NjI2MiAxNWRmMjk3MDVlMTgyYTEyNzYyOWY2NDZjZWNlMmY0ZDAyYzljODYwIGxlZ2FjeS10cnVuaworNjYyNjMgNGRkNTk4OTE0MzgzNDdjNTg0NDM2Zjg1OGRhNDVlNDEwMWI0OGYxMiBweTNrCis2NjI2NCA2NzAyOGY1YjMzMjFjYzNlOTUyM2QxNTcwZTNjMTdmNWU5YTdjMDIwIGxlZ2FjeS10cnVuaworNjYyNjYgYzFhOGY2YjY0OGVhNTFmMWNhOWEyZTU3ZDYyNTFhZjNhZTlmYjkzMCBweTNrCis2NjI2OCBiYjBmNzQyOGExNTA3ZGViYTcyMmYxYWNhOTllYzJiMjA5MGNlM2YwIGxlZ2FjeS10cnVuaworNjYyNjkgNjc0NmM2YmVlMjg2MDkzYzMxZWRiODkwZmRiZjIzNTk1NTU1OTMwYyBweTNrCis2NjI3MCBlMjdjZjdlZTI5NjhiM2ZhZTkwYTNlZDFkYWRmNGVjZmNlMmE1OTE0IGxlZ2FjeS10cnVuaworNjYyNzEgY2ExYThhYzQ3ZDA0NjFkMTMyYTczNGMzMTI1ZmJmYmIwYjY5MWQ0NSBweTNrCis2NjI3MiA0NDVjZTY1NzUxNjJlYmQzZjk5NGFmN2IxNjAwN2UwMmM4ZmEyOWM1IGxlZ2FjeS10cnVuaworNjYyNzMgOGZmZWMzNzIwNDBlNDdhOWIyNjA3MDIxOTE3NzQ1ZWU3NGJhNjhkNyBweTNrCis2NjI3NCAxNzlmOGQ4OWFkMTlhNmJhNGY0NGE2ZWRjOWZiNWZlMWU4N2ZhYTQ0IHB5M2sKKzY2Mjc1IGZkYTY4OTk3MGIzZjgyOGE2ZGEyMjUzYTRiY2JhYzJiNjM2MDA2NDcgbGVnYWN5LXRydW5rCis2NjI3NiAwMjYyN2I5MjVhNDNjNzE5NGI1ODI0YjFiMTBhZGY5YmUxYzhjODgxIHB5M2sKKzY2Mjc3IGZkYzA5NDhjOTVjZjE5NzliMDUwMjZiOTA5NmFjNDgyMTliYTY5ZmYgbGVnYWN5LXRydW5rCis2NjI3OCAxMzk1NWJjZDA4YmUxYTVhYWMyNTc1ODIwYmFmOTg2YTJmZTBiZjYxIHB5M2sKKzY2Mjc5IDc3ZTFiOTVmMTQxOGIxMzFkNDNiMWJmM2I2ZTNiZWI1ZGFjYjFmYWYgcmVsZWFzZTI1LW1haW50Cis2NjI4MSBjNmIwMmY3OWIyYmMzYTM1NjA5Y2JhZjhiMjA2MTM0Y2EyYmI4NDBhIGxlZ2FjeS10cnVuaworNjYyODIgMmVjYjU2ZTZlMGE2Y2QxMzJhYTkxMTQwYTQyNzUyZDc1NjU5N2U3NyBsZWdhY3ktdHJ1bmsKKzY2MjgzIDc1MTBkODczYjg4YzMwMzBlMTQ5OTI5Y2UyOGYzZDY5ZGVkNjExNTggbGVnYWN5LXRydW5rCis2NjI4NCAzZjJjNGNlMzJiYTQ3YTJkMzhhNDEyMmY5Yzg2MGVjNzg5NzEyYmFiIGxlZ2FjeS10cnVuaworNjYyODUgOTBjZmM2YjkyNmM2ZjU0NGI0ZGQ2NDI5ZjY3YTAyYmZhNmRmZmIwYSBweTNrCis2NjI4NiA0NzMzZDg0ZjM0ODhiNGRlMTFmZTUwYjkxNGQzM2IyMDY1NWU2NTM5IHB5M2sKKzY2Mjg3IDczNTM2YTU4YWI0MjYxZDJiNWI3NzZjZmYyOGZiZjU5MDY5NTc5NGYgcHkzaworNjYyODggOGNmYmIyZTI3NWQ5YzkxNTRhYTBlYzJiMWQ1MjU0NThlNTgzNDdjOCByZWxlYXNlMjUtbWFpbnQKKzY2Mjg5IDk4N2RiN2FmMDcwMDJhMTJjMDNlYmVmOWIyYTAxZDRlOWJlMmM2MTggcmVsZWFzZTI1LW1haW50Cis2NjI5MyA1MjNkNmQ3ZTU4MjVjMjdhYzA2M2E3MzkzYjllMTE0MWQzNDc2MmE3IHRsZWUtYXN0LW9wdGltaXplCis2NjI5NCAzYWY2YTcwMjA3MGI0M2E0ZWE0ZDQ1NWJjZjZlNTNiNjRkNDNkZTM0IGxlZ2FjeS10cnVuaworNjYyOTUgYTFjYWU5NTU1ZjVkZjgyODU5YzdkZGI2NWNkNzMzYjQzNDE5ZDIyNiBsZWdhY3ktdHJ1bmsKKzY2Mjk2IDJhYjA1MjkyMzdjYjFhNTAwMDhhOGMwNDU4MDU2Yjg0YjkyZDM5NmYgbGVnYWN5LXRydW5rCis2NjI5NyAyNjExZThhZTIzOGZkNmYxY2U2MzQ1OGJjYmExM2E1ZDAyNTJiM2E2IHB5M2sKKzY2Mjk4IGQ3OTQyMzgxNTBkMjJmYzRhYWYxMDNmZTY3MjRiNTc5ZGM0Yzk0ZDAgcHkzaworNjYyOTkgMDVlMjVkN2EwN2UxOTg3ZjU1YzE0NzZkOGQwODU1YTFkMzg5NTIyNCByZWxlYXNlMjUtbWFpbnQKKzY2MzAwIGE5MzQ3Y2I4YWMzODA2NzJkYWIyNjA0ODhjNmMxODRlYTg0OGE3ZDUgcmVsZWFzZTI1LW1haW50Cis2NjMwMSA3YjFmOGVkZTliNTM0M2U4Y2Y0NjliNmZiZDYwOTUxMmY4YzI2ZjBkIGxlZ2FjeS10cnVuaworNjYzMDIgZjA4NWYzOWE2ZjRkMTIyMzFlNmQ2NjlmYjg3MmNkZTBmNDk2YzE1NSBweTNrCis2NjMwMyAyNzFkY2UwOTE3YzEwNTc1NGMwMjYxMGIzNTljMzAwMjViZWI4MTE5IHB5M2sKKzY2MzA0IGFhMGVmNWRlMzQ1YTc4OGY3Y2NhZmQyNDBlM2JiZjE0NjE4YWM3MTcgbGVnYWN5LXRydW5rCis2NjMwNSA1NjhhYjU4MzcxOTRkODk5ZTExZmVkMDFjMjcwNWNiYzFhOTg4YTViIGxlZ2FjeS10cnVuaworNjYzMDYgZmU1MzYyZDkzNTQyNThlMTkxOWM5MGQwNjY4ZTA0MzUwZTY4NTgyNSBsZWdhY3ktdHJ1bmsKKzY2MzA3IGQ2MWI5NTZiMGJmNjQ0YzMwOWYwZGYyODU2NzhhY2NlMjk5OWQ0YWEgbGVnYWN5LXRydW5rCis2NjMwOCBkZTZlZWYzMWFhNWY3Mjk4ZTFhYTdjODNkYjY2MTllZGFhYWVlMmJkIHB5M2sKKzY2MzA5IDUwOTQxYmVmZjAzMjhiNGY2YjI2NWEwMzFkYWM3ZTc4NzI2NWM2ZDYgcHkzaworNjYzMTAgMzdiNzBjZDRhMGYwZDEwZmY5ODhhMDdmMDUyZGFiNWI0YjA4YWZlNiBsZWdhY3ktdHJ1bmsKKzY2MzExIGFjM2I2NzA0MzM2MWVhNjI5MjEzZWNmMjg1MzY2NGJhZTdmNGJmNDUgcHkzaworNjYzMTMgYmY0YmM5NzNlMmFhZmIzMzhmZjcwN2EyY2I5ZWUwZDYxODJiMDViOSBweTNrCis2NjMxNCA0NDcwMmUyNzM3NTA2YzUyN2JkYzNiMWM1MGEyOTg5M2YwZGE1MDNmIHB5M2sKKzY2MzE1IGM4NzEzZmIwNWY5ZTRlODM0MzE4ZTU0YTVkMGQ2NTkxNGJjMzcxMDcgcHkzaworNjYzMTYgOTczYmRiMmRiNmFjOTZlMjcwZmM1MzJjNzYxOThkM2RiZDdiZjNhOSBsZWdhY3ktdHJ1bmsKKzY2MzE3IDRkMTQ4YmI4NGEwNzdiMmE5ZmEzNzM0ZmY0ZDNlMzZhZjJlNjY1ODAgcHkzaworNjYzMTggODZhNDJlOWY3M2RjMjE5MzAxNjkyYTI3ZGU1ZmZjMzdkYTI4OGQyZiByZWxlYXNlMjUtbWFpbnQKKzY2MzE5IDIzYjQ1MmFjMWE1MGE0OWZjNDljNzIwMWZlNzVmOWMwM2NlZThmMmMgbGVnYWN5LXRydW5rCis2NjMyMCA5NjRkYjg3OWYxOTBlOWRjY2IxZDZmNWRjZTcxMDdjNWQxNTQ0MTYyIHB5M2sKKzY2MzIxIGZmOTZhMzEzY2QxYzgzOWJhMzFiMzU0MjMxZWNlZGFkZjQyMDc1YTggbGVnYWN5LXRydW5rCis2NjMyMiAzZTZlNTY1ZWUzMGFkY2I1ZWMwM2E1ODBlN2ZhMTk4YTI0ZGE5N2UyIHB5M2sKKzY2MzI2IGM0NmJjY2NmMmFmMmU0NzcyNTc0OTVkOWFkNWE2YjM3OTcwOTE0M2MgcHkzaworNjYzMzAgYjUyOGNiZWE2MGUxYzUxNWYwODAyNjlkNGEzOTNlNDA4YTY4NzE0ZCBweTNrCis2NjMzMSBmNzEyM2Q0NWQwYzQzZTlhZTBlODE2YTYwNzhkMmQwZDE1M2IzNTFmIHB5M2sKKzY2MzMyIDk3NDA0MGM4ZjM2OTYxMTA3NDlmOTAzNDk2NjcyZTM5NTcxOTBhZDYgbGVnYWN5LXRydW5rCis2NjMzMyBmNjY1MGYyNDc1OThlMmQ5ODZmODYyMGZiZDQzYTE3YzRjMzZlMzFmIHB5M2sKKzY2MzM0IDcwODdlYTgyOGRkYTJmYjU5MjcwNDJjNTQ5MTk2NjJhZmQ1MDY0ZjIgcHkzaworNjYzMzUgMGY0NDU3Y2YyNWIyY2ViYTA5OGY1NGJiOGM3MzlhMzZhZDJlOTg3OCBweTNrCis2NjMzNiA3NTY2MzdhM2FjNGJhMjYxMDE0MGExZTQzZGYwNDMwODNlZTM3M2IwIHB5M2sKKzY2MzM3IDM2YjJkNjc0ZmM4YzUzZmQ0MzAzYzNjNGY0YTdhMTU1YzVkYzViNTcgbGVnYWN5LXRydW5rCis2NjMzOCBjZDYxZDU0ZmM4YzA2NGQ3MzY3MTgxNmE5NjE0NzNjNmEyOWI2MmQyIHB5M2sKKzY2MzM5IDI5MDk0ODQyYjM3NzZhOWY4YmU5Yzk4NjYzYmI0ZDYwZDYwZDY5ZjkgcHkzaworNjYzNDAgYTkwYjI4NTQ1OGFiMDE3ZTFmZTI3NGYzNDQ5YjY5MzMzMDdkY2IxZSBweTNrCis2NjM0MiAxMzlmNmJhZWY2YzIzMDgzMTNhMTQyZjc1YTYzYTFkMjRjODNlNmNlIHB5M2sKKzY2MzQ0IDQyNDllNTgzOTdlZjAxYzFmMmUyYTdjMjgwZDJhMWZlYzZlMTlhYTAgcHkzaworNjYzNDcgNmYwODI3OGJmOGIxZjVlYTk4N2FlNTU5MWE5OGJiZGMyZWFmNjlhNCBsZWdhY3ktdHJ1bmsKKzY2MzQ4IGRjMGNhZTFlNmFkYjE1NjE5NDBkZDBiNjg3OTY4MzkxMzNhNWQwMmMgcHkzaworNjYzNDkgNDlhOTNjMDJhNmQyMTMxN2ZhNTI2MWY1ZDM0NWI3OWQ2N2UyODRmZCBweTNrCis2NjM1MCA3NTNhNzZiM2VlYTkxZGQxOWNhODliNjIxY2JiZTZkYzQ2OTUxZGExIGxlZ2FjeS10cnVuaworNjYzNTEgNWMwMzg4MWMyMDc1NTE1MjU1MmY2YTI4YmE1NTJmZGVkMzUyNGJjMyBweTNrCis2NjM1MiA3M2NjN2I2MzU1YjgxNzZhOTViNTU5MTg1ODliZTRlZmQ2YmUzZmMxIGxlZ2FjeS10cnVuaworNjYzNTcgZGMxOWExYjdjNWE2MzQ0ODA1MzU3Yzc2OGJmNWQ1YmFmZmMzOTdhMSBweTNrCis2NjM1OCAyYzJlM2E1NmM3YmNjODY3MjNjMTRkYThhOTQxOGFkM2U0NmJmNGMxIGxlZ2FjeS10cnVuaworNjYzNTkgZTkwYTNmMGE5OTI4YWQzZWI0ZWU3ZWFjOTYyMGU1Njc3ZDc3OTRjYSBweTNrCis2NjM2MiBjMzdjN2RiZDc4ODBkYjAzNDVjYTdlOTdhMjI2YjExY2JmNGM4NWNkIGxlZ2FjeS10cnVuaworNjYzNjMgZGM2MDI5M2IyOWQ1MTE5YmY2NzcyOTk2YWU3NTRkMTBkYjJjOWE5ZSBweTNrCis2NjM2NCA5NWFjNjk4MzU4YWJiMzRkODAzNGU0ZGY3YmVjNGYwN2U0YjVkODkyIGxlZ2FjeS10cnVuaworNjYzNjUgNzc1NjViZTFiOTU3NzBkMWYyNjQ0Nzc3ZTg4ZGE0YjM4NjlhZjRkZiBweTNrCis2NjM2NiA1MTMyNjZhNzVlYzMxZTExZTMzNzVkZTM2MzdjMjhmZTUwNzM2Mjc1IHB5M2sKKzY2MzY3IGYxMDBlZmNhMTQ4NzFiYjgyMWEzMWFlYzhkZDlkMWIwMjViZGRmZmQgbGVnYWN5LXRydW5rCis2NjM2OCAyNWYxNDEyOGE5N2MxOGU0NGJmZGY0MTg0YmQ5NzE4YTg1Nzk2MmNiIHB5M2sKKzY2MzY5IDJhYjg1YzM5MmE4ZGFlMDBhNWUxNzFkOGM2YmEwOTY5ZTI0N2E1MGEgbGVnYWN5LXRydW5rCis2NjM3MCBkZDk2MTQ0ZTZlODFmYTRlNmNjNThhYWUwNzAzNWE4OTRjY2IxZDM0IHB5M2sKKzY2MzcxIGY5Nzc3OTI2MmJhYzFiMzVlZGEzMDBiNmU3ZmUyNzBhYzA3MmUxNmYgcHkzaworNjYzNzIgYWY0MDIzOGE2OGI5NWNhMDgzYTdiYmM1N2Q0Nzg5MDQ2MjFmOTdmZSBweTNrCis2NjM3MyA1ODkwNzNjZWUwYWU0N2E2NmExMGI5YzVhZDAxMWUyMWU3YTIwM2ZiIHB5M2sKKzY2Mzc0IDM0OGEzMzA0OGViZjQ4ZmI1MDcyNTYzZjg2YmU3NDQyZjYzYzc0MjcgcHkzaworNjYzNzYgMTc0NzVlYjU1MDY3YWMxZDE5NTYwODFkZjJjZWRmNjE1MDE0NDFmZiBweTNrCis2NjM3NyAxNDU0NDkxMDlhMzFjYTE2YjM0Yjc5ZTI5ODUwOGJhYmI0MzYxZTBiIGxlZ2FjeS10cnVuaworNjYzNzggNmFlMmQ0YjUwN2EyNTJmNjFkNDMyNDA4MmRjYzIwOWRkYjZjZDI2OSBweTNrCis2NjM3OSBhNGRmNDkwM2IzNTU1NjRmMmE0N2U1MjE5YzQ1ODdlM2Q3NTQ1ODg3IGxlZ2FjeS10cnVuaworNjYzODAgZDI3ZGYwODNkNGU2NzRkOTcyZTk1NGM0NGQ3OGY2M2Q3NmNlMjViNSBweTNrCis2NjM4MSA1MWZmOTM0NTYyYzIzZWNhNmRjZjIxZWNlYWZiOTdiNWJiM2RiODE5IHB5M2sKKzY2MzgyIDg3NTMxMzAxYmE0OGM4N2UyOGNkYmRlYjEwNWJiZjFmZWU0N2RjOTMgcHkzaworNjYzODMgM2RjMzE4MDk2MzFmZTE3OTE1YzU2NmI0MTIyNmU4MmRjNmJjM2M5YiBsZWdhY3ktdHJ1bmsKKzY2Mzg0IDk2ZDYyNzZkODBlMjMyNDZiYTAxMjQzMWQwNzAzMDYwNTQ4MmI1YWQgcHkzaworNjYzODYgZjI4Yjk5OWE2OWY4M2I2NTAzNzFmNTdjZTQzMTlmYjM3NGVlNzc4YSBsZWdhY3ktdHJ1bmsKKzY2Mzg3IDg5YzJhNjk3Zjc3MmYwZmI2NWZlZmVjNDAzMWMxZGUwM2E0YjZlZTYgcHkzaworNjYzOTAgMGVmN2NiMzViMjE2NzI0Njc2NjRmY2JjMzIzNGVhMWRlMmRlNDY2YSBsZWdhY3ktdHJ1bmsKKzY2MzkxIDRjZDk3ZjhkZTY5ZTIwYTllNjQ1ZmNlOGIzNmU0Mjk5YTNkYzkyN2MgcHkzaworNjYzOTIgYzA1ZjVhYmVmNzhhZDUyNTJlMmJlZGE4ZTBkMTNlOTdlZDkwYjdlOCBweTNrCis2NjM5MyAyODAzNDdkMmY3NjUwMWUyMzk0NDVkZTZmMTVjY2JhYjU3ZmI0NDNlIHB5M2sKKzY2Mzk0IDBmY2Q0ZGIyM2RmZmViMzljNTRjNmEyYzE2NTIxNzM3OTdjYjIwMWEgbGVnYWN5LXRydW5rCis2NjQwNCBmZjE1ZTYyYTM0OWI3OGJkNzg5ZWFlNWIxN2JlNTk3NzAxNGM1OWFiIGxlZ2FjeS10cnVuaworNjY0MTIgNGM3N2QxMDE2ZjYwYWY0NTI2YzMzY2JkZDM5M2FlZDdlYWRlNTQzZCBsZWdhY3ktdHJ1bmsKKzY2NDE0IDc2YmM3NTc3MjczNmYzMmU5ZDM0MThhNWYxZjMxNTc1ZGE4MGYzYWEgbGVnYWN5LXRydW5rCis2NjQxNSAzODFlY2Y0NmRmYWU0NGI4M2UzYjhkYjRmMTBjZGI0YTBmZmY0MWZhIGxlZ2FjeS10cnVuaworNjY0MTYgMWViYjJhOGNjMDZjOTQ0NzFkNzJiNTQ3NmMyMDUwYzRkMTE1YTFhYSBsZWdhY3ktdHJ1bmsKKzY2NDE5IDRmN2RlMWNhOTJmZjgwNjcxZWEyMmE1ODNiMGI5YTljZTI2MTQ4MzUgbGVnYWN5LXRydW5rCis2NjQyMiA3MzhiYTgzMTlmNDkyMDRlNDk2MTljYjVlYzlhNTczZjdiNjE1ZjUxIGxlZ2FjeS10cnVuaworNjY0MjQgYzhkNDQ2ZWE5NmRhYmQzYmI0ZGQ3NjY1N2U2ZDkyYWUxMDI5Y2ViNiBsZWdhY3ktdHJ1bmsKKzY2NDI1IDA5MzJiOWJhYTdhNDU4ZjM1Y2Q3MWZmN2VmNzBhZjljZjk4MWMxNzMgbGVnYWN5LXRydW5rCis2NjQyNiBiYjNkMWJkMWUyOTMzZTdlMTFlYmRkYjljOWIxZmJiMjAzZjk3MGE0IGxlZ2FjeS10cnVuaworNjY0MjcgZTdjMjgwMGIyM2JmODJiNTY5MzljM2NiZGQ5ZjczYTEwYWUyMTMwNCBsZWdhY3ktdHJ1bmsKKzY2NDI4IDQxNTI0ZjllMmEyZjlmYjg1OWM5N2EzYzFkZDEzYTU1OTI4MGY2ZDIgbGVnYWN5LXRydW5rCis2NjQyOSA1Y2UwMTQzOGJhYWE1OTVjZjkxNTIxOTJiZWRkZDYwNTU3MGYwNmEwIGxlZ2FjeS10cnVuaworNjY0MzAgNTk2YTFhZDhmZWI2MWIyNTIzN2M5ZjdkMjI2Yjc4NjFjYTJlOTAzYSBsZWdhY3ktdHJ1bmsKKzY2NDMxIDc0MjY3MWM1ZDdjOTVjNjVhYmQzYTBlM2NkMjJiN2E3Y2M0ZTIwOGQgbGVnYWN5LXRydW5rCis2NjQzMiBjMGRhN2YyMzYxZWNkYzM4NWY5ZmIyZDIxZDk1OTUzN2Q0NzcxNzBkIGxlZ2FjeS10cnVuaworNjY0MzMgMDUxMzYyOTNmMGM4YmZkNWNkMjgzNTQ2MjlkZTVjMmNmN2VhMjIxYyBsZWdhY3ktdHJ1bmsKKzY2NDM0IGMzZjBmOTc4MzllMzgyNzdlZjVjOTUxMmJiOWZjYjBmMWFkNTZiMDkgbGVnYWN5LXRydW5rCis2NjQzNSA1MmVmOTViZGQ4MDFlNDRiZTRmZmJhMmI1NTA3YWFlYzdlYTQ3YzI1IGxlZ2FjeS10cnVuaworNjY0MzYgMDZmMzIzYWE3MmM0OTUwNzgwYmUxNjRjYzhkYzg1YzllYjUwOGE0NCBsZWdhY3ktdHJ1bmsKKzY2NDM3IDY3MDlmZjgyODdkOTg3ODRhYTQxYmQ5NjY2YmJiZjFkODVlMDE2ODAgcHkzaworNjY0MzkgNjY2NWViZmY2NGYxZjJjMjA2NjEyYzA4ODYxZjU3ZGYyZGM4N2IzOCBsZWdhY3ktdHJ1bmsKKzY2NDQwIDFlYWRkZDIzODhjYzI3NDcxZmI0MDIzZGIwN2YxOGMzNzQwM2NmMzkgcHkzaworNjY0NDEgMWFmMTY5NzBkYWMzZmQ0NTY1ZGVmYTIzMjg5MTFjODJiNzZhNTRiYyBsZWdhY3ktdHJ1bmsKKzY2NDQyIGQ0MDY5ODNlZDkyNzljY2M2NTljODZmYjJjYTFkMGIwZjQ3ODY2MGEgcHkzaworNjY0NDYgOGY4ODZhY2FhMTQyY2NhYTlkOWI2MjI4ODYyMGNiMWZiYjQ1OWQ4NyBweTNrCis2NjQ0NyBmZWI3YmRlMWE0ZDkzMDExNzA4NmEyODU2YmZjMGZhOTY2MmRmN2Y5IGxlZ2FjeS10cnVuaworNjY0NDggYzg3Yjg0ZGIyNDRjZjYzMGUzMDM3MDk3MzZjZDhkZmYxN2EyYTUyMSBweTNrCis2NjQ0OSAwOTVkZTViOTI5ZGRiYjU2NGRmOTU1NDk3NWUxMDJmOTliYTBlOWM2IHB5M2sKKzY2NDUwIDc1YjBkY2JjM2NjNzE4MTU4ODkwMzMyZWFlNGNlNzM0NTRkZWYyMTcgbGVnYWN5LXRydW5rCis2NjQ1MSAzYjA0OGUzMWRkOWU3N2FiZGY2YmQ1OTg5MmRkMTE4N2QyNWM2NzUxIHB5M2sKKzY2NDUyIDU5ZGI0YjNhMDZiMDFiNTJmNzhjNGU3NDliZjgyMzdhYzQ3ZGVkNGQgbGVnYWN5LXRydW5rCis2NjQ1MyA1NmQ1YzAzYjkyYjZjZWYxNTllYWY3ZmUzZTQwODJlYTQ5MmFhNjhmIGxlZ2FjeS10cnVuaworNjY0NTQgNDdkYjYyYmY2YWE3MGQ4ZThmNWFiZjllMGRhNWFhOWQ2ZTk5OTdiYyBweTNrCis2NjQ1NiA2MjcwMGJiN2Y3YjU5MDllYTc4Y2IwNzI5ZjU5NjY0YTI5MjU1MjIxIHB5M2sKKzY2NDU3IDJjNWJiNDYzNGQyZDllYzZhNzc3NjUyNmUxZDVmNTlhNDBiNTBjYzIgbGVnYWN5LXRydW5rCis2NjQ1OCBmOTk4MDAxNjZjMmI3M2UzM2I3MjJiZmQzNWFmZDc4NWUwMDMzNTFkIGxlZ2FjeS10cnVuaworNjY0NTkgY2RkZjVkNjQ3NmNmMTI3Yjg5NmY0MjM2NTQ2NjhhYmZhOTNlMDc4MSBsZWdhY3ktdHJ1bmsKKzY2NDYwIGU5NjkyMzIwNTRhMmMzOGI3MjVmZmNiYWIyYjQ4ZmMwNDJmY2VlOTMgbGVnYWN5LXRydW5rCis2NjQ2MSA2OTI5Yjc0MjcyYzQwZWY1MzIzY2I1NjgxMzBlMmJmZWMyM2NhYTBlIGxlZ2FjeS10cnVuaworNjY0NjIgNjJlNWY3M2QwNWI0OWY0MjdkNmJiZjVhODUxOGJmYTQ1NjkzMmQwNCBweTNrCis2NjQ2MyA2NGJlOWY5MDg2NGUxNGIzMzViNjRmZDFlMGQ1YzUzMzk1MTQ0MzkxIGxlZ2FjeS10cnVuaworNjY0NjQgMjYwNTQ2NWJiYTNjMThhMWFiMzBlNmJiYTZhZmVmYzNlMzE0NzA3NiBweTNrCis2NjQ2NSBhM2YwZDY2N2UyY2U1NTdiNzgzZTA3ODA4MTdkYjk3NmZhMDViMTMxIGxlZ2FjeS10cnVuaworNjY0NjYgM2E4MmU1MDI0NzQzMjgwMDVhNGRiNjY0ZWNhOThlYTFmMTFhZDVhNiBsZWdhY3ktdHJ1bmsKKzY2NDY3IGFhZWJkYzRjNDY5MDNiMzBmMjU4NTc4NmYzNzljNjgwNmQzMGZjNDUgbGVnYWN5LXRydW5rCis2NjQ2OCAwMmE2Y2M1ZDdhMjI3NmUxOTIzOTAwNTI4MmM0YmQ4NjllMTk2ZDViIGxlZ2FjeS10cnVuaworNjY0NjkgYmRiNjYwZGNhNzRkNmFmNGMyNmY2Mjc5N2YzNDI1ZDJkNjAyMjEzYSBweTNrCis2NjQ3MiBmOTc0ZTBmYTU0Y2FhNzdkMzYxMjllNWE0ZmJhN2JhOTJlMWQ4ZDM4IHB5M2sKKzY2NDczIDExNjdhZTY0NWU4YzAyNzU0M2FhMTliNGRkODY2OTVmNWU2YjY0YjAgbGVnYWN5LXRydW5rCis2NjQ3NCAyMGRmMDZlMWIyNjY5ZjU5MjhlZDZmNWI3MGUyOGY4OGExNTUwODk2IHB5M2sKKzY2NDc1IDY3MDQzZmI4YWVhNWMwZTgxMDUwNWZhY2YyMzNhYjRmNmM5ZTg1NDggcHkzaworNjY0NzYgMzMwMjA0NWJhZTk3ODk2MTFiZTA0NWEwNzc3YmY2ODE0NTdkNjliOCBweTNrCis2NjQ4MCBiYjJhMGEzN2ZhYTk3YmRiZWNiZGVmOTIxMjJjZDE0YzUwMjlhMTZiIHB5M2sKKzY2NDgzIGQxN2NjNGQxNzY2Y2ExM2FmNTRlMmE2ODQzYzQ4ZjBhYTVmNDI3MGQgbGVnYWN5LXRydW5rCis2NjQ4NCA0NDUzZTJjNmFhN2ZkMmU1NGE5NjZkOGI4NTg3ODIxYzE5ZDIzYjUzIGxlZ2FjeS10cnVuaworNjY0ODUgOTdmMjhkZmExNTQ5YjNjMWQwOTZhM2UwMDYwM2UyZjhiYzY3MmViZCBsZWdhY3ktdHJ1bmsKKzY2NDg3IGExYzE5ZjI2M2Y3OTU1ZmYxZjdhMGRlMjE4ZGVkNTY1MmI0NGU5MmQgbGVnYWN5LXRydW5rCis2NjQ4OCA1ZDJmMTYxMTk0NTk0YjFhYTg1NzMxMDNlNDE1Mzc2NmZiZTk4YjU3IGxlZ2FjeS10cnVuaworNjY0ODkgMmY5YjA2Zjk1YzlhNmE3ZDFmZTA5NTY5NTc0MDMwZDk2ZGExNzEwNSBsZWdhY3ktdHJ1bmsKKzY2NDkwIDdiMTY4NjAyZjQ0ZGIyYWZjNGJkY2I4ZDEyYmQ2ZWUwZWRlZmNiYmQgbGVnYWN5LXRydW5rCis2NjQ5MSBlMjQyOWUyMzI1NzZhNjY2ZmQyZjU0M2Q5NTZmZGQyOTk5YzA5NjczIGxlZ2FjeS10cnVuaworNjY0OTMgMzBlZjIyYTgwMjY3YzNkNjk4MjUzMGFiNmZlODgyMWNjMTIwNGM1YiBweTNrCis2NjQ5NCBhZjRjNGNmM2UwMWUwOTMyZTY0NDBhMjk1ZmNkMGU1YTljN2EzYmNjIHB5M2sKKzY2NDk2IDI2MDZkOWEwMGM3YjYyMjAwZjQ0MDY1YWVkNDA5Y2MwYTJiNzZmM2YgbGVnYWN5LXRydW5rCis2NjQ5NyA1ODgxODg0NjM2M2JiNWUwYzgxYWQ2MmQ2YWY0NjllNTVkYWM1YTMxIHJlbGVhc2UyNS1tYWludAorNjY0OTggZmUzNTViZDA1YzQ3NDM4MjU0NmNmODQ3YWI1Nzg2OGVjNWU5YzdiYSBsZWdhY3ktdHJ1bmsKKzY2NDk5IDUwN2VkZTljN2Y3ZjQ3NWRmYWZiZDRhNTJjMjJkNzY3ZDEwYTJiYzAgcHkzaworNjY1MDAgNWQ2MWM2NTQ4NDk3OTUwMTdkY2E0YzA5NjVjZjkwODdhNjg5NGMxMCBweTNrCis2NjUwMSA0MjhiMDUzYmIwOTgzOTM5MzMwMThiNzIxNTk0MTNkMGZiMGFlMzhjIHB5M2sKKzY2NTAyIGM2NzAzZjQ5ODliMzczMGY0Mzk1ZmE4MGI3MjUxMDA0N2UwYWFjMzggbGVnYWN5LXRydW5rCis2NjUwMyAwYWQ4Y2VhNjBiZmEwYjYwNDM4MjVhNmJlMzM5NzZmNGY4NTRjZGFhIHB5M2sKKzY2NTA0IDUyNTc5MjA5N2M2MzA4YTc4YTc2YjdiNWY1NmJiZDhhMjRjMjZhY2YgbGVnYWN5LXRydW5rCis2NjUwNSA1NTQ5YjVkZjhiY2JkZWE3MjFlZDFlOWNlNzE5NTRjMjYwM2Y2NmNjIGxlZ2FjeS10cnVuaworNjY1MDYgMGVlYzM0NzU1MDQxNGVlZmEzYjVmNTJhMGUxYjUzN2RmOWZjMzc0OSBsZWdhY3ktdHJ1bmsKKzY2NTAzIDQ5YjliOTk2NWYzMTJiYTE1ZmE3YTkyYmQ0ZGY1YzJjN2MzODM4N2QgcHkzaworNjY1MDggNzYzZTRiODQ4ODFjYzFiOTIwNzhiYjgwMjJiODJlYTFjNjUwZDczMSBsZWdhY3ktdHJ1bmsKKzY2NTA5IDY3MDBmZDgxMjViYTVlMGQxYzk2ODE0MWI1MTJiYTVkNGViYmI1NTAgcHkzaworNjY1MTAgOWZlNDY3ZmYwYzA4NjM0YjNjZGYyMWM5YTk2NjI0Y2E5NDc2ZWEyNSBsZWdhY3ktdHJ1bmsKKzY2NTEyIDVhNzFhNjA2OGUzMDM1ODQ2MjdiNzY1Y2FmZTJlNDJiYWNiZmJjZDcgbGVnYWN5LXRydW5rCis2NjUxMyBjNDVhNjk2NWJjNDY3NzdlNDAxN2I5NzUyMmNkZTdjZGIxNGU5YjNjIGxlZ2FjeS10cnVuaworNjY1MTQgNjI2MDMyNTk3NzEyMDMxMDEyNTBmZWFiZTNhYmI5ZjViYTgxM2NmYSBsZWdhY3ktdHJ1bmsKKzY2NTE1IDE1YWM0OTYwMmEwNjQ4YjFiNTZmOTEyMjFjNWYyNmRlYzdhY2Y3MmEgcHkzaworNjY1MTYgNTc4YWQ0OTFkNGE0ODZiZDAwMTdkNTg2ZDFmMDVjMzg2NTA5OTIyZSBsZWdhY3ktdHJ1bmsKKzY2NTE3IGMxMzcyOTMyYWU4N2NjOTU1NTcwZTI0OTcwODJjZjY2YzExYTA2YjYgcHkzaworNjY1MTggZjNlNWE4NTM0MjA2MjkzNjMwOTllNzM2YjVjYjIxMDUzNGM3NTdjYyBweTNrCis2NjUyMCBiNmE4MDMxODg0NTRkNzYzMmVjMjNhMjRiN2Y3MDNlYmE4NDJhYTViIHB5M2sKKzY2NTIxIGNjOWQ5ZDk2NmIxYTRmZjUwMmVmNGY2OGFlMGY4MGRmZWU1MDEzNTIgdGxlZS1hc3Qtb3B0aW1pemUKKzY2NTIyIGQ2YjhkNDZhMzQzMWJhYzRiYTQ2MGMzNGI4ZGZkNzZhNmZiMTk2OTQgcHkzaworNjY1MjMgNTBiMWU1NTc1NmE1MDdjNTFhZGUwZThhYmIzNmFmNzg3ZGU2NzBlZCBsZWdhY3ktdHJ1bmsKKzY2NTI0IDRmOWE5NzE0MGYwZWZiOWFlYzhhMzQzZjk3YjVlYjQ0NzZhNTAwODYgbGVnYWN5LXRydW5rCis2NjUyNSA2MWM2OGUyYzU3MWIwN2RjZTVhNjYwNDM2NWI3M2QzZmYwOGIzZTg3IGxlZ2FjeS10cnVuaworNjY1MjYgODViNDgwZWYyNjM1YzY3YTkyNDI0MDk3MjM2NWUxMTUyMGFkNmEyOCBsZWdhY3ktdHJ1bmsKKzY2NTI3IDhiMTdmOTJiYmM0ZGI2NjQzNTYyNGNkMGQ1Y2VkNTFjN2Y3NWE0ZjYgcHkzaworNjY1MjggNmI5ZjJjZTVmZTkyMmU4NmMwMjA2NDZhNTY4NGQzMThmZjFiZWQ4NSBweTNrCis2NjUyOSA3MDFkYjVlOTY3YjVkYjEyZjIwODMzNDYyYjMyZGVkZjMzM2FkNjZkIGxlZ2FjeS10cnVuaworNjY1MzAgYjg0MTU1MmE5YTczYjk0MWU0MWEwMGYzMTJhNDBhMmMzOTA3ZjhmYSBsZWdhY3ktdHJ1bmsKKzY2NTMxIGY3MWY2NGFlNjUxOTY2ZTUwNGUyYmY1ZDAzNjg3YTc4YmYyM2Y1YTYgcHkzaworNjY1MzIgZTUyYTM1OTVkZmRiYzUwNmU3YmRhMzc0OGQzZTcwMjJhZjAyYTBlOSBsZWdhY3ktdHJ1bmsKKzY2NTMzIDE3Nzc2ZGY2ZmRhMmNjMzA0MTYyMzNmM2QzZmUzOTNiYTdiMzEyOTQgcHkzaworNjY1MzQgYzJlMmU5MjYyYjk5YjIwOGNmYjZlOWM5YjU0MjdhMWY2MTQ3ZWY1OSBweTNrCis2NjUzNSA5MjNmYjQ1OGJkMGM2OWVmOWIxMTc4NjlhZDZlNGViNTJlMDVhMGEwIGxlZ2FjeS10cnVuaworNjY1MzggMzg2YTAzZWMxZmYwMTRkZjdiM2VkY2NjZmVkMzRmNDhmZjNiMzg4MiBsZWdhY3ktdHJ1bmsKKzY2NTM5IDU1Y2IzZTExYmRmNzRlNjYyN2ZjOGVjYjg5Yjk3NmE5ODI3NmNlNTEgbGVnYWN5LXRydW5rCis2NjU0MCBjMjAwNWMxY2Y2Y2RlOGE1NWY1NmExNGJlOWQyNTJmNTRiZmFjZDhmIHB5M2sKKzY2NTQxIDQ5OTJmZDQ5YTk4NWQ2NzhjYzRlMGI4MWE5OTA1M2VlZmM2ODk4NDQgcHkzaworNjY1NDIgMjVmODA5MTIzZGY2MDYzZjY2NWM1NjFiYmM2NjU0YzUyNTBiYWU5ZiBsZWdhY3ktdHJ1bmsKKzY2NTQzIGQxYWI4M2FkNWUyYjkzNGYzNDA0NTQ0NzdlZDg3NWU2YzI2ZTE5ZDIgcHkzaworNjY1NDQgNmI2NzljYTI0MzY5ZmExZDIzNGQyMWExMmM3NjE5OTcyYzEyY2IzYSBsZWdhY3ktdHJ1bmsKKzY2NTQ1IGYwYzI1ZTZiYmFkNTgwYjdjYWY2MDVlOTM5Yzc5ZTA4OGI1YTdlY2YgcHkzaworNjY1NDYgMzlhOTQ3MTk1NDU0ZGMyMDhiYzEyYTkzMmU4MjRhN2ZlNDNiNWM3NyBsZWdhY3ktdHJ1bmsKKzY2NTQ3IGMxNzc3MDA3NGE0YmU5NTQ5MTc5YWVjMjYzMGU4YzFiNGY0ZDRlMDkgcmVsZWFzZTI1LW1haW50Cis2NjU1MCA1NDYxM2JhMWRjYWRmNTAzN2E3NjM0N2VjMDM0MDNhMzg5MGVmNzBiIHB5M2sKKzY2NTUxIDZhZTI4YTUwM2M5ZDE2YTdkYjJkY2I5OWVlNDMwZjdlNDRmYzI0ZmIgcHkzaworNjY1NTIgZjNkYTU2ZTNmY2U0YjE0MmYyMzYxYThhZmI5N2IxYzRiYmMyZDMwZSBsZWdhY3ktdHJ1bmsKKzY2NTUzIDkyMmI5ZTAzYjI2MGVjNTkyZjE2NGY5MDA3NmZmNzM4NmRmMWE0MDEgbGVnYWN5LXRydW5rCis2NjU1NCBmZTY2MGU4YzYzYmE2OTBjZDU4YjkxNTM3MWQzMDM1YmEzZGU4ZTIyIGxlZ2FjeS10cnVuaworNjY1NTUgMDZjZjM1ZTZlMzA4ZWFiZmFlYTgzY2ExMzA1ZTRhMjdjOTMyYTZlNSBweTNrCis2NjU1NiBlODZlZDExMzUzNWNlZjBhOGI4OGI0ODdiY2IxMWEwNzQzNjgwZGVmIHB5M2sKKzY2NTU3IGVmNzVlYjNkYzQ4ZTgyMDJkZTkzOTIzNmM1YmU1ZjIxMjNmYjg3N2IgbGVnYWN5LXRydW5rCis2NjU1OCAyN2MxYmE3MTg2ZDhmNzI5YzQ3ZmM2YTZjMDRjOGFhYzcyMzQxMjBlIHB5M2sKKzY2NTU5IGRlOTBhNzJlM2UyMzQzOGE5YWVlM2I2NmRmMWZlNDc4OWY2YmU2MjMgcHkzaworNjY1NjAgMWQ1YzNiY2YzNWFkMzk4NmMwOGJiY2Y1YmY5Y2RlYjE0ZWUxZDQ2ZiBweTNrCis2NjU2MSAwMThiY2Q2NGMzM2U0ZjY4YzcwMmM0YjU3OWNkN2VlZmZlZTk3YTVhIGxlZ2FjeS10cnVuaworNjY1NjIgMGRlNWEzODhhMjYxODA0ZTc3ZmEwNjdkNThmYTNhZDkzMThmMjc5ZiBweTNrCis2NjU2MyA2NDYxNmU1ZDgwYjRiMjY0YjlhOWNmOTA4MzVkMjhmMThiMjk5NWRhIHB5M2sKKzY2NTY0IGY2ZGY1NjdjY2Q2Mjg5YTRkNjA1ZWM5MmRmYTEzYzg0ZTI3ZmY3ZGQgbGVnYWN5LXRydW5rCis2NjU2NSBiZTg5ZDJhMzRiMmY4OWEzMTdiYWZjZTA0ZjZiNDg0NTM4MDc2YjFmIHB5M2sKKzY2NTY2IGE1ZjI2YjNhMjZmZDllZThlNTRjYWMxNTNiMzcyOGE1MDUxM2QwYWIgbGVnYWN5LXRydW5rCis2NjU2NyBlZGY4YTZjNjkwMjhiNzc1ODk1YTFhZWE4ZTdhNzdmYTNkODg5YTY3IHB5M2sKKzY2NTY4IGYzZWIwMDA0ODdiOTM2MmMyZmNmNTQzZTM5OTk2N2Q0N2E4NWM0ODMgbGVnYWN5LXRydW5rCis2NjU2OSBmODQzMGI2ODc2ZmIzNmNmYTkwY2FlNmJhYmM0MjQ3NjdlZmUyZTJkIGxlZ2FjeS10cnVuaworNjY1NzAgYmJlMmUzNTg1MmNkNGQ4YTAyYzdjYTcyMmZmNWJkOTM4NTI3ZWVlMyBweTNrCis2NjU3NyBiM2MyOWRhOTM0ZjVlZGY4OGY2ZGUwYWRmZDM5MGY2NjM3M2ExMGI1IHB5M2sKKzY2NTgwIDI1ZGEwN2ZlMzYzMGMwMWI4OTkxOGYxMGM3Mzc5M2U4OTBhNzk4NDAgbGVnYWN5LXRydW5rCis2NjYxMCBkYjk5OWViMmJiZGM3NTlkMmI0OTcyN2NiNzUxYjAzMjQzODUxOTlmIGxlZ2FjeS10cnVuaworNjY2MTEgNjA2YWIyNWRkZWYxYjBiZTJmZGVlMzFkNThjNjkwZTNlYzI5OGZkYSBsZWdhY3ktdHJ1bmsKKzY2NjEyIDAxZmMwODNlMWRkZDM1MTAxYzJlMjM2MDU2MzQ2ZGI2ZWEyN2Y1ZTUgcmVsZWFzZTI1LW1haW50Cis2NjYxMyBhODcwYzNjNmE5YWQyNDEzNTg5MmM3N2U5ZmE1ODA3M2VmNmM3NTk0IHB5M2sKKzY2NjE0IDEyMGI0YmNmMDlmZjcyMGU2MzJmNGVkZTVkNzkxZTk0ZjllZTU4YmMgbGVnYWN5LXRydW5rCis2NjYxNSBhMDA2MjZmMmQ3MDU3OTIzNWFkMDEwNDJmMTM4MTA5MTQ5MmIxMzhhIHB5M2sKKzY2NjE2IDlkMWM1MzExNjhjYWQ3YTFlODk1ZjY3MGI4ODJhOTIxYzhjNjI2ODQgbGVnYWN5LXRydW5rCis2NjYxNyAwOTFhNmM1MjI3YTk0NzViYTNhZTZhM2YyMTEzM2Q0OGYwNmIzZjU5IHB5M2sKKzY2NjE4IGE5MWU3OGFiNGQ3ZDIwMzEzNmY4NmU4ZjBjOWFlYzMzZjhlMDBkMGIgbGVnYWN5LXRydW5rCis2NjYxOSAzZmViY2JmZDM2MDFjNDIzYTMxYjI3MDc0NWFmZTJhZTJkY2I2MTk5IHJlbGVhc2UyNS1tYWludAorNjY2MjAgNWU1YjE1YjY5MmUxNDE3ZjZhOThjZmIyOTAwYzFlZjg1MGY2MTM5NCBsZWdhY3ktdHJ1bmsKKzY2NjIxIGFjYzQ0YjdmYWRlMDlhNmZlNzJjMDk0MTRmNTgxZTQ0MTA3YTA4YmQgcHkzaworNjY2MjIgZGJhZWMyNDlkNTZmMTJiNWY4OTY5YTRlMzRiY2I1ZjgzZGIxZmQ1MyBweTNrCis2NjYyMyA3OGEyMWIyNzhlMWI5Yjc0YTgyZGVmNDFiZjVhNTNjNDQwNmRjMmUwIHB5M2sKKzY2NjI0IGYzMjNmYTRlNDhkNzlhMjg3MTQxMjZmZjc0MzhkMjg3ODgwMmU5MDAgbGVnYWN5LXRydW5rCis2NjYyNSBiNTUwZGU0Mjg1MWE4NWMxMDY2YzBkYzdmN2ZmYTQxNWEyNDIzNDVlIGxlZ2FjeS10cnVuaworNjY2MjYgYjIzMmUyZTllNzkzN2UzNDU3MzIyOTM2ZjkxOWUxZDBmYTYzZGM2MiByZWxlYXNlMjUtbWFpbnQKKzY2NjI3IDA2ZWJmMTJiZmE2MmNhNWI5ZWNhMmU3YWQ3MGQ2NTgyOGE5YzNlMmQgcmVsZWFzZTI1LW1haW50Cis2NjYyOCA0ZWVkZTVlNDhhZTY4NWFjN2JkOTU5MTJkMjdiNjdhNGExMzBhNWNmIGxlZ2FjeS10cnVuaworNjY2MjkgZTEzYzAzZTBjZTBiYjRjOTIzZDI2ZmQ3M2Y1NjY3MjUwMGZkMjFiNyBsZWdhY3ktdHJ1bmsKKzY2NjMwIGJiYWRiOTYwZmQ1YzFhOTc2OGYwOWQ5YmI3MWU3MDI3YjE2YzI1NTAgcHkzaworNjY2MzEgMzA0YmVhODczMWQyMWE0ZTA4ZWJkY2NmNjA1YWVmZmNiYjUyMzExYyBsZWdhY3ktdHJ1bmsKKzY2NjMyIGUwYzA2Y2FlZmJmZjMzZmE0NzA2Y2NlNTVlMzgwZjE1MDJhZjZjMGEgcmVsZWFzZTI1LW1haW50Cis2NjYzMyA2NDAzZjFlZGVjYzE5ZDI0YzRlYmFlYjYxNzVjNDllMTIxYTkyZDNlIHB5M2sKKzY2NjM0IGViMzVmY2JhNjU4ZWUyNWIzMTBiYTRhZDkyNDQzZWM2NjkwYjM3YjkgbGVnYWN5LXRydW5rCis2NjY0MyAwNzUwNDJjNzcyNGM3NGE0OWI2YjNlMDRmZDE0NDVhYzg3NGRkZmMzIGxlZ2FjeS10cnVuaworNjY2NDUgZGU3NWZiNGU4MDBjZWY5M2I5MjM0NTMzNmUwMDY4YWVmNTFkMGMxYyBsZWdhY3ktdHJ1bmsKKzY2NjUzIGNkYzdmNjM2Nzc4YjY5MjNkMGZmNzFlOTVmMzI2MDA2ZWZlMWQ2YjUgbGVnYWN5LXRydW5rCis2NjY1NCA4YTFkYmU1YzJiNzQ1YzE4NTViYTQwMTYzOGQ4ZGJmYjVmMjRmOTE0IGxlZ2FjeS10cnVuaworNjY2NTUgNTI4NDc2OGMyNjRjNTlkNTUwMzRhYzUxMWE2ZDBiYzg2NzNkN2Y3YSBweTNrCis2NjY1NiBkNzBiY2YzYjYyOGQ3YTJlZDYxOWJmOTNmNGViOTM5MDVjMGJiMDFlIHB5M2sKKzY2NjU3IDA2OTlhNzEyYTNkYmRkOGM1MmYxOGRhZDMwNjkxMjYxMzIxMmEwMGYgbGVnYWN5LXRydW5rCis2NjY1OCA3NjUxYjk0MTNjODU0Y2I2MGQwYzEwM2UzMWQ3MzRhOTEyMWExYmMyIHB5M2sKKzY2NjU5IDdhM2Y3NTJhZGYxY2Y4OTQ1MmI4ODM5YzY0MzFkZDkyNTE3YjBhYmMgcHkzaworNjY2NjAgNTMwYzgxNDE4YzI4MzhjYzgyMmE5OTBhMmEzZTNlYWJjMzNmOWM3MyBsZWdhY3ktdHJ1bmsKKzY2NjYxIDJjYTQxNTliYmU2NTQwNjYxNzNhOTI1MDFmOWUyNWQ0NmM5M2I3NDAgbGVnYWN5LXRydW5rCis2NjY2MiBjZTJmY2E0OGFjZTQzMjY2ODE4NTQ2MzEzYzlhMWQ1M2ZhODZmMzQxIGxlZ2FjeS10cnVuaworNjY2NjMgNzU1ZjM0YWI0MzhiMTkxNjdjMzcxMGQ1YjI0OGE2ZTM0YzI1NTljMiBsZWdhY3ktdHJ1bmsKKzY2NjY0IDIzMWYzYTI1Y2NmNWIyZGU4OGVkYTkwZjI0ZTYwOWRiOTA0MzAyZGIgbGVnYWN5LXRydW5rCis2NjY2NSBkYTA3MzQ4NGY1YWMzMDZjNThiY2M4MTk1ZDRkMDY3ZmY0YjQ3ZTNhIGxlZ2FjeS10cnVuaworNjY2NjYgNDg0NGNhYzA4NjUyNWQyYTk4NWY5NjkwMmE3YjgyYTZhZTk4ZjdjMSBweTNrCis2NjY2NyA2Y2M1YWNlOWY1MTNlMDA4MDBlMTAxYTc4MjU2ZTdkZTkyNWIwMWVjIGxlZ2FjeS10cnVuaworNjY2NjggZWM0MmY3OThmNTk3MzY0NDBhMDMxZmU2MmYyZDMzNzJkNTgyYmU2NyBweTNrCis2NjY2OSA1NmEzZmE0NDljNmM2YzEzNTY5ZjhjNGFkM2I5OWQzMDY3ZDAxN2E3IHB5M2sKKzY2NjcwIDUzYWNlMzk3YjljNWJiNWJmNTIzYzI4ZDkyYjMxMGVhZDc4NmQ5MzAgbGVnYWN5LXRydW5rCis2NjY3MSBkYmM2ZWRiYTcwYTdiNzY0YWE3NDY5YzIyMjM2Yzg1NmRhZGRiMWVkIGZpeC10ZXN0LWZ0cGxpYgorNjY2NzIgY2M2OWI5MzFhNjA4MmQ5ZDI0Mjc0OTI5YmVlMjQxOTAwMDFhOTczNiBmaXgtdGVzdC1mdHBsaWIKKzY2NjczIDVhOWE4M2NhZThmMWIyYWI5ZmY3MzUyNGM1NzY3Y2VhMWM2YTk0NmUgbGVnYWN5LXRydW5rCis2NjY3NSBjNWY1ZDZhMzEzZTk5NzNkZDRmMDk0Y2ZjZTkxNDcwOTAzZGNlNzc0IHB5M2sKKzY2Njc2IDY0YmE1MjQwYWYzMWE5MmJkODBhOTQxZjAzMmNmNzk2MGJkNGVjYmQgbGVnYWN5LXRydW5rCis2NjY3NyA3NGU3Zjk3ZGFkN2RlZGQxMDVhMTdhMmZjOGFiMGQ4MDNjYTBhMzcwIGxlZ2FjeS10cnVuaworNjY2NzggYTk1MDMwZjkzOWVkMDhkZWI5MzQzN2QwNmIyNjJkYTg1ZWUxMzcwZCByZWxlYXNlMjUtbWFpbnQKKzY2Njc5IDAyNDE3YjU2ZTRiMjFhOThjZDlkODZmYWQ2YzE5MzgwYzk1ZGQ0ZTUgcHkzaworNjY2ODAgZDU4NjE4NWE3YTUxNjdhZWUyYmRlOGRiOTk3NWM4OTdjOTAyZjQ1YSBweTNrCis2NjY4MSBjYWQxZDJhOGE5ZDNiOWIwZTA2NmQ4NDhhODZjYTM2MWNhOTI0NGU4IGxlZ2FjeS10cnVuaworNjY2ODIgNDA1MzZkZGMyNmExOWI4ZmVlMjUwZjQzNzMwNWNmMjU2NjM4MzdhNCBsZWdhY3ktdHJ1bmsKKzY2NjgzIDViMzUyOTQ4NTQyMThhOGNhZjE2MTZiMWY3ZWJkMmZhNjFkOGJmNDIgbGVnYWN5LXRydW5rCis2NjY4NCA2OWUxODRiOTkwZGM3N2IyZTU4YzIyZmZmM2FlOGJmM2YwNDdkNzdlIHB5M2sKKzY2Njg1IGVkYjVlZWNmM2JiOGJkZWI2ODU4OTZmNzI5ODc5MmM4NThiNTA4NzEgcmVsZWFzZTI1LW1haW50Cis2NjY4NiBkODhmMWYyZjAyMTM1ZjZlNDU3ZjQ3YjM4OTA2MTk3OTM5MzIwYjMzIGxlZ2FjeS10cnVuaworNjY2ODcgYWIzNGE2NDdlMjJmY2ViNTA0NTE0ZmZiYmUxZjA1ZWEzZTkyYjhmOCBweTNrCis2NjY4OCBiNDk2NGRmNjQzODQwZTQzYjFiYWQzNmI0M2I2YTExMDA4YThhNWI4IGxlZ2FjeS10cnVuaworNjY2ODkgZjRhZWIxMTNjOWVmYWRjZTY5NWI2ZGQ3ZDE4NjgzYzYyZmE0ZmEwMyBsZWdhY3ktdHJ1bmsKKzY2NjkwIDQxNTY1NTVmMzkxMTgxYmMwZDhmY2FjZTczNTNlNzA2MjczZmFjODYgcmVsZWFzZTI1LW1haW50Cis2NjY5MSAzNzYzMjdjYjY4MjEzYzRkMTQwMjE0MWQ1MmUwMDU2ZTRhMDBkZDBiIHB5M2sKKzY2NjkyIDdjNTY2MjQ1NDhmZDQ4MmY1YmFmZmRjZDA3ZTZhNTE5ZjU0YWM2YmUgcHkzaworNjY2OTMgNmE3MzEzNGY5NjAzMmVmMTE2MmU1ZmYyNzU5YjAyZWNlYzhkODY1NiBsZWdhY3ktdHJ1bmsKKzY2Njk0IGIyODAxYWNhOWQ2YjVmYmUxYTFhMGU4ZTg0ZDM0MzIxYmIyYmMxMzMgcHkzaworNjY2OTUgNTk4ZDE5OTM2MTg2YTM4MDQ0OGVlMzkxZmU0MGU1ODVhM2ZlNTg2YiBweTNrCis2NjY5NiBhZjZmZTlhZGIzOWMzZjNhZDUzOGI5NjMyODY3NDlhNTc5NzhiOGE5IGxlZ2FjeS10cnVuaworNjY2OTcgNmNlYWNkMDE1ZDY3OGE1M2MzMWVhY2FlOWM2OGU0M2UzYzlkOTE1MSBsZWdhY3ktdHJ1bmsKKzY2Njk4IGE0ZWQ1NGQ1NzY0YzkwNjMxYzBiN2I1NTAzNWYxYzBiNGExZjI2MzcgbGVnYWN5LXRydW5rCis2NjY5OSA2NzY1OTQ2ZTFhYzQ5ZmZiMzU0YmFiYTg1ZmZjMzgyMGJmMzA5MTAxIGxlZ2FjeS10cnVuaworNjY3MDAgN2YxZjllMThjZGZhMzI1YWU5NTY1MjU0NzBlMjIwNTc1OTU2ZDA3NyBsZWdhY3ktdHJ1bmsKKzY2NzAxIDg2MDQ1ZTFlZTU5NTBjNGEwMDA2MzFmZDZhZTY0ZDZhYTI3NGZiMWQgcmVsZWFzZTI1LW1haW50Cis2NjcwMiAxZjRlYTAyMjllYzY2OGNjMDU5MGJiOTVlNjIxOTYyZmEwOWEyOTIxIHB5M2sKKzY2NzAzIGVlZDRkNTMzMzMyZjBmZDkwMWFiMzBkMjkyZDVmYWY2YWFlOGI5MzYgbGVnYWN5LXRydW5rCis2NjcwNiBkMzE4MjM0YTAwZDc1ODZiOTVmZGQzNjkzNDRkMWY2YTIwMjcxNWE0IHRsZWUtYXN0LW9wdGltaXplCis2NjcwOCBlYTUzMTYzYjA2ZGUzMmE2ZmJiMzkwY2JiYjE0OTAxMzAxMWFiMTdjIGxlZ2FjeS10cnVuaworNjY3MTAgYjVmYjliMDAyZWMzMTczY2E5YTIzZDU2MGYyNDZiYWM4MDk0YWE4ZiBsZWdhY3ktdHJ1bmsKKzY2NzExIGFkYTZkN2Y3MWI1ZGYwNzZkOWUwYjM2ZWY3ZjBlZDIzZjY3ODg2NmQgcHkzaworNjY3MTQgNThhOTg4NGQyYmMzZDMzZjlkZjg1NTI4NTc3MDlkZmU5OWQxODM4NCBsZWdhY3ktdHJ1bmsKKzY2NzE1IDk1ZmZmNWE2YTI3NjUyMGIyZTdlMGY3NWZlMzAzZjQ5Mzc2NTY3YTUgbGVnYWN5LXRydW5rCis2NjcxNiBiYzRjYTgwYmI1ZmQ0YzkxYThiN2U3MDczZTdjNGQxY2MxYjQ3NzBkIGxlZ2FjeS10cnVuaworNjY3MTcgNTRjZDFjYzcwYTQ3OGQ4NTNlZjhjMzY0YTJlMDI3YjZmYTYwMjQ4MiByZWxlYXNlMjYtbWFpbnQKKzY2NzE4IDcyOTI4OTNmYzJjNWY4Yjg1MDgyN2NmMjQ4MjMyOTYwMTlkYmZlNWYgcmVsZWFzZTI2LW1haW50Cis2NjcyMSA3NDhlYzliMmFlZjEwMjdiZDkzM2RlNmY3ODliYWI4YmNhODgwZTYxIGxlZ2FjeS10cnVuaworNjY3MjIgOWQyZjI4MTgyODNkNWU4OWM0MTJkZDZmOTI5ZDU2ZGMwZGVhMDUxNSBsZWdhY3ktdHJ1bmsKKzY2NzIzIGE1ZjMwZDA2NDkzY2JkNGM5NWQ5YThkNmU0NmQ4MjE1MzZkNjZmYWUgcHkzaworNjY3MjQgODhlNjE4M2NkYjM4YzZiY2FmY2M2NDgxZTc1MDdiNjg5M2Q5MDVkZCByZWxlYXNlMjYtbWFpbnQKKzY2NzI1IDAzM2JiNWNhY2QwYTM0MTdiZTZmNGQ0NWMyMjc2MGJkMWYzMTUyMDQgZW1wdHkKKzY2NzI4IDZkZDg3ZGU4NTAzZDU2NTI2Y2NmOGUxNWQ3YmYzMTlkNjIxNjJmMmYgZW1wdHkKKzY2NzM2IDU2ZDE3ODg3NDgyMTMzZDliN2U1ZGQyODdhYjIyZmQxY2VhYTRmYjggcmVsZWFzZTI2LW1haW50Cis2NjczNyBlZWI1ZmEzZWY4ODlhMjIxOTBjNjU1OGMyYWRjZThmYzM0MDA4OWQ2IHB5M2sKKzY2NzM5IDljOTcxZDUyYTNjMzVmYWIyYWE2N2UzMzk3YTUzZTY3MTQ2MGViZDQgbGVnYWN5LXRydW5rCis2Njc0MCA4NzNkMWUzNjk3OWRhZTY3ZDk0ZTQ1NWI1OWUyODI1NGUyODE3YjUyIHJlbGVhc2UyNi1tYWludAorNjY3NDEgZjlmMDE0ODRlNDhiMDJjMWQxYzg4NjFjOTRmYWM4OGJhMmM3YzA0ZSBweTNrCis2Njc0MiAwNjhkOWI2MTRlN2JmZmFiNjhkZDI4MTEyYmIwZmYxMzhlOGY0MjAzIHJlbGVhc2UyNi1tYWludAorNjY3NDMgOGE3YzkzMGFiYWI2YTJjMjZlYWI2OTg5MWY0OWQ4YmU0OWFmZTVkZSBweTNrCis2Njc0NCBiOWFmYTdjOWNjMzVlMTVmYjY4YTlkNDAxYTZjMTJmM2Y2MTAxZDFjIGxlZ2FjeS10cnVuaworNjY3NDUgNzQyNmQ4ZDdjZTFiNGE1ZGFkZjU5ZGY3YTY2Y2NmOGVkNTQ3OWZiYSBsZWdhY3ktdHJ1bmsKKzY2NzQ2IDI4MWIyMWNhMDNmNjM2MzA0Zjk3ZTkzOGY2YmQ2MzgxNzAzZGI3OGIgcHkzaworNjY3NDcgMDEzODk1MjZiYTI1NTc5ZTM4NTU2YTJjMjgwMTA0YzFlZTI3ZTA2NSByZWxlYXNlMjYtbWFpbnQKKzY2NzQ4IDI3ZDdlZmEzZTFhYzAwNTUxOTJhOGJkNzQxMGQ0MmFkMzM2ODljZjYgbGVnYWN5LXRydW5rCis2Njc0OSA2NDJmMjBiMjI1Nzc5NTYyOGU2MzhhNzI0YmIwZjExZmM1MTE5NzQwIHJlbGVhc2UyNi1tYWludAorNjY3NTEgODY4OTNhMzk3ZGQwNTFkNGIxNTIzNWE5OGVjZTJkOGIyOGEzNGMxNiBweTNrCis2Njc1MiBmODEyYmMyYjZhN2JmZGY4NzJiZTE3ODU0MmU0YjIxOGQwMzJmYzliIGxlZ2FjeS10cnVuaworNjY3NTMgOTgxMzA2ZjRiNDA1MDExZTJlYzIwNWFmZGMwZTBjNWIyNjExZTFmYSBweTNrCis2Njc1NCAzYWVhYzRhNmEyY2ZjYjVhZTc3YmJhNzUyMGI5ODI5Yzg5MWJlMWY1IHB5M2sKKzY2NzU1IDQxOWU3MjFiM2NhOWUyMDMwNTI2OTIzODRhZTY5YmU5YzFkMGE2YjMgcHkzaworNjY3NTYgMjAwZGQxZDgyMGZjZjQ4NTkzZmU4M2I0YjI2NjA5NjkzMGUwYmRiMiBsZWdhY3ktdHJ1bmsKKzY2NzU3IDU3YjJkOWEyMjU5NGExNWQ1NzkwMmViY2JjOWY4MWQ4OGM5MWQyMTEgcHkzaworNjY3NTggNGY3NzIwMDRhODVkY2FjNTI2M2ZlOWVkYmM1NDI2NjdlNTY5MzY3NyBweTNrCis2Njc2MSA1NWY5MTRhZTkwZWQ2NGNhMDMwNTJlYzQ4MmFjZDBkNGUxNWVmZjljIHJlbGVhc2UyNi1tYWludAorNjY3NjIgMDM5MTBiODkyNjc5MWNkNjZkY2U0NWZmMjk1ZDEwZTcwZTIxMGI1MyByZWxlYXNlMjYtbWFpbnQKKzY2NzYzIDIyMjM2NTY4MmMxYmUyMDYyMzNhMTg5NzJjYWM0ZWQ3YTU4ZjM4ZjkgbGVnYWN5LXRydW5rCis2Njc2NCAxMDkxMDA4ZjJjYmQwN2Q0YTY3NDgzNDU0ODMxN2YwMzM0ZWMzZmI0IGxlZ2FjeS10cnVuaworNjY3NjUgMjgzZTU0MjY0YzBkNjdmZTRkZmJhZDI2MTgwOGYwMDBiNGY3Mjg5ZSBsZWdhY3ktdHJ1bmsKKzY2NzY2IGZhMDQwZDMwY2ZjYWE4YTYzMjc2NTk4ZWVlYWI3ZTJmYjJmZjA3ZjcgbGVnYWN5LXRydW5rCis2Njc2NyBlOGUxOTYzOTdmNDU3MWI0YjFkNjFmMWFmZDYxNjEyYjE5OTlmMjcwIGxlZ2FjeS10cnVuaworNjY3NjggNzQ5ODFkYzgzOWZkMjJmZmZhNjkwNmU4Zjg3YTlmOTgzMDY2NGViZSBsZWdhY3ktdHJ1bmsKKzY2NzY5IGU4MjI5OTJjZjZjZWNjY2ZkZjhhMjRiODEyMjUwMDI4MTlhMmZjNGMgcHkzaworNjY3NzAgOGVjODQ5NzYwNGM3N2U3ZjU1NDFkOThmNDZmZDE3OWYyMDlhZDIwZCBweTNrCis2Njc3MSBhOGY5NTk1YjlmNTUzNmRkOTc4YTA5OTdkNTY4MmI3ZDg5ZWQ1MzhkIGxlZ2FjeS10cnVuaworNjY3NzIgMDhjNDhlYTA1MDQ1YmIwM2ZhZDA2NWU0NTkwNjM0YjZhZWY2ZTExZSBsZWdhY3ktdHJ1bmsKKzY2NzczIGJmODFjYjg4OTJmNTFjZTczNjNlOTg5MzQyNzQ3M2QwMmU5YWI1NjggcHkzaworNjY3NzQgYjVmMzljOGE0NDIzOWU0Y2MwZmMzNzQ0ZDdlNWMwNDNkODFiYWE0OSBsZWdhY3ktdHJ1bmsKKzY2Nzc2IGY1YjljNmY0YzU5Yzc5MDVkMDA1YzEwZmMxNzc1MTU5ZGE5YmZmMGMgbGVnYWN5LXRydW5rCis2Njc3NyBlZjRiYjRkNWRmZGU5N2E2NWNhOGM0NzJmYWQ4ODI2NzY1MmNmYTU0IHB5M2sKKzY2Nzc4IDBiMWRiMjQyZDIzMmU0N2Y3ZTk1ZWM1MTk0YzY5OTg2NjEwYzM4YTAgcHkzaworNjY3NzkgODRjY2Y5MWEwNmNjNTQ1MmE1ZjhjNzM3NGNhNTkxZjk0YzVjMjAyOCBweTNrCis2Njc4MCA4YTg5MmNmMjVlN2FhNmIzNWY1YTMyNTIxY2MyYjMwZWM4ZTdhOTQxIHB5M2sKKzY2NzgxIDE2YTE5NGRhNzdkZTk2ZTU3N2MyN2Y3MTQ2Y2UxZTEwY2JlNzY5MzMgcHkzaworNjY3ODMgODQ0MmYxMzcyMGE0ZGMwZTY5NjViZDE0ZTRlNzA3NDBiNjYyY2UyMyBsZWdhY3ktdHJ1bmsKKzY2Nzg0IGJlMmY4NWJlNTY2ZTUxNjMyM2ZiNGM3ZTI2MTNkMmU1NjYwZDcyNjMgbGVnYWN5LXRydW5rCis2Njc4NSBjNTZmYmI3YzE2ODljYThiMGQ5YTQ3ZmRhYWI3YmNlMjg4YTZmZDY1IGxlZ2FjeS10cnVuaworNjY3ODYgODg1ZmRmNTk3MGNjNTYzYTVjMGFhYTY4NDM5ZGI4MGM1MmMxMTcyYSBsZWdhY3ktdHJ1bmsKKzY2Nzg3IGIyMWRlMDQyMTM5NWQ1MDgzMjQ3MjZmOTAyOWRjODdhZTg5NTJiMTUgbGVnYWN5LXRydW5rCis2Njc4OCA1ODA4YTdhZTAzYWNkOTA3ZjA5MDBiZGQyMjE1YjU4YWNiMGJlYzhkIHJlbGVhc2UyNi1tYWludAorNjY3ODkgMzU2ZTg4ZDRhZjMwMjNjN2JlYjE2Yjk3ZjRjMjQ2Y2Q2NzIyNTBmOSByZWxlYXNlMjYtbWFpbnQKKzY2NzkwIGU1OTFlNzVlODNhMmYxZjAyNzAyYzZhYjM2OWJhZTI5YmY2NTNhM2MgbGVnYWN5LXRydW5rCis2Njc5MSBmMjFhM2Q4NTg1YzY1NTQ0OWZkZGNjYTIxMmQxYWU0NDQ1OTM4Yjk1IGxlZ2FjeS10cnVuaworNjY3OTIgYWY3YTM5OWZjMjcyMjJjMjA2NzNhMTYyYjA3MmNkYzUyN2Y2MzBhZSBsZWdhY3ktdHJ1bmsKKzY2NzkzIDk4NGE4YmM2ZDk1NmYzNTUxNDQ2MDc5MmQ4MzViMjczYzQ2N2I5N2YgbGVnYWN5LXRydW5rCis2Njc5NCBmNzMxZjA5ZWE4Mzk0YzRlNDhjMzU5YTZkOTkxYmQ5OGIyNzhmMmQxIHB5M2sKKzY2Nzk1IGFjMzE2ZjI1MjI5YzkyMDRlMjY3Y2ZhMjJiOTZmOGRhZmY4NzY3OWQgcHkzaworNjY3OTcgNzNjZTNhMTEwNDZmYmRjMDA4YmNiMzRlZTgxYzQ5Mzg4ZGQyYzU3MSBsZWdhY3ktdHJ1bmsKKzY2Nzk4IGZmNWMzZGQ2OGQwN2MzODhhYWQyZjA5YmFkMGJjNjY1MzJmZTI0NTMgcHkzaworNjY3OTkgMDU2MDQ1NTViOGQ0MDBkYmJiMTcyZjg0ZjBmMmM1ODQ5NGJmZjcxZiByZWxlYXNlMjYtbWFpbnQKKzY2ODAwIDJlNzk0NzU3YmRjODRhYjc4YWQzNjQ2N2Y2OTEwZjIzMjcxOTU1YmQgcmVsZWFzZTI2LW1haW50Cis2NjgwMSBlMDk2YzUyY2Q1Y2E5YTEzZTUxOTRmY2QxZTJjZmQyNWQ3ZTIwMDQxIGxlZ2FjeS10cnVuaworNjY4MDIgOGY1YThlYTViYTc2ZWFhM2Y1ZmI2OTIxZjM3OGMyOGIxMWIyMDQ5NiBweTNrCis2NjgwMyBkYTk1NWMzMzk2NWI0OTIwMzI1MGRmM2E1ZDZiYTMzYmE1M2JiY2YxIGxlZ2FjeS10cnVuaworNjY4MDQgMzU2YTFmNmVmMzRmZDI4NzdhZWQ4YzdhZjc4MmM5ODVlOWNhZDljNCBsZWdhY3ktdHJ1bmsKKzY2ODA2IGM1YjI3ZGY3OWQ3ZDZkOWJmNmIyNTc2MjAxMGJiYTQzMGU2YzJjY2EgcHkzaworNjY4MDcgYzA0Nzg2NTE0NjBmY2FmZDdhOGUxOWIzZTQwMWUyNmE1OGFjMzdlMiBweTNrCis2NjgwOCA5ZTQxYzVlN2UzNjAxOTk2OWIwYjJlZDIzZDRkNWE2NmI5NGI5MjlmIHB5M2sKKzY2ODA5IDUyNGFjNzQ0YWUwNDM5NjY2NDAwOTMwOWYxMGFmYTI2OGJjMGU0NTQgbGVnYWN5LXRydW5rCis2NjgxMCBkYzk1ZTQ2ZjFmM2U4OWE5YmQ2MjBkMzQyN2U2Mjg1MDMzMjA5MjU0IGxlZ2FjeS10cnVuaworNjY4MTEgYzJkMDE5NmVhNThiZDQ2YmVlMzkwODQ3MmNmMjk4ZTZhMTk5ZDc1MCBweTNrCis2NjgxMiAwMmRkNWRiNjI5MGY0NWJlMmVlYTFlYmQ1NzNhZTlmY2I4OTFlNDU1IHB5M2sKKzY2ODEzIGM5MzNjODQ2N2JkZGFhZWViZjRhZmMyZjIzYjlmYTY0OGU1NzIzZWQgbGVnYWN5LXRydW5rCis2NjgxNCBjOWM3OGUwMGRmNjczZTY0MzU3M2U1YmM1YjAzNGZiNDUyM2YzODI2IGxlZ2FjeS10cnVuaworNjY4MTUgYzVhZTkzMmY2M2M5ZGEzNDhiNmFkNTI5Zjk1OTZjOWNmOTg2MTJkYSByZWxlYXNlMjYtbWFpbnQKKzY2ODE2IGY1MTE1YzEzMmQ0YWE2YjRkOTE3MDUwZDgwNTI0YzNjNmU1NDdmNzggcHkzaworNjY4MTcgZGZlMzEwYTQwMjQ1OGQxMTY2YjZiMGIxNGY4YmJmOTFjOTQxNGExZSBweTNrCis2NjgxOCA3YWVjMDAwMTVhOWUxNTg5NGRiZGU0OWNmZDIyYTgzYjU2ZTM3NzkyIHB5M2sKKzY2ODE5IGQ4YjRhNjFhYmYyNWY3MTVhZTNhNjY5NjAzMTQ4NTZlYTFkNjE0NmUgbGVnYWN5LXRydW5rCis2NjgyMCBkYmQyYjE4MTdhNzVkNDI4ZjA0MjFmNjhmZDNjNjIyMzkzMmI2YmYxIHJlbGVhc2UyNi1tYWludAorNjY4MjEgMTI1OTg0YjcxYTc2OGUyMDA1NTVlODRhMjM1ZGU2YmRiMjNiN2Y5ZSBweTNrCis2NjgyMiBlOTkxNTM4YjlhODc2Yzc3NGU2MDkwODg3MWJkYzgwODY4NmE4MDk5IGxlZ2FjeS10cnVuaworNjY4MjMgOWM3ZWQ3MGFhMmMzZmU0ZjhjZjRiOTQwYmUwMTQxMjI2MzIzNzhkYSBsZWdhY3ktdHJ1bmsKKzY2ODI0IDdlZmRkYWU1MGQyNTUwMzkxNTIxZWMzNjMyOTkwMzJhYjBlOGU1NDYgcmVsZWFzZTI2LW1haW50Cis2NjgyNSA2Njc5YzMyNTJmOWIwZWIyNWRkODMyY2IzOGQxMDY1NzRmMTY3OWJiIHJlbGVhc2UyNi1tYWludAorNjY4MjYgZGQ5N2RjNzlhZTBhMDVmMTRiN2RkYzE4MzgwZTRjNTlkZTRlZGRlMCBweTNrCis2NjgyNyA5MTU4NzgxOGFkYjgzODA0YTBkZWFkYWQ4YzY1N2IxODM0MzBmYjBlIHB5M2sKKzY2ODI4IGQyMTQwZGU3NjQ3OTRlN2U0ZjJhYjA0NTg4ODI1YTM5NGYyMjY4YTcgcHkzaworNjY4MjkgMWM5ODA1NTRiNTRiMmMxMGQ0YmI3ZWE4MDViZDRmOTU4OTJkM2ZiNCBweTNrCis2NjgzMCAwYjJmNzY1YmE0Zjc3NWNmNTljZDVlNDhhNWM1N2U5MmMzYzg2NDUzIHB5M2sKKzY2ODMxIDgyMDkxZGY2NTFiZTdhOTE3Njc3NzE5MzE5MzcxZmM1ZmYxMzExZjggcHkzaworNjY4MzIgY2I3ODhlMDg0NGU3ZjlkMDgyODU0YTIzZmQ1NDMzMzA3MzQzZmEwNCBsZWdhY3ktdHJ1bmsKKzY2ODMzIGNlN2I4YzMxN2RhMjBmOGE3NDVhNTJmOTM2NDE1MDI3N2VkY2U3MGUgcmVsZWFzZTI2LW1haW50Cis2NjgzNSBkZWVmMjg0ODIyZjc1ZDA3YTkyOGMxYTUyNWU4NjM3NjU2MTY4YjE0IGxlZ2FjeS10cnVuaworNjY4MzYgMjEwNjBhNTZkZWZjODgxZTY3N2ExMWQxMTM5M2ExZDA4YjQyMTc1ZCBsZWdhY3ktdHJ1bmsKKzY2ODM3IDZlN2I4NTNlODYxNjA5MzM0MjcyNzhkYjI3M2E1NWZkMGZlMDhkN2YgcmVsZWFzZTI2LW1haW50Cis2NjgzOCAxZTViMjA1MGVjNmFjZDQ4MmY4OTkzYTYxNTI0ZGM0NGYyZWY2OGY3IHB5M2sKKzY2ODM5IDU5ZGFhN2NmOGNhMDk3OTUyZDA5ZGI4NTMzYThiZDgzN2IzMDU4YmYgcHkzaworNjY4NDMgNjllYTEyZGI5YjI4YjU5ODMyMmQxYzY1N2FmNjY1YjlmMjczZGU2MiByZWxlYXNlMjUtbWFpbnQKKzY2ODQ0IDg2MGY2Mjg0OGFmMDJmYmQ4Mzg1NTdkMjgwNWUyYzM2ZWYzMjExOTcgdGxlZS1hc3Qtb3B0aW1pemUKKzY2ODUxIDAyMDVjZjBiMWFkYjlmYmUzY2I3ZGVmYWRlMzI4ZGU1ZTEyMWJlNjQgcmVsZWFzZTI2LW1haW50Cis2Njg1MiA5NGQxN2NmM2Q4YmJiZTAyNDJkMjJlNDg0OTMwMjUwZTlmYmVmODNmIGxlZ2FjeS10cnVuaworNjY4NTMgYjRmY2IyZjQ3MTAxY2JiZGUxMzNjZjUwYWIxNGI3YjY4NmQyNGM4NCBweTNrCis2Njg1NCA0ODQ1ODEwZjU4OGVhMjhmMDQ3MDMwMzNkMDg0YzllZTNhNzViMzkyIGxlZ2FjeS10cnVuaworNjY4NTUgNTc1ZjY1ZjAwYzZjMDkyM2MwYjI2ZWE5M2YwYzMxYzE0OGU0YWYwYSBsZWdhY3ktdHJ1bmsKKzY2ODU2IGQ0YjYxM2RhMzhkY2NmNjg5YjUxODU2MDI0NzVhYTE5YmJiZjE2YjQgbGVnYWN5LXRydW5rCis2Njg1NyAyYmYxYzFiZDhkOTZlYjBlYWYyOGM2NWZiNjhjYzExZWI5OTNjZWNlIGxlZ2FjeS10cnVuaworNjY4NTggOWMwZWQ0YWVjZmJkOTFkM2JjODI4ZjRhYmJhZTRlNjE5YTFmYzMxZiByZWxlYXNlMjYtbWFpbnQKKzY2ODU5IDUxODc2YTQwM2MwZGY5YmM1Njk3MDVjN2I5YjJlZTdjODY3YWM3MGUgcmVsZWFzZTI2LW1haW50Cis2Njg2MSBjZTY0Y2JhNTFjMmI3ZDllM2MwNmM1NTkyYjVmMDRkYTVjMTg4ZmFmIGxlZ2FjeS10cnVuaworNjY4NjIgMGRhM2MzMGZlOWI1MjNhYWYxN2M0MzBiMThiNjBlYjcwOWE5NzhhNyBsZWdhY3ktdHJ1bmsKKzY2ODYzIDU1MGQ3NTE2MGNjNGY3MzgxYjliNTFmMjVkZmUwNTU2YmQ0MzE0MzAgbGVnYWN5LXRydW5rCis2Njg2NSBhMDI1OGJhZWQwMDU3YzA2NTM1NDQxNzFmOWI3ZTYxNTExOWQwZDc3IHJlbGVhc2UyNi1tYWludAorNjY4NjYgMGUzNTlhZmMwNjQ2ODEyNTNkMDFkMDRjYTRmMGQ2NzMyMTgwNzM2NSBsZWdhY3ktdHJ1bmsKKzY2ODY3IDBiN2UwMjM4MDNmYjM3MmUwNDUyNTFkM2JmMTg1NmMwNDQ1YWU2MDcgcHkzaworNjY4NjggMmEyY2RiMjg1NjU2ZGUyZjNmNjkzM2Y1OTgzNjNiMjVlZGMxOGE5NSBsZWdhY3ktdHJ1bmsKKzY2ODY5IDY2NWZhMDU2MzJmN2FiNjgzY2M0ZmM1NDdiZDY3OTdhYWE4NzM4OGYgcmVsZWFzZTI2LW1haW50Cis2Njg3MCAwOGQ2ZGQ2ODRhNmIzMTBmM2Q0ZTFiODM5NzlmY2IzYTc2NmRjZDcxIGxlZ2FjeS10cnVuaworNjY4NzEgM2RkMTY1MWFmMzVkZDRiY2IyNThlZjI4YmRkMzRmZmMwNDA2YjVkZCBsZWdhY3ktdHJ1bmsKKzY2ODcyIDM0MmY3MDE4OWVhOWU1YjU4ZmM5Nzg1MDlmZTMxOTViYzJhYjNlM2IgbGVnYWN5LXRydW5rCis2Njg3MyBjMGFjNDc5ODRiMTEwNGRkYmMwYTA3NDBmZWQ0NzI3MmJjNjlmZjQ3IHB5M2sKKzY2ODc0IDc5NmIxYmI5NTU0Y2I3ZWE2MjUyNTYxMTBiZDRjNWExZmRjNTg5ZTkgbGVnYWN5LXRydW5rCis2Njg3NSA1YTA5MjEwMWYwNjk2M2UyNTBlNWJmMTRiODg5ZDk1NjVhZTc5YWNiIHB5M2sKKzY2ODc2IGJkZjRkYTVkMDRhZDliZTUzNThjMGY0YTJhZDU1ZWRiYzdiMWM0MTkgcHkzaworNjY4NzcgZDNkZTA4MmNhMDMxNGE5ZWE0YjE5Yzk0ZGJlYTIzM2ZlY2JkZDRlNiBweTNrCis2Njg3OCBlNjcwMmMxYTA3ZDc1MmIzZWU1OTQ3YjgxZjMwNzA2NDMzNmY2ODM1IGxlZ2FjeS10cnVuaworNjY4NzkgMTg3MDA0ZGY1NzljYjAyMTBkNzcxODhhM2YwNWYyOWYwZTU2ZWVlMiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4ODAgOTljNzhkNjBiZTEyNWUzZTM4ZTA0MDg1OTU4NTYxMzIyMGMyNWMzZiBweTNrCis2Njg4MSAyZjBkNzM4NGNjMWMwYTgzM2QxYmUxZThhZjdhMmM2MmZkYjdmY2ZiIGxlZ2FjeS10cnVuaworNjY4ODIgMDhhM2U2OGYxZmNiYjExY2I1YTA0Njg5NDFjZDZjMmNiMGIwNmRjZCByZWxlYXNlMjYtbWFpbnQKKzY2ODgzIDcxZmE3ZDNjYzRjNTlkYmVmNzY3MzRlOTg2YjE2ODYxZTk0YmEyZmEgcHkzaworNjY4ODcgOWZkZjhkOGRlMjg3NWE3ZDU1NmM5NTQwZmNiMzdiMjk5NmMzZmEyZCBsZWdhY3ktdHJ1bmsKKzY2ODkxIDYyYzI0ZDRhMWY4ZjYyMDlhMDJjYmRkYWYxYTAwMDU3YzczMzc4ZTYgbGVnYWN5LXRydW5rCis2Njg5MiBlMWE4OGU4Yjk2NDliZmFlN2VmYmY3OTBmYWZmOTY3NmEwYWM1NjI1IHJlbGVhc2UyNi1tYWludAorNjY4OTQgYjA5ZTcwNTNiNDcyYzM5NWUwNWE0YWI5YjRlZjVjOWM4Mzk5YWFlZCBsZWdhY3ktdHJ1bmsKKzY2ODk1IDVlNjY2MzI4NmFiYzU3YzliOGNhMjU1NTBiMTJjNTYwY2E1NDY5MjkgcHkzaworNjY4OTYgYWM4NmU5NTM1NThmNDQ2Y2Q0ZmY2NmI0MTI4MmYzM2ZiYzYzODllNiB0bGVlLWFzdC1vcHRpbWl6ZQorNjY4OTcgMGYwYzIyODM1ODNlZWI4NzEwMmMxNzAxY2I2N2UzMjEyNzllMjE3ZiBweTNrCis2Njg5OCAyMzJhMjJjZmRlYThmYTk5M2ZiYTQ1N2Y4ODYxYmVkNjE5MjA1ZTQ5IHRsZWUtYXN0LW9wdGltaXplCis2Njg5OSA4NGYwMTc0MjBiOWI4ZTFiNmE5MTQxOTAxMDlmNzVkZjkxNjU1N2IwIHRsZWUtYXN0LW9wdGltaXplCis2NjkwMCBiYjUxMTU5ZTcxZGZjMzE1MmUwM2EyYjAwMjYyYTYxMDNlODRhMmNhIHRsZWUtYXN0LW9wdGltaXplCis2NjkwMSBkMTdjZmVlNGYyM2RlZmJlYTUzNmU2MDUwYWYwNDk0Mzk3MGNlZTgzIHB5M2sKKzY2OTAyIGZkY2M4YTMxMzUzNzQ0OGY0NjBjMjRiZWM1OWNhYmQ5MzdiODljZjkgbGVnYWN5LXRydW5rCis2NjkwMyA0MDlkYWI4YjFkMzQ0OTY5OTFmNTkyYWVhMDhmMmQwMmMyODNiYjQ1IGxlZ2FjeS10cnVuaworNjY5MDQgNDgxOTRkN2FmMzJmMDI2ODFhNzc2ZjBlY2U3NjcyN2Q1N2IyZTc4NyBweTNrCis2NjkwNSAwYWRmNmJkYjE3MGY5NzNjYTU3YWU4MDdmZGMzOTE4NjZkNjgxOGY0IGxlZ2FjeS10cnVuaworNjY5MDYgNDczN2U1ZGY1MGY0ZDdmZTllYTgyYjYzMDcwZjFjYWU3NjM5ZDYxMSBsZWdhY3ktdHJ1bmsKKzY2OTA4IDJhMTA5NmI0ODE3YTJmNmZlMmM0ZDBmMDNlN2U3MWRkZjZkNTc0M2YgcmVsZWFzZTI2LW1haW50Cis2NjkwOSA1YWZjOWZmYTgwYmI3OWVmNmIyYmMxM2MwYjA0MmM2MzhhMmQ4ZGE2IHB5M2sKKzY2OTExIDAxMTExYzQwNjE2ZjU5MGI5MWYyOWIyOWJhMDJjYWQ4OGU3ZGQzMTMgbGVnYWN5LXRydW5rCis2NjkxMiA5MmQwODkwMzM1YzI0OTQ4Y2EzMGNlMWNiMzVhZTZiZjFlYTg1ZmJmIGxlZ2FjeS10cnVuaworNjY5MTMgYjhmYzc5MGEyN2FlYzhiNjhiMzhiODAyMGFiNGZiZmI0MzdiM2I2YSBsZWdhY3ktdHJ1bmsKKzY2OTE0IDhkMmE2OTcxMWE5N2NlZDViYjA0M2FiZTQ5OWMxN2M5M2MzMWI4NWQgcmVsZWFzZTI1LW1haW50Cis2NjkyMCBkMDYxOWUyMTBhYzQyZmUwOTdjYzAyNTBjOGJjY2QwYjRlZWEzYzM3IHB5M2sKKzY2OTIyIDY5MzgyMTlkYzVhNjQ2NDg3YmZlYzgyOTYwOWYzYjE3NTdlY2YwYzQgbGVnYWN5LXRydW5rCis2NjkyNCBkN2E3Mjg0MjBiMDNhN2IzN2U4MTViM2Q4ZTQ1ZDc3YTMxY2M2OTA4IHJlbGVhc2UyNi1tYWludAorNjY5MjcgMTk5MjhlNDVkMThiMjE3YmVhZDk0MzVhNTQ3MDlkZWZlNzE0YWNiMyBsZWdhY3ktdHJ1bmsKKzY2OTI4IDlkZWRmYjhlNTY1YzQ0NWQ1MzRlMTcyYzBhOTQ4ZmEyYzgyYjVkYWMgbGVnYWN5LXRydW5rCis2NjkzMiAzYzNhYmQ1ZmM4MzM5MjM3MjQ3MmQzZDJkY2EwMzViYWNmMDgyNzUxIGxlZ2FjeS10cnVuaworNjY5MzQgMDBlNDY3ZGI2MTgyNTQzNmJkMGMwNTg1OTk5OWEwYmE5MjMxMjA0OCBweTNrCis2NjkzNiBhNTc4MTQ3YmI1YzEzMDU1OTRmMmVjYjBmNGM5ODVmZDU0OTczMDUwIGxlZ2FjeS10cnVuaworNjY5MzggNDYyMjUyMTFlNTAzYTE5NTRiYzgwNjFiYWMxMmVmNDMxNzI3MTQ2OSBsZWdhY3ktdHJ1bmsKKzY2OTM5IDI0MWUwMzM3MWM3ZTQyNjMyZTI3ZWYzMjIyMWNlNTdkMTg3YjAyZGIgbGVnYWN5LXRydW5rCis2Njk0MCA2MDI0ZTBjYWJhNjQ4MDJhZDkzMmJmY2NmMWU5NTdmYTBmNGZlOTY1IGxlZ2FjeS10cnVuaworNjY5NDEgNGUyZTY4ODRmZDI4ODc2MjJhYWViZjk1OWI2MTJmMjQ3ZGNkNWEyMiByZWxlYXNlMjYtbWFpbnQKKzY2OTQyIDhhODkxMzJiODU5ZjFlYjRjMjVkMmQ4NDdiNWUzMmIxMjMyMTZjODggbGVnYWN5LXRydW5rCis2Njk0MyBhNTNiYjgzMzBhNjRjNTFiY2MwYTQ4ZDY4YTI0NmNkZTQwNjM1M2VhIHB5M2sKKzY2OTQ0IDUwYzg4NmRhZWRmMGQ4MTVkNjQ5OTU4MjY1ZmMyZmFiMjY5ZDIzZGMgcHkzaworNjY5NDUgY2E3MjI3MWM2MjRjMmRmYmViYzBiNjAzMmYwMWI5MjQxM2MxNGMwNCBweTNrCis2Njk0NiAyYTM5MTBhOGRjMzc3YWZhZGMyMWIxZWM0MWJhYzVmMTYyOGZlOTNjIHB5M2sKKzY2OTQ3IDQ5MWVkODBhOGNjMTUxMDMxMGZjMzEyZTI2YjMyZmU4M2Y3ODk0NmMgcHkzaworNjY5NDggY2JjM2FmYzFlNDBhMjA5ZDhkNDcwMmZmZDRmZWQwYTI0NDdkMDU3ZSBweTNrCis2Njk0OSAyYzNhNmM5ZGZmNjJkNWM5NjAwNjc5Mjc0Yzk2Nzg4MGExNWJiMzdlIHB5M2sKKzY2OTUwIDY0NWZlNTZjMTE3YWE2M2Y5MWYwYzM0OTE5NzdhMDVkODFkOTMwNzAgcHkzaworNjY5NTEgNDgxYWQzZDlmZmQxYjY4ZGY4ZGE4NTc4ZTI1Nzk4MTk2MjNiNmYwZSBweTNrCis2Njk1NyBmNjdkZTYxYzJjZmE5MjM4ODNlYzQyZTE3M2NkMTdmNzcxOGRjYzNlIHB5M2sKKzY2OTU4IGI1NTVkNGQ5NTc1YzQ1OGU5N2MwNWU5NWI4Y2MzNmEyNzYzZjg1ODcgbGVnYWN5LXRydW5rCis2Njk1OSA2NmM1NDVmNzk2MjY5MzJjMWFiYTNiYmZjZTJiYTNmODExMTEzNjA2IHJlbGVhc2UyNi1tYWludAorNjY5NjAgZGZjZTYyYWIwN2JhMGExZjZjZTQ3MjlkMDYyMDdjYWFkMGVkMzQ0ZCBweTNrCis2Njk2MSA4M2QwOTQ1ZWVhNDIyODQwOTI2Nzc1Yjg1ZWRkZjMzZTYxNGU3NjI4IHB5M2sKKzY2OTYyIDAxMjFkZjNjZjVhMDEyYzJiODA2MGRlZWFjN2Y4MzM0ZmNlMTVlZWEgbGVnYWN5LXRydW5rCis2Njk2MyBiYzFmNDMyNTJjOTIyMGY5MmE2MDJlZTVkNzEzNjUwOTQwMWZjMjM2IHB5M2sKKzY2OTY0IDk2ZTc4NTRkN2M2ZTFhMTJiMmFlYzVlYjQ4ZDNjNmNlMzcwYzc0OTAgbGVnYWN5LXRydW5rCis2Njk3MCA2ODRiZjc5OTAwOTRiY2ZmMWQzODU0ZDIzZDVmZTQwOGRhY2NjODk2IHB5M2sKKzY2OTcxIGU4ODQxYzM0NjY1MTk0NzBkNDUwYTNmNDhhY2QwMGRlZDM2NDRhYjYgcHkzaworNjY5NzIgNTdlMmI1YzQ1Nzk1YTgwNTBlNzQ1MDMzNTMwNDA3YzFkMzlhNDA5MyByZWxlYXNlMjUtbWFpbnQKKzY2OTczIGRiZDU0YmFjMGI2ZjdjZWI1YTlhMWUxNGQzOWZkZjMyYTcxNWZhYWIgbGVnYWN5LXRydW5rCis2Njk3NCAyZTM4Y2E3MDliMWQyOTZjN2ZmYTgyMWZiMDJlYmU3MzIyNmE2OWNjIGxlZ2FjeS10cnVuaworNjY5NzUgM2ZmN2JiODMwNTE5YzI3ZGUxNWYwZDdhYTE4NTE4MDEyZjllY2ZhYiBweTNrCis2Njk3NiAyNmJjMGNkMDEwOGI0NWI2ZGVmMDk0YzkxMzY5M2Q1ZGY5NDY0NTJkIHB5M2sKKzY2OTc3IDZjZGUyYTA1MWIyNzlkMjEwYzU2NjBiYmUwY2QyNmE4M2I4OGJlNzYgbGVnYWN5LXRydW5rCis2Njk3OCA4OWJhMDFiNjE0ZWVkMzE4MDY5ODBiZDIyOTAxYmU3YTQwN2YyNmIyIHB5M2sKKzY2OTgzIDg3ZWY4OTYwODIzYTE4NDgxNmNlZjY1ZTUxNTI1NTJiYTU2MzU5NjIgcHkzaworNjY5ODQgODQ5NmY1NDAzYTgyMjUxMDcwNjZiMTdkMjU5NzZjMTc4NjY3OTMxNiBsZWdhY3ktdHJ1bmsKKzY2OTg2IDQxNTEzN2QwZTIwYTUyN2ZlMzFiY2ZiNGNjYzIzYmZiN2MyMTNkZWQgcmVsZWFzZTI2LW1haW50Cis2Njk4OSBjMjA4ZjVjMWU0ZmU3YjczMmIyNDU2ZTAyOWViODM3ZTdhYjMyZTZjIGxlZ2FjeS10cnVuaworNjY5OTAgYzFkY2ZmNzU5NzZlMDU0NmJmNzY0ZDgxMTkzMzA1ZGE1OTRiYzFlMCByZWxlYXNlMjYtbWFpbnQKKzY2OTkxIDFlYjE3MTIyYjRjY2I3ZGZjNWIxNmRjMWYyYzY0OGYwYjM5ZWMyYjEgcmVsZWFzZTI2LW1haW50Cis2Njk5MiA4MGQyZDQ2N2YyMzg4NmQ3ZDRmNzVmZWU4NDBlMzc5Nzg5MDg0NjhkIGxlZ2FjeS10cnVuaworNjY5OTMgZGRkMGY4Y2NlNTVjZDIwODJhNTViOWI2MmJhYzc4ZjAzODc4NzE2MCBweTNrCis2Njk5NCAwYWZhNzNkNGJmOTk0NzgxMzM5MWQxNTM3YTIzNzZjNjQyYWRkOTdjIGxlZ2FjeS10cnVuaworNjY5OTUgMTI0OTg0MGE0MmIyZGFlYTJhNWQ3NjkwNTdkNzZlMWI3NGJmMjliNSBsZWdhY3ktdHJ1bmsKKzY2OTk2IDE5Njg3ODMwMzM4ZmJiMGRhNjk3ZTE2N2Q2MTU3NTcwZjlmOTRjYTAgbGVnYWN5LXRydW5rCis2Njk5NyBkZjc0MjI0NjA2NjA2ODkxYjYxMmIxNmMxOWIwZDE3M2Q4NWY2ODFiIHJlbGVhc2UyNi1tYWludAorNjY5OTggNTQ3OWE4NzdiYTI4MjZhMGQwMGI5NWMwMWE5ZmI5ZTBkYzJkYjBjZSBsZWdhY3ktdHJ1bmsKKzY2OTk5IGQ4NDdjNGZiN2IzOTkzYjZiYzQ5NmI2NjllYjQzYWEzZTAzY2EzNTYgbGVnYWN5LXRydW5rCis2NzAwMCA3MTI4NGU5MTU3MDYzYmE3ZTk0MWM5ZGMwNzdiM2YwOGE4ZWMwMTYzIGxlZ2FjeS10cnVuaworNjcwMDEgYzZjMzI4NDJlNzFkYzQ3OTQyNWI0ODM2N2UzNDViNDI3ZmViNTFmMCByZWxlYXNlMjYtbWFpbnQKKzY3MDAyIDcxNGQzYzE0NDNhNzQ2ZDhmYWUzMTg0MWJlMmRjNjc5NDhhMDgwMGUgbGVnYWN5LXRydW5rCis2NzAwMyBiYmFiMTFjZGIxNzU2MTAwNjlkMWYzMTA5OGRlMjJjM2M5NzA4OTA1IHB5M2sKKzY3MDA0IDA1NzE1ZjBjZDdlNzc5NDM0YzM3ZTQyZmQ5MjY0MzhkNDg1MjdkOGYgcHkzaworNjcwMDUgODlhZTlkN2QxOGQ3YmNkZWY2MmE5ZjE4OGNmYWFkMTI2MDMzZTc3MyBsZWdhY3ktdHJ1bmsKKzY3MDA2IDJhODVlNWM5ZTFlMmE3N2Y3OGI3M2U3Y2ZjZmI0YmY3NGY2NWQwYjEgcHkzaworNjcwMDcgNjNmM2YwNDVmZTQ4YTBjNjRhMTI4MjlhZWM3YjRlMTdjMmY3ZTc3OCBsZWdhY3ktdHJ1bmsKKzY3MDA4IDBiYzJjZDJkOTU5ODJiMzI1OWFiMTcwNGU4YjM0MGUzMmRlOWY2MGEgcHkzaworNjcwMDkgOGI2NWQxM2MxNzdjNmJkYThjMDRjZTQ2YTI0ZWRiMzg5M2MxNmQ0NCByZWxlYXNlMjYtbWFpbnQKKzY3MDEwIDMxYTY5ZWQwOWZiYjQwZTE0ZjEyYTUzZjExOGQ5ZDFkMDk1ZTViNDYgcHkzaworNjcwMTEgODQyMGFmNmMzM2VkZDkzM2RhYTk5Y2FmZjliOGFkYzVjMDRhYjk4MiBweTNrCis2NzAxMiAyYTM4NzcxY2VjZGQ1YWQzNzQyMTVkNjg2ZTBiMWQ0N2FjNjQ4ZWE2IHB5M2sKKzY3MDEzIDY2MzQ1MzBhMDRlMDM0NTIxYTJmZDAwMTA2NTliNjk1NzgzYWI3ZGQgbGVnYWN5LXRydW5rCis2NzAxNCAxYTQ4N2FiMGQ2NWI3NDI5ZjVmMTcwMTE3OTkxZGMyMDU5M2E5YjMwIHB5M2sKKzY3MDE1IGJiZTM3MzIyMTJkNjRlNmYzYjAwMDY1YzQxMWMwNGMyMjczM2I3ZDIgbGVnYWN5LXRydW5rCis2NzAxOCBmNjY2ODhlNjlmNjZiZjVlYjI1ZGMzNmEzYTczMzJjYTM5OGU1NWFjIHB5M2sKKzY3MDI2IDRhNzQ1OTBmMzhkYTViMjBkNGQ1N2JiMDExOWIzYzI4NjNlYzA1ZjEgcHkzaworNjcwMjcgZGYyYmJkZTk2ODgwMmQ5Y2JhYjYzZjEzN2FlOGE1YWRjNDdjMzNhYyBweTNrCis2NzAyOCAxOTVjZDdlYmY2MmNkYmMxNTU2ZjllYThmNTdlMGNkMTY2YTkwZjkyIGxlZ2FjeS10cnVuaworNjcwMjkgODYwNzM3Yzk2ZTk3ODJhMjFkYzQwZGM5MzUwMTRkN2Y1YTBhYjM5NCBweTNrCis2NzAzMCBhNTc2OGJkNjI5MzhiOWRmOWM4NWEyYTBiMGYyM2NiNDY3ZjFlNGE3IGxlZ2FjeS10cnVuaworNjcwMzEgMGExODhhMmQ1MDQ4ODJhYTI5YmRlMDQ5YzM0YjI1NzhhNDdlYTM0NCBsZWdhY3ktdHJ1bmsKKzY3MDMyIDMwYzBiMjY2YWYwNjJjMTdjNjgxMDY3MjcyNjViYzM1ZmZlNmQ5MWIgcHkzaworNjcwMzMgZTgwZDllNmUyNmJiZDFmNjE3MWE3ZTE3ZWZlYTY3ZjM1Nzc2ZDk3YSByZWxlYXNlMjYtbWFpbnQKKzY3MDQwIDQwZmQ2ZWYwZWFhOGYzM2JjZWNlMzIwMzJkMjA5MGNjYzYyNjM1OWIgbGVnYWN5LXRydW5rCis2NzA0MSA4YmRlOGY1MWFkZTE0ZGU0OWNhY2EzMmI5MDhlYzlkMjZkZDYyODM2IGxlZ2FjeS10cnVuaworNjcwNDIgNDBkOGZiMTI5MzA2YWQ0ZjM4YzgxYjNiYTcxNDM5M2NiMzU5ZWYzYSBweTNrCis2NzA0MyA0YjcyNjUwMGE5Njk5Y2ZkMTk1MzkzNmQxZjNmMWIyMjUwODNiZTk1IHB5M2sKKzY3MDQ0IDgwNGU2MzY1ODE3YzRiMTJjYzFhZjRiZjc3ZGFhMDZlOThlMzAwNmUgbGVnYWN5LXRydW5rCis2NzA0NSAyYWE2OWI5ZDEyNzM4ZGYyMGYwOGJjNDBkZGQwNjlmZTEwYzgwMzI1IHB5M2sKKzY3MDQ2IDAyMWJjOWY4ODEwMzQ5ZGM4YmZlNjZhODQyZjhmMjMyOTAzY2U2NTEgbGVnYWN5LXRydW5rCis2NzA0NyAzNDg1ZDk1OTU3YzFkMmM1ODFlMDFmMTNiMmQ0OWJiZTY1MmEyZjRhIHJlbGVhc2UyNi1tYWludAorNjcwNDggNzExMzkwZDRhYzIxMzkwYjBjNmQxZGUyOTgzNzJlZjAzNDM0OWQyNiBweTNrCis2NzA0OSAyNGY2NWUzMDkwZTgwYTIyYWZkZTZhODkxNzQ5MTk4NDFlMzViOTEyIGxlZ2FjeS10cnVuaworNjcwNTAgYmIxMDljNGJlZDI3NmEzM2VhYWNjNmMwOTQwMTZjYWVmMWZlOWFjMiBweTNrCis2NzA1MSBjMGFmYzRlZWJhN2Q2YTg0MzM1NzU3OWM1MmI3NTk0MTIyNWM4ZTliIHB5M2sKKzY3MDUyIDZhMjBlOGMxNzQ1YTk4ODhmZjhhODAwNzIwYjFlZTFkOTc4YWYwMWQgbGVnYWN5LXRydW5rCis2NzA1MyBiM2RmNThmNzZlNDlkODdlMGNmM2Q5NzM0N2M4ZDI3NjcyYTk4ZGI2IHJlbGVhc2UyNi1tYWludAorNjcwNTQgZDJlYzZkNWIyZGI5NzAxYmEwNjI5NTMyNWU4NjU5MzlhNjlkMDcwYiBweTNrCis2NzA1NSA5ZmM1NzNmYmFmNWUzNGJkYWNkZjI0ZTQzMDlhZjhhYTJmYzc1ZmNhIHB5M2sKKzY3MDU2IGU4YzBhNWE2NDZjYTZjY2RhMDMxZWJmYWQwOTE1MTNhMjhiZWU5ZTEgcmVsZWFzZTI1LW1haW50Cis2NzA1NyBlZmVmNWZjNDVhOWE0NzcyNTBiZWZjZDdkZWZlYjRlZTA1MmJmOGY2IHB5M2sKKzY3MDU4IGMzMjMxMDI3MzdiYzIzY2I4ZmZlNDkxZmE5YWUzYTc5NjdlZWEyNGUgcmVsZWFzZTI2LW1haW50Cis2NzA1OSBhNWNhODk1MWJlZjE3MjliN2Y1ZDRkYjc2MzIyZmZhYTllNDAwYWEyIHB5M2sKKzY3MDYwIGIwY2NjYjU1OTQxYzQxNzBlMTk1YzJkMDhmNjUyNDBhM2NiZDVmYWEgbGVnYWN5LXRydW5rCis2NzA2MSA4MDQ1ZDU1OTZiMWM4YjkzMzQwNTcwNzRlMTljODI0NjkwZmM3MzU1IGxlZ2FjeS10cnVuaworNjcwNjIgOWM5N2JjODYxMjJhMGY3Yzc4MzIyNTg0YWE3YTZiZThlNTE4ZGM1YiBweTNrCis2NzA2MyAwNmNmMmNlYTM4N2I3ZTQ1MDNmYWJjOTZkNWRmOGQ1MTYwYjg0NjAxIHJlbGVhc2UyNi1tYWludAorNjcwNjQgM2UyZGU0ODRjZTM0MjE3YzZkYTQ3ZWJhYzE0OGNiMTBkYWQyZTAwMyBweTNrCis2NzA2NSA5NjQxOGY4MTJmMDY4MDBlMDc3OTZjNzkzMzZlNmIyYTM5NWQ0NDE5IGxlZ2FjeS10cnVuaworNjcwNjYgN2U0MDI2M2RiZmQzNDU0OTkyODVmYmM5MmY4MjRmMmY2NGI2ZjFjMCBsZWdhY3ktdHJ1bmsKKzY3MDY3IDZjYWMyZTMwNzdhMzRkNzJhM2UxODE5ZmI0YmJhYjUwNDJjZjY4ZjEgcmVsZWFzZTI2LW1haW50Cis2NzA2OCBmMzIzNGU0M2UxZmU4MGEyOTRhODUxNTg4MWJhNjk4MDE4Y2Y0MjkzIHB5M2sKKzY3MDY5IDk5MDZmNjk2Yjk0MTk1YWZhZjA1NjhkMWE4ZGY5Yjk1NjAyOWY1NDUgcHkzaworNjcwNzAgMGRmZGI1MmFiZGY5Zjk1ODdiMTA3ZmEyMzhmYTk4OGE3MjYyOWRkYiBsZWdhY3ktdHJ1bmsKKzY3MDc2IDU3OGFhNDNkYzQwMDQzMDc1MDE4ZTc3ZjkyYjZjMzIxYmNmYjMxM2UgdGxlZS1hc3Qtb3B0aW1pemUKKzY3MDc3IDkxYWI0MzU0NDQwZWZjODE0NGM1MjRhMzJjZDZjMjMzMGQ0ZDBjMzUgbGVnYWN5LXRydW5rCis2NzA3OCAyZWQzZjg5MjZiYjg5MWM5OWE4NGQxYzEwYzkwNzRiMGIxMWQxNWQzIHJlbGVhc2UyNi1tYWludAorNjcwNzkgNDVhYzUxOTZmYTY3OWRmYWUxOTk0ZTA4N2QxNjlmMTU3MzVhMjVhOCByZWxlYXNlMjUtbWFpbnQKKzY3MDgyIDExODRhYmM1Zjk2Yzk2ZDYxMmYzZTk2ZDEwNDFhY2YyNTA1NmQ5NzggbGVnYWN5LXRydW5rCis2NzA4MyAwMGU3MWNkODkxMjg0YTU3Y2VmMGE5NjU4NTdkMmU2Mzk0Nzk1ZGRjIHJlbGVhc2UyNi1tYWludAorNjcwODQgNDUwNDZmMDcyMjdhZDNhZjI3MWQ1MTdhZjI4YWJlNWIxOTY2OGM0OCByZWxlYXNlMjUtbWFpbnQKKzY3MDg4IGJkMGU5YTljZDI4M2E1NTQwYWVjZjlmMWEwYjg3NWI4NjExOWU1NmQgcHkzaworNjcwODkgMGRlYzU0YWE1M2VlNzVlMzdhZjZhMTgyYjU5YmUwMjEyYTlmNmRhNiBsZWdhY3ktdHJ1bmsKKzY3MDkwIGY4NDljNTliYmZkNzY0ZjAyNTNmNDk1OWNkMTM2YTA4OTRkMWVkMTIgcHkzaworNjcwOTEgMGM4ZmFmNmM4ZWIyOTYwZDRhYjczODAxYmIxYTgzMmQ2NzhkYzNiZiBsZWdhY3ktdHJ1bmsKKzY3MDkyIDVmODAxYWRkMjBmYmJjMzJjNjk5ZTQ1ZjllZjRhMTFiNjhjMTM0NGIgcHkzaworNjcwOTMgZjJiYjEzM2VmNTE3ZDQ1MGQwMmZhNmNmZmJiZjVlZWFhM2ZlZWRjMSBweTNrCis2NzA5NSBmNjdiMmM4ZmE5M2FkMjMyMmRkMjY5ZTdjMWE5ZDQ2YTYzM2ZlN2Y4IHB5M2sKKzY3MDk4IGU2OGU0MmIxN2U1ZTM0MTQ0OTAzZTkzYTRjNTkwNWE0NmJkZDA1ZWIgbGVnYWN5LXRydW5rCis2NzA5OSBhNTI5ZTNkYzY5NWE4YjZlZGRlNDhiYzFkZjg4ZmEwMjEyOTM0M2I4IHJlbGVhc2UyNi1tYWludAorNjcxMDAgYzA4OWViNjRlZTU3NmU1N2JkYWYzMmVjMzBlOGI2ZTMwMjBkOTA0NSBweTNrCis2NzEwMSA5NzJiNDA1NDZkNzk1NTRmM2E4OTcxZjBmMTZlZjI5MzgwMDdmYzI2IGxlZ2FjeS10cnVuaworNjcxMDIgNTBlNzgyMmM5NTg1ZmVmNTZlZDY2NjExZmFjNGI4NTQyYWRlM2U5MyByZWxlYXNlMjYtbWFpbnQKKzY3MTA2IDIzZDljYjc3N2Q5YTgxNmEyNTYyZGU4Yjc3ZmFlYzQ1YzNkNDgxMDUgcHkzaworNjcxMDcgOThmMzE3NTY0NjIwM2VmNGVhMzkwZDQzNDU0YmJkZTdlYWJmMzZmYyBweTNrCis2NzEwOCA0MDBmYmM4MDUyYWRlY2MxNzY5MjY4NWRiMzUzMzhiM2NiOTE1MTlhIHB5M2sKKzY3MTA5IDFiYzNkMWIzOWE0Yjc5NWUyNjY1M2Y3YzY2OWVkMDJhYzYxODNiMmYgcHkzaworNjcxMTAgZTJhNDcyZjNiNzdmNmMxMGVhNDU1MTdmMzkxOGM4ZWMxOTE5MDhmZCBweTNrCis2NzExMSA1YjRjYjhjZDUwNTFmN2EwMTM5NzliNDY0N2FiMWE4YjQ4YzAyZjVkIHB5M2sKKzY3MTEyIGFhNmU2NDk1OTlhZDA5MGRmOTEyZGE2NzE0ZDY4OGRjMzJiY2M3NDcgcHkzaworNjcxMTMgM2E5NDc2OGEyYThiZTVkMDkyODA2ZGM2OGE1YWIxYWVjYjE3MmEwZCBweTNrCis2NzExNCBkNzE5NmZiOTRmMjVmYzhkYTVjOTkzNDgwZDVlMDU1MTQxNDczYmU0IHB5M2sKKzY3MTE1IDZlMGEzNjEwNzhlNTIxNjhhYTVlYzkyYTc3YzM4OWI2NGIyMWNhOTMgcHkzaworNjcxMTcgMWMyM2U3MDAxNTA2NzQwNDRhMDZlYzcwN2MyYWQxZjI5MWNmNjI2NCBsZWdhY3ktdHJ1bmsKKzY3MTE4IDc5YzlhYjY0OThmZGZiOWRmZmEzMzI0NjRmZTQ4NzVhNzQxNGRmYWIgbGVnYWN5LXRydW5rCis2NzExOSA5YTNlOTI0M2M1MTg5YmU2NDU2MDI5M2ZiMzAyNzYzZTU1NWNmMTdlIGxlZ2FjeS10cnVuaworNjcxMjAgMjZmMDFlZWFmNTRlODBlOWNkYmJlYzBiODljOGYzZWFiOGFhODczZiBsZWdhY3ktdHJ1bmsKKzY3MTIxIGYzZjY1MGM3ZDNhYWM2M2NiYmY2NmJmMDVmNTZhZGVlN2Q3MjI4M2UgcmVsZWFzZTI2LW1haW50Cis2NzEyMiBmNzg2N2I3N2RjNTU3ODE4MWQxOTZiMmZmNGRhM2ZiNWYwMmU2NWQ3IHB5M2sKKzY3MTIzIDgzNzBlOWVmN2YwZmRjOTY3ZDk5YTZiOTJiNmI3YTJlMzcxZTBmNmUgbGVnYWN5LXRydW5rCis2NzEyNCA3ZTYzZmViMzBlYTVkZGM2OTA1OTkzMDE5YmVkMDk1YmQzMzNmMDZlIGxlZ2FjeS10cnVuaworNjcxMjUgMjEwYzU4NWY5NWJlZTZmNDU5ZDExMzQ2NGNmYmIyYzg3NjQ4OWY1ZCBsZWdhY3ktdHJ1bmsKKzY3MTI2IDEwNDUzN2E1NDE5NjUwZDM3OThmNWFmZDkwNzdlOGFlODgzYjNjMjkgcmVsZWFzZTI2LW1haW50Cis2NzEyNyAzMjU2MTg3OTI1ZDFlOTFlZjFlMzE4YjE5ZDJiM2VkZWY5ZmVkNzhlIHB5M2sKKzY3MTMyIDE0ZDQ0MTJkMmJmODQ4MTMwZWI5ZDZiNTFhZTAyYWE4ZDkwZTBjZWEgcHkzaworNjcxMzMgODI4MDk0ODU5MmJiMmNkZGQ4YTA1NDU1ODk2OTZkOTBjZmMwOTQ0MyBweTNrCis2NzEzNCA5NzRjYWYxNjdmZjA0NTI5NjJjMGI1MzJhNjBiY2RkYTg1NTc3N2Y2IHB5M2sKKzY3MTM2IDUzNGJlODA2NmMzNmE2YWZjMjYxYjViZmM3Yzc2MjAwZDU0ZGExYjggcHkzaworNjcxMzcgOGZhZTQ2NWEzOTYyN2I1OTAzODU0NjJlNjA5NWViNjNhZjQ1MjQwYSBweTNrCis2NzEzOCBhYzQyZGM5YTAyMDNlZmIzN2U2NWY3NzczN2ZkMTk0NGE5MTgwMzA5IHB5M2sKKzY3MTM5IDkyYmExMmY5MzI4MjM4NGEyMzhjMGZiMDU2OWU3Y2Y0OTFmMDMyZGUgcHkzaworNjcxNDEgZDJmNzMyM2ZiNzA5NjViZTYyMmFmZDRjYzdhNTQyMTg1MDU3OWM0YyBweTNrCis2NzE0MyBjOTgzZmE2OGQ2ZmYyNTVjZmM3YjJhNTkwNTE4OWMzYTU1NzNjM2U1IGxlZ2FjeS10cnVuaworNjcxNDQgNjIzOGI2Y2Y3N2YxMDU3Y2VhYzUxYTRkNjYxN2Y1OWI0MTgwZGZiZCByZWxlYXNlMjYtbWFpbnQKKzY3MTQ1IGVhODdlODgxNDM1OWIzOGU3NzE4YmIwMDhjNTA5OWNlMWE4OGNkN2MgcmVsZWFzZTI2LW1haW50Cis2NzE0NiA4MmNjYzdlNzdlYzU1NzNkNTY4ZDJmNTE1NmQ1ZmQ1YzkwZDNmZjEwIHJlbGVhc2UyNi1tYWludAorNjcxNDcgNDc5ZGFkOWRjOTZjMWU4ZGNmNjA0NmRjYzVjYmU5ZTE3ODI4ZjY0YiByZWxlYXNlMjYtbWFpbnQKKzY3MTQ4IDFmN2Y0MWYyMGFjNTk2NjZkODc3ZGZkYzkyNmJjMmQxNTEzMGIxMGUgcHkzaworNjcxNDkgOWRhNTI5YTNmZDVhZTc0MmQyOGFlZTVlZjNmODE3MTgyODc5OWNiMyBsZWdhY3ktdHJ1bmsKKzY3MTUwIGZhY2NiOThkOTQ3NGUzYzM1MDQwODNmMzQ3YzkxYTA3MmNiODJkNjcgcmVsZWFzZTI2LW1haW50Cis2NzE1MSBhY2I3OGVjZTU2YTllMTAyZmM5ZTY3NjI1YjJlNzRkOWNhYzU1MWNlIHB5M2sKKzY3MTU0IDMxNzM3MTdhODlmMzE3Y2E3MTM4ODI5MTExMjM4MjgyOGQwMjI2ZTAgbGVnYWN5LXRydW5rCis2NzE1NyA1NzE5MzgwNTQ3MjFkYjNmZmYzZTliMDkzYTllNTNiMWE5NzBkNGFhIGxlZ2FjeS10cnVuaworNjcxNTggMDA4YWNiMGNiYmZjMjllZThjOTRlMmQwMGVjNWVjMmQwMDg5YjI4ZSBsZWdhY3ktdHJ1bmsKKzY3MTU5IDU4MjM1YjlkYzNhZTI0Yzg5N2RiMWY3ZGY5NzlhNDg1NTZlMDMyZWUgbGVnYWN5LXRydW5rCis2NzE2MCA2ZjA2NTcxYThhZWZhZmU5NjcwOTI1N2I3ZjE3OWE0MWJmOGJmZjY5IHB5M2sKKzY3MTYxIGQwYWExMGZmMjhjNjU3MDA2NTcwYjM1YzgyOTVkNWE1NDBlYTU4ZmIgcHkzaworNjcxNjIgMjBhNDA4OTQ1MzlhNDhhMWE3YTFmZTZhYjQyYzVlZGI1ZjA3NGRlYyBsZWdhY3ktdHJ1bmsKKzY3MTYzIGQzNGNjYjAzNDFlYTUzYWE4NmJjMzcwZGFkMTY0NGQwZjEwOTYwZWQgbGVnYWN5LXRydW5rCis2NzE2NCBlZjg4MGUyY2M1NjhjY2NmOThiOGM5NDUzMmUwMzZjNTdlMmNiNzZjIHB5M2sKKzY3MTY1IDcxZjUzZDNkMTU1MTIxY2YwM2E4ZWI3NzA4OTBjM2YyMWMwNTkyMjQgcHkzaworNjcxNjYgYmM0Zjc0MmUyYzFkNTM4NDQ1MWNjNWRjZWQ1YjI5NTJmY2UyNTExZCBsZWdhY3ktdHJ1bmsKKzY3MTY3IGYwN2I4MmEzMjFmZTE5MDU1Mzc5ODQ3ZDU1N2U3YjhlNWRhOTk5MzAgcHkzaworNjcxNjggNzY4MzJjMDlkMmZkYzFiMDY5ZWJmMGY2MWEyNmM3NWE0NWZkMjM2ZSBweTNrCis2NzE3MSAyZTA4NTdiMGZjNjc1Nzg0NGE5ZTBkZGI1NjdiYTQ1Y2RmNzA5ZTI2IGxlZ2FjeS10cnVuaworNjcxNzIgY2RkZDkxODBiOGM4ODA2MjI3MDZhZDdiNDg4OWFiZWFkNTVkODU5MSBweTNrCis2NzE3NCAyMTExNTFmZGM5MjQ0NDJjY2MzY2FjZTVlYzBmY2E4YmQ0MWEzMGU3IHB5M2sKKzY3MTc1IDJiYjEyY2EyZmY0NGUxMWI4YzNkY2JhODQyNDY1N2FmOWViMzk2N2MgbGVnYWN5LXRydW5rCis2NzE3NiBjMmE3NWJhNDZmMTRkOWZjMjZkNGFlYzdlNmM5NGU1NTdiZDZjMDQ4IGxlZ2FjeS10cnVuaworNjcxODAgYWU4M2Q0YWEzZTBlZDk3NDNjYzAzZmIzYWM4YTk2NDViYTg2MDZiOCBsZWdhY3ktdHJ1bmsKKzY3MTgxIDJiMzM0MGI1Y2EzODZiNTI0NjdhNWJlZWIzZmFmNTc5MDBjYjkwOWYgcmVsZWFzZTI2LW1haW50Cis2NzE4MiBiMjQ4MWExNTM3NjM0OGZmODFiY2YxY2QwMDUxN2YzOWY0N2JlOWRkIHB5M2sKKzY3MTg0IGFjZjY5ZTA3OWI4NDZiNWMzZDg0ZTQwZTc5YTk0ZWMxYmE4ZmFlMzkgdGxlZS1hc3Qtb3B0aW1pemUKKzY3MTg1IDU0Y2I1MDFmNjIxNWFiZGNjZjllNDExNTUyYTBhZmUzMzY0YmEyNzMgcHkzaworNjcxODcgMjE4YTk4OTgxMTgzZDJhM2M3ZjNkMTU4NzllMGZhMTFjMDkyODQ4OCBweTNrCis2NzE4OCA2M2VhMjJiNThkNTQyNTkyMTk2NmRmMDU5Y2YyMmIzZWZmOGMxOWU0IHB5M2sKKzY3MTg5IDc0NDBhMzBhMmYxMzQwM2E0MjdlMTIwY2M2ZjFmNzg4MGJhZTJkNWQgbGVnYWN5LXRydW5rCis2NzE5MCBmYjcyNTM2NmY5YWM4YmVkNGUzMmQ2NmQ3ZWI5MjNhNTU1YzY4MjhhIHB5M2sKKzY3MTkyIGIwNzEzZmJjNTA2MWJhYTI1MmE0NDBiMjg4NjU3NGU5MmNlMDk4N2MgcHkzaworNjcxOTMgODExOTBjYjFjYWUyOTMwNmEyMjgyZDJlMTZhYzQ1MGQ2NWFkNjJlNCBweTNrCis2NzE5NCBmMmI0M2QyODI1MWRjZGMwMjBiOGZlZjYzODNlZDJjYTljNmQ4NjZjIHB5M2sKKzY3MTk1IDAzZTc0ZGQ5Y2M4M2Y1OTBmODVkOTAyNWEyOTY5MzY2ZDZjNTc3MzcgcmVsZWFzZTI0LW1haW50Cis2NzE5NiA4ZDZlMjQ5OTcyNmE1MjgxM2ExMzAxOWEwNmIyNzg5ODk3MWE1MGM5IHJlbGVhc2UyNC1tYWludAorNjcxOTcgNjFhMzMwNTA0NDNkMjBmMGQyNGFmOTIyNzkxMjgwNTZmOWU5YThiNiByZWxlYXNlMjQtbWFpbnQKKzY3MTk4IDk3ODFlZWYzMTkyYzZhYjJjY2IyNWNmOGJmMTE4NTZlMDllMGZlMjMgcmVsZWFzZTI0LW1haW50Cis2NzE5OSAyMDBjOGFhYjE5MTc2ZmJmNzE4NjBkNDcwMjZiZGJkYTY0YTc4NjEyIHJlbGVhc2UyNC1tYWludAorNjcyMDAgY2U3MjI0Y2Y4N2JhMjBmNDhjMGZlMGM4Zjk4NzMxYTk1ZWM5NjVmYyByZWxlYXNlMjQtbWFpbnQKKzY3MjAxIDIzMjg1ZmYxMGMwNGQ3OTFiNGU3MDFhNGRhNzIxMTU4ZDJkMGQ0ZDQgcHkzaworNjcyMDIgOWExM2U5NjY4ODljYjQ0Yzg3ZjZmODE0OGY2ZDFlMjE3MDBhMTk2MSBweTNrCis2NzIwMyBjZDA4YjAwYWNkNmExY2E1MzliMDI3MDBjMTQ1Njc1ODg5YjkwYzg2IHB5M2sKKzY3MjA0IDk4NjI4ZGM3MzBkYWU3NzBmNDE4MTA0Zjg3YjRiMzFjOWE0MGQ3MGYgcHkzaworNjcyMTYgNDk0YmI5NjcxMzkxNzkwNWVjY2VkNGQ0Mzk2YmQ5YmIxMzQ0NmZjNyByZWxlYXNlMjUtbWFpbnQKKzY3MjE3IDA1OWYxMTZhMjgxOTRmODgzNmJkMTlkOWNiNzdjYzIyNGU2YmQyYTcgcmVsZWFzZTI1LW1haW50Cis2NzIyNCBjMjc3MmNiZmUxODFlMWYzYTliNjJhYmJlNGE3YzMyNzI0NDc0NmI1IGxlZ2FjeS10cnVuaworNjcyMjUgMTY2MDBjYWNlMzE1ZGMyYzFkNzJmMzQwYjg3NDkxYjEwZTA2MzRmNCBsZWdhY3ktdHJ1bmsKKzY3MjI2IDBhZDA3MDc4NDMzYTM4NzljNTAwNjMwNmEyNWVkNzY1OTZhYmJmYzcgbGVnYWN5LXRydW5rCis2NzIyNyA0YzQ2MzIzYWZhYjZmOTljYmU5ZjM5Mjg2ZDhjOTVhOTM2NTcwN2JkIGxlZ2FjeS10cnVuaworNjcyMjggZGJlNGIxNmY4MDRiYTdiZDExMTUzYTkxYTRiNTZlYjA3MTU1MTU5YyByZWxlYXNlMjUtbWFpbnQKKzY3MjI5IDQyMGE1ZTgzZTAyZTdiNGMxNzVlYTc2NjhkNjIzZDQ5ZmFjZTllNDMgcmVsZWFzZTI2LW1haW50Cis2NzIzMiBjNzA3ZGEzNDM1NTc4Y2RiYTUwMjZiNTMwMWNkMzVjYTRhM2U4OGI4IHB5M2sKKzY3MjM0IGU3NGRkNTQxOGEzM2ZiMDAwYjkzMzhhOWEzNWM0ZGQ2ZTAwMmRiMzQgbGVnYWN5LXRydW5rCis2NzIzNSBiNDI4ZThmNmIxNDM0NjIzZjZlMWRmZmU4NDM0NDRhZDQwMjI1MGUxIHJlbGVhc2UyNi1tYWludAorNjcyMzYgN2RlMWIyYWQzODA0ODVkMGU5NzI5OGM2Y2I0OWMyMmNhODJhNDc4ZCByZWxlYXNlMjUtbWFpbnQKKzY3MjM3IGIwZmNiMTdmN2VmYTgxNTI2ZDY4NzAwZDRhNzRkY2FhODllZDk0MWQgcHkzaworNjcyNDEgMWU0NGVhNTE2ZTBlNzBjNWNhNTJkM2MzYjUxOGM1MDI4ZmI2ZjgzZSBweTNrCis2NzI0MiA2MjBhMzRkYzEwZjkwNjYzN2NlYzUwNmNmY2E5MGI4NWQ1ZmYxNWNhIHB5M2sKKzY3MjQzIDc1NTlhMzJjYzMwZWY5NjA1NGUwYWNkZDg5ODIyYjA2OWQ3OTUyNzcgbGVnYWN5LXRydW5rCis2NzI0NCA2NzRlZjRhN2NkNzMwMTc1ZjU4M2I3YzM3MDQ4NmMxMWUwZWZlZDJkIHB5M2sKKzY3MjQ1IDRiMzIxOTlhOGFmZWM1Nzg1ZGQ2YzllYjdiOTYwZDJjMzgwZGU3ZTMgbGVnYWN5LXRydW5rCis2NzI0NiAwODEzNWExZjNmNWQ4ODUwZGM1NWQ4M2UzNmY3OTc5ZGNjYjJkYTY2IGxlZ2FjeS10cnVuaworNjcyNDcgNzNiOWZlMWM1Mzk3M2QzZWZmMzdhNjg4ZGI5MjFhNDA0NTQ2MGQ5OCByZWxlYXNlMjYtbWFpbnQKKzY3MjQ4IDM1NmMzZTE4ZGE1ZTg0OGE5Zjk5MjJiNjcwN2Q3M2RmN2Q2M2RkNGIgcHkzaworNjcyNDkgYTVlNDFhNzk0OTU0NDM3OWFmZTdiMTMyZTUxOWM5YjE4Y2U5YzYxNyBweTNrCis2NzI1MCBmYzQ2YWJmMTcwZmRkOGQ3NWNkOWM2Yjk5NjM0MWIxYmQ1ZjNiMGRlIHJlbGVhc2UyNC1tYWludAorNjcyNTEgOTM2YTZlNjBmM2ViN2EzYmU0N2ZiYWMyNjk1YmE0NmZjMGQ1MGU1MSByZWxlYXNlMjUtbWFpbnQKKzY3MjUyIGYzOWFjZWJjZTYyOGJlMWY5OGM5MTA4YjM2MmE3ZTE2ZjEzNzRjZTkgcmVsZWFzZTI0LW1haW50Cis2NzI1MyBlZDBkYWMyNmIzOTZkYTNmYjc3NjQ0OWEwZTU2ZWNjYzQzZTQ5ODcxIHB5M2sKKzY3MjU2IGUyZDJhN2E2ZTgzMTVkYzgyNjdiMzZjNDhlZjcxYzBkZTQyZWJhNWYgcHkzaworNjcyNjYgZWE2ZWUyODIwNzUzYmNlZmVlNTJkYjc5MDYwMWYwOGU2ZjM5NWNiYiBsZWdhY3ktdHJ1bmsKKzY3MjY3IGQ2ZTY3OTg5ZmY1MTQ5NzM2MmZlM2ZkYjdkZThkYWY5YjBmN2JiMGMgcmVsZWFzZTI2LW1haW50Cis2NzI2OCBjNmQxNmIyYThlZmE0ZDU2MjZhZGFlOGUxNjE0OTE2MmU3OTJlYTBmIHJlbGVhc2UyNS1tYWludAorNjcyNjkgY2U2OTIzNTQ1ZTVlYzNhNjM5MGQ2NjI0YWRkODRhNjA0MGE5N2FmNiBweTNrCis2NzI3MCA2ZDZlMzhjZmYyNDQwZTJmOWZmZDQ2ZTFlZTI1NTAxZDYwOTI4NjAyIHJlbGVhc2UyNC1tYWludAorNjcyNzEgMGMwYmIxMDRlYzRiN2E3ZjZiZGI5OTkyYzU3ODYzYmJlOGQ2YTBmZSBweTNrCis2NzI3NyAyZDliMTczZGMzYTJlYjdhODA2ZTUxYjMzYzljYTk1Y2ZhZTgzN2IyIGxlZ2FjeS10cnVuaworNjcyNzggMTUzZmVkN2M3YjYwYjkwZDVlOTQ2NjM4OTJjOWVmZWZjYzgxMDQxMCBsZWdhY3ktdHJ1bmsKKzY3Mjc5IDcxYTUwZTY3NWZhMWU0NDhhZWY4YjZkZjJlNWI0MzU0MGExZTc5YzAgbGVnYWN5LXRydW5rCis2NzI4MCA3YmIyMDQ2MTJmYzY3NmJiYzdlZmUwZWE2MzRhYTQ5ODU5YWIwNWE2IHJlbGVhc2UyNi1tYWludAorNjcyODEgOGI5YmRhNWI4ZDRhOWQxYmEzYTdhMjliYTNlZmY3YmJkNTA0OGRlYiBweTNrCis2NzI4MiA3MjM4OTUwZDVjNjA0MDA3N2RhNzE1ZDgxZDViNzQxYzYzYzJjNzM4IHJlbGVhc2UyNi1tYWludAorNjcyODMgYmY2YTViZTgyN2I0YzJlNmQwY2E5Y2I2NzA5ZTcwODA1ODJlNDg2YSBsZWdhY3ktdHJ1bmsKKzY3Mjg0IDFmN2I2YzQwYzk5MDg5YTY2NWIxOWYxNzkzNmQzN2JjY2IwOTk4YzIgcmVsZWFzZTI2LW1haW50Cis2NzI4NSBhOTM3NmFkYzI4NGNlNzkwYzEwMzI4YjM2YTcwNGVkNmNhYzk2OTIyIHB5M2sKKzY3Mjg2IDA3MjJkNzFhZmEyZjI4NmVlNDUxZjQyOTEzNzlkMjEwMzkzZDJhOTQgcHkzaworNjcyODcgYTQ0Y2U1NTU2YTdmYzYzMDI3OTM0OTFhYTFhZGZmYWU5MzNiNGVhNiBsZWdhY3ktdHJ1bmsKKzY3Mjg4IGYwNGRmMTBlMjA1MDExZThiY2I0Y2I2MTI1ZWE4ZDQ1NjI5MDgwNzMgcmVsZWFzZTI2LW1haW50Cis2NzI4OSBmZmFlNTgzNzg1MWNiNGFhYjJiYzRjN2QyOGQwNDI5MzAxZGZlMjRkIGxlZ2FjeS10cnVuaworNjcyOTAgMWU3ZDMyMjI3NGM4M2VjNzdjOWY0MzgxNmVlMmQwOGNlMWY1ODU0MSBweTNrCis2NzI5MSA3YjE4Nzk5ZTk1MTk0NTgyOTRiOTdhNGViMTZjZjgxZGU1OGI3MmQ5IGxlZ2FjeS10cnVuaworNjcyOTIgZmRjOTMzOTUxOTY0NmY1Y2IzYWFiOTAwYWFiMzI3ZDg0M2ZhYmUzMSBweTNrCis2NzI5MyBjYWNjMDE4ZmEzNDFhYjVjNTc5NmQ1ZWZmNjJiZmRkOTJhZDAwYjZmIHJlbGVhc2UyNi1tYWludAorNjcyOTQgMDg4ZmRhZGY5NjA5ZDE5M2ViMTBmOGE0MGYwOWI1MGRmOTAxZmY5YyBweTNrCis2NzI5NSBhMjkwYTUxZmY4ZTI3ZDcyYjhkMWYxZmIzMGI5YWVjNzYyNjM5YjJmIGxlZ2FjeS10cnVuaworNjcyOTggMmRhM2ZjZDQ5MzVmMTU0Zjk0MTg2YjM1YzFlOTE4MDIzZTEzYmZlMCBweTNrCis2NzI5OSAyY2E5NjRkNzI0ZDVmZjlhMTY3NDY3NDUxOWIzNDM2ZDM4MDFjMWZiIHB5M2sKKzY3MzAwIDg0MTM2OWYzNzMzNDg2MWU5MDNmZmYzN2FjZTlmMWJjMTdiODE1OWYgcHkzaworNjczMDEgY2I4MDM5ZDgyYWYzZjE0MGY5NmNhMTMyMTljMGE2ZjFjZjJhYjhmYSBsZWdhY3ktdHJ1bmsKKzY3MzAyIDI0NjQ1ODcwNzc5YWI4Y2NhMzdlYWI5NjhhZDQxMTI0NWU3MmMzZWIgbGVnYWN5LXRydW5rCis2NzMwMyBmNDFjYjIwNmQwNjFlZDEzNTg2NzhlNDAwYzE5OGZjNjk5ZjIwZmQxIGxlZ2FjeS10cnVuaworNjczMDQgODhmZjQ1ZTU4ZTk0YjZiYTY1NTJkODhkZjI3NjFjYzY2ZTI0ZWFmNyBweTNrCis2NzMwNSBkYzFkYjQ2ZDBhNDRiOWI5YTNmNjhiNDYwMGRjMDFmN2NhYjUzNzlmIHB5M2sKKzY3MzA2IDVmZmQ2N2RmOGM5ZjA4MTk4NjBjYTBiNWYyMzhlZmQ1ZTY5MGRiNDYgcHkzaworNjczMDcgZWFkZTQ3ZGZjMWU0NzA0Nzg2NWQ1Y2FlMWM0YjVmODg0Mzc3MWQ3MCBsZWdhY3ktdHJ1bmsKKzY3MzA4IGY5NWZmOTZmZDc5MmYyZjFkZTMxZThiNDlkNzcxODY1YzgwN2E4NjYgcHkzaworNjczMDkgYmFjMDQwYjVlZjIyYTQyNDQ1ZTY0OGQ4ZTk2NjE0Y2RmMmFlMzYwMiBweTNrCis2NzMxMCA1NGU1ZDg1M2IwZGVjN2U3NGVmMzEyNjgzYWZjMWYwNTA3NTY0ZjZiIHB5M2sKKzY3MzExIDE1OWExMWIxZDI0NDUwYTRhNTFhNDFlODc4OTM2NDY5MjY1NWQyMzcgcHkzaworNjczMTIgZTgzYTYwYzY5ZDUzZjU1NTFhMzA2ZTc3YTZkMzhlOWIxMTQ4NTQ5NiBweTNrCis2NzMxMyAzNGZiNjY2ZmY1MmY0MTM0ZjMyZWVhNjg1OTVhZTZkNmJjMzhiMDBjIHB5M2sKKzY3MzE0IDdhYWEzYWZmZWNjMTUzMmUxMTA0YmMxN2YxZDg1OWI5NTE1NzNhYmIgcHkzaworNjczMTYgMzRiYzIyNzlkYzU2ZGZkYWIxZGEzMjc2YTUzYzI2MWY5OGE1YTIwNCBweTNrCis2NzMxNyBlZGE0NjdkNjViNjVlZmIyMTFjM2U0NDc1MzhjMTE4MjYxYjFlNTk2IHB5M2sKKzY3MzE4IDIzMjdkZDY4NDIxY2NmZmMwMDUzOGI3ZGY3ZjA3ZDg3ZGM3NmY4ODIgbGVnYWN5LXRydW5rCis2NzMxOSAzMjUwZmI3MWE5ZTA4YzA2YTg2ZWFiZjJiMTUwYWFiOWQzYmRhNTI5IHJlbGVhc2UyNi1tYWludAorNjczMjAgYjY0ZDA1M2FmZDg0ZGE5MTQwMjkzY2E4NTY3OWQwMWM4MjZkOGFjNCBsZWdhY3ktdHJ1bmsKKzY3MzIxIDBiY2FmYTY0ZWNjYjQ0MzU3ZGFjYWIzNTdlNTU0YWFjN2E5Yjc4ZDAgcmVsZWFzZTI2LW1haW50Cis2NzMyMiBmNDAzZDk0MTU3YjIxMGRjZDkzOGQyYzYzM2VhNDRjMTFkZjZiNjA2IHB5M2sKKzY3MzIzIDc4NDZmZTQ5NTIxMjkwMGQ2MTM0YTg3ZWE0NGJiOGMxZDFmZDYxN2MgcHkzaworNjczMjQgMGViNWFkZDMxNjBhMjQ5MDkwMTM3ZWNiMjFjYWNjZDhhZjEzMGFjMSBweTNrCis2NzMyNSA2YWVmMjhlYmJkNmMxMTc0Yjg2ZmQ4NTBhN2UyZDYyYjc3YzY5ZmQ5IHB5M2sKKzY3MzI2IGRjNGFjZjc1MzI5NjJkM2M5Yjg5ZWM0MDllZWRmOWMyMjY3ZjYzZjkgbGVnYWN5LXRydW5rCis2NzMyNyBiMTgwYjI3MWE3YjJiNDRmZDc2ZjQyZGMwZWUxYTY0ZWRmYTFmYjUwIHB5M2sKKzY3MzI4IDMxZDg4ZmZmYjk4YTEwNGE0ODM0OTgyMzYzOWJjMWMzYmYyODMxMmYgcHkzaworNjczMjkgOGYwYTE3NWYwNGJlYWFkNWQ0MDk5MDI2Njc1M2ZkNjM5Y2YwNzA1NSBweTNrCis2NzMzMCAzZjJkZGIzZGQxNDdhNWIzMjcyNjY2MDlmOGE4YTJjODQ0ZmQwOGRkIGxlZ2FjeS10cnVuaworNjczMzEgMmQ4YzFlYTdmOGI3ZWM0NWQ4YjkyODEyMmNiMTBhMzA4MWUwMWFkZSBweTNrCis2NzMzMiA1ZTIwMDdmYTNjZjgyYzZjNGM0ZDBkNDk0ZmEyYjIyNjNmOWQwYjMyIGxlZ2FjeS10cnVuaworNjczMzMgYTBmNGQ0NWZkNDRjZjZmMTg3OWM5NTIyMTg4YjkyNTg3YTJkMzg0MSBweTNrCis2NzMzNCBhNDIyMGM5MmY3Y2NmNDMzMDE2NmNlNmFlMDUzN2VjMDA4MzIwMTk3IHB5M2sKKzY3MzM1IDJkOTcwNjkwMTI0MTcxNzVhMzA4MTViNTFlZjAwN2M3NzlmYjY4ZGIgcHkzaworNjczMzYgNzg5YTNhYjBhZTllYTdmOTc5NGFkODEwZTc4NDE1MzM1MzkyZjRmNCBsZWdhY3ktdHJ1bmsKKzY3MzM3IGMwMDlmMDBhNDUwZmRhNzc0YjE5ODJiNWQyNzZkMTAzMzVkNjIzOTEgcHkzaworNjczMzggYjZhODI0NTk5MjBjZWYwYTIwMjkyN2MzMTVkNWUyZWNjNmE2NTllNiBweTNrCis2NzM0MCAxMzMyMWNiMmQ3NTIwMzEyZjhkNTIyMzgxZTA5N2E3MGExMjA4MjY5IHB5M2sKKzY3MzQxIDAzMGExNTM2OWVhYzc3Y2IzYmMyNjhjOGJhZTFhZDNjMGU2Mzc2NmQgcHkzaworNjczNDIgNWY3MDcwNmE4ZTY3MThmMWMyMjJlMGIyNGQxMDk3MmYzOWI2MzIyYiBsZWdhY3ktdHJ1bmsKKzY3MzQzIDVmZWNkMWU5NTMyNDk3OTBkM2JjOTYzMmU2OGYwMTJmNzI2NTg5ZTEgbGVnYWN5LXRydW5rCis2NzM0NCA1ZDliZTY1ZTc4OTFmNzIwNDUzOWQ0NTA2NjZhNTNiY2I1NjYzZDBhIHJlbGVhc2UyNi1tYWludAorNjczNDUgNjMwYzE3NGI0NjVlOTgxNjljNDI4ZTlmZTM1OWU2NTg3YjcwNTRlNCBweTNrCis2NzM0NiA3YzJiMWI1MmYxMzQyOGY5NTYxY2QxZTE1NjYxMDZhZGFmZGFmYmQ3IHB5M2sKKzY3MzQ3IDkzZDJkZDY0MWI3MDE5NDM0YzljYjFmMmMxMDhlNGFiY2I3OWE0YTAgcHkzaworNjczNDggOGEzZWFjN2Y5Y2Q2NDk3ZWIzNWRlNzdiMzRmNjk0YmExNjBkNWZlNiBsZWdhY3ktdHJ1bmsKKzY3MzQ5IDUzYTEyN2FlYTU2ZTkzNTk3MzE2ZWRkYWNmNzZmYTgzM2M1ZTMxMzMgbGVnYWN5LXRydW5rCis2NzM1MCBjOWQwZDRkYTlhYzk3ZGM2OTdlY2Q1ZjAzZmZiODIzMWNlZjI2Y2QwIHB5M2sKKzY3MzUxIDdiYmNhMjdkMzU1OWUyN2VkODZkNTgwZWI4NTlhNWQwNGYyZmNmNzcgcmVsZWFzZTI2LW1haW50Cis2NzM1MiA3NWU5OTIwMzUxZjI1ZTEzZDFhMjU2ODAyNmM3ZTVkOTYzZTIxMTJmIHJlbGVhc2UyNi1tYWludAorNjczNTMgZTcwNGVlZGQ3N2RjZGU3YTMzMTRjNWRmNWViZmJjYThmZGNiMjQ5ZiBsZWdhY3ktdHJ1bmsKKzY3MzU0IGQ3MzAzYWJjZjA2OTI4MmJmMjRlZWY3NDE3YzQyNzliMzYwZWYyODYgcHkzaworNjczNTUgY2E2NzNiYmRlMWEzZDgxYTViNDRhMmQwZjk3ZTA1YzNjZWMxZWM0YyBsZWdhY3ktdHJ1bmsKKzY3MzU5IDI0MTY1MDNhMzA3OGI1ZGYxY2ZlODE2MDJlYTcwODVhMTY1MTZlMTkgbGVnYWN5LXRydW5rCis2NzM2MSBmMWJiMjQxYmFkMjRiYmYwNjI2Mjg3ODZmNTJhZGRhZGIzNjcyN2YyIHB5M2sKKzY3MzYyIDRlYWIzNDAxNjBlMGEyMmNmZmFmMzkxMjU0YmRlYWFiOGMyNzg1OWQgbGVnYWN5LXRydW5rCis2NzM2MyAxZTkxOWQzNGM5ODI1MTYxYjg0OTEwMmI0NzNkOGMwMDc2ZWMyNDQwIHJlbGVhc2UyNi1tYWludAorNjczNjQgOWZlYWE2YTFiZjJjMjJiYWUzMWE3NGVmODZmNjJkMzE2OGRhNGVjMSBsZWdhY3ktdHJ1bmsKKzY3MzY1IDc1MWE4ZWZjNWQ0NjYyYWE5MmY3MzMxODI5NjEzNmQ0MzdkYTkwN2EgbGVnYWN5LXRydW5rCis2NzM2NiA5OTU5OGE2MWNjMzVmZDdhZjIyZTgyNDE1ZTlkYWU1ZjRmYjg2N2U2IHJlbGVhc2UyNi1tYWludAorNjczNjcgYzNmNDlhZGFjMmZlNjdlMTZiMGNmZTZmNDE5MmFlMDA0ZjM5ZmFiMyBsZWdhY3ktdHJ1bmsKKzY3MzY4IDA2ZmI2NDNmNjU1M2M0ZjRiMzZmMzhkOGYzNzMxMWQ0ODU2ZWQ4Y2MgbGVnYWN5LXRydW5rCis2NzM2OSBlNDk3NjA5MDlkMmJhNTA2YmQ5MzBiNzQwNjE5Nzc3YWVkNzlhYzY5IHB5M2sKKzY3MzcwIGI3MWNjMDAzZWY5ZjhhNTE1MGJlODZiOGNjM2I4NmQzNjdkMWI3ZjkgbGVnYWN5LXRydW5rCis2NzM3MiBkNjY2ODZlYjExZjYzMWE3ZjRkNDUxNmUyZGI4NTQ0MjUxMmVmMWU2IHB5M2sKKzY3MzczIGZmYWQ2YzBmMjUyZWIyMDgwYjJhZjY2MTQxYTgwNDg1MWQxODMwMWMgbGVnYWN5LXRydW5rCis2NzM3NCA5NmYzOGUzNTcxOTRlYzY4N2ZhNDRmMGMyZTg1MTA2MDFkOWRkMzAxIHJlbGVhc2UyNi1tYWludAorNjczNzUgNDBiNzI3N2U2NjVmMDE0NTJlOWJjZTk2OTY3NmM0MDcyZDRlZDY4ZSBweTNrCis2NzM3NiAwZDEwZDVhYjI4NDQwYTk0YjQxOGQ1MjM3OTBlY2Y3YTFkZTNkMDA4IGxlZ2FjeS10cnVuaworNjczNzcgZjM3YmY1NWRiNDE2Y2EzY2MwZGU4MTM5ZDk2YmRlMmY4YzE3NDkxNCBweTNrCis2NzM3OCA2YzA4NzFmMGM3YTY5ZDU0MmZmNTExMDJkZDE5MWNlZjVjYzc2MjVhIHB5M2sKKzY3MzgwIGRmZWRhMGQzZDYzNmQ0MDE3M2E3MWNkYTNjMDIzMzA1NTg0NjAwNjcgcHkzaworNjczODEgNGNmMDNlMTQyMDBjODlkMDU0ZDI4NWJjZTk1OGZlYWYyNjg1NWExMyBweTNrCis2NzM4MiBlZmI0OWRmMGQ4OTlkZjlkMmEyOWY2NjA1MWNhYmM3Y2U1MDZjODM5IHB5M2sKKzY3MzgzIDM1MjhiNWMxNjkzODc5OWI4OTVjMzM3YjIzNmRhODdiZTg1OGJjZjIgcHkzaworNjczODUgMzBkMDFhNWY1MTdlZDdiZTUxMjkzNzdjMjJlNjM5ZWY4ZTBmZTk5ZCBweTNrCis2NzM4OCAyZDNmMWQwYzJhMTBlY2Q1N2FhODgzODEzZTU3ZTI0Mzk0MWMzYmI5IHJlbGVhc2UyNS1tYWludAorNjczOTEgZDM3YjRmZTUxMzI4NzU0MWRlNWI4OTc1Y2E4OTc2N2E5NDE4NWU5ZiBweTNrCis2NzM5MyA5ZmQ5Y2Q4NTI2MzFhZDZmMzEzNzc3M2FjMTI3YTY2OWZiMmQ1ZDI5IHB5M2sKKzY3Mzk0IDY4ZjNiZWI3ZWVhZGYxYjAwMTk1OTFmNDIxZTg0ZTNkMzFmNzhlYTcgcHkzaworNjczOTUgNzM4OTVlYWRhOGJkMWIyMjMyNmY3YTkyMDc1M2U5NGRiNmMwMTBjNyBweTNrCis2NzM5NiBhMGNiZTQwZGFjOGYzZjQ3NWNiN2NlYTkwZjY5NDQyMzhhMzI3Mzk1IGxlZ2FjeS10cnVuaworNjczOTcgNTY4NGNlOTZlNjM5ZjdlZTA5OGYzM2MwZWQ0ZmZlZjQ2YmRjMmRhOSByZWxlYXNlMjYtbWFpbnQKKzY3Mzk4IDg1YjFkZTg1NWExM2ZhNGFmZjIwNTYyYWQ4NjAxOTk1YWNhNjk0MjEgbGVnYWN5LXRydW5rCis2NzQwMSBkZWIzMDY2OWMzNTVjMjhhMWE1YjhhYTU2NjdiZTc4ODliODI0YTNlIHB5M2sKKzY3NDAyIDc5N2JkMzMzZWY2YmEyMmU5ZjNhZThmMDllZmNiMWU4MzIxNjk0ZDggcHkzaworNjc0MDYgYTNhNWY2NDA0YWQ1YmEzY2UxM2NmNmYzZGNmYTUyNDk0NGQ5NDg2OSBweTNrCis2NzQwNyA1Y2JjM2RkNDQ5MTYxMDg1M2QzMTg5MTkzYzI2OTM2NWI1NzU5YTU1IGxlZ2FjeS10cnVuaworNjc0MDggMGE5OTRiMzJkZTlmZTUxNjIwYjQ3MWFkNDdmZDg2NTdiYmFjNGYxZiByZWxlYXNlMjYtbWFpbnQKKzY3NDA5IGY4MDQ0YjhmZjZlZWViYmFmYmNlZDA1Nzk1ODk4ZjU1NjFjMTFhYmUgcHkzaworNjc0MTAgOGIxNGZjNWU1ZjNmNWQzOWMzNDcyZmQxYjJhOWI0ODhhMzZjMmY5ZiBweTNrCis2NzQxMSAzOTdmYmQ2YzM0NzFhMzEwMDJjZTEwMjIwOGExYTc4NmMzMGQ0OWQ5IGxlZ2FjeS10cnVuaworNjc0MTIgYzU0NjQ5N2I0MjFhMWEyYzU2MzRlMTE1ZmY4NmZiZDhlYmU1MzAwNyByZWxlYXNlMjYtbWFpbnQKKzY3NDEzIGI1OGE0MzUwMDJjMTExZDkzODFlODQ4ZmIyYmQwNDE4ZjVmNmJkYzMgcmVsZWFzZTI2LW1haW50Cis2NzQxNCBmY2FlMTRiY2VhNzMyMzc4NWJlYzMxMDc2MGIwMzRiMWM5ZmY4NzUwIGxlZ2FjeS10cnVuaworNjc0MTUgMzgxYzYyODE5ZjJlYzgyOTc4YWNjOTEyYjAzNTY5MDc4NmY2MWI3ZCByZWxlYXNlMjYtbWFpbnQKKzY3NDE2IGM1MTI2MmFkNTYwM2RlOTcyYWRkNzlkNWJlYjkzNWUxYTAxNDU5OTQgcHkzaworNjc0MTcgMzgwM2I2YzRmZjhmMzIwMTA1MDY3ZDI1NGY4OTM4ZjA5MzQ5N2IyMCBweTNrCis2NzQxOCAwNmU2YzM5YWQ4MDI0Zjg3ZjlhOGE2NDQyYmY4ZDYzMmMzM2RkMGQ1IHB5M2sKKzY3NDE5IGNjOWVmYjlmOGU1N2Q4NGQwNzA5ZWI1NDE5MzhjODNhZjBjNDFjNjMgbGVnYWN5LXRydW5rCis2NzQyMCBiZjJkMTkyOTNkYjc3Y2EzYTBhYWEwZmMyYzExN2E1YjBkN2UyNjdiIHJlbGVhc2UyNi1tYWludAorNjc0MjEgYTkwMzUyZTU5Y2U2MWQzMmY0MzJkNGU5Yzg0NDgzMmM0NmYzNWY5NCBweTNrCis2NzQyMiAxOGFhNzI4ZTk1MmQ1MTFmOTJiMTE2N2E5NzllZDIyMzAwZTRhNDA1IHB5M2sKKzY3NDIzIDBiM2I0NGI4Yzc4MjYyNTdhMjc4MWZiYjk1NjhlZGJkYmU4ZjczYzUgbGVnYWN5LXRydW5rCis2NzQyNCA0NmI1Y2YzY2FkZTRhZjc1YzY1ZWNmZTEyMWMwN2U0ZWI3ZDhhODczIGxlZ2FjeS10cnVuaworNjc0MjUgMGZjZmUxOGZmOGY2ZDU3MDY4YWE0YjczZWQ4OWJiZTFlMTcxOWI4OCBweTNrCis2NzQyOCBjOGFlZDlhMzZlY2I3Zjk4YzQ4MDc4OWQzOGYzNzVlM2FkZGU0YjAwIGxlZ2FjeS10cnVuaworNjc0MjkgOGQzMjlkMmEzNjRhYjUyNWNiOWNmMmM5MTEyMGM2MDE0MjI5NjBkOSBweTNrCis2NzQzMCAwNjA3Yzk3YTgxMjRiNGUzODUxZjhmNGE0OTEyMTY0ZDc3MjYyY2M0IHJlbGVhc2UyNi1tYWludAorNjc0MzIgMjNiNDM0OGZkZjUyZmY2ZWNlMDU5ZWM3ZDFiMGQwZjU4Y2RkYjU4MyBsZWdhY3ktdHJ1bmsKKzY3NDM2IDU2MGIyZjUyOTUyYzg3YzRjODJkN2MxOTJmYzJiZjM1ODM4NjIyMmIgcHkzaworNjc0NDAgMDVjMTJmNmQxNDA0MDljMTA5OTgxZDc3ZDk4ZGU4ODJkZWQ1ZGNjMCBsZWdhY3ktdHJ1bmsKKzY3NDQxIGNjMjk0ZmM5MGY2YzRkY2VkOTE5YmRhNGRjYmUyMjY0YjU3MzgxZGQgbGVnYWN5LXRydW5rCis2NzQ0MiBlZjBjNWNhNDU0NDEyMzQ0Yzk2YTZjMjAyOGIwNzViMmMzZTUwMDEyIGxlZ2FjeS10cnVuaworNjc0NDMgODAzN2ZhN2FjZTllZWMzYzkwYjgyOGMxNTA2ZGQxZTg1OGRhNmViNCBweTNrCis2NzQ0NCBlMjlmNjZmZGI0MmMyMGY5YTdlM2QzMjY0NjFlNjhhM2JkNTI5OTVhIGxlZ2FjeS10cnVuaworNjc0NDUgZjlhYTg3ZWIzMzRjMWVkYzQ2M2E5ZWNiN2ExNTMxMjNhOGI3NzBkOCBsZWdhY3ktdHJ1bmsKKzY3NDQ2IDM1NjlmN2IwOTAyNTZlMGFhMGVjZjdlM2ExNDg5OTY3NGQxOGEyOWEgcHkzaworNjc0NDcgMjc3YThmMjk0NGI0MjM1YWVlY2Q0ZDcxNWZjMzI0YjlhMDgwOWFjOSB0bGVlLWFzdC1vcHRpbWl6ZQorNjc0NDggYmVmM2M4NWE5MDhkNGNkZGQwYjFhZmQ2MTA2NTU2YjgyMjY4NWI3NyBweTNrCis2NzQ0OSBhMWRlOTFhZDkyODgyZGRiN2IyOWRlNGJjOGViM2RhOWZkYTRlY2RlIGxlZ2FjeS10cnVuaworNjc0NTAgN2ZkZjkzNmIzMGJmNmYyY2FkY2JlM2M1ZjQyMTU4MjI2ZDMxMjJlOSByZWxlYXNlMjYtbWFpbnQKKzY3NDUxIDNiZjE4YmU3Y2U1YTViNDg0MjdhZTY0ZTFiOThlOTQ0MjgyZDI0MWMgcHkzaworNjc0NTIgZjFlYmJjMTg2YzExMjc2M2RlZWExNjEyN2RmN2NlZDcwOTkyNGU5ZSByZWxlYXNlMjUtbWFpbnQKKzY3NDUzIDk0MmI0YTJjMmMxM2JlOWFmNTk2NjlmODhmN2JhNDVlZjQxNDAxZmQgcmVsZWFzZTI0LW1haW50Cis2NzQ1NCAzOWE1NmQzNTUzNzZhYWZmNDkyZTVmMTlmZjYzNWNmNDE1NjVjNzBhIGxlZ2FjeS10cnVuaworNjc0NTUgMzcxMmQxZjZiZmQ1NWI1YTU5OThiYzA0OWVlNjBkMzIyNzBiN2JhOCBsZWdhY3ktdHJ1bmsKKzY3NDU2IGI5NjJkMDRiYjdmMDMzNGFlZDFkZjhhNmNjZTFjYjZjNGI3NGU5ZmQgcmVsZWFzZTI2LW1haW50Cis2NzQ1NyA3ZWQzOGFhMTBkZTZhNTJlNjg2NDY4MWIzMzRlZGEzM2I3MDRmNmM5IGxlZ2FjeS10cnVuaworNjc0NTggMTg5ZGVmMDYyNTNjNmE3YTk3Mjg1YmQ0N2U5NTc0N2I1YTc0YWQyZCBsZWdhY3ktdHJ1bmsKKzY3NDU5IDAxZjZlYTdmN2E3NTgxZjRhNDk0ZmM5ZjZhZTg4ZGE4NDUyYjAzZmMgcmVsZWFzZTI2LW1haW50Cis2NzQ2MCA3NWE4Y2FhMjQxODY1OTU5ZTViNjVmZjM3ZTJkNWE5NmYzOTFlYTI4IHB5M2sKKzY3NDYxIGVkOGFkZmVmMjZjNjViM2E4ODZjODNiMGJkMzRhNjI2Nzg4ODFmNjcgcHkzaworNjc0NjIgNmU4OTEzNTNjZTk2NThlYmViZDNmNjdlNzkwYzI5YWM0MzJmYWIwZiBweTNrCis2NzQ2MyA2ODE3MzNiNDlmYTIzOThhZjhmYjgxZjk4Y2IzZTE2MWViNmI1NGMxIGxlZ2FjeS10cnVuaworNjc0NjQgNjBlNzc1ZWFhYWVlZThhOGVlYzZmMWM1YzY5NzIzMWNiZTBmOTEyYiBweTNrCis2NzQ2NSAzZTU5OTVmNmFiOGY2YTZjNDRlZThlYjRiYTg3MjkwMTE2NjY5ZGYzIHB5M2sKKzY3NDY2IGFiMTJkNzE2YTdhODFlZDRhMDRiYTY3MDMwMzkzYzc3Mzc0MDBjNWIgcmVsZWFzZTI2LW1haW50Cis2NzQ2NyA3ZjhmNzFkYzg2Yzc0MDk1YzZhOTFhNDFlM2Y3NjIzZjNmMThlODc3IGxlZ2FjeS10cnVuaworNjc0NjggMDczMmQxM2VkMDY3OGFkODU2NWI4ZTkwNDAwMjk0MmRiODAzNDFiOCBweTNrCis2NzQ2OSAwZjc3MjVlMTliYzNiOTNmMzI4MTg2NDI1MGZiZjU2MjgwODEwMTkwIHB5M2sKKzY3NDcwIDQ0NjFmMThmMjY0M2M4ZmM5OWYxMDJiNDFlMTc5MDcxOGQ5NTExOGUgcHkzaworNjc0NzEgYjFkMmFmNTJkODAxNTM0YThiZDgyYmU5NzQ0YmRkYWUzNDRmZGZmZCBweTNrCis2NzQ3MiBlZDg0NzZkN2Y2NGE1ZDYxNjUxODEwNjQyZDdhNGIzNDRlY2EzNmNkIHB5M2sKKzY3NDczIDA5YzJkMTVlNGQxZGI2MmM5OWZhMTM1NTFmZDU3ZTcwYmM0MTdmZmEgcmVsZWFzZTI2LW1haW50Cis2NzQ3NCBjMTgyZTNiOWU5ZmMzYWJkZmQ1MGRhNWI2ZmM1YmE3ZjdkZGNkNjhhIHB5M2sKKzY3NDc1IDQwZWM2ZDI4OTU1MmU3ZjMzOWNkZjA3N2Y1OTczMzVlNzI3MGQ3MDYgcHkzaworNjc0NzYgNmExMjFmMDRiYzdkZjZhMjQ5ZmE5OTkzNjAzOGIxZTdiZjBhNTEyZiBweTNrCis2NzQ3NyBkMTcyZGQ4ZDllMDllYmQ4OGY1MTQ4MWVjN2Q4NTkwM2FiNzc5ZWY3IHB5M2sKKzY3NDc4IDg2ZWUyZTBkNGQ0MTU0OTU1MDcwM2ZiNGM3ZjAyYWI2N2U0MTFlNTMgcHkzaworNjc0NzkgNzhiMGM4ZGUzYTk4ODM4MjEzMzgxZTA2NTQ2YjA0Y2ExNDljMzg4NCBweTNrCis2NzQ4MCA5YzgxYzNiNzExMTk1MmYxNGVhMjhlYjMyMTA2MWUyYTQyNGQ5OWY1IHB5M2sKKzY3NDgxIGNkZGEyMDkzZjZmNTMwOGI2MmJkMjk2MzQ5NWQxMmI2OTkxNTM1MjQgcHkzaworNjc0ODIgY2M1YTk1ZjBmNTZhNTM0ZjVmYjQzMGU5MDgwYjcyN2ZkNzM0MjVkNSBweTNrCis2NzQ4MyBjODI2ZTQ2MmZhNTFmNTNmMjE1ZGZiZjY2MTVhMmVlYjdkYjgwYTNmIHJlbGVhc2UyNi1tYWludAorNjc0ODQgNWQ0ZGZlZWRkNTEyYjMxOTQ0MzA4ZGNjNjlmZmY0MTQxMjMwMDVlMSBsZWdhY3ktdHJ1bmsKKzY3NDg1IDA0NTI2YTIyMmNhZjI0M2IzNTRhNTUwZDEzZDEwOGY2OThlNTM4OTkgcHkzaworNjc0ODcgY2Y0N2Y3YzdkZGIzMjZlMDY4YTk0NjhiYzRhNzE4N2EwNmNmYjg1NyBweTNrCis2NzQ4OCBkMWRlMzAyZTZlZmM1Mzg2MTY4MTE2NzIxZjVlY2IzZDFlY2RhMjk4IHB5M2sKKzY3NDg5IDgxY2E3YmI4ODA0ZjAyYzU4Y2I5OWUzYzYxOTIxNDNjMzlhYTA4ZmMgcHkzaworNjc0OTAgMTM3YjUwZWU5NmQ1YzFhZDE4MGFlNjQwNjk3YTljZDRhM2Q0YmFmYiBweTNrCis2NzQ5MSA1NGZlYWMzZDExNjkwNjQ5NzQzNmM1N2M3Yjg4NzgyMzQ1NjY3ZTk4IHB5M2sKKzY3NDkyIGY0NDdhMWRlMmZhZTliMDMzMmY5NzAzNTU0ZDJkYjMwNDczMjk0MmUgcHkzaworNjc0OTMgODQ1MzA1YTNkYTM2M2ViYmQ4ZmZjMzNhMjI0OTdjZWExNmU2YTMxZiBweTNrCis2NzQ5NCAzMzQ0ODA0ZjMyN2Q2ZTViNWUxZTJlZmEzZWUwNzk2MWE4YTA2YjZiIGxlZ2FjeS10cnVuaworNjc0OTUgNmE0Y2M2YmExYzE2YWVjYmIyZTlmZWUxM2ZkMWY4YTNhODk0MWZjMiBweTNrCis2NzQ5NiBhM2QwMjk5YjRiMWRhZmJhYTg5Zjc1OGZjZDM0YzU0ODVlYjQ3ZTVmIHB5M2sKKzY3NDk3IGM2YTRhMmNjNTYxMjZhMzk3NDVlZTdkZjgwNzJhZTA5MTI3ZjRhNGYgcHkzaworNjc0OTggNTg4YTk1ZWY3OTcxNzZhNTU3OGNjMzQxMzI5ZGFiZDdhYjQxY2U0ZSBsZWdhY3ktdHJ1bmsKKzY3NDk5IDEwN2Q0NTMxNzliZTJlZGU3ZTc4ZjdhYTg2NzhjMjJjNjIwNWJkNDMgcmVsZWFzZTMwLW1haW50Cis2NzUwMCA1MjM1ZGNkYTkwNzZmMjVhOWNkY2M3MjZhOWIzYWMzOTQ3OTFhYmRiIHB5M2sKKzY3NTAxIDJhNWVjMDYwYmI5OTgxOWI2ZDVkNWU1MWI2MGQ4ZGJhOTdiNGE2MWMgcmVsZWFzZTMwLW1haW50Cis2NzUwMiA1OWFkZmU0MzY5OGRjODQ4ZDgzMTE1MjdjMGRlMzQ0NGJlNmZkYTkwIHJlbGVhc2UzMC1tYWludAorNjc1MDMgYTY1MzIxNDYwMjcwN2JkZTBlNTEwNjRkN2M3Nzg5Y2UyOTVlNDQzMiByZWxlYXNlMzAtbWFpbnQKKzY3NTA0IDk4MDdiNzlhMTYyZTZmZmIwYmE0MmUyYzY5NTg0ODQ3YTZhN2UzYzIgcmVsZWFzZTMwLW1haW50Cis2NzUwNSA1ODljODhiMjBiNWI3ZTAwNzc5MTAxYzE3ZDE0OTFhMzNhOGZiOWM1IHJlbGVhc2UzMC1tYWludAorNjc1MDYgNjhhNmUzYWM0MWMxOGM4YTE5MGFkYTNhYTE3NjQ0YjYxMGRlMmM1NyByZWxlYXNlMzAtbWFpbnQKKzY3NTA3IDlhMmIwNjM4NzBhMzA5MWYyMzAxOWY3YmNjYzlkNDVhNjQxM2RiNDYgcHkzaworNjc1MDggNzViOGVlMDYyYjBkNGZjOTE3YjEzNzM5M2EyODlhMGY1NDhjMWNkNiBweTNrCis2NzUxMSA4NzhkNDA0NjhjNGU3ZDJkMTI5M2ZhYjZhNjk2NWFmMjFiMTRmOTI5IGxlZ2FjeS10cnVuaworNjc1MTIgZTA3YTMyMmVmNTkzNGNlMzViNDk2OTllMzkzOGUyMWZkMzEyNjMxMyByZWxlYXNlMzAtbWFpbnQKKzY3NTE1IGNhYmYzMDNlNzg3YWE1Y2Q3MjA5YjQwZTNiMmNhYmEzZWU3NWM1YTUgcmVsZWFzZTI2LW1haW50Cis2NzUxNiBjOWRhODVjMTk3MTliOTU0NmRhN2JmNmU2M2NhZjFjMDVjZDY0OTFlIHJlbGVhc2UyNi1tYWludAorNjc1MTcgNTMxNDU3Y2ZhM2UyNDNlMWZkMzA4NTQ5NTZlNTU2NGE1ODE1NTZiYiBweTNrCis2NzUxOCA3MWFjYTg1M2IyNDQyMTA2NmZkNDk0NzAzN2EwYmYzNTE4MGNhM2FmIHJlbGVhc2UzMC1tYWludAorNjc1MTkgZTc5M2ZjM2M4YWJlOTVlMzE5OGY4NDkxYzU0OWNiZWJmZTUxNGVjOSBweTNrCis2NzUyMSBmM2M0ODVlMmI0NTEzNjY1NzgzZGI5MTliOTk0YjE4ZWEzYzBiZDNkIGxlZ2FjeS10cnVuaworNjc1MjIgNDhmMjlkODk0YjNjYzdhZmJhZWI0YWY1MTEzMDgxYTc2NGJlMjMyOSBweTNrCis2NzUyMyA0MjU2MDM3NGFiMjUxYWJhZDM0NzNlM2QwZDI4NTIxODNlMzc3MzQ4IHB5M2sKKzY3NTI0IDA3ZWZjZTEwN2FhZWYyZTlkNGVjYjkxZWQyMjA2YzE4Njk0OGI1OGMgcmVsZWFzZTMwLW1haW50Cis2NzUyNSA4NTZmYzNlYTJkZGI4NzM5N2JjYzRhMzg4NmZjMjAxMzhjODU5ZjAzIHB5M2sKKzY3NTI2IDc1MjA3YTBhOWUxNTg0NTBlMDU5OTc1YjAxMmJiN2ZkMmY2MzFiMWYgcHkzaworNjc1MjcgNDU4ZDdiYzEyOTUwOTE5NzlhZGI2ODI4NGVhMTFhZjYxNTg1OWUxYiBweTNrCis2NzUyOCBlOGFiMjc1ODJiMTg0M2YxODJhMDQ3YTQ1NmUyZTFjOTljZjY0M2MxIGxlZ2FjeS10cnVuaworNjc1MjkgM2U2NTAwMzJhNWQxY2JiMTIyMTQ0MmI5Y2ZkMTJhNzI4ZDQ5YzBhYyBweTNrCis2NzUzMCBjMTE1YWQ1OGVhZGZlOWEwZmJkOGI2OTYzOGMyZTEzMmM5MDEwMmZlIHB5M2sKKzY3NTMxIGY2ZTUzYzMwYWU5NmM1YmMxZDM0YTA5NDA1ZjA0ZmM5MGEzOTYyNjAgbGVnYWN5LXRydW5rCis2NzUzMiAyMzE2ODAyNDRjMTdiMzIzMGM1YzBhOTM4Y2Q3ZTdjNjNlYmEzZTEyIGxlZ2FjeS10cnVuaworNjc1MzMgNzRiZmViMzY0YTIzYjM3ZmRiMzlkNjEwYjFhMDY1YWM5OTg2ZmEwMiByZWxlYXNlMjYtbWFpbnQKKzY3NTM0IDEwM2M2OGNjMjllNWUyZjY0YmIyOWY1NTQ5OWE4N2NhY2JlNDQxYWQgcHkzaworNjc1MzUgODllNzM4Yzc5MmMwYmM4ZGMxNjFlZmRjYzk2ZDhjYjY1M2RmMTZhYyByZWxlYXNlMzAtbWFpbnQKKzY3NTM2IDQ3OTBiMzFkOTI1Nzc3ZjJmMWM2NjgzZjU2NGIzYjFhOTU0MWI3NjIgbGVnYWN5LXRydW5rCis2NzUzNyA5ZjhlNTFmZGNlYTBmYmM2NmJjYjhkODFkYmQxODUxYjBkOTgyNzY1IGxlZ2FjeS10cnVuaworNjc1MzggY2Q1ZjU2YTgxY2NlMWQxNjVlM2RmYmM1YjhhNjBjODA5MGQwYTk2NCBsZWdhY3ktdHJ1bmsKKzY3NTM5IDNlY2E1YTczNjUxNjEwYWE5MzFlM2FkZThiN2E3M2RmNzdlYjBiMjUgcHkzaworNjc1NDAgMjdiYTA5OTU3NzUxNDNlYmE5MTQ1YWQ4NTc3YjJmMTkxNDJlMGZjNyByZWxlYXNlMzAtbWFpbnQKKzY3NTQxIDY5Mjk1NjNkYWQwMDNkNjUxZjYwZTNlYTFjOTY4Mjc0YzRkNmNhM2YgcHkzaworNjc1NDIgNjc4NjA3Y2UxMjJmYTg3NzdjMDRjZDI1ZjA4Nzc4NWUzOTEwNzJiZCByZWxlYXNlMzAtbWFpbnQKKzY3NTQzIDU4OWNkZTYxNGI1YmZlNGJjNjFkNmIwNTVjNmM1MjE0YzdlYmM2NjEgbGVnYWN5LXRydW5rCis2NzU0NCBkZWQ5OWU0ZjZiM2RiYzEwNTI1ZTg2MDMxN2JmOGUwMDRjMGQyNTgwIHB5M2sKKzY3NTQ1IGE5ZDAwNjdjYmVhNDYzNzVjZjIzMmZiYjZiYzYwZWVmOTljZWI0MzEgcHkzaworNjc1NDcgNTRjMTlhMWJiYWJkOWU1ZWM5OTVlMDgzNzA3ZDJjNWQzY2E5Mjk0MSByZWxlYXNlMjYtbWFpbnQKKzY3NTQ4IDRlMTNiMzdiMzcyM2I5MjE3M2Q4MDg4YzQ4MzM4ZTc3MWNkN2E3MzIgcHkzaworNjc1NDkgOWJiODZmN2ZiOTQ0Nzk1YWY5ZjkzZmMxMTA1YjhiOGI4ZWM3OTc3YiBweTNrCis2NzU1MCA4ZGQzNTZiMTRiMGQ3ZDU2ZTEyODMzNzcxNzQwMTM3OWJjOWI5ZDk5IHB5M2sKKzY3NTUxIDcyOWRiOTQ2NGVmNjg4YWEzM2JhMmM3OWNkNmIxOTI4ZWE1NzI4Y2EgcHkzaworNjc1NTIgYmRiMDJlYWQ3NTliOTc4M2M2YWYyZGJjZTBlNjUyODg5ZmM2NmZlNCBweTNrCis2NzU1MyA4NTE5MGZmMjI0ZTBjNDcxYTZhMTYyYmFkYzkzYzc1NjFkMDBkYmFkIGxlZ2FjeS10cnVuaworNjc1NTQgYzMxOWQyNDc0ZjU3ZTBmY2M4ZmU1OGJhZjAyMTJmNDNlM2MzMTE3MCBsZWdhY3ktdHJ1bmsKKzY3NTU1IDI3OTQ2ZjFlYjhmYTU3N2ViZTI4ZjQ3NmQ0Y2JlMDE5NDZmYTViNjAgcHkzaworNjc1NTYgYTBjZWEwMWVjZTUzY2U2ZWFmZjYzYTkxNzM1NWUwNTYyZTQwNDhiOSBsZWdhY3ktdHJ1bmsKKzY3NTU3IDc2NTk4NDFkMjcxNGRlZDBkY2ZmZjkyYTUzOTI2N2U0YzQ3MjQwMjIgbGVnYWN5LXRydW5rCis2NzU1OSA4NmQ4YTUyMmY0NDA3M2QxMjExMzY0MjJhNDY0ZThkNjRlOGRkZDNlIHB5M2sKKzY3NTYwIGI0N2I3ZDljNTkzNjA2YTdhMGExY2U2MDg1MDczN2U3MTYxYzBmMTIgcmVsZWFzZTMwLW1haW50Cis2NzU2MSA4OWJjMzFlMDY0ODkwYmY4YTVjOWVhNTg1YjI4NTVjNmMxYjRmMDQyIHJlbGVhc2UyNi1tYWludAorNjc1NjIgMDEzNzE4OTdjYjE5MDAzNWQ1NmJiZjRlNjNkMjFiN2JjZTUwYzc0YyByZWxlYXNlMjYtbWFpbnQKKzY3NTYzIDVlZjhiNWE3NGVmYTIxY2RiOWRhNTg3YTVhMDQ3NTBjYTEyZTk0M2QgcmVsZWFzZTI2LW1haW50Cis2NzU2NCA4NTlmNTUwYjQwMDNhY2ExZDI2ZmQ0ZTdiODdiYTQwOGMwZGU0ZmM2IHJlbGVhc2UyNi1tYWludAorNjc1NjUgM2M3ZWVmMTg3YmVhMzRkYWFkMWZmYTMzZDFlYzM4YjQxNTgyYmExYSByZWxlYXNlMjYtbWFpbnQKKzY3NTY2IGYwOGQxNDQ4YjkwZmY1ZDZjMDg1MzBmZTkwZTk4YzhmYjYzZWE4NmYgcmVsZWFzZTI2LW1haW50Cis2NzU2NyA2ZTUxZmUxYjdlZDllYTU0MmZhMmNlNmFlNmIzOTEwNGJjMzg4NmVjIHJlbGVhc2UyNi1tYWludAorNjc1NjggYTE3MmVhYTRkNWVjMTA0OTUzZDBjMWQzZGJhMGFkY2UzNzYyMjUxYSByZWxlYXNlMjYtbWFpbnQKKzY3NTY5IDExYmY1OWZlMTBiOTI0MTA3YjdkYTUyZWNmNTI2MjgzMGE0M2UxOTkgcmVsZWFzZTI2LW1haW50Cis2NzU3MCAyZTI2ZTgyMTlhYTQyMGM1NGViNWIwNDBmMTEwM2FmNWQ3ZDc2ZmMzIHJlbGVhc2UyNi1tYWludAorNjc1NzEgMzYzNmZlOTU3MzJjMTM3YTMxNGI5N2ZmZjFhNmUyZmJjOTllMjA1OSBsZWdhY3ktdHJ1bmsKKzY3NTcyIDIwYWIyMjYwZGM5M2JjMDcyZGI0N2RhYTk0MjY5NzA1MTM5MWFlMzIgbGVnYWN5LXRydW5rCis2NzU3MyBjNDM0Yjc3MTQ3N2JmYTFiNjQ3OGYxYjM5NGNjNDUzOGI1NDEzNGYzIHJlbGVhc2UyNi1tYWludAorNjc1NzQgYjM4ZWFiOGM5OTA0ZGE3ZjJiZGY3MTZiY2IwMTRiNTJmNzg0Y2Y3ZiBsZWdhY3ktdHJ1bmsKKzY3NTc1IDIwY2Q4Y2Y2MTM3M2Q5MzU3ZDNlZWY5ZDM2NGQ4ZTc3M2Y1MGVjODQgbGVnYWN5LXRydW5rCis2NzU3NiBjNDlkNmQ3YzE4MWUxZjJmNGI5Y2Q2ZWViYjlkNGQ3ZjczYjU1ODljIGxlZ2FjeS10cnVuaworNjc1NzggMTAwZTQxNjBhZGZiYTI5ZjNiYzAyOTJiNDA2MGZjZTAxY2JjZDdkOSBweTNrCis2NzU3OSA5NGI0Zjg4ZTVmNmJlNDQ0NWI1ZTRjZGQwODQxMGM3NjY1MDRjMWU0IGxlZ2FjeS10cnVuaworNjc1ODAgMDA3OTY0ODA5ODAzZmYzY2Q3ZWYwZmE1ZTkyOGQxNjdiMDMyMTlmMSBsZWdhY3ktdHJ1bmsKKzY3NTgxIDkyY2I2ZTVlYjQzY2U2MWYyNThhMGUwM2M5ODI2NzA3OWRmYzNkZTAgbGVnYWN5LXRydW5rCis2NzU4MyBhM2FiOTUzNDViNTJiMjRjMmE5NzVlZGQzMGI1ODI0NjE1Njg3MjliIGxlZ2FjeS10cnVuaworNjc1ODQgMDU1MDQ1ODJjZWQ2N2VkM2YyODAyNGQ5YjY2YzY5YmJmMjU0Y2ZjZiBsZWdhY3ktdHJ1bmsKKzY3NTg1IGMwNjE4M2IyZDA2ZjQ5MDQzNGRlZWRkOTcyNTE3YWU0YmEzM2M2ZjYgcHkzaworNjc1ODYgMDk4ZGJkOTczMTQ3N2M1YzY0NmIxZjkyZTVjNmQ3YjgzZTcwZDkwNSBweTNrCis2NzU4NyBmZjIyNjNkZTBkNmY0YWI1YmJjOTU2YWNhYTgxZDZhZTZhNTFlMzA4IGxlZ2FjeS10cnVuaworNjc1ODggN2E5MmExNjRmYzEyZjNjNGRkMDAwNzc3NDI1MmI2ZWFjNmY0MjU5ZCBweTNrCis2NzU4OSBkZTMwOTRiYjE0MjFkN2Q2N2I3ZjFlMDRjYmMwZjQ5N2ZmODBlMDQ0IHJlbGVhc2UzMC1tYWludAorNjc1OTAgNTdiNWM0NjM5YTVkMjNmNGVjZjVlYzE0M2Y0N2RiODZlYzdmNjFhZCBsZWdhY3ktdHJ1bmsKKzY3NTkxIGMwMzAxYjU0MzBkNTI0YjMzYzM0NDQzMjhmNzVmODMwZTYzMzFhZTMgbGVnYWN5LXRydW5rCis2NzU5MiAyMGExY2NhZGRjYWVlZTc3NjA4YWY2YmE1MGYwMjhhYzdmY2QxMTRmIHJlbGVhc2UyNi1tYWludAorNjc1OTMgYmJiMTAxYTVmOGNjZGU1ZGVjNTdkNTM5MDJiOWJmYzg0OWUxOWJkOSBweTNrCis2NzU5NCA2NTFkZmIzNDA1ZDIxOGY0YmMxNjA0MGIyZDA2ZDlmMTNkY2EwZmY1IHB5M2sKKzY3NTk1IDYyNGI5ZWFlZGI4MGYwOWFhY2JiZmFhODczODkwNjQyZDE1NmJkOWYgcHkzaworNjc1OTYgMjVmMjIyYmVmZWM0YmRhZWViM2E1YmM5NWY1MGE4OWZjNGFiY2Q1OCBweTNrCis2NzU5NyA3ZjA4MjBkNzMyOTkzN2E1MDQzOTczMTYzZDVhZWU3NjIyNDk4ZmU4IGxlZ2FjeS10cnVuaworNjc2MDAgNGM5ODQ0Y2YyYTNmNzg0ZTAzYmEyMWE1NjIxNTIzZGVjMzNjNTczOSByZWxlYXNlMzAtbWFpbnQKKzY3NjAxIDFmMmEzYjEzZTg2ZDdjNGJhODcwNzNlMDE4ZTYwY2ZkNDc1M2ZiMmUgbGVnYWN5LXRydW5rCis2NzYwMiBhYmEyY2UxNjNiNzE4ZDExYWEzY2M3OGIwNzYyYzA4NjUzNTQyYzkyIHJlbGVhc2UzMC1tYWludAorNjc2MDMgYjAxZGEyNmM0YmY5NDAwZDdlMTEwMTQ0ZWYxNzhiZjk2OGZhNjY1OCBweTNrCis2NzYwNSA4MzIzZjJkZjU2MTc0NzQ2ZGE0YTU0Y2M2YWM2NTMzYmJlMzE4YTc3IHB5M2sKKzY3NjA2IDJjNzhmODE1ZTE5MmFiZmY2ZTE0MjM1N2YwNDMzYTg3YjE2MDZhNGMgcHkzaworNjc2MDcgYWM0MmE4Zjc1ZjkyNWI3NmI5N2Y5YmUwYjVhYjc3NGJiYmY4MGU3MiBweTNrCis2NzYwOCBhOTA2ODIwM2FmZDVjMDAzYTQwZTU1NDgxODYyYzgwMjgwODZmMDdlIGxlZ2FjeS10cnVuaworNjc2MDkgN2MzYWYzMjAwZTM0YjcyNTc3MWJhYzc1MDUzNDYzNTQ0YjY1OTRjMyBweTNrCis2NzYxMCA2N2NlNzQ1YTc0N2E4ODQ0MTY0NGQ2NjNjYTk2Zjg4ODg5ZTNlNDRjIHB5M2sKKzY3NjExIGJhOGZlM2E0MGE1YmY3M2Q0NTMyNDY0MmJkM2Y1NTZjNjhhZjcxMDAgcHkzaworNjc2MTIgNjE5NjM1NDFjYmY1YmQ5ZmJmNzUyYTI2NjE4OTVmODFmYzQxNzBiMSBweTNrCis2NzYxMyBlMDA3M2I3NjUwY2MzY2FlOWI3MTFjY2ExYzA1NWEzZjRjYzU2ZWVkIHJlbGVhc2UyNi1tYWludAorNjc2MTQgZGQ1ZTFhMDQyZGJhNGZiYTNjOTQwZjc1NWFhMmY3YWY5MzY2YmE5NiBsZWdhY3ktdHJ1bmsKKzY3NjE1IDBiZTEwMzkxMzQ3YjljZGQwZWZlYzU3MmFkYWY2NmQ5NDE5NmM2ZDIgcmVsZWFzZTMwLW1haW50Cis2NzYxNiBiMTJkNmY2MDY2MThhYmZlZmRhNDU3YmNjY2RmOWVmN2M2OWI5NDU5IHB5M2sKKzY3NjE3IGNlMzYzODg3MjdhNzhiNzQ0ZTIzZGM3MzU1ZTMxM2U3ZWU5YzNkZGMgcHkzaworNjc2MTggNTJhZDhhNzI0NzJlODQ2NmNjMzZlNTcxNzVjYjE1ZWRkN2Q2ZDQyNiBweTNrCis2NzYxOSAxMzQ4ZGMyNDRjYTM0YjdiNjUxYjc5MTJmZDY2ZGEzMjUxMDg2MzU4IGxlZ2FjeS10cnVuaworNjc2MjAgM2RlNzIwY2QxNzY2YTUyZTNhY2NiMGJhZWZhMmRiMzFjMDBiNmFmMCBweTNrCis2NzYyMiA2ZGFiMjU4NzUyYzE4YjA0YTg3YzYyYjViODhjOWVkOWZmMTcxOGJjIHJlbGVhc2UyNi1tYWludAorNjc2MjMgMTY5M2ZkOTRkODI5ZDFmMTA3NzcxYzM0ZDg5M2IxMTFmOGI4NWY2MSByZWxlYXNlMzAtbWFpbnQKKzY3NjI0IDRiOWFkM2U3NDgzZTM1ZDAxOGI2YzM1MWFiM2MzNDc1NzM1YWYyNTAgcmVsZWFzZTMwLW1haW50Cis2NzYyNSBlZmY0YWFiOTU4NDc5NWExMTBiMjJkOTIyMGM4Nzc0MjRiY2Q3N2I3IHJlbGVhc2UzMC1tYWludAorNjc2MjYgZTlmOTNlMmY4ZmJjYThmZjk4NTRmMjA2NzdjYzE3OTQ3M2NiNzhmZCByZWxlYXNlMzAtbWFpbnQKKzY3NjI3IGIxNGY1ODdmNTEwZTY5ODIwMWFkMDAwMTUzMjIzOWJjODMyZWRhYmUgcmVsZWFzZTMwLW1haW50Cis2NzYyOCAwZmU0OWFlYzI1N2NiYTRlYjU0YmQwMzYxNzhmYTIwNTkxMGMyNTZmIGxlZ2FjeS10cnVuaworNjc2MjkgNmFhMDk4NWFiYmE4YzY4NGVjNjA5NTExMzljODU5ODNjYjM0ZGExMiByZWxlYXNlMjYtbWFpbnQKKzY3NjMxIDc4NzQzNzcxNDJmNjRjMWFkM2I0ZjA3NTQ0OTAyN2NiNTk0MGJhZWUgbGVnYWN5LXRydW5rCis2NzYzMiA1ZDBlOTNmMDM5OGEzY2Y0YzBmYWQ0ZjkzMmRkMzI3ZWQ0OWY0YmNkIHB5M2sKKzY3NjMzIGFlOTg2ODEwNThiMjQ3Y2EzMGI1YjRhNDVkNTQzZmY2OGUxNzU2ZmYgcmVsZWFzZTI2LW1haW50Cis2NzYzNCBlZWM5MjUyYjNkNDU0ODAxOGJhYmQxOTI3MzIwYTY2OTU0MmIwZGI0IHJlbGVhc2UyNi1tYWludAorNjc2MzUgZGFiZWQ2OWQ4YTJhYjJjZDI4YTcyOGE4ZGFkNDE3NmFhYWJmOTVmZSBweTNrCis2NzYzNiAxNzBhOTc2OGU3YWVlZjk0ZmU4MzhkYmE1ZGI4OWI4ZWQ1MjcyOWFkIHB5M2sKKzY3NjM3IDE1ODA3ZTI2MmViZjBmYTU4ZDM5YTEwMDE0N2U2NmNlYTI3ZjBjZmUgcHkzaworNjc2MzggYjhiZTlkMWYwZDQ1NWQzOGE2OGI3MmY2OWQ5NWY1ODI4ZTFjMThmNyBweTNrCis2NzYzOSAyMWE3ZThjMTE3MDcyNjJkMTEyYzg1ZmNiMDhiMWY2MTg0ZmRlYzFhIHB5M2sKKzY3NjQwIDBkM2RlYmNiOGQ0NDkxNDcwNGQzM2NkZDRlN2E4ZWUyZmYwZDhhMDMgcHkzaworNjc2NDEgNjBlZTkwMWI3MzUyOThlODJhYWI4MzJkM2QyODBkZDE2ZTAyOWI0ZCBweTNrCis2NzY0MiAwMjRhOTg5N2M2NTEwYWNkNjZmMDNiZWE4M2Q1YWI2ZTY5MDdmYjIzIHB5M2sKKzY3NjQzIDkyYzczNDgzYzFmN2E1YzIwOGY2MmMzYjViNGI1ZjBiM2RlYjMyMzcgcmVsZWFzZTMwLW1haW50Cis2NzY0NCBjN2FiZmFiNGRjZGI5ODllYzUyNWVjZDNjYThmZTJmZWJkYTZiOTA4IHJlbGVhc2UzMC1tYWludAorNjc2NDUgOTE3MDBkMjEyMWM4MmQzYTg1NTIxMGQ3M2ViZTk0ZGI3OTFjNTgyNiByZWxlYXNlMzAtbWFpbnQKKzY3NjQ2IDYzZWU2YTBmNzM1ODk5NTRjNzBlYzkxYjA2ZWJmOWE0MzVmOGI3YzQgcmVsZWFzZTMwLW1haW50Cis2NzY0NyBhODZjZGY0OWI4MjE0NDYyM2QzYzRlZGMwNTI5OGZkNzg1ZmYzOTQ5IHJlbGVhc2UzMC1tYWludAorNjc2NDggMDA5YjQ2NmNjNmNhOTQ1MmE4ZTRmNmY3MjUxNGRiNzA3OTlhN2Q1ZiByZWxlYXNlMzAtbWFpbnQKKzY3NjQ5IGUwN2JjMzc5ODk4MTI1ZWYwYTUyM2JhYWUwNGE0NjQwNWVkY2MyYTAgcmVsZWFzZTMwLW1haW50Cis2NzY1MCA4MjBjMTEyY2MyYTg2NWY3ZmJjYzY5MzU5YjJjMTFmOGMwZjQ3Y2RlIHB5M2sKKzY3NjUxIDcyNTE5MmM2NGMyODQ5Mjk3MDhhNDg4ZTU5MjdhMWJlNTFkYzQ4NWYgcmVsZWFzZTMwLW1haW50Cis2NzY1MyBjOGFhMzE1NGRiMGUzNjJjODQzZWI4ZTYyOGE1NGMxNmYzNGJlZTAwIHB5M2sKKzY3NjU0IGE5ZTMwMjUwZWQyMDY3ZmZlOWEyYjczNjRlMjM1OGVlMzU3YWM4NTkgbGVnYWN5LXRydW5rCis2NzY1NSA5ZTExYzkyZGE0NzZjZWQ1Yzg3MzlmM2EyMTA4YzNhYzMxNWE3OTNiIHB5M2sKKzY3NjU4IGY0YjE2YzAyZDFmNTllNjNkZTU4NmNlMGZlOGI5OTNhMGE5OGU4ZGMgbGVnYWN5LXRydW5rCis2NzY1OSBkY2E1N2NiMGMyMDAxYjBlM2U5MzA1Y2ZlMTc4ZGViZmZhYmEwZTQ5IGxlZ2FjeS10cnVuaworNjc2NjAgOTlkZDBkMDA3MjVhNTk1ZjlkZGU1ZDJjOTYzMWY2ZmM3NGNmOTg3NiByZWxlYXNlMjYtbWFpbnQKKzY3NjYxIGRjYWM4ODVkMDBmMWRhOWFmODJiMGM3YjY4OTA2NTNjYWE2YjhkMzggcHkzaworNjc2NjIgNDYzYmZhMDczMDgxMDBhMTk4NjYxMWRmOTQzNDA5ZTQyNjkwZmI0ZiBweTNrCis2NzY2MyA4YjlkMDhkYzg1MDA0OGIzMTY3NDUyZWQ1ZDgyZjRhMDMwNDBjNGY1IHB5M2staXNzdWUxNzE3Cis2NzY2NCAyNmEwOWQzODY2NGEwMWNmNTc2NWFlZDJjZjQwMjk1ODg5MmI1MjAxIHB5M2staXNzdWUxNzE3Cis2NzY2NSBkMDQwYzQzNWFkZThjOThkZGY0YzVmNDJkYzJkOGU5ODA5NGY1YjMxIHB5M2staXNzdWUxNzE3Cis2NzY2NiBkYzY5NmRlYjJjZjI2ZGEyNDA5OGQ5NjQwZWM3ZTljZDc5ZGFmYzU3IGxlZ2FjeS10cnVuaworNjc2NjcgODNkNjQyYTM0MzliM2U5OWQ3ZmQyODkyNTM0ZjcwMzI4NTkxZjQwZCByZWxlYXNlMzAtbWFpbnQKKzY3NjY4IDNkYWM5OTI4MTk0YjdhYjQyZDEzMWYxNTQ1YjIzNDU2YjVmZmRlNmEgcHkzay1pc3N1ZTE3MTcKKzY3NjY5IDA5M2U0ZmE1MGQ4NGI2NGQ3MmIyOGJkNzYxZTQ5ODA4N2JjYmFlYmQgcHkzay1pc3N1ZTE3MTcKKzY3NjcwIDA1Y2FmNDQwY2U4ZjAwYjE5N2Y5MDNhY2FjMDlkYTI4Zjg3YzFkNjUgcHkzay1pc3N1ZTE3MTcKKzY3NjcxIDM4ZTYxMTY4NDU0YjI1NmFmYWU4ZmZmMWY5N2FmOTdlZTMyZDAzNjcgcHkzay1pc3N1ZTE3MTcKKzY3NjcyIGI3OWQxZDc2ZjE5NWE3MWRiZjM2M2EzNjRkZDU4N2IyMThiNTU3MmQgcHkzay1pc3N1ZTE3MTcKKzY3Njc2IDYxY2I2YzRhYjIwZGI3NDZkMzcxNDcxZDQ4OTNlYjJiZmRlODgxYmQgbGVnYWN5LXRydW5rCis2NzY3NyBhZDY0NzcxNjY5NmM0ODhkZTRiOWYyMWEzNTQ3ZTQ5MTg2NTQ1OWU2IGxlZ2FjeS10cnVuaworNjc2ODAgZDQ3MGI5YTdlOWUxODk2ZGMxOWQ0NmJmMGMxMGQ0ZTMyYTdhOGQ3MCBweTNrLWlzc3VlMTcxNworNjc2ODEgOWZhMGE2NWVjZTIzYTI5MWVjZTA5MDE5N2Y1MDY1YWZlMzIwOThmNCBsZWdhY3ktdHJ1bmsKKzY3NjgyIDQwZjc1NjYxNTU0ZGI4MDc0MDY1ZTkxYzljNGVkYzFhY2JkNmJhMTQgcHkzaworNjc2ODMgZDllODI4ZTgzZDEyNWRlZjc2MjM1YzNkOThkNWY3M2FiZWY4ZGY2NiBweTNrCis2NzY4NCA2OTRkMDRlZDJiNDNkYWM2NTdhYmY1Y2NlODE3ZmYzNWYwMzg3YTlmIHJlbGVhc2UyNS1tYWludAorNjc2ODUgNjJjODljYmZiNTExYjg3MjUxNjliMzVlNDFmNGFjMGNmZDliMzc1ZSBsZWdhY3ktdHJ1bmsKKzY3Njg2IDk4YWJlOWNkZTdjZTc3NzFiNTZmMTk1YTJlNGQ3OWQxZGU4YTYxZjUgcmVsZWFzZTI1LW1haW50Cis2NzY4NyBhNmRkZDk0OTgzZWEzZDM4YTFjMTY0M2JiMTI5ZDA3YTU5NjdkYmQyIHJlbGVhc2UyNS1tYWludAorNjc2ODggOWExMGQ0NDA0YmQwMDJjZjUzNGFhMWY5NGNiNzI5Nzk1ZWYyZWRiMSBsZWdhY3ktdHJ1bmsKKzY3Njg5IDQ4MjM5ZjYyMDliMDY0ZGJlOWUwMGJmYjk5MGIzMGJkNzU4MDc1NTggcHkzaworNjc2OTAgMjY1MThkNDFhMTg2OGM0OTVjNDczYmE1MTExZDQ1NjAzNmQ0OThkZCByZWxlYXNlMzAtbWFpbnQKKzY3NjkxIDU5NjcwYjdiNzdhNmI1MzA3NzVkZGM3ZDQzMGM4ZTlhNmM0YjQ2MGEgcmVsZWFzZTI2LW1haW50Cis2NzY5MiA0YWY1ZTJhNjA5YWIzNThmYzkwMDg4NWJlMjE0OTRjYzkwYTA1ZDVlIGxlZ2FjeS10cnVuaworNjc2OTMgYjA4OWE1Nzc3ZDgwNmU3MTczOTI4ZDI1YTNlYzI4MWVhZmQ1ZmJhMyByZWxlYXNlMjUtbWFpbnQKKzY3Njk0IGFlODE5NzUxMDNiMDg5YzJhMDFlYzgwNjBmOGQ0ZDJhZGI2ZGNhNmIgbGVnYWN5LXRydW5rCis2NzY5NSAyMmFhN2RkMGVhODFiOTE4YTZkZjY3ZTc0ZDZiZjBlNTVjOGEwZmQ4IHB5M2sKKzY3Njk2IDJmOGMzMTdkZmYxN2U3ZjZhOTJhODEzMmJlYjQxNzA1YWVmYzYxN2EgcmVsZWFzZTI2LW1haW50Cis2NzY5NyBhYmY4MTViODBiNWQ1NTdhMDUzMzYwYjAzMmU0M2RkMTBhZmZiNGU3IHB5M2sKKzY3Njk4IGZiMjQ1NmEzNmE4M2E4ODUzZTJlMjc0YThmNWQ3M2ViYmU2ODA5ZTIgcmVsZWFzZTMwLW1haW50Cis2NzY5OSBlMzU0NjhiYzRkZjQxMWRkZDNiOGQ3ZjJlMzc1YmE4ZjMwYjJmOWUxIHJlbGVhc2UyNS1tYWludAorNjc3MDAgMjFkZTdhOTE0NmY3NGEwYzc4YTMzZWNlMGE4Y2M5YzA1MGI0ZDEwYSByZWxlYXNlMzAtbWFpbnQKKzY3NzAxIDAxYzAyM2Q5MjE4ZWJkOTkzNmRjMjZhNDliNTc0ZDQ1ZmQwYjUxZTEgcmVsZWFzZTI2LW1haW50Cis2NzcwMiA3MTY3OTc1NjQ2OWU5MDE5ZDJlYTUxNmQ2NzI0ZmQ5YTI5OTEzODQwIHB5M2sKKzY3NzAzIDljMzFhOTg3NDQ3ODhiZjZmZWEzYTYzNTgxN2Q4Nzg3ZjIxNTEzODcgcHkzaworNjc3MDQgZTRlMGZmN2RkYzg1ZWMxZTE1NjE5NzZiOTc4OGViNWMxNWExZmZlYSByZWxlYXNlMzAtbWFpbnQKKzY3NzA3IDBkZjBmZGZjOGUxYjJjMDNiMTBlMGUxYzgzZmI5OWM2MGZiYzkwODIgbGVnYWN5LXRydW5rCis2NzcwOCBhMjUyNTE1NGU0NGYyNDBlOTAzNTZhYjJhMzEzZmI2YmZhMWQxNjg1IHB5M2sKKzY3NzA5IDc3NmE2Y2FmYzIxYTM0ODE5NTkzMTMxOGU1NzdjY2MyNmY5NTE5NDIgcmVsZWFzZTI2LW1haW50Cis2NzcxMCAyMGE4NGUwNjMwNTI1NzIzMmZmNzg2ZWY5MjRiYjAzZTAxZmFlMzA4IHJlbGVhc2UzMC1tYWludAorNjc3MTEgZDkxZTYyODYyNzY0NTFiZDdiMmJjNGM5YmFmZmI4ZTZhNTYzNzEzNCBweTNrCis2NzcxMiAyNmU3ODk0MjE2NWUxMGZhNjY2MjkwMDNhYjdjZDBlYWEwYjhiZGU5IHJlbGVhc2UzMC1tYWludAorNjc3MTMgM2UxYzQ0OWQxMWUwZWFlMDAyYTJlMWVhNGNiMzBhM2IxODkxN2YwZiBweTNrCis2NzcxNCBkZjY2NDk5NTE0MTBlYzgzZDhlY2QyNjk5MGFjMThhMmU0MzNmNDM5IHJlbGVhc2UzMC1tYWludAorNjc3MTUgMzAwYjk1ZmE3YjRkM2Y5YjFkNDcxNzQwYjQ3M2UxOGM2MTRhZjhjMSBweTNrCis2NzcxNyBiNDU1MmUyZmZkNWE0MTg0NTJkMmMxMGMyNTg4ZDg2NjdkZjRmMTRmIGxlZ2FjeS10cnVuaworNjc3MTggZjliOTUyOTRhYzg1NzdhODQ2MWE5ZGUxYTYyNTYxZWVkZTU4MjliNCByZWxlYXNlMjYtbWFpbnQKKzY3NzE5IDU4NTVlM2UwZTg1YjE0OWM2YTgxMWZmNWEzZjY5ODljZGNkYjgwOGYgcHkzaworNjc3MjAgZmRlYzU3NjYxMWJkZmE2Mzc1YzI1MmMyM2UwN2Q5Nzk5ZGJiMTNmNCByZWxlYXNlMzAtbWFpbnQKKzY3NzIxIDMzYTFlMTAwOGU1NDBmYmU2NjU5ODA4OWViOTgxOGNlNzcxODJkMmUgcmVsZWFzZTMwLW1haW50Cis2NzcyMiBlZWVmNzFkZDNjY2UwMmY4YzY2OTU4OWYxZmQ0OTkwM2YzNDZmOWE3IHJlbGVhc2UyNi1tYWludAorNjc3MjQgNDY0NmMzMzUzMWRiMzAzZjliYmExMTM5MGFjZGU2NDY0YmYwZjZjNyBweTNrCis2NzcyNSAyNDVlNzg3YjkwZmMxMGVhOGZlZDgwZTM4OTUyOTMwNmRmMzFlYzBmIGxlZ2FjeS10cnVuaworNjc3MjYgNjFkMDY0MDlhNjYwNjkzYjQ3OGE2NTE2MzQ4OGFhZTBjMmIxMTgwNCByZWxlYXNlMjQtbWFpbnQKKzY3NzI3IDMzY2QwNjQ5MTg1ODUzZWVmN2MwYWFmMWVjMTg3ZThkYTk4YzAwNWIgcmVsZWFzZTI0LW1haW50Cis2NzcyOCBhNmMzYzcxNWUyYjcwNzQwYzRiNmI0ZjdkYzZmNDdiMTZhN2U1OTA1IHJlbGVhc2UyNC1tYWludAorNjc3MjkgZmI1ZjhhZmYyM2ZkMWNjYzFlNjEyZmZhNjMxOGE1ODRkYzMzNmZiNiByZWxlYXNlMjQtbWFpbnQKKzY3NzMxIDBiN2RjZGI1Y2EzYWFjODllMDUzYjY3OTJhNDFiYTk1MjYzOWQ2MGIgcmVsZWFzZTI1LW1haW50Cis2NzczMiAyZTIxY2VhNDM2NzA3MWMyNjQ5MjUwMzdjNmExMzc5MmY4YmI1YjhiIHJlbGVhc2UyNS1tYWludAorNjc3MzMgNGQyNDIyOTg5OTgxYWViY2ZjNjAxNWE2NzEyMWMwM2E3NjM2NTQzNSByZWxlYXNlMjUtbWFpbnQKKzY3NzM0IDljYWExZTVkZDgyYmRkMDJlNTk1NmNlMmUzNTA5NWQxOGMyMTQ0M2EgcmVsZWFzZTI1LW1haW50Cis2NzczNSAxZjFhMTE3NzY3NzQwMzMxZThiMTgwZTUzMDMxZTQzZThlMzNlNmI0IHJlbGVhc2UyNS1tYWludAorNjc3MzYgOGQ5MDJjNTEzYmEwZjg1OWY1NzQyYTJlZTRhYWVkYmNlYjMyMGVjOCByZWxlYXNlMjUtbWFpbnQKKzY3NzM3IDc2ZjE4OWVhNTUwOWYxYjI0OTdhNWQ1ZDg2NzcxZTg1MGUwMTE3NWQgcmVsZWFzZTI1LW1haW50Cis2NzczOCAzYTMzMmJmMDZkYTA2OWVmYTc4N2RlNDdiYThjZWZhZGQwMjVmYTA0IHJlbGVhc2UyNS1tYWludAorNjc3MzkgZTZkYmFkYWIwMWQ4YTg1MDFmODViMDMyY2FmMzYzZDMwYjQyYzM0ZiByZWxlYXNlMjUtbWFpbnQKKzY3NzQwIDVmNGY2YjdkYThjYmNhNTc0ZmViYWQ5M2Q0MzU4ZmRkYmExZWNhYjMgcmVsZWFzZTI1LW1haW50Cis2Nzc0MSAxMmRkMmNmNWUwYzgwMDI2NTA1YTgzZDgxNjczMDE1NTc0MTQ3MzQwIHJlbGVhc2UyNS1tYWludAorNjc3NDIgOTUzMGQzMzRkMjYyNDIxOWU3ZWUxYWVjYWYzMzUzMmU5MTAyNjZiYyByZWxlYXNlMjUtbWFpbnQKKzY3NzQzIDU4NDY4ZmNkZTA2ZTliZjUzYmE1OGQ1YzRmNDJlODllNzliOWEzNTEgcmVsZWFzZTI1LW1haW50Cis2Nzc0NCA4OGMwOGE2M2NiNzQxNTcwY2MyNTA5NmNlZTkxNDQxZjlhYjYzZjAzIHJlbGVhc2UyNC1tYWludAorNjc3NDUgNmU4MGVjNDEzMDk3M2RlNTVmNTA4NzM4YTA5YWM5ZmNiMzBkMDA0YyByZWxlYXNlMjUtbWFpbnQKKzY3NzQ2IGJiMWQ5YWU4MDJjMzE1MmQwZTMwYjBkZjNmODMwOTUwNzU4ZjFmMGMgbGVnYWN5LXRydW5rCis2Nzc0NyA3NDBjZTlhNTIzZmZjNGFjYzkxMTIwMDJiYzk5MjM0ZDg2Y2Q0M2UzIHB5M2sKKzY3NzQ4IGEwOTBhYWI1NzVjNmVmNmMzMjJkNDk0NzY3MDRlMjhkZDQ1ZWY4ZWIgbGVnYWN5LXRydW5rCis2Nzc0OSA5YzQyOGRjM2Q2ZmI3NzgyZTE4MDU3NGFiYjNiMzY1N2YyMjgzYWM0IHB5M2sKKzY3NzUwIGI1ZWZjYTMwNGQyYWY5MWUxY2QwZTZlNmZhOWUxMTBiMGUwNzAwMGQgbGVnYWN5LXRydW5rCis2Nzc1MSBmMjBlYjgwOTUzNWU5MWMwYjE0NDE2Y2M1NDQ3MzU3Y2ZjYmJlOTVjIGxlZ2FjeS10cnVuaworNjc3NTIgNDI2NGNmMDBhNzVjMGZlMjA2MmVkODQ2MjdmMDRlNDZmMzg3ODE4ZiByZWxlYXNlMjYtbWFpbnQKKzY3NzUzIGRkMWI4ZGEwMWQwMmQxOGJkM2RmN2MzY2VlMjI3NTYyODg3Yzg4M2IgcHkzaworNjc3NTQgMjUyOTI3YTJmMzJkNmZlMGZkMGNjZjM5YzVjNzM5MmE3ODE3YjUyMyByZWxlYXNlMzAtbWFpbnQKKzY3NzU1IGNjNzI3MjM5ZTUxYjE2NDcyMGZlZTYyNDNkMzE2NTZmNmRiZjFlZTQgcHkzaworNjc3NTkgZWIwNzAwOWM4NjYwNTgxMWU2OTM1YWJiZmU5ODE4OTA4NjBhNzRkMyBweTNrCis2Nzc2MCAxOGY5NmY2ODgzYWY1ZDUwOTI3ZTZiOTdkNDYzMzI3ZWYwMDI4NThhIHJlbGVhc2UzMC1tYWludAorNjc3NjEgNzAzM2IyODY4NWExM2JmNDU1NDQ1YTQxOGM5YjBjNWI5NjQwMDVhYyBsZWdhY3ktdHJ1bmsKKzY3NzYyIGIwOTUxNzhjMDQ5MjhhMzQ2YzAyYjhhNDc0MDQ3MDRiNzgyYmI2NzEgbGVnYWN5LXRydW5rCis2Nzc2MyAxOGJjZTJmMmE3YzU2YmFkNGNiMzY0ZjZmMWIwZGM2N2NjNzYxZGE5IHB5M2sKKzY3NzY0IGQxNTc0NmFiZjZjNzgzYzYyMmFmZTRiZDIzOTkwMDJkYzUzODdjMjQgcmVsZWFzZTI2LW1haW50Cis2Nzc3NyA1NzVmOTczZmYyNDQzM2UxNTJlODhhNDM0YzRjOGE2NzQ1MjRkMjUwIGxlZ2FjeS10cnVuaworNjc3NzkgNzJhN2FjMjE4ZWEzMjgzY2QxZDRiMTNiOGVmZDMyZjliYWZhYjJkNyBsZWdhY3ktdHJ1bmsKKzY3NzgwIDk2YWIwOGVkOTVhNDAyYWQ3ZjlmYmQ2YWRhMWM0MjE3YjA5ODE2MWQgcHkzaworNjc3ODEgNGRiNjZjMjBjYTY4ZTVhMThhMjY2NmQ1ZGZhNmQ2OWQ4NzUwYmE2YiBweTNrCis2Nzc4MiBlYTljNjAyNmFlN2VhMjQ2MmNmM2FmY2VlYmI1NTg1NzY5MWI4MDAxIHB5M2sKKzY3NzgzIGFkOTgyYzI2YzNkZDVmNGQ3NzlhNjU5MWE5ZTc0NmI3YzVjZTg2NDcgcHkzaworNjc3ODQgZTM2YmUxZWM3Mjk2NWMwMGU2YjBhNmZhMDdkMzA4YzdhYTNmZmU0ZiBsZWdhY3ktdHJ1bmsKKzY3Nzg1IDllOWZjYTk0ZDI4NjIxNjhmMTQwNjk4ZmE3Y2I3MjQxMDdkNjc2YWQgbGVnYWN5LXRydW5rCis2Nzc4NiAzMzM2ZTRiNzdhMDQxMmVhZTg3YWEzMmZhM2YwZmM0MjBmZWFmNThhIHB5M2sKKzY3Nzg3IGRjNmY5NzRmYjdkNGY4MzI0MzVkMDYxOWMzNTc3NGY4N2YyNzU1ZTAgbGVnYWN5LXRydW5rCis2Nzc4OCAxYWYyYjhiMGFkODhjYjk0NzljYjQ3ZGFiY2FkYjVmNTI2YzcyOGI2IGxlZ2FjeS10cnVuaworNjc3ODkgZGFjYWExZjQ0MTlkNzAzYzY4NjU4NmMyYWQ5ZTc2N2U4ZTJlNzY1MyBweTNrCis2Nzc5MCBhYjUxYzE1MDliYzA0YTQ2YmY5YTU0MzI5Y2ExY2JkYWEyOThiY2YxIGxlZ2FjeS10cnVuaworNjc3OTEgZWRkNzI0MzdjZWMzZjM1N2IyMGViYTBmNDAwMTNmN2U3ZTkxNmQyYiByZWxlYXNlMjYtbWFpbnQKKzY3NzkyIDdkYWI4ODA3MGJjN2RmYWQwODk1MDcwNGUyOTJkN2QyMTVhNzU4NWIgcHkzaworNjc3OTMgZWIyODc2YWUwNDc2OTYwZmU0NzY1NGUyZTkwZjMyYjIzMjE3YjU5MyByZWxlYXNlMzAtbWFpbnQKKzY3Nzk0IDIwZjE1YzBmMjFmODhhOWFmODg1YjdjMDVjMmYwODBiZTczMDk0YjcgcHkzaworNjc3OTUgNDgwNTc0NWQ1NTk5Mzc3YmY4YjljMzViNjM0NWMwY2JjYzU0YThiYyByZWxlYXNlMzAtbWFpbnQKKzY3Nzk2IDI5OTY4Mzk1ZjkyMDUzNjg5NTgwZGJhNjliZGRhZWNhYmZkNzVjN2EgcmVsZWFzZTI2LW1haW50Cis2Nzc5NyAxNGNkNTg4NTQ0ZmExYjFjOWEzNTk1YjMyYjgxYTE4ZTNmYWE2MWRlIGxlZ2FjeS10cnVuaworNjc3OTggZDUwZGFkMmIyNzUwNDJhZGVhZjMwOWE5NTZiM2FlOGIyNDcwMDEyNCBweTNrCis2NzgwMSA5NTQxYTJlY2M0ZmJiY2VlNGZjOGU2Mjg2N2U0ZjhlODBhZmFkMDZmIHJlbGVhc2UyNi1tYWludAorNjc4MDIgYjdkOWFkYzRjMzQzNzk2YmFlM2M4NzgwYWFiODI4ZWM4Mzc0YjFlNyBsZWdhY3ktdHJ1bmsKKzY3ODAzIDIyZmY5YTQ2Mjk4NzU1ZGU1ODdiNTk2YTlhNGM3Y2UzMzQxYmE5OTYgcHkzaworNjc4MDQgYTE3NWIxOWI0YmYyY2U5ODQxMGU2MWYyNzk5ZjJkZWFhN2Y0N2Y2OSByZWxlYXNlMzAtbWFpbnQKKzY3ODA2IDhjNDI0ZjExNmZiOGQwZWQ3NWQ3YTliMmU0YzI2ZWI3ZmJjNzhjODkgbGVnYWN5LXRydW5rCis2NzgwNyAyMWQzMzU3ZGNiZWM0MWZjNmZlMDBjMDQ5ODUxMThhYzg5MGZiMTM2IHJlbGVhc2UyNi1tYWludAorNjc4MTAgYTQzYTZkZjE4YmE0YmM2ODljMjIxOGRkMDQ2MDAxNzFhMmM4Yzc2YyBweTNrCis2NzgxMSBhZWYwNzMwZGY5YmEzMjdhOGUxNWQzNzJhZTczN2RmYjZlYzQyZTZmIHJlbGVhc2UzMC1tYWludAorNjc4MTMgNjg5ODdlOTMxMTkzZmFmNjlkMmJhYmQxMDQwNTcwNjg3NTQyOGIzZiByZWxlYXNlMjQtbWFpbnQKKzY3ODE0IDA3NDA3ZGUxODM5NDg4M2U0ZmRkNDZjYzljZjRkOWQxNmRjYWY0NTEgcHkzaworNjc4MTUgZDA2YjA0YzU3YjUzNjE4MDE4ZjcxYmJlYWQ5NTA5Y2JlMGMzNTUwOCByZWxlYXNlMzAtbWFpbnQKKzY3ODE4IDk0ZTc5ZDc4ZGZmMGRmYjVjNTNmNDk4NDJjN2RmNjVhZDViNzllNjYgbGVnYWN5LXRydW5rCis2NzgyMiBmMGRiMDZmNDlhNGUzMGU0OTY2NjI1MWY2NDhjZTk1ZTcwOWUxNTY5IGxlZ2FjeS10cnVuaworNjc4MjMgMzM2Njg2NDgxNDQ2NjAwMGY3OGFkOTc1YjhjN2RlYmI4YTIzOGU2NyBweTNrCis2NzgyNCA5MmUyMTY1MmYyZjRkMzJkYmJjZjZjNWFiMzlkZDRiYzAxMjZkYzI3IHB5M2sKKzY3ODI1IGNiYmUyNTg4NjY0ODdhNDA2MGVkZmE1MmM4ZDM5NjBhMWFjNjU0MmQgcmVsZWFzZTI1LW1haW50Cis2NzgzMiBmYzk3MjljODBiNzkxYTdjYmNlN2E2YjljNDY5YWFjYTUyMjhhODg0IGxlZ2FjeS10cnVuaworNjc4MzQgMTg5YjQ2MmVlOWQ0ZjI1YmZjMmQwMzBiNjkxODRhMDkwOGQ3NzIyNCBweTNrCis2NzgzOSAyZWU0NjUzOTI3ZjcyZjliYjNmZjE0YjMwODNkNGEyMDNkNjg0ZGZjIHB5M2sKKzY3ODQwIGRhZjZkM2FmNDBjNGI5MzlkZDFkY2YxNWE3Nzc5NWZjZjY3MzZmN2MgcHkzaworNjc4NDEgMDAxYTI1MTVkNTdiMDE4OGE0YWM0NWJlOWE4YzZmNGM3ZWFmMjRmZSBweTNrCis2Nzg0MiBhZWJmNzEyNGRkMzIyYThmYjU1OTRkNDZlOWE2NTFkYmU1YjZhOTFmIHJlbGVhc2UzMC1tYWludAorNjc4NDMgODJlNmZlMzcwNzgyOWY2NmY0ZDRmZDBjOGEzNWEwM2RjNTMwZGNiYSBweTNrCis2Nzg0NCAyNGI4MGI3OTc4ZWMyMTk0YzRmYzdlMTEwMGFhNDBiMWFmZTExZjczIGxlZ2FjeS10cnVuaworNjc4NDUgNTZiN2ViZjEyZWEzYWRmZDkwMzI0NjA2ZTBkYjE3Y2NmNjk0ODM1OCByZWxlYXNlMjYtbWFpbnQKKzY3ODQ2IDQ3ZWNiZTJkM2VlZmJjNTNjNzViYmMxYTZlZGU3M2RjZTM0OTRkOTYgcHkzaworNjc4NDcgYmYyMGMzODRiZTU2MzlhZWEwNTBlODAyYWNlODQxM2MwYzhjYmIzZSByZWxlYXNlMzAtbWFpbnQKKzY3ODQ4IDZmYTVmOTY5ZWZlNjQ3YTIzZjhmMmExYjQ2MjJmZDU1YzMyZWI4ZmMgbGVnYWN5LXRydW5rCis2Nzg0OSA1ZTgzOTI5ZjdlZWI2MWQ2ZTAwOWJiMWY0Njc5NjIzODFlZWQ1ZWZhIGxlZ2FjeS10cnVuaworNjc4NTAgOWExODkwOTgyNDg5ZTU0Njk5NzI0MDBjNjM3OWY0YjI5MTk5MTlmNCBsZWdhY3ktdHJ1bmsKKzY3ODUxIDBkYjkwN2E3MDcyMzYwOWFiMWE4NzA1ZGE3ZjBiNzM5ZjYxNmRlMDcgcHkzaworNjc4NTIgZjNmMWYxNDYyYzgyNTM2YmIyMzc5NmU3MGM4NTUyMjE0NGVlMjRkYiByZWxlYXNlMjQtbWFpbnQKKzY3ODUzIDQ4ZjI3MzczMzc5NTZlZTE1ZTM5MTBkNzgzZjJlZjc0MjQ5YjA2MzkgcmVsZWFzZTI0LW1haW50Cis2Nzg1NCA2MDg4NTZhN2U1NjhiODZlNTE2M2VhNmE4N2ViMDE2NzI4OGJjNjY4IHJlbGVhc2UyNS1tYWludAorNjc4NTUgM2NjMDU2ZDIxYzJmNDQzNWE1MzRkMjMzNDViYWQ5YzBhOWQ5YjNjYiByZWxlYXNlMjUtbWFpbnQKKzY3ODU2IGI1NjIzMTIyNDcyOGFiZjJjYjNlYWEzYjQ3YWZkNzgwOWY4NWRiOTMgcmVsZWFzZTI1LW1haW50Cis2Nzg1NyA0OTZkZmY0N2JjN2VmNmZjMWE2ZTE3NDIyNDc1OTlmMmM5ZDhkYmIzIGxlZ2FjeS10cnVuaworNjc4NTggOWJkZWIwYmUxZGFkNGRjOGIwZjE5ZDYxYzY2ZGY4OTllNjNlOWRmZCBweTNrCis2Nzg1OSAxYzk0ZTc5OGM4NWIxYTYxMzk0ODgyN2EwMDljNmFiYmMzMGNmNGY4IGxlZ2FjeS10cnVuaworNjc4NjAgNDI4ZjZjNGU4NDQ2MjEwZGMxMzk1YTZmMDFhY2NlNWQ4YjY1NjhlNyBweTNrCis2Nzg2MSBkMDI4MmEyOTJiMGFhOGMyNTI1MWNjZTQwYzlkNzg3ZDI4ZjYwY2IzIHJlbGVhc2UzMC1tYWludAorNjc4NjIgOWZiMmEyM2VhYzQzNWEyYmQwZDZmMjk0YTViZjA1YjlkNDhhNjNkNyBsZWdhY3ktdHJ1bmsKKzY3ODYzIDA2NDc5NDhiZTg0MGVmZDNiZTg5YWUwODhkYWEyNWE1NWU0OWExYmIgbGVnYWN5LXRydW5rCis2Nzg2NCA2NzAyMDRjZjIzZTIyNTZkMmJkY2Q0MjIyMWY3YTBhYzRmY2I1NmJmIGxlZ2FjeS10cnVuaworNjc4NjUgYTc2NTYxOGM3ZTk0NGYzZTA3MGE2NTI0ZGZmYWM4ZWU2YTQzYTJlMyBweTNrCis2Nzg2NiA0NjI3OWNlYmVhOWNmMTQzY2NiOTBjNDkzNzMzNjVjZWFlMGE3NzFmIHJlbGVhc2UyNC1tYWludAorNjc4NjcgNzczYWYxODYwOGUzYTYyYTQwOWU5MzNkYjQ4MDhmMDNiYWUwZDFlZSByZWxlYXNlMjUtbWFpbnQKKzY3ODY4IGVkYjJlZWZiNjg1NmY2ZmIwZjMxMTlkNThiZDkyNDQ4OWUwMTE0MTQgcmVsZWFzZTI2LW1haW50Cis2Nzg2OSA3OGZjMDk2ZTUwODUyOThmZDAxMWE1MzFkNjUyZGU0OTdiOWYyMzI1IHB5M2staXNzdWUxNzE3Cis2Nzg3MCA3ZmU3MmFlMTlhYjI5MGEzNGM0ODMxM2RiMGUxMGVhZmExZWU2Mzg2IHB5M2staXNzdWUxNzE3Cis2Nzg3MSA0NWJlYTU4NDY5NGUzNTBjZjJiOTEyNDE1YmRjNjgxYTVhZDIyMTYyIHB5M2sKKzY3ODcyIGVlOWM5Y2MwMjhjZTE1OTE5NTdlN2M4ZDcxMDE2ZTNkMmJmZmVlZjUgcHkzay1pc3N1ZTE3MTcKKzY3ODczIGFkMjQ2Y2I0ZjY2MmUyMTFjNDcwMWZlM2I5ZmRjYjYzOWM5OTQwODAgcmVsZWFzZTMwLW1haW50Cis2Nzg3NCA2ZTNlNTgyZmUzZjM4OGVkOGIwMjdjYWI1ZTZjY2I0ZDZlNTcyYWE3IHB5M2staXNzdWUxNzE3Cis2Nzg3NSAwYzBiOWFiYjU4NDI2ZGQ4YTY3ZDgwZDQ2YzU5N2ZiZDRmZjcxYmM4IHB5M2staXNzdWUxNzE3Cis2Nzg3NiA4YmI5YTg1NDYzOWI2OTA1ZTAzOWRlZjgzYTNiYTVhNzJkYWQxMTFiIHB5M2staXNzdWUxNzE3Cis2Nzg3NyBmYjk5M2YwOTNjYmY0M2JkZDFjMmJiYzRkNjE3NTM0MzhhYmNmYmM3IHB5M2staXNzdWUxNzE3Cis2Nzg3OCBhNjU0ZjFlMWJlMjMxZmQzM2I4OTA5MTVlYTUzNjg4NWJkN2M3Y2EwIHB5M2staXNzdWUxNzE3Cis2Nzg3OSAwZGNhMmI0NTc3NzVkNDcyNWRkNDgyMDJmNWY1ZjY3ZGE4OGY3MDlkIHB5M2staXNzdWUxNzE3Cis2Nzg4MCA1ODllZGY2MTVhZGI3MjYyZGY5Y2EzYmE3M2ZhZTVkMzE3MzE4YTY2IGxlZ2FjeS10cnVuaworNjc4ODEgYTdiMzU3ZjllOGE0OGVhZDYyZWQ2MWFmOWE4YzU4YzZjZjllNzI5NyBweTNrCis2Nzg4MiBjNGZmZmEwOTcyZTM2OGUwZDczOTk1YmZjODY5OGNmNmE5Y2IzM2Q4IGxlZ2FjeS10cnVuaworNjc4ODQgMWQ5NjFmZTU0YTZmOWQzYzE5NDEwNjdhMTMyNzI2YmZmNTVlMWRjMyBweTNrCis2Nzg4NSBmMzNkY2Y3ZTZlMWMzZWQ5NDVlYmI5YjliYjJjODNmODE3NzI2OGEyIGxlZ2FjeS10cnVuaworNjc4ODYgMDFiODA3NTM3OTE1NjUxYmMxNDNiZDEwMzIzNzE1NDAxYzA4YThlOCBweTNrCis2Nzg4NyBlODdhMjU2MTE4OGI1MzM1MjMxZmQ2ZWJhYmM3YjMyYTFiZmY5YjEwIHB5M2sKKzY3ODg4IDFhZGZhYmNiZTA3MzE3ZmFkNWRmZmRhZGVlYjU2MGIwYWQ2YmI4MTQgcmVsZWFzZTMwLW1haW50Cis2Nzg4OSAzYWIxMDJkOWNmNTYwNmE3NDk2ODMzNmMxOTNiMTExYjI2N2FiMGMzIGxlZ2FjeS10cnVuaworNjc4OTAgYWY1NmUzZjE0ZWI3NGIzMGQzOTczZDViZGNlMTIyMDdlYjE0ODdhMSBsZWdhY3ktdHJ1bmsKKzY3ODkxIDUyOTRiMjE0ZTFiZTk4ZTc5NzliYmRmOTgxMzUzNDYwYzZmNjliZGYgbGVnYWN5LXRydW5rCis2Nzg5MiA0ZmRhNGY1NDVmNzkwNjkwMTMzMjUxMzU2YWQ5MmQ4MmI4NTM0YmJjIGxlZ2FjeS10cnVuaworNjc4OTMgMTE2Njc2MTBlOWY1NmE3M2U4YjY4N2YwOTlkZWUxNjdhNjcxZjk5OCByZWxlYXNlMjYtbWFpbnQKKzY3ODk0IDUwMmY2MWQxZmJhZjRiNTFlYzAzZGVlYjc5ODVjNWY4ZjE1M2U5MjggcHkzay1pc3N1ZTE3MTcKKzY3ODk1IDFiZjcyN2UyYjA4ZmRlNGUwY2FiODY1MzgwMTY2MzQ4MTliMjBiZjMgbGVnYWN5LXRydW5rCis2Nzg5NiBlNDY3NTExM2QxMGVmYTczOWM1ZDhhYzMyZTMyYjRlZGJhNTNlMDNmIHJlbGVhc2UyNi1tYWludAorNjc4OTggZGU3YmJjNGQwYjFkMTcyNWYyMjkyMTIwZTQzNzk3ZTQ0ZTY5MzI2MCBsZWdhY3ktdHJ1bmsKKzY3OTAyIGQ3OWZkZDg0MjBmMzZlYzg1ZGJmNjQyZmFiNzBkOWFhMGQyMzljYTEgbGVnYWN5LXRydW5rCis2NzkwMyBjM2I5NzU5OWQ3YTE5NzRkMWYyODg1ZTk3ZDYxNDgxNWRhMDM3YjE4IHB5M2sKKzY3OTA0IDAzNzk5YmI0NDc3MjI4M2Q4MTBlNjIxZTM5ZWVlZWI5ZTM4YzA3YTIgbGVnYWN5LXRydW5rCis2NzkwNSBiZDNjNWRlNGNjNTQxYmYwOWRiNTEzOWE2N2U0Nzc1N2I1MGUyYzJiIGxlZ2FjeS10cnVuaworNjc5MDYgMjQxMDI3YjI0YjQ1ZDk0MzBhYzFlODE5MTQxMzE1NDQ0M2I5ZDlmNSBsZWdhY3ktdHJ1bmsKKzY3OTA3IDk0YzA1NDY2MzA2ZTIxZjMyMDYyM2IwMWQwYmYyOWYyM2FlOTVhZTcgbGVnYWN5LXRydW5rCis2NzkwOCA0YmRlY2FhNGVjYWIyYjZjNDU2MWRjNGU2NjU2MzY1OTc2ZDc0M2MxIGxlZ2FjeS10cnVuaworNjc5MDkgM2EyNTlhMWUxZDljNWUwOTE5ODdhMWVmOTQ2M2U5ZDZjZTUwNTgzZiByZWxlYXNlMjYtbWFpbnQKKzY3OTEwIGFjODhiMzQzMjA2NjBiMGQ5NWUwODgyNzcwN2E3MjgwMWU1OTE1ZmUgcHkzaworNjc5MTEgMzk2NTMxNGJiOTIyYzI3NjVjNTdiYzUxMDEwMDA5ZGU5N2EyYjYzZCByZWxlYXNlMzAtbWFpbnQKKzY3OTEyIDMxMzJlZDEyZWMxMDA2YzM3YmJjMjNlZGNmNTJiYmY3ODRjNWM1ZTMgbGVnYWN5LXRydW5rCis2NzkxMyAwNWUwMTA1MTVjNGJjNTcxMDIzMGRjNDY0Mjc1OTU0ODNhNmNiNTJlIHJlbGVhc2UyNS1tYWludAorNjc5MTQgMGY5YTdlZGI4ZTU4Yzg4MWUzZDU2NTAyMjQ1MDM5OTRlNjhkMjkxYyByZWxlYXNlMjUtbWFpbnQKKzY3OTE1IGFhNDVhMTc3M2Y2ZTBjZTRhNDc4N2RmNWUyZTVmODQ2ZmRiMTQ0ZWUgcmVsZWFzZTI1LW1haW50Cis2NzkxNiBhMGE2ZDk5MDkzMTJhZDljMWQ4NDRhZjY2ZTljOTE5MzFiOTM4NTJhIHJlbGVhc2UyNS1tYWludAorNjc5MTcgYzc0ZmQ3NTE4N2Q5MDQ4OTFlMjA0N2Y3N2I1NDMyOWVjZWNmMzUxYSByZWxlYXNlMjUtbWFpbnQKKzY3OTE4IDc5Mjk1NjQxZmNmMGJlNWQ3YzUyNmYyZmZmYzIzOGY2YWZkMWU0NWQgbGVnYWN5LXRydW5rCis2NzkyMCA4NzUxMjg4ZGRkOTYxYzYzODhhYmZiMTQ1MTllM2JiYjRjNGM3NzQ5IGxlZ2FjeS10cnVuaworNjc5MjEgMTAwOTdiZDY1NTY0ZjBkYmRjZDBmZDE2OGU2ZGVlZTJkNjk3MzNlMyBsZWdhY3ktdHJ1bmsKKzY3OTIzIDA2OWQ5NWRlZWE5MTU0ZTJhMzIwNTEwZTk0YmI3ZjcxNGM2NjI0NjggbGVnYWN5LXRydW5rCis2NzkyNCBlZmQ0MDAzZWU4ZWE1YWEzNDUwMjc2MGE3ZWEyOTYwNDcxMDI5NDk4IGxlZ2FjeS10cnVuaworNjc5MjUgNTAyNzkyNjM4MDFiNWNmZDI0ZGU4YjllYTg0Mjk0NzBlMzhhZWY1OCBweTNrCis2NzkyNiBmNmNkMWE3YTMxYmI4NjQ3NzViYTQ4M2U5NjRkZmQ0YzM3ZTA4NzQwIGxlZ2FjeS10cnVuaworNjc5MjcgMTEyYmEzZGY4NTFkMmZmNjM5MGVhMmU0YTgxYzE4MTU4OGVlYTRlMiBsZWdhY3ktdHJ1bmsKKzY3OTI5IDBjODUyYzExNmUyMzVkZjA1ZTFiZGNiZGFlMjUwNWI1ODQ4YmMyNGUgcHkzaworNjc5MzAgOTJiYzE0ZThiMzdlNmFjM2Q0NWUwOGE0YjBjOWE1NmJiNDdlZGFiZCBsZWdhY3ktdHJ1bmsKKzY3OTMxIGMzYjQzY2I2NzAzYzYyZjY2NzBjZmJlNTZlOGMxNjk3NDk0Y2YxZGQgcHkzaworNjc5MzIgZjg1OWQ4MjQzNjllYTlmYjA1ZWZlZGIyODc5MmMyMjMwOGE3OGYxYSBsZWdhY3ktdHJ1bmsKKzY3OTMzIGFkYjliNTQ3YzdmZTgzYTU4ZjU3NmFlNDU3MzIxODQ2MDhjODllN2YgcHkzaworNjc5MzQgZjZhZTdjYzllMmU4NWQ3NzZhMTQ0NzVlYjEwYThiNzVhNDRkOTA3MiBsZWdhY3ktdHJ1bmsKKzY3OTM1IDY5OWZkZDgyMTdmM2JhODJkMjkyYWRhMDIxZGIyMWRkZWQ2MjhkZDAgbGVnYWN5LXRydW5rCis2NzkzNiBkMjcwMjQ3NTU1OTNiOGY3OTIxMGMzYjliYzMxNjVlYTg2ZWY2Zjk1IHJlbGVhc2UyNi1tYWludAorNjc5MzcgMzAzYWQ0NWE5NjdmYzUxZWU3NjUxNDA5ZWQ0YTE2NzZiZGQ2ZTM3MiBweTNrCis2NzkzOCA2NjVjNGFjNDcwNzNlNzNmODlkZDgzMjAxZmQ5ZDY4YmJhYzNjM2M4IHB5M2sKKzY3OTM5IGRiNTBkYzAwNjFlZGViM2I1YzA2MmQwMWNlMTczOWM3NGE5ZTJjMmYgcHkzaworNjc5NDAgMmU1MzI2MmM1NWVhNjdlY2FlYTJkZTNhYmQyN2E2NzM4ZDdlNzVmOCBweTNrCis2Nzk0MSAxMTM3NTFhODk5MGM5NDg3MmQ5YjdkYTc1YjFmYTQ3OGYxNDk5Y2M0IHB5M2sKKzY3OTQyIDQwOGE5ZmY0ZjhiMmM4MWUzNmI2ZTM5MzM1MTJiZDhmZDdjOWVjNDggcHkzaworNjc5NDMgN2IxZDBjZWE5ODcwNjQ4MjUwN2RkMDMwN2E2YjgyZTE5NWVmM2JlZSBsZWdhY3ktdHJ1bmsKKzY3OTQ0IGZiMTUwZmNmMTY1ZDBmYTYzYTJmMzRlMTdmYzYxZjhhNGI2YjY1YTggcmVsZWFzZTI2LW1haW50Cis2Nzk0NSA0YmRmOWUzNDIyOTFhNjRlNWRmOWU3OGYzZDM5Mzk0MDVhYzYyNWNhIHB5M2sKKzY3OTQ2IDk0Zjk5NmJjNjRiM2JmODQ4NmYyYjU2NzEzYTI0OWY4N2JhYjBlZmMgbGVnYWN5LXRydW5rCis2Nzk0NyBmZWM3MmM5YjI3MWQ4OTY0NTI1NGNiNmIwNWU1MjkxMGRlOTQxYTc5IHB5M2sKKzY3OTQ4IGFkNzQ0N2ExNjViYmZhYjVjMDI2MmZhZmQxM2I3OTUwNjU5MjMwYTAgcHkzaworNjc5NDkgMWUxMjE0NDEwMzc1YWFkZWUxY2U2MzBkNGE5Yjk2Y2ZmNWUwOWNiMyBweTNrCis2Nzk1MCBkMjgxZWJmOGVhMzBmNDY5NTRjMTJhOGM4YmM2YTRlYTc3Nzk3NjcwIHB5M2sKKzY3OTUxIGU2NzM2MzJlMTg4NTY1M2MwZmU2YTRlMTFjZTU2MWVjZDM3ZThlOWQgcmVsZWFzZTI2LW1haW50Cis2Nzk1MiA0MWQ3ZDhmMDg1MmIyODQ3OWNkNWJlYTRkZGRkMTQ4ODk4ZTg3ZjJjIGxlZ2FjeS10cnVuaworNjc5NTMgZTJiYmJjMDZkOTJjODI2MWZmM2FjN2JhNWE5ZjU1MGFlNjYyNDdiYyBsZWdhY3ktdHJ1bmsKKzY3OTU0IDkzZGE5ZjE0ZTViNThiZGE1ZjIyOTMzMzMyNzQzNDBjNWRlNjVjYWIgbGVnYWN5LXRydW5rCis2Nzk1NSBhZmY2ZTlkZGRkOWY4MjlkNjVlNGViZjNiYWM5NjNkMTAyMWU3MWJhIGxlZ2FjeS10cnVuaworNjc5NTYgMzk5MWYzN2ViY2EzMWNjYzc3MTNkNjIwNmViOGVkMWMwOTg1ODRlMSBweTNrCis2Nzk1NyA3NWI0ZTMyMzQwYThhYjEwYjFiY2I2MDVmNTU0N2M0OTJmZGVjZTBlIGxlZ2FjeS10cnVuaworNjc5NTggMWI4ODkzMmRlZmRiMjhiNGQ3OTliMmU3OGI3YzlmMWU0ZDMxZWJmMSBsZWdhY3ktdHJ1bmsKKzY3OTU5IGJjZGZkYzM2OTU3MDg1MGEyM2E3ZmIxMTRmYTVjNDFjNzg2NDU1ZjMgcHkzaworNjc5NjAgYTI4ZjllNzUwYjY0ODMzZWZjOTNlYmY2OTlkZjYyZTE2MjhkMzVmYSBsZWdhY3ktdHJ1bmsKKzY3OTYxIGU5YTBkZTQ4Yjc0Nzg0ZDA1MDM3MTQ4MTE1ODY2MTBkOTA5Y2I5MzUgbGVnYWN5LXRydW5rCis2Nzk2MiAwMjQzMGU0NGQ1MGVjZGVlYmQxZmFlMDlkYWFlZDkwMTU5MTk4N2ZiIHB5M2sKKzY3OTYzIGZiZmExZDY3MjRkZThjMjFhMDIwMGQ2ZTBjZjM2YjgwOWVjZjM1YTYgbGVnYWN5LXRydW5rCis2Nzk2NCAxZWZhMTMwNGRmYjMyNTA5NWFmMjUxNDU0ZGFlM2IzYjYzZTczNGI2IHB5M2sKKzY3OTY1IGE5ZTVhYzRmMDkxY2Q1ZGMzZjY3YThhZTBhMDRkMmNkOTA1YjE4MDcgbGVnYWN5LXRydW5rCis2Nzk2NiBhNjQ5ODg0Yzc5YTgxNDY4YTZiYjNiY2M1NDI0MzBhMGFiYTI0MDZmIHB5M2sKKzY3OTY3IGNiMzUyNGI2NDA3ZjZlMzhjZWY1OTU3MjU4ZGFkNzBiOGU3OTJjNDIgbGVnYWN5LXRydW5rCis2Nzk2OCBlYTg3Y2MwNjhjNTZmNDhhMDk1OTU5Y2Y4NDVkZjViOWIxNGRjNTIxIHB5M2sKKzY3OTY5IDhiZmI0NjY0MTRhYzliNTc0Njc3NDAxZWM1ZjI4MTE0MTIzYTk4MDMgcHkzaworNjc5NzAgMDI3YTZmM2FjODc0NzdjNWVjOTQzNjY0MjE0MTk3NDFjZGYwNjNhZiBsZWdhY3ktdHJ1bmsKKzY3OTcxIDVlYzNlM2Q1NGFhNjVhZjI2MzgwNGZlNTIxNTU3ODI3NTQ5NTA4YTIgbGVnYWN5LXRydW5rCis2Nzk3MiBhNGE4OWQzZTQxYWY1OWM0YjU0Y2VhMTg3YTc4YjI5NmNjNzJlMDM5IHB5M2sKKzY3OTczIGRiMGRkY2UyOGQwZjgyNzM0ZmE2ZDY4OTQwZmRlYjdmZWQzNTlhYzMgbGVnYWN5LXRydW5rCis2Nzk3NCA3YTAxMTY4MGUxNTFiYTJlMjNlMjE3ZjFjMDMxMjg5NDdlMmExM2Q1IHB5M2sKKzY3OTc1IDQ0MjA3OGYwNzlhYTAyNTExYTdjMjRhODhjZTE2ZTljNWIzZGZiYTEgcmVsZWFzZTMwLW1haW50Cis2Nzk3NiA5ZGIzZDNkMzljYzNlNzU3NWE5MmJhYzE0MTVkZTk1ODgyMDI0ZDUwIGxlZ2FjeS10cnVuaworNjc5NzcgMWUwZDIwNWZlOGQ3MGU1ZjlmMWQ2MTMwZWM2MzBhYmFmYTc5NTI3MSByZWxlYXNlMjYtbWFpbnQKKzY3OTc4IDZhMDU2NmE1MTIxODRiZDU1NzlmYzQzY2UwZGZkMDE4NzBiYmQzOTEgbGVnYWN5LXRydW5rCis2Nzk3OSAzNDFiZjc2ZWI2ZWI3MmI1Mjg2NWQ0MzRhZmNjNmYyMDI1ZTJkMjZiIGxlZ2FjeS10cnVuaworNjc5ODAgMGVhNGJkNTlhNDBkNjZjNzEzNTE2OWI0ZTBiMDY2OGZmNzc3MWM1YyBsZWdhY3ktdHJ1bmsKKzY3OTgxIGU3NzIwNjEyYTc5Njk4NTkwOTJmMzM1YzVjNDc0N2Y0NTgzMzM2OGIgcHkzaworNjc5ODIgNjQxZDI3OTAzYmM1NzQ5YWUwZjdiMjcxZmI5NTdiZmY5NDlmNDllOCBsZWdhY3ktdHJ1bmsKKzY3OTgzIGJkZWQ1YmQ2MGU5NTRkYTY1MzVjYjJhMjY1NDRjOTViMTRlNjI1OTggcHkzaworNjc5ODUgN2M3NjI0YTMzZjhiMzIzMzQ0YjkxMDRhYWJhOTM5Mjc4YTQwNmUyOCBsZWdhY3ktdHJ1bmsKKzY3OTg2IDM3NTU0M2I5ODI0NDYwMjllZDNjNzRkOWRmOTlhM2YyNTY2MGYzMDUgcHkzay1pc3N1ZTE3MTcKKzY3OTg3IDczZGNiOGI0MjFmODBkMTk1YzZhMjc4MzMwMGFjZTljZDUxZWNlNDMgcmVsZWFzZTI2LW1haW50Cis2Nzk4OCAyZjE1ZDU5ZGZiODA0ODgwMThhYmU5YjNkZTMxMjM3Y2NkNzA4MDkyIGxlZ2FjeS10cnVuaworNjc5ODkgNDU3ZWM4ODRhZjA0NWMzNWU5ZDY5ZTkxYzQwNzZlZmM4OTczMDk4YiByZWxlYXNlMjYtbWFpbnQKKzY3OTkwIGUyZWJhYzA2MjQzMjIxM2NlNDJmODUxMmNiNzVjOWIzN2Y0MTJmZTUgbGVnYWN5LXRydW5rCis2Nzk5NSA2ZmI3ZDhmNDI3M2YyYjA3NTAyMTFhMjdkYjJhMGZjNTRiYmMwYzdmIGxlZ2FjeS10cnVuaworNjgwMDYgMmFkNjhkZDBhYzkwZjdhNDI5NzRiNmQyNDVlOTgxY2Q1YmJkNTFkYSBsZWdhY3ktdHJ1bmsKKzY4MDA3IDg3ZjU0MzJiOWVkYzhkOWE1MWU3MjAwZWU2YTdkZGYxYTM5MWNjNmQgcmVsZWFzZTI2LW1haW50Cis2ODAwOCBiOTVkZGU5NTk5NmE5YjNhMTQ3ZGJiZGNhYzI0YjQ1ZWVmY2IwYjU0IHB5M2sKKzY4MDA5IDg3Zjg2Y2NlNDNiMTUzNWJmYmFkYWExOTJiY2NlYjMyNTM4NmRmZjUgcmVsZWFzZTMwLW1haW50Cis2ODAxMCAzODM1N2UxZDIxZTZhYjk4MjllYTExNDFlNTgxYzhjZGEyYzE2MjJmIGxlZ2FjeS10cnVuaworNjgwMTEgYjllZmRkOGY4YjMwOTFlZmM4NzQyMzdkNGVjNTczMzY4YmM3ODQyZiByZWxlYXNlMjYtbWFpbnQKKzY4MDEyIDlmODM2MzA4ODUzNmE3Mjc4MTU2ZjA1OTc5ODI4MTAzNjcxMmYzMzggcHkzaworNjgwMTMgYTFhYmZlMDI3MDc0Yzk5NGU2ZTRjNjYyMTM4ZjZjNzhmMjg2MzIwMCByZWxlYXNlMzAtbWFpbnQKKzY4MDE0IDg5YTNmNWM5YjUwMzIyNGNlYTcxMDUwOGNjMmU5MTU0NTVmZDkxNTEgbGVnYWN5LXRydW5rCis2ODAxNSA3MWU3MzJjOTMyMzQ0NWEyMGQzMzMzNGNmMDYxYjRhYTdjYzg2YjExIHB5M2sKKzY4MDE2IDcwZGUyZTA5MWU1ODI2YzBkZjliMWI2YmJiZDJjODVlOTQ4NjJmY2UgbGVnYWN5LXRydW5rCis2ODAxNyAxOGQ4MTdhN2EzOWZhOWY4YWRlM2Q0MDI0OWUyMzExN2QzMGQ1NWYwIHB5M2sKKzY4MDE4IDM0YzczYTQ2M2IzNTVhOGIxMjE2MWNhYmVhMzQ3MmNjNGEwMjBjMDEgbGVnYWN5LXRydW5rCis2ODAxOSAyOTMyYjM3ZjFmMDQ0MjA1Y2VkYWNmM2Y0ZjdhOTk4YjcyMWJkZGE5IHJlbGVhc2UyNi1tYWludAorNjgwMjAgNDRlYTllYWM4YzViNTI1MjJjNGIwZGU4MDQ0YTdjZjdlNjAxMmEyYiBweTNrCis2ODAyMSA3ZjVhYTdlNTRhZDVhMTI0MjczYWZjYTg2MDc2NzI1OWNiYzJkNjQ5IHJlbGVhc2UzMC1tYWludAorNjgwMjIgZjdhM2YxNDE2MWUxNzU3N2NmZTUyMTY3ZGE5MTQ3MWEzMWY5ZmM1ZSBweTNrCis2ODAyMyBhZTFlMTE0MjM3Mjk1ZDlmZjFjMTUyN2I0MGYyNWM3NmUyYTBlY2Q0IHJlbGVhc2UzMC1tYWludAorNjgwMjcgMWFlYTgzZTBhZTlmMDJlYmM5Mzc1ZWZhMGQ3NjkwZGFiZDJiODQxYyBweTNrCis2ODAzMCBiYzFiMzc0Mzk1ZjQwMDAxYTkyZDhhYWQ0MTQ4NjEzYmI5NDA0MWZhIGxlZ2FjeS10cnVuaworNjgwMzEgM2Q0NDdiN2IxMzYzNGZmMzRjMGI5YzdkZTM0MWNhOWU4NWFlM2NkYiByZWxlYXNlMzAtbWFpbnQKKzY4MDMzIGYxNDYyZDkyNGE5YzIxZWU5ODA0ZGE2YjBhMjk3ODFjMDM2NDg1NDAgbGVnYWN5LXRydW5rCis2ODAzNSBhZDIwYjY5YjE4YjcwYjE4MjcxNTY2YThlYmI1MzQ1MTMzOWM4MzliIHJlbGVhc2UyNi1tYWludAorNjgwMzYgOWMwNmZiN2QxMjYwMmVjN2Q2Y2RlYjY4MDFhNjYwYmI0ZThkZTZmNyBweTNrCis2ODAzNyA4ZmE2MTFiYmIwNzdmZjcxMDkyNzU5YmQ1OGM2M2YxODE5OTgxNGFkIHJlbGVhc2UzMC1tYWludAorNjgwNTEgN2FhZWY0ZDVmODgwZTc4NjNmZDYwNjJlMmUzMWZlZGNkNGUxZTRmNCBsZWdhY3ktdHJ1bmsKKzY4MDUyIGU3ODJmOTcxMTZkYzFjZjEyODIxNDVlYWJkYmUyZWI1ZDQ1OTQ0ZjEgcmVsZWFzZTI2LW1haW50Cis2ODA1NyBmNzNmYzQ0MTc0NGYwNjU3ZDgwNzMzOGRiMTFlOWVlODYzYjQ2OGRhIGxlZ2FjeS10cnVuaworNjgwNTggNjE4ZDMzOTdmODg4Y2U1NDMyNTFmODI4Y2YyYjY0YmU0YTY0MWNlNSBweTNrCis2ODA1OSAyOGFlY2JmMWU4MzJiMDVmNjc5NGRhYzdlMWM1ZTlhNmM0M2ZhMmUxIHB5M2sKKzY4MDYwIDQzYWFjYmU2NDdjYjNmNDlhNTdlMDUyMWVmNjQ3YWJkMTc2MTBhMTcgcmVsZWFzZTMwLW1haW50Cis2ODA2MSA3Mjk5OTk5MjllZjRiNWJkNmFiMWQxNTMwNGNhMTRmMzU1NzNiZTI3IGxlZ2FjeS10cnVuaworNjgwNjIgMTE1NGQwMjQ1YjY2MTM4YjRkM2QzNzVkNTFmY2RhN2RmMjQ5ZTU3MyBweTNrCis2ODA2NCBhZmFiMzE5MjUyZTc5MjNkZjQxOGQwYjlmM2FjYTFhZGFjNDBjYWNhIHB5M2sKKzY4MDc0IGZhNmZjNTUyNmY3MWYxMjM0MTY0Njk2MDYzZGMzNDU4Y2Q1OTAyYWMgcHkzaworNjgwNzUgMmM4NDRjZmMzNzVhMzFjMjI4NmUzODIyOWU5YWIzYWQ2OGNiY2YyNSBweTNrCis2ODA3NiBjMzM4YmVlMjExNzM5NzA1NjcwNmUwZWI3OGM5ZGI0YzU2YTA0MTJmIHJlbGVhc2UzMC1tYWludAorNjgwODAgNzQzMTYzOGU3ZGQ4ZmFjYzQ1ZjliM2NkY2ZiNWNkNTY2YzY4YTEyNCByZWxlYXNlMzAtbWFpbnQKKzY4MDgxIDhhNDgzNDM5Y2I1NWZlYjNmZTkzY2YzZjA1NzI1OTNjNTJjOWIxMjUgbGVnYWN5LXRydW5rCis2ODA4MiBkODk3NWYyNGFmOGI1OGRmOWNlZGVmN2RmNDNmNmJiODljZGM3OWE1IHJlbGVhc2UyNi1tYWludAorNjgwODMgN2Q1NTBjYjUzNjllMDVhZTZjN2ExNzQ2N2I4YTBkOGUyOGM4ZTFlMiBweTNrCis2ODA4NCAzZTE4YjQ1OWQ0Yzg4NDFkZTc5MDM4OTc1MTE5MDQ3ZGU2YzA4NjVjIHJlbGVhc2UzMC1tYWludAorNjgwODkgYjc1ZDc2OTE1MWJhYThmMGExMTQ5ZGFhOGM0MzFjNzQ3NjNkMmVlMiBsZWdhY3ktdHJ1bmsKKzY4MDkwIDAyZmNkOWM1ZmVmYmY5ODBmYzAxNjhiYmVhNmM2ODE0YWIxNDU3YmUgcHkzaworNjgwOTEgZWY2NDljZTliNzgzOWEwNzQ3YzQxMDg3NzYzOWU1N2NhOTI2NzA1NSBweTNrCis2ODA5MiAwNmY0YzM3ZDY1Zjk2ODlhYTVjMjM4MGY5MGUyZmU2NTRjYzJiZWJkIGxlZ2FjeS10cnVuaworNjgwOTMgMTVhNjYyNjA4NWY0YTUxM2VlNDI0Yzc4ZTVjODJhZWEzYzUxMmNiMyBweTNrCis2ODA5NCA2ZDE2M2MyYWVmNTZiOGRhYWEyNGVkNDhkYWViNmY3YmE1ZjAzZDU5IHB5M2sKKzY4MDk1IDM4NTNjMTU1MzJjNGVkZTMzZGQ2OWE3NTdmMjFjNWYyMGM4Y2QzMDcgcmVsZWFzZTI2LW1haW50Cis2ODA5NiAwMjJkOTk5YzRkMWE5NGIxN2I0YWM4MWYwZWRmNzdiOTZlZTMwZjRiIHJlbGVhc2UzMC1tYWludAorNjgwOTcgOWMyYWM3ODY2NmQ0NTc4MzI1MGZmNjNiY2ZjMDAwY2JjNzg1NzM2OCBsZWdhY3ktdHJ1bmsKKzY4MDk4IGRjYmU5OWIwY2U4MzIyNzcxMzZjYTUyNTI0Njg5MDI4MDQzMThhZGQgcmVsZWFzZTI2LW1haW50Cis2ODA5OSAxYzVkOTQyMTI4YjY4ODA1N2ZmOTVmNTM0ZjhhZTc5OGJkNzMwNjUxIGxlZ2FjeS10cnVuaworNjgxMDAgYzQzMjI2ODc1YmQ0MTA3OWIyNTk4MGI2NGQ2YTNjZjNjZmEzYTFiNiByZWxlYXNlMjYtbWFpbnQKKzY4MTAxIDdlMWE5NWIyNmE1Y2E2Y2JkNDI5N2I2NWZhNDk5MDIzZDY0OWNiODQgcHkzaworNjgxMDIgNWNjMDczZDY2MWY3YjZkMzNiMmMzZWM1NDA2ZDY4OGEyNTFmZGZlYSByZWxlYXNlMzAtbWFpbnQKKzY4MTAzIDUwNzQ4MzBlOWI5OTQ2NDFmMTU1ZmE4OTViZWY5YWNjYWIxZDFjM2UgcHkzaworNjgxMDQgNzIzOWZiY2RjZDRmYmE2NWIxY2EzNGNhMzllNjk3MzExZDJlZTVjZSByZWxlYXNlMzAtbWFpbnQKKzY4MTEyIDEzZGFmOTlkYjAzNTc3MGE0Mjk4NzFjNDMzNjcwZjk0ZGZlYzI2NmQgbGVnYWN5LXRydW5rCis2ODExMyBiZjZmMmRmYzMxMGJhMTRkOTkzNTZhMTBhYzcxOTRiMjI4NTFjODFmIHB5M2sKKzY4MTE0IGQzMmE2NjlmOTZkYTk5M2UwOTNlNTg4ZDJkZTNiYTBlNTUwMGUxNjIgcmVsZWFzZTMwLW1haW50Cis2ODExNSA5MmFkOTY1NDQyNTI1ODA0YTdkYzY3NzdjNTAwNTZkMTExZTg3OTc0IGxlZ2FjeS10cnVuaworNjgxMTYgNTlmM2JmMmEzMjhkNDQ4NDJjNmMyOTkzZjA2ODk3MWU3NTFjNjNlOSBsZWdhY3ktdHJ1bmsKKzY4MTE3IDkyN2Y1ZDkwODdmNWExNWU1YTQ5NGFjOWRhZjM4NmNmYzY5NWZlOWUgbGVnYWN5LXRydW5rCis2ODExOCAzOTRlMzg5ZTg5ZjA5YTZlZjM4YTBiNGE1ODYyMzA2NGNiNDJhMTE1IGxlZ2FjeS10cnVuaworNjgxMTkgMjBlZGI3ZTUxNTlmNGRjMmY5MzUxZGFmZDBjMGJkOTBkNzMzMDE5MSBsZWdhY3ktdHJ1bmsKKzY4MTIwIGQxZTUzNmM2ZmEyY2IyMDVmNGFkZTNhNzA4MDFhMzFmZjJmMzU2MDEgbGVnYWN5LXRydW5rCis2ODEyMSA2ODNiM2Y4YjEyYjQ0YTIzNzg5ZjJjNGI3MTg0OWJiOTU0N2I4OGM1IGxlZ2FjeS10cnVuaworNjgxMjMgZjM1NDAzYTAxMWI5NGM1OGE5Y2I2NThjMDFhM2U2NzZkYTE4ZTc0MSBsZWdhY3ktdHJ1bmsKKzY4MTI0IDFjNGU2NzhhMWQzYjFlZGZiMTM3MmIxY2NhOWQxZWM5NWNjYTgxYTEgbGVnYWN5LXRydW5rCis2ODEyNSAxYjgyZjJiODJmZDkyMTFhZDUyNmYzZjhlOGZhOTM3NTQ0YjI4OWMyIGxlZ2FjeS10cnVuaworNjgxMjYgZTVkYmYzOGIxZGFjMWE3MWM4OWVkZmE0MTFkNGE0MWM5NDQ3MDJhZCBsZWdhY3ktdHJ1bmsKKzY4MTI3IDM2ZTk3OTNlYmI1ZDQ4M2M0ODBlMjMzYzk1OGQ5Nzg4OTlhM2Q5OTEgbGVnYWN5LXRydW5rCis2ODEyOCAwOTliNDhmZTkyMmEwZGYyNjdkMzk4NDQ4ZmM4Y2Y0YzZmY2RjNmZiIGxlZ2FjeS10cnVuaworNjgxMjkgY2FiODUwMWY4YWU2YjMzYjI5NWQyZmMwYjlkNGUwY2U5MTY1YzY5NyBweTNrCis2ODEzMCA4NDYzZmY4NjFhMjZkODRkNzI5OWNmZGEwNjAyMmMzZTUzNDkxYjgyIHJlbGVhc2UzMC1tYWludAorNjgxMzEgNDM2ZTYzMTdjN2I0YjkxMzQwMzNkMWMyNTA1MDkzZjcwOTgyNDBmYyByZWxlYXNlMjYtbWFpbnQKKzY4MTMyIDRmYmY1MmM5OWI2ZWQ0MzRkYjI0MGM3YTA5NTQ4MDU3YzIzOTg0MzUgcHkzaworNjgxMzMgYzdhNDVjYmEwNzg1ZDZjYTU2YjMzMjEyMzY5MGFmMzE2ZWEyNjYwYSBsZWdhY3ktdHJ1bmsKKzY4MTM0IDBlNWIyNGFkZTRhMjE3NmNlMGM1MTVjNGJlYzU4NjA0MzYyZmMzZGUgbGVnYWN5LXRydW5rCis2ODEzNSBkZjM5MjNjMzZlYzU5ZjdkMjM4ZjdhYzg4NGUwOGU5ZDJiYTA4ZmUwIHJlbGVhc2UyNi1tYWludAorNjgxMzYgMDZlMWY3ZDlkYTgzZGU1NDJhZDk0YTQ2NmJkZDg2ODczMjc3OGFjOCBweTNrCis2ODEzNyA5ZGQyZTI1N2FjN2MyMmU1ZjRiNDczMjc4MzhiMmUwMDk1OGYwMDhhIHB5M2sKKzY4MTM4IGJiMzEyMjNhYmZhYThjNWFkNjJkMjk1ODRiYThhZTlkMGY5MmQ3Y2UgcHkzaworNjgxMzkgOWY2MDRkMzNhNDJmNzBiZThlMDRhNDE2ZTQyZTA5Y2I0YTQ3MTE1YSBweTNrCis2ODE0MCAyYjEzZDIwMmE0N2Q3Mzg2YWNhNDQwMjQ0NDM4OGM3MDA2OWUyZTEzIHB5M2sKKzY4MTQxIGFkNGU1MmQxNTRmNGEyOTg4MzZkNzU3ZWY0MjAwZjcxNjdhZDJiODcgbGVnYWN5LXRydW5rCis2ODE0MiA1YzZmZWQ3M2I2YTkxODJhOTg1OGExYTg5N2NiZDdkNWExODE0ZTkwIGxlZ2FjeS10cnVuaworNjgxNDMgMmRlYmJlNjQ0NWUwZmQ5MWJjYTIyZmU0NjMwZTgzNzQxZjE5MDQ3MiBweTNrCis2ODE0NCA0ODAxOTY5ZGFkZWUzY2ZkN2YyZGU2NGFjZTMxYWRkZTFjNTVjOTg3IHJlbGVhc2UzMC1tYWludAorNjgxNDUgNjA5N2Y5N2IwZDIyMDczYmEwZTMyMDllNjgzYzhkNTA0YTQxYjcyMyBsZWdhY3ktdHJ1bmsKKzY4MTQ2IDQwZmE4Njg5ODFjY2Q4ZjdlNmYwYmUzOTg3ZTEzNTVjNmIyZDEwNTggbGVnYWN5LXRydW5rCis2ODE0NyBjYjM0NzljYTgxYWNjYWVhODQ4ZjRkZGY3M2ZiYjE5NWI1NmI2M2I2IHJlbGVhc2UyNi1tYWludAorNjgxNDggYmYxNzM0YzZiNmVkMjIzY2YxZDFjOTIxMmZkNWQzZTNhZTE0OTMyMiBsZWdhY3ktdHJ1bmsKKzY4MTQ5IDg0Y2IwMWM1NjQ4YjE3NGQwN2RiMzU2YjViZDAwNGQ4MzI5ODIwMTMgbGVnYWN5LXRydW5rCis2ODE1MCAyNTNlMWM3M2ZkZTY5Y2FlYjc4NDIwYTIxOTc4ZDQyNTUwYzRkYTJhIGxlZ2FjeS10cnVuaworNjgxNTEgNWM0ZjYzOWM5MjAwODk4NjJjMmYxZjBjNjU1MjBiOGFmNDcxNTUwYSByZWxlYXNlMjYtbWFpbnQKKzY4MTUyIDA4ZGJhN2Y5NzAzMDE5YTg5MDJlN2VjYTE4ZmQ1MTVlZDFmYmQ3MTIgcHkzaworNjgxNTMgMmYwMWY5OTVmNzA0MTJiNzAyM2Q1YjE5MTNkMGIyODg1OTM4ODM4OSBsZWdhY3ktdHJ1bmsKKzY4MTU0IDM0ZDUxYzMwYTRmNGJmMWM5MjM0ZGVlYWMyZmM0Zjc1MDNmMzgyNjIgcmVsZWFzZTI2LW1haW50Cis2ODE1NSA5NGNmYmY5M2Q3MWI0YzYxMjVhNjE4ZjY4YjEzZGVmMTI0YmZlZjk4IHB5M2sKKzY4MTU2IDFkY2IxOTIxNmI2NGQ2MjBhODBhYzRlYzBiM2I4MDVlMjcyOWQ0ZTEgbGVnYWN5LXRydW5rCis2ODE1NyBlN2FlZTdjOTlkM2I3N2MwYTdiMThlNGM3YTgxMWVkNzIyMGYwMDg1IHB5M2staXNzdWUxNzE3Cis2ODE1OCA3NTM5NTRkMTZlZDIxNjAxMmM0OWQzMDdiM2E5YzBmNzY2YTEyMzg4IGxlZ2FjeS10cnVuaworNjgxNTkgMjY5NmEzOWJjZjBiMDU3OThjMmQyNjVmNTcyMTdhNTVhZjRmZjllNyBsZWdhY3ktdHJ1bmsKKzY4MTYwIGM1MGIxMThlYWYzNDc3OTRiNGYyNGY5ZTk0MjA1ZDVkNjA1MjIzNDYgbGVnYWN5LXRydW5rCis2ODE2MSAzNTViYzEyMmMxNDU2NWNlMjBjZGM5ODk1ZGQwNDAzNjI2NjZkMGIxIGxlZ2FjeS10cnVuaworNjgxNjIgZGU3ZDE2N2I5ZmYxMGRhZjJiZWYzMGE3NzQ1NmY3ZjczYTk4ZTY0NyBsZWdhY3ktdHJ1bmsKKzY4MTYzIDY5YTI0MGU1ZjAxZGNmZjZmMzg0YjUzZGIyYzBjOTlhMjViOGVmYWYgbGVnYWN5LXRydW5rCis2ODE2NCBlMGM2NmJiYjQ4ZGE4M2VjNzUxNDc4MWJmYzJiMWZkZDZhN2MxYjFkIHJlbGVhc2UzMC1tYWludAorNjgxNjUgNDAwY2ZjYWE4ZDQ2ZWU4NWMxMWNiNjFiMDhhNWNlYjA2NmM5OGU0ZiBweTNrCis2ODE2NiBjYTg2YWJlMTU5MjYzOWE3NmUwYmE1ZTliNDczZDVlMmFjODA2MWM2IGxlZ2FjeS10cnVuaworNjgxNjcgZmYxMDY0NTMyNTRhMWRkOWZlOTA1YjU4NTQwYjM2YWYyMzJlMDJkNyBsZWdhY3ktdHJ1bmsKKzY4MTY4IGE1NDljOTI3MDc3NjczZWFkZTk1NGU3OTE4MmVkYjdhN2M5ZjJhNmMgcHkzaworNjgxNjkgYWJiY2U0OGI5YWU0MGE2OWFjYzZlNDI0MWJjOTRkMGEyMjQ0MzYzZiBweTNrCis2ODE3MCBiY2Y0NmYzM2JkOTA1MTZkNzNhYTdhNDliMDAxNGQ4MmU4ZDUwNzYzIHB5M2sKKzY4MTcxIDhlZGRkNjY1ZTliOWZiNmFmZWRkYzRiYjExYmU2YTgzYjJjZjg5MjAgbGVnYWN5LXRydW5rCis2ODE3MiA2MzZhMGFjOTYwN2I3YTNhNDBjYTBmY2JmMzA0NDFiYzEwZTYwMjgwIGxlZ2FjeS10cnVuaworNjgxNzMgMTI5N2JiNzFkYzY0YjE2YzIwODJlNmI3Y2FlMDBhM2E5ZGE5MTdiYSBsZWdhY3ktdHJ1bmsKKzY4MTc0IDY4YzlmOGI2NTg0ZDRiMWVlMWUyZmYwMWEwZjhhN2UxNGMyMGZmYTUgbGVnYWN5LXRydW5rCis2ODE3NSAyMDM4NGViZmM3MTZmMmUwYTlmNGE5MGI2YzdmZWZkMzNkY2U0NGZjIHB5M2sKKzY4MTc2IDA1ODhhOTg3OTNjZDA4NzVmMGU0NWQxZjhlMzBhZjg2YmVhM2FlNjQgbGVnYWN5LXRydW5rCis2ODE3NyBlYjM1OGRhZTBjY2FkOGE1YTU3ZWM3ZGUzNmM4YmYxM2U5NGQ4ZGNmIHJlbGVhc2UyNi1tYWludAorNjgxNzggMGM5NzI4MzcyZDA5OGFmNGNlNGY4OTkxOGIxMzkyMjk2NjkzYzNiNSBweTNrCis2ODE3OSAwMDUyZDIzZDM5ZjYxNWM3NjNlNzM1YzRlNjJhODI4MzQ1NjdkZmI1IGxlZ2FjeS10cnVuaworNjgxODAgMGUzOGM3MGI5Nzc2ZWE3YWMxZGJhZGM1Njk1NTgzMTRmNzdiNTY1ZSByZWxlYXNlMzAtbWFpbnQKKzY4MTgxIDkzMDEzMzk3OWQ3YTI5MWFkMDFjNTIzZTQ4ZmU0MTNlZTAwMDY1ZDQgcHkzaworNjgxODIgYWQ5MjEwNGQ1MDYwN2U3YTczM2M5NWNmZTU2NGVkZTIyYzAxOTRjZiBsZWdhY3ktdHJ1bmsKKzY4MTgzIDk0ZmYzZGUxZTFhNDViZWJmZmI1YzU3OGRkNzBlZDU4MTQ0OTJlMDggcmVsZWFzZTI2LW1haW50Cis2ODE4NCA1ZTE2NDk4OGJkNTFhZWFlZWQzODAxN2E3NTA2OTEyYTQ1M2ZjMzFhIHB5M2sKKzY4MTg1IGQzNjdiZTU0M2Y2Y2U4YWY0MDc2NGIxOWRlNzU2YmM4N2E2MWNkMDQgcmVsZWFzZTMwLW1haW50Cis2ODE4NiA0NDBhZGQ1MTZjZjFlMWI3MTNmZTgwNjk4YmZlZGUyODdkY2NjMTUxIHJlbGVhc2UyNi1tYWludAorNjgxODcgMzZkMDI3MDM3ODEyMzMzMjc4OGZiYjIyM2Q2ZDU4YWMzYWU5MDQ2NSByZWxlYXNlMjYtbWFpbnQKKzY4MTg4IGM0NWZlZDAzZjc0NzVjMmQyYmFjNWNlNDY2YTFlYjMxOGZkY2Q0MjMgcmVsZWFzZTI2LW1haW50Cis2ODE4OSBmYzk0YzljNDJjNmM4MDAwNjM1YTU1ZmM0NmFhNzIwZDhhNDVhMWZiIHJlbGVhc2UzMC1tYWludAorNjgxOTAgZmE1NWZhNDU1NmYwOTkxNGNkYTQxZWM0NjczN2IwZGVkMWIxM2YyOSByZWxlYXNlMjYtbWFpbnQKKzY4MTkxIGMyNzJmY2FjMjRhNGEyNWI1Y2E3NTRkOGZmNzQyNzIwMTViMDc1YjYgbGVnYWN5LXRydW5rCis2ODE5MiBmMmE1ZDc4MjhiODNlNzIwMGI2NDY4MjJhNDYzNjhlOTZhNTkwZjc1IHJlbGVhc2UyNi1tYWludAorNjgxOTMgNzM4ODY2MDkyNmFhMTQ5ZWJhYjFiYWUyYzdjOWNiZjRjNTcwY2U2OCBweTNrCis2ODE5NCAxMzRkMTczYjkzNTBiMmZlNDUzZDE4M2JhZjJmNzVmNGY2NzQwYjY4IHJlbGVhc2UzMC1tYWludAorNjgxOTUgNDI3ZDhiNzY1YTZhMDBiMDA2NzY3NzgwOTA3OTU3YTRjMjJkNTFkYiBsZWdhY3ktdHJ1bmsKKzY4MTk2IGE3ODhkNGYxMGI5NzgzY2U5M2JhZmIyZjVlYTM5YmE0NjJhZmU4MTYgbGVnYWN5LXRydW5rCis2ODE5NyBiOTkxZmU1ZjYzN2E4NWZlYWI4YWEwMDdlNDE5ZTA4ZDUwOTllYzAzIGxlZ2FjeS10cnVuaworNjgxOTggOGU3NzI4Njc2ZjdlODVhYWViYjFkODQ4MjNhMDQ1YmRiODgyNGEwMiBweTNrCis2ODE5OSBhOTJmNzFkNDZkYzRjMWMzMjkwNmMzYjEwNDkyOWU0ZjkxYjYwMmZkIHJlbGVhc2UyNi1tYWludAorNjgyMDAgMjlmNjQwNzdjNDJmODhkMWIwZDU0NWRhOTQ5NTk3ODlhYzE5NzhhNCBweTNrCis2ODIwMSA3OTM0NzIzZjdkYzRmYmRhMTUyNTUzOGJmOTY4Njg5YjhlODZhMTZlIHJlbGVhc2UzMC1tYWludAorNjgyMDIgMjYwNDVlZDBjMjZlMmNjZTFkNmY1YjFjNWZkYjI5MjcwOGY2OTFjZSByZWxlYXNlMzAtbWFpbnQKKzY4MjAzIGVjZjFiYjdiYWViMWVjNzZmODk4ODA1NTA1NjQ4ZmMwMzM4ODQ1YTEgbGVnYWN5LXRydW5rCis2ODIwNCA0ZDFhNjhiZDgwNzZjMGM2ZTM0NjVmNjI3ZTMyOWYxZjk2OWVlOGQxIHB5M2sKKzY4MjA1IDI1M2Y5ZTZlOWUwNzk5NzU0NGE5NTQxNTBhMDJkYWQ0Y2NlMDc0ODMgcHkzaworNjgyMDYgMTBjYzUzZTcxYjIxMjNkNTQ3OWQ4ZjBjZDM2ZmM3NjRjZTBiZWU1YiBweTNrCis2ODIwNyA5YTQyNWViMGY3ZWE1NGFiNGU0ODBjZGQzYzIzN2Y5M2IwNjE0ZjVmIHJlbGVhc2UzMC1tYWludAorNjgyMDggN2E2ZTNiYzYwYmE2ZGUxMjdiY2VlOTQ0YjEzMTYzZjgzOTQwNjYzOCBsZWdhY3ktdHJ1bmsKKzY4MjA5IGU3OGRjZDg3ZDczM2Y2ZjdiMjRhYjFhNjU5ZTY1MDk0NGViY2VmZGYgbGVnYWN5LXRydW5rCis2ODIxMCBhYTQ2Nzg3YjkzY2M2NTFhOGRmMjM3MjdhYjEwYzRlMWM3YTM0YzRmIGxlZ2FjeS10cnVuaworNjgyMTEgMTA0MDA1ZDA3ZWE1MTkwZTNkMjIwNmUyNjc2ZTBkNzUyYWEyZTc1MSBweTNrCis2ODIxMiA4NDVmYTdkMzY2NDIwOTBjMjQxOTBkNDQyZWI4N2U5MmExZWQzMDg1IHB5M2sKKzY4MjEzIGRlMjc3MTA3MGQ4NTJiMmM4M2MzNmZkOGU3OWQ2ZGY1M2YwYTg2NjUgcmVsZWFzZTMwLW1haW50Cis2ODIxNCA2ZTRkNmQzOTA1YTc5ZGYxYWU3M2Y3MmRiZDUyMTM1YjEwZmZiZDlmIGxlZ2FjeS10cnVuaworNjgyMTUgNjA4NTRiZGJjZjFlNWFmNzkwYzg4YTMxYjM2Yzk1MzU5ZjEzZjU1NSBsZWdhY3ktdHJ1bmsKKzY4MjE2IGIwNjZmYmI2YThiYzI5ZmFiZDFlZjhiNzY2OWY3NzVjZGY5NTk4Y2IgcHkzaworNjgyMTcgYzc1NzIwYzNlMTZlZTAyODNlYjFkNTgyYTQzMWQyMjMwYWNjNjJhMCBsZWdhY3ktdHJ1bmsKKzY4MjE4IDZlZmMxZGUzNDVmNWM5MTc3ZTQwNWRhYzdmNjc1YjFlYjc5ZTFkMjMgbGVnYWN5LXRydW5rCis2ODIxOSBmYjA5ODJjMzIxN2U0NTgwNDc3MmFjNmJkZjMzZmFmMDVmODNmYjNkIGxlZ2FjeS10cnVuaworNjgyMjAgYzUyMTc3ZjM2ODUyNzY0MGU3ZjIyOTliY2NkNTk4NDEwZGYyNjE5YyBsZWdhY3ktdHJ1bmsKKzY4MjIxIDdmYjQzMWZhNDk0NjAxODViOTQ3YjVkODVmZmMwMDc0NzY3MDcwYzIgbGVnYWN5LXRydW5rCis2ODIyMiA5ODkzMTRkN2NjNWVmYjJkZmNlZmI1NmMyY2VjMjRiYjk0Y2FiNTM5IGxlZ2FjeS10cnVuaworNjgyMjMgYzkxODRmNTA3MzRmYmI5NzRiZTM4MmYxMmM5MmFkYjgxNDU4MWNlMSBweTNrCis2ODIyNCA1YWIzMDYzY2FmNGMwODg3ODg0NDc2Zjg3YWRjZTJmNDIzMzExOTI2IHB5M2sKKzY4MjI1IDVmMjQ3NWZlNTIzOTk1MzNjZTBkZTRiYzIzOWYzZWVlNmMyMjM0NDYgcHkzaworNjgyMjYgYzNkM2I3NjBkOGJmYjBlZjUzMWEzNjRhY2Q2NzE3ZGQyODhiM2UxYiBweTNrCis2ODIyNyAwZTA1YjZjYTZhZmQzYmE3YzU5MWZhNDQ0ODBmODQ0NTY3MTdmZGNkIHB5M2sKKzY4MjI4IGU0NzliODZkYTExZGU2NGFlZDhlYzg5NGQxZmQ4OTAzNjMyZWYzMzggcHkzaworNjgyMjkgODNlZmMyNDY3ZmFmMzQ3Yjc2NmIzOTNjMWYxNDg5MjYzMmViZTk4YSBweTNrCis2ODIzMCAwNzJkZWRlZTc3ZmE2ZGQ0ODQ1Njk2N2FmNTcwZjY5YWE5OGM5YjI5IHJlbGVhc2UzMC1tYWludAorNjgyMzEgY2RkNWZhMDVjMTRkMDA5NTM2NzBlZmQ4YjYyNGU0MGJkZTg5OTlhZiBsZWdhY3ktdHJ1bmsKKzY4MjMyIDI0YTA5MzdkNzYyNDM0YmIzY2VkYjA4NDFiZjE5MWIwZDNiODk1NzcgbGVnYWN5LXRydW5rCis2ODIzMyBhZWU1NWNhMDRjOGZhMzAxZjgyZTVjZmE1ZjI0MTQyOTdlYTk1YWNmIHB5M2sKKzY4MjM0IGVlOWNlZDkyODQzYTdhNTk5MjI3ZGQ4ZTZiMDEzYTMwYWMzYTExNjkgcmVsZWFzZTI2LW1haW50Cis2ODIzNSA3MTNhM2EzOGY5NzVjYTFjNDM5ZDcyYTk1YjUxODY1ZWRiMDI3MGI1IHJlbGVhc2UyNi1tYWludAorNjgyMzYgZjg4NWM3NmYxZTk1NTEyMjZkODJlZDkyMzU0OTc2OWI3NzJkYzJkNSByZWxlYXNlMjYtbWFpbnQKKzY4MjM3IGRkYjczYTRkZmMyMDRkNTM5YjQwZGQ4YjZiOWRjZDE5MWY1OWM4ZmYgcHkzaworNjgyMzggNmRmM2QwOGI4OWU0NTBkYWQxNGE5YTIwODk5N2JlZWZiZmZmY2I2MSBsZWdhY3ktdHJ1bmsKKzY4MjM5IDIxZDdlOWU4NzU5MWM3Mjk1MzVmYjcxNWQyMDY5NmZhZGYxZDE3OGYgcmVsZWFzZTMwLW1haW50Cis2ODI0MCBiNTYzOWQyNDVhZDUzNTQ3OWQ3MTVhMjMzYmIwM2Q2MGE5ZTA0NGVmIGxlZ2FjeS10cnVuaworNjgyNDEgNzNkZWQ5NGZiOGJlYWIzOTg4MTg3ZGQ4MWEzMTM2YzY3Y2M5Yzc1NCBweTNrCis2ODI0MiA5MWNmOWVkNDZiNzIzMmUzNTVlMGNkOTk1YjhlMzk0NzA1Y2Y4Nzg5IHB5M2sKKzY4MjQzIGQzYzdlOWQ5YWRhN2MwNzIzYjNiMDBjODI2NTM1NjY3ZTQzMmQxZDcgbGVnYWN5LXRydW5rCis2ODI0NCA2YzhlZDY2NzQzMjg5MmYyNzNjNzhlODY1NWUzZjY3YWIxYWY4MTNkIHJlbGVhc2UzMC1tYWludAorNjgyNDUgYWYyMGRkMTljYzBkOTk4MDdmM2JhZjBlYjM0NWY5YWViOTUyYWEwZSBweTNrCis2ODI0NiA5MWE5MjMzOTczNDc4MzhlOWYyYTAwZDFiOTBjZTcxNThhOGEwZjZmIHB5M2sKKzY4MjQ3IGQwOTE0MzAwZTEyZWJjNWE4ZWUwZjRkZDRhNzVjZGJjNWE2YWYyZjkgcHkzaworNjgyNDggOGFhMTk1MzBmOWYyMjhmOWU4M2RiMjU2MzM5MmRiY2NhMjhkODI3NCBweTNrCis2ODI0OSA0NTBlY2JiNTZjN2I1MGViOTJhOGNlNmY5YzYyNTFlNzI3YjY4MzA0IHB5M2sKKzY4MjUwIDI4MzIxZGJkZmRjMGMwNmJkMzhlM2ExYjM4YTBkNjQ0NjAyMzQwZjkgcmVsZWFzZTMwLW1haW50Cis2ODI1MSA5NjE4ODAzMWIxYjU5NzZiYjdlYTBlNjg5ZTY0YzAzZjk0YmY3MmYxIHJlbGVhc2UzMC1tYWludAorNjgyNTIgNDIyOWE0YjE0ZjFkODkzYzM0YjdhMWQxOTY3NDI0NGM2MjhjMzkwOCByZWxlYXNlMzAtbWFpbnQKKzY4MjUzIDc4MjU3OGM5MmUxZDNhYmMxMjEwY2Y2ZTdkZjAzZTA5NWY2NmEzOTIgcmVsZWFzZTMwLW1haW50Cis2ODI1NCA1ZWJmODI2ODlkMzZiNGU1ZTkzNDg5ZThhNjY1NzE4M2Y2OWJjOTdjIHJlbGVhc2UzMC1tYWludAorNjgyNTUgZmQ0ZGE4NTVkNjAzZjVmN2Y1ODU0MzNlMWQ1NDMxYTI5MmU4NTJmMCByZWxlYXNlMzAtbWFpbnQKKzY4MjU2IGM5ZTVjMWZhMjg1ZTgzYWQ1Yzk1ZGU2YjBjYmI2NTgyODczNGY0MDYgcmVsZWFzZTMwLW1haW50Cis2ODI1NyBlODBjODA2Y2UwMmI0NjQ0MGZiMzJjYzAxMzI5NDgzOWIxODVlMDMzIHJlbGVhc2UzMC1tYWludAorNjgyNTggNDQzODdmMWEyOGEyMGI0NjY5ZTA1ZjIwZmYzNzg4ZWRkNzRiNzVjYyByZWxlYXNlMzAtbWFpbnQKKzY4MjU5IDkxZjJmYmEwMmE1MDIyMjg5ZjdkZTk2YjJhNjJlMWQyMjg0ODBmZDEgcmVsZWFzZTMwLW1haW50Cis2ODI2MCA4MWM0OWJhN2JjY2Y3Nzc5NjYyMmQxOTM1OTc0MjJjZWUyMmM0ZTU0IHJlbGVhc2UzMC1tYWludAorNjgyNjEgZmFkZjc4ZjVmOGFkMzZlZGU2MzVlNmJhNTRmYzQ4OWU5MTM1ZTI4OSByZWxlYXNlMzAtbWFpbnQKKzY4MjYyIGRiNDY0NDI2YTM2NTM3MjE3OWZiZDc4YmQwY2M5ZWNkN2I4ZDI2ZTMgcmVsZWFzZTMwLW1haW50Cis2ODI2MyAyNGIxOGU4N2Q2NjQ4OTE5MDg1MjQxNWExNzczMDNhMjUxNDU2MThkIHJlbGVhc2UzMC1tYWludAorNjgyNjQgMTU0ODM2MWJmZDJmM2JiNmY4NWVlZjVjNzY0MzdmZDFkOGNmMDUzZSByZWxlYXNlMzAtbWFpbnQKKzY4MjY1IGJhZGI0NzFkYmFlYmUwMWE4NWNjNDAwZDdjM2Q0MDQ5MjRlMWRmMzAgcmVsZWFzZTMwLW1haW50Cis2ODI2NiAyNzlhNTEwMDY4ODUwMGVkYjcyZGViOTdlMjcyODg2MTcxNzMxNTljIHJlbGVhc2UzMC1tYWludAorNjgyNjcgMDQ3ZGYwYTVmMTc0MzYwNGM2NjVmMjRhMjUxOTM2MGE1YWZjYmE5NyByZWxlYXNlMzAtbWFpbnQKKzY4MjY4IDVhNWIwYjJkMDFiOTNlYzlmYmE1NTFlMGYwNzViYzE1MjE5NjY2NDYgcmVsZWFzZTMwLW1haW50Cis2ODI2OSBiZDBlMzYxYmQ2NDIxNTFiN2IyMTIyYTVjY2MzMzgzOTVkOTc2YTMyIHJlbGVhc2UzMC1tYWludAorNjgyNzAgZmJmN2Y1M2Y0ODg4ZDI5MmY4YjFlZTQxMTEyY2I3Y2VjNzFhYTg1MSByZWxlYXNlMzAtbWFpbnQKKzY4MjcxIDZmMzBiOTcxNDhiNjU5YzA2ZGUzNDFhNDYwNGU4ZDE3NzI0MTNlM2UgcmVsZWFzZTMwLW1haW50Cis2ODI3MiA4NTFjMmYwNGY5NWQ1YWViYTQ5MGY3MGRjYTM5YzBjN2FmZmFiYWZhIHJlbGVhc2UzMC1tYWludAorNjgyNzMgYjk2ZDYxNjg4Yjg3Y2YwM2U0MDRmMDNlYTU0MTJlYjVlOGQ3ZGFmNSByZWxlYXNlMzAtbWFpbnQKKzY4Mjc0IGE2ZWUyZmY0ZGU0ZDg3M2ZmMjVmODE1NzFhMjZjMmRmNzA4YmYwZWYgcmVsZWFzZTMwLW1haW50Cis2ODI3NSA5M2NmM2E2ZWFkNjM5OGNlYWNkNDU1M2Q5NzUyNjk3NGVlMmFlMWQ1IHJlbGVhc2UzMC1tYWludAorNjgyNzYgMDViZjcwMDJlYzk0MjY1MTIwNzNhNTgzNDFhYzhlNzE2ZWIyNWVmOSBsZWdhY3ktdHJ1bmsKKzY4Mjc3IGFmYWMwY2FiYzNhZDIwNzIzNTA2YjFiYzE2MTZmOWI1ODFkOTNmYjMgcmVsZWFzZTMwLW1haW50Cis2ODI3OCBlYTdlMzA3ZGRkNTFhZjM1NGYxODUzY2JiMmE0MThjNzEwZGQzM2QyIHJlbGVhc2UzMC1tYWludAorNjgyNzkgN2FjMWY2YmU4YWQ1NTUyYjM1Nzc2MzVlNjhhNTc4OWQxYTVlMzZkNyByZWxlYXNlMjYtbWFpbnQKKzY4MjgwIGZiOTA1ODkwZDA0OWFhMzNhNDVlZWRjYzQ2NjkzMzQ1ODNkZjI3ZWQgcmVsZWFzZTMwLW1haW50Cis2ODI4MSA4YjJjMWEwYTlhMmI4MTM4ZTQwNWUxNmRlNTlhNWJhZjg4NzdmOTc1IHJlbGVhc2UzMC1tYWludAorNjgyODIgMjJiMTFjMjJjZWY4NDU5Nzk5ZGQyYjY2YTExZjA1M2YzYzc0N2RkZCByZWxlYXNlMzAtbWFpbnQKKzY4MjgzIDNiMDg2NzRiOWI0ODNmNzdjMjcwNjkyNGU2ZmY3ZjllMjk5ZGU0ZjggcmVsZWFzZTMwLW1haW50Cis2ODI4NCAxZWE1MDEzZDlkYWUwZjEyMTU0MzkyYzUzN2VkODFjNzAzM2E3MTQxIHJlbGVhc2UzMC1tYWludAorNjgyODUgOWVjOTlmZGY4MDRmMTgzNDc4MTViZGNkODA2YjAyNGNmNmRmNDY5NyBweTNrCis2ODI4NiA5NDAzZGVmYjY5ZmIxOWJmOWJkYjQyNTFmNTVmMTFlM2FmZjRmZmNkIHJlbGVhc2UzMC1tYWludAorNjgyODcgMWNhOGM2ODU5YTA3ODU0ODM1ZDlhYjdjY2U0NmNiMTU3NDVhNTQxYSByZWxlYXNlMzAtbWFpbnQKKzY4Mjg4IGJhZWRiMDY5ZTQyNTZiYWIzNDk2M2I5ZDdkNDc0NjQyZWQwYjRhZWMgbGVnYWN5LXRydW5rCis2ODI4OSA1MzY3OTg1OThhZjA4OGQzYTQwOTAzMDQ5ZmU5ZjI1ZTFlZGM4ZDlkIGxlZ2FjeS10cnVuaworNjgyOTAgZDQxYTg2ODc1MzMyYTc2YTQwYTNjZTBiNTBmZDdiNjIwY2Q4Yzc1NyBsZWdhY3ktdHJ1bmsKKzY4MjkxIDU0YTVhZmZiNmFmMDE4NTg2ODQ1ZWI3NjNlNWVmMzU0ZWEzY2M1OGIgbGVnYWN5LXRydW5rCis2ODI5MiBmNGVlMDAwNmVlMzkyZjRlZTY1MGNjZTM4ZDNiMjc1NzU3M2Y3NGYwIGxlZ2FjeS10cnVuaworNjgyOTMgZGEzNGYwMjY2NGVkYzlkNTIxODIwYzdmODVkNzc2MDlhYzBlOTJhNSBsZWdhY3ktdHJ1bmsKKzY4Mjk0IDA1N2NiNDZkZGFhZDdhOWU3MjM5Njg5NDk1OTM1Yjc0ZDc2ODkwZjQgcmVsZWFzZTI2LW1haW50Cis2ODI5NiBmODU0MzczYTY2ZTU1YmZkM2EyMjVhMzQ5MDdlYTc3NDI5NzYyZTliIGxlZ2FjeS10cnVuaworNjgyOTkgM2E1NDBlZDc5NWQzYjA2OGY4NDYyZjA1NzBhOTBjYTkyNWM0ZTEwOSBsZWdhY3ktdHJ1bmsKKzY4MzAwIGZhYzkzNTBiNDM3ZGM5ZGQxYzhmZTc1OWUxM2MzZjQ2ZWVlZTFhODYgcHkzaworNjgzMDEgMTE0NmI3YjBkNTE4YjNjNzllNTYzMWNjNmYxNWYyY2JlMmY2ZWFhMCBweTNrCis2ODMwMiA1ODRiMjYzYjk4ZGE2NGE0Yjc3YmI5NjNkNTY4NjlmNTRkNDgzYTQzIGxlZ2FjeS10cnVuaworNjgzMDMgOWQ1MDYzYjQxMWU4Nzk1NmI0M2Y3M2U2MzAxMzhkMGU5ZTUwY2NmYyBweTNrCis2ODMwNCBlMThmMzIyYjkzMWU3OTA2NDIxNTFiYjQ0ZTRhYzMwOTY4YzFmOTNjIGxlZ2FjeS10cnVuaworNjgzMDUgNmU0ZGRlMmU5NWY3ZDNjNDBkMTk3ZjllMGVmZjE0MWVjOGI0ZWZlMyBweTNrCis2ODMwOSAxM2YxODU3ZGQ5YmY1ZGE4ZTRlZmVmYmE4YTFmYzRmODM1MjhkYTU0IHB5M2sKKzY4MzEwIGMyNWU1YjYyMGE0Y2YyNDgxNzczZjhlMjc2NWExMDcxYTU4ZjRmOWIgcmVsZWFzZTMwLW1haW50Cis2ODMxMSA5MmNkMzU1MWZhMTMxYjc5OWM3YTFmNGY4NTYyMzdjNDU3Y2IzYjBkIGxlZ2FjeS10cnVuaworNjgzMTIgYmM5ZjgwZGRiYmUyNWY1MmY4YTc4Y2QwZmE3MDc1Yjc3OWU0NWUxMyBsZWdhY3ktdHJ1bmsKKzY4MzE0IDJjYWZlOTg5MTE3YTMzZGU3OTJkOTM2MjA2YzE4NzE0ZTg2MjZiNWQgbGVnYWN5LXRydW5rCis2ODMxNSA0NzQ3NDViN2ExMmE2Y2E5ZWU2NTJlNzlhMDIwYzNmY2VlMjhmMzg4IHB5M2sKKzY4MzE2IDQwYmEyYTEyNTNmYTRiZDRlMTQ2YjA1MGRmYTRmZDAwMzFjMGRlOTMgcHkzaworNjgzMTcgMDlhNDk4ZWIxODIwNTVkZWM2YjRmODZmNDNlYmJhNWRiNWIzNWI5NyBsZWdhY3ktdHJ1bmsKKzY4MzE4IGZkMGJiNjhhZDVjOGJjMWNmODUyMzg4ZjMzYzM4ODQ5MTdiYzNkOTggbGVnYWN5LXRydW5rCis2ODMxOSA5ZGUyMWU2MTU1NzdlOGZjNGIwZmI4YjA2NDJjOGFmNTMzOTE0OGQzIGxlZ2FjeS10cnVuaworNjgzMjAgMmJlNDkwYWJmMzMzM2MyMDEzOTUzZTQzNGU0NTY3MWE1N2U1NDdiZiByZWxlYXNlMjYtbWFpbnQKKzY4MzIxIDU0MzZlNTM0ZGE2ZTRhMzc4ZjljOGE3M2FkZmQyMzlkNjIxMjBkNzMgcHkzaworNjgzMjIgZGRhZWM0N2U2ZGQ5OWE2ZTFiNWZlMzQyYTA0ZWY1ZjEwYzhlOTljZSByZWxlYXNlMzAtbWFpbnQKKzY4MzIzIDZhNmYxMzhkNDE2MmNmMDBiZDQ3MmU1MjIwNTkzOGZkNzc2YmFiZjUgcHkzaworNjgzMjUgMTVjNGM5ZTMzMGU5MjBmYjZiMjUwMTMwMDRhODA5M2QzN2NjOWVlOSBsZWdhY3ktdHJ1bmsKKzY4MzI2IDg2ODVlNTg1NWE0Nzk3Mzk4ODY2MDM1NzA5MDIxNWM3OTk3ZGY3ODcgbGVnYWN5LXRydW5rCis2ODMyNyBlMTcxY2Q1M2FjNGI2ZWQ3NTc4Nzc3ZDQ2ZTFiOTliZGUwZTNjNzExIHB5M2sKKzY4MzM4IDc1OGQ4ZmI3YmQ5OTA4OTc1Mjg5NDM1OTFmOTUzY2MyYzZmYTNmMTAgbGVnYWN5LXRydW5rCis2ODMzOSA5MTc0ODk1OTcyY2IwOTFjMTMwOGRlNTQ1YWJkZjg2YzAxNjUyMmY0IHJlbGVhc2UyNi1tYWludAorNjgzNDEgNmQ5YjAzMzFkMDczYTNlZWY1NmViNTE1YjE5NmMwODQ2MjAwMGRlOSBweTNrCis2ODM0MiAyNTVlNjRhMTM3NTUxZGI1YWI2ODYwNmVhZmI1YTMyYjRhNWQ2ZTVkIHB5M2sKKzY4MzQzIDY0ZjkxZmYyNGZlNmMyNDgwMWM5MWRmMTM1ZjlmYjY5Y2NkMGMxNDAgcmVsZWFzZTI2LW1haW50Cis2ODM0NCA3MjdlZTE2NjUyMTlkZGM3ZGYyNmZlM2RhOTkxYTA0YTEyYzhmZmZkIGxlZ2FjeS10cnVuaworNjgzNDUgZTRhY2YwNzliNTA4ZGMwMTI1MWY0ZGM0NDlkOWI4ZmMyNjZhZWNhYiByZWxlYXNlMzAtbWFpbnQKKzY4MzU5IDQ1YWVmNTNmNWM3MWFjNGIzY2I4OTBkNDFjMWI5NzQ3MGNhODkyODAgcHkzaworNjgzNjAgZmMwMDAwNjgyYmZlN2MwZWQ0ZGZjMzAzN2U4MDBiMjBjMWU1YjAyYSBsZWdhY3ktdHJ1bmsKKzY4MzYxIGJlOWIxNWJmNjgyODMxY2FmYzM5NWFiMzgyNmJiNmQ0MTA5MWM2ZjcgbGVnYWN5LXRydW5rCis2ODM2MiA2MTcxOTk3NjliZDM4NGI1MTg0YmM0NmEyODY0ZTcxOGY5OGEyM2Y2IHJlbGVhc2UyNi1tYWludAorNjgzNjMgMmZmOTkxMGYxNTI2Yzg5MzQ3MjA0ZGJkOTcyMzliYWUwZTYxY2QyZCBweTNrCis2ODM2NCBlOTg3ZTBkZjhmNDhmNDEwMDU5MmE2NjdhNDIzMjJlZWI2ZmU2NDU1IHJlbGVhc2UzMC1tYWludAorNjgzNzMgODkzM2RlYmI5MzA4ZWI3MDQ4ZDc1NzVjZjRjMzQwNjAyYmNlOGQ2ZCBsZWdhY3ktdHJ1bmsKKzY4Mzc0IGE0YWY1ZTZmNmIxN2MzOTI0NmE3OWU2ZDRmZTQwZWUxM2U3OGZlNjkgcmVsZWFzZTI2LW1haW50Cis2ODM3NSA4MWQyMzY4NGY2OTRkZTExMTQzYWNmMmFmYjkxMjI3ODEzOWZlZTU0IHB5M2sKKzY4Mzc2IDAyNzZiOGZkZGRhN2Q1ZDU5NGZiMjBjNjdhYzgzY2RhNWE0OTBiODYgcmVsZWFzZTMwLW1haW50Cis2ODM3OCA4YTVhOTU5MTEwMGRlNzE3NGZhYTc4ZjM0MzcxNmU1Nzg1Y2Y0MjVjIGxlZ2FjeS10cnVuaworNjgzNzkgZmVkMmFlMWU1MGMyZmQ1NWY5NzMzMTQ5ZjVmOTE5YmFhNjgxNTk0MiBweTNrCis2ODM4MSBmMGUwYzM1MzZlMjI3MjUyYTA0M2U5MTlkOTMzZDJmNTY3MDIzMTFhIGxlZ2FjeS10cnVuaworNjgzODggNDRmMTRmZDRkOWMyNzMxMzkyZmI4ZDJlNTJjYWNlMmI1NmU4MGQ0OCBsZWdhY3ktdHJ1bmsKKzY4MzkzIDVhYzhmMGI1YTU5YmZjYzU3ZGU5ZDNlYTk0NmFjOTdlM2FmMGNhZTAgbGVnYWN5LXRydW5rCis2ODM5NCAwYjhkMmNmM2Y1NWI0MmIzYjg4NjY0OThlZDQ5YjM5NDhjZDJmYWRmIHJlbGVhc2UyNi1tYWludAorNjgzOTUgNzZmYTFkZTI3NDJhOThhMTI3ZjEyNjM4ZmE3M2YxOTI2YWM5YmE4NiBsZWdhY3ktdHJ1bmsKKzY4NDAxIGEyMjljYTNhMTJhZTJjNDZkYThkYWQxNzk0ZWI3ZTVjODMxYmVmOTMgcHkzaworNjg0MDIgZTZhMjk3OTBkNzVhZTBiYTdjZWZlMzdkZTM2Nzg0YWYzYTVkZGRjMiByZWxlYXNlMzAtbWFpbnQKKzY4NDA5IGFkYzQzMGMxNmI1N2I2YTc2YjdkY2NjOTc3NTE5ZGQ1Zjk2YTVhYWQgcHkzaworNjg0MTAgZmZmZDEwYzEyYTFiNzcyMzlmYjZiZTJlNzZlMmZkNzFkMWRjMmUxMyByZWxlYXNlMzAtbWFpbnQKKzY4NDExIGY5ZjVkOTA0N2EwNTQxZmExNmZmYjVlYzM2NDA1ZjBhZGE1NzhhYzcgcHkzaworNjg0MTUgYTNmMzI5ZjIzYjIzNmUzMzE1MzE4NjRkNTkxYWQzMjZiZmM3OTg2NCBsZWdhY3ktdHJ1bmsKKzY4NDE2IGVhNDMxOTQzYThkZTUyNjE3YmM1YTU1YTU3NjJlZDdhMDlmODNkNDUgcmVsZWFzZTI2LW1haW50Cis2ODQxNyA1ODlmNjg0NGQ4ZTBlYzNhYWVmMTlkMmM5YjYyNjlkMjJiMTI2NDQzIHB5M2sKKzY4NDE4IDM2OGRmMDA2MDc0MGM3MjYwMTcyMzI4Y2IzMjI2MDA4Y2MyNmY5OWQgcmVsZWFzZTMwLW1haW50Cis2ODQyMyBlZDNmZGJmMTA3NzU1NmYyZDAyZWRmZmM1ZmE1NTE1ZjE0Y2FkODA3IGxlZ2FjeS10cnVuaworNjg0MjQgZWRlYjkwMzhjNDA1YjExNDcwNGMzNWE0ODExNDk5M2QxNmZmMzQxYiBsZWdhY3ktdHJ1bmsKKzY4NDI1IGQ5N2FhOTQzYmViYjU1ZDM1OGNiMmFjMDYyOWFlOWM5MjgzMmYyZTMgbGVnYWN5LXRydW5rCis2ODQyNiBkOGI2NGM2NzZiY2IxZGU1ZjYyNTRmZDNjMWEzNjUzOGJjNzAyZWRiIGxlZ2FjeS10cnVuaworNjg0MjcgNWYyOTJkZWJkMjRjMzU0ZDI1Yjg2M2U4Nzk3YTExNzEwMTQ1OTVkYiBweTNrCis2ODQyOCBlNDk2ZmRiOTI3ZmE2MmQwNDgzYTMzOTVkZTFlZTU3OGY3YzA3NWI1IHJlbGVhc2UyNi1tYWludAorNjg0MjkgNWM2MjQ0ZDIxN2ZmMTFiOTczZGM4ZDViNGQwYmIwOGU3ZDljZWQ0OCBsZWdhY3ktdHJ1bmsKKzY4NDMwIDY5YTJhNGRiZDliNGY0ZGE0ZjQwNmQ1YWFkYzQ2NjZkYmMyMmFmZGUgbGVnYWN5LXRydW5rCis2ODQzMSA3MmZlNTFkNmY4MDBiY2U3N2NjNmM0NGM4OTFmMzcwMTBiYjNjMWJhIHJlbGVhc2UzMC1tYWludAorNjg0MzIgZWYzYTFlY2Q0NjYzZmU2NTRlMjkyZWEwMzFlMWY3NmY4YTU4OGVhYyBsZWdhY3ktdHJ1bmsKKzY4NDMzIGUzYzIxMjc5OTcwNmU2NmZhYzczYzc5YmEwZjRhM2VkMzAxNjBjZjkgcHkzaworNjg0MzQgNDgwZmNkZDgyMDE2MjA5ZGQ3Mjk5YWY1MzBlNGMzZGZlYjRmYWFjMyBweTNrCis2ODQzNSAzNjY4NmQ0ZDdlNzI3NWJjMjQ2MWYxMDE5ZjU2MjEyMDYyYWIzZDMyIGxlZ2FjeS10cnVuaworNjg0MzYgM2I5MzM1ODU1NDcxOTZhZWMwNDAxMDY2MTBhOGQ1ODE2NmMxMzAyZiBweTNrCis2ODQzNyAwYTY2ZTFkYzMwZjIyMzU2OTgzN2E3ZDFlZTlhMjhhNzQyZmQ1MjY4IHJlbGVhc2UyNi1tYWludAorNjg0MzggYzdjMzQ0YjYzZWNjZWJmNjMyNzNmYzhlMmFhN2I1YTgxZDkxZWVkOSBweTNrCis2ODQzOSA3Yjg2ZDZjYWMyYjE4NWUxYzU2MDFlNzdkYWUxZTA4MTZiMDc0MTRhIGxlZ2FjeS10cnVuaworNjg0NDAgZjEyN2JjYjBhYTcxMjI1ZmZiNGM1YWJkNzZhODNmZjhjZGYyNDVmNyBweTNrCis2ODQ0MSA5ZjA0MWJhM2U0YzkxZmMzM2YzY2EzOTJmN2YxMjcyYTA4OGRjNTYyIHJlbGVhc2UyNi1tYWludAorNjg0NDIgOWQwOTNlZjg5YzU2MDc1YmVmMGRjMGJkNTJmMGM2Yjg4N2U4ZDM1YiByZWxlYXNlMzAtbWFpbnQKKzY4NDQzIGNlMzczMzEzOWZhYzgwM2VmYTg0YTQ0ZGJlYjMzYjIzM2I2MTRhOWMgcHkzaworNjg0NDQgYzk0ZjAyNzlmZWRlOTc3YjI0Nzk1NjNkY2Q3MDk2Njc3MTU0NTFhNCByZWxlYXNlMzAtbWFpbnQKKzY4NDQ1IGNjZDk1YjFhYWRlOWQ0Yzk4ZGFjOTA1YzczM2E1OGYyZTRlYmFjMDkgcHkzaworNjg0NTAgYjczYmQ1YTc0YTI3ODgzN2JjMmEwMjI5N2NmODQyM2VmMTM0M2EzOSBsZWdhY3ktdHJ1bmsKKzY4NDUxIGJjMzBlMzk1YWExNGFkZWYwMDIzZDEwMjAzZTE1MzZkMzIwY2VjZGUgcHkzaworNjg0NTIgYjk4ZmU4ZGM4YWNkNmExMDQ1MGJkOWQzYWY4NjQxZDNlYWNmMDQyMSByZWxlYXNlMzAtbWFpbnQKKzY4NDUzIDM4ODZlNGM4OGZhNTk2ZDkwZTI0ODBiM2UxMjg1ZTMyYTAwNWJlZTAgcHkzaworNjg0NTQgOGM0OWZmMGNlMTdhZjM2ZWU4ZDBiODk0YTAyMjJkMjg0ODI0M2YxMSBweTNrCis2ODQ1NSBmZGNjYTg3OTNlYjlmN2UyNTExODEwZmIyZTEwMGNlZTYwNDE3OTg1IGxlZ2FjeS10cnVuaworNjg0NTYgOWIyNzZjZTM1Njk3YjI1NmE5Y2JlM2FmOWY5MTUwYThhNGVjNTFhNiByZWxlYXNlMzAtbWFpbnQKKzY4NDU3IGNhMDk4ZmMxOGVjNjA5ODAzNGJlMmU0ZjE0ZTRmMjc4NzhkOWJlNmEgbGVnYWN5LXRydW5rCis2ODQ1OCAwN2JiYzJlMjBhYTRiNTAyZmExZDc2NjQ1YTJlZTNmZTJkODkzMmE1IGxlZ2FjeS10cnVuaworNjg0NTkgZjFjYTVkZDU5YWNhODI2NGViOGJjNmI5NWUyMDk5NzE4MWMzOWI2MCBsZWdhY3ktdHJ1bmsKKzY4NDYwIGM4Zjc5M2UxNTliYmJiZTk3NWU3ZDBkYTQ2ZDliODg4YTAwNDliZTQgbGVnYWN5LXRydW5rCis2ODQ2MSBlNmY1NWM5ZWMzZDAxNGFmZTk0YzA4Yjc3NzgxNjNkNmRmMjRlZDdlIGxlZ2FjeS10cnVuaworNjg0NjIgNzkyNzYzMTZiOTRiMzhmM2RlZWFhOGIwMzcwMTNiOTNjYjYwYTVlYiBsZWdhY3ktdHJ1bmsKKzY4NDYzIDYyY2EyY2NjZGI2ZmMyMGVhMzMzYWY1ODc0ZGJmZmM4Yzg1MDY5MGUgcHkzaworNjg0NjQgOWMyYmQ2NDdiNjQ2NGViNjY1ZGRjMDIyOGU1NzAxMTFhNjU1N2I1OCByZWxlYXNlMzAtbWFpbnQKKzY4NDY1IDVkMGVhYzAxYTI4NWQ5OGVhMzgyZGE5NzAyNWI2NjVhYWYzYzMwM2QgcHkzaworNjg0NjYgYmM2NzBhOGRmNDRiYjJhMzhhMjQxYTQyM2U5ZjJiMTcyMzZkZDk2YiByZWxlYXNlMzAtbWFpbnQKKzY4NDY3IDkxZTM4NTFjOGNjN2NhMjI0M2E5NDU4NTFkYzVlNTZhYjM2NmEwYTEgcHkzaworNjg0NjggZTAwYjMyNDc0OWIwNGUyOTYzNWNiYjFjYWY2ZjAyNDkxMjJmMGM0NCBsZWdhY3ktdHJ1bmsKKzY4NDY5IDhhZjUxY2ZkZDVlOTBjMTA1MTEzMWM1MGExMmRkNTU3YzdkZjJhNDUgbGVnYWN5LXRydW5rCis2ODQ3MCAxZTA3MGI4M2NmYTk0YjcwYTUzZTRjMmIwMWI5NzkwNjc5MWQ5ZTU5IGxlZ2FjeS10cnVuaworNjg0NzEgOTM3ZjUwMGUwZjA2ZDA4MDdmZTRlMDVlMWQwYjdlM2YyYTdjZGFiZSByZWxlYXNlMjYtbWFpbnQKKzY4NDcyIGQ0NDgzZmVjZDY4NzNjMGVjYzQwNzRkNDMwZGYzNmVkOGY0YWZmYWIgcmVsZWFzZTI2LW1haW50Cis2ODQ3MyBjMzRkNzIxYzJkYzcyNDYyOWIyYWI1MWJmMTA1NTIzM2Q2NTAyNDU2IHJlbGVhc2UyNi1tYWludAorNjg0NzQgNjM4ZTMwOWVjYzk4YWU4MWEwYWRiN2Q1NzY1MGJkMDM5MGU4NWM2ZSBweTNrCis2ODQ3NSBhMGZmOTAwN2MyYWEzZTc4OGJjOTM0MDJkNTU0ODhlZWUwNmJmYzU5IHB5M2sKKzY4NDc2IDUzMDJmODA2NTM3YTdiYmMxZjZkZmJiZDE1MWMxNmYzMDA3NzQzZTEgbGVnYWN5LXRydW5rCis2ODQ3NyBkMzI2YTY3M2NiNjYwNWRmNGVhZmMxZDFmNDg4ZWMzNGFmZWFkMGExIHB5M2sKKzY4NDc4IDVjNmNiYjdhNjJiMDc2YmViNTFmZDUyNTgzMmYxNWE5N2I5YmI5ZGEgcmVsZWFzZTMwLW1haW50Cis2ODQ3OSBmYTkyMjk4NWFmNzMyMTdlYjhhZDgxZmRkOTA2NGEyYWYzN2UxM2NmIHB5M2sKKzY4NDgwIGRiZTM5ZWJkMzAyNTRmZWYzNTEyMmQzOGY5MGI0YzZhYWU1MmU4ZGUgbGVnYWN5LXRydW5rCis2ODQ4MSBjZGMyZmUxYmU4YTVlMjBkODkzZDZlZTA2NmZlMjM1ZmIyYjEzMTg2IGxlZ2FjeS10cnVuaworNjg0ODIgMmQ0NzFmZDg4YWZmYjI5NDg5MjhkZGRhYTIxZDE3YTBhNTE3NDM3OSBweTNrCis2ODQ4MyA4ZTYyM2I3OGFjYmY2YzBkNjYxZTQ2MzBhNWZiODcwMjUwY2IxMjhjIHB5M2sKKzY4NDg0IDVkNWQ5MDc0ZjRjYWQ0NTcwMmY0YTZmYmQ1MGJhZWM0NWJjZTYyODggbGVnYWN5LXRydW5rCis2ODQ4NSA5OWM0NDE2NDBmNzBjNzEwNGY3ODQ0MGY3OWVmMmY5NDQyNGZkOGQ1IGxlZ2FjeS10cnVuaworNjg0ODYgMTVhMDU2ZTBmODlmZWYyNjRhYjIwOWFhMWIwZTdlNWJiMGMyZDUwMSBweTNrCis2ODQ4NyA3NDQ0ZjU2NGUyN2QxZTlmNjU5YjNmOGE0NGYwNTdjN2Y0NjYxN2MyIGxlZ2FjeS10cnVuaworNjg0ODggOGRjYWIyNDM5N2E4ZDJmMDA3MDdlMGY0Y2VlNzcyZWZlYjg2MmVkMiBweTNrCis2ODQ4OSAyOTNhYzQ0ZDdmZjBkZjY2ZTRhNDAxZDExNjM3MGIyMDkwMGMyMGE4IHB5M2sKKzY4NDkwIDNiNWJlMGVlMzJlYWM5Nzk5MWI2N2FjNTY4NzliNDViYWZlYjQ5OGYgcmVsZWFzZTI2LW1haW50Cis2ODQ5MSBlOTVjM2FlYjRjODU4MzhkYTJhYTIwOWY2ZGM3MDI1MTg0M2E1YzFmIHB5M2sKKzY4NDkyIGVmNGJkNzcwOGFkN2IzZGMyODljNzMzZTIzYTVmYTYzZTY2NzE0ODAgcmVsZWFzZTMwLW1haW50Cis2ODQ5MyA0MGNhOGIyMTIyMDgxZGU1M2Y1MjM1YjZmNTEyMTQ1Y2ZiMzZlZDBiIGxlZ2FjeS10cnVuaworNjg0OTUgMTI4ZTIwZGE4OWViNDFmY2Y0YjZlNjEyYzkwODkyNGJlZWMwZWJlNSBsZWdhY3ktdHJ1bmsKKzY4NDk2IDU4NjFmNmUxMDg2MDc1M2QwZTc5OWEyNDU3NzdmODEzOGUwZjIyMDAgbGVnYWN5LXRydW5rCis2ODQ5NyA5NTU3NmQ4YWY3OTg5ZTM0MzViZjk1MDMwN2Q4MmNiODlmMjk0MzAzIHB5M2sKKzY4NDk4IDAyNDQ4Y2NmNDFlMDFhNTkwMzg2MGQwNGJhNWU3Nzg4OTc1MzExNDYgbGVnYWN5LXRydW5rCis2ODQ5OSA4ZTAzZGFhYWZjNzQxZGI4OTg4NmI4MTk0MTA0NzRhODQ2ZDM3YmEyIGxlZ2FjeS10cnVuaworNjg1MDAgZDg3Y2JmYzZjNWM2NzcxNDMxNWRjOTcwZDNmNzhlZDkzZjA3MDQzZiBweTNrCis2ODUwMSBiYmY0NjQyMTA5ODQwNDViYTE1MTlhMjJhZTZlMDc1OGNiOTY1ZGYwIGxlZ2FjeS10cnVuaworNjg1MDIgZWFmN2NlYjhhYjQ1NGEzZjAzYmY1MTM2N2U4ZGE0ZTQzY2QwOTgyZSBweTNrCis2ODUwOCA5ZTE4MWVlZGM5NWNhMmJiOWE1MDQ0YTE1NzY4NjAwNzcyMjBlMjEzIHB5M2sKKzY4NTA5IDA0OTY5NjNmY2ZlOWZiNjRjOTQ1OGMyMWQzNTYzNTkzMjIzNjFkMTEgcmVsZWFzZTMwLW1haW50Cis2ODUxMSA0ZDM1MGYyYjFmMmU4MzgwY2M1ZTg1ZGQ3YWI2NzI1ZjRhM2FkMDM4IHB5M2sKKzY4NTEyIDE5ZGZmZGVjNTU0N2FiOTQyZDRjY2RjYzA5ZDE1YjZhZWQ2ZDY4NGQgbGVnYWN5LXRydW5rCis2ODUxMyAwZjFlNGFiOTU2NTUxNzFmZjYxMGFmYjNjODZkMmVmNWVjZmMzNDE4IHJlbGVhc2UzMC1tYWludAorNjg1MTQgNDRlMGM2OWE1MzA0ODFkN2M3ODJjNmEwZjI1NzgxM2Q1Mjg0ZDAwZiBsZWdhY3ktdHJ1bmsKKzY4NTE1IDQzZWRjNjU4MWU0NGRmYzQ4MmNhYjQxOGUzYWRkY2U0YWU5Zjk4YzEgbGVnYWN5LXRydW5rCis2ODUxNiA5M2IyYTkxM2Q4YWNmZDA3M2JlNmE1ZjhkNjk0MDE3N2QyNmMyMmJkIHB5M2sKKzY4NTIxIGFiMDg2YWZkY2YwY2Y3ZTBmNDQ1ZjZmMjQ4OGRiOGQzZjg2NDRmYmIgbGVnYWN5LXRydW5rCis2ODUyMiAyZDg5NzcyY2MyNTY4OGE2ZmZjZDQyMjU4YTE2YmIwNmIyMTE0OTY1IHJlbGVhc2UyNi1tYWludAorNjg1MjMgMjkzNWNlZGU1OTRlMzc3ZmVjMWJmYWRmNjg3MTQyODA1N2Y4NjkxOCBsZWdhY3ktdHJ1bmsKKzY4NTI0IDc1NjYxYmY4Y2IyYzY3M2MzNjcxMzk3MGM4ODJiOWYwMWQ4ZDE3NjIgcmVsZWFzZTI2LW1haW50Cis2ODUyNSA5NWE0ZjUzMDhiZTI0Y2RlYWExOGI5NjgzNGQ3M2E2ZjQyNzc5ZWI4IHB5M2sKKzY4NTI2IGRjNDJhZGY4ODdiNTc1ZjA0MjJlM2UwZTVjMWZmZmVhMjFlZjc0YTQgcmVsZWFzZTMwLW1haW50Cis2ODUyNyBkODQxZmY2N2NjNjFiOGEyNTU4ZmE3NWEzZTBjZTA0Mjg0MWIzNjgzIGxlZ2FjeS10cnVuaworNjg1MjggNzA0NDNhZTc2YjEwNWM4MTljMDU3NGE4NWQ5ZmU4Mzk1NTUxMDFlYiBweTNrCis2ODUyOSA5MmJkMDE0MTU5MDY5N2I1OTMyMWMzN2I2YjQxMDU3ZjI4NDA1NjY0IHB5M2sKKzY4NTMwIDJmZmRmOGRkM2U4YjUwNjRhMjk1ZTQyNTlmMjU5NDhkMjI0ZjAxZGUgcmVsZWFzZTMwLW1haW50Cis2ODUzMiBkMDlkNmZlMzFiNjE5OTg3Zjc5ZmE5NDI0M2M5MDMzNGVmMmQxZTVlIGxlZ2FjeS10cnVuaworNjg1MzMgMjdkYjgyYTVjZGE5MTlkY2NhMjFmNGNmYzZkNDc5NmE5YTVlNjI4NyBweTNrCis2ODUzNCBiN2ZiZTM3ZWI4OTA0ZGY5Y2JmOTk4NWE1ZGNkYjNlMmIyODI0ZWJlIGxlZ2FjeS10cnVuaworNjg1MzUgNDkxZWM0MTFlNWM4ZmYzNmZkMTgxNDBiMmUzZmEwZGY0NjMwODEyZiBsZWdhY3ktdHJ1bmsKKzY4NTM2IDc1NDNmMTI4MjA3MzY5NGE0NjQ0ZDE1NzRiYmY5MDU0OWMzODEwMDcgbGVnYWN5LXRydW5rCis2ODUzNyAwZjFiM2YzMTFhZTAxMDJkMmY5NDg2YmI1MmQ5ZGUzMjg1OWZlYjg2IHB5M2sKKzY4NTM4IDZlZWE4MGJkY2JmNWU4ZjYxNjg4MDRmMmIwZDJmMGFiMmIwYjE3MDcgcHkzaworNjg1MzkgNWY0YzJkZTk1MDkxYjUyYzA2Y2NlZmQ5MjVkZDEzOGJjM2NiYTMzNSBweTNrCis2ODU0MCBhZDk2OTEzNTBjOTMxZGY2MTQ3OTVlMDEyMDVlODQ5YjJmNzg0OTJlIGxlZ2FjeS10cnVuaworNjg1NDEgZTgxNTRiZDMyMmNiNTY2MTJjMjQxZjgyYzY0N2U1MTk5ZWI3YmRkYyBweTNrCis2ODU0MiA4NTQwMjY4MDQwZmYwNDNmMDA4MmY0NzJhNmIyZWUwZmUzYzBiMzI0IGxlZ2FjeS10cnVuaworNjg1NDMgMmIyNzA3ZmY4YmI3YTlmMjVjNWNjMGZmODQwNWM2ZTlkNTUzOGZjOCBweTNrCis2ODU0NCBlNDBjZThmZmU2MzJkMTZjNmY2M2I3NGJhNjI1MjhjMjc3NWFlZTM0IGxlZ2FjeS10cnVuaworNjg1NDUgMzhlMThhODg0ZjNmZWU2NWQxMjA5Y2M3YjBmZTk4NjU3ZDllMjlmNiBsZWdhY3ktdHJ1bmsKKzY4NTQ2IDg3YWRjY2U0OGRlZmU2NGY1NGY4ZWI0MGUxYTRjZTAxODY3ZjU2YjkgbGVnYWN5LXRydW5rCis2ODU0NyBiYmNkNDYzNGFlNzMzYjJkODQxZDE3YWE4ZWY0NzQyMmQ3MDEyNzE1IGxlZ2FjeS10cnVuaworNjg1NTIgYmM5MmJiMjA4MTlmYzljYjU1NmNhYmI3NTdmN2ViYWYwODhjODAwMyBsZWdhY3ktdHJ1bmsKKzY4NTUzIGY1NWI4NTUzMjM5MjdiZDVlNTAyOWVmOTZkYTIwZjc2YWU2MDYwOWUgcHkzaworNjg1NTYgODcxYTFmZjQ2ZmE2OWMzZGQ2ZWE1NDgzMzIxNTI4M2VhNDQ2N2Q4YiByZWxlYXNlMzAtbWFpbnQKKzY4NTU5IDU5MzQ2MTJkNTA3MDViMDQ5YThiOWIzNzk3MDFhNjM3NThmNWVhZmEgbGVnYWN5LXRydW5rCis2ODU2MCBlOTc0OGRiNDc2MzU3Y2M2MTQyZmI5YzFkMDI2MzFiZTI4M2Q5YWZkIGxlZ2FjeS10cnVuaworNjg1NjEgYzk5Y2UwMTY0Njk5YzNkNGY2YjU4ZGQwYWEyYTdhNTUxYzE4MmRkOSBweTNrCis2ODU2MiBmNDU5OTdkOWFjNTU1NjE4YWRkMWMwYzY2Y2E5ZTc5MTkxYTdjMzQ5IGxlZ2FjeS10cnVuaworNjg1NjMgMTJhNzg3YjQ0ZGI1NDQ5ZjAwZjAxMzU1MWM2MzM3NmY4YjdjMzMzZSBsZWdhY3ktdHJ1bmsKKzY4NTY0IDJjMDNjNzU4MGFhMzhiZDM2ZjMyNmMwNDgwODBhZDZiNDczZjhjNjkgcHkzaworNjg1NjUgYmExNTIxZjI0NzQ5MDQzNDYyNTVjNTM4MmNlNmZjYmUyMTExNTQ0OCBsZWdhY3ktdHJ1bmsKKzY4NTY2IGUzMDExNDFlOTFiMTA0NjdlZDFlMDdkYzRiMzQzMDYyMTRkMWU2MjcgbGVnYWN5LXRydW5rCis2ODU2NyBlNWY5OTZjZGEzMjE2ZTRiMDExZGI1ZTAyM2QyZWMxYTdiYjE4MzMyIGxlZ2FjeS10cnVuaworNjg1NjggYTE5ZDU5NmQzNTAwY2ZhNjA1NTM0YzQxYWIxYWNjNTYzNGU5MzQ4NSBsZWdhY3ktdHJ1bmsKKzY4NTY5IDJhODJiZDI5ZWMxODg4NThkOWU4ZjZhYTk1ZWQyYmFjYTRkNTI0ZGIgbGVnYWN5LXRydW5rCis2ODU3MCA0NTRiNjk2YzFkNzMwZTJjNjZlMjU3ZGNjN2Q0ZmIyMGMxMWVlNDFlIGxlZ2FjeS10cnVuaworNjg1NzEgYzc3NmI2ZDgxNGMyM2U4YmFiYzdhMmVmMjYxMjEyZTkxYmRlYzE0YiBsZWdhY3ktdHJ1bmsKKzY4NTcyIDU5YjEyMTJhNGRiZjNmZTAxMzIyZjJlYzg2OWFjZjA3YWZkMmY2MDMgbGVnYWN5LXRydW5rCis2ODU3NSBiZThlOTU4ZGVlOTRjZWQ0YWU2YzU0NzAwNjk0ZTQ5ZjQ3NjdlOGQ2IGxlZ2FjeS10cnVuaworNjg1NzkgMDhhYzQ0MDQwOGM5ZDMyYTZlZjQzZDNiMGFmMDJkMmNhY2NkYWEwNiBsZWdhY3ktdHJ1bmsKKzY4NTgwIDlhNWQxNDVmMTlhNTEyYjZiNTgzZWRlYzg5NjBlNDJjYzA1ZjU4OTQgbGVnYWN5LXRydW5rCis2ODU4MSA0Mzk5ZTNmMTBiMTliMGExNzBhOGNiMmMxM2FjNGM2NTJjYTI2YjM2IHB5M2sKKzY4NTgyIDZlMzNhZWFlZTc3ZGQzOTY4MDU3YTg4ODUwODA3OTkzYzVkZGQ2NGYgbGVnYWN5LXRydW5rCis2ODU4MyBmNTcxODQ0YmVmNWM5YThlODA3NzBkYjM0YWE2NjI2NmQ0ODUzOTNiIHJlbGVhc2UzMC1tYWludAorNjg1ODQgYTM0OTRhNWIwNDk1NjQ2Y2VjOTdiNTE2OTVjZWRjMWUzY2YyYzRhYiBsZWdhY3ktdHJ1bmsKKzY4NTg1IDAyYWIxNjE0MjNhNTg2ZDI0ZDBmMGQ2MzZkYjM4ZmZjYzEyY2Q5MDIgcHkzaworNjg1ODYgNDEzY2NhM2ViZTgyZTAyMTdlYjI5NWI4YmZiY2Q1MzczNTYyN2RiMCBweTNrCis2ODU4NyAwMjI5MDU1YzhiZTA2ZjEwMWQzZGRhNzNhMDhlN2JkYjBmOWFiZTY1IHB5M2sKKzY4NTg4IDA5NDMzNDRhNTI2MWJjNzYwODM3YmZiODZlMmJhNmViZjE1OGY1YTMgcmVsZWFzZTMwLW1haW50Cis2ODU4OSAwOGYzZmU2OTE1MWFjNmQwNDQ5MzY4MTJjN2I1NzBkNDhkZTk5ZTRlIGxlZ2FjeS10cnVuaworNjg1OTAgZmFiNTAxMjc3YmMyYzNjMzI5YzBjNjRmMzJjODc1YjA2YTI1ODQ4ZiBweTNrCis2ODU5MSBkZGEzMTA3ZjZiYzdhN2JiNjAwMDE0NjM4MGIyMGExNDJkM2IyMzQzIHB5M2sKKzY4NTkyIGE4NThiNjFkYjMyNGQ3ZWQzYzZlZjQ5YjcxOGQ3ZGMzNzkyOGRhODAgbGVnYWN5LXRydW5rCis2ODU5MyBlNDZhMDZhMjY0YjMyZGRiNGE2ZWIxMjY4OTIyNTIxZWMyYzM0MGEzIHB5M2sKKzY4NTk0IDBmZGNlMzk5ZGNkZTBhMjNjODE3OTFjZTY3YTM4MWRhMWIzMzRhMDIgcmVsZWFzZTI2LW1haW50Cis2ODU5NiA2NWMxOTM4ZmI5ZmZmMjc4YWNjNGNlNjUyYTFkNTQ4YWI1MTZmOTk4IGxlZ2FjeS10cnVuaworNjg1OTcgYmNmNjY2M2M1YzA0OGJhOWExN2FjNGViN2IzZWQyNjcxZjEwMGM0NyBsZWdhY3ktdHJ1bmsKKzY4NTk5IDJkNDUzYjIyMWJlY2Q3ZTRlYWFkMGVlM2MyZmJiMTc4NzU4Nzc4MWEgcmVsZWFzZTI2LW1haW50Cis2ODYwMCAwZWYxZTY2NGE0YTQ1YTI5MGRhYTI5ZmI4ZDhlYzYxNzI1OTJiOWE5IHJlbGVhc2UyNi1tYWludAorNjg2MDEgZTExYzk5ZTFlNmU3ZWM4MDE2MmNjODgxMGZkNzgwM2ZlNzM4ZmM1MSByZWxlYXNlMjYtbWFpbnQKKzY4NjAyIDJkNWE5YzdlOWI0ZTMwYjlkYjE5MWE2MzRjOTc5YmJkZjY1ZGUxYTcgcmVsZWFzZTI2LW1haW50Cis2ODYwMyA0ODMyYTBiMTI4N2I3YzZiNzljNDY2MzkwNWIxNjM3NTE1YTk5N2MzIGxlZ2FjeS10cnVuaworNjg2MDQgZDJjYzI2YmRhNmE5MzVlODhhNzMxZjI0NjQ5ZjI5NmQ5ZmYwNDNlYyBsZWdhY3ktdHJ1bmsKKzY4NjA1IDA0MTMxYzcwMmQxNzI2MDY2ZDQ2MTFjMmY0N2I3YjdhNWEzMmZkNjYgbGVnYWN5LXRydW5rCis2ODYwNiAwZTA1ZTA3OGJjZWQzMzI2YWNhOTc3MDg4ZGQ5MzlhZGIwYjEyNzhlIHB5M2sKKzY4NjA3IDhkZjgxOTQxZGUwNWNkNTliOTY4NzM5MDFlZjhkZmEyYjBiMTEzMGEgbGVnYWN5LXRydW5rCis2ODYwOSBjZmY0ZmM1MmM3MDhmZDNjMDEzMDI1OGY2YTQ1ZTExM2JmNDFkYWQxIHRsZWUtYXN0LW9wdGltaXplCis2ODYxMCA2NmI4MWFjYWNiYzA1MjgzZjJmZTYxMjFjMGVlNGY4ZTI2OGI3MGI4IGxlZ2FjeS10cnVuaworNjg2MTEgMzM3OGVhZmQyN2RmNTlhNTcwZmFhNWVhZjMyYzE0ZjIwMWM2NDJlZSBsZWdhY3ktdHJ1bmsKKzY4NjEyIGFlNWVkMTU3NzRiNGY1N2FkOWE3MmEyYTFmMWJjNzRhYzczMDYwNTggbGVnYWN5LXRydW5rCis2ODYxMyBlYmZlOTE3ZDBlZWEyZDc1ZmJkNmQ0Mzg1ZTNjMTJjYjkzODAzNTk5IGxlZ2FjeS10cnVuaworNjg2MTQgZDAwODZjMTc2ZTgyNGUxZDNlYjM5OGFiYjg2OWVkODAxMjI0ZmM2YSByZWxlYXNlMjYtbWFpbnQKKzY4NjE1IGIxN2VjNGM0YTdjMzg1MDBhZWJkYTkzMDdiZDY5NmMwYjFmMjM4OTMgcHkzaworNjg2MTYgYmI4NmYyZWQxOGFhYjBlMmMyNDBiMzE1YjU0ZjM4Mjg2NmE0MjMyOSByZWxlYXNlMzAtbWFpbnQKKzY4NjE4IGJlNTlhMjNiN2MwNDE1YWVjMWQ4NDAzNGY2ZWZkMjQyYjE1NjUxYjggbGVnYWN5LXRydW5rCis2ODYxOSBlODNhYjk1ZTljODdiZGI5Mzg4MjhlMjU5OWY3ODIzZjE3ODU3ZTBkIHB5M2sKKzY4NjIwIDQyN2U0M2QwZTAzMWNmNWMwYmNjNWU2NDM5ZTQ0ZDAwNTgzNTFmZTIgcmVsZWFzZTMwLW1haW50Cis2ODYyMSA2ZGRlMGRmM2JiNGVjYjdjYzJhYzk1YzUwYWQyZWVlZGYxMjZlODFkIGxlZ2FjeS10cnVuaworNjg2MjIgNjViZWJlNGExYWEzZjkxZjUxM2VjN2M1ZmJiOWQ2NmYyNDcxYmRiZCBsZWdhY3ktdHJ1bmsKKzY4NjIzIDg4NGNkM2YxOWIyMGVjNmY5NTNmNTI5MzYyNDRjMTcxMDZmZmRhNGQgbGVnYWN5LXRydW5rCis2ODYyNCAyNjgwYTRiZWFlYTE4NjlhMDQ2OTdlYTIwMWI1MGJjMmMyMzdmMDkxIGxlZ2FjeS10cnVuaworNjg2MjggYWRiMjM2OWViN2JiZDA2MmY0MTllOTMyMWMwNWRiMTcwNGU1OTVhOSBsZWdhY3ktdHJ1bmsKKzY4NjI5IDEyYTViNjdkNTY3ZDIyMWU5ZDQ1MTM4MzVmOWZhNjhmN2JiYzkwZTEgcHkzaworNjg2MzAgYzY5OTVkYWU5OGE2OWM4M2YzZjQ4MWY0OTYwNmZiYTE3M2NkMmE4NSBweTNrCis2ODYzMSBhMDRiMWM3MTY3YmFkZGRmYTgyZTkyNzZmMjFlYjcyNzMzZmNmNjQ0IHJlbGVhc2UzMC1tYWludAorNjg2MzMgOGJlMTU5ZDZmZDQwNDNjYzZmNjFjYWRmYzZhMzRkMWRiMTFiYzllYiBsZWdhY3ktdHJ1bmsKKzY4NjM4IDJjYzQyZWZkZDNmZWRlNTFjYmRmNzE5NjE0N2IzMjdkNGJmNzY1MzggcHkzaworNjg2MzkgYzEwZjZmMTE2YWYwYzFhOGZkMTM2NjQ2YWIwNTAzYjA1OGQ1MjRhZSByZWxlYXNlMzAtbWFpbnQKKzY4NjQzIDc0OWE2Yjg1MzM3NmI2OTVkNjZkYWYyNTE5YTIzMTE0OTUxN2U2ZDYgcHkzaworNjg2NDcgMGIxYThmNTYxMTdhYzc5ZjgxMTlkMTIwODJlZDRmZmQwMmUxMDJmMyBweTNrCis2ODY0OCBjYjI5MDQ4MmExYTdmOTg5ZDRkOWUzZDIyZjk4NGQ0ZWNkZjA3YzZiIGxlZ2FjeS10cnVuaworNjg2NDkgMWUyZDdmMDc1MzI2YThhYmYzMzcwZGJlZjk0NzY3NjUwNjU2MDc2MiBsZWdhY3ktdHJ1bmsKKzY4NjUwIDFiODE3NzJjZDU5ZDc4OTk3MzMxNDIzMGU4ZmZlMGQ1Y2MxNTMxNzkgcHkzaworNjg2NTEgZGYzZmE0MGZkYmVkYTNhOTc5ZWYwMDJlZWNjM2M3MTUwYmVjMTk1OSBweTNrCis2ODY1MiA3YmM4ZTJlZWQ2OTBiYzA0NzFkYTE4ZTA2YjA3NjllM2MyMDRmODY5IHB5M2sKKzY4NjUzIDU3ZWRmODM1ZGVhMzY2MTMzNmI0YjQ3OWQ5N2Q0OGZlZjJkYWNjODYgcHkzaworNjg2NjEgZGMzMWJlNTBjNDA1MzRjNDhhMDI3N2YzMjNkOGM5NzIyZGI5MTdkNSBsZWdhY3ktdHJ1bmsKKzY4NjYyIDFhYWQ3ZDJlODk0NTk0ODU4Mzk1ZWI5NmY5ZjcxMjdjZTU5ZWQxZWMgcHkzaworNjg2NjMgNDg2ZTI1NzljOTc4YjlkMjgwOTRiNjc3OTllYmYzM2NmMTQ4YmI3NiByZWxlYXNlMjYtbWFpbnQKKzY4NjY0IDhkZmUzYzRhYmQ1YjExNjYwZTA1NmY5MGI2N2MyN2ZjYmEyODVkNzMgcmVsZWFzZTMwLW1haW50Cis2ODY2NSAyN2JhODAzYmRlYTkwNTcxYmVmMWI3YjNhMGI4YzQ3MmRmOGNkYmM3IGxlZ2FjeS10cnVuaworNjg2NjYgYWYwMmI2ZTQyMTQyYjM0NmEyMDY5NjIxMWM5MWI1ZTg2MmNlNjg3ZSByZWxlYXNlMzAtbWFpbnQKKzY4NjY3IGUxNThjNzA1MTFmZWFkYjlmZTU1MzdhN2ZkZjdhNDMzZTIwOTc1ZjMgbGVnYWN5LXRydW5rCis2ODY2OSBlNTZjNWYzYjZlMThmYTY5NjE4YjMxMTIyNzNhOGVjMjQyM2VkODlmIHB5M2sKKzY4NjcyIDQzZTBiMWVlMWMxYjkyN2RmZmQ3MDI3ODg3NGY5MTJmYWVlOTdiY2MgcmVsZWFzZTMwLW1haW50Cis2ODY3NSBhNjBiODZhNzNlMjA0MjZiZDI4MGZmYmRhZTcyYjA5N2FiNTcwNjdlIHB5M2sKKzY4Njc2IDM1YmY4ZjdhOGVkY2MyZDQ5MWNlZWU1OGRiODFiZWQ0ODIwZGFkOWQgbGVnYWN5LXRydW5rCis2ODY3NyBkYjIxZDEyMWJhNTNmNWQzMzJiODYzNWMzNjYwNzc4MGQ2ZGE3MTYxIHB5M2sKKzY4Njc4IGJiOWM2NTI0ZmRjYTQ1OTE5MTViMWQ5N2NhODNmNmM0NTgxMGMwOTYgbGVnYWN5LXRydW5rCis2ODY3OSA1NjIwNTJhMDM0NzZmOTc3YjI3NjA4NTU0ODQ5ZGQ0MmFlNTkzYzYyIGlvLWMKKzY4NjgwIGEwMjljNTc5MGU0MWZjMmM3YzBiMTEwNDcyZWFjNTdkM2E0NjlkMGQgaW8tYworNjg2ODEgZDcyMjBmZWI3ZDBiODgwYjU0MWI0NGVjZjhhYzYyNDlmNTljZDVkYSByZWxlYXNlMzAtbWFpbnQKKzY4NjgyIGYzOTY5ZjRmNDllMzY3YTc0ZmJlMmQ4NmYxMDNmNTIzMTYwNzljNjUgaW8tYworNjg2ODMgYjNjMTliNjc2ZjU4NjgzYmY0NDIyOGRiYWE4MGU5NDI4ZjVlZTU5ZCBpby1jCis2ODY4NCA2MjY4MjQ4NzIwZDY2NGNhMWQ2NDQ3ODlkZjZmZjRkNDVkMTkxNTllIGlvLWMKKzY4Njg1IDNjNTU1MWE5NGM3Yzk5ODhhOTJiNTM0Yzg1NzY3NWJhZDczZWU3ZmUgaW8tYworNjg2ODYgZDk2ZjUzZjY3N2RiZWQwYzdlMGZhMTRlOWRkNjc0OWZhNWFkMTAzOSBweTNrCis2ODY4NyA4YWI3MGVjMmFmNWJjMzA4YWQ3NmRjZjliNWFkMDRhM2UzZTgxM2FhIGlvLWMKKzY4Njg4IDBkZGMyMWRmOTc5OWI5YzYzYWFkM2Q0YzVlNDdkYTVhOGRkM2JmNWYgaW8tYworNjg2ODkgYWVkMGM3OTgwOWU0OWYwZmJjN2VmZDljZjMxYTBkM2U4OTVhODJiNiBpby1jCis2ODY5MCA3NTAwOWQ0ODYzYzlkMzQzNDVjNzE3NDE5MjE3NjUxY2NmYWExYTA4IHB5M2sKKzY4NjkxIDI5ZWRmMjZiOWMyM2VmZGRmMGQzZjBhN2FlMTBmYjQzZDcyOWU1YWMgcHkzaworNjg2OTIgOTlmM2MzNGQ3MzI4ZTJjMWFhMmQzZTRlMmM3ZWM4ZGI5ZGRlYTAyYyByZWxlYXNlMzAtbWFpbnQKKzY4NjkzIDhlYTE3ZjI3ZGE2N2QyNDFjMGRhNGZiMmRhZDRkYTA4YTU3MTAzZTEgaW8tYworNjg2OTUgNTA3ODc0ZjY1NWFjYmE0MjdmMTRhYzkxYzIwNWFjMDgxZjJhODViMCBweTNrCis2ODY5NiAzM2M0ZjQyM2FlYmYyMTI3N2M3MzdhNjEyZDJiZTA4YzM3OWYyYjI3IHB5M2sKKzY4Njk3IGZhNjUxYTFjMzRjYzY4YTg2MTg2ZjkxMmI0ODJkNzUzY2NmYmU1NDEgcmVsZWFzZTMwLW1haW50Cis2ODY5OCBhYWM1MWI3MGM3NGNiMmIwZjA4ZDU0OGY0MTFiMTIzNjZlNzQ4ZGY3IHB5M2sKKzY4Njk5IGUzNTA0MzM1ZjQ4MGE3MWMzYjhhYzNlYzU1MmQ3MWE0ZTMwYTE4NjggcmVsZWFzZTMwLW1haW50Cis2ODcwMCA0Mjg4NTQ2YTQyMzhjMmU0OGRkYmRiNGRmMzVlZjMzMmJiNmUxMWJlIHB5M2sKKzY4NzAxIDZlOTdkNzFkNjFjMjVjYjFiMzk4ZTViYmY1NWNkM2IxYTc0ODI0NGQgcHkzaworNjg3MDIgMWNlMWJmYmU3MDUxZGUxN2NkY2M3MjYyMDA5MmM2YjU1NmZlYTU1NyBweTNrCis2ODcwMyA5YzdmMTk4ZjliMjUyMGY5MDU0NGVmYmZmMjRiNjYzNmI3YWM1ZGMzIHJlbGVhc2UzMC1tYWludAorNjg3MDQgMjBiZDExNzhmYzY0MmQ2OTU2MGI0NTdhYzAyOTZiN2NlNmI3MWExZiBpby1jCis2ODcwNSBiOWNiMzY0NjVkZDJhMDdkMWYwOTdkN2MzNzczNGJmMjdhM2I2MTgxIGxlZ2FjeS10cnVuaworNjg3MDYgMTBjMzhiYzY3MzdkZWI0ZTJkYjg0NGM5M2Y4ODkxNjVmZDA3ZDZkMyBsZWdhY3ktdHJ1bmsKKzY4NzA3IGU1NTRiOGJiZGVlYWE5MjJkMDA0ZDM0MTE1Y2YzZWQ3YmVmNTdhODggcHkzaworNjg3MDggYjRiYWE3MjUyODRhNmQyOGI5ZTRjMDBlMGQyMDdhNWIwZjRiZGVkOSBsZWdhY3ktdHJ1bmsKKzY4NzA5IDA5OTYyNzFlMjFkOGM0YzkzZTIwODQwMzg5YzM4YjFlZWY3NjNjNGQgcHkzaworNjg3MTAgOWUyYWQ0NDAxOTZiZjI0NDBhMDQ3Y2QzZGVhZjkxYjhiOTI0NDhjZiByZWxlYXNlMzAtbWFpbnQKKzY4NzExIGU5MWY2NGY1ZDk1NTgyMWE4ZjE5NWYxYTUwYzU0NzAxZWRlN2VjZDUgcmVsZWFzZTI2LW1haW50Cis2ODcxMiBjODYzNDdhYzY2NjM1MjIxYmM1ODI2ZjFiY2UyODk2ZDUyMzE3MTk5IHB5M2sKKzY4NzE2IDQwOGM4ZGNmMDI0OGExNjkxN2VkODViZjY2MTA1YzgyMGI3YzE2MDIgcHkzaworNjg3MTcgNDQ0MjQ5NTdlYWRmNjcwNTM3NDJiZGNkZjY4MmY3ZDdhMTNmZjVkOSBweTNrCis2ODcxOCAxODlkNTA4MzAyOTcwNTUyNWJiNGY5YjhlZmVjMjMwNzMwMzA4YTFmIGxlZ2FjeS10cnVuaworNjg3MTkgOGYzMmJhNTJiMjBkODkzNTk4YmJkY2I4NDA5MGU4Y2QwODdjODM2YyBweTNrCis2ODcyMCBkMmRjNmQwNDNjMjFkYTk3MDhhMDk3N2VjYjNjZTczODAxZTRiYzhmIGxlZ2FjeS10cnVuaworNjg3MjEgYmJkYTMxZGQ5Nzk3NWJkZDM1YzMxNGM4MWNiNDM4YTIzN2NiZmYwMyBsZWdhY3ktdHJ1bmsKKzY4NzIyIDliYmI5YWMwNjFjMGQ0OGZkNDg5YTEzYjNjNzhjYTY2NjVhMzcxZjUgbGVnYWN5LXRydW5rCis2ODcyMyA4MzI1ZWIwNDE5MjEwYzJiNjc3ZTA3YzZkOTlkNWYxZGM5ZDczMzNlIHJlbGVhc2UzMC1tYWludAorNjg3MjQgZjZhZWZiYmQ3MDQ1ZTlkY2JiODU0NDY5MmRiZmExNDc4ODUyNTVlZiBsZWdhY3ktdHJ1bmsKKzY4NzI1IDExY2JmMzljMzE2ZjdmNzQ1YjI2YTAwYjZlYzkzMDBmNjNkYmFjNWUgbGVnYWN5LXRydW5rCis2ODcyNiBkNzE1ODM4NjA2MzQ2NzBiODNjMzMzMzhmNjUyZTJjYWNhMGM3MGFkIGxlZ2FjeS10cnVuaworNjg3MjcgZTdkNmU1ZjUxOWVmMjU4MTFiOWEwODZlMmMxYTdjMTExNTc4NDhjZSBsZWdhY3ktdHJ1bmsKKzY4NzI4IDhkYzQ3OWI2M2UwMzY3M2IyODQyNjVkMDZjMjc3MzMzNDVhNzE1OWEgcHkzaworNjg3MjkgYTgxOTkyN2MyYTEzOThjOGRmMTAwMzdmOTM1ZGU2OTdkNjFhOTUyOSBweTNrCis2ODczMCBmM2JhNWY5OWRhNTBkMGIzNjNkNzlhMGI3ZmUyNTFhZjk4NGY3MGQ1IHB5M2sKKzY4NzMxIGI5MmU2OTVkNTYxZTVhODEwNzgzOGExZmNjZjIyYjk4MTM5MTAyNzMgcmVsZWFzZTMwLW1haW50Cis2ODczMiA3NTg3Nzk5Y2FlMWNiMGQzMTg1MTBhOTg4ZTkzOTllNzFhOWI3NjNiIHB5M2sKKzY4NzMzIDdlNWNmYmE1NGUzNDgwMWNmZmYxZmNkNjY3YmVjZGY2MmM4MDRkMDIgcmVsZWFzZTMwLW1haW50Cis2ODczNCA2YTc2YWJkNjE2ZGVkYjE2NDE5OTAwZTk2Y2M1MWNlOTY5NDM0NTY3IHJlbGVhc2UyNi1tYWludAorNjg3MzUgYWUzYTEwNjMwNmE4MDhiMzg0ZWJjNjI2MjM5ODIyMGM5NzBmNjEzYyByZWxlYXNlMzAtbWFpbnQKKzY4NzM2IDUwZjVjMjlmY2UyNmQzMWNiODRkNmI0N2FhYTZhNGY1Y2Y0YTE3YjMgcHkzaworNjg3MzcgYzFjNDRhMGFiNDM4ZTZhYjI3ODc3OTRlNzhiYTRmMWU5OThjOTc5YSBsZWdhY3ktdHJ1bmsKKzY4NzM4IGM1MTNjNjkxMThkY2E2MTQ0MjFmMTkzYmNjYTExYTc5YTgwOGY4MDkgcmVsZWFzZTMwLW1haW50Cis2ODczOSA1YjQ4ZDYwMDA5MTY3NjI2ODE2ZTk1OTRkNGM1NjMxNWRiNTE3ZmNkIGxlZ2FjeS10cnVuaworNjg3NDAgOWVjYmQ5YTEwMWQ4MzdkMTU3MzE0MjZmYzhiMTFkODg5N2RiOWMwOCBweTNrCis2ODc0MSA0OWQ5NzA4ZDdlYTM5YWVhMTY2NzcwZTZkYzMzZGExZTNhZWJhODQzIGlvLWMKKzY4NzQyIGM5ZTVjMmNhNjJjM2UyYzNlOWNmODQxMDU0YTQwNDM0ODI0NzdjYjkgaW8tYworNjg3NDMgOWY2Mjc0ZmQ3YTlkZjdjMzdhODIwYmJmMjZiNGUyNTBhZWQxNTJiMyBpby1jCis2ODc0NCBlMTRlYzZkMThhYjgxZjUyM2VhZjNkMzVhZmY5OGU2MjhjMDMyYWJjIHB5M2sKKzY4NzQ1IDFlYzM1YmVlZDJkMDE0ZGNmNjExYWNjMDA2MmM3NDg1ZTU4N2ExNGMgaW8tYworNjg3NDYgOWY0NWZhMjdiODM4YWUwYjY5ZjcwMjU4MjQyNTI1YWE3NDk0ZDkyZiBweTNrCis2ODc0NyBiYWQzNmY0OTIwODFlN2RkMWIzOTNkZGViYmUzYzZhZGIwNzNmY2RiIGlvLWMKKzY4NzQ4IDU4MWQ4NjAyZjNmNzQyZjQwMzEyODM2MDU4NzBhZTgyMmJlOTczYTIgcmVsZWFzZTMwLW1haW50Cis2ODc0OSAxYjIyOWU3ZDgxOGJkNTI3NDc5NDAxNTdjZjA3MWMzNmRlOGI5ODcxIHB5M2sKKzY4NzUwIDA3ODhkNDViZjdhNDdlOTQ3MGQyN2JhMWM1MDNlYmM5ZWJiNzYwZDUgbGVnYWN5LXRydW5rCis2ODc1MSBmYjdmMjMxY2NkM2VjNzc3MWNlZjExZWRkZGNkZDNkNGYyYTRjNDlhIHB5M2sKKzY4NzUyIDU5ZGUwNjU0NzIzMmE0OTI4YzNiZGJmNTY4MTU3MGQwYjE3MWUwNzcgaW8tYworNjg3NTMgNTllZjMxNWJmMDBlZmNmYTUyNGQ0MjVlMDhiMDBmM2Q3MDQ4YWY0MSBpby1jCis2ODc1NCA2NTgxOGNmZDQ4MjY1ZmQyMjEzZDExZWM5NzczNzc0MmJlZDQxZGNlIGlvLWMKKzY4NzU1IGE5OTFiZTZhMTExZDg2ODRmZmVjZDliYzRmNTI2N2IwODhjMWZkMzcgbGVnYWN5LXRydW5rCis2ODc1NiAxYzE2ZWRhMzEwOWU1NDU0ZjQzYzA0NGI0ZTM5NTNmMTgzYjUzYzBmIGlvLWMKKzY4NzU3IDFmYWVkN2NlZDI0MjQ1OGU3ZjZkNWFhYjc3YjdjMWQ5YmUzOTY3M2MgaW8tYworNjg3NTggNjVlZjQ2MjkyMWY3MzkyNmRiNzM5ZmZjZmUxZWQ1MGU0Mzc5ZjU1YiBpby1jCis2ODc1OSBlMTA4Yzk4MDZjYzNmMjEwMmVmMzg4YTVmNGU2YmY1OGYzOGJjYTg5IHJlbGVhc2UzMC1tYWludAorNjg3NjAgYTY2MTE2MTVjNzZiYWZmNWM5MTBhYmIwZWJjN2FkMzYxOWQ1ODIyYiBsZWdhY3ktdHJ1bmsKKzY4NzYxIDYxMTQ2MWE4Yzc4NTFiZDA1NTBiMjg4Y2U5YWIwODM1Zjc0ODM5NWQgcHkzaworNjg3NjIgMWMxN2Q1Y2IxNWRkNTk4YWM2Y2E0OWE5YzRkM2ZjYWFmMzFlMDFhYSBweTNrCis2ODc2MyAzOTE4N2IzZTEyZTA1MTI5YjM3OGY1MTJiNDIyNDBlODU0NDJiNDFkIGxlZ2FjeS10cnVuaworNjg3NjQgMDYxYzUxMjk1ZDMyNmRkYTQ1ZWQ5MDdiMjRjYWRlMDZjZTVjYjA0MyBsZWdhY3ktdHJ1bmsKKzY4NzY1IDE4NDQxYjhmNzAwMGMwNTFkOTNjMDM5ZjI0Yzc1ZGE3MjExMDcxNzEgcmVsZWFzZTI2LW1haW50Cis2ODc2NiBlN2MxMDBhZjgxZWMyOGJlZmE1MzI0NDc4MGJhY2RkYjc3ZTc2MTc1IGxlZ2FjeS10cnVuaworNjg3NjcgMzUyZjI5ZGI1ZWJmNjBiODc4MDY4ZDZkODkxYmZjYzIzYjhiMWFkNiBweTNrCis2ODc2OCA5NWU4ZDg1NTk0YmM5MmQwZjQ4NmNhZDYwMmQwNDEyYzdiMTQ1NDdlIGxlZ2FjeS10cnVuaworNjg3NjkgZmFlOTZiYzkxOTY4NDc5NWU5YTEwYzFlY2IwNWE3OTUzZDg3MTEyMCBweTNrCis2ODc3MCBiYTM0ZGVhNWQxOGMzZjNhMGNlNjI5YzdmZGJiZGVkMWQ1YjU4OGQwIHB5M2sKKzY4NzcxIDQ4OGU4ZTZmMWNkYzYzM2QyMTFiYWYwY2JiMzkxZjY3MDcwODU1NjUgcmVsZWFzZTMwLW1haW50Cis2ODc3MiA2ZWRkMjlhMzQzNTQ4ZjIyZDE2ZjkyOGJkN2QwNjk1YTIzMzhkYWZkIGxlZ2FjeS10cnVuaworNjg3NzMgN2NmYjU5ZTM5NzgyNjA5MDQyYTUyODU3NzQ3YjdjNjg5MTBlMDQyYyBsZWdhY3ktdHJ1bmsKKzY4Nzc0IGFlYjJiZGUyMDNhYWNkOWYwMzllY2I3M2YzMzg0YWZhMmYxZjc2MzcgcmVsZWFzZTI2LW1haW50Cis2ODc3NiBhYWY5NmVmYzYxZTU0MmRiMzI2YTJmNjZiZDZiZGM4MjBmY2RiOWJkIGxlZ2FjeS10cnVuaworNjg3NzcgMDE1ZWE3YjIxOTUwYTM4M2M5YTM2MDdhMThlMTUxMzQ3MTUwNmZkYyBsZWdhY3ktdHJ1bmsKKzY4Nzc4IGEyZjU4MjA0ZTY4MGI4N2FlMzRmOTI4YjFhNDBlMzAzMDIwNDlhNWMgcHkzaworNjg3NzkgZmExMmM4ZTVhZThhY2JhODY2ZWU3NjU4ZDEyYmY3ZTY1ZjA5NDhmNCBsZWdhY3ktdHJ1bmsKKzY4NzgwIDc1YmNlYzAxMWVlZjZkMmRhNWE2NmI2OTU0MjRiYjNiMjdjNDE5YzIgcHkzaworNjg3ODEgNjExZDk1NzBiNGNhYjI0ZjZlMWQ5OTViMmU2MDA1MzIyY2IwYTNiMiByZWxlYXNlMzAtbWFpbnQKKzY4NzgyIDE5ZmE2ZjlhYjViNTAwNzNhYjMyZGY2ZjM1MmI2YWQ2MTJhYTZkMTUgcHkzaworNjg3ODMgY2FhNzlkMjM4OTE3MmFlYWY0ODkwMzRiZjA3NjQ4MTJhMGQ0MGMxNSByZWxlYXNlMjYtbWFpbnQKKzY4Nzg0IGFmMzZiYTEyM2MxZDJhY2ZhMjQ3NDhiNTE5OTQ2N2JiYzA2ZTRkOGEgcmVsZWFzZTMwLW1haW50Cis2ODc4NSBjM2EwZWU1MWQ4Njc4MTMwYzUwOTA2NGNkZmVlN2MzMDEwYzgzZjEwIGxlZ2FjeS10cnVuaworNjg3ODYgMmY1NGVlZmQwMDczYTE3YTM2ZDljNDc4MTcxMzM0MGY1OGRkNzk0MSBweTNrCis2ODc4NyA2MDY3YTFlNjI4OWExMzU3YzdmOTkxM2JkZWJjYTFlM2Y4ZWRjZmRlIGxlZ2FjeS10cnVuaworNjg3ODggNTM3ZThkNzI4NDI0Njk0OWM1OWQ4YTAxNzQ4ZTc2NTU5MDgwZmMwMyBweTNrCis2ODc4OSAxOTFiN2IzZGRmNGZhNGNkYmE1YTMzMWI3Y2QzYTUxYTYwMDhkY2MwIGxlZ2FjeS10cnVuaworNjg3OTAgMzgwMjFiOGUxNGFhYjEyNzZmMDcyYzEwZWQ5YzIyNzA3YWM5MWI4OSBweTNrCis2ODc5MSBhNjNmN2NmMzc5M2FiZmUwYWM2N2EzMzBiNzVmNjBiMzg5NzA3Y2Q3IHB5M2sKKzY4NzkyIDM5MDY2OGUyMDYyOGU0MGM4MzJkNGMyNWZhZmIzNjA2YTQ1OTJhYTYgbGVnYWN5LXRydW5rCis2ODc5MyA4ZDY2YjgyYTEwYTMwODhjNjBhZGY4NDY0MDlmYTdhZjYzNTY1ZWVlIGxlZ2FjeS10cnVuaworNjg3OTQgNmE2YjU5MDkxMmZlNmYzMjI3NjczOWExNTgyNGMxNzBjYjIwNWJjNiBweTNrCis2ODc5NSA1ZGQ4Nzk4NjdjZGUyMDI2MGYzOTBiYmU5ODMyZTMxZGM2MjM4YmZmIHB5M2sKKzY4Nzk2IDVjM2JmMzFkMDRmZDZhOGQ3MTk2OTNmMWY4MmZmNzViMjY1YmE2YmMgcmVsZWFzZTMwLW1haW50Cis2ODc5NyBmZTI4NzFhYWI5ZDk4ODQ4ZDNlMjA2OTk5NGQzMWFiMGE4MjFkMmE2IGxlZ2FjeS10cnVuaworNjg3OTggMjM0NGNlZjdmZjQ0NDc0NTRkOTYxYTg1NDhiYzE3YjY4NWRjYWUwMiBweTNrCis2ODc5OSA1YTA0MWQ5YTUxY2Q2NmZiZWM1MjM0NTM1YmM5NDUxZGQxYWFkODI4IHB5M2sKKzY4ODAwIGNjOWRlMTk3ZGY3ZTExOTFkMTZmNjFkMzlhOTg4MDkxNjY0YzViMjIgcmVsZWFzZTMwLW1haW50Cis2ODgwMSBjYzA3OGE1NzVlZWQzMDdjZDg5MDMzYzczMTE5YjZkNzMyYmMxZDNjIGxlZ2FjeS10cnVuaworNjg4MDIgMWE2NGQyZjU2Yjc5OGZmNjAzOTZhNjEyM2RhYTI4MDI4NTIyOTM1MCBweTNrCis2ODgwMyBhODMyNjdhZDJmZDI3MjA1NGMxYWZkNGY5ZjBjMmNmZGJjZTEwYWMzIGxlZ2FjeS10cnVuaworNjg4MDQgZmI3MWMxNTYyMGVlNmY5OTlkOTViMzJjMDhkNjgzNDk4NjU2ODA5MyBweTNrCis2ODgwNSBkYmMxNGFjZGRlMzdmMTg4OTdhYjEzMmI4NzFjOWM2NGU4NGMwZTRmIGxlZ2FjeS10cnVuaworNjg4MDYgMWYxNDg0MjQ4OGYwOGZhYjhmY2I4NDVhMjRkZDdhMWYxNjc3YzQ5ZCBweTNrCis2ODgwNyA2MWYxY2IxNmU3YjQyZTc5NmVmYTMwY2MzMDk2NjdjMjRiYzU2Y2Q4IGxlZ2FjeS10cnVuaworNjg4MDggMzZlMjY2YjJlNDYwOThlYmMzMWQwYzg0OTI4YjYwNjExZDYwZmZkOCBweTNrCis2ODgwOSBjN2JiMzMyMDc0OTVhOGNiMWM3MmJmYzdiYmFiMTAwNDA1YTNjY2Q2IHB5M2sKKzY4ODEwIGRkNTYyNDQzOWJlNTA4ZmQ0NDJlYTQ0NTY0ZTc2ZThjMGMxNGNmNmUgcHkzaworNjg4MTEgNzMzMzg4YWNmMGI2NWNiNzliZmNhNjQyYzkzYWMyNmI3MmRjN2NiMiBsZWdhY3ktdHJ1bmsKKzY4ODEyIGYxMzUyNzQ4NGJhM2FiNDRmNmExYzM0NTIwZTI2ZjFkYzFlMzgzYzMgaW8tYworNjg4MTMgNDI0YTUwOWJlYmZlYTIwMzBmOGU1NmIwYzM5MmQ2MDg5MmEzNWQxMiBsZWdhY3ktdHJ1bmsKKzY4ODE0IGQxZGUwNzc0NDdhYTRmMzRhMzFjZGNmMDAxOTM0MTc2OTI5M2JhMmYgcHkzaworNjg4MTUgMzJhMjJmYTEzYjk5Yzc5NjAzMGU1ODIxMGVmYTE0M2Q0NDMwNjllZCBweTNrCis2ODgxNiBiMjBlMjE4ZDZmMDBmNzg4YmNhNGQ1YTg1NGI2ZjQzOWRmNjUwNjAyIGlvLWMKKzY4ODE3IDVhODgwYmRhNmE2Yjc4NWY0NTUyNGRhN2IwNjdmMzQxYTVmODJkMWMgaW8tYworNjg4MTggYTU3ZDEwZDZiYzg5MzFmMDAwMjA2MTc2ZDUwNWFhMGYyY2ExOWVhNSByZWxlYXNlMzAtbWFpbnQKKzY4ODE5IGFiMGIzODVhZWZjM2U5YjYwNDEyMmMzYzVkOTgxODY4M2MxYmJmMDUgcHkzaworNjg4MjAgOWYyOTRlYjM4MTkwZTY0MzRkNTUzNTUxMjk0NGVjNGFkMmQ2NTAzNiBpby1jCis2ODgyMSBjNzc1MjA3Y2VkYWQ3OTQwNTYwOTU2NDlhNmYwYjcyMDA0YzFjNGU2IGlvLWMKKzY4ODIyIDUzOTAxZTY2OTFjMzgyNDhmMTFkNGNiNWNlOTkyYTVkZDRlMzJlYWQgaW8tYworNjg4MjMgMGU3OWQ1YTM3MjMzODIwMzYzZjZhYjkzM2Y3NzQxYzdlOGM0ZTE1MyBpby1jCis2ODgyNCBjOTRmOThjNTc1M2Y5NzBiNWYxMTI2ZTg2M2M4OGIyNDAzNjRlMWNjIGlvLWMKKzY4ODI1IDdlZDliZWVkODcxNTUzMzE5MjVjYTA5YWY3NmYzMzVhYzA5MmVjMzcgaW8tYworNjg4MjYgNzY2ZGU0OTZhNDJkN2YwZDFhNzQyYThiODg0NjA5ZjdlNGExNGQ0ZCBsZWdhY3ktdHJ1bmsKKzY4ODI3IDdjMzBhYjAxMzRhMWZlNjM0NmZhYmZhMWM3MGY3Y2QzNzgzZjFiYWQgcmVsZWFzZTI2LW1haW50Cis2ODgyOCAyYjNlY2RlMTc2ZmU1MDE3OTNjNTUwNTAyODA1YWQ3NDM2OTU4ZWVhIGlvLWMKKzY4ODI5IDI1MmY4MjRiYjgwYjNhYzIxNzA5ZmM5ZDc1ZTk1OWZkYjBjZDY1MTEgbGVnYWN5LXRydW5rCis2ODgzMCBjYzViNDYwZmYxYWIxMjRmMjJjM2UyZDhhZTY4YjMxNTE0MmU0OWYyIHJlbGVhc2UyNi1tYWludAorNjg4MzEgMTJlOWM1ZjcyNjU5MDQ5ZWJmMDMyNjAyZTMwNDhjOTlhMjJiMWQxNSBsZWdhY3ktdHJ1bmsKKzY4ODMyIDM1ZmI0YTI2MGEyNTNkOGY3NTA4ZmE2MDZiMzM4MmI3ZDM5M2I1MjUgcHkzaworNjg4MzMgNjY5MjhkYWQ4MWNhMTQ5YjUxMGYxM2Y0Y2NjNTg2MGIyZjAxZDVlZiBweTNrCis2ODgzNCA3MTA2ZmY1NmU5ZDhiZGY2OTZkNmExOGRkODg4Y2Y4MTczOGMxMzZkIHJlbGVhc2UzMC1tYWludAorNjg4MzUgYjg4Y2M3ZTJiZmI0YzMxM2Q1MGJiYWJlMjk0MGEwOGI3NGU2MDg3ZCBsZWdhY3ktdHJ1bmsKKzY4ODM2IDBhZDhjNTZhN2E3MGQwY2IwOTE0MDVmYmQyZjM1ODZhYTRhN2FiMjQgcHkzaworNjg4MzcgNzYyZjlmMTg5ZTJlODYyNzg4NDViNTEyZjJhM2VhMmQ0YzE4MjA1YyByZWxlYXNlMjYtbWFpbnQKKzY4ODM4IGYwYzk1NTM3OGNhM2M1MWVmZmNhYWU1MzEwNzc1NTI5ODNkMzcyMjMgcmVsZWFzZTMwLW1haW50Cis2ODgzOSBkMjc0MDYyODE2ZmY2NThjOGQyYTM0NzYzMGRmMmM0ZTczZWY0ZjE4IGxlZ2FjeS10cnVuaworNjg4NDAgMGVjMzU0NzAzZDAxY2FhNGJmZDgxMmZjZjQ0ODMxNDQ0YWYxZGFjNyBsZWdhY3ktdHJ1bmsKKzY4ODQxIGE5OWRlY2VkZjcyZDIyMGE1NjBmMmQ4Mjc0MWJlMDU1Y2FhYWU0N2EgcHkzaworNjg4NDIgODc2M2NmMmY3ZTBjNTVmZmQ4MDE1MzIyZjhjMjIyMTUzMjY1NDZjMCBsZWdhY3ktdHJ1bmsKKzY4ODQzIDhiZjIwNGFmOTY5MTBlNjRiODdlOWUxOGNmZTY1NmJkODExMWZlOWQgbGVnYWN5LXRydW5rCis2ODg0NCA3MzAwZDZmYmQ5MTRkYmQ3NGRhZGQ1ODBlNjZmMzAxNjQxNzNkYzQzIHB5M2sKKzY4ODQ1IGNiZTU0NjUxZTNiOTg1Mzc4NGU5ZWEzNGY0Y2Q0NjQwMmZlMGU1OGUgbGVnYWN5LXRydW5rCis2ODg0NiAzZjYxZjgwZTkxMzBkMTc1MzhhNmYyYTdjYTIzMGI2NjhhY2M0ODFkIHB5M2sKKzY4ODQ3IDQwOTJhNDAyZWQzZTc1NWEyMDQ5OTcyY2I0NzJlNGY4OThjNmMxOGUgcHkzaworNjg4NDggZWM3MGIzOTNlMTczZjg0ZGQwZTllMTQ4NjdiZWI3ZDc5YjYzMjNlNCBweTNrCis2ODg1MCAzYzVhOGEzNDc5OTA3ZjBkMzgzMDA0N2E4ZmZmZTIzYTA1OThlYTFmIGxlZ2FjeS10cnVuaworNjg4NTEgMDUzZjNlODI2NjAxNmVjOWEwZjQyZjczMmVhMmQyYmI5OTY3NWM3NyBweTNrCis2ODg1MyAzZjEzYzY1YWVjMDU2YjNmZTU0NjYxMDQwZDQ0MzY0MTM1MGRlYzdiIGxlZ2FjeS10cnVuaworNjg4NTQgZjVkN2QwNjA5MTFhZTE5MzgzMzQyYzY1OGJlNzUwNDk1MmQ3ZTI4ZSBweTNrCis2ODg1NSBiNDBlNGI1MjlmNjliYWQ4OTlkZmJmNDkwMTBhN2JiNTk1MjgyMjllIHB5M2sKKzY4ODU2IGVjNmYyOTYwOGJmMDlmZDQ0OWRlNmViZTE0NDczMzhiMWQwMWE4NWYgcmVsZWFzZTMwLW1haW50Cis2ODg1NyA4YWVkNzg4YmZjYzgzYzc1MWRiYWZjZDY0MjcxMGU4YWIzNmYzYmFjIHB5M2sKKzY4ODU4IDFmMGEzYWM4YmY4NWRlNDQwNGZmNGRiYjgwNzgyMTgwOGNjNjNmNzEgcmVsZWFzZTMwLW1haW50Cis2ODg1OSBkZTJkYzA5ZTFmN2U2NjExZGY0MmE4NjNmZTU4NDljMzQyYWRjYTZjIGxlZ2FjeS10cnVuaworNjg4NjAgMjczNWZhYzZiMGQ0ZDNmZjJlMDBmMmUyZmNlMjE3YTJmMTlhZmRiZCBweTNrCis2ODg2MSBlNGM4NmRjMTgxZTlhMjA0NGUwNDUwZjYyNDA3M2U4MzY5MzhlOTQzIHB5M2sKKzY4ODYyIGIwYjYyMWYyYWY1ZGRmYzUyZmFkMzllYjAwYjhiNDIwOTdjZWE3YjkgbGVnYWN5LXRydW5rCis2ODg2MyA3MmJjZjBhMGNiMzFkNDFhMzdiM2E5NzRlNDBlZTNmOGQ1MDRkZDg5IHB5M2sKKzY4ODY0IDA5NDBhNGYyNTA2ZTc3ODI0NjA2MGNiODNkZmJjOTQwNDdhZDQ5ZjkgcHkzaworNjg4NjUgZGQ2MzhiN2U3NDdlM2ZhNTVlNmE1YTZiZWE1YTdhZTg4ZTRhZTcxNiBweTNrCis2ODg2NiAwOWMxNzEyN2E0Yzk5MjAxZmM1N2JiZmRlY2ZiYTQ4MzZjNzhmMTU5IHB5M2sKKzY4ODY3IGM5NTQ0NTBmN2FiZmNjMjUxY2Q5MDJiMmE0ZjQ0NDNjMjM5YWY4YzAgcHkzaworNjg4NjggMDRjOTVmYzM3NjVmZWQ3YzU4YThmNDMyOTc1NTU5NjczY2NiMTdjNiBweTNrCis2ODg2OSBhY2U3NWIwNmE2Zjc0ZGM1OTZjYThmNGFlNDYzYTJkZTkzOWZjMGZjIHB5M2sKKzY4ODcwIGFlYWEyMzdlYmFkN2Y3OTViNzJjYjBjODg5ZmY5ZjdlOTJmYTUwYTkgcHkzaworNjg4NzIgM2JmNzdlYTFkYjNlMjNkZWI5NDMwMzA3MTRjNjk0ZWM1OTFmNTZkYyBweTNrCis2ODg3MyBhODIzYzlmM2E0NTJiYzIxOTE4NGZkNmI5YjUwYWIzZjRlNTJiZjhkIHB5M2sKKzY4ODc0IGIwZDU5M2Q0MTIxMjBjN2FmMTU4OTU1YmZlMjBkYmI3MmYwMGU2YzUgbGVnYWN5LXRydW5rCis2ODg3NSA4NTdkNjYzNDFmZjk0MDgyOTM4ZjFkOThiZjJkODNmZDMyYzFmMzA3IHB5M2sKKzY4ODc2IDA4ZTliZWQ2YTFmODVmOWU1NjQ2NWRkODY2YTNiMTYyZjIzNzA5NmIgaW8tYworNjg4NzcgMWFmNGZhMThiY2MyMDY1YWU0MWM4ZjNkNzA1YzcyMTU4NmRjNzFjYSBpby1jCis2ODg3OCA1MmZmMDU3OWE0MWYxOWFmNDhhYTQ0MmIzN2ZmNDBiOTdmZjY2M2FmIHB5M2sKKzY4ODgxIGE0ZjI1YzM4MGY5NmI3ZjNmZjIwNjk1MjhkZDhlODRmZTJjYzE4ZDYgbGVnYWN5LXRydW5rCis2ODg4MiA1YzczMTJjZTVkYmQwNjJlODgyMDYyNTI1MTI0YWEwMzk4MjcyMTQ0IHB5M2sKKzY4ODgzIDA0OGViNWE4MzQzYmUwOWNhNzQzYWJmYzRmYzI1N2JjOTdkNTQ5MmYgcHkzaworNjg4ODQgYmQ3NGU4NjZmOWNhZjgxN2M3ZWRhMDk5OWFhNmM0MTE0YzIwYzNjOCBsZWdhY3ktdHJ1bmsKKzY4ODg1IGZjMzhmMmVjZDJhYzI3NzNkZjhmNjZlYTA3MzAzNDMxZjQ3ODU3YTcgbGVnYWN5LXRydW5rCis2ODg4NiA2Zjc2MWU1NzE0ZTA5MTlkNGEyNzY3YWQ5MDZjNTkxNDJiNDE2ZWE2IHJlbGVhc2UyNi1tYWludAorNjg4ODcgY2VmMGZjYzkxNTU5ZWJiNWQxNjBlYzkxOTFkY2I5ZTkwMjZjMWI1ZCBweTNrCis2ODg4OCBjOWI5YTUwNDFlZjUyMWY1NmIxZGQ0ZDdjMzg5NzNhNDZmZTY0ZTFiIHJlbGVhc2UzMC1tYWludAorNjg4ODkgNTQwNjExYWU2MWI4NmZhZGFhMzM5NDRiZmE4MmQ3NzEzMzBjOGZlYiBweTNrCis2ODg5MCA0ZWFjOTk0MTUzOGM1YmRlYzhkMjk4ODU2ODIwZGYxNGJlMjNmYzJhIGxlZ2FjeS10cnVuaworNjg4OTEgZGIwZmZlZWU2ZTUwNzAzNjk4NWM2MmJmZDA4OTIzZjI4Y2E5MjQ5ZCByZWxlYXNlMjYtbWFpbnQKKzY4ODkyIDI1MDM0YzgzMjhjN2NmN2FkNTFhNGU4MTI1MTE2MjBhY2JhNDE3ZWYgbGVnYWN5LXRydW5rCis2ODg5MyBmMWFmNDA4MDRhZGU5M2I5YjNiNWEyZDE1YzAwYjM3MTBkMDI4ODNmIGxlZ2FjeS10cnVuaworNjg4OTQgNTEzMmExM2YxNjlhMzQxNGJlZjc1Y2Y0NTBhZWEzM2IyOTI3MmIyNCByZWxlYXNlMjYtbWFpbnQKKzY4ODk1IDI3ZDJmYTE5MDg0YTU4MmU0Njg2M2U2N2YwZTI3MWRjYTJjM2U1MmEgcHkzaworNjg4OTYgN2VlNmZhMDYwMmJlOTI3MTJiMDRkZTJkZjNmMmFjMzJkZGMzZWQ3ZCByZWxlYXNlMzAtbWFpbnQKKzY4ODk3IGExYTUyODczZjlmY2YwNjVjYjgzOGI0ZWMxOGYyMmQ1NmY5MTVjZDMgbGVnYWN5LXRydW5rCis2ODg5OCBmZWI0YTA5MmI4NzFjNjdlY2RmNGMzZmQwNjg4MjBkNTk5ZjFjNmEzIHB5M2sKKzY4ODk5IGE2YTYzNjljZmJjY2RhZGY4YTZlNTk0ZjVlM2Q1YWE4NzRmZmQ3NmQgcmVsZWFzZTI2LW1haW50Cis2ODkwMCA5OWYwYjAyNjU1MTZiMjQzOTZkMzM2NDZmZDk1YTIxMWIzZjQwMzZkIHB5M2sKKzY4OTAxIDU5ZDVlNzBmMzQ5NDIzMGRiZDAxNzFjNzVhMzYwODM5ZTY5Nzc5NTMgcmVsZWFzZTMwLW1haW50Cis2ODkwMiA1NzhkZDc4ZmI1NTczNTJkYTg5ODQyODI0Y2Y5YWExNmYzMjQ1YWE0IHJlbGVhc2UzMC1tYWludAorNjg5MDMgNmQ1NTE3OTc1ZmQyNDU3MzRhZTVmMmZmOTk1ZTM5NzM5ZWEzOTk4YSBsZWdhY3ktdHJ1bmsKKzY4OTA0IDg0M2MxNzg2OGI1MmI0ZjQ4ZWFmZTQ4NTZiOGEzYTdlMDQyNWZhZTcgcmVsZWFzZTMwLW1haW50Cis2ODkwNiA4NjNjZTZjMDM2MTc5ZjRjNzRmYTlmNzBiY2I4ZTcxODU2NWI5MGEyIGxlZ2FjeS10cnVuaworNjg5MDcgMDEzOTY0ODUyNmQ5YThmY2Y3YzEzODMwOGM3YjBlMjQzMDBiZWY0NSByZWxlYXNlMjYtbWFpbnQKKzY4OTA4IDlhNDVlMmNhZDZhMWYzZjFiNGZlMzIwYmQ1ODlkYmIzYThmMmUzNzcgcHkzaworNjg5MDkgZjdmM2Q4NDFkYTJjNmMxZmE2ZTAwMTdkNTkyNTcyMDZjYmY1MDk2NCByZWxlYXNlMzAtbWFpbnQKKzY4OTE1IGY1YmU2Y2FlYWQwM2Q4OTBjYjUxYmRkZjlkMjJhYWMyNDNlNmRlMGQgbGVnYWN5LXRydW5rCis2ODkxNiA0ZThmMjhiM2VhMGE4ZWZhMDM1NzMwNzNlMDc0ZGM1ODVhNTM4MTA2IHB5M2sKKzY4OTE4IGVhNTc2N2ViZDkwMzJhZDhhOGJiNDhhZTkxNThkOTgwMDU3ZWViMDYgcHkzaworNjg5MTkgYzI2ZjFhZjI2YmZjMjJhZjlhMDk1MzNiOWU5MWNiOTMzZWZkZjcxZiBweTNrCis2ODkyMCBjNGM0ZTRiMWRjMWFlNjMxZWY5ODU5MWE4ZjIxNTJjMDU1MGI1Y2YwIGxlZ2FjeS10cnVuaworNjg5MjEgOTljMTBkNjQ3ZjMyNmY2MzYxOGIyZDhjOTFlMTljZmJhN2M5MTE2MCByZWxlYXNlMjYtbWFpbnQKKzY4OTIyIGZkOGFmNDZkMzYxNTQzYzc0ZjU2NzU4ZWY2ZDAxMmRlYTMyYzY0NTMgcHkzaworNjg5MjMgMmM3ZDM1Njk4ODJkZTM1Y2VlYTM1ZGFhOTZlYjA4NGE5YTMyNWExMiByZWxlYXNlMzAtbWFpbnQKKzY4OTI0IGQ4NmUyMzMxOGI0MTVkZmFkZDNiMjEzY2M4OTY5NTI4Nzc4OWFlZTggcHkzaworNjg5MjUgNTUxMjU3YzgwNThhZjAzYTc0NmIwYzA1MWY3NDliMzE4MzU1MzZiMyBsZWdhY3ktdHJ1bmsKKzY4OTI2IGUzY2VlYjdlYjkwMTBlZTdmZGRlNGExMzU5NGFiZTlkMmVlODkwMDEgcHkzaworNjg5MjcgMjFjZjk2Y2MyMjE2M2E5NTY5MzhjNjEwNmNiODVlYmJkNDM2M2E2MyBsZWdhY3ktdHJ1bmsKKzY4OTI4IDI4MTlhNDcwNmM4MTEyZjRiYTZjNjJhN2UzNzMxMzFmYTkyZGFhOGIgcHkzaworNjg5MjkgN2Q1ZmE1MjM0MWUyMzIzMDBjYjdiOTMwODU3YjA5OTcyZTI1ZjkwYSBsZWdhY3ktdHJ1bmsKKzY4OTMwIDc1ZDBmNjE4ZTFkZWM1YWY4ZGQ4ODJkOTdmYWI3NzkzYTJhYTg0OGMgcmVsZWFzZTI2LW1haW50Cis2ODkzMSA1MGY0MGYyYzM3ZGRhNTdmNGMzODRhMWI4YmRlMDk2YTlhYmUwOGQ1IHB5M2sKKzY4OTMyIGNjODEzMGFmYjAzOTEyMmI5NDEzNTExMzRkNDRjODdkNjFhMzI1ZjMgcmVsZWFzZTMwLW1haW50Cis2ODkzMyA3YTU3NTllODU2Mzk0ZmQ0NzNiZGY5YzVhODQwZjVjNzMxODIyODM4IGxlZ2FjeS10cnVuaworNjg5MzQgNDcxYmUyYzY0NTdlZWEzNTI1MjgwOGI5MTI4NTYxYTFkMmRjNDYxOSByZWxlYXNlMjYtbWFpbnQKKzY4OTM1IDAxMTMyMTk1ZjU2MjUxNThlNzhmMjZhMWM3N2FmYjkxZGIxYjM4YmYgcHkzaworNjg5MzYgMzM2OWE1YWNhZjc5ODM2NWFmNGM3ODExODU3NjFhNDU1MTk1ZWZhMiByZWxlYXNlMzAtbWFpbnQKKzY4OTM3IGM5ZmVhMzViODczZWExYTc4MzYyM2MxZWM2MzljYThhMWRiNjAzMGUgcHkzaworNjg5MzggMTBmNGExNjA0Mzg4OTFjZmQwZTUzZmQ1Y2FlMzY1OTc3NzE4MjljZSBweTNrLWlzc3VlMTcxNworNjg5NDAgZTBkOWM2NTlmN2E2YzBlMjc4OTEzNjRiOWQwZjM3MTRlOTNkMmI1NSBweTNrLWlzc3VlMTcxNworNjg5NDEgMTRhY2UyMDU0NDdiYmUyMzhlYWQ2NDU4YTMzMDE4YWZlZjg0ZWNiMiBsZWdhY3ktdHJ1bmsKKzY4OTQyIGU0NzA1ZmY2MjZmMDhiNDk0ZGQ4MmMwZjcxNGVmODg1OGI1Y2E4MDQgbGVnYWN5LXRydW5rCis2ODk0MyBhNTIyOTIzN2ViNTBjYmYzNjhmOTAwNjJmOTA3ZjY3ZTU4ZWNmZjRkIGxlZ2FjeS10cnVuaworNjg5NDUgNGU4MmZiMWFlYjAyMjJhMGY4YzQ4MGM1MmY4ODg5ODc5MjI3NDgxMyBsZWdhY3ktdHJ1bmsKKzY4OTQ2IDZhOTFiM2FkY2FkNmU2MDcyYTQxN2FhMDBlNzJjOTQ3Nzg0NjA3YjIgcmVsZWFzZTI2LW1haW50Cis2ODk0NyBjODUxZWQwY2Y2NWZiYzZlYjM4ZWRhMjA5NWRjOGNmODczOWMwNDFlIGxlZ2FjeS10cnVuaworNjg5NDggMDk2YjQ4ODQzOGU5MjRlYzg5ZTdjMjg0NzVjNDVlMzAyMDJmZmU1ZCByZWxlYXNlMjYtbWFpbnQKKzY4OTQ5IGMxNTVjYjM4Zjc2ZDBlNjgwNTU4ZjhjZDAxMDhjZjdmNTg4ZDY1YmIgcHkzaworNjg5NTAgNDVhNTI3NmU1ZGNjNjVlYmUyZDdkNmQzNDhjYzJlZjg5OWVmNDU2MCByZWxlYXNlMzAtbWFpbnQKKzY4OTUxIDIxZmIxMDE0Mjk0Y2M2N2UyNjczY2FkYWRjNmI2Y2JmNmIwOTIzODUgbGVnYWN5LXRydW5rCis2ODk1MyBiNGFjZTJiNmMyOGYwZjQyMTUxMjhjNzZmNWFiOTcxNDVjYTEwZDNiIGxlZ2FjeS10cnVuaworNjg5NTQgZmI5ZDJkMmE0MzU5NTY3MjBiNjc4MGRkNGE5ZGUyNzMxYzM3Y2E5MiBweTNrCis2ODk1NSBkZmFjZWM4YmE2ZGI0ZTk2MTIyNDhlZDhlZmVmNzg3Njk1ZGNhZTY1IHJlbGVhc2UyNi1tYWludAorNjg5NTYgYjk0ZTllZDM1NTljMjczNDEzM2RkOGMwZjE0OGQyMzVhYmMxNmFjMiBweTNrCis2ODk1NyBjNGQzMWY5Nzk5MGU5NWMyOTAwOGQ1NThiNjViMGU1NDYwNDc5YzA5IHB5M2sKKzY4OTU4IDA0YTMzYzQ3YWJiNWYxMTc3M2IwYjkwZTkzODIyZWIxNWU3NjkyMmYgcmVsZWFzZTI2LW1haW50Cis2ODk1OSA1MjAzNzk0YzdlYTIxNDcyZGY2Y2RmMTE2ZDkxMThkNTViNTgwNGFlIHJlbGVhc2UzMC1tYWludAorNjg5NjAgMzVjNjkzN2MwMTI3NWMxZTAyMjZhZjZmOGFjNmNlZmYwYjdjNDFmYSBweTNrCis2ODk2MSBhZDFkYjBhZTk4YzZhODc5YTllYjhhYTNhZWI1MDY4MzcxMzFhMTdhIHB5M2sKKzY4OTYyIDFjNTBhMTdjMGYyMWM5NjI3OTE1YjE2NTkzZDIyNDcyYTk5ZGIxYTYgcmVsZWFzZTMwLW1haW50Cis2ODk2MyA2OTYwNTIzZmFkYzFlNGJmYjQ0YTY2NzdhZDNkMGViYWExYThmMTNlIHB5M2sKKzY4OTY0IGQ1MTMwMjRmNTE3NzViYWE1ZTgwMjg3OGE5M2MwMzY1MDg4ZjI4N2QgbGVnYWN5LXRydW5rCis2ODk2NSBiODg1MDYwNmQ5MjFhMGFlODM4OWRkNzYxYTBhZWY2MzM4MDMwNzIxIHB5M2sKKzY4OTY2IDAyZTFjNWNlNmE2OWY5NmVjMTgxM2RmMDJjYjBjZDUxMmFkYTVjY2EgcmVsZWFzZTMwLW1haW50Cis2ODk2NyAzNmZiYWY3NTM4Y2VjMjViZGE4MGMzOGUwNzE2YTM4MmYyNmZhMDAyIHJlbGVhc2UyNi1tYWludAorNjg5NjggZDQyMzc0ZDBhYTU4NGJhOWZhOTQwNjhjNTRlZmQ0MjIyNzM4Y2I4ZSByZWxlYXNlMjYtbWFpbnQKKzY4OTY5IGQzNjJkYTk4ZDBkZTg1NmE2NGEwNmJmY2MxYmY3MGFmNmMxNzJhYzAgcHkzaworNjg5NzAgYjA0ODk2Y2FhMjliZTliYmVlYjg3NDAzYTIwMDk2Y2M5MTkzNTRlMSByZWxlYXNlMzAtbWFpbnQKKzY4OTczIGM5NGEyMzdiZjQ5NzAwMGM3OWYzMWM4OTAxYWYxMzQ0NzkwMDA5N2QgbGVnYWN5LXRydW5rCis2ODk3NCAyMDA4MjkyNTVhNmE3ZmE3YWI1MmQwMzdlMjQ3MThiNmRjZGM3MWFiIGxlZ2FjeS10cnVuaworNjg5NzUgMmVhNzVmNjBkOWU1ZDFkYTRlYTk3YzA3NTdhZDI0ZWJkMWMyY2QyNiBsZWdhY3ktdHJ1bmsKKzY4OTc2IGNhOGVhNTJiNDVjMzM4YWZlNzg5ZGUwNTIyODkxNDExZTg3YjQzNjQgcmVsZWFzZTI2LW1haW50Cis2ODk3NyA5OGYyMjNlY2U4ZjI3Mjk3MGY1OTlhZjU1OGIxNjM2OGE5ZTVhNTlkIHB5M2sKKzY4OTc4IDA2ODdkNDQ3ZGU2MWZmOGRhYzk2Yjk2NWY2YjRjNmM3MWZiMzQwZjQgbGVnYWN5LXRydW5rCis2ODk3OSBlMTk4ODA3YzU1ODY3YjI3NDRkY2I2Y2UzMWE4ZjYzZmQzNGE4YTMxIHJlbGVhc2UyNi1tYWludAorNjg5ODAgODU3ZGY2YzA5ZTEyZjljYzE1NThhOGYzN2IzYmNkNjk0MjBlNmEzMCBweTNrCis2ODk4MSA5NGMyZGM1ZjQ0NmQ2NzZhY2VlNTRmOWYzMThlZDdiZGQ2YmY1YTljIHB5M2sKKzY4OTgyIDE0YzNhYjliZDcwNjFmNjEwYzIwYmI4ZDRkYzEyOTMwNTdhMWQxODIgcmVsZWFzZTMwLW1haW50Cis2ODk4MyBjMjNlNDBkMWFiYmM4ZDkxZWM0NmExYTRiOGY5YzQ3ZjI5Njk4MzRmIHJlbGVhc2UzMC1tYWludAorNjg5ODQgODAyNTA2NjQ1NjY2NGRkYzQ5OWM4ZDY4ZGJhOWQyZjQzMTBlYWJjNyByZWxlYXNlMjYtbWFpbnQKKzY4OTg1IDJjYjBjNTJkNzc5ZmMyM2JlMGZjMmJhZGY0MjljNjdmZDUzYzlhMDkgbGVnYWN5LXRydW5rCis2ODk4NiBmNTcyOTE3MTgzZmEyZWNjMmFmNGU3NzdhMjZlOTFjZmU1OTVmYzJhIHB5M2sKKzY4OTg3IGYxMzhmYmUyOTQ1ZTU1ODliMGEyZDQyZGY4MjUwNzUxNWZkZTIzMjEgcmVsZWFzZTMwLW1haW50Cis2ODk5MSBmMDg1YWFhNDZkODc0OGZkNThkZWVkMDc2Y2JkOTMwNzA1ZTFlMTYzIHB5M2sKKzY4OTkyIGZmZTczMmRhZGIwZDhkOTg0MWQ4OTdiOWM3MmExZTA3YTNlMjU5YmIgcHkzaworNjg5OTMgMjU5ZmE4ZjY0YTk3ZTYyNDQ3ZDZlODE4MzRlOWY1MWNhYzJiMzA5ZSBweTNrCis2ODk5NSA0NDUxMjMxMWYyYmM4MjAwNzBiODA1ZDYyZDQ0YjgwOWUxMmQ4YTdhIHB5M2sKKzY4OTk2IDk2ZDI5NmM3OGZiYTg2NmFhOWY2OGU3NzdlZjY4ZDJkNzhhNmIzN2QgcHkzaworNjg5OTcgNTY3OWJiOWI1MTkwYzkxYWMxYWIxMjgxZDFiNTQ0MGMxOTExNmZlNiBweTNrCis2ODk5OCA2YzBiYjU0OGE5NDZjN2I3ZTk1ZWJiNzhjMWQ1YTgyNmY3NTBiNDQ3IGxlZ2FjeS10cnVuaworNjg5OTkgNzcyMGUzNjNjMWM4Y2VkNzc4ZjAzZjZkMzYyMGY3M2MzNjFmMDM5NCBweTNrCis2OTAwMCA4NGQ2NDhjZGRjMzM0NjBhZDdlMmI2MjIwMzI5MTdhYzBiNGNkMjAxIHB5M2sKKzY5MDAxIGI3Y2U2NzVmZWJiOTAzY2FhYTBhMDU3OGQ5OWUyNDMxN2QxY2FmNDMgbGVnYWN5LXRydW5rCis2OTAwMiBmMTFhNDEwOTU3MjZmOTkzNWFkZTQ3NzljOWE5NDA3ZmZlOGUwYjZlIHB5M2sKKzY5MDAzIDMzMjkxZTFlODdlYzc0M2Y4NWJiN2ExZjU2YWUxNDI0ZjE4ZjI2OWQgbGVnYWN5LXRydW5rCis2OTAwNCA0MDA1MDExZDNhMDllY2E5OWUxMTI4NTE5MTEyMmVjYzU1ZjEyNWFiIHB5M2sKKzY5MDA1IDdlODMzY2RlYjI0MTc0NTg2YTUxZDA5ZDE3MzAwZDg2NDhhMjRhODIgcHkzaworNjkwMDYgNGI4N2YzMTk3OGI3ZTIxNzZjNjhkYjY4ZDk1ZWMwNWNlNDdhMDkyOSByZWxlYXNlMzAtbWFpbnQKKzY5MDA3IDQ4YjcwMzdmZjIwZTg1YjY4OGUwYmI3NDVhN2UwYjkwZGRkNGU0MjkgcHkzaworNjkwMDggN2YwZTRlNDI3ZWEzZDcwYWU4ZGFkNGNmZDc4NjU1ZjdjYjUyMzUxMCByZWxlYXNlMzAtbWFpbnQKKzY5MDA5IDk4YTg1NWM5N2ZmMjE0ZmFhYmEwY2NjMzAyODk0ODZhMzg0MjcwN2IgcmVsZWFzZTI2LW1haW50Cis2OTAxMCBkMTcwZmRmNGJkZmI0NTIyYTY0NDMzZDM4Zjk5ZTQ4NDY1NGIxMmUyIGxlZ2FjeS10cnVuaworNjkwMTEgMTQ2MzFjNjI3ZTAzNzQyZDhlOWQ4MWU2MjE3NjA4YmVmMTc4MjJjOCBweTNrCis2OTAxMiAzZTRjODcyZDAyNDY3YTU3MTZhNWZiNGQyYmQ5Yjk3NmRiZTkwMTFlIGxlZ2FjeS10cnVuaworNjkwMTMgMzQwMjdlOGQwNDRmMDNjODg5YWNkOThkOTM1OWM4OGYyNGQzM2E3NyBweTNrCis2OTAxNCBhMjg3NjVmZDMyZjAwYTU4N2Y4MmE2YmJjNWRiYTUwYWIwYTc5Nzk1IGxlZ2FjeS10cnVuaworNjkwMTUgN2VkOWNjYzBiNTE5N2U3MzFiODk4MzBkNTRlMjAwYTczMjJhZDEzNSBweTNrCis2OTAxNiA4Y2QzY2VkMWVkMjk5OWRlNjBjOWM5NjczYThkMWQwOWM3YzI3NzU0IHJlbGVhc2UzMC1tYWludAorNjkwMTcgZTcxOGQyOTg3NGQ3NWM3ZjY1N2E2ODZjOWY3ZjkyYzkzNzhiZWFiZSByZWxlYXNlMjYtbWFpbnQKKzY5MDE4IDIyNTRjZDMyMDBmMDYwMmRhMWY2NzZhYTQ2ZDQ5ODljYmMzYzliM2UgbGVnYWN5LXRydW5rCis2OTAxOSA1MzI0NGM0ZWVmMjIzZTFlZTkxMmQ1MGZjYjZmNDM2OTE5ZDM4YzgxIHB5M2sKKzY5MDIwIDU0N2I3YTE3YzM3OTllNzcyMDVlMTEzOWMyMGM0MDJkMDY1Mjc4N2QgcHkzaworNjkwMjEgYTZiMDI1MjNiOTAzNWY1Y2MxNDkwNmRjZjVkNGVkNDRiYTE1OWEwYyByZWxlYXNlMzAtbWFpbnQKKzY5MDIyIDFiMzIwZmZjMGRiOGNhZTgzMDg4Yjk5NTRmM2Y3NjQ2MmI5Yzc4NjUgcHkzaworNjkwMjMgOWE0ZmRiY2YyZDlmMmFjNzViYmE4ZDRkOTkzMDdkM2QzZjM4ODY5ZCBsZWdhY3ktdHJ1bmsKKzY5MDI0IGZjNTEwMjZhYmRlNmM2ZDY1YWVjMDVhN2Y4ZGE4ZTc5ZTA3NmNkMzUgcHkzaworNjkwMjUgNzRhYTQzZGQ4NzVkZDllNWQ3OThjNDYwZDRiNGE0OGMwZjU1MTE5NSBweTNrCis2OTAyNiBhZGJkNzdhOTBiZGViNWFjMWRjYTNkMDA3YzhkZmQ1NDg2ZTk3Njk3IHJlbGVhc2UzMC1tYWludAorNjkwMzEgYzVhNTJhZWMyZGRmOTFlMTNlMGU3ZjMwOTEwMmYyOWUxZDBiMzBmNSBweTNrLWlzc3VlMTcxNworNjkwMzIgYjZkZTY5MTJmZTE0NmJhNmJlZDIwNThkZjU2ZWM1NThmOTBlYWM2YSBweTNrCis2OTAzMyBkMmMwNjdmOWY5OGI5NWQyMTljZjQ0ODBmY2U1MzNhNzA1Y2M1MGFkIHJlbGVhc2UzMC1tYWludAorNjkwMzQgNWZlYjk3NmIxOGFhYzhjZTkxZjZlYmFhOTAxNDM5NjRmOTQwMTkwYyBweTNrLWlzc3VlMTcxNworNjkwMzUgYmVhNmI3YTBiOWEyMmY4OTUxOTRkMjYzODRhNDY3NmNkMjlmOTQ4OSBweTNrCis2OTAzNiAyYTZlMGJjNGJjMDMxOWFmYTRlNjg3MWE1MTk0YmRjYmU1M2RmMzdmIGlvLWMKKzY5MDM3IDIzMWM0ZTQ5MGIxZjU5Zjc0ZGE1ZTkzODRhOGMwYWY0ZTFlNGIyNmIgaW8tYworNjkwMzggNjJjYTgxZGQyYWU4ODcyOTZkZWM1NzEzYWQzZTBjNTAxZjM3YjQ1NSBsZWdhY3ktdHJ1bmsKKzY5MDM5IGI2NzQ3MDZmM2IxMGVkZTJjNmU1NDJkNDQyOTJhZDhjZWQ5ODgwYTUgbGVnYWN5LXRydW5rCis2OTA0MCAxNDM0ZDFiYzY2N2Y3MjgyOTZkNjYzNzVhMmUxNzU2ZjEwNDFiNTdmIHJlbGVhc2UyNi1tYWludAorNjkwNDEgYWIxMTQ2NTUxMjU1MjMxYWFhODc2Yzg0NmFhZGZlZmUzODJiMmVjNiBweTNrCis2OTA0MyAwNTIyY2ZlZTg3OWExMWQzM2Q0YzFkOWYwZjAzYjI3MTQ4NDkyZWVkIHJlbGVhc2UzMC1tYWludAorNjkwNDQgODQwMDI4MjI2ZWQ1M2ViNmYzYjU0ZTRmZDFiNTBkODA5MGI3NWM1ZSBpby1jCis2OTA0NSAwNGNhNTdiYjcxMDgzOTM5Mzk0ZDMzMGQzMzhjNjUxYjBmMmZiMDU4IHB5M2staXNzdWUxNzE3Cis2OTA0NiA0YWI1MDhhNWNkN2VkMGEzNTIxODM1Njk2ZmYyYjU5NjMwNWI2YjAwIHB5M2staXNzdWUxNzE3Cis2OTA1MCBjMTAxZjc4YWVkOGI1MWIzODUyNGE4OGY3NDljM2U4ODIzN2FiYjNkIGxlZ2FjeS10cnVuaworNjkwNTEgYzkwOTNkNDE1OTBlZWEyMjQzYzliMGVjOTQzMjU4YmRmNDg4OWY0OCBweTNrCis2OTA1MyBmMDZkOTAwMjcyOTk0ODY0YjI1ZmE1NzdiMzc2ODczZGNkYzEyMjQzIGxlZ2FjeS10cnVuaworNjkwNTUgZDY5MDEyOWQ3ZGFjMjU1NjJlOWNkZWY5ZDVmYTkwODE2ZWEzNWYxYiBweTNrCis2OTA1NiBmZDRiZWJmOWRkZGVlN2FjOTc3NzdlYWU3ODFmODBkYWQ5YmNjZDg4IHJlbGVhc2UyNi1tYWludAorNjkwNTcgMzk3NTcyNWE4NWI1MTg0YWI3MjU1ZmVmN2IzZDFjZmE4MmU3ZGIzYSByZWxlYXNlMzAtbWFpbnQKKzY5MDU4IDhkNjAzZTQ5Mzg0NmY4N2IwYWMwMjY2MWM3MjJlZjRhYjdjYThlYTIgcHkzay1pc3N1ZTE3MTcKKzY5MDU5IGJmZjk5YTgxODI0YTcwOTY0ZDJkMWVkMjc0YTkyNWFiZGQ4MWNhZWQgcHkzay1pc3N1ZTE3MTcKKzY5MDYwIGNhNGRiZTRhZTYyOWY0MzE0MjU5Y2U4OGM0MThjMDlhODUxZDcyYjMgbGVnYWN5LXRydW5rCis2OTA2MSA5NDYzNDBmYjExNGI1MzBmMzRlMWU0ZGY4NDFhMTI5OGE4MzM4MjExIGxlZ2FjeS10cnVuaworNjkwNjIgMTg4NGQwODhlMGFjY2VjZjhiMTNiYTM4Mzc1Yjk5MWU2ZjQ0NzlkMiBsZWdhY3ktdHJ1bmsKKzY5MDYzIDBhOGE3YzQ1N2YxYmJmOWJlYzk2Yjk5ODhkY2NiMTBjZDgwNTBjMjQgbGVnYWN5LXRydW5rCis2OTA2NCA1ZmM2MDdiNmU0MmQ3Yjc5YTc2ZjM3ZTE3OWM2MWY0MDk2MjI3OTA3IHB5M2sKKzY5MDY1IDczYmEwZjRkYjBkNTkxMGRjZjIyODYxZGZhMDExYjc3Y2NiNGM2Y2UgcmVsZWFzZTMwLW1haW50Cis2OTA2NiBkOGM1MjJkNjAwZTRlM2U0OTYwNmE2MTQ2MmE4OTUyOTA1MzdiMWNlIHJlbGVhc2UyNi1tYWludAorNjkwNjcgNDQ0N2JjMWY1YTUxMjE0ZjYwZjY4OTYzYTllOWY4OWNlOGFjN2U1YSByZWxlYXNlMzAtbWFpbnQKKzY5MDY4IDk3NDJlOGE0ZGNhMWYwY2MzOWI2NTA4MzAzOWQxNWE0MjE1YTM5MGIgcHkzaworNjkwNjkgOWMxZjA2YjI3M2Y3MmM1NjIzZTkxZjA5NDE3ZjFlMmNlMGQ5YmQ1MyByZWxlYXNlMzAtbWFpbnQKKzY5MDcwIDk0NDA0NjgwODM1OTNjNTIyZGI5ODRlOTlhZDJmZjEwOTQ4NGMwZjEgbGVnYWN5LXRydW5rCis2OTA3MSA5YzVhZWY5ZjFmYTcyN2U3OWEyYmIyMjU0NGE2NGNkMDAwYzQ3NjI2IHJlbGVhc2UyNi1tYWludAorNjkwNzIgZjBhMWJmMjQ5MDEwNWVkZDg4NjVhYjNhZWQxNDU1ODgwMzdlOWE3YiBweTNrCis2OTA3MyAwMWI5YzVkOTllYmUyMzQ0MjFkNmRhMDA2ODFkZmJmMDZlMDFiNDg0IHJlbGVhc2UzMC1tYWludAorNjkwNzQgNTE5YjIxZjg5MWViZDVhYThiOTliZDI2YjAxZDE2NzY4MzM4ZGM4OSBsZWdhY3ktdHJ1bmsKKzY5MDc1IGJiNjM5MTU4Mjk2ZTc2NTYyNmEyODFjNWViMzc5MDY2NDIzMzc1ZTcgcHkzaworNjkwNzYgZDg3N2RiZmQ0YmY5MzllMTI5NTZlZmNjODAwNDI5MjBjNGQ1ZWQ3YSByZWxlYXNlMjYtbWFpbnQKKzY5MDc3IGJlZGM2ODQ2ODQ0ZGJmMGY1OTE0YTQ0Mjg1YzliZmE3ZTY1NDYzY2MgcmVsZWFzZTMwLW1haW50Cis2OTA3OCAyMzg0YzA0ZWRiYjYwYmI2Y2RkMjllNzM3NDMxYWM5ZjMyNmJiMGU5IGxlZ2FjeS10cnVuaworNjkwNzkgYTMzMDQxOTBkOGFhYWE5MTUwODdjYzViNGZjYTY5MWEyNTcyNmU2OCBsZWdhY3ktdHJ1bmsKKzY5MDgwIDlhOWQyNmU4NDJiMzMxNWE2N2IxNzczNjEyYjYwZDM5YzE0NDkwNGIgbGVnYWN5LXRydW5rCis2OTA4MSAzMjI4OTI5ZWNiNmQ4NDgzMzc5ZDI5ZjZkMGQyMjY5ZTQ3YzdjMDI3IHB5M2sKKzY5MDgyIGQ2NmUxYWJiM2E5OGNmZDZjN2JiODYwNTk0NjU5N2ZiMjNhN2JkOGIgcHkzaworNjkwODMgN2FkOTk2ZWUzMzM0MWRmMDY4MWYzNDk5MDNlYzAxMzNlNmFiYjA1YSBsZWdhY3ktdHJ1bmsKKzY5MDg0IDcyNWIyMDg3MzBhNTkzNDkxNGY5N2FkNzM5NzAwMGQ0MzY0MTYzNDggcmVsZWFzZTI2LW1haW50Cis2OTA4NSAwN2ZmMjgxYmUwMmM1NTc2YWFjNDBkNjA0NDFmMDI1ZGE3ZjgxMjNkIGxlZ2FjeS10cnVuaworNjkwODYgNGY2MDdjM2FlOGUyZDE3M2YyYWE4M2FiMDgzOTYwMDY0MDFhYjhhNCBweTNrCis2OTA4NyA3Y2IzNTFjOWNmNDAyNDdlMjY5MzcyZTdhYTg5NDEwNTRmNTAxZDkwIGxlZ2FjeS10cnVuaworNjkwODggNGI4OTc2ZWE2OTY2MGE4YjI0NDQ1ZTc3NTBkNTQwZTc5NjdmODA4NiBweTNrCis2OTA4OSA5ZWI4NGZjNDM2ZmMxYjNhNWE0YzZhYmJiNDNlMGY2Y2YwMzRmOGJkIHB5M2sKKzY5MDkwIDRhYmNmOWQxYjkzODBmYmEwMTZlODhhNDkwNDhkOGE3NjRlNmNkMGQgcmVsZWFzZTI2LW1haW50Cis2OTA5MSAxNGU1YjZlODM2ODAwZjgyYTk5NzdlNDExZWIxZjA1OGQ3Y2UwYWE0IHJlbGVhc2UzMC1tYWludAorNjkwOTIgMGI2NjdlMzkzZWIzNDg3MDFmYmMxYWFmNjEwNzU1NzI1ZjRiOTZjYSBweTNrCis2OTA5MyA5NjkzNDZkYmYzMWUyMDRjNjE2ZGY2Y2YwNzYwZGY2MjBiNjhiNWE0IHJlbGVhc2UzMC1tYWludAorNjkwOTQgZGFhZThjMzI0YmUxYjkxOTEzZjU0Y2ZkY2FlNjk3YzQ1M2VlZTI3MiBsZWdhY3ktdHJ1bmsKKzY5MDk1IGQxNjI5YTk1OWNiODUwNDY5ZjZiY2QxY2RjM2M5YmEzM2E2NWE2NmUgcmVsZWFzZTI2LW1haW50Cis2OTA5NiA0NjNmNmMxMmYxZDRjMjUxMTNmNjBlM2I3MDljOWRmMzgxODM1Mjc0IHB5M2sKKzY5MDk3IGQ4NTcxNDU3NGM4YTUwMzViMGQ5NDBiNGVjNjU4OTRhZTc3NWRiMmIgcmVsZWFzZTMwLW1haW50Cis2OTA5OCBiY2I2YWQxY2I1NWRmYTMyYTQyNDJkNmUzOGM5YWM1Y2RlYzJmMWVjIHB5M2sKKzY5MDk5IGFmOTRlZjM4YjVjMGYyN2JjZTk1ZDA5MTA0NTQ4NTgwNjYwMzhmNWQgcmVsZWFzZTMwLW1haW50Cis2OTEwMCAzYzI5MGJjMjFkMmMzZGFiOTVmY2E2YTk5Y2U3OWRjZDJmMDQzNDc4IGxlZ2FjeS10cnVuaworNjkxMDEgZTQ4YzU5MTRkYTgxOGZjOTExNzY3YWU3YmE2NGRiODFhOTZhMzQxNiBweTNrCis2OTEwMiBlMmRjYWQ1NmU0MGUwMzE3NDllN2QzODAwOGQ3YmM3Y2M1Mjk2YTAxIHJlbGVhc2UyNi1tYWludAorNjkxMDMgNWQwZWFlYjQxMzRkN2VjOWQzNzg3YmJhM2U5MjdkM2Q4OGVjNjZjMyByZWxlYXNlMzAtbWFpbnQKKzY5MTA0IDRhNGE3NDM3YzVlMWNmNjZhZDRmZjI1NjZlZTg1ODcxM2Y3YzMzOTQgaW8tYworNjkxMDUgOTFlZDNlY2UwYzc2YTJiMjQ1YjA3NGNmNjFmYmM2NWQ1ODZhNzhiOSBweTNrCis2OTEwNiBmYzU4NmIzODE5ODczZTYzZjk3NWYzYTYyMmI1NDNkZDQyYmYzMTk3IGxlZ2FjeS10cnVuaworNjkxMDcgYzI2MjhiZmU2YTY4NDhmMjg3ZTFjOTJjNjQyYTY4NjcxM2ZmMWE2ZCByZWxlYXNlMjYtbWFpbnQKKzY5MTA4IGMzNzhjNGY0YTc5NjllMWZkMDU1OTc3YWY5Y2MzYjc4N2E0MTdkNGIgcHkzaworNjkxMDkgMjBmNGFmY2QzYjI3ZWU2MzAwYzhmZjkxOTIwYzBkZTJiNjBmMWIyYyByZWxlYXNlMzAtbWFpbnQKKzY5MTEwIGI4OGQzNzcwMTFmNTBkYTlkMzRiOTg3Y2Y0MzZmZDc0OTliNWJkNGQgcHkzaworNjkxMTEgYjQ4YjVkZGFkYTg5NDhlOGM5NTMyNTk2Yzg3ZTBiZmNiNWJhOGMyMCBweTNrCis2OTExMiA2YTI4OTZkOTIzZTNhMmMyNmI5MjZlOTNjODI2MDY1NjYzZjllOTJjIGxlZ2FjeS10cnVuaworNjkxMTMgNGFiMzgxYWVhNjU4MDIwYmYyZDQ2YzQ1NGYyYTdiODUzNjY3N2VkZSBsZWdhY3ktdHJ1bmsKKzY5MTE0IGUyMjcwNTRkNDk2ZGZlODRlYzc0M2IxYmU5ZTJhYjg5OTZhMDI3MGQgcHkzaworNjkxMTUgYTAzOGU4ZmI2N2MyMTBlY2UxOGNhYmE2NzIzYjc4N2IzMTQwZjI4YyBpby1jCis2OTExNiA3Yjc5Njg4NjI2ZTRlZjBkYmM5MWQ2MmNhZTQyNmRhNjVkNThjZmE2IHB5M2sKKzY5MTE3IDk4NjdjODQ5NTMwYmJiZjI2N2JjODA5ZmViMzE2M2IwNThjMDExZTcgcHkzaworNjkxMTggOGMyYzcyY2YyYTBjZmI2MmZiMzAzY2E2M2Y1ZWVmYTVjNmZmOTcxZiBweTNrCis2OTExOSA2MTc4NzUzMzM5NWMwZGFhZGFhYWQ1NTdiZWI0ZjIwNzhmZThhYTYxIHJlbGVhc2UzMC1tYWludAorNjkxMjAgZTY3ZGM0ZGI5NjRjODlhNjc2NGQ0ODNiYWE0NzRmNWVkNDQzMzMxZiBweTNrCis2OTEyMSAzYzJiMzVhMTA1OTNiZDY4Y2Y4ZmY3OWRkNmYzMWY1YTcyYTQzZjFlIHJlbGVhc2UzMC1tYWludAorNjkxMjQgMzU5Mzk0YjYzYTIzODhhYzI3YzA5OGNlZWYyZjQ4YmVhMjA2MTUzMiByZWxlYXNlMzAtbWFpbnQKKzY5MTI1IDdmYzBhZDExYjBhZjA3NGIwNTRhMTFjMDZjMzZjZGExYWFjMmM5ODggcHkzay1pc3N1ZTE3MTcKKzY5MTI2IDM3OGJjMThkMjM1MDliYmYxOWM4ZjdhNWI1YWU4MWM4NTI1YWUzYTggcHkzay1pc3N1ZTE3MTcKKzY5MTI3IDIzOTQ0ZjFkNTNmZGZiOWNkMDAwZGJhOGFiNzI2YzNhYzQyZmY4OTIgcHkzay1pc3N1ZTE3MTcKKzY5MTI5IDRjOWVhNjQ3ZWFmNDIxZGU1NzY5MmQwZWYzNjE3ZDNlZTIwOTJkNjggbGVnYWN5LXRydW5rCis2OTEzMCBjNWUyODI4NWI3NGQwMTIzMjFiNTZjN2I3YTNmOWVmYmQzYzZlYzdiIGxlZ2FjeS10cnVuaworNjkxMzEgNzU0MDMxNGZmMjY3YjRkNWVlMDNjZDUzOWYyYTAyZWJkZGMwNjdhNSBsZWdhY3ktdHJ1bmsKKzY5MTMyIDAyYTkwZGMwYzI5YThhZjY1YjBiMmI5MTE2ZTZjNDBiNGJhNjQ2NWEgcHkzaworNjkxMzMgZGYwOTA1OTdhZmFhZjBmNzc4YjVjM2I2MWE3NTFmZDJmNzk1MWZjNyBweTNrCis2OTEzNCBiZTU3MzU0ZGRiMTE0NDYyMzBhY2JiNGIxOWFmZTU3MTI5MWFlNDE1IGxlZ2FjeS10cnVuaworNjkxMzUgZGNmZDQzNjU2N2NlZjk0ODdkZDkwYTU0N2E3ZWJhM2YxZmRhNDY5ZCByZWxlYXNlMjYtbWFpbnQKKzY5MTM2IDQzMTcxZjU1N2FmODBmZWEwYzhlMGEyYTM2OWQxZDdkMGJkODUxMzcgcHkzaworNjkxMzcgYzA2ZmFhODE5NmIzYTA3ZTY2YTcwZjdkOGUyYmUxMDcxODFiMTRlZCByZWxlYXNlMzAtbWFpbnQKKzY5MTM4IDFjMGE1YTk4MjdmYTk3ZjZlMWI5NTFmNjA2MDc1OWY5YzRhYWI5NjQgcHkzaworNjkxMzkgNWY2ZDIyNWUzYzFkYWMwOWFiYjczZWY1ODhlNjM0OGE4ZjQxNDIyNiBsZWdhY3ktdHJ1bmsKKzY5MTQwIDk0MjZlZWI3ZjRlNmE1MWNjZGMwZDBkMzYwZjI4MjhlYjc4ZDk2NTIgbGVnYWN5LXRydW5rCis2OTE0MSA5ZDNjMmNlODZmNDI4ZTIxZmM0ZWIxODNhYTIzOGJlZTI2NzA5Mzc2IGxlZ2FjeS10cnVuaworNjkxNDMgMGNhYTAwMmY1ZjNkMjU4ZTRkNWQ0MmExZDhiNzE4NDNmOWU0NzBjZSBsZWdhY3ktdHJ1bmsKKzY5MTQ2IDEwZGFlZTNhMzYwOTc4YjkzOTM2MGM4MTMxNWU0YjhjZDc2NWY2NjIgbGVnYWN5LXRydW5rCis2OTE0OSBjZDVkYjQzZGJiNjViOTE3MDIxMjAxYjM2OTRiMWE3ZmNmNzQ2MjQzIGxlZ2FjeS10cnVuaworNjkxNTAgMTdkNDAxYWQ2YTIxNTlmZjhjMGE3NGI4ZjY4YWQ2NzlmZGI1ZTI3ZCBweTNrCis2OTE1MSBiYzJkOTRmZDkxMGMwYzgzNTA4OTMxZjdlODRlYTY1ZDEyZGI2OWE2IHB5M2sKKzY5MTUyIDFmMjkyMmJhNWEyYTEwMTg5NWYyOTVhOTMzOTQ0ZTUyNzk4NzMzZWUgcmVsZWFzZTI2LW1haW50Cis2OTE1MyA0YzIwNTgzNTA4MzM4Y2Y5MGE0OTVkNGVjOTFlMzc4MmY0MzRhODk2IHJlbGVhc2UzMC1tYWludAorNjkxNTQgYWEwN2ExMjMxOTRhMGI3ODljNjNjYjQ3Zjc4ODY2YmZjMmFhMTdlMyBsZWdhY3ktdHJ1bmsKKzY5MTU1IDczOTgxYmNkYTVhMmJiY2FhNThhZjRiNGRiNzAwZWY1ZGM4NTY1MzEgbGVnYWN5LXRydW5rCis2OTE1NiBlYjI2MDdhNjUxNmU2N2JjYTQ1MDhhMmRhZWQ2MzgxZjdiNjcxMjVkIGxlZ2FjeS10cnVuaworNjkxNTcgYmM5MmQ4M2U1NTA4Mjg3N2RmZmU1MjAyMzg2NDJhMmRlNDViMmJiMCBsZWdhY3ktdHJ1bmsKKzY5MTU4IDg2NzJiMGY2NTc1ZDNiMWNjNmFlY2YxMDM4Yjg5OTljNzNlNjY0MTYgbGVnYWN5LXRydW5rCis2OTE1OSA5YTI0NGFmYTFhOWExODJmNGE4N2Q5NTdiNDA4M2ZkZDcyNzk1MTc5IGxlZ2FjeS10cnVuaworNjkxNjAgYjQ3Nzk1OGRmOTc4ZWQxYWNjZDQxZWMyMTNiNjJkNjExOTVlN2E0MyByZWxlYXNlMjYtbWFpbnQKKzY5MTYxIGZlYjk5MzQzMDdiOWI3ODk1ZWJmNDFhNDI3ZjA2NDVkYmYyZjc4NGQgbGVnYWN5LXRydW5rCis2OTE2MiAxNDg0MjE3MmIxNTIyZjliYTBiZmQ0ZGE1MWEyOTBiYTM3NzUzN2VlIHJlbGVhc2UyNi1tYWludAorNjkxNjMgYjhjZTk3OWNkZGNlMjA2YzcxYzA2ODdmNDdlZDc3MmFjMjU3MTAzNSByZWxlYXNlMzAtbWFpbnQKKzY5MTY0IDM5NTRjOWI5MGI1MjdhMTEwMmVkZTdlNmU4M2M1ZmFjNWU2MjU4MjMgcHkzaworNjkxNjUgMDZiYmNiNzkyZjA0ZTBhMzRkNzI1NDFiYTUyN2IwMjIyMmMzZmVkNyBweTNrCis2OTE2NiA4ZDNmN2RkOWI2Y2NlMDUzZGJlYTAwNmRjYTA4NDQzZjcxMTEyNGE3IHB5M2sKKzY5MTY3IDUwYmQyYzE4ZWZmMDY1Mjk1YzA5YjhkNDQ5OWRjNTVlZGE2ODc4YTQgcHkzaworNjkxNjggODE1NTg5ZDYyYTlhZTIwMWE5MDQ1NGRjNjhiMTI5MTU0NjgzMDI5ZiBweTNrCis2OTE2OSBkMjZkOTc4ZDAwNjY0ODY4YzBjY2I4ZmU5NmVjMDU0MzgxYzA0NmQ0IGxlZ2FjeS10cnVuaworNjkxNzAgNGIzMjQ2YzgzZTNmMmNjYWM3NDE1NjFjYmE1YTQ3ZGYyMmQ5ZGY2MCBweTNrCis2OTE3MSA0MjdmNGE3NGY1MzhhYmY0NjczMWNkODVlOGFkZDlmZWZkNGQyNzRiIHB5M2sKKzY5MTcyIGQ4NWVmMjZlZmQxMDM3NmJiMjEzNWUxZTE4YTdjZjA2YmRmMGY3MmQgcHkzaworNjkxNzMgMTM0ZmJjZTExMWU5YjljMmQ4MWVlMDQ4ZDg4YTMxOWY4Mjg1OWEwZCBweTNrCis2OTE3NCBkZWVkZGRjN2UwYjRkOTFlM2U5ZDYxMTU4YmUyOTA5NDg0NTJlODMwIHB5M2sKKzY5MTc2IDM4NmViNGI1Y2JiM2FjNjFmYjVlOGI3MDdjM2RlZmU2MWRmNzVlYzMgcHkzaworNjkxNzcgZmJiMTdjYWI1NzE2ZTM5MzdkMzUwZmQ0NzJiNjc0MjFiOTMwYzRhZiBweTNrCis2OTE3OCA2YmNmODRkNjM3OTc1MmJlODZkMWY5YjM0OTkzOGU3ZDdmNWMwZDE1IHB5M2sKKzY5MTc5IDc2NjQwNWMwNGJkYzI5NDQ1MzNjNGRhNjgyMDg2YjFmNjBmNmNkYWYgcHkzaworNjkxODEgN2M5MWY0NzliZDBkOTEwYmY5ZDRjMzQ0OTNkMGE0MWUwOGI4OGZjNiBweTNrCis2OTE4MiBlOTY3NWQ3MmUzZTNiOTQwM2RlNDBjMmQxMTEzZjE1MTBkZDIxNmZjIHJlbGVhc2UzMC1tYWludAorNjkxODMgZTY2MzA3NWZkMWFlNGE5OTgwMGU2NzUwNzhjYWYyYmE2Zjc5MDM3NiBweTNrLWlzc3VlMTcxNworNjkxODQgOWNhMzRjMThlMWJkM2ExZWYxYTMxODU0NjM1OTliODE3ZWMyOGU3OSBweTNrCis2OTE4NSAwMTYyY2Q0ZjU1YmUzMWQxYmVkMmFmZjVhN2RjNjkzZGQ5ZjlhMDg4IHJlbGVhc2UzMC1tYWludAorNjkxODYgZjAwODk0MTNjMTJmZDQzZTgyYzU1ZTlhOTUxMmMxNmFiYzM5YjllZiBweTNrLWlzc3VlMTcxNworNjkxODggYmE5NGQ3YzA5NWU4MGY4OWJlMjliMjIzM2RiZjMzYWM4NWI5Nzg3OCBweTNrCis2OTE4OSA0MTBkZmQ0MjNlZjEyYjNjMzQ3ZjRkZTljZTczYTVmNThhNmY4MjBlIHJlbGVhc2UzMC1tYWludAorNjkxOTAgZTJkYjE1MTk2YTU0YjUzOTAyOTQ2MjgwNjMxZDk5ZjVmM2E1NjYwZSBweTNrCis2OTE5MSAyMzU4Mjk5NTY0ZWE4MDQ5ZjhiY2ExYWExNTZmMWUwZDQ2YWE1ZjYzIHJlbGVhc2UzMC1tYWludAorNjkxOTIgZTk0NTc4MjQ3Nzc0MGM4ZmMxOWE5ZGZkMDA4NWNlMzNjYjFkOTBiOCBweTNrCis2OTE5MyBmZGFlNGU3NDlkMmIzODA5ZjA1Nzk4NDFmYTU5NzAzNjE3YWJjN2Q3IHJlbGVhc2UzMC1tYWludAorNjkxOTQgNTdkN2Q2YzJiMTFiY2M1NDk1ZjdlODljOWRjNTRmYTNlMmRjZmIwOSBpby1jCis2OTE5NSA0N2Q3NDcxMjRhM2UwYzRiYzcwODliZDcwNmViMmU1MWQ0N2JlMmVkIGxlZ2FjeS10cnVuaworNjkxOTYgYWVmMjlhOWVkNDkxODQ3MmNmMmI0NzNlMGY5M2QxOGYyMDZiYWE4NyByZWxlYXNlMjYtbWFpbnQKKzY5MTk3IDhjNDQxMGQwNjdlZTdhMTljN2I2YzY3Zjg4YjM4YWUxYWIzMjkzYzMgcHkzaworNjkxOTggYWUwMjZkMjU5ZDQxMTEzOGU1MGYwNzE0NzcxOWNjYjE5YTk2YWUzZiBweTNrCis2OTIwMCA5MjM2MzUxYjUyOWE0Y2JkYmE4Yjg1NmI3YTZkNTI4ZDFmYWI1YWVmIGxlZ2FjeS10cnVuaworNjkyMDEgYzA4M2MyNzRmOWFmZWNjYWQ4MmI4YjQ3YjMwNjczMDJiOTdiYmM1MiByZWxlYXNlMjYtbWFpbnQKKzY5MjAyIDJjMTkyNzJkOGU1NjU4NmUxOTdhMmIxNDRlNzBhOTlhOGI5MTU5MTEgcHkzaworNjkyMDMgNmU1Y2E5OGEzMGFjMzg1MzEwNWRkMWViNzA1NWIzOTYyNjY4YzY2MCByZWxlYXNlMzAtbWFpbnQKKzY5MjA1IDAxYjNhY2QxMDlkYmI1NjI0ODI3NGY3NTE0ZmMyMDBhYmFlNzAzZjAgbGVnYWN5LXRydW5rCis2OTIwNiAyYWRmOWVkNmJhN2U4OTc0ZTc3MjhlYTE5OWE4MjliOTE0MTU3Y2FlIHJlbGVhc2UyNi1tYWludAorNjkyMDcgZmY2ODNhOTI4NDE5MzQwZDVhMDMxODNlNTY3MWI3YzUzNTE0MGI2NiBweTNrCis2OTIwOCA4N2E5ODVhMWI1YzlkMGRjMjZhMTdmZDJkZGJmOThlNmJmZTEwYTg0IHJlbGVhc2UzMC1tYWludAorNjkyMDkgMDUwNzRjODgzNzM4NDdhM2JlYzRmM2RlMDhlMjNjZTA3YWMzNTE2NSBweTNrCis2OTIxMCA2MzM4NmFlNzdmNzkzZjgxZjcwYTc1ODk4ZWJkNzZhMTI2NzcxMzI1IHB5M2sKKzY5MjExIGZhNzlmMTIyYTFiMjVmM2U0MzIxMzdjY2UxYmY0MmU4YjE3ODg0MTkgbGVnYWN5LXRydW5rCis2OTIxMiA3YjdhNjM5Yjk2MGY1YzJkM2NiODM3MDIxOTg1ZjU2NjRjOGQ2NmViIGxlZ2FjeS10cnVuaworNjkyMTMgMGMzMjBmOGU3ZTIwMzQ1ODczMjJmOGM5YmZmNmUzZDMzNWRkYWUwMiBweTNrCis2OTIxNCBkZWJkMTRjNDg5YjkyMTlhNTQ4ZmMzMjAwMmY0YTRlZTgzZDJhNDFkIHB5M2sKKzY5MjE1IDg3ZmJiZjIyYWRmMzdiYTc4Y2Y4Y2ViMTI0MzcyNzI3ZWIyZjExNGUgcmVsZWFzZTMwLW1haW50Cis2OTIxNiA1YzcwMmE3ZDRjNDA5YWZjYzIzMWQ5M2FkZTQ5ZmRlNzUyMTYyMDhhIHB5M2staXNzdWUxNzE3Cis2OTIxNyA0MGZmODNlMDIzOTUzMWVjMzhmNmViZDE5NGQ4ZDdmNjI1ZDZlOWY0IGxlZ2FjeS10cnVuaworNjkyMTggOTA4MjFjN2FkODc0Zjg5MzM0NzlkOTkyOTZjNDg0NTQxNGZkNjgxMSBweTNrCis2OTIxOSA5OTEzYzQ3MTUyNjEwNjc0MjY1MGM2OGI5OWY0ZGFhZjRhYmIwZjQyIGxlZ2FjeS10cnVuaworNjkyMjAgZmFlMTc1OGEyMzQ2NTE4NzAyZTFmOTY2YzhkNTM2OGE2YTUwNjlkNCByZWxlYXNlMjYtbWFpbnQKKzY5MjIxIDYzMGE0MzQ1MWQwNGFhMGE0ZGExNDVhN2ViYzgxNDJjZTYyNjEzMGEgcmVsZWFzZTMwLW1haW50Cis2OTIyMiBhOTUzNDM5MWZmZjlmMWNiZTAxNWJiZWRkZDk3ODk0YjAzNjNjODRjIHB5M2sKKzY5MjIzIDM2MmQ5NmRiZTkyYzU0MTAyZjEyZjA2ZDI5ZDNlMWEyYTZiY2UxYzUgcmVsZWFzZTMwLW1haW50Cis2OTIyNCA3ODZjMTI3ODU3MmNjNmYzNzhiNThlZTEwZGIwMTJiZmQ5NThmMDEwIHB5M2sKKzY5MjI1IGMyMWQ4Y2RjY2FlMTBlNzJjNjFlMWU3ZTU5Mjk5YWYwM2FiZTMyZjMgcmVsZWFzZTMwLW1haW50Cis2OTIyNiAxNDc5ZGIyZWY5Y2Q1M2I1ZWYxOTAxNDRjNGU0NzJlMTVkOWFhYjViIHB5M2staXNzdWUxNzE3Cis2OTIyNyA2YzhlZGRmMjQwMzVkMzRjYzljMmQ2YzlmMmIxN2UxNGZiMjg5MjhiIGxlZ2FjeS10cnVuaworNjkyMjggY2E3MWE0NGQ1NDMyMjI5Yjg3MDNmZTJjODJjMjEzMDE3NTZkMjVjZiByZWxlYXNlMjYtbWFpbnQKKzY5MjI5IDYyNTFiOWQzMjFhZjhkOTVmYjQyMmE3ZjdkNzQ1ZTY1YTcyYjA5NTcgcHkzaworNjkyMzAgNzQ0MzhmYzExZDA1ZGNkYTk3YTA5YzEyZjYwYTJkOTU5ZjgzNjkzNyByZWxlYXNlMzAtbWFpbnQKKzY5MjMzIGY1ZDE0MzRmNGQzZjk3ZTNjMzY4MmE1YzU3MTJmZDE1YTFlNjZjZjYgcHkzaworNjkyMzQgOThmNGM5MDY4Nzc1MDcxMGZiNGUxYTZjOTYyYzA0MjVhNzE0MTBiZCBweTNrCis2OTIzNiBjODIwNzI1MjY1YWIxOTA5MGJjYWQxNjE3YTliZThhYjY4YzJlY2RmIHJlbGVhc2UzMC1tYWludAorNjkyMzcgZDNlNmYyNjAyMzAwY2FlYTc2NWQ0YTA1MTMzNzhmNjJkMmQzYjZhYSBsZWdhY3ktdHJ1bmsKKzY5MjM4IDM4ODBhMTU5MjEzN2U2OGI4OTFjODQ4MTc2YTE5ZTE2NjRmMmUyYTYgcmVsZWFzZTI2LW1haW50Cis2OTIzOSA2NzY1NDEwNmVlNzk1NzRhNmY0YTg4ZDhjNWI0ZTZhZmUzYmNkOGNiIHB5M2sKKzY5MjQwIDczNTRmMWFmYWVjYjQ1YjE0MWEwNDA5Mjk4ZTc5NmZmMjZkYjExMGEgbGVnYWN5LXRydW5rCis2OTI0MSA3YmE0MWMwOTE3ZmY3YjEwNDA2ZWY0YmM5OGE2NGIwOTYwZTgxYjk1IHJlbGVhc2UyNi1tYWludAorNjkyNDIgNWMyNTQ3OTVhYTA3YTcyNzE4Y2MwNmM4NmY2MTE2OGZiMTZkNTEzNyBsZWdhY3ktdHJ1bmsKKzY5MjQzIGFlYTkwZjVmMzk4YmRlYzBjM2NhMzZlMTc2MDEyM2MyYmJhNDJiOWQgcmVsZWFzZTI2LW1haW50Cis2OTI0NCBhMWE3MWQ1MTVkZDJmZDlmOWI1MGQ5YTJkZmNmNDMwNWM4MmRjOTljIHJlbGVhc2UyNi1tYWludAorNjkyNDUgMGYzYWFiYWU0Y2M2NDY1OTkyMjljZGE5YjVmZGQ2MTg0ZjNiMDI3NyByZWxlYXNlMzAtbWFpbnQKKzY5MjQ2IDViNzEzMDQ1ZWE5MDZlMGZlMjFiYmYxYTE2NGUzMTg5MzlhMDcyMWYgcHkzaworNjkyNDcgZjM3NzI3NzQ4MmFiNTg2MDgwMjcyMzUwNGM5NjQxYzhjYzY2YmJhNSBweTNrCis2OTI0OCBmMzUxZmI3ZWExNzk2YWMwOTRhYWVhYjQ2YjBjODdhMDU2ZjA5MWRjIHJlbGVhc2UzMC1tYWludAorNjkyNDkgODU3YTNmOWRhOTE1MzE1OWU1MjE2ZmZlYmE1M2ZkN2IxYmYxZDEyNyBweTNrCis2OTI1MSBjNTEzZTcyOGUyNGNiZjU2NjhkOGQ4YmEwMTYxYWRjMDNlODJjMTdlIHB5M2sKKzY5MjUyIGUyMGY1YTY4NGFlZmE1ODhiNDUwYjMzMGE0YjZhMWEyY2I2NWViYjkgbGVnYWN5LXRydW5rCis2OTI1MyBlYzY5ZGIyNGRlMTkwYTdlOTIyNDNkMDc2ZDAxODAzNWI4Y2YyYmE0IGxlZ2FjeS10cnVuaworNjkyNTQgOGIwODgyYzY3YjZjZmUxZjA4NTJjNjJlMGExYzJkYmE0ZmE0MThjMCBweTNrCis2OTI1NSBlNWFiYWZhZTM2MDQ1YzVlYmJjZjQyNzE3ZTNhN2EwMTYyNDBhMWU5IHJlbGVhc2UyNi1tYWludAorNjkyNTcgNzU1MjFjMTIzNjEzYWNhYmI3ZWRmMmNjNGM0ZjYyOTM2NTI1ZmJiZiBsZWdhY3ktdHJ1bmsKKzY5MjU5IDVmMzM1NGM1MmU4YjhhYWFlNGExNzQ0NDQyZWJiMzA1OWVhMjQ3MDcgcHkzaworNjkyNjAgZTk3MDdjYzM2ODlkMzhkYmFhZDAwZTQ5NDdlMzFjYjU5MmQzZWFhZSBsZWdhY3ktdHJ1bmsKKzY5MjYxIDhjMDE5ODc3NGVkNmRhYmVmM2ZlNWFjYWMzMjlhOWQ1YTQ1OTM5OGUgcHkzaworNjkyNjIgMWU3YTA2YTdmNWU3OGIwNzUxY2Q5NDU2MzkzNWQ1ZDc1NjhiNzk2MyBsZWdhY3ktdHJ1bmsKKzY5MjY4IGI1ODZjYTNhMzA2MjI1MmFhOThhNjI0NTcxZmI3MGVhODg5MGYwNjggbGVnYWN5LXRydW5rCis2OTI3MSA0ODQ1YWJmNTcyZjE0NmI4NGZiYTYyMTNhMTQxMWNlZGY5NzY1MzEzIGxlZ2FjeS10cnVuaworNjkyNzIgZWM2MzRlNTdiYzU4NjIzNjdjMGY4YmU4OTIxMDRiNzkyNzQ5MGI1NyBsZWdhY3ktdHJ1bmsKKzY5MjczIGY3NDUyODc3NmMxMTVmNDNlYTEzZWYwMmRmM2E0ZWIyMzZjMmRlMTYgbGVnYWN5LXRydW5rCis2OTI3NCAyNDU2NmU0OTk3YWUyZjY3NWU2YmM4ZmE1MDA0MTI2OGFhODFkN2U2IHB5M2sKKzY5Mjc1IGNlMDRlMzZmMmE1NTk5Mjk2YjQ3NGNkYmE3MTJiOWYyNmQyZDg5ODUgcmVsZWFzZTI2LW1haW50Cis2OTI3NiAyYjYwM2Y3MjMyNjA1ZGYzNTdmZjAwNTVhN2U1MzAzNTU0MGE1MjlhIGxlZ2FjeS10cnVuaworNjkyNzcgNDczZWIzNzBkZTJjZmQ2NmFiZmJmZjYxZmY1NzdjZjBmY2NjNzYxNiByZWxlYXNlMjYtbWFpbnQKKzY5Mjc4IGM5MWI3NmQ4ZWMwYTk3MTY1ZTU4Yzk2MGQ2YTc5YjkxZWU5MzNjZmIgcmVsZWFzZTMwLW1haW50Cis2OTI3OSBhYTJlYjBmMjQyZmZkOTU4OGJjYzQ3MTI4MjYzMjA4YzdlZGU2NDNmIHB5M2sKKzY5MjgwIDhlMTVkZjM3MjZlMTIwOWEwMWIxM2YxMmVmZThiYjM5NTdlN2JlOWQgcHkzaworNjkyODEgNTNkNjQ0NWM2YzVhOGQ5ODYwM2U3YzNkMzMzODg5ZTlhYWY1NGE5MSBweTNrCis2OTI4MiBiNDYxODVkN2U5NWE3YTBjMzMxZjI3NjgzNGZmNWNiNTZjMDIwNjUwIHB5M2sKKzY5MjgzIDM3OGFiYjI4MWUzMTVjZDA4NDAwZGJmMjRmNWYyOTZjNTEyZTRkN2IgcHkzaworNjkyODQgOGIxOGIzODkwZTMxNjA5NGNkZDAxYmFjNzIwMjE5NTQyNzQ1YTRjOSBweTNrCis2OTI4NSBlMjE0YmRkNTUyZmMyNmY0ZjZiMmMwY2FjNjM0Zjg4MmI2ODhkNjEwIGxlZ2FjeS10cnVuaworNjkyODYgNWE5NDI0ODkzYjVmZDFkNmVjNTg5NDNkZDIxZjVhYzQ2OGI0ZDhkMyByZWxlYXNlMjYtbWFpbnQKKzY5Mjg3IDIzMzNhNTdmZWI5ODUwMmRlMGIwYWJmMjBiYmQxM2UzZTAxZDkwMzUgcHkzaworNjkyODggMWIyMzNjODNmMmE5YjgxYWNmMGVmMmZkNDgyOWY2NDNmNWU4MzllOSBsZWdhY3ktdHJ1bmsKKzY5Mjg5IGNhNDIzMDA4ZmE0YWU2NTBmYzJkZDBiM2EzNTVlODdjNzZiYTM2NGEgbGVnYWN5LXRydW5rCis2OTI5MCA5MjE3YjNhNDc1Mjg2MjgwZjA2MWE3YWYxOWY0NjdkNzQ5YTIwZDQ2IHB5M2sKKzY5MjkxIDQ0NTJlYjA1N2NjNGNkYWVkNGY5ZTgxNTZiNzQxYjE3MmY1ODBmYjcgcHkzaworNjkyOTIgM2YyNzdiNTY1Zjc2ZWM2OGQyN2ZjZGU4YTc4NjdkNjhmOGQzNDBkZSBweTNrCis2OTI5MyA4YWE3MWMxOWRjYjgwOGNhODFjNmMyYzNkMWI0YTE3NTQ4ZmQ5YmY1IGxlZ2FjeS10cnVuaworNjkyOTQgMThkMzcyOWUyYmFjMDEyYzI3ZmI3YjMxZWE3NTcwMWNhOTZlODIwMyBweTNrCis2OTI5NSBiMTI2Y2U3MDdhMzQ2ZTgwM2Y3MzdkY2JjYjg0ODc0Nzg1OWI5ZGVlIGxlZ2FjeS10cnVuaworNjkyOTYgNTJmNzhiYjI2YmY1MGYzNGU2YzJiYmYwMDVlYjM0NWJkZTBlNzQ2OSBweTNrCis2OTI5NyBlZWFhMjU5MDY5YTMzYmY5MjA1YmNiMGUyM2NkMDlhYTllMThjZmI1IGxlZ2FjeS10cnVuaworNjkyOTggOGY4OTEwZjNiNjUxYzI4M2VkYTQ3OWZhZWZhMzk2ZmRiYTE2M2NmNSBsZWdhY3ktdHJ1bmsKKzY5Mjk5IDhjODgwYmJiZTY4NWMyMjAxNjNkMTZiZDFkMjBkZjNiODI0ODkyOTggbGVnYWN5LXRydW5rCis2OTMwMCAwYzlkNTk5ODM0YjhiNGNjNGNlZWExYzA1NGVmYWQxOTE2ODZhZjg3IGxlZ2FjeS10cnVuaworNjkzMDEgNDU3OTU3YTdkNmJhOWJhZjlhY2IyMDhjYWEwZTIyNjc0YTNkYTUxYyBsZWdhY3ktdHJ1bmsKKzY5MzAyIGY0MDEyZTc4MjYwYzVkOTA0NGYwMTg3OWM4NzU4OTZkNzFlZDhiYjAgbGVnYWN5LXRydW5rCis2OTMwMyBiZjNiOGUzMDIxM2Y2YWZlZTQwMDc1OTliNjAwYTg4NGRmNWY5YTU4IGxlZ2FjeS10cnVuaworNjkzMDQgZjBlNWY4NTg5YTBjM2Q0NjYzY2YyNTE5YjUwYmFkZTRjZThmN2Y3NSBsZWdhY3ktdHJ1bmsKKzY5MzA1IDkwYTRjNjY2Zjc3YTg1NzMyOTE1M2UwNzgzYWJlMTE1ZWJkNzRiODAgbGVnYWN5LXRydW5rCis2OTMwNiA0MWM3MWFkNDdmODkzZDMyZGYwMGYyMDZiOGQyYjE1NDEwNDg1ZjBhIHB5M2sKKzY5MzA3IDMyMWYyN2E0MTRlODU0YWRlZjUwZjRlZDhmYzA0NGNjZDYwYmY1MTIgcHkzaworNjkzMDggNzYyMzk3OThhNjA4NDlkOWVjMzdiYjVlM2VlNTYyMTVhM2FiMGJmZSBweTNrCis2OTMxMyAzZmMyNWFlMTg5ZTk2OGE1MDc2ZmI5YWYxMjFjODM1NmY1ZmM2ODNhIHB5M2sKKzY5MzE1IGUwNWM2YmU2YWYxMDBhODk3YjkzYjc0YTM3M2YwNzBjZTViNjc3ZGMgbGVnYWN5LXRydW5rCis2OTMxNiA0NjZlYjk3ODRlOGJhOTA4YWE0YjYyZTlkNTA0MDE5NzM4NTlmOTdhIGxlZ2FjeS10cnVuaworNjkzMTcgZWYzYzZkOWI0ZmVjYTY3N2I5NDZkNDUzODNkZjMzNGVjY2ZhMzA3ZCByZWxlYXNlMjYtbWFpbnQKKzY5MzE4IDk5N2IyNjMyYzliNzVhMWNiNjgyMGRlMmE4ZDEyNmMxOWI4YTNjNWQgcHkzaworNjkzMTkgZmRlMDNlNzViYzEwMGFkZGJhM2Q4ZTg5MjU1MTE1YjZlNDRjNTYwNCByZWxlYXNlMzAtbWFpbnQKKzY5MzIwIGRjODVjYTQxMjA3OWY3ODNhZGFiMjMzNWQ4MWQzZDQ4MGViYTcyNjAgcHkzaworNjkzMjEgZTU0MjVhZjYwZjMwNDE2MTUwNzIwMzNhOTJkMzUzMGZmMjAxYjcwMiBweTNrCis2OTMyMiBhMTg5M2M2OTE4Nzk0ZDBmNGIyNzFlZDllMmJmZmM3OTYxNjA5ZmFkIGxlZ2FjeS10cnVuaworNjkzMjMgZTZhMTQ2ODg1ODBlZjRkZDYyN2VjYmE2YjQwNzY1MjQxOTRkNmEzNSBweTNrCis2OTMyNCA1MGQ4OTQzNmFlYWI3M2RlZWIwYmEzN2ZkZGY2MDBiNGM2NGJiODYzIGxlZ2FjeS10cnVuaworNjkzMjUgMTY3MTAwNDgzOWY4YmZmZTI5ZWIwN2ViOGUxZjExY2UyMWViOThlNiByZWxlYXNlMjYtbWFpbnQKKzY5MzI2IDdlMWEzODU4NDdhOThkYjhmNTM1ZGVmMjg2MDY0ODliZTU2NWU2MTYgcHkzaworNjkzMjggMzc0MzFjZDEyYmYyNzRhZGM2OThiYWVlM2ZlNzAxY2JhOWViNGM3NCByZWxlYXNlMzAtbWFpbnQKKzY5MzMwIDIxYzNlMzUzMTUwNDYzNjFhMDBjN2NlM2ZkNTMyOTJmYmEwZmE1MDEgbGVnYWN5LXRydW5rCis2OTMzMSBlMjM5ZTk3N2JiMzJhMmQzYTYxNjIwZjYwNTI0NWJkNWQyN2I5OWMxIGxlZ2FjeS10cnVuaworNjkzMzIgYTNlYTY1YmZlMzcwNmE0NmU4NTg5YjM1MWJhMDQzOWU5MWNlNWEwZiBsZWdhY3ktdHJ1bmsKKzY5MzMzIGY3OGQ3ZWJiOTZkYTg0YzYyODUxYzVjYjI4YzEwZmEzMWQ2MjY3YmUgcmVsZWFzZTI2LW1haW50Cis2OTMzNCBjNTAyMmIxMDY0ZWE2NmVlMzUwN2VlMGE2YWIxYTMwOTVmYzlkODY3IHJlbGVhc2UyNi1tYWludAorNjkzMzUgZTQzOWY5NzIyYTczNDlkZmZlNWNmYjA3MjgyYjE4Y2FjNDg4ZTIyOSBweTNrCis2OTMzNiA1NDBmYmU1YzgxNjNmNDk4ZjY4MDk0MmVhNmQ2ZmVhNmUyY2QwODdiIHB5M2sKKzY5MzM3IDdiOGZhMjY1Mjg2NjkxMDdkMWJmMzQzMTNjYzZhYjg1OTg2ZDkzODQgcmVsZWFzZTI2LW1haW50Cis2OTMzOCBkYjhlZmM5NDAxNmY0ZGRjYzNjMjA5NjcyZTIwZWU1OTFlYzZhZGEzIHJlbGVhc2UzMC1tYWludAorNjkzMzkgZDE4NTUwMjk4YWY4NzczMDBmMzQ1MTEzZmQ2ZmEyYTM0Y2U3NDk4OCByZWxlYXNlMzAtbWFpbnQKKzY5MzQyIGZkZWNiOTE4MjYwNDBkZmE3Njk3Y2M2MmVmZGE3MWU2NjhlMDBjMmYgbGVnYWN5LXRydW5rCis2OTM0MyAxM2YxMzUyYTNmODc0M2UzOWM2MmEwYmRiNmQxNTBkNTA4ZDRkMDg3IHJlbGVhc2UyNi1tYWludAorNjkzNDQgMjA3MDk3NjkxOTcyNzRhYjAyMmRhNTgwNzE5NzY3ZTY5Y2RkMTRiNSBweTNrCis2OTM0NSA5YzQ2ZDEwOTAwN2U2YzhmMmQ5OTc5NjIxZDg5ZGQ2NTEzNzk1MmE2IHJlbGVhc2UzMC1tYWludAorNjkzNDYgNGNjNDlkOTc4ZWMyM2FhNTVmYmFhMzBhYWZmODNlZWVmMzRkNzQ0MCBweTNrCis2OTM0NyBiYmMxYzY4MTUzYWJkZWIyZTk3NGNjMGRmMjc4M2QwYTkwNThkYWIzIHJlbGVhc2UzMC1tYWludAorNjkzNDggMGY3NTExNTMzMDdmNDY5ZTNkYzBhODIwOWY2ZmE0Y2I1YzJmMzA4ZiBsZWdhY3ktdHJ1bmsKKzY5MzQ5IGM0YzYxMmQ5NWE5YjZkOTYzNjA0OTI2N2VkMTVmYzZjOTZhY2U3ZjIgcHkzaworNjkzNTAgN2UyOGEyYjBjMWIxZjE5YjUzZTgzNGY4YzcyM2IxMzhjMWJlNjZlZCBweTNrCis2OTM1MiBhMDBlNWRjZWExNmM4ZTA0ODg0NWY5MWMzOTI5NzkyMDM3Y2MwNzE4IHB5M2sKKzY5MzUzIDdhMDUyNTYxMzY0NDdlMGU1ZWMxMjU4MTQzZDY5MjMxYmRiZGMyNWQgcmVsZWFzZTMwLW1haW50Cis2OTM1NCBmOTgxZTA1NTdjMzUwN2NiNDZmNWM5OTlhODY2OGYzZGZmMGM5YTYyIHB5M2sKKzY5MzU1IDA1ZDFjYjA1M2Q0N2U0ZmNhZDgxMDI1NDcxMWU5OWVmMWY4MTMyZWQgcmVsZWFzZTMwLW1haW50Cis2OTM1NiBjYzgyNTMxMTYyNzU4MGIxMDE0YTMwYmRiODVmN2NlOWVjNmY3ZjE0IGxlZ2FjeS10cnVuaworNjkzNTcgZjM4NzgzNGNlNWRjZDM0ZTcxMzE2MjZkNjNlMjVhYjRhODY5NWJmZCByZWxlYXNlMjYtbWFpbnQKKzY5MzU4IDU0ZTQwOWMyZjQ4ZDZhMTI2MGIxNDg1YWRkOTBlYTg3MDk1ZTg1MDMgcHkzaworNjkzNTkgZmI0NTExMWYyNDRlYjVlOWFjNjIzOGUyMDQ2NGQ4M2U4YjdhNmQ3NSByZWxlYXNlMzAtbWFpbnQKKzY5MzYwIDE4M2E2YzI5YmY5YzE4ZGY1OWJiODEyZTg3NjZiYWU5YjI4ZTYwMGUgbGVnYWN5LXRydW5rCis2OTM2MSA2ZjQwNzY4ZDA5MDlkNjlhNDYyZTU0ZTQ2MWUzYWE4ZTQ5ZDdkNTUyIHJlbGVhc2UyNi1tYWludAorNjkzNjIgYjQ4MjBmY2VkYTI0MWIyNWQ3ZjkxNjBmMjlkZmRmMjU1MGYwODEzMyBweTNrCis2OTM2MyBkYjQ2ZjgyZDBhMWQxZGU0MzZkMmYxYjA0ZjJmMGI2Y2U0NWQ5ZTdiIHJlbGVhc2UzMC1tYWludAorNjkzNjQgNDMyN2RmYTY4MTE4Zjk5YjFiOTc4MDM3MjBjZDk0OTJhNTA0N2JjMCBsZWdhY3ktdHJ1bmsKKzY5MzY1IDE4MjEwYWZkMDA1YTcxMDg0NWJiNDY1MDM4MjI4NWJlNzYwMjc3MjMgbGVnYWN5LXRydW5rCis2OTM2NiBjOWFmZmJhMDY5ZWFlNTk1NDM2NWVlNDE5NjU0NWZkODA5YmQ5ZDZmIGxlZ2FjeS10cnVuaworNjkzNjcgMjhlNDMwZjE0YzBkY2Y0MzM3NjIxYmFjN2EyOGZkM2U0MTJmMWI3MSByZWxlYXNlMjYtbWFpbnQKKzY5MzY4IDE5ZGIzNzliYWNmODMzNzcyODJiMjE0N2IyN2Q4MjM3MzY3ZTRiMjUgcHkzaworNjkzNjkgZjJkZjEwYmE2MDU0ODVmM2QwNjI4ZDI1NDQ0MDJmYzM0YTE3YjE5YSByZWxlYXNlMzAtbWFpbnQKKzY5MzcwIDk2ZmU0NWRlN2YyNmZlZmE2NWQ1OGVkYzEyODJkYjNjNWE0ZWY1NzkgcHkzaworNjkzNzEgMWNlMDM2Yjg4MDkzNjQwMWVhMTU5YmFlZGZjMjkyM2JlNTE2NzYzOCByZWxlYXNlMzAtbWFpbnQKKzY5MzcyIGQxZTU0MDdkNTUwOWJhZDhjZjE3NjU3M2Y5NTk4MTM4YzA5OTljZDQgcHkzaworNjkzNzMgNDJmYWE4MDU0YzNkY2JhMmIxNjk4ZDFhYThhNjVhYjcwMzBlNjgyNSBsZWdhY3ktdHJ1bmsKKzY5Mzc0IGJhYTg4ZTllOTc2NmNhOGQ5MjQ2NWExMzA4MGQ0NWQ1YzVkYmNiNzggbGVnYWN5LXRydW5rCis2OTM3NSAyYTQwZDk4MWM2NTJhMmMzY2VmYTdiODRhOGJlMzdjOTBmYWQ5OWMwIHB5M2sKKzY5Mzc2IGQ0NjEzZTk3MDQ5OGE0YWI1ZTZjYTZhNDhiNjU2MTUzNWFiNWIwNjkgbGVnYWN5LXRydW5rCis2OTM3NyA5ODU2YzRmYWFjMDQ4MWJkNzA0ZmUzMjYxMGRhZDk4MDczMjRmM2VhIGxlZ2FjeS10cnVuaworNjkzNzggYjRlMTU0YzhhMzhhNTViN2M5MjI3Nzg2ODVkMmYwZDRiNTc3NThjZiByZWxlYXNlMjYtbWFpbnQKKzY5Mzc5IGQyZGU1ZGEwZjU2MzRmYjgzZmQ4NjgwODViOGM1MzM5MzIzNTdkYTAgcHkzaworNjkzODAgNThiN2RjOWM5NTU3YjdiZDkyZDQ5N2RmMTAxNjU4NWFmODFlZDM5YiBweTNrCis2OTM4MSBjMDI4OTVhM2VkNmQ1N2YzZjg2YjQ0YzA2YmU3MGJlMjdjNmY0ODI2IHJlbGVhc2UzMC1tYWludAorNjkzODIgZTE3YjM3YzM1YzdiYjI0MDUxZGM5NWI1YjQ5Y2MyYzY2MzBjOWRiMCByZWxlYXNlMzAtbWFpbnQKKzY5MzgzIDAzYWRkZDE0ZTZmMmMzMWNlN2Y5NWM4MzIzOGIyZTQ0ZDVkYTc0OTQgcmVsZWFzZTMwLW1haW50Cis2OTM4NCA4MTk3MTY2YWExOWI3ZGMzM2U0N2M5MGMzODBlNjYyYzk2NGY0YmVlIHJlbGVhc2UyNi1tYWludAorNjkzODUgYTcxMzJkYjY5MDkyMThmMDIxZTAzZjAxNDU5MmI2YjY3NTNlMWEzNSBsZWdhY3ktdHJ1bmsKKzY5Mzg2IDdhZDFhYjk5MDZlZTVhYWQ4ZGZmODQ4ZWZlOWJlMTcyMjI3YWVkOTQgcmVsZWFzZTI2LW1haW50Cis2OTM4NyBiMDkxYmY4MzQyMjZhMzlhMDI5MmRkMGQ0ZWNjNWFlOTJiNDNmOTQ0IHB5M2sKKzY5Mzg4IDZlOTNkZDU3OGNiODY2MGZmZTBhMThiYzEzYjA4OGRhNzlmMGVlNzAgcmVsZWFzZTMwLW1haW50Cis2OTM4OSAwMTUxYzUxNGRmNTY5ZWYxYjE4NTJkNGZkYTdlMTNjNzNjYjQ4NWFkIGxlZ2FjeS10cnVuaworNjkzOTAgMjA3ZDBlYTk1M2RmMTg1NTBjZmQ3MGRhMDA4YmE1NTFlNDg4MjlmYyByZWxlYXNlMjYtbWFpbnQKKzY5MzkxIDBiMzgxYjQyM2NkZjcyMzljYzFiMTg3NzEzNDU0M2IzZmRjMzFhZjUgcmVsZWFzZTMwLW1haW50Cis2OTM5MiA2NmVjYTEzZWRlMTgzYzJlMjgwZGQ4YWE2YmJlZDM4ODI2MzZmOTJhIHB5M2sKKzY5MzkzIDgxMTU0Njc3MGQyMGY2MGNkNDRmODI3OTFiNDUzOTgyNTYwYTM0MDAgcmVsZWFzZTMwLW1haW50Cis2OTM5NCA0ODA5YWZhODVhOWI2YmU5YmE2MzAyOTI0ZGUwNWI5ZTdhZGZlZmJkIGxlZ2FjeS10cnVuaworNjkzOTUgN2ExMzU2ZDJhZWVmMzNiODYxYmZiNjcwMmNjMTFhODgyZTVkMGM2MiBweTNrCis2OTM5NiBhYjYwYmRjNzA3MTA2Yjk4ZTFiNTZiNzU1OGQ5ZTM3YjNkOGRiMTVlIHB5M2sKKzY5Mzk3IDY2ZGE1MjgzMzM0ZjA2MWIxZDM4MDVhNmRkN2EyMjIzMzk0ZWQyM2IgcHkzaworNjkzOTggMzg5NjEzM2M5NWNiYThmY2QwMGI0ODEyZDk0NzU4MzM4N2VhNDNhNiBweTNrCis2OTM5OSA1Y2RjNWYwYzEzNGM4ZTY0NTdmNDQ4MDE5MDZjNDI3MWNiOTY1MGE4IHB5M2sKKzY5NDAwIDMyOTU3OTBhNjViZTdmY2E3OWE4OThkYmJkOTY5MDA1M2M4MTE1OGEgcHkzaworNjk0MDEgYmM1OGE2MWY4MTdiZjkyOGZiODY3YWRhMTI3NmExOWMzMzY1OGFiNSBweTNrCis2OTQwMiA0M2QzYTk1ZWQ2NjIxOTcyMDAxZmRiMDNjNWY3ZTk2NGI4MmJiMWE1IHB5M2sKKzY5NDAzIGVlZjM5YjQzOTZmZmU0NjFmNjU2ZTM0YTE3ODFmODFkOTUyOWM0MWYgcHkzaworNjk0MDQgMmYxZWZmZjA2NmIzODgyZDcwMzFjMDdlMTZjOTY1NjRjOWJmODIxZSBsZWdhY3ktdHJ1bmsKKzY5NDA1IDAyNTA3ODgyN2I1NDA4NmM3MTRlOGI3MmRiM2JjZGYzMmRiZThlMzUgcmVsZWFzZTI2LW1haW50Cis2OTQwNiA4Y2Q4ZTIzNjg4MjIxMWU0YmE4NjM5Njk4YjExNzkwZWQxMTRiNGE5IHB5M2sKKzY5NDA3IDkyZmEzOWI5YWYxM2M4MzYxZDUyNDc5YmUyNjlmOTQ2ZmJlYjU3NGQgcHkzaworNjk0MDggODczMTdhODg5ZGIwNDRhNjQxNjZmOGY2NGZhMjM5ZmI2NmFjMTg3NyByZWxlYXNlMzAtbWFpbnQKKzY5NDA5IDY5YjI2ZTk5MGViODYxMGZkMGFlZjkwNWI0YTg2NTE4YTBiYTZkOWMgbGVnYWN5LXRydW5rCis2OTQxMCA5OWUyNjRmZTIzODMwYjNjNmEyMzVlY2FkNmI1YzQ4NmI4ZGZlODczIGxlZ2FjeS10cnVuaworNjk0MTEgYzIxZmI1ZWZjNjM4ZGEyNWVmNDE4NmVhMWRiZTQ1NWFhMmE5NDEzMCBweTNrCis2OTQxMiA5MDFjYjIwN2IxZDMxN2U2OGUxODE4NTI3N2MzZTgzMzNlOGE1MTc1IHJlbGVhc2UzMC1tYWludAorNjk0MTMgNDk0ZGEyYzcxOTAyZDNiNmEyOTJmNGU5OTUzODA3ZmRmNWQ1Mjg3MCBsZWdhY3ktdHJ1bmsKKzY5NDE0IDk4OTlhZmUwZmY4YzE4Y2ZkOTNlY2RkZmMxMjBhODZmODA5ZTE1ZDAgbGVnYWN5LXRydW5rCis2OTQxNSAwYWIzNjc5NmRkNzk1ODkwYzhiYzY0MDY3MzgyZmI1M2Y0M2NkODM5IGxlZ2FjeS10cnVuaworNjk0MTYgMzIwY2Q3MWUyYzU2MmNhZDczYTdkOWNjMGRiZmVmZTA0NTRlYjUzMSBweTNrCis2OTQxNyAxMDBhZTZhOGJjMmRiMzk2N2NlNjhjNTNkYzllOWYxODgwNGQwY2IzIGxlZ2FjeS10cnVuaworNjk0MTggY2NjNzE4OGZkZDI4ZmMzZDIyMDc3Y2UwYjA0YTY3NWQ5ZDk0NjFjYiBweTNrCis2OTQxOSA1Y2NlOTlhYTFmNThhYzdiOTIxM2UzZjUyMjUyZWQ2Yjg0OGRkZjQyIGxlZ2FjeS10cnVuaworNjk0MjAgNTcwOGExZTAxNjQ1OTBlNjA5NDFjNDAzYmFiMjEzNjEyY2U3YjI2YyBsZWdhY3ktdHJ1bmsKKzY5NDIxIDJkMzU0ZjRkNzdiY2JjNmM3NWE3NDBkOGZiNTBmOGM4N2U3NGI2ZjQgcHkzaworNjk0MjIgMTc1OGRlZDQ0YjRlMGZiYjQ3MWU2MTNmNzY5MGEyZWM2ZjMxOGU3NSByZWxlYXNlMjYtbWFpbnQKKzY5NDIzIGY4NWVjZDc1NjQxMTRhMjAyMDE0YTlmNDVhYTQ4MjgyNDI2N2VhM2EgcmVsZWFzZTMwLW1haW50Cis2OTQyNSAxMTdlMTUyZTUxM2E2NTBjZGIxODQyNDk1ZWQzYmQ3YzJiYTYyN2E4IGxlZ2FjeS10cnVuaworNjk0MjYgNzRkMTk2YzU0MmY3OGFiOGE5NDljZTZmODc2MmMwMTgyZmEzNzVjYyBweTNrCis2OTQyNyAxY2M2MWM3OWI5Y2VhZmFmMmIwZTNlNzM5YzRkNjcxZjMyZjNkOGEyIHJlbGVhc2UyNi1tYWludAorNjk0MjggZThmYTEwYzY2ZDE4M2UwZTliN2I3YjYzZGI2Yjk0YzYyNjQ1MTI1MiByZWxlYXNlMzAtbWFpbnQKKzY5NDI5IDUwMWIxZjAzNWYyOTkwYjgyYzZmYjZmODVmNjJhODc5MGUyYWNmMDIgcHkzaworNjk0MzEgMGVkMjJmMWFlZDA0NjM5NDA4MGU5ZWFhZWI1NmVkOGUxZWEzMTY4ZCBweTNrCis2OTQzMiA3YmZhNjQ0OTJkMDAxNjBhNGUwZjc3MjI3MjY2NzViYmMxMWNlYzg0IHJlbGVhc2UzMC1tYWludAorNjk0MzMgYzU5MzVjNzQ5N2ZiNjMxZjQxZDY1NjZkMDNkZDgwZjliMmRhZTY3MCBsZWdhY3ktdHJ1bmsKKzY5NDM0IDRjN2VkNDBkYjgxZWFiYWZhOTMwZDQ2ZDYzZGY3NzFjNDg1ODYyZDQgcHkzaworNjk0MzUgMGViNDA1ZDAxZTA4M2QzZTA2NmU4ODFlZmUzMzFlOWNjMDg3NWY5MyBsZWdhY3ktdHJ1bmsKKzY5NDM2IGJiYjgzNTBkZGJkMjU5ZDE2ZmM3ZWJhMDY5YTdlNDg1MGFhMGRhMDcgbGVnYWN5LXRydW5rCis2OTQzNyA1ODQ5YTRmOTA0YTJhMDMyNThmZDhjYmZjMmVkNGI0YmQ0MzRiODFjIHJlbGVhc2UyNi1tYWludAorNjk0MzggOTQ1Y2I5NWIzNWJmNTVjYWI1ZWJiMDRhOGZlOWY2YTIzNDU4ZWUwNCBweTNrCis2OTQzOSA0MzEzYjRkNGJkYzczZDE2YmZlNTk5MjgzZjIxNGI0YjdmMzJkOTY0IHJlbGVhc2UzMC1tYWludAorNjk0NDAgMjI0ZDBlZmNiZjZjOTQ4ZDI3MTJjOWM5NDBmMmViNmEzNDA0YmIyNSBweTNrCis2OTQ0MSBmZDc0YjBjMDY5MjdjOTA0OTIzMjIyMWI3ZTc5NzlhYzY0MGQzZDY3IHJlbGVhc2UzMC1tYWludAorNjk0NDIgYzMzMmY3YjQ1NjQ3MjNjYTAzMWM4YzRlMzRhMGU3ZmNiYjUwNjcwNyBsZWdhY3ktdHJ1bmsKKzY5NDQzIDk5NGZlNGRmNGFmNzBmNTdhMjA4YzE4MTg1MDIzMjc1NDQyODQ1OTggbGVnYWN5LXRydW5rCis2OTQ0NCA2NTUwZGI0OTJmMjg4YTc3MmNhNmIyNTk0NmUzMjE3YWJiZGNmYzIxIHB5M2sKKzY5NDQ3IGU0OTAxM2YxZDgzMTQzYjFhMmIyMTQxYWY0NmVkMTdlYWY1OWU3MzYgbGVnYWN5LXRydW5rCis2OTQ0OCBjMTdmOTI4MWE4NTZiMWRhOTk1MWU0YWI0ODVmYTgyODEyNDk1NDI2IHJlbGVhc2UyNi1tYWludAorNjk0NDkgNGVhMTIyOTczOTE0M2U4NTI2MWRjNzE1MjA3MjFhZDkxMTJkYjE3OCByZWxlYXNlMjYtbWFpbnQKKzY5NDUwIDM2YmM4ZDBlMDFiZjczNTExNDY2NDIzMTU5N2Y4NmM0NjdkNzM4YzYgaW8tYworNjk0NTEgOGNmYTEwOGU3YmRjM2I5YzU0MGFjNDY5MGY5Y2JhMGYyODA4NjQ1ZCBweTNrCis2OTQ1MiBkYTAwNzBjZjQ2NTQ0ZjJkOGZkZWNjNmM3NDA5ZjE2NjA5MmQ0YTQxIHJlbGVhc2UzMC1tYWludAorNjk0NTkgZTQyM2QwN2YwOGFmMGE3YzUzYTFhOTcyYjhhNmU0NDNkMDY0YWZlMCBsZWdhY3ktdHJ1bmsKKzY5NDYwIGRjZmZjNzIzODFlNzM0ZjNkYTdlNGYxMzllYzc5ZTI4OWQ3MjIyYzIgbGVnYWN5LXRydW5rCis2OTQ2MSA3YmJkY2U1YzkyNTA1MjYxNTM2ZjExY2M3OTEwMWJlMmVlMTYzMmRjIGxlZ2FjeS10cnVuaworNjk0NjIgZTQ1NTI1MTk1MzE3ZDM5OTRlYjJiNjYxM2NkODZkY2RhZGRjYjg0YSByZWxlYXNlMjYtbWFpbnQKKzY5NDYzIDQ3MjQ1YWUzMjExYmE2OWVkNGRmZGM5ZTdjMTcwZmMyNzc3ZDVhMmIgcHkzaworNjk0NjQgNjYzY2U3NGQ1MTc1N2Q0NjM1YjE0OGU2NDllYzQ3YTcxZDRhZDcyOCByZWxlYXNlMzAtbWFpbnQKKzY5NDY1IGY5ZjJlZDc5YjAwZmMyYmYxNTgzMDJmNmNjMjQ5NTA4NTA0NTIxMDEgcHkzaworNjk0NjYgMTU0ZTdjNDc0YWFkMDQ3YzliZGM1YWNhZjllNTVkZGZlNzVkNDFjYiBsZWdhY3ktdHJ1bmsKKzY5NDY3IDY3NDViZGFhOWI0OWI1OTM2ZGRkODQzMDEwOGFhMmRkNzAxMjhlZjQgbGVnYWN5LXRydW5rCis2OTQ2OSBhYzYyNDMyZmIzNDFkN2VjZmQwOTdkMmFmZTllYjFkNmRiMDQ4NDhkIHJlbGVhc2UyNi1tYWludAorNjk0NzAgYmRkZTQ0YWY5NzQ0MDZmMzRlNmIxNTBkMmQxMTA4YTY0MTNhNzJkYSBsZWdhY3ktdHJ1bmsKKzY5NDcxIDFhN2RkOWQyZTdlYzNlMTA5ZDE1NDUzZDNhNTRkNjQyNGQ4ZWE4YzcgcHkzaworNjk0NzIgNjJhMWVkNmU2MzZhYzFlNTZhMDUzY2YwMjhjZjA5ZTU1YmY2Mzc4OCByZWxlYXNlMzAtbWFpbnQKKzY5NDczIGZiYmJjMjU5YjVjZTg4ZGEyOTIzMGMwZWVjOTUwMzY5NTk3YzdlODAgbGVnYWN5LXRydW5rCis2OTQ3NCBkN2M0ZDA3MWRhZmFmMTlhYzVjMmIzMWY1YTYzMzQ5YjY5ZDYzNjYzIGxlZ2FjeS10cnVuaworNjk0NzUgMjk4ODA2ZjY0ZGZhMzY0NmQ5MzEwNTZiZTA1ZDI3YTI3NzQ4ODkzYSBweTNrCis2OTQ3NiA0ZTdiYTY3Y2ZhMDUzNzM5ZjdjNmUwMmM5MTZlNjVlMDhhYjM2NzM5IHB5M2sKKzY5NDc3IDg3MjFjMjEzYjZmNDRkMGU0OTczNzBlN2Q0ZjcyZTIyNDI1Y2I0MmIgcHkzaworNjk0NzggODc4MjBmYzY1ZDdjOTg5OTA3ZGQ1ZGJkM2U0M2Y5NmQwZjk3NzYyNyByZWxlYXNlMzAtbWFpbnQKKzY5NDc5IGE5MGM5Mjk4ZGJiNDg4YzljYzBhYTMyZGNkZTg4NGJhMDUzODdiZmIgcmVsZWFzZTI2LW1haW50Cis2OTQ4MCBiZWVmODgxOGE2NmMyMWJlNTgxMjc4YWM2MTNhZjEyMTRmODFlZTJiIGxlZ2FjeS10cnVuaworNjk0ODEgNTg0YzQ3ZDhjOTNmMWE3NTRmYWNkMjc2YjM5YTEwODA3MWQyZTA0YSBsZWdhY3ktdHJ1bmsKKzY5NDgyIDVlN2Q3ZmQxZGE1YTdmYWViNWU0YmVhYzJhYmFlZjE2NGYyNmEwMDggcHkzaworNjk0ODMgYWM5ZWY3NDMxYzhmMTM0YzIwNzJiZDVmZmU3NDVjOTE3OGVkMDIyNSBweTNrCis2OTQ4NCBlNzU5ZGE5M2RmNjQ3ZjI1MmZjNDVjMjExNDI2NTQ5N2RhNjAyZmM5IHB5M2sKKzY5NDg1IGM2MWYyNGZmMDU1ZTQwZDEzMzNjYzkzOGI4YzBhYzdiMDRkZTRkMjAgbGVnYWN5LXRydW5rCis2OTQ4NiAxMzA3YTY2YTM4ZjhkNDg3ZjE2NGMyYWE3N2ZmMjZiOWFkNTkwMjJhIHJlbGVhc2UyNi1tYWludAorNjk0ODcgOGEyOGQ5OWY3ODRkNzdhYzQxZmM3MWUzYjhhMmE0YjllMzU0YzZhMSBweTNrCis2OTQ4OCAzNDIzZjY0N2I1NGE2NWMyY2MxY2RjODc4MDI5NTQzZTZhYWI3ZTYzIHJlbGVhc2UzMC1tYWludAorNjk0ODkgZGFiODA2MzUwMzZlODgyMjgyNzc1NWI3YTJjMWZkNjMyZTMwOGYzNiBsZWdhY3ktdHJ1bmsKKzY5NDkwIDJhZTc3MGVlNjI4NDE3MDE4YzQ3MDhjY2FjOGNjYTY0NjJkMjM2N2QgbGVnYWN5LXRydW5rCis2OTQ5MSAzODY0MjM4NWIxZTBhZjE0MzBhODAxY2VjMTBmNzM1ZWE4M2E0YzlhIHB5M2sKKzY5NDkyIDYzMTZmMzc2YjgxNGJiMWRlM2UxMjJlMGUxZWFkNDFjMTEwM2JjZDYgcmVsZWFzZTMwLW1haW50Cis2OTQ5MyBiZGIxY2E5YWJjZTM2MmQ4OGY4OWJiMTU0Zjg0YmYyOWFiZGU5ZTFkIHJlbGVhc2UyNi1tYWludAorNjk0OTQgMWZlYzBiYjUwOWEyYjVlNDgyYmQ4NzE0MTgyZWI2NWFmODFlODFiYiBsZWdhY3ktdHJ1bmsKKzY5NDk1IDA0MTU0MTdjZmQ0ODNiOTlmZGQ0MGJmMTY5NjQ0YjY1ZjM4M2I2ZDUgbGVnYWN5LXRydW5rCis2OTQ5NiBmMGM3NDAyY2MwMDA2OTNhN2NkMjM0OTYzOTNiZjVmMmVmNGE5OGFlIHJlbGVhc2UyNi1tYWludAorNjk0OTcgMDhlMGYwM2JhODE3MjhjMWU4YzVlM2RhMmUzZDI0NGNjZTYyNGU5NSBweTNrCis2OTQ5OCAyMDYwOWZjMTNhMTM1NzU0YmJjODExNDk3ZDRhM2YzN2RlZmIyNjQ2IGxlZ2FjeS10cnVuaworNjk0OTkgYTAwNzQ1NDgwMTIwZGY5MDc3NzAwMWI0NzVkOGRkNGE2ZDBjMGRkMiBweTNrCis2OTUwMCAwNThkY2E3M2VlMzAyOTUxZmUwZmQyYTE4ODliYWZkODQwNmMyOTUwIGxlZ2FjeS10cnVuaworNjk1MDEgOTRkOWQ1MjU0MDFjMTYzZWZkZTA4OWM2NWVjNGNmNzI4NTgyMzE5MCBweTNrCis2OTUwMiA3ZDZjZGYzMzVhNTcwMjkwYWIwOGMzMjBjMjRmMTg5NTg4NzRiOGMzIHJlbGVhc2UyNi1tYWludAorNjk1MDMgZmZiOWNmOTRjOWYxMzk5ZmI2ODJhMjJjM2VkN2ZmMDkwNjljOGZlMSByZWxlYXNlMzAtbWFpbnQKKzY5NTA0IGYzNThiYTNkMWU1MzYzNzI3ZGNmNWUyNTc2MTIwOGY2MmUxZTM5ODcgcmVsZWFzZTMwLW1haW50Cis2OTUwNSA5NWJiNzczOWUzODZjYmI4OTI1NWIzYzE0YTlmZmMzOTY4MWY4N2YyIGxlZ2FjeS10cnVuaworNjk1MDYgZDNlODhmNzc4Y2RjMTY1YWRlNzdkYWMwNjE5NWQ1YzZiZTg3OGQyYSByZWxlYXNlMjYtbWFpbnQKKzY5NTA3IDZkYmUzZjlhMDQwY2I4ZTRlNGQ2MDM1MDc5YTNkZjVkZTBiYTE5MzEgcHkzaworNjk1MDggOTcyZTg2MTdkZmRhNmQ4NWE4MjcyN2E3NjQxZjAxMzJkMWVjZWMyYSByZWxlYXNlMzAtbWFpbnQKKzY5NTA5IDgzNTE1YmQyODYyNmQ0Mjk1ZmNhMzNmZjI0MDMwZTA4OGRlNDc4MzQgbGVnYWN5LXRydW5rCis2OTUxMCA3MmVlNDJjYzk1MzBmM2Y2ZjZmZGRjYzBjMWU0ZTAzZWVhYWVmMTYxIHJlbGVhc2UyNi1tYWludAorNjk1MTEgNTE5NmVhZmNiZDcyYzYyZWZiMjEzYjRiZmIzZjE2MWNmZjQ4OGVjNyByZWxlYXNlMzAtbWFpbnQKKzY5NTEyIDI4YmY0NTdmYjM0ZDBiOWMyNzI1ZGQzMWZjY2RlODNkMjdkZmM0MDcgcHkzaworNjk1MTMgYWY0NjlkYzE1ZmE3YmJkOTRkYzE1Zjc3Yzg2ZWFjM2E1NTkzN2QxNiBweTNrCis2OTUxNCA3YmIzZDUxNWI2NzdlYWYyZGZkMmJmNjIxNzUwMGNlMmFmMGRlNWQ4IHJlbGVhc2UzMC1tYWludAorNjk1MTUgOWMwYTRmYmI1NmI5MGFkMzc0Mzc0MTA0MGFkMDBjZDg1MTA0MDhmZiBweTNrCis2OTUxNiBkYmRkOTRjZDA3ZmI0NmFjMDUyNTJiNjUxYWJjMTlkYmUzMzIyZjQ0IGxlZ2FjeS10cnVuaworNjk1MTcgN2Q4OTcwNjRhNmVmYjZkNjcyM2Y5ZTk1YjI0NTBiNjNmY2U1MWI1YiBweTNrCis2OTUxOCA0ZDliNTJmY2I1ZGY5ZDk5ZDE0MmQ0NDUxYzk5OWMyOTQwZWY2OTQwIHJlbGVhc2UzMC1tYWludAorNjk1MTkgZWRjZjk5NmYwN2U5OGZmYTE4NjQ2YmM5MTAyZGQzNDNlZTcxM2UyOCBsZWdhY3ktdHJ1bmsKKzY5NTIwIDI5YTllODVmMzBiZjdmODcxODU5Y2Q4NTNkZTdiNjAzNDgxMzk5ZGIgbGVnYWN5LXRydW5rCis2OTUyMSBkNjk3NjliNGZkMjBhNDU4MjI0OTc3MjM1NDRlOWI4OTZlMjcxYmIzIGxlZ2FjeS10cnVuaworNjk1MjIgY2JkNTNmZjQ5NTU3MGI4YTY1YTM4YTU3NTg2ZDBlODMyMjdkNGQ5OCBsZWdhY3ktdHJ1bmsKKzY5NTIzIGIwZGIxMDkwODljOTY4ZWRiNjg3YjQ2YjgzZTQ0NWE5ZGFiOGFhNzQgcHkzaworNjk1MjQgMmFjMDJkYWVmMmVlMzhlOThmMWE4MDk4Mjk4YmY4Mzc0MDQ3ZDM5NSBweTNrCis2OTUyNSA0MzU4NWRiZjYxZDU3YTE4OWU4NzMwY2M0ZDFiNWVkMWNhNmYwYzUzIGxlZ2FjeS10cnVuaworNjk1MjYgY2I4MTkwYTFiZmFiOWM1MzlmOGVmYzkzMjM4ZjI5NjBkMGFhNmMyOCBweTNrCis2OTUyNyAyYmY1ZWQ2NzFkMDJjMTE2MmI2OGQ2ZmRiYzU5Y2E3M2JkMTg0NTlmIHJlbGVhc2UyNi1tYWludAorNjk1MjggZGY2OWJjY2RkMzYzYmYyNzQyMDQxZWI1OTRlMDdhNjU0NmYyN2I5MCBsZWdhY3ktdHJ1bmsKKzY5NTI5IDdkMjljNmU4YmEwNTU4MDc1MTM5ZGY4YThkZjJkYjA1YWNkNWQyOWQgcHkzaworNjk1MzAgMDk5ZTk2MDY3NmI5ZjA2NGQxOWYwNDYxYTg0MTUzYjM5ZjBkMmJjMyBsZWdhY3ktdHJ1bmsKKzY5NTMxIDFhZTM0YTQ4YjczOTIwMDhjNzdkZWVjNDg5ZDgzMzEyZTAxYTk2MDYgcHkzaworNjk1MzIgOTY3N2RkMGIwOWU2YjYyN2Y3YTQ2NzgwMDJmNzk2N2NhM2U1NjBlYyBweTNrCis2OTUzMyA3ZmE4YjdhMmY1MGEyMTVlNDc2MTZmMmRkODVjZDdhNDE2OGMyZDVlIHJlbGVhc2UzMC1tYWludAorNjk1MzQgMjE3NDI1ZWEyNzY5YzI4MTU1YzA4ZjVlZjMwMGMwMmFiNDNmNzdiZiBweTNrCis2OTUzNSA5MmRkYmE1Nzc5Zjk0OTQ4YWIzNDQ0YjE0YjgyMTg1NjE2YzU3YjgwIHJlbGVhc2UzMC1tYWludAorNjk1MzYgODYxMDA4ZGVlZDk3YTNmZDg3OGMxM2ViYjk3MWI3MDVlNDZkZDVkYyBweTNrCis2OTUzNyA1YjUwMTE5NmZjMzgzZmMzMjNhZjQwZmY4MDg2ZWQ5YzU3MmY5YmY2IHJlbGVhc2UzMC1tYWludAorNjk1MzggNjU5ZDg4OTA0ZjVmYjMzZTcwNjNlODFlMTdmOTgzNzcwZmJhNTA1YyBweTNrCis2OTUzOSAwOGNjNTc0YWY0ZjYwOWVjMjI3NDljOWQyY2IyOTYyNzVlMjUyMTkyIHJlbGVhc2UzMC1tYWludAorNjk1NDAgMTg5Njk2YzQ2YzBlN2Y0ZmEyNTEwMWY0NjcxZTQ3Y2QyMzc0MzAxMCBweTNrCis2OTU0MSBjYWI0ZTJlNDg0YTJiZTYwOGFlMmEzNmM3YjlhMWQzYmJlYWE4M2VlIHJlbGVhc2UzMC1tYWludAorNjk1NDIgODNiZDJkMTc0Y2M4ZDAyZTcyNWYwNzE2ZmI1MzQxZjEzZmEyM2YxOCBweTNrCis2OTU0MyAyN2M1ODlmMDlhMjE3NGZmOTJjNmFjNTY1N2NhYzc0MjYzODhlMmE2IHJlbGVhc2UzMC1tYWludAorNjk1NDQgOTcxYmI0N2ZmNzBiNjExMjE5MjMxMGZhNWI4ZWVlM2FmOTQ0M2U3YSBweTNrCis2OTU0NSBhY2RiMzIzNDFkODdhMzE3OTc5ZmM2OTM4Mjk4MDdlNjlhM2M2MDdlIHJlbGVhc2UzMC1tYWludAorNjk1NDYgYTBkOGM2MTZmMzQwNWNiOTQxMmE5MmY5NzdjMjM4MmUxZjY3MzVhYiBsZWdhY3ktdHJ1bmsKKzY5NTQ3IGMwOWI1MDE1MTZiZDBjYzc2MjBhZmMyMGNjZjY0OGU1NzEwN2Q1ZDkgcHkzaworNjk1NDggNWQyODQwNTA4MGVkZmYzOTJjNzU0MjNhNWZiZDYzZTE4NmQ0ODQzNCByZWxlYXNlMzAtbWFpbnQKKzY5NTQ5IDMxNjQ1ZWFkNGMzNWJiNDNiZWUyYzFhZDBiYTk2Y2UzMDcwMTI5NGMgcmVsZWFzZTI2LW1haW50Cis2OTU1MCA5YTkzMmY5MmYzOTQ5OTdhYjM1ZDhiZjkyZmZjOTAwNGQ2ZjU3ZjM0IHJlbGVhc2UzMC1tYWludAorNjk1NTEgNjY0MWQ4MjhkNzYyZDY1MWM1ZjljYTJiYmExNzI4ZmRkY2U1ZDU2ZiBsZWdhY3ktdHJ1bmsKKzY5NTUyIDEzMzI4ZjExYWQyOTU2NjFiODk0OTZmNWFkY2Q1MWJlZTM1NzhkY2EgcmVsZWFzZTI2LW1haW50Cis2OTU1MyAzZWY1YTBjNWU2YjU3ZmQ5NTkzY2M1OGIzYjZhNTBhYzBhYmMwNGZhIHB5M2sKKzY5NTU0IGUzNzUwNzFmOTUwZWM3NTdlYzk5OWRmN2RjOTU1YzFkYzI2OTM0YTUgcmVsZWFzZTMwLW1haW50Cis2OTU1NSBjZTI5ZmFlZDdmNjllMjBkM2JjMWUyYTk4NDE3ZTc2NzA3NWViY2E3IHJlbGVhc2UzMC1tYWludAorNjk1NTYgZTUwMmUyYmYzNWU4NmRiZmEzYjU4OGVmMjg4OGViZWFhMDAzN2U3MCByZWxlYXNlMzAtbWFpbnQKKzY5NTU3IGNkNDJlODVjYWZlN2VkNmM1YzJkYjY1ODI2NzZjMTVhNjhlOWM3YmYgcmVsZWFzZTMwLW1haW50Cis2OTU1OCAwN2Y5ZTAwNDhiMGJkZGYxMjg2YThmMWFjODhjMmI5MzJjZjZjNTBkIHJlbGVhc2UzMC1tYWludAorNjk1NTkgZTJlYTBmODNmMDM5NDJiZDhkMTNmOGQ0YTI5YjM1N2M4NGY1YzRjNSBweTNrCis2OTU2MCA2NDhlMDdkZDA4MjU4ZjYwZjBhNTkzNTU2NmZjMWM0YmRlNDkxNTA2IHB5M2sKKzY5NTYxIDFlN2FjMTRlNDkzODdlYjY0NDIxMWMwNTc3M2YxYjczMDg4YjAzY2EgbGVnYWN5LXRydW5rCis2OTU2MiBlNmE4YTE2NDIzM2E0M2I1OWQ0NTU5NTM3YjFiOWU4MDgxNGY4M2Q4IGxlZ2FjeS10cnVuaworNjk1NjMgOGQzNmFiMDkzZDQ1NmMyNGQxOGVkYTNiY2QwMzJlYzUzZjJlOWEzZSByZWxlYXNlMjYtbWFpbnQKKzY5NTY0IDQ3YTc5ZDdlZWVkYzkwNmRmZjMwYTQwNzA4YmM0ZDljZmYxYTFlZmMgcmVsZWFzZTI2LW1haW50Cis2OTU2NSAzYmQ0YWUyNmIzNjQ5N2VmOGE5YmEwNDNiY2M5MTljYjcxZTM2MzMyIHB5M2sKKzY5NTY2IGJkMmI3NzlmNWYzMTIzNDI3NzZjMDhmMDE5MTA1MDdiODQzNDVlNDEgbGVnYWN5LXRydW5rCis2OTU2NyAyMTAyNzc0ZTdhMmQ5M2EwM2I3ODE1NThkYWJjNDg1MTYwNDcwM2U4IHJlbGVhc2UyNi1tYWludAorNjk1NjggYjhmMTBjNmZhZDUyODU0MTQ4ZjJhZjc1Y2Y0YmVjYzRhMjY1NmM2YyBweTNrCis2OTU2OSA3MmY2ZjE3MDFlZTFhYTRiMDM5ZmNjMTNkMTY3ZDgxOTlmZjgzMTYzIHJlbGVhc2UzMC1tYWludAorNjk1NzAgN2Y0YTExNWFhZTZkOTU0ZGEwYjQ1OGQ3NGNiYjc0NTNlNWJlMzVmMCBsZWdhY3ktdHJ1bmsKKzY5NTcxIGE0MWU4ZmY2NTE4YzIwMzU5ZGJkYTJmNDEyMmQ3OWZmMDk5NTEwMTMgcHkzaworNjk1NzIgNTI4NTFiOWQ5NzU5MDExZGVmODU5OTVlNDY4NDY5YTE0OTAwODE3NyBweTNrCis2OTU3MyAwOTQ2Y2ZkNjg1Nzk5OTk4N2E2YjM4YTc1ZjBmNjU0YTI2YzYzYWNjIGxlZ2FjeS10cnVuaworNjk1NzQgNjhiOGFmNDk0YmUyODBmZTBjYjQ1NzYwZWQ3ODhkMDYyNjhjYTVjYSBweTNrCis2OTU3NSBjYTFkOTlkOWQ2OTFlZGRiMzRmNmRlZTU3MWVhOTA2NTZhZWNkNzk0IHB5M2sKKzY5NTc2IGMwMTRhM2IxYWQzMTU1YjEyZTNhMWRkZjZlYjVhYjc1MTcxOWJjZGMgbGVnYWN5LXRydW5rCis2OTU3NyBhODNmMTBlZGI2ZmYxNTkyOGFmZjYzZmM5M2NkN2E1MmQ1YzQ5ZGM0IHB5M2sKKzY5NTc4IGJmNDE5Y2ZkN2IwYWI5NGIwODk4ZjFkODk3YjNlYjkxYjM2NDJmNzAgbGVnYWN5LXRydW5rCis2OTU3OSA1MTJjNWE1ZGUwMGI4MGIyODk2MDAwNDEyNjQ2MjNkZWI1Yzg5NGJmIGxlZ2FjeS10cnVuaworNjk1ODAgNjlmZGY4ODhmMTEzYTc2Y2NiMzRkNjcyYjU5ZmRlNTUzMWY5ZGI2MyBsZWdhY3ktdHJ1bmsKKzY5NTgxIGVjMzBiMWZjYzFiM2RmZjg3YmM3MzM3Y2Q1N2Y5NGVkODM4OWI2ZjEgcHkzaworNjk1ODIgNWE3MmVlZDFlYjFhNzk1Zjk5ZDM5ZmU5NmQzOTlkNDFhNmNjMTUzNCBsZWdhY3ktdHJ1bmsKKzY5NTgzIDA4ZGY0ZjU1ODNmZjUyYzI4NGE3YmNkYTFkMTg2MmExM2IxZmFiYjkgbGVnYWN5LXRydW5rCis2OTU4NCBmZjA5NmQ2YTkyMjJiY2I5MjNkMGJkZGQwYmM0ZjE5YWFmYjIxM2NlIHB5M2sKKzY5NTg1IGM2ZmY0N2IzZWI5OWZiZDJiMjQyYjA2Y2JlYjY3NGJjYjM2Y2M5ODIgbGVnYWN5LXRydW5rCis2OTU4NiBhOTNiMTlhMmY4ZDkzNDkxOGE5ZDY1ODBmY2Y3NDBhNjNiYWJkNDZkIHJlbGVhc2UyNi1tYWludAorNjk1ODcgNDI4MzhiNGQ2YWExYjc2NDJhNTAzMjRjOTVlNTI5ODNjMDdhMDVhOCBweTNrCis2OTU4OCBhZTE2ZTJiODZmZWI1MjIzY2E3MDhhZDNmY2E1NzI1MThmZmRmOTIwIHJlbGVhc2UzMC1tYWludAorNjk1ODkgMDJjM2ViMWNhMGQ1ZjBkNGVjZjA3MmQxN2IyZjM1N2Y0YzJiYTk3MSBsZWdhY3ktdHJ1bmsKKzY5NTkxIDA1OTBjMGI3NmU2NDYxZTViY2E2NjM2OGMyYmY3M2FmNzFhNzdiY2MgbGVnYWN5LXRydW5rCis2OTU5MiA4N2FiNmJjMjEzNDViYWQwODU2NjBhOGQwY2NhMThjNGJlMjk0NTQ2IHB5M2sKKzY5NTkzIGRmY2Y2OTBhNjdjOGU5MDk5NTc1YjU5OTc2MDlhNzc4YjA2ZjJiODUgbGVnYWN5LXRydW5rCis2OTU5NCBkMzY2M2YwOWQ3NjQ1YTNjMzYwZWRhZGY3MDgxNzcxMjYzYTc3ZmExIGxlZ2FjeS10cnVuaworNjk1OTUgNTEyMDcwZGE3NDMzZGQzNzhiZTIyZmRjYmY4Y2ZjZDJlOTg5ZWY0OSByZWxlYXNlMjYtbWFpbnQKKzY5NTk2IDYxMzVmZjcyNDNkZDc5NmUyM2NjMzU1YTViY2E4ODEyNTFiMTQzMTcgcHkzaworNjk1OTcgOGNiOGVjY2Q2NjMzOWM5NjNlYTY0NmNlNmVmMWU4MTY1ODEwNGFmZCByZWxlYXNlMzAtbWFpbnQKKzY5NTk4IDhkYzI4YTEyNmIyYzgwMWVlYTAwY2YzOGM3YzAxZjgzNmZlN2JlMmUgbGVnYWN5LXRydW5rCis2OTU5OSA5Yzc1ODA2YmVjNjRhZjkxZTZlOGFiOTYyZDM3NmJlZDRkNzk2ZGZjIHJlbGVhc2UyNi1tYWludAorNjk2MDAgNDBlZDU3ODNlMjRhMmRhNWY1NGEwNTQ4MWYyZDY4MTAwMjQwZjJhMiBweTNrCis2OTYwMSA2MTYxMzhlZWYyMjRiY2QwNmM4MzM0OGEyOWI1YjY4MGNlYWEyMmEyIHJlbGVhc2UzMC1tYWludAorNjk2MDIgZTVjYTBiZGIzOTBmZDc4MTUzMmYyMTdlNGMyMDdiYzUxYWQ0M2E1MiBsZWdhY3ktdHJ1bmsKKzY5NjAzIGU5MWIwNGRiNmQxOTY4MGIyZWJlNjg1ZTQxMGE2ZmU0YmQyYzI5MjEgcHkzaworNjk2MDQgYzU2MDdjZjc2ODAxMjc1ZDU0YjA0Njg0M2QwNGM3ZTQ2Y2M5ZjQ2ZSBsZWdhY3ktdHJ1bmsKKzY5NjA2IDljYzc2NzU4ZWUwOWMwNzUxMzNjYjRjYjQ5ODY0YmIyNjM1Mzg0MDAgcmVsZWFzZTMwLW1haW50Cis2OTYwNyAyYTI2M2Q2NmQ2NTk3ODAwMTVmMWUzNTNiZDE2MDEzN2Q5NzcyZWU4IHB5M2sKKzY5NjA4IGY0M2Y4NjdkNWViNjBhNGQzMjNlM2MyZWFjZDBmZjA3YWMyYjZmNGIgcmVsZWFzZTMwLW1haW50Cis2OTYwOSBlNTUyMjg3NWI5OGMyNmE2MjVmNzU1MzkwYzZmNzIzZDYzZjMwMDFmIGxlZ2FjeS10cnVuaworNjk2MTAgOTQ5OGU3ZDViMjY1OTlmZTZhZjZlMmVkNzA3MWU0OTI5MGFlMmIwNCBsZWdhY3ktdHJ1bmsKKzY5NjExIDZhN2EwZTFlMjdiYzA0NDhkZTM4OWExOGUxYTc3MzExMDhkZGEyZWIgcmVsZWFzZTI2LW1haW50Cis2OTYxMiA3MWE2OGRjY2EwNDRlMzJlZmVkZTBjMmEwYTE4Y2ZkZmVmNWQ0YWYwIHJlbGVhc2UyNi1tYWludAorNjk2MTMgZTEzZWQ0ODQ0MjJlODE1NWZiMjY1YjljYzhmYjBmOWQ3Y2YwZjc2ZiBweTNrCis2OTYxNCBiYjk5ZWRhMzhjMWI4MmVlYmM3YTJjYzI0NmE5ZjkwMGQyNTkyZmJmIHB5M2sKKzY5NjE1IDNjZWE0MDUxZGNkYjZjMGU2Y2I0ZTNlZTdiZGYxYTdjOGE4OGY1MTEgcmVsZWFzZTMwLW1haW50Cis2OTYxNyBkNDA4MzhjNWE0MjA2ZmU5YjNkNTc4YjhiZGJjNDZhMWI1MzU2NDdlIGxlZ2FjeS10cnVuaworNjk2MTggOTY5Mzc4ZWE0Yzc3NzFjN2Y1MTEzMWRjYTI4ZmZiMDUxM2IzODE4MSBweTNrCis2OTYxOSA5ZDdhMTMxZGNiNzg5NWEwMmYwYzM3Njk3NDU5ZmRhYmM3YzQzYTI5IGxlZ2FjeS10cnVuaworNjk2MjAgNTU2OTkwYmI0ZjBhY2FjN2RjOTllZmM5ODc5NGZlYWMwMzNlZjI1MyBsZWdhY3ktdHJ1bmsKKzY5NjIxIDE1ZDhiMmRiMmJlNDU3YTQ2NmQ3MTlkNjE1YTdhYTI2NzI4ZjBlNDYgcmVsZWFzZTI2LW1haW50Cis2OTYyNSBmNjdiNDhhMTUxM2ViYmFhZjZiN2M2YTE1NjY2MDlkZDA0OTc0YWQ2IGlvLWMKKzY5NjI2IDhhZTViMGM1YzI0ZDJhZTdlMmFhNWI4MzUzYzA4NTU3YzY0NmU0MWUgaW8tYworNjk2MjcgYzE3Y2Q5YmVjM2Q4NTBlNDA3OTM5YzMyODZkMDJhNDllODYyMjcxOSBpby1jCis2OTYyOCBhZGU0NTUxMWI1NjViMWViYzk1MzYzZjNjOTYwOWQ0NmVjOTZhMDA0IGlvLWMKKzY5NjI5IDc3MzA2YWQ5MzBhMzM0ZWJjM2U3ZWU0ZTc4NGM3N2MxNDYzOTlhNWQgaW8tYworNjk2MzAgNWZkM2FkNTQ5OTE3Y2I0MzkyNmQ5N2ExYTc2MzE3MjUzMjg0YjEyMyBweTNrCis2OTYzMSBlZjJjYmE4MGM5NzViYjVkOTkxMWM5YjliYmQ1ODE5ODZkNjE0MTdjIHB5M2sKKzY5NjMzIDNmN2UwNzNkYWQ3YjVmNDdkMTNhNWNlMDFlYjBhODZjYmI3NGE2ZDQgbGVnYWN5LXRydW5rCis2OTYzNCBiNTVhM2I1ZDcwMDg4Mjk5ZGEwOWM5Y2NlZjQyZGYxYmFmNzk4ZDFlIGxlZ2FjeS10cnVuaworNjk2MzUgYjhjNDY2NGE2NTM5MTZlMjE2NDk3YmNjYTZhZDQ5MGE0MWU3ZjEzMSBweTNrCis2OTYzNiA1ZjIyNTdiNzdhYjA5OTFkZDgwN2IyOWE2N2ZlYjk3NGJhYTQ0ZjBlIGlvLWMKKzY5NjM3IDc5YzIzMTFmMzNjYzFlMmZhMWRlZDQ5ZWNjMjA4ZTk3YTNkNTcyM2QgcHkzaworNjk2MzggM2Y0NzU3NDVhM2MzMDU4OTg5ZWRiZjZhNWNhMjUyNjliYzE4ZmFiNCBpby1jCis2OTYzOSBhZjdkNzgwZjdhMGJlNGJhMDRiYzdmNTUzODRhZDY1NjU5MGE2MmE0IGxlZ2FjeS10cnVuaworNjk2NDAgNjVlMDc1NWU5YmJjOWQ3ZmQ0MDAwOTQwZmNhNGYwZWViMWE2ZmIwOSBweTNrCis2OTY0MSBhYWRlZjIxODhjZWI2ZmI2YmEwNGViOTU3NGFkNzdmZDA4OGY3MmQzIGlvLWMKKzY5NjQyIDJjNGEzMzFjZDMyYThkNzdiM2Q2YTJjNjQyZjE0YzE0ZGIzMGQwNDkgaW8tYworNjk2NDMgOTQ4Nzk0YWM1YTUyYmUyNzBmY2FkNDhhZDRiYmViMDY4ZDI0MmIyZCBweTNrCis2OTY0NCA4YzZkNjg4ZTRmMTYxMDliYzVjYmE2OTk3YzUwOTk5MDAxNTI2MTM2IGlvLWMKKzY5NjQ1IDk1ZDc3NWQ5YWI0N2M3N2VkZGI4YjEwOTEzOWI3NTZlNDExYWIxNzcgaW8tYworNjk2NDYgNGZlMjg4NWQwNjU0OTNiNTFjNTBlYjVlZTA1YjAzZGQxNzYxN2NkNSBpby1jCis2OTY0NyA0MGM5NTQxZTYxZmM4OTY1ZmYxOTAyZmNiY2ZjMTc4ODhkYjNkNjJkIGlvLWMKKzY5NjQ4IDk4ZGQyMDU3ZTA4OGJiNGYyMjBlYjRjZGRlMzU4Y2QwMmExMGNjOWQgaW8tYworNjk2NDkgOTFhM2NjZTY4ZTliNDYxMGVlYzA5YjU3ZmNkYTBiZDYyYjRmZDZlMiBpby1jCis2OTY1MCBkOWMxZDliMTMzNzQ4MzBkYTliMTc5MTgxYjYwZGRhZTAzYjgxMzAzIGlvLWMKKzY5NjUxIGRiM2NhZTEyOGQ5MWVhZTVlNGYxOGMxY2ViMWEzZmI1YTU2YWVlM2UgaW8tYworNjk2NTIgMTkyMDE0ODc3OWQ0NDZiYjhlOTZhYzQ4OTYyNzNmZWFiODNjMjZlMCBpby1jCis2OTY1MyA5ZjUzOWQ4Y2Q5MDQyYTNjMzk5OTZhY2E1M2EwYjczNmRhOTllZjA0IGlvLWMKKzY5NjU0IDI4Y2ExZGY1NDVlMjM2NjczZTVmYTU2MzdlNmEzNzVmY2NlMWVhM2IgaW8tYworNjk2NTYgMjQwNmM3ZGQ5ODg0MTA4NjU4MmQ5NGIxOTY1YzZjMGIxZTAwNTFiNCBpby1jCis2OTY1NyBhMjZkYjMxNDRhZTcxMzA0NTIzODE4NDQzM2E2ZWRkNWJmMzljNDhkIGlvLWMKKzY5NjU4IDRiMTIxYmJjYzkyYWZhMDE4ZWQwODRkZTdhYjE0ZDIxYjlhZTExZGMgaW8tYworNjk2NTkgZjNhZjQ5OTJiODBiODNkOWEwZDk0ZjFkYzYzZTQ0YjVkZTE3MjBjNSBpby1jCis2OTY2MCA2ZGEzMGUzYWJjMGRkMDBkOWNlYWQ5MjM2YzE1ZWVmYTllZjNiOWVmIGlvLWMKKzY5NjYxIDJjNzE5MDJiMzc3NDdkNjk3NTgzMGQ5M2RlY2JjY2MzNmZmMzc4YzAgaW8tYworNjk2NjIgZjRjNDljZjYwMWEyY2RjNmUxNDNjZDUwZTcwZjM0MTljZDhhMmIzZiBweTNrCis2OTY2NCBhNDUwYzg2ZmMyYmMwNDY4NTViODYyYTg5ZDQ2NTFjZTM2ZjY5MDI3IHB5M2sKKzY5NjY1IGM1NzI1NGE5YzFhMzIzMDIzNTFjNTQxNGQ5MGU5ZGNjMDk3YjU2YWYgcmVsZWFzZTMwLW1haW50Cis2OTY2NiAwNzZjNDc5MTMxMzQ5ZDQ3NWFkN2Y5NTRmZTA1MWNiNWNhZDNjMTc4IGxlZ2FjeS10cnVuaworNjk2NjcgOTg1NzVmOWE0ZWQzODU4MjA2Zjg2MWE3YWQ1YzA0OTQwMjk2MDQ5YiBweTNrCis2OTY2OCBhNWM2MjE1YTQ1YWYwOWUxNzg4MjZmMTljYTFiYTVmMzQ3MzAyZTVmIHJlbGVhc2UyNi1tYWludAorNjk2NjkgMGU1NWFjZDFhNDI2NjlkMmRhYTIwZmNiNmNiNzRiODMwZGY5MDkwOCByZWxlYXNlMzAtbWFpbnQKKzY5NjcxIGU4NzNmODA4NDY0YTMzNjM3NjljNzEzYTVmNjAwZmQ5MGE2ODY5OTIgaW8tYworNjk2NzIgNmExMThjYzRmM2I3OGUxOTkzMDU4YTY2MWIxNjI0ZjUwNjQyMjBiNiBsZWdhY3ktdHJ1bmsKKzY5Njc0IDUxZGIxODA4NGVjYmFhZDUwODQ3YTY5YjZiN2JlZjhjM2E1NTk2OTkgcHkzaworNjk2NzUgYjM5ZDU0MDU4YTJiYmY3OTUxN2I5ODY0MGM0Y2ZhZjNmYWY0NDY1MiBweTNrCis2OTY3NiA2MjdkYjU5MDMxYmViMDEyNjJlNzEyNWI5NjZlZmQ3OWZhODIyOGE2IHB5M2sKKzY5Njc3IDRkNjFmYmJiNDVkNzQxNzRhZTZiNGUxY2RkYTIwMGJmZjlmMDA4ZDkgaW8tYworNjk2ODIgZGY3YzZiZDFiNjA5MmI4NTY2YjFlYzFkMTEwMDNiMWZlZjg5M2IyNCBweTNrCis2OTY4MyA1ZGNhYTJlMWJjODY5YTZkNjc4YjZlODIzY2VjODZiNzM1OWU0ZDllIHJlbGVhc2UzMC1tYWludAorNjk2ODUgMGViYmNmNTk4OGRiYzE4M2ViZWE3YzBjZDMyM2RiMzc0NjFhM2ViOSBsZWdhY3ktdHJ1bmsKKzY5Njg2IDAwM2UwMDc5N2U5MTAwYjE1MGRhYTYwODRkNGJkMjYzNDRjMGM5NGYgcHkzaworNjk2ODcgODZiNjBkMDUwNjJiYThkYmUzMDQxZGQwNzcxOWZlZTY4ZTMxYWJkMiBweTNrCis2OTY4OCAyN2Q0M2Q2NmJkMDljZWVjMWVjYmIzMWM1NjY0OGViZWE0ZWExNmVmIGxlZ2FjeS10cnVuaworNjk2ODkgMTU0OTQ4ZTJmZDFjNTdmMTk0MjY3NWY0YTJiYjllYWMyZjk0ZWViZSBsZWdhY3ktdHJ1bmsKKzY5NjkwIDA5MjM1ODg5YzU0ZDE0ZTZhNjY4YzY5YTdlNjU1ZmIxMTQ0Y2Y5NDMgbGVnYWN5LXRydW5rCis2OTY5MSBmMzA4OTUzYzcwMWZjNGY2MTg5OWNmZWU5ODUyN2RhZGNkMGUxODZhIHB5M2sKKzY5NjkyIDk4MmY5ZTI5MjVhNDVjNTQwNjQ4ZGQxYjg5YjVlYjkyNDY4OTk0ZGIgbGVnYWN5LXRydW5rCis2OTY5MyBhYjRkYTJlZGIyODhkZWE1ODBkYmU3OTljMTNhMjhhZDlmZDZiOWNlIGxlZ2FjeS10cnVuaworNjk2OTQgZTc4YmE4ODAwZTJjZTAxZWFjNDA4NGU5YWVkNDY1NDVmMWEyOWZjOCByZWxlYXNlMjYtbWFpbnQKKzY5Njk1IDUyMjdmOGM0MTgzZWY1MWViNGZjNGQ1NGQxYTAxNjFmNGExMjk4ZDAgcmVsZWFzZTI2LW1haW50Cis2OTY5NiA1NGNmNjhmYzczMTI3ZWUxMzdmMDFiZGYyMTliY2M0MDMzZjI1YWI5IHB5M2sKKzY5Njk3IDI5YjE0OWJjMzEzMDE2MjllODY5MTZhYTk2NzAyNzk1Y2YyZjFhYjIgcHkzaworNjk2OTggMjczMjY4NTIyZTVlZTkyODcwODE1OWI2MTEwMzQwNTA4YzllZTFkMiByZWxlYXNlMzAtbWFpbnQKKzY5Njk5IDBjODc0Nzk5YTE5MGQ1MDRkMWQwMzNmYzY4OTYyYmQ0NzE2YmZjZTMgcmVsZWFzZTMwLW1haW50Cis2OTcwMCA3MTAxNzcyZWFlODA1ZmVmOTExMjA5Y2I3ZTI5MDAwNDVjNzRhNGE0IGxlZ2FjeS10cnVuaworNjk3MDEgZjUwNWViYTcyNmM4NjUzYzdmNzU0NzZkYzc3NmFiNWMxOWFmOTdmYSByZWxlYXNlMjYtbWFpbnQKKzY5NzAyIGRiYTJmYWYwOTkwNjQ5NTVkZDdlNWE4ZWFjM2Y5NjE3YzZlN2I5MzggcHkzaworNjk3MDMgMDFkM2I2ODYzMzg3ZGJiNTk2ZWFmMGZhZTRmYTU0N2Y4NTcxY2I5YiBsZWdhY3ktdHJ1bmsKKzY5NzA0IDA3ZmFkMzAxMDI1ZjAxOWVlMzI2MTc0NWRmY2JkNTY5MDg3Y2VlZjMgbGVnYWN5LXRydW5rCis2OTcwNiBkZDIyMTBiMmRjMjJjYmVkNGEwMzJmMGVlYjRjZTVmMjgyYjZiNmUxIHB5M2sKKzY5NzA3IDE0N2ZjZWJhY2I1YmIwZDE4OTBiNjE5ZmRhMWVmN2UzYTdlMWMzMDkgcHkzaworNjk3MDggMTllNzY4NWQ5Yjk0NmYyNTg0N2IwOGE4Y2E5MTQ3YWE2YjI4YzBjOSBweTNrCis2OTcwOSA0NGZkMmNjOWU5Y2M3NDY3OWIyYzY1YjMxNDI2NDMyODRmZjY2NTU0IGxlZ2FjeS10cnVuaworNjk3MTAgMjcyNjhlZjA0NzA4ZDhlM2MzMGE0ZDY2ZmM3MWE2MWU1YmYwMjRlNSBsZWdhY3ktdHJ1bmsKKzY5NzExIGQ3NzI2NzgyNTM2ZDk1MDE2YTZhNzViNmUxNWI4MDA0YzBjM2Y4ZjggcmVsZWFzZTI2LW1haW50Cis2OTcxMiAyNTdjOThmYTU1ZDc2Y2VhOWJhYWIzMTQ4YjE5NTZkYmMyNGQyZjg4IHB5M2sKKzY5NzEzIGU1NDhkZjM2MTg4ZWY3MzUyODQ4YzFkY2NhZjhhZjI2NDNiODZmYzcgcmVsZWFzZTMwLW1haW50Cis2OTcxNCAwYzZjMDU3MmMyNDczYzBkMjY3Y2ZiM2Q0OWJmNTZkYzA1YTg1M2JmIGxlZ2FjeS10cnVuaworNjk3MTUgZDk4MmI5NWJlM2UyMTgwZDU1NWZhOGY5YmZiYmY2YTE2YWY5MDhiZiBsZWdhY3ktdHJ1bmsKKzY5NzE2IDc5OGExNmFiZjU0NjA4ODYxMGZlNTBiOWQ0ZDMwYTIxZTkwM2FkZGMgbGVnYWN5LXRydW5rCis2OTcxNyBkNjc0MGE5NmE3MGFkYWMxNmE3NjNlMDdhNjc1NmI0ZTg5YjZlZGE4IGxlZ2FjeS10cnVuaworNjk3MTggOWFkNjYyYTQzZWIzNTBlNDdhN2NhNmVmYTY3NWFiNzkwMDdkZTkzNyBsZWdhY3ktdHJ1bmsKKzY5NzIxIDg1NDA3ZDA0Nzc4MjA5ODI2MzA1YWRmNTI2NmU5ZDg2MmQ5ZGJmM2IgcmVsZWFzZTI2LW1haW50Cis2OTcyMiAwOWU2MzIxNGYwYmY4NjUwNmY5Y2JmNTI3Y2I2MzY0ODYwMDhhNDFhIHB5M2sKKzY5NzIzIGZiODYwNmUwODZlYTg0NDVmNjlmZDY2MjA3ZDgzZGU4YmE5NjgwYjEgcHkzaworNjk3MjQgOTJlNDJiMWIwYTZlZWMwZjExNzc2ODliM2MwMTZhZTA4YmQwM2QwYSBsZWdhY3ktdHJ1bmsKKzY5NzI1IGQ3ODYwYmIwYjE1YTBiZmQxMzUyYWI2NmM5ZWEzZDhlYzIwOWViZmQgcmVsZWFzZTI2LW1haW50Cis2OTcyNiA2MDVmZmMwNTJiNDE5NWUzMzQwMTljNjBmYTVkNTg1YWUyMzA0MjkxIHB5M2sKKzY5NzI3IDIwNWEyYjRjMWZhNTQ2NTU4NDQxYTE4MzgzNzAwOGRlNzc0YTJiY2QgcmVsZWFzZTMwLW1haW50Cis2OTcyOCAxZmY0YjQxYTU3YzEyNmQwZjk0NjZjMDA0NDNhYzQ4ZTJjOWI2NWViIGxlZ2FjeS10cnVuaworNjk3MjkgZTdlNTQ0Y2QyYzJiOTQ2MmE5MjRkMWFhMjFkOGU3ZDQ4ZGNmMzdiYiBsZWdhY3ktdHJ1bmsKKzY5NzMwIDZlYTdkMzcxNGJkZjc4ZjI4NDU0MzlkNWZkNWRhZTUyOTc0MzI4ZTMgbGVnYWN5LXRydW5rCis2OTczMSA1NTE5YjlkY2M5YjZiNjQ0N2FmMDIwM2RhZjAyM2Y0OTZkMDBjODNhIGxlZ2FjeS10cnVuaworNjk3MzQgMzlmMDljOWVkNWE1YjNlZDZjM2YxMTk1NTNmODk4YjI3M2FjYjZkZiByZWxlYXNlMjYtbWFpbnQKKzY5NzM2IDI4NzhiZjgxNWRhMWU4YmFjOGJjZDc0NzRlNTM4NDVjNTU2OTc2M2QgcHkzaworNjk3MzcgY2IwYWRlMzM1NTUxNTYwYzE1Njg5ZTI4MDI4Yzg4MTFjZDE1MDM5ZSByZWxlYXNlMzAtbWFpbnQKKzY5NzM5IDcyZDEzZWNmNGZjYTc1ZmIyNTZhYjcyM2QyM2QyNjQ3MGY5MzM5NTggbGVnYWN5LXRydW5rCis2OTc0MCA3NmQ3N2FlOTdiMzhmZjYwNzNlZWNlZWFhZGRhM2VjOWFiNjNlYmI0IHB5M2sKKzY5NzQxIDc1NTlhMDNjYmQzMGFiNzUxYjc0ZmRjN2VkNDk4OGZmNzUxMTk2ZTkgcmVsZWFzZTI2LW1haW50Cis2OTc0MyA5YmZmMTMwZDc5MmRlYTQ3MWYyZWE5Y2YxZTYwYWQ3MjllYzFlMzk1IGxlZ2FjeS10cnVuaworNjk3NDQgZWU3MDExODYzOTQzMjY3ZGZjNTBlZDU1NWFmNmJmMmVmMGI0YTljNCByZWxlYXNlMjYtbWFpbnQKKzY5NzQ1IDhhMjkyNTQzZTg3MTk5NzQxMDZiNDFiNzkwNzI0NWE2ZmZhYTc1NjAgcHkzaworNjk3NDYgYjJmZjIxYmJiOWM1NDA0NDc2NmIzZjhjMzg0Zjg0ZjJmMGQ5MThjNyByZWxlYXNlMjYtbWFpbnQKKzY5NzQ3IDdjN2I4MDVkMGQwYThkYWY3ZmY0ZjY1OGRlMGM3YTIxNWY5ZmRhYmIgcHkzaworNjk3NDggNzQ4ZGZlOWJiODU3ZmMxZWZhNzAyMTVhMDg1OTQzMjg3ZTJiNjVjMCBsZWdhY3ktdHJ1bmsKKzY5NzQ5IDg1ZmU4ODc2MTRjZTQ0MjBlOTAxY2YxMTZmNjg5ZDgxNjMxNmNjMzIgcHkzaworNjk3NTAgZTI2MGQ2ZGFmNzg0OGQ4NDAwZDdkMzk1ZWQ2ZjA1MTkxNTBmMTdlNCBweTNrCis2OTc1MSBkMjVmYzAyMDkyOTU1MDM2YTcwMzZmYjE1N2M5ZWM4YzYxOTZlNTk2IGxlZ2FjeS10cnVuaworNjk3NTIgM2RiZGJjNWU2ZDg1YWQ1ZWExM2E1MTA0ZWU1YWEyYWNhMDQ0N2JiMyBweTNrCis2OTc1MyAwM2YwN2Q4ZjA2ZTQ2YzAzYWJmMmRiOThjZDg3NThlYjM1Y2ZkMDZlIHB5M2sKKzY5NzU0IDMzZDVkN2RhYThjNzQ2OWYxM2NjOTJlZTBmZGM1ZDI3Yzg2ODk0YTYgcHkzaworNjk3NTUgNDk3ZWFiNzliMWJlOGU5MTcyNWEzZTMxY2Q0N2E1OTAxODRmNGI5YyBweTNrCis2OTc1NiBhOTc3NGI2MWU1MmQzZDhkNmFjNTM5MjE4NTVlNzE3ZDFhOTQwNWJkIHJlbGVhc2UzMC1tYWludAorNjk3NTcgMzAyMjYzZTNjOGYxZDJjNTVjN2QxYTIxZTRjNjhhZmU0OWQ1NzMxMiBsZWdhY3ktdHJ1bmsKKzY5NzU4IGQ0N2MyNThhMWUxY2VmYmViNWQ1YzM5OWZkOTY4NjdiZDJhN2U0Y2UgcmVsZWFzZTI2LW1haW50Cis2OTc1OSBhYjQwYzc2MTM5YWI0ZDc3YzkyMGVmOTllNTE2YjBlN2JlNjdlMGQwIHB5M2sKKzY5NzYwIDJmNTI1NzQ5NGEyZTBmZWIyNmEyMjQyYTViNTcxZTMzYWY4YTlkYzEgcmVsZWFzZTMwLW1haW50Cis2OTc2MSA1NTllNGZjMzFjOGE3M2I1ZjY0ZjMyZDA4M2Y1Y2RmOWE5YTM1ZTUwIGxlZ2FjeS10cnVuaworNjk3NjIgZWE0N2NlZjY3ODM3YjBlZWQ1YzU5YjQ3OWIzZDk2YTljNjAxYzlmYiByZWxlYXNlMjYtbWFpbnQKKzY5NzYzIDkwMDFkOWM4ZjcxZTA1MTdhM2VlM2MzMjExMjM0ZWQ4ZmQ5N2EzOTMgcHkzaworNjk3NjQgZDY3M2RhOTE1OTE0ZDdjNTkxMzQ0YzkzMzhhZDliYmRkNDcyYTIyZiByZWxlYXNlMzAtbWFpbnQKKzY5NzY1IDk4MDBhYjIzNmMwOWQ0NTVjZDYyYWNiNzFhMDM4MjA0ZTNhZGQ3ZTUgbGVnYWN5LXRydW5rCis2OTc2NiBmMGVhYzQ1MmE2Y2FmZDE4ZmEwODkxMmIyN2M4MWYyZDU4NjUzOWI0IHJlbGVhc2UyNi1tYWludAorNjk3NjcgYmQ0NjcxNzkyZDUwMTZlNWU4MTQ3NjhhZmI1NzM1NmE2ZGY3MDQzNiByZWxlYXNlMzAtbWFpbnQKKzY5NzY4IDQzNDJjMGEyZjJkYzljYWQ0NDhiMTZkNWQ5Mjg1ZmFiMGUxNzMyMjIgcHkzaworNjk3NjkgODQ2OGI1MmY1ZWUyYzM3N2NkYmUyNzMxNWIxZjA5NTExYjZhYTc1NiBsZWdhY3ktdHJ1bmsKKzY5NzcwIDAwZjdiZTAyYWUxZjFjMmQwMDkzYmQzY2YzM2NiYjBlNDliNTQzZjUgbGVnYWN5LXRydW5rCis2OTc3MSA3OGUzMTFmMjc3YTcwMjdlMWRiNTAyZjkyMTY2ZjRmNWQ0YWUyMTIyIHB5M2sKKzY5NzcyIDhjMTNmNDMwZTE2MDZhMDg1NGU2YzNlZjRhMWM1ZDAzMGJkY2FiNTQgbGVnYWN5LXRydW5rCis2OTc3MyA4MzNkZGZlYzBiYzQ1NmJlMDQ4OGE1ZTlmYzFjNjgwNTU4NmEwZjk1IHB5M2sKKzY5Nzc2IGMwMmMyYTkwOGNiMDk4ZjFmOGZkZDNmYzgwMzNmNWI4MGE3MjFmYmUgbGVnYWN5LXRydW5rCis2OTc3NyA0Mzg1OTI4OTBlMmI3ZWY1OTI5YTAxZWVhMDkwZDkxZWMzZWNjNDZkIGxlZ2FjeS10cnVuaworNjk3OTMgMjc5MzM3NTNhMzg3ZjkxYTgyYzk0ZWNmZmIzNDg1YTkxMjllNDhmYyBweTNrCis2OTc5NCA2N2VlZDgxYmE3NGZhNmEzMGE4MDZlNDQ1NmQ3Zjc1YjJjMGZlZjZlIHB5M2sKKzY5Nzk1IDk4MTVkYTQzYTFjZWZhNDZkMGExZDgxMTcwOTdiYjgzOTg5NjZmYWYgbGVnYWN5LXRydW5rCis2OTc5NiBjMWJmMDM3ZmVlZmUwNmIxZWNlOTAwOTgxMWM1YzQwNWM5YTJjMzFlIHJlbGVhc2UzMC1tYWludAorNjk3OTcgNjI0YjU1ZDBkNmI3MmRiMTEzZjQwNTA2Yzc2MjdkMjM1ZGQwNjdhMiBweTNrCis2OTc5OCAyZjNhZmFjZjlmMGI3MmNjZDYwODdiODI4OThiMWY1ZTdhNDI4OTJhIHB5M2sKKzY5Nzk5IDE0MDhmZWVjMDA4NDlhZWUwNTg2ZjlhZmQyYjEwZGQyOTE2NjQxNjQgcmVsZWFzZTMwLW1haW50Cis2OTgwMCBkYjhkYjMxZmRiNGM0N2MwMWZlMGY0ZGQ3NWI2YTA5NGFkZmYzOGM1IHB5M2sKKzY5ODAxIDBiOThlMzc5MWI5ZWM4NzIwY2E3ODJiZDVhY2M0NTUwNTBjNTIxNmQgcmVsZWFzZTMwLW1haW50Cis2OTgwMyA1YTE3ODg4YzUxNTEzZTk1ZGE4MTE2YTA3ZTJjZmJkNzFkNzBiN2QxIGxlZ2FjeS10cnVuaworNjk4MDQgZWYxOWNhMDEzZTE2ZWUxNTFkODM5YTkyZjRiODMxZjEyOWY0NTc3NCBsZWdhY3ktdHJ1bmsKKzY5ODA1IDA4MjQwOTMxNGIwMDdhODhiM2UwN2E2ZGQxNzY0OTJiOGVjM2Y0NzQgbGVnYWN5LXRydW5rCis2OTgwNiA2NWEzZjU1NWZhYjczZGE0ZTc0ZWI0NWJmNjEyYjBhN2M2NDViZTI1IGxlZ2FjeS10cnVuaworNjk4MDcgMTY0YmE3ZmZhMGVlZTU0NGI0YzNlMTM0NzY4YmMyODEwMWM4NmZjMyByZWxlYXNlMjYtbWFpbnQKKzY5ODA4IDkyNTBjOGM2MWE5MTA5NWE5NWVmNTZkM2NjMjE2OGY1ZGU2ZTRhOWQgcHkzaworNjk4MDkgNGQzYmFhYzJlMWEyMGRiNTJiMTc3OWJhNWYxY2YzOGQ1NjA4YWM2ZCByZWxlYXNlMzAtbWFpbnQKKzY5ODExIDA4NDhlYmI4ZjljODhjOTI3MGRlNjcyZmExNTZhNDZiNGU2Y2RkZDggbGVnYWN5LXRydW5rCis2OTgxMiBjNmVkNWJmZTM5NjlhMzhiNGMwN2Y3MTgzY2FmMzBhYmRmZjdmYjU2IGlvLWMKKzY5ODEzIGUwOGU0MDk4YTRlNzliNDE3YzU1ZWUzZDEzNzNjZGNiYmI3NTEzNTEgaW8tYworNjk4MTQgNDA4MmVkYThiNDY2M2IxNDUxNmNlNjk2MGMwNTIzOTJjNmE5NzllNyBpby1jCis2OTgxNSA3ZjgzYWZmNjhjMTY2Y2Q4NGUzMmVlYzE2ZjYyZGU5NWI3YmU1MTc3IGlvLWMKKzY5ODE2IDFhYWM3NTIwNDM3YTZmZDRhNzU3NDk5MDdlNjdmNzdmNmI2Mjk5MTYgbGVnYWN5LXRydW5rCis2OTgxNyBjMDVjMzBmYzExOGJlMTAwOWVlZmFiYmY0NDU0Mjc4NDY2YjJhNjJhIGlvLWMKKzY5ODE4IDZjZTk2Y2U0ZDlhZmU0MTU2ZDYxMDIwNDE4M2QyMTgzZDJiZmQ2ZDYgcmVsZWFzZTI2LW1haW50Cis2OTgxOSA1ZjU5NWFjOGFlZmMzOTYyZjllYzAyNWYzMDRlOTA4ZGIzYjcxMjhlIHB5M2sKKzY5ODIwIGUwODE1ZmVlMjRmNmUzODBiMjYyM2VmNjUxZjFkNDc1ZmFhNzhlMjAgcmVsZWFzZTMwLW1haW50Cis2OTgyMSA2N2JjZmYyOTNhMjFhZDVmZWI1NzUxYzM4N2EwNzg1NzQ0MmE5ZGZlIHB5M2sKKzY5ODIyIDM3ZTRkZjlmZGFhNmQ0MDAwNTdiZWVmZTAyYWEzMGJiM2YyODBlYTQgcmVsZWFzZTMwLW1haW50Cis2OTgyNyBhZGIxMTMzZDg5MmFiNmZjMmY0MmM3YzlmNmMwOThmYTQ3ZWE2NGNkIGlvLWMKKzY5ODI4IGM2MTgyY2M3ZTZkNzBlMDMzMWM0MTExNWEyYjAxZjNjZWRjYjU0Y2YgaW8tYworNjk4MjkgNzAyYzNiOTgwM2U4Yzc1M2Q3MWZiNzJjNzBjODA0OTIxOWUwMGM0YiBpby1jCis2OTgzMCA2ZmQ4OTBiMjBkNjNmYzdhZDhiMGQ1YzkwMzcxNWVmYzM0YzU5NzBhIGlvLWMKKzY5ODMxIGRjYzE2MWUxYWY3ZWNlMjdhZDUzM2NjNGNlZjYyZjk0ZTk2ZDI0MGYgcHkzaworNjk4MzIgNDFlMzhhNjFiYzRiNDkxNjdmMmQ1OWJmMWE1NjdlYWQ4ZGZiNjAwNCBweTNrCis2OTgzMyBhMWZhZmY3NGZmODllMmRhYWMwNDg4OTAxNTRmMThkYmJhYWVjOTg5IHB5M2sKKzY5ODM0IDcxNDliN2VlZjE1M2Q3YjM3ZTJlNDVhZDUzMDExMDJlNTJlMGYyMTYgcHkzaworNjk4MzUgNzRhMmZmNDA1MThhZTY2NTNiMTg4NmNiNzNhNDcxOWFhZGI2MTc3OSBweTNrCis2OTgzNiBlZTcwMjk3MTBjMDUwZGIyMjZkM2JmODQ0MjBhOWMzOWM5NjkzNGQ2IHB5M2sKKzY5ODM3IDNlMjdkNjA2ZDYyNWY4ZTkxN2ZjNWUxZjU2NTliMGJkZWNlN2VlN2IgbGVnYWN5LXRydW5rCis2OTgzOCAzMjZmNmZhY2MxYWE0ZjQzNmI3M2Q4Y2MwZDMxYmM2ODgwZGEyMTgwIGxlZ2FjeS10cnVuaworNjk4MzkgYTViYTljMTdmOGI5ZDUwZTA5YzBmMTRhZDA2NjBhZGZjNGE1ZjZlMSBpby1jCis2OTg0MCA5ZTZmYmE1YWNjZTQ2YmY4NDcxMWJmZGZhZWZiYjc3YTFhNWQ0ZTQzIGxlZ2FjeS10cnVuaworNjk4NDEgYzI3MmUzMTVkZDg3MjA2YTlkOTc2YzEwNGJmMTYxZDc2YzE3ZjIyYyBpby1jCis2OTg0MiA5NTU3NmJmM2FkNzM1ODk2OTM4NDk5YTVmNmFhMDZiMmM2MDYwNDA3IGlvLWMKKzY5ODQzIDM3NmQ4MDhlMWMwNWZhYWFkOWU1MDAyZWU1YWYwMjllNDNmYmE5NWMgaW8tYworNjk4NDQgNTE0NDViMDQwOTg2MTc2MjY0ZDUwZmZiNjc4MmZmN2FlMzQzMDQwYSBpby1jCis2OTg0NSAzZjAyM2ZiODNmMmI5YjlhMWI0YTg0ODllNWQ2Y2UwNzA0ZTFlNDIwIGlvLWMKKzY5ODQ2IGFmOWI2YzQzODA0ZTFlOWM0OTMzMmNhNjYzNDM2M2QwOGFlMmYyYWMgbGVnYWN5LXRydW5rCis2OTg0NyBkMDZhM2ViZjMwNmZhOTQ1ZTQzZjU5ZGYwNjM3MDVhM2Y0YzNkY2NkIHB5M2sKKzY5ODQ4IDZiYTU1ODhlZjY0NTg3ZjIyYTRlNDFjOGU2M2Q4YzE5MGIwNDg2YWQgaW8tYworNjk4NDkgZWM0OTA5MzJkOTFjYjUyZGIxMmNlMzYzM2Q3MzQ3MTg5ODczMjEyNiBweTNrCis2OTg1MCBjMjk1MmMyYjVhNGFlNjhlNzMzMjc5YzZhZmI4NGZjNDJjYWU5Nzk0IGlvLWMKKzY5ODUxIGFhMjlkMDk2NzEwNTg5ZTY3NmVhODIxZTEwY2FiZjJkNmQ3OTc2MDkgcHkzaworNjk4NTIgOTk4OGU5ZjAwNDA4ZjY1OTIyNzlhZTZkNjc0MjE4ODMxYzQyOGJkOSBpby1jCis2OTg1MyA4YTgyNWExN2NiMjczNTgyYmZmZjk0YzA1Y2RjNWVlOTM4ODdkZTYwIHB5M2sKKzY5ODU0IDdhZThhODcyODQyMWZlNWYzMjQ4MGMxMWU4NGNjZWM4YjYwNTE4NzkgaW8tYworNjk4NTUgOTZhYmI0MzllMmQwN2QwY2JhYTg3YWQ3YjViNmIxNWFjYzAzN2M2NyBsZWdhY3ktdHJ1bmsKKzY5ODU2IDZhNWJlZTE4OTNhZDgzNmMxMTIwNDA4YTI5ZWE1ZTc0MWIwMmRkOTEgcHkzaworNjk4NTcgOTE4MjY0ZmYwMmUxYzA5ZWFjNDk0NDdjMzRjNzVlZmExZGY2MmI0YyBweTNrCis2OTg1OCA1YmUyNGE1NmYwOTE4YWRkYzZmZTUyMjIyODU4MjlmZWY3Mjg5MzMyIHB5M2sKKzY5ODU5IDc2NTcxOTg2YTJmNDIwODI2NjM3NmJmMGViMjRhMjkxY2FmZWMwNDUgcmVsZWFzZTMwLW1haW50Cis2OTg2MCA4ZTdhNGE3NzQxMzg0MjZkZDdkMDRkMzJkODdhMTUxYmFkZjI4NmE1IGlvLWMKKzY5ODYxIGVjZDhlZjRlNzllNmI3MWIxMWJjYjIzNGEzYTM2NmVjZTdjYWQ2MGIgbGVnYWN5LXRydW5rCis2OTg2MiBjMzMwNGE0YjY0ZWExYTdlNTU4YzIyZWQzMWRjZWZlNWM1ZWM5Mzc5IHJlbGVhc2UyNi1tYWludAorNjk4NjMgODQ2MGU1ZWUwNmMzOTE1ZGU3ODI1ODEyMzFhZmU3NjUzNDU4MWM3YiBweTNrCis2OTg2NCAzY2ExZmI2MjJmNWE0YjhhNzU3ZjA4OTE1M2MwOThkMTk0YTY0NjQzIHJlbGVhc2UzMC1tYWludAorNjk4NjUgMDAyZGFjYTY2ZjlmNmJkZmI5ZDE5NzJmY2E3ZWQ5OGM0YmM3Y2Q2ZiBpby1jCis2OTg2NiBlZDVjZDkwNGYyMDA3YzVjZWU1Njk5MzY2NDM1YjE1YjUyMTM1ZWYxIGlvLWMKKzY5ODY4IDVmZmQ5MzI4MGE3MWI0MDdhYzg1NDllMTczNzc3NDRmMWQyZDQxY2MgaW8tYworNjk4NjkgYTBlZGExZTIyOGI4ZjhmMzU0YTQwZGZmNzc3ODIyNTE5Nzc0YTVjYSBweTNrCis2OTg3MCAwYWI4YmVmNjcxYTNkZjU5OGEwMDg5NTg0Y2VjYTExNDhjZTc4OGFiIGxlZ2FjeS10cnVuaworNjk4NzEgYzIwMWM4Y2YzY2I0MGMyNjZiOGNkNjY0YjQ3MTViYTRmOGYwYmJhYyBsZWdhY3ktdHJ1bmsKKzY5ODcyIDViNWRjY2M1MGUxMmM0NjRiMTkwNGMyOTQ0MzZlZDlkMDQ0MGU4MWYgaW8tYworNjk4NzMgNDk5MTRiM2UzYWE4MTAwZjUxMDVhNzU2MDA0MjFmYzRkMWNiYTZlNiBpby1jCis2OTg3NCBiMzUxNWVkMjgxMzUwNDE2MGM2YTczM2QwNTg2MTA4NTE0OGE3Yzk2IGxlZ2FjeS10cnVuaworNjk4NzUgZDM2Mjk2NjczOTc0YTAyMmRhNzk2MTc3MzcyOTg2YTIyNDY0ZDE4NiByZWxlYXNlMjYtbWFpbnQKKzY5ODc2IGU4OWM3ZWQxY2ZmZjQ4MGZlNWQ0MzQxMjFkOWQ1M2RlYzdkNjYwNDcgcHkzaworNjk4NzcgYWEzMDIxNjk5YzU5YWI4MGE5YTlkY2QwNTcyNjU5MGM4YmMwNjdiZCByZWxlYXNlMzAtbWFpbnQKKzY5ODc4IGNkMmVlODE5MDk1N2M5NDcwMGY5MzU3ZmU4YWViOWU2NWFiYTE2MWQgbGVnYWN5LXRydW5rCis2OTg3OSAzMzlmNWMxZWYwZWRmNDMzMmFhZDlkYjExYmVmZjYzNTg0M2ZmNzgxIHJlbGVhc2UyNi1tYWludAorNjk4ODAgMGE1YzI2ZDBiZTU0MGRjYzAyZDM5NmU4NzQ1MThjYzNiYTExODU4NyBweTNrCis2OTg4MSA2MjBlNzQyY2RmNjhhNzQ1YjA2MDE4NzViZWVhZjdmNmViMTIwMjkxIGxlZ2FjeS10cnVuaworNjk4ODIgMGVmZmRhNTQ4MTllMmM0NjdiZDliMjZiY2Q2OTBhYTFkYmQ1ZWNlOCByZWxlYXNlMjYtbWFpbnQKKzY5ODgzIGU1ZTVjYTA0OTFiODQwODI1YTAyZmQ2ZWZjZDMwODAzNmI5ZGIzNjAgcHkzaworNjk4ODQgMTNhMWNiZjExYTIxZWFkMTdmZjI0ZWE4YjFlNmEzNDkwMDlmNTlhYSByZWxlYXNlMzAtbWFpbnQKKzY5ODg1IGQyMmQ2ZTlmNzkxYzJjZjczNjY4N2M1MDlhMzhiMTA3OTFiNWY1NzYgaW8tYworNjk4ODggY2UwYTk1YWY2YjFkNDFiYmMyOTA3ZDNhNDhkMTc5MTA1ZjcxYmMxNSBpby1jCis2OTg4OSAyNzJhYzY1NGZkMWFmMjAwNzRlOGM3ZTgwNzRlODA5YzY4NWU0NWFmIGxlZ2FjeS10cnVuaworNjk4OTAgZmI3YmU0NWE5NDQxOGVmNjFjYTcwMzY4ZGM1ZDA5NzdhMmQ0NGNlYyBweTNrCis2OTg5MSAzZGY4YmUwMzYzMjQzZTBhOGVlZWU4ZmQ5YTAxYjMwZDU0YzY5Yjk4IGlvLWMKKzY5ODkyIDlmNmNiMDQzN2JlODIzNDNlZmNiZjk4Njg1YzRhN2E1ZjMzODkyNzIgaW8tYworNjk4OTMgNDQ0OTZjZDBiYzc4MDNlNDg1MThjMzU2Yzk5YWExZTc4ZDU1ZDYzNSBpby1jCis2OTg5NCBkYjE0ZWNhMDE2MzUwNmRjZmFmYWIzMWJkYTg3NTIwNGRiYzA5YjZjIHB5M2sKKzY5ODk1IGI2MWYzM2FmMzc0YmNhNzJiOGI0ZmVlZjBjNTExODFlNWQ1YmRmNmIgcHkzaworNjk4OTYgOGE0ZGMwMDg4ZTg2MjZiNTZjZGY5ZmQ3NWRhMDIzYTZlZmM4NDE2YyBsZWdhY3ktdHJ1bmsKKzY5ODk3IDMyMTliMzRhMzMyMDYxMjg5NGZhYTRjOWYyOTVjMTY3NzI2Nzg2NTEgcHkzaworNjk4OTggYTM2NjY4OGE4ZjBkM2M5ZTJkZTQ3MTZiMDA4MGYzMjI0NzFiNzI2ZCByZWxlYXNlMjYtbWFpbnQKKzY5ODk5IGM4ZDA2ZGZkNGMzOWY1Yzk2ZTBkYTc4OTkxNjg5MDliZTYyMzg5NWMgcmVsZWFzZTMwLW1haW50Cis2OTkwMCA1YmRiOWM2NDJjY2NkMTYyZThmMzk3MWRlNDJmODdiYTZmZWMxNjQ2IHJlbGVhc2UyNi1tYWludAorNjk5MDEgM2U3NzMzY2YyNzllMzRkYTVmYWM5MzBiNGE4YzAwMWUyYTQzNGVkZCBsZWdhY3ktdHJ1bmsKKzY5OTAyIDJiZjEzMzdjM2E2MDVkY2EwNDBmOTE2ZWUzZjQzZTY1ODcyZTJlMTQgbGVnYWN5LXRydW5rCis2OTkwMyAxZjFlMjJlZjU1NjA5YWUxNTg3OTk3NjU4ODY2NWY3ZDI4MDE4YjEwIHJlbGVhc2UyNi1tYWludAorNjk5MDQgNWM4NTlhZWE0NmI5YzdkY2E1NWQ0MWNhMTRlZTAwMTc1N2E1ODcxOSBweTNrCis2OTkwNSAwYTU5OGRiZWQ2NzkyNjZmNjNmMTk2ZDkzMGJiOTkxZjMwYjE2NmY5IGxlZ2FjeS10cnVuaworNjk5MDYgMDE3NGI5MzY2OWNkNDg4OWU1NzdjMWMwYWY4YjkyMzQ2MGRjYjA5OCByZWxlYXNlMjYtbWFpbnQKKzY5OTA3IDE2Y2NhMzBjZjNlYjgzYjFlMjYwNWYzMjk0ZDE2ZjJlNzcyNjAzOGQgbGVnYWN5LXRydW5rCis2OTkwOCBhMGZlY2JlNzM2MTZmNjI4M2UzZGUwZjY5OTkyYmI3OGMzY2I0M2M2IGxlZ2FjeS10cnVuaworNjk5MDkgMDUwNDA4N2EyNzIzNmIzNzg1MDIwOTAyNTdjNjYzYTZkMDIyYjc4NiBweTNrCis2OTkxMCBjMWYwMjZlMDg3NWUwNDliMDhjMjc1ZGU5NTVkZjY2NmY2N2E4ZWNiIHJlbGVhc2UzMC1tYWludAorNjk5MTEgOWZlNTMxNTY1NDNjZjUyZjgyYjE2ZmQzNzlhMjcwNzU5NGY1ZjM3MyBpby1jCis2OTkxMiBmOWVhZDJlMWEwM2NmZDhjMjNjODhlYWM0Y2M1ZTQxM2JjNTg2NDAzIHJlbGVhc2UyNi1tYWludAorNjk5MTMgYmMzYjA3M2FkMTQ2ZDU5MTU5Y2Q0NzczNGY2NDFiNjhmNjIzNjk1NyBpby1jCis2OTkxNCBhNTJlMTQ1NDU1NjE0ZTdmY2I2NzMxODE4OTY4OWZhOTNlZTRjZWJmIGlvLWMKKzY5OTE1IDY2Y2U4MGU4ZTUzNzk4ZTgxOTk2NjAyNjNjOWM2YzQ4ZTBmNzhkY2UgaW8tYworNjk5MTYgZWYzYTZjMTY4Mzc0YzQ4ZGMwMTNhOGM0MTBkY2ZmZTQ4ZDYzZmExMiBpby1jCis2OTkxNyA4MzY2NGU3ZjcwOGFiMzk3Y2RkYmI5NmQ3NWZlYWUxZTA2ZTk5MzZmIHJlbGVhc2UzMC1tYWludAorNjk5MTggOTQ5NDFiMDU5ODAwZTM0NmIxNTcxYmNjMTQ5YTQ4ZWNlZGQxMzFkZCByZWxlYXNlMjYtbWFpbnQKKzY5OTI0IGZhNzQ3NjYwZDRkNDE2OGNkNWIyM2JiYzcwOThiMDUzZWRiNWIxOGUgbGVnYWN5LXRydW5rCis2OTkyNiAwNGYzY2YzMmFhNzdmODM2MDkwNmUxMjE1NmRiN2Y0ZjBkNmQ4MTgzIHB5M2sKKzY5OTI3IDVjNzRlNDBkMTkyNmU1YTZlODQ4Mzc5MDgzMzllOTNhODM0MGM2ODEgbGVnYWN5LXRydW5rCis2OTkyOSBiMWU2MGI0N2UxNjAxN2E2YTFmYzJiMGY3ODZkMTM3MDk2OTFmZWI2IHJlbGVhc2UzMC1tYWludAorNjk5MzAgNTYxNzQ3MTAzN2JjN2FmNWNjYmE2YjY5OGI2ZjcwNDcwYmVjYzcwNCBweTNrCis2OTkzMSA4M2ZhMjc0ODNmZGM5MzkxYmM0MGM3ZDNjNmY1ZTY0NzlkZjI0MWZhIHJlbGVhc2UzMC1tYWludAorNjk5MzIgNTk1MmQ0MTE4OWFkMWFmMTExMTNmYzg4MDBhZTc2MmQ5MjU2MjNiYyByZWxlYXNlMjYtbWFpbnQKKzY5OTMzIDkwNDEyZGZkYWJhMzA2YTI0OTRkYmEwNDRjNjNlMWJmNzRmZWRhODQgcmVsZWFzZTMwLW1haW50Cis2OTkzNCAxMmM2OWVmNDNkZGU4MzJhYzBkN2YyMmJjMzEzNjg4Nzg4ODBiYWRiIHB5M2sKKzY5OTM1IGMwYjliYzI1Y2ViYmUzOTk3YWIzYjg1NDVjNTllMDAxMTI5ZTI2ZmEgcHkzaworNjk5MzYgYmM3MGVjOTdlMzlmYWY1NzY2OWZkMDFjZjdjOTNjNzFiNzU4ZWFmNyByZWxlYXNlMzAtbWFpbnQKKzY5OTM3IDljMjVhMDc5MDAyMmMwNjE3NWJhNmY1YmRiODA3ZWNhNDZiZTI5ZDYgbGVnYWN5LXRydW5rCis2OTkzOCBmYWY5NjgyMTJmMzFkNmEwN2FiZmY3ZmQ3NGQzZTcwMGNjMzE3OTgxIHJlbGVhc2UyNi1tYWludAorNjk5MzkgNTc0ZmVmNTNhN2UzZGU0OWUyOTE4OTU3NzEyNThkMTcxMDhlY2FkZSByZWxlYXNlMzAtbWFpbnQKKzY5OTQ2IDQ1YjQ0YmQzMmY0MTY1ZDE2OWMzMWJlOTYyNmJjNjliYThjNGY0NzMgbGVnYWN5LXRydW5rCis2OTk0NyBhOGJiODJmNWZkNjQ3YWQ3MGMzYjAyODY1MGY5YjZjODhjODhlMGFkIGxlZ2FjeS10cnVuaworNjk5NDggMmY2YjM0ZjY3ZWYwMjAxNjU5ZWZkYWQ1N2Y3OTFiZjEzYjMwMDI4MCBweTNrCis2OTk0OSAyZTI1NzcxZDcyMDIxNjFmMjU0MGY5MzFiZjA1ODEwOGZlODU2NTIxIHB5M2sKKzY5OTUxIDYwZDA5YTcxNjU1NjgwYmQ3NmMyMTUxYzhhYTFjMzgwYzY1MGEzMjYgcHkzaworNjk5NTIgMWQyNDczOTUxMWM5YzkyOWZlZmJjZjAyNmE5YmFiODhjYzY1N2E4MiBsZWdhY3ktdHJ1bmsKKzY5OTUzIGI4YzRhMzc5M2QwZjUxMmE3ZjBkOWEyOGNjMDEyZmVjYmFlZGI5MTkgbGVnYWN5LXRydW5rCis2OTk1NCBhN2ZkZjY5Y2FlMTM1YzBhYzQ5Y2ZiY2ExMDcwMDdkZmMwYWQxODViIHJlbGVhc2UyNi1tYWludAorNjk5NTUgNDZjYmU2N2I5NjYxZjcxMTlkYzY4OWIwYjRhMzFiMjdkMzA5YjFhZSBsZWdhY3ktdHJ1bmsKKzY5OTU2IGRjMzE1ZGY3ZTgwODYzMjc5NWM4MTgyZWRjNDliMjg5ZDQ4MDMzMTQgcmVsZWFzZTI2LW1haW50Cis2OTk1NyA2NTc2MmEwNmI4OGYzY2YzMDMxMzU4YWIxZTAzZDZkMTNjYzc4YjYyIHB5M2sKKzY5OTU4IDMzN2JkNTA5NDU1YTE5NzE4NzAzNzVhNTk1ZTUwMzIxNjQ1YWJmNmQgcmVsZWFzZTMwLW1haW50Cis2OTk1OSAxNzdiYTEyMmJiMWIwMmMzYTMzMmIzMTVkOWI1OWJlNTU1NjFkNzllIGxlZ2FjeS10cnVuaworNjk5NjAgMjliMTJhODliMmEwNmM4MDViMTU3MjU1ODA4MDgzOTc4ZjE0OTAwNyByZWxlYXNlMjYtbWFpbnQKKzY5OTYxIDY0M2Q4ZDRmYzhlYmNjNjkxNTVkMzQxNjM1N2FhZGNhOWMwNTMzODggcHkzaworNjk5NjIgMDhhMjk2YTg4YzNlMGIzNGIxNjFlOWI5NTA4NmExODE3OTVhZWZmYiBpby1jCis2OTk2MyA4ZTBjZWI5ZjVjMmE3M2YzNGZkMjU5NjM3YTJmODdlYjgyYzkyNjRhIGlvLWMKKzY5OTc0IDQyMWEwMzY5ZjIzOTRhNGE0NzYzYWMyNWI1MjRmN2JhMGViZTg2NWMgbGVnYWN5LXRydW5rCis2OTk3NSBhYzI2NzY1ZmIxYmI4YjA0NjFlZjViNThhOGU0NDBkYzhkNTIxMjFhIHB5M2sKKzY5OTc2IDcwMmYxODk5MTYxZTE5NDFkMzUwNDVhMGM3ZjQxYWQzYmVmZGQwN2QgbGVnYWN5LXRydW5rCis2OTk3NyA2OTJjOGE5ODgwMjY0YjJlNmZjZjEwMjJhN2VkYWUyMjIwZTA0NzA0IHB5M2sKKzY5OTc4IDAyZWVjZGIxNzM1ODA3OWNlMDczNmYyZWVkZTczNGMyZGFmZWFhNWEgcmVsZWFzZTMwLW1haW50Cis2OTk3OSBmN2IwMzAxMDE2MmM0MTE3ZDdkN2NjYWVlZmY0ZTVkMzFmYzRmY2EwIHJlbGVhc2UyNi1tYWludAorNjk5ODEgMGVlM2I5YTdmMjA5N2U5ZGE3NzY3ZjlkNzVlNGJlZTM3N2FhNzQ0NiBsZWdhY3ktdHJ1bmsKKzY5OTgyIGQ3OGIyOGEzNTI0YzVhYWU2YWE1YmUzZDViZThhODgxMzM5MGIxNzQgcHkzaworNjk5ODMgYzA3ZDdmZDI3NDY5OTBlMDI3NzliZGJlNDg2ZTRjMDk5NjU2OGZlNyBsZWdhY3ktdHJ1bmsKKzY5OTg0IDg4NzM4NTRiYjVmOTA3MmU1YjczYjYzNzg3NDQ4ZDQwY2U2NzI5ZGEgcmVsZWFzZTI2LW1haW50Cis2OTk4NSBjODAwNDgyMTVkZTU4MDBiMDZkMzRmYmZmMjM2YTlkOWQwOTAwMDc5IHJlbGVhc2UzMC1tYWludAorNjk5ODYgMDUyZmI1MWY4ZGNmM2I3OTI1ODlmOWQ4MGM2NzU2YjljNjFkNzA1ZCBweTNrCis2OTk4NyAzZWNkNDg0NzU2YjAyM2IzZmE4MDI0Nzg0MGM3YjM4NTMzMGE2NGFiIGxlZ2FjeS10cnVuaworNjk5ODkgZTg3MmY1ODdmMTkwMWE3NDI4ZTllYWViOWJmOTI1NTdkOGU2ZTMzZSBweTNrCis2OTk5MCBlOTliNTZkYTQzMmFmNmQxZDU2YjMyMTc3ODRlOTBiN2QyYThhZmFlIHB5M2sKKzY5OTkxIDMyM2E1YThkMTBmYzg2MDAyYjkzMTFmNWFlNzhlMzg5MWUwZTM0YTUgcmVsZWFzZTMwLW1haW50Cis2OTk5NCA2OTgxNzVmZThiM2RlOTkwZDNiNmI3MmNjYzVlYTAyNDkyNjY2NGNkIGxlZ2FjeS10cnVuaworNjk5OTUgM2Y3M2I3YWYxMzFjMTVkMjk3YmQyNjMxZDA0NmU1NzI5MzYzM2ZjYSBweTNrCis2OTk5NiAzNzIyY2U0NTgzMTg5NDdhOWYyNWJkODg5OWJlYjIwNmNkZGU2NTZiIHB5M2sKKzY5OTk3IGExYjNkMDIxNjgyMGE5ZDYyODE4NzA1MDQ2Yzc4MmE4MWJmYmY2ODggcmVsZWFzZTMwLW1haW50Cis2OTk5OCA2MzI2NjY2OTFkM2Q0ODA4MzA1M2M2ZDhjMDdhOTE1MWU0ODJlYjkxIGxlZ2FjeS10cnVuaworNjk5OTkgNThiYmViMzNmNTgzMzMxYzY2MDhhZmZhNjMyYTczMWQxYTliZjA4OCBsZWdhY3ktdHJ1bmsKKzcwMDAwIDcxMmFhNWJiN2I0OGQ1ZDdjZWMzYTBjOTQwN2ZlMjdlZDNmZWZmZWMgbGVnYWN5LXRydW5rCis3MDAwMSA4NjIyODk0N2I2NWQxZjkwNmY4OGQyMzNmM2YwYjU4ZGEyZjdlODRhIHB5M2sKKzcwMDAyIDE0OWRjNGJjOGVjYTAzMTIzMDg3NjAxY2UwYmZjYTg1OGRkOTUyMWUgbGVnYWN5LXRydW5rCis3MDAwMyA4YjRkYTFmNDkzODQ1Y2EwNzgyMzEwMjJhOTFjYmM5MWY1Y2E5YzkwIGxlZ2FjeS10cnVuaworNzAwMDQgZjE3MDcyOWUzMDM4MmQ5YzAyNTllZmI3MTE3ZTUxYmZjNmVmNzM3ZiByZWxlYXNlMjYtbWFpbnQKKzcwMDA1IGYyZTZhNWVhMTBmZTBhMDk2OGFiYjA4ODI1ODk3YjQ3NTJjZGM1ZTMgcHkzaworNzAwMDYgMzY5NWNhZmVmNThkOTM0NGVhMjljYTU2OTdkYWVlMGMwOTA3NWRhMSByZWxlYXNlMzAtbWFpbnQKKzcwMDA3IGI3YjIzODg3ZmJkZTY4MTUwZTc1NGQ4N2E2MjY0Yzk1NGU2Y2EyMGUgbGVnYWN5LXRydW5rCis3MDAwOCBlYzFmOGViNGRhNTk0ZjVlZDk0MDc5NGI0ODE2N2VkMzYwNTJjZmE2IHJlbGVhc2UyNi1tYWludAorNzAwMDkgZTlkMDNmNmIwZDU5MDU2ZmE5NTQ2YTFlMjc1NWEyMTIyNTdmZmFjYSBweTNrCis3MDAxMCAyMjhmODlhZTU1YjEwMDgyN2JjMDkwNTliZmQzNjY2MDY1NDEyNGVhIHJlbGVhc2UzMC1tYWludAorNzAwMTEgMmI2MGI0NjUxM2QyNjNmOTIwNWZiZjRjZjk4ODU2N2Q3ZThlODJjMSBsZWdhY3ktdHJ1bmsKKzcwMDE1IGM0ZjI3ZTU0NmNmNTE3NWU1MmRjMzY1N2JmZGM1ZmYyZjcxMzkyMGMgcHkzaworNzAwMTYgMTA1YTUzMTdlNjhlMTI5MDk5ZmY5ZTk0MWUyMGRlMmZmMzkyZjZkZSBsZWdhY3ktdHJ1bmsKKzcwMDE3IDhiNjg5Njg4NzljNzBkZjEwYTAyZTAyZTNiYTY2OTNjY2QzMzg2ZDIgbGVnYWN5LXRydW5rCis3MDAxOCAxNjczZDk1NzMxMWEwYmI0YTkzM2Q2YmE0YWNmYmIxYjk5MGVkZmEyIHJlbGVhc2UyNi1tYWludAorNzAwMTkgNGZkODBlNjZiMTA3MjJmM2Q0MGYzNzc0NTNhMmYxNjRkNzYxYWM0ZSBweTNrCis3MDAyMCBkYjFkYmYwNTcxNDdhNGE5OTY0OTljN2IxYjA3M2Y5MTgzMWZmOWQ4IHJlbGVhc2UzMC1tYWludAorNzAwMjIgODY2Zjc0N2MxOTZmMTM3NGQ5ZGZmMDU1ZWQ4ZGZkYjMxZTI5M2QxYSBsZWdhY3ktdHJ1bmsKKzcwMDIzIDgwMDNhMmZiNjI1YmExMDM4N2RjOTExZTU5YTBmNjNhMjk3NjdmY2MgbGVnYWN5LXRydW5rCis3MDAyNCA1ZGFjMDgxZTczMGQwODA1Y2E1NDhkOTVkODA4ODQ5ZjYzYzVkMDgwIHB5M2sKKzcwMDI1IGViMDNlNWFlNzEwOWE2OTc0Y2MyMThhZGQ3ZmI1N2EyYTJkN2ZhODggbGVnYWN5LXRydW5rCis3MDAyNiA4Mzk5ODM1OTUzMzgyOTJhMzQwZDQ2MDM2YjQ1ODllZTBmNzlkZWVjIGxlZ2FjeS10cnVuaworNzAwMjcgMWY4NDcwNmU4MTZjMmU3MGVjZjYwMjZiODZkNzU0YjE2ZDgyOTMyNyBweTNrCis3MDAyOCAxZjBkZTQ5NGJjMTMxMDc2ZDQ1NGUzMWUzY2Y0N2ViMjYzYjcyMjI4IHB5M2sKKzcwMDI5IDliNjJjYjY1Mzg5MjI3NjVhODI0YzljYjQ1YzcxOWFmZTU5N2JmNDUgcHkzaworNzAwMzAgYTVmMDM3MTg1MGZmNTRmNDVmMmEyNzllNjIwNWQzZGI1ZTI1Y2YxOCByZWxlYXNlMzAtbWFpbnQKKzcwMDMzIGIzMDZjNzJmZmQ3MDEwZWQxYTZjNzY3ZjlmNGQxZThiNDRjNzRlMDAgaW8tYworNzAwMzUgZDE1NTZiODE5NWYyOGFkNDU3MjM2ZTk5OTMwNWI4MDIzN2Y3ZDIwZCBpby1jCis3MDAzNyBlMDk0MmM2NzUzNzI4Yjc0YmY2Y2NhYTlmMWZlZDBlOTBjMzIxOTUxIHB5M2sKKzcwMDM4IGI3MWRmNDRkNWJiZjBhNmFiY2ExMjA4Y2JjYWJmY2ViMzg4MDFhMDUgaW8tYworNzAwNDEgZmM4M2NhMWFjMTEwODgxM2UxYWZlYzRkYjAyZGMyMzEyOWM2Zjk4MyBpby1jCis3MDA0MiAzNWMxZDUyNjA3Yzg0ZjlmNzIxNjY5ZTYzMTFmYTRjODhlNmM4ZjEyIGlvLWMKKzcwMDQzIGQyNDUzM2ZiM2Y0N2ExOWZkMDRkY2FiMzZmNmIyMTlmMDJlMDA3M2EgaW8tYworNzAwNDQgZjc1ZmI5ZjQ3MWQwOWIyNWNkZGIwYzU4NWQ2NWUyZWYzZWYwY2E3NiBpby1jCis3MDA0NSAzMTQ3YjNiNzhkY2Y3ZWIzMDU2MjY4NDlmZDNiMjU1OWY1ODU1OWU4IGlvLWMKKzcwMDQ2IGEyNjVmNTk5NjFmNjZhM2RlYmM0MzNkMTRlNTMyOWFiMTA1M2JlZDkgaW8tYworNzAwNDcgYzg0ZGNhYzdlNjlhMTg1MGU4NWZkYzZmN2RmYzAxMzlkNzYwYmMwMCBpby1jCis3MDA0OCBmMzM5ZGE4Mzg1OGQ5OTEwNDQ0NGMwMDdhYzljZjM3ZmU3Y2QxMWRmIGlvLWMKKzcwMDQ5IDc4OWZmOGJkMTkwYTViODAxNWQ1MTcyMjU5Yjg2ZTBhMTEzZDliZGUgbGVnYWN5LXRydW5rCis3MDA1MCBiZTVhOWM4NGY2YmNjYTdlYzQ5YWQ2ZDMyODBlYTI1MWQwNTE5OGMyIHJlbGVhc2UyNi1tYWludAorNzAwNTEgMjA2MDM4MTIxYWRlYzk3NTUzNTdiMzUwZmJmODAyM2FiM2NjOGM5NyBweTNrCis3MDA1MiA5ZGU1ZDYyYWQ0MDIyOGVmNjJlMjdlY2FlOGFlNzRhNDJkNDMxYzZlIGxlZ2FjeS10cnVuaworNzAwNTMgYmE2YzMwNmNmMmNlZTc3MWZjYzE0Mjk1NDFlY2ZiNTA3NjQ2YzhhYyBweTNrCis3MDA1NCA5MDAzN2Y5N2Q4NzA3YmNmZGRmODA4M2VlNTEyYzUwZWNlZDA2YTg1IHJlbGVhc2UyNi1tYWludAorNzAwNTUgNzU5ZGJhY2U1MWQyZWQxYmVkYjY0MDU0YWZlMmNiYTZhMWNjYzAyNCByZWxlYXNlMzAtbWFpbnQKKzcwMDU2IDI5ZDY1MmUzZjJkMzJhYjljZjgzYmJlNDRlNmFiZmI5OWYyMDI4NmEgbGVnYWN5LXRydW5rCis3MDA1NyAwZTZmYWYyN2I1MzFmMjczZTE3MjI2Yzc4ZTg0MDM2YmFiYjUyOWY4IHB5M2sKKzcwMDU4IGM2NGQ0YThhZTJiMmVjYjgwOWFjNmQ4NWY0ZTVjMzg2YTE3ZWEzMTIgcmVsZWFzZTMwLW1haW50Cis3MDA1OSAyYTBmODRhYzQ5ZjA5MDNjMzFkZDU1OWFhZTA0NWY4NDNjNjJlZjNhIHJlbGVhc2UyNi1tYWludAorNzAwNjEgNjcyNDI1YmUzODhhNjkyMWRjOGE3NmFiZjgzZDQxOTJjYTFmNjVkOCBsZWdhY3ktdHJ1bmsKKzcwMDYyIDRlMTU1NjAxMjU4NDU4M2ExODY4OWJjNWI3ODcwNmIyNjY3YzNmY2UgbGVnYWN5LXRydW5rCis3MDA2MyA3OWU2NmMxMWRjODBjYTJhMGFkODBiMDVlYTc1NDkzZTE5MjZkZGUyIHB5M2sKKzcwMDY0IGFlMjI2MzFhNzg3YzQ5YjlmNDllMTUyZDg5ZWFmYmY1YWVlMDhlNzEgcmVsZWFzZTMwLW1haW50Cis3MDA2NSA2NzY1NjdlMmE3MTE5MjEyNmYwMzQyZGNhNWZjYTdiYjg3MDYwNjY2IHJlbGVhc2UyNi1tYWludAorNzAwNjcgZDFhMzE0ZTBlZmY3MjAwMzVmYmQ0NTIyMGNkZjlhOGU3ZGEzNTdhYSBpby1jCis3MDA2OCA2MDExYzA5MmUyMTM0NmVlN2IzNWI2NjRmYzUzMzdiNjE5NzZmODUxIGlvLWMKKzcwMDY5IDdmYWNhNjk1OGRhYzAyZGFiOTAzODNjYzcwZDQ3NjlhZjc3ZDQzNjAgaW8tYworNzAwNzAgMGFkM2RlMjE2ZTgzZTQzZmZlYTVmYTdlNjMwZmM2Y2M3MjQ2NWFjOCBpby1jCis3MDA3MSBlZjhmZTkwODg2OTY4YjFlYjQ2OGNiOTFlYmFlMTAzZjc3M2ZhMTdmIGxlZ2FjeS10cnVuaworNzAwNzIgNzVmZjY2OWJmOTk2ZGVhOWYwZTNiY2I4NmE1NDQzNmRiY2YzZjJkZiBweTNrCis3MDA3MyBiNDIxNDQxZWU2NzljNWU4YzNiMTI3NGU1ZjEyMTFjNjhjNjUxNDU2IHJlbGVhc2UzMC1tYWludAorNzAwNzQgZTQyODdkOGM5NzQxN2FlNTI2MGJjYzkyNWJhYWE0NzAzYmQ3YTU1YiBpby1jCis3MDA3NSA5ZjMwMDM2MTI0ZjY3OGEwMzZlMGEwMWMwMzhhN2QxOGRiZDdkZWZjIGlvLWMKKzcwMDc2IGUxY2U2NjZkNzQwNWE2MzdlNDA4NWExMTc0ZGIxMmY3NzE2MGNmMWMgcHkzaworNzAwNzcgZmMyYTZmNmQzNmFjYTUxZTVjMjYyNWFjZTUyOTM4NmY0MWU5OTg4YyBweTNrCis3MDA3OCBkNzA3NzNjOWFkYWQyZDFhNzkwYTJiNDQzMDRkMTU1Y2I1NjQwNzcwIGxlZ2FjeS10cnVuaworNzAwNzkgNWRmNjZkZmE2ZjY0YWM2NmIyM2E5N2IyZDEyZmNlOWVmN2IxYWIxNyBweTNrCis3MDA4MCAyYTQ1ODEwNmFmYmZlMzViOTZmMzgwYTEzMDJkMDBkZTAwNTFhMDcyIHJlbGVhc2UyNi1tYWludAorNzAwODEgMmM1OTAzYTAyYjM2M2EzOGUzYzgwNDk4ZTZiOThjMjAyOWJhMTU3OSBsZWdhY3ktdHJ1bmsKKzcwMDgyIDYxMmZjNmVlNjhmNzQ1MTg1OTk5ZWY3YWMwMzczNDNlOGFkZTVlMmQgcmVsZWFzZTI2LW1haW50Cis3MDA4MyBiNzYzMmRmMTEyMWZiNzIzNWZmYjMzZDRlMGExODZkMWE2NTQ3YzZiIHJlbGVhc2UzMC1tYWludAorNzAwODQgNmZkMjMxOTE3ZWY3YzIzMWUzOGI0YjM0YWU2NGZjNGU0YmUzZWRkYSBweTNrCis3MDA4NiBhNmMyNGFhY2U4Y2JkNzQxMzJlNmRjNTM1OGVmNjU3MjhmMmZiZWM2IGxlZ2FjeS10cnVuaworNzAwODcgMmNlYjJhNzY4ODBkNWZmMzE0MGI5NWZjMTEyMGNhNjk4NjU3NzQ4NiByZWxlYXNlMjYtbWFpbnQKKzcwMDg4IGFkYzliYjQ0ZWM0NzEwMWRmMTk4ZGFhYzdlMGIzMmQxNDRhYmNlOTcgbGVnYWN5LXRydW5rCis3MDA4OSA5OTE5YzFmNDc5NWVmODUxOWNiNzRiYTk4ZTU3ZDYzYTAyMThmNzE3IHB5M2sKKzcwMDkwIDhmNWQ4ZjI3YzZmY2RjOWRiNTA1MDkyNzc3NzAxNmNmNWQ0ZWExMmMgbGVnYWN5LXRydW5rCis3MDA5MSBkY2QzYmMyZTIzNzczYzAwZDhkY2RiNDdmYzY1Yjk4ODMzZTViYWM1IHB5M2sKKzcwMDkyIDYwZmNmZDEzN2E3MjkyY2YyZmViZGI2NjY1ZmE1ZDQzN2U1YzM4MmYgcmVsZWFzZTI2LW1haW50Cis3MDA5MyAwOGE0YTNmOWM1MGU5YzAxNTVkOTg2YjRmNWYwZDdmOWM0YTM0Yjg3IHJlbGVhc2UzMC1tYWludAorNzAwOTQgMGI5N2ZmYjgxMWEwMTIxMmE3NTQ4NDQwYmU5YzMyNTk0ODQxYjA5NSBsZWdhY3ktdHJ1bmsKKzcwMDk1IDE5YzFhMWNlYjEyOTU1OWVjMzY0YTRmNTg2ODg5MjBkOWVmYTlmMzggcmVsZWFzZTI2LW1haW50Cis3MDA5NiBjMmE4YTUyYjgxMWRjOGM1ZDk4OGI3YWM2NzZkOTFiYmM0MjI1MWM0IHB5M2sKKzcwMDk3IGRlMTEzYjZkMjZkMzI3NDAxYzM4NzgyY2NjYzhhNTNmOGVjOGY0MWIgcmVsZWFzZTMwLW1haW50Cis3MDA5OCBkNWYxMzRhM2E4MTZjNzA5MzFmMTU2YzI3MDc5YjcwYTMyZmFiOTZmIHB5M2sKKzcwMDk5IDhlMDNiZmU3ZWYzMzFhOWEzOTQ0MjhjN2YzYjg0MjgzMDNhMzA3NWIgcHkzaworNzAxMDEgYzkxMGY2ZTNiYjI4NzE5ODFjYmEzOGI0MjU5MDI5NDY3MWQ4MGMyMyBweTNrCis3MDEwMiBjYTg3YzQ3MDdiZmRkZDg3MzkwZWExODBlYzNiZDIwNzYwYmM5YWE1IHB5M2sKKzcwMTA0IDg1YWNhNDNkYWJjNDkzMDMyY2M5NDI0NTU2MjRjZDRiOGI3ZjJhMzkgcHkzaworNzAxMDUgZDUxM2NlMjkxZmJkMjJmYTg2YmIxYThiMWU4NjkxMzVlNTI3OGJjOCBweTNrCis3MDEwNiBkYjI5YTNmYmNiYTBmZGZmZDk1YWVhOTg0ZmFjYjAyNDk2MWVlNjJjIHB5M2sKKzcwMTA3IDg3MTE1YzcyNzEwMmI0MjA1NjJjZGJlOGE4NzRhZGMwNGM2MTU1YmYgbGVnYWN5LXRydW5rCis3MDEwOCAyZDY5ZDBkM2E5Y2E1ZTNmMDY0OTE1ODY1MDRiYjE4MDcyOTgyMTFhIHJlbGVhc2UyNi1tYWludAorNzAxMDkgOWM1NmViMTdmMzM0ZmNmOTU4ZjQ2ZjBhZDZjNDk2ZTEzZTMzZThhMSBweTNrCis3MDExMCA0ZGE1ZjBkZWQzNjIyZTEyZTE2YjlhYjhmYTY0YWM5ODAwY2M2OWM1IHJlbGVhc2UzMC1tYWludAorNzAxMTEgMTE2ZDkwZWYzMTY0OTQ5NDk5NDI1YmI4YzM1NjA3MTQ1ZTJmNzJhNSBweTNrCis3MDExMiAzNzRhOWFlNWRkMGY0MmE0YzQ0NmNjZjVkMjk5Yjg4ODMyYmY2OTM2IGlvLWMKKzcwMTEzIDhmZTI5ODhjZjU1MDkyYzgzMmE4MGRlYmJmY2VlZDgwYzlmMzhhNjUgcHkzaworNzAxMTQgN2IxNzQxZDY4MDllODk2M2I1YTg4ODhhNzI4Y2ExYmZlZjY5OWMzNCBweTNrCis3MDExNSAwNDU4NzMwZWIwMzhiOTdmZjYyOGNjNjVkYzY0MWE1YzcyNmIwNTA0IGlvLWMKKzcwMTE2IDE3ZWExOGRmY2FhNTVkMmZhNmNlNDU4MDA5NzZhYjEzMzMxMWQwOTcgcHkzaworNzAxMTcgZDM0MmE3MjViMmQ1ODk4YmUzNWI3NTU0OGVmYzkxMDFiN2M1ZWZmZiBweTNrCis3MDExOCAwMzgzMjM1NmMwOTY3NDQ4ZTE4OTgxNjI4OTgyNjhlMTA5NWY4NzUzIHB5M2sKKzcwMTE5IDZjMDhiZmU3OGZmZmViMmI2NTQ3YWY0ODU5MmEzYzAzZThjYWNhZjAgbGVnYWN5LXRydW5rCis3MDEyMCA0YTRkYTk2OGRlMmE5OGM4NzU2ZjllYTJhOTQ5ZmQzNWYwMzNmN2ZmIGxlZ2FjeS10cnVuaworNzAxMjEgMGM2MzU1NzRiMTM5ZTBjY2RhMjgzMjkzODkyOTA3ZjUxYWZiODE2NCBsZWdhY3ktdHJ1bmsKKzcwMTIyIDZiMWIyZTdhMDZlOTdkNTlmNGNlM2ViNmVlMjZkNGZhYTI4ODVmZDggbGVnYWN5LXRydW5rCis3MDEyMyBiMzczYjk5NjJjMzVhYzJkNDA0NTFiMzg4NGFjMmEyYTdjM2E0YTk3IGxlZ2FjeS10cnVuaworNzAxMjQgNGQwNzhkNTIyZjI1OTc1MmQ3YTYxNzI3YWM4Y2NjODBiOWQ4NzJkZCBweTNrCis3MDEyNSBmZDA4ZTk0NDlhNDM4ODNkNGQ0ZDBjNjUwMDczYmM2NmJhYmQ0NThmIHB5M2sKKzcwMTI2IDhmN2JlNDg3N2E2MDZmMDBhOTVhNWZkNTM5MTU5ZjMxYzIzOTdkMzYgbGVnYWN5LXRydW5rCis3MDEyNyBlOGFmNGUyNGYwOGY4ZDRkNmY1ZmNhZmEyMjdjYmU3N2ViNTNkNTU4IHB5M2sKKzcwMTI4IDI1OTZkZGRiZDA1N2I3ZGYwMmY1ZjA3MzkyODVlMDI2NzQ4ODExMTAgcHkzaworNzAxMjkgNWFkODhiOTE5MzE4YTU0NTM1MzhmN2JmOWJiN2UyZGY4NjIzZGE1OSBweTNrCis3MDEzMCAwYTYwOWJhNTRmNWM2NTk0NWM0Zjk5Zjg2NGU3YmZlOTExMTkzYTFjIHB5M2sKKzcwMTMxIDk4MjUwMjgyNmY3ODk4NzY2ZTI5ZGRlNjA1Y2UzNDFiMzkxMDViOTUgbGVnYWN5LXRydW5rCis3MDEzMiBhZTcxZGY5Mzk0ZGFjOGJjZDAyMTVlMDYwNGU2NjBhN2ZhNTRlZDM2IGxlZ2FjeS10cnVuaworNzAxMzMgMTE3NzI1ODZiYzQzOTdlZDY4NWVmNGNlYWVhYmNlOGU2ZjIyMThkMCBpby1jCis3MDEzNCA3MzhmYWQzOGE0YmZlNWI2MmNhYzgxODc5MTM5YzBhZjg5YTM5OWI2IHB5M2sKKzcwMTM1IDViNGU4ZjRlOWNiZDYyZTk4ZDVjZGQ0ZGNmZDZmODE5NGQ1NzFmMWUgaW8tYworNzAxMzYgNjFkMjBlOTE5YTllNjZmOTUzMzUyYjRhZjJlYjZmMjJlNmMyNTVjMiBsZWdhY3ktdHJ1bmsKKzcwMTM3IDgwMjMzZGYyNGY4Y2FkNWFiMmVlYmVkNDI0YTIxZGU1OTQ2NGFhZTIgbGVnYWN5LXRydW5rCis3MDEzOCA5MjBhNDFkNTgxYjU5ZWVmMzQzNzZkMGJhNzVhN2VkYmRiZjU4ZjViIHB5M2sKKzcwMTM5IGU2NzNmOTM5MjQwMmQ3NTU0Nzc2N2JlNDJiYjZiNzU0ZTU5N2Q0YjYgcHkzaworNzAxNDAgYzk2ZTFhYjRkYWIzYWEwNTM4N2M1Yjk5ODc3ZWZjNzlkYjg1MzkzMiBpby1jCis3MDE0MSAzOGFhNmYzNmNlNGZjMTAxYzFjMDljNzg2YmZjZWUyMDM4NjQwZTM2IHB5M2sKKzcwMTQyIGQ3NzE3MmViNmZlNzg5ZDMzYjkxNWMzZWEyZGZkZTM4ODEwYTliOGUgcHkzaworNzAxNDMgM2I4ODViOTJhZjZjZGNkNDE4MjRmOTY1OTJhMDU3OWQ4OWZiZjM5OCBweTNrCis3MDE0NCA3N2VmYmIzYzMxMTBjMDI5Nzc0ZjdmZDdjZWNlZjNjZjk4ZDdhMjdkIHB5M2sKKzcwMTQ1IDAxZjgzYmI0YTFjNGQyYmY5NzZjZTEyNjRlNWY4ZTNjNTVkNTZkYTUgbGVnYWN5LXRydW5rCis3MDE0NiBmNjMyYTRlNmVlMzE0MmNmZGFiNzIwYWI1OGUzNjJjYWY0M2Q0YzVkIHJlbGVhc2UzMC1tYWludAorNzAxNDcgNzExMTg0NWMyZjVlM2EyMmU1MTkwZDI4NGY2MDhmYmNlNWQ1MjNiNyByZWxlYXNlMjYtbWFpbnQKKzcwMTQ4IDdkNjkwNzBhM2Q3ODNkZWIwZjEyNDAxZTBlNThjYjYwMmVhZjhlMWYgcHkzaworNzAxNDkgNzc4NTk5Y2U4MWExNGM2OGE2YzdkYmQ5NWJiMGU3OGY2YTM4Yzc4OSBsZWdhY3ktdHJ1bmsKKzcwMTUwIDhhM2RhZGNjZDIwNzUzYWFhNDg1N2RlZjIzNjMzODNmMjJkZGY5MTAgcHkzaworNzAxNTEgNzFkYWUyMmUxODFkOTgzZTI5NGNhY2Y4YjI4Yzc5YmI2MGRiOTA0MyBweTNrCis3MDE1MiAzMDQ5YWMxN2UyNTZiYjMwYjc5ZjExMzRhMzdiNjU3ZTMwZDNiNzhiIHB5M2sKKzcwMTUzIDU4ZGI0ZGViN2FiMTZkNzdkYTA5YjIwNTQ0MjViMWVlYjg0MWRkYTkgbGVnYWN5LXRydW5rCis3MDE1NCBlYmUxMDgxMGViZWRlY2JmZmVjNzk2OGNlZWY5MWVkZmM5NjY4NTMxIHB5M2sKKzcwMTU1IDAxNTlhYzJiYzc4N2M0OTk4MzVkZDc4NDMwZDM3NjI2MDA3NzJiYzUgcHkzaworNzAxNTYgZTM3YmIzMDI1NWYzMTE3MzYwMzk5Y2M0MGJhYmNhN2Y3MmE3ZTNlYyBweTNrCis3MDE1NyA0NTYzZTYxMjA1NDRjMDc4MWY4ZWY0OWI2ZjAxNDhjMjViNTY4NTIzIHB5M2sKKzcwMTU4IDE5NGZkNDAxOTIyZTYwN2RiOTExNzhjNzY5NjM2OTcwYjlkMjZmYTMgcmVsZWFzZTMwLW1haW50Cis3MDE1OSBmODY3MGE3ZGEyMjk2YjAwYmU5YTVkN2E3OTY4NTkxMjEyY2RhOGJlIHB5M2sKKzcwMTYwIDc2OGFlZWEyYmMwZmRiYTM3M2QwNTFlM2Y0OTY5M2UyMGNmYmRjZjEgcHkzaworNzAxNjEgNTVmM2I4ODFjZWQyNjM3MWM2OTVmZTBjNTU5NzZiZTJkYjAzYmVkOCBweTNrCis3MDE2MiAwYTUzM2RjMWRlYjIyNzcyNDllMWFjYjRiYzQxMzRhYTdmNWI4NDg0IHB5M2sKKzcwMTYzIDc2YTU3OWI2YmFkZTk1ZDFlYTE5NGQ0ZjU4YTgyODIwN2ZmYmRlOTUgcHkzaworNzAxNjYgMGMwMjg2ODViNDRjM2JiNGExMGIxNjEyZWMwYjA4OTA2MDVmYmM5YyBsZWdhY3ktdHJ1bmsKKzcwMTY3IDI0MDIzMWFjNzljZmQwMTcxZDA4NzU4MjZmMDZjMjcyZjdjMWMwZGQgbGVnYWN5LXRydW5rCis3MDE2OCBlYjJjMzVkZDIyNWFiMzQ0Mzk4MmQ5MjY3ZWM4MDZiOTQ4NTdlYmEwIHJlbGVhc2UyNi1tYWludAorNzAxNjkgZmE5Y2M0ZDQxODVmN2ZkMmM5ZDEyNDlkZjA3ZjNkZWJhYTM1YzFiZCBsZWdhY3ktdHJ1bmsKKzcwMTcwIGNlMmI3NTlkYzdmMzVmMTZmYjZkMjRlODM0N2ExYTlhZmJiYzI3NmEgcmVsZWFzZTI2LW1haW50Cis3MDE3MSA0ZDBkNjE1ZDM3ODRjMmQxODQ3YzQzNWQ0MjIxNzhjNzNhMDRjOTZhIGxlZ2FjeS10cnVuaworNzAxNzIgMjYyOWM0N2ZhNmJjZTRmNDg3Y2MzODc4MDdhZmFhYTEyOGIwYjFkOSBsZWdhY3ktdHJ1bmsKKzcwMTczIGM4YThlYzg3ZmYxZjJmM2UzMjcyMmMxMDBlNDM1NzNkYTQzYmE3MzEgcmVsZWFzZTI2LW1haW50Cis3MDE3NCA0MWU0MDcyODY2MTA1ZDc5NDk5MGZiODUzOTYzZTQ0NTExOTE4YzI3IHB5M2sKKzcwMTc1IDMwZWVhZGM0NjUyMGZiZTQ2NmFmNjRmZjM3YzE1NjIzYjNiZjVjYjEgcmVsZWFzZTMwLW1haW50Cis3MDE3NiAzOWU5YTIwYjdkN2Y1MDU0ZWJlZDljYjI0NDlhNjFmNWFiZjZkZWVlIGxlZ2FjeS10cnVuaworNzAxNzcgZGMzZDI0ODI0YjYwMjdhN2NmMzc1N2EyZjZiODk5ZjJlNGI0YmYzMyByZWxlYXNlMjYtbWFpbnQKKzcwMTc4IDI3NjI0NGZmY2FlZWUxY2ZhNDYyYWE1MGZlZmRkZmY1ZjY2YmU4OGYgbGVnYWN5LXRydW5rCis3MDE3OSA1ZjI0NWM3MDBiYmIxNTBhNWFhYjUyY2E0YmZkYmUxNmI1Y2Q2YWNlIHB5M2sKKzcwMTgwIDRiNTQzMWZiMmU5MjAyMWRiOGQ0Mjg2NGUyMTA5YjA2MjlhMzE3OTQgcmVsZWFzZTMwLW1haW50Cis3MDE4MSBmYmM3NzU5NzYzYjJjOGMwYmQ2NzM3YTFkMzRjYTFiMTA5NzBlYzFlIHB5M2sKKzcwMTgyIGVlYWE4N2ZjM2JmZDBjYjc1Yzc3ZTlmZTMyNjE1MDRmYjEyNmY5MDAgcmVsZWFzZTMwLW1haW50Cis3MDE4MyA3NTc5MjkyOGZjZTg5YmNhMWU4YzUwMWRjYTc3MzcwYTRlZjlhMWYxIGxlZ2FjeS10cnVuaworNzAxODQgMzNlOWExNDVmZDM4MzU3ZWQ0MmE1MmViZjUwY2IyZTk5YTYzZDg2MCBweTNrCis3MDE4NSA5OWI2OGQ3ZDdhODkyZjI5OWEyMDY0MWJkYzczNDdiMDI4NzM4NDk4IHB5M2sKKzcwMTg2IGZkZGVlNTQ1NjAxM2FjMDFlNWZmNTlmYjZlZjVlZjkwOTFlYWU5OTggcHkzaworNzAxODcgMWZjMWM0MWQxMzZmNGJjZDg5NmZhMGNhYzViMjMzNzc1ZWVjNmQ1ZCBweTNrCis3MDE4OCBmNDhhZjc3ZWU4NGUyMDgyOGJkNTNiNjZhMmFiMGY1N2NmNGQxZmYzIGxlZ2FjeS10cnVuaworNzAxODkgNzllYTA2Njc2MDRiMzcyMmYyZDJjZDE2YTBmMDk5NjFmZjc4MDJkOCBsZWdhY3ktdHJ1bmsKKzcwMTkwIGNkZDNmNjBkOTk3NGY0NDc2OWNmNzlkYzU5NzRhOThiYWQzMTZkYWMgcmVsZWFzZTI2LW1haW50Cis3MDE5MSAyNzViYmVlMTQ2YWIwNWJmNDg3ZjA5YjRhY2IzNDE5YzZhZjMzNzkxIHB5M2sKKzcwMTkyIGE4YjlhYTAyODg5OWJlOTU5MGJhMGIwZjgzN2UyMTRmYmM0YTkwNjEgcmVsZWFzZTMwLW1haW50Cis3MDE5MyA5Y2QzNTVhNzk4NDU2ZjgwODM3YmQ4NGI0MzMyODg0ZmUzZmQ1ZjgyIGxlZ2FjeS10cnVuaworNzAxOTQgZDAxZGM4NDdiNTg2MjFjMmU1NDVkOWNjNzQ0MzIxOWY5OGQxNjg2MyByZWxlYXNlMjYtbWFpbnQKKzcwMTk1IDdiMjc5Njc4YTZhMWRiNDRhMDc4YTgzYjQ0NWY5ZGYzMTcyMDQ3NTQgcHkzaworNzAxOTYgMjY5ODQ0NTBjN2U5YTgxODlhOGJlZjA3MTBlOTc5NTRkMDBjMDljNCByZWxlYXNlMzAtbWFpbnQKKzcwMTk3IGFmZWZiNzcxNjRhZDNiZjJkYzE3NGUwN2Y2ZDBhOWUxOTRiNzA3ODIgbGVnYWN5LXRydW5rCis3MDE5OCA3NzU4MjljZjAwZDJhYmVjNGI0Y2RiNTYxOTUyMzE0NzIwZGM0Y2E4IHB5M2sKKzcwMTk5IDhkYmQxYjk2ZmE2YjY5MGZkN2RjMzkxNWQxMGJlMmI1Zjc5MTc1ZDkgcmVsZWFzZTI1LW1haW50Cis3MDIwMCBjNzcyMzYyNmU0ZTEwNjgwODM3YTYzY2UyNGMwODBkZjJlM2Y0NGM1IHJlbGVhc2UyNS1tYWludAorNzAyMDEgMWY5ZGU1Mzk4M2MxNTUxMzE4MGUxMzQ2NzU3MmU0NjVhMWUzYmQ2OCBweTNrCis3MDIwMiBiZWJjNGVlZjllODkzYzQwMTkyYzhhZWEyZWRjODk2NmExNzlkMWQ1IHB5M2sKKzcwMjAzIDlmYTc5NDk2NDFkMzAwOWJiNjE5ODVhYmVjZmU5MmIzYWI0N2YwNjcgcHkzaworNzAyMDQgNGEzYjQ0YzIxYjRmM2RhN2M4MmQ1YjUzMjFmYTU2YTMxODZmYThkZiByZWxlYXNlMzAtbWFpbnQKKzcwMjA1IDNiOWY1ZmE4YmNjZDkxZDJkM2QyMWE0YzdlMTYzYmMwM2NhNTgwNDkgcHkzaworNzAyMDcgY2FiYjBkZGNiODhlNGE3ZTMxMGVmYTQ2ZTQ3ZGQxMjIzNTMyYWQ2NyByZWxlYXNlMzAtbWFpbnQKKzcwMjA4IDBmNmY3ODdmMTAzYjI4YjQzMjM1ODZkMTczNDQ2MTQzNjI4MzExMzYgcHkzaworNzAyMDkgYWVmNWNmZTczMzU4ZDQ4ZmZkYWQ5MjJiMzFiMDBjMGFmODcyODZlNyBweTNrCis3MDIxMCBmNWI4MWJlNTkxNTk0NmUzZjkyMjRkNmQ5YmI2YWJhYzk1ZWRmN2FlIHB5M2sKKzcwMjExIDkwYTY2OTE1Y2E5MTk3MDBhMjQ5OTVhNjYwYzY2MDllZjc2ZjJmZWMgcHkzaworNzAyMTIgNDY1MGVjZGZjZmI2NDIzN2QyOWMyMjkyNDM4MzJkNGJlODEyOWRkMyBsZWdhY3ktdHJ1bmsKKzcwMjEzIDJiMmI1MWYzMDQwNzk5NzdmYTE4OTVlNzIzMGM4YjdkYzBiMDIxMzYgcmVsZWFzZTI2LW1haW50Cis3MDIxNCBmY2M2MjExZTBkNzEwNWUzZjdiYjkzY2E3YTE2ZjE5NzdhYjQxNWE4IHB5M2sKKzcwMjE1IDZmMGQyMTEzZGQyMjI2MDBlZjkwZmU0NDU4ZWRjMmZkZjhjMDFmOTUgcmVsZWFzZTMwLW1haW50Cis3MDIxNiBhOTlmYTc2NzEzZmM2Njg5Y2VjMDY1NDU2OTIzMmNkNWMyOTlkYjNmIHB5M2sKKzcwMjE3IGJiYmM5NzQ2YzcwZGM0MDZiOWUwOGVlM2E3MDU1MmY4Y2NkMWQ4YzIgcmVsZWFzZTMwLW1haW50Cis3MDIxOCA0MzNlMTE2YzMzNWRiYjJlY2M4NjMwNTA1OWE5NjhjODkyNjIwNGQxIGxlZ2FjeS10cnVuaworNzAyMTkgMTE0ODUwZjczZTNhNWViZTcxNWUyNWZmMmUxYTE1N2E5NTY1ZGI1ZiBsZWdhY3ktdHJ1bmsKKzcwMjIwIDRlNzQ0OTM0OGMxYTRkNWRlMTEzNmQ4NGJkMThiNWM1MjdlZTkyOWQgcmVsZWFzZTI2LW1haW50Cis3MDIyMSAwM2M4MGUwNzQyYzM0NDA4YjAxZjUxOTVjMzRlOTI2Nzk3OGI0YmUzIHB5M2sKKzcwMjIyIDEwNjY3NzZlMjgyMDM2MjRjYzE5MmQxMzcyOTk3OWI4YmUyNjVjYTQgcmVsZWFzZTMwLW1haW50Cis3MDIyMyBjNzllYzYzZTZjMDhlZDNlOTQ2YTM0MmRiZTEyNjk0OGQ1MDMwMzY0IGxlZ2FjeS10cnVuaworNzAyMjQgYjljZDY5MzkyNjY2N2QxODY0ZDllMmU3N2JjYmQxMDM5N2VkNmMyYSByZWxlYXNlMjYtbWFpbnQKKzcwMjI1IDZkYmIyYzFjMDkwMDlkNjYyMjBlZTZkMjAzOTIwYWM2MzBkN2RiMGUgcHkzaworNzAyMjYgZjUxNDVhYmQ0YmEyNmIxMGE5OGNkNjIxMzg2OGY0ZDNlZTNmYTUyNiByZWxlYXNlMzAtbWFpbnQKKzcwMjI3IGU5ZTQ2YWRlNjFjNzg2ODQ5N2QzZmYyODdmNTA0Y2FlMzc2ZjAxZDIgcHkzaworNzAyMjggYTVlMzJjMDZlMTRiMTI4N2M4ZWM2OTI0NmE1OTdkNWE2ZmFhZmFjZiByZWxlYXNlMzAtbWFpbnQKKzcwMjI5IGE4OWZkYmIyM2E0YTc4NTZjN2M2ZDIyM2Y4OGJmZjBhZjlhMWEzZDAgcHkzaworNzAyMzAgYmMxY2UzNjg5ODZlNDViMWZhZjk2ZjkzOTk1ZGY0NmJjZDc1ZTdiOCBweTNrCis3MDIzMSAzNmQ3ZmFhNWZmOTYxNGU2MjdkZjBiZGQ1YzY3YzhkYmYxNzU4MDQ1IHB5M2sKKzcwMjMyIGFiYTQ0MDRmNWQ5ZmY1MTllZWQ5YmYzMGEwZTcxNmYxNjEwOTUyYjUgcHkzaworNzAyMzMgYmZjMmZhNGM4NDQ0OWI2MWQ5ZGIxYTM3ZmI2Yjc3NDNiYTU4NzMwNCBweTNrCis3MDIzNCBmN2IwNmE5NjU5Yjg1MzA1YTgxYWIzMDU4YmRkZmJlZGQ1NGQ4ZmM5IHB5M2sKKzcwMjM1IDQzNzA0NGU2MmQzZDNiZDQ5NDY1MjQzMGE1MGY2OTk3YWMwODlhMWMgbGVnYWN5LXRydW5rCis3MDI0NCA5ZjJmODZkZjViMjY0OGNhNjlhMWI3NTlhZmQ3OGY5YzlkNjI4ODYyIGxlZ2FjeS10cnVuaworNzAyNDUgNTY5ODNjZmRmNWQ0ZTJlOGQ5OGRhZTJhMDhjYTE1ZGMzNjg3M2RkNiBweTNrCis3MDI0NiBkY2UyOGM2YjllODVhMjhkOGRhMmM5ZTBhOGQ2YTk3MDBiMDkxMDM5IHB5M2sKKzcwMjQ3IDIwMzNkNDVhNWI5OTY4MWUxNDBkZmEzYzQxNGE0OTQxMDQyYWNhOGUgcHkzaworNzAyNDggODk1ZjY4ZWNiMDU1YzNmMTU2NjU2MDBhNTMxOTQ1YzA3YzU0Y2VmZCBweTNrCis3MDI0OSA4MzZlNGRhZGY2ZDJjYzY1YjhkMGY0NTZlOTQyYjExNTEzNDkyZmIxIHB5M2sKKzcwMjUxIDEwNDVmZDYzZmE3MzM1ZmY5MTVjNTZkYjg1NDVhNmM4ZTQzZWIyMWQgcHkzaworNzAyNTIgY2YwOTNhNzYzMDUzM2NmYmRhNDc4Y2ZlZTc1MmIxZWU1MzYxZTI2YiBweTNrCis3MDI1MyA2NTM3MWRmNDFhY2E2MjQxZWU4ODEzMDU0YjBiN2U2YzQ1OTg3MWZjIHB5M2sKKzcwMjU0IDU1NDA3NDlhMjliYjg3MzA2YWM1ZjkzZjg4Yzk2NGFhZTMyMTUwMmUgcHkzaworNzAyNTUgNzBkZWNiNTgwZGQ5MWYwY2E3M2RmMTJhNmUwNDY5NmVjNGE0MjY1ZiBweTNrCis3MDI1NiBjMDZmMDJhNWU5NjI3YjE5MDg1ZjY2M2U1MTg5ODg0ZjUwNTc1MjQ2IHB5M2sKKzcwMjU5IGJjMDJkZTI3ODc0OTAzYWJkOTMwYTQ0MTZjZWYwMDZlMmMzOWIxMWEgcHkzaworNzAyNjAgYjliZDJlM2Y3OWJhOGE2NTg1Mjk5NjYyYTU0N2QwNTZmZWVhNmIwZiBweTNrCis3MDI2MSA1OTgyNTNkYjFmNWQxMTJjMzgyM2U4NGUwYmRkMzI1YmFhNWFiZDYyIGxlZ2FjeS10cnVuaworNzAyNjIgNGQ3ZjYzYWM5ZDI0NjU4ODhhZWRlYzQ2MDllNjY5MDdmYTVlMjFiMiBweTNrCis3MDI2MyBiMWVjZmY1ZTI3MDQwNDIyYzM2YTY5OTgyMjU3MDQ2OTJlOTFiYWRmIHJlbGVhc2UyNi1tYWludAorNzAyNjQgNTAzOTc2Y2UzMzczZTU4OWJjMTBiY2EwMzgyNjBlN2M0OTFkMTQyMSByZWxlYXNlMzAtbWFpbnQKKzcwMjY1IGY0NjdkNDdmNmRlNTJhZGY2M2ZkNGQxZDIxNWFiMmFhYmY2ZWM2NGYgcHkzaworNzAyNjYgN2ZjYjc4NWVjMGY1MjdkNDhiMjBkY2IxOGRhNWVhOTFkMmNlZjUwZiByZWxlYXNlMzAtbWFpbnQKKzcwMjY3IDk3YWM4M2U0NTI3MDYxYjkxY2EwYzdkZmRhNzY1NjA0OGQzNzJhMzAgbGVnYWN5LXRydW5rCis3MDI2OCA1NDU3ZTQ2ZDlkZmQ0NjI5YTY4MTU1N2QwNjljM2FhYTM2NzFkMTg1IHJlbGVhc2UyNi1tYWludAorNzAyNjkgYzE1NDIzZjlmYWMzNTBmMzkyOGExNjliOGYwMDVlNzM1MGM0MTkyMCBweTNrCis3MDI3MCAzZTY3NmJmMjgzMTAzZWUwMTZmN2M5ODE4MzdlNjliNmRhZTQyMzU3IHJlbGVhc2UzMC1tYWludAorNzAyNzEgNjM0NTZkMmJmNWEwODkxN2M5MTFjMzk2MWE0NjE1NmU3MjliNjEwZCBsZWdhY3ktdHJ1bmsKKzcwMjcyIDVjOTFhNmUxODU2NGYwNGYzMzRkNmIxNmU3MGRhZjdmMzk2MjYzMjggcmVsZWFzZTI2LW1haW50Cis3MDI3MyBiY2ZiN2Q2NzkxNjE1OWJjZmE0NTc1MmE0NGY2ZWJjYTNjMTA3ZjE1IGxlZ2FjeS10cnVuaworNzAyNzQgN2Y3MDc0OTI4YzY4MTQyZDgwNTI2NzQ1YjlhNTVmN2I1NzkwZWQ4MyBweTNrCis3MDI3NSAxYTgzOTFjYzRiNDRjZDY2ZWE5ODQyNTVhMWIwYmExYTUzMWQ5M2E4IGxlZ2FjeS10cnVuaworNzAyODAgNzlmZTA3ZTEzMzg4ZWM3YTg0OGNhMjJlNDNmNTVlNTI3OWU2YjNhZCBweTNrCis3MDI4MSA0MjU1M2UzNWY4ZTRiNDk2NjViOWIwNGUxZWU4Njg0ZWU5MDczZTBlIGxlZ2FjeS10cnVuaworNzAyODIgM2I0MzU3N2UxOTcxYzhjMTM4MGFmMGNiMmExN2IzOWFkZjljN2E0MiBweTNrCis3MDI4MyA3Y2JkNDRjMjAzY2Y5NWNhYTc2MDRiZmZjNTQ1YzJlZWI5YjcxMDdhIHB5M2sKKzcwMjg0IDhlZDNjYmFjMTZiZjU2NTNmYTQyYzMyMjhiNzlhYTljNGQ3ZGE5ZmMgcmVsZWFzZTMwLW1haW50Cis3MDI4NSBkYWI0NTk3MWM1Njg4NDFkMjM4NTA4NzZhZjQxZjQxMGU4ODIwYzBlIHJlbGVhc2UzMC1tYWludAorNzAyODYgZjgwNGI4YTI1MTE1ZTdiMjFlYTMxNDAzZjNmYTAzNjkwYWY3YTQzYiBsZWdhY3ktdHJ1bmsKKzcwMjg3IGFlMzAwNmM3ZDViMDE5OWM1NmY4MGU2NGU0NmU3MWFiN2Q1ZGNiZmQgcHkzaworNzAyODggODlkOGFmMjU5MzUzMjc0ZTc3MDEwMTliZGE5NTEwNmNmMTk2MTAzOCByZWxlYXNlMzAtbWFpbnQKKzcwMjg5IDU2M2I0Zjg4M2VkODhiMTY2Mjc4N2NiOTEwNWQwYzQyMzdhZWRjOWQgcmVsZWFzZTI2LW1haW50Cis3MDI5MCA1NGNmYWNhYzZkMGExNTVkMThlZDhmYzYzYWU4NDdjNDNkNzc0MTNmIGxlZ2FjeS10cnVuaworNzAyOTEgMDMwODBmYTA4ZGZlN2NjZGYxNWJjZTE1YjRjNzBiZGMxNDZkZmMzMCBweTNrCis3MDI5MiA1YmM5ZjZjYzU2MWUwNDE3YTQzMzg0OWY0NTBhZWEzZDg3ODU3OWMzIGxlZ2FjeS10cnVuaworNzAyOTMgNGZkZGNkNGU4ZWI1MTk4NjNjYTBhNjRhMzM0ZDM1MTEyYjJlYjU2NyBsZWdhY3ktdHJ1bmsKKzcwMjk0IGFmZDcxMThjOGNjZmI0MGNhNTZlN2QzZjExNWIwYjRjYWRiYzQ2MWUgcHkzaworNzAyOTUgZGNiZmZlOTE4YTZmOGVjNmVkN2ZhMTU4YWQ5Y2JjMjRhYjVhZTBmMiBsZWdhY3ktdHJ1bmsKKzcwMjk2IGFiN2E3MjE1ZTQ2MzY5NTBmMGFjZDg5OTlhM2M3NTk1M2ZiMTgxZmUgbGVnYWN5LXRydW5rCis3MDI5NyBjNWUyM2I5Y2VkY2M5OTc0MDM3NjgwNDNmNGRiNmY1NDkwYTQxNzU2IHB5M2sKKzcwMjk4IGIwOTExYjVhMDAyZWQ4NDFiNmNmMjVjZDgwNGU5ZTg0MmEwNThjMGUgbGVnYWN5LXRydW5rCis3MDI5OSAyMTg1MGQ2ZDViNGQ0MGE5NmVjMjg4ODYwNGFjZDM5OTgxYjhmZWU4IHB5M2sKKzcwMzAwIDAzODI5MDFjNmViZDI3OTQ2MTE3MzZhZmVjZjhhN2ExMzhjZjU5MWQgbGVnYWN5LXRydW5rCis3MDMwMSAzYzA0ZDM0YzA0OTcxN2NlOGJjZGU5YzNiNjdkOTM1NTVkYzQzNDM5IHJlbGVhc2UyNi1tYWludAorNzAzMDIgNDMyMmU2ZGQyYTZjOWVkNjQ4MmUxOTljNGFjMzM2ODBlM2Q4MzcwNiByZWxlYXNlMjYtbWFpbnQKKzcwMzAzIDBjN2RhYzdlMmZiMDgxMTJjMzcwMTc1ZDFmNzkzMGE1ZTI4MmRkNjIgcHkzaworNzAzMDUgYTYwZmFjYzlmN2NmNTU1YjI1NGMwY2Y3NTgyZmM1MDg5ZDMwNTczZiBsZWdhY3ktdHJ1bmsKKzcwMzA2IGY1MWEyOGIxMDQyNjUxNDUxMGUzM2U1YmRmYzUwMmFiMGJlZjM2OWQgcHkzaworNzAzMDcgY2JjYjIxNDFhZWU1OWU4NGI5N2RmOWZhOGVkYWY5ODM1MWM3MDNkMSBweTNrCis3MDMwOCAzZWNmNmMzY2M4MWUwZWI3ZmRmNDVmNDU2NTk3YTNkZmMzZDNiMzdlIGxlZ2FjeS10cnVuaworNzAzMDkgOGIwYjllZTU4ZjY3YjgxYWFiZWRjYWUzMTJkZjY1ODkxNjk4ODVhMiByZWxlYXNlMjYtbWFpbnQKKzcwMzEwIDQ4ZmU2MjMxNzFhNDBkNTNjNmYyNjE2NDVkMTUxZjdmNTQ3OTM1ZTIgcHkzaworNzAzMTEgODc1ODgxZmY2OWE0ZDU0OGFjYzk2Y2NlNzFkZGFiM2M4NTBmMmZlOCByZWxlYXNlMzAtbWFpbnQKKzcwMzE1IGJlYjc4ODI5MWM3YTE2YTZmMzc5ZWQ4ZWEyMDAwYzA4ZWU4NjJlYjUgbGVnYWN5LXRydW5rCis3MDMxNiA1ZGZjNDViZGE5NmQwOTUwY2UyNGQ5ZTZjYTk4NjIxNTUxMTJhZWRkIHB5M2sKKzcwMzE3IDM0MDBjYjEwZDljZjdkNDYxZWVmM2QxYThhZjA4ZmFiZjY3ZTdkZTMgcHkzaworNzAzMTggMWViNTdiZGRmYjM4YmU5ZDY5OThmZWUwYzk5NWU0NzIwZGJmOTgzYyByZWxlYXNlMzAtbWFpbnQKKzcwMzE5IDFkOGU0YmNlY2YyYWFhOTQxM2E2MzBhZDU3MTA5M2EwYmIzODRlYjQgbGVnYWN5LXRydW5rCis3MDMyMCBiZjY3ZTVhODkzZjhlYzBiNTQ2ZGEyNzExNTEwYTg2MDMyNTVmYTZjIHJlbGVhc2UyNi1tYWludAorNzAzMzEgNmIwMjRmZjViNThmNmIyZDJmNDcwZTFiZGIyZjc1NWJhMGE0Y2ZkNyBweTNrCis3MDMzMiAyZThlODk3YTEyNDQ3ZjFjMmFmNDNiZmU0NmE5MmMwMDdlMThlNmE5IHB5M2sKKzcwMzMzIDFhOGJiYzVmYjNlZmMyNWNjYmVhNzg0MDcyOTE0ZmEzNmFlYThkMmMgcHkzaworNzAzMzUgZjE4OGRkNjg2MjBlNmE0YWRiMTg1YWQ3MWFlMWEwMzJhNjhjZTI5OCBweTNrCis3MDMzNiAwNGE1YjY0Mzg1MjY0ZTk2MzhjM2UzYjQ0M2U5YzBjOGZiNzBhOTQ1IHB5M2sKKzcwMzQyIDBlODg1ODJhYTNjZTcwNGEyMDdkMjYzMjM4YTdlZTY3YzY3OWY5MzggbGVnYWN5LXRydW5rCis3MDM0MyBlNWU2NGEwYzRhYTJjMzFlNTM3ZmQxMzlmOWVmZGFmYmFlYWFlOGM4IHB5M2sKKzcwMzQ0IGIzNjNlMjk3NTZmZjI1ODYzYzk4OTcxZDliYmY1YTBiZTk2Mjg5OWUgcHkzaworNzAzNDYgNDgwNDgzYzNkOTNlMzEzOGY3MWUwN2E1YWNlYTc4YjlkZjg0NGUyMyByZWxlYXNlMjYtbWFpbnQKKzcwMzQ3IDIyNzQ3ZTg3NGY0NmI5MDUwNmM2ZGJkNjNmN2RjNTZkZWY2MzEzMWYgcmVsZWFzZTMwLW1haW50Cis3MDM0OCA2MzJhYTU2ODQ3NGM5ODRmMTI2ZjkwYzkzZGUwMzlhY2U0ZGQ4OGE5IHJlbGVhc2UyNi1tYWludAorNzAzNDkgOGIxMjhlMDVlYzc0NTU5ZDgyMTUwYTY4NWRhZTdhNThiMTQ4MDg1MSBweTNrCis3MDM1MCA3OTBjYjk4ZjhiNGZiZjA1ZDg4MmY1MzRkZjIwMDJjNDllZDZlNjI5IHJlbGVhc2UzMC1tYWludAorNzAzNTIgYTU5OTQ3NWI2OWMzMDA4MDFiYjlhMTgyZTFmNGNlYmRiZGM4YzgxNyBweTNrCis3MDM1MyAxZjhkMTFjZDQ2ODQyMDE5YTkyYjRlZTE5NDI5ZmE4MmNhNjhiMWM4IHJlbGVhc2UzMC1tYWludAorNzAzNTYgODYxY2Q0NmVlYWVlN2Y1MzZhNDI3NjM5YmRhZDIwN2RmZDg1MmFmYyBsZWdhY3ktdHJ1bmsKKzcwMzU3IGE0YzliMGIwYThlNGJkNzQ3Mjg4ZmZhMTY2NmM4YTdlY2E2MmFmYTYgcHkzaworNzAzNTggMzE2NTlmOTM3NjEzY2Y2NjNlYWZjMDcyMTBhMjY4YjA0NjVkODNjMyByZWxlYXNlMjYtbWFpbnQKKzcwMzU5IGYyN2NhYWNiNzQyNjc5ZTUwZGQ5MDY3OWJhN2Y3N2Y2OWRjMWYwNjAgcmVsZWFzZTMwLW1haW50Cis3MDM2NCAzZjE4ZDYwOWFjMWJkODcyMTlkZWZhNDhmZWJiZjhhZjE1ODVkNzI2IGxlZ2FjeS10cnVuaworNzAzNjUgYzVmZWIwNThmZmM0YTYxZDU5N2I4ZWUwOGYzNTk5YmEyMjQxMTRkNyByZWxlYXNlMjYtbWFpbnQKKzcwMzY2IDFjMGEwZjdiNGY3NmY5ZDU4ZDE2NzQ1ZjI0YWVmZjZiMDkyZDNiNTQgcHkzaworNzAzNjcgNzM3N2E0ZDk1YTQ0Y2ExMzgwYzM3NWU0YjljZmQ0NzUxNmNmNTFjNSByZWxlYXNlMzAtbWFpbnQKKzcwMzY4IDFmOTZkNzMzYTc0MzkwZTYxNjJjM2QzZGJjYWEwYmJmMTk3MzIwYjUgbGVnYWN5LXRydW5rCis3MDM2OSA0ZTFhMTU3NmYxZTVjZjU2OGMwYTMwNjJhOTQ4MjI5ZDRlOWE0MWM1IHJlbGVhc2UyNi1tYWludAorNzAzNzAgYzFkYzg3YmQ4ODNjOWU3ZWI5NzZlMDJhNmY4Mjc0MWYxOTUxZTdlOSBweTNrCis3MDM3MiAwYjE5YmEzMTgwNzFiMWRlMWQ1YTJhYWZiZTc0ZjY4NjcyNjNmMjIyIHB5M2sKKzcwMzczIDYyZjlkYWQ2MjhkZWZjMTkzMjRiMjA3MGIzNmQ1MzJkY2Q4M2YzOGUgcHkzaworNzAzNzUgNjljZDYxNWI3NmZiZDQ2NmQ2Nzc0ZmRmNjYwN2Y0YThjZWEzZWM4MCBweTNrCis3MDM3NiBlOGZkNzk3NjNiY2NjZWI4YzJmNjdkNjdjMTdkZmM1ZjIwNzcxZjc2IHB5M2sKKzcwMzc3IDcwZjVmOTExM2FlMTFlYzgwZGMzM2Q4ODkzNDdjYzk3NzBhMDYzYzggcHkzaworNzAzNzggYmVhZjAwYzk4YjcxZTYzMTNjNmM1Y2QwMzExZjRiZGU1OGUwNDYzOCBsZWdhY3ktdHJ1bmsKKzcwMzc5IDM3ZDc2YjVhODI3YmEzYTI1Y2I2MjczNTQxNjQzNWU2MzRlYTQzNTEgcmVsZWFzZTI2LW1haW50Cis3MDM4MCA0ZTkyN2ZhZjMwZWFlZWMxYTRiYzJhYWIwZDA2NDhkM2Q1NDIwZjNmIHB5M2sKKzcwMzgxIGVmN2U0N2ViMmI2OTc1ZDViNWMyZmFiN2M3YzAyMzY5NWZjNzNiMzggcmVsZWFzZTMwLW1haW50Cis3MDM4NSA0NDJiZGZlOTNiMjkyMWE5Y2E5YmE1MWNiNDliZTk2NWMyYzBhN2FhIGxlZ2FjeS10cnVuaworNzAzODYgMjNhMzk2OTdmZDY3ZTg1ODQxNzcyZGFkYjE2YzJlYjIyMjJmMzg3ZiBsZWdhY3ktdHJ1bmsKKzcwMzg3IDFiZTA5YzVjNjhlOThiNGY3YzhmODljODk5MmU5ZTRhMDA1NDBiNjQgbGVnYWN5LXRydW5rCis3MDM4OSBkZTdlNDcxNmQ5Y2JhOTdlYmFhNTYyN2VlN2NjNGFhMzM2Yjc2ODI3IGxlZ2FjeS10cnVuaworNzAzOTAgNjg1NTFiMmE1ZmFhMjgwM2U0M2ZjM2NkY2IxOWQ2ZDI2ZmQ0ZWRjYiBsZWdhY3ktdHJ1bmsKKzcwMzkyIDJmZTViYWY4OTU2OTU4MWQ4NWQyM2EwNTY4YmJiNGVhNmE1NmUxNGMgbGVnYWN5LXRydW5rCis3MDM5MyAwZDE5ZTExNjgzZmZlYjc1ZTRlZDk1YTM5NGQwODM4OGNkMjljZjkxIGxlZ2FjeS10cnVuaworNzAzOTUgNGU5NGVhYjZjN2EyZDBkZWQxMDYwMWZjYTY2NjUzMzg4YWJhMmM0MSBsZWdhY3ktdHJ1bmsKKzcwMzk3IDEyZWJkYThmYjZiMzAwYWYyN2E2YjRlOGU3MTJjZDczYzhkMjgxOWUgbGVnYWN5LXRydW5rCis3MDM5OCAwYmUxYzFmMTI3ZTA0MDc3OWNmM2JlNDhhZTlkNzc2Y2VhN2JkZTQ3IHB5M2sKKzcwNDAwIDZiZjBmM2FiMDI3OWFjMTM3MWUwMGQ2NzBkOTkwZmY3MTU3YmQwOGEgbGVnYWN5LXRydW5rCis3MDQwNSBlNGQ5ODQ0YWJhMjUwMWE5Yjc4ZWU0NDRjMTRmMDBjNjAwNDgyOWE4IGxlZ2FjeS10cnVuaworNzA0MDYgY2JhNjA5MzgzMDc4MWNiOWFiZDFlYzYwYWUyZDM4M2JmZDNkNGVmYSBsZWdhY3ktdHJ1bmsKKzcwNDE4IGNjZWRlZjI4ZmUwNDIwMjM3MmU5NDY1NjlkYmIxYWI0NmM4OGJhZmEgbGVnYWN5LXRydW5rCis3MDQyNCBhMzE5M2MwNDE0OTZkZWNkZmI2ZDkyMjk3YjMyNzUwZjg4NGQwODY3IHB5M2sKKzcwNDMwIDZiNzM4YjZmN2ZjNjc4YjU0MTI3YzhjMGIyYWVlZGFjZGQ1YjU0YmYgbGVnYWN5LXRydW5rCis3MDQzMSBmZDRjODM5MjgwODA5YWNhYTVkOWI5ZjljZTQyODEwZTI1NmJlOWE0IHJlbGVhc2UyNi1tYWludAorNzA0MzIgMzlmNGZhNTFhY2ZiODA3Yjg5ZTM0NDJlYzFiYTk4OGRiMzI3Njc4NyBweTNrCis3MDQzMyBjMzU3ZDc5MjY0ZjhjYmY0ZjVkNzAyYjA5ZWQ5M2I0NDgzYWFjOTk3IHJlbGVhc2UzMC1tYWludAorNzA0MzQgN2MzZmUxYTRhMmNlMzQ4OGJlZGFmNTBhMDBlMjU2Mzg0MmI1N2Q5ZiBweTNrCis3MDQzNSAxNTcyNDdlYjc5M2RiYmU2NzU2YWYwM2FiM2I5MDc1NjE3OWZlMmZhIHJlbGVhc2UzMC1tYWludAorNzA0MzggMTcxZWQ2ZmZjODZjNjRjOTY5NmU3YWNmODA5MWU5MzY2NzkwMDExNiBsZWdhY3ktdHJ1bmsKKzcwNDM5IDVkZWU5M2E5NzU1OGUxODFlN2UyOGE2ZmJhOWNmYWVmMjgyNzdmZDAgbGVnYWN5LXRydW5rCis3MDQ0MCAxMmUxNGU2ZjFmMmRiMWVkNzVjNWUzNDg0ZmIxZjYyYzk4MGIyZDMyIHB5M2sKKzcwNDQxIGFkNGE3MmIwOGQzZTQxMGU3ZTUzYmJkNWVhYmZmYjE1MzQ3Y2I5MTggcmVsZWFzZTMwLW1haW50Cis3MDQ0MiBjYWMyMDczNzNhMzRmNzRjNmRkMTZlODA4ZTFmYjAyNTY1NjI4MzAyIHJlbGVhc2UyNi1tYWludAorNzA0NDMgZDk1ZTVhZGQzY2E0Y2NlMzI5MDhmYjcwMWZkOGRkYzBjYTNjODdjNiBsZWdhY3ktdHJ1bmsKKzcwNDQ0IDJkOTRjOGZlZDM3NmY3NmI4ZmU5NmUyODc0ODZmMDExMDg4MzgwYmIgbGVnYWN5LXRydW5rCis3MDQ0NSBmY2RmZmQ4NWE4YmQzZWJlMGVhOGI5YmMwODE0MGQ1MzM0ZGUzNGU4IHB5M2sKKzcwNDQ2IDIwN2E0YzI3YTkxNmFkOWQwYTJiNGEyNDI4ZGVmYWY2Y2JlZDhkOWQgcmVsZWFzZTI2LW1haW50Cis3MDQ0NyBhNTI3NDA1YTljMTA2MTA4MzI0OTJmNmE5ZWI4OWM3MzgyMDM2MDEyIHJlbGVhc2UzMC1tYWludAorNzA0NDggYzM0MGUzZjQ5YmYzNjQ5ZTc3YWNhNjJiZjZiZmVhMDIxZjIwMWQxMCBsZWdhY3ktdHJ1bmsKKzcwNDQ5IDU4YjI4NmUxNWViY2U0Y2RmOTljZDQwMmRjNTcxMDg4YmM3OTg1MjcgcmVsZWFzZTI2LW1haW50Cis3MDQ1MCA1OTM4MGIzOTBjNDA2MjQ5YTA0ODY0OWNiMmM2ZjBiNGU0MDFiMTM4IHB5M2sKKzcwNDUxIDZmZTY0MDFkYTUxZjljYWNiYWYwNjZmYjI1OGFmNjZhM2I1NDQ4ZTggcmVsZWFzZTMwLW1haW50Cis3MDQ1MiA3OTY0MmI1ODgxZTBhNmIyMjJkNzk2ZDE2MDQyZWY0YjhkOTQ0OTJkIHB5M2sKKzcwNDUzIGRhNDg0MGIyYmEwNjEyZjc0YzAyZTNkMjUyNmM0YzczNDFhNGMyOWUgcmVsZWFzZTMwLW1haW50Cis3MDQ1NCBjNzNkZDI1YzAxYzEyMDQxMDcwZTExMDJiZDczMGU5NzkwNDFjN2JiIGxlZ2FjeS10cnVuaworNzA0NTUgNmJhNWVlNWEyMjA5NDNhMzA3MjM3NzZiMDYyZTZmN2Q2MmU2OTg2OCByZWxlYXNlMjYtbWFpbnQKKzcwNDU2IDdkOGZkNzk1NWQxNTU3NDA3YjE0ZjQ2ZWYxMjQ1MzMxZjU4MmY3YzQgcHkzaworNzA0NTcgM2VlMjU5NDY5YmE4MjgwNDY4ZDczNjc3OTY2MmE3NDRhZDgwMTZjZSBsZWdhY3ktdHJ1bmsKKzcwNDU4IDdiNTM2MGZhM2UxOWYyOTA2YmY0ZWQwMzVmYzJhOGIzNjBkYmFkMTUgcmVsZWFzZTI2LW1haW50Cis3MDQ1OSBiYjVkZTI0YTM0M2Y2OTcxNWIyNGY5OTQxYTgwZWVkOWU4NDJlODhjIHB5M2sKKzcwNDYwIDlmNDYyOGI0NjU1YjBiZTk4MjAxNWQ2ZmVmZGJjMDdkMDlhNjBiN2IgcmVsZWFzZTMwLW1haW50Cis3MDQ2MSBmZmU0YjlhMTAzNWNkMzY4OTE0NmE0OTEwYzNjMmNhMmMyNWU3NzJmIHB5M2sKKzcwNDYyIDM3MDMxN2ZiOTUxNTU2MTgzOGRlNWQ2NTBkOTQ3Nzc0MzJmNzMzNWYgcmVsZWFzZTMwLW1haW50Cis3MDQ2MyBkMmI3ODg3ZjhjOWFlYzEwMWNiOWZhYzE3NmNiZjZiN2RkNjY0YzY5IGxlZ2FjeS10cnVuaworNzA0NjQgOTJmZWZjZGRiZmU4NDAxNTFhOWRlMWE1MjkyZDgwZjUwNjM4MGE1MSBsZWdhY3ktdHJ1bmsKKzcwNDY1IGZiODBiMjgxZTA1YWEwYWFmZWI0ZjBmODQ0NWFkNzAyM2YxMWRhNjMgcmVsZWFzZTI2LW1haW50Cis3MDQ2NiA3Y2ZiYmYyZDI5NGU1MTJhMzdjYTE3NTE5NDRmOWRlY2EzYWZhNTdmIGxlZ2FjeS10cnVuaworNzA0NjggZTJjMWNiZGEyYTk1NzI1YTExMmNhYTQzOWI0OTY4MGYxYTUzOGI4YyBsZWdhY3ktdHJ1bmsKKzcwNDcwIDFmNzNlMDk4NGQ1NTllN2RhNzI5NWRjMzBjMjc3NjNiZWM4OGMxYzQgbGVnYWN5LXRydW5rCis3MDQ3MSBhMTFhNjc2ZmU2YzA1YWFiZTI5NTQyYzAwMjE5YmJiZWVlYWQ5MGZjIGxlZ2FjeS10cnVuaworNzA0NzIgZWFkM2RlNDhhYWRkNzk2ZmNiNWQzZmY2YjcwMzM5NWQzMDMyYzFlMSBsZWdhY3ktdHJ1bmsKKzcwNDczIDhmZDE3MjFjMzJjNDc1YzM0YjE5NmIyYzAyODE5Y2RjODFkNmQyNTUgbGVnYWN5LXRydW5rCis3MDQ3NCAxMTAwYTUwNmVkY2YwNTEwNjkyNjhmYmE3MzhlMGM2ODJkMmVmZDM1IHB5M2sKKzcwNDc1IDI5MGM3NTEzZTEyNTM3NWFlMzk2OGY4OTQ2ZWFjYmIxZTJmMjViMWQgbGVnYWN5LXRydW5rCis3MDQ3NiA0MjJlMmU2NzYzZTlhMTdlZjZhMGMyMzg2M2Y0OTg4OGY4OGM4NjBjIHB5M2sKKzcwNDc3IDRmZGIxMGRiYzczNjc2YzYwYmI4ZDJhMDIxNDEzMWNmOGFkNTRkNTYgbGVnYWN5LXRydW5rCis3MDQ3OCA2NjQ2OWI2NWQ1NDg0NDRjYmY4YzE5ZTVlNGNkNDI2YTYzNmE0OTViIHB5M2sKKzcwNDc5IDliMzU4ZWFlNTMyYTYyMWY1MjQ1NTY4ZTJiYzljZmJmYTYyMDMxN2UgbGVnYWN5LXRydW5rCis3MDQ4MCBkMWMwZjU1MDQwYmFkNTI0YjE2ZjYxNjgwYTJlMDZhNTc3ZTA2YWEwIHB5M2sKKzcwNDgxIGU3Y2Y0NjlkMGUxMjgzYjcyYmZjM2Y3NjY2ZjdhNTM1MDJjYTU5NDAgcmVsZWFzZTI2LW1haW50Cis3MDQ4MiA1YTAyZjBjZjNjMzgxZWQ1Y2NkMThhOGRkOGNlZDZiOGM4ZjgwYjg4IHB5M2sKKzcwNDgzIDM5NTlkNTA0YjU0YzM1Mzg4ZGU4ZWYyNTJhOTZmOGU1ZDhhYTBjYTggcmVsZWFzZTMwLW1haW50Cis3MDQ4NSA3ODdmMjViMTI3ZWU2MWQwYTdhN2Y1ZGRmYTlmZWU4ZWMxYzBlZWU1IGxlZ2FjeS10cnVuaworNzA0ODYgNzNmZGMwNzY4MWUzN2YwYjk0OThhYTc1MDkzZWJiMmJkMzRiZWNmMyByZWxlYXNlMjYtbWFpbnQKKzcwNDg3IDUwNTc3YWUyYzBjMGM1MzkzMzFjZDU3ZTNkMGExYWNkMjBjNTVhZWIgcmVsZWFzZTMwLW1haW50Cis3MDQ4OCAyMjczN2U5NWY2Zjc1NTQ0MmE1MDE5NjVhMzMyN2E4YzA3MDdmN2FhIHB5M2sKKzcwNDg5IDZjMGMxNWEyZWQyZDNmZTk0OGE0NjZkZjE0MDY4ODA2ODVjOTQzNTcgbGVnYWN5LXRydW5rCis3MDQ5MCBhNDcwZDBhMDI1NmU3NDJmMmM5ZjdhNzUyOTU5MDEyN2RkZWNmZmEwIHJlbGVhc2UyNi1tYWludAorNzA0OTEgZDkyYTZkZWM4YmZlZDc1MjE5ZTY1ZWVlNjNjN2YxOWUzOTgwNGMwZiBweTNrCis3MDQ5MiBiYzY4MWU1M2Y5NGUwNmFkZDAyZGEwZjQyNmEyODYzZTZhOWRhNTRhIHJlbGVhc2UzMC1tYWludAorNzA0OTMgYzViNzk1OGY0MjkyMDZlMDk1ZWU4YzE2MDM4ZGY5Yjc5N2E4YTY4ZSByZWxlYXNlMjYtbWFpbnQKKzcwNDk0IDJhM2FmMjExZjBlMTFmYTc0Mzc1ZjI0OTFkNmQ5YTcwNDM4ZTExNzIgcHkzaworNzA0OTUgYzdiMmNjODM1OGY2NjU2ZTJjN2ViNTAyOGM4NDQ0NWMzYWIzMjkxZiBweTNrCis3MDQ5NyA1Y2FjZTc1YmNiMDU2Y2M2MjcyNmYwMWY0Njc2YmVlNDFkNzUxMDA2IHB5M2sKKzcwNDk4IDVhYTYzZGRkMTUxMzQ1NGE3N2Y0MTQ2MWVlZTAwMTQ4N2QyZjhjZjkgcmVsZWFzZTMwLW1haW50Cis3MDQ5OSBiODQ2ZDcwOWNiNzYzMjcwMWIwMTUyZDU4YzFhNGI4NjhlYTE0NjYzIGxlZ2FjeS10cnVuaworNzA1MDAgMDI5MjgxMjEzMzhkOTMxZTQwMjE1OTczYWRjZDYzNjhiZWJmZTZlNiBweTNrCis3MDUwMSA1YzU4MjM2NjdkZGQ1Y2VlZGU5NDM1ZjIwOTk4MWI5NTE2MjJmMDkyIHJlbGVhc2UzMC1tYWludAorNzA1MDIgYjg5MzRkZDkyNjdkZTAzYmQ3NmY5OTE4NmI4ZDc1YTFkNmY2Mzg5NyByZWxlYXNlMjYtbWFpbnQKKzcwNTAzIDJkNmZmNWNkMjYwMDEyNDZhMThmNTY3NWJlYTYwZmU2ZTdmMmU2YWQgcHkzaworNzA1MDQgZjI3NzdlYTk1NGNhMjViZWYxYzJlOTE0ZjhmYjEzYmI5YWQ0N2M2MSByZWxlYXNlMzAtbWFpbnQKKzcwNTA2IDViMWYwMmRjNjlhMzkxOTA1ZTcwYjAzNzc3Yjg1YjNmODg1ODUyNDIgcHkzaworNzA1MDcgM2FiMmU1MmQ4ZDE5NjljMTQzYWYwMGYxNmIxYzBjMmJjMDRkZDYxNiBweTNrCis3MDUwOCBlNDFmNWE4OWY1YzA2ZTk5YmY2NDZmNjI3NjdiZWEwMDE2ZDQ2Mjc4IHB5M2sKKzcwNTA5IGM2Njg4ZTkxNTZiNTkxN2VlZDg2NTUzMTY3ZmFiZDBkMjAyYmU1NWQgcmVsZWFzZTMwLW1haW50Cis3MDUxMCAxOGQ2NTY1MTIzNWU0ODkxMzJkMWI4NDg2MmU1ZmQxNTE3NWJhYjA5IHB5M2sKKzcwNTE4IGZiMjFlYWJhOTRmNjg5ZWVkMjdjOTljZGFhOTFiOTMwMDdhOTE5OTcgbGVnYWN5LXRydW5rCis3MDUxOSBkMWIwYmQ0OGJhMTU2MzgxYjc5ZjlmMWU0NGNkMzg2Y2Q0N2JhYTgwIHJlbGVhc2UyNi1tYWludAorNzA1MjAgYzg3ZTU4MjYyZDViY2IzZWQyMzU0MjllMTM3MmEwNjA1MTM1Y2YzMSBweTNrCis3MDUyMSBlZmQxN2NiNTgyM2E5OGZlYTYwMTY5MTI2NWQ5N2E0M2MxNDE0ODUxIGxlZ2FjeS10cnVuaworNzA1MjIgNzUyZjJlM2U0NzU3N2ZiMDMwM2VmMDA4OTZmNTg0N2YxZTIyZjhhNCByZWxlYXNlMjYtbWFpbnQKKzcwNTIzIDQ0NWQ0MDQyNzBlYWFiZjE4YmY2MzBmOWIxMGQzMjExNzUxNjUzN2QgbGVnYWN5LXRydW5rCis3MDUyNCA4NTZlZDQxODc2OGMxOTA2OGFhNzFhMjA0MDAwOWQxMmE4ZjM1NDFkIHJlbGVhc2UyNi1tYWludAorNzA1MjUgMDk1ZDg3NGEzMDU0OWZhYmZlZGZlYTJlZDEyNjliNDU1NDZmY2QzZiBweTNrCis3MDUyNiA0MzViOGJhMWE5MDIzNDRhNTFlNGMwZTM4YmQzMzY1YWVjOWJhZGQ1IHJlbGVhc2UzMC1tYWludAorNzA1MjcgZGQ5ZmRkYjA3MjBkYWY5YjJjYjk1NzkyYmQ3ZDdkNjQ1OGQ4MzE3ZiByZWxlYXNlMjUtbWFpbnQKKzcwNTI4IDZjYjg0MzA3NWU2OTExZjJkY2JhODZmMTAxMmU4MzEwNjM4MWZhNTAgcmVsZWFzZTI2LW1haW50Cis3MDUyOSA1ZjhjOGM5MThmOWIwMjliNGU5N2M3MmFjZTYzMzQ0MjJjMmRiYmYzIHJlbGVhc2UzMC1tYWludAorNzA1MzAgYWIzODk4NzdmMTUyZjRjODliZTIwNWI4ZDQxZmE3ZDI1NGRkYWEwOCByZWxlYXNlMjUtbWFpbnQKKzcwNTMxIDFmNzJhYzkwOTQwOGRjNDE0MjA2MTdlMTRkMWU5ZTJhMTcxN2Y2OTcgbGVnYWN5LXRydW5rCis3MDUzMiA0NDI2ZTQ5MjI2NGYwN2FkYTUxNmU1NzM4NzA3MGRhZmYwZTYxYzEzIHB5M2sKKzcwNTMzIDExOWUzZmM2Y2RmMzU4MWQ4OTVmM2I4YjI1ZjQ2M2E1Yjg2MTZiNTMgbGVnYWN5LXRydW5rCis3MDUzNCBiMTYyN2U3ZTY3OGQ3ZDk1OTZkNWNkYjU0YTVhOTlkOWE3YTM2MzEyIHB5M2sKKzcwNTM1IDg4OTc0Y2E1MDAzZmY5ZGFjZjYxMGJhZjliNDMwNzhmMjgyY2I1NmQgcHkzaworNzA1MzYgMDVhZTljY2ZmNTE0NGM3NTg1MDVjMDgzNjNmMTA0NjYyMTQ5MWFjNCBweTNrCis3MDUzNyA4N2NiOTUwNTkxYmVlMWI4YWNjNGYyZDZkMjZlOGM4ZDE1YzU1OTA4IHJlbGVhc2UzMC1tYWludAorNzA1MzggNjg3ZTc1MWMyODhlNmZhNTRmOGNkMDMzYTg3MjAxY2NkYjc1ZWQ3MCBsZWdhY3ktdHJ1bmsKKzcwNTM5IDEzZjg4N2U1ZmEwZDc1MDI1NWZlZmE2YzUxZjVhYjJmM2E3M2I0ODggcHkzaworNzA1NDIgYTU0ZWYxOGFiMGQ4OWRjZDFmODczNGY1NGJlNDQ5NmJkMWUyZWRmYSBsZWdhY3ktdHJ1bmsKKzcwNTQzIGVkZDQzMDJjY2VhZmVlZThiM2MwZTFhMTIzYWMwY2JkMTRmYzczMDAgcmVsZWFzZTI2LW1haW50Cis3MDU0NCBhMWRkYjRkZTg1YTUzNjgxOTU4YjcwNzIyYzJkM2E5MjZiMDFhM2RjIGxlZ2FjeS10cnVuaworNzA1NDUgNjBkMDZjOThhNjA1YjExMDI1OWQwNTU2MjRkYzJiNjJkM2VlODYxMiBweTNrCis3MDU0NiAwZTQ5OGE5ZmRlM2MyMjkzZjg4YjllMWNlOTczZDZiN2ZhN2ZhM2RmIGxlZ2FjeS10cnVuaworNzA1NDcgYTFkMTZkOThhYTQwZGFmMGVhYzQ0OWVkMTM5ZDU5ZTBmNjAzOGNkMiBweTNrCis3MDU0OCBjNzA5MTBhYzQ5MmQ3OTg0NjJiNjgzYWI5NjY1Nzc5YjY4ZGYxMTBkIHJlbGVhc2UzMC1tYWludAorNzA1NDkgOTRiZDA2NjZmZmE3OTMzZjUxZjljMjBkZTFiODZhODM0NTI3MTU0YSBweTNrCis3MDU1MCBiMzc5MTMwOWU2OTA0YzczYjkwYzUwNDI0MzA4MjUxNjRjMTcyNzJiIGxlZ2FjeS10cnVuaworNzA1NTEgNjdmYjkwMzJkNDNhNDdiZGFmOTljNjM4ZTkxNjI2MDBkODI4Y2QzNSBweTNrCis3MDU1MiBmNmVkYzY4NmJkZTc1MzNhOTAwMzE4M2UyN2U0OTFhNDJmOGFhNWFjIGxlZ2FjeS10cnVuaworNzA1NTMgN2VkZDE0M2NkNGU0MmYzOTg1MTNmYmU5ZDI3NGJlZDcwYjVmMTYxNiBsZWdhY3ktdHJ1bmsKKzcwNTU0IGRjYTNkNjcyNzU4ZTNjZGM1M2Q0ZWViYjFjOTE2YTY1ODcxZGZhY2QgbGVnYWN5LXRydW5rCis3MDU1NSBlNGFhNTMwZTU3NjBiOGFjZmI4NDBjNzJmODk3MzgzZWY2ODE4YmE4IGxlZ2FjeS10cnVuaworNzA1NTYgMTA4NDVlMTVlZDliMWI2MDE4MTFmYmJjNmI2N2Y3MWE4YjMwMjYzZCBweTNrCis3MDU1NyBkNzQ3NjEyZjhhMmZlZTk4YTM1NTQyNjg3MmQwMTJhMjgxMGEzNmYwIHB5M2sKKzcwNTU4IDY4YWMyNTUyZjQ0ZTE5ZjVmNTg2MDUwZmUwOTA5OWNjZmI0MDkwNGQgbGVnYWN5LXRydW5rCis3MDU1OSA2ZDVjOGE1MDY5YjBmZmZjOWYyYzA5MWU4NjQ3Y2Y5NWM5MDY4NDg4IHB5M2sKKzcwNTYwIGFlZGE5MmYxYWI5YjU3MDNiYmMyNzZlOTc0ZTM0OThiNGIwNzQwY2QgcmVsZWFzZTMwLW1haW50Cis3MDU2MSA1NWYxNTA5YzQ1YjY3ZjBjYzVjODU4ZGM1NjVlYzEzM2EwMjE2ZGVkIGxlZ2FjeS10cnVuaworNzA1NjIgNTg2OTRjNzZkNzZkODE1ZjhhNGI2ZjhhNmIyMDg4NTNmMDFkYTk1OCBsZWdhY3ktdHJ1bmsKKzcwNTYzIDAwMjdjMDgzYTBkNGI0MDRjZWM3NThlYzhjZmJmNDIzYzBiMThkYWUgbGVnYWN5LXRydW5rCis3MDU2NCBlYzNlMjlmMTYwZGZkMTAxMjZlYTE4YmQ0ZTk5ZTc0ZDUyM2RiYWUwIGxlZ2FjeS10cnVuaworNzA1NjUgNzAxZjY4ZjhiN2NmNzUzZjk0NjAxNDEyM2IxNzUzOTYwZTQ1Yzc1ZSByZWxlYXNlMjYtbWFpbnQKKzcwNTY2IGEyZjZiMmIzODJiNGMxMWNkMWFmMDhhMmY4YjhhODFmY2UxYTU2MzcgcHkzaworNzA1NjcgOTg2YWNjZTI2NjQxMGJkYWI3YmFlMzY3YWY5ZTUyZWE0YTUwY2U5NiByZWxlYXNlMzAtbWFpbnQKKzcwNTY4IGYwYTUwNzQxNGU4Y2M3ODY3NzdiNmJhY2E0ZmMwZWEyZGZjYjZlYzYgbGVnYWN5LXRydW5rCis3MDU2OSAyM2MxMmFjN2YzMTczNmM2Njc0ZDIxYjg0YzFkMzM4ZjE0M2FmNjkwIGxlZ2FjeS10cnVuaworNzA1NzAgNmVkYjc0MjE2MzhjMGIyMWNiMGFhZDVjNTAzOTJjNjc0MDRkYzFlNiBsZWdhY3ktdHJ1bmsKKzcwNTcxIDEyYWRiODE5NzY0NzljNDAzMTY0NzUzMjkwZWFhMWE4ZTNjNTdiMjEgbGVnYWN5LXRydW5rCis3MDU3MiBhOGE4Y2Y5YjI4MTgzZDQ0ZDcwMzcyOGM4YWQ0Mzc0MDY0OTY4NmQzIHB5M2sKKzcwNTczIDliNTk5YjYwMTJmYTU0ZGY3MmE4ZjE4MzRkZDViNWEyMDc1OTFjYTggcHkzaworNzA1NzQgZDIxMzQxMzNiZjBjOTk1MjQ4MzY5OWQwZDI3N2ExMWY5NDljY2YzNSBsZWdhY3ktdHJ1bmsKKzcwNTc1IDgyMGYzNDc1YjA4ZDdmMmM3NDEyMjYzNjllZjc5ODIxOGE0MTk3ZWYgcHkzaworNzA1NzYgMTFkNTRjN2UwODliODg1MTA4YWEyYjllYjljOTU5MzU5ODAyODNiOCByZWxlYXNlMzAtbWFpbnQKKzcwNTc3IGE4ZGE4YWNkYTEyODY3ZDQ3NGFlOTQzMjk0MGQ1MzQ0OGUwNmM2NWUgcHkzaworNzA1NzggYTk1MTVmMjliMzhjODczMmZkM2I1NjY5ZWFmMTY2ZDljZWQzZTE5NCBsZWdhY3ktdHJ1bmsKKzcwNTc5IDI0OTRmZmQ2MGVhZTk5ZDBlNTZiNjEwOTc4MmM2YjI3MDE3YzZiNTAgcHkzaworNzA1ODAgNjBiOTdmYzhmMDZkYTM2YTQ5MTY3NGNhNDhiMzg3OTUyMjMyNDJjMyBweTNrCis3MDU4MSAwMDZjODFmOWIwZTgwZWQ2MGUxZDA5MjdhZTVmODQxZjNlNzk5NGE3IHB5M2sKKzcwNTgyIDJjYzkwMGJkNmJiMDE2MmNkMGYyYjkzNjcwZDY3ZmM1YjBiYjkzNjMgcHkzaworNzA1ODMgYmE0MjQwMTZkYjc0Njk2MDNkNTdmZTEzNWM5N2M3MGI4OGI5MWZiNyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg0IDc5MmE3ZjkzOWZkZGVhYzFhMWNlZGMxNmVhZjgxNWEzMDBiYTMyNjcgbXVsdGlwcm9jZXNzaW5nLWF1dG9jb25mCis3MDU4NSAzYWRiMzk3NGU3NzdjMDkwNzI0NDlkMWYzNmYwOWVhMjY0ZGIwYWY2IG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1ODYgOGFkMjUxZGE0NzQyNzRmMTdhYjA5M2JkZjU1OGEyYTkzMzM0MTc2YyBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTg3IGZkYzgwNmM3N2NkNmU0MjE1ZjVmNmQxMGJmNWZmNWQzYmRiOWYxMWEgcHkzaworNzA1ODggM2RmN2YxMThlNTA0MjJmNmEzOGQ0ODFlZGNiMjU0Y2FiZjAyZTExZSBsZWdhY3ktdHJ1bmsKKzcwNTg5IGVmZmZjN2VhYWQ2ZDMzZTc0ZTU3M2RjNzcxNWE2MTg0MjZhZGQ5NDIgbGVnYWN5LXRydW5rCis3MDU5MCA1ZDZjMGZjODdhNzE4ZWIzNjQzZmZmMTczYmRlNzNiMmRlY2Y2NjNiIGxlZ2FjeS10cnVuaworNzA1OTEgMDYwZWE5NzVkNTk3MTI5NzYxNDBiNDcyZWIwNzUxNjM3NWE0ZDczNiBweTNrCis3MDU5MiA0MWUzNDRlNTcxYTE2MDIzNjEzYWYxMDMzOWE0YWMyNzJiMDQ1MzcxIG11bHRpcHJvY2Vzc2luZy1hdXRvY29uZgorNzA1OTMgNzNmNGU4YWRmZWJmZDhkMjVkYTAxZGQ3ZGYzY2I0NDE0NDQxMDBlYSBtdWx0aXByb2Nlc3NpbmctYXV0b2NvbmYKKzcwNTk0IDdkMGUzYThjMmU5ZTFiMTZjZDAzYjY4ODBhMzZiNTFjNTljOWI4MmYgbGVnYWN5LXRydW5rCis3MDU5NSA5Zjg5NzY1NjVmODI2ZWUwZTlhN2UyNGQ4ZDk1ZjY4MTRkN2I0MWU2IGxlZ2FjeS10cnVuaworNzA1OTYgOGNkNjE3YzNlNzRiMDI4ZWQzNzIxNzIxZTkxOGUyMzBiNzg1MDhkMSByZWxlYXNlMjYtbWFpbnQKKzcwNTk4IGVlMGY3NTFiODAyMDAzYzUzYWQ1N2EwYWQ1NjdiOTVkOGUyY2Y5YTEgbGVnYWN5LXRydW5rCis3MDU5OSAxZmJlYzI5Zjg5ZThkMDJjNTE1ZmM0NWYyN2U5MDNkODBmYzgzNDE3IGxlZ2FjeS10cnVuaworNzA2MDAgYTY3NmQzNmMwN2RkNTM5OWRiMGExYmNhZGVhMTc4OTcwNTZmMDg4ZiBweTNrCis3MDYwMSBmNWQ2NzBmY2RiZTk2YmM3ZjQyMWI4YjQyOGEyOWU3Zjk3YzJjYjNhIGxlZ2FjeS10cnVuaworNzA2MDIgZjI3NzA0ZjQ1ZDRhZjMzMTM0MzNjMmZkOGQzYzFiZTk0ZGVkYTFhMCBweTNrCis3MDYwMyA4YjVhODBmNTMzMTdmODk5ZTc5OTEyZGQxMGQ0MzcxYTZhMGY5NzI5IHB5M2sKKzcwNjA0IGI2Zjg2MTMyMWI0NWNmMGZkYWE0ZGE1ZWEwZDBkNzQwMTRmN2Y5MGIgcHkzaworNzA2MDUgM2ZkYzRhYTM2ZDc2NzA3OGFkOGQyYjM2ZWMwMWNlYjM2MGE2MzAzNiBsZWdhY3ktdHJ1bmsKKzcwNjA2IDYxZWY2NTlhYjc5OWRmNjIzN2RlMjcwOThjNWZmZGNjZTY4ZjM4NjkgcHkzaworNzA2MDcgMzM4MjljNzkxYmY2MjI3MGM2ZTgyYmYyM2U0ZGMzZDRmYzkyODFkNSBweTNrCis3MDYwOCBhMTBkOTk1MTNmOWU5ZWUzYTA1N2VmMjhjZjRmODhiMWRkMjQ3ODQ0IHB5M2sKKzcwNjA5IGNjMTNjYzIyNGZmNTY4YmUxMWI2Y2Y2YTZiM2RiMWFhNTZlMGViYTcgcHkzaworNzA2MTAgMDdiNmZjZGY3Zjk0OTk0ZTllYWU2YjRhYzhiODVmN2QwNTY2MDkzNiBweTNrCis3MDYxMSAxZTIzMzU5NjJiYWQ4NTQ2YTFlMTFmZjlkZDhmYTBjMDYxMTRkNGMxIGxlZ2FjeS10cnVuaworNzA2MTIgNzhmZWRjMzQyYTZiMTA3ZGJjMWI3MjIwODJjZjc5ZmFkNzBmMmU4OSBsZWdhY3ktdHJ1bmsKKzcwNjEzIDBhMDUyYTI4NzNiMjQxOWRmNjlkODg3Mjg0NjkwNDg2ZjE4N2Q5NmEgbGVnYWN5LXRydW5rCis3MDYxNCAwMDdlOWM4NmZiNTViNWUwODg0YjZjYTVhMTgzZDI3NTg1NmMxYTVlIGxlZ2FjeS10cnVuaworNzA2MTUgNGZlNzYyNDlhOTA5MDcwZWRkMWU5ZjVkMjM4MmU1MDgxYWMyMDE1NiBsZWdhY3ktdHJ1bmsKKzcwNjE2IDU1NzI5MGZmYTc4NDc2OGU3YTk0M2U3OTVhODRhNWJjNmQ1MjFhY2IgbGVnYWN5LXRydW5rCis3MDYxNyA5Y2NmODJlNjUzMzI4ZjFkODM5NDQzZjhjZmNmZjhmOWRiMDAyZDBjIGxlZ2FjeS10cnVuaworNzA2MTggZTYwMDliOWNkOTA4NGZmY2FmZTBiMjUzOGI2OTMwZTM2OTlmZWFhNiBsZWdhY3ktdHJ1bmsKKzcwNjE5IDE0Y2M5MmFlOTRjOTA0ZDBhY2UzMTNhOWRjOTNiODAwMzc1ZTA1NTkgbGVnYWN5LXRydW5rCis3MDYyMCAyMjhjZmI2ZTI5MDBjMTQ0NmNhMDYyZjU4ODJmMTBlMGNmNGFlYzAxIGxlZ2FjeS10cnVuaworNzA2MjEgNzZiZjM0MWFjMjAyMzdiMjQ4OWVkNjJmYmY3MTdhZGQ1M2JkN2FkOCBsZWdhY3ktdHJ1bmsKKzcwNjIyIDUwMjM4NDk0ZjBmMDVkZWQ1MzJiNTM1OTJjZGQ4NmRlOGY5MTM3ZDMgcHkzaworNzA2MjMgNzA1NTQ1ZWMzMjQzZDQyNzI1NGNmZTE3Y2FhNzIyOGZjNmY2OGZjZiBsZWdhY3ktdHJ1bmsKKzcwNjI0IGYyNmMxY2Q2Yzk4NTAwNWZlZDE1OWQ3ZTE0NjFlYjEzZTBhYzA4ODkgbGVnYWN5LXRydW5rCis3MDYyNSBlZGY2MjcyNjFjN2I1NThiMGY5YzFmMWRjNTU2ZDlkMDgyZjVjNjZiIHB5M2sKKzcwNjI2IGRhZGJlMDE0YmRhNGUyNzUwZTJlZGYyNWRiMTAyNDFkYjg1YTRlZTQgbGVnYWN5LXRydW5rCis3MDYyNyBkMjI3NTg0YzFjN2Q4ZTcwNjQ3Yjk2ODhiZDQzMDdlNzJmNDFlOGI4IGxlZ2FjeS10cnVuaworNzA2MjggZGFmNjYxZDA1NDQyYTdhZGQ4OGEzMzZlYzViNmFmNzBkODA5MDcwMSBweTNrCis3MDYyOSBjYTAyYmQ4Yzk2ZjI5OGJmOWEyYTcwYzg1MzJiZDQ2OGQwMzc1YThiIHJlbGVhc2UzMC1tYWludAorNzA2MzAgNDc1ODA4Njk4ZWFmYWFiNjBkNzU5MGUyODA4YjdlMDM3Zjg5M2NjYSByZWxlYXNlMzAtbWFpbnQKKzcwNjMxIDc1ZTNmZTNjMDcyNjcwZDA2YjhhMWI4NDY4NDE3ZDgyMDJmYTZmOGQgcHkzaworNzA2MzMgZWU0YTAwNmQwMTcxZWMxNDRhZThhNjk0MTBlYTg4NGI4ZDg4MDZmNSBweTNrCis3MDYzNCAxMGE4NGM2MzhlZGExMjk1NjhlNjI2Y2JjNWZlMGJmZTE3YjdkODY4IHB5M2sKKzcwNjM1IDhkNjkxOGFmMjMyYmFmN2U4ZThkMjAyMTg2YWIzZmJjNzVlYjgyNTYgcHkzaworNzA2MzggOGI2OTE2OTBiYWJkNzA4MDc2NGU0YWYzNmQ2YzZhOTE5MzZmOTgyNiBweTNrCis3MDYzOSA5YWI3NTQxMTA0MzE1ZmFlYWM5OTVkMzQ4NTQzZTQ3MTk1MzE3ZDAyIHB5M2sKKzcwNjQwIDQyNjVkNmM3YzA3NDNjZDI5OTNmYjdhOTYxZGE1ZjM4Nzk0MDA3MDkgcHkzaworNzA2NDEgZmJhZDQyYzQ1YzljYjZjNDFmOTBkNWU1YjViZTM5ZDdkYzZmNTc4OCBsZWdhY3ktdHJ1bmsKKzcwNjQyIDdhZmY4YTc2NmUyNTA2ZGE3NmFhMzY3NDVmZWY5YWYwYzRjYjgxODcgbGVnYWN5LXRydW5rCis3MDY0MyBhNzI2Zjc5Mjg1NjE4NTQyZGJhNmQ3ZDQ2MGE5YTJmYTFiZTE4OTliIHB5M2sKKzcwNjQ3IDlkZjVkMDY5NDkyMWE2MmQ4MGIxODM1YjExMzFjZDUxNWIwM2Y0YzYgbGVnYWN5LXRydW5rCis3MDY0OCBiNzNjZGFjNmEwYzM4Yzg1YTg2NDY0YTJhYmU5MGY3MDA4MjdiOWRmIGxlZ2FjeS10cnVuaworNzA2NDkgYmI5MGVjNjdmMzE0ODU3MjY3ZmU1NDY5MTIwMmRiMDA1YzQxMDVlYyBweTNrCis3MDY1MCBkYTQ1NmY0MmViZTdlN2E4ZWE5MTEyNGU3OTVlOGFmNWViOWNlYjAwIGxlZ2FjeS10cnVuaworNzA2NTEgM2FkZDQwMGU0MTlmZjAzMjFlZTk4NWY4MzM0YWZiZDkxYzRkNGQzYSBsZWdhY3ktdHJ1bmsKKzcwNjUyIDFmNWRiOTQzN2RiODhjNWVjZDdmZmZjMmQ3ZDc2MmRjYmJlNTdhMDMgbGVnYWN5LXRydW5rCis3MDY1MyA0OTgzZmQxOTUwMzY2YmNhOWVjOTM2NWJjZmM2MmY0YjVhZTFiMzU3IHB5M2sKKzcwNjU0IGJkZmM0YjNhOTM0NzE5NTFjODExMzI4MDUzMjg4ZWRiODM2MzRkN2UgcmVsZWFzZTI2LW1haW50Cis3MDY1NSAzOTE4NzFmNmMxNjQyYmQ2OGFkNDgxZDdmMzhkNDJhZjBhZDRkZGNjIHB5M2sKKzcwNjU2IDVlZjFjMWQ3NGM1MTIyN2FkNzYwYjkzZjE2Y2E1YTZmYjIzNzk4NzggbGVnYWN5LXRydW5rCis3MDY1OCA5NzZiMDc5OTk1ODk5Yjc5YjA1NWJlNGQxODY4OGEwYWU0YzY0NDhlIHB5M2sKKzcwNjYwIDM3NDliODhkYmI2MTI3NWY1YjRlYjM4ODVkNDRjMmQ4M2ZmYmQ1M2EgbGVnYWN5LXRydW5rCis3MDY2MSA1NWQ1NDIzYmE5ODdjZWNlNjQyNjQ2NTM4NTExZmQyZWI2MDk0NmU4IGxlZ2FjeS10cnVuaworNzA2NjIgZDRlNzQ3MGJkNjYwNDJjMmFiOTRjYzE1ZWEzOTRlZjNmNDYzMGIwMiBweTNrCis3MDY2MyAxNTBmNTY4ZDFiYTJkMDBiNDQ2YmIyYzRhM2NjNzliODdlMmUxMDZjIHB5M2sKKzcwNjY0IDNhNmQyN2Q4MDgyMjk1ZTJlNTAxODY3YzMxMmUzMzZhZjBjMTMxMTIgcHkzaworNzA2NjUgMWI3MjczYWVkMzZjZWQwYmY3YTZiMDc4YzkxMTY3NzhhZjZjNWQ1MyByZWxlYXNlMzAtbWFpbnQKKzcwNjY2IGQwNTkzOTI2M2EwZTUxNWEwMDJlZTNkZDk0ZmRiOWYxMzI0MDc1OWMgcHkzaworNzA2NjcgYjc5NDMxOWMxMjVlYjQ1Y2FkMDMwZGVhYmMyOWE5NzY1NGFmNjAzZCByZWxlYXNlMzAtbWFpbnQKKzcwNjY4IGQ1NWUwNWIwNmU0YTJiMGU3ZmQwZmU2M2I3ODllYWY0YjI2NjQ5YmQgbGVnYWN5LXRydW5rCis3MDY2OSA3YWRkNDIzYWY5NzEwOThmMzk2ZTNhOWI4MzQ2M2NmMmFjMDIwY2U0IGxlZ2FjeS10cnVuaworNzA2NzEgMzZiMzU5MmYzMDIzYjg3NDIxNWMxMGQ1NmZkM2ZlMWNhNDQ4YWI4MyBsZWdhY3ktdHJ1bmsKKzcwNjcyIDkxMzRhMjA5MTAxM2M1ZmEzOTk2MzVhNDY2YmMzNzA2OTRhNzdjNTkgbGVnYWN5LXRydW5rCis3MDY3MyBlMzE0Yjk2ZmI1YWQzNjI5MmZjYWQ5YzZhNTc2N2NhMDA3MzNjMjZhIHB5M2sKKzcwNjc0IGU5ODkxNTk4YTQzMzQ2NGMyNzQ5MmJjYzcwMGE0NjEzMGI2YzY5MjcgbGVnYWN5LXRydW5rCis3MDY3NSBlZjYxMmJlNzcxZWRjZWZiNWVmNDlkYTg0OGNlYTIxZTA0ZTcwYzhmIHB5M2sKKzcwNjc2IDAwMTI4OGE2OGU4YjA3NDg0YmI0ZjVlMWEzN2FlMzAxZjQ2ZjE2YzMgcHkzaworNzA2NzcgNDZhNDVlY2NjOWY3MDFmYWNhYjYzMGUzNzc2NjJlZTRkNjFlZmRjNyByZWxlYXNlMzAtbWFpbnQKKzcwNjc4IDAxOTgxNWJjMzdlYWYxMmQ5ZDhhNDc4MmM0NjE1NzdiMzIwZDA1MTIgbGVnYWN5LXRydW5rCis3MDY3OSA0MjNjOTQ3N2Q2ZWZlNmVjODA3OGM5NTIzZmExYjk5MDVmMDM1MGQ3IHJlbGVhc2UyNi1tYWludAorNzA2ODAgMDJmMjk0YTI4MjA2ZmIwY2Y3OWU3MTdhZmQ1MmQyZmUwMDZhMjEzMSBweTNrCis3MDY4MSBmNDlhOTdhOTc5ZWIwOTA4ZTAzYTgyMzc5OGMxMWU2M2Y3ZTAyMTY5IHJlbGVhc2UzMC1tYWludAorNzA2ODIgMWFmYjM2NWYyNDQ4MjIyN2U5YjNmYzg1MzA2NTgyMWNjNTI1YzAxYSBsZWdhY3ktdHJ1bmsKKzcwNjgzIDZlNTkxZDRkYzZjOTZmYjRmMDU0MGM5OThjNzgzOTk2NmYzODU4N2EgcmVsZWFzZTI2LW1haW50Cis3MDY4NCBmMDViNmQ5YWRiZTY0Nzc1NzY0YWI4NjQ5ODg4ZmZkMWZmNTQ2OWRhIGxlZ2FjeS10cnVuaworNzA2ODUgYmFmYWQ2MWNmMzAyNjJkNzcyZGQ2NTEwMzUwNDE4NTE5Y2JmMmE5ZCByZWxlYXNlMjYtbWFpbnQKKzcwNjg2IGU1MDg0ZDUxNDgwOWVmMDFjNjJkNDI5Zjc0N2MzODIxM2NjOWJkNDAgcHkzaworNzA2ODcgYjBjNWRmOGM4NGEzNDQwNGQ1MTM0NmQ5NGI1NTNiZTE4OTFhYTcxNSByZWxlYXNlMzAtbWFpbnQKKzcwNjg4IGYxNzFiYWM5Zjk2MWQxZDcxMzdmZDRlMGZmY2E0ZDMxYWI2YzAwYzYgcHkzaworNzA2ODkgOTgwN2MyNmNiYzk5ZmExZTAxNTVkZjk1ODIwN2Y4NjkzZWQ0MjM4OSByZWxlYXNlMzAtbWFpbnQKKzcwNjkwIGEzYjhkMTkxZWM2ODEyZWViNWJkMmY2OTY5MmNmNTgyZWZhMzE2ZDkgcHkzaworNzA2OTEgMDUwN2FhYjVmYjExOWY1OTBlMjkwMGEzNDYzZjI3NjQ4YzAxZWFlNSBsZWdhY3ktdHJ1bmsKKzcwNjkyIGJhZWU5MDUyMTExMGRhMjU1YjhhY2UwMmU4ZjM3ZjlkM2Y1MzkwNDAgcHkzaworNzA2OTMgYmVmMDBjYTQzZWZhZTZkOWJkYzJiYzhlM2YyNDVmYjQ3MzA5ZjNjMyByZWxlYXNlMzAtbWFpbnQKKzcwNjk0IDkyYmMxZGRiYzU3MjRmNGUxZmVkYWIwZmNhMWM5NmU0ZWEwOWYxMTQgcHkzaworNzA2OTUgOTc1YjIwMzk5YzhkMDI5Y2JlZGJiZTE3YjJlYmQ5NWJmMmU0Zjk1NSBweTNrCis3MDY5NiA3YjVmYmJlN2IwMDljNGYyYmRkZmM4YjBkODQ2YTM2YWE2N2RkYWQyIHB5M2sKKzcwNjk3IDZlMWM0YTI5NjNlNGM0MWQ2MzJmMjY0OTM3MGVhMmE2N2I1MjY3ZjEgbGVnYWN5LXRydW5rCis3MDY5OCA5YzIzYzU0ZTZiMTU5Njc0NmJhMzhhNTZlNTdmNzRlNTI5NzE4OWY4IGxlZ2FjeS10cnVuaworNzA3MDAgNmFkOWIwMWY5NWY5OTkxYTZlNDA0MTFiZjk4NGU1NTk3NzY5Y2UyOSBsZWdhY3ktdHJ1bmsKKzcwNzAxIDcxYjY5YTg3M2QyMTMxNjcwODJjMTNkNDVlMmRmOWE2ZWY1YzRjNDUgbGVnYWN5LXRydW5rCis3MDcwMiA2ODVmMTc5MWZiYzU5YTk3NDE1OTc4OWIzZWU5ZTI4YzM5ZjEwYTA1IGxlZ2FjeS10cnVuaworNzA3MDMgYTdhZTczYTM3ODA1OTRmMzM3YTE1MjE5OGQ0OWMwZmJmOWRiZjFjMSBsZWdhY3ktdHJ1bmsKKzcwNzA0IDJkODM2NDlhOTRiNzVhYzY0NTRmNTIxZjQwNWIxZTBkOTRiMGQ2MDQgbGVnYWN5LXRydW5rCis3MDcwNiBmY2U4ZjIzODQ1MmUxY2FkOWY1ODBjNGU5N2RjMTUxMTk4YTAxYjYxIGxlZ2FjeS10cnVuaworNzA3MDcgMTFjMzM1YTk2ZjYwZjFkOWNkYzJhYjhmMjYwMWQwYjQxM2FmODkzNCBweTNrCis3MDcwOCA5ZTRiYjk0MWExZWE1NWM1MGEwZmRiN2Y5NDljODE4NzA5OWFkZGZiIHJlbGVhc2UzMC1tYWludAorNzA3MDkgMDA1NzEzOTQxYTE5M2EwNjkyODkxNmEwNDZmNzVkMTU1ZDc5ZjYwNSBweTNrCis3MDcxMCBjYzAyYzljMjkwYTk0ODRiYjkyNjlhZWZhOTcxNDI5ZTUxMjQ0YThiIHJlbGVhc2UyNi1tYWludAorNzA3MTEgYjlkNmZkZjBmYmIzNjFmOThhOTNhMjA3NDk5MTg5NTIxZTdmODMxNSBsZWdhY3ktdHJ1bmsKKzcwNzEyIDg0ZTk5ZWZjNjdiMmIxYTBmYWNiZmNjYmJiM2Y5ZDAzODYyY2YwNzcgbGVnYWN5LXRydW5rCis3MDcxMyBmNWMyYmNiMDk0N2I4YWE1NmY5NjM5NmY2ZTFjOGJmMGE0MGNiM2I0IGxlZ2FjeS10cnVuaworNzA3MTQgMTRjYWUxMTYwNjlkM2NmNWRjNzg3YjliMGYyZDZhNTJlNzg5OWQyZSBsZWdhY3ktdHJ1bmsKKzcwNzE1IDFiN2NjY2EzNGYyZmE2OGZjOWM1ZWM4MzVmZjUyZjkwYjU0MDlmMTMgcmVsZWFzZTI2LW1haW50Cis3MDcxNiBhYWFmMzI2OTQ4NzZhNzY5YjA5MDgxZThiNDU3OTAzNzBkNzFhMTI3IGxlZ2FjeS10cnVuaworNzA3MTcgOTY1MjMwYjMzNzlmMWI4MjVjMmYwMDlhNjA3ODE0MDc4YmRjODYzYSBsZWdhY3ktdHJ1bmsKKzcwNzE4IGI5YzQ5OWU5Zjc0ZGE5NWI5ZDgzMWU0OTFkOGE4MDlhNWJhM2EyY2YgcHkzaworNzA3MTkgYjRhNGY0YjYwOGFiYjFkMGRmMDVhYTc4NzBmNDM3MjU4YzAyOTk0MCBsZWdhY3ktdHJ1bmsKKzcwNzIwIGFjMTY0YjU0YzhhOGEzYzE2YzQzNTUyNzU1NTA2YTQ0ZGViMzU4MDQgcmVsZWFzZTI2LW1haW50Cis3MDcyMSBiNGFkNTk0OGUxOTdiMjZiNDk2NGE4YzE1MWVmZWVkYzUyZTJiNGFiIHJlbGVhc2UyNi1tYWludAorNzA3MjIgMTAxNGYwYWJkYjU3MjEwM2NmNzk3ZTIzMTZlNmJkMDVmY2I4N2U3MCByZWxlYXNlMjYtbWFpbnQKKzcwNzIzIDQyZTg3ZmY5ZjY1ZGJkMjY3NGU5ZjcyOWIwMGJlYjE1OTNiNjQxMWUgbGVnYWN5LXRydW5rCis3MDcyNCBlYjU1MmE1OTA5ZmI4ZDIxNzZkYzU5ZGIyZWI0ZWI2N2U1YTZlM2E5IHB5M2sKKzcwNzI1IDM5YjYyYjJjYjJjNzYwMjNlMGQzOTAwYmFlNWVmNTY0ZjM3MjUwYjAgcHkzaworNzA3MjcgOGRmNGUwYzA2ZTk0MDI2M2EyODRlZjlmODhlNGJmZDJiZDk1Yjg1ZCBsZWdhY3ktdHJ1bmsKKzcwNzI4IDJkMzhkZTAwMmJiZWJiZjA5N2I5NjViYWMzYWY2OTg5Y2U1ZDFjMWEgcmVsZWFzZTI2LW1haW50Cis3MDcyOSAwOGJmMzE4NDhhNDIyYWMxOTE2YzYwZTQxMjY0OWI1N2IxNjMxM2Q3IHB5M2sKKzcwNzMwIDJiZmY5MTIxYmUwZjY0YzllNDc4YzYzYmU4NDhmZjUzNWVmYzFiZDUgbGVnYWN5LXRydW5rCis3MDczMSAxNzViYTc2ZTljMmI3NGIyOGNkMGMyOTA2OGEyMzhlOTNjMzNjY2UxIHJlbGVhc2UyNi1tYWludAorNzA3MzIgOTg2NTU5ZGE1NGRlMTQxMDRhNGFlMGQxYzA3ODQzNzRjMzgxMmVmZCBweTNrCis3MDczMyA4MWFhNDBhYjM0NmQ5NjE2YjAyODM1OGYyZmRlNzg5NDA2ZWZlYTRkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3MzQgZjJjOTBmZDA1ZDY2ZGM5Yzc4ZDExYzA2MDk0ZDJhN2Q3Y2NjOWU2ZSBsZWdhY3ktdHJ1bmsKKzcwNzM1IDE0ZTI3NTBlMjUwNmU1NjZiNTMyMjkzN2M3ZWU1N2MyZGIyZGNiYTMgbGVnYWN5LXRydW5rCis3MDczNiAzOTUyMzQ2MWVmN2UyNDcwMzVlOGYzZWIwMzg4ZTA0YzhiNGY1MTAzIHB5M2sKKzcwNzM3IDk3NGMyYmVmMjgwMGYwYWRlNGE1OGQyZWNiYTkwNTZiNjhlZjA4ZDUgbGVnYWN5LXRydW5rCis3MDczOCA1NzMwODUwMTVhYTg5MzQ2NzQ5ZDI0NTZmMzk4MWJlOWUzMjM1OGJkIHJlbGVhc2UyNi1tYWludAorNzA3MzkgODU3YmU1ZDk1MTIwOGNhZTBhMTA3ZDlhZDFiMGMwNjgyODkzNGU0NCBweTNrCis3MDc0MCAzNzZiODIxZGI0MjhiOGY3NWQ1ZTJjNDFhZTlkYTk3MDZmMDk1NjczIHB5M2sKKzcwNzQxIGRkOTdkM2MzZmM2NjE4ZjQzZmJhYTc5MjUwNzRhOWY1MzkzOThiZGYgbGVnYWN5LXRydW5rCis3MDc0MiAzYjViY2I5M2JkMTE5ZGI4NmQzN2YxZmQ0ZjIwZGU5MmMyMTViODIwIHB5M2sKKzcwNzQzIDBlMzhiOTQxZDllNDkwYmViNmEzMDJmMmQ2NzJmZGUyYzU4YTJkM2QgcmVsZWFzZTI2LW1haW50Cis3MDc0NCA1NGExMDc2MzgzODk1NTgzYjlkMWQxOTAyOTVkYTFjZmM0ZTc0NjI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NDUgMmU1ZTAwMWQ3ZDM2YWQzYjQ1MjE0Yzk1NTRmM2RhNDU2NjEzNzExNiBweTNrCis3MDc0NiA5OTgyOWM5MDgwNTgxMjc4M2VkM2I4MTg4ZGU3YjQyMDEwZTQwYTA4IGxlZ2FjeS10cnVuaworNzA3NDcgMTBhNjNiOTMwY2JhZTE0ZjAwMzQ0OTRiMGQxZDMyMzFlMjI4M2E1MiBsZWdhY3ktdHJ1bmsKKzcwNzQ4IDI2OGI4ZWIzMWY0OTM2ZTJlZmFkYzQ4NzEwZmU5MmUwY2M4MmIxOWMgcmVsZWFzZTI2LW1haW50Cis3MDc0OSA1MmMzNmU0NTBhNDhhYzVjYTY1YjYzODdkNWQ5MjVjYWFmMTdiZjZkIHB5M2sKKzcwNzUwIDc1NzFhYWMzZTBjMjBhMzczYTI1ZmJmNTZjNTRmNTc1NDE2NmU4ZjEgcHkzaworNzA3NTEgYjhlODdlZGYyZjY2Mjg3MmZiNTZlMzA2YTI0MTg1YWI1ZTA3OTU5MCBweTNrCis3MDc1MiBlY2E5MzkwMjJiODMyZTM3YjdkNjhmMGQ2MzYxNDMxOTAwNDg3YjdkIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NTMgYzM3MWMwOTI0ZjM1M2M5YTkxNjY0NDJmZWIzOTBmODg4NjU3ZDdjOSBweTNrCis3MDc1NCBkZTYzY2JjNTYxYjY4ZTZhYzhiYTZmYTk1NjQzYWFmMzBkMGIzYjY0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NTUgNDVhNzE3NDUwOTYxYzY4Yzk4ZGE4MTU3YTM5OWNmOGQwZWQxNWVlNSBweTNrCis3MDc1NiA3ODBkNjQwMWVlZDZkNWZmYWE1MDkwYWNhZmZlZDhmNjE0MzM2ODAxIHJlbGVhc2UzMC1tYWludAorNzA3NTcgMmZmODlmMGYxZDE5MDJiODE3MTI2NWJkNjBlNGIwYTZjNTIwMDdjZSBsZWdhY3ktdHJ1bmsKKzcwNzU4IGZjZmMyYzk5NGE0YWEwZTc0ZDk0MGQ4YWEwMGU1NTg1NGNkZTVlMTYgbGVnYWN5LXRydW5rCis3MDc1OSA4MzRhM2E5NmQzYWI0ODNiYWFhYjFhOTVkMGUyYzllZmU4NjJjOTZmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjAgZTlmZjBlZmNmZmE5MDhhZDhjZjA3Y2IzNWQ3YjU5ODk5M2RhYzBhMCBweTNrCis3MDc2MSAxZTc4YjNkY2NhNDJhZjNjZmQ3ZmUxZGUzZDI1YTEyNzhhNjJiMWM1IHJlbGVhc2UyNi1tYWludAorNzA3NjIgODAyNzFjZTA5YTY2ZmJkOTliODMzZjc1OGIwMWE2YmQ0YzU3MzdkOSBweTNrCis3MDc2MyA5NGJhMmZhZDkzNzhhNjQzYTRhYzYzZTAxMDdiM2E0NjEyNjNmZmUwIHJlbGVhc2UzMC1tYWludAorNzA3NjQgODBlYzUwZDEzODU3ZjI4OTQyNmUzN2M2Yzk1NDhiZjI4YzJkMGM3ZSBsZWdhY3ktdHJ1bmsKKzcwNzY1IDQyMzlmYTU2MjczNWFiMTE1NGI4OGJlZjc3ZTkwODc4NmYyMzBmNTEgbGVnYWN5LXRydW5rCis3MDc2NiA1NmEwOWRkMGUwZjMzMDE0N2UzZjE5YTM0Y2M2ZjU1OGM4ZDEzYjg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3NjcgZjZiMDUwNWEyMmIzOWQ5NjQ3MjJkMzYxZjhmZTdjNDZmNjEwNjU0ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzY4IDQzZWJhNzg5MTU4ZmRjYTM5YjExZjMyMmVkMTc3ZDhlODM1YzU2YTEgbGVnYWN5LXRydW5rCis3MDc2OSAyZjIyMjcxY2Y5MjQ5OGI4MmJkZmU1MmY5YzIzMTYzYjNlMTlkNGI3IGxlZ2FjeS10cnVuaworNzA3NzAgYTI4ODcxMDlmMzQwNjhlZDBmYzA2YTU0ZDVlODBlOWQxZmI1ZjNkYyBsZWdhY3ktdHJ1bmsKKzcwNzcxIDBhZmI1ZDg5NDY2MTY0ZmRkOGU5YWI2MDczNWY2ZTA5ODg5Yjg0NGEgbGVnYWN5LXRydW5rCis3MDc3MiA1ZGViMjcwNDJlNWE3OWUyNDdlM2FkYzkxY2M2MGI2YjM0ZWIwMDc2IGxlZ2FjeS10cnVuaworNzA3NzMgM2Y4MWQ5OTQ1ZTgyYTBlOTgxYmJhMTM5YmJmYmYyM2NlM2RjOTJiMiBsZWdhY3ktdHJ1bmsKKzcwNzc0IDlkMTc4Y2I1NDY2YTBkNzQyY2E4YTY2MTc1ZWZmMThiMmMzY2Q1YTQgcHkzaworNzA3NzUgZjRjNWUzYTY0YmUyM2E0ZWNhZmRiY2Q4ZjZjNzhhMDczNjkyMzNmOCBsZWdhY3ktdHJ1bmsKKzcwNzc2IDVlY2UwNzg1ZGY4MTNkNTVjY2FhYWRhNDc4ODQ1YjVmMTVkNGZhOTIgbGVnYWN5LXRydW5rCis3MDc3NyBlMDEyNGY1NDBlZTU2NDhlYTkwMzIzY2M3MTQ0YWNhOTExZjE4NWFlIGxlZ2FjeS10cnVuaworNzA3NzggODk3NmVjMmNkZmU1ZGI3ZTg1YjQ2ZTIwYTc2ZmU4NjIxMDZmOWI5NiBsZWdhY3ktdHJ1bmsKKzcwNzc5IGU0ZWZjYjI5OTBlMjVlYjVlYzBlMzk3MTdkY2I1ZTQ2YWVkNTE4ZjUgbGVnYWN5LXRydW5rCis3MDc4MCA5NzA0OTZkYjE0YmNkYjkxN2JjMjk2MzE4ODBlMjY0NTExYWE5NjJhIHB5M2sKKzcwNzgxIGRjYWMwNDU5MjMwMjg0ODQzZGFmMjNiYmU1YWRiNTg5YTVlNTBmYzYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc4MiAwZDYyY2M1YjQ4ZDVjZWNlNDk3NDZmNjE3YTkyODhlNmY1ZmQ0NzFkIHB5M2sKKzcwNzgzIGVhNGM1YzNiYzdhYmI4YzMwYzUyNDllOGZjMDE0YjRkNzEyZjU1MzkgbGVnYWN5LXRydW5rCis3MDc4NCAxMWE0NTY0NzdlODI1ODczM2YzMjU4OWY3YTJiNGZlZGM2Y2ZiOGNmIHJlbGVhc2UyNi1tYWludAorNzA3ODUgODAzZDAyNzNjYmY3YzA5MDU2OTBlNjViMTI2NTNjZGM1ZjRkYjJmMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwNzg2IDc1ZWMxMmIyNDQ0OGUyYjRkYzFjZDU1ZGY0YmIwNjExNTYyMDI2M2YgcHkzaworNzA3ODcgODlkZWEzZGY0Y2I1NzUwYmFmN2VmYTUxZDNkZjc3NjhhYzBiZWYxNiBweTNrCis3MDc4OCBjNjk5NTQ3MDUzYTk4YzE5N2I5YTMxNjBkMTEzYjBjMTVlYzMxMGNmIGxlZ2FjeS10cnVuaworNzA3ODkgMTA0Y2NkMDY0NjFhODg5YTM2ZTRiNDMwOWFhOGMzNDY2MDU1ZTBkNyBsZWdhY3ktdHJ1bmsKKzcwNzkwIGYyOGU2Zjc4MjFiMzFiNzQ2ZTJmNmNiM2ZkOTdjZDI4MmY0MjRkZTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5MSBjMWEzY2VjMGFjZDQyN2YzMThhMWZkMzAyNTIzYzUxMGI2YzkyOGRlIHB5M2sKKzcwNzkyIDcyYmJiMGY4YjA5YTcyMTRiZmQwMTE5YjFjMzllNDJmNWJkNDJjODAgbGVnYWN5LXRydW5rCis3MDc5MyAyNmIxYWQwOWQxYTcyMzdmMmEwZGI1MmIyYWZiOWZjOGIzNTk0ZjcyIHJlbGVhc2UyNi1tYWludAorNzA3OTQgZWUyMjJjNGQxMjlhMmY2ODViOGI5MjY0ZjJhNGZhMjlkMzA2MGVhYiBweTNrCis3MDc5NSA1MjE5NWZjYWIxOTNkNjk0N2UzYmNlZDIxOWYzZmZlOTEzNDQwZTM5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA3OTYgMzgwOTNjYmVkNmE2ZGM2Mzc4ZDRjNmQ2NjgxZDU0ZTI3MDAyNTkzYyBweTNrCis3MDc5NyBkMTJiMDJhYmU2ZGNiNDdhYjJhMTk0YzE2N2VkMjE2NWE4ZWJjY2FiIHB5M2sKKzcwNzk4IDIzMWQ2MWM0M2U5Y2RmZGQ3NjQ1ZWE0M2ZlNTVlMDJlYmFlNjIyZTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDc5OSAzZGE5ZGMwYzY1YzZiMWYwYWQ0MmYwNmViODI2NzcwMWFlNDYyMzQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MDAgYTkxY2YwZGVmYmQ2NzY2OGU0YzM3ZjZlYzE4NGJmMDFiYmUyNjRkOSBsZWdhY3ktdHJ1bmsKKzcwODAxIGQ0Zjg2NjczOWJiMjRjMzQxMmVkNzRkMzUxYWUyYTZhYjFjMTQwMzAgbGVnYWN5LXRydW5rCis3MDgwMiA5NjJlYmE2MjI5OWZiODg4ODdlZDA4ZmE3NGExNDY4OTRlMDBlOTVkIGxlZ2FjeS10cnVuaworNzA4MDMgMjM1NjIyNjE3NDk3MWViODFmN2FlMDYzMmU4YTkwMjJmZWZiZTYyZSByZWxlYXNlMjYtbWFpbnQKKzcwODA0IGVjZjg0MjRkNzQyMjBiNDAwNjlmYjk1YmNmOTk3YmFiN2JkN2QxZDMgcmVsZWFzZTI2LW1haW50Cis3MDgwNSBkMjQ3NWQ4MDY5YWNkYzZmODcyN2NlM2Y4NTYwYTZjYjdiODBkYmY4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MDYgZTQ3NzhlYThlNGIyOGQ1NDZjOTM3Y2UwMjExNjIyOTUyY2JkNDcyZCBweTNrCis3MDgwNyA2ZjQ2MGI3YWNmOGY0YmNhNzEwYTkwODU4N2FjMzdlMjA4NDZjMjY1IGxlZ2FjeS10cnVuaworNzA4MDggYzk4YTcxZTk5MTYyYWNjODZhMmU0MGEyYjAzOGM4MTRiZWJiY2Q0MCBweTNrCis3MDgwOSAwN2Q2NTE3MWE4MDA2OTExYzc5NzM0NWEzNTIxZDE1NzUzOWVlNDliIGxlZ2FjeS10cnVuaworNzA4MTAgNGFkYWI3MjQzMzM5OTViYTE3YjM1N2JkNjVmZmFkODc0YzhlMjEwMCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODExIGVlZDRjN2ZhM2UwNTg3NDJkYjE4MWM5YzE2MWQwMzE2MzM4ZmFkMzcgcmVsZWFzZTMwLW1haW50Cis3MDgxMiA4OTlhYTJkMTg5ODQ3YjdmNWM5NThhOGFlMWM5N2IyZGQ0YjIzM2EzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4MTMgNjkxMDc5MmZjZDRiNjQ1OWUzZmMyNGVmMTMzYzZkMzM4ZTllNjE5ZiByZWxlYXNlMjYtbWFpbnQKKzcwODE0IDRlZWIxNGE5YzVkMmQ3MWM1MTJkM2M3ZmQyYWYwZDgxZGI5M2QyMDQgcmVsZWFzZTI2LW1haW50Cis3MDgxNSA5ZWNlYjYxODI3NGE1MjFmYzU1YzBiNWQxZmM4ZTExMWI5MWJmNmQ2IHB5M2sKKzcwODE2IDkzMmExZTUxNGMxNjIzNGZjY2I0MjNkZjdhYjNjMmYxYTAzMDhkMDQgcHkzaworNzA4MTcgMjFjMTU5NGFjMzY5ZmEwOWFiN2VmOWQzOGNmMzJmODc5MmE4MGY5NSBweTNrCis3MDgxOCBjMmIwMTRiNTViYWMyNDFlMWY4MjkyNjI0NjJlYjA0ZDFkMGI1NzE5IHB5M2sKKzcwODE5IDIyNDJjMmU2YzczYWM2ZDY5MTA0NmNjY2U3ZTAzYjBlNjhmZmM2MzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgyMCAwNWY5MGNlY2IyYTI5ZTBkZTA1NGNkOWM2ODQ0ZDZmNmNlNjgxNGNlIHJlbGVhc2UyNi1tYWludAorNzA4MjEgNjY5NGYzYTFiNmU3Mjc5ZWU4YmM2NzQ0ZmMwM2E5MWQ3MjRkODk3YSBsZWdhY3ktdHJ1bmsKKzcwODIyIDIzNDUxYjA5ZjE1YjkyM2E4MWRhYjhkMDhhOGQ2YTZhYjliYjFlZjkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgyMyAyYjQzNjMxMGZjOGJiMDU4OTljNmY0NGE0ZmNkOWMyY2YwOTIxNTRkIHB5M2sKKzcwODI0IDQ0MzYzOTFkMmE5ZjI0YmU4MjEwN2U3MjEyMmQwMmI4Yzg0MzE0NjggbGVnYWN5LXRydW5rCis3MDgyNSBhYTdjZjMyODNkNmUwNjI2ZDBlOWYwOGRlYWYzOTZkZTA5YzgyZWJmIGxlZ2FjeS10cnVuaworNzA4MjYgNDg1N2NjYTQ1YWE1NDMwODA4MDc0NmUxN2MwMzYwZjZkN2Y5OTBjZSBweTNrCis3MDgyNyAzOThlYzk0MDI3N2Y2NDc2Y2RiYzJlMmEzZTY2MGM3ODQ0MzBkNzYwIHB5M2sKKzcwODI4IGUxMjk0NDZkZmJmOWExYzJkM2FjOTIyNTc3ODE5MGE4MjBkZjNhYjcgbGVnYWN5LXRydW5rCis3MDgyOSA1MTQyOWExOTZjNzVhZTIzYTMyODgzYmRlYjEzYzk2YWM3OTE5ZWEyIHB5M2sKKzcwODMwIGFlNjBlNGMyMGFlMzNmODQ2NDYyZWQ1MmJiM2M0OWVmM2U4NGMwMjAgbGVnYWN5LXRydW5rCis3MDgzMSBkOGNlYjI2YzY2YzQ4YzJkZmRkNTE4M2YwMjlmM2U2OTVmZjcyMTdjIHJlbGVhc2UzMC1tYWludAorNzA4MzIgZGFmZDk4MmRmY2Y0YTBlMjNhZDU3MzZmM2I2MDBiZjU5NzFiMjg4YyBsZWdhY3ktdHJ1bmsKKzcwODMzIDUzNGZhZjkxODdlODQwMGEwYWE1M2UwYWM2YmEzZjEwODBhNGVhMTcgcHkzaworNzA4MzQgMzc1Mjg3MzI3Y2U5ZWZjNzAzMzEzYTA2ZWVjYzlmNDcwMTA1NTE0OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODM1IGQxODZkMzUzY2M4MTcwZmFlMWFlNzAyMzYxNWRjYjk1MzY1ZGRiNzMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDgzNiBiOTg1MjNiZTBhMTU3MDlmYWI5MzEwNzBmNWJjMGVkNjQxNjVlZjRiIGxlZ2FjeS10cnVuaworNzA4MzcgMTFkNmU1MzhhMjc5YjRhMjg3ODRkYThlZDJhY2Q1ZTBhZWM2MjViYyBsZWdhY3ktdHJ1bmsKKzcwODM4IGEzYjJhOTcwNmZjMzZlMjJjMTg1NDJhMTgyMGZkYjViY2RiZmMwZTMgbGVnYWN5LXRydW5rCis3MDgzOSA2YTZkZDhhYjNmMjI4N2VkNjcwMTliNjJiY2JhMGYzYjEyNTIwN2U1IHB5M2sKKzcwODQwIGEzOThhMmY3NWQ0NDRmZjVkMTM0ZGNhYTJiNjhmOGU0OWIyOWQ1ZGYgcHkzaworNzA4NDEgMWQxZWIxNDliMzIzNzFiMTEyZWNjOGQyZDI5N2RlYzM0ZTA1YjQwNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODQyIDcwNzI5ZTczNTNkYjAzNTQ4NGYxZmU5ZDViNTA3ZGM4Mjc1ZTYyNWMgbGVnYWN5LXRydW5rCis3MDg0MyAyZDgwYzI3OTc1MDEyZGYyOTkwYmRiZjE3OWE1MDZlYmI2NTdkZjI5IHB5M2sKKzcwODQ0IGRiNTAxODdiNGMwY2I5MTViNmU1M2ZiMDQzMGY1YWIwNjY2NjRhNmYgbGVnYWN5LXRydW5rCis3MDg0NSA2MjU5ZjgwZGMyNGQ2MDg0NGI2NzJhOThlNWQxMjA4ZTZjMDJlNDk2IHB5M2sKKzcwODQ2IDg0MDAzMmQ5ZWZkNjJjYWI3ZjhmMjU1OWE1N2VjOTQyOTgyN2Y2YjUgcHkzaworNzA4NDkgODcxNzEyODNkMDJmOGRkZjMxNjc0NGYwZGU5M2UyN2U1Zjg2MTlkMCBsZWdhY3ktdHJ1bmsKKzcwODUwIDZkZGJkZmRiN2E4NmQ5YWQ4MGU4ZmU1Zjg1ODkwMTgwNzgxYTU1NTEgcmVsZWFzZTI2LW1haW50Cis3MDg1MSBkNDk1YTExYzc2ZTk4ODVlYWI0ZDhiMzg3NjE3YzU5ZTE0M2VlMDI3IGxlZ2FjeS10cnVuaworNzA4NTIgNzY2M2M0OWM5YmY2ZGNjN2FmMzk5Nzk4MzhlMzkxNGJiYTBiZDQ2YiBsZWdhY3ktdHJ1bmsKKzcwODUzIDA4Yzg2ZjQ1YWM5MTU1YzVjZWQ3N2VjY2U3YTY2OTAzMzRlY2I2MzEgcHkzaworNzA4NTQgZmVhNzRkOWIyYTVmMzI2MTdmOTkwNzJhMDc0NTE1MmNkMjA4ZjZjNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODU1IDYxNTQ4YjNlNGNhODNlZjE3YzgzYmEyYTIzYThjZjRkNTRhMDFiNDAgbGVnYWN5LXRydW5rCis3MDg1NiA3NjQxYTNmMGIyZWMzNWVjYjg3MGJiZGE2NWRlZjIyZDlmODMyOTVjIGxlZ2FjeS10cnVuaworNzA4NTcgZTVkOGYwYzBkNjM0MDYxMzI1ZDE1NGFhZjhlMTdlZjBmMmQzYzllYSBsZWdhY3ktdHJ1bmsKKzcwODU4IGEwMjBlNjk4MzhiYTcyYWU4ODU3MTNkMzJjMDUyNzM2NGE1NDNiNWEgbGVnYWN5LXRydW5rCis3MDg1OSBkMDI3NTU3NGM3Y2ZlM2FlN2RkZjk1NGJjNDNkMGRmY2FjYTdiNzliIHJlbGVhc2UyNi1tYWludAorNzA4NjAgM2Q1OTgxNzUwNjhjYmIyYzhhNDAzZWIwNGE2MTYzNjc2ODNiMDZjYyBweTNrCis3MDg2MSBlZjI4MTZjNTZhYzJlZTY3MjkxMTJmZDliNWQ3NzUxYmRiYzk1Nzk3IHB5M2sKKzcwODYyIDhmNTFkZDA5ZjNmMjNjN2ZhZGU5OGQyNmRkMmQ5YWE2OWRiMDBjOTUgcHkzaworNzA4NjMgMTUxNmZhMjIzZmMxNGI0MjkyZjA2MWQ4MjQ4NGZiN2U1OWViMTY1NiBweTNrCis3MDg2NCA1MTBlZDA1N2I5NWZhODZjNjA1ZjQ4YTg1OGI2NmFmODM1MTg5ZGYyIGxlZ2FjeS10cnVuaworNzA4NjUgNTQ2YzUwMjFmMDI3OGUzMzBkZDU2M2M0ODZlNWVhNzNiMTBiMjA5NiBweTNrCis3MDg2NiBlMTYwN2Y2ZDliZTg3NTc5OGEyNTdhMDJhZDE0MTNhYzQ1MDQwNmRhIGxlZ2FjeS10cnVuaworNzA4NjcgZTcwYTZjNDZiM2FiNDBmMzNiZWUzOWVhNzA4YmU2MmEwYzZlY2Q3YiBsZWdhY3ktdHJ1bmsKKzcwODY4IGY0YjkwMDE1ZWYwMDk5MjI2OGE2OWU0YzljMTQ2YjFmMGJjMzhlYjUgbGVnYWN5LXRydW5rCis3MDg2OSBkM2UzMWJkNTQzMGFiNjlhYWVkNjU0Mzg2YzFkNDFlZjRkNTRiZTQ3IGxlZ2FjeS10cnVuaworNzA4NzAgMDJkYjJkMzQwMTMzNGIzNWNlYjk3MjQ4YzFjMWRiYWNmYTE5NzhmYyBsZWdhY3ktdHJ1bmsKKzcwODcxIDUzYzFiNWY2Njk2NTJmZmQxNTI4MGQ5NWYwMjJmNzBjYTAwYjcyMTYgbGVnYWN5LXRydW5rCis3MDg3MiBlNmIzZTY5NmRiY2U4ZDQ0YzNmNThmOTFhOTI1NWJiYjQyMTAxNjg3IGxlZ2FjeS10cnVuaworNzA4NzMgNjA5NmVhODFkZTBiN2E5MzhmNDI2MGEyMTlhZTBiNDJiOTE5OGU2OSBsZWdhY3ktdHJ1bmsKKzcwODc0IDY4YjdlODIxN2M3ZTUwNDYxOTNhMTFlNzQ2NTFkZTg2NTJiOGMzNTYgbGVnYWN5LXRydW5rCis3MDg3NSA0NWJhNDc1ZDRlOThjNzI1NjY3MGYwMWM1N2U0NmI5M2VkZDc3ZDM3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzA4NzYgYjJhZGI3ZWJkYjU0ZjI3OTBiMGQwNzI0MTRiMTg2Yzk4OTMyMDEyOCBsZWdhY3ktdHJ1bmsKKzcwODc3IDExMjY2OWRmZjA0YWJhZjM1MWYyNTIyNWIwZjJjNTE3NjNmMDQxOWYgbGVnYWN5LXRydW5rCis3MDg3OCBhYjliN2Q1ZGI5MzU4ZmIzZGRiN2E2ZGZiMmE2ZDRkMGFjZjM1NTgyIGxlZ2FjeS10cnVuaworNzA4NzkgM2FlYTc1YTM0MzM3M2ZkOTY5MDJlZTc2NzM0YWUzMjZkZTBlNjM0OCBsZWdhY3ktdHJ1bmsKKzcwODgwIDBjMTdmN2JlZTJhMDY5MGRlNjVkODlkOTk0OWVhNWFjZGFjNjJiMmIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MDg4MSBkOWM4ZDFhNWRkZWUyMzU1ODk1NzU5ZTcyMTJhMGViMTc1ZTNkZDgwIHJlbGVhc2UyNi1tYWludAorNzA4ODIgOWY4ZDZkZTg5MDM1MjFhYjY5MmQxNGZhZDA0MTBiNTdkZGRmMzE4ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcwODgzIGI1YWE4YWE3OGMwZjFjMTE0MzA2NDcwNjQyOGMxYmViNTBkNWQ1OWQgbGVnYWN5LXRydW5rCis3MDg4NCBhNTMwMWVkYWE3MDRjYjMwY2I2NjIzNjZkNmJlMzc1ZWFkMDlhODg3IHB5M2sKKzcwODg1IDFkN2E3NzJiM2IxODM3YmU5MGJkMDczZDExMWJjMjAxM2M4ZjA2ZDUgbGVnYWN5LXRydW5rCis3MDg4NiAyYjljOTE2Njg3Nzc0ZjZhMzNlNzZlYjJlYWZjYzExNjVmY2E5NTE5IGxlZ2FjeS10cnVuaworNzA4ODcgMDliNzBkNTg4OGJmYjRhMjE1MGUzNmM4YmU0ZGU5MDU0NWFlMTFmZiByZWxlYXNlMzAtbWFpbnQKKzcwODg4IGVmYWE2N2JiM2YwNmZhOGU0MTZhNjNjZjU1NzdiMjlhODNjMjcwYjMgbGVnYWN5LXRydW5rCis3MDg4OSBjYjA5NjkwNzFmMmFkOTRjOWY1ODQ3YzcwMDkwN2NhZmYyNzU2ZDcwIGxlZ2FjeS10cnVuaworNzA4OTAgOTYwOWVkN2RlYWY4OTA1MzA3MThhMGVhN2FiZGMwMTZmYjY3MTFmZSBsZWdhY3ktdHJ1bmsKKzcwODkxIDA3YzVjMGQ5ZTcwMDBhY2QxZmU0MTk4ODRjYmUyNDFjNmEzZGEzNzIgbGVnYWN5LXRydW5rCis3MDg5MiAyMWIyN2UxMTVkZDI1MDBiNjM2YzRjOGNlNDI2MjFjOTViNmQ3Zjg5IGxlZ2FjeS10cnVuaworNzA4OTMgZmJkNDA1NDgxMzBkZTdjYjYwYzI2MjAyOTNlMWExZjkxZTRiMDdkNCBsZWdhY3ktdHJ1bmsKKzcwODk0IDU3NDQ0NjhlNjA5YmRiZjU4ZGYxNjY2MmYxNGI5NDYwNjIzMGQyYjYgbGVnYWN5LXRydW5rCis3MDg5NSA4MGZmODVkODdmNjc1YmRjYTZjYjg5NWUzMTEyMTZhNTEyNTg5MWNlIHJlbGVhc2UyNi1tYWludAorNzA4OTYgZjZkOWMyMDg5MTcwNzQxNzIyYWNjOWIzNjdlOTM3MWNjNGUyNzRiYyBsZWdhY3ktdHJ1bmsKKzcwODk3IDU4N2ZjZmJlMDhiNjM4OTg3YTlhMGZhZjhlNDA3MDlmMWQwMDM1MmMgbGVnYWN5LXRydW5rCis3MDg5OCA2NjQwOTk2ZjA0ZTc0NzFiZjRkNjdmOGU5YzdmMmRiMDZjZDVlMWQzIHB5M2sKKzcwODk5IDNiZjlhZTQzNzYwNmM0YTJjNmIzMmNhNmU5OTNmMzcwNDdlZWI2NjMgcmVsZWFzZTMwLW1haW50Cis3MDkwMCAyMWJhMGIzZmU4MTlmZDZjMzdlNzgyMTI2OTgwYTQ0M2M4ZTMzYTBhIHJlbGVhc2UyNi1tYWludAorNzA5MDEgMGQwODNmYjA2NjVkZjk3YjAzMjExYzQ0OGE2OTk2Yjk0N2RhMTVmYSBsZWdhY3ktdHJ1bmsKKzcwOTAyIGZhOTI0M2JmNTI1Njg2NjIyYjNkNjI5NjEyMWJlYmJmMWM1MDJjYjIgbGVnYWN5LXRydW5rCis3MDkwMyBlNTI4NmJlMjRlZDUxMDZhY2M4NGEzNWY2NmVkNjllNjRkODgwNmRkIGxlZ2FjeS10cnVuaworNzA5MDQgN2RmMjQ0MTEwZGQ1ZmExNzk1ZThiM2FhNjg3YTEyZDdhMjU1Y2ZjZiBsZWdhY3ktdHJ1bmsKKzcwOTA1IGI2NTc5NzhkNTZhZDZlMjEzYzc4YzQ3Mzg0Yzk5ZWM0MWUwMmZkMWQgbGVnYWN5LXRydW5rCis3MDkwNiA1ZjNmZTFmMjZiMzZkMDlkOGYwZDM4MzYxZjc2Y2U4OTZkMjQ0NGQzIGxlZ2FjeS10cnVuaworNzA5MDcgMTgzOWI4NTUzYTJkYmRjYWU5ZWFlYjgwOWMxNGUwOGU5YTUwNmFjMiBsZWdhY3ktdHJ1bmsKKzcwOTA4IDVjZjc0MTM3YzBmODYwOGNkYTk4ODRiMzE0MjQ5OTBhYjAyNzQ1NDQgbGVnYWN5LXRydW5rCis3MDkwOSBlMjgxOGI5Zjk2NGJlODJhOGU2NTc2NmVjZTM1ODBlMzU3MDQ1YTZmIHJlbGVhc2UyNi1tYWludAorNzA5MTAgNTg1NmZhZTAwOWU4NmQ1NjNjYTM1MTBiZjQ1YWVlNjFlOTQyMTBlNCBsZWdhY3ktdHJ1bmsKKzcwOTExIDFlMDUzNDMxOWEzZWU3ZTY3NTE0ZjRkYjhkNzUzODUwYzAxYzc3OGEgcmVsZWFzZTI2LW1haW50Cis3MDkxMiA5Yjk2YmQwOTA5MDhhNjc5MzhiMTc1N2FiMmVmNTlhZWFiZTM0ZWZiIGxlZ2FjeS10cnVuaworNzA5MTMgMTExMzUyMTEyYWZhOGVmMmI4YjgyMmNhNzYzYzFjNjAwODhjNmZjYiBweTNrCis3MDkxNCBmN2IxMWJmMDFhMTI2NGQyMjIzNjcyMTg5YmJkYTUxYjY5MzAyZmUxIHB5M2sKKzcwOTE1IDY5NjQ2ZjljZDcwYjUxMTg1Zjc1MmY3M2NhNWNiYWQ4NGZlZTYyOTggbGVnYWN5LXRydW5rCis3MDkxNiBmYTNiMmVkMjBkODU3MjhmMjNjZDA3MWNjMWMyYmY4OWY3ZmVkYzZlIHJlbGVhc2UzMC1tYWludAorNzA5MTcgOTE0YTVkZWQxYmUzYzlmNmY2MGVmYjY4N2VmYjBjYzA1ZWZlYmQyNyBweTNrCis3MDkxOCBmZmExM2FmZjI5ZGIxZGMwMDc2M2Q4YzYwMjc4OWE0ZDI5MjVmOWRhIGxlZ2FjeS10cnVuaworNzA5MTkgODg0M2E4NDI3YThjODJhZjExODY5Yjc1ZWE1ZjdjZjgxNjAwMzc0OSByZWxlYXNlMzAtbWFpbnQKKzcwOTIwIDgyYWRlZGZkMjMyNGY0YjM5MGQ5NTNiMmU5NzQ0ZjlhOGY0ZWZkZDUgbGVnYWN5LXRydW5rCis3MDkyMSBmNzU4ZGQyYTg5Njg5YmMyMDA2NGFjYmE2NzdjM2EwNjBhM2QwMWUzIHB5M2sKKzcwOTIyIDk4MWE5YjNkOTdmM2FmZTJkNzJhZjY4OWE5MGE2M2VlNmM1YzdlMjkgbGVnYWN5LXRydW5rCis3MDkyMyBkM2Y1YTlmMDQxZDg0MGNmZjE0ODE0ZDVlNTIxZTNjOTU5ZDVjMWQ3IHJlbGVhc2UyNi1tYWludAorNzA5MjQgMzBkODc0YjFjNGE3MjM0M2VmNjQ3OGViYTExNmZjMTRkMDkyNDhkMyBweTNrCis3MDkyNSAwMDJmYTkyMDVhYWUxYWJkODQzNWQxM2YyYTQ3M2ZiN2E4MjgyMTE5IHB5M2sKKzcwOTI2IDdhNzdlNGJlYWU2NjVkODA3MzNiYmE3MjNkZGU1NWI4NWE3YWJhNDIgcmVsZWFzZTMwLW1haW50Cis3MDkyNyA3NjU1MTQyZjUyMjQxNGFiOTI5ZTkxZDM5YzI1MDZkZmQ4MTVkNzRjIGxlZ2FjeS10cnVuaworNzA5MjggYjQwMjZhYzc4MTE0NjUzNTc1MmFhOGY3OTczYzQwYjE0N2Q5YTI2YSBweTNrCis3MDkyOSBmODQzNDA4ODY5MzZjYjJlODVjY2Y5ZjRmZTZiMmQ1YTg4MGVlZTcwIHB5M2sKKzcwOTMwIDU3MDQ0YTM2NTJkOGI0MmUwODJlYTlhMGJmNTE0MzBlYTI1OWMyYWUgbGVnYWN5LXRydW5rCis3MDkzMSAxODRjYTYyOTMyMThmOTZmNDJhNjcyOTE0OTY3MDMxNGJhMDE4YTkyIGxlZ2FjeS10cnVuaworNzA5MzIgMDRkNDE4OGZiNDExNjA1ZTk1YmE0MGVmZWExMWNjZDg0NTRkZDYzNSBweTNrCis3MDkzMyAxYWMxMTkzYTYxZDJmNWY3ZDI4NGFlOWMwMDk5ODFjNDgzZDc1MDZlIGxlZ2FjeS10cnVuaworNzA5MzQgZTU1NWZkOGM0YjZlZTc5ZWYwMzQyYTE2NjU1NTdjZTA0MzdiZDRjYiBsZWdhY3ktdHJ1bmsKKzcwOTM1IGQ4NTA5MGE0ODBiYTRhYjBiYTRhZmE0NWNjNWRmYmJjM2UwYzdiZGUgcHkzaworNzA5MzYgNTEzZDk2YmYwZDcwMzUyNmQyMWM1MjYxYjRmMjQyMDA1NWFjMjYyMyBsZWdhY3ktdHJ1bmsKKzcwOTM3IDFiYTY1YTkxZTU2YmU5Y2JmYjE2NGY0NmM3MzkzMWZhN2NkOGQzMWIgcHkzaworNzA5MzggNzlhNDIwNjE3NjQxM2NkYWY4ZGMxYTMxZjI1NWZmN2NmZmM5YmRjMyBweTNrCis3MDkzOSBjYzJjNzEzM2RhNGY1ZjQ3NjJiODJiNTY1YWIzOGJkN2MyODZmZDQ0IGxlZ2FjeS10cnVuaworNzA5NDAgNzYyMzU1ODBhYTNkNDdjMDQ0YjdjOWMyM2ZlN2Y0NzU4Mzg3NDhlMSBsZWdhY3ktdHJ1bmsKKzcwOTQxIGZmYTgxYmQyZWM3MmQ2N2RjNjMxMzk1NTdkNWNjNTkwNTczY2M4MDYgcHkzaworNzA5NDIgYWNmYzE4Y2RjZGZiNzcyYmU0NmZkN2M3NjdhZWM3MmI4OTQyYTRmZSBweTNrCis3MDk0MyAwODJiMjUwZDVlZTUwZmRiOTE0ZTk5MTk0ZDcxN2QzMWIwZTk5NTFlIHB5M2sKKzcwOTQ0IGZhN2MzNzY1ZDEwZmY0YzNlZmNhOTFhYjIxZjdiOGQwYTBmZTk0NWEgbGVnYWN5LXRydW5rCis3MDk0NSAwNTMwYWFkZmY2OTZkMWI2NmM2NjdjYmQxOWIxMGQyY2MyNTkwZWM1IHB5M2sKKzcwOTQ4IDczNDdkOTE2ZjEzYWU0Y2UxOTIzNDY0MWNmMWNjNGQ1MzNkNTE0MmIgcHkzaworNzA5NTAgZGE3NDQ4ZWJjZThiMTE4NjU3NzgyOGIyMTQ1OWZhY2Y0NGU1OWEyNSByZWxlYXNlMjYtbWFpbnQKKzcwOTUxIGRjNTNmMzcwY2E5ZDc0NzUzYTk1MDA1NTdlOGRjM2JlMDJmNWViYzUgbGVnYWN5LXRydW5rCis3MDk1MiAxOTE5MGUwNThkNTk0MzA1ZjA5MTQ0MGRjZjQ3YjEzZTU5YzFmZGU2IHB5M2sKKzcwOTUzIDk3ZmQwZDc2YWU5Y2U3YjFmNTRlYmM4ZWM0ODZmNzc2N2U4YzI1MTMgbGVnYWN5LXRydW5rCis3MDk1NCAwMjdhM2FkYzBkOGY1NjIwMDBmMjQ2YTA3NGJjYzE4ZDZjMTM4YjNlIGxlZ2FjeS10cnVuaworNzA5NTUgYWJmNmRhZDdkNjRmZTI4Mzg1MjdhMGY0NjI4Zjg3NGZlOWU4MjdhZCBweTNrCis3MDk1NiA3NmQ2MWMxMjYyM2NmOTFlNzg1NWQ2YzA3YWNjZTFjZDFjMjc4MzA3IGxlZ2FjeS10cnVuaworNzA5NTcgNDZmMWNlNzYxOTllYjQ1MTk5ZmRlMTM0ODkxMjY1MDI1Y2FjYjc2MiBweTNrCis3MDk1OCBkZjVjYjM4MzZiMjgyYWViMmUyYWUzNjExMWRiZjhlNGNkZTlkYjczIGxlZ2FjeS10cnVuaworNzA5NTkgY2UwZTI4ZGNjYmMyMjhhYmI5ZThhMTc0NjI2MDZmM2E3N2JlNjIxNyBweTNrCis3MDk2MCA4YjUxZDk2MzYwYjAzYzVjNjUyMWI1MGJlMGRjOWNhNDk0YTdkNWE4IGxlZ2FjeS10cnVuaworNzA5NjEgYzNmMDdiNjc3YWZhNjc0OTM2ZDFlYTM0OGE2OTExMWIxYzA2ZGQxOCByZWxlYXNlMjYtbWFpbnQKKzcwOTYyIGU5ZmM1MjJhYWU5YTczOWM1MzczMWMyMmJiOWJkZGQzZTAzYmIzZmIgbGVnYWN5LXRydW5rCis3MDk2MyAzNDU2NjcxYTcyYmMxNjZiNTExODIzM2U3MDA2NDE2ZThhMGE5M2MwIGxlZ2FjeS10cnVuaworNzA5NjQgMThiZDNjZjUyODdmZjAwODlkZGM3NmE5OGNkNDI4NTdhMmUwNTQ4MSBsZWdhY3ktdHJ1bmsKKzcwOTY1IGI1ZDIzZmE5YjhhNDg0N2YyMzliN2FiNDljZTE2MzQ5ZTc0MTA3ZmEgbGVnYWN5LXRydW5rCis3MDk2NiAyODdkZjNhMDlmMzUzMGUzNTViN2M2ZTcyZDU0NTEzYWQ3ZDdkZTMxIHB5M2sKKzcwOTY4IGU4ZWYxM2M5ODU5NzA5YzVkNWI2MzI3M2JlODI2OWMzYTBkN2MzYTEgbGVnYWN5LXRydW5rCis3MDk2OSAyZTRkYmIzOTU0MTdjYjZkNDAzZDQ1ZWI3ZWU0ODA0MmZhN2IxYjczIGxlZ2FjeS10cnVuaworNzA5NzAgYzMzN2YyMDI4ZDhjNzdlMDc2ZWU3MGY1MjU5YTQxYTAzZWNjNDQ1YSByZWxlYXNlMjYtbWFpbnQKKzcwOTcxIDE2YzE0NDI2MjM3NDYyMjJiMDMwZmE4YmEwNmFkY2Q2YTNiNmUxZDQgcmVsZWFzZTI2LW1haW50Cis3MDk3MyBjZTNiNWNhZjQ1MjJjOGExOTgwMmFmMWUxZGY1MTZiZTc4ZDY4OWIwIHJlbGVhc2UzMC1tYWludAorNzA5NzQgOGRmZjQwNjQwM2JlMmZmN2U0MGJjNjJjZTdjYjJlNTU2ZDc0NWYxMiBweTNrCis3MDk3NSBiODE0YjBjMzUzNDcxY2ZiNGI3NDcyMDgzMmE0NWZlNTZhZjMwYjljIGxlZ2FjeS10cnVuaworNzA5NzYgMmQ5NWMwMTQxMjE0Zjg0ZTQ4NWIwMmM4ZWNmYzRlZjlhNmY3OTBiMCBweTNrCis3MDk3OCBjZWY4YjgyNTlhYzk4ZWI5NzlmZjBjYmEyMTYxNTY0Y2Q0OTEwMTY2IHB5M2sKKzcwOTc5IDdlMmJiYjRkYmY4NzU5ZTE1NDFkNzVjM2I0MDM4OGE4MjUxMzgzNjMgbGVnYWN5LXRydW5rCis3MDk4MCBhNzMzNzNjY2NjYzIxZTBkZjI1M2FlZWRjMzU0MTNkMjg3MzU5ZDFiIGxlZ2FjeS10cnVuaworNzA5ODEgNDJkYTcxNTRiMjcwYmJkOTc5MjliMzFkYWE5NzQzNzRkZDNiN2UwZCBsZWdhY3ktdHJ1bmsKKzcwOTgyIDY3NTQxNWM1YjkxMjU3OTM4ZGFlMGVlMmNhYzY5Yzc4YjNhNGEyMGYgcHkzaworNzA5ODMgNmI2YWM2YWM1NTY2YTg0NTc0YzU4Mjc2MzUwZDkyYzVhZGYxYjQ3NiBweTNrCis3MDk4NCBkN2Y0NzhjNjgxYjllMzA1ZThmZmEzMjhkZjY4YTg0ZDZhYzBjMDk0IHB5M2sKKzcwOTg1IGY4YWE4ZDNkNjYwNzhlOWJhMDAwYjkzYTNhZWJiYTg5NzU5MzdmM2YgcmVsZWFzZTI2LW1haW50Cis3MDk4NiBlOWU4N2QxYTM4OWM1M2QwYmI3NTE4YWM5NzQyMzdjOGEwOWRmMGRlIGxlZ2FjeS10cnVuaworNzA5ODcgZjE1ZTdhOTMxMzM0ZDUwMGU1N2NkNTM0ODJkMWUwMWIxMDU3MDJmNyBweTNrCis3MDk4OCBhZmZjZjA3MDU0MzlhNWI2ZDZiYmIzMjQ5NzlmYTc3NjM4YWZiY2ExIHB5M2sKKzcwOTg5IGY5NDI4OTNmYTRkOGQ5MmI2NGI2ZTFmYTg3NjcxNTZjNDRiM2QzOWUgcmVsZWFzZTI2LW1haW50Cis3MDk5MCBkYTJjNmRkMjZlODhkYWQwMjI0NWNhYjYyMTcwOTRkOTc1ZWU0ZDRiIHJlbGVhc2UzMC1tYWludAorNzA5OTIgOWU1NzliYWI3NmYxYzU3MmE1MjA2MWFhZTcwZTIwNDZhNzUyY2RhMiBsZWdhY3ktdHJ1bmsKKzcwOTkzIDUxMDJiYmY0YWI3NDk1YzU5MThiMjczZjFjZmEwMWRhNGI2NmViZjAgbGVnYWN5LXRydW5rCis3MDk5NCA5ODU2YjViZTI2YzRjYWJkOTFjM2ExN2VmZTNlYmMyODBjMGE2NzU0IGxlZ2FjeS10cnVuaworNzA5OTUgM2IzNGM5Mzc0OTU1MmIwMzIzMzEwZjVlMWRhM2E3NzVmNGU5YWUyYSBsZWdhY3ktdHJ1bmsKKzcwOTk2IDllZDlkMjA0MTMwNjY1NDQxYzhmZWUzYTdmNGUwYWFhMGE0MDI1OTUgcHkzaworNzA5OTcgODNmOWUzZDEwZWRjNDg4ZmM3OGUxMWVkNjEyMjM1ZWY4MWU5ZTc3YyBsZWdhY3ktdHJ1bmsKKzcwOTk4IGUzYTE5NjlmZGJlNWUwYWZlOTkwYmE4NDE0MGFjNGY2NGEzNzAzODYgbGVnYWN5LXRydW5rCis3MTAwMCAxZTFkYWRiYmRkMDFiOTc5MzkyNDYzN2M0ZDJiYjM4ZmE5NjllNTNhIHB5M2sKKzcxMDAxIGNmNzNmYjVjYzNhYzlkODNiZWNkYTRjZmUzOWIyZDM3ZWIyZTczMmQgbGVnYWN5LXRydW5rCis3MTAwMiBiNDNmMTRjMTAzYmJjM2FhZDE4MzMzMzVkMWFhYTI3NDc2YzRhMWUzIHB5M2sKKzcxMDA0IDJkZmMzMzcxNzQ5MzhmODU1YjViMzA4NTQ1YzM3NjFmM2FjYTc3MWIgbGVnYWN5LXRydW5rCis3MTAwNSA3NTViYjFmOWIwZTU4NmZmZjE0NzU4MTBmMTNhZjc1NGZkNDk4Nzk0IHB5M2sKKzcxMDA2IDFiOGQ2OGRhZTU3MjEyNTUzMzM5ZDVmOTc4ZTNkNGQzOGJkOTJjNDEgbGVnYWN5LXRydW5rCis3MTAwNyBlYjYyMjE3YmJiNTM3MzdiZTc0YzcwYWI3MzEzYjIzYzE4ZDBhN2Q3IHB5M2sKKzcxMDA4IDg1MDNhM2QwMjU0ZDhmNjQ3MGJlYTM3MjA0MGJmZmM4OWRlOThkZWUgbGVnYWN5LXRydW5rCis3MTAwOSBkMzQzZTgwMmIyNzYwYWE3MDBjZjJmZjdmMTdjYWMzNmNlNTQwNDc3IGxlZ2FjeS10cnVuaworNzEwMTAgMDgwZmRmYzQzZjk0MTg2ODY0N2QzOTI3MGQwMTA5NjUwZDRiYmE0OCBsZWdhY3ktdHJ1bmsKKzcxMDExIDM2ZjI1YmZiM2ExYmNjZGQ0NDNkNzI4ZjMyYTU3NTdmYTc3YmYwZTIgbGVnYWN5LXRydW5rCis3MTAxMiBjNWE3ZWJlYzU5ODQ3YWZkNTZkNDY5YjQ2NzJmZTQ2NzU0NjM1ZDllIHB5M2sKKzcxMDEzIGE3M2Q3MzI2MzExZGQ4Yzk1MDcxNTY2YmFhMTM1NjA1ODgwODRlMDMgcHkzaworNzEwMTQgZjM5MDQ2NDYzOWZiZTg1ODAxMWIwYzY2MGIzYjYwNzU0MGQxMzk2NiBsZWdhY3ktdHJ1bmsKKzcxMDE1IDQ3NWJhNDNjY2NiMWU1MjJkM2I5NTU2OGYxNDE1OTA3MzdjOWI0ZGYgcHkzaworNzEwMTYgYzAxMzhiMmQ0ZWVkYzk5MDUwMGJiYmZlMWNmZTRkNTRkY2E4NTFlOCBweTNrCis3MTAxNyA5MjZmZDIxN2UyZGNhMTI1MzEwNGEwMTZlMDUxODliNTk2YjRlYjU5IHB5M2sKKzcxMDE4IDMzZWIxNjk3YzM4MmRlODU4M2E5YmVmZjYxMGQzY2I1NTFiOGE5ZjEgcHkzaworNzEwMTkgMzVjM2UxZDdjZmRmNjE0NzE3MzExOGM0NDBhZjViODJkYzZhOWUyYyBsZWdhY3ktdHJ1bmsKKzcxMDIwIGJjMTViNDgzZDM4NDZkYTBkOWVhMzA2Yjc0YjdiYzFkOGQ4ZTg5N2QgcHkzaworNzEwMjEgYTBlMjExYjA0YjJlMGM4NGQwMjU0NmMxZDU5NDUxY2MxZjJkYTRhYSBweTNrCis3MTAyMiAxMDg2ZDdlZThiMGIzZmVmZDcwNzhlMjVkMzVmOWJhYTIxNGM5ZDc4IGxlZ2FjeS10cnVuaworNzEwMjMgYjk4NDQ1NjE5NmFmMjY5ZDEzZjVhOTQ3ZTM4MjhiNGYwMjg3NWZmMiBsZWdhY3ktdHJ1bmsKKzcxMDI0IDdlODZmYTI1NWZjMjI1Y2Q3MjBiMTZmOGFiNjJlZDI0YjIyMDJiYzIgbGVnYWN5LXRydW5rCis3MTAyNSA5MDY5MGViODUzODBiZDNiOGMyMTMwNGY4MGJjMzYyNDkzNTVkZTI5IHJlbGVhc2UzMC1tYWludAorNzEwMjYgZjYzNGM1NDU1YjRmM2FiNTA1MWIyNjNkNTYzMjJlYzBlMzJlMjA5YSBsZWdhY3ktdHJ1bmsKKzcxMDI3IDNlMWE4MDUyNWYxOGEwMTExZWE4MTY0YzU2M2Q0NTcyYWMzNzZjZmMgcHkzaworNzEwMjggOTUzNTUzYWU4Yjg0ZmYwZWY5ODNkOGMyMGZiZDAyYWM4OTFlOGE2YyByZWxlYXNlMjYtbWFpbnQKKzcxMDI5IGMzMzk1OTM5Mjk1M2IwMWFmZTYyMTkzM2NiOTlhZjFlZTA0ZjlkMGQgbGVnYWN5LXRydW5rCis3MTAzMCAzN2ZmZWFjM2ExYTY4ZDZmZjU3Yjc2ZDAzMTVhYTgwYTc4Yzc2NTk4IHB5M2sKKzcxMDMxIDFlZjNkYTZjNDM0Y2ZiMjI5N2IyZDJhYTI3MzBhNTk2OGRmZTc5MzggbGVnYWN5LXRydW5rCis3MTAzMiAxYjUwZjc4Y2RkY2JiODcxYTQzMjgyOTkzYjQzZTZiMzJiZmE0OWRhIGxlZ2FjeS10cnVuaworNzEwMzMgZmQ1ZWUzZDBmNTUyOGY2NTZkNjg2YTY5NjUxNDhhZjg5YmU5NzIyYSBsZWdhY3ktdHJ1bmsKKzcxMDM0IDU0ZTA5M2JkODg3ZWE3NGQzMDNhNWI3MTI2NTZjZWI2ZWU4N2U2ZDQgcHkzaworNzEwMzYgMjNhMmUxNTg0YzAyYWYyZWY0ZjkyMzNlOTdiNDUzOTdhMTUyMDA4ZiBsZWdhY3ktdHJ1bmsKKzcxMDM3IDhkODRmMjIwZmYyNzcwOGUwNzU3Yzk1ZDllOTUyNDA0MDc3NzQ4MzQgbGVnYWN5LXRydW5rCis3MTAzOCA1ZjE3OWY2ZjA3ZTBmZjgzNDg1NDgwODdhYWExYjBmZTU1MDVmZjc1IHB5M2sKKzcxMDM5IGZjYmUxYWQyNGQ0MTBlZDdkODMxZGU0OGRkOWJmMjBkZWM1ZjhmMjcgcmVsZWFzZTI2LW1haW50Cis3MTA0MCAwYmM2MmQ3ZGJmNTQ5MmY0MjA0ZDY2MmU2MGMwZDBjNjZhNGQ2MjQ2IHJlbGVhc2UzMC1tYWludAorNzEwNDEgNzFmNjEyOWRkYWQ0NjZmOTYzZGE4YzBkNDI5ZTMwODYwYWUyNmE0MiBsZWdhY3ktdHJ1bmsKKzcxMDQyIDUzOTE2YWFjY2YyY2MyM2M4NjU3NDkyMDFiMmIwOTEzNjVhODVjYmUgcHkzaworNzEwNDMgMWFiZjllMzBjMTlmOWYyMmVlMjhmZTIxZWI1MzVjNTNhNGMyM2M0ZSBsZWdhY3ktdHJ1bmsKKzcxMDQ1IGFjZGQxMWUzOWYwYjAyMjU3NDFhZTAyZmQyNDFhNGQ5YjlkNmYwNDkgcHkzaworNzEwNDYgYzU4OTQ4M2E3MmFjYTU1NGNkYWU5Y2YyNTQ5OWNjMjAyYjRlNTBjZCBsZWdhY3ktdHJ1bmsKKzcxMDQ3IDM1ODBkM2MwNzJhZTUwMzJiMTNhZGEzODRlNjlhOWRiYWZmMzUyMzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA0OCBhMzNiYzgxODNlNGMxNzY4MjY5YjU0YTI1ZTVlNjYzOTE0OTZjZjI5IHJlbGVhc2UyNi1tYWludAorNzEwNDkgMmUyMjM4Njg4MzJhODFmZmY5ZjczYjBkMzFlNDNlMWU4MGUyNmU3ZiByZWxlYXNlMjYtbWFpbnQKKzcxMDUzIDc1OWY0M2M5Nzg4NzhhZjkxNTA3NTZiODZlMjRkM2FhYjNmODhiODggcHkzaworNzEwNTQgOTQ4OWE5ZTdhZmQ0MzgzMjY0NGI2NTExNDA1NjhhYjAzNjM2MDYzYiBweTNrCis3MTA1NiBjODAxYTY3Y2UyOTJlNmNiYjg0Yjg2ODhhOGFjZTZhOWRkZDJjMzNkIGxlZ2FjeS10cnVuaworNzEwNTcgZjgxNDI0OTcyYWQxMTg3N2NkMTJjNzQ3MTUwZDUzNzgyZGRlODNjYSBweTNrCis3MTA1OCA1NGIyY2QyMWFiNDZjZTRlZGIxYjY3OWE1MmZiYWYyYjMzNGZiYjQzIGxlZ2FjeS10cnVuaworNzEwNTkgN2ZhMGY4MWQ2MDdlNzFhZTZmZjJiOTkwZjgwMmU2ZDdhMzVjZmYwZiBsZWdhY3ktdHJ1bmsKKzcxMDYwIGNkZDU0NzE0NzU2NjdmYzA5ODVjZTM1MjljMTBjNThhNzRjYTBhNjMgcmVsZWFzZTI2LW1haW50Cis3MTA2MSBkMWM1MzY3ZDU3ZDY1NTYxOGMwMTAxZTJjZGVkNTBlOWIzMmM1N2I0IHB5M2sKKzcxMDYyIGUwMmM1YjRlNGU5MmVkYzkwYTAzNjFmOTI4NDBiNDFiZTI2NjMxYTYgcmVsZWFzZTMwLW1haW50Cis3MTA2MyA5OGMzNDQ5ZGEzNjkzYmQyZmJlMjJjYmFkZWNhZWE5YTRhNzI5NmE3IHB5M2sKKzcxMDY0IDFiNDgzOTExYjJlNjY4ZTA0MGMzMzQxNGNmOWMxM2U4NGEzMmE5YTMgcHkzaworNzEwNjUgYmVkNTI0ZWMwODUwY2ViNmQ0NzdmYzgxYjI3ZjcxMjM3YmYxOGRjOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMDY2IDY2NDY0ZGIzODJiMTRkNWJjMDQ2ZDEwZjhlMzQ3ZDQ0ZTdmNzJmYTEgcHkzaworNzEwNjcgOWI1MzVjZTk5ZDJkYWE3YmQyMWEzYTliNTMwMTJkYjRkMzExN2M4ZCBweTNrCis3MTA2OCBkMjhlYTJlZTcwNzBkMzYwNTA1MDU4MDEzMThjOTk5ZDhlYzE5MTJiIHJlbGVhc2UzMC1tYWludAorNzEwNjkgNjcyZmQ3YTQxZDM1ZjJiZDhhOGYxYTE4MmJiZWM4ZTA2YjQzZmExMCByZWxlYXNlMzAtbWFpbnQKKzcxMDcwIDc1ZWZkNzU3NDM0Yjg1Zjg1YzVlN2YyMjVmZTBjZjFhYzM3YWJmNjMgbGVnYWN5LXRydW5rCis3MTA3MSBiM2Q1ZjY4NWQyN2FjY2E1ZWE2Njk4NDIyOTkyMTc2NzlhNDYwNjExIHB5M2sKKzcxMDcyIGNiZTE5MTMwYjJlYjYzMTEzNjY2ZTg3YjY1NDY1NTllMTQzODFkZTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTA3MyAyMGU3YWE0MmQ2ZmU0ZDk4MTczYzE5NzM1YzIyNTQ5OWFkNmNkNWIyIGxlZ2FjeS10cnVuaworNzEwNzQgZjEzZWU4YWM2ZDU0NTI3NzUxZDI4MWIzOThhMWI1OTg1ZGM0MTdlOCBweTNrCis3MTA3NSBmM2M0ZmYyMTRiMTFlYzZmMTIzOWNmYjZkMDE1NTQwYmMwOWRmOGNjIGxlZ2FjeS10cnVuaworNzEwNzYgNWMzN2FiMDdhN2RjMzQxOTg4MjZlY2ZmMzVhNzRhZTkzODQwZGYyMyBweTNrCis3MTA3NyA5YmUyZTE2YTcxZGY1YjY1NTg0MzQ0ZmIxMWExMmM1YzE4NjhkZDI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEwNzggMzliZTlhYzg5YmU5OGZmY2MyOWY4ZTJiZWJjMWQ0YTUxNTRkNmNlNiBsZWdhY3ktdHJ1bmsKKzcxMDc5IGY2MjAyYjNlZjhlYTk4ZTRlMGJlMmJiYWZlYmYxNDNkODM5MDRkNWQgcHkzaworNzEwODAgMTgzZDYwNzJlMWU1ZGY5M2Y4Y2ZmMzkwYjFmODQ3YjNkNjlhMDhhNiByZWxlYXNlMjYtbWFpbnQKKzcxMDgxIDFiZjY3MTIxN2FiZjNjZjc5ZjdlZWJhMmMxNjJiZTRlYzU4YzgzNjUgcmVsZWFzZTMwLW1haW50Cis3MTA4MiBkY2IzNjhmYjZhZGJmYWU1YWU4YzljMzMxOGEyNmRlNWU1Y2YyOWJkIGxlZ2FjeS10cnVuaworNzEwODMgOTg2ODZmMzA3ZGU0MjZjNjA5ZmNkZTBkOTE4ZjMzMzE1MmRiMzZkMiByZWxlYXNlMjYtbWFpbnQKKzcxMDg0IGNiZmJmZjIzM2VmNWMxN2NmNmRlYTllNDhiMTRiZGNjNjlmNDU1ODAgcHkzaworNzEwODUgMmEyN2Y5YWRhOGUzM2U0Nzk0ODExZjFjNzI3NDM5NjZhMjgyNDA4OCByZWxlYXNlMjYtbWFpbnQKKzcxMDg2IGNhYzIwOWNmNWU0Y2M3MzkwMjMzOWU4NzAzMTdjNTlmOTU1ODIwOTUgcmVsZWFzZTMwLW1haW50Cis3MTA4NyBhZTQ4MmU1MmExNmJjMDg5ZTkxNWVlYzBiMGIzMTk0ZDVmYjNjNGNmIHB5M2sKKzcxMDg4IDRlNWZlOGI2ZDEwMWM4ZjM2MWQ2NGI3MDE4ZDE1ZDZkMDdmNzFkMWEgcHkzaworNzEwODkgYjQxYzI5ZGViZGY2OWE3OTA5MjZjZDI5OWMzMDc1NjNmYTUyMzNkZCBweTNrCis3MTA5MCA2OTY2MmJjM2E5ZjZiNmQzMjA4NzFiZTljOTA2ZmY2NDNlMmJmNWI4IHB5M2sKKzcxMDkxIDY0M2Y0NGFkMzg3ZmI0NjQzMGIwNjVhZmE4NjY1ZTY5NjBlZTI2MDEgcHkzaworNzEwOTIgOGEyNmY5NjIwYjIxMThkN2JiMjQyZTAwZTEwODc1NTc3OWJmYzdhYiBweTNrCis3MTA5MyA0NzU3ZGRhYTg5N2RlYzkzZjJmNWEzZDFiODk5ZGQxN2MyMDU0MTBmIHB5M2sKKzcxMDk0IDY4OTQzNDQ1NGNiOGU1MzEyODhjNTJlODgzOGFlNGQ0YmVhYmVlNjUgbGVnYWN5LXRydW5rCis3MTA5NSBhOTgwOTEwNjZlMDFiMjA2Mzg4MTQ3ZmM1ZmNlMDZlNDVjYjlhMDJlIHB5M2sKKzcxMDk2IDI4MDk2ZWQ3MzE1M2VkNjk2ODcwYmFkZWNiMGQ4MjllMGRkNzRjODYgcHkzaworNzEwOTcgYzJmOWUxMzU0MmFiMmFjMmY5NWQwZjBkYTY5YjM1MDFmZmI4N2YzMyByZWxlYXNlMzAtbWFpbnQKKzcxMTAxIDE1YzhlOWRkMTk5NjdmZDAxMTE3MTdmY2NjNjhmYTIyMzU1ZDM3MTcgbGVnYWN5LXRydW5rCis3MTEwMiA1ZjU1ODdmM2M0ZDU1YWJjMjNkMWVkYzZhMmU0ZjlkMDJlZWEwZTk5IGxlZ2FjeS10cnVuaworNzExMDMgNDQ5NTRlNmExMzUzMjNiNDQwMTcwMWY0Y2FmNGFkY2FhOTJhMTU0NiBsZWdhY3ktdHJ1bmsKKzcxMTA0IGZhYTM0NzNlNDUzNDQ4NGJjMjNmZGJlMDIxNjE5OTM5YjE3Y2E1YTcgcmVsZWFzZTI2LW1haW50Cis3MTEwNSBjM2M2YjczNzRiZGEyZWQ4ZDcxY2E5Y2YzMzJiODg0ZTc5ZGFkNWIyIHJlbGVhc2UyNi1tYWludAorNzExMDYgZDE5ZDg5MDEzOGYxZWNiMWY4NDkyY2YzNjljMDVhNWE3ZjEzODcyOSBsZWdhY3ktdHJ1bmsKKzcxMTA3IDJkZjE1MTdkODY4YzlhZjA3MGE4NTU1MjkyZTgyNDY1NTE5MGJiNjkgcHkzaworNzExMDggN2JmNjBkN2IwOWU5YTIwNjJkMjU1NjA4NzlhZGI3NWI1Yzg4Y2IzZSBweTNrCis3MTEwOSBiNGYxNTdmOGU0YTdiOThiNTAyOTVkZjUwYmZiNjk5YTI3YTBiZWU0IHB5M2sKKzcxMTEwIDFmZGI1NjU5ZWUwODk2ODJjMWRkNWZmZDM4NGNiM2QyYWFjNGM2NjIgcHkzaworNzExMTIgMDU1YjMwMjdkNTY4Yjk2Mzk0MTMyMTZjNzI2NjE4MDRkN2RiNmIyNCBweTNrCis3MTExMyA2Y2YxNmVhOGExNmRlNmI3MzQ3ZTNlYjVkN2I2NDFkZWU1ZDNmMDgwIHB5M2sKKzcxMTE0IGI0ZGVmZGQ3ZjQzMWI1MTY5YzA2NmQzNTk3NWRiMzUwY2VkMTNhZmUgcHkzaworNzExMTUgZmEyYWFjNDM0ZDA2MzY1NmM3N2U5YTUzYTE2NTcyOTYwNzcyMGFmOSBweTNrCis3MTExNiBmYjdiNzcyN2E3MzFhYzYwOWQ4MzRiZmQ0MjJmNTE1NWYyZDdiYTBhIHB5M2sKKzcxMTE3IDUxNzRjY2ZiMDFiODIxMzk1Mjk0ODdiMDZhMDY4NDkwMGRjMTljNmUgcmVsZWFzZTMwLW1haW50Cis3MTExOCA0OTI1MTk2YTJmZDhiZDUyMmMwZDA5NWI0MTFlNTdlMDM5MDY1YzRmIHB5M2sKKzcxMTE5IGYxMjFiZDk1NmFlMDUxMDlmMzVmN2JlMzNhMzhmYzI5NjY2ZjY1ZjkgbGVnYWN5LXRydW5rCis3MTEyMCA5MDQxOWUxYjQ2NTZiNThmYmQ2OWNkMjQ3Zjk1ODA1N2ZlMGNjYTA1IHJlbGVhc2UzMC1tYWludAorNzExMjEgOGI1M2I5NjliNjI4MWQ4MDE3YzQwOGQzYzYzOTYwZWFiMTZkNjA4MiByZWxlYXNlMjYtbWFpbnQKKzcxMTIyIDU0N2EyMzhhMmFjNDkyNTgxZDM5NTcwMzZmMzIzZGZmOTc5OTBjMjYgcHkzaworNzExMjMgMTQ2YThmZGRiYmEyNzc4Nzc5NDBmNWEzOTNkMTg2NzY2ZGRhYmM0OCBsZWdhY3ktdHJ1bmsKKzcxMTI0IGIzODdjYTdkMGZlNjJjZmVkYmE1NDhjMzQzOTUxOGIwZWY1NzliMjEgcmVsZWFzZTI2LW1haW50Cis3MTEyNSBhMWJlYjE2Y2YyMzY5NGQ4ZTJkMGY0YzNkMGRlZjQ4Y2Y3ZjAxMjdiIHB5M2sKKzcxMTI2IGJjMDg0YTk3MzE4YjkzMzQzNzFmM2ZjYzg4ODY5NThlNWFlOWUwNmYgbGVnYWN5LXRydW5rCis3MTEyNyA1ZjY2ZGVhZDExNzVhMDhkODRiY2RjYzc2YWM0YzEzZjdlOWQyNTYyIGxlZ2FjeS10cnVuaworNzExMjggYzRjYWNiYzliM2ZkMjQ0MjNmZTljNjY5OTczYjRjMjE4ZTc1OWM0OSBweTNrCis3MTEyOSBhODBlMmVhMzg5ZTMwYjNmMDc3MzMyYjJiYzRkMDdiY2QxZDRlMDE5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzAgNTQ0N2UxZjdkYmZmNGNiNjg2NTlkMGY4ZTI5ZjIwYTQzNGU2Nzg5MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTMxIDI0NzRmYTljMzg1NTkzMjE2MmNhZjMyZjQzZTNkZjFkYzE0MWMwZTMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzMiA3ZDg3ZTdjMDZiNTlkMDQ0MDlhY2FhMjA4N2FmOWU0MDIxZGFkZjAxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzMgNDhhMDJkNWY1ZDQyOGQyZGI5ZGJlMDg1Y2YxZGExMmYzZjQ1MTk2ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM0IDI0ZjFhOTg5MmQ0OWNiZTk1OTE3ZTc1YzE1NDlhMTc1MzU5MmU3NTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTEzNSA0MjIyNDhlNmI3M2I5MGQzZjc1ZGI2NjM4NGQyOWYyOWU3NmJlMTFiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExMzYgODE3NWJjMDMxMzRlMzJiOGFiMDNkZjg0NzQ1ZjU4OWE0ZWQyYWM1MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTM3IDY2MWJkNTU4MzYzMjEwYzFkZjM4ZWQwYjAzMzFhY2FmZDkxZThkYmQgcHkzaworNzExMzggZTI1NDJhN2Q0YWNmY2Y3NmZkNmQ1YTk0NjRlOGRjYTAzOTQ1OTZiZSBweTNrCis3MTEzOSBjOWU0OGUwMDhiYjUzNmE0NmE3Zjk2NDYxNjAwZmYyNTAxMzIyNjJjIHB5M2sKKzcxMTQwIDY4MzAwZGExMmRmZTBkYzhiZGExOWIwZGRiMDU2NmFlN2NkOWQyOTAgcHkzaworNzExNDEgOTQxNTAxNzUxOTY5MTJkYTc4MTRkZmFhMDYxNTQ2ZTAxOTUzZGVjZSBweTNrCis3MTE0MiA2MDE5ZmIxZGE5ZTExMzUwYjViOGY2OGI2NWM2ZWJjODc0YTlhMTBjIHB5M2sKKzcxMTQzIGNhOGNlYmE3MzcxNDdmY2RmMzBiMDI2NTY3NWM5OWVlNDNhMTRlMWIgcHkzaworNzExNDQgZDYzOGVjZGUzNTcyNTk0NGJkZTU3OTIzOTdiYjgyMTQ4OTFmNjc3OCBweTNrCis3MTE0NSA3NGNmMjBhNjFiZWNiNjcyNjBjM2EzOWZhMGFlMzdlYTVkYzIxMGM2IHJlbGVhc2UyNi1tYWludAorNzExNDYgNzE2YWNjZDRiNjAzZTkyNjQ4MzMwYzZmOWM0MWUwMzRmZjJhZTRlZiBweTNrCis3MTE0NyA5M2U5MjQwOWNiNDY4ZTk2ZDM5ZTg4YzVhYmRiNTAxOWJmN2ExYjBiIHB5M2sKKzcxMTQ4IGQzNmFmZDA1OGQ4YmI2Y2U1MGQ0MjU3ZmM4ZWZiMTczOTc2M2FhNTYgcHkzaworNzExNDkgZjY1ZjAxMTgzMzFjMjkxODA1NTc3MTA2MzUyZTNmNTNkNzgxNzZjZiBsZWdhY3ktdHJ1bmsKKzcxMTUwIGU3NDVjZWY4ZjQwNzViYzkzNzIzNzdmYzFmMWFjOWZlYmJlMmQyNGEgbGVnYWN5LXRydW5rCis3MTE1MSA2MWI1MTFkMDVlZTk0NzIyNDdjNjIzNDc1NWY5Mjk4ZjNmNmYxNmFjIHB5M2sKKzcxMTUyIDYzNDUwMmJlOGRjY2JkZTU0YTQ1N2U4YzkyNmU2NmUzNDQxODdmMDMgbGVnYWN5LXRydW5rCis3MTE1MyBjYjU4Yzk3Mzk4NWM5YzJlZDFiOWE1MDRkYTYxZjlmNGQwOWNjNTVjIHJlbGVhc2UyNi1tYWludAorNzExNTQgNzNhN2U2YWJhN2IyMTJmMGU5MTAzNWNmMWRlYjNiNTRmMzdmZjk2ZCBweTNrCis3MTE1NSAzNzM0NmRmMmI4ODRmZGVmMzc3NzQ0ZmU4NTY0NGMwZTdhY2JlNjgzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNTYgOGM3YzVhMzU4ZGI5NWU0MWVlMWYwYmE2NmJiMTU5YjNlY2M5ZTNjZSBweTNrCis3MTE1NyAxNzc4NDE4NWFkOTM1MjUxZmVmNjNkYzYyODZkMDUyN2Y0NWE0MDY3IHB5M2sKKzcxMTU4IGU2NTY4YjNjMmFlNzViNjc0NDU1MjEwOGYyN2M0MTQ4MDA1MjgwNDkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE1OSAyZjUyYTNkMTg1YTMwZDdmZjljZjJhYWUxZWM1ZjQwYjJiNDdmZGM3IGxlZ2FjeS10cnVuaworNzExNjAgM2VmOTc1NmZmZGFjZGEyMTU0Y2Y0MGUxNTY2MDI5NmQ2MjUxNDkzYiByZWxlYXNlMjYtbWFpbnQKKzcxMTYxIGJkNzRjNGVkMDNhNDZlZTEzNmY0NWE0ZTU5YWU0YjU5MjQzZjZhMDIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2MiAxZGYzN2YwOTc0N2M0YTljNzc3ZTEzOTk3YmVkM2QzNWI3ZTFjZWJmIHB5M2sKKzcxMTYzIDcxMzU1ZGRmMzczZWQ5ZDdjOWYzMzJhZjMzOGU4ODNmNTRlM2Y1OTAgbGVnYWN5LXRydW5rCis3MTE2NCBhOGYxN2NkODJkODlmMDIxMjQ5OTM2ZjgxNjk5MGIyMjRmZTJkNjJlIHJlbGVhc2UyNi1tYWludAorNzExNjUgYWE4OTMwNjcyYWE0ZDgyM2EyNWZmNzgzMjcxMTgzODU4ODQyMDE5NiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY2IDFmODA3OWVjZDM3MDBjODY1YWIyMDFlNDcyMWIzZGJiMmMzZDMwNjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE2NyA3M2IwMTZlYzViOGZhNzhhYzU4NjEzOTJiYTAzZGIyMTZhYmFiZWJjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExNjggMzQ3NmFkNzU5MGI3ODBjOGM1YzE2MTQ0NDc1YzA4MTQzNmE4MDBiYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTY5IGM1MGMwNzliMDllYjY3MTY2MTkzNTIxZDk5MjBjNDkxMDhjZGNlMDUgcHkzaworNzExNzAgMjhlMzBhNWM2MzlkN2YwZGNlNjE2MGEyZjdkYWZhNWNjZTRhNjM4YiBweTNrCis3MTE3MSBhZGJkZTVjM2I1ZmU0ZGY0MGM3ZjlmZjYzZDE3ZjExMzgzYjNlZjY2IHB5M2sKKzcxMTcyIDQ1OGViZTRmNWE1ODhmNjg2MWQyNDI4ZmMyZGI5M2Q2ODBhZDhhZjQgcHkzaworNzExNzMgN2VlMWNlZmE2ZDYyYjkyOWExYzVlNGFiMzZkZjk5ZDVlYjkxM2NkMiBweTNrCis3MTE3NCA1OGE3YzUwOTQ1MjMwOTdmNjI3MDdjMmRkODc3NzBlY2RkYzBhOTA0IHB5M2sKKzcxMTc1IGEzYmJkZDkzYjM4OWE2NjUyNDBjNTJjMGY4M2M3NGZkOGYwOTM1OWQgbGVnYWN5LXRydW5rCis3MTE3NiBkN2M5NzU1YjYxNzczMzAwNDBhMjY1MTNiMGZmYjM0Yjg4MzdhYjFhIHB5M2sKKzcxMTc3IGNiNDc4MTUyNDcwNDk2ZGViY2I5NTNkZmQ3ODgxZjUzOGU3N2M4NTggcHkzaworNzExNzggMmFhZGMxYWZjOWExOTRkMGEwY2Y3MTE1ZDEwZDExYjdkM2RhYmM5NyBweTNrCis3MTE3OSA1MzQ3NzQwZDRkNWRkNGViMzE5OGZmZjI3NjI3ZDI2NmZjMzFlYWY4IGxlZ2FjeS10cnVuaworNzExODAgZDJlMTU2MjlmYzI5N2EwMDcxN2ZiZjg0YzI3M2JlMjExYjA4ZmYxYiBweTNrCis3MTE4MSA3YzJhMDRlMjE4ZjIxYjkzZDBjN2Q1NzZjZTZlMjZmZTc1YmE2NGIzIHJlbGVhc2UyNi1tYWludAorNzExODIgNDZiNmI4NDE1ZGVlNzZjZmFhYzE1MzZiMzNkYjdiOWU1YzdkYTliNiByZWxlYXNlMzAtbWFpbnQKKzcxMTgzIGIxNGU5ZWM5ZDk5ZjVlY2MxYjYxYTMyY2M3YmNjOWViNjQ0OWQ1NDggcHkzaworNzExODQgOWE5MTJhNTcxNjRmNjViYjUxM2FiZTllMjM4YTUzNDQ1NGU4ZWUwNiBweTNrCis3MTE4NSA2OGE5ZTZlMzhhZmE4ZGQ5MmFhNTFiYzRjNzBjZWNjNTcwMTBkZDdlIHB5M2sKKzcxMTg2IGMxN2VmMTRiZGY0MWNhYTNlYWQ0NmM5NjI5NmIwMDc3YTI3OWM3NWQgcHkzaworNzExODcgMzU2MzBjM2VkZDMzYzgwOTBiNTQ3N2E3OWMyODgzYjk5ZTI3M2ZhNCBweTNrCis3MTE4OCBmZjc5MzNmNDRjNDE2MmY1OTQ0YTA4ZGU3YWU3OTJjNTE5ZmVhODNhIHB5M2sKKzcxMTg5IGFhY2Y1MDk0YTFiNTgwZmVjZWNlNGE2MTRlNzQzNWMwNjFjZDM4OTcgcHkzaworNzExOTAgMWQ3OTNlZTE1YjZmNmU4ZDhkMTM5MjRlOTFhODdhZTM4NTE1ZWRlYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTkxIDQ5YWVmNDE0MWI5M2YyODc1M2Y3Y2FhNTVlOGI0ZWY4NzI5ZDU1NzAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTE5MiA1YmM4Y2YzZDkwYjM1NTMxMjgzMzU3YWIwNjJhZGFiN2ZhYjBkZTVhIHB5M2sKKzcxMTkzIGEwMTRkYzQ3YjU1MmViN2UzNzJiNzQxZmU4ZGViZWVkNTUxYTVjOWIgcHkzaworNzExOTQgZWU0MzBlNTA3NWRiMmFkZjgxMjRlNmI5NDkxNmE4OWNhNDFkMzE3MSBweTNrCis3MTE5NSA5ZWY3YmY0ZDg1OTA4NjM5OTI4YmIxNWY4ODdhNGIxMjM4YWEzOTcxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzExOTYgNmRlODYzNmNkODE3MzFlOTQzNTA5MzhkZjZhNjY5YzAxNzQwM2NmOCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMTk3IGI0ZWY1MDJmY2NhMDI4N2VjYzc5NDVkMjI5NTRjY2RjMTIyNjYwNmYgcHkzaworNzExOTkgYmRjNTc0NzgyOTE5ZDc4YzExNTIwZDQzNzc0NDI1NjFiMDNiNTc4MyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjAwIGUwMmJkZDYwODVmZmJlYjViNmQyOTkwNmNmYTQ2Njc4NmI5MjZiY2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIwMSA3NjEwNDhhMGE4ZDk5Yjk2NzBkZWJkNTg2M2I0Y2ZmM2UyZDE3ZDM2IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMDIgMzI3MjYzZmQyZTY2NjNhMTFjZjZiMzRlZTQ2YzFhYWJjN2Q0ZjRiNiBweTNrCis3MTIwMyAxOWIwZGIxMzU0ZjcwZTc2YjlhNTdjOTBiYzA2ZTc3MTlhZTQ3MDUwIGxlZ2FjeS10cnVuaworNzEyMDQgZDkwMDI0NjIwNTY4N2U5MWQxNDE1MzE3YmNkOWQyZDIzZDA0NjA0OCByZWxlYXNlMjYtbWFpbnQKKzcxMjA1IGZkY2ZjYTcxNWJmM2RhZDBkZThiYjQ2NDQ2Mzk5MDk0NTlmNzI4ZmIgcHkzaworNzEyMDYgZTZlNWEwZTQzNTQzNDZiNTNkOTdiN2ZhODgzODU3NDI4ZDVhZTU2ZiBsZWdhY3ktdHJ1bmsKKzcxMjA3IDBmZTM4YmJkOTczY2RmMWIzY2E1YjNkMGQzNWI3MzM2MzI5ZjkwNDQgcHkzaworNzEyMDggZGU1ZjE4NjM5YTZjZTFmYzM5ZjM2NmIwZmI3NTY1NTY3YmFiNDcwNyBsZWdhY3ktdHJ1bmsKKzcxMjA5IDc4ZjMxMGI5NjFjMDJmY2JjNzIzYjBkYjA2NjM4ZjFkNTJhMmY1OWUgcHkzaworNzEyMTAgOTM4NGI0M2Q0MjZmZWU1ZmE0ZDU1ZGU1NmU1MjVkMzhmZDhhOTQ3MCBsZWdhY3ktdHJ1bmsKKzcxMjExIGFkZGQ3NTNiYTRkOTZiNzM2NmJkMzhiYTU5NzVkZmJiOTM3ZmRiZmEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIxMiAxOGYxYzU2Y2E2ZmRiZjBkMzBlOGE0YjQ4YWMzNDRkOWNjMjAzYTUxIGxlZ2FjeS10cnVuaworNzEyMTMgMGY3NzA4YjAxMjhjMDdhZWE0NDU1Nzc5NDNkMjNjMzdhMzUyNWRmZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjE0IDFlZjAyZWY0OGM0MjRiZmM4OWYzNTRjYzhmODk1OTIyOTJmZTAwYTUgbGVnYWN5LXRydW5rCis3MTIxNSA1ZThkZTZjM2UwMDI3NTI2MjMyNjY1ZDNiNGIxMGQxZTJkNDExNWQ0IGxlZ2FjeS10cnVuaworNzEyMTYgZTQyMWE5MmIyNTIwNzhkYTdmYTYwYWY1MGQ2OTgzY2ZhYWRlOTE4MyBsZWdhY3ktdHJ1bmsKKzcxMjE3IDAwMDZiMmFkYzdlNDA3ODM5Yjg2NmRjZDgyY2FmZjg2MTM0ODdlOTUgbGVnYWN5LXRydW5rCis3MTIxOCA1ODdhMmFlZDM5ZjJlZDNkYTQxMDQ2YmRmMzM4NjViN2RiNzM2ZTkyIHJlbGVhc2UyNi1tYWludAorNzEyMTkgZWI4NDUzMDU3N2E1M2EyOTljZWU2YTc0YTUwOWM2MzI2ZWNmZmFjZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjIwIGY1Y2IzYjMzYjc5NDFhNzA0YTI5ZjFmYzYyNTUzMTdmMWYxNTIzMjIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyMSBmNTUwZTI0NjMwNjI5OTNhZTljYmFiZDVlOGY1NmM1NmNjMjgzZDJiIGxlZ2FjeS10cnVuaworNzEyMjIgMmJiYjYwYzAwZWI3MjU3ODIyNDBjMzgwZGQyZjY5N2MxNWIzMzIxYSBsZWdhY3ktdHJ1bmsKKzcxMjIzIDAxZjRlODgwM2VjZGUwMDYxNDBmNDc2ODA3Njc0NmQyZGE4MWEwNDMgcHkzaworNzEyMjQgOThmNDIzOTI4MzViNjlhZWQ1ZmJmODAzZjdiOWYzNTMyODMyMjkwMiBweTNrCis3MTIyNSBhN2M3NGUwOWRlM2RmMGFlMDAxNmM1ZDJmY2I3YzI2MTZlMDcwZDA3IGxlZ2FjeS10cnVuaworNzEyMjYgMTUyZTA4ZGZjMWFmNWU1N2E0ZTMyMmM0OGE0OTQ4YzRlNzA1MTk4OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjI3IDU4ZDE3MTc4MGZkODk1NDUzOWNiNTYxZjQyMGNiMTkxYTc4NWNlOWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIyOCA1Y2JkYjUxNTdmYTc2YzUwMDdiNGY2ZTczNWFjN2NmNmE0MDZlMDZjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMjkgYmZmYTc3Njk2OTI2ZGNmNTkxYzFmZTM3MmUwMDlmYmYyODkxZGJiMiBsZWdhY3ktdHJ1bmsKKzcxMjMwIGViMzJhMTUzN2RkN2Y4YjllZmQzN2Q2M2RlY2UzNDJmZjk0MTI5MjYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzMSBmMWNlYzM3Njk4ZmU4ZDA0MTk0NTVhYjFkNDEwMGMxMDA0MTg4NTI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyMzIgNjYzNTRiZGRkY2Y3NmRkNGYzMTg4YjI0ZTEwNDA0ZjhlNzJiNjUwNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjMzIDFjYmVhYmY4ODhhMTQ2NDJjMWMxMGQ2ODI4YTMxYzc5OTgzNzY1ZDYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTIzNCBlYjk0NTE3ZGZiZDZkN2FmYjBlYmI5ODJiZmMxMzQ0OGFkMTdkMDhjIGxlZ2FjeS10cnVuaworNzEyMzUgODVjNWNlNmQ3ZjljN2NiMDliNjIxNGY0MDQ4ZDk2NzM2YWZmMTI3NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjM2IGVkNzgzM2Q0ODJjODFmMmU3N2ZmOGM0ZTlkNWQ5MmViYjAyNDJkOTkgcmVsZWFzZTMwLW1haW50Cis3MTIzNyA5NzZiMzA1YWFkZDI5ZTBlMmZmOTAyZjllMzdlZDU0ODA0NTE3YzRhIGxlZ2FjeS10cnVuaworNzEyMzggNmVhZjk3NzIxZDNkOGFkMWYxMTBjZjljNWMxZWQxMTgwMmI4N2Y1YiBsZWdhY3ktdHJ1bmsKKzcxMjM5IDM3ZDZhZjZmODVhYWM0ZGQ4ZDQ0N2Q5ZWUxZTE0MmU4N2EwZWQ5M2YgcHkzaworNzEyNDAgOGM2MWU3Y2FhMDZjZjc4MGE0NTg3NTI2NzgyOTllZDM3ZmRhNTNiYSBsZWdhY3ktdHJ1bmsKKzcxMjQxIGRhMWU1NDgzYWNhMDEzNmE1YjVkOGRkZWI5MDkxN2FlNGY4Zjk0MWUgbGVnYWN5LXRydW5rCis3MTI0MiAzYmJjNjg0NDlmOTRlN2ViYzJhMTFiYzA4ZjQ2YTM0MDEyNzAxYThjIHB5M2sKKzcxMjQzIDEzZWYxMTkwZWRhOWQ2NGUxNWJkZTgxYjI5N2YzNzUxMjc5Y2I3ZDcgbGVnYWN5LXRydW5rCis3MTI0NCAyNGVkNWQ4NTE3MjBjZWUwZTAyYWQ1YTJhZDc2N2EzMTRlY2E3YmExIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDUgOGNlOWVkYzg4OTY5YjhkOGUxZmQzMTgzNjc3NTU0NzM1MWI5YjdkMiByZWxlYXNlMzAtbWFpbnQKKzcxMjQ2IGI5MDg3YjY0NWNlZmJjNDNiYzM5YzdjMjBhMDM3ODY2YWNmYjVhYTAgcmVsZWFzZTMwLW1haW50Cis3MTI0NyA3NjEyYWE4OWJmMDYwZWNkMmNiNWM3Y2M2NGFhN2QyN2M4YmY2NmEwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNDggYTdlNWI5ZDkwYjEyNWZjZTZlZDdkMGMwYjNiM2RjZWQ0YzdlMDhjMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjQ5IDhkMjI4NzNlOWIyNmQxZDU5Y2YwZDM3NTgxZmI1YjE1YjY4MjBlZTEgbGVnYWN5LXRydW5rCis3MTI1MCA0M2M4ODlmZWRhNDBiMTE3NjIzOTk3NzExZDYzYTFmMmZlY2E4YmM0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNTEgYmQxMzM2YTNhNjg2M2FlMjc1MWNhMjY0NzdjYTNhZGY2M2RkMjgyOCBsZWdhY3ktdHJ1bmsKKzcxMjUzIGIyYzY4ZGY5NDQ2MzlkZDQzNGFkM2IzOGMzNDRjYWI4MTE4YzkyNTYgbGVnYWN5LXRydW5rCis3MTI1NCBlNzQwODMzMDFhMzZlMDg3NTVjNDlhZWM4YWYxNmZiZTA1NWI4N2U1IHB5M2sKKzcxMjU1IGExNmEwNDU2OTc4ZjdlZjdlOThiMzJjYTc2NzJmNjk3ZTI4YzVhMWIgbGVnYWN5LXRydW5rCis3MTI1NiBjZmQ3MTM2OTQxYTA5OTkyM2Y4OTBjMmIxODVmZWYzZGE5ODgwN2Q1IHJlbGVhc2UyNi1tYWludAorNzEyNTcgZWNiMjEwM2JhMDI3OWZmNTdjZjQyYWQzNDI0N2YyNzYxODIwNWU5MyByZWxlYXNlMzAtbWFpbnQKKzcxMjU5IDdiNGVmMGI4N2RkY2ZmOTMxMzVjYzEwMzQ0MTQ3NTA5OGQ1NWUxMDAgcHkzaworNzEyNjEgNzkyYmI4ODUwMjlmYmZiMjg1ZmM5ZDM5NjU5ZjNkMmU5YmE4OTcyOSBweTNrCis3MTI2MiA0ZDk3NjExZDFjY2E0OGExNGZmYTFiNjkzODk1NjY0MzJjODM5ZjllIHB5M2sKKzcxMjYzIDY3MmIwYzA0MWJhNjM4NGFkODRiM2JjM2M2NjliZDM4OWEyZGU0ZTIgbGVnYWN5LXRydW5rCis3MTI2NCBjOWVjZDQ1YTVlYTJmMTAzYTM0ZTQ4Y2RlYTA5MThjMWU5YmFiODg3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNjUgMTRlMDBmMGY3OGI3NGNmNDEwNGY3NWM5ZmEwYzIwMWZmNzk1ZDZiMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMjY2IDJkMDBmZjNkMmY1YTNjNWNjYTgzNThmZDUxYmIzYjUwMWVmZThmZGQgbGVnYWN5LXRydW5rCis3MTI2NyBhMTRkZWI5NDgwZjRkMzIwZGFkMmM2MjMzYWNmZDQ0Nzg0ZGVjNjRlIHB5M2sKKzcxMjY4IGY4YzU3NmZhYTlhZDEzZTlhYTY2MDYzYjhiOGRmOTBjZTViODUzOWMgbGVnYWN5LXRydW5rCis3MTI2OSA1NGQ1ZjI5ODZhZjQyY2RkNzhiYjcyNmFmMGZjMDc5NzgxNzY5YWRmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNzAgZmIyZWE4YmIzYTMzZGM3NmZkODU0MTQyZGY4ODE3NDA2YjQ2M2U0MiByZWxlYXNlMjYtbWFpbnQKKzcxMjcxIGIwNDI5YzdmYTcxYWFlZDVjYzkzMjY5NmUwOTNkNWE1MjQ2YzEyODEgbGVnYWN5LXRydW5rCis3MTI3MiA0YWNiYmIzZTY1ZTJiMDU4MjFkNDM2ODllZTNhZjViYTU3MzA0MzQxIHJlbGVhc2UyNi1tYWludAorNzEyNzMgMjUxYmZkMmQ5OTZhMmRmZjhjYzEzMjY0YWE4NWJmYWU1OGIxODQ2MiByZWxlYXNlMjYtbWFpbnQKKzcxMjc0IGQzODg3ZGZlNjYxZjkzNjJjM2UyY2ZjMTM0MzI0MjJlNjBlMTQ1OTcgcHkzaworNzEyNzUgMzg4OWQ5NTI4NjAxZTNiZTE4YTYyYjg0ODYzNmE2MGIyZDQ1MGM1OCByZWxlYXNlMjYtbWFpbnQKKzcxMjc2IDk2OWFkMTBhOGE3MjU3MGI4MWM1ODRhNWE0YTEzYmJjNGE5MGUyMmUgcmVsZWFzZTI2LW1haW50Cis3MTI3NyBkMDg4NDM2YWMzNmIxMGE5ZjMzY2VlOTE4ZjgxOGQxN2QwY2M0OWIxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEyNzggODIzN2RlNjMyZDZmNjgxNWEzNjg4MmY5NjQ1M2U0YTliZTJkODFhMCByZWxlYXNlMjYtbWFpbnQKKzcxMjc5IDhiNTMxNTAxMzRmNWRiMTRkMjIzZGUwYTIzYjlmZGYwNWE3NTY1MmYgcmVsZWFzZTI2LW1haW50Cis3MTI4MCA5YTRiMTkzMzBhYTkzMWFiZDM1ODYxZmNmZWU2MjRmZjRlMGM0NDEyIGxlZ2FjeS10cnVuaworNzEyODEgN2U3ODEzYWRhMmQxODFjNDcyNDliNzlhOTNmZGVmMzNmOGZhMGQwYiByZWxlYXNlMjYtbWFpbnQKKzcxMjgyIGYzYjI2YTcyOWU4MmY4ZmZmYjE3NGQ0OTNjNjljNmU5OWFiODkwNTggcmVsZWFzZTI2LW1haW50Cis3MTI4MyBmNjdhNGYxZjIzMGQ3NDBmZGVjYmE1M2IzNTk0ZjhmZGY5MzI0MDlmIHJlbGVhc2UyNi1tYWludAorNzEyODQgOTM0ZDljM2NiYTQxODRiNzQwMjY5MzhlNjdmNGU3ODk3YzY2MjdiYyBweTNrCis3MTI4NSBiNjkzNDlkNGI5ZTg4MzE2Yjc1ZGM4Mjg2NDc1NjRkNDlmNDZiNzA1IHJlbGVhc2UzMC1tYWludAorNzEyODYgZDZkZTY4NDRmZDcxNDFiMzZjNjQ2ZDA2MGI4OTc3NTU2NjhjZjJmNyBsZWdhY3ktdHJ1bmsKKzcxMjg3IDI0ZmE3ZGRkNGRjY2U0OGIxZGVkZjEwZDY3ZWFkMzBjNWQ5YzNmY2UgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTI4OCAxZDhjYjc2ZTcxOWI3ZTA1MDg0MjkxYjJjOGQyY2MyMTVjOTFiZTQ5IHJlbGVhc2UyNi1tYWludAorNzEyODkgYjM2YjAwYWUyOWZmYmY2ZTU1M2JjNjQ0MjcwZTNhNzJmNmM4NWNlYSBweTNrCis3MTI5MCBiMzNiZGQyNDE0MDIzNTg5YzZlZmNhZGE1ZWUyMjU0MDUzYzFmNTFiIHJlbGVhc2UyNi1tYWludAorNzEyOTEgNDMzZGUzZDU5NjA3OGQxYWU1NWFkMjU5NzRmMDg3YWIwODJiNWE5MCBsZWdhY3ktdHJ1bmsKKzcxMjkyIDBjNmIxNmEyZjkxYjc1ZWYyMTcwYTM2YmQ1OWYyYTdmODYyNWU2ZGUgcmVsZWFzZTI2LW1haW50Cis3MTI5MyA1NDhjYTM0MzU3Y2RhZTVjN2YxOTU1MmIxYTZjZjJiYzdjOWFkZGQ3IHB5M2sKKzcxMjk0IGRhMGMxZjc0Y2EyMDBiYzhhMWZiYWYwMWEyZWQ0YjI2MGRiYzI5OTggcmVsZWFzZTMwLW1haW50Cis3MTI5NSA0Yjg4MWI0YTkwZTk1ZWVkN2ZkNDUyNmM5OWFmYjFmYjIxNTEwZTkzIGxlZ2FjeS10cnVuaworNzEyOTYgMzY0YmQwMDJiN2Y4Njc5ZmVjMTNiYjUxZjEyODMwMmRjMGIwYjFmNSByZWxlYXNlMjYtbWFpbnQKKzcxMjk3IDVhN2EzM2M5NGQwMDFjOGJkYzdjODg2NmZiZDJhNTM1OTY0NDY3MmYgcHkzaworNzEyOTggZWMyZTRiNWEwZTkwZGM0ZDYwZGMwMjQxZjA5MTJlZWQyMzExODQ1MyByZWxlYXNlMzAtbWFpbnQKKzcxMjk5IGQzNmE0ZjkyMDM3ODNmYTk5YWRmOGVjMzk3M2E1YjZkMGJhYTRiYjIgbGVnYWN5LXRydW5rCis3MTMwMCA0MTRhMzExODFlOWRjMzgwMWNiNzNmYTcwZTE3NzZkZGMxMDAyZjEzIGxlZ2FjeS10cnVuaworNzEzMDEgNzM2MDA1MTU5OTliY2EwZjFkZTA0OTY0MzkyNTA2ZDY1OWE1M2JhNyByZWxlYXNlMjYtbWFpbnQKKzcxMzAyIGUzNjM5NThmY2Q3MGE0M2FkMDdiMzlkZjk5OTU1MmQwZmExY2VmYzEgbGVnYWN5LXRydW5rCis3MTMwMyBjNmM0Mzk4MjkzYmQ2ODJiMzU1ZjEwNTBiYjE2YmIzZTE4YzhiNDBmIGxlZ2FjeS10cnVuaworNzEzMDQgOTg2MjAxYWNhNjhiNDM0NGJmYmEzOWRmOGNmOTQxNDc0NDhmZTNlNyByZWxlYXNlMjYtbWFpbnQKKzcxMzA1IDIwNzllZGQ1Mjg1ODc0MmNhZDkxYjE5MzE5Y2NmMjFkNmI4Nzc0OTUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwNiBlZmM3ZTEzYTc1NDIzMjViYjNmNzMwOWZiZWJiMjRlYzU0ODdkNzU3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMDcgYjQ4ODFmOGVjNzA2ZjgxMjEzYmZiY2VjMWQ4ZmQ3MWIzYjA0NDA1YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzA4IDg1OTI2NzdlYjM1MmNmODVjNjA1NWI5ZGJmZDkwNTdlN2ViNjdmYjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMwOSAwNjZmYTBiYTgyOTAwZmJjMjQ5ODcyZjJhZTc0YTE5ZGRiOTdmZmQ0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTAgN2MwZmYwZGU2Mjk1NmYxNzc3ZWM3MzE2NjU2MjhkNDM2MTg0MjdmMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzExIDk5Njg3ZDUxYmUwYTE0MjcxZmE2MmE5Y2Y3MmRkNzVmMjkxMWZkYjggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxMiBlMDEyOTg2YmU0ZjRlNTJmOWFjMTY4ZGFmZWY1ZDg0NTQ5YWVkYTQxIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTMgNTI2ZGIyOGYxMDBkMjEyNWJiODM1NTUzNGU1OGIyNmFiZWE3MzI1ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE0IDMwYjUwY2JlNWM1ZTVmYzhmOWU5ZjBlZDBhMmExMTA2Y2MxZDAyNjMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMxNSBmN2Y3MDEzOWVmNTcwZGZiM2M2NDk3YjYxMzZhMWY5ZWI5NWQ5YjA0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTYgY2VlMWE4NmM2OWMxNWU2NDljMWQ3NTU5YjkzNDAyNTlmNjQyZjliYyBweTNrCis3MTMxNyAwMjYzNTQ2MDI2MWU5YWYxYTkzN2M5ZjYwY2YwZDViYWU4YmIxZWJhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMTggOTg2NDUyYjUyNmExZGY2Y2UwYTgzM2Y0MDMxNWNiMDFlMGQ2YzMwMyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzE5IDA2ZmE4N2YzZWMzNjI3MWZkMDQ3NDBmMzE4OWEwMDllZmRhOWM4NWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMCA1NTYwYTA2OGMwNTc5NWZhMDUwMDUyMTdiZmIzODk1ZmU3MWE4ZmMzIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjEgZTRlZWIwZGFmNjI1NDZjZmQzNzY3Mzc3ZWI2MmFjNzFkMGVlZjMwNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzIyIDQ1ZmQyMjcwYWUxYjhjMWQwODk0OTlhMmFkOTIxMWM1NjdmMjg4MWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyMyBjNWUwYzZmNjU2ZTYzNjg1ZTFhOTg2MGM2YmVlMWU2YzA5MjYzOTJmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjQgMDc2YzcyMjExNTYxMTE5NjU5NjQwYTAyNjdlNjYxOWRlM2Y2ZWMwMSByZWxlYXNlMzAtbWFpbnQKKzcxMzI1IGI5ODQ5ZWZiMjc1NDVjNjgzZDQyNGRiZDg2NDZlMDQyZmViOGNiODcgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMyNiA4ZDY5NzYzYTIzMTdiNTQwNjE4ZmNmYjBhYTBjYjdjYjVmZGVmNDY4IHB5M2sKKzcxMzI3IGQzNDcwYmM2ZDE5MThkYTk3ODU3NmY5ZjVkOGVlMTg3ZDQ3OWU5NTIgcmVsZWFzZTMwLW1haW50Cis3MTMyOCA0YTY3ZDY5MTQ3MjU4NTE1MDczNDU4MGI5Yjg2NWU1ZDBhNzE3ZTdjIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzMjkgZDgxOTg1MTgyYTM2ZDYwODYwYWQ0ZWU2NDMyZDRjNzYzYjQwNDgzMCBsZWdhY3ktdHJ1bmsKKzcxMzMwIDkyMGIwNzkwOTYwMDNkNGY3NGQ2ZTczMWVkOGU5ZDNlN2FlOTFmYWYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMzMSA1YjAxZmU1MTNmOTI4NjRmZjViZDY5MTdlOGYwODA2Mzg4MDI3ZjRlIHJlbGVhc2UyNi1tYWludAorNzEzMzIgNTU0OWU4ZmYyOGQyY2VjN2EzYjI3YmUxNjU1MjNhY2QzZTcxY2QwNCBweTNrCis3MTMzMyBmNjY0MDZmMjYwNDQxZjMwZjg2YWM2YTNmMmQyNGRjMmYwMGRiYWRmIHB5M2sKKzcxMzM0IGEwZWRkOTFlOWM2ZjMxMjYyYmIzZmExMjQyNGEwNTg4NjM0ZDE4NzUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTMzNSBmODI0ZGM2MDEwNmYxMDhmMmM2NTliMmQwZWRkY2EwODVlZGM5MDk1IGxlZ2FjeS10cnVuaworNzEzMzYgNjA5M2ZkYzVlZTk2MmRlMGNlZTlmYmIyNjZiMmQ4NjVmOWJhYjhhOSBweTNrCis3MTMzNyA3YTM5ZjdlNDJiZDk3Y2ZmMjZiYzkxMzM1MzU5YTU0NzBhZTRlNzIwIHB5M2sKKzcxMzM5IGYzOTFkZjkzYzlhYmQ0OWY3ZDAyMGRkNTJkNDE3MzVjYjUyMjQ1ZWQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0MSAzNzQ0ZWZhNDU2NjgxZWE4NDdkODNjM2U3NTY2NWM4N2RjOTk5YzUzIHB5M2sKKzcxMzQyIDk3NjhkYTg2Y2Y4ZTMyYWY2MTc5NWYyYjc0ODIzZDUwZjE5N2FhNTYgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM0MyAyOGJhZTVjYTUyMThkMDRiMmFjNDg1MmY4YjM4NjY0YzMzMTA4M2MwIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNDUgNjkxMTRhMzU2Y2YwZGE3MmViZjQzZDQ1NWMxNTgxZDI0OWI4YjZmYyByZWxlYXNlMjYtbWFpbnQKKzcxMzQ2IDhmYmI5OTM2ZDRkYTJiMTc4MjkzOTc4MDA4NjZiN2RmOWVhY2ZiZjkgcmVsZWFzZTI2LW1haW50Cis3MTM0NyA2ZmNkMTBlYTk5OGE5MjZkNTM3YzA2NDU2MGViMGQ0NGY2ZTc5Mzk3IHB5M2sKKzcxMzQ4IGRhNzNjNDNlNjkxZWRmODc1ZDFhNzIyM2Y5MWFhZDdlODFjYjRlMjkgcHkzaworNzEzNDkgNzE2ZjU5NThiNWYwZGEwYTYxZmQyNzE4MDAzMmZmY2VlYjY5ODU4MCBweTNrCis3MTM1MCA2ZjRhMDg4ZDM1OWQ2Y2U2Zjk3OTg5Zjg0MzYwNzE5NjAxYzBlYzdjIHB5M2sKKzcxMzUxIGMzN2JiMWI3YTQ3YTg0M2UyMGQ4MGZjZTZlODY3N2EzNGFkZWUzMDggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTM1MiA0OWIyNDkyMmViMmRkZjU3ZjkzMzIxZmE1NzE0NDk4MGEzMjVkYTcyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzNTMgNjc0YjIwMDAyMjRjYzg5ZTdjYmMxYWU0ZDEwZWQ1ODkyNjMyYjMyOSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzU0IDMxNTgyNDg1ZmJmY2QxNTM0NzFmMGQ4OTJkOWZmYWQyYzM1NTAzNzMgcHkzaworNzEzNTUgMTUzOTE3YzAwMWJlZmFmZDI2YWQzN2VjMjUxMTlhNzA3ZTExOThiMCBweTNrCis3MTM1NiBmOTI1MzM5MjVlYTY2MjcwNWFiYTBiMDdiZDY1MzJjMDgxN2Y0MzBhIHB5M2sKKzcxMzU3IDk0ODMyNDU1ZTM3ZDU5MGNjYWQ3ODQwMTlkYmU4MWE2YzI0NDRiMzggcHkzaworNzEzNTggNzVkZWY3ZWQ5ZDVmYzYzZjkwNWFiYjJkZDgwMzlhN2FiYzRiNTc4NyByZWxlYXNlMjYtbWFpbnQKKzcxMzU5IGMzOWMxYzI5NzhmOTRmNWI0Zjg0MmM5NmFhNDUzOGUxMTQyMzU5ZWUgcmVsZWFzZTMwLW1haW50Cis3MTM2MCAyYjA4MzE0NmFjZjVjMjY2ODg0NmQ1NmY3YTRhYmZmMzJmMDM5YjE3IHJlbGVhc2UzMC1tYWludAorNzEzNjEgYjUwZjExYjhjYWQ3ZjQxZWFlY2RlMTM0OTE0NGEwNGQ0MjQ4OTQ4OSBsZWdhY3ktdHJ1bmsKKzcxMzYyIDkwZDMyMzgxYTM0MGZiZTQyNWNlMGQ3MTliZmM0ZDI5MjJlYjliZTQgcmVsZWFzZTI2LW1haW50Cis3MTM2MyAwMWYxYWU4MzYzMWFlODJiZDg1OThhMTFjMTdlM2Y5YjNmNTZjMzhhIHJlbGVhc2UyNi1tYWludAorNzEzNjQgMjc1YzBiYTc0ODU4OWU4YTY3ZjFkNmExYTJiMjc1YTM2YmEzM2UzZiByZWxlYXNlMjYtbWFpbnQKKzcxMzY1IDVlOGMzZTc0NTFmZmI3OWNlMTE4ZmMyOTdkODZlYzNkYzAxMGNmOTkgbGVnYWN5LXRydW5rCis3MTM2NiA5YWI1MjQxNzBmNjgyZjMzMmJhMGJiYTgxNTY1YTgyYTFlODAxYWQ4IHJlbGVhc2UyNi1tYWludAorNzEzNjcgZmNlM2FkNGIyM2Q2MGMzNWVmZmQ1YmFiZTlmYzJkNGE3ZmNlNzU5MCBsZWdhY3ktdHJ1bmsKKzcxMzY4IDVjZTIzY2ZiOThjN2Y1ZmJkZjYyMDcwNzZlZGU2YjFjMTNkZTY3ZDEgcHkzaworNzEzNjkgYzg0MjAxMTg5Mzg3M2VhZjBiODc3NzgyZDQ0ODUxOTFmNzQyNTE1NiByZWxlYXNlMzAtbWFpbnQKKzcxMzcwIGUyMzI1MmE4ZmY1OTI2ZmNmYzFkZWY4Nzk0OWRjZGU2ZWE0MTU4ZTQgbGVnYWN5LXRydW5rCis3MTM3MSA1YTQ5NDYyM2NmM2E4MTRiOWUyZTBiYjc2NjgzNWI0YWViM2Q4NDI1IHJlbGVhc2UyNi1tYWludAorNzEzNzIgNmM0NmQ2ZGIyZmQ2YTlmYjFiNTc4MGQzNDczMjdjZTQxZmMxN2NiYSBweTNrCis3MTM3MyBkMTZjYWRhOTYzNzAxOTA3MzgwNTFmYzU3MzJiZjkzY2FhMjFiYmVmIHJlbGVhc2UyNi1tYWludAorNzEzNzQgYmEzYTllYmNlODFlN2MyY2FhZjJhYmZlNjExYjdjOTlmMGQ0NWMzMiBweTNrCis3MTM3NSAzNzk5NzAzMDk0NzU1NjRmOWE2ZDg5MzFhZWU3ZjkwZTZiNTE1NzA1IHJlbGVhc2UzMC1tYWludAorNzEzNzYgYmM3OWJlZjU1YWE4MDZlODMxNTRkNjQ5YTIyZGY4MWQwMGIwZTk4MCBweTNrCis3MTM3NyA0MWU3MjAyZTlmOTMwNDZkZmQ1M2ZiM2NiZGE3NTdkYTZiZDY5N2RjIGxlZ2FjeS10cnVuaworNzEzNzggMjQ4YWRmY2JiNzE1NDRjNmE1NzM1MGZlNzhhNmNjMWZlYTU3ZDBjNiBweTNrCis3MTM3OSBkYjE4ZTc4YjkyZDg2YTAzMWYwYmIwY2YxOTBiODhmOTg2YWM4MTJlIHB5M2sKKzcxMzgwIDBhMWNkYTFlN2MxYzc5Njg3MzFjY2ZiZDIxODlmMDNkMWVmMjg4ZTIgbGVnYWN5LXRydW5rCis3MTM4MSBkMDQ0OTBiZWUyZWQ0OGQyYjlkYjY3OTljODQyNThkMDJjMDFlMWZhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzEzODIgMDkxNzA2ZTE0MDU2MDdhNzYzM2M4NzE3MGY4ODAxOWU5NGZlNGY1NyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxMzgzIGFlNWY1MTU2Yjg4MjY2YWRlNGFhODM4ODRkNDkwNGJkMmZjMGQ1MTYgcHkzaworNzEzODQgZjcxMDU1NTA1M2JmMmY4ZjYyZTAzNjA1Y2JlMDgyMGFhODExOWZjNiBweTNrCis3MTM4NSAxMDk5NDEwMTU3MDMzMDc0YjdlYmFiOWU1YTg0MDAyM2E3Nzc3OWQ3IGxlZ2FjeS10cnVuaworNzEzODYgMjUxZWY5OWRmYjRjNDAxYTg0ZTg5MGM5OTBjZDIwMWJmZGMzYTQ4OSBweTNrCis3MTM4NyA3NGQ5Zjc1ZDlkYzFmY2ZkMGY0NGZkZGRjNzU4NDYwNzRiNmFhMmRhIHB5M2sKKzcxMzg4IDE5ZjdkM2FiZTdjZGUyN2ZmYTE0NjJiOTg1MjI5NzdhYjI0MDg4NGQgcHkzaworNzEzODkgZGYwZWQ5ZWI3OWMzNjU0NWYxY2YxMzJiMTJjMDFkZDI1NmJjZTQ3NSBsZWdhY3ktdHJ1bmsKKzcxMzkwIGZkMTgwYmY0NzIyN2ZkNmE2ZTM0NWI0ZmFhY2JhNDVlMTJkN2MyNGUgcHkzaworNzEzOTEgYTk4YzUwOTA4NGViMzU2MmNjNjZjZmJkNjNmZTgyNWFlYTQ4NWE3YyBweTNrCis3MTM5MiA3Yjg5NjJmNjU5MThiM2U0OTU5N2MyMzc2YjRjYmYzMTYyMjhmMjc0IGxlZ2FjeS10cnVuaworNzEzOTMgNjFlMzdlZmZhZTNhZWFmMzBlODc4NDYxNTRkMThjNWI1ZmQxYzk5NiBweTNrCis3MTM5NCBmZDE2ZTU3OTA5NmUzYTM5MGZkZmZhMDFkNjA3NjE4NTM3YzMwMGIyIHB5M2sKKzcxMzk1IDBiYzA1MjRkMTdjZWJjMjIxYTkwOWM1ZjM2NzQwMDdiZmRmYmQwMmYgbGVnYWN5LXRydW5rCis3MTM5NiAwMjIyNGNiMjFkN2NiOTVlYjQ1MWMzMzI1Y2RlYjYzYzhmZGE2NGY2IGxlZ2FjeS10cnVuaworNzEzOTcgYjE0MDRhODY4ZDhmNDhlZDU3ZWJjNTk3ODJhYTVhNDFiZDVmOTc3NCBsZWdhY3ktdHJ1bmsKKzcxMzk4IDVhOGViYWJhMWEwOWVmZGZlNjQzMmRkYzhmYzcyNTE3ZDkwODFhYmMgbGVnYWN5LXRydW5rCis3MTM5OSBhZmYyYjE1Y2NjNjg0OWFkMWM2MzZkYTAxM2ZmYjg4NTUxODNlMjlkIHB5M2sKKzcxNDAwIDY3ZDlkNjE2MGMxMzRjZGQ4ZmQ4ZWQ3MmMxY2ZmYmVlODQ5ZDllMTAgcHkzaworNzE0MDEgZDM1YzY0ODZhZDk0YTY4NTk2MDM3NzZmZTZmYzM1OGM0MjExMmNlZSBweTNrCis3MTQwMiA2M2I1NzUxM2IxYmRkNDAxMjBhMzM0OWFmMzdlYmI1ZjlhMmJjNzEwIHB5M2sKKzcxNDAzIGQ5MDg4ZWZkNTU4YmQwYjM1OGRiMTdjZjU5ZWFkOTc1ZTQ3N2I3NDkgcHkzaworNzE0MDQgMTgwNTNjZjYxMTVhNTJhNzcwMDRiNTE1OGQ1MTEwOGQ4OTJmM2M2OSBweTNrCis3MTQwNSBjMjMzNjk1N2M1MzU0ZGMwYjIzODYwZmU1MWMzNWI4MjQwYjMxZDEwIGxlZ2FjeS10cnVuaworNzE0MDYgMzA4NjQyN2IwNzA5MjJkYzRhZmY5YWVhMDY4N2RjNWRjYmQ2MzdmMiBsZWdhY3ktdHJ1bmsKKzcxNDA3IDFjYzk0OTk3Y2ZhN2VkYzVmYTk5MTQ1OGY4MWE0ODEwMGIyNzlhZjEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQwOCA5YTczMTdjZTZkYjk5NGFhZTIwYWJlYThlNmNhODVhOTNlYjcyNzUxIGxlZ2FjeS10cnVuaworNzE0MDkgNTM2NzYxYzJiNmE0YTIwZDU0NzkzYWUxNTAzMjZjMGYyYTdhMmE1MyBsZWdhY3ktdHJ1bmsKKzcxNDEzIDQwZWZmM2IxODJlNGQyZmY5MWJjMzBmYmQ0MTk1Yzg4NjAyNjI1ZTAgbGVnYWN5LXRydW5rCis3MTQxNCBkZmE5MWRmZWQwYjA1NDk2YzIxNmQzODIwYzBlMmFlMzBiNDQ2ZjgxIGxlZ2FjeS10cnVuaworNzE0MTUgYTc4OGZhY2VlNmVmNGQ3ODM3ZDAyZDBiYWQ3N2Y1ZGFhZTY2OTNlMiBweTNrCis3MTQxNiA1YWQyMDQzMTJiY2MzMDZiNDgxMmRhOWY1ODdlMzc2ODFkMjJiMDg0IHB5M2sKKzcxNDE3IDJiYTMzYzM0ZGMxYTc5NjQ2YTcyNmQ2M2IxMTM4NjAyMTI1MmUxNjMgcmVsZWFzZTMwLW1haW50Cis3MTQxOCAwN2MzYWMzMGRhODcwNDQxOWJkNTZhMGZhMzA1ZTU4ZGQ3MjU2YWRlIHJlbGVhc2UyNi1tYWludAorNzE0MTkgYWRlNWMyNzE5OGRiZWYwYzk2MjkyYTcwNTdmNmZhYjk0NzU4YTdhNyBsZWdhY3ktdHJ1bmsKKzcxNDIwIGJjOTRiODMyM2IzOWIyOWJkMzc1MzY1ZWIyNWI3ODliODY0ZGE0Y2IgcHkzaworNzE0MjEgZjcwYjNiNWY1MzgwY2U1NDU4NDlkZTVhZmIwNDdlMTIyNGM0YmQzNiBweTNrCis3MTQyMiA3OWU1N2M4NjZiNWY0ZTJmYzFkZTgwYzQ1YTdmYWEwY2ZjOThmMmQ3IHJlbGVhc2UyNi1tYWludAorNzE0MjMgYjRiMjUxMWUwM2M3NTMwYTlhMzRkNTA1NTY2NTBkZmU3MjNmZTQxZSByZWxlYXNlMzAtbWFpbnQKKzcxNDI0IGQzNjEwZTMzOTJjZjQ5YTM1YjI0MTdlN2Y3OGJmMGY1MGZjMmVhYjYgbGVnYWN5LXRydW5rCis3MTQyNSAwOTUwM2NlNjZmZjEyM2FjZjAyZTczMjkzNDc3MGY3YmY1ZGI0Zjk0IGxlZ2FjeS10cnVuaworNzE0MjggOGE0NTYzZDNiNWU4ODk1Yjk4Y2IxZDc4NGRjZWIyZjVlZWE0NTA1ZSBsZWdhY3ktdHJ1bmsKKzcxNDI5IGEyMWM4NDhhZDYxZWM0NDg2OTQ4NzY1ZmU4Nzc2ZTA5ZWE2YWVmYzYgbGVnYWN5LXRydW5rCis3MTQzMCA0MGViOTllODkzNWM2NGRlNGY3ZDU5MDc5ZjU3Yzg0MDUxMGE2NmFkIGxlZ2FjeS10cnVuaworNzE0MzEgYTZmZjE3YTQyYWQzMWM3YTk3ZjU3ZjAwNGYzYzI1YjgyOWNjMjIwOCBweTNrCis3MTQzMiAxMDYzNDgxYTM2ZjhhMmEyYTJhNDVkMTRhOTQxNTEyMmI4ZjUwZjI1IHJlbGVhc2UyNi1tYWludAorNzE0MzMgYTRiYzgwZjVkNmEwZjZiY2M1MTliZjJiZTBkZjA4MTFjNWFjZWEyOCByZWxlYXNlMzAtbWFpbnQKKzcxNDM0IGNiYWExYmMzNTBiYTIwNTk4YmVkM2M5YWRjMzkxYmEyZTBjMjJkMmEgcHkzaworNzE0MzUgNWYzNWM1M2EzYWQ3YjhlMTBlZjFkM2E4MWU3YzM4OWE0N2IzOGNmMiBsZWdhY3ktdHJ1bmsKKzcxNDM2IGY5Njg5ZDE1MGJiOWZkODJjMzMyMTZiNjNiODQ2NjVjMjk4MmQwZjcgcHkzaworNzE0MzcgMGI5ZTY4OTcxYTFlMmY5MjBhMDk1Nzg4Yjg0ZGM1ODJhNjJhZGQ4ZSBweTNrCis3MTQzOCA5ZWE5NTc0ZGFhNWJmNjk0Y2E1NzcxNDY1N2FiZmM0NjlkMTE0NTgyIHJlbGVhc2UzMC1tYWludAorNzE0MzkgNGE3ZGI0MTJmZGQyYWY4ZTJmMDE5YWY1MGE2YzNjYjE5ZmZlOTAxOSByZWxlYXNlMjYtbWFpbnQKKzcxNDQwIGFhOWIwYTZkN2FkZGQ2YTExMDU3OWU1NGZhZGY5OWI3NWMwNmI3NzMgcmVsZWFzZTI2LW1haW50Cis3MTQ0MSAwODljNzIxMDdkN2IxYzYxMjUyYTgzMDEyYzMwOTRiMGYwYTgxMWRlIGxlZ2FjeS10cnVuaworNzE0NDIgOTE2OTQzY2Y1MjQzNmY3NzQzY2UzOTAwNDhiY2IwYTI0ZGMxNWUzYyBweTNrCis3MTQ0MyBkYmI5YjcxNzZlZWYwYzZlMDY1NTVhYWZlYWZiYTMwZmJkZWExNzRkIGxlZ2FjeS10cnVuaworNzE0NDQgOWQ5MmVlYmI3YzMwNTAzZGMwMDZiNzk4NGViYTIzYjA4Njc2ZTRkOCBweTNrCis3MTQ0NSBiNjE0YTUxZjQ0MjM2YTZmOGFkZmYwOTcwNmZkNTEwMWYzMTZlMjNhIHB5M2sKKzcxNDQ2IDZiZjQyNmU1NTFkNTcyZTBjMmNlNTFmYTljZjJhYjk5NDE5ZmYwODQgcHkzaworNzE0NDcgMDMyNzUwNGE0ZjZhMWFlNDc0MTAzMThjNDg2MTliYTRjNzg0NTA3ZCByZWxlYXNlMjYtbWFpbnQKKzcxNDQ4IDRjZGRlZjE0NDQyODI0NGNmMGY4ZTBlMmNlNGNmNDZmYzY4NzA5YjQgbGVnYWN5LXRydW5rCis3MTQ0OSAzMjM2NmIzZTBjYTk5MDcyNTI2NzlkYTc2OTc1MTk0YzNmOGYyYmI4IHJlbGVhc2UyNi1tYWludAorNzE0NTAgMGMxMWMzNDE4ZDg5ZDQ4NmQzZWQxOThjODBlMjkwNjc2MDY0MzNiNCByZWxlYXNlMjYtbWFpbnQKKzcxNDUxIDlhODk5OTk3NzM2Mzk5NGUzYTk4NjhkMzRhYjEzMjg2MWVkZWFhNTMgcHkzaworNzE0NTIgYjkxMjUxNWZlOWNlMjJlYTdhYjkwY2Y5ZDg3YjVmOTBkNjcyZTc2MCByZWxlYXNlMzAtbWFpbnQKKzcxNDUzIDI3OTdlNWU2MDA4ZjBmZTRiYWMyM2FkZTdiNmM0ZmU2ZWU4MTQwZDIgcmVsZWFzZTMwLW1haW50Cis3MTQ1NCAxNWQ2MDc1YzA4NWIxZTAzYjI4M2YwNzdkODc1NmQ4NTMyMzNiYjgwIHB5M2sKKzcxNDU1IGM5NTAyNmMyZjJiYTBjM2UxZTBkNjU2ZGIwN2NhMjJkNjA3NTkyYjQgcmVsZWFzZTMwLW1haW50Cis3MTQ1NiBmMGY2MDg5MmNiYTFjOTM4MDJjNzE1MDVmMTA0YjBlNDI1NTQ4OGMzIHJlbGVhc2UyNi1tYWludAorNzE0NTcgMDZiNjQxNzhhMzBkMGZjYjA4NjRjYWU0ZGRkZjVmYTYyMzQ5N2Y3MiBweTNrCis3MTQ1OCAwYmU2M2M3NTA0MWFkZjdjNDY0NzU0MTlmNTgzMDFiZDFmNjI2MDNmIHJlbGVhc2UzMC1tYWludAorNzE0NTkgMWE4YmRlMThkMzUzNTM5OTNkZjdhMmE1Y2I1Y2VmZDM0ZDhkZWM3NSByZWxlYXNlMjYtbWFpbnQKKzcxNDYwIDc4YTk3MzlkYWZhNDEzZmMyM2NiOGUzZGY1NDJiNjRlZTM5YWRjN2YgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2MSBmNzI0OTc0YjhkODliMzM1YTk0YjQ2Yzg3ZmNlODIzZGIwMzIzZmQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjIgN2UyMjljYTBiOTJhNWU4NjJiNDY3MDcyNjViYjFhYTIxYWU1NzdjYyBsZWdhY3ktdHJ1bmsKKzcxNDYzIGQ5MzkyMGEyNWRhNGM4YzZjMmU1NzVjYzk4MWY5ZjM1MDM2YjFhYjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ2NCA4ZjEzYTQxNGQ4NDMyOTU4ZTVkNzE2YjMxMjkyNGI3YWJiNzViODg5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0NjUgZmI0MWZlNjdlMDYxYTI5YzQ0ODA5ZWVlN2U2ODdjY2U2ZGY4OWRmZSBsZWdhY3ktdHJ1bmsKKzcxNDY2IDFjNTJiMTQ1NGYxZTIwMmZhYTFjZmRjYTgxZWMyZmU3ZTNmZjUzYzYgcmVsZWFzZTI2LW1haW50Cis3MTQ2NyA0NDExMjI0Y2I4MDY4OGI0MWJlZjdmMDUyNWM4YjYzZjNmNjVkNjViIGxlZ2FjeS10cnVuaworNzE0NjggMmEwM2NkMDRkOGY0MDg2MWIyMGM2Y2M3MmZhYjcyODljZDQyOTE2MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDY5IGY2NTJmZTE2NDllZDhmMzg1YmI0NjY3NzUyMGM2Y2I4MzI5NTZlZjIgcHkzaworNzE0NzAgZjM5ZDMzNzUyNTgyMTU1YzZjYTcxYWUyM2IxZTE0NDI5ZGNjZjNmZCByZWxlYXNlMjYtbWFpbnQKKzcxNDcxIDhiMmNkZmQ1YWFiNmZjMzNlMGEwYTQ2ODIyMTVlZDMxZDM2NTIzNDcgcHkzaworNzE0NzIgZWYzNTkyZTllMDFlNWQ1OWZlZTYwZTJjM2Q5ODU5OTYzYWUyY2U5OSByZWxlYXNlMzAtbWFpbnQKKzcxNDczIGVjMjM5Y2ZhM2U2MTc4NTgwNGVlNDY0NTg1OTNiZjFmZTBmODQ1NDEgbGVnYWN5LXRydW5rCis3MTQ3NCBiZjJlZWQ4NjVhOGE0YzM1OTIwYjY2NzYwMjg0NTllMDkyODIzYzExIHJlbGVhc2UyNi1tYWludAorNzE0NzUgNGEzNWM4YTViZTQ2ZmU5Y2NhNTYyZjIwMTc0ZmRmYjk2MTBjZDViYiBweTNrCis3MTQ3NiAwMDAzYjViNGYwYzAzNDljNDU1NTA1ZmViOTBmZDk4MjI1YjEzNmFmIHJlbGVhc2UzMC1tYWludAorNzE0NzcgNjMyODliODJjODQ5MDMwMTBhODMwOTUxN2ZkNzg3ZWFkNjdhMDRlZSByZWxlYXNlMzAtbWFpbnQKKzcxNDc4IDkwMzU2OWIxMzJjMjQ3ODgwNWFmMDQxMTYzNWJjY2JiMjVkZWU5ZDggbGVnYWN5LXRydW5rCis3MTQ3OSAyZTM4YzYxN2ZkM2VjY2ViYzFlYjM0NzI1YzdmYmFjOTI4OGE3ZGU3IHJlbGVhc2UyNi1tYWludAorNzE0ODAgMzQ1NWZkNzg0NjdlNjU4MzdiNzNhOGQ4YTUwMDYxYmRiMDE3MThkYyBweTNrCis3MTQ4MSAzNzMyN2QxOTEyYTgxNDY4NjMxODBiNDg0NDk5NzkwNDczZjA2MzM3IHJlbGVhc2UzMC1tYWludAorNzE0ODIgNTI4MmM2NmQ4OTcyNWJkNDc2NWIzNWZiYWZmMmQxYjA5MzRhYmQyMiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDgzIDJmOWM3YjkwYTc5NTgwYThlNGIxNGU3YzFhOWZkNjA5NGFhYWVjNTYgcHkzaworNzE0ODQgZjM3NmEzY2ExN2QzN2Y5YTMyYTVhNjhjYjJmZmVmNDdmZDA4ZmI5NSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg1IDJkMzcyMDk4ODVlMjdlYjlkNDk3ZWQzZTljMzRlY2NkZWUzYTc5N2YgbGVnYWN5LXRydW5rCis3MTQ4NiA4ODYxMjk4NTg2YzEwZjFjNWJlNTk0NjA5YmJlN2E5MTA5OTc3Zjk4IGxlZ2FjeS10cnVuaworNzE0ODcgZDBiNzQ0MzAzYjg0ZTMyNTRiYjA1OWU0ODliMDcyMzM3NDU5ZmUzNCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNDg4IGM5NDlkZGM0OTRlYjg2NmFlZDY4MjZjNzQ4NWRkZWY4MWQzMDhiZTkgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTQ4OSAyOTcwNTBhYjdhY2E0NzY5Njk1YTJmM2VmMmNkNDZlN2IzNWU2NTc0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE0OTAgZjM0MjgxZGI0N2U2MWFiYmE5ZGEzMzljNmRiMTUyZTcwNmQ3ZDMzOCBsZWdhY3ktdHJ1bmsKKzcxNDkxIDM2Mjk5ODI4NjYzNWQwNGZhN2YzZmY1YTkxMDk3YWU1YjZiZDQzYmIgcHkzaworNzE0OTIgNGFmMzExNDBkZTI5ZGFhZmE0ZTkxMWE5ZDQ4MGNlM2JmYWRmY2IwOSBsZWdhY3ktdHJ1bmsKKzcxNDkzIDE5ODkzNDkzNzliNWFjNWQ3YzM1OWY2OTA3ZDg1ZDBiYzE2YThmYWIgcHkzaworNzE0OTQgZDVkZGQzNDIxYzlhZTY4YzRiMjMxNDkzY2YxN2YzNDIyMmUyZDAzMSBsZWdhY3ktdHJ1bmsKKzcxNDk1IDdlOTc4Y2E0MjkzMGE5MDZiMGNjYmYzYzIzN2Q3OGQ2ZTYzODE0ZWUgcHkzaworNzE0OTYgM2IxYjYxNDI2OTBhYTNiMzNkNWIwZTIyZjU0NTY5YjNjN2YxNGU0MSBweTNrCis3MTQ5NyAwMzdmNWY3ZTdhYjFlNmRhMDZmMzNiZTJmODIwOWFmYzMyNjVlMjdmIHB5M2sKKzcxNDk4IGZlNWQwN2JlYjVkMzdmODc3ZDc0YmIxZTQ3ZDIwNzMzOTkzM2M1ZmIgbGVnYWN5LXRydW5rCis3MTQ5OSBiYjgxNjRkYjFiZGE2N2Y2YzRjNGJjMzdjMjFlM2Y4OGE4OWVhMmU2IHJlbGVhc2UyNi1tYWludAorNzE1MDAgNDg0ODU2MDRlZDQ4N2IxZGQ0M2FkMDMwODI1NzZjZTVhMzUyYTk3ZSBweTNrCis3MTUwMSBjYWRmOTU1YmMxOGJkMTVlMjg1OTdjYWY3OWM2MDY0MmRjYzdjNjkyIHB5M2sKKzcxNTAyIGYyMjFmY2UzZDZiYTM4Y2ZkOGM4OGYwNDI2OGU4YTQ2YmFlMWQ3Y2IgcHkzaworNzE1MDMgMDIxZDhjODJmMjg0NDdmZTQ3OGQ0MjEwODUxZjMwM2I5ODZmZTFiMiBsZWdhY3ktdHJ1bmsKKzcxNTA0IDkzZDRmOTgyNjE1ZjI2NGUwZGY5NjMxNGU1NTRiMTUxMWY2MGYzMWEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUwNSBkMjNlODRlNDE4Y2U4ZDczYTExYTE4M2VkYmY5ZDEwY2NmY2ZiMzIxIHB5M2sKKzcxNTA2IDRlMDhiMThlMzhmYmUxNGZkMzRiMWRmOGU1ODAxY2Y0ZGI1NzkyNzcgcHkzaworNzE1MDcgYWQzZjNkMzA0OTYzY2RmYjIyOGQxZGZjNzIxYTVhMGZkNDA2NmJjNiBsZWdhY3ktdHJ1bmsKKzcxNTA4IDIxZWY0NzU4Y2FjZDQzMGZhZThhMjBlNTQ1ZTk2MmYxY2ZiZmVjNmQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUwOSBhODI0NDMxMjUyZTBmMjYxZDUyMzkxYTQ4MDIxYjAwNzVhMzM1MTBiIGxlZ2FjeS10cnVuaworNzE1MTAgMjkzZGM1ZjA4ZTk5MGUzZDM2NWI5ZTI1MTY4ZWEzZjdkODhhMDQ5NSByZWxlYXNlMjYtbWFpbnQKKzcxNTExIGUwNzIzY2NlZTc0ZGYxMWRiNzk2N2M4ZWE1YmQyZTY1MWE4OTIxYTggcHkzaworNzE1MTIgYTQ4ZmNlYjBmMGIzZmZkMGJmYjllZGE4ZDVmMzc3ZjU3YzIxMDFhOCByZWxlYXNlMzAtbWFpbnQKKzcxNTEzIDc1NGEzZjczZmYwN2ZhNTZkZWYzMGU5NWVlYmRkOTdiOWNmYmQyYTkgbGVnYWN5LXRydW5rCis3MTUxNCAzYjI1OTExYzZhNGVhNmE4ZTA2YWU2YWYzNmU5MDdkY2EwMDIyY2VmIHJlbGVhc2UyNi1tYWludAorNzE1MTUgMTY4NDgyZWFmYjU2MWRiODc5NzQ1ZWU5YjRlOTk3NTVjMmViY2Y2MCBweTNrCis3MTUxNiBlMmI5YjJiYzcwYjBlY2ZmMGIyNjlkYjI5MGViM2E0Y2Q4MDU5OTM5IHJlbGVhc2UzMC1tYWludAorNzE1MTcgNzEzZWY2OGU3ZmZkMDBhNTI2ZWU3MGZiMDQwZGU2MjZlNjgxOGFlZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTE4IDRjYTE0NzFiZDFjZDM2ODYwOTk1MzJkNTExYzdmMjViMTZlNWQ0NjMgcHkzaworNzE1MTkgZjRkNTUzZWM5ZGRjOTdlNzIzMzk4MjdiZDE4NzI2ZjdjNGQ4ZTg4MCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTIwIGQ3YzU3ZTE2YjczYzVmM2RmZmY2M2VhODg3NDljMWQ4ZGExNzJiYTIgcHkzaworNzE1MjEgNDQwN2U0ZDA3MDg0MjFkZTgzYTZmMGI0NmE1MGM4N2MyNzFiNTZjZSBweTNrCis3MTUyMiAxY2IzYmNjZTgzMTY3Y2RkMmVhMGJkMTFiNjg1MTcwYzJlNzFlYjBjIHJlbGVhc2UzMC1tYWludAorNzE1MjMgMjYwNjlkM2I2ODkxOWFkZDk1MTE5NDNkYzYzYTdjNGNiY2U3YjI2ZSBsZWdhY3ktdHJ1bmsKKzcxNTI0IDQ2MTY3YWQzYWI5M2ZhODQ3MDUwNWFkZjExYzMyYjMyYjZiYTEyODIgcmVsZWFzZTI2LW1haW50Cis3MTUyNSBjOTE2Zjg1NGZhZWIyYjg1ZTNiZmY4ZGI5MTFmYzNlM2ZiYTk4YzdkIHB5M2sKKzcxNTI2IDg4NjdhNWI2MGE5MTMzNDZhOWFiOTBhYTE0NGUyOTU4NTU5MmMwYzEgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTUyNyA2NTA2Y2MzM2ViYWRjMTk0YmE4N2Y5Y2RlNGZmYzRlZTNhMTFlYTE0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1MjggNTM2ZjE4MGY2NmE3NzYxYzU1ZmU4NTcyOTU0YjkwOTcxOGQ0YTEwYSBsZWdhY3ktdHJ1bmsKKzcxNTI5IDE0MDkyOGM2Y2Y1MWYwMTNmODBhODZiNjk2ZmY3MGFiYjg0MjBjNmQgcmVsZWFzZTI2LW1haW50Cis3MTUzMCA4YzgyYjdjNTFiZGRlMzBhNWFmNGM0ZDAwNWUxZGI5MmZjYTAwOTFiIHB5M2sKKzcxNTMxIDQyNzI5ZWRkYmI2YzBiMDMyZTlmYmRlYjE2MmFhYzZmNzNiNjU4YWUgcmVsZWFzZTMwLW1haW50Cis3MTUzMiBkMGE3M2NmNDYxODBkNDEyYTc1NDU3NmMwYmIxZmNkMWMwMzg5ZGIxIHJlbGVhc2UzMC1tYWludAorNzE1MzMgMDk4ODg1YzZiMTAxZDA4NTc4YWZlZWFmMjQzMDhhYmMyYzgzN2I1ZSBsZWdhY3ktdHJ1bmsKKzcxNTM0IGJiYjYzYzcxYTk4MzE5MTQzNDE2MDU1NmVlNzJmZjgxZjM5NTNkODAgcmVsZWFzZTI2LW1haW50Cis3MTUzNSA5M2EyZDgwY2QzNGQwMzgwMTRkMmE3YmZlMzBmYWQzODQ4OGFjMzBkIHB5M2sKKzcxNTM2IDY2ZGE1MTRlM2ZhMzk1MjkwMGE5ZmI4OTZkNjRhZDZmYWE2NDQxODUgcmVsZWFzZTMwLW1haW50Cis3MTUzNyBhMjQ5MmI0ZTUwNWRmM2ZjMzM3YWQyNWZmNjhjOTI4NzgzMjc2YzVjIGxlZ2FjeS10cnVuaworNzE1MzggODMyMjhiYmU1OTA2Nzg4MTRlNGU0NGZmMjQxMzU0Zjk2MDI4Nzg3ZiByZWxlYXNlMjYtbWFpbnQKKzcxNTM5IDdlMzE5ZWVmYWI4YzhlZjg0ZTU0ZDI0ZTkwNzg2YmNhMWUwYTExZjkgbGVnYWN5LXRydW5rCis3MTU0MCA0ODBmN2VjM2I4Njk2MDhmZmRiODgyMmNkY2NlZTVhMmI1Y2EzOTVkIGxlZ2FjeS10cnVuaworNzE1NDEgMmVlYzU3YWJjNTIzOGYzOTdiMmU3ZjczZmFlMzhlMzhkMzlkMTdhOCBweTNrCis3MTU0MiBlOWUyYWUzYmZiYzE0MDQzMzBjMWM0NTMyOTg2NmJmZjE1OTM0N2Y4IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDMgOGJjNGJjODdjODg1OWU1ODkxN2QzNzk4YjA0Njk1NTg2NzhhZGYwYyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTQ0IGFlNzQxNDIwODlkMmJiZmYyNjkzZTRiMGJlNWRkMGIyMTUzNjU3ODUgbGVnYWN5LXRydW5rCis3MTU0NSBkYTBmN2ZjNzg3ZDgyNmQ4Y2RmN2ZjMjNmNzYyZDQ3YWVkNTY3ZTRiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NDYgYmM1YzVkN2EyYTE0NzlhMDU3NmQzNzk4ODk5MjZjZmFmNGNhYzEwMSBsZWdhY3ktdHJ1bmsKKzcxNTQ3IDdkNDQ5OTcxMWE3ZDVhZGIyYzM5NjdlMDUzZmIyYzI5MjNmY2JiYjAgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU0OCA2MjJhYmY2YWM5N2ZhYjM5MGQzMmEzMTg5OTFhMmIxOWViNDUzODNkIGxlZ2FjeS10cnVuaworNzE1NDkgMTJhOGQxOTQ3MTY3OTE0YWQwMzliNGUxZjQwOGUxMGEyNWRjNjE1YiByZWxlYXNlMjYtbWFpbnQKKzcxNTUwIDU0NzI3ODk2NTFlMTYxMTAyMjhlZTYxZGNjZDljZDBlOTQwZDFhNWEgcHkzaworNzE1NTEgYzc0MGZlZmFlMWJhYjBlOTFkMWYwYmJlNTcyMzI0NGM2N2NjZGQ3YSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTUyIDQ2MDdmNTRlNzY5MzZiODdkYWM3ODhiNGM3YmVmOGIxOTA5MzJiNmQgcmVsZWFzZTMwLW1haW50Cis3MTU1MyBhYjc1ZGEyNjZlNTdjNTVlNzc3MDI0ZmJiODRhNmEzMDA4ZGM0ODM1IGxlZ2FjeS10cnVuaworNzE1NTQgMzc3MDY1MmViMGU1MDk4YmYxYzQyNjA0MTE5MTBjNGM5M2ViNTMyMSBsZWdhY3ktdHJ1bmsKKzcxNTU1IDllM2M5NzZkYTVmNDA1MjdkMzllNzE0ZDIxY2VjYjdlY2UyYzJkYTEgbGVnYWN5LXRydW5rCis3MTU1NiA1ZWYxOGYwZjQzMTA5MWQwNWMyYjRiMjYxZTA5YTE4MDU5ZDg1ZmUwIHB5M2sKKzcxNTU3IDZmOGZjNmIxNjdlYThiMDEwODE0ODU5NDMzOGI2NzY0OWIwOTRhZjIgcmVsZWFzZTMwLW1haW50Cis3MTU1OCBlNDljZDRmNDdmNzYyMGIwMjdlOTZiYzI4MDJhNjY4YjA2NzU3ZmIyIHJlbGVhc2UyNi1tYWludAorNzE1NTkgOTUxMzJjYzIyZWU1YWI3YjhkYWVjNjE2MmViMzJkODI2MzJkMzA4NyBweTNrCis3MTU2MCBmYmMzN2ZiZDk0MTVmZjVkNDRlNzJjNWYxMWY1OGMxNGQ4ZWQ1NDEzIGxlZ2FjeS10cnVuaworNzE1NjIgMGU0NjlkYTY3ZDYzYTVmNDhiNWZlMWY0YzBjOTZhNjU0YzFmZTZhZSByZWxlYXNlMjYtbWFpbnQKKzcxNTYzIDk5MGYyNTc5ZWFmZWM5NTA1ZWIwMzNhYjMxYjlmOGIzNDMxMmNlMzggbGVnYWN5LXRydW5rCis3MTU2NCAxZGM1M2UwYTE0N2E3MDQzNmJkOTYzNmY2MWFjZThlODY0YzYyOGZkIGxlZ2FjeS10cnVuaworNzE1NjUgNTMwOThmMjcwYmJkYTAzZjcyZWJhMDhlNjU2N2VlM2Y1MTc3OWY2ZiBweTNrCis3MTU2NiA5M2QyYmVmY2EwYTU0ZmVlNzZhOTkwNzczNTE2OTBhZTdkMTg1N2NlIHJlbGVhc2UyNi1tYWludAorNzE1NjcgYWFjNzBhM2JhMjUwZjNhNDZhMmM5MTJkOTA4Y2ZmOWNjNGUzZWM2NCByZWxlYXNlMzAtbWFpbnQKKzcxNTY4IDc0YTRhMjdlYTI5MWNiMWZlNjljZWFlYTAwNjNiNmI3MzA0YWVmZjcgcHkzaworNzE1NjkgOGExNzMwNTdkOTAzMWM1MmY4ZTE2ZDgyNTVmNzhiNjI1MmNmN2E4YiBsZWdhY3ktdHJ1bmsKKzcxNTcwIDNiYTY1ZWU0MWZlN2VhOGRmZGQzOTM4NTNjZDkzOTI0OTgxYzI3MjAgcmVsZWFzZTI2LW1haW50Cis3MTU3MSA4ZWVlOTRjNzRlOWM5ODdjOTJlMjc4YzBmMmIwZWVkYWY2ZTBhNGU5IHB5M2sKKzcxNTcyIDU2YWMzZDUwOTUyYzg3N2QwMWEwNWYzNzQ0MWNhZmNmOTUyMDliODAgbGVnYWN5LXRydW5rCis3MTU3MyA3NzRmN2JjYWQyMmM2OWY2N2QzMWU1MzA1MTk1MzMxMTE5YjFhMjllIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzUgOWZkNjZhMjFhYmQxOTY3ZDNmMDg0MTRkMTk5YTY4NWM5YWEwNDA0ZCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc2IDI4ZWE1NGE2YmI2NDYyNTllYTYzZGZhY2UzNWY5MTIxZWNkZWY4NTggcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTU3NyBjNjZkNGUzMDZmYjY4NTIxMjQyOTcxNTJhMmNkYTdlMzNmYmIwNGYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1NzggYTRjYzQ2Y2FiNmE3NDMxMmJhY2E3MjA4ZDdmNDhkY2I2NTQ5ODUyNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTc5IGM4ZmIzOThlY2EyMzczMzY0N2RkZmNlNDBlNmFmNDg4NGFjMmJjOGIgbGVnYWN5LXRydW5rCis3MTU4MCA1N2I4ZGM0YTg4ODhmZjkxMzM2YTMzNzZhZTlhZGNjOTNhMTk1YzhkIHB5M2sKKzcxNTgxIGNjZjBlNjQwOTUzNmQ4YzJjODZiNmQwNTEwODMzMWM1MDY5MmE5N2MgcHkzaworNzE1ODIgNThiNzQ5NjdhNTQyNWNiNzFkMTFlNDY2MjE4ZDFiNDEwZDliYzg2OCByZWxlYXNlMzAtbWFpbnQKKzcxNTgzIGM5N2U0NWU5MDU5OWU2NWE4NWUwOGZiMzQ4NDk5ZDg0NDgzNjIzODAgcmVsZWFzZTMwLW1haW50Cis3MTU4NCAxNzdlMTA3MzA1MmM4NTliZWUxN2VkMjVkNDQ1NjMwNzA3MTE5ODM5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1ODUgNDcwMzk2NWRhMmNlYTlmZjg0M2MyMGYxNzUxZTMzZGM3ZmJjNGFkZSBsZWdhY3ktdHJ1bmsKKzcxNTg2IGUwOWE2NzFhNTkwYjdiYTVlMjc2NDY0MDc5ZjJiZmJhM2Y0MTljNDYgcmVsZWFzZTI2LW1haW50Cis3MTU4NyBlMDNiYTVmNmY0OTQwNjAzZTA3NTlhZjM2ZmUxMmQxOThhNGYzMzUyIHB5M2sKKzcxNTg4IDg1YmMyNTM3ZTgzZTNkOTYyNDVmOTZkYmU2YmQ3MWE3ZDc3ZDNlNDMgcmVsZWFzZTMwLW1haW50Cis3MTU4OSA3YmFhNjhkNjZjOGZjNzk5ODQzMzUwZmQwMDg0YjUzM2VlZDM2NDAwIGxlZ2FjeS10cnVuaworNzE1OTAgNzFmNDhhZGFkODkyM2U3ZDllNzkxZDZiMzZkZjFjMzVkNmIzN2UzZSBweTNrCis3MTU5MSA2MDUxMzgwODU3N2YzMjM5NGYyOTdlOGNjMmVhM2M3Y2M2ZDM1OTBhIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTUgMDk2NzY3YjE4NDUwMTg2NThmNGEzZmRkM2VmMzQ2MjY1Nzc1MjM5MSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNTk2IGU3ZGJmZDAyM2ZmNTIxZWVmOTNjZDMzZTYxMzRkYjY5ZjA2MzYxNDYgcmVsZWFzZTMwLW1haW50Cis3MTU5NyA3OTQ1MjVlZDY0ZmQ0MjNiYzVjYTEzMWU3MGJhMTRjYTkxMGFiYTg1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE1OTggZGFkM2QyYjlhODc1M2Y0NWYxOTZiNzAwNjQ0Y2Y5ZWZjMjZiY2Q4ZSBweTNrCis3MTU5OSBjMTdjNWJhOWJiNmNjN2JmNzZhMjUzMzQwY2RhZWRmZGE0ZGIwMzNhIHB5M2sKKzcxNjAwIDRmZWJhMDlhODI2YmE5OWU1YjQ4MjcwN2IzZDk2NDNlYmEzNDE1NmYgcmVsZWFzZTI2LW1haW50Cis3MTYwMSA2OThmYTAyNGU3ZDIzOWYzYWRiN2EwM2Y3N2UzNTc4N2U2ZjA0OTkzIHJlbGVhc2UyNi1tYWludAorNzE2MDIgNmQ5NWQ5NzkzZmNmNTAwMDIwNzM5NDVlNGFlYjBkM2VmMTUwZmE1ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjAzIDJmZDA4ODMwYTkzZjEzMjgxOTA1MDVkZDhjMTk2NzM1MzJkNTBiN2EgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYwNCA1NDI4M2I0YTE2NTdmY2ZiNmZkNDdhZDQzZWQ3M2QwNWZkM2Q3ZGI5IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MDUgYWQzYWNjZGUwZWU3YTdiYzVlMDg5Mjc3ZGRlOTcxOGQ4MTFlNjg1NCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjA2IDBiN2U0MTQxODM0MzMyNjZiZTdlNjliZDM2NDcyOWY0NTMyYWY4YWYgcHkzaworNzE2MDcgZmQ3ZjM2ZWFkMGM4MTcwYmZlYTYzZDlmNTcwMWVmYmMxZmYyZWQxMCBsZWdhY3ktdHJ1bmsKKzcxNjA4IDlkZjVkZGMxOThhODAwYmVhMjRhMjA2YTk2Zjc0MWVhMDRkMjAwNmUgcHkzaworNzE2MTEgMTY3MDRiMTVkZjNlYmU3ZDUzZDVkYTA2MmVkMWI0M2VlMDAyMWEwMSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjEyIGMyNDNiMTBhYjczMDU1MjVlNTBmODUzMWEyYzlhOGQxZmIxYWZhOTIgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxMyAyOTcyOWI5MDhhODIwZGNhYzMwZjhjMGYwNjQ0Mjk5NWZjNTUzMGNmIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTQgYjhmNDFkYjhmNmFkYTA4YTU3ZTFmMzc3MjJkZjg4MmFjZDAxM2U5OCBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE1IGFiZWZjYTJmZDkyZTIxZDNjMzc2NWE2ZDdhMmFhOGI5Njk5YjE1ZWMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYxNiBhNzRlMTAxOTE4NTRkMjFhMDYxNThmMzQ2NjQxNGYzNjFjMmRmMjBiIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MTggNDA4NzYxY2EzZDk2NjNiNmVhZDU4ZDc3Yjk0Zjk3Y2QwMGRlYjk5OSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjE5IDYxOWRjYWM4ZDM4OTA5NjViNDQ3NzJkY2Y3N2E3YzUyM2NiNGQxOGUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMCAyY2EyMDlmM2FhYTI5NDE1MWJiMzdjZTdmZmM4NTA3ODBmNWM5OTk0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjEgMTJiZGIzOTcyZTJhN2FhNWNmYzJjYWQzNjI3YzI2OGJiNzQ3MjY1MiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjIyIGQ4ODFiMDZkY2EzODhhZmJlZWQ5MTgxN2Y5YTE1NTUzODhhZjhjYjQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTYyMyA2NzM0MGZkNmFjOGEzYmE4ODg0MWVmMzllZWQwOTM1MTQwNzUzNjYyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2MjQgMmQ2MTE2ZWVmMmIzNjdiM2Y5MmI4Nzg4OTE4OWQ3OGI2ZWE4Yjc1ZiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjI1IGNlNjdlNzgzYTZlZDIzZDg2MzYyZjU4ZDQ2Nzk0NjMzMzVlNDRkOTMgcmVsZWFzZTI2LW1haW50Cis3MTYyNiAwN2QyMzllZWFhNjJlZjkxYjU5NGJhNTRjYTlhZjRmNzkwYzg1Y2UzIHB5M2sKKzcxNjI3IDViMTA4ZWJiZmMwODNlN2ZkMzFmNzMxNjM1OTQyNzgxOWQ4ZDhiZDkgbGVnYWN5LXRydW5rCis3MTYyOCA0NDE5ZTA2MjE5Y2FiODkyY2Q1NjkxMDM0M2MwZjJlNjkyNDBjMzU0IHB5M2sKKzcxNjI5IGRmMjYzOGI5YmVlMmVkYzBmNjM2ZjRlMzFlMDUzNjkwMDE5MjQzNGEgcmVsZWFzZTMwLW1haW50Cis3MTYzMCA2YmNkYzEzMWY1M2NiZTMxMDg3NjEwOGY5OTg2YzU2NTRkOTE4ZTBhIHJlbGVhc2UyNi1tYWludAorNzE2MzEgNDYyODIxN2IwMTNjNDA0ZmZmMGY2ZmIyNGRlYmJjMDFkOTZlZWM0MiBsZWdhY3ktdHJ1bmsKKzcxNjMyIDdhNjlmZmM0ZjRhZTM2NmM1ZTI1MzA2NjlhZGVmNjJmMzU3YTgyMmQgcmVsZWFzZTI2LW1haW50Cis3MTYzMyAyMGNmN2Y4YTU0MDUyZmEwMmEyYzdlYTliY2RiZTEwNDFhMjI3MTNkIHB5M2sKKzcxNjM0IGYzMjVlZGZlMGMzYWNiYzBiYjlmZDM0MGFhNTAwYzBiZDFiMDdmZmIgcmVsZWFzZTMwLW1haW50Cis3MTYzNSBjNTRiNzg0YTU2ZDU1YWRkYjk0ZWMyZGZmNTAyZDU3MTk0YTIxMWU0IHJlbGVhc2UyNi1tYWludAorNzE2MzYgNWZmOTAzMzJmOTEwZTNiN2Q2YjI4MDY5NjEwODIwZTdiMTcxNGM3ZSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjM3IGVlYmU1ZjdkYWYxZTc4YjA0OWYzNmFjYWM3MGU1MjMwNDMyNmNlYjEgcmVsZWFzZTI2LW1haW50Cis3MTYzOCA0M2VmNzRiZmM1Njk2MTlhOTJlODFjMDBlOTFhM2RiYWI0NTdmMTJkIHB5M2sKKzcxNjM5IGFjOTNjM2Q4ZTE5MjA1Yjg3ZDhjNzdhNjg2ZTIyNDY3OTBkYWFmZGMgcmVsZWFzZTI2LW1haW50Cis3MTY0MCA0OGI1ZmFkOWNlMWIyODRiYTc1ZjJlMWQ2NWI4MGRjNzMwNjRmZTIzIGxlZ2FjeS10cnVuaworNzE2NDEgNzdmOTA5YWMzZTEwMjI5NjhkNjA1MWFkZmE3NGEzZDhhZDM5MDJmNCBsZWdhY3ktdHJ1bmsKKzcxNjQyIGQzZjAyMDQwMGZmMjdlZmEzM2FlYzY4MmE5OTc2ZjdkZDA1N2FiMjUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0MyBjNTI0YmZlZTcwM2FlNTJjOGE3NDMyMDVlMmI2NzRmZGU2MjdkYzI1IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDQgM2ExMWEyYWQ4ZjdiODA4ZTYwYzg2OGEzYzZkNmJiMmUyYmU1ZjQ0YyBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ1IGE2NzkwYTNiODBjM2EyNDBiM2NhOWNhZTMyZGJiYTUwNmVkZDFlNGQgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0NiBjZTRmN2Y0ODliZDM2MWFjODk2NjRlOWY1OTk3MWE4YjY3YzRhZGUyIHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NDcgNDUwMGFkYzMxYmUzYjhhZWMwNWQzYTEwNTBjMWMxOTE3NmUxNGViNiBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjQ4IGVkZWJjODkzYjAyY2UwZmIyNzE0M2IxMDFkYjRjMWU0ZmZkN2U3ODMgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY0OSBkYjczMDRiZmJmN2RjM2NmNzA2MmQ2NWQyMjY1ZjI5OTE5OWIxZWQ3IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2NTAgYTI4YWY1NWM2ZTU4ZjAyYThkZDFkZmRmYzczMTYyZWFmYjUzY2FjYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjUxIDVkNDcyOWM0NzAzMzU4ZDRmZGE3NjgxYjQ0MjJmZjIxOThiNDgyYmYgbGVnYWN5LXRydW5rCis3MTY1MiA3M2JiNDk0NTE4ZGQ2ZDM5MDVjODM1NjhiYTFiOWJmM2ZhODc3MTk0IHB5M2sKKzcxNjUzIDFmNWY5OTI4MDFmOWY2OWMyYWY5MDZhOWMyYjkyYmEzZjY2YzE3NTQgbGVnYWN5LXRydW5rCis3MTY1NCA4ZjY1MzU2NzI5MWYwYmJiYTNmYjM3ZTI0YTRkZmUwYWNjOWNiZTk3IHJlbGVhc2UzMC1tYWludAorNzE2NTUgZjBhMTZlMWRlZWExM2Q4OGJiYWUxOGFmZjQ4MzdjYzFjZTdjZjFmOSByZWxlYXNlMjYtbWFpbnQKKzcxNjU2IDk3NWJlMWViM2ViZjM3ZGI1YzFjMGFhNDNkMTkxMGEyODI2NjRmODYgcHkzaworNzE2NTcgNzNiZmNiMzk4ODg2MmFiODNiZjUwN2QxNWY3NTJmODkyOWZhN2QwZSBsZWdhY3ktdHJ1bmsKKzcxNjU4IGNmMTkwZmYyYTcyYzRjNDc2MmZmNzgzNjA2YjE3NGI4NWU5YjA3ZDEgcmVsZWFzZTI2LW1haW50Cis3MTY1OSBhNjNiNDZhZGUyYjdiNjFjN2QwNjE1MWM3MzdkNGU4N2NhMWY0OTFhIHJlbGVhc2UzMC1tYWludAorNzE2NjAgOTJmN2E0NjBmZjgyOGRkYWJlZTc4MDMzOWQ0MTZhZDkzYzdhNDQ2NyByZWxlYXNlMjYtbWFpbnQKKzcxNjYxIGYwMjIyOGQxZjkwODBjMmJlZjlmY2Q1YTdiZGU3NGUxNDJkNDQzYWUgcmVsZWFzZTI2LW1haW50Cis3MTY2MiA4OWRlYjZiYzgyZTRiZjg1MDRhOWJjMTNmOWU2ZDc2NTE3YmZmN2MyIGxlZ2FjeS10cnVuaworNzE2NjMgOTdhZTdhNzA5YzFkNDExYTUxMjc2ZmM3OGE3ZjE5ZjJhZTk5MmU0ZiBweTNrCis3MTY2NCA4NjZhOGJlZWMwNjU1MDllMTY2YjRiMGNkNjE0YzRkMDIzMzA2OWE2IHJlbGVhc2UzMC1tYWludAorNzE2NjUgYjY1M2VhYjEzYjczMjg2ZTk3NWRhZDkyYTliZTc2OGIxYTQzZWE3NSBweTNrCis3MTY2NiAwN2M2YjA4ODk2OGIyMDU5ZGMyZGM4ZDZlODNjYzhiNjNlZGNmNzFmIHJlbGVhc2UzMC1tYWludAorNzE2NjcgMDdjMTExNDY5NWU5OWYyZjViMWIxZWU1OTI0Njc2M2YxOTI3NDI0YyBweTNrCis3MTY2OCBkODRhZDk3M2NkZTI1ZjY2NWMzZjI2YjZhNjZmN2M1NTJkMjJlZGY3IHB5M2sKKzcxNjY5IGNjNTU2NTQxNWFkYTQxN2RjYTM3NzI0NzJhNGM5NjIwNDlmMGRkM2UgcHkzaworNzE2NzAgOTczZjRkN2FhODdjZmZkYWE2OGEyOGNjZjZjMTEwNmY3NTIzZGY3MyBweTNrCis3MTY3MSAwY2Y3Nzk5ZmExOTAyYTdjMDIwMTY1Yjk2MTIyNjE5ZTVhYjgwYTVhIHB5M2sKKzcxNjcyIDAwZTA1NzEzNmZjNjc3ZDU0M2ZlYzA2OTkxNjM0ZjIyOGM5YWFiMWYgcHkzaworNzE2NzMgMGVmNWNlZGRiMWMzZGJhNDFiZDMyYjU2NGQ4MGNlZjJlYjYyY2ZmZiBweTNrCis3MTY3NCBjNjBjMWQzOWE5NTE2NTFjMGJhMGMyYTUwZTQyZWE2NzhmNWU1ZjI4IGxlZ2FjeS10cnVuaworNzE2NzUgOThhNTBhNDlkYzg2NTBiYzk1N2RmMjIwMjg3OTBjYzMyMjdjZDdiOSByZWxlYXNlMjYtbWFpbnQKKzcxNjc2IDIxMjQ5NWIwNDEwYzMzZWZlNGUxMDM2MmE3MGEzNjlkOTEyOWY2ZWMgcmVsZWFzZTI2LW1haW50Cis3MTY3NyA5ZWFiMDU3M2Q4NDU0ODE3YjZlMzIyNjJhZjNlNmFjMTI3ZWQ1ODE5IHB5M2sKKzcxNjc4IDhlNTFmYWU5YmI3NTQyOWQ0ZDQzMjU2MmI1OTdkMmUzOTJhMGNiMGQgcmVsZWFzZTMwLW1haW50Cis3MTY3OSA4MmEyZWY1OTYzZTBmMDk1Y2ZjYzNiNjk4MDM4MzFkMTg2YTY4YTQyIHJlbGVhc2UzMC1tYWludAorNzE2ODAgZGIyOTJlYmE3ZWMxYWFiMTZmNTRjNDVmMTAwZjc0NTJhY2Y2YWYyYSBweTNrLXNob3J0LWZsb2F0LXJlcHIKKzcxNjgxIGM3NDI5MjBjNDVmNzcxYzRiNzZhMmM3ZTM0OWE5MjYwNDlmNDgzZWUgcHkzay1zaG9ydC1mbG9hdC1yZXByCis3MTY4MiA2ODc0ZDcwNTQ2MDQzMjU3YmJjZjEzMjY1ODE2M2E5MjdkN2VkYWU0IHB5M2stc2hvcnQtZmxvYXQtcmVwcgorNzE2ODMgOTA4YzYzOTgwZWVjZTA2Y2IzYjY0MzE5ZTQ5NjE4MTRlZjFkY2UwYiByZWxlYXNlMzAtbWFpbnQKKzcxNjg0IGFiMDZhMzhiNTkwY2M0OTc4ZDdkMTIzOTcxYzQxNTQ2MjgxZGQxOWEgcHkzaworNzE2ODUgYTcwOWJiNWRmYWY1MTE2NTUwMGVlZWY2YjE1YmNjNzEyMjUwODAxMiByZWxlYXNlMzAtbWFpbnQKKzcxNjg3IDk4NjJkNTI3MmQ4NTdhYTc4NDQwMTJiMjg4ZTFkZmQyOWEwZjAyM2YgcHkzaworNzE2ODggNjZmZGNmYTk0MDBiMDFlY2RkNDM3M2ZkOTY3ZTNlZDMwMzU4YzRjZiBweTNrCis3MTY4OSBmZTk5YTU2MmI3MDg1YjI4NDM2Yjg1OWFjOTE5YjU0ZTIwYTQyZDQxIHB5M2sKKzcxNjkwIDI2OTUxZTU5NTg5MzFiOGQyOTMyZTA4ZTZkNzVlOTk4MmIyYWE5MWUgcHkzaworNzE2OTEgOGQ4ZjJmOThhNzUyYTc2NWRkYjA1YTU3ZTQ0MzhlNDdjZDRhZjk0OSBweTNrCis3MTY5MiAxMzkxNmJiMmVmZjA3Y2M0MzdlN2RjNzA1NDA1MTBmOGQ5YmVmY2QwIHB5M2sKKzcxNjkzIDNlMzE4YzRhZjk2MWMzYTA5NjkzZDdkOTc3ZmMzMTY0N2NiOTM0OTEgcHkzaworNzE2OTQgMjQ5ZDUwMGE3NzlhODdjODhhM2NmNzkyZDdkYzY1MzA1Yjk4OTc1NSByZWxlYXNlMzAtbWFpbnQKKzcxNjk2IDAyY2I0MjBkODYyZTY5YWUyMGQ4NjBkMzJmZDY5YTMyMzU2YmE5ODAgbGVnYWN5LXRydW5rCis3MTY5NyA4NThiOWQwOGUzNGI0ZWRlZTRhOGUzNjlmMjgwNjYzMGZjODlhMDVjIHB5M2sKKzcxNjk4IGM4NGM3NTUyNWJiMzVhZWYyZjBkZWYyZThiNzlkMGMwMjc2ZTA5MGUgcHkzaworNzE2OTkgZDg5NWE0MmRmYzk4OTJkYTZiMDQ4ZjBjZjI0OGQyNmI4YjNkMjE2ZSByZWxlYXNlMzAtbWFpbnQKKzcxNzAwIGQ2ZGE2NDYzNTRkMjFlNzFkZDY1YTQ5ZTBmYmNlNzYwOGFkMGRlYWIgcmVsZWFzZTMwLW1haW50Cis3MTcwMSBkNDNkNjQyNTJkMzYxMWQ5NjdiYTc5YzcwODNiZjA2NDQyOTQ3ZWFmIHB5M2sKKzcxNzAyIDJlZDBkN2UxZDE3NzM1Nzg4YjQ0NmNhMTk1ZTcxOGM1ODNmODY3NGEgcmVsZWFzZTMwLW1haW50Cis3MTcwMyBmZTE1NTI2ZWJlOGJmNjg3OTg1ZGViMzIwZjNiMjlmOWFjZDUwYTgyIHB5M2sKKzcxNzA0IGM1Yzg2ODBlZTBiMWMxZmE0Y2ZlNzRhNWVhNGQwMWVjZTFmODE0ODYgcHkzaworNzE3MDUgYWQ1YzdlYWNjZWExMTI1MmVmODQyZTc5MDc1ZmQ0ODVkMTE0MGYyNSBsZWdhY3ktdHJ1bmsKKzcxNzA2IDgyMDliNmMzMmU2MTJiYzQ1N2RkNjJmZjU1YjE4YjI2MmU2MGJiYWIgcHkzaworNzE3MDcgOGE4ZGM3Zjg1NDNlODdjZjY2MWY4NzA1ODI4YmZkY2JmNjAyNjMzOCByZWxlYXNlMjYtbWFpbnQKKzcxNzA4IDM0MTIxNTZmYjhlZjZhNzFmYzQzYTgyYWYxYzBlMWQ2NTZlZjQwY2IgcmVsZWFzZTMwLW1haW50Cis3MTcwOSA3OWE2YzYzYWM1YjBkMjBlY2U5YWI5ZWMwOGQ5YmNiZjc3YzJmNGEyIHJlbGVhc2UzMC1tYWludAorNzE3MTAgOTZkODJmYWNkODkwZTlmNmQ4ZTgyMjk3M2E5ZTMzN2RjZmFjODc0ZiBsZWdhY3ktdHJ1bmsKKzcxNzExIDZhN2ZhMDRkODExMWU0ODEzYjM0NzViOTE3MTRlOGIwZjVjNTg3NzEgcHkzaworNzE3MTIgNTY4ODdhMmE5MGFlZjYzOTMwMTVmYTMzMmNkODFkNDlhZGQzN2IwOCByZWxlYXNlMjYtbWFpbnQKKzcxNzEzIGZiMDhmNjBhYjUxMTE3YzhkNDZiOWNiN2E5MmJlYzI0NGE0ZTI4YTYgcHkzaworNzE3MTQgNGZhNDc2ODZjMGQ3MGZkZWMzMDEyNzQwOTQ0ODU4OTgxNmU1MmJkYiBweTNrCis3MTcxNSA5MzIyMzYwM2M5OTIyMDZiOGZkOTgyNTdhMjc1NWYwYWZmZDM1ZmE5IGxlZ2FjeS10cnVuaworNzE3MTYgNGQ5OTgyMDdjZmMzZTljYzMyODFlMGExZWY5OTJlYjQ5OTYyYmEwNCByZWxlYXNlMjYtbWFpbnQKKzcxNzE3IDcyYTcwMDBhODYwOTQyYzUwOTZjZmE4ZTVkZGQxZjNkMDdjMGNlMDUgcHkzaworNzE3MTggYTRmMTE3ZTkyMGZkYTYwZTBmZWM2ZjhiMzcyM2RmNjhiMGZlMGEwZiBweTNrCis3MTcxOSBjNGU5YTg3NWM5YTU0ZmI3MmNjYjlhNjMwZmUzN2MxNDVjYTY3N2U3IGxlZ2FjeS10cnVuaworNzE3MjAgZGRhMTRhZmExMmI4NWIwZDdhMGM1NmQwOWM5NDRlZTI4M2IyZjYwZSBweTNrCis3MTcyMSA5NzU1ZDhkZDMzNjZhY2NkMjQ2MjFmNDk0NzNkN2EzNjFhMGJiZmE3IGxlZ2FjeS10cnVuaworNzE3MjIgNzc5MGI4NWU3MDA5YmU3YWQyMWExNWNmOWY4ZTQ3ZTQ4NWZjN2M4YyBsZWdhY3ktdHJ1bmsKKzcxNzIzIDI4NjQ1YTk2MTAwNDI0MDZhNjVlOTU5YzlmNTAwOTE0ZWU4ZjZlNzcgcHkzaworNzE3MjQgYzI3N2NmNDE5M2QxMWM3Njk5OTRmZDJmZDY4NWFjZWUwOGRkNjBlNSBweTNrCis3MTcyNSAzZThkYzU5ZDY0ZGU0NDQwMzY0NWMyZWRjNDRkNjZlNzk2Mjk2ZmY2IGxlZ2FjeS10cnVuaworNzE3MjYgMzI5Y2IwMmYxOGU2ZjIyZTRlN2VkNTAzZmNmODRjN2JiNDYwNzQyYiByZWxlYXNlMjYtbWFpbnQKKzcxNzI3IDZlYzNkZjM3NWY1YTgyNjY3NjNmNDc5NjJhODMwMDEzMzNkMWI3M2UgcHkzaworNzE3MjggY2YyMWU5ZDI5MDYyZjE2YTc1ODJmMDExYTk3NGYyZmU1YmIzYmEzMiByZWxlYXNlMzAtbWFpbnQKKzcxNzI5IDcyZmY0NGMwNTI5NWI5NTVjNDYzY2VhMmUyYTRlMmE1ODNkY2IzOGMgbGVnYWN5LXRydW5rCis3MTczMCBhNmQzMjQxMzZlMDE0NWIyOTU4ZjlhYWNlMjE1NTg2N2JhMmQxNzdmIHJlbGVhc2UzMC1tYWludAorNzE3MzEgYTgyYjUzZGJjNjU2NTVkYWFlMTVkNTJjNGRlYjdjNWM5MDY3ODI5MCBweTNrCis3MTczMiAxYmNkNTVkYjM1ZGVkNjE4OWZlYjhjNWE1ODdiOWE5OTA3OWYxYjVmIHJlbGVhc2UzMC1tYWludAorNzE3MzMgY2Y2MjIyY2EwYmNjMDZkNjNjNTU2OWZjZjIyMzFhZTA0M2JkNzc5NCBweTNrCis3MTczNCA1ODkxNWZjNTc2YWFjZTNlY2EzZjAzMWFlYzg1OTg0MTYyNmY4ZjBhIGxlZ2FjeS10cnVuaworNzE3MzUgYWRjNzdhNWQ2YTk2MjZlNjk0MjkwZTdmOGEwZmU0MDVhODVlNzIxMyByZWxlYXNlMjYtbWFpbnQKKzcxNzM2IGQ3NGI5YThlNjZmNjAzNmMxNmI0NGQzY2YzNzM2ZDlhNDNjMDJmYjUgcHkzaworNzE3MzcgZDk5NTAzYjZmMjM4YWVjMjYyODM5NmVmYWU1YzQ5NmEzMzRmNDNjZiBweTNrCis3MTczOCA3NTU3NzE2YjZiMWNiOTRiZTk3NDliMGFhYzdhNGUwZTIwM2UxYjllIGxlZ2FjeS10cnVuaworNzE3MzkgNDhiZjQyYzJmZjdhODAzOGFiOTAzNGQ0ZjFkZTNiZDM1YjhiMGIxNyBsZWdhY3ktdHJ1bmsKKzcxNzQwIDdkMmM4MjIyNjljNzRjZjQ0ODRlMDFiNjYxMTkzZjE1YWE4YTdjZmUgbGVnYWN5LXRydW5rCis3MTc0MSA0MWE3NWRkOWRmNzhmNDU3ZGVhOGZmZDQyMDIxZmFjNzdlMTEwNjAwIHB5M2sKKzcxNzQyIGI3YjhmYmQwMTBjYTliMDI1MDZlNjUyMTgzZjY3OGIzYmUzODM2ZTQgcHkzaworNzE3NDMgZDUwZDRmMDljZGY3ZDc1MmQ3NGYwYjg2ZmZhMWIzMmFiZDU3NWYzMiBsZWdhY3ktdHJ1bmsKKzcxNzQ0IGI3YzQxMmQxYTVjYzQ2YjhlNjkzN2UxN2UzYTJmMDVjMTk0OTBhOWUgcmVsZWFzZTI2LW1haW50Cis3MTc0NSA2MDcyOWVlODQ4MjI1ODQ2MjdlZGNmM2VmOGIxYTY0N2MwMDIyZWYxIHB5M2sKKzcxNzQ2IGUyYzc4NWZmMGE1MGZmMDU1YWYyZWRlZDA4MWUyOTc3OWM3MTY4ZDggcmVsZWFzZTMwLW1haW50Cis3MTc0NyA0NGVmOGE3M2E4YjdiY2NjMjkyODIyN2NlMjNjYzY1MmQ2MmEzN2ZmIHB5M2sKKzcxNzQ4IDE3MzdhYTE1MTMxMDg2NzgzZjc4MzRlYjlmYjBlYjJkMTBlYTc3YzAgcmVsZWFzZTMwLW1haW50Cis3MTc0OSAzZjI5MjBhYTkxMGNiMzk0MzBlODNmZWU0NjFlMmFkNTMxMzQwZDY1IHJlbGVhc2UzMC1tYWludAorNzE3NTAgMTM4MDc3MDNhZmQwZjU4MzQ5ZTM4MjM4YzgyNDJmMDg0YjdjZDNhZCBsZWdhY3ktdHJ1bmsKKzcxNzUxIDAzOTc2YTEwODcwMDgzZGM5NWM5NzllN2M2MTVhYWJkYTQ0NjJiMmYgcmVsZWFzZTI2LW1haW50Cis3MTc1MiAwYjNiOGVkMzYyMjQ2NDA5NWU1Y2M0N2UyMjU1MTFjNzZkMzQ1ZGQ3IHB5M2sKKzcxNzUzIDJiMTdjOTk2ODk4MWIyMWNmZGY2MTA0ZTQ1NTJkMTQwZDVmN2U0ODggcmVsZWFzZTMwLW1haW50Cis3MTc1NCA0NTI3YzE1MmRhYTkzOWMyZWU1ZTRhNmIxZTUwNWQ1MDBmY2Y5NzViIHB5M2sKKzcxNzU1IDIyNzk2N2ZlNDRhNDI2Yzk0NDQyMTU1OGM5MWIwN2RmMzU4NWQzZTQgcmVsZWFzZTMwLW1haW50Cis3MTc1NiA0MmJmNTZlMzQ4MjU5NmJhNTA3MmIxZTViNjU2YzA4ODk3N2JhNmY2IHJlbGVhc2UyNi1tYWludAorNzE3NTcgODUzM2NmYzI0MjBhZGMxMzY2YTk0MDQyMGMxN2ZkZGE3NzQ3MzYzMSBweTNrCis3MTc1OCAwNGZmZTZiNjE3MDkxMDY3MmYwNWZkYTJjMTNlZmRhNWQ2MjRjMGUwIGxlZ2FjeS10cnVuaworNzE3NTkgY2RiNjAxNDQxZDA0NTUyMWQ4ZWQwYTIyOTZiNzI3MTNmNzk1YWRkYiBsZWdhY3ktdHJ1bmsKKzcxNzYwIGEyZDQyMzEwMTQyYmU4MTM4ZWE2MjJkZGFmZjM0ZTgwZDI1Zjk1YmUgcmVsZWFzZTI2LW1haW50Cis3MTc2MSBlNDIwMjBhNTIyMGFlOTliNGFmZmUwZWViNTZmNjM1NTljMTEwYTdhIHB5M2sKKzcxNzYyIDA1Mzc1YzJlMDc0MjQwMDZhNTVmMTljNTNmYWEwZGUwZjVhN2IxODYgcHkzaworNzE3NjMgODA5MWUwNTY2ZmUzMjBmMmM1ZjgxMzQxNjVjMjBjNThjZGM4M2JhYiByZWxlYXNlMzAtbWFpbnQKKzcxNzY0IDM3MDkzZTk0YWZjNzc4YzkwYjRiYTc1MDNiOGIwY2E3ZWZmY2E2ZjYgcmVsZWFzZTMwLW1haW50Cis3MTc2NSA5NmVlZDczODdjZWEzODkwZWI1OWI2YzUxMWNkMTc2ZDY1ODdlMzRlIHJlbGVhc2UyNi1tYWludAorNzE3NjYgODdmYjcyMTMyZDZiZGZhMTE1NzE5NjdhYmI0YjcyODlkMzYwMDNlMSBsZWdhY3ktdHJ1bmsKKzcxNzY3IDEzNzgxYjBmNzQ1YTYxODkwZTRkMDllNmIyNGVhMmY5N2I4N2Q1N2QgcmVsZWFzZTI2LW1haW50Cis3MTc2OCBhYTU0NGE1NDc1M2JhOGY2ODIwZTc3MjEzNDhhNjY2ZDdkMzkxNTgzIHB5M2sKKzcxNzY5IGJkMTg4ZmYzNDJhNGM2ODkxZTJjMGU3Mjk3ZTJlM2Y0NzIxZWQzODIgcmVsZWFzZTMwLW1haW50Cis3MTc3MCA3M2FhMzc1NmMwYjI2YjAxMTM5MjY1ODI0NGI3NGY1YzEzNDFmZThlIHJlbGVhc2UyNi1tYWludAorNzE3NzEgNDU1ZjQwZDE3MzhlOGMwNjkyNmE5YjdhZTQ5NzYyY2E1MDA1ZjkzYyBsZWdhY3ktdHJ1bmsKKzcxNzcyIDhmMjhjZTdiOGU2OWExNDE1MTk1YjRjMDViZWYzOWY0Y2Y4ZDVmMDkgbGVnYWN5LXRydW5rCis3MTc3MyA0MTI5M2ZhNmYwZGQ0M2E2OGY4OTg2NTY5ZGFhNDVmY2Q5M2UxNWFmIHB5M2sKKzcxNzc0IGQwYjEzMzYzYWEyMTQ1NmFlMDBhNzc4MGRlMzViZDRmZGRhYTFmYTUgcmVsZWFzZTI2LW1haW50Cis3MTc3NSAyN2FjOGM4NzQxY2Q1OTJiOTBkZWZlYjhhMDk3MTBjZTZmZDRhODU3IHJlbGVhc2UzMC1tYWludAorNzE3NzYgY2VlMWZjMDc2MzQ0M2I0ZTg3YmYxYTczYTM0OGE4MmM3NmJmODNmNiBsZWdhY3ktdHJ1bmsKKzcxNzc3IDljZWFlMjhhYjI3MDQwMTFhMWU5MGI4Mzg2NTQ2N2M5YmI2MTc1NzEgcmVsZWFzZTI2LW1haW50Cis3MTc3OCBkZWQ0NjczNTI1NTM3OWFkOGE0NGZhNGM4Y2JmZjllM2VmMGQwMTk0IHB5M2sKKzcxNzc5IDkzYzkyOWEyZmFjN2Q3MjI5ZWZjMmFlNzQ3YWQwYjc1MTcxOTJlOGIgcHkzaworNzE3ODAgYzhhNzU3MTBhYjI1MDE3MzBkY2EzMDNlN2EyNGY0Zjg4MzBkZmY3MSBsZWdhY3ktdHJ1bmsKKzcxNzgxIDcyYzk4YjRiZjBiNTY4MTkyYzM3YjUwZjVmNDlkODJiNzczYzk3NjYgcHkzaworNzE3ODIgNjk2ZGQyMjgxODQxNTYxZWZmNGVjMDcyZDdhMTdmY2NkM2NmNmNkNyBweTNrCis3MTc4MyBlZDNmNTFmMmFiZmJiNzI5Y2FjNjExMmI0YWMwNTNiMTAwNmRhY2FjIHB5M2sKKzcxNzg0IGE2OGUyZGM1ZjUxNDRkMjJkODg5ZGFiNzNiNDA5NjM4NTRmOTZhOWQgcmVsZWFzZTMwLW1haW50Cis3MTc4NSBkZTYzYjdlODUwMGRjMmY5MDg1NGNkMzU5MzM0NjgwMTVjODFiOWYxIGxlZ2FjeS10cnVuaworNzE3ODYgZjQ0ZDQyYTExYjliNDNhM2NkODkwNGMyOTcyZDk5MWIwMmE4YWZmNyBsZWdhY3ktdHJ1bmsKKzcxNzg3IDc3MzM2ZDgyYWI5NTBiNjhiOWU1YzJhOGY4NTljMTEwMDc0NmFmMjIgbGVnYWN5LXRydW5rCis3MTc4OCBjMzA2ODFjNjZiM2ZlZjI2NTRiNTI0ZGMyNzY2M2Y0MjUzOThjODBhIGxlZ2FjeS10cnVuaworNzE3ODkgYzJlNGE3YWQwNWYyYjQ3NTk2ODVkN2JmZmZmMDZmNDJlNDJlN2E1NiByZWxlYXNlMjYtbWFpbnQKKzcxNzkwIDQxNGJhOGVmYzgwNDZhZTRhZWVlNTE2MDY3YmE4Nzk4OGY1MjQ0MjIgcHkzaworNzE3OTEgMmIwNTdkMmI5OGViMDc0ZjJjMTFmMmMxZTM3ZTg2ZDk1MGQ1MGM1YSByZWxlYXNlMzAtbWFpbnQKKzcxNzkyIGIwZmVhM2FlM2I2ZWY1NjIwZDk2ODMyNDc5ODBmYzRlOWIzNmNkNGQgcHkzaworNzE3OTQgZjlmMjNmMzZjMzZjYThmNDFkMGVjNWU3N2E5ZDlkNDVmYjFjYTZlNSBsZWdhY3ktdHJ1bmsKKzcxNzk1IDc4YmZkNDQ4MTc2MzMxYzhiMjNmM2Y3Zjk5ZmEwMWQyOTUxMmMyNjMgcmVsZWFzZTI2LW1haW50Cis3MTc5NiBjNWUwZDliZWViZjkyMzA4NTMwNjcwMTVhYzkxNzE1NzIxYzgxOWE5IGxlZ2FjeS10cnVuaworNzE3OTcgNjE4ZDJlM2FjYTYyZWJkYTFmZTgyNmMzOTI0NWM5ZjZmYzE0ODhlNiByZWxlYXNlMjYtbWFpbnQKKzcxNzk4IDYxMTUxOGQ2ODBkZWMyNGFiZDJiZGZlZDZhZjQwNDcyYmI0MjdhZjkgcHkzaworNzE3OTkgZTk1OTVjYjVjNzg2MGJhZWJhMDNiNTUyMGRiYjY4MTk3MDgxMTY1ZSBsZWdhY3ktdHJ1bmsKKzcxODAwIDMzMGRiOTU0ZTU5MzRlMDliMmJiNjQ5Mjc2ZDY1NzdmYTVlNTZkMjAgcmVsZWFzZTI2LW1haW50Cis3MTgwMSBiNWRmMDk0ZDg5NDFkMmRhNDg5NmVjOWU4MDg2ZjRhOTliNjAzNGE5IHB5M2sKKzcxODAyIDQ0YThhNTI1ZWNlYjgwNjdmODQyMTFlYzA4ZjRlNzM0ODY1OThlYWIgbGVnYWN5LXRydW5rCis3MTgwMyA2ZjQyZGU3MmMyZGNlODhjYTEwZDYzYTU4NDA2OTY2YmRkMWVjYzJjIHJlbGVhc2UzMC1tYWludAorNzE4MDQgNTEzZGM2ZmE2MWMwYjcwYTZiNWRmMWZjNjUwYWM1ZTg3MjNmYWUyMiBweTNrCis3MTgwNSBjNmU4YzY1NzE1ODg3NmY3ZjIxMzk4YjJjYjQ1M2E1N2QyNTFkZTA0IHJlbGVhc2UzMC1tYWludAorNzE4MDYgOWJmNGIzZWIwNDQ3MjY5OTEzNTM4ZTY3ZDRjZTEzMTAzZmQ0M2Q2OCBweTNrCis3MTgwNyAyNGQ4MWZjYjBlMzMzNWYyZTJhNGUyZWE0MmQ1ODk0MGUxZDUxNzYxIHJlbGVhc2UzMC1tYWludAorNzE4MDggODU1OTdlNTU2NjhjZDBjOTM4YjJlNmJmNDkxYTMxMzE0M2U4Yzg5NSBsZWdhY3ktdHJ1bmsKKzcxODA5IDFmMWVjYTY4MTY3NWEzOWU1YTEzMjIwYmVmM2ZjMDM1YzIzYzcwOTQgcmVsZWFzZTI2LW1haW50Cis3MTgxMCAxYTEyOTEzODQ5Mjg5MzJkZjUzYjcyMmRlMDZhMGIwNTQzMjM2YmQyIHB5M2sKKzcxODEyIDJkMDliY2Y3MDM5NTU1ODQ1ZTQ0MmE1YzU4ODE1YzNiYmI3ZjJkYTMgbGVnYWN5LXRydW5rCis3MTgxNCAxNzAwNTVkN2I0OTQyYjIzYjY5YmIyZjgzNmE3ZTk2ZjI5M2Y1ZWQ2IGxlZ2FjeS10cnVuaworNzE4MTUgZmY5ZWRjYjM2ODc4ZWU4NjFlOTNjYWQ3YmFjZTlmZjZhZTJjYTUzZSBsZWdhY3ktdHJ1bmsKKzcxODE2IDYyOTJiZDI2MzJlMmJkZDdkNThkZWYwN2FmOWI3YzI0ZTE1NjE5YTAgbGVnYWN5LXRydW5rCis3MTgxNyA0MWJjMzNlZTE3MzA0ZmE2YjFlYmI2M2E0MmIxNWM4YzY1MWY3ZGVlIGxlZ2FjeS10cnVuaworNzE4MTggMzMwMTE1MTM3NDE0NzVjZGQ3MjA2ZGQzYjViZjg5OWRlYzE5NjQ3MiBweTNrCis3MTgxOSBkMjk1MjU0ZDg0YjdmNjVmZTdmNjFhN2E3ZDViYmE1ZTEwN2E5ZDVmIHJlbGVhc2UzMC1tYWludAorNzE4MjAgNWJiZDJlNmQ2MTI2MjBlNGZlZWUzMTIwZTFkMDdlNTkwNWM2MzczOSBweTNrCis3MTgyMSBhN2M0YTM3YzlkZjA3NzE2OGQ3M2VhY2FlNjhkY2IxYTg1MGI1MDQxIHJlbGVhc2UzMC1tYWludAorNzE4MjIgODI5NWI3YjI5NGJkNjJkYmJlZGQzZmMxZDJkYTMzMzlkY2ZjZTM4OSBweTNrCis3MTgyMyA4MzAwYjI3NGZkZDNjY2Y4ZDIxODExNTdjMmE4ODA3OWFjMTQ5ZWQ5IHB5M2sKKzcxODI0IDMzMzEyYjkxMDc3MzQwMWRkNTM1NGJkOWNkZTc2OGI1Mjc4MjA4YjUgbGVnYWN5LXRydW5rCis3MTgyNSBmZGUwMTVhMmM4YjNlYmUyNDk2YjQ1NmExZGJmMTk4Y2Y1ZTA1OTA4IHJlbGVhc2UyNi1tYWludAorNzE4MjYgMzJiMjQ3MzAwZmY5ZDMyMzkxOTFjMThjM2U1NDkwZDlkMWJhNDZmNyBweTNrCis3MTgyNyAwNzYxZWUyOGI2ZWQ2MjQwMmFmMGViZjU2YjVmNTY2YjMxYjVhNTBmIGxlZ2FjeS10cnVuaworNzE4MjggZDU1NzMyMGRlODU2Y2JiMjEzOTRkN2VjYTUxM2JhY2U1ZjMyNmRkNSByZWxlYXNlMjYtbWFpbnQKKzcxODI5IDA2ZGIxZDlkMjU1ZmY3YzdkNDVkNDYzYTViNjM2ZjA3YmI4YTZhMjIgcHkzaworNzE4MzAgMWZjOWI2NTA4NzIzMjI5MjUzNjQ0MDNkOTJjNjQ4ZjA5MmFlZTBhNiBweTNrCis3MTgzMSBlYzg0MmNjNjEwZTZmMTRmM2UxMmEyNWQyZjBkNDkzY2VjNGY3ZTI4IHJlbGVhc2UzMC1tYWludAorNzE4MzIgMTE0MDU5YzI2Nzk0ZjFhZDdjNDJlMWMxNTk2NmU5ODU5N2E0NjZmOCBsZWdhY3ktdHJ1bmsKKzcxODMzIGExYTZmNWQyYjNkY2I1ZTUyMzlhOGU0NGVhNGNhMWI3MzQyZDA2MzIgcmVsZWFzZTI2LW1haW50Cis3MTgzNCA1OWExZmI5Mzk1Nzc0Y2ViM2I3OGEzZjBhYTVlNTk2OWU4Mzc5NzNiIHB5M2sKKzcxODM1IDQ2YTMyZDQ0NjNjODNhNmZiZDAyN2ViNTQzMmViMmNlYmY3NDQ4NTggcmVsZWFzZTMwLW1haW50Cis3MTgzNyAxMzNjNjYwMjdmMzNlNGMyZjYzMTEzODk1ZGNiODlmMWQ5ZjM4MGRkIGxlZ2FjeS10cnVuaworNzE4MzggMzIyMjY3NzZmODY2MTM0NjgyODkyMjhjZDAyMDEyZjExYzUwMTFlYiBsZWdhY3ktdHJ1bmsKKzcxODM5IDU0YjQ0ODlmMWMyODRkNjEyNzU3MGNkN2M2YzI3NzcyOTNkOWNiZDQgcHkzaworNzE4NDAgZmE0ZjE4ZWRlMjYwYmE3OTIzOWZmZGZjZjM1ZGIwNDM4ZDdkYTg2YSByZWxlYXNlMjYtbWFpbnQKKzcxODQxIGE2NWUzYzA3MjYwZTllYjA3ODFkNTVhZGRkMTQ4NzAyOGM5Y2IxMTkgcmVsZWFzZTMwLW1haW50Cis3MTg0MiAxMTY3ODdmOWI5ZmNkYmY4MTIxNzM5OGMxMWE1NGE1ODI1MDZlMmE3IGxlZ2FjeS10cnVuaworNzE4NDMgNjNjYjVjOTFjZTIxNDhjNWQwNWZjZGEyYTcyNzY4YWUzZGI4NmE5MCBweTNrCis3MTg0NCBmZjdiNGU1ODJjNDkwODNmNzFiNDJiOWQ3MTQ2ZGJhMjI1MmNiMDExIHB5M2sKKzcxODQ1IGQ4ODAyYjA1NTQ3NDMwMjllMTU0ODY2MWFjY2MzOTJkMGEzNzJkZDkgcmVsZWFzZTMwLW1haW50Cis3MTg0NiA0M2U0NmU0ZTAyZjAzNjBiMzNkNzNmMGE4NjAxOTA0ZTM4YTU1YWViIHB5M2sKKzcxODQ3IGZiYjFkZjI1NDFjMzZhMDljZTliZTU3N2NhYjYwOTM0MmFkMzM2ZjAgbGVnYWN5LXRydW5rCis3MTg0OCA5NjkxZTczNDU5NjRkYTE5ZGY1MmZhODg5Mjc2MmYwZmMzYWNhM2Q2IHB5M2sKKzcxODQ5IDA5Njg5MjEyYjNlYjI4MTk0YWE4MTE4NjljNzg2MDAwYmYyMDQ1ZmMgcmVsZWFzZTMwLW1haW50Cis3MTg1MCAyZWY1NGU4YTQ0ZGQ0ODk5ZWQ5MWRhNWVlNmRiZTNkMDk0M2UwOTc1IHB5M2sKKzcxODUxIDAwYTkyNzgxNWRjZDYyZDQ2OTQ4YmM0OGMzZmRhMjNmNWEwYTQxOTggcmVsZWFzZTI2LW1haW50Cis3MTg1MyBkNTFlNGY2MmJjOGMwNDU1OGQyMDhhZjljZDQzMDQ1MTkzZTI4ZGJhIGxlZ2FjeS10cnVuaworNzE4NTQgMDJmM2Y4NWUzOTM2YjhjMDAwOGVhZGUzMzM2YzcxMGJjNGU2MTZlZiBweTNrCis3MTg1NSBjNjJjYzJhNTc2NGI2MzQyMmViNWQyNmIzNDVlZjkxMDE5NmUxZDM0IHB5M2sKKzcxODU2IGI1ZTJiY2JiZmE3NDAyYzI2OTQ4NGRlNzg2N2Q5MDljMWRkOWFjNzMgcmVsZWFzZTMwLW1haW50Cis3MTg1NyAwZjU1ZTA5YzE2YjU2ODA2MGFjMWIyYmEwMzY1Y2ZlNTVmZmNlZmQzIHB5M2sKKzcxODU4IDI5OGYyOGFmZjE4ZDIzOTQwYjk5Y2ZiODA4MjZhMjMxZDI0MDE3ZGMgcHkzaworNzE4NTkgYjJmY2IzZjIyNGRlMmZlM2FmMDdiMmM0N2E1OTZhZDAzYmNlZmIzNCByZWxlYXNlMzAtbWFpbnQKKzcxODYwIDMxODk1MTg5MGFiYjU3YzM5NTMwNDYyOWJkNTFiMjE1MTYyNmJiZmUgbGVnYWN5LXRydW5rCis3MTg2MSA2NDI5MTBhMDFkN2YzOTAwZjAwZDRjM2Q0YzIyZmIzZmZmZmU3MTQ5IHJlbGVhc2UyNi1tYWludAorNzE4NjIgMmUzNzE5MGY4ZWE3ZDQ5Y2FjYjg5NmE4N2QyNzdlYjdhN2MzYmU4YiBweTNrCis3MTg2MyBmZGIyYmU0NzFhM2ZkYmQwMzY4ZDBjMDA2NGUyNGRjMzg5NWFhNTBhIHJlbGVhc2UzMC1tYWludAorNzE4NjkgNWZkMGRhMmE5Nzc4ZTE2OGZmNWM3NGNiNDlmNWU1N2NlZWE5NGM2NyBsZWdhY3ktdHJ1bmsKKzcxODcwIGEzNGQ5NDVjMDdlZGIzZWNiZThmN2YwMDUwYzhhNGUzZGU0MDM3YmQgcHkzaworNzE4NzEgODBkYTUyNDY2ZmU4N2RlNWI2MzMzNTk1MTUwYzQ1MDU5ZjMzOGMyYyByZWxlYXNlMjYtbWFpbnQKKzcxODcyIGE1ZWM1N2U4NWY2NWMxOGNjMzAzNjViZTIzMGY2NDM1NjIzMmE0YTEgcmVsZWFzZTMwLW1haW50Cis3MTg3MyA5Zjk0MTIxOTI0MDJkOWY1OTE3NzNkNjg0N2E1ZjU5OTA4M2RkYzBkIGxlZ2FjeS10cnVuaworNzE4NzQgOTU1NmU5M2YyYWJiNDk5YjZmMzgzOWVmZWZhZjFlZTg3Mzg2Y2FhNiBsZWdhY3ktdHJ1bmsKKzcxODc1IDVhNDZhODIyMDZlN2JiZjM5ODQ1YWY1MjllZTM1YzBkZTE5NjgwYzcgbGVnYWN5LXRydW5rCis3MTg3NiBiMzY2YTQ5NmQ0OTllYjE5MTc3MGJiZWQ2Y2NkMDE5Mzc4NWIwYjdhIHJlbGVhc2UyNi1tYWludAorNzE4NzggODhhNzg4N2Q3ZmQ0YWY5NmMzODhiMzIzMTczYWRjOTM4Yjk3YTgwMCBsZWdhY3ktdHJ1bmsKKzcxODc5IGNlNDdkZWUxYjU0NDIzY2FjYTJiODQ1MDU5MDAwMDJmYTczOTlhZWMgcHkzaworNzE4ODAgYzU3MTA4ZGVmM2UzYmU5OTdiNDY0ZDU1MDc0ZTJjMmI2NGM4YzExMiByZWxlYXNlMjYtbWFpbnQKKzcxODgxIGQzNTMzN2Y2NTAxNTk5OWNjYzMzMTkwYjM5YmI1NWY2NDU1ZTE4MmUgcHkzaworNzE4ODIgYWQwYzI2OTcyYjIyMjE3NTlkMjdjMTUyM2QzMDlkZGJiMDY5ZTZmZSBsZWdhY3ktdHJ1bmsKKzcxODg0IGFkMDNiYjVkMGY3ZGJiYzVjZmM1NTQ4M2ExMDdiMjQ3YjUyNmY2YmEgbGVnYWN5LXRydW5rCis3MTg4NSA2ZGM5ODA1Y2IwZmE5Nzc5YWRhOWJmNmZmZTU1YWZlMGQwZGZjMDgzIHJlbGVhc2UzMC1tYWludAorNzE4ODYgM2NjNWZjMzMzMmY2YWJjY2I5OTMxMWI1MTk3MzM1ZmU4ZTczZmQyZiBweTNrCis3MTg4NyA4MDZiYzQ2NTFiOWRlMzVlZTYwZmU2NmM0MzQxYmEzYmQxZjY2YmNiIHJlbGVhc2UyNi1tYWludAorNzE4ODggY2FkYjY5ZTFkYzlhNjJmY2I0NzRjMzE1NmYzOGZhODcxNDc1MzkyYSByZWxlYXNlMzAtbWFpbnQKKzcxODg5IDE4MzdlOGUyMjkyNzc3MTExNTNjNGFlMDJlMGFkNGQzMzdhYmIwODIgcmVsZWFzZTMwLW1haW50Cis3MTg5MCAwNWRlODY0MDc3YmE5YjgzZTg5Y2Y5NTg3M2VkZTc1MTc1NDk2N2UwIGxlZ2FjeS10cnVuaworNzE4OTEgNTg3YzhlMzkxN2M2YTgyNWYyOTA4ZjU5Zjg1ODY1MzA3NjcyYTJhZiByZWxlYXNlMjYtbWFpbnQKKzcxODkyIGQzZmU2ZTk2NDg0Yzk3Y2Q0ZTAwNzQxYTM3N2YyNWM0MmI2ZDU1NmMgcmVsZWFzZTMwLW1haW50Cis3MTg5MyBlYWJlNmNmOTczNGM4MzJiMjk2YWY4ZDMzYTk2MmU3ZGE3YjQ2MTY2IGxlZ2FjeS10cnVuaworNzE4OTQgYTJlZjRkZDU1Y2YyNTYxOTRiZjhjZGY0Y2Y1OTlhYWUzNDYyZmQ2ZiBsZWdhY3ktdHJ1bmsKKzcxODk1IGYwOGY3NzYwODJlY2NiM2E3ZTNjMTM4ZDBkZmEwMWZjNWJmYzM2MjcgcmVsZWFzZTI2LW1haW50Cis3MTg5NiBmZjI5ZTk2NmFiYjY1YTkyMDYyYjg5ZTI2OGY0NzU2ODY0MDgyZjBjIHB5M2sKKzcxODk3IDJmOGU1MzVmOWE5YmZhNDQxYTczMWIzOGNhNjA0NTMzYzU5MjcwZGEgcmVsZWFzZTMwLW1haW50Cis3MTg5OCBiYjg3NmExMzNiZGYzYTdhOWRkNThjMjdmOGQ3NzI2MDM4ODFmYWE0IGxlZ2FjeS10cnVuaworNzE4OTkgNjc2ZGFhMWVmMjIzNzEyOWUzNjgwZTA0MjYyMmJhZmZlMjBkMmMzMSBsZWdhY3ktdHJ1bmsKKzcxOTAwIDMwNWZmYWRmODMxNWIzYjU4ZDMzNjAxYTU4Y2QzYmE3ZDM2YTdlNGUgbGVnYWN5LXRydW5rCis3MTkwMSBkZGNjMmE2ZmRlM2FlM2I5NzM2MTM0NGUyNTBiOTllNWU4YWZiZTA0IGxlZ2FjeS10cnVuaworNzE5MDIgYzc1NmYzMGJjNDJhN2U2NGMwNGM1NmY4N2I3ODA1MWRlNDcwOWU0ZCBsZWdhY3ktdHJ1bmsKKzcxOTAzIDg1MjQ2ZTRlMTQyODNlNmUxOWYzNDJjMDVkMDhhY2UwODJiYTMwMzcgbGVnYWN5LXRydW5rCis3MTkwNCAxNDY3Y2JjMjIzZTYwMDc5OTI0ZTcyMWFjZWQ4NjM3OWEyZWI5MmIyIGxlZ2FjeS10cnVuaworNzE5MDYgMjQ4MGVhNzUwNjhmYTIxZTRkMTFhM2IzYjFlZjljNmUxNmIyNGRiNiBsZWdhY3ktdHJ1bmsKKzcxOTA3IDcxYjdiNDkyMTUxMjFmNThkMDkxY2VlNmU1NzBmZTAxNTA1YTY0YWUgcHkzaworNzE5MDggNGFmMDZiMmJjM2NjMjVlYTZkM2ZiYjJmN2FlYmRiMDVhMGJkZDhjMyByZWxlYXNlMjYtbWFpbnQKKzcxOTA5IGM2YmY1MmUxNTNiNGEzZDIzYTEyZTUxNjA5MjYyNzUyMGY0ZDZjODEgcmVsZWFzZTI2LW1haW50Cis3MTkxMCA4NWNjOTUxMmI2MGM1Mzc4MTY5YTEzMjNkZDU5MWQ5NTE4MzU4NDYxIGxlZ2FjeS10cnVuaworNzE5MTEgN2NkMjNiMmVhYTkzYmVkZTI1OGU2NGFiZTc3Yzg4ZjIyNjgxOWY5YSByZWxlYXNlMjYtbWFpbnQKKzcxOTEyIDA4M2NlYTBmMjdhMmMyMTNhNzQ1MTNlMzlkYzIxZjllMzVhZTQ4YWYgcHkzaworNzE5MTMgMDA2YTQwYjVlMGMzYjVmOWVmMmVhZjRkYjk4MTczYzE0MDEzYjBhNCByZWxlYXNlMzAtbWFpbnQKKzcxOTE0IDE3OWY0NTkzYmQzZWQwODFmYjNlNzcwYzMzMjdhNDFiNDM4ZWNiMjUgbGVnYWN5LXRydW5rCis3MTkxNSAzZDA3YzliMjM5NTE0MmIwMmE1NDI0NzkxMzkwZmNjNDgwOGRjMmY1IGxlZ2FjeS10cnVuaworNzE5MTYgZjg4MzA2YzgyNjVlM2RkYzBiMjk4ZWJhMjVhNTU0ODE1Mzc2ZGFkYSBsZWdhY3ktdHJ1bmsKKzcxOTE3IDYyYjMxODUzNTllMzY1YTM3OGNmYmQ2OWE4YzY3ZThjZWFlMWE0ZDUgbGVnYWN5LXRydW5rCis3MTkxOCAzYjQ5ZDMwY2E1NDEzYmMwOWM3MzhhYTdjZjY4NDMwMTNmNmRjMDc3IGxlZ2FjeS10cnVuaworNzE5MTkgMmUyOTdiMWVjOTM1NjBmMTMyMGFjZGRlOTdmYTIwYjgzN2RiZmIyMSBsZWdhY3ktdHJ1bmsKKzcxOTIwIDY5NGRhZjhjZGY5OTM4YmYyYmVhOGMwYjM3ODc2ZDJhYzIzMjExYmYgbGVnYWN5LXRydW5rCis3MTkyMSA2MjU1YTcyYTRjMWU5ZWFiYjliMGU0ZWEzMGI5NzlkMDU1NGFhYjc1IGxlZ2FjeS10cnVuaworNzE5MjIgOGZiYTI1ODRmMzhiZWEyMzM1ZmRhMDhkZGYxNDYyYzIyZTJiZmZiNiBsZWdhY3ktdHJ1bmsKKzcxOTIzIDYzMjg2MjQyZGQ5ZGIxNDQ1ZTRmOTIzMDUyOTlhYjQ3MDIxZTY2ZWIgbGVnYWN5LXRydW5rCis3MTkyNCBjYTJmMWUzNGY1NjJkMWIyOTE2Y2E1YjBiYWE3YzFiZmFhNTk0ZjI0IHB5M2sKKzcxOTI1IDdiYjFhNGNkNWVlNWI4NmM2Y2ZkMmZkZTE1Yzk3N2I2YzRiMzg5OTEgbGVnYWN5LXRydW5rCis3MTkyNiBlZGQ4ZjBkNTJiMzhlMmU1MGNkNjAyMzAxOWExZDVkNWM2N2ZiNmJlIGxlZ2FjeS10cnVuaworNzE5MjcgNDU2YjJhMDZkMDE3MDBmNzA2NWRiYTE4NTUwNDlkOGY2YzBjNmUyYSBsZWdhY3ktdHJ1bmsKKzcxOTI4IGM3ZWE4MjZmYWQ3NzM0N2VlODUyZWU5NGYzMmE3MDhlZGNjODI2ZjUgbGVnYWN5LXRydW5rCis3MTkyOSAyNWMyMGE3N2YzNzMzZDk0MDBkOTFiMzVjMDc4ZDBmMDk4OGJhMzdhIGxlZ2FjeS10cnVuaworNzE5MzAgMGFkNDE1MDk0YTA1MDYxOGQ4NTgzNzlkMjYzZWRkNmQzODM1NzYxZCBweTNrCis3MTkzMSAxMjc5MTgxMjc4OGRmZTllYTVjNTNmNGIwMjE4MzUyYzQ4YTIzNzJjIGxlZ2FjeS10cnVuaworNzE5MzIgZWNhY2E3MTc3ZjY2OTYxYzY5NDEyZTUwZmE5MzA4YWU2YmI0Y2U0MiBsZWdhY3ktdHJ1bmsKKzcxOTMzIDRlNWFkNTY2YmZiYjVhOTM5YjI0ZWIzMjQwYmM0MDBkYTMyMzk3ZjYgbGVnYWN5LXRydW5rCis3MTkzNCBhMDdhOWI3NTlmMjdjMjU2ZmYzYzM1YzVjM2IwOGJjOTRmNGNkZDM5IGxlZ2FjeS10cnVuaworNzE5MzUgOWM5ODYwNTA3MjY1MDQ4M2U4MjRiZmM2ODBmMzg1MzI0Y2NlZmM5NiBweTNrCis3MTkzNiBmMTE0MmRlNDNlN2RlYThmZGYzNzJlZmJjMGViMTc5MDMxNzdhZWIzIHB5M2sKKzcxOTM3IDgxYWViOGJjNjU5ZDU3MGY2MzYxN2QxYjgwYWEyN2VlMjlhZWUyMDggbGVnYWN5LXRydW5rCis3MTkzOCA2OTQ3YmMzZGQ0MzMyMTY0MmZjMjhhNTVjY2U3MWQ0ZjhlNjMyYzk2IGxlZ2FjeS10cnVuaworNzE5MzkgMzBiMDNlMWRlYThiYjcxMjA4NzgxYzIwYzJhZTQ2MWExZjQ1MjI3NCByZWxlYXNlMjYtbWFpbnQKKzcxOTQwIDJjZGRhZjhkM2MzZTBjOTkzMTA3ZTM5NDU2NzBhYjkzZTU1NGZjMDEgcHkzaworNzE5NDEgYTNkNDhiMmU5NTdkZTk3MWMwOTU1ZjllYjMxMTg0MjUyNTFmODBiMSByZWxlYXNlMzAtbWFpbnQKKzcxOTQyIGVmMGFjNDI2OTkzNDBiNWQ4ODcxNWJlZjY5MTU2ZTQ1ZjM0NGFhYzEgcmVsZWFzZTMwLW1haW50Cis3MTk0MyA5MzMyOTdlYmFjN2JhYzIwZjlhYTYyZjlhMjNjYmMwMjBiOGI3MDkzIHB5M2sKKzcxOTQ0IDc1MDEwY2FlMDQ3OTAwNzY4ODJhZjI3OWI4YjQ0NWZiOTNjMzM3ODAgcmVsZWFzZTMwLW1haW50Cis3MTk0NyA3MmJkNDUwZDUzOWYxNTdlNjdlYjZlMWI3ZGRlMWVmNjNlM2I0OGE4IGxlZ2FjeS10cnVuaworNzE5NDggYzkyZTkzYTU0Mjk4YTgzMDRmMWVjZTE1NGY0ZDE1OWE2YWMyYzVjYSByZWxlYXNlMjYtbWFpbnQKKzcxOTQ5IDhmZGNkZjBiNTA4MGVhOTJlNWFlZDk1ZDgzZmJhMWQyMDlkYmMzZjIgcHkzaworNzE5NTAgOTEyNDM4NjU1ZjkzMDQwNDhiZjhjYjhjZWQ5MzNhZjVkMjNjNzZjYSByZWxlYXNlMzAtbWFpbnQKKzcxOTUyIGEzYTI0NmRhMTQ0YjdkMzZiYjJiYjdlY2ZjYWE2NDIwMmU4MTMwMzggcHkzaworNzE5NTMgOWRhMWNmY2QyYWNmN2Y2N2QyOTEwMjk0NjdkODE4NTUzZTJiMjI4OCByZWxlYXNlMzAtbWFpbnQKKzcxOTU0IDEzMzgxOWFlODBmYThhY2UxODE1NjNhOWEyZmMxM2I3OGMxMmJhYzQgcHkzaworNzE5NTUgMWMyZDExYTdlYjIzZjQxMjM0ZWYxNDIzMmE3NWQ1MGJlZjM0YWI3MiBsZWdhY3ktdHJ1bmsKKzcxOTU2IDE3MjkxM2UxNzAxOWVkMjk2MDE1Nzg0ZmI2N2ZmY2Q3ODYzY2Q0MjcgbGVnYWN5LXRydW5rCis3MTk1NyA3M2I1MDJmNTc2OTA1OWMwOTQ1ZGUzOGUwMjA0ODgyYjIyOGQzZWQ4IGxlZ2FjeS10cnVuaworNzE5NTggMDA2OTRlMGMyZTZiMmViMzFjYmZiMTVjZWI0NTc0MWQyMmUzNGU1MyBsZWdhY3ktdHJ1bmsKKzcxOTU5IDU5YzQxMTQzNzliMzRhN2I5Y2VjZmFjZDYwODkzOGFhODI2N2U3MGQgbGVnYWN5LXRydW5rCis3MTk2MCA2NDExMGMwYWQ1MzA1ZTdiNzI1ZmI5YjdhZjMwMmY5ZGFlZGE3ZWY3IGxlZ2FjeS10cnVuaworNzE5NjEgZGIwMzAxNmJmNjUzOWY0NmRkMDQ2NTRiNjdmNmU5ZDRhMzE4MTMzMCBsZWdhY3ktdHJ1bmsKKzcxOTYyIGExNWMyOGJmYmIzOGM4NmJiYjY3YWYzM2RlNjNlNjU2NTY0MjFhODcgbGVnYWN5LXRydW5rCis3MTk2MyA3NTk2MzM3MmI3MTQ5ZDk2NjE0YWVmMDk0NjY5ZmZhNDBjYWM2Y2ExIGxlZ2FjeS10cnVuaworNzE5NjQgNTlhMWIwMmRlOTA2NzEyMGYyZDQ0MDRhYjkxNDE2ZjlhYWQxMDhlNyByZWxlYXNlMjYtbWFpbnQKKzcxOTY1IDc4MzVhZGEzY2RhMmM2YWJkNmI4ZjUwYmViNWQxMTRmMDM1ODdkMzggcHkzaworNzE5NjYgMWE1ZDFkMWM5NDc4YTk0ZDM5ODg3NDg5ZDdjOGNiZTIxYjhhNzVjZSByZWxlYXNlMzAtbWFpbnQKKzcxOTY3IGY3NjU3MjEwOGRkN2E0NTI4MDZlYzUxYmZiMTc3Y2U0Y2JjNjkzYmIgcHkzaworNzE5NjggYjQ1YTMyMzU1ZDM3OGNjYzg4NDE0ZWY3NjNiYzBlZjFhZmRlYTU5ZCByZWxlYXNlMzAtbWFpbnQKKzcxOTY5IDAxYzMzNjNhMzU3ZjlmZjcxNjhiMWRjNjIzZGNjMjc2ZDliMTRlMGUgbGVnYWN5LXRydW5rCis3MTk3MCA0NjMzZjg1MzdiYjc3YzdmNTFjNGUzZGQ2NDVkMjE4NjdiMmZiZmVkIHJlbGVhc2UyNi1tYWludAorNzE5NzEgMzkxMjBjYzdlMzIxZWU4MDg2MDlkNTE4NDI1N2ZmZTZkZDA4YmExNyBweTNrCis3MTk3MiBmYjRiYjBhMzg1NmUxYjA0OTIyMDZhZDkxNDA5OTI0NDg3ZDEyZmJhIGxlZ2FjeS10cnVuaworNzE5NzMgMzU1YmViMGJkMDJiZWEzODdkY2IzOTcyYTA3ODZkZWQ1NmE0NzU2YSByZWxlYXNlMjYtbWFpbnQKKzcxOTc0IDcyMzc3MzA0MjVmYjM3M2ZkMmJkZWFjNTQ3OTFhY2YwY2QzYTExNTUgcHkzaworNzE5NzUgOTUxYTYyYjg2ZGU4Yjk5Y2U0NmRlZmI2NzkwNzcxYTQ1Y2ExNGEyYiByZWxlYXNlMzAtbWFpbnQKKzcxOTc2IGJmYjQ3YmMxZDA1MTE0NDE4YWQ3YWQ4YTYwNmFlYWI3OGRmM2E4ZjEgbGVnYWN5LXRydW5rCis3MTk3NyBmN2VjY2Y3NjljMWFlMmRmOWY1OGYwZWVlMjg4MzJhYzY4M2E5NTYxIHJlbGVhc2UyNi1tYWludAorNzE5NzggNzg1ZWEyOTlmZTIzNmRiNjEzM2Y0OTg3MzVjYzM4MjQ4OGQyZmJlNCBweTNrCis3MTk3OSAzMTYyZWIwOWMyYzNkZGE3ZGUyZTI0MTZmMDI5Y2YzMmYxYzYzZTE3IHB5M2sKKzcxOTgwIDAyMWMzOWEzN2VkZjc2MTVkYWNmNGRhNDAyMjQxYTNlNDJhODVkY2YgcmVsZWFzZTMwLW1haW50Cis3MTk4MSA1NGVlNmZkMTgxZjJjYTczMzU1NTIzYTVmZTY1NDhmYWZhYzhjNDUxIHB5M2sKKzcxOTgzIDlmNjBlZGJhNWFlYWJmZmI3MDM1ZjkxZTI4ZTNhYWIyNDIxYjQ4ZGIgcHkzaworNzE5ODQgYWJkYzE3NjRkOGU1YTFhZDAxYzdlYzgzMmU3ZGE4MDM0NTI1YmMwYyBsZWdhY3ktdHJ1bmsKKzcxOTg1IDA2ODhlOGIyNDYzMjZhMDY4MDYxZTIxNjM1YTZkOTZkMmY5MGVkNTMgcmVsZWFzZTI2LW1haW50Cis3MTk4NiAwYjE2NzRmMjdiNzBmYTA0Yzg1MTNjNjgyYWU0NzQ3NmNkODY5YjE4IHB5M2sKKzcxOTg3IDVkNGZjMTY2YTNkNDYxNDA2ODMwMGJlYTE0YTQ0ZWU3MDI5YjE4YzcgcHkzaworNzE5ODggNDU2ZTU4NDMwMjAyMDZjN2Q3ZjUzYTc2ODcyMjU4M2NjMjc1ZmJkZCByZWxlYXNlMzAtbWFpbnQKKzcxOTg5IGRlMWQwZjcxZTIwOWI1MmIwZDI2NTI0ZWE4ZjI3Yjg0NDE5ZjQ1OGQgcHkzaworNzE5OTAgZWNjM2ViMTU2NDg4OGM4NGE2ZTI1MTQ4NjdkYWU0NTVmNjQ1NjI0MiByZWxlYXNlMzAtbWFpbnQKKzcxOTkxIDM4M2UzMmFiNjA3YzRhYzFiZTM3NmY5Y2MzMDM0YmI1Mzg4YTNlNzkgcHkzaworNzE5OTIgZTBkNDVkMzJmYjgyNDQyNjg4ZjczODlmNDY3ZjQwYmEzNGFmNzJhMCBweTNrCis3MTk5MyAzNWQ3M2E5ODgwMzlmZDEzMzZlZjA3OTZlZmRkOGI4NzdhZGVlYzEwIHJlbGVhc2UzMC1tYWludAorNzE5OTQgY2FmMmI5MWVmMDZhNTljZjg0NGE5ZGYyNWZhNGUxMGNkMzNjZTZiNiBweTNrCis3MTk5NSBkMmNmZDNkM2JjNTQ4ZjRmOTVhZjc5ZWQzMTI5MTZmOTBjZmY3NDAxIGxlZ2FjeS10cnVuaworNzE5OTYgYzQyYjdkZDE1NTA1Y2U5ODE2MWM5ZWQzZGZjYmRmMDVkMGE5YThjOCBweTNrCis3MTk5OCBkMzFiZThjOWM4YTI5YmY5MWNlNzQzYjYzMjFhNTI0NDdkOGUyNmZkIHB5M2sKKzcxOTk5IDFmY2ExYzkzMjY5NjI1MTczZWYzOTYyNmZjYjE4YzUyYjU4Y2YwYTggcHkzaworNzIwMDAgZmI4OTk4MzM1M2FkM2MzY2Y4ZmRhMWFjMjA0YjRjOWVmOWY3NDRkZSBweTNrCis3MjAwMSBkMDU5NGU3YTQ1ZDYzNjkzNzJkOWU1YmI4YTViYjNhOTRhN2E3M2MwIHB5M2sKKzcyMDAyIDk4YWE2MzFkYWMyYmNkMDFkYzZkMjJmZmNlMDdlMTM2ZTdhN2M3NWIgcHkzaworNzIwMDMgNTUzY2FmNmJhZTQ3ZTEwYWRhOTQ1ZjU0ODU3OGRjYzA4MjJmZWYwMCBweTNrCis3MjAwNCA5NzNkMjRmNDRiMDdmNjA4ODYxZmE2NTQ1MzM1ZGU0NDNhMTA3NzI4IGxlZ2FjeS10cnVuaworNzIwMDUgMjkzYWRhMWRiZmRhZGUyNDUzZGFhZjIwNjE3YmU3MWY1YTA3YjQ2YSByZWxlYXNlMjYtbWFpbnQKKzcyMDA2IDE3NTQwYTE2NDc5Nzk5NTY1ODYwNWQwZTA0NDAxYmRkZWJiY2Q2MDIgcHkzaworNzIwMDcgZDA1MTM0YTRmMDJjZTU5Mjg4ZTk2NjFiNDM4ZDc2NmVlMThhMjdkNCBsZWdhY3ktdHJ1bmsKKzcyMDA4IGY1MjE1OWY4NzMzMmJiYmYyMThmMWE0YzdmYjAxZjA3NDg5ZTMyOTQgbGVnYWN5LXRydW5rCis3MjAwOSA1NzgxMjk0NGM5NjFiNzg5NDQ1YTZkZWY1MmYzMmE4MzliNzRiZDQ1IGxlZ2FjeS10cnVuaworNzIwMTAgY2MwZGZmMmJmMWMyZTZkNTNmYzQ2ZTYwMTZmZjIxMzQ5ZDgxYTUwOCBsZWdhY3ktdHJ1bmsKKzcyMDExIGJmN2YzNDA3MzQxOGJlZGEzNmY3Y2Y1YjEyNjI3ZGFiYTNlZWQ4M2IgcHkzaworNzIwMTIgMTFhNTQ1MmUzMzA1ZTYwNzRjNWRmMmJjYzJmYzcyODMwZWJhYzhkMSBweTNrCis3MjAxMyA5YjQ1MWZhNTg1MDNhNTM0MGI5N2E5NDgxYjVlYjgyYjU5ZTMxZTMyIHB5M2sKKzcyMDE0IGQzN2E0YzVkNmQyYjUzOGIxZjEzNDZkNjgxOGY3MjRjNjUyYzNhZGEgcHkzaworNzIwMTUgMzYyYjRhZTIxMjlhNGYyMmIwYzE5YTdjYmViNjhlNGQ3NzMyOTdiOSBweTNrCis3MjAxNiA4MDY4YWI1MTYzMmQ2MTMxZTYzM2RlNWJmYzRiNmU3YzQzMmI2OWI5IHB5M2sKKzcyMDE3IDc0MzIxMWI2MGM5NDY3ZjE4YTQ0YmQwYzk1YmExOTU2N2ZhZDM3NWEgcHkzaworNzIwMTggY2U3YzM1M2ExZTk2YmRhMDhjMGE5MTQxM2E2ZjBiNzhmNjJkYTExNyBweTNrCis3MjAxOSA3ZmFhOGE3Zjg2M2UxY2ZkZTFiOTBlNzExNzNmZTI3ZDMxYmJmZWI1IHB5M2sKKzcyMDIwIDk4ODg5ZWYxNTc5NTg4NGY0MmQ2OGI0YjBmYTBiNWI0Y2E3YmJmNDAgcHkzaworNzIwMjEgZTQ4Zjg2MGE1Y2FjMjBiNThlOTgxOGE0ZmM4YTVmMjhjMWJkOTE1ZCBweTNrCis3MjAyMiA2YmJkYTE4NTE3MzJlMTU1MGNlNjJkNzFhMTcxMDJmZmIxNTE4NjQ5IHB5M2sKKzcyMDIzIDIxODAwMDhkMDJlZWEyYzNhNzQ1ZjBlZjQwYWNiYTQ5OTYxODI2Y2YgcHkzaworNzIwMjQgZWE0ZTE5MmQ5NDE0N2I0OGE1MTdmNTQ2MzBlYWQ4NTFhODAwNzM5NiBweTNrCis3MjAyNSA0YWJjNGNhNDQ2MWZkYmVkMDE0MTFhOWNjZmU2Y2ZlY2Y3MTg3ZTcyIHB5M2sKKzcyMDI2IGQ1ODAxNzU5OTdjZDUwOWNhODIwMThkOWNhMWRkMGY4OWZmMTAzNTcgcHkzaworNzIwMjcgZjk0M2Q4MjRjOGMzNWRkNzYyZGMzYTMwOTBiMTJlYzY3MzBmYWE0YiBweTNrCis3MjAyOCBmMmQ3MTBlNDc5ZTJlZGE3MjFmMzE2ODc0YjMwZmY2MDczYWQ4MDg5IHB5M2sKKzcyMDI5IDcxYTJhYWQ1YmFkNjU1ZmU0ZTE2YmJmOTczNjUzNjdjODg1MzFjZmYgcHkzaworNzIwMzAgMjkzNTRjNDk1MGU0OTQ2ODNjN2E4NDc3ODM1NjcwMGE4MmY0MmQ4MyBweTNrCis3MjAzMSAwMWQwYmQ5NTBjY2QxMzQ0NTNkZTFkMThhY2ZmOWNhNjQ4OGY1NTI4IHB5M2sKKzcyMDMyIDQxZmExYTEwNjM3M2FkYjI1ZDM4OGQ4MTllNWIxOGJjOGE5MGExNjggcHkzaworNzIwMzMgYzI1ZTVhOTU1NGY1MzA5MDY2YWFmZWJiNWVmNDhmZTI3YzNlYjM2MiBweTNrCis3MjAzNCA5NzUwNjY3MmFmZTNmYjUyNDJjNTg4M2E4ODQ2NjEwNmJiNGRiYTkyIHB5M2sKKzcyMDM1IDJjZTI2YzQ2NzljYjk3NTgzYjIzZmUzMmMyYjI5MmU2ZWQ4NjBjYTMgcHkzaworNzIwMzYgYzZjNGMwNjNkODc0MGVmMjUyMDFmYTkzYTg1MjJlODIzY2U5OTE0MSBsZWdhY3ktdHJ1bmsKKzcyMDM3IDllMDk3ODNjZTIyODhkZWZhZDEwMmZkNDIyMjJhY2QzZjg4ZDVjZmIgbGVnYWN5LXRydW5rCis3MjAzOCA1ZDc1MjAzYzg3MTM5MmNlZmI2YTMzZmEwMDUyMjY5MTljYTFmZjgzIGxlZ2FjeS10cnVuaworNzIwMzkgYjRlYmIzMDBlNjExOWMwZmJmYzcxY2M2NjdiMWVkZTM4N2Y2NThiMCBweTNrCis3MjA0MCA0YmRkODQ3YjU3YzI3YTI1YTJlZGQ2N2RmNGRhNjRjNDJlNGIwZGRhIGxlZ2FjeS10cnVuaworNzIwNDEgMWY5NWJhNGQxZWNiMTg1OTg2MjE1YzE4ZmJmZmQ4Y2FjMThkNWNlNiByZWxlYXNlMjYtbWFpbnQKKzcyMDQyIDFhNDUxZmY2NTgzYzU0OGY4YjA2NjQ3MTM1MmU0NDUxNjY3YjQ1ZGUgcHkzaworNzIwNDMgNzhkZmJhZjYzYjE3YzkzOThhMTQyMmMyMWMyOThkM2E4NDI0NWUwYyByZWxlYXNlMzAtbWFpbnQKKzcyMDQ0IDRiNGI1OWYyNzhiZjMzOGNiMjUzMjI2ZGQ0YmQ4MGUyZWQ0YjJiNzIgcHkzaworNzIwNDUgYjBjY2YyYWNmYTFlNjkwODA4OWVmZGI5Y2IwNjIxNmIyOTU0N2E1ZiBsZWdhY3ktdHJ1bmsKKzcyMDQ2IDU0Mjc5MTYzMzg5ZDQ1ZjQ3ZWM1YjkyN2FhNjllYzc4OTYzYzRkOGEgcHkzaworNzIwNDcgODQ1MzdkZWY0NTUwNTAxOTYxMWRmOTNkNWE1OTdlOGZmYjRjNjcxYiByZWxlYXNlMzAtbWFpbnQKKzcyMDQ4IDdjMzk1NzRhZDAzNzU0MTZhMmFhYWFhNDI2NGFlNTBkODRlMGFlZjAgcmVsZWFzZTI2LW1haW50Cis3MjA0OSA3OGZkMTVlMDUyNTg0MDcwY2EyY2UyZDJkMWI5ZTA5OTQwZjU3OWYxIHB5M2sKKzcyMDUwIGU1NmZkYmE2MWU5NzVmMTE4NDkzMTY4MGI3OGYyMmNhOWQ3MTZjZmYgcHkzaworNzIwNTEgMzg1MjJlYTJhZGQwYTg3NjI2ZTMxN2Q5Y2MyY2QzNjg0ZGE1YmI3YSByZWxlYXNlMzAtbWFpbnQKKzcyMDUyIDFjMDYwZDVjNDdjZjBhZWRhYzdjN2U0ZjJhYTUwZDdkZWE0NTg4YTUgbGVnYWN5LXRydW5rCis3MjA1MyAyYjM5NDVkNzU1YTdmZTYxYjc4ZjVkZTJlMDkzYjYyOWU3ZWQwNTNjIGxlZ2FjeS10cnVuaworNzIwNTQgMDE5MjQ0ZjRiMGQwZDBlNWQ5MzJmNmU1NDAxYjExZTRkYzgxM2M2ZCBsZWdhY3ktdHJ1bmsKKzcyMDU1IDQyM2Y4ZjliMDdiMTRhODU0NGM1ZmYzMzA5YTZkMjg5ZGNkYTI4NGEgcHkzaworNzIwNTYgZDliOTQyMmI0MDljODk4NDAxZjk4MGZkYzhmMzRiYzkxOGIxYThmOCBsZWdhY3ktdHJ1bmsKKzcyMDU3IDk3Y2ZmNTkzYTI1N2U5ZDViYTU4MWY1OWRlNGExNmZkN2IyZmE5MzkgcmVsZWFzZTI2LW1haW50Cis3MjA1OCA2ZjE1ODhmYjc1OTVlMWIyMGZlNmQ2ZjVjNzg1NmU1NDgxMGIzODUyIHB5M2sKKzcyMDU5IGIwYWU5ZmZjNzc3OWZkNzUwM2RjNGZiZDQyMTE1ZThjMzA2OTNmNWUgcmVsZWFzZTMwLW1haW50Cis3MjA2MCAzMjQ2MGIwNGU3YjZlMGQ1MDc3MjkyYTc2NWNlYTViODk1MTNhZDFkIGxlZ2FjeS10cnVuaworNzIwNjIgN2IyMDZlMmMwMDkyYzRiMmJiODFmZjM5ODQxM2Q0NDg5MDliOGZkMyBweTNrCis3MjA2MyA0YWYyYmRjOWIxYjczNTU3OTVmNjk3NzJkYTRjYjgzMGNmYmRlMjJjIHJlbGVhc2UyNi1tYWludAorNzIwNjQgY2FiY2VmN2U2ZjI1NmNkMTgyNThhNTFiNTUwNmYyNDk5YTg2MTk2OCByZWxlYXNlMzAtbWFpbnQKKzcyMDY1IDFlYzRiZjNkZGRhNmY1ZWQyOTNhOWI5YmRkZDkzZjU3NjljZjRlZWQgcmVsZWFzZTI2LW1haW50Cis3MjA2NiBkY2JjMjIwM2JkZjM2Mjc2YjJjOGQwNzE2OTUyOWRlZWZkNzA3ODIzIHJlbGVhc2UyNi1tYWludAorNzIwNjcgZDY1ZGIxNjllM2FkNzE1MTZlMDRhOGVlYzdiYmZlM2NlNmJiN2YyZiByZWxlYXNlMjYtbWFpbnQKKzcyMDY4IDNmMTVhMDZkMDA0NzNhYzk0NjMyYTM4ZjEyNDRlYjRiZjlmYjRkZmQgcmVsZWFzZTI2LW1haW50Cis3MjA2OSBiZjA1MjIyYzA3NDAwZTIxYjYyZGU5MTBlYzZhYThhZGViNmNmZGU4IHJlbGVhc2UyNi1tYWludAorNzIwNzAgZjdhMzllNjE5ZTBhMWY2MmY4NTUwYzUzMDQ0NmYyNmJiNTU2NTAyMiByZWxlYXNlMjYtbWFpbnQKKzcyMDcxIDAyZDZmM2E2OTc3Zjc4YjU4ODVlMWUyZDQ0OTgxMTAxYzA3NWZmY2QgcmVsZWFzZTI2LW1haW50Cis3MjA3MiBmMjQ2NzE1Mjg5ODBlN2MzNDMyNzA4ZTE1MjgxYzIzYjkzYmRmYzdlIHJlbGVhc2UyNi1tYWludAorNzIwNzMgNzE0Zjk1ZWE2YjhmNmM4Yzc4ZWU0Yjg5N2JkOTBlMjBlMGI2M2Y3YiByZWxlYXNlMjYtbWFpbnQKKzcyMDc0IDM2ZWI1MzdhYmIxNzkzNjJmNGFmZTNiNGUxNjhjZWFiNzBjNTc3ODMgcmVsZWFzZTI2LW1haW50Cis3MjA3NSA1MDNmMGY0MWYzNWY5MWFmNDI1NGEwYTRhODg5OGJkZWEwZWJkYmZjIHJlbGVhc2UyNi1tYWludAorNzIwNzYgYjI4ZGRlYmJkODM1NTc1OTg5Y2U0NTM1MzIxZjQxMWIyMDJjNGJhMSByZWxlYXNlMjYtbWFpbnQKKzcyMDc3IDZmMTBkNTI1ZTNiODRiNTMwMmE0N2I1YWFiNzQwNjk2NzNjN2JjYjggcmVsZWFzZTI2LW1haW50Cis3MjA3OCAzMTY2ZGVkNmJjNGEyNmMyZDE5YTA4OTQ2ODkxMTFjMjc1M2E4ODM2IHJlbGVhc2UyNi1tYWludAorNzIwNzkgOWRjMzRlZjIyNzM1MzgyN2E0MzdhYjE0NGE5Y2FlOTk3YWFlOTJkNSBsZWdhY3ktdHJ1bmsKKzcyMDgwIDkwMDBmOTY2Y2NiYmJmMDM1ODVmYmQ0ZTQzMmJjOWNkYjAwMDMyNmIgcmVsZWFzZTI2LW1haW50Cis3MjA4MSBlMjg0M2I2NDE3NWVjZDY5NGYwZGU3OGYxZTE4ZDI0M2UxY2FlZjg1IGxlZ2FjeS10cnVuaworNzIwODIgYzhmOTQwMDdiMWM0NmUwZTE5ZTNlMDNhMjM3NWNjZGExNTZmZTM0ZiBweTNrCis3MjA4MyAyMzJkMjI1MGQ3MDM1NWRmZDMwMzFkZTUwOGQxOGM4N2ZiNzE5MDJiIHJlbGVhc2UyNi1tYWludAorNzIwODQgMDI1YmExMmM3ZGE1NDE4ODA4ZjA0ZjdmZjdkNGNiNzQzMGIwYzMxZCByZWxlYXNlMzAtbWFpbnQKKzcyMDg1IDc0NTkwMjNmZjg2MWFlNWZhY2ZhNTYyMWM2OTBkNWQ0MGExODAxZjAgbGVnYWN5LXRydW5rCis3MjA4NiA3ZmRhNWFmMmFmN2QxMGM2NmRkNjY0ZDg2OWE2YmEzMmFmMzJmMmQ2IHB5M2sKKzcyMDg3IGEzOGQ2Y2Q5YWE2MzY5Y2ZmZTMyZjBmMzJjMjY3N2ExZDVhYTYxNTEgcHkzaworNzIwODkgMTQ2OWZiMWFlYTkyNGRkY2ZjOGY2ZDcyOWIwNDNhM2NjZmZmNmJjOSBweTNrCis3MjA5MSAzYjRjZWE0M2Y5ZTYzOTkyYzIxZGQ5MWZmOGE5MjAwMWIzNjJhNzZhIHJlbGVhc2UzMC1tYWludAorNzIwOTMgODE3ZDhiMjhjZDZiM2UyNjMzNjZkNmY1MmNjNmFiNDRhNjE5MzI2MyByZWxlYXNlMjYtbWFpbnQKKzcyMDk0IDljMmFjMWVmM2E2ZmU0ZDdmMzdhMzI1MTZjNmZmMmU4MGE5ZmExNzUgbGVnYWN5LXRydW5rCis3MjA5NSBiNDA4OTQyZmI0MzUzOThlOWEyMWIyNjgyZDEzMzQ3NDBhOTBkZDUwIHJlbGVhc2UyNi1tYWludAorNzIwOTYgNjliZWEyNmVjODdiOTkzN2U1NjU4N2Y0NTE2ZGFhNWQ1MTE4MTBiMSBweTNrCis3MjA5NyBjZWE2NDFmZjQ1MzRjMzkwZGJhNDMyOTAyYmNhM2I0YzQ2ZmMyZDZlIHJlbGVhc2UzMC1tYWludAorNzIwOTggM2RmYmFjNzk5Y2Y1MWM5MWJhMDlkNjJhMGI4NzM3NGU0ODEyMWI3YiBweTNrCis3MjA5OSAwMjA2ODg3N2MxOTBiM2Q3NzlhYWM2ZjNiNGQwNTIwZDY2NDUzZTI1IHJlbGVhc2UzMC1tYWludAorNzIxMDAgNGVmN2Y5M2Q2MWExYThkNzA1ZjZlODhiYjVlZTVkYzNjZGEwNzE5NSBsZWdhY3ktdHJ1bmsKKzcyMTAxIDg2MTdlODEwMTZiNmIwYzFjODlkYzk0M2NiYzdmMDQ2NzM4ODc2YjEgbGVnYWN5LXRydW5rCis3MjEwMiA1ZjgxYzQ1YmRmNmQxMDE4MDgwNmE0M2I2MWM5NTM4NDY2NThmMjU0IHB5M2sKKzcyMTAzIGJhNjM4ZDNhNDlkMTVmNWRmNjk4YTVkY2ZlNGE4MTExYWIxNjczMzYgcmVsZWFzZTI2LW1haW50Cis3MjEwNCBlOTVjODc4YWM3OWFlN2Q3OTk5NjM1N2Q0N2UxN2EwNGZlYTg1Y2NhIHB5M2sKKzcyMTA1IDczNzAyYWJlMWNiOTcxODQ4M2I1MDMzYzRhMzdmZjVhZjFkODdmMTYgcmVsZWFzZTMwLW1haW50Cis3MjEwNiBiODYzM2M3ODkzZmVmNDAyZWQ0NjY5YmUzNTdjNDg0MzJiMDEzZDg1IHJlbGVhc2UzMC1tYWludAorNzIxMDcgMmVmMmNiNTc3M2ZlMmU0ZWFlYWRjZGI0MThiZWRkODY1Njk5ZTUyMCBsZWdhY3ktdHJ1bmsKKzcyMTA5IDM3NTk4MzliOWZhNTQ4YmNlMGQ0MDBiY2VhMmVmOTFmYWI4MTAwZGUgcHkzaworNzIxMTAgMjE4MDMwNzViNDExMTU3ODA2ZDc1N2ZmNDllZDkzOGMwZDFiODMyNCByZWxlYXNlMzAtbWFpbnQKKzcyMTExIGFlN2Y4MmJiZjE2YzhlNmRmM2FkMzAzMmY4MDQ3ZWJkMThkYmE1MDYgbGVnYWN5LXRydW5rCis3MjExNCBhMzgxNGRjOTliODBkMWMyM2Q5Y2RlYzhjZDVmMDk3YzYxZjM4NDg5IGxlZ2FjeS10cnVuaworNzIxMTUgM2Q2YmM0MjY0NmI1MWUwYzJmM2JkMzIyMDA4ZjA2ODA1NWNjMjRlNyBsZWdhY3ktdHJ1bmsKKzcyMTE2IGM4NTVkZjdjNmJiNTkxMDUwYmM4YTAyMzE4M2U1NzVhNTM1YWQ0NTkgcmVsZWFzZTI2LW1haW50Cis3MjExNyBjY2Y3ODUzYjA3OTMyNDRiZmZjNTQyZjhkNGVhMjc2NmMzNTMyY2MzIGxlZ2FjeS10cnVuaworNzIxMTggNjQ3YTA0MGRmNGQxMWNkNDcxOTk5OTBkM2EyYjJjMmEzMWNmNmQ2ZiBweTNrCis3MjExOSBhM2ZjY2NlZTg5NTdhMGU2YTFhNGQ1N2JiYWIzNzc0YzUzOTEzMjdkIGxlZ2FjeS10cnVuaworNzIxMjAgNDJlZjc2ZjU0NGZiZjIxYjZlNjM0MDMwNTllNjMyMDA1NDNmM2RmOSByZWxlYXNlMjYtbWFpbnQKKzcyMTIxIGZlMDYyMTg3NjI0Y2JlNzNjMzE3N2Q2ZDAzMWQ2ODI3ZTAwZmUyOTggcHkzaworNzIxMjIgNzYxN2ZhNzE2NGRlNmRjNzE0MGFiOWU5YWQ4YjBjMTg2YzE2MzFiMCByZWxlYXNlMzAtbWFpbnQKKzcyMTIzIGNjZWJiYWQ1ZjhkZmZlOWZkOGRiZjFjNjk1OWUyMjhhYzZhZmNjMzEgcHkzaworNzIxMjQgOTNmZTYxMWNiZDNhYTEyZjFmZGZlMGUyMTNjNTI1MzI4MmNmNTA0MSByZWxlYXNlMzAtbWFpbnQKKzcyMTI1IGIzOWNiMjkyMTk0NTczZDFiYjQwYTM4ZjFjZmY2NzJmMWQ0ZjgxNTYgcHkzaworNzIxMjYgNDc2MjM5NGZjMjZjNTJjMTliOTMwMGY4MDQ4OGQyMzZiMTVlZmVhYSBsZWdhY3ktdHJ1bmsKKzcyMTI3IDVkOTc3MWQ3Y2M0NmM3ZjI4YjQ2MGMxNmNlZDAxZWM0ODJkYmQ3YjEgbGVnYWN5LXRydW5rCis3MjEyOCA4YTg1OWFjN2U1YjgxZTE5YmVjY2FlMDZkZDRmYzk1ZjM0NTU5ZDIyIHJlbGVhc2UyNi1tYWludAorNzIxMjkgZTI3NDQ5ZGU2MWRiNjQ4YzU0NzcwYTZjODgwYzAzMjY0YWMwYWM3MiBweTNrCis3MjEzMCBlODk0NDMzYzY0NjQwZjE5Nzg3YzA2ZGNhNWE3YTk2MTY0MDFkMjJkIHB5M2sKKzcyMTMxIDI3YzZiNjNkMWRiMzU1ZjY4NzcxNzVkM2RjMTc2YzkwYTdkZjQwMWYgbGVnYWN5LXRydW5rCis3MjEzMiA0MTEzNzRjNWFhNDIyNzhkMzBmMTZhMDcyMTFiYWRhZWI1ZjVmMjI1IGxlZ2FjeS10cnVuaworNzIxMzMgOTRjZGZkMDdkNGY0OGQ3Mjg1MjQ4YzdjMDNiZTBlNDhkNWY0YmE3MyBsZWdhY3ktdHJ1bmsKKzcyMTM0IDc5ZGM4ZDU4OGViMzA2NmMyOThiZjQ3OWU5MDdhODU3YWFlYzU5NjYgbGVnYWN5LXRydW5rCis3MjEzNSBkNjgyYzkzNDY4NDgwODgzMjgyNTg0MjQ2MzY0NGMyYzkyYjZmMGEyIGxlZ2FjeS10cnVuaworNzIxMzYgMGYyYjMzNTY2OGVlYmM4ZmRhOWEzYjEyMDg2MGJhMDMxNThlODgzMiBweTNrCis3MjEzNyAzNGU3YzFiMTQ0OTUwMWExODNlMWQ4YjFhMThkZGU4NWJiOThmODU5IGxlZ2FjeS10cnVuaworNzIxMzggYTFlZmFmMDE1MTAwMTc0NzBiZmNkYWVhODE0MWNjMTRjZWY1OGZiYSByZWxlYXNlMjYtbWFpbnQKKzcyMTM5IDQwZDM0MzFkYjI0MDg1NWM0M2ZiNWFiZGE4ZTFmMjg3NzZiMTFiYjQgcHkzaworNzIxNDAgMmNkZTBkMDAzZmZjMDNlODAxMGExYTZkYTFmZWZkNzE0MGNmZDhkZSBweTNrCis3MjE0MSBkNjY4OGVkMDQwY2YzNmI0Y2MyMTZmNjRjMzU4MTc3NWFjYmM2ODhhIHJlbGVhc2UzMC1tYWludAorNzIxNDQgYzRhMWM0ODg0MDU2ZDQ5YjhkODFlYWFlYTg1ZGVmNzk4NGQzYWUyZiBweTNrCis3MjE0OSBhYmM4MGY4YjBkZmRjMWZmZGQ1YzhkMWZmMDBkMjc0ZmQzNzVhYjQxIGxlZ2FjeS10cnVuaworNzIxNTMgZWQ4YzEzOTVkMDMzMGNkZjc0NmEyYjVlZWYyNjFjNDdhNWI3YzBmNCBwZXAtMDM4MworNzIxNTUgMjk2NTZhMDNjY2UyZmE0YzEwNGQ4MDgyOWYxZGNiZGE4NGYwMjk0NCBsZWdhY3ktdHJ1bmsKKzcyMTU2IGJjNjBkZTIzMjIwMzFjZWQ1YjQ3ODk5MWY3YjJhMDU3MzNlMjczZTMgcHkzaworNzIxNTcgNGI4NmU1M2Y5MDA2ZjYxNzJhOWI5Y2QyNmQyNDQ2Yzc5MzQ4MWNmNiBwZXAtMDM4MworNzIxNTggYmRhYjdjY2RjN2I0ODY0MTFjZDQ4NDY4YjJmZWFlYjlhMTlmMTM4OCBwZXAtMDM4MworNzIxNTkgZTdhOWUyZmQ3MTNmMDI0MTcwYTg0NTE2ZDM2YTk1NTI1Y2RkNmQ2NCBsZWdhY3ktdHJ1bmsKKzcyMTYwIDA5MzVlMjRjODFjMDhkNWRkYjc2MjczNDAzMzMyZDkwNjFiM2QyNjAgcHkzaworNzIxNjEgZTA4ZTgwZTc2OGMxMWYwOTRmMWI0MDcwNzM5NTM0MjFiZjZhMTg3MyBweTNrCis3MjE2MiBhODBiM2JiNGQxYjBkYjI2NTY4NzZiMWUzZjAzNGNlMTEwMzQyMWYzIHJlbGVhc2UzMC1tYWludAorNzIxNjQgNTRjN2JhM2RkZmM2NTZlZjFkZDM5YmVmYTQ3M2JiMzQ3ODE2MWRlNiBwZXAtMDM4MworNzIxNjUgNjBkMGYzNzNhODk0NmEyMGEwZDAyOGI4MDRkYmNlNGQ1ZDI1YmZmOSBweTNrCis3MjE2NiBhZWI5MTQxOTNiNDVhNjBhMWQ3ZGQ0ZjFhYTMxN2QxODI4OTQyZTU5IHJlbGVhc2UzMC1tYWludAorNzIxNjcgODU1NDI3MTVhMjQ5MGJkNjFiNGU1ZDYwMzE4YzRmNjE0NDVlNDZjNyBsZWdhY3ktdHJ1bmsKKzcyMTY4IDYzNDgwYjkyYTVlMTI1ZjhkOWJmMDMxNjdkOTNhNWEyODhjMTA2YjIgcmVsZWFzZTI2LW1haW50Cis3MjE3MCA5NmMwNGU2YTZkODgyZDM2YzUyMDc1NGExN2FmZDFiZGY4OWI0YzE2IHBlcC0wMzgzCis3MjE3MSBjYzY5ZDNkZmY4N2EyMjJhYTc1ZWE0NDlmNGNkYzJlNGJlZDUzODZhIHBlcC0wMzgzCis3MjE3MiA1YzU1YjljODA4NDZhNGQxZmEzMTQ2ZWVkMjZlOTEyYjI0ZDJhZDUxIHB5M2sKKzcyMTczIDk2M2YwZjUxOTcwOTU1ZWM3NDQyMzAxZjlhMGM5OWMwNzk5ODkyNjcgbGVnYWN5LXRydW5rCis3MjE3NCA5ODY1MWU0ZjY1ZmU1OWFhMDc1OWNkNTlhMDgwNmI1NDc5NjY5NjViIHJlbGVhc2UzMC1tYWludAorNzIxNzUgYmMwNGNlYmNhN2U2YjQyOTgzY2U3ZjhkMDFlODg3NmQ5MmFjYjExYiBweTNrCis3MjE3NiA4OWQ1ZWY4MmMwMDY3NzBjZjNiZjY4YWYyNGNkZDQ1MmZlZjE3OGFiIHB5M2sKKzcyMTc3IDAxYWVkNDgxOTZiMDI4ZWI5MWE4ZDc4Nzg4MDUwZThjYWFiYTI3ZGYgcHkzaworNzIxNzggNDA5NDQ4ZDQ1NWUzZTQyNjBlYWZjOWM3MTExYzZjZTVjMWVlODQ2NiBsZWdhY3ktdHJ1bmsKKzcyMTc5IDk2MGVmMDBkNTIxNDE3NzlkODI0OWRmYWRiYjM2N2UyZjk4YWNhOWQgcHkzaworNzIxODAgYjE4YmQxYTQ5NGM3MWYwNTU5NjI1NDQxZDY5YjA0NjM5ZTgyMWJhNSBsZWdhY3ktdHJ1bmsKKzcyMTgxIDIyODAzNjVlYWE3MmMxMDc0NmQ3NDNiZjcxZDBiODQ2NGUxNTZlODUgcHkzaworNzIxODIgOTUwNjFkYTA2Y2I4NDViNzkwM2Y0YmI1OTRjNmFkZDhmMDA1ZmI0MyByZWxlYXNlMjYtbWFpbnQKKzcyMTgzIDg5NjNjZDg1OGFkNjEwNmE2M2M1MzA3ZmVlMDM5ZWE0M2IxM2Q5ZDkgbGVnYWN5LXRydW5rCis3MjE4NCA4ZmIxOWNhNjJlNzBkZmM1Zjk2NzllZWM3Yjc1M2VkNjkxNzkxOWFiIGxlZ2FjeS10cnVuaworNzIxODUgMTM1NWRhYzIzOGZlY2FlYjgyNzMxYzE2ZjI3MWEyYTAzMTMwMzY4ZSBweTNrCis3MjE4NiAwZDgxN2U4ZWQzZWJmOWRmN2FiYWZmYTA5MmFiYWI1NTQyMTRiZjg3IHB5M2sKKzcyMTg3IDQyZDI4ZTVkYzdjYjE0Yzk0NTBjMmY2MmExZGI2YjVmNDExMDc3NWMgcHkzaworNzIxODggZWI4MTE1YWJmZjVlNTUyMTU0ZmRmMGZhMTA2NjFiODUzNTA1MWZjZSBwZXAtMDM4MworNzIxODkgMjNiYzRiMzkxYzEwMjI5YjY5NDE4YTE0MGM2ZjQzZjE4OTQxNTZmNiBsZWdhY3ktdHJ1bmsKKzcyMTkwIDBjOGJmZGRiZmNhMjY2Njc1ZjNiZTFjZDQzN2MwMWMyYmJlYWRmMTkgcmVsZWFzZTI2LW1haW50Cis3MjE5MSA5ZDg0MGE1OGEwZDVkMWI2YWJjOGZlMmM1YTYyMGI4N2IzYzMxZmM2IGxlZ2FjeS10cnVuaworNzIxOTIgNTExYTM3ZWYxYTQxMGZmNGQyNWY3NDgxOTRkZGIzYmM2MjNlYmUwZCBweTNrCis3MjE5MyAwNTEwMTlmMGRkOWZlMzlhNWFkOGMzNDFmOGYxMzM0OGFkMTgxMDQ1IHJlbGVhc2UzMC1tYWludAorNzIxOTQgZjY4NmFjZWQwMmEzZTRkNDNjMzQ4YzYzYWQ2ZDI3ODMyY2JjNWRmNyBweTNrCis3MjE5NSBlMTljYzNlYmI1OGEwYmU2MjQ0YTQzN2FkNDA4NGNjZGZjMjQ2MWQ2IHB5M2sKKzcyMTk2IDIwNmNjZjlhYTAyNWYwMTY0NWZjMWJmOTFkN2FjYjcyZWM3NzcwYzggcHkzaworNzIxOTcgZTYyYmM1N2E2MmVhYmEwYWFiZTg2NDJjNzNhOGVmYmQwMmQ1OTVkNiBsZWdhY3ktdHJ1bmsKKzcyMTk4IDAyYjYxNTM4OWQzZWY1MDZhY2Q1MDM5ZTBiNzcyODZhZWFiMDc5NTcgbGVnYWN5LXRydW5rCis3MjE5OSBkN2I1MWViZjZkZTQyNDM2OWZmNWQ1NjM2YTE1YjQ5Y2U5MTY2MGFhIGxlZ2FjeS10cnVuaworNzIyMDAgMWI3MWE1NzBmNTRlYWNmZDg2MDJiNDE2OTQxZGI0OWQwMTY3NjI2MiBsZWdhY3ktdHJ1bmsKKzcyMjAxIDFhODQ5ZWU1ZjA4Y2M4NjQxNjgyMWI4Y2JhMTcyOTMwYWU1ODRiODggcHkzaworNzIyMDIgNWFhZjI0ZWM0M2RjMTBhZmE0YWU3NTZjNTY5OTA2YTA1N2M1ZDIxZSBsZWdhY3ktdHJ1bmsKKzcyMjAzIDkwM2U4MGYzZTgxMThlZjI3YzgxYWNiNGU4OTU2YjA2MTQ0ODRhODkgcHkzaworNzIyMDQgMTFiMWZjOTkyMWJkMGUwM2QxMTQ3ZjZlZThiZGM3MGIzZTI4NDYwZSBweTNrCis3MjIwNSBmMjc3YTg0MDcxZjE0ZWUyODU3YjRmYTFhNDFmOGY0ZTFhYzEyMTk4IHJlbGVhc2UyNi1tYWludAorNzIyMDYgMjFiZGE2MTFmMGU0MDBkNzUwZTU5ZmQ4NmY2ZDMyYTBiYjM0ODg3YSByZWxlYXNlMzAtbWFpbnQKKzcyMjA3IGVjM2ZjNjQ2MzFkOTllZWZhMWVmMDE5NGRlZjE4ZTg1NDY5NGM3NDYgcHkzaworNzIyMDggNTJhNzdlZjA2OWNkYmEzYTEyZmU3NzYzZTM3OTQwN2UzOGU5ZGIzMyBweTNrCis3MjIwOSA2NjIwMGE3NmRlMjY2MmI0NzE1NjVjODM1Zjk2OTYxY2VlMzg3YzMwIHJlbGVhc2UzMC1tYWludAorNzIyMTAgOWI1NWU5Yjk5YTQzNmJkYTM1N2RjYzkyMmY5ODViNGQ0NmM1YWM2ZiBsZWdhY3ktdHJ1bmsKKzcyMjExIDVmZTkwNGZmYzZiODIzYzRmOWIyMTZiOGE4ZjA3NTM3ZTMxMTU5NTAgcHkzaworNzIyMTIgYmUzYzA3YWRkZTk1ZGE0MzVlZmJkNmI0MTI3YjQ4YjQ5OTM2NWE0NSBweTNrCis3MjIxMyBlMGNlZGU3ZjUyMWI0MzlmZTk4MTA4NWI2YmMyMDgyMDNjODgxNzhjIGxlZ2FjeS10cnVuaworNzIyMTQgYTg5MzE5NDE1NWEyMjUyM2ZiNzRjODY5ODRiMjY1ZjZhZWMxNmFkMSBwZXAtMDM4MworNzIyMTUgNGY2NWVlMWY0ODQ4ZjY5YmY0ZTdjOTI2NDY0YzNkMzEzMTM0OTM4OCBwZXAtMDM4MworNzIyMTYgNTg3MDUwODJlN2M4NWNiNzVmNjRkNmFlYzFlYTkyZjk4ZGRkNDEwZSBwZXAtMDM4MworNzIyMTcgNTJhODlkNzIzYjZiYzEyZDgzNzNmZjE3ZjI1Y2U1MjliMWU2MzUxZiBweTNrCis3MjIxOCAwZWNjNWI5MDY0Nzc5NTIzNWQ2ZGY5ZTc0ZjM4YTkwM2NkMTNlMjE1IHB5M2sKKzcyMjE5IDdiY2UwNTJmMGU3YjcxZTRlZjYzYzJiZDQ4YWRlNzY2MzMxZTdmNjQgbGVnYWN5LXRydW5rCis3MjIyMCBjNWYxNGRiZWE0M2ZiY2NjZmFiN2NkYjc5MTk5NGQxMjA0MjIwNTExIHB5M2sKKzcyMjIxIGIwNmYxMWYzYjY1YjBkODg1OWVkZThjZWNhMDRmZjI2ZGNlZmEwMTIgbGVnYWN5LXRydW5rCis3MjIyMiBiYTQ1ZTEyNjU3NGRhMWQ2YmY2MWQ0YmU3MTA5YzlhZjQzOTM3YjhjIHB5M2sKKzcyMjIzIGU1NDE0MWQ2M2UwMTg3NGJhMmI4OTAwMjVkODIwZGFiZTBiN2YyNzEgbGVnYWN5LXRydW5rCis3MjIyNCA2NGQ5YTllN2Y2OGVjZDQyMGEyOTRhOTJmOWZmZTI1MWE2ZGExNGZmIHB5M2sKKzcyMjI1IDMwM2I3ZWU4ZTdmZWYyYmFmM2VhYzFiZmM0YzgyYjI0NzQ1NDExZWUgbGVnYWN5LXRydW5rCis3MjIyNiAwMDFhYzU5YzFlNjcyY2UzZGE2NGJjMWM4NGUzY2FkMzRiYmUyZmNhIGxlZ2FjeS10cnVuaworNzIyMjcgOWZlZjFmMTY1N2M4YTc1NTE0YzNkMjhjZDM2MWFmNDA1ZWQ0MWY4NiBsZWdhY3ktdHJ1bmsKKzcyMjI4IDM1OGFiMWZmYWE4MDg0ZWE3NzNiMWFhOTFjM2E4ZDczODkwZTc4NjkgcHkzaworNzIyMjkgYWVlMmIxMGRiYWI5MzhlYzJhYTU0ZDE4MDcxYmRjNmFkMDhkYmU0NiBweTNrCis3MjIzMCA3ZmZkOTYyNWM5MWNmZDc5ODQzNjUxZDVhMmIwOTkzNDBlZWFmMzc1IHBlcC0wMzgzCis3MjIzMSAwMDA2M2FkZjA1NTg0NTY1OGI3ZGIyMDFlNDZiYWUzMjI5YzJjOWUyIHBlcC0wMzgzCis3MjIzMiAwNzA5YzZkMzY5ZGU2NzA3Y2M2OWE4N2I1M2RkMzk5YWFjNGYzOTUxIHBlcC0wMzgzCis3MjIzNSA3NjRlYWU1MjA4ODA4ZjVmMDRhMzI2YWUwYjA3NjEwMjBiM2JmZWY0IHBlcC0wMzgzCis3MjIzNiA5YjEwN2E3OTdkZjg5ZTA4NjNkN2QzZjc3ZGQxOWQ2MGY2ZGU2NTAzIHBlcC0wMzgzCis3MjIzNyBkNmIzYjc0YmRhMGU1YWVjYmYzZjY0NThlNDk1OGMyM2EzMmYzZjA4IGxlZ2FjeS10cnVuaworNzIyMzggNTI2YjBkYzA5MTM4MjFjZDcwNzgxNGQwZTc2NGM5ZmU2ZjMwYTAzOSBweTNrCis3MjIzOSBmNzgwMTY5OTgxNWMxMjQzZmY5OWVhODE3ZDYzZWE0MjZkNWMwNmFjIHB5M2sKKzcyMjQwIDY4NzdhMWY0YTA5MjdmZWM2NWUxYmEzZWQ4ZTYzMTU4NjViODZiNjIgcGVwLTAzODMKKzcyMjQxIGFlMjRkZTQ4YWRjNDFkMTE5NmU4YmExYjRiMjQyZjMxZTJlYWYyMTYgbGVnYWN5LXRydW5rCis3MjI0MiBiZDZkMjU3YTkxMzBmNzg2Y2M1YzZmMmY3MmI1YTI3Mjg1MmQ5N2E1IHB5M2sKKzcyMjQzIDg3ZmMxMTYyZDlmNGI2OTQwOWM5YjJjOTUxNDc2ODNhMzg2ZjljM2EgcGVwLTAzODMKKzcyMjQ0IGFiZjU3NGU5ZjFkM2Q1OWQ3OTc1ZTFlZjVmNWY0Yjk0NmFmMzQwMDMgcGVwLTAzODMKKzcyMjQ1IDM5NDQ2MmVhYjY1ZGIwNTI3NGE2ZjY2NDQ1YWM4MTgyODZhZjlhOTkgcmVsZWFzZTMwLW1haW50Cis3MjI0NiBhNjc3ODNkODEyZjZlNmNkMzc3NGZiMTRiYzFiMWY2ZTcwZTQ0N2M2IGxlZ2FjeS10cnVuaworNzIyNDcgMzMyNzBhZDZhZGVmODJmNjA1M2JjM2JjOGU4OTlmNTk1ZjY3NWZkYSBwZXAtMDM4MworNzIyNDggMTNhODJhNzEwZjE5YjQzOTgwMGE4YzllNDk5Zjk0MWE3ZmRmNThiYyBweTNrCis3MjI0OSBmNzBlOTFmNWZjOWNmZjI0OGI2YzJlMTZhYmY5Yjk0ZTQ0ZjdmYzE4IHJlbGVhc2UzMC1tYWludAorNzIyNTAgNjNkZGNlOWZhZjRhOTg3ZWI0YThmODkyODFlMmQwZTdmOTViNzFjNyBsZWdhY3ktdHJ1bmsKKzcyMjUxIDRhNzZkNmQyOTdjZWJlNWUzYjA5YTEyOWE1YTM5ODc5ZjA4NGQ3MjIgcmVsZWFzZTI2LW1haW50Cis3MjI1MiBmYjUyMWY5OTZkZTEzYmRhNzUxZGQ4YTllNzEyYzc2YjVjMjY0MTQyIHB5M2sKKzcyMjUzIDFmMDBiYzFkMTE1YTBiZjQwZmEwMmQ5YjUwNjA4ODMwMDczMTFhNjUgbGVnYWN5LXRydW5rCis3MjI1NCA1YjI4ZGViYTFjZDZiN2EwMTNiNjVlYWFhOGEzYjllZDczYzc1ZTQxIHJlbGVhc2UyNi1tYWludAorNzIyNTUgZTJiNTUzZDcyMDVmMzliZWIxMDVkZGZkODdmMGQyZDNmODRiM2MxNCBweTNrCis3MjI1NiBhOGI1YTViOWE0OWFhZDIxODM5MWJhMmFjMzhiYWFjMWZhMzE0ODBlIHJlbGVhc2UzMC1tYWludAorNzIyNTcgNGY4NjdmMTQ5NGQ1NWU5YzFmMDA5MTgwMzUwNzRkN2E1NjdiNGMyYSBsZWdhY3ktdHJ1bmsKKzcyMjU4IGM2Zjk5ZDRjODEyMmUxMmNiNGNiN2M4NmU2NmVlZjg5NWQ0ZmJhNjQgcmVsZWFzZTI2LW1haW50Cis3MjI1OSAwYjdlZWZlN2I2ZDE3ZDhmNGNhMmE4MWUxZjJmMDk4ZGFhY2M3ZDUxIHB5M2sKKzcyMjYwIDFjMjdlY2JlZDhjNDFhNzEyOWViNGEzYTg4Mjk1NzM5NDg1ODZmN2MgbGVnYWN5LXRydW5rCis3MjI2MSBjZTk0NzIwMGI3Njg4YTkzODRkM2ZlOWM0NzE1NGEwZTdjMjQwNGI4IHJlbGVhc2UzMC1tYWludAorNzIyNjIgMThhNWFlOTZhZTVjOWEzZmRlMWRmYmY2ODBiM2I1MTkzMzE4MjE3OSByZWxlYXNlMjYtbWFpbnQKKzcyMjYzIGU0YWY5NzFiOTE4NDU2MDk4MTJmOTExNjNmOGQ0MGJmMDdhMmFiNDkgbGVnYWN5LXRydW5rCis3MjI2NCA1YWRlMGRlNzRiNWE5MTNhMGE3MThkNGIxYjJiNDUyNmJiOWFlNzU4IHJlbGVhc2UyNi1tYWludAorNzIyNjUgZDdiYmRlOTM2ZDYyOTA1YWRhNzI5NTZhOWQ5NmU3MDBhYzRmNWJmNSBweTNrCis3MjI2NiA4MzQ2ZDNjN2M0ZTIzYjg5ZThjYTc4MzIwYjVjNGFjMWJlYWE4YjFiIHJlbGVhc2UzMC1tYWludAorNzIyNjcgZTRmZjQyNzM0OTNiZDA0OGJlMGRjOWY3OWI4OTYzODNiOGQ4YTg1NiBsZWdhY3ktdHJ1bmsKKzcyMjY4IDRjZDQzN2RmYWNlODk4MzJiZThhMjEyYmU4NjUzY2QxMDBlMmNlNWIgcHkzaworNzIyNjkgNjZmNzUwMDhjM2E4NzI1MDI5MzY4MmQ4ZWIyMmY5ZDFlOWU5MmU1NSBsZWdhY3ktdHJ1bmsKKzcyMjcwIGQ4ZDY3YWE3NTUyNTIwMWQ4Yzg5YWM5NjAwZmJhNWI4NDM1M2Y2MjggcHkzaworNzIyNzEgZTY4Njg1Y2YzNjUxZDk5ODc2NmNjNDFhMWZmMDZlYmY1N2EyMTZmYSBwZXAtMDM4MworNzIyNzIgZGIyODM5MGNhNjE3MjYwNjUxZjk2ZDgzNDJhMjdiMGQwMzljMzJlYiBwZXAtMDM4MworNzIyNzMgZDZjYmFlYTk3NTY5OGViZjc5NTg0ZTZkNmE4YjU5ZTBhYjU4MTZhZCBsZWdhY3ktdHJ1bmsKKzcyMjc0IDJjZDlhZWU2ZjYyNDYwMzI4ODVmNTU0NjEyMzc0YjY5ZjAyMjY2OGYgcHkzaworNzIyNzUgYmMxZDE5NjgzNmE0ZmJhOGJjMTE2ZWRlM2UxMGE5MTI3NDg2NmJmNyByZWxlYXNlMjYtbWFpbnQKKzcyMjc2IDNjYjViN2Q1NjMwOTgxY2YyNDY3OTFiMzFmZDA1ZjRlNjhmYjAzMDkgcmVsZWFzZTMwLW1haW50Cis3MjI3NyA2OTIzMWNlZmQ4MGQzZmFmZWIyZDU0Yjg1MmZkMjNiOTdjNmFlNjZhIHJlbGVhc2UzMC1tYWludAorNzIyNzggYWQxMmQ4ZjQxNGM3MzYxYTk4NWUyZjE4MDQwMWNlOWYxZWI1NDc2ZCBsZWdhY3ktdHJ1bmsKKzcyMjc5IDMwODhkMmViZjdiZTVlYTNkMTMwZDhhZjgxMjM0N2Q2ZTQzNzZjNWIgcmVsZWFzZTI2LW1haW50Cis3MjI4MCBmZTU0ZjM5NDU5OWMyNTM1ODgxOTBkOTYxODYxMDczY2NhYjVkODYyIHB5M2sKKzcyMjgxIDczYWY5MDIwNmNiZTMyNGI5OTYzYWU1Njg4OGNjZGZkYTI5MWI3ODAgcmVsZWFzZTMwLW1haW50Cis3MjI4MiA1Y2I4NWVmZjhjMDM1YWVhYTA0MDlmM2M1OTEzNzc4MmZlMmZiOGQwIHB5M2sKKzcyMjgzIDEyZDhmZDQ5OTcyMmMyZGNlNGJiYjFiNzk0Njk5YzAxYzE3MDc1MTcgbGVnYWN5LXRydW5rCis3MjI4NCA1MzhhN2Q1ODMwNjQ1ZDBhNzYxNGI0ZjBjNmQ0YzcwOWY2OTQ4NTMyIGxlZ2FjeS10cnVuaworNzIyODUgOWI5NTkwMDA3ZTgyNDk4MWI1ZGE0OGE5MGM1ODg3MjY1YmVmNGIxZCBweTNrCis3MjI4NiAxMDAzODFjNWU3M2FiYjdmMGNiODc2OWFjNDJkNzFhM2QwYzgxYWZmIHB5M2sKKzcyMjg3IDQ3OTEyMTZiZmMxZWJkYjllODY5NTNjOTcxNTQ3NWVhNGM1ZjJkMzcgcHkzaworNzIyODggNzVkNDFmNDYwODUyMTA5MTdiYzNhNGVmMDg4YmIzYTM2NjJjNTQwOSBsZWdhY3ktdHJ1bmsKKzcyMjg5IDgyZmZkZmJjNDJlNTY5NjQ5ZGNkNGNhOWM4NzJiZjcyNjUxYjhjZDcgcHkzaworNzIyOTAgZjcyMjg5MmI2MGFlM2JlYWZkYzdmNjEwNGE4MmVlNGViN2RjMGI4NyBsZWdhY3ktdHJ1bmsKKzcyMjkxIGJkNDkxYjVhODgwODY5OGI2NTg1ZWYxZjI3NTQwYTdhNjE2ZGRjMTMgcHkzaworNzIyOTIgNWNjZWM0YjM2NjQ2ZDExN2FmYjdiZTZlMzg5NzUyODI2NDU4MjM4MyBsZWdhY3ktdHJ1bmsKKzcyMjkzIDMxMGRhYTk5ZDYwNzNkMzNmY2YwN2IxNGNkMjE3NzFlOThiYzMyNzIgcHkzaworNzIyOTQgYzJkMTA3ZTA3ODM5NzQ1MmNlODZlNWUxNDAxNGU0MmY4MzllYWMzMSBweTNrCis3MjI5NSA1Mzk5YmU3YTM5YmEzNzE3YmQ4MDFkNWM2YTQ5NzgyZDU4Yzk3OTVhIGxlZ2FjeS10cnVuaworNzIyOTYgNzU3NDNhYWVlNTA0MGMwYjNiYmQyMTZlYmZlODc3OGMyNTgyNDMzMCBweTNrCis3MjI5NyBkMzc0N2IwYTJmMzYxYWE0ZDcwYzQwZjhkYjgxOGIwYWZlNTZhYzZlIHJlbGVhc2UyNi1tYWludAorNzIyOTggM2IwOWYzMzJmMWZhM2I0MjFiMWYzZTIxN2JjNzgzZTFlNmM0NWEyYyBweTNrCis3MjI5OSBiMzMxOWMwODRkMjU3MWMzMDM4MzEwMTc1ZWQzOWNjNWNjZTk3NWFhIGxlZ2FjeS10cnVuaworNzIzMDAgZGQ5MzhhMmNjMmYwYzc0YTcwN2JmZjU5M2VmYmJhYjMzYzM1YjNhMiBweTNrCis3MjMwMSA1YmVjYzg2NTQ4MTIyMDgyYzFjOTE5M2UyYTg2ZWY4NTAyZmM1MDNiIHB5M2sKKzcyMzAyIGJiYTdlZTlkYWVlMDY0NTg5Yzk3MzE1NjgzNzdjNDFhZGM3YWJkNTYgcmVsZWFzZTI2LW1haW50Cis3MjMwMyA2MzlhNzlmYTZhMjM4YTY1MmM5NDhmMTQwMDY3MzI5MDc5MTE3MTRjIGxlZ2FjeS10cnVuaworNzIzMDQgYWViNDA1MGNkNDMxODUyNjJmYzg5ZWI3Y2NmNjllMmFiOTYxYWE5YyByZWxlYXNlMzAtbWFpbnQKKzcyMzA1IDRmY2ZjNTNmY2M3NGJkNmNlOTk1ZmNkZWM1MzkwNWQwODE4NmMyZWYgcmVsZWFzZTI2LW1haW50Cis3MjMwNiAyNDE2ZjE2NmRlNGIwMGUyYWI3YjAwYmJlZjY1MTE0OTdmNmU5MzRmIGxlZ2FjeS10cnVuaworNzIzMDcgYjFlYTVmNzMxM2ZkZTU0ZDMxZjUzODVmMWVhNjcxZDExZWZiOTkwOCBweTNrCis3MjMwOCAwYmY1YmIyZjNjMDg5ODZkYzA2MGQwYWE0ZmI3MDgzM2IxYmVhOTYxIHJlbGVhc2UzMC1tYWludAorNzIzMDkgNjY2ODJmYzE3MmU5MGU5OGU4YTE0NzRhZTE1ZjBmMWVkZmVlNzU1YSBweTNrCis3MjMxMCA3MzIxZDQ1MTBiNDFiYWJjZTNmOWMyYTQ3NDg4NjhiZDJiZTRkNDAyIHBlcC0wMzgzCis3MjMxMSA0ZGQ1YTZhOTNlNzA4OGMwM2IyYWMxNjA3ZGI5YjM1NmJiOTQ1MTY3IHBlcC0wMzgzCis3MjMxMiA2ZTEwYjcwYTQxMTAzNzYwMjk0ZDEzMDBjOWViYmUyODEwNjg1NmQ0IHBlcC0wMzgzCis3MjMxMyBhYzIwOWYxMzJiMTdiMjg0MDE0ZDRhMTBjZjk3YmE3N2RlOGI3Y2I3IHB5M2sKKzcyMzE0IDRlNTgzNGIzMjJjMTBhMmNmMDEwZjNkNDRlNGJlZDg2YzRlNTkwYjMgbGVnYWN5LXRydW5rCis3MjMxNSAyZTA0NGM5ZjRiNDA1Zjc5NjI4MDhiZTA5MzMxMTU1ZWJjZTc5ZTIwIHB5M2sKKzcyMzE2IGIwMGNlNmYwZmEzYTljZmI5MzdjNmFkYTFkYmE2OGUyYjQ2ZmYxN2EgcHkzaworNzIzMTcgMWU4MmJlZjY4ZjRkZmU4N2Q2ZWQyODkwYzdlMTEyZGE1ZWMwNWFhNiBweTNrCis3MjMxOCA1ZGZkMjI5MDYzNDExZmY2MWMzNzFkNjZhM2NkYjhiZjNlZmYxYjY0IHB5M2sKKzcyMzE5IGRkNDg5ZjQ3NTdiZTgyNjliZTk2ZWJhY2EzNmViMDMxNDVmYjdlMGUgbGVnYWN5LXRydW5rCis3MjMyMCBhZjhmODQzMjU3OTczZjE4Yjk4ODA0NDIxNWU0NzQ2ZmVkMWY3ZGFmIGxlZ2FjeS10cnVuaworNzIzMjEgYjEyYTQ0ZWVmNDBiNmM1OTI3MDZlYzNmNWI2NjM3MDkyZTc2YzkzNSBweTNrCis3MjMyMiBjNDliYzMzMDMyN2NmMjllY2U1YTEwZGVhYWMyNTJiZmMxNmM1NjE2IGxlZ2FjeS10cnVuaworNzIzMjMgNTg1NzQyODhhNWJmZWE5ZGVhYzYxMDdlMzNiMjdkNzJhNjYyZGNjYyBweTNrCis3MjMyNCA0YzYzNjcwNjM5ZWM3MGI1YWE2YjY0ZTVkYmJmYmU5YmFlY2Y0M2EzIGxlZ2FjeS10cnVuaworNzIzMjUgNThhYTBhZDc3MjUzZDc3NTRjNjhlOWE5NjEwMGYzYjc3YjFmZWU1ZSBweTNrCis3MjMyNiA1ODc4Y2E3ODRhODQ5NmU0ZDVmNGNkNWJmZmMwODgyOGEwOGY4NTRjIGxlZ2FjeS10cnVuaworNzIzMjcgMzNiYmRkM2VlYTQzZDlmY2VjZTVlZjRjN2RmN2UzOWNmN2U5MDRlYyBweTNrCis3MjMyOCA5Zjg1MzJhMGYxYWJjYzQ2MWI2MDAwOWZiMTU1MWZkN2QyODJlZjgxIGxlZ2FjeS10cnVuaworNzIzMjkgZWM1ZjAzZDFlODE5ODkzMTNmMGFjMTc3YzJmYmNhZDEyNDRmYjViOCBweTNrCis3MjMzMCBmNmJmZmI5ZTgzNGY5OWU2MDgwNjY4ZDE5ZTcwMTU5OGUwNDkxYTJkIHB5M2sKKzcyMzMxIDE2N2NkMzc4YjViZDhiMzdlNjc2NmIzZGE1ZGMwZDgyOWFjMzg2M2EgcHkzaworNzIzMzIgMmNjMTE2OTNhMTgwZWQ3NDE3ODQzMDlkZGVhNzY0YTQ5NDRjOWUzNSByZWxlYXNlMzAtbWFpbnQKKzcyMzMzIGM2Mzc2ZDNmYTk2ODc4MTdiMmE0MWJmNTY5ZWRjMDU0OWNlNmJhOTIgcHkzaworNzIzMzQgZDE3Y2M3MmZmZTgwNzY3MWQ0OTYwZDUxYmFlMDUyMWZjZGEwYzhkMyByZWxlYXNlMzAtbWFpbnQKKzcyMzM1IDlmNmI4Y2UyMDIzZjBjMjQ0ZmIxYTEyMWZkZDU3NDNmN2ExMGM0ZjggbGVnYWN5LXRydW5rCis3MjMzNiAyMTViN2I2NmU2MmRmMjg1ZTE1ZDkxN2FiMmRmMjk4YzRiZDM3N2Q2IHB5M2sKKzcyMzM3IDRmM2VkYjZhZjhjMWJiZDNiMzg1NTI1YzZkMDBjZDUzODQ3NWQ0Y2EgcmVsZWFzZTI2LW1haW50Cis3MjMzOCA5NzYwMzUzNjYwNjU3YWFhMjFkMmNkMzdjYzliMWYwNTAwYTFiNjgyIHJlbGVhc2UzMC1tYWludAorNzIzMzkgY2E0NTBiMjgyN2VmMzgwOWIzNDk3ZmVhYzE4YzAyZmFkNDhiZjQzZSBweTNrCis3MjM0MCBkODYwMWU4YjNhYmU5MWViYTA3ZDMyNWYxNzM0Nzc0N2NkMjk5ZDk1IHB5M2sKKzcyMzQxIGE3Yzk5ZTM0ZTIzOWUyMTcyYTY3YzgwNzUyNzcxZmJkNzBjOTZmZWEgcHkzaworNzIzNDIgOGU4Yjk1OTA5MTdhZDk0YzViODJjNjM5NTczOGExNDcwN2ExMzJlZiByZWxlYXNlMzAtbWFpbnQKKzcyMzQzIDdlYTc4NzBkZDk2NmQyMjE2ZDUxNDRkNzNiYWQ1MTVkYzAzZjQwOWIgbGVnYWN5LXRydW5rCis3MjM0NCBlYTJhOTAwODJjODM3NTI4MzkyNTExMGRkOWI5ZmNmMTQ1NjNmZjUxIGxlZ2FjeS10cnVuaworNzIzNDUgNmQ2NGNkNjlmMzg0NGE1NWVkYjczNGIzYmFjNWJlZTBjZmFjY2Y3ZiByZWxlYXNlMjYtbWFpbnQKKzcyMzQ2IDk4NzQyMWQzZjhhZTQwYjZkOTA1ZmNjYjJmNzdmYzVmZTU1ZDk2NzQgcHkzaworNzIzNDcgYjAzNzU1NjdmYWU4MGE0NmNhYzhjMTI1ZmQ1ODk2YzM0MjI4N2Y0NSByZWxlYXNlMzAtbWFpbnQKKzcyMzQ4IDFkOGYyNGQ0MGMyYzY4ZmI5YjNlYzQ0MWNiMTc1MDQ2YzljODAyMWEgbGVnYWN5LXRydW5rCis3MjM0OSA0ZDVmMDY2NTc1ZWQ1MGQ5MDE5NjFhMzMxM2EzOGIwZjlkN2FiMDA5IHJlbGVhc2UyNi1tYWludAorNzIzNTAgYjk3N2FmMTljNmYwMTM3ZmU0N2E3NTYxYTNiYzIxMWNhYzhmOGRlNyBweTNrCis3MjM1MSBiYmUyYWE0MzE2OTIzMjM2MDVmZGUxYWJlNGMyMzQ5NzVlZDNjY2U3IHB5M2sKKzcyMzUyIDU4MWI1NjRkOGZjM2IyZmU2N2NjZDNhZTBjMjU1MjIwNDA4MWVjODAgbGVnYWN5LXRydW5rCis3MjM1MyBhODVlNjc1NmRlZDJjZmU3ZTJiMThjZGRjZDQ5OGM5YzE2ZDZlZTY4IHJlbGVhc2UyNi1tYWludAorNzIzNTQgZTAxNzlmMDhkMzRmMjIwMzE0M2U5NDI5ZTZmYmFjNTJjNjZiNjc4ZCBweTNrCis3MjM1NSBkM2ZmYjM3MDJjM2FmNjNmYTUwZWEwNmZhNTMyNjQyMmEzZWM2YmNkIHJlbGVhc2UzMC1tYWludAorNzIzNTcgOGY3Y2Y1Y2IyMWJiNTgzYWI0ZTVhZWRiMmY0MjMwNGIwZWI0ZmM0MiBsZWdhY3ktdHJ1bmsKKzcyMzU4IDAyNmQzOTBlZWNjMTk2YWQwNTE0Y2MxODcxMGY1ODc1MmQwMmU5YjkgcHkzaworNzIzNTkgMTVkM2JkZTcwZDg3YjAwMGVjY2U5NDk3YzM1ODlkNGVjZTczN2U0NyBweTNrCis3MjM2MCBmMGZiNGRkZmYxYWJkYWFhMzM1NmZkNmQzM2FjYTM5MDA3M2U5ZGVhIHJlbGVhc2UzMC1tYWludAorNzIzNjEgYWU2ODUwODY5ZDUyZjRmNmVjNzgyYWIzNGNjODA4ZjVlNjgyMjZlYSBsZWdhY3ktdHJ1bmsKKzcyMzYyIDI1OTJjNmE5ZGRkNmM0NGVjZDk1OWVmZDZjMjc5NTJlZWU5M2Q2NTYgcHkzaworNzIzNjMgOTExZGY4MmJjMjVkZmI2MmZhZWY2ZWExYjlkMGNmNzA0MTdiYjk3YyBweTNrCis3MjM2NCA1YjkwMjFjMTk1MTJiYjJlM2EzYmQwMTMyNTJkMjhmOTI4ZjgzNTMzIHB5M2sKKzcyMzY1IDU0ZGM1Nzc3YmRmYmZlNjM2OWQ4M2Y3Mjc4YjI4NDZjMzhhODg2YjkgcHkzaworNzIzNjYgN2JhZjRjYzEzYmNmZjY4YmI1YjRmYjk4ODJkMmRmYmVkZjc1ZGQ3OSBweTNrCis3MjM2NyAzYjVjNDAwYzlkY2Q0NTEwMzVkODdjNDIzMDY4NmJiYmZkZTVkZDY1IGxlZ2FjeS10cnVuaworNzIzNjggZmIxMGI4OGFmZDQwMWU4MTIxMmE1Y2FjZTRiMTY4ZTE4NjcxM2I3MyBsZWdhY3ktdHJ1bmsKKzcyMzY5IDViNGIwOWU4ZjMyYmE5Y2JlNWUxYWI3N2I3NzQ1ODE4Njc2Mjc0NDQgcHkzaworNzIzNzAgYTIzMDNhNzRhNzYxMGM4ZTJjNmE2M2RkMjE5ZWViYjg2YmYyYTJmZCBweTNrCis3MjM3MSBiNjY2ZTcyZjYwMmZhODUyOGQ4MzAwYWRiNGEwODE1OTY3ZDM5YWZkIHB5M2sKKzcyMzcyIDk4OTU0ODNlOTYwMTNhNTJjZmYyZDgxOTdmYzU0ZTg4Njk3YTlhZDggcHkzaworNzIzNzMgOWM0ZDkyOWY0MDU5OTQxNzE5MWMzZjQ1YzVjMzNiYmJlNmM4ZDdlMCBweTNrCis3MjM3NCA0YjFhOWFmZmUzNGNkNGY5MjEyZGU3YjUyM2FkN2EwYTkzODgyMmJlIHB5M2sKKzcyMzc1IGViM2FmYmQ2YWFhOTZlZjY3NjAyYmJjMDBlOTYxNmVlZGU0ODAwMDggbGVnYWN5LXRydW5rCis3MjM3NiA0ZjE3Mzg0YWU4Y2JmZTQ2OGMwMTEyZWQ3ZTgyNGE5ZjZmODlhYzUxIHB5M2sKKzcyMzc3IDBmNmE3ODVjZjI4NmUzZDFkODNhNWU3YzQyNGYyNzlhZmIxZTY4ODIgbGVnYWN5LXRydW5rCis3MjM3OCA1NTZkMTEzMTRhZDVjZjkxMzgyYzRmZjkyYWIxZGJkNWNkYmE2MDBmIHJlbGVhc2UyNi1tYWludAorNzIzNzkgNTdlOWIxYjA4MzhlNTJkZTk0MGNkMDQ3MTM0ZWE4NDQ3MGM1YmQyZCBweTNrCis3MjM4MCBhODE1YWNjZDg5ZTQwYjM0MWE1ZDYwZjVkMDIwMTkzYWE4MWI0Yzg0IHJlbGVhc2UzMC1tYWludAorNzIzODEgODU3NzVkMTAwYTMyYzU5ZjJjYmQyYTEyY2VmMzZjMGI0MTBlNGZlNyByZWxlYXNlMjYtbWFpbnQKKzcyMzgyIGU2MjA3MDFhM2VjODY0MGFmYzZhNDMyMzBhNTU4MWViMTNjMjQ0MzcgbGVnYWN5LXRydW5rCis3MjM4MyBhZWM2MmU5Y2M2ZThlZWZhNmExZTFiY2NkYjMzNDZjN2ZhNWFjMGQyIHJlbGVhc2UyNi1tYWludAorNzIzODUgYmNiYjk0ZDY5MmVmZDcxMjk2MmQ0ZWE5YmMyMjQ1YTJlZDJjYzcwOCBweTNrCis3MjM4NyAyOTAyNWI1MzAwNDY2ODUwMGQwODliZGE1OWY4ODkyYzY0NDQ2YjA4IHB5M2sKKzcyMzg4IGNhYzJhNWY0YjlmYWUxMjg0Yjk5Y2ZkZTQwOWVhODdjZDc5ZmYzZGYgbGVnYWN5LXRydW5rCis3MjM4OSBjNmVmZTU4ZWVmNjY1N2VlNGI5ZjI4OTk0OWVmZTFjNjZjYmQ4YmQ4IHJlbGVhc2UyNi1tYWludAorNzIzOTAgZjFhM2RlOWRmNDI1ZGI0YzNmMWI2NzkxMzEwNDg0N2NhOWI4ZDdjMyBweTNrCis3MjM5MSBmYjdkMTIxOTZjMzVjMmI1ZjVkYWFiY2NkNDI5Y2VlY2U5NTFjNjcyIHJlbGVhc2UzMC1tYWludAorNzIzOTIgMzU1OTdkM2RiZDA4MjAyY2M4ODcxZDFlYzEzZDE4MDQ3YmFlNDU4MCBsZWdhY3ktdHJ1bmsKKzcyMzkzIDAzODhhNDI3MjU5OGUzODY0ZTk1NTllOTExYjZhYWYwMDcwMzAxZGEgcmVsZWFzZTI2LW1haW50Cis3MjM5NCAwYzUyNmQxODk1MjcyYjlhNTI1N2Y4MmExYzE0Yjg3MzcyMTFmNTNjIHB5M2sKKzcyMzk1IGFkYzhlYzdmN2QyMzAxOWYwMjlhNzc1ZjIxNDI2YjUzYmUwZWVlYmQgcmVsZWFzZTMwLW1haW50Cis3MjM5NiBkZjNmNWRiNTI4ZjAwYjM3MWY3MTYxYTViZGMwZDZmYWM4MTkzZjhkIHB5M2sKKzcyMzk3IDdjYjZkZjAwNjk5ZjRiMzRkNzE5YmY2YzhmY2I0MjNmZDc4ODQ0MjkgcHkzaworNzIzOTggMDRiZGM5NDQ3MThhZjllZWZmMTc5OGJkZDVkMTY3NGVjYzlhMTQzYyBweTNrCis3MjM5OSA5YzY1NDA0MDQwMGRlZmE0YzI5YmJlNjNlMDQ3MGY1MzdjZTFkYzRjIGxlZ2FjeS10cnVuaworNzI0MDAgMGI5ZDdjY2VkOTM3MWQ3ZmI0Yzg1M2Y1ZGEzMzJmNjRiODExMGEyNSBweTNrCis3MjQwMSAwMzRlMGZjZDY5NGU4ODFhNThhZTRmMWNhYzk5ZWRmYTc0MDExYjY4IHJlbGVhc2UyNi1tYWludAorNzI0MDIgZWNlN2U3YTgwMDQzYzE1ODI1MTE0YjQzYTg4MzY0M2Y3YzBmYTcxNCByZWxlYXNlMzAtbWFpbnQKKzcyNDAzIGM1MmU1NTVjOTE4ZDliYmM0ZmE2MDJhZjk1NzM3YTMwYjE5NjA5NzYgcmVsZWFzZTMwLW1haW50Cis3MjQwNCA3ZGNhMjUwMzQzZWE0MWM5NjM5OGViNjhhZWU0ZmNiZDVhZDhmN2Y2IGxlZ2FjeS10cnVuaworNzI0MDUgNGE4NDcwMDY2NGQ5MjYyMWFmZThiNDFkOGEzMWZmOGUwNTZhMmYzOSByZWxlYXNlMjYtbWFpbnQKKzcyNDA2IDQ2MzQyZmZhMjk2MzUzZjM1MDdlZTc5NDAxZjdjMTA3ODkyNjRlMmYgbGVnYWN5LXRydW5rCis3MjQwNyBjMGFkMjNhZTJhM2UxY2NlNDU5MjAwNmQ5YTBiNjZhODZjOWFlMzc3IHJlbGVhc2UyNi1tYWludAorNzI0MDggNjNiMjNiZDM5MDRkZTcxNjljNjJjZjBlYmEzNzc5MzU3NWU4OGY2OSBweTNrCis3MjQwOSBjYTU1N2Y4NTBlZWU2NGNkM2YyZmIxMTBhMDhiNTg0Yzg2NGEyOGZjIHJlbGVhc2UzMC1tYWludAorNzI0MTAgN2E2N2I2NDdiOWU3Nzc3OWVjZWIyMGEzNDgxOTIyZTllMDk4M2FkYyBweTNrCis3MjQxMiBiNjMwMjA3OTdmOTY3OGFkYWY0ZDJjM2UyNjU3NGE5ZWVmMmVmMDI4IHB5M2sKKzcyNDE0IGE2Mjk5MjQxZmJkOWJjYzYwNTk3ZDU0NmMwNmQ0NDNmYzY2MjcyZTYgcHkzaworNzI0MTUgM2FhYWJiMzEwMmU4ZTc1OWE4OTk3MTk4MTNlZGE1OTkzNjk4MTY5NSBsZWdhY3ktdHJ1bmsKKzcyNDE2IDM3NmZlMTU4NjI3NjAwMDdiMDc0Y2Q0ZWMzY2Y2ZTdlNTVkMTQzOGQgcmVsZWFzZTI2LW1haW50Cis3MjQxNyAyMDU4NjkwYTUzZTEyY2UyZTJjNzEwMzA1YzNiYjQwZWFhYmIzMTg5IHB5M2sKKzcyNDE4IDY1ZDhkYjViZWIyMDEyMjE5Y2JmZjE3MzllNDQ3MTdkZWM5MTQ0YjYgbGVnYWN5LXRydW5rCis3MjQxOSAyYTBmYWNhM2RlZWU1OTgzYTUwZGUxNDExMjZmZDMzM2MxOWJhZTEyIGxlZ2FjeS10cnVuaworNzI0MjEgNzcxNDI5ODVjNjQxMGE1MzUwNGRmNzc0MjFiNjVjYWQxZjYwMTFlMCBweTNrCis3MjQyMiBhN2NhZjI5ZDE0MDYzM2M0NTNjYTc4Mjc4MmNmOTgzMDcyYTU0NWZmIGxlZ2FjeS10cnVuaworNzI0MjMgZmFjNTFhMDIyYmY1MDkzMDQwM2VmOWE2ZjFmYWNiMmM5ODRiMDg0MCBweTNrCis3MjQyNSA4NWI5ZGY1MjVlMTA3MGY2MzhhZTU0MGQ4OWM4MTVlMDVkMmEwZTk3IGxlZ2FjeS10cnVuaworNzI0MjYgMjM4Y2FmY2MyNTE1ZjVkYjAzZDBhNTE2OGViZTBlNzZmYWY0MWE2NyBsZWdhY3ktdHJ1bmsKKzcyNDI3IDYyYmU1YWM5ODlmNGY4NmMwNGIyNDg5ZmI5NGE3OWJmYzY1M2Y4NTYgcHkzaworNzI0MjggYTgxOTBlODgxZmRmZjJhZjYzY2UyM2NjOTA5NTA0MDEyNzU2MDU1NCByZWxlYXNlMzAtbWFpbnQKKzcyNDI5IDdhM2JkMTc5YjE4MGRjYzE4OTVkMjg5N2UyYWUxM2I5ZjE0NDUyNDEgcmVsZWFzZTI2LW1haW50Cis3MjQzNCA2YzhiMzgwZGI3MjdmYzIyMWMyMjY4N2UzYmJkMWRmMzQ4YTc2NGNjIGxlZ2FjeS10cnVuaworNzI0MzUgZTdmZTIxN2NlMDE1N2RkODE0NGVhYWY3ZjYzMzJlZDA3MDI1MTU3NSBweTNrCis3MjQzNiBmODc1ODM1M2M2YzIwMmI2YzU2YjZlZTdjMDRkMzVkODIzYTQwZmFiIHJlbGVhc2UyNi1tYWludAorNzI0MzcgNTcwZDNlNThlZWE5NThiMjFhMDNmMzg4NGMyN2U3NDJhMGFhYTAyOSByZWxlYXNlMzAtbWFpbnQKKzcyNDM4IDBlZjI0MmYyN2Q3Njk5NzdhMjZjZjEyN2Y4OTFmMTNlODFlYjI0NmQgcHkzaworNzI0MzkgZDc4MDM3YzE2MjI1MDA3MjhmMTRjNGM5ZjQ2NDRiYzEwNjhiOTM4OSBsZWdhY3ktdHJ1bmsKKzcyNDQwIDU1MDJmZjJmYmRkNjNkMjdmZWE2OTJhZGIwMDJkMTI2ZWQ5NWZmM2YgcmVsZWFzZTI2LW1haW50Cis3MjQ0MSBjNjkzMDAzYjE1ZTIxZDA0NTBmNzZlMzMxMzMwZWUyYzA0N2RhNjFmIHB5M2sKKzcyNDQyIGFhYzQwNTVkMDY2YTAzZTM5NGZkMzE1Mjc0ZmMyMmIxNzhkNDhmZjQgcmVsZWFzZTMwLW1haW50Cis3MjQ0MyA0YzNhODRlNTRkMDgyNjgxNmE5MDNlYjMzN2NiMzAwNzkzZDFkOGQ4IGxlZ2FjeS10cnVuaworNzI0NDQgMGQ1ZTJhOTI4NmEyYTRiODUzZWNlMzUxMzNiMmMzM2IzNzQ1MTVhNiBweTNrCis3MjQ0NSA5MTQzZDIwZDhiMjYzOWQzODZjMWZmNjg4NjhhMTI2NjM1OTA1NjI0IGxlZ2FjeS10cnVuaworNzI0NDYgMTk4YjY4YWUyYzJkZjUzNzNhMDc3ZGYyZWEwNmFhNzAxYjIzOGI2ZCBweTNrCis3MjQ0NyBmNWY1MDdiNTVkNDY1Nzk1MTVlNGU1MDVjY2RjYzUzMjJhZmQ2NzNkIHJlbGVhc2UzMC1tYWludAorNzI0NDggOGYzZGE3MTM0Y2E1ZjA3YTM2NWNiMDJlNjVmODczM2I2MTZkYmQ5YiByZWxlYXNlMjYtbWFpbnQKKzcyNDQ5IGU1NjcxMmUxODZmOWRmOGM1YjYxZWRiMDRjNmMwNDdhMWFkZmMxODggcmVsZWFzZTI2LW1haW50Cis3MjQ1MCAyZGYyZDFmMDlkNTg1ZDcyZjQyZGNmYjE2ZGE4Mzg1OWZhMTVmM2MzIHB5M2sKKzcyNDUxIDZhNzE1NzI3ZjE5Zjc1NWMzYjQ1Mzg4NjAwODhjOWFjN2ZhYjBjMGUgbGVnYWN5LXRydW5rCis3MjQ1MiA0N2IzZmVlYTRlMWE1MWMyMDE5ZDk2ZjlhMmIyNTUyMTA3MWFkNTI3IHJlbGVhc2UyNi1tYWludAorNzI0NTMgYzE0MmU0NTM4OTQxZTYzZGQwYjI0N2JjOGZjMzdhYTYwZjk3OGY3OSByZWxlYXNlMzAtbWFpbnQKKzcyNDU0IDExYWQ2NTQ1ODA5YWM3YmZjNTE5MWFmYzdjOTU0NTE3YWQ0NGVmNjYgbGVnYWN5LXRydW5rCis3MjQ1NSBiM2IxNTU1ODNlMDU1ZDM5ODE3ZGRiODhmZDc5NTMwNTI1ODg0N2RmIHB5M2sKKzcyNDU2IDE3Zjc3NzRmNzRkZGViNmI0NDBiZTE0Mzk5NWIwNWJjZTBkYzg5YmYgcmVsZWFzZTI2LW1haW50Cis3MjQ1NyAxY2QxYjIxNDUyZDM5NTI2Njg1OWY2YzVlZGVjN2Q2NmE4ZDIyNjFiIHJlbGVhc2UzMC1tYWludAorNzI0NTggYTAxNWEyOTg1NDNkZGViMThjMjdlODczNTZkNDM3YmYwYTJlZTZiMCBsZWdhY3ktdHJ1bmsKKzcyNDU5IDA0NmJkMmE0MTMyMmZhZWFkYTdkOGZjN2NjOWRmZGQzYmZiYjM4ZDMgcHkzaworNzI0NjAgYTM2ZmEyY2U2MWIxZjNjYjY4NDZmNTcyZjU0NzllM2Y1YTlmMDk0MCByZWxlYXNlMjYtbWFpbnQKKzcyNDYxIDFlY2RjYTExZWI5ZWMyODY0MDM2MzQ0Yzg1YTliNTY2ZmI4ZmVjMzkgbGVnYWN5LXRydW5rCis3MjQ2MiAyOTkzZjA0OWUyYzk1MzMzZTZkNzI5MjIyNDYzNjBlNzQyNzIwN2YyIHB5M2sKKzcyNDYzIDU0MjBkYWUzNTVmNzNjNjM1MDFjZjlhNzI2NWNlYTc2ZGI4MWQxYmUgcHkzaworNzI0NjQgMzc0OTdhNzc5M2IyZmY3M2IwODFhYzYwNmM5ZmRiMTM1MjA5MWRmNiBsZWdhY3ktdHJ1bmsKKzcyNDY1IGYxZmY4N2I5YjQzNzNiMmI0YzhjZDQwYTgyMjBmM2QyNzRmZWJiYjcgcHkzaworNzI0NjYgMjM4NTAyNDYwNzk1YmM2MGZlNzk3MzRjMDFhNTEzMzI4ZDBhMjY5ZCBweTNrCis3MjQ2NyA2NmVjYzg5NmI3ZTczYTA1NGIxNjYzYThhZjE5MmFkNmYzMDJjOWU0IGxlZ2FjeS10cnVuaworNzI0NjggOWM3YmNiN2U3NDhjMTYyNDdkZTQ5NGU3MjFiYTQyZTFlNzkzZTcyZiBsZWdhY3ktdHJ1bmsKKzcyNDY5IGE2ZTZhNTdjY2NjMjlhNGU1NWU5MzkyNGRmZjg0NDM4MGU5YWMyYzkgbGVnYWN5LXRydW5rCis3MjQ3MCA1MjgwZjc1NWI0OGExNGI0MWEyODRhNjczYTFiN2ZkNzA4NmNlMzZiIHB5M2sKKzcyNDcxIDY5NGVlMjBjOGM3NDNiZWI2OWFhMTcxNGU1YmY2MzFkOGRmOGJkYzEgcHkzaworNzI0NzIgYmE0ZTZhM2FmNTY0ZWQ3MGZlYmU4N2M5Zjc2NTNiNWVjOTE2Y2NjZCByZWxlYXNlMzAtbWFpbnQKKzcyNDczIDVlYTU0NjM1NzIyNmRkYWRmNDE1ZGUzNWFjZDI3ZmQ2M2M0NWU5MmEgcmVsZWFzZTMwLW1haW50Cis3MjQ3NCAxNzEyNTIzZjkzNmM1MGNlNTBjYTdiZDcyNzhlYzNjN2JkNjVhZmIwIGxlZ2FjeS10cnVuaworNzI0NzUgNWYyMTU3NDc5NzQ5NWQ1NjA2YmE1ODkwZjMwMzJkMjM3MmQ0MDViZCBweTNrCis3MjQ3NiBkNGVmYzczMzg3MDZiYzRiYWU5NzU0NjdjNWRiMjI5NjQxMDcyMzAzIGxlZ2FjeS10cnVuaworNzI0NzcgN2E5ZTA4MWVjZTRjM2RhMWM0NjBhNDc4OGYyY2U4OTk2OGQ4N2FkOSBweTNrCis3MjQ3OCBjYjdiZTYzYjkxZDg1ZWE4YWVmZWUxNjVlOTdmZGZlNGU4NzNjNmE4IHB5M2sKKzcyNDc5IDBkYWU3ZmVmZWQ0NDA1Yzg0MmU0ZDFkMzJlZGY0MmMxNTNiNzQ2MjUgbGVnYWN5LXRydW5rCis3MjQ4MCA4Yjk4OTdkMTVjZmM4MGNlZTZlODAxNjBmZDU0YTJkM2VkYTU4N2ExIHB5M2sKKzcyNDgxIDIwODY5ZDk3OGI4YjQzMDlhOTJiMjdiYTc5YjY3M2Y4ZDg2YjExZTQgcmVsZWFzZTI2LW1haW50Cis3MjQ4MiBiODY3Y2UzNzVlOThjZDBkMjMzZDY3NDVkNjgxZmYyOTJkYWRkNWY4IHB5M2sKKzcyNDgzIGY0OTUwMDk2ZTdkN2I0Nzc4ODk2NDBiYmZhYmIwZDQ0YmM5ZTA2M2QgcmVsZWFzZTMwLW1haW50Cis3MjQ4NCAwNjdhNjM5ZDVmNzY1OTIyYjNjNGFmOGQ0Mjc4ZjFmMzAwMjFlN2EwIHB5M2sKKzcyNDg1IDA3MjJmMjA0ZDI2ZTA0NWJlZWZlZGI5NjBkZTBiOWU1NTc3NDVmNWYgcHkzaworNzI0ODYgZjkxN2FhZTc0MWQ1ZTYxZmZmZGUxZTk2ZGIyMjlhYTRhYjFiOTI3ZCByZWxlYXNlMzAtbWFpbnQKKzcyNDg3IGExNzEwNDhkYWY3NmY0MjU3NzcwODBhM2I2OWUyMmZmZDBiMDY1NjUgbGVnYWN5LXRydW5rCis3MjQ4OCA5ZWY2ODNkNDFjOWIyMjI5N2JjYzRiMDVjOTY1ZDZmYWJjM2U3MzJiIGxlZ2FjeS10cnVuaworNzI0ODkgNTEwZmZjNWRiMjMyNTg5Yzc2OTNhNGVhYzg4MjFkMzVmY2ZkYmNjZiBsZWdhY3ktdHJ1bmsKKzcyNDkwIDQ0NmExNWExYmVlOGZkMDY5NDQwOGNmYzQ0NmMxMGE2N2Q1MGQwMWYgcHkzaworNzI0OTQgMTE5ZTQzMjM0MDBkMDFjODIyZWIxZTBjNzVmYTVlZjBlNmJjYjYxNSBsZWdhY3ktdHJ1bmsKKzcyNDk1IDczOTg2YTljYTFkNjNkZmI1OTU0ZjY5ODllOGZjZTY2YzViMGUzOGYgbGVnYWN5LXRydW5rCis3MjQ5NiAxZDc5NDhjYjU0MzAwMGFmM2QxZmYxNDYwNjM3YWE2MzZiNTQzYTg4IHB5M2sKKzcyNDk3IGNjZmRhMTRkMTU1NDgxZjRlNDg3MGVlYjJhZTc1ZmY0NzY2MjMwZDggbGVnYWN5LXRydW5rCis3MjQ5OCBkNjY2MDNkZDNiMmQ3MThhYmUxZjc2Njc3MzdjZTBiNjViODZhMzIxIHJlbGVhc2UyNi1tYWludAorNzI1MDAgZjlkOWVlYzZiZTY3MDE3ODQ3ZmQ3ZDdjMjc3ZmM0ZDM4YmFmNzIwZCBsZWdhY3ktdHJ1bmsKKzcyNTAxIDlmNzEzZjYwNWY2MGVmZDVmNDRiNWJjNWYxZDM3MDk4YzYyMDk2Y2UgcmVsZWFzZTI2LW1haW50Cis3MjUwMiAzNmZjMDc5ODQxN2YxNGU2ZDZjM2M0MzU0NTcxN2E5ODVkNDk5MzViIHB5M2sKKzcyNTAzIDk5ZGQyOWUyNGJkZTNkNGVlNWQwNjlmMGRjOTY2NGNhYzc0N2MzYzUgcmVsZWFzZTMwLW1haW50Cis3MjUwNCA5NjJiNGZmNzZjY2EyMTM0NTc1MzNjOGFkNzYxNTRiYmFjMDU2YjRkIHB5M2sKKzcyNTA1IDkyMDdkNDI5MjAzYTFjNWE5NjUyZDgzOTk4OWE1NDQwZmI2ZThjNmUgcmVsZWFzZTMwLW1haW50Cis3MjUwNiAwNzJhOGE3Y2U5NzNjZGRlNDY0ZTg5NTBmNDE0ZGI1MzIwNWQ4MjUzIGxlZ2FjeS10cnVuaworNzI1MDcgZWI2ZWI0OWRiYWU5ZWM3ZGNmMjIxZTQ2YjdlODI3ZTBkNmQ4YzJjNSByZWxlYXNlMjYtbWFpbnQKKzcyNTA4IGY5MGIzZWVjN2MzMjc4YzVmOTBkYWFmMzg4NjMyYzE1MmIwYmMxYzYgbGVnYWN5LXRydW5rCis3MjUwOSA1ZGQzYjM4YTA5Nzc4YTY2NzNjYmZjNmUwOGY3Yjg2ZTUxNGIyYzFiIGxlZ2FjeS10cnVuaworNzI1MTAgYjc5MjBlMTgzNDIyOGY1ZWY3ODRiYmIyYTZmY2QzMjQyYTJlMWI5NSBsZWdhY3ktdHJ1bmsKKzcyNTExIGFmZDYyZWIxNjkyZWYxYWNiYWJlYjFjOWEwNTlmMWNkNjMwYzkxOGEgcHkzaworNzI1MTIgMzBlZGQ3ZjYxMDFiZDlhN2Y2ZGE5M2YyYmFkMDg3MjM5OGYzYTc5NyBsZWdhY3ktdHJ1bmsKKzcyNTEzIDMyN2UyM2E2YTYxMDIwYWUwZTFhZjY4NWNlODc3MzU3YmJkN2M2NDEgcHkzaworNzI1MTQgMjYxZjU5NDAxNGM2MjI1YTNlOTVjNjUxNTcwYzY2ZWI2OGZhMTY0YSBweTNrCis3MjUxNSAxYjE1YTU3ZTFmMDJmNGJiZTAxMzVhMjVhOGJkZTIxMTVmYTkxZTIyIHB5M2sKKzcyNTE2IGQyYjE3NjE2MWFiZjBiMzY2Y2VmYzZlMzc2ZjVmNDIyNDJkODhjNGEgbGVnYWN5LXRydW5rCis3MjUxNyA3MmE1MDM5NGMyZGRlODM5YjczNmNjMDk0ZjBkZWQ1MjQxZmJjOTZhIGxlZ2FjeS10cnVuaworNzI1MTggYWE0MWM4Yzk2MDU1MDA2ZjA3M2ZiZmI3OTUxOWFlOTgwOWVhZDRhNCBsZWdhY3ktdHJ1bmsKKzcyNTE5IDJiNDA2NTM4ODY2ZDkwOTE3NmRmMmU5OTYwNmFmZjQ5ODBkMDgxZTMgcHkzaworNzI1MjAgMjliNTE4ZjI5NmRlMDNlOGU0NzI3OGM5NDY0MjU0MjI5Zjg0YTFhOCBweTNrCis3MjUyMSAwNTZhYTc2OWRhODkxYTEwZjJlNzY0NWRmZDMwMDI2NjkyN2I2NjMwIHB5M2sKKzcyNTIyIDU3MDJkMmRhZDBmOWVjOGVlMGU3NWJlMGQyNDc0YTIzODRkNmFiMGIgcHkzaworNzI1MjQgMTMxMTc3MjhkMDg2ZGE0MjU5ZDQ1ZjM5MTY0ZDk4MzU0NmFjZGJjZCBweTNrCis3MjUyNSBhN2M1M2ZhZDEzYmMzNmQyMjAyY2I2MTEyYzAwYmYzY2I4OTM4Y2VjIGxlZ2FjeS10cnVuaworNzI1MjYgM2U4NGQ2MDEyNmI3ZTAyOWMwODJkMDkxZDhjYzQ5Nzc0YzhkNzk5NyBsZWdhY3ktdHJ1bmsKKzcyNTI4IGZiY2RhZTNlMGNhMWJlYzEwZjRkZWRkOTliMzUyYzRiM2JjYmVmZjggcHkzaworNzI1MjkgN2MyOWJmYmZkMzUyNDRkMDRjNDM5NDU4NTE1MWMwMTk3ODM3NDhjMSBweTNrCis3MjUzMCA0MWMwOWUxNDJiZDAwNmUyMDlmZmYxNDQ5MGI1MTNhMTc3ZWZmOTBiIHB5M2sKKzcyNTMxIGU5MWE3N2E0ODJlYmU0ZTFkYTk1ZTVkZDU0ZDlkZTk4NGM3OTIwYWQgbGVnYWN5LXRydW5rCis3MjUzMiAzNWU5ODAzYTJmNGU0NWU0NGRlOThhNWYzOTcwMmI3ZWNlYjM0MDIyIHJlbGVhc2UyNi1tYWludAorNzI1MzMgMDUwNzQyYmI2MGQ1YjE3Mzc0YTE5ZDVhYWRkMmNhYzAxMmQzMWEwNyBweTNrCis3MjUzNCA5ZTY3YzJmOTk5YzljY2M2M2Q3NzE0ZTY3MjBmYjViZTcxNTNiMzdjIHJlbGVhc2UzMC1tYWludAorNzI1MzUgYzYwY2RhMzQxOGI1NGY2NTA4Y2FmMjE3Y2JhMzZhNTg1NTU2NmU4ZSBsZWdhY3ktdHJ1bmsKKzcyNTM2IDhhMDQ3NzdiNTljYmQwYWU4NTNiMWY2ZDA2MmNmMzY5YmJkN2UyMGMgcmVsZWFzZTI2LW1haW50Cis3MjUzNyA1MjI0YTI1OGQ1YmIwNGUyMDc5YjMzMDNiMWQ1MmQ0ZmMzZWVmNDYzIHB5M2sKKzcyNTM4IDlhNmY1ZTA1MzFhNjMxODYzMDRkMmEyZmM2OTFiMzc1ZjMzZTlmYjcgcmVsZWFzZTMwLW1haW50Cis3MjUzOSAxYmVjNjRiOGRkMTc2YWE5NTM2ZmNmNTFjYTNmYTY1NWJmMmFhOWVhIGxlZ2FjeS10cnVuaworNzI1NDAgYWM0ODk0NjkzNDExZDQxN2VlYTJlNTM2ZGNjYjZjNzg1MWJjMGYzMSByZWxlYXNlMjYtbWFpbnQKKzcyNTQxIDg4OGRhYTAwM2ZjM2NlMzU4YmZmN2QyZjZlOGU1NjE3Nzg1NTU5NTQgcHkzaworNzI1NDIgODZhM2M5YTljNmRlNDFhYWI3YjgxZGRhZjg0NmQ2OWQzNDg3MDc5OCByZWxlYXNlMzAtbWFpbnQKKzcyNTQzIDE3YzUzZmEzNzg5MDE2NzEwZGNhMWRjMjIzNzJjZDJjZTAwODkwYzIgbGVnYWN5LXRydW5rCis3MjU0NCA4ODAzYWUwZGYzZjNhNTU2ZTQyOTdmNTE2NmMxYTY3NmQ3NDI0ODQyIHJlbGVhc2UyNi1tYWludAorNzI1NDUgMjQxZGFhMjU5YWY5NmMzZTkyMTc3NjZkMTJmN2QyOGQ1N2IyYjM1ZSBweTNrCis3MjU0NiAyODFkMmUyM2JkYjJkM2ZjMjU5NzFmZjkwNzU0OGYwNGY3YzRlYWRmIHJlbGVhc2UzMC1tYWludAorNzI1NDcgMTkyN2U4ZDc5MTQ3Nzk1N2QxOTk3OWE1MjBlNTQ5ZTEyZTMxNjkwNCBsZWdhY3ktdHJ1bmsKKzcyNTQ4IDRhZTAxYTI0MTY1MGQ1NjQ4ZjgzZGU4ZjE0NzBlM2Y3NWRiYjljNzAgcmVsZWFzZTI2LW1haW50Cis3MjU0OSBmOTgyMjg5ZjkzY2ZiOGUzNDgwYjc1MmFlMjY5OWJhZWI5OGRlNzllIHB5M2sKKzcyNTUwIGJkY2QwNWE4MWFjYmEwZWUzODhiZTgwZTM1MjZhN2Q0NzcyZDllOWMgcmVsZWFzZTMwLW1haW50Cis3MjU1MSA2MzBlNjgxMTAwZTA4ZTQ5MmE4NTAyOWNjYTg3YWRjYmIwZDlhNmMyIGxlZ2FjeS10cnVuaworNzI1NTIgZDY1ZDcxODlkZTMyY2QzZWE1NjNlNDYzNTViZTE0YjI4NzVkMWVlZiBsZWdhY3ktdHJ1bmsKKzcyNTUzIGM3NDcxYzkxMWFkMjRlZTNkYWYxZTY5OWEzMjc0Mjk2YWQyMWI0NDcgcHkzaworNzI1NTQgZWEyZTQyNWQxZjYwMGNiMWJmYTdlYjUzNjY0MDMxODQzNjEwNzJhOSByZWxlYXNlMjYtbWFpbnQKKzcyNTU1IGQwMmIwZTcwNzM3N2QzZWM2NjFhNjkzNzQzY2M0YTRkODJjZDA5ZjUgcmVsZWFzZTMwLW1haW50Cis3MjU1NiA2ZTdjN2Y0MjQ0MzZiNjc4ODJiNzRiOTM5YzhjYjBmZTllZGYyMTQzIHB5M2sKKzcyNTU3IDM0MTY3MjE0ODBiMjFjNWY5NjJhMzZiYzk5MjIxMWE3MmVkYjFiNmYgcHkzaworNzI1NTggNGViY2QwMTRmM2QwNmEwNzFkZjYxNDQ0OGU3NzU5ZmJmYTQ1MzE2NCBsZWdhY3ktdHJ1bmsKKzcyNTU5IDA0OTViYzQ3Y2QwODZhOTdiY2RjODg0MzVlNjM2MDYyOTgyZWU2OGUgcHkzaworNzI1NjAgNGI0MTc0M2Y2NTI3Y2JjOGYzMTQ0ZmI4NTUzYTM4MzI5MzkzYjU0OSBsZWdhY3ktdHJ1bmsKKzcyNTYxIDYxYzViZGIyOTRmOTUxODVhOWRlZmNlNWE1ZDBmM2I2ODg1NjYyOTggcmVsZWFzZTI2LW1haW50Cis3MjU2MiBmMjAwOTM3MTljMGVmZjEwNTZjODY1MmJjMjA2OWU1N2JmNGVlZDk3IHB5M2sKKzcyNTY0IDExOWY0MjMyYWY0NjE4MGE2NDg2OTczYzY5YmNhYjZlZDQzMmQxNDAgbGVnYWN5LXRydW5rCis3MjU2NSA5NDE0YzJiMTkyM2VkZWE4ZDM1Y2M3OTUwYzQzNWU0ZGY0NjMyYWU2IHB5M2sKKzcyNTY2IDM1YzZkNDA3ZDNjOWVkNDBiMDIzZGUwYTQzYThiOGYzZTViNTJhM2EgcmVsZWFzZTI2LW1haW50Cis3MjU2NyBlOWVkY2FmNDI1NDczZDlmMWFhNjNkODQzZjU1ZDgyNzFkMDg1ZTIwIHJlbGVhc2UzMC1tYWludAorNzI1NjggYzJlMmI0N2E4N2MxNDdiNDRiYjdjNWNjYzAyNWQ5NmIyNzU1Yjc4NyBweTNrCis3MjU2OSA4YTdlODRhZTQ2YzVkZDg1NmYzOTE5YTdlNDcxZmRjNjNhYzgyNjFiIHJlbGVhc2UzMC1tYWludAorNzI1NzAgY2NmY2EyNTg3ODg1M2U5MTdjZjMxNzNkNWQzYzFhMDUwNDk2ZjJhMSBsZWdhY3ktdHJ1bmsKKzcyNTcxIDIyMjc3ZGZmYzU3MWNhZTdmYmQ4MWE1MzU4NTQzYjQxYzBkY2I5NDEgbGVnYWN5LXRydW5rCis3MjU3MiA4OTMwNTQ4YWY3MzRlMDI2ZjI2YmQ0YzBhMTI4YTRkYmY4Zjg2OGM2IGxlZ2FjeS10cnVuaworNzI1NzMgODQ2MTZlYmYyYjRmYzA4N2I4ODc2ZDA4ZjU0ZmQ4ZGE4NGExODNhNCByZWxlYXNlMjYtbWFpbnQKKzcyNTc0IDVkMGY1YzU3MTM1Nzk3ZTk3ODViYWJkZDQwYjFmYzgzZWNkNWY0MjMgcHkzaworNzI1NzUgYTI2YWY4NWFiODk1MGI1ZjJjNzEwODRlNmZjZTFjZWQ0MTJjOWQwYSByZWxlYXNlMzAtbWFpbnQKKzcyNTc2IDU5Y2I5YzA3NGUwOTdhYzdjMmI3ZWI0NGMyMmYyNzFlM2IyYTg1NDYgcHkzaworNzI1NzcgOTQyZjJkNmQ1YzVjYzNjNmQyZDJlYzVjMDcxYjViMTg0OWNjMzM5MyBsZWdhY3ktdHJ1bmsKKzcyNTc4IGJkODBmYjgzNmI5ZTlmZDg1OGFkNWJiZDUwYTRlZTczOTliNWQ0YmIgcmVsZWFzZTI2LW1haW50Cis3MjU3OSA1NDYwNDY4OGIzZTk3YmQzMGYzMDZlN2QzYTcyOWNiMDk0OTQyNWUxIHB5M2sKKzcyNTgwIDEzNTczMDM0MTE0ODdjNTlkYzQ2NWJhZGVkYjZhZDdiZmM1YzFiN2EgcmVsZWFzZTMwLW1haW50Cis3MjU4MSAyNTgyMTk2NDZlM2FkYjlkZWMyMDBiNGE3ODNkMzdjMjc4YThmZDgxIHJlbGVhc2UzMC1tYWludAorNzI1ODIgZGZlNTg2NWU1Zjk4MDljYzVlNGJhZjcxMzc1MDVlNjQxYTk2Mzk1YyBsZWdhY3ktdHJ1bmsKKzcyNTgzIGJlYWMwYjQxY2ZiMTRmZWMxMDI2NDgxM2JkZmVhNGE2MGE1ZDI5OTIgbGVnYWN5LXRydW5rCis3MjU4NCBlZmUxMmFhOGVmMTljZDE1MWE2MDBkMWI0M2I2MTQzZWI1MzA5NDE5IHB5M2sKKzcyNTg1IGU4MjA5YWI0OTY5MTRlMjgzODA0NTI0NmIwMDliNDlmYzBkNzliYjIgbGVnYWN5LXRydW5rCis3MjU4NiAxNWE4ZjRmMmJjODQ4NDVlMjM5ZTMwZTVmMTFiNmFlNzg0MmRmN2UxIHJlbGVhc2UyNi1tYWludAorNzI1ODcgOTI0ZGJiN2ZjNmM1N2ZiMDYxYjhhYTY0NzUyMWI1NTk1NTdkYTJhOCBweTNrCis3MjU4OCBiNjM4NTcwMzcwM2UxY2M3ODFkMzVjZGVlNDg5NzhjMWU0YWIwOWJmIHJlbGVhc2UzMC1tYWludAorNzI1ODkgNWZjZTE0ZTFkNzAzMmMyY2VlMzMwM2U5NWIxOGI3OTljMGU5ZDJlOSBweTNrCis3MjU5MCA3OGZiN2Y4Y2QzNDkyMmRmMTU3MWUyYWU5MDVjNjRhYTdhYjY1ZTJlIHB5M2sKKzcyNTkxIGMyYzhkMGRkZjE4NzdhOWJhZTRlNzI1YjFlNzU1ZjJjMzllNTljYWYgcmVsZWFzZTMwLW1haW50Cis3MjU5MiBkODViZDQ5OWYzZjRlY2U3YTBkMmMwNzAzY2I5YTZkYTc1ODg5ZWY1IHB5M2sKKzcyNTkzIGQyMjEyNGM2NDRmZmE0Yjg0NTAzYzg2NmFjMDQ0NGZlN2NhZTgwYmEgbGVnYWN5LXRydW5rCis3MjU5NCA3MzVlZDE3OGRmYWU1MjViZWMxOTQ5MjE4ZWQyODRhOGRlNzEyZmM4IHJlbGVhc2UyNi1tYWludAorNzI1OTUgMmMxZDhmMmQzODM5OGZmMjk1YTY4MmI3ZmZkNjU5OGQ2YzUwOGZkZiBweTNrCis3MjU5NiAwNTQ2ODA1YjMwMjJhMDY1ZjgyNTE3MGUzMzg3ZmY5NzI5ZWU0NmU4IHJlbGVhc2UzMC1tYWludAorNzI1OTcgNjQxOTgyOGVmNjVhYzQ4MTNjYzEwNTkwNzk3MmVkODQwN2FjNDM4MCBsZWdhY3ktdHJ1bmsKKzcyNTk4IDRlYmU2YjI2MGM1NWJiYzAzNDI0ZjY3NGRmM2FmYjM1ZDYxYWM0OWUgcmVsZWFzZTI2LW1haW50Cis3MjU5OSAxOWU5NTk2MjYxMDlmMzI0NTgzYTdiMmZjNTdhOTg1YmFlZDI0N2Q4IHB5M2sKKzcyNjAwIDJkNmZmNGE5NDk1M2NmOTQzNWNjY2RkNjZkNTdkZTgxOThkMGNiZTAgcmVsZWFzZTMwLW1haW50Cis3MjYwMSBiYmI5MTFmN2MwYzI5ZjNjYWMyN2ZiMjNmMzBkZDJkZDUwNzk0NWIyIGxlZ2FjeS10cnVuaworNzI2MDIgZjUwZWRkNGJiNDhmODNiODgyOGY4ZWRlN2M4NjBhODg4YTRhZTliMyByZWxlYXNlMjYtbWFpbnQKKzcyNjAzIDY4OGQ5NGU4NmNhMjg4ZGQ0NWJhZDM0OTY0NTVmMjg3ZGI4ZDgzNjEgcHkzaworNzI2MDQgMzViYTY1ZjFjYzgxNzk2MzVkZjA2MDA1N2UyNDUzNDJlN2MyMDBiMyByZWxlYXNlMzAtbWFpbnQKKzcyNjA1IDM0N2U1OWVhMWE3MWRhNjgxZGJmZTZiNDM4OWUyMTc1NDY3MjM2ZjUgbGVnYWN5LXRydW5rCis3MjYwNiAzMTk1MjQ1MjQ4NWJmYTJiNDYwYTQ1Y2RkMjdhNGU5YmI2ZGMzMjE4IHJlbGVhc2UyNi1tYWludAorNzI2MDcgZTlhN2FlZThlODAwNDFlMTBkMjQ2MTM4NTBkZjBkNjFmYzhhZWQ2OCBweTNrCis3MjYwOCBiZDJmN2UxM2ZkNzNlZGZkMDRlZDdmNWNmNWUzMDYyMzEwNGE1MzUyIHJlbGVhc2UzMC1tYWludAorNzI2MDkgMDIzMTg3NmYzMTA0M2QxODg2MTM4MDJhYjY1NmZmZWZiNDJiYTUyMSBweTNrCis3MjYxMCBjNTE4MDgyNjkyMTRkMjIzMDgwZGI2NGQ1YmVhZGVhNjFlNDVhMTE5IGxlZ2FjeS10cnVuaworNzI2MTEgOTEzNzdkYTU0ZWRlOTU4NGFlYzA0YzE5NTU5YmY2ZGNiMTMyYmFjMSByZWxlYXNlMjYtbWFpbnQKKzcyNjEyIDg4MmQ5Nzk1NDUyNjBhYjU2MDg0ZjdhMDc3YWE1YmJkZWZmZGJmMDcgbGVnYWN5LXRydW5rCis3MjYxMyA4ZjZlOTEyMzcwMjc0MjI4MDNhZGI3ZDVkOWRiODkwZmY1OTM5NGQ3IHJlbGVhc2UyNi1tYWludAorNzI2MTQgMzIzZTFkODQ4YjVmZmZhZjcyMTdjNzU1NTA2ODE4Y2FjNWQwOGNiYiBweTNrCis3MjYxNSA4YzdjYzE2ZGM3OWM0OGVkNzVjYjdmYmYyNGEzOWZlMGM1ODNiMzE3IHJlbGVhc2UzMC1tYWludAorNzI2MTYgYTZjNGNkZmRhOWQ2ZDUwNzk1NmQ3MmMxMjVlZjBkMjdkNDZjYjFiYSBsZWdhY3ktdHJ1bmsKKzcyNjE4IGJmNjk5MDI2NDU4ZTQ5MDI0YTk4YTA2ZjIwYzg2MjBjZTU1YWIzOTAgbGVnYWN5LXRydW5rCis3MjYxOSBkZGVlNGQwNWZhMTdlYTFkYTcxY2MxNjg2Y2EzNjFhNmM0OTFjN2VjIHJlbGVhc2UyNi1tYWludAorNzI2MjAgNzgxNGJlNjk2N2I4YmEwODg1ODFmZGNhMDllOGU4YTFjMDk2NjM1MSBweTNrCis3MjYyMSBiZWNhNmQ3Y2NjOTA3NzFlY2RlOTk2MTc1NzVjODgzMDY2M2E4ODhiIHJlbGVhc2UzMC1tYWludAorNzI2MjIgM2E1ZjZiNjMzNDk5MzQ5NDY5NjAyN2I3NzRlZTk4YTgzNjAwYmUzYSBweTNrCis3MjYyMyBhNjllN2NjMDQ5YmI1ZWM5OWU3ODRlOTM5OTZkZWYxNGUyODMxOWY0IHJlbGVhc2UzMC1tYWludAorNzI2MjQgNjdiYWYyYzE3MzY5Zjg0ZjZlNmMzODU5ZDk0MzkxMDI3ODI5MjhlZCBsZWdhY3ktdHJ1bmsKKzcyNjI1IGIwNWQ0NzlkMWNiMGFkZmFiYTg5ZTg1MTE4YWZlMTYzMGFlYTk1NjkgcmVsZWFzZTI2LW1haW50Cis3MjYyNiAzOTFkYjgwZDFhZjRjZjI2Y2JiYjNhOWM4YjQzMDYwMWI3NWY1ODAwIHB5M2sKKzcyNjI3IDM3ZjkwZjJmNDAzNDlhOGNmMGVmZmI2YWU4MGQxMjRjYTJmZDg0YjEgcmVsZWFzZTMwLW1haW50Cis3MjYyOCAxZDA0OGM5ZjQzZGM2NmEwMmI2MmM4N2M3MjJjOThkODUwYjhmOTUyIHB5M2sKKzcyNjI5IGFhNzdmZDg2MjZiYTk3NzcxMGM3MjM2Njg2NzI1ZGY5NDU3NzY1NTIgcHkzaworNzI2MzAgZTk2MjEyOTY2NWQ4MDQ0NzViMmJmMTE2NTY5YTM5ZTUzZjNmOGQzYiBsZWdhY3ktdHJ1bmsKKzcyNjMxIDkwYTgxMDJkN2VmYmQ2OTAwZGQxM2FiODA2ZjY5NmI1Y2M3ZmFlMDcgcHkzaworNzI2MzIgYzcyZDRmY2UzMDAwNTk3ZGMxMjU5MTIzMDVkZmFhNjEzODAxZGRmMiByZWxlYXNlMjYtbWFpbnQKKzcyNjMzIDZkNjkxNDE3N2Y2MDI2NmI1ZGEwNDQ3MzM5OGQ2YzA3NTRhZGI5Y2EgcHkzaworNzI2MzQgOTEwMzA5Mjc2Mzc2NzRkZjViMTMyMTk3Yzg2ZWMwYWE2ZjRmZjRlYSByZWxlYXNlMzAtbWFpbnQKKzcyNjM1IDA3YjVmMjBkMDI1YTg3Zjc5M2I2YTMxMmY5NDcwN2RmYWQ3MWE4YWIgcHkzaworNzI2MzYgMzhlMzU0NjA5Y2YyZDU2NjJmZmM4OGMwNTkyNWNiYjc1MTJkMjA0NiBsZWdhY3ktdHJ1bmsKKzcyNjM3IDJhN2NlMTNjZWEyNTA4M2Y5OTYyZWFlMWJhNzUwOWRmZDc1MGJlZWUgcmVsZWFzZTI2LW1haW50Cis3MjYzOCBlNjkxMjBiZTY1YzQ1Mjc5MDlkOWExZjAyOTEwNDk3ZjFkMTQwN2MyIHB5M2sKKzcyNjM5IDBmY2YyYWNkZTQ3MzZkMmFkZTA4ZjY3ZjJkZTM0M2Y2OWFhOWE3MjggcmVsZWFzZTMwLW1haW50Cis3MjY0MCBlNGQ5MzdmNzg5YTExMzE0ZmUxYmQyZThiMGVhZGZjMzE0YjAzYjdkIGxlZ2FjeS10cnVuaworNzI2NDEgNzNkOWI5NzM1NDI0OGE5MGE4ODJmNTQxZmY3MjExNjVjMDgxMWE0NCByZWxlYXNlMjYtbWFpbnQKKzcyNjQyIDNjNGIxYjQ1MDFjMWI0ZDg3MjMyYjRiNGE4N2I0NWE1MTE3NWQ1MWIgcmVsZWFzZTI2LW1haW50Cis3MjY0MyA2YmU1ODU0ZTVkZjdhYWJhZDYyNDg1YTczMTdhNzkxMDkwYzI5MTQ3IHB5M2sKKzcyNjQ0IDdlM2Q3YjUyMjRiMWVhYjZhZWFkMjIzZTAyNDE5ODkyM2EzYzRlOTUgcHkzaworNzI2NDUgOTFlYThmY2Q0NTdlNWMxNDIzNGI5Njg4ZDg5NmM0NDFkYzExMDEwZiBsZWdhY3ktdHJ1bmsKKzcyNjQ2IGFiMzBiMjM3YjYwMDA5YjcyN2Y4Y2FiYzhjYjIzYjU0ZjkyZjA4Y2MgcmVsZWFzZTMwLW1haW50Cis3MjY0OCAxN2QxOTQ2NTQwZDQ3ODcxOTYwMmVhNTRiYjY4OGZhZjAxNTRjMjhlIHB5M2sKKzcyNjQ5IGVlMjE1NjQ5ZmFlMDYwOGNjNGU5MjVmMzNhNDkyOGZkZWYxYzJiNDAgcHkzaworNzI2NTQgZmIwMTk3MTk0OWE1NTQ1NTAyMGQ0ZWEwMzcwZjI0NjA5ZDc4ZGYxMyBsZWdhY3ktdHJ1bmsKKzcyNjU1IGU0NTE4NmVkYWM5MTlhZGJhYTc2NDk5ODdjZjMzZWEwMTFjYjMxYTggbGVnYWN5LXRydW5rCis3MjY1NiBmNzZmMjNhZjIyOTVhZTUzNjg1OGZjYjVhNDM1ZjQ1MDY3MzIzMTk2IHB5M2sKKzcyNjU3IDlkNTAzNzA3NDQ0ZTQxODc4YjVmNmI4MzNjZTYzNjQyNzg1NzU3NmMgcHkzaworNzI2NTggYjYwMGU1MTAzYzYzZTIzZWJkNmI4NjliNjk4NTU4ZjRlMDViMDNlNCBsZWdhY3ktdHJ1bmsKKzcyNjU5IGIzM2I0MjQ5YjE4NTg1MjIwOGNkODVhMTFmOTYxNTg4NWY4ZDZlNjMgcHkzaworNzI2NjAgZTNkZmNkMWZlMjEwZDY1NWU2OTZlYzgxZjNhNDhkNDZlMGNmYTU1OSBweTNrCis3MjY2MSBhN2MzNGY3MjhmMGU4YWQxMzlhYWY1MzVhNTI2ZDlmMDFmMGZjMDY3IGxlZ2FjeS10cnVuaworNzI2NjIgOTNlZDY4Yjk5OWU3NTdjZWU5ODI4MjU1MzM2YWU0ZDVkZDJjZWVmMSBsZWdhY3ktdHJ1bmsKKzcyNjYzIDg4ZDk2NWJlODYxNzI1ZGZmMjE1MzYyYjBiMDAyOGEwYmRhZTk5MGMgcmVsZWFzZTI2LW1haW50Cis3MjY2NCBkOTAyZjM0OTQ0OTk2MDhjMmVjMDQzNDZkYzQ2NmY3MjEwZTQ2MWVjIHB5M2sKKzcyNjY1IGRkOTE1OGZiMDg2NzgzZjQ4ZjkxZGM5MTY5YjQyYWM4MTllNTc0M2QgcHkzaworNzI2NjYgOWJiMmExMzcxZGRjNDAwNTE4ZjIwZGE2NzFlNTc4Njc3NTIzNDMxYiBweTNrCis3MjY2NyBlNWYyODg3NmFlNmM5M2JhZTllODcwZWI0ZDY4MTNiNDQ3YjVhZThkIHB5M2sKKzcyNjY4IDBkOGRiODFhNzg2YzY4YWNmMWFmZTM3YTFlZDhkYTc3Y2Q4Nzc3NzMgcHkzaworNzI2NjkgYzQwZjE4N2FmNmRkYmNmNzk4YTE3NGEyYzM4Y2I2NGRjNjA3MThmZSBsZWdhY3ktdHJ1bmsKKzcyNjcwIDg1ZmI0YzIyOWE5Y2VjMjFjODEzNTQ2ZTI5ODY2NjJkNjk5MGU0ZTIgcHkzaworNzI2NzEgYjQyNjFkYTRlYTUwYzM3NmY0MDg0NmZlNWVlOTYyNjEwOGI5OGYwYSBsZWdhY3ktdHJ1bmsKKzcyNjcyIGNkNGE3ODI3ZWRiNjhhNTY5ZDBkYzZhNWU2MjYzNGZmNmFlODVmNWIgcHkzaworNzI2NzMgMThiMmYyY2QwNzQxZjRhMjNkM2QwZTkyM2FmZDlhNDY2MzU0YjYzYiBweTNrCis3MjY3NCA5NjEwOTQ3MDUzNzAyOTBjYzVmZDc4Mzg5ZjgyNTYwMTBkOWExYzMxIHB5M2sKKzcyNjc1IDkwZTJiZmU0ZjYwZTdhMjUyNDJkMmI1YjI4MTdhODhiOTI3NTk4NjUgbGVnYWN5LXRydW5rCis3MjY3NiAzNGI2MGI3MzZhZDMzZDU0ODM2NjVlOWQwMzlkN2IxNTZjMjEyMjgzIGxlZ2FjeS10cnVuaworNzI2NzcgMmNhMTE4Y2FhZTcxNmE3Yzc2ZDlmMGI4ZGFlZjhhNjVlMDE3M2ZkYSBsZWdhY3ktdHJ1bmsKKzcyNjc4IDc5MDk5MmJlZGQ2MWQxZTdhZmMxMmZkY2VjODViNjRiZmUwZDViOWQgbGVnYWN5LXRydW5rCis3MjY3OSA4ZThlODdjMWVjYjdlYzU3ZGUxNTAzYzFkNGUwODExOTk3ZDcyZmM2IGxlZ2FjeS10cnVuaworNzI2ODEgZDUxNGE4YjdhZTc4YWUyYWJhYzUwZDdlMjMzN2VmN2ZhNmEyZDJkZCBsZWdhY3ktdHJ1bmsKKzcyNjgyIDQzZmM0NWQzY2IyMTZiNWU1NDg2NTgxM2U5OTVlYWFhMTljMTdhOWIgcmVsZWFzZTI2LW1haW50Cis3MjY4MyBhYzY2MGVhMzVmNTI1ZGEzNjJjMWJiNjBmZjJjNTBjNTUxYTljNGQyIHB5M2sKKzcyNjg0IGMzZDRkOTNjODllMjU3ZWU2Y2EwMzk2YWIxN2U4ZGYzOTg1ZDhhNDkgcmVsZWFzZTMwLW1haW50Cis3MjY4NiBmMWJmNTM4Nzg2YjdjOWViYjVjMjFhNTE3ZTBkY2RlYmM4OWNkOWZiIGxlZ2FjeS10cnVuaworNzI2ODcgOTg4Y2E5OGQ5MTk2MmJmYjAyZmViYTY0YWE2MWIwNDNjYjkxYzc4OCByZWxlYXNlMjYtbWFpbnQKKzcyNjg4IGNhNzg0N2QzYzQ1MTk0ZjBiODk0Y2Y0NDU0YjNmZjNlYmM0YjU5OWYgcHkzaworNzI2ODkgMWY4YWNjZDFmNDJhZDAwNGVmYmMyZDI1Y2E4NWY0OGU3ODJiYTcwZiBsZWdhY3ktdHJ1bmsKKzcyNjkwIGFlMDA2Mzg2ZWMzOTNiMjYzNGYzYTY2ZmY2MzRlMDJkYjc2OWM1MzIgbGVnYWN5LXRydW5rCis3MjY5MSBmOWY5OTdjMWZkODEzYzc1MzBhNTU2YWY2NjBjMTY3N2Y3ZTdkZmY3IHB5M2sKKzcyNjkyIDY5NTY3YTA1ZDVlNjU3MzZkYzMwNGJiNzk1N2Q5OTM4NGRjYTM5ZmIgbGVnYWN5LXRydW5rCis3MjY5MyAzYWE2YTg2M2ZmMDY5MWU1OGNkYjI1OTJiMmM0MDUyMmU5OWRlYjg3IGxlZ2FjeS10cnVuaworNzI2OTQgMWNiODA0YTJlMDM4Nzk2OTdhMmQ0YWE4OTkyYjBkZjQyZWRiZGU2OCBsZWdhY3ktdHJ1bmsKKzcyNjk1IGExOThlOGQzNmVjM2I1NzgwMWNmMjkzMjJlMzYzNTA0N2Q1ZTVmZjkgcHkzaworNzI2OTYgYTUzNTk2MDk0NDQ0MTM4NmU0NDQ3ZDgwZTg3ZTFlNjQ5MjRlMDMyMSBsZWdhY3ktdHJ1bmsKKzcyNjk3IDgzZGQyYjI1MmEyNzY0NmM4YWExNTZjOTQ4YjExNmI5NGYzMjgyOTYgcHkzaworNzI2OTggZDY0ZDQ3ZWU1NGExODE2OGZkOTJmMmViNDEzMzhlYzJjMDBiZTZhYyBsZWdhY3ktdHJ1bmsKKzcyNjk5IGRjZGE0NDhjYTY2ZTg3MjZiNjY4ZjZlZTQwNmNiNGU3Y2NmMjFiZDMgbGVnYWN5LXRydW5rCis3MjcwMCAwZTNhY2U5Zjc1MTZkYjRmZjVkZjkzYjkwM2Y2MWRkMjgzMTFmNThjIHJlbGVhc2UyNi1tYWludAorNzI3MDEgNzdjZmVmNTk2ZDMzNTBiNTk3MDJkZjFkNDUzMmUzYmQ3MTAyYzU5MyBweTNrCis3MjcwMiA5MDFiNGZmZmVhMWY4MGRlY2FiNzI0ZTM0MzI2ODlmYzc1MjY3ZjEwIHJlbGVhc2UzMC1tYWludAorNzI3MDMgOWI5MmQyYjg2YmFhZWYyMTE0ZTA4Zjg4MGU1ZGU5NDdhOTI3ODAyMSBsZWdhY3ktdHJ1bmsKKzcyNzA0IGQyNzMyZWE5OWJhMDg4ODNmNThjYzJiNGNjYjViNjlhYzc2M2M1MjAgcHkzaworNzI3MDUgZThmMWEwMDc3NzFhYTkwYjhmMDkyYzk1MTIwMzJjNGVmMDIxNTA1MCBweTNrCis3MjcwNiBiMjJiMmRhYWViNDRmMzllOWIzMjc0Y2NmMDlhMTFlOWRlM2RiMDA0IHB5M2sKKzcyNzA3IGQ4NDFmOTcyNDNiNTc0YWQ4NTMzZTY5NDA4NzkwOTg4ZTJiNmFmYzAgcHkzaworNzI3MDggYjUyYjkyZjMxZmE4ODljMWE1NDhhZWVlMWJjZjBjNzZhZDhhZWEzZCBsZWdhY3ktdHJ1bmsKKzcyNzA5IGY0M2ZjMTE5M2MyYWIzODg0NzU2OWRlYTU5ZDY3MDA5MGU5MTRkNTkgcHkzaworNzI3MTAgZTljMDhmZmE5ODk1MTM1YThlMWQ5MzIxMDM3YTYxNTNhNjk1MDJlMSBsZWdhY3ktdHJ1bmsKKzcyNzExIDEwY2ExMWU1OThlNjkzY2YzNzI2ODI0Y2M3MDgyM2NiMGIwNjgyYzYgcHkzaworNzI3MTIgYzViOTgyYWYyMDlkN2JjMzhiMzZjOTAyZDc4YWIzY2M5MGIyMmIwZSBsZWdhY3ktdHJ1bmsKKzcyNzEzIGZlOGQzZmQ2NmQyNjRlYzIwOTIzYWY5ZGJkODhjZjZmZDliYWM3MDggbGVnYWN5LXRydW5rCis3MjcxNCBiNmI0NTRiMDZhN2IzNWNhMTFhMGEyNjUxNjc4NmI2YjUzOWRmNzFlIHJlbGVhc2UyNi1tYWludAorNzI3MTUgZmM3OTM1ZGU4ZThhZGE4YzZjOTRkMzUzOTY4ZTVhNzVhYmQ2MTUxNSBweTNrCis3MjcxNiBkNDA3Mjk3NTVlZGZjYzI3MmVlY2FkM2YwMTkwMDIzNDg4ZmEzOGQ4IHJlbGVhc2UzMC1tYWludAorNzI3MTcgMzViY2U4MGEyNWY4OTk4NmFlYmNhMTQ3ODJmMjRmMzU1Yjk1NDc1NyByZWxlYXNlMzAtbWFpbnQKKzcyNzE4IDk5YjQwMDg2MTU0M2VhNDQyMTY3Y2Y5NmY5MmUyYzhmYzJlYTlhNDIgbGVnYWN5LXRydW5rCis3MjcxOSBhZGJjNjYyZmY0YzFkMjhhYmJkMDUyMWRiNTcyYTBmYzFiYTE3ZjVlIHB5M2sKKzcyNzIwIDBlOGM4YjBkODY2OWU0OWQ1ODFiNTg0MjBiM2UyOGNhYmNkNzAzYzQgcmVsZWFzZTMwLW1haW50Cis3MjcyMSBmMjUzODE4M2QyNjIxZmEwMDlhZTJjZGQ3MmQyODExYjMzM2U5MWQ1IGxlZ2FjeS10cnVuaworNzI3MjIgOWQ4MWUyYzQzOGRiOTcxYjVjYjA5YTkwNWVlYjFhZjNhMTZhOGZlOCByZWxlYXNlMjYtbWFpbnQKKzcyNzIzIGUyMjE3MzYxZWIzN2E3YmM4NGYxNzEyNmVkYzhmNmVmYWQ4MmMwZWQgcHkzaworNzI3MjQgMTA4ZTkwYjg5MjNlYTJlYTk1Y2UwY2IxODg4Y2JlYzlkMTMyNmU1ZSByZWxlYXNlMjYtbWFpbnQKKzcyNzI1IDgwNmVmM2ExZjg1OGQxNDI2YmRjMzBiNDkzZDI0OWRkOWE2YjRjMjkgcHkzaworNzI3MjYgMzY3OGIyZDM2MGM2OTg1NDg5ZDUwNjExOTY5YjNiYzgxNTYxMTA4OCByZWxlYXNlMzAtbWFpbnQKKzcyNzI3IGRmMzgyNjQ3MmUzYmY5MWNkZWQ3Yjk0MGVkMmM1YjhlODZkYjI5YWIgbGVnYWN5LXRydW5rCis3MjcyOCBmMGIwOWQwNTM5YzA5OTU3NGY4NTQyNTk1YmQxOTE5MGNkYWViMDlhIHJlbGVhc2UyNi1tYWludAorNzI3MjkgNTZhZGY4NjRmMzgwOGRkMjI4YmNhODRhOWE5ODlkZjk2ZTYxZGY2MSBweTNrCis3MjczMCA4ZmZlYWY2NDk5NzA4ZWQ2Zjc2Y2IwMzRjZGEzOGMyMjNmNDAyOTU1IGxlZ2FjeS10cnVuaworNzI3MzEgYzAwOWIyYjM0ODFmOWNmYzVlZDYyMTk5YTU5ZTAwNDQ0YmMzY2YyZCByZWxlYXNlMjYtbWFpbnQKKzcyNzMyIDg3ODMwNDYxYWI0Mjk3MmM4MWYzNmUyNmU5MGFkYjZhZGVlOTJkNGUgcHkzaworNzI3MzMgNzZhOWY5Y2I0MzhmNTA5M2YzZWIwNjFhZDZiY2QzYmRjYWYwOWM2MyByZWxlYXNlMzAtbWFpbnQKKzcyNzM0IDcxMTZkZTNkYmU5ODNhNmRmMzk1MjdjMGViMjJiNTAxYzY0YzMwZTcgcmVsZWFzZTMwLW1haW50Cis3MjczNSBmNjVkZTM2ZjE4NWM1Y2Q1MDNmZDYwMjRkMzE0NzVjZmE4Nzc5ZjI4IHB5M2sKKzcyNzM2IDE3OGY3MGZjNDc4ZDc5NmI2YTlhOWVlMjdjOGNjY2EzMzIxMzFjZTkgbGVnYWN5LXRydW5rCis3MjczNyAzYmZkYjhkNzI1NjBmY2ZiMmRjN2EwYTIzOTU5MzQ0YTA0MTZlOGE5IHJlbGVhc2UyNi1tYWludAorNzI3MzggZmI1OWE1MjY0YWUyNWM5NTA4OGI1NWIzNDc2ODhhZmViYmEzODdkMCBweTNrCis3MjczOSA4MWM1NzkwMGExODI1YTgwM2E4ZmQ4YmEwNTNmMDZiOGVlMzhiZDI4IHJlbGVhc2UzMC1tYWludAorNzI3NDAgZmJiMzMzOTBiMjU0OWIyZjRlMDUwOTVjNjZlOGIxZTg4N2YxN2JmYyBweTNrCis3Mjc0MSA5MDRhMWJkMzVlMDA4OTJiNTRjODcwZjQ0ZWUyMmE5ZTVmZjAyNTQwIHB5M2sKKzcyNzQyIGQxNDNlYjYyNGNmNWUyZmJmYjljMmQzZmJlMmZmMDIxNGNhMzFjMTQgcHkzaworNzI3NDMgNzRiNjc0OGI2M2Y1ZmNhYjFmMzBkYjc3ZmM2ZmQwNDU2M2E5ZmIyMiBweTNrCis3Mjc0NCBkMDk5NGE0MmI1OTc1YjI2MGU3NWI4MDEzMDQ4N2E4YTdjMWE2NTEwIHB5M2sKKzcyNzQ1IDQxYTY5MjYyN2VlYjNjNTMzODA0N2YxNDdhMTljZjc2OTdhYWZkZWYgbGVnYWN5LXRydW5rCis3Mjc0NiA3Y2IwYTQ1NDdmMGEwZjgzMmJmNjZlNzM2YzNlOGViNmEzMmM3ZTNlIGxlZ2FjeS10cnVuaworNzI3NDcgMGZmYzk1NTg3ZDdjNDU2MDM0MDVhYmJjODk3MDQ1MWM5ZjE1YmM0OCByZWxlYXNlMjYtbWFpbnQKKzcyNzQ4IDE3ZDA3OGM1ZDY1YjUyMjk5ZjExYmNjODZmNTQwNmE5NTRhNGViOTUgcHkzaworNzI3NTAgNThkM2M0NTRiYzM3MjQzOGI3YTI4MTY1NmI3MzY3ZmJhYTE2OGQ2MyBsZWdhY3ktdHJ1bmsKKzcyNzUxIGY5MzViOTU5ODAzOThkMGQxYWY0MjVmMTIxZmViZTExZmNkYmFhZWEgcHkzaworNzI3NTUgYTdhZDE2OTY4NjZiNGRkOTY5MmYxZDQ1MTFiOGQwNjc5Y2JjYzA3ZiByZWxlYXNlMzAtbWFpbnQKKzcyNzU3IDJiN2NiNDJkZGUxMTY3ZjA1Nzc1NzA1ODg0NTk4YzRmMDY5NmJmMGYgcHkzaworNzI3NTggZTNiYjZiNjJiZDBmNTA3NWQ1N2M5ZTMxYzE0ZTJiZjRiZjYxYjYzNSBsZWdhY3ktdHJ1bmsKKzcyNzU5IGQ0NzNmYmE0ZWM2NzU3YjA4NTQwMzgyNGFmMWQwYzZmOTA0NzYxNzMgcmVsZWFzZTI2LW1haW50Cis3Mjc2MCA5NGQyODNkM2QwMGJmNzRiNzE3NTA3NDBhMjlkNWZjMzQ0NjEwOTEyIHB5M2sKKzcyNzYxIDZhMzU5ZmQyNDY2OTNmNDlhZjY0MGIwYzNhMjNkNjY1MWFjNzUxNWUgcmVsZWFzZTI2LW1haW50Cis3Mjc2MiAxNzBkZGY5NjBmZGRkOGQ5MzkyMDU3OTQxODk5Nzk1ZjU2ODc0NzI5IHJlbGVhc2UzMC1tYWludAorNzI3NjMgNzFlYzRmYzY4M2FmOTI2MzRiYzMwOTcwODM5MGJhOTE4Y2Q2MDkzOCByZWxlYXNlMzAtbWFpbnQKKzcyNzY0IDE0M2FlY2M4MGI2YjZkNWIwMzQzNTZjOWQ3YWQ2ZjAwZjI1ZmMyM2QgbGVnYWN5LXRydW5rCis3Mjc2NSAyZDA2YTMyYTEyZTM3MDZmZTBiNWQzMWMwNjVjYTE0MTI0OTBlMzM4IHJlbGVhc2UyNi1tYWludAorNzI3NjYgNzM3YjNkNGFjYmI5ZmI3MDE3YWU0MmZlOGMwNjNmN2EyZGZkOWVmNCBweTNrCis3Mjc2NyA2OGRjZTY1NTA2ZDlmYWFiMDI2ZDNkNGQ2ZGY5NTU4OGIzZTg5MmQxIHJlbGVhc2UzMC1tYWludAorNzI3NjggOGQyNjFiNzZkYTQ2YmY5NGI2MGVmMWYzMGUxMjMwZWVhZjEzMThhMiBsZWdhY3ktdHJ1bmsKKzcyNzY5IGNlZTgwZDA2ZjdjZTljNDYzOGFkZmIxYWVmNWI4Y2UxYzA5NmI4ZGYgcmVsZWFzZTI2LW1haW50Cis3Mjc3MCA5YTA3ZTlkNjA5M2FkYTQyZTExZDQ4ZDAyN2M2MDk2OWRlY2I3MWNlIHB5M2sKKzcyNzcxIDdmZjdiZWYzMjkxMTY5NDQzMWMxNzcwYjVmYjdkNjU5NzRhNWI1ZjUgcmVsZWFzZTMwLW1haW50Cis3Mjc3MiAwMGViYmYxY2U5MzYwMjY4MDI5YTJhZjI3OTlmNmJhMTNlZWU2ZjJlIHB5M2sKKzcyNzczIGFlMjBmMWViZWMyMWNjZWEzODkzOGE2YmY2ODE1ZTAwYjBiMmNlNTMgcmVsZWFzZTMwLW1haW50Cis3Mjc3NCBkYWNhZDQyODM2ZGQ2MDBjNzg5NGMwZjQ4YWE1MGQwMmNmMjU3OTgxIGxlZ2FjeS10cnVuaworNzI3NzUgYzEzNjg4N2RiN2VmZjRjYjAxZmMzZTFlMzRkYzVlOTlkODY1YjdjOSByZWxlYXNlMjYtbWFpbnQKKzcyNzc2IGQ4MzUwZDA0NGNmMjI4Y2Q2ZjlmN2NkYjc2NzIzMWQzMTIzMzE0MTEgbGVnYWN5LXRydW5rCis3Mjc3NyA2Mzk1MzQ3YzAyNzYyNmFkM2ZkN2I1ZDM1MDc3OWU5NTg3MjUxMmU4IGxlZ2FjeS10cnVuaworNzI3NzggOTQ1YzY1NzQ0N2QyMWU2Njc4ZDg0NTY1MGMwOWUxY2VmZGQxYzIyNCBweTNrCis3Mjc3OSA4ZjE3MzYzYjkzZTZlZDFjNGE3Y2IyNmYxYjY2M2QyMmRhMjkxZjlmIHB5M2sKKzcyNzgxIDg4M2FjZTdlYTQ0NjY2NDBlYTFlN2Y2ZTYzNDFlYjZhZGVlOTU2MzIgbGVnYWN5LXRydW5rCis3Mjc4MiAyOTAxYjEzZmJkN2U2MmU0ZjZiMjI4YmY4Y2EyYTJiODM4NDJjNWQ5IHJlbGVhc2UyNi1tYWludAorNzI3ODMgOTM5NGE4MmQ4ZGUxNjk1ZjJlMTk4YjRjYTAzMzYyMzA5N2Q4YzRmNSBweTNrCis3Mjc4NCA2OWU5NDM0ZTQ1MGFkZWJkY2EyYTc5MTYyZWY0MzUxMzIyOTc0NzI1IHJlbGVhc2UzMC1tYWludAorNzI3ODUgZjc2NTBhMGU5MGFkYjVmNmM4NGZmNDJhMTBjNGEyMWRiYzRhMThiNyBweTNrCis3Mjc4NiA3NGJkYjBlNTIxMmJkZjIyMTZkNTE0YTM3N2ViNjQ2ODU5MTFlZjlhIGxlZ2FjeS10cnVuaworNzI3ODcgNzZjNDQxNGQxMGE2YzFjMTYyZTQ1NDVhM2MwZTVjNGM1MjE4MTE2MyBsZWdhY3ktdHJ1bmsKKzcyNzg4IDZmZDAwOWVjMjI0YTczOWY4ZmQxZGRjYzE1NTlhYzEwZmFmNTBjNDEgcHkzaworNzI3ODkgYWIyM2ZmMjA0N2FhMGQ4YTlhOTVkNjQ3NDRkNjg2ZTIwMWRiMTE3YSBsZWdhY3ktdHJ1bmsKKzcyNzkwIGM3ZmQ3NDFjNzJlYmViZGY0YzJhNDdjOWM3ZWQxZjBhMzYyZTU1NzkgcHkzaworNzI3OTEgMDU2MjgzYTVjNWRhMDAyZWRkYTFmYjZmZjZkYjBlMDZhYzczZTVmZSBsZWdhY3ktdHJ1bmsKKzcyNzkyIGYyNzVkNmEwYTFkMTc3OTczZTQxNDBhYmEwMzExOTQwNmM4ZjExZTkgbGVnYWN5LXRydW5rCis3Mjc5MyA2ZmFiOGJkMTVkNzEwZDg1MTc3ZmY3ZjFiZTJhODNmNWJjMDI4Y2YzIHB5M2sKKzcyNzk0IGE1MmNlY2FiZmZkNGMzMjgwMDEwNDNlNTk0YjgzMWMzNGJhNDQ0Y2UgbGVnYWN5LXRydW5rCis3Mjc5NSBiZGRmMTFlNjIyMDAwMmE5MmY2NTYwMDcwYjk3ODU3ZGVkYjY4MzRjIHB5M2sKKzcyNzk2IDRjZWVlZmI4NTU1ZTYzOWFhOWY4ODdlNDFjMTRlYzBmMjFjMmM2YmYgbGVnYWN5LXRydW5rCis3Mjc5NyBhZDc3MjI2MTExYjI2MzBhZGIzNjU1YjNkNWUxNjMxNDBiMTcyNjJiIHJlbGVhc2UyNi1tYWludAorNzI3OTggMDgzYmEyNDkwNWFkOTE5NzgyOGYyNGE1NjFmZGRmNjMxY2NkMGZiNSByZWxlYXNlMzAtbWFpbnQKKzcyNzk5IDRmYTRjYTQ1MDNjOGRmNjFlNzliZTA0ZDM1MGJhZDM5NjkyODZmNmYgbGVnYWN5LXRydW5rCis3MjgwMCA3ZTJhNmMxZGM5ZDIyMzYzZjkxYjkyY2FlYTRmM2RkNThiZGNlOTYwIHB5M2sKKzcyODAxIDZlNDBhZGQzZWUwMmE3YWVjYzMwNzYxZWE4NTc2NDllZTk3ODM3ZDAgbGVnYWN5LXRydW5rCis3MjgwMiAwMjNhMzQyOGYxYWVmNjhkNDdmYWM3MjFkMmE5ODU0MGI5ODc5ZTgyIGxlZ2FjeS10cnVuaworNzI4MDMgNjcwZmEwYzBmZjlhZjJlNjcxMWZmZGY3ZGUzYzgwNzI2MWFkZTg0NCBweTNrCis3MjgwNCA4OTIxMzA0YjVmOTIyYTQxNWJkYjdhMGRkMjRiMGI5NzAyYTg2ZGMxIHJlbGVhc2UzMC1tYWludAorNzI4MDUgZDJjY2Q4OWU4ZTZiOTUxM2QyZThjNjQ5ZWQ2NmU5MmE4YjgwMjY5YiBsZWdhY3ktdHJ1bmsKKzcyODA2IDM3OWU2M2JjYmQwNDQ4ZjZhMjA2NzFlYzY5ZTM4MjRkZDRlZjhhZWIgcHkzaworNzI4MDcgOTNmNGE5YWQyNmY2OGQzM2JmODFiODJhMDkzNGY2NDExOGZjMTRiZiByZWxlYXNlMjYtbWFpbnQKKzcyODA4IGIzMzI2ZmU2MzJlNWE3OTNlMTk2ZDkxNGVkMzgwYzJhNmI1NDYwNjAgcmVsZWFzZTI2LW1haW50Cis3MjgwOSAyZDZmZmY5ZmU4YWI3MzZmZjIxYTU4YWFmOWU2ZmU1OWJlMGE4ZDRjIHB5M2sKKzcyODEwIDQ1MDFiNjM4ZmMzZjI5NDBkMzJiZWI2YWY2NjE1ZmIxYjc3NzhmYTcgcHkzaworNzI4MTEgOWQ2NDU3ZjNhM2VkZjQ1YTBlMmM5NDllZmIwZmQ0OGRmNTM2NWVkYyByZWxlYXNlMzAtbWFpbnQKKzcyODEyIGViOWIxYWMzZDlkODcwNDZmZWZjZTU2NjhjZjMwYTE5YWUyM2UxZDggbGVnYWN5LXRydW5rCis3MjgxMyBjYzA1NTczNTYwMTRiZDVlYmQ3ZjJhNzUxZDczZTlmNjljMTI1NGViIGxlZ2FjeS10cnVuaworNzI4MTQgZDYxYWIwNDRmZGY0ZDE4MGI1NGU0MThkNzQ5OTcxYjg0MWUwMTBlYSBweTNrCis3MjgxNSA2MDQ0NDQ1MDJlYTAyNzdmMzg4MDM1ODQyMDVlNWQ5OGY1MjdkYzFkIHJlbGVhc2UzMC1tYWludAorNzI4MTYgMmMzNWI4MTZhYzBkYWFkYWI5YzBjMDgyMGFlYjYxZGE0MWQ5NTA3NSByZWxlYXNlMjYtbWFpbnQKKzcyODE3IDFiNjJiZmZkMmVmMmUwZDVmZTJiZmE0MjhjY2U4YmQ2ODY4M2U5YzIgbGVnYWN5LXRydW5rCis3MjgxOCA0MmRiYmVlNjZjMzIyYWM2NDU5MGY1MWMyNGQ2Y2Y4ZDk5YjJjNDQ2IHJlbGVhc2UyNi1tYWludAorNzI4MTkgNGZiY2U2ZDNmZTg2MWRlN2NkNWE3NjBjOTUwNzRiMTljOGI3YmJmYyBweTNrCis3MjgyMCBmYWUzYTc3ZDIwMzIxOTE5N2MwYzZlOTJjOTU5NjRlYzhiNGZkMGFkIGxlZ2FjeS10cnVuaworNzI4MjEgYjY2ZGFmYjQwNjQ5NDMzNWU4YjMzZWU1YjEyNGM1MjAwNjliM2ZkZSBweTNrCis3MjgyMiA2MDc0ZmI0MTE2MjE2ZDEyM2U3YWVlOTY3ODY4NjY4NTNjMGIxZTY4IGxlZ2FjeS10cnVuaworNzI4MjMgYzgzYTE3MmVlOTMxZTU3OWMzNzJjOGI5NjkwYTJmMGY3MDdmMmEyMiBsZWdhY3ktdHJ1bmsKKzcyODI0IGRmZTg4ZDIwMjE4MGVkZDlmZjU5YjQ1M2Y1YmZlZTEzZGY2MjQ3ZmUgbGVnYWN5LXRydW5rCis3MjgyNSBhYWIxMTdlNmJiMTZjMjdhMmIxMDFhNThhMGYyZWU3MWIzYzI3YWEwIHJlbGVhc2UyNi1tYWludAorNzI4MjYgYzQwODA3NDczYTM3OWQ0MWIzYjM1ZmIzYTk5MDY5NjQ4NjYwYWJiZiBsZWdhY3ktdHJ1bmsKKzcyODI3IDg0MGEwOWRlNjhjM2QxNDU4ZGRmZTU0OTI0MTZmZTVlNWIxNWE3MzIgbGVnYWN5LXRydW5rCis3MjgyOCBmMjI3ZmYzNGUzM2Q0OGYyMzQxZTUzZGQxNTM5OWI5Yzc3Y2E5OTJlIGxlZ2FjeS10cnVuaworNzI4MjkgMzU0MDQ1YmI3MzI2MTU4OWJkZTM1M2QxNzNmMDJjYjk0MzQ4MjYwZSBweTNrCis3MjgzMCA3M2RjNzI4NDk4NTNkMTRhMTU2MDdhNGJiZGMzZjE5Y2FjZDQ4YjZkIGxlZ2FjeS10cnVuaworNzI4MzEgZGM0N2Y3YzY1ZDMwOGFkOTRhMDc4ZTg1NjZmMzFiMTM0OTAwODA1MiBweTNrCis3MjgzMiA2MzY0ZTkxMWU0Y2IzNjFmZWQ1NDQ5YmE0MjljY2FiOGJmNzM1ODY1IHB5M2sKKzcyODMzIDI1OWM4NjU1YzU5MjMwM2E1NGUwMjdiMDEyOGQ2NWIzNTYxZDc3OTcgbGVnYWN5LXRydW5rCis3MjgzNSA5ODdiYjczNGUzNzZjMTg3ZDgxYjUxMGY0OTcyYzU2MzNkOTk1YWJjIGxlZ2FjeS10cnVuaworNzI4MzYgZTVkZDI0MjlhY2IzM2VhYTBkYmY2YzE5YWFiZjNhYjY4NDc4NWYzZSBweTNrCis3MjgzNyA4YmVkNmU2YmI5ODQyYjFkMzYyZDRlZmFmMDI2YjIxNDc1ZThlZTliIHJlbGVhc2UyNi1tYWludAorNzI4MzggZDBlYTc4ZTkyNGE2OTFhYTQ4OGQxODVlZmY0NzA4M2YyMTAxODQwZiBsZWdhY3ktdHJ1bmsKKzcyODM5IDA0YTRiN2RmMmQ0ZDMwZjY5MTZlM2YwZjZmMzA4MzFjMzFkNTJkZGIgbGVnYWN5LXRydW5rCis3Mjg0MCBjOGUxZDdmMjI1MmM0ZjBjNDg4NGEyNDU3MDk5ZDU5MjZmM2M0MGQyIHJlbGVhc2UyNi1tYWludAorNzI4NDEgZjI0NTRkNzEyOThhY2Q1OWYzY2EyNDliMDU0ZWZjNmU1ZDBhYWU4NCBweTNrCis3Mjg0MiBhYjFiNWFjMzQ0ZDc5OGM4MTQyMzZiNDQwNjk5ZTMwOTViNzU0MjhjIHJlbGVhc2UzMC1tYWludAorNzI4NDMgZWIyMGM5NTAwNmM3NjNjM2ZhMmVjOWM3N2E1Y2E5ZjIyNzdkZmE3ZiByZWxlYXNlMzAtbWFpbnQKKzcyODQ0IDI1M2VjYWU2NDc4YTRjNTc5NWFiZGU1ZjhiOTUyMTkxYTNhZDg3MTcgcHkzaworNzI4NDUgNDM1YmNhMDc4MWUzZGJiODA2NTY0MzM2NjlhZjk4NDNjMTU0ZmM0YSByZWxlYXNlMzAtbWFpbnQKKzcyODQ4IDczZjYyNzMxYjFlNmU0ZTlkNDVjYzczNzNiMGJjNjRkYTg3YWJmZDEgbGVnYWN5LXRydW5rCis3Mjg0OSBkMmQwMjhmNjVjN2M2MjE0ZjRiM2VkNWZkYWUyN2M0MDIzMDE3MWNiIHJlbGVhc2UyNi1tYWludAorNzI4NTAgMmJjYWMwOGNmYzZkYmQ5NjZkNjY5OWM3NDRlMDI4ZmQ1ZWI4OTQ4ZiBweTNrCis3Mjg1MSBlOTY1NzNlN2M1MTg3ZGU4YTdmODM0MWQwNjk1ZjMyYzBhNWI0ZjUxIHJlbGVhc2UzMC1tYWludAorNzI4NTIgYzA4YmJiODQwNjJlMDE1NWQ0NTJjOGQ3MGJmMzM3NzU1NzkxYzhjYyBsZWdhY3ktdHJ1bmsKKzcyODUzIDNlN2JjNzQ5MzRhMWM3MDc2NjYyNDg3NzI4MzRkODFlM2I2ODI4YTYgcmVsZWFzZTI2LW1haW50Cis3Mjg1NCBkNWM1ODJmNDZiYzk0YzhjNDcwMjUwMTJhMGUxMzlmZTE2YjA5MDYwIHB5M2sKKzcyODU1IDdjYzBmYjA3Njg0NzFhODRjNjk1ODQ1NWY3YTA4ZjU2YzM0ZTQ4N2MgbGVnYWN5LXRydW5rCis3Mjg1NiAxYjY4OWQ1Nzg4OGQ1NWU1MTE0YmY0YjQ2MzAyNmYwMWRiNjNmMWNiIHB5M2sKKzcyODU3IGUwNjQ1NGMyY2MwYmZmYWVjYjQyMWU4MzJmYzFiYTg4MzViMDUwN2IgcHkzaworNzI4NTggYjFlMzUxY2M1OWI3NDc1YTI2ZDBhOWUxMTcxOWVhNDRkMDA5ZGM5YyByZWxlYXNlMjYtbWFpbnQKKzcyODU5IDU0YmJmZDQxYmU2NjhkZmMyM2MwODM1MTAyMTFhY2NkYTdlNTQxMzMgbGVnYWN5LXRydW5rCis3Mjg2MCA5ZmQxZDU0ZjYxN2NmMGY3ZGMwNDUwODM2OTZiMzdiNTExYzkyMDU3IHJlbGVhc2UyNi1tYWludAorNzI4NjEgZGRjOWExNmZiZWE4ZGI5YWZkYTUyZDg1ZjU3YWYwYWZkMzUzZGU0ZSBweTNrCis3Mjg2MiBlNzhlMGJkYmJhYzQ4MTc2OGRhMDI1OGFjYzE4ZTczNGJjNGQyYTFlIHB5M2sKKzcyODYzIDBhNzhlZmZiNWUwYjUyMDQzZjJiNDc4YjUyY2I5NThlOTM4NDEwMDggcHkzaworNzI4NjQgYmYyODQzMDg4NTY3MTdkYjA0ZDlkZTVkZmE0NDJjMWZiNDBmOWRiZSBweTNrCis3Mjg2NSBmOWQyNjA4ZTI0ZThhMzdiNGI3ZmNmYjdlNjgyZTQ2MGRmMWU2N2JjIHB5M2sKKzcyODY2IDk5N2VmNjhiZmExNTE3OTBkN2UxODNmYmNlN2Y0MWE5MTkwMjk2ZDQgcHkzaworNzI4NjggMzNhN2NiMjBmNTU4Y2E1M2M1MDgxMGY1NDEwYWI5Y2Q5OWZjNDVjYSBweTNrCis3Mjg2OSAyNTJkODFhNGY2OWQyZWNiNjRhYWY5ZTJjY2EzMmY4MTYxNTdkMjI2IHB5M2sKKzcyODcwIDg0NjI3N2E0MjI0OTEwNDU1ODNkMTc1YzRlZmQ4OTBlNGU1MmI0NzEgcHkzaworNzI4NzEgMTUwOTg2YWIzZGIyODRjZmQzOGQ2N2ExYWNlMmYwNGMyNzgwYmFlNCBsZWdhY3ktdHJ1bmsKKzcyODcyIGIyNzhiNGJkZmYxZTIyMzk1YzUwZWRhNGYzZTQ3ODY3NTU5NTA3NjkgbGVnYWN5LXRydW5rCis3Mjg3MyBlMTdjMThhNmNhZWM0NzVkYzYzOGU5MTQ2NTM4ZTFjNzRlZTgwNGYyIHJlbGVhc2UyNi1tYWludAorNzI4NzQgODk2MzFmNjI3ODEwZThkNjIyMWU3N2JmY2NkNTM1MDU1NmVlZmQ5OSBweTNrCis3Mjg3NSBiZDJmYjFiZTEzMGVmNGZiZjM2Yjg3ZThiNDkwNmY4NGUwNTE2MDMxIHJlbGVhc2UzMC1tYWludAorNzI4NzYgZGJhNzY3YmMzMTU1ZmQyYmE0MzY4N2ZmY2Q3NDZlOWU5NmRiYmNmYyBsZWdhY3ktdHJ1bmsKKzcyODc3IGY5OWYzZDhjNTFkNThmYmYwZjRjMGQzMTE4ZTM1NmRhZWViM2UxZWIgcmVsZWFzZTMwLW1haW50Cis3Mjg3OCBkOWNlM2U3NDA2NzY1NTY5OGJhMDY3Nzk1ZTZhYTc5YmNkN2E2NTUxIGxlZ2FjeS10cnVuaworNzI4NzkgZGRkZjQyNGJkNjY5NjhjMDU5NWQ0MmVmNDQ0ZmM1ZjY0ZDViZTEzZCBsZWdhY3ktdHJ1bmsKKzcyODgwIGU3YjRhNDQzZjc2NGFlZmJkZTFmMWFiZjM0YWZhZGRlZmM2MmNkZjMgbGVnYWN5LXRydW5rCis3Mjg4MSA2MWJiZTVjOTA1MWJmZWYyYzM5YWM4MjM5Yjc0MTUwMTI1ZTI3NzBjIHB5M2sKKzcyODgyIGE1ODBhMmVlMzEyODQzODY3ZTQ2ZDI0OTA0ZDNmMmZkYjk5MDkzMTggbGVnYWN5LXRydW5rCis3Mjg4MyA2MjVhMDA2YTI1M2I4ZjE2NDFkZTg4MDY3MTQ1NmQ5MjZhODQzMWY3IHJlbGVhc2UyNi1tYWludAorNzI4ODQgOTg5NzhlNGZkNjBmYTFjYzc2MjE0OTU4ODEyN2MzOWZhNmY5NDRlOCBweTNrCis3Mjg4NSA4MzNlNDZjMTQ5OWJkNzgxMmExM2EzNjYzNjZkNTljMWU3NDljODExIHB5M2sKKzcyODg2IDQ4Yjc1ZWIwMjQzNGNhNjMxNDY4ZTExMzdmYmFhZGM0OTE2ZDE5MGMgcmVsZWFzZTI2LW1haW50Cis3Mjg4NyAzNDI4YWNkMzFlNDU2NDI1NzA2Y2VkOGNiZGVkYzdhMTQ4MTA5NTg0IGxlZ2FjeS10cnVuaworNzI4ODggMWUyYzNlN2ZlNjNjZjQ3YjQyZGE4ZDk0YzczMjkxYzgzMjdhZjcxNCByZWxlYXNlMjYtbWFpbnQKKzcyODg5IDNkMzA1ZGVjZTU2NzRkYzZkZDM0Mjk1MThkM2I1OTMwZGMyMTllZTAgcHkzaworNzI4OTAgNWRjMzNmNDY3ZmY0NmYyZjYzMDdkYTVlM2EyNjEwYzRjY2I3ZmI3NiBsZWdhY3ktdHJ1bmsKKzcyODkxIDljNzQ0ZGZjZjRkZTc2NWU3NzIzYjc1NWJmOTJiNTM3YjBkMGQxZTcgbGVnYWN5LXRydW5rCis3Mjg5MiBiNWUwMDBkMDNiMmM0ZjkyNmZjODJiYmQxYTA0ZWZjOWFlNDAzYWRiIHB5M2sKKzcyODkzIDNiZTM3ZWM0M2MxYmIzODVmYTViZmQ2MDI4NzUxNGNlYzYxNzFiNDMgbGVnYWN5LXRydW5rCis3Mjg5NCBlNjdiMWQwNzFlZDYxZjVmZGZiODAzNmNmNzBhM2JhMzQ5ZDBlMmEwIHJlbGVhc2UyNi1tYWludAorNzI4OTUgNTM4ZjRlNzc0YzE4ZTI3ZjY1ZWMyMjExYTQ2NjJkM2NlMTRmNGQ5ZCBweTNrCis3Mjg5NiAxZjQzNzU2MTljOWMzZDljMjI0NzU0NzMyN2M1Yzc0Nzk3ODgxYjE3IHJlbGVhc2UzMC1tYWludAorNzI4OTcgYjA1Zjg0YWQ4ZWNiMGMzZTBkOWVmZjFlM2IwN2ExMDU5MzA2OGUxYyByZWxlYXNlMjYtbWFpbnQKKzcyODk4IGY4Y2FkZmI0YTFhMjM3MzgzZTI2NDFjNjU2MTg4MmFhM2U3MGJkYjEgbGVnYWN5LXRydW5rCis3Mjg5OSA4MDI0MTc1ZTNjYzY5OTliMWFiNmFhOWZhMmIwNjIzMTJmYzBkOTJmIHB5M2sKKzcyOTAwIGJmZTQwMjg1OTNlMTExOGUxNWQ3YWNlNWNjMzBmOGJhMTU2N2FlMDAgbGVnYWN5LXRydW5rCis3MjkwMSAwNDY4OGFhNTY0Yzg1ZWYyYmI2NTBlY2I0NWQ5MmU3YTY2MDc1MDNlIHB5M2sKKzcyOTAyIDU2NTQxM2VlOWMxYjM2ZDY3ZmY2M2I2ZmY2ZDhmMTE1ZjZmZTQ4YmEgcHkzaworNzI5MDMgZDc1MDc5ZGUyZTQ2ZTQwMGIyMjhlZTk5OGZlMzliOGYzY2NhMTNlYSBsZWdhY3ktdHJ1bmsKKzcyOTA0IDczOTFkODhiM2Q4MmNkMTgyN2E4NDU0ODExNjUwNDM1YzcyNjU5MWIgcHkzaworNzI5MDUgYjljNzhmYjZkNzFkYmQxNjYyYjEyZGMxNWU0NjEyZDFkMDZlZWZhMCBsZWdhY3ktdHJ1bmsKKzcyOTA2IGViMGNkODNjODRhYmZmMzQ3NDQ3YjZhZGNiZjE1MzUzMGU5NjExMjEgcHkzaworNzI5MDcgMGM2MTdiN2E3MjdhZTBhYWFhYzllZGU2YjI5MmI2MWYxZWE1MzU0NSBsZWdhY3ktdHJ1bmsKKzcyOTA4IGRiMjEyODY5ZDgxNDZjZGFiOTBhY2VhMDBlOWZlYjQ4ZWMyMDMxNmUgcHkzaworNzI5MDkgYzc0OTY3ZmViMDIxYWE3YTk4ZjkyYWE2ZmFmMjRmMGQzYjUzMWQyMSBsZWdhY3ktdHJ1bmsKKzcyOTEwIDVhYjJmNmNhNjVhYWZhMDA4Yjc2NWVjMTQ2ZjdlNDViYjdkMjhkMDkgcHkzaworNzI5MTIgMTQ1Mzc2ZGYzYWQ3MjhmNzA1MmZkZDhiNmViYTYwMGE4MzE3ZmVjZSBsZWdhY3ktdHJ1bmsKKzcyOTEzIGYyOWJlNzEwYzE3NGQxYzM0Mzc3NzFkMTY5ODY1MTkxODcwMjljY2UgcHkzaworNzI5MTggMzlkM2E3NWZhODIxODQxMDJmMzQ2ODVkNWI2MzljOGRmN2ExNGUxZSBweTNrCis3MjkxOSA1YWVhNjAzYjIzMDg5M2UyY2E4Nzg3MTYzZDQzNTdkMTA5M2JjMmFjIHB5M2sKKzcyOTIwIDBkNzQ2MWMwNjNlNzllZGJiYmJjMzgxYWJiMmRjNzE4NjQ4NzdmMjggbGVnYWN5LXRydW5rCis3MjkyMSAxNDgwZmEzZmNhYjQwMTE0NTFlNTk5ZWQ2MmY3MTI1MzY1NmIyMDBkIGxlZ2FjeS10cnVuaworNzI5MjIgNWRkMWY2YjE0OTM5MWZhN2ZjM2ExZmFmZDMzYmUwOTJmZjYyZTU0YyBweTNrCis3MjkyMyBkYWRkODk3MGIzMDM3NTZiYzczNzZmNjM1MTYzY2I0NDQ5NDc2ZTc1IGxlZ2FjeS10cnVuaworNzI5MjQgMTY3NTlmNjJlYjIyNmNkNzAxZTAxY2ExZDc1YTUwZjQ2YjU3YjdiNyBsZWdhY3ktdHJ1bmsKKzcyOTI1IDI4N2NlMzBkMDhiNTQ0MDg0NmU2MTM2OTBlZWE1ZmVkOTQyOTVkNGMgcHkzaworNzI5MjYgNjk5ZGE2YzQ2N2RjMzhjNzdiMzI1YWMxMjBkYmRmMDU0M2YyZDJkNiBweTNrCis3MjkyNyAzNTU0MDRlYTExNDNmZWE3OTNjZjUyOThiZGE1NjlmZDQxY2IxYjRmIHB5M2sKKzcyOTI4IDRkNjc0NTI5MjJmOTNmZTdiZTRkZWE5MTE5MGI4NWU4YjdiNjUyODIgcHkzaworNzI5MjkgODRhNjBlNzEwNTUzMDgzY2I0NGE2ZDg5MTExMTRkMTU5MGE5NGU5OSBweTNrCis3MjkzMCBhYWMyNmRlOGI1ZDBlNGQ2ZTFmMmE2MTU0ZmMyZTk4NzE5MDBkYmQyIGxlZ2FjeS10cnVuaworNzI5MzEgZDNkYWFkMGU3ZjZmNTc4N2NmN2ZlYzg0YTZjZDAyNjBiMWUyMzljMyByZWxlYXNlMjYtbWFpbnQKKzcyOTMyIGNkZmQwMTdjZWU5MDhjOGZjMzUzOTFmZGZhZTY4NjE2N2Q5OGZlZTEgbGVnYWN5LXRydW5rCis3MjkzMyAzYjYxMjU2OWQ1MzYxZjcxN2MxODM5MWU4MGYyZTZhMGU5NzliYmY3IHJlbGVhc2UyNi1tYWludAorNzI5MzQgOTgzZDI1NjkxYjY4ZDgwZjg4NWM5MTdhNGRlYWFlOWFhNDI0N2QyNiBweTNrCis3MjkzNSBhMjdhNzM5Y2VmN2Y4NzlhYmU4YWQxMjYzZjk5MmI4M2E1YWM5ZDk2IHJlbGVhc2UyNi1tYWludAorNzI5MzYgMDI1ODM1MWRmYTYwNDQ5MmY0NWExNzc4NTcyZjQ3ZGIwYTQzYzI2ZCByZWxlYXNlMjYtbWFpbnQKKzcyOTM3IGFjYzA3ODY2YjIzMzAzZmRlZTY1ZThkZjBjYjRkZWEzNzU0NTcxY2UgcmVsZWFzZTI2LW1haW50Cis3MjkzOCAzNDI1N2E3NzNlYzBkY2QzNjlkYmIzM2EyZDZmMTM2N2U0MzM3MjFkIHJlbGVhc2UyNi1tYWludAorNzI5MzkgNjU2NDYzODJlNGUwM2RlOWVmMTViZThjOGEwNTc1ODYzM2I3YTkwZCByZWxlYXNlMjYtbWFpbnQKKzcyOTQwIGJhMzA1ZmU4ZTgzMTIwMzQ3NDQ5ZmIzNTk0NDQ1MTAyZWJlYmU5MjUgbGVnYWN5LXRydW5rCis3Mjk0MSAxY2NiNmQ2MjU3MTczMDUzYzMxZjg2MWI4M2ZiYjIzODI5YmMyNjcwIHB5M2sKKzcyOTQyIDkwMTJmZjdkNzVhMjE2NWQxYmU4MWYxNjIxZmU5NmEyYzFmYjg2ZmMgcHkzaworNzI5NDMgMjcyMWJlN2JlMzY1N2E0MjdlMThmYWY4YjgwNTBmNzY1MTljNzI1MyBweTNrCis3Mjk0NSAyOWU1YzAxNjVlMTM1MTZhYTI5NzMzY2FmOTA2M2FkMDA1Y2YyMDQ4IHB5M2sKKzcyOTQ2IDg4MzA1ZDczOWFlNTI2ZTNjNzlhODViMjhiYTJhOWVkY2ViMjYwYWUgbGVnYWN5LXRydW5rCis3Mjk0NyBkNzFmYTZjNDY4Y2M4YjFkODdjMTI2YzRiNGM2ZGExMTRjNDAwOWVlIHB5M2sKKzcyOTQ4IGZkZjNlYjc4MjJlNDU2YmQ1MjE0NWQ5NWVmZmMzNTYzOTc2OThhMTAgcHkzaworNzI5NDkgYTRkZDkyMTdlYTEzMWNmMWYzNzY1YjQwZTQ0M2JhOGQ2M2M1YzIxNSBweTNrCis3Mjk1MiA0N2RkMjkwZDJkNzQ1YjQ0MzY0NjZkNWM5ZGQ0YTkyM2I0ZmM2ZThjIHB5M2sKKzcyOTUzIDBlNzYxMDJmNDc4YjU3NzVkNDRkZjlhNjUwZThhMWU5NmQ3YzRjMzcgcHkzaworNzI5NTQgZjEzYmNkOTIyZjc2MDI5Y2Q1NjI3ZTg3ZWM3MzFjOTJmOTgzMTlmZSByZWxlYXNlMzAtbWFpbnQKKzcyOTU1IDNmNzllY2FiNWU1Mjk3NDI0OTA0OWU0YWNjNzAwNGY5ZmQ1NTJlM2EgcmVsZWFzZTI2LW1haW50Cis3Mjk1NiAyM2EzNzNjOGVjMWIzODhiNzAzNzYxZmY0OTJjZDRjZWU3NjE0ODJiIGxlZ2FjeS10cnVuaworNzI5NTcgYmE2Mzc2ZGZmNmM0ZjgxMTViMjliYzQ3MzNkYTkxMzI2Y2JjYmE1YyBsZWdhY3ktdHJ1bmsKKzcyOTU4IDdiNGI5MjFmMzMzNTY3NzM2NDEzNTEzMGQ5ZGU1MGRlZjRmMTdiZGMgbGVnYWN5LXRydW5rCis3Mjk1OSA2YWI5MzQ3MDAxMWJiOTRmZGQ1ZWYwZTc0MWE1NjcwOGVlNGMwZjBiIHB5M2sKKzcyOTYwIDQ4NjBmNzQ5M2I5MTQ3OWY2NDNlNWE3ODY1MzdiZjU3OTc4MDg2YzggcHkzaworNzI5NjEgMWMwNzhiYmNhMjMzZDc2MTA2NDgyYjM3NGYwYmVjMjQwNjY2NGM4MiBweTNrCis3Mjk2MiAxZDA5NmQxYjk4ZmQxM2UwMjdlZGI1ZjliYmIwYzY3NzdjMjFmNzQxIHB5M2sKKzcyOTYzIDIyZmQ5Njc1MThlZWMwMzFmM2JjN2M3N2I3NGE0Mjc4ZWM3ZWM5ZjQgcHkzaworNzI5NjQgYjYxZTZhZDVhZTcwZTlmNTJjNDY0ZTc5NzA4Y2U0MTI0MTk2MDY1NiBweTNrCis3Mjk2NSA4Y2IzNDk4NzNjZGFlMmJkNzhkYmEzYzc5MzgyMjM4Y2Q0Yjk1MjZjIHB5M2sKKzcyOTY2IDE1NGNhMzc3ZjUzYzdiNTBlNWM2NzkyMWM0NDI1Yzg4YTZlNDMzMzkgbGVnYWN5LXRydW5rCis3Mjk2NyA5YjhiNjBiYzBmNWI3MzE4MmYzYzY2NjBiZmFmOTJhZDM3M2ViZDY3IHJlbGVhc2UyNi1tYWludAorNzI5NjggYWY0ZmQyMzY1NGNlYjNmNDE5ZWNlNmYwM2E5ZmI5ZDU2ZGQwNGU3NiBweTNrCis3Mjk2OSA0Yzc3ZjllMWExOWRjZTgxOTZmZDgxMDNjMmFjMGQ1YjVlYmZlOWNiIHB5M2sKKzcyOTcwIDgzN2FkYjc2YTBlMWFjMGJjMjE0N2QyMDdkYTUzN2RkMTlkNzVjMjcgcmVsZWFzZTMwLW1haW50Cis3Mjk3MSAxMzkyMWY1MjY4NDgzMGEzYjgxNGE2OWY5OTgxMWIwNTlkYzhjYTA5IGxlZ2FjeS10cnVuaworNzI5NzIgZTZlM2EwZTkxYmVhYzNkMTI3YjVlZjIxZjE0ZjAwNGI0YmU3NTEzMiBsZWdhY3ktdHJ1bmsKKzcyOTczIDgyMWY3ZDQyYmY3NDIyYTBmZGU2ODNiZTdiZWFiYmY3ODY3YjJjNjAgbGVnYWN5LXRydW5rCis3Mjk3NCBmYzRlMjQ0M2Y1MDk2NGU5NjQ2MjZjNzY5Y2FkMzA4YzNmZTM3NmM0IHJlbGVhc2UyNi1tYWludAorNzI5NzUgNjAzODcwMjI4ZGFjNTRlMWE5NmM0OWRlM2Q1YmMwNzVlODIwOTk0NSBweTNrCis3Mjk3NiA2MGQ0OWIzZmQzYmZkMmI3NjM0NDMwNmExMGI3MTkwNTJmYzJhMDU4IHJlbGVhc2UyNi1tYWludAorNzI5NzcgMTAyOWQ5YWFkNDkxYzhmODI2Yzk2Njc3ODFkMTI2MmVhM2NmNWYyZCBweTNrCis3Mjk3OCAxZDNiMWJlNmE4YjI2YmYyNDk5ZDJjZTY0NDdkMjQ2YzFkNDM3ZWRlIHJlbGVhc2UzMC1tYWludAorNzI5NzkgNzBmYjg0ODg3MGFjZDQxNGFjYzU3YzE4ZjRhODVlZjQ5ZGMzN2RiZSBsZWdhY3ktdHJ1bmsKKzcyOTgwIGE2YjczZDgwZmJlMjc1YTlmNjNhN2Q3ZmNlN2MwMDc3MGYzOTZlYzggcHkzaworNzI5ODEgMTFhNTRkYWJmYjFjZDVkMzM3OGM0M2ZjNzk4NGRiNWEwMDZkZWE1MiBsZWdhY3ktdHJ1bmsKKzcyOTgyIDhiMjk5NjUyYjFlODVmN2QxMmU4NGVhMWYzMGI4MjliZjBhMjE1OTMgcmVsZWFzZTI2LW1haW50Cis3Mjk4MyA5ZGRmYTZlMDVmYjBkYTExOTk0MzQyMWExMmI5ZGMyODkwYTg1MzkwIHB5M2sKKzcyOTg0IGFjMGI4NWY2ODI5N2JkMzBmMWU1MGUyOWU3YWJlYmJkMzU2YWQ3ZjYgcHkzaworNzI5ODUgNWIyMTAwZTQ2ZDNiNDhhMDJmMDRjMGRkYjFhZjc0ODUyZDNlMjRhNCByZWxlYXNlMzAtbWFpbnQKKzcyOTg2IDYwNTZjOTZjMmQzMjc1NTg3MGE2ODVkZTliNzExZjE3NGFjMjgxNDEgbGVnYWN5LXRydW5rCis3Mjk4NyBlZDBhOWQ2ODQwMjI2OWE4OTJjMDQxNzcxMjM2YjRmZjZjNDI3Njg5IHJlbGVhc2UyNi1tYWludAorNzI5ODggOTk2NzM3OTI3MGEwOTQxM2EzNWI4ZWIyZmI5ZmIyNGJkMWU4NDg3MyBweTNrCis3Mjk4OSBjZTk5ZThlMjJiMWVhYzA5NjA3M2ZkMzcxNzU5NTI3NTdlNmMwNTM5IHJlbGVhc2UzMC1tYWludAorNzI5OTAgYjAwNDA0OTRiNGE2OWFhYzk2Y2E5MTY5ZDJjMGZlNzVjODI0YjE2OCBweTNrCis3Mjk5MSBmNTVkOGRlZDJkMDVlNWFjZWNiZjYxYWM0M2QyMzk0OTlhYWI4NzgzIHJlbGVhc2UzMC1tYWludAorNzI5OTIgYjcyNmZmZDQ5NTI0NTBkMjJiZjk4Yjk0ZjVkNWYxMjJjNTc1ZTU3OCBsZWdhY3ktdHJ1bmsKKzcyOTkzIGU5MGIwNjdkODNmMjUxNjRhYjY0ZTk1NjVmOTJlNDczYTFkYWVhYTQgcmVsZWFzZTI2LW1haW50Cis3Mjk5NSAzZWI1MjJkYzMzMzdkZWEyMWYyNzRlZDNkOWZiM2Y4MmMzMTg0ZWFmIHB5M2sKKzcyOTk2IDQwMzUzODMzOTRlY2ZhYTZhNzI1MGNmZTg2ZDZiMmI1ZDQxODIzY2IgcHkzaworNzI5OTcgYmMyNTE2ODEwY2M0MTEzYzEwZDgyZjI4MzdjYTNjYzU2ZDcxNWYwMCBweTNrCis3Mjk5OCBhMGEyNWRlZWNkYjIzNmUzNTUxYTdiOTc2NmNjY2FjZWFhMjE5MDQzIHB5M2sKKzcyOTk5IDYxOGU0NmE2OWYyNzhmMDQyMDM2OWRhZGQ4YjdjNDk1YWExMTUxYzggcHkzaworNzMwMDAgMmQzYzJjZjFiNTFlMzRjYzg3NzJkNzFiZDcxOTYyMzA3ODMyMWNjMSBweTNrCis3MzAwMSA4OGJkODc2MGIzNDJlYzg3YjdhYmYwODUwNDgzMTM3NDIzOTY1YmFjIGxlZ2FjeS10cnVuaworNzMwMDIgMjYwYzhlZDNmNWRmOTdhNjUzNWY3NDVmZDE2ZTQ4ZDZmNmE5MjBiZiBsZWdhY3ktdHJ1bmsKKzczMDA0IDFkOGYyNGJmNDM5OTYzMzYwZmNjMTM2ODkzMmVmYjljMTc5ZjA0ZTggbGVnYWN5LXRydW5rCis3MzAwNSBmM2M4NzFiZGVhNTcxZDZkNjljZDhkNDM3NWMxODY1NmZjNzQ0ZmMwIHB5M2sKKzczMDA2IGQ3NWFiMTY0MTNkYTQyYzE0N2JlYThhMjQ3NWVjNDM3NWNiNGY1YWEgbGVnYWN5LXRydW5rCis3MzAwOCAxZmExMzc5NDIwODVkZmQxZjIxM2NhZjVkYzAwMDk4M2U3OGI0ZjZjIGxlZ2FjeS10cnVuaworNzMwMDkgNzdiOTEyNGYxYzhjMTRkOGU3NmMyOGI5YWRiYTFkYTdhZWQ3ZDJjOCByZWxlYXNlMjYtbWFpbnQKKzczMDEwIGQzOWMxOTAzMTZlNzY5ZDljZmQ2MDUwNWYwNjRjZDA4MmI1NmJmZTYgcHkzaworNzMwMTEgNDljMGIwY2E1MTEzYjkzMzgzMTg2MTNmNjgxMjIxNjYwOWViZTRjYiByZWxlYXNlMzAtbWFpbnQKKzczMDEyIGM1ZDM0OTU4MmU5Y2FlN2IwM2Y1NDE2OTY3ZWI4ZmU3NjFkMzU0N2MgcmVsZWFzZTI2LW1haW50Cis3MzAxMyBiNjdhYmQ1MWIyNzA0YzBhY2JiMGY3Mjg0MmU5ZDk1MzIyZTZlMDFhIHJlbGVhc2UzMC1tYWludAorNzMwMTQgMTFkZTM1ZGEyODFjMTc1NWVlOTczOWExZjhhYTljN2ZkNDhlYzcwYyBweTNrCis3MzAxNSAyOGQ2NDE5MmFiNWEyY2Y3MmE5YmQ2YmQ5MTM5MDA3NTE4Y2RjMjQ3IHB5M2sKKzczMDE2IDljMTdlMzY2OTMzNmFjYTcwZWU1YjlmODk1Y2RjNmFlNmUyNmE4ODEgbGVnYWN5LXRydW5rCis3MzAxNyA3NmYxYmU5ZDI4MTgyYmY0OWIzMWUyODQ2ZWRhMmQxZTUyMTYxNTJlIHJlbGVhc2UyNi1tYWludAorNzMwMTggMTM0ZDEyYzJlNzQ1MDBlOGZhMmJkYmI0YmY1MDA4ZDU2MGJmNWJjMSBweTNrCis3MzAxOSAyMzU2ZTk4NWVjZTgzNWYxYmRlM2ZjODdlNDJkMDk4MmMzNmQ2ZWRjIHJlbGVhc2UzMC1tYWludAorNzMwMjAgZWM1ZDIyOGE4M2VmY2EyMWY1N2FkNzU1ZTFmMDQzZmRiMDRkNzNmYSBweTNrCis3MzAyMSBhNWE4OWM2MGQzMmU0ZWVmZjQ2NjkwNjhlNDQzYWJhNTA2ZGEyY2JlIHB5M2sKKzczMDIyIDY0NzUwMDY1ZWNkNGQxYzI5M2JlMTIyYTJlZTE1MDQ2MTE0ODU0YzUgbGVnYWN5LXRydW5rCis3MzAyMyAyNWEzMTU1ZGFjNzZjNTE2Mzk3NGM5ZWFmOWM2Yjc2MWJjY2Q1NjViIHJlbGVhc2UyNi1tYWludAorNzMwMjQgOWE0Y2UxZTcxYWQ4MTY1MTYyMTA5ZmJkMWIyNzY4OTk1Njg4OTNiMiBweTNrCis3MzAyNSA0ZWQyZWUwYjIyOTBhMDY0NmFkODE5ZmQ4Y2I4ZTgxMzNjZjI4ZTU2IHJlbGVhc2UzMC1tYWludAorNzMwMjYgZTQ3NDU4MzhmNjU1YjVmOTUxYjM1NGVhMTNiNDcwOTBiOWY0ZGJhNiBsZWdhY3ktdHJ1bmsKKzczMDI3IDdhMTM0NzFmNGU5YmQxZGNlNTJjYWY4NTU1NjJmZDc4ZGIwN2E2Y2QgbGVnYWN5LXRydW5rCis3MzAyOCAxNDZhMzliMjU4NDU4NWY3YjkyNGFhZWU5MGZmZjFkYTRiNzk4OWM5IHB5M2sKKzczMDI5IGM4ZmUzMDNjZWRhNDUxNThjNzFmZTc5ZGM0ZTkzYTdhZGU2MTI1NjUgbGVnYWN5LXRydW5rCis3MzAzMCA2ZTJhOGJkYWE1NDAyMDhjZDM5MDZiZTg4ZGQzYjc4NTMyNDQwMzdhIHJlbGVhc2UzMC1tYWludAorNzMwMzEgYjJlY2QyYmRmMTk1MmI5MTQxODVkODNmOGNkYjMwMTdhZGQxNGEzYyBsZWdhY3ktdHJ1bmsKKzczMDMyIDZkNGM0N2ZlYzQ0OWRhYmQ1ZmYyMzEwN2JlZjhlMjNjYWM3ZDYyZGYgcHkzaworNzMwMzUgMWE1MjFjMDZhNzBkYjUxNmEyNWQ2MmJmZGNlZDI3NzE2MWUxNjMwOSBweTNrCis3MzA0MiA2ZDZiNGQzNzgxZjI3NTg0YzUwNTIyNmMwOGJiYWZhMmMyMmQ0NWU2IGxlZ2FjeS10cnVuaworNzMwNDMgNjljZDgwZjhlMTMzYTI0MDIyMDNmZjYzZDYyYWJkNWIxYjNhMWZhMCBweTNrCis3MzA0NCBmNWQzZmYwM2RkNWJjZGQ1NTBmMWEyZjVkYTcyMjA1MjJkMjUxNjkyIHB5M2sKKzczMDQ1IDViYjVlOTM0MzViMDRlMTE4MTEwODAwZTg3ZGY2NTA1Nzc2NWY1OGMgbGVnYWN5LXRydW5rCis3MzA0NiA0MzFjYTUzOTlhMjQ0ODZjMGZmOGM4ZDQ1Njk4NDAzZjRiN2Q3YTdiIGxlZ2FjeS10cnVuaworNzMwNDcgYzYyYjY1MjI1MWQ4OTljMTM4N2Q1NTQ2ODVlNjdmZDdhYmE2YjgxZSBsZWdhY3ktdHJ1bmsKKzczMDQ4IDhkMmYzOWMyMWU5ZTUyZjJjNTAzYzRkZmQwODVkZjFhMmI2NGNiMTAgbGVnYWN5LXRydW5rCis3MzA0OSBiMDFhZWZmNzJiNjUyYTdmMTk5ODcxNjE5YmQ0YzAzYjE1NjViMzgxIGxlZ2FjeS10cnVuaworNzMwNTMgNTUzYzgxNTFjOWM2ZTAyNWE2NzJkNTNmYmM0MTQ2NGYwYTM2Y2JlZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwNTQgNDk1Y2YzYzI1ZWIxNDNiMDIyZjZmMjk5Mzg5NTIwMzllOTk5YjY1MCBweTNrCis3MzA1NSAyMzQ2MmIzODE3MWQ2OWVjZmEwOWNiMDUxZWE2NTUzYjVkMjQ1NGZkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA1NiA0MzUzZmQwODQzY2IzMWIzNTZhZGM1MGY5M2QyMjBlMmU3MjU1ZWYyIHB5M2sKKzczMDU3IDNmZmJhNmFkMzE5YzJlYWVmNTJlYTk0MjIwNDBmNTgwNjdmZDFmNDcgcHkzaworNzMwNTggY2E5YmU4ZmMwMjVkYzI3NzNjZGM0M2M1ZmUyNDU4YmMyNjQzY2M5NSBweTNrCis3MzA2MCBlNDc1Y2M3MWYxODhhNGE1OWZiNDEwYmI1ZjI5NGFhMzkwOGVkMzM0IGxlZ2FjeS10cnVuaworNzMwNjEgOTE2MmNkZjM0ZGZiZjQ1NjJiY2FlYjU5ZGIzODgxNTQ2NjcxYjQxZiBweTNrCis3MzA2MiBiNDA0MzA3OTIyYzZlOGM1MDhkZDA3NDY5MTkwYjhmNWExNTAxZDVmIHB5M2sKKzczMDYzIDQ5NDg1Zjk4YTMwODNiYzFjMTgyNDZkMjYyYWU1NTc0NzRkYmIyZDQgcHkzaworNzMwNjQgYTI1M2ZlYTg1YWYxNWNhOTllMDMzYTAwNTRhM2QxOWU2OWQ5MjQ5YSBsZWdhY3ktdHJ1bmsKKzczMDY1IGZhMmY5MTc5MDZlNzNiN2QxZGQ2Nzg0ZGNhNmZmZDk1YTFiODJmZjkgbGVnYWN5LXRydW5rCis3MzA2NiA0ZTk2ZDdkYWY3OWY0YzViNDQ2MmVmN2JmNGQ0ZjZlZTcyNzgzZWFiIHB5M2sKKzczMDY3IDExNDM1NGIxZTBlNTdkOGRjNjQyOTdlNzAwMDc2Yjc2MjA2NjkxODAgcmVsZWFzZTI2LW1haW50Cis3MzA2OCA3NTY2MjE4MTlmNWE1MWY0MTQ2YWM3YzVmOGUwMDRkOGZkZDNiYWQ4IGxlZ2FjeS10cnVuaworNzMwNjkgNWRlYzcyNDdiMjQ5NmViODVjOGFlMDliYmE5OTkyZTkwOGY4MjYwOSBsZWdhY3ktdHJ1bmsKKzczMDcwIGJmMGJkNmVhMWM3MmU1NTBlODA5NGJiOTUzMGQxYTJmNjFlMDZhODcgcHkzaworNzMwNzEgMWI0M2U2ZjJkMzI4YTk3MWY4MDk0ZGIzMmNlOTg5NWI0ZmJlYjc0MSBsZWdhY3ktdHJ1bmsKKzczMDcyIGQ3NGI4ZWRkN2E4Y2YwNDA2MDQ3ZjhmZmYwYTE1MjkzNDE1MzViODkgbGVnYWN5LXRydW5rCis3MzA3MyBlZjA3ODVjZmE2YWY1MWI2MmM0NzZmMmI5N2FhYjcxZjUzYTNhMTE2IGxlZ2FjeS10cnVuaworNzMwNzQgYmJiMGI0ZjhiNWUxMWFmNTE2NzY3YThmOTAyNTBlNzQyMTI5YjEzZiBsZWdhY3ktdHJ1bmsKKzczMDc1IDgxYmFmNzZkMDc5NzczZDY3NDdjZTUwODNiYmRmNzJlNzQ0MDRhZmYgcHkzaworNzMwNzYgNTE5ZjgwYjFmNWUzYTY0M2Q0M2VlYzE1MTdlZmQwYjI2YzA1YTJlNyBsZWdhY3ktdHJ1bmsKKzczMDc3IDA3MDUzMGU5ZjE4ZjI5ODQyMjRmNTM3NDJkNTQ0OGQ4YjRiZDFhOTAgbGVnYWN5LXRydW5rCis3MzA3OCBjM2EyNjU1NmRkMTRhZDJiNTk0ODE3YWM0OWJkNjlmZmUxOWQyNDAxIHJlbGVhc2UyNi1tYWludAorNzMwNzkgZjE0YjUwNWQzOWY0YWU4YTliNTUwOTIzZTAxNzgyZjJkOTU2NzBhNyBweTNrCis3MzA4MCBmNTFlYWFlZDZjNzFhNjBkNjEzZmZiY2M3YTFmMzVlMTBiN2E4Yzk5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4MSAyYWZmNzAwZTBjYTkxOGMwZDNiNGFiZTY3NmZiMTg4ZjljYWQxNmViIHJlbGVhc2UzMC1tYWludAorNzMwODIgYTZhNzRiOWE3Y2QzNzJiMDMyMzgxNmEzNjEyNTc3YmI0MDc2OGRlZiB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODMgNWRiMDU1NmVkMTIyMzViYmZlMWRlYTM0ZmU0ZmNkMTQ2YmU1MTg4YyBsZWdhY3ktdHJ1bmsKKzczMDg0IDdiNzcyZWQ1MzZjNzY5Y2U5Y2UwMjEyNjZiNTVjNjA3OTI2ZGViZTYgcHkzaworNzMwODUgNzVlMTJjNWU0ZWFmYmExYTM0YjI0ZjA3ZTdlMDNiNjRkNjQzMWM3MyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMwODYgNTJkMjU4ZWIwMTc2ZmFmNDFkZjY2NzNiZGU1MjY1OWZjYTJhYzViZSBweTNrCis3MzA4NyBiNGRkNDI4M2ZmODIwZGRhMjNkZmQxNGM3N2U2M2UwNWQzYzY5MzgyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA4OCAxZTJjMDM3MWNlNTczN2RhNDZkYjBiNDdiMWViZmY5OGJhYzMxMjExIHB5M2sKKzczMDg5IGY1MTdmMmU0ZmIzYmI1NmNiNjc0OTk3ZDljZDRjYTg4ZTFlYWQ3MzAgbGVnYWN5LXRydW5rCis3MzA5MCA1MGYzMTMwOGI1MGFlZDY1MTRmNjUwZGYyNGFkNDIxNzI5YWE5ZDYzIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NCA0MjExODEwZGM3OWNlN2FkN2UxOTRlNzBhODkwNzM1YmVmM2QxZDg1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NSA1N2EyZDI3MTNmMTk1M2EwY2E1NDI4OTI3ZTFiYzQ3Y2QyNjZjNjRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5NyA1MjhjMDkzYWI5ODZkMjA3Zjg0ZWY2OTBhNzU3YzQ4YTVmNDcwMzRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzA5OCA3NTdhN2MwZjY3OWUzYmFmMzk1ZTA2OTVhOTg1NmEyZTI3OWE1MDhiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzEwMSA2MDAxNjlhZTU2ODFkM2E5NThhOTkwNmViNjFhYWE3Y2NkZmFiZTJkIGxlZ2FjeS10cnVuaworNzMxMDIgZmI3OWVlNDU3NzU0MjgwOWEwNzgxOGU0MjA1OGZiYWU3YmYyZmMzNyBweTNrCis3MzEwMyA3YzQ0NDA1MzhhYmIyNDJmOTViMDQ0MzY0MzhkOTBlZTgzMjdkMjVjIHB5M2sKKzczMTA0IDg1NjdkZjNhNDNiNjEyMzBmMGU4MGY4YzBmMGUwOTc0Zjc5NWU1YzAgcmVsZWFzZTI2LW1haW50Cis3MzEwNSBjMDUxYmE2MTdmMDQ2MTk5MGFjYWUyMmQwMTZiNjM3ZDIwN2ZmNGY0IHJlbGVhc2UzMC1tYWludAorNzMxMDYgNjg0NmY5NWY4ZTA3N2E5YWQ0NTg3NWUzYWZmOTQ3ODEyZmNiYTljMCBweTNrCis3MzEwNyAxOGIzZDViMzdkODNmYmU2MjZhMTVmYTMyMzI1NTgzMmMyOWI1NTBkIHB5M2sKKzczMTA4IGM2Nzg1NGYxY2Y3OTMxNWU3MjQ4ODQwMWIxMjI0YTVkZDgxNzZhNzggcHkzaworNzMxMDkgNDQyNzg1OWQ4MTdhNzJjMzMyYzRlMDgwODc4ODY0YWI3ZjVkNmY0OSBsZWdhY3ktdHJ1bmsKKzczMTEwIDhjMTMwNjcxYzg0MjUzMjdmYmViY2FmMzYwZTAyOTE5ODdiM2ViMTEgcHkzaworNzMxMTEgOTM4Y2MxNmU3ZjhkZWJkOWU3OTM0OWYxY2E2NTVlNjY5NTJmZTBjOSBweTNrCis3MzExMiAzNTIyYzJiMGQ1MWQ0N2RlM2NmNmQ2NWQ5YTUxZjYwZDcwOTRmYmNhIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzExMyBiYmY4ZjI1ZWIzNzdiMjAxNTIxMmIyMDMyOGM1YTJkOWM1OTczM2M1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzExNCBjMzdhZTU2MmVmODIyZGQ1NTYwYWZmMTQzMzFkMjhiMDk1Y2JkMDEzIGxlZ2FjeS10cnVuaworNzMxMTUgMWRmY2M1M2U4MzZhMGU2MDI5MDQyYjFjZDFjMTRhM2U4ZTk2NTQ4NiBweTNrCis3MzExNiBkMGU5NjA3OWI2YWNhOWE5YjViYTU5YjQ4Y2YwZmE3MmZlZWUwNDM3IHB5M2sKKzczMTE3IGE4ZDljYzkzMjY3NTYxN2E1NDA1YzVkMGFhYWE5YTM0NTU2MTg1MjIgcHkzaworNzMxMTggNTIyOTVlYmNjYTMxMjQ0ZDAxZDQ1ZjYwZjI3ZTY0Nzc2N2JjZTBkMiByZWxlYXNlMjYtbWFpbnQKKzczMTE5IGE1NjNiY2YxYTYyZDJmNjljNDhkMjliMzk0N2Y0NWU1NTViYzUzMTYgcmVsZWFzZTI2LW1haW50Cis3MzEyMCBlMjVmYzM3NzY3MDQ3MDIyM2Q2NjA3ZGNhYWIyMzM0OWJiZDdkMWMwIHJlbGVhc2UzMC1tYWludAorNzMxMjEgZDUwNzFkOWY3NDA4YmRiODhkNTdiYzVlYzcyZDc2YjIxMDRmMzYyOCBsZWdhY3ktdHJ1bmsKKzczMTIyIDVmOGRlYzg0NmY0NmRlOWI4MTQ3Yjk5MTNmMDlmN2FkMmZiM2E2ZWUgcmVsZWFzZTI2LW1haW50Cis3MzEyMyA1NDI5NTI3ZTNhMjg4ZmQyMWE1ZDYxZWM0ZWE0ZTZhZjU1NzY2OTdiIHB5M2sKKzczMTI0IDQ5OTNlMTEwZmQ3Nzg1ODQ4YjhhMzZhYjQ1MWZkMTc5N2QwNmEyMTcgcmVsZWFzZTMwLW1haW50Cis3MzEyNSBjZWQzODBiNDAwMDQzNjJhN2E5YWM1MzgwYmY0OTAwY2QwM2FhNmMzIHB5M2sKKzczMTI2IGJmNGNmZTUxYjRiNTIxNzQ1MjUxZjZkZWU3MWI3N2Q2N2UwNGUwMmQgcHkzaworNzMxMjcgNjI1NDJiYjg4NzNhMWIzN2Y3YThiMGY0OGMwNDU3MTFkOTI2MTU2YiBweTNrCis3MzEyOCAyYzAwYmRhYWQ3YTlmZmZlMWE3Zjk1NzNiZWFkZWRkM2UxNmMzYmU1IHB5M2sKKzczMTI5IDhjODUwNDcxNWI4YTM4NzlkNTRiMDNkNDRiZjc5NjJiNzc0MDQxOGUgbGVnYWN5LXRydW5rCis3MzEzMCBkYjg4YTY3ZTM4ZWVhMWEzMWZiM2UwODllZDhkZWQwZTVjMGYzODJjIHJlbGVhc2UyNi1tYWludAorNzMxMzEgMjk5MDQ0MGEyMGY0MmExMDdkMDRjYjMyMTkxOTQ2YzQxNzlkYzg1ZiBweTNrCis3MzEzMiA3ZmE4MzI5MjdiOTFjODY0MTQ0NjFkODk0YzQ5ZmFiYmIyODM5ODVlIHJlbGVhc2UzMC1tYWludAorNzMxMzMgN2Q0Nzc1NTY4MGQ3ODQzM2I3MjcxODc5MTZiNjk0MGMwNWE2OWI5ZCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMzQgZTEzYTRmNjJiNmNhY2NkYWRhYmE2OTlmZGZiNjNiNWY5ODRhYjUzZSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMxMzUgMTI4MTQ3ZGNiYzFkNTExMzc5NTNiNjQ1ODNiZjczMTZjODE2Yjg1NyBsZWdhY3ktdHJ1bmsKKzczMTM2IDNkMTJmYjljZWQ5MjZjYWU3NWRhNjRhY2ViZTNlYzk1MzU5MTU0YzAgcHkzaworNzMxMzcgZjhiNWExNTMyYmVjNTYwNDRjOWVlMTU4ZGIwODYzMWJkN2ZiZDM1ZSBweTNrCis3MzEzOCBmMGY4NGFmMTU5NTdiYzgzYzZlM2U1YjgxMjc1MzE5NmIwNDIyYWUyIGxlZ2FjeS10cnVuaworNzMxMzkgYmE4MjIyODM5OTM4ZGIwNjk0MmYwNDE5YjBmYmQ2NzRjZmYxNDA5YyByZWxlYXNlMjYtbWFpbnQKKzczMTQwIDcyMzRhODNhOGIxOWZkOGYxNTUwZWQwNWEwN2MxZDIwODQxMDkyNjggcHkzaworNzMxNDEgMDQ0OWNiZTlhYzlkNmI1OTU1MDFjM2FlN2MxYjVlOTMxZjIzZDc0OSByZWxlYXNlMzAtbWFpbnQKKzczMTQyIDFlNzJhNTQwYzFhYTY3ODczNjVkMGFkYjYzY2E5ZjBkOTE2YWQ1NGEgcHkzaworNzMxNDMgNjIxYTU5YmIzNDA0NWJhYmIyZGYyOTMzMDA4MzI3YWU1YWZhNzBiMiBweTNrCis3MzE0NCA4ODViMGE5MmI1MDYyNjJmYzdkOThiOTYzYzBkODA3MDMyN2JkNWEwIHJlbGVhc2UzMC1tYWludAorNzMxNDUgZTgwZTI1ZTZhMTg3YjRjNWQ1YzQ1YWU0ZjAzM2I3MmVjYTM0YTQ1ZCBsZWdhY3ktdHJ1bmsKKzczMTQ2IDkwNDg5ZjI2N2IzMDBkYTRkOTVkZjRiNWE3MWVlOTRiZjkyMjgyZWMgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMTQ3IDQyODNiYzhjOTMwNjUxY2EzMTI4MDE4MzE0YmVmZWY1NmIzNjI5OTcgbGVnYWN5LXRydW5rCis3MzE0OCBiMmY5NjIzODU5NjlhMjA4YzJjMWNjY2YwYjVmODRlZDc5MmZmZjdjIHJlbGVhc2UyNi1tYWludAorNzMxNDkgNWU0ZDA3MDU2NWU3MjhjOTMyNGU2MzhlMjljNzY1YzY3YTBlZTFiOCBweTNrCis3MzE1MCBmNjMyZTAyYzI2NDJlOGExN2ZmYjFiNWI5OTg2MDAwYTVlMDQ5N2Y4IHJlbGVhc2UzMC1tYWludAorNzMxNTEgYjdiNzM1Mjk5NGM4ODQwNTBlYjU3MTc2MWFkM2M2ZGZlYTI2YmIyYiBsZWdhY3ktdHJ1bmsKKzczMTUyIGNmZTU3N2FhMTU2YWNjNGVkMDQ5NmFmMTEzMmJkMDg5NzRiMTFhYmIgcmVsZWFzZTI2LW1haW50Cis3MzE1NyAyZjdkOWFiZDY1NWJhYjlkMjJiNGFmZmYxYTAzOWFlYWU0NjA0MThiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE1OSAzMmE0OWQxMDgwMWVkMWVjYmQ1MGEzNTMxN2M5NjUzZDdkMzQwNjQ1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzE2MCBjZjE5Y2MwNmIwOTMwOGRkMDZmNmIzMDEwYTQyOTVmZWU5OWFlNmE4IHB5M2sKKzczMTYxIDMzYThiYTkyNWM5MjA5Zjg1YzAwMGE2MGY5NDE1NGE4MTg1ZmE2YjMgcHkzaworNzMxNjIgNTFmZWNiYjdmYzg3MjY1ZmUwYzJjN2Q3MjU0MDM1OTM5YWQ2M2RmNCBweTNrCis3MzE2MyA0YTI3NzFmNmI5ZGQ3ODUwNDYzZmRkMTJlNWI4MjNlZTI2NDVlNGM1IGxlZ2FjeS10cnVuaworNzMxNjQgMmZiYzcwMzkzODJkMWM1OGYyODA2NmNmOGJlNmNmMzNiMjc0MTYyYiBweTNrCis3MzE2NSAyZDUwMGQ3YjIwYmU2ODZjNjJiZGM4YWYxZWMwOWIwNGU3MmIzYzg3IHB5M2sKKzczMTY2IDk4ZDhiOGI3NDlmNDc0NjVlMGRjMzJiMWRhMWVlMWI5MzE2MzkyNDAgbGVnYWN5LXRydW5rCis3MzE2NyAxNmU0NWQ4Yjc5NTdlN2VlMDAzMzQ1NGYzMGUyZDFjNTgyMzhhNzM3IHJlbGVhc2UyNi1tYWludAorNzMxNjggZmNiMjU4MGMxYWIzZThiMzI5YWE5NGQ2YTRjODE5NjFjZWZmOTZjZSBweTNrCis3MzE2OSBlMWE0NjYwMmI5ZDcyYWIwNjY1MjU4ZDIyMzYzYzViNjU1YjAxYjI3IHJlbGVhc2UzMC1tYWludAorNzMxNzAgMWEwMjliN2M5NzcwNTI3N2Q3ODlmN2NlMzhiNzg2NGVmNDM5MjJjMSBsZWdhY3ktdHJ1bmsKKzczMTcxIDY1ZjU2MWEzZTI5MWI4MGU3YWQzMTgxODRjMzI3MGVkMDU5MmY0MDMgcmVsZWFzZTI2LW1haW50Cis3MzE3MiBhZTU4NWNkNWNhNTRiM2ZiNDdhODU2YmIxNjIzZDMxOWQyZWUxNTZiIHB5M2sKKzczMTczIDYyNTQ0Yzk0NmVkYTJhZjFkNDM4NGE1MGY0MjcwMzFkNDYyOGJmZDQgcmVsZWFzZTMwLW1haW50Cis3MzE3NCBiOGIzMmZkY2MyOGQ0MWUzODM0ZWViM2EyZDQwMmI0ZDczYzY3MWI4IGxlZ2FjeS10cnVuaworNzMxNzUgOWMyZTA3YThkMjMwMmQzZjY5ZWUwMzY0NjZjYTQ4OTA3ZTQ4ZjdiNiByZWxlYXNlMjYtbWFpbnQKKzczMTc2IDdjMGU3OWU3MWNjZGM1YjNkYjdhMDFjZTZjOTQ2ZGIzMjBkMDk3MjggcHkzaworNzMxNzcgMDMwYTNmZTRiNjA0NTIxZTBlYTAxMDFmZmQ5NjUzMWM5MTIzY2Y3MSBweTNrCis3MzE3OCBiMDFjY2FjMzA0NzM1MDllMGMwMmFlNDBhMTBiYTZjNzRiYzkyMzY1IHB5M2sKKzczMTgyIGU4NmJjY2ViYzA3NTg2ZTg0ZjhjOTY4MGMzMTIzYjA5YzQyZDUxNmMgbGVnYWN5LXRydW5rCis3MzE4MyBiZmFhZjJmNGIyZTViZDViMDcxOTkxYzgxMjQzZjFlZjdkNzFiNDY3IHB5M2sKKzczMTg0IGJjNzRiMmY2MTE1OTU4OTBjMWM0ZDAyODJlNmJkN2MwOGFiZjMzNDAgbGVnYWN5LXRydW5rCis3MzE4NSBhMjk4NDJlNWUxMzhjMzc1MWI3YjVjYWNhZmQ5MTA5NjI4MWI1M2QzIHB5M2sKKzczMTg2IDVhMzJmM2QwNjE1OGMzZTRlMDIzOGE3NmU1MTZjYWRiM2Y1ODkzYTYgbGVnYWN5LXRydW5rCis3MzE4NyAxNGE0YjZmYjAwZmViYTgxODk5OGE5YTI5YzNiN2MzMWY2MjMwMTIxIHB5M2sKKzczMTg4IGFiZDEzYWNmZjVkYmUyYmE5NGZjMDNkYjlhODlhYjZhZTQzOTU0NDUgcmVsZWFzZTMwLW1haW50Cis3MzE5MCA0NDM5YjIyY2Y2ZWFmZGU3OTNjMTNjZjk4OGQxYjg2MDlmOGViNjI4IGxlZ2FjeS10cnVuaworNzMxOTEgMjg3ODg3MTk4ZTJmYTcyNGZmNDZjOGEyYjY2NTYyYzM4OWE1MmRiOSBweTNrCis3MzE5NCAwYzk0YzVjYTU1ZDU3ZjUzMTcyNWZhZmQzMzBlMWExZGRmNjQ4MDQyIHB5M2sKKzczMTk1IGY0OGEwNTIxNDI4MWMwODMzMTliMDBjNzllZmM1MjQ3MzM3ZWI4OWMgcHkzaworNzMxOTYgZDA0Mzc4ZjlmZGI0NTZiNzEwNDJiNmQ2OWY1YmM4MTQ0NDNlNGI0NiBsZWdhY3ktdHJ1bmsKKzczMTk3IDdkZjI5MjlhM2QwNmZjNDg1MmE1NTI0NzcwYWUxMzcxMTFiZmNlZDEgbGVnYWN5LXRydW5rCis3MzE5OCBiNzgyZmQwNWE4MDY0MjUyZTVlNjA4YWIwNzE3OGE4MDU3YTIyMjQ1IHJlbGVhc2UyNi1tYWludAorNzMxOTkgMGQ4ZWQ5ZTU1OGYyOGUzMmI4NThkYzQ2ZTgxMWVhMmUxZDMyYjJhMSBweTNrCis3MzIwMCBhZmY5N2U1MGEyMDYwYTc3YjRlZWIwODk2NjM4MTMwZjUzMzE5ZWVmIHJlbGVhc2UzMC1tYWludAorNzMyMDEgOTdhMGE4NTg5MDE0ZDdlZDJhNjIwMWZiMDBhOTU3ZDM4OThkMjViNyBsZWdhY3ktdHJ1bmsKKzczMjAyIDAwZDU3NzJjODY4NjYyNTI0NmMyYTM5ZmE0NjNmMGY3ZDlhNzQ4MzQgcHkzaworNzMyMDMgNWVjZGI4Mjk0MzRmOTg2M2I5YWRiM2MzOTg2ZTBlMGIxNGE0Y2VkZSBweTNrCis3MzIwNCAxOGQ4MjNlOGI2MDJjZWRlNjdlMjg2MmY0M2IxZmQ5ZGQ4ZDNiMWExIHB5M2sKKzczMjA2IGQ1YmYwOGM4NjFhNjQyNWU4ZjBkYWJjMDI2MTQyNDIyOWY3ZmUzOGYgbGVnYWN5LXRydW5rCis3MzIwOCAzZjYyMTE0MGVmYzRhMmUyM2U5YWI1MGE1ZjBhMGFmYmQ5MjgyMjdmIHB5M2sKKzczMjEwIDhmYTRjY2E5YTIyY2U0OTMwNjNkZmIxNzQxMDcxNDY5YmM3YmNmYzAgcHkzaworNzMyMTEgMDMxYjk2M2YyYmMyNzZkNWZlMDA1MjRkZjlkNDQ4ZWI4N2YyNDM4YiBweTNrCis3MzIxMiA4NDMxNzhjZjA4OTlkN2M5ZmU2ZTg0Y2Y5ODhhMDg2MDI4OTc0ZTczIGxlZ2FjeS10cnVuaworNzMyMTMgMGUwNTRjNjU3MDYyNDAyZDM3OGFiNDVkZDBkOTU1NGVmMjI3NmI0NyBsZWdhY3ktdHJ1bmsKKzczMjE0IGU5YjBkYjU1M2QwMWZhODBmMzk0NGY4MzYzMDVhNTU2OTY1ZjBjYTEgcHkzaworNzMyMTUgM2M0MTU3MzQ5MGNiODVjNzdhMmU5ZDg5YTY5MWFkOGJiMzI1YjU3OSBsZWdhY3ktdHJ1bmsKKzczMjE2IDUwYmVhNTMzOWYxODIyYzlkZjllOGExZjNmNzdlZTM3OTA0OWRhNWIgcHkzaworNzMyMTcgNzQyNDYxMjliZDIyMzNhY2FhZGU5MjNkOTFkNjU1ZmM0YTAwM2VlZSBsZWdhY3ktdHJ1bmsKKzczMjE4IGRkYjUwYzNiODZmMmUzZDFiZWMzZDU1MmIyNGMyMjdkNGFmNGU1NmUgcHkzaworNzMyMjMgMGIwNzUzMTY3M2FjZDJiNDVhZDVkMWE3MDlhNGEzMTVlNjA2YzE5MCBweTNrCis3MzIyNCBhMDdlYTgyYTViYjBjYzgxOTM4ZWQ4NTg0MjE4ZjJiZjg1MDY5NGRhIGxlZ2FjeS10cnVuaworNzMyMjcgMzljYjAxYjBmYzY0OGYzMWZhZTExNTNiY2NhYjY0MmQwOTQ1OWFhZSByZWxlYXNlMjYtbWFpbnQKKzczMjI4IDY4NmMxNWI4Njc0ODk4Y2NlOTkyNTBmNzc1YzIwZmY5ZjEyYmRlYTEgcHkzaworNzMyMjkgZWVmNWQxY2U2ZjRiNzBkOWJjZjIzNDM4ZmZjZDljOTY5ZjcxOTgzYiByZWxlYXNlMzAtbWFpbnQKKzczMjMwIGQ0NTI2OTk1NmVmZmUyMmRhY2Q1ZWNkZjFkNDZhMDVlNTEwZGM3NjUgcHkzaworNzMyMzIgZWQ2ZWQzYzgzOWY1YmM5M2FhYWQzZWMwNDdkMGY0YmQxNGQ3NDljMyBsZWdhY3ktdHJ1bmsKKzczMjMzIDNhNzg0YjIxNzIyMDlmM2M5MjQ0MDZiMWFjZDk0MWU3YzMxNGUyM2YgcHkzaworNzMyMzYgMDgwNWVhMjExMTIyMGU0MGJlNDFkOTYyNjg4YTJjMjYwOWJmNmY4MiBweTNrCis3MzIzNyBkOTkyMjgyOWMyMDQzNDgyNmM5YjAyMzI5NWE1ZDEwMDQ1ZTUxMzE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzIzOCAwM2JlYWQ3Mjk0N2VmOWI1YWZkYzU0ZjE4M2FmYjE2ZGUxYzQ2ZWU2IGxlZ2FjeS10cnVuaworNzMyNDAgODEwYzI1ZjE5Y2Q5NGIyYjkwMzAzNDUzZGRjZmNlNGZjNThjYjZjOSBsZWdhY3ktdHJ1bmsKKzczMjQxIGViZWI0ZDY3ZGJhZTk2Njk3MDdkYjMyOGZjODdlMDIzMTFiOGRjNDEgcHkzaworNzMyNDIgYzJjZWM1NmQwYjhhMTE1YWMyM2Q0NTY4ODIxNjhiZjIxNmEzOTY1OCByZWxlYXNlMjYtbWFpbnQKKzczMjQzIGNlZWYwYTc4YmY4NzlmMzAxNzQ0ZWI1YmYyNDQ3ZTNjMzU5NGJkNDEgbGVnYWN5LXRydW5rCis3MzI0NSAwOTRmZDMzNWE0NzEwMjA0NWIwZDc3ZGNhMDI5OWY2NzJhMjBjYjc2IHJlbGVhc2UyNi1tYWludAorNzMyNDYgZWY3NDMxMmQ3MjE1NWY3MTgwZDI4ZWIwMTMzNjAxODgzMmRjNDllYyBweTNrCis3MzI0NyBlNGE3YzQ4ZGU2MDNiZGQwZTAwYzEwMjgzMDdiZTRkM2MyMGE1YzhkIGxlZ2FjeS10cnVuaworNzMyNDggYWU5YjVkNGYxMjI5YWQ2YzJlNDJmMDc2NTRlZjU4YjBhOGQ5NmE3MSB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzMyNTAgNjAyNTU5ZmE1Mjk3ZDUxOTFjMjQ2MjdmMDExY2IzNjc4MDFjYWRmMSBsZWdhY3ktdHJ1bmsKKzczMjUxIGRhMzNiZWQ1ZDhjNDg2MjlkMjBlNzAwY2M3NzIyMWQ1ZTJjZjM0ZjIgcHkzaworNzMyNTIgMTEyZTFiYjU3ZTdiMmRmYTU3ZjAxNjU3MzI2NDEzZWUxMzA5ZmZiZCBsZWdhY3ktdHJ1bmsKKzczMjUzIDljMDkxNTQ0ZTFkZjI3OGVlYTc0ZGVlOGYxNDk4NmQ2NDU1MmUyMTQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjU0IDU3OGJhZjdkMzExNDczMjAxYjkyNGNjYjYwMzI2MWQ3Mzc4MDkyZjYgcHkzaworNzMyNTcgODFhNWIxZWM5MTA1YWFiN2JjYzNjYTA2MGI2YTExMDVhODEyMWMzMSBsZWdhY3ktdHJ1bmsKKzczMjU4IDEyODUzZGIzZWVhMzdjZWQ1NjIwMWI4ZGYwYWI2ZGUyOWExNjFlNzIgbGVnYWN5LXRydW5rCis3MzI1OSAxZjhkOTg3MjBhY2NjOTk5ZDAxOWQ3YTNkNzAxNjFiNDk5YjAyZWYyIHB5M2sKKzczMjYwIDg4ODhhNmZlOWRkN2YyOTBkOTNmNmU4NzhhOTBmYjQ4MmQ0ZTI4ODAgbGVnYWN5LXRydW5rCis3MzI2MSA5NTQ3ZjRiYmQ1YTQ1Zjg1OTgxMGM5ZTkwMTI2M2ZjOWIzOTU4YjkyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI2MiAzMmUzNDQ4M2U2ZGI3MjMzZWU0ZTQxODM3NGNlNDQ1ODRkYzRiZGMyIHB5M2sKKzczMjYzIGNlODk1OTJhOTNhNDM2ZTJhMWE1ZTg3YWVkZjE5N2ZmODg0Y2U3OWUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY0IDMxN2ExNzU4NDA1ODAzN2M4YmY1NjNhMDdjZGM2ZjIzY2I4ZjFmNzYgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY1IDc4N2YyN2VkNzJjMjhkM2M3YjUxNTg4NGMxZjNjNGY0NTUwZDk4ZDcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY2IDE5ZDhhM2E0ZTE0OTYwMmU1ZDlmZjYyMTdlMTRhMjMwYWRhZWFkMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY3IDdlZTU3OTlhN2I1MTk1NjEyZTJlNjNlNDdkNTE0MDZmM2ZlZmI3YmQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczMjY4IDNkODM1N2NjZjU4MzFlZmQ5ZjYzNTk0ZGE5ZDQwZjhmNTMzYWEyYjUgcHkzaworNzMyNjkgZmFmYjk5MWJlYTZiMWIwNzk3ZTU4M2UyYWFiZDViMmI2MWRmYTA2NyBweTNrCis3MzI3MCA3ODNkNDA0NGRjMmRmOTI5YTU4Y2Q4NDA2MWUxNjQzMTUyYzQ4Y2FjIGxlZ2FjeS10cnVuaworNzMyNzEgMGViZTg4OWYxMDZmZTlkZmUwNzIxNTk2NDM0NGU2ZTUyNzVhNGI5MCBweTNrCis3MzI3MiBkYTY4NzFiOWQ4ODRjNGU4N2EyODcwNWI2YmU0N2RmYWE1NWU2MDY4IGxlZ2FjeS10cnVuaworNzMyNzMgNjZhNWJiM2Q4YThkODJkOGY5MWRjMDRhMGMxZjY3MjY0ZTk3YTMxOSBweTNrCis3MzI3NCBkNjc5YjYwOTA3Zjc2OThiMGMwYTljMTNjMzg5YjlkYWFjMjUwY2ExIHB5M2sKKzczMjc1IDNlMmI4ZGU0YjE2Y2M4MmRhYTcwOWMyMTFlNDRiMjdlZWJhMDNkYjMgbGVnYWN5LXRydW5rCis3MzI3NiAwNmY1ZjQyNmI4NDkxMTg2ZDVlODQyZjgxZGY2ODc1NjVlYTI4ZGRkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI3NyA4ODliNWZkOGRhMzA5YTU1Y2RhZDI2NTZhZjQ3MWJmYTY4YzVmZDgxIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzI3OCA4NTE2MzZiNjJhZDk1YWI3Y2NlZGJmNDU2NDE4ZWNmNzQ5Y2E0YWI0IGxlZ2FjeS10cnVuaworNzMyNzkgZDk0NWU2ZGU1MjI3YjZiYmIyYmY3YWU0NzAxMDEwN2I4YmU2NGViNiBsZWdhY3ktdHJ1bmsKKzczMjgwIGQ3OWZkZTEwNDFiZGMwYWY3NGY5MDhhNzQ4NjgxZmE5MTA2OTJlODIgbGVnYWN5LXRydW5rCis3MzI4MSAwNTRlYTQ3ZDZjYzczODM2ZDM3ZWU5NzQ1N2Q1YWYwNzFiODkzNTY5IGxlZ2FjeS10cnVuaworNzMyODIgMGFiZjU2MmIxZTZjZjZlODhlZmVlOGRhODE3MWNiY2EzNDFjMTZhOCBsZWdhY3ktdHJ1bmsKKzczMjgzIGY3YzllNzM0MjA4NDAwODJkMjc2ZjM3ZWY2MDQwYThkMDMwNWE5YjEgcHkzaworNzMyODQgNmJmYjU5NTIxMTM2NDdkMzY1M2Q4ZDMyZjIwMWFmYzBjNTAxOWU4NyBweTNrCis3MzI4NSBmMDAxOWZmNmIzZTViMzM0YmVkMGQwMTc4Yjk3OWIyNmM4NTBlODEyIHB5M2sKKzczMjg2IDFlZjE0MjFhNjEyMjU1MzBiNDI3ZWQ1MTY3YTFhYWM1YTYzZDdjNzggbGVnYWN5LXRydW5rCis3MzI4NyBlZjY1Y2M0MDJjOTIzMTYyYWI1NDJmN2EzMDgxMjQyOTI1YjBjZWU2IHB5M2sKKzczMjg4IGNmOGZmYWI0OTAwMzM1YTc3ZWFkNTI5ZDZhZjY2MWVkZTQ1ZjE1ZTQgcHkzaworNzMyODkgOTg1NTIxMzFmNjQxYmMzYjMxNDRlZmM4NzlhNDc5MjhkYTg0Y2U2NyBweTNrCis3MzI5MCA1NWRkOWVkMjNlZWFlY2YyODBhYWI1Zjk1ZDBhYzMyYmYwNmY2ZjgwIHB5M2sKKzczMjkxIDhmOTI4NzkyNTQ3Y2FmNGU2MDNiYjhmYTkxODM3MjU2ZjVmODIwN2YgcHkzaworNzMyOTMgMjdlMDg5Y2FiNzI5YTFkZmY0OTE3NGUyYTg5N2I4ZTE3ZTI5MDAyZiBweTNrCis3MzI5NCBiNTA0ZDZkMzRmY2Q3MDgwZjE2N2Q5Mzg0ZTQyMGEyY2U5N2Q1M2VhIGxlZ2FjeS10cnVuaworNzMyOTUgN2FkMmYyMmYxM2U2YTAwYzQ4ZGI3MGY1YzdjNTk1OTcyNDYwMDkyNiBweTNrCis3MzI5NiA2OTg1NTdjYzVkYzUwN2Y4YjIyNTgyNzNiZjU2M2Y3YTNmZmNmOTJhIGxlZ2FjeS10cnVuaworNzMyOTcgYzAxN2QxOTE2NzMxNDE3MzZiNWM3MDdiNGRjYmFkNjE3ZTdkM2M2YyBweTNrCis3MzI5OSBjYTUxOTk2MDk5ZmRkMjQ3NDQ4ZjYzYjc1YTNiYzk2NGRkODMzMzYzIGxlZ2FjeS10cnVuaworNzMzMDAgMjc5NWQ2ZmIyMWUyNjJkOWM3MDJmNDMyMjQ5ZjkyYmEwODU2ZTZhZiBweTNrCis3MzMwMSA1NDE4OWQ1YTY2NzQ3OTc0NDVkN2NjNTkxNzIwYjFjODk2ZDJlOTI2IHB5M2sKKzczMzAyIDI1NWRiNzBiYjMxNmFjMGUyZmVhZDM5MTNjYzE0MDBhY2YxZTExNmUgcHkzaworNzMzMDMgY2ViMjYyZDQ0ZDc0NjQxNDZkNjNiODRiZTQ0NGFjMmUyNjU5MzUxYSBsZWdhY3ktdHJ1bmsKKzczMzA0IDcxY2I2MDI5ZTg5Mjc5NTBlNzVkNGZhYzA3MGFhODgwZjU5N2Y2NGEgcHkzaworNzMzMDUgMWM3ZWI1YjYyMjlkZGY1MjkxMmQ3MWNjNDkyYTc2NWEyNmY0MmFhMSBsZWdhY3ktdHJ1bmsKKzczMzA2IDM1YzVjMWUwN2E0NGNmMzA3NWQzNjIyNjlmYjkwNjU4MDU3NTI5YTAgcmVsZWFzZTI2LW1haW50Cis3MzMwNyBmZDBhZDExNWUyMzgyOWFiOTZjOGMyZTZmMTlhNTZjNTk5NzYzN2JhIHB5M2sKKzczMzA4IDg2YjMyZTFmZDk5ZjBjN2Y4MWU5NTUzNjIzOTlmOTE2MzI3NDAwZDUgbGVnYWN5LXRydW5rCis3MzMxMiAxYjg2MDJjMzhmZDBjN2FhYTc4Njk0Yjc4YmQxYmI5YWQ5NTIzZDhhIGxlZ2FjeS10cnVuaworNzMzMTMgYzRhODFjZTNjODkzMjcwMjBjNzZiM2FkNTE3ZThmZmFmZWNhOWFmNSBsZWdhY3ktdHJ1bmsKKzczMzE0IGVhMzBhYWNiMzE4MTYzN2U4ZjllMDA5Y2NhZDI1NDRlMGE0ZjQ5ZDEgbGVnYWN5LXRydW5rCis3MzMxNSA4NzUzNGJmZDFiZThiN2JkZDIwYzkwYzgyMWZhY2FhNmI4OTA3ZWFmIHJlbGVhc2UyNi1tYWludAorNzMzMTYgZDJkNTRkYzhlNDAwZmFhNjE0MGJiZDBlMTY1NjNmNWE3YTRkM2JmNSBweTNrCis3MzMxNyA1MTc3YjY3ODBjYjc0MmYwMjMxZDUwYWJhZjhjYzFiZjkwMWVhNjBiIGxlZ2FjeS10cnVuaworNzMzMTggYjk2YzlkOGQ1Zjk4NWRiNmUzOGJiNjllYWNiNTZhZjZmZmI4Yjc3YyBsZWdhY3ktdHJ1bmsKKzczMzE5IDc2MGE4ODY2YWVmZmEyNDEwYTczNGYyMzA1OTY2ZDIxY2Q4N2VkZTEgcHkzaworNzMzMjAgYWIzYTIxMzM2YTg0ZDZiNzg4ZDU0ZDUxZGU0YjAxYmI3ODY5NGIxZSBweTNrCis3MzMyMSA0NDYwMzBmMzEwYTk1MTVjN2ExNmQ4OWY2MjJjMmQ4YjNmNzZhMTUzIGxlZ2FjeS10cnVuaworNzMzMjIgOTFkNGM1MTRlNzhjMDI5OTFlNWNmZWI2ZGU4YjUzOTQxNmFlMjY0NiBweTNrCis3MzMyMyBmNTgyODc0MmI0NmZlZDI0NzhkMWJjNGM4NGIwNDEzZWE3NjM2NGMwIHJlbGVhc2UzMC1tYWludAorNzMzMjQgZDQ5ZDQ4ZjMzNWM5MDA5YmFiZDBjYzZkNzc5YzFlZThlMTE0OGQwMyBsZWdhY3ktdHJ1bmsKKzczMzI1IDkxNDVmNThmNzQ5OTlhNzMzMGIxYjA1OWM3Y2IzNDEwNjY4NjFkZTYgbGVnYWN5LXRydW5rCis3MzMyNiBmYTY3YmY2NzRhZjM2M2U0NDY0NTVmOGRhNGRiNDJhNjVlYzViY2MyIGxlZ2FjeS10cnVuaworNzMzMjcgZWM4NDVjNGUzZDczNmI2YTkwZGM2NWNkZmQyNzc3YTljNGYzZGQxZSBweTNrCis3MzMyOCBiOGQxNjBhZDFjOTI1NjM2NTQ4MGY0Mzk2YTUwYzU4MWQ2ZWUxZWI3IGxlZ2FjeS10cnVuaworNzMzMjkgNjYyOTdhMDc0ZDhiZTljMDQ1MTc3OTJiOWRlZjFkYzAxNmZmZDQ4ZSByZWxlYXNlMzAtbWFpbnQKKzczMzMwIDA0ODA3MDA1NTNhYjIzZmNlZTg1ZjYzNzlmNTA1YjBmMGM5ZDcxMmEgcHkzaworNzMzMzEgNzQ0ZTk4NGYxODQxYWEwNWY1MDk0Y2ZmMDI2MTc4MjZhYWVhMmZiOSBsZWdhY3ktdHJ1bmsKKzczMzMyIDRmZDNhNGFlZWU0NzNlNzEwNzM4MjdiNGJiNGU0YThlMzRiMDA0YzkgcHkzaworNzMzMzMgMTNhOTg3NGQ4ZjQ3NmE0MmRiM2Y1NWYwMGI3M2YyN2I2ZTdkOWRiOCBweTNrCis3MzMzNCBiNjA5NWRjOGYzNWMwNzBjNDdlODIyMThiMWQzYWY3M2QzMGMyNTY1IGxlZ2FjeS10cnVuaworNzMzMzUgNGFjZDkzNmNmNmI2Zjk3MjcyNjBiYTViNDUyYjE3MzdkZjcwNTdhYSBsZWdhY3ktdHJ1bmsKKzczMzM2IGVkZjNkZGFhMzQ2YmZkMTJiMDU2NmY4YmZiODQ3ZTA3OTIyODJiZTkgbGVnYWN5LXRydW5rCis3MzMzNyAwM2QzOGEyYWJjNDZhOThiYjJlYzM0NmI5NWZkYjk5NjU3Njg1ZGUxIHJlbGVhc2UyNi1tYWludAorNzMzMzggNjU3YThhZTBiYmM5NDY3ODg0ZTQ5MDY1YWI0NzEyMzIzOTJjOTg0MyBweTNrCis3MzMzOSBmNDFiMjg1ZjJiNTlhY2ZlOGM2ZWE2MTAzY2Q1MDI2NzI0YmZjMTU5IHJlbGVhc2UzMC1tYWludAorNzMzNDAgMjcxOWE4OGMyMjk0ZjQwNGQxZGMyYjIwNmY0YWEyMGIxYTcxODIwYSBsZWdhY3ktdHJ1bmsKKzczMzQxIDY1NzkzYWNjMDA5NTAwMmZhMGY2MjJhYzFkOTIyYjVjY2FmZDYxZGQgbGVnYWN5LXRydW5rCis3MzM0MiAwYWRmMGZhNzk5M2JjZWE0MGIxYzRkZjVmNTY2MDA5ODJmZmQwMGFmIHJlbGVhc2UyNi1tYWludAorNzMzNDMgOGIzYWUzYTM4MjUwNzYxNDg3ZTlkNmI5MWU5MTZiYWU4NGUwNDAwZSBweTNrCis3MzM0NCBmNjMxNDc1YTI2NDJiM2IzOGI0NzVkZGM1YjMxNTViZTEzNmZjODNiIHJlbGVhc2UzMC1tYWludAorNzMzNDUgYjQ2MzVkYTMxMDk5OTIyODg5Mzc0NjQwYTZkNTFhZjNmMWM4YjdhMSBsZWdhY3ktdHJ1bmsKKzczMzQ2IDgwZWYzYjdhNGUwZGY0NWExZGUyMGM0ODY1YWY1ZjI1ZDZjYmFhYWEgcmVsZWFzZTI2LW1haW50Cis3MzM0NyA0NzU1Zjg5OGI5ZmUwZDQ5YzFkNjU2NWNkNmY1NDA2ZmIxMWFmOWI1IHB5M2sKKzczMzQ4IDBkZTY2ZmNlZjBmYTg5NzJlOTQzZjFkNzBlZDE0ZTM4ZjFkMjkxOWYgbGVnYWN5LXRydW5rCis3MzM0OSBlYzU5MTdmNzdhYzBlNjg4ZmYyNjM5OTY5ZmY4YTIyMjQ1ODBmMTZjIHJlbGVhc2UyNi1tYWludAorNzMzNTAgYTJmMjM3NmUxZDIwMWEyODhkNjUxOTc2NGM5MjZkNjUwNGIwOGEyZiBsZWdhY3ktdHJ1bmsKKzczMzUxIDYwMDM2ZTUwY2QxODY3NTU0N2Q5NWE4MzAyZTc3MmQ4MzVmYTU2MzAgcHkzaworNzMzNTIgMDAzMWJhMjEzOTBhMWIzYWVmOGM5OTk0MmI4ZGI0YmY5OTAzYjUzMSByZWxlYXNlMzAtbWFpbnQKKzczMzUzIDExMjg4MjM5NzlkZGU5NDMyNWJjMzJhMjVjYjYxYjc3OGEzYmE4NjAgbGVnYWN5LXRydW5rCis3MzM1NCAwZDliZDkxZWI4NWNiNWM0ZTQ0YTE4ZjI5YzJmMmI2NWYzOGY3YmFkIGxlZ2FjeS10cnVuaworNzMzNTUgMjA5YTUzOWViZmY4MDZjMjljNjMyNzllMDZiY2FjMDhhZmYwMTdjOSByZWxlYXNlMjYtbWFpbnQKKzczMzU2IDMyNDRmYzQ3NzNmNTc3MjVlZjNkYWVmMGRkYmQ3OTA5MjBiNjQ3NjUgcHkzaworNzMzNTcgYmI2M2ZkOTc5ZmNkMGE4MTQ0N2E2NzBlZjFlZDUyMDkxOWU4MDJiMCByZWxlYXNlMjYtbWFpbnQKKzczMzU4IDVhMzk4NWU1ZGFlM2I1NzMwMzZlOWVhNWVhM2UzNzUyYjJkOTExMjMgcmVsZWFzZTMwLW1haW50Cis3MzM1OSAxNDAxODJhY2NkMWY1ODE3ZWExOTZkZTk0MjcwMGViMjBkMWViOTI3IHB5M2sKKzczMzYwIDQxNzlhM2U2NjEyMzFmOTNjYzU1MDI3NmU1MWQ5ZTkwODU0NGEwZDggcHkzaworNzMzNjEgOTZhMGMzZjZlZjhiZWEyNzI4OTU1YzllNWYwYTdiNTM2Nzg4ZjBiYyBsZWdhY3ktdHJ1bmsKKzczMzYyIDAyNzQ0NDgxMGUzZjM5Y2IzNThlNjExNDQ4MTRjNTA5NWY1NDAzMTIgbGVnYWN5LXRydW5rCis3MzM2MyBhMWUwNjgxYWNiMzZmMWI3YTc4NzNhNDM0MDhlNjI5Yzg3YzdmYzk2IGxlZ2FjeS10cnVuaworNzMzNjQgNDFlNmNmNjg1ZWQxNmIyOWRlNzg5YTg2MWJkZWNjODg1ODM3MWM5NSBweTNrCis3MzM2NiAyMDE3MGJkMGFmMjU0ZGVkOTdhMWZkNzMzZWFjZTFlMDUyYjVkOGYyIHJlbGVhc2UzMC1tYWludAorNzMzNjcgNzI4ODlhMGI4ZjMyMmE3MzhmMTZkZWY4ODU2YzVmZGM2NWNiN2RmNSBsZWdhY3ktdHJ1bmsKKzczMzY4IDllZTllN2FhOGFiYzI0NDI1ODVkOWQ3YTlmYTI5OGJkMjA3NmUxNzYgcmVsZWFzZTI2LW1haW50Cis3MzM2OSBlMjA0MWM1YzYwMDYzZjkzZGVkMGMxNzdiMzAxOTQ2OWJhNzMxNDVjIHB5M2sKKzczMzcwIDc3MDA0MDhmNjVmYzQxZmZmNjM1NjE2MTgwZDc1NDJiMTc0YTg5NzkgbGVnYWN5LXRydW5rCis3MzM3MSBkNjZjYWZkNmJjMjFiMDk4ZDhmNzIwZGVmZjQ3MTViZDY1NDM4NTVmIHJlbGVhc2UzMC1tYWludAorNzMzNzIgNWVhODUwN2Q5YmUxMmEwZjY1Njc0YWY2YmIwYzE4ODIyMDk0ZDZlZCBsZWdhY3ktdHJ1bmsKKzczMzczIDYwYTBhZjMyYTY2M2UyYWQyNjU4NzY2MGRiNDI4YTI1Nzc5NTI3MTkgcmVsZWFzZTI2LW1haW50Cis3MzM3NCAxMmJmODdjZDI3NDMwZTBhZGY3MzY4ZmZiOTY1NjcyOTVkYjY0ZWQ1IHB5M2sKKzczMzc1IDRmOGE0NGI1MWQwYzFlYWQ0ZGM1M2ZlODUwYThiOTI1MTA5ZDc4ZWYgcHkzaworNzMzNzYgNTMwNmI4NGQ0ZmNlZWM2OWZhNzY4MTgwM2U1MzAwZGJkZTg4Zjc1MCBsZWdhY3ktdHJ1bmsKKzczMzc3IDYzNzBkNzFlM2NhMzI3MTg2MmE1OTI2MzA4N2ZjZGNlYWJjYzdiZTUgcHkzaworNzMzNzggNTVkMjJiMDI0NDY0ZGIyNWE1Y2M1MGQ2NGQxMTVmZDI2OGM3NWMxNiBweTNrCis3MzM4MCAwZTFiM2MyNGQzZTI3YTY2ZjJlOGQ3OGVlNzU0NTE1YzM1ZjEzNDVjIHB5M2sKKzczMzgxIDlmM2EyNTc0M2YwM2ZiNTBhOWYxMGI0ZGY2ZjJlMTcyZmVhZTIzMjYgcmVsZWFzZTMwLW1haW50Cis3MzM4MiBiYTEwMjU0MGVhMzczODhhYzA5NTVlOWQ4YTUyZDhmZWUwOGZmYTdmIGxlZ2FjeS10cnVuaworNzMzODMgN2NmODllZDkwZjlkMDY0YWU0YTFkMmM4OTg0ZDIwOTgwZDRmODNhOSByZWxlYXNlMjYtbWFpbnQKKzczMzg0IGRhZTliZTYzNzliM2U1ODQxODdkYTg2ZGVlMjY3OTAzYmE1YzRlMTMgcHkzaworNzMzODUgZmNiY2Q5MzEzMzhiODkzOWU5MjVkNjFmMmRlZTU5ZjhiZDBhMWQ0OSBweTNrCis3MzM4NyBjOTQ5NGM4ODc4OGY1Yjg1MmJkMmVmOWY3MThlY2FjNmFhYzI4MmY1IHB5M2sKKzczMzg5IGY1NzY4MDc0OGVjYmQ2OTU1Yzc2OTUxMGQ3ZDc0OGFlN2I4NDNkNmIgcHkzaworNzMzOTAgNjUyNTUxYWU0NzY3MDJmMzZhZjI1ZDY5ZjNkZjY4YWYxNjI2MDRhNiBsZWdhY3ktdHJ1bmsKKzczMzkxIDA3ZTJlZTJmZDM2ZDMyZmJjNGY1ZGJlZjQwYzM3M2NkNWVjMjk0M2MgcHkzaworNzMzOTIgNjQ5MmI2ZWNlNTk4N2FiZTRjMWY0MDY2ZmJhNzc0ZDZhMzAyYmY4MSBweTNrCis3MzM5MyBmMzQ3NTRhNzQ1YWUyYTJhODQ1Nzg5MzA3NTczNmUwZTE3OTZiNGU1IGxlZ2FjeS10cnVuaworNzMzOTQgNzYwYTcxMGViNmMxNTY1NGE5OWE1MjgyY2E5OGFiOWE3M2JjN2JhOSBsZWdhY3ktdHJ1bmsKKzczMzk1IDAxN2I0YjY0NGZhZjI0NTMxM2E0YTU3NzhjODU0ZTFhN2YyYjg5YTYgbGVnYWN5LXRydW5rCis3MzM5NiBjZGYyNTJjODc0MzM2YjA1YzFhYTQ1OWY0ODc5NWIyNDZlOGQ0NWUzIGxlZ2FjeS10cnVuaworNzMzOTcgMjRjOGQxYWFiYWRlMzE5OTM1YmQzYjdmMDVkNjQ1Y2I4OTBmZTgwMSBsZWdhY3ktdHJ1bmsKKzczMzk4IDkyMWU1NjlkMTIxNTc3ZjViMDM3NDY3YzkyNDQ0ZjQ4NWZmOTZjYTQgbGVnYWN5LXRydW5rCis3MzM5OSBkODMzOGE5YTFlM2E4ODEwMGRlNDMzMzZmOGZjNmQ0NTkzYTI2MWQyIHJlbGVhc2UyNi1tYWludAorNzM0MDAgZWI2MWNjYTVmNTRkZTNhYWFkYzQ4MjY1ZmYyZDQ5OTg4YzY2YjYxNSBsZWdhY3ktdHJ1bmsKKzczNDAxIGJlZTQ2ZmYwZTU3ODM1YWYzNDhmMTMxZjYyNjlmNmJiMjMwMWQ5YjUgbGVnYWN5LXRydW5rCis3MzQwMiA0NTNmZTQ4ODQyZDBiMTA4NDVhY2IzNWZlNTkwM2VkNzVjOTU4ZTE0IGxlZ2FjeS10cnVuaworNzM0MDMgNzVjNGQzYmM2Y2M4ODQwMzc3Zjk4ZDEzMGM2MWYwZDQ4Zjg1MWFhZCByZWxlYXNlMzAtbWFpbnQKKzczNDA0IDBjMzU3ZTNmYzNkMDE3YzY2YTk0MDE3Y2RhNzVkZTM2ODZjYzQzOWMgbGVnYWN5LXRydW5rCis3MzQwNSA3ODhlMTM5N2NlNzc3NDU4ZmIwZGM4ZjNhMGU5NmI1OGJlNGE4Y2YwIGxlZ2FjeS10cnVuaworNzM0MDYgYjQzMzk4ZWE1NDlkZTQ0MGU2Mjg1M2M1OGUwYjg4M2U2M2VkOTNiZCByZWxlYXNlMjYtbWFpbnQKKzczNDA3IDQ3ZTMzNjVlMjE3N2U4OGEwYTk5ZGUxMmEzMmY0NDU5NWFiYzVjM2MgcmVsZWFzZTMwLW1haW50Cis3MzQwOCAwMzJjMmU1ZTA2MTRmMzcwZTgwZjk2YTUzMDQ0NjliNDY1ZDE0OTJlIHB5M2sKKzczNDA5IDA0Y2NlYzA0NDFiMmE2Mzk0YWI5NGQ2YTY0MDUyNGQwMTQxZWM5NmIgbGVnYWN5LXRydW5rCis3MzQxMCAwM2E4NDhkMWNiNjgyNzZhODhhMDZmYjc2NzNiYzFhZGQ0YTUzYjA5IHB5M2sKKzczNDExIDI1ZWRjNWY3MmE3MmVhM2M5M2Q2NjNjZWY3NWZiOTg1MDQ0ZWZlOWMgcHkzaworNzM0MTIgMGI4N2U0MzhlMWI1M2UzZjgxMmNhZDk2M2E3ZmRiNjVkMTk4YmEyZiBweTNrCis3MzQxMyAxOWU1ZGZjZTBmYmIwMjk1YmQ5MDVkYzU3NDRiY2FjNTBmNmVlZDg0IHB5M2sKKzczNDE1IDI2ZjhhZTZmMDM3ZDZiNWUyM2MyMGU0NWViNzY2YTkxYWRkMWZlODYgbGVnYWN5LXRydW5rCis3MzQxNiBhNzY0ZGI2NDAyODQyYmM3NjE4NGExZmVjYTMyNzgyNjhhZjA1MmQ5IHB5M2sKKzczNDE3IDkxMjQyMzEzNTQ4MzgxNjA2ZWNiZDc3YzZlYjhkNTQxNmY1ODBjZjQgbGVnYWN5LXRydW5rCis3MzQxOCAyMjEyNzQwZjQ1NDQ2OWJlODExODc1Yjk1MjcxNWVkYTJmMjg0MzgxIGxlZ2FjeS10cnVuaworNzM0MTkgY2I2NjQ3M2NiYmY4OGQ5ZjAxODU3MWFiYWViMTdiYTllNjQ4MGVhMCBsZWdhY3ktdHJ1bmsKKzczNDIwIDNlYjg1MTA4MDhjOWQwZTQzMzBiNDRlNDdhYTliMWI1MzRmNzhlYTAgbGVnYWN5LXRydW5rCis3MzQyMSA0MGM4YzM1NDkyZjE0YTI4OTc2NTRmZWFkNzQxNGQzY2MxNzM4OTM1IGxlZ2FjeS10cnVuaworNzM0MjIgMjQ3ZjhkMjY4ZDU4YzQxYTI0NDYyYjNkZDc3M2E2NjQyNDhjYjVjNSBsZWdhY3ktdHJ1bmsKKzczNDIzIGYxMThhYWI2NTBkZDNlOWMyNGZhZmNjMzIzMjMyMDBlN2UxNWIwNjUgbGVnYWN5LXRydW5rCis3MzQyNCAwYmUzNzdlNjA4MDFiNmFmZWIzMjlmMmY0NzAwOWJlZjBhNjNkMGNiIHB5M2sKKzczNDI1IDAxNTEwMjlkZTFkOTE3NDBjNGUxNWZlNzE3NDdkYTJjMGZmZDMwM2YgbGVnYWN5LXRydW5rCis3MzQyNiAzYzhmNGY3ZTRhNjJlYjFkMGUwYTNhOTE4MTYxMTgxZWJjYzA5MDk4IHJlbGVhc2UyNi1tYWludAorNzM0MjcgZTQxMTljOTBiZjI5NTM4ZDAwMmJhZjlkZTlmZGFkNTczZDgxZDQ3YiBweTNrCis3MzQyOCA5MDNlZmJmNTExYjRmZWUxNzk0OWFiMjRmZGY0ZWI5ODFlOThmZmQyIHJlbGVhc2UzMC1tYWludAorNzM0MjkgOTAwMGEwODExNTk5NDFiZmU3YWZlZjI1ZjJhNGVkYTVmZTEyYWMwMSBweTNrCis3MzQzMCA0NjU4ZmNhYWZjNzMyODgzZmE5NzM3MDgyNDEwNTI4Zjc5ZmNlZjVkIHB5M2sKKzczNDMxIGI2MzRkMGVjOGQzNTE1ODMwN2U4MGI3MTNlNzVlZDBiZGQ4OWYyYmYgcHkzaworNzM0MzIgMzExMTA3NDQzY2MxMzZiMGMzYjUwZTU3ZmIxN2UxNTJjNmQyNWJlMyBsZWdhY3ktdHJ1bmsKKzczNDMzIGQ4YWE0ODU0ODVhNmNmOGFhMGM0NzNkNTEwMDBiNmZlNWNjNmE3M2IgbGVnYWN5LXRydW5rCis3MzQzNCBlMTgzMThmOTg1ZWQyZTFjZWQ2NmYwYTYyMGU3OWY3ZDIzMDM0ZDBmIHB5M2sKKzczNDM1IDFiM2ExOTAzN2Y3NjQxMzVkMTRiODIxY2FlMTc4ZjBhNDU0M2JlNzIgbGVnYWN5LXRydW5rCis3MzQzNiA0MzczZjBlNGViMjEzMmI5MWRlOTc5YTVkMDFjNzk2MWRkNjk1OTRiIGxlZ2FjeS10cnVuaworNzM0MzcgYzdhYzcwYTk0NGI1MDFkOTFmMDdmN2Q0ODkyZGYwMjNkMGNkMzIxNyByZWxlYXNlMjYtbWFpbnQKKzczNDM5IDRhNTBmMGJkYzgwNjNhN2E2OTk2YTUwNjJiOTQxYzRmNjE0MTJlYTAgbGVnYWN5LXRydW5rCis3MzQ0MSAyMDM0M2FhMmEzZWI3OTNkMTRmZDE0YjhmODAwYjljZjNjODBjZmI3IGxlZ2FjeS10cnVuaworNzM0NDIgY2I1YWU0NDAxZWJmZGM2OTMyOTIxYzc5YTc3N2JiOWUzMmEzODg4OSByZWxlYXNlMjYtbWFpbnQKKzczNDQzIDk4MTRkN2Y2NTlhMDBlZGZhNzcxYjkyN2I5YjliMWM2NjIxNTRkYTAgcHkzaworNzM0NDQgMjc3ZmQwNjRiNTMwMWE2MGE2ZTA4YmMyNGI1NzUzNzg3MDU3NzQ0YSByZWxlYXNlMzAtbWFpbnQKKzczNDQ1IDA3NmRiNGRlMDM3YWIxMDFlZDBlN2JmMWZmN2QyOGVmMWRiY2IzYzEgbGVnYWN5LXRydW5rCis3MzQ0NiBhZDJhNTk2MDEyNmRhMjFlZDY3ZDE4NWQ0NmU5ZDBlYTBhZWJhY2VkIHJlbGVhc2UyNi1tYWludAorNzM0NDcgNDVjMDVmZGQ5YjMyYThmNjVkODhmN2U1NmEwODZhZmFlMzIzYmZhOCBsZWdhY3ktdHJ1bmsKKzczNDQ4IDMzZmVmZGU3OTNiMGNjNGVmYWIyMjY2YmJkYjczNmNkYzg2OGYxOTUgbGVnYWN5LXRydW5rCis3MzQ0OSBlZWE0ZDIzN2MxNmQ3NTExMTM5Y2IxMmFlZWQ2NWE3NWViMWUyYTA0IHB5M2sKKzczNDUwIDg2NTUwNmYzNmU1ODhkZGU1MzAyNTUyMGM2OGVhNTZmOTVlMzU4OTYgcHkzaworNzM0NTEgOTgyZjdiYTBlMTRhMjdmNmEwZmZjYmJhZWYwY2RjMDlmN2VkYWFjMSBsZWdhY3ktdHJ1bmsKKzczNDUyIDM5MDJlNGY3NGVlMjgxN2EyMWI2ZDAzZTk5Nzg3MGU0YjczZmU1NWUgcmVsZWFzZTI2LW1haW50Cis3MzQ1MyBmMDE5NWRhYWRmZmJiMjU4ZjY5NGFkODdiM2U1NTlkN2I2YTVhZjljIHB5M2sKKzczNDU0IDA5ZTVmODhjOWJkYmVkNDZhZWM0ZTk0YzAzZmU0NGRjYWNlZWQwZmEgcHkzaworNzM0NTUgYzU2ODJjZTIzNDY3NTliOGNhMDNhM2MwMTVkZWEyYzRkMjUxMjI3MiByZWxlYXNlMzAtbWFpbnQKKzczNDU2IDZiNjcwMWJhMTIxMWVhNWY4ODJmNzZjZTExYTEzMDJkYTA4YWUwZTIgcHkzaworNzM0NTcgNGM2Y2RiYTFiMGJiM2NhMDM0Yzc1NzgwMzBiZTBhYjlkMDE5OTlmMSBsZWdhY3ktdHJ1bmsKKzczNDU4IGMzODdkYTgzN2M0YTIzZmZiZTc3YWE1YWNjMTJkYmQ4N2U1NzlhNmYgcHkzaworNzM0NTkgYzE5ODZiYjQzMDBiNzIyYmZhYmFhYmY4MGI1MzVkOWYxZTA0ODk2ZSBsZWdhY3ktdHJ1bmsKKzczNDYwIDZmMzA1NGFmYTFhMGQ4YWIxMGY5YjYwZTRjMWI2OTc2MTJlNjEyODggbGVnYWN5LXRydW5rCis3MzQ2MSBhNWYzMWIzMGM3YzNjY2QyOWNiZWI1MDAwY2Q4OWQyZDI4MDk0YmRjIGxlZ2FjeS10cnVuaworNzM0NjIgYjBjYjNjYmRmYzQ3YWI5YjRhYTgyMDg2YjYzYzFiZjRlNGU2MzdkNyBsZWdhY3ktdHJ1bmsKKzczNDYzIDIyYzc5MzQxZTU4MGNhMmMzYzViMGM0NmVkMjc2YmQxZTk4MDA3ZTYgbGVnYWN5LXRydW5rCis3MzQ2NCBkMTFkYmNmODQzZGY4YzA0Y2RkZTg0YzJlOThhNDVkYzE0OGRlN2RhIHB5M2sKKzczNDY1IDMzNDg5MTE3ZGE5YzU2MDljNmQ4NTA2ODA1Njk5OTcyYzYyODY3OTYgbGVnYWN5LXRydW5rCis3MzQ2NiBkNGM2NmZmMTI5YzJjODMzMDU4NzI1YjBhYmI2MjYyYjU0MzQ4MzllIHB5M2sKKzczNDY3IGFkNmY2YzI2MTg3Zjk0NGE4OTNhZTAwZWJmMWQwOGIxNTFlNmMxOTUgcmVsZWFzZTI2LW1haW50Cis3MzQ2OCA3ZWRjMzc4ODNlOGExZDZkM2UxNWM5NmM2OTM1OGFjNTE2Njk1NzVmIHJlbGVhc2UzMC1tYWludAorNzM0NjkgMzE1ZDdhZTQyZWE3MDI1MzUyNzU2MmMxOWFkMjMzZWNjNTEyZjRhMSBweTNrCis3MzQ3MCBhNzVlMThkODE2NmFjMmFmZmExMWYzZDU2ZDE0MzQwYWE0ZTI4MjUxIHB5M2sKKzczNDcxIGEyMzBmOGQ5YjQxOTI4YzUyY2Y4YjIzZWY2ZTBiYmEyNDc4NjU0ZWEgbGVnYWN5LXRydW5rCis3MzQ3MiAzNzIyM2VmNGQ0NzBkNDcxN2QwNDQwZjk0NzFkZjdjNWYzZGI0NjM2IGxlZ2FjeS10cnVuaworNzM0NzMgOThhNjZmYTAxZTBhNGQwYTg2MDUxYjUyMGE0ZTc1YzhhNjlkMDEyNiBweTNrCis3MzQ3NCBiODE4OTNkMzdlN2E5ZTk1OTAwYzgyNGM5ZGU3YmIwYjM5NjY1YjkwIHB5M2sKKzczNDgwIGRjYzk2MmI0ZDhmZjkzMGRlMGEzNTQ4OWQzNGJjZGRhNGRkNjI0ZDIgbGVnYWN5LXRydW5rCis3MzQ4MSBlMjVhNGQyN2MzOGI2MDY2MDZmN2NmZjEyMDFkNDUzMzQ0MmJlYTBjIHJlbGVhc2UyNi1tYWludAorNzM0ODIgNWZhZmNiMzJmMDYyMjdjZDlmNTc4M2FlODZlNjU5YjJhNzlkNDRiNyBweTNrCis3MzQ4NSBlN2QzOGM0MDgzNjE5YjNjZGUzZTBiNmI3YzFlMDM5NTMyMDlmZjJjIGxlZ2FjeS10cnVuaworNzM0ODYgNmRkNTA3Yjk1MmNmOTA0NWU1ZTA0YmZlZTM4NzQ0NzQwZTRmZjI1OSBsZWdhY3ktdHJ1bmsKKzczNDg3IDA3MjQ5ODg5YTc3M2YxODQ0ZTM3MGRjMTI4NzAwM2Y4ZjA3OGRhMzUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzczNDg4IGUxYzIzMGYwMmZlYjlmZGVjZTc4YzBkOTAzODJkMDdkZjcxMWI1NTYgbGVnYWN5LXRydW5rCis3MzQ4OSA5MTNjOWJmOThkNjA5MDE2YTAxZWM2NzA3ZWQ3M2Q0N2U4ZGI2M2M4IGxlZ2FjeS10cnVuaworNzM0OTAgN2QyNDVhNDIzZTk2YzY3YzZjYjQwYTk5MjQ4NjkzODQ1OTE4YThiMSBsZWdhY3ktdHJ1bmsKKzczNDkxIDAxZDEwNzA1YTcxYjFhMjE0ZjMyY2Y3ZDA0YTViMmE0NjgxYzE0ZjUgcmVsZWFzZTI2LW1haW50Cis3MzQ5MiAzZTQ1NDBiN2ZlYzlmMWFlNGYwYTU4MjJlNzUxYTY2NjE2NmZlODFiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ5MyBmMzIzYzI4MGRmNTg2YTQ5MmRjNTM3NTI2N2Q2MzUyNmE0N2RiYTE1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3MzQ5NSBkNjYyMjc4OWFkMjc1NjIwZmFkY2UwMzY1ZWI5ODFmNWE2MTdlZGIyIGxlZ2FjeS10cnVuaworNzM0OTYgNDBhZmI2NTUzNmRhMjZiMTdjYzllODZmMDdmMWZmZDBiMmJhNDdiZCBsZWdhY3ktdHJ1bmsKKzczNDk3IGE5NTBhNDQzNGY4YmJmYTc1ODA1NWQwMGJlNDg0NzZlMTUwNDJhZDYgcHkzaworNzM0OTggZDNiNDRjZTU0M2FlNDQ1MTVlYjRmMWQ5NWVlODlmMGVlMzU2NTEyNyBweTNrCis3MzQ5OSAxMWMxNmJlNGQyMWMyMTNjZTIyY2I1NjI5NTllM2NmZDk1YmJkMjU3IGxlZ2FjeS10cnVuaworNzM1MDAgZTQ4YmE5Y2U4ODM2MjQ1ZWI2NWJkN2Y2OTFmMmU4MmUzYTczMGEzOCBweTNrCis3MzUwMSA4NzAwMDg5ZWNjZDRkM2UyYzgxMTc0YzU3NTM2MTBhNjE1MDMzMmUzIGxlZ2FjeS10cnVuaworNzM1MDIgOTE3NDk3ZTI1MDljZDY2ZmJiNmRhMThjYmI0Mzg3NGIxMGM2NmE2YyBsZWdhY3ktdHJ1bmsKKzczNTAzIGM0ZmIwNzEyMTQ3ZmQyZTVhZDk3ODE5YzRiMmY3ZGFkMWE5ODg1MTQgcHkzaworNzM1MDUgYWNjNThiNTkzYmJjMWJiYmViYzI5ODBkZjk3NDY4NDJmOTMyZGY1ZCBweTNrCis3MzUwNiBiYzYxZDIzMWE2NTI2YmM5NjdjNWZmM2I3ZTM5ZDUyYzEzMDAzZWVmIHB5M2sKKzczNTA5IGUzM2I2NTYyNzE4OGJmYzBiMzI3MzQxMTk1MmVlZGMxMTU3MzU3Y2YgbGVnYWN5LXRydW5rCis3MzUxMCA1Y2I0ZTUxYTQ0MDg1MTI3Y2FhYmIxOTRjMWE0NDRiNWMxNzRlNDg2IHB5M2sKKzczNTExIDhhZDdmYzgwOWY2ODRmOWI3ZjFjNTQ1NGZiZTM1ZWE2YThkOWQ2NWMgbGVnYWN5LXRydW5rCis3MzUxMyAzODY5MjJiNjI5YzM5MDU0ZTA5MmRlMmYxNTdhMmYwZTFjYzQ4YzhlIGxlZ2FjeS10cnVuaworNzM1MTQgNTE0ZmM5MzY2ZjJkYmJmMjQyZTg5ZjFiNWRhNzY4MWIwNzg1ZWI5ZCBsZWdhY3ktdHJ1bmsKKzczNTE1IDE3MzJhNTRhMDI3MjU4ODJiMmVlZjBkMjZiMmE3ZGI5YjU4ZDk5ODUgcHkzaworNzM1MTggZGMzODE3YThmNTUyZWI2OGY0YWQ2MGIyNmEzYTk3OTc0YTRjZjA3NSBsZWdhY3ktdHJ1bmsKKzczNTE5IDgwZDBmMjAyYjllZjJhNjNmMWI0NGMxMTQ3NmRhYmEyMzk5Y2I0ZjAgbGVnYWN5LXRydW5rCis3MzUyMCA0NTUwNmJlNDQ1MTQ2NjIxOWYxYzgyMTYyNTQ5MjkwYjZmZDUyNGM3IHB5M2sKKzczNTI0IGRmZDliOWU3MWIyZWIyYjZkODQxYWM4MjMxODZjYzA5OWEzYzMzNDMgcmVsZWFzZTI2LW1haW50Cis3MzUyNiBkYmZlMGFiY2Q4OTNhMjYzYTEyN2YzZTI5NjI1ODA0M2ZmODhlZjgyIHJlbGVhc2UzMC1tYWludAorNzM1MjkgYzk0NTk0ZTZlZGI3MzI4MzlmMWU1MmJlODc5MmI2NzAyNzc2YjVmYiBsZWdhY3ktdHJ1bmsKKzczNTMwIGU3MzcxMzUzYTMwMjBlZDE3YzQ1ZDMzMWVkMzliMWJiYTEzYzYwMzIgcmVsZWFzZTI2LW1haW50Cis3MzUzMSBiNGQwYzAyMGUzNTc3MGZlOTQxMDc2NjMwMTdlMDViOGRjZmFiZmI0IHB5M2sKKzczNTMyIGY2NWFkYWQzOTg4ZDRhYTczMDdjYjQyNDk3MGY4OWIxMGE1NTk3MjkgbGVnYWN5LXRydW5rCis3MzUzMyBhNmExYTYxZjcyYmY4M2U5ZTQ0OTY4ZWEwMGViMWNlZTA2MGViMmY0IHB5M2sKKzczNTM0IDA3ZjcxMWQ4N2ZmZGJhYmMxZWJmNzgwOTJkNGY3NmUwMjUxMzgwZTEgbGVnYWN5LXRydW5rCis3MzUzNSBkMTYyOTQ2OTc2NThlY2NhOGExNGNhN2I4N2ZiZWJkYzdkOGJiZjBkIHB5M2sKKzczNTM2IGFkNjA3Mzc4YTRlZmRkMzI4NTk5YzU5ZjRiODFiMmYyYThlYzIwZjggbGVnYWN5LXRydW5rCis3MzUzNyA5NWU1NzkxZmMzYzkyZDdkYjc1NGQ0ZmYzMTM1N2M5Mjg5NTc0MjhlIGxlZ2FjeS10cnVuaworNzM1MzggN2ExMzE1YTk5MmYwYjZlYzBhMmFkNDVjYTc2MDc5OGE3ZmZkYzlmNyBweTNrCis3MzUzOSBjYjNkMzIzNDM4ZDkyMjVlMzczODAwMGNjYTRmN2Y2MjQ1YTkyNjhiIHB5M2sKKzczNTQwIGJkYzk3NTk0ZTUwOThhOGY2ZDkxYjlmNTQzNDE0NWVmMThmMmVkOTMgbGVnYWN5LXRydW5rCis3MzU0MSBiOTJiODkyYzQzNjAzNzUyNGQ5MzlhZjgxZGNhNmZhMGRmN2IzYTI1IHB5M2sKKzczNTQyIDZhMzFjNGUwZGZjMTJhOWFhYTg4MzlkNWI1NzU3MTZjYzg0OGM3ZmMgcHkzaworNzM1NDQgMmFlZWQ0ZWNhZDViODdkODU0ZTUxNDFlNzBmOTFlNDU2Nzc2OTgwMiBsZWdhY3ktdHJ1bmsKKzczNTQ1IGY2Y2IyOTMyMDIyY2FmNGRjZDY5ZDVkMjBkYTIwOWU4Mjg0MWUxZTkgcHkzaworNzM1NDYgYTIwYTM3N2NjMzI3YTgyZGU3OTMwMGY4YzA0Mzc5ZDNiYTkxMGM1ZSBsZWdhY3ktdHJ1bmsKKzczNTQ3IDhhOTc2Y2Q1N2NhNjUxMTQyYzJiNTM3ZmI5Y2I1YzdjY2M5MDI0YjEgcHkzaworNzM1NDggZjMxOGFkZmUyMjY0YWU2YWEyZjZhYWY2ZWY0MDczMzk3OGFhMWJhMCBweTNrCis3MzU0OSBmNGQ4NGM0ZjI4OWJkYTlkYzVlZjQyZDNjNmJlNWIxYTE5NTRkMDcyIHJlbGVhc2UzMC1tYWludAorNzM1NTEgNzlhNjMwZGE4ZjAwZTA2NTk5ZjZhMWIxYjhjMzdjY2JhMDY2MjJhNiBweTNrCis3MzU1MiA1NWIzMDNkNWRkNTUxNWUxOGM5MmY2ZmQzN2ZhZDA4YmZhMGFhN2NjIHB5M2sKKzczNTU0IDNmZTJkMWQzN2NmMWYwNjM0MjNlODM2ZDJiZGUyMGZmMWE0OWI5ODkgbGVnYWN5LXRydW5rCis3MzU1NSA0NDg2OTkxNTZkZmVhMzVjOTY3ZWM4MzlhZWU0MDRhOTZlZDE5NTIxIHB5M2sKKzczNTU2IGExYTZlNmRiZGQ2YTcyZjA2NmE3MjBlOGZmMjgyOTlkY2ZhYTY3MmMgcHkzaworNzM1NTcgMjczNTg5M2MzODc0NzQ0MzQ3NmQzOTkzYzk0MjUwOWVmMmE3ZGY2YSBsZWdhY3ktdHJ1bmsKKzczNTU4IGE5MzdmMDQwOTU5MjgxZWJhYWIzNDM3NThmNWNlOGI0NWE2YjJiZjggcHkzaworNzM1NTkgNTJjODY4NzM2ODNlYWU5Y2U5OWI0ZWFhYjc2ZWM4ZDFhN2RlY2NkOCByZWxlYXNlMjYtbWFpbnQKKzczNTYwIGU2OTBiNzM2YWY0NzgxMzc2Yzk5ZTVlMWJjNWFmYjc0NTFhZWVjOTMgcHkzaworNzM1NjEgYTU3OTkyYTYzY2FhMDdlODgxY2MyYzdmYWY3MWQxYjk4YjY2NWJhOCByZWxlYXNlMjYtbWFpbnQKKzczNTYyIGNmOWNlYjZmNWEzYTdhZjY1YmQ0N2E0MjhkNGFiZTU3YTE2YzViMzAgcHkzaworNzM1NjMgODg4MmY4ZmU4MjNjNjRiMzU3NDQ4YzIyOWEyYmYwNGI5MmQ5MjlmOSBsZWdhY3ktdHJ1bmsKKzczNTY0IGE2NjYxMzRlNmMwYzIzNGIwOTZmMjljNGNjZmMwZmY3OTRjY2I1MTIgbGVnYWN5LXRydW5rCis3MzU2NSAwZmYwYTM5NmZkYTgzN2IzMWEyMDU0YWE4MzA0MmJiMDFlYmUwNGZiIGxlZ2FjeS10cnVuaworNzM1NjYgMDE3MGM5NjFmMjkwNTRhZjUzYjg3ZTg5MjYxOWYyNDI3YTdkM2UwMCBweTNrCis3MzU2NyAyNTNkYzdiZTVkMWFiYjRjMTc5NWNlYzg0NWExNmMyODI3ODE4NDNjIHJlbGVhc2UzMC1tYWludAorNzM1NjggZDA0ODc3MzkxZTgwN2NmZjY2OGZlOWU2ZjQ4YjRjOTExMDhjMjNlYyByZWxlYXNlMjYtbWFpbnQKKzczNTcxIDE1MGUzZmViZGYxNzg1ZTQ4ZGRlNDEwZmQ2N2UwM2ExZGJlZWQzZmEgcHkzaworNzM1NzIgMTJlOTYwY2MzN2Q2MWVkNmQwNzcxNGI1ZmJhMGNkOGZhZTUzMzVmMyBweTNrCis3MzU3MyBhNjlhMDMxYWMxNDAyZGVkZThiMWVmODAwOTY0MzZiY2E2ZDM3MWYzIHB5M2sKKzczNTc0IDdjOWUxYzllYzVkZmY4MjBhM2UyNjFjZjkyYzRiOTVlNTY4N2RkMjQgcHkzaworNzM1NzUgNGFjY2M4YTNmOWFmZTg2ZmNkNDY2YzI2OWQwZjJlYzEwNTE2NTU2NCBsZWdhY3ktdHJ1bmsKKzczNTc2IDgzMWJlZWUyMmE5ZmNhY2ExOWUzODlhZDEwNTk3MzZlYzM5ZDIyMTYgbGVnYWN5LXRydW5rCis3MzU3NyA5ZDAwZmQwMDg3ZmY5MTY1ZGQ5ZmY5ZmRkNmY5ZDE2OWE2YjdiMTE2IGxlZ2FjeS10cnVuaworNzM1NzggYzNkNWQzYzhlNDliYThiMmQ5OTM0N2UxZWZiM2Q4N2RiMTUyNjA0MyByZWxlYXNlMjYtbWFpbnQKKzczNTc5IDI1ZDg1ZTQ0ODZhY2YxMDMzMWQ0MzY1ZGZjNDg0MmM5M2NmNTE4MzQgcmVsZWFzZTMxLW1haW50Cis3MzU4MCBhMjRmMDk2MDZiODMyNjk4ZTI2YWZiMzNkNjQzOTc1NTFmZDE3NjkzIHB5M2sKKzczNTgxIDc3ZmI3ZDNjNmRkZTdhNGY1N2M3MDRiZGZmMmIxMGE1NTE5MzZhYjkgcHkzaworNzM1ODIgOTYwMzM0NDM1ODU1OGNjNjVmNzM4NmI4Njg0YjBmM2FmOTk1YzhhZSBweTNrCis3MzU4MyA1ZjQ5ZWE4ZjU5MDhjZmRjZTQ4YjFiMzQxY2Y0ZjgxMjZkZDJmNTc2IHJlbGVhc2UzMS1tYWludAorNzM1ODQgYjY3NjE1OTQ1NjgxNTQ3NmU3OWJhOTI3M2IyNGRlYzkwNzk1YTJmNiByZWxlYXNlMzEtbWFpbnQKKzczNTg1IDRkNDc2ZjZmMWJlM2IyMTVkYjFkMWQyMDg3NDM4ZmQ4YTEyNjgxMTcgcHkzaworNzM1ODYgNmRjODg0YjJkZWE3YWFjMjM4NjA4NDI1Y2NjNTc5NzA1NWYzYTE5OSByZWxlYXNlMzEtbWFpbnQKKzczNTg3IDQ2Y2YyZTVhNTdkNGY3YjA5MGI2ZTg3YWJkNGJjYTdlNmMxNDg5ODAgcmVsZWFzZTMxLW1haW50Cis3MzU4OCBkYzc0NTYzOTc4ZGY0OTU0YzNhNmU2OTVlMzBiZTcyMjUxODA3OTIwIHJlbGVhc2UzMS1tYWludAorNzM1ODkgMTY1MWUyZjM2YWYxMmFlYWVkZjIyOGUzM2YzZDlkYTNiMjZiMjc3MSByZWxlYXNlMzEtbWFpbnQKKzczNTkwIDA3MGUxZTE1YzUxNjFlYjg4M2I2ZjMxZGQ4YmY0ZmExMTg4NTFkOGUgcHkzaworNzM1OTEgMmRhMDVmODBkMzY1YWU5ZjU1Zjc1MzE3ZWZmM2NlNThkNDk1MjEyZiByZWxlYXNlMzEtbWFpbnQKKzczNTkyIDFkM2JkZGZhODUwOTBjYzU2MGM0Zjk4N2EyMzg2NWEzODZmMWI1NGUgcHkzaworNzM1OTMgNThmMmIyN2M5MWExNGNiOTc1YzkwMDcyMTNhN2MzZDVkMmU3M2VhZiBweTNrCis3MzU5NCBlMjUyMmU0ZDJkYzhiZjJmODI0NTJhODVlODJmMzI4MmJlMmNhNjY3IHB5M2sKKzczNTk1IDViM2QwYmZjOGQyODkxYmM0MTBkZDJhMTY5ZjI0ZGFjZDkzMjZlOTEgbGVnYWN5LXRydW5rCis3MzU5NiAxZjYwNTgzYjYyODdjZjFjYWNlMjBkYTQ5OGVlMWE1Nzk3NGFiYjA5IGxlZ2FjeS10cnVuaworNzM1OTcgM2FhZjJlMDY1ZGIwNTQwMTgwMzcwNWVkNGJmYTNmZDJmOTAzMGRmOCBweTNrCis3MzU5OCBmNGVlYTBkMjE2NWRhZGNmMWU4YTExNGUzMmEyYTc3MjcxYzI1MzM4IGxlZ2FjeS10cnVuaworNzM1OTkgMWY0ZjRkOWVjNzkzMDdhZGExYWVkM2YxNGUwY2NjZmE4MGRiN2I4NiByZWxlYXNlMjYtbWFpbnQKKzczNjAwIGM1MzU3ODM2YzA3OWQ3NmZlZjhiODIwN2I1MTUwZDQzNDJkMWIyNTggcHkzaworNzM2MDEgYWM3OGVlZWI0NmMyOTVmMGI2NWI5Y2I4NzYzZThjZDRmNjBiNTQ0YyByZWxlYXNlMzAtbWFpbnQKKzczNjAyIDEwYTIyOWM4YmVhZGI5NzZlZjFjMWI3MTg3ZTkwY2YwMjBlOWQ3MTMgcmVsZWFzZTMxLW1haW50Cis3MzYwMyA1NThlZDcyZDRkMzNiYmMzODYwMTY1OWFiNjMwYmE1M2I0YmVhZTI2IGxlZ2FjeS10cnVuaworNzM2MDQgYzQxZmUxMzNkODg3MzMwNTJlYWU2OWI3MTliOWY2MTEzYmVjZjhiNiBweTNrCis3MzYwNSAwOGQwNTg1NjIxNGEzNTgxY2I3YWU2ZTEzMjY1NWUxZGZkMTlhZTZhIGxlZ2FjeS10cnVuaworNzM2MDYgMTE3ZTg1Y2JmMTY5YjRiODA0YjFjMDRiNWQ4MDA0OWQwOWQxOGQ4OSBsZWdhY3ktdHJ1bmsKKzczNjA3IDU0ZWQyNzkxYmIxNWI4YzcyZTA1MzE5OWUxNWUwMDFkMDhjYzBkNzggcHkzaworNzM2MDggZWUyNTNlYjZmMDhjMDQ5MjBmYjIyNWM2ZmI5MmQ2N2I3YjIzYjczMSByZWxlYXNlMzEtbWFpbnQKKzczNjA5IDZlOGQ2MzM0NGQzZTMwZDk3YzgxMGE2YWQzM2NlOTJiMGRlMTk2YjIgcHkzaworNzM2MTAgNGEyMjVkZTg5MjMzNjI3Yzg1MWUyMzIyMzNiMDcyMzc3N2E2ZTQwZiByZWxlYXNlMzEtbWFpbnQKKzczNjExIDU0NGM1YmFkMTYwNzdmYWRkZTA5ZmJlNWMwNTNhNzBkYjY1MjY5ZTEgcHkzaworNzM2MTIgMjYwMmI1NmFkMDJkYzY4MjA3MjkxNTc4OTQ4MjU0OTllMDkyOGRjOSBweTNrCis3MzYxMyBiNTVhNzhiMzliZDVlZDZmYmM5ZTIzNDZjNmFlMGZmNjZiNzQxMDAwIHB5M2sKKzczNjE0IGRlODY2ZjQ3ZDM4YTg1N2Q3ODQyZGJhMGVhYWI2ZTFjY2JmODk2ZmEgbGVnYWN5LXRydW5rCis3MzYxNSAzNjg0Nzg4NTlmZTNhYWY5YzI2MzMzZGYzMzk4ZTM4ZWFiY2ZmYjUzIGxlZ2FjeS10cnVuaworNzM2MTYgYWE5NTBmNzk2MmZkYzZhNTM2ZmUzMmQ3MTgxMmI0YjM4MjJkMThkZSBweTNrCis3MzYxNyAwYzMxOWUwM2Q5YTEwYTllZWNhZDJhM2M2OGRjMWUwM2U2MGFjMTU1IHB5M2sKKzczNjE4IGM5ZTY1ZTQ5MzY1ZGMzOGJkNjc4OTA0NGU1MTU2NTBhMmY1Njk3YmUgcHkzaworNzM2MTkgY2I2MDBlMDM0MzdkNjQwZTFlMTg4NTNkNGZmMmQ3NjYwMmNiZjU5OSByZWxlYXNlMzEtbWFpbnQKKzczNjIwIDY1NDQwNzc0NmJlMGE4ZjM3YTc4ZmIwOTE3NjE4YWRhOTYxZjk0MTcgcHkzaworNzM2MjEgOTEwOWI0MjJjMTM4ZmM0YmVjMjIyMGZkMzNlMmZiMmZhNmEyYmJjYSBweTNrCis3MzYyMiAyMjI4OTE2YWI0Nzg4ZjlhZTllYmJkMjk3NTA2MzUyZDFmMjk2ZDdjIHB5M2sKKzczNjIzIDFlNTU4OWExN2NmMDdlZDk1ZTk0M2RiOTQ3ZDM0ZjMzNTVlNmQ3MzggcHkzaworNzM2MjQgN2MyODdkMzAwMjNjMzU1OTAwYTIyYzc4MDBhM2E5Njk0YmRkYTExMiBweTNrCis3MzYyNSBmOTRjMDlhYTQ0NDQzYmFmZGVhMTk5NjAzZWFjMjA5NDY3MTkzMDliIHJlbGVhc2UzMS1tYWludAorNzM2MjYgMDcwNGYxNWI0NjgyNzFiNjA5Y2E0YTRhMDAxYzI0Mzc1NzUwMjkxNCBweTNrCis3MzYyNyA0MTE4ODRkMDFmOGIwZjk2YWQ0ZDgxMTE4OWE0ZmJhM2FlZjQyYWRmIGxlZ2FjeS10cnVuaworNzM2MjggNGRiNGFmMGNmODJjNWI4YTA2Y2ZiNTYyY2ZmMGQwOTg2YTczOWUyNCBweTNrCis3MzYyOSA1YzcwMmE0ZDc1ZTQ0NWQ1MmY2ZDdjZjMwOGY2Y2NmMDYyOGRiMzkxIHB5M2sKKzczNjMyIDY3NmU3NGMyMGM2ZWEzZDY1ODZiNDdiNGUxZGY0ZDZjYTFiZDM3OTMgcHkzaworNzM2MzMgMGNjMjFjOTc1MWYxNDc1ZDU0ZTA4ZTdlOTE2MDM0OGM2MDViODQxMiByZWxlYXNlMzEtbWFpbnQKKzczNjM0IGRiOTFhMDQ1MzA1MGMyOGQxNTRkNDZkZDU2ZTI2NWQxYmRlMjZjODMgcmVsZWFzZTMwLW1haW50Cis3MzYzNSBiMzJkMTM2ZjNlMjAwNGU3OWU0ZDZkYWJiYTIxZmZlZGQwNWVjMGYzIHB5M2sKKzczNjM2IDFhOTg0NzIzNDBmYTBkODhhZTMxMThjMGIxY2NhYjdiMmNlYTk0YTggcHkzaworNzM2MzcgZTMwMjVhNGMwYWQ3ODUzM2ZhNTI1OThjYmNkZGZiNjM0ZWE3MTA4ZSByZWxlYXNlMzEtbWFpbnQKKzczNjM4IGZmZDdjZjVjNzI4NWY4OWQzYTBmMmZmZGRiMGE2YWZjZmJiNzAzNzAgbGVnYWN5LXRydW5rCis3MzYzOSA1MmM0OGRlZGU1Zjc3ZjViNjA1ODg4ZmQ4OGMzNDU5NDZiMjRjNmY4IHB5M2sKKzczNjQwIGFiOTFmYTVkMGM1Y2MyMjI1NTllNTUyYjY3MzhlYTMyNGIxYzhlNmUgcHkzaworNzM2NDEgZDk0YjNlZDVkNTM2NWM0NzQzMTg5NmY4Mzc5NDY0NjFlNGM5YzMzNyByZWxlYXNlMzEtbWFpbnQKKzczNjQyIGE1MTFmZTUxNjZmZDc3OGRhYjY2NzAwMjA5NDc5YzRlYjllMzlkN2IgcHkzaworNzM2NDMgZDc0OTZjYzEwZGZlZWVhMDcxOWQwNjE5ZTQwOTU1YzhiZjIxNzg2YyByZWxlYXNlMzEtbWFpbnQKKzczNjQ0IDBmN2RjNTcwNGM1OTA2NTk0ZWE2ZWRiODkxNWRjYjUxN2FiZDgwZTMgcmVsZWFzZTMwLW1haW50Cis3MzY0NSBmNDdjZTExZTA3MmI2MTU1Nzg1ZmEyNzg4MTI3MGIwOWZmNzhlMzJhIHB5M2sKKzczNjQ2IDY2Y2M1MDg5MDg5NGMxM2ViMTk2OWU3NjUwOGY0MTVmNDE1NGI1NDAgcHkzaworNzM2NDcgNTYzY2M0ZGNjNzAzMjkwYjcwYTkyYWQwZTRmNDg0MGQyYzRiMTdmZCBweTNrCis3MzY0OCA1Mjg0MGJlNDI1MzBmNzYzMDdkYzQyOGNkOWI1YjM5MmY2NzlmYzgwIHB5M2sKKzczNjQ5IGEzN2JiNTlkNGI1M2E5Mjg2ZWM3ZjQ2M2FlM2MyZjBmYmQ3ZDFmYWIgcHkzaworNzM2NTAgMDljNDRjOTMzOTQyYjQ0ODhhNjA5MzQwYmRhN2QxM2MyODJiNWViZiBweTNrCis3MzY1MSA0MzY5ODIyNDE0YzNhYmJjMDczMDQ0ZGRhYzQ0NzlhYjc2N2JiMjhmIHB5M2sKKzczNjUyIDAwODAwMjhmNWNhMDAxMjNlZjEyNDAyMTkwNzVkMzJiMjFjMjU0ZGIgcmVsZWFzZTMwLW1haW50Cis3MzY1MyBhOTI1MmI4ODQ3ZjA3ZDc2NjMxZDE1NDYxN2EwMGFiMjJhMjIyNjg0IGxlZ2FjeS10cnVuaworNzM2NTQgZGNmNzEyMWVkYjJlODVkMDBkZTAxNjI4OTRkMmNhYmU1ZmFiM2U4NCByZWxlYXNlMjYtbWFpbnQKKzczNjU1IGZkYzIxMGE4YTMyOGUyNWNlYTE0MTNmOGQ1MTAxNDI1YzMyZTg1NzIgcHkzaworNzM2NTYgM2Y0NjY4YjQ5ZjExZTM5YmRjYTliMzdlZjVhNjgzZmYyYWQ1MWRiNiBweTNrCis3MzY1NyA1MjBmMTMxMGFlNjEzOTAyNDhkM2VjZmRiNjAxZDY4N2YyZmE3NzVlIHB5M2sKKzczNjU4IDUyN2JhZGUzMDQzYjIzYTc3YjdkNjEwNTNkMTFmZWQ4MzUyZTI5MDUgcHkzaworNzM2NTkgZDUxMDE3ZGNiYTI0N2Y4OTUxZmFiYTM2OTA4MGQ0NWQ0OGJkMjc3ZSByZWxlYXNlMzEtbWFpbnQKKzczNjYwIGYzZGFmZmQ0Y2IyOGM2MjhlMmY5ZjU4NWZjN2UxNzQxYWIzNGI2ZDEgbGVnYWN5LXRydW5rCis3MzY2MSA5ODI5YjQyMzk5ZTU2ZDliMmFkNDA0YzNhN2VkNTRmMjg5YmYzN2VlIHB5M2sKKzczNjYyIDUwODgwNjRkNjE3MDY1ODZmNjhhYzUxY2ZjMDk5MmQ2Y2M0NWFkMzMgcmVsZWFzZTMxLW1haW50Cis3MzY2MyA3MDQ4OTQ4NjQ2YjA4N2VmMDNiYTQ1MWVhZGFlMjlhODk4NmUzOWYxIHB5M2sKKzczNjY0IGM0NWUzMzEyMzhhZTc5NmFlYjBhZjhmMzcwZGM2YmRiMDMyNzVjNTAgcHkzaworNzM2NjUgMTY0ZDY0YjM5YWMwNmMwMTg3YmY5NmI3YzMxYzkwODY0MjUwYTk4NSBsZWdhY3ktdHJ1bmsKKzczNjY2IDdlY2MwNzVkMTcxZjdhMjFjNWQ0MjA2MzViMjAxNjQ5YWE2YzIxNjkgcHkzaworNzM2NjcgMzgwYWY5ZTgwYzJlOGVmZDhiZjZiOTliOGM2YmRhZmVmZmE5YWIzZiByZWxlYXNlMzEtbWFpbnQKKzczNjY5IGE2NjRhNDQ0M2EzOTQ4NDUwYWRiNGVkNGY2MDU2MTNiMTk2MmEzNzYgbGVnYWN5LXRydW5rCis3MzY3MCA2NWFkYmE5NWQ3ZTBlNzNmMmM3ZWU3ZjM5NjVkZTY4YWJjYzQ5NTZkIHJlbGVhc2UyNi1tYWludAorNzM2NzEgMGQwNTVhMDYyY2NlMWUwMjE4MzczNzVmZjVkNTY4ZDE4YTQyNjNjNCBweTNrCis3MzY3MiAyOTdmZGVhZjU4MjIyNTAwOTMwMjkzMDY0MDgxZTdjZjUzZGFiODM1IHJlbGVhc2UzMS1tYWludAorNzM2NzMgZGI2ZDJjZTM4MzBhZjZkNmE0NWNiNjQwNDMxOWY4MDIzOTY2ZjQ1MiBweTNrCis3MzY3NCA5NDYzYTEwMjUxNWYzZDM5OTJjM2RmZmQ5MDQ5MmY2NGE1NTczMTViIHJlbGVhc2UzMS1tYWludAorNzM2NzUgNGUzNTU2NDUzZmJjY2I2OGRmMDk4OTgwN2I5YTkzMTk2ZTc5NDcyZCBsZWdhY3ktdHJ1bmsKKzczNjc2IGE3OWY3NGQ2ZjViMzk1MDg2Y2EzMjM5YzZlODUxNTIzMDNlZThlYTcgcHkzaworNzM2NzcgNmU3YTE2YTY0NDJmNmM4NDNiNmVhOTlmMDQ0OGUxYzE3OTNlNmRmOCBsZWdhY3ktdHJ1bmsKKzczNjc4IDhmMjNiZDEwOTJmYzI0ZjAzNmI5MTgyYzJmNTliNjdhNWE4Nzk2ODkgcHkzaworNzM2NzkgMWI4YTAxZGM3ZjQ1YTRjOGQyNDA1MmUxNWUwODRhOWIyZTk1NzE3NiBsZWdhY3ktdHJ1bmsKKzczNjgwIDYyOTY3NDQ0OGQ4NGZiYmYyZDljMjQyMDE1MDFhODRjNWEyZjlhOTkgcHkzaworNzM2ODEgMjEwYTUxZWZkYzgyNjcwZDkwZGU0YzY4NWNhNmZlODU2NWY2NTUzMyBsZWdhY3ktdHJ1bmsKKzczNjgyIGEyNzU4M2M4MzZiMjI4ZjMzMmQ0MzRhNDZlNzFlOTMxY2U0ZTE4M2MgcmVsZWFzZTI2LW1haW50Cis3MzY4MyBlMGQyN2I3NmEyZThkMTQ0ZTMxODNhYzQ5MDQ3NWQ1NDMzMDA5ZjY1IGxlZ2FjeS10cnVuaworNzM2ODQgNzljMmVkNjFhMDI1M2QzOTk0ZDE4OTYyYTYwNzk0OGQ3MTI4NmM3YiBweTNrCis3MzY4NSA1MTM5ZThiMGYyMWM3MzIzODFkODg5OWFlZGU2Y2IxOTBiYmZmZmIwIHJlbGVhc2UzMS1tYWludAorNzM2ODYgNzBlZGEwMmM3YTk4ZTMxYmQ4MzRjNDdlZDhjNDU3ZWFjYjQ2MzA4ZSBsZWdhY3ktdHJ1bmsKKzczNjg3IGU3OGI5OWIwNDhiYWE4N2M3OGNjZjJmZDYyODYzNjQ5MDU0MWJlNGUgcHkzaworNzM2ODggM2RjYzhmYzQzNTRlZmJlOTI1NjkyNmJmNjg0Yjc4YThhZjcyNjhkZCBsZWdhY3ktdHJ1bmsKKzczNjg5IDM5MTVkZWQyZDYwZjFmYTZmNzlmMTU4MDc0YTg2ZGUxZmU2NzQzN2IgcHkzaworNzM2OTAgNjgxMDJlN2UxZWI3ZDMzNjdiZDhkOWQxNzI1NjE3N2VjNjY2NGU0MyByZWxlYXNlMjYtbWFpbnQKKzczNjkxIDQ4N2Q2ZjAxODQyYTkzZmRjMzFiZGFlNzBjYmE5Y2QxNTA5YTRmYjQgcmVsZWFzZTMwLW1haW50Cis3MzY5MiA1MTRjYWU2MmNjZGE1ZjA3MzZlNDU0OTUxYTkwZmU4N2M0NjMwZmNlIHJlbGVhc2UzMS1tYWludAorNzM2OTMgNTkxNzg1Y2VkY2M4YTVlN2NkMmZlMzFlYTU5MWIyNzUzMTI3OTU2ZiBsZWdhY3ktdHJ1bmsKKzczNjk0IDNkNTRjYmZkMzgwOTllZDQ4ZmNjNmQ1MGI0ZmM5YTM4YzlkNzIxNjggbGVnYWN5LXRydW5rCis3MzY5NSA3ZTM5MjAyOGEwOWVkYTAyZmNhODY5OWU1NDNkYzliYWFkNGU2NDY3IHB5M2sKKzczNjk2IDkzMjAzM2MzMDRlZjcyMDU0OTc3OTIwODdlYTM2OWMzMWFkYmUzYTIgcmVsZWFzZTMxLW1haW50Cis3MzY5NyBkMmIxZjVlZjJhZTNkMmRlYTAzYmE2ODYyOTVkNDMzYzg5M2Y2ZjE0IGxlZ2FjeS10cnVuaworNzM2OTggMDFlMTI1ZDMxOWQ0ODE4MDNkMDZjNzcwMzE5NDQ4NmRlZmQxNDYxNyBweTNrCis3MzY5OSAyOWZhYzg4NDg0ODlmZDY2YmJkNzdkMDI5NDFiM2U0ZjM4MGNkNmEzIHJlbGVhc2UzMS1tYWludAorNzM3MDAgZDNkNmNjYzlhYmI0MTM3ODRlZTRhNDNlN2RkYWQ4NWVlNDA4Y2EzMyBweTNrCis3MzcwMSBjMDY1ZjMzZDljOWNmOWI2YWEwNzAxNDRmMTExMmZjOTViNmViNjg2IGxlZ2FjeS10cnVuaworNzM3MDIgNWI2NjM5MDc1YzQ3OWNlOGZjMGM1YzRhNWJmY2UyYTFmZTkyYjIxMCBweTNrCis3MzcwMyAzMmY3MTEyMGVhNTUwNDRmODMyMWVmZjBiMzc4NTJmNzFhMjU4MjY3IHJlbGVhc2UzMS1tYWludAorNzM3MDQgMGFlMTIwMmU1MzYyMGU1OTRjODQ3ZjY5NTM0NzI4YzVlYWI5YmI3ZiBsZWdhY3ktdHJ1bmsKKzczNzA1IDQzZmVjYzM5NDM3YjMyY2UzMWMyY2I0YzUwZTQ2ZTkyNzA5N2U1ODMgbGVnYWN5LXRydW5rCis3MzcwNiAwOGI3NjI5MzQ0ODhhMjU4NWNmMWE4OGE5NjZiMTkzYzE1ZThiZDllIGxlZ2FjeS10cnVuaworNzM3MDcgODQ4Yzg2ZjRiZWQ2MDYwYmVlZTFhYmQyNGIwYjcyYWVlZjQwZGVmNCBsZWdhY3ktdHJ1bmsKKzczNzA4IDcwYWRmMGY2OGZiY2ExY2U3NzhmM2RjMDEwMWQ5ZGUzZGQ2M2M4ZDcgbGVnYWN5LXRydW5rCis3MzcxMCAyZmFmMmZhMmE0MjM1NTczYTVhMjY5YWYyZWVkOTVlOTA1MzQ0Njg5IGxlZ2FjeS10cnVuaworNzM3MTEgOTlkNTJkOGFkMDI2NmVmNmE0MGNhMTMwNTMxMjVlY2EyNzJjZjgyZiBweTNrCis3MzcxMiA0ZjkwZGRjNmMzYjY0YWM4MTg4MDdiM2I4YmQ2NTM4MGQzNDdkMzcxIGxlZ2FjeS10cnVuaworNzM3MTMgMzgzNjk5ODQ1Yzk5YjFiOTM3MTcwNjMyMTZmYzkyN2Y0Y2QxYzlmNSBsZWdhY3ktdHJ1bmsKKzczNzE0IDY3NjhiMjM1MGM1NzZhNjZkMjJkMzdiYTI4YTlkZjIyNmZlNzNhOTQgbGVnYWN5LXRydW5rCis3MzcxNSBhZGY2NmI1MjAyMmRhZDU4NWE1NGJkNmY0MWY1YzA2MWMwODYxZGMyIHB5M2sKKzczNzE2IDNlMDAxZWViODM4MWI5MzYxYTM0NTYwZTIwY2Y2NDU0ZDMzNTE0YzEgcHkzaworNzM3MTcgZTg4Y2Q0MmZmMjgyZGJjNmNlYjJlMmE4ZTE1M2FjNTJlMjI2ZWE4YSBsZWdhY3ktdHJ1bmsKKzczNzE4IGM0MGQ2ZmVkNmI2YmE1NWUyY2ZmYzlhNTkyYjU5ZjkyODhlZDMxNmMgcHkzaworNzM3MTkgZGQ0NzBiNzEyOTAxNDczNTZlNjBhMmE5MzM3M2Y4OTJiMDY1NDE5MyBweTNrCis3MzcyMCA2ZDUwNzVlY2MxNGMwYTMzOTY1ZjY3NzUzOTQ2MWJkMWFlNTNlNTVkIGxlZ2FjeS10cnVuaworNzM3MjEgMWM3NjkyZDI1MDlmYTAxMGQ1ZTE0ZDA3ZDNmMGJkNzNlZTYyZjhmZiBweTNrCis3MzcyMyBmMmI2NWJkNjdkZjI1ZGE5N2EyYTM0YzQwZjIwZDY5NWE3NzE3YTc3IHB5M2sKKzczNzI0IGVkMmEzMzYyMDRkNmFjM2FhMTdmZTkwNmU4YmZiODUwMmZhODhkYWYgcHkzaworNzM3MjUgNTUwMmYyNTVjMjdjZWE1NDEzMzYxMGE5YThmNjkyMzI2MDBlMjYzZCBsZWdhY3ktdHJ1bmsKKzczNzI2IDc2NTRmYTg1N2IwM2MyYWI2N2I5ZDQ5OTZjNDQ4MDIwMjQ4ZDRiZjkgcmVsZWFzZTMxLW1haW50Cis3MzcyNyA5MjMwYzNhODBkY2FkMzhlNWIyY2M2NWU3ZjA3YWY2N2Q4NTMwNDY1IHB5M2sKKzczNzI4IDcyYWQxMTk3ZjBmZjk3YTgzZmM0NzVlNjM3N2Y2ZWYwMTYyNmIzYmYgcmVsZWFzZTMxLW1haW50Cis3MzcyOSA0YjYyNzk2MWI0NDczNjM5Zjk0ZmZhMmIzNmNiMGFlOGRmZmU3ZjI5IHB5M2sKKzczNzMwIGEwN2ZkNDdkZjc2YjMyNjVlYWVjYzk4Y2I5NGZiMDNiMGVmNzQ4MGYgcHkzaworNzM3MzEgZTNmYTJkZGJiM2EzMTUwOTAxMGNmMzU2OWJjYTUzNWY4ZjJhODc3NCBweTNrCis3MzczMiA3ZTQyODMzNjJkMjc3ZmFhYzNlMDZlZDVlYTA5OTllMjdkZjBjNTA3IHB5M2sKKzczNzMzIGU4MDg1OTQ2MWRlOGNkMGM0YWI5NGVmZmRmNmNjZjNjMTgyMjNkMzkgcHkzaworNzM3MzQgYjE2OGRjY2VlNjAyNjQ0YWEyNzY2NzA4OGY3MDllYjBmNzRiZDVkZCBweTNrCis3MzczNSBjMjQyNzBmNTQ1YjhmYTZmYjZlYTcwZTYxODRlNjBhMzYyYjM0MThkIHB5M2sKKzczNzM2IDQzZjIyNWM3Yjc3ZWM0NzM1ODUwZmE5MTdiZGFkYzIzMTVjNjgxMjMgcHkzaworNzM3MzcgOWNkNzlkZWU1YmNlNGJlZmU5MTNhYzlmODA4YzVjYjE4YzA3YzdmZSBweTNrCis3MzczOCBlMGVkNjI3ZWE2Nzk0ODU0NjMzNTJhMGYwNjk4YWM2OTUwMzExNzE5IGxlZ2FjeS10cnVuaworNzM3MzkgZjBlZWFkZGFmODNhNGE4ZmEwYWQ1NWI4YTQ3YmI4ZTQzMTg5MTkxNCBweTNrCis3Mzc0MCAxNTFiN2Q1MzZiNWM0NWJiMjM0NWZkNzlmZmU3OGQyYWQ4Nzc1MzQxIHB5M2sKKzczNzQyIDM2NmM4YTRlNWE0NmEwYTFjNzFiMmRlOTRmMjA5MjQzOTUzNWUxZGIgcHkzaworNzM3NDQgNzRmYzQ3NmZlNzI4MzNkMGYxNTQ4ZjljNmFkZWY3ZTk1ZGI4MmJmZiBsZWdhY3ktdHJ1bmsKKzczNzQ2IGYyYTUyNmNjM2YyYWYyNjc1MDc0MTExOGZlNTg3ZWU5Nzk0YTc3M2EgcHkzaworNzM3NDcgNjUxODExNGZiMDYzODFmOTU3MmIwY2M4ZTcyNjBhMjRlYzBkZTA4ZSBweTNrCis3Mzc0OCAwYzZmZDU1NjE0OWRiMmY2NzY3ODZkNDYzMDk4MTBhNzY1NDMwN2UwIHJlbGVhc2UzMS1tYWludAorNzM3NDkgY2M0M2U5MjNlZjk2MTdkZWM1YTEwYzdjYmQwZTMxZTdmYmNiNjYxOCBweTNrCis3Mzc1MCA2MjEwZGVkZDJjZjc5NTQ5M2FjMmUyMjg5OTY1YWY2YjhkZDczMGU5IGxlZ2FjeS10cnVuaworNzM3NTYgOWJkZGJhNmU3NjRlNmQ0NTVjMTU1N2JjN2MzZTMzNGI1NmM5MzRlNiBsZWdhY3ktdHJ1bmsKKzczNzU3IDQ2NjMxNjNlNjQ0OTQyZTJiOTQ2OWZlYTUwODNiMjE2YTEzNjQ5MWYgbGVnYWN5LXRydW5rCis3Mzc1OCA1Yzg5YjkyNzNlNjExMmZlN2ZjZmI3NmM0ODE2ZmUyMzUxNDI0NDdlIHJlbGVhc2UyNi1tYWludAorNzM3NTkgY2E1M2Y4NmZlNjdkYjJjOGUyMWQxMDk4MGVhYTM3YzMyNjM3OWNiZCBweTNrCis3Mzc2MCA2Y2MxODVmNDJiZjY2YWI1N2NmNDFiYzM4NzZmZjY3OTQ0N2FjMzhlIHJlbGVhc2UzMC1tYWludAorNzM3NjEgM2JkZTgxZTdjOWY0MDNjZTg2MWEwYWMxYjU0NTEwMTIxOTU3OTJlMSByZWxlYXNlMzEtbWFpbnQKKzczNzYyIDVkNzQ5YmRkYTk3OWNhZDNhNzA3MTM3OTA3YTA5ZmE0ZmUxOWY2YmMgbGVnYWN5LXRydW5rCis3Mzc2MyAyYThkYWZjODQ1MjhjNzhlNzBlMjI1MzlhYTdlM2Y1NWU4ZTBjMjA3IHJlbGVhc2UyNi1tYWludAorNzM3NjQgN2Q1MTQ5MTU1MTVlNWM2ZDAzZWUyMmMwMDA3NzY1NGMxYzYyZDIyNCBweTNrCis3Mzc2NSBkYTY5ODA3OTk2Mzk5MDhmNGFkZTEyMGRhODU5OTc3NGU5YWQ0N2RlIHJlbGVhc2UzMC1tYWludAorNzM3NjYgMWQ0OGM3MDFmMDdjNjE0NmZmY2U3MTg3M2I5Y2U2Y2JkNmM5MzUwNiByZWxlYXNlMzEtbWFpbnQKKzczNzY3IGVkY2ZlM2I4ZjczNjE2NzE5NDUzNzY3M2MyMjdmYTQ0Nzk2YzkzYjkgbGVnYWN5LXRydW5rCis3Mzc2OCBmMTQ5ZjU3Zjc3ZDZmZTgwMDc4MjMxOTAwZjMxYjI1MDc2NzE0NGE4IHB5M2sKKzczNzY5IGU1YzgyOTBjNzk0OWJkNjAwYmZmNjI2MTE4NjZiYzQ4YTRmODdlMjQgcmVsZWFzZTMxLW1haW50Cis3Mzc3MCA3NGMwYTc4MTE0YWU0ZTIzMGRhMmU4YjRmMmEzZTE3MDhhYWNkMTM4IHJlbGVhc2UyNi1tYWludAorNzM3NzMgNTZjNjY0YjkxNTQ1YjgxODEzZmJiNWM4NTA1YTljZDRmOThmMjczMyBsZWdhY3ktdHJ1bmsKKzczNzc0IGZlYTU3MTY0YmQ3OTFjZWQ0NTJlNWYzMjc0YjA1ZDcxMTBiNmQwOGIgbGVnYWN5LXRydW5rCis3Mzc3NSA3ZGMwZDJjNGI1MjAyMzA2YjJlYjFjYWJhY2Q5MjhkZWE4ZTQ1MTBkIHJlbGVhc2UyNi1tYWludAorNzM3NzYgMDY1M2MxYTBjYjFlMTI2NGQ1ZTM4Zjk1YzFmMDczMjgwMTM2OGQ4MyBsZWdhY3ktdHJ1bmsKKzczNzc3IDE3ODM4ODNlNzZkNzc5OTMyYWZmN2YwNDkxY2QzNmUxZDQ3MjYwOTcgcHkzaworNzM3NzggZWE0NGExNjViOWNlNTQ2ZDIxYTlkY2VjOTYzZWU2NmIyYzc5N2NlZiBsZWdhY3ktdHJ1bmsKKzczNzc5IGY2NWQ2MjQ3MzQ2NWIxNTRjNTcwMTM2YjQ2OGFhM2ZjMTJmYjZmMGUgcmVsZWFzZTI2LW1haW50Cis3Mzc4MCA0NjZhNzFmYzYyNWMxZTZkMzE4MmU0MTIzN2I4MjAzYzk0ZDdlMDc3IHB5M2sKKzczNzgxIGZiNTQyZWQ5MWU3ZjU1YjgwN2ZhZTYxZTM2NmZlZmNkMWU0YjQwMzkgbGVnYWN5LXRydW5rCis3Mzc4MiAyNjI1NWYyOWE3ZTQ5ZDM3NzI5ZDc5ZTFhZWNjMTI4YjY2ZDI1ZDRmIHB5M2sKKzczNzgzIGNjNmI5MWMzZDcxOWI2OWNiNzdiMGY0MDQ5MDZjYzRjY2U2Y2E0MDIgcHkzaworNzM3ODQgZWE5MzNjMjRhZDEwMzNkODYxMzQ3MzBjNzljOTMwMjhhOGE3ZjI4NiBweTNrCis3Mzc4NSA2NWU0MWJjYmMyNWQ0ZDA2YzQwMGYzNDNmZTFkYTMxMzAyYzc5N2Y2IHJlbGVhc2UzMS1tYWludAorNzM3ODYgN2I3NThmODA4MzMwNWIzMzAyNzg2MmI0YTBhMTE3M2I5ZjgwMzIxYiBsZWdhY3ktdHJ1bmsKKzczNzg4IDUyMmFkOWVlZDU1OGU3OGFiZjBlY2MyODFjNGJhYTA0NDVhYzQ4YjQgcHkzaworNzM3ODkgNTZhMjc2Mzk2ZTE1ZjljNzk1M2EzM2NjYTMxMzhmMGE1NzAwNTEyZiByZWxlYXNlMzEtbWFpbnQKKzczNzkwIDg1Njc3YTJjNzg1NWQyMjE0MzRkNGIwYTUzMDFiYmNlODc1MmJhNDMgbGVnYWN5LXRydW5rCis3Mzc5MSBlZWViMzVmMjg4MTJjZTVlODRjMGI5ODZiOGJhODJkZWRkMmRjYjQ0IHJlbGVhc2UyNi1tYWludAorNzM3OTIgODk2ODY3NzNhNjE5YTc3MGNkOGYxZTA0MDE4NjdkMGRmMzg3YjBhNCBweTNrCis3Mzc5MyBkOGM4M2NjMGQzZmQ4YzU0YzdjNTcyN2FkYzgyYTA2Mjg3NzMwZjY1IHJlbGVhc2UzMS1tYWludAorNzM4MDEgYTUwMTU3M2MyM2YyYTU3ODY2MTg3Y2I3MWFmNjExNjk0OTBjNzc1MyBsZWdhY3ktdHJ1bmsKKzczODAyIDQyN2ZiNjMzYzRjY2VhZjY2NjMxOTdmNDVmZjE3ODQ3MDRlMTg2Y2IgcmVsZWFzZTI2LW1haW50Cis3MzgwMyA0NmE5YjE4YTFhMTc2ZTExMzIxM2VhYzRiMTQxZGE4NDE5NmIxODlmIHB5M2sKKzczODA0IDg3NzYzYzk3ZjY4ZWEzZjA0YTA5MDg5NzBhNGE0NmY2NGMwNTFiZDYgcmVsZWFzZTMxLW1haW50Cis3MzgwNSA4NTRjMDk0OGIwOGQwNDE4ZDZlMWU2NzY4ZWQ0ODFmNTBmZGYzN2ZhIHB5M2sKKzczODA3IDU5YzY2YWRlM2MyNjgyMmFhODhmOWYwMmQxNWRkMGZlNTgwOTg1M2EgcHkzaworNzM4MDggZmM2YWRmZmY5YTllZmQ1MjcxMTNhZWY5OWEwMmM2NTQ0NTAzMzBiMSByZWxlYXNlMzEtbWFpbnQKKzczODA5IDFjNTI5MjE4YmE5NjQ0NDAwMjM4Zjk2M2YxYTA4NDQ3Y2Y4YWJiYTIgcHkzaworNzM4MTAgM2EyMTQ2MjJjOTQzY2E0YThkMDBkMDQ3MzhiMTkyOTU3OTg5MTdmNCByZWxlYXNlMzEtbWFpbnQKKzczODEyIGY2ZmE1ZmIwMTBiZjdmY2FkNjliMTYyNGY1MmE4NzdmMjViNzgyYjMgbGVnYWN5LXRydW5rCis3MzgxMyAwYTQ2ZTBlM2ZjMDc0ODUzZDgyYzVlNTA2NGE0MjdkYWI5YjQ0ZDlhIHJlbGVhc2UyNi1tYWludAorNzM4MTQgN2IwZTc5N2Y2YjJjODZlYzMwZDNlNmI2MTcxODE0NTBmN2M4NmMyZCBsZWdhY3ktdHJ1bmsKKzczODE1IGIyYzc3Njg1N2RjNGM4NzNmZjU5ZWZjN2ZjODllNTM5OTJkMmJkNTMgbGVnYWN5LXRydW5rCis3MzgxNiA4ODQyZjRlMmZiMWI3NGRiMDY4ZGYwN2ZlNTk4NGY3N2NhZjY0ZWNiIHJlbGVhc2UyNi1tYWludAorNzM4MTcgZGZiOTg1YThkZTZmNjVjOTYzZWU0YzU3YTFjMGU5ZmY3MDZlOGJhZiBweTNrCis3MzgxOCA5YzlmZTlhYWZiYTZkNmQwOGRkZmZkMDRlNzdlN2Q0Y2NjOWRkYTM2IGxlZ2FjeS10cnVuaworNzM4MTkgMDFhZjdiNTJlMGRiNTllMzUyZjFjOGUwZDVkN2VlZGJjZDMxNDU4MyBsZWdhY3ktdHJ1bmsKKzczODIwIGM3ZGEwZGM2ZWIwYzZjNDQwYjJhMjFhNWQxOWQyNTk3MGI3NDNmZTIgcHkzaworNzM4MjEgOGE3YzIwNjZhOWIyZTYxNGQ1MjMzOTQ2M2E0MDU4ZWVlOTg0OTg5ZSBsZWdhY3ktdHJ1bmsKKzczODIyIDQ2MTc4ODNhYzFmMzNmY2VjNDBmYjdhOGRiNzJmNWI5ZTZjZTYwMzYgbGVnYWN5LXRydW5rCis3MzgyMyBjMmY0MjcwYmUzNjI5MmQ1NGY3ZTUzOWQ2Yzk1YjUxYzc5NDMyMmRiIHB5M2sKKzczODI0IDBlMzkxYmYzZWI5ZGY5Y2FiOGE4NjYyNTVhOTExMGU0ZGEwYmJhOTEgbGVnYWN5LXRydW5rCis3MzgyNSA5ODA4ZTM4ZmRlNzJiNmIzMmJiYmU2MWFmNDZkNTQwNTdjNjQ1YjI3IGxlZ2FjeS10cnVuaworNzM4MjYgNTQwZmQ0NjE2M2QxYzliZTRjNWIwMWJjMDQ3M2RhYjVhNTNiZTllMSBsZWdhY3ktdHJ1bmsKKzczODI3IDUyYWFhNzdhNWRiZmM3ZmNhNDkxZmFiZDg5MWUwYWY5ZDE5M2RjMzkgbGVnYWN5LXRydW5rCis3MzgyOCAwOGI1OGNiZWNlNzllZWRmOTY4YjNkMGI1MzAwZmQxNDY2YjVjYWJjIHB5M2sKKzczODI5IDA0OTEyMjdlNTQwZWNlNTlmNmZiY2U4MDcyMTMwNzhjYjU3YzU5MTggcmVsZWFzZTMxLW1haW50Cis3MzgzMCA4M2NlMzMyYTI4MzRmOWJmODQ3ZGQ3NDNlNmNjODhhNGIxZTVlOGZjIHJlbGVhc2UzMS1tYWludAorNzM4MzEgZjg4MjY5NmZkMTM0Zjc3MTc3NGJiMzNiYjMzODdhZmZkNGFiNmY5OSByZWxlYXNlMjYtbWFpbnQKKzczODMyIDA2YjM2MGEzM2Q1NzExZTMxMGYxOTI2ZDRhNjViMTUwYmE0ZDIyYzkgcHkzaworNzM4MzMgN2I5YWQ5YWFhOTAyNGMxNGY2ZjViNDQzNDU5Y2IxMWEyNzIxZGFmYyBweTNrCis3MzgzNCBkMTFkODk5YWFiMWQ4MGU0YWIyNzU4ZmVmZDVhYjkzNjBhODM2NmU1IGxlZ2FjeS10cnVuaworNzM4MzUgN2RkOGRiZDI3MDMzMzgzZWExYjcyNGIxODBjODk0NDE1M2Q0ZWE3MSBweTNrCis3MzgzNiA4NjhmZjM3ZjVhODAxMjQ3Njc4MWU5YjUwNGFmOGRjZmU3MTAyYjdlIHJlbGVhc2UzMS1tYWludAorNzM4MzcgMWRlYTdlZDY4NjdkN2M3ZDA4NTAyY2EyMDljZmUxNjRmNGVhMjA3OCByZWxlYXNlMjYtbWFpbnQKKzczODM4IDc4OTg3YmNmMWFiZmIwODM1NGMyNDI4OGFiZjFjMzgwMWE2MDk2ZjYgcHkzaworNzM4MzkgN2ZmMTQwNWNjYjY0YmI1MWM0ZTE5YzE5ODIzNzI1NTIyYTg0MWVlNCBsZWdhY3ktdHJ1bmsKKzczODQxIDQ0ZmNkYmI2MjAzOGIxMTVmM2U5NzFmZmU5ZjY0Y2VlZTAwNGMxMmYgbGVnYWN5LXRydW5rCis3Mzg0MyBmNzQyYzA4NzUyODg3ZDM4OGQwMDMwNTQ0NDQ5NDRiZTRlZjcwMzY4IHB5M2sKKzczODQ0IDRmZjRhYThkNjU4MzI5OTIwNzY4MzA4M2RkNjE2MmQ0MGU4MmZiNGUgcHkzaworNzM4NDUgYzIzMzYxNWIzNGFhYjhlNTA1N2EyZTg4Y2RkY2I0MDAxN2JiNTM2MiBweTNrCis3Mzg0NiA0NjZjYTk2YmUxODI0MDA5YTBkNGI3YTMzYTBmYWRhN2E4YmZkMTEwIGxlZ2FjeS10cnVuaworNzM4NDcgNzdlYmVhY2MxMDdhODA2MGU5ZjEyMmI1MmVhZTljMDM5YTgxNDZhZSBsZWdhY3ktdHJ1bmsKKzczODUwIDhlODE1NzQ0NWE1NTY1NzI0ZjI3NjYxZTFlNGVkMmIzNTE5NzJkYzYgcHkzaworNzM4NTEgYWI0MzRmMGRjYjE1ZDk4NGU5ZTYzMzNlMzY5OTk4ZDgxZmQ5MzUzZSBweTNrCis3Mzg1MiBhNzZiMzRjZmM4OTdjMTAyNmY3YmYwMGNmOTI0M2IxMTc1YTRkYTMwIHB5M2sKKzczODUzIGE0MGEyMjY2MWU1MDQ4N2QyYTczODc5OTM1NDBlYmFjMDg0YTYwZDcgcHkzaworNzM4NTQgYzZmMTM5MzRmNGM2NjliNDAzZTQ4MmQzYzNhYmMzNTcwYTQ5MDMyMyBsZWdhY3ktdHJ1bmsKKzczODU1IDEwYTZjYTJjMGNjYjI3MjdhMjU4NmZhOGY0NzFlM2FkNjM3OTE4NDkgcHkzaworNzM4NTYgMjZmNjBmZDQ3YWQzZmE0ZDQyNDgyN2EyM2QwMjNmYTBhMzE0ZTZmZCBweTNrCis3Mzg1NyA4NWRiNmE1NDNiM2U0NGJhZjBlNjE2OGMyM2NmMTZhOGU1Mzk2ZjczIHB5M2sKKzczODU4IDFmYzM3ZmVjYWY4ZjMzZjc3NzMwZWI4OGEzOTIyMjBmMjFmNDI3YWIgbGVnYWN5LXRydW5rCis3Mzg1OSAyNDQ0NmRjODdmNzNlN2RmMDdlMmZkYjY1N2ExZTEzMDUxYWE2ODhlIHJlbGVhc2UyNi1tYWludAorNzM4NjAgMDUyMmU1NzFjZTc0OTRmYTdmNzViMGI2ZDZhYmI3MzQzMzY0ZWM5ZSBweTNrCis3Mzg2MiA3YmI3NzU4ZTZkNjRiOGY5MGZmMjU3Y2I3NjhmNzNlM2M1YTU3MmNhIHB5M2sKKzczODYzIDQyNjM5NGRiYmNlZTIyZjg3MTFkZTY5YmRiM2U2ZDNiZDM5Y2FlZmIgbGVnYWN5LXRydW5rCis3Mzg2NCBiNDZhYmMyZjJhMWZiYWNhZWMwM2U5Mjk5OWM2ZmMxMDZhMDY5YzQ1IGxlZ2FjeS10cnVuaworNzM4NjUgZDFlZGE3MGIzODNlOWVlYmQzOWEwZTIxOGJlMGExNDI0YTcxZGEzZiByZWxlYXNlMjYtbWFpbnQKKzczODY2IGMyM2E4ZjFjZmFiOGZhY2ExYmMxMDYzZThiNDgxMDE5YWMwYTkwMDYgcHkzaworNzM4NjcgNDlmZjIzNDIwOTE5YjQxZWMwYjg3OTQwMjQ2ZmIwOWU4Mzk4NDIyNSByZWxlYXNlMzEtbWFpbnQKKzczODY4IDc0OWNmMDZjZDA3MDk5YTYwZTNmYjUwMDI4ZDBjZDE4YzM1YTA0YTUgcHkzaworNzM4NjkgNTljZjVmODA4YzI0YTk5OWUzNzUwYzhkY2FiNjg5NDMxYWIxN2RiZSByZWxlYXNlMzEtbWFpbnQKKzczODcwIGU5ZmM4OTQ3YzQ5YTU1NjM4YTllYTRjM2UzMjZjOWNkZDRhZmQwZWMgbGVnYWN5LXRydW5rCis3Mzg3MSAzOGQ2ZTRlNTFhZjA4OTUxYjBlOTZmODk2MDc5ZTUwZGNkNmJhZDY4IGxlZ2FjeS10cnVuaworNzM4NzIgMWNlZjdlNzE2MjQ3OGI4Zjg2ZmRmZWY5YWNkZGM0YTA3NWZhZmU3MSBweTNrCis3Mzg3MyAzMDYzNzE0ZmY5ZjMxYzBmYWI2YTE4MTdhMmY4NjBkYTZkMDhmYzAwIGxlZ2FjeS10cnVuaworNzM4NzQgNjM4ZWExMzRhYTgyZDcyYTJhYzIwYmFmMjE4ZTBmNGY5ZTgyMGJmZSBweTNrCis3Mzg3NSBkZTU4ZjYxMzg2YzNiNDllNTVmYzNkYzlhYTRlOGIyMjc2MjUwNTNmIHJlbGVhc2UyNi1tYWludAorNzM4NzYgNDE2ODEzOGMzNzFlNWQzNTEwNGY3Yjc1NjA1NzUyNGYwZDk0ZjBiZCByZWxlYXNlMzEtbWFpbnQKKzczODc3IDRlYTgxMzBlZTA5ZTg0YjQ0NDE2OTE3ZGExMmMxZDZjMTUwMjg1OTUgbGVnYWN5LXRydW5rCis3Mzg3OCA4MTAwMmM3NjAwYmQ1ZDMyMDE5ZWM4NjEyOTkwOGI1M2M4MWYzOTg3IHB5M2sKKzczODc5IGFkZmQ2YjczZDM2NDc0MWI0ZDg5NzlhMTA2NGY0MzhhM2Y0MWRlYmQgbGVnYWN5LXRydW5rCis3Mzg4MCA4ODBiNTBiY2ExYjE5MjJmN2QyYjRlMWViNDUzMDliODZkYjNiOWY0IGxlZ2FjeS10cnVuaworNzM4ODEgOTllMzBhZjQxMTY5ZjA1YTc1NjE1MmJmOTMwYWZmOGQ2Y2I2NWU4ZiByZWxlYXNlMjYtbWFpbnQKKzczODgyIGVlMTU2ZWM1ZWZiZjk2ZDAwZDU0NjBlZmE5N2NhMDAwOWFiZjRlZTUgcHkzaworNzM4ODMgMWY0OGNiZDQzMjI2ZDI2ZWQ1NjFmNzQ4MTViMTgxYWI4NTU5YmRlZCByZWxlYXNlMzEtbWFpbnQKKzczODg0IDdmYTIxYmRjMzQ4YjRmNmExYjdhODIyZjU3YjUxNDc4MzNhNTliOTQgbGVnYWN5LXRydW5rCis3Mzg4NSAxZmQ4MzliODMzMGExYjY0NTJhMDdjODRmMDE2ZjNhNTA2MWQyYWE1IHJlbGVhc2UyNi1tYWludAorNzM4ODYgZGU2YzQ4ZDczYjcxNmVlYWYzYmNhN2NjMGE1MzIxOWEzYjdkNTFmNSBweTNrCis3Mzg4NyBmYTA4MGM0ZjUzOWE5ZWE5OGI5ZWE0MDY0Zjc5OTc5NmI5ZDI3ZDk1IHJlbGVhc2UyNi1tYWludAorNzM4ODggODk3YmRlZDgwMDIwNmE2ZjU1MjNkMjE5MGM1YWMxYmYwMDBhM2Q4MCBsZWdhY3ktdHJ1bmsKKzczODg5IDhhODQ0YTViMTZkYmJmOTkzMjM0NDBiYzgzMzM2YmUzZGYxNGM5MzIgcmVsZWFzZTI2LW1haW50Cis3Mzg5MCA4NjBhMDY5ZDEyNmM5YmFmNjBhYTEwNWYxYzU5NWU0ZmMwYWQxZjkzIHB5M2sKKzczODkxIGIzZmI1ZTZiN2U4MmQ2M2ZiYzY3YTdlMWMyODlkZjJjMDY2ZDM0NmQgbGVnYWN5LXRydW5rCis3Mzg5MiBmMDJlNDcxMjE4Yjc3OTFkNDA5ZDUzZDcxYmFjMzBlZjU0ZjU3YzU0IHJlbGVhc2UyNi1tYWludAorNzM4OTMgOGJlZjNhMjY3ZTFlZTg0ZjNmN2E2ZTNjN2U0YjhhNmVlMmRjN2FiZiBweTNrCis3Mzg5NCBkOWIxOWIzN2Y4MWFlY2I4MzFhZjBmOTgzMTU0YWM0OWU4Nzg1OWIxIHB5M2sKKzczODk1IDI3YjUxNjI2MzI2OTE2ZTc0NzZhMTQyYWNmODBjMDdjNmE5YWQzYmIgbGVnYWN5LXRydW5rCis3Mzg5NiBkNjFjNGRjZjYxODk4ZGJiNzI1ZDkxMjYwNWEwMTAwOWM3ZWE5YTM3IHB5M2sKKzczODk3IGQ1OTkyNTRjMjAzYmM2OTdiNmJhYmNiMDJjZWRlN2RjNTBlZGU5NGIgcmVsZWFzZTMxLW1haW50Cis3Mzg5OCBiYTA0NTlmMmMwY2I0MDA1Y2RkYjA0MDZkODI0MDQ5ZGRlMmU1ZjljIHJlbGVhc2UyNi1tYWludAorNzM4OTkgYmU3MzZiNDkwYWIyYzhiY2Q1OTJhYWNiMzJmMmNjMjdiOWRlNTc3ZiBsZWdhY3ktdHJ1bmsKKzczOTAwIDQ2OGE0MGFkZjU2ZjVlM2Y0NTUwNzFkZjJjYjFlN2UzYTc5YWEwNDMgbGVnYWN5LXRydW5rCis3MzkwMSBjOTJiOTM3NzU1NjkwYjk0NGU4NjlhMTYyMTA3YWIyZTZiNDMxZjc2IGxlZ2FjeS10cnVuaworNzM5MDIgOWFmZWFlMGJhYmY5YzRmNjU4ZmIzZTNiNzIyZDU0ZjI0OTQxYjE3MCByZWxlYXNlMjYtbWFpbnQKKzczOTAzIDEzYzVjZjQ4OTc5N2M0NWI2YmFkODhiNmE0ZDM1MDUyZDJjMmQ4NWEgcHkzaworNzM5MDQgODI5MDUxOTE5OWVjMmZiN2EwOWVjN2Q4YTg2YzE4MDI0ZDEwMzE4YyByZWxlYXNlMzEtbWFpbnQKKzczOTA1IDRmMWIyYTQ1N2U4M2NlMTM0YTM2MGVlNmNjNjA5MjgyYmFmOGQ4NjUgbGVnYWN5LXRydW5rCis3MzkwNiAwZjA2NWI0OGFjZjk1MTI5ZDI3NzdlMmQyYTdhYzE3NzI3MzM0MDljIGxlZ2FjeS10cnVuaworNzM5MDcgNWY0NTM1MjI1ODE5YmVlMTQ5NTMzNzk5MDNlZjU1NTA4ZTI3NjNmNiBsZWdhY3ktdHJ1bmsKKzczOTA4IDVkOWIzMjMwMTgxNTQyMzg4ZjBjNjA1NjdlZTI4NDk2YmJmMmIzNzggbGVnYWN5LXRydW5rCis3MzkwOSBkYTJjMTQ3ZTkyOWQwYTFkMGIxYjA2ODEzODAxODMyOWUyNmY5Yzg3IHB5M2sKKzczOTEwIDVhMjhhOTVkZWMxOTMwNWU3ZWIwZmY2MTRiY2Q5OTAwZDZmNzdhYWUgcmVsZWFzZTI2LW1haW50Cis3MzkxMSA4YTc3ZWRlNGUxNzVhOGM2NGQyZjdlMDVjMWU0ZjgxZjAzMmU3Mjk0IHB5M2sKKzczOTEyIDRhZTFlOTZlOTM3NzRjMDdlZTQ0MWVhNTRjYWEyYmYzYjc5OTcyM2QgcmVsZWFzZTI2LW1haW50Cis3MzkxMyBjNDdlZjRlMTA3ZGY5MDhjNzE4ZTliNTE0ZmJkMWFkYTMwNmY2ODk3IHB5M2sKKzczOTE0IGI1M2U0MmU1MGM0MTUzMmM4YzkwNDMwYWE4Nzk2ZGQ4OTQxYjQxZDcgcmVsZWFzZTI2LW1haW50Cis3MzkxNSAzODk4ZDUyMGYxMDdmZjQwMWQ3ZDBiYmRlMzQ0Njk4MzY0ZTcwMzMzIHJlbGVhc2UzMS1tYWludAorNzM5MTYgNTYwOTM1MmZlYTEyMGU1OWQyMThlNTBmNjU0YjRmNWEyZTNhZmRiOCBsZWdhY3ktdHJ1bmsKKzczOTE3IGU4OWZhYWFmYTNlZWEyNDk5ZTJjN2QwMjFkM2FhZmU4YzRmZGYwNTkgcHkzaworNzM5MTggMGIyYWJhN2FjMWZhZjYwMDRkOGE5NWI3ZGMyMWIxZTkzMDY1YTQwMyBweTNrCis3MzkxOSBhZWRjMjIwY2M5YmY4OTExMjI5YmZlYWQ0NzJhMTQxM2NjYzhkNWZlIHB5M2sKKzczOTIwIDAxMTM3ZTNiOWViZThmOGQ1YWNkMDU5YTIxNzBlYzhhYWFiYzM2MmMgcmVsZWFzZTMxLW1haW50Cis3MzkyMSA4NzdiZDdkNTBkODk3ZjRlNmZmYTgyYjBmOWI4M2JiYmE3NzNjZmY0IGxlZ2FjeS10cnVuaworNzM5MjIgNmYwZTU5ZmFiNjJjZmYyNTdlYTc3YWY1MjI2NTc1MzE1ODE0NjkyZCByZWxlYXNlMjYtbWFpbnQKKzczOTIzIDYyNjQxMzI3MjQ2NDliYTQ2NTY0MzI2ODhlNWQ3YzIyYWFhYmQ3M2UgcHkzaworNzM5MjQgZDBiM2FmNTY1ZWFhNWE5MGVhZDRiOTVkNGE1MzRmZWI1Njg2ZGYyYyByZWxlYXNlMzEtbWFpbnQKKzczOTI1IGU1M2QwMzFlNTRkNDc1YzQwNjcwZTA0MTc4N2Y4YTMzMjMxOGMzMjUgbGVnYWN5LXRydW5rCis3MzkyNiAwM2I4NjYwNmNlMGEyYTc4YmM1ZTU5MWUwOWUzMWYzNjM5ZmFlYWYyIGxlZ2FjeS10cnVuaworNzM5MjcgOWI1ZDI4MThlMmQwZTcwMjc3OWM4NDFmODQ1YmFjNWU2MmFhMTA4MiByZWxlYXNlMjYtbWFpbnQKKzczOTI4IDEzOTM0N2IwMGMxOGY3OWMwMTY5NjllZDFjZjgzNjhmYzc0Y2VkYTIgcHkzaworNzM5MjkgMmZkNzRjNTAyNjAwMzY5MTExZGZlMDJiMWEzNjlmYTJkZDc4Y2U4ZCByZWxlYXNlMzEtbWFpbnQKKzczOTMwIDE0Y2QxOWZlYWYyMGQ4NTkwZTVkNmQ3Y2JlMmFkZGE5N2FhMzAzMWQgbGVnYWN5LXRydW5rCis3MzkzMSBjZGRkNTE2NGRiMDNjYTc0ZTBiM2FkYTA0MmM2Mjc1MzZmZjRhM2FiIGxlZ2FjeS10cnVuaworNzM5MzIgYjFjNjM3MmE4MDkyYzNlYjg3MWM3OTVhYTI2YTBlMjM1MTc3NGY4MSBsZWdhY3ktdHJ1bmsKKzczOTMzIDIyMTcxOGU3NTdiYWZhZDA1YmZlZTUyYmQzOWYzNzlkOGU2MDkyMTggbGVnYWN5LXRydW5rCis3MzkzNCBmZWFhYTdjYzAyZDEyMmNmMDBiZTE5YjljOTRhNzI3ZTc5OTVhNjU1IHB5M2sKKzczOTM1IGU1MzZhM2IzYThkMGU1YjBhNzMxMjVmMmFmMzY2MTFjNGQxMmRiZTcgcmVsZWFzZTMxLW1haW50Cis3MzkzNiBlMjAwZWU5Y2NjNGJlZDYxMjZiZjJkZDZjZTYzYTNhNWRiOGM1OTJkIHB5M2sKKzczOTM3IGFjYWEwYzg3ZDQwMWYzNTkzYzNjN2QxMDM5OTAxNGFjNzM4OWNhYTkgbGVnYWN5LXRydW5rCis3MzkzOCA3YjI0Njk0NWZjOGNiMGRiNTZmNjJkMGU2ZjRmNDg3MmMyZGFmNTQ5IGxlZ2FjeS10cnVuaworNzM5MzkgYjI4ZGFkZDIwZDliN2I0OWVkMDZjNjk4MGQ5YWM2MGFhMjRkMmY1YiBsZWdhY3ktdHJ1bmsKKzczOTQwIDU5YzM0YTkxYzU0ZDlmZDBjNDk4N2JiNTEzZWUzNDZkMWUyYjVkNDcgbGVnYWN5LXRydW5rCis3Mzk0MSA4NDFhMWU2OGI0ZWRjY2NiMjE4NGZiY2IyMWM1ZjNmYzM5OGUwOTcxIHB5M2sKKzczOTQyIDY3ZjVlMDFkNWE2YTcxZTI1Nzg3NmRmZTA1YzViMTY4NWM2N2VkODQgcHkzaworNzM5NDMgODA2NjE2MDhkNGUyMDU3Y2NkYzQ3NDdkMTIxOGJkMTM1ZTUwMWQ5YyBweTNrCis3Mzk0NCA0YzVlMDc1ZjU0NzNkYTU2M2NkOWVhNDY1NjcyMmFmN2RiYjk5MmU1IGxlZ2FjeS10cnVuaworNzM5NDUgZjNiZjA4MzI5ZjA3OTY2YjVjZTA5ZjQyZmYyMDU2MDJkZjZiZmE3NyBsZWdhY3ktdHJ1bmsKKzczOTQ2IDgyMmEwMmI3MWJiZWIyYzM3YjdiOWM4YjQ2MTQwODVhN2ZiMjM4ZDEgbGVnYWN5LXRydW5rCis3Mzk0NyBjNjRmOWRjM2M2YTQ5ODViMzk0NWQ0Nzk3NDAyM2QzNGE0MzdiNDc0IHJlbGVhc2UyNi1tYWludAorNzM5NDggNTdiMzU5MWYwY2IyMzJhNDdmMjU4N2E5NzBmMzE3MTVkZjZlZGQ5ZSBweTNrCis3Mzk0OSA1NmNjZWYzNDIwZTc4MTMzMzYwOWI5MTU2MzBmODczYThiNzE4ZTQ0IHJlbGVhc2UzMS1tYWludAorNzM5NTAgZDI3ZmRjNzAzNzljMjZhMTA5YWM2NmVlZmZlYjYzMWY2OTRmMGJkZSBweTNrCis3Mzk1MSAwYjUwZTY4NDFhODFiZGJlOGU4OTZhNWM0OWJhMDc1ZDkwMDEwNWM0IGxlZ2FjeS10cnVuaworNzM5NTIgODY4MjAyMjVhNGQ1YWZiNzYyZGU5YWZkMDM2Mjk5ZDgwMDg1MDI2NiBsZWdhY3ktdHJ1bmsKKzczOTUzIGExYjc5Nzc4ZjIyZTNlMjRjYTMyYzU1OWM4ZjFhMDJmNWE3MjAxN2EgcmVsZWFzZTI2LW1haW50Cis3Mzk1NCAzZGFkZjM0NTNkMDU1MDlkNjhjNGUzNTg0MDYyNmQxNGRhNzcwZGI4IGxlZ2FjeS10cnVuaworNzM5NTUgOTNiNDhhYjkwZWFkMGU1YzVmNmFhNmJjNzYyZjMxYzJmY2Y4YjJlZCByZWxlYXNlMjYtbWFpbnQKKzczOTU2IDEwMjhhOTkxYjY4ZWMzZTZjNmNkYWYzODIwOTdlMDQ1ZjFiYTQ5NTkgcHkzaworNzM5NjEgMGM4MTI4NzBhOTc1ZWMwYjg2OTY3ZjFlOWQ0ZGU0NWE5MWQ3NGMwMSBweTNrCis3Mzk2MiAyNjMwYzA3NWI1N2NiMzU3Y2FhMzkyNGMwMDg4ZTQwYjYyMTg5NGU5IGxlZ2FjeS10cnVuaworNzM5NjMgNDkzYzdmOTUwYTJiOWI1YmE4MTVkZDU5NWZjMzVjYTM5MmNmZTAxNSBsZWdhY3ktdHJ1bmsKKzczOTcwIDg0OGE1YWM5MjRiOWI1MDA4YjAwNWY0ODhjNTEzNTJiY2U4NmFiYzkgbGVnYWN5LXRydW5rCis3Mzk3MSAyYTM5OGVkZWIwOGQ5NTNjNDM2MjQ2NzZmOTAzMjdiMGVhMTVlMGVlIHJlbGVhc2UyNi1tYWludAorNzM5NzUgZDBmMjI1ODY1YmU2NTYzY2I4MzBiMGQyYTA0NGQ0ZGE2NzI1MDYyMyBweTNrCis3Mzk3NiAzMTg3NjNlY2M0YjMwNDNhNjExOTZlMTgyN2I3ZTk3ZWNlYzczNjE1IHJlbGVhc2UzMS1tYWludAorNzM5NzggNTdlOWYyZDM2N2E4MWQzNWJkN2IyZDBhNjBhMjYxYWZhZTkzMjQwZiBweTNrCis3Mzk3OSBhY2RhNjkyYTg0N2ZjZTllOTUyNzc2NWI2MTAzYWJjNTlkNDU0MTRjIGxlZ2FjeS10cnVuaworNzM5ODAgZjNiOWM1MGE3YWFkNWMwMGYwZDViMzI0NzQ4YjFjMDQ1YzA5OTJmNSBweTNrCis3Mzk4MiA4OGFjYzEwY2FhNmUxMWZiY2U5YWY3ZjQ5NWMxNDVmZWY4ZjJhYjYzIHJlbGVhc2UzMS1tYWludAorNzM5ODMgNWJlMDRlMjMxN2U4ZDEyYThiZTI4MjU3MmVlNzdkMjBhYTBkZWEwZiBweTNrCis3Mzk4NSAwMTBhNDhlOTQyMjM3MjI3ZjA3MzMzMTVlMjExMzE2N2RiYTU3MTJhIGxlZ2FjeS10cnVuaworNzM5ODYgZDA3NmU2NWE5MGQ2YzE5Mzg1YTk1ZmU3OWNlZDg1YjNlNTRlODkyYSBsZWdhY3ktdHJ1bmsKKzczOTg3IDJiNjdjYjkyNWJiMTllODY5OWY0OTZlNDA4ZmFjZDQxMjhiY2E1MWQgcHkzaworNzM5ODggOTUwN2U0YjliOTg4NTg4NTI5ZDc1Mzk2YjkyMGNhNjBhY2QzYTM3NSBsZWdhY3ktdHJ1bmsKKzczOTg5IGI3NGUzOTI2MjgxNTEzYTIwOTIwMTZkZDRlZjY2YTZmMzY0OTBmOTAgbGVnYWN5LXRydW5rCis3Mzk5MCBiMWQzNGRmZmZlMmRlMDFlYzgwZDUxNDM1ZjUwNTgzNTk4ZWQ0N2E5IGxlZ2FjeS10cnVuaworNzM5OTEgZTE3MmE4ODY1MGNmOWFlNTcxNmRkYmQxZTdmZWI2NGZiZTUzOTViYiBsZWdhY3ktdHJ1bmsKKzczOTkyIGJkNzRlMmM5NzM0ODlhODZmMWRkODdjNDM3NGUwNDIyMDgxMTA5N2QgcHkzaworNzM5OTMgNGQyYjUzMjVlZTQ4ZTg1ZGMyMmI5MjhkYzQ1ZGFmODMzNzNlNzE5YyBweTNrCis3Mzk5NCBkYWFiY2JmMjQxNWRkMGEzODkzOWUxMmY0YzFlYjFmOGQ3ZTJlYzU0IGxlZ2FjeS10cnVuaworNzM5OTUgMzJkNDg2NjJhYTVmMzYzMDUyODZlMzRiYjVjMzRkNjI3ZThhNTUwMyBsZWdhY3ktdHJ1bmsKKzczOTk2IDhlYmI5MGRjM2IwNDUwYjM5YmQ4YTliZDBiMjg1ZWZiMGFlMDk5MWEgcHkzaworNzM5OTcgN2JlYzZiNDA3NGY1ODQ3MWUzNDE3ZWFkZTU1MmNkOTU5NDNlMTVhMyByZWxlYXNlMjYtbWFpbnQKKzczOTk4IDczN2E2YjMzNzUwNTYzYzAyZjc1MDYxMzBlMmUwNWE0NmQxM2U5YWYgbGVnYWN5LXRydW5rCis3Mzk5OSA2ZDk2MjVkZDkyZTdlYmM1YWNmNTk0MTQ5MmNmNTFmMWMwYjg1N2I0IHB5M2sKKzc0MDAwIDQxZWIxMTI5MDE0MmU3NjM1NjJmMjg1MzRjMzQ5YjE5ZTU1Yzc1MTQgbGVnYWN5LXRydW5rCis3NDAwMSBhYTIyZTdmMzI1MTc4MmE3Y2U2ZjYwZjQ1NDYwOWE4ODc3ZmY1N2JmIGxlZ2FjeS10cnVuaworNzQwMDIgNzJjNWUxNzNhYWM1YTY4MWM5NTc3MGNmZjg3OTIzMDJjM2JjMzVjNCBsZWdhY3ktdHJ1bmsKKzc0MDAzIGVmMWIxMTk4MzM4YmZhZDcwNDg3OGYwNWU5NDI3Y2ZjNzVlN2QzMWEgcHkzaworNzQwMDQgMTI0MzlhMDMzOTg4YTRlZTIxODExYjQ2NGM3NzM4ZDFjZmY5MDc4NCBweTNrCis3NDAwNSAyOWU3YTRkZDQxN2NhMjU1ZmZkODk3Nzc0MDEyOGEwZmU1ODNlNTdhIGxlZ2FjeS10cnVuaworNzQwMDYgMGVkNDA1YzA1Y2MzMDRiZmY1N2Q4NGZlN2E1ZjQyYjgzZmQyMmY5OCBsZWdhY3ktdHJ1bmsKKzc0MDA3IDk4YmJiOTYzNDY3MmE1ODFkZmM5OTBmN2NjZDEyY2MwN2E5ZWYxYzUgbGVnYWN5LXRydW5rCis3NDAwOCAyMDczYTk4OWMwMTkyNmIxMzNmZjIyMjZhODBkZWYxNzRlNDJlOTVmIGxlZ2FjeS10cnVuaworNzQwMDkgOGM2NjA2YjMyY2IxYzkwZjM1MGU2NWIzODEwMzQ2MGFkMWQ1YmQ4NCBweTNrCis3NDAxMCA4N2IzMTIxY2U1ODBlZjIxM2RjYWEyYmMyY2VjOTQxOTk4MDg4ZmFlIHB5M2sKKzc0MDExIDkzOTA2YjM5ZmZlY2M0YjE1MDZmZmM3OGZlZDYzOGQwYWQ1ZDg3NzYgbGVnYWN5LXRydW5rCis3NDAxMiBhNTBlYjU5NmE2ZDNkMWMyZTc0MDM2ZmM0Y2FiZDU4ZjQ3MWI2ZjY0IHB5M2sKKzc0MDEzIGVkYzcxNGZmZTZjY2MzYTMzYjg5NGVjZmI1ZGM5NDU0NzAwZmNjMWIgcHkzaworNzQwMTQgM2EzMTYyNDNiZDZjNmY1ZjYzNTExNGFmMDkxYTU3MmFkOGQ4ZGRiNiBsZWdhY3ktdHJ1bmsKKzc0MDE1IGE4OTIyNzIzYTkyZDAwMWYyNDNjNDZhOWNhYjg4ZGU3MTU3NjMwZDEgcHkzaworNzQwMTYgNzNkY2QxODNmYWUyZDZkNjg4YTQ1OTM2NzE1MmEyNmIwMTFiYmM3MCBweTNrCis3NDAxNyBkMTM0MGE1MGExYjMwNzZhNWQ1YTkyMDVhNmY2MDdjYzAzYmVmYzdiIHB5M2sKKzc0MDE4IGJkNDMxYTBlNjgyNzQ5ZjQyZDhlOTlhZTQ1YzBlNDY4OWY0MjAwZWQgcHkzaworNzQwMTkgMWZkMGY1Njk3YjQwZGJjMWJmZTJlNDExNjVmMzNiNWI0MzI0NWVkZCBsZWdhY3ktdHJ1bmsKKzc0MDIwIDY5YTA0ZGJkNWYwYTI3ZDk1MDY4ZDFjZDZlY2I4MjczMTE1ZTU1NDkgbGVnYWN5LXRydW5rCis3NDAyMSBkYzA4NGY0MDAzYmJiZjY4MGJjN2Y4NDA4ODczMWE3ODRjMTM2MjE5IGxlZ2FjeS10cnVuaworNzQwMjIgOTgyNzE0NjhhYjA3YTE4OWY2NzgzOTRiZDM5YmI4ZGZmMjRlNDUwMCBsZWdhY3ktdHJ1bmsKKzc0MDIzIDMzNzBkNjA4ZTVhYTQ4NTYzOGNlOWMyMGI4YjgxYTlkYzc1ODhjYjkgbGVnYWN5LXRydW5rCis3NDAyNCAzODY0NTJiMmQ5ZDU3MzM3ODQ2NDlhOTc4MzZjZjA0MTM2NWQzOTE5IGxlZ2FjeS10cnVuaworNzQwMjUgMDc3NTBjNTVmZDU1ZmI4MDUxNDYxMzg3YjI2YmUzNTMwMDBjYTY3MCByZWxlYXNlMjYtbWFpbnQKKzc0MDI2IDliMTdkNTQ2OTgyMWIzZjhlMWUxZDMyZWViNjZiOGIxZGMxNjljYmUgcHkzaworNzQwMjcgZjk3OGRkZGI5YjcxZmQ4OGJkY2NlMGRlNjhmOWNhZDY3OTQwZThlYyByZWxlYXNlMzEtbWFpbnQKKzc0MDI4IGFiNjNhMjYyYTExM2I5NTRlYjE5YzdjZTI5MjU5MzQ3ZGQxODI2NTcgbGVnYWN5LXRydW5rCis3NDAyOSA3ZjE1NDdmNjZjY2YzMGMxZTFiZjAwZTc3ZWE4OGQ0MDIwZGRjZGQwIGxlZ2FjeS10cnVuaworNzQwMzAgZmM4ZmI4ZWZmMjBlYzg2MzgwOGU3YzY2ZTZkNjM0MzIwZGEzMWZkOSBweTNrCis3NDAzMSBlODMwZTgzZjBmNWFlNGJiODY5OTg4YzQyZjhiOWNiNWU0YzEwM2U0IGxlZ2FjeS10cnVuaworNzQwMzIgMGNhODBhMmM3N2ZmZGU4ODU0MzY3MjI4OTg3MWIzZTg0MDc0YTA1ZiBsZWdhY3ktdHJ1bmsKKzc0MDMzIGNmYTAwNGMxZmQ5NWQ3NjJhMDMxOGI1MTRjNGIyMjkzNjdhZDQxNTEgbGVnYWN5LXRydW5rCis3NDAzNCBiMTZhZTY5ZDY0ODRhNzA1MjNiNjE5YmJiZDI0ZTY2MzIwZjFjNjBhIHB5M2sKKzc0MDM1IGU2MjFlM2UzMTk2ZWE0MWZkYzMxYjNiMjBiMThjYzhhNzIxZjcxOTAgcHkzaworNzQwMzYgY2IzYWE4YmNkN2IwMmQ4YTAxZTc2YmQ2OWE1ZjRkMjRlMWI0YjdmYSBweTNrCis3NDAzNyBkY2U0N2MxMGQzZmFlMWZlZjJmYzJmZjUwODA0ODI3NTUzNjFiNTgwIHB5M2sKKzc0MDM4IGQyMDc5ZDVhZGNmYWE0NGExZWY1MWRiNWQ2NzJmZTMwNmQxZjZiNzMgbGVnYWN5LXRydW5rCis3NDAzOSA3ZjZkMDNiNTk4NjVjMzE3MGIzMTA4ZmYzYjNhNGYyNmQ5Y2UyN2RiIGxlZ2FjeS10cnVuaworNzQwNDAgMmRhYjhkNjNlYjU1NTY4M2ViZDQ5YzE4MGEyY2MzYWZiNzg5YjE4NSBsZWdhY3ktdHJ1bmsKKzc0MDQxIDllNzUyOWVmNDRkNDM1ZDE5OGRkYzI2Mjc5ODZkNTM1MzBlZmQ5ZTQgcHkzaworNzQwNDIgMTJhMTNlNTM4YTExZDk5NGY4ZmQ1NmRjZjJkMTdiYzQ2ZmIyZjMyMSBsZWdhY3ktdHJ1bmsKKzc0MDQzIDEzMGYxOTExZDE0NjViNDYwNDRlOWI5MDE2NjFiYzMyZGRlNTdlZDMgcmVsZWFzZTI2LW1haW50Cis3NDA0NCAyN2U3MGQ4MWFkNTc1ZWJlMjMxYTc2NGJkYmUxZDRiZjNjODljMWYxIGxlZ2FjeS10cnVuaworNzQwNDUgYjdiODI2ZjY1ZTc1ZGJlY2Y1YTQ0N2M4ZDk2MmNlNWVhMTM4MzM0YiBweTNrCis3NDA0NiA5MDZlZDExOWNiMTliNDJjYWQyNDdlNDU3MjQ4OTRhNWVjNmRkODZiIHB5M2sKKzc0MDQ3IDg1MTFjN2MwZDNlZmZiY2JmZWIzZjZjZDA5Y2VjY2M4YWU2OWM1ZmIgcmVsZWFzZTMxLW1haW50Cis3NDA0OCAwMWFiY2QzNzMwMTQ1ZjkzZGYzYjJmZDE4ZGRlMTM0N2U0ODk4NDliIGxlZ2FjeS10cnVuaworNzQwNDkgMTA3ZTRmYjkzNjA1ZmQ4OTAxNTE3NmZlZjU3ZjBjZTUxY2JkNzRmMSBweTNrCis3NDA1MCAxZWM1YzI2NmQzOTBkZjYxZmE4OTIwMWNhNDFhY2VlYTZiYzBiNmEyIHB5M2sKKzc0MDUxIGEyOWJhYmI1NDg4NGI1MTZkYWU2MTYxOGFjNGM0YzVhMzZkMjdkNTggbGVnYWN5LXRydW5rCis3NDA1MiA1ZDdkODUyNDA0MjYzMmQzZDkxNmFiMzVlZTQzZDYxMTAzZjlmYzJiIGxlZ2FjeS10cnVuaworNzQwNTMgNTkzOTIxODBiZjQ0NWVjZTFiOGUzYWJhZWU3NGU0YmIwMWQ4NzYxZSBweTNrCis3NDA1NCBiNDI4N2ZmMTY0ZTViYzkzOTE0OTk2NDgzNzVhMzU0ZWJkNzI5MzQyIHB5M2sKKzc0MDU1IDcyNGRmZWFiM2U5YjkxNTkwYWFkZTE4Y2U4NzliMzgwMzdkNzQxN2UgcHkzaworNzQwNTYgMmZjZGY5Njc3OTdkZTY1NDY5ZTlhYmZiOGMyNDdkYjU5NzI4MmIzOCBweTNrCis3NDA1NyAxYzU3ZGViZjk3YmMyNzRkMTZmYTIyZWU5ZmY5ODNmYmQ5MmEwMDIzIHB5M2sKKzc0MDU4IGMwNzViOTc0YzM1Y2E0ZDEyZmM5MThmNGJkMmZkY2E0MDc2N2U4MDAgcHkzaworNzQwNTkgYTA2MTY5YTg3MmIzNDg5Y2JjNGI1ZGFhMDEwZTU0M2ZlNWUzZjQ5YiBweTNrCis3NDA2MCAxZGI5N2NlNGE4NTBhMGNlMWMyZGQ0NTczZDhkZGU1ZWNlN2U4ZGRhIHB5M2sKKzc0MDYxIDIwY2MwZWFhODkyNjQ2N2ViYWJmN2RkN2UzYmQ0ZGZjMTU1MmNmNzcgcHkzaworNzQwNjIgNzYzZTUxMjk2NWZhNzgwMjRhY2I5MWM5N2NjOGJhNzczOTBkNjRiMCBweTNrCis3NDA2MyBlYThmZjhkNjI5MjhhM2NiYzQ0NmQwZTI0MmZmY2FlODM1OWQ5ZWY1IHB5M2sKKzc0MDY0IDhhYTgwYjcxNWM1MWM3NmU3NGY5MzNmNGFhOTAzNWI2MmNiNzc2YjkgcHkzaworNzQwNjYgMzZhN2U5NmU5MGZiM2EyNjUyMDVhNTM3ZTY3NmQ2YzA1YjkyZjU4ZSBweTNrCis3NDA2NyBkYjViM2QzMTg2NDkzM2I5YWMzYzVkZjIzM2UwYzg2N2Q4MzM1MGEzIGxlZ2FjeS10cnVuaworNzQwNjggZmUyYjAyNmRkZjIxY2QxZTVlN2Q2ZmE4NGUyZTEyM2FhOTlmODExMiBweTNrCis3NDA2OSBlMjM5MWQzNjBhYzI0NzkxOWM0NTc1M2I5MWYzOWM1ODEzNzhiYzRiIGxlZ2FjeS10cnVuaworNzQwNzAgYmNkYjdiMTg3ZmFhMDU0M2NjNGRhMTZlNzk4ODQ1ZGYzNTc2ZmFhZiBweTNrCis3NDA3MSBhYjI0ZmY2NDZkYTg4ZjU1YzQzYmU1YzQ1M2RlZDhkN2U3OGIzNGE0IHB5M2sKKzc0MDcyIDZlMDc1ZWU0OGQ0YmFlYTIyZmViZjFjYTI3NDcyMGUyYTRjODgxYWQgbGVnYWN5LXRydW5rCis3NDA3MyBiYTczOGFmMTRkZmNkNDFiMzJkNTdjNTI2NjNkYzUyNjcwMDhiYWE3IHB5M2sKKzc0MDc0IDU4YjUxMmVkZmRiYjQxYWQwZmFiZjdlZWY4YzZlYTgwOGJhYTA3M2QgbGVnYWN5LXRydW5rCis3NDA3NSAyNTkxMzhhOTg4YTUyNzBhMWQ4NzE4ZGM5MjFmOGE1ZmY0YTZlNGNlIGxlZ2FjeS10cnVuaworNzQwNzYgNWVlMmU5NjVkYTZlZGUxMzNjMjEwMTE1NTIwOWVjMDMxZmMwN2EyOSBweTNrCis3NDA3NyAwYWE1MzIxMTdhNGJiNjlmMDdjNjNhZTQ3YzVlYTQzMDNjYTNiNzgxIGxlZ2FjeS10cnVuaworNzQwNzggYjA1MTA1NWI1OWYxOTQyY2NhM2I2MTU2NDcyZDgxMDdkNzc5MzIzMiBweTNrCis3NDA3OSBhMTllYjk2MzdmZjdlZGZmYTE1YTZkZDY5MDZhOGI0NmQzZmZmYTI0IHJlbGVhc2UzMS1tYWludAorNzQwODAgOWRjNWFhNjJiZTcyZmY4N2JmOGY5OTkzNTZlMjJlNWUxYjkxOTBmMCBsZWdhY3ktdHJ1bmsKKzc0MDgxIDY2YmFiZTYzMTAzN2Y3NDY3NzcxYWU5NGZiNDdiMTQwNjIyZjc2MGIgcmVsZWFzZTI2LW1haW50Cis3NDA4MiBkZTFkNTIwNjlkMmRmY2I3MjZjOTg1MmRhNzc0YWE2NTcxMGRkYzY5IHB5M2sKKzc0MDgzIDM3NTU2M2M2ZDMyNDRhMTlkNzg5Y2MwNmI5NWU1MzhjZWQyNzViN2MgbGVnYWN5LXRydW5rCis3NDA4NCA1NGIxZjgwMjRiYzgzYzM2MzQ4MDRkZGY1YTg5MGQ5MjU2ZTU5MmRkIHB5M2sKKzc0MDg1IGYyMDcwNTg3NWU4MDY1MDk3NTJhNmU1MzJjNGQ3MWE0NzVjNDJkYTUgcmVsZWFzZTI2LW1haW50Cis3NDA4NiBjNzA0MjEyNzE5NmE1MTVmYWVmMjllMmUwNGNjZWQyNzUyOWRjNmM4IHJlbGVhc2UzMS1tYWludAorNzQwODcgNGYxNzhlNTk1ODEzMTJlNzhkZTE3ZTQ3NjEwZjI4NGM5ZjJmNmJiNiBweTNrCis3NDA4OCBlZTBiOWE5MzFjOTRhNDk2NDQ3YTdlMzc4YjA5ZGE4ZWJmOWQ0YTA4IHJlbGVhc2UzMS1tYWludAorNzQwODkgYzMzNmIzMDM4ZDA1NDY0MmFlNDc3YTI2MzcxM2U0MWUzMzNiOGNiMCBsZWdhY3ktdHJ1bmsKKzc0MDkwIDQ2MTJhMmFjZGYyZjYwN2Q3NDMyYjNkZWVjMjkzN2RiNTUwMGRmNzMgcHkzaworNzQwOTEgNjIzNmFkYjM2NjE4MWQ2MjViYTNkYzZiNjU2ZjQ5MGEzMDkxOTg0MSByZWxlYXNlMjYtbWFpbnQKKzc0MDkyIGQ2MGI1NTllZWFkOWYyOTc0ODc5ZGY1OTRkYzE4OWM3YjU4ZDZjYzYgcmVsZWFzZTMxLW1haW50Cis3NDA5MyAzNjYzNmZhNTRmMzMzMzlhY2I3NjViYTY4MGU2MzViMDFkNjRiZDY2IHJlbGVhc2UyNi1tYWludAorNzQwOTQgNmFkMjU2MTI0MDgwNDNhMGRhYmU5Y2ZkN2M5NjgwZTczYjdkMGQzOSBweTNrCis3NDA5NSBmMzExMzk1NDg3Yzk3MGYyZWE4NTJhYTlhZTcwNTFiYTAwODYwMzkyIGxlZ2FjeS10cnVuaworNzQwOTYgZWMxZjMyYjcyYWJlODEzMjY3OTQ4NTMwMzQ3YmY3NzI5MTM3ZWZiYSBweTNrCis3NDA5NyBhZjk3N2U5NGUyZmRkNGUzYzc0ZWU1M2YyZWRlNjRjMjk5NmZhZWQ3IHB5M2sKKzc0MDk4IDNhNjEzZTAwZjY2ZDM0OGJjM2NhZTIyYWIyYjY1ODFiMTlmODQ5MjggbGVnYWN5LXRydW5rCis3NDA5OSBlNjI5NTdhMGVlMTQyMzdkMDM5ZmNhNjIyODAxMTY3NGNmY2UyNjViIHB5M2sKKzc0MTAwIGVlYWQ3ODA3ZGY3Y2MwNzhmY2VhOTljNWZiZTljMWU2YTE4NGVjZWYgbGVnYWN5LXRydW5rCis3NDEwMSBjMGFjYWUxOWI0ODc2NzZhNzYxNzcwODgwYjdhMzk2YmRjZGRhYzNmIHB5M2sKKzc0MTAyIGVhZjRhMDA0ODRiZGJkODNlZDAyMTJkMGU0YTQ3Y2ZmZTdhNGFmYTIgcHkzaworNzQxMDMgYWUyYzA1NmM0NmQzNDQ3MDNlMmQ5YmQ1M2JlZjI1MGExZDhiODRlNSBweTNrCis3NDEwNCA4MWM4YjMwNDE2M2UzYWRhZDhmNWNkMjhlOGFkNjI4N2Q4ZGJhZGE0IHJlbGVhc2UzMS1tYWludAorNzQxMDUgMGFmOTQwN2M4OGQyZTZlZjFiNDExNTA3Y2YzMjQ3N2VkODlmOGJkMyByZWxlYXNlMzEtbWFpbnQKKzc0MTA2IDVjZjY4ZDNiNjUzMjQ4OTlmNWZjNDBkMGZmNDkzYTQ5MjBkZDU0N2IgcHkzaworNzQxMDcgYTY0MGJiM2I5YzJiYjZiZDJiNzBhZGQ3NjhlZDNkZTJmMjFjMzMxMyBweTNrCis3NDEwOCBmNTAyOTA3OTdmYjUwYTUzMGQ4N2JjZGRkNzI3OTY4ZWY2NzEwNDdlIHJlbGVhc2UzMS1tYWludAorNzQxMDkgZmU3OTg4YTU3MGRmZjIxM2UwMDdkNTI2ODM0MzFkYmQ1OTk5MWFkYSByZWxlYXNlMzEtbWFpbnQKKzc0MTEwIGRmYWY2ZGUyYzhjZTdhMzQ0ZWE4N2Y4OGVmNzFhMmRiOTBjZWU2NWUgcHkzaworNzQxMTEgZDgyNmEwY2MyYzBlMGU2MWY3OWFiMzJlMTY2MWUxMjNkZmJjZjJlYSBsZWdhY3ktdHJ1bmsKKzc0MTEyIGQxZDgyNTRjNGVkNWM2Zjg4OWNjZDQ5NGVmZTU1NGMyYTczMGFjMjQgcmVsZWFzZTI2LW1haW50Cis3NDExNCA3MzJmNzJjYmFmN2Q4NGNjY2Y2MTNkNWFlOTA4ZWViMTFkY2VmMzMzIGxlZ2FjeS10cnVuaworNzQxMTUgMGFjZjI0OTAxNWNhNGNiM2QwOTU4MTMzZjkyY2JkNTlkN2M5NTBkZCBweTNrCis3NDExNyAwMWI3NjNjZWI0MDg3M2U4OTM0Zjc3ZDgzOWRmNWUzOWU2NTQxNGJjIGxlZ2FjeS10cnVuaworNzQxMTggYWFjZGM3MzVmMTliMTg1YzJmZDIxMTcwMWMxYTQ2M2Q2N2U3Y2ZiMSBweTNrCis3NDExOSA3YmY4ZmMyMDAzN2ExY2IyMWIwM2QxZGYwODg2MzUyYTg5ZWIyMWI5IGxlZ2FjeS10cnVuaworNzQxMjAgODYwZTcxMmUzMmUwZGZmOGJmMzBkZmVkMmRhM2ZhYmI2NjlhYmI5NCBweTNrCis3NDEyMyAwMWUyZTlhZGQwNzBmYjQyMjM1YmE4ZmZiYWZkMjgxNDJlNTFjYTVkIGxlZ2FjeS10cnVuaworNzQxMjQgMzgzMmNmMDM2ODdiYjM5NTBhNWMyNWFmOTFlM2E5MDYzMGU4MmU0NyBweTNrCis3NDEyNSBjYzlmZWZjZGQ1MzNjNGI3M2E3ZjM0MmE4MGJhZTYyM2Y1ZjQ1ZjJkIHB5M2sKKzc0MTI2IGNmYWIxMWRkM2U3M2U1ODZmMDE0MzkzNGIyMjA0MzQ5OWU3ZjQyZmUgcHkzaworNzQxMjggNjNmZDE3YmE5ODc1MzA2Mjk3OGJhMTFjNTlhZWU5YzEyMmI3MDY5NSBweTNrCis3NDEyOSAyY2Y5ZDE4ZDNkZjU0YzlmYzdiMTg4NzI4ZGJkMWQzMThjODk1NDFmIHB5M2sKKzc0MTMwIDBiMWYxZDdiMmU2ZGZkMDU5NmNlNDQyOWE4MWY3NjJjNmM3ZTI1NjkgcHkzaworNzQxMzEgM2M0NDkwYWQwMWNmMDc2ZGEwNDk2MmYyOTI2ODFjYjQ0M2NiMGY4MyBweTNrCis3NDEzMiA3OTcxOGVlMDM5ODYyOWFjNDFjMDMyZDdjMDlkODAzZDc4ZTE2NGUxIHB5M2sKKzc0MTMzIGViYzk4NTZhOWJkYjI2MDFmNDMxZDYzYWE5ODhlMmM2OTdiY2MxYjcgcHkzaworNzQxMzQgNTYxMzY0YTM0YjBjNDZkMTM0NGZlMjlmODBhZDJiY2VmYmYwNmIwMiBsZWdhY3ktdHJ1bmsKKzc0MTM1IDBhMjBlZGYzZjdkYjg5ZWI4ZGVmNjc2OGZhOTUzMzg4NjYyMDFiMTYgcHkzaworNzQxMzYgNmY4NzM2NzM3OTk0ZGMxMTlhOTgzNDVlOTZkNmUyZWYwYWViZTA0MCByZWxlYXNlMzEtbWFpbnQKKzc0MTM3IDlmZjViZDE2MDE2YjQwN2M2Nzk3NGJhMjZlYTAwZTA4NWQzOTBhZTAgcmVsZWFzZTMxLW1haW50Cis3NDEzOCAyMWU1ODMxY2JhZThhYmJjMzM5YWUyOGQxNTZiYWE5Y2I0NGNjN2VmIHJlbGVhc2UzMS1tYWludAorNzQxMzkgMzgxNWFiZWQ5Mjc5YjhkODExYzg0YmM0ZjVlOGFiMTk5YTZiNjVlNCBsZWdhY3ktdHJ1bmsKKzc0MTQwIGMyOGU2MWM1YmRmODI5ZmMwZmQ0N2E0Y2RiYThlZTk3YjY5ODZlYTcgcHkzaworNzQxNDEgOTQ5OWMyMzJlZGI3M2ZiNzAyNjlmOTU3MjEwNmI0NGI5ZjQ1ZjU4NyByZWxlYXNlMzEtbWFpbnQKKzc0MTQyIDRkZjcwNTAwZGJlMzRkNTc4YjgwY2MxNTYwODRmMzExNDVmZjVkZGIgcmVsZWFzZTI2LW1haW50Cis3NDE0MyAwM2Y1YzY3ZGYxOGUyYjZjNTRkODI1MjFiOGZjNjVmNjJmYzNjMzA2IHJlbGVhc2UzMS1tYWludAorNzQxNDQgOGQ2ZWFkMmFjY2EwMDRmNTcwNTdhMDE1MjA2NzE3MTI1NThhNjMxZSByZWxlYXNlMjYtbWFpbnQKKzc0MTQ1IGZkYTkwNjJlYmZhNGM4NzFlOWNhN2M3OGY1MGMwMTVlNDIyMWU5ZGYgcmVsZWFzZTI2LW1haW50Cis3NDE0NiBjZGM3NDlkOWMwMjFiOTdlYzY3ZWM3NDE5MGZkMWUwZjVlZTc2MjhkIHJlbGVhc2UyNi1tYWludAorNzQxNDcgN2RjZTQwNGZjOGViNWIzM2MzMDZiNTg1OTczMWFjOTU2NGNmMjg1MyBsZWdhY3ktdHJ1bmsKKzc0MTQ4IDM2MTJhNGVjYTVkNTFjY2FiMWVmYzc4ZjJmNmIwYjM3ODJkZmZlYmEgbGVnYWN5LXRydW5rCis3NDE0OSBiNDBlZWI4ZjY5Y2E3YmI2NDU5MmM2OWZhZmZkZWIxMmJlMDdjNmMwIHB5M2sKKzc0MTUwIGMzMGZhOGM1ZTMyNDZmOTZjMDlhYzllODBlZDNlM2ExMTEyNzcyNmIgbGVnYWN5LXRydW5rCis3NDE1MSBlNDA1MDZlZGNiM2UxNTdhMDllZTcyMGQwMjc0NzE1MzEwNzQ4MzdlIHB5M2sKKzc0MTUyIDZiYjAxODg3ZjQ3NTY3Njc2MTFmMjgxMzllNWY2ODI0NGU5MzM3MWUgbGVnYWN5LXRydW5rCis3NDE1MyAyNGEyYWNmMTI5MWM5NDEzNzIyZjMxYTNhNTY1MTdkYjAwMWY3YmQzIHB5M2sKKzc0MTU0IGFiZmQ1Zjc4ZjQ2NmFlMTcwMzAwODU4ZDZkMzdkOWI2YWQ5ZDA1YzkgcHkzaworNzQxNTUgZDc0N2Q1MmY5YTY2OTA2ZTUyYzE3Y2UzMzQ5NTFkMThlZTE2MTk1YyBweTNrCis3NDE1NiBmNzkwNDMzNjk2MjVmZjlmNmYyOGIyNGQzMTYwNWJiZmE0OGQ0ZTFkIHB5M2sKKzc0MTU3IGQ2ODJjYTg4OGUyNzk0YjE3YTU2ZjE5YWVhMmVmM2NlNDA3NjljNDYgcHkzaworNzQxNTggNTM4ODUwYjM4OTMxMDkwNzFjNTE0ODBhODQ4OGM1MjI5MDFjMjdiNCBweTNrCis3NDE1OSBiN2FhYmJhODRlZTFhMGE5OWFkYjAyODNkZDZjNzllMDIxYjdmNGU5IHB5M2sKKzc0MTYwIDU5ZTVmMjk5ZGFhMDIwYzVjYmVlZTI0NTg0MjdlYzQ2M2E5MmRjMDAgcHkzaworNzQxNjEgZWM4NWE1MWRlOWNmNDhlOTAyOGU5NTIxNzllNGU4MDM5NjUyODk0NCBweTNrCis3NDE2MiBkZjVhNzA4NjA3ODEwYmYwOTYzODUzNzE5OThjYjk0Zjg1ZWU5MmRjIHB5M2sKKzc0MTYzIGNjOWExYTNlM2ZiODFlNDMyODZjNGMzY2I4MGJjOGZkOTNkNjVhY2MgbGVnYWN5LXRydW5rCis3NDE2NCAxZWNiMDdlMTFhMmRjYzYxZmUzZTUyMzFjNDIzM2NmYzlmODJjYWExIHB5M2sKKzc0MTY1IDljMjExMWNmZDk3NDM2ZGIyYTIyNGZmMzFkYjgwMGEzYmI5YzZlNjQgcmVsZWFzZTMxLW1haW50Cis3NDE2NiAwNzYzNDYwYjBiMzgxZGZlZDYxZGYyYzA3ODBkNTg2OGU3ZjQxZTQwIHJlbGVhc2UyNi1tYWludAorNzQxNjcgMTQ4MGZhZTNiNzAzZmNkN2QwMDRkNmU5ODJiYWMzYjA4MGQwMTAwNyBsZWdhY3ktdHJ1bmsKKzc0MTY4IDc0YWFlYjljMzVmYmQxMTRlYTIxYjNhYmRiZTk5YWZjZjM2MWFhNmMgcmVsZWFzZTI2LW1haW50Cis3NDE2OSBjYjQ2YTBkNzg5YzY3MGY1NGE4ZDkwZjQwMWMyODFhNDE0ODYzYmUxIHB5M2sKKzc0MTcwIDI1Y2Y3NzVhNzE1MTlmZmY2MDYwYjk1N2U1OWIyMWJkNTk4OGE1YTYgcmVsZWFzZTMxLW1haW50Cis3NDE3MSAwM2NmNGNiNGExNTAxZDVhMzY5YmNmYjJkYzQ0OTI4ZGU0NGZmMWVhIHB5M2sKKzc0MTcyIDkwOGIzOTc2NGM3MzhkNzE1YzlhYmNmYWYwYmY2OGU0M2Y4YjdmODkgcmVsZWFzZTMxLW1haW50Cis3NDE3MyAxMzI3YWY1NmVhNDlhYjg1YjFiMjM1Mjk1MGE4NjMxOGM1ZWZjZmMxIGxlZ2FjeS10cnVuaworNzQxNzQgZTY1MGE5ZDY0YWI1YzZlMjhiZGY4ZTQ2OWI4ZWZlNGUwYTAwOWZmMiBweTNrCis3NDE3NSA5NGZjNDMzYzQzNzM0NmFiNjI4MDQyMWZkZmIzZWM4YjVlYTUwNGYyIGxlZ2FjeS10cnVuaworNzQxNzYgYTBlYWNiNWY5ZDhhYTM1MmE2ZTYyZWJhMjY3OGVlZTQyYjgzNDBlMiByZWxlYXNlMjYtbWFpbnQKKzc0MTc3IGRmMTc0NDMxOTQ2NmM4Y2JmODc0ZThlYzliZDdiZTNjNjUzZDUwMWMgcHkzaworNzQxNzggMjYwZmI0MjFhYzA3YTE0MDg5NTA4MGUzNjIwYjVkZjhjOGZmZjNkNiByZWxlYXNlMzEtbWFpbnQKKzc0MTc5IDlkZGEwMmFmYThlZDAwN2M3YTEzODcyNjQwZjQyODc3YzVjNGY4MTEgbGVnYWN5LXRydW5rCis3NDE4MCAwMjVhNjQyOGE3NjRmNWU0NTA5MTkyYjc4MjdjMmUxYjg1MjM5MTJiIHB5M2sKKzc0MTgxIGI5NjQwNjU1MTJiMTU1N2FkZGFmYTJiNWY0Yjk5OWJiZTg4ZjdkMGQgcHkzaworNzQxODIgYjExYTc1MjRlNTU4ZjFjYTNmMjJkODBkZjlhM2M1NGZkZTUzZjQ0MyBweTNrCis3NDE4MyAyMDc1NDFjOTg3NDQyZDZiYmJmOWY2ZGY0ZjhkMDU2NDk4MWYwM2E1IHB5M2sKKzc0MTg0IDc0MjJkNzg5ZmRjYTliMmU5MWJjMGM1ODlmY2JjYTgxYWI4YzA0MDQgbGVnYWN5LXRydW5rCis3NDE4NSA5Nzc2MDJiM2UxNDBkY2JkYTM5MTkxOTZiN2NhMWUxZTE2NTNlMzdiIGxlZ2FjeS10cnVuaworNzQxODYgZWNhMDIwN2JiNzdmMDkxYTk5NDU4NDZjODk2YWI0MjYyN2I0YjZhNSBweTNrCis3NDE4NyAyZTk0NzI0NTk1OGIwMWM5ZTMyYmJlMmJmNGM5ZjExOWM2OTk4MjkwIGxlZ2FjeS10cnVuaworNzQxODggNjA1MjM0MThmOGM4ZTk1NTE3OTJmM2VlMWM0NzQ1NmVlMTRhMzRmMCBsZWdhY3ktdHJ1bmsKKzc0MTg5IDJmYjEwNTc3YzYyMWUyOWZmYjk1ZTQ1MmJjNWIyNTgyMTQyZTk3NTIgbGVnYWN5LXRydW5rCis3NDE5MCA4NjhiNGU2MzliNWFiMWI4ZTcxYTZhZDgyYzMyYzBmNWM2YTg3OWU1IHJlbGVhc2UyNi1tYWludAorNzQxOTEgYjc3YmI1MzIxMTA4ODkxZWYyNjQ3NzQ4MzFjODg0NmIyMTZjMjQ1OCBweTNrCis3NDE5MiBjMDBiMDg4NDJkN2ZkNGJkMzEzOGI0OTdlNjkyMDEyZDk3ODUyMjQyIGxlZ2FjeS10cnVuaworNzQxOTMgZTk5MDEzYTlkMmY5Y2E0ZTBjMzYzZGMwYWRmNDA2YWU1NmFjNDJiMSBsZWdhY3ktdHJ1bmsKKzc0MTk0IGQ5OGI4YTZlYzJiODRjNWI3ODAxMTczNDYwNGVhNTZjNGRkNGYxNjggbGVnYWN5LXRydW5rCis3NDE5NSA2MWEwNjViMzAwMWQ4N2Q1NmIzOWJjMDdhZWRjMmQxNzliYzE5YjM5IHB5M2sKKzc0MTk2IDc1OTYyMmQwYWUyODQ3NTZhNGFkZmU4YTIzYzQ5ZWZiOGVhMDUwM2UgcHkzaworNzQxOTcgY2ZmYjFlOTYzZGQ4YTA3NzIyMTFjMDc1NGRiYWRmNzcyMDFmNmYyZSBsZWdhY3ktdHJ1bmsKKzc0MTk4IGQxZWM5NWFlMGFjMjg0NmJkOGM5NmUyYzU4YzZjZjNjNTg1OGRlOTUgcHkzaworNzQxOTkgYTE0YzA4ZjhlNzdiNWY4ZDlmZDEzZWQ4YWU2NWU3NDM0YmQzODkwNCBweTNrCis3NDIwMCA3ZDQ2MDgwMDZjZmFjMzdjYzkwODQ5YTEyYWU1ZTg0OWZlMjRiNjFlIGxlZ2FjeS10cnVuaworNzQyMDEgNmM3YjRiNDcwODI3NzVhYjdiZDc2ZTQ5YzE0MTNmNGM3MGMzOTg1NyBsZWdhY3ktdHJ1bmsKKzc0MjAyIDRiMTIxNmY0ZmNiNWIwYzIyMTEwNjA3ODhiYWU5ZTFhOTRkNzAxYTEgcHkzaworNzQyMDMgMGY1N2IzMGExNTJmNDYxOTFkYTZjMjhmOWViNjYzMWRlZjc3ZjgwZCByZWxlYXNlMjYtbWFpbnQKKzc0MjA0IDUxMTJhNTZkZjk3N2ExYzFmOWY5ODQ0MGIzMjU5NThkYmNiNGRjYzMgcmVsZWFzZTMxLW1haW50Cis3NDIwNSA3MjRhMTAxMWU4OTdhN2I5ZjMyYWUyN2Q0MTAxYTg5NzhlNWQzMTYyIGxlZ2FjeS10cnVuaworNzQyMDYgMGI4OTNjNmVhZDRjNzM2ZmU5ZDhjMjg3MmJjNjM5YmYwMTJjZGIwMyByZWxlYXNlMzEtbWFpbnQKKzc0MjA3IDFiZGU4NDU1MjIyYzM0ODlhNmYzYjI4YTRhZDk3ZmE4Y2YwMzVmNDIgbGVnYWN5LXRydW5rCis3NDIwOCBhNTU2MzRjZTgxMTgzOGRlODBjZWY0MTFhYzA4NjhiZTk0ZTgxMzAyIHJlbGVhc2UzMC1tYWludAorNzQyMDkgYmJkMWQ5MGQxNThhYmRkZDU1MTkwM2FlNzQ3OGE1N2M5ZjdhODRiMiBsZWdhY3ktdHJ1bmsKKzc0MjEwIDQyZGIxY2YzOWFmZGJhYzUwYzI4NTFjNTI1M2JhMjI3YzIzZDIzNDcgbGVnYWN5LXRydW5rCis3NDIxMSA2Nzg5ZDg0MDYyMWY0ZDBkY2M2ZTU1NGQ5OTZjZWU5ZDFkNzU4YmQ5IHB5M2sKKzc0MjEyIDJmOGEzNjJlMzczZDk1MGNjOWI4MGVmMDQ1ZjUwYWRjMWUxZjFmNTAgcHkzaworNzQyMTMgMTViNjFmMzI3ZDUwOTVkYmE4YjVjYjJkYmUwYzE1Y2Y5MmYzZTQ4ZCBweTNrCis3NDIxNCA5YmYyMDY4NTdkN2U3OWNlMmQ5ZjUwYjEyMTBkMjM1NTI3ODEyNDMwIHB5M2sKKzc0MjE1IGMxMDc3M2JiYWZhMDM1OTNlNmI2MDJkNTVlMWI1MWVjNGNjMDY5MDkgcmVsZWFzZTI2LW1haW50Cis3NDIxNiBiNzFlZWI5MDcwOTM3YjU2MmYyNzIzM2VlZDUzZTgwNjU2MjQ4OTllIGxlZ2FjeS10cnVuaworNzQyMTcgMGYwMTYzZjhjNWI1NmNmZDJmZmY1YTlmOWJjODM3NGUyZTM2NWI5OSBweTNrCis3NDIxOCA4OWViZTQzMjQ0YWViZjZiYzNjYmYxZTc3MzE1NzUyYWZjMGI3YWZiIHJlbGVhc2UyNi1tYWludAorNzQyMTkgMGQyMDNjYTNhYzc4ZWRmMDQ1OWVjYjRjYjU1MjI5MGJmYjc4OTU5OSBsZWdhY3ktdHJ1bmsKKzc0MjIwIGE5YjUwN2VjZGE0YzlkMjcyYjMzMzg3MThjZjM2MjFkY2U0ZmE0ZDAgcmVsZWFzZTI2LW1haW50Cis3NDIyMSA4YzIxZmZmYjA2YzQ2MTRhY2FiYjc5MTFlN2E2MGQ0ZDk3OWVhZDc5IHB5M2sKKzc0MjIyIGZjNDY5YWY2ZWI3MDI2YmU4ZGFjOGM3YTJjYzE5MjU0MzZjY2ZjMjIgcHkzaworNzQyMjMgMDZiODZhNmUyOGYxYTE0MzU3ZWQ0NzU4YTcxY2RlNDFhZDNiZTkwOSByZWxlYXNlMzEtbWFpbnQKKzc0MjI0IDc0ZGM3YmI0ZjQ2NDNiM2Q2ZmU4MDIyN2E1OWFmMmY2OWIyMmRjYmMgcHkzaworNzQyMjUgNjA3Y2QxMTlmZTRiOTc4YTNkOWY1MWY1Mjg3ZTMyMDE0NTI4YmNhNyBsZWdhY3ktdHJ1bmsKKzc0MjI2IDEzMjZlZjg2ZjNlNDBkMzI2ZjZjY2Y1ZTJmMjc3Y2M1YWZkOWI0ZjkgcHkzaworNzQyMjcgYjM0Y2FlNzg2Y2IwM2U0NjcyNDJiZjU0OGNlYmZkYzQ2MGViNzVjMSByZWxlYXNlMzEtbWFpbnQKKzc0MjI4IGM4NTNhM2QyYTE5ZDM1OTJkZjIyOTEwMjNjOTkxOWZjYWE4ZmU4MGMgbGVnYWN5LXRydW5rCis3NDIyOSA3MjEyZTNlMGNkMTc1MDcwNzUyMjRmZjAwNWI2OTI3M2IzNWZiOWJhIHJlbGVhc2UyNi1tYWludAorNzQyMzAgMGY4YjU2ZWYwZjdmNGRlMTk3MGViNGQwODc4OGExYTIzZGRkYThmMSBsZWdhY3ktdHJ1bmsKKzc0MjMxIDdmZDlhZGM4MTI4MDBjMTM1ZGYwZDI2YjQ1MzNjYTg4N2E0NzUxMzYgcmVsZWFzZTI2LW1haW50Cis3NDIzMiA0NDMxODIxMGIwM2M3MGFiZWQyZWQ3NjUxMTY3OGYzODk0YjY1MjVhIHB5M2sKKzc0MjMzIDAxZjg0OGVhMTEwYWUzZDU5MGM0YjJmMzBmYWZmZDMxZjkzNWUwZWIgcmVsZWFzZTMxLW1haW50Cis3NDIzNCBkYTk4Y2JlYmRhY2JhMjlkMDY2NDhlOWIzYTdhZjQzZjViNWI1MTg1IGxlZ2FjeS10cnVuaworNzQyMzUgYmIwYjdkMGU1NTBkODBhODc5ODI3NmRkY2RmMDllMWI0MTU1ZTNhZSByZWxlYXNlMjYtbWFpbnQKKzc0MjM2IDA3ZGJkZjAzZThmNTAzMDcyOThhMmYxNTEwY2EyYzc3MWRlYzBiOWUgcHkzaworNzQyMzcgM2Q0NTM2N2NjNjJhYTdmZmI5OTIyYTQ2OTBiNTJhZGEzNjY4YWExMyBweTNrCis3NDIzOCBhZGY0ODRkZjY3OTQ4ZTQ4YjE2MjU2YmUxZWQ3ZTdkNDE4ZjBhZTU3IHJlbGVhc2UzMS1tYWludAorNzQyMzkgYWE5ZmY0N2JkMWM4ZWU1NjU0OWIxNWU3YWViOGY1MGE5ZmI5ZmQxMiBsZWdhY3ktdHJ1bmsKKzc0MjQwIDU2YjJkYTkzYWQ5YzgyMzJkZTVhYTBiOTVlYjMyZjI3MWUzOTA1ODUgbGVnYWN5LXRydW5rCis3NDI0MSA4OWFkMjBhMzJhMjYwMzEwNzg2MzVlYjY3ZGYwYTQ3M2QxZjQzZDQ1IHJlbGVhc2UyNi1tYWludAorNzQyNDIgYmNkMzllZmZkMzFlMzc4NmZkYjZiMzY1ODdlYTIxZmEyMDJiOTZjMSBweTNrCis3NDI0MyA4ODk4ZjI4ZTZkMmMxYTk1NGE2NWE2YjBmMDQ0NGE3NmExYzk1NWY0IGxlZ2FjeS10cnVuaworNzQyNDQgNTcyYzE4N2RmNjEyZTI3NmEyNzNmNjdjOTVmODgwM2ZkYTMwZDI5YiBweTNrCis3NDI0NSAxZGZkNmY0MDczMzZjYTAyNzMzYWU0NTI5MjI4YjkzYWRhZmIwYzhkIGxlZ2FjeS10cnVuaworNzQyNDYgNWUwNTg4OTA5NmNkMDgwZTcxMjIwMjM2ZmYzNTcwODhhMWMwY2FlNSBweTNrCis3NDI0NyA4YTAxN2QzY2I5MjhhZTcyZWEwMTBiOTNhNjQyOTA4YTQxOWYzN2UwIHB5M2sKKzc0MjQ4IDlmZmZkM2VkYjY2ODlmZGFkMjU1NDQyNzkyYmZiMGM4ZmJkMjUwMTQgcmVsZWFzZTI2LW1haW50Cis3NDI0OSBhNWQwMjVhZDIxYzhlYTE0ZmFkMzgwYWQwMmI5MzJlMzIyOWFlOGU0IHB5M2sKKzc0MjUwIGYzNTdlMjYwM2Q5M2JlYjE1ZmFjYzU3YTNmN2ZjYmZiNDQ0ZDNjYjggcmVsZWFzZTMxLW1haW50Cis3NDI1MSA2MGIzMWYwZGIwMTYzODQ2YWUyYTJhNmY2NzllNTZhYjI5MmVlNGI2IHJlbGVhc2UzMS1tYWludAorNzQyNTIgZWUyNTQ1OWU5YjkxZmFjYWM0NzZkNDdkMWI2Y2IyNjVjMTJkNDJiZiBsZWdhY3ktdHJ1bmsKKzc0MjUzIDNlZDE1OTNkZDE3NDcyMDI3NmJhNzEyNThjMTAzYmNjNTVkNmQxMmYgbGVnYWN5LXRydW5rCis3NDI1NCAxNTY4M2MwZWFmMjg2MzJkNjI3ZWEwYTUyMGJmZjYxZWE4Yjc4MjhhIHB5M2sKKzc0MjU1IDY0YWY0MTYwY2YxZWI5ZjkzZGRhYzg3NjczY2EwMDQ1ZWViZTgxMTYgcmVsZWFzZTMwLW1haW50Cis3NDI1NiBmYTE0ZjgxMzIyY2UwNzE4NzhmM2Q2Y2QyNWI2MDA0MzNmMGM3ZTU2IGxlZ2FjeS10cnVuaworNzQyNTcgMWRmMjgxYzllMTgyMWZjOWM1MGRlYzg3ZjhmMWM3MzlhNzc4NWVkZiBweTNrCis3NDI1OCAxMzc1OTlhY2I4YmFhMzE4MDA3NjJjN2ZkNTFmYzdjNDBiY2M0M2YzIGxlZ2FjeS10cnVuaworNzQyNTkgOTM4ODNmMzc4N2I1NzliOTc4MTE0MjE4MjBiODM5YmM5MjhiNWZlYiBsZWdhY3ktdHJ1bmsKKzc0MjYwIDRmZTU4MDFiZjcxMjE3YmE0NzY4ODQxNmUyMWY4ODhkY2I3MWEzYTMgbGVnYWN5LXRydW5rCis3NDI2MSA1YmU0YzA5ZTRhNjY2MjhlNDk4Y2EzYTUzOGRkNmVhMTc3YTY5MDUzIGxlZ2FjeS10cnVuaworNzQyNjIgN2FhMGQ2ZmE2MzU5ZjE3OGEzNGY2MTNmN2QzNDI1NTdmN2E3NzZkMyBweTNrCis3NDI2MyBkMjlkMWQ4ZTJjZDYzNjlmMTIxNGNiNjA2ZjFmNjJmZjNkYWE2MTllIHB5M2sKKzc0MjY0IDNlMGNlOTRjMmUxZTBmMTA0MTc5NDBkZmUzYzhhMTIzZDViNzU4MzcgcHkzaworNzQyNjUgYmQwM2Q2ZDJlZmIwOTUwZGMzNzc3OWFjMzc2YTlkZDM0MzFhNzcxNyBsZWdhY3ktdHJ1bmsKKzc0MjY2IDRkNDRmMmEzOGU1MWVmMjA4MjE0ODdmZjgxNzk3MTQ1NmZjN2Q5ZGMgcmVsZWFzZTI2LW1haW50Cis3NDI2NyAwNTM1NzQxYjU3YmIyMGI2ZDY0NzViM2RkZDVjZTI4ZmZhMzg4ZGRiIHB5M2sKKzc0MjY4IDY1MDUwZTgyNmE5NmRiNTYwNWVkN2RiMzJiMzQwNjA3YjE4YzJmNWUgcmVsZWFzZTMxLW1haW50Cis3NDI2OSAxNmZhNTcwNjI5ZTNmNDRjY2NiNzkwZDJmMDczY2JkY2M0ZWE0OThhIGxlZ2FjeS10cnVuaworNzQyNzAgMTk2MTFhMjljOGRlN2U4MTEyMTAyNzQ0YzE0ZjM3YmRiMWNhNjMyZCByZWxlYXNlMjYtbWFpbnQKKzc0MjcxIDU1ZTAyZmE3YTExYzBlYTk5YTA0ZGQ2MDNhMzc0NjE1NjcyMWRlZGIgcHkzaworNzQyNzIgMDQxMjE2MTU5NTVhMjhjMDUzNmRlOGNkNDcwYjJlN2VkN2U5NDFiZSByZWxlYXNlMzEtbWFpbnQKKzc0MjczIDJjN2UwNzZiNGNhOWQ4MjhlM2EzMTU3ZTVhZmNjNWZhM2QxNjRjNDkgcmVsZWFzZTI2LW1haW50Cis3NDI3NyAzYWYzZmIxNjg2MzgzYWYxZWFmMTRiNGYxNjAxZjA5NmRlNjhhMTYwIGxlZ2FjeS10cnVuaworNzQyNzggODNiNDZhNTk4OGIwZWI1MTBkZTQyMzg4OTdkNDk4ZTc3MWUxNjgxMyBweTNrCis3NDI3OSA3NDZhODE4YmRkMzUyYjZhOTQ4NTkzMzI1NzVhMTBlMmI0MTZiNGExIHB5M2sKKzc0MjgwIDg4MjU1Y2I0NTM0ZGFkNWU0ZTY1YmUyOTg5ODA4ZGUwNDAxOWY0NzIgcmVsZWFzZTMxLW1haW50Cis3NDI4MSA3YzIzZjBiY2NhODVjZWM1ODMwMTYxNDI5ZmRmYmM1YTM1YmFkM2M1IGxlZ2FjeS10cnVuaworNzQyODIgOGI0OGIyODJlYmE5Mzk2MGMwNGNiYzRhNWVkZjYwMjRlYTFlNzlhNiByZWxlYXNlMjYtbWFpbnQKKzc0MjgzIDRhZTA0ZTBmNjg1MDM4ZTRkNjlkZDk2YzJmNjE5NzM4OTFhZTMxZmMgcHkzaworNzQyODQgNzk3ODllODlmZjc4NDg1YTNmZDdjNWY4YTYwYWM2NjNmYTE5ZGVmOCByZWxlYXNlMzEtbWFpbnQKKzc0Mjg1IGQyNTM3MzI2NjcyOTc2Mzc2OGMyNTJkYTk5MTdjM2FmMmQ5MDU2MzcgbGVnYWN5LXRydW5rCis3NDI4NiBmNDJlMDdhYjMyNmVjNWFkODk2OWJmNTQ3Yzk4Nzk1NGY3Zjk1YmU1IHJlbGVhc2UyNi1tYWludAorNzQyODcgNDZmOWJlMjUwOTEyZjYxMzVkMGUwNzQ4YjA5OTg3ZTMwZjYxMzE4MSBweTNrCis3NDI4OCBjZmJlZmRjYzI2ZGIyZjUyZjI5ODcwZDA2YzlhMzAwZjJkZjBhMmM2IHJlbGVhc2UzMS1tYWludAorNzQyODkgZTFhYzU0YmIwOGVkMjljMjkzMzUxZWU1NjVkZTBmZTNlMDk4NDFkNyBweTNrCis3NDI5MCAwOGVjYTZlOGIwYmVmYmIxYzhkZDM5MDAzNGM0MGZiZGYyNTYzYzQ1IHJlbGVhc2UzMS1tYWludAorNzQyOTEgNDZlNDZhMGU2MjJlNjAyZjBlMjk0Y2U1ZjU2YTU1YjQyYmE0YzdiMSBsZWdhY3ktdHJ1bmsKKzc0MjkyIDAwMjk0NmI1MmZjM2U3ZTc2MzI0MDY2ZDY1NTBmZGViNDA0YmQyZjEgcmVsZWFzZTI2LW1haW50Cis3NDI5MyBkOTljYWRmMGU1ZjBjOTYxNDcyOTEyMDNmOTBlYTQ0N2M4NmIzYmQ3IHB5M2sKKzc0Mjk0IGNmYTdlOTQzZmZjM2ZmMDE5NGY0NzlkZTMwZTBhNzE2MTdkYWRhNjMgcmVsZWFzZTMxLW1haW50Cis3NDI5NyA1MDJjZTI4ZmViYWFiNzRjZDI2NDU1YTlkYTI1NWM2ZTFiNDQyNTAyIHB5M2sKKzc0Mjk4IGZhNmZkMWVkNzM3ODgzYTk3YzJiODZlNWY0YzBhZTM0NjYxYjVhMzkgcmVsZWFzZTMxLW1haW50Cis3NDI5OSBkZDRkYTc1ZWJjOTcxNWRiOTMzOTIzY2Y1ODc5NGZjZTVlZmJlZTkwIHJlbGVhc2UyNi1tYWludAorNzQzMDAgMjcxZDM4MmRjYWJkZmZjMmVlZjI0YzNiNWZjOWZlNWE5ODBhNTVkNyBsZWdhY3ktdHJ1bmsKKzc0MzAxIDY1OGRlODQzODFkN2YzN2M0ZjJlN2RhNTZlMWNkMDJjNDNjN2ZkNmQgcmVsZWFzZTMxLW1haW50Cis3NDMwMiA1MzQ1ZTNiYzllNDE2MmJmZjVkZDhhNTIwODVkM2NlMTFhNDA3ZmE2IHB5M2sKKzc0MzAzIGEwZTFkNjI3YjcxODM1NTUwZGI0MjI4NTM5Zjk2MjBjMDE4MmYwZTkgbGVnYWN5LXRydW5rCis3NDMwNCAzNDI3N2RhMzhlMzg4Yjc5ZDg4NDE3YjFiODk3YzFmNWZiZGRmNTkxIHJlbGVhc2UyNi1tYWludAorNzQzMDUgY2Q5ZmE4MWVhNDgwMTM4OTkxODBjOWRkYWIxY2I2YzhhYWE0YzMyNiBweTNrCis3NDMwNiA4ODQ4YzQ5ZWQ1ZjU3NzQ3NDg5YTQwZTQzZjNlMDEyNDdlNGMyZTI2IHJlbGVhc2UzMS1tYWludAorNzQzMDcgMmZhZTgwOTQ1MGNkMTFmNzEwYTZmN2E1ZTFkZDk2MmE1ZWYyNWQ0YSBsZWdhY3ktdHJ1bmsKKzc0MzA4IDZhMDVlYzQ5M2NlOWUzZjE4YzY5ZWRjMjMwNGM3MzUyNWI5NjViNWEgcmVsZWFzZTI2LW1haW50Cis3NDMwOSBlODAyNWI4NWFiMTgyN2M2NTAzNGM5ZmNmNThhNGI3NGZiZjY5OGU1IHB5M2sKKzc0MzEwIDNmZjE3MjVmODM3ZWFlMTY2ZTBkOWM0N2MzNDI1YTI2ZGJlMzMwNTggcmVsZWFzZTMxLW1haW50Cis3NDMxMSA1ZGUxOWM1MDExY2E5MzY3NDEwOTM2NjU4OWY3OGJhNzllYWQyNDEwIHB5M2sKKzc0MzEyIDVkODc1ZmFkZjYzZjUzNThjNzNjNjlhOWM1M2Q2ZWI4OTI2MzEzMWQgbGVnYWN5LXRydW5rCis3NDMxMyBiMTc3NTE4N2FhMzBlNzM3MmUxODM3NDY3OWNhNDBiOGE5MTZjYWQzIHB5M2sKKzc0MzE0IDA4Mzg2Yzc5ZTM0ZjBmY2RjMjc0MzljYmUzMTlkMGMzMzhiNGM3ODQgcmVsZWFzZTI2LW1haW50Cis3NDMxNSBlYjIyNDQyMTk0MTk5OTI1ZWU3ZjYwNmUzOTk0YzgzZGU5OGI1NmExIHJlbGVhc2UzMS1tYWludAorNzQzMTYgOWE0M2ZhYzg3NjBjMmY5M2Y5NzJjMDM0YzRlMTBkOTQxODZlMmRhMyBweTNrCis3NDMxNyBjOGY0YzEzMmQ2ZGIwNGU5YTQzZTgxNzRjOTVjMzc3ZGU4OTE5ZjU3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMxOCA2NDI0ODVkYmZmYmFhMTAzMGYzYjE5OThiYzhjNjBmN2MwNjcxZmJmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMxOSBiZDFiY2NkOGUzNDRiOWZkZDQzY2UxMzY2YTU2MmQwODI2M2JkYTczIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMCBiYTgwMmMwYjUzOGE3OTY5MjM3NjZiM2VhYTg5M2E2ZGMxMjg4NjRjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDMyMSBmY2VhN2JhNGIwMzRkY2IyNDQwODE0ZWZiOWI4ZDBiZjhjYjgxYmUzIGxlZ2FjeS10cnVuaworNzQzMjIgNzU5NDJiYzc0ZjcxMjMxMzMyZmNlNmI2ZjIzMmU1MjQ0ZWY1NzAwMCB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQzMjMgMGM0ZWU2MmRmMGUxOTBiZTZlMGYyOGVjMTg1MzBhOTFkOTM3MTU5ZiBsZWdhY3ktdHJ1bmsKKzc0MzI0IDE5MmUzNDQ0Yjg4OGZhNDUzMWY0ZjA4OWU5MzFhMTg0M2U3Y2Q5OWEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzI1IGU1NzMzZDU4ZmRiMTVhNzgwNGFjNjlhNGUxMTlhOWExZTQzNzU2YTkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzI2IDVhMTMwYjc1ODViMWNlNWM1MTUyNTFkMzg2YmVmZTUwNzAxNDc1YmMgbGVnYWN5LXRydW5rCis3NDMyNyA2NWQxNjgyZGNkNWUwZTU4YjBkYWIyYzE1MWYzOWE0YmE0ZDM0M2Q3IHJlbGVhc2UyNi1tYWludAorNzQzMjggMWJlM2Q0MjdhY2EyNDQ2NmEwYmIxMGFiY2Y1MmM1OWVkYWMyZWQ0NSBsZWdhY3ktdHJ1bmsKKzc0MzI5IDA2Y2U5ZDg0NjhjMmYwNjY5ZTllNmIwYjE4NGY4NTFhYzY1ZGUzNWMgcmVsZWFzZTI2LW1haW50Cis3NDMzMCA3ZjNmNmI1NWU0N2EyOGM3ZmNlNGRmMTU5Zjk4NTZjYjIwZTRhOGEyIHB5M2sKKzc0MzMxIDlmZGYxODJmMTlhOTEzZDEzOTM1OGI3YjJiZmNiZjE3NGU5YmI2ZGIgcmVsZWFzZTMxLW1haW50Cis3NDMzMiA5M2E5NmQ2ZGZmYjVlOTMyZGFlMGM1NTA2YjA5ZDg4NzA5M2M1NjRmIGxlZ2FjeS10cnVuaworNzQzMzMgN2I2NmNkMDJkNjBiYTgwMWE1MDk4NzhiZmRjMjRiNjU3ZTQ2MTY0ZSBsZWdhY3ktdHJ1bmsKKzc0MzM0IDMxNTk3MjZkMGU2NTljYzY4NWJjZjhmZWFmOTJkZjRlYjJiOTI4ZjMgcHkzaworNzQzMzUgNGYyMDRlYjc2ZTA3YTI2YTY2N2Y5MzAyY2Q0M2Y0YmUwMzMwNDBhNSBweTNrCis3NDMzNiAyZjY0MWUzMzdjOWY5NmE5MjlkNDNiODU1OTQ0MmZlZjFkNGU4YTIzIGxlZ2FjeS10cnVuaworNzQzMzcgMDBmZDYyOTdlYmU3YjBkZjhlMWEwOGI2ZmI5MDhiNjcyZjUyZmM5MCByZWxlYXNlMjYtbWFpbnQKKzc0MzM4IGYxMzYwMmE4NGRhYWFmZDZmMmMyMTgwNjQwNzU4ZTNkNTFlNTU1YjQgcHkzaworNzQzMzkgMzA4ODc5ZWM5MDIzNGRlMzVjNWNiZjAxMDg0YTAwODQ5ODU4NTEwMSByZWxlYXNlMzEtbWFpbnQKKzc0MzQwIDE5ZTdjOTk2ZTY3YWViZTQ4M2ZjNDIxNmU1NDU5OGZhOTRhNDcyMzcgcHkzaworNzQzNDEgZWZhODgxMWIyNTBhM2M2NTlmNWFhNTYwZDkzYzRhNTczYTJmNDgyMCByZWxlYXNlMzEtbWFpbnQKKzc0MzQ4IDg1YzBkOGQ4M2NiZmZiNjJhYjgzODYyNTIwMjliNmU5OTAzNDUyZjkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzQ5IGIwMDJlOTJhMzZmNzc0NjhmOGY2NjhiZTEwY2YwM2U1NGEwMGVlZTggdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUwIDQxMmE4NWNlNTg0NGFkOGQ2ZTkwMmI3YzBhMjJiMTYxODBlNmM1MGUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUxIDk0ZDhjMzQxZmI0MmYyMjQwZWM5MTI2MGNlYTg1YTg3M2E5OGQ0NjIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUyIGNkMjBhOWVkODRlNWEzYmYxMGRmYjQ2ODIyMTJjNDMwODc1MzVmZTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzUzIDExMjg2YjQ1M2ZjZmZiMzk1NTczNDIxM2NhNDE4YTZiM2Q5YjAyMTcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzU0IGU0YTY3NDRjZTRhOWQ3YWY5NTczNjYwNzA1NzE4NTEwNTgwNjBiMjcgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzU1IGNhNmU5MDQ3MGQ5NmZkM2FjYzI2ZjI1ZWQxODVkMGFjMTMzNGQxYWEgbGVnYWN5LXRydW5rCis3NDM1NiAzNjFhMDNhZDNjMzczYmM1Yzc1N2Y2ZmVjMjFmOTJmMWVhNWQyNTU1IHB5M2sKKzc0MzU3IGJiZWE5ODE0OGUxMjY2MTA0NTFlMTNiNTQ0YTY0YmI5NDQzZjQzYjMgcHkzaworNzQzNTggNWM4YjIyMzhhMmY1MjRjOGQ3NDQ3MTUxNWUxZTJkYjM4YzAwNjdkMyByZWxlYXNlMzEtbWFpbnQKKzc0MzYwIGU1YWViZDAzOGYwYzJhZDI1ZTVkNmQxNTkwZDZkYTgzODYwYzMzMmIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYxIDJjNjRlOWJmYjFiNjY2NWU2YmViZjRhYjQyNmY0MTg0NWUyNWNkZDIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYyIGIwMTNiM2M4YzljN2Y1ZDllZTMwZjViN2FkMWZiNzJmMThhZGY3M2IgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzYzIGMxOWU3OTBkOTQyZjc5MDlkNjZhY2JhOGUyOTYwNjdjMzJjZTAwOTAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzY0IDAwMjVlMDcyZmU5N2FkNzkyYjdlNWRjMWQ3MWNhNmUzZDBiZjdkMDEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0MzY1IDEyM2M5NWZlMDRiNjA4MzA1M2Q2MTg2YjRhMzU4OWIzZTU0ZTcwYmEgbGVnYWN5LXRydW5rCis3NDM2NiBlZjU2NTM1ZjUzNTYxODA4ZTUzMTgxZTQzZDc5YzcwMGRlMTkyZmMyIHB5M2sKKzc0MzY3IDRhMWFiMmQ3MDM4NTlhNGI4Yzk4MDgyNWQ0NTEyMjM5MGE1YmQwOTEgcmVsZWFzZTMxLW1haW50Cis3NDM2OCA5ODQ5ODVlYTI0YzRkY2UyOTQ5NmQ0NDkzODgwMTg1ZTg2OGFiNTkyIHB5M2sKKzc0MzY5IDRhOWI4NTkxNjQ5ZmJkNmU0NDQxZWVkY2IwYjY4YzJiNGFjNDYxNzUgcmVsZWFzZTMxLW1haW50Cis3NDM3MCBlMDBiNTBhM2Q0OTlkNWUxZDRhMDRkMDNiMGM1MjM5MDgzZGZmYTJmIHJlbGVhc2UzMS1tYWludAorNzQzNzEgN2I0OTVjOGYyYTI0MGVhODA3NTA0YzU4ZGNkZTE3Mjg4MzQxODFlNSByZWxlYXNlMzEtbWFpbnQKKzc0MzcyIDFhY2QwMjc3ZDIyNTMwZTVjMTJiOTk5MjVlZmQwOWE0Y2Q3ZjI4YjYgcmVsZWFzZTMxLW1haW50Cis3NDM3MyBhNDkyYjJiYzk1MWI0MzRlNTc1OTkxODkzMWU4ZWM2Nzg3MjU4MDgwIHJlbGVhc2UzMS1tYWludAorNzQzNzQgNTA5NWE1Mjc2ZDhjMjY2NzBjYjEwZTM2NTdhODRlZmUyMDI0YWEzNyByZWxlYXNlMzEtbWFpbnQKKzc0Mzc1IDVmYmFjMDljMGU5MWRiMmZhYjY0NGM5ZTBlYjg1N2FhZGI4M2Y1YzMgcmVsZWFzZTMxLW1haW50Cis3NDM3NiA1OGMxMGNmMDQ2MTY3ZTEwMDFhYTVlOGUwM2NkMDgxOTdkOTMyZWJjIHJlbGVhc2UzMS1tYWludAorNzQzNzcgZGFkMGE1NGY1YTU4M2ViOTNkOTM0YTNkODYzY2UwZmQ5Y2I0ZTQwZiByZWxlYXNlMzEtbWFpbnQKKzc0Mzc4IDU5YjZiODU1N2EzMzI5ZjBjNjIyMGI1ZmU5ZTJmZmMyYmUzMGFkZjEgcmVsZWFzZTMxLW1haW50Cis3NDM3OSAxN2U3MTQ4NTI4N2Y3MWYxNmIwZTUyNDVhNjUwMTlhZWFjZDQ0NWY5IHJlbGVhc2UzMS1tYWludAorNzQzODAgNTQ2YWExMzRkNzczN2EzMDcxZWM0YWFiNTZmYjUxMzliMjZiNTIzZCByZWxlYXNlMzEtbWFpbnQKKzc0MzgxIDc3MGE5M2M3YWJmZjc3YTc3NDA0NzNkOGJiNDJlNTBmZWIzYmJkMzAgcmVsZWFzZTMxLW1haW50Cis3NDM4MiBjNGQ2Yjc3YzM0NjgxNTRmNmNmMTQ2OTAxNTk4Y2YzN2YxNzNjMjgyIHJlbGVhc2UzMS1tYWludAorNzQzODMgMTA5NDBiY2VkYzk5ZTQ3ODU1ZjNjYjNlNTkzZTY5NDFkOWViNWE2YSByZWxlYXNlMzEtbWFpbnQKKzc0Mzg0IDBiYjIzMjA3OGI4Y2I4MTVmMDk4MzkwYzFjMTE3NDU5ZDc4MjY3NjEgcmVsZWFzZTMxLW1haW50Cis3NDM4NSBkN2YzY2RmMmIwN2Y3ODlhMWFjYTY3ZGI2NTNiYTljY2Y4NTQ2YzAwIHJlbGVhc2UzMS1tYWludAorNzQzODYgMGY3YTZlYjE4MjIzMTc0ZDY0NjY0M2I1NmI4YjE2NjgyOWQ5MTk1MiByZWxlYXNlMzEtbWFpbnQKKzc0Mzg3IDdlZTdmZGNlYTBkNzE2ZmE5YWJmM2QxODk1NWM1MWNhODE0YmUwMTUgcmVsZWFzZTMxLW1haW50Cis3NDM4OCBlZmU4MDhhNWY1OWU4ODk3YjU1NjM5Yjg4NWVkYWU4OWY5OTgzM2FlIHJlbGVhc2UzMS1tYWludAorNzQzODkgNzQzZmEyODJkNzQ4MTM4NDk5MDA0NDhmYWYwNmNlN2QzZjdhMjQ1YiByZWxlYXNlMzEtbWFpbnQKKzc0MzkwIGNlNjY0MjIxOGZmZWMxYThjYzY5MTRjMzAzZTY3ZDQ3NDlhNzk2MzUgcmVsZWFzZTMxLW1haW50Cis3NDM5MSAzNGVhNTg4YWMzYzU4ODNjYTYxM2Y0NjNmZjk1ZWJmMWZlODhjZjFhIHJlbGVhc2UzMS1tYWludAorNzQzOTIgOTRjMjhiYTY1NmJlMDdkNDNlM2EwNmQzYzQzOGU1MDM4ZDViNmE3NCByZWxlYXNlMzEtbWFpbnQKKzc0MzkzIDY4MGFkOGVlZDMzYjI3ZDkwYTE2MzQyMmVjNzQzMzA2NThkNjIxMzggcmVsZWFzZTMxLW1haW50Cis3NDM5NCAxMmZlYzczY2I4ZTUzZDk2MDkxYTNjMzRiZGZiMTIxYWZiNDhmMTcxIHJlbGVhc2UzMS1tYWludAorNzQzOTUgNmUyYmEyMzc2ODMzYjZiZjFjODViZmE2ZDQ3Y2JhZWRkNDM4NDgzMiByZWxlYXNlMzEtbWFpbnQKKzc0Mzk2IDdlNTE0MTcwNDZhYjg3MTBiODAwZjJjMWI3YzlmMzIwNmVkOTNmZjUgcmVsZWFzZTMxLW1haW50Cis3NDM5NyBmZjZlZWEwMTdhN2Y0NjQxODQyYjFmZjI4OWU1ZWU5MzI2NjU1YWMwIHJlbGVhc2UzMS1tYWludAorNzQzOTggNTQxNGZmNzM4OWVlOTgxZWQ3MmU4MDQ4MzE2NWJiNGUwYzNmZDVjYyBweTNrCis3NDM5OSA4N2ZkZjI3OTVhN2NkNDQzNjg0M2FlMWRkNDA3MzI2NGMwM2FiMjUxIHJlbGVhc2UzMS1tYWludAorNzQ0MDAgOWQ0MDU4NmE2YWZjZGUwMWVmY2ZiNmZhOTU2MzRjYzAwZGFjY2VmNSByZWxlYXNlMzEtbWFpbnQKKzc0NDAxIGY3MjQzMTk5ZDBiMWNjYjEyZGVhZjY1OGQ1ZGUxYjE1Y2YzNzkyMjIgcmVsZWFzZTMxLW1haW50Cis3NDQwMiA0ZDM4ZTUxZTdjZGM5YTk3OTQzZjY3ODUzZmMyOWUxMTBkMTkzYjdkIHJlbGVhc2UzMS1tYWludAorNzQ0MDMgMDA1MGI1NzExZmFhNmI3YjhlYmFlZWVjN2Q3NjFkZjVkM2NhNDgyZCBweTNrCis3NDQwNCBlMDUzMjJlZmNhODU3YTlmNTFjMGE0YzU4MWU2YTBjMjhmZGI2MzM4IGxlZ2FjeS10cnVuaworNzQ0MDUgYmUzNDUzMWM2ZDBiNzQ5Zjg1OTlmODVlZDAzNGRlOGVjZDBhMzI5NCBweTNrCis3NDQwNiA1NmU4YzIyZGY3MWYzMTY2OTc2NWQyMmM0MzkyZDBlZGVjNjhlNjY2IHJlbGVhc2UzMS1tYWludAorNzQ0MDcgOTFlNDBlYjQxOTU2YTA0NWQxMDIxMjcxZmU1Y2YyNGY1MjE3ZDE3ZiByZWxlYXNlMzEtbWFpbnQKKzc0NDA4IGEyNjdjNjA0NDY1ZjM3NGQ2Mzg5NGI5NTc4NTE5MzY0YjQyMmM1OGUgcmVsZWFzZTMxLW1haW50Cis3NDQwOSAwMTQ4NDE3ZTEzMDFkODkzZDhkNDUxM2U1MTcwYzJlMzI5NGQ5ZGJkIHJlbGVhc2UzMS1tYWludAorNzQ0MTAgYmUzNDNhZjQ5MDk5OTUzNTUyMjUwNmVjM2Q0M2U0MmY5YmRlOTYxMyByZWxlYXNlMzEtbWFpbnQKKzc0NDExIGFmMTEwYTQ4ZDE1NDdmYWE2ZTRkZTI1MGU1YTY4MTlkYTY4NzA0YmUgbGVnYWN5LXRydW5rCis3NDQxMiA3ODVlYzM0NDc2YmFmYTU4NTY2ZTc3Njc0M2U4YTk5ZmYxNDc4N2FjIHB5M2sKKzc0NDEzIGUzZDUxMzE5YjlkMGVjODM3Y2MxMzc2ZGM1NzE5ODBmY2Q3NGE2ODAgcmVsZWFzZTMxLW1haW50Cis3NDQxNCAxMjI0YWEzZmI2YTBkNDY3NjgxYWNiMGFiN2RkNzBkZjczY2QyM2I2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQxNSA3YzhmNDgxMTYwYzIyZTA3MTJiNWVjYTMxZmU4ZjE5ODBkYzViNTVkIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQxNyBmMmExMmY1MjU5ZTdlZGQyMjNjNzUwZTA1ZWY1NjE2MmQ2YTUzNDVlIHJlbGVhc2UzMS1tYWludAorNzQ0MTggZjhkYjQ5M2RkODRmYjgzMGQ5YWNiNDBjYjM0NGFlNjBmZjI5ZTNiOSByZWxlYXNlMzEtbWFpbnQKKzc0NDIwIGZhZjhhMTAwOTkwZDY2Y2Q1MTAxZDQ4N2JiZjlhZTgwN2QwMmUyM2IgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIxIDNhMzVlMzNiMDcxYmQ0ZWQyNzZhMWEwZDlkMDA1NjAyZjNhMmI0MWQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIyIDliYzk1ODhlYjY0YzE5MTA2ODIzYWZhNWY3ZjI2NjlhYmNhYzViOGIgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDIzIDM4MWM2ZjliNzRhZWFlNmNjM2ZhNWRmYWE5YjY4YzA5M2NlZTQ1ZjAgcmVsZWFzZTMxLW1haW50Cis3NDQyNCA0OTYyOTEwMzc1ODIwOTY2MmViMzk2Mzc4NGMxY2MwNDU1ZWY4MTg0IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQyNSBmYjU4NTdmOTAzZmU5Mzc1YWJkYTMzYWMwNTQ3NzlkMWNhODNlZTRjIHJlbGVhc2UzMS1tYWludAorNzQ0MjYgZmJmOGI3OTFjZTgxMWI0OTAzYzQyMGI1NWY4OGNkNTA5NDI2MmY4MiBsZWdhY3ktdHJ1bmsKKzc0NDI3IDM1ZWZiMTA1NGVjNmNlY2E3MjAxN2E1ODcyNjNjYjZhOTI1NzM0MGIgcmVsZWFzZTMxLW1haW50Cis3NDQyOCBhMWFkMTkyZjhkZjU2NDM3MzkwYzJhZDg4Y2QxMzJkOTYwYjA2MjBkIHJlbGVhc2UzMS1tYWludAorNzQ0MjkgOTc1MjJlMjdiMDVkMGM4MjM4ZGQ3NGY1NTdmOTRjMzVhNmIyNmNkNSBsZWdhY3ktdHJ1bmsKKzc0NDMwIDlhNmJlYjFhOTM5NzU3M2RkZjlkOGQ5OGJkMTY0YWM1Y2MyNDg4NjEgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDMxIGVlYWZkODcxNjQxMGE2YzRkYzNiNzk4YTMzZTNkNTc0YTM2N2UwNDUgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDMyIDZhYzE0NzhkOWIwZTY2MTk4ZjlmYzY3OTc1MjBiOWFmOTU1OTJmZGIgcmVsZWFzZTI2LW1haW50Cis3NDQzMyA1MTUyYjUzNjYxMmU0ODc4ZmQwMGQ1NzY3YTVhNzIxYTQ3NzhjMzE3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzNCAwMWRiNDEwZjJmMjA3ZmYwMDVlNTlhN2I5M2QzYmIxMDIzOGQxYTdmIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzNSA4OTkyN2Y1ZTgzZDZmNzk0NTEyNjkyNTZhMzVjNWQxOWMyOTc4Y2E5IHB5M2sKKzc0NDM2IGQ1YTYyZGQ5MDc4OTg4NzgwM2I5NTAxNzBjZGQzNjc4NDY4NjVjMmYgcmVsZWFzZTMxLW1haW50Cis3NDQzNyBhNWU2ZjNmZjJlMmY2NDc5OWY4YzA2YzBkYjhmMTdlMjdmYjQ5ZDAwIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzOCA0OWE0Mjg2Njk3ODhkNjc4ZDUyNmM2NjdmNmZmMzlhNjY2MTZiNjYyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQzOSA0Mjc1OWE2ZWU5OGFjNWQzNmFjMjA2ZDEwOGM1MTAzMjkzZDM4YWY3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MCAxZmM4OTAxNGJkODNkYjA4YjVlNWE5YmU4ZDcwODVjYmIxYjAwMWM5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MSBmZTI4NjQ1YTYxMjI2ZjgwNTUyMTgzN2Y1ODI0YjhjZjJkNzQ2ZTY3IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ0MiBiZWIxMmJiNzc5MWJmNzc5MzNhMjc3ZjI3NGRlNzQ3ODkzZDk2ZTU5IHJlbGVhc2UyNi1tYWludAorNzQ0NDMgMWZiN2UyZjdmMGJiNGUyNGNiZWE4YTNkNjM3NTMwN2JlOTY2ODVhZCBweTNrCis3NDQ0NCA1ZWEzZDQ2NzU2NGE1MmExZTkxODNiNmVjZGIyOGI2YzUwMmJkMDA2IHJlbGVhc2UzMS1tYWludAorNzQ0NDUgNTFlNWE0MTRiM2MyNDdmMmY3NWE1MzgwZGExZmJjODkwMmExNWNjNSBsZWdhY3ktdHJ1bmsKKzc0NDQ2IGEwZjgwZGMwOWRmZTIyODlmOGM0NTIxNjNkNjdhZjI4YTJkNzkxN2UgbGVnYWN5LXRydW5rCis3NDQ0NyBjNmQzMjc2NmU5NGM4MGI0NmEyYzY4M2Q2NmYyNjY0ZGY3ZjE2Yzg5IGxlZ2FjeS10cnVuaworNzQ0NDggYjdhNTcxZDRhYWE3ZTFmNGE0YmI2ZjdhNTA3ODI4ZGFmYTc5OTNmMSBsZWdhY3ktdHJ1bmsKKzc0NDQ5IGFlODE3ZmE0ZTYwNTY2ZWFjYjQyODY3Zjk0MmY5YmJjZTI3MTNhMWUgbGVnYWN5LXRydW5rCis3NDQ1MCBlNGE4M2U5MTUyMWEzNjlkYzhkODI3NjNiMzViNDg4OGMxMzgwMDE3IHB5M2sKKzc0NDUxIGQ3MjRjYThjNTgyMzQ3YjNhMTA0MDdmZDQ2YzUyZWYyYjdkZGIzMTQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDUyIDQxYjAxYmI5MDZlMzk2OWNkZmFhYzY1MjBlYTU4YTRhZWQ0YmRlZjggdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDUzIGQ3MTQwYmJjNjQ3M2JlNDliN2I2Mjk4MTZlNmY5OWE2NzgyM2E1NDkgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU0IGQ0NGUzYWE0MmE1YmM3ODE3MjYzN2ZhYzY4NTYwYjQ2ODMwODk1ZTAgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU1IDAwMjA4NzE4N2IyZmY2NzBmYzA3MTM2NzYwYWIwZDkzN2E0ZDQ4MzQgdGtfYW5kX2lkbGVfbWFpbnRlbmFuY2UKKzc0NDU2IGY5MWMxZDI4ODM0MzQ4OTU2NmRhYTdkN2FkZTVkMmQyNmNlZTY4MmIgcmVsZWFzZTI2LW1haW50Cis3NDQ1NyAxMTNjMGI4NmZkNzQ5YTdmY2JmODZhYzk5YzYwNjE4YzY0ZmU5ZjRlIGxlZ2FjeS10cnVuaworNzQ0NTggYmMxYzQwMzA1NGUxYzc3ZmE3MjBlYTc4OTZjZDk3YTM3ODQ1NzJmOSByZWxlYXNlMjYtbWFpbnQKKzc0NDU5IDMwOTYzY2ZiNjlmZDgyMGJiODBkNmQzZTVmOGI0NDRkMjc4NTJlZTkgcHkzaworNzQ0NjAgNGM1MWM0YmZmYjIxYTcwZjkxZTdmOTEwZTMxOWRiMGI3MzY4YWZhMCByZWxlYXNlMzEtbWFpbnQKKzc0NDYxIDY0M2M2Yzc2ODRiMTY1YzhmMjY4OThhMGIyMjQxMWRhMzhkYzEzMjYgcHkzaworNzQ0NjIgMjI3N2ViY2VkYTQzYTZjMTg1YTNlZGE5ODEwMTdmYjhmZTcwNTQ0OSByZWxlYXNlMjYtbWFpbnQKKzc0NDYzIDEzNzdhOGMyNjc5MjI1NzY0MTFlM2ViOWVhMzNkOTY5M2Q0OTUxMWUgbGVnYWN5LXRydW5rCis3NDQ2NCAxZTI4NzcwMjY0MzVlYmRiM2FlYzJkY2JhZmNmZDljN2Y2ZWYwMjQzIGxlZ2FjeS10cnVuaworNzQ0NjUgMDA1MzAyODdiZGI1MTEzMWU5NTY2ZTZlNjBkOWRlYWNhMmI1YmQ3OCBsZWdhY3ktdHJ1bmsKKzc0NDY2IDM4NDMzNGQ4Yjk4NzViZTYyODEyOTBjOTRiMjVmZDNiMDE5ZTEwZjIgcHkzaworNzQ0NjcgMGZjZjQwYTE0MGU1ZWRiYzA5NzY1NTZkMzIwYjg0ZjZjNTk3MjZiYyBsZWdhY3ktdHJ1bmsKKzc0NDY4IDE5ZmMwZDA1ZmE3YTQ5YmQ1ZDNkZWU5ODdjNDBmYzJhZGE3YWUyZGYgcHkzaworNzQ0NjkgZmI3ZDVlZTkwOGE1MDJhOTY1MGJiZmQ3ZTRlZmNlZGQ5MzE2ZDMzNiBweTNrCis3NDQ3MCA2YWMyYTY0ZTgyNmJlNDU0NDg2MmYyMzkxYmYzMTk0ZGVjNmVlMGEwIHJlbGVhc2UzMS1tYWludAorNzQ0NzEgMTIyN2U3Y2MxZDliMThjZGU4ODIyYjQyNTVmZTI1NzgxZmM0NWEwOCBsZWdhY3ktdHJ1bmsKKzc0NDcyIGM2MzBiZjA1Y2UzOGRmZTJlNzIwOTA1NjRhNGI2NTMzNDQyOGM2OWMgbGVnYWN5LXRydW5rCis3NDQ3MyBiZWMzNDA1ZTA3M2YzNDJmOTg4MTJiZjA3NjNkODA1MTdlN2RmY2E1IHB5M2sKKzc0NDc0IDZhZmE1YmJkYzM3NTRiNjQ2NWY4NDgyN2U4ZjM5ZjRkMDE4YjVjZDQgcHkzaworNzQ0NzUgZDdlMWQzOTc4ZGQ2MDA1M2JlOGYwNzUzMjUwNjk1MGJmZWYyOWQ5ZSBsZWdhY3ktdHJ1bmsKKzc0NDc2IGU1MjAwOWUyMjAxN2Q1MWE0MGNkZThlYjgwMTg1NjA3YzM3YTc4MzggcHkzaworNzQ0NzcgNmRhNmVkZmE2Mjk2YzJiZDBhOWZjZTIzNzVmMjA0NGFiZjVlY2JmOSBsZWdhY3ktdHJ1bmsKKzc0NDc4IDQ5NWVlZmYzYjlmZjBkYmJmOWM0ZjQwOWMxOGE1MzljYzNmMTg3ZjkgcHkzaworNzQ0NzkgNzQ2ZjEwZTA2MjRlOWYzZTQ3OTI5ODkxZWJkODY1OWM0ODM0ODUzZSBsZWdhY3ktdHJ1bmsKKzc0NDgwIDhiOWMwZjU3M2FiMjljNDFjNmM1ZmRjY2E4MmExZmUwZmY1MzU1YWYgcmVsZWFzZTMxLW1haW50Cis3NDQ4MSA1ZWY2YmMwMDUyMGFiMDE4ZDg3YWE5N2IzZTcwMzcwMTM0MmJmODE5IHJlbGVhc2UzMS1tYWludAorNzQ0ODIgZGEyMWI0ODBmZjA1MjM1NTZiYzc4ZTk5ZWY3OTIxMzFkZTU3NTE2MSBweTNrCis3NDQ4MyBkZWZmZTZhYTQzZDExNGU4YmY1ZWUxMzkwZjhkOGU5MjFkMzRjODIyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NCAzNGM2ZjZkMjY5NzZkM2E2OWZlNDZmYmE5Y2UxZTc0ZDM0MDQ1Y2QzIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NSA0Mjg2MzJhNTkwYWRhY2UzYjg3YTQ3MGFlYjVlMzM2MWI4NmNlYTZiIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NiA3ODc1ZGVhYzQxMGM5YzNiZjQwNDFkZTdkOWRmY2JhZjg3ZWQwNGE2IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4NyBmNmUxN2FlYjkyYWJjODhlMGQ1NGJjZTM4ZDE2Yzg2NTBiOWQ5MzA1IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDQ4OCA0MmIyNTY3OTRlNmM1MTIxOWJmZmRmMWYxMDRiMjBkZGFkYmNlNTlkIGxlZ2FjeS10cnVuaworNzQ0ODkgNGQwODgxOGI2YzRhMWQ4ODczYjBkODNhZDZiY2IzZjI0YTE1MWU1OSBweTNrCis3NDQ5MCAyMTdiY2I4NjAzYWFkMTVjOTM3NTQ4ZjVmNzhkNDFjYjYxNWUyNzFiIGxlZ2FjeS10cnVuaworNzQ0OTEgMGIwN2MwM2E1ZjNjMzY4NDQwMTUwNzUwNDFmMGEwYjRkMTBhMWFkYyB0a19hbmRfaWRsZV9tYWludGVuYW5jZQorNzQ0OTIgNGVhYzEzMmZhYzk0Yjg0ZjJiYjQxMzM3YWJhMmZiOWJlZjQ3YjRlNSBsZWdhY3ktdHJ1bmsKKzc0NDkzIDM4NGY5NjVlMTJjZGYxZDg4OWFhZjBlOTgyNDIwN2I1MDlhMzM4YTggbGVnYWN5LXRydW5rCis3NDQ5NCA2YjA4OGRjZjI1ZjhjODliYWE4OGQ5MDE2YjhkZThlZmQ1MTk1NDM5IHB5M2sKKzc0NDk1IDJhYWY3ZDE0MWJkMGZlZDk2ZjlhMjdiZDk3ODRiNjk4NzA4NjQ2MzEgbGVnYWN5LXRydW5rCis3NDQ5NiAyODIxZTVlNzZlODI5MWMyNzhmYThkOWQwNWY5Y2Q2ZGUxOGZhZTkwIHB5M2sKKzc0NDk3IGI1NjNhYjAxNzFkOTIzOGIxZGM4ZTViZDk1MzhhYTAzMjViY2M5MmUgcmVsZWFzZTI2LW1haW50Cis3NDQ5OCBlM2EwZDRiMGQ3YWEwMjA5MmMzN2MyOTQ0Mzc1NGVkYjk5OWE3NWU3IHJlbGVhc2UyNi1tYWludAorNzQ0OTkgYzg3YWFjY2M3MGI2MTgwMDAyN2YyOWZhZWYzYWI4YjkwNTQzMzkwMiByZWxlYXNlMzEtbWFpbnQKKzc0NTAwIGQ0MjhiYzE4NGUxZmJkYzA5YWM4NDhhYzAyNzljMGZkNzc0MmUwMTQgcmVsZWFzZTMxLW1haW50Cis3NDUwMSBlYjEwMDk5MzY2ZWE1MjI2MDQwYTY0MGFkOWE0YWVjYmFiNGVlMjI2IGxlZ2FjeS10cnVuaworNzQ1MDIgMjRjOTUzZjNmOGRhZjJjOTU5NDdiYjgwMzdkYmJiMDQ0YWMzMGMyMyByZWxlYXNlMjYtbWFpbnQKKzc0NTAzIGFlMmY3NWFhM2ZhYTk0NDQxYWY5MmE2OGY5YzM2MmM2YWRjMDZjZDggbGVnYWN5LXRydW5rCis3NDUwNCA5NTE2NjNjMDMwYjQ4YzhjYWJlMjc1Y2JmZjA5MTliNjM1OGExODMxIHB5M2sKKzc0NTA1IDNiZjAzYWQ0YTZhMDZmODVmNDY2NzUyMzk2ZDcwZmRjNmExYWVlOWEgcmVsZWFzZTI2LW1haW50Cis3NDUwNiBkODc0MDY0NmEwMzFjY2NkYWM2YjM0ZGMzNzkwMzM2MmY4MjA3MjI2IHJlbGVhc2UzMS1tYWludAorNzQ1MDcgNzNmNDMyY2Q4MmRlOGM3MGU4ZTk3ODM2NDNhMzg3MzQyYTFjZDdkNiBsZWdhY3ktdHJ1bmsKKzc0NTA4IGFkOTMwMDY3YzEyNGZiY2NjYzkyZjQzYzQ1NWFjMTNjZmU4YWI3NjAgbGVnYWN5LXRydW5rCis3NDUwOSAzN2YyZjM2N2FkOGJiYzU3NWM1NTY2NzBmYjI3MWQzMjhlNDM0ZTgwIGxlZ2FjeS10cnVuaworNzQ1MTAgY2QxODFhNmY0ZGQ3Mzc1MTFhMjgwODE5NmRjYWNmNGFlNDM2MWIwOSBsZWdhY3ktdHJ1bmsKKzc0NTExIGY4MDEyZmRkYTZkM2RlMGU1MTEzMjk5Y2Q5YWZkZGYyNGRlY2NkNjkgbGVnYWN5LXRydW5rCis3NDUxMiBmNzQ2NmFjMWRkNzI1ZjdmODViM2ZiNDgzYmUzYzExMGExOTQzNzZiIHB5M2sKKzc0NTEzIDJjZmJkZThjYmY4ODYxODczNTA3MWE1NDdlZDZiZmM1YmQwNGNlMWUgbGVnYWN5LXRydW5rCis3NDUxNCAwMzFlNDMxNjRiNzY4ZDE5ZTc1Njg0ZjRlMjhjZTliYzljYjM1OGZhIHJlbGVhc2UyNi1tYWludAorNzQ1MTUgZTAxYTE5OTA3MTcxMTE4NzVjNDYzMTkwMzYwNzc5MDMzMThmYmQ0OCByZWxlYXNlMzAtbWFpbnQKKzc0NTE2IGY1ZTcwMTFmYmZmMTIwNWY5YjQ1ZWI4NzU1Njg3MTcxM2U4MWU2NTAgcmVsZWFzZTMxLW1haW50Cis3NDUxNyA2NTBkZjBlYzBjMTJmNmYxOGI1YTIwYjlmM2E5Yjk2YjFjOTg3NDllIGxlZ2FjeS10cnVuaworNzQ1MTggM2FiYmQ3MjA5YmU4NTAwNWRiYzNjZWE0NzIxMjVjZTgwNGQ1ZWU5ZSBweTNrCis3NDUxOSBjZDBjOGFjOWNiNDk0MzE3ZjYyMGJjMTdlYzZhNGU5ZDNmZjBkNmM5IGxlZ2FjeS10cnVuaworNzQ1MjEgZmVmZDllYjdhODIyZGNmZTI4YmM2MTY1ZGJiOWEwYThlZWY0OGViZSBweTNrCis3NDUyMiBjN2NkMjdmNjY1ZDFkZGM3NzJkYzBkNDNiMThhY2ViOGYwYTE4NDE3IGxlZ2FjeS10cnVuaworNzQ1MjMgZTQ3MWQ2ZDMyNzI0YWE2ZTIzMDUxZmY5NTYxNjMwY2IyOGNhNGFhNCBsZWdhY3ktdHJ1bmsKKzc0NTI0IGUyMWM0YzUyN2U2NjFlYTFhOTRiMDMwZWU4M2IyZjA1NmM3MDk1ZGUgbGVnYWN5LXRydW5rCis3NDUyNiA5NzQ1NTNmYjU5ZGNiMzNjYjUyODBmNjRmYzhhZjYyMjBmNTY5Mjk4IGxlZ2FjeS10cnVuaworNzQ1MjcgMDJkNDA4OWYzMWRkY2NjNzdlMWI5ZTI1MDQwYmU0NDgyYmI2ZGE4MCByZWxlYXNlMjYtbWFpbnQKKzc0NTI4IDM4Yjk3YzNlOThiZGFhNTZhYTg3YmQ1MGQxNzVlY2M4ZjQ1MTI2MDUgcHkzaworNzQ1MjkgODZlZjc0YzRhZDk3N2IzMzA1MjI2NzNmYmIzYTg5NGI1ZTQxNDZkZiBweTNrCis3NDUzMCAwZTU1ZmNjYjE5ZWM1NWQzMDNkZjQyZGY0ZjQ2ZmJiMDFhYjg2MzM2IHJlbGVhc2UzMS1tYWludAorNzQ1MzEgNDg3MWY4MWQ3MTMyMDA0YzNmOGQzMzhhMWNhMGJlM2QwYzg1ODE1NiBsZWdhY3ktdHJ1bmsKKzc0NTMyIDU5NGUxOTdlZDYzZDUyZWZjOTlhZDY3Y2NiYzhhOGRlNmM0ZTdiOGQgcHkzaworNzQ1MzMgZjM0MDg3NjBkNDZlNWM1YWE2OTJlOGNmZDkzZWEwZjk0NjM3M2MxZCBsZWdhY3ktdHJ1bmsKKzc0NTM0IGJjMTY3MDkyYzk4Y2I4ZWMxMTU5ODhlYzBhYWI3YjA4YjEyZjNmNmMgcmVsZWFzZTI2LW1haW50Cis3NDUzNSAxM2YxOWZiOTNmOGVjZDdhYmNlMjI2MGMwMWZhNTY1MzdiZDI4MzBkIHB5M2sKKzc0NTM2IGE4ODk0MWUyYmYyNzNkMjljZjg0NGEwZDI5NjJjZGFiZjFmOWI4YzYgcmVsZWFzZTMxLW1haW50Cis3NDUzNyAxNTQ1Y2Y3MzcyYWY5NjgxNzUzOTIwZDFhYzUyZGZlNzhmNzlmZGZjIGxlZ2FjeS10cnVuaworNzQ1MzggNWQ3ZjYwYmZmZThmYzVjNjQ3YjA0ZWU1NGViZGNmZWQ0YWQzOTAyYiByZWxlYXNlMjYtbWFpbnQKKzc0NTM5IGM0ZDU4MWU3MDljYTU0YWYzNTEyNmJhMGEzZTdlYTExZDkzMzRkNzkgcmVsZWFzZTI2LW1haW50Cis3NDU0MCBjZmE3YWU3MTdhOTBiNmM5ZjFmNWVhYTliMmI1NjdjZTM1YzM2NzVlIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDU0MSBjNDAzYjY2ZDkyYjBmYTIzYmE5MjkzOWM2NDE5OWE3NzI0Y2JiODIyIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDU0MiA5YTA5NjliNmY4ZTVlNjMyNmQyYjVkZDM0M2NiNjVkNWRjNmQyNzNhIGxlZ2FjeS10cnVuaworNzQ1NDMgYzRkOGNiYWZkOGM4OTA2MWZiOTI0Y2Y4Y2FjNzk5ZTFhNTA3ZGJlNiBsZWdhY3ktdHJ1bmsKKzc0NTQ0IDY3NWEzYzE4MjRmNDA1OTEwOGExMDRlOTVmZmM2MDFlMmQxNmQ2Y2QgbGVnYWN5LXRydW5rCis3NDU0NSAwOTE4MzEyYTJkN2I5YWIxODJhMWI0NDViOTk1M2U4YzQ5MzA1MmI4IGxlZ2FjeS10cnVuaworNzQ1NDYgZmZjZmM5OTBlNGNhMTljYTc4N2Q0ZTQ2NDQyYWI2ZGM1M2JjNmY5YyBsZWdhY3ktdHJ1bmsKKzc0NTQ3IDkyZTM4NThjY2E3MGFlNmNhNGE2NTdhMDQyZWFjYzVhNGU2NWI0ZDIgbGVnYWN5LXRydW5rCis3NDU0OCBlYzhkMjVlMDUwMGE4OGM3ODJkNmUwMDRhMjBmZjYxZDA1YThkNWEwIGxlZ2FjeS10cnVuaworNzQ1NDkgZGI4NmQzY2MxZTZiOTE1ZjI4ZDdhMTUxOTA2MTYyYjQ5ZDkxZjBjMyBsZWdhY3ktdHJ1bmsKKzc0NTUwIGI2MDEzNGVlNWViNDVjM2ZiZTY1MTIzYTQyYTJkNmUwZjNlZDAyMDAgbGVnYWN5LXRydW5rCis3NDU1MSBmNzVmMjc5YmNkMzQwNDlkNDJjNTExNDMyMjUxYWQ5MzQ0ODUxODBjIHB5M2sKKzc0NTUyIGQ5MWFmZjIwNmRmZGUwMzBiZTk2YTVjYWQ3NDc1ZmQxNWQwNTkyMWQgcmVsZWFzZTMxLW1haW50Cis3NDU1MyBkMDNlNTI4ZWY5NDZhYTdjNGU5MzQ3YTJmYTM2Y2QwOWNiMWMxYzQ1IGxlZ2FjeS10cnVuaworNzQ1NTQgNDhkZjQwN2I2MDY4Mjc3MDVkYjJjODZlMTcwYTA3MjAxNGI2OWY2MiBsZWdhY3ktdHJ1bmsKKzc0NTU1IDE0YzVmYWIzZWNiZjQ2NmM0ZTY0YzFkOGU5NmMzMDNmMmQ5MGUyMDUgbGVnYWN5LXRydW5rCis3NDU1NiA4MDA1OGRmZTQ2OWQ5Yzc3ZWJiMmEwM2FhNTVlNWQwZDE2N2MyYjQyIGxlZ2FjeS10cnVuaworNzQ1NTggYWUwMGEzYTgwNDczOTMzODg2OTUyMWNjYjE0ZTljOTRhMGQ3ZDk4YyBsZWdhY3ktdHJ1bmsKKzc0NTU5IDBkOWI1NTZhNDM3ODA2OWI4MjRjNGZkODRhNDViMDFkNzMzNmViMjQgcHkzaworNzQ1NjAgNzM1MzIyYWE3MWQxYWU2ZTI1MWEwOWFjYmM2MTkyMTM4YjBhYjZkNiBweTNrCis3NDU2MSBiNjVlYmVkMDZlYjA0NTlkYTE3NGQ1NzJmMzEwZDc0YmFlYWRhNzExIHB5M2sKKzc0NTYyIGI4OWY1ODJlZTc4YThiODBhNDU2NWQ1MmYyM2VmYTE2N2M5OTFiYWYgcHkzaworNzQ1NjMgZTIxMzAzY2FjMTIwNWM0NTkzZDI2OWU4MjA1Mjk5NWZmN2RkNDhiMCBweTNrCis3NDU2NCBmMjliNTlhNDkyNDYxZTMxZTFjNzM0MDJmNjg1MTQzMTIzMjFhYTMwIGxlZ2FjeS10cnVuaworNzQ1NjUgMWYxYjRjMDNlODkyYWEwNDU4OGRiNWFiOTA1ZjNiOTJiNjc1MjQ2ZSByZWxlYXNlMjYtbWFpbnQKKzc0NTY2IGQyMTA3N2U2MzlmZGQxYmQ0ZWFmMDViYTAzYTUzOTlhNzE4Y2NiYTIgcHkzaworNzQ1NjcgMDk0YTZmMTU4NjQxNzQyMDFhYWE3Mzc4NDRjMTliYjhmYWYyOTdkMiByZWxlYXNlMzEtbWFpbnQKKzc0NTY5IGI2YmYyYTVmNDlkZGRkMGI3N2VmOWQzZDAzMTAyNmQyM2NmZTdhNWEgbGVnYWN5LXRydW5rCis3NDU3MCAwMjk1MGQ1ODA4MDhiYTFlZWM1NTZlNTAzNDEwMjY5ZDRkMDkzMWU0IGxlZ2FjeS10cnVuaworNzQ1NzEgNWY5ZTEzMDY2ZDM2Njc0YTIzNjI2Mjg2MThiMzAxMzA3NzI5NjFkZiBsZWdhY3ktdHJ1bmsKKzc0NTcyIDMzY2U0YzViYzJlNTYwY2NiYTQ0NmUyZjVhMWFlODRhZjI1NzMxMjEgcmVsZWFzZTI2LW1haW50Cis3NDU3MyA5YTc4ZTNkOTA2MTcxYzcyMThhMWExNmRmOTcyYTMwNTM2YjgzZmIzIHB5M2sKKzc0NTc0IDQ3NGE4ZTA2ZTk2NjFhMDJhNTJkOWI3ODA0ODQ0YzcxMGRjMGUzNDcgcmVsZWFzZTMxLW1haW50Cis3NDU3NSA2MDZlOTdjYWViNzczNmY1YmFhZWRjZjVkZjFmYWNlMTI3MzJkOTg1IGxlZ2FjeS10cnVuaworNzQ1NzYgYmZiMjMzNzQ1MWU5YWM1YmVkMWQ3NmJiNjc4Zjk2MzYxMWE1Mjk0NSByZWxlYXNlMjYtbWFpbnQKKzc0NTc3IDZkZWNhNzNiZDUxMmRmY2MzOGMxNDViNDYxYTYzOWNkYjNhOTMxNmUgcHkzaworNzQ1NzggMDQ4YTkxMzgxYmQ4MGFlMWMwYzlhMWRmZmQxMzIzOTkxY2U3MjMyZiBsZWdhY3ktdHJ1bmsKKzc0NTc5IDdkZTIwN2RkNDczOTkyNjQ5MTQ2MjU3NzQ2ODExYjE3YzcyMjdmODEgcmVsZWFzZTI2LW1haW50Cis3NDU4MCBhNGViYWI4NDVmNzI0MWVmNDIzYzc0MzQ1MjY0NTU3MjFhMDlhNWU4IHB5M2sKKzc0NTgxIGQ0MDM3ZmI4NTZkMjEwOGFhZTg5ZjlmNDAyZjg2MWU0M2RjYThmZWQgbGVnYWN5LXRydW5rCis3NDU4MiAxYjkxMjc4NzE3MjMyMDU4OTUwYTdmYWFhMWIxODY3MDQxMGQ3OGY4IHB5M2sKKzc0NTgzIGU5YmFhMmRlOGJiNGVjZGJiMDA1NWMzZTUwM2Q5ZDFiOGJlMjE3ZmUgcmVsZWFzZTMxLW1haW50Cis3NDU4NCBlNGMyY2JkM2JmOTM4MzNjZjA3Y2JlMTE5ZWMyMjZkM2RmNmQ3NDkzIHB5M2sKKzc0NTg1IDY4YzkyZWQ4ZDk2MDRkMzBhNTMyMDcxY2FmMTc4ZjJmODZkZTM3YzkgcHkzaworNzQ1ODYgZDgyODAzNjRjNTgxNGY4NDE1ZTVhMzRhNWRhYzdiYjcwZTBlNzM4ZSByZWxlYXNlMzEtbWFpbnQKKzc0NTg3IDFmNzcyZjhmZWM5MjJiZjU0N2M2YjlkZjVmOWUzNjQ5ZDMwOTA3NTYgcHkzaworNzQ1ODggNmZhOGE4MTE4ZGYwYzNmZGJjZGQ3ZjRiNmIxYzAyMDA5MTllNTk3ZiBsZWdhY3ktdHJ1bmsKKzc0NTg5IGFlZGM0ZWMyZmUyNDAwNzc3NzFiMTFhMWZjYTdhMzIwY2NiY2ZmYjAgcHkzaworNzQ1OTAgYjRmYzhjYmZlMWVlOTFmMGM0ZWY4ODU3MjZiN2ExYjg2NDk5MGRhZSBsZWdhY3ktdHJ1bmsKKzc0NTkxIDA4MDkwYjVlOTZjMmZjZTc3MjBlNzYzZGU2MjQzOGE1YWJiMWUxZDYgcHkzaworNzQ1OTIgNjk2MTZlMjI4NzI4ZTNkOWNhNWVhNzI4NjdjYjU3MzFlZmY2Y2YzOCBweTNrCis3NDU5MyA1OGU2MzE5N2Q0ZWFiMzExOGRmYjg5ZDNkNTE2OGNiNTAyNzg0MjI5IHB5M2sKKzc0NTk0IDM2OGJmYzE4YTdhMTM5YWI5NWQ2NmFlMmZkMDVjNWZiYTU1NGFlOGMgcHkzaworNzQ1OTUgYmY1MDBkODg1Nzk2NmFhZjU4N2IzYTJjNTNkNjdiY2NhNzg0NmJlOSBweTNrCis3NDU5NiA1NjAwMDhkMDk4ZGRjNzE5ZTIwMzMxYzRlZDYzYTI5NDE0MjFiNzI3IHB5M2sKKzc0NTk3IDg2ZmE0M2M2ZDU3YzY2MWZiOGM0MGVhNTY0OWZjYWI2N2M0Mzc3ODEgcHkzaworNzQ1OTggODAxYWE1MmIxMjE3MDU5OGY3ODhmYzRlYzMwMDgyNGZhYjUxMWNiMyBweTNrCis3NDU5OSA5OWRjMjJlZjFkZjA0ODgwYjhiZmYzYWE1NjkxNDA1N2I3ZjMwNjViIHB5M2sKKzc0NjAwIDM5YmNiZjMxNmRiYTY3Yjc5MDA3ZjNkNDI3MWRhMTQ3YzY4ZjNhNzQgcmVsZWFzZTI2LW1haW50Cis3NDYwMSA5NDI0OWQxNDI1YTNmZGI2NzRjYTFkYzNlZGMyNTYzNzBmOWMyMjI0IHB5M2sKKzc0NjAyIDAyNzAwN2I0M2YxNjU2MGRmMmI4NDMxMWRhNzkzYjBjNzc0NTlhNDUgcHkzaworNzQ2MDMgNzhiODZmOGJmNWM0NTljMTc1ZGVhZjg1ZmM0ZTYzZDNmZmEyYTkwMCBsZWdhY3ktdHJ1bmsKKzc0NjA0IDQzYTY2Njc2OGY0NzRiNTYxZmM2NGJmYWY3MmViY2VmMzM2ODU5YjAgbGVnYWN5LXRydW5rCis3NDYwNSAzNWExNjIzYzEwMjM5MDg4YjAyNmM5NTE2MTk5YTA0YmQyMDI2MzA1IHB5M2sKKzc0NjA2IGU4MTQ1M2JiMDc4OTNmN2U2NGE2NDk2NGYxODUyNTAzYmYzYTA5ZjMgcmVsZWFzZTMxLW1haW50Cis3NDYwNyAwNWFkOWVjNjMwODc3NDkzNjM5OTY4OGRmYTEyMjNkMTYxODc1ZDYzIHJlbGVhc2UyNi1tYWludAorNzQ2MDggYWNmMjE1YmJlNzAyZTA1NTcwZDRjYzJjYzNkNDg3OGRlM2Y3NzIwOSBsZWdhY3ktdHJ1bmsKKzc0NjA5IDExYjQ1NTM1YTFiM2U2MTljZTZkYjdmYWFmMjY5OGQ5ZjIzYjg1ZDIgcHkzaworNzQ2MTEgODQ5OTI4ZDc1ZDZlMzk4OGUxYzg1YzlhYjZiNDY3NzQ5Y2U0ZGQzNiBweTNrCis3NDYxMyAwN2MyMzgwNmNjYzZjMmVkYmUwNmNiNDI5M2Y3ZjFlOTU1NmM4N2FlIHB5M2sKKzc0NjE0IGJhNWIyNjgzYzA2NDBjNjAxMzJiNTg5ZjRlMTUwZGQ4NzQwOWFjM2YgbGVnYWN5LXRydW5rCis3NDYxNSBlNWI0NjNhNjFlZTI2OWVhOGNmMDk0MzY0NzIyMGQ5MzZhOTc2MTBmIHB5M2sKKzc0NjE2IGVkN2RiYzkyMmQwNWM5ZjQ1ZTE3ZjcwOTc4NzgzMWE2NzM4MzdiNzkgbGVnYWN5LXRydW5rCis3NDYxNyBlMTU3Y2ViNTRhNDM4YjExNjU5OGU5NGZkYTQxNGFjYmNkMjhhNDNiIGxlZ2FjeS10cnVuaworNzQ2MTggYjc0YTdhM2U0MWM1NzJkZjM5ODA3MmY1ZmY0OWU1ODFjNjEyNzgxMSBsZWdhY3ktdHJ1bmsKKzc0NjE5IGQ1MTJjYmI4NWFlMDAxZDM5NmM4ZDlkZDQ2NTFiYWM3NjYzNzI4ZWMgcHkzaworNzQ2MjAgODE4YmE4OTg1MjgxMDQzNWUxNjgzNTkyNDFkMjFmYmNlMzMxZTAyNSBweTNrCis3NDYyMSA2NmY0OGJjOTQ4MTQ4NzUxYmFhNzgzNTVmYTc2MjAwMzhlMmExODM4IGxlZ2FjeS10cnVuaworNzQ2MjIgYWM3NTVjNTY2MTM2ZDUxMzA3NjEzMmZjYjMwOGFkZTVhNjk4YzU2YiBweTNrCis3NDYyMyAwMDg4ODQ0ZDAxMDlhNGY3YjczZjdlNzI5YmFjOTRiN2JkZWZjY2NhIHB5M2sKKzc0NjI0IGFmYmIyYjJmZjZmNzgxMGQ5NWVhNzQ0OGFkZjEyZDc4YTU5OTE1OGEgcmVsZWFzZTMxLW1haW50Cis3NDYyNSA1ZDJiNjZlMDE5NjhhM2ZhYWUzZjFhMjQ1Yjc0MzdmMjBmYzE4YzdhIGxlZ2FjeS10cnVuaworNzQ2MjcgZmQ4YTU4OTAwOGFjMjBlNDUxODc1ZTE1OGU5OTg4NzMzNTg0NjRkNSBweTNrCis3NDYyOCBhNDdhYTExMGZjYWNmODRhZWQ0NGQyODlmZjIyNjVhMzc5OTZjNDM3IHB5M2sKKzc0NjI5IDZiODJiYTMwNGE3ZWRlODc2YTBiNzdlYTdmZWMzZTIwZGExYjNhYzUgcHkzaworNzQ2MzAgMTA2ZWU0ZWI1OTcwNWRjZWZmM2ZiNGJjNGUyMmU5NWFiZWFhODk5MiBweTNrCis3NDYzMSA5ZmZhOGY4ODc3NTA5NDg3ZWUyNThhMmRjY2RlMmVmOTRiZjRkOTdhIGxlZ2FjeS10cnVuaworNzQ2MzIgZTBjZWYwMjMzMDIwM2U0NmIyMTgxOTYwNWZkNjFiNDYzYWJkYjBmMiBsZWdhY3ktdHJ1bmsKKzc0NjMzIGJiOTAwNTFiNDM0YzAzZWU3MzNiZmJiYjk2ZGYwOGY2ODVhNWE5ZWEgbGVnYWN5LXRydW5rCis3NDYzNCA2MzcxZTJkMGRlYTAwOTE2ZjhhZjg1ZGExZDY3NGViODI5ZjIwOGNlIHB5M2sKKzc0NjM1IGQ1NWM5YTA2MzI1OGFlNzkzYjY0Njc4MzcxZDI0NDQ1ZWUyYTMxZGYgbGVnYWN5LXRydW5rCis3NDYzNiBlYjY3M2E0MDFiOWQ1NTA4NjFiNTAyYWY0MmE5MWM2MDQ1NmZmYjUyIGxlZ2FjeS10cnVuaworNzQ2MzcgOTVlNTczOGNiMzA5ODE4MThhNWJjODNmYmRlN2M1NDhhOGMwNDdkNiBsZWdhY3ktdHJ1bmsKKzc0NjM4IDc2YWViYzVlYTQ1Y2JhZDM2MTVkZjVmZDAwYTFmZGQ0NDNlYWM3ZjMgcHkzaworNzQ2MzkgM2I5ZTc1MzExZTQzMGEzNjZmOTliODBmN2I5ZjliZDJkOTZiZDQzOCBweTNrCis3NDY0MCBjZTdlMDAzODk5NmY0YjRmODM5ZDljNWI0OTA4MGY2YjlkODU1Y2JmIGxlZ2FjeS10cnVuaworNzQ2NDEgMWYwM2YyOTIwYzYxNzFlODc1NTg5MTU1ZTRjMTFhMmFlOWI3OWE0ZiBweTNrCis3NDY0MiA3N2FiOTNjYTA2NWUzNjdhZjFmMTQ5MTk1ZTdjOTY4MDY5NDFkYThmIHJlbGVhc2UzMS1tYWludAorNzQ2NDMgN2QzOWUyMTNiNzU2MzY3ZjhhMWM4MmFkMjc3MGMzNzBmN2U1NjNiMyBsZWdhY3ktdHJ1bmsKKzc0NjQ0IDYxZGJjMWQxYjgwNGQ2Mjg0ZjZmYjQyM2UxMWMyNTdmMDMxNzBkMDUgbGVnYWN5LXRydW5rCis3NDY0NSBhMDdmMzBkN2QwZjFjZWYwODU1MTNhYTRjMjE4NjJkOWYzODdkMDIyIHB5M2sKKzc0NjQ2IDI1YjEzZjc4MmZmZTg0OGExZDNlMDIxMzU5NGYzOTdjMTIyMzc0OTkgcHkzaworNzQ2NDcgYzUxNzIxZDY0NDUxYTQ5MmIyZmI4Y2Q4OTRkNjU3MWZmYjhhYmQxYSBsZWdhY3ktdHJ1bmsKKzc0NjQ4IDYzYjZhOTFhZDlkOTdkYzg4OGVkOTBkYWU2NGY2NTBhMzk0OWQ1ZDUgcHkzaworNzQ2NDkgMTdlODNmMDE2OWU4MWZmMWRhZTMwODlhYzFjZWVlZjliMDlhZGMzMSBweTNrCis3NDY1MCA2NzU4YmYyMDAyZGFiN2MxNjdiNGE3NzkyYjhiMGQ5OTE3Y2MzOTBkIGxlZ2FjeS10cnVuaworNzQ2NTEgOGE4ZTNjMTY2OGEwOTk3NDQxZTMxYWRjNzFjYzdmZDM4ODczZDk4MSBweTNrCis3NDY1MiAxNTAxYTEzNjBjZTRlNDg1NzViZTQ3YzRmMDVmN2ZhZGZlMWJlMDA4IGxlZ2FjeS10cnVuaworNzQ2NTMgMjBiZmMxZDM1OTg5YzA0NTA5NzU2NjlkNmYxOGMzMDBmMTk0NmMxNyBsZWdhY3ktdHJ1bmsKKzc0NjU0IGMyMTY1YmUwMDE3MWE2ODM5NDNiNWE0ZWFmZmY1MzA3YzFlOGFmNjggcHkzaworNzQ2NTUgNzdkYjI1Yzc1MjZhMTI5ZTRjMmNlMDQ5NzBkOWU2YWU2YmM1NThhOCBsZWdhY3ktdHJ1bmsKKzc0NjU2IGU4NDQxODUwNzkwZjg2ZGQ4MTJmNGEzMjBkNzRjYTYxZGI5YzViOGQgbGVnYWN5LXRydW5rCis3NDY1NyA3NTgzN2NmZTlmZmJmOWFmYWRjZTY5NjUzOTQwNDNmNmUzMTUyN2VhIHJlbGVhc2UyNi1tYWludAorNzQ2NTggZDU2N2Q5NjNjYjM3MDRhOGMzOGQ3ODlmMTUzMDMzNjVkNzdhMDJhMCBweTNrCis3NDY1OSAwZjZkYzJlNmYwOTFlNDEyMjcxZDU5NDA1MmUyNzA2NDIwZWQzMmI1IHB5M2sKKzc0NjYwIDNiMGIzNzAxNGFhZWIxNzljNzFiNmU3YmNiZmUxYjEzNTY4NmIzM2MgcmVsZWFzZTI2LW1haW50Cis3NDY2MSA0ZGRjMDU5OGRmNzlmNjMwNWE3MjVhMzAzYTk4YTQyZTRmM2M0ZDc5IHB5M2sKKzc0NjYyIDI2NmQ3ZGMzZDY1NTEwM2NhNGE2YjZmMDQwNzViYThhZDk0MTZmZTEgcmVsZWFzZTMxLW1haW50Cis3NDY2MyBmZmJiOGZmZjM1MjBlZjhhMGIxZjEzODEzZTQ1MGIxMzI3Y2E3MTYxIHJlbGVhc2UzMS1tYWludAorNzQ2NjQgNmY3ZTcxOTJmZWJiMGZkMTlhODE2MjFlMzhkNGUwMTdhZThjOGM0YSBweTNrCis3NDY2NSA3ODM3MDViMDQyNTgwZTMxMDA1ODhkZjVlM2JlYmIxOTZkMWEzYzY5IHJlbGVhc2UzMS1tYWludAorNzQ2NjYgZDE5MTE0NDkyMjg2MDBiYTZmOWRjMzhiMGMyODI1YWFhMTE3YjUwMiBsZWdhY3ktdHJ1bmsKKzc0NjY3IDFkNDM4MTJhYWRiNjE4ODcxNzAxMjBjMGViNjg1OWM4ZjZjMmI0ZGUgbGVnYWN5LXRydW5rCis3NDY2OCAzYzdjOWI4MWUzNjE0NDQ1MWRhZTQ3NDJjZjdhN2I3ZDRiYjE3MzdjIHJlbGVhc2UyNi1tYWludAorNzQ2NjkgNjIzMTQ3YTJiNWIxYWI0Mzc3Y2MxN2NlM2IxODRkY2JjMWQyYzBiNyBweTNrCis3NDY3MCBkYzYyZGQzMzI2ZWQwYmUyM2YyMDY3OTBhNjRjZGMzMjNmOWQ1Mjk3IHJlbGVhc2UzMS1tYWludAorNzQ2NzEgOTA2NDkwYWI2YWZmYjRlZWRkYzM5Yzk1MmQ1MzNmNzNmN2Q4ODRlZSBsZWdhY3ktdHJ1bmsKKzc0NjcyIDM0NDk2YmVkOTM2NWY1ZGQ1YmI5Nzk5ZWNkMDkwNzJkOTMzNTVlYjUgbGVnYWN5LXRydW5rCis3NDY3MyA1ZDk3NjFlNDQ1NTU4N2Y1YTczMTgxMWEyNmY4OGE4ZmQzN2U4MWI2IGxlZ2FjeS10cnVuaworNzQ2NzQgZDYyN2IwZmYxZDE3ZTVlZTRiODY3YWE2NjczNGI5Mjk5NmU1Mzk2MiByZWxlYXNlMjYtbWFpbnQKKzc0Njc1IDE5N2MyYWU1MWNjNjEyYTk1NmQzYTRjZWQ3ZmVkNTQ1MGNjMjI3NjggcHkzaworNzQ2NzYgMWY0ZjM0MmJmZTJlODFkZTc4YTkzOWQzMzQ3Zjk4MGVlNDc4YWIyYyByZWxlYXNlMzEtbWFpbnQKKzc0Njc3IDIwYjlhZjFmMDBjODc1M2NhODhlYmI3MmIwMzJiNGMyOGNlOWRhZDEgbGVnYWN5LXRydW5rCis3NDY3OCA5NTkwMGRiZDVkZDMzZjUyMTI2MWE1NWRhNmVjNWM3ZGExOTcyMWI3IHJlbGVhc2UyNi1tYWludAorNzQ2NzkgYTE1MmNjY2E1Mzg5NjJlZWU0ODI1NWY1NzdiYmMyZjQ5MTM2YWYxNCBweTNrCis3NDY4MCA0ZjA5ODgwYmViYmJhNmNiM2QyMzEyYTM3MWU4YWM1MTg4YWU4ZDFkIHJlbGVhc2UzMS1tYWludAorNzQ2ODEgODk5YmJjYmFmOWE2ZWE4NTE1YzhiZmIxMmEwMWQ2MDg5Y2RmOTkzMCByZWxlYXNlMjYtbWFpbnQKKzc0NjgyIGRiMTVjN2FmMDE0ZmEwODcyNTU2MzYzOWZmZjJhMTgxNGY3YWIxMWUgcHkzaworNzQ2ODMgMGM0OTRlNTc4N2RmNmJkMGQwOTcxNTM1ZDZiMmY0ZGZjY2VjNWNkMSByZWxlYXNlMzEtbWFpbnQKKzc0Njg0IDM0YTdhOTE1ODM3MjNiNThmOTM5MjIzMGFkNmZjMTY5NTc0YmViNDYgbGVnYWN5LXRydW5rCis3NDY4NSA3ZTc2OWZkZGU0MzlmZmM4MDVkNDEzY2VjYmE1OWU4YmViZGYyY2U2IHJlbGVhc2UyNi1tYWludAorNzQ2ODYgOWU3Yjc4MzJmZDQ1MTI3OGE3ZWZjOTcyMjg4YjFlYzUxMjFhYjMwMiByZWxlYXNlMjYtbWFpbnQKKzc0Njg3IDkyZjE2Yzg3ODg5ZGEwZjQyZGUzZWFiYTY2ZmJmM2QwZmUyMWNjNzkgcHkzaworNzQ2ODggNjU3MmQyZWZjOGIyOWFhYWYyODBkODRjZDM1YWMyN2RlNDQwYTYwNCByZWxlYXNlMzEtbWFpbnQKKzc0Njg5IGM2NjQ1NWE0MTZlYzdiZmQ5MzQwMTAyYzgxNzFmZjE3ZmZiYmU4ZmQgbGVnYWN5LXRydW5rCis3NDY5MCA1M2M0ZWZkMTcwYzA1MTdmMTYxYTViMDc4Mzg2Zjc5MzAzMTI2YmVmIHJlbGVhc2UyNi1tYWludAorNzQ2OTEgNzUwMDA5NmJmMWEwN2ViMDY0YzU4OGQ4N2MyNGNmYjBmZjU2OTg0NCBweTNrCis3NDY5MiA4NjkwMWNhZTZiNjQ4M2Y5YTJkNTZlYTNlZTM0MDZhNzViMzI3OTQ1IHJlbGVhc2UzMS1tYWludAorNzQ2OTMgZDMwYTNkNTc3MTY0ZWJjZGE4MmFkMmJhZjg2OTMwNTAwODhhNWY2ZCBsZWdhY3ktdHJ1bmsKKzc0Njk0IGE3MGU3MmVmYzJhZDY5Y2RiOThhMzZmZGNlMjMzODAzNzEwMTEzNmEgcmVsZWFzZTI2LW1haW50Cis3NDY5NSA1ZTExMDg1NDVlNzg3NGE0OWMxNzc0M2RlM2RhNDc0YmQyYzVmODhjIHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDY5NiBlZDJjNWUwMDc0MTFkMDk2ZDkzODM0YTFlYWVkYzYxMTZiYjJhZTI1IHB5M2sKKzc0Njk3IDQ4MDNlNzZmMjBjNTZmZTllOTljOWI1YmI0Mjk4OGFlNTUyNzBiZmYgcmVsZWFzZTMxLW1haW50Cis3NDY5OCA3OTBjMDE5ZjY0MDM4ODczMDMwOTA4MmJmZjU1ZGM3NzM1ZDJhZjQ5IHRrX2FuZF9pZGxlX21haW50ZW5hbmNlCis3NDY5OSBkYzcyMTdjYjczYjdiM2JmMjcwY2ZmM2E4MGNjNDRiZmY3ZjdiN2JhIGxlZ2FjeS10cnVuaworNzQ3MDEgZjY0NTcwZDBmNzFkOWRiZDcwMDUwNjRhMzQ2NDQ3ODU2NGUwYzY1ZiBsZWdhY3ktdHJ1bmsKKzc0NzAyIDM3ZjVkMTc4NWJiM2ZlOGMyNzM5NjVlZmIzMDNjOGI3NjI2YmNmYzkgbGVnYWN5LXRydW5rCis3NDcwMyAzMDBkYTNjY2Y5ZmMzZjcxNGYxZDU5ODE1YWZiNjQxYjE4NjQzMjlhIHB5M2sKKzc0NzA0IDBmNzMzM2FjYTQ1NTMyMzEwYzZmNTc4MzQyMzBkMDQzZWRhMmNlZDcgbGVnYWN5LXRydW5rCis3NDcwNSBlODk1ZWY4MmMwODZjY2I4M2JkMTY1NDM0YmRjZTRjOTA2MDI1MDgwIHJlbGVhc2UyNi1tYWludAorNzQ3MDYgOGE4ZDQ2N2M4OWNjZWEwNGIxN2Q4MjdlZDg4ZGEyNjhkOTM4YjRmMSBweTNrCis3NDcwNyAwZGQwYjBkZTVlMzFmMDFiNjQ3Yzk3MjQyYTk5Mjk5YmYzZjJlMTdhIHJlbGVhc2UzMS1tYWludAorNzQ3MDggZDQxMDI0NTkzOTMxZjY5YWE3NjczNDhjYmI1NGU5YWM1ZTQ1YjdhYyBsZWdhY3ktdHJ1bmsKKzc0NzA5IDVmNWVhNzQ3ZTMxYTFhZmQ5ZGVlYjVmM2Q0YTZiY2RhNmMyNGY2ZGQgcHkzaworNzQ3MTAgY2ViNzU4MTk1Mzc3MTZjNWFhN2U1M2VjOTdhNDhkMDRkN2VmM2FjMyByZWxlYXNlMzEtbWFpbnQKKzc0NzExIDY2YTJkZTBkNDI4ZTY1ZGI0ZTY1NzhkMDg0NGYwMTQ5YWE0YjhlOGYgcmVsZWFzZTI2LW1haW50Cis3NDcxMiA2ZmU5ZGZiMTM5YzMxYzc1NDI4MGExMzAxMTBmYzRmYzYzYzEzZmQ1IHJlbGVhc2UyNi1tYWludAorNzQ3MTMgMWQxZDJkYjQ1NmQ4NmUyNjdjMDU0MGUyZGQ4ZjZkNTJhYTA4YWEyYiBweTNrCis3NDcxNCBkZTYyN2NmZWVkMTQ2NmM3YzkyMWViMjRjMjY0N2Q5NzhjOTZhOWUzIHJlbGVhc2UzMS1tYWludAorNzQ3MTUgZmQzNGZmYzhmODA0MmYzZTc2YjhkMjkxODA0MzA4ZGZmNTJiODI3YyBsZWdhY3ktdHJ1bmsKKzc0NzE3IDkxZGM2MzIyNzIyZGY4YjJhYzhjYzJkNTQ4MTVjOTBmOWQ4YTc5OWUgcmVsZWFzZTI2LW1haW50Cis3NDcxOCBmYzlhMDA3OTk3OTVjNGQwNDNiYWZkZDgzMDAzNTEyODFmYjMwZDQ2IHJlbGVhc2UyNi1tYWludAorNzQ3MTkgZTJmYTA2MDUwOGRhMDUzYzU3NDNlMmQ1MTc3MmMzOWZhNTY5MDIyNyByZWxlYXNlMzEtbWFpbnQKKzc0NzIwIGRkNmE5YmMzOTk0NjNmMDYyZWRjODA3MTE5ZWYwMDRkZDRkZTM0NDEgcmVsZWFzZTMxLW1haW50Cis3NDcyMSBlMDQwOWYwMzgyMmZiMzBmN2RmYTg1OTgzNDk5NGExOTI4MTA3ZGIwIGxlZ2FjeS10cnVuaworNzQ3MjMgNDBmZDhmZDk2ZDk2Y2RhMWNlN2M4MjY1ZDA3NTk2ZmYzMDg4NjQ2NSBsZWdhY3ktdHJ1bmsKKzc0NzI0IDMyZTg1ZDUwYzUyZGJjYjQzYTk3MWJmZGQ4N2JhM2NmNTkzNTUzNmIgcmVsZWFzZTI2LW1haW50Cis3NDcyNSAwYmM3NTlmNmRlZDVjOGZiZWFhNGU5MDA5YTFlYjIxM2ZmYjhkOGI1IHB5M2sKKzc0NzI2IGUwMTc4YjhhZWFmMDc5OGZiNmM0MzY0YmFiZjVmMzNjMzRiOGFhMTYgcmVsZWFzZTMxLW1haW50Cis3NDcyNyA5MzFhZjY2MTFhZTljZTQ1NGU3MWM1ZmUyYmY1YWM2ZDMwMTVlNDEwIGxlZ2FjeS10cnVuaworNzQ3MjggNjdkZTQyY2EwYTI2YTcwNDFiZjQyNmZhZGE3NjZkNjcxOWZiOWRmOSBsZWdhY3ktdHJ1bmsKKzc0NzI5IDRiNjM5ZjViN2QzZWJlZTBhMGFlZTQxYWM4MmRkZjQ1YzBkNjA3NGEgcmVsZWFzZTI2LW1haW50Cis3NDczMCA2ZmE5NDZkMDc1ZjRhYzM0NzA5ODdiZDAxMThiMjdiYzZhMzAyODJjIHB5M2sKKzc0NzMxIGQ1ZmM1MTg5MTk5N2RhZWY5OGMzMDUwYWQ2NWU1ZjMzNTEyYjVlZDIgcmVsZWFzZTMxLW1haW50Cis3NDczMiBlMWVmY2E2MWVlNGVkOWY5MzU2OTIxNTZkYWUzNGQzYmQ1N2FmNzQ2IHJlbGVhc2UyNi1tYWludAorNzQ3MzMgNWRlYzhhMTJlNDU1YWU5OGU3MDJhMWQ5MTM5ZDM3MmY3YTEzMjY2ZiBsZWdhY3ktdHJ1bmsKKzc0NzM0IDhmNmNmMzljOTZkZDYyMzYwMzAxMGQzODVkYzM2MzU2ODg0N2QxMzggbGVnYWN5LXRydW5rCis3NDczNSAwMGQ2Y2I2MjU2NjdmMzcxNGI0YWRiNzRhYThiZmUyYjkxMmMwODU4IHJlbGVhc2UyNi1tYWludAorNzQ3MzcgYWI3ZmQ0YmMzODI4ZjhjZTA3Njk1ODcxMzk4MmFhZWM4YjY2ZDdlNSBsZWdhY3ktdHJ1bmsKKzc0NzM4IDI1YTYxN2NhODNlMjM5MjU0NzQwNzQ5NDM2MzkxNGIxNjRkODQyMGUgcHkzaworNzQ3MzkgNWQxNTI5NmEyYTRlMWM3NWJkNWVjN2M5Y2ZkNTQ2OGFjMDZiMWU4YyBsZWdhY3ktdHJ1bmsKKzc0NzQwIDgzNWZjODU3N2RjNzkwZTJlZTQ1ZWM1Mjk4YTMzZjJlOGMxOTRlYjIgcHkzaworNzQ3NDEgN2YyYTg3OTQzOTlhMWU2MGM0MDlmMzc0NWU0NWM1YmMyZjNhMzk5NCBweTNrCis3NDc0MiAwZjZkYjAwMmIzYTFmZWM5OTg5MzJkMDZlZGE1NzZmMTRlNmM3ZDJkIHJlbGVhc2UzMS1tYWludAorNzQ3NDMgOTU4MGJiYmI1NTJlMTNhMDExMGQyYzhiNmQxYjUyZTUxZGI2MWZhNyBweTNrCis3NDc0NCA2YWZmZDZkZGEyMjlkMTQ2Yzg2MjM4NzFhZDRmNDk4Y2M5MmQ0NTY5IHB5M2sKKzc0NzQ1IDdlNmY2MTRhNmFkMThjMmNmMmFjYTFiZDk1YTc0Y2ExNjc3MmU2YjMgcHkzaworNzQ3NDYgZDRlM2FmMzQzZTMyMGE5Mjk5OTlmMTM2ZGZlZTM2OTgxOTFhYjk1OSBweTNrCis3NDc0NyAzZmIxYzFmYmUyNmNhZWY0ZDRkNTQ0ZDQyM2FjOTYzMzcwM2FhZDU0IHJlbGVhc2UzMS1tYWludAorNzQ3NDggNjIyNTAyMWJkYzM2YjE4MDljNGE4ZTQyZjA1MTNkMzczYTkyMTc4NyBweTNrCis3NDc0OSA5MmRhYTljNDFkNTYxZGQwMWRkZTY0NjZjMDI1ZGNmZGE4NWRiOGFhIHB5M2sKKzc0NzUwIGVjZDIyODUwZDIwMWNhNGJmMjc3NDEyZDY3ZDExNTljYzkyYTAxMTcgbGVnYWN5LXRydW5rCis3NDc1MSA1MWJhYWQyOGZlN2ExNDFlZDRkODAxNGZhYjEyYTM5MWQ5Y2NjZDM1IHB5M2sKKzc0NzUyIDZiZjI1MzlkM2JhYTQyMWUxOWI2ODQwMWU2ZGM2NjJiNDcwZDJkNDIgcmVsZWFzZTI2LW1haW50Cis3NDc1MyBkOWE2NjkwNWYwM2U5NWMyMDg4MmI3ZWM0ZjhhMjExNTU0ZDRlYTEwIHJlbGVhc2UzMS1tYWludAorNzQ3NTQgMzliZTNlZjgyZDIzMzZlMzI3M2YwZDUyZDA2M2MzMGYxZDc3NTg0NyBsZWdhY3ktdHJ1bmsKKzc0NzU1IDUxMTFkMzI5OTc0MTYwYzlkYzM1ZGI1YWRiYTJkZTA2YjQ0MTk4NzkgcHkzaworNzQ3NTYgM2RmOTkxNGVmYzg0ZTM5MzhjMjg0YzFhYWFjOGRjOTM1MDgyYWM1NiByZWxlYXNlMzEtbWFpbnQKKzc0NzU3IDJjOWVjNGU3ZDhjMjEwYjc3Mjc2YTU4YTZhOGZiODM2MzRmMGMyZWEgbGVnYWN5LXRydW5rCis3NDc1OCBmYWQwMjUxMzI0ZDdhYTE0NzMwOGRlNGY0ODEzODVkYzA1ZTMzZTRjIHJlbGVhc2UyNi1tYWludAorNzQ3NTkgZmZmNTliMGFkZDk4YTU2MTU3NGU3NjQwZjMzMTA3ZDgxZWYzMzFkZCBweTNrCis3NDc2MCAwNzgxYWNmZGM5NDVkOTFlYmNkM2EwOTI3ZDdjODQ4MzYzNjQ5NTRmIHB5M2sKKzc0NzYxIDhiYzRjOGNhYzdkNzIyZmJiNmRkMWQ5OWVlNWMzMzllNDIzNTQ5NzQgcmVsZWFzZTMxLW1haW50Cis3NDc2MiA3ZDljYzRiY2Q3NzYwZTU0MWZlNGJjYzg0MDliOTFmYTY4MmFkOTFmIHB5M2sKKzc0NzYzIGQwYmRiMTkzMGQ0OWU0ZTJhOTM4Mzk1MDkzZWE4MDRmODBiMDJjNzIgcHkzaworNzQ3NjQgZGQwMjc5MTY2NmUwNWI4MDRkNDdmY2E0MTdhMDY4ZDE0ODU2OGU4OCBweTNrCis3NDc2NSAyMjkzMGFmNGRkZjczNGZjOWJhNWJlZjgxM2E2NDU3YWNiNWFlY2QxIHB5M2sKKzc0NzY2IDkxMTk0NjdhYTg0ZTgyOGUzNDk3NmJhYTcxY2RkZTU1NDczOTBmNGYgcmVsZWFzZTMxLW1haW50Cis3NDc2NyBmM2EzMDA4M2ZkOTY0ZmMyNTI3YWQ0YzBlZDUxNTkzYzJjY2E1YzZmIHJlbGVhc2UzMS1tYWludAorNzQ3NjggM2M1N2QyNmI0MGM0NjdiYTY2ZGFlNjIwNzAxMTkyMGFjZTJiNzg0YiByZWxlYXNlMzEtbWFpbnQKKzc0NzY5IDY1OTQwNjZlNTA0MTY5NDE4Mzc1ZGQ5MDgyMTE3YzQ1OWQ2Yzg0NzIgbGVnYWN5LXRydW5rCis3NDc3MCBmNDRmNDZmZThkYTUyZTM4MGNiMTA5YTgzZmM1Y2RlY2M1N2E3MDgxIHJlbGVhc2UyNi1tYWludAorNzQ3NzEgZDdhZThiMDczOWU0N2FlNjRkODc1MjE3MzM4YjFkOGQzYWEwYWVmNSBweTNrCis3NDc3MiAzMTY5MjFjYzkwNGE1ZGIyZTU1OWE3MzY0ZDdkMzBkNTQzNjY4MzI5IHJlbGVhc2UzMS1tYWludAorNzQ3NzMgMGMwYTZjZmQ0YmUyMjBjODUwOGFkMTljOWVjNGNiNmVjOGRiMGI4MyBsZWdhY3ktdHJ1bmsKKzc0Nzc0IGFhYTZiNzI0YTRmY2U0NjEyZWM4MjhiM2Q0ZDA1OTllNjI3ZWUyM2IgcmVsZWFzZTI2LW1haW50Cis3NDc3NSA0M2RhNTNlNTAyZTE1ZGM0NGFkYTNlM2RmODdiODY0YTNkNDM1M2M4IHB5M2sKKzc0Nzc2IDgzOTNhOTAyMTZiMzg2YzQzZGY0MjIxMGNlNWI3MWNkYWQ5MDk0ZDcgcmVsZWFzZTMxLW1haW50Cis3NDc3NyBiYjVmYzE1YjAzNGNlM2E5NDFiYTljOGY2NWQ3Mjg2OGEyMDdhZDAzIHJlbGVhc2UzMS1tYWludAorNzQ3NzggMWEzOWE0ZGQyNzdjNDk3NDdiMDAwNGNkYjQxMDJmZGY1MGRkZTcxMyByZWxlYXNlMjYtbWFpbnQKKzc0Nzc5IDlhY2U4NjI5OWJiOGJmNGJlMTU5NzJiNDVmNDFkOTNlYWJhZjkyMzkgbGVnYWN5LXRydW5rCis3NDc4MCBlOGQ2ODFjNDQ4ZDcyZGRhNjRhMmY3OThkMjJlZmU0ZDgxYTRiZWFmIGxlZ2FjeS10cnVuaworNzQ3ODEgYWVmZjMzMTljNDE4YjQwN2JkNmM5NzRkMmEzMDZhYWZjOTQxMjcxZSBsZWdhY3ktdHJ1bmsKKzc0NzgyIDcxNWU2OTcyNTNmMjRhYzViYjZlNTg5YjhjZWY2NDg2ZTc2Mjc1ZWQgbGVnYWN5LXRydW5rCis3NDc4MyA5ZjFkNmQxZGJiMDA4MGM2ZTU1YzczNGQ4YTg0MGNiZWY5Y2RjY2NiIGxlZ2FjeS10cnVuaworNzQ3ODQgMWExYWY5ZmJkODMxNzk5YjE2MzY3YWUwZTRlMGIxNjc3MjA0MWFmNiBsZWdhY3ktdHJ1bmsKKzc0Nzg1IDI1MTNhZmY0NDVjMmM5ZWMxNTYzNDgwZmQxZGI3MWE0ODE4ZTZhYTQgbGVnYWN5LXRydW5rCis3NDc4NiA3NjQzZTI3MzA0Mzc2NGU2ZTA2NDUwNDNhMWZhNmRlOTY1OWM5NzdkIGxlZ2FjeS10cnVuaworNzQ3ODcgOTU4NGI4ZTIyZjc2ZmJhODJjZjFlZjgzMTA0MGE2MjU0YzY1Y2NlNyBsZWdhY3ktdHJ1bmsKKzc0Nzg4IDZkNDVmYmM4NWJkZjNmZGI0MjBkZTU1YTAxM2Q1OGJhNzVjMDQwZmIgcHkzaworNzQ3ODkgOWIyYTQyZmJkMDRiNDJkYWVhNWFiZGJjMDlmYTA0ZDI4YTViNjI1ZSByZWxlYXNlMzEtbWFpbnQKKzc0NzkwIGMwNGE3YzM2NTVmYzBkYjdjZTQ4OWE2YmM3YTMyNzUxNjkwYmFkOGMgcmVsZWFzZTI2LW1haW50Cis3NDc5MSA2ODU1OTUxYWZmMTk5ZTI4ZDg1MDA1YTZiYjgwZmYwNzI3NDlmM2FiIGxlZ2FjeS10cnVuaworNzQ3OTIgY2Y0ZTA4MTU4NDZjNTg0YzkwOWE2NGZmZmYwN2Y0NmY3NDVjYTM3YSBweTNrCis3NDc5MyAzYWZmNTk3OTEwYzQxYjlmMmFmMGJlYTU4MjBmMDFhODRlNDE2MDU5IGxlZ2FjeS10cnVuaworNzQ3OTQgOGM3NzcxZGNlMDQ3NGE4N2YyZTZiN2E0NTIxNTJjYTUyMmMyZDU3OCBweTNrCis3NDc5NSBkOWI1YjdkZDgyYTIyMjRiZGI1MmNhYWE0YzM4YTkxNzBjOTEwNTY5IGxlZ2FjeS10cnVuaworNzQ3OTYgMWYxZjZiZmQ0ZGZiMDQ0NDdiZmE5ZTRjNTUxMmQzNDRkZGJiN2IyZSByZWxlYXNlMzEtbWFpbnQKKzc0Nzk3IDRhYjNiNWVhZTg5Nzk4MjI4NGVlYjhmMjc2NGFhOWJmZDczNzEwZTcgcmVsZWFzZTI2LW1haW50Cis3NDc5OCA5YWQ2ZDcyYmNkYTViNTQ3YmZiNTJiNWZlMTFjODc1YWNmMWU4ZTRlIGxlZ2FjeS10cnVuaworNzQ3OTkgMjFlOTA3YTM4MzZmM2M5ZTM3NGUxYzNhYjE0ZjJhYWZhNzU1MjIxYSBsZWdhY3ktdHJ1bmsKKzc0ODAwIDc4NDdiNDA5Yjc5YzFjYjc0NWMyYmMzN2E0ODQ0MjZlN2NjODZiMTIgcmVsZWFzZTI2LW1haW50Cis3NDgwMSA0Y2NjZjNjZTE1YTA5YzYyN2RhNmQ0M2E1MDc5MWI1ZWY0OTJkMzkwIHJlbGVhc2UyNi1tYWludAorNzQ4MDIgZGE4NTNlOTgzZjA4MjRmM2ZiNWM3Yzk2ZjFlM2IwMTNhM2I5OTIzZSBweTNrCis3NDgwMyAyZDU3NWYxNmJjZWNkOWY2ZTA4Mzc4NGIzMzdiYzIzYWQyZGUzNzE1IHJlbGVhc2UzMS1tYWludAorNzQ4MDQgODUwZGFmZDRhMjQ1M2Q1MjQ2MTAxODMxNzdlOTZiZmJkN2ViNDNiYiBweTNrCis3NDgwNSA0ZTdmNmJjODEwYjM2MGQ5ZTg1NzQ4M2U4NDNjYzJkYTM0YmM4ZTg3IHJlbGVhc2UzMS1tYWludAorNzQ4MDYgYmQ0MjAzODhlNmIxZGExODk4NWE4NzQzNjA2OGYzOGIyZGRhNmI3MCBsZWdhY3ktdHJ1bmsKKzc0ODA3IGE2ZGYwNzRkMmUwOTNmYmIwYjJhNWIyM2I4YjU2Y2ZhMjZiYmVlODUgcmVsZWFzZTI2LW1haW50Cis3NDgwOCA5NDYyNDA0ZGY0ZTEwY2ZkYTFlYmZkZmM2YWZhYzY4MDRlNDM3Nzc5IHB5M2sKKzc0ODA5IGFiNGE4N2ZlZjFhZTZlNGE4NGU3ZDgwNGNjZjkxZDJjY2MzZGNiYTkgcmVsZWFzZTMxLW1haW50Cis3NDgxMCBhMzNmOTZiNDNmMjRhY2IyMTYzYzZjNWNmNjM1YTViNzQyOTVkNDI3IHB5M2sKKzc0ODExIDQxMDJiNWYyYTJmMWUzY2U2NGZkMGJjNjU3ZjgwN2JiZmJjMGFiZmUgbGVnYWN5LXRydW5rCis3NDgxMiA4NTE5ZTI4YjI4NGY3OTRhYjZmNjIwNmRiN2FhYzExZDdkMzZjNDEwIGxlZ2FjeS10cnVuaworNzQ4MTMgYTJiYWIyZDIzNzQ2YjU1MmM5ZjhmOGJjMmNlNzUwOGEyNTcyYTE1MSBweTNrCis3NDgxNCA1NjBjMDU0YTAxYWEyZmZlMTJmZmNmYmI3YTMzZGQwNzNmNDc0ODEzIHJlbGVhc2UzMS1tYWludAorNzQ4MTUgN2Q0YzNjMDgzZjM2MTk3ZjJmMzhkZTM0NjFlZGE1OGJhZWNhMDA2MiBweTNrCis3NDgxNiA4ODVkYTE0NmZlYTVhM2RmYTM1ZDliODUyZWI0Njk3Njk1ZmI3YzMwIHJlbGVhc2UzMS1tYWludAorNzQ4MTcgNTA3YmE5N2EyZWVlZjMzOTQ1NWNiZWM2OTdjODA2Yjk2YjdiOGU3MiBsZWdhY3ktdHJ1bmsKKzc0ODE4IGJiNmFkZTUxYTBiNjIzOGQxMzVjNGE2MGJiNjJiYjI0YjE1MTJhZDUgbGVnYWN5LXRydW5rCis3NDgxOSAyZWJlOGM4MWFmZjA2OTI4YzdiZWEzODQ3YTNhNzRkM2MwZjk5MmVlIGxlZ2FjeS10cnVuaworNzQ4MjAgYzJkZTMyODY2ZDBlM2Q2NDBhYmU5MmIzNDdjYTg1NDExMzkxZDQ3YyBsZWdhY3ktdHJ1bmsKKzc0ODIxIGMwMTdhNDUwZjRhNTc2OGZiNTA2MzFhNTE5NDEwMzNjMjQ0MmYxNWQgcHkzaworNzQ4MjIgZDRjMjdkYTQ2ZGNhMGY3OTliYTQ1ZTRjMGU4ZmI0ZjU2MTZjZmYxYyBsZWdhY3ktdHJ1bmsKKzc0ODIzIDc0MmNlNThhMzE3MWJjMTJlZTQ2MDM1MDZhZTllZGMxNmU5ZDQ3MzkgbGVnYWN5LXRydW5rCis3NDgyNCAzZTE5M2QwYjFhYmE4OWQ0YmRhYWQ0YzM2MjBmODcyNDU2Zjg3OTczIGxlZ2FjeS10cnVuaworNzQ4MjUgMzM4NWU2MTgyMTEyOTQ5YTcyZDRiNDk1YWJiMDdiNzBmYmE0ZDA0ZSBsZWdhY3ktdHJ1bmsKKzc0ODI2IDRlNjFkN2JkMWIzNjQ2YmEzZmEyOTA5ZTRjMTYyZTE5MzM5ZGRjNmYgcHkzaworNzQ4MjcgOTZiNjQ1NzUyYzMzNDc1YjM5NjZkYzUyNTEyYmVkZjgzMmI2YTYwZSByZWxlYXNlMjYtbWFpbnQKKzc0ODI4IDI2ZGYwYjg1NmJjYmM0ODAzZjZhMDU3ZDMxOGQyNGFmNDUwNzM3YzYgcHkzaworNzQ4MjkgNGNiZGFiNjAxYjg3ZmYzOGI0ZWZkMmJjMzhlNjAyNDQwZDRlZDg0MyBweTNrCis3NDgzMCA0YjY0ZGIzNmYwOWI4ZmRkYzI2MjY2ZjA3YTc1NDg5NzY3NDljOGMwIHB5M2sKKzc0ODMxIDMxYzIzNmM1M2IwMjQ1N2U0ZjljYTE3ZmI4ZGVkZDRkNWJiMzliNzUgcHkzaworNzQ4MzIgZjEzOTE0NDJiZDBiNWQ4ODMzN2EwZDVmZDAxNjUwYjJmZDA3YmRiMCBsZWdhY3ktdHJ1bmsKKzc0ODMzIDliMDAzYmJjYTVkYmY1YzgyYzU1NWFkNWIyZTk5YzIwNmY1MmM5MWEgcHkzaworNzQ4MzQgZDgwNzIyMDZmZGM2MWVhNjkyOWI2NTMwZjk5MWUzNWUzMDFlYmUwNiBweTNrCis3NDgzNSBiNmUzOWVlYTFiYmY2ZWYzZmIzMTU1Y2YwYTRkNTEzY2Q3YzdlOWEwIHB5M2sKKzc0ODM2IGZhOTEyNzBiNjA4N2IwZmRmMzkzY2MwODViZThkYzhlNjA5OWI3MGYgcmVsZWFzZTMxLW1haW50Cis3NDgzNyBiZTRkNDIwMDlmN2U1YmNiN2JlZWViMzQwMjNlNjZjMDMzMDU0ODgwIHJlbGVhc2UzMS1tYWludAorNzQ4MzggMzI0NDhmOGE2YzYzNmYzOWE2MTc5ODVkMTM3YTU2YWRiOWFjMzQ3OCBsZWdhY3ktdHJ1bmsKKzc0ODM5IDdhM2VkMWI0MzQxMDk3NTNhNTdkZTgyZDdhOWMzM2IyN2U2OTRkNzggbGVnYWN5LXRydW5rCis3NDg0MCAzMzRjNjBmNTEyNTk0YzgzNzZmYzMwZjUyOWUwMzk3YTE4ODBlNmQyIHB5M2sKKzc0ODQxIGIwZDAzZmEwNzNlYzVkMTY3YTAxNjQ3ZmZmMzYyNTM5NjJkMTc4NGYgbGVnYWN5LXRydW5rCis3NDg0MiAxYWQ5ZjJiZGEyMGEyNmM3NDMyNjFlM2FhMDJlZWVhYjA3NTgzYjc1IHJlbGVhc2UyNi1tYWludAorNzQ4NDMgM2FjZDMxZWFkYmI4ODA3MDQ1Y2RhMDk2YjdmNDE0MTY0YzZhM2QxMSBsZWdhY3ktdHJ1bmsKKzc0ODQ0IDY2MWM4YTkzODkyZmY3YzEwZGRlMDFmMGQ4YTVlYjYxZWNjZmVjNDAgcmVsZWFzZTI2LW1haW50Cis3NDg0NSAwZjA5ZDM4Zjg1MmU4NDdhODZhNTdiZDFjMmViZjg0Mjk5ODQyNjMzIGxlZ2FjeS10cnVuaworNzQ4NDYgNzhmZjlhNzRjYjRlOWI3ZGFhMTYxMTZlZDA2NjA2NjFiYzMwOGFjMCBweTNrCis3NDg0NyAxYjE4OTY3ZmJkNDA4MTA2OTFlYTU4MjhjOGUwMTdkMTk0NDJiYTA0IHJlbGVhc2UzMS1tYWludAorNzQ4NDggOGFiMzA0MDM0MDIxYTU3NzBmNzMwZjExN2U4ZjZlODU3NWZhMGZmNSByZWxlYXNlMjYtbWFpbnQKKzc0ODQ5IGZhYjk5ZThkMjhjMzI3NWJlZDI1MzAwZDZiYmY5ZDNkOGI0ZGMzOGQgbGVnYWN5LXRydW5rCis3NDg1MCBhZTFiMWNmNDdjMGNhMWYzMzVlYzdhYzM4NjNlZDBmMDk4MTJmZjY5IHJlbGVhc2UyNi1tYWludAorNzQ4NTEgMWUwOWRjNjhjOGYzNjM4YmY2Y2JkODMxNTY1ZmYyMGJhZDRkNGViYyBweTNrCis3NDg1MiAyZTk4NThjMGQzNjRkMWNlNGJkZjAwMjhiYTRlYTY4NjFkYzk0ZmUxIHJlbGVhc2UzMS1tYWludAorNzQ4NTMgYTJjYmI5NDIxYTExNDNhYzVhZjAzMjc4NTI1ZDdkMTYzYTg3Y2Q1MiBsZWdhY3ktdHJ1bmsKKzc0ODU0IDkwNjllNTJjMGJlZGMyNTMzMmYwMjI5OTUzYzg1YzUwYWQzNjNkMTIgcmVsZWFzZTI2LW1haW50Cis3NDg1NSBjOGNiOWVmMGNkMGEwNGQ5YmQwMGQwMTBjNmE5NGJmODk2MjgxNTE3IHB5M2sKKzc0ODU2IDQ2NjI1YmNhMGNmYjU2ZjQ5ZWZlY2JkYjg5ZTkzNjFhNDQxM2M4NWYgcHkzaworNzQ4NTcgNzZlMDhiOTFkOThlMGFkYjc0MDg3YzZmN2U1ZGE5MGUyZmZmMThiNCByZWxlYXNlMzEtbWFpbnQKKzc0ODU4IGNkYWViMjUxZDQ4OGJlMzY0NTE0M2Q0NzZmZTkzMGEwMDMzNjkxZTAgcHkzaworNzQ4NTkgMTczYmVkMGUwNGM0ODk2NTJlNTcyZmE5ZTAzZWNkYmVkNGI4MjY0NyByZWxlYXNlMzEtbWFpbnQKKzc0ODYwIDc3Yjk2YTU0MjRhMmM2NTJmNzVkZmEzZTM3YjY3NDczYjg4MmQzMTggbGVnYWN5LXRydW5rCis3NDg2MSA3YzRkNTI4NjAxMzFiNmRhOWNiZTQ5ZTFiMWRiOThmZjcxYWMwYmNlIGxlZ2FjeS10cnVuaworNzQ4NjIgOWExMDk3MTQwM2E1YWQwZDQ5YzE3ZmM3MTEzZjI0OTVmYzhjN2NmOCBsZWdhY3ktdHJ1bmsKKzc0ODYzIDdmNzI2MTE1YmEyOWEwZTYwNDYxNDgzMDI4YTI1NWYxMmEwNjhlMDggbGVnYWN5LXRydW5rCis3NDg2NCAxNzJiMmQzNmRhNzdjZDI4MzEzNjgyZTZmMmZkOWQxY2U4NGRmY2RhIHB5M2sKKzc0ODY1IDQyZjg4MDgzZGRiZGYzZTE4ZjUxYjMwNGYwMWJlOTM2OGYzODhmNjkgbGVnYWN5LXRydW5rCis3NDg2OCA1ZmVkNWU4ZWE5Y2MzMzMyNjdmYzdkNjg4MmJiNDc1ZWQ5NDlmMmE4IGxlZ2FjeS10cnVuaworNzQ4NjkgMzhhNTJiNjcyNDI5MjYwMzBkMGJkNDkxNDM4NzkwNGQ3NTA3NTVjMiBsZWdhY3ktdHJ1bmsKKzc0ODcwIDBmZjM3ZTIwMDI5MmM5MzZiZjY5NDRhNGFjOWJjZDA1ZDk0ZjNkNTggcmVsZWFzZTI2LW1haW50Cis3NDg3MSAxMmYxNDVkNzU1MTNlYjk4NmFhNzhmMDQ5MzYxMzdiZTc2NjlkODM3IHB5M2sKKzc0ODcyIGE5ODA5ZjNiMTY0ZmZhNmYwZDhlZjMwZmNhNjE4ZDIwMjgzYzI1YjEgcmVsZWFzZTMxLW1haW50Cis3NDg3MyA4YzNiMmRkYTQ3MDM2MGU1MjI1MWQzNjVmZTE3NGI2MzBlOGI5YmY0IGxlZ2FjeS10cnVuaworNzQ4NzQgZGM5MjJhODljY2YxMGMzOGZkNmRhNWEwZGJhZDdiNDAwMjk0ZWIzZSByZWxlYXNlMjYtbWFpbnQKKzc0ODc1IDBhNTgwZGM3YWYxMzc2NDA0NTUzZmY3NTNmMTYwYTVhNzc2NTE1NWUgcHkzaworNzQ4NzYgNmY0Yjg1MmI4MmYxNzUwN2M1OWFlYWFkZDI5OTdiNTZjZTQ3OWY4NSBsZWdhY3ktdHJ1bmsKKzc0ODc3IDlhY2I4ZWI3MmE5MmZhNWY1MzE4N2I2MmY5YTMyOTlhZGViMWUwYjIgbGVnYWN5LXRydW5rCis3NDg3OCBjYTkyMGMxNmIyMDU3ZThlNDU1MjExMTAyMzk2YjI5M2RkYWQyMmUwIGxlZ2FjeS10cnVuaworNzQ4NzkgZTBkNWMwYzM4MDhjZTE4ZDBmOTEyZGExM2VkMDdmNzIxNGZkZTczMCBweTNrCis3NDg4MCBhMjdhYmQzNTNlZDFjYTEzNGM4OTczY2M2ZTRkNGFjMGRhOTViMGNlIHJlbGVhc2UzMS1tYWludAorNzQ4ODEgYjFiNjE1YTkxMWYwMzFmMGJhNGQzY2Q5OTk4YjM2OGZmNjE4YmQ1NiBweTNrCis3NDg4MiBlNDk3NGU5NWZhNjQ5ZWVmNjg1ZmUyODAyNWNkYWZlNzhmOTE4M2E3IHB5M2sKKzc0ODgzIGIzOThhZmVmZDM2OTY3YTJiZmIxZjhjZTkxYjliZTgwMWQ2NjdjN2QgcHkzaworNzQ4ODQgYmEyMjhlNWMzZGFmNzk2Yzg2Nzg4MDlkNjFmYmUxYzM2NmU2ZjZiZSBweTNrCis3NDg4NSA5Y2VlYjYwMmRkYTNiOWI2ZTI2NDY5OTZhZDZjNzEyMWRlYTAxYTEyIHB5M2sKKzc0ODg2IDBlNDRkY2MwYjIwZDM5ZDcxOTNjNjUzYWYyMDg0MTVjZTEzN2RmNmMgbGVnYWN5LXRydW5rCis3NDg4NyAyZWExZmMyNjg1NDI1MmM3Y2QyMjNhOTdhMzhhMzFkNjY0MGE5ZWVkIHJlbGVhc2UyNi1tYWludAorNzQ4ODggZDNlZTczOGZkY2RiMTdjZmMzNmQ0YjI5NGVjOWNiZDEwODVmODBkYiBweTNrCis3NDg4OSAwNzJlM2UzMGI1MGNjMjFkYjIyY2YzNTkyNzdlNzNmMTgyNzI5ZTI1IHB5M2sKKzc0ODkwIDU0N2Q0MWIxZGU5NzM4MWJlNTMxMmZmMmNjNjJiNmFlYmZkYzljOTIgcmVsZWFzZTMxLW1haW50Cis3NDg5MSAxYzU0NmNmM2ViMTBkNmQ2ZWNjNDMyMTNkNmE0ZDgyNDZhNzIxMjIzIHB5M2sKKzc0ODkyIGQ2MDFmZTM3ZmM1NGNlMDE4ZjM3NmI0M2JjODdhMmY2MGI0MDhmMmMgcHkzaworNzQ4OTMgZmQyZjRhZTkzZDAxMjdlZGZjNTkzNjk5ODgwMTdmMWRkNzU3MzIxZiBweTNrCis3NDg5NCBiNjNjNzE4MDYxOGUzNDhhNDI3Y2RjNTIyZWE5OWE5NDZhZTczZWNkIHB5M2sKKzc0ODk1IDk5M2VlMzllOGJjZmVmYTlkYTVlMDk1YzdkYmRjNmI1ODRhZDI0ZWEgcHkzaworNzQ4OTYgYmFlOWY0ODIzYjhlMTFiNTQ2NDg0NzcyZTc1ZWJlM2RmNTNjOWVmOSBsZWdhY3ktdHJ1bmsKKzc0ODk3IDVhMWU4Nzk4MzJmZTMzYzc3MTY1NmFiNjEwMjlmYjAwZmUwMDQzMGYgcHkzaworNzQ4OTggOTgxNzkxNWViZGViYzUxYTgxOWM5NGI1NzAwZGM0MTU3NDJiOTZjYSByZWxlYXNlMzEtbWFpbnQKKzc0ODk5IGRlMzM1N2MyNjBiNjA3Y2FjZjM2ZTc5NTVlNTFmMDM1YWFlYjRkNGYgcmVsZWFzZTMxLW1haW50Cis3NDkwMCBkYTA0YjE1MmE2ZmUzZjY2ZmI5NDUzOGNmOGY1NDRhYjliN2NiZjZmIHB5M2sKKzc0OTAxIGIzMjZlN2Q2NjQxMzRhODNlZGZhZTBkN2M2ZDQ0ZTQwMjJkZTVhNTggbGVnYWN5LXRydW5rCis3NDkwMiA3YTVjMTE5Yjg2NjkwMmY2MjA2MmNmYTMyMzA2ZjZjOWZmZGUyN2Q3IHJlbGVhc2UyNi1tYWludAorNzQ5MDMgODRmMWM5NWI0ZTk3NDhmOWE1NDk5M2NhNjY5ZWYyZWU1N2Q4OGEyMyBsZWdhY3ktdHJ1bmsKKzc0OTA0IDZmY2EzNTM1MmY3Yjc4MTY0YmYyYjMzOGMyMTYxZDVmNTZjOGU2OWMgcmVsZWFzZTI2LW1haW50Cis3NDkwNSA0ZjE1YTEzMWFiMDcxOTVjY2NjODM1Mzg3M2NkNjk3YzYyYzBhMDAwIHB5M2sKKzc0OTA2IGM3NmY4NDM4MzhhNWZhMDU3NWRkZmI0ODE3OWM4YjQyZDNiM2E2MjggcHkzaworNzQ5MDcgMzI4OWZmYzA1Y2M3ODQ0OTQ1MTNlMmVlN2U2MGFmYTA1MjE1OTNhMyBweTNrCis3NDkwOCBiMzVkZDFiNjI0OGUzOTM5Njg1OWI5MDQwOTk0YWIyZDI1NGViYjBhIGxlZ2FjeS10cnVuaworNzQ5MDkgYTQ0MmMyNTA0YTU3ZTFiNWI3MTdiNzg4NTYxZjBiMjY5ZjM5ZWZhYSByZWxlYXNlMzEtbWFpbnQKKzc0OTEwIDM3ZTk2MjQ2YmRhMWM2NDkyNjkyMWJlMjMyNTIyNTA2ZjJiNmM0ODcgcHkzaworNzQ5MTEgZGE4MTg2MTY4NGU4OTNhNjQ0ZjczYzcxNTA5MmQ4MDgwNzhmOTJjMyByZWxlYXNlMzEtbWFpbnQKKzc0OTEyIDFkMmU2YzQ0MWE1M2YwMTVmODY5MTJiM2QyMDRkNDk2MGJhOGY1YTEgbGVnYWN5LXRydW5rCis3NDkxMyA3N2UwN2FmNmY4N2EzYzg0NTU4MTQyODQwMDRiNTVjYjJiYzM4N2Y1IGxlZ2FjeS10cnVuaworNzQ5MTQgZDRlMDM2YzZjNjBkNGE0MDBkZjY4NjJiZTBiMWZmZTJlNGUzMzFjNiBweTNrCis3NDkxNSA4NWVmMWMwNGQ4ZGRmNWNlYThhYTk2Zjc3MGMxMjBkNTNmN2VkNzVjIHJlbGVhc2UyNi1tYWludAorNzQ5MTYgNTE3NDhkZmNiNDQ0YzcwMDQ0ZTU0YjkxMGY5Y2IzMTU4YjQ3MjZkMyByZWxlYXNlMzEtbWFpbnQKKzc0OTE3IDk5MzFlMTc3ZGE4MTM4ZWIwOWI4MjhiYjliNGRhOGRhNTAxYmU1ODQgbGVnYWN5LXRydW5rCis3NDkxOCAzNzUzOGI1NTBmNjg1YWYzODFjMzRhZTM2OTVmMGFiYjBhNmM0MDY0IHB5M2sKKzc0OTE5IGZkMTg3NzQ1MzA2MDYyNTI3MzdkMzk0YmM1N2IyNTBmYmExZGMxNmMgcmVsZWFzZTI2LW1haW50Cis3NDkyMCBkMWQzYTA3YTBlZDdmNDlmMGY2MTEzZTAyZTZmZjNkMDhjNDIwODExIHJlbGVhc2UzMS1tYWludAorNzQ5MjEgM2M4M2EzY2FjZDc3OTg1YmU4MzU1ZDNjYmVlYWZkZGRjMDAwMTVhZSBsZWdhY3ktdHJ1bmsKKzc0OTIyIDA0M2ZkZGE3MDZhMzc2ZmNmYzMyNTM4NTkyODMyOTIwOWQ4ZDQyMjIgcHkzaworNzQ5MjMgODIyYTI5Zjc2NjBiNTE3ZmVkNjdkYzA0YjVhMGQ4N2JlNjg0MzY3ZCByZWxlYXNlMzEtbWFpbnQKKzc0OTI0IGI0Y2E1OTQ4NDkxNDNkNjU2M2VjNzE1YjNkOTljNTRiMTY0ZmVjYTUgcmVsZWFzZTI2LW1haW50Cis3NDkyNSBmMjU1NWFkNWZlMDllYTAwMGM2MGFhYzI5ZGI1YjQzMjJjNmFhZTJlIGxlZ2FjeS10cnVuaworNzQ5MjYgMjIxMWFkM2U3YmJlZDRiOTM4NjhiODVkN2JhZmFmODQ1N2U3ZDcyYyByZWxlYXNlMjYtbWFpbnQKKzc0OTI3IGIwZTUxMDVmZjk3YmI5Y2M0ZjJhYjlhMjlmNmZmNTE0NGVhYTlkODYgcHkzaworNzQ5MjggN2IyYmQzOWIyMWNkMWM2YmFkNTlkMjA0YjE2OWZiZGIyYTkyYjY0YSByZWxlYXNlMzEtbWFpbnQKKzc0OTI5IGY2NGMwZWI4Y2M2MjA5ZjRjMjRiZmY1YzMzZmJhZDIwZDc4MzY5NDIgbGVnYWN5LXRydW5rCis3NDkzMCBmZGEyOTJmMzE2MzI0MjJjNjVkZGMxZWU3MjU0MjMzNGY2NDNiZjQzIGxlZ2FjeS10cnVuaworNzQ5MzEgZjEyY2U3YWRiZDMwMDA5MGQ0MmI4YTMyMTNmYzY0ZWYwNDg1NjdhYiBweTNrCis3NDkzMiA2MTZhNjY5YzkwMjNmZTc0NzNhNzViMDk3OTNjMjc1OWU2YTlkNGI5IHB5M2sKKzc0OTMzIGI0YmI0YmI4Njg5Mjg5OTY1M2M5YzE2Mjc1MDIyMWQ4Yzk4N2E5ZjggbGVnYWN5LXRydW5rCis3NDkzNCBkZTY1OTA4OTczZDAyNDM5MWVkOWMxZWRjZWZmOWQ0MzczMmI2YjcxIHB5M2sKKzc0OTM1IDFiN2JkYWUwMjE3OTQ3MGVlYjIyYjE4NzQxZWY2NTM3ZjJhZDMzN2QgcHkzaworNzQ5MzYgY2MzMjliYjE5ZGE1ZjFhOWZjMzg1MzYyOGNmY2ExZTQ2M2VhZWExNSBsZWdhY3ktdHJ1bmsKKzc0OTM3IDI0M2ZhZjBmNWY1ZTQzMTAzNWViNDMyNGQ0ZWI2ZDIwYmM4MmNjNjUgbGVnYWN5LXRydW5rCis3NDkzOCBhMmIyY2MwZmE3YWQ0ZDBmNDk0YTQwMGVmZDFmMWJlNjg3NDRhMjA0IHB5M2sKKzc0OTM5IGNmNzVjMGQyZTNjNzZiMTJkODkzYzY5NGY5YmYxYTE1MDlhYmFjZDEgcHkzaworNzQ5NDAgYzViMTUwMDE3MmY4OWNmNzU1YTIxMzNhMjIzODA2NDAwNTEzZjAxYyBweTNrCis3NDk0MSA4MzE1MjVmMTVjNTcwMjkxMjJhMTJhYTNjZDY0Y2IxZDI0YmZkOTVhIHB5M2sKKzc0OTQyIDA3NTIxMzlmM2RhMWQzYWNlNzI3ZjEwYzkxOWRmNGYxZDcwMDQwMmIgcHkzaworNzQ5NDMgNmEyNzhlNGQ5ZjYxOGRiMmQyYmI1NzQ4ZWQ1NjUxMzMyNzA0MWNhZiBsZWdhY3ktdHJ1bmsKKzc0OTQ0IDMwY2M0ZjA3MzI5MmVlYTI2ZDFmMTMxNWZiMTE0MzYxNDFlZGI1YmMgcHkzaworNzQ5NDUgNThiYTg1YzBkNGIwYjBmZTlhMGY4MmE4MGM5ZjU4NmRjN2JiOWI1MCByZWxlYXNlMjYtbWFpbnQKKzc0OTQ2IDQ1MTQ1YWViNjMzMTBiMjMyMjNmM2RjMjI0NGU1YmNlYWI1ZWY2MjkgbGVnYWN5LXRydW5rCis3NDk0NyAwMDA3MDI0ZTllMjM0OGU3ODM1N2Y5ZjhlNTY3OGU0NmU1NmMxYTNlIHJlbGVhc2UyNi1tYWludAorNzQ5NDggNGM3MzQ5YjlkMTU5YTdhZGEzNTAxZWJjMTkxYTg4MWQ2ZGM0YTNlZSBsZWdhY3ktdHJ1bmsKKzc0OTQ5IDFlYjQyNDI1NzM0NWNkYjc2YmViYzE0OTM2ZDM0MTc3ZDFkOTVmNmMgcHkzaworNzQ5NTAgMWIxODM2Y2ZjZjI2MmE5MDgxODlhZDRjNTI5ZWE2YTQ2NzE3YmM5NiByZWxlYXNlMjYtbWFpbnQKKzc0OTUxIDgwYTM4Zjg5M2I3ZjNmMDhlNjQ5MjczOThkZjVlMmRlZDQ5YTdmYmIgcmVsZWFzZTMxLW1haW50Cis3NDk1MiBhMDlkYTU2ZTQ3OTY5ZWZhZTEzYmFkZTk4M2VkMDU5ODQxYmY0ZTM5IGxlZ2FjeS10cnVuaworNzQ5NTMgMzliNDYzMDc5N2ZhY2U3ZjRjMDRhYWE3OGQ3MGRiYWMyM2NhYWZiNSBsZWdhY3ktdHJ1bmsKKzc0OTU0IDY3OTFjMmIxYTdkYzk4OGRmMTYwYTA4MjZmOGNiM2M2MDQ2ZDQzZDMgbGVnYWN5LXRydW5rCis3NDk1NSA0MTZiNjQ1NTA3ZDBhODQzOTg5ZGZhNjUyYmJhZDhkYmExZGQxNjI3IGxlZ2FjeS10cnVuaworNzQ5NTYgOGNjYzIzYWZlYTNkMTg5Njk5OGYyYzIzZDkyYTU4MDYyZDFiNGQwYSBweTNrCis3NDk1NyBlYTY5N2NkZTY4ODIzNGY3YjJiYzVlMGZkNTIwZDcwMmE3MmVlMDNkIHJlbGVhc2UzMS1tYWludAorNzQ5NTggZjU0ZDMxZTVmZDRkNmYwMGJkOTU5YzFhNGRjYjdiZjY0ZWYyNDI2NCBsZWdhY3ktdHJ1bmsKKzc0OTU5IDJjNWE3NzUwYjcxZDgyMWQwOTAxNGUzOWNmZjIyYWVjMDYxMWU3ZmYgcmVsZWFzZTI2LW1haW50Cis3NDk2MCBiZDg0ZjQyYzM2MzM5NThiOWQ1MmNhMTNhMzJmNTNjZWFmOGExNWVlIHB5M2sKKzc0OTYxIDUyMmJlMzZiMjljZDIxNDgxYjhkYjI1NjVjNjA0YzlmNWI5NDVkZTMgcmVsZWFzZTMxLW1haW50Cis3NDk2MiAyZGRkZGM2NDFhOTg3M2YwMmZhOWY4M2YxZTZmYTIyZjdlZDJlMGNiIGxlZ2FjeS10cnVuaworNzQ5NjMgMjcxN2Q4NWFiYTJlNmJjM2U3MzA5MTU2ZWEzMzMxMGM2YTBkMTU4MyByZWxlYXNlMjYtbWFpbnQKKzc0OTY0IGU1NjFmMTBjN2IzMTE5MjhiZTc2MDkxYmFlMjZlMDNjYmNlNWMyNTcgbGVnYWN5LXRydW5rCis3NDk2NSBkMTMxOTU2NTMzYmYxY2Q5Y2E4ODM3ZTE2ZjFmZTU0MWI0ZTEzMmU1IHJlbGVhc2UyNi1tYWludAorNzQ5NjYgNjllZTE1MDFiMTAyNjljM2Y3ZWQzMWEwMzkyY2IxODM5YTdhZmY4NSBsZWdhY3ktdHJ1bmsKKzc0OTY3IDQzNmNhNzc1ZjI2Y2FhODg0OWU0ZjliZGY3YjkyMDMzYTcxYWZkOGIgcmVsZWFzZTI2LW1haW50Cis3NDk2OCAyMjU0OGM3ZWFmMzc1YmQ3NmUzYzcwNWYxMGEwZDNlMTRjOWVkOTgwIHB5M2sKKzc0OTY5IGIzZDI1ZTZmNjZmMTJkZTU2NDk3NDU2YzVjYTIzYmFkNDMxOWM5YmYgcmVsZWFzZTMxLW1haW50Cis3NDk3MCBiMGEyZmJhMDA0NTg2MTE5MDhhOGRiYmM2YTgyZDMxZjBkYjcyMTJhIGxlZ2FjeS10cnVuaworNzQ5NzEgMWM1MGRjMjEzMzEyZGM2NDU3MzM3OTM1ZDI3OTVkOWZkZjNiNmFkYyBweTNrCis3NDk3MiBkOGMyNDhhNTkzMTA1MGExZjk3NWMzZmY5Yjc2NDk4MmY3NDMwODlkIGxlZ2FjeS10cnVuaworNzQ5NzMgOTgxMDRhYjg1OWZhOTY3YjVhYjRiNWFjOWRlNGQ5MGI4MWE5OGI1ZCByZWxlYXNlMjYtbWFpbnQKKzc0OTc0IDgwNmM2MzYzODVmY2NkYmFiYjU4Njg4MTRkMWFkMjI4NGJjM2UxNzQgcHkzaworNzQ5NzUgN2UzOTg1ZmFmOWE4YWNmZTAyN2IwZDhiODkzZWFhNzgwYTM5MWI3ZiByZWxlYXNlMzEtbWFpbnQKKzc0OTc2IDdhM2ZkZDkzYjU2NjRkYTI1MTRmZmIzYTQ5NWM1ZDEwMWQ5ZDIyYjMgcmVsZWFzZTI2LW1haW50Cis3NDk3NyAxZGI2ZWU5ZDdiZTdhMWQ2YzUzM2FhMDdiYTI1YjA5ODVjNmU3ZjVjIHJlbGVhc2UyNi1tYWludAorNzQ5NzggZGI5N2MwNDJjYzFlZDViOTVkYTg4NDRhMzk1MDdlNGNjZTEzMjhkYiBsZWdhY3ktdHJ1bmsKKzc0OTc5IGNiMzQyOGIxZjRhZjI5YjI1YjQ4ZDI5NzY1NWFlMmVhODQwYmNiN2EgcHkzaworNzQ5ODAgMzM5M2ZmYzBkZTQ0ZTZhM2NiY2JiZDJjYTczZDc5NGI1ZmEzZjVjNiByZWxlYXNlMzEtbWFpbnQKKzc0OTgxIDkyMzQzMDVkMzc0MDM4N2E3MzI2ZDM0OWE0N2UzNTYxMDg5MDcyMjkgbGVnYWN5LXRydW5rCis3NDk4MiA2ZDhiNTRiMjFiODc3ZWZmY2NiMmIxNTU0Mjk0ODRiMWMzOTJkN2U1IHJlbGVhc2UyNi1tYWludAorNzQ5ODMgMjczYzIzNDgwMGMxODQxZDMwYmJlN2I2NDg1MWI3ZDBiN2I4YzEwYSByZWxlYXNlMjYtbWFpbnQKKzc0OTg0IGNjM2Q4YWZmNDU5NTYwY2E0NGY4ODU1MzFlM2U3NWEyMzdkZTBhNjMgbGVnYWN5LXRydW5rCis3NDk4NSBjNTk0OWUxMmM2OTI5ZWQ4ZGI2MWI0ZjUwYWVkZDZlYzQ3ZTJjOGQ0IHJlbGVhc2UyNi1tYWludAorNzQ5ODYgOWM5MTY1YmQyOTNhZTI0OTg2NjFiYzcwNTY5ZmNhMGEyNTYxOTk3ZCBweTNrCis3NDk4NyBjNjNmODkyM2UyNGY2OGI2ZWYzYmVhMmQ1ZTU4MDIxMTdmNGJmOTkyIHJlbGVhc2UzMS1tYWludAorNzQ5ODggMmRmOGJlZGVjNmQzMzM4YzM3ZGY3NjMwYzU1Yjk4N2ZlM2VmM2Q5YyBsZWdhY3ktdHJ1bmsKKzc0OTg5IGE5Y2UxNTg5ZDY5NGQyOTg2NTU5YjViZGRlOTc1NzUwODljZjZiNGIgcmVsZWFzZTI2LW1haW50Cis3NDk5MCA3YzQzNDY4N2I0MjkzOTZlMTdhYTVlMjExZGMyYmI5Mzc2ZDE2MmIzIHB5M2sKKzc0OTkxIDQwMDhhMDEzN2RlN2IwZDY4MDIxYWFlODg0NjdiZTgxZTcyNWVhMDkgcmVsZWFzZTMxLW1haW50Cis3NDk5MiBkNjI3YzU4OTJmZDU0OGVmNDYzYmY1MTAzMWEzYzc1ZTEyNTMwY2FmIGxlZ2FjeS10cnVuaworNzQ5OTMgNWM4NzAwY2M5ZDE2ZWQyNmI5NGM0ZmFlNWJmMTNkOTcwMGU0NjJhNCByZWxlYXNlMjYtbWFpbnQKKzc0OTk0IDdhNzY0MmFiMTFiMzkyN2NkMjJhNDdlZjllMzIyZjkzYWNjOWY3NGEgbGVnYWN5LXRydW5rCis3NDk5NSA2MjdiMzQ5ZGYwZThlMjc5MTdlYzRmZTdlMTM0NTA5N2MwNjI0MWYzIHJlbGVhc2UyNi1tYWludAorNzQ5OTYgMDE4ZjJlYWUyNTI2ZmUyNGRkZDQ5ZDNkNDBmMWI2Zjg3YjYxZWIxNCBweTNrCis3NDk5NyBmOGU2OTZlNGNmZjFkODA0YjRjZTZhMDY1Mjc5N2NjMzBkZWRiYjc1IGxlZ2FjeS10cnVuaworNzQ5OTggYWY3YTEyMDBmYjNmMzVmMDFkNDIwZmFmNzViM2Y1YjM2ZTUwMjEzZCByZWxlYXNlMjYtbWFpbnQKKzc0OTk5IDRiODNlYTZmYzViZGUyMTYyNzMzZTE1OTc1N2QwNDRjY2RhNzJlMWIgcHkzaworNzUwMDAgM2EzZTE0NWQ1NTJjNWM5YjAyOTNhMmE3ZjFlYTM4MzA3ZGRmMzA1NSByZWxlYXNlMzEtbWFpbnQKKzc1MDAxIDFmZmU2ZmIxOWExOGRkMDk4OWJhY2E4NTU3NWEyNTljNTQ1YWZjMzAgcmVsZWFzZTMxLW1haW50Cis3NTAwMiA3NDM1ZDU5MWEzMjU4M2FlMTI2MWFiOWRlZGUxYTQ0ZDUyM2Y4MWYyIHJlbGVhc2UzMS1tYWludAorNzUwMDMgYjc3N2UwZjBiNTdjYTIxMTkwOGQzNDM2MzA4MmU3ZTQ1MzFkNTgyNCBsZWdhY3ktdHJ1bmsKKzc1MDA0IDVmNjNiNTE0MjcyNTIwZmI5NzAwYzYyZmU1YjI4NjE5OGZjMjUwNmUgcmVsZWFzZTI2LW1haW50Cis3NTAwNSBiNzM0ZDZiNTE4NTI5NGM1Yzg0MzBlMmJlMjlhZGUzYjVkNWQ5OTUzIHB5M2sKKzc1MDA2IDM1N2M3NWQ1OWNlOTk0YmQ2NjQ0ODBmMDMxNDdjNjY1NTgyMTE3NjYgcmVsZWFzZTMxLW1haW50Cis3NTAwNyBmNzNjZGFlMTk3YzRkMWUyYTA4YTRiMzMzNWJhY2VhYTY0NDIzNmIzIGxlZ2FjeS10cnVuaworNzUwMDggNzhlMDBlYjQ1ZGJiNDBkOGFmNGVhOGVlZDkwZDMzNmRkODM1ZTlkOSByZWxlYXNlMjYtbWFpbnQKKzc1MDA5IDFmNWY3ODgxOGM1MWU4MzRkMjhiZTA0ODdjOWFhZjMwZjAyNDExNjMgcHkzaworNzUwMTAgODJkNzk3ZmY5YWEzYzM4YmY3ZjI5NjhhMzliNjFjZjVhMTJmMGFiNSByZWxlYXNlMzEtbWFpbnQKKzc1MDExIDRjZTRkYTg0N2Q5M2YwNTAzZDI5MDRkMjM3Njk1NWQxN2Y0MzZhN2QgbGVnYWN5LXRydW5rCis3NTAxMiBjMjM5MmE3OTcxNWQ2MWQ2YTIxMGFjNjJhOTRjZGY5YzkxYWMzMGU3IHB5M2sKKzc1MDEzIDU3NGE1MzJmYjQwYjE4NmU4ZTdiYTNmYTU3NjZmYmY1OWI4MWIyYmIgcHkzaworNzUwMTQgYWZkYTA4Nzc2M2FmMWVkZWQ5ZTEyNzg0MGMxNzQ0NTgyOTQ4NTIxMCByZWxlYXNlMzEtbWFpbnQKKzc1MDE1IDc3MTkxZjNhMWQyN2RkYzcwMTQ5NTliN2MyYzE3N2MwYTcxN2JhNWQgbGVnYWN5LXRydW5rCis3NTAxNiA1YjhiMThiMDBkNGNmZjA1ZWNmM2UwODQyMWM0ZjMzODUwNmE1ZmM4IHB5M2sKKzc1MDE3IDU1NTdiYzhjYmY2NWY5OTRjZTYxNTIzOGM5MGQ1NGFjN2U2ZjM2YzUgbGVnYWN5LXRydW5rCis3NTAxOCAwNmNlMjdhODJlOTllN2ZlM2VkODRjNDU2MTMxMmQ0ZTZjNTFiMTkzIHJlbGVhc2UyNi1tYWludAorNzUwMTkgY2FkYmZjNzNhM2IwZDY2MmYxYTY0MGRkMTI5YzgyM2FiYmNiMjM3NiBsZWdhY3ktdHJ1bmsKKzc1MDIwIDljNmE5ODNjZjZhOTNlNWNlN2ZmZTlhNTNmZjFlNDVhOGVjMzJjZmIgbGVnYWN5LXRydW5rCis3NTAyMSAyYWU5M2VhYzQyMGUyYWI5YTljNmNmOTRjYzljNmI1ZmM4YzY3YmUyIHB5M2sKKzc1MDIyIDRjYTExNWYzM2I2YjhmOTY4MzNhZGMzOTlhMTRiOWUwY2Q0MzIyNzIgbGVnYWN5LXRydW5rCis3NTAyMyA0YWE3ZGU2NjEzN2ZjYzNmMzZkYjFkMDVlODc3ZmU0ODUwZmYwMmZhIHJlbGVhc2UyNi1tYWludAorNzUwMjQgMzIyOGJhZmJlNmM5Mzg2NThiOWU4NGIzNTQ0NjAwYWRkZTcyYWEzOSBsZWdhY3ktdHJ1bmsKKzc1MDI1IDJkMzRhNzRmMDAxNzIwNmZlOGQ3MGNhNzA3ZTNmMzUxMjMyZThhMzMgcmVsZWFzZTI2LW1haW50Cis3NTAyNiBjYWUwNTNjOWY5Y2FjZTRiZmVhOGVjNTJkOTJkYzg4YzQyNzE1NjIxIHB5M2sKKzc1MDI3IGIxOWE4YWRkMTEyZjg4MmQ1Y2YwOTMyOTMzZGQxNWYwM2Y0NTdhZTAgcmVsZWFzZTMxLW1haW50Cis3NTAyOCBkNTk5YTNmMmU3MmQ2ZTBjNDNlNTdhM2E4ZGJkMzYyNzdhYjE3MDg2IHB5M2sKKzc1MDI5IDFkMGQ2Zjc0Mzc4YzZiNTJjN2JhNzQ1Mzc3ODIwMTFmZDY2ZDMyMmUgcmVsZWFzZTMxLW1haW50Cis3NTAzMCA2MDBlZDJkZDc2NzI4OTE5NzdkZDg0Yjk5NDIwNWExYWU0NTE0ODdhIHB5M2sKKzc1MDMxIDljYWM4YmE2ZjRhOWRjNTllY2U4ZjJhZTJiZjFmMzAzZTIyZjc0ZjIgcmVsZWFzZTMxLW1haW50Cis3NTAzMiBjMjRmMDAwMTgyZjQ1NTVjZDU5ZWI4NmE4MDE1OWY2ZmZmY2Y0M2Q0IGxlZ2FjeS10cnVuaworNzUwMzMgNjg4OTlkYzExN2ViMzVmZDM5NmJmYjRiMGQwN2IzZGI2ZTYwYjY2MyByZWxlYXNlMjYtbWFpbnQKKzc1MDM4IDU4NGRiMDNlNTI0ODA3YTRlNzllNTAzYjliMzNlZjM2YWM5NjBiMzkgcmVsZWFzZTI2LW1haW50Cis3NTAzOSBiNGFiNDllMjgzMDUxMDNjOTI1MWRmNDNjMzI2Njk2OWEzZDEyNWEzIGxlZ2FjeS10cnVuaworNzUwNDAgOWRhZjg4NDBhNDczZTA4ZTU0NzA0NTJhNzgwNGFkYTc1YTQzYmEwZCByZWxlYXNlMjYtbWFpbnQKKzc1MDQxIDUzYTZiMzllZTRiNjZkOTQzYzM3NWRjMjU4MjJkYjc1MTMyNjRhNTcgcHkzaworNzUwNDIgM2ZkN2YxMjI1NTZhOTYxYTVhOWRmNWM3ZTE3MWJjYmI2NzlmODJhYyByZWxlYXNlMzEtbWFpbnQKKzc1MDQzIDdmN2NmYWEzODMyZTNlMjVhM2RhZmQ4ZTA2YzA3ZGNjNjU3OTc4YmQgcmVsZWFzZTMxLW1haW50Cis3NTA0NSAxZDBmNDE2ZDRiYTY0MmYzNWU4YjAxMjA3MTI2YjQwZmNiZTgyNDExIHB5M2sKKzc1MDQ2IDg5NjY3MGQ0MWM5Zjc0YjMxYTgyMjc0MjE5MzA3MTFiZDQ5ZWUxMGYgcmVsZWFzZTMxLW1haW50Cis3NTA0NyBmOWE3MGYyMjU2MjUwZTcxYWEzMGJhMzMzZGY3NmY4YzMwMTBjMTliIGxlZ2FjeS10cnVuaworNzUwNDggNzg1ZWNjYzAyNWFjNmU5ZmRkMDczN2QxMzcwZjNjMmEwNmY3MDQ3NiByZWxlYXNlMjYtbWFpbnQKKzc1MDQ5IDY1NmQxZDQwZmVjYmZjNTU5YzVmN2RhODEwZDhkOGUzNGQwOTEyNzEgcHkzaworNzUwNTAgNTkyYmI4MjU5YzU0Mjc4MDQ1YTNhYzE1OGU3MmQ1OWI1N2JkOTNlYSByZWxlYXNlMzEtbWFpbnQKKzc1MDUxIDBmNGU5NWZmODU5ZDJjYWM2MDA4NGQzNTVkNzMwZDZiMWI2ZTY1NzkgcHkzaworNzUwNTIgMjhlMmNlMDBmNTQ1YmY0ZTU3YTdhZWFhYzQ0ZDNjZGM4OTU5YjRmYyByZWxlYXNlMzEtbWFpbnQKKzc1MDU0IDNkZWY5NTJiNTE1YzJiNDU4ZDk0ZDIwNGZmOGFlY2Y1MTgyZTYwNTcgbGVnYWN5LXRydW5rCis3NTA1NSAzNTY3ZTg3MTU3ZDgzNjMxYTE2M2E5MWFiMzQ4M2M3NzRmODNhMWExIGxlZ2FjeS10cnVuaworNzUwNTYgZTA3M2ZjODhkYzg5NDdmMjEwMTZlZDBkNTgxOWM2MTE1MDdjZWMzOCByZWxlYXNlMjYtbWFpbnQKKzc1MDU3IDhlYTkyMWM3ZDEwZmExMjM3MGY1OTk3MTc1NGY1MmM5YTgyMjM2YmQgcHkzaworNzUwNTggYTA3NTY4YzdhODJhY2E1MjdhZjBhYjk2M2FhMTY5ZDAxMWIzOGUyYSByZWxlYXNlMzEtbWFpbnQKKzc1MDU5IDUwYjE4YWU4Y2VjNDQ5MjdlNGFlYTk5M2RkZDY0YjBhMTEwYzYxMjcgcHkzaworNzUwNjAgMTQ5YmVkMjE3MzVlMDc0YWUzMWNmYWNmN2VkYTlmYmMzNDE1OWRmYSByZWxlYXNlMzEtbWFpbnQKKzc1MDYxIDFiOWYxNGU1ZTllNTA3ZDc4ZTZiNWQ4MDhiNWU1YTE0NjA1NjNmMzAgcHkzaworNzUwNjIgOGNjODJkYzZiYmIwMjNmMWVjNzg0YjJjMDE0NzIyYWVmNWFmYTg5OCBweTNrCis3NTA2MyAyNjQ0ZjU0ZTM2NzYzZTM4NjY1ZDE5NGEyM2Y3YzMxY2Q5MDY0MzNiIHJlbGVhc2UzMS1tYWludAorNzUwNjQgYmE4NDFiYTAwZDA2MjIyZDA5YmVkZWNhMTc2YzhjMzM5ZTI2ZGY4NCBweTNrCis3NTA2NSA3ODFlZjk1Y2I3ODE4NzZjZmUxNGJlZDVmN2E5NTY1NmZiYmE3Y2EwIHJlbGVhc2UzMS1tYWludAorNzUwNjYgMmJmYWRkYjE5YzNhMWM2NWJiYWZkZDYwZGVlMWZmN2NhNTI5ODZhYiBsZWdhY3ktdHJ1bmsKKzc1MDY3IDAwYTVjZjM3NDMxNDYyNDAxYTFkNzYyN2RiNGMzZTZlNWNiMzE0ZWYgcHkzaworNzUwNjggODVlMWRkZGU1NjllMjYzYWM0ODVjMDFiY2I3ZmQyZTk1ODU1Y2I0ZiBsZWdhY3ktdHJ1bmsKKzc1MDY5IGU5OTAyNGVkZGZiNDVjNjMzYjliOWE5NTc4ZWVhM2Y5Zjc5ZjJhMDcgcmVsZWFzZTI2LW1haW50Cis3NTA3MCA4OWZhMjY0MTcxNWQzNDlhOTQyOTVjMjZiYTFhNzk3MDQ2YjJiYjQxIGxlZ2FjeS10cnVuaworNzUwNzEgYWNiZmM2OWI1NWYzZTBkNjQ4MDdjZWQ5YzY2ZGZiNDkwZDM5NmRkZCByZWxlYXNlMjYtbWFpbnQKKzc1MDcyIDA3NmIyMzMzNTI2MzdlMjJjOTUxYThhYmUwY2UyMGI3Njc3NDFkM2MgcHkzaworNzUwNzMgYmY5YmVmNzBmN2U4YWM2MjkxZDY4NWIxMDcwMDZiNTBhNDZjYjA0NSByZWxlYXNlMzEtbWFpbnQKKzc1MDc0IDIwMDZhMmY0ODEyZDc2N2Y2OWVmN2NmYzBmOTY4NTkwZWMxMzE5Y2EgcHkzaworNzUwNzUgZjNjNTk1MjE0YWJjNDAwNjFkODI3YzEyZDYzZGI1ZWY4OWI5N2FlYiByZWxlYXNlMzEtbWFpbnQKKzc1MDc2IDczOTE0MzZkOGE3NDg5ZDQ2MWIyNzhhYzk1ZWVmZDQzOTVjNzIyN2MgbGVnYWN5LXRydW5rCis3NTA3OCBkZDQ1NjQ5NjkwOWNkNGNjYWVmM2Q3ZjY2NjNjMDNlNTk1NzI1YWQxIHB5M2sKKzc1MDc5IGIwNTBlYTdiYWY0MGRlYmM5NGFjMWQ2MzMzYmJhYzExNDFhMTg4ZTAgcHkzaworNzUwODAgN2VlMTQwYjdlZjkzYmFmZGFjYThkZmI1MzQyNjY2NTE0MTYxMWFjOSBweTNrCis3NTA4MiAwNDUzZDE4YzYzYTRlODU4MTc2ZTkzMzkyM2RkNGY1MjhjNGFkYjQyIHB5M2sKKzc1MDgzIGQ2ODg5ZGEwNjUyYzdmODZiYjM4MzdhZTQzNDM5NDU1NzZjNDU0YWIgcmVsZWFzZTI2LW1haW50Cis3NTA4NCA1NDYxMDFhNjY3N2M4NGUzMzk3ZmI2YmE0MmFmNWVjNTg0YWNmMDEwIGxlZ2FjeS10cnVuaworNzUwODUgYjBlOTYxOWIzMWQ4ZDBhMWQ4NzI3MjYxYjRkNTM2YTNkOTA4ZDQzYSByZWxlYXNlMjYtbWFpbnQKKzc1MDg2IGZjYjMxYmUyMTM2ZDY0ZDA0NmE1NDg5MTczYjkyZjdiYWM2MWFlZTcgcHkzaworNzUwODcgYzBkOTU2MjVmMTdkZTc4ZmRkNzQ2NThjYzYyZDlhMDNhNDhiNWVhYiByZWxlYXNlMjYtbWFpbnQKKzc1MDg5IDFhNjVkZGQ3ZDllMTUxZGYxM2U3ZjI3YjdkMTE0YzkzNGU1OTMxNmYgcmVsZWFzZTI2LW1haW50Cis3NTA5MCBmM2ZhMzk2N2Y0NDY0MWY1ODlhMGRiNjE5Y2QzODk3NDRlZTA5NTBhIHB5M2sKKzc1MDkxIDNkZWMzYjc3Yjc4NzViYzM3MWFlYWY0ZDAxMDlkZjhmOTllYWM4MjUgbGVnYWN5LXRydW5rCis3NTA5MiBhMDQxMDg0YzFmZGQ2NjI3MGQ4NjBiZTFlMzIzODQzYzUwYzMzODU4IHJlbGVhc2UyNi1tYWludAorNzUwOTMgOTEwZGE1NDVlMTdiYzVmMWE0NDEwYmMyOWVhNzg5MmZjM2FhNzlmNyBweTNrCis3NTA5NCA3ZDAyNmY3MDY0NTBkOTgwM2Q0ZmJhZGMwMTBkZjU4MTYyYjJhYjBjIHJlbGVhc2UzMS1tYWludAorNzUwOTUgYmI4Yjc3MGNlODkwZTkxYmRmZjNlNTYyODcyNzhlZGFhZjZkNWJlYSBsZWdhY3ktdHJ1bmsKKzc1MDk4IGYwNGExZjIwMjNlY2I2ODgxYmYxNWQ2OTEzNjcwYjZlZGExODcwYTIgbGVnYWN5LXRydW5rCis3NTEwMCBkZWJiMjQ1ZWJiNDAxOGQxOGI4M2NkMDcxMDI0YjQ0NGRhMDQ5OThjIHB5M2sKKzc1MTAyIGM3NjY3NGMyZDc0ZDAzOWY5MTZmZDU3YjcwM2RkZWJkNDVmMmQ4YTIgbGVnYWN5LXRydW5rCis3NTEwMyBlOTUyMTg2MDUzMDBlZDA2NGRjOGU1OWQ3NGRkYmJjMWQzZjhkYTk2IGxlZ2FjeS10cnVuaworNzUxMDQgYWI0OWUwYWM4YzhmMTMxZTJjM2Q1Y2I3YWQ3ZDU5ZGI0MDcyNjFiYiBsZWdhY3ktdHJ1bmsKKzc1MTA1IGI2YWZmN2E1OTgwMzAwOWQ4ZmZjOWZiMGFjYjU2ZDk4NmRhZjllMTcgcHkzaworNzUxMDYgOTQ1NzI5NDljMWNhNGJkZTEzMzgxNzhhODliNzg1YzJjOGUxNWE5ZSBsZWdhY3ktdHJ1bmsKKzc1MTA3IGQxMDhmZTc3YzA2YzI1NmNlZWFlODkyY2FkMzJmMjJmMTllZjYwZmUgcHkzaworNzUxMDggNzAxM2UzNjUxMWE4Y2VkZWZiODFlYjllNWIyMTc4MTBlZGRhMTg1OCBweTNrCis3NTEwOSA4OTI3NzE4YzE5OGZmN2I3YTlmNjVjYTY3Njk1MTc1NDZlYTczOTQ3IHB5M2sKKzc1MTEwIDNhYjQ2NGZkNWUwMWE1ZGRkYTZlYmE2ODdiODhkYjUyYTg5NTg2MTAgbGVnYWN5LXRydW5rCis3NTExMSA1MjMxZWM1MTJjN2FmZDA0YTFlNTY2ODg4MzE4OWUzNjE5OTE5ZGE4IGxlZ2FjeS10cnVuaworNzUxMTIgY2Y5MGFhNTdiMjBiYzM2NzUyMTY5NThhMTFhZDNlNGI0ZDk0MTI4MyByZWxlYXNlMjYtbWFpbnQKKzc1MTEzIDk5ZTM2ZjQ3Y2EwZjc2NmY0MTEwMWIzYzBiYjJiYmFjZjY2MzJhYjIgcHkzaworNzUxMTQgNGVjOTE1YTViYjRlMGNmYzgwOGZmZmNhZmVhMDFkMTVmNzM2NWExYyByZWxlYXNlMzEtbWFpbnQKKzc1MTE1IDdmNjk1ZGQ2NGY5MDFkMzJmMmVkNWU1NjViODEyMjlhZWIwMWY5NDMgbGVnYWN5LXRydW5rCis3NTExNiA1NmI1MzAwMjliYWNmNmFiMjhlODVhMDBkMjAwNGNmYzM2YTQyYmE5IHJlbGVhc2UyNi1tYWludAorNzUxMTcgYjUwZGQxN2RmZTI2MmE0NzI1ZjRhZTNlNmU0NzBhMWZkNDAwZDM1ZSBsZWdhY3ktdHJ1bmsKKzc1MTE4IDUwYzMwYTgyODRmYmI0Y2U0Y2FiMjBiOTQ0MjQyMTM4N2VhMjE3N2UgcHkzaworNzUxMTkgNDdiODJmYmRjMmJiMWUwMGYwMzY5NjdlNTEyNGIwYTRiZGQ3OTRkOSBweTNrCis3NTEyMCAyMDEyNGViODgxMWJiZmM4NTZjMmE4Y2E2MmYyYTkzZTZmMjMzNzg3IHJlbGVhc2UyNi1tYWludAorNzUxMjEgYjk4NWJjZGI4YjkxNGIzY2FkNGU3NGZiNDAwOTUzMDlkMGFiZWJiOCByZWxlYXNlMzEtbWFpbnQKKzc1MTIyIDgyNTAyMTgyNTQ2MzkwZWFhYWJjZTkyNjdmM2EwNzJjN2EzOTQxNjMgcmVsZWFzZTI2LW1haW50Cis3NTEyMyBlZWJmM2Q1MWQzYTQ2ZjM1ODJlZDQ3YjMyYWY1ZDBlY2RiY2QwNzUxIGxlZ2FjeS10cnVuaworNzUxMjQgZWU5YTU1MWE4NzVlZDRmZTZkNWNlNGJiOWI0Y2JkZjViNGY2NGJhNCByZWxlYXNlMjYtbWFpbnQKKzc1MTI1IGM2M2UwNjM4N2I4ZmNkZjZhMWUyOGViNjQyNjRhNmM2NmUzODZmNGMgcHkzaworNzUxMjYgNzRiMThhMjY3Y2Q3NTJhZGEzYjNkYjRlZmRmZTJkNTJjZTdlNTFlNiByZWxlYXNlMzEtbWFpbnQKKzc1MTI3IGVkZDlhNWUzY2FmYjZmMDk2ZTFhMjY2MDNiZjcyNzBiYTI3NDg2N2YgcmVsZWFzZTI1LW1haW50Cis3NTEyOCAzNTc3YWY1MTJkZjU3MzAzM2Y1YjhlMThmZTgzNDdhZDI2MzZkZjE5IHB5M2sKKzc1MTI5IGYyNmI4MDJjMDAzZTVjMDAzNTQwNzQ2ZTg0MWI3ZmIyN2QwODhkNzggbGVnYWN5LXRydW5rCis3NTEzMCBhOGQwZTc2NGUzNGIxY2EyZWRjYjQ1ZmUxYzdhYWFjMzRjNzczMGY1IHJlbGVhc2UyNi1tYWludAorNzUxMzEgZTViODEyMTJmZGZkNzE3NjlmNDEyZmFmZDU0YmFhODgzYjM4YmU4NCBsZWdhY3ktdHJ1bmsKKzc1MTMyIDk4NjcwOWMyNDUzMTg5NDA3MDFkMWJmYTE3NjMxOGY1ZmQ5OGI2YmQgcmVsZWFzZTI2LW1haW50Cis3NTEzMyA0ZDc0NzM0NDk1Y2ZkNjY4N2QxMTkzNWI5MTIzNmQ4OWU3NTliMjgxIHB5M2sKKzc1MTM0IGUwZjIzNDExNmFiMTQ5ODM1NjkyOTRlZmNhZjNkMTNhMGRiMjUyODEgbGVnYWN5LXRydW5rCis3NTEzNSAyZTJjMTQyYmJlYWE5OWFjMTczYzhkODRjZDYxYmI1MWZiMWRkNmM2IHJlbGVhc2UyNi1tYWludAorNzUxMzYgMTg0Mzg4NmIyYjFkODYwYjA4Y2Y5NmJmOGUzNDYyYjg4NjU2MWRhNiByZWxlYXNlMjYtbWFpbnQKKzc1MTM3IDFmNzM2MWM3NDIzNGM1Y2NjMjQ0YmIwMTUyNjcyOTYwMDFjZWM5YjEgcHkzaworNzUxMzggZTcyYTczYWQ3ZTI5NGNiZWZmYTFmNWM1YjkwYTg4Njc5ZWVmNjJkMyByZWxlYXNlMjYtbWFpbnQKKzc1MTM5IDhlOWJkYzZhMTAwZmEwODZiZDQ2NmZiYTZmMmFjNjJjMzBiYjI5MmQgbGVnYWN5LXRydW5rCis3NTE0MCAxOWE0YTYyM2Q4YjcwNDRjMmIxYjllMjUxYjJjOGIwOGE0MjQyNGZjIHJlbGVhc2UzMS1tYWludAorNzUxNDEgOTFmOWRmNTM2N2MxYTVmMWM2MTQ2Y2Y4NGU5NmRiMzkxNzFmNWE3MCBsZWdhY3ktdHJ1bmsKKzc1MTQyIGExN2NkOWZjZGQ0NjllZDFmMzg1MDkyY2Q4MDgxNDZiZjFmMjA2MGIgcmVsZWFzZTMxLW1haW50Cis3NTE0MyAxZWEwM2Y4NmUwODEzZGQ4MGU1OWYwYTY3NTUyYjJmNWE4ZDExNTU3IGxlZ2FjeS10cnVuaworNzUxNDQgN2UxODU2MTY3YzRhODJlYzE3NTQwMjk4Y2M4MjU4M2U1OGU3NDAwMiByZWxlYXNlMjYtbWFpbnQKKzc1MTQ1IGJhMTk2NjJlYjIyMWI4M2U2MzgxOGVlNGIxM2ExNDJmMzMxNGQyODMgcHkzaworNzUxNDYgMDhlNTkwNzZkODZiMmNhZTBkZmUyN2NmNTU5MGZiOTNlODE2MGE1MCByZWxlYXNlMzEtbWFpbnQKKzc1MTQ3IGY5OWJjYTZhYjBkY2M4NWU3OGE0ZmMwOTU5M2M3Y2IzMjQxMWIzYWYgbGVnYWN5LXRydW5rCis3NTE0OCBkYWQ3NDUzZDBkMDg2MmJiNzMwMjU1Mzc4OGY4NWI0ZTFjMzEzNjM3IHJlbGVhc2UyNi1tYWludAorNzUxNDkgZGY1OGZmMmRlMDliYTIxODVjMjExOWYyNjRiNjM4ZTk3OWM3ZDI1MyBsZWdhY3ktdHJ1bmsKKzc1MTUwIDY3MTZjNWY4YzYwZDVjZTU0NjAzNGE1NGE4MzQzMjg1MzU4NTM5MDUgcmVsZWFzZTI2LW1haW50Cis3NTE1MSAxODczNTQyYzAwMDAwYzRiN2NlMmM3OTkyZDFmMmQ4N2Y4NjYyMzJhIHJlbGVhc2UyNi1tYWludAorNzUxNTIgMGVmZmRiMzljNDdiN2EwN2IxOTk3YTVkYmI1YmVlNjY3NjYxM2UzZiByZWxlYXNlMjYtbWFpbnQKKzc1MTU0IDdiY2FmMDY0ZTI0MDU2NzRkOGI1NmUwYjRlY2JmMTg2NTAyMjU5OTkgcmVsZWFzZTI2LW1haW50Cis3NTE1NSA1YWNhZTQ2YWY4NDNmYThjM2FkOTEyNzFhNDFiMGQwYmRlMzJkZGM3IHJlbGVhc2UyNi1tYWludAorNzUxNTYgZDkxMjA5ZDgyNTFkZTYwNTMwYzA2NmE1NmY0NDk3NDEyZWI0NTRmOCByZWxlYXNlMjYtbWFpbnQKKzc1MTU3IDVmMjQ1ZGE3MmFlYmI0ZDI3N2ZlYTQ0YjNiZTBiYzQzNTVlMDUyNjMgbGVnYWN5LXRydW5rCis3NTE1OCAxYzAxNmYwZTk0YmFjMWY2NDI5MGY5YjJjZDg2OTFkZGYxZTJlZWY0IHB5M2sKKzc1MTYwIDE2Yzk4NWRhYWViMDlkNjUzYjY0Y2ZlYjc2ZDQ4NGY4OTk0N2NmNTIgcmVsZWFzZTMxLW1haW50Cis3NTE2MSBlN2U0NTI0NDlhNWVhYzlhOGFjY2JiZmNhNzU1MDE4M2QxYjMzOTNmIHB5M2sKKzc1MTYyIDcwM2RlNTVlMDBiODVkNjdlZTA0ZDczOGFkMTQzOTUzMTkwNGYyMTIgcmVsZWFzZTMxLW1haW50Cis3NTE2MyAwODQ1ODBhMzQ5YjcxMTM3ODY1NzYyMTVmYmZmNGI1Y2I5MWQ3Njg1IHB5M2sKKzc1MTY0IDMzOWI4MjMyMWY4ZWY2MzlhMWNiNDhmNDAzYjY1MGNiMjFlNWNlZmQgbGVnYWN5LXRydW5rCis3NTE2NSAzZTI4ODE2YWEwYTIzMjVhNzI3ZWY2MWJiYTE1Y2I1ODliNTM4MmNjIGxlZ2FjeS10cnVuaworNzUxNjYgODA3YjBkNTk3MzE0YjJmNDRiNTVmNzEwOWYyMDRiZWUwMGQ3NDUxNyBsZWdhY3ktdHJ1bmsKKzc1MTY3IDkyMTdiZDBjYzNmY2Q1MDM4MDM0MmMzMzEzYTIyMTAzNGU5YThhODUgcHkzaworNzUxNjggMTA2NDU1NTIzN2UyMThjZmQzOWYwOTZlMDMxODEzYzAxN2NiZDUyNyBweTNrCis3NTE2OSBlMWQ2OTUxYmYzOWQ3ZGZjZGE2MGFhZmNmZmZlYWVlYjhiMDU2OWZiIHJlbGVhc2UzMS1tYWludAorNzUxNzAgNWVjMTVkYTFmYzQyMjA1YTFlMTNlMTljMGYzN2I0NWI5MGUzMDdhMiByZWxlYXNlMzEtbWFpbnQKKzc1MTcxIDExN2IzMDhiZTMyMTQzNmI2YmE5MTlhOTAxMWM4MzM4Yzg0Nzc0NTAgbGVnYWN5LXRydW5rCis3NTE3MiBjZTIxNGVlNDExNjQ5MjhhMzBiNjZkZGVmYjRlMWEwOGE5ZThiYjRhIHJlbGVhc2UyNi1tYWludAorNzUxNzMgMTcwMGE3ODk3M2NkODE0NmIwYjgyZWNlMTkxZmQxZjM1NmZkMzk0MSBweTNrCis3NTE3NCAyYzdiMWQ1YzhiNjViMWNlYzFlMjllYmMzMjU3OTRjMzMzNDI1NzBmIHB5M2sKKzc1MTc1IGRjMzUwMGQzOWVmMTQ4OTkxODFiMzAwZjZmYjVlNDYwYjcyYmE4MzYgbGVnYWN5LXRydW5rCis3NTE3NiBmZThiOWI3M2Q5YWYwZDRkNmY0Y2QyOTYzZDM4OWNkZTBjNmE3NzQxIHJlbGVhc2UzMS1tYWludAorNzUxNzcgZTMwNGQ5ZjM0ZDE1Mjg3MDUzMGIyZDgxMDk4NGI3MzhiYTcwYWM4ZCBweTNrCis3NTE3OCBmZTk2NGIzYzk2NjJjNzcyZWU0MGMzNzg3NGVjNmQ1NjVkMjY1NjFjIHJlbGVhc2UzMS1tYWludAorNzUxNzkgOWYxOThiMGYzNjdmYmEwNGRhYzM2MWJhMGEzYTVlNGJjMzFjMjZjMyByZWxlYXNlMzEtbWFpbnQKKzc1MTgwIGU2YTVlYmU1YWVkZDhlZTMwMmJkNDIzY2Q0Y2RiMmE5MjZlODZmMzQgbGVnYWN5LXRydW5rCis3NTE4MSA3ODNlNmNjMmFiNjIzNTE5NmI5MjcwNTBiNmFhOWI1Y2M5MjEyZGM5IGxlZ2FjeS10cnVuaworNzUxODMgMDBjMzM5NmQ3YThjNGFiNGMyYzg0MWQ2MTAxM2EwNzNhZTkyMWQwZiByZWxlYXNlMjYtbWFpbnQKKzc1MTg0IDhlN2E2OTI3ODc5ODE1ODg3MzJmNjUwYWMyZmNhYTUwMzcyYTBjMmEgcmVsZWFzZTI2LW1haW50Cis3NTE4NyBjODUwY2U5NzdiYjk4MmQ3MjUxZDNmN2ZhNDczMGJlNGNmYjVmNmEyIHJlbGVhc2UyNi1tYWludAorNzUxOTEgNGM1OTk4M2JiMDU3OTY2NTcwNjE2YzJjM2ZkMjA5NTRjMjZmOWM2YiByZWxlYXNlMjYtbWFpbnQKKzc1MTkyIGMyYzkwZDFmM2MzM2VjNjk3MjRlNjlmODMyZDRjMzRhNWNmNmYxMDUgbGVnYWN5LXRydW5rCis3NTE5MyA3MjkwMTQwY2QzMzAyNzA0NDQ0MGE2M2IxZDU2YjgyMGE5ZDA2MDA5IHJlbGVhc2UyNi1tYWludAorNzUxOTQgYzQxMTkyODZmYWE3NWQ3ZGU5ZTIxZDEwNzdjNmMzYTdlYzZiZGJlNSBweTNrCis3NTE5NSA5YjFlYjVlNzVlMTU5ZTdlN2VkM2UzZjk4NTM2Njk5NDgzZjA2OGQ0IHJlbGVhc2UzMS1tYWludAorNzUxOTYgN2Q3Zjk3ODNjODZkYjE0OTNmMzU2MDQzODk1ZDg4ZGE5ODNjN2UyZiBsZWdhY3ktdHJ1bmsKKzc1MTk3IDY3NDA5YmM5OWZhMmJjZjAwMDE0MGNhMDNmYTlmNWQ0ZWFhNTIxMzMgcmVsZWFzZTI2LW1haW50Cis3NTE5OCA3N2VlMjIwNjg2Y2M1MDJiYjAyOTU5YjkxNDZjYTBjODM5NTc4YjMwIHB5M2sKKzc1MTk5IDI3NWQ2MGY5M2QzYzVmNjE5MDhlOGQ3ZDM1ZmVhOTIwMTI3NDMxYTAgcmVsZWFzZTI2LW1haW50Cis3NTIwMiA0MzEzNTBmMjFkODdlOWQ4ZWM3MGM2ZjVhYzY1YzMyM2ZiYWU3MGFmIHJlbGVhc2UyNi1tYWludAorNzUyMDMgOTEzMGZlOWM1OGJmOTdkZjhkNDNmZDIzMzY0YWYwNTZiZjJhNzBiMSByZWxlYXNlMjYtbWFpbnQKKzc1MjA0IGZjNzRkNTFhNjc5NzQxYTlkNTM2YzBhYTVkNDg4ZTdhMzRmZjk0N2EgcmVsZWFzZTI2LW1haW50Cis3NTIwNSBkNDEzNjA5MGFjMzRmOTFlZGExMWU3ZTM0ZDkzM2NmNjA0YWY1NzA0IGxlZ2FjeS10cnVuaworNzUyMDYgMjVjZmI3MGJjZDVlOWRkMDhjZjBlNTkwZGY0NTc2NTVmMTNmOTM0YSByZWxlYXNlMjYtbWFpbnQKKzc1MjA3IDNlZTA0ZWE5Y2M2ZTJmNzMxZjc1MTNmMmE1ZGU3Mjc4ODhhMGJlOTIgcHkzaworNzUyMDggOTQ2Y2VjYWY2NGMxZjFkMDc3ZjY2YzAyMGY2NTM3Zjg3M2M3OTkzMyByZWxlYXNlMzEtbWFpbnQKKzc1MjA5IDUzODRjOGVlNGEyNmNlMDFlNzcwNGFmMzlkYjhhZjNmZTdmMmZiZDcgbGVnYWN5LXRydW5rCis3NTIxMCAzOWI5OTk0ZTg2NjkzYjM1MWQyYzNlZjlhYzJhZjVmMmJjNmZjYTAzIHB5M2sKKzc1MjExIDI4ZmJjYzc5YzIwYTkzYzZhNjUyOTkwYzFmZTM0NDBkYjM5MmUzNTggcmVsZWFzZTI2LW1haW50Cis3NTIxMiA2ZDBkZmUzYTEzY2ExOGFiMzRiNTNkZDYzZjQyZDUyOTAyZGE5MGEzIHB5M2sKKzc1MjE0IDg0OWZiMjdjNTU5NDY2MjQ0YmUyYzM4M2ZhOGFlZDE2ZDY1Y2Y0NGEgcHkzaworNzUyMTUgNTIyN2VhYmRiYjY0NzU4NjA4YjUxYjhlNDE4ZTA1OTM4ZDMxY2Y0NSByZWxlYXNlMzEtbWFpbnQKKzc1MjE2IDUzZjE3Y2M3YmZmNjdjNmMwYzhlZTM2MDliMWQzODA3MTE2YjkzNDYgcHkzaworNzUyMTcgZDU0OTM2NmRkMjE4YjMyNDBjM2FiYWYzZDhlZDQ5NzZjMTkxYWQyYyByZWxlYXNlMzEtbWFpbnQKKzc1MjE4IDE1MGNkYWVhNThlYzY5MTZhYzUxOWQwOTMzN2IzZDNlNmRiY2IyNDcgcmVsZWFzZTMxLW1haW50Cis3NTIyMCA2Y2ZmNjgyYTMwOTgxZmUyMDMzNTM4MTY0NDZkMDY3OThhOGI1ZTE4IHB5M2sKKzc1MjIxIDVjMGE3ODAwMjE1YTY3NDNiZjE3YmZjYzRiNzkyZTE5NjA3M2RlYmUgcmVsZWFzZTMxLW1haW50Cis3NTIyMyBjY2ViNjJlYjFjZjE4MzJiMjc2MmJkZmVhZjdjOWYxZWM1YWM4NjI0IGxlZ2FjeS10cnVuaworNzUyMjQgNDVmY2UzMTBkNDc5MmNjM2Y5YWQzMzYxMTg2NTJlODY2NTBmNDE2NyBweTNrCis3NTIyNiA0ZjQ5YmQyZTdjNThkMjk4NDlkMjM3ZmFlNjgwZmQ4NjRkMDQzYmNhIHJlbGVhc2UzMS1tYWludAorNzUyMjggMjE4Y2RkNmM2ODQyODVkODJiOGIwODNhNDgwMjg1NzRhYmExMzgxNiByZWxlYXNlMjYtbWFpbnQKKzc1MjI5IGQ1ZDhjYjk4ZWIyYWVlYTA5ZDk4NTMwYWFjZDU5NTQ4NTA2NTJmY2UgcmVsZWFzZTI2LW1haW50Cis3NTIzMCBmNDA1NmY4ZmVlYzI2YmQyOTI1MzZkZjYxOGVmYWFkODA5NTM1MmVlIGxlZ2FjeS10cnVuaworNzUyMzEgNDFiYjVlMmRjOTQ3YWMzZjdjNGFmOTQ2YzAxYTE0ZTBiMGFkMDY3YiBweTNrCis3NTIzMiBjOWJkNjJlZmU2Y2U1NTI0ZTE3NGQxMDYzZDE2NWI4YzliZTBiMzYzIHJlbGVhc2UzMS1tYWludAorNzUyMzMgYmVjMmU0NDVlMjI0YjY1YTBkZjEyMWQ2MWY5OTllODBkNGIzMTIwYyBweTNrCis3NTIzNCA1YmNlM2E1OWJmZDJjNWVmYzdiYThmYzcxYmY3OWVjZWZkMTRjOWFiIHJlbGVhc2UzMS1tYWludAorNzUyMzYgYmIyYTEyM2NkZDdiYjJhZjU4MDE5MjFkODM1MzNiMGM0OGIxZTA0OSBsZWdhY3ktdHJ1bmsKKzc1MjM3IDMyMWMyMjA3ZDVmOGZhOTQ1YjUyOTE3ZDRhODQ1OWJiZTEwNzc0MmQgcmVsZWFzZTI2LW1haW50Cis3NTIzOCA5MTlhMjdkZGI0YTMyMTE4NmIxMzM0NWEzNTg5MjIzMmU5YjFiNmMxIHB5M2sKKzc1MjM5IDA1Mzg5MDE0YmY0NDQ5Y2RhMDYyNWNlMmE0YjI2NGViMGE5NzBlZmYgcmVsZWFzZTMxLW1haW50Cis3NTI0MCBhMmNhYmIzNjI1N2YzYmMwMTMwNWY5NWQ4YzAzMmQzNTNiNjNjNjAxIHJlbGVhc2UyNi1tYWludAorNzUyNDEgYzIxOWY3MjYxZDk4NjM1NjMxMTZkNTQ0N2RjNjc3NmYzZmU4YWFjZSBweTNrCis3NTI0MiA5MjJjMTEyMmM5MjViNmFlNTYyZjE4ZmU3MjBhOTkwN2ExZGQ0Yzg0IHB5M2sKKzc1MjQzIDhkYmIwZmMzOTk4YWQwODkwNDI0MTU1MjRiN2VjZWMyOWY1ZjBkODMgcHkzaworNzUyNDQgYzgyNzcxMGJjZGZkYjJmNjFjNDE4ZWM3NDRiYzNiYzllY2JiNTQ4NiBweTNrCis3NTI0NSAxMzhjN2ZjMTliNWQ2ZWVjNGZjMzQwY2I2NGRmOTY4ZjAwMGM5ZTM3IHB5M2sKKzc1MjQ2IDJiN2UwZWFhYzY0ZWRkNDAwMGEzZjZjNDRkMzlhNjQ1NWQ5OGVjN2EgcHkzaworNzUyNDcgMmU0ZDdhNDBjMmRkN2UxMzNiNzFhOTg3OTc0Nzk5NmE3YjlkZTIzZCByZWxlYXNlMzEtbWFpbnQKKzc1MjQ4IGIwYjllNTkyOGRhOTlkZGRhMmI3NWM3NGM0YzY2Y2RlODJkMjA5NjcgcHkzaworNzUyNDkgNmIyM2IwZWJhNDA1MTY1YTBiMWEyZGM5YjY3ZGQ3OGY2YzVkMDMxYyByZWxlYXNlMzEtbWFpbnQKKzc1MjUwIDdhYTRhNDIxMTUyZjkyNGUxMWYxMDcyMWNhMzEwMWJiMjhlNWY0ODYgcmVsZWFzZTI2LW1haW50Cis3NTI1MSAzOGJlMjYzOTAzNTUwMDRiNjFhNWMwMjBkNjczNDM5MDYzODkyNGE3IHJlbGVhc2UyNi1tYWludAorNzUyNTIgNDkwMTkwY2I0YTU3NzIyODY3MzM0NmRkNjVlMTk3NWU2OTY4OTU5MSByZWxlYXNlMjYtbWFpbnQKKzc1MjUzIDI3OGNmNWM4ZjFmYTk3YzI2NjhjOTM5MTJmMzM2ODRlZGM4NDQwZGUgcmVsZWFzZTI2LW1haW50Cis3NTI1NCBkNTI1MGRhMDA1Y2E3MzlmMmVhODY4ZjNjZDI4OTAwMzk2ZmIwNGIwIHJlbGVhc2UyNi1tYWludAorNzUyNTUgOTc0YzAzYzk4ODg0ODA2Y2ZkMzg0YzI2ZGI2MDdmZTViYTJiY2RiMSBsZWdhY3ktdHJ1bmsKKzc1MjU2IDI5YzAxOTZiMWJkZDdiNTE3NjBjMTI2ZmIzYTcwODcwYTcyNThjMjggcmVsZWFzZTI2LW1haW50Cis3NTI1NyBhMDFmNDEzZWEwOGI2ZDkxN2I1N2Y3YTBjMGYwMmQ0NzhkY2MyYjk2IHBlcDM3MAorNzUyNTggYjRkMWJlNzEwMmIzMWIwMTEzN2NmMTcyN2I4NThiNDI2MTZjYmZhYyBsZWdhY3ktdHJ1bmsKKzc1MjU5IGY3ZWVhNjJiMDhiMDVhM2I5MmE5ZGY3YWVjZDFkYWQ3ZjI0ODdhODcgcHkzaworNzUyNjAgZWU5MDIwMTYyNDNhMjllNzdkZDJlNmRhYWQ1MWZkM2JjMTJhMmY1OCBsZWdhY3ktdHJ1bmsKKzc1MjYxIDk4N2U1OTZjZjU3MzczZTlmYzMxMTZhZjEzNGE3MmE3MWQ4Y2ZiYTMgbGVnYWN5LXRydW5rCis3NTI2MiAxYzdmMmI5YTE2NzgyYzA2YzUxMDU0ZDc1N2I4YTc1MDA2ODM4MzMyIGxlZ2FjeS10cnVuaworNzUyNjMgMmZhOWZmZTZkMTQ1MWQ3ZmVkZWRmZDM4YjEyNDBiNWQxZjAwZjllZSBsZWdhY3ktdHJ1bmsKKzc1MjY0IGQyZjk1OTExNTQyODZlNTRmMjEyNDNjZDMyYjdjMDNkOWZlNDZjODMgbGVnYWN5LXRydW5rCis3NTI2NSBhMTJlNzAxZDk3Y2FjNzg3ZjE1ZTVmNDkzM2IxYThmNTZkNGI5ZmQ3IGxlZ2FjeS10cnVuaworNzUyNjYgYTQ1OTUwNzI2YmRmYmFkYmVlMTU1ZWRiODA1ZDczM2UyMDNjZmIxZiBsZWdhY3ktdHJ1bmsKKzc1MjY3IGE2ZTdlZDUyZGY5YjMxN2U2YWM4ODBhMmI2YTFiNmYxOWFkMzYyNDYgbGVnYWN5LXRydW5rCis3NTI2OCBjOWQ5YjdkMDk0MjJmN2E2YTkyMDIxMDgxZjgwMDNhOWJmZWNlMjhjIGxlZ2FjeS10cnVuaworNzUyNjkgYTRhMzI0YzJhMDBjNzgwODRlYWRkZDAwM2I2NTZlMzY2YzY4MDQ2NyByZWxlYXNlMjYtbWFpbnQKKzc1MjcwIDI1YWE5MGE2ODY1YjYzMTMzOTYyZGQ2NDYyNmM1M2M3YjZmZDQ3ZDUgcmVsZWFzZTI2LW1haW50Cis3NTI3MSA0MzNmNzI3ZTVlODIzZjAwZDEwMjNiNDM5MDJlYmIzOGZjMmY5MjJkIHJlbGVhc2UyNi1tYWludAorNzUyNzIgYTk4NjQ0MTcyODZiOTNkNWNiNTY5NDcxYTI5ODE2MTUxN2Q1ZDQxYyBsZWdhY3ktdHJ1bmsKKzc1MjczIDVlM2Y2ZThkNmFlNTk1NTk3YzY0ZDVjYWVhMDc5NDI1NGZjNGIzNWIgbGVnYWN5LXRydW5rCis3NTI3NCA2YzkxZDE4MDMxODI2ODE2YTk5MTE5YTM5ZmNjNGY0ZjRlNjllN2RhIHB5M2sKKzc1Mjc1IGM1YTNkNDMxNDY3NjlkYTM2NzcwOGMxMWJjNGM0NzM4Yzk5ZTFkYzkgbGVnYWN5LXRydW5rCis3NTI3NiAzMjk2OTM1Mjk5Y2U2MjdkNzkyMTBjNjFmNTY5NmJlNmUwNjg5OTc3IHB5M2sKKzc1Mjc3IGRjMDQ3ZDlhYmY3YjZjZjkwZmRjMTJiZGU4NjE3YjlhMDBiZThmMGIgcmVsZWFzZTMxLW1haW50Cis3NTI3OSA2MTU1Yjk1OWZmNzJiZGY1ZWYzY2EwZjBmMTljZTQ2NjYyYTk5OTRhIHB5M2sKKzc1MjgwIGY5OWIzZmMwMWZjMDY4OTZjMzkyOTJiNDk1YjBiYmRmYmEwNjEwMWIgcmVsZWFzZTMxLW1haW50Cis3NTI4MSBjNDVjZTI4NWY1NTJiOTYzZTQyODYxNTI1ZmQxMmJjMGNjZjBhOWQ4IGxlZ2FjeS10cnVuaworNzUyODIgYjc4NTIxYWU3YTYyNDVlNDhiZDVjODgyZGJlNTlmMzdmNTU4YjA4NyByZWxlYXNlMjYtbWFpbnQKKzc1MjgzIGU3NTljYTI1NzAxZDlhNjY3ZGRiODcyYmJhNWI1Nzc3ZTc2NmVmN2QgbGVnYWN5LXRydW5rCis3NTI4NCAyNDliMGJlNzk3YTgyZTJlZGY2M2M3ODMwZTVmYTM2NzBiYzU3MmZiIHB5M2sKKzc1Mjg1IGRkOTRmMWQ4YzlhNWNhNDQ2OTYzNDkwNjcwMTdmYmJmMjNiMWQ4MzcgcmVsZWFzZTMxLW1haW50Cis3NTI4NiA0OGFiMmU2MmRlOGJjNmJkMzY1YWMxYTAxNDMxMTlhNjVhYjA2MTc4IGxlZ2FjeS10cnVuaworNzUyODcgZWY3MzQ2NDQ4YjYwMGRmY2VlYjU0YWYxMDAzZDBmN2UwMjU0ZDFmOCBweTNrCis3NTI4OCAzMDcyZjk0MGYzNWEzNmI2ZDQ5ZjVlMjRlZjFmZGQ1NWI4ODlhMWJiIHJlbGVhc2UzMS1tYWludAorNzUyODkgOTZhZmYyYzJhOWExZDViNzJlMGY0ZjFkMGMxZWQ3OTU4ZDA3OGM1ZiBsZWdhY3ktdHJ1bmsKKzc1MjkwIGNiNDlmMmViMDQ1NzlmODdhZmJlY2E3MDlkMDZlNzZiY2YyYTA2MzUgcHkzaworNzUyOTEgOWY2MzFhM2JiNTQ5M2ZhZDk5ODE3OTI5ZDg5OTgxM2Y4MGIwZWJkMCByZWxlYXNlMzEtbWFpbnQKKzc1MjkyIGQ3OTAyMDJjMTUxZGIwYzZmYjQzNTI5ODhmZDgxN2NmZWZmNTRiYTggbGVnYWN5LXRydW5rCis3NTI5MyBhYmJjNzk3NTc1YzQyMzcwYTllY2UxYmNkYjQ1MDYxYzhlZDE1NWQyIGxlZ2FjeS10cnVuaworNzUyOTQgZWIwYzM5ZjYyZGUxOWNjN2MyNDdkNjQ0OTA5OGNjOWZlMGI1NDg1MCByZWxlYXNlMzEtbWFpbnQKKzc1Mjk2IDU0NThjMjBhYTBjZjgzOTViZjRkYjQ5YjFjMTk2ODU3ZGZlMzUwOTcgcHkzaworNzUyOTcgOTQ2ZTNhZjAwYjBiOGYxM2I2OGY5N2Q4N2FmNWIyZTNlYjc2ZDUxZCBweTNrCis3NTI5OCAyYzYwZTk0NjA2MmVjMGFmYWEyMWQzYmVhN2I3MjQzZjYzNTk2YmJiIHB5M2sKKzc1Mjk5IDI1ZTUxYzViMDY5NmU4NWM0OTAxYjY5NmVkN2EyNDVkYzY2YWE5NmIgcHkzaworNzUzMDAgODk2YTRmYjEzZjM1YzkxZGZmYjA1NGRmODVlZWE4MmRlM2U5ZGU3NSBsZWdhY3ktdHJ1bmsKKzc1MzAxIDFlYzhjN2ZiODgwN2I1YWZjZjZjNTM2NTQwYTY4YTU4MTU1ODg5OGIgbGVnYWN5LXRydW5rCis3NTMwMiAxMmNkOTRkMzk4NzQ2NDhlYjBmM2NmYjUzN2NlZGZjMGRkMDBmMjMxIHJlbGVhc2UzMS1tYWludAorNzUzMDQgNTdlZTA3OTNlNDYyN2I4MGNlMTJiNmZmNDAzNGZlYTdhZGM0NWQ3NSBsZWdhY3ktdHJ1bmsKKzc1MzA1IDY4NDk2MGZiMWNiZjY0ZTg1Nzk3OWNjMmE5Njg1ZjA2NzE2YmMxMTkgbGVnYWN5LXRydW5rCis3NTMwNiBhYjQyMDMzZmRmZGJlNWFiNGUxMjZlZTVlMWE4MDgxZWMxY2UwMjMxIHB5M2sKKzc1MzA3IDkxYWEwNDQxMDEzOTBjZWQzOThhYWQ2MWU3MTAwMWEwNjcwZDE1OWEgcHkzaworNzUzMDggMjgzNjkzOWU3YzU0N2ZmZWQ0MDY0NmUxMjJmZjNhYmQwZWIyMzYyYiByZWxlYXNlMzEtbWFpbnQKKzc1MzA5IDI5OTA4ZjJiYzkzZmQ4Y2RlYzM1NzRjZTQ3MGE1YWQwMWVmMDU3YmIgcHkzaworNzUzMTAgNmQwOTJhNTFlMTg3ZTQ1MjJkNmJkZTgzNTg0OWNjMjYxNTBmNmYwZSBsZWdhY3ktdHJ1bmsKKzc1MzEwIDRmOTEzMTJkNmVjMmFiMzVlN2FiODIyYTgzZGEwMDkyMzBmMTI0YWEgcHkzaworNzUzMTEgYjVlYTQ3NzNhZmYxMDIxYTM1NjExYmVhMjFkMGU0YmE5Njc0ZTM1NSBweTNrCis3NTMxMiBhMmYwMmExMjVmZWIwYjk2OWQ4Mzg2NGEwZTk0N2Y3OWE5ODE0M2E4IGxlZ2FjeS10cnVuaworNzUzMTMgMzJjMzVmOWIyNDVjODdjMGMwNzlmODQxYjlkN2M1ZDVjNmZjYThjMyBsZWdhY3ktdHJ1bmsKKzc1MzE0IGQ3M2YyMjE1ZWZjMTlmOTIzNzI2OGY4YjQ3MzM4ZDU4YTM5YzgwZTAgcHkzaworNzUzMTUgMzNiMDQxMzUwMDM0MmFmNzBjMjhiOWNkMzU0OTBjMWE1NGJkNTdjMyBsZWdhY3ktdHJ1bmsKKzc1MzE2IGVmMzFiMDRkZTUwNTYyZmZjNDUwYTZhMWQ0MGUwYWVlZjg4ZDc2YWEgcHkzaworNzUzMTcgMzkzMWM3OGFmMTE3NWIzYzc0MjRmMzMxM2RmMDBjYjlmMDVlZGNlZCBweTNrCis3NTMxOCBmZjhjODZhMjRiMTU4ZmJhZTFjZjQ1NDg1NWZmNThjODZmMDM0MTRhIGxlZ2FjeS10cnVuaworNzUzMTkgMzU2MTljZmNkMGI1YmY1YTQzMDAxZjYyMTNmYjJkMmYzMzhkODQ1OCBweTNrCis3NTMyMCAyMjBmN2RlZmZiYWZiNTc2MDJiYTczNWY0MzNiMmVkMDcwMTMzZmJkIHB5M2sKKzc1MzIxIDQyYTZhMjI0OTQ3NGNhNmIyMGMxMTA0YWFlODZiYTA3OGQ1ZjI1N2YgbGVnYWN5LXRydW5rCis3NTMyMiAzNDk5OWExYWVhOWIyNjE3NjEzZmMwZWJjMTU5YmYyMTFkNjBmN2ZiIGxlZ2FjeS10cnVuaworNzUzMjMgYmZhNjBkZjc2OTI5MGExMjNlMzZiY2VlNDJkMGJmMDVhMzU0MTQxZCBweTNrCis3NTMyNCA0NDMxNDlmYjM1NzQ4ZjVjZGNmYmE4OTlhOTcyNmRmMjkxZGY1ZDBlIHB5M2sKKzc1MzI1IDY1ODdlYTZkM2U3ODQ1ZGVmOWEyM2M1MmEyMTI1YjQ4MmFiNzUwOGYgbGVnYWN5LXRydW5rCis3NTMyNiBmMzJmZWRhNjVjODU2YWU0YWQyNTg0ZGQ4YzA3Nzc0ZmRlZTA4MmNkIHB5M2sKKzc1MzI3IDQ1ODE1M2Q1ZDgyZDZmNzFjN2ZlOGRiNDIxNmVhOGU0OGY2OWViMjYgbGVnYWN5LXRydW5rCis3NTMyOCAyMTY4YjlkNDllM2IxOTA4YjJjMTJmYWRhODVkZDU0NmZhY2MzYzI2IHB5M2sKKzc1MzI5IDU1OTdiYTcwYTMzNmM4NjVmMDZhOGExOTAyZDMyMTY5NzM3OWQ4MDQgbGVnYWN5LXRydW5rCis3NTMzMCBmNzZlMmU2Mzc3MzAxODlhNGNmMTYwOGVmNGY0N2YxYTI1Zjk3ZDc3IHB5M2sKKzc1MzMzIDI0ZTkyY2VmMjY2NDYzNTlmZTAyNjEzYzYwMzFjYjljMWFjNTdjYmQgbGVnYWN5LXRydW5rCis3NTMzNCBiOTQyYzcwNmUzMzgxMjI4YzJhZjc5Y2RiOWE4YjI1NTAwMTI1ZjQ0IHB5M2sKKzc1MzM1IDY5NmFjZWI3NjM1Yjk5OTY1NTc4Y2E1N2E5OGZmNGYzYjhkM2ZmOGMgcmVsZWFzZTI2LW1haW50Cis3NTMzNiA4Njc2MzMzMzBhOTM4ZTc0NjM5OTdmOTU0MjgwMzdlMzBkN2JhM2M2IHJlbGVhc2UzMS1tYWludAorNzUzMzcgNjE5NGZkNzU0MzIzOThmOGU1ZWJlODkyMWEwMjZiOTAyZWJhZjJmMiBsZWdhY3ktdHJ1bmsKKzc1MzM4IDg2YjY4NGM5Njk0MjRiMmVhZTZmOWQ2NTFhNGQwYTM1MTdmYzNlOGUgcHkzaworNzUzMzkgMzEzMGI3ZTgxMmIwNGVhZjM5ODg0MDYzZDVjZjVmNTNlM2MxODMzNSBsZWdhY3ktdHJ1bmsKKzc1MzQwIDg5YjRiYjBhYTVhY2Y4Mzg2MjllNjEwOTNmM2UzNjM0YjNjYTFlYWQgcHkzaworNzUzNDEgNGRkMDkwMTAwZWNhZmI1YjY5Mjg5NDFkMGMxNmVlM2IxNmZmMDAwYyBweTNrCis3NTM0MiAzZWQ2NTcxNmQ3YWQyNDJjOTk5NmNiNmEwMWY0ODYwYjcwMjdiZWYyIGxlZ2FjeS10cnVuaworNzUzNDMgNWMzNjVhYWIxMGQxY2UzMGZlNzQ1MDY3MGViZDU2YWU5ODBlYjRkYyBweTNrCis3NTM0NCBjMTA1Yjk4ZTY0OWRlOWE0NTg0M2U4MzYzMzVlMjA2OTMzMDFkODhjIGxlZ2FjeS10cnVuaworNzUzNDUgMGFkN2Y5Yzk1MmIwOGNhMTI4OTBiNGFkNGIwMzQzOGFhODcxOWRiNyBweTNrCis3NTM0NiA0YmEyN2QxOGRkOTJkYWFmYjczYjE3ZjlmZjU5NTU0Nzg1NjQ0N2NiIGxlZ2FjeS10cnVuaworNzUzNDcgYmRlOGEzOTYyMjhjMmFhYzIxZTQzOWNiMmNiMTA3OThlOGE0MmY1OSBweTNrCis3NTM0OCBhMTVjN2Q1MGIzY2I2NGUwMTZlZDIzZTM4YjdmMTMyZmFjZDkzNDk1IGxlZ2FjeS10cnVuaworNzUzNDkgMzk3ZTAyZTBiZTkzMTRiNTQyMTAzZmQ1NmQ0OThhMmEwNGUzNmIxMyBweTNrCis3NTM1MCBjYTAxOGUyYmI4NjU0YjliNTk0ZjZhN2E0YTQ3MWEyMDQyZjYzM2JiIGxlZ2FjeS10cnVuaworNzUzNTEgNTJkNjk3M2NiZDk0ZWIzMzQ0YjAzNzNjMmQ2YmEzMTNlYjFiZGFlYiBsZWdhY3ktdHJ1bmsKKzc1MzUyIDUzYzgzYTEzMmUxZWEyMWJiNmM2NmFlOTRiZjQ0Mjc0Nzk4MDJhMzMgcHkzaworNzUzNTMgNjk4ZTBlNjljNzY1N2IyNjljMGU0ZjEyODYwN2RlYWJjOTQzNThhNSBweTNrCis3NTM1NCA2YTVlMGM5MTNjN2NlYmFhYzhmYTQxN2YzNTY4NzQwMzg1OWU4MDY0IGxlZ2FjeS10cnVuaworNzUzNTUgOTIwNDA4ZTYwMzAzMjEzMzdiOTEzYTFjMzlmYjFiZWNkYTMyZmQ3MCBweTNrCis3NTM1NiBlNDYxOWNmOWU2MmNiZTEyOGY5ZWFhYjJjMWNkNGM5OTI1ZjZjNWQzIGxlZ2FjeS10cnVuaworNzUzNTcgOGVlNDUxNzljNTAzOTg3YjAzYjA3ZjFhNTFiN2NmOTcwYTljNTdkNyBweTNrCis3NTM1OCBhNWQ3YjUyNzc5NTE5M2NjNmFhYzZjMWQ5MWViNzA4ZWZiZjY0M2M0IGxlZ2FjeS10cnVuaworNzUzNTkgMTUyMWE2NTdhODVhZDliNTYwMTg5NzdjNTU5YjAwNDhhYzQxMjVhNyBweTNrCis3NTM2MiAyMDViOTZlZmI3OTAwYTEyOGU3MzBjM2M2Yzg5MmZlOWNiMTc4NDI2IHB5M2sKKzc1MzYzIDMyMDA4ZDIzZjZjYjQ4YTFlZGEwYjI3ZjFiMWFmNjg4YjBlYTc3ZmQgbGVnYWN5LXRydW5rCis3NTM2NSA5Zjc2NTExOGQ5Yjk3MTM5ZDZlNjgzZjhiZjY2MzU3Yjg1ODlkYTJkIGxlZ2FjeS10cnVuaworNzUzNjcgMjIwMDhkOTM0ZTYzNzU5MmM0NzI3Y2JhOTJmMTY2YTE5MzJkODdhMSBsZWdhY3ktdHJ1bmsKKzc1MzY5IDQzYWQ1NTQ2MTViNmQyMDBjNjJmZWQ3NTY0ZWY2ODM1MTQ3OTczZTAgcHkzaworNzUzNzAgMDUwNzQ4Y2U1YWQ5ZWFlMjQyODJlYWFiNjdjNjhiZGFkODNkZGUzNiBsZWdhY3ktdHJ1bmsKKzc1MzcxIDRiNWQzOThlYjg2NjY0MzNkZWZkZjhkN2EyMzdjMjZjODJmOGU4MzQgbGVnYWN5LXRydW5rCis3NTM3MiA5YTJjMzdjMzJiN2U3MTgwYTczMTVkYWE4Y2M0OGJmNTkzNzIwZDJmIGxlZ2FjeS10cnVuaworNzUzNzMgY2RkYjYyMGYwY2RhMGFlMTRiMzExYjgzNDc4ZGZkNTU1ZjUwYmVhMCBweTNrCis3NTM3NCAxNjg4NDc5NTUzMjQ5NGJkNmVlMDE3ODE2YWQ2ZDQ4YzZlN2Y0OTg5IHB5M2sKKzc1Mzc2IDM5MjJlNzM0YzliYjczMmY5ZjRlNGRmOThjZTc5YmM1MmYxODBiODkgbGVnYWN5LXRydW5rCis3NTM5MCBmNTlkYTljOTM0MjVhOWY5Y2Y2MTdjODdjYWMwNDg1OGFhNWFlZTllIHJlbGVhc2UyNi1tYWludAorNzUzOTEgOTVhNjk2NDBlYmQzYmQxNzk3ZmE4YmEyYWEyZjcwMWE3Mjc1MTdkMSBsZWdhY3ktdHJ1bmsKKzc1MzkyIDlkMTdiYjRmMTE3MGZhYjIxMGY3ODc4ODIzM2IyMjE4ZjU2ODQyZGEgbGVnYWN5LXRydW5rCis3NTM5MyAyMDllMzgyNTRhZThiODc4ZDM0NTM1NGZlZjBkZTI5ZTllMjEyNTc4IHB5M2sKKzc1Mzk0IDliZDZhN2FlZTEzY2E4MGU4NTY5NzllZTM5NzlmYWQyM2M1ZTYxNjAgbGVnYWN5LXRydW5rCis3NTM5NSAyYTc1ODM3MThkMjUzZmQ1YTBkYTI2Y2Y5ODA1ODBmMzY1ODlkMmVmIHJlbGVhc2UyNi1tYWludAorNzUzOTYgN2ZlOGE4MzEzYTViMmU3ZTIzNDIyZWZhY2Y5Njc2ZmIzNWViZDY0ZCBsZWdhY3ktdHJ1bmsKKzc1Mzk3IGU4ZTEwMzQ4OGZiMzdlMzBiOWRmZjhmNGE4MWY2MDc2YzEyNDZjYTQgcHkzaworNzU0MDAgYmRiZGE3YTk0YzMzM2UwMzY1ZGY2MTkyYzM5NDBhNzM5MDdkODRjZSBsZWdhY3ktdHJ1bmsKKzc1NDAxIDc3NTYxY2QzOWZkMzk3YmQzZmFjZTMyZWVlNWE5NmNiYjk0MzZlNjYgcmVsZWFzZTMxLW1haW50Cis3NTQwMiAwMzg1NDczMmE2YzI4ZTczOWQ1NTQ2ZjI0YjlhYTcyZTFlMDA1YmRlIGxlZ2FjeS10cnVuaworNzU0MDMgMTgzNDc0YmIwMjEzOGRhODhjM2I0OTZjNTJhN2IxYjBhMDVkYTRjYSBsZWdhY3ktdHJ1bmsKKzc1NDA0IDYzNTA4ZWM3Njg0MGFhNjQ4MjA5ODc1NzFhNzg5NWVhZGQxMGNmMGIgcHkzaworNzU0MDUgZGM3NWQxN2RkMzA0YTUwNmJkMTU3ZTVjMmE0ZWFlZmYzMTdjYWNlMCBsZWdhY3ktdHJ1bmsKKzc1NDA2IDY3YmIxN2MyZTg2ODUyMTlmYWIzYzdiZmIyMDBjMDZlNGRkODUwYzIgcmVsZWFzZTMxLW1haW50Cis3NTQwNyAyNDdkNWE1ZWFmYTUzNDM5NzViOTlmM2VlOThmYTRjMWQ5NDU4MTY4IGxlZ2FjeS10cnVuaworNzU0MDggNThlNTc2MzFiZThjYjYzOGVkMzFlNGI0MjI5YTAzNmU0NzdhOTI4ZCBsZWdhY3ktdHJ1bmsKKzc1NDA5IDM4NmE0ZDdjM2M5OWNmYTQ5MjQzYzM4Yzg1ZmE0NDQ5YmZmNzhkNjggbGVnYWN5LXRydW5rCis3NTQxMCBjZGNkODA1ZWVlODVkNjUwNTczMDIxMTIyZTA2MjVmYjZmZjcyMmEyIGxlZ2FjeS10cnVuaworNzU0MTEgZTg1MzJjYzhhMTRlNDk3NGY4YTNmMjc0YzJjM2VjN2MzYjA0Yjk4OSBsZWdhY3ktdHJ1bmsKKzc1NDEyIDllNzE4ZDhmNzFlOGYwMTRhNjc3NmJhMmMxY2FiNTc2ZDhlNzBiNjYgbGVnYWN5LXRydW5rCis3NTQxMyA0ZWUzNDNjNGJjNDlkMDdlM2VlNjY1YjEyYzYwMjM1OTk3YzVmNjAyIGxlZ2FjeS10cnVuaworNzU0MTUgNmQ1MGM0YzFhOGIzNDZmZTAzNjRmMjM3ZmMyODBjYWIxYWFhMjc4ZCBsZWdhY3ktdHJ1bmsKKzc1NDE2IDVkZmM1OGYzOWI5ZjU0MjE5MGU2OWQ3MGNhMjI3Y2RmZWNjMzhiNDUgcHkzaworNzU0MTcgYmY4YzliZjcxMTVjOTNhMjMwZjlmYjlmMzM4ZjQ5OWIyYTVkY2MxYyBsZWdhY3ktdHJ1bmsKKzc1NDE4IGQyNDI5OGRmMmE2NjIwNmJkMDM4NThkOTNlNzM0YzA2YTUxNTA1YWIgbGVnYWN5LXRydW5rCis3NTQxOSA5MzM1MGFjYjU0MjViYTRmMDBiNWNkODA4YzdjNjA0ZWU3YTUwMjgxIGxlZ2FjeS10cnVuaworNzU0MjAgNjRlMTlhNjg5ODg2MTdlZjU0NWZkNDUxODBkMGY4ODcyZWFlMTRlMSBsZWdhY3ktdHJ1bmsKKzc1NDIxIGZlMzhkM2MxNzg4OGM4YzBlYmVhMTNiOGFhZTFmMWZjZGUyZDIwN2IgbGVnYWN5LXRydW5rCis3NTQyMiAxNmRiMmE5MzIyNDg5YzM5ZWJmMmIwNWQ3YjYwNmYzOTRmYjBhYTY3IHB5M2sKKzc1NDIzIDUwYjdmNTY4MTRmOWUzZWEzYzYxMGIxZmViMjZhNTdlZDEwM2Q5MWIgbGVnYWN5LXRydW5rCis3NTQyNCBkMGYwMDVlNmZhZGQwNjRkNzUwMzBhOWFkYmFmYjEyZTdhMjZjYTdkIGxlZ2FjeS10cnVuaworNzU0MjUgOTA0NGY2NGIxMGFlMDZiOGMwMWFmM2NkNDc4NmYyZWUyNzQxNDY0OCByZWxlYXNlMjYtbWFpbnQKKzc1NDI5IGZhNjE4OGM0N2I2M2ZjNTI1ZDgzOWM4Nzk1YjI1ZDJmMzU3NmFkMDAgbGVnYWN5LXRydW5rCis3NTQzMCA0NWI2MjcyNTM3N2E2MTI4NTk3ZGJjZmRjNmQ5ZmY1ZTc0Y2RlMTYxIGxlZ2FjeS10cnVuaworNzU0MzEgYTRiMTkyMmEzMDc0OTIxODRhYTQ0Njk0ZDkyOGNiNTFjMTI0ZDkwZSBsZWdhY3ktdHJ1bmsKKzc1NDMyIGUwMGM3ODg2OWIzY2QzNTY4ZDE3N2VhZDI3MTA5YmYxMTg1MmQ2Y2UgbGVnYWN5LXRydW5rCis3NTQzMyA5ODNlZWZiZjY2NDkzNDBlNzdkYjI1MjAwZWMxOTcyMzQzNmI3MzljIGxlZ2FjeS10cnVuaworNzU0MzQgZTRhMGI4NzM5ZTViOGFiN2JmOWU0ZmE2ZWJmZmZkYTczZjQ2N2EzYyBsZWdhY3ktdHJ1bmsKKzc1NDM1IDNiMzdiOGRkNzZkNzUwMjVmMTQxMjQ3ZWY0ZDk1M2ZjYjYyMTlmYjEgcHkzaworNzU0MzYgZWM1MDhjODlhZDM2ODIwNzhjZTQzYzA3ZGQ2NWRkMmRkZGQ0YzQ3MiBsZWdhY3ktdHJ1bmsKKzc1NDM3IDIwZDA5NTQ5YjgyYzBiOTliNzcwYzExNDgwMmQ3ZDhiODlkMjVhOTMgbGVnYWN5LXRydW5rCis3NTQzOCAxNjE3YzExNTU2YWZhMjhjMWJjYWI1NDgyNDkwYTVmM2YxZGZiMGRiIGxlZ2FjeS10cnVuaworNzU0MzkgN2U1ODQ5NDIwNGM4ZjZlNDNkZGViMDlhOTY3NDhhZWM0Nzg0M2MzNiBweTNrCis3NTQ0MCAyNzU0ZDY0MTgwZDFkYzU1N2RhYjI5NzlhNzkyNThhODcwZDRkNjAyIGxlZ2FjeS10cnVuaworNzU0NDEgM2JjNmZiM2MwY2NkMDlhMDUwNzRmYmEyZmE0ZTdiMzM0MjFmZDg3OSBweTNrCis3NTQ0NSBkOWU0OGFiNjI1NjJjMTRmMDNiMjUyYmIxMTljZjNiOGQ4MjZhZjM1IGxlZ2FjeS10cnVuaworNzU0NDUgZDk2MzA1MTdjNzBjMTk1MDQyMmFjN2UxMjJmZTEzODlmZjFjMWYxNSBweTNrCis3NTQ0NiA3ZmExNGJlOGFkNzNjYjM1NzU3NjY1ZDgxMzgxZTE3MzBkNGQxYzU2IGxlZ2FjeS10cnVuaworNzU0NDcgOGRmYTg0M2M4MzUwMWEwZTVkYjlkYWYzYzc0MTJiZjY4ZTA4ZjRlYiByZWxlYXNlMjYtbWFpbnQKKzc1NDQ4IDI0ZDMyMWZkM2QxYTIwYjE0NzQ2NDhlYjFiM2Q0YmRmMjI0NWEyNWQgcHkzaworNzU0NTAgOWU0MmNjMTkyYTQ0NjU5ZjQ4MmI4NzcwYWFiZjNkMmQ3ZWY0OGI4NyBsZWdhY3ktdHJ1bmsKKzc1NDUxIDc2MDA0MzZkYjJhOWI4NjliOWYwMzBmNGI2OGUwZjdjOGU5MWQ0ZmMgcHkzaworNzU0NTIgMjZiMTFlNmZlNWUzMWM2N2ViZmY4OGNmZTY5YzRkZTBhZTgzYzhjZSByZWxlYXNlMzEtbWFpbnQKKzc1NDUzIDM2NThjMGE5NTg5MjJhZjkyNmYzOTk3Njc0ZmIxZmM3Yzc1N2Q4MWQgbGVnYWN5LXRydW5rCis3NTQ1NCA2MjRmODFiNWVjMjRmNzczYmIwMWYwNzk0NjVkOGRjN2FiZTViY2Q3IGxlZ2FjeS10cnVuaworNzU0NTUgN2Q3MWM1MWZjMzA4YzFiMjY1M2I5ZjIzZDM3YzQxZTQ1OWExNzU0NCBweTNrCis3NTQ1NiA1ZWE2Y2QyODM5Y2M3YzEwMjc2ZTlhMjc1YzE2ZjUwMmQ5OWE3NTM0IGxlZ2FjeS10cnVuaworNzU0NTcgOWMwNmM3MzA5NzY1NjZjNGVkOWE5MTExYjllYWRmYjdhOTA4YjBmMSBsZWdhY3ktdHJ1bmsKKzc1NDU4IDUyOTk1NzlmNTc5YTg1NGFmYjhlMDcxNzMzMjMwNGRjYTdlMjZjNjkgbGVnYWN5LXRydW5rCis3NTQ1OSA0YzFmZjdiMjQ4MmVlMThhNGU5OGYwMDNiY2Y1OWU4NjkyNTc0ODk2IGxlZ2FjeS10cnVuaworNzU0NjEgYTEwODhiYjRmY2Y4YTZkMjEzNDY3ZWY4MTg0MDhkYjBiZDgxOTc4ZiBsZWdhY3ktdHJ1bmsKKzc1NDYyIDIwNDhkMDRkZWFiNDJjNTU1YjgzNWJhN2I0MTlkNGEyOGQ5YzE5MmMgbGVnYWN5LXRydW5rCis3NTQ2MyA4MTQzM2E2NzZhOGJhZmUxZmUzNjVmOWRjMzgwYjIyYWZkNWI5YjBjIGxlZ2FjeS10cnVuaworNzU0NjUgYjgxOGE3YTcwYTQ3NzgxMWExZjEwYTQzYmJjZmZlNDRlZDU1Yzc0YiBsZWdhY3ktdHJ1bmsKKzc1NDY2IDlmMDUzZTU1MGM5Nzc2OGIwZmFkZjgyOTViMDI0NmQzZDQzMTY2MjYgbGVnYWN5LXRydW5rCis3NTQ2NyA5OTMyMDdkY2UzOTU1YjQwOGY2YTZhMjUxNTg1MTlkNjA5ODk0NWJiIGxlZ2FjeS10cnVuaworNzU0NjggMDA3NTA1Y2MxZTJjNzM1NmY2NGFkNWVmZjRkYWU2YjU0ZDlkMjg5NSBsZWdhY3ktdHJ1bmsKKzc1NDcwIGFjM2M2MzJlMWMxM2MzMWM2NjBiNzkyMjNmZjczZTk5M2M1MGYwODMgbGVnYWN5LXRydW5rCis3NTQ3MSBlNmRlYjE1YzVhZTZhMDZmYzFkNDZhOTFiMzI3NDdmN2RmNjYxYmVmIHB5M2sKKzc1NDcyIDM1NGZhNTYxYWFkZjZjZGExMDU2OGNhNTk4ZTNhNDEwN2NlM2NiNzIgcHkzaworNzU0NzMgNDllM2Q0YWM2OWM2Zjk4MGMzNTM1NWIwMDVjODE3NDhmMjM5ZGVlYyByZWxlYXNlMzEtbWFpbnQKKzc1NDc0IDhhNmI2MTQ4NGE5ODRiOGE4ZmQxODk3MDdhYWJmYWI1N2Q2OWQwNGUgbGVnYWN5LXRydW5rCis3NTQ3NSBjMzdjYTlhY2QxZjlhYWNiOWVlYjM4MGYxNzkyYzQ2M2RmYTk2YTMxIHJlbGVhc2UyNi1tYWludAorNzU0NzYgMzBiYjRjMzU1NTlkNjE2NTFlNzUxZTcxODI1NzQ0Y2ZjY2I3NWQ1MSBweTNrCis3NTQ3NyBkMDc5ODc3ZGEzMzVlNjM4MjhmOTc3OTQ2NTNlODExM2FjYjUzOTJiIHJlbGVhc2UzMS1tYWludAorNzU0NzggODRjMTY4MDhiYTJjODFkYTJlZWJjYzBiY2RhZTI3ZGM1ODAzNzBkOCBsZWdhY3ktdHJ1bmsKKzc1NDc5IGQ5NDQ0MDAxMTRlNTAwZDVjNjI5YTVmZWVlZjMzYmI1ODJjNTg1NzkgcmVsZWFzZTI2LW1haW50Cis3NTQ4MCBhYTUzYTJkNGVmMmZjYmU5YjM4YTA1MWI2Yjc4YWU3YTY3ODk0ZjYxIHJlbGVhc2UyNi1tYWludAorNzU0ODEgNWU3YzVjOTRjNTcyMWExNmI5N2MyM2NjZGEzMDE0NzgyMGYwMTg1NSBsZWdhY3ktdHJ1bmsKKzc1NDgyIDM0OWMwMzM3ODk2YTI3MmY2MDZmOTBlZTY2ZTA2YTg2MDI2MTc3N2YgbGVnYWN5LXRydW5rCis3NTQ4MyBlZDdkZWMxMzY0MzBmZTU1YjY1YjliZmI3MzhiNzNmN2ExODQ3MTJlIHJlbGVhc2UyNi1tYWludAorNzU0ODQgNzc3YmQ1ZGQxZDlhYzU0MWEyYTNhOTM3ZmJhOTI2OGM5YmYyZTNhNSBsZWdhY3ktdHJ1bmsKKzc1NDg1IGU2N2ViOTY2MDA0MTc5ZmViZGJmOTg3NDFhYWYzZThkZjIxMDJhYWMgbGVnYWN5LXRydW5rCis3NTQ4NiA3N2VjYzVlNGY2NjRjNzE0MjRlNGQ1MWFhNWYxMzYzYTE2MDkyY2IxIGxlZ2FjeS10cnVuaworNzU0ODcgMjkyOGYxZThiMzg1ODE1NDIzYWQyZTg5YjVkOGM5MDE3MTA1MjA2MCBweTNrCis3NTQ4OCBjYjUzYjFmYTcyMDZmMmY1MjA1MDUyNzlkNWQ4NTU0NGViNmJmYzNkIHB5M2sKKzc1NDg5IDNkYmM2MjA3Y2JmNmRlNGZmYTUxY2EwYjljOTdkYjEyZGUwMzg2MzUgbGVnYWN5LXRydW5rCis3NTQ5MCA4OTNjMmE0Yzk1NDQ0NTVmNzk4NzE4ODAxZTlmODdhMjFkZWYwNDk2IHJlbGVhc2UyNi1tYWludAorNzU0OTEgZGUyZDk5YWE0NmVhZmY0ODNhOWY1Y2FiMjkwMjcxYTFkZTRlNTY2NiBweTNrCis3NTQ5MiAyYjYzNTk3MDkxODhiMTFiNjlmMzE3ZWIwZWRkM2NkZDRiMDFlOTYyIHJlbGVhc2UzMS1tYWludAorNzU0OTMgMDk4YmEzYTYzNzMwY2E2ZDc2NGJiYWRmNTlmMGNmYTc0YmM2MTAwMSBweTNrCis3NTQ5NCA1Mzk3MDAyZjdlNWU4ZmI5MTgxMjFkMGQwZjYwMzc0NzI1Y2Y3YzhmIHJlbGVhc2UzMS1tYWludAorNzU0OTUgMGY5ZThkM2VjYWMzOGM1NzYwNzBmNTU1NTI5YTc5ZjY5MjJjMWQ1OCBweTNrCis3NTQ5NiAyYzYwYWM0ZWQ2NWY2OTAwYjg0YWJhYWNjOWE5MjQzYmU0MzRiYWUyIHB5M2sKKzc1NDk3IGVhMWZkYWZiZTRmZTI0NThhYzE3Mjg3ZTBkNmM3MDllZDAwZmNlNWMgcmVsZWFzZTI2LW1haW50Cis3NTQ5OCBiZmU3NTZlYjA5ZmFhZDA1ZTdhZDBhOWE1YTA4ZGM2N2JlMTNmYmFmIHJlbGVhc2UyNi1tYWludAorNzU0OTkgYTBlNDFkZmI5NzJiNTE4NzgzMzljZmFiMWYxNzQ5ZDkwNWJmNWVkNyBsZWdhY3ktdHJ1bmsKKzc1NTAwIDM4NjQxNGI4NDZlYmNjZGNjNzg0ZWQ1ZDc3MDEzMGNjZTY1MjNkZGUgcHkzaworNzU1MDEgMjVlZjZmNDgxOGEwNTc4OTRiZDlkNzcwZmY5NzQ4OTdjMDg1NjQxNyBsZWdhY3ktdHJ1bmsKKzc1NTAzIDA2OTk5MjUzOTg3YmI1Mzg1ZTcxOTcyZTUwYWRhNjUxMDM0M2Y5MTUgbGVnYWN5LXRydW5rCis3NTUwNCAyYTY4NTNhMTNhMmY3OTdkOWI4NDJmYzI2MDk4MTcyZGU3MDhhNDRjIHB5M2sKKzc1NTA1IDNjY2QxZDZmMDVhNmI1YzcwYzVhNWQ5OGY0ZjNjNGExMTg2NjBiMTQgcmVsZWFzZTMxLW1haW50Cis3NTUwNiBkMTY2NmNjN2JjNzRmM2FkOWZlNGZjZjFmMGI4ZTQ5MWU5ZGJhNTJhIGxlZ2FjeS10cnVuaworNzU1MDcgZDg5ZTRhNGUwYjIwN2ZkYjQwYzZmOTkyNzU4M2NhZGI5NTQwNmYxMSByZWxlYXNlMjYtbWFpbnQKKzc1NTA4IGVkOTkwMjZlMDdmY2RkZTg4NmM3YTFjNDA3YWZhOTllMzA4NWQ3ZDcgcHkzaworNzU1MTAgNzljYjA3ZmEzNmVjMTBlMDAzYzZhMDU2M2E5MWNlZWRjYzE4YWMyZiBsZWdhY3ktdHJ1bmsKKzc1NTExIDY3NDljOGFkYzQ5ODU3Y2RkYzIxZWVkNmM3ZGVmMDZlYjhjNmE3NjIgcmVsZWFzZTI2LW1haW50Cis3NTUxMiBlNjQ0ZWU0ZTc2YzdiY2Y3YWMxZjRlNTU1N2MxNjU0ZmMwMDNlM2RhIHB5M2sKKzc1NTEzIGY0MjYzYTliZDhhZGRhNzNhZDRhNTQ1YjIxYWQ1NmIzMTkzOGMwMGEgcHkzaworNzU1MTQgOTgyNWVjMjI4ZWZiMTJjYjJiZjY3ODEzYjY5NzhjZjI2MTRiNTFlZiByZWxlYXNlMzEtbWFpbnQKKzc1NTE1IDM3MTkzN2JhNmZhNjJjYjBiYzhmNTc3NmNlNjlkODZjMTRmNjg3OGIgcmVsZWFzZTI2LW1haW50Cis3NTUxNiBkOGE3YjMxNGZjNTA1MDEyNTM5ZmJkZTVkMWQ1Y2EzOGQ1MjhjZTI5IHJlbGVhc2UyNi1tYWludAorNzU1MTcgNzE4ODAwMjlmZTc1NjJhNDM4MGUyMGNhOWRlMWJhMzIzODlmMWQxOSByZWxlYXNlMjYtbWFpbnQKKzc1NTE4IGYzMDY2N2NkNDA0M2M0M2I4OWUwMzQ4OTBlOGIwNDY2OGNlNDBmNzggbGVnYWN5LXRydW5rCis3NTUxOSAxNjBmMTZhOTFlZTczODVhNTBiMzZhMTNmMWFiZDI1ODNiMzgyNWM2IHB5M2sKKzc1NTIwIGJkNmRlZTZhNzhjMzk1ZWM2MTdlYjQxZjI2YmJhZDEwYTZlODdmYWQgcmVsZWFzZTI2LW1haW50Cis3NTUyMSA0MjMwM2M4Y2FiMzE1ZWJlNzBhOWJjNGM4YjExMWM3MWU0NzI2YmZkIHJlbGVhc2UzMS1tYWludAorNzU1MjIgNGE5NTQyYWNjZDEzMzQ1ZTc1ZTBiZmZkOTdkZjU1Y2ZlMTg1YTY1MCBweTNrCis3NTUyMyA2NzBlMjIyYWZkNDgxN2QzOGFlMWJiOGU5NjQ5NmQ3NGQyNDk0NTY0IHJlbGVhc2UzMS1tYWludAorNzU1MjQgM2RhYWNkOTg5MjVkNzg2Nzc3ODA5NTIxN2RmYTdhNzE3NTZkYTNiNSBsZWdhY3ktdHJ1bmsKKzc1NTI1IDczMjcyYmQ5NGQ3YjAzYTE5OTc4YWRlODRmYmYwMDg5NzFiYzY4MTkgcHkzaworNzU1MjYgMzQxODJmOTg1ODliOGM5YTIzOTBiOTA2YTM2ZjczNmI3MDA0YTc5MyBweTNrCis3NTUyNyBmNzQwMzBiYTY2MTA4OGY2ZTI5MjA3OWEwNzk4Y2E5ZDk2YjI0YjJhIHJlbGVhc2UzMS1tYWludAorNzU1MjggOTBjMTBkY2IyOTEzMzkyMjIxOGE3ZTFkNmQyOWUyNDg5NjE4NzA3NiBsZWdhY3ktdHJ1bmsKKzc1NTI5IDQzZDBiNDcxMDZkZjhiOGVlZGVkODU3OWYxZjY0N2NkOGQxMDNmOTcgbGVnYWN5LXRydW5rCis3NTUzMCA1NTQxZTQyZTFjODExZDFkYmU0NmUzOTNlMzcyM2EwYTY0YzRkOWZhIHB5M2sKKzc1NTMxIDg1Njg1ZTdkNzJjNzE4NGJjNmI3MzlhNTgyZDBlYThjZmUxYjFiZTkgbGVnYWN5LXRydW5rCis3NTUzMiA1NDAzMWVjZTQzYTMzYWNhMTZkYzA5ZjMyYTEyNDc3ZTNlYTZiNTZiIGxlZ2FjeS10cnVuaworNzU1MzMgY2FmM2M5M2QwMTkzNmE0YjJlNDdhZTYyZTg1ZTc4Y2Y1OWFhNTVmMiBweTNrCis3NTUzNCBlNmM0ZGJiNWRiMDJlNTA4YTQ5ZTc5N2ZhZjkzNDYzNjA1MDMxOTBjIHJlbGVhc2UzMS1tYWludAorNzU1MzUgN2FkNmU3OGE5YzdkY2RiMTU2ZGVkYTJjYzQ1NWEyNjhjODI1ZjZlMyBweTNrCis3NTUzNiBjZWM3ZjRjNTg1NDQxNDI5MGY3NTZlNTYwNDM3Nzk5YWY3NzZiOTBmIHJlbGVhc2UzMS1tYWludAorNzU1MzcgZWRmMjI2MzdiZDkwOGQzN2M5NzQwODU5MTZkNmI3OTY2NGU3MWUxZiBweTNrCis3NTUzOCAyZjE0YjBmNDU1MWFmMmEyOTAwNzM3ZWMxYjQ5ZWQxNjRhNWRiZDQ4IHB5M2sKKzc1NTM5IDkxZWU4MWYxYTUyNDJiNjZlNWJjOWY1ZTUyNjAwMGY2MjNiZWY5YzYgcHkzaworNzU1NDEgN2FlNmQ1ZTRmNzk4MzVlN2I0MDdmOGE3MmQwOGFmMzI3YzIzZDI2OCByZWxlYXNlMzEtbWFpbnQKKzc1NTQyIDk1YmQ3MGQ1ZDcxNWNmMDhkYjUzMWQ1ZTdjNzIwYTk1Y2RmZDdkZDkgcHkzaworNzU1NTEgYmRjMzkwNzIxZjk3NWM4ZDlmNjEwZTNhZjg1NDA5NDA2OWI3ZWFiYyBsZWdhY3ktdHJ1bmsKKzc1NTU2IGEyMTk5ODg5M2IxZGU0NjYzZGJlZjFiOGQ5ZDA3ZTI5NTdlNDgwMzAgcHkzaworNzU1NTcgOTQxZjFiZTQyM2FhMTg4NzFlYmQ5ZjUxYWRhMWUzNmVmMWRkMDA5MiByZWxlYXNlMzEtbWFpbnQKKzc1NTYxIDFiNjAyYTJkODFlZjUxOGI3ZTI4NzI0MmExNjcyYjU2ZTFkYzgwY2YgbGVnYWN5LXRydW5rCis3NTU2MiA2ZTRhNDkwZTcxNDcxM2VjMDRhN2U0NTgxM2M1MGMwNjg1ZDhkZjRkIHB5M2sKKzc1NTYzIDI2MDA3Mzk1NjA3ZTg5ZGMzZjk5NjExMDk4NDhjMGMzMGIzZGYxYWEgcmVsZWFzZTMxLW1haW50Cis3NTU3MCAxMjA3OWMzZDRiNzc5Y2NjZmJmMmUzYWQzMDViMTkzY2UzN2VlYTk1IGxlZ2FjeS10cnVuaworNzU1NzEgYmY3NjI0MTIwZWM3ZmUxYWFlMDg2YmRhMGJlMjM4OTYwZWUzZWQ4YSBweTNrCis3NTU3MiAwMjk5OTUxMzkxZTM2YWQyMzE1ZGQ0MGY1ZjRmNTg0M2FmNzNmNDE5IGxlZ2FjeS10cnVuaworNzU1NzMgYjNiZWZlMGYyYjhkZGMyZGU0N2JmMzNmYTM5NThkZDZjYzM5MGYyZCBweTNrCis3NTU3NCAzY2ZkMjBjZDY0NTlmNWNjNDJmY2JhMWYwNjJjODRiN2YzMjA3NmU1IGxlZ2FjeS10cnVuaworNzU1NzYgMTdjZTk0YWVlNzA0NmFiOTBmMjgxNGJmMzY3NDljNDdhOWNjM2QxMiBweTNrCis3NTU3NyAxZTcwMzVmYTYxNTRjNmY2NWYwNjBmNmQ5YTUyYzNiMTI5NDU4OGU5IHB5M2sKKzc1NTc4IDI5YjNlMTI2YzBjMjQ2NzJmN2Y0MzhhMTQ4ZWM1YzM4NjgxMzMwZWIgcmVsZWFzZTMxLW1haW50Cis3NTU4MCAxYjk0NDQ5N2U4MWUxZGJmZGYyNTgyMGQ1ZTVjNzA4OTE5OTUwNTVmIGxlZ2FjeS10cnVuaworNzU1ODEgOGMxYjYxZTc0NjNhNDFmN2YxZDdlNmM2ODkwNDBiYWMyNzVjMjU1MCBweTNrCis3NTU4NCA1ZDhiMmQ2ZGNkNjIyOWRlYTJjNGI1N2YxOGRjNGI5NTI3NjA3Mzc1IHJlbGVhc2UyNi1tYWludAorNzU1ODYgNzE2ZWMzZWQzZmNmOGZhZjVlM2RiOGJhNWFmMTkzOTEyMDE0YWMxMyBsZWdhY3ktdHJ1bmsKKzc1NTg2IDQxNGUwM2MxNDgxNTlmNDliZDZkZWJmZTVjYThiYmNkOGZkZTA3OTcgcHkzaworNzU1ODkgZWJlMTljNGM3MWY1NzA2Yzk3ZTJiYTdiODNhYTgzZTc4NzJlNmE5NiBsZWdhY3ktdHJ1bmsKKzc1NTkwIGE5YmE2MzdkNGRjZDM3NTY1NGM0YmMyMDE0YzM5MDRlMjIxOWRhNjkgbGVnYWN5LXRydW5rCis3NTU5MSA5NzgzNDljMDc0Y2UwODI4YmY1NWMwMWEyYWExZTYwNDMzNjAyMDU3IGxlZ2FjeS10cnVuaworNzU1OTIgZmU4NWVmMjdkYzQ3OTFlNjZkZjU0YzlkMTcwOTU0NTc1NjRiNmJiMCBsZWdhY3ktdHJ1bmsKKzc1NTkzIDVkZTFhYzI0MmJmYjU2M2Y0NDVmNzM2YjU2NDhkNzVmOGFhMTdjZWMgbGVnYWN5LXRydW5rCis3NTU5NCA1OGJkYTEyMDVhY2Q5ZDg5MWMzNGUzODk4NTdjNGZiMmJhYzcwMDdhIGxlZ2FjeS10cnVuaworNzU1OTUgMGJhOWIyMTcxODFlZDhjNTYwNTgzYzk4ZjkwZTljNmFlMmVkMmQ0MyBsZWdhY3ktdHJ1bmsKKzc1NTk2IDNjMjZjNmI0ZGI1MDBiN2NjYWY0MGYxMWJlNTBmOGZiNGQ4M2IzNzggbGVnYWN5LXRydW5rCis3NTYwMCAwN2VmNTk3NjZiMDI2ZTAzMjE0OThlNjMyNGEwMTgxNTRmMmJhZmUxIGxlZ2FjeS10cnVuaworNzU2MDEgMjdlYWFjMDdjNWQ2YTg5YTFhNjFhMDc2NzY1NDNlZTgwZGRhNmVkZCBweTNrCis3NTYwMiBmNTU1NjhiMzk5MjU2YzI3MzE4Mzc4YTFkZWNkNzI5NGY3MjM1OGIwIGxlZ2FjeS10cnVuaworNzU2MDMgMDY1MzQ4NjkzNWI2NDE2OGRlMzQ0ZDBhNTIwNjg2YTAxYmQ4MDljYiBsZWdhY3ktdHJ1bmsKKzc1NjA0IGJhY2Q0ZDQyMjU2YjY2NzhmODU4MTA5ZDRmYjcxMWJjNDMzMDBlN2YgbGVnYWN5LXRydW5rCis3NTYwNSA3MmE1ZmM3OTBkMDFmYzIzMjI4NmJlYzc3ODZjN2ZkYTg3NmRkZDc0IGxlZ2FjeS10cnVuaworNzU2MDYgOGE1OGE3ZWM5MmRjNTZkNjlmZDg5YjVhNWE0YTI3OGRiNTM1MjEzZiBsZWdhY3ktdHJ1bmsKKzc1NjA3IDRjZmFmNmFlYzVlYmM1NTk5MDVmMjljNjRlOGY3YjUzZmIzZDNhMTUgbGVnYWN5LXRydW5rCis3NTYwOSBjNDM4OGU3ZTc3ZTlmNjZmNjQxMjA2MDFjZjYwZTc3ODQxY2IyYTQyIHB5M2sKKzc1NjEwIDU2OWEwZDE3MGZhYzcyMDM0NTIyZGI2OGU0OTU0YWU5ZDVjODRkNzMgbGVnYWN5LXRydW5rCis3NTYxMSAxYjg4ODM0MzAxMzkxMWZkZmI2ZTM1NTc5ZjBhMTJjNDllN2M3YWQxIGxlZ2FjeS10cnVuaworNzU2MTIgYTE3YjU4YTQ4NmY0MGI1ODUxYzY0OTZlMzAyNTJjZjkzYzUzMTVjZCBsZWdhY3ktdHJ1bmsKKzc1NjEzIDlmZmExNTEzMDk4NDY1MzE1ZTdjOTc1NWY2NjFmYzVkN2ZmZTk1ZmUgbGVnYWN5LXRydW5rCis3NTYxNSA2ODI3OWMxMzNmZDk5MjJkNDYxNzYwNjYxZmYwMjlkMjkyNzk3MDY4IHB5M2sKKzc1NjE2IDMyMWU2MzVjOWFiODI2YThhZmE1ZjNmNDY4ZDA1NjQ1NjUzOTIyNWMgbGVnYWN5LXRydW5rCis3NTYxNyBmM2I3YmQ2ZTdhZGQ5ZmE3MTdmMTExYzhlMzY5MjQ5MWYyYWRhNGU0IGxlZ2FjeS10cnVuaworNzU2MjAgZGIyMWMzYzAwOWRiMzkzY2UyN2Q5NzM3YTExODFhMjYwODliNmQyOSBsZWdhY3ktdHJ1bmsKKzc1NjIxIDNjMDY2NDQ4MGY3YTE2MGJlM2E0MDNkN2NhMTc0NGY0NDE5YWU1MjcgcmVsZWFzZTI2LW1haW50Cis3NTYyMiA4ODE5NThkYTIxOWE3YTM0ZDgwMTdkZjExMzFjNDJkMmMxNjVkZDE3IHB5M2sKKzc1NjIzIDZkMjcyZmQxY2RkMWU3YjQ1Y2RiZDI4NDc4ZDE5ZjlkZTVlMDcwZTIgbGVnYWN5LXRydW5rCis3NTYyNCA5MmRkZTI4MjE1M2RlZjU0YjQ2NDlkMGQ0NzgyMzliYzc0Zjg5MTIzIGxlZ2FjeS10cnVuaworNzU2MjUgOWViNzllOTQyMDRkMjY1Yzg5ZjQ3OTM4ZjkxZmU1ODM3NDA0YWZiOCBweTNrCis3NTYyNiA2MjAwODVhYjQ5NWI0MTY0ODQxYTMxZTM3OTFiZWZmMTIwNWQ4MzdiIHJlbGVhc2UzMS1tYWludAorNzU2MjcgYjExZjAyY2IxMTI0NGY3ZDJmNTVlZWExNWNkYTVhNmY2M2U2OTliYyBsZWdhY3ktdHJ1bmsKKzc1NjMzIDlkZjMzOTM3MTcxZjY1MTZjYjUwNzExYzM0NTNiYjk0N2ZlM2NiZWYgbGVnYWN5LXRydW5rCis3NTYzNCBmMDkxNDQ0ZGVlYTAxMDQwZmYyZjgzYjhlMGJmMDE2ZWJkOTU2YjJlIHB5M2sKKzc1NjM1IDk2ZDZjMTQ2Y2ZhOTE3NjFhODViZjM2NDIzNTZjZDMxYjFhODY1YjEgcmVsZWFzZTMxLW1haW50Cis3NTY0MCBmMzhkYWJmMjQwY2JhZWM0MTUzZjRjNDdkYTVlODliZmUyMjk3YzZlIGxlZ2FjeS10cnVuaworNzU2NDEgMzViYjQzMzg2NzM0NGZlMzI3YmU3MTNmYWQ4MGZhNzA0ZDBiZTM5YSBweTNrCis3NTY0MiAxNjFkMzMyYWZjODg0ZDdhNzQ3MjRiY2I0ZDkwNDQwYjEzNjczMTg5IHJlbGVhc2UzMS1tYWludAorNzU2NDcgODBmMjI5M2ZkNjZhYzg1MWI2YTQ4NWU3ODAxNDg3YTZkZGJjNjY3ZCBsZWdhY3ktdHJ1bmsKKzc1NjQ4IDEwZTcyOTM5ZDJjZjkxNjZkYjVkOGEzMDdhZjk4ZjFkMmMzZGQ1YjkgbGVnYWN5LXRydW5rCis3NTY0OSA5YTkxZDQ1MmEwZjg4ZjdlODY1ZmE2MmEyN2FiZWQyZWE2NDc0NWVmIHB5M2sKKzc1NjUwIDJmMzA3YzdhZGI4ZmM1YjEwNzc1MjcyMWZmZWM0MjIxNDE1OGYwMDMgbGVnYWN5LXRydW5rCis3NTY1MSAyMTQ2YmJkZjRlZDdkYTM4YjlkMmQwZTAyYjYxNWQwNmFjMTMzYWE0IGxlZ2FjeS10cnVuaworNzU2NTIgMGM5Y2ZjN2YxZTk1Yjc3ZjVjOGM4NzVjYmJmMzZhY2ViODQ0ODk1ZCBweTNrCis3NTY1MyBlYjkyNWFkYmE4ZjkwMTRjNGMyMWUzYjRmNGM1OTJjOTBkNWY4ZDRiIGxlZ2FjeS10cnVuaworNzU2NTQgMjY0NjA5ZmJkYTQ4MTU2MzdiNThhYzQ1YjliNDRlZDQwMWMxNGU3NCBsZWdhY3ktdHJ1bmsKKzc1NjU1IGFlMDJiMTY4MTYyY2U4ZjRkZGVhMjE0MGExNjI0OThjMjNiMTBkNDQgbGVnYWN5LXRydW5rCis3NTY1NiBjNzA0NzUwZTZmM2U1YjA1MDZlMTc0Y2QyZmE0YTZjOWZiNDk3YTI0IHB5M2sKKzc1NjU3IDZkMjljZTlkY2E5MDJkYTNmMjFlY2IwNzUxZjIxNDYxNmQ1ZmJiMWMgbGVnYWN5LXRydW5rCis3NTY1OCAyYWIwOGM5MTk2NDgyNGNmMDVhYzk1Yzg1YmFkZDM5Y2FlN2ZjYzcyIGxlZ2FjeS10cnVuaworNzU2NTkgMjRkNDNhOTE0MmQyNWFmMGViMjAyM2Q0MDAyOWY5MWI5M2Y1N2RlNCBsZWdhY3ktdHJ1bmsKKzc1NjYwIGRhYmUxZjkyY2EyNzQzNzc3OWExODM3ODM3Y2YzZWI3NDBjZGUyYjQgbGVnYWN5LXRydW5rCis3NTY2MSA3MjA2NmU1Yjk0MjE3ZTEzODZhOTg1NjU4ZjM3ODRlOTBhYzQxYzJlIHB5M2sKKzc1NjYyIGNiZTM5M2ZhNDRmOTYyODg3N2IzMzBlNzJlN2MyNDkzOGMxMjRlYTkgcHkzaworNzU2NjMgNTY3YjBmMzRiMWViMTNlMzIzMmY3MTNlYWEyZTk2ZThmZmJmN2NiMiByZWxlYXNlMzEtbWFpbnQKKzc1NjY0IDA2ZTY2MzY2MThkNzIxYjgzZDQ0MWRjZmE2OWNmZDdjMjk1MTUyN2UgbGVnYWN5LXRydW5rCis3NTY2NSBjYzg4YTcwMzQyOGQwMTFmMmJhODRmZTNlMzljNTZmYTVjZmMwOTU3IHB5M2sKKzc1NjY2IGFhY2VlOTc0OWQxNTQzNWE5NzFjNzk0NmJmZDBjMDdlODNiZTUwMmIgbGVnYWN5LXRydW5rCis3NTY2NyA5MmYwYTFjYTRlOTg2ODQzZDNjYjE2NzJmNmI1NTEyMjEzNjg5OTE3IHB5M2sKKzc1NjY4IDBjMzg0MDhhZDgxOWUwZTRiMjQ3MWIzM2RhYzZlNjI2NmVjMDQ0ZjMgcHkzaworNzU2NjkgYjJjOGI5ODQyNTBhYWY5MTc5YzMxMTE5NjIyZmRiYzdiZDM5N2RkZSBsZWdhY3ktdHJ1bmsKKzc1NjcwIDRkNjVmMTIyYjJiM2I3ZjRmYWRhZTRlMGU1MTgzM2IwMTE4MTkzM2EgbGVnYWN5LXRydW5rCis3NTY3MSBkYWQyMmExZWQyOGIyZjZmNWI1NzFjODdkNmQ3OWZjYzdhZWJiNGE0IGxlZ2FjeS10cnVuaworNzU2NzIgNWNmMzI0MzMxNWI1YmI4YThiN2UwM2E3NGUzOTg1YmRjMjA4MTZhNSBsZWdhY3ktdHJ1bmsKKzc1NjczIGYwMjE5OTFlY2Y4ZDZiMzFlMGZmZDlmMDY1MjllMTczYTMyMjI2YmQgcHkzaworNzU2NzUgZWRmMzVjM2E0OGFiOGIyNGEyYjU3NjBhMTZjNzdlYTA0ZWQ3MmI5OCBsZWdhY3ktdHJ1bmsKKzc1Njc2IDQzZDQ3Y2I2Njg4Y2ZkZTA5OTUwOTZjOTZkNDMzZTRjODMyZjVjOTMgcHkzaworNzU2NzcgY2I3MjFjMzE5NWZjNzRkZjczMmQyOTJjNDk1N2JiZGM3ZGFjYjI5YyByZWxlYXNlMjYtbWFpbnQKKzc1Njc4IDE0YjU1YTRlODcyNWFjOGMzMzQ0M2U2NjYyMGJkM2RhODI0YTY5NjQgcHkzaworNzU2ODAgYjU0ZGE1Y2FhYjM2NTA1MDExNjZhMTM5NmQ3NzAxYmYyZjhiNjY3NSBweTNrCis3NTY4MiAwYzEyMzhjYWJlOTIxNWViY2RkYTVlMWU5N2UyNWFhMDA2ODZmMDkwIHB5M2sKKzc1Njg0IGY1YzU2M2E3ZGU3NWQzOTJjYjI0ZTkyYjE1MTc2Mzg0OWVlNjAzZjAgcHkzaworNzU2ODYgNmNhNjQyZDRmNDJmZDVmODcwNTQ2NjhlMWMxMGM3YWIwODA1YTM0NyBweTNrCis3NTY4NyBjNzFiYTVkMWYxN2QyMmYxNjg3NWNmZWYxOTI3YjNlNmZhZTNkZDhlIHB5M2sKKzc1Njk2IGQzZjZmYmViZWFjOTAzZDUzOTdlMDkxMTk0Mzc0ZWIxMWIxMTIxMTkgbGVnYWN5LXRydW5rCis3NTY5NyBmYmU2YjI2NWJkMWEwOTUzYjY4N2YyNzI5ZTg0ZDE0MTM1MWI4MTAzIGxlZ2FjeS10cnVuaworNzU2OTggNDgzNGE0Mjg1NDExYjkxMjM5Nzc0NzJmZDYwNGZiNTA1MWVlZmE2NyBweTNrCis3NTY5OSBhMzUzZTEwOGM3ZTQyMzlkNGEzOTY0OGY1ZDgyNzUxMWRjNTQyOTY0IHJlbGVhc2UyNi1tYWludAorNzU3MDAgOTc3MzZjNzg5MGE2YjUzNmFjYmE0ODAyZWQ2OTAyNzBhNThjNGM5ZiByZWxlYXNlMzEtbWFpbnQKKzc1NzAxIGRkNDY2YWMxOTJiZTlkZWZkOTBlYmYzNmU4ZjFiMWI0YTg2OWU1ZTQgcmVsZWFzZTMxLW1haW50Cis3NTcwMiA4YWM5MDcwMTU2MDU5NTVlM2M5MDY0MjE4ODM3OGUzOTMxZTY4NDQxIHJlbGVhc2UzMS1tYWludAorNzU3MDMgZjhlNjVjYTNmZDM5Y2QwYjNlMTlkOTYxMGY0OTVlNWY1NjI3YWQyOCBweTNrCis3NTcwNCBjYjljNTdlMmViZDM0NzkzMGYwMjA5ZjRjMjliNDMwMTIxMTI4MTY0IHB5M2sKKzc1NzA1IGEzY2I4MTJkODBmOTA3NmM1YjNhMDM0YTI4OGY5MzFhYTAzNmZhMGYgcmVsZWFzZTMxLW1haW50Cis3NTcwNiA4ODAzYzNkNjFkYTI3NWM3MWNhYmU5ZTlkMDI3NGRhYzk5MDJlMmMwIHJlbGVhc2UyNi1tYWludAorNzU3MDcgZWM0YTFiNGVjYjMxNDA4ODQ0YWY4NGM2NzIyNGZkNTAxYjUzYjQ4MSByZWxlYXNlMjYtbWFpbnQKKzc1NzA4IGI1MTk2MDhhOTcwMWYwMTA4ZTdhMTYxODNjZGRkNWVmMzFkMzViY2UgcmVsZWFzZTMxLW1haW50Cis3NTcwOSA3YjYwMzY4MGJmMjk1YTIwMDI0NGQwYTRkNjNlNTg0ZTcyZjMyMWUwIHB5M2sKKzc1NzEwIGQzY2Y4ZWI4NzI3NGE2YzY0ZjE2MmM3OTRmNGQ1YmUxYWNkZjE1YzYgcHkzaworNzU3MTEgNzZjNjY2OTBkMWVlYTUzNzZlOTI4ODkxOTAzZmI1YWNmYTI2OGI3YiBsZWdhY3ktdHJ1bmsKKzc1NzEyIDhlZmY3NTlkMDgwZjlkYjFkN2JkN2JmMzhhNjhhNWFhODgzZjYzMTUgcHkzaworNzU3MTMgOTcxMzkzZjYwYmQ4NzRkYzQ4MTY1YmJkN2FkNDg2MjQ3MDA1MDIwZCByZWxlYXNlMzEtbWFpbnQKKzc1NzE0IDZlNGQ4OTY4ZTI0Njk2YmRhOTI4Zjk0NWYzMDRkNTVjZTFhNTBlZWUgbGVnYWN5LXRydW5rCis3NTcxNSA3ZGM1N2I5OTFkODNiZGRkMmM1ZjUyYWQ2ZDYwOGU3NWZhYzhmNWNhIHB5M2sKKzc1NzE2IGY1OTg4NDNmMzY5NWJjY2MxZjhjMzA5YzllY2Q2MzFlZmEwODhhYTMgcHkzaworNzU3MTcgMDk1YWY5OWU2YjY0MGY1Mjc3ODQ1ODdhYjZiOWRlMmE5Zjk4MWVkMCBsZWdhY3ktdHJ1bmsKKzc1NzE4IDM4YTU3NTRiMzAzNzcxZDgxNWQ0M2Y1MGIzZTI3OGE4NzUyMGY1MDYgbGVnYWN5LXRydW5rCis3NTcxOSBmNGM3ZmQ4NWYyMzI0MDk2NGE0MTM0MmU5YzY4MTVmOTAxMDZjMDc3IHB5M2sKKzc1NzIwIDM4ZmRhM2E0MmMwYjNmNThmNmE3NmNjMTIxNGI3ZWY5MGU1MDllYzkgbGVnYWN5LXRydW5rCis3NTcyMSBkYTk2YjNmZWFmNTI1Yjc2MWZjYTY0ZjI5ZjFkYTQ5ZDRhYmMzZWZiIHB5M2sKKzc1NzIyIDc0NDcyZGEwOWY2Y2RkZWI4NTE5Zjc2ZTY3Y2Q4YTViNDExNTczN2UgbGVnYWN5LXRydW5rCis3NTcyMyBiNTVjMmVlZTM0OGI1NjM2NjFkNjEwYzljYmRiNzY0ZjJkNjQ3NGZlIHB5M2sKKzc1NzI1IGYzYmY5MmNkMTE5MTc0YzM5YzBhNjg3ZTdmY2Y1NDIxZmFjMjhhZDAgbGVnYWN5LXRydW5rCis3NTcyNiA0NTAxMDVkZDljYTc0NTNkYzNjMGE3ZDIyMDY5MmI4NzhjMjdhYzM2IHB5M2sKKzc1NzI3IDZkYTBhZTY4MGZiNjAyZGNmYTY5YzRiNjAzNjc5YWU2OTJmZjZiYTggcmVsZWFzZTMxLW1haW50Cis3NTcyOCAwM2UxZGJlMmY0ZDU5YzgzODllYTQ1MjQ4NWRjZjgwYTZhZWJlNTQzIGxlZ2FjeS10cnVuaworNzU3MjkgYjUwNDE3NTZmZDkxNDNjODA1YmQ1YmI1ZTk1ZDFhYWEzMjQ1NDU1OCBweTNrCis3NTczMCA0MWJlMmM2OTYxOWIyYzZjNjcxMDJlYzdiYThhZmZlNTgzYjE4ZjFkIGxlZ2FjeS10cnVuaworNzU3MzEgYzU2NDE5Y2JkZDQ4NjQzNzE5Y2QzMzk5MTBiN2UwOGM4ZDI0ZWFiMSBsZWdhY3ktdHJ1bmsKKzc1NzMyIDZkMjM5NmVhN2IwM2I0NGI3NDdmYjFjNDI1ZmQ5MDMxOTg5Y2EyZTMgcHkzaworNzU3MzMgZTU1ZmZiODdjYjcwMmNjNWYzNTY5YjA4ODc1NmM2MDYwYTA2NTBhOCBweTNrCis3NTczNyA0Y2JlYTllNzgzNTY4MTgxMzFhZmE4NzRiYzJhY2Y5NjAwMGMxZDA4IHB5M2sKKzc1NzM4IDVhOGU4MTU5NGYwZjE2MWUzODNiODM3MjAyOWExOGI5NTNiMTM2NDMgcHkzaworNzU3MzkgMGIxYTA4ODAxMmM3NGEyMTdjNmQ5NzI2ZWRjMzVlMGIyOTY5NzhjMyBsZWdhY3ktdHJ1bmsKKzc1NzQwIDg3NTUwMDZlZGY5NzNkY2FiNTZhMjRlOGE4ZTNiMjBiZjIyZjEyNjAgcHkzaworNzU3NDEgODk2Zjk0NTQxZjcyZWYzNWJhZTE1MWQzMDFmMTc1ZmY3YzMzZmZkOCBweTNrCis3NTc0MiA0MjI1MmQ2ZDEwMzBhMmMyZjI0YjdlODc1NDVkNjdjYjQzYTA4MDgxIGxlZ2FjeS10cnVuaworNzU3NDMgYTc3ODE3MWM5M2RlNWVjNjliMWMzOGY1ODBkODcyMDhmODM0ZjUwZiBsZWdhY3ktdHJ1bmsKKzc1NzQ0IGJlNTRiNDA0ODc5ZTY1YWU5NTE2ZjliYzgwNjgwNzdlMzMzMDc2NGEgcHkzaworNzU3NDUgOTFhMGMzYzYwMjA5NGU1MWFhZmI5MzkyMDE0MjM3NzljYWViY2I1ZSBsZWdhY3ktdHJ1bmsKKzc1NzQ2IDU1ZDhhOTExN2RlNzgwZmY5YjlhZWMyYjlmOGViYmU3NzNhMWNmZjAgcHkzaworNzU3NDcgMTlhODMyYjg0NjRhMmVmOTAxM2Y4OTA3Y2MzNDE2YmRiYmEwYzQwMyByZWxlYXNlMjYtbWFpbnQKKzc1NzQ4IDQxNjlkM2NlY2I5ZGNkMjcyOTY5YzQ3NTAyNTI5MmJhNDYwOTEwMDggcmVsZWFzZTI2LW1haW50Cis3NTc0OSAyYWJjM2I0YmNlN2NmNTZhNWVhNGViOWZmOGQ0MjMyN2NhNjkzMTgzIHJlbGVhc2UyNi1tYWludAorNzU3NTAgMTdhY2RkNjU5ZWU5ZTUwZjBkYzlhMjhmZjk0YTE5YTBkNzgwY2UyOSByZWxlYXNlMjYtbWFpbnQKKzc1NzUxIGEwZWY0ZWY1ZmM4ODc1YWJmNzUzNDQyNjdjMjYzNjdjMzgyNWNiMzkgcmVsZWFzZTI2LW1haW50Cis3NTc1MiBmOWNmZWEyMDE1YjIwYTYxNDk3ZmVmMGY1MGNiOTRiOTIxZTJjNzY4IHJlbGVhc2UzMS1tYWludAorNzU3NTMgODE3ODFkMWUyZmI5Y2QyODE0ZTlmODgxZTFhZWQ2YjA4NDVhMDVhMiByZWxlYXNlMjYtbWFpbnQKKzc1NzU0IGMxYzBhMGM3ZjdiYzMwMjRmNTg5NWZjODYzNmQ4Mzg2ZDMyMzdkNjUgcmVsZWFzZTI2LW1haW50Cis3NTc1NSA1MjQ1MjY3NDVmMmU5OTQ3ZTUwYzVlNDMyZDJkNGVjY2NkNjRiZDhiIHJlbGVhc2UyNi1tYWludAorNzU3NTYgZmFjNGUzZmQ3NDdhY2YyYzkxNzA4YmFjOWEyZDBiNDdhZjczMDFiYSByZWxlYXNlMjYtbWFpbnQKKzc1NzU3IDI1MGJjODI0MmU3ZWFiZmU0NWZkZDgwYjYzMjc2N2Q4MjM5MWQ3MzAgcmVsZWFzZTI2LW1haW50Cis3NTc1OCAzZDU0MDQ2OTU4NWJlODNiOGMwMWIwNDZhNDc4ZTFhMzc1MGI4OTk2IHJlbGVhc2UyNi1tYWludAorNzU3NTkgODMwOWFkNmFlNGMwZTc4OGEyNDNjYzQ0MjkxNDRiZTY5NTNmZWE3NSByZWxlYXNlMjYtbWFpbnQKKzc1NzYwIGM3ZGNjMjIzZjkyNWQzOTQ2MWIxZTg3OWNkNzY0NzM4NmE0OWMwOTcgcmVsZWFzZTI2LW1haW50Cis3NTc2MSAzNTUzOTU0Mzg3ZmE1YjI2NjVkYzFmODdhZDQ2YjkzMmM4MGNhOTUwIHJlbGVhc2UyNi1tYWludAorNzU3NjIgMjZlYzhkYmQ2ZjY5N2VlZjNkZDg3ZjE4NzM4NTQzODZhOTIyZGMzOCByZWxlYXNlMjYtbWFpbnQKKzc1NzYzIGI3MThmMzE4OGM3NmZkYzM5YjIzOWYyMjRjNGRhYTU5YTQwNDU4MzkgcmVsZWFzZTI2LW1haW50Cis3NTc2NCA0N2UyYzE0YjE1MDMzNTAzZDEzNzg5ODIwOGRkODI1YTNiNmRjYWVhIHJlbGVhc2UyNi1tYWludAorNzU3NjUgY2NiZjdlYmVmNDc1MTI3MmZjMWJkY2Y1NDBiN2YzNzU2MzM3YzQ0ZiByZWxlYXNlMjYtbWFpbnQKKzc1NzY2IGM3NjM3YjY2YjM0YmJlMzdhMmZkZTc2ZTQ2Yzc5NTRkOTI3MzJiOTYgcmVsZWFzZTI2LW1haW50Cis3NTc2NyAwZGQ1ZDM2NzIxMzRkOGU1YTJiMTE2MTdlNWVmYmI0YTU3YjYyMTI4IHJlbGVhc2UyNi1tYWludAorNzU3NjggZjAwY2NmOGUxMzVlMTBhM2EyNWNiZDhiNzY2NTc1MWZkN2M3NmZhZiByZWxlYXNlMjYtbWFpbnQKKzc1NzY5IGUzZTUzYjg5YzE3ODQyOTUzMzExZTlmMjdhNjRiZjRhMjQzNmE1MWMgcmVsZWFzZTI2LW1haW50Cis3NTc3MCA2ZDQyZjFlZWY0NWQ5ZGJlNzY1MTU2MzEwYjc5MjY0MWY4ZDFhODAyIHJlbGVhc2UyNi1tYWludAorNzU3NzEgYmI4MTg4NzM2YTI5YjRhNjQxNDBmMTE1NzQzZmE3Mjc1Y2QzZjViMSByZWxlYXNlMjYtbWFpbnQKKzc1NzcyIDc4NmFiYWJhNDYyZDFlNzRkNjgzYjVmMzZmODEyNmRiNjNmNGI2MGIgcmVsZWFzZTI2LW1haW50Cis3NTc3MyBjODYzMGY3MzA5MDcxOGViMjZkMWU2N2E4YTIwN2ExMzc0ZGFhMjQ2IHJlbGVhc2UyNi1tYWludAorNzU3NzQgMTMxNDcyN2MwOWFlN2E2OTM1NGM5NzVhOTRlOTY3MGYzMDhjN2Y3YyByZWxlYXNlMjYtbWFpbnQKKzc1Nzc1IDA5NmI0MmNjYjI1OGY1YzYzZDBkZmZmMDk2NTU5YzVkOTJhZWUwMDcgcmVsZWFzZTI2LW1haW50Cis3NTc3NiA4YWRmOGVmN2E0ZGJhYWM4YTBjODBiZTNjMDViNGUxYzUzNGI2OTJkIHJlbGVhc2UyNi1tYWludAorNzU3NzcgMDdlM2MwYjQxZDUwMDNjYzVhODU2YTc5Mjc0M2IwOWZjMDY2OGJkZCByZWxlYXNlMjYtbWFpbnQKKzc1Nzc4IDY4ZjcyODhkMTU1Y2UzYzE3ZmUyM2ZmN2ZhMDFiY2Y4MDk2NWFkZmEgcmVsZWFzZTI2LW1haW50Cis3NTc3OSAwZDUxYTVkNTZiNWEyMjE1OWRjNmQwYmZiNWY5ZDgzMjlmZjdmOTM0IHJlbGVhc2UyNi1tYWludAorNzU3ODAgYTFiMDkzNmIwMjdjZjNmMDZhOWU0ZTU5MDY4OWM0ZGE2Y2M2OTJjYSByZWxlYXNlMjYtbWFpbnQKKzc1NzgxIDVkOTNjNzU0MDU3Y2YyNjY3NWMwZjRjNjQzMTIyNDNmODAwODE2YjggcmVsZWFzZTI2LW1haW50Cis3NTc4MiAxMjdkNjIzMzk2YWI5M2FjOTdhMDViMWRlNDEwOTBjOTNjYzYwZDJjIHJlbGVhc2UyNi1tYWludAorNzU3ODMgZmFiNjYwYzJlZjg4ODdiY2M4YjM5ZmIwODBkZWY0OGFmYzVkMjIxMiByZWxlYXNlMjYtbWFpbnQKKzc1Nzg0IDY2ZGU3MTExMjMwYWI0NWQ0OTM2ZmIzMjg1NGI5OWQ1NGNmOTM2ODEgcmVsZWFzZTI2LW1haW50Cis3NTc4NSA2YjA1ZDQ4Y2NhMjg3MjA2MzIwMzM2OTEyYmY2NDQ2ODU1MTA2Nzk2IHJlbGVhc2UyNi1tYWludAorNzU3ODYgM2UxNWEwN2EzMmZhZjlkNDA0Y2YyMmU2YzQ2ODBlMTYzNTg4ZGFiMCByZWxlYXNlMjYtbWFpbnQKKzc1Nzg3IDliMjRkMDEwMTMzZjBhNjEyZjI5YzNjMzYyMTRkZmZkYTUyZjE2YmEgcmVsZWFzZTI2LW1haW50Cis3NTc4OCA4NWFhNzA2ZjcxMjZkMjExNDA2OTk5MTBmODc3ZjA5MzkxNzEyNTExIHJlbGVhc2UyNi1tYWludAorNzU3ODkgNDg1MjEyMzNiZDZlOGQ0ZDllMjQ3MDY2ZTFmZmI0ZDI4YzVmOTg0ZCByZWxlYXNlMjYtbWFpbnQKKzc1NzkwIGM0YzQyOWIwOGE1NzU5OTIyYjEyYzU4Nzk4NGVlZTRjYmMzMGRkMGYgcmVsZWFzZTI2LW1haW50Cis3NTc5MSBlZjMxOTQ3NDkzNzcwMDAzOGY0YTE0Zjg2ODExNDY0MGRlMTcwYjhkIHJlbGVhc2UyNi1tYWludAorNzU3OTIgYjdiODk3MGNkNWE1NzY0MDRkNGU4MjAzMDQwNjA1NTc4YTM5OGY1MCByZWxlYXNlMjYtbWFpbnQKKzc1NzkzIDI4ODUyNTBiYTVmNDlmNTVkZmFlN2M5MDk4OTc0YTk4MGYxYWNiYmEgcmVsZWFzZTI2LW1haW50Cis3NTc5NCA0MDJkYWRjN2I0YTg2MjQyM2VlZTExYjQ1OWIyNjFlNzM5MzUxNGI3IHJlbGVhc2UyNi1tYWludAorNzU3OTUgMWQ2OGIxZGM0MTA5MzZmYjg3MjFlODhlODQ2NzEzNmQ3MjUzMzIwMCBsZWdhY3ktdHJ1bmsKKzc1Nzk2IDhkOWVmNWE3OWJjN2E1OTMxOGQ1MmFmYTQ0YjU3YTllNTM4ZDZkOTUgcmVsZWFzZTI2LW1haW50Cis3NTc5NyAzMDM1OWMzM2I2ZjY3N2YwYzRjNTQ4NjU3MzI3Mzk4Nzc0MzQzYzVlIHB5M2sKKzc1Nzk4IDk3ZDdjZDM2NWRkNTM0NGY1MWE1OTBkOWYyNTIyOWZiMWQ2OTJhNWQgcmVsZWFzZTI2LW1haW50Cis3NTc5OSA1OThiOWJlZTc0ZWM4ODJjMmZiMjEwMjVkZWI3MjNjZTAxOGViNzAxIHJlbGVhc2UyNi1tYWludAorNzU4MDAgNzI4NDUwN2JhZGIyYTA5NzVmMThkNzhhMWY4NGY4ZDgyY2VkYzUzOSByZWxlYXNlMjYtbWFpbnQKKzc1ODAxIDgxYjYzYWI2ZDQ1ZmI0YjNmMDdkNjMwNThkNjZiMDZkM2MwN2ZiYzggcmVsZWFzZTI2LW1haW50Cis3NTgwMiA1YjI5NTMzMDgzMGEwOTY4NjRmOTdkYWNmMWQ1M2RiNDg0ODQ1MjNkIHJlbGVhc2UyNi1tYWludAorNzU4MDMgZTk0MDhjYjNlMjc0ZTE1MDI1MzBlYzM1Yjc3MDQ1NmMxYWY1ZmFhZCByZWxlYXNlMjYtbWFpbnQKKzc1ODA0IGJkNzc2ZTAxOTkzYWNiOTFhMDA4OWRmYTg0ZGQwNzAxYWE2Y2Q5NDQgcmVsZWFzZTI2LW1haW50Cis3NTgwNSA5ZWQ4OTkxYTkxNDFjNjQwOTBkYzI1Yzk2MTliNzgwNTAzMzliNzYyIHJlbGVhc2UyNi1tYWludAorNzU4MDYgNjcwY2FhOTc3NWY2MGFiM2RlNTY2MjJmZmZjZTkwOWY1ZDIyOTlkMiByZWxlYXNlMjYtbWFpbnQKKzc1ODA3IDc2NGFlMmVjNGE3MDYzMWIyMzQwNjBhZWI1NDNjMGNjMWU1Yjg2ZTkgcmVsZWFzZTMxLW1haW50Cis3NTgwOCBhMDVlMWE1NzM2M2Q3NWExMTdlMmUwNjU4YzUwYjdiYTVhMDcxNjZmIHJlbGVhc2UzMS1tYWludAorNzU4MDkgYmU1MzQ4YjA1NGI0ZjVjMGExZDgyNmMwN2VlYzU5N2U3NTg2ZDNhOCByZWxlYXNlMjYtbWFpbnQKKzc1ODEwIDAwZTQ1ZDIxZjI1YmY4NWE0N2JiYzRiMjIxMGZjZDdkYjYxY2M2NzkgcmVsZWFzZTI2LW1haW50Cis3NTgxMSAxYzMyYjk1ZmU1NzhlNzBiZjU0NTJiMDcxZGNiOWJhYTZhMjRlMjdjIHJlbGVhc2UyNi1tYWludAorNzU4MTIgYjk3ZThjZWJlOGVkYTVkMWJjMjRjMjhlZGFjMWVjNGIyNDAxZTQxNSByZWxlYXNlMzEtbWFpbnQKKzc1ODEzIGU1MGJhMmE4MTk3MzY3MjkxMjdmZjk3YzYzODM2ZTZhNDUwZDEwZjggcmVsZWFzZTI2LW1haW50Cis3NTgxNCBlNGJjZmUyZTZkNTc2YzBlN2IyMTBlZjZkM2U5M2U5MzJiMjJjZjM2IHJlbGVhc2UzMS1tYWludAorNzU4MTUgMDk3YzM2MGI0YmE1OWExYzljMTQwODdhMWI2OGViYzhlYThlNjE5NiByZWxlYXNlMjYtbWFpbnQKKzc1ODE2IDYwNGRiOWE4M2QxODc3ZTNjNmFhYTAxOTY0ZmE1YmE5OTJjNzUzMzggcmVsZWFzZTMxLW1haW50Cis3NTgxNyBlZjA4MjUzZjI5MGJhYmYxMWIxNGM4MGE4MTgzZWIxYTk4ZDMzN2I1IHJlbGVhc2UzMS1tYWludAorNzU4MTggM2E5OTIyOTJjY2Q4NWYxNmY0YzY3OTA2Nzk3OGE2ZmRjNmU0NzMwOSBsZWdhY3ktdHJ1bmsKKzc1ODE5IDI1YmMzZDY5ZThhZmUzMDE1NmRjNWRkYTM0NjkzYmJlM2NiZjdhZjEgcmVsZWFzZTI2LW1haW50Cis3NTgyMCAxOWY3NmZhYmE5NjU0ZGRmZGQzYzU2Mjg1YTliN2U3YWMyMGNlMzVjIHB5M2sKKzc1ODIxIDg2NTMxZGU3NTg5NGYxZmEyMjRlNzM0YmEwZTk1NGRlNmUyOWM3NDEgcmVsZWFzZTMxLW1haW50Cis3NTgyMiA1OTUwNWU3ZTcwNzMyYTFlYjI5Y2QxNzliYmI3MmIzNTIwMjU1Yjg0IHJlbGVhc2UyNi1tYWludAorNzU4MjMgZTQ3MzFmZDI3ZDkxNjgwNTE0ODIzMmNlNTY4OWNkOTFkNGI5NjJlOSByZWxlYXNlMjYtbWFpbnQKKzc1ODI0IGU5OWFkZmM5MmRjMmVmNTczMTE1MjNlNDRjODdiNmIxMjUxOWJjZDkgbGVnYWN5LXRydW5rCis3NTgyNSAzNTk2MmI1NDE1OTU3ZWRkMzA2Zjg2ZmM5MDlmYzhkNzVjNjQyYTM1IHJlbGVhc2UzMS1tYWludAorNzU4MjYgNDJmZDc4NTUzNDdlODU5MWE0MWRhM2Y0OTFlMGIwMGEwMzRkZTM4NiBsZWdhY3ktdHJ1bmsKKzc1ODI3IDYzMmRkYjI3NTMyMWRlMjVhZjdiZmFjMGI3MzhhOWRlMDk5ZDljYjIgcmVsZWFzZTMxLW1haW50Cis3NTgyOCBmOGZhMzY4MGM1ZDM1NTgyMjUyZGVjMTkyNjk2OGM4OGJmMGY2YjBiIHJlbGVhc2UyNi1tYWludAorNzU4MjkgNjI5ZDQ1YmE0NmQ3OWNmMzBmNDA1NjFiNDhmY2E0YTQ3YmM1NTMwMSByZWxlYXNlMjYtbWFpbnQKKzc1ODMwIGUxYmJjNjIzMmYyOWQwYTM4OTEyMzk1MTU1MzE2MWQzZmU3ODVmZWQgcmVsZWFzZTMxLW1haW50Cis3NTgzMSBmOGVkODQ0MGNkYjQ1ZmExYjNmNGQzZmJlNmI1MDY5NzAzYWI2YTMyIHJlbGVhc2UzMS1tYWludAorNzU4MzIgMTA3NTE3OTQ1MWI1NjNiNzU5MTExZmQ4ZDI0MzM2Y2I1YzM3YWU1ZSByZWxlYXNlMjYtbWFpbnQKKzc1ODMzIGFlOTRmNjg1NTMxMDBjMDg2Yzc3MmI0NGIwMzJhNGFmMDg0Nzc3OWQgcmVsZWFzZTMxLW1haW50Cis3NTgzNCBiNDBmYTgyNmUxY2YwZDhjM2E3ZTdlN2JiYzVmMzQ3MGJkMWRlODU4IHB5M2sKKzc1ODM1IDU4MGFjMTUxMTY1MjNjMWRkYWIxMjVkOTJlOWI3ZmY0MGQ3MDM0MTMgcmVsZWFzZTMxLW1haW50Cis3NTgzNiA4YTc3NGFmZTk5MDA5MGI5OWE5MTUxNDViYjNmNDc5Y2Y4NjQwNjQ0IHB5M2sKKzc1ODM3IGM3ZmYyZmNkMmI2YmYwZTdlOTZmNjViNzc0NjEyMDUxMGVmY2U4OTMgcmVsZWFzZTI2LW1haW50Cis3NTgzOCAyNjlmMWQ5Yzg2Y2QyMjZhMjg4ZmQyNzkxYTRiZTY1MWEwZThiZWI2IGxlZ2FjeS10cnVuaworNzU4MzkgOGZiOGZkM2I2N2NmNjQzODg3MTZkNzZkM2YyYjhhNzBlMzYxYmQ0MyBweTNrCis3NTg0MCA5MzZhYWExMjQ5MmM3MDZiMzFmMGNhMTE0NzAzZDVjNmRjYjk1ZmM5IHJlbGVhc2UyNi1tYWludAorNzU4NDIgYjMxZmNiYWIwNTIwYzQ4M2M1MGE1NmQxNWU1NWViNjM5ZjVjYjcyYiBsZWdhY3ktdHJ1bmsKKzc1ODQzIDk1NWQ4ZmExMmFkNTRiNWFjYjg2MDBhZjMwMjIzOGE0ODllNzhhOWUgcHkzaworNzU4NDQgNWM1NDE0YThjN2MyNDcxNjliYmU1Njc0YzAyNWI2NzY4YjZkOWUyMiBsZWdhY3ktdHJ1bmsKKzc1ODQ1IGUxZDQxMjQ4OTEwN2I1MzBhNjc1N2E2NGI1NzJiNTU4YjAzOTE2YzkgcHkzaworNzU4NDYgMTQwZDg4ZDFiMTc5OGZiMmY3Yzg1YzI0ZmEzODA4NjhjYTMxNjYxYiBsZWdhY3ktdHJ1bmsKKzc1ODQ3IGUyNTliMzRhMGI4ODE0NDI3OTM3Nzc0MDYwMWU2YWVjOTg3YzQ0MTMgcHkzaworNzU4NDggMTFmYzE2MGQ1M2M0ZGNhNTFmNWI3YTU1MmNjOTFlZGYxZTkyNTg2NSByZWxlYXNlMjYtbWFpbnQKKzc1ODQ5IDQzYmZmNjkwM2FhNWEzNTRiYzA3ODViODJjNzUyZTY1MTI3NWNjNmEgbGVnYWN5LXRydW5rCis3NTg1MCBkN2NjMGViM2YyMzRmODQwYzZmMDlmOTA0Y2E4MDlkZGU0ODI2NGY2IHB5M2sKKzc1ODUxIDVmNjFiZDNhYTQyN2IyMmRjODkwNzM2ZTUzNzAyOTIyNjAwOWFlNGYgbGVnYWN5LXRydW5rCis3NTg1MiBlNGJmYmU5Yjc0Yzg5MjkyZTQ4OWVkMzQyZWUwNTIxZWUyYzUxMjU3IHB5M2sKKzc1ODUzIGQ5ZDY5MDYwZjVlNGJkYzNjMTFkZWZjMGE2NmRkZTZjYTBkZDgzZWQgcmVsZWFzZTMxLW1haW50Cis3NTg1NCAxYmRhNDYwMmY5MzlhMmYzZDEyMTdjOTY3Yzc5ZDZiMTA0NDZlMmU3IHJlbGVhc2UyNi1tYWludAorNzU4NTUgNWM4ODc3OTQ3M2I5Mjk2Mzg0ZDQ5ZDFlYzMyMDljYWZkMGVhMzUxOCBsZWdhY3ktdHJ1bmsKKzc1ODU2IGFmNzhmZGE1N2FmODY0ZjllOGU1ZDE2ZDAyNTk4OTMwMzc5ZjM3MmUgcHkzaworNzU4NTcgMDIxZDNhMzhiZDM2YTRhMDc4NDJhN2FhODA0YmQwN2MyODc3MmIxNiByZWxlYXNlMzEtbWFpbnQKKzc1ODU4IDAyOWQ2OTY1OWI1Zjk5NTQ4ZmY0ZThjNzJlMDliYTI1OGJjOWI3N2EgcmVsZWFzZTMxLW1haW50Cis3NTg1OSBjZWY1Y2IyNzBmZGY3Yzk2NmM2MmE1MTI4NTJmNzM0ZjA3OTc2YTRkIHJlbGVhc2UzMS1tYWludAorNzU4NjAgMGRmNDdiMWIzMGI4YTA3OTgxOTk1Y2JiM2Q2Y2I0ZDdjN2VjYjZmYyBsZWdhY3ktdHJ1bmsKKzc1ODYxIDgxNDFlYzgxYWQyZDM4ODhmMjM5OWJiYzZlOGMwN2JjY2M4YjVhNzAgcHkzaworNzU4NjIgNzBlYjZhMTNhYmNkNjg1NjYwNWNmYmNiMjY0YTZmYWNiMzQwNWU2YyByZWxlYXNlMzEtbWFpbnQKKzc1ODYzIGIwODVmZDA2MTFkZTBlODFmMWU3ZGUxMWNjNzQ0ZjUzNGI0ZGVhYmEgcmVsZWFzZTMxLW1haW50Cis3NTg2NCAyZjFjNTJkOWZlZWNhZGEyNGI3MjVmMzJhYjQzZjE4NGI1ODM2YjM3IHJlbGVhc2UzMS1tYWludAorNzU4NjYgOTg5OWVjYTljODU3ZDkxZDUyZWI3MDNkNDdkMmI1YzQ4ODZlNWIyZCBsZWdhY3ktdHJ1bmsKKzc1ODY3IDE4NTIwNGQ1NDFmZTU2ZTMxNjhlNTFjMTJhYWMwODZhYTA2OTU5ODMgbGVnYWN5LXRydW5rCis3NTg2OCA0MTFiNmFjYmNmMTJlNzYyNzI4OTUzYTA0ZDVhYTM1MTc5MDFjYWM2IGxlZ2FjeS10cnVuaworNzU4NjkgYjRiYWVjMWU2YTBjMzM4YWZlMWRhNGM5MDMzNGZjMjM4NzQ2NjcwZSBweTNrCis3NTg3MCBmNWM3MmFjYTZiNjBhM2IwNTZkMjExYTIwY2UxODY5ZjI5YjhjNTlmIHB5M2sKKzc1ODcxIDNhZTRkMzY2NzkyMGZjMzRhYWYzOTU2YTExMmVkZTM5NjllNjc5NGUgbGVnYWN5LXRydW5rCis3NTg3MiBmYjFiZmE5Y2FiZjMzYmM2ZTQ4NGNkNjUzYzFhMDdlZGY0MzkxYTgwIHJlbGVhc2UyNi1tYWludAorNzU4NzMgNDVhMjdmOTYxYWExZGY0ZTk3ZTc2YzNiYzYwMDQxZjQwZDI0Nzg5NSBweTNrCis3NTg3NCAyMDRmMzNkNDI3NjJiMjQxMzU4YjIxNmU2OWYzZGE1NGRmZGJhODMzIGxlZ2FjeS10cnVuaworNzU4NzUgMzk1OWZhMTA5NzE4ZWMzN2YwZjEwMzQzZTNhODFmNzNmZDhmMzFlNCByZWxlYXNlMzEtbWFpbnQKKzc1ODc2IGM5MjY4ZmVhODEwNDkxMjdlYzUzNjE0M2Q5ZjE2NzYwYWY2YjNiMzggcHkzaworNzU4NzcgYmVjMjY2ZjZkNTA4MWUyNTk1Y2NhZWY5YTBhNWNlYWI5YjYzNmJiNSBweTNrCis3NTg3OCBiNmNjMDEzNGFmMzE0MGUxMTZkYjE1MDQzNmMzYjNjMjMwM2Y1MzU3IHJlbGVhc2UzMS1tYWludAorNzU4NzkgMjFhM2Y4M2Q5OWFiZjdkN2E5ZWE2MWUxMjdlMGJkZGNlZGQwMmE1YSBsZWdhY3ktdHJ1bmsKKzc1ODgwIDEyOGRhZjY2OTljY2EyOGQzMzM3ZWZiNGQ4NWM1NmUzNjQ5NjQ4NWUgcmVsZWFzZTI2LW1haW50Cis3NTg4MSAzOTI3ZTBlMTM4MjQxMjZlNzMxMjQzZWRmNzdkY2MzZWMzYWZmN2JhIHB5M2sKKzc1ODgyIDE1OGIyMTFlNmZhOGMxYzg4YjZmMTI2NDI2NDgxYzgyZjFmZTk0MDcgcmVsZWFzZTMxLW1haW50Cis3NTg4MyBmMTAxMDQwNTEzMzliOGFiNjc3MTVjNGY1MWJmZjg2NDEwM2ZhOWE4IGxlZ2FjeS10cnVuaworNzU4ODQgNDRmNjQ0NzJlOTIyMWI3ZWMzOTZhMzk5YmU2ZjUxNThjZTBhMTIwNCByZWxlYXNlMjYtbWFpbnQKKzc1ODg1IDEyNDM4OWY0ZWJhZGMzOWM1OGM0MDFlMjhlNTYxOGM0YzBlMjY4NGQgcHkzaworNzU4ODYgNjkwYzU2NWMxNWE5ZTFmZjIyY2YxZjg3MmEyNzllZDlhMmU2N2U0MCByZWxlYXNlMzEtbWFpbnQKKzc1ODg3IDY5NDljZTc4YzA2NTU4MWU4M2NjMGE3MjU2OWE5ZDYyZWE3ZTVkNGIgbGVnYWN5LXRydW5rCis3NTg4OCA3ZTY2ZmZkYmNiZWZmYmY2YTQyZmU4OTlhNWRkZmJmNjk1ODlhNmIwIHJlbGVhc2UyNi1tYWludAorNzU4ODkgZDBkN2UxNWI0OTUzNWEwMDkwY2RmZGU2NjZhMzA2MGFlZWZkMmM2ZCBweTNrCis3NTg5MCA1ZTRkMWI0ZjYyZmExZDA4Nzg1ZmJiOGQxYjU4MDg0ZGU3OWZmOTc5IHB5M2sKKzc1ODkxIGFkNjExMjljNDQyMjI1NjkyZGMyNTBiNGRiYTY2ZDlkZjYzMDNhZDEgcmVsZWFzZTMxLW1haW50Cis3NTg5MiBlMWRjYTk3MmZhMzVkMzFhNTQ2Y2I3MDhmNjY3YThkYWY3YTZjMjNjIHJlbGVhc2UzMS1tYWludAorNzU4OTMgZmM1YTc3MTg0MzNhODU0NGYxZWU1MzMwNjkzNTA4NDVhZDc5YzUyZCBsZWdhY3ktdHJ1bmsKKzc1ODk0IDY0YWQzNjUwNzk0NDY2ZTg0Y2NjNTIyYjNkYzkwMTY4MmJkZTNlZWMgcmVsZWFzZTI2LW1haW50Cis3NTg5NSAxNzc3OWE5NGU4MjUwODZiNjYzMWNmZWI3ZjMwM2RmYTk3Y2ZmNmEzIHB5M2sKKzc1ODk2IDBmMjlhYTJkNDg0NGY3MTc0NzlmYjk4MmIwNDFlOWI1YjUyYzIzNDYgcmVsZWFzZTMxLW1haW50Cis3NTg5NyA3MTU3NGZlNDk1NzY3YjExODc0MTdmNzA2YzY2YzdmMjcxMTQ5ZDIyIHJlbGVhc2UyNi1tYWludAorNzU4OTggMDNkNzZiZGY5MzYyYWE1NDJmMzlkMDA1ODZiZGExM2Q3MDc3ODE2MyByZWxlYXNlMjYtbWFpbnQKKzc1ODk5IDllMjRmZDZhNTVmMDhlYTU3MjcxYjNhMDViNjQ2ZWI1YjgzNDQ0Y2UgcmVsZWFzZTI2LW1haW50Cis3NTkwMCAwNDRhNjhiYzBkMmVmYjk2MjNlMjZiMzYwYjdjZmVkYzEyZTllMThjIHJlbGVhc2UyNi1tYWludAorNzU5MDEgYzE4MjI0OTg4YmIxYzg2Zjg0NDVmN2MwN2IyODZjMmZkZGYxNTZmNSBsZWdhY3ktdHJ1bmsKKzc1OTAyIGNkOWY3MmZiYTUzYjAzMTUwMzU3NDI3OTA2ODFmYWJmYTYzMmZlOGQgcmVsZWFzZTI2LW1haW50Cis3NTkwMyBlZjZhYjVkMGEwMDZhOWJjMWRjZDAzMjRmYTc5OWU3MzhjOGEwZGZiIHB5M2sKKzc1OTA0IDUyYjI3YzA4MTY4NjhhODA1NWY2MjUyZGYzNWQxNjM1NjVkNzU5ZDMgcmVsZWFzZTMxLW1haW50Cis3NTkwNSBhYWZhNjZjNTc0NDRlM2IyNWNhZmVkMDFiYjBmN2FhOWM5YjgzYjdlIGxlZ2FjeS10cnVuaworNzU5MDYgMWU5ZWVjNzM0NDdmMjhhMGQwZWI2ZTFhMzE0MDY0M2ZlNGIxMmE4YSByZWxlYXNlMjYtbWFpbnQKKzc1OTA3IDkwYzcxNDZkZGY0MjE5Zjk0MzM0M2QxMTIwMTIwYzgxZjFhZTIwZTcgcHkzaworNzU5MDggNzZkMDQyMTQzOGFjMzZmNGE1YzM5YWZkMmU2OGQzY2E5MjE1YWY3ZCByZWxlYXNlMzEtbWFpbnQKKzc1OTA5IGU3Y2UyNTFiM2JmYjZkNGQxNjViMjYwZWExNmRjMGZlMzIwMWE0ZDUgbGVnYWN5LXRydW5rCis3NTkxMCBlNzUwYjkwYmQ5ODJiMzM1MmFjODg3Yzc0ODcyMGQ5NmFjNzMxYWJkIHJlbGVhc2UyNi1tYWludAorNzU5MTEgNDRkZTNhNDAyNDAxNDU5OGU0ZjRhMGJkNWJiOTI2NGExNzJkYTQyMyBweTNrCis3NTkxMiBhMWRlYzU3YmVhNWRjMjYwNTE3ZjYzYjdlOWI1ZDc3ZjJjNjBhN2I5IHJlbGVhc2UzMS1tYWludAorNzU5MTMgMmE5NjFkN2YyMDI4YmIzNTE4M2ZkNjZiNDUyNGEyZDQ0NWI1YjdkMSBsZWdhY3ktdHJ1bmsKKzc1OTE0IDg0YjhhMmI4ZTlhZTUxZTAwOTYyZWNmY2QzMjk1YzM1YTAwNTA1YWIgcHkzaworNzU5MTUgYjZiZTMwMDJkM2NhMmVjN2Q0ZjIxNjQ3NmZiN2Y3NTJkZjVhMTJhYyByZWxlYXNlMjYtbWFpbnQKKzc1OTIwIDIxNDdjMmViY2VkODU5M2Q2NmJlOGRkY2Q1N2NiY2RjOWRhOTk2YmUgbGVnYWN5LXRydW5rCis3NTkyMSAyMGUyMWMxNTVjMDU2MmY2NGZhNzNhZDMyMzczNzBiOTdmMGMwZDIxIHJlbGVhc2UyNi1tYWludAorNzU5MjIgMDY2Njg1ZjY5ODNhZDQwZWRiMmFhYTUxZTMzNmQzNDE2NGRiYjk3MCBweTNrCis3NTkyMyBhNzk1NTI5YjA5Yzk2NmEyN2VmYTQxZjI3NjE4MmE0OWQzNDFlMzNmIHJlbGVhc2UzMS1tYWludAorNzU5MjcgOWU4MmYxN2IyYzhkYTIzMDNmOWRjYzE0ZDM1ZGYzYjZjNWU3YWRiZSByZWxlYXNlMzEtbWFpbnQKKzc1OTI4IGRiNGRmZGM3NDAyOWFkOTg0NjUyYzEzNTIwNjFmMWQwMjBlN2RlZDYgcHkzaworNzU5MjkgODQwMmU0NzdlYjQ4N2RkNGQwMjkxMzljOTkyMmM2ZjFlMGUyMWI0MCBsZWdhY3ktdHJ1bmsKKzc1OTI5IGUzNThhZjI1NjliOThjMTNhNDc4ODY2MGRjYmU3YWY1N2IyYTUxODYgcmVsZWFzZTI2LW1haW50Cis3NTkyOSA0NDg5MDlhOTQwYzA0ZGEwM2IzOWY1OGQzZWFmNzQ5MjMzNmZjYjgzIHB5M2sKKzc1OTMwIGYzMmRjODRhODc2Y2M1OTkxYjY3ZjliOGU3OGRmNmNhOTQwMTkxMWYgcmVsZWFzZTMxLW1haW50Cis3NTkzMSA4NDQxODBiN2U2ZmYwZTBmYTg3MjUyYjQzZjI0MzM3Zjg5NDBmZGMyIGxlZ2FjeS10cnVuaworNzU5MzIgYzcxNWY4MjU1NWE0YzkzNDk2ZWE4MmI5NGMxYjdmYzgxZGIxN2U4OCBweTNrCis3NTkzMyBlODA5OTgyNjI5YzRkODNkZjcyMDdiNjZjYTY2OTkwYzc4YzI3NWM1IHJlbGVhc2UyNi1tYWludAorNzU5MzQgMDMyZDk3NDkwNDdkN2UxM2RlNjM1MmFjNjA5NDRlNmNiNWRlZWM4OSByZWxlYXNlMjYtbWFpbnQKKzc1OTM1IGI1NzFjNjY4NTIyOWYzYzA4MTgzNDlhZWZiNjQ4Y2EwODA2NDJkZWQgbGVnYWN5LXRydW5rCis3NTkzNiAzY2ZlY2JjN2FlOTVhN2Y2Mjk4MDkyY2QyODcwZDI3ZmYyNDk5MWNjIHJlbGVhc2UyNi1tYWludAorNzU5MzcgOGNmZjk0OTMyM2M5ZTY2YmMxOGRjZTkyNGU0OWM0YmRhNzcxZjk5MyBweTNrCis3NTkzOCBiMDA5YTM4NzY5OWIzMmQxYzQ0YWNhMmNiOTJkZWZhYTFkZTRjODRkIHJlbGVhc2UzMS1tYWludAorNzU5MzkgNTVlNTA4ZTI1MzVjOWEzMzQ4MjhmMjA0NTQ2YWZlOTNmMTc1MzBiMiBsZWdhY3ktdHJ1bmsKKzc1OTQwIGZmYzdkOWVhMjRkOTAyMmZmNmU3NmRiYWNjNzBjMjI2MzdkNzJlZTQgcmVsZWFzZTI2LW1haW50Cis3NTk0MSBhYWEyYjA3YzJjNDI1OGI0MTQ3MGQ1M2ZjODY4NTM0NGVjYjk2ZDFlIHB5M2sKKzc1OTQyIDA1ZmQ0OGRjMmFkYTliZjBiZjE5NTE2MzkzZTEyNDFmOTYwYWIwMDIgcmVsZWFzZTMxLW1haW50Cis3NTk0MyAxNWYxODcyNDA3YmUyNjQ2YTEwMWZkYjRkNGMxNGI5NzQ2ZjYyYzQyIGxlZ2FjeS10cnVuaworNzU5NDQgNjNlYjI4ODM5MjZiMmQ1YjgwMjRiNTIwNDYxMmRhM2YwZGZjNTZlYSBsZWdhY3ktdHJ1bmsKKzc1OTQ1IGQ1YTM0ZWYyZmNhN2MzMjExNzRjYzBhMzRiOTRkNjkyOGM2MDFiMmYgbGVnYWN5LXRydW5rCis3NTk0NiA1M2UzODAwNWQ1MDdjNGJhN2ViNmNjZmYzOWZiZGZkMTE0OGJhMmUzIHJlbGVhc2UyNi1tYWludAorNzU5NDcgZWJkZGNlZDJjOWM0ZDQ4NDVkMDkwMDYxNjVlYmRlYjg1OTZkNjY5MyBweTNrCis3NTk0OCAwZWQ0YmY0MzBkNGU1ZWUwYTdiOGFiYjFiYzUxOGVmZjgxYjBiOWQ3IHJlbGVhc2UzMS1tYWludAorNzU5NTIgYzZkNjIzNDBhZWJmMGMzMTkwZjU5NjMyM2Q0ZDAyMzNlMmRlZmJiNSBsZWdhY3ktdHJ1bmsKKzc1OTUzIGU2NjVkMjE3MGU4NTJiMTlkNjA5YjIyZmVhOTQzMDJlNjNmZGE2MmEgbGVnYWN5LXRydW5rCis3NTk1NCA1ZjVlM2M3ZGE4Y2I0NWZlNzRhMWNjMTM3ZDRkMTc5ZjQ3NmI0MzdmIGxlZ2FjeS10cnVuaworNzU5NTUgN2UwMjM3MWFhNTA2MDJmMDk4MTU0Y2E1OTgzNWMwNjc5Yjk4NjU5NSBsZWdhY3ktdHJ1bmsKKzc1OTU2IDQxMWYyNTJhMjk0YTRmZTIxODY2MTZjN2IyNDdmN2MzM2M4MDAzYjQgbGVnYWN5LXRydW5rCis3NTk1NyA5ZGRiZDY5ODE1Y2E3YTA5NmM3NDFmODY1ZGM3NDQ0OWZkNzFjMjgxIGxlZ2FjeS10cnVuaworNzU5NTggMjlmZTVlN2JkNmVlMTkwMGE4NTMxMDFiZmMyYTJlMTBlNTFmMjMzZCBsZWdhY3ktdHJ1bmsKKzc1OTU5IDZjZjg0ZTVhNmRkN2U1NTU4OGY1M2Q3YzY3MjhhNGM1MTZlMzI0M2QgcHkzaworNzU5NjAgZTExZDI0NjdkMTI2Nzk3YjlmM2RlYTc4ZTI0MTgwZmI5MjAxMGE1NCBsZWdhY3ktdHJ1bmsKKzc1OTYxIDcxM2UyMWE1NDcxZWQ3NjM2NDJjODU2MGZiZGEzOThkNTBjYzQwZDYgcHkzaworNzU5NjIgYWNhZmE1MTQyYmY5MThmNDYwZjcxYTc3Yjg2OWFkMDJkZWExYmVjMCBsZWdhY3ktdHJ1bmsKKzc1OTYzIGMxNDY5MjUyMzRmMDNhYzA5YzRmMGViNTEzMzViZjZhMDdiNDAxNDggbGVnYWN5LXRydW5rCis3NTk2NCBhMTgzYzgyYjYyODk0N2NmZTM5ODdmZGM1OTQ1OWU2YzAzMDA0NjhlIHB5M2sKKzc1OTY1IGU4N2E2Njk4YTMwNWE2NDUwMTI3NjcwOWE2Y2Y5ZTQyNGQyYThhMDYgcHkzaworNzU5NjYgZmQyMThhYjBlMjJlZmU1M2I4MzE0ZGNiYTlhOGMzYTJiZjlkZDdjNyBweTNrCis3NTk2NyAzMzg2MWNhMWZiMmIxMTgxNjAyM2NkM2Q3M2E5OWEzZTUzN2Y1YTQzIGxlZ2FjeS10cnVuaworNzU5NjggMDU2NDcwNDY4ZmUyOWUxOGVmMWUyYTQ3M2Y0YTIyNDllMGJlOTVmMyBweTNrCis3NTk2OSBkNTZiMTAzNDkwYTU1YjAwM2JjYWQ2NjJmNDg3ZDc5NDAxNzhiZDk5IGxlZ2FjeS10cnVuaworNzU5NzAgYmY5M2U0ZGY3YmZiMWU2MzI0OTI1ODM2NGZhMjgwYWU3MWFiZWVkZSBweTNrCis3NTk3MSA4ZDM2ZGViMzU2ZjE5ZjRiOGM4MDNlZjkwM2E5ZTk3MWU5ZTQyZDFkIGxlZ2FjeS10cnVuaworNzU5NzQgN2M4Njk5M2IxM2M5ZmQ3NGQ0MjFhNzRjYjgzMzQ4M2ZmMjU2MTg4ZCBsZWdhY3ktdHJ1bmsKKzc1OTc1IGI0ZTkzMzliNDk5ZDU1MjVhYzVlZDU0MDk5ZmZmOWUyNDA3YWRkODcgcmVsZWFzZTI2LW1haW50Cis3NTk3NiBmY2Y4YTQ4Njc5MjA2M2RlNjViMDJhMTQ3YzM5YzUwNjVkZGViM2YzIHB5M2sKKzc1OTc3IDZjYjUzMjQ4ZTViZTRiMDZiMzViZmQxZDMzZGVhOWY1NDI5MjRkYWIgcHkzaworNzU5NzggNmE2ZjMyYjBmYWJkMGQ4ZWQzM2ZjYzE1MzdmNjVmNGEwYzQ2YzI1YyByZWxlYXNlMzEtbWFpbnQKKzc1OTc5IGJhYjNlM2NkNzZmMWQ1MjQ1MTE2ZTI3Y2MwNzkxZTc1ZjJkYzkyMWQgbGVnYWN5LXRydW5rCis3NTk4MCAxN2RjMGI1M2I0OGVkYjFhZTFjMDg5OGU1MWRkYjQxYmFhMWFhYTZkIHJlbGVhc2UyNi1tYWludAorNzU5ODEgMTgyZmUwYWY2MDRlMzVhZjZiMWI2MjMzZDc3NjNiZmFkNjBhZjEzZiBweTNrCis3NTk4MiBmNTk0MzEzYjkzNjQ1YWIyNGY4MTJmMDc3OTdlOTRkYTNiOWVhOTMzIGxlZ2FjeS10cnVuaworNzU5ODMgZmI0OThhMGRlMGI5NWFiNjFhZjNkYzEyMTkwYzE0ZjdmOWM2MGEzNCByZWxlYXNlMjYtbWFpbnQKKzc1OTg0IDVhOTkwMDNjOWI4M2Q4NDJmMWI5OTU5ZjMzMjY4YmZjNmVhODBhNjggcHkzaworNzU5ODUgMjY0YTczNWE4YWY3NzY3OTdkY2JkMWIwN2ZhNzI0Y2ZkNTU5Yzk4YSByZWxlYXNlMzEtbWFpbnQKKzc1OTg2IGU5Yjg3NzU2YWQzYjNjMjllODliMmM5MjkzZDI5NmI0YzA2ZDRmMzAgbGVnYWN5LXRydW5rCis3NTk4NyA3ZWNkM2UzYzk1NjQyNzEwZDkwMWYyNTg2ZTcwOGQzMTFlYTU5MWFmIHJlbGVhc2UyNi1tYWludAorNzU5ODggOGQ2NzcyNWNiYjRlMzVkOGQ4NTBhMzRhNDU1OGI5NWM4NTk2NDVjMSBweTNrCis3NTk4OSA3MDQ5YjJjODZmMDYxMGQxMTQ5YWUzMzliMjE2NWM5YjdkNjVlZjk2IHJlbGVhc2UzMS1tYWludAorNzU5OTEgNGNiYzNmZTkzNjcxZDkxNWIwNjk5YzVkZTczMWI3NGY3MjEwOTE3OSBsZWdhY3ktdHJ1bmsKKzc1OTkyIDg5ZTlkMDU4NDg5MDNlNTZiM2MxNTM5MTk2MGM1ODkwMGVjMmVmMjUgcHkzaworNzU5OTMgYWIzODY5MGZlMDFjZjkzNWJhZmJkMjEzMThkNGI0ZjRhZjIyYmY4ZSByZWxlYXNlMjYtbWFpbnQKKzc1OTk1IDcxYjNhYThhNzMyMGZlNDBjYzIwZDhiNzQwNzBhM2VhY2VkMmJiODQgbGVnYWN5LXRydW5rCis3NTk5NiAzNzI0NmI0YzNjY2UzOWVlNTgyMWRhZjcwMWFlNGZmMmI2NWRjMDkwIHJlbGVhc2UyNi1tYWludAorNzU5OTcgMTgyY2QwNGUyOWRiMTE4N2Q5NjY3OTkyYTU4ZDc3ODEwNmM1M2VkYiBweTNrCis3NTk5OCA0NzE3ODA0YmI1N2RjNzUwYmQ1NzBjZTM2MWM1NWYyOWRkMDk3ZDhlIHJlbGVhc2UzMS1tYWludAorNzU5OTkgOWYzZjgzZGY2OTc1YmU2ZjBjY2IwOWE3NTRjYjkwODAyZGNhOWFjOCBsZWdhY3ktdHJ1bmsKKzc2MDAwIDg0NmYyNmFkNTgwMDAyM2I2ZGVhNzY2YmM3YmNhZWZjOGI2YmUzNGYgbGVnYWN5LXRydW5rCis3NjAwMSAyOTEzODY0ZGRiZTk1ODllYTI5NmNkM2EwZDlhMjQzZTMxODdlMTdhIGxlZ2FjeS10cnVuaworNzYwMDIgNDJiYjNlMzYxM2Y2YzkwYTFiNTc2NWNhZWViMGMxZDlmNjJiZWNiYiBweTNrCis3NjAwMyBmODNiNDg5NjI3Mzk5M2FiN2YxMTRhZjA4ZmNlN2VlZDUwOWNlMWRhIGxlZ2FjeS10cnVuaworNzYwMDQgMDJmNWM2MDA4MzI3YWZlNTU1NjU2ODMwMWE5YjU4ZTdmOWQ4NThiZCByZWxlYXNlMjYtbWFpbnQKKzc2MDA3IDIxMWU3YjViOTk5YzFhM2Q5MWQ2MzlhMDU3YjViYzM5ODc2N2ViNmUgbGVnYWN5LXRydW5rCis3NjAwOCA3MDAwMmYyN2QyODFlZjZiZWRlODFkNmIwNDVmNjdkZThmOGNlNDYyIHB5M2sKKzc2MDEwIDQwMjY5NmFjNGY5ODJjZmIyN2ViYjhmZmQ0NWY1MDI5M2FhNjdlNjAgcHkzaworNzYwMTEgYjBlNGVmYjgzZDYwYzc3ZjI5OTg0MDE4Yjg2M2E3ZmFlMjJjNzg5ZSByZWxlYXNlMzEtbWFpbnQKKzc2MDEyIGZmOGUzNTllMjgwODQzMjU4ZDNiMmVhY2FhZDI5NDZiZWQ0Yzc3ODMgbGVnYWN5LXRydW5rCis3NjAxMyA2YjRjNzMyMGJhM2ExN2YyNDIyYmRkYzQzNjYyNDA5ZWUzOTBmNjUwIHB5M2sKKzc2MDE0IGI2OTAxNzc2MjIwOGFhYTZmMmU4OTNjY2Q4OTUwMTgxNjVlOTUxMDkgcmVsZWFzZTI2LW1haW50Cis3NjAxNSA1OTI1OTAwZWRmMTZmMGM5NGI1YmMxODlhZDFhYWM4YzNlNzA4YzgxIHJlbGVhc2UyNi1tYWludAorNzYwMTYgNzU3Yjk3YzYxNjkxZTI5MjMwOTY1ZjU3YjljYTJjMzhhOWZmNDk5OSBsZWdhY3ktdHJ1bmsKKzc2MDE3IDViOTVlNGVhYzdhOGI5OGE5YTY4YjEzYWZlOTZlY2NlNjlkOThjNTAgcHkzaworNzYwMTggZWQxNjZmZjdkOTUyMzgxYzQ1ZGYyMWQwYzM1MTkxYzMzMGIzODVlYiByZWxlYXNlMjYtbWFpbnQKKzc2MDE5IDEwZmUyMGZkNmZiM2Q4YzhhZGE3ZmZmNjJmMjA2NjliODBkZjIzYzIgcmVsZWFzZTMxLW1haW50Cis3NjAyMCA0ZGI4NDA0NWE3ZjAwNzFhMGE4MmEwZjFmNDgwODM5NDczNGI1Y2RmIHB5M2sKKzc2MDIxIGRhNmFkOThkNWRhZWYzMDhhM2U0MGFlY2I1ZDk1NGFlMTllMTg3MjUgcmVsZWFzZTI2LW1haW50Cis3NjAyMiBjNzhhMDBhMWQ2ZGIxODMwYTE4NTc0Y2YxODdiMWY4YjgyOGI1MTVjIHJlbGVhc2UyNi1tYWludAorNzYwMjMgOTNjN2Y2NTA5MzdmN2U5NTc4YTYxNGM3YWFjZjdjYTU0YjU4YTVmZiByZWxlYXNlMjYtbWFpbnQKKzc2MDI0IDkwMTI1OWJjMGI2MmVhMDE5ZmZhNmE1MDkwYjY0NmQwN2JjZGIzM2UgcmVsZWFzZTMxLW1haW50Cis3NjAyNSBiN2U3NjI3N2Y1NDUyNjdhZjgwZGIwZDlmNTdkOWFiM2FlM2JhMjE3IGxlZ2FjeS10cnVuaworNzYwMjYgMWFhNmI2OGU4NTIzMDQxN2MzYTc5YzJmMDNhNDRjZGYxNTM5MDQ5ZCBweTNrCis3NjAyNyA2NThlYjU4ZDJlNjhiNzU0MDgzNTQzMmY2NjM0NjY4OWQ5MWU1MGFkIHJlbGVhc2UzMS1tYWludAorNzYwMjggYzc4NWFmYTZmOTVjNTY0OWQwZjY1M2E1ZDhlNDc4YmNkNTgyZDlmOSBsZWdhY3ktdHJ1bmsKKzc2MDI5IDMwMzlhNGFkN2UzOWExMWFjYjc2ZGY4Y2ExNWZmYTA4MzQ4OWZkNmQgbGVnYWN5LXRydW5rCis3NjAzMCBkZGMxNDFkOWVmMWIxYmYzMWI4NTIxZWJjYzJmZTQzZDkwZjA3YjczIHB5M2sKKzc2MDMxIDM4NzE5YjhlMGM5ZjcwZTJmMjkxMmVmZTRjZjc0MjJhODdlZjIwZDYgcHkzaworNzYwMzIgMzhlYjZhOGFkYzI0MmIwMjQ0YjBhMjFmZmJhOTRhNGZmMjg3NzM0NCBweTNrCis3NjAzMyA4Y2E0ZDc3NjgwYzZkMjQyMTQ2OTk1N2ZmYzIxOWQ0YzAxYjE1NjRjIGxlZ2FjeS10cnVuaworNzYwMzQgNTFiOTk3M2Y3NjFlYzQwMGM3NDZkZWEzM2Y2ZjViOTJlNTM3OGQzNyBsZWdhY3ktdHJ1bmsKKzc2MDM1IDU3NTQyYjUwMmQzMjIzYTZiNTFlMjgzOTMxYTM4OWNiZjczMWE2OWUgcmVsZWFzZTI2LW1haW50Cis3NjAzNiAzYmY3NjFkZjgwMmFhZGRhYjkwYjJlYjAxNzBjZDMwOGVlMjJiMWJmIHB5M2sKKzc2MDM3IGEwMWU2Y2VmMTI1NmM5MTM5Yzk2MzE3NmYwMTJhMDhlMjM4NzNlODMgbGVnYWN5LXRydW5rCis3NjAzOCAzNDRjNDdkZjM2M2Y4YjljMjhhMDYwMjkyNTU5NjMzMmEzNmJkNjRkIHJlbGVhc2UyNi1tYWludAorNzYwMzkgNDU4MGZlMDcxOWU3MDJkMjE2MTNlNDE2ZjRkNmE1YjUwNTE3YjRmMSByZWxlYXNlMzEtbWFpbnQKKzc2MDQwIGZkMDU0MjcxNmE4MDU1MWZhMmQ4OTA1ZjM0MjM5YjI5YmZjZjBlOTggcHkzaworNzYwNDEgYjU5MWZjODcyMWYyZmRjNTA1ODY2MWM5OWYzNjZlNTM5NDUzMjU5MyByZWxlYXNlMzEtbWFpbnQKKzc2MDQyIDZkYzRmYWE0NWNiZDA4OTAxMGRmNWE5Y2MzMGM5MTZiMDdmODNkNjUgbGVnYWN5LXRydW5rCis3NjA0MyAyOGZlZjcyNjQ0YjdjNjQ0NGNlNWIyOWRiOGEwYjM1YzBlZmNkYjY2IHB5M2sKKzc2MDQ0IDRhODQ1OWUzMjkxOTIzMmJlZWNmNTMwM2JmMmMzNjI1YWM3ZDcyNDAgcmVsZWFzZTI2LW1haW50Cis3NjA0NSA2ZTQ4OWQzZDczYjg4MDQ5MTUzN2FlYWY0YWVmYWVmYTYyZTgxNjAzIHJlbGVhc2UzMS1tYWludAorNzYwNDYgMWUxYmUxYTM5YTc5MmVmNzYwZDY5MjRiYzAxZTYzYzdjY2IwOWNmMSByZWxlYXNlMjYtbWFpbnQKKzc2MDQ3IGYwMTMwMmU2YWNkNTQ0NjEzNTU2OWI3NTM0Mjk1Y2QzNDg0MTdkOTggbGVnYWN5LXRydW5rCis3NjA0OCA1ZDZlZDA4ODNiZjU3OWMzZjg1M2YxMjRhNjQxNDhiZjMzZTYzODczIHB5M2sKKzc2MDQ5IGE1ZTQ3M2U5NWJjZWFkNWM1ZGIzZDc2ZmZkZTFjNTJhMjQ1NDRiYmEgcmVsZWFzZTI2LW1haW50Cis3NjA1MCA0NTNmNTQ3OGE2OTFkZDFkZjlkNWI0ZjBmMGVhZTE4OWRlNmUzMTEzIGxlZ2FjeS10cnVuaworNzYwNTEgYjkxOTM3MGYxODIwZmRiYTE1NThiOWE3MzllY2NjYjc2YzJlYjZlYSBsZWdhY3ktdHJ1bmsKKzc2MDUyIDY5OGRlNTAxNzk5ZDk5MzVhYzJkNjg2YjYzMDgwOTc3Yzg2ZDBjMGIgbGVnYWN5LXRydW5rCis3NjA1MyBkMmQ4Y2FiYjllM2E5MjNhYjEwMzdiMGRlOGNjZjZiOWVkNDdjNjMwIGxlZ2FjeS10cnVuaworNzYwNTQgOTZhODUzZmFlODNiMjM3NGM4MGI5ZTA0NDJhZTMxNTkyM2Y3MDlkZSBsZWdhY3ktdHJ1bmsKKzc2MDU1IDE0MDJjNzUyNzU2NTVmZGEzYTE4Zjk2MjY2MzRlNjQyZWRjNWViMGMgcHkzaworNzYwNTYgOGEwZDNjNjlhZTIxYWRiZGE0YzA4NmJjODU0NTY2MmI5NTRjNTU4OSByZWxlYXNlMzEtbWFpbnQKKzc2MDU3IDg4YTM2NDZlZjMyYzJhNzgyYmI0MTliYzFmYzQ2YThmODY4NDc4NWMgbGVnYWN5LXRydW5rCis3NjA1OCBlNjA4ZjU4ZDVkMThiNjFkNDJkNDA1NTQyNmI2ZTMxNjNiMjdiNjk1IGxlZ2FjeS10cnVuaworNzYwNjIgOTRlMWIxNGVjODA0YjhhYzkyOTBiMjA1Mjg2NTgzNzRkZmZjYzUzMCBsZWdhY3ktdHJ1bmsKKzc2MDYzIDk1OWM2OGQxZDI4YTBhMGM3MmVmYTBlZGJkNzc1YmJlYTAyZjc2ZTIgcHkzaworNzYwNjQgM2NmZDY5NTY0ZThmMDc2ZmQ2YmQ4NTk0YTdiMWVkMDgwMmIyYjk0NSBsZWdhY3ktdHJ1bmsKKzc2MDY2IGYyOTYwZjExNmU3N2EyZWJhZDUxMDM3ZTIyYTA5YjdhN2EzMGMyYTAgbGVnYWN5LXRydW5rCis3NjA2NyBiZWU4OTk0YjEzZGVkYjgxNzAzOTliY2IyNGEwNjg2MDA1NDliODY4IGxlZ2FjeS10cnVuaworNzYwNjggYTNmMjFjZWU2NGQxZjEyOGE2MzViZDFjMmM0ZDYyN2IzMGU1MDFlOCBweTNrCis3NjA2OSBhODA4NmIzMTRjZDA3ZTZjM2ViOTIwOWIyZDM1ZjFmM2M0ZTQ3ODNmIHJlbGVhc2UzMS1tYWludAorNzYwNzEgMjAxYTQxOWU5ZTA2NjBiZTQ0OGJmMTI2N2M5YmM4ZDFlMTdhNzUxMCBsZWdhY3ktdHJ1bmsKKzc2MDcyIDY1YjExMjFhMjQ3M2ZkMjFlNjJlOWI0YmM5YjEzYzE2MjY0Y2NhMGEgcHkzaworNzYwNzMgNmMxM2JmMzVkMTY2MTE3NGFiZWVlOGVmMGNhYjAxNWIxODY5MjBjOSByZWxlYXNlMjYtbWFpbnQKKzc2MDc0IDMyMDFmYWIzNTIyMGY3ODUyOTlkZDgyOGU1NjE0ODhiNDY3MjljYzcgcmVsZWFzZTI2LW1haW50Cis3NjA3NSBjOTAwOGEzZTdmN2ZkMjM0OGI5NWE0OGE0MmE2NWM5NWIwYmY3NTMxIGxlZ2FjeS10cnVuaworNzYwNzYgNjg1YTI0YTZmOTg2ODQ3ZjI0MjBjYTE1NjYyMjQwZjI3MjMzNGIzMSBweTNrCis3NjA3NyAzMmM3ZDk4MTAzYmFlYzFhMzcxY2ZjZTIxOTg2Zjc0N2I0MDNhYmQ4IHJlbGVhc2UyNi1tYWludAorNzYwNzggYjQxMWNlNTg0YjdmZjA0MWE5YTNkZmE2ZTM1OTE4MTUzMGUxNmZjMSByZWxlYXNlMzEtbWFpbnQKKzc2MDgwIDYyZGNkOWZkZDdiMzRlZTY3MmE3MjE4NjRiYzYwNmUyNDY5MzkwM2MgcmVsZWFzZTI2LW1haW50Cis3NjA4MSBiYjM3YzdjMjZmYTQ4NjUxNTI3MGZjMDRhZDVkYzA1Y2YzMzAzZTZhIHJlbGVhc2UyNi1tYWludAorNzYwODIgMTlhNTczYzQ0YWUxMWMyYmMyZGE1MTNiMzA0YzI3YjgxZDljM2NiNyBsZWdhY3ktdHJ1bmsKKzc2MDgzIDkyY2M3ZWQ4M2U5YzAxYTE4M2U4NGJmMzUzYWE2NWIyNzYwYjljNzIgcmVsZWFzZTI2LW1haW50Cis3NjA4NCA3ZmQ5MGU1YTBhZDVmOWIzMzIwNDVkMzBkYjUxYmZlY2E2ZWI0MWY5IHB5M2sKKzc2MDg1IGZlODA4ZDY2NDgzZDdiNWU5ZGRjYjA2NmU4YzFlYWQ4M2Y0OTA4NWUgcmVsZWFzZTMxLW1haW50Cis3NjA4NiA4YzgwN2IzYTkwNTIzMjI3MDU3MmM1YjFmOWJlMzM5ZWRmYTlkMTJkIGxlZ2FjeS10cnVuaworNzYwODcgNTllOWFkY2E3NzFiMzRhYWY0NDc5M2E0MDdiOWViY2NiY2VhMjExYyByZWxlYXNlMjYtbWFpbnQKKzc2MDg4IDFkZjkwZTIyYmI3MDYxZTRlNzcyNmFkZWY5YWU4YzEzYzY4ZTU1ZjAgcHkzaworNzYwODkgOWFmMmU5NDQzOWQxYjQ0NmYxMDY1NzhjN2E1ZmYzMjIxMjcxZjdkOCByZWxlYXNlMzEtbWFpbnQKKzc2MDkwIDFlOGEzM2Y2MThmYjA2M2Y3NGNhNmI2YzdhOTRjY2E3NjRiMTE3MmIgcHkzaworNzYwOTEgZmZhZjY2NWQyZDNlNWQ1NmFlZGUwYmM5OTMwN2UwZGZjMTc5MDYyNSByZWxlYXNlMzEtbWFpbnQKKzc2MDkzIDQyZmEzZTA5YjZlNzlkMzFmOGZlMWYzOTQ3ZTkyYjdkMTMzYjZkZjEgcmVsZWFzZTI2LW1haW50Cis3NjA5NCAzMzY0YWNiYWExNTNjZWNmZTNjYmIzMWY2MWNmZTRkNzE0OWFlNzA2IHB5M2sKKzc2MDk1IGVkYTk3OWM5OGE3ZmJlMDNkNjdkMGM2ZGRiNzJlMzAyNDM0MmZlYzQgbGVnYWN5LXRydW5rCis3NjA5NiBjOTRlM2JmODM5MmJhMDM1M2JhNTFlOTliZWZhZjYxOTYyNjA0NDQ4IHJlbGVhc2UyNi1tYWludAorNzYwOTcgMWYxNzU4ODQ4YzZjYjM4MGRjNDFjNDIwYTM3ZGYzMjYwODhmZWE0ZiBweTNrCis3NjEwMCBmOTViNWZhYTEzY2Y1ZjRmNmY5OTRmN2E3ZDRiNTU5OTU4ZThkOGM3IHJlbGVhc2UyNi1tYWludAorNzYxMDEgNTE4Njk4MTRiYTlhOGY5ZGRiNzQzZDcwZTY5MTQyZWIyZmIyNzBlNiBsZWdhY3ktdHJ1bmsKKzc2MTAyIGVhNzM4ZmYxODAxNjYzYmEzMmUzMzQ1MGI5MjQxMDIyYWFiNDFiN2QgcmVsZWFzZTI2LW1haW50Cis3NjEwMyA2MDVkMmY0Yzc1Mzk0OWQyYjlhMzhmZDU3NDBlNjlkMzNmOWEwODgyIHB5M2sKKzc2MTA0IGM4YmZjNGRhZmYzZDhmNDhmMzRjNjE0OGNhZTY5YWMwNTkzY2E5MjEgcmVsZWFzZTMxLW1haW50Cis3NjEwNSBmNWQ2ODYwNGM2Yjk1MmE4ZTE2YzBiOWFhMjI5ZGM5MGJkNzkyNTI3IGxlZ2FjeS10cnVuaworNzYxMDYgZDE2MTQ0MjY5ZDU1OGQ2NzFmMjVhY2U3MTRiOTA0OGZlOTQ0YTIyYyB0YXJla19zeXNjb25maWcKKzc2MTA3IDI5OGY2YjM0MTI1ZDM1OGUzZDg1NmUyYTE1N2ZiY2NkY2IwOTY1NjEgdGFyZWtfc3lzY29uZmlnCis3NjEwOCAwNjhmOTQzMGNjMjQwYjA5NWUyNTI5M2UyMmUyMTljYTcwNzc5YTJjIGxlZ2FjeS10cnVuaworNzYxMTEgZjg5YTkzYTc3OGE4MWQwNjhkYzg5MjYxZDRlN2ZhMjJjOWJkNTgxMSBweTNrCis3NjExMyBkM2E4MTA1MTY2M2I2YjU2YjhjZGM3NGVjNDIyMDIwYjAyZDliNGRkIHB5M2sKKzc2MTE0IDQ0NDk4OWNlNWY3NzE0OGNiZWE0MjhiMzQ5OGVmMWRhNmM2MDhmY2IgcHkzaworNzYxMTUgOTNjNzUyODc1MDMzY2M1ZGRlYjMxZmE1MjE2OWE4MDRmNWVkZjRkMCByZWxlYXNlMzEtbWFpbnQKKzc2MTE2IDYzYzllNjNlMGRlM2YwMmFiNmYxZDAzMjZiNGQ4OWQwNjI2Y2QwOWQgbGVnYWN5LXRydW5rCis3NjExNyBmZDc4MjgwNTE4NjU1MWE5OGUxMDUxMjhjNTE1ZWFmZGYwZDZmNTI4IGxlZ2FjeS10cnVuaworNzYxMTggMmViYWQzZGZjZGUzNzYyN2VlMTI5NTUyZGJjYjVhNDNmMjhjMGNmOCByZWxlYXNlMjYtbWFpbnQKKzc2MTE5IDBjYjk0MzkwMGU1MzFlNGZhMmUyMjRmNDAxZDU0YzBiZTRiZTBhYmIgcHkzaworNzYxMjAgNGVhMGE4MGVkNzZhNjM5MmMxYzU1ZmUyZjkwMzRmNjJhNTFiMjljNiByZWxlYXNlMzEtbWFpbnQKKzc2MTIxIGExYzk0ZjA3NjFkNDEzYmFkNmYxMDhlMDY1ZDdiYzgyOWYyMjk0MjIgcmVsZWFzZTI2LW1haW50Cis3NjEyNCAzNWRkZmI0NDcxNjhkMDZmNDQ2MmEzOWRhYTk5NWM5N2RjODQwZGFkIHB5M2sKKzc2MTI2IGQzYTc2MzYzOTJhZjU1NGQxZWVmNjI1ZTQ2YmZmYzYxZTllMzM3OTEgbGVnYWN5LXRydW5rCis3NjEyOSBlM2ZmMzk3NmJiYWNlZjc1MjNhNTgzM2IxMjk0ODFiNWM5NjdiZGYyIGxlZ2FjeS10cnVuaworNzYxMzIgODU1MmEyNjc3MmU2ZmMxYmQ4MWI2NjA2ZmM2Mjg2NDI0MDAxOTQ2ZCBsZWdhY3ktdHJ1bmsKKzc2MTMzIDZkYjIyMGFmOGNhM2ZlYzkwNDY3OWNlNzVlOWMxZjIwNGI3MWI4ZWMgcHkzaworNzYxMzYgZDM0NmZmYjhjZmQ3NDMzMTljZGE4NWZjY2UzNTY3YjA3N2I5NTFjYiByZWxlYXNlMzEtbWFpbnQKKzc2MTM3IGNkMzYwYWM1OGNkMmVhMDZjNmE5MGIyMzNhNjE3N2MyZjZlMTk5M2MgbGVnYWN5LXRydW5rCis3NjEzOCBlMGRkZWRhMGQ5YzMzZjg0MjUxMDI0YTA1Njk3ZDgyYjhlYWYwODEzIHB5M2sKKzc2MTM5IDkzMDlkYWFmMzJkMTgwNzAyNmVjMzY2ZTVjMGRkMzI3N2JlMzQ2OTggbGVnYWN5LXRydW5rCis3NjE0MCA4MThiMGIyODdhYTQyNDRiN2NhN2M3ZjViNjgzYmI5ODczMjZiMGQ4IGxlZ2FjeS10cnVuaworNzYxNDEgNDJkNGNmODI3YjllODljODNmY2FlM2FiNGU3NjFiZTJjMDNlZGE0NSBsZWdhY3ktdHJ1bmsKKzc2MTQyIDkyYmRjM2M3ZDVhNDNlZjNkOWFmOGMxMjhiMmM1ZjY5Njc4M2ZmZTIgcHkzaworNzYxNDMgMWEzMDg2MGJjYTAzN2Y4NDEwOTRiMjI5YzMyNWZjOWUzMmNiOGRhMiBsZWdhY3ktdHJ1bmsKKzc2MTQ2IDI3ZTEyMGY5MjA4YjNhYThjMGM4OTFhNWRhM2YxZjlkZmEyODQ1ODkgcHkzaworNzYxNDcgZTI1Mjg4YmI2ZmFmMTdhZTgyNDBlNWI5NGQ4NWJhMWQ2ODI0ZTA5MyByZWxlYXNlMzEtbWFpbnQKKzc2MTQ4IDZmNWY0ODFkNjE5YzJjZGJiZWJjMzVlOWI5ZDhhYTNhODFmZDM0ODEgbGVnYWN5LXRydW5rCis3NjE0OSAwNGNmOTVjZjk0OTZmZmY1MGIxZjJlZjM2NjhjYTc5MjJmYTgyNTVkIHB5M2sKKzc2MTUwIDNhMGU2OTAwMTIxNTQzYTRiZjUxNjQ4ZDdiZDNiZDE1ZmM5MWQ3ZmMgcmVsZWFzZTI2LW1haW50Cis3NjE1MSAzODFhNjJmMWU2MzVmMmMwMjE0NGRkOTFkNGY5M2E0OTkwNWQ0MjkyIHJlbGVhc2UzMS1tYWludAorNzYxNTQgNjM3NzBhNWEwYzc5ZGYyYjRkMjNmNzRkOTA3YmRlZDg1NTY3OTI4NiBsZWdhY3ktdHJ1bmsKKzc2MTU1IDJlNGU0NzcyMTljNTczZjVjYWIwZjM0OWQ5YWU3ZDMzYWVlNGU2ZTQgcHkzaworNzYxNTYgZGNkNjg4N2I4YTI3NzQ3ZGE4YjQyNzM2ZTNjYTFhZDVmNGE3NDFlNCBweTNrCis3NjE1NyA5NzllYjFiYmY2ZTZlNDZkYTI3MDk1NmU5NDMxZTI4Nzk4MTZkZTNmIHJlbGVhc2UzMS1tYWludAorNzYxNTggZDYxYjI0Yzg3Njc0NDc1Njk1NGZmZDAwOWUxOWIyYzQyYzMxZGJkZSBweTNrCis3NjE1OSA0ODk4OWVjZmY4MDQ3YmJlNDQwZTdhMTQ3MzExYjQzOTE3MTliZWU4IHJlbGVhc2UzMS1tYWludAorNzYxNjIgNjlkNjFhZjVhOTU4OTM2NDZlZDI1NjYyZjc0YWYwYTExZjBiMzBlNSBsZWdhY3ktdHJ1bmsKKzc2MTYzIGQ5NzA1OWU5ZTg1MmVhYzJiODU2M2FjZGQzYmZhMTg0ZWU4Y2NiOTcgbGVnYWN5LXRydW5rCis3NjE2NCBmMTkwMzE1ZjE4NWVhN2FiZTRmYzNjMTVlYjI0ZTE3ZTA2MDRlYjc2IHJlbGVhc2UyNi1tYWludAorNzYxNjUgZWQxMWIzMTVkMzZhMzg4N2YxNjQwMDUwNzIzN2RhM2UyMGMxNjNlOCBweTNrCis3NjE2NiAxNDQ3ZDc1ZGVmOGIyNTc4MTBmMjA4YTYwODUyNWE0NTJlYWQyNjczIHJlbGVhc2UzMS1tYWludAorNzYxNjggYzc2ZDVmYmViNjkxOTMzOWNkMmJkNTlhMjIzZTI5N2RkZTFmMGQ3OCBsZWdhY3ktdHJ1bmsKKzc2MTY5IDI2N2E0MThlYmJjOWI2NGEwYjM1Zjg3YmFlYzk4ZTcxNWE5NzQyZDUgcmVsZWFzZTI2LW1haW50Cis3NjE3MCBhN2FjNGRiZGU1ZGI2MjBiYTIwMGZkYzhjY2RjZGI3NWZkOTI0OTkyIHB5M2sKKzc2MTcxIDY2N2Q5Nzc5Y2FkNmFmZjY2MDQ3OWEzZjEyNTcwMDhkMjVhMjJmMGEgcmVsZWFzZTMxLW1haW50Cis3NjE3MiBmYmY0MWIxMTI0ZDhlY2FmMWU3ZDhkN2VkMDVjYjQ0M2NlZmQyOGRiIGxlZ2FjeS10cnVuaworNzYxNzMgZWQ4YjI5NjkxMTllMjZhZTY4MjY5NjQ2ZGJiNDFjOTNmYjY0YTljZCBweTNrCis3NjE3NCAwZWI1NmE4ZTYyNjJmM2I5ZDIwYWUzOTUwMzUzNTI0NTdkMjJjN2E0IHJlbGVhc2UyNi1tYWludAorNzYxNzUgZmUzMzU2MmQxZjk1YTBmZGNiOTgwMTAyYjk4NDk4NThkMjRjYjU0NyByZWxlYXNlMzEtbWFpbnQKKzc2MTc2IDJkMzk0ZDJkMmQzN2Q3ZGFhMWM2YjgxMzYzMzliY2QwNDQxM2I3NzUgbGVnYWN5LXRydW5rCis3NjE3NyAwNTBhNjVhM2RmNTM4YjI4NzlhM2U4ZjhjMGQxZTJkZGEwMTg2YTU4IHB5M2sKKzc2MTc4IGJmY2FiMWJhMGY1MWNiM2NlNTE4OTg1YjMxNTE1NDhjMGQzM2U5N2QgcmVsZWFzZTMxLW1haW50Cis3NjE3OSBiY2EwMjdiNmRmNTMzZDZkYzNhYjMxM2E2YWNlZjRmMDkwYjUxOWJkIHJlbGVhc2UyNi1tYWludAorNzYxODIgZmJmY2NlMTEyNGFlMjcwYTQ2YzRhOGIzYmJhNTNmMjA1Zjg5MTIzNSBsZWdhY3ktdHJ1bmsKKzc2MTgzIDUyMTQwNzM4ZDZjM2I1ZWVkNmE0MmQ2MWEwM2U0NDM0NTc3ZjVlMWYgcmVsZWFzZTI2LW1haW50Cis3NjE4NCA4YmZiMzJiNWZlNmQ0ZDJmOTY0ZGQ5ZGZmZTcyZjVmNjQyZjc3MzRmIHJlbGVhc2UyNi1tYWludAorNzYxODUgZGQ5Zjg1YTVmMTM0N2NmYjE2MjI2ODRmMGVhNjI0NjNlYzg5YzE0OSBweTNrCis3NjE4NiA5MjE5YTk2MmFkMWMzMDdhZTFjNzhlZmU5MmNkMzdkYjA2ZDI2MTQ5IHJlbGVhc2UzMS1tYWludAorNzYxODcgZmZmNTU4Mjg2YWFlM2ZlMzZhZDJjNjkzNzQ3ZmYzYzJiODQzZDk0OSByZWxlYXNlMzEtbWFpbnQKKzc2MTg4IDIzY2M3NTljZmFlMzU4MjUyN2YzYjUyZWQ4MmYyNWNjMTY1NmFmZGIgcHkzaworNzYxODkgNmQ5MWFhYWRkZGQwODFkZTczZTRmMjliNmU3MzQzN2FjNGRiN2JiMyBweTNrCis3NjE5MCA4NjdkMmYyNzM1Yjg5MDU1NzYwMWI5NDI1Nzg0NjVkODM2NjNkZWFkIGxlZ2FjeS10cnVuaworNzYxOTQgY2EwMjE3YzUyYThiZjM4NGIzNDNkYWIyZjM4MzBjNWRjNzk4MGE1OSBsZWdhY3ktdHJ1bmsKKzc2MTk1IGZkZDY0ODRmMTIxMGQ2MGMxNjhlMjM3NjZiZDM0MmRlOGE2NmYyMTcgcHkzaworNzYxOTYgY2I1OTA1ODA2ZGU4ZGM4NzcyODgyZjkyNGM1ZWM5MTFiNjNlMjZhZiBsZWdhY3ktdHJ1bmsKKzc2MTk3IDk3YzMxODcxNDA3MGY2ZjE3ZGY3ZTY4NWU2ZjdlYWI2Y2IyYTQzZTMgcHkzaworNzYxOTggZmU2YjliYWJlNGJlOTE2ZjQ4NDkwNWU1M2YxZjI1YTA1Y2FjMGZkZSBweTNrCis3NjE5OSA5NzZjYzUwNGQ5OWYyODM4NWI1ZDJhZmQ4MWJiM2QyODU1YzkzNzVlIGxlZ2FjeS10cnVuaworNzYyMDAgMTA3NjRmZmU3NTQzY2U5YmMxMmY2M2FjNDFkNDVlOTY2MTM5MjllYSBweTNrCis3NjIwMSBiMWE3NzVhYTA3MTBkNDk2MWVhZWQxMzg1MDRlNzRiMGU4N2M3YjBkIHB5M2sKKzc2MjAyIDRlYmRkMmUwYWFhZGU3NTNkYzM0ZTBlNzEyNzY1NjdjY2FmNTg5NTEgcHkzaworNzYyMDggNTRiOGQ3ODBjOWI5OWUwYmI1NzJkNDljNmY3ZGFkN2Y2ZjEwNjUwMCBsZWdhY3ktdHJ1bmsKKzc2MjA5IDI5NTBkOTc3MTM5NTllNzBjZjVlOTVjODk2MDFiMGI2Y2U4ZjE4NzkgcmVsZWFzZTI2LW1haW50Cis3NjIxMCAxMmUwYzllYTMwNGVlZWI1NjgxYjc4NTQ4NzkyOWY1NjRjZWUxYTVlIHB5M2sKKzc2MjExIGM4NWViNTk0NjYxNDU2NWJkM2Y5ZjI4ZmZlMGU1ZTNmYTNmOTQ5YzcgcmVsZWFzZTMxLW1haW50Cis3NjIxMiA3OTVlZjQ2MzQ5ZTUwMWNiYzkzNGY5MTUwNDY5ZjFmNjFiYTFjMGJmIGxlZ2FjeS10cnVuaworNzYyMTMgMjE0ODg1MWYwODJhMTkwMGE2MGM3M2ZiNTcyYzJjMTcyZWVkOGMxNyByZWxlYXNlMjYtbWFpbnQKKzc2MjE0IDI1N2NiNjFiZjQxYjU2N2JjMjkzMDAxMGIzOTNjYTA4NGFhNTEzNTcgbGVnYWN5LXRydW5rCis3NjIxNSBjZTlmNTVhZDU0NmUxNGE1NDc4ZDMyMGI1Njc4ZTRiNzJiMTZkOGE0IHJlbGVhc2UyNi1tYWludAorNzYyMTYgYzcxN2ZlOTkzMDg1Y2RhYTFmYmM5NGVjYTlhNmNlYjgyMmViZWQwMCBweTNrCis3NjIxNyAzM2JlODJmYTI3N2FjOWExZWE1MDBlOWNjNWIzYTZhMTQ2OWQzODQ5IGxlZ2FjeS10cnVuaworNzYyMTggNDNmMzJkYjFiZjQ2ZmI2ZTA0YzZkYWQzZTVkMDQwNjFjNTkwYTViOCByZWxlYXNlMjYtbWFpbnQKKzc2MjE5IDgxMTY2ZDdiNDE0YzhhZjI3OGQ3OWExMGJmMjg4ZjM5YzA4MTRhZWEgcHkzaworNzYyMjAgMTM4YzFmNzQ4MDRkNjhjNmY1NjFhYTEyYjBjZDlkZTQ1YzY5M2E0MiByZWxlYXNlMzEtbWFpbnQKKzc2MjIxIDFjMjc4ODhhOTU1ZmU5YzZkOTFlMTExZTVmNDhhMjRmYzdlOGZiZmUgcHkzaworNzYyMjMgZDQ0ZmVhMjNmZDU3ZmQ1YjcyZjIyNTRhMTMyMmM0YTIzNDRkZmVhYyBsZWdhY3ktdHJ1bmsKKzc2MjI0IDk0Y2QxODVmNTNiNDc2MTM2ZTE0MjM1MGQ3N2MwY2VkZTZlYzBlOWIgbGVnYWN5LXRydW5rCis3NjIyNSA1NzA3N2RmMDJmOWFjYmM3OTMwZjNjMjFkNmYzZDkzNmJjMjYzMDI3IHJlbGVhc2UyNi1tYWludAorNzYyMjYgNWMwZDRiM2VjZDY1ZDE4ZjIxYTgwMjBhOTA3NDVlZGM1M2MzN2E3MCBweTNrCis3NjIyNyA0ZjFjN2I3YmZjYmRhNDAzYWFkYzM3MTRjZjIxNjg3MWY3ODQyNTdkIHJlbGVhc2UzMS1tYWludAorNzYyMjggY2QwNDM2YzM0ZWY0NmRlMGY0NGYwNTkzZGI0MGIxOGFlMTVmOWUzOSByZWxlYXNlMzEtbWFpbnQKKzc2MjI5IGY5YTUwY2VkZTZhOTIyYjA2N2Q2ZDZjZTk2ODAyNjJmNDI1MmExZDggcHkzaworNzYyMzAgODlmNDI5MzhkNWNjYjczM2MzMzZhNGQ1MTQxNjNmNDFmZmU0MjhjMiBsZWdhY3ktdHJ1bmsKKzc2MjMxIDEyOGRkNmRlMTM0Y2E4OWMyYzc5OGNmYmQzMWNmMmQ0YjZhNjllZjIgbGVnYWN5LXRydW5rCis3NjIzMiBiMmQ5MGMxYzYzN2RjNTdmOTc1ODIxODhkNGYyZDU1ZWE3MmQ4NmNlIHB5M2sKKzc2MjMzIDc2M2QyZmY3OGFlN2U4YzQ1MjlhNjFmM2U0Y2I2NTVjMTFiNDUxNDUgcHkzaworNzYyMzQgN2NlYjVlYjQ2MmM1MDNmOTZmMGZiOWUxMTIxMmNhY2UyMzY1OTNjNCBweTNrCis3NjIzNSBiMzU0YzFiNmI0NzY3YzM3YjRjMzgzNjI1NWI3YWZjMDJkYTdmNTM0IHB5M2sKKzc2MjM2IGEwOTUxZjExYmUzZDc2ZTZkYTk5OTU0MzVhZmNlNTQ5NWYxMDE1MzEgcmVsZWFzZTMxLW1haW50Cis3NjIzNyBiN2Y3M2IwMmQ2ZDI0OGNlZDgyYjZlMTE3YjVhNzAxNDYyMjExYjIxIHB5M2sKKzc2MjM4IGIyMTg4MzY1NzNmYWNlODdmNGY3Yzc0MzZjOWQ2ZTU3MjZmNDc4NmQgcHkzaworNzYyMzkgOTg1NzllOTUyYjU0YWY5N2QwYThjNmQzMzEwODAwOGI1MTIzOTU0MSBweTNrCis3NjI0MCA2ODU1MjdhZTQzN2RmOTJhOGY0Y2E0MzBlMWVjMzE4NzgyM2I2ODE5IHB5M2sKKzc2MjQxIDM1N2UzOTcwMDQ4OTc4M2U3YTBkY2Y0Njg3YWQxNWExNDliODY5YWQgcmVsZWFzZTMxLW1haW50Cis3NjI0MiA4ZTZiNDc4YTcwNTNlZWIzZmZmYjM0MzMzOGUwODI4ZWEzNmJlZjczIHB5M2sKKzc2MjQzIDY1ZTIzMDg1ZTNjYWRkZGJjZDA1YzA0MjU2ZTAxNDRmMmE1MzQxYzUgbGVnYWN5LXRydW5rCis3NjI0NCAzMjMzNWJhM2FhMGJiMTYyNjFjMDE3NWVkNmQzMDdhZmFhYWI5ZWE4IHB5M2sKKzc2MjQ1IDE5NmYyYWI5NzcxOGNiZGI2YjllMWViMzY1YWYxZmZmZWJhN2M2MTQgbGVnYWN5LXRydW5rCis3NjI0NiBiODE0NWQ2ZGI3ZDQzZDcwMWQ1NTEwNmZjZWY4NGNlMDlkYmI4ZTdmIHJlbGVhc2UyNi1tYWludAorNzYyNDcgYzYxM2M3MjRlMzE1OWFmODYxMTkzY2Y0M2NiZGMxNzJkOWI5ZTc4OCBweTNrCis3NjI0OCA5MGYxZjU3MzIxODU5ZDBjNjVmYWQ0NjU3OTA2NDJhMTM5NWM4NGUwIHJlbGVhc2UzMS1tYWludAorNzYyNDkgNWM5MDUwNDgxMzA5ZDhiNjgxMzRlYzJhYjRhYjdiZTVhZjIwODJkYyBsZWdhY3ktdHJ1bmsKKzc2MjUxIDI3N2I4OWQ1YjMyMDk3NDgwMjA1MmZhMWRjY2RhYTcwYzFlODZhZmYgcHkzaworNzYyNTMgYTFkZjUyNGZjYmM2MjJiMDc5Y2Y5YThmMjE5YjM4YWMyY2JlZjBlMCBweTNrCis3NjI1NSBmMDAxM2FkZTljMWFkMzZmYzEwNGQwOTljMzQ4NTQ4YjNkN2Q1MzVhIGxlZ2FjeS10cnVuaworNzYyNTYgYWE2NGE1MGFkNDkwNWU3OTNjZjViNjdmNThiZGVmYjYxZjIxYTE3NSBweTNrCis3NjI1NyBhMmNiN2QyNzIxYTNlNGU0ZThhMmRkOWRhNWFkMmEzZjA2N2UxYTlkIHJlbGVhc2UyNi1tYWludAorNzYyNTggMjA3YTQ2MjYxM2YzZjNlMjc1MTY4NjEwYWU0ZGM2OTdiOWM3Y2Q5OSByZWxlYXNlMzEtbWFpbnQKKzc2MjU5IDNmMmE3NmZhMjQ5NmIyYTE1YzJkZTYxMTM0YTI2NTlkNjkwOTliZmQgbGVnYWN5LXRydW5rCis3NjI2MCBjMWMxZjI4YWNiMDUzMjc5MTk5YmUzYjU5YjYzZDAzMGRkM2UwZjkwIGxlZ2FjeS10cnVuaworNzYyNjEgYjJhYjA4YzkzYTAyODI5ZjY0ZGI4YzRjZjUyZDZlNzBlMzZiMTNjMSBweTNrCis3NjI2MiA5MmY5MTcwNDM5MTk5OWZkMzA3MmQ3ZDcyMTdkNTlhNTZiMzQ4YWUzIHJlbGVhc2UyNi1tYWludAorNzYyNjMgYmVjNTg5YjQ0YWFlN2E2YzMxOGQ2NGY2Mzk1ZmViZDc5ZWJiOTEzMiByZWxlYXNlMzEtbWFpbnQKKzc2MjY0IDU1NTA0NTU0MTc5NGU4M2ZlNTc2MGM1YzQ3OGJiYTE4MjY2MzkyN2YgcHkzaworNzYyNjUgM2RiMWZjM2NlZmQwZjg2M2Y3YmU1NTk2NmU5ZDEzZDFjMzZjM2MzYyBsZWdhY3ktdHJ1bmsKKzc2MjY2IDk0ZjI3MDVkZWY1Y2Y2NTY2ODNlYjM4NmMxMDM1ZWVjNTY5ZTU4YzIgcHkzaworNzYyNjcgN2Q0YWI4Y2QwMDIzOTU1NDMyODYyODRlMDQ1ZjU2NzYxYmQ1ZDRlNyByZWxlYXNlMjYtbWFpbnQKKzc2MjY4IDU2ZTcwMWY4MjQ1ZTU2MzZhMGZmZjlkOWRmOWRhYzhlNTRmN2U3MmQgcHkzaworNzYyNjkgZmE2MDI3MGFiNzlhZTVjOGRkZGM4NTJhOTM0ODZkZTlmNGQxODhlNCByZWxlYXNlMjYtbWFpbnQKKzc2MjcwIDEyNTdhNTk3YzhmYWRhMDU3ZDYxNDZkYjI2OTFhZWNjY2JmMTYwOTEgcHkzaworNzYyNzEgM2Q5MDJkNjdhZjljYTA5MmIyZDc0M2M3YWFkMzVhNTgzMWI2NmQ1YiByZWxlYXNlMzEtbWFpbnQKKzc2MjcyIDc5ZWE0YjFlZjA0ZjI3ZGU1N2E3NTQ5NWJiMjE5OTM5YWFiMzQxNDcgcHkzaworNzYyNzMgN2Q2YmFkNWMyZDY0ZTA2YjJlMjdlZTg3ZGRlYjZjMzAwNTA0NWVlNiByZWxlYXNlMzEtbWFpbnQKKzc2Mjc2IDFhM2QzOTZkMWI2ZmNiZjU0MmJlNTkyNzQ0ZTQ4YTM4OWM4YTgxYmUgbGVnYWN5LXRydW5rCis3NjI3NyA1M2VlOGVjYzE4YTUyMmE4MjIzY2FjZGY1MTViOGNhYmU5ZDI4YjMyIGxlZ2FjeS10cnVuaworNzYyNzggYmI0ZmRhMjJlNjU3ODA4YmUwNGZmNjU5NDE4ZjRlMmZlYjU2N2NlNSByZWxlYXNlMjYtbWFpbnQKKzc2Mjc5IGM3NzdlNGI0NTUwMDRlMjgyNmQwMjllMDJiYmNiYjBiODMwN2VhOGQgcHkzaworNzYyODAgODc2ODhmZjZhY2NjNGRkNmNlNDUwZDcyZDYyZDViZjZlMTE0NjZmNyBweTNrCis3NjI4MSAwNWE4OWM4NjYzY2M3MmU4NDVmZWNkNDY4ZGFjYmI5MTBkMmE4ZjQ5IHJlbGVhc2UzMS1tYWludAorNzYyODIgMDVjNGViMDA4OWM1ZjFlNTEyYmMwMDQxYTg0NGIxZTU1MzVmNjBlOSBsZWdhY3ktdHJ1bmsKKzc2MjgzIDNiMGIxOWI1M2QzMmJmNTU5ODU1NzZiN2U3ZjZmNjI0ZmY5Mzg1ZWUgcmVsZWFzZTI2LW1haW50Cis3NjI4NCA1OTVlYzFkOTBiMmZlZmM2NDEwMGM4MTczNDlmYmIzODhmMGZhMTc1IHB5M2sKKzc2Mjg1IGZiN2ZjODMwMjcyMWQwMDhkMDc1YWRkNzM1ZmMwYWZjOGMxMzI0M2IgcmVsZWFzZTMxLW1haW50Cis3NjI4NiA0MDg4MWRiMzE2ODkzMzkyZGMyZTdlZDE4YTRhMWM1MTA1OWIzMmU4IGxlZ2FjeS10cnVuaworNzYyODcgNmE3ZmMyZTg1NjVmNzNhN2Y0NmM5MzYyYzM4ZWZhMzM5YTc4NmZkZiByZWxlYXNlMjYtbWFpbnQKKzc2Mjg4IDU5MDRhYmI3ZWVmN2IzYzhlY2M5MmI2OWQ1YjBhMjMzZWE4YWM3NzIgbGVnYWN5LXRydW5rCis3NjI4OSA0OWE1ZjFjYjFiMjU0NzBhZDFhOTI0ZWJjMjc2MWFkNWNhZDUxNDIwIHJlbGVhc2UyNi1tYWludAorNzYyOTAgZjY0MGY1NWU4ODczODU3ODlmNDlkMmUyNzZkZjAxZjNiNjcyNGE2YiBweTNrCis3NjI5MSA1YjA1YjVlOWE4ZTliNzQyYThjYzhkZDZmYzA1YTJhOTZjZGQ0OTQzIHJlbGVhc2UzMS1tYWludAorNzYyOTIgMzcwZDIxOGEwMWJjMzJkOWZiNzk2NDk5NjJkMjczZjdhNmE5MTQzNCBweTNrCis3NjI5MyAyYWE2MmZjZTBiZjg2NTM2MWVhYThlZGYxZGMxMjk5YjFmMzE4MzVjIHB5M2sKKzc2Mjk0IGIyYTM5MGM1ZGU1Zjg5MzFkMWM4ZTNkYTRmM2RjNTAzNjJmNjM4OWMgcmVsZWFzZTMxLW1haW50Cis3NjI5NSA2MmI4ZGU5ODNiMjY0MmI4Nzk0MjlkZWU5ZTI0OGEzMjE2NmNkNjBkIGxlZ2FjeS10cnVuaworNzYyOTYgYzIxN2UwMzMxZDRiMmUzYThkNTRmMjYzN2ZhY2QwZDEwMGY2OWM5OSByZWxlYXNlMjYtbWFpbnQKKzc2Mjk3IGM0NThmODEzYTcwOTRiZmYwNTgwYzM4YWI5YWU5YTBiYmI4ZDcyZDYgcHkzaworNzYyOTggM2ViZjkwN2RiMDI4ZTEyYmE3YzE3M2ZlMjI3YmY5YWI5ZTYwNjEwZCBweTNrCis3NjI5OSA5NTA1YWZlODgyM2Y5NGMwNzkxYjRlN2EyMzA4NmJhYWQwNTc0MTA5IHJlbGVhc2UzMS1tYWludAorNzYzMDAgMDY5YjY2Y2ZhZDNmZDlmNjVkZTcwODQyN2ZkMjE4NzZmNWVhYzBjZCBsZWdhY3ktdHJ1bmsKKzc2MzAxIDc4NTIzMWMxYzU1YTkxOTE1NjdiYjczMzg0ZDBhZmVmYTU5YTQwMmIgcHkzaworNzYzMDIgMmVjYzU5MzZiMWYyMzMzZjgzZDMzMmRlZjgzMTcyOWQyMTFmMzQzMCByZWxlYXNlMjYtbWFpbnQKKzc2MzAzIGYxMzVmZGI3M2Q4ODU0MzdiN2NiNTlkNGM4NTc1YzNmODdiMzc5MWQgcmVsZWFzZTMxLW1haW50Cis3NjMwNCBjNTA5OTgxOGUwZDRlNTkwY2RlMzdhNjdmYzk1MzJkMTJhZDZlMGUxIHB5M2sKKzc2MzA1IGFiYWYzNzI0YmU3MTE3ODZlMjE2MGJhZmFjNjg4YjQ1N2VkY2E5ZGQgcmVsZWFzZTMxLW1haW50Cis3NjMwNiBhZmIzMzQ4YjM3MTU2MjMyZjIwMTU5YjliNzQ2ZmU4ZjAxNGI3N2VjIGxlZ2FjeS10cnVuaworNzYzMDcgMTUwNjEwY2FlODA0OTI5ZGM4ZDUzMGQ0NzljMDJkZGI5MGUwMWQ4MyBweTNrCis3NjMwOCA1MTAyODcwOWFiYzMyN2NmNzc1NmZmYzQwYWYwZTQ0MzYwMjUwMDQ5IGxlZ2FjeS10cnVuaworNzYzMDkgODM2NjQyMjQwNDY0YWJkNGE4ZTAxZmIwZWNjMzZkZjE1NDRiMTBmNiBsZWdhY3ktdHJ1bmsKKzc2MzEwIDIzYzEzOGM0ZWMwNWVjMTIyZjhhNTFjYjBhNjI2NTVlNjZiYjZkNmMgcHkzaworNzYzMTEgMTU0ZmIyNzBhODIwZjNjZDAwMjllYmM0MWE2YTY0M2E2NTE4YjlmMSByZWxlYXNlMzEtbWFpbnQKKzc2MzEyIGViMWMwM2EzN2EwMjk1ZDVhYTZkZTNlMTk2ZjQ1YmFhNTAyNWRhZTYgbGVnYWN5LXRydW5rCis3NjMxMyBjMDg0MjNkNzBiOWYyMWE3MTE2Mzk3M2IwOWQ1NDUwYjkxYWU3YTNiIHJlbGVhc2UyNi1tYWludAorNzYzMTQgZGY1MzY0ZmMwZTVjOWQ0OTAwYjc2MGU3YTRiMGNlY2RjMGM1Y2Q4MSBweTNrCis3NjMxNSAyNWI2NDBkMjM0Zjk1NTVjM2JkMTUxZTI4ZTQ5N2I0YjgyYWEwZGE2IHJlbGVhc2UzMS1tYWludAorNzYzMTYgMjUwZTFmNDc1NTY4YWEyZTZjZTI2NjEyNGFmOGFhMmU1MTY0ZTVmZSB0YXJla19zeXNjb25maWcKKzc2MzE3IDY2NGY2MzAxOTQwZjgzMmU2M2Y1YWY2MjNiMTM3MDY2NzQ1ZDY1OTggdGFyZWtfc3lzY29uZmlnCis3NjMxOCA2MTU0NTI5MGNiNTE0NDk2NTc2YjJmNTVmMTc4MjQwMWZjMzdiYTJhIHB5M2sKKzc2MzE5IGViMjM1ZWI0NWQzMjliZDM2MzQwZGMyYzQ3NzQ1NGE2ZjNkNWI2OTUgcHkzaworNzYzMjAgZjExMTJjMjcwMGIxZTY1MTEyYTlmYzViNTg5MjlmNzNiMjM5YmM5NSByZWxlYXNlMzEtbWFpbnQKKzc2MzIxIDQwMWQyMjM3MDViNzc4MWZjODlkODE2ZjM3NzcyZDEyNzQ3ZDExYmQgbGVnYWN5LXRydW5rCis3NjMyMiAxZTAzZmU1YTExYjQyZjJkMGM1YjY4N2E4OTZlODM0NTY1NGNlOWZhIGxlZ2FjeS10cnVuaworNzYzMjMgOTY3MGZlNmU2ZDE0ZGNhYWEzZjAwOTc0NTgyZTgyOGYyOTczOTM0OCByZWxlYXNlMjYtbWFpbnQKKzc2MzI0IGZkNDE3Y2Q2NDM0MTg1YWI2MGQ3MDk1NDkxNDM5YTBkZDI2M2NhMmUgcHkzaworNzYzMjUgZjYyOTMwZDBmYTcyZDI1NTQwNDVkNzU2YTgzNjcyODBmNmZkOTcxZSByZWxlYXNlMzEtbWFpbnQKKzc2MzI2IGM4NDdjNjg0YzJjNWVhMDkyYjY2MDJjMDZmNTZiN2RiMWRiYmFkNDMgbGVnYWN5LXRydW5rCis3NjMyNyBkM2IzYThhODA5MGZhMTlkYWI4NTM1NWY1Y2Y1N2NlY2MxMTJhYjFjIHJlbGVhc2UyNi1tYWludAorNzYzMjggYWM3NjhjOGUxM2FjYTg4YWQ2YjU3N2U4YTJmMDhmZDExNDY3NGYzZiBweTNrCis3NjMyOSAyZDNjZGE2YjhjOTUyMjEzZjM3ZjBjZjlhNTk4N2Q3OWM3ZDcwNzgzIHJlbGVhc2UzMS1tYWludAorNzYzMzAgZjY4MGMxZmI3ODA0ZjgzMjI1ZmRkMGJiNjU3NDJhYmYyZWE5Y2Q0ZiBsZWdhY3ktdHJ1bmsKKzc2MzMxIGQxMjc2NzllY2ZhYTZkZTQ5NTQ1OGNmM2U4NjMzOGQyYWFkMWQxOWYgcmVsZWFzZTI2LW1haW50Cis3NjMzMiA5ZDkzNDJjYmY5MzUzZTRlNTkyMTk2M2I0ZmUwY2U2Y2I4MDA0MDAyIHB5M2sKKzc2MzMzIGNlYjNiMzZkZDY4MWVjYzA4MjRlYjY4MDE3M2RiMDUzOGM3YzU4ZmQgbGVnYWN5LXRydW5rCis3NjMzNCBjNWExMjJjYjEyODhhNmM0N2E5NjZmZTFkYWRmMzlhM2RjYzg1YTQxIHJlbGVhc2UyNi1tYWludAorNzYzMzUgNDM5MWEyMmFiMWYwNGE5Mzg2OGNlYzVkNzI2YzEwZjU4YWVmNTQzZiBweTNrCis3NjMzNyA0YWE0YzE5ZGZhZWRlY2Y3ZDQxYjNjNGQwMGU5Y2E2NTFkMDg2N2M3IGxlZ2FjeS10cnVuaworNzYzMzggYWRmOTI3NGQzZWRjNDEzZmMyNmRmMDdkM2VmMjhhNTM2ZmYzNDllYSBweTNrCis3NjM0MSBmOTNiMmE2OGRmYjQyMDc0ZmY2ZDM3OWU2ZjYzOGQ0OGExYTgwMWZjIHB5M2sKKzc2MzUwIDM0OWI5N2ZmNGMyYjc4MzI0ZmFmM2Q0NzM4ZTZlYWZmYjM3ZTA5NjYgbGVnYWN5LXRydW5rCis3NjM1MSA3MTgzZDZiOTMwYmE5MTI0YWNmOGI0MTBjZTEwZDJkMWM4YzRlMGIwIHB5M2sKKzc2MzUzIDI2MjgyMTZiYzY2ZDQ3NmY3NzY5M2Q4MmM3MjE0NjAwZjIwYTk4ODIgcmVsZWFzZTI2LW1haW50Cis3NjM1OCBhNzdhMmQ3Y2VkN2RkN2MyZTNjZWM4MDA3N2VlYTEwMjg2ZDFiOTBmIGxlZ2FjeS10cnVuaworNzYzNTkgMTg0ZWI5MGIyZTNkNzVmYjkxYzQwZjkyMTRlZTY3MDM3MjlhMTlmOCByZWxlYXNlMjYtbWFpbnQKKzc2MzYwIGQ2YzIxMDY3NzliOTBjZTJjYjA5NDY3NmQyYjEyNWM5MmM3MWNlNGIgcHkzaworNzYzNjEgM2M2MjAzMWIyNTA2ZGVjZDU3ZTc1YzM1MWVjZTk3MjI2NWIwOTEyMyByZWxlYXNlMzEtbWFpbnQKKzc2MzYyIDNkMmIwNmFhN2IzNmZhMGM2NGI2M2M3NGMzZDlkMDAwNjIzY2IzMjggbGVnYWN5LXRydW5rCis3NjM2MyBmMDE0OGQ5MmRiN2ZmNTA2MzMzNzNjMzgwZjBiMDE2YjZhMWY4N2IxIHJlbGVhc2UyNi1tYWludAorNzYzNjQgZWRhNTZkMDc3NWJhY2Q3ZGIyZmM2NjE5NTk5Mjc2YWM2YWMwNjAyZiBweTNrCis3NjM2NSAyNGFiOTFmYjI1YWJmMDdlZGFhYTQzNTFkOTlkNTAwZjQ3YmQ2NGUyIHJlbGVhc2UzMS1tYWludAorNzYzNjYgM2QxOGNkMWQwNGE0NDY4ZjE4MWYyMDg3NmY0Yjc1NDY4NmFiMzBmZiBsZWdhY3ktdHJ1bmsKKzc2MzY3IDRlZDEzMmQ2YmI3MDAxMjM4ZjJjMTMwNzE1OTJiYWMzNzEwMDdlMmIgbGVnYWN5LXRydW5rCis3NjM2OCA2ZTNjYzNhZGYxZGM0NDBhM2IyZGMxOGIyNjM2M2JhYzc1MzBiODQxIHB5M2sKKzc2MzY5IGE3ZjYxOTRiNzhjYzkyZDI4MDg4YzdhNGMxOWIzYjBlNzZjYTE3MGMgcHkzaworNzYzNzAgZWQ1NGExYTkxNGI0YzY2MDUzMDBlMmJlMGEyNmM1NWRmNWFmN2RmMSByZWxlYXNlMjYtbWFpbnQKKzc2MzcxIDVlZjM0YjI5NzY2Y2YxYTI3NjMxN2Y4OWNiZDI0ZDIyYmE3YmRlZWYgcmVsZWFzZTI2LW1haW50Cis3NjM3MiAyYzVjNjY4N2YxYzhlYjU0MGYwZjBhNzk2ZTNjZmNkZjAwZjFhYTdmIHJlbGVhc2UzMC1tYWludAorNzYzNzMgOTJlMDZjZGJlYWI5YjY4NDI1ZWMyZjljNTIyNTc3YTYwNGVkNzRkMSBsZWdhY3ktdHJ1bmsKKzc2Mzc0IDUwZDM1NTMyNGM1MDYzMjdkZGFkYzczNjJlYzAxMWVmY2MyMGVjMDcgcmVsZWFzZTI2LW1haW50Cis3NjM3NSBiOTZmNzhjZTgzODMzOTNiYzFkYmY0NDEwYzRhZDRiZThmMDc4MGUxIHB5M2sKKzc2Mzc2IDMzM2RkYTMxYmQ3MzMxZWU2MTE3YzIxOTI0ZjdhY2Y2YjdlMGRlMzEgbGVnYWN5LXRydW5rCis3NjM3NyA0MWQyOWMxN2ZkNDA1ZDZhZTEzMmQwYmUzYjllMmJiNDE5NGZiMzJkIGxlZ2FjeS10cnVuaworNzYzNzggNDYzM2VkMjM3OTcwZDc0NmY4NGI5MWZjMDBkZTI1NjQ3YTlkMzY2ZSByZWxlYXNlMjYtbWFpbnQKKzc2Mzc5IDFlNTM0ZDc5NTBmODBlODkzMzcxNjg3ZWE1ZWJhYWMwMWMxN2JiMzEgbGVnYWN5LXRydW5rCis3NjM4MCA5ZWQwMmRmNzJiZDYyZjNlNzEyZmRlYjQzNzBmN2JlZWRlMzY0MTY2IGxlZ2FjeS10cnVuaworNzYzODEgZDhiY2M5ZGUxNjA1NGM3OWU4NDBmM2Y2OGViN2FhYjM2NzFiNTgwYSBsZWdhY3ktdHJ1bmsKKzc2MzgyIDBiY2MxMmM0NjAxNWE0ODg4NTU3Y2RhYzllMWQyMGUyNDVmN2M0YWEgbGVnYWN5LXRydW5rCis3NjM4MyAwNWFmMDQ5MDBiNmI5MWUyZWQwMGRjNDM1OWY1MGZhY2RhMDM3YTlkIHB5M2sKKzc2Mzg0IDcxNWMwYmFhOGIyYzhjNzhhY2Q1YWRiYjI3ZjMyNTNjMTc0YzhjNGUgcmVsZWFzZTI2LW1haW50Cis3NjM4NSA1ZTVjOTdiOWM4Mjc5ZjYyYzgzODA4MzYyYjdkZDMxMWQ5NTRlMjJjIHB5M2sKKzc2Mzg2IGEzNDViYjUwZWMwZjg4YzVkYThkMzFiMDEyODI5NDc4ZmM5ZmYyOTkgcmVsZWFzZTI2LW1haW50Cis3NjM4NyBkODAxOWQxZDU2ZjMzNGY1MmU5NmI3ODFiYmM0YWJjNDcyMTRiMTk3IHJlbGVhc2UzMS1tYWludAorNzYzODggZWQ1OTA3NzgzOGFkZTk5MjdhZjZkNDkyMDc1M2MxMDZkOTBiZjA4NSByZWxlYXNlMzEtbWFpbnQKKzc2Mzg5IGIzMWEzM2MzNmYwODc0Y2ExNzE2OGExNGVhNjdkNWU3NGFhNmQwNGEgcmVsZWFzZTMxLW1haW50Cis3NjM5MCBiOGEwYjMzM2U0NjllMWE4OThmMzE0M2EwNzhlMTcxYTg5MDdmZjMxIHB5M2sKKzc2MzkxIDhkMDZlNDUwYmM5OGNiNmE0ZjczYmE5Y2ZhZjJkYTk3OGM2ZjczYzMgcHkzaworNzYzOTIgZjE1MjY2NzIwMGFlOTA0MjRjZjJmZGNiNWRhMGI4NjYwNGM4YzU1MSBsZWdhY3ktdHJ1bmsKKzc2MzkzIGE3OTBmODRmYmFmYTI4MThlZTZkOThhMTZhMWM1MDY1MGI2ZTgyYzAgcmVsZWFzZTMxLW1haW50Cis3NjM5NCBmNzNkMTM3Y2ZiZDA0NmY3YTRhZGE2MTBlYzU4NTIyNGI3NDkzYmI3IHJlbGVhc2UyNi1tYWludAorNzYzOTUgODc5M2ZmOGY0ODI2MWQ5MTQ2ZDQ4ODBjYzRmNWVkNzYxZDFiZjIzMyBsZWdhY3ktdHJ1bmsKKzc2Mzk2IDE2NmY3YTNiNzNmYzYwYzYzNmQ2NjJhYWJhMDJlZjlmM2RhNzRiM2EgcHkzaworNzYzOTcgNDJhYWVkYWVmYmNiNjVlMGI5NTY5ZTc3NWY2YzUyYmRjMGY2MGUwNSByZWxlYXNlMzEtbWFpbnQKKzc2Mzk4IGQ1Nzc5ZTE1OWRkYjFhOGRhMjFjN2NiNzZjN2E1OGZmZGQ2YzBiYmMgcmVsZWFzZTI2LW1haW50Cis3NjM5OSBjMGRmYTliZDVjN2Y4MjMzYjgyNjVkOTJlNDhkMzRiMWNmMTZjY2FlIGxlZ2FjeS10cnVuaworNzY0MDAgNGI2YjQ5NDNkNjlhNDBiMGI0OWE5MmMzZWRiM2RhZTE0MTE3M2UyYSByZWxlYXNlMjYtbWFpbnQKKzc2NDAxIGY1N2YwYzZhYWU5ZDgyZDgzYmNjZmQ5MTRjNTQwNjYzZDQxZmE0MTcgcHkzaworNzY0MDIgYWI1YjdlMGE5MTMxYWRiYzNmYWFmZmI4ZGI3ZDg4YjAwMjVlMDVhZiByZWxlYXNlMzEtbWFpbnQKKzc2NDAzIGMwNzlmY2JmYzc2MTdiNmI5ODFlYzZjZmVkZmY0OWU4Y2U2ZWJlMzMgbGVnYWN5LXRydW5rCis3NjQwNCA1YjU0MzI1ZWY2ZjU3NjMxMzhhY2VkYTk1MTEyZjFiMzJmZDQyZTA2IHJlbGVhc2UyNi1tYWludAorNzY0MDUgMzk5ODljNjZkYjE3OGEyMThiNTkxM2Y4NTczMzhlYzI3OWZlMjk3NSBweTNrCis3NjQwNiBhOTJlZjEzNmQ5ZDBjZmY5MTZiODNhYTUxY2RlMjU5Mzg0MjhiYzc3IHJlbGVhc2UzMS1tYWludAorNzY0MDcgNGZhZTgxNjhjNDNiMTMxODhlMzBjNDExMDhkMDUzN2IyODRhN2ViZSBsZWdhY3ktdHJ1bmsKKzc2NDA4IGI5NmFlM2Q4YWRmZDEwOGFiMzdlOGIwMjEyNzA4M2Q4NjBlMWI5MzUgcmVsZWFzZTI2LW1haW50Cis3NjQwOSAyZGQ3OTQyZGNmZDUzOTBhNjZmOTMxNTQ4YWY4YjcwMzU1YjI0YzNhIHB5M2sKKzc2NDEwIDI0ZDFlMDZjNjI5YzFhODYwZjlkYzVmNWUyMjNiMThiMWRmOGY4MzMgcmVsZWFzZTMxLW1haW50Cis3NjQxMSA2N2MwZjkyY2U1NWM3N2JhMmU2Y2Y3ZWFkYTQ0ZmFiNWY1OGJkZmViIGxlZ2FjeS10cnVuaworNzY0MTIgYTRkOWEzZGJjNTMzZmIyZWYyZTFmZDcwYzVhMmU2NDM2ZjMyNGEwOCByZWxlYXNlMjYtbWFpbnQKKzc2NDEzIDk4YWIzYWRiMDQ1Y2UyNmVhNmRmNjlkNDE2Zjk1YjA0NDAwMGM4OTMgcHkzaworNzY0MTQgMjI1NGM3ZGE5Nzc4ODA0NjMzMGVkOTFkNDRjOTBkYWVlODdiM2Y5NyBweTNrCis3NjQxNSA4MjM4MDgxNmU3ZGIzYjI2NDcxYzA2ODA2NTFiYWE5YzgzOTg2ZDU0IHJlbGVhc2UzMS1tYWludAorNzY0MTYgZWQzMGJjZmZhMTQ2NzJmMGUzMzQ5ZmMwNzdjZTU5ZGU3N2IwOTYwYSBsZWdhY3ktdHJ1bmsKKzc2NDE3IDZhYTUyOGM1MDEyODRjNWY3YzJkMTViMmEzOTY0MjEyMTdiNzM0N2UgbGVnYWN5LXRydW5rCis3NjQxOCA0NzViZjhiNTg0YTkyM2IwNDhmMjM4NzJmM2NlOWRiYjZkY2YyMTg0IHB5M2sKKzc2NDE5IGY5ZjM5NTBiNWVjNzU2NTIwNzFlNTE3OTkyMzQ4MGJjMWQxYzkxMDAgcmVsZWFzZTI2LW1haW50Cis3NjQyMCAxYzM1Mjc1MGViZjIzZjk1MTY2ODYzNmY4MTUzNzhkZTM4M2RhNDY3IGxlZ2FjeS10cnVuaworNzY0MjEgZjJkYTQ4OGI0YjdiMzkzNTZlMzQwNjdiZDJlZmRiNTQ3NTdlMmE0NyBweTNrCis3NjQyMiBjZDViMTVjMjlhMzk2ZWU5OWNkMGJiZjg0NGJhMzUzNGIzM2ZlYjg1IHJlbGVhc2UyNi1tYWludAorNzY0MjMgNmUzNzAwMTNmM2EwYTU5YTc5OTQ4YjYzM2IyZWU1YmYyOGNhZTNiNSBsZWdhY3ktdHJ1bmsKKzc2NDI0IDEzNzExNWUzOTVkOGRkZmI1N2VmZDQyMDRhZjRlMTE2YWRiZDZmODAgbGVnYWN5LXRydW5rCis3NjQyNSAxOGFmMGNlMGE1OGJkOGI2YmJjNzJhMjgwYTFjZGNiOTg5ZWEwZjBjIHB5M2sKKzc2NDI2IGVhZWJlMjQ2MDM3N2M1NWJhYzIwNzg5NWFlNTliZDI2YWEwMDU2NjQgcmVsZWFzZTI2LW1haW50Cis3NjQyNyBmZDZlMmFiYWUxNGU0MmY1MmZmNjg1ZmIyZDY1MDQ0MzVjMTI0ZjMxIHJlbGVhc2UzMS1tYWludAorNzY0MjggZTJiMmNlZWZhODJhY2ZkYjVhOThiOTQwYTNkMDQwMDMwOWNiYWZlYiBsZWdhY3ktdHJ1bmsKKzc2NDI5IGU4M2UzZGI2MmZjNzhkNGUzZmRhYThmMzY1ZGU3YzMzMjdjNGQ3MmUgbGVnYWN5LXRydW5rCis3NjQzMCBlM2M5OTRjMjlhMjI5MjdhMjk4NjljYjQwNWJhYTY1YzAyYzVhMWZiIGxlZ2FjeS10cnVuaworNzY0MzEgYjgxZDYwMTEwZjg2Zjc3ODEyMjllNWQwM2JkMDEwMjMxYTA2YmUyNiBsZWdhY3ktdHJ1bmsKKzc2NDMyIDJlM2VjM2JiNGJlN2NiZmQyYTZkZWJlMTAyNmFmMmZhNTMyNzM1NmUgbGVnYWN5LXRydW5rCis3NjQzMyAxZDkyM2ViYjQ3NjAwZjhhMzFjNjg4YjFlZmI2M2ZkZWEzYzJmZTNlIGxlZ2FjeS10cnVuaworNzY0MzQgN2E1Y2I0ZGVjZjZmMjhlOGE1ZjA5ZDkxNGFjYmUxZDI4N2E1Y2NhOCBsZWdhY3ktdHJ1bmsKKzc2NDM1IGI4YmQ1MzYwODQxYmFhNWRlNWI5ZmMxMThkY2QzMjMwYzVmOGU2NjUgcHkzaworNzY0MzYgNWFlZWVlMGVhZTVmY2Y1MzZiZTMzZDg2NzBmYWIyNDZjOTgyODE2NSByZWxlYXNlMjYtbWFpbnQKKzc2NDM3IDYzOWJhMDM2YzIwOTQ4YzQ4OGViN2Y5NDM3YTIzZjZjN2YxMmJjYzQgcmVsZWFzZTMxLW1haW50Cis3NjQzOCBhZjg4YjFkMjViZjI4ZWJjOTU1MWU5NTE4MDE5YzZhZTEwMGRlNDYwIGxlZ2FjeS10cnVuaworNzY0MzkgNTEzYzRiMTU3NWYyNjcwMmJjMzFmZWZlNzA0MWZmNDVhZDkxODYxMSBweTNrCis3NjQ0MCA0Yzg3MDhhNzkxZTYwMzJlMDI4Y2Q5NTRiNDQwNDk0N2Y2ODk2YzQxIHB5M2sKKzc2NDQxIDRkNTU2YzI3OTI2YTYxYzczMjc2N2FlZjIwMjMyYjJlMjlhZjE3MDMgcmVsZWFzZTMxLW1haW50Cis3NjQ0MiBkY2JjYzhjMTQxNzkzNTAwNzc3NTRkNzMyZTA2Y2VkNGMxNjQyZjVhIHRhcmVrX3N5c2NvbmZpZworNzY0NDMgNGUyNzBlYWI0NTJkZjMwODE0MGE5YjVkNzZjMDU2OTNmNTAxNjc0YSBsZWdhY3ktdHJ1bmsKKzc2NDQ0IGQ2Zjg1NTJmY2U3OWZhZmQ0YWExZTNjODZlODU2Y2NkMDJiMzAxZjEgcHkzaworNzY0NDUgYmM3NjQzYTdhNWU3YjI4N2ZmM2M5ODc2MzcyY2I2ZGI4MDZkMjhiNiByZWxlYXNlMjYtbWFpbnQKKzc2NDQ2IDBlZWIzYTNlNzllZjg4OGY3MmE4YmE3YTMxMGM4OTdkN2UyZGVmMTEgcmVsZWFzZTMxLW1haW50Cis3NjQ0OCBlYzUyYzQxOWI4MjRlMWM1ZTA4ZjNhOWJkNDc4MmNlMDY5MzllZDJiIHB5M2sKKzc2NDQ5IDM3M2Q0MmYyNmU5NjZhN2RhODA0OTE5NmUzNGQzNWEzNjI4NjhjOTEgcmVsZWFzZTMxLW1haW50Cis3NjQ1MiBkZTA3ODgwYTUzZmZhNzkwNGIzM2UzM2RhMDY1ZjM1ZWYyMTAxYjI3IGxlZ2FjeS10cnVuaworNzY0NTMgZDZjZTE4YWQ4NDY3MTY5ZTE4MmVhN2UyMTVkOTA5YjQwZThmMzYyZCBweTNrCis3NjQ1NCA1NmYxOTA4MWQ3YmNlOTdlY2QyYWMwYTVmODJlMzE3NGZlZjQ5NTdlIHJlbGVhc2UyNi1tYWludAorNzY0NTUgZTFkNzMyNTI3YzdlMzQ0NTdiNzlkZjA3MDYwNGNiOGNhNzllNGUzYSByZWxlYXNlMzEtbWFpbnQKKzc2NDU2IDI0OGM0ZmE1ZmUwYzk4Nzk1YTgzNjFjYmIzODUzZmFmMmNkYzhmNDQgbGVnYWN5LXRydW5rCis3NjQ1NyAwODY5ZTFhYjU3MmUzN2MzMzU0OWEyYmQ3NzIxM2Y2NDdiYjQzM2Y4IHJlbGVhc2UyNi1tYWludAorNzY0NTggYzQ4ZmQ2M2MyZjYxYTA4YjAyMmQyN2EzM2ZkMTI4NDA2MWM1MGZhZiBweTNrCis3NjQ1OSAwOTg0MDk5YTk0MzEzYjJlZmViZDUxMGFiYTUxMGExNmI1MDY0Mjc2IHJlbGVhc2UzMS1tYWludAorNzY0NjAgNzA0MjE0YjljYjc2Yzc3M2QxMDk1ZTc1MDFjOTZmNTY2MTk3NDhkNSBsZWdhY3ktdHJ1bmsKKzc2NDYxIDI2MzllYTdiOTJlZDA0YzY5NmU0ZDc1MGQyMTMxZmU5YjkxZGFlZmUgcmVsZWFzZTI2LW1haW50Cis3NjQ2MiBhZGE1ZjZlZWUxY2IxMjFkNDM3MmJhMmQzOWJkY2I3YzhiNGExZTYzIHB5M2sKKzc2NDYzIGMyZWNjYTVmZjY1OTNjZGIwOWI0MGM0MTUyNDU5MjdiMTRlOTUyNWYgcmVsZWFzZTMxLW1haW50Cis3NjQ2NCBmNTU0ZGZmZjc0NTA1NzY1NmY1Y2E3MzIwZDg3ZjZkZTM2YjUyNTViIGxlZ2FjeS10cnVuaworNzY0NjUgODA4ZjljMGQ0YWM0MDBjYmY1YjIwMzljMDM3YjFjYTRjYTRmNWZjZCBsZWdhY3ktdHJ1bmsKKzc2NDY2IDVjZDk1ZTU3NzcyYzgwYzdmYmI3NWVhZTViZWY3OGJjNzQ2MThkYzAgcmVsZWFzZTI2LW1haW50Cis3NjQ2NyBjOGQ2OWEwNmIzM2JiZjYxNjQ5YTkwZDM2NzcyMWI1Y2U3NDYyY2ZkIHB5M2sKKzc2NDY4IDgxOGNkNDBkZjg2NWYyNjc4MzEzMGQ1MDNhMmI2NTA1NTIxNTc2NzkgcmVsZWFzZTI2LW1haW50Cis3NjQ2OSBhYTk2MjdjNDEyMjJjYWEyYTRhMmZiNmMxZDA4ODA3MjFlNjMzMzdmIHB5M2sKKzc2NDcwIDNhMmIxNDlhZTY2ZTgxNWYwODNmMjM2YzAzMmNiOTk0MzUwMTkwODkgcmVsZWFzZTMxLW1haW50Cis3NjQ3MSBmMDE3YTM0ODY0ZTJiYTUzNzAyOTg2OWQ3YTg5ZjQ3ZDZiNGFhOWE4IGxlZ2FjeS10cnVuaworNzY0NzIgYTdlYjFhZTRlOTE5MDRiYmU0OWZjM2M0ZWFmNGUxZTBmZjU1MjZkNSBsZWdhY3ktdHJ1bmsKKzc2NDczIDMwMTdkODJmMDc1YWNkYjExNGE2YzllYjBlNTE2MzgyYWUyNDU1NjcgcmVsZWFzZTI2LW1haW50Cis3NjQ3NCAwOGEwYzk1ODhmMTNmMGY1ODVjNzlkMTFmMjA2NmUxNjViYTQyZjlmIHB5M2sKKzc2NDgzIGI5YjY4M2VlZGVlMTE2NzkwYzAxZDc1YjU1NjFiZmYwMTAyZTgwYzYgbGVnYWN5LXRydW5rCis3NjQ4NCA1MTE2ZWY3NzlhODAxZjFjZGIxMmFiMmU3OGVmNmUyNzQ5OTUwZTEzIHJlbGVhc2UyNi1tYWludAorNzY0ODUgMzU3YWQ5MGI4MTE0Y2Y0MGY3MmJjODg4Y2VlYzdhNjRmYTg2N2NlYiBweTNrCis3NjQ4NiBiN2ZiZWYwNzdlYWUxM2NiNTBiZmFlODhhYmM5NDZmY2FmOTk0N2Y0IHJlbGVhc2UzMS1tYWludAorNzY0ODcgMzk0OGI0YzcyOWQ3YWU5NGFkNzVmNjQxZmM0M2ZjNzRiNjY5ZWJlMCBsZWdhY3ktdHJ1bmsKKzc2NDg4IDUxNmM2MjJhNGY5ZTEzODJjMjZkMzc2N2IxNzA5ZjhlZjM4MzAxZTEgcHkzaworNzY0ODkgMzM3ZWJiODI5YjhjYTJlMzc3MjE0MWE4NGEzZTc4NGM5MjVmM2I2OCBsZWdhY3ktdHJ1bmsKKzc2NDkwIDlkY2EzODQ3NDg1NDljODZkODQ2ZDFlNWVkMzMwYTYwOWFlNTZlZTggcmVsZWFzZTI2LW1haW50Cis3NjQ5MSA1MzVlMDhjZTQzZjU3OWNjNmU5NjRlN2JlZTgwYmE0ZmY3MWQ1NGQ3IHB5M2sKKzc2NDkyIDU4YjExOTFlNDUxZmEwMDNmZTMzOWFlMzk0NTUyM2MwZWRhYmVkMjYgcmVsZWFzZTMxLW1haW50Cis3NjQ5MyA2ZjA0OGIxZTUyODA2MjMyM2Y5ZTUxYjkwZjY4ZjY0OTc5MjdhMGI4IHJlbGVhc2UzMS1tYWludAorNzY0OTQgNzY1OTA5ZmM3ZGVjOTZlM2VlNGUxMTgzOTk4MTY2MDVmNzg1N2E5OCByZWxlYXNlMzEtbWFpbnQKKzc2NDk1IGZiZWY1ZmNjYjBjODhmOWNmYmQwNzU3NjUxMDVlMjQzNTkzNWMwMmIgbGVnYWN5LXRydW5rCis3NjQ5NiA4M2Q5NGU3MmYwMWNmZmEwYjI2MWRkNTVjZjlhYTQ0NGVkOGZhODFhIHJlbGVhc2UyNi1tYWludAorNzY0OTcgZmI3OTk0YjI5MTAxNzNhNGM3YWUxNDIxMWIwN2IwOWFkY2FhOWJmMiBweTNrCis3NjQ5OCAxN2U1OTBiZTRjNWFhMmE2NjhlZTQ5MWEzN2FiMTk4NGY0YWVjY2U0IGxlZ2FjeS10cnVuaworNzY0OTkgY2IzZWFjNDIxY2Y5NmVmOGUxODM3NGExZTIyZjIxOGNhMmEyMjlmYyBsZWdhY3ktdHJ1bmsKKzc2NTAwIGI1MWZkYTc1NGY1YTVlMzE3MDRiM2ZlMzEzYzlhZmE3N2Y4MjJmZGMgcmVsZWFzZTI2LW1haW50Cis3NjUwMSA5ZTc5YTZhZmEzZjUzMTAwYjZhYTQxYThhZDY4MWUzZmYwMWNjMzY5IHB5M2sKKzc2NTAyIDJjZDFmYjEwNDIzMzQ4MWExMGU1NzBmNzY5N2NhYjg0Mzg5ODc5ZjQgbGVnYWN5LXRydW5rCis3NjUwMyA5MDI4MjgwNGNkNTAxNjdlYTBjMjhiNDliZmJjOTE0MDY5M2Q4Yzk5IHB5M2sKKzc2NTA0IGFkNTE2OWUwNWRjM2IzOGE2OThmZDYzOTRlYWNhZmMwMTUwNzc0ZmMgcmVsZWFzZTI2LW1haW50Cis3NjUwNSAwMThiMjBiMDM5YTg1NGI1YTE2ZWNmODBmYjczNWM3ZjE4OWZiYzFiIHJlbGVhc2UzMS1tYWludAorNzY1MDcgNWVhMjI2ZDMyZjZkNzdlNTgxOTdlNTZiM2UzYTVkNmM2ZDk4YzlkZSBsZWdhY3ktdHJ1bmsKKzc2NTA4IDFkMTU3ZTJjZTk0OTNmNDgzNDg2ZmFkMjkxMzFlNjc4OTQ4ZjBjYmEgbGVnYWN5LXRydW5rCis3NjUwOSA4NWNkOTM1MjU1Njg3ZDNiODAzZjQ5ODY1ODQ0MzQ1MzYyYzU3MjM0IGxlZ2FjeS10cnVuaworNzY1MTMgYzc3MzJmODg5YzQ1NDhhZTcwY2Y5YmQxODhlMzNhYmI4ZmRkM2I3OCBweTNrCis3NjUxNCAwMjJjZDBmM2M1NThlZGRlMTY5ZjZiYTU2MmM3ZDE0MTUzNTZjYjQzIHB5M2sKKzc2NTE1IDBkYjY3MTUzZDI1ZjE0YzNlOTdjN2Q4YmYxMDk2Yjg5MWJlMDY4OTcgcHkzaworNzY1MTYgMTM4NmQwZTllMGZjN2E0ZDYxN2Q4MGIwYmRhYjFiNDBkZTYzZDQ3NiBweTNrCis3NjUxNyA0MWJkMzEyMzg2NGQ4OWQzNTExYmJiNzc1ZTVmZTQyZmZhM2VlZTZlIGxlZ2FjeS10cnVuaworNzY1MTggZTViYzM4MmNjZjc1YjFlZDhhMzBjYTdmYjVkMjQ4OGQyMzE2MzM2MSBweTNrCis3NjUxOSA1MDg2NTRjZWUxMzdhOGVkMTU4MTVhZTczMGVkZjgwYTE4Y2EwNDEwIHJlbGVhc2UzMS1tYWludAorNzY1MjAgZTYxMzNkMTU0Zjk4MTljNjQ5ZDhlYWRiY2JmZTQyZTQ4Y2YyMWUwNSBweTNrCis3NjUyMSBmZWE1MzI1OGFiN2ViZWVkMTA4ZGM5NzFlYTkzNjJhYWU0ZmZhZWU4IHJlbGVhc2UyNi1tYWludAorNzY1MjIgZGY4NmM0MjBlOTdhMGNjMTU3YzY4N2U4ZjNiODJhYzJjMDVlZDdkZSBsZWdhY3ktdHJ1bmsKKzc2NTIzIDg1ZTFlMTNiNDk4YTcyYzAzMmQ4MGQ5MmY2YTlmZTU0ZWM2OGY4YmEgcmVsZWFzZTMxLW1haW50Cis3NjUyNCAyZDM4OGQxYTgzZjQyZTI0NDZhZWY4ZThjYzFmZTRmMjQ0NjlhZDk3IHB5M2sKKzc2NTI1IGExZDE2NmFiMThjNDRiYTYzNjNhY2NiOWVmMmZmYTRmMDQ0ZjM4YzAgcHkzaworNzY1MjkgYTY5ODFmNGE3NGExZDg2NmMwOWI1OWVlN2NhMDYwM2M5NGVjMGFmZiBsZWdhY3ktdHJ1bmsKKzc2NTMwIGE4NTQ3MWM0NzUxNDhkZjA2NzdhOTEyMTlmMTY2YzhiOGQyMTVkNzcgcHkzaworNzY1MzEgNjFlNmNlNzE4NTAwODljMGQ0ODI5NjhkMWFhMTdiMjg4MjRhMjEyMyBsZWdhY3ktdHJ1bmsKKzc2NTMyIDNmNzFlYmU5MWY5MDU1MDVjOWU1MGU2NTZiNjkwNTg4NWYwOGEzYzYgcHkzaworNzY1MzQgYzU0NThiYTM4OWQ3NjU5ZjhlOTEyMTQ1ZjhjNDRjZTA3ZjU2NTVjYSBsZWdhY3ktdHJ1bmsKKzc2NTM1IDdiNzRhYmI4MDM1NjhkYmU3ZjUzMDhmOTMzYWIyYzk0MzlkNWQ1YTcgbGVnYWN5LXRydW5rCis3NjUzNiA3NDIzMGU1YWIzNzM5MDU1OWM5YTQyZjIyZTMxNTdmZjcyZjg4ZmIzIHB5M2sKKzc2NTM4IDQ1MjFmNTk5OGU3YzYyZTk0MTM2MDM5OTgzOWZlODNlOWZjY2FkMTIgbGVnYWN5LXRydW5rCis3NjU0NiBhOGFiNjNmZDMwOTg5N2MwMDM1ZDJjMzczYzM2ZjAxODdiMTA4MzM4IGxlZ2FjeS10cnVuaworNzY1NDcgYzkzNjkwOTJmZWZjZDQ0NWI5YzU2M2RlZmZhMmMxZGYwYTYwZTQyNyBweTNrCis3NjU0OCAxMzc0OGYzZGRjN2I1NDliNGViNmQ2NmE2NTk5NTIxZDY2NDRmMTliIGxlZ2FjeS10cnVuaworNzY1NDkgYzdkN2Q1Y2E4NDQ2NGYyYWNkN2MwNGRhZDFmZjU0ODlhNWZmOTEzNSBweTNrCis3NjU1MCA5ODhkYjBiYmVlM2EzZTBhOTQ2NjZlY2Q5MDQxMGQ1Yzk0OTZjNzdlIGxlZ2FjeS10cnVuaworNzY1NTEgNjcyMWQzM2YzY2QxZjNhYzZkZDE2YmYyNDhjYmFlNzI3ZmI3N2JkMSBsZWdhY3ktdHJ1bmsKKzc2NTUxIDUzNjY5Y2JmMGVkMmE5YjI0OTczM2VmMDY5ZGUxNGIzN2I3MTVlYjggcmVsZWFzZTI2LW1haW50Cis3NjU1MSA3MjZkMTJkYmExZjYwZTNkYjE0ZmYyNDQwNGYzMTZjYjgwYTU4ZDdmIHB5M2sKKzc2NTUyIDRlZjdiM2UyZDZhOGIwYjBhOWI3YzhjMmU5OGYzNDQ5ZTZlMDNkMmYgcHkzaworNzY1NTQgNTI3YjdjMDc1ODQ5ZmJmNjQ1ODdhNTQ2YzM0MjcyZDk5YjZlNGMwNiByZWxlYXNlMjUtbWFpbnQKKzc2NTU1IDU3NGRkOGFjYTkxNGU0NDNiNjY3NWVlN2I1YjZkZTkwODg1ZjE5MzQgcmVsZWFzZTI0LW1haW50Cis3NjU1NiA2ZTc0MDNhZDUzMzVlYTRkMTJkMjZlMWFlYzAyNzUzYWJlNjViY2UxIGxlZ2FjeS10cnVuaworNzY1NTcgZmRlNTEzMGJmNmNkYmQzMmM5ZjRhYThmNTNlMjBhYmJhYjIwZjM4MyBweTNrCis3NjU1OCAzMzk4NjY0ODYzMGJjNGMwOWYwMWZkYTE3NGQxYmMwMjQ2MWQ2ODJiIGxlZ2FjeS10cnVuaworNzY1NTkgMTgwMjRkMjk4NjljYjFmNWQ1ZTA5MDFlYzIwYWJiYjQ3YmVkNmY4ZCBsZWdhY3ktdHJ1bmsKKzc2NTYwIGM0YzNmZDU5M2IwYWMyOTZkMzg1MmFhNmM0ZTBhNWQyODdmYTRiZDUgcHkzaworNzY1NjEgMjk3ZGY3N2JhMzk2NDcwNjk2ZmE1ZWIyN2Y3ZmFiMTgzYzE4Nzc5MSBsZWdhY3ktdHJ1bmsKKzc2NTYyIDY5NmQ5NjE1YTIzODNiOTUzYmFhNjc2ZDIyNDExNGRiYThiMzdlZjUgcmVsZWFzZTI2LW1haW50Cis3NjU2MyA1YjYwN2NkOGM3MWJiNThkYTNmYzg3OTZlNzdiMTAzYzIwY2ZiODNkIHB5M2sKKzc2NTY0IDNkMTE1NzgyZmUxYmIwNGYxMWE4M2UzNGQwYWU0NzM0M2UyN2E3ZDAgcmVsZWFzZTMxLW1haW50Cis3NjU2NSAwYzE5YmU0NTBlNjdhMDFlYzRhMmQ2ZjEyM2Y3YTRjN2IwZTU4ZWY5IHJlbGVhc2UyNi1tYWludAorNzY1NjYgY2I4MzYzMDFkYjYwNTdlZGRjZTQyOWIzMjBhMGQ0NDQ3MGM5NzNiYSBweTNrCis3NjU2NyAzZDc3ZDdjMTZjOTA5Nzk2YzdmMmFmMzdlYjFlZmJkZjg4Njk3NTIwIHJlbGVhc2UzMS1tYWludAorNzY1NjggMTRlZTc1Yjg2YTVmMDQxZDUzMWJjYjQxZTYyOTQ3YmRlZWNmYzdkMSBsZWdhY3ktdHJ1bmsKKzc2NTY5IDkzNmI2ZjA2NTU5MzhiZWMwNDI3YzM5YTJmMjg2NzM5NjMzZDg4MDcgcmVsZWFzZTI2LW1haW50Cis3NjU3MCA5ZmQ4ZTk1YjRmY2UxN2RiMzU1ZWZmYzExOWQyNzE4Y2MyMTgwNDNiIHB5M2sKKzc2NTcxIDgzYzcwMmMxN2UwMjE4ZGY5NjU5MmViMjdhOTdhOGJhNjNjNzQ3ZTAgbGVnYWN5LXRydW5rCis3NjU3MiA5MTZhM2QzNTA3NDFjN2Y2Y2ZlODg2MDg4MmI0MDkyOWJkYWQxYjBhIHB5M2sKKzc2NTczIDE0OWMxYTdlNzJjMTU0NzJmMjliOTI4MGRjZjc4ZmM5NTUzMjRiYTEgcHkzaworNzY1NzQgNGJlZDc5NmVlMGQ3ODY5YWQyZmYwMDExN2VlZDFjZDk4YjNhMTdkZSByZWxlYXNlMzEtbWFpbnQKKzc2NTc1IGUwNmMzZjYyZmNjOThjMDEyNmEyMmEwZmRmMWJiNjZlMmExNWQ5NWMgbGVnYWN5LXRydW5rCis3NjU3NiA4MzM1MmVkOTIyOWEzZjYzMGEyMzgxMjMwN2M4YTk0N2U1ZmRhOWY1IHJlbGVhc2UyNi1tYWludAorNzY1NzcgYjBmYzU0YzVkMjM0ZjdhNDkwZjk1NTA0OWFmODc1MDVlMjdiMjkyNyBweTNrCis3NjU3OCBmMmUxYWM3NTBmMTE4NTM0ZWQwMjg1OTEzZWYzNWQwYzE1NTg5NjQ4IHJlbGVhc2UzMS1tYWludAorNzY1ODMgOTMwYWVkZWQ5MDBkYzlkN2E3Mzk5YTNkZDZmMjEzODdmYzlhYWY1MiBsZWdhY3ktdHJ1bmsKKzc2NTg0IDlmYjZkNTQxNGRkODgyZTgzOTk2NTRlZTBlMDAzZDdhMTFhY2M5NjggcmVsZWFzZTI2LW1haW50Cis3NjU4NSAwZWFmNWM5ZWRkNzI4ZjI3Yzk4ODIzOWNiYzIyYzkyMzk5MjNkOGFiIHB5M2sKKzc2NTg2IDkxNWEwNDRiZTgzNGNhZDJkZDRjNDViMTJmY2RjODVhNTM4ZDdkMTcgcHkzaworNzY1ODcgZThkNTUwYTg5ZjBiYTExYTY1MzVkYjcxYThmMzM0ZGNkYjQ1YTBkZiByZWxlYXNlMzEtbWFpbnQKKzc2NTg4IGE5NDkyNTVkNDUwZmJhMTY2ZGQwZWFjYWE0YThlMDVlOWRjNzZlNDcgbGVnYWN5LXRydW5rCis3NjU4OSA2Y2Q0NWY1Y2FiNThhNzNjOTQzNmIxNjcyOTQ4MWM0ZDU1MDlmMWIzIHJlbGVhc2UyNi1tYWludAorNzY1OTAgZTk2MDY5YTEzMjdmOTM2YjVlNzgxZjQ5NDIxZjQwZjE1OTRmNjYxOSBweTNrCis3NjU5MSAyMThhN2ViNDBkMjZlMzgzNGEwMjU5YTgxOWMxOGE4ZTI2M2M4ZmQzIGxlZ2FjeS10cnVuaworNzY1OTIgZDUxMDEyZmUwOWIzNDI2MjA2ZDAyM2FlMzg3NTRjNTRhNjU3NTUxZSByZWxlYXNlMzEtbWFpbnQKKzc2NTkzIDZiZGVkZTE4ZmM4MGRmNmQ2YjZmOGI3YTkwZTc1ZTA2NWIyOWNkZGIgcHkzaworNzY1OTQgOWU1MWExNDk5OGEyYTYwMWJiY2EzNTM1OTI4NzgyOTUxN2E2Mjk5NCByZWxlYXNlMzEtbWFpbnQKKzc2NTk1IGYzN2Y2YjliMjI0YjA3OTA1ZWQ4ZTI4ZTVkYmY0Y2Y2ODAyMjE5ZTIgcHkzaworNzY1OTYgNzRhYzhjMTI3YTZmZjE2ZWEwMWFlMTFlZWEwODlkN2Y4MzU2YWQwNyByZWxlYXNlMzEtbWFpbnQKKzc2NTk5IDFmZjJjM2VkYzEzY2U4NzJmYjFiY2Y2ZjYwZDVkMjM3MTZlNTY4ZjAgcmVsZWFzZTI2LW1haW50Cis3NjYwMCAyODE2NjUwZDc2ODhjMzAzODRmNzNlOTgxNTNlODc5NmY4ODA0Y2FhIGxlZ2FjeS10cnVuaworNzY2MDEgODRlM2QzNmRhNGMyNzBjNmVmMzZkMzk4ZDI4NDg5YzQ3Yzg1ZDgyYSB0YXJla19zeXNjb25maWcKKzc2NjAyIDBjZjk5MTU4ZmE2MzYwMDE3MjdmZjg1ZGJjMDNmZGExYzAzNTI5YjMgbGVnYWN5LXRydW5rCis3NjYwMyAzMTVlNmFlNjRiZWY3YWNkODUzOWUwODRlN2Y2ODVlNGRjYzZiNTAwIGxlZ2FjeS10cnVuaworNzY2MDQgZmYyYWVmYzk3ODgxZjI1ODQ0MzVmYTExNWZiOGM2MzU4NDZjMWMzOCByZWxlYXNlMjYtbWFpbnQKKzc2NjA1IGUzMjBmODhhNjVjOWFjYjM4OWY2Yjg0ZGI5OTkwOTM4ZTFjZWQwNWMgbGVnYWN5LXRydW5rCis3NjYwNiBkZGFiM2RhOTQ3M2RiNTg3NjI1M2MwYjE3ZjgyZDU2MDJjNWRiMDY3IHJlbGVhc2UyNi1tYWludAorNzY2MDcgODg5NmM0ODQ3NDIzZDU4YmRjMWJkZDMzYzFiNDJlMWJkZWM2ZmFhNiBweTNrCis3NjYwOCAwYTYxMzc5NDRlNjFhMDc2N2RjNmE1ZGZkZmNiZWM3NGZjYThhN2E0IHJlbGVhc2UzMS1tYWludAorNzY2MDkgNjUzNmExY2Q0N2NkM2VlODFmNTc1ZTM5NzRmNzg2ODM1YTYzY2Y3YyBweTNrCis3NjYyMyBkOTllZjQ2NGVmMzNmZWY2MzBjYTg3MmZmN2Y4N2Y0NTM5NzJlODJlIGxlZ2FjeS10cnVuaworNzY2MjQgNGQ3Y2RmN2E2Yzc1ZGI1Zjc3YWY4YmVmYTAxNGUyZmI1NGVmMGU3OCBweTNrCis3NjYyNSAxYjJhZmNjM2NjZjM4YTgzYjcxNTNhYmE4YWVlM2NmZjAwY2Y5MWJkIGxlZ2FjeS10cnVuaworNzY2MjYgNWQyYzlkODg3N2RkYjlhM2FlYjE1MTNkZTZhNTFkZDRmNjg1YTA1YiBweTNrCis3NjYyNyAyODAzNjk2Nzc2MDJjNmJlNjkzNmYwOGM0NDRmMTI1ODdlNmJjODRlIHJlbGVhc2UzMS1tYWludAorNzY2MjggY2Y5YzY0OWRjYzRmNGYyMTkxNGFhNTA0MDk0MmI4OGQ4MGRkNTE5YiBsZWdhY3ktdHJ1bmsKKzc2NjI5IDhmNmVlZTQyZjgxMGRjZDYzMGNjNGNjYmY2MzkxYjRkYzVmY2M1YzAgbGVnYWN5LXRydW5rCis3NjYzMCBjYmI2ZTkyYzFhMGRkMjU0MTliNDM1MzlmMDgxMzFhZDAzZWY2ZTczIHJlbGVhc2UyNi1tYWludAorNzY2MzEgZDkzOThiZGQ0MTNhMDMyNTMyYTVmNDM0YmFiZjU3OTkwODgzYTlkOCBweTNrCis3NjYzMiAwZmY0NzAzNGM2OTFjYWIzYzI3YjhiNjU1OThmZTI4NDNkYTRiYTk1IGxlZ2FjeS10cnVuaworNzY2MzMgZDY4YTYwMDUyYzY2NTA2NWQ3NTYwMmU3YzExNzFkYjNhZWI0MjUzNiByZWxlYXNlMjYtbWFpbnQKKzc2NjM0IGI0MDUxMmNlYzJkNmM5ZjAzN2QzN2VjYmViNzY3ZTNhZWIzM2ZiM2IgcHkzaworNzY2MzUgYWNmZDU2MTViNTJjMTRjODJjYTE0OGM4ZTEwNmRjMjQ4ZjllNThkNSByZWxlYXNlMzEtbWFpbnQKKzc2NjM2IGE1NGMxOTgwMmFjY2NhZmE5OGQxZjU2ODRhODUzYmQ4YzZmZDI0YWUgbGVnYWN5LXRydW5rCis3NjYzNyBlOWRhYzNlZmYzMTc0M2I1MTUyZDg3NGUwOWU4NTRhYWRjYTdhMWU3IHB5M2sKKzc2NjQwIGQ3Y2M5MDE3YWM0YzY2MDE5NWUxNTQzMzIyN2JkYTE0MWVlMDAxNmQgbGVnYWN5LXRydW5rCis3NjY0MSAwYWY4MTgxZGE1Y2U1MTUxNjE4Y2E5ZjU4MzcxYjIzMGRkY2I5ZWI2IHB5M2sKKzc2NjQyIDI2MmEyY2VhZjA1ZjFjZGQ2ZWU4NzZkNTJlODhiYTJiNTA1ZTJhN2UgbGVnYWN5LXRydW5rCis3NjY0MyAxNWFjMzE5MWY5YmUwNWE0NWJmZTA3ZTdiZDYyNWNhMGM2ZmU0MjgzIHB5M2sKKzc2NjQ0IDgxODA5MjVjNzViYTUxOWNiNDU1MTk1Y2Q0OTlmNzliOTQwNGI0MmQgbGVnYWN5LXRydW5rCis3NjY0NSBiNzlkMDQyMGMyMDQwZDgyZDdlODY2N2E5NzY1ODIzNzE2NTRlYmY1IHB5M2sKKzc2NjQ2IDVjNjgxZWNjOTk2N2M0MWRmOWU3N2VjYzU0NDk3NTIwNTdmN2QxYzUgcHkzaworNzY2NDcgYjYwZjJiMmI5YzA0NTRkMzQxZWFiZTM1MTYzMmJlNGFhZTQwYTdkMCByZWxlYXNlMzEtbWFpbnQKKzc2NjQ4IDc1ZTFiOGMwNWY0M2Q0YWU0MmQ0YWUwZjQ5MWY2NTQ1Y2FjYTFjNDMgbGVnYWN5LXRydW5rCis3NjY0OSA5MTcwNThlZWE0NDAyNDk5Y2ZmMjY0ODE3ZDUzZGE3ZmUyMTIwZTQyIHJlbGVhc2UyNi1tYWludAorNzY2NTAgZmRmN2QwZWM5ZDA0MWI0NTFjNWIxNjAxZDA4Y2IwZWEyZjA1N2VkZSBweTNrCis3NjY1MSBiNWNkM2QyZWMwMjc2ZDI0OTAzODI2NWIwYjRkNjgxNjkwZDY1NjQxIGxlZ2FjeS10cnVuaworNzY2NTIgOTY5NTRlN2RkOWI2ZTIxYzY4ZTU1NTA4ZjgzYWQwM2Y5NjY0YjI2NiByZWxlYXNlMjYtbWFpbnQKKzc2NjUzIDExNDM0YjYyZDhjZDgwNjJmZWRhMTU4Y2ZmMzQ4MGI4NGI5M2VjODkgcHkzaworNzY2NDcgZWY5ZjQzMmU0ZDM5ZGNkOTQyMmNhYWIzOTE5YTZlZmM0MTNkZTJhYiByZWxlYXNlMzEtbWFpbnQKKzc2NjU1IDFmYTE4NTQwMzFhYTJhNDYyOTY2NjM4MTU5NDY0NzU4NmI4Nzg5Y2QgbGVnYWN5LXRydW5rCis3NjY1NiBmMDQyZGI0MzQ2MzgzOTJjOTM5NzY1NDRkYThiN2YzNWVjN2RlYTZlIHB5M2sKKzc2NjQ3IGQwMGVjMjYwZDYyYWE5YzliMWM0MDQxYjAzZTM3NmM1YzAyNDM2ODAgcmVsZWFzZTMxLW1haW50Cis3NjY1OCBiOGUyOTIzNjllYThiODJjZjE5ZTVjMjY1MmUzODllYzY0YWNiZGJhIHJlbGVhc2UzMS1tYWludAorNzY2NTkgZDMxYjMzNTBhYWRiZTYzMGUwYTI2MjdjMTJiM2MwZWJkMzZmNWI3ZSBsZWdhY3ktdHJ1bmsKKzc2NjYwIDFlZTFmYTdiZWNmMmFkMjNlZTI5YjIxYjQxNTczYmM0ODNmMDcyNDMgcmVsZWFzZTI2LW1haW50Cis3NjY2MSA1OThkZThlNmM0OGIzNDZjMmU2ZmU4MzU2NWZiNDQ3MjAzM2ZkMzA1IHB5M2sKKzc2NjYyIDlkZjRkNWI1MjYwOWNmZTRkYjVhMGNkNzRiYTIzZWViNDc4MzAzNGIgcmVsZWFzZTMxLW1haW50Cis3NjY2MyA3MzMxMzg4NTgxNTc0ZTdlYmIzNTBiNGNiMjZmNTcxMzEyMWQ3NDllIHB5M2sKKzc2NjY0IDNlYzZiNTFjZGJkZGJiNzE2M2YzYTlkNmZlMzY0MTgyNjlhM2U4NTEgcmVsZWFzZTMxLW1haW50Cis3NjY2NSAwNDBjMzhlZDIyNTE1Zjk3MzQyODcxNWE1ZjE0NDNkNzVhODc2Y2ZjIGxlZ2FjeS10cnVuaworNzY2NjYgZDU4N2E0ZTViYTVhNTk0OTFlMjUwMDlmYjM5MWVjMmE5NjMwNzM3YyByZWxlYXNlMjYtbWFpbnQKKzc2NjY3IDczYTkxMjU3MDNjMzJhYzI0NjEzZmM4ZjhkNjE4YmIxYWMwYzdkYTQgcHkzaworNzY2NjggNTVjODMyYmQzMjMzM2ExYWYwMDE3OTZlOWM0NTQwODFkZGQwYjNmZiBsZWdhY3ktdHJ1bmsKKzc2NjY5IGQzMDgwMjllOWFkMjJiNWI4ZmE0ODkxMTQ0NjQ3MzEwMDQ3NzYzYmMgcmVsZWFzZTI2LW1haW50Cis3NjY3MCAwZmU4OTg3NWVkZWYzNDc2ZGMyNGFmZTI5ZWI1M2IwNjBmYjEwMDEzIHB5M2sKKzc2NjcxIDAxNDhmNzZkNmZjZGZkOWYyNTE5NmFhYTAzMTRhYThhNzNkMWRmYTUgcmVsZWFzZTMxLW1haW50Cis3NjY3MiA2YmI2M2JlNzI5OWNiNjNjYmU0MjBkMzA5Y2I0Y2ZiZTMxYjQ0MjIzIGxlZ2FjeS10cnVuaworNzY2NzMgNGQ3NDQ1Y2EzMDUxNGVmZjk1Y2E5MjY0YmNjNmMzNWY3ZWNlNTlhZiBsZWdhY3ktdHJ1bmsKKzc2Njc0IGI0MTA3ZWIwMGI0MjcxZmI3M2E5ZTFiNzM2ZDRmMjM0NjA5NTA3NzggbGVnYWN5LXRydW5rCis3NjY3NSBiOWU5ZDU0MGM5MGQzMTI5NmI0NWIyYmZkMWI1NzkxNDY4MGFiNmI2IGxlZ2FjeS10cnVuaworNzY2NzYgMzZhMGRkMjFjNWI0M2Q5YWU4NjljYzNhNTZkNDA3N2EwMmRhOWI4ZSBsZWdhY3ktdHJ1bmsKKzc2Njc3IGUxOWRlOTQzM2E0YmZlOGNmYTM4NmMxYmI4NWUwNzRlYjlkMDRjNTMgcHkzaworNzY2NzkgMjU1MzJjOTkzMmRmZmE3ZDkyZTQzNzdiNTFkNzViNmY5YjdmZTUzMiBsZWdhY3ktdHJ1bmsKKzc2NjgwIGVhYjEyM2RjMTA3ZjY0ZGMyZmUxMWYyNzNkZWY3OGIxODQ0NGQ0NTQgcHkzaworNzY2ODEgMWM5MmZiYjNiYWYyNmFjNWZiZWE1ZjQ3NTQzYWI4NzU5YTJkZDIyNSBweTNrCis3NjY4MiBhZDE0NTU1ODIyNmI4N2FlYzcwMmYwOTQ4YWU2MTE4YTMyZmZkNDM2IHJlbGVhc2UzMS1tYWludAorNzY2ODMgNjg1NjU4MTdjMTdmOTViZTQ0MWFjN2M5MDYyZmM1NWIxMjI4MTIwYyByZWxlYXNlMzEtbWFpbnQKKzc2Njg0IDZhNDhhMDkxYzBkMzg2Yzk0NmFhOTRmMDZkNmJkZGQ4YjlkN2Y2YWIgbGVnYWN5LXRydW5rCis3NjY4NSAxYzJlY2Q1OWQ2NWFmOTlkNzUwNDUzNmU2YmY4MTU5N2NlYTEyZTM2IHJlbGVhc2UyNi1tYWludAorNzY2ODYgOWU3NTE2MDFmNTM4MjdlMGVhN2UzMTMwM2Y1ZjZhZmM2Mzk0MGYwYyBweTNrCis3NjY4NyA1Njg2MThiNWY2ZmQ1ZDQ1NWNkMDhkZjRhMmI0ZGRhMDdmMjdkZGY2IHJlbGVhc2UzMS1tYWludAorNzY2ODggYTZiMWU2OTU5MzgyZTM1ZjQwYzE5MTU5N2VkM2RiYzgyODE0MDZhYSBweTNrCis3NjY4OSBlZWE4MDNkMjM1ZDM0MWNjNWJhYWIwYTg3ZGZjN2Y3MDEzODhlNWQzIGxlZ2FjeS10cnVuaworNzY2OTAgYmUxY2JjMTVkOWY1MWNjY2ZhY2NmYTcwMTY0MjZhNzc2NmFjMWU4OCBsZWdhY3ktdHJ1bmsKKzc2NjkwIGY5YmRiY2M4ZDFlOGU2ZWM4YzQ1ODA5ZjJiZDQwMzhkYmE0NjJiYTIgcHkzaworNzY2OTEgNjA3ZjUxOGJkM2NmYjgwYjBmZDZhYzc0NzZiZTVhMTU4MzlkMDY5NSBsZWdhY3ktdHJ1bmsKKzc2NjkxIGJhYzhlYTJiNmRhMzU4ODRlYWU5YWZjMTI5YjdlYTJjMTk2ZWJkZjkgcHkzaworNzY2OTIgODlmNmE3NTQ2MmIyN2VkYjE1MTIwYTg4MGZiNmEwMDk1MzBmN2NjMiBsZWdhY3ktdHJ1bmsKKzc2NjkzIDZlZjRiY2M0YTQ1MDIxNjZiNmM4MzRiMmI2YjI5YTFlZTMxMTVjNzYgcHkzaworNzY2OTQgNTZmY2UxODhjNmJlMDdlZmY5NDhiYTU2NWMxMzM2ZjVjYjAzZWViMCBwZXAtMDM4MworNzY2OTUgYzBmOGU0YTIzZGRmNGI5NDk1MjRhODU1ZDNiYTMyMmI4YjM2MjBkYSBwZXAtMDM4MworNzY2OTYgNjg1NTIyYzZmMzBmYmUxYjE2NTNmYTNjNDJkN2NkYmQ1ZDE4ZWEyNSBwZXAtMDM4NAorNzY2OTcgOWM1OTdiMGE2YTliNzFmODgwM2Y2NGUzNzhiZGFmNGQ0NzcwZmNhZiBsZWdhY3ktdHJ1bmsKKzc2Njk4IDM1ZjNhMTljNDI2NWE3NmM4MmE5YmZmZjBjOWZlN2ZiYTViNDgyNjYgcHkzaworNzY2OTkgZjVhNDQ3YjNmMjZlYmY0OTViZDU3MWNmN2U4ZjU5YTc5OTA1OTY4MSByZWxlYXNlMzEtbWFpbnQKKzc2NzAxIDQ1MDgxODYxZWY3NGFmZjg2OGYwMWU2OWJhNmE4YmFmYzc0NTdhMWUgbGVnYWN5LXRydW5rCis3NjcwMiAyNWFlZGU2MmZjMTcyYTY2OThlYzAzNjYyZDQyOGM4MmM4MWYyZGQyIGxlZ2FjeS10cnVuaworNzY3MDMgMjc1MDk3M2UzODkzYzQzYmE4YjFjYjRhMDVkZTBlM2JjM2UwNGIzZCByZWxlYXNlMjYtbWFpbnQKKzc2NzA0IDk4ODc5YzhkNTNmMTY1ZGM4YzgwMGQ4ZDg0Y2RmZTE2MDNmOWRiNWYgbGVnYWN5LXRydW5rCis3NjcwNSA1MWM1YzkxMmVjM2ViNDJlMTY5YjA1OGZkNTQyYWZjODFmODU4MzU2IHJlbGVhc2UyNi1tYWludAorNzY3MDYgZDliNGY2ZWEzZTM5NzViM2I0OWQ4NWVmZTY0NjhjYmY0ZmE2OGQxOCBweTNrCis3NjcwNyA3NjQ3YjE0ZWZlNzFmYTkzNjVmYjQyZTA5MWNlYWVhOWE4MzQyYTQ3IHJlbGVhc2UzMS1tYWludAorNzY3MDggZGIyOGFlYjJmYjdhN2JiYTIyYzZiNmM2ZTE4OTI5MzA2MjI5M2VjNSBsZWdhY3ktdHJ1bmsKKzc2NzA5IDQwNzQ2OTU2YjM3OTJiMzU3ODUzYzIzNDgyMjJmMmI3MTJmYWQ5YTkgcmVsZWFzZTI2LW1haW50Cis3NjcxMCA2ODNkNWM5N2U0NzZkZTQ5OWZlY2Y4NmY5MDRiNDg2NWM0OTJmYWViIHB5M2sKKzc2NzExIDZlZmI0NmMyYjNjM2FkZGFlMmE1YjM0YjkwOGJiYmViYWQ4Yjg4ZmUgcmVsZWFzZTMxLW1haW50Cis3NjcxMiAyNGZmYjBhM2FlNGJhOTM0Njg3ZGZjYzcwZTAwMzQ3NDQxY2Y3N2JlIGxlZ2FjeS10cnVuaworNzY3MTMgNDBjMzYyYTU4ZTdmMGFhMTA0NzVhZDE2ZmJlMzhlY2Y2NTI1ZTAxZSBweTNrCis3NjcxNCBjZjBjNjliZTAxMWE1ODdjYzFjYTc3ZGM1NDA3NzAzOTI3M2JmMWVlIHJlbGVhc2UzMS1tYWludAorNzY3MTUgODNhNzYxOTM5OTc1MzNhMjc0ZDNiOTMwYjc1ODY4MGYzMTI3N2Q4MiByZWxlYXNlMjYtbWFpbnQKKzc2NzE2IDgzYzJiZjMxOTFkODVhNDhhMDFhODRlODYxODQyOWVhNmY3Y2UyNGMgbGVnYWN5LXRydW5rCis3NjcxNyA1Yjg2ODNhOTVlYWVjNjVmMDM5ZTc4Y2QxNjUzMmRlOWQwNTNkNjNkIHB5M2sKKzc2NzE4IGU3MjhhZTg5YWU2OWQ4OGM4NWQzMDk2OTRiZDA1NmZjMmJkM2Y2NmEgbGVnYWN5LXRydW5rCis3NjcxOSA1ZThiNzQ0OWY5NjE1YzMwN2Q1ZmIyMWNiNmYxZjEyZDYwYjJhZmI0IHB5M2sKKzc2NzIwIDZjNjQyNTU2MzkxODI4MjhiNjYwZmFhMTNlYjAyMTdjNDBmZDg3MTYgbGVnYWN5LXRydW5rCis3NjcyMSAyYzUyZDRkM2U1NGFlZDVjNDc2YmExOWZlNDcwMmI5YmFiOTM2ODlkIHB5M2sKKzc2NzIzIGU2MzQ3MDM4ZGY5NzZmY2M0M2EwOGQ3MGU3YThhY2YyZWY1ZTNlYTAgcHkzaworNzY3MjQgY2NjNTQwNmNiMzgxZGZiOTU1ZjZiZmRlMmI3YmYwODA1ZjY1NjUyYyByZWxlYXNlMzEtbWFpbnQKKzc2NzI1IDczOGIzOWIxMmRjOGYwNTA1NWRiYWM0M2M5ZTcwNDUyMzNlYjlhNjUgcHkzaworNzY3MjYgZWZlYWJlZTZlMDYxYWM0OTkzYTQxY2I3N2EwNWFlNjUzNmQzN2YwMiBsZWdhY3ktdHJ1bmsKKzc2NzI3IDc1MGU3NWQ5MzAyMTU1NTBkZGZjYTdhMjY1MWM1ODg5NzNhZmRlMGUgbGVnYWN5LXRydW5rCis3NjcyOCAwYTc2YWIzYTY3M2M2ZmQ2ZTIwYzkzNDViMTMxMDBhNzdjMDgzMzQwIHB5M2sKKzc2NzI5IDgxNjMwM2EwNzc2Mjc3OGZkMTJlNWQwOTBmZGRmOWI0NjFkNjU4YzEgcHkzaworNzY3MzAgMjczZWYwOWZlODA0OGUwZDQyOTkxMmMxZDBkMTczMGEzMzIxN2YyYiBweTNrCis3NjczMSA4YjhhZWUyMWQ4NWU2YTkyZGUxZjBkMzNlY2ZlMTlkMTlmMjhhODVlIHB5M2sKKzc2NzMyIDg5NzRhYjY4NWJhZTA2NDBlMGNkNTYxZmRlYmNmYzU0MDNkNWU2MjQgcHkzaworNzY3MzMgMTY2OTFiYzhiMTg5NGM0ODRkNzJiOGZhNDgwY2M4NmQ3YjE4OWU1OCBsZWdhY3ktdHJ1bmsKKzc2NzM0IGJjNzE2ZDhmNDM0NWQ2YTQzOWYyNjZmNjgzYzVhMjQ4NGU5ODM5NjEgcmVsZWFzZTMxLW1haW50Cis3NjczNSBiNWE0YWNiZWFhYTE2MWFlZjI1MDI1MDdlNmU5YjUzM2VjNmQzMWM0IHJlbGVhc2UyNi1tYWludAorNzY3MzYgNTdhZTVkNDRlNzMxZmJjMjQ0YTRkNWU4NWNmZDBkYjA4M2E5YWU4MiBsZWdhY3ktdHJ1bmsKKzc2NzM3IDgyNzZkMDBkMzEwMGY1YWY2NjE1YzUyMWMxOWQyNmYxNmM2N2MzMTggbGVnYWN5LXRydW5rCis3NjczOCA4YjY2ODljMGU1YTZlNmM1OGI5ZmY1M2RkODNlYTZlZDE1Y2RiZDEwIGxlZ2FjeS10cnVuaworNzY3MzkgYjI3ZDk0NjM4OWU3NjdlNjQ2NzFlNWE1MDZlZTAyYmQzMGFmMzU4OCByZWxlYXNlMjYtbWFpbnQKKzc2NzQwIDYzMTY5Y2I5ZTQ5YTAxZjExYzY0YTg1MzY1ODVmZjZhOTYwODQxNWEgbGVnYWN5LXRydW5rCis3Njc0MSA5MmY3YzRlZTZhYWRmYzhjZjEzMDQ3MTA2MTJjNzcwYjRlMjZhNGEwIHB5M2sKKzc2NzQyIDc1MmU4NjA4ZTEzMWI3MWRhMmZkMWZhYjlmNzRkY2MyZmQ2MGUxZTUgcmVsZWFzZTI2LW1haW50Cis3Njc0MyBhNDQwOWNmNmI1NTY0YTZiZTNkYjRmNDllMGZkMjJhNDFhYzI3YmUyIHJlbGVhc2UzMS1tYWludAorNzY3NDYgOTIxMWE1ZDdkMGI0MjQ2ODYxNWU3MjcyNGUzNDc4ZDlmNjRkZWM0NCBsZWdhY3ktdHJ1bmsKKzc2NzQ3IDM3NGQ0ZTlhYWIwNTJiNWZmOWM1Nzg2MDBmOTZjZjRkZTY4OGM5Y2QgcmVsZWFzZTI2LW1haW50Cis3Njc0OCA2ZjlhZDA0MThmNzBmMTk2Nzk5YWEwMzIwYjQ5MTVlMzUyYzVkZTY3IHB5M2sKKzc2NzQ5IDRlZTIyNjg5MGI1OTkwOWQ3OGMwOTcwOWRjMjkyNzE5YzFiNzNlMjggcmVsZWFzZTMxLW1haW50Cis3Njc1MCBkMjhmYmFjMzdlMjAyZjU3ZmMxODI3NGRlNmMzODE3NDc4OWFkMDIxIGxlZ2FjeS10cnVuaworNzY3NTEgZTI5YTQ1MzMxZGVhOGI1NDhiM2VkMzYyZWU3OGVhMTg3MDMwYTEyYyByZWxlYXNlMjYtbWFpbnQKKzc2NzUyIDY2ZmIxZTI3NjJkMzQyM2Q3ZjNhOTZhN2JiOGQ1MWE3ODY4ZDZiZTUgcHkzaworNzY3NTMgNzU2MmUzNzZkOWI1NTFlN2EzZDUwZjgzNzA2NzllNzAwZGVlZGMxNiByZWxlYXNlMzEtbWFpbnQKKzc2NzU0IGFlOTM5NjI2MDgzNTllZGJjMjkzMWQ4Y2IxZGM0Nzc5OThmYzQ4ZTggbGVnYWN5LXRydW5rCis3Njc1NCBhNmJmMDdmZmY2ZmNiZmU4ZDQ5MDUxODY3NmQ4YmJmNzJhYmIyMmY2IHJlbGVhc2UyNC1tYWludAorNzY3NTQgMGNkN2FjOGM2YmIzYmJjZGUwMmRkNzBiYTllMmM5NTlkZWQ2ZTcyOSByZWxlYXNlMjYtbWFpbnQKKzc2NzU0IDE5YjRlMWY2NDQzZTE5OTkzMzBiYmEzMGJmZmUwNTk0ZWNkYjEzNWIgcmVsZWFzZTI1LW1haW50Cis3Njc1NCA5YjZiMWMxYzFiMzMwZjEyMTkxNDRiYzU0YjljM2M2NzM4MjhmZTQwIHB5M2sKKzc2NzU1IGNiMjJlYWVlODZjOTBjMGZhMzIyOWZkZGJlMGI1MTYwZDRkZTkyODUgbGVnYWN5LXRydW5rCis3Njc1NiA5YjgzYmZlZmM1ZTdmNmZhZWU0ODUzYWY5Y2Y0YTI5ZmFlMzE2ZGU2IHJlbGVhc2UyNC1tYWludAorNzY3NTYgYmJhYjYwMmRhMTE0OWE2OTcyYjc1NjY3ZjkxNTBjNDEzOTM1YzNjMCByZWxlYXNlMjYtbWFpbnQKKzc2NzU2IGU3MDA0ZGEyOWY1MTJkZGI0NjNiZDQ3MWU3ZGFlMTc4N2E3ZDk1NDEgcmVsZWFzZTI1LW1haW50Cis3Njc1NiAzNzhiYjcwNWJlOTA0YmIyZGQ4ZGNhNGI3ZjQyNGZkZjUyZWE2NTkxIHB5M2sKKzc2NzU3IDdjYjczZTdjMTc2ZDMwY2Q3YjczOWQ5Y2E5YmUyZTQ2NTljMDEwMGQgcHkzaworNzY3NTggMTZjZDIxYmEyNjhhNDk2OWRmYWNjNjcyMDQyYTRlOTE2OTJkNGY3MSByZWxlYXNlMzEtbWFpbnQKKzc2NzU5IGFlZThlYjdmNWYwMjFlNjI4YTIwYjU3Y2M1MWZjN2Q3YmU0ZWNkOTUgcmVsZWFzZTI2LW1haW50Cis3Njc2MSAyNTZlOWYwMGQwNjFlZjhkNTQ2NGU3MGNhOTFlOGU2NGMzZDgzZWVjIHJlbGVhc2UyNi1tYWludAorNzY3NjIgNGQ1MWFhNTcyZThjOWFiZTlmOWU2Yjk2NWZiNmY0MzJhOTdlYzI0NiByZWxlYXNlMzEtbWFpbnQKKzc2NzYzIDJmZmQxOWEyMjRkNDFmYTQ2MzBlNDQzZWFkYjU0YTg0YWY3ZWJlYWIgbGVnYWN5LXRydW5rCis3Njc2NCBkOTc4NTkwOWMzYTcyYjc1NmRlZjI2OTZkODFmMTYwZDRiYzEzYzA4IHB5M2sKKzc2NzY1IDc5ZTBkYmI2YzRiODhjODY0MTdmZTY5OWRkZmZjYjc3ZDdhOGQ3YTIgcmVsZWFzZTMxLW1haW50Cis3Njc2NiA4NjkwYTdlZmY4MmExZTNkOGFkNTdkMGQwZDdjMWI4NWI4NjM5ZDgwIHJlbGVhc2UyNi1tYWludAorNzY3NzAgYWQ5MTdiOGZkNjRjZjYwMTQ3MjEzY2Q4NzhlZTVlZTNlMTg4YjhkZiBweTNrCis3Njc3MSBiN2VjNGFmY2ZjM2YwYmRmODgwYjM1YjFiZjM1M2U5ZDIyODRmNjM3IHB5M2sKKzc2NzcyIDczYTZiOWIwNTQzZjRjODAxMzE1MjUyZjBlMjA5MTdlMDEzMTQzZWIgcmVsZWFzZTMxLW1haW50Cis3Njc3MyA4MDQ4NTY5ZWI1M2Y1ZjcxZTEyNWU4MjdhOGNjYjE0NDU0MTNjOGFmIHB5M2sKKzc2Nzc0IDIwYjdkZWI1M2Q0ZTU4YjI5NGQ2OGY5ZTZkOGU1ZjVlNmVhZTljMzAgbGVnYWN5LXRydW5rCis3Njc3NSAyYjkzNGQ0NjY5OTNkZDFiNzFjOGNhYTMwOTQxMmY4NzkzZGFlZTc1IHJlbGVhc2UyNi1tYWludAorNzY3NzYgMDg3ZmU1ZmExMTNjMWZkMTBkOWI1NDc3OWJiM2FhOGFhOTBjNjQ3MyBweTNrCis3Njc3NyBkOGM1ZTM4NTE1YjZjZGM1MjMwOTU1Y2IxOTAwMjkyMDVjZmJjYTE1IHB5M2sKKzc2Nzc4IDE1NThkYzY5YWFjZjI2ZDg2MGViN2VmYzZjZjYzMzY2YzllNTdiNTggcmVsZWFzZTMxLW1haW50Cis3Njc3OSBhNzY5YTliMzRmYmMyYzVhY2EyYWM3OWRjNmNlZmMwMGM1ZGMyZDhhIHB5M2sKKzc2NzgwIDQ5Mzc4MGVhMzVjZjgyMWFhN2E4MzRkMjUwNjFjMTE1YmQ4ZDVhNjQgbGVnYWN5LXRydW5rCis3Njc4MSBlZDJiNjg4M2ZjOTY3MzRiMWJjMTUzN2YzMzJlY2YwY2NmMWM2Mzk5IHJlbGVhc2UyNi1tYWludAorNzY3ODIgNDZjMjI5NzQyYzY0MjEzZmYwZDhiNGQ3NGQwYTI5NGZkOWQ0N2E1OCBweTNrCis3Njc4MyA4YzQ3ZDdkMmEwMjNiNTE5MTJjZTlmMmRkZDRjODNjYWM3M2RkOTgyIHJlbGVhc2UzMS1tYWludAorNzY3ODUgMTE0MjM3MTliYWJiNDA0NWU4ZTBjZTRhZGNmNDYyY2NhM2FjY2Q1YyBsZWdhY3ktdHJ1bmsKKzc2Nzg2IDQ2NDg1MWJmMjJmZGViNTAwNzdlMTRhMGFlMjhmM2ZlYzM1MmRkMTAgcmVsZWFzZTI2LW1haW50Cis3Njc4NyAyZmRjZDczYzMyYWFiYjkyNmU1MDlmZjMyMTIwODNhYzA3ZWVmN2NhIHB5M2sKKzc2Nzg4IDU0ODMzNWNiMDA3YjFmZTg3NGZlZWUwZjI0ZGMzMTRmMTY5ZTg2ODggcHkzaworNzY3ODkgNGE5ZTQzYTNiOTg1MzNhYTcwNTBjMTI0ZDM5ODcwYjBhODFhY2Q1YSBweTNrCis3Njc5MCBjOTE1ZmY1OTFhMmYzMzQxZDhjODJiYWFiYmRhMGNlNmNkNDI0Y2RjIHJlbGVhc2UzMS1tYWludAorNzY3OTEgMTZjZWRkZTlhZjAwOTA0YzQ1MGUyZDBiOWFiYjNiMWFhODJiMTUwMyBsZWdhY3ktdHJ1bmsKKzc2NzkyIGM3MDg3ZWExYzIxZGRkM2EzZWQ2MTFlMWI5NDVjODkzMjkwYWY3MDkgcmVsZWFzZTI2LW1haW50Cis3Njc5MyBlN2M5NGNiNzI2Nzg5OTFiYWI3YmE1MjVjMGI4ZGJiMDM1OTEzNjU5IHB5M2sKKzc2Nzk0IGNiMjYyOTllMGU1MjdiODhkNWQzZDQ5Njk1ZWM0Mzg4NmI2NTBlYmEgbGVnYWN5LXRydW5rCis3Njc5NSBjMmU5NGVmMGQ3ZTU4NTc3MmZlYjZmODVkYjMyY2Q2YTM5YzcxNDA0IHB5M2sKKzc2Nzk2IDBkYmVjY2Q3ZTBlNmZhZWRkMWZkMmI2NjdlNzFlZWUwZGI2MmMzYjAgcmVsZWFzZTI2LW1haW50Cis3Njc5NyA0MmUzMTFhNDc2ZTgwYjEwNGJmMTY1MTQxNjVlYWU1MDMyZjAyN2NjIHB5M2sKKzc2Nzk4IDIxNWRkZmYxOTljMWI2N2NlNzgyZWM3NDZlMTkxNjQ2Zjg5ZDE1NGQgbGVnYWN5LXRydW5rCis3Njc5OSAyN2M2M2Q2NTI2MjA5YTdiODJiODAzNTBlM2RmOTVhYjg0ZWM2NzM2IGxlZ2FjeS10cnVuaworNzY4MDAgMTM5MmUzNmFmMWIyNmEyM2IwN2UwYzFjZDlhZmI2MmNiN2IyZTZkYyBweTNrCis3NjgwMSA2MDUyNzUxYTA0YzgyMzI3MmFlYTNlZjE5YmRhYTgzYTZkMWRjMDEyIHJlbGVhc2UyNi1tYWludAorNzY4MDIgYTc0ZTA0ZmM5M2ViOWRjZmNkMzMwMjU5OTMwZDBjYzY4NTdjNDU3NSByZWxlYXNlMzEtbWFpbnQKKzc2ODAzIDY1NGM2ODUzNjk3NTE0NjUyNGFiYTRjNWVhZTk1ZDFiNDJkYzZjZTEgcmVsZWFzZTI2LW1haW50Cis3NjgwNCA3Y2NkMjI4Yjg5NWNjOWYwOGRiNTVjMmUwZGM0YjlmNzhhYjc1MGIxIGxlZ2FjeS10cnVuaworNzY4MDUgNTRmODQ1NThhZDJiMmY2NzExMDc3NDY0MzFmZWQyY2YwYTBkNmQwOSBsZWdhY3ktdHJ1bmsKKzc2ODA2IDI0YThhMjljOGE0YTA0NmU2NDRmM2ZhM2ZiMDZjM2EyMmMxNGQ5YTUgcHkzaworNzY4MDcgM2E3ZDU0MDQzYWJhOGVmOTgwNDY5ZGYyOTMxNDgxYjQ5ZTY2ZTkxZiBsZWdhY3ktdHJ1bmsKKzc2ODA4IDEyMDYzYTdiNmEyYTI5ZWRiYmQ4OGU2ODMxNTAwMzY5YzZiNDhkMWYgcHkzaworNzY4MDkgMzVkZjY3Nzk4OWNiOTU1MTA0YTJiMTBiYmYxODhlMzk2OTViMjg4OCByZWxlYXNlMzEtbWFpbnQKKzc2ODEwIGZjNzBjOGQ3NDNkYjcyZTZhOWQyYjhmNDg1ZmZlODFjYzgwMzJkYjUgcHkzaworNzY4MTEgNjIxMDZiNmY1NTk2Yzg5M2M3NmE0ODc3YzljNGFlNGU5YTI0YjcyOCByZWxlYXNlMzEtbWFpbnQKKzc2ODEyIDdjNDIxMjQ0ZTZlYThmMGQzMjNiZDAzNTVmNGY1ZDk1OTJhZDVkNWEgcHkzaworNzY4MTMgNTM2ZTQ2ZWQxMGFjZjQzNjIwMDdhZjBjZjIwOGY2ZjFkYmY4M2M2NiBsZWdhY3ktdHJ1bmsKKzc2ODE0IGIzYTM2NDE5MmMwYWQ5N2M4YzMwMDY0Mjg4ZWMwMWUzMDc3ZTZhYTQgcmVsZWFzZTMxLW1haW50Cis3NjgxNSBiYzkzNDA5OGNhYTEwMWUxODE5OTk1ZTM3MWUyNTdhMzJhNzNjYTJiIHB5M2sKKzc2ODE2IDA1NmZmYjhlMTdiM2Y1NGYwOTYwNmEzZmYwMzc2MmE3M2M1ZDIyNjEgcmVsZWFzZTI2LW1haW50Cis3NjgxNyBkZDUzOTFkNGJiNjgwZDRmODQ0OWM4MGQyY2Q5ZGE5OTgwMjZmZTYxIHJlbGVhc2UzMS1tYWludAorNzY4MTggNmIyODUyMjE5N2RiMTBlNDRkOGNlOTYzZDk4ZTM4MDg3YzE5NzMwOCByZWxlYXNlMzEtbWFpbnQKKzc2ODE5IDlmMzU3Yzk2ZjI0NmU4ODQwNTQyNzg2ZGNmMGU0ZmNhMGE2NWU0MWYgbGVnYWN5LXRydW5rCis3NjgyMCA3MmVmM2RiNWM2YjM3YjI4MTQ3YzE2MGQwNGQ1ODE0YTM3NmZkYTZhIHB5M2sKKzc2ODIxIGU1ZjIwMTNiMjlhMTk3ZTFjZjhiM2FkZjNmMTA2OWViMjM1YTVmMjggcmVsZWFzZTMxLW1haW50Cis3NjgyMiA2ZTEzMWUwNzEzMTA1ZDA5YmFkMzQ0YjhjMTVmZWNhNzA5MDQ2OGRhIGxlZ2FjeS10cnVuaworNzY4MjMgZGExZmNlNTQwODg1ZTFkNzVhZDZhY2NhNDc1NjIyNGUyNGRkMThmYyBweTNrCis3NjgyNCA0MGYzYjhiODNjYzZhM2U5Y2JhNWViNGRkMzZiYjU4MjczZTQwNjc1IGxlZ2FjeS10cnVuaworNzY4MjUgNzcwNWFjMjE4Yzg3MGI1MTVmM2E0MGNhYjk0ODc4Y2E1ZWYzZDM4YiBweTNrCis3NjgyNiBjMGM4NjFkMzhjNGZkYWVmNmJhZDhlYzRhMTA0ODQ1OTQ1MjExZDQxIGxlZ2FjeS10cnVuaworNzY4MjcgMzU0Njc3OWIyMWM3MDgzZTUyODRkNDk3YWE1ZDk5ZjNhY2RlYjZiMiByZWxlYXNlMjYtbWFpbnQKKzc2ODI4IDY4MjQ5ZWQ4ODA5ZTgxMzNjODNhNDZjYmU5N2RkYTEyYWI0YTRhNzAgcHkzaworNzY4MjkgYmM1NWY1ZDUwZGVjODcwYTk0NjU3MGQ4MjNjNjZhMDEzYzY1OTQwMyByZWxlYXNlMzEtbWFpbnQKKzc2ODMwIDUxMDNmNjhjY2E2OTA5NWU3MGNkNzM2NDJiMDJkOGQ0MWI3MzFkYzIgbGVnYWN5LXRydW5rCis3NjgzMSAyYjhmNDg1YjBkMDM5N2UxMjUwMmEzYzkzMDYzMjM3MGJhN2NmZjY2IGxlZ2FjeS10cnVuaworNzY4MzIgNzZiZDViZGNlY2NkZmQ5NjZlYzJiOGIwYzM2NzZmMWIxMDViZjYxYSBweTNrCis3NjgzMyBkMmUxNDY1M2E0M2M5OTVjN2Y2MjJjNDE1ODVkZWVmZWM4MjkzZWUyIHJlbGVhc2UyNi1tYWludAorNzY4MzQgZDg5OWYyOGRiYjhlOTdjMjEwOTYyZjgwMGY5Mzk2NDA2MjVjMzU5MiBweTNrCis3NjgzNSAwZWVlYTc2NTZjMjJmMDMwZWQwMWQ1ZjAzY2RlYTk2MjBmMjhkNjVlIHJlbGVhc2UzMS1tYWludAorNzY4MzYgNDljNjhhMmIwNTg1MmM1NDkxNWNhYmM5MjdlYTgzYzQ3NGRlYTNkZiBweTNrCis3NjgzNyBiYzBhNmU0Y2UxYjBiYmYxZTM4ZDY2ZDM5MDJhMTViN2JjYjJhZWJhIHJlbGVhc2UyNi1tYWludAorNzY4MzggOTE5ZTIxNDI3MjZlZmUyYmEwYmQxNTU0NDA0Nzg4MGQyYTdiN2EwMCByZWxlYXNlMzEtbWFpbnQKKzc2ODQwIGZhNGYyM2IxODJkZTY3OTFhYmZmODdhNTYzNDM3YjM2NjAwMjZlMmYgbGVnYWN5LXRydW5rCis3Njg0MiAxNTkyZTg5NTFiMmJkMzU0NDQ0Yjk4ODBlMjM2YzcyMDRiZGVjOGYyIHJlbGVhc2UyNi1tYWludAorNzY4NDMgMzI5ZWYyOTRjYzJkYjU2ZDQyZDgyZDgyMDljNzE2YjIwNjY0Zjc4YiBweTNrCis3Njg0NCBlOWNlYmJlOWRlNWMzMWFmOTMwYzBjMWY4Y2I2OGRhNjJhNGQxOTcxIHJlbGVhc2UzMS1tYWludAorNzY4NDUgOTYwZTllODRjYTU5NzU1YzZiNWRkYWQyZTY5ZGUzNzAyMTQ2NzRjMSBweTNrCis3Njg0NiA3YzNjMDBlNzZjMjQ4OGI2NmU5ZGMyMTUzZGU3NDgxMmFhNzM2ZDNlIHJlbGVhc2UzMS1tYWludAorNzY4NDcgNjY2NDBmYzYwN2NhMDYzNTU4OGQ2MDUyZjliY2E2NTA5Y2JiNzIxMiBsZWdhY3ktdHJ1bmsKKzc2ODQ4IGQ4NjIwMDBmMWIwMTU1M2Y5N2UyNjc2ZGM2MDQzMDgzOGUwYWFmNzAgcmVsZWFzZTI2LW1haW50Cis3Njg0OSAyNGI2ODUzMTg2MzNiM2EzZTI5MzRlYjEwZWQyYThhMzhkYTNhYjk4IGxlZ2FjeS10cnVuaworNzY4NTAgZTUwZTQ5ZDYxZmVhNWYzNDM5MGIyYjk5N2Y4NDliZmFjY2IyMmM5YiBweTNrCis3Njg1MSBhOWI2ZjI3ZDFlMjkwZWM5N2NjMTVkNTllMWY1NGJjNmNlY2FjM2QxIGxlZ2FjeS10cnVuaworNzY4NTIgYzJlNGNmYmIzOThjYjg1ZjExYjMzZmNlZjQ4NWM4NTNiMTg1ODE2YiBsZWdhY3ktdHJ1bmsKKzc2ODUzIDk0MjgyM2RkZDgxOGZjMzg5MmIxODgwY2EzNzNhMGU0MzZmZDkwZDIgcmVsZWFzZTI2LW1haW50Cis3Njg1NCA5N2FiZDdhYWJhZGMyOGUyODgzNGRiNjNlZjQ4ZTMxZmE1YWIwYTJmIHJlbGVhc2UyNi1tYWludAorNzY4NTUgN2ViMDUwYzBlNjU0NjdjMGQxZWZhMDkxMzk5MzhlZGY5YjAwYWI0OSBweTNrCis3Njg1NiAyYmQwZjM5MTU5Mzg0MGM3NjFhYmFiOTlmOTYwMTk4ZjdmNGRkMjY2IGxlZ2FjeS10cnVuaworNzY4NTcgOWZlMTVjMWY5OWNjOWIwYzlmMmVjYWIwZjE3MjM2MGM2OTdkM2E4OCBweTNrCis3Njg1OCA0ZmNiZTBlYTliMzE3ODEzODVjNTc2NTQ3NDg3OWQ1YjJmMzFhNTgzIHJlbGVhc2UyNi1tYWludAorNzY4NTkgYmY2OWMzZjJiNzc4ZTQwM2M0NWU1NDgzYWY2YjRiOWZkNTZhZTgzZiByZWxlYXNlMzEtbWFpbnQKKzc2ODYxIGIyMDZhZDhjZjViZjJlNDQ3NWU1NmYxZmM4OWY3NzNlNmJhNDk5OWMgbGVnYWN5LXRydW5rCis3Njg2MiAyMmExZWE5MGZhYTYxNzczNzY2OTlhNDQ0NjM4ZGZkYzc2YjE4OGM3IHJlbGVhc2UyNi1tYWludAorNzY4NjMgYjQ1Y2ExMWI5YTNlYzc0OGVhNGRjMGI3NTRmYjVmOTI0MDk0NGQyMSBweTNrCis3Njg2NCA1NGE1MDJkYjNiOGNlMGQ5M2RjZmE2ZjM2ODk3YmMxYjQ3Njc5MjhhIHJlbGVhc2UzMS1tYWludAorNzY4NjUgYjM1NmVkOTU2NGU2OGMyYzIyMGQ4ZTIwYWE3ZDFjNjRiNmE3MTUyZCBsZWdhY3ktdHJ1bmsKKzc2ODY2IDBhMWMzOWM1ZjFiOWM5ZTQzMTAwYmUyY2ViYjI0NmFjMmYzMGEyNzMgcmVsZWFzZTI2LW1haW50Cis3Njg2NyBiMTg5NjYyMGMyOTZkMmJmMmNhZjhjNzczNGVlYTdmYTRiZjRlMmE1IHB5M2sKKzc2ODY4IGIxM2Y3MTUzOWFhYzAwYTZkY2E0YjgxZDljNmRiZWEyYzE3ZWMzY2QgcmVsZWFzZTMxLW1haW50Cis3Njg2OSA2MmFmY2ZhM2ZlMTg4YjdiN2E0OGYzNTg1NmNhZjYxZDc1NWMwODU4IGxlZ2FjeS10cnVuaworNzY4NzAgYmI2NjRkMjE5MzliNjg4ZGZhZmQ0MGI0OTk2YzU2YTJiYTBhYzM0OSB0YXJla19zeXNjb25maWcKKzc2ODc0IGUyNmVlOGRkZDI5ZDEzYzcwOWExN2JhZGU5MGM5Njk0NTg1NGQ0NjggcmVsZWFzZTI2LW1haW50Cis3Njg3NSA1MWQzN2VmNDNlMWU5ZGU1ODEzYzRmMzhiNjI0ZDM1MGYwYWEwYTU5IHB5M2sKKzc2ODc2IDBkMzlkYWIwNTYyMmU3YjFlMzFhY2YzYjViNzA4OWZhNDdkYWUwYzIgcmVsZWFzZTMxLW1haW50Cis3Njg3NyAwMTk0OTFiMjZiMzZjZmU3MDE4YmY0ZDIxM2E1MjFkOTBjY2E4NTg2IHJlbGVhc2UyNi1tYWludAorNzY4NzggZDM1MGFmYzMzN2RjNjRjNDdjZmFjNzg5NDVmZDg5MjhjYWUyOWNhNiBsZWdhY3ktdHJ1bmsKKzc2ODc5IDFlODE2NGI1ZjM2ZGJhZjJhNTllOWMwZjJiMWNjMWFmOGFiMzcyMjAgcHkzaworNzY4ODAgZTVkZjlhMWRhYjZhMDgzYjU1ZTYwYWIxNjgzMWM0ZGI4MThkMjRlYiByZWxlYXNlMjYtbWFpbnQKKzc2ODgxIDY0ZjVmMzc1ZDA3M2VjNjI5YTgzZTNkOWE0ODhlNGEyZGIwMmZhZjQgcmVsZWFzZTMxLW1haW50Cis3Njg4MiA3NjUyMzM0NmUyMGQ3NmQ1YTlmMzQ0MDRjYjc5ZTM2ZTdlYjEwODZkIGxlZ2FjeS10cnVuaworNzY4ODMgZDEwNmJhNjEyNmExOGVjMGI5MTBkYjNmZjBlNTMwNjZmNWM0OTljMCBsZWdhY3ktdHJ1bmsKKzc2ODg0IDcyMzQ2MGI5MGFkZDE0YWMwMDRiNDU1NDNlZWI1MjE5MTAzN2ZkNjIgcHkzaworNzY4ODUgMGVlYzYzM2VmMGUzMjBlMjc3OTNkOGNiNDY0ZDgzZGM2NWYxYmM5YiBweTNrCis3Njg4NiA5NjEzZWM0MWFlYWFhMDU2NjIyZmQ5NWFmYjE2MWVmNzQxOWUyOTdlIGxlZ2FjeS10cnVuaworNzY4ODcgYTM0OWRiZWFiYWVlNWEyZmQ2MWZkNjBhYjg2NjdmNDQ5N2QxMjM5MyBweTNrCis3Njg4OCA1YjM3NThlZTQzNTY2Zjk5M2JiOGViMDc0YjdlMDVmYmMyZmMyMjY3IHB5M2sKKzc2ODg5IDM2MjE4YjY4MWQ5ZWRiMTY3ZTMxODdmMjdhMTE4NGM5MTFjMTgyNWMgcHkzaworNzY4OTAgZGRkMWRiNWQyZmUwMGU2ODliYzE1NmZjNzNiMGNkODc4YTUxYmRhNiBweTNrCis3Njg5MSAyNjIxMzBkNzAzMDZjYmNiYzEyOGE0MDQyNDJiZjhhMGQ5YzY5M2I2IGxlZ2FjeS10cnVuaworNzY4OTIgYjhjYTYxZDZlMjYyM2E1Y2YwMmUwODM1YjIxOWY5Nzk3MWM4MzRmMiBsZWdhY3ktdHJ1bmsKKzc2ODkzIDJkNzVkYTY1ZDI5MGU1ZGU1ZDk0MDY5YjUwMThmMThlYzc0NzNlN2YgcHkzaworNzY4OTQgYWVlZjJmMjdmOWYwY2Y2YzlhNTQxZWUyOTdjMGJhNDI0N2ViMTc0NyByZWxlYXNlMzEtbWFpbnQKKzc2ODk1IDdiYWE1NWI2ZThjOTE4OGQwMjg5NDNiOTg2MWZmYzhmMmM1YjRkOGEgcHkzaworNzY4OTYgMTAxMzIwODk5MDQxN2Y0ZWUwYmEwYTE3ZWYxMmI3MDVhMzUyYjJjNyBsZWdhY3ktdHJ1bmsKKzc2ODk3IDZkNDdiMjQ5NDcxMzdkMWUxYmExODY5MjdlMDQxYjdhZTNmYWIzMDUgcmVsZWFzZTI2LW1haW50Cis3Njg5OCA3N2UyMzEzMTM1ZGQ5YmEwMThiYTY5ZTY4YWJkYTkzYzYwM2JlZjY3IGxlZ2FjeS10cnVuaworNzY4OTkgOWI4NDcwOThjYmY5MzA2ZjM0Y2IwYmZlZjBlOTFkZWJkYzYzNTQwOSByZWxlYXNlMjYtbWFpbnQKKzc2OTAwIDE4ZWIwMDkxNGFlZTViYWNhOThjZDI4NDVlZWNiNTU4MWQ4Njg4MWUgcHkzaworNzY5MDEgNmY5YzA3NDZmMWUyMDUwNjhhODM2YTk0YWIwM2IyZTU2MTk5ZjVmYiByZWxlYXNlMzEtbWFpbnQKKzc2OTAyIGEwODg0MGNlODhkMzRjMWYwMzc5ZGZhOWEyZjg1OTEzYTlhMDhhOWQgcHkzaworNzY5MDMgZWQ0ZDVjZDQ3ZWU5NjEwMjA3YzRjMGQ1ZTkxNjczNDIxNGFiNTQ2NCByZWxlYXNlMzEtbWFpbnQKKzc2OTA0IGY3ZjVlMWQyN2UwNjMwMmU1NTMyZmUxZGJjMWI5YWMxYTQ4ZjA0Y2UgbGVnYWN5LXRydW5rCis3NjkwNSA4OTk5Njc1NWNmMzllNzBiYzQ2ZTc0Yzg1Mzg5NjNlYjk3MGMzM2Y4IHJlbGVhc2UyNi1tYWludAorNzY5MDYgYTQ2ZGQ4ZGEzYzMwODI3YzExMDE4ZmUwYTYxMGQ5ODY4MWIwOWJmMCBweTNrCis3NjkwNyBlMjNmNWVjOTMzMTU4NTdkNzIyOWI3YmQyZDZiMWI0OTcwMjg2NWYyIHJlbGVhc2UzMS1tYWludAorNzY5MDggMTA5NzBmNjRiYTMzMWIxODliZDhlOTU0MmY5NTkxMzIzZGQwNmNmMyBsZWdhY3ktdHJ1bmsKKzc2OTA5IDcwY2MyODhmOTE5ZTE3ZWE2MDIzNjM5YTk1MzIyZTc0NjYzYmFkNmQgcmVsZWFzZTI2LW1haW50Cis3NjkxMCA3MjRhMGRhODVjNDJjYWU3OTA4NmJkNzg0OWQ2ZTg5ZmZkOTE4MDIyIHB5M2sKKzc2OTExIGRjMWFhZGY5ZmE0YTNjNmNlMjQ2MDBlN2RkNmJkZDYyNzUzOWI0YjkgcmVsZWFzZTMxLW1haW50Cis3NjkxMiA5Yzk1NzUyZWRlMTI1M2E5MzIwZmRjZGM3N2UxNGVlZDNlYWY5NTc1IGxlZ2FjeS10cnVuaworNzY5MTMgNTMxYjExYTZhMTI1NWNkZWFmNGRhMDRiNGM2ZWFkZGI5NzU1ZmNkMiBweTNrCis3NjkxNCBlYmViMmU3NzYzZjVhM2E1ODNiZTVlNzhiNTBiMDhjMTc1ZTRjZTIzIHB5M2sKKzc2OTE1IGVkMTMxMmNkYjliMjBhOTlmMDQzMTdlNWMxZDkxMGY3NzE2Nzk4MTkgcmVsZWFzZTMxLW1haW50Cis3NjkxNiA1Y2NjNWQ0MDY4YzFhZWUyNjI4NjY0YTQzNDg0Nzk0ZTIwNGVlNDhiIGxlZ2FjeS10cnVuaworNzY5MTcgNTNmMjFmMDhhZjBkNDRjNzc0ZDRjZjgyMWNlMjE2M2UwMmU4ZDNhNSBweTNrCis3NjkxOCBkNTE1MGIyOTM0ZmE2MGQzNzQxYmY1MzYxY2E1MjkyMDY4NzI3YTE4IHJlbGVhc2UyNi1tYWludAorNzY5MTkgNmY2MDBlOTJhMGY1MjdkYTZlNWY3YjJhNzk3OGIzYWQ4ZDEyZmU0MyByZWxlYXNlMzEtbWFpbnQKKzc2OTIwIDg5NmJmNDk2MjhhYmZkM2IwZmQ4ODVjNDdiODFkNjAyOTViZmQ4Y2QgbGVnYWN5LXRydW5rCis3NjkyMSBjY2EwOTdlYTI3YjljMWQ4NjgzZmU0MmJiN2EyM2I1MmQxNGUyOWM5IHB5M2sKKzc2OTIyIGU5ZGE4MTJmNGZmZjQzMTQ0MjI5ZTE0NGZlZDgxOWRlZTY2NTY3YmEgcHkzaworNzY5MjMgMjA4OWQ5YzFhZTEzZTFiM2JhMGQ3NDgzNmM5ZmVlOTM5NWE2OTc5NyBweTNrCis3NjkyNCA5ZTRjOTAxZjAwOTNjZmYwNGM3YzY4ZWRmZjNmMTVmNTI1ZGIyMWU1IGxlZ2FjeS10cnVuaworNzY5MjUgZDg5MGM4ZmZhZDAyZjdjMDNmMjI4MDhlNTk4ZmIxZmRiZmM1NzQ2NSBsZWdhY3ktdHJ1bmsKKzc2OTI2IGM5YTViM2E0NjBmZjYzZmQ3NTBlMjY0YzU5NjhjZGI2N2VkZjJiMDYgcHkzaworNzY5MjcgNjUwYjMyNjQwM2NkMjZiZjVmMmU3OTUzMDg5MTlmMDgwOGY2NmM5OSBsZWdhY3ktdHJ1bmsKKzc2OTI4IDFmOGIzNjMyMDIxOGI4NDQ1MmU0NDMwMDBkODdhNzIyOThjYzU4YmUgcHkzaworNzY5MjkgNzg0YmRjN2IxOWFhZjNhMWNjZmViZTkzYzJkNzA3NzVhM2MyYzYwMyByZWxlYXNlMjYtbWFpbnQKKzc2OTMwIDc5NDFhOWY4NjVjMjI4M2MzYzNjMTJlNzMwMjEzMDkxYWVjYzdkYzEgbGVnYWN5LXRydW5rCis3NjkzMSA2ZDc0NjRkYmI3MTRiMTRlYTdjMmUxM2JjMjhhNTdhMzhkYWI4MGQyIHB5M2sKKzc2OTMyIDM5MTQ5ZDIyNWVjN2ExNTIzY2UyYTg1NTAyOTBjMzgwZTlmZTU3ZWUgcmVsZWFzZTI2LW1haW50Cis3NjkzMyAwMjA1NGFmYTM2MmYxYjM2NGE4OTU2ZmQxYjU2YWIxYzU3NjZhYTA4IHJlbGVhc2UzMS1tYWludAorNzY5MzQgMDQ1ODhlZmYyNWExOTA5NThhMzU3MzE0YTg3M2E2MGJkNWNlMTQ4OSBsZWdhY3ktdHJ1bmsKKzc2OTM1IDFjMmIzZjc5NWQxYjIzZTIxOWIwNGRhNGFjODJmNzhiM2FkZDhiZWEgbGVnYWN5LXRydW5rCis3NjkzNiAxZGFhYzJjZWVkYmYyNWMyNmNhOGQwNjczOWMzMzVmNjg5OTU4MDQ0IHJlbGVhc2UyNi1tYWludAorNzY5MzcgY2IwNWNjZDc1OTk2YmNjMDE2NWUwMGU4NDIyMWIyZWU5YjFkMzdlZCBweTNrCis3NjkzOCA1ODEzMzcxNDE4OWNhYTg1ODQzYmZlZTU0ZTMwMDg0ODdjZDUxN2ZlIHJlbGVhc2UzMS1tYWludAorNzY5MzkgNjYzMGUzNmFmOWMzOWIwNjI0Y2FjMTU0ZGNhMjNhNTZmOWNlMzJiZSBsZWdhY3ktdHJ1bmsKKzc2OTQwIDU1MDA1M2JhYWZmYTc5ZDRjNDVlNzI3ODdiZWY1YzU4OGE2NDhlMTggcmVsZWFzZTI2LW1haW50Cis3Njk0MSA0YWNlMDhhYWMzNzYzOWMzNjU1MDgzZjFmZTNmZmI1NGJmYzg3MjY0IGxlZ2FjeS10cnVuaworNzY5NDIgZDg1NjIwMDJmOGU1YzFiNmJjZGE2MWJiOTM4OTRiMzQ0MWZiNDU1YiByZWxlYXNlMjYtbWFpbnQKKzc2OTQzIDQ2NTgwOTQxNmE4MmYwYmYxZTkwOGI4ZTBkMGZhZWNmMTMzMWVlYWEgcHkzaworNzY5NDQgNGQ0MzBlNTVhZDdjNThhZGVhNDlmZDNjNGZhNmYzY2FjMGIwZjhlYSByZWxlYXNlMzEtbWFpbnQKKzc2OTQ1IDZjMWIyMDY1ZDM1Y2IzYmNmZTFjZWNkMGIxMmY3YTA3Y2M5ZDE5ZWUgbGVnYWN5LXRydW5rCis3Njk0NiBiZjJlZmY2MGVhZTJiYWExNzdkOTFlN2M4YWZjYmQ0NmQ1ZGRkZGVhIHJlbGVhc2UyNi1tYWludAorNzY5NDcgOTljMGFiM2NkMWY5NTY5ODA3ZTc3YTE4MjExNzNlYjFkNDIzMTU2ZSBweTNrCis3Njk0OCA3OTcxN2I3ZDM3OWRiZmZlYmI2NzY2OGNiOTkwMjE4OTlhODcxMTEwIGxlZ2FjeS10cnVuaworNzY5NDkgYjFkNzJkODk0NjIxN2IxMTMxODI5OGQ1NTQzNDBlYWQxM2QyMDA1NSByZWxlYXNlMjYtbWFpbnQKKzc2OTUwIDA4ZGYxYzllYTY0M2I1NWNjYWM2NDEwNGJiODRhMjIzYmRhMzIzYmUgcHkzaworNzY5NTEgZDAyNWY0OTg3MzE5MWEwMzQyNThhMDI2ZmE5NzllZTBkN2NkYjYyYyByZWxlYXNlMzEtbWFpbnQKKzc2OTUyIDA5NmIxZDk5Nzg1MzhiYjJjODg2MGE0MzdiMDY3ZmZjNzhlMmIyMTEgbGVnYWN5LXRydW5rCis3Njk1MyAxNzcyMTk1NDA1ZTdlYTc1N2U0OWUwZmY1NjQ2MGIzZTkyN2U4ZWYzIHJlbGVhc2UyNi1tYWludAorNzY5NTQgZWE1ZTU0YmQ2Mjc0YzMzNDg2OWZjNTFhMTVjY2ZkZTA1NDhmMmUyZCBweTNrCis3Njk1NSA4NmI1ZGYwNDYzNGMwNjZlMzM2ZDFmNzNlMzczY2IwZWJjZjBiOGQ3IHJlbGVhc2UzMS1tYWludAorNzY5NTYgM2UyYjc5NjVhZGE5OTdiZWFlNDAyYWMwZjU1ZGUxYjQyM2VmOTc0MCBsZWdhY3ktdHJ1bmsKKzc2OTU3IDBlZTJhZTc1Y2U4ZjQ4Yjc5YmJiM2Y3OGI5YTQ0OTMwOTZmNDQ4MGYgcmVsZWFzZTI2LW1haW50Cis3Njk1OCAzOWFiMWEzNmIyMDk4NjZhMjUxZDBkZWMyODNiOGJkMWUxOTY5ZDc1IHB5M2sKKzc2OTU5IDA5YzE3MWZhNTkzNWExZTA4ZmQyMmMxMmEwMDFkYWJhNmQyMTU2MjggcmVsZWFzZTMxLW1haW50Cis3Njk2MyAyOGRlODNmMTdkMDg5ZTQ1NDdkYTYzNjEzOGUyODU0NDViNmRlNmFhIGxlZ2FjeS10cnVuaworNzY5NjQgYTdjNGM3MTdhOWM3ODgxYWNiMzAyNTIzZTAwMDA1OTM1MDc1NDJmMiByZWxlYXNlMjYtbWFpbnQKKzc2OTY1IDQ4YTk5Y2Y4MThjOTJkZWY2MDgzYzhhYWI5OGFhYjZkYjFjOGNjNGYgcHkzaworNzY5NjcgN2IyZWFhMzRiODZiMzY3MDc4Zjc4Njg2ZTYwNDU1Y2EzZDEwMDA4YSBsZWdhY3ktdHJ1bmsKKzc2OTY4IDZkMDllM2ZkZjg0MGNiZDgxYjg4OTc2OGJkZGQzZjA1MzJjMTUwNTEgbGVnYWN5LXRydW5rCis3Njk2OSA3NjEzZGVmMDk5ZDBiYzBhZjQyYjZjZGI3ODgwNmNiYzljN2IzZDkyIHJlbGVhc2UyNi1tYWludAorNzY5NzAgODA3MTk1OWJjMzA2YzUxZTQ2NTY2NmMyNmEyZTY1YzA5OGMwMjk0MyBweTNrCis3Njk3MSA1MGYzMDQ2ZDRmYTAwMjU4ZmYyNmQ1ZTRmYTIzMmM4MmEzODhjYzVlIHB5M2sKKzc2OTcyIDhjODZjZDgwYWUyNjFhMGI3OWI1NDJjYzJiNjYxOTY4Mzg3OTFkNmQgcmVsZWFzZTMxLW1haW50Cis3Njk3MyAxM2U2MmNmMDJiYzNhMTA4MjIyOGM4MDc4MzNkMGQ1OGY4OTViNzk3IGxlZ2FjeS10cnVuaworNzY5NzQgMDljNGYxYjk0MzljOWRlN2U1ZGQ5NTI5YTdiOGI0Y2IyN2Q0NmFiOCByZWxlYXNlMjYtbWFpbnQKKzc2OTc1IGQ3NjEwZWM5NWJjZTI4Y2RmODE3YWMwY2E4YWZmNTE4NTAxNjk5OTAgcHkzaworNzY5NzYgNzU1OWI3MGY5ODk5MzhkMWZiMWNjMTAxZWMwNjBjNDRiM2ExY2NhOSByZWxlYXNlMzEtbWFpbnQKKzc2OTc4IDdmNWNiYzI4ZjQzMzNjOWI0M2EzNjhlY2VmZTVjYjU3NTI2NGE0MjkgbGVnYWN5LXRydW5rCis3Njk3OSBlNzMwMDFhZmM1NmYwNmRjZjVhNjUxZWQwYWFiMWQ5OGE5NWZjODdiIHJlbGVhc2UyNi1tYWludAorNzY5ODAgOTc1MWRkY2MxODgyODNhYjgyZjg1YTk1OTU2NWFhNDY5NjM5OGU3NyBweTNrCis3Njk4MSAzN2EwNTk4ZDMzMmY3NTM4YjBkM2I0Njk5MzU1MTRmMWMwMWU2MWFiIHJlbGVhc2UzMS1tYWludAorNzY5ODIgMmU0ODQxOTBjZWI1YTE5OTQ4MDMzYWI2ZmYwMWYxYzY3N2Y3OWMyOSBsZWdhY3ktdHJ1bmsKKzc2OTgzIDFhMjViNDIwZWMwMGNjNGY5NmRmY2JlYWI2MTFhZjYyY2JmZDc5YzkgcHkzaworNzY5ODQgNjA2YTQ1ZGJkMTBjZTVlM2U1YzZjN2RhMmJhMmFkODRmNWEyYmQ5MyBsZWdhY3ktdHJ1bmsKKzc2OTg1IDM1MjQ5ZTk1NjNhYWYxOTBkMzBjNTVmZGFhM2IzZWNlNjViNDRjN2UgcmVsZWFzZTI2LW1haW50Cis3Njk4NiBkYjE5N2IyOGUwNDU0NDNiNWFmYzY5ODc2ZTA0ZjM4OTNiMzY0ZmJlIHB5M2sKKzc2OTg3IDIwZmNlYmQwY2I1ZGQ4NmZlNTViYWQyOTA2MjMxNGVmY2RhM2E4MzkgcmVsZWFzZTMxLW1haW50Cis3Njk4OCBhZWQzMjE4NzY0OTA5ZWUzYTFmN2M3NGU1ZmEyZTNmMTA4Y2Y1YzE1IHJlbGVhc2UyNi1tYWludAorNzY5ODkgNGQzYjliNGNhZmYwNmIzNWU1ZTIwZjE3M2U4NmQyNjhjODlkOGViZiBsZWdhY3ktdHJ1bmsKKzc2OTkwIDQ0MmQyYjlkODFlMDk4ZjE4MTczODgwMGRlN2Q0YzZhNWRiMzIzOTQgbGVnYWN5LXRydW5rCis3Njk5MSBmMzExNTBkODQ3YzNmZTQzYjQxODZhNDcyNjcyMTJhNjQ3ZDIyOWUzIGxlZ2FjeS10cnVuaworNzY5OTIgYmU3ODg2NjBhOTM5MzM4ZjYxMDE0ZjE2YzQyMjE0MTFmMTM2NDc1OSByZWxlYXNlMjYtbWFpbnQKKzc2OTkzIDA3YTI4MzA4Y2ViYjA2OTQxM2NiZWYwYjBkMjY2ZDVjZjFmZmFjMmMgcHkzaworNzY5OTQgNjVkZTBiZWUwZmYyZWNiYWU2NWE4NmFmNzI0YjZhYmE5YmIyMjM3ZiBweTNrCis3Njk5NSBiOTkyN2VlZTJhNjlmYTgyMjVjN2I5ZjI3ZTMxZmQwOGE3ODlhNDc2IHJlbGVhc2UzMS1tYWludAorNzY5OTYgMzBiZWRiYzI5NzYzNTIzMjU1MWFiZjE4MjY4MGMxYjBkNGJlZTY3ZiBsZWdhY3ktdHJ1bmsKKzc2OTk3IDZjODEzMDE1MmU4OGEyMDFlNTA2NWNjYmZlZjQ4YWE5MjY1YWE2MGIgcmVsZWFzZTI2LW1haW50Cis3Njk5OCBjZjc0ZDlhZjg5NWE2OTRiZjBjZmVjMmU4ODVkMmY3ZTQwN2FjYzNiIGxlZ2FjeS10cnVuaworNzY5OTkgMTUyMDY5NzkyMDIwMWIwMjg5ZDgxZGZiYmJhMWM4NDgyYzQ2MmI3YSBweTNrCis3NzAwMCA5ZGM1NzNiNmY4ZjVmYTdmNGM3YzZjNjZkZWVjZTM0MzQwZGRmZDNiIHJlbGVhc2UyNi1tYWludAorNzcwMDEgNTNlMzIxMjU5NTU2ZTVjMGE1Y2U5YjdlY2ZkOGJlYTZmZmM5MWY0YSBsZWdhY3ktdHJ1bmsKKzc3MDAyIDA3MmMzZDBmMDUxZTliOGJjMDU2ZjgyODQwYzg5ZjI3NmFmZDE0ZmQgcHkzaworNzcwMDMgZGYyNjEwOTNiMzFjZjRkZGRjODEwNmE1ZmU4YzlmMDk3NjJhMmU3YiBweTNrCis3NzAwNCBiZDI4NzQ1YzZmZTcwZDcyNzg4NjJlYTdkZjg0YmIxOGNjOGY5MzY3IHJlbGVhc2UzMS1tYWludAorNzcwMDcgYmE3NGQ1ODc3NGI3MGY2YTZjODc2NjY2NjEyN2NmMTc5YjMwNTU4ZCBsZWdhY3ktdHJ1bmsKKzc3MDA4IDE4YThiMmJmYzljMmViYzhhYjRkNGJkMDIxNmFlODhhNmJiNjJmMWQgcmVsZWFzZTI2LW1haW50Cis3NzAwOSA0MjlhM2UzOGU0NmJmNWQ3ODU3M2Y3YTNjMzhlZTNlNjY3ZDA3NGU5IHB5M2sKKzc3MDEyIDkzZDVjZGYxYzQ1NzNlODZhNDkzMmRmN2M0ZWJhMjlkNzY1YmY3NTYgcHkzaworNzcwMTMgM2E3MzZhZDY2MWZiNjQzYzM4M2FhZjdiYTU0MThiY2UwM2QzZDk0YyByZWxlYXNlMjYtbWFpbnQKKzc3MDE0IDI1MTg2MGRiMzQ5M2YzOGNiODA3Zjk3ZmZhZmVlMGE4MzFiMmUzM2EgbGVnYWN5LXRydW5rCis3NzAxNSAyNDAwNmNhNTYyZDVhYjk1Y2ZlZDU4NTc2ODQ5NDRjMmU3NjQ5YThiIHJlbGVhc2UyNi1tYWludAorNzcwMTYgNGFhMGQ4MTZlZTViYTA1ZDM1YzMyZDE4Mjg3ZDllM2E4NWNmYzEzOCBweTNrCis3NzAxNyA4MDIxYjkwYjU2ZWRiYjdmNDhjYWU0MmUzNDY3MDM0NTI3MzRiZDNkIHJlbGVhc2UzMS1tYWludAorNzcwMTggMWM0ZTg5NTIxODQ3ZTAwMzgyMjM5YjJhZmM5M2MyOTg4OGNmOWJhMSBsZWdhY3ktdHJ1bmsKKzc3MDE5IDEzZTJmOGE3NDljNDY0MjBhOWIwYTBlNTljOTU4ODVlMDk1N2E0OTMgcmVsZWFzZTI2LW1haW50Cis3NzAyMCA4ODYyNzVmZmFmZDZiM2M2NTYzOGY2ZGJlOWMwNmE2NzRiMjk4NTI3IHB5M2sKKzc3MDIxIGU3NTdmYTc3OTYwMWY1MDUzZTQwMmI5YmFiMzJhNTg5NjBhZjE3YWYgcmVsZWFzZTMxLW1haW50Cis3NzAyMiBkZjJjZmNmOWEwNzM4ZTFlYTg0MTc1MmU1MDBhNDc5NDlkYjY4MWM2IGxlZ2FjeS10cnVuaworNzcwMjMgMWY4NmUwZTQ2OTY5ZmE0MjIzMTNkYzUzZmMxMjE4ZDk4Y2Y3MTE1YyByZWxlYXNlMjYtbWFpbnQKKzc3MDI0IDU1OTQyNTMzMzE3ODdlMTIwNDIwOWQ0Y2I1NDI2MzA4NmViZWQ3YzkgcHkzaworNzcwMjUgZDFmMWEwNTkxNTRiYTlmMTIzMDgxNGJhN2MxN2NhM2YxMjk0NGQwNSByZWxlYXNlMzEtbWFpbnQKKzc3MDI2IGNhMjRlYTFhMmFlMmVkODcyNjI1YWFjNDQ5OTNiNDQxODVkNjkxNWUgbGVnYWN5LXRydW5rCis3NzAyNyAxZGY3M2JmMzhjNTViODU3ZGI4MDIxMWJhNDFmYThiNGUzNzEyNzQ2IHJlbGVhc2UyNi1tYWludAorNzcwMjggMzVkZTU3ZjUxNTk5NTczNDk0Y2Y3YTJkOGU3Mjc1YjY2YTc2YmZkOSBweTNrCis3NzAyOSA3MWU2YTBkZmFmYzg0NzE2ZjQ2N2U5ZTMzMjE5NGM3NTMzOWU5ZWZkIHJlbGVhc2UzMS1tYWludAorNzcwMzAgOWRhMGNmMmRmZmNjOWVhNThjNTIwMTk3MTQxMDljYWRlMTY2ZDU5YiBsZWdhY3ktdHJ1bmsKKzc3MDMxIGFhZWI2NWJhYjNjMDUxZmI1YmI4ZDQ4ZTNiZWUyNDM3YzlhYWM2NWQgbGVnYWN5LXRydW5rCis3NzAzMiA5NGU5NTdjZmRhMzgzYWY5OGY4ZDE4ODUyYTE2Y2MwZjVjMGUyMGM5IHB5M2sKKzc3MDMzIDQ2MzcxYjI4ZmRkMTE4NTFjZTUwMTUwMTQ0MDdhNTM0Zjg2MmE3OTEgbGVnYWN5LXRydW5rCis3NzAzNCBiYzVlYzUwYzUwZjllYWIzMzM0NTc0MDFjZDUzZjM2ZTYxMTI0MDg3IHJlbGVhc2UyNi1tYWludAorNzcwMzUgM2M0MTI0NDdlZmIyMDMwYjQ2NjU4NWI2M2I0NTljNTZiOTMyZTI0NiBweTNrCis3NzAzNiBlN2RjYzc0ODVkMGJkODFjNThmODEwN2EwNGZkN2NjNGQ0MDFhMTFjIHJlbGVhc2UzMS1tYWludAorNzcwMzcgMDg1NTgxODg0ZTZmNjMyMmVhY2QxNGI3NWNiOTAwNmY4NTM2Yjk0MyBsZWdhY3ktdHJ1bmsKKzc3MDM4IDg3MGE0NmM4YTY3MDVkYjI4Y2Q5YzhmYTYwNzViODI4YjdhZGNkMTQgbGVnYWN5LXRydW5rCis3NzAzOSAwZWY5NGRhNzViZmRhNmQ3M2U4ODI3NzliYzEzNWQ4NTU4NzNjYTJkIHB5M2sKKzc3MDQwIDQyN2MyMTQzZTJjOWJhMWY4N2M5NjIxNzc1MTQ3OWI3ZjdlYzQ5YmQgcmVsZWFzZTI2LW1haW50Cis3NzA0MSA4NDI2MzQyNzZkMDExZGNiMWY0MmYwY2EzYjQ2M2JmMWFmMTk1YjJkIGxlZ2FjeS10cnVuaworNzcwNDIgM2I4NmIyM2M1OGZlNDQwYmIwZDg4YzI3ZTI0MzM2MzI4ZDM4OTY1NyByZWxlYXNlMjYtbWFpbnQKKzc3MDQzIDcyNjMyM2ZkODdjYTUwYzYwODk0ZTg1Nzc1MmFiZjFlNmJlMTIwZTggcHkzaworNzcwNDQgMzQzNGU2YjExYTkyMThlZThlYWVlYzdiNWJhNGQ1MjE1YjM1YzNjYSByZWxlYXNlMzEtbWFpbnQKKzc3MDQ1IDg2Mzg3YjhiOWFmOGI5ZDVmZjYzYWIzOGEzOThmM2VmZmQwNzUzMDkgbGVnYWN5LXRydW5rCis3NzA0NiA5NDI0Yjg0YTJlYzk1MmEzMGI5NDMwMmZlOGM3N2E0OTJiNDZkYzIyIHJlbGVhc2UyNi1tYWludAorNzcwNDcgZjU2MGUxYTc3NDRlZmFkNjJiOTgyYjk2OTczNWM4NzE2MzljNWZiNSBweTNrCis3NzA0OCA5NjI4ZWI3ZTk4ZGZiNzgwMTBhNjcwM2EwOTQ2ZTAxZGQwMWI0YzEzIHJlbGVhc2UzMS1tYWludAorNzcwNDkgZGI3OTY1NjcxMDljYjRlY2VmZTI5NjQ4NzZiMmZmMjZiODQ5NWY3YiBweTNrCis3NzA1MCA2Y2ExYjliNzhjM2ZkNzliYjcxZjcxZjY5MDhhMWNhOWRhNjE5YTViIGxlZ2FjeS10cnVuaworNzcwNTEgZTVjNGM5NzEyNjYxYWYzZTJlODA1MjgyZGRkOWY2NTVjOTAwZGViMSByZWxlYXNlMjYtbWFpbnQKKzc3MDUyIDQ5ZGYzY2Y5MTlmN2RiY2VmZmQyNWI4YzE4OTg3NDJmMzgyMTNlOGUgcHkzaworNzcwNTMgMjEwNjExMmY1YjA3NjM4ZWNiNGI4ZjllYTVhMGNlNGRjYjVjMjg5MSByZWxlYXNlMzEtbWFpbnQKKzc3MDU3IDVkYzVkNmM2ZjY0MTc4OTgzNmNlNTlkNGY1M2NlN2YzNjBiMWU0ZjMgcHkzaworNzcwNTggNjQ2NzY0OTk0MTIwMDkzZDAwNmE2MmViNTBkOWE4MzAyNmIwN2FjMCBsZWdhY3ktdHJ1bmsKKzc3MDU5IDE1MTI5YzgwYjJmZWQ3YzUwMDQyNGM2MDE0NGQ1YzdhMWY3ZDA2OTEgcmVsZWFzZTI2LW1haW50Cis3NzA2MCA2ODgxMWRmZTcwNmNlOTRkMzFlNDFlYTA1NGMxNjljZGRlZTQ4ODI1IHB5M2sKKzc3MDYxIGUzNzJhODA1NmM5ZDUzN2Q2ZmQ0OTQxYWY1MTA2NTQyMDE4N2MyZTEgcmVsZWFzZTMxLW1haW50Cis3NzA2MiBjNGU2MDk4ODgzNGRmMGZkNDM3YWUzNDIyZGEwY2FiNGFjZDZmY2UwIGxlZ2FjeS10cnVuaworNzcwNjMgYWFhNWFiN2I5NDJhOGU0NDUzZjEzMTBkY2FkZDljNWU1N2IwMDZiZiBweTNrCis3NzA2NCA1NjBiODc2NjkxOWQ1ZDE1YzQ0MmExMmM5OTk3OWRmYjUxYTJmODJhIHJlbGVhc2UyNi1tYWludAorNzcwNjUgMjI5MDc4ZTQ3MDEwYzhjOGE3YmNkMDc5YzhkMDRmN2U4YTAzOTE2YSByZWxlYXNlMzEtbWFpbnQKKzc3MDY2IGViMGJiYWJhMDM2MWI3NDZmYmE5NzBlZGI1ODk5NTcyYzliMGY3ZjEgbGVnYWN5LXRydW5rCis3NzA2NyBkZDY3MjZjOTc4YzY2Njk4ZjRkNjkwNTM4ZDgyOTYyZDY2ZTJhZWNiIHB5M2sKKzc3MDY4IDk1NzI4OTAyOWMwNTM0ZTVkZTI0ZmNhOTI3MmNhZjgwZmMyNjI0ODggcmVsZWFzZTI2LW1haW50Cis3NzA2OSA4NWU3ODFmNTk5YmM4YTk0ZjU2N2IxYTM2NDA0ZmNkYWRmYjI3MTFhIHJlbGVhc2UzMS1tYWludAorNzcwNzAgOGU4MmZiMDQzYWU4Nzg1OWU5ZGNiNWZlMDBhNzAwZGM4NTExZDE5MSBsZWdhY3ktdHJ1bmsKKzc3MDcxIGFkN2U0MTQxYTNlYjgzZjg2YzZjNTY5MDQwZGUzNTNiMTc1NDQ0ZDUgbGVnYWN5LXRydW5rCis3NzA3MiA3MzM2NWJiMjZmZDY1MGNjMDQ2MGNmMzVkNzFmZDBiNmIxODhlZmM0IHB5M2sKKzc3MDczIDFlMzcxODBlZWNhZWE0NDNmMTQ4ZjRiMzc5MGJiNjE0YmQ1Y2MzZmEgcmVsZWFzZTI2LW1haW50Cis3NzA3NCA1YTkzNzEwMTdlZGY5YTFhNTAxM2ZmOGEwMWQwYTlhZWYzZWRlYTBlIHJlbGVhc2UzMS1tYWludAorNzcwODEgNTI1ZjY3YmVlYjg5YzdmYTIwY2FmYzllODcxODZlZTAwMTEyNjdhYSBsZWdhY3ktdHJ1bmsKKzc3MDgyIDMwNzQxZWY2NTYxNzM4ZGY3MGNiZTI3NTk4NzUwZGU0MDRlY2UwYmEgcHkzaworNzcwODMgNTc0MzNiODMzYjJhOGRmMzQxMTQ1ZWQwZTMyOWQ5OWM2M2M1MWZmMSBweTNrCis3NzA4NCBjYmUxYmJlNTQ0YzllNDZiZGExNTc4ZjM2MGIxNzMxNWFjYzk0MzA2IGxlZ2FjeS10cnVuaworNzcwODUgYTExYThlNTNjNDk1Y2U4YmM3NzEyMzU1ZGJkZjU2ZDhmNWNjNDY3YyBweTNrCis3NzA4NiBmZTA0NTlkYzk4ODlmOTM3NmU2ZGUxYTUxNDEzM2M5MDUyOTM4ZTMwIGxlZ2FjeS10cnVuaworNzcwODcgZmZkODAwZWY0NmVhMDU0ZTkyZWZiNDkwNmNkMjdmMTQzMTYzZThmNiBweTNrCis3NzA4OCBjZjM5YzVlNDYyZjk0YmNlNTgxNWIyZDY4YjBiYWI1M2FkZjViYWUyIGxlZ2FjeS10cnVuaworNzcwODkgYzE5NzJlZWYzNTc5NWNlMmQ0YTEzMTA0MjE3M2YyODdhMTFlM2UwZCBweTNrCis3NzA5MCBjMTRhMDE0YWY5NTRlYmFjZjA0MGM2OWM2NGE3MDUxYzE2M2ViZWNhIHJlbGVhc2UzMS1tYWludAorNzcwOTEgNWU4NGFiZmRmZWFiZDc1YTUxNWM0NjhhMThjM2UyMTY4ODFlMWIwYyByZWxlYXNlMjYtbWFpbnQKKzc3MDkyIDliNGI0M2E4YzkxMzA1OTU1MGZjZjg2ZTVjODdiOGViZDA4MGQ0YzIgbGVnYWN5LXRydW5rCis3NzA5NiAzNzQxOTFlMTBhNDViZTZkNTY4MjNhY2ExNzY4OWNkYjJmYWZhZGEzIGxlZ2FjeS10cnVuaworNzcxMDIgNWM4YzRkMmY4YjcxMjBkMWRlYThiOTUxYzljYTBkYjkwODRjMzc2MSBsZWdhY3ktdHJ1bmsKKzc3MTAzIGY3NjRlNDEyNmEyMzFiYTBiN2NjNjhiNWJlNDhkMTA1N2FlZjdkZGYgcHkzaworNzcxMDQgM2I0NmYyZDNiNzVkMDJmMzU2YzFhZmJlY2EzZmI1Y2FmZDY3YTdkMiBsZWdhY3ktdHJ1bmsKKzc3MTA1IGVjOGJiMTUxNGQ2NzFhNjNiZDdjNzNjYjM1ZGViZGM5NjAwZWYzZmEgcHkzaworNzcxMDYgMTVlYWM3NjVjYzM1ZDk0ZDFjYTk4NzQ2MDQyMTJiNTBlNmQ4NWVhZCBweTNrCis3NzEwNyAwNDk4MDI3NzEyYmY0MmMzMGQ3MmI5YzY4ZWQ5MzViZWRlYTUyZjcxIHJlbGVhc2UzMS1tYWludAorNzcxMDggM2FlYTU3ZGMyMWE5YjFkM2I4NjE0OGFmNTBkY2RlYjg3ODAxZGNlNiBsZWdhY3ktdHJ1bmsKKzc3MTA5IDM4ZjU5M2E4M2NmYzg0MjNmNDgwZDhkNmI5YTEzNmQ4ZGU5ZmE3NzEgbGVnYWN5LXRydW5rCis3NzExMCA4YWQzMzk5MjIwMmFlYTNhNmEwMTc4MmUwMjEzMTM1MjU5M2UzMGEyIHB5M2sKKzc3MTExIGFiZTUwMDhiOTNlOWE0YzczMmVjNTMxNGRhZGQ2NTg2MjM0YjQxMjcgbGVnYWN5LXRydW5rCis3NzExMiA2MWE3NzBmN2I5NTFiM2Y5MjA3ZTdkNjZjOThlNGM5MDBjYmE5ZTJmIHJlbGVhc2UzMS1tYWludAorNzcxMTMgNTc0NTZmMTY5NDJkOTkwMGU5NDUzNjYwNmRhODJkZWJhZGRjNTk0YiBweTNrCis3NzExNCA3MGQ3NDczYWZjZmVmNjdiOTY2MmRhMmMxY2M1NGMxY2E0MmU3ZmYwIHJlbGVhc2UyNi1tYWludAorNzcxMTUgNzIzM2JjMzRmZDQ0ZTI4OGZiZTZlMTVmZGQ3MzdmOWU1MjkyMWM3ZiBsZWdhY3ktdHJ1bmsKKzc3MTE2IGU0ODRmZGE0NjJhNjBiNzAwNjEwZGFiODU5ODBiODI2ZTdhZWVhYTggbGVnYWN5LXRydW5rCis3NzExNyBiZDZiMDNmYjcxYTA2NDY2OWIwYThkMjJlMDY4NTZmOGI4YzM3MmYwIHB5M2sKKzc3MTE4IDI1OWVkNWNiOTNlYWNkZmM0OTEwYmExM2EyNDFlMzJhZjU3NjYxMjYgcmVsZWFzZTI2LW1haW50Cis3NzExOSBlYWZhMDUzYWYwNTcwZGIwN2FiNzQ1NWQ1OWYyYWU0ZGE3NzU1M2RlIHJlbGVhc2UzMS1tYWludAorNzcxMjAgZWJkMDYxODM4ZmIxNzQ1NWY5ODVmYmM1NmQzMzBlNmU1ODE5MGYzMyBsZWdhY3ktdHJ1bmsKKzc3MTIxIDVlMGE5NDcxNjAxZjYzNDkzYmJmZGFlOTg0YmM0Nzc1ZWI1NTgyN2YgcHkzaworNzcxMjIgOGM2MGE5NTVkMDJjMGEyZDI0OTg2YjdjYzUyOGQ3ZGQ4NWNmNTVkZiBsZWdhY3ktdHJ1bmsKKzc3MTI0IGUzZjU5MTRkOWJiM2ZlYTdmODljNTVjNWZkMzFhNmRhNzA1OGQ2NmUgcHkzaworNzcxMjUgMjNmNDY3MTUxNzU2YTdjODNlODczNWYxMTMxMzdhZjEyZGFmMGVhNiByZWxlYXNlMjYtbWFpbnQKKzc3MTI2IGM1MDJlYzI0MzQ1ODhiOGJjZTgwOTk2YzViYjFjMDI3M2U2OTkxZTkgbGVnYWN5LXRydW5rCis3NzEyNyA3OTBlOGZjZjUxNzk1ZjMyYWE1OGRmOWUyZjVmOTE3NjlkNmFlYjU1IGxlZ2FjeS10cnVuaworNzcxMjggNmZkZTExZjRkODQyNjY2ZjMxOWViODg3M2VkNDVjMDc5NWVjZGUxZiBsZWdhY3ktdHJ1bmsKKzc3MTI5IGZiNjcxZGYwZjVjYzk2NmE4MTczNTNlZjkzN2NhYjY1MWNlOTViMjYgcHkzaworNzcxMzAgZTUzZTU1MjUyYmE4NGJjZTBlOWJmMTMzZTBiYmVkMDYxMWQ1NGRmZSBsZWdhY3ktdHJ1bmsKKzc3MTMxIDkyYTU4YjgwMTIyMDY3MzM0OTc3YTU5MGNmODFkMzBjYTMxYmIwNDYgcmVsZWFzZTI2LW1haW50Cis3NzEzMiAxOWYyMzU5OTQ0ZWI0MzVkMWI2ZTUyNzY0NTk2MjU4NWIxNTAyNTM4IHB5M2sKKzc3MTMzIDI0NGI5NzlkNTQ0YzEyNDg0NjQwMTg2ZTlhNzQzNTA3OTE0MGUwMDUgcmVsZWFzZTI2LW1haW50Cis3NzEzNCBkNGFjM2E4MDAwYzc1MTg4ZDAyOWQ3NTEzOWM3YjUyMGU3ZTk0YjNjIHJlbGVhc2UzMS1tYWludAorNzcxMzUgYTdmNmE1M2RhYTEyZDFiNWM2NTZmYmUzN2I5ZDI1ZGRiNTE5M2NmMCByZWxlYXNlMzEtbWFpbnQKKzc3MTM2IDRmMDk4OGU4ZmNiMTU2ZGRlYmM0NDllZDQxMWE1MzIwOTVlODE3NjEgbGVnYWN5LXRydW5rCis3NzEzOSBhYzVmZDg5MDk5OThmZWQ5ZjYyOGY1YzVjY2EyOWFkNmNiMDMzMTdkIGxlZ2FjeS10cnVuaworNzcxNDAgMzg1N2NkNGQ1YjM1OTczYjViOTMzMjIzYjllMjZhYzJlOGM0N2M1NiBsZWdhY3ktdHJ1bmsKKzc3MTQxIDJhYTBkOWYwMWQ0NzUzYjU2NTA5Y2Y1ZTA5YjBiZDU5NmVjNzM5YWQgcmVsZWFzZTI2LW1haW50Cis3NzE0MiA2MjQ4YjdmZGVjMGRiYjU5ZjlkN2E0NDM3MTY0NzM3MDVlNWIwNGRhIHB5M2sKKzc3MTQ1IGFkNjA5ZDBmNTE1MDk3NDJhMTQyZmVlYWFhYWUwYWU5MzNhZTUzMzIgbGVnYWN5LXRydW5rCis3NzE0NiA3NDBkYmFlMmUzMGNmZmQwMTIwNGQ4M2IyNDNjN2NlYjlmYzZkYjk3IHB5M2sKKzc3MTQ3IDE3NGEyOGM5ZmI0MDcwMjUwZjFkZTExNGE2OTAxOWQ1YWY0NjBkOTMgcmVsZWFzZTMxLW1haW50Cis3NzE0OCA1YWQ1YTFkNjEyZTVkMTQ4YzdlZjU2OTdlMTI2MmI0NDNiMDYzN2MyIHJlbGVhc2UyNi1tYWludAorNzcxNDkgOWNiMjc1ZGI0ZDZkNTg0YzE5MmVlZGNlMjYxNWExZTVmODhkNTBmNiBweTNrCis3NzE1MCAwMGZlNjg5ZjJiNzhkNTVjNTM2MjBmOTBhNWNlMmQ4Njg1ZjMyOTI4IHJlbGVhc2UzMS1tYWludAorNzcxNTEgOGQ5YzkzNDBiMTJlMTZjOGMzNTU1MGFhMzVjOTQ3YjhmZTNmMjM0YSBsZWdhY3ktdHJ1bmsKKzc3MTUyIDczNjFlZTJkZGZkYjdhNDQwZWI1M2FjMjRhNTNiZjYxNGM4M2U5ODcgbGVnYWN5LXRydW5rCis3NzE1NSBkYjYyOTc3YzU3MTNmOTBhN2NlN2M4MDljYzA3ZGQ4MDcxZjUzYTQyIGxlZ2FjeS10cnVuaworNzcxNTcgYWUxOWMyODdlOWMwZjg1NTZhMWVhNGEyZTcyNDFiNDEzYjU2NDk1NSBsZWdhY3ktdHJ1bmsKKzc3MTU5IDk2YTIzNzFiMTE0YjlkY2FjZWMyYjExNGNhMzc0MzI1YmQyZGE3YWYgcmVsZWFzZTI2LW1haW50Cis3NzE2MCA4MWNmMjRlNWNlOTI4ZTljOTAzYTllNjNhYjY0M2FjMjgwNTliYTdmIGxlZ2FjeS10cnVuaworNzcxNjEgNmMxOWE2YTY5N2E2MTFkNGNhNmQxMzFiNTAyYWFlMDllNjBkZmUwMyBweTNrCis3NzE2MiA0NmY0YjdiNWI0ZGRlNDdlYTliNWFiZGViM2E2MDk5MTZhNDQzNjViIHJlbGVhc2UzMS1tYWludAorNzcxNjMgOGRjNmRmYTQxZmQ1NjVjZWFjNzYxZmVmMWMwYjc4NWI1ZWJkZDVlMiBweTNrCis3NzE2NCAyNTI4NTgyZDY4ZjZiZjY5NjY0MmJiNWNlN2RiY2I2NTlmNzAwZjMyIHJlbGVhc2UzMS1tYWludAorNzcxNjUgMzZhZWQ5ZTM2NDJkYzRkMzM2NzhlN2FmNTZlMmRiNDEyMDY4ODNjMyByZWxlYXNlMjYtbWFpbnQKKzc3MTY3IGVmYTU5NzYzMzAxMGVmZTNjOGIzNmEwNDE1Y2Y4OTE4OTg3N2E0OWMgcHkzaworNzcxNjggOTgwYzc5ZmJkNGM1ZGY0NWNjMmYxM2ZjOTJiMjE1ZmJlODY1Mzg5YiBweTNrCis3NzE2OSA4ZmVlMmFiNTNlNzE2YWNlYzlmZDk3NmY4ODhhNmJiYjcwYWE5MDNlIGxlZ2FjeS10cnVuaworNzcxNzAgMjI4YmJhMmQxZjNmNzUwODZmNzEyYWRlNzFlMzA4NDNmNDc5MTJjMSBweTNrCis3NzE3MSBlMDc4NTc5OTg0YTRlNGZjMTM4MjlhNzVlMzYyNTBiNTBjZjAyY2ZkIHJlbGVhc2UzMS1tYWludAorNzcxNzIgYjNkMzdlYjk2MzIyMzU0NjMyNjMzMjlmNTRjMWQ5ZWEyM2U5N2UyZSBweTNrCis3NzE3MyA0ZDZkOTUyZmUyODgxMTgzMzQ3MjBlMTE4YzQzOTQwYjQ1MjY3MzY0IHB5M2sKKzc3MTc0IGQ1MmE3MTc5ZWVjZWUyZWQ1Yzg2ZjU5ZTYwOWQ0YjJkNTU2NTNkMjMgcHkzaworNzcxNzYgNDQzZjcxZGQ1Y2YwMmFiZDk1MTQ3MzRiNTM3MjM3NzcxZTEyNTVlOCBweTNrCis3NzE3NyBhOTJmMGEwYWZlNTY3NDk5ZDhhYzJkZTJhYmIwZWUwYTFmYzRkNWYwIHJlbGVhc2UzMS1tYWludAorNzcxNzggMzg0YTdhMzcwOWRjOGY5ZTBlZDhhNjgyZmU2ZDFmMjcyZTAzZWY3OCBsZWdhY3ktdHJ1bmsKKzc3MTc5IGJmOTdhY2Y4ZWNiMTg3MGMxZGY4YzA5ZGRmOWY2YzI5OGIwZDk1NjQgcHkzaworNzcxODAgN2M2MzA5MzFjYzgzMWM3ZTZiNzQ0NDliZTBlNWQ2MWJhOTRiNmVkYSBsZWdhY3ktdHJ1bmsKKzc3MTgxIDIzNmRjZjE3MWI3NDZmMjIzZDJlZDA0ZTRkZDg3YjkxNzk2NjI1MzUgbGVnYWN5LXRydW5rCis3NzE4MiAxZTkyZmU1OTM5MTZkYzBjZTM2MzMwZWIwNDViNjlkNWIwMjU3MDRkIHJlbGVhc2UyNi1tYWludAorNzcxODMgZGJhYTRlZWVhZWI4ZDI2ZmE5ZDFkMDY3MjMwYjVhYWZkNjhhMGRhZCBweTNrCis3NzE4NCA1YWZhMTY5MTQyOTVlNWY3ZDZkNDg1YWYxOWViOTMwODQzOTZmMmEyIHB5M2sKKzc3MTg1IDI1YWE0M2U0MzAyYmY1ZGIzYzM5MmVlYWNlYjcyZTMyYWY2OTM5OGMgbGVnYWN5LXRydW5rCis3NzE4NiA3ZDZiZmY3MjIxOTUwZmU4ZDIyZDBiYzIyZjZhOTJhYjMzMDFiMGQxIGxlZ2FjeS10cnVuaworNzcxODcgODU2YTQ1YzBiNmM0MWM2NTg4NmI3MGM3MmUzMTI0ZmM5ZGQwNjk1ZiBsZWdhY3ktdHJ1bmsKKzc3MTg4IDViNDcxODQ3ZjZlYTZlYzczN2UzYmNiOTFkZjIwMGI1MDI4M2Q2MDcgbGVnYWN5LXRydW5rCis3NzE4OSBhYjQwYjkzNmJkMWMxNDMxNzg2NDg5OTk3ODBkYWVhYTJlZTIzNGRiIGxlZ2FjeS10cnVuaworNzcxOTAgZTYyYmUwODQ3OGJjZGFiNjg0OGVjOTdhMGMxZmQ1ZTFiMWU2MjkyNCBweTNrCis3NzE5MSAxNjY2ZWU4ZGFmOWIxMjQ5MzAxYWZlY2YwNjhhYjVkZDEzY2I4NWM2IHJlbGVhc2UyNi1tYWludAorNzcxOTIgNTMxMDBkYjM1MTI4NGY3YjUwZWI3NmQxZDA5MzhiNTMyODFkNmI0ZSByZWxlYXNlMzEtbWFpbnQKKzc3MTkzIDg0YjAwZTZiZDY5YjIxZmUzZjRiNGYyMjAxNjNkOGJmZDc0NmExZjIgbGVnYWN5LXRydW5rCis3NzE5NCA2MjEyZWRjMjJjYmRmOGNlOWFkZGIyNTRmZTZiNzNiMWYwN2U4MDEyIHJlbGVhc2UyNi1tYWludAorNzcxOTUgYmFiZmMwNjEyMTJjMTc0M2YzMTE1YWZkYTMxNzcxYWVhMWM4MDllOCByZWxlYXNlMjYtbWFpbnQKKzc3MTk2IGQ4ZTY0YTg0NDczY2RkNTRhOWMxMzFkMjY3YzBiYjMyNTU3YzMxMmYgcHkzaworNzcxOTcgM2UyMmM3ZTlmMzA3Y2IxYzkzZjUzOGRhZTE5ODViZjZmYzI2ODk3YiByZWxlYXNlMzEtbWFpbnQKKzc3MTk4IGU0NTUzYjYwN2I0M2RmYzE3Y2IzNGMzODI0NDYxMjA3NzAzODk0YWYgbGVnYWN5LXRydW5rCis3NzE5OSA0MmNmYjcyN2ZmNDg1YTc4ZmI1MzkyMWFiMDhkZmM5YTQ2YTlhYWVhIHJlbGVhc2UyNi1tYWludAorNzcyMDAgZTIyNjFiNjFkZjA2NjA1YjJiZDViNDkyZmRkNTE2NmVkMTI0MTcyMSBweTNrCis3NzIwMSA3MWJiODQyYjc5YWIyZTMwYTYwZWM0OGJiNzU2YTczZDZmZDc0OWZmIHB5M2sKKzc3MjAyIDIxMmE3MjI4NjRhMWFlODc3NGY1MmE5MjZmZDkxMWM1NmExODA3YWMgcmVsZWFzZTMxLW1haW50Cis3NzIwMyAwYmU0NWI1Y2YwZDYzZGMzMjRiZjc1NDljNWIzYWUxMjQ2YTk4MDdlIGxlZ2FjeS10cnVuaworNzcyMDQgZmNlNjYxMTI0MWQxMDkyY2ExYjdkNmUzMzU0YTZmODgwMjI1ZGI2OCBsZWdhY3ktdHJ1bmsKKzc3MjA1IDFkMGZkZTU5ZGRlYThmYTRmMWQwYjZmZjNhMmYwMTQ2ZjU4ZmEwYjkgcmVsZWFzZTI2LW1haW50Cis3NzIwNiA2OGE3NTRhYmNmYjY4YjNiMDMxY2E2OWFkNGI4Yjg4MjY3MmVhNmFiIHB5M2sKKzc3MjA3IGMwMjZiOTEwYTVlNDg2NWVlMmYyYThjOTU3MjBiNjQ0NDcyZTlhMTkgcHkzaworNzcyMDggZmM3NWE5OThhZGJmZWE3NDc1Mzk5NDM3OTE5NmMyYjJmODJlNGEzYyByZWxlYXNlMzEtbWFpbnQKKzc3MjA5IGFkYjkyMWYwNGI4Nzc1NzQwM2ZhYjhiYjI5YjMyZGJhNTJjODhlZjMgbGVnYWN5LXRydW5rCis3NzIxMCBmZjJhYmI5NGM2OGViZjUyZTJhNTliZmU3NDQzYWQzY2UzMTE4M2JlIHRhcmVrX3N5c2NvbmZpZworNzcyMTEgOWE1NWIxMTczZDIwMDZjNDY4NGJlMTkyNmUxZmY0MmQwNzg0M2YwNSB0YXJla19zeXNjb25maWcKKzc3MjEyIGYwMjg4MTMzMjM0MmExYTc2ZjAzNzFiMDAxNTQxYTIyMjk5ZWEwMWIgbGVnYWN5LXRydW5rCis3NzIxMyBiYWE3MGQ0MWM5YmRiNWJlZDBkNzRkYzA5OWQ2MTAzODcxZGYyMzk0IGxlZ2FjeS10cnVuaworNzcyMTQgOTQxOGY0YjAxMDQ1MWY3YjRkMWZkMDJiNWViMDBmYjdmOTM0MmM3MCBsZWdhY3ktdHJ1bmsKKzc3MjE1IGMzNTA3NWYyYThmMzBlNWFmZGMzYmVlZjllZmZkNjBhYTcxZWFkYzkgbGVnYWN5LXRydW5rCis3NzIxNiBiMGRkNmMyMWRjYmY0NDgzYjFiMDVlYjVhYjA0YTlhNTRkYzAzYjIxIHB5M2sKKzc3MjE3IDRmZmI5MzM4OTI1Njg3ODdhZjEzNTE4Njk2NmU0ZGJlM2U4ZDI3NjcgcmVsZWFzZTMxLW1haW50Cis3NzIxOCAyZGUyNGJiMzNjYzU3YzUwY2ZhNjRjMDU0MjA5N2E1M2FlZTJkNzFlIGxlZ2FjeS10cnVuaworNzcyMTkgMTM5NGE0MDNkYzg5ZTViNDJhYjQ0MmY2Mjc2MTYxYzlkYWVlYzE4MyByZWxlYXNlMjYtbWFpbnQKKzc3MjIwIDc4Y2E2OWNmYzg5NzhiNzM5OTlmM2MxNDQ1NjRhODkyYTE2ODQ3MDkgcHkzaworNzcyMjEgZjA5ZWI5MmVkMGFiMmFmNTUxYTY3YjFlZmIyMTJmMWVmMTIzMzIxOCByZWxlYXNlMzEtbWFpbnQKKzc3MjIyIGFjNTI4YThhMzZjZjVjNTM0MmM4M2M3Njk0ZTZmM2I0NDg0NDhkYzMgbGVnYWN5LXRydW5rCis3NzIyMyA3NDdiMDFhMDUzMDA2ODc2YzM5ODlhYTAyNTg1YmIxN2Y4MWMzMDJhIHJlbGVhc2UyNi1tYWludAorNzcyMjQgYTcyOGZhNDgxYWQ0Mzg4NzRhZTYzZTFhNmQ3Y2FlYWNiNTljYmQ3NSBweTNrCis3NzIyNiBiNWMxY2ZkYzY4YjkyOWY0NDlhNWU1ZWE2NmNiMGZjODY5NjNlOGIzIGxlZ2FjeS10cnVuaworNzcyMjcgNmM4YzA0MGMxNDQzYjc1MmEyYzY0ODNjNTJjZjA5MzJjNjI4MTM0MSBsZWdhY3ktdHJ1bmsKKzc3MjI4IDE4YmQxYzY3ZjVlMmQ0YmY4MTE2MTU1ZTY1NWU4N2I3YTg4N2MwMjMgcHkzaworNzcyMjkgYjhlMzhkMGE1MmQ3ZTEyNzg4YjA5MmRiYjM1OTQ4NDFmOGM5MmY1NiBsZWdhY3ktdHJ1bmsKKzc3MjMwIDZkMTcwMjVjODRjMTRlNGE4ZjMxZWI0M2NjYWQ3ZTFmYzM1MDZjMDcgbGVnYWN5LXRydW5rCis3NzIzMSBmYzg3YTJmYzQ3YTU5NWVhYmI1NmY1ZDExOWQ1ODAwODI0NmZiMDIyIHJlbGVhc2UyNi1tYWludAorNzcyMzIgYmQyNGUxZTkwZjdjYzI2NmZmOGIzMzllOTUyY2Y2OTIwOWI4NWVlOCBweTNrCis3NzIzMyBhZGM5Y2RjMDJkZjEwMDljODg3MzQ2ZTI3ZGFlNDQxNTQ5NGFlMTU5IHJlbGVhc2UzMS1tYWludAorNzcyMzQgMjdjOTQ2ZmY3NmEzYTkyYzk5MDliYThjMzk0ZjViMjQzYzY4ZDJlMiBsZWdhY3ktdHJ1bmsKKzc3MjM1IDU4YTViYjk3MWU5NTJiN2E1ZTY5MjQ4MTU3N2I5YWNmMjZkYjU0MzYgcmVsZWFzZTI2LW1haW50Cis3NzIzNiBjMmZiMDc3NDI0NDVjZjg4ZmZlYWQxZjQyNDk0YTYwNjZhMTIxZTlkIHB5M2sKKzc3MjM3IDQ2ZDYwZTVmZjEwM2U5NWM0NTFhMTQ0NTRlZTA5MzdiYzVhMDJmNDMgcHkzaworNzcyMzggMzkwZDY3NGVkNGM3MzI0Nzg2Mzg5OWMzMGNmNzI4NzIxZDA0YzFjMCByZWxlYXNlMzEtbWFpbnQKKzc3MjQxIGRkZjYxY2Q3NzVlMDE5ZDRiZjNjYTk3MzgxNGQyYjVmMWM1YzNhMGYgbGVnYWN5LXRydW5rCis3NzI0MiA2MjYzYTZmYmY3ZDkzNDNmODVjZjI1NGUwY2UzZTIwNGM5ZWYzNWMxIGxlZ2FjeS10cnVuaworNzcyNDMgMmQ1YWI0ZDA4Yzg4NTBiNGZhN2ZiZDMxYTkwOGMxNjBkMTM3YWY4MyBweTNrCis3NzI0NCBhMzI2NjFiMzM0ZjY3NjgzODM5YTNlZjM3ZGY2OTQ4MzRhODJhZDhhIHJlbGVhc2UyNi1tYWludAorNzcyNDUgMzEzMjY1ZDRlMDMyODEyZWZjNzgwM2ViYjViMzc2YTY4MWEzN2E1OSByZWxlYXNlMzEtbWFpbnQKKzc3MjQ2IGExMDM1Y2I0YTkyNWZjODIxNzllNDZkNDE3ZWFiZTlmOTBlY2M1NDIgcHkzaworNzcyNDcgZjVlNDk2YTg0MTdmMzE1YzRhM2JlNDE4ZjY1NTdhN2U4YzE2NDJhYSBsZWdhY3ktdHJ1bmsKKzc3MjQ4IGE2YWNlMzBjYjkxMjI0YTk1YTI4MTg1ZWVmZmVhMTMyM2Q3ZGY0MjggcHkzaworNzcyNDkgNGFjZDhmYWVhMmQ5MzNiNDk3NzAzOTE0YzJhYWJiNWQwOGYwODU1MCBsZWdhY3ktdHJ1bmsKKzc3MjUwIGNjOTdhOTZlNGEwOTA4MjY3NTY3NWYyMDhiNDZkYjAxYmMzNDdkODAgcHkzaworNzcyNTEgOTI2MTE4NDE3OTc5MmE4ODAxZTU0YjVmYzIxMjg0ZjhhNGQ3YmViZSBsZWdhY3ktdHJ1bmsKKzc3MjUyIGZmNWJjMmZhMzhkNjZlZWM5ZWRkYjgwMjFmZGNjMDQ3ODg3Y2RmNWQgbGVnYWN5LXRydW5rCis3NzI1MyBiZTI3ZWEyYjM2NzlmMDRhNzRjNmMwZTZiNmY3YmQ0NmE0MzZjNDQyIHB5M2sKKzc3MjU0IGViOTVmZDk1ZTY1ZWRlYmI5OGFiODBhMDY2OTUwOWJkYmUyMDI1N2UgbGVnYWN5LXRydW5rCis3NzI1NSA1N2I5OTZjM2Q4ZmZiMzhkYzliMmY3OTA4NzgzOWNjZDA1MWY5Y2RkIHB5M2sKKzc3MjU2IGU5ODEyYjgxNmZmZGIxNzk1YzMwZmU1YjJlYTgxYTg1NDM2NmU5OWUgbGVnYWN5LXRydW5rCis3NzI1NyA5MWE1N2NjMDAyMGU0YWFjNmZmOTNkMzJkMjE2MmY5YTJiMDgyMzk4IGxlZ2FjeS10cnVuaworNzcyNTggMmEyMzk5NTM0NTkxN2NhNzI2ZDJmMTYyOTFiMWM3OTBiY2QzNDM0YiBweTNrCis3NzI1OSAzODU2Yzc2NGUxZjUyYzIwNGVkODEzNTcyZTFiZmI3ODMwNTU2ZGRkIHB5M2sKKzc3MjYwIGZlMTE3ZTVkMTNhMWZjYWVlNmEwYjdlYThhYTY0N2I5YTU5ZmEzN2YgbGVnYWN5LXRydW5rCis3NzI2MSBhYmJkYzMxZWE3OTA3YjA1NGQwMWM2N2YwNmE1MzE2ZDAzNGU4ZTY3IHB5M2sKKzc3MjYyIGZkOTE3NDRiMWNhYWI0OWQwZmI3YjRiMDM4ZDg4ZWU5OTYzNDI4NTQgbGVnYWN5LXRydW5rCis3NzI2MyA3MmUzZTg1YmFjOGIwZGMwMjljNWM1NDU2YTZiYzI0NmE0YmFjNjZiIGxlZ2FjeS10cnVuaworNzcyNjQgYTE5YWQyOTkwOTVmMjdkYjAyYTVhZmY0ODhkM2RkNjhhNzUzOGExZiBsZWdhY3ktdHJ1bmsKKzc3MjY1IGIwMzg2ZmU2NTBjNzU5NjBmZDM5NjljMDgzNmUzNmE5ZTUxOGY0MGEgcHkzaworNzcyNjYgOGM0YTcwN2MwYmQ4ZWVjNjk5YTBlMDI0Y2JmNmQwY2RhMzRjZjkxYyBsZWdhY3ktdHJ1bmsKKzc3MjY3IGMzYWRjZmFjMDc3MjI4NjJiNjIyYTFlZDkzODE0NTIyYTkyZTVkMzcgbGVnYWN5LXRydW5rCis3NzI2OCBhMGZjZTk2NjVmNDRhZDlmMTNiY2ZmM2Y4MTU2M2QxYjE2OTk2M2VkIHJlbGVhc2UyNi1tYWludAorNzcyNjkgMjQwMmYyOTFlODAxOWJhZWI5YmE5MDhhOTZkYjUxNTY0MWM0NTMyMiBweTNrCis3NzI3MCBlNTQ0MzRkMmUyYTdkMzdlMjRiMjQ0NTc5NTc1Y2I1ZGYzYzhmYjAzIHJlbGVhc2UzMS1tYWludAorNzcyNzEgZjZlMzQwMDE0Zjk2OTY5ZGY2ZmRmNTk3MzkzZWI1NTc3ODU4ZTQ4NSBsZWdhY3ktdHJ1bmsKKzc3MjcyIGViOTI0ZmFkOTI3MjA2MjBkOTQ4NjJhNmNiY2U1NzU5NDRlNWU0ZjggcmVsZWFzZTI2LW1haW50Cis3NzI3MyAwM2JmZTMyZWY4NDljYTg2M2Q2ODQwMzgxMGRmNmQ2NjQ1OWM5OTYyIHB5M2sKKzc3Mjc0IDM1MWZjNDI1MGMxYjBjN2E2NTk5ZDgyNWVhZDdmZjY1YTJkZTQ5N2QgcmVsZWFzZTMxLW1haW50Cis3NzI3NSAwZjhhNTg3OTI1NjNjMzM1NGJhMWViMzhkYTk5NTY1M2ZjZTlhMDY4IGxlZ2FjeS10cnVuaworNzcyNzYgOWI5YWRjNDJjNzNhMmFlYmIxNDhjZTRmY2M0YWY2Zjk3Y2I4ZmQ5YiBweTNrCis3NzI3NyA5YzFmMzA2ZmIwZGZhNTg0OGI1MzAzN2RhYjNmNDQ0MGQ1ZDk1NmQ3IHJlbGVhc2UyNi1tYWludAorNzcyNzggNzQ0ZTM5MWU0MmZkZjE2MDBlNWQ1MDdmNDU1NGRjMTE5ODY1YWYzYiByZWxlYXNlMzEtbWFpbnQKKzc3Mjc5IDUxNzQ5YjZkNjJkM2ViMmE0MDBmOGMzMzViNjY3ZGU5ZjZmMmViOTYgbGVnYWN5LXRydW5rCis3NzI4MCA5MGYxZTkyZGI2ZjIyNTU4ZTNlYzRjMzI5MWEyMWY5Y2M2NTdjZjJkIHJlbGVhc2UyNi1tYWludAorNzcyODEgYjU1ODUwMDcwYTU1MThlMzcxMmExZmNhNzliNjg1YjdiZmZiMjM5MSBweTNrCis3NzI4MiAyMzRiZWFhZmQwYzZkZDJhMDRmMzI2MThkNjNhYWJkNDEzN2QyOGEwIHJlbGVhc2UzMS1tYWludAorNzcyODMgMDZjOTY4ZWI0YjQwM2MyODU1MzI1MGQyNDEyYzFkNmM0MjcwZmZkZSBweTNrCis3NzI4NCA3YmNlNzI2ZWM0NDBiMTZkYzFlOThlMDk1MmVmOTQ3ZTQ4NDhjMzExIGxlZ2FjeS10cnVuaworNzcyODUgMzkxMTUyNGFmYzJkNmYxZmU4MjI2ZjRmZmYwMjM2NWNkMzVhNjE0NyBweTNrCis3NzI4NiBjNzI2NTIxNDViMjM1ZDczNzJjODhjY2UzMGE3M2ExMzc4YjliYzE5IGxlZ2FjeS10cnVuaworNzcyODcgZWNjOGE0NTg5NGM5NDFmYTJhZjFjNmI2MjRhODA2OTUzZmE4ZjM5YyBweTNrCis3NzI4OCBjODU3YjU2Njk5YjU3MmQ2YWI2OGJkOGQ1YjQyNjBjN2Q1ODhhNTRlIGxlZ2FjeS10cnVuaworNzcyODkgYzU4MDJhYjllMzRlNzE1NGY0Y2Q1MGI2NzU0YmQwYTdiZjFmY2FiZiBweTNrCis3NzI5MCBmYzgzM2VkYmE3Njk5ZmJiY2NlYWQ4ZmI4NDU1ZjU1MzRmNGNkNWVlIGxlZ2FjeS10cnVuaworNzcyOTEgMmNiZGFiMjQ5ODU4OTcwZDg0MjNiOGI3OTI0N2YxYzU5NjJiMzExZSBweTNrCis3NzI5MiA0YmMyNmE4MGU3MzdlYTNkM2Q1NTZiZTkzNjY0NDk4ZmY1YjY1NjZjIGxlZ2FjeS10cnVuaworNzcyOTMgZjdlMDliYTBjYjU1YTNmM2I5NjIyOWNiYjMxMmNiMmZlMTU1Y2JmNSBsZWdhY3ktdHJ1bmsKKzc3Mjk0IDYwNDlmZTQwMjJmZmE0NjdjMGYwNTQ2ODFhN2Y2MzFhYjM1Y2NlMDMgcHkzaworNzcyOTUgZDM5OWY2ZGM5ZWU0ODM5ZjNlZDM3MzRmZDg2MDAzNmYxMzEyN2VkYiBweTNrCis3NzI5NiAwZmYyZGFhODNkMGQ3ZDUzZWIzOWQ3ZWVkMmNiN2I0NjVlZGViYjk3IHB5M2sKKzc3Mjk3IGVmYmFjN2QzYTM2ODUwNDRmYjVjMmQ4NzM5OTk2MjllMjc1NTk1MWYgcHkzaworNzcyOTggMGZjZWY5ZDM5NTk0MDFiMTg0YWRjMmE5MTJhMjFiNmY5NjgxOGNiNSBsZWdhY3ktdHJ1bmsKKzc3Mjk5IDU5YzQ3MTQxODcxODVmMDkxZDgwODE1NzA4MzY2N2Y3MTNjMGVjZDUgcHkzaworNzczMDAgMmY2NzYyNTg4NmY2MDAzNTU3ZWI3ZjlhOGQ0ODE5NmU0Nzk2N2JmZiBweTNrCis3NzMwMSBkNTcyOTFmNWU2NjgxMWMxYjE5OTU0MDYxMmNjZmY5MzI5ODY2Nzg4IHJlbGVhc2UzMS1tYWludAorNzczMDIgOGNhMzc3ODUzMzIxZTNlZDZhNzE0MWNiYmY1NzczZDJlZjdhZGJlZCBsZWdhY3ktdHJ1bmsKKzc3MzAzIDRmYjhlYWYxNGYwOWNiMTlmN2Y3OTQ1MzI0NWZhZWRjZjg5OWE1OTYgcmVsZWFzZTI2LW1haW50Cis3NzMwNCBlMWYxMzEzY2U2ZGExOGY3MmY5MDQwZTVlNjk2NmYyODU4ZjQxOTA5IHB5M2sKKzc3MzA1IDcwZjZmYTMwODRlNjdkZDg4Mjg4NjdjMDY2NDIxMGNiZTE0NzQ0NTIgcmVsZWFzZTMxLW1haW50Cis3NzMwNiBhZmY1ZGU1Y2M0NDEwZmQ4ZDEyZWZhYmE2NzkxNWEyNjE5NmJhNDcyIGxlZ2FjeS10cnVuaworNzczMDcgMGZlMjVlMDdiNzdiM2NjYWQxYjM3OWJkYmY4ZDUzZWRkNmMxMzUzNiByZWxlYXNlMjYtbWFpbnQKKzc3MzA4IDMxNzUyY2EwMDdjZjJmM2U0MGI1M2MyZjA3Y2ZmYzAyMTFiMDFiMDAgcHkzaworNzczMDkgZmEyYjI3ZmE1NDE5ZTgxZjlmYzU0ZGQ4ZDQwZWRjZTlkNWYxYzIyYiByZWxlYXNlMzEtbWFpbnQKKzc3MzEwIDQ0MmUxNzBiNTZjM2Y3ZjQ5ZmRhZWYzMGExMTlhZGM5NTZhMzQwNzIgbGVnYWN5LXRydW5rCis3NzMxMSBlNjIyYjJjZmVmMTJkNmZmMTkzODY1ZGE0YjliZDNmYmQ0ZWNiZTAyIGxlZ2FjeS10cnVuaworNzczMTIgNzc2NjQ3ZTNmYjA3ZGQyNGM0YjhjZjliZDM5M2QyOTEzZmU0NDNmNiBweTNrCis3NzMxMyBiMDU3NDNjZTVlOTQzMmZmNTY3NTkzMGEzYWVmYzdiYjljMjZmOTdjIGxlZ2FjeS10cnVuaworNzczMTQgNGFhYjAyOTU0ZGUxZDlkY2RkNDIxNDEwMjY2ZTI3Zjg1M2E1NGQ3NyBweTNrCis3NzMxNSAyMmUwZmMyMGU5MTEzM2Q4NzNjZTg1ZDhlYWQyNmZmMzgyYzIzYjIxIHJlbGVhc2UzMS1tYWludAorNzczMTYgMmNkYmE1MTY3ZGYxYTE1NTg4NDU0ODY1NTJiNWRiMzdiODFiM2JjOCBweTNrCis3NzMxNyBhMmQ2ZDM0NTQ3MGU5NGEzODA2ODVhYjA1N2NlMmFkZTE1OTA4Yjc4IGxlZ2FjeS10cnVuaworNzczMTkgM2VjZWVmMzc4MDY1YTU1YTk3ZDZiMmQyMmQ1YzY3NWNiODBhM2IxMCByZWxlYXNlMjYtbWFpbnQKKzc3MzIyIGY5ZDJjMzQyNmUxNDhjNTExNWEzMzI4NmZmYTNhMDE2YTVkZjczM2MgcHkzay1jZGVjaW1hbAorNzczMjMgZDZiYTM3ZTMyNzc2MzcwNjdkZDgyYTU4Y2Q1NzFmYTQxZGQ1MjU4NSBweTNrLWNkZWNpbWFsCis3NzMyNCA4ODJjOWU3MTFhMmQwNTkzZjRjYmQ1ZmQzYzA5NjUwODQxMTZjZWY0IGxlZ2FjeS10cnVuaworNzczMjUgODZiZjQ0MGJmOWJmMzU3YWNkY2I0MzA3NjNkMWRjZTdlZjdiZDM3MCByZWxlYXNlMjYtbWFpbnQKKzc3MzI2IDYxM2I5OGQwZDg4YmUwMmY3ZDU0N2UyMDgyM2RlMzg0NTJhZTgwMTQgcHkzaworNzczMjcgMDdhNzQ5ZjA2NmExMTcxZjM1YjM2NGU4MjJmZDI4YzkzZTQ0ZjExMyByZWxlYXNlMzEtbWFpbnQKKzc3MzI4IGExOTAxNzExYjIyNWI0MDM5YmNhOGVmMTU5N2FlMmJkZWE4N2E5M2MgcHkzay1jZGVjaW1hbAorNzczMjkgMzA3MDY2ZjAyYWM1MmE0MjMzZDdiNzk4YmU1MjUxZTAxN2JmYTU5YyBweTNrLWNkZWNpbWFsCis3NzMzMSBmNTYwYTgxN2JmY2I1MTI1MjA0NjI4NTk2NjM3MDhlYmFjNDZmNDNkIGxlZ2FjeS10cnVuaworNzczMzIgOGU4MmRkNTUyMmYwMzljNzhmODZjMDE2MWRmZjMzOTNmOWY4Njg2YiBsZWdhY3ktdHJ1bmsKKzc3MzMzIGE4ZmJmMjk0ZDIyZTVjNWZkOTg0ZjVkMWNjNjgyM2E2YzRiZDYwOTYgbGVnYWN5LXRydW5rCis3NzMzNCA5OWU3YzFiOGIxZTFlZTE5ODM5N2IyM2U0Y2MwMTE2MjIzNzE2NmUzIHJlbGVhc2UyNi1tYWludAorNzczMzUgYjNiYjhiM2U1ZTRlYmE1ZTY4YWEyMjljZjllMzVkMjNlYTc2YWM0MiByZWxlYXNlMzEtbWFpbnQKKzc3MzM2IDBmYTllZTRlYWI4ODc0M2Y1ODAyMGUzOTI2NjgyOTRkNGNlM2E4MGMgcmVsZWFzZTI2LW1haW50Cis3NzMzNyA2YWQ1M2Y2NzA1NmE4NDIwNzQ3YmMxYTlhMmY5ZDJkMWM5YzQ1OTc1IGxlZ2FjeS10cnVuaworNzczMzggMjVjMWU1N2NhMWIzZTE4OTdkOGZjM2EyZmI3ODZjN2ZjYmE5NGJjOSBsZWdhY3ktdHJ1bmsKKzc3MzM5IDYxNDRjZDRkNDIxYmEzMjZkY2FhYTg0ZmE2Y2IyNWMxNGM1YWNmMjkgbGVnYWN5LXRydW5rCis3NzM0MCBjNjE4MTM3ZjNmZDNiN2Q0OTViMTlkOTlmMTQyMTFjMmI3ZGU4ZDk1IHJlbGVhc2UyNi1tYWludAorNzczNDEgN2IxMjU0NTczNjU2NGJjOTk3MDc1NjM4MjlhYzA1YmY4YTA4OWNmMSBweTNrCis3NzM0MiA4NzE2MTA2OWVlZjIzZmNlZTI3YTVhZTNjNGY2NzE4MGRlMTcxNGM3IHB5M2stY2RlY2ltYWwKKzc3MzQ0IDMxNWI1OGNiMTNhNjM3YzlkZjUxMGE2N2E0YjljZjdhOTYzMmRhYTMgcHkzay1jZGVjaW1hbAorNzczNDUgZDg4ZTNmNTk4YWE0MTJjZjNjM2Q3Yjc3ODM1MGRiOGE3MmRkMDlmNiBweTNrLWNkZWNpbWFsCis3NzM0NiBkZTczYjg1OGRlMTFkMjEzOWNjNGY2NGZkZGNhNDg2YWQyMTZmYmI0IHB5M2stY2RlY2ltYWwKKzc3MzQ3IGZlNWVjOThkZTlkYTFlNzMwOWRmNTQwN2I3MTIwMmQ1YjFmOTgwNmQgcHkzay1jZGVjaW1hbAorNzczNDggYjgyNjk0MTA3MTUxYzI4YTVlMWNjNDA2ZDgxNzBlMDg0ODg1YmNjNSBweTNrLWNkZWNpbWFsCis3NzM0OSAyMjQ1ODg0Yzg2ZTYxNTcxYmQyN2RiNzA4M2MwZjU4Yzk4NjIwOTlkIHB5M2stY2RlY2ltYWwKKzc3MzUwIGUxM2QwNzI0M2M3M2EwYzgyYzA4YWRiMDFkNGQ4NmY5NjVhNTk5ODQgcHkzay1jZGVjaW1hbAorNzczNTEgNzQwYTc4N2RjNTlhMGIyM2Y0Y2NkNmY2ZmNiNjFlYzZjOWY3MWJkMyBweTNrLWNkZWNpbWFsCis3NzM1MiAxNTkwNGQ1Yjk4ZGI0NzYwMGE1Yjg5OTNkZWZhOTdkMDFhZjI0MTUyIGxlZ2FjeS10cnVuaworNzczNTMgMjJhMzI5MmNmNjcyMmM3ZDBlZGY0NGVhZmQ1YWI4MzRmMmUzNjYxMCBsZWdhY3ktdHJ1bmsKKzc3MzU0IGUwYjdlODFhY2Y2ZjMzMjVjOTcxOTY4OTJiOTQ2OTcwOGI2NTgyOTkgbGVnYWN5LXRydW5rCis3NzM1NSA4OTAzZWE2YTllNjQ3OTE1Njc0NTVhNGZhYWFmNGVhYjMwYzkxZTJmIHB5M2sKKzc3MzU2IGQzOTQyMGEyN2U2NDYwOGM2MDc3Njk1ZjE0MmIxZDZhMmRhMDVkYTkgcmVsZWFzZTMxLW1haW50Cis3NzM1NyBhZmU2ZGRlODBhYmIzOWQ2MTg2NGJhYTA3NGY1MDg1Y2QyMDRjN2EzIHJlbGVhc2UyNi1tYWludAorNzczNTggNTE4YWNiMTJmMzU3ZWJhMDBkZGFjMWU4OWE2MWNmODRjZWZlZjc5NSBweTNrLWNkZWNpbWFsCis3NzM1OSBhNjRjZmVmMWRhMDc1MzdmMzY3MTRmZTMxZDBkZmI0MjExMTVhOGU0IGxlZ2FjeS10cnVuaworNzczNjAgZjIxZjJjOTMzMjllYjA4Nzg4OGQ1OGVmZWJmNGM5ZDYyYjljYmZhNyBsZWdhY3ktdHJ1bmsKKzc3MzYyIDEwYjY2NzhmNWMwNGIzYjYwNWI1NDhmZWJiZjY4YWE2NjdkY2ZhNDEgbGVnYWN5LXRydW5rCis3NzM2MyAzNWZlMjA2OWFiMWQ5ZWE4NGZkYThjN2Q1MjA1M2JmNmQ3OTM2YWZhIHB5M2sKKzc3MzY0IDU5ZTFiMDMwNmMwZTg2YjRjZGY0Yzc4NTk0ZWJhMjBhNWI1OTg3MzQgcmVsZWFzZTI2LW1haW50Cis3NzM2NSA4NGNhYWM3MWQ3OWJkM2U5ZWU3ZTc0ZTVjY2JiOGEzYzhkNTEyZGIyIHB5M2sKKzc3MzY2IGIwZWQzNWM5OWRjNmQ5YTAzZjJkMWIyMzkzYzAyZTE3MWUwZTI2MTcgcmVsZWFzZTMxLW1haW50Cis3NzM2NyA3YTY3NTE1YmY4ZTMwOGI2ODRmMDhiZWY4MDc1NTZjMzk3NzEzNTNlIHJlbGVhc2UyNi1tYWludAorNzczNjggN2NhZjU0Y2U1MjllN2QyMWIzY2M0ZjRlYjAxMmZkNDliZmYzMzZjZiBsZWdhY3ktdHJ1bmsKKzc3MzY5IDBkZDFhYTMzMjY1ZjM4YzI0NjZkYzc1ZjliMjA3MWEyZmRmYjdkNTYgbGVnYWN5LXRydW5rCis3NzM3MCA5ZThkNzc1MGU0NzBiOGUwMjk3YTgwOTZjNzdlNTExZmFlZTQ5MWM4IGxlZ2FjeS10cnVuaworNzczNzEgYmI3MjcwMzAwMDQ3ZjQ0Mzg2NTE4ZWMzYTVjMTYzYjZlYjAzZGRlMCBsZWdhY3ktdHJ1bmsKKzc3MzcyIDBjN2VhZDAzNGEwM2E5MmVkNWQ1ZDc3OWIyNjhmNTMyZDRmZjllZTIgcmVsZWFzZTI2LW1haW50Cis3NzM3MyBkYTNmZDdhNzc5YWNkMjc4MDdkZmI0OTRjNWVjZjJmODI4YTQ2OGVmIHB5M2sKKzc3Mzc0IGYzZmU1NzllOGYxNDdhZjE1OTNiMjk2MDQzMTNhMGZhYTIxMThiN2MgbGVnYWN5LXRydW5rCis3NzM3NSBmNWNlYmYxMWQ1ZTA4OTUxODI4MDdmOGQ4MDk3YjhlY2Q1MjkzOWUwIHB5M2sKKzc3Mzc2IGFjNDkzMWFiMDM2OWU2M2RkZTBiZmZlZDJlMTVlZDczMDFjNDc3OTIgcmVsZWFzZTI2LW1haW50Cis3NzM3NyA2MTUwMjcxMGZjZTlmMzY5MzRlOTcxMDE3YzVjYTAzNTNlMTkwYjlmIGxlZ2FjeS10cnVuaworNzczNzggMWJkYTFmNmI4NWQ0YWUwYWM5NzlkNGIwNzA5ZTUzZGNmZWM2MjJkYyByZWxlYXNlMjYtbWFpbnQKKzc3Mzc5IGQ4NDY4MjA4ZTg4MjQ2MDllNGQ0ODgwZDYzNmExYWNhNjQxNTgyMjQgcmVsZWFzZTI2LW1haW50Cis3NzM4MCBhMWZiNTc1NTMxYjEwMzRiODg2NTIyNWU4ODNiMTEyNzg3ODU0NThhIHB5M2sKKzc3MzgxIGI3NzQ5NWM3N2FlNDA3YTJlMTQ0ZTYyOWMzOWY1NTRkZDQxMzU4NmIgcmVsZWFzZTMxLW1haW50Cis3NzM4MiBhZWU1YTFmMzJiMDBiZjYwMWY1YzYyYmU2Y2E2NGU3YjdjNWI0ZDg4IGxlZ2FjeS10cnVuaworNzczODMgNDQxYmZjZDU1ZjJkOWI3YTM0YjlkYjc3ZDU1ZTMzNjk0ZWI3NWQwMSBweTNrCis3NzM4NCBhZGM4NWViYzcyNzFjYzIyZTI0ZTgxNjc4MmJiMmI4ZDdmYTNhNmIzIGxlZ2FjeS10cnVuaworNzczODUgYjM4NmU1M2RmOTA2OTJjNmEyNmE5ZTNiNTcwYzQyY2VmYTllZjEzMSBsZWdhY3ktdHJ1bmsKKzc3Mzg2IGU1N2NmYzUyNjY1NmY2NmQzZmMzZWEwYmE3YzkyMjc2YzRkZjliYzUgbGVnYWN5LXRydW5rCis3NzM4NyA1YWIyYmMyZjZkYjgxNWVlNTE0NGY4ODg4NGRmOWY0MDVkNWExYWIyIHB5M2sKKzc3Mzg4IGFmMWVkMTk3MTdlZjM5YzkzMjI3MGIyZmJkNDgzNDBkMDQyNTZiNDUgcHkzaworNzczODkgODlhOWRkOGM2MjhkNGMwNTQxYzE5ODgxYjA1ZDIzNjQyODRlNmEzMyBweTNrCis3NzM5MCBhYWRmYzMxYjNmMTQxZjM4OWZlZTRjNWVmYWNlMzVlZjBhNzQ5MGYyIHJlbGVhc2UzMS1tYWludAorNzczOTEgNDY3NWYxMWZiMTI1ZDY5ZTkwYmJmOGI0MTQ4NTY2Mzc2MmZiMzViOCBsZWdhY3ktdHJ1bmsKKzc3MzkyIGI0MDdlOGJlY2E0YTQ3ZTQwYmE0YWE2ZmE0MjAxYmQyZGZkNmRjZDkgcmVsZWFzZTI2LW1haW50Cis3NzM5MyBmMmQ1NDA5NmRjOGMyODM5MzkwODFjNmFhODBkZGU2ZmI0ZjhkODNiIHB5M2sKKzc3Mzk0IGY5YzBjNDExZjgwY2NkMTY2MjhiZTQwZDE3OWNjOWU5NjU1NTI4NTYgcHkzaworNzczOTUgYWI4OGRhYTRkMmNlMmMxZjNkZDY0ZmQwYzQwOTdlY2VmMDFjYTczNiBweTNrCis3NzM5NiBhN2FiMWFiZGViOTIwYTU0YzczOTk4Yzc3NmQ4MWQ5ZWYyZTYyNmRhIHB5M2sKKzc3Mzk3IGMxYmVjMmRiMWZjZDczNWU3MDJhZmNkM2Y1NWZiZjBiMGVmNzllMWMgcmVsZWFzZTMxLW1haW50Cis3NzM5OCA3ZTJhZjRlNTcwMzlmYmI2NzFiNGI2Zjk3MTQyMGJiYzEzYzRmYjQ0IHB5M2sKKzc3Mzk5IDY3ZjdhMGU5ZTIzMzI0MzljNzAzMmFjNGY5ZjQ3NWQ2OGVlNjJjZjMgcHkzaworNzc0MDAgYzJmZGYyNTMyOWZmMzBjZjhkNjhjMGMwZTdjZjQ3OWQ3YjIwMzc0NSBsZWdhY3ktdHJ1bmsKKzc3NDAxIDJjZmYzYmNlNDA5NjcyODM3OGIwMWE3NzM4OTI0ZDk2ZDNmZWE1NjAgbGVnYWN5LXRydW5rCis3NzQwMiAxZjE3NzgxOGYxZDBhNzM0ZmM2MTQyMmMzYmYyMjg5YTI0ODY2NTEzIGxlZ2FjeS10cnVuaworNzc0MDMgNzU1MGI0YjkwNWM3MDdjZmRiZjQ3ZmI2NWQ1MzA4NmE3ZDA0ODkyYSBsZWdhY3ktdHJ1bmsKKzc3NDA0IDNmYTY3MDdkZjk4Y2MwNGM5MjQ2MmY5Mjk2MjM1NDE0N2NkNWY4NGYgcmVsZWFzZTI2LW1haW50Cis3NzQwNSA3OGMzZWI1YzA1ZmIyODYzMzU1Yjk4MDE1Mzk1ZmI2Njk0MWJmMDZiIHB5M2sKKzc3NDA2IGU3ZmEzOTU5OTM1NTQxYTljYjFjNTJlMmJiZmFlYjMxOTFmNGZiYmIgcmVsZWFzZTMxLW1haW50Cis3NzQwNyAzMzk4YThiNzQzM2QwNjI2ZTc2MGY5ZmVhOGExYWI3N2MwN2FjNDAzIHB5M2sKKzc3NDA4IDQwNWM5YjYzOWUwNTUxNzgzOTdmNGEyYzY2NGNkYjU3NzdkYjNlZDEgcHkzaworNzc0MDkgZmJmNDk4N2U1MTRhMjcyODNmMTkyY2Y3NTY1NDlkNjBjNDdhZDk3MyByZWxlYXNlMzEtbWFpbnQKKzc3NDEwIDNlMTcxMjIyMWZhNjg2N2Y1ZGJlMzEzMTMwZDhlYjRjMDkxMTRlZWUgbGVnYWN5LXRydW5rCis3NzQxMSBhNjY2Njc3MDRhYjBlNmU4MWZjNjljOTRiMDI0YjJjYTg4ZTEwYjJhIGxlZ2FjeS10cnVuaworNzc0MTIgOTdhNDA0MTc5ZTU5ZDQ4ZTgwZDEyYjkxMWY5NjM2N2FiZGNmOTcyYSBsZWdhY3ktdHJ1bmsKKzc3NDEzIDI1NDI1NTdhMTJiZDcwY2QyN2NlYmYyNjQyZWQ4MDAyYjUyZDVhMzYgcmVsZWFzZTI2LW1haW50Cis3NzQxNCA3MWYyNDkxZDhmMmY0YTU3YTgzMDUxNmJmY2M0YWFlODI3NzFlMThmIHB5M2sKKzc3NDE1IDY4ZmE5NTNiNWU3NmIxNDFmZDc1NzVmZjJmYTNlNWQ1YmJlMmYwZWQgcmVsZWFzZTMxLW1haW50Cis3NzQxNiBjYzMyZDU3ZTA2YjA0MTc2MWJhYmM1OWM5MjBhZWUzMzY3OTY1OWI5IHJlbGVhc2UyNi1tYWludAorNzc0MTcgZjAwMTA5ZTE2ZWFiOTA4MzAwZmU4ZmU5MDNmMjBjOWQ0MzhmZDNjNiBweTNrCis3NzQxOCBkZDMxYjFjMDMzYjJiMGFhYjAyNzBlYTljZjRlOTFkODY1Zjc5Y2M1IHJlbGVhc2UzMS1tYWludAorNzc0MjAgZGNlNzRhODczMGY1N2NlYmMwNzNlNDQ1YWJkZTIyM2VjMGI3Y2NiNyBsZWdhY3ktdHJ1bmsKKzc3NDIxIDMzZTQwMjkwOWNmMjliYTBlZjNkMTgzMTU5Mzk3YmVhMTZkM2Y5MGEgbGVnYWN5LXRydW5rCis3NzQyMiBlZGZlZDBlMzJjZWRmM2I4NGM2ZTk5OTA1MjQ4NmE3NTBhM2Y1YmVlIGxlZ2FjeS10cnVuaworNzc0MjMgOGE1YWM5ZmY1MDU3ZjBlNjZmNjU2ODVjNGVlNTM2Mjc1ZGI5NTFjMyBsZWdhY3ktdHJ1bmsKKzc3NDI0IDJmOTM2Yjc4MzFiNjdjZmU3Y2ZkNzA0ODg1YzNjZDVmM2I1MzkyOTUgbGVnYWN5LXRydW5rCis3NzQyNSA4YTMyMDY5NGU1M2I1ZmM3OTU2NjVlNjMyNjBjMmMxMDdjY2ZmZjI4IHJlbGVhc2UyNi1tYWludAorNzc0MjYgMDVmYjcxZjAyNTNkOGRhMjJhNTNkYjRiZjkwNzA2ZjcyZjAyN2IxNiBsZWdhY3ktdHJ1bmsKKzc3NDI3IDhmNWNkM2ViN2M3MzRjZjY2ZWZjNWU2ZjgwZTBlNDY4NjcwZDdlOTMgcHkzaworNzc0MjggZDk4MDVhOTYzNTFjMDYwMWFhZGYwMzM4ZTAwMjY5NTBiNDJlZWQxOSBsZWdhY3ktdHJ1bmsKKzc3NDI5IGI0Y2UwYzhiMGJjZmZlODllNGUyMjgzNzNjY2MzNjYxOTRhZmNlNGIgcHkzaworNzc0MzAgOWM4NTJhMzFlODdjZTAxZjZmYzAyYTllMGNhNWU4NjdmZTNjYzJjNSByZWxlYXNlMzEtbWFpbnQKKzc3NDMxIDNlZWMyZTlkNjQ5M2Y1NWEwZDJmOTIyYWQzNjdlMjI5MTZkODYxNjEgbGVnYWN5LXRydW5rCis3NzQzMiAyMzVjODI2NDM0NzRjODk3MzAwZDM0ODU4MGFlM2YyNDk5OTBmYWM1IHJlbGVhc2UyNi1tYWludAorNzc0MzMgMzJlYWI0NDNhOTZiMTM1MWQwZjRiMTliNTI3YTYyYWQ2MGUyNTcyZCBweTNrCis3NzQzNCAzZWIyOWFjN2IyMGE2NGM5MWNjNzQ1MjdlMDM5YmRhZTVhY2Y4OTRmIHJlbGVhc2UzMS1tYWludAorNzc0MzYgZjIzNThkMzNmMTA5ZGRkZDVkZjgzMzk5MmFlMjMwZWMxZjI1MjYxYiByZWxlYXNlMjYtbWFpbnQKKzc3NDM3IGVmYTU4NjdkOGExNGQxOWNiOTNkN2YzNTQxNjljMzdjZmMxZThkZTQgcHkzaworNzc0MzggZTMwZmNiOTU2YjVmY2YyMmIxZGI2MGNkZmZjYzcxNjcwZTkyZTJhZSBsZWdhY3ktdHJ1bmsKKzc3NDM5IDQxY2VhNjZhMjQyNmE1NDYwZTE1MWUyMTA3NTllZDA2NzRjYWUzMGMgcmVsZWFzZTI2LW1haW50Cis3NzQ0MCA5ZjkwZGIyNzYwZDliODFlYmExN2MyMjM4Yjg2NjNmMjdjZGI2ZDkxIHB5M2sKKzc3NDQxIGQwOGQ4NmVhZDM3NWEyMmRiYjgzMDIwMTE2YjBkMGQwNGZjYWNkYjYgcHkzaworNzc0NDIgOGZkMTJlYTYzYzZhYzZlMmQ1ZDYzOTc0MDFhOGNlM2E3Nzg0NWQ3OCBsZWdhY3ktdHJ1bmsKKzc3NDQzIDJmNTRmN2U5YzJiMTliNjJiNTk1NDRjNDQxNGU3YmE5ZmYyOTg2ZmMgcmVsZWFzZTI2LW1haW50Cis3NzQ0NCA3Y2UyMjU4ZGVlOGE1ODljNjQ2MjhjNjZhMDIxNTI3MTY1NTBmZGNjIHB5M2sKKzc3NDQ1IDdkN2I1NzY1YjQ2ZjdjNGUxMjIxMjYwZDBkZjQ5OTQxNmQzNTRiOGEgbGVnYWN5LXRydW5rCis3NzQ0NiAxY2NhOGQ4ZjllZTUwZTZiYzY2NmJmNmE0MDA3M2RlZTViZWZmNjFmIHJlbGVhc2UyNi1tYWludAorNzc0NDcgYzVkYmVmYmM5MzIxMmNiNzVlMmU4OWFhNDgwMTVmMzFmNmE0MWJlMSBweTNrCis3NzQ0OCAyM2YyMWY0ODIyOTQ4NTVlYWI5YWJkN2M2ZjBhZTExNTMzYWNhZDc3IGxlZ2FjeS10cnVuaworNzc0NDkgYjc2NDk3MzNhMzU0NWU0MWFjODFiZmQ3NDAyZDUzNDZkNmQyNThhOCBweTNrCis3NzQ1MCAyYTlmNjZkZjRkYzQ2NzkzNjNmNWQzMzU5YTM1OTVmYWI4MDdlZjE0IGxlZ2FjeS10cnVuaworNzc0NTEgYjRmMzAxY2VhMTE1NmE0Y2JmOWU4YzYwNjhlMTEyMWIzN2I1NDkyOCBsZWdhY3ktdHJ1bmsKKzc3NDUyIGMzMmQzYjA4ZmNkYzE1NTk4NzZiNmJiYjMwMDQzMzY3NjY1MDgzOWMgcHkzaworNzc0NTMgYmUzMmY2MTExODNiOTAzZjQ2NTM3ZDY1NDEyZGE5MTRlOWNkNTRiZiByZWxlYXNlMzEtbWFpbnQKKzc3NDU0IGY1ZmQwMWJhNDdiZTBiN2U4ODIyOTQ1NDQyZDE2YmRjMjY3Mjg1NWMgcmVsZWFzZTI2LW1haW50Cis3NzQ1NSBiODBkMjk2Mjk3OGM4Y2YxOWQyZTViZDZjNTlmZWIwZjNlZGFiNWJhIGxlZ2FjeS10cnVuaworNzc0NTYgMmE5Y2ZlMmNlNTliNDBiYzk5OTc2M2MwZjVmYmUwZTk1ZmE0YWUyMSByZWxlYXNlMjYtbWFpbnQKKzc3NDU3IDY2MmRmZmMxYjM0ZDNmNjBkNWY2MTYwNzk3ZGVlMDU0M2MxODQ4OGUgcHkzaworNzc0NTggN2I1ZjVhZjRmNWFjYjJkZWZjYThlZTM3MTA3NmI4NWYzZmViMDUwMCByZWxlYXNlMzEtbWFpbnQKKzc3NDU5IGE2YmY2OGU2ZTgyNGM3OTAxODZhMjg2NDViNTc0YTQzZjAwYzQ4YmYgcHkzaworNzc0NjAgM2MwYTQzM2IyNmUxZmNhMWY0ODVkNjA2OWE0YTc0MDY0Yzg1MDZkZSByZWxlYXNlMzEtbWFpbnQKKzc3NDYxIDY2ZjFkNGE0Yzc5OTRmOTNiMmI0MTJiNTc3OTdiZDUwODc5OWNhYTEgbGVnYWN5LXRydW5rCis3NzQ2MiA1Y2ExOTQ4YThmZDY5MzIyMmU0NzVkMGJlOWRiYjQ1OTY0ZWU5ZjNlIHB5M2sKKzc3NDYzIGQ1MTM1ODY0NWU2MDYzNzU5OTMxNjE4MDE0ZjAzNmZmM2NkMWZjZTYgbGVnYWN5LXRydW5rCis3NzQ2NCA4NTM3YzM3MzZlOTk2NzdlYzViMjQ3NWZmMjE5NWUyYWQyZTQyNDRkIHB5M2sKKzc3NDY1IGQxZmQwYTM0YmIzNjgyOTAwMDVmZTY1NjM0ZTVjODk3YmYyY2I2NmUgcHkzaworNzc0NjYgYmFkMWFlM2ZkMDYwNzNhMjlmZDJjNGZjZWM3ODk1ZWU4MmRmYTYzNiBsZWdhY3ktdHJ1bmsKKzc3NDY3IDMxMjUwYzM0ODMzYTQ0MjJmYWE3YTA3OTJmOTRiYTJjMzcxODI2YTIgbGVnYWN5LXRydW5rCis3NzQ2OCAxNWIwNjY4ZjBkYzU5N2ZlNjRkMWEyZTRhOTAyNzQxOTk5MDBjNWExIHB5M2sKKzc3NDY5IDYyMmY3OWJiYTUyMzFhODNjNmU4YzBiZjg5MDA4NGIzZDIxYmJmODEgbGVnYWN5LXRydW5rCis3NzQ3MCA5MjI1ZWE2NzdjNGIyNzEzNzkwMDFjNDk3YzAxNzkyNzE1MDZkM2JlIGxlZ2FjeS10cnVuaworNzc0NzEgZTVlNTVmZmU5ZjczOGIwOGQzZTgxOTZiMjJmNGNmZWFiMjViYTFmOSBweTNrCis3NzQ3MiBiMjFlZmMwY2ZlOGJiZTU1MjA5NzgyODA3NDgzYTUyODc4MTk0YjA3IGxlZ2FjeS10cnVuaworNzc0NzMgOGUyN2QzYjhkMmVjNDU5NjhmMGFkNmMwN2I2Y2EzNDU3ZGEyZDE3YyBsZWdhY3ktdHJ1bmsKKzc3NDc0IGFiOTA1Zjc0YmYxMTdhMWE2OGQwN2U4NWI2MjAwYjdiYWExMDU0MTcgcHkzaworNzc0NzUgYzViNmE1YjgzYWI1ZGM2NzI3MDczZjFhMjA4Njc4MGJlNDRjYmU5NiBsZWdhY3ktdHJ1bmsKKzc3NDc2IDlmYzdmMjk3ZDEzMmI5YTVhMTI5MzFlMWFiNzUxMWYyYzFlNDY5ZmMgcHkzaworNzc0NzcgNTcxMDIyODNhYjVlY2Y1NTMzOWQwZjhhOTI2OGRmY2I2ODA1Y2RmNyBsZWdhY3ktdHJ1bmsKKzc3NDc4IGM1YTBhNWQ2YWNiMDdiYTljMjM4NjA0YjIzOGFjYWM4ZjM1ZTQwZjAgbGVnYWN5LXRydW5rCis3NzQ3OSA0ZjRmMDAxYzgxZjU1OWUzNGZhZWNkMDE5NTdjOWNiODhiMmRiZDAyIHB5M2sKKzc3NDgwIDQ3OGFiYzdiY2FhYWRjYTMzNjMzMzZmMzhmMmJmNjgwNzQ4YjU5ZDQgcmVsZWFzZTMxLW1haW50Cis3NzQ4MSAwZjk3NGJiMjM4ZWRhYTNmMWMyZDFlYmZmYzRkZTQwNWE0YmRmY2FkIGxlZ2FjeS10cnVuaworNzc0ODIgYzdmMzNkNTIxNmY5YzQwYzIyYTAxOTdjZGQ4ODk5NWQwODc1MjI4NiBsZWdhY3ktdHJ1bmsKKzc3NDgzIGIzOWEwMjE5ZjcyN2U5M2I0ZDY5MWMxNzI4M2RlMjVmYmQ0YzRhN2UgbGVnYWN5LXRydW5rCis3NzQ4NCAxMDMwNjc4MGU1YzBjZjVkZGY3MzQ1Y2ZjYjcyYzMxNmNiOGZlNDg4IGxlZ2FjeS10cnVuaworNzc0ODUgMjAxYjQ2MWExMmJkZmIxYzgyZGM3MDAxMDQ0ZDBkZjUwYTI2NTA4MiBweTNrCis3NzQ4NiBlOGY4NDYxZDZkMWRmNTFmMTY4ZjlhYmFkNGQyMjhjN2QzOTk0M2U4IGxlZ2FjeS10cnVuaworNzc0ODcgYzQzMGU2NjRlNjA1YmZlMGQ2MmUyNDA0ZGQyNzFmYmFhYTBlMWNlNyBsZWdhY3ktdHJ1bmsKKzc3NDg4IDAzZmE2MWEzN2UyZDUyZDAwMWJlOTA3MjY2YjZhOGEzODI2OWRkZWUgcmVsZWFzZTI2LW1haW50Cis3NzQ5MCBhZjE4MDk4MTNkZTk2ZDY0MzFmMWFhOWU0OWVhN2ZjNDVmZjIzNTVjIGxlZ2FjeS10cnVuaworNzc0OTEgNzZmYjdkYmQ3Mzg4NDIzMmUzMGFlMWNhMDA5YTE2YzRiODYyNWJlOSBsZWdhY3ktdHJ1bmsKKzc3NDkyIDkyMzg0ZDdmNDI1YTU5OGVkZmYyOTI4MjFhOTRlNTFiNmE2NGY1ZGIgbGVnYWN5LXRydW5rCis3NzQ5MyAxNjgyYjk2MmU4ZGVlMWM4ZjU5ZWI5NTFkYWQyOGRlNjdkN2VlNDFlIGxlZ2FjeS10cnVuaworNzc0OTQgY2UxMWMxMjcwYjY5MDZmOTQyOGE2NWY5M2MzMTVhN2ZlMDhjNzRiYyBweTNrCis3NzQ5NSBkNzU4ZWIyYzgyOGU4NmE2MjE4ZWNiMWZjMTRlZmM2YTkxZThiZGUwIHJlbGVhc2UyNi1tYWludAorNzc0OTYgOWJhYjNkN2FiNGY1MWI3M2U5NjQ2NjUxZDUxMTA1NGYzMDdhNjUxMyByZWxlYXNlMzEtbWFpbnQKKzc3NDk3IGIzZjUwZDZjYjY0MDZiYTJiYzMyOTY0MjJkYTQ4NjEzMjA1Zjk5Y2EgbGVnYWN5LXRydW5rCis3NzQ5OCBkMTQwZjQ5MDFhNDIzODA2ZTlmYWJlZTc2ZmNkMDg3N2NiNWJlMWE3IHB5M2sKKzc3NDk5IDllNzNiZTVmYTgwZjg2Y2M1YzAyOTk2YTIwMDIxMGIxNWEzY2NhZTMgbGVnYWN5LXRydW5rCis3NzUwMCAzNTQ2OWU3OWZmODA0NmZlMmExM2M4MmY2MTk5MWQ2Y2ZlODA0ZGY2IHJlbGVhc2UyNi1tYWludAorNzc1MDEgZWI4NGY3MjE3YzY1ZDkyNzhlNGNmMGM2NjAxZmNiODU4OTA4MGU2YSBweTNrCis3NzUwMiA4MDQxM2MxODJhMjhiNjgwMGU3Mzk3MTIyNWIxMmE1N2E0MzBjZjMxIHJlbGVhc2UzMS1tYWludAorNzc1MDMgNjU3ZjE2NTgyOTQzNzM5YjkwNmY2NmY3ZWZhZDQwMTQ0OTJjOGIxYyByZWxlYXNlMjUtbWFpbnQKKzc3NTA0IGM3NmQ0MWU3NDRjMjMxOTAzMDA4OTUzNmNiYmY1ZTU1YmEzYjE2NjMgcmVsZWFzZTI1LW1haW50Cis3NzUwNSBkM2JlYTE2NjlmMmQ4OTNmMjhkNzUxN2NjNGRkMmQ0NTc1NDM3YTEwIGxlZ2FjeS10cnVuaworNzc1MDYgZWVmMmViYzA4MWRlZTAwNmY2ZTM3MWJjOTgwMjVjMDc3NDUyZTNkZSBsZWdhY3ktdHJ1bmsKKzc3NTA3IGJlMGJmMGJiZDk0YWZmZWM1NDE2NGYwNjVjZTQyYzNlNmVlMjhlMzEgcmVsZWFzZTI2LW1haW50Cis3NzUwOCBiMzA0OGE1MmUzYzg1YWM4MzIzNWI3YjlkNTE1ZjE1NDJlYjIyMjBhIHB5M2sKKzc3NTA5IDNhYWVmMmVkZmRiMzU1ZGU1OGJkZDJlMTFlODQ4MjFmYmNiMmJiZTIgcmVsZWFzZTMxLW1haW50Cis3NzUxMCAxZjg0ZGRhZmI2YTM5MmM0YjAwMTEzNTU2ZmUwN2Q2OTJhNzcyMTgwIGxlZ2FjeS10cnVuaworNzc1MTEgNzg2MTBiNDhjMzk2YzE2NGYzNWE3MzVmMDRkNTY3ZDEzZmI5NWYyOCBsZWdhY3ktdHJ1bmsKKzc3NTEyIGVmMGQwNGRlNGE0M2Y5ZTBjODQwZDUwMjFjNmM2ZWRjYmYyMzZhYmIgcmVsZWFzZTI2LW1haW50Cis3NzUxMyAwODJkMGVhZjhkZGFkYzljNzk1OGQ4ZWYwOWE3NzViYjMyNzU2MDcyIGxlZ2FjeS10cnVuaworNzc1MTQgNzYwNzY2NTliMjI0OWUwNDQxN2ZiOGU5NDJhZTM5MmZlNzYyYTE3NCByZWxlYXNlMjYtbWFpbnQKKzc3NTE1IGY0N2QxOTllZTY2OTdmMGY2MDQ2M2JiYjBiZDdmZmQyNjczMjUxYTQgbGVnYWN5LXRydW5rCis3NzUxNiAyMDA2ZmQ4MTZkMjI1MjAyYzA0NmJiZmE2Mjg0YWJkYWZiNTNiNjAzIHB5M2sKKzc3NTE3IDkwMDYyNDViMTlhZmY5Y2ZmYzAwMDFhNjBmOWY5YTBlMmE5ZGJlNGUgbGVnYWN5LXRydW5rCis3NzUxOCA0Mjg4YzQwYzg0NDA3NWIzY2RlMTdkODRlYTcwZGZiY2JjM2MzMzkyIHJlbGVhc2UyNi1tYWludAorNzc1MTkgNTY3M2RjM2I2NDMyZTRjOTBjOTg1YjUxZTRjYWIzODRiYjA1NTFhNSBsZWdhY3ktdHJ1bmsKKzc3NTIwIGVhZmFiYWQ1ZTYwMWVlZDU1NTEyMDdlOTdhZjFhYjBmYWI2MDUzZWYgcHkzaworNzc1MjEgMTg5YTVhYmIyMzIzZTFjZjM1Zjk4YjkxNTRiYjI2OGIxMDRiYjE3YSBweTNrCis3NzUyMiAzMmQ2YTk0Y2QwZmEzOWZlNTg4Y2JjN2NlMTllOWM5OTk1MmZkYTUwIHJlbGVhc2UzMS1tYWludAorNzc1MjMgYTE2YjI0YjI1YWMzMWE3YmY4OTViYTdiYjg0YmNjOTZhOTk1NTc3ZCBweTNrCis3NzUyNCAwZmFiM2MyZGQzMTRjZmFmODMxYjZlYzEwYjlmODg5ZjdjODQxZjEzIHJlbGVhc2UzMS1tYWludAorNzc1MjUgMjY5YzA5OTIxYmIyZmE0N2JhZWQ0MWYxMGFmZDQ3OTU3ZWQ3ZTkyOSBsZWdhY3ktdHJ1bmsKKzc3NTI2IDA4OTUwNDBhZGVmZjUyNjJiNGEwZTFiYjU0OTI0ZjMzNzU4MDVkMjggcmVsZWFzZTI2LW1haW50Cis3NzUyNyBmMjIxODNlNjg4NWM5OTRjN2M2OTkyYmRlZjllNTc2OWQwNWYzOTUxIHJlbGVhc2UyNi1tYWludAorNzc1MjggMTFhZDQyYTc4NmEyMTM5NjRmYTM2YjlkNTEyNWUyMzRkMTY0NzQ1NiBsZWdhY3ktdHJ1bmsKKzc3NTI5IGQxNDkzY2Q5MTMwMDZkNTNhZDA2NjRlOWZmOGViYzI4ZWEwZTA3ZGEgcHkzaworNzc1MzAgOGUxNzlhMGZjYjVlYjhiNTQ0MTliMGU2NGJkZDVhYWUzYzAwZmMzMyBsZWdhY3ktdHJ1bmsKKzc3NTMyIGNhMDBhY2M5YzMwNGViN2E5ZmZhNDg1ZjYxODllMGE4NzhiMTBjMTggcmVsZWFzZTI2LW1haW50Cis3NzUzMyA1YzMyZjNiNjVkMjE2ZmIzNGRkNzk0YTNiMDE1NzBjNGZhNTNkNDhjIGxlZ2FjeS10cnVuaworNzc1MzQgMTc0YmRhYjAyNGViODM1MDAzOTUxNDE3ZGIyMDE1ZDFmNTY1ZjM1OCByZWxlYXNlMzEtbWFpbnQKKzc3NTM1IDYzNTFkM2Q1M2RlZDM3ODBkZGJmM2ViNDZhZTkxZTAyM2NiMzY5MGYgcHkzaworNzc1MzcgZDgxZTQ4ODQ2YjRlYmY4YTJmOGYyMTViMjY0MmRiNTY3MTYyOTQyMCByZWxlYXNlMzEtbWFpbnQKKzc3NTM4IDI5YTE0MTBjZDdkYzgyYzUxMDA3YmE1OTI4YjFkYmY1MDc4NDM5MmIgcmVsZWFzZTI2LW1haW50Cis3NzUzOSAxZWE3ZmJkOTkyOTQ1NDM4OTU1M2NjMzE0MThmYzAxN2FhNmU2OGY2IHB5M2sKKzc3NTQyIGI1ZWU0NzgyMWY0YmQ4N2NjYzFiZDk3M2M3ZmM4YmYyZGIyNmY2ODUgcHkzaworNzc1NDMgZWQ4YjBlZTFjNTMxMWNlZmFkZDEyYjZlMzU3ZmNjZTIwM2Q0MTI3NyBweTNrCis3NzU0NCBhNmNjNDIxMmNkNTdlMzBkMzVhMWRlZTA1OWViODJiZGE5OWQxZDdhIGxlZ2FjeS10cnVuaworNzc1NDYgYTRhM2U2ODg0NDZlNGVlMjUxYjhlYTJmYTY5OTk2M2QwZjA4NjVkMiByZWxlYXNlMzEtbWFpbnQKKzc3NTQ3IGUzNTNmNWQ3OWY0Y2M5MzRmMmY2ODE3NzE4ZWZkMjAzZDFhMDRiMjkgcmVsZWFzZTI2LW1haW50Cis3NzU0OCA4MWIzMTQ1MDYxZDk4Y2VjNGMyZmZmMjRmODQyOThjMWQzNzU4NTIyIGxlZ2FjeS10cnVuaworNzc1NDkgZmI3M2FhMjQ1MDE0YWI5NjVlZTE2OWQxNjVjM2VlMzVkOGJkNDkxOSBweTNrCis3NzU1MCA1MzY2ZDU3NWUyY2QxZDI0YmFhZjNkOWRmM2JiZWE4ZDg4YTgxMzk5IGxlZ2FjeS10cnVuaworNzc1NTEgNjBlMDY5YzU4YTM1ZGMyMmNlOGViMmE1M2JmOTQ2MzMxZDNkMTk5MCBweTNrCis3NzU1MiA3YWVjZmE0NDMyZGYzYThkZWFlOTY1MTg3MmMwM2M4YWVmMTBhOTVlIHJlbGVhc2UzMS1tYWludAorNzc1NTUgNzA3ZDhjYTVlYTBiMDIzYjBiM2U1MWVjYTQ5OTNkZGZhZDk0OTljMSByZWxlYXNlMjYtbWFpbnQKKzc3NTU3IDkzZmExMGJlZjFlMjJmZjk1OWJmNzA4ZGE3OThkN2Q0YzYxM2U0ZTMgcmVsZWFzZTMxLW1haW50Cis3NzU1OSA5MmE2MmRmZmE0MDQ5Y2M3ODQwMTE0MmRhMTNiMTk4Y2JmYTdmNmM1IHJlbGVhc2UyNi1tYWludAorNzc1NjEgMzVmN2UyMzA5N2Q4MzBhNmRjZWQ3YTQwYWYyYTg4YTQ4M2UxZTFmOSBsZWdhY3ktdHJ1bmsKKzc3NTY2IDkzMDQ2NGYzMjIwNDY1M2FmY2I0NDA3OWQwYjBiODc5NDlmY2FkOTMgbGVnYWN5LXRydW5rCis3NzU2NyAyM2YxMmNiZjEyMmMxMzE0N2EwNDg5Zjg3OWVjMTgxNGFjNzliODE2IHJlbGVhc2UyNi1tYWludAorNzc1NjggMWFlMzM3OWMwMjA4ZjZlYzhmNGNhMjRlOTVmOGMzZGZkZjgxMzlmOCBweTNrCis3NzU2OSBhMzA2ODBiY2I3NTg5Y2JlZmQ2YWNiYWFiZTI2NTUyMDU4YmEzMDUyIHJlbGVhc2UzMS1tYWludAorNzc1NzAgNDU0N2E5YmZmN2M3N2U3NzM3MGRiY2NiYjFhODYwYjY2MTA4MTZmZCBsZWdhY3ktdHJ1bmsKKzc3NTcxIDY2ZTU3ZWI1OTk1MTA4MTgyNzY0YWM0ZDQ1NmM5MzRhNjgwNTBlNzEgcHkzaworNzc1NzIgYTlmYjIwMzcwOGM0MTE5NzYwNDliNDYxMGE4NzljNzEwOTgyNGI2NiByZWxlYXNlMzEtbWFpbnQKKzc3NTczIDFjZWZmYjNjOGNiMmU1NWM5Yzg0MTI4YTBjY2FiZjg4OWM3NmYwMjkgbGVnYWN5LXRydW5rCis3NzU3NCAzYmQ2ZGYxMWQxZDZjMjZhMjRkZGFlMTc0MDc1ZDBmMGMwZDJhN2Y5IHJlbGVhc2UyNi1tYWludAorNzc1NzUgZGYwMjAwNzllMjg4OWQ0MGFlMjJjODU1ODRmMTg0OWViMzBhOWRjOSBsZWdhY3ktdHJ1bmsKKzc3NTc2IDhmNzk3MWI4MjBhNDM1YjEwNWUxZTQ3MWYwMWFmMGQ2NGZjNTdmMWIgcHkzaworNzc1NzcgZmIzMzdjYjQ2YjlkZTg1ZmZkNTJhNmJiMGRkN2JhNTQ5OTEyMDMyZiByZWxlYXNlMzEtbWFpbnQKKzc3NTc4IDczMjJjNTY5MTI5NGQ0ZGMyNTc2NWQ4YWViYmMzMDE4ZjI2NjZmMjcgbGVnYWN5LXRydW5rCis3NzU3OSBiOTg4OGMxMzM5ZGY1MjBiYWVjYzliOGM4YTQxYmZmMDY2MjBiOTY5IHB5M2sKKzc3NTgwIDZlYzE0YmM2YWIwYzliNTY1ZDQ5ODExNjQwMDM3OTEwOWY3ODMzN2EgcmVsZWFzZTMxLW1haW50Cis3NzU4MSA4MDA1NTljOWQ1MDRiZmVhMWI0OTZmYTQxNDVkNGUwZWY1YTRhYTNlIGxlZ2FjeS10cnVuaworNzc1ODIgZDYwYjdiMmM0YTFmNTE3NGQ4OWZiY2E4NmU2Y2UwMWI0OTFiZDNhNSByZWxlYXNlMjYtbWFpbnQKKzc3NTgzIGExMTdjYjkyNmQyMDdlMDlhZTI5MzExMWYwYzU5ZWExNTE2NzIzYTcgcHkzaworNzc1ODQgOGU5Njc3MDA3YTFlOGMzYzM0YzE3YWI4NTJhOGY3Yjg2OWU3N2Q4ZCByZWxlYXNlMzEtbWFpbnQKKzc3NTg1IDBjOGNiZGJhZmFhZGRhN2FlN2VlMTliYjVlY2M1NGQ5YjFkNGUyOTEgbGVnYWN5LXRydW5rCis3NzU4NiBjMjQ3NTI2ZDVhNWIwMzQyY2RiODNiY2JiYmJjNWI4ZTg3OTIwZDZiIHJlbGVhc2UzMS1tYWludAorNzc1ODcgYTQ4NWZjZGZlODU5NjAzODljYTk1NWE3ZTU2Njc3Y2E2Y2M3ZGZhNSBsZWdhY3ktdHJ1bmsKKzc3NTg4IDNiNDllZjZiMDlmZmEwYTk1OGEyODFkMzYyZjI3NWZmMWU5ZTVlZmYgbGVnYWN5LXRydW5rCis3NzU4OSA1YzljNTNhNzIxYTU1NGJmYjAyNWYxNGIwZGQ2NTIyM2NhYmY0ZmIyIGxlZ2FjeS10cnVuaworNzc1OTAgM2U2Mjk0NzE4NTBhZmU4Mzk5ZjdhNzRhODJlNTM2MWU5ZjNhOTNlMiBweTNrCis3NzU5MSA2MDM2ZDc4NjliZDFmODQxMTZkZGUxMzVjYzIyMzQ0ZWNjZWU5NWFiIHJlbGVhc2UzMS1tYWludAorNzc1OTIgYmIxMGYzZmZhZTAyODFkMzY5YWMyYjc0ODIwN2IyOTZhMzY0NjgyZSByZWxlYXNlMjYtbWFpbnQKKzc3NTkzIDNhYWRjZTM5ZDM0NTJkOWI5NmVhMzlmM2ZkNGQ1ZGFmOGViYzkyZWEgbGVnYWN5LXRydW5rCis3NzU5NSBmZWFjYWE2ZTQwYjg0YjcwNDgxOGZlNjEyZjhlNGU4OGMxYjFkZmJjIGxlZ2FjeS10cnVuaworNzc1OTYgYTlkNTE4ZmFkYTU5OTU2NWVjYzgxZDVmZmVlNTVlMTE1NWFmMDg5ZCByZWxlYXNlMjYtbWFpbnQKKzc3NTk3IDEyMWRlZWQ1OTY4ZWU2OGU0MWU4ZDRmMjllZTE4MTNlNmJiMDZiYTUgcHkzaworNzc1OTggZDU5Zjc2ZDZiNzk1NzdkYzFhM2RjMWMyOGYwZjgxMDBlYmE0NTFlMSByZWxlYXNlMzEtbWFpbnQKKzc3NTk5IGVjMTkyNjQzYWRjYmEyOWE2ZWJkYWU0ZGMzN2IzMTg3N2I0NWJkOGUgbGVnYWN5LXRydW5rCis3NzYwMCA4NmEzNWU1OWI2YjE5NTg1ZTRjNGEyYTA3ZjA1NTVmNWYwZDdiNmVkIGxlZ2FjeS10cnVuaworNzc2MDEgOWU1OWJlMWQwYzM3MTBiYjFlYWYyMzRhODgxODY4NTZlYzQzYmIyMSBsZWdhY3ktdHJ1bmsKKzc3NjAyIDJkZWYxZGZkZjFmNjM5OGJkMGQ5NWYxMjM1MTcxMWQzOTJmNTljZDEgcHkzaworNzc2MDMgMTZjZGMxNWU1ZDc1YmIxYjMwNjg0MWI4YjllYzI3MGMyMGY4MDRmYiBsZWdhY3ktdHJ1bmsKKzc3NjA0IGY2YTYyNmYzNDg0MGZhMGMzZjVlYmFkOGI4NjAyODgwYjZiZGM3NzAgcHkzaworNzc2MDcgZGY0ZDIxNThmYTA0ODYxZDVmMWY0MzExNWRjY2JlODQ2OTRhYTAxMCBsZWdhY3ktdHJ1bmsKKzc3NjA4IDc1YmZhNWRhMWJlYjUyNTI3ZDc0YmUwYzkxY2UwMzAyNjI2Njc3NTkgbGVnYWN5LXRydW5rCis3NzYwOSBmODBlNmJkNGZkNGU2YTdjYzRhNjE1ZWMxNjNhOWE3MDIwNzZhMzMxIGxlZ2FjeS10cnVuaworNzc2MTQgYmFjODIxZGZmZWE4MDRmMWVmOTE2ZjMwZGRjNWY1NmRkYzZlMjdjMCBsZWdhY3ktdHJ1bmsKKzc3NjE1IDVkYmJjNDNjNTkxYjkyZDcyNWI3ZDkxMDE2MWY1NjcwMzgxODNhZDkgbGVnYWN5LXRydW5rCis3NzYxNiA4ODYzMjBmMWJhODJhMDVhMmQ3ZGIwMWYyZDkwMTZmMDcwOTBmYjdiIGxlZ2FjeS10cnVuaworNzc2MjIgNzNmZWNkNGU3ZmVjMzRlOTM4ODMyMDQwNDE2MWVjNmI3ZDg0NGY2OSBweTNrLWNkZWNpbWFsCis3NzYyMyAyNjVlYjI1MGU0YTU4MTc1ODgyZWJhMjVlYjkyNzUyMjQxNzZmNjNhIHB5M2stY2RlY2ltYWwKKzc3NjI0IDljNTYzYTRmM2Y5YTI0NGI0YWNmYTFhODljNmEyNTg5NWYyZTgzYzQgcHkzay1jZGVjaW1hbAorNzc2MjUgNDY0YTIzNjc2NTQwOTgyYWYwMDllMGY4MWMxMjdlYzdkNDBhMDZhMCBweTNrLWNkZWNpbWFsCis3NzYyNiA4NzUyNWJkNDlhOWQ2MTU0M2QwNWIxZmJlOTQwYTNlMGM4YWJjOTdmIHB5M2stY2RlY2ltYWwKKzc3NjI3IGQ2NmM2ZWJiYzYxNzQwZjBkYjU2ZWJhZGIzMGUwMDhjMmQ0M2EwZTQgcHkzay1jZGVjaW1hbAorNzc2MjggODBiMDc4ZDA1NTc3MzY2MTlhOTFlYmY1M2EzN2JkNWU5YWQ0NjIzOSBweTNrLWNkZWNpbWFsCis3NzYyOSBkODI4Y2M5MWMwOWI1MDgwNzExZDJkYzU0MzBhNDI2YTRkZjIxZDFiIHB5M2stY2RlY2ltYWwKKzc3NjMwIDEzYmI5YTk3ZTFjNTAyNGI1ODRiMGIxNDMxMTE0MDUyZjdhNjM3ZWUgcHkzay1jZGVjaW1hbAorNzc2MzEgNTE3MTJjNDJjNWZiMWY3NmJjMWEyODk3OGFiYWMzNjY5ZGFlOGQzMyBweTNrLWNkZWNpbWFsCis3NzYzMiBjZWMxNDBmNzJkMDNmYmVmZDJhNDNhZGQwNWQ1MzRhMzkxZGYwMzRiIHB5M2stY2RlY2ltYWwKKzc3NjMzIGMxZGNlOTU5NmU3NzFiOWI0MjE5N2ZkYmIyNTk3YWViNDBhYzkxMjggcHkzay1jZGVjaW1hbAorNzc2MzQgMDRkZWEwMDYwMjU3YmZhMjdlMmQxYmQyNDczMDA2YjgwNGM3OGE0YyBweTNrLWNkZWNpbWFsCis3NzYzNSA0MGEzYmU3OGJjOTliZDA5N2E5YjE1OTMzNmFmZGJkMzdjMjYyZmJmIHB5M2stY2RlY2ltYWwKKzc3NjM2IDczZTNlZTQ2M2M5NDg3NzBkOGUxNmUzOTc0MGY0YTMxNGFhYjNjYTkgcHkzay1jZGVjaW1hbAorNzc2MzcgMDAyZjdhYjM1ZTE3ZDA2ZWU1OWRlMjg0N2QzOGMwZGRiNTUxNzJhMSBweTNrLWNkZWNpbWFsCis3NzYzOCAzZGY5YjQwZmY0ZmNlOTZiODFhZDIyMTQyNWNlMzgzYWE0ZWQxZTgzIHB5M2stY2RlY2ltYWwKKzc3NjM5IGY2NDZhYWE5MWIwZTdjZDI4NGM4NjhmNjk1N2Q4MWM1MDNhOWJkNjUgcHkzay1jZGVjaW1hbAorNzc2NDAgZmYzNTYzYmJiYjgwMzliYWViNTYzNTc4YjMzZjIwMDNlZmQxNGMxMSBweTNrLWNkZWNpbWFsCis3NzY0MSA5Y2YyMGJkMTUxNmI5Yzk1ZmRlMzRmM2JiZDBhYzYzOWUxOTFiODA1IHB5M2stY2RlY2ltYWwKKzc3NjQyIGVlZjc2YzgxMmJjYmRjYWY4OWQzMjM0MzgwNTI4NmQyNDM5ODRkMGIgcHkzay1jZGVjaW1hbAorNzc2NDMgYzE0Yzk0NTMxMjczN2JjYmZjNmY3NTc4ZmJiNGM1OTg5Nzg1YjhmZSBweTNrLWNkZWNpbWFsCis3NzY0NCBiNDcxZTA3YTIzNzVjNmEyODcyY2JjZTMxODkzNTYxZWZiMTE3ZGQxIHB5M2stY2RlY2ltYWwKKzc3NjQ1IGI0YWYyMTQ1Njc4YjhlOTJjZTI2NjEwM2YxOGZiZTU2MWExOGI4OTQgcHkzay1jZGVjaW1hbAorNzc2NDYgNjk0YWZmMTY3NzdmODA0ZmJjMGFmN2NkOTFiODFkNDEzZjkxODQzNiBweTNrLWNkZWNpbWFsCis3NzY0NyA3ZDE5OTY3MjdkMDg0ZDg3YjYyYzFmZWRiOGNmMDI4YTc2ZGI2Nzk4IHB5M2stY2RlY2ltYWwKKzc3NjQ4IGRiYzAwZmUzNzc3MTlkNDRhZGYzNmIwMmExNmNjZjY0MTViYThjZGUgcHkzay1jZGVjaW1hbAorNzc2NDkgMWNhYmRmMjg5MzhlZTRlZjBkZjkxYzBkMTE0MWM3MTNmYzg3ODdiZSBweTNrLWNkZWNpbWFsCis3NzY1MCAwYmQyYjA3MjA4MzI5ODVjOGMxNDQ4MTAxODA0MWNiZDkzMGI0ZTRkIHB5M2stY2RlY2ltYWwKKzc3NjUxIDkzMWVjNTU4OTI3MTY0YjA3NWQ0ODExYjM4NjU2MTNhZjM2YzBiZjQgcHkzay1jZGVjaW1hbAorNzc2NTIgMGJhYzNkYjRkNWUyOGM3OGFjM2M2MzZlZDE4ZWFlNzI2OWUxODA3ZSBweTNrLWNkZWNpbWFsCis3NzY1MyA2MzI2M2NjZGIwODFhYTJhYmU2ZTQwMDdkNjI0ZGVhNTZkMTgxNzNmIHB5M2stY2RlY2ltYWwKKzc3NjU0IDZkODk2ZTQyNGEzZGE0MzZlODM5NTA5Zjg2YzYyMGQwYmQzYWZlMWQgcHkzay1jZGVjaW1hbAorNzc2NTUgYjIyMTRlZTI3OTg3OTQ4MWZjNmMzYjg0Y2M3NTgyOTc0NWNiNzc0NiBweTNrLWNkZWNpbWFsCis3NzY1NiAwODEzZTg5ZDAxOTNmNjc5OTNmODY1N2Y1YmYyMmQxODVlYzE5OTA0IHB5M2stY2RlY2ltYWwKKzc3NjU3IDRhZDAzZjcxZDFlMTNjZDUzMGRlYzlmNGU4OGNkZTE0N2YwYzU2ZTcgcHkzay1jZGVjaW1hbAorNzc2NTggNTc3YzA5OWFkYTg4MTcwMTk3NzgzN2RlNTkwYWM2ZjNjZTBmMTJhNCBweTNrLWNkZWNpbWFsCis3NzY1OSBmMDQwODYzN2JlNzdmMjk5NzllODc3MWI3YzAyMzM4MDFmYjQxNDEzIHB5M2stY2RlY2ltYWwKKzc3NjYwIGIxOThiMGUyMWQ2MmNjNjhkNmVhY2E4YzM1NWU5ODA3NmZlMGY2ZDAgcHkzay1jZGVjaW1hbAorNzc2NjEgZDQyYTg1NDYzZjljZjQyOGUyNGRkNDVmMTMzMDgwZjNkNzc4ODJlNyBweTNrLWNkZWNpbWFsCis3NzY2MiA1ZWVjM2IxMWU0MWUxOTM3ZGEwOTA4NDQzZDlmMjc2MDAzMDAzZGUzIHB5M2stY2RlY2ltYWwKKzc3NjYzIGUwM2I5YmRjZDQwNWU4ZDk0YmMxYTM3ZWUwOTk2N2I1MmU1YjM1ODQgbGVnYWN5LXRydW5rCis3NzY2NCBhZTZmYjA1YjRjMTlkZTYzMzdmODdjOTQ4NjE4NWQyMzJiYWRhNjYwIHB5M2stY2RlY2ltYWwKKzc3NjY1IDc4MmE0MGZmM2YwZGMyMmNiNjY1NGQ4M2NlMWI5YWQ5MTBmNDc1ODIgcmVsZWFzZTI1LW1haW50Cis3NzY2NiBmMzRmOGFlNzY0NmU3MDYzOWFlNDI5YTUxNzJjNWE2YWZmOWRlY2VhIHJlbGVhc2UyNS1tYWludAorNzc2NjcgNGY5NWI0MzUyMTc5YzgyZDgzOTdlNTM5ZTRiZTBkYmFkMmY4MzNjNSBsZWdhY3ktdHJ1bmsKKzc3NjY4IDA1OWUxZmQ3ODY1Y2ZlN2I1ZWExNzllZjI3ZTk0YzEwZmU1OWViY2MgcHkzay1jZGVjaW1hbAorNzc2NjkgZmVlN2E4OGIwNmQxZmVjOTU5ZDczZGIzZWQ4ZGNmYTE1YjIxODFmMiByZWxlYXNlMjYtbWFpbnQKKzc3NjcwIGYzOGMxMTk2ZDlmZjE3ZTRmMzhkMmQxNWE0MGZhNmJjODE3NGRjZDYgcHkzaworNzc2NzEgZjFhY2QwMTcyNWUwMTg2NTFkMGJhODJlZDc1YzE1ZWI4MDVlYmUwMSByZWxlYXNlMzEtbWFpbnQKKzc3NjcyIGZiZTZlY2I5MWM0YmU1OTU5ODRjMTc0NjRiNjk0OGE1NGUzYmI2MjIgbGVnYWN5LXRydW5rCis3NzY3MyAyMmNkZWM3ZjQ0YzUyZjJiYzZhOGIyYjMzYzMyMmQ1ZGEzMjBiOTQ0IHJlbGVhc2UyNi1tYWludAorNzc2NzQgY2FhNjRkYzQ0ZDE2ZWZjMmE4YmU2MTEzYTZjMzBmNjQxYzMxMDNkNyBweTNrCis3NzY3NSBmNTY4MzgzYWNjOWY4MDI5MGQwYmMzZTBkNzQzYjEwNzMxMmZjNmQ5IGxlZ2FjeS10cnVuaworNzc2NzYgYTk5NmQ2NmZhZWQwY2EyZGRkYjZiNmU2NDA3NmI3NDU3YjVlYzRmNiByZWxlYXNlMjYtbWFpbnQKKzc3Njc3IDVjMjM2NzA0ZGFmMTVhOTA4M2E1ZDZkYjM4NGUwNDQwY2I2MjJkOWQgcHkzaworNzc2NzggYjYzNmNjNzJkMmRlNzNiM2YxOWYxOWY3MWVhMzc4OTlkNDA1MGI1OCByZWxlYXNlMzEtbWFpbnQKKzc3Njc5IGY4NTM5YjQ5N2Q0YWExMzJhNjUxNWEyM2QwOGYzMThhNmZjZDI2NzAgbGVnYWN5LXRydW5rCis3NzY4MCA5ZTEyNGU2NDAyYmM3MjFkN2FjMGM4YWNmZTQ1MGI2YjliOWY0MmRiIGxlZ2FjeS10cnVuaworNzc2ODEgZWQ0MDI3ZTY2NjAwNmU3Mzg2ODIwNWFhNTkyOTE1MDA4ZTI3MTIyNyByZWxlYXNlMjYtbWFpbnQKKzc3NjgyIDFmNzE1YTM3N2VkMDlkMjVlNWFkYzczOTY3ODdhZmI1M2NkNzBlNTYgcHkzaworNzc2ODMgNGNmZGM4YjdmYjNhZjI2Zjc1OGQ1ODk0MDA5MmJhYzc1Nzg1MTA3YiByZWxlYXNlMzEtbWFpbnQKKzc3Njg0IGY2ZmNlYzI4YWY5ZTQ1OTY0NmRlMzFlNWEzYWMxZTUyYmNlNzZlMDYgcmVsZWFzZTI2LW1haW50Cis3NzY4NSBmZTQ4ODRiMDQxYjkzZDgyNzUxYjg1MzNjMzIyNThlMGY2YWVkZjVkIHB5M2stY2RlY2ltYWwKKzc3Njg2IGQwZDA1NzlkZDFkMTNjZjMyN2ZkZDQwZmJjMDdmYTJlMWZlYTBmOWEgcHkzay1jZGVjaW1hbAorNzc2ODcgNGU2OTlkN2MzMmVjZjhiYTAyNGM5M2JmNWQwNmZlNmU0Nzc0NzQ3YSBweTNrLWNkZWNpbWFsCis3NzY4OCAyY2Y0MWQ4Zjc4N2FhMTA5OTU5MDhhNTA5Y2NkZGU5ZWY4NTMxNDE3IHB5M2stY2RlY2ltYWwKKzc3Njg5IGFkYzk4YmYxNTNlYzA0YmFiN2RkMGVhY2E5NjNmODczOGZmMGM4YjcgcHkzay1jZGVjaW1hbAorNzc2OTAgMDFjZTdhODU4ZGFkYjIzYTUyMzg0OGRiOTMwM2ZlZWE1Yjk4ZDc3ZSBweTNrLWNkZWNpbWFsCis3NzY5MSA2Yjc2MTgxN2I3MTc0MWFhMmYwNDU2ODFlNDc4NDdiNzRiZjhjNTc2IGxlZ2FjeS10cnVuaworNzc2OTIgMzFjZGU2ZTYzYzAzZDhiMzljYzYzODZkYTVhOGI0NTNhNDI4ODRjNiBweTNrLWNkZWNpbWFsCis3NzY5MyA2MDdlMjUyNWMwNTA3ZDUzMjkxNzYxYjlhMDkzNjk1OWRkMmNmZjJkIHB5M2stY2RlY2ltYWwKKzc3Njk0IDBlYzYwMzUzNjU2ZTA0MTMzODZlZjhmMTA1ZmM3YTM3ZDZjYTZlMGUgcHkzay1jZGVjaW1hbAorNzc2OTUgY2VjMmYyODExMTgyMzdmNTE3MDllOWFlMzMzZGE0N2IyNzg3OGVhYyBweTNrLWNkZWNpbWFsCis3NzY5NiBkMGU0YmQ3NmM2OTI3NDM2ZTY4NjJiMzE0YmMxZTU4YTA1MjhjYjgwIHB5M2stY2RlY2ltYWwKKzc3Njk3IGQzYjgzZmRiYzgxYTQ0MTg3YWU3NjkwZDJiNWE3NTNmNTkxNjdlODggbGVnYWN5LXRydW5rCis3NzY5OCA3YTlmMzZjYzZkZjExYWVkMjc0Y2M5OWVlMTAzN2ZlZWUzZjQxYjVkIGxlZ2FjeS10cnVuaworNzc2OTkgYTY3OGZlMWM5YzhiZTkzNjE0MWQyMTkwMTg1Y2M3MDA3ZWIzYTJmNCByZWxlYXNlMjYtbWFpbnQKKzc3NzAwIDY4MDA2NjYzYTg1MjMyYjk2ZWFmNWI5YTkxYWY1YjM0MjU1MjRlNTUgcHkzaworNzc3MDEgNzg3YzY4MGYxZmU4OGNmODU2ODQ3YTVmYjU1NDAyNDIzYzVjMzc2ZiByZWxlYXNlMzEtbWFpbnQKKzc3NzAyIGY2NjljZjEwMGViYmVkM2ZlYzg1MzczYmI2OWZjYWE0ZTc1NWNjOGMgbGVnYWN5LXRydW5rCis3NzcwMyA5NzA1ZWYzZmRiMjI3ODE3ZTVlODA1ZWM2OTJhNjg3ZTlhY2Q5OTAwIGxlZ2FjeS10cnVuaworNzc3MDQgZmE2OWU4OTFlZGY0ZTdjZGZkYmQzZDM4NzY1OTY1NTVjNTgzNjM1ZCBsZWdhY3ktdHJ1bmsKKzc3NzA1IGFjNmU5NjBhMDE0ZDgyYWUyZDY5ZmJhMGY3YzFkNDkwOTkwMTAzMTMgcmVsZWFzZTI2LW1haW50Cis3NzcwNiAyZGQ2NGMyNDg1NGM5MTBkMTI3NjRjOGI2ZWUwYTk4NzYxMzE4NmRhIGxlZ2FjeS10cnVuaworNzc3MDcgYmIxYzMzZWZmZjkzMjkzZmVhMTljNDBkMWE0NWEzYzYxYjUxNWZlYyByZWxlYXNlMjYtbWFpbnQKKzc3NzA4IDMwMWVkNjllZGRjNGVhY2NjMWFiODIxNjAzZjdhYTg4NTdlNDg3MTkgcHkzaworNzc3MDkgOTAyMjNlMzQ1OGViMzM5ZGYwMjM2ZTQ0NTY0MmMwM2NhY2NmOTJkNCByZWxlYXNlMzEtbWFpbnQKKzc3NzEwIDFlYTZjZWJiZDgxOGY3ZDU3MTJmMmUxYzM1ZjU5YjAzZTU5MzMyMmIgcHkzay1jZGVjaW1hbAorNzc3MTEgZjBmMjIxZTFhN2MwMzBmN2Y3ZGQ5NWJjNzllODNlNzliZDA0ZWQ3YyBweTNrCis3NzcxMiBiYWQ1ZTAzZTI0NDVlM2U1NDY2Mjc2MDFiMjlhNjI1NjYyMTQ5ZDczIGxlZ2FjeS10cnVuaworNzc3MTMgZDc3Yzk0N2ZmN2RiNWFlZWYyMTQzY2E5YWVjMzU5NmFiNjVhNDA4NyBsZWdhY3ktdHJ1bmsKKzc3NzE0IGI0MGE1YTU2OGU3NmU0NGIwZDY2NTExOWFiYjUzNTJjZGIzMGFkYTIgbGVnYWN5LXRydW5rCis3NzcxNSAxNzg5MTU2NmE0NzhjNDI0OTRhMDRkODA4ZDY0YTQ1MTQ4YWNhZjg3IGxlZ2FjeS10cnVuaworNzc3MTYgNWFiMzAxMmY5MGI3NGM4MDU0NjBkMDgzZDBlMTMwMTdkMzVhOTk0MiBweTNrCis3NzcxNyA4MDdkODNmNTdiYzg4MzlkNTc1YTRmMmY1ZjE1ZTBjOWMxM2E5YjMyIGxlZ2FjeS10cnVuaworNzc3MTggNWRiODJhNTdkZGQwNjZiZTZlNDVjZmI2MjdkYmQwNmU1YTc1ZjY1OCByZWxlYXNlMjYtbWFpbnQKKzc3NzE5IDM5NDdmZGNhMmY0MGRmZmMxZTAzYTg5ZDNiODQ4OTkwNDJjZGU3NDEgcmVsZWFzZTI2LW1haW50Cis3NzcyMCBmZmM0YTQ0YmZkYjk4ZjNmOWQ3MGUzMjFmZTZhZTBkMzdiOWFkNTI5IHB5M2sKKzc3NzIxIDg3NjU2ZTgzZGMxOTY4MzIxNmI0NTZjNGY1YjVkODE5ODE1ZmU2OWIgcmVsZWFzZTI2LW1haW50Cis3NzcyMiBiZTEyZDM2MjE1MTk1NTNlMjA5NDcyZTQ0MGEyNjJjYmMzYzcwOWFmIHB5M2sKKzc3NzIzIDhjM2QyYTcxZWQwMTVlZWMxMWU4OGYyZDRhMWEyMTJhYmZhMWU1Y2QgcmVsZWFzZTMxLW1haW50Cis3NzcyNCAyZDcyMzljYWQ3MTMyYmU1YmRiM2RiMmJjNjhhYTc1OGRjNTEzN2RiIHJlbGVhc2UyNi1tYWludAorNzc3MjUgMWRjOTFlOWRkNWMxM2E0YmMyZDNiYjdkNGI1ODk2YWIyNjRmMjMyNSByZWxlYXNlMjUtbWFpbnQKKzc3NzI2IDIzMjUzM2Y3MWFiZDZmNmRhOTljZGUzMTJmMjlmNGI4MDM0NmNkYWMgcmVsZWFzZTI1LW1haW50Cis3NzcyNyA2ZmZjZGFmYTAxMTg5OTQ0ODVhMTc0Y2U0MTI4MzE0MWI4MzQxMjFiIGxlZ2FjeS10cnVuaworNzc3MjggNzFhY2Q0NDgyZTY1NWI3ZDFhMTM3NjQzNzFiN2U1OTBlYTQ0NzdjMiBweTNrCis3NzcyOSBkYWIzNGI2MGE3MmUxYWEyMzQ0MGQ2Y2MyZDQyMzA0MWJhMDMwZmQ1IGxlZ2FjeS10cnVuaworNzc3MzAgZTk4ZWU5NDVlMjYyNzMwNDc5ODNiMzY2MGFlMGI5MjI3MTE4NmZkMSByZWxlYXNlMjYtbWFpbnQKKzc3NzMxIGMxMGFjZTViNzZjZTk1NGQwYzQyNWJlYjFhNmRjMmIyYmYyNmUzNTcgcHkzaworNzc3MzIgZmZiOTQ5MjBlZmYzYWI5N2IyZTBlYjQ2NDg3YzIyNTVjNmRkZmNlMSByZWxlYXNlMzEtbWFpbnQKKzc3NzMzIDY4ZDFjODFmZmYyZWE0MzgyNjNhY2IxYTQ0MjJmOGM4NWZkMGZjNjMgbGVnYWN5LXRydW5rCis3NzczNCBlYWI2Y2RlMmEzMWM4NDVhZjk1YTM4MjZjYTU4NWY1N2QwOGUxNDg1IHJlbGVhc2UyNi1tYWludAorNzc3MzUgNWMxZDdhM2JhMjljMTZlZWM3ODc1NDIxYTBkZGRiMmU3ZTZiMzAxOSBsZWdhY3ktdHJ1bmsKKzc3NzM2IGEyNTY3OTFhYTE5ZDBmOGZlMWFlM2Q0ZjI3ZWI4MWE1MTkxYzAyNTcgcmVsZWFzZTI2LW1haW50Cis3NzczNyAwY2NlNjBiNjhlNDY1YzA5MTQ0YjQwZDQ3OTFlMmZhOTI5Yzk1OWQyIHB5M2sKKzc3NzM4IDZhMDU3MGVlMjM2NmVkNmRlNjUxZDg1MTE3ZjVkYzcxNzBiMzFhNzkgcmVsZWFzZTMxLW1haW50Cis3NzczOSA2N2ZmMDQwNzQyNzAzMjExOTgxZmM2ZTM3OTFlMmExYjZiZWMwYjYxIGxlZ2FjeS10cnVuaworNzc3NDAgZmJmZTVlNDIzNDlmNmEzZTAyZDY5YmVkOGZmZjk1Yzk2Zjc0MDhmNCBsZWdhY3ktdHJ1bmsKKzc3NzQxIDI0MThhMGE5YTlhOTI1YzdkYjk5NDEyZmFiNWNjZTIzYWU3Y2Q5MTAgbGVnYWN5LXRydW5rCis3Nzc0MyA1ZTg5MzBmMzcwZDU0NTdlMzA0OTk5ZGI3ODkxM2UwY2E1NmNlN2IyIGxlZ2FjeS10cnVuaworNzc3NDQgZmY2NjMyNGY1MmExMjQyMmQzZGZiOWI4YzQ5YjZiOTEyMTM5ZTUwMSByZWxlYXNlMjYtbWFpbnQKKzc3NzQ1IDA4MzU3ZDk4NzgyYjlkM2U5YWFlNmQ3NzA5MjYyYzViNTNlMjI2NTEgcHkzaworNzc3NDYgMjM1OTMzZDRkYThlZGUwOTNjM2RjN2QxODg0ZjhhMTI1MzMyNTc2OSByZWxlYXNlMzEtbWFpbnQKKzc3NzQ3IDY5ODVjMGU4NWI0YmM4YWNkNTUyNjYzNzFlMmVmYmMyNmNmNTZlMDkgcmVsZWFzZTI2LW1haW50Cis3Nzc0OCA3OGMwYWMwN2FhOWViMjc2ZTY1OTJjZmNlNTVjODUxZDZhNjEzN2E2IHJlbGVhc2UzMS1tYWludAorNzc3NDkgOGRkNDlhODZhZGFhNTQ4MzFmYTk5ZjE2NWJhNTk2MWEwYWM2MmJhNCBsZWdhY3ktdHJ1bmsKKzc3NzUwIDc3MjM4OTUwYzZkZDQwNWY3MjZiMTIzN2VmYjc1ZTNiOTQxZmQ1YTIgcHkzaworNzc3NTEgMWYxNjVjNDQwMzA2NGI0MWVlNjdlOWFiN2YzNjU2ZDczZWM4N2MyNyByZWxlYXNlMjYtbWFpbnQKKzc3NzUyIDYyMDg4MzZmZWRmOTlhNTQ2Mjg0NmI4MzU4ODc2YmFiZjliOTM2MDcgbGVnYWN5LXRydW5rCis3Nzc1MyAzZTBmZWQyNWMwYWU1OWM3ZDA3MDZkMzRjMGY3YWRmMDJiMzIwMjYwIHJlbGVhc2UyNi1tYWludAorNzc3NTUgMjJhZWExMzFiNmFmYzE5MTljZDc3NTAxZjVhZWM3Njk2YmFlNzg0YSBsZWdhY3ktdHJ1bmsKKzc3NzU2IDJiZGU2ZDRhMTBlZGVkZmE1ZjZlMGY3ZGE3MWY2NjM1OTllM2FhMWQgbGVnYWN5LXRydW5rCis3Nzc1NyA3NDExODdiZmM2MTAyZWU1MTI0NzBjYmRkZWM0ZGMxOTVhNDgzYmM5IHJlbGVhc2UyNi1tYWludAorNzc3NTkgNTgyNjZmMWEyZTdmM2UzNjE2ZTExM2IwNzZkOTkyNzZlNmY3MDJjNyBsZWdhY3ktdHJ1bmsKKzc3NzYwIGIyNWI3OGNlNzk4ZGM4N2VjYzdjYzAxOGVjOTIwOGZjZDY1ZGI3MGUgcmVsZWFzZTI2LW1haW50Cis3Nzc2MSBmOWZkMTc5NWZjZjc0ZTEzZDkwOTJiNmE3OWMwMzQ0ZjY4ODA5NjFmIGxlZ2FjeS10cnVuaworNzc3NjIgMTBhZDdkOGU1ZDE3MTVhNTQ1Y2UxOWRiMzVmNjE5OGYyODkxMGRjZiByZWxlYXNlMjYtbWFpbnQKKzc3NzYzIGJjMmI4OGJlYWU0NWRhOGQ5N2VkNTg1Y2ZlMWU2Mzk0NmE3MTk5ZDUgbGVnYWN5LXRydW5rCis3Nzc2NCA5MDdmZjEzYmQ0ZTJlMTQ1NjM2MzA2ZGMwNjQxMmYyNmM0ODAwMzUwIHJlbGVhc2UyNi1tYWludAorNzc3NjUgNzM3OWNmNzBmZDYwM2FmNWY4ZWNjNzc5NTBkMTI3MmM0YzRiYTQ3ZCBweTNrCis3Nzc2NiA4MjMyYjEwZTM0ZTEzODhiZGFlYTMyOGNhM2MxN2Q0NGFmMjQ5MmI3IHJlbGVhc2UzMS1tYWludAorNzc3NjcgOTJlNmU4ZDkwNGEyOWVkZWMzMGIwOWI4OWQ0Yzk1YjJjMDI0MmNmOSBsZWdhY3ktdHJ1bmsKKzc3NzY4IDNjMGNkN2E3ZGI4ZWUzMDE3MWNjNGJkMDRmNzczMzI5YzNkOTU4ZmMgcmVsZWFzZTI2LW1haW50Cis3Nzc2OSA4MDU2MjA1MWJiNzBhYjU3MTA2NTIxMTg5ZDU4M2MxZWYyZGQ4YWNiIHB5M2sKKzc3NzcwIGQ4MTVkZDJmYjViZjkxODYyNzM0ZGE1NTVkNGI1NTE2NjRhNzE1ZjYgcmVsZWFzZTMxLW1haW50Cis3Nzc3MSAyNzQ2YzIxN2RkOWUwYTg0Y2RhNTdjOTMxZTRkM2ExNTJjYTVmYzEyIGxlZ2FjeS10cnVuaworNzc3NzIgZmRlOTcxOWUyMDU2ZjQzYWVhNTYzNjJiMWMwMTQyMjdiMDEwZGQxNCByZWxlYXNlMjYtbWFpbnQKKzc3NzczIGRmMzM1OTkxODUxN2QyMTYyYTNiOTZiZDczNzY2MTg3Y2NjY2I3NDYgcHkzaworNzc3NzQgMGRkZjhkOTY5MGU1YWU3ZDFkMjRiZGVkY2E4NmEwZjlhNmMzMGVjZiByZWxlYXNlMzEtbWFpbnQKKzc3Nzc1IDY3MjZhZWI4NjdiOTAwMjBjYWRiY2I5MDhmNDk4NDE4ZjI2MDVjNWMgbGVnYWN5LXRydW5rCis3Nzc3NiA0OTgzMTFmZDg4MjJjZTc5YWNkZTQ5ODQwMDU1NWE3MmFhZTdmM2FkIHJlbGVhc2UyNi1tYWludAorNzc3NzcgMzRlMmQ1MTYyY2U5M2MyMTIzMjFmODdiYmE1Yzg1MDNjOTU4M2I1YyBweTNrCis3Nzc3OCBhZmQyMGQzZDg1ZGM4OGY0NmNiY2I0N2NiMjQyZjRhMzE0YTFhMTA5IHJlbGVhc2UzMS1tYWludAorNzc3NzkgNzVkMjRiMjQ1MmE1OWIzNTZmNGNkZjRkYzAwMzI2ZjhlOGJhZTFkYyBweTNrCis3Nzc4MCAxMjA1NDYzNDZmOTM5Nzk0NjA0ODkxNGNkM2FiZjI1MTNlZTIxMjg5IHJlbGVhc2UzMS1tYWludAorNzc3ODEgNzQ4ZTI4MmUwOTFjZTQzZjZhMjc1NGY3ZGI4ZGQzMDk4ZGQxMjYzZCBweTNrCis3Nzc4MiAxZGQ4MjMyZDRlY2I5ODFjNDU0NmQ4YWQ2Y2IxMjU1MGRiNjgxODA3IHB5M2sKKzc3NzgzIGQ0ZTIyZmQ1MjhlMmEyZTI2NTE3OWExNDFkNjc5MzVmNmFkYmRlZmMgcmVsZWFzZTMxLW1haW50Cis3Nzc4NCBmNmY5ZWU4M2VjYmYzYzQ3NWZhNDU3OTEzMmE4MGUxYzU0MDVmMzliIGxlZ2FjeS10cnVuaworNzc3ODUgZGM3MTQ3ZDFiN2Q5NGRiZjI5OTNhMGM4YWMyZTFhMTY0ZjVkM2Y1YyByZWxlYXNlMjYtbWFpbnQKKzc3Nzg2IDk2ZDVjNzAzMTQ0MDUyOTM1MTg2OTg1MTlmOTAwMjk3NzM4ZDdkMjQgcHkzaworNzc3ODcgZTIwZTAyZmMxNDQ3ZmM3MzJlZTU3N2QxYTViM2ZkNTJiNjhhYWU1OCByZWxlYXNlMzEtbWFpbnQKKzc3Nzg4IGFkN2E2MTU3NGJkNjg5ZTYwNjgzNzNlZWQ5NTE4N2E4NWM4MTY3ZTUgbGVnYWN5LXRydW5rCis3Nzc4OSA5NTc1Y2UwZGIyMDQ3YzFjNTY2YWE2ZTk4OWQ5NjEyNmEyYmU5YjE1IGxlZ2FjeS10cnVuaworNzc3OTAgYThhNGJjNjliZWExMjI1MGRmZjUyZmZkYTBkOTljMTZiMmJmY2JmZSByZWxlYXNlMjYtbWFpbnQKKzc3NzkxIGU2NjBjYjUyYmYwMDYwZGNjNzFiMGE1OWY3YTg4MGYzZWExMDFlYjggcHkzaworNzc3OTIgMmJmZWVmNjI5OTM2MjgwNDQxYjJiZTYzMzk0NWZlZGUxNTk5MWI5YyBweTNrCis3Nzc5MyAyMDA3MDg4MGVhNDgzMzRiMWZjZTE0NzkwNjAyZDQ3OTkzZTA5NTk2IHJlbGVhc2UzMS1tYWludAorNzc3OTQgZGViZTYxNjczYThiMTA1YmViYjIxOGIwNzUxYjc4ZmNkN2JkNjhjNCBsZWdhY3ktdHJ1bmsKKzc3Nzk1IDdhMzZjYTA0NzQyZGE5YjI4YzY0YzFmMjNmZTU5NDQ5YTJiZjU5ZmIgcHkzaworNzc3OTYgZjk4OWY0ZjMwMjQ1MjI3ZDlhMTk0MTVmZjUwODAxNzc2ZTk5YWE0OCBsZWdhY3ktdHJ1bmsKKzc3Nzk3IDRmOGIyYTE3M2M4ZGM1YzNhNGVkZGQwNjBkNDU0ZTNhNmU3OGY1YjAgcHkzaworNzc3OTggMWEwMDgxYjg1YzA0ODk1ZGFlMjdlMmZmNzkzOTdhZmU1MTRkMjJhZCBsZWdhY3ktdHJ1bmsKKzc3Nzk5IDAxMWQ5NjdjMWEwNDk2NmIwZGVmMmQzYjdmNDkwMDU4YTFjOWFiODcgcmVsZWFzZTI2LW1haW50Cis3NzgwMCBmNDFkMzUzZWI2NjAyNjZkZmY1YWM2Y2U3NzQ1NzgxY2I1ZmYwYzkwIHB5M2sKKzc3ODAxIDZhNDc5MmNiZjRjOWYzNjlhNWU0YWM4YmU1ZmRlODdhZjljMWVmNGUgcmVsZWFzZTMxLW1haW50Cis3NzgwMiAwYmQ2MTZkZmM5Nzc4NWEzMTE2ZDg3YTdmNThjMDE1NDhhNmY5ZWNjIHJlbGVhc2UyNi1tYWludAorNzc4MDMgN2ZiNzY0NGEwYmM2OGE3NTg5ODU1ZjU5YTM3NWFiNWM5ZjVlMDJhMCBweTNrCis3NzgwNCAzZjM2YzllNmE1YWY3ZjI0NDU2NTBhOTc4NzNlNTI3ODAzYzMzODY1IHJlbGVhc2UzMS1tYWludAorNzc4MDUgMWFiYzIxOTFiZWFmNDk0YzkzYTZiYWZmMzI1NGQ5ZDFiZDEzY2YyMiByZWxlYXNlMjQtbWFpbnQKKzc3ODA2IGE1ZTY4YWI3ODk1YmQ4MWM2N2ZkMDAxNGRmNzUyMTJlN2YyMzU1ZGMgbGVnYWN5LXRydW5rCis3NzgwNyA2NzEwYTQzZjE5M2YwZjg0ODBkODMxYzlkZTVmZTdjNjg0YTYyYjFlIHJlbGVhc2UyNi1tYWludAorNzc4MDggNGNmNWFlNzBjYjExOWViMmI0YWJlYzJlZGQyOGMwOTAwMjdhZTQ1NSBweTNrCis3NzgwOSBmNjA2NDc0YTIxMGQxY2U4YWMzYzkxZTRiOGZkZjU4ZmFiYzllYjYwIGxlZ2FjeS10cnVuaworNzc4MTAgMjQ1ZjM2MjgyMTEzNmM3OTBmNjBkYWM3M2JjYjZjMmY5YzkzYzIzNiBweTNrCis3NzgxMSA2NThlYjVhZTQ2MTU4MTI2MDI2ZGRjYTlkYmFlNmYxYTQ1MDhiYWI1IGxlZ2FjeS10cnVuaworNzc4MTIgODJhZDc4NzExZWRiNTI5ZDNlYTViMzhjYmM0NjE2NDhkNGFjY2ZiYSBsZWdhY3ktdHJ1bmsKKzc3ODEzIDMyMTg3MGI1ZDAzMGFkMDY1YzVkMjBjZTE5YjhkYWQ0NjVmOGM1MTQgcHkzaworNzc4MTQgZjJmNTlkN2I0NjE0NjBjYTA1ZTYwYjQwMTg4YWJlMGM1MGNhMmFmNyByZWxlYXNlMjYtbWFpbnQKKzc3ODE1IDU0NzI1ZTJlOGFkZDBlOTE0MWU2ZDYzMTkwYmM0NmM0ZjA0YzBhZjcgbGVnYWN5LXRydW5rCis3NzgxOCA1YWE5MDI0OGE5OWY4ZmFlYzc5Y2UxOWQ4OTM1NDk0NjdjODQyNmFhIHB5M2sKKzc3ODE5IDM4YjkwZmUzNDYyMzdlOWE5M2MwYmVkZDdiNDYxMTIxMTY3NjZkMzIgcHkzaworNzc4MjAgMGQ0YjA1ODlmYmM3MjMzMjU4MDBlNmNjNDQ1ODczMjdkZmU0YzRlNSByZWxlYXNlMzEtbWFpbnQKKzc3ODIxIGM1Nzk5OGUzYmUzM2FmOTJkMWExYjhkMmFkYTNjYTk0ZDQ3ZTI0MzcgbGVnYWN5LXRydW5rCis3NzgyMiAzY2U4NjBiOWU3MzIzN2E0MmY5ZDg1MmYxOTFkY2ZlYWU3MTFkMmRiIHJlbGVhc2UyNi1tYWludAorNzc4MjMgMmIwOGRlOWExZmEwMTIwMGY5MDljZTQwZjNiMzIwYzUyYmFmYzZjZCBweTNrCis3NzgyNCA2ZGU2NDg5NmM2Zjg4MTgxZTIzOTMxN2ZjNGJiMjM0YWFkNTkyYmQ4IHJlbGVhc2UzMS1tYWludAorNzc4MjUgMmRhYjQ3NjA2YWI2M2NkYTgyZWY5ZDNmMjIxYWNmMDE1ZTFjYzY0YyBweTNrCis3NzgyNiAzYjY1MDY4MDg3YzYyZjUwODJmMjM2MTRlZmE3ODZkNjBlZDZmZjg4IHJlbGVhc2UyNi1tYWludAorNzc4MjcgMjBmMGRhMzFmYTJjZDc5YjNkMDE4OTMyMGViNzZhNWZiYjUwMmUzNCByZWxlYXNlMzEtbWFpbnQKKzc3ODI4IDg3OTEwMWEwYjU3OTcwMjUxZTlmZDM1MTc5ZGQzYzE3Njg1MmU4MjEgbGVnYWN5LXRydW5rCis3NzgzMCAyNzVjZDlmZTA0ZjFiZjk2ZDUxZTg4N2E0MzBlZTllYzAxNzM1ODkwIHJlbGVhc2UyNi1tYWludAorNzc4MzEgZGRlMjBhZTY3ZjlmMzNhYjA5MGI5ZjQ1YjIyY2I3Yjc4ZGU4NTM4NiBweTNrCis3NzgzMiA4ZWYyNTIzYzNhNWM1NzIxMDIzYzI4YTJjN2VhYWNiMjgxYWY2MjAxIHJlbGVhc2UzMS1tYWludAorNzc4MzMgYTJjOTE3Mzc4NDExZTIzZWE5OTEwYmI4ZGZiNmZlNDM2ZWY2OTg1MCByZWxlYXNlMzEtbWFpbnQKKzc3ODM0IDYwODUzYzFhYzU2MmQyNTk4OTBkZGY0NzI1OGI1NWZkNGRjMWJmODEgbGVnYWN5LXRydW5rCis3NzgzNSBlYmY0ZjIyNmFlZWY5ZGViZmU2YmQ1NDg4YjNhZDhmMmEyMTcxNzc5IHB5M2sKKzc3ODM2IGQwMTQ2MjNlY2Y3MjBjMmRmNDUwOGVjMWFjMjVjNzVlZTBiODE0NjMgbGVnYWN5LXRydW5rCis3NzgzNyBmMjBmOGZjNmNmYWUzNDQxZDAxOWU4YmJmNDYxM2IwOTE0NzIxMDc0IHJlbGVhc2UyNi1tYWludAorNzc4MzggZDZmYjM3OGQ3NjVhZjkxNWUzZmIwZjIxN2ZlOWRiZDIxMGIzYTkyMCBweTNrCis3NzgzOSAxMDllYzA2YmJjZjFiODA1MTFmNDQ3MTc4YTdiYTk0YWY0NTI4OTZmIHJlbGVhc2UzMS1tYWludAorNzc4NDAgZTBhZDFmM2M5MWFmMjJjY2FlOWRkMzYwMmE4OWRkZGI1MThhYzM4ZCBweTNrCis3Nzg0MSBiZmMxM2NlNjJmYWIwZGI0MmQyZTU5OGNjODdjMGY5MDIyNWE4ZmE4IGxlZ2FjeS10cnVuaworNzc4NDIgNjI5NWUxNjMwM2E3MTgzZDZjNTNlZDFiYmU2MzdmYWM3ODAyZWYwZSBsZWdhY3ktdHJ1bmsKKzc3ODQzIDU4OTNlZjlhOWI4NGJmODhiMGExZGY4OTQ5NmNkMzE4NzZkZTQwYzMgcHkzaworNzc4NDQgZWZjMjAzMGNlNmIxNmQ4OGVjMzhhMTIzMWYwYTFiNzQ0Zjg4N2M3NyByZWxlYXNlMjYtbWFpbnQKKzc3ODQ1IDc0NTBlMDNhNTAxZGJiOWJmN2MxYzI4ZGE4YTlhNzJmZGYwMzcyZTIgcmVsZWFzZTMxLW1haW50Cis3Nzg0NiA4NmI4ZjRjYjkyM2FjMzM4ZDg0OGJlZTA3NTIxY2VhYjUzNmQ0NmM2IGxlZ2FjeS10cnVuaworNzc4NDcgYzBjNzZkNDhjZDJiOGVjMTk4MmZjOTQyZjk4NDkwOTBkMjdmMWZlYyByZWxlYXNlMjYtbWFpbnQKKzc3ODQ4IDVjNDdjZDE3MzZjMTYyYTBkNWFiMWMzMWQyMDUzMTg4MWFmMTEyN2IgcHkzaworNzc4NDkgZDM0ZDNiOGY5ZGVlNGUxN2FiMzlkZWZlNTU0OGJlZTY3MGRkZmM4ZCByZWxlYXNlMzEtbWFpbnQKKzc3ODUwIDM5MzMyYzBhZjg1NjVlYTk0YmIzOTkwY2NmNWM2NTRhZTIwMjQ1YzMgbGVnYWN5LXRydW5rCis3Nzg1MSA4MjRlNWVjZjkwMjI1YjU5ZjM2MmQ2NzkxZDllYzQyYWUyOGM1ZTExIGxlZ2FjeS10cnVuaworNzc4NTIgOTM0ZDQ5NThhNDE1MWFmZTU5ODYzNmEwYWNiOTIwN2E4NzE1N2RhYyBweTNrCis3Nzg1MyBkNzlhYTViNjY5NzFjOWYxYzI5MGFkZTE0MzBmNTAxNWVhMzliYzhlIHJlbGVhc2UyNi1tYWludAorNzc4NTQgMDE5ZjUyYWUwZmU4Y2NiOWZiY2JkNGQzYTQ5Yzg5MzVlMDg1Yzg3ZiByZWxlYXNlMzEtbWFpbnQKKzc3ODU3IDJiZjczNTdkMTIyYzI2YzEzMTk4ZWRiOTg4ZTFhNGY1MjJmNTM0ZTEgcHkzaworNzc4NTggZDIxYjA1ZmY5MjBhZmFmMDIzZGE2NTJlY2ZhOWQ0Y2Q2YmUwMWUxYiBsZWdhY3ktdHJ1bmsKKzc3ODU5IDVhN2Q3ZWViODhjMTEzMjVhNWRkNTNjNDgxZTc3Mjg3OTkzYWU4NzkgcHkzaworNzc4NjAgMDkwZmMzOWNlNWVjMzVkZDVhNDJmMzYxYjA3ZmVlZTYwNzE4NDc4YSByZWxlYXNlMzEtbWFpbnQKKzc3ODYxIDk3NmVjNDVkOTA5MGFmODRkOTBkNDgyZmFhNTQxNzVhNGVhYzA4YWYgcHkzaworNzc4NjIgNjkwOGJhNDQ1ZDJiMzVjMzkwZDgxN2YyM2U3Njk0OGNkNDUxYzVlYyBweTNrCis3Nzg2MyBmNTYyMDdiOTM2Y2MzNTk0ODViNGE4ZGU2YWVhNTFjNDQwMGQ2NDMyIHJlbGVhc2UzMS1tYWludAorNzc4NjQgZTk1NjU3MGJjM2I5ZjA0ZDlmOTU0NWJhN2NkMzc4OTZmZTdjYzAxOCByZWxlYXNlMjYtbWFpbnQKKzc3ODY1IGZjNWVjN2UwNDE3NzNjZmI1MmYyMzgwYjlhNGIxNTk1YmMyN2Q3ZGEgcmVsZWFzZTI2LW1haW50Cis3Nzg2NiBmZTA4NmFiYjRhZWJlOWU2MDkwOGE1NWNmNTIwZWEwZGE3MmY0MGMyIGxlZ2FjeS10cnVuaworNzc4NjcgNjhjNTZjNGI4NjMxY2JkOWM4NzcyNzM0NDlhNWY2ZWUyZDYxZTkxNyBsZWdhY3ktdHJ1bmsKKzc3ODcxIGYwYmM2ZDhhYTIxZTAyNTNjMmQyZGRlY2YwMWViMDhhYzc5NDFmY2EgbGVnYWN5LXRydW5rCis3Nzg3MiA3MDk4YTQ2ZjBiNzVlNWFhY2ZhZjgxZDY1ZDcyZTM2MTNiMDIzNTMyIHJlbGVhc2UyNS1tYWludAorNzc4NzMgMzhjOWNjY2JiZTVhNGFjZDQwMDUxNTdhY2ExZjZjZTg1OTQyMWYwZSByZWxlYXNlMjUtbWFpbnQKKzc3ODc0IGEyMDQ3NzRkOWM3MGJkZGMyY2ZiODA3NTc1YWQ1YzQ2YmI4YWE4NzQgcmVsZWFzZTI1LW1haW50Cis3Nzg3NSAyZGRiZTYyYTY4MjBmYTVkN2I3MjM2NTU4MjQ4YzQ2YjA4ZTQ3MDQwIGxlZ2FjeS10cnVuaworNzc4NzYgNmU2YjU5NDEzYTEzODk5Yjc1ZGZiMWIwYzlhOTdiMjhlYzc2MjBkNyByZWxlYXNlMjYtbWFpbnQKKzc3ODc3IDU2NmQ1Yzk1N2MxOTc1OTcyMzUzN2EzNzk5ODcwMTFhMWY2OThkNDcgcHkzaworNzc4NzggY2UwZDRkYzQ4OGQyOTA1ZGNhMTkxZmQzZWM3NDBkNTM2YzIxN2RhZiByZWxlYXNlMzEtbWFpbnQKKzc3ODc5IGY2Mjg0MmMyNWJkODMzZmQ2NjE3Mjg2ZDBmM2NiNGFkZTE5NmZjNDIgbGVnYWN5LXRydW5rCis3Nzg4MCA2YjMzZWE5NDg4OTY2MTgxMWUwOWY2MjgyZjk4ZmNjNGNmZmEzNzEyIHJlbGVhc2UyNi1tYWludAorNzc4ODEgZmQ1ODAxYjgzODhkMTU3MjJhMDQ3ZmNlZDQ4ZWI3ZTA3MGU1ZTkxYSBweTNrCis3Nzg4MiA5ODFhMzlmMzU5MTRkNDBjMmI2NGU0YzIzMGNjNTZiNzJjYWMxYzU3IHJlbGVhc2UzMS1tYWludAorNzc4ODMgNjliZmZhM2M3ODJlMzI1ODk0ZWY1NWZjZWE2OGY1NWVhODA1OGMwOCBweTNrCis3Nzg4NCAxZTQ3YmQ2YmJlZDU0Zjg0NGRkZDJhYzJjZjlmMGMxMmVlYTJmNTM5IHB5M2sKKzc3ODg1IGE3M2I5MmQxZTlmZDU4MmU3NWFhMDZiNWYzODRmODg5YWZjMTg1YzUgbGVnYWN5LXRydW5rCis3Nzg4NiAwNTA4ZWFkMThkNmY1YTA5MmU5ZDk1MGM3MmMxNDY3MDU1MDllZWYzIGxlZ2FjeS10cnVuaworNzc4ODcgNTZhMjIwODI3MjA5Y2JiMzNkMjBkNDQ1MTM3OThiYzI5ODNjYTBjNSBsZWdhY3ktdHJ1bmsKKzc3ODg4IDE1OWRhOWE0MmZlZjFjNmFiMDJiOTJmYmNjMDYzNWJlMDI1NDM0NGMgcHkzaworNzc4ODkgYmNiYjkwNDhmNDgwMzczYWY5YzhiN2IzNGMxZTNmZGU5ODFlNmNhNCBsZWdhY3ktdHJ1bmsKKzc3ODkwIDc3MTMwZjJmZTk0NGU0YWNkMTBmMDM1YjY3OTRhNDJkMTJiMWVhOTEgbGVnYWN5LXRydW5rCis3Nzg5MSBlZjU2MzljNzE5NjQzNWNlMGJlN2U0ZTMxMWZkMTUzYzViZDViMzNlIHJlbGVhc2UyNi1tYWludAorNzc4OTIgMjQ2NjVhOWQ4ODFhZGUyNTY5N2E3NGM0ZDE5OGRhN2VkZjQ3ODc0NCBsZWdhY3ktdHJ1bmsKKzc3ODkzIDc1YmIyZjE2OTFjMGVhOThiMTc2ZTYzMmZiOTAxMTRiM2JmYTNjNGYgcmVsZWFzZTI2LW1haW50Cis3Nzg5NCAzOGUzMDdmYjgzOTg1NmFjOTcwZWZiYzJjNzBjZmZhNjdiODRkNjE3IHB5M2sKKzc3ODk1IDMxMWRiN2E2OGE4MjkzNmQxMzRhZGQ3NDc3NjgyZGFmN2RkMzFjNzIgcHkzaworNzc4OTYgYzdlMzJiNGUzODc0YmJiY2UwNDgzODhkNWVmMzlhZGZjYjEyMjQ3NSBweTNrCis3Nzg5NyBkODg3ZGI1MDFhMjIxMWFhMzRkNzFlMWJmNzBhMWZmM2VhOTNhMzUxIHJlbGVhc2UzMS1tYWludAorNzc4OTggZmQyNGRlZGJhNTllYTVmMGUwMTNjZDA5YzVlMTBhNDcwYjk2NmQwNSBsZWdhY3ktdHJ1bmsKKzc3ODk5IGIyZGJmMTFlMmFjNGNlZjA0NWQwM2VhYzQ0ZTlhYjMwNTY5NDk1ZDggcmVsZWFzZTI2LW1haW50Cis3NzkwMCA4NjA0ZTlhMjU3Y2M4ZmNhODUwZGRiNjJkYjY2NjM1OTYzYWJjOWUyIHB5M2sKKzc3OTAxIGM3ZGNiZDY1YzIxMzUyM2UzNDM2ZDU2ZDk4N2RmMDg3ODVhYzRjM2EgcmVsZWFzZTMxLW1haW50Cis3NzkwMiBjOTc5NTdmNWNkZjkyNDVhMmU5NDg4NGE3ZmUzNjMwZjA5ZTZmMjBhIGxlZ2FjeS10cnVuaworNzc5MTAgYWY0OThhYjJhZmI0YTVkMTZhZDU4NmE4YThjMjk1ZDM2OTdjZjAyNiBsZWdhY3ktdHJ1bmsKKzc3OTExIDY1MmUwYjc0ODg1YWM3NzgxODIwYjA3NWRkYmZlMjhiNGQyYWM0NTAgbGVnYWN5LXRydW5rCis3NzkxMiBkMDUxNzc5YzViYmQ2ZGFkOGY0NGU5Y2ZlOTMwZThkZjUyZWM1NGFiIGxlZ2FjeS10cnVuaworNzc5MTMgNWJhZGViZGI0MzhjZWY3NTViYzBkNDQ0YjU2YTVkMzI2OWJmODY3ZSBsZWdhY3ktdHJ1bmsKKzc3OTE0IDRjYmZmMDEzOWY1YjgwODlmOGEwYThjZDcyMWU1M2E4ZDc4Y2YxOWIgbGVnYWN5LXRydW5rCis3NzkxNSA1MjViNmM1ZDViMTJjY2ZhNjZlZjQxZmRlNjUyMGVjYjNlZDgyNWE3IHJlbGVhc2UyNi1tYWludAorNzc5MTYgYzM3Zjk5YjU0ZDdjZjQ1M2U5MmY2Mzk3OWNlZWE0NGIwYThhY2ExOSBsZWdhY3ktdHJ1bmsKKzc3OTE3IGM3NzAzYjY0OTUxNmI3MzAzNjBiYWI0YzE2NDNkNzNkNWEzM2M5M2MgcmVsZWFzZTI2LW1haW50Cis3NzkxOCBjZDAwYTk0MTg2YzkzNDk3N2E1M2FmYzQzYTIxNmY5M2EyODY3NDgwIHB5M2sKKzc3OTE5IGYzZjA4ZWU4M2M1NTg2MzhhZGQ0YWMyMzUzOTI0ODViNzIxMjA3NzYgbGVnYWN5LXRydW5rCis3NzkyMCBkZjJiOWE2ZDI4YWVmODViOWEyZTU2MjY0YTgzODA2YTM2MGFhMDYyIHJlbGVhc2UzMS1tYWludAorNzc5MjEgOTkyY2FlMjQ2YTBjN2ZhN2RhZGIzMWM5Njk2OWYzOTVmYjE2ZGU4MyBsZWdhY3ktdHJ1bmsKKzc3OTIyIDdjYjE0YjUyMmY4MWNiYzZiMGU5OTc5MzFjZjBkN2RmOTYwNWFlNGQgbGVnYWN5LXRydW5rCis3NzkyMyA2ZmQyYjgxNDdmMmEzN2U1YWFjYWE0MDU4ZGY2NDQ2NTYwYWJkMTI0IHB5M2sKKzc3OTI0IDAwZDc4MzhlYWYzYWQzNmU3OTllZjYzMzM0M2EyYzIxZDExOWRhNGYgcmVsZWFzZTMxLW1haW50Cis3NzkyNSBkMzEyN2Y2ZGUxNmMwODdkOTFmZmRkYWNmMWU0ZmI3YTcxYWVmM2UzIHB5M2sKKzc3OTI2IDdjZDE4MmJlZTYzMGMzMzUwMzJkOWM0OTYxMjgwNWNiZDJkYWQ1NmYgcHkzaworNzc5MjcgMDhjZjRiMzUzMWM5NDY0OGUwZWQ4MTY5ZjA4YjM2YjdiNzUzMDAxMiByZWxlYXNlMzEtbWFpbnQKKzc3OTI4IDM4MDk0Mjg5MmRjMGUwZWJhMzllZjQzZTkzZmQyNTlkZTMyYTEzYTcgcHkzaworNzc5MjkgYjdmZWNlMTViYTVmYjk4NzQ4NTRkZmYzOGQ3YzA1MGEzODk1MDkxNiByZWxlYXNlMzEtbWFpbnQKKzc3OTMwIGI4ODhkYjc2NDVhYThjZmYyN2VlNjc4NzAxM2MzNzA5MGI3NGI2NWEgbGVnYWN5LXRydW5rCis3NzkzMSBlYjk4N2M5ZGYzNzhmYzQ2Yjk4NzNhYTMzOTVjZWQzMDljZDU1NDk0IHJlbGVhc2UyNi1tYWludAorNzc5MzIgYTg3ZmNlMDNhMzRkZDIwNDQ5NzhhYWEwNmQ5MTRjNzAyNjczMjBkOCBweTNrCis3NzkzMyA5NjdiZmQzNjk3MzY2OTczMTEzZTA3MDJiMGJlYzY1ODkyMWQyZWQzIHJlbGVhc2UzMS1tYWludAorNzc5MzQgOWIzNTFjYjllZjk4MzM5NTRlZDQwZmQ5NzFkN2Q5MTc3OTZkNWYxYSBweTNrCis3NzkzNSBlZjgxNzg0Nzc1NjdmN2MwNGE5Y2IyN2NmN2M2YWIwNGU3YjQ2MjEzIHB5M2sKKzc3OTM2IGNjYzZlNWQ1YTNiMzg3OTBkNTI3N2Y3NGE1M2M0YjkyY2ZlZmY2YTcgbGVnYWN5LXRydW5rCis3NzkzNyA5OTNmNzAzYTYxYmFlMDhlOTEwY2E3YTdiODZhNTIwMTg4ZDA4ZDQ0IHB5M2sKKzc3OTM4IDJiMWQ2NjVlNjYyODQ2ODZjMDUyOTllMDJhNzBlZTEwMjc5YWM5ODQgcmVsZWFzZTMxLW1haW50Cis3NzkzOSBkYWJiNzczNDg1MDFhYTE2ZDI2YTZjMGIwOTk2YWM4MDQxOWFjZTZjIHB5M2sKKzc3OTQwIDU0ZDAyNWIyZjQ1YTlmM2UxN2UwMzZjNDg2NjZlYzBkZDNlNGRlNjMgcHkzaworNzc5NDEgNzJlY2ZmZmU5ZjAyNTY2YWM3NmI5ZTBjYTQ2NmUxNWFmYWFjOTQxMCBweTNrCis3Nzk0MiBmZjA0MDg4MGQxYmU5ODQ5MmFkZWJmNzU4YWY5N2FmOTdhMmQwZmE3IGxlZ2FjeS10cnVuaworNzc5NDMgNDU4N2IwNjJiOGQwNjVjYjc5MDZkZDQzZDUwZDg4MTk4NWRkYjdhNCBsZWdhY3ktdHJ1bmsKKzc3OTQ0IGNlNGI4NGMwMmU1YTc1NTZjODRmZjljNmU4ZjhiNWYxYTM0MWRlNWQgbGVnYWN5LXRydW5rCis3Nzk0NSAzMjM0NGM1Y2Y5MzJlYTMyNjg4MmFjYzExY2ZiZGNkZTVjMTYzMGMxIHJlbGVhc2UyNi1tYWludAorNzc5NDYgNzQ0MmRiNTQ3NjQ1ZTIwZTM0YTBjYWNlZTMyZjc0OTM4ZGMzNzFjNCBweTNrCis3Nzk0NyAwZDdlNWVkYzQ1MjY4MDg3MTkyM2NlZjc4NTViNjkxMzE4MTIyOTcwIHJlbGVhc2UzMS1tYWludAorNzc5NDggOGQ4MDVjNmMyZGIzN2JlNjc5YzVmYzEyY2NiNDNmMjc3MjA2NDc3ZiBweTNrCis3Nzk0OSAzOWM4YjQ3ODI0YzUwOTE1NDY4OWJjNjM5YTVkYTNkYmZlNWI4NDNhIGxlZ2FjeS10cnVuaworNzc5NTAgMWM3ZmVhYzBkNmQ2Mzg4YmM2YjZkYTJlMWVjYjc1NTRlOTAxY2NmMyBweTNrCis3Nzk1MSA4YTJlYjc3NjEyMzA5NzBhZGFhY2QxMDkzYzJkOGE5ODM3MjFjZDFiIHJlbGVhc2UzMS1tYWludAorNzc5NTIgNGFlOGI5Y2E0MGZmZTdhY2E3MjA5ZjZhYjQwMmQyMGY0ZTcyYjEzNiBsZWdhY3ktdHJ1bmsKKzc3OTU0IGQ3NWY4ODdkYTc3MmY4MWVjZDQ2MmNhNmQ2NzI3NjJmMTBmMWQxMGYgcmVsZWFzZTI2LW1haW50Cis3Nzk1NSBhNjRhMDEzNGU2NmNlMDg5YzVlMTQyMjUwOTRkNzdhMGE1NTNkODM1IHJlbGVhc2UyNi1tYWludAorNzc5NTYgYTdhNzcwYmNlOTNkMjVmMTQwY2U2MWUyODM2NWRmYmViZmM5ZDk3ZSBsZWdhY3ktdHJ1bmsKKzc3OTU3IDMwZTQyNDZlZTgwMzI4NTA5MTRkMzEyZWEyMDA3YjA3YmMzZjIyODUgbGVnYWN5LXRydW5rCis3Nzk1OCBmYmExYzc4ZjEwNGU5YzM5NzkzNzk5ZDY4NWI0ZmZiZWQyMWE4NTZiIHB5M2sKKzc3OTU5IDNjMTg4ZWQ4ZTUyMWVlMzdjNDE0ZTEzNWYwZWNmZDJkNjkwMmMyZGEgbGVnYWN5LXRydW5rCis3Nzk2MCA3MDNhMDRlMjljZTYzNDIzZTE2ZGExYWY0NmZlMjVmZWUwMmJmMGU4IGxlZ2FjeS10cnVuaworNzc5NjEgYzcyNTRlOGJjMWRiZDFmZDQxNzgxNTJhYzVhZTgxNTE3ZmIwYmM3YyByZWxlYXNlMjYtbWFpbnQKKzc3OTYyIDBjMmIwODk4NjQzZTI5NmQxZWZmZjYyM2NiNTY3NjQzNTJkZWVkMWEgcHkzaworNzc5NjMgNTE0YjU2ZWZkODlhMjQzOWQ4NDhkZjJhMjNkZjRjMmEyYTYxOTU3MCByZWxlYXNlMzEtbWFpbnQKKzc3OTY1IGVlYjhhOTljYTBjNWEyZjhmMTkzZTQ3NzBkYWYzNmMzZTFjZWI1OTIgcHkzaworNzc5NjYgMmY4MjkzOTZhNTRlMzdiZWRjYTkyNGJkZDAwMWEwZWI1NWJjMjFiOSByZWxlYXNlMzEtbWFpbnQKKzc3OTY3IGY0NDE0MjJmNmY1NTc0Yzk1Y2M2MDlmM2U2ZDgzZTViZGNkZDhhZDYgbGVnYWN5LXRydW5rCis3Nzk2OCAzYzAyMDM0OTlhZTUzNWM1ZTU1N2RjZjFjMTQwNDQ2MDU5ODIxYzk0IGxlZ2FjeS10cnVuaworNzc5NjkgYmI2ZjgzYjliYTQ5ZTAyZjIwY2M5ZTA1YmZlY2IzZGRkNDE2M2QxNyBsZWdhY3ktdHJ1bmsKKzc3OTcwIDU0ZTk3NTU4MmM2NTRhODg0NjU2ZTllNjAzYzIxZThhMDc0YmJjM2QgbGVnYWN5LXRydW5rCis3Nzk3MSA0NTFlZDMyY2ZjNTA2MjQyMzNiODk1M2U4YzFlOTA1MzIxZTY1OGUzIHJlbGVhc2UyNi1tYWludAorNzc5NzIgMzdmNjI2NGQxYWEzMzk4OTFiMzZkNjgxNjRiNjYxYmI1YTM0M2IzYyBweTNrCis3Nzk3MyA0YWFiMTRhZjVlMmRmNzIwNWUwYjgzY2UxODUwNjIxMTg3ODE0YzQ0IGxlZ2FjeS10cnVuaworNzc5NzQgMzJlMGYxYWEzNGJjZjczMTIwY2VhNWM0MWI0ZDY3ZjY1ZTIyNzNhYyByZWxlYXNlMzEtbWFpbnQKKzc3OTc1IDc4MTNjNDA5NDJlOTk0YTk0YTNiYjY1NjBjZTViMGVlNzUxY2EzMzYgcmVsZWFzZTI2LW1haW50Cis3Nzk3NiBlZTA4ZmI4MzViZjEyYWE4NTMwMDlhN2I3OGI1NTRiZmFmZDVlNzFiIHB5M2sKKzc3OTc3IDE1MTUwY2Q4ZmQzNjUzNDlmYzRhNGE4NTU1NzU3YzhmYmI3MjZkMmQgcmVsZWFzZTMxLW1haW50Cis3Nzk3OSAzMDRjZThmY2MzMmExZjgzMDgyZmJkZjQ1ZDY1ODc3YWVlM2U2OTQ1IGxlZ2FjeS10cnVuaworNzc5ODAgZGU1ZmE5MjVkZmVhNjE1MTMyODdiMDY5OTMzZWJhNmY1MjdkMzY4NCBsZWdhY3ktdHJ1bmsKKzc3OTgxIDgxZjJlY2QzYjEzZThmZGYyYzgxNzM3OWQwNzEwNmJmODcwZmU3MGMgcHkzaworNzc5ODIgYzFhN2M5NDljMTEwMGQ4ZmFkZGU1MDVjZGI0NjZmZjllZGYzOTUwZCBweTNrCis3Nzk4MyA3NmNmNjBlMmQwMDU3OTZmNjAwMmI1ODA3ZDRiODEwOWM5NGU5MjMzIGxlZ2FjeS10cnVuaworNzc5ODQgY2ZhODdkNDY2YzA0NDgwM2UyMDkxYjc4NmJmNDExZmE3YTZhOTYzZCBweTNrCis3Nzk4NSBiNWFkMjE5MGRjZThjMGY2ZWRlOWJmZmYwYmM4YTY5NzY5NDZiNWZhIGxlZ2FjeS10cnVuaworNzc5ODYgZTFiZGViZDEzNjg1OWVlZGExYWI5MzhhMGVhMGFhNmNmZDA3NDQ4YSBsZWdhY3ktdHJ1bmsKKzc3OTg3IDQyNmNjNWYyYWQyNDIwYTBiYjQ5NjMxMDE0ZDFkZmUyODM2MGE1MGUgcHkzaworNzc5ODggNTU1MDU4NDJlOTczOWVhMGUzZWViODI2OThmMDExN2FjNWYyNzMyMiByZWxlYXNlMzEtbWFpbnQKKzc3OTg5IDdjOTMzNjgzMDEwZGNiMjlhOGUzZjc4MjExYjI0NzNlYmQ3YTI0N2IgbGVnYWN5LXRydW5rCis3Nzk5MCBlYjU1MGU4Mzk0NjA5NzhmMDA2N2VmZDdjYjE2ZTI0NDc2ZmNmZTAyIHJlbGVhc2UyNi1tYWludAorNzc5OTEgNTEzYzRhMjYwMGE4YmUwNzYzNmQ4Yzk0NWM1MWFjY2I0ODVhOTgzMiBweTNrCis3Nzk5MiA1ZTUxODM1Zjg1OTUxMmVkMmMyNDhiYzExMzcyZjJmMTAzMTE5ODlmIGxlZ2FjeS10cnVuaworNzc5OTMgMWNmMTZjZTQxNWVhZTA2ZTQ2MTY5OTBhNmY2YjA0M2FlNGNkMjg5NyByZWxlYXNlMjYtbWFpbnQKKzc3OTk0IGIxMWI4MDMwMjY4ZGRjM2EwZWMwNDcwOWU0ZGEzMmMzYmE2ZmRlMTEgcHkzaworNzc5OTUgOTc5YzNiNjI1MDgzOTdhYzk4NzVlNDgzN2FjMzY0NzhlMjIxN2MwMyBweTNrCis3Nzk5NiAxMWI3YzgxMDgxNmJlZjQ4OTI4N2RiZjI1MzhjMTI3MGVmYmM3YjVlIHJlbGVhc2UzMS1tYWludAorNzc5OTcgMzJhMzYwYjEzZmEzMjA2YWViNDQ0ZmI3OTg5MjM1NzVjZTRmZDdmYSBsZWdhY3ktdHJ1bmsKKzc3OTk4IGNkMzFhOWQ2N2ViMTM5ZjUzMDYxYzQ4NjBmMGI1ZmRhMTIyMWM3OTggcHkzaworNzc5OTkgMjc0MTZjZTYyYWM2YjExNDBiZmMxNTJmMDk5ODlhODdkOWQ4ZDg1NiBsZWdhY3ktdHJ1bmsKKzc4MDAwIGMwM2M5M2FjODE1MWMzMzIxN2UxZmZlMDFjNWJlZTRiYWIwY2VkMWUgcHkzaworNzgwMDEgMmE3MGM3MmI4N2M3ZjEyZjlkMDllYWI4MzIxNzgzYmQ5MjY2MTQyMiBsZWdhY3ktdHJ1bmsKKzc4MDAyIGVkZWE0OGIxMjBlMzM5YmViNWRiYTJmNGFlYjk1MTlmZjY3YjJjZGQgcHkzaworNzgwMDMgM2RkOTIxYTE5MGI4ZTFjNjBmNWNiNjY2MWJmNjg5MTRlN2QzNDJiYyBsZWdhY3ktdHJ1bmsKKzc4MDA0IDQyYWM4Y2IxM2VkMGRmODAzZWYzN2NiM2ZjNzI0ODUwM2ExMGM3YjUgcHkzaworNzgwMDUgYTEzZThkMWQzNzk4YzUwMTgzM2ZlNmE2NjE1YmI0ZTczYjZiODI5OSBsZWdhY3ktdHJ1bmsKKzc4MDA2IGZmMGZjZDUxNTRkMzMxNjY3ZDVhODU2M2Q0Zjk1ZTk4NzcyZDM2NmEgcHkzaworNzgwMDcgZTlkYmJjZDRhZDQwYWE3Zjg2OGMzZjZiMTE1Yjc2MjVmZTc4YWNkNiBsZWdhY3ktdHJ1bmsKKzc4MDA4IDk0ZDE0ODBiYzU2MzA0MWMyMmQxNWQ1NDg4MTA2YmM1YTE3OGYyMTIgcHkzaworNzgwMDkgNzhlNzk5MmYyODU3OWZhNWQzMjVjOGNlYjc3ZjkyNWM4MGViOTFhNCBsZWdhY3ktdHJ1bmsKKzc4MDEwIDBkOGYyMGU0NmMxZmExOTQ3NDZhMmEzMzM3MGM0ZTdmZjQ1NDhhMmEgbGVnYWN5LXRydW5rCis3ODAxMSA3OGM4OGIwNzc4NDMxYTcwYTJjMmI2OWNkYzFiMzUxMmZhNjY1ZWNiIHB5M2sKKzc4MDEyIDhlNTlmOWY3ODhmNWIwNGU2MDU2NTFlZWI3MWFkZGUxNTI1MTZmZmUgcmVsZWFzZTI2LW1haW50Cis3ODAxMyBmYWIzODA2NzQ5NTk2ZjMxMWFmOTQ1NzI2MWY5NTNlMmQzNjU5YTgzIHJlbGVhc2UyNi1tYWludAorNzgwMTQgMmI4ZjQ1OGJiY2Y1OGU4ZDcxYWY2ZmI0Y2NhZDRiNDY1Y2UxMjE3YiBsZWdhY3ktdHJ1bmsKKzc4MDE1IDEzZjY5NWFiOTExMWNjNjlkZjEwMTMxMTJlMmJhYTNkNGIyMDAyNDggcmVsZWFzZTI2LW1haW50Cis3ODAxNiAwZWI0MjI2MjRkYjVlZmEzYmY4MmE4ODNiZDU4Yzc3NDAzMDg2YzhmIHB5M2sKKzc4MDE3IDljZWUwODc5MTVhYTFkYjJkODQzN2EzNjhmODkzZjA1NDcyODZlMWMgcmVsZWFzZTMxLW1haW50Cis3ODAxOCA1MGJkOWNkMmVkNDgxNDNiN2I4OWQ0NDM4NzM2NzI2NGQ5MmM1NjAwIGxlZ2FjeS10cnVuaworNzgwMTkgNzFlMDg5MjY1YjI4NTNjY2JiM2Y1MjQwOTliMzdiZTg3NDAzNjM5YyBsZWdhY3ktdHJ1bmsKKzc4MDIwIDQxODA1NTdiN2E5YmI5ZGQ1MzQxYTE4YWYxOTlmODQzZjE5OWU0NmUgbGVnYWN5LXRydW5rCis3ODAyMSBmZTgzMmM1ZDMwNjZiMTYzMjdkM2QyZDI1MzY4NTNlZTVkMTVkYTViIGxlZ2FjeS10cnVuaworNzgwMjIgNWU5YWI0YzI1YjkxNGE4YjY2ODkwODA5NjgwZjg5ZWVjZjNlZTc2OCBsZWdhY3ktdHJ1bmsKKzc4MDIzIDgyY2UzYTA4NTcxYzk1MjdhZmI1ODk5MzBkMDg3ZTJhNDRiYWIxOTYgcHkzaworNzgwMjQgNDAwMmYxYzQ2Yjg2OWNlMzdkMzBkYzY5ZWU4YzUwYzk4YjlmNjI3YSBsZWdhY3ktdHJ1bmsKKzc4MDI1IDYzYjNhNjVhZmY1MmE4ZTJlZmY4OWQyM2VhN2Y5MzM1MGI2YWFjM2YgcHkzaworNzgwMjYgYWQ2ODNjZWRmYmIzYTljMjkyNmE2ZjI2ZDQwZDRmZjNhYTVhMjM5MCByZWxlYXNlMjYtbWFpbnQKKzc4MDI3IDIyMmI2ZDgwZTc2OTI0MDAxZjJmMzhkZmEwMzcwZmY5OGE3YzFmOWMgcmVsZWFzZTI2LW1haW50Cis3ODAyOCBkZDIyMzBhOGM0MWRhMTE3ZTE1NmFhYzA5NThjYmQ0MWNhOGQ4ZGQ4IGxlZ2FjeS10cnVuaworNzgwMjkgY2FjZjIwN2ZiZGVkNDNjNGI0MDZjNDIwYjIxYTFiOWIxOTQ1NWMwYyBsZWdhY3ktdHJ1bmsKKzc4MDMwIGU5Y2IzZmQzNDFlOTgyZTUzMzI1MjdiZDkxOTk4NDczNTc3ZDdjZmEgbGVnYWN5LXRydW5rCis3ODAzMSA4N2Q4Yjk1ZjU2NzU2MDYxNTBjZTJlNmZlYzM1OTU5YTIwNmExYzRlIGxlZ2FjeS10cnVuaworNzgwMzIgZDdkNDhhMzBhZGYzMDM0YjhiODY3ODYyMzUxMDAzNjZjZjA3YzYzMCBsZWdhY3ktdHJ1bmsKKzc4MDMzIDYwOWZhMThiMjRiZmNjNmFiODRiOWVlMTNiNTA0OTJlNGQyYmExNmQgbGVnYWN5LXRydW5rCis3ODAzNCA4MWIyMzA2ZTZiZjMxYmUzZGY0MWZkZGRjMDViN2VkNjJiNTFlYTY4IHB5M2sKKzc4MDM1IGYyYzkxYmY1YjdiOTY2MWU2NjBmMjg5MjMzZTg0Y2IzYzhjYmJlNjkgbGVnYWN5LXRydW5rCis3ODAzNiA2Y2E5ZDk2ZjE0MGU5MDQyOTUxNGJhY2UwYTk0OTU3MDFiMDc3MWZkIGxlZ2FjeS10cnVuaworNzgwMzcgY2MzNjdjMDc3MjQ1OGQzZWRjMDgxNjk1MDUyNTIzZmUyODk4ZDExYiBsZWdhY3ktdHJ1bmsKKzc4MDM4IGVmOGYxYzJjYjUxZjkwYjViYTZhZDY5N2Q2NjdkMGQxYzU0ZTQ4MGEgbGVnYWN5LXRydW5rCis3ODAzOSBlNGFlNzlkNTNlMjM3YTM1ZTk1N2QyZTU1ZDU5Y2JmNWRlZjc4ZjgzIGxlZ2FjeS10cnVuaworNzgwNDAgODczODc1NjU3YWQwZjNmMjJiZTI4NDkxNDE2MDYwZDAyNjM1NGJiNiBsZWdhY3ktdHJ1bmsKKzc4MDQxIDJiYTc2NzdiZmE5NTE0OGJjNDZlNmQ4YTQ0Y2NmYzYwYjRhZDlhZDcgbGVnYWN5LXRydW5rCis3ODA0MiA3MzQ2NTdiNGIzZTVjZjgwNWE2ZmFhNGM0OWJmZjNiYjQxMjljODkyIGxlZ2FjeS10cnVuaworNzgwNDMgMDNiYWY2ZGYzMmQyNjhlMzE5ZDBiYzFjOThhYjljN2Y0ZWRhYzQzNCBsZWdhY3ktdHJ1bmsKKzc4MDQ0IDU1MTQ0Y2FlMDJiYWIxZDUxMzc4NzNmODk3YTVlODhlYmUyMmYzMzkgcmVsZWFzZTI2LW1haW50Cis3ODA0NSAwYjQyZTFhYTRhOGJiYjMwZjUwODE0ODRmZjkyZDBiZDk0NTQwOWRiIHB5M2sKKzc4MDQ2IDIyMzU4NzAwYTRkMGJiYjQ3NzA2NTRmYjUxNDNjZTU1YmI5ZTM3OTcgbGVnYWN5LXRydW5rCis3ODA0NyBhMmFiMjZjNWYwOGI1YTQ4YjczNzZlYTI4MGU3ZjJhYThhOGQxMmU3IHJlbGVhc2UzMS1tYWludAorNzgwNDggMjFhNDcxYzM0NGUzYTA1OWZhZGJjOWRkZjBlMWRiMDZjMDI3NDQ0NiBsZWdhY3ktdHJ1bmsKKzc4MDQ5IGI3YTVkZjE0MDg2OWU3YWQ2NmE2NGFlNzJmZDgzMjk1MWRjZTFhMjEgbGVnYWN5LXRydW5rCis3ODA1MCBjNThlZDI1NTRmNWM4NzM2YmQwMTIxYTFkYmUwOGU1MTRiNjAzNmJkIGxlZ2FjeS10cnVuaworNzgwNTEgZWRlMGYwNWRjNmMwODE2ZjM1NzQ0MjJkYzJkM2Q4OGVlZDQ4ZWEwZSBsZWdhY3ktdHJ1bmsKKzc4MDUyIGE2NmViOGE2M2Q1YjZhODU5Y2ViZGVlNDBhMDY4MDM1MjdiODlmMWQgbGVnYWN5LXRydW5rCis3ODA1MyAxMDEwMWNmODlkMjA0YThlN2Y3NDM4N2FmMTdjNjQ3YzAzYTAxNjkwIGxlZ2FjeS10cnVuaworNzgwNTQgN2MyNGZlZmMyY2Q0YjFjMzViZTM3NWQ0NDkwYjVhNWRkNmJhMDEzOSBsZWdhY3ktdHJ1bmsKKzc4MDU1IDZiODJhMjMyMzUwMTJhNzRhMzdmMDhmODRiNjYyNDFlOTgzZjg0MGUgbGVnYWN5LXRydW5rCis3ODA1NiBmNGM1MWFlMTY3YzU1MmQ1MzYwY2U0MWU4OTg0ZjQ1YzQ2MGUzZjAyIGxlZ2FjeS10cnVuaworNzgwNTcgODIxNGQ0ZmMzMjM0MzY1Yjc2ZDZkM2M2Y2I1NzhkODM4M2EzOTdjMCByZWxlYXNlMjYtbWFpbnQKKzc4MDU4IGZkZWMzMGFlYjkzZjNhZjM3YmNlY2FkYmE0MjFiODM3ZTFlMDhjMjAgcHkzaworNzgwNTkgNTJiYjQwMzI4NjNlMTYyMTdkYTI2YTMyZDk3NzdjZjk3NWI5MDM4YSBsZWdhY3ktdHJ1bmsKKzc4MDYwIDkzN2ViMGZlMWY5YzFjMzNlMzI2MmE4MmRhMjBkMzQwMmM1OTRlZjggcmVsZWFzZTMxLW1haW50Cis3ODA2MSAzZDM3NTMwMTExNWRiM2MwMWIxMWI0NjUxZjJlYWQ4YWNhMzZmZTJiIGxlZ2FjeS10cnVuaworNzgwNjIgNmE2ZmMwYzA5MWNkZWZjNjVlOTc3MzdkZDk1ZmMxOTJlZDFiNTI1NyByZWxlYXNlMjYtbWFpbnQKKzc4MDYzIDRhY2JiYjVhNDhmY2QwMWNjYzNjODM4ZDBhNTk2ODdkMjRhMzc2YjcgcHkzaworNzgwNjQgYjQ3YmNjYTAwMTVhYzYwZDUyMjQ5YTc5MGYzYTBhZTc2YzY0OTkzNCByZWxlYXNlMzEtbWFpbnQKKzc4MDY1IGRlNTNiYWE1YWM3ZGU4YjMxYjRiNmQ0MjUxNDlhYmE2NDhkOGI0NDggcmVsZWFzZTI2LW1haW50Cis3ODA2NiAzNzc2YzMxYzBlODIwOGJhNzA1M2NkMDNlZGE5MDI5ZGEyODliZmY0IHB5M2sKKzc4MDY3IGM5NjQ1N2RmNDBlMGQ5Y2FiYTMwOTdmYTk3NTc4ZjQ0ZmZiN2U1NTkgcmVsZWFzZTI2LW1haW50Cis3ODA2OCA0ZTQwYTI5MTE3NTA5MzFhZTAzM2Y3MjczNWVjZjcxOTJhNWJlMmFjIHJlbGVhc2UzMS1tYWludAorNzgwNjkgMTBmMTlkMWMzYjc3MThiZjlmNTg3MzJhYWExNDdhOGUzYTQ2N2M2NiByZWxlYXNlMjYtbWFpbnQKKzc4MDcwIDc5YzAyMmQ3NzIxM2MyNGEyMmNkMGNkZTEzZjNkNWMwMGYxYTAxMzcgcmVsZWFzZTI2LW1haW50Cis3ODA3MSBjYTY3YzM3Y2QyNmRjMDBiODhlMGZjMmFhOWY5MTk3ZTVlNmRkNDg1IHJlbGVhc2UyNi1tYWludAorNzgwNzIgMTk3ZjI0M2RkYWI1M2U4ODg5MGE1YmZiNDFmMjk2ZDkyN2Q4MjUwZiByZWxlYXNlMjYtbWFpbnQKKzc4MDczIGIwYzc0M2M3ZDdlZWFmMGI0YzRiMWEwNTMyNjc1OWM3MjU4ZjY5MjEgcHkzaworNzgwNzQgN2QwN2RhMmI3ZGNhYjczZjBiZTM2NjQ4NjEzMDI0MWFmODczNmJjZSByZWxlYXNlMzEtbWFpbnQKKzc4MDc1IGI2ZGY3NWMxN2UwMmRjMDkwNjFiYzViOTY2OTc4NGM4N2YwZTMyMzUgbGVnYWN5LXRydW5rCis3ODA3NiA1Njk0NDQ0ZmQ1ZDJlOWZlN2U2Y2YxZTM1ZTc0NjQ0YTlhNzdiYWQxIGxlZ2FjeS10cnVuaworNzgwNzcgNTNmODNmMjAyYTZkNjg0Njk4ZDE0ZGQzYjc0Yzg5NDAxZjk2Y2RlMyBsZWdhY3ktdHJ1bmsKKzc4MDc4IDkxODk4MDNmODM0MDc4NjNkNDY5YTY5ZGYwMzk3M2FiMzM3Mzg5NWIgbGVnYWN5LXRydW5rCis3ODA3OSBiMTE2ZmZiY2QxYjA3MTE5YTE2NDE2N2U1OGM1MjlhNmE1ZmQwZDk0IGxlZ2FjeS10cnVuaworNzgwODAgZDUzMGE3MmI0NmZjODJiOWM4OGEwNjI0YjhmOWMyM2FmM2ExZjNmMyBsZWdhY3ktdHJ1bmsKKzc4MDgxIDg3Y2Q4OTNjYjhiYTI2ZDI1Mzk5YWUzYTJiZjkzYzk4MDRhZTcwZjcgbGVnYWN5LXRydW5rCis3ODA4MiAyMTgwNGRjN2FmZjRiNDE5YjBlZWRlYjNmZDAwNjViMDZiODdjZmUwIGxlZ2FjeS10cnVuaworNzgwODMgZGZkNDZhNWRiODcyYmViZmRmNWMxNWE2NTg1ZjQ2YjYzMzNmNzA2NyByZWxlYXNlMjYtbWFpbnQKKzc4MDg0IDBjZmU4MzZjNGE4ZDA2MTA0YjIwZTNjNzRkY2I5MTI4YTljMjlhYmQgcmVsZWFzZTI2LW1haW50Cis3ODA4NSA2YTg5MmNlZGYzYTQzYWYyNTAzZTA4ZWI3ZTIxYjUzNTA4NmM0NzZiIGxlZ2FjeS10cnVuaworNzgwODYgODZhODRiZTMzZTZhYTg2YzNjN2RlMmUxNmZiZWVmYzMzODY2MDRkMCBsZWdhY3ktdHJ1bmsKKzc4MDg3IDFiZTcxMTQ0NzNlYjVhOWZlNzE4ZGQ0ZDllYzRkN2UwMTFiZDI5YTYgcHkzaworNzgwODggYmQ1ZWUxM2ZkZGExZWNkODA1OTU0YzYxYzRmZjczYjA2ZGI0M2VhNiBsZWdhY3ktdHJ1bmsKKzc4MDg5IDU3ZmY3NzAyZWM3NGU3YjhmYmIzMDVjZGYwMTdjNGQzYjY2NjBhMzkgcmVsZWFzZTI2LW1haW50Cis3ODA5MCAwY2Y5N2FkMmZkMWY2MWE4ZGY1YjVhYTI2Y2I5YTIxYTk3YTk5MGEzIHB5M2sKKzc4MDkxIDY0MDA0YTk4NjJlNDcyMWQ1ODY4NDFiNjAyMzdlMDM4OTA0ZTFmOWYgbGVnYWN5LXRydW5rCis3ODA5MiA4MGUwMjFmZTM0ZWQ3YjNiOTA0OWYyZDQ5OTc0NTBjNTc4MmE2MWY3IHJlbGVhc2UzMS1tYWludAorNzgwOTMgNzBlMTE1YzM0Zjk3MDhhNDIxZjFjOGNmNDE2ZGYyNjBjYTI1NzRmNCBsZWdhY3ktdHJ1bmsKKzc4MDk0IDNkOTRiMWU3NzljNTgyOTJiNTYzZmY2YTExNDg1ZmZiNDljZjM5YjIgbGVnYWN5LXRydW5rCis3ODA5NSBiODM0YzhlZThlN2M5MmRkYjQ0MGFlZGNiYzg2ZDlmZGI0MjE5MDQ5IHB5M2sKKzc4MDk2IGYxMDhmNjI3NTg1NTU2NzQ3NDdiZmI5ZTIxNTQ2NGQ2ODRiYzg2YmMgcmVsZWFzZTI2LW1haW50Cis3ODA5NyBhMjgwODQ0YjY4ZjQ4NTU0Y2Y4NjBjNjQ4N2Q5YjA1NTM2Mjc4MWM0IGxlZ2FjeS10cnVuaworNzgwOTggZmFjYTk3YzVmMDM4MDQ2MTE2NDYzYjYzMWI2NmRhMGM3ODQxMDZjZiBweTNrCis3ODA5OSAxM2ZjYWE3OTMyNGJiODUxNGUyYzNiYThjYjFhMTJhYjU1YzQ0ZDljIGxlZ2FjeS10cnVuaworNzgxMDAgM2YzOTBmNDhiMTEzMTRlZGE0NmVjZjRmNGQ0NmFkZjgwOWNhYzYyMSBweTNrCis3ODEwMSBjOGMwYWExZmQ0YTZkNTI5ZTAzMDc3NTZiZDdkMjQxNDY4ZDIwYmQ5IGxlZ2FjeS10cnVuaworNzgxMDIgYzg2ZDkzYWVjZDdhMjUwMmQ5Yjc1NjM3NWJkNWYwN2UxNjliNzVlNSBsZWdhY3ktdHJ1bmsKKzc4MTAzIGQ4NGRhY2RiMmQxMjUyNDk4MGE2OTFlNTQ4MjIyYzcyYjhjYjNiZjYgbGVnYWN5LXRydW5rCis3ODEwNCA2MDBhYjljZWU0MDM1MGU2M2ZjMDQyY2UyY2M2ZDYxZDVjZTcyZThiIGxlZ2FjeS10cnVuaworNzgxMDUgNGJjZjk2ODI5ZDFhM2Q4OTdmNDFlN2RhNWU1NmUxMWM0ODExMzYwZSBsZWdhY3ktdHJ1bmsKKzc4MTA2IDkzNjc2YWU5N2M2OGI1M2U2YTA5NjhjMzQxNTk5YTBhZmUzNWNmZmEgbGVnYWN5LXRydW5rCis3ODEwNyA0ODRkYTEzZjEyNTM1M2M3Yzg0OWU2ZDBmMzEyYzFlOGJmZjRlZDQ1IGxlZ2FjeS10cnVuaworNzgxMDggZGJmMDNlYjdjMTJlZDQyMGNlNjhkNDdhOWMxN2UxN2ZlNGM4NGNiOCBsZWdhY3ktdHJ1bmsKKzc4MTA5IGE5OGIxMzYwOGQyM2E0NWRiMDYyNmVhMjk5N2JiYjg2OTgzM2FhNTUgbGVnYWN5LXRydW5rCis3ODExMCBlN2U4OWI0NTgzNDE4Yjk0MWQ1Mjk5Y2Y4ODlkOTI3ZTFhYzE5MDhmIHB5M2sKKzc4MTExIDM3ZTg5ZGViZWY2YTNkZTQ5NzBmYTRiMzk2ZGYzODA2M2ZkZmRjODggcmVsZWFzZTMxLW1haW50Cis3ODExMiA3NTg5NjA1ZGFlZDEwNDJhZjk5MzI1MTRjY2Q4ZGZiOTdjOWRhYTJmIGxlZ2FjeS10cnVuaworNzgxMTMgYTkxZmZjOTY0NGViOWU2ZjI2ODcyMTRhNzVhNDA3YWE2OGM5OWFhMCBsZWdhY3ktdHJ1bmsKKzc4MTE0IDQ3ZmE1NGRhYjM4Y2E3MGJkNjNhNDVhZDlkYjA5MzhjNzM1YzU2MGYgbGVnYWN5LXRydW5rCis3ODExNSA0ZTBkYjQ0NTY0YjE3M2QwOWY4YTdhNWMwMTI4YTQ0MWNiY2FlYjQwIGxlZ2FjeS10cnVuaworNzgxMTYgZjQ4YzQ3MWFjOGM5ZTBlOThiYmExNjhmMTNhMzE3NjRmNjY3ODIxYiBsZWdhY3ktdHJ1bmsKKzc4MTE3IDk2YzI2NzAzYjQ5MGE0YjU3OTdjMjMyNTM0ODQzMTY3MGZlZjQ4YTEgbGVnYWN5LXRydW5rCis3ODExOCA4YmU4ZDVkYjk2YTI1Y2FkOGU5YzI2NGE2M2RlY2Q2ZjlmM2M3ZDg0IHB5M2sKKzc4MTE5IDU5ZTE2MmI5ZjIyNTQzZjc0OGI1ODJlMWUyMjZmNDZhOWQ3NWJjMzEgbGVnYWN5LXRydW5rCis3ODEyMCAzZWVmMzllN2I3NGYzMjI5NGM4MWU2MWRlYzhhZDE3MzY4ZDgxMDg3IHB5M2sKKzc4MTIxIGU1YzU2NDY1OTIwMzczNmIxMzQzODg5ZTVjMmRhMDEyNGRlMDM4ODAgcHkzaworNzgxMjMgZWE4Y2MxMzk1MWIwYmJhNWM0ODIwY2NkM2FiZmMxM2ViOWI1M2RmZCBweTNrCis3ODEyNCA2YTZlZGRiNDU5OTY3YjEwMDBlNjQ3MDlkMGQyZjJjN2FlNDVhYTllIHJlbGVhc2UzMS1tYWludAorNzgxMjUgMjY1Mjg1OTEyMTdjZjM3M2UzNTZkNTgwZmZiMTdmNDFlZGQwMTQzMiBsZWdhY3ktdHJ1bmsKKzc4MTI2IGJkYmUxMzc5ZjNlYWY3ZjJmZGM5NmM2MWYxMDhiMmYzMWE1OTkxZTQgcHkzaworNzgxMzAgMGJlYjdjODI5NGM3ZjQzOWMyNDM4ZDIwZDU4YzUzMzE5ZjFjZWY4NSBsZWdhY3ktdHJ1bmsKKzc4MTMxIDBhZjY5OWYwOWVlM2UyY2QwNWI0OGJkOGRjM2RkZWY3NGQ3YzVlMTAgbGVnYWN5LXRydW5rCis3ODEzMiA2MWQxNzAxZDljNjYyZWNiMzk0NDI4NDMyNDEzZjFhOTE4Nzg1Yzk2IGxlZ2FjeS10cnVuaworNzgxMzMgMTE2NTk1OTRmOTgyMjVlZWUzNTEwNDRmMTcyMTU5NjFiMGRhMDc2YiBweTNrCis3ODEzNCBjNTI5ZTUxZjgzNzc1OGRiZDVhMTlmYWQ4NzM2NWE0MWU3MjBjMDA0IHB5M2sKKzc4MTM1IDVkY2VjYWMxYzhkNjc1ZWMwMTgzNGYzODQ5Zjc0NDRiN2Q0Y2JjOTcgcHkzaworNzgxMzYgZDFlMmY3OTRkMDIwNjQyNWZkOWY3N2FjNWVlMGIyNDYwMGIyMmM5NCBsZWdhY3ktdHJ1bmsKKzc4MTM3IDE3MmZkYjFkNzMzN2FkYjRiYzhjMTBmNDc5NTI1ZThhMWQ2M2RkMDMgbGVnYWN5LXRydW5rCis3ODEzOCBjMmJkYmQ5MzViNWU1MGNiNjdiMGM3YmJiMmE0ODFiMzk2YmU1MTVlIHJlbGVhc2UyNi1tYWludAorNzgxMzkgYTcxZGVhODk4NzdkODk2ZjY2MDkwZjdkMWZiZjgyNjRmZTQ3ZDMxYyBweTNrCis3ODE0MCA2ODdjYTRiMzc0ZjRjNzU2OGI0MDk2MjE5MjJjOWUyZjZlM2Q2NjI4IHJlbGVhc2UzMS1tYWludAorNzgxNDEgYzQ1ZGNiZGNhYjg3MzYyZGFjNmI0ZDdjYzI2MDk4OGJkYThiNGU2YSBsZWdhY3ktdHJ1bmsKKzc4MTQyIGJmZDQ3OThiMWY3N2UwMGRiNmE3OWQ4MTNjNmI3NjMzOTU2NmM3NGIgbGVnYWN5LXRydW5rCis3ODE0MyAxNGVlM2Q0YzdiZDVjODU0ZTNiNjYzYzRkYmIwM2Y0MTQ3NGM2MDk1IHJlbGVhc2UyNi1tYWludAorNzgxNDQgODNjOGRmYjU0NDIxMjBlYmUxZDk4Y2I4ZmExMjgxMjM5MzRlYTVkMSBweTNrCis3ODE0NSBmYjA5ODBlMWE0Y2U0MmY2YzM0MzQ0ZWQ1YzI0ZDE5ODQzZTNjM2IyIHB5M2sKKzc4MTQ2IDVlZmZiZDU1MjFlM2Y2ZWY1N2E1MTI2ZDMzMmQ3NDA3ZWQwZGI1NjYgcmVsZWFzZTMxLW1haW50Cis3ODE0NyAyMzZhYjQ4ZWRkMGNlYTQ5ODg4ZDM5ODA4NjliOWU0MjVkZTViYzUyIHJlbGVhc2UyNi1tYWludAorNzgxNDggMmI5YjIxYjgzMGQ5MjQ2MDM1ZGQ4ZDYzNzQ4NGMwNWNlOGJhODZlNCBsZWdhY3ktdHJ1bmsKKzc4MTQ5IDQ3MTIzOTE1ZWEyMGQ5MGRmZmEzNzdmYmFmNDZmMGU4MzBjYTdkNjggcHkzaworNzgxNTAgM2JkNjViMzQ2YmZjYTE2Nzc4ZWI2MTgwOTRhMzEzZjg5MjhkZTY5OCBsZWdhY3ktdHJ1bmsKKzc4MTUxIDZhZTUwYzJjMGFiOWYzYjgxNDg4NTA0M2U1MjQ0ZGM1Mjc4ZTliNGUgcmVsZWFzZTI2LW1haW50Cis3ODE1MiBmMTU2YjVlNzNiMGQxYTEzMzkzNWYxNWY3OWViYzkxNGFmYTYwNDgwIHB5M2sKKzc4MTUzIDhjZjA3YTY1ZDZmODU1OGY5Y2I0NzUxYjZjNTQxNTVkNjU0NzYzMTEgcmVsZWFzZTMxLW1haW50Cis3ODE1NCA4MmFhOTY4YTk1MDRhNmIzNTIzNTdmODM5NzExZGIyZTQyZjAwYjI1IGxlZ2FjeS10cnVuaworNzgxNTUgMzM0NTJkOTUzMDFmMTYwNzM3NWVlM2UzNjhhYzRjNzFlYmJlZTA3NSByZWxlYXNlMjYtbWFpbnQKKzc4MTU2IDU5MDI5NDQ5NWU1ZjJkMzA2MTYwOGMxNTQ3MDVjNGI1NTk3ZWRkZTggcHkzaworNzgxNTcgMzc4OGFiMjhjY2FkNzBlNmU0ODg5MzViOGMxNDM2ZTgwYTRmNmUwYyByZWxlYXNlMzEtbWFpbnQKKzc4MTU4IDU2ZmUxNjY5OGVlODI4OGFhMTA0MWUzYTE3NWQwMmRmOWEzZTM5MDIgbGVnYWN5LXRydW5rCis3ODE1OSA3YjE2MmM2YTkzNDRmYzAyZGQ5NjUyNGU2NWU1ZTllOWUxOTdhY2U5IHB5M2sKKzc4MTYwIDZmNjliOGZjMmJhM2VmNjhhNzBkNWI1YzJiZTk4NmU5ZDEyZTc0NjggcHkzaworNzgxNjEgMTIxOGEyYTIyNTNjY2EzNDNhYTdjMDEyZWUwYTkwNjUxOTc3NWU0NCByZWxlYXNlMzEtbWFpbnQKKzc4MTYyIDY5NGM5N2EyY2RkYzE2ZGIzMWVlMzJjYzJlY2Q1NGNhYjRkNzllNWYgbGVnYWN5LXRydW5rCis3ODE2MyAyMjk2YzVlNmFkMGRlNjZiYzY0MzVlNzc0ZmYxZTkwYmUwY2I3ZDFhIHJlbGVhc2UyNi1tYWludAorNzgxNjQgODEyOTQ2MmNhYTMwN2E1ODkxYzY4ZjcwYmYyNGQ4YWEzMjRkZTkzYiBweTNrCis3ODE2NSA1MzdiNjY3YWQ0NTAwM2M4ZDY2N2Q2ZjBjODA3ODJlMmY2YTUxYThhIHJlbGVhc2UzMS1tYWludAorNzgxNjYgYjFjOWQ2YmNmM2Q0Yzg0MmMwNjk3MGNiODE5YTA3MjZhNWIzYjY2ZCBsZWdhY3ktdHJ1bmsKKzc4MTY3IDZhY2I5YWZjNzVjZGU0YWNkODYwOGYzYTM3YzIxOTRlZmQzZDUwZjkgcHkzaworNzgxNjggMzM0N2I0ZWVhYjQwNGU3ZDkzMzA3ZDM5OGZmY2RmODY2NmNlMWJlZiByZWxlYXNlMjYtbWFpbnQKKzc4MTY5IDI2M2E4ZjkwNTc4ZDA2ZmRmNzUxYjczYTE4ZmFkMzdjNTliMmFkNDIgcmVsZWFzZTMxLW1haW50Cis3ODE3MiBkNDM3NDAyNDc1MDMzMmJkMDlhMTdmMTRhZjdhOTM1NDkyNDhkYWEyIHB5M2sKKzc4MTczIDMyYTRlZTI0ODA2OTQzNGUwOGY4NWZhMzA5MmZkZWNhMDY1OGE4YjIgcHkzaworNzgxNzQgNDE1NzkyMDA3ZmY5ZWViMzdlNjgzMDU2OGI3YmRlNDk2OGE0MTE2MSByZWxlYXNlMzEtbWFpbnQKKzc4MTc2IDhjNGMzOTFjYWFlYmY1NzYxNzM0NGY5Y2ZkMjVhMzQ3YjViMzk5OGIgbGVnYWN5LXRydW5rCis3ODE3NyBhMzM3NWEwZmZlMmU0NTkwNDNlZTIxNTE2MzQ5OTEwOTcyZmU4ZTE4IHJlbGVhc2UyNi1tYWludAorNzgxNzggNzBmNDU2YmY3NjM4N2Q0OTkwMmQzOWFmZmYyMjlhMDQ0OGQwNDQxOCBweTNrCis3ODE3OSBlMGViOTc3M2FmODE4MzRkM2Q1OThhMzYxMzQyNTgyOWQxYTU3NDI2IHJlbGVhc2UzMS1tYWludAorNzgxODAgYTc5NmYyOGFjZWUyZTc1ZGIxOTdjMDI0YjMwMzBiNzRjNWViODNhMiBweTNrCis3ODE4MSA2OGJlNDQ0Mjg5MDllZDM0YzdmZjYyMGY5MmJlYzg0NTU1OTA5MDExIHJlbGVhc2UzMS1tYWludAorNzgxODIgZGMxMzA0ZjA0NWE2MGU1MjQ2NDk2MDcwYTdmNzYwYjU1MjEzMGI5MSBsZWdhY3ktdHJ1bmsKKzc4MTgzIGEwZWZjZjliNmVkZDU0MmU2ZTVlNjdhZmNhMWRiZDRkZmVmNzg1NGIgbGVnYWN5LXRydW5rCis3ODE4NCAyMDIyZWRlOGNhMGM2MWY0NGZkZjQ0YzAxNmViMDI3ODVmMzE0MmZhIGxlZ2FjeS10cnVuaworNzgxODUgOTAxZmNhYWU1Mjc1Y2Q4NDRlYzViNzg3ZGNjOTYxMDE3Yzc5OTE5NyBweTNrCis3ODE4NiA4NzU2YzNkZTZkMjRiOGUyMjllNDkzZTBjMTZlNWU0M2IyYTBhNmM1IHJlbGVhc2UyNi1tYWludAorNzgxODcgZDI5MWI4MzA0MmZiNmM5OGUxYTRjNDBiZDJiNTVkODI5OGNiZGI5YyByZWxlYXNlMzEtbWFpbnQKKzc4MTg4IDMxZjU4ZDljNzAxNmVjOGY5NmQwNjUxOWZmNzhkN2Q0OGY0ZmViYmIgbGVnYWN5LXRydW5rCis3ODE4OSA1ZTZlZGI0ZTc2ZjU4MzcwMTEwYzYwMGEwMDM5MWQxMmY0YTU4NTg4IGxlZ2FjeS10cnVuaworNzgxOTAgNmIyOWI5Zjk2ODA1OTljYjY1NjFlMGY3OTA5MzExMzRhNjRmZmVlYiByZWxlYXNlMjYtbWFpbnQKKzc4MTkxIGVmNzQ3NjRhNjMyMDk4MzYxMDQzMWIzMTYxNGI1YTNlNjQ1M2U4ZGYgcmVsZWFzZTI2LW1haW50Cis3ODE5MiAzYmFhYmQxZDY4YTI4NmY0MzNhZGRiNDIyZDVmZjMwZDBhNmIwZWE3IHB5M2sKKzc4MTkzIDAyOTMxODI0NjlhNzczNGRkMzJlNDhkOGFiZjNlNGNiNGQ4NTlhMjQgcmVsZWFzZTMxLW1haW50Cis3ODE5NCA0MTFiMzI5OTM4ZGM0Y2FkNzgxNDEzODBmMjQzOGFjNTE0N2IxZmI1IGxlZ2FjeS10cnVuaworNzgxOTUgMTcyNWZiYWJlNzNiZDQwNWEwODUyMGFjNzc4Mzk4ZjY3OTQ0MzQ3MSByZWxlYXNlMjYtbWFpbnQKKzc4MTk2IDdhZTQzYzA1MTE2ZDNmOTM2YTNjMjJlZjhhNDQzZjk0ZjI5MWEwZDcgcHkzaworNzgxOTcgNjM3NGUxODU5MzQ2NDE3ZDUyNTA5ODY3NzhhZDZlNDU0ZTJjMjlhNCByZWxlYXNlMzEtbWFpbnQKKzc4MTk4IGI2NDFjMWFhNjQzZTE5MjhjYTkwNGJkMDdmMzE0MDQxNjZhMTZjZjIgbGVnYWN5LXRydW5rCis3ODE5OSA0NjVjMDQ3ZWYzMTFjMGNjNDBmMGU3ZDNiYWE1MmVhMDM3NzM5YzhlIHJlbGVhc2UyNi1tYWludAorNzgyMDAgNzdkODU5MDI2OTE5Y2U0YWJlOGUyMzZkYTNlZmQ4OGNiOThjYmE4YSBweTNrCis3ODIwMSA0ZjZjMWI4Mjc3ZWI0MzZlY2JiZGE1MDgwNjQ4ZjdlMjI2MDliYjhjIHJlbGVhc2UzMS1tYWludAorNzgyMDIgN2E1NmYyY2FlM2VjZDdkYTI3NjJmZDg4OTYyODJkNWI3YTk2OWQ2MCBsZWdhY3ktdHJ1bmsKKzc4MjAzIDE1YjA0OWZhYzE5MWE0MDY1Y2IwODZjOGM3Nzk1NzdmOTE5NTVmYjYgcmVsZWFzZTI2LW1haW50Cis3ODIwNCBkNGZiYjdlNTNjOTI5MmI5NGRmYTgyZjVlNGQyMzVkOWU3YTk5ZDMxIHB5M2sKKzc4MjA1IGI3MzI2ZjliNTk5YjcwZjM1MWU3OWFjMTM0YjAyMWI0Zjg4MGFiMjggcmVsZWFzZTMxLW1haW50Cis3ODIwNiBlYmZkMGVhZWJlMjcxMThmMjlhNGY3YWJlNzg4OGM0MjBlMmU0NTkxIGxlZ2FjeS10cnVuaworNzgyMDcgYmZiM2U4NGY4NWZmZjU5ZWYzNGM4OTVlMmJkOTIxODI1YzQ1YTE2MiBsZWdhY3ktdHJ1bmsKKzc4MjA4IGVlY2YxYmVmMDUyZDNkYTUxMTIzZDI4NWI4M2QxOGI0YzQxYTVlMTcgcmVsZWFzZTI2LW1haW50Cis3ODIwOSA1OGIzMGRiY2Y5OWM0OGQ2Yjg1ZTc1MzNiZTBiZDBhMDY3MjNhNzQ0IHB5M2sKKzc4MjEwIGE2NzFlZTNiYmNiNDk4ZTc0OTQ2M2VmNGQ4OTM3Yjc3NDY4Y2Q4MTkgcmVsZWFzZTMxLW1haW50Cis3ODIxMSAwZGJlMjkzMGVlM2YwZGQyNTkwZDUwYjMzNGJkMzEwOGEwNTU5ZjNkIGxlZ2FjeS10cnVuaworNzgyMTIgYTI3MjQ0NGYwZWYwYzkwMjJmMzdlYzg2ZmQ0NTdlZmY1YzYyZGQ4YiBweTNrCis3ODIxMyAyMjUzNTU3ZDZmYTJmZTYxMTJlODNjMjM1ZDQ5MDk1Yzc5MDJiOTUyIGxlZ2FjeS10cnVuaworNzgyMTQgNGMwYmUzN2I0NmIwMzY4YzAzYjRkN2JlYmViYzhjYjY3NmMwYWU5MSBweTNrCis3ODIxNSBkZmM2N2FkNGRjZWU1N2I2NjYyN2NiMGY4ZDhkZDQxMWE2NDJkZGI1IGxlZ2FjeS10cnVuaworNzgyMTYgOGYwMmM1NGFjMmFjOGE3MGZlNzEyZDkwY2JlMzBiZmM3NTQ3MGIyYSBsZWdhY3ktdHJ1bmsKKzc4MjE3IGUzZDA3MTIzM2JlZmMwYWUxNTM2MmI3NTM3ZDNjMTBmOWZjOGY0OWMgbGVnYWN5LXRydW5rCis3ODIxOCBlYTFhZGM2ODM1Y2NkMTkyZmQzODlhYzk0NmU5Y2IxNWFjNzE2Mzc1IGxlZ2FjeS10cnVuaworNzgyMTkgZjIyNWQ1ZTZlMGU1MGIwY2ZjZmUyMDg0OGU1ZjZhYWEwNWRmMjNjYSBweTNrCis3ODIyMCA5M2UzZTZjNTE1MTM3NTdlYjgxNTMzODgxN2VhZDU1YzQxMDIwNzhmIHB5M2sKKzc4MjIxIDlhNTgxYzAyMTBmMmVmNzc3N2JhZTI4ZmVmMzY3OWEyMTBjYmU2MzYgcmVsZWFzZTI2LW1haW50Cis3ODIyMiA0MWM1ZThlZmVhYTNjNThjOTI1OWExZGIzYTc5ZjBlN2E2OTI1ODJhIHJlbGVhc2UzMS1tYWludAorNzgyMjMgZmI4YzAzODhlMzg1ZTRlZDljODQzMGUzMmJjMDlhOGNlMmJmMDU3MSByZWxlYXNlMzEtbWFpbnQKKzc4MjI0IDk5MmZkMDU0N2ZmOGQ1N2Q4NGYzOGVhNWE2NDBlODI2YWI1ZTk2MDggcmVsZWFzZTI2LW1haW50Cis3ODIyNSAyODZhZjMwOGMxYmJhYWE4OGExMTVlMDgzODk0NGFjNjc3NWRkMGNmIHB5M2sKKzc4MjI2IDhhOWVmMmNmNzk0ZmU2ZTZjYjcwYmZiODJhNmY3NDZmNmViOTM2ZmMgcmVsZWFzZTMxLW1haW50Cis3ODIyNyA1OTdkNmQzNjJkZGU0MGQ4MGZiNzE3ZGIzMzg3OTk1MjM4NTA1NzA5IGxlZ2FjeS10cnVuaworNzgyMjkgNWFhOWY4M2RkMDBkOWZlMmQ0YzI0NGQyOWFlYjBlOTAwNzkwMTk3OSBsZWdhY3ktdHJ1bmsKKzc4MjMwIDcyZjQ2Y2JmYTU3YWFkMjIzN2I2ZjI4ZmI4ZWNhNWI3ZDgyZWRmMjYgcHkzaworNzgyMzEgNWU2MTRlYWFhNTA1MWFiOTRlYjJhMTMxYjM3ZDZlYTBmOWJjODc2MyBweTNrCis3ODIzMiA2ZTc0ZDNlNTFkMzNlOWY3OTFhNjFmZGQ0ZTVlZjAzNzkzMmYzMjU0IGxlZ2FjeS10cnVuaworNzgyMzMgNGZjOGI2ZmU0YWY4NjdhMmJhZmRjNGM4NzQwYmRmYzIzYjMwYmFmMyBweTNrCis3ODIzNCA3ZGE3ZjliZmRhYWMwMTc4OWQ3ZDM0NWE3ZWEzMDQ4NjlkNmEwMGMyIGxlZ2FjeS10cnVuaworNzgyMzUgYzQ4NWU1NWFhZjk2NWY1NDY1OTY5YTYwN2RjZjBkYWQxNjc4YTMxZSByZWxlYXNlMjYtbWFpbnQKKzc4MjM2IDhiMTZmMTQwODI0OWU5YWUyZjk5YTY1MTg4MGViOGIxY2E2NGVmMjQgcHkzaworNzgyMzcgZjcyNWNmMTIzMzRiOTdjMDExMjliYjk4Zjk1YWVlOTMyZDYzYzk5OSByZWxlYXNlMzEtbWFpbnQKKzc4MjM4IDA5MDZjNmY2NDg0NzQ0OWE3YTNhNTAzMGZmOWRhMDc1OTdjMTdkMzkgcHkzaworNzgyMzkgNDc0ZWM1Njg1YTJkZjBlZWNmNzNiNzA5OGM1YTI3YmNlMzhjNzJiYiBweTNrCis3ODI0MCAzYzcwNDQ2MWVhZGEwOWNiOWUzN2Y4YjQ5Yjk2NjA3ZWQxMDU3N2UxIHJlbGVhc2UzMS1tYWludAorNzgyNDEgZjk4MTdlYzhiNTRjMDRiMzYzZjQyOTVlZWNmOGQ0ODhiZDFlMDA0NSBweTNrCis3ODI0MiA2NzRjMjdkODdlYTk5MjFiNWJkMGZmNTNhOTdhZTEyNTMxNDFmMmU0IHB5M2sKKzc4MjQzIDFiZjA0M2VkYjhkNTc0ZmFlZTU5NmIzMDM5N2Y5YWQ4NzUyOWNjNDUgcHkzaworNzgyNDQgNTI4MjM4MjBkY2UxM2U4ZDFmMjk5Y2Y1MDgxYjM0ODM1N2MxOTMwMSByZWxlYXNlMzEtbWFpbnQKKzc4MjQ1IGU3NDIzYmVkMGVjNDNlMmE0NGZmYWMwOTI1MTYxZjYyMmRjMzE1NDUgbGVnYWN5LXRydW5rCis3ODI0NiA4ZDg3MWUwZmE3MDE4NjIyMGI0NDhhMTU2NGZhMjMyZGZhNmM0YWJlIGxlZ2FjeS10cnVuaworNzgyNDcgZWFmOGE5M2NkYmZmNGNhODYzZTYyNzRjZmUyODI2Y2JiYjRhYTMwMiBsZWdhY3ktdHJ1bmsKKzc4MjQ4IDdhYjYzODg0ZDY4YjZmNTdmNjczNTQ1M2IwNzY0Y2JkY2VmMDc0M2MgcmVsZWFzZTI2LW1haW50Cis3ODI0OSAzYTcxMzJmNjU2MjMxMzY4MTA4NGI4OTIzNWE4N2JhOTk4MzkyMGFhIGxlZ2FjeS10cnVuaworNzgyNTAgYWNiMjdiOTc5MjNhM2E3ZWE0MjkzZmY5YjkwMzNjODFiY2Y1YzU3YiBweTNrCis3ODI1MyBkZTRjYTg4MTRlMGQ4ODMxN2Y0YzdhM2YwMjgyMDIzODBjMzJkZjY3IHB5M2stY2RlY2ltYWwKKzc4MjU0IDU1N2U0NTc5OTdhODE2NGNlMjc2MTcwYjdmMmZkN2ExYWRhODc3YjUgcHkzay1jZGVjaW1hbAorNzgyNTUgYmE0MDdjM2Q4MjBjZDg1NmRjM2FjZTc2YzkwN2Y2MDQ4YmMyNDQ5NSBweTNrLWNkZWNpbWFsCis3ODI1NiA4NjcyNzBkM2NhODk4OTA0YzI1MzkzZWY5ZDA3YWQ0OGMyNGJlYzQ2IHB5M2stY2RlY2ltYWwKKzc4MjU3IGFjNWMyY2ZlYTQyZjZkMDY3YzAxMWI0ZTFlODBhMmI5N2E1NWE5MzAgcHkzay1jZGVjaW1hbAorNzgyNTggOWZjYzAzMGE4ZTcwMWI4MTE1YWY4NDFiYWI5ZmU4ZmU2Nzc5YjMxZiBweTNrLWNkZWNpbWFsCis3ODI1OSAzZTdkZDIwNjg1ZDg4NWE4YTdhNjQ4OGEwMTVmOGEyZjM0ZGMyYzE1IHB5M2stY2RlY2ltYWwKKzc4MjYwIGY2N2JjZDRlY2JlZWZkNTZhNWE0MTMxYWJlYWU4YjgwMDU4MDgwY2YgcHkzay1jZGVjaW1hbAorNzgyNjEgNjZmOTc1MGJjNmZmMzYxZGNlZDZkYzc3Y2E0OWFjNzUwZDJhYmY3MyBweTNrLWNkZWNpbWFsCis3ODI2MiBmYmMxNTk1MzFiZTFjYzVjMDZjM2VhOWY2OGMyOTBkODVhNzIzZmE1IHB5M2stY2RlY2ltYWwKKzc4MjYzIDEyOWJiYzY2MzliZDg3ZjA5NjljY2Y1Nzg1M2FiZDBhOWM0NmEzYTggcHkzay1jZGVjaW1hbAorNzgyNjQgYmFkZDRlNzA1NzMzYWJmNDM1NDlhZWMzNjUzNGY5YmJmMDhmYzhjOSBweTNrLWNkZWNpbWFsCis3ODI2NSA0MjA5YzM5OGM5Mjk3YWE1NWI5YjBlYWE5MGE5ODhmNWQwNzA3ZTliIHB5M2stY2RlY2ltYWwKKzc4MjY2IGUwZTNmNjM0MTU3MDQ2ZjkwMWNiMjkyMWUwM2FkODM4NTNmYzgwYWYgcHkzay1jZGVjaW1hbAorNzgyNjggM2MxMmJkZjZjYzZkMTdmM2IwODdlOTY0NDAyYmE4YThlZDM2NGE5OCBsZWdhY3ktdHJ1bmsKKzc4MjY5IGFiMjFhMDQ4MWQ3MjY0ZTYxNTE0OTkwNjZiYjU2ZGQwMzljNjgyYmUgcmVsZWFzZTI2LW1haW50Cis3ODI3MCBkMzJkMDNkNDE5NDc2ODdiMGQyNmY4ZTU3YjkzOGY4NjJlNTQyN2FhIHB5M2sKKzc4MjcxIGI5ODM3NzlmMjEyMWI4NTQ1MTFhOTUwZjI3NDc2YjJlZGE0OWNhZmUgcmVsZWFzZTMxLW1haW50Cis3ODI3MiBkY2RhOTg1YzY0MDM0MjgwOGNlN2RiMDc2YWNhYjJiZTE5NWM2ZjIyIGxlZ2FjeS10cnVuaworNzgyNzMgYWYwMGY3MGExZmYxMDQ0YzI3Y2VkMWY5ZTFkMGFkNGEyZjdjYTY1YyByZWxlYXNlMjYtbWFpbnQKKzc4Mjc0IGRiODZiZjM5Y2NhYTY4ZjNiZjNmOWU3MWMxNzYyOGMyZmZjMzBkMjMgbGVnYWN5LXRydW5rCis3ODI3NSBkM2FlMDQxZTdiOGMyNmVkOTVkNGE3NzJlZjljYzg3Y2U3OGI2MTUzIHJlbGVhc2UyNi1tYWludAorNzgyNzYgMzc5MGYzZWRhMWM1NmI4YWM2ZmJlY2U0Nzc5MzExMzIxOWUwOTVkYSBweTNrCis3ODI3NyAzOTBiMGU3MDdmNTRiNWRjMDlhYzE3MTQ3NDNiNmMwZDMzMDA3YjA0IHJlbGVhc2UzMS1tYWludAorNzgyNzkgMWIyNDJmYjMzYmU3MTIzY2FhNjUwMGUzZjhjYjgzZTIxOTE2ZDNkNCByZWxlYXNlMjYtbWFpbnQKKzc4MjgwIGM4ZWE3NTU5OGZkNmQyZTQwYzIzNDljYTA4NjIyNjQ0NzUxODA4OTUgbGVnYWN5LXRydW5rCis3ODI4MSBiOTIyZTFlYmUzODAyMjY5MTlmNDE0NTUzODc5NTczZjlkNmYwNmRlIGxlZ2FjeS10cnVuaworNzgyODIgMGVkMTkzNzY5YTVmMWVkYmY1NTcxOTAwNTBlZTIzNmUwMWYwZDNkOCByZWxlYXNlMjYtbWFpbnQKKzc4MjgzIDAzNDA4MDRhZDcxM2UwNDg2NGJiOWFjMTVkYmMyZDc2ODAwY2U2ZGEgcHkzaworNzgyODQgNGYzMDQ0NTJiYmY2OWFhZmUwNmE5YjZmYjk5YjJiZDRiMDNhNGEwNCByZWxlYXNlMzEtbWFpbnQKKzc4Mjg1IDgwYjYxMmNkOTRhNGU3ZGUxZGUyOTkwYTBiZjJmMTQzNzgwNDhhMGMgcmVsZWFzZTI2LW1haW50Cis3ODI4NiA1MDMzYTQyOTVjOTZhZWI3MmEwM2MzODU3MjQ5MzA1NTYyZTAyZjQzIHB5M2sKKzc4Mjg3IGUxNDRjNjNlMWZhNjExMjRlMzc3MWYyZjU1NTk3ODMwZTliMTI4YjMgbGVnYWN5LXRydW5rCis3ODI4OCAwZDNjOTcxZWIyMDY5NzU5YmI3MjY3OTlmY2U4YjZmMzQ1YTIwZTI1IGxlZ2FjeS10cnVuaworNzgyODkgMjBiODU3YmIxMGI4MDg1ZDkyY2Y1MTkzMmU4MDZkNWJlZDk0NjNhMSBweTNrCis3ODI5MCBiNzQ5YTc5YTUxY2NiNGNiYTcyZDQ3NjFlNTM4NWY1NGUxM2JkOGE0IHB5M2sKKzc4MjkxIDBkMmQ2NjA2MTMwM2JkNWI1ZDA5YjYyODI0ZWM4OGI2NWE5YzQ2ZDAgcmVsZWFzZTMxLW1haW50Cis3ODI5MiAxNzIwZWUwODNlZWVmNjRmYzA5YWQzZWRiOTcwOWYyMzUxYzNmZDk3IHJlbGVhc2UyNi1tYWludAorNzgyOTMgNmQ2YmU2NWQzODgxZmI2MjFjNjA4NDBlYWQ0YWU1MTQwYTc0NTVmOSBweTNrLWNkZWNpbWFsCis3ODI5NiA5NmE0YWExZjMxYzEzNjkxMDM0ZjE0NmMzNDk0YjkwOGU1Y2RmMTEwIGxlZ2FjeS10cnVuaworNzgyOTcgYWI2ZmQ5ZTQ1NDM2MjA0MjFjZDkzNWQ4OGU0NjJiZWZhYmJhZmZhNyBsZWdhY3ktdHJ1bmsKKzc4Mjk5IDU4MWUyMWQ3YTE5Mjg1N2E1NWU4MGI0YTJjNTM4ZWI2ZTQxNzg0ODMgbGVnYWN5LXRydW5rCis3ODMwMCBjYzBlNjljOGYwYzIzNzI5ZjQ0MzhmMmU0NDBhODJhNzZiNzAyYzlhIHJlbGVhc2UyNi1tYWludAorNzgzMDEgZjhkZGZjZWQyYTM0N2E3Yzc4OWE2YzhjYzcxYjQ4ZTBhMWZkNmJhNSBweTNrCis3ODMwMiAwMzY5YmJhYTVkMmRmYmY5YWExZjc1ZGU1NzQ2NGY4MDEwMDkyNDg4IHJlbGVhc2UzMS1tYWludAorNzgzMDMgM2RlOWJhY2FkOTViYzJiYTRjMmQxMWE1ODZmYTQ1N2NkMmI0NTE2MCBsZWdhY3ktdHJ1bmsKKzc4MzA0IDhiNzQ1NWUwMWExMTE1MGQ3YzcxYmI2YTkxNWY5Nzc0ZTc1M2E1ZDUgcmVsZWFzZTI2LW1haW50Cis3ODMwNSBmODYxMmQ0MTBlMmM0MThiMjhlYTE4ZGRlN2RmYTc2ODJjYmI0NTk3IHB5M2sKKzc4MzA2IGYwYWNmMjEzOGE5NjZhN2UzZWU3ZDk2YmMwMjVhMTlmYzA4MzJjMjAgcHkzaworNzgzMDcgMjA0NTRmYjBiZTZlZjc3NDRkYmUxZGE4MTA5ODY4ZWQ4YzVjZjQxNSByZWxlYXNlMzEtbWFpbnQKKzc4MzA4IGMyNTRlNTRhYzg1NjQ2ZmRkZjk5OWRhODk1NTc5NGVhZjM4NjliZjcgbGVnYWN5LXRydW5rCis3ODMwOSBjMWE0ZjI3YWU4ZmU4MzY2ODhkN2FlZTkzMDc5ZTMwNzFlNTQxNDQyIHB5M2sKKzc4MzEwIDE1ZDhlZDk0OGZiNTYxMWI0YWY2ZWQwZDU5ZjFjNTcxOTJiZWMxZGEgcmVsZWFzZTMxLW1haW50Cis3ODMxMSA5ZWNlM2RkMWU5MDEwZDMyNmZiOTA3MjhkZDQxZjIyMzgyNzU3ODhlIHB5M2sKKzc4MzEyIDUwZjhiZjYxNzA2YTQ2MGFiYjY3YzVhNDBkN2RiZmJmOThiN2NiNmYgbGVnYWN5LXRydW5rCis3ODMxMyBjNDVlYzNiMTFiYmE5ZWQ4MjRhZTdlYjhiMzllZTdjYWRhNTk0NzBjIHJlbGVhc2UyNi1tYWludAorNzgzMTQgNTIyN2E1NWVkNzE0MmJkOTk1MzFjZmVkNmIwZDhhYTMwZTgyYTJkOCBweTNrCis3ODMxNSBhZTY1YzdkMzVmMjdhYTJiOGI4MTcwMDZhNzc0YWU2MjI1YTI4Y2JkIHJlbGVhc2UzMS1tYWludAorNzgzMTYgMzhmNzMyODJmMDM4MzBiMDJiNTQzY2Y3OWUyZmEwMjU3ODYwZDY4NiBweTNrCis3ODMxNyA1ZDc3NDFlMWU2NzI4NmUxMzg4MWQ2OGU4MzIwMDMwY2QyZTRlNDYxIHJlbGVhc2UzMS1tYWludAorNzgzMTggMjMxMTUwMTVlNWI5NmU3NDFhODYxYmE1MmQ4MDA0ODE2YTgxNDVkYiBsZWdhY3ktdHJ1bmsKKzc4MzE5IDMxYzdkZWY5YmY1MWU3OGJjYWViMGUzNTMwMTU0NzU4NzRhNzkyNTEgbGVnYWN5LXRydW5rCis3ODMyMCAxMzJkNDIzNDgyMTZjNzNlZGNmNjQ3NGUxYWE5MWE5YWZhMzc4ZjE5IHB5M2sKKzc4MzIxIDJlYjEzNjU4ZjU3M2E5YmI2ZWVkMDQ3NDAxNDkyNDE2OGRlMTExNmUgcmVsZWFzZTI2LW1haW50Cis3ODMyMiA4ZjJkMTAwMTRjMDg0NjRmOTA2YTJkOTE1NDUxNzI5YjI5YzVkYTEzIHB5M2sKKzc4MzIzIDdhMGMzMGU3ZTRjYWYwNDY5ZGU1ZmM1NmZlNGFkZTJjZTU5MzhiOTggcmVsZWFzZTMxLW1haW50Cis3ODMyNCBkN2MzMzc3ZjhhN2I2NzQyZjc2MDBlMzI0Zjg0ZmJjMTg0OWQxNGRhIHJlbGVhc2UyNi1tYWludAorNzgzMjUgYzg4YjY2MDJmODJkNzVmNmYwZGMyMjhhNDI2NGU0YWRmOWQ5ODVlZSBweTNrCis3ODMyNiBhNjA4ZmMzNzhkOTIyMWQ0NDIwYTE1ZGVkODdkM2I2MDI1YzllNmM2IHJlbGVhc2UzMS1tYWludAorNzgzMjcgNDkwMmVhMDI1NjMwNzk5NWJjOTlkNTRkMTA0Y2YyMjAyNTFjOGJiNCBsZWdhY3ktdHJ1bmsKKzc4MzI4IDUzMmRhODY5NzNjZDRhMWQ5NmQxZWVmNTE3ZjFlZDM5M2JkN2ZiZDMgbGVnYWN5LXRydW5rCis3ODMyOSBmZjg0ZTA4OTNjYjFhYjZmN2Y2ZDQ0NzM1NWJiMjhkN2FlMjQ5YTRlIGxlZ2FjeS10cnVuaworNzgzMzAgOTc5YWMxN2VjODIzZDA2ZjY1NGVkY2YxMmFkYmRjNTA0OTU5MWZkMiByZWxlYXNlMjYtbWFpbnQKKzc4MzMxIDQwY2IyMjMzZjcyNmYxYzYwZmMyM2UxMjczMGUwY2RmM2I4NWQ5MTAgbGVnYWN5LXRydW5rCis3ODMzMiBmZDk0ODg4NTQwODg3NzNjYzQ0MjdlOTMyMDk0MzdlMjE0MWMwNzA1IGxlZ2FjeS10cnVuaworNzgzMzMgNWM0NDY2YjE2ZDZkNTc2ZTMxNTNmM2NkNDNmNGI0MDQ4ZDE0MDIwZiBweTNrCis3ODMzNCA3M2NkODM3MDZiYzQ1NDJkMzc4OGMwMmU1ZjU4YmM1YjVmZjk0YjllIHJlbGVhc2UzMS1tYWludAorNzgzMzUgMzM1N2I4ZWJiMjU5NWMzMzUyNGM1NGY5OGU5MGQ2Y2I3ODY5ZGRhMyBweTNrCis3ODMzNiBlYTAyZWNlMzIzZmUwZTg0NDQxNjM5NjdmOTAyMjRlMGRlMDhjNzk2IGxlZ2FjeS10cnVuaworNzgzMzcgZWY3MzJjM2RiNjNkYzU5Zjg0NmM1ZDRmNjU4MzRhYjRjZDkzMjI0NiBweTNrCis3ODMzOCBiZDEzZWVlZGMzYjAzY2MwMzVjMzk2NTNhMTdlYjg0YTE3MzFmZDVkIGxlZ2FjeS10cnVuaworNzgzMzkgMDQ3ZjE5OTc3YzQyODQzNmMyYWRjZWU5MmU4OGU5NzdjMzdjNzEyNSBsZWdhY3ktdHJ1bmsKKzc4MzQwIGI4M2Y5NzE2ZjEzNWI4NjdmODk3MjQ1NGUwNzE2ZTUyNDFmYzk5NmMgcHkzaworNzgzNDEgZDI4OGU1NDkxYmNhYWJjMDE2Y2RmNWNiNGFjY2YxNmIxOTg2MTMwNCByZWxlYXNlMzEtbWFpbnQKKzc4MzQyIDdmYjAxM2ZmMDE0ZjE5NWU4NTFkYjU4OTc5MGQ1NjNmYTU5ZTViNTkgcmVsZWFzZTI2LW1haW50Cis3ODM0MyA1ZmNiMGUwYmU4OWU5YjEwMTIxMzFlN2I1ZDA5OGUzYWYyNjliMTQ4IGxlZ2FjeS10cnVuaworNzgzNDQgODdmMWI4ZmZjMjhkNzVkZTE2NTM2MDgyZWQ5M2ViNWI2NGE2NDdhMyByZWxlYXNlMjYtbWFpbnQKKzc4MzQ1IDc3ZDg3N2QwYmYwNmQ5M2VkNDM1M2IzOTI5OTQ0M2UwNTVhZjEwMWYgbGVnYWN5LXRydW5rCis3ODM0NiAzMWNiNjFlMGYyYmMwMDg2NmVjZDYxODIwMTc0MGI1ODk3OWNhOTcwIGxlZ2FjeS10cnVuaworNzgzNDcgOWI1ODA2YTAwOGU3MTRlYzJlZWQ2M2NkY2I2ODdmN2ZmYTFjNjZmNCBweTNrCis3ODM0OCA5ZDU1YjE3YTNjNjQ3YWYyNTE2ZGFiODc1MjYzYTU0YTJjYmUyYTBmIGxlZ2FjeS10cnVuaworNzgzNDkgMTUyODZkOWYxYThlMzgwMzI1YzcwOWFmYmViNTJkMTQ1ZjI3OGJmZSBsZWdhY3ktdHJ1bmsKKzc4MzUwIDhjMGU0ODk2ZGJmYzUyNDU2MjU5MGEwMzEzY2VmMzU3YzI4NzI0M2YgcHkzaworNzgzNTEgYTRjNDVmOGU3MGFhZTFmMzk5MzMwNDAzODAzMDE0MmJjZDYyNDA4ZiBsZWdhY3ktdHJ1bmsKKzc4MzUyIDhlOGM0NWFiNDRkY2Y3ZjdlYTcyODJmYTk2MjE2ZjAwNmUxYmE1ZjcgcmVsZWFzZTMxLW1haW50Cis3ODM1MyA1NzY3ZDkyNDlmNTg5MjNlMzMzMzU2NzU4NTFkN2RmOTFhODczNTQ4IHJlbGVhc2UzMS1tYWludAorNzgzNTQgMGJkMTczNmUzMjk3M2Q2NjE4MDY2ZDUyZDBhMDM0MmI3NjdkOWYwYSBsZWdhY3ktdHJ1bmsKKzc4MzU1IGZjNGIwMDVjYmQyOGY0MjMwOWYwNTVhZmFhZTIzZTNjNzYwMGFkODMgcmVsZWFzZTI2LW1haW50Cis3ODM1NiBmYzI4NmZlNDY2MTIzMzBjYjJhNGFhZmQ4MmQ3MmM2NDQzNGYzNGQ2IHJlbGVhc2UyNi1tYWludAorNzgzNTcgYTVmYWFhYjk5NWM0MmM5YTYzMzE0NjM1MzRkZDQxOTU3MWVlN2NlNCBweTNrCis3ODM1OCBiNGM2Yjc2OTRmMGMyZWM4MzE5OWZhNDk5YTUzZmVhOTgzMmVjMzYzIHJlbGVhc2UzMS1tYWludAorNzgzNTkgYWMzNmVjOGJhZTZjNjUwNjg4NjA2YjkyZGY0NDExZDcyYzA1MjI5NSBsZWdhY3ktdHJ1bmsKKzc4MzYwIDQ2MGNlOWU4NDgzODNlNWY0ZmZlNjgyZTJjMTRiMmQxZTA1YWM2MzUgbGVnYWN5LXRydW5rCis3ODM2MSA0YTExODFlYzQwMzY0ZmZhNTRhNzk2NzY1NDNlZjhlOWFlZTU4NTMxIHJlbGVhc2UyNi1tYWludAorNzgzNjIgYTFkMDc4Yjg4MjQ3MmE0MjQ5MTY0MGNhNTNiZjRkOWQ2YjlhYjJjYSBweTNrCis3ODM2MyAxMzljMTA0OGYzMWJkNTAwYTg4NjFmODM0OGI0MThjYmMyMjJmMzY5IHJlbGVhc2UzMS1tYWludAorNzgzNjQgYjUyZTNmZjBhNGM4YjIzZWI2OGNiNzRlNTA0YmFjMjk5NGUxZTU4ZSBsZWdhY3ktdHJ1bmsKKzc4MzY1IDhjOTMwZTRkNTFiZDI5MGUyMDE3YzQ5MmJhZDE2ZmY3YTk5ZjE1ODYgcmVsZWFzZTI2LW1haW50Cis3ODM2NiBkZjU2YmExY2IwYWYyODI1OGE4Yjg4OWE3NWVkYTcwZDg3MzVlMzNmIHB5M2sKKzc4MzY3IDkyNjcwY2MxYTZiYzQwMmRkMTFhZDUxMDJhY2QxODI4ZmMxODZhODIgbGVnYWN5LXRydW5rCis3ODM2OCBmZWM1NWY1Mjc3NWNlNzc1MTg1M2UyNDZkMjFlMzQwNDk1ZjliMTA4IHJlbGVhc2UyNi1tYWludAorNzgzNjkgYmY4ZDlmMDM1OWMxMjI2MDNlYjY3OTNmYjU2MzhhZDI5ODc2ZmZlYSBweTNrCis3ODM3MCAyNDNjYzgwZDRhMDY3YjQ5MzQ5MWZhOWYzMTI3Yjc5OTI5YTA2MzMyIHJlbGVhc2UzMS1tYWludAorNzgzNzEgNzZhYzdhMWQ3MWI3NWVhZTZlYTc1MTVlYjg3NjkxMjVkYTQ5YTM4NyByZWxlYXNlMzEtbWFpbnQKKzc4MzcyIDhhNTZiODJjMTI4NDUyOTExZDViZGIwM2JhZWVlNzExMTQ5ZmY5NTkgbGVnYWN5LXRydW5rCis3ODM3MyBkYTM3M2RhYzI0MTVlMzJiYzI1ZmUzYzlmYzNlZjFhMjM0OWMyNTdiIGxlZ2FjeS10cnVuaworNzgzNzQgODliYzI4ZjIwMDIxZmI0NjAyYTRkZWM3MzQ1MGYzOWE1ZTA2NzlmOSByZWxlYXNlMjYtbWFpbnQKKzc4Mzc1IDg2OTBkMDhkOTUzZjk3ZTU1OGNmMTdhZmJlOTQzNDcyYTYwY2U0YjAgcHkzaworNzgzNzYgMGY1NGQ0MzI3MzRjNzY2NTg4MzhjODVhZTAyYzgyMzUxYWI4ZTIwMyByZWxlYXNlMzEtbWFpbnQKKzc4Mzc3IDFkZDFlYWRhNDZjMmQ3MGRlYWQ0ZWZmMjM0MjMwYWM3MTliZDU4OWUgbGVnYWN5LXRydW5rCis3ODM3OCBiZDRjOTE2ZjBlZmE1ZDFlZjY3ZDM3MmU4MjQ5M2ZiNDU2OWFlMWZkIGxlZ2FjeS10cnVuaworNzgzNzkgOWUxY2ExYzExOTAyMWM0ODEyYmU0MTg3MTZiNzdiY2UyZWRiYzlkZiBsZWdhY3ktdHJ1bmsKKzc4MzgwIGIxNzgxNGJlMDVmMWMxZjVhNjcyNThkMWYzZjg1MzM2MmQwODU0MDQgbGVnYWN5LXRydW5rCis3ODM4MSBlMmE0NDQ1YjBlN2MzMDBkMGE3MjAyZWE5NjE0YjM1OTk0YTM0ZGZjIHJlbGVhc2UyNi1tYWludAorNzgzODIgOWZkODAzYWJlMTQxYzk0NjhiOGZhNjdlYzNiOTNhODRkNzgyNWNiNiBweTNrCis3ODM4MyBiOTA4YTQwZjAwMjA1MDkxMzJjMWQ0YmFmMTRiMmQ3MDZiMzczNzUxIHJlbGVhc2UzMS1tYWludAorNzgzODQgZGRhNTE2NWEyMzc0ZTdkODY2MThjZDc3MTQ0ODgyMThhOWQ4ZGRiNiBsZWdhY3ktdHJ1bmsKKzc4Mzg1IDI4NzQ1MGIyZDdhNzhkNWQwZDMzMjM3Mjk0Njk0MGZkOTZjMWJiNDAgbGVnYWN5LXRydW5rCis3ODM4NiBlYTY4ZDc1NTI5YjExY2ZjZGMxN2U3M2IwYWVhODkwNGZmMGRhYzRiIGxlZ2FjeS10cnVuaworNzgzODggNzdkZTdiMWJjZDU5ZGE3ZTY3NjhkZDgwNGI0OWZiYTM0YzBkZWQ5MiBweTNrCis3ODM4OSBhYjEwNzkzYTQ2YTcwMWMyZTgzYjNjMDM0YmZmOTg1NDk2NDgyNTQ4IHB5M2sKKzc4MzkwIDEyNDk3MDcyZjlkYWNlMjBjZTdiMmJiNWNjZjA4OTQ3M2Y2MzlhMzAgcmVsZWFzZTMxLW1haW50Cis3ODM5MSBmY2YyMTJhOTNkZDQyZjA0ZjNlMGZkN2MyYzk1MGFkN2E2NGNmNWI3IHJlbGVhc2UyNi1tYWludAorNzgzOTIgMzJiMjEwNjFlZTlmZmYyNTRjMzIyMjRjYjZmMmM1OWQ1ZGNmZTczNCBsZWdhY3ktdHJ1bmsKKzc4MzkzIGRmNTcxOWMyOThkYjJkOGZiYmI5MTkzNjBlYmU3ZGFiMjc0YzlkZmUgbGVnYWN5LXRydW5rCis3ODM5NCA3NzgwNDgyYTY0ZGE2OWY2MTY2ZjliY2Q3Yjk0ODdhMDJjYTExNzFjIHJlbGVhc2UyNi1tYWludAorNzgzOTUgNDRlZTRmMjcxZDdhZWJmOGFmMjBmMGJkODlmNDcxOTY3NTYzODkxYiBweTNrCis3ODM5NyA3OThlMGQwYzcyNDZkZGIyMDdjMjc1ZDJkYTlhNWQzZTU4OGExYTNhIHB5M2sKKzc4Mzk5IDQxMGMxYzgwZDY2M2FiM2I5ZGU5OTNmYzYyMmYyNGMyYzZjODY1MDYgbGVnYWN5LXRydW5rCis3ODQwMCA4ZDNmZjJmYmJlNGI0YTQ5YTFiM2VlZDE5ZWI1YjU0MGZhNzAzZDc0IHB5M2sKKzc4NDAxIDY5NmY3NjdlNzdmZjhiOTljMjYyNjUzOTdmODcxNzMzYmNmZjA0ZGEgcmVsZWFzZTMxLW1haW50Cis3ODQwMiA2NzgyNTZlODBmYzYwMWQzYjM2ZWM2MzEyNmMyMWY3NmMzNDE5Y2QyIHJlbGVhc2UyNi1tYWludAorNzg0MDMgZTg1NDEyZjU0NGM4M2UyMzNmMmFiYTkwOWQ0N2Q1NGJhZGQ5ODVhOSBsZWdhY3ktdHJ1bmsKKzc4NDA0IDk1NGI4ZTI3NjY3NDYzMjFlZjc0YzZiMzExMGU1ZjM1NmVkYjY2YTUgcmVsZWFzZTI2LW1haW50Cis3ODQwNSBlODAzMjdjYjY4NDY4MWQ0ZjVjNDY2MDBhZmEzODQ5NmY4MTM0YzdlIHB5M2sKKzc4NDA2IDEwN2M0YzZlYzY0OTUxZmE4ODcwZTU5MDFiMDY0MmU4YmQxMWYxNzIgcmVsZWFzZTMxLW1haW50Cis3ODQwOCBhNWY2ZGQxODkyODJmMDFkYTY0OWZkN2E5ZmM5MjIyMWI0YTZkYWEwIGxlZ2FjeS10cnVuaworNzg0MDkgYTlhNDM4MTAwZjhkNGIyY2FiODA1ZTM3M2E0NDM1NzIyNDFkMjMyOCByZWxlYXNlMjYtbWFpbnQKKzc4NDEwIGE5OTQ1YWZjYzRlZDRkNzJiY2JkZTZiZDljMWVlYTBkOGU2NGMzY2YgcHkzaworNzg0MTEgMTc3MTlkMzk1ZjFlNmRlNDdmMGY4N2E4OWYxZTA2YTQyZjc0MzE2MCByZWxlYXNlMzEtbWFpbnQKKzc4NDEyIGM0NjVkMjE0Mzg3NGRjYWY1ZmM5ZTViNzI4YjBjNWMwNzdjNDk3YzQgbGVnYWN5LXRydW5rCis3ODQxMyAwNzk1ZGQ3YjJjOWQxYjI0MDEyYzliY2Q3ZTM2Mjg4NTQzODQ1OTVlIHJlbGVhc2UyNi1tYWludAorNzg0MTQgODIwZWFmOTM4ODA0NWJjZDMyMzllY2Y0Yjk0MDU0MzJiNzRmN2UxNSBweTNrCis3ODQxNSA0Zjc1MDNhZWVhODVmYzg1YzA1M2I1ODJhZjE4YjQ4Y2U4MDk0MjM2IGxlZ2FjeS10cnVuaworNzg0MTYgOWViYmNiN2EzOTg5NzBjYzlkZGE1YmQ5Y2U4YTA5OWFhMGQyMmIxYyBsZWdhY3ktdHJ1bmsKKzc4NDE3IDQ1MjEyYTI0N2VkNGQ1ZDRhYzQ5MDAwNjNjNjgyNWJlNWUyYzRiNjQgbGVnYWN5LXRydW5rCis3ODQxOCAyYjgyYjE2YTYzNzU2YzQ2OTVhYzljNjZlODdjM2UzYjIyMjVlMGE2IGxlZ2FjeS10cnVuaworNzg0MTkgNWFjMzQ5YzMyMmZkM2ZmYzc1N2ZjNjRhNGFiNjhjM2NjODUxOTg5ZCByZWxlYXNlMjYtbWFpbnQKKzc4NDIwIDU5ZWNlYTEzNzY5YjM5ODgwM2IyZWI4YTE3ZDZjZmY5NzgwNGYxZTQgcHkzaworNzg0MjEgYzhlZjkwNmIxMWI4ODMyMDE3YTU1YTIzNzI4MGE3MzYwOGE4ZTI5OSByZWxlYXNlMzEtbWFpbnQKKzc4NDIyIDU2ZjRkNmM1MTQ1MDE2ZTVhNWZmMmRjOWEwZjc3YTk3MDU5YjhiNmMgbGVnYWN5LXRydW5rCis3ODQyMyA5MjI1YjRmOGNiMWU3M2M4MTE1YWM1ZGRiY2Y3YjUzMDZmYWZiM2Q1IHJlbGVhc2UyNi1tYWludAorNzg0MjQgYWY1ODdiNGI1OTA5MTk0ZjMzZTEyZTYzMjllMjgyNzNiZTc5ZjY2ZCBsZWdhY3ktdHJ1bmsKKzc4NDI1IGMwZmExNDUzNzBlNDFmNDEwMjg0OTUxMTE4OTlkYjM0NWM3MWUyYjMgcmVsZWFzZTI2LW1haW50Cis3ODQyNiAzZDRkYjFmNWIzYjE1NWQ1YmY3NDdmMWRkMmY1ODgwNDFjZTg0NWIwIHB5M2sKKzc4NDI3IGU3MDlmNmY2ZjQ1Y2E5Y2Q5ZmRlMmZiOWZlNThiYjczNjE0ZDcxYmMgcHkzaworNzg0MjggNWY5OTM5YWYyZjcxYWNmZGNlZmU1NmM2YjQyMGRlM2EwMjYwZmVlZSByZWxlYXNlMzEtbWFpbnQKKzc4NDI5IGFmOWU2ZWRiYjBmZjc5NmFiZmE1NTYyOGJkODdhYzA3MWZhNzI1ODggcmVsZWFzZTMxLW1haW50Cis3ODQzMCBlNDdhNjRmOWNjNzdiZmVhY2VmMDA2M2Q2MWE0NTZmNGU2Yjg5NzQwIGxlZ2FjeS10cnVuaworNzg0MzEgMzE4MTI1NWUyOGM5OWY5NmQ4MzMzZDU3MDZkNmVkYjZjZDc3Y2QxOCBsZWdhY3ktdHJ1bmsKKzc4NDMyIGM5NTBmYWM3NDExYmE2NDBjOTNhMWQ0YjBjNmIyNDM3ZGI5MTNiNTQgcmVsZWFzZTI2LW1haW50Cis3ODQzMyAyODc4OGY3MmQ4YzBmZTVkYTVjOTY1NTdmYzk1YWY2MGU5MTYyMDlmIHB5M2sKKzc4NDM0IDk0ZTJiNjkwMjk2OTZkMGEwYTAyMDk5ZDg4MjkwNGY2MDVmOTA4YTkgcmVsZWFzZTMxLW1haW50Cis3ODQzNSBiN2RlN2M1YWZhMDQyOTNjNzE5M2E1MDNhMWU3NGQyYTEyYjIxYTgyIHB5M2sKKzc4NDM2IDE5Y2Y1MjZiZWZhNDY5YjU5Y2JmY2Y5YWYxYTAwYzFlNjEzMWY5MDggcmVsZWFzZTMxLW1haW50Cis3ODQzNyAxMjIyMWI2Y2M4Y2RjN2QwODhhY2VmNGZjZDg1ZGMxMzYzNGVjYWQ3IHB5M2sKKzc4NDM4IGY1ZWExMjY0YjdhZTE3ODdmM2EwYTkyMDEwZTJhMWUwYmUwZjliNWEgcmVsZWFzZTMxLW1haW50Cis3ODQ0MCAzODNmNDA5NzVjNzVjM2MzMWNlZTliNDFjMzNhODZlMGNkMTVjMDY2IGxlZ2FjeS10cnVuaworNzg0NDEgYmQ4MzU3YTkxZDNlNjM5MjYxYmExZDExZDIyYjg0MDgyYTA4MGYwOCByZWxlYXNlMjYtbWFpbnQKKzc4NDQyIDg1YmY4NDQ2OWEzMmM5ZGU0NmU0OWZjOWZkMzg0ZGYwYjhiM2UwMTQgcHkzaworNzg0NDMgMjE4MzI3N2NiYWIxODc2NmQ3YWIxMzM4ZjI2NDI4OTJhYzdkM2UxOCByZWxlYXNlMzEtbWFpbnQKKzc4NDQ0IGFjY2FiNGJhYjYzNGNkNjFjNmMzMDg2NjUzODllZjVkNWMwYjVjNWQgbGVnYWN5LXRydW5rCis3ODQ0NSBlY2ZlOWNmYWEzMzQ3MzExMzRhOTU3YWU1NzM1MDcwMmJmZGJjMTc4IHJlbGVhc2UyNi1tYWludAorNzg0NDYgODlhNTBhMTE4MjAxOTEyZGU3ZTY4N2Q3OTI3NDBkMWNiOTg4NTM2OCBweTNrCis3ODQ0NyA1ZjA0ZTBjZDgxNzE3OTAzYjYzMDI2M2QwNjY3YmRkMTMxYmM2ZTVhIHJlbGVhc2UzMS1tYWludAorNzg0NDkgNmMxNGMyNzkyNWI5ZTU4M2Q3N2U5YjQ0MWQ0MDJhMWUxNDVjYTg4NCBsZWdhY3ktdHJ1bmsKKzc4NDUwIGFhY2MwZDQ4ZDQ0ZDdlMTA1YjZjZjg4NjM2YzJkZmIwNzA5YzBkMTcgcmVsZWFzZTI2LW1haW50Cis3ODQ1MSA4NTUzZDQyYzk0YjFhOWZjYWVjZDc1ZjBhNGIzNzk4ZTE0MTRhYjU1IHB5M2sKKzc4NDU0IDFhNjJmNDg5YTY4YTBhOTM2NjI5OGRjZGQ3MjU1NjhhMTk2YjA1NzggbGVnYWN5LXRydW5rCis3ODQ1NSA0NzgwZTAzNzdlMTBmNjhkMWIzOGZkNTI1MGE0OTI4YjIzODg1MDZkIHB5M2sKKzc4NDU2IGUxYmMwMDIyYjIzYjJkOTEwYTIzYjg1ZjNmNjZiY2EyZmQ2ODRlMTAgcHkzaworNzg0NTcgOTViM2JiNmI5ZmFhYjljNDhmNzdlNTk4ZDE2MGU0MzVjNTRiN2MzYyBsZWdhY3ktdHJ1bmsKKzc4NDU4IDNhYjc0MDk0MDVmYTNhM2I5MmJkZGI3ZWIxNzEyYmIyMzUyYmFmMzIgcmVsZWFzZTI2LW1haW50Cis3ODQ1OSBjMTJiOTU1MzUwOTQ4ODM5ZTY3MjBlY2QwOTlkODBlZGVmNWExMjI4IHB5M2sKKzc4NDYwIDA4M2M4ZTUzNTRhZGIzM2I3OTYzYmQwMzk0NmY0NjdjMjNlNmNhNzggcmVsZWFzZTMxLW1haW50Cis3ODQ2MSA3ZTNjNDczNTRkYTM0MjZlN2JjZmYyM2YwYmRjMmFmZWY1ZDFkMmRiIGxlZ2FjeS10cnVuaworNzg0NjIgN2QzNDNkNWJmYjNmMWNkZmM4Mzk2NzNjYmYyNTMwMTA1MDMxYWVmMiBweTNrCis3ODQ2MyBhZDJmNWVhY2QyYTAzNmQ0ZTg0YWI0MDlkMjk4NGNhNTM5M2U5YjlhIGxlZ2FjeS10cnVuaworNzg0NjQgOWFjMzUyMTVhZjRhOGM5N2MyYmUyZDk3NDMxYzc4YmE5MjFiNzExOCBweTNrCis3ODQ2NSAzZGNkY2EwMDcwOTU1NjZlNDI2NjE3NjM3NzcxZDgyYzc5YzQzOWJkIGxlZ2FjeS10cnVuaworNzg0NjYgMjUyZjFlMjNlOTg2MDMxNjg0ZGM4MjZjMGIzNDJlMzZjMzJlNTQzZSByZWxlYXNlMjYtbWFpbnQKKzc4NDY3IDhiMjA0OGJjYTMzYzFkNDNlMTlhYjRjN2YxNjM3ZTBkZTc2NmI3NjYgbGVnYWN5LXRydW5rCis3ODQ2OCA1MzVlMjE1NWFmMWE4MmUxMDM0YWM4MTUwOWIwMjUxZDRmM2I5ZDE0IGxlZ2FjeS10cnVuaworNzg0NjkgZGMxY2Q4ZWRmYTQ2NTcyZTFlNjkxMDRjYzE4MTYwMzEzMjFmZGZhNiBweTNrCis3ODQ3MCA2MDQzZDBiZDhiZjcwYTU3NGQ4MjdlNjU0ZWM2NDVlZDVkYjU0OTk1IHB5M2sKKzc4NDcxIDYyYmFiZjQ1NjAwNWI2N2NkZGVkNjIwODJkZTc1YTcxZTcxNDc1ZDAgcmVsZWFzZTI2LW1haW50Cis3ODQ3MiA5NDg2ZmY0MDJhY2MzODgxOTRkMjg3NWQ0ZmFmMGRmMjZlNWYzYWFjIHJlbGVhc2UyNi1tYWludAorNzg0NzMgMzMzZmU4ZDc5MzI5OGJjMTZkY2JjMTZiMDhmNWMxNGNjYmJiYTQwMSBweTNrCis3ODQ3NCA3ODc0ZDEzYzlhYTc2N2E3ODgxMGI0MGRhNTNiZmYyMjVkNjQ1MDliIHJlbGVhc2UzMS1tYWludAorNzg0NzUgOGU2NDYxNWE0Yzg2MzVmYWVkNGM3NGM1ZGJjYzRhZTdiMTJlMjE2NyByZWxlYXNlMzEtbWFpbnQKKzc4NDc2IDJmMmQyMjU3Nzc0MjgwNmJlNjE2Zjk2YTY3NDA1NThlYzkxN2U5NGQgcHkzaworNzg0NzcgNWUyYTU4NDMwN2JhOTg3YzhjMTExMjQyZDY5YzdmYzZiNTRkOTczNiByZWxlYXNlMzEtbWFpbnQKKzc4NDc4IDIzMWM4OGVlODg4NWMxMDMwZTk2MDZmMjc2MTg4YWFkMjY1NWFkMTcgcHkzaworNzg0NzkgMzI3MGJhMWJlYzc2YTM4OWIwNzNjMzExOWVmODQ0ODBhYjU5NWFjMCByZWxlYXNlMjYtbWFpbnQKKzc4NDgwIDJiNjhlMzE0MmQxN2U4MzNmNjE2ZjE1MTc5OWM1M2VjOTVlMjYxZDQgcHkzaworNzg0ODEgNTZmNTM3YmVkYWZlZDlmZjdkYTg1YTdhOTNhNDg4ZDUzNjg4Yjg3MCBweTNrCis3ODQ4MiA0MDcwZjRjZjhjNzcyY2Q1MzllMmI2N2UxZjY0MTJjNDIyZjI3NjVlIGxlZ2FjeS10cnVuaworNzg0ODMgNDA2NmI0NWQyOGFiMjhiZDZlMjVkZjY5M2M1YTNjZmEyYzkxODM0OSByZWxlYXNlMjYtbWFpbnQKKzc4NDg0IGU1NDAzMjNkODdhOGIyMDIyYTNlNWRjNmU3N2Q4MTgwNzg1MTFmNzIgcHkzaworNzg0ODUgMGQ1OTBlNWU4NDBjNjM1YjJiNWZlNzAxZmJhMjlkMTY0MDJmYWZmOSByZWxlYXNlMzEtbWFpbnQKKzc4NDg2IGFiYTlmNjU0MWFkNjk4M2I1MDQ5YzczOTU4ZjA4YzUwMDNkMTIwZGEgbGVnYWN5LXRydW5rCis3ODQ4NyAyYTBhYzliZGU5OWFmZDAyN2MzZDdjMmFkYzg2OThjNjQ3MTI1MTJjIHB5M2sKKzc4NDg4IGQwYzJiOWMyYmFiYjBlZDk2Njg5N2RiYzEwNThkYzNjMDUwYzJhZDUgbGVnYWN5LXRydW5rCis3ODQ4OSAwYjQ4NDY0ODkwNTVhY2U0ZmI2NzM3ODJhODlmMmRkNDI1MzUxNWJlIGxlZ2FjeS10cnVuaworNzg0OTAgZjEzOWNhMDM0YzNiNzUwMzgwNGVhNTZhMDVjZTk3ODNmYWYzMWNiNyByZWxlYXNlMjYtbWFpbnQKKzc4NDkxIGJmMTQ2ZjEwM2VlNjczZjJjMjc4N2E0N2JhMzA1YzY0NzJmNGUwN2YgcHkzaworNzg0OTIgMDE5NGQ4YTZiMWVmZmM0MjA2NjY0NzdlYmU3MDVjNDVlOWFkYTUzMiByZWxlYXNlMzEtbWFpbnQKKzc4NDkzIGFlMDlhYjI2ODZlZDA0OTQ2MTJkNDhiZThiMDVhODJkMDBhZGJjMjYgcHkzaworNzg0OTQgODkxZTc5ZDc3MGQ4OGU2N2IwNGI3NmI1YTQ4YzA0OTQxMTQ2MjhhOSByZWxlYXNlMjYtbWFpbnQKKzc4NDk1IDgxNTA5MmE1ZTVjMTI5ODNhODM2YTY3NjE0Y2FhMGZiNTA5ZDQ3ODYgcmVsZWFzZTMxLW1haW50Cis3ODQ5NiBkNjJiZGQ4NGRmMGEzYmRhNWVlMjNhOTkyMThiZTVlNjA1MWM1NTdhIGxlZ2FjeS10cnVuaworNzg0OTcgNzc1OTM3YTM0Zjk2NjJiMzg4NTQ3ZjE3YTEzNjdjOWQ5YmRiODE3ZiBsZWdhY3ktdHJ1bmsKKzc4NDk4IDg2NDAyZmEwYzViODhlY2Y5ZWMwNTM0ODMyYTJmMTg2NWE1ZjdiZmIgcmVsZWFzZTI2LW1haW50Cis3ODQ5OSA1NjBmM2Y0ZWU5YTdkODE5ZTdhNjNjZGRjZjM5OThlZjk3YTE5NzUxIHB5M2sKKzc4NTAwIDU2MjA1ZjU0N2I3NDYwNTljNTc4N2IwMzU0OTczOWIzMDI3NDFhZmMgcHkzaworNzg1MDIgODg3MTNjMGVkMDEwMjVhODA0NTQ0ZmFlMTIwMmU4ZDlmNjcxYjE0NyByZWxlYXNlMzEtbWFpbnQKKzc4NTA1IDgxZDY4MzNjNjI3OGJlZmQwMTIzMGY1ZjhmNTI0MmY4MTUxZmFiNDMgcHkzaworNzg1MDYgODhmMTQ3ZDI2MzcyNjFmNjMzNzUzZGIwOGY2MmVjMjFjMzdjZGQ3MiBweTNrCis3ODUwNyBhOWUxZjFkMzRjOTY3MWJiZWUxNWFjZTRjOTEyYjAzYzUyMjU4NDI5IHJlbGVhc2UzMS1tYWludAorNzg1MDggNjc5ZjUyYjhhZWY0YzZkMmY2OWQyOWIwZDRhMDRmZmE0YTZkOWUzMyBsZWdhY3ktdHJ1bmsKKzc4NTA5IDgxZGNjMGM4NDVkZmI2NjhlYWMwMTg4YzVjMWY2OTc3MjMxNjAyMWMgbGVnYWN5LXRydW5rCis3ODUxMCAwMWM1OGNlZjgyZDQ4YTlhOGFiMTYyN2VjZjcyMTY0MzA3ZTE5N2M4IHB5M2sKKzc4NTExIDVkOWYzYWZiYzRlNGJjMGM1MTNlZTZhMTUxNjczOGY1M2U0YTEzYjMgbGVnYWN5LXRydW5rCis3ODUxMiAxM2ZmOWZkYjg0MzFiNzI5M2YzMWJkYTRiODE3YzZiMzczZTZkNzkzIHJlbGVhc2UyNi1tYWludAorNzg1MTMgZjM3ODYzYTdlZDY3N2E4NzEzMmU3OWI4ZDA2MDAwODFkMGIxMzRmYSBweTNrCis3ODUxNCAyMDgwYWI4ODBhODBlZDBiYWZlY2YwMTI3OThiNWYwMTZjZTUxYjkxIHJlbGVhc2UzMS1tYWludAorNzg1MTUgNzk5YmM0OTY0YTFkOTMwMmQ2Y2E3NDFhNTEyMTg1NmMzMWRkMzVkYyBsZWdhY3ktdHJ1bmsKKzc4NTE2IDc1MDgwMjc1OTIxYjhlODZiNTQ1OTc3NjUxOTIzYjY5ZGE5ODRhNDYgbGVnYWN5LXRydW5rCis3ODUxNyBlYWJmYTc3OGIwNzZiNjBlODU1YTIwNmUxMTFkZWU0MzQ1NjA4MmQ5IGxlZ2FjeS10cnVuaworNzg1MTggMmNkZWM4NDhiNzRjNjE0MDEyNmQxNDdhZWFjZGFjZjJjYjBjOGEzYyByZWxlYXNlMjYtbWFpbnQKKzc4NTE5IDk4ZTljNGZmZDM0M2FmMWNlYzUwNDZkZDBlODVkY2QxN2VjODllOTIgcHkzaworNzg1MjAgOWU4MTEzZTc2YWRiZjAxNDU0Y2RhZjBiYzM1NDM2NTRhYjhiN2U5MyByZWxlYXNlMzEtbWFpbnQKKzc4NTIxIDhlM2QwM2I4MDkwYmNiMjFkYWNlY2QxZDlmZmIzZTUyMDgwYjQzZjMgcmVsZWFzZTMxLW1haW50Cis3ODUyMiAxYzZmYzcwZjQ5ZDFhYmVlZjkxNjQ4ZDQyOWFlNDg1NjNlYTJjMGQ0IGxlZ2FjeS10cnVuaworNzg1MjMgNmU2NjRiY2M5NThkNjBmMjFlNzhkY2YxMGY4NDBmZDM1YzczMTAxOCBsZWdhY3ktdHJ1bmsKKzc4NTI0IDU1Nzc4ODU1Y2QyNWE5YWU4ZmI2Njc1ZTlmOGMyOTI3ZGI5ODlmNWQgcHkzaworNzg1MjUgMTI0NjlmMjA2NTZiZWUwNTc5NTEwZTg3Y2ZlYjllZTQ4MzdmNjkzZCByZWxlYXNlMjYtbWFpbnQKKzc4NTI2IDFmMTU4MjM4ZmE3NjRkNzAwYWM5ZmNkZTc0OGIwZWE0YTdiMzRmMzAgcmVsZWFzZTMxLW1haW50Cis3ODUyNyA0YWZjNTBkMTU1NDQ1ZDAxZDJjOTNkNmNhODZjZWZjNjM5YjcwMmYzIGxlZ2FjeS10cnVuaworNzg1MjggZTFiNzBjNmRmOWU3NzNkZmQ3MDI5MWI4ZGQ1ZWMxYzEwY2NmNDMxYSBsZWdhY3ktdHJ1bmsKKzc4NTI5IDliNGUwY2Q3ODE3YWRhMWUyZjMxMzM0OTdlN2QyMDFkNmQ4ZGNlMWUgcHkzaworNzg1MzAgMzcwZTFhMWMyMzg2OWRmODE5ZDMxYjQ0YWE5ZjMyZGYyMjg0OGY5OCBweTNrCis3ODUzMSAwNzdmMmI4YjNlNTcyOTA5MzNkZDkyYmNlNGI1MGYwMzIwMjc2MjQ3IGxlZ2FjeS10cnVuaworNzg1MzIgODU0YjM0YTA2ODk2ZmQ2ZTQ3YTE2ZThkZTNlNGMyOGYwYzMzNDQ5YSBsZWdhY3ktdHJ1bmsKKzc4NTMzIDkyNGNhMjk1YjE0NjAwMDI2MzBiMGEzN2QxZjAyZTgzYTAyNzliYjYgcHkzaworNzg1MzQgZDFjNjI4ODJjNzNiZDBkYzRmZjJhMTU2NDFkY2QzMDMwMjdkOWU4OCByZWxlYXNlMzEtbWFpbnQKKzc4NTM1IGY1M2ZlMzNlMDNlYTFiNDliZjc2OTZiYTI0YzllMzNhZGJjZTZiMDUgcmVsZWFzZTI2LW1haW50Cis3ODUzNiBjNDU4MDViYTMyM2Y3ZmFhOWFhMTcwMjM4N2IwZTFlNDIzZDgxMmU0IGxlZ2FjeS10cnVuaworNzg1MzcgOTQxZTFiZjA0ZjU1MzJlMTJmMGZmYzkwMjdkYmYwZjNiNTI2ZTZjNyByZWxlYXNlMjYtbWFpbnQKKzc4NTM4IGYwMjgzYmI2MjM2MTRhZDk1MmFmYWE3Y2VjZDNjOWY2YjIzYTMwNzQgcHkzaworNzg1MzkgNzgzZjA5YjA4NzA2ZWEzMGUyMGM1ZjBlNDYzNjZhMmIyMzg4MTcyZiByZWxlYXNlMzEtbWFpbnQKKzc4NTQwIDAyNjVjZGM4ZDViYjBjZWJiNGQ5MWNjNDkzMjY3NDg0ZTFhNzQ0YzIgcmVsZWFzZTI2LW1haW50Cis3ODU0MSA4ZDQ4ZjliNTk2ODliYTQ2OTgyNjU1N2E4ZGRkOTg2YmQ0Y2RlM2Y1IHB5M2sKKzc4NTQyIDliNzIyNzdkNmIzMGE3YzA4YzlkNmQwYjZiZDJmOWMxNDI1MTM4MGUgcmVsZWFzZTMxLW1haW50Cis3ODU0MyBkNWY1MGFlNGYxZjc4ZTE5OWYxMzczOTFhZGY0OGM3ZWYyYmI4MzhiIHJlbGVhc2UyNi1tYWludAorNzg1NDQgZjViYWM0NzM3MDY5YTQxM2U4OTJkN2E1MTA3ODk1ZGMxZDZiMWRiMiBsZWdhY3ktdHJ1bmsKKzc4NTQ1IDZmYWZiNjRlYzMyODA4ZDIzOWRkNWQwYzUwZjU2ZTZkNDc3NzIzOTEgcHkzaworNzg1NDYgNTg5MDA0YjIyZjU0YzEzNDdlN2ZlYzM1NmE3ZGYzMTBmNDVhYTRlYyBsZWdhY3ktdHJ1bmsKKzc4NTQ3IGFmZjY5MmJkYjZkYjEwNzk3ODMzMTkxZjM2YWYzMmY4MzI1ODFjYzEgcmVsZWFzZTI2LW1haW50Cis3ODU0OCA4ODdkZTVkZmQ5NjAxNWFkNDQwMjljYTFlYmZiNDQ0ZWIwNWU1MmE5IHB5M2sKKzc4NTQ5IGRjODQ2YTIxMWM2NThhYWFlMGYwOTA4ZTNjMjhhNzQxMGFmMDFjYzcgcmVsZWFzZTMxLW1haW50Cis3ODU1MCA0NmFlMTY0YjE1YmE5MWRjNjQ5MWU5MWE4NjhiMmQyNzFjMzMxN2M2IGxlZ2FjeS10cnVuaworNzg1NTEgNGUzMDQzMTA5NzQ5ZjI5NTc0NjY4ZTQ0NjVlNDliY2NiYjk3YmY3YiByZWxlYXNlMjYtbWFpbnQKKzc4NTUyIDU4YzM1NDk1YTkzNDM4N2QwNjRlZGY1OTYzNGFkNzNjYjhmZTI4ZTQgcHkzaworNzg1NTQgNGJjNWIwNDFkM2FhNmJiZTA5MDFkZjIyNjdlNThiODg4ODc3N2M5NSByZWxlYXNlMjYtbWFpbnQKKzc4NTU1IDQwYTQwNmVlZGNhYzkyZTExYTkyMzU5ZGQ2NzRkZmNhYzU3OTJhZTkgcmVsZWFzZTMxLW1haW50Cis3ODU1NiBkNTYxNWVlZTU2M2U1NjQwNTM3ZGU5OGQyYmJiYTFjNzQwYWU4NmYwIHB5M2sKKzc4NTU3IGNkZjU5NjA0YTE3NDRkNmI1M2JiNzI5ZTk5NDY3NjJmZWM5YzllMzUgcmVsZWFzZTMxLW1haW50Cis3ODU1OCA4YjdiNWM5ZTY3ZjRkNjcwM2E3ODcxNGU1NDQ5OGY4OGFiMzMxZjg0IGxlZ2FjeS10cnVuaworNzg1NTkgOTEyN2Q3MDczMGM1YjBkNjFmMDM3YTEwMWYzYWMwNmY3MDIzZDg4MiBsZWdhY3ktdHJ1bmsKKzc4NTYwIDA0NTkwZWM2ZjM3ZGRmNjU3NTAyOTUwODk3NjZkOTI5YjMxNzVjODcgcmVsZWFzZTI2LW1haW50Cis3ODU2MSA0Mzg2ODBiZTU0NzJiN2FjMjJlNjc2NjQ3ODg1MzJmYWE3MzUzNzRmIGxlZ2FjeS10cnVuaworNzg1NjIgMzlhNTAzYzg4MDAyYThmNjFlYzcwMmZjZTU2YjY1M2Q4OGYzZTU5NSBsZWdhY3ktdHJ1bmsKKzc4NTYzIGZiZGUxMWQxYzFmNWIzYjc5ZmQ1M2M3MGIzZjk2OTcyYTdlOTM4NDAgbGVnYWN5LXRydW5rCis3ODU2NCA5MzQyMzliMjY4YWRjMzU3YmMwOTU0NTUzNGVmMzgwZmFmYmY4NDZjIHJlbGVhc2UyNi1tYWludAorNzg1NjUgYzhiMjYyNzZjNTg3Nzk4NWI0YjI0NTBhOGM1NGE3ZTI4ODEyZjVmOSByZWxlYXNlMjYtbWFpbnQKKzc4NTY2IDg5ZjQyYjY4MWNlNTU3NzMyN2Y4MDQxMDMyZjYxNDY4YTMzYzE2ZTUgbGVnYWN5LXRydW5rCis3ODU2NyA2OWExMDNlZmFlOGQ0ZWI2OTQyMTliOGI1MmE3MjgxNDIwZjg4MWZiIHJlbGVhc2UyNi1tYWludAorNzg1NjggZjk5ZTdhZTcxMmIwYjI0ZjNlZWNkNGNjNTEyMWZiMjI4ZTNiZGI0YyBweTNrCis3ODU2OSA4NDk4ZjBkOWYwMjYzNjJlOWFlMTE1NDUxNmNlYTcyOGE5MWViOWZlIHJlbGVhc2UzMS1tYWludAorNzg1NzAgYWNhMTg4OTcwYzQ3ZDA2ZWIzMDY3NzI2MWQ5YjQxZDEwMDIzYzkxYSByZWxlYXNlMjYtbWFpbnQKKzc4NTcxIDJjOWJmMjE4Y2UyOTg3OGY0NzE4NDU4OTliZWMzYzdkY2Y3MGNhNGIgcmVsZWFzZTI2LW1haW50Cis3ODU3MiBjOWY2OGU0MmFiNzk2YTNiYWI0ZjhjZjNjYzY5Y2UxMDUwM2NiOTkwIHJlbGVhc2UyNi1tYWludAorNzg1NzMgMTExMDEzZGQ1YThhYTBlZTBlMjUxN2NmYjYyZWFiOWI4MDg3NGQ0OCByZWxlYXNlMjYtbWFpbnQKKzc4NTc0IDRmMTg5NDVmYjhiMTdmZGJjNDRiZmM4Mjc4NzY0Yzg2ZWNmNTllZjMgbGVnYWN5LXRydW5rCis3ODU3NiA4M2VmNjc1MjYwMTFhZmY0ZmQ5NGIxMDM4ZTAzNjFmNDdiODgyODBhIGxlZ2FjeS10cnVuaworNzg1NzcgZjkyM2ZlNTVhNDBjM2I3NWU5NTBiYTQyNGNkMmEyZjcyNWQzYTI2YiBweTNrCis3ODU3OCA3NTVkN2EzYTZiYjc1NmUzYTYyM2MyOTVhYzkyNzMyYzM1NTc1NjM5IHJlbGVhc2UyNi1tYWludAorNzg1NzkgMzhiMDJkZDJkNDU5YmFjNjYxMDhiM2IxN2Y4MGNjZTQ0MzRjZjBhYyByZWxlYXNlMzEtbWFpbnQKKzc4NTgwIDQ3MjhhYTJjOGExMjg0NWEyOGQzNzhkZWU5OGRiYWFhOWUyMjE1N2IgbGVnYWN5LXRydW5rCis3ODU4MSA3YTg5ZTFlYzRmMDA1Y2UwZTEzOWUyM2MxZDU3ZjIyMTU5MzkwOTk2IGxlZ2FjeS10cnVuaworNzg1ODIgNmQ1YzMxZjI0YTIxYjJkODRmNmE4YzYxZGI0ZjcyYTIyODY3NGMzYyBsZWdhY3ktdHJ1bmsKKzc4NTgzIDZiOTY4ZTJmMDVkZGIwZDkwMzFhYjVkYjU0MDU1M2JjMmE5MDFkNzcgcHkzaworNzg1ODUgMWFjYjY0M2IyY2Y0NDVhMDA5Y2RiN2E1NWFkMTNmYzUyOTVkZWFlOSBsZWdhY3ktdHJ1bmsKKzc4NTg2IGU2NGM0YjQzZWIzYzI3Njg5MjQyMjUyODNjM2Q2OTI0M2JmZTZjMDEgbGVnYWN5LXRydW5rCis3ODU4NyA0Y2E4M2M1Yjg1NTFiZmVjYmI4YzA3MGNkNGVhNzU5YjhjODZmODVlIGxlZ2FjeS10cnVuaworNzg1ODggODQwMWRlNjVlMTJhMjE4YzA0YjQ2MzgwMDUxNmU4NDk5MTg2ZjM5MSBsZWdhY3ktdHJ1bmsKKzc4NTg5IGRhYmRlZWM0ZjljMWQzMzE5NTQ2NzhmMmZlZGY2NTlmZTRiMWVhM2IgbGVnYWN5LXRydW5rCis3ODU5MCA4MmVkYTM0NWE1ZjZlMTNkOWNlYjYwOGU4MmRhNDIzZDk2MTQwYjExIGxlZ2FjeS10cnVuaworNzg1OTEgNGI3YjY5NTNjZDA2NDk3MGY1MDY3Y2ZjY2Y5M2MzYTQ4YjEwMDYxZiBsZWdhY3ktdHJ1bmsKKzc4NTkyIDEzN2EyMWZjZDM4NTBhYjk1OTg2MzRjOGVmMGNjMGE1ZmVlNjE0YmYgbGVnYWN5LXRydW5rCis3ODU5MyA4M2U3ZWUxODUxNjIzY2NhZTM2YzI0MjljYTk5MGRiNDBiYTQ3ODIwIGxlZ2FjeS10cnVuaworNzg1OTQgOTcwZmI0YThlNjU0YWM5YmY3OWQ0OTNjMGU2ZWRjMWI2MDI5YzU1OSBsZWdhY3ktdHJ1bmsKKzc4NTk1IDEyYmNiNjk5MzhiM2MwMTI3NzdjMjQ1MDU1NWRiYmJjYTRiMTc4YjUgcHkzaworNzg1OTYgYzMxYTdjMGM2Mzk5ODU1ZTlmODRhODYxN2E4ZDk5YjMwYmZiN2IwNyBsZWdhY3ktdHJ1bmsKKzc4NTk3IDVjNjdjMWVmOGFkM2Y0NGY2ZDY2YTI0YjcxZjEzZDZkYTExY2JlNjAgcmVsZWFzZTI2LW1haW50Cis3ODU5OCAwMWQ2YTE0YWJhNjUxNzZmYjA5NjhmZjJiMzM4ZjFjMWE3ZDYwNGY5IHB5M2sKKzc4NTk5IDk1MWM5N2UyODc4ZDcxZDgyNDI1YzE5YzA0MzM5ZDRmOGUwZDllMmEgcmVsZWFzZTMxLW1haW50Cis3ODYwMCA4ZDcyMTQ3ZjQ0MmNmOWQ1YTJmNzc0NmFiYTljNDJiMDc0N2I3MTZlIGxlZ2FjeS10cnVuaworNzg2MDEgZWJhOTQyZTc3ODk1N2ExMTYxNGE0MzY2ZTQyMzFkZjAwOTM1OTc5MCBsZWdhY3ktdHJ1bmsKKzc4NjAyIGIzMGY4Y2U4MjE2NzdkOTMwZjcwNGRlNTExYTlkNmJjN2JhMTRlZWIgcHkzaworNzg2MDMgYjA0NDQwNWQ2MmU1NWMxZTU1MDJiY2UzMWE2ZmFjYTVmODNjZmMyMiBsZWdhY3ktdHJ1bmsKKzc4NjA0IGY1NDExMTI1MjQ1ZWUyNzNmNzMxNjU5Y2U1MzVkNGQ1MDA1YzE0YmQgbGVnYWN5LXRydW5rCis3ODYwNSAyZDI0MTc2NWU2MzE3NGY3OTkzNGMzYTVmMWUxZDM5MGNmNGRiNjZkIHB5M2sKKzc4NjA2IGFhYjViNzZhYTA1OTdkODE0OTk3ZjhmYjlmZGJiNmY1ZGYxYjE3YTQgbGVnYWN5LXRydW5rCis3ODYwNyA2ODE1OTdkMGM1OGRmMTA3MGVhZDIyOGVlZTAxNjk1ZDAxMGU0N2U4IHB5M2sKKzc4NjA4IGQ0YTE4OGRhYzIyMjg1NjkwZjllYzU5NzUyOTZmNGFjNTFmZTIwNzQgcHkzaworNzg2MDkgNjUzNzc2MWMzMTAxODNmMDQzOWNjZWM4NjAzNjkwYTllZmM5YjQzOSByZWxlYXNlMzEtbWFpbnQKKzc4NjEwIDdlZWM2MjM4ZTE1YWM0ZTdmYTIyM2FiMWZiNGNjMGJmYWNjMmRhOTQgbGVnYWN5LXRydW5rCis3ODYxMSAwODY4NDYzODFlOGYzZDZmYjBlMGUxOWM2Njc4MmE4ZThkNDdhYTM0IHB5M2sKKzc4NjEyIDFlNGM0YjIzNWE4OWRkNzU0ZjA1MzQxODU3YjdjNWU4YTljMDBjNTIgcmVsZWFzZTMxLW1haW50Cis3ODYxMyAyNWMwZjRkN2FlNTY5ZTQzZmI0YjNhNjIwZWI5ZTg3NTJmZGEyMmM5IGxlZ2FjeS10cnVuaworNzg2MTQgMzhjZWY4ZGVhZTIyZWYwMTczM2ViNzFkZGZhZmE2NjA4Yjk1YzI1YSBsZWdhY3ktdHJ1bmsKKzc4NjE1IDU4NGVjN2E3MjU1YjI0MGU5ZjU3ZmM0MDU2ZjBlNzMzNjJjZWIwNDYgcHkzaworNzg2MTYgYmQ5Yzc5OTNlZTc1ZTM2NTlkOWM2M2Y0MDhiMWY0M2E3Nzk2ZjE2NCBweTNrCis3ODYxOSBiZmYwNTA0NTAyODNlYzc1YzZjZTBhYjA5NTYyMDRiYzYwYTRjNjBlIHJlbGVhc2UyNi1tYWludAorNzg2MjAgYjg3NTBjNzJiOWJjNDdmY2I2YmFlMTFhMGM2MzZlZTI0ZTNlZjdmMyBsZWdhY3ktdHJ1bmsKKzc4NjIxIDY4N2Q4NTE3YTBjMzhjZmEyZTY2NjA2ZmNiMjQ4ZTVlNTZjZmRmZTIgcmVsZWFzZTI2LW1haW50Cis3ODYyMiAyOWZhYzRiMWE1MWU3NjNkM2YwNzI5NDM5MjFjZjBhYzNmMjhlNTJhIHB5M2sKKzc4NjIzIDhhY2UyZWFkNTUyMzdiMWU3MmM2ZjM0ZDg4NDNmOThlMDYwOTdmMDggbGVnYWN5LXRydW5rCis3ODYyNCA0YjQxM2RmYTI3Zjk5MmE3YmUyMzIxODM0YzY5Y2RlZTBhMWQ2OTkzIHJlbGVhc2UzMS1tYWludAorNzg2MjUgYzUzY2M2YmQ2YjYxMzA4MDYwNzEwOTUwOTQ0NjdiYzM2ZTZjM2YyZiByZWxlYXNlMjYtbWFpbnQKKzc4NjI2IGM0ZmNhNzc4YjU3M2E1MjY2MmQ2YTAzNjc0MWM1NzI1MjUxNDUzMWQgcHkzaworNzg2MjcgYjk5OTk4NDUzZDUyM2FlMTBlYmJhM2RmYjFkNGE5ZGY3NTAwZDQ2YyByZWxlYXNlMjYtbWFpbnQKKzc4NjI4IGRlMDZiNTlhYTQzYzdmOWFhNThkMWFjZWQ4ZDZkNmFjZWQ0ODk2YjggcmVsZWFzZTMxLW1haW50Cis3ODYyOSA1YmIyOTVhOTRiMGY3ZDA0ZDRhMjc4MzRiYmNhZTIwY2IxODUzNzljIHJlbGVhc2UyNi1tYWludAorNzg2MzAgYzM1OWQ1YWNkYzRiNWI0MDdjODBkNThkMWMyYjAyZDBmMjQ1NTlkZSByZWxlYXNlMjYtbWFpbnQKKzc4NjMyIDZmMWUyZmZkN2JkZTg5ZTBhYmYzZjlkYmM5MjdkNjA1Y2QzOGY5ZTEgcHkzaworNzg2MzMgZGZhNzQ5MTE0MGQ5NGM2ZTFlMmUzNDAzNDlkNTJjYjBjNzA5Mjc2MiByZWxlYXNlMzEtbWFpbnQKKzc4NjM0IGRmMDI3MGJlZjk3MThmNGIyMDQzNmQzZDQyN2M4NDZmYTZkM2YwZmQgbGVnYWN5LXRydW5rCis3ODYzNSA4Njc4NTM0MjQyYTA5MzhkYTE3YTZkYTIyNGRkZjgyZTg3NWZhMDYzIGxlZ2FjeS10cnVuaworNzg2MzYgYmZlYTZjMjAyZWRlNTc2NzdhY2I1M2Q1NGNlNzgxYjAxOWQ5NWNiMyBweTNrCis3ODYzNyA2MGU3ZTZkM2U0NWE4OTA3YmU5MWE4MDcwNWVhMWFjNDk5MmNjYzg1IHJlbGVhc2UzMS1tYWludAorNzg2MzggN2Y1MDA2NDFjMDZhMWQ5NGM3MzUwYmI5OTI5ZDU1NTU5Mzc4NzZkZiBsZWdhY3ktdHJ1bmsKKzc4NjM5IGRkODUyNzM5OTU4MjNhYTYyYjhjZGEwZTgzMjQ5MTdhOGFiNDIwNjMgcHkzaworNzg2NDAgZDdhNjJjMTY1MDViMTJjY2MyNjc4NDYwZDQ5YjZlYjdlNDcwODM3NCByZWxlYXNlMzEtbWFpbnQKKzc4NjQxIGQ1ZmJkYTAzYzYwMzNjZTFhZWEwNDVjMTVlZDIwNjBmZjM5ZWVmM2QgbGVnYWN5LXRydW5rCis3ODY0MiA5OTQ0ZTUxMDRhNTU5NzAzOTkwM2YzOGY4ZDU0OTNkZmM1ZGFiNzViIHB5M2sKKzc4NjQzIDc1OTU5MjFhMTQ3NDgyZjIxMDYwYWMxYjUxOTU2MDI5NThjOTgzMjIgcmVsZWFzZTMxLW1haW50Cis3ODY0NCA0NjFkOWNkMTk1YjczYjMwNjY3MjY4OGYyMzAyYWIxMmJhMGFmNzBhIGxlZ2FjeS10cnVuaworNzg2NDUgNzc5MDBlN2RlYWE1ODcwMDVkZjEyZjJlZmU0ODRiMDZhZjdlZTVkMCBweTNrCis3ODY0NiAyNjI2OWRmYzIyYWI0N2U0MTE0ZWQ3ZGRmNDEyMGEzMzg1ZjE3ZjM4IGxlZ2FjeS10cnVuaworNzg2NDcgMGIyN2MzZjE4Y2IzODZmNTYyNDc3ZjM0ZmZiNmY4ZmU0MDEwODlmMCBweTNrCis3ODY0OCBmZDhmZGQzODg5NjNhOTYyMWQ4ZGI1ZmQwNjhmZDA2YTUyMjhlMWFmIHJlbGVhc2UzMS1tYWludAorNzg2NDkgMzAyZGJjNmM0ODA3MWVkZDQ0ZDdlNWZhZDM2YTAzNTM2ZGEyNmI0OSBweTNrCis3ODY1MCBiNmNhYjIxZDgwYjk1YjY3YTA1ZjMwOWUxYzViZGJmZWJhOWQyOWRmIHJlbGVhc2UzMS1tYWludAorNzg2NTEgYTNjMDA1NjZjMmQ1OWMyZGY5MWU3Y2Q0NzdkMDRkMGY0NTAxNmNiNSByZWxlYXNlMjYtbWFpbnQKKzc4NjUyIDg0MTMwYzIyNjVkY2E2ZjkyMDcyYzhhNjEzMjgyOWRhYjJmZWNlNmUgbGVnYWN5LXRydW5rCis3ODY1MyAyOTVkNTlmYTZlNjJlMWQyYzUxOTE4YWYzZDk3ZDc4ZTcyNzkzZjlhIGxlZ2FjeS10cnVuaworNzg2NTQgZGI0ZGExZWRmMzRmNWEyNTFmNWQwNDE0YmM0YjA0OWUwZDE5YzAxOSBweTNrCis3ODY1NSA2ZmFjYmMxODNhNGExZmY3Y2M2Y2FhNWJlZmE1MTRmZGUyNTliZjA3IHB5M2sKKzc4NjU2IDk4N2JhMzdhNTQ5NDNhZDQzOTUzODMwYzY5YjA2MWFjNmI5MTNkNDEgbGVnYWN5LXRydW5rCis3ODY1NyBlZWExNWZiMDI0NGUyZWI1NjEzYjk5MjFlMTQ0ZDdlYmU0OTg5MDlhIHB5M2sKKzc4NjU4IDk1MWZlYzE5NmVkYzcwYTlkYWRjNDY0YjM4ZGRlNjMzZGNlN2JlOTYgcmVsZWFzZTMxLW1haW50Cis3ODY1OSBmODM1ZTI4MjdkMWFhNjMwM2I3MDRjNzhmZGFhOTAwYTlmZTk0Y2QxIHJlbGVhc2UyNi1tYWludAorNzg2NjAgMDJhZWZjNDI1N2RlNzZmNjNlZTBiNmMzMTY5N2VhMGQ2OGIwMmRlNiBsZWdhY3ktdHJ1bmsKKzc4NjYxIGNlOGJlNjRiMzRhOGE2ZDEzZjQ0YzVlYjI2NTIxNDY1NGZmYzMyNTQgbGVnYWN5LXRydW5rCis3ODY2MiBkOGIyZmE4ODc4OGIxZjZiM2Q3M2RlY2IyYjYzMDVhYzY1MWRjNzVhIGxlZ2FjeS10cnVuaworNzg2NjMgMDQ5NTVlN2ViNTk3MDZmYjg2MjMwMjVmNjA0MGQxNTA1MGZkMWVhZSBweTNrCis3ODY2NCAzMTllNjIxNWM1NmNiOTk1ZWJmOGFjNWI5OTk5YmNlMmViZDVlOTI4IHB5M2sKKzc4NjY1IDRkZjMzZTgzZjI2ZjEwYjU3YjU3NDEyOWZjN2IyMzM5ZmZkMDlhODkgcmVsZWFzZTMxLW1haW50Cis3ODY2NiBhZDIyYmMyMmRkZGNiZWYzNjE5MTY5NmEwMDQyOWM3YTYwOGQ1MDFhIGxlZ2FjeS10cnVuaworNzg2NjcgMzU3NGM1ZmUyMDdjNDY2MTMzNzY4OWNlNTA0ZGQ5MWE5NjM0YWJiZSBsZWdhY3ktdHJ1bmsKKzc4NjY4IDY5YjJhYmI5NTM0ODc3ZGRkNjUyNjJmYWFjMGZlNWYyNjg0MGYwNTQgcmVsZWFzZTI2LW1haW50Cis3ODY2OSA4MWRjMTcyYmZkYWJkY2YzNDU2MWI4OGZjZTI1Yzk5NGFlMjA3NjA3IHJlbGVhc2UyNi1tYWludAorNzg2NzAgNzU1NzE1YjNjZjIzYTNlOTA3MjkwY2JlNzBiMTc5MWFmY2UxMDNjYyBweTNrCis3ODY3MSA0NWM0YjZkNmUyYTUzNGNlN2JjNjJmYTVjYmRiYTI2M2I4MWJmOTMzIGxlZ2FjeS10cnVuaworNzg2NzIgMDIxY2I0ZjQ1NTlhNWZhYWM0YmYxYTZlOWJiNGViOGI4NGQ3YzQyYiBweTNrCis3ODY3MyA1YjgxOWVjNGUyMDVmYzBmZDlkMTJkNDZkZjA0OWMwNTQ5N2FiMWVkIGxlZ2FjeS10cnVuaworNzg2NzQgNDMyZjhiYTY3MzgxODEyYjQ3YmQ4YTBhZmY2NWEwNmRiMDdjZDA0MCBweTNrCis3ODY3NSBmZWY0ZTI1M2U4OGFmMzVjMTJiN2JkMjQ4NzNlNjAzYmNmZGQ3YjY2IGxlZ2FjeS10cnVuaworNzg2NzYgMGZjYTM5N2Q1MGY3ZmU2NDQ3NDYyNzY0NzRhNzY0MWQ3MDJiOTNjNSBweTNrCis3ODY3OCA3YjQ4ZWJhYWRiNjAwMGNmYjU0NmY2YWE3MjhlOTQ0NTU3NGU4ZGYwIGxlZ2FjeS10cnVuaworNzg2ODAgN2U5NmIwYmNiYTI3ZWQ3OWQ5OTQ2MzNlMDM5NTllY2Y1YTBmMjdkZCBsZWdhY3ktdHJ1bmsKKzc4NjgyIDAxOTc1OTkxNmE5YmE3YTI0YzkxZDBhYjcwM2Q4NDY2ZTMyYjI4N2UgbGVnYWN5LXRydW5rCis3ODY4MyBlNTAzMDMzZTMxNDM2Yjk0OWNhZGU0Nzg5ZDJkYTM2ZGNlMWFhMmFlIGxlZ2FjeS10cnVuaworNzg2ODQgODI0NDYzYzQ0ODk4NDQwNThkN2JjY2QxZTdmMWI2MTFlYTY1OWZiZiBweTNrCis3ODY4NSA3Y2Q3ZmY2YjBhZGIyODkxMjU4MmNlMDlmZWVhZWMyZmE4YWE4ZGEzIHJlbGVhc2UyNi1tYWludAorNzg2ODYgOGI4NjRhYTc4ZTkyNTE3YTNkZjQwOWY2ZWQ2ZGRlNGQ0ZTVmYmRmMyByZWxlYXNlMzEtbWFpbnQKKzc4Njg3IGFlN2YyNmQyNGUxZGNmNzQ5N2ZlMjliN2RmOGJkNTcxZWQyOWFjN2UgcHkzaworNzg2ODggMDRkM2FlNTJmZjczMDJhMzg3OWJiYmIzYjZmNDIxZDk0MDU1Y2M1YiBsZWdhY3ktdHJ1bmsKKzc4Njg5IDMyNjE5OTk2YTAxNDhjNGQ3OTYzMTY4ODFjM2I5OTBmN2YxOTQ3MzcgcHkzaworNzg2OTAgYzJkOWQ1MGYzN2M1OWI2MzNiNGNiOGE5NTkwNGFiNzk0Y2U1MmM2MiBsZWdhY3ktdHJ1bmsKKzc4NjkxIDkxZmIzOTRjMDRkNjNkOTlmZWUyYWNkZjhjNzI2ZmZiMjM3NGM1YWMgcHkzaworNzg2OTIgODE0NzcxOTJjZjdhOTlhMjI5Zjk2Mzg3Yjk2YjdmYTBiNTllZWY5MSBweTNrCis3ODY5MyBjZWQ1ZjFmNDE0YjAwYzY1NDdkMzM3ZDJkZjQ2MGIwMDBlMTI2NzcwIHJlbGVhc2UzMS1tYWludAorNzg2OTQgZmQxNTVhMzY4ZjViZDQ2NWQ2NTMxMzE3NzIwNWMwMmY2NmExZDA5ZCBsZWdhY3ktdHJ1bmsKKzc4Njk1IDgxNzUyMmUzNTJkNjZmNmQ1NDhiOGIyMGUwMTM2NmFhMjgwOWVkODUgcHkzaworNzg2OTYgMTlmMzBiNDIyY2EzZmQxN2JhOTQ0ODI3OTc3NWIwZWIxZmNlOWY4NiBweTNrCis3ODY5NyA1MDQ4MDgzZTk5ZmZjZTQzMDkzYTdlZGYyZjU3OGIzZjYyZWFlMGE1IHB5M2sKKzc4Njk4IDMwMDNjMTY1NmUyYWRlZWI1ZmFmNWJiMjAyMGNhNjUyYzMzM2JkM2IgcHkzaworNzg2OTkgYmY1ODZiMjc3NmY2N2NjOGVjZDNmOWVkYzYxNGE1ODlmYjA1ZWRjZiByZWxlYXNlMjYtbWFpbnQKKzc4NzAwIGVjY2E3MDNiYzBkZjRkYjQ1ZWJjOTU2YzhkNzMyMTg2NmE4NTNhY2YgcmVsZWFzZTMxLW1haW50Cis3ODcwMSAzMTk3ZWNjMDk0NGExN2Y1NTk0MzBiZDNhNDFjYTQ4Yzk5N2I3MjUzIGxlZ2FjeS10cnVuaworNzg3MDIgZDllNmYzMTg1NjhmYzkzNjNhMzQ2Zjc2MGEwMzcwOTcwNWQ5YjRhNSBweTNrCis3ODcwMyBjYzcwZjY4ZTljMTExM2M5N2ZhNGIwNjcyMWIzYzQ3N2UzMGU2Y2ZjIGxlZ2FjeS10cnVuaworNzg3MDQgNDU0ZWZmODQwYmQ0MjJhZjA5ZjBlYjI1MDk3YzUwMTBiNTA4MzVlNCBsZWdhY3ktdHJ1bmsKKzc4NzA1IDhkYzQwYzYzNzYxYzhmZGNiNTU5NGU1MzVkZjQxZTE0NTQ4N2QxZmEgcHkzaworNzg3MDYgMjVlOWRkYmNlMTBhYmU0ZmJlZTM4OTc3NGYzNDI3MDQzZmY4N2U0MSBsZWdhY3ktdHJ1bmsKKzc4NzA3IDJiNTA4YWEyYTQzNmJjNTViMjQ3NTQ1N2U0MjgzZjY0ZWYzZmU2YWUgbGVnYWN5LXRydW5rCis3ODcwOCAyZDVjYTI4MDVlYTVmMWJjZDc3NDhlNmE5NzQzYzQ2YzRiNzIzYzcxIHB5M2sKKzc4NzA5IDMyYWM0MjhjZDE4YjM0MmU0ZDliNmJiOTc4OWVjYjc4YWRjZTE5Y2YgbGVnYWN5LXRydW5rCis3ODcxMCAyMTU2MzhmY2YwOWJhMDg2MzIwZDgxY2M2NWY3NTBiYjdiMTY2YzBmIGxlZ2FjeS10cnVuaworNzg3MTEgNWQ1YmNhNmVjYjE1MTg0MjkzZjUzNDQwZjBkOTViODIyYTJjYjZmMiBweTNrCis3ODcxMiA1YzMxNzY3NzVlODczMGNiM2Q3YzMwNDI5OGVhMzg1YjZkYzNjN2Y5IGxlZ2FjeS10cnVuaworNzg3MTMgNGExMTlkODRkMGI1NzU3NDNiMDE3N2JjZjk4NmVhMWIwODVjNmM5OCBsZWdhY3ktdHJ1bmsKKzc4NzE0IGI2OGE5YThjMmMxZjQ5ZjJjMDE4YzE2MTFlOTViMjdkZDJmODg5MzEgcmVsZWFzZTI2LW1haW50Cis3ODcxNSA2NzQzMDg3NWMxYTAzNjMxYWVlYzE0MDhkYTk3MDc4NWRlMGFmN2Y4IHB5M2sKKzc4NzE2IGFhNDg1MjY0NTFkMTcwNTZlMTAzZjExNTQyOGE1ZGQxN2QwYjEwYTggcmVsZWFzZTMxLW1haW50Cis3ODcxNyA1YWEzYmZjNDhjYmRlYmI4ZWU1YmU5ODMwYmVmOGYyNzFiYTE1NmQ1IGxlZ2FjeS10cnVuaworNzg3MTggYmIwOGEzZWMxNTRkYTczNzY1ZTExNDY2NTg3MDFhYzIxNTdlYmFmYyBsZWdhY3ktdHJ1bmsKKzc4NzE5IDViMTc2NDM3NDU0NWEzZjJkZjE3MzVmMTlhMThhN2IwZWQ0Y2U0N2YgbGVnYWN5LXRydW5rCis3ODcyMCA5NjZlYjFiOWU5ZGJjM2RiZjhkY2UwMzQ1YjM5OGQxZGY2NDc2ODQyIGxlZ2FjeS10cnVuaworNzg3MjEgNzQ0NGQzNDhkNzcxZjBmOTgxYzM4MDM2YWNhZTJkNmRjODgxYTY3NSBsZWdhY3ktdHJ1bmsKKzc4NzIyIDQ4YTZjMjYyMTIyNjVjNTNiNmRmZmI3YmFjNTRlMDk0YzVmZmIwNjIgbGVnYWN5LXRydW5rCis3ODcyMyA0ODZjMWM5ZWUwMDZjMDY3YWVmNGZiNGQwN2E4ZWZiZWY5NGU3ZTE2IHB5M2sKKzc4NzI0IGVmZTUyOGVlOTU4YTZiMjFkNWQ1ODU2NDc0MWJhM2U1MWNhYjBjY2IgcHkzaworNzg3MjUgMjRjNmE1ODNhODY2YWM4ZDIwNWRhM2QxMDVjYzdiYzI5MTI3MzRjNyBweTNrCis3ODcyNiA0YzVjNWI0NjY4YjRhNmFkNDhiNjhiNzAwMzllNzExOWI3MGE2NDVjIGxlZ2FjeS10cnVuaworNzg3MjcgZjM2MmNkNGJkMmM1MWM2Y2MwNTQ5MjUyNjY2OTI3ZTVjMjFkNDhjZCBweTNrCis3ODcyOCAxMjBkNmNjZjI2YjA0ZTk5NDY4YzE2NGExODRhMDhlMDJmMmM2ZmE0IGxlZ2FjeS10cnVuaworNzg3MjkgOTI1OGY0MDVhN2FjNDY2YjQ4NTcyYWRhMDIzZDhkYzllNGRiODc2MyBweTNrCis3ODczMCA5N2NhOWIxNGE2NjA3YmVjN2JmYmM2OWUwYjU3OTg1NjE1NjZiNjQyIHJlbGVhc2UzMS1tYWludAorNzg3MzEgZDBiYmJmM2M1NWY1ZTAxNWMzOWExMDUxZDBiYzQ1YWUzY2M5ZWM1YiBsZWdhY3ktdHJ1bmsKKzc4NzMyIGJkZjZkNzY4YThjYzVmOGZhZDA3NWM4ZDM4M2QyZWQwMDU5N2RmYjQgbGVnYWN5LXRydW5rCis3ODczMyBjMmNmNmM3MTcwYzUxNTJiMDUyODJiOGIzNjU5Y2Q5NTI2OTM0MTRkIHB5M2sKKzc4NzM0IGViZGMyYWE3MzBjMGJkMWMyNzM3MWMzMmU3NGU1Y2EwMzg4MjM4NWUgbGVnYWN5LXRydW5rCis3ODczNSBhMDdmNzBmYzgyYTExMDJmMWJiNWRhZDJlMzE4M2ZkZTQ2MzNmM2IxIGxlZ2FjeS10cnVuaworNzg3MzYgZThjMTE4OTE1NzYyZTc3MTlmNTY5MzhhYmVlNGZlMGVjMDU2ZjYzOSBsZWdhY3ktdHJ1bmsKKzc4NzM3IDVhOTYzMWI5ZGQyMjc2MTdiNjNiMmY3NmMwNzAwM2FhMmMwOGE1ODUgcmVsZWFzZTMxLW1haW50Cis3ODczOCBkMmUxMDI3ZWRkZTg0YTAyODUzZmNmOTc5MGYzMTFmMTBmNDZjZjBhIGxlZ2FjeS10cnVuaworNzg3MzkgZGNmYmMzNGIyZTNjNmFiNzk5ZTZmNmE5NWQ1MjJjOGYxM2Y5MmJhMiBweTNrCis3ODc0MCBmOWVhOTE3YWZmMTNmMmFhZWUzMjVkODM4N2JjYjdhNWJjY2JmMjJkIGxlZ2FjeS10cnVuaworNzg3NDEgMTQ5YjhiODc1MTRkMTA0MTZiNTk4ODg0ZGI1Zjc0NjUxZjYyNWIzOCByZWxlYXNlMzEtbWFpbnQKKzc4NzQyIDIxMjQ3ODY0MGIxYzI2MzUzNWZkMGNiZmE2ZDdkNWRmYTg4NGY3YzUgcmVsZWFzZTMxLW1haW50Cis3ODc0MyAxNmEyNmQ0Mzc0ZTQ2YmZjOTc3ZWVlNDFlMDgwNGViNWY4MGQ2MGJiIGxlZ2FjeS10cnVuaworNzg3NDQgNGZhOTZhOTEzODA4NzFiNjhlMWI4NGU3YTg3NTc4ZTdhMTE4YmU3MyByZWxlYXNlMzEtbWFpbnQKKzc4NzQ1IGFkMjU2YTZjNjU5OTBjOGEzNTM4N2IwZDNjOTJhYzBmZjljMjEwOGYgcHkzaworNzg3NDYgMzE3ZDBjNDNhYjJiNmJjODY0NDM1YjQ1ZmY2NTBjNWUzNzVkZjAyYiBsZWdhY3ktdHJ1bmsKKzc4NzQ3IGY3MzU2MTEyN2Y1N2UzZTIzODczZTlhNWUwNDFhMmJjZGIxNTVkMTggcHkzaworNzg3NDggZTZkMTQxNTg3NThlMThiNjNhZjUyYmQwYjU5MTY3MmIyNTI0MmUyNCByZWxlYXNlMjYtbWFpbnQKKzc4NzQ5IDA4MDJiYzk3M2IzMjRkYTI1MWJjZmZjMTNhZDNhOWJmNTBmZmE2MDkgbGVnYWN5LXRydW5rCis3ODc1MCBjZTk3M2I1Yzc3OWYwMzA0YWQzYWEyMGU1ZTYzMjIzNDVhYmZlNWQxIHB5M2sKKzc4NzUxIGMxNmIzN2IxODkxYjAwYzA2NTc5MTQyMWUxZDAzNTdlMGEyMGQ2NjAgbGVnYWN5LXRydW5rCis3ODc1MiBlZTg4MDI4MTViYWQyYjdmZjlmNTYwZjkwYWZjZWMzZTVkZjczYTkwIHB5M2sKKzc4NzUzIGNkZTI2ODdlMzdjMTY1MDkyNjdmODM1MzY5NzE4OTJiMTRjNzRmYzIgcmVsZWFzZTMxLW1haW50Cis3ODc1NCA0ZjAyMTc5NDkzYzI1ZDFmY2JkMTk1NWMwYjA3YTRlYjBlN2E4OWYxIHJlbGVhc2UyNi1tYWludAorNzg3NTUgMjk5MGJkM2FlODgzOGE3NmVmZjE5ZGY5MWQwZmY3YzQwY2RlODJkYyBsZWdhY3ktdHJ1bmsKKzc4NzU2IDQ5YTBhOTUwZDIxOWIyMmI5ZjVmOWRjYTAyNzVmOTQ0Y2ZhY2M3MzMgcHkzaworNzg3NTcgZTJkNDEwNzlkMDU5NjdlNWJiNmE2Zjg3Y2I5NzMwNTg4OWJhNWZhOSBsZWdhY3ktdHJ1bmsKKzc4NzU4IGUyM2NiYTAzY2M0YjMzZDllMTNmNThkMDIxYmNiY2Y4MDE4YWIyYmYgbGVnYWN5LXRydW5rCis3ODc1OSAyNzQyMmQxNzMxZTllNDY5NjQ4ZjY5NjYxMjczMDMxMTI4ZWNhNzM2IGxlZ2FjeS10cnVuaworNzg3NjAgMTc0YjA4NzliN2QwZWNhY2IyNmI3NTNmYjZhOWE1Zjk1OTk5ZDYxMSBsZWdhY3ktdHJ1bmsKKzc4NzYxIDcxZTRhYjIxMzQ2ZDQxZTUwNDExMjg1ODI0OTdhNzI3OGNiMzRmZmIgbGVnYWN5LXRydW5rCis3ODc2MiBjZmI0NDJkNzAyY2Q0NzFhNjUwMmE5ZDJmYjY2ZThhYTFlZjY3NjQ1IGxlZ2FjeS10cnVuaworNzg3NjMgMGEyNzNjYTEwZmE1ZTRkZmU2NTYxODQ5ZGQ4MTk5MzY4NzkyYzUyYSBweTNrCis3ODc2NCA0YTZiZTg2NGM2Yjg5YjE3YzYzNjhkOTgzNTcwYWM5MmQ0MTEzODZhIGxlZ2FjeS10cnVuaworNzg3NjUgODVjOTVmZDVkN2UzYTA0NGEyMDQwY2QxNTU4NTFhYWFmNjg0ZmNkZCBweTNrCis3ODc2NiBlZGFhZmNhODc0MzFjN2NkZmMxNTk5MDJjODRhMzhjZmExNjQzYjZkIHB5M2sKKzc4NzY3IGFiN2M4N2VkNWNhZGQwNGJhOTNlNzhlMjVjYzdjMTI4NTdiMDFlZTMgbGVnYWN5LXRydW5rCis3ODc2OCBkYTE5ODk0OTQ2ZTFmNjEyYzFlYzQwNDU2ODA0MjE2ZDA5Njc1ZTUyIHJlbGVhc2UzMS1tYWludAorNzg3NjkgZTQ1ZmYwMjc0ODJmZTQ4NzkzZGQ3ZmUyYjE1N2U0NmQyNzU4ODY2YSBsZWdhY3ktdHJ1bmsKKzc4NzcwIDhmMmMzNjBkMDIxNGI1MDQ1MDgyNzY3ZjYzODRhOTU4ZWJhMzBmMTMgbGVnYWN5LXRydW5rCis3ODc3MSA1YjFkYTMyYzlkNGUyZDRiMGQ4N2Q5NzczN2JiMDQwYzhlMGQyMjI4IGxlZ2FjeS10cnVuaworNzg3NzIgYzc1MjA2NGZjMjYyNzIxNDllMmJlYTA3NTg3YzVmNDNiNGYxMGM1ZSBsZWdhY3ktdHJ1bmsKKzc4NzczIDM3YTg0MjQ5YWEwNDc3N2IxNjA0YWVkYjE0N2Q5OGViNjJlMTE5OGMgbGVnYWN5LXRydW5rCis3ODc3NCA4NWVhNDU0YTEzZGNkYTEzNjNkZmE2MTZhOTVhZTNkYmIxZDcyM2Y2IGxlZ2FjeS10cnVuaworNzg3NzUgMTMxYzIxMDhkMmIxYWY5ODdlZDg3YjJjZTQ3YTE3YTI5OTY4YWMwYiBsZWdhY3ktdHJ1bmsKKzc4Nzc2IDQ2NjAzODdiOWIzNTIzMzE2OGI4ZjdkZDA4ZGVlNjcxMTkwYjAzMmIgbGVnYWN5LXRydW5rCis3ODc3NyA0MWFlZjA2MmQ1MjkzMWY1YzZlNDMzODlhZDBiZTJjNzMzNWQyZmVjIGxlZ2FjeS10cnVuaworNzg3NzggZGE3MTQ2NGQyY2ZmMjE4ZTUwZjYwMWI0NzIwZmI5NTc3Mzc4MjUyYyBsZWdhY3ktdHJ1bmsKKzc4Nzc5IDU3NWIxMmIxOThhMTY0NGE5OTFhZTNiZTczNzMwMWQyYTU3YTVmYmIgbGVnYWN5LXRydW5rCis3ODc4MCAwZjQ2OGUyZDkzZDBhZDFkMDYyMjdiZDExNmFhYWY2YzdhMjA3N2UwIHB5M2sKKzc4NzgxIGM2NzZmZjBkODQ5NWY1Nzg3N2M0YjQ2NmJhNjJkMDNkNDg4YWE1ODEgcmVsZWFzZTI2LW1haW50Cis3ODc4MiBjNmVkMzMwMzVkNjkyYWYwNTYyY2FkOWIwNWJlYWYyOTQ1YTQyZDQ0IHB5M2sKKzc4NzgzIGRhM2M1ZWZlNDI1MmRkMjMzMDA1NTBmMDk5NjQ1OTgxODMzMDFhZjIgcmVsZWFzZTMxLW1haW50Cis3ODc4NCBiMGI4MGVjMmUzYTBmZTBiNzVkZDQ5MGRjZjQzYmIzMzlkMTM2YjNkIGxlZ2FjeS10cnVuaworNzg3ODUgMzlkNzA0NzgwN2Q1Mjk1YTZkNDhhZDk0MzQ4MzhmMGRiMzdkZmQ3NyByZWxlYXNlMjYtbWFpbnQKKzc4Nzg2IDQ0NWY4MDFjYTJkMGI0MjkxYzUyYWNkNzkyNzRjOThhOGEzNjI1YTEgcHkzaworNzg3ODcgNTVmNmEzZDVjMTc3OTU3MzdhZDY5NGI2NDAyODkxMjcwM2VjMWNkZCBsZWdhY3ktdHJ1bmsKKzc4Nzg4IDY2NzE5MzJiZDhiOGJmZDIwODE0NjVkZGI2N2E2OGVhNzVmMzE3ZWUgbGVnYWN5LXRydW5rCis3ODc4OSBhM2Y2MTc4MzU0ZjVkYzFjMDc1NDM2OGIxYjc0OTgwZmI1NGM3YTg5IGxlZ2FjeS10cnVuaworNzg3OTAgOTZlMDAxMWVhMGE0NGNhNmE5NzRiYWRiNDMxNWIwNzkyMmRjNDY3YiBsZWdhY3ktdHJ1bmsKKzc4NzkxIDJhYzRmNGY3ZTM5MTE2MWNhMDIxMzc2NmMzZWU5MzZmNGJjM2YxZWYgbGVnYWN5LXRydW5rCis3ODc5MiBhMmYxYzE1Y2FlNmM0MDVlMjFlODQxNWZmYjgzNTYzOTM2MmE2OTNkIHB5M2sKKzc4NzkzIDczM2NjYzNmM2E2ODA1YjExYmY1ZDYzOGJkY2UwZDhlMjEzOTBjOGIgcHkzaworNzg3OTQgMTQ2MTZkZjkyNDA3OWQxMTUyZGFlYmViZjQ4MzE0ZDI0NzhiNDFkNiBsZWdhY3ktdHJ1bmsKKzc4Nzk1IGNkZmRlZmVjOTlhYmNkYTE0ZGNkYWE3ZjQxNTFlODA1ZjgwMTYzYzIgcHkzaworNzg3OTYgNjhlMDUwNzYzMmE5MWY3OTAwNmJiNjhjNDNjZjg4NzdlZjc0NDlkYyBweTNrCis3ODc5NyBhYzgwODg0ZGRjYzMyNjY5NDgzMzk3NDZhYjY1YWMwNTRjMzAxMjVhIHB5M2sKKzc4Nzk4IDAyNGM1M2E4NjUyMWY5MGMwMDQyMTJjZjc3NDkwMTcwMWFiNjZkZmYgcHkzaworNzg3OTkgYjNlNjY3M2I2YWU0ZDFlMDg4MmVhZGZmNzI1NmNlNjU0M2RjZjU5NSBweTNrCis3ODgwMCBkOTI4NzhiYmE3YmJmNzBmZWNiM2JhZTM3NGY3MmFhYTkwNGZjZjAxIGxlZ2FjeS10cnVuaworNzg4MDEgODk1Y2ZlYmRlMTcyN2JhN2Q1Nzk4Y2NlYWIyZWIwZmM5OGI2ZjFkZSBweTNrCis3ODgwMiBjNTU3YTU0YWQ2ZDFmODdmYWVlMDQ1ZTA4YjliZTk0ZWZkYjM0Yzc2IGxlZ2FjeS10cnVuaworNzg4MDMgMWNkYTNkNzc3N2FlN2UzZDU1YWEwZjU2MWQ0MjJkMmQyYzQ1OGNjMyBweTNrCis3ODgwNCBjODcwMzk2YjZhZTFhMTFhOTVhNDU3OWQ0Yzk1N2U3YTA5MTc3ZDRhIHB5M2sKKzc4ODA1IDU5YTE1NzNiODNhYzQ2YjE4ZTE4NGM3Y2I2OTY4M2FiZTVmMTY4YTIgcmVsZWFzZTI2LW1haW50Cis3ODgwNiBmMTI2ODJhZjU1N2I2MWFhN2UwMzk0ZjEzNDI2NTViNWZiMTRiYWJiIGxlZ2FjeS10cnVuaworNzg4MDcgMmE0ZTkyZWZmMzBhNzQyYTdlYTQ1OWY4ODQxZmI1YzMyMGIyYzQ4ZCBweTNrCis3ODgwOCBlNDIxNTVjNDc0OTRhZmZkYzY1YjdjMzAxOWU4NTVlMDJiYTQ3YTAzIHB5M2sKKzc4ODA5IDg4ZDI2NWRlN2RhZTIwNmQwY2RiYmIyMzY5Y2NkNmQ5MmNkZTYzYTkgcmVsZWFzZTMxLW1haW50Cis3ODgxMCAyZWVmOWIwZWJkNWNkZjk1ODRmZDcxZDc2Y2YxOGMwNzg0ZmJjNjIzIGxlZ2FjeS10cnVuaworNzg4MTEgNTY2NzlhZmFmMDdkYjJhZDg2MGE4NzAwNjViZWZiM2E3ZWQwZThkNiBsZWdhY3ktdHJ1bmsKKzc4ODEyIDFmNWRhNTVlZTdkN2YwMDI2NjgzOTAzMzM3YWVmZTNlMTQyM2QwZjYgbGVnYWN5LXRydW5rCis3ODgxMyBlMjc2MmY0OTUzOTM1ZTUxYTA3ZWM5ZDY1ZGQ1ZmQyODdiYWU0ZDZkIHJlbGVhc2UyNi1tYWludAorNzg4MTQgYmJmMmVkZDc1MmI2MzJmMDg5Njk3Mzk3M2Q0MDU1NTE2ZjVlMzM0NyBsZWdhY3ktdHJ1bmsKKzc4ODE1IDI2OWExMmE1MDEyM2YzYmQ5NGNhNGE5ZTJlMjNhMDAzMDYxNGY4ZGQgbGVnYWN5LXRydW5rCis3ODgxNiAzYzhlMjAwMDQzZDY5ZTg5ZTliYTZlYjllYWM1MjQyYmUxMzUyOTAwIHJlbGVhc2UyNi1tYWludAorNzg4MTcgNTVmNGRlNWUzNzhhODllYjkyODhjNzg2OWFhZjc5YzFiNmYyOTcxNCBsZWdhY3ktdHJ1bmsKKzc4ODE4IDY1MzM0MzAzZmRkM2ZhMjY2Y2Q2YjBkNzk1MzJiZWE3MWVmMmM2YjkgcHkzaworNzg4MTkgNmQ5YmUxYTk3YzE3MjJlNmE5MWQ2YjIxNTAyZjFlYTUwZjlmNTIxMiBsZWdhY3ktdHJ1bmsKKzc4ODIwIGRmYjIzOWM1MDA4OTJmZWM5NTc3ZDQzYmM4MTI0YzUzZTg0YzRmNDggcmVsZWFzZTI2LW1haW50Cis3ODgyMSA5ZGQxZWNiNWEyNGMxYjQ0MjI3NTMzOWEwMmQ1N2ZiZmJjYzZhOGIyIHB5M2sKKzc4ODIyIGZhNDYzMDkxNjY5OTA0NjM1N2E1YWMxNjg4NGYzZmM0N2JkMGVhYTYgcmVsZWFzZTI2LW1haW50Cis3ODgyMyAwMTdhYWZlODMyNmZhYzZlYTE4ZGM3MjVkMzgxMjhlOWRlODY1Nzg5IHJlbGVhc2UyNi1tYWludAorNzg4MjQgNTMwYjcxY2QzYjI5NjEyZTk4ZDZiZTEwODFmZjY4M2U1MzBjMWIxZiBweTNrLWppdAorNzg4MjUgYmMwY2M2NzcxY2FhNzg5MjQwMjk2ZDc2M2VmZjIxMDUzNzQ3YWY0YiByZWxlYXNlMzEtbWFpbnQKKzc4ODI2IDQ0Njg2NjZkMDFjNGJhNTFhNjcyOTAxZmM5NzEwZWZjZGU2MmYyY2MgbGVnYWN5LXRydW5rCis3ODgyNyA1NTUxZmU2NjY3MGMyNDRkMGQ0NTBhZjlmMGNmY2FiZDZiNmZjYWFkIGxlZ2FjeS10cnVuaworNzg4MjggYWRiYjM3ZDNkMGU1MDNkMWIwN2JmNjYzYjkwZjc4ZTkyYzhmZTE2ZCBsZWdhY3ktdHJ1bmsKKzc4ODI5IDEzNWNkODA2NGQ2ZmI4NWU4NDlmN2JhM2MzOWRhNTE4M2RlYTNiYTUgcHkzaworNzg4MzAgNWI0YTY2ZDYwMWMzYTQ0NjMwMjM0ZWRkODQzZDZmMTlmODg3ODhjMiBsZWdhY3ktdHJ1bmsKKzc4ODMxIDA1M2VmNmU4M2NlZDdjNWQzODhlNDBkNWIwNWM2ZDg2MzJjOTMwOTIgcHkzaworNzg4MzIgYWQ4ZjYzZDlkY2Q4MDM0OGQxYmU3OGI2YmNmZTY5NWE1MTdmYTYyMCBsZWdhY3ktdHJ1bmsKKzc4ODMzIDZlMzdlMTI3NTgxYjRjMTAzMGM5YzA4NzQ4OTUzNjM2YWIwMzU3OGIgbGVnYWN5LXRydW5rCis3ODgzNCBhMTExMDI0YTBiY2I2YzcyZDQzMDEzNmEyMzEwNzc1M2ZjYTg0MGFjIHB5M2sKKzc4ODM1IDhiMjQ2ZTg1NjBkYjVkMDFhZTgxZjk5ZmU5ZGNlYWExZjM2ZDk0ZDMgbGVnYWN5LXRydW5rCis3ODgzNiBlNTM2N2Q2N2E3ZjhhYmI3ODZmMjk1MGU4NThhZGEwODkxMTBlNTlmIGxlZ2FjeS10cnVuaworNzg4MzcgYjhlZGUwZmVlNjFhMTM5ZmJmZjc5MTdhMjg3NGIwNjk4ODdkZDg5ZSBsZWdhY3ktdHJ1bmsKKzc4ODM4IDgzMWUzMGMwZmQ3MzA2ODVhY2UyNTM0YWJiMWVhNmZjYmNiYWU2N2YgbGVnYWN5LXRydW5rCis3ODgzOSA5MDNkM2U2MzNhOTI1N2M5M2Q4MzFmY2Q5MGYyNmVhNDRkMzczY2FjIGxlZ2FjeS10cnVuaworNzg4NDEgMDZhZDMyYzAzNDg2NGI2YWQ4OTRjZGUwMTFmOWIzMjI5ZmZhYTRiOSBsZWdhY3ktdHJ1bmsKKzc4ODQyIDkzNDczNzliZDVmYjk3ZDNlNjNlN2U0MzlmM2Q4ZDE0MDNmOTY2MGQgbGVnYWN5LXRydW5rCis3ODg0MyBiNjJmNzZhZDQzMGUyODAyMmViNzY5Zjc1NDI4ODQ1MzM3YzZjMzYzIHB5M2sKKzc4ODQ0IDRkZDA4YTVjY2E4YWQ5YzRhNjY1NDZmMjEyMmQ4MGEyYzFiZTM2YmUgbGVnYWN5LXRydW5rCis3ODg0NSAyMDE2MGI0NjFjZDNhZWIzMDQ2ZmFmOTllOGZkNGFhYTM1NTY1NWVjIHB5M2sKKzc4ODQ2IGVmNDhlNDhmMDY2ZTk5OTE1NzM1NjgyYjI5YTViMTIzYjM0Y2ZkMjMgbGVnYWN5LXRydW5rCis3ODg0NyAzZWQ5NTQ5MGJhOWQzZGM3MjhjMGE5YmVmNTVmMzViNzc2NGEzNzgwIGxlZ2FjeS10cnVuaworNzg4NDggNmVhMGE1OGVkODM3NjkwNGRiOTkxYmU4NTg2Y2ZlYTA5NTg4MTAxNyBweTNrCis3ODg0OSA0OTEyY2YzYjAxOTBiMzZkYWU1YjRhY2E3NzA2Mjc3NzA2NWRlMTY5IHB5M2sKKzc4ODUwIGZjZmUzMjQ2NjNhNjE3MTdhNDliNTgyZDQ1ZTQxNzIyZTViYzczNDkgcHkzaworNzg4NTEgNWM1ZGU4YWNiMzNjMWE1MTE2OTMwZWE4NjM5ZGY4YzAyN2Q2NDNjOSBweTNrCis3ODg1MiA5YzJkOTE5MDE0ZDA3YWFkYmU2MTRiMTM4ODcyOGEwNzVmNDczNjFlIHB5M2sKKzc4ODUzIGE1NjZlNTNmMTA2ZDYwZmVhYmFjYTkwNDUyOWFlNmI3ZDVkMGE3ODkgbGVnYWN5LXRydW5rCis3ODg1NSAxMzVhYTdlZGY3OTJiODM3NDlhZmEzOTQ1ZjMyYTc0Yzg3NDU4NzQ3IGxlZ2FjeS10cnVuaworNzg4NTkgNTM5NGQ4MWM0NTEzYmFiODdjMmEzMmQ4MWQ0YmUzNmNhNDdiODk4NCBsZWdhY3ktdHJ1bmsKKzc4ODYwIDYyZDdmMDQ5NzAzYjQ4MzA1NzhiYTEwZDdkZDUwNGZiNTNlOTg3ZmIgbGVnYWN5LXRydW5rCis3ODg2MSA5MDI3YjE1ZjliYjc2MmE1NzRlYmYxZDhhZGZhNDA5NTdlNjM3MzEwIHB5M2sKKzc4ODYyIDk5NDg3MTQ1MzJmOTIxMTVhMDA1NDAyOTlkZTliMTRlY2U0ZTM0ZjEgcHkzaworNzg4NjMgZGQ0OGUzZjMyZGU1NTRmM2VhNjMzMzU0YjlkNmQ2ZGJkZjBlYmE0YSBweTNrCis3ODg2OCAyMzZmYjBhZjQ0MDQ5NzA5NjgzYWJiNTFkZjIwNWQ5NjA3NTFkMWJkIHB5M2sKKzc4ODY5IGIwNTZiYzc2N2FlMWViMThmOTI4NWFjYjJkMTVhZTk2MTBmNzhkMjAgcHkzaworNzg4NzAgMjZiMTk4MDlkODJlOGYzN2E2MjViMTk0OTQ4ZGU1ZWVjMmQwZjQyNyBsZWdhY3ktdHJ1bmsKKzc4ODcxIDY5YjcxYzMzODk5MjViMTM2NTg4YjAwOTEyMjEzZDI5MDc3ZGM1MzUgcHkzaworNzg4NzIgNDIyNjFjNmNhNTY0MzAxZjJkZWZjYmY4MTA4NTdlZGFjYjNmYjRiZSBweTNrCis3ODg3MyAxYmNiNDY1NDcyYmU1OWE4MzZjYTM2NDRjMmZiNjc2NWUzZjZmMDZjIHB5M2sKKzc4ODc1IGY0OWQyNGI0NDU2ZWM5ZTk0MWEyODUzYzQwMjNmMTAyZDNmZmM1NDQgcHkzaworNzg4NzYgMDZmZGM1ZTBjMmMyNDNjODNjNWJlOWE0NmZjZGNiODkyMmRiYWE1NyBweTNrCis3ODg3NyBjOWRkODIzYzE0NmQxYjZmMjJmZmM4MzFkZThlMGQ2NjQzMTFiMThmIHJlbGVhc2UyNi1tYWludAorNzg4ODAgYWM3NTRmYWViNjNlODhmNWUxMWRkMmVkMDE1ZTA0YmQ1ZjJiZjQ3NiBsZWdhY3ktdHJ1bmsKKzc4ODgxIDgyYTIzMDQ3MTk0YmZkMDU4NmMzYmQ2NjBkZTkxYTUxOWVjZjQ2MmYgcmVsZWFzZTI2LW1haW50Cis3ODg4MiAwN2FkYjA5NDQwZWY4OTY2NTI0OGU1NjU4YTk0MmE5ZTExMWY4ZjhjIHB5M2sKKzc4ODgzIDZhZTA5MGZkOTlmZTNiMTMzMjA3MjRiMzM1OWQ3N2E1NjQ5MWJkMGMgcmVsZWFzZTMxLW1haW50Cis3ODg4NCAyNzNlYjVjMWI5Yjk3MzVhZTYzZjVmOGEwYjAzNmQ4YTNhYWVhMTBmIHB5M2sKKzc4ODg1IDkwMGZjYWNjNjQwMzRhMTc0Y2E5NGM3MTI2ZWM0NWQwYzUzNDU5NDMgcmVsZWFzZTMxLW1haW50Cis3ODg4NiAxZTAxZWY5NzU4OTk5ZjZmY2ZmZjAxNDQ3ZmEwZGI3M2E3NzE0YmRhIGxlZ2FjeS10cnVuaworNzg4ODcgNzZmMDdjY2Q3ZGI1Yzc1ZWVjMmZhNmJiYzkzZGU1NWFiYzU2MWZiMSBsZWdhY3ktdHJ1bmsKKzc4ODg4IDY3MjY0NjM2NDZmYjQwODhlZjMyMzM3NmNmY2Y0NDMyMWY5Zjc1MjMgcHkzaworNzg4ODkgOTgwODA4ZGUzMGM5MWVmMzU5NTI4ZjU3MjQ0MzJiZDdhYjk2ZjA0MiByZWxlYXNlMjYtbWFpbnQKKzc4ODkwIGU0NzQzODZmZjk2ZTg4NTlhOTkyZTM5MmNhMzAyMGVkZDk0OGEzYzAgcmVsZWFzZTMxLW1haW50Cis3ODg5MSBmODA4YjE2Y2NmZDZhZGUzMWFkNTM0Y2Y3YTUwN2Y4ZjAyMGNlZmU5IHB5M2sKKzc4ODkyIGQ2ZjIwNGQ0MDY5NWViZWY2MTNhZDRmZGVkN2YxZDM0ZDZhYTMxZTUgcmVsZWFzZTMxLW1haW50Cis3ODg5MyBjMWZiMDdhNTdjOGQ2NzlhMzI3Yjg3YmU3MTQyOTg2YzI3YzYyZGQyIHB5M2sKKzc4ODk0IGMyMWIzZTMyZWQ3YjhlMmU2YTU0MTQ2ZWI2MTM0NWNjMWE5MGEyN2QgcHkzaworNzg4OTUgNWRjYzM2MTlkNmQxZGE4M2EwOGRkNDAzYmM1ZDM3NjQ5NGM4YmU1MSBsZWdhY3ktdHJ1bmsKKzc4ODk2IDY3MzUzZmI0MDVlYzkyYmUxMDhkNTliMjUyZjdkYzRjMDExMDdiODMgcHkzaworNzg4OTcgMjJjODc3MGY5OTIzOTZiM2NkYTFiZWVjYjQxZGQ5ZmVkODQ2ZThmNCByZWxlYXNlMzEtbWFpbnQKKzc4ODk4IDFlZTI0NTJjZTk0MjY2MTZlNTIyNjAxMzMyNTBlNDFiOWY3MDg5ZTIgbGVnYWN5LXRydW5rCis3ODg5OSBmNDBhODA4NTI0ODAzNWIxNzFiM2Q2YzczMzgwZTJjMzdjOGJjM2MwIHB5M2sKKzc4OTAwIGUxMGQ2MWNhMzY4ZWRmYWRmYzZkYjUwMzNmNGM3ZmRkZGExYWFlZDAgbGVnYWN5LXRydW5rCis3ODkwMSA3N2M1YzkwYmVlZjAyOGQ4Yzk4ZDQzMDlmZjAyYjZjMDM2ZTE3MDRlIHB5M2sKKzc4OTAyIGY2NTk3N2RjZjIxYWNhZDAzZTFlNjRiNDU0NmNlZjQyOGY4OWUyZTQgcHkzaworNzg5MDMgNGZiZjNlNzA4ZmM0MDFiNzE1Zjg5MGUxZWI5YmJmN2M5Y2IzYjdkNyByZWxlYXNlMzEtbWFpbnQKKzc4OTA0IGIzZWU1ZmVkOGRhNDgxMDRmZDc5ZWEwY2Y5ODRmMmZhODBiMDcwOGEgcmVsZWFzZTMxLW1haW50Cis3ODkwNSA4MDI4MzcwOTcxOTE3NjkyNmU4NDJmYjEyYTIyZDQ2MzU3OTcxY2I1IHJlbGVhc2UyNi1tYWludAorNzg5MDYgOTBkYWEwN2E0M2JmZTk0N2JkNWMyNDE3MzVlOTNjN2E4NDVlMTI5ZiByZWxlYXNlMzEtbWFpbnQKKzc4OTA3IDVhMTZiZjZkYTk4OTJmODVkYWNiMTM2NWI2MjNiOGYwOGI2N2RjNWQgcmVsZWFzZTI2LW1haW50Cis3ODkwOCBmMjU1YTQ2YjMxNWFmNjI5NWQ5NTE3NDdkMDU3MjM1NzU0NmM2Nzk4IGxlZ2FjeS10cnVuaworNzg5MTAgZGE5NGYxNjY2ZGExOGQxN2MyYThjNTdiNTZlMDQyODU5Nzc2MWZhZCBsZWdhY3ktdHJ1bmsKKzc4OTExIDU1ZWNkYjc5YzY2MDJkZDZlNGZlZmJmYzA0YmJkOWI2MTlhZGI0ZTUgcHkzaworNzg5MTIgYjFiMjJjNjAyMjJiNDAwMmVhNzBlM2Y3YzBjY2U5NTI4NjE2ZGU1ZSByZWxlYXNlMzEtbWFpbnQKKzc4OTEzIDQ2MDgyM2M2NzVmODkzOGJiMWY1NGFlOWU3NWMzNTgzZDUxN2M1YTAgcmVsZWFzZTI2LW1haW50Cis3ODkxNCA0M2NhNjdiZDcwMGE2OTgxMDNhNjUyYmEyMTUwYzNmY2RlZDNhMzgwIHJlbGVhc2UyNi1tYWludAorNzg5MTUgYWQwMTdkMWI4MDcyZTBmYTg4ZDY3YjYzZWFkYTQzMDYzY2UwZjgwYiBweTNrCis3ODkxNiA1YTZlODk3MDY0ZDZiYjE5MjA4NTkxZDhkNTAzNGEzZTBlMmM2MWRiIHJlbGVhc2UzMS1tYWludAorNzg5MTcgNmQ1YWJmZjdmYzMxMzk4YjFkZmM2ZWJkYzExY2JmZjE3ZTNlZjYxMCBsZWdhY3ktdHJ1bmsKKzc4OTE4IGQxZWRmMjgyNDAwODI1ZjFkMTRiMWM4ZmU3MmFlZWRjY2UzZDRiNTAgcHkzaworNzg5MTkgMjdhYTQ2ZDAyMTRhYmMwMDY0NDEwMGEzOThmMWY1YjcxZDAzNmVjMCBsZWdhY3ktdHJ1bmsKKzc4OTIwIGE3YjU4ZjFlOGFmMDg1ZDg3NDVkYjg3YzZkMWNiNGNhNjE5NGRhNjQgcHkzaworNzg5MjEgYjg3OGEwYWQ0ZDhjNmI0Y2I2NWRhODJjNjVkNzVhOTI5MGMxYjZlNyBsZWdhY3ktdHJ1bmsKKzc4OTIyIDUxZDI2ZjMxYmNlOTU1MmI2MjJjY2Y1ZTBkZWZmNTgyMmU1YzcxZDYgbGVnYWN5LXRydW5rCis3ODkyMyBlMWQ1MWNkMzE1ZDA4NTM0MTZiNmEyZGNkZGJhNWYyNWVjMjQ5N2ZkIHJlbGVhc2UyNi1tYWludAorNzg5MjQgMzJjNWFkMjk2NjNjZGUzNzQyY2FkMTA5YmYwZTBhMmVkMzQ3Yjk4ZSBweTNrCis3ODkyNSAxOWU5NjYwZDlhYTUxMmZlMzQ2YmE0MjRmNTM1NTdmOTE2ODNlYzlkIHJlbGVhc2UzMS1tYWludAorNzg5MjYgZTgwOGZjNTQ4Y2Q2NjVjOWE2MTQyZTUwODI4N2I2YWFjNDI0MTcyOSBsZWdhY3ktdHJ1bmsKKzc4OTI3IDAwMjZlNDQzNjJlNTdkMDRlNTQ4NWI0YmEzZGExYzQ2Y2ZmZmI3MjUgcHkzaworNzg5MjkgNjc3NGU4YzZjMzlmMzg0Y2U1N2I4Zjg1MGRkYjY1ZGUyNzcxMTZjNSBweTNrCis3ODkzMCA4NTkyOTZhNzA5MmYwY2JiNmYxYzEyYmUxMmRjYzNlZmFjY2FkNGZlIHB5M2sKKzc4OTMxIGUwYTE3NzBkZjUyNzg2MTJlZGVjNDMzYjQxMTVlYjg4YWUxMTY0ODEgcmVsZWFzZTI2LW1haW50Cis3ODkzMiA3MjhlZjAwNzJkYWYyMmQ4OWYzYzgzMThmZmI4ZDg0YmZjMmQ4M2NkIGxlZ2FjeS10cnVuaworNzg5MzMgMjkwOWE0Y2IxYmE3MmYxM2NkNTAzOTg0Mzc0ZTFhNzA5NDEwMjU4MCBweTNrCis3ODkzNCBhZGMzOTBlNjY4OTA0MDFkNzYxZjE3NzRmYzA4YjU2NzdkZWFiOTVjIGxlZ2FjeS10cnVuaworNzg5MzUgY2MxMzIxMjEyZTczNDYwY2JiMWU1ZTlkOTA3MDBmOWY5NjFhMzk4MCByZWxlYXNlMjYtbWFpbnQKKzc4OTM2IGQ2ZTI3ZmEyMmY0MmEyNjZjNjZlZWI2MzhkMDU2Y2MwMmVhMWY4MWIgcmVsZWFzZTI2LW1haW50Cis3ODkzNyA1ZmU1YTI2ZTMxNjllODljZGE5NTgwYmJmODlmMzdmZjk5YWQ2NzU4IGxlZ2FjeS10cnVuaworNzg5MzggZDM5MDVhOWY0MGY0MDU5ZDJkNWI5N2IyNTc3ZDUxMmM3ZmZlYmMzNyBweTNrCis3ODkzOSAwYjQ1N2YxNDk3NjFkYjZhYWY3MGMyOGRlMjUwNWIwZWYyNGU1MzBmIGxlZ2FjeS10cnVuaworNzg5NDAgMWE4MTBjZTEzZGJkN2M0M2JjN2I3MzIzMzc5Y2M0NWUxYjc1MjNmOSBweTNrCis3ODk0MSA5Njk2OTMyYWQ4Mjc1ZTczZmE5N2M1MDgwYTZlYWIxMWU2Y2FlM2E4IHB5M2sKKzc4OTQyIDdhMThjMjc2Mjg4NjE2NTQzMDlhZGRhNDQzYWFjOGIyNzYzODdiZTUgcHkzaworNzg5NDMgZDMwZWI0MjJjNTY0YmY2MWEwYzNkODBkMDgyMjFmOWFhMjA0MjE2MCBweTNrCis3ODk0NCA0NjFiODliOTU1NWQwY2E5MzJjNTlmNDIxM2QxZTI4NTM5OGIyMjM5IGxlZ2FjeS10cnVuaworNzg5NDUgZjA5N2YyYmEyMzI5MzcyNzMzM2E2ZmI5OGU1YWM1YzNjYzE0ZTYwYyBweTNrCis3ODk0NiA3Njg3MjJiMmFlMGE1OTg0MDc5MGRlMTUwMjVkZDU3N2JhMjMzYmM3IHB5M2sKKzc4OTQ3IDM3MmQxZGU4NmRlOWY4NjMwZGU2ODg2Yzk3OTJlNjAzOGJjNTU5OGMgcHkzaworNzg5NDggM2Q2ODA5NDlmNzU1ZDg2YmE5YWU3MTIzNGI1MzE4NTAyNDBiN2FhNiBweTNrCis3ODk0OSBmMTI3MGUwMGY1ODc4NzZjM2NhZjFhZWE1Njk3ZjBjNDQzMDQyODFiIGxlZ2FjeS10cnVuaworNzg5NTAgZGY4ZjgxZGY4NTk1Y2U1Zjk0ZDRiNTNiNGQ5MWY2ODEyOWY2NDU0NiBweTNrCis3ODk1MSAzMDhjZmY3ZGY2NGYxNzRlZGU4NjlhMzZhYmI5MGUwZjI0MzU3OTc5IHJlbGVhc2UzMS1tYWludAorNzg5NTIgNDAzZDBhMjdiZDU2ZWU1NTM2NGM3Y2ZmYzRhYjgwZjBiNDA5MzllYSBsZWdhY3ktdHJ1bmsKKzc4OTU0IGU3ZjExZjQ0ZDUxNDU1ZjQyY2YyZTg3OGRkYzE0ZDhkNTM5NjljYjQgbGVnYWN5LXRydW5rCis3ODk1NSA3N2M3MWYyNThkZjdjYTc1Zjg1YjQ5ODdiNTM1OTc3MjYzODRhNWZmIHB5M2sKKzc4OTU2IDViNzU0ZTg4Mjg1N2NmZDFiMzM0NWY0MzEyZGQ4ODI1OWEzY2E4ZTIgcHkzaworNzg5NTcgYjkzY2ZhZmNkY2FkN2MzM2NiOTUzNjg4ZDBlMTExNTZhZDMwZWJiMSBweTNrCis3ODk1OCA5Y2Y3MDJjOTFhOWU4YWVmODQ5M2YzYTVmNTBmNzQ1YjY4NWZiMGJjIHB5M2sKKzc4OTU5IGU3YjVmYzg2NDZhYmZhOTAxZTcyYTMzYWMzOThhZjllZDUyZWQ3NjkgcHkzaworNzg5NjAgYzhjY2I0ZTBjNmZlYTdkM2QwMzNkMmU3YmQ0NjU5ODhmMmU1ZGY0NiBweTNrCis3ODk2MSBjNDVmMjE3MDVlY2I3OWUzNDFiZmI0YzM5M2YxYzU3NTIzYjUzNmIyIHB5M2sKKzc4OTYyIDhhOTA5ZTZkMmNhZmE3OTNlZmU0N2JiNDE2MjM1NTAwMzdhM2FhNjcgbGVnYWN5LXRydW5rCis3ODk2MyBjMTZlMDc1NWZjZDdkMDc4ZDQ2NTE0OTQ2NTY2YjBiOTQyZTFjOTYxIHB5M2sKKzc4OTY0IGI1NzBjNWI5YjJlZjM1NDg0MzY3ZTU2MTQ1MzAxOTA5OWRiNGJhYzMgbGVnYWN5LXRydW5rCis3ODk2NSA1OWUyMjNhMDU2ODBmYTI5MWJmZDMzZTMxMzFjNjc0MTk3NWEwMjEzIHB5M2sKKzc4OTY2IGQzNjBmMzdhNGI1OTVmYjlhMzQ1MzA1NzVkMWZlNDVlOTZkNzYyODggbGVnYWN5LXRydW5rCis3ODk2NyA4ZjE5OTNiODY2Zjc5MDIxNDgwMWMwY2MxODFkNGIzMGFiN2I4YzI4IHB5M2sKKzc4OTY4IGVlZmQ1MjFmMTljZTA1ZjM5Zjc0YjAyYzcxOTJiNmJmMmE4MGNiMGMgbGVnYWN5LXRydW5rCis3ODk2OSBiYjA2YWE5MTgzODIxZDQ1MjI3YjM4MmY5NzI4MGFlMGE5NmIwMmQzIGxlZ2FjeS10cnVuaworNzg5NzAgMDhjNTQ3M2JlZGNjMzkzZWZlNTRmMmVjYTUxZTExYThhYzExMTk4ZiBsZWdhY3ktdHJ1bmsKKzc4OTcxIGUxZGUwODBjNDU1NmQzOTUwMDA0YjY0MzQ1OGJhYTRjMDk4OWFlYTEgbGVnYWN5LXRydW5rCis3ODk3MiBiNzRmMWJiODhlNjA5NGYzMzNiODJjNzhjNmQ1YTZiZGEyMmIxZDQzIGxlZ2FjeS10cnVuaworNzg5NzMgYWRiNWU5MjhiZGUyMGY3MmU2NTYxZTBlMGZmZTBiY2QyZmU5NzU1YSBweTNrCis3ODk3NCAzOGYyZjUyNjJiMjAzYWQ1NmYxMDk4MGQ2YTc1YjRhYjA4NTBhZTY0IGxlZ2FjeS10cnVuaworNzg5NzUgMzdhZDQwYTI4ZDNiZjQwYjljNzAyMGJlNGRlOTQ5NjFiYWFhOGUyMiBweTNrCis3ODk3NiA5NWYyMWIyYzIxNmMwOGZkZDk2YjFmYjY1MDliMGRjYjFkODY0MGVlIGxlZ2FjeS10cnVuaworNzg5NzcgOGUzOGI3YmVmNzAwMDQyZmY2Y2UzZmEwYWY5NThiNTJlMDE4ZWM0MSBweTNrCis3ODk3OCBkYjM3OWE5MGI0NmU0MDQwMmQ0NTBiMDRmYjBkYWNiNmZjNjkwNTYxIHB5M2sKKzc4OTc5IDczZTQyYzBmNWM5OWU1MjFmZGJmMWU4MDk5YzcwZmMzZmNiOTAyMTggbGVnYWN5LXRydW5rCis3ODk4MCBiODkwMGExZDk4MzUzMDg4YzUxMGFiMTYxMjY1ZGFmNDRmNTc0ZjkzIHB5M2sKKzc4OTgxIGEyZGJhNmZlM2ZiZTVhODhjYWEyMjQ2NGFmNTM2NzdjMmIzMTAwNjggcmVsZWFzZTMxLW1haW50Cis3ODk4MiA4YWE1NTMwZTg0MDczZDg4ZmJhZWJkMzE3N2U4MjFhZWNjNzgzOTcyIGxlZ2FjeS10cnVuaworNzg5ODMgZWViOWJmMTUyNWJhYzhhYWRkYzM1MDBjY2U0NDdjODhhMTg4Mjk2YSBsZWdhY3ktdHJ1bmsKKzc4OTg1IGMxOWI0YmZiODA2YWE4YzE1MTVkODM3ZjFkOWM0ODFkMTg1MWNjMTIgbGVnYWN5LXRydW5rCis3ODk4NiBjNGRkMzBiNWQwN2VhY2ZiM2VhZWQ0NDdlODVhOWUxMTVjNjc3ZGNmIGxlZ2FjeS10cnVuaworNzg5ODcgNTk5MzExNzljNWUyYzU4MjNkMTYyZDI3NjBiN2JjMjg1OGE3ZDRhNyBweTNrCis3ODk4OCA3OTg0NWUzZDVjYWMyMWU1ZWEzNjZkOGRjNmExMTQ4YmNjZmQzZTJiIGxlZ2FjeS10cnVuaworNzg5ODkgOWZmYzhmMDUxNWNkZWM2MDg0ZmU1ZWUyYTgxZDM3NWYwNjhkYTY4MSBweTNrCis3ODk5MCA5MjNjODczOWNhODYxNzRmZWY5MjQ4ZDY1MGU4NDAxNzMyMmE3YjYyIHJlbGVhc2UzMS1tYWludAorNzg5OTEgODUyNzk5YmIzZmIxM2NjMWJhNzViNDgxNTEzNzVmNzEzNjMxNTBiNSBweTNrCis3ODk5MiA0MjU3MmUzNDcxMDhhMmQxZGQ3NTM5NWE2NzA2MzYyOGI0N2Y2Y2Q5IHB5M2sKKzc4OTkzIGI0NTMzYjU4MGZjOWVjMWEzZGE1NTVmNWFkODM4ZDY0OGYxM2Y3MWUgcHkzaworNzg5OTQgNzQ1MTQwMDBmODM3NWQ2NDc5OTllNTZkNjMwMjNmZmUyOGY5ZWU1MSBweTNrCis3ODk5NSA2NjFjYTBiMDVhMzFlNzU1YmMzMWViMGJhMjI3NTQxNjkyNGZhZjUzIHB5M2staml0Cis3ODk5NiBiZjRhNGFjZWZiMmY4NzA4YjM4OTI2NzY5NGQ3OWZiNDFjMGY1ZTNkIGxlZ2FjeS10cnVuaworNzg5OTcgYzk2NmU2ZmQ2MTc4YjEzZGQ0MzdlNmM1OGRiZWI2YzU4ZWM5OGU0NCBweTNrCis3ODk5OCA5NWIyNjljODY4ZGFjOTQ1YjFhY2RkZWE2YjQ0M2VlZTcyNGFmZDI0IHB5M2staml0Cis3OTAwOSBhYTYzMjk0M2I4YmRkYWQxMTJlYTcwYTBlNWViNDk2YTU2OTRiZTI1IHB5M2sKKzc5MDEwIDk3YjY2MmIxMGZmODM5MGU0MTkxNzRjY2FhYmFlNjQ2ZTE5YmU3OGUgcHkzay1qaXQKKzc5MDExIDJlMTZjOTYzNDAxZGUwM2IwNjllYzc5M2NlMDJhMjFhNzI2NjdiNGIgcHkzay1qaXQKKzc5MDEyIGJjNjViODZmYWU5NDYyZTdkOGE2YmU4ZjkzZDExYmQ2ZWRjN2YwZDUgcHkzay1qaXQKKzc5MDEzIDE5MGVhZGFlYWJjNTJhZDdkZmQyNTMwZDc1NjZkMWU5YTYzN2I1MmUgbGVnYWN5LXRydW5rCis3OTAxNCAwZjA4MDk2MWVjZWYxMzFiMDRmMjM4MmY0OWE2OGEwMGJiNmI4ZjcyIHB5M2sKKzc5MDE1IDNiZTNhYzAxOWJkYjA0ZTQzOTBkMTk2MTc4Yjc4OGQxYWQ1ZDM3MmUgcHkzay1qaXQKKzc5MDE2IDIwNjRiZjYyYTM5Zjc4NjhiM2MzNzQwYTk0ZDA1MjNhZjEyOTVmMjMgbGVnYWN5LXRydW5rCis3OTAxNyBiYWM3MmYxMWE5OGM1NmMzNjA3OGUyZWRlMzJiMDUxYTU4MDg3ZTUzIHB5M2sKKzc5MDE4IDMwZjI4MzAzOWUwZTk5YTc1N2QwODAzMDNlMDI4OGIxYWM0NWExNWMgbGVnYWN5LXRydW5rCis3OTAxOSA0NDA3YWM0YzYzNjBiZTQxZjBiZWFlNzkwM2NiNDk2ZjJiZTk1MTBjIHB5M2sKKzc5MDIwIDU4ZTNiYzIxYzJkZDcwMWViNDJhNTc1YzdlMGFiMDU2MWZkMzkzMGYgcHkzaworNzkwMjEgNzA2NTU5ZDNhYzU5MDhlY2FhN2Q0NzBkODU2MTY2NWRlMWNkOWJhZiBweTNrLWppdAorNzkwMjIgNjljMGQ1ZWEyZTFlM2MzYjQ3MGU4ZTQ2ZTNkNzhmMDNmODIzYTZjMyBweTNrCis3OTAyMyA1Yjg4OGY1OTBmZTI0Y2IyMzRlMTI2ZmM0Y2ZiZGNhMTI3Y2M3YmYxIGxlZ2FjeS10cnVuaworNzkwMjQgNTgyNzgwZWRkMGU4OGEzYmM2NTMzNjY5ZTA1MGU1NzA0NmUzMmQ3YyBsZWdhY3ktdHJ1bmsKKzc5MDI1IDgwMzhhZjFlMjA2NTVlYjYzM2NlNjhiNDE5MGNhYWM2ZjQxNDhkY2UgcHkzaworNzkwMjYgOGE0NjkzZDUxN2ZlY2YxYTNjODQ5MTU3MDc3MjQwNjM2OTBiZTk5ZCBsZWdhY3ktdHJ1bmsKKzc5MDI3IDdmMTYyYTMwOTQ5Nzg1ZDhiZTEwMTkzZDg2Mzg0ZDdkM2U2ZDBkOWIgbGVnYWN5LXRydW5rCis3OTAyOCAzNDY1ODJmODVmYWY4ODQ3ZjViMmY1YjFkOTFhODJlNWZkNjgzNTRlIHB5M2staml0Cis3OTAyOSAxMGI3NjA2YTkzZWQwMzkxYTIzMzU1ZWMzNDAzZjhlZGZjM2QxZGVhIHB5M2staml0Cis3OTAzMCA5YjQ2MjU3MDAyNTFiNzQwMDZjZjI0NWFiY2RmNmQwMmQ4OGNlYjFmIGxlZ2FjeS10cnVuaworNzkwMzEgN2RmM2UxM2QzZTUwOWUwZjJiMDk5OGNjN2FjOTliZDY3MTY3Y2NhNyBsZWdhY3ktdHJ1bmsKKzc5MDMyIDc0MDliNWE3YzgxYTZmMDYyZmU3MzY3NDgxZDBmNTYxODMwYTdkZWEgbGVnYWN5LXRydW5rCis3OTAzMyA4MGRjNGQxMzFkODVkZDMzMTIwZjllYWFlZDgzOWY1MWFiNjhkMjgzIHB5M2sKKzc5MDM0IGI4NzkyMDljMjAyZmQzMzM4ODEwMmE0ZTM0OTg2YTUyNWRmNmQ0YTEgbGVnYWN5LXRydW5rCis3OTAzNSA1MjQ3OWUwNDU0ZTkwY2ZjZWM5M2UzMzJhMjk0NGIwNjZlYjNmMTk4IHB5M2sKKzc5MDM2IDBhYzE5MTkwYTcxMGZhNzczNGNkZmM2ZjRjM2Q2M2I0ZjM3ZmIxNDYgcHkzaworNzkwMzcgZTNiZTFmMWFkNjFlZTExNTJlZTIzZWI5ZmNmNjQxMmY4OTNmM2E4YSBweTNrLWppdAorNzkwMzggNTMxZDMwMjNiNDhiN2NlZDAzNDhmZDEwNjNiZTgyMDJkODkyMGFlYyBsZWdhY3ktdHJ1bmsKKzc5MDM5IDQzNWZhMjE1ZDMzZjA4YTY4YjY5ZDg1ZDMwMWYyNzEwMmQwM2YyYjYgbGVnYWN5LXRydW5rCis3OTA0MCBkNjJjYTFlYWNjYjlkYWJmN2NkMTU0YzU3ZDM2OWE3NjE2NmU4ODE2IHB5M2sKKzc5MDQxIGVhMjc4ZDljMGIyYWEzM2YzNDg4MGFjODJkZjFiMjJiYjQ5YzFjNmQgcHkzaworNzkwNDIgYjFhZTRmODM3N2ZiNmUzMWU1MGRhNTRhZjJlYzRjMTk0NjNjZDk1ZSBweTNrLWppdAorNzkwNDMgZjcyMjBjYTExMzYzYzljN2NhMzAzOGE1ODZiNzcyMTQ1YjE3ZGIzYiBweTNrLWppdAorNzkwNDQgODU1NWE0Y2I3YzRjYjYzNjg0ZjQ0OTRkYmRkZDZlOGQ5YjM2MTYzOCBsZWdhY3ktdHJ1bmsKKzc5MDQ1IDE1YmRiOTRjODA1NWNkZTlhMDFmYjc3MDJhMjYzNTZhN2Y2NGQ4MGUgcHkzaworNzkwNDYgYmZlOWVlMDJmNGMwN2UxY2I3MTZlMDJkNzhhMzAwN2YyYmE1YWM0OSBweTNrLWppdAorNzkwNDcgYTFiNmE1NGUyYjZhNTFjNTM1N2Q0MzAyMWY5Y2JhZTNhMWJjZTQ3NyBsZWdhY3ktdHJ1bmsKKzc5MDQ4IGQ5ZWM0YzhjZTY5NTQyYzVmYTYzZWVkMDBhYTc1N2E5ZWQzOGYwZmMgcHkzaworNzkwNDkgNzZmOWUzYjZjNTg0ZTQ4YzFkOGM5ZjQyMTA5YWE2MzRhYjM3NTU0ZiBsZWdhY3ktdHJ1bmsKKzc5MDUwIDQ4NWZlMjBkYWIxMjFjYjQ2OTE0ZGYzYWZhNWE1MzAzYjQ5NjE3NGIgcHkzaworNzkwNTEgNDI5NDYyZDRjYTBjMjAwYzVkMjIzYmFiMTc2NmUyOTA0ZDk3Y2Y3OSBsZWdhY3ktdHJ1bmsKKzc5MDUyIDQ2MTgzYmY0ZjE0MzY5MDVhOTViOTFhODhmMGY5Yjk4M2IzODI0N2MgcHkzaworNzkwNTMgNDY1Njg0NmE4OWIyNjc1YTI3NTNjZGU3MWRiMzE0MGM1ODY3YWNmOCByZWxlYXNlMzEtbWFpbnQKKzc5MDU0IDJjZmE0NDk3MTg4ZmVmNDU1MGI0ZDVhYzBjY2U3YmEzZTY1YWM3NGYgcmVsZWFzZTMxLW1haW50Cis3OTA1NSBkMWRiZTVkZjE3OTFmMjkxODZjNzU4MTc4ZmE3MGNlM2I4Y2RlNGQ1IGxlZ2FjeS10cnVuaworNzkwNTYgODcxMjVkNzY0N2Q2ODViMTNhZjc2Njg1YjNjN2Q0YWNjMjFlNmYxZiBsZWdhY3ktdHJ1bmsKKzc5MDU3IGQ3YjllMjk0MWUxNDVkN2RkZGJhMTM0OGJlYmM3MDMxNjAyMjA2MmIgcHkzaworNzkwNTggMjVkZTcxNjdhMDU1OGY5YTM2MDAyMzg3NjQwMzk4MzYwNDFmNjA0MSByZWxlYXNlMzEtbWFpbnQKKzc5MDU5IDM0NGNiNmE0ZWY3ZGFkN2JlNDcxMzg1YzVkOWYzMTViMzFlNzMwMWUgbGVnYWN5LXRydW5rCis3OTA2MCAyMmY1ODlhOGUzYWI5OGU2YWFhZDY2M2Y1MTBmZTZiMDRkMTgxZTdmIGxlZ2FjeS10cnVuaworNzkwNjEgM2Y0YzdjNGVlZjYyYWY4MjNiMjJjYjZhM2E5Y2U1Y2JjMGY3NzQ1MSBweTNrCis3OTA2MiAwMzg1MmViMDhkYjE2MTQ2ODhjYTZiNzE1MGE2MTU4YTI4ZTYyZDhlIHB5M2sKKzc5MDYzIDk5YWY0YjQ0ZTdlNDkwMzkwODE3YTU5N2E1NDI1NDZkNzQ5ZTY5OGUgcmVsZWFzZTI2LW1haW50Cis3OTA2NCAxNmFhYjAyZWQ5OWM2N2VjMjYyYjk3YTI5OGYzMjdhMjIyYzU5MmYzIHJlbGVhc2UyNi1tYWludAorNzkwNjUgYTVkYjBkZjMyMzgyMDk0M2Q2OTRhNjBkOTIzNWZiMTlkNTZkNDFlZSBweTNrCis3OTA2NiA3MmE4MDlkMTY1ZjQzNmNjOTA4ZGIxN2Q5OWY5ZmZhMGEzNmRlZWEwIHB5M2sKKzc5MDY3IDE1Yjg3ZWExNDEzZDZlODAyMGQzY2M1ZDYwNzZkMzRiMmU2YjNhNTEgcHkzaworNzkwNjggZTE1YThhNDc2NDk0YmI5NDJhZDhkNDJhMzFmNTFiMTEzNzg2MzA0MyBweTNrCis3OTA2OSA0ZjA5ZDViMTQ3NWZmYWMzNTY2MDMxZjA2N2Q3ODdkZmNhNmEyYWI4IHB5M2sKKzc5MDcwIDM3YjFiOTBkZTVjMTU1ZDkzYjNhMDI4NWUyM2ZmMTE0N2JlOWM0YzAgbGVnYWN5LXRydW5rCis3OTA3MSBlZWE3MmI4MWEyM2M2NWNjYmY2MDViODZkYTlkZGMwMmY0MWVhNDE1IHB5M2sKKzc5MDcyIDk2ZWZlYmRhNGVhMmM5NmQzMWViNjY4NWE5ZGVjZDZhMWJhNjdjMzEgcHkzay1qaXQKKzc5MDczIGZiYzNmMTY5MWFkODlkNWM0ODM4YTI2NTNmZGNhOTE2ZjZhZjJmZTAgbGVnYWN5LXRydW5rCis3OTA3NCAwYjFlNTIyODA3ZjJjN2IxZGQxNzFhNzA4ZmYxM2FjMzIxMTA5YjRmIHB5M2sKKzc5MDc1IDkxMDM4NTViODI2YmQ0Nzc3MjQ0OTA2NjY0MDczZDk4OTllMjQ1YWYgcHkzaworNzkwNzYgYjhiNDljODIzZmU0NDViZThkOGJlMjJhMzVhZjE3MzIwOThjY2I1ZiByZWxlYXNlMzEtbWFpbnQKKzc5MDc4IGEwYTY3YzJmYjdmZjZlNDAzOTkwZTBhOWIyMWExZTRkYTA4ODc1YTIgbGVnYWN5LXRydW5rCis3OTA3OSA4ZmExMjg0Y2UwMGU1OTAwMjdhNDRlNWUyZjQ2MDgxZGE0MTJkYjc1IHB5M2staml0Cis3OTA4MCBkZDEyZjc4OGE1NDRkZjY2ZjA5MTkwODdmNzFlNWQzNjc5OWQ5ZmU1IHB5M2sKKzc5MDgxIDQ3MWQwN2QyYTIzZjVlZjdlZDI4YmFhOTI0OTZlMzVmZjgwYzM4ODQgcHkzay1qaXQKKzc5MDgyIGEyNDFlNDE1ODg4MjNlNzExYmYxZDM5NzlmYTJmNDZiZmZkNWMwNzkgbGVnYWN5LXRydW5rCis3OTA4MyBkOTQ0MTE0MDMwOTNiYjBiYzdkODI5ZTY5ZTczNzU0MTg3ZDI0NmNkIHB5M2sKKzc5MDg0IDc3Zjg1M2ZlM2NmMjYxNDNkZWE1OTgyM2U4ZmZmYTUwNWQxNDZlZTUgbGVnYWN5LXRydW5rCis3OTA4NiA1MGUwNmI2YWI5NTY1ZGY2N2EyZWViMGYyYTczNWVhY2Q3NTE2OTNhIGxlZ2FjeS10cnVuaworNzkwODcgZDFjM2FiYzhlMGMyOWM2MGM3NmU2NzQ5YjgyZDQxOWY5NmJlODU3NCBweTNrCis3OTA4OCA3OTFiYTIwMWJhYTk3NzZiZmMyOGMwMDI0MjMxMDJlNTc2NTBhNTM4IHB5M2sKKzc5MDkyIDQyODVlYTMzYTVkZmU1MjFmYmMwMWY2YWExNzE0N2EwMTEwMGIwNWEgcHkzaworNzkwOTMgYjlmZmE5ZmQxMDFiNWI5YzQ5YzAzODJjNjUyNDE0YmI5ZTNhYThmMiBweTNrCis3OTA5NCA4YTI4YmU0NWMyNDIzY2JjMTA1MDE0ZTFiMzhjYTljNThkNjJmNjYyIHB5M2sKKzc5MDk1IDVmYmQ5YzYzODljNzUzYWUyYzEzMDM5NTlmMDkyYjZhYzU3OGIwZDkgcHkzaworNzkwOTYgNGIzNTZjMWIyNWY2NmQ5MDliYWMzMmMwZDE3MDNjODFjYjllNmU2MyBsZWdhY3ktdHJ1bmsKKzc5MDk3IDAwZGFhOGI3MzZjYzdmYzViODMxYWNmYmU4ZmNhZTlmZTQ0ZTZlNTUgcHkzaworNzkwOTggYjYzODdmNDNjZGRiZDljM2NkZGFiOGEwZmU0NzliNGNjZjAwMTQ5ZiBsZWdhY3ktdHJ1bmsKKzc5MDk5IDkxNDMxYjA1ODQ3OGVjMTg1ODY3Yzc1Yzg4MDZkMWU3MDVhYWMyMTggcHkzaworNzkxMDAgMDdjNzY2NGYyMWExODk5MTk2NTE0Yzg1MTNjMDM3YzBkNjI1Y2Y3NyBsZWdhY3ktdHJ1bmsKKzc5MTAxIDI1MTJjMmFkNWRlNzA1YmI2MTRhZGQyZmU2MDIyODA2MDU2YWJkNDIgbGVnYWN5LXRydW5rCis3OTEwMiA0NTg3ZTFmNzRlZDg1ZDEyOGU1MjhlNzdkMzFjNjNhNDgwYjVkMzc2IHB5M2sKKzc5MTAzIDJiMWIwMzc5NzE4YjQ5ZDc3MmFhZDE2MzVjN2E2NGI5NDhiMWQ3MGQgcHkzaworNzkxMDQgNjMwY2U2MmM5NDZlZjQ3YWM0NDJmZWZjYmQwYTY3M2YwZTUxMTFmNiBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5MTA1IDgzYTc2ODlmMWJiNWQzMzJhZGE5NTQzYmRhZjU1MGNmZTU0MDI2OGQgbGVnYWN5LXRydW5rCis3OTEwNiA5OTZhMzE5MjBkNDhjMDkwNzgxYTU3MmUwZTk0MWUwNjkzZWI5ODcxIGxlZ2FjeS10cnVuaworNzkxMDcgMThmOTRlMjNjYTgwYTY3NDdlNTlhZmQzMzA1ZTk1YjZkYzQ2MjcxMSBweTNrCis3OTEwOCAzZjkwNTM1OThjYTBkNTdiNzNmZTkxY2ZkNDAzNGZjMzhhMjEwMWVhIHB5M2sKKzc5MTA5IGE4ZTM5Nzc5ZmVkZjI0ZTdiNjA2MTQ4ZjU5MDhmNmYzNjA3NTM3MmQgcHkzaworNzkxMTAgMmQ2ODNiOGUzZjUwMmY4NjBkMTkwOWYzYzY0YTBiMWM5MzQ2OWZjZCBweTNrCis3OTExMSA0NzQxZjZkZDdjNjlhMGIyOTQxMTAzYmRjNTc2NjZhMTQ5OGIyNzY5IHB5M2sKKzc5MTEyIDIyNDU5MWJhNmExODRmOTRkYzIxZGVhYjVmZjc0NTViYTIxMDY1ZjMgcHkzaworNzkxMTMgMWUwZDE4ZTlmOGMxYmM4OWIyNjg3YzRhOWNkODIyY2I5YmI3N2YyYyBweTNrCis3OTExNCAwZjAwZGE2OTA0YTY1NzgxNTFhZWUyMDJhZTlhZmJkZWRiYTdkNWNlIHB5M2staml0Cis3OTExNSA5YWIwN2FiZTIzMGRiOThiMThkNDZmZTJhZTBhZTI4ZDdmOTRiNmE0IGJyYW5jaF9saWJmZmktM18wXzEwLXdpbgorNzkxMTYgZTQzMjMzZDgwMDY0ZjU4M2RjYmE4MWY1ZTk3NmYxMjEyNGMyOWY3YiBweTNrCis3OTExNyAwMmUyMTU3NmRhMDM3NzM5MGI0YmE5ZDBlYzUyZTgxYTI1ZDBiZDdlIHJlbGVhc2UzMS1tYWludAorNzkxMTggYzNjN2EzYmU0MGIzNTY2ZTMxYjEyOTVhZGI0YjNmMDJmMDE1NWVlNyBweTNrLWppdAorNzkxMTkgYWNjM2UzNTgzZmFjOTg4YTI0MmY5ODVkNTU0NWQ4NjFhM2QyZTBiYyBweTNrCis3OTEyMCA5ZmYxMDM1ZjYyMzY1ZWJmMGQ4ZWM1NjQ3MzMyZWZmMzU4NjhkYjQ1IHJlbGVhc2UzMS1tYWludAorNzkxMjEgM2QzOGMwMDMyY2VhYTk1ZmJkZmFhOTM5ZmE4MzAxMTUzNGNmMmQyNyByZWxlYXNlMzEtbWFpbnQKKzc5MTIyIGYwZWZhYWIwNDM4MTlhYjVmZjdkMDFmNmZiZDQwMzY2N2VjNWY4YzIgcmVsZWFzZTI2LW1haW50Cis3OTEyMyBmZTQxMTU2OTJmNzZjMTA2Yzg5YjZhMjMzY2E3NDdlY2VlMWYyZGYzIGxlZ2FjeS10cnVuaworNzkxMjQgOWFjYjdjMTU2MDc1ODE5N2VmNTJlOGQxZmI1OWVjMDhmZThkMWZkNiBweTNrCis3OTEyNSBhNWY3OTZmYjYxYTEwMjY0ZGFjMmZiMjJkZTZjNmQ4ZGM1MDk0MDAwIGxlZ2FjeS10cnVuaworNzkxMjYgNzA2OTU3ZDZlY2RmZjUwYTc4OWIzMGU4YjI5ODBhN2UwYjRhYzgyNSBweTNrCis3OTEyNyAxM2ZmODViMTBkYjBlNTczNDBlNzdjOTk0ZWFhOTlhZTdjNTgzZmUzIGxlZ2FjeS10cnVuaworNzkxMjggNzRiYjBmNjJiMzJlN2M3MmU2YjBmY2EwODhlNTMyYTFmYjQ4Njc3ZiBweTNrCis3OTEyOSAxMDljNGU2MmVjMjM1NzcyZjNkYWZhNGZjMjQyN2MyNDU3YjZkNzFjIHJlbGVhc2UyNi1tYWludAorNzkxMzAgNWE1NWEzMjYxMTY0NGRhOWNjYWQ0M2FhNjMzODE5ZmQ1MGIzNjI1MiByZWxlYXNlMjYtbWFpbnQKKzc5MTMxIDBlM2MxMGJjZGJhNDFkMjdiMjNkZmM5OWExYTk5NmI3YjE3MTJhNTggcmVsZWFzZTI2LW1haW50Cis3OTEzMiBhNjgyYjcwODdhY2JiM2Y5ZmU1MzhlZDg5NWI3ZGFmYmY4NmFhNjY4IGxlZ2FjeS10cnVuaworNzkxMzYgMTgwMzc0YmYyZDUyOWRmMzQ1NDQ4ZmJiOTA2ZTBkNmY5YWEwMDBiOCBweTNrCis3OTEzOCAzN2M5YWI3ZDQ4ZjFmNDc0ZmJhOWJmZjFlM2NkNjkxMGU4MDQ3ZjQyIGxlZ2FjeS10cnVuaworNzkxMzkgNjY1MWVmYjc1ZDllYTJhOWI2ZmY1N2YzYWNkYzhhZWJkODdlMmQ5ZCBsZWdhY3ktdHJ1bmsKKzc5MTQwIGUwNzZlNTU4MzRkOWYyMTEzMmFhZmU2OTZlNTE3NWZhM2EyOGM5NWIgcHkzaworNzkxNDEgZTUyM2JjMWMzMDM0NDQ1ZmM4YmY1N2Y5YzI5NTBjMTIxZDI1ODViYyBweTNrCis3OTE0MiBlODY3MjAwM2FlODRmZjEyYTU4ODRmYjEyZmNmYWZlOTU5YTcxNTc3IHJlbGVhc2UyNi1tYWludAorNzkxNDMgODVjYmU0NGIzOTI1ZjgzMmFkYTA3MDM5NmE5MTY2ZjYwNzAyMTE5OCBweTNrCis3OTE0NCA2MzU4NjU5MmEzYTA2OTU0ZTA5NjA4ZTU3N2Y3ZGFjYjdmOTE4NTM1IHB5M2sKKzc5MTQ1IGE2MTJjOGI2MWI0YWE4NGE3ZjhlZjM0MGJhOGE1M2NjNTg1NTIyMzQgcHkzaworNzkxNDYgZjc3Zjg1MDFkYTdmYWI5NDQ0OTc0YTFkZjUxOWZkNjg3OTdiYTBhYyByZWxlYXNlMzEtbWFpbnQKKzc5MTQ3IDk2MGVmYTMyN2M1ZDljMThkZjk5NTQzN2IwYWM1NTBjYjg5YzlmODUgcmVsZWFzZTMxLW1haW50Cis3OTE0OCA3YzkyNjgxNDY5ZjdiYjQ1NTMxYTMxZDU1ODk2ZGQxMzFjYmM3YzdiIHJlbGVhc2UzMS1tYWludAorNzkxNDkgMzUyZDYxYTY5ZjU5NWJhNDg5ZTllN2UwYjRlYThkNjQyN2FhMjM5NyBweTNrCis3OTE1MCBlZGFkOTQ4YjRkNjZmYWIzMWIwMjM0YTQxODEyYzM5NDRlMDZiMGY5IHB5M2sKKzc5MTUxIDU1NGUwZjQzNWQwOGFiYjcwNDE1ZmFiZTc1ZTE4MjY4ZTlhNjFmZGMgcHkzaworNzkxNTIgNjIyM2MzZmQ2MWYwOWQ3MzBmYjgwYjA2ZDM1NmY3ZTgxNDMwOWY0YyBweTNrCis3OTE1MyA4YTkyMGE4OTA5YTA4YmUzOTBjNDI4MjcwNTg5YzJhZWU1MjY0YmFlIHB5M2sKKzc5MTU0IGFlOWUxMzc0MTFmMWYzOGYyNzI0NTU0ZTE5ZjVhYmI4MjcyNjI3ZWUgcHkzaworNzkxNTUgZDg3MDBiNGYxYjlmNTE1MjUwNmM2ZGFlN2EzNTE1NWJmOTRhZmJlOCBweTNrCis3OTE1NiA0ZjcxOWJlN2M4NzU4NWY1YjE1NzgwM2ZkYjAwMDRkMGVmMGRlYzU1IGxlZ2FjeS10cnVuaworNzkxNTcgZTYxOTA0N2EyZjM2NjA4ZWE5NmZlOTQzMjVlZTIyZTFmODJiMmNkZiBweTNrCis3OTE1OCBhOWE4MDdiN2NkNDM5ZmM5N2U0NDA2MGUyZjQ3ZjgxMDM0MzExMmY5IHB5M2sKKzc5MTU5IDBlMDYzMmM1NDNlNDE0NGYyMmYzMWQ1YjkwOGZjZGJhZTk0ZWNmMzMgbGVnYWN5LXRydW5rCis3OTE2MCA3MTFkNTE3MzdlZTZiZTlmNmVjYWY0YWZiNmIwNTkyZTVmNWM3NDAxIGxlZ2FjeS10cnVuaworNzkxNjEgZGJjNTgwNGU4Mjg1ODVjNDIxMDM0MzQ4OWViZjgyMWYyOGQxYTk3MiBweTNrCis3OTE2MiA2YjZmZmQ1MjZlM2JlNGVkOTk5MjFjY2I5NGQ2ZTNjMDhjYTg3YjYwIHJlbGVhc2UyNi1tYWludAorNzkxNjMgYTdiODlmMmFjMWRhNmE1ZTI0NWU3OTNlMGFjYjdhZTk4YTg4ODZiMCBsZWdhY3ktdHJ1bmsKKzc5MTY0IGRjYjlmNDI3MDQ0MWFmN2VkYjBiYWRkZjZkNzU5MWIwOGQ1OGY3OWMgbGVnYWN5LXRydW5rCis3OTE2NSBjOGM4NDAxNjI4MDQ5Zjk3ZDhhNmRkZmY0NmJkMzAwM2Y4MmY4MDZhIGxlZ2FjeS10cnVuaworNzkxNjYgN2RkY2Y3ZDI4MzZhYWMzMmE1MzNmMTA2MzFhZTgxYTJmNzhjZTlhOSBweTNrCis3OTE2NyAzNTY2MzY2Yjg5Y2YxNTk5NDMwNWU5ZDE3Njc5NzAzNjJiNTlkZDkxIHJlbGVhc2UzMS1tYWludAorNzkxNjggNGJkMWFjMTEzMmNkZmQ1MDU5Zjc4ZWZmZDQ1MzlkNzU0YTgyYjNlYSBsZWdhY3ktdHJ1bmsKKzc5MTY5IGYwNzY2Y2ZmN2Y1OTY4ZWFiMzhiODk4MDQyZWU4OTc4MmIyZDlhMGYgbGVnYWN5LXRydW5rCis3OTE3MCBmODU3ZDRlZDA3NzQ3NTkzNjg3ZGMzNjVjZDk5ZThmN2U5YmJhMWNlIHB5M2sKKzc5MTcxIDEwYmQxZDBmNjJkZTJkYzg4NTk2NjMxYWNjOWM0ZmY2YmYyMzZmNjkgcHkzaworNzkxNzIgZWE0ZTY4OTI4ZmY1NmI2ZjU0MzkyY2JhMGUzYzQ1NjRjYWZkNDE3YyBsZWdhY3ktdHJ1bmsKKzc5MTczIDFhZTQ3NGM5YzM0ZTZiYzgxNWZiNzc2NWFhYTM2ZjVjNjYwM2Y1OGIgbGVnYWN5LXRydW5rCis3OTE3NCAyYzllMGFiM2YwYzdlZmQ5MWZjZmMzN2MyMDllNzk0M2I0MzQwNjExIHJlbGVhc2UyNi1tYWludAorNzkxNzUgNmExMjU0ZTIwYzg5NjdiZTkzOGU5ZWE4YjkzOGUyYjkzMjk0MmE5NiBweTNrCis3OTE3NiBjYjBlMzcyNmQ5MWRhYjA1ZjQ1ZDEzMDMyNzZmNTQ5YjU0YWM4NzBkIGxlZ2FjeS10cnVuaworNzkxNzcgMzFmMGQ5ZmNkYjQ1YzE3ZTdkMGJhNjk3MTZmYzdjNzFjNjg4OGNmMCBweTNrCis3OTE3OCBhYzk2MmJjNDFlODVmYzkzM2JmNzZiYTc2MTY3Y2U5MjBmYjUwNTlkIGxlZ2FjeS10cnVuaworNzkxNzkgYmM1ZTBkMmUxNzlkMDA4NmViMWMxNjlkMjQxNDQxODNmMjlhNjExMyBsZWdhY3ktdHJ1bmsKKzc5MTgwIDQ1NWVmNzAxNWJhODAyZGEwOGVlNzk2MTdiNTZkMTA5YTAyZGQ0NTMgcHkzaworNzkxODEgOTUwYzEwMzBmODE2NDA3ZjFiNGIwMzE0MzA4Y2Q3NDAzNTkxODFiYiBsZWdhY3ktdHJ1bmsKKzc5MTgyIDU3NWVjNzczZGRhNDBjZjg4M2I2ZjJlZmYxYWM3ZWU3MzlmMTAxOTAgcHkzaworNzkxODMgMjg4NmY2YWE1ZWY2MTlhNGJkMTY1ZTdhMzM4NTdiNjk0OGIwNzgyYiBweTNrCis3OTE4NCA0MTQwNDRkYmYzNDM5NDMxNmE0MzA4ZjBlMGM1NTU0ZjJkYzVlMWE4IGxlZ2FjeS10cnVuaworNzkxODUgZDRmYTJlYWFiNWZhOGE1NmMwM2IzZjAyZTRjZDIxNzVmODllNTE5YSBsZWdhY3ktdHJ1bmsKKzc5MTg2IGMxMWYxY2VjYmViMzVhMTg2ZTI2ZTZlYmJiNWEzZmNlNjMwMTQ2ZDkgcHkzaworNzkxODcgYzNiOWMzMzMzMDFjN2I3ZjZmNTMwM2M2OGM5OTUzZTIwYzkxZWVlMSBsZWdhY3ktdHJ1bmsKKzc5MTg4IGU4MjNlMjdjMjI1ZWFhMDYxNzM5YTYyMDdiMTEzOWNiMzE5OTgyODYgbGVnYWN5LXRydW5rCis3OTE4OSBkZDY4ZTA0ZWUyZTg2MjM0OTY4NjY3MDQ5YWExNTA3MGRmMjM3ODQzIGxlZ2FjeS10cnVuaworNzkxOTAgNjIwOTEyZjgzMDgyNmU5NWVjMDAwOGJkNDg2OGUzOGEyNjhlOTQ5NyByZWxlYXNlMjYtbWFpbnQKKzc5MTkxIDk4ZTQxNjYwNTc0YzNkZWQzYWY2MGE4ZDdlYmMzOWEwNzMwM2NmZjYgbGVnYWN5LXRydW5rCis3OTE5MiBkZWZhYWQyMDE3YjVjYzA4OWU3NGZiOGY0YjkxMTE4Y2UxYTk1OTRiIGxlZ2FjeS10cnVuaworNzkxOTMgZmNlZjRkYTMxZTI0NWJkMDMwNTIwM2ZjMDE2MGFkMDZmZmEzOTdmZiBweTNrCis3OTE5NCAyMmM2YTI3NjRjYWI1ZmY4MGEyNzlmNDZlY2M2ODA4OGY5YzM3Mzg4IGxlZ2FjeS10cnVuaworNzkxOTUgNjNmM2E5NGY1ZTlkNTA1ODVmNDA5OTA2YjQ0MmMyNjdmOTkyNjg2YSBsZWdhY3ktdHJ1bmsKKzc5MTk2IDQ0ZmZiODA5MmVkNjI5MDMzMGM1NDBlYzE4MjMxMDdhMjhlZjY0NGMgcHkzaworNzkxOTcgYjI1ZDEwMjRmMzk0NjhlNDM5Yjk0YzZmNzg4NzA3ZWU0ODBhYmJjMCByZWxlYXNlMjYtbWFpbnQKKzc5MTk4IGM2ZjZiZTUzMTdhZDM2MTk2YmEwZjEwZDhlMjJlYWY5ZDY3ZWU1NWIgcmVsZWFzZTI2LW1haW50Cis3OTE5OSA4ZTQxZjE3OTRkNDQ5NWI4Y2IyMjQ2ZTU4ZjgwM2NiMGU0YWIwZWI5IHJlbGVhc2UyNi1tYWludAorNzkyMDAgMGZiNmQzNDIwMTZkZDVjOGEyNmJkZjI4ZGI4N2NmNTQzYzU4NmViZSByZWxlYXNlMjYtbWFpbnQKKzc5MjAxIDhmMTIwMmNhODg4ZTk1YmIyNWY5ZGY3NGIxNWJkYzJiYmJkNTcyZjkgcmVsZWFzZTI2LW1haW50Cis3OTIwMiAxMmUyMDc1ZGJiZTBlMWYzNWMwMDc4ZWFkNzNmNTljYzg5OGJjNjRlIHJlbGVhc2UyNi1tYWludAorNzkyMDMgNTgxMjYzYWY1ODIwZmQxZDY0YWI3ZTJiNDUxNzQ1MTY1ODM3MDc0MiByZWxlYXNlMjYtbWFpbnQKKzc5MjA0IDhkOGM5YmYyYTA0ZTI3ZjU2YzZhM2FlNjlhMTllNGQ0NDk4OWJjOWYgcmVsZWFzZTI2LW1haW50Cis3OTIwNSA2NDNiZjlmZjIyOGZlNDgwZDgwY2IyMmEyOTIwZjViYTE0YTI3MjZhIGxlZ2FjeS10cnVuaworNzkyMDYgYjllMjdkZTg1ZTRiYzg2ODI4OTlkMDhmM2I0ZjIxM2E2NzFkNTJhNyByZWxlYXNlMjYtbWFpbnQKKzc5MjA3IGUwNjJkZDM1NzE0MTkyYTMxOGU5YzUyMTBlMzk1N2FjYzM1OGYyZmUgbGVnYWN5LXRydW5rCis3OTIwOCAwOWFhODcyZjc5ZmM1ZjNmOWU3OGI4NmUyYTdhNmMwYTUxZmZhN2VkIGxlZ2FjeS10cnVuaworNzkyMDkgZWM4NGZiY2RmN2NiYjUxOTQxNGM0MzM0M2QwNjQxYzE1ZjM4MjkyMyBweTNrCis3OTIxMCA5M2Y3MjBlOTUxOGFkYmRkYTY4MGZiM2U1ZGY5OTU3Nzk3NjE0ZGQ5IHJlbGVhc2UyNi1tYWludAorNzkyMTEgZWRjOTJiY2U0ZDZlMmQ5M2FiZjQ1MWJiOTQ1NmNlOWYzYmViNDhmZiByZWxlYXNlMjYtbWFpbnQKKzc5MjEyIGNmNThiNzMzMjJmOGM0YjBiYzQyNjUxYTUwOTA2OWFmYTA3Y2ZhZDMgbGVnYWN5LXRydW5rCis3OTIxMyAzOGU5YjlkYTAxNjQyZWJiNDY4YmJjZTAyM2NiMjRmZDhhNGYyY2U3IHJlbGVhc2UyNi1tYWludAorNzkyMTQgNzU5ODUxN2IxMjE4MDdmYWIwNTAwNDU3NTllNWZlNzBjMDg5NDI3NiByZWxlYXNlMjYtbWFpbnQKKzc5MjE1IDY0YTAyYjEzM2U3MjNhOTQ2Njk4NDA4Mzc1NDJlMjY2OTI1MzQ2NmIgcmVsZWFzZTMxLW1haW50Cis3OTIxNiA5ZWFiYmE2ZGVkMDk2MmIxYThlMWU5NTMyNDIxZDQzNmE1YmYyMDVlIHJlbGVhc2UyNi1tYWludAorNzkyMTcgNDVkMjI4NGNjMDYzZGU1YzkzZGQ0MzNiZDVjMjc1OTJlMzcxODdmZiByZWxlYXNlMjYtbWFpbnQKKzc5MjE4IDc2NzgxMTM4NWZhNmZkZjc4NmQ2ZWZkZmFmYTc1ZmIyZGQ3NjQxMDIgbGVnYWN5LXRydW5rCis3OTIxOSBkYjk2MWJhMzdjZmU0NDQ2OWM2OGU1MjJmZmZiZTk1MWVmYTZiMjNjIGxlZ2FjeS10cnVuaworNzkyMjAgZWYxZjM4OGY0ODNmYjg1MDAxNmE2MDAzZGNmMTBhYWI3ZmM5ZTA3YyByZWxlYXNlMjYtbWFpbnQKKzc5MjIxIGM2OTQ2MThkYWI1NDNjMmY4NzBjMWEyNjAxNjFlMWQxNzAyMGUwYTAgcHkzaworNzkyMjIgYzkyY2E4YmExZDk3NTBmNjU5NzA3MmE4ZjU5ZDFhYmU2YjdjZDY3MiByZWxlYXNlMzEtbWFpbnQKKzc5MjIzIGQxMzk4ZmYwMWEwNzRiNGMwMTk0Nzg3NmE2NmRjMDk4ZjI4NDNmZmUgcmVsZWFzZTI2LW1haW50Cis3OTIyNCBhYzIzMTRiNWY5NjI4ODI1NTY5MjZmNWU5MTc5ZDcxYjE2ZTYwNTE0IHJlbGVhc2UyNi1tYWludAorNzkyMjUgNTNkYmQ4OTZjNmM2OTJmNDI0YzE2NTIyZjBhYjk5ODQyNDUzMzQyNyByZWxlYXNlMjYtbWFpbnQKKzc5MjI2IDFiZjQ4YTVkZGVhZDUzNjMzNTQxOWFlMTVmYmNkMmZkOGYxNmJlOWYgbGVnYWN5LXRydW5rCis3OTIyNyBmOTZjODI5M2RkN2Y4OGQ4N2JlODIzZjA0Mzk2ZTMyNmYzYjU3OWFmIHJlbGVhc2UyNi1tYWludAorNzkyMjggZGI5NGFlZGViMGUwNGFhMTFiZTRmMWQ1NjE3ZDE2MTFmOGJmZTU3NiBsZWdhY3ktdHJ1bmsKKzc5MjI5IDlmNjE4NzUwMDY0ZWVjZGFlZDg2YTU4ZDlkZmUxZTNhOGFhNzVkOTUgcmVsZWFzZTI2LW1haW50Cis3OTIzMCAwZDFjZGQxNGM5ZmExOTYxOGJlYTVmNmNkYWQyNzk5YWE5Nzk4ZmIzIGxlZ2FjeS10cnVuaworNzkyMzEgYTBiNmYyODcxMWU1ZWU4M2U0YWEzYTNhNTZkZTVlNjc1NTk0YWM2ZCByZWxlYXNlMjYtbWFpbnQKKzc5MjMyIDBjMzQ0ODI3ZTA0OGYyNjkzNzJmZTYyM2IwZDQ1ZTliZDk2NTEyNTYgbGVnYWN5LXRydW5rCis3OTIzMyBjN2E2MTU0NDYwZmJkYTllZGI3ZTlhNzcwODNjMDg1OWY2MWEyOWNlIGxlZ2FjeS10cnVuaworNzkyMzQgOTJmMjU2MTc0MTU0MWE0MTgxYjBjZDBjYmEzYzRhZjgyYTcyMTFiMCByZWxlYXNlMzEtbWFpbnQKKzc5MjM1IDY1MWE4ZTVjNDYwZmE5ZDIwYjgzZGVhMzBlNDFhOGQzZWIzNjMxMTEgbGVnYWN5LXRydW5rCis3OTIzNiBjMDczZjNjMzI3NmVmM2RmNGZhYWI4YmM5M2NmYjg5MWZmYTliYzAyIHJlbGVhc2UzMS1tYWludAorNzkyMzcgZGJhZDFjMDY2OGM5ZjhjZmQ4MzRjOGYzOTFiMmI2NjJmMmQ5Mzk0OSBsZWdhY3ktdHJ1bmsKKzc5MjM4IDdlM2I0OTA4NzdjZWNkYmE2ODc4NDU4YjZiZTQwNzJhYWQ2YWVkZTAgcmVsZWFzZTMxLW1haW50Cis3OTIzOSBlYzZhOTk1ZWNmYmY4MjRiNzJiZjYxYTFlZDFlY2U5NDRjNTA2MTVhIHB5M2sKKzc5MjQwIDk3MTRmOGE3N2IxNjBmYjYxZWEzNjlkZDUwZjI0M2M3ZTNkNmE3ZDkgcmVsZWFzZTMxLW1haW50Cis3OTI0MSBiYWM4YTA0MjcwZmNmMTYzYWFiMjA0YzkyNGRlODQzNjgyNzdjOGI3IHJlbGVhc2UzMS1tYWludAorNzkyNDIgNDhmNDBhMTc4NWNhYWYyZjNhZWE0N2U4NWRhNTQ3YzFmYmRiODk1NiBweTNrCis3OTI0MyA0MWIyMjUwNjdmNGQxMjg3NjUzMDIwY2RmY2EzYWI1ZmIyYTU0YTA3IHB5M2sKKzc5MjQ0IGQwYmRkMDk4NTYzNzQ4NjZhZGU1NTBkOGU5NDk0ODVjNTZjMTMxY2YgcHkzaworNzkyNDUgMzgzM2NmMzNjYTYxNzQ5NzEyNWVhOWVmMmY2MTZjOWNhNTY4ZDIwOCBweTNrCis3OTI0NiA0MjkzYzMzNjY4ZGY3ZDYyNmUzNGY2YjA4ODYwYzM4ZmRjZmI1MDFiIHJlbGVhc2UzMS1tYWludAorNzkyNDcgYzJkMmUyNmJjZjdmZDI1ZmU5MWE0M2YxY2I4NzgzNDI1YmYwMDAyYSByZWxlYXNlMzEtbWFpbnQKKzc5MjQ4IDY3ZjNmN2U1MzY2YmM3ZTNiOWMxNTZiMWZhN2QzOWE0NzAxNDBiODYgcmVsZWFzZTI2LW1haW50Cis3OTI0OSBhMzY2ZDYzMWE2MjlhNGFjYTYwN2ZmNDNhMWE5NTRkNmYzYWNjYmMyIHJlbGVhc2UzMS1tYWludAorNzkyNTAgZTE2YTI3YjU1MmE2ZTM0NGU1YzQwMzRkMzE4OTZiZDdiZGNlZTA3MyByZWxlYXNlMzEtbWFpbnQKKzc5MjUxIGZiYWNmOTcyZmE0NGU2OTU2YTk0ZWZhNWNhMmUyMzJlNTdmNDEwYmEgcHkzaworNzkyNTIgN2U2ZDcxNTFmZGU4NzRjYTZkMWIzYzAzMTJlZjg5Y2U1MGU2MzRmOSBweTNrCis3OTI1MyAyZDJmMjM4NzJkOTBhMTAwMzBjY2JkZTVmZDBlYmQwZmRjYzE3MWJmIHB5M2sKKzc5MjU1IGM1M2Y2YTNkMmQzYjBiZTQxN2MzYTU1ZTllNzM5MTE0YWFiM2M4NjcgcHkzaworNzkyNTYgMTNhNDQ4MDEyYTg0ZTdkMzFlMjgxYWRlMGY5NTBjNWNjZTEyZjlkZSBweTNrCis3OTI1NyA4MjZkMDU0NjkwY2I4ZGE2YTU4M2M4YmFkNTU1ZWI3N2E0OWE3NDA5IHB5M2sKKzc5MjU4IGQ5YjhmMjczYWI4ZGE2ZDE2MGM4MjlmOGE4M2EwZDAyMDZhMTJlZWMgcHkzaworNzkyNTkgOTAyMTdhODY2NDJkMDdiYWUwMjY1OWFiM2QyMTdhYmU5OTZjMzIzZSBweTNrCis3OTI2MCA3ZjgxNmY2YjVkMGIwOTQwNzQxNzEwYzZhMGVkYmYzZTRhMTg5NTQxIHB5M2sKKzc5MjYxIDVjMDkyZDRiNDk5Y2YyNzhjZmVkMzU2NmNhZjQ5NThmZmM1NjYwZDUgcmVsZWFzZTMxLW1haW50Cis3OTI2MiA4MWRjMDIyOTg2MTRiYTE2ZDUyMWViZmYxYjUyZWVmNDU5ODdmZjJlIHB5M2sKKzc5MjYzIDI4NThjYWU1NDBlNDExYjgyMDE3NGI5OTQ4OThmZGExNWUxMjU3OTAgbGVnYWN5LXRydW5rCis3OTI2NCBmOTA5NzM5NjJlYWYxYzQxYzQ0ZWM0YTc3ZWZmNGRkNWMwNTUyMzk5IHB5M2sKKzc5MjY1IDg0Y2MxM2ExNDRmZmJkNTIyOGE1MDYwNjYxZDJhMWFmYWQ5Zjk4NTUgbGVnYWN5LXRydW5rCis3OTI2NiBiNGQ4ZmE0ZDAwNDljM2FkNjAzYzdmNjE0ODg4ODM2N2E4Mzk4ZjJkIGxlZ2FjeS10cnVuaworNzkyNjcgNjU3ZDAyYTUwM2ZhNWQ1NjNmMDZhMWE4NjRhYzkxYWFmMDhkNzczNyBweTNrCis3OTI2OCBlYjBmZjcxM2E1ZTljMTRlYzg5N2UwYjZkYWUyNzFjMTZiNDM3YmQ3IGxlZ2FjeS10cnVuaworNzkyNjkgMzdjMGUyOGQxYWQ0ZWZlMzEwMDA0ZDNlOWMzZDBhYmQxNDJkMzRmYiBweTNrCis3OTI3MCAwMTYxOTY0NjQ5YzM4YTY0ZGE2MDc5MjdlZjM4ZTMwMGUyZmZhYTQyIGxlZ2FjeS10cnVuaworNzkyNzEgMjI5ZjI1MmJjZTc3MzZlNjY0N2MzODY1NjIzZTU2MDk4ODE2MzRjZSBweTNrCis3OTI3MiAxMDZiZWUzZjFmZTUxNjM2ZTExYTZjNjA5M2U4NWYyZDJlN2ZjN2ZhIHJlbGVhc2UzMS1tYWludAorNzkyNzMgOGMzYjEyMGYyNTk2MmRlYzBhNmQ2ZTkzYTExNDZjMTYxMjlmMTk5NCBweTNrCis3OTI3NCAzZGM2ODgyYTcyN2Q3M2E2NmQ5ZTRkNjJlYmE2YmI4NzcwZDJiNjc4IGxlZ2FjeS10cnVuaworNzkyNzUgNzY5ODFlZTUwYjQ4MmZlYjM3ZGM4M2Y5Njk4NTMwNzAyMjFiMTUzMSBweTNrCis3OTI3NiAyZDYxNzg0ODBjYzcxMjZhN2VjYzRhMjY3YjdjNjJhM2U0ZDMxNTlmIHB5M2sKKzc5Mjc3IDM2ZTlmMzhlOGEzYzJlZWYyZWYyNmFjYzNlNDU3YjIwY2U4NWE4MGUgcmVsZWFzZTMxLW1haW50Cis3OTI3OCA1MmNmN2U2NWRhZDE0YmFiMjYxYzgwMDgzOTNlOWUxZTQ4MDJkZGIyIGxlZ2FjeS10cnVuaworNzkyNzkgNWIzYTYwMWVkMjA1YjViNDAzZmMzNTIxODA5OWEzODFkZGNhZjJlMCBsZWdhY3ktdHJ1bmsKKzc5MjgwIDJiNjFlZWQyOGZhZTRlOTFkMGI5YTc5NjVlNjE4MTYyNzQxYjQzZGQgbGVnYWN5LXRydW5rCis3OTI4MSA3YWQ1NjIzZjQxMzIxZGI0NWI1NTM3ZDUwMmZiYTI0MjIzNmRiNjhiIHB5M2sKKzc5MjgyIDg0NDA1YzIyZTRjN2ZmZDk4OTE1NWQ4ZjY4ZmIwMzFlZWJiNTNjYTMgcmVsZWFzZTMxLW1haW50Cis3OTI4MyA2MTUxZDA5Y2UwMzk0OTMxMTNkY2Y5ZWQxZWMwOTEwZjk3Y2U4ZGRiIHJlbGVhc2UyNi1tYWludAorNzkyODQgMTVkZTUzOTA3MDdkYTQ0Njk0MDEzMTY1Nzk0YmY5M2RmYWFiNzU0MiBsZWdhY3ktdHJ1bmsKKzc5Mjg1IDk2YTI0MWQ0YTBhYjE3MTI2MTk1MWY0MDczOGVmMTUzODVmZmMwOGQgbGVnYWN5LXRydW5rCis3OTI4NiBlMmE5NjkzYjU1NWVkNjg1MTJjNTc0NWYzZmJkZDZhZWYxODlkMjdiIGxlZ2FjeS10cnVuaworNzkyODcgNWY1ZDQ3MzZkZTc0YWQ2ZGZlMjFlNmExMjQ2NTBlMmQ5MGQ4MmJmYiBweTNrCis3OTI4OCAyMjRiNzBkM2QxZDQ0ZTU2MDBhODA1MmU4NjAzMGU0NTAxMDYyMGZhIGxlZ2FjeS10cnVuaworNzkyODkgYzkzNzUyMWVkNzA5MmE4MWY3MmRmMmU4ZWZjZTJiNGY0NDAzNzQyOCBweTNrCis3OTI5MCA5ZmJlMjM3MGRjMDIxN2E4ZDM4YzA5OTcyZjY5Yjc3ZTc0Zjk4NDY3IHJlbGVhc2UzMS1tYWludAorNzkyOTEgN2Y0MzVjMzg1ZGEyNWM0ZjVjYzg5YzMzYjE3NDhmYjNiNWJkZWZiZCByZWxlYXNlMjYtbWFpbnQKKzc5MjkyIDAxYjU3NTE1ZjE5NTY4NDA3YmE0MmVkODIxMmJlZGM5ZWE1M2EyNjkgbGVnYWN5LXRydW5rCis3OTI5MyA4MDZhOGNhZmM5OTc3YWY3ZjViNjc2M2M1ZWVjMzI4YTQxMWM4ZTM4IGxlZ2FjeS10cnVuaworNzkyOTQgNmRmNzk5YTJjMjRlNGEyNDZlMmY4NzM2ZWEzZDIyYTQ1YmQ4MWM4YyBsZWdhY3ktdHJ1bmsKKzc5Mjk1IGNmYzU3NzAyYWY3ZmQ5NWI5YTI1OWM2M2M3NDUxNWUxM2I1MjNhZjEgbGVnYWN5LXRydW5rCis3OTI5NiA3NjdiMDgzMTY1OWUwMjdhNjljNjY0NWE1MTUwYjAzODViZjExYjFmIGxlZ2FjeS10cnVuaworNzkyOTcgZjAwMTQ1NTQxNjZmOTNjM2JkNzY5NzczMGFmZDJkNTg5ZGQ2ODZlNiBsZWdhY3ktdHJ1bmsKKzc5Mjk4IGI3ODcyYjBlOGFiMjQxZTM3OWRkNDk1Nzc2NjhmZTE2MDMxOGFlZjYgcHkzaworNzkyOTkgNzNjYWEzNjFmOWNkZTE0YmMyYTgxMTUzOGM5NjY2NTczYjNjYzQyNCBsZWdhY3ktdHJ1bmsKKzc5MzAwIGUzZmRmZGIxYThmZjhmYzZhZDYyOGYwZTk4NDJjODg5YTk2NjlkYmMgcmVsZWFzZTI2LW1haW50Cis3OTMwMSAyZTBkNThhZGFkYmUwZWI0MzhhNmQ1YjFiZjExMGYwZmQ3Y2YwNDBlIHB5M2sKKzc5MzAyIDFkYzE4NDEyYTdlZTVmMDM3ZGQxYjBiZWZlNTU0YTRiYTE3Y2E5ZGUgcmVsZWFzZTMxLW1haW50Cis3OTMwMyAzYzRkZmU4NmVjMmI2NDgyNGFlYmIxNWRkNzI0Y2Y3M2ZmYTBkMjBiIHB5M2staml0Cis3OTMwNiAwYTEyM2NkZWQyYzk3M2I3YjFmYTlhMWZmOGY1MmJhZDMxZTZhMjc3IGxlZ2FjeS10cnVuaworNzkzMDcgODBiZWVjOGZiNzQwM2YyMDY5YjIwY2EyMDliNjM0Njk2ZTRiNTRkNCBsZWdhY3ktdHJ1bmsKKzc5MzA4IDViNjc5YzI0OWUzYzFjZDY3MGViZDU1MGU3NzExYTU4NjkxNzdhODEgcmVsZWFzZTI2LW1haW50Cis3OTMxMCA0NzdkMzZlNWQ5MTM5NWUxM2Q0MzBiNjhkODNlODU0NzgwN2EwZmYxIGxlZ2FjeS10cnVuaworNzkzMTEgOGYwMTZhODAxNjQyZjlmOTNlODJjY2FlNzA3ZTNiYmNjYTYzNWVjNiBsZWdhY3ktdHJ1bmsKKzc5MzEyIGUwMGRkMDcwNTZhYWYzOTcyZGFjN2NmMmJkZjI4NmQwMmU3ZTdlYzEgcmVsZWFzZTI2LW1haW50Cis3OTMxNCAwZjQyZjM0YzE2ZTgyYjEwYzMzM2NkZGIyZTgwNjc3OTg1ZmM2MzcwIGxlZ2FjeS10cnVuaworNzkzMTUgNjVmZjUyNmUwNWViYmQ1NTI0ZmRhNjlhZDQyYmEwMjc2ZTRiMGNjYiBweTNrCis3OTMxNiBjZDk4NDhjZjE4NDdhZGIxY2NiOTg1MTJjNTYyMDhmZjkwZjg0M2M3IGxlZ2FjeS10cnVuaworNzkzMTcgMzI0NGVmYjZkODhmODhhYWYxYmRmNmQxNmVlOGNiMjRlZWQ3YzkxMSBweTNrCis3OTMxOCA1NDM1ODgwNzEzYTc4M2ZhNWE2NmEzZjEyZTRhZDg4N2U0ZWJmMTY3IHJlbGVhc2UzMS1tYWludAorNzkzMTkgMTc4MTY5NTg4NmRjZTg4N2FhNzBkNzQyZTc0Y2ExOTRjMzNhM2Y1YiBweTNrCis3OTMyMCA2ODRjZDczODE1MzVhNWEyMDkxYThjNDY5NWRkMjA3YjJjNWJkNzBiIGxlZ2FjeS10cnVuaworNzkzMjEgOGU5OWI2MDAwZjBkZmUzM2QxZDllNTIzMmI4YWJkOWE5ZjIyN2EyNiBweTNrCis3OTMyMiBhOWRiNTFjZjFmYmM0ZGVkZDM2ZmFkZjk2NTcyZGQzMWQ2YTg4ODY0IHJlbGVhc2UyNi1tYWludAorNzkzMjMgZjQyOGY2NmY3ZTliYjY2ZDA5MDgzY2NlY2I3MWYwNzc5OGE5OTEwMCByZWxlYXNlMzEtbWFpbnQKKzc5MzI1IDEyZWU0NjQzNWQwMTcxZmEwOTBiODc1MWYwOTczYTJkMmY3ZDNlM2YgbGVnYWN5LXRydW5rCis3OTMyNiBmYjNkYTU2ZDU0OGYwZDI4ODJhMzA3ZDQ0M2Y4ZTE0N2JmZDcwYTFjIHJlbGVhc2UyNi1tYWludAorNzkzMjcgOTJjOTMyNDYyNWI2YTVhMDAxYzBjODYzZTZhODI5ZjM3ODJkZjIyMiBweTNrCis3OTMyOCA4ZTc2ZTQ2YzE5OTQ3NTc4OTA2ZDdmNDRmNjc0MTFhN2Y5NGQ4OTM5IHJlbGVhc2UzMS1tYWludAorNzkzMjkgYjAxZWZmNGVmZmQ3ZWZhNDI1ODNkNGUwMDNlMzNmODJhOWVmZThlMiBsZWdhY3ktdHJ1bmsKKzc5MzMwIGZhNWUyOTljZTA5MWM2NzZmMGNkMmFhNzZhNDk0NGFmZjYwZTcwMzMgcmVsZWFzZTI2LW1haW50Cis3OTMzMSBhNzAyNjQ4YzhmNDEwNDkzYzJhZjQwNmQwMTEzOWIyZTJkYzFiZGY4IHJlbGVhc2UyNi1tYWludAorNzkzMzIgM2JhMjM3YTMyNmMyN2I5Y2JlY2MzMDRkZmZjNTQ3NTgzMzBlYmQ2MSByZWxlYXNlMzEtbWFpbnQKKzc5MzMzIDU2ZGQ1ZDUwNzBhNWE0NTQxYzdlNTllYWRkMmZhNWFkYjM4OTgxYWMgcHkzaworNzkzMzQgYjBlYjlmNmYyZDEwYjFmMzI5NWI2OGUzNDQxZWE2YmMzMjA0MmE3ZCBsZWdhY3ktdHJ1bmsKKzc5MzM1IGYyMGU4YjkxZjZlOGRhOTkyYjFmMWE3N2NmNTc0M2U3NDc0ZTczYjkgcmVsZWFzZTMxLW1haW50Cis3OTMzNiAxMDI2MjNkNjg0M2ZjNDkxZDFkZmVlMTZmMjdmMTk5MWY3ZTg5MTkyIHJlbGVhc2UyNi1tYWludAorNzkzMzcgNmUxZGFkODUzMDA3YTJhMzRlYmJmMmVmNTBlMjNmODc2YWQxZDI0MiByZWxlYXNlMjYtbWFpbnQKKzc5MzM4IDY2NTk1ZDQ4NGVhOGQ1ZmM3NzY0MDYxZDgyODNmMDVhMTAwMzdmYjggcmVsZWFzZTI2LW1haW50Cis3OTMzOSA0OTg2Y2YwYTkxYjhlOWNiY2Y0ZmVlNmI0OTUyNzFjZGRkMDNhYzVhIHJlbGVhc2UyNi1tYWludAorNzkzNDAgZTliOTU4ZTgzOTFiZDJlMzQ4NGE4YWNiMTcxYTliNmIyNDUwMTM0NCByZWxlYXNlMjYtbWFpbnQKKzc5MzQxIDE1NTZlNjk3YjJkNzBiMWEzNjA0ZTI2MmIxMzgxZDliMmY5OTM4ZDQgcmVsZWFzZTI2LW1haW50Cis3OTM0MiBmODRmODM5NjNhNzhhZDY0MzQzODZiMTY5NWJjNDRiNTEzNDk5OTk5IHJlbGVhc2UyNi1tYWludAorNzkzNDMgMjdmOTcyNDQ2OThlZGEwNjA5MjUzOTRjZWVlMTNjNTVkM2RhNTdhZSByZWxlYXNlMjYtbWFpbnQKKzc5MzQ0IGIyMTRjYThlYjZiZDBhYmU1ZjExZTAzZTVmNWY1ZTE1NGU4NjJiNjkgbGVnYWN5LXRydW5rCis3OTM0NSA1MmQ4NDU4MzFhZTg2NGUwMGQ1MmQyYjkwNWVlMjUzN2IwZmYxNzI4IHJlbGVhc2UyNi1tYWludAorNzkzNDYgMjg5MDA2ZGM0NmVlMjRiNDY2MmJhMTRhZjlmMTg5ZTcyM2MwMGViNyBsZWdhY3ktdHJ1bmsKKzc5MzQ3IDgxYjc1MDkyNDA5MTZlZGM2MjdlNzEyM2QxZDZmNTUzODEwMjcxMGIgcmVsZWFzZTMxLW1haW50Cis3OTM0OCA5ODhlMDQ1N2UzMTMzOTZjZDUxNDU4YTBiYzRkZmRhNWIyOTY1NWU1IHJlbGVhc2UyNi1tYWludAorNzkzNDkgNzIwMTE4MTM2MGZkZjI3ZDBkMTVjNDM1NGI3NTUyNGEyNGNmYjc2YyBsZWdhY3ktdHJ1bmsKKzc5MzUwIDM3ZGE5YmM0NjE3NDJmYzRlNDA2OGQ4NjczYWNmOWNmYjYyOTU1OWMgbGVnYWN5LXRydW5rCis3OTM1MSBjYzhlMzY5NjJiYWNlNmM1MzlmMjI1YzExMDg1ZTgzMTk2NTQwM2I2IGxlZ2FjeS10cnVuaworNzkzNTIgOTc2Mjg0ODQ5ZTlkODE0MTBjZTA2NGIxOWVlMWZkNWJmY2JkNmU0NyBweTNrCis3OTM1MyBkNjBiZmIxYjljMDUyZTczZTg0MDM3ZTFhOGJmYmQ5YTE4MWQyMzYzIHJlbGVhc2UyNi1tYWludAorNzkzNTQgZTkxYTA4NmI0MTc4M2U3Mzc0Y2Q1ODU5YmI5ODZkOWQ4NDliYjdhNCByZWxlYXNlMzEtbWFpbnQKKzc5MzU1IDVhYWNjNzY4MGQzZjcyYmZmMmM2MjU1ZTdlNWM5YmQxMjFkODY5ZDcgcHkzay1qaXQKKzc5MzU2IDQ0Njk2NDgyYWM0MmFiY2U2YjhlOGE0OTQ1YTllNmQ4NzBmZWI4NDQgcHkzay1qaXQKKzc5MzU4IDFlNzQxZWIzMGIxNzA0YTM1MzZkODY3MThhNGMxNjZmZDRmNDY2YzIgbGVnYWN5LXRydW5rCis3OTM1OSA2NTdlN2QyMTMwNTI4OWNjNDAxYmRlMmU5YmNkNzQ0YWVjZmFjMzJiIHJlbGVhc2UyNi1tYWludAorNzkzNjAgNTA1Y2ZmMTI1YTAzYzY5OTdhODU4NzIwOGZlZjliMDA3NWQxNmYzNCBweTNrCis3OTM2MSAwMzE2ZTZhMjhhNTUzNTg3MWIzYWI3YzUzNTlmYzZiZTdhZDMwZmRiIHJlbGVhc2UzMS1tYWludAorNzkzNjIgZGU4NGE2ZDBlNjk3MGMwZTg5MGNjZDU3OWFiNmViMWY3NDhmMTJhMiBsZWdhY3ktdHJ1bmsKKzc5MzYzIDRiYzhmOTY1M2U4ZTJiZDczYTcwZDE5YWFmOTIyZTkwNWE0MDI5MGMgcmVsZWFzZTI2LW1haW50Cis3OTM2NCA1OTkzZGE2ZDI0MDk1MTUxYTMxNjEyNGZjYTc3NGQ1YjVlNzI1NjUxIHB5M2sKKzc5MzY1IDE5NTdjMjg5NDI5MjViYjhkZWZmYmFlYmEwNDI3NjU2YmQ2NjQ5ZWYgcmVsZWFzZTMxLW1haW50Cis3OTM2NiAwM2VhYjk5OGIwN2ExNWEyNjc4ZGE0ZDA4N2E4NjYxZmUxMjUzMGFkIHB5M2staml0Cis3OTM2NyA2MmZiMDg2YTM5NzU4MmEyMDZmZmUwNzA1YTU4YmRhYjBjNzA3YjI2IHB5M2staml0Cis3OTM2OCBjZDBjYTU2Yjc4ODBlOGM0NWZhNDk2NjcwNTFkZDZkYzc5Yzk1NThlIHB5M2sKKzc5MzY5IDIzZGE1NjYwN2IzM2ZhZWY5MDJlMmE5NDIzM2MzZGJmNGIwNzJkZmMgcmVsZWFzZTMxLW1haW50Cis3OTM3MyBkOGY4NTUzMzNmYjQ4Yjk4NjUyMzExOWJkZWQ0N2I0OTQzYzZlNzE2IGxlZ2FjeS10cnVuaworNzkzNzQgZDJkZWFhNzBmYWRiNDVjYzQwMTc0OWNkZjY5NGIxMzJhZDIxY2I2ZiBsZWdhY3ktdHJ1bmsKKzc5Mzc1IDBhYmZhMjYwN2Y1NGViODY1N2UzMmRmNTMyOTQxNWZkOGUyZDZmYzMgcHkzaworNzkzNzYgOTM0Y2JlNzM2ODAzNzJjZTI4NTVhMjk4ZjcyNGUxODIyNDc4ZWNlZSBsZWdhY3ktdHJ1bmsKKzc5Mzc4IDUzMmQ3MTQyMGY0NjE1NTg1MjQ0YWVkYmQ5M2JjNTU3YjA5MGM1ZmYgbGVnYWN5LXRydW5rCis3OTM3OSAyMjllYThjY2M1NTMwNzVjNjQ0N2ZhYzI2OWRkYjM2NmUxNzA2NGJkIGxlZ2FjeS10cnVuaworNzkzODAgODNmYTRmODk5NTY4ODJmNWViMDdjYTY1MjY4OTcwZGY0YjgyMDFhNiBweTNrCis3OTM4MSAxNzljNjQ3Mzg2MzMwYjE4YmQyMzY2NzVhOWVkMjBiZmExMzk3NmI1IGxlZ2FjeS10cnVuaworNzkzODIgNjIzODVkOWI3ZGEwNDM4YzgyNjZmYTI1ZTA5MDQ0NzFiYzEyNzdmNCBsZWdhY3ktdHJ1bmsKKzc5Mzg0IDc0MzBmYTdlZWE4Y2I5ZjkwMDQxM2U5NTQ2NWQwMWI1MjVmYWQxZDEgbGVnYWN5LXRydW5rCis3OTM4NSA0Y2ViNWRjMzVjYzY1YTY0ZmE5NGJjYTFjNzNlNjQ1ZjRhNTk1OGEzIGxlZ2FjeS10cnVuaworNzkzODYgY2FjNjYxZGI3Nzk1ZjE5YzZiZjBiN2YxZmVlNzdlOTU4ZDZlOGM5OSBweTNrCis3OTM4NyA0OTZkNzYzNjA3NjM5NDViNmUxMmM5ODFiOWM1NDA0ZDMxZjU0YWU2IGxlZ2FjeS10cnVuaworNzkzODggMmUwODEzZDY3MzhkYmY0Y2FlNmFiOWRjM2VhNjM2NWQyNTViYjdhMyBsZWdhY3ktdHJ1bmsKKzc5Mzg5IDcyNTFlNzM3YTVkOGNhYmQ2ZGJmNzI0YTE0YjlmMzdhMWM3Mzg4NWUgcHkzaworNzkzOTAgOWNhYWFmZDU5OWQ2NTM0M2IxNGYwM2ViM2ZlMTViMDRjMTM5ODhkZCByZWxlYXNlMjYtbWFpbnQKKzc5MzkxIGMzYzM0Zjg0Nzk5OGEwMDY2NTc3NjBkMDc2ZmM4YmU4MjY4OGU3ZTcgcmVsZWFzZTMxLW1haW50Cis3OTM5MiA0YjhkZWNiNDU3MmNkNzAyZThiNzgwMjU4MjkzMzk5MTgxMjE3M2M0IGxlZ2FjeS10cnVuaworNzkzOTMgZThiMDhkNzczZTc4NWY4NzJkMjVjY2MwODZkNGQxYTQ4MGNkMTVkMSBweTNrCis3OTM5NCAwMzA5NjIwOTIzNzNlOTU0Mjk1ZTkwYzE5YWRkYjc4NTVjMGU5Njc4IHJlbGVhc2UzMS1tYWludAorNzkzOTUgMjQ4YTdhZGU0NDRmYmVmNTRmMTViOGM0NTg2NWM2NzEzMDA1YjAxYyBsZWdhY3ktdHJ1bmsKKzc5Mzk2IGVkOWEzZGJjMzEyZTliMGE1MmI2ZjgyZTcyMGNkYWQ1MzEwMGNmNzkgcmVsZWFzZTI2LW1haW50Cis3OTM5NyBkMTFmYmM3OTY0OTlhMzM4ZDA0MDJiODg5YTkwNGRhOTU0MTM4YzM5IGxlZ2FjeS10cnVuaworNzkzOTggZDY4OTNjNzBkZjZhNDdkMTgxYWM1N2MzYjY4NmU1NTg0ZGQ1YmMwMCBweTNrCis3OTM5OSBlYjFiNjQ2OGU5Nzc0NmY2MzA5N2YyZjgwNmEzYzllOTliZTNjZDZjIHJlbGVhc2UzMS1tYWludAorNzk0MDAgNWQ1NDY5MmI2ZGMzZTNlM2U5ZDRjMDk2OGNmMjJmNTA4MzcxMTYzZiBweTNrCis3OTQwMSAwOWE3YTE5ZTdjYjliMDkzOGYwMmUwOTdlZjU3YzQxNzM1MDdlODFiIHB5M2sKKzc5NDAyIDNiNGU5ZmE5YzFlOGRjMWEzMWE0NGM4OWU3NTY4NmNjNzIzNzExOWQgbGVnYWN5LXRydW5rCis3OTQwMyA1ZjlhNzA2NGQ2MmFhMDA1OTM2MDMwMTQ1M2Q4OTEyMzU4NjUwYWIwIGxlZ2FjeS10cnVuaworNzk0MDQgNGVmNjVlMjM5NmFlOWE1ZWVhYzQ0ZWQ3NDI1NWVkYjk3NjdkYTA5ZiByZWxlYXNlMzEtbWFpbnQKKzc5NDA1IDRmODQxZGY4Yzk3NjZmOTM1ZTk5Mzc0YzNiNGI4MGU3MDY3ZTE2ZDQgcmVsZWFzZTI2LW1haW50Cis3OTQwNiBlNWRkOWY5ODY0NDBjODgyZmJmNGMwZTk5ZTcxN2E1OGVmMmQ4ZmNmIGxlZ2FjeS10cnVuaworNzk0MDcgMGRmZDYyMDc2ZGVkNDFlMjA5ZjU4MzQxYTY0MDc2ZjU1ZTE0N2UyOSBweTNrCis3OTQwOCBlMWE4NGYyMjE1MzdkM2IzNjc1MzgyZjk3Y2UxZGFlYjQyNTVjOWIyIGxlZ2FjeS10cnVuaworNzk0MDkgMWFhNjg0NjcyY2U2ZmE2NmI0NDM5OTUwNDM4MWY5ZTMyNjUyMTUwZiBweTNrCis3OTQxMCBlMThkMzgyMDEyODA1NzdlMTQyZjQ4MTM3MDIzZTk5ZDM3N2VmMmJjIGxlZ2FjeS10cnVuaworNzk0MTEgYzk5YzM3OWNlZDJmYzA1ZjI5NzI3YmEyNmY4YTAyOGZjZGZlMmExYSBweTNrCis3OTQxMiBkNmNhOWNkMWI0MTFlNjUxMTAxMWE1ZDkxZTczODJiYjdlMWE5MGM4IGxlZ2FjeS10cnVuaworNzk0MTMgNzMyOTMxMmZjYmQ3YTUyNGRhYjAzYmJhYmJiNTZmZGI5NzBlNzhhOCBsZWdhY3ktdHJ1bmsKKzc5NDE0IGZjYzEwODMzYTFjOWI1YTVmMGVkYTkzY2E5OWVjN2NmZDg1MTg2MTQgcHkzaworNzk0MjAgZTI3NzBiZjMyZGNmNjgzOTdkMmM1Y2JmZDZhNTY5YzE3OTkwNmE2ZiBweTNrCis3OTQyMSA5MzgyODRjZGExNWJmNTgxMjIyMDNlZWRmN2Q5MDE3ZDQ3ZTI0MjMzIHJlbGVhc2UzMS1tYWludAorNzk0MjQgMTQ0MzI3MjRkMGZlN2ZhYWJhMDk5MjNjN2NlMjJhZjkzMWUwNGEwYyBicmFuY2hfbGliZmZpLTNfMF8xMC13aW4KKzc5NDI1IGU2YjllZjQ5ZTMzZjlmM2IxMWY2NDc3OWQ3ZTY4ZDQ4OTM4OTU3MTkgbGVnYWN5LXRydW5rCis3OTQyNiBlMGI4ZWNhMjI1MjkzNTk2OWUyZGI0N2VmMTBjZjM5MTBjZDlkZWJlIGxlZ2FjeS10cnVuaworNzk0MjcgMzhlNDEwMDUwZGM3YzE1ZDVlMDRiMGZmMjhkZjcxZDU0M2NlZjI2MyBsZWdhY3ktdHJ1bmsKKzc5NDI4IDE2YTdkMzI2MDViYjgzMmRhMGIxMDUyNDhkNGU3YjMyOTJkNGU1YjUgbGVnYWN5LXRydW5rCis3OTQyOSAxYTBlMjE3MDYzYjc1NDI4YzdhZDIwZDAxODg2OThkYjA1ZjE0MDAxIHB5M2sKKzc5NDMwIDg3MDE1ODFmYjQ1NTA2MzczN2M5YjEwZWFhNjM1YzQ0MzE0NzdhOWEgbGVnYWN5LXRydW5rCis3OTQzMSAxODhmODYwNzU5YzE0MDQ4ODM5NjBkM2M3ZmY5YTNhYTExYWNjNDlmIHJlbGVhc2UyNi1tYWludAorNzk0MzIgZDgxODdlZDk0MzI1NjBlMzczYzRhYzkyNTJkNzAwZWYwMzNhMmM2MSBsZWdhY3ktdHJ1bmsKKzc5NDMzIGI5MDcyMmQzYWVmYTBiZWJlZDY2ZmQ2YjdlNWM0ZGQ0YmQ5NzcyODAgbGVnYWN5LXRydW5rCis3OTQzNCA4MjYzN2U2NjhjYTFjY2I2YjQxYzBhMDJlMWQ0MDQ0NmY2MzY1NjdkIHB5M2sKKzc5NDM1IDAzMGQ2YmYxZDk5NTZmNzcwZjk4MWNkMmZiYzZkNzY1MmM3NjFjNGIgcmVsZWFzZTMxLW1haW50Cis3OTQzNiA5NWE3OGEyZDcwMGQ4MGNiODA3Mzk0MzY4YTM3YThlZDlhZDU0ZDJmIGxlZ2FjeS10cnVuaworNzk0MzcgOTQyMWY2N2I2YzJhMTQ2MGI1YWFiM2EwNDAzZTY5NDRkNWYyZDU3MiBsZWdhY3ktdHJ1bmsKKzc5NDQyIDIwYmFmNjNiMDk0Y2QwYmQ2NzI5ZTQxNjA2YmUzYzFiYTc5YmU4YzUgbGVnYWN5LXRydW5rCis3OTQ0MyAyZWNiOGU5OTYwZmMzYTg3MWI3NTQyMjY2MDhjMDMyZjc2NDIwMzI5IGxlZ2FjeS10cnVuaworNzk0NDggYzhlY2FiYmU4MDE2OTk5MDRiMTE1MDI3NzZhMjQxNDk0OTE4NWJiMyBsZWdhY3ktdHJ1bmsKKzc5NDQ5IGU0MDdlYmE4ZTM4ZDQ0OWY4MTgzMjkzYmUyOTUyYWQyYmRmZjYzZmQgcHkzaworNzk0NTAgYWNiMWRjNjY4YTk3YmI4ZTQzMDlmNmIxOWMzZjVlOTFkZWQwNjI5MiBsZWdhY3ktdHJ1bmsKKzc5NDUxIDRiYmFmZGY0ZDVjMWJlYmIyYTIwNjNjMTBjMTNmZGM4MDQ0ODBlODggcmVsZWFzZTI2LW1haW50Cis3OTQ1MiA2NjBiOWYyNGVkYWM4ZTM3MTU5NDllNzY0NjllOGQ1NmMzNzBlMzJlIHB5M2sKKzc5NDUzIDUyNmJiMDgyYzA1NTI1YzkzZmZmMTFiMTI5OThkZWQ0NTNiMmIwYWQgcmVsZWFzZTMxLW1haW50Cis3OTQ1NCA1NjQxNjkxNTE1MTBjZmU5MWZiZTBiODdkYjIxNzJkMzcxNDE5N2IxIHB5M2sKKzc5NDU1IGU1ZmUyZjYyNTk4M2NjNmYzZjMxYmRjOThmMzFiYWNiMTYyNjQ3YjQgbGVnYWN5LXRydW5rCis3OTQ1NiAwZjZhMGIxZGI0ZTJiMWVjMGI3Yzk0OTVhZjFlZWExNjMyY2ZjOTMyIHB5M2sKKzc5NDU3IGIyMjdkYjlhMDAyOTc0NGJiY2ZiMTIyMDhlYjA3ODY3MGY5MTExMDAgbGVnYWN5LXRydW5rCis3OTQ1OCA4YzVjNWU4NmZiMjI3YTYyN2I2OGUwYzA3NzgzOWVlMTE2OWRhODA0IHB5M2sKKzc5NDU5IDBlN2FlNTNiNGU3OTAyNGNjYWU2YTMzZGFhYzk3YjI2OTE1N2I3OTUgcmVsZWFzZTI2LW1haW50Cis3OTQ2MCBlODExYWEwOTRmMTk0Mjk1N2U0OGRiNjg5ZjI3MThiMjIzYTlmOTc2IHJlbGVhc2UzMS1tYWludAorNzk0NjEgOTE3MGFhOTQ0ZjI5MzM0NWJkNmY4ZGE3NmM3YWEwMTljYTRkZWI1ZSBweTNrCis3OTQ2MiBlMTE4M2ExMzdkOGNhOGY0ZDdiMTVhNzUxZDVkNjgxYTQxZjRjZGU0IHB5M2sKKzc5NDYzIGFiMzA3ZjdkZWZhMWVjNzlkM2I2YTZkOTk3YTU2NTgzZTIwMzgxMmIgcHkzaworNzk0NjQgMjI5NDZkMDBlZWNjZWY3ZTQ2Yzc0ZGVlYzNlNjU4OGFhNjQyOTA4NyBsZWdhY3ktdHJ1bmsKKzc5NDY1IGY5NmFkODAwNzEyZWU2MWY0YWExMjkwYzU5NjM4MTJjYjZlOTFkYzQgcHkzaworNzk0NjYgODZiNzFmNDBlOGFhZTI3MDRkMDhmNWU2ZTdjYjcyY2FiMGY0ZDliYyBweTNrCis3OTQ2NyA3MWE0NWVjYzRkYzkxMWVkMDNiYTI3NmIzMjBmM2RkN2EzZjBlMmIxIHB5M2sKKzc5NDY4IDMwOWUyZDNlOGRjYzIxYWU3MGQzNDhmNWIwNTBmZThmNmQ5YjZhYzIgbGVnYWN5LXRydW5rCis3OTQ2OSA4ZTZhMTYxNTdmYWYxYmRmNTQ0YjQ1Njc1NDhlMmVkYTNkOWVmYTlkIHB5M2sKKzc5NDcxIGEyYWE2ZGRmZThlMjk1OGFjYTZlNjIzMDRmNTgwMTRhM2E5MjJmMzMgbGVnYWN5LXRydW5rCis3OTQ3MiBkYjVhM2EyNzdjMGI1ODBlYmY1MWZjNGEzMTkyMDFkMDZkMGM1OWExIHB5M2sKKzc5NDczIGJiMmNhMWI2MzMyMWE3OGI0MTMzNDdhZDhmNGNhYmUwZTRjZTk0YTAgcHkzaworNzk0NzQgNDBmNzg3YjE1MWFjNmMwNTM1YTczNTZlMWZkMjY0NTFlNjMyMjYzNiBweTNrCis3OTQ3NSAyYjYzMjE5MTVlOTJiNjFhNmM4NjllNzk3NDA4ZDU2ZWFkOWQ2M2EyIHJlbGVhc2UyNi1tYWludAorNzk0NzYgMGJjMDQ1MjVhZjYzOGJkMDA0YjExMDQ1NWNmZDUzMmQ2MzNiZDE0NCByZWxlYXNlMjYtbWFpbnQKKzc5NDc3IDYwMDA5NjMyZWQxMTlmN2JkZjM5OTg1ZTY3MmJkNWNhNTlkNmVjODAgcmVsZWFzZTMxLW1haW50Cis3OTQ3OCA4ZWUyYmY4MjFmNjI2NzEzZjk4YmI0OWQ3YmI1ZDEwNDQzOTFlOGFkIHJlbGVhc2UzMS1tYWludAorNzk0NzkgZTYzZDQ2NzhmY2E3M2YyNGQ0MmUxNDcyZmJiNmVhYTU2OTE4ZWQ5NyByZWxlYXNlMzEtbWFpbnQKKzc5NDgwIGJiOGJkMzM1OGJjYTAyY2U1YTcwMWJiYjZhN2I2NDgxY2EwMmU4MmEgbGVnYWN5LXRydW5rCis3OTQ4MSBiZWE3NWZmNjUxMTQ2ZGFhZDAwMmQ0MWQ4Nzg5NzY3NTZlNTJiZGJjIGxlZ2FjeS10cnVuaworNzk0ODIgZDQ5MzUyNDI2ZGU1MTMzM2QzN2U2NjUxNDE4Y2RmYjMwMDA5ZWE2YyByZWxlYXNlMjYtbWFpbnQKKzc5NDgzIDIxM2EwYWUyZGI2NWIyZTI1MTk5ZTAxMDViNDJlMDgwODE5YmM3NjEgbGVnYWN5LXRydW5rCis3OTQ4NCAyYTMxMGE0NDhhMGE3ZTIwMTQ1YzJiY2Q4OTFkYjg2ODdiMzBhYTJjIHB5M2sKKzc5NDg1IDUxYjJhZjljNDY5ZWI0YTk1MzZjZDA5ZGIwYjI4MWQxNTk0YWJhMDkgcmVsZWFzZTMxLW1haW50Cis3OTQ4NiAyZDA2YzZjN2U3MzI3ZGViZGNmNmZhY2UxZmRkMDk1Y2VlZDg4ZmRlIHJlbGVhc2UzMC1tYWludAorNzk0OTAgYmJiMzQwNTAxZjI5ZmMwZjMzNjYwNDEzN2YxNTM5YTNmMDE2ZDMyZiByZWxlYXNlMzEtbWFpbnQKKzc5NDkxIDliOWZkMjk5MDcyZDhmY2MzODQ2NzVkODliZjg1NGJhNWEyYTY2YTcgYnJhbmNoX2xpYmZmaS0zXzBfMTAtd2luCis3OTQ5MiBjM2M4MmQ4MDQwZDZmNGVmNjYzYmJkOTBhNWU2NWU4OGRhMTFlZmNlIHJlbGVhc2UyNi1tYWludAorNzk0OTMgMDRjYzA3NWJkZGY1YmI5OTYzZWY1MjA1NDJhZjc3OTdjMmZiNTE3YyBsZWdhY3ktdHJ1bmsKKzc5NDk0IDY2ZTc1N2Q4ZWE5MzRjZWVjMWQ2YjcwNzk1OTRlNjBmMzQxZGVkYTUgbGVnYWN5LXRydW5rCis3OTQ5NSA3NzM5YWVlZmRiYzAxNDRjNjlkYjk3NmY5MmE5M2UxMDM5YTc5NmEyIHJlbGVhc2UyNi1tYWludAorNzk0OTYgYzk2ZDI3ODY3N2FmM2NkMDhkOGJkYzBjNDhkNjYyY2ZjZGM4MDNlMyBsZWdhY3ktdHJ1bmsKKzc5NDk3IDMzMjljMDVlNmUzMTkzNzliODhhYzQ5MDkxZTQwNWQ3N2MxNTcyMGMgbGVnYWN5LXRydW5rCis3OTQ5OCBlNGU0YmJkMzlhMjEzY2NlOGNiZWQ3OWE3NGE5YjJlMzA3NGFjYzMwIGxlZ2FjeS10cnVuaworNzk0OTkgNDBhMmU3YWM4YTQ3ZTIyYTAxNTYzNzVlOWE2YjYyNThiOTc4YmVjNyBweTNrCis3OTUwMCBhMTRhMjA1YWIxZmI4NDkwMWQ1YmU2ZTFmY2Q2NTExYTRjZDhkYzYyIGxlZ2FjeS10cnVuaworNzk1MDEgYmM2ODE0YzM0ZDVmMjBlM2U5NWE0OTBlNWRhNGE2ZjNjYWU3ZDVmNSBweTNrCis3OTUwMiBmNjk3NjlhYjBlYjgxNjY3MzVlNTVkNjM2ZDY5MTg5YzQ3ZjkzMmYyIGxlZ2FjeS10cnVuaworNzk1MDMgNWUwZmY2NTI4NGZhMjA4OWIwNGUzNmM2MWIyMWEyMjM3MzZjMjFlOSBweTNrCis3OTUwNCAxZDAwMjdkMzRhNTFlMjFjOTkyMjg0ZWIzMTU0NmI3NWQ5MWJmZmM5IGxlZ2FjeS10cnVuaworNzk1MDUgMTM2MTg3NzU4NWYyYzQ5MWViYjBlMDdlNmEwNTQwYzkyYzE2NWE2MyBweTNrCis3OTUwNiBiZjNjNDhmMjQxN2M0NDcxM2Q0MzQ4MDk4YzBhZTFhNzg4NjFhNjk4IHB5M2sKKzc5NTA3IGRkZDU1MDk1MWI4M2ZiMTcwYjAxZGU3Zjg4ZjFiNzMzZDFhODVhNjIgcHkzaworNzk1MDggNGRkNmViNmJlODJmZDUyZjBiZTc2OGZkMzZlNzg1MjFlODRjMWE4YiBweTNrCis3OTUwOSA2MzI2OWM0MTg1YzUyZTY5ZDY1N2YyY2IwYWM0NWNmMWM0MDEzMzBmIGxlZ2FjeS10cnVuaworNzk1MTAgMGMwMjU4NGM0ZTUzNGZlN2YzODVjMTgxZjQ2MzAwZjJkMDk2MzVjZiByZWxlYXNlMzEtbWFpbnQKKzc5NTExIGE2MDk1NGViNTE4Yjk4NDlhOTI3MzI0NDgwMmRiMjFlMTIzMzVjNTIgbGVnYWN5LXRydW5rCis3OTUxMiA5NjUxYzg0YzUyMGQ5ZThiYTVkYzkzMzQ1ZTVlZmVhNGU2YzllNTgxIHJlbGVhc2UzMS1tYWludAorNzk1MTQgNjBmOTEyNGZkZWFjMDUxMDg5ZGVkODBlMWU4MTg0ZTI5YmEyZWY5NSByZWxlYXNlMjYtbWFpbnQKKzc5NTE1IDQxOWZmNzAyNDQ3ODM4OWUwZmY1MDg2ZWJlNGY1YTQ2YWMxZWM5NTkgbGVnYWN5LXRydW5rCis3OTUxOCAzNGQ4MjIxOTZkOGJkMGQ2YWJkMDg2MThiOTVkMjEyNTdkMjA2MDU2IGxlZ2FjeS10cnVuaworNzk1MTkgZWY2ZWJjMDZhNzg2ZGMwMGEzODkxZjc5NDFmZWRmMDc4ZDIzOTI1NiByZWxlYXNlMjYtbWFpbnQKKzc5NTIwIGZmZTdjNzkxYjViOTQ4NzhmNGFhZTNlMGQ3NzE3OWI0ZTE3MjA2YzkgcHkzaworNzk1MjEgMTMyMzIxMmRhMTU0MDA0YWZlNzI4NzNjYTZmMDQ2ZmE1YTVhZTk0YyByZWxlYXNlMzEtbWFpbnQKKzc5NTIyIDVlOWVhZGM3NmU4N2VmN2JlNmQyYWFjNDFlYWNjNTZmZmM0NWZjMDcgbGVnYWN5LXRydW5rCis3OTUyMyBjYWQxMjY0MjhmNDhkNzhiOTdkYTc3MWZhYjVkNGI3NjJkODljODhhIHJlbGVhc2UyNi1tYWludAorNzk1MjQgNTdkOGQ3ZjMxN2Y1MDFiNDE1NWE5OTQ1MjEyMWEzMjhjZGVhOTU2YSByZWxlYXNlMjYtbWFpbnQKKzc5NTI1IGZkNWMwZWEyODcwYmFjNGIwZDFjOTI5OWYwMmNiZTc1YzRhZDA3ZDcgcHkzaworNzk1MjYgZTRmOTY5MDEyZTY4M2NhZTJlZDg5MTgyYzZlNTEzYjgxZjRiODJiOSByZWxlYXNlMzEtbWFpbnQKKzc5NTI3IGQ1N2NmMWFhMmRkNGQwMGMzYzM3MGFlM2RjNTk3YThkMDA2MzI0YzUgcmVsZWFzZTMxLW1haW50Cis3OTUyOCA5OWU1MjMxMzJhZWE0M2Q3OGE3NjRlMTA0YzkxYzYwNzc5NDFiNDUwIGxlZ2FjeS10cnVuaworNzk1MjkgODdiYzBmMTA4NzAyMTM5MTA3MjllNTFiMzMwOTRiMmFhMDliMDI5NCBsZWdhY3ktdHJ1bmsKKzc5NTMwIGEyZTYyNzgyN2JmMzUwOWFiNGE2NzgxYmZmYjZlM2U4NTI3MzAxMTAgcmVsZWFzZTI2LW1haW50Cis3OTUzMSAwMWU4YjEzZmE5OWE1NjVkYzVhOWVlMjU5ZjAxMjM4Y2U2NDYxNjcyIHB5M2sKKzc5NTMyIGVjYjlhNjYwOWJiMWM1NDUwOWJiOGM4ZjFmNzdhMzg2MjJmMTc4ZjUgcmVsZWFzZTMxLW1haW50Cis3OTUzMyA1OTIwZjlhNWUyMmQ4ZDMzYzExMjQ0YjgxNWZlMjIyOGI1MzBmOTI2IGxlZ2FjeS10cnVuaworNzk1MzQgODMyMDIyZjYzYmNiZDY3NTU0MDg4MThkOGE2MWI2ZmE4NjRiMzNhMiBsZWdhY3ktdHJ1bmsKKzc5NTM1IDdiOGJhMDE5Y2QxNWI1MjA5ODdhMzgxNTllM2RiZWFkYTRjZThjMDIgbGVnYWN5LXRydW5rCis3OTUzNiA0ZmNhYWQzZjY2OWIyM2Y2YmUzYTcwNjE5ODU4Y2E3ZThmYmU1Y2Q3IHB5M2sKKzc5NTM3IDU3MGVhZTE0ODFlYjYwMTFmYzA5ZmMyYmMzN2VjNDRlY2FjMmE4YTMgbGVnYWN5LXRydW5rCis3OTUzOCBjMzZmMjNkYTg4YzFhYTU0M2ZkNmM0NmFjZTZhOTYyOWJlM2U1YjJkIHB5M2sKKzc5NTM5IDM3NDhiY2E0ZDg2OThhYjA3Yzc2MDg0MTI0MWNiMTdkMGQwMmI3OGMgbGVnYWN5LXRydW5rCis3OTU0MCAyNWE3Y2UwMjMwNmNkZjFkM2MxMmI5ZmYyODc5OTViOTZlZGJlYTRkIGxlZ2FjeS10cnVuaworNzk1NDEgZDAwZjJlYTI1ZDIwYTQxZjI0NmQ2NjgwZjVmMzFjN2M3ZDMyM2JlZiBsZWdhY3ktdHJ1bmsKKzc5NTQyIDdiNjdjMzQyOTE3Y2NlNjkxMDQ3YTdhNTAwYmMwMWNiODdiZWRmNDIgbGVnYWN5LXRydW5rCis3OTU0MyAxM2E4MTEyZWNhNTJmYzNjZjRjOGRlNmI5YzMxOWNlOWU4MTIxM2FhIGxlZ2FjeS10cnVuaworNzk1NDQgYTRkYWQyMThjNmUzNDU2ODVkNzVhNzJhNDFhOTdjM2IyNTVjYjQ3YiByZWxlYXNlMjYtbWFpbnQKKzc5NTQ1IDFlMmM5ZmVhN2NiZTAxMGE2ZGRiZWJmOWMzMTYzZGYxY2U0YWMzODYgcHkzaworNzk1NDYgNWNjODJjY2U0NTIxNWZjN2U3ZjhhMzFkZmM5MmYzYTBkMDRlYWI2NyByZWxlYXNlMzEtbWFpbnQKKzc5NTQ3IGM3OTY1YmQ1ZDIwMDRlMmM3ZjMzMjlkYzI4NGI2YzU0ODAxMzIzNjQgcmVsZWFzZTI2LW1haW50Cis3OTU0OCA2ZGUzZGUzYWI3MWY3NTM2YThhMTA4ZmQ2NWFhNDE5ZDA3YzUyYmU0IGxlZ2FjeS10cnVuaworNzk1NDkgODgyZDY4MWQ1MGEwMDRlZWM0NDZhODI3NDA3Mzc4MjQxMWQzMWE1NyBsZWdhY3ktdHJ1bmsKKzc5NTUwIDU0YjBhNmY3NWVkNTc5NTA2ZDZiYTBjODUxYzlkODA2YTM5MWEzNGMgcHkzay1jZGVjaW1hbAorNzk1NTEgNzhlMjA5Nzc5MmJlZWFkMWM4MmM5NDk5ZTEzOTA5ZWE5MjUxYjJmZCBweTNrLWNkZWNpbWFsCis3OTU1MiBmZDhmZWY2YWZlZmQ4Y2RiZmQ0YWMyNTUyMmM4ODVhNzAwODU4OTExIHB5M2stY2RlY2ltYWwKKzc5NTUzIGU5NWY4NzU1ZmYxZTNmNjYzNGYyYmU3YzJhNTVjMTllM2IyZTdhZDAgcHkzaworNzk1NTQgYjRkZWFlYWI5NmU3OGQzZGNlMjM1NjM5M2Q1Nzk3ZWI5MWI2ZDVkZiByZWxlYXNlMzEtbWFpbnQKKzc5NTU1IDZkZjZjMTlmYmFlMzU4YzQ1ODE4ZjMzZTgzMGE2MmViMzMyMTNmMjMgbGVnYWN5LXRydW5rCis3OTU1NiAwNGU3NzViMzNlOWUyYTM3ZWM1YjIzNTU0YTVkMzE0OTg4YTdiNzEzIHB5M2sKKzc5NTU3IDk2MjAxZjQ4OGNjM2NlMjg0ZmUwMGJmOWFiMmYwZDM3M2RlZDJmNTEgbGVnYWN5LXRydW5rCis3OTU1OCBhNDA0ZTM3MDJmNzlmMjhjMDJjMzk2ZWM1NmFlNjEzZmJiOGY5ZjA0IGxlZ2FjeS10cnVuaworNzk1NjAgYzhhNjAxZTc0NGNmNjg4MzBkZDY0MzBmNjIzN2JjYWE2ZTU3MWQxNiByZWxlYXNlMjYtbWFpbnQKKzc5NTYzIGYxNzE3MTI4ODBjOGViZDJmNDUwNjM4MTY1M2VhOTY4NWJlNjI5MjUgcHkzay1qaXQKKzc5NTY0IDZkMzQxNWMxNWI4YmY5MjA4YmM0ODA4NGUzNzQxOWM5YTBlN2FmMDAgcmVsZWFzZTMxLW1haW50Cis3OTU2NSAxYmVhNTQwNGUwODdjMGU1ZmI1MzgwNzAxYmE5NGI5Y2E4ZmJkYmYxIHB5M2sKKzc5NTY4IDUxMmI4MDI1MDc4OWI3NzI4YzE1ZWIwMTgzZmYyN2VhNWI3MTQ5MDggcmVsZWFzZTI2LW1haW50Cis3OTU2OSAyNDc4YzM4ZmVmZjc0OWY4ZTZhZjU4MzZkNmE3YjQ3YTY3NWYzN2E0IGxlZ2FjeS10cnVuaworNzk1NzAgNWJhZDgxOGQxNGYyODczZjM5MzlmYTdiMzZmZjY4YWYxNWQzYmQyNSByZWxlYXNlMzEtbWFpbnQKKzc5NTcxIDNmNDQ4MjUyNmY1NWEyNjg3ODdhMDFkMjc4YjM1ZjQ4NjljZGNjN2YgcHkzaworNzk1NzIgMzg4MDZkZjA1ZDA5ZDZkZWY4YzY0Nzc4NGI4YTkzNDkzODQ4OWIxNCByZWxlYXNlMzEtbWFpbnQKKzc5NTczIDRkOWQ5NzYwYzg4YmVmNmQ3MDIzMzc3ZTRjMjRkZDBjZDY3NDg4NmUgcHkzaworNzk1NzQgNDE1YzRiYjQ1ZmU2ODc3NGY0YjA4ZDU4NmU4Nzg3MTVmNDM5NGRmNSByZWxlYXNlMjYtbWFpbnQKKzc5NTc1IGI2NDczMTU0YTcwYmMzMzE1ZWU1YTczYmE3NmUwZTRhZjQyNDE4ZDIgbGVnYWN5LXRydW5rCis3OTU3NiBlYWIzNjE2MTdmNmE3ZDA0MTlkYTQ4YzkxMzE2MmNjMzIyMDFmNTRiIGxlZ2FjeS10cnVuaworNzk1NzcgYmFjNGIyODlmNzlhYWQ1MzA2Yzg0NjY2ODEzZTY3NjIzZjgwNjI3NyBsZWdhY3ktdHJ1bmsKKzc5NTc4IGViOWZkYTkwZGE2ZWQ4NGQ1NDdjYjljNTljNjMxZDY3ZTMyNzI0YjEgbGVnYWN5LXRydW5rCis3OTU3OSBmMzg5MTliYjI2Y2M3MTE5ZmQ1YTg5ZGMyN2MzZDY1ZjY4OThkZmNmIGxlZ2FjeS10cnVuaworNzk1ODAgN2E0YTBjNjllM2E1ZjIzZmYyN2JmZDcyM2NiNzhhMTFiZjMzNzE4NyBsZWdhY3ktdHJ1bmsKKzc5NTgxIGI1N2RhNGE0YTNlZDk1ZWJkMWVhYTY2ODZlZDRlM2E5MmUzMzJkMDkgcHkzaworNzk1ODIgZTgxY2E4OGQ0NzhjYzU1ODMyMTllM2ZhNjNiMjkzNTNkM2U2YjNiNSBsZWdhY3ktdHJ1bmsKKzc5NTgzIDEzMDYwMzNkOGFkMmFiNzE5YWM4MzljMTRjODIyZjY5MzUwNjVhYzcgbGVnYWN5LXRydW5rCis3OTU4NSBlMzVmZWI5OTViZDk2YzQ1MGIyYTBkM2NjYzJjNDBjNTRlZWZiMjI5IGxlZ2FjeS10cnVuaworNzk1ODYgYzViMjA2NDVlOTMzNTBjNzQyYjg4NzVlZWZkZGJlMGMyN2ZhZjFjYSBsZWdhY3ktdHJ1bmsKKzc5NTg3IGY3NzU1NmZlYmVjODIwY2YyMDM1NjFjZWJmM2Q5M2E3ZWQyMDk5ZDcgbGVnYWN5LXRydW5rCis3OTU4OCBhZTdjZjU3OGRlNWFkZGUwMDM5NmY1ZDVjYjM5NjkwNTdhZWMxODJjIGxlZ2FjeS10cnVuaworNzk1ODkgMTdmMDhkNjVjYzBkODFkZDQ3NDJkNWJmOWQ2YmY3ZTU1ZmI0ZDcwMCBsZWdhY3ktdHJ1bmsKKzc5NTkwIDU3ZjRjOTkwODJkZjU2MDk3MTYzZGRmYjA3YTdjMGViOWE3NDgwNWMgbGVnYWN5LXRydW5rCis3OTU5MSA0OGZkNjljMmEyYjQ5NGYyYjEwYjA5ZDg1YzNjNjdiNjFlMDMxNTAwIHB5M2sKKzc5NTkyIDFkZjM0ZmE0OTFiZGEwNGIwMjJiNTZjMmZhY2E1ZDYyNjYyNWIxNTMgbGVnYWN5LXRydW5rCis3OTU5MyBkNzdlMzg0NjBlM2NhN2Q2YjJjOGRlYjkwZTJiZDg5Zjk0NzIzNDdkIHB5M2sKKzc5NTk0IDRiNTVjZWE1NTA2Nzc2ZmFkODhjZWQzODAxNTMwMDc1YzNiYzEyYjAgcHkzaworNzk1OTUgNTE0OWQ0ODRkNTZhYzgxZGI3NWRkMWYzNThlYTU0OTU1ODhmYjhlNSBweTNrLWNkZWNpbWFsCis3OTU5NiAyMDQ5N2Q4NWUwMTEyZWMzZTRjODFmZWIxNTRmM2IzMjkwMWZlNzFlIGxlZ2FjeS10cnVuaworNzk1OTcgM2YxZDZlZDQ4MGRkODFiMDQzM2I0NzFiZDRhNzBhMTQ0ZmI5NDVhMyBweTNrLWNkZWNpbWFsCis3OTU5OCBlODA1MmE2MGJiYjdiNmVmMzJmMGI3MDRlYTdkNDI2NDdkNWY5MGI1IHJlbGVhc2UyNi1tYWludAorNzk1OTkgY2ZiYTU5YzM4MzQxNWMyOTJhNTY0MTAzNDFjYjU3MTQ2ZGVlYWIxZiBweTNrLWNkZWNpbWFsCis3OTYwMCA4NzBmZjYyMjBhMGI5OWIwNDIwYzNjZTFiNjZmZTMyOTk3ZDM4YjMwIHB5M2sKKzc5NjAxIDI3Nzg1ODNiZTIxZDYyY2VlYTg0ZjNlMDg4NWI1ZDc1MGQ3YzIxYWEgcmVsZWFzZTI2LW1haW50Cis3OTYwMiBkMTEwMWFhOTg0YzA3NWJjN2RjNmVlMjlkYzcwN2FlYWI5MjFiMDcyIHB5M2sKKzc5NjAzIDRhYzA1ZDFmNjBjMTgwNjhiNjQ4NDYxOTM0ZWEwMTM5NjQ3YmU4OTIgbGVnYWN5LXRydW5rCis3OTYwNCA2NmRiMDNhNzA3Njc5YzY5YTdlNzAwNmNjNDIzNWY3YmIyZDg4OTlkIHB5M2sKKzc5NjA1IDY5OTI0NjdiYjhiNTljNjMxMGQ0YjUxODg5YTVhZDYwOTAzODQxOGMgcHkzaworNzk2MDYgNDNhODM3ZDI3MjhhMTM0MWYwNDZmMDE5MWZhZjc4ZTQ3MmQ3YjU4NCBsZWdhY3ktdHJ1bmsKKzc5NjA3IDFmZjhkZDY3YmU4MjI3YTc3MDBmODgyZDFjMTViYjI1YTExN2M1NjUgbGVnYWN5LXRydW5rCis3OTYwOCAyZjVkYzJmYTBlNTZhMjUxMDFiMzBhZmRmY2Y0YzA1MzgzNjhiM2RhIGxlZ2FjeS10cnVuaworNzk2MDkgY2NhNGI3MmY0NTBiNjQ3ODY3MmE4OGRlZDk5ZWEzMjE0OGI4ZjZmNiBsZWdhY3ktdHJ1bmsKKzc5NjEwIDI1NWE0MDFjMTliMDVhYWU2YTYyZmE1MDI5MjEyOTIzZTJlNzc3ZWIgcHkzaworNzk2MTEgZWZlYmI3YmNhZThiMTY0YjAyNTEwNTNjOTI5YjIwZDdiYjU1NDVhYSBweTNrCis3OTYxMiBiNDc5NmVmY2E3MTY0ZmZmY2MyY2EyMTg0MDgxMzc1YjAzYjdiZDkyIHJlbGVhc2UyNi1tYWludAorNzk2MTMgYTFkYWJmNGU4ODY2NTYxYmI1NzU3ZjNhYmM2NGZmMDhjODg2ZWI1NiBweTNrCis3OTYxNCA3ZGM4Yjg4YmIxNWE0MWU0YjY2ZWI4ZTllMjNmMzg2YTc1YjA0NjI4IHJlbGVhc2UyNi1tYWludAorNzk2MTUgOGQ3MzE3YzkyNGNlZjgyNDI2OWVlZGQyMWU1NjgzODM0MTE1ODA5ZSBweTNrCis3OTYxNiBlZWVhMzQwMTRjODAyNjg2ZDU2YmUxODI0OTAxYjBiODRlNmQyOTUzIGxlZ2FjeS10cnVuaworNzk2MTcgMjc4ZTdlY2MwZjc3ZWYwZGU2MjNhMTNiMzMzZTQ2NmQwNjY0MjY0MiBsZWdhY3ktdHJ1bmsKKzc5NjE4IDlkNTBiY2QzZjBjOWNhODViNzgyZTM0OGU0ZDdjOTY4NWVlYzY2ZjAgbGVnYWN5LXRydW5rCis3OTYxOSA3YzkyMzgwODVhNWNlMGEyNmUyMTBhMzU1MjM5NmIwZDUxZGUwOWVmIHJlbGVhc2UyNi1tYWludAorNzk2MjAgMzc3YjI2ZDg3NmUwZGZlN2FlNTkxZWM2ZWQ2ZGUzZjBlZmU0YWNkMiBsZWdhY3ktdHJ1bmsKKzc5NjIxIDUzYWZjZGM5YWUwYWJjNjkxMGMzNWMyNTEwMmY4YmMxNzVjZThmMzcgcHkzaworNzk2MjIgZjc2YzNkZWM4NThiN2I5Yzg1MTAzN2ZlZDg3YWExZDNiYjk5ZjVhZSBsZWdhY3ktdHJ1bmsKKzc5NjIzIDcwYjdlNGE3ZjdjZTIwYjJlNzcxMTMzNjNiNzllOWNhYTc1MzUwZjcgbGVnYWN5LXRydW5rCis3OTYyNCBhYWI2NDI4M2QwMGExZmU2ZTQ0Mzk5NGIyYzM5MTA0N2I5ZjQxZDkyIGxlZ2FjeS10cnVuaworNzk2MjUgODRlY2IzNWEwNmJkZGY2Y2ExODZjNjkyYTU1ODc4ZTM2N2FlM2VmYiBsZWdhY3ktdHJ1bmsKKzc5NjI2IDFiNWQ1ZTc0ZjczOGY0MWE0NzQ4ZGJjZDcxNzYzYTYzNzE2ZjAwMDcgbGVnYWN5LXRydW5rCis3OTYyNyBmMGJiMTBjZTA1Yzc3MjY2NzBjNTEzZWNlNDQwMTVmMGEyNDMxODk3IHJlbGVhc2UyNi1tYWludAorNzk2MjggYWVhMzE5ZWEyNmE4ZTkwMzIzZTNjNTE3ODMyZWFkZTYxM2E0Zjc3ZSBweTNrCis3OTYyOSBmZmEwYWE3MGM3NDY4M2Y0NTBiOGZjNjlkZGU0ZjNiMWNiM2ExZWE5IGxlZ2FjeS10cnVuaworNzk2MzAgNzY1OTQzYzExMTViOTViZmRhM2M4MjhkNWIwZGUxZDY5OGEwZjA1MSBsZWdhY3ktdHJ1bmsKKzc5NjMxIGMzNGRkY2EzNjc4NmMxYzRkNzE4NWVlMzFiOWVjNzU5YTk2OTA1NDkgcHkzaworNzk2MzIgNTQ2MmM1YTkxZjhkY2I5ZGM4ZjQzZjUxZTI4OGI0YmQzYjE2NzBkYiBsZWdhY3ktdHJ1bmsKKzc5NjMzIDBhYjg5ZThiZGVkYzU3NjZkZTIxN2NhMjQ3ZTg2MzBlMjAwYTY1MmEgbGVnYWN5LXRydW5rCis3OTYzNCBhN2U5ZjhlMzU1M2Y3Y2E1Njk3MzFjMGE0NzYyY2Q2YTVkMGRjMWYzIGxlZ2FjeS10cnVuaworNzk2MzUgZDQ3OTllZTY0YzIzYjFjNTg0YjIyNDI3OWRkZTFmMzdkMGY3N2UwZCBsZWdhY3ktdHJ1bmsKKzc5NjM2IDQ4NzdjMTE1OTE1M2Y1ZWZkOTlkY2NjNWFiOGQyZjc3YjNlNGE0OGQgbGVnYWN5LXRydW5rCis3OTYzNyA0ZWQwNGEzOWMwYTkxYjkzZDU2YWY2ZWJmNTExZjM0ZTBkNzU5MDYyIGxlZ2FjeS10cnVuaworNzk2MzggNTQ5NjUwM2I4YjFhYmQ3MmYwM2Q0ODY1OGYwNjIyYzlkMjRiNmM4YSByZWxlYXNlMzEtbWFpbnQKKzc5NjM5IDg2ZjY5OTc2NjAxNjJjYmRkYTAxOTJjM2VjMDk3OTA4NzI0YTY5ZjEgbGVnYWN5LXRydW5rCis3OTY0MCBkMzg1ODk1OGRmZjUzZTYyNDM1MjIxYWIxOTU4N2Q1MzBlOTgyZTMxIGxlZ2FjeS10cnVuaworNzk2NDEgYjUyOWExNDJjYzQ5ZTZmMzEwYWI3NDYyZmQyZmYyMjYxYjViNGM0MCBweTNrCis3OTY0MiBkMzM0YTdhNTY4NDQ5OGNlN2VlOTU5YTQ4MDBiNjAzMDE5ODEyNjNmIGxlZ2FjeS10cnVuaworNzk2NDMgZWJjZWI3Nzk2N2RlODYzNDhhMTJmYWUwMDM5NDZkZTI5OTBjOTE2NSBsZWdhY3ktdHJ1bmsKKzc5NjQ0IDZkNDgzNWE4MWI2MzJhZDAyMGY2YjBiOGQ0OGI2MWFkZGJmZDAzYWUgbGVnYWN5LXRydW5rCis3OTY0NSBmYTY0MWQ2MDU0Njg4NGZkOWMwNjIxMTlmYWI3ZGFlYjc0YzAwZDcyIHB5M2sKKzc5NjQ2IDY2YjYwYTZlODE5ODQ2ZjZiZTBlYTY3OTE1OWZhMGJkNmM1ZDc2ZDIgcmVsZWFzZTI2LW1haW50Cis3OTY0NyBhODhlMGY2YWI5NDVhMTY2OTMxM2E0YTIwYWI4NWExM2M2ZTk5NWVjIHJlbGVhc2UzMS1tYWludAorNzk2NDggODllODdiYThhYjRlMGIwZjUzMTY0ZGRiMjFiM2RmMWQ0ZDgxMWNmYiBsZWdhY3ktdHJ1bmsKKzc5NjQ5IDZmZTVkYzE3NWMyNjRkZjJhYjEyMjUzODdhYmQ5MGVmZTVhOWI4OTIgbGVnYWN5LXRydW5rCis3OTY1MCBmZGQwMTM3NDMyZjg1MzczOWY0MTVmNzg1MGRiY2I5YzVmODI5NmU5IGxlZ2FjeS10cnVuaworNzk2NTEgNWViY2E2MjI4OTAzNmIzN2JjYjdmZDRlMDhiNDg5N2RhMTIxNTQ2NyBsZWdhY3ktdHJ1bmsKKzc5NjUyIDUwYjJjMGZlNWUyN2IzOWMyMzRjMTlmMmUzM2Y5ZTJhMzg3MDI2MjcgbGVnYWN5LXRydW5rCis3OTY1MyAxNTRkY2ZhMzJiMjAxYWVjZGFiNzZmNWZjZWMzYzhkOGVhNjJjYjNjIHJlbGVhc2UyNi1tYWludAorNzk2NTQgYTcwN2NhMjYwMzQxYjVmNmYyODBhNzI1NGVhNmE4ODQxOGQ2ZmU1YyBsZWdhY3ktdHJ1bmsKKzc5NjU1IDYyOWU3YjNjOGIyZDk3NmRjNzBmNjRlM2M3YWUxYjk3NTQyNDI1MWEgcmVsZWFzZTI2LW1haW50Cis3OTY1NiBlYTRjNmMwNjg5NTAwOWQwZTAzZjk3M2EwMjcwNjI2ZjgzYmNlY2FlIHB5M2sKKzc5NjU3IDY1OGIzOWU2NmRlZmVkNmY2ZGVmN2M2ZTMzMjFlMjJlMjIxY2MxMmQgcHkzaworNzk2NTggZDVmMmM3NDI1YjRhOTQ3ZWU4NTFiZmQ1NGMyOTJiZjljOGVjNmRkMiByZWxlYXNlMzEtbWFpbnQKKzc5NjU5IDQ0ZDMyYTZjOWUzNTdhMzNhYzYyNjM5YTc5OTMwMTc5MzQ1MGQwNDUgcmVsZWFzZTMxLW1haW50Cis3OTY2MCBkYTdiMDAwNmE3OTk3ZTc3YjVkNzhmZjNjODNlYzhlNTY2OGU5YmVkIGxlZ2FjeS10cnVuaworNzk2NjEgYWQ5NGFmOTEyOWNjYTNkZGRlNjI2ODgyNTg0NDMzOTdkYTIyZTEyYiBsZWdhY3ktdHJ1bmsKKzc5NjYyIDdjYTZhMzQzMWY5ZTI3Y2ExMTRmZjdjNDNiMzBjNGVjMThmM2Y4NTkgcHkzaworNzk2NjMgZTQ3YTZmZjViNTIwZjBkMWU1M2Q4MGM0ZDNlZWEwOTVlMGI3MzgyYiByZWxlYXNlMjYtbWFpbnQKKzc5NjY0IDI4MTFiZTk1YzhjODQ0OGFlZWM5OWI2ZTg2Y2QyNmZlYzUwNzhkYmMgcmVsZWFzZTI2LW1haW50Cis3OTY2NSBjNTRkZDNlZWVkNTZiM2YyY2VlMGVkYTQyNmYzYmRkZjE3ODcxMWI0IHB5M2sKKzc5NjY2IDhjOGJkYzExZTliOTkyOWM1NTExN2NiODg5MWNkNWRkYTFlZTE4YjcgcmVsZWFzZTMxLW1haW50Cis3OTY2NyAxZDQ4NGM0ZGJmNjA0Y2RiZDcxZDhkN2NmNGQwNjE5ZTdmZmI0MzdhIHJlbGVhc2UyNi1tYWludAorNzk2NjggNTA3ODIyMGJkMWVhNjMyMGJjMjc5ZmUxNTk3ZTk3MWRmMzgyOWM5MCBweTNrCis3OTY2OSAzMzRkNDU2MmM4NzVhOTAyMTU3OWQ0ZWNhZTU2N2IzOTA2MWY2ZDE2IHJlbGVhc2UzMS1tYWludAorNzk2NzAgY2Y4MDM3NzE4NGZmYWE2ODY0NDMxZTM1NDBjOWNlYjZiMWVhYTAzMSBweTNrCis3OTY3MSBjMmIyMTdmZTRlZDQ1NDgxZWI2OTJlY2ViYTg5MjJiZmRkZThiNTA2IHJlbGVhc2UzMS1tYWludAorNzk2NzIgYzBiNjI5OWI5M2VlYmU4NjZiZGRiYTg3NzRkMmJjZjhlYmVmY2I3MiByZWxlYXNlMjYtbWFpbnQKKzc5NjczIGIxYzAwYzdkM2M4NTVkNTE3MjY0NzZkZmE1NmYwNGIyODY4YTZmMWQgbGVnYWN5LXRydW5rCis3OTY3NCAwNTQwYTk2Mjg2OTg4YTRkYWE3MzQxMmI5ZDM3NzcwMTY4N2JhZmQxIGxlZ2FjeS10cnVuaworNzk2NzUgY2YzNGZjMWU4NDEzZTE3Yzk3ZmJlOWQzMDNkNDViMzlmMzQ4YWNjMyByZWxlYXNlMjYtbWFpbnQKKzc5Njc2IGIxOTQxY2ZmZmE1Yzg1MTYxZmEyMjAzMGI5ZTAxMmQzZGY1MDQzYWYgcHkzaworNzk2NzcgZDMxZTI2OWFhY2RlYmQwODI0OTM3MDU4NWU4YmJkY2Y4M2ViMjVlMCByZWxlYXNlMzEtbWFpbnQKKzc5Njc4IGE2NjU0NWRiM2IwNjk4YTk5MTc3NTRiNmEzZmE1ZmZhNTQwMDFjMDEgbGVnYWN5LXRydW5rCis3OTY3OSBlYjA0OWMzYzA4M2ZjODIxNDM2NDNhMDJiZjI0MTIyZWI3Nzg3ZGQ0IGxlZ2FjeS10cnVuaworNzk2ODAgMjc0NTFhOTY3NjUwMGQwNzQ2N2Y4N2I5Y2IyYThhOGZkOWQ4NzMxMiByZWxlYXNlMjYtbWFpbnQKKzc5NjgxIDUzZWUzOGU2MzhiZjkwZTk4M2U4YWY5MzM2Y2E3YjZiNTU0ZjA3ZWUgcHkzaworNzk2ODIgM2IxZDBhM2FkZmZmYWU3NDlkY2UyODhhMTc5MmVkOTdlZWY4Y2M4ZSByZWxlYXNlMzEtbWFpbnQKKzc5NjgzIGJkNTEyMWJmNjk5NmQwYzNlOWUxNWI3N2UxNDEyZjcxNDEwNDgzMDUgcHkzaworNzk2ODQgYmE0ODJmNDg4N2Y3ZDY4MDJjMmU4MTY3MTdmMTliMzUwNGU5MGYyNiByZWxlYXNlMzEtbWFpbnQKKzc5Njg1IGE1ODRmMjQzMTgwZDUyYTZkNmMyMmMxMDNlNzJkZDc3MzNkYTc2NzkgbGVnYWN5LXRydW5rCis3OTY4NiA3ZDI3MjQ4OGI2M2M5YTQyZjIzOGViNzcxZGQyZjkyNjM1Yjc1MjBjIHJlbGVhc2UyNi1tYWludAorNzk2ODcgNTgwZjJmNWJhODVmMzY1MTgxNjgxM2VjNzczNjk4YjJiNWI3YmI2OCByZWxlYXNlMzEtbWFpbnQKKzc5Njg4IDliMjRhYTM2YzA2ZjgzZTNiYjQxZmQ3ZjU1M2RlZDZjM2Y3NDNhYjEgcHkzaworNzk2ODkgZDE1MjM1ZDIxMzdjMTQ4NTgxZDI5NjQ5ZjJmMjc5MmQ5NGQ5NWMwNyBweTNrCis3OTY5MCBlYTEwY2I2MTM5MGFlYTIwZmJkOTY4YzAzNWRjNTJmMTUwOGU0ZGUyIHJlbGVhc2UzMS1tYWludAorNzk2OTEgNGE2ZTIwMTM1NDcwNjhmMDc3MGI3YmMyNjgyYmJkMDY0YjgwYjdjNCByZWxlYXNlMzEtbWFpbnQKKzc5NjkyIGM2Njk5NWJlZmU0MjQyMWI1NmU5MGFmMzQ3YTRlZDQxNTljNzQ5YjAgcmVsZWFzZTI2LW1haW50Cis3OTY5MyBiNjJhNjgyMTE3ZTAwZjM4NTI5MGE1ZTRkYWNiODVlZGZlZWE0OTU4IGxlZ2FjeS10cnVuaworNzk2OTQgMzUyN2Q2NTc5ZWMyOTBmZDkwZDliNGZjNDdlNmE3Mjc1MWZlNDViMiBweTNrCis3OTY5NSBkNWFiZDhkZmQ0ZjRiYWEwYWJmYmM4ZTYyZGU5NTMxNGQ1YWY5NzEyIGxlZ2FjeS10cnVuaworNzk2OTYgMDZhNDZmOTUxOTRlZjE0MTUxY2VjYzY1NjFiZDlhNjk0OTNjYmNmNSBweTNrCis3OTY5NyA4YWI5NjBiNjExYTZmMWI5MWJlYzg4YWIzMWI5MGZmZjI4NjEyNDMyIGxlZ2FjeS10cnVuaworNzk2OTggMzllZmQzZmM1OWVmYTdmMDhjMDg5ZGQyMDQxODRmYjQyNDA1MmJmNiBsZWdhY3ktdHJ1bmsKKzc5Njk5IDg3NjY2Mzc2ZDhiMDUwNDI2YWVmOTUzNTQzNTg4YzdhOGY0M2Q0ZGEgbGVnYWN5LXRydW5rCis3OTcwMCA0MGJjOGIxY2E5MzI5ODlmN2ExZjc3YjJhMmIxZjdiNTc2YmRhZjg5IHJlbGVhc2UyNi1tYWludAorNzk3MDEgM2EwZjUyNWI1OWI1OTc0OGMxNDAyZjQ0M2ExMDgyOTFmYzBmMGY5OCBweTNrCis3OTcwMiA4NmJmMzhlYTMxMjM2ZTNiZWFlMDkwNjlhODc1Y2I4MDIwOTk5Yzc2IHJlbGVhc2UzMS1tYWludAorNzk3MDMgYWExMjFhMzlhOTU2NzBlNDg2MjZhMGE3N2JkODZkY2FhNDdhNDMxMSBweTNrCis3OTcwNCBkYTM0ZDFmNDNjYjAwMDVmZmY5ZDhlZDc2YTFkMTdhNGY1NTcxNjAzIGxlZ2FjeS10cnVuaworNzk3MDUgN2ViOTA3Yzg1NGI0MmFkOWRiYmIxODI1NmI4ZjRhNDg4OWZiNGZkNCBweTNrCis3OTcwNiBjMjFiYzgwYzgzZjYyZmRkMTYxOWUwMTE3YzVjYzFiNTI2ZjZkZmYzIGxlZ2FjeS10cnVuaworNzk3MDcgYjI2MjVhY2MyNDg0ZTUwZWI2MDIzNWJkYTQ1ZmU5YTg3NTRkYTAyYiBsZWdhY3ktdHJ1bmsKKzc5NzA4IDJlNTU5YzBhZDhjMzQyOGZmMjZjMmZmMmVlZDcyODM1MjcxYTU4NmYgcHkzaworNzk3MDkgNjE5OTBmNzYzNDg1OTMwZTc5M2ViOWNmYzlkOTg3MjY4OTIzZDU5ZSByZWxlYXNlMjYtbWFpbnQKKzc5NzEwIGUxNDYxMzEyNGNjMTQyODg4NDA3ZTcwOWY2YjIzMjM0ZGYwMWNkN2QgbGVnYWN5LXRydW5rCis3OTcxMSA2NjE1OGU0ZmQwMjI3ZTQwNWU2YTJiOWZiNWQ4Y2ZkMDY5NDBjYWRjIGxlZ2FjeS10cnVuaworNzk3MTIgYTE4NDIyN2NmYjk0M2EwYzBkMDI1MjBhYWEwOWE4OTViY2Y3ZTMzNyBsZWdhY3ktdHJ1bmsKKzc5NzEzIGM3M2E2NThkYTZmYWMzNDQwMzJkYzQyODJiNDk5ODM5YzQ0Njc5NGMgbGVnYWN5LXRydW5rCis3OTcxNCBlMjlhMmUwM2U3MzllNjY2OWVkYzZhYTlkYzY5NTFiNGQ3ZWNmYWMxIGxlZ2FjeS10cnVuaworNzk3MTUgM2Y3ODY0YzFjZjNmNjE1NDNkNGQxN2E3ODVjMjU4ZmMzY2RkZTIxNiBweTNrCis3OTcxNiAzNDViNmFiMzJkNjU0ZjQ2NjRlODAyNmFkMDY0ZjAzODg4ODE5OTAzIGxlZ2FjeS10cnVuaworNzk3MTcgODJjMjAzNGI4MDk1Zjg0NDAzNDkxZjllZmNhMmZiZTM2MWIwMzA3MiBsZWdhY3ktdHJ1bmsKKzc5NzE4IGVlMzQyNWQxYzY4OGNmZDgxNWNjNTVjNjQzZjhmNjAzYTFmYTAyZTQgbGVnYWN5LXRydW5rCis3OTcxOSA0ZDg0ZTNmYTMzM2EyMWY4OWRmNzQ3NjExYWU0MTM4MTM0YTlmNmU4IGxlZ2FjeS10cnVuaworNzk3MjAgOWI1MDBhMmM4NTlkMDZmYjY3MTQzZGFiMTJiZThmNDllMjQ0M2E1MSBweTNrCis3OTcyMSBjOGY5NTUwMDNiMmMxYzVhMzc2YjNjZTcxOTNlY2U1ZTMxMjFlNjA1IHB5M2sKKzc5NzIyIDZhMjRkZWZjYzAwYjJjYjk4MDVhODJmN2Q3NTNkMTU4ZGEyYWUwYzIgbGVnYWN5LXRydW5rCis3OTcyMyA5NjVlYzYzNTZkNWQ4NDQ0MjBkZjA0NmI2ZjY1ZmFjY2ExN2MzNTJiIGxlZ2FjeS10cnVuaworNzk3MjQgODFjMmY1OTJlODA4MTBhODQ2NjFiZjJiODYxOWYzMDMyNjIyYTM5MCBweTNrCis3OTcyNSAzYzRjMGE3MTZhMThhNDhmZDUzZjBkNDJhOTAzOThlYjQ5MzhiMzE4IGxlZ2FjeS10cnVuaworNzk3MjYgMGNmYWJlZDQ2NjY5Y2U5ZDBhODRhNjFhZDRiMWM5NzkxYjg1Mjc2MCBweTNrCis3OTcyOCBkYTkzOWFiMmJmZTI3NzdhODA5NDFmMzA2Y2E3YzU5OGMyNzcxZWM0IHB5M2sKKzc5NzI5IDM5OTIxMDI2M2U3MTBjMDdhOGYxYzAxOGY3NDVhOTc1N2IxZWU5MDIgcHkzaworNzk3MzAgZWI0MTY3NjcyMTYzYzhlMzFlMDQxM2QyMzg5NjllMGQ5YTdlM2Q5MCBsZWdhY3ktdHJ1bmsKKzc5NzMxIDBkNTY3Y2U1ZWNlNGE0MzFkZmQxYjViNGZiODI1YWI2YTI3Y2U2YzggcHkzaworNzk3MzIgMzk1YTI3YTQ0YTllNDI0NmQ4ZmNiZTQ3NTU1NGQ1NDE4MTc5YjE1NSByZWxlYXNlMzEtbWFpbnQKKzc5NzMzIGQ1ODYyZDEyZDkyYWI0ZDQ0ZWE5YzMwYjYwODg4ZmJmYzExNjVjYmYgbGVnYWN5LXRydW5rCis3OTczNCBmOWMzNjhmZTFhY2YzMDhlMzI0YWJkNzBiN2M4NzgxMjRiYzc3ZjE0IHJlbGVhc2UyNi1tYWludAorNzk3MzUgNjc3N2NmYWI1MTUyZTJjZGZmZWNiZmM2OWJhOTJmZmU2ZGRkOTA0YSBsZWdhY3ktdHJ1bmsKKzc5NzM2IDllZTk3YTRhYjE1YzBjOWI3Y2M5NTE0NTdmNTRmMDQ1ZjhhM2RlYTcgcmVsZWFzZTI2LW1haW50Cis3OTczNyAyZGE1MTNiNDcyY2JlNTBkZTRmNjQ4YjM0MzYxZjgxOTJiODMyMGM1IHB5M2sKKzc5NzM4IGE4ZGRlMDI1YTZmOTlmMDFmMGI3OGExZGVmYWQxZmU1NzhiMjRjZGQgcmVsZWFzZTMxLW1haW50Cis3OTczOSAwZGVmMjhkYjc3OTk3ZWVjMzQwNDc4ZTlhODlmNDY1YWQ0MWMxMDNkIHB5M2sKKzc5NzQwIDQ2MGY0MWJkMGUzNGFjZWU2NDVjNDQxYmI3YjU1ODBiZWFlYWFlYzcgbGVnYWN5LXRydW5rCis3OTc0MSA1NzE1ZGUyYTQwNTEwNTFlMmFlMTg3MjI4MTczMWJhN2I2ZDhjMTkxIHJlbGVhc2UyNi1tYWludAorNzk3NDIgNThkYzRmMzE2ZmY2NDZjZGMzMTg2Zjc2YmMwODQ1ZDMzMDRiZDk5NiBweTNrCis3OTc0MyA4MWZlMWQ0NWFlNzdmYTQyYzkzMTA0NTRkZWVkOTQyZmU5Y2QyZWExIHJlbGVhc2UzMS1tYWludAorNzk3NDQgNWNhOGU0MTUwNGI2ZjkyNzlhNmQ1ZTY0YjBkMWJmMjBjZDU5MDIwZSBsZWdhY3ktdHJ1bmsKKzc5NzQ1IGMzOTllOTNiZjBlNDVkYzJiNzFhYjFmNDkzNDcwYTBhMzU4NDc1ZmMgbGVnYWN5LXRydW5rCis3OTc0NiA3MjQwOWIyMzE5NjczM2EzNDNmN2Y2NjYzMmZiNzhjMzA4YzYwYjcwIHB5M2sKKzc5NzQ3IGMxYjg3ZTEzZTlkM2ZmMTVjNGUxZmI1MjJmMTUwMTdmY2I1MjllMjkgcHkzay1jZGVjaW1hbAorNzk3NTAgMWU2ZjI2ODAxNmU0NzM5NGFlMWFiNWFiMTc5NzI0MDA2NjRkNTQ3YiBsZWdhY3ktdHJ1bmsKKzc5NzUxIGVjMWE1NDEyZmY5MGRlYWUzZWRmZWI0MTRmZTgxZjEyZjFkOTM2YzYgbGVnYWN5LXRydW5rCis3OTc1MiA3YWMzZDg4ZTM1YzIxMGZmMmUyMWFkM2Q0M2JkMGJkMjE2NGQ4OGViIHB5M2sKKzc5NzUzIDhlMDY0MTc4NTUwNzQ1M2YxNjRkMTI5MWQ2OTExNWQ1MTE3NmZkMmEgcmVsZWFzZTI2LW1haW50Cis3OTc1NCBkYzYzNDExYTAxMDRlYmE0MmJmNmYyOWM0ZWNjZTI2NWZlYTU4ZWNmIHJlbGVhc2UzMS1tYWludAorNzk3NTUgNWRkYTNmMzJhMmNlMmRkMDFmYjZjMzY4MTk5MTE2NWJmMDA5OWVlMCBsZWdhY3ktdHJ1bmsKKzc5NzU2IDhhYTI5NmZhNmQ2YzUzYTA3NGEzYjMwMGJkZTJkNTBiZjZjMDAxYTEgbGVnYWN5LXRydW5rCis3OTc1NyA0NWRkOWJmMzYxZWMwMzE1ZjE4OTdiNzM1ZDRmNzdjNTU0NGU2NDhjIHB5M2sKKzc5NzU4IDkzMDdkZWVlZTQxMmEyMjNmMTRmNTgzMTI4MjQwZmZjNTM4MDc1YjIgcmVsZWFzZTI2LW1haW50Cis3OTc1OSBmNDE2ZjJjMmMwOTllODQ3NTM3ZjU4OTNkOGFiNzI0MDVkMGFkYWExIHJlbGVhc2UzMS1tYWludAorNzk3NjAgYjZjNmY0MmNkZGRlNWRmNGRlZGFmNWJkZmMwZjYwYmYyNWVkZDRiZCBsZWdhY3ktdHJ1bmsKKzc5NzYxIDAyMjVkMjlmMGJkOThlMzM1MDEzZTE2YzE0NTY5ZDNkNzllYTZmOTEgbGVnYWN5LXRydW5rCis3OTc2MiBhY2M5MDBkYzE4NGJhOWIwYzYyZjU4MmY4ZjdjZWRjYTc2ZTIyZWNlIGxlZ2FjeS10cnVuaworNzk3NjMgMGVjZTk4Yjg1M2Q1MTA0MWQ1OWJmMGZhMTJjM2YxY2JhODM4YWZmNCBsZWdhY3ktdHJ1bmsKKzc5NzY0IGE2NjFjOTZiOGQxMGVjZjdiOGI5OWQ1ZDdjOWU2OGY4ODZkNmZmNWUgcHkzaworNzk3NjUgZmIyZDY0YTRkODcyYzMyYzUzN2U3NmM1Njg5MjVlYzE3NmQzNDNiMSBweTNrCis3OTc2NiBiNjlkY2Y2MzUwMmM0ZGYyNDJmOTkxMzJmZTZkZGU0NTc4MTJlNDNlIHJlbGVhc2UyNi1tYWludAorNzk3NjcgYzA0YTYyMjJjYzdkZDU5ZGYyNzViMmM5MjRiNGI5N2Y3ZjhkZmUzZSByZWxlYXNlMzEtbWFpbnQKKzc5NzY4IGE5MDNiYjM1ZWY0ZjUzNTc1MGUwNzJiNzkwYjllYWY0ZGY4ZGM2OTkgbGVnYWN5LXRydW5rCis3OTc2OSBjNTRjZmU4MjhiODRhM2NkMGExMDVlMWFlMDc5MzkyYjQ2YmFmNGFkIGxlZ2FjeS10cnVuaworNzk3NzAgODAwNDM1N2Q1YmNjMDM3MmU1MjE4NmZiYTJlY2M0YTI5Y2UzMmJjNiBweTNrCis3OTc3MSA3MTc3OWY0YTIwNzgyOTRiNThkZjI3NjM3NjE4YWUyZTcyNmE0OTZkIHB5M2sKKzc5NzcyIDMzYTAyZTRhYzRjMmYxZTdlOTdiZGU0NTEwOTVhNzRlMmIwYTMyYjYgcmVsZWFzZTI2LW1haW50Cis3OTc3MyA4OTNjNzRkNTQ3ZWU3MzgwNjJiNjZkNWUzYmYzMjM3ZGVhYWVkZTc2IHB5M2sKKzc5Nzc0IDFhYmYzN2RiMjU3ZDk4OGRiZjYwMzYxMDdiMTdjMDUxMzQ4ODViYmMgbGVnYWN5LXRydW5rCis3OTc3NSAyM2RiYzhhM2I5N2E5OTk5NmE3ZmIwNjgzZDg3OTY1YzhkNGYwZmM2IHJlbGVhc2UyNi1tYWludAorNzk3NzYgNjBjYTg5ODNkZDNiMWUyNWZmMzQzMDc4YzM2YjFiMmE5YmFhM2EyYiByZWxlYXNlMzEtbWFpbnQKKzc5Nzc3IDUzNTIyMDRjOGU4OGM1YmQxZmU3YTlhZTAxNzVhYTY1ZWFiY2ZkMmIgbGVnYWN5LXRydW5rCis3OTc3OCBlNjgxNWUxYjc1MDJjNjQwOWU0ZmQ3ZDBlYWUwMjM3MDExZTc0N2E5IGxlZ2FjeS10cnVuaworNzk3NzkgMWNjNGQyZGI1Y2Q2YmRiM2I0NmNmYjRjMDg0MWQwMDIxMTEwZmRhNiBsZWdhY3ktdHJ1bmsKKzc5NzgwIGNmZTVmYTM0ZGI0NjY2NGM0ZmU5ODMwYjE0NWRiZDMxMWFkYmE3MjQgcHkzaworNzk3ODEgYzQwZmJmZmY2ZDdhYmM4OGQyMGEwMTZlYjJjYjAzYTE1OTRjODEwMSBsZWdhY3ktdHJ1bmsKKzc5NzgyIDdmNjkxODFiNjUyYzBhOWJmYjU3ZjZkOTRmMmRmNjMyMTVhNjhlZWYgcmVsZWFzZTI2LW1haW50Cis3OTc4MyAwMmJkMmY2MGJhNWQ4ZDUyZjM2ODIyMDZmZTIyNWM0ZDc0ZDZlY2IyIHB5M2sKKzc5Nzg0IDI3M2NkYTJiMDA1MzgxMmJhZWZkMjIzNWIyZmU4NmE1ZmRmMzgyMzAgcmVsZWFzZTMxLW1haW50Cis3OTc4NSBmZGNiZWI5ZjM3NGM3MTVlNmZmZjFjODNiYWM0Y2RhYjA1NDU2OTY5IHJlbGVhc2UzMS1tYWludAorNzk3ODYgOTdlOTVjOWQyNmRhYmYyMTRmOGJjNGQ0NzgzMjE5ZmVmOWE1ZDZmYiBsZWdhY3ktdHJ1bmsKKzc5Nzg3IGU0YmRjMjk2ZmM4ZTQyN2IwNTcyNjNjNmE3ZDllYmIxZjNmYzk4ZWEgcmVsZWFzZTI2LW1haW50Cis3OTc4OCBlOTRkNDQ2YzZkMGVmOTM5Yzk5ZTJhNGM4YjM5ZGZhOGE0M2I5YTc1IGxlZ2FjeS10cnVuaworNzk3ODkgNzJjMGUxNWMwM2IyNGEyMzNhYWY0ZjdhZDBkYWQ5ZTE1ZDgxNmExMiByZWxlYXNlMjYtbWFpbnQKKzc5NzkwIDI0Y2I0MTEyYjczMTEzMDlhMjA2ZWU5Y2JkZTVkMGZjMDQ5OTNlYmEgcHkzaworNzk3OTEgMzJhOGI1MjBkNzY3ZDdjOWM0NzQxYjk5ZGQ1YmY2M2ZjNmZhNTI5ZSByZWxlYXNlMzEtbWFpbnQKKzc5NzkyIDI4YjgyMzk4M2ZjZTlkNzM5YjBkMTdkYmE5NGY4NWRlYTRmZDAyMDEgbGVnYWN5LXRydW5rCis3OTc5MyA2YmVlNDNlYTdjMDBlM2FhYzMzMWM2M2YxOWFlNjA1YjY1MjkxMGFlIGxlZ2FjeS10cnVuaworNzk3OTQgZjg3ZDJiMWJhNDI5MGMzMDM4MjI5NjYyNmMwY2ZkMTljMDFlOTlhNSBsZWdhY3ktdHJ1bmsKKzc5Nzk1IGMyYjA5M2Q2ODBjZjMyMzEzNGI0OWEyZGFmZTE1YzMwNjBhYTExNzEgbGVnYWN5LXRydW5rCis3OTc5NiAyZDBjZTMwNzgwOWI0ZDA2M2NjZDQ5YTk0MjcxNTNhNjFjMTg4ZTU3IHJlbGVhc2UyNi1tYWludAorNzk3OTcgMTFkZTJjMjhkMWEwOTEwNjU3NzZkY2VjMWVmZWRjYWRhNmE0NjA4NiBsZWdhY3ktdHJ1bmsKKzc5Nzk4IDcwODhkMTgzNDc3ODRmMjkwODYxZjJhOWZlMWU2MGViNjg4ZWRjM2QgcmVsZWFzZTI2LW1haW50Cis3OTc5OSA5ZWM1OThiNDdkYTRkYmM3MGU5YzgxYjcyZmY1MDhhNjYxZjFjNTc1IHB5M2sKKzc5ODAwIGE3YjUzYWQ3YWQ5NzI2Y2UyNTY1OTM3ZWUyMWY0MWFkYTljYTBkZTggcmVsZWFzZTMxLW1haW50Cis3OTgwMSAwYTUzYzI1NGExOTM3ZGMwN2EyZGZiN2U2NTBlNzViZTFkYTMxZmY4IGxlZ2FjeS10cnVuaworNzk4MDIgZTc3YjJmZjI0ZGRiMTRmOTU4NmFmN2I2NjY5OTFlMjMyNzM4ZGRhMiByZWxlYXNlMjYtbWFpbnQKKzc5ODAzIDdmMmQ3YmZiMDU2NzA2Y2YzNzgxMmY5OTE4YWMyNGNjZjZlOTEyZDMgbGVnYWN5LXRydW5rCis3OTgwNCBhY2U3MTE1NTBiNTk3ZWNhZmFmMjcxYTkzZTI0OTgzYzcwNDkzNTMwIGxlZ2FjeS10cnVuaworNzk4MDUgOWRlNTYzMGZjNjFiYTAwOWM4MWI1MWIxZmI1YTk4OTgyYzM4N2UxNSBweTNrCis3OTgwNiA4ZjQ1ZDM3YzU1YTE0MmJmNjNmM2UxY2I1YzIyZmY0MzU3ZDk2NTEwIHJlbGVhc2UyNi1tYWludAorNzk4MDcgNTg2ZTFjZTlmMjQzYzg0YTVmNWIzNzFkYzc4MjhiNmRlMTA2MmQ4MiByZWxlYXNlMzEtbWFpbnQKKzc5ODA4IDNjOWYwODg3ZWUzZjlhZWE5ZmI1MjIwNWJmOWYwNzQ4ZTUyNDY5YzcgbGVnYWN5LXRydW5rCis3OTgwOSA1ZGFhNzRiY2Y2YTE1OTA5MmFkYTEwNGQ2MDUxMmY5ZjVhNTdlNTJmIGxlZ2FjeS10cnVuaworNzk4MTAgM2NlNjZjNjkyMmFiYWRiYTNkODllYzQxMTU4NmMzZWNlYzBkNGVlYiBweTNrCis3OTgxMSA5ZmQ4ODUyZWNkZDRjMjAyZTkxMTkwOWVjMWVlMWZjYWQ0ZTM4YzkyIGxlZ2FjeS10cnVuaworNzk4MTIgNjY0MTczOTg0ZjJkM2EyMWZhYTRjOTc2OGJlMDYzMjc0NjUxZTE3ZSBsZWdhY3ktdHJ1bmsKKzc5ODEzIDllNWU5ZDhmYTg0NzRmZDFiNWZiOWJhMDAxZDA2MTZjYzA3NzhhOGIgcHkzaworNzk4MTQgMjVjMjg1MmJmZDE1YjU0MjkxMmUxNzU5MmVlYTIwMjBmYmZjMTZmOSBweTNrCis3OTgxNSAxYWRjZjRhNDY4NTYwNmU1YmZiNWEyNmNlMzhjNTRkNTBhNmE5YjY3IHB5M2staml0Cis3OTgxNiBjNWJlNTM3YjViYTkwOWQ5OTViZjQwMWUxMzU0MWY2OWUyOGQ1MzljIHB5M2staml0Cis3OTgxNyA5MjIwNzlmNzI0YTYyMGMyM2E5MDQyZjM0ZTdkZmQyYWRmMmMzMmU3IGxlZ2FjeS10cnVuaworNzk4MTggOTQyNjJkMGUwNjRhNWVhODhmMzM3ZjUwZTBjZjkyZWQyZmM5MDNkOSBsZWdhY3ktdHJ1bmsKKzc5ODE5IGVlZWE3OGRmOGEzYzcyZjQ3MzY3YTk0MDZmNTFjMDk2ZDYwMTAwMDkgcHkzaworNzk4MjAgOTYwMDYyNWMxNWFmYTljMGE0MjBiODgxMTQ3MjFiNGJhMjlhMWU5ZSBsZWdhY3ktdHJ1bmsKKzc5ODIxIGMxMDAyNGFiZDExOGZmY2FmY2M3ZGRmZTI2OGYxNzdiZDE4MjA3NWMgcmVsZWFzZTMxLW1haW50Cis3OTgyMiAyZmZiMjI0YzYxZjZjN2QwYmIyYjg2Y2Y0NTIwZmYyYmI1YjExMGZjIGxlZ2FjeS10cnVuaworNzk4MjMgMjZjNmRlMThjZDMwYjVkYjBjNDc5NTYyOGYyYjMzZDA3M2VlYTkwMSBweTNrCis3OTgyNCAzNjdhYzQ4YmYwODVhNWEzYjNiYTFiM2NjMTZhOTNiN2EzZWNhZTQ1IHJlbGVhc2UyNi1tYWludAorNzk4MjUgYTBjMDgzZTFkMzFmZGQyZjkzZDNhNDZiZmE0NzU4ZTQ1YmYxZDM5NiByZWxlYXNlMzEtbWFpbnQKKzc5ODI2IDk1YmY5N2RjYzU5MTkyNjAyMzg0ZmY5ZDlmZDMyYmI5YWRhNTUzOTQgbGVnYWN5LXRydW5rCis3OTgyNyA3Mjc0NjFkNjZkMTAyMjRkYzc5MGYzMDM5MTIxM2Y2ZDM0OTk2MTllIHJlbGVhc2UyNi1tYWludAorNzk4MjggN2Q4OWQwZGFlOThlNTU3MThlYmI0YTQ2MTEzMGQwNGE2ZWVjMmNjNyBsZWdhY3ktdHJ1bmsKKzc5ODI5IGE2NWE5NGIwMDkwMmVjMjJjYmVmOGFjYzhhMjE0N2I1Y2EwZTY3ZTYgcHkzaworNzk4MzAgMzc3NWE0ZmQxMWMyYTczY2ZhMTljMDZmNTFhOTM0YmIyMTZmNmIxOSByZWxlYXNlMjYtbWFpbnQKKzc5ODMxIGQ0ODgwMWI4NjM4MDFmNzBmZjU1ZDBhOGRlZDllMDdkMjhlMTkxMzMgcHkzaworNzk4MzIgMmI5M2UzMTY1OTYxZTFhOTIzMGRjM2FkZDk0YTFhNTEyYzM5OWJmNCByZWxlYXNlMzEtbWFpbnQKKzc5ODMzIDU3NmIwZTg3MzZjN2ZlYTc0YTdmY2MzNmJkYzMxNmI5MzM5YWQ5ZDAgbGVnYWN5LXRydW5rCis3OTgzNCBmMWVhMDNlMzdmZjZlY2I3ZjEyNDAxMWQ0N2M4NDY3ZmY2OTUwZWY1IHJlbGVhc2UyNi1tYWludAorNzk4MzUgN2M3NmE3YjQxMTYwMzVjOTZjOWNjZWIzYzVkZTI0MTYwZjY4Njg0NCBweTNrCis3OTgzNiA2ZmViNWFkZDc2MmFjNmUxOTUxNGExYjRiNjE4YWJhMTA2YmM0NDA5IHJlbGVhc2UzMS1tYWludAorNzk4MzcgYjY2ZmM4OGZhOTZkMWJiNzY2MjM4M2EyNGM5ZmM2NjQ4OThlOGIzYyBsZWdhY3ktdHJ1bmsKKzc5ODM4IDY0ZmRmNjZmNjliMGI3OGI1NGMyYWIyZGZkYzMzM2IzMTZiNzBiNjkgcmVsZWFzZTMxLW1haW50Cis3OTgzOSA3Nzc0ZDYwYTg5YTkyOGU1YzYxMWM5N2QwZjE3MDhjZGU1ZjUxY2EzIHB5M2sKKzc5ODQwIDY5NmNiNTQ5NmEwYjg2ZDJkYzkwMmZhNzEwNGRhZDk3YjgzZWM2ZTIgcmVsZWFzZTMxLW1haW50Cis3OTg0MSBjNjczMzllMzcxYTliMjVkMWQzOTNiMzUxYmRmNDRmMTQ4YTA1MTI3IHB5M2sKKzc5ODQzIGM4Y2ZiMWQwNzQyOWNhMTExYTI5M2JmNTIyYzU0ZGVmYmM5NDU2NmIgbGVnYWN5LXRydW5rCis3OTg0NCBiODg4NDJmNjUzNGRlNDhlMTZjMTNlYTFjYjAxNjY5ZmY4MTQ1OWRiIGxlZ2FjeS10cnVuaworNzk4NDUgYjYxMDhmNzIwZjY5ODMzYTM0Y2I2ODliZmFiZjEyYzE4YjBhN2NhNyBweTNrCis3OTg0NiBmMTk0YTNjZWVmYWFjMDBkMWQyMWU3MTkxMDQ1YjhlYTA2MjdjZTY2IHJlbGVhc2UyNi1tYWludAorNzk4NDcgMmYyODgzMmRjMzZjM2IwMWE4N2NlMjI2YTg2NjE2MzZjOGYyNGI0MSByZWxlYXNlMzEtbWFpbnQKKzc5ODQ4IGE3M2Q2MDQ1MWI0OTBjNmExYTcyZmZiMWJlNzRmZWIyZjlhYTJhNTggbGVnYWN5LXRydW5rCis3OTg0OSAyMGE1OWJhZGFmYTFjMjIxNGNhNmNiOWJlYWFhOGFlMDIwZGI0ZWQ4IHB5M2sKKzc5ODUwIDNjZTRhYWMyMDkzNTc3NjAzNWYwN2EzMjJhYzVlODRkODcwNjQ4MDggcmVsZWFzZTI2LW1haW50Cis3OTg1MSBkNTFhMmM3Y2M4MTFhMTJhODUyNGUzMTQ2NTBhNGIxOGQ5NjBjY2M2IHJlbGVhc2UzMS1tYWludAorNzk4NTIgNWIwZjFkNWJkNTVhOTdjMDA2YmVkMTMwMTU0NzdkZWNiMjU5MGIzNiBsZWdhY3ktdHJ1bmsKKzc5ODUzIGJiY2M1NGFjYmQ4YTJkOTA1NGE3Y2I3NzE5MGNlYTVjMzVhMTA1MmUgcHkzaworNzk4NTQgMzMyN2RmMzJjMTE3Y2FjMmIxZjI1NTUxNGI1ZjU4NWIwMzM0Njc5NiByZWxlYXNlMjYtbWFpbnQKKzc5ODU1IDYzYWY0OTZiMTQ5Mzk0NzNmZTY2NzBkMWEzMmRkZWU4MDQ2NWQ5YmEgcmVsZWFzZTMxLW1haW50Cis3OTg1NiBmNGVjNDA3M2JkMmU1OTY4MGQxZTU1OTY2ZjBjMzA0YTc0ZGQ1MTlmIGxlZ2FjeS10cnVuaworNzk4NTcgY2U5NzliNjRiMjNhNzkwYmE0MTZlMjY0NTIyYWEzOTY1ZGQyMGVjOCBweTNrCis3OTg1OCBhMzFmODBkNWQxYTE2ZWJmNGQ3NzE4NTQyMWNhMDMzYzc3MWUzNjMwIGxlZ2FjeS10cnVuaworNzk4NTkgMDFjMWFhM2E0OWE3Y2QxZjU1ZjQyYzdlNjBhNWY3MmI2YWVkYzVjMSByZWxlYXNlMjYtbWFpbnQKKzc5ODYwIDU2OWI4NTlhZGUyMDc3MzAyZTZkNTliZmViMDFiZThlMGNmYWI0NjYgcHkzaworNzk4NjEgODI3M2Y4OTk0YTg4ODBhZjNhODcxYjRmMzJkZjM3YThmYTViOGFjZCByZWxlYXNlMzEtbWFpbnQKKzc5ODYyIDljNDhhYjcyOGNlMGQ0ZjMxNTdiOGRhOWFkMTI4NzZhZjIxMTBlNTggbGVnYWN5LXRydW5rCis3OTg2MyAyYjRmY2ZjMzVmMTIyM2UwYTU2MzRhMDUyMjFlYzA4ZTFmMjU2NTJmIHB5M2staml0Cis3OTg2NCA3MTI5NzBiMDE5ZjcwY2IyMTFjNzAzOTlkZDEwZjVlMDc3MTMwMGE0IHB5M2sKKzc5ODY1IDZjMWFkZTllYTFlNDQ1NGQ2ZjNhMTYyM2FkOTQ3OTY4M2I4ZWE2ODQgcHkzay1qaXQKKzc5ODY2IDliYThjNmU1MmZhMGRkZmI3ZjQzYWIyZjgwMDNkYzIzOTExMDNmNDYgbGVnYWN5LXRydW5rCis3OTg2NyBiZTA0NGI4YzM0M2EzNWY1OTM1NjE4MzY1OTMyODJiOGQxYTM5N2E5IGxlZ2FjeS10cnVuaworNzk4NjggYmE1ZWM3NTYwOTMzMzdlMzExNDRiYjIxYzFhY2Y2YzA2ZWYxNTNlMSBweTNrCis3OTg2OSBlZWMyZGIwOWE2YzEyMzkxZjNiMjVlMjk5NTQ0YTQ3YzUwNzRkYzYwIHJlbGVhc2UyNi1tYWludAorNzk4NzAgODFkOTBjZWVlM2JkZmE3ZmQ1YzZkMjE1OThiN2VlODU5YzMxODc0ZiByZWxlYXNlMzEtbWFpbnQKKzc5ODcxIDg5MmRiMThjNzgxNTQ4MjBiNDFmMDBkYjBjZDQwNTU0NjY5YmVmNDYgbGVnYWN5LXRydW5rCis3OTg3MiAxYTZmM2QzNmJiZDk2MWIwNDY0OTY3MTNmN2U1NjkwYWE4ODhhNTQ2IHJlbGVhc2UyNi1tYWludAorNzk4NzMgODJhZjExM2UwMjBiOTdhZjc3NDUwZDgxYjk4NTRhNjc3NDY1NTc3MSBweTNrCis3OTg3NCBlM2NmOTc3ZTJlNjQ2N2U1OWRlZTIxN2M3NTllMGI3OWEyNWE3NzMyIHJlbGVhc2UzMS1tYWludAorNzk4NzUgOGQ4ZjdlMDgyZWY2YTg0Y2UxMjA0MDg3MDdhOGM2NzY0ZTRkMDg5YiBsZWdhY3ktdHJ1bmsKKzc5ODc2IDljZTUzMTYxYzNhOWRkZGFmMjMyMGJmNGE1YzdjYTkzZGE5MWE4OTUgbGVnYWN5LXRydW5rCis3OTg3NyBmYjZjZDhhZDhmNjllNmIwYTAxZjZlMTNlNzU5ODRmYTZiYjZlNDdlIGxlZ2FjeS10cnVuaworNzk4NzggYzA5NTdkYWRhNWMyN2RmNjJmNDNmYmU4YTA3NDlkN2E3ZjJlZTRkMCBsZWdhY3ktdHJ1bmsKKzc5ODc5IGQ3OTU5OWIyMWU4MTE1Y2Y5NjdhMzJlOTM2MWUwZmJkNmQwY2QyZWYgbGVnYWN5LXRydW5rCis3OTg4MCBjOWU0ZTEyZTljYjZlMDZkNTczZDllNzZlNDg5NTIyYTZkMDY4ODA0IGxlZ2FjeS10cnVuaworNzk4ODEgZjM2OWRiMGQ1ODQ1NjU5NDI1N2MzMzAzODAxMjQ2N2FiZTdhMGE4MCBweTNrCis3OTg4MiAxMGYxZTYzYjJiMzc0ODM4MTBjNTQxOTY5YzkxYTk3MGY1NTI1NTRjIHB5M2sKKzc5ODgzIGI2MTlhYmNlMDI2OTc3NmIxYTMyZDA2ZjZjZTk3YjU0ZjA3NmI5MmIgcmVsZWFzZTI2LW1haW50Cis3OTg4NCA4NWVkNzQwYmUzMjNkNzFmYmM5MGYxZWVlOGMzMTMyZWI3OTY5NDRjIHB5M2sKKzc5ODg1IGQwYTc0YjY1MDVkM2M3ZGU1MDk5YTY5NTI1NTQ4ZWIzYjBiMTcxOGEgbGVnYWN5LXRydW5rCis3OTg4NiAxYzliZWZkZTgzODVlODM3ODFkNzU3ZTIzNWQyYTVhNTJjZDM5NDRmIHB5M2sKKzc5ODg3IDdlNTViMjFjNjY1OGI1ZTNhMDg0NDE2MWE2ZWMwY2JhM2VjMmVlYzggcmVsZWFzZTI2LW1haW50Cis3OTg4OCBkZGI3MzI0Mzk2N2JiMmFjNDhjOGY4N2UyZjEwN2YwMDRlNTgzMDJlIGxlZ2FjeS10cnVuaworNzk4ODkgZThhYTlhN2RhZjAzMjg1YTI2ODNjOWJjOTY5MjYxMjhjMTc2N2RlZiByZWxlYXNlMzEtbWFpbnQKKzc5ODkwIDIwZGFkMjAwNThlNDI5Nzg1OTBhYjdhZTU4M2NlMGQ1MGQ5ZWUzYWMgbGVnYWN5LXRydW5rCis3OTg5MSBhOGU5MGNlY2M2OWUxNTgyN2E5YzUzODY1NmNmOTZkNzYxYzA2OTQxIHJlbGVhc2UzMS1tYWludAorNzk4OTIgYzMxYzQzZDZhZDc5Mjk4OWUxZDNjOTNhMzE4NWMwM2FmZjc3ZmI2NSBsZWdhY3ktdHJ1bmsKKzc5ODk0IDdiMDA0NTRiYmZlMGE2MTYwYjk2YTgwZWUwNDI5NGZjYmIzMGQ5ZDAgbGVnYWN5LXRydW5rCis3OTg5NSAyNWMzYjNhYmYzZTdjOGI1M2Q5NTgwYTM4Yzk3NzU5YjcyZGFmMGQ3IGxlZ2FjeS10cnVuaworNzk4OTYgY2IwYjg0MDBlN2M0ZjljYzU5NjNkZWRmNjdlYTYwNDQ1NTNiZDdmMCBsZWdhY3ktdHJ1bmsKKzc5ODk3IDM4YjI0MjRmODVlOGFjMGQ4M2QzMDkxZGNmYmM2OWQ1ZGVlMmU4MDUgcmVsZWFzZTI2LW1haW50Cis3OTg5OCBhMzliZjM4ZjJlMGMxNzc1ODY5MzZmMmFlYmI1Mzc3NWJmYTg2YWNkIGxlZ2FjeS10cnVuaworNzk4OTkgMmU4ZDJkN2M0M2MwYjU4ZWNmYjg2OGRjMzc0MzViYzdlZDI1MTkzZSBsZWdhY3ktdHJ1bmsKKzc5OTAwIDczZTVlM2VhZGQ4OTNlMDA5ODVmZjhjYjA3OTE4Yjk3ZjY1MGE3MTYgbGVnYWN5LXRydW5rCis3OTkwMSBhYzA3OGE4YzNlMWFmMDlkM2VlYWRjYzkxZjQwMDhjY2NlMzQ0NjEyIHB5M2sKKzc5OTAyIDc2NjBjNTNkNTcxOWZlNzM0ZWUzZjllMzE1OTUxN2IzYzE1MWQwMjIgbGVnYWN5LXRydW5rCis3OTkwMyA4MjI3YjY0ZThkNzg4ZTIyZDhjYWIxOGExODhmNDFkNGYyNmQyYTlhIGxlZ2FjeS10cnVuaworNzk5MDQgYjg5OTgxMjhkZTA4YjU0ZjE2YzU5NzE2YjA5ZTRjOTc3NmM2MjgxZSBweTNrLWNkZWNpbWFsCis3OTkwNSBlMjQ0NGYyODc5YjQzNWI3ODdiMzA0ODQ2MGU3NDQyZjJmZTc3YjRkIHB5M2stY2RlY2ltYWwKKzc5OTA2IDhlNWM3MWM3NmU4ZmExMmYyOTJlYWJhOGM0OWJkODZkZWE4Y2U5N2YgcHkzaworNzk5MDcgNmYxOTU5ZjY2ZDY5MGEzNzMxYzFhODdiY2M4YTYzMTQwMTk1OGFhYyBsZWdhY3ktdHJ1bmsKKzc5OTA4IDI0Y2U0YTAwODliZTMyOWMxY2Y5OWY1M2JiNWNkMzBjYWMzNzAyNzIgbGVnYWN5LXRydW5rCis3OTkwOSA3Y2JmZjBiMWViNWQxODdhNjJiMjIyNWRiMzQ4Y2I2YmQ0OWI3MzQxIHB5M2stY2RlY2ltYWwKKzc5OTEwIGExNjI4YmQ5N2JiNjg1NGY5MzVhNDJiZjgyZDJmOTM2MjQxZmE3MzQgbGVnYWN5LXRydW5rCis3OTkxMiBhNzkyYjljYjBkN2FhYmExZGRlMDAxNDczZGU2OWFiYzlkMWU0Mjc5IHB5M2sKKzc5OTEzIDI0ZDdmNTU0MDBkM2ExYWI5NDgwOGZmODU0ZmE1OWUxZTllYzlhN2EgcmVsZWFzZTI2LW1haW50Cis3OTkxNCA4MzdmM2JiMTU3NWZiODhmY2QxOThlNDdhNTYwZWUxNTczN2RhMTRkIHJlbGVhc2UzMS1tYWludAorNzk5MTUgNDk5MTliMzFmZjIwMDc2NmNmMjk2YTA1OGU4NzgxMTIyODc4NjdmNyBsZWdhY3ktdHJ1bmsKKzc5OTE4IDM1YTlkYTAzOTY2MzAzMWUwZWUyNTdjYTExYzlmNzlhZDg3NGYyYzYgbGVnYWN5LXRydW5rCis3OTkxOSBhNWVkMDM3NzNlNGRlYjc1Y2VjN2FkNWQ5Yzc3ZTI5NmU3MDUzYzc4IHJlbGVhc2UyNi1tYWludAorNzk5MjAgYTViN2RjYjlhZjhmYTI4NTdkMjlkNzdlNjlhYWRkMjM2YzlkY2I4ZiBsZWdhY3ktdHJ1bmsKKzc5OTIxIDNlYzE5MzFmZDI1NjRiNTk4ODRjYjdlZjViYjk2NGQxNTc0ZmM5OGEgcmVsZWFzZTMxLW1haW50Cis3OTkyMiA0NjRmNjY5NjIwZmFkNjUxNzUyODM0ZTNhZTVhZDNiNzMxZTQyZjg2IHB5M2sKKzc5OTIzIDVlMDM4ZmQyYzE0MzI4NWZiNDhmOGJkZmI3YWQ4NTlmY2UwNmFiZDEgbGVnYWN5LXRydW5rCis3OTkyNCBjMDBiMDcxOGZkNTMzYTcyMGU5MWI2MGI1MTc2MDYwZWJjNjdjYTQ3IGxlZ2FjeS10cnVuaworNzk5MjUgN2E0ZDAyNmI2MzkwMDI0MzRmNWJmOTk1NTZjNjdkODMyOTAzYTRhNiBsZWdhY3ktdHJ1bmsKKzc5OTI2IGVkMjYxNjMwNzBmNThjMWVlODdjNDM0MWZjN2JhNWQ3ZGViZWUwOGUgbGVnYWN5LXRydW5rCis3OTkyNyAzYWU3MDc4ZDQyNzhiMmU3ZTVkYjg3Y2ZkNDkwY2JkYTZkODgxMjMxIGxlZ2FjeS10cnVuaworNzk5MjggNjE1NTBhMTMwMmIwN2E3MzE0MzZhODRiMmQ4NmViMmJhYjNiMmZiMCBsZWdhY3ktdHJ1bmsKKzc5OTI5IDRjYzE3NThkY2RmNzhjMjcyZjY5OWQxZWU0OTI2ZWFmNTIzNjhmNmYgbGVnYWN5LXRydW5rCis3OTkzMCAyYmFmMWNlZTcxZjJiNjcwODRhYmNlMTc1ZDY2ZjA1ZDk1ZjlkYTA1IGxlZ2FjeS10cnVuaworNzk5MzEgODA1NTEyMzI5Yzc1MzRjNDM0ZmFlMDNhMDg3NzZkYTVmNGUwNjgzOCBweTNrCis3OTkzMiA1NWZkNGU5ODdiMjBlMDcwYjJhMjI5ZGY5YjAyZjA1ODFhYWJlYmI5IGxlZ2FjeS10cnVuaworNzk5MzMgOGM2ZTRiN2FkMTU4YmVhMjk4NzcyN2RlYmI5ZGExZWUyYjc4N2Y2OSBweTNrCis3OTkzNCAwNTkyZTc4NDE3Nzc3NGY5OTlmYmRhYWNmMWI0MWY0ZDY4ZDEzYzEzIGxlZ2FjeS10cnVuaworNzk5MzUgOTdiNTg4ZWU2MmYwZmI0NjNkNjVmYmVkZDE1N2ZmMmQ5NTZlNzk3MCBsZWdhY3ktdHJ1bmsKKzc5OTM2IGYzNGNiNTAxZjhmN2UzMjYzNGM3OTMxNDFmYWRhYzRhODBhNTdhYzcgbGVnYWN5LXRydW5rCis3OTkzNyA1NzBkOWFjODRkNzc3YTk5NGRmZTFkZmVlMDhjYjkxNWQ5OWI2NzdjIGxlZ2FjeS10cnVuaworNzk5MzggNzMwMWRhNDkxZDViYjViNDZiYzg1MDhkOWEzYWNmMWFmYTFhMTQ3NSBsZWdhY3ktdHJ1bmsKKzc5OTM5IDM0ODA5Y2ZkODYwMTY4NTJlYjk5ZWM2NzgzMzA1YTE3YTA4NWVmOWYgbGVnYWN5LXRydW5rCis3OTk0MCA1Zjg3ODJhYTBmOGMyOGEzNGJjN2IwMDk4YWQ2YWViOTAzMjRmMzQ2IHJlbGVhc2UyNi1tYWludAorNzk5NDEgNDQxNjgyMjRhYzYxMDgwN2FhZTI4ODM2ZTg0Y2Q0YmVmZTFmYWU0ZSBsZWdhY3ktdHJ1bmsKKzc5OTQyIDhmODllZjkwOTAwOWI1MWE1NDY4NTMwMWRkYTU3Y2E0NmIwMTNlNWIgbGVnYWN5LXRydW5rCis3OTk0MyBkMDA3ZjVlNWUxZjAxOWEyODAxYzE1NjIxZjM2ZmQwOTdkYzY3ZTFhIGxlZ2FjeS10cnVuaworNzk5NDQgY2Y3YzliYTJkZTZlOTQzNGJkNWM2OTRiYWI0N2YwMzcyNzNjMDE0NCBsZWdhY3ktdHJ1bmsKKzc5OTQ1IDRmZWMyZTVlMzM5OGFjYmQ5NDQ4N2M5YzEzN2NkNzA0MmZlOGQ5NWIgbGVnYWN5LXRydW5rCis3OTk0NiBlMGUzNTVhZTk5YjI2MjZlYzYwMzkyODVmYTJhZDRmYTQ3Yjg2ZDBhIHB5M2sKKzc5OTQ3IDAwNjFlOWUzMjljMDU2YTAwMzQ3ZGVkOWJmMzQyYzZlODc4ODFhNTcgbGVnYWN5LXRydW5rCis3OTk0OCA3OTEyMzY2YjQ4ZDhiMDZkMTdmOGM0NWM0OTNiODA3Yzc0YjY2NWQzIHB5M2sKKzc5OTQ5IDk5MjZlMTJiZjQ4NTA2NGQxZWJhYzg0NWY5YjY3Mzc3MzdlNTRiYzMgbGVnYWN5LXRydW5rCis3OTk1MCBlMTU5M2UxZTY1MmVlYzg3YjU1NDU0M2E2MTZjM2JhN2NlNTVmMWU5IHJlbGVhc2UyNi1tYWludAorNzk5NTEgNjljMzcyMDNmZmMxZDc5MDYxNzU4YzgxY2YyYmI0MDE4YWE1MmQ1NiBsZWdhY3ktdHJ1bmsKKzc5OTUyIGYyNDRmZWU5ODlhOTgxY2ViZDBhZGRkYTIxYzM1MGIxN2VmYjk3NmEgbGVnYWN5LXRydW5rCis3OTk1MyA4NGFhZDY3MDQ2MGU1MDc3OWRlMjEwOTc0ZDI4NjNlYjY0OTYxNjc4IHB5M2sKKzc5OTU0IDkwMjgwMzNlNmZjYzNkNDgyNzEwYzMxNTAyMWEwYzE3MzQ3YTZlOTMgbGVnYWN5LXRydW5rCis3OTk1NSBmNDcwNTc2Mzc4N2I1ODlkMGNlYmY2OTBhYjNhMzVhOGYxZGY2ODMyIHB5M2sKKzc5OTU2IGE2NWY5MWJiYzJmYjI5NWI5YWYwOWRlZTA0Nzk4N2RiZDQ5YjdiMTcgcHkzaworNzk5NTcgMzBjODAwMjI4NzRlN2M5MDU0ZTQzMDEwMWYxYWRiN2NiZTEzODM2MiBweTNrCis3OTk1OCA2NmFkMjY3YTczYmY2MmEwYzkxYTQ3NjczMTA5NThhYjU1MTM2OThkIHB5M2sKKzc5OTU5IGQzOTk1NTIxNmMwN2EyY2ZkOWVmNDJhY2U3NGVjOTEzODVjM2FkNGEgcmVsZWFzZTI2LW1haW50Cis3OTk2MCBjMmUxZGUzZjExZmMxYjI3NmFiZDIyNTc1NDkxODM1MzNhYTc4MzBjIHB5M2sKKzc5OTYxIDAyN2Q1NzVjNjg5YzEwMjA5YjQyZmFhMGJiN2EyMWEyZWIyNTIwOTMgcmVsZWFzZTMxLW1haW50Cis3OTk2MiBiNGExNTVlNGQzMTI5MmRjMGEyOGVmMThkYTg0MjEzOWRjYjViOTYyIGxlZ2FjeS10cnVuaworNzk5NjMgOGVkOTk2ZGMwZTUyMDliYWE2Y2U1NmRiMTgzOTA4NmQwMGFlYTVlZSBsZWdhY3ktdHJ1bmsKKzc5OTY0IDlmOWNiMWM1N2YyYTdkY2QzNzFiYTg3MzJiN2JkM2VhZGYwOGM1NWQgcHkzaworNzk5NjUgYzQxNDc4NDczZWFlYWU1MmZkOGU5NDY0YTc0MTRhMmQyZGZlNGIxZCBweTNrCis3OTk2NiBhODRkZGQ4ZGU5ZDFkYmEwMmIzYjFjOTM0NWM3NzIxOTZlNDk4ZTA2IHB5M2sKKzc5OTY3IGRkNDNlMGM5MzE3NWNhNjRiMWViYjBkYWQ3MDAxMDY5MmM4OTZlMTEgcHkzaworNzk5NjggNGFkOTUyYTZhZjk1NzFkMTQ3ZDBhZGMwZTZmMzE2ODZhZjU4NmNiNSBweTNrCis3OTk2OSBiNGY2MGRmMzFiMTQxMmVlZjM2MTQ5ZWU0ZGM1NmJmNzZmOGQxMjliIHB5M2sKKzc5OTcwIGUzNTE1NzkxMzdmM2U0MjRjMGI3MGE4MTNmNWQ0ZWEyZDgxM2RiM2UgcHkzaworNzk5NzEgZmQzY2FlYTkyY2Q5ZjkxZWM4ZGJhNDdhNGY3MDE3YWM4NWM5MjA2MCBweTNrCis3OTk3MiBjYjZmMmM4OWY0MzcyY2MzNjZkMzZkNzY4MTY5MmUyYWU3ODhlNzY3IHB5M2sKKzc5OTczIDA5M2UyYjcxNTY0NTc0OTE5MTc3ZGRhOGQ5OGY1ZTFmOWE1MmY5MTEgcHkzaworNzk5NzQgZDY1NDM3NDkyNDI2MTk3MDgyMjQ5ODQ1ZmY4ZjEzOTEwYmQ4ODgzMCBweTNrCis3OTk3NSBmNWM0ZmMwZDMzNzMzNmRjMzZhNTQyZGZlMTE0Nzc3NjhhMWU0ZTAwIHB5M2sKKzc5OTc2IDFhNjJiZWVkOGQxNWVmOGRhZWY0NTlmZjg3MTVlMTI2ZDdkYjBlMjIgcHkzaworNzk5NzcgM2I2ODhkYTE4ZjUzZTM5NTFhMWM2ZGVlOWUwYWVmZjM0NDg2Njg4ZiBsZWdhY3ktdHJ1bmsKKzc5OTc4IDc1ZjkyMDlmM2ZiOTkwZjk5MDc5OTJmODRiYjMzZTk4ZDQ0ZjEyZTMgcHkzaworNzk5NzkgYWMwNjFlZjE0ODdlNDdiNjk3YjNiYTIyMzk0Mzk4NmZkN2ZjNDRhNyBsZWdhY3ktdHJ1bmsKKzc5OTgwIDlkZTI2MWNmNWJjMjk5NmM2OTUyZDZmYTgzOGY2MmZkNjhiODdiYjEgcHkzaworNzk5ODEgYWZiYmM5ODNlMGJkMDQxMjk1NGE1YzViYzNiMjkwNmJiMTkxY2NkMSBweTNrCis3OTk4MiBkMDNmNWFjYjRiODdlZjZlNWYxODNkZjU4NGU2MTUzOWFmNjJiYTdlIGxlZ2FjeS10cnVuaworNzk5ODMgNjEwYjY4NWUwNTI1YmQ2YzQxNzQwZmQwODk2N2ZhOTFiMWU0YmNlYyBweTNrCis3OTk4NCBhMjkyOTFjZTRmY2UzYzFkODQyZGYzMmQ4OWQwMWY2NTMyMjczMGE1IHJlbGVhc2UyNi1tYWludAorNzk5ODUgZWRlYjA3YzQxMWFmMjk0NzVjMGY0NTIyMjAzZWJhODVmYTMzZjk5OCByZWxlYXNlMzEtbWFpbnQKKzc5OTg2IGU0NzViNzcxZGQ0YzBmOThkMTRmYzMxNjgwZTZmNmMyZjJhN2NkZGEgbGVnYWN5LXRydW5rCis3OTk4NyAyYWU1ZjYwZTI3Yzk5NTZkYWVkYzYwMTEwMmU0NDRhNGUxZGI2Mzg4IGxlZ2FjeS10cnVuaworNzk5ODggNTY4MGJhMmRjOWMyNmVlY2ViNjQ3MDNlNGNmOWEwOGE4MjBjMzJmOCBsZWdhY3ktdHJ1bmsKKzc5OTg5IGJhZTM3OTAzZjc5NzVkNjc3OGNhM2M1MjRlYWIxZmRiNjQ5OTkzNTMgcmVsZWFzZTI2LW1haW50Cis3OTk5MCBhZDJmZjFjMzZiMWFjMTZjZThmODRhYTkyNjUwZmI0Y2E1YjU5YWE3IHB5M2sKKzc5OTkxIGRlNTE1MTQwYjVmYmU0YzRiMGNiZWE5YjMwODY0MzliYjdjZDU2ZjggcmVsZWFzZTMxLW1haW50Cis3OTk5MiBmZWRiMWY5MzIyZGYzYzNmYTExMGFkNzljM2Q0ZTNhYTI2YjI2MTUwIHB5M2sKKzc5OTkzIDgxZDBlYTZkMmRhMzdhMzM5MWU4MTllNmY2N2JjNGE4YThjMmFmNjIgcmVsZWFzZTMxLW1haW50Cis3OTk5NCBlNjk3MmYxYzlkNmQwMTY3MTVjOWM0MWJmOGNlMGRmZTk5ZjhjNDUxIGxlZ2FjeS10cnVuaworNzk5OTUgNjMxNDRmMTQ1NGQyMDBmOTE3YjExMGYxZWY0ZDhhMGRjYmIzY2RhNSBsZWdhY3ktdHJ1bmsKKzc5OTk2IDQyZTYwNTdjZjI4ZmQ3YzkzZTMxODhlZjA4NDEzMWRkZGE1ZGE0ZDggcHkzaworNzk5OTcgODYwZmNlZGEyZDg5NDBiNTQwNzc2MTg4ZGVlYzRlZTc5YmEzYzQ4MCBweTNrCis3OTk5OCA0ZjEyZGNiOWNlNmYxMTc3ZDk3ZmQyZDI3ZjI4MzEyMzhiNmU3ZjA3IHJlbGVhc2UzMS1tYWludAorNzk5OTkgODEwNTkzOTA4NTI3Nzc0MDQ3MDBkNTI1NTgzMzRiMDM2NmEwODc1ZSBweTNrCis4MDAwMCA5OGExNWZjMzhiOGJmMzFlN2Y3OGY3ZDdmYTM3Y2VhOWU5N2NmMGNhIGxlZ2FjeS10cnVuaworODAwMDEgMTE2M2NkOGMzOTU2ZGIzMjMxZTlhMTM0ZTA5MTYyZTNjNDliMzhhMiByZWxlYXNlMjYtbWFpbnQKKzgwMDAyIDkxZWJjZmY1YmIyNGMwYzhiNDQ3OTM4NWRmNjEzZmMwNWY5ZmUyZmUgcHkzaworODAwMDMgNTU3NjY1NGU0YjkxYTU1YzljZjkwMzAwODU4MGQ2YTlkMWJmYmI4ZCByZWxlYXNlMzEtbWFpbnQKKzgwMDA0IDcxM2YxZjZiZjMzOWJlZjdmZjM0NGQxYTFhYTY1MjJhNzdiNzlhMTcgbGVnYWN5LXRydW5rCis4MDAwNSA5ZDEwMzkwNDg0OThhODhlYmUxNTU3NjAyZDA1NjJhYTEzNzZmMmJmIHJlbGVhc2UyNi1tYWludAorODAwMDYgYjgxZDgzYTg5OWYzNjc5ZmRhZDc4NTVjZTE2MDc2YjBiNTVkOTEzOCBweTNrCis4MDAwNyA1N2JiZmNlOGIyNzg4OGY3NjU3Mjg0OWJhYmVkZTk2MmViOWQ1ODc5IHJlbGVhc2UzMS1tYWludAorODAwMDggYTJmNWIzYjE5ZWIyN2VlOTFmNjA1MzBiYjA3MzUzMGM5YTYzYzg0OSBweTNrCis4MDAwOSAxOTUwNzBlODVjZTE1MjA3ZTc2MTIwZTg1M2EwMGRmMTc4MDY0MmU1IGxlZ2FjeS10cnVuaworODAwMTAgZjFjMDM2ZGUxOWI3ZDE2NTUzMThmOTZhMjZlMTcwYjQ2ZTFiMjE3NSBweTNrCis4MDAxMSA4OTc1MmMwM2YzNDJjZTY0NzFkYjYxMzU4Y2U5Yjk1ZDE3OGRkYTRlIHJlbGVhc2UyNi1tYWludAorODAwMTIgNzdjNDllNzM1MjQ5NzlhYWQ0MGNlMDMxMDI5NzQxNWM0OWIyM2Q0MiByZWxlYXNlMzEtbWFpbnQKKzgwMDEzIGQ0NTA3ZjYxNTMxZGNhNGE4NjUzZDgyZWJkZTRkYjQ1YmZhM2ZkZjcgbGVnYWN5LXRydW5rCis4MDAxNCBiNTM2YThhOTZmYTlhMmQ3NzIxZDUxYzJkNWMxZGU2NDBkNTg4ZDQ4IGxlZ2FjeS10cnVuaworODAwMTUgMDkxNTg4OTRhM2IwNWYyYjNlZWVlMzAyNDlhZmM4MzAwYTZhMzI4MiBsZWdhY3ktdHJ1bmsKKzgwMDE2IGQ0ODY3MDU4OTJhYjZlMWI2MmJjMGVjZjA5MjM1MDY0MjAxYjQ1ZWIgcHkzaworODAwMTcgMGExY2EwZDc0NGE0MjY5YzUzNmVjODYzMDNlZGY4ZDM2YmJiYzVmOCBsZWdhY3ktdHJ1bmsKKzgwMDE5IDFhOTBmZTM3YjU5ZDczNmMzNGM5OTJmOTQ5YmFmMjNmOTVkMmU5ZjMgcHkzaworODAwMjAgNjBhN2U1OGExMGRhZGJmNGU2NWI5N2ViNDMxOGE3ODRjNjU5OTk3NCBweTNrCis4MDAyMSA1MjM3NzIzNWQwNTUyMTEwY2ZkMzA0MmExNDY0YzYwMmE3NjYxNWNiIHJlbGVhc2UzMS1tYWludAorODAwMjIgNjNiNTgxMjRhNTU0YTM2ZjFhN2MzYzAzZmQ1NmQ0MDQ3YTUxZGFhOCBsZWdhY3ktdHJ1bmsKKzgwMDIzIDdhMzkwZWI1MGRmMTM0MzIzMmI2NzVmMGIwN2I3NjkyOWQyNmQwYjQgcHkzaworODAwMjQgNjUxZWRmZDJkYjM4ODgyZjg1ZDg4OTBkNThjYjkwNGRlNWE3YmY5ZiBsZWdhY3ktdHJ1bmsKKzgwMDI2IDVlOGU2ZTdlZWRiMjE0YzUxMjFmNzk5YTcwZjA5NTRhYjcxYzA5MjUgbGVnYWN5LXRydW5rCis4MDAyNyBhOGJlYjYxNDkyMmY5MDJjOTY0OTM4OGVlNjA0NDY2ZjBlYWIyMzhmIHB5M2sKKzgwMDI4IDI1MTczMjA5MjYwMTM1NGYyZmM5ZTJhYTExNDQ3YmJkOWViNWI3OTcgcmVsZWFzZTMxLW1haW50Cis4MDAyOSAwMTVlOGY3ZjUyNjRmNGQxMTE0MmQyNmQ1N2EwNjJmYjJkMGVmNDNmIHJlbGVhc2UyNi1tYWludAorODAwMzAgNDdhNTdkZjY5ODk2ZmNmMGY1Nzc4ZDQzNGVjZmE4ZTJlZDFhZDQxNiBsZWdhY3ktdHJ1bmsKKzgwMDMxIDc5OTQyNjlhZDNhMWZhNzhkYTQ5YzYwMDUzZDU3NzE1N2I4YjI0ZTYgcHkzaworODAwMzIgYjhmMjk3Y2RmYWRlZjFmZGU0ZTZjODA5MWVjYjlkZWE4ZjcyMjZkYyByZWxlYXNlMzEtbWFpbnQKKzgwMDMzIGRmMmU5ZThkNDI4ZWNmZGIzOWRlM2JhZWFmZTY2MDNjMzQzMmQ2NGYgcHkzay1pc3N1ZTQ5NzAKKzgwMDM0IGI5MmI1N2ZmYjMxZTE2OGVmNTIxN2FlMTlmYWQyNDI1NjU4YWQ5MDcgcHkzay1pc3N1ZTQ5NzAKKzgwMDM1IDc2OThkMWExMGIwMWMwMjNjZGU2NDRmMjk3NzJjZGJlM2YzMDZkMDYgbGVnYWN5LXRydW5rCis4MDAzNiA3YmNlZTcxNzBkN2JjMzcyMGQ5Mzc5NDJjYTAzN2MwMWRmYzgwYTUxIHB5M2sKKzgwMDM3IDZmZmU2ZjhjYTA5MTY0NjM4NDI5YWIzZmUyZTE0NDA3MzllYWYzNzcgcHkzay1pc3N1ZTQ5NzAKKzgwMDM4IGE1Yzg4NmVhNGY2ZjMxOWNjMzgzZDhkOWQ3MDYxOTJkYmZhNWYxYjYgcmVsZWFzZTI2LW1haW50Cis4MDAzOSBkNmRlZTNhZDI1OWI1NmJlZGM3ZTgyM2RhMDAzZmUyOTZjYzIxNmIxIHJlbGVhc2UzMS1tYWludAorODAwNDAgZDRlMjEwMzIzZjcxMzc0MDI2NmM4NjVmYmVjNzZhMzczMDFiNzM2OSBweTNrCis4MDA0MSAzNDFhNmJkY2NkMmU3MmEzODhjZTc2YjVmNGQyYWVjZWY5N2NiMzEyIHJlbGVhc2UzMS1tYWludAorODAwNDIgYTkyMTNmOTFhYjE2OTgxOGI3Zjk1ZDFhODkzMTgyMzE4YzFkNDMzMSBweTNrLWlzc3VlNDk3MAorODAwNDMgMDgyNGYyNjg2MWJhYmMzZjIxMmE5ZDM2YjI3MTMwNjFlNTg5ZjJkZiBweTNrLWlzc3VlNDk3MAorODAwNDQgNzAyYjZjOTllNzU3YzcxMDY0MWQ0ODgwNTAzZTNkMjFlNjFjODc1MCBweTNrCis4MDA0NSA3ZTBjZTVmNjNhM2JjYTQ5YWQzMTFmZTgxMTEwMzVhY2U2Yzg3OWM3IHB5M2staXNzdWU0OTcwCis4MDA0NiBiNGM2NTM0MzJjYjY3NGM2NjkyMjZmNzM1YWQwOTRkNTFjNDc0NGE1IHJlbGVhc2UzMS1tYWludAorODAwNDcgMWRkNGVmZGVmZmYxNTg3NjNiNTc2YTc1NGMyY2JkZDNmYzcxOTdkZCBweTNrLWlzc3VlNDk3MAorODAwNDggYjk1YmEwY2MxYjdlNTExOTNlOGFlZTI4NGE1YTM3YWQwZGI2YjY3NCBweTNrLWlzc3VlNDk3MAorODAwNDkgNWM5OWZkYjdkYTczNzVkMzA2MDkyM2ZiMWU0YmVhMDE1ZDQwZGQ1MyBweTNrLWlzc3VlNDk3MAorODAwNTAgY2I4NzQ1ZmE2NTg4NDI5MWQyMGU1NThmZjBkMmE3MzM0N2YxN2U5OSBweTNrLWlzc3VlNDk3MAorODAwNTEgMzZiMDA1YmMwODhmZjUyYWFhYWNmZTZjMTk3YmMxNjE4ZTg2NGZhYSBweTNrLWlzc3VlNDk3MAorODAwNTIgZjFhMmYzYjZiZmM2NDg1M2Y3MWJiYzgyM2VhM2ZjZmYwODI3NmYzMyBweTNrLWlzc3VlNDk3MAorODAwNTQgNWI2ZmU3ZDM1OThiY2UyMmFjNTEyYzg0MzNmNGVkY2M0YmQ1OGQ2ZCBweTNrLWlzc3VlNDk3MAorODAwNTUgZTk4NGY5ZTE1NjY2Y2U2ZDMyZWVhMTNjMTEwM2YwZTkyNWQ1MjFmNiBweTNrLWlzc3VlNDk3MAorODAwNTYgNTE3Y2M0ZDU5ZTEyZTI0MTg1OGI5MTk2ZWZiNmJmNDJmYTU1NjQ2NiBweTNrLWlzc3VlNDk3MAorODAwNTcgOTllOWM4ZDY5MGFiOTQ4MDcxM2NhNzVkYjA5ZDQyZmQ2ODg1MWM5NSBweTNrLWlzc3VlNDk3MAorODAwNTggMjg1NTM1NjRmMWM2NmE0NjA3MmJlN2YwN2U3NGRiNTE2N2VlOTBhNSBweTNrLWlzc3VlNDk3MAorODAwNTkgZmQ3YTEzZjBlYmJkZGM0MGE4NmI4MzBhOGZlNDMyNWY2M2VmYzQ2MyBweTNrLWlzc3VlNDk3MAorODAwNjAgODY5M2ZjMDZhYzhlYzhlMWRjZmIyODU2YjdjMGM1YmQ2MjU5NDM0OCBsZWdhY3ktdHJ1bmsKKzgwMDYxIDczNWJlZDZjOGUzNjFkODQ3MThmMWI2ZTk2NWJhZjMzMjYxZTY3ODcgcHkzaworODAwNjIgNjQ5M2FlNzI3OTFkMzdiY2YxN2MwMmEzOWU0NTgwOTI4MzUzY2NkYSBsZWdhY3ktdHJ1bmsKKzgwMDYzIDQ1MGM2OTIxMDU4MWU5NGNlZDg4YTFhYmFmOWEyYTNlNzcyMzRjZDUgcmVsZWFzZTI2LW1haW50Cis4MDA2NCA2YmJmMDdhM2UwMWI1YzA4MjVhOGQxODhjMzI2ZWU5NzQ3Njk4ZmMyIGxlZ2FjeS10cnVuaworODAwNjUgYmFlNzk3NjUxNjBkMjIwZDYxMjk2ZmUxNjkzOTc3MzI0NzYzNzIxYyBsZWdhY3ktdHJ1bmsKKzgwMDY2IDYyZDExNzg1MjA0ZjQwODU2ZjJjM2VjZmYyOGE1ZWU1YTdkOTBlOTIgcHkzaworODAwNjcgMzY0ZjFhYzMyMjY0ZWY3ZDQ0ZGFhNTE5OWUwMDAwODVkNmUyM2M2OSBsZWdhY3ktdHJ1bmsKKzgwMDY4IDIxMjY3YmYwNzIwZTAxNjYxYjczZTEwYjgxNzQwOWE2YjdlNmZlYmUgbGVnYWN5LXRydW5rCis4MDA2OSBmYTkzMDBmY2IwMDQwODdlMjhlMDc1MzU0YzZjMDU3ZGM0YzVmNzJiIGxlZ2FjeS10cnVuaworODAwNzAgNjEwMmQ4Njg2YWFlZGE3OWY2MGQ3YTA2NGExNDllYzM5NjYwM2RmZCBsZWdhY3ktdHJ1bmsKKzgwMDcxIDAxZDFmZDc3NWQxNmI1NjlmMmNmYmYwYjE5NjRiNzZkNWRkNjViMmQgcHkzaworODAwNzIgMjIxNjNkOGNhZjNlMzNjYmU1ZGE5Y2ZmNjdkZDJiYjM2ZDIyMmFkMiBweTNrLWlzc3VlNDk3MAorODAwNzMgOTA2OWNhNTFlNjE0ODI4MzZhNTM2Nzg1MzJjNjEzZWNlMTYwNGEzOSBweTNrLWlzc3VlNDk3MAorODAwNzQgZDQ0M2Q4NWY2MmMxNzdkNjUxMThkZDg4MmY0MDkxNDY2ZGZkMmU5ZCBweTNrLWlzc3VlNDk3MAorODAwNzUgY2ExMWM4MzBmNWNjOWRhY2RmZDU5M2EwMGYxNDQ2ZmE4ZmY1YWU2YyBweTNrCis4MDA3NiBiMTI3NmZjZGMzYmQ3NTAyMGIwMjQwNTFiOGIwZjY2NTVjZjk2YWNlIHB5M2staXNzdWU0OTcwCis4MDA3OCBjZGJjYTdjMzQzMWQyNmYxODU2OGI4ZDcyMmRkMmVmYjFhMTdmY2U1IHB5M2sKKzgwMDc5IGQzNTFlMTVmZWUyOGYwOWRkZDk2NjgxMDZmZTlhZWFiYmNkMzBlN2IgcmVsZWFzZTMxLW1haW50Cis4MDA4MCBiNDA0MzZiY2Y0YjJiNDZkNTM2M2MxNDkzZGQxNTg4MmFkOWRiZmUxIGxlZ2FjeS10cnVuaworODAwODEgYzVhNGQ5ZDcyZjk4MjE5MjM2ZTI1OTFlMjg1MzEzZTE3ZjEyN2RjYSBsZWdhY3ktdHJ1bmsKKzgwMDgyIDdlODZmNDQyMTJkNjU1YTU0YjI1NGQ3MDhlZTQyMGE2MGNhMWMwNzMgbGVnYWN5LXRydW5rCis4MDA4MyAxNGYzMTBhNmU0OTI4NmM3YWVmOTU3NDFiMmNkOWRjODZjNTcyZjI1IHB5M2sKKzgwMDg0IDQ4NWUzNGVjMWExYThiOTYzNmVjOGVlNGUyNmQ5ODg0NDM0Y2E4NDQgbGVnYWN5LXRydW5rCis4MDA4NSA3NjQ5NDYzOTkzNTJkZjBjY2I3OWFkN2M4MmZmOTNjMDI0ZmYzYTVlIGxlZ2FjeS10cnVuaworODAwODYgNDIyOTY2MmVkZTg3MmRiZWMwMjdkNWJjMjU0MjlkYjlhZjcyYjVmMyBsZWdhY3ktdHJ1bmsKKzgwMDg4IDNhNDQ3M2JlZWFmNTIzOTVlZGQ1NTJjNjdkZDk4MzMyMDJjODkyMGIgbGVnYWN5LXRydW5rCis4MDA4OSBmNGJkM2IyY2IwMDBlYjMyNTc5YWIwMTQ3NDAzYzM1YWRlN2YyNTZmIHNpZ25hbGZkLWlzc3VlODQwNworODAwOTAgNWU4NTFiMjllZDk1YjE4N2QyNDFmMmEwZTgwNDJhZmY0NTY2MTIzMCBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwMDkxIGMxZDFmMDAwYjQwNGU2NTFkZWZkYWJkYjZlNmQ5NzhjMDJlOWE5NTkgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDA5MiA3M2Q3OGZlZjkxZDcwZmEyZmUyNmVjNzkxMzA4NjcyZTNkNmFiMDlkIHB5M2sKKzgwMDkzIDVmYTQwMmE0NmY1YTdmN2UzNjA2OGI1MzI2Y2ZmMGJmNzYxOTk2NmMgcmVsZWFzZTMxLW1haW50Cis4MDA5OCAzMjQwMTY3MTg2MjE4MDg3ZjUwMDNmZDUwNzdiMTVlYWFiZDQzMzIyIGxlZ2FjeS10cnVuaworODAxMDAgZjk4YmQ4NWFlYmIwZjUzNzE4NzU4ZDUxZTkzY2NjZjcyYmJlMzkwZiBweTNrLWppdAorODAxMDEgN2I5ZTMyOGY3NTMzMjFkMGI5N2ZlNzRiY2VhM2U0YTc2N2UxODk5MiBsZWdhY3ktdHJ1bmsKKzgwMTAyIDUxYjg1NTE2ZDdmOTNhODNkMjNhNGIwODQ0YzkyMDg3MDhlNWIyM2QgcHkzaworODAxMDMgMzVhYjVjYmQ3ZTc5MGMwMjNlNTg5MjU5MDNiZjU1NjVmNWYyMTJiNiByZWxlYXNlMzEtbWFpbnQKKzgwMTA0IDgyMGI3ZTBhNmYzOGIxYjU0MTRjZTBiOTJlZjE4NGZkNDJkNzQ1NTkgcmVsZWFzZTMxLW1haW50Cis4MDEwNSAxMzdiNDI0ZTJmNzg0YmQ5ZGI4NDU2NTVhNzJkNTQwNTAxYzMwMTIwIHB5M2sKKzgwMTA2IDgxMjk3OTc1ZDI1M2U5Y2YzN2JlNGZmYmQwZGI0ZGNhYjNkMDZiNTUgcHkzaworODAxMDcgYWZiMjVjMmQwNTYxOTRjZGZjZWQ4ZTRmMGU0OTExOTRlZmZjYmFjZCByZWxlYXNlMzEtbWFpbnQKKzgwMTA4IDAwNTUxMGFjMDk5NWI2ZmZhYzIwODAwMTk3MjE0MDJhYmI3MGRiNmUgcHkzaworODAxMDkgODdkMTIwYjllZmYyYWUzNmZiNDJiZjZlYTc2NjE0MTIyMTRlNzY2YSBweTNrCis4MDExMCA1NDdmMzBhMGQ0YjFlZDY1NjhlMjVkZWM5NjNmMzYyZWYzM2ZjOTczIHJlbGVhc2UzMS1tYWludAorODAxMTEgNGNiYjBmZGViZjczN2NhZGI0MGFjZWY5MmViYjAyZDc2NzA1MzU0MCBweTNrCis4MDExMiA5NTE3OGUxN2U5NjEwY2Q4MDQxMzg2YmEwY2NlODAyOGJiN2YxNGJmIHB5M2sKKzgwMTEzIGJkYWEyODlkOWYxOTlkOGUxZTZmOTRlM2Y2MzU3N2M4MmIzNDdmYzEgcmVsZWFzZTMxLW1haW50Cis4MDExNCAwNDQyZTdhNDE4Y2ViZmMzOTQ3ZDdkM2Y1OTdjZTEzOGNkM2QxY2YyIHB5M2sKKzgwMTE1IDExNjQwYzFhNDYyODhhODZlMGU0ODA0MzBkMDQ1YTY1OGMwZjY4YTMgcHkzaworODAxMTYgMTViMDljY2ZhYzdjZmRlZWY2YzQ1YzRjOWM0NDg0YTBiMzRjYjc1ZCBweTNrCis4MDExNyA2MzM1Y2YzNDVhZmFlODEzYjJjNWIwZjUwNDAyMDU2ZGI4MWNlMjMyIHJlbGVhc2UzMS1tYWludAorODAxMTggNDRhNzUwN2Y2ZGI1NDI3ZjU3ZGI5NTVlZGEwYTE3MWEyYjc2MjVkYiByZWxlYXNlMzEtbWFpbnQKKzgwMTE5IGNjMTBhMTUyNzUyMWQxMDZiOGVhM2E5NzlkNGZhMjM5NzJlZjBmNTAgcmVsZWFzZTMxLW1haW50Cis4MDEyMCA0NWFlZGNhZTljNDc5YzIwNjY2MDRhZGE2OWNlODY2ZDgzNjQ0YWUwIGxlZ2FjeS10cnVuaworODAxMjEgOGFiNWJiYWU1ZWZlOWU4NDlmMDg4NWNjMTQzNDFmM2Q2MWIzMjc0NSBsZWdhY3ktdHJ1bmsKKzgwMTIyIDgxYmJkNTY3MGVjMzllYzcyNzIxY2VmNTMwYmJkZDZmYTVkOWUxNzkgcHkzaworODAxMjMgNjNiODE1Y2M2ZjRiMWZkOWIwMThlMmI5MjJhZWUwM2JkZDU1ZjVkNiBsZWdhY3ktdHJ1bmsKKzgwMTI0IDM2OTZkMTdhMTBiM2E0NTI4MWVkMGFkOTIwMmM3NzllNjYxZjQxMmYgbGVnYWN5LXRydW5rCis4MDEyNSBhNzQ5MWQ0N2Q0NTQ2ZmRjMmJmOGUwNmVmNDNiZGYwOTg5Y2EyMTgyIHB5M2sKKzgwMTI2IGNlNjI0Y2NhMjAyYWU5MTRmMjg4OWY3OTM5YmI0Y2Y4MmRhZWEzY2IgbGVnYWN5LXRydW5rCis4MDEyNyA0NjBhOTg0YTllZDU3MDdkMmZhMzQ3YTdiYjY0ZDU0OTQ2Mjc4N2FhIHJlbGVhc2UyNi1tYWludAorODAxMjggNzczNDA4Y2E1ZWU2MzNmZmRhYzBjOWZkZjAwMWJiNGViN2VkYWE0ZSBweTNrCis4MDEyOSA3ODRhMDIyNjY0ZTNhMmMxOWIyNTM2NzlkNDM2MjE5ZDc0N2JkMmI2IGxlZ2FjeS10cnVuaworODAxMzAgMGEwMWEzZWExNDBhOTdlMDQ4MmRhM2Y4YmY0ZjgzODc1ZmZhY2I4MyBweTNrCis4MDEzMSA2OGZkNzBhOWU3N2FmZGNlN2VlOWM2NzMyMDZmMjQxYTZlNDIyOWU3IHJlbGVhc2UyNi1tYWludAorODAxMzMgNWUxZGJjM2FlNzY3OTdiNzc3NjA4NzA1MWI3M2MzOGY1MzcyODEzZiByZWxlYXNlMzEtbWFpbnQKKzgwMTM0IDFhMzMwNGNlOWEyZTdhZmE2YWRlM2RjZTBhMGQxOWFiMzdlMDI0ZDEgcmVsZWFzZTMxLW1haW50Cis4MDEzNSBkYzc2NWJjYTI0YWRkODRmYjVkZTU5NTAxMWVjZjljZTg3Y2E5YWM2IHB5M2sKKzgwMTM2IGU1MzkwZmVkY2I2YjE2MmMzZGRjYWUyMTlmNWM3NTAzMjE2NGE0YzIgcmVsZWFzZTMxLW1haW50Cis4MDEzNyA3YjY5ZTYzMGQyMzc3OTBiNTY4NWY5ZjIwODMwNGY4ZjQ3OTc0MjYzIHB5M2sKKzgwMTM4IGM1MzJhZmIwZmE4OTI4MDJlMTNmZmNmZmU5YjU0M2Q0ZTQ4MTY5ZTEgcHkzaworODAxNDAgMDQ2Zjk3ZWQ1Njc5NGVmZGU3NTJkOGRiODNhMjc1ODRhZTQ2YjM4YSBweTNrCis4MDE0MSAwZTM2Y2MwZDZhYjAyMDMzNjk5MjEzOTVhYTExNjJlMjJkNmVlZGZiIHB5M2sKKzgwMTQyIDczNGRkMmVkYTFjYzRjYTRiYTYwMTNhZjVmNjk2NGE3NWFjODNkZDcgcHkzay1qaXQKKzgwMTQzIDczMjFjN2Q2NDJhZGRhOTk1ODMzMjdjNzZiMGU0NmY3OWNkMmQxYzAgcHkzaworODAxNDQgMjVlMzVlMzgzOGM3NzU5ZmQ3ZjdjNjhiMjdjZGIxZWE0ZTBlODljNSBsZWdhY3ktdHJ1bmsKKzgwMTQ2IDdiMDY1NjkyOWNkYjkyNDUyNTBiYjRjZDMwNTQxZDgwNzNmMjFkNjAgbGVnYWN5LXRydW5rCis4MDE0NyAyOTM4YmY4OTk4NjM4OTVhNGQyYTJjODljNGJiYmQ3ZTc3MjhlNzcxIHJlbGVhc2UyNi1tYWludAorODAxNDggNGYxMjIwZjNlMmM3ZGI4YTI2NzUxYTQ0YmEwYWIxYzQwOTE2YzEzMiBweTNrCis4MDE0OSA0ZDAyMDg2NjFiMWY3Mzg3YTRjOWQ0ZDVjMmUxNzhmZjUwMWI1OGY5IHJlbGVhc2UzMS1tYWludAorODAxNTAgMzg0ZGQ0NDlhNGVlODgyZWI5MDBhY2U4Y2RlZDMzN2VjNjBhYjhmOSBsZWdhY3ktdHJ1bmsKKzgwMTUxIDc0NjJlNzUyZjBmYTI4YmFiZGM5MDk5NTE4OGY5ODA2MDQ0MGEwMTAgbGVnYWN5LXRydW5rCis4MDE1MiAzM2Q0NzlhMzg2NjZhYzU5NWYzZGRiYjFkMTIzYzIzMTkwMTkwMDEzIGxlZ2FjeS10cnVuaworODAxNTMgZjJlMmIxOTZkYjkyMmMyNzhkNzUwMTAyNWQyZTczNGRmYmI3NDNkMSBweTNrCis4MDE1NCBlNWY2ZGUxOGI3MTU2ZTVjMTQyOGMwMDZkNTIwYjczODk4YWI2ZTMxIHB5M2sKKzgwMTU1IGNjMzgyZjM5YjM5OGNmOTk4MWYxODA4MmRlM2NmZGVkM2M3OTI3ZjIgbGVnYWN5LXRydW5rCis4MDE1NiBkN2Q1Yzc2NTQ1ZmIzN2Y1YzA1ZWQ0MGRjY2I5N2Y0YmY1NzE4YWZhIGxlZ2FjeS10cnVuaworODAxNTcgYmFjOTkyMjlkYTJkY2E5NGI2M2NmZWJhYmQ2ZmU5MWU0YTkyZGU3ZiBweTNrCis4MDE1OCA5YWNlNTViMjlmN2U5Y2UwYmI2ZDIzYjM0NTI2YTBlNWQ1N2IyNTc1IHB5M2sKKzgwMTU5IGViMzBlNjYyZmQ2YWMxMjc3M2JhMzNlZWJjMjliYTEwOTA3NTg2ZmYgcHkzaworODAxNjAgZjczMDcxMmQ5N2I4ZGRjMmI2MmU2MzYxZDhkMWVlM2YyNGVhYTcxNCByZWxlYXNlMzEtbWFpbnQKKzgwMTYxIGQ0MTllNzM3MzM3MDIxNjViYzUzNmZlYWUwMzE3ZGI3YjFmNmU5OTIgcHkzaworODAxNjIgMzE2YmVjM2YxOGVjOTE1MTBkY2UzNzcwMTM3MGRiYTRjMjZhMzNiMSByZWxlYXNlMzEtbWFpbnQKKzgwMTYzIDBmMzdhZmI4YTlmMmMwZTlmNTUwNmEzZGQ5OWFjNTA0ZDFhN2UzYmEgcHkzaworODAxNjQgZDNlYWI0NTk3Mzk1MWI4YzA2ZWYwMmI5ZTgyZTAwZTE0NTZiZDc1YiByZWxlYXNlMzEtbWFpbnQKKzgwMTY2IDdjOTBhYzE5NGU0MDgyZDYwMzMyOGMxZGNlOTZkN2FhODAwOGIyYjQgbGVnYWN5LXRydW5rCis4MDE2NyBlMDg3YjVkM2QxOTFjMjEwNTg3YzczMGM5OTI1MDVkOTk5NDMyNmMxIHB5M2sKKzgwMTY4IGVhNDJhZjk2OGQ5ZDA1NWEyYzk4NDk1ZTJjZTU4MGRmZGQyYThmYjEgcmVsZWFzZTI2LW1haW50Cis4MDE2OSA4ZWZiY2NlMDc1N2RmNjA0N2MxODk2ZmJhMTQ0MzdmZTUzZDg3ZDQxIHJlbGVhc2UyNi1tYWludAorODAxNzAgN2UyNzBkY2Y0YmQ1OTBiYjlmNTA0OThiMmZlZTIwMzUzZjY0ODI4MiBweTNrCis4MDE3MSAwYzBkODE5ZWRiOWRjZjY5N2NjZjIzMDhhMWJlZTViYzVhODE0ODU2IGxlZ2FjeS10cnVuaworODAxNzIgYTA3ZjYwODI1ZTFhYjlhMWJmMTAyODkxZGY4ZDBkOGRiNzBiOTNkMiBsZWdhY3ktdHJ1bmsKKzgwMTczIGE3ZTY5YTVmMjMzNzg0NjEwZTA3ODc5YzU1NGIwOWI1ZDExNmY3ZDYgcmVsZWFzZTI2LW1haW50Cis4MDE3NCA2Y2JlODY0NTcxN2QzZTk5ZGQyYTU2ODMxYjRkYjk3YWM3NmMxYzdhIHJlbGVhc2UyNi1tYWludAorODAxNzUgNjU0ZTFjYzliNGZmNTZhOGY1ZTVhNDliMmI3YmVjNzhhYzVjZmFlMCByZWxlYXNlMzEtbWFpbnQKKzgwMTc2IGZhOGEwM2RmYzJkMWNiNmM2MzZlYjYxMmZjNzAyNTViZGFjOWFjOGMgcHkzaworODAxNzcgMTNkODZmYzY5OTQwODFiZWE5MTE2YzBiODM5NmJlZGYwOGY2MDIyMyByZWxlYXNlMzEtbWFpbnQKKzgwMTc4IDJmNTQ3NTZhZWIxMTY2YzdmMGIxODUwMDljNGUxM2NiMGE3NDliYWEgbGVnYWN5LXRydW5rCis4MDE3OSAyMjczN2E5OWJmOGM0NDRiYzRhZmYzZmJiOTQ2OTIyYThmZDc1OGQ2IGxlZ2FjeS10cnVuaworODAxODAgNmNiMWM0ODA0ZjljOGIxZWNmNzI5NTVjNTQ1ZTZlNGQ4Y2M2MWY3ZSByZWxlYXNlMjYtbWFpbnQKKzgwMTgxIGZlNmI2YzE4OWJiNDE1M2Q1Y2FiYTBkMTVkYzc1MjZiYzU0ZDdmODkgcHkzaworODAxODIgMWYzZDJlNjEyYjQ0YWI3N2UxODFiNDEzMDE5Mjk5OWQzODBiNzU2ZSBweTNrCis4MDE4MyBmYjNlNDAwYzJjZGE0MDg1OTI0OTViOTJhZDYzMGYyN2ZhMjg0M2E4IHJlbGVhc2UzMS1tYWludAorODAxODQgNDUwNWViNTdiNGNhN2RmODAxOTQwZGQwY2U5NzJkZmRjMWJhOTE2NCByZWxlYXNlMjYtbWFpbnQKKzgwMTg1IGJlZGQ2ZWUwM2U2MDRlNzU2OWM2ZjgwZDY4NmMyNDRiMjYyMzZlNjEgcHkzaworODAxODYgZjc2MmM2YTU0YmZjYzc2YzZjNTJlOTY5YTcwZmVjNTUyMjJjYTRiNSByZWxlYXNlMzEtbWFpbnQKKzgwMTg3IGE5NmZkMGU4NzRiNDk4YTRlNjQ4MjdlMGExZGU2MmUyYjA1N2EyYjMgbGVnYWN5LXRydW5rCis4MDE4OCBiY2E1NzQzNzYxMjcyZGQxZWFiMzI1ODYxYmRkYzBlYWRiM2I5NDI1IHJlbGVhc2UyNi1tYWludAorODAxODkgNzI2N2UwYWNlMzNjMTc0MjUwYTdmYzU2ZmM2OTU0ZmZhNWUxYWFhYiBsZWdhY3ktdHJ1bmsKKzgwMTkwIDA0M2YxNDMwNGRlZDA0NzM1NzAyYzFlNDkyMzJkOWEyMzY4ZGY0OGEgcHkzaworODAxOTEgMmNmYjEwYTZjMmI1ZDcwYjUzZmQ3NWQ2YWYwNDE0NTZjZTczNWIzOSBweTNrCis4MDE5MiA5ZDM1YWZkODgyMWYwMDc1YThiNDM3Zjk2NDNiMzM4ZmRkZTBkYTZjIHJlbGVhc2UzMS1tYWludAorODAxOTMgYTUyY2I5OTFmNTRjMWIyNzVjYjk4MjJjYjYwODkyMjdlNTVkZWEyOCByZWxlYXNlMjYtbWFpbnQKKzgwMTk0IDc2NjQ5ZWQ0NWM2MzdiYWY5NGU0OTE0MTE0OWQ3NmY4N2FkNTk4MTIgbGVnYWN5LXRydW5rCis4MDE5NSAwNjQ0Y2EzZmUzMGEwNGVmNjZjMzBiZDQ3NzUyODY5ZmU5OWFiMTc5IHB5M2sKKzgwMTk2IDQ3NzRkNTllZWY3YjM3NjIxM2M4ZWY5MTlmMTQxZjBmYjExZTNjYmYgcHkzaworODAxOTcgMjhmYzMxNjg4YjdjMTAzMWYyNTZhMTc0ZGE3MGNmMGExMjdkYTdlMSByZWxlYXNlMzEtbWFpbnQKKzgwMTk4IDlhYWMxZDNkODczZDE4MGViNDRkZDlhZTYwNThlNzA4ODgyOTJmNWQgcHkzaworODAxOTkgNDg1YzNmMDlhMDliNDhmOGEzZTk5OTIyNjA2ODdlZjA2YTVjMjdmMyByZWxlYXNlMzEtbWFpbnQKKzgwMjAwIDkzODZlM2RkNTcwMGM3MDgxYzFjNzAzMWEwMGMyNjRmNjE5ZWNiYjcgcHkzaworODAyMDEgMThhMTk1NjMzYjU5OWVkYzFmMTBjNjYxZGNkZTc0NDczODJkNDRmMiByZWxlYXNlMzEtbWFpbnQKKzgwMjAyIDhmNWM0ODBmNmQ2ZjU5NTE1ZjhmODBhZGI2ZGYxYmRkYzJjM2Q3ODYgbGVnYWN5LXRydW5rCis4MDIwMyBjZjU3NTZlYzZlZDdkN2Y0MmI0ZjU4Y2FjMjQ5MTA3NDdmYmE4MWM1IHJlbGVhc2UyNi1tYWludAorODAyMDQgYWE3MDdmMTNjNDAyOGEyNzQxMDFhZGZlNTQyYzg0NDdlMzQwMmE3ZiByZWxlYXNlMzEtbWFpbnQKKzgwMjA1IGE3Mjc3OTY3MmYxNTlmMzFjMDE5YjIyNTk2YmUwMDI4MzI0OTVjYWEgcHkzaworODAyMDYgY2Y4MDY5OGYyNzU2ODI4YWFhNGRhMzljMzkyMTllZWViZjJmZDdkNSBweTNrCis4MDIwNyBiODc1MDIxY2Q5OTM3MDIxMDBkNGQ5ZjZlMmZhNDUxZjQxNDkzOTk5IHB5M2sKKzgwMjA4IDJkZWI3OGJjNWQzODU5MjEzMjczZmRhODdhZWU3ODFjY2M0NTE5MDEgcmVsZWFzZTI2LW1haW50Cis4MDIwOSA2ZTJlMmI2MjY4NWVkN2E5YzA3MGNjNmYzNTI5NTE3NjYxNGFjOTEwIHJlbGVhc2UyNi1tYWludAorODAyMTAgNDFlMmYwNTRkNTM5MDFjYTgyMzkzMDllNWU2MWY3ZTJhMzMwZmFkNiByZWxlYXNlMjYtbWFpbnQKKzgwMjExIDdhNTY0ZDc0ZmQ0YThhMzc4OTE5ZGU1YjVhY2ZkOTkxYzZhNDBmYTYgcHkzaworODAyMTIgNzg5NjEyY2QwOTcwNWZkMjcxZDU3MmFhNTQyNDc5ZjM0ZTc5ODY0MSBweTNrCis4MDIxMyA4MzY4MmU3ZDU5YTY0NDM5MWU2MGI4MzRmODkyMmFiNDU1OGI3ZTUxIHJlbGVhc2UyNi1tYWludAorODAyMTQgY2U2MDVlOTUwMDA4MDZjZTI3NTQ0NDJiMjAzYjg3OTA1YzE1MWY1MCByZWxlYXNlMjYtbWFpbnQKKzgwMjE1IDQwOTJlNDU2NmRiM2ZmMjYxOWMyMDIyNjc0MmYyZTkzODIyY2UyODIgbGVnYWN5LXRydW5rCis4MDIxNiA3ZjkyNjMyZjkxMmQ2YzdhMzQ2MWI2NTE1NjNjYzA0Njg1YTUxZjRlIHJlbGVhc2UyNi1tYWludAorODAyMTcgYjUxNGY4MzExZjI4NTVkNWQ1ZTU2YjhlMDRjM2Y5ZDhlZGNhNmM0ZiBweTNrCis4MDIxOCBiY2ZiNmJhZGZmODg0MWJjMGU0Y2MwMGQyYTYxOTliZGVmZTkyNzJjIGxlZ2FjeS10cnVuaworODAyMTkgNzE4NjBjZGI0ODg2OTFlNjAxNDdkMzk3ZjEwNjk0NzNkNTUxYzc0ZSBweTNrCis4MDIyMCAxZjAyYjQzZTA5MDg5MjQ3Y2JkYWJkMDM2NTA0NmQyMjZlZDE0NThiIHJlbGVhc2UzMS1tYWludAorODAyMjEgMmYzMTFkYWIwNjk3MzU4MGIzNTU4MmUxNGEyNzVhNWJjZTc0YTgyYiBsZWdhY3ktdHJ1bmsKKzgwMjIyIDk4YjJjZDEwYWIwNWYwMWQyYTZjZWUyYTc3ZWZlNjc3MTEwMzhmNDMgcmVsZWFzZTI2LW1haW50Cis4MDIyMyBmNzdlMzdhZmM4NzBhNDM4Y2RjNzAzMjdjMDQxMDRiMWE2YmU1Y2ViIHJlbGVhc2UyNi1tYWludAorODAyMjQgN2FkNmVhOTdkNDQwMjMxNTg2NzAxYTA1YTgxMTBhNjQ1NWJhOTczYyBweTNrCis4MDIyNSAzMDFmYmU4YmZhZDE4NTllMTc1Y2YwMWUwN2VjODlmNjRhYzBhMDE1IHJlbGVhc2UzMS1tYWludAorODAyMjYgMzIyODUzMTM4OTZjODQwMTAyZjllMzFjZWU0ZjEzMWMxZDNiNTliYiBsZWdhY3ktdHJ1bmsKKzgwMjI3IDdmZWY4Nzk2Zjc3NzA0MmQ3YjgyYjVkODNkNTdlYjk2YzkzYTEzMDQgcmVsZWFzZTI2LW1haW50Cis4MDIyOCAzOWI1NjFjNTNlOWFkN2JiZjYxYzBhOGFjYjA4YzlhNTNkMzZkYzZlIHB5M2sKKzgwMjI5IGMxM2Y4MjVmZGVhYjc2YjI0OTBkNzQyNDUwOTQ3ZWIwZmE2OThjNmYgcmVsZWFzZTMxLW1haW50Cis4MDIzMCBiZTE3YmRhNWE2NThlMmFiMWI5OTVhMzZjZDJmYjBlOWMxMGQxYWZhIHB5M2sKKzgwMjMxIDM1OTk1NGNmMGNjZGE5ZDBlMmZjMDYwODVlZDgwZjY2NTlhMDBlMjEgcmVsZWFzZTMxLW1haW50Cis4MDIzMiA1OTI3ZmRmNWQ0OGM1YWVlZTE3YTI4MmQwYzVjYmIyMzFhMzJkMmQyIGxlZ2FjeS10cnVuaworODAyMzMgOGM5ODI4YzE1MDQwOWYyN2YxMWVhM2YyMGI2NTk3M2NjNjU3MWM0YiBweTNrCis4MDIzNCBiZjhkNTQwMmFiZmYyOWY1NDZjZDIzNTJmMmZkODk2MjgxOTliMWUxIHJlbGVhc2UyNi1tYWludAorODAyMzUgMWZiNjA4MTQyMDQwNGY1ZGFlYjc1OWQ2ZWNkYzZmZjE4ZGRjNTgxMCByZWxlYXNlMzEtbWFpbnQKKzgwMjM2IDVmNWVlOTRmMTkyNjNkZjdlNTYwOThiYzczYzJiNTMwMDZkZTNiN2MgbGVnYWN5LXRydW5rCis4MDIzNyBjMjM3YmYzZDA0M2NhYWQwYmJjNTAwOTEzNzRiZTk0NWFkMjhhNTM3IHJlbGVhc2UyNi1tYWludAorODAyMzggZWY3M2FjNzFlMjk1MDJmNmRjZWZmM2EzNjk0MTdiOTRkYmU1ZWFhNCBsZWdhY3ktdHJ1bmsKKzgwMjM5IGUwZmNhM2U3Y2ViOTRiZGM1NzQxMWY2NzEzOWU3NTlhMzkxZWE2YjEgcmVsZWFzZTI2LW1haW50Cis4MDI0MCA2MjAzZjQ3MTY1ODVmMmVlNThjZmNmNTU3Y2I4YzZlOTM5OGM3MTY3IHB5M2sKKzgwMjQxIDhkMDhmZGM5N2FhNGM1MzNjZWZhOGIwODRkZDY4YzYzZDhlYzE1ZTUgcmVsZWFzZTMxLW1haW50Cis4MDI0MiBkYzczZWUyYThiOWVjNmIwYmI1NzhhMGUwNjhkMWJlOWZkMTdkMzIzIGxlZ2FjeS10cnVuaworODAyNDMgNzI1YmU4Zjk0MThiODNlNDI0ZTNjYzQ1M2NmY2ViOTgwZWI1ZGIwOCBsZWdhY3ktdHJ1bmsKKzgwMjQ0IDgyZGUwYjQ4OGYyZGQ3MzFjZDYwMDU1OTAyYjdlNWNhZDZkNmRlODUgcHkzaworODAyNDUgYjAxODMxOWE2MTViMzUyMzBjNmVjNTA0YjllOTQyODQyOWU0NzIzNiByZWxlYXNlMzEtbWFpbnQKKzgwMjQ2IGYyNzMyY2NjMTJiNDcwZDQ5NGYyYThlZDkxNTc0N2ZmMjZiZGIyYTEgcHkzaworODAyNDcgMzk3Mzg5ODA1NmI2MGZjYjZhODAyMjFjZTI0YWZmNzBmNDVlM2EwMCByZWxlYXNlMzEtbWFpbnQKKzgwMjQ4IDc2MzgyMjNmMmUwMmU5NTEyMzc4YWY4ODBhNjZkMDUwNDU5YWRjYzkgcHkzaworODAyNDkgOGRlMjg1Y2FkYjI0MDMzMDVkMmFhYWNiMDFhYTYzODFmMTExNDIxYiByZWxlYXNlMzEtbWFpbnQKKzgwMjUwIGFlMjc4MTkyMmE2ZGU1NzE1Zjk1MjRlNzhiYzBmYmYwMmZjZTc2ZDMgcmVsZWFzZTMxLW1haW50Cis4MDI1MSBjZWEzOGVmNjA3MDBlZjFiOGFmN2QyYmNkYjYwYTllZTNmNjgyMDc1IHB5M2sKKzgwMjUyIDgyNzYzYjIwMGE3OTM3OTU2MDhmODcwNzg3OTE1YjRkNDdmODFmMmYgcmVsZWFzZTMxLW1haW50Cis4MDI1MyBkYTg3MDQ5OTMwMDE2ZmI1MjA3NTQ0NjYzMGIzOTg5N2MxMzgwZDlmIHB5M2sKKzgwMjU0IGJiOGZlNzlkYzVjYjM1MmZhNGFhMzBhODQ3YzNlYzUyYjNiMzUxMDYgcmVsZWFzZTI2LW1haW50Cis4MDI1NSA3ZDM0MzJiMDdlYTFhNjJkZmE4MjdjMzM1MDg0MzQ5OWVlMGQyZjE4IHJlbGVhc2UzMS1tYWludAorODAyNTYgYmUxMGY0ZmFhZjEyY2ExNDBiNmYxZjg5M2IyOWRiM2JmOGNkNGI2NiBweTNrCis4MDI1NyBjMmZkZGRiMmI0YTU1YWZmZjVhMjM1ZGRhMTIyMDA2ZWNjMTRiNzMwIHJlbGVhc2UzMS1tYWludAorODAyNTggNDBhM2E2MzNjNTY0ODRmZDY4ZjE1MGRjN2EwZDExYzM4NGNmZGJkMyByZWxlYXNlMjYtbWFpbnQKKzgwMjU5IDM4NzQyOGZhNjlmY2RiMGU1MmQwMTFlYjMyZjk1OGZhMTIxZWNjNTIgcHkzaworODAyNjAgZTc3M2UyNGIxNGU2YmZlNzU1ZjMxZjUzMzhhM2ViZmVmZjVkZWZiMCByZWxlYXNlMzEtbWFpbnQKKzgwMjYxIDdjZmE3OTc1YWIwZTE5ZTAyMzYzY2UwNTliZjFiYTQ3MDUyZWZkYTQgcHkzaworODAyNjIgN2NhMTI3MmY0M2EzNGFlM2FhYzM4Mjk2YTk2YWEyMDczODhkNDFjNiByZWxlYXNlMzEtbWFpbnQKKzgwMjYzIDczYTYxNjVkMDAyYmQ0NjQ0ZTY5MzUyYmU3NDJkNWZkNGQzYjM0ODcgcHkzaworODAyNjQgZDA3MTIwMWYyNjEyZDY3ZWYzMDcyODBjYzIzNjc2ZDNkMjQ4ZTA4MiByZWxlYXNlMzEtbWFpbnQKKzgwMjY1IDZlY2E3ZmJkNTM5ZWRmMTBmYmIwOTNjZjcyNGNiNDUwMThjYmQ1MWQgbGVnYWN5LXRydW5rCis4MDI2NiBhZTI3MmQyMTJhOWRhY2FmZDZkOTE0ZDQ5M2ZlMGYwNmRlY2Q4YzMwIHB5M2sKKzgwMjY3IDRlNWM2YjI5ZDkyOTVmZTcxOTdmMDE5Y2JjZTdjMzI1NjEzNWRlZTkgcmVsZWFzZTI2LW1haW50Cis4MDI2OSAxZmQyNzA5ZWQzZmRiOWUwMTMxNzQyNzQ5OGNmNTY0NTIyYzBhZmY1IHJlbGVhc2UzMS1tYWludAorODAyNzAgZjg4ZWExYjRmZGJlN2M5Njk5OGFiMmY3ODc5YTMyNjEwNWJmNjhiMyBsZWdhY3ktdHJ1bmsKKzgwMjcxIGUzMTdlODRlOGExYWExYTlkYjk4ZDQyMzQxYTBhMjIzYWE0ZTMwMzEgcmVsZWFzZTI2LW1haW50Cis4MDI3MiAwNzAzNWRlMDVkNGJkNGZjYjAyODI1MmMxMmIyMGU0MzFiMTc1NGMwIHB5M2sKKzgwMjczIDBmMDFiZDYyMDg0ZWZhNmE1ZWUxYThhNDE1NTBlZTZjNjczOWY3NjUgcHkzaworODAyNzQgNmRhNzE3YmZlNDI1Nzg0ZWVmMTRmNmI1M2Y1Y2UxODk4YTc2NTFkMCBsZWdhY3ktdHJ1bmsKKzgwMjc1IDUwNmZhZGRjOGE5ZTcyZjg5M2JmNWNkYmJjZjQyZTg3ODU3ZDQ4MzIgcHkzaworODAyNzYgNTdkMDk3OTUwOTY4NzM2YjQ0OTRmYzI0Y2E1YWQ3MjNjNzE3M2IzMiBweTNrCis4MDI3NyA3YzhlYjJiYTkxMjk4YjllZjY4MDQyOTM5Zjc0ZGE1NTNlNDkxMDdkIGxlZ2FjeS10cnVuaworODAyNzggZDFkMjA5ZjJjODAzOWQ4N2MwNmRlMGU1OTE4MTAxMWU4NzYyYWZmZiBweTNrCis4MDI3OSBkN2ZlZmZhNzhmYTAxNjc0OTVmZGI1ZjQ4MDIwNmU2ZjhmNjExNTAwIGxlZ2FjeS10cnVuaworODAyODAgZDA5Zjg0MjU4ZTUyMmRkZjdjMjcxZWM0OGQ1M2RlZmU0YzUzOTJiZSBweTNrCis4MDI4MSBhMjJmMmFlODU2NDUyNTE4NWU0OGZmZGUyMzAzYjI5M2M0NmI2MDA5IHJlbGVhc2UyNi1tYWludAorODAyODIgNGRkY2E3ZmQzNjM5MTkwMDhlZTU2YmRmODVkNjlmYTJlMzgyN2MyZSBsZWdhY3ktdHJ1bmsKKzgwMjg2IGJkNDVlMDExMDk5MDE0ZWFlYmE2YTM3YmRjYzQ4ZGM2N2E2ZjRmNmUgcHkzaworODAyODcgMjU5ZWZlNWI5NjFiMWRjZmZkNDM0MWRhZDFhOGJmMDRmYzg5N2NjOSByZWxlYXNlMzEtbWFpbnQKKzgwMjg4IDg2ZDA4Y2I2YmE1YzFhNGRmMzcxNDEzNTIyNWUyZDYzYzQ4OTlhZmYgbGVnYWN5LXRydW5rCis4MDI4OSAxOWE5YTQ1N2E0N2FjNjAzMTU5ZDE2M2E0NDNjYzJmMDM0OTgxZWY5IHB5M2sKKzgwMjkwIDhiMzZmNzE3NTIzODZiOWQ2NzVmZDUxZGMyODhkOGYxMGUyZGNiOTIgcHkzaworODAyOTEgYWYyN2M1YTlmZWI4MTQ4NmNlNTEwYzExYzJiNmFkMDgwNWRkOWVmOCBweTNrCis4MDI5MiA4YjM0NDVkZmE3MThlY2YxN2U5ODYzOGI4YzkwNWIwMWIzNTVmNzEyIHJlbGVhc2UzMS1tYWludAorODAyOTMgZjM0ZmIxNTEwY2JjNTA1NTZiZjljM2I5OWI3Yzk1MGRlMTlmZWRkOCBweTNrCis4MDI5NCBjY2UwYTViMjAxNWUyNDllMTcyOTFiYjFiZGJlNGU1ZTE0YmQ1MGE3IHJlbGVhc2UzMS1tYWludAorODAyOTUgZjQwNDdiNWEwZjU0YmQ1M2Y1NThkYWJjZjFmODBjMjg4YWRmNTk0YSByZWxlYXNlMjYtbWFpbnQKKzgwMjk2IDQ3M2EwZjY3ODgwNjEyNjJhM2MxOTg4YTU3OWUxYTg3OTIyNGVmMTggcHkzaworODAyOTcgZDk1YWNlNTI4ZDY1NzI2ZTI2MjFlMTQ1MjU4NGExNDhkODY4ODk0YyByZWxlYXNlMzEtbWFpbnQKKzgwMjk4IGY1YWZhZGI3NDVkYTFhMzFkMzBmYzk3OWY0OWNhY2MzMTM2Mjg3ZmMgbGVnYWN5LXRydW5rCis4MDI5OSAxYjQzZWUxZWUzZDg4NTI1ZDFhYjhiYmM3MGI5ODUzYTdhYTdiZDlmIHB5M2sKKzgwMzAwIGEyYTRkOWRjNzg4NGY0ZWY0OWE5NjZhZDBlODdkNmVhY2JkNDFiMGUgcHkzaworODAzMDEgNzAzOWM2MDQ0YWI2NTM0ZmFiMTc1ZmRkYWY0Yzk2ZmY5ODllMzQyYyBsZWdhY3ktdHJ1bmsKKzgwMzAyIDliOTJlNzY3MTEzNTg1NzE4YmRiZDcwNDViZTc1YzA1M2IxYTViNmQgcHkzaworODAzMDMgOGUyYTc4ODQ5MjlkYTJkMWY3OTYyNTY3ZGQ5MTdhODE3MjAxYTg3YiBweTNrCis4MDMwNCA5NWNjYWZjMTQ0NzU4MTYxNWM3YTdmNjJmYjc5ZjQ1ZTY5YmY1YjVkIHB5M2stY2RlY2ltYWwKKzgwMzA1IDhhOTFjYjM2ZTA5NGNjYzg5N2EzODg3NWJhMzM0MDdhYzc4ZTJkZDQgcHkzay1jZGVjaW1hbAorODAzMDYgMmRiMDZmYWU4YzJlYWQ2NTRmYjlmNjZkNmUwYTEwMDllMGYyODFhNiBsZWdhY3ktdHJ1bmsKKzgwMzA3IDk0MjU0MjMxYWE2YWY5OTQ3ZjU4MWZlYWEzMjMwMzMwMzJlNTFlODEgcmVsZWFzZTI2LW1haW50Cis4MDMwOCA4MTlkODEzNDc1MjI4ZTcyYzA3NDJkYzVmYWI3NzkwMGE1ZGZhZmJhIHJlbGVhc2UyNi1tYWludAorODAzMDkgYzI5MDViMGVmMWQyNGQ0Y2Q5ZTdlMzcxYzA4M2ViOWFjNWI3NGJjOSBweTNrCis4MDMxMCAwYTdhMjViYmIzNGY3MmI0ZWI2Y2IwMzY1NzQ0YWYzNWRiZjRjOGI2IHJlbGVhc2UzMS1tYWludAorODAzMTEgNmQ4MzZiMTBlMzcwOTg2ZTkwMTgwOGYzN2U1N2E3MjczYTA1ODYwZSBweTNrCis4MDMxMiBhNTU4MjdiMGVjM2JiOTUzNDUzNzNiZTYzNmJkYTQ5NDRiNGVmYmYzIHB5M2sKKzgwMzE0IGM5MWZiNTA2ZjA4ZGYwOTQ1Y2JmOThjOTVhZWMyOTkxMDU4ZTFiNWMgbGVnYWN5LXRydW5rCis4MDMxNSBjMWQ4YTAwNTVmZGE2ZTQwYTNmNmY3MjNlMGQ3NjBlYmU0MDE1NTVjIGxlZ2FjeS10cnVuaworODAzMTYgOWQ4NmYwNzAxZDljOTg4N2Y2Njc4YzlhZTAwYTY5ZDcyNGJlODk1ZCByZWxlYXNlMjYtbWFpbnQKKzgwMzE3IGYzNmEwZWJlYjE2MzkxNTdmZDc5ZmY3NmJiYjg0N2U5NWE4YTBjZjAgcHkzaworODAzMTggYTBiOGFmMWJlNTYwYmRhZDYwNzVlYzRlYTAzY2UzZjIwMTc5MTZjZCByZWxlYXNlMzEtbWFpbnQKKzgwMzIwIDliYTAzNzgzZWNlM2NiNDVkYWRmYzRlYzI3YmI4YzM3OGRhZGQwOGQgbGVnYWN5LXRydW5rCis4MDMyMSA4ZTQyNDc0MTE3NTQyNDJjMzY0MWZlZmExMjc5NTRlNWQ3NjU2NDU1IHB5M2sKKzgwMzIyIDhhNWIyZDA2Mjk4ZDdmNzBlYjQzYmU4YjgyMjc5MzU2OWJjYmU0YWMgbGVnYWN5LXRydW5rCis4MDMyMyBhM2NlMjc1YmYwOTU3M2I2MjE1NGVkMTE2YmZlY2I3ODJlNDE2ZTU3IHB5M2sKKzgwMzI0IDg4OGM3NWExYmU1NTIxOWJmMzcwMzhjNTEyZTYyZmFkNjlmN2I1MjAgcHkzaworODAzMjUgNzY4Y2UxMDc5OWYyZDg1M2M0ZTRmMDE2MTY3MWJjN2Y3ODBjZGY2YSBsZWdhY3ktdHJ1bmsKKzgwMzI2IDkyYTYzM2EzMGFjYjZjYTEyNTI2N2MyODdmY2UyZTNjY2Q0YmQ1ZmUgcHkzaworODAzMjcgNjdiODFjMzI4NGY5YjA4NWYyZjY2YTIyYzhkMTBjOGI3YjUyNDA0OSBweTNrCis4MDMyOCAxYzEwNWIzNzA3NDYwNTMwNTJlMDI0OTE1Y2IwMDRjMWRhZWM5MzIzIHB5M2sKKzgwMzI5IGUwOTFkOTdkNTBkNTgzMDRkYmU0NTAyNDljMzc3ZDY5ZWMwMGE5OGIgcHkzaworODAzMzAgMDczNzlmZTc1YzU3MDdmZGYwNmQ2NWVmM2U0ODU1NDY2MmMyY2UwMCByZWxlYXNlMjYtbWFpbnQKKzgwMzMxIDU3YWEzMTAxMmNhNTFjYzNkYTgzNWNiODllZjYzZDQxM2Y3MWZiYTAgcHkzaworODAzMzIgOTI2Njk5NjVjOTk3MTk0YzJjZDk5ZDExYjVjNjNjZDBlOTM0YWJiMCByZWxlYXNlMzEtbWFpbnQKKzgwMzMzIGIxOWM2MTZkNWI0YWQ4ZWYxMDgzMjg4MzQyY2U5YjdjZTViYThkOTIgcHkzaworODAzMzQgN2Q0OWYwMjFjODQyMDkzYjBjZDgyZjFkNDU5NmE4ZTgwY2ExZDc3YSBweTNrCis4MDMzNSA5ZjRmNjcwYjE0OGNiYTYxNjRjYjUwYWMwNDQwMzJlZjZmZGFlZGZhIHB5M2sKKzgwMzM2IDJiMDlkODIxYmNlMWU4OTdiOWY2MDk3NjczOTQzMTM2MDgzYTQ3MjMgbGVnYWN5LXRydW5rCis4MDMzNyBjYWQ0ZTA5ZjAyYTEzMzA3ZGIwM2Q4OTkxNjA4NzViMTkyYjhiOTU1IHB5M2sKKzgwMzM4IDRiMDFlODBkNmMxZmY2OGZmZDYxY2RkNTQ4NDczYzQ2YWY0NzYxYTkgcmVsZWFzZTI2LW1haW50Cis4MDMzOSBiMzg3NWQxYjM4NDczOTMzZTgwYjAyNDg3YTgzNWJhOGJjNjgzMTIwIHJlbGVhc2UzMS1tYWludAorODAzNDAgMTg2YmMzYjgwZjU3MTIyOWFkNTNlZWYwOTkwNDI0MjViNmU3ZDNmMiByZWxlYXNlMjYtbWFpbnQKKzgwMzQxIDk0YjY0OTQwZGFjNDY0YzdjM2M2MzE5ODRlMmExZWI0ZTAxYjZlODQgcmVsZWFzZTMxLW1haW50Cis4MDM0MiA1NGYxNTAyMDI4OGE0NmM2ZmU2MzA4NmMzMzkwNDc3NTRmZjIwNmQ0IHB5M2sKKzgwMzQzIDIzNDA5NTk1MTM3MDcxY2FkM2U3MWRiMzNiY2U4Nzc5ZjA3YmJlYzMgcHkzaworODAzNDQgNWM2MjVhMDQ4ZjlhNTZiYjNiMjk2YzQ2YzFmNWIwMDhmMWE3OTllYSBweTNrLWNkZWNpbWFsCis4MDM0NiAxMDRlOGM4MDFlNWQzODE5YzRlMWM4NzhkZmEyZTlhZmY1NTJiZjYxIHB5M2sKKzgwMzQ3IGM0NDk4MTdmNGI1NGRkNDk0ZGQzYzRhMzU1M2ZjOWFiMWFiMDZlNTEgcmVsZWFzZTMxLW1haW50Cis4MDM0OCA2YjdlMjAwMDBmOTc2Njc3YTY3NWI5MGQzMzZmYjExOGRjZTZhMTIxIHB5M2stY2RlY2ltYWwKKzgwMzQ5IDNmMjc3M2FlODQ0OGFkMjI5MTc0ZTM5YWQzM2YzZjdjOWQ1OWQ5YWQgcHkzaworODAzNTAgNTQ3ODAwNDJkMWU3ZDc0MzU2N2U3N2I2YmRjMjgzNTJmMGJjZTc2YSBsZWdhY3ktdHJ1bmsKKzgwMzUxIDhjMDUxN2Y1MGM0ZTk0OTIwMzUwZThkYWM4ZjVhNTJjNmIyNWRmOGEgcmVsZWFzZTMxLW1haW50Cis4MDM1MiBkZTM5NDUxMDFhNmUwMGI2MWM1MTkxODFmNGEwN2EwNzlkNDNiOTI0IHJlbGVhc2UyNi1tYWludAorODAzNTMgN2ZjMjRiNGU1ZmVkYzhlNGI4MDQ2MzJjMjIyYjEyM2FiZWU4OTAzZiBweTNrCis4MDM1NCA4ODk5ZjQwODA0M2M0Nzc1NTAxMmNiMmEyZTZjOTY0Y2FhYjQzMmUwIHJlbGVhc2UzMS1tYWludAorODAzNTUgM2Q3MzdmMmFiOTAxNDBkMDA4MzljZjQxMDljZWExOGNiOWJjZjQwNSBsZWdhY3ktdHJ1bmsKKzgwMzU2IDJjM2Q3YmQ3MTYzNjQ4YTA5MzBiOGIxOTU2NDhmNzUwYTdlZDljNDcgcHkzay1jZGVjaW1hbAorODAzNTcgNzM2Y2Y3NTFmZjRmNWE1NzNlMmMxMTNkYzJlMzVkMTNhOGI0MDZkMSBsZWdhY3ktdHJ1bmsKKzgwMzU4IDBlNjRiYTMyMjkyYmE1N2YyYjJhZThjZWY1NGZlNzZmM2QzMjA5YTYgcmVsZWFzZTI2LW1haW50Cis4MDM1OSBiM2QyMGQ0NDY2Mzg5ODJlNWY2ODNlMTBkZGYwMzQ2ZjkyMGQ4YzY4IHB5M2sKKzgwMzYwIGRiNzE2YTc0YjUxN2ZjNWQ5MmYyNWMzMDRmMjExZjkwZTcyN2Y4MTkgcmVsZWFzZTMxLW1haW50Cis4MDM2MSBkZDE4Y2NjYjU1YjA4ZDllOTljYjNiMGY4M2QxYzc4NzIyMDg2ZTkyIHB5M2sKKzgwMzYyIDlkYzg2NGVmNjQyNWQ1ZWU4MmY4NDI2OWI4Yzc5YzQ2MmQxYmFjNjYgbGVnYWN5LXRydW5rCis4MDM2MyA5MTdkNmE3NGZkNGYzYTQ4NGI0MTliMjk2MjFkNTE4N2YzNmY5ZDE1IHJlbGVhc2UzMS1tYWludAorODAzNjQgODdjOThmYjc3OGI0ZmQwMmNmY2RlYWEwMmIxYzVmM2I5OGU1NTJmNCBweTNrCis4MDM2NSA1YjcyNmM2MDFlMjIxNjFhNmEwY2I2M2Q3ODU0ZWMyZDUzOGRjOTJlIHJlbGVhc2UyNi1tYWludAorODAzNjYgM2E4YTYxODRmNDBhNTRlZDdlZDk4ZDkwYThjYzhmYTRlM2MzMTg5NyBweTNrCis4MDM2NyAyNjkwMmQ5YmUwMzNjNmMwMmE4OTU3NGQwNzdiYTQ3MWRmOWM0ZDdjIHJlbGVhc2UzMS1tYWludAorODAzNjggYzAxM2E3MTgyOWJmMjNmYzc3MTNlYjg5YWYxNjliY2MxYWM3ZmY1NiBweTNrCis4MDM2OSA0YWQ5MDQ2MDI0NjFiYTBjYzkxNDQ3YTFlM2RhNzFhMjA4N2U3YjdhIHB5M2sKKzgwMzcwIDU5YWQyNDRmZTI5NDI5MDA1Mjc5MDVlMjFlMzZjOTY1NTQ0MDkxNzEgcHkzaworODAzNzEgODdkOTg4MjM1YzUxOGU3MmZlYzFmYThhYTA2MWMzMWNiYmY2YWIwMyByZWxlYXNlMzEtbWFpbnQKKzgwMzcyIDMxZDI4ZjA0YjgyMzU1OTZiZGIyNzRjN2NiY2IxNzc2MTVlY2Q1NGMgcmVsZWFzZTMxLW1haW50Cis4MDM3MyA4OGM3ZGQzZDc1NzliNmNiOGI4ZmJhNjI1MjFjYzU2ZTM3MDUzNTFiIHB5M2stY2RlY2ltYWwKKzgwMzc0IDY2YzlhOTU5YzA3ZWZlMTYwNGFkZjFiYWE2NTM5ODBiZWI3NDIyMTcgbGVnYWN5LXRydW5rCis4MDM3NSBiNjZmYTc3NzBiYmRmY2ZjZGNiMTczMTg4OTE3YjE1ODM4ODg5OGE4IGxlZ2FjeS10cnVuaworODAzNzYgOTYxOTBiNWIzZjZkYjg4ZWUzNGM0MWY3NGEwODU1Mzc1MjcyOGQwOSBweTNrLWNkZWNpbWFsCis4MDM3NyA1ODk2M2E3NjU0NzFkN2YxOGZhM2M2MzBiNjU2OTg2ZDJlOWZjNjZmIGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODAzNzggZjYzMmEzODYxZDEyNTViNmE0MDMzYmI3Mjk0N2JmYzc1NDg3YjA3NiByZWxlYXNlMjYtbWFpbnQKKzgwMzc5IGI0NWRkYTBiNTM4ZmFhYmUxZjU1NGY4YjcyZjYyNDBjNTM5MDhlYWMgcHkzaworODAzODAgNGI3ZjNhZTIyYzhmZGY4ZjkzMjMwZmUwODEzMjdkNzI1YjJhNGQ0MyByZWxlYXNlMzEtbWFpbnQKKzgwMzgxIGM0YjUzNDMzNzM1YTJmODg1ZjdjZGIzZTgxYmRmNWUyNTZmNGNlMDQgcmVsZWFzZTMxLW1haW50Cis4MDM4MiBkMmZhZDQyMTBkZDVmYjViNDI4ODhkNGNiN2ViYzZhZjg5MGJmYWZiIHB5M2sKKzgwMzgzIDE0OWJhZGY3M2JjYWQxNjMyOGUxMTY3YzE5ZTEwOTVlYTM4ZDFjMDAgcmVsZWFzZTMxLW1haW50Cis4MDM4NCAyZmU0NzM4ZWViMjM2MTllOThjZThmMDAwMTRlMjRiOWVkZGUyN2FiIHB5M2sKKzgwMzg1IGIwNWQwMjViYzBkZjZhYzBiYzc1YTJlMGJlZDgxMTNlMzVkYWJjNjIgcmVsZWFzZTMxLW1haW50Cis4MDM4NiBiYTEyZjkyMTM0YmE0OTE5NWUwMWU1NDZmOWE3ZWM2MWJlMjJhYjY1IGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODAzODggYThlMDkzYTI0MDk0OTI0OWIxNGQwYzEzOTNhMzA2MmJmOTkwM2JhZCBsZWdhY3ktdHJ1bmsKKzgwMzg5IGVkYzdmMzMwNTEwNTBlNGYzNzZhODhiMWYxZDEyN2JiYzcxYjM3NTQgcmVsZWFzZTI2LW1haW50Cis4MDM5MCA0NzM4MDFhZTllOGVkNzg5MzA1M2FhMWQ0MzE1ZTI1ZGJiMDU4NGYzIHB5M2sKKzgwMzkxIDU0NTI2ZWVjOGJjNmU2NDcwNjYxZThiY2Q4YjI1NmQ4OTJkYjJmMmUgcmVsZWFzZTMxLW1haW50Cis4MDM5MiBjOWEzMmVkZDJiYTdjODk0MjYxNTZhZTU4MjY1NDZjMWFjZDI0ODA0IGxlZ2FjeS10cnVuaworODAzOTMgOGRkMTI0MTIzODAxMGM4NTA2ZGQ3MWQwMjkyODk1ODU2ZjIxZTRkOCBweTNrLWppdAorODAzOTQgMWQxOGQ3M2YyOWI1M2QxNzlhNjUwOWU5ZGYxNjkxMzE2ZDMwNTU2MSBweTNrCis4MDM5NSA5MjI4YzZhYzZjYzY3OGUzYjg2ZTYyOTczNzk5OWFjNDRjOTBlYWJlIHB5M2stY2RlY2ltYWwKKzgwMzk2IDVhNTI0YzZkNGU4MzUyMzQ2OTk0MTU5ODY0OTE4OWVmYjQ0NmExZjkgbGVnYWN5LXRydW5rCis4MDM5NyAzZGQ2MDYzNTNhYjQzYjk2MDNjMTUwZmViMWVlZGJmZmM2MjhjYTZkIGxlZ2FjeS10cnVuaworODAzOTggMDUyZDQ4NTE1Yzc2MmZlNzdjMzM3ZDQ4ODcyMzcxM2Q0MjU1YmJmYiBweTNrLWNkZWNpbWFsCis4MDM5OSBiNGVkMTcyN2RmNzRjYzBjYzNjMGExYzI2NTg4OTc3YTkwZjZmM2NlIHB5M2stY2RlY2ltYWwKKzgwNDAxIDU2Mjk2Nzg4MWRjNTI1ZGViYzJhMDFiZmE0N2QzY2UzY2YwZGJlYjMgcHkzaworODA0MDIgZTY1NjRkYTAxNzE4YTViMjVmZDQ5NzE5ZWZjOGY3Mjg2MmJmYzIwMyBweTNrCis4MDQwMyBkMmM1MTJkMGVjYjYyYTM0OGMyZTliMjM2NzMzZGNjYWUyM2NlODJmIHJlbGVhc2UzMS1tYWludAorODA0MDQgODZmYWRhZWJjZjY2ZDNhMDEwNzcwMjY5ZjNkMmFhOGRhYmRiMWZmNiBweTNrCis4MDQwNSBjNmI0ZjRmMmI5YThiNzA0MDZiN2UwOTM0ODVjNTc1NWYxZGVlNzRlIHJlbGVhc2UzMS1tYWludAorODA0MDggMjI1ODI1MGMxZmJiM2U3YzE1ZjJiMzU1Nzk1MjdjZmQyYWE5ODMyZSBweTNrCis4MDQwOSBkNDI2YmJmZDViZDc5MmViOTE4M2Y1M2I3Mzg3NDQ3ZGE3ZTYzMzY2IHB5M2sKKzgwNDEwIGZmZjgxZDcyNjI4ZTNmZmExMGI1Zjg0MDJlNWIwMDFjMmZjM2I5YjEgcmVsZWFzZTMxLW1haW50Cis4MDQxMSBlNzYwNmMxNTQxZjhiNDlmMjBiYTA5NThlZWMwM2I3ZTA2MzI0NGU5IGxlZ2FjeS10cnVuaworODA0MTIgYTA1OWVhOTY2YjhjZmQxNTc4ZjJlMzRlMTEwMzUwYjgxM2I2M2I3MyBsZWdhY3ktdHJ1bmsKKzgwNDEzIDg0MjhlYWEyZDNhZDEwMWNhM2IyNGZjNWU0ZmY2YjFiMjIwZGU0MWYgcHkzaworODA0MTQgODFlZjFlODQ1MmZiMDU5ZDkxNWFiNzUxYWQ1MDUzYTllZTMzOTNlYSByZWxlYXNlMzEtbWFpbnQKKzgwNDE1IDYxMmU4NmFiMDVmMTMxYjZhMDAyOTc4OGE3M2Q2OTVmOTgxMDUwY2EgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDQxNiA1MmNkN2UwNDBmZWYwZDE2MmI4NzcwN2I0YWZiN2JlOTRkZTdlMzU2IHB5M2sKKzgwNDE3IDYxMGE4ZWZhODhkYjY1NjFiMzc4YjcyMWYzZDdkZjljNzhkN2VmNzkgcmVsZWFzZTMxLW1haW50Cis4MDQxOSAwZWMxNmQ4MzE5OTA1ODRmYjMyN2UwYTg4NTljODI0NmMwMzc0NzJlIHJlbGVhc2UyNi1tYWludAorODA0MjAgZmM5Nzc4NGU1Y2MyMWYyOWU1NjZiNjFjYjEzMGM3ODdjYjE1MGU3MiByZWxlYXNlMzEtbWFpbnQKKzgwNDIxIGRjOGM4ZDU0NTA0ZTE4NDM1NzM4MGFjZjE1ZWM1ODdhMzFhYjJjYzAgcHkzaworODA0MjIgNjdhNjA0ODI5Yzk3MGM3YmI2MWFhNDk4NDIxMmE0MTY1ZmJkZDQ4YiByZWxlYXNlMzEtbWFpbnQKKzgwNDIzIDJjMzFkYWM2OTRmZjA0M2M4YTdjOGNlNTEzNzA0NTExZTAyZjc4OWYgbGVnYWN5LXRydW5rCis4MDQyNCBlNzlhNmM4MDI5MzQxODlmNjlhNzczZmJiNDM1ZDJjZGFmNWUyNTNmIHB5M2sKKzgwNDI1IDc0ZTQ5ZmI1YmExMmIyZTNhYzM5YjhlYjQ2ODljNDIzMWZkY2M1N2YgcmVsZWFzZTI2LW1haW50Cis4MDQyNiA4MWFhMDAyODRiZDIxMTkwMGNlZjBjOTA2OWY2NTFmNzI1ZjViNGJhIHB5M2sKKzgwNDI3IDU0ZTVhYjI5YjMwYmZmNDM2MGYyYmY5NzViOTEwNzRmZjNlNTYwYWQgcmVsZWFzZTMxLW1haW50Cis4MDQyOCBkN2M3ODNlZjQ1NDg2ZmViODQ3ODkwYjQ3NjdhNDU0YTYyYzg0YzViIGxlZ2FjeS10cnVuaworODA0MjkgNzY5MTg5OWUxODVmMjc3MTM2MGU2ZjY3ZGJjNmU5OGM3OTAwMzA4YiBweTNrCis4MDQzMCA5NWM1ZTA5NGIzODA2NGQ1NGUzY2VlNjI0NDkxNjBkN2IwYjllMTBmIHJlbGVhc2UzMS1tYWludAorODA0MzEgMDY4YTJlNzE1N2FjZWNiZDZjMzE5MmIyMDhhZDRjYjBmYzE3YWM5YiByZWxlYXNlMjYtbWFpbnQKKzgwNDMyIGNhMGNiYWM3Yjg5ODFjZGYwYWEzMTFhYzZlOTg4ZGQ1ZTNiN2ZkMDggbGVnYWN5LXRydW5rCis4MDQzMyA1ODdkZjBkNzQ3ODUzM2E4ZDA5ZmQ4YmNkMDU1MzNiOWRhZjMwNGE1IGxlZ2FjeS10cnVuaworODA0MzQgNjcyYWRmYzVkYjQ3OTliYmM3NDgzNjViZDgyNDVjZjBmMWQ0MzYwZSBsZWdhY3ktdHJ1bmsKKzgwNDM1IDY1ZDZjN2JjNWQ1YTQ2NDdiN2I2YzBjNDQ2YTNkMDYyODQzM2FjMDcgcmVsZWFzZTI2LW1haW50Cis4MDQzNiA4MDgxMGQ4MjMxOGZkMDczYTQ5ZjIwNDYwODFhOGZmODljMDY0YjZlIHB5M2sKKzgwNDM3IGQ4MWVmZjExOGQ4MThlZjYxZjgyM2Q5YWM5NjVhY2E4MzMwMjg4MDkgcmVsZWFzZTMxLW1haW50Cis4MDQzOCA1ZTY5NTE5YzRlMzdkYjJlMThiNjA0NDQ2NzY2NjYzYTk1ODUwZTU1IHJlbGVhc2UyNi1tYWludAorODA0MzkgM2I4MzQxZDA1MjE2ZWM4OGY5NThhNmQ2Y2I4Nzc1OWRhZjBlNWJjNyBsZWdhY3ktdHJ1bmsKKzgwNDQwIDJhNzY4ZWEwNjAyMzBlNWM4NGE4MTRlOGIxOTZiNzg5YWUyNDk3MDAgcmVsZWFzZTI2LW1haW50Cis4MDQ0MSA2NDQ2MWY2OGExMGUwMWFiZmFiMWY1MmQ3MzNjOTI3NWViYmNmODYxIHB5M2sKKzgwNDQyIDkxZjkxNjhhYWRkMGUzM2Y0ODJiYzk1M2I2MWI1M2YzOTFjMjRhYTMgcmVsZWFzZTMxLW1haW50Cis4MDQ0MyBmNGZlNTNmODY2Mjc1NjUyZWMxODY2MWE5YzNiY2NkMTIyODk4YWVkIGxlZ2FjeS10cnVuaworODA0NDQgZTlkODg4YzA4YmY4YTE2YTY3Y2Q0MWY1ZmM4M2QwYjhlMGU2NzcxNSBweTNrCis4MDQ0NSBjMzlhY2JiNjNlYzNmNTFjOWRjZjNhZTAxOWNhMTczMmI3YzYzNWQwIGxlZ2FjeS10cnVuaworODA0NDYgMjRmZjg3NDBlNDgxMGJjNzYyNWVhOGY2OTcxMmE0OGUwMTE3MTU2NCByZWxlYXNlMjYtbWFpbnQKKzgwNDQ3IDNhOWEyMmQ3YjIyZTgxMjZlYzNjYmU5NTE0MjhjZjA1Mjk5MDA1MTkgcHkzaworODA0NDggN2JkMzg0NzJlYTIxMjI1MTAzZWY0ZjExODdjMjA0OTZjMjkwN2ZjZSByZWxlYXNlMzEtbWFpbnQKKzgwNDQ5IGU0YzFlYmNiNDYwNDhlMTdmY2YzN2E5YTZkYWI4YWJlMmIwMjAyNTAgcHkzaworODA0NTAgNzkxMjhlZmU4YTk5M2ExYzY3YTU1NzEwNzQyYmMwZDZhYjM3MjgzMiBweTNrCis4MDQ1MSBhMDlkN2Y0MTRjZDE1YzE2MjdkNjExMjYzOWFlYTIyZjNlNjVlMDYxIGxlZ2FjeS10cnVuaworODA0NTIgNzZhMDUyZWVkZWU2N2Y0MTk1YzFiZWQyM2Y4YWU4OWU3ODllY2VjOCBsZWdhY3ktdHJ1bmsKKzgwNDUzIGNlNDkxNmNhMDZkZDAzN2NhMTIyMDFlNThiOTM2ZmRkZmQ0MTdhNzIgcmVsZWFzZTI2LW1haW50Cis4MDQ1NCBhNTFhZDhmMDliNmY3ZjE2ZjE0OTEzNDQ1M2M0MzZhNjg1NmM0Y2ZlIHB5M2sKKzgwNDU1IDVlZDM0ZjNmNmMzNTUxYzI1MjViYTkxMjY3OWUzMjU4YzY5ODk4NTUgcmVsZWFzZTMxLW1haW50Cis4MDQ1NiBhOTE5NjExOWQzMzViMmUwYzIxY2YzMTY1YTAwOGUwYWJlZTYwNzc5IHB5M2sKKzgwNDU3IDBmZjhhZGRlNjA5Y2Y5ZTE3N2U4ZDUwYWJiZjAyMWU2YTRmMWM1MTUgcmVsZWFzZTMxLW1haW50Cis4MDQ1OCA2YWZmOWIwYTI4OGQ1ZjQ1NTA0NDIwNmEyNTY4MjFhZTkyNDQwYzQ2IGxlZ2FjeS10cnVuaworODA0NTkgN2UyMjI5ODc3NDU5ZmUzNTIyNTgzY2UyOGY5MjJmZDlkNzY3OTUyOSBweTNrCis4MDQ2MCBkNWVjZTQ4ZTE2MDZkZmVlNjJiMDY5OGU3MmYyMjcwNjAwNDg5MjlmIGxlZ2FjeS10cnVuaworODA0NjEgOTIwZjM0MTA2YzM0NGM2ZjkyZTA3ZTgzNTU5ZDQ1YjU3N2ViZjYwMyBsZWdhY3ktdHJ1bmsKKzgwNDYyIDQ2OTg5Y2NjNjUyOTU5Y2RmZmY3YzFjZTY3ZjkzYmJjY2ZiZjAwNmYgcmVsZWFzZTI2LW1haW50Cis4MDQ2MyAwZjg3YmU2MzMzZGEzNzAwOGZlMTEyYjY3NmFhN2VjNjY4MWNjMmZmIHB5M2sKKzgwNDY0IGQwNTNiYjNkNzg0MmNiYTFmYzQ1MjMwMmM5MzM2MGFhZDdmMzk5ZmUgcmVsZWFzZTMxLW1haW50Cis4MDQ2NSBlYWY1NjJmNTgwN2RlMTkxZDQxMTczYThhNTFiNzUzNjUxYWUxNmYzIGxlZ2FjeS10cnVuaworODA0NjYgMDYzMjJhYmE4NGZhZjU3N2IyMjVlNmVjNzRkZjM2MTE3NTg3ODc0NCBsZWdhY3ktdHJ1bmsKKzgwNDY3IDk4MDhkYjk3OTg1NDExNDkwYTUxNTYwMDY2YWE1YTZjMGZkOWU2MTkgbGVnYWN5LXRydW5rCis4MDQ2OCBiZWJjYzIyNGM3YzJjM2JlNzI5Nzc4OGNmMzQ0NWZlZjIzZjVkODBiIGxlZ2FjeS10cnVuaworODA0NjkgNWUyZDYxNzUxZDk4MDlmMzI1NWFiZDUwNjFhMzVjZmZmMGE0ODFmYSBsZWdhY3ktdHJ1bmsKKzgwNDcwIDAzNjNjNjk3ZTBkYTMwODA4YzgwOTFhYWVhNGYzMWZkMzJhZTFmNTcgbGVnYWN5LXRydW5rCis4MDQ3MSBjMmZmZDIwZDZjZjg5NmU5ZmMwYTY0Y2NjMjBjZTlkZDk3ZGY4OTRhIHJlbGVhc2UyNi1tYWludAorODA0NzIgZWRlMTZhMjc5MmI0Yzg1OTczM2ZlMzdhOTRkODk5ZjcwZjJjMGRlMSBweTNrCis4MDQ3MyAwM2YzMWY3ZTc2Mjc2YWRiOTMyNDQ3OGE1MDNkNTEwNGI0ZTZjMTJhIHJlbGVhc2UzMS1tYWludAorODA0NzQgZDIzZjYyNmE3Mzc5OTFhYTI0OGJiMTUwMGNlNGJlN2ZjODljODhlYSBweTNrCis4MDQ3NSBmZTBjNDdkZDVmODRmMTQwYTY3N2I3YWYwYTk5Njg0NDZlMGIxNWZlIHB5M2sKKzgwNDc2IDZmYjM4NDdkMzllZjM5YTA1Nzg1MmZjMWNjMWEyYjUyZDlmYzQ5MTAgbGVnYWN5LXRydW5rCis4MDQ3NyBjMzZjODM2ZmY0NjUxMjY1Y2UzNGFlYmNlZDdjNjM5MDFiYzhlNmJlIHB5M2sKKzgwNDc4IGI5ZjIxMDJhZDVmMDI2ODVmNmNlNmYzZDRhN2Y0ZDQ0OGIyZjMxMzcgcHkzaworODA0NzkgZWRmZDBlMWI5NzU0ZDdlNWQ1OTIxN2M3NGUwMmY2NWU0NDU4MzA1ZiBweTNrCis4MDQ4MCA1YWMwYWFlMjhmNGMwMjJkZTJhN2JiZmU5ZWRkNTE5M2YxNzg1ODJlIGxlZ2FjeS10cnVuaworODA0ODEgOTZjYTUwY2IyNjEzNTkzYWZiMjNkN2VhODFiMWQ1OWExNTZiZjA4OCBweTNrCis4MDQ4MiBkODA0ZGQ5NTczN2MzYWYzZTFlOGRlNmJjNTdhZjAyNzFlMzI4NTYxIHJlbGVhc2UyNi1tYWludAorODA0ODMgYzFmYjdkNWVlNDM3M2I5NGE5MTFjZDNkYjA4NGQyNGZkMGFkODg5YyBweTNrCis4MDQ4NCA1ZjE5NjIyMjA3OTI4ODA5Y2JiNjQ3Mjc3MzY1MWEwM2QwMmE5NTY2IGxlZ2FjeS10cnVuaworODA0ODUgZTk4MjY2YzUxYTBlMDhlMWFlZGMxMWRlOGQ1ZTg0ZDI1MmI0NzhlZiBweTNrCis4MDQ4NiBlYTQzZjdmNmU4NGNmOTVmN2M5NDU3YmNiYTExZTgzM2JhYmRhNGM0IHJlbGVhc2UyNi1tYWludAorODA0ODcgZjUyM2U0MGRmOWM1NjhmN2JkNzQxY2JmYzZkOTdmMWVlZGYwOWM2NCBweTNrCis4MDQ4OCBjMDIxNDRiMWM5OGNhMGExZjI1NzZiZDRkZThlZmI2Njc4YzY2N2M4IHJlbGVhc2UyNi1tYWludAorODA0ODkgNjU0OGMyMzY3NmE2ODdhYTJkZWNhM2ZmMWZlZGUzYTI4NTU5OTVlNCBweTNrCis4MDQ5MCBlZjBhODk4MWMzNzAzMWMwZDVmNDA4NTdhOTljMmVmOTViZGU1ZjAyIHJlbGVhc2UzMS1tYWludAorODA0OTEgOTE2NTIzMmU2ZDFhZTQ0YzcwM2M2YzcxYzU4NjAwMWUyMzAyY2IwMiByZWxlYXNlMzEtbWFpbnQKKzgwNDkyIDhjNzE3OTEyNTgwMzI0ZTdmZDExMzVhOWI2MjczZTQzNjAwNDlmNGIgbGVnYWN5LXRydW5rCis4MDQ5MyAyYTAzMGMxY2U5NzJkNTg3MDM3MDNhOTZmNjRkODYzNWJhZjZjYmUxIHB5M2sKKzgwNDk0IGI3MTgyNjI0OWZiZTEzYzdhMzRkZmMxZGE0ZTVmMGVmYWY3M2JjOTQgcmVsZWFzZTMxLW1haW50Cis4MDQ5NSBhYTY4NTRhNmY2ZDFkMDg0YWUwYjVmN2Y2MTQ1Yjg0YmRlYzVhMmY0IHJlbGVhc2UzMS1tYWludAorODA0OTYgZDJhNGU5NmI1NGE2Y2ZlNTc5Y2Q0MjUxMzYwYzEyM2ExOGY4OTRlMyBsZWdhY3ktdHJ1bmsKKzgwNDk3IGFiOGZlOTQ3NzMyMzQzZDJlNDc3YmE1NjY1ZTRkZGY0YjNiZDI1Y2UgcHkzaworODA1MDEgZWZkNzA1NTNhMDk4OTIzMmZmMWY2YjQ3YmRmM2I1M2MwMGY1N2M2ZiBweTNrCis4MDUwMiBjMDNhM2M2YTQ1NjI2MGI2ZjhjMDU1ZDlmNDFkMTRhOTVjZDg4ODljIHB5M2sKKzgwNTAzIGQ2M2JiMzVkZTJmMDBhYTM4M2IwZTNhNGI0Yzk5YzIzMTg0OTgyMDEgbGVnYWN5LXRydW5rCis4MDUwNCAwNDhmNmE5MmJkZTNhNmI4ZDc1M2IwYzFhMWM4NDVlOTRhODczMzUxIHJlbGVhc2UyNi1tYWludAorODA1MDUgMTBkYWY2MzRlMjRmNDgyNjk4YWNmNzk0ZTc0NmVkZWQzMzk2NjQ1YyBweTNrCis4MDUwNiBjZjIwNGE3Mzc4M2Q4NWRiYzA0ZGI0YmM4ZTU5YjFlYWU0NTY3YjM3IHJlbGVhc2UzMS1tYWludAorODA1MDcgN2ZjMjExZGYzZDViMjA1MDRhNGRhYjIyZGY5ZjFlNjg1ZTIyOGFjYiBsZWdhY3ktdHJ1bmsKKzgwNTA4IDg2MDA3MzUwNWFjYTMyOWQ0MGJjOWZhMGViZTExNDMwZGFiMDNiOWQgcmVsZWFzZTI2LW1haW50Cis4MDUwOSAzZmU4Y2Y3ODczNTMwMzc0ODRmM2Q2Y2QxMGQ2YjBhOTU2ZmFhNTZkIHB5M2sKKzgwNTEwIGI4NzdkMmQwNGMxNDY3NWIxMjBlODRmZGI0NzE3YmJiMDA2ZDYyNTkgcmVsZWFzZTMxLW1haW50Cis4MDUxMiAzMDkwMzVjMjJkY2RjY2ZiNmJjZGVjNmIwNjI1YWQ1ZjNmYjBmNDgxIGxlZ2FjeS10cnVuaworODA1MTUgM2IyNDRlYjIwZmExM2IxOGYxNTEzYTRhNzAxYmNmZTNmZGYwOTg4MiBweTNrCis4MDUxNiBkNTU5MGE5ODdjYjA2ZTBjMjE0MTM0NzM1Yzk1ODQyM2E2NDRjOWZhIHJlbGVhc2UzMS1tYWludAorODA1MTcgZGQ0NjY0OTQ1NDZkZGUzNzI2YWM1ZDg0ZmMyZDZkZDRkNGRlYTAyOSBweTNrCis4MDUxOCAxMWM5YWRhZWY5NmIwYmMzNjFhZDk1YWM2YzhiZDA3OGM2Mzk1MGI0IHJlbGVhc2UzMS1tYWludAorODA1MTkgMTU3MWYwOWY0YTI3NzVkZDM4NmE2NGUwNDQ2NjIxZWUyMWRmNzNlNyBsZWdhY3ktdHJ1bmsKKzgwNTIwIDc4NGNmYmFhMjI5ZjE2MGNkYjZhMGZmYWU5OTM2ZjZmZDY0MzViZTggcHkzaworODA1MjEgODNiOTMwMzZlYzNkN2M2NWJkYTM5NjdjMzQ0N2M3NzYxMzUxNWU3YSBweTNrCis4MDUyMiAxOGIyZGJiYmM1YjI1MjM3MjVjMDJhOGIxZTAwZGQyZTJmZGViZTdjIGxlZ2FjeS10cnVuaworODA1MjMgYzA3ZDJlNWFjZjY1YzFmMzZhZWQ2ODA0YmViNTE3MTUwOWU0YzAyOCByZWxlYXNlMjYtbWFpbnQKKzgwNTI0IDIyZGU2YzcxY2RiNDE1MjE2ZWRmN2YzZjMzNDhiMWRjMWMxNmI1NTQgcHkzaworODA1MjUgNDZhYWU0MDY3NDJkOWYxNjNmYmNiNGI0YzNkZmMyN2Q1MTA4YTM1MyByZWxlYXNlMzEtbWFpbnQKKzgwNTI2IDcxMjMwMTUwNjczMGQ3NDIxM2YwZDRkNDJkMGM4NTM4NTMzNmVkMDEgbGVnYWN5LXRydW5rCis4MDUyNyA2ZGE5ZWFmYjFkYWFkYmVkYmMwMzBkMTc1Y2NlMGE2YjA0MTQ2MWFlIHJlbGVhc2UyNi1tYWludAorODA1MjggZTI1Yzc4YTgyYTA4M2I4ZmI5OTZlMWU1MThlY2IyNTk2ZTI1ZWYzYyBweTNrCis4MDUyOSBkNDQ3YzYwZmI0ZDg4NmM0Y2Q3NzNlOGFjNTAzMzhmMjQ1YTE1MTA3IGxlZ2FjeS10cnVuaworODA1MzAgMWUxYjIzNTFjZjEyZmI0NTgyYzkzN2VhMmM3ZmU5OThjNGVlOWMzNiByZWxlYXNlMzEtbWFpbnQKKzgwNTMxIGZmZTk5ZjUyMmQ4NjNiY2E5YTQxYmFkOTc2MmZjMmFlNWM0MDQxYzcgcmVsZWFzZTI2LW1haW50Cis4MDUzMiBkNjI3MDhhZTI2YTU1MzZjMGEwNTc3NzUzM2VkMjMzMmFiMDIyZmI0IHB5M2sKKzgwNTMzIGM4Njk0MDhkNGQzZWRkYzE4NDA5NjRmMTdhMjAzN2JkNWJiNGNjNjQgcmVsZWFzZTMxLW1haW50Cis4MDUzNCA2MWFlNjY0ZGU1NmJhMDVhMTc0OTYyNTYwNzZiZjlhOGUwMDIyNzM4IGxlZ2FjeS10cnVuaworODA1MzUgOTY5ZWY1ZWI4MGM0MzUzMjczNzA3NjRiYThkOTAyZDA1ODBlNjk2YSByZWxlYXNlMjYtbWFpbnQKKzgwNTM2IGYxMGEzNzg3OGQ4NDJkMjcyMTlhZWY2ZjFhMTVlNDI0MjExYmE2YzAgcHkzaworODA1MzcgNzExNTJjZTcwMWVhNWQ0MmY4Njc3NWI4ZmE4NWE0OWEyYjAxYWMxNiByZWxlYXNlMzEtbWFpbnQKKzgwNTM4IDVjMzgyYmZjMDE1YTY2NGRiOThlOGZkMTc2NzYyNjA1ZmQ4MmY0NWIgcmVsZWFzZTI2LW1haW50Cis4MDUzOSA2YTkwZGM5NjdmZWQwMGMxMzc2YjgwMWJkMWRiZWQ4MmQ2M2FiYjNlIHJlbGVhc2UzMS1tYWludAorODA1NDAgNDQ4ZWY5MDAwODFjZTJjODg2YzM4NmY4N2M5ZjkzYWNiODUwNGE3ZiBsZWdhY3ktdHJ1bmsKKzgwNTQxIGVlZjRiOTU0ZDY0NDM5MGU0N2ZhOWIyYzI1ZDNjYWM4ZGI3YzRlM2EgcmVsZWFzZTI2LW1haW50Cis4MDU0MiBjYWZlZjc0NTRkZjllY2FlNjljYjFlMzlmNTNhYzNjZjJkNmFiZmNjIHB5M2sKKzgwNTQzIDE2NGIzYWNhZDlkYWNhMTNlMDBmOWQwOWUyYjI4YTdlZTNkMmQ1ZGMgcmVsZWFzZTMxLW1haW50Cis4MDU0NCBhZGMwNzk3YmE5MjEyZjMxZWRkNzE3MmY5ODhjYWJkM2UzOTQ1NzdhIGxlZ2FjeS10cnVuaworODA1NDUgMzY5MWQ3NWIwNjI2Mzg0MTY0ZWQ4MzMyMTI2ODc1NDAyN2I1Y2UzMCBweTNrCis4MDU0NiA2ZWNiM2M4M2ZlODFiZjA1NjIxZDFlZGUzNDQ0OWU3NDJkMzgzOWM4IGxlZ2FjeS10cnVuaworODA1NDcgMTdjYzJmNTMyNTYzMTNhYjlkNTM0OGUwMDJiODhiMTdkZDAxMzFmZCBsZWdhY3ktdHJ1bmsKKzgwNTQ4IGNjYjFkNWVmMDRkNmE5MjJjZGYzYzU4NzljMTU3NDYzMjMxYTdmODkgbGVnYWN5LXRydW5rCis4MDU0OSBhZTZmNTg2NWIzODYwNDFkMWQ4YjBmNGEzNDhhN2QzYjYwZjRmMTM2IGxlZ2FjeS10cnVuaworODA1NTAgMWFiMjQ5NDFjOTk2YWZlOTcwOWVlNDc0Y2IyMWQxMWY4ZWFkNjhkYSBweTNrCis4MDU1MSAzYjY5NzkwNTVmNWFlMTg5NDc1M2I1MTk1NzQ5OGFmM2NhOGEzNWYxIHB5M2sKKzgwNTUyIDZkOWQ4NTQ1ODYxZWVhNGI0ZjkzZTYxMjM4ZWFiYTk0OWMyYTg2NWEgbGVnYWN5LXRydW5rCis4MDU1MyAxMzc5MTY1NDNlZmFlNzg4MjZhNTNmMGQ0MzI5OTIxNzk3NGE1Y2JiIGxlZ2FjeS10cnVuaworODA1NTQgYzdhNTgyMmJmMjk0ODczNjM4ZTI3OTFmZDU0MzMxODYxZDMxMDFhOSBsZWdhY3ktdHJ1bmsKKzgwNTU1IDA3Y2U1YWYzMTdlZTJiM2JlMjk2YzgxZjQxMzY0ZGI5ZmQ3MTE4ZDMgbGVnYWN5LXRydW5rCis4MDU1NiBmYjEwZWYwZWZhMjM1NTJiZTdlZmRiOTMyNzk2MGM2ZTYwZWU1ZDc3IGxlZ2FjeS10cnVuaworODA1NTcgZmQzYWJmODJhYzk2MDVjYTI4YWNjOGEwNTFmZDMzMjNmZTJkMmU4MyBsZWdhY3ktdHJ1bmsKKzgwNTU4IDMxNmI1NzAxN2QwZjI1NzRjMjAwYjlmZDA0NzE4YmNlYWFiMmZmZjYgcmVsZWFzZTI2LW1haW50Cis4MDU1OSA4YzY0Njk2N2JhNmI3ZjM5NDg0MWU2MzA2ZjY3NDU4Y2ZmMzJiOTdlIHB5M2sKKzgwNTYwIDgyNzkyMGM1NDZhZjU4MDRmNjU3Y2IyZDMyY2RmOWEwZDRjOGE5YzkgcmVsZWFzZTMxLW1haW50Cis4MDU2MSA0YTY5ZDMyYTE3YjkwNzZlNzI2MDg3YzcyZDM5MTZjNTQyZDEzMzUyIGxlZ2FjeS10cnVuaworODA1NjIgNDU3MjFiOWNhMjIwNDE0NDU0NWU3OTA1MGM2ZWUwYTllMGFkMGQxMyBweTNrCis4MDU2MyA4MWQ3MDMzZDk1YTM1ZTQzYTgwMTFiZTg3MTM3YzYyNGQ0YTlhYTIxIHJlbGVhc2UyNi1tYWludAorODA1NjQgYjg4YWExM2NlYWYyNTQxYTQ2YWQxNDg3NDk4NzQ1ZmU4ZTNmNjMzNiBsZWdhY3ktdHJ1bmsKKzgwNTY1IDk2N2Y3YmMyZGNjODYzNTQxZjEyZDc2YTNhZTNiOTA0YmNkNzJhMTAgbGVnYWN5LXRydW5rCis4MDU2NiA4MmQ0ODcyNDEzMDY3Yjk2MDQ0OTMxZjU0ZDYyMGU1MjJiN2Q1MDQwIGxlZ2FjeS10cnVuaworODA1NjcgYjBmMzQyYWI1MDk1MThhNmMwMjU2YWIxZDU2MDgzZWI4NmMyNGVlMyByZWxlYXNlMzEtbWFpbnQKKzgwNTY4IGYwOTBiZDcyYWNkODJhNjEwNDExOWFmNjBlYTA4ZjQ4OTcwNzNmYTAgbGVnYWN5LXRydW5rCis4MDU2OSAwZGMyMTE1ZjZiYmVhZGYwODcyMjJkM2I1OTJkYzNlN2FkMmVlOWQyIGxlZ2FjeS10cnVuaworODA1NzAgYmFlZmQ3YjQyNWYxNzgxY2I1MTllYzM5NTk3NTI4YjIwYjY4YzZlYSBsZWdhY3ktdHJ1bmsKKzgwNTcxIDNhMDQ4NDIwMDAzNDM4ZjU3NmQyMDg3OGIyMjA5NmViMjJkNDE2NTEgbGVnYWN5LXRydW5rCis4MDU3NCBlODRhNGNkZTc5YzdjYTBiNjEzYjJiNDczNDY4OGI5ZjUxZDBiNzA0IGxlZ2FjeS10cnVuaworODA1NzUgZWM3NzE1ZWEyYzc1MTJiZWRjMjIzNDU1MjY4YzAyNzc2ZjJiYjRkMCByZWxlYXNlMjYtbWFpbnQKKzgwNTc2IDY1YmUxZTY3OGU2M2UyNjhjN2Y2ZDAzNDEyOTA3OGNmYjZiNTdhOTUgcHkzaworODA1NzcgZDc0ZWQ3ZTIxZTYyOTFhOWZmZWM5YTBhZDE5OGEyMWIwOGRlZTQwOCByZWxlYXNlMzEtbWFpbnQKKzgwNTc4IDUxZTMwYjkxNmZjNDk3Y2ZlYmFlY2VhNWQ2OWVhN2NkN2I4MTliYzggbGVnYWN5LXRydW5rCis4MDU3OSAyMjBkNDc2N2ZhOTc4MWJiZDU2OTc5ZWFkMTc4MzIzZGVkZGEyMTg5IGxlZ2FjeS10cnVuaworODA1ODAgMGI1YzQ4Yzc2MjI0M2U3ZmFjNTk1N2ExYmVhZDdmYmNjNTc0YTliNSBsZWdhY3ktdHJ1bmsKKzgwNTgxIGM5ZTQwY2VkYzhiYzI1ZmVmY2Q5NmYxYmFkOGJjNzk4NzcxZjY3MzUgbGVnYWN5LXRydW5rCis4MDU4MiBmZjFhNTkzZjhkMjNjMWY3Nzg4MmNkZGEzY2VlY2Q0NDE1NTIxN2YzIHB5M2sKKzgwNTgzIDU3NTQ4Y2NlMWVhMDVhYjYxNDQ0YTY3ZDRlM2M0ODg4N2JmOGRlNDYgbGVnYWN5LXRydW5rCis4MDU4NCAxZTFjYzY3MmViZGQyNzY1ZjNhOGZkOWY4MWFhZThkNzkwYTI1M2VhIHJlbGVhc2UyNi1tYWludAorODA1ODUgMDRhMThlNTljYzJjNDA0ZDAyZDQzZjAzMDI5MzQ0ZDI1ODM0MWY4MyBweTNrCis4MDU4NiBjZDg4ZjVmZTJkMDY1MjMwMGQ5MzgzYmU4NmUyODg0YzhkZmRhNDYzIHJlbGVhc2UzMS1tYWludAorODA1ODcgZmQ3ZWM2MDdlMTAxYTU5NDNjMmQ0OWExNzE5OGVmNGEzOWZjOGU3MCBweTNrCis4MDU4OCA2OTUwZWFiNTFmZmU2MTdkYTAxMzQyODdjM2E4YzVkMDUzMGQ5MzFjIHJlbGVhc2UzMS1tYWludAorODA1ODkgYTQzNzc2NTUzYWI1MzA3ODNjYjRjZGMxNjc3OWVmY2Q1ZThmNGJjZSBweTNrCis4MDU5MCAwNWZlMTM3YjdlZmYwMzU2ODY4YzU5MDBjM2FkMTAzODQ4M2U0OGZhIHJlbGVhc2UzMS1tYWludAorODA1OTEgNzIxNjkyZWQ0YTdjYTk5ZTlkOTlkZGU3YTExZDczOTc2Yzk4N2JlMSBsZWdhY3ktdHJ1bmsKKzgwNTkyIDk3Y2U2Y2U2YTI4OTQ4YmM2ZjQ1NWM4ODNiYjZmNmEzNTcxMWY1ZjggbGVnYWN5LXRydW5rCis4MDU5MyAwZjY1ZmJlNjZlM2EzYmY5YTY4YWM0ODkzNjhjNjE5NjA4N2FjNzQ0IHJlbGVhc2UyNi1tYWludAorODA1OTQgNTliMmFkYjUyYjE2YjE4OTMyMzQ2NGQyMGYyN2QzYmZjNzUzNGM5MCBweTNrCis4MDU5NSBlN2YwNWRiNWYzYjAzMjc0NDY4YzhmZWFmYmM2NjIyMmMyM2JiYjM0IHJlbGVhc2UzMS1tYWludAorODA1OTYgODA3ZmNhYzRmMTdiNTNhNDZhNjNhMWIyM2MwNTIxYTJmZGRkYzg5NSBsZWdhY3ktdHJ1bmsKKzgwNTk3IGVhODNhNjFmNjQzMGUxYTVlM2I3YTYwZmUzN2ZlODhmNWYwMjM4ZDEgcmVsZWFzZTI2LW1haW50Cis4MDU5OCAwZjNmOGI5ZWI2ZmY4ZGIxZGE5NzYwYzg4ZWFmMzlkMjI3YThjN2I5IHB5M2sKKzgwNTk5IDFkMmIzMjJjNDZiZTM0NWQwZmZhN2IxYjhlMmM3ODQ4MGZlOTM2YjAgcmVsZWFzZTMxLW1haW50Cis4MDYwMCA0OTNiYjQ1ODVlMzgwZjA5OTBhNWEwNTE0NzMyZThlODQ5YzViNmY1IHB5M2sKKzgwNjAxIGQ5YWZhNWQxMjFlYTdiNjg5NTc5YjMyNmY5Y2JhYTJiYTdhNWIwOGYgcmVsZWFzZTMxLW1haW50Cis4MDYwMiA5NGUzZTk4OWFlMjNmN2RjNGI3NzI3YTE3MTE3Yjc4ZWI5MWRkYzUyIHJlbGVhc2UyNi1tYWludAorODA2MDMgMTg1ZGUzMWM4YTZjOWE5NDZlYjI5OGQ0OTJiOTUxMTAyZWNmZDc3NiBweTNrCis4MDYwNCAwMDczMTlhOWM4ODhjZmQ2NTAwZDM5NzE1ZTQyZWZiMjljZTBlZDZhIHJlbGVhc2UzMS1tYWludAorODA2MDUgNWY4ODMwOTM1ZDc0NDQ5NDI2YzhlNDMzYTAwOTQzYmE3YmI4NTZjZCBsZWdhY3ktdHJ1bmsKKzgwNjA2IDU5M2EyMjU1MDI3NTdkMzlmNTU4M2E1MTdiN2ZiMDM1OWY3MTY4NWIgbGVnYWN5LXRydW5rCis4MDYwNyAyZDVjMzQ1ZjM0Yjk5Y2M4NzNhYjhkOWJkNWZiNWNkMTdjNDA2MjgxIGxlZ2FjeS10cnVuaworODA2MDggMDFiZGQ1M2Y3NDg5OWVkOGE0MTczNjk1YTE3YjM5OGU0ZTEwODhmMiBsZWdhY3ktdHJ1bmsKKzgwNjA5IDg0MDA5MTNmY2M1NTVkNjY0YTJkZjE3MTg1ZGVkYTNhNzIzYjljN2MgbGVnYWN5LXRydW5rCis4MDYxMCAzNDMxZTEzMzkxM2M5Y2Y4NGU5Yzc2ZjA3ZjY3ZmU1OGI1ZGQxYTBkIGxlZ2FjeS10cnVuaworODA2MTEgNDg2ZmU4MmJhZmI4NGY3ODVmZjg1MmJkMGMxNWZlNWQ2MjFmODA2NCByZWxlYXNlMjYtbWFpbnQKKzgwNjEyIDc3ODEyMWIyMzg4YjNkMTVmZDc5ODIyOTgwMzllZjI4YmNmYWMxNjEgcHkzaworODA2MTMgZTkxOGI4NGVmOTY4Y2M4OTA1NWZmMjJhY2MwMWJmN2Y5ODJjNjUyOCByZWxlYXNlMzEtbWFpbnQKKzgwNjE0IDRiNTcwMTkxNTBhOGIzZGNlZmNlYTdjMjZiMjU1NDRlOWFiMDI5M2EgcHkzaworODA2MTUgNzdkZGI4ZDNjNDMzNTRkNWUzYTkwM2MwNmYwOGM1NmVlN2UxMmRiYiByZWxlYXNlMzEtbWFpbnQKKzgwNjE2IDRkOTYzNGI4NDQ5YmI4ZDQ4NDNhMTExODI0MjAyMzViZGRhMmFkNTYgbGVnYWN5LXRydW5rCis4MDYxNyA2Y2RhNjAxZjRjNTg1NmZhNjIyNWFiYzE5YzdhYjc5ODA4ZWEwMzU0IHJlbGVhc2UyNi1tYWludAorODA2MTggOWU1MDU3MjAxNWFkNWIxOTE1NTc2OGNhNzhlZjA1MWQ0NjgxOTVjZSBweTNrCis4MDYxOSA0MDUyMzdiMTExMDQyNTM4NDEwODVjNzUzYzVhMzU4NjY1NWZhNDZkIHJlbGVhc2UzMS1tYWludAorODA2MjAgZWM2ZTllMGUzMTZkMjg5Y2Q1OWQyNDBiNDgyZjVhNzM4NGNhYjk5ZSBsZWdhY3ktdHJ1bmsKKzgwNjIzIDQ3ZmM2ZmU1ZTQ1NGZjZDE4ZDk2MzdhYzNkYzc4YWU4ODc5NjUxODAgcmVsZWFzZTI2LW1haW50Cis4MDYyNCBmYzgyMmFmMTFiYmM2OGI2ODFhYWFhYzlkNGYwNTQwZGQ4YzQ0Mzc3IHB5M2sKKzgwNjI1IGQ2NmRiMWIyMmQxMDk4OTQ5NmE5MWJjN2NiMjBhMDE5NzNmMGI0NjcgcmVsZWFzZTMxLW1haW50Cis4MDYyNiA0ZGRmYjVkZDRiYjc5NGJhNjBlODU2ZWViYzBjODRlNDVjNDE5NmNjIHB5M2sKKzgwNjI3IGM0ODJiNDFhZTg1NTRmYTRjMzdjMTEzMzViM2UwOGQyMjFjNjYxOWQgbGVnYWN5LXRydW5rCis4MDYyOCAwNmUwMTEwYjA4MjA4YjkxY2RiNGEzZWIxMjIwYTVlNjA2YjkyNGVhIHJlbGVhc2UyNi1tYWludAorODA2MjkgZjYyNzAwMjdlNDk5ZjE5NmIwMGQ1Yzk4MzZlOGJmYmRlYzRiM2ZjNiBweTNrCis4MDYzMCBhY2UzNDUzNzc4MDAwY2MwM2RiNTY1Y2YyNTRhMjg1MzQwZGFmM2Y4IHJlbGVhc2UzMS1tYWludAorODA2MzEgYzkwODgxOTI3YmFkYTZkOTA5YWM1ZDRmZDI1ZjVhYWQ3MTc4NmViMiBsZWdhY3ktdHJ1bmsKKzgwNjMyIGI2YjNlNGY3NzdjOTZlNmIzNWE3NzIyOTRlYzU4YWExNDNlZDljODAgcmVsZWFzZTI2LW1haW50Cis4MDYzMyA5Y2M2OTNmOWE1ZGUwM2Q3YTZhZmQ0YmVhNjMxY2NjZDQzZDg2ZDJhIHB5M2sKKzgwNjM0IGYzMmI4YTNhZTlkNjAyOTRlMzEwZWJkZDI4ODQ0YWRmNzZmZjQ1OTMgcmVsZWFzZTMxLW1haW50Cis4MDY0MCAzNmE0MTc5ODEwZjBiNjcwZmU0NzgwYzg5MTlkNDkxNDBmMjIwY2ZhIHB5M2sKKzgwNjQxIDY5OTA0OWIzYzdkNzEzZjM4OWY4ZmJkODM3YTljMmY4YmQ1YTJkYjEgcmVsZWFzZTMxLW1haW50Cis4MDY0MiAyZDJhODU4ZmUzZTE5NGNmOWQwOTNmYzM3Y2I1NWMxNTA0Yzk3YmY5IGxlZ2FjeS10cnVuaworODA2NDMgN2UzNjFhNmEyYWM4MjJlNzUxMzk2MThiNTJmMDcxZTM3ZGFjZDhiYiBsZWdhY3ktdHJ1bmsKKzgwNjQ0IGZlNWEwMDZhZjUyYmRlNzJjZjI4NDAxZGYyMzEyMjVlZTdmZmMxYWMgbGVnYWN5LXRydW5rCis4MDY0NSA5ZmNlY2U0MDVlMjk1MTFkYjQ4Y2Y0ZjZkN2Y0Nzc1YWY0MGIyMDllIGxlZ2FjeS10cnVuaworODA2NDYgNWE0ODg2NWJiYzFlNmIwM2NkNjk1MzRlZmU2YTk0ZDBlMWJjNzE4ZSBsZWdhY3ktdHJ1bmsKKzgwNjQ3IGMyZTBiOTNmODY5ZjQxY2M1YTQ1NTZjZmYxZjBhNWQ5OTg1YmNkYzYgbGVnYWN5LXRydW5rCis4MDY0OCBiZmQyNTQxZDhlYzVhMzUwOTgwMjI5YTE0OTY4ZTY5ODRkZjA2YTI0IHB5M2sKKzgwNjQ5IDEwMjA2Y2IyM2M4MDIxYmZiOTMzMTM2Y2E3NTk2OWQ4NGY0NzI4ODAgbGVnYWN5LXRydW5rCis4MDY1MCA2MjFkMmU5ODRkMTg3NmQwOGRkZTZiYjBiMTg4MzczYmQyY2U2YTY5IHJlbGVhc2UyNi1tYWludAorODA2NTEgMmQzYWJhOGNmNmEzNDhjNjdhMjg4YmE1YjBkMTU1NjExYjIyM2VjNyBsZWdhY3ktdHJ1bmsKKzgwNjUyIDJiZGI4ZWJmYzRhOTUyM2Q1OTUxY2RjMWJlNzUwNTc1MTk1Y2RmMWIgbGVnYWN5LXRydW5rCis4MDY1MyAxYjg5NDU5NDQ5MGZiZTM5ZjBmMmU2ZDZmZDVmODcwOWVjYmI2NThiIGxlZ2FjeS10cnVuaworODA2NTQgN2EzNWUwYjhhZTA4YzViNTI3NDQ4YzE1NWEwMzZkNjZiZDU1MzZiZCByZWxlYXNlMjYtbWFpbnQKKzgwNjU1IGU0N2FlYTg2ZjcxNDMzNGVmYWExMjA0ZWQxMTVlYTJiZjNlZWRkM2MgcHkzaworODA2NTYgMDkxZDk3N2M0ZDM3NDNjZDk0N2MyMTEwMWQ3YTIwYjRmMjcxNWZlYSByZWxlYXNlMzEtbWFpbnQKKzgwNjU3IGJjNjIzMGM2NmMxNDFlMGFiYmUyMTEzMDBjNzA5NjdmZDRjMmZjMmYgbGVnYWN5LXRydW5rCis4MDY1OCAwMGFjNDY4OGNkY2QwZjNkMzNlMjY4ZjIxMjM0Y2Q1MDQ3YzNjOTQ5IHJlbGVhc2UyNi1tYWludAorODA2NTkgN2E5ZDE3MmExNWU5MDllMWQ0M2Y0YjA2Yzk1ODU1OGVkYTUwYjEyNiBweTNrCis4MDY2MCBhZjgxMDQzMWJkYWM5ZjMyYTVkNWM1ZjU1MjZhZDM0ZTViMjYwOWExIHJlbGVhc2UzMS1tYWludAorODA2NjEgNTkxZGU2YzlmZmU5NDc0OGY1NGJmMTc1M2ZiMTQ5ZmNlOTZiMTEwYiBweTNrCis4MDY2MiA1MWNkNTNkM2Y2MDBiZmM1NTQ1NDA5YzM2NzE0ZThjZWZkODVkZTI5IHJlbGVhc2UzMS1tYWludAorODA2NjMgNzc0MjMwMDc4OTI2ZWY3ZjZlNDNkMTE5MWMzMjUxODg3M2U5YjRjZSBweTNrCis4MDY2NCBiMjVlNGJhNGFmNjE2ZTkzM2E5MGVmOTc2OTU5MTQ3ZjRiMTgwMjYyIHJlbGVhc2UzMS1tYWludAorODA2NjUgOGZjOTg3Y2FjOTEzZjJjZGFkNDgyNGZhYTQ2ZGQxOThjYTVhYTQzOCBsZWdhY3ktdHJ1bmsKKzgwNjY2IDNlNDUxMzk0N2M1N2JmM2JkZTE3MTNlNjc2MmRlMzNkZmFmOWFiOWMgcHkzaworODA2NjkgM2M0Y2Q3ZGRmMWQwMTc0NjY0YjBlODYwNTgzN2EwNTU1NTdhMTczMyBsZWdhY3ktdHJ1bmsKKzgwNjcwIDNlYjZlYWQ5OWE2MWFkMTI4MGUyODU4NDQ0NTJmMmE1ODU0MTUxYjIgcmVsZWFzZTI2LW1haW50Cis4MDY3MSBjOTA2MGMxYzFmOTA1NDI2OGRiYzgyMGQyNDU4YjIyOTk2YzE4YjlkIHB5M2sKKzgwNjcyIDhlMzRkNTliYWRmOThmN2Q2MmZiYzliOTQyYThiNWQyM2FhYjFlYWUgcmVsZWFzZTMxLW1haW50Cis4MDY3NCBhYjY0MjM3OWRkYzAyOTQ1NmEyYWM4MDFlMGE0ZWUxZjM5NjYxZGYyIGxlZ2FjeS10cnVuaworODA2NzUgYWJmYzdlZDM1NWU0ZTExMmVmYmYzMTVhNDFkYjljZGM5NzAwOTU0NSBsZWdhY3ktdHJ1bmsKKzgwNjc2IDViNmE3ZjJhMDVjNmQxNmQyNTkxNDljZTM5YjRlMzAwMjUyZDZhMWMgcmVsZWFzZTI2LW1haW50Cis4MDY3NyA1NWUwZWNjYzdmNDZmMzQ3ZGY0MDBmM2E0ODIyMWU2NzI3YTRlNzAyIHB5M2sKKzgwNjc4IDUyYTNhYjVlOGU4Y2Y2NTlkNzAwOWIxYWRlNjEyYzZiYzZlZjM2NmMgcmVsZWFzZTMxLW1haW50Cis4MDY4MSAzZWJhYzBlNDYwZTAzOWUzOTg0YzY5NDA4MzdkZjU3ZDZmYzE0YmZlIGxlZ2FjeS10cnVuaworODA2ODIgMjQ1ZTQzM2Q2MGViNWRjNTNlMTFkM2YxYmY1ZjhhODRmNDQ1YjE1ZCByZWxlYXNlMjYtbWFpbnQKKzgwNjgzIDE5MzA0ZDgyM2M4NzQ3YzA5N2E0NWExMDcwMGJjMDA1N2I3ODk2M2QgcHkzaworODA2ODQgODJkYTI5MGZmNzIyM2U2YmJhZDE2M2M1Njk4MmM2ZWRkZTYyMTgyZCBsZWdhY3ktdHJ1bmsKKzgwNjg1IDJkYjRiMzAwYTQyMDg1NjQyYzU1ZDg3NWZiOWJlMjYwZGMxYzhmYWQgbGVnYWN5LXRydW5rCis4MDY4NiA1OGJlM2FmMTMwZTI2YTllYjk0ZTM0ODdiZjU1NWEwMDc3ZTY0YWE0IGxlZ2FjeS10cnVuaworODA2ODcgZjg5YmExMGY5NzM0OTU5OWU3MGJiOTBjMmE3MWZmOWNhOTljMmY5ZiBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwNjg4IGUyOGZlZGYzNjM1OTY5NGQzMDk4NzY0ZDMwNzlkNzI4OTgxMjM2ZmEgcHkzaworODA2ODkgMjEzNTVkYWFmMjNhNDZkYjk3NmMyOTE0Mjg2ZmI2ODM3MWEwOGYxOSByZWxlYXNlMzEtbWFpbnQKKzgwNjkwIDdiMzA3YTMwMjc0NDc1OGQyMGUyMDIyMTAyZmIwMzQ2NWEyNzNjODAgbGVnYWN5LXRydW5rCis4MDY5MSBmMGUyMWFjNzk1ZjQ3NWMzODk2OGQzNTZlMDc4MmMwYjQ4YWZkMTU3IHJlbGVhc2UyNi1tYWludAorODA2OTIgZmRhMWRkYWUwNDljNjc2ZWExNDQ2ZWU1Y2JkOGRiODhkNDBmMDRkOSBweTNrCis4MDY5MyA0Njg1NzA5ZmFiM2UxMzc3MDY1MTE3MGFlYmQxZjBlZGE1MzRmZjkyIHJlbGVhc2UzMS1tYWludAorODA2OTQgOWY0Y2EwMDYxMGUzMzhiMTBjNGNhZDQ5OGVmNjdiMjA5MTcxYTRhZSBweTNrCis4MDY5NSBmZDI2ZWI5ZmIwZjkyYTRhMzlhOTQyYTFiNDdiMzQzZjhmNjY0MWJkIGxlZ2FjeS10cnVuaworODA2OTYgOTRiNTJlNWNiZTI5NDNiZWI0ZGE1NjEzMjg2Y2U5ZDBkODBiMDlhZCByZWxlYXNlMjYtbWFpbnQKKzgwNjk3IGFiZjIyMDFkYzM3Y2JlZjFjMDQxOGFmOTYwNzFmNGZhMDNlM2VlNmEgcHkzaworODA2OTggMjEzNjlkMTg5ZDllNDc5ZjQzMGYzNjI4OTUzYzI4ZWMwNjMwM2Y0ZSBsZWdhY3ktdHJ1bmsKKzgwNjk5IDdkOThlMGVhOWRiMzU0ZTMwOTNjZTVlNzczNTU1Njk5NzhiMTUyZjcgcHkzaworODA3MDAgZDk1ZGYyNjIyZjlmNWI3NzQ3OTc4OGY4ZGFiYjYwMjM1OTQwNGM3OCBsZWdhY3ktdHJ1bmsKKzgwNzAxIGIxZGQ3NzE1NDVlMjEyN2UzZDlmZDcwNDE4ZGY0OGFjZTEzYzM3ZTQgcmVsZWFzZTI2LW1haW50Cis4MDcwMiA0MzEyNjc2MjZhMDM1Y2U0ZTkyODk4YTZiNDRjMzYyZGM1ZGUxZjVmIHJlbGVhc2UzMS1tYWludAorODA3MDMgY2YwMzYxYzAyNTUxZDA5ZTJhMGZjNjU2YmYyNWE1ODJkNzNmYzkxYSBweTNrCis4MDcwNCBiM2MzYjEyNDYwZDQ4MTEwOTFlZjBjZDE0YTgxMmU4Y2ZjOGRiZjJhIGxlZ2FjeS10cnVuaworODA3MDUgOGI3NTMyOTkyNDY0MmViOTllMDU2MDQxN2RiZDIyMTdmZmJlNmRkNCBweTNrCis4MDcwNiBjNjJiMWQwMjU1MWFlMjg2NDE2YTYzYTk0YTU2M2U3ZDZmN2Y2MzNkIHJlbGVhc2UyNi1tYWludAorODA3MDcgYTc3NDY3YmNhZGUwYjc4M2E5ODE1MGJhMDYxNWM5M2VhMTkxNmUxOCByZWxlYXNlMzEtbWFpbnQKKzgwNzA4IDAzYzMyMDkyZDI2NjgyODFjMmJhY2JkYjA4NDAyNWIzMjdmMzQ1YzAgbGVnYWN5LXRydW5rCis4MDcwOSA2MmI5YTc0MzEwNDdmNmU5OWQwNzI5NjRiNDRhYzNiMTEwYmE5MzgzIHB5M2sKKzgwNzEwIGQwNjJiOGU3OTA1MjFlMTNmN2Y5M2E5NmYyNzNmN2ZiNzY1YjVjOGIgbGVnYWN5LXRydW5rCis4MDcxMSBiN2ZjYjJhZjhjYjQwOGRlNjdhYmU4NTFlMDAwOGQzOTY2OTY0MDdkIHJlbGVhc2UzMS1tYWludAorODA3MTIgNTZkODMxZTZmNTA4ODFhZGRkZTg1MjRjN2JiYTAwMjYyYjYwMDk5OSBsZWdhY3ktdHJ1bmsKKzgwNzEzIDQ3NjdjNjY2YjI1YjA4YjNiZjU5YjRkYTFmZTc2NzQxYTU3MzYyN2YgcmVsZWFzZTI2LW1haW50Cis4MDcxNCA1ZDRhNTY1NTU3NWYyYzRjNmRhNGVlNmFjYWYwM2I5MmEzMWYxOWJiIHB5M2sKKzgwNzE1IDNlZDI4ZjI4NDY2ZjYwNmExNmFkMjRmODg4MWY2NTk3NDBkZmUwYzcgcmVsZWFzZTMxLW1haW50Cis4MDcxNiBmOTkyY2VkMzJjMjA1NzhhMjkzMDFjZmZlMjMyNjgzNWNkODMwZWIyIGxlZ2FjeS10cnVuaworODA3MTcgZDkyZmY3MDgxYjIwMzlkNmNjODU1OWMxYjIzM2IwYmVlMTVjNzQ5ZCByZWxlYXNlMjYtbWFpbnQKKzgwNzE4IGYwMjU1ZWY0ZGJlYmQxZjIzOGVkNTkxYmYwNzZkYzNhOTQ5YTdiYzMgcHkzaworODA3MTkgN2FhZjU5ZDhlZjBiZmJiNGFkYmQ5YTRmYzM0YzMzMjVmY2M2MjQ5YiByZWxlYXNlMzEtbWFpbnQKKzgwNzIwIDliNDM4YmIwNmQ0ZDYyM2UyZTIzNThjNTY3NzZiYjI5MGFmNjJmMTEgbGVnYWN5LXRydW5rCis4MDcyMSBmZTNiZjM5OWExOWMxMjY3MzdlYjQ1ODI0YTkyNDU3YTJhZjhjOWU4IHJlbGVhc2UyNi1tYWludAorODA3MjIgODFjZWY1Yjc0ZjFhN2FlNTk4MzdlMmI5Yzc4ZTBlMDM0MTU3OTE1OSBweTNrCis4MDcyMyBjYTAxYWJkOGFkODcxNmZjMzcxNjJjNDBhMjhhOGE4Yjg0NTVkYzdlIHJlbGVhc2UzMS1tYWludAorODA3MjQgNGZkM2FiNWZhNzFkNjA2YWU3ZTI4MDMxMjkyOThkZTdiZWFmMzJmMCBweTNrCis4MDcyNiA2ODUwYWE3ODZjMTg3NjdlN2EzZDI0ZDNlOTJkMzZkOWM1NWI4ZTkzIHB5M2sKKzgwNzI3IDUxMmQ2MWE2OTJlNGViMzdlZDU3M2ZiN2MwOTEwN2IxNTg0YTQ3MTkgcHkzaworODA3MjggMTM4YmI1YzkzMDc0N2ZhZWI2NGU0ODNlMzdmMjA1ZDRhNGRjNDY1ZCBweTNrCis4MDcyOSAxOGNjMDVlODI3NTIyNzFlNjY0YjUzZmJlNjA0NTE2ZDU0NWJkYTljIHJlbGVhc2UzMS1tYWludAorODA3MzAgZTk5MTBkMTkzMjE0NmUwYTUzOTIxMzRkZjA2NDBiMjg2ZWM5MTM1MiBweTNrLWppdAorODA3MzEgMTgxY2QxNDkyY2IwYzc1YmE5N2RiMzIwMTlmYmI4MTM3MzEzOGEyMSBsZWdhY3ktdHJ1bmsKKzgwNzMyIGExMTg5MDUyNzIyOTlmYjVlNmEyMDA3MzQ5YTBhYWY3MDQ2NjRkMWQgbGVnYWN5LXRydW5rCis4MDczMyAwMmUxODdiYWFmNTE0ZDdiOTYyYzNhMDRlNGFjMzE5YTk3N2VjZDUxIGxlZ2FjeS10cnVuaworODA3MzQgMGNmODBiNzBmODM4YTAzODFhMzJjZjdiNTVmMzY0ODQ1ZDAzNGRjNyBsZWdhY3ktdHJ1bmsKKzgwNzM1IDk4MmVlYzlhOGMyODg1M2FmZDVlNGQ4Zjk4OTQwNzBlOGQ1OGZlYzcgbGVnYWN5LXRydW5rCis4MDczNiBlYjQ3MGI4NWU2N2FmYTY1ZmEzYmQzMDAyMzc5ZjE0MWQzZGVkYWM2IGxlZ2FjeS10cnVuaworODA3MzcgN2VlNTYyY2NlYTgwMmMxMzY5ODdmMWIyZjkwYTk5ZDJkOTk0NDk3YSBsZWdhY3ktdHJ1bmsKKzgwNzM4IDYzNjU5MWY0YzIxNjJhOTEwMDAzMmZmMDBhZmY0ODlkZGMxYzI2ZDggbGVnYWN5LXRydW5rCis4MDczOSA4MTQyNDUzZGI4MGNhMDAxYjUxNzhkZmQ2M2NkM2NlZDYzNWMxZDgyIGxlZ2FjeS10cnVuaworODA3NDAgN2M2MmU3MmQ4NTZiMjkyMzI3ZWJkMjg5YTAyYWVmZTBmNzljNzBiYSBweTNrCis4MDc0MSBmNjU2OWUzNGJkMjgxYWExZTIxZWIxMTc5MzgyNWNkMTIzNGU0MDliIGxlZ2FjeS10cnVuaworODA3NDIgNzY5NWY2YTdlM2EzYjY0MjYyZjcyZjk5ZTUzMzgzNzRmN2I2MzEzYyBsZWdhY3ktdHJ1bmsKKzgwNzQzIDY2ZmJjYTI4N2EwMTE4NDJjMTAxYjY2MmYyNDkyNDJhNmJkZjE1NDAgbGVnYWN5LXRydW5rCis4MDc0NCAzYzc2ODNkNmEzYzQ3MTM2NGUyOTgzNjU2ZTJlODU1MmU1ODdiMjNmIGxlZ2FjeS10cnVuaworODA3NDUgODVkNjkzZTVmMjI5M2JiNDFhMTUyZjEyNDFlMTUyNWIzMzI1YWZkZiBsZWdhY3ktdHJ1bmsKKzgwNzQ2IDU1YTU5M2NjMzI4MDNiYzc0ZGJiZmFmM2M2OWE0MTUxYWQ2NjA4ODggbGVnYWN5LXRydW5rCis4MDc0NyBjZDMzZDZjZDIxMDE5NTY0MzM5NTJhZmQzMmMyNmQ1YjdiYjNkODgxIGxlZ2FjeS10cnVuaworODA3NDggZTBlZTA5NTFlOTUzZjE1MWNmM2ZjMDhjN2EwOWY3NTI0NWQ1NTM5MiBsZWdhY3ktdHJ1bmsKKzgwNzQ5IDVlYzE1NWVjN2RiMjcwYTRlNTBlZmJhODliMDVjZDgxZDJjMjU0OWQgbGVnYWN5LXRydW5rCis4MDc1MCBkMTc2YWE0NzMyODc1Njc4ZjRkZWVkNDhjOGQwNWEwZjU3MTE4ZWJkIHB5M2sKKzgwNzUxIGE1MTUzN2U3MDRhOWI0NDRlNmNlNTk4NGM4MDJjYzg5NWJjNmVlMTYgcHkzaworODA3NTIgYjc2MGY2ZmY4OWVhYjI3YTI0Y2I1MGU1YmZlYzVlNGViNGM5OWVjOSBsZWdhY3ktdHJ1bmsKKzgwNzUzIGMwZWEwNzkyNTQwMDI4NGZmNDljMWVlNzE0ZTlkYzI1M2FmNTZhOWUgbGVnYWN5LXRydW5rCis4MDc1NCBlY2MzMmUyZjQ2NTY2ZTVkZWM5ZjY5YjQ4MjI1MzJmNTE5NDAwYjFjIHJlbGVhc2UyNi1tYWludAorODA3NTUgMTgzMzRmMjNmNjg2ZmMyNTg5NjQwMjRkNzBiOWMxNDY2N2U3ZTY1MCBweTNrCis4MDc1NiAxMTQzOTcyZjA0YmJkNTc3ODgwZjFjM2JiMjAyYzAxNDQxMjMxYzZlIHJlbGVhc2UzMS1tYWludAorODA3NTcgMWI0YjUwNmFhMDQyNzY5ZjkwYWZhMTFhMWYzNDY2ZjA0NTQzNmRmYSBweTNrCis4MDc1OCBmNTUwZWQ4OTM5OGY1OGU1MWFkOTVlMmU1MjRlNzkyZmM3ZGFjNGNlIGxlZ2FjeS10cnVuaworODA3NTkgNmY0NjY4Yjk3ZDY4NDAzNTQzOWJkZjM4ZjU5MTk0Mzc0YmMxZTE2MiBsZWdhY3ktdHJ1bmsKKzgwNzYwIGM3NDI5OWRlODAxYWJhMzViMzYyMDk0OTUyMDdjZGQ4NTM5ODg2MTMgcHkzaworODA3NjEgZjM4NGUxMWMxYmI1ZjY4YTg3N2Q4YTk1M2Q3ZWQ3YjNkZTlmZTM0MyBsZWdhY3ktdHJ1bmsKKzgwNzYyIDM5MDdkNTI2NDhhMGYyNTYxMzM1ZTcwZWI4MTA4ZTg3ZDgwODExYjIgbGVnYWN5LXRydW5rCis4MDc2MyBhZGMyZWJkYTc2MzZhYWZiZGM3NTAxY2IwNzZjNzc2OTU4ODM3YTNiIHJlbGVhc2UyNi1tYWludAorODA3NjQgMGE0Y2E4OTJhNTllNWU5Mjk4MTkxM2Y3NjgwNTllODA1YWU5MDYxNiBweTNrCis4MDc2NSA5YmE2ZmNlYzRmMTQ5ZTE3YTIyMTI3NTRlNWM5Mzk0YjYxNGUwNzJhIHJlbGVhc2UzMS1tYWludAorODA3NjYgZDkyMjgwNTE3MzA1MzcxYzA1MmJmMTJlNGRiNjdjYWRkN2UwZDI3YyBsZWdhY3ktdHJ1bmsKKzgwNzY3IDhjOWI3ODViMTg0OWQwNmIzZDdhZGRkYzQ1MDE4OGQ2ZDJmNmE2M2IgcHkzaworODA3NzEgZDQ5ZjEzMTBlMjNmOTAyYWQ4YWUzN2U4ZDU3NTA0N2U0ZDYwN2MzZSBweTNrCis4MDc3MiA2ZTRiZmNmMjA4MGM3MTYxNjZhY2U0N2FiYjJkZGY5NDRkYzk5NTZiIHB5M2sKKzgwNzczIGNmNDg1MzUxMzJlMGRjMDdlZDBlM2I3YjAyYjI1Mjc0OWE3ZTJjNzIgcHkzaworODA3NzQgZTAxMDVmZDUyMDMyOTE3ZTMwMDU5NWYzNjA1ZTVhZmQ1ZDMyZjY5NiByZWxlYXNlMzEtbWFpbnQKKzgwNzc1IGQ3NGFjN2NjYTYwNzcwYTExMmRhYTNkMmU3ODY1YjMzMDZhYzY3OGIgcHkzaworODA3NzYgMTM0YTYzYWYyMmE5YTU4YTg2NTZjMjgxZTczZWE3ZjkxYTJhNTk2ZiByZWxlYXNlMzEtbWFpbnQKKzgwNzc3IGJiNTFlNGJiZmY4YzI4YjIyM2NkZTAxMThlMjk1MDBhNDBmMmE2NDQgbGVnYWN5LXRydW5rCis4MDc3OCBkZDYwZGUyZmFlM2NmNmQzYWRhMmM2ZDg1MTI5NDQ0NjBjYTg5ODE3IHB5M2sKKzgwNzc5IDQzODBlMDQzNDNlZTk4NWE3YTk5YTA2OTdmMjY4NjBkNDhhN2I1ODQgcmVsZWFzZTI2LW1haW50Cis4MDc4MSBiN2FlM2E2YjFkODRiMjc0MGE3MjY0M2E3ZmQ2YjNhNWFiN2RjOWVlIHB5M2sKKzgwNzgyIGY0NDExYTNjZGYxMzliYWM3NzllMmJlZGQxZDc2NzAxOWY4MTJmNzggbGVnYWN5LXRydW5rCis4MDc4MyAzMWEzMmU0ZTAyNTZmZjliMTNiMTU0YzhiNWFhZmE0ZmIwMWQ4MzBjIHB5M2sKKzgwNzg0IGRjNjg1MjA5ODhhN2Y5Yjk2YTI1MDA0M2I3ZWRmNjg5YmMwZDJjYjcgbGVnYWN5LXRydW5rCis4MDc4NSA4MTNkYWVlOTRmNzM4M2YxZWExMzRhMWZkMWVlNTdmZDU4MWU5OGZiIHJlbGVhc2UyNi1tYWludAorODA3ODYgZmJiNWNkMzQ1YjQyZTkxZGMyM2ZkMzk2NzFmMzhiMWVlYTI2YjZjYSBweTNrCis4MDc4NyA3YjI5OTQwNGU3ODEwY2Q2Yjk2Njk5MjhkZjI0OTRjZmI3ZDk3ZTVhIGxlZ2FjeS10cnVuaworODA3ODggZjA1YTI5ODkzNzllYzlhNmIzMzUzYzI2ZTgzODcwZDg3MjRiOWM4NyByZWxlYXNlMzEtbWFpbnQKKzgwNzg5IDZkYjliYTQyZTQ2ODcyMzgwZTA5YmY3NTRhMGE1ZTY4NjFjOTBiNDQgbGVnYWN5LXRydW5rCis4MDc5MCAzNTIyMWMwMTU4YjVhNzJmZDE0ZjIzYzZlNTkwYTUyZTk5NGQyMjExIHB5M2sKKzgwNzkxIGNjYWRlNTc3MjY3NDY0Mzc1Nzc4OGRlNDNkYWQyOTVhNWQ1ZTAxZGQgcmVsZWFzZTI2LW1haW50Cis4MDc5MiA1MGE0ZWMzNzM2MWQwMGRlNDBiMTg4ZmQ3ZDg3YmM4OWIyNzA5NWZlIHJlbGVhc2UzMS1tYWludAorODA3OTMgYjYwOGUyZWQ5Zjc1ODkxYmJmZGY0NzUyYWQwM2M4YzRlNjNmNjkxMSBsZWdhY3ktdHJ1bmsKKzgwNzk0IDRiNjhkNmM4Y2Q1MmM0ZTA2ZjdhN2Q1OGU1Y2I1NzRjMmU2OWU3YTUgbGVnYWN5LXRydW5rCis4MDc5NSAzNTkzMmEyNGJlODUwOWNkOWI2MjdiN2VkOGU2ZTBhNTNkMTExMDlhIHB5M2sKKzgwNzk2IGQ0YWEzNTkwNzgwODc2MmRlZDA5OGY4ZTFlNDg1ZWZiZGNkZmUxNTkgbGVnYWN5LXRydW5rCis4MDc5NyA2MjdmMTE0NDBiODllNjIyNWJiNDg3OThlOTBmMmU4OTMwYzAwYjUyIHJlbGVhc2UyNi1tYWludAorODA3OTggNzQ4M2VjYjYyMWUwZjYwYmQ4ODFjN2UwMzUxODQ1OTlhNDlhZDdlYiBweTNrCis4MDc5OSA4ZWU4MGMyZjk5MjY3OWM3YmVlYmQyYjIwMTU0MWExYWI0Yjc2YWViIHJlbGVhc2UzMS1tYWludAorODA4MDAgNTc1ZTkzOGE4Y2E1MjViMjNlODBjZmQ4MzgwYmI1ZGM1NTg0NjU2ZCBsZWdhY3ktdHJ1bmsKKzgwODAxIDE4OWEyZGUzZTAzNDVmMDQ0ZTU4MDQwMjc4OGJhZjI4ZDNiOWE4ODAgcmVsZWFzZTI2LW1haW50Cis4MDgwMiAzM2FjMTA5ZGUwY2MyZDIwMDRhNGIwOWE0ZjRiNmQ2ZDQ1YjlmMzY1IGxlZ2FjeS10cnVuaworODA4MDMgODBkMDU2MzAyNjNhZGQyNThlZTNhNzVlMmZhMzgwMmM1Nzg5ZGExNyBweTNrCis4MDgwNCBmNjc4NWJjZTU0YjUzMzJkZTVlNTZmNzkxNjMyYzU2OTMwOWU3ODZiIGxlZ2FjeS10cnVuaworODA4MDUgMWY3NTA2ZjIzNzcxNmZhMDg1YTJhNGFiZWJjMGM0YWEzZjA0NTlkZCBweTNrCis4MDgwNiA5MGY0YjYyZDQ3NTlkMDQ4YTUzODc2NDI2NzJjNTUxYjc1M2MxMGVmIHB5M2sKKzgwODA3IDY4OTkxMzkzMDFjOWU4N2MzOTBjMGVlYzI3MzAzZmYwNDM4YmNmMTkgbGVnYWN5LXRydW5rCis4MDgwOCAzYjU4ZjI0NDFjYzg3ZmRkNmI2Y2E2YjVmMzI0NWU3YjI0NGRmODU3IGxlZ2FjeS10cnVuaworODA4MDkgOTQ1MzhiMDQ0Y2JlZmFiMGU5NDY3ZTJiZDcxOTNhNTZhNzdkOTNmYiBsZWdhY3ktdHJ1bmsKKzgwODEwIGY5NWMyNTliODBiM2NlNWFkNTU5ZjlmODQ2ZTE3NjJiYzY1MzgwMzEgbGVnYWN5LXRydW5rCis4MDgxMSA3YmU4MTI5ZWUwZmQyMWRkMTg5OTA1MGE0OTk1MTg5NWQ5OWVlMDQ0IGxlZ2FjeS10cnVuaworODA4MTIgNDdhMjcwMGMwMGI0OWQ4NjVkMWNkMjk0ZDk2YzkyMjMzZjkwMGNmMSBsZWdhY3ktdHJ1bmsKKzgwODEzIDVjZWEyNzI3NWFmMTI1ODJiMDc4YzMzOTZiMzIzZTZjOGE3ZGMyYzYgbGVnYWN5LXRydW5rCis4MDgxNCAyZDhmYTc0ZjkyNjNlNDAwMTI5ZGI1M2M0MTQyNGUwOTU4NWNhZTk2IGxlZ2FjeS10cnVuaworODA4MTUgZmZmNDM5ZjA4OWZlNTVhYjU0YjhjNzM5NGZlMjFiOTQwNTlmNDYzMiBsZWdhY3ktdHJ1bmsKKzgwODE2IDZmYjZmYTgwMjIyMWU3ZjU4NGEzZGJmNmI5ZDI0Y2Q4MTg1OGUxMGIgbGVnYWN5LXRydW5rCis4MDgxNyA4NDVjNmQ4MDAzMDI0NDZjYTgzYjg0ZjBiMGNiNTA3ODBlNzE2NjA1IGxlZ2FjeS10cnVuaworODA4MTggNzdiNzg2MDc2MDBlNTI0ZDJlODY3ZGQ1NGQ4YjY0NTUwZjRiYTEyYSBsZWdhY3ktdHJ1bmsKKzgwODE5IDNmZTRjMzRmNzhjMDI5Zjc4ZThlMzMzOWRjZjFjYzg5MDkyNTIzZmYgbGVnYWN5LXRydW5rCis4MDgyMCA5NWM0MDBiOWQ3NGNhMzdhNmZjNzI3YzkwOGZhMDBiMzJhODA3Y2JmIGxlZ2FjeS10cnVuaworODA4MjEgMGQxNDgyN2JjYzBkZmE5ZWUyMGQzMmQ4OGM0NTFkODljODljZWQ5MyBsZWdhY3ktdHJ1bmsKKzgwODIyIDhlM2I1ZmJjMWU0MWJmMWIzZjcwNmE0MzlhY2E2NjUzNWZiNDc5OTcgbGVnYWN5LXRydW5rCis4MDgyMyAwMzc4ZjZlMzQ2ZjAzMjU5ODcwNjc3NTA2YTdlZGFhMmJiYTQ5ZGYyIGxlZ2FjeS10cnVuaworODA4MjQgODg0NjZlZjFmMGNkZTY4MTgwOGJkMzIzNzY0YjQ0OWJiYWE5Y2VhZCBweTNrCis4MDgyNSA4YmYzNDU5NGI2NmYzMTUzYjk4MGU4NmI4NDkwOTgxMTgwMGI5ZDkxIHJlbGVhc2UzMS1tYWludAorODA4MjYgZjMzMDkwNDJhMGIzMWJlZTE2YzIzZDk5MzM1Mjk3YjliNmVkYmNlYiBsZWdhY3ktdHJ1bmsKKzgwODI3IDAzYmE2MGQxZTQ5MmEzOTg0NTU3MDEwNmUyOTJiM2Y1Y2I0ZTdlNTQgcmVsZWFzZTI2LW1haW50Cis4MDgyOCA5NDQ5MzhhYmIyNmNlMDYwOWYwNDMwZDg0MzY2ZTMzZDkzZDEyY2NlIHB5M2sKKzgwODI5IGY0Y2ViNGFlMDI0N2RiYTMyNjIyODExZjczNWJiYWU3NzMwYTEwNDIgcmVsZWFzZTMxLW1haW50Cis4MDgzMCAyNmI4MWM0ZTVmYmE0N2U0YzY2ODAzYzNhODk2NTk1NTY0OWU0MjUxIGxlZ2FjeS10cnVuaworODA4MzEgZjBmYTk0NGIxNWMwY2YxZjg3MDYwZGFmM2Y5Mjc3YjIwMmU1OGViNiByZWxlYXNlMjYtbWFpbnQKKzgwODMyIDliZWEzN2E4NTA4ODRjZGQyMjc5MWM5NGEwNDBmMmZkYzNkMmRiYTAgbGVnYWN5LXRydW5rCis4MDgzMyBjNDI0Mjk5YjM4ODRiNDBjNzZhOTBmYjdiNTc3ZjA3ZjZhMjMwY2MxIHB5M2sKKzgwODM0IDhiNWRkZTJjMzFmYjNmNjY2MDVmM2M5NTZjOTFiZjQ0MGY2YWFiYTMgcHkzaworODA4MzUgNzhlN2ZjMDFjNTFhYzU4MzVmNGQ1M2IzZjFlMTE2YzJjMjlkODI0MCByZWxlYXNlMzEtbWFpbnQKKzgwODM2IDVkY2EwYTNmYjk5M2M0MDVlZTNhNWFkYTJmYmYzOTcyZDAwZTJlNTIgcHkzaworODA4MzcgZTNlNDY2ZjUzZjllZjBhMTQyMmRlNjY3OWRkYTRlMjc3MjAzMTM3MSBsZWdhY3ktdHJ1bmsKKzgwODM4IDk5NWViOTZjYWU2ODZiZWYzNTc3OGYwZTRiOTVhYWYyOTc4NWEyNWYgcmVsZWFzZTI2LW1haW50Cis4MDgzOSBiMzAzYzM1MjU0ZGU0MTMxN2Q5Yzg3MDQ0ODFjYjM4NzdhMWE3NmMyIGxlZ2FjeS10cnVuaworODA4NDAgNjU1OGQ5NmFkZTAzYWQzMzg2Yjk1ZjI0NGIyZGViOGM1ZGQ1ZGE2MCBweTNrCis4MDg0MSAyZjMxMzAwOGE0MWQ0NWYyYTZlY2ZmNjRhYzYzMmJkNWU1YTJkZTg0IHJlbGVhc2UzMS1tYWludAorODA4NDIgNjNkNWI5ZDM4YjE3NmZhNGIxMzU3YTAxMWRkNjNjZjk2YjI0MDFmNyBweTNrCis4MDg0MyA4YWZkNmYyOGFjYTlkMjJhZTliZWU2MmE1MjkwNzNhNmI1YjJlMjk4IGxlZ2FjeS10cnVuaworODA4NDQgZjExZDRkMmI0NGI2N2Q0YTFhNzI0MDkxNmRmMzkyMzU4YTBlMDYzNSBsZWdhY3ktdHJ1bmsKKzgwODQ1IGUxMTQ2YjI1Zjc3MzIyNDg2NDMzYzg3NjdkZGUyM2FiZWYwYTFmZTAgbGVnYWN5LXRydW5rCis4MDg0NiAxY2ZiMjI5ODQ0YTc4YzU0MjIyNjI3ZjE3OWQ2ZGUzMTQzMTc1MTA4IHB5M2sKKzgwODQ3IGU1MDNiYjhiM2Y2MTViMzZmMzcyNzJhZDczZTA5ODgxYjM1MzkzNTUgcmVsZWFzZTI2LW1haW50Cis4MDg0OCBkYzJhYWM2MjRmZjhmOWI2MzZiZWVmZDM0MTBiYzBjMjczMWIzZGU1IHJlbGVhc2UzMS1tYWludAorODA4NDkgMDE2ZGJhYjM1MWYyZTEzZTZkMGM2ZjYzMmVlMjJhYzc5Mzc0OWYxMCBsZWdhY3ktdHJ1bmsKKzgwODUwIDg1Y2MzZWRjN2Q0NmU0MjY0NGJjZThiYjU3NDFkYTI2ZGEzNTYxMjYgcmVsZWFzZTI2LW1haW50Cis4MDg1MSBhYTdlNmI5Y2FiNmQ0OTJkYzZmNzBmOGExNDI1ZmU4NjE2YmIxYTg1IHB5M2sKKzgwODUyIGUyMTgwM2M0ZjFlZWY1Zjg5MjZiZWY2ZTY1ZTQ5ZWNmMTgzYjY1NzIgbGVnYWN5LXRydW5rCis4MDg1MyBkMmE0NDAwNTc4YTVjNzNlZDZlN2U2ZjNhZjIyMzJmZDYwZTk3YTM1IHJlbGVhc2UzMS1tYWludAorODA4NTQgODk0MmU5NjI4NmRjNjQxNzdlZWIyZWNkMjMzZWYxNzU1ZmJjZGEwYyBsZWdhY3ktdHJ1bmsKKzgwODU1IDhiNjQxNTk3OTJiYmIxZjcxNjhiMTZiYTBlZGM2NTBjZjRkMGEzNTQgcHkzaworODA4NTYgNWI1NWRjOTU1NGZjYmQ3N2UwN2QxYmViNjNmZmQxOTFlMTJmNmU0MCByZWxlYXNlMzEtbWFpbnQKKzgwODU3IDBlZDFlYmU1YmMyZmM5M2NmMGYwMjEzMjAyZTE0MzZiMWY2NjM2MmIgbGVnYWN5LXRydW5rCis4MDg1OCBlNGEwYmEyNTFjNGE0ZmRkMDU4NWVkNDZiYTdmODJkYThlNGQxZDA2IHJlbGVhc2UyNi1tYWludAorODA4NTkgYjkyZWY4ZWJjY2I5NzYwYjRhZTQ5NmZlNTk3ZWY4Y2EwMTA4ZjVhZiBweTNrCis4MDg2MCAzOWEyYmU0MTI3ZGQ0NDIyNWNhZTI1ODhkNzQ4MjBlZTFiNjdkYjFlIHJlbGVhc2UzMS1tYWludAorODA4NjEgM2NiY2MyNzQ1OTcyOTJkMWM0NGM3N2E0ZDAxMzI4YjgyODYyMDhkMyBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODYyIDk5NjVlZjgyNWM3ZjdiMmQ4NTkwZGNhMzI2ZDZiNDllYjI4NTZkMGIgc2lnbmFsZmQtaXNzdWU4NDA3Cis4MDg2MyAyZDhhM2JiOGZiNjA4YTczYTI3MGJlNTViMWM4ZGEzNDZmNzdkZTcwIHNpZ25hbGZkLWlzc3VlODQwNworODA4NjQgM2RhNjczODhiOTZhMzdkMTYxZTVhNTVhNzkwN2I5NGY2NDYzZDJiNSBzaWduYWxmZC1pc3N1ZTg0MDcKKzgwODY2IDYyNTRjMDI4YzYzZDI0MDBlZmQxYTkzMzYzYWY2NmJhYjc1MDU0ZDMgbGVnYWN5LXRydW5rCis4MDg2NyBlYTcwMDFjM2YwMDBmZjY5MTM3OTQzNGI1Y2UwMDU0ZTljYWVjYTBkIHJlbGVhc2UyNi1tYWludAorODA4NjggMjE2NmI2M2I2ZmRmODZmNmI5ZmQxOGY4MzIyMWFjNjFlMDdhMDVmOCByZWxlYXNlMzEtbWFpbnQKKzgwODY5IGI0YjMyMmIyZTk4Yjk5MDE2OTRiYmVkOWU2MmNkNjU1ZjM0ZTJjYmMgbGVnYWN5LXRydW5rCis4MDg3MCAzNDZjNGMyZTM4NmU3NDM1YzVkYWRkZTYxMjJhNTNhMmM2NTYxMGIxIGxlZ2FjeS10cnVuaworODA4NzEgY2ViZTI4NTcwMDA2OTBlZjIxYjI1ZTQyYzIwYTQ1N2EwMjMzMTg1MiBweTNrCis4MDg3MiA0Y2RjZmYwZTlhMzZlZDhkZWFhMjc2NTNkYWMwYzljMGMyZTlmMTM2IGxlZ2FjeS10cnVuaworODA4NzMgNmIyN2E5NWMyYzUyMjgxNGE2ZTkxZjNhM2IyY2FlNDBmZjI3M2MxNSBsZWdhY3ktdHJ1bmsKKzgwODc0IGU0ZTU0ODZlY2NiZTBlNjM3MmI0OGQzMTQwOThlN2FiMjdmMjhhMzQgbGVnYWN5LXRydW5rCis4MDg3NSBjYzkyNTAyZGU0Yzk1MTE0NGIyY2U3YmZmNDQ5MmQ5NjkyNDUzMjhkIGxlZ2FjeS10cnVuaworODA4NzYgM2I0OTA5NjNmOTJjODc0ODYzY2MxNzEyZmZjMTMxMTg3YmZmMTgxZCBweTNrCis4MDg3NyAyOTdlMjMzMjhjNmM2OTU4MGJhODE4Yjc4NWIwNmQwMWRjN2NmODNkIHNpZ25hbGZkLWlzc3VlODQwNworODA4NzggNTRlZmFmNmQyZjg5MmE5NWE2NzgyMTZlMjE4NGI3MGM0NGI5ZTFjOCByZWxlYXNlMjYtbWFpbnQKKzgwODc5IDBhODM5NjliNmYzNWRiMTZlYjJiNmM4OTI5ZTQ0YWFlYzY3ZGQzNDUgcmVsZWFzZTMxLW1haW50Cis4MDg4MCA5YWY5NjBmYmFjY2M1ZTRlNTFhNzZiOGUzNTRlM2EwY2NjOWNkYzUwIGxlZ2FjeS10cnVuaworODA4ODEgNTNmOWI4NDg4MmEwNTY5NTQwN2Q1YWJlZTQyNzZhOWY2N2U1ZWNhZSBweTNrCis4MDg4MiBhYjBiMjg1NWM5ZTQyOTEzYTJkNWUxNmJjNjdhYzM5ZTAwNWRhNTY4IGxlZ2FjeS10cnVuaworODA4ODMgYWRlODI5M2JhNDg3YTE5NGI0NjgxNWE0YzdkYWVmNTcwNzcyMGQ3MCBweTNrCis4MDg4NCAyZDNhZTEyYWQwOTM2OGRjNzA1OTliZDMyMGM5MzM1ZWU0MTI4MmU2IHB5M2staml0Cis4MDg4NSA3ZTViZGY1OWE0ODcxMzYwZTVjMDRkYjFhMTYwY2M3YTA5OTc5OWI4IHB5M2sKKzgwODg2IDY5M2Y3NGM0MmU1ZWY5ZGIzYTZjMjk3ZDI5ZTQ4ZjQzMGRiMzEyMWIgcmVsZWFzZTMxLW1haW50Cis4MDg4NyA5ZDc2YWY5NWMxNjZkYTkyN2NkOGIyMzlmYTBkZmRiOTA2MjI5ZjVmIHB5M2sKKzgwODg4IDhhZDFjNzRkNTkwOTczMTU1NDAxYTZhMTQ2ZDdmN2M3MjFhYmZkODkgcHkzaworODA4ODkgMmFhNjA1MTY4ZjExMmUxMDM2OTk2MWQ2Y2Q4M2RjYzcwYWIxZDI5YSBweTNrCis4MDg5MCBmMTgyZTA5MjJkYzc0NzZmMzY1ZDdkYmQxZDU0MTBiNTMxODk0NDZjIHB5M2sKKzgwODkxIGY0MjMwNzY1ZGRiYjE3OGRmNTgwNDQyNDJhZDdmMDBiMTkwMTY1ZWEgcHkzaworODA4OTIgNTQ4ZmE4ZWRiN2YwZmI3OTgzOTIyMDA1Yjg4OWJmNjJiNDRjMjQxNSBweTNrCis4MDg5MyA1YWI0YjRlZmNmNjFmMzdkNTJlMTYzYjNiZTIyODU4ZWVkYjlkNDc1IHB5M2sKKzgwODk0IGExYzlhOTEyNjBkOTFhM2FmNWQ4MDBjNjY3ZWNlMDMyMTczY2IxMTEgbGVnYWN5LXRydW5rCis4MDg5NSBhNDkyNTZiMjI2OTU3YTMwOTNmMTdlYmRlNzY5NzM2NzFiMzE1NTQ0IGFzeW5jb3JlLXRlc3RzLWlzc3VlODQ5MAorODA4OTYgYjBiN2JhMjZiZTZjMTkxNzgxMjEwYTAzMjQ5ZTFmNDgzNDQ4YzUyNCBsZWdhY3ktdHJ1bmsKKzgwODk3IDVmYjM5NzdmYjM0MWUzN2JjOTk0NzRjNTE5Y2U3MmRmNDMwNWY0MTcgcHkzaworODA4OTggODNjNWYyN2FmNTdjOTJjZTA0MzdkNjkwNGQwNjdkOThlM2ZlZGZkZCByZWxlYXNlMjYtbWFpbnQKKzgwODk5IGNhNzdlZDczOTgyNzAxOWYyMmUxM2QwNDkzNzRjOWFjMDM3MjBmOTUgcmVsZWFzZTMxLW1haW50Cis4MDkwMCAwYjA5NzFkYWY1OGMwMDcwNzI0OTA1ZDgzNTM5OWE3ZjUwMTc4ZmE0IHB5M2sKKzgwOTAxIGQ2MTUxNDg4NzI2ZjhhZTc2NDY1MDMzMGFmZjQ2ZmU2ZTRhZWJmZjEgcmVsZWFzZTMxLW1haW50Cis4MDkwMiA1MjYwMTA0ZGI5OWQ3NDM0MDZiMTU1NjVhMmNlNWJiNDhlMDYwNjNjIHB5M2sKKzgwOTAzIDA2OWU3ZWZhNjQ1YjUxMDc2NWVlNTBiNzZmNzczZGZiNzdhNDM4N2UgcmVsZWFzZTMxLW1haW50Cis4MDkwNCA1OTgxYjJkYTEzMWExMjczNDA0ZGFkMmVhN2NkZDE4NTkwMTAyNWZmIHB5M2sKKzgwOTA1IDQyN2M3NTAwYjJiNzBjOWZjOWY1MjQ2NWVjY2NlNGJhMjk0YzVhYmUgcHkzaworODA5MDYgMjQ1OWVlNmFjN2M3YWFlMDJlMDhlNjA5MTBhZWNjZTYxNGM0YTkzNSByZWxlYXNlMzEtbWFpbnQKKzgwOTA3IDE2MzIxODM0MTU2YTA0MGU4MjcwNjhhMTFkMjg2ZTIwOGE0ODdmNTggbGVnYWN5LXRydW5rCis4MDkwOCA1YzkwOTQ3OTJkMWFjY2Y0MDllYWU0ODc2ZGI5OWE3NmM4ZjNjMTcwIGxlZ2FjeS10cnVuaworODA5MDkgNDkwZDFjMjAzNmU5NjM1NjFlNjhjNTU4NDk5MTFiODkwZDFmYTQ2NiByZWxlYXNlMjYtbWFpbnQKKzgwOTEwIGZlN2U1NmY5ODZjZDQ1MGZlMjRjNTM0ZmRlMThkMTQ1MDQxMmRjZjMgcHkzaworODA5MTEgZTNhM2VkNjE0YzdlMDllMzMyNmE3YjIwNjg0OGZlZDZjMDk3MDQ0YiByZWxlYXNlMzEtbWFpbnQKKzgwOTEyIDYxYzRjYTk0YTM2NjgyOGQyZGRiNjVhYzU0NmM4MWM0MDI4OWIyOWEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5MTMgZTA0NmFkYjEwNDc5N2Y0M2Q0NjU3ODMyZjVjN2U1Yzk2N2E0ZGI0OCBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDkxNCBlMjk5NDJlYTJmZGY4NDFmMTRlOWE3YTE3MzE3MzQzNGY5OWI5NDRiIHNpZ25hbGZkLWlzc3VlODQwNworODA5MTUgMTliZWU4ZWE0OGQ4YWI1N2I1Mjk3MzQ0MzFhYjgxMDNkZWRmNmRiNSBsZWdhY3ktdHJ1bmsKKzgwOTE2IGQwMmIzMTczYzNjNWI5MjEwYzJjMTJlODYxN2E4OGFjNDYxNzg2ZTggbGVnYWN5LXRydW5rCis4MDkxNyAzNTMyOGYwNjkyMWNlOWNmNTkwMDZhMzQ3ZmFjNTNmOWQxYTIzZjYxIHJlbGVhc2UyNi1tYWludAorODA5MTggNWEzOGU3ZTE2YmY4Y2I5MTg4NGQzZTI4YmNiZGVmMGQzMmQ2MTE1MiBsZWdhY3ktdHJ1bmsKKzgwOTE5IGZhY2M2OTE3NTlhMWMzMTk2OWI1YmI0MzM1YWZkYzAxYmRkMmIyZmYgcHkzaworODA5MjAgNzk2N2JjN2IwMThkNGFlNjE4NWNiYThhZTIxNTBjYjhhMGEyMzVhZSBsZWdhY3ktdHJ1bmsKKzgwOTIxIDlkYWJmYzE5ZDFhYzRmZjhmNGVjOWNlMTRmYTlkMGVhYTI4YjYyODcgcHkzaworODA5MjMgZjczN2Q2Y2JiMDQ1NjFmYTM5MjdkZDUyZTk3MTg4Y2MyMjgyM2E2YiBweTNrCis4MDkyNCBmNTBkNWNhNDY5MGNiNjc5OTI0MmFjZDQyNDJkZmViZjdmMzk0ZmM5IHJlbGVhc2UzMS1tYWludAorODA5MjUgNzFhYTA5OGEwODJlMjYyMzllOWZjMWQ3OTU2YTg1MTE1ZGRkMzQwZiBweTNrCis4MDkyNiBiNjAyNjc2Y2FkY2Q4NWI1YTk4Mjc0MjM2YzQwYjZjNDgzYTkwZjEyIGxlZ2FjeS10cnVuaworODA5MjcgZjE4OTgxOTA0NTA3OWY4YWMyMGYyZTg2ZDkyMWVmNWUzNzhjY2UyZiByZWxlYXNlMjYtbWFpbnQKKzgwOTI4IGJjYjBjZjkyNDY5M2JmMDViZWQyNDNhNmY1OGU2MzJjNzA5ZjI4ZGUgcHkzaworODA5MjkgMzY4MzcxZmE3ZjVjMzY3ZDQ0NThlMmExNGI2N2JlMmFmMjJhZDg5OSByZWxlYXNlMzEtbWFpbnQKKzgwOTMwIDgzOTk1MzU4MGI2ZGZjYzVlMjI5ZGQ5NzU1ZmY4NmE0MTQyYTlhMGMgYXN5bmNvcmUtdGVzdHMtaXNzdWU4NDkwCis4MDkzMSA2NTQ2MWE3MDU0OTY3ZDg5MmE1NGViYzJhMDgwMWM5ODhlMGFlN2VlIHJlbGVhc2UzMS1tYWludAorODA5MzIgMjZlZGFiOTg5ZDJmODg1NTRmYjg2MjRlNmI5ZjZhYTZkMjU4MTNiZiBsZWdhY3ktdHJ1bmsKKzgwOTMzIGY1OGI5ZGVjZTI1ZWI4YmRlOTk0MjFiNGZlMzExOGI1YmIyZjA5ODkgcHkzaworODA5MzQgOWZlNTYyYTJmMGUzMTQ1ZDgzYTJiNTA0MmY4ZTliNDRhZjNiYmM5NSBsZWdhY3ktdHJ1bmsKKzgwOTM1IGU5MmZiOTVmMjMxNzgyZTA3MWI4NDFjZDVjNDY4NGRkYmNmYjhkYjggcmVsZWFzZTI2LW1haW50Cis4MDkzNiBiNGZhZjk5YzY0MmY3NTEwNjRkZjE2MDliYmNjNGE3OTZkNTdiZTA4IHB5M2sKKzgwOTM4IDgyNTg5MzdlMTM5YzIyNjNkNzdhOGFlOTFiZTlhNWM5OGU4YzQ5ZDcgcHkzaworODA5MzkgNDhkNzk1OTE2N2RlZjdkYmU5YTlmNTYxM2UzMGYwYTU5NDYyNGQxYyBsZWdhY3ktdHJ1bmsKKzgwOTQwIDIzYmQ2MWM3ZGJiY2Q1NTY5ODZiMzNhNDRiNDA5MmQ5OTU3NGFiMTcgcHkzaworODA5NDEgYzdkMDY3ODk1MmQzZGI4Yzc5MWY2NzJmYjY4MzU1ODdlMjUwZWQyYSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0MiAwZTM5ODJhZTI4MWQ4MjM3NWQ3MmFhMjM4ZGE5N2ZhZjIzMzgxNWM2IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQzIGM4NjdkOTkxZTkxZjBkMjI0NTFjZGQzM2EyNmNjNjViYzM5MzU5ZmEgc2lnaW50ZXJydXB0LXJlc2V0LWlzc3VlODM1NAorODA5NDQgZDZkYTM4MTk3N2NlNTE2ZTRiNDE2N2Q0YzZiMmMwNzFmOGVmMTc0YSBzaWdpbnRlcnJ1cHQtcmVzZXQtaXNzdWU4MzU0Cis4MDk0NSBhOTAzNzIyNDlmZDM1ZGY2NjY0MzcyYWQzMGQwMDdjYzVhZGIzMjE2IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTQ2IGNiZGQwMTNkYWY2ZDYxNGRjMjJmNDliYzQzNzc1ZjNjOTJmODA0MWUgbGVnYWN5LXRydW5rCis4MDk0NyBlMmJjY2QzNzJjZDYzYmJjNmU0Y2QzOTRjMmIyOTkyOTU5MzU1OTNiIHB5M2sKKzgwOTQ4IDg1YWMyN2ZhOTEzZmJhYWUyZTdhMDAwNjFjYTBmYjIwNjM4MTcyNDQgcHkzaworODA5NDkgMDdhNDdhNTE0NTQ4N2FiNzc4NGJhOTEzODdiYzliZjkyZDUwNDA2YiBweTNrCis4MDk1MCBhNzc0MzdiZGUzMWFmMzFjN2U0YjliNzkyYzRmZWFlYWRiMzgwZjEzIHB5M2sKKzgwOTUxIDFhYmIzZDNlM2U4ZGY1MmY2ZmRhZWU4YTQ1ZDE3NzcyYzU4MzAyZTEgbGVnYWN5LXRydW5rCis4MDk1MiBjYmExZDIxZWFiM2QyY2RlODJkYjkxNjY0OTM0ZjA1NDA5OWE0ZDBjIGxlZ2FjeS10cnVuaworODA5NTMgNzRhZTBlYjkzMmRlYWRhZjNlMmUzZTU1NDJkNjBlYTc0YWJmZTU1ZCBsZWdhY3ktdHJ1bmsKKzgwOTU0IDUzZDc2MjMwZmExODZmNTZiZDdhOGZjZjE1ZjhhZTc1NGFmYmI1NTQgcmVsZWFzZTI2LW1haW50Cis4MDk1NSA3ZTZmMWU4MGIzYzY1NjdlNzBhMGQ2N2Q4ZWNkMmFhZTdkNjliNWM1IHB5M2sKKzgwOTU2IDQ2NDRjZmYyNTI1YmUwZGU3ZTEzYjM5YjQwMjk4Nzc3NTFkMjQ0YWUgcmVsZWFzZTMxLW1haW50Cis4MDk1NyBmODUxZTdiNmUwZDVjNWQwYTkxOTZjMWY1NGI5ZjM5MWYyMmQ3MDdhIGxlZ2FjeS10cnVuaworODA5NTggYmVkZTg1MDdmMGFjZDRjOGFjZmZhYWRjNDIwY2YwYzVmM2E1YTk1OCByZWxlYXNlMjYtbWFpbnQKKzgwOTU5IGRiMTMzNmNjODUxYzJhODVkYjBjZjFiNjI0M2RhOTcxNzFlZTdjZWUgcHkzaworODA5NjAgMzI0Zjg5ODg2YTFjYjZkYTMyYmUyMTkxZDFkMTJiZGNkZWQ1ZmVkNyByZWxlYXNlMzEtbWFpbnQKKzgwOTYxIGQwNmVmMzBhNDQxZWRiNWJhZDU3ZDJhY2Y5MGQ0ZWJhZDJiZjRkNDAgbGVnYWN5LXRydW5rCis4MDk2MiBiN2EwZjAyMWZmN2Q5NzM1ODc4OGZkNDY5MmE3NWQzMjAyN2M3ZmFjIHB5M2sKKzgwOTYzIGMxNDIzYjBhOTMyOTM2NzY0NTM0OGRkOWIzODUzNjkxYzgxN2NiZjggbGVnYWN5LXRydW5rCis4MDk2NCA0ZjdlNTA4OWZjOTdhZTdhZjgzZmVlOTJlZGY4MDNhNWRkOTlhYzIzIGxlZ2FjeS10cnVuaworODA5NjUgYWZlMjU5MjM1NGQ5N2JjNTFhZTRkOTcxNzE0M2RiMTUzNGU4MTI0YyBsZWdhY3ktdHJ1bmsKKzgwOTY2IDRhOTQwZDk5ZWM4NGIxYjJhYmJhYWEwYzkyNDQyN2EzMmIwM2RmNWMgbGVnYWN5LXRydW5rCis4MDk2NyA5MzAzOTViMmRlOTAzNmIwZTcyN2Q4MjQwMTBlZjVmNWEyZjdmZTczIGxlZ2FjeS10cnVuaworODA5NjggM2ZhZTdjYjQ5MjA5NWIxMjkxZTYxMjkwMDUxODRiYmZmZTUxYTUzOCBweTNrCis4MDk2OSBjNWZkZTRhNDJjYjBhNWUxNTdhNmMxY2ZmZmI3NTA0N2Y1ZDkyODZhIGxlZ2FjeS10cnVuaworODA5NzAgZjYxNGRiZWMyZjRmNzkyZDdkMjdkNzhjYzU3MmZkZDkzMWQxMGUwYyBsZWdhY3ktdHJ1bmsKKzgwOTcxIDIyN2ZhN2RiNTBkZWQwM2E4NTQ2N2IwMTUzZGIxMWUyMzIzNWY2MTEgcHkzaworODA5NzIgMGQ5NzMyZjYwNzc2OTI5MzRkY2Q0ODkwODA1NWQxYzk5MzcwMzE2ZCByZWxlYXNlMzEtbWFpbnQKKzgwOTczIGIxMGMzYTI0ZDJmOWRiOGZkNDFkOGNjZDU0NDM0ZGNhMzM4NTQ0NTYgcHkzaworODA5NzQgNjNkNmY1ZmVkYmYzMTQ1NjViMjljNzhiNDBjOGFkMzIzYTBiMDk3ZiBsZWdhY3ktdHJ1bmsKKzgwOTc1IDE3ZDIxZTllNjMyMDEzM2ZjMmU5MjI2MDU4MzBiYTQ4ZTg4YmQxY2YgcHkzaworODA5NzYgYjk0YzEzM2RiNDUxNjYyYmFkMjkzMGUxNmU1MzQzNWUxNzRiNDI3MSBsZWdhY3ktdHJ1bmsKKzgwOTc3IDAyNzAxNTExYjc1OTZjMDAxOGVkNDVkNzE2ZTI1YjMxMDFkOWY0ZTggbGVnYWN5LXRydW5rCis4MDk3OCAzM2NiNWI5OTJkMzkyZWFmMDQzZWViYzg2ZDk2MDU2NWNmNmQ5NDI3IHNpZ2ludGVycnVwdC1yZXNldC1pc3N1ZTgzNTQKKzgwOTc5IGI3ZjAyYzY3MGJkN2M0Zjg2YjI3OWUwNTEzYTIyY2Q3YTRmM2YyMjkgcHkzaworODA5ODAgNzAzZjhiMTFiMjUwYmRmMzc0NGNmN2Y5OTI2NTAzZGQyMDI5NWFhYSBsZWdhY3ktdHJ1bmsKKzgwOTgxIDlmNDY3YzYyZDk1NDA4ZTQxMmM5OGMyYjAyMmVjN2MyZDIzNzI4MjMgcHkzaworODA5ODIgMjg1MjIwZjI0Y2M4ZjNhM2VlNTI2MWQ3MzBlNDQwZmIzY2I5ODQyMCBsZWdhY3ktdHJ1bmsKKzgwOTgzIDQ3ODQ3MWNjZjdmZDE5ZWM2M2E5MDMxZjI1ZTZhY2RlNTllNmZmMTQgcHkzaworODA5ODQgYmUxYWRmM2M4YTMzMmM1YWYyYjM4NGE0NzliZmIyM2Q3NGYzZmFlYiByZWxlYXNlMzEtbWFpbnQKKzgwOTg1IGUyNjNhYzJiZTRmZDQyMDY4Mjg0ZDA4ODRmYjYzY2Q0NDhkNWNlOGMgbGVnYWN5LXRydW5rCis4MDk4NiAyZjdhYjkyMjEyMWE0MGI3MWNhZDZkYThjNmI1NGVhMjZhYjNjYzQ4IGxlZ2FjeS10cnVuaworODA5ODcgMzI5M2RhODNkZjFlMzA4NmI4MmUwN2FlMzUwNWE2MjdlYTNlMGJmMCBsZWdhY3ktdHJ1bmsKKzgwOTg4IGU0MzU4ODhiODgyNWU1N2YyNjY3MWU0ZjY0N2ZhYzU1NDBmNzQ0YTYgcmVsZWFzZTMxLW1haW50Cis4MDk4OSBjYWZiNjIyNWRlZDg2ZTZkMjFlZTM5OGJhODk2YmNmNmZmNGViMTMwIHB5M2sKKzgwOTkwIDc0MzM1NWUzZWY0YWIxMWJjMmQzNTFjMDZjODEwNWUxNzkwNjBmMDcgbGVnYWN5LXRydW5rCis4MDk5MSA4ZmY4ZjBhNTI2ZGQwN2I3NDI5Y2VmYTU2MjM0NjZmMTA1OGQwYjM1IGxlZ2FjeS10cnVuaworODA5OTIgZjJjYjNhZjU1NjJmYmQ5MDRiYjYxNTJiNjlmMTQxYzM2ODAxYTE5MiBweTNrCis4MDk5MyBkY2NkZmJlNTc3YmE1NzJkNjY0NjA3OWZjNjc3NDVlNGQ2MzMzOTU0IHB5M2sKKzgwOTk0IDI0ZWM3MjU5NDE5NjVhOTFmZTMxMjFkNDM1NzZlZWU1MDQ1MzYyMzEgcmVsZWFzZTI2LW1haW50Cis4MDk5NSAzMWI5NDEyY2FkMDFiZDAzZmM1ZjI3NzVmMWExMDIzY2VhMjEzOTY4IHJlbGVhc2UzMS1tYWludAorODA5OTYgZjIxOTRlNjg4ODFlYmY0Mzc2MTlhYzBiZjk1MDlmNDc4ZmFkN2EwZSBsZWdhY3ktdHJ1bmsKKzgwOTk3IGQ2ZGY3NDk3ODBjNTQ3OTNjNzVmNDQzNzE0OTFjNmIwYmI0NWZkMDMgbGVnYWN5LXRydW5rCis4MDk5OCA2YmI5ODkxZDQyNzViZDQyYTY5YjNkOTAzZDEzYjY4NzU0M2M5MTVkIGxlZ2FjeS10cnVuaworODA5OTkgODhjZjU3NmY5Y2VlYTI1ZjFmNzlmYmIyOWQ4MGJiZmFjZmZkMmU2ZSBweTNrCis4MTAwMCBmMGY0MTE4Yzc2ZTk5MGY2ZmFhM2EzYTZjM2RkZTE1MTY1N2JkYjU3IGxlZ2FjeS10cnVuaworODEwMDEgZjE5MWQ1ZjgwZWIwNDFiYWRlNTU0MjYxN2ZlNTc1YmQ5ZGNmNTQzYiBweTNrCis4MTAwMiBiZWQwNDQ5MjM5OGRlZDYwNjM2ZjVhMjFhODY4OTg1OWFjZmZiYjJjIGxlZ2FjeS10cnVuaworODEwMDMgNjYzYjM5ZDRhN2VmN2Q2Nzg3YjJlYmJlYTgwMGIxOWRmMmExNzEzYiBweTNrCis4MTAwNCA0ZGE3ZmJhMzM3MGZjYTBlODk5NDE4OWYxMjhjNWZiNGVlNjhjZGU5IGxlZ2FjeS10cnVuaworODEwMDUgZmNiMjFkMmNlYjczYjI5MzM5MTQ1MDc1ZmY0OGNjYzQxYTFiNmZjZSBweTNrCis4MTAwNiBhYjlhZTU2NzZhZGFlNzI1MWY1ZGExMmRiOTZlNGQ3NDRlMTkwMDY5IHB5M2sKKzgxMDA3IDQzNWE4MzU1ZGFiNmJlZmM0NzE0MWRjMjE2YzEwZGIwZjJiMWVjYTYgbGVnYWN5LXRydW5rCis4MTAwOCA2ZmE4ZTEzODFiNDk5M2IxNTM2MGYxZDhlOGQyNWY5ZTg0OTYwNGU5IGxlZ2FjeS10cnVuaworODEwMDkgMTE3YjRiODFiODY0MDJmZjI5OWQ3ODhmNjMyYmU5ZmM0YTA2NGJiMSBweTNrCis4MTAxMCAyZTliYzYxYzFjMWVjNzE4OGNmZGU2YTgxNzkyMTY4Y2UxYzA0YjIxIHB5M2sKKzgxMDExIGZiNzE5MDQ5MDQ0ZmNjOGFkNzkxM2QyZmYzNDY3MGY1ODA0M2VkOGMgcmVsZWFzZTI2LW1haW50Cis4MTAxMiAyYzllMDk1ZDUyZjAwZGQ2M2IzYTlkNzcxNzI0M2U5ZDQ4ZWY0ZDgxIGxlZ2FjeS10cnVuaworODEwMTMgNTBmYTNmNGM4MjliMzQxYjZhYWIwMDI5NDVmYTlkNGIyYzU5OTcxMyBsZWdhY3ktdHJ1bmsKKzgxMDE0IGRkMWM4ZmYyZTk5MDMwODE3NDAwOWNjNWVkY2MwY2U5MmM3NTliOGIgcHkzaworODEwMTUgMTEzOWI1ZDk5NmIwMDQxNDkyYjBjMDRmNzhmZjYwZTg0MTlkNmY4NSByZWxlYXNlMzEtbWFpbnQKKzgxMDE2IGI5NjZkNTgzNWQzYjExMGFlMzUxZWVhYTlkMWIzNTIzZjYyM2VkNTggcHkzaworODEwMTcgZDMxNWE3OWYxZWNjZWU1NDUyY2JiMTVhNDc5MmQyNjg2YjI1OGZiYyBweTNrCis4MTAxOCA2Nzc1MTFlZGYwNWM3ODNhOWVjOTNlM2MxZjBmZWRiOGEwNDEzZGE1IHJlbGVhc2UzMS1tYWludAorODEwMTkgMDM3NTMzMTZmODFmN2IxMzdmZDU4OWZiNmNhMTUwMTIzMjY5YzIxNCBweTNrCis4MTAyMCA2YTJkMGNjN2Q2MDQ5Y2E0ZTAxZmQ1ZmJmZWQwMTJhZGZlZDAzYzVmIGxlZ2FjeS10cnVuaworODEwMjEgMzAzZGIyMjYxMTVkZDZjZGYwOTFiMDJiYTI3MjI5ZTcyMDY4NDgzZiBweTNrCis4MTAyMiA3MjRlODc1YjE5NDFjNTdmMWIyMWQ3NDY5YzBmOWE1NjU4YWJkNTJhIGxlZ2FjeS10cnVuaworODEwMjMgMjI5NGJjZjQwZTUxOTU3ZDE4MGRhMWY1NGQ2M2M2Y2UyYzllOWU2NCBweTNrCis4MTAyNCAzZGMyNWQwMjRhNTFjMzRiNWZmYzQ2NDIwOTRjMGE1OWMxYzgyMWVmIHB5M2sKKzgxMDI1IGY4YzE5YzVmNWRkMjQ4M2EwMTQ1ZDY5MTJiOWFjMjhlMzNmM2Y2YmUgcmVsZWFzZTMxLW1haW50Cis4MTAyNiBkNjk4ZmIwNTZhNDU5YzlhMmU0MGNjMjY0NGE0NDE3Yzk2MWE0Zjc4IGxlZ2FjeS10cnVuaworODEwMjcgYjZlMDNjYThhMjA2ZGVmMzMxNjI5OTA4ZDg1MTk5OTI0MDlhOThkYSByZWxlYXNlMjYtbWFpbnQKKzgxMDI4IDE5YWFjODRhYzFkYWRlYmFmOGI3ZDZhMTEwYjhiODVkYWU4ZmE5YjcgcHkzaworODEwMjkgZmQyNTAzMDIyM2IwNzAyNzAwMmU3ZDY1OTU2ZTQ4MDNjYzcwNmI3YSBsZWdhY3ktdHJ1bmsKKzgxMDMwIDg0YmFmNjI1OGMzYmYzODUzOTc1MmJiM2M5MGUxZTBlZDdkYmUxNTEgbGVnYWN5LXRydW5rCis4MTAzMSBlMzgzMzVkNGRmOTFkZTY0MjdjOWEyMWI1NDFmY2U0ZjgyZDk1NjVjIHJlbGVhc2UyNi1tYWludAorODEwMzIgY2FiMTRiZTBhZGExNTlkYTlmN2Q5NGM1ZWU3YzU2ZTYxZTE1N2JjNiBweTNrCis4MTAzMyBmMTk3NDA3YmRiYTJmN2Q2NDQ5MjJlZjc5Mzg4ZDVjOGI0YWM4NThhIHJlbGVhc2UzMS1tYWludAorODEwMzUgNWVhMGY1ODU4YjcyMmExMmE3ZTlhOTE1OTI4YjE1M2ZmNDgxYWI2NyBsZWdhY3ktdHJ1bmsKKzgxMDM2IGJjMGNlYTU4NDQ3ODQ3ZjIzZDFiNDI2MDRmZGJjNTAzNDIwNjc3ZmMgbGVnYWN5LXRydW5rCis4MTAzNyA1Y2FkMTBiMjc3YTQ3ODMxMzdlODI4NmJiMzE0M2JhOTkwZTVkZDM2IGxlZ2FjeS10cnVuaworODEwMzggNjljZTZjOTM3ZDZlYzllZTRmODdhODY4ZDY4NTBhZjE1ZDg3Njg3OSBsZWdhY3ktdHJ1bmsKKzgxMDM5IDQzZDAxNjlkZjk0M2ZhMDMzNWU3Y2ZmZjEyMGY3NWVmYWQ1MzAwZDkgbGVnYWN5LXRydW5rCis4MTA0MCAzMTNmODU1ODZlZjhlYjgzNTRhMDFkMTU0NDk5ZTA0MzcyNzExZmQyIGxlZ2FjeS10cnVuaworODEwNDEgNjdkYzBhOThiOGY2ZmM5MjVkZDczZTc3YzAwMTlkMWRhNzU3NWNjYiBweTNrCis4MTA0MiBmYzQ2ZTQzNzIyN2Q2MjkxZDExZjg5ZmQ1MDEyOTQxZDM4YTUzMTUwIGxlZ2FjeS10cnVuaworODEwNDMgNWViMGU1NDUxNjEyNDdjZmU2ZmVkMjA3YmNjZTFlM2Q3ZTQzZjI4MiBsZWdhY3ktdHJ1bmsKKzgxMDQ0IGZiMTllYzU3ODg1MzMzOWM2MDAwYTRlZjhhNjJlZjhjYWNjZGNhYzIgcHkzaworODEwNDUgNDg4ZGJlMjYyZjY4MWQ0YTE4ZTkxODIxNmJlZDM3NjUxMTVmMjg4MyBsZWdhY3ktdHJ1bmsKKzgxMDQ2IDdmNWE1NzFiMWVjYjhhMjg4MDcyZDhlZGU3YjkwYWU0MWE1NDA2YmUgcmVsZWFzZTI2LW1haW50Cis4MTA0NyAyMGFlODM4MjFlZjA1MzcyOTJkZjFmMGFiOWRjYTAxNDRmOTBkYTVmIHB5M2sKKzgxMDQ4IDhjNDk5Y2IzNzIzYTRiMDllNTNjMmYzYmRhMjM4YWQ1ZmQ3ZTY2ZGUgcmVsZWFzZTMxLW1haW50Cis4MTA0OSA3MzZkNmNlOWI2MGJhYTkzNGRkNGJhZDhjZDRmNGQ1MzdlZTIwNTRhIGxlZ2FjeS10cnVuaworODEwNTMgOTQ1NzM4ZTE4NzI2MzkxNGZlYjQzOWYyMmFkMDA1YmI0ZmY5N2Y1YSBsZWdhY3ktdHJ1bmsKKzgxMDU1IDZhOGRmZmY2ZDI0MWI1MDAxMmI5MDc1MzgwNjU5ZGI1MzNhZmQ5NGYgbGVnYWN5LXRydW5rCis4MTA1NiBlNjQ3OThiMzZlYTRkZWYwNmE2NzJhZjc3MTRhYjk0NWE4YTJkNGExIHB5M2sKKzgxMDU3IGRhNmNmOGYzZDhjMmVjODZkMjU5ODI4ZjNiMjc2Njk1MmNhODdhYmUgcHkzaworODEwNTggZjAyNWI2YjBmZTBmNmY5YmRhZGIzZmZkYmFlNGE3NWYwNzFjYTcwZCByZWxlYXNlMzEtbWFpbnQKKzgxMDU5IDMxNDhkNzA1MjhiNjA2NzE2NWM3MDY3NGVhZTk3M2MzN2M5YWYzODUgbGVnYWN5LXRydW5rCis4MTA2MCBlNzYyOWVmYzU1ZDAwN2U1MjQ3ZjY5ZDA0NzNhOGVhZTlhNDI2NDY1IHJlbGVhc2UyNi1tYWludAorODEwNjEgMGY4NTA3ZjU0OTQyOWUwYzJhNDcyYzk3N2UyNTc5MzY0MzIwMjkwNCBweTNrCis4MTA2MiBiYmU5Zjk4YTBjMDIwY2VkZTY2N2ZlYTNkOTE4NmZlOGY3Y2VkODdlIHB5M2staml0Cis4MTA2MyA4MjlhODZlMTFiZDdlMTRlOTBkYmQ2NGI0YjdjMzE4NDgzM2ZmZTNhIHB5M2sKKzgxMDY0IGYxMzU4YWEzM2E2ZTIzNGZkMTc1ZDRjNjc3OTBhN2U5ZjA2YWQ4N2QgcHkzaworODEwNjUgY2JmZDI3ZGI4ZGMyNzgwN2Y2OTk3YmNjZDg1YmEyODdmMzQ1YWJlZiBsZWdhY3ktdHJ1bmsKKzgxMDY2IGZjOWUyMTU5NjlkODM2YTJhZjMwZTE5NjFlOGE2MzcwMGI4YWNjZTIgbGVnYWN5LXRydW5rCis4MTA2NyA1YWIwNDQzODU2Y2FiOGEyZTUzNDQ3MDQ2NjVkYmZmODFkYjQ2NzdiIGxlZ2FjeS10cnVuaworODEwNjggZDYwNGZhYjc0OWRkNzQwM2JkOGQ0MjNhZjMyM2NlNjM4MGU3NGIyYiBweTNrLWppdAorODEwNjkgYzc1NTEyYTg1ZmQxYWVjM2JhMzNlZTdlNjE2M2NhYjQ3YTIyNmFmMyBweTNrLWppdAorODEwNzAgYjY2ZWJiNzc3NTY4YjBlOWUyMGFhNTc5YmMxZDcyZWY2ZjBhMzQyNSBsZWdhY3ktdHJ1bmsKKzgxMDcxIGJhMGZlMDI0ZTg5ZmQ0Y2E1NTU2ZTMxNWQ5ZDk1NWRlNDg0YWE2NzggcHkzaworODEwNzIgNDU0MDhjYjRiNzIzMmI5ZjI0ZDljY2NiMjM0MTA0MWQ0MzliMTM1OCBsZWdhY3ktdHJ1bmsKKzgxMDczIDY0OWQ2NzEwYTgxZmY3NTY4NTMwNjRkYzM5YWNmYWQ4YWIzMzczOWIgbGVnYWN5LXRydW5rCis4MTA3NCBmODBlOTM1ODJiN2ZlNmRlODMzZWUzYzRmYmNkNGRlZjE4NzU2YTZlIHB5M2sKKzgxMDc1IDAwMjIwZWJlZWQwYThmMjRiNGNkN2QwMzU2MzVhYmFkNGYwYWJmNjYgcHkzaworODEwNzYgOGFjMGYwZGI1ZjU5NzVmZWNhN2VlNDdiY2UxMThhYThkMzMxOWU5ZiBweTNrCis4MTA3NyBmMTVkNmYxYTJmYTMwZWQ4M2Q3YzIzNWU2ZDc2M2MzNzRhZjQ0Y2ZjIGxlZ2FjeS10cnVuaworODEwNzggMWY2OWYyODE5ZDMxMzU3ZDRlZGViYjI2N2VlM2VmYjQ0OWVmMzk0MiBweTNrCis4MTA3OSBjMGRkMzNhNWFkYmU2YzVhMmEwODI2NDMyMWQzOWI4MDgyY2JmMGE5IGxlZ2FjeS10cnVuaworODEwODAgMGFjMTFkYjVmYzk2ZTQ3MDUzOWQyZWNjNWUyY2ZlZDU5Y2VjMjg0OCByZWxlYXNlMjYtbWFpbnQKKzgxMDgxIDAxMTk0MGJhZWZiMGJlOTEzNTgyMDEyMDZjZjQ2MjY0ODJmOTIxMTUgcHkzaworODEwODIgZmI2MmUzYTlkODg2ZmZiYWExYzQ3M2ZiODgxNTAyOWEwODg1MzM3MCByZWxlYXNlMzEtbWFpbnQKKzgxMDgzIDljMzIxYWFlZWYxMjYwODZhMzgyN2MyM2UzNDZmNWVjMzBmZjI2NTYgcHkzaworODEwODQgODFhM2EzMjI2Y2Y1ZGQ0NWI0ZDcyYjE5YThkZjMxYWVhMjYzZDE0MyBweTNrCis4MTA4NSA5ZGZlZDhkZDFjNmQ5ODk1NDNhNDI0YzQwOGJiOTk2YmE3ZWM4YzgxIHB5M2sKKzgxMDg2IDM1M2Y0MGVlZDFiYzZkNGVjZDdmZjBlMjU3ODVhZTZmZGYxNDliZTAgcHkzay1qaXQKKzgxMDg3IDRmZDdmZWE1OWU1YjJiY2YzNzBhNjUyOTljMTRiNmJiNDJjZDk3ZDYgbGVnYWN5LXRydW5rCis4MTA4OCAzZTZjYTRiMDNjNzlhNGQ0ZjU2ZWFmNjkwYWRiZmEyOGExOTQ5MzIwIGxlZ2FjeS10cnVuaworODEwODkgODExZmM2MzE5MGE3Y2QxYTcyZDdmZjVlN2I4MTZhZGJkNGRmODIwZiByZWxlYXNlMjYtbWFpbnQKKzgxMDkwIGRmZjZmYzM4ODhjNjJlOThlOWM0Y2UwMWU1NzU5OTA3ZTA0N2U2ZmIgcHkzaworODEwOTEgODY4MDFkMWQ5MDM4NmJhYjA2YWVlYTk3MmJkZmM4YTJkMTM3ZjVhNyByZWxlYXNlMzEtbWFpbnQKKzgxMDkyIDMwZjRiYmJhZGUwYjcxMTdiNTM3OTFjODUwNWNiYjFkZDVmMjMwZTIgcHkzay1qaXQKKzgxMDkzIDQ5NTliNmY1YmM4NmNkYzUwN2Q4ZGE2NDEwOTg2M2FmOWJlYzJjODYgcHkzay1qaXQKKzgxMDk0IDVlMzkzNGEzMWM4ZGMwMjg4NWJiZDhhMjk4ZjRiMWJkYzE4ZjRjZDggbGVnYWN5LXRydW5rCis4MTA5NSBhZjJmODRlNjYyNTM3YzM5ZjUwYjhiYWI4NGNmZDA3YmQ3OGE5ZjVmIHJlbGVhc2UyNi1tYWludAorODEwOTYgNTRkYzEwOTg4ZjE1NGMwZGVmZTZhYWY2NjMzMWU2OWI3OGNhNzhlMSBweTNrCis4MTA5NyBlZjRkZTA1M2Q1NzdmODVmZThhZmY5OGM3M2Y4YzQ2NmUzOGVkMDBhIHJlbGVhc2UzMS1tYWludAorODEwOTggM2E4Y2E2N2FlNDMxMWIwNDlkMWY5OThjNTY5MDA4MTQxYmVlOGNlNSBsZWdhY3ktdHJ1bmsKKzgxMDk5IDJhNzBjODAzNDliMGVkMGEwMmViMDBiNzc1NjEyOWIxMDFjMmJmNDMgcmVsZWFzZTI2LW1haW50Cis4MTEwMCA0OGQ5NjY0YzQ3YTNmNTg3MzEzMTY4ZjE1NzhiNGYyOWI5OTE5ZjkyIHB5M2sKKzgxMTAxIDRiMTBlZjhhMDI0Y2VmYTMzMDc3ZTFjMzQ4NGMyZTU5YTNmMDVjZDIgcmVsZWFzZTMxLW1haW50Cis4MTEwMiAyMWE4MWM3YWE0YmM1MGY3OGEzMDA3ODEzMWViYThhOGVlZTEzODIwIGxlZ2FjeS10cnVuaworODExMDMgYjlkNGFkZjhiMTdlOWZmMGFiYmQ1NzFkNzkzMjUyNWZmZDE1YjhlNCBweTNrCis4MTEwNCA0Yjg5NjNjZjgwYjI4NmQ2OGU1MThlYTY0NjBiN2ZjNDJlYjM2NTU1IGxlZ2FjeS10cnVuaworODExMDUgYjc2MDRlYTJmNDdlN2Y1ZTA3YWU5ZjE3MDYwYWExMGY3Y2JmNDdhNCBsZWdhY3ktdHJ1bmsKKzgxMTA2IDczZjNiODg1MTc1ZGIzN2UwMWEwOTYxNTc0NzJkYWEyZGQ2MDZmZjYgbGVnYWN5LXRydW5rCis4MTEwNyA3NzM3MTRlNWVhYWVjOTYzMDFkMWNkOWJlYjI2YTFmMzlkMGNhMjBiIHB5M2sKKzgxMTA4IDJkZGNkMzA1MzNmNzJmZDYwNzY3ODRmNjlhYTA4YTE4ODU5ZmRlYTAgbGVnYWN5LXRydW5rCis4MTEwOSA2ZjQ3OTYwYjU2NDc4OWRjZjhlODE4M2E1MjU2MjZlODY1YWJhOGNjIHB5M2sKKzgxMTEwIGVmYWY2MmMyY2Y3NTk5YjQ4Y2YzZGFlZjI4Nzc0YjM2NDIzNmM4N2QgcHkzay1qaXQKKzgxMTEyIDVkZWJlY2I0ODI4MmRhYTA0ODhjYjcxMDBlYWIyNTc4M2ZkYWM4M2MgcHkzay1jZGVjaW1hbAorODExMTQgYjY0NjQwMTRjYWEwNzY3NmJjZjljYzNiYzA4M2UxMmQ4NWJiNzdiNyBsZWdhY3ktdHJ1bmsKKzgxMTE1IGUxODM2YTdiNmI2ZTc2OWM5NjgzMjExMzU2YjlhZjU3NGNmMjM2ZjggbGVnYWN5LXRydW5rCis4MTExNiAxYjNlYmVkOGI2YzY1MmE1ZTZiYWQ4NGVjZDg4OWUzYzI1YWQyMzkyIHB5M2sKKzgxMTE3IDAxM2Q3NmFhODk1MWMyYzQ4NjJlN2QxYTRjNGUyZjE5ZjUyNzcxODIgcmVsZWFzZTI2LW1haW50Cis4MTExOCAzMzAyNzNlYzYwMjgzOWFiZWI3ODI0MzEwZjRiMjVkMDY0MWE2NDM2IHJlbGVhc2UzMS1tYWludAorODExMjIgYzFiYTg4MTZiMTg3ZTkzNTY1ZjcyOGNjNDU4NmIzOWNhODJmOWNhYiBweTNrLWppdAorODExMjUgOWVjN2FjZjBhMDA1ODcwZmU4ODk2ZTAzZDkyYjg4OTVkNzZjMGM4ZSBsZWdhY3ktdHJ1bmsKKzgxMTI2IGI1NTRlZWEyNjEwY2M4ZDcwMmU2MzMyMzc0NDEwNmY0ZDUzMzE3N2EgbGVnYWN5LXRydW5rCis4MTEyNyA5MWY0NjJiOTA0YjFmZDI4NjhkZTEyNmQzNzg4ZWE2NWI5MzQ1NThhIHB5M2sKKzgxMTI4IDM0YTY4NmZiZmZlYjllNWE2NWIzM2E5MTAyZTUzODRmNzkxY2IyMWIgcmVsZWFzZTI2LW1haW50Cis4MTEyOSAxMDM1YThmZDdkZmI5NTcxMWM3NTQ1OGYzMDBkMDIwNjNmZDQzZGMzIHJlbGVhc2UzMS1tYWludAorODExMzAgMDZjNmQzYTY3YzE3YjFmODc5YmZjMTZhNGU4ZmFkZTU4NDRlNjY0MCBsZWdhY3ktdHJ1bmsKKzgxMTMxIDJjMjljZDU2NjhjNzcyODUyZTYzZmJhZDE2ZDI1MWFmN2JiNDdjZGUgcmVsZWFzZTI2LW1haW50Cis4MTEzMiBlNTU2MzJhYTY4ZTk3NDJlZDRlZWQ5ZmRkZDI1ZDkxZjA4NWVmM2I2IHB5M2sKKzgxMTMzIDkwYTlhMzRlNWViNTIzYzNlYWUyZmM2MGUxNGQ2MDc4M2YzOWZmMzIgcmVsZWFzZTMxLW1haW50Cis4MTEzNCA4NDEwZjgzZmQxNTlmNmVlNTA4NzBiZTlmMjQyNDFkODdkOTI5NWMzIHB5M2sKKzgxMTM1IDY4YmMzNTc3NWQzMTM0MDE3NTgxMjMxMTYwZWMwZDFiYmUzOGZjMDYgbGVnYWN5LXRydW5rCis4MTEzNiBjODA2ZWRmOGQ3MzQwZWZmMWIyZmI2NzU0MzhmZGJkMWYxYmFmMzQ0IHB5M2sKKzgxMTM3IGViYTQ5NDc4YWFkOTY1MTc2YWEwZmEzMTU0NjYzODFlOGI1MWU1OTAgbGVnYWN5LXRydW5rCis4MTEzOCA0MzFhMTUxZTEwMmQ1MjZjZTgyY2VkNTM0ZmJjYjJlODU1MGE4MWY5IHB5M2sKKzgxMTM5IDUzNjFmNmRkMTM5OTYzOWM3ZmZhMTBiMzhiNTYzNWJmZGRiNmZiZmYgcmVsZWFzZTI2LW1haW50Cis4MTE0MCBlZTU5NmRhODYyZjgyN2U2ZTk5Yzg1ZjNiOWFjNGRmNDIyMmMwYWI4IGxlZ2FjeS10cnVuaworODExNDEgNmNiZDRiY2EwOTdhMGFmZDM5YzhiNWQwZjc4NGRmNWQ0Njk0M2M4OCBsZWdhY3ktdHJ1bmsKKzgxMTQyIDE2OThjNTViMmFmOTRiY2U1NDA4NTRiMDg3NTNlNWNiM2MzMWQ1Y2QgcHkzaworODExNDQgOTM3OTA4NDcxNzRhNzQ3YWQ0YzNmZTNlN2ZlZDM1N2Y4NjAxZTIxOSBweTNrLWppdAorODExNDUgMDYzNjRkYWQ4ZGRkMTVhNGYwNDFlN2E2ZTdlY2UxZDBkMmY1MDVkYiBsZWdhY3ktdHJ1bmsKKzgxMTQ2IGU0ZjI2OTYxNWEyNWNjZTMxMjAyNjMwNTNmMTA2NmE4MWUyMGYxNmYgcHkzaworODExNDcgYjM4NmViODM0NzVmNDlmNjdhZjNkYzdjZWNkOGRmNDJmODkxMzNiNiByZWxlYXNlMjYtbWFpbnQKKzgxMTQ4IGRhM2ZhODgxYTgwMDM5MDUyMGJmZmU2OTlkYjE0NGEzZDZhYzhlNjEgcHkzay1qaXQKKzgxMTQ5IGUwOTZhYWU1MzViOWI1YmE5M2E3Y2I3MzFjMjgzY2JmMWJmYjRiNWYgbGVnYWN5LXRydW5rCis4MTE1MCAyZmE3M2IyOWIzMDU5NzUwN2I2ZmQwNjhkZjMyZmFjMjhhMzM4YjU0IGxlZ2FjeS10cnVuaworODExNTEgY2I5ZTA5ZjNmYThlZWMzYzlhNDViYTQ2ZWZiZDNkOGQ3MjA0MmRkMCBsZWdhY3ktdHJ1bmsKKzgxMTUyIDMxY2YxYjEyNTMwYTlkMGFlZTNjMjVkYzgzMjk5ZGM5ODBmNzQyZWIgbGVnYWN5LXRydW5rCis4MTE1MyBhZTRiYjY3MDEwNzhlMGUzYmM0NTc4NGI5MDRhNGUwNmU1NjQ0YjYzIHB5M2sKKzgxMTU0IGNhNDk2YmZhY2QxYmU1YjdlMDU0M2EwYWY4YTRlZjE5ZjA3NmU3MWQgbGVnYWN5LXRydW5rCis4MTE1NSBjY2YxY2E3M2MwZTk3ODllNWU2ODQ4MzljNjRmNGQxNThiM2QwYTUzIHB5M2sKKzgxMTU2IDllNWI3M2VhNmE3Y2UxZmExYzc2NDU3NGJkODQyMWVmM2UxZmIxNWIgcHkzaworODExNTcgOWY2MmY1ODY1YjQ0MWViODA5OTBhNzIxMjk4M2E5MzJhNDNjMWY5MSByZWxlYXNlMzEtbWFpbnQKKzgxMTU4IDI2MjI3OTZhZWNhOTRlYTJmYjY0ZWYzZTExODQ1NWUwNTc3Yzg4ZjEgcmVsZWFzZTI2LW1haW50Cis4MTE1OSA1OGE1NmFiYTBlYjJjMmUyNGI1M2VhOWE1MWQ2ZmY1ZTRhMzgzMmFmIHJlbGVhc2UzMS1tYWludAorODExNjAgYTZhNjdiNzM0ZDhiMzYwM2JjNjI1NTkzNzFlOGM0ZTE3ZmY1ZTJjYSByZWxlYXNlMzEtbWFpbnQKKzgxMTYzIDc0MmYxOWI0NzAyMDRiODViZmRiMzRmOGY4YzAxYmUwM2U3OTY0MTIgbGVnYWN5LXRydW5rCis4MTE2NCAwY2IwZmFkNTE0ZjM3NTIxYzY2YTNhNzlhNWM3ZjAwODU3OGZiNTdkIHJlbGVhc2UyNi1tYWludAorODExNjUgM2IyNDdhZjZjZWU3OTJkY2NjNDQ2ZWM2YzU0YjViMjBlMTBkOTlkMiBweTNrCis4MTE2NiAyNTJmZTVjNGNkNTNmODZkZDY5YWI0YjIxMTlhNTE3ZGZlYjk5YTljIGxlZ2FjeS10cnVuaworODExNjcgZWFmODFhMTMwYWQ2YzQ0OTljZTJkMDhjZDQxZjMxZWVhMGRlNTY1NiByZWxlYXNlMjYtbWFpbnQKKzgxMTY4IDllZTIyOGQwODllZGQyOGY4NmFjZWZjOGMwOWM1NTBmZWYxMWNjMzAgcHkzaworODExNjkgMmIwYWY2OWFlZjk3ZDIyOGVjZjcyYzJhOGQzMTc3YjE0ZjBhNThkOCByZWxlYXNlMzEtbWFpbnQKKzgxMTcwIGFiMzFiMDA5YTFlZTI5MzRiMGI2ZThmMTVjYjdiNmQ4ODE0YTU3NTcgcHkzaworODExNzEgOWMxYTJiZDUxNTI4YzNhN2Q1NTJjMDA1MjNlMzVkYjJjODgwYjgwMyByZWxlYXNlMzEtbWFpbnQKKzgxMTczIDMwOWQ5Y2Y4NDgwODUwZTRmOGVhYjM5ZWY5OWEyOTM4N2ZjZjU4YmMgcmVsZWFzZTMxLW1haW50Cis4MTE3NCA1OWZmN2Q4MTJhZTM0MmY2NTE0ZTAzZDE3ZDQ1MWFjYWM0ODM5ZDMwIHB5M2staml0Cis4MTE3NSAyMzY5ZDRmMTg5ZTQyYzY3NzQ0MTU1MDM5YmYwOTc0MzkwNWIzNGYyIHJlbGVhc2UzMS1tYWludAorODExNzYgMTE0YzRhNDJmYzFkMDMwNzNhM2RmZWExZTMzNDlhYTljODIwOTI3YyBweTNrLWppdAorODExNzcgYTgxNGU3ZTcyOTAwZmFmNDhmZDg4ZjEwNzFhMmRhNTViNGI2ZWRlNSBweTNrLWppdAorODExNzggZmRlOWI0MzU0NWZiYWY4M2MxMTZhOTYxZTU0MjlhNmE2MDAwOTcyZCBweTNrLWppdAorODExNzkgZTZiZmU5M2I2NWJiZGEyNDNmNTMzMmQwZmQ5YzJjYmY3NDM0NDY1OCBsZWdhY3ktdHJ1bmsKKzgxMTgwIDBkMDI4ZDM1OTBkYTAzZDg5NTdmOGE1M2NiYmViODgzZWVlOGZiZTkgcmVsZWFzZTI2LW1haW50Cis4MTE4MSBmYTkwMmY4ZTBkYjBlZGY4MGE2NmJmMzdhZjQ2YTFiNzhiNTM4MzRiIHB5M2sKKzgxMTgyIDBlMzdhOTVjZGNmYjVjNzNmNzc2ZGYwOGQ3NWZlNTIzYjNiOTFmZmMgcmVsZWFzZTMxLW1haW50Cis4MTE4MyA3NzIwMzZhNmY3ZWYwMjg3OWMzYzVlZjI3ZmNlNmQ0NzBkYzViNDE1IHB5M2sKKzgxMTg0IDM2M2VmZmI1ZjcyN2Y4ODY0ZDQwZDE3ZTk0NDQxMjFjMGFhZmEzNGMgcmVsZWFzZTMxLW1haW50Cis4MTE4NSBlZGVmODhmNmYxYWI2MTEyNzU3MTY4NmVjZmQzOTBjMDA3MzQ3MzU1IGxlZ2FjeS10cnVuaworODExODYgMDVhMmFiMjcxYjY1ZjQ4MzZkOTYzMjRjMjJhZGYwNjczZDNkYzg3ZSByZWxlYXNlMjYtbWFpbnQKKzgxMTg3IDk4YzE2MTA0MDAwMmM1MjkzOGJhYWE4YWY2MGY3OGFiZTgyZThkOTkgcmVsZWFzZTI2LW1haW50Cis4MTE4OCBkOTcyZDA1MmVlMjIxN2FiMzhkZjA4NTE1NTJlMGVhMzZiMjUzZGI4IHB5M2sKKzgxMTg5IGM0ZTExYjBjN2VlNTE4M2JkZGMyMmMyYWNhNGZhN2Y3NzZjY2MzMjIgcmVsZWFzZTMxLW1haW50Cis4MTE5MCA0N2I0ZGE4NmI5YjlmNWQwZjI4OGQwYzQyODMwMmUwYWNmNTE0MTkwIHB5M2sKKzgxMTkxIGVhNTY4NWQ5OTQwYTNiOTk1OGIzZTA0NzUyYTA4MTU1ODE0ZmEzMjMgcmVsZWFzZTMxLW1haW50Cis4MTE5MiBiYjlhZTEyNjMzYTk5YTg0YWIwZGNjZWIxNWU2NWE1OTcwMTEzNjM4IHB5M2sKKzgxMTkzIGYzZWE3Y2Q3MzVlY2U3NDE2MjJhODkxMjczYTNjMGE5ODgyYmU4M2UgcmVsZWFzZTMxLW1haW50Cis4MTE5NCBiNWJhN2VhNDI0NmIyY2U2ZjEyZjgzN2I5ZDE1OTE3MTk1OTUzZTI3IHB5M2sKKzgxMTk1IGU5MDk2MDFlMDIxOTlkMjQwNTg3NmI5ZTE1ZmM1ZjgwZTdhMjcyOTcgcmVsZWFzZTMxLW1haW50Cis4MTE5NiAxZTE0OWI1MGFjYTYxOGIzN2NjOTliNzg3ZGRlMzNhNDA1NTY0MjRhIHB5M2sKKzgxMTk3IDkzMTE5MThjMDY0OWRjOTg2OTMwMzMzODUxN2ZiMzdiYzllNjcyNWYgcHkzaworODExOTggMDQyZTZhMzk2YTg2NDQ3MmUyZWMwMmFhNWE5OGE0Yzk0ZGM3MDg4NiBweTNrCis4MTE5OSBkY2Y0NzExNzE1OGYwMTI4MTk5ODgyZjUzNGY1OWMxODZkNWI3ZDc4IHB5M2sKKzgxMjAwIGQyZTY3NTRjYmJkNWU3NDQ3Njc3ZGJhZWRhNDgwZmY1NTA2ZTNmZTkgbGVnYWN5LXRydW5rCis4MTIwMSBlNGRlZGY1NGM0MWUyNDEyODk5YmE3YjAxNzBjZGZiZjNjMzk1ZDk1IHB5M2sKKzgxMjAyIDlhZGUzZTYyMzcxMGYwNDhkZTllYmNlZmQ3NWQwNjlmZTU4ZDlhNmMgcmVsZWFzZTMxLW1haW50Cis4MTIwMyBlZjBmNjM0YWQ1ZmFmZDdiNTY4OWY5ZmRhM2QzNzA0OTRiZjkwODMzIHJlbGVhc2UyNi1tYWludAorODEyMDQgOTkzODNmMWJjMTdjOGY1MTU1YTYwOGFmMTQ4NzFlZmE3NzBmNjEwZiBweTNrCis4MTIwNSBhMGE1MzU5ZjhkMTM2OWYyZjVhZDNkM2EzZTY4ODU4YjhkN2YwMGUwIGxlZ2FjeS10cnVuaworODEyMDYgMTg2ODkwZDdmZTcyNDM2MWFhOGEzNWI4MDJjYWIwMWVlOTdhY2ZlOSByZWxlYXNlMjYtbWFpbnQKKzgxMjA3IGNjOWI4MjgwZTNmNWZkMGFmZDhiMzg5Zjc5MTkyYTc1MjM4MjEwYzMgcHkzaworODEyMDggNzk3MGM0OTkwMTQ0MjdjNDYyY2Q1NDJkNDM4NDhhODZmM2YwMDQ3YyByZWxlYXNlMzEtbWFpbnQKKzgxMjA5IDU0NjhmM2FlZTRhZTFiMTEyMGMxY2RmNGEzMjA5OWJiMTk4YjVjZDYgcHkzaworODEyMTAgZjU5ZjNjNzM3MzRkYjM2NTYwMDJjZDc4ZWU5NzQwNzJmN2MyZTU1ZCBsZWdhY3ktdHJ1bmsKKzgxMjExIDc3OWRiYzUwZjFmODhkZWY3MjkzM2UzYmMwOTUxZWZiMjI2NzY2NGYgcHkzaworODEyMTIgOTJkMWM4ODE5MDcxZmMyYjFhODI5MDBlNDg2OTY4YjJiY2IxNzc3ZiBweTNrLWNkZWNpbWFsCis4MTIxMyA0NjUyZmUwYzNiODk3NGFmZDA4NjkwMTVlOWNkYTMyMDBhY2JmMmM1IGxlZ2FjeS10cnVuaworODEyMTQgZWMxOTkxOWUyN2NmZTY5MDRkN2M2OTQ4MGNiZWRhM2FkNzIyMTlmMSBweTNrCis4MTIxNSA3ZjA1M2UyNWIzMzUyZDRhNmM4ZDVmM2VlMzM5ZmNjNWRiNGNhM2UxIHB5M2sKKzgxMjE2IDM3OGIxY2Q4NDcyZWVmYjFkZDBhMDY2OGExYWU5Mjk3NjMxZGQxNDEgcmVsZWFzZTI2LW1haW50Cis4MTIxNyA5ZTQzODVkYjM3MGVkODdiYmFiMjgwZGI2ZDc4NDE4OTM4NmJmZjIyIHJlbGVhc2UzMS1tYWludAorODEyMTggNjk5MGM2ZGI3YzM5OTRjODg0NGQ0NmU2NjI0MDQwZjgwNzhlZWM2OCBweTNrCis4MTIxOSA0Yzk1OGU0ODkzYmE2OWY4MTlhNmJlZTcyZjEzMTZjMDBhYTdmZTQxIHB5M2sKKzgxMjIwIDFkNGRiZmE4ZWQ0ZjJhZjViZGRlMGU0YTY0NDI0N2MyYTUzN2RjNmEgbGVnYWN5LXRydW5rCis4MTIyMSBjZjI2ZjAxMTQ5NmVkMmJlM2Q4YmYyYjMwNDcyYTQ0YjBmZWIxNDRmIHJlbGVhc2UyNi1tYWludAorODEyMjIgODAwMjE0OGMxYTFiN2RhMGY5MGM5YzdiNTdlYTRhMTMyOGZmMDUzZCBweTNrCis4MTIyMyBjYTlkMmYwYThiOGFjYWExMWI1YzlkNDY5NzIwNjZjMmI0ZmMyMjQ2IHJlbGVhc2UzMS1tYWludAorODEyMjQgZjM2ZTBlMmRhZjQzMmU2ZmMzOTRhMjJlYWIzZDgwZDhlMzliYjQyMCBsZWdhY3ktdHJ1bmsKKzgxMjI1IGYzNTBhY2JjZTc5MGYxZTRjMmM3YmFkMWJiZjFhZmU0NThhYWVlNzggcmVsZWFzZTI2LW1haW50Cis4MTIyNiBmNWM2NDU1YzE0M2M2NzU0NzNhOWE3ZTc1NzAyYjQ4NDJjMTVmZmM0IHB5M2sKKzgxMjI3IDY4ODZlZTljYjcyYzkwOGRhZDliYzdiMzYyYzBkNmQxMjQ1YjIzYjYgcmVsZWFzZTMxLW1haW50Cis4MTIyOCBkMDhkYTQ1NDRlMzEyMTQ4ZGMxYzMxYmE4M2IwNjViNzg0MDg0MzU1IHJlbGVhc2UzMS1tYWludAorODEyMjkgZWYyMmRjMDY1ZTBlMTFiNDNiOWFmZWYxOTk4YjRjMzMzYjEzMGQxNSBsZWdhY3ktdHJ1bmsKKzgxMjMwIGU1NzY1MGE0Y2E4MWE2NDcwZTNkZmFlMDQxZmRjYzNkMjdiYzY4OTIgcmVsZWFzZTI2LW1haW50Cis4MTIzMSA5Njc4MjZkZDVmYzZjMTMxODRhODZiYzIyYmNhMzhhOGRjZDYyZWYxIHB5M2sKKzgxMjMyIDg0NGJkN2I4NDIxYjczYzNhYmMxYjlkNjEwMjQ4MzI1ZmFhYjRiYTEgcmVsZWFzZTMxLW1haW50Cis4MTIzMyA0YmIwM2NjMWQ0MjFmNmNlNTg4MzY1YWY5Nzk5ODU0MjFlZjJmZGI4IHB5M2sKKzgxMjM0IGIyOWFiNGU3NjczNjJlYjRkY2E3NjE3MmQwYTcyYmEwMmY4ODNiYWIgcHkzaworODEyMzUgMmNhNDYyNmQ5YzkzMDM0OGU2NTIyZTcyMzU0NjJiYmJjZGExMzE4YyBweTNrCis4MTIzNiBlMjBhNjc3YWYwMDA0ODE5Y2YwODRjMjQzYTE3OTkwMjA2YTIwYWI5IHB5M2sKKzgxMjM3IDA4YWJiZGM5OWJlNjhkZTc0MmM5ZGQ2NTAyZDEyNWNiM2E3ZjRmOTMgcHkzaworODEyMzggYjRjZmNhNWM0MjhlNTIxNDdhZWIwMDY0NWMwNGMyODQxOGJkYjVlZSByZWxlYXNlMzEtbWFpbnQKKzgxMjM5IGEwOWViM2Q1OWZmN2Y2MWVmMGNhNjQxZGIyZjNlYTg4NDZkMTMwYzcgcHkzaworODEyNDAgZjgzNzYxMjAwN2RjOWFiNzc3NzA3OTE4NTM3MDM3YTNjZGQxNGViMyByZWxlYXNlMzEtbWFpbnQKKzgxMjQxIDhhMDA3OWQ4ZDFjZWY0MzkzZGNjYmY3MDk0MTk0OGM5ZGQ3ZDdjZGQgbGVnYWN5LXRydW5rCis4MTI0MiA3YTdhZTQ3NmRmNGZlMDQyNTA1YmU5ZDhhNjU3MTRiYWI2MjliMzA2IHB5M2sKKzgxMjQzIGMxNzc4M2FlZGNiODhhYmFmOWQzYTMzYzExZjNmMGU3YWJiY2I1NGMgcmVsZWFzZTI2LW1haW50Cis4MTI0NCA4YjY0MDFhZTEyNjI3ODEyNGQ2MGE3NzIxMTk1NWYyOWEwOGZiZjI0IHJlbGVhc2UzMS1tYWludAorODEyNDUgM2YxYTZiMGI3OTBjN2RjNTg1ZTQzZGFiNjI4NTBlMTljMjBiMmUwYSBsZWdhY3ktdHJ1bmsKKzgxMjQ2IDRkMjdlODgwNzI0YWJkMWUxOGJiNDY1NjExMDdkNzIxMGI2ZDUzM2YgcHkzaworODEyNDcgYmMwMGU0NjNhOTViZjVlZGRhMjYwYjVhZTU2NzZhNzEzYzgxYzYwMyBweTNrCis4MTI0OCBhMzNiZWUxNGFiYzUxYjIwOTMyN2MwYTk1N2RmZDZiOGJkMmIwMjM5IHJlbGVhc2UzMS1tYWludAorODEyNDkgZGRkZDFiYzdlODM5MTcwZTI2N2I4YmY0Njk2MjNlZDEzYTU0NDhjYiBweTNrCis4MTI1MCA4OTRjOGU0MjA3NGE5M2IxZWUwNWM2ZGVmZjk5MzczOWFiZTk5ODJiIHB5M2sKKzgxMjUxIDU1Njk2MWY0ZjE2ZGE3MTJjODNkMzg5MmIwZjFmYTY4ZWMyYmE5NGMgcHkzaworODEyNTIgZjNmOTVlZDgyNzQ0ZGIwMmU1YTEyNDI5ZTcxZTdmOTc3ODJkYzJkZiBweTNrCis4MTI1MyAzMWNlZTJjZjdjMzc2YWEzM2VjMTI5MDU5MDE4ODY1OTJlYmVjOTA4IHB5M2sKKzgxMjU0IGNhODE2NDZkZDI5Y2JlNzJjNjJkNGI1MTI2YTA2ODc2NDY5OGE3MjEgcmVsZWFzZTMxLW1haW50Cis4MTI1NSBkMjkzOTkxMDA5NzM4MjAyMzk3MDc1NDY3ZmU5NGUwOGEwZjBlODI2IGxlZ2FjeS10cnVuaworODEyNTYgZDEyYjY1YTc5ODI0ZjAwYzhlZjU1NTBkYWM4YjYxZjMyM2RmZTA0YSByZWxlYXNlMjYtbWFpbnQKKzgxMjU3IGM4NmVlYjczMzMxNmJhMzRlZmZiODBhN2QyZTMxNWU0ZTViYWViYzAgcHkzaworODEyNTggOTNhMjUxNjk4N2UwMDIyMTE4N2E4YTE5ZTA5OTQ2YzFlYjNjNzZkMSBweTNrCis4MTI1OSAwYjA0YzVjYTU3N2QxNmQ0NzczNDExYjNlZWM4MmQ1NmQwOGM2NTViIGxlZ2FjeS10cnVuaworODEyNjAgNzY2NDNjMjg2YjlmMDUxOTZkYjAzZDg4NTE3OTZmYWRiNzIxMTM2MCByZWxlYXNlMzEtbWFpbnQKKzgxMjYxIGI1ZjJjNDQyMWEzMTg2YmVlZTQ1NjEwNzY2MjM5M2I2OTVjY2MxNzkgbGVnYWN5LXRydW5rCis4MTI2MiAwOTkzMjY1MzU2MWI5ZGU0N2RmZjI0YmY0OTYzOTJhNzQzMDU3MjJkIHJlbGVhc2UyNi1tYWludAorODEyNjMgZWM1OTVmZjI1N2UwNjQwMWE1MjNiMDQyYTcwOTlkMjBkMzk3NmQ2YyBweTNrCis4MTI2NCBmZjRhOTY4Y2E3YmJlNzZlNzI5NjI5ZTM1ZDkwYzhhMzk4NDZkYmVlIHJlbGVhc2UzMS1tYWludAorODEyNjUgYzk4MWYwYzg2NzhiNDk4NzVmOTZmNzUyYTdkZmU1OTkyNzYwNGM5ZiBsZWdhY3ktdHJ1bmsKKzgxMjY2IDM5ZWI5MWE1ZjlkY2E4MzZiZjJhZWJhMTNmOWQ4MTJiYTYxOWFkNDQgcHkzaworODEyNjcgZDZjYjJmMTBlNjVlZjg3MzQ5MjhmYzZhY2E2MGVhNzgxOTQ0YjY1OSBweTNrCis4MTI2OCBiOWEwZjI2ZmEyYzk2MzM3ZDExOTdiZDA2ODVlMTk0YTczMTQwMWQ0IHJlbGVhc2UzMS1tYWludAorODEyNjkgN2Y2NGZhZDE3N2RkNmM2Y2I5YzE0ZTQzYWE4YjJkYTI2ZTkyYzY5ZCBweTNrCis4MTI3MCBmMDFhYjFiMTNkMGFlNzdhMzI0MDdlMThlMDM4YTU0YTIyNGJhNjAwIHB5M2sKKzgxMjcxIDg0MDNmNTA2ZDllNTRhNDc3OGJlYWRiZDg0MzhiYmVlYTk2MzlmZTggcHkzaworODEyNzIgZGU3Yzg1ODBmOWViZTY2MDMyMDk2ODQ5ZTcyNjAyNGFkNDY0ZWIwMSBweTNrCis4MTI3MyBiZjE0Yjk2MzhjNzNhNWU5YThlMDIzMmFiNDE3ZTgxZGM3ZjhhYzUwIHB5M2sKKzgxMjc0IDVkYmQyYzI5YjBlOTZlYmUwM2Q2YjhlMTgyMmRhNTJhNWExMWI3MzggcmVsZWFzZTMxLW1haW50Cis4MTI3NSBmMGZjZDY5MTg3Y2QyNmQwNzc2Yzk0NDljYmJlMmNmMjJiOWM0YWVjIGxlZ2FjeS10cnVuaworODEyNzYgZGVjODg3MDJjOWJjNzM2ZDMzNDVhOGE3MTQwYTlhNjM0ZWJhNGNiNyBweTNrCis4MTI3NyAxNzU3YmJlYmY3NWFkYjE2MWYwZGNhYjkyOThjYzBjNjBjOTM0MzhmIHJlbGVhc2UyNi1tYWludAorODEyNzggODJkYmY5M2Y3NjBmNGU4ODAxZWI2NWZiYWQyMzNlMDkxOTM3Mjk1MiByZWxlYXNlMzEtbWFpbnQKKzgxMjc5IGU3NDY2ODU0NDVkZWViMTAzNWI5YjU1OGNlZWMwNTc5ZjZhZDkzNTggbGVnYWN5LXRydW5rCis4MTI4MCA2NjY2MDdjZTRhZGE5ZGJjYjk0ZjVkY2QyYjcxZmUwMzVmNmMxZDVjIHJlbGVhc2UyNi1tYWludAorODEyODEgNDU1ZDNmYmIxNGVjYjc1YWNjMjZkZTA0YzM4ODBlODU2YTQ0MDkxOSBweTNrCis4MTI4MiA4NzFiZmExZmRhNTkwZDEyYjczYzVmZjdmYzNlYjkyOGY3MGFiZTU1IHJlbGVhc2UzMS1tYWludAorODEyODMgZjFlMzdhOGZiMmQxMmI4OTlhNmEwMTY0MGI1NmExNWZlY2U5ZjMyMyBweTNrCis4MTI4NCAxZTUyYmVkODc3YzE3N2Y2NDU4ODNiMDZiMWYyM2MwOWZjMWVmYmNkIHJlbGVhc2UzMS1tYWludAorODEyODUgOGRhMDg4ZDZhOTViMmYxZWQ3OGUzYzkzNWViNzE0NTYwYmY2MTJhYyBsZWdhY3ktdHJ1bmsKKzgxMjg2IDZiMzg5MjZhNWZjZGM0ZWI3YWE3MzdlMGZiZWY5MmQ5NzYwZTRhZjkgbGVnYWN5LXRydW5rCis4MTI4NyA4MGRjNTcwMTc3YzY2OGE2MmIxMjYyNTY5MTc2MzE1ZWFkZmQ4ZjNlIHJlbGVhc2UyNi1tYWludAorODEyODggMTk3NTExYzRiNzVhOTdhM2MwNGE2N2IxYWU5NDNmNzc2NjgyMjFjMiBweTNrCis4MTI4OSBlZDBhNjlkNjZjMTEzNTA4Yjc2ZmZmMGI1YTMyNDg5ZmM1ZmI5OWI4IHJlbGVhc2UzMS1tYWludAorODEyOTAgYmVjODE4YTc2OTAyYTJmNGViZmVjODU1MmU5M2JjYmM5M2E4MzNhZiBweTNrCis4MTI5MSBjZjc0ZWMzZTFmODI2ODI4MzJjZWU2ZjIxNDVmMmYxMTkyZmY0OTUwIHB5M2sKKzgxMjkyIDYxM2I2M2Y1OGJlYmYyOTg0Y2ZlZTJkNDkxZTNkNGMzMThmM2E4ZmMgcHkzaworODEyOTMgODU5YjgzOGVjZjNkYjY1ZWZjYjdkZDkxZTc3NjdjYmUxODRhYTQ5MCBweTNrLWppdAorODEyOTQgZDdkODA0NmY3YTUyZmY2NDQ5YzRiOGJlNDc1NjFmZWRjZjZjZmJlZiBsZWdhY3ktdHJ1bmsKKzgxMjk1IGU4ZWRhYmQ1NDE5YjNlMzQ2Yjc5NTc0OGFhYjcyN2Q1ZjY3ZGFjNWIgc3Nsb3B0cy00ODcwCis4MTI5NiBiNzVlNjJmY2FlODFhNzI3M2IxZDcyZWU2MDMyYjdmZDlhOTVhZmQ5IHNzbG9wdHMtNDg3MAorODEyOTcgMjg1OTBkNWI2YjhiMDg2N2U4NTg2NjgzZGNhMDIwNjMzOGI3YjAzMyBzc2xvcHRzLTQ4NzAKKzgxMjk4IGYyNDcxNDZmOGE5NTllZmM3MjI5YzcwYzE0ZWI0N2M3Zjc1ZjVjZTQgcmVsZWFzZTI2LW1haW50Cis4MTI5OSAyNmQ3NjA1MjAzZGNjMjA3MzA5Yzg2NTMwY2M3OTQ2Y2JmZThhYjVmIHB5M2sKKzgxMzAwIDE1ZmE1OWZjMTQ5ZGJjY2E5OWU0NjA0Y2ZjNWJmOWM1MjU1ZDQ1NzkgcmVsZWFzZTMxLW1haW50Cis4MTMwMSA1ZjMxMzUwYWZiNjA5OGFkN2I1YzZiM2U3YjVmMzgzMjI1NDA1YTE2IHNzbG9wdHMtNDg3MAorODEzMDIgNjM5MTA1NWVmY2EwZGI5NjBjZTA2YzA2ZDhjNGJmYzU0MjUzM2MwZCByZWxlYXNlMjYtbWFpbnQKKzgxMzAzIDEwNjVkMWM1MzMwOWFlYzRjZWFkNTZmMjk1ZmQ1Y2I4ZjRhZGFlNTAgcmVsZWFzZTI2LW1haW50Cis4MTMwNCBmMTRmNDJmMzI5MjJlM2VjOTlmODczNjkxODMwMDY4OGZmMDYwNjBkIHJlbGVhc2UyNi1tYWludAorODEzMDUgYzllZDBjM2Y2ZGNkZDdiMWRmNjRlZjY1OWU2OWQ2NzhmMjhiOGNhOCByZWxlYXNlMjYtbWFpbnQKKzgxMzA2IGM5OWZjYTAzZmEzNzhlMjdlZDg3NDc0YjU5MDkzMDk5OTJiYzBiZWYgcmVsZWFzZTI2LW1haW50Cis4MTMwNyAxOGY2MmE3YTdkYmE4MjM3YjZiZWI1ZDQwOWVhMjM4NDJlNTBjNWIwIHJlbGVhc2UyNi1tYWludAorODEzMDggZjc2ZjgxMDQ0ZDQwODNkNTNhOGY5ZmFjNjljODI0YzA4MDBkZDQ2MSByZWxlYXNlMjYtbWFpbnQKKzgxMzA5IGVmNzJmMTU4NjRhOTk4ZjUyN2NhZjQ3ZWI5N2ZjYmNhYTg3M2JlMDYgcmVsZWFzZTI2LW1haW50Cis4MTMxMCAwNTI2OTU3M2QyMTcyZjBjNDQ1NWY2NzdjYWRiNGY1Mjk4YjA2NDQwIHJlbGVhc2UyNi1tYWludAorODEzMTEgYzFjMWU4YzhkYzljZDFhZDc0NzJmOWY5ZTdmNGYwMTZmMTM2NzllZSByZWxlYXNlMjYtbWFpbnQKKzgxMzEyIDY4NDFiMmExNmE1MWQ1YTU5NTIzMWQ5YTAwZmQzNWYwMTIyZjQwNDEgcmVsZWFzZTI2LW1haW50Cis4MTMxMyBjZTM4MDliODM0NzM2ODA5YzViOGZlOWJiNjA2YTBlOGRkYTIwYWQyIHJlbGVhc2UyNi1tYWludAorODEzMTQgN2ZjNDhhZDE2MDg3ZWYzY2MyNjA1ODE1ODE4OTUyY2Q3MDg2MTg5NCBweTNrCis4MTMxNSA3ZjE1YTYwMDYxNjI3ZGY5YmM1NzE0YzAyOTljZDU0OTM0ZDYzNDRkIHJlbGVhc2UyNi1tYWludAorODEzMTYgYWE3NzdkNDNmMjJmNWU5NDYyYjVlYjlkMzM2NTMwOGVjYTk2ZTZiNSByZWxlYXNlMjYtbWFpbnQKKzgxMzE3IGM4ZDE2NmVjNTQzMDFkZjM3NDJlZThkMzg1ODdiYjBiNjBhMzQ3NDggcmVsZWFzZTI2LW1haW50Cis4MTMxOCA3NWQ3Mzk2NTU2ZmRlODMzMDE3YTEwNjJhZWUyOGZlY2VlYjM4MWQzIGxlZ2FjeS10cnVuaworODEzMTkgOTQyYjNjMTY4ZjE1ZGFmNThiNjQ2YjQ4OWUxNTE4MGQwY2UwMGMyNSBweTNrCis4MTMyMCAxNTA0Y2M1YTE1YTFjNGUzM2Y3YzNiYzAwMzhlYjgxODUzY2VhNjc2IHB5M2sKKzgxMzIxIDg0Njg2NmFhMGViNjZmZjdhZjljZDg2ZDY5YjRmNWE1YmRlMWU3ZTkgcHkzaworODEzMjIgOTk5OTk3NGZmNTA2OTViZDVmMDNmZTg1Yjk2M2NjNzcyMjE0NjAwZSBweTNrCis4MTMyMyA3YmE4NTFkMWI0NmVjNGY0MGQwMGUxYzdjODU3ZjdhNzljNTIyNjA0IHB5M2sKKzgxMzI0IDg5Y2UyZjZkNGIyNDE3NGJmYTJjZGE2MjM1OWNiYzBkYjM1OTdlMTYgcHkzaworODEzMjUgN2RjZDFhMjY5Nzk3YmIwZGEzZjBlZGNmMzdlMzIyNWZhOWEwODhjMSBweTNrCis4MTMyNiA4MWQ3OGRkMjczYjA5ZjBkNjgzNzg4ODY5YzY2ZWNiN2UyOTIxMmRkIHJlbGVhc2UzMS1tYWludAorODEzMjcgOGI3NjZlYzY5Njg1ZDRmNmNmYTM5ZDkzZmE3NWNlYTI2YmEyOTdkOCByZWxlYXNlMjYtbWFpbnQKKzgxMzI4IDlhMjMzMDlkZmFhMzE5OTQxNWNmNmY3MGQ1NDM0ZjZiZWVlYzRlZTAgcmVsZWFzZTI2LW1haW50Cis4MTMyOSBiNmQyYTI3YzNlM2I0NDJlNDgyNzI1Yjg1NTljZjMzMDVjZDhmYjM4IHJlbGVhc2UyNi1tYWludAorODEzMzAgMDgzZjY4NmFhZjE1YTRkOTk1NmViN2VlZmJlY2Q4NDQ4MmM5MWY3YSByZWxlYXNlMjYtbWFpbnQKKzgxMzMxIGYzN2VjZjRhOGZmMTBhZThlMDNjZGZlYTFiYjVkYTQ2YzllODkyNGUgcmVsZWFzZTI2LW1haW50Cis4MTMzMiA3N2ViMWZiNTljNzgwN2VhOGRlZmVjMGE5ZGZjNzBkNjczMGY4Yzg0IHJlbGVhc2UyNi1tYWludAorODEzMzMgM2QwYWU4ZWYwMDQ0NjI4Y2UzOWZlNTdhOGViYjY0OWZhYTlkMGJlZSByZWxlYXNlMjYtbWFpbnQKKzgxMzM0IDI4YmJkMzFjYmNhYjZkNjk2MTkwMjIzYzMzZDM5MzcxNTk3NDIwM2EgcmVsZWFzZTI2LW1haW50Cis4MTMzNSBmNWFhZTg1YjY4NjRlNjk0ZjVhMDU1Y2VlMzBjYzhjNTExMGI0ZDVmIHJlbGVhc2UyNi1tYWludAorODEzMzYgN2YxMGFlY2IwNjMyMmIzM2JiMjVlMGY1MDE4ZDRiZjZhOGJkZmE3NyByZWxlYXNlMjYtbWFpbnQKKzgxMzM3IGFlNGM5MzFhNzFmMDY5Njk1NzcyNjJhOGE1NThmZTkxMmExNWQ1NjYgcmVsZWFzZTI2LW1haW50Cis4MTMzOCAxYTM0ZGUwNDI5NzI4NzA3YmZiMGU4MGJlYzI1ZWMwNDQwNzdmODY5IHJlbGVhc2UyNi1tYWludAorODEzMzkgZDFmMjY1Y2VhNzBiNzQzNmE5YzA1OGNmYWUwYTMyOGUzM2VkZTNjOCByZWxlYXNlMjYtbWFpbnQKKzgxMzQwIGE3MmJjNTRlYzcxZGY4NjFiYWNjMTM4OTUwMGJlY2UwYmM3M2QyYzQgcmVsZWFzZTI2LW1haW50Cis4MTM0MSA2YWUwNzMzMjZlN2ZiODI0NWY4MTQ0OThkZTFkMGMxMDlmNjE0NTQ5IHJlbGVhc2UyNi1tYWludAorODEzNDIgZjQ5MGQxNTgxOThhZGVlZTE1MmJmOGQyOWI0YWM4NjhhMmY5OGJhNSByZWxlYXNlMjYtbWFpbnQKKzgxMzQzIGJmNGU4M2RlNGVhNTI5OGE4ZWU4MTg0NTllNmRjY2UzOTE0ZjM5MzMgcmVsZWFzZTI2LW1haW50Cis4MTM0NCAwNzQxMGFlZTdmYzBlYWY4YzViNTk3OWY4NTY3MTg5MzExZGQyNDEwIHJlbGVhc2UyNi1tYWludAorODEzNDUgMzRlOGJmZWIwYjk4NzlkMTFiN2YzMGZlNmYxMTFhOWQ1MWNlYTlhNyByZWxlYXNlMjYtbWFpbnQKKzgxMzQ2IDU5MDZhMGZjYzgyNmI1MWYyOGRjMzNlZTcyZmE5OGZmMmVhY2U2MWUgcHkzay1jZGVjaW1hbAorODEzNDcgOGY2ZTY3ZjY5M2ZmNWUzNmM3ZTg0ODE1NzY1MTY2NzU1MDMzZDFlNSBweTNrLWNkZWNpbWFsCis4MTM0OCA2NWI1NjFmMzk2NzkzYzRkMDlhMTE2ZDYxNzE2MTQ5MjhhNTZhNjc3IHB5M2stY2RlY2ltYWwKKzgxMzQ5IGUwMjNhZDNlMmNhY2NiMjUyNzlhNDRjMWY5MzFhMDE5YzA3NjhlNjcgcHkzay1jZGVjaW1hbAorODEzNTAgOGM2Zjk4MTY5OWU4MjVhYzBlYTVjYmRhMDcxZWVkYzhkYmNiM2Y1OCBsZWdhY3ktdHJ1bmsKKzgxMzUxIDY4NTI1ZWYzNmI2NjhjMzU3ZTA1ZjhmNmFhMmQwODFmNDllM2I2YzQgcmVsZWFzZTI2LW1haW50Cis4MTM1MiA0YmZiMDBjZTEyYjg1OWU5NWQxNDI1ZDQ2ZDVlMWQwMzU0ZmFlM2U2IHB5M2sKKzgxMzUzIDQ5ZDdkZTlkN2IxYWEwMTgyNWMyMDAzYzI2OTczNjY2MjI4NWI4NTIgcmVsZWFzZTMxLW1haW50Cis4MTM1NCAyMGEzNTZlZWIwZjcwMTAzZGViMTUxYjRkMzNkMjVhNGFiM2ViMGQ3IGxlZ2FjeS10cnVuaworODEzNTUgMjFiYjkzZTA5ODhjNDFiODFiMDM1OGJkMDc3YjBjNTdhYmE1YTcyYyByZWxlYXNlMjYtbWFpbnQKKzgxMzU2IDViZjRhODYzM2M1OGI4NTViMGY4YzczZTM3ZGU3NjZlNTBhNDc3NzMgcHkzaworODEzNTcgZWFlYTgwOGI3ZmI4NjcxYTg4NGQxZmUyZGQxN2EyY2ZjZmY4YzQyYyByZWxlYXNlMzEtbWFpbnQKKzgxMzU4IGI3ZjcxZjYwNDM3YjU5NmM1NWFkYWQwMGMyOGEzYTRiMmM2MDA5ODEgcHkzaworODEzNTkgMGNhZmMyMGU1NjM3NjM0NjVjYzA2ZGYxYTBlNGQ3ZTNkNjJmNmU5OSBweTNrCis4MTM2MCBlNjhlMDI4ZDA5MWU4MzU0MGQxOTQwZTk0MDE1NDViZTUxOWVhODkxIHB5M2sKKzgxMzYxIGU1ZmRlN2FkMWI3Y2M2OTQwMjM4MzA2NmI2OTRmYzUwMmE4NmNlMGYgcHkzaworODEzNjIgY2NkYjA5Zjc5YTAzODU1NWNhZTRlMTkxNDJkNzYxZmQwODI2M2MxNyByZWxlYXNlMzEtbWFpbnQKKzgxMzYzIGJhNTA4ODhjYzAzOTE0ZmQwMDE0MDEyODVkOGRkMDg4YzVhMTcyNjkgcmVsZWFzZTMxLW1haW50Cis4MTM2NCBkZWVkNWZjZTgyZDYwNjlmMDUxYWQxNzM1ZjJjNmFiZDM4YzczMmFlIHB5M2sKKzgxMzY1IGMxYzc3Njc0ZGJjOGMyOWQxN2RkYTg5ZDkxM2Y1ZWIxYmI4Y2EyNzcgcHkzaworODEzNjYgMjQ4YTkxNWUzNWVmMDE2MWRiN2UyYmMxYzhlYjNjNWQ0ZWMwNjRiNiBweTNrCis4MTM2NyAyM2VlOGFhODU3ZWUzNmI5OTdkMGFmYzdjYWEyYTg2YjRmMmFkZDllIHB5M2sKKzgxMzY4IDgyYTQ0ODNkOWM0YTk0MjdhMmY0MjQ1ZDYwODFkZjIyODFhNWI0M2UgcHkzaworODEzNjkgMWYzZTc4MTI2MTJiOGJhMTI2YWUyYThlYmNlMWJmN2MyNTQxN2IzMCByZWxlYXNlMzEtbWFpbnQKKzgxMzcwIDc0M2MyMDdkYzJiNDIwNTY5NjliOGY1ZGNlYmE5YmMxYTFhMjQ0N2EgcHkzaworODEzNzEgMDIxZjVlYzVkMmQ0ZmUzN2QxMGZkZjI1MWEzYjE1YTliMTBlZjM3MyBsZWdhY3ktdHJ1bmsKKzgxMzcyIDE4ZGNkOTAzYzU1ZTE1YjI0NTNkYTg0YzM1M2Q4YTA2NmJiODAwMzQgcHkzaworODEzNzMgZGE5NDE1MDdlZDkzYzQ0YzQwM2M2MTFmMDgwY2Q2Nzc1MzMxOTk1ZCByZWxlYXNlMzEtbWFpbnQKKzgxMzc0IGI4NGY4ZDFhMDUyMmM2ZjkyOTRmZjI3OTAyOGY3ZDhiZjIxN2ZhMDcgcmVsZWFzZTI2LW1haW50Cis4MTM3NSA1MDNhZmM2MmQ2MzJlMTc4Zjg2ZmNiNjExNDE0MDRlMTgwY2I1OWJmIHB5M2sKKzgxMzc2IGZkNzJhZjAwNjBjODU0MGFlY2Q5NTQwYzQ5NDZmMzI3ZTc2NDA5ZTcgcmVsZWFzZTMxLW1haW50Cis4MTM3NyA1ZDZiNzY4OTBmMTdmODgwZmVkZWUwYTAwNGU4MmM2NTA3YzJhM2RkIGxlZ2FjeS10cnVuaworODEzNzggMTI5NDI3YjVlOTE0MWFlOGRjNjI4YzJkMWY1ZjAyMzE3OTZiOTAyMiBweTNrCis4MTM3OSA0ZDgzYmE1ZDBhZjViNDU4MTgwOGYwODEwNWM5Y2Y4YjAxZDYxNDBkIHJlbGVhc2UyNi1tYWludAorODEzODAgNjJjMGU1ZjE0MTM4ZjY5NjEwZjIxYWJlODBmNTk0ZTBkYTVjNGI0MCBsZWdhY3ktdHJ1bmsKKzgxMzgxIDU1ZTIzNjhmNzJmMjc0ZTZlOTMwYWFlNTI0YTJiNWZjZmYwYzdjYjUgcmVsZWFzZTI2LW1haW50Cis4MTM4MiBkOTNiZDUyNTQ3M2M1ZjY4NzgxYmFlMjQ3YmI5NTZjMjE3NTE3YTQ2IHJlbGVhc2UyNi1tYWludAorODEzODMgMzI3MWFmMDM1ZDAxNzhjZGM1NWY5YTliM2Q3ZTlkOTlkNjJjYzgzNCByZWxlYXNlMzEtbWFpbnQKKzgxMzg0IGYyZDNiZjlkYTlhODE1NGE2YmRkMmNjOTQ4OTgwM2UyZGI3YTQ1ZGEgcmVsZWFzZTMxLW1haW50Cis4MTM4NSA2ZmUyNjBiYzA5ODdkYzJjM2NkZWY1ZjA4MGJlMGE3MWI5NDlhOGNiIGxlZ2FjeS10cnVuaworODEzODYgYjNiMjY1ZmJhYWJkZjllYWI0MmM0ZGE2MDQ0MThjMTA3YzlhMmQ4NSByZWxlYXNlMjYtbWFpbnQKKzgxMzg3IDFlNmI0MzVlOGViNmE1MjgxYmVhZDc2MGExNDY2NTkwNjFjYTk1MGEgcHkzaworODEzODggOWRkNTIyZjdjMGRlMjFjY2NiZDE2NGVlZDdkMDI2ZWVhOTMxNzkwYiByZWxlYXNlMzEtbWFpbnQKKzgxMzkwIDdkNGVlMGRjODc2NDQwMTdlZmQ1MzA3NDc5ZWE5MjBjZDJkZDAxZmYgcHkzay1jZGVjaW1hbAorODEzOTEgNGY5ZGIzNWE0MDg2MWRiN2Y3NzU1Mzg1NmQxMTE5YjdhMTZjZTZiZCBweTNrLWNkZWNpbWFsCis4MTM5MiA1ZWU0N2YwYjI2YjAyYTA3YzM3ZGI1NjAwNDUwMGRjYzRjZTU4NDc5IHB5M2sKKzgxMzkzIDIyMjhjMjVjY2UzZTcyZmViMzg2NjhhYzI4ZjVjMGMzMmJlNTVjYjcgcHkzaworODEzOTQgMzcwMzJiMmE1OTJkYjAyMzRhZjE2NjA0YjAwMGQxNjQzODIyMTA2OSByZWxlYXNlMzEtbWFpbnQKKzgxMzk1IDM4NzE5ZjExNjE5YmNkODkxNWY1ZDIyYWQ0OWFlMWUwZWE0ZWIyZWMgcmVsZWFzZTI2LW1haW50Cis4MTM5NiBlM2RhYWMwNjZiOTJlNzhlMmJmMThjZWZmOTRiZmY4Y2ZiYmEwYWYzIHJlbGVhc2UzMS1tYWludAorODEzOTcgZDYwMTZmYTU4ZGY2YjVjZTFmMzdhNTlmNjEzZDk1NzY5ZjQzN2MwZSBweTNrCis4MTM5OCBjMjkxN2FjNWQ1MjZkYzRkM2Y2MmJkNjFkM2FhODA4NTg5NDM5MDgwIGxlZ2FjeS10cnVuaworODEzOTkgM2YwOGQ5OGM4ZmE1ZjA3MTYzMzVjMTZkNDBiZGIzZjMyOTRmZDJjYyByZWxlYXNlMjYtbWFpbnQKKzgxNDAwIDc5NTc2MmI1ZTBkNmU2YjM3ZWRlOGUxYmE3ZmJmOTIzYTBmNmQ0MTUgcHkzaworODE0MDEgOWRiOGM0MTQ5MjFmNzAyNmRkMzRiZTYwOTg4ZDJlOWIzOGQ4NDg4NSByZWxlYXNlMzEtbWFpbnQKKzgxNDAyIGUxOTQwZGRiM2Y1NjVhNjM5NGZhNWQ2YTdjNjFhMTA0MTVlNDBhMDAgbGVnYWN5LXRydW5rCis4MTQwMyA0NDE0OTE1NzJmY2UzYWQ4ZGM5MGUyYjU0OGVjNTg4OGQyYzVjNTVmIHB5M2sKKzgxNDA0IGIwNzJiOWZiMGZkMmRlY2JlMDRmMTNiYjRhYWNiNDJhZDBiOGNiOWYgbGVnYWN5LXRydW5rCis4MTQwNSBmMTM4ZDFiYWNmYzQyODgwNjY0MjAwMTQ5OWJjNzE2ZDMzZGI0MDZiIHJlbGVhc2UyNi1tYWludAorODE0MDYgZGU2MWE2OTcxMmRhZDdjNDVhZmNhM2YyNzJkMWRlZTRmYmMyZmM5OSBweTNrCis4MTQwNyA2Y2EyZTZiM2JmMzE3NzllNmUwNTc2NzA2NjgzOGVmZmRiNjU1MzQzIHJlbGVhc2UzMS1tYWludAorODE0MDggNzM0MTZiMWJiY2Q1YmNhYWZmMjI3YjU2NjU0MTZiNmZiMzIyNzg2ZiByZWxlYXNlMzEtbWFpbnQKKzgxNDA5IDNkNjRkMWFmZTY3NzlhNzMwNGIwZGJkY2U1MmExYmMyMzgyNDg2M2EgcmVsZWFzZTI2LW1haW50Cis4MTQxMCBlMWY0ZmM2M2QyYjNkMmJlNGFmMTdkZjU1NTZiZmFmYjlhNjE3Yzc5IHB5M2sKKzgxNDExIDUwNmU5YmU4NjEzOTM4NGU1ZWRiMDdiMDg0ZjZlZWFlYTBkMGZmYzQgcmVsZWFzZTI2LW1haW50Cis4MTQxMiBlOWEwNDJhMjUxOTcxMzhmNmUyMzA4ZjdmNGJhZjZhNjZjMjIwYjQwIHJlbGVhc2UzMS1tYWludAorODE0MTMgOTQ2Y2M1ZWUyOTUxMTBmMzQ1ZDUzZmY2MmY3Y2Y5ZmVjZjY3NmQyOCByZWxlYXNlMjYtbWFpbnQKKzgxNDE0IDBmMDk2ODI5ZmM5MGI4YjM1ZDkzMzU4NzdjMGY1MDBhZDE4MjgxNDMgbGVnYWN5LXRydW5rCis4MTQxNSBmZjNjNjc2NjEzYWRiMTcwYWY4MGExYTMyNTU2MzExZThjMWFkOWEwIGxlZ2FjeS10cnVuaworODE0MTYgODU0MmI3N2EyOGVhOTY1ODZjMDA4MWQ2NWEzYzRjNTJjODBkYmU3ZSByZWxlYXNlMjYtbWFpbnQKKzgxNDE3IGIwMjUwZmZhMjI2Nzc1ZGVmYjM1ZWRiZTM5MGM4ODdhNzAyYmZlMDYgcHkzaworODE0MTggZmZmMjlkM2U3YTM5MjE1YjE3ZGI4OTczMGE2MTBjZWYwYjY0MTIwZiBweTNrCis4MTQxOSAxYjA0Njc2NjFlZjVhOTBmNDFmODZmNTIwMGEyOGI0ZWM2YjEzNDJmIGxlZ2FjeS10cnVuaworODE0MjAgZmJmYzM1MzY0N2UzYzFiMzVmOGZhMjkxYzUxMzQ1N2UwZjYwNWQzMyByZWxlYXNlMjYtbWFpbnQKKzgxNDIxIDI5YjU2YzM4YTAzM2RjZGExMGM3NjFlZTRjYjEzMWQzM2Q4OTE5YWUgcHkzaworODE0MjIgYWJjM2Y1YTFjYzVlOGNhY2FkMzVkMTViYTVjZTNjZWM3M2E1YzZjYSByZWxlYXNlMzEtbWFpbnQKKzgxNDIzIDA2YjA5Mzc2Y2M1YjA0MmNlMGQxNjFiMzAzNDRhNWQ4Y2MzNGU1NTMgcmVsZWFzZTMxLW1haW50Cis4MTQyNCBlY2E5OGJkYzhhMTRmNDBiMjMyYTM4NGUyZTE5YmI5ZDk1MmE3NmUwIHB5M2sKKzgxNDI1IDIzZTM4MTkyYWY5NjQ4ODNmZGQ2ZTFiNDZjOTYyNDM0YTZlZDY1ODggcmVsZWFzZTI2LW1haW50Cis4MTQyNiAzMTYzZGEyMmQ1ODUwMmFjYzdkY2IzMmMwODVkZTM4MDMwMzYzOTRiIHJlbGVhc2UzMS1tYWludAorODE0MjcgOGIyZDlkMTAxYzg1YTQ5NjZmYjI5MzVhNGU3MWE5OWUwOTI0Njg0ZSBweTNrCis4MTQyOCA2OTg1YzZiOWQ5NzhlNTcxM2EzNTAxOTAwOTAxNGRhYTE2ZjE2M2JkIGxlZ2FjeS10cnVuaworODE0MjkgYjE0ZjM5ZDBmMjBhMmRhZTU0ZjQ5MzdhMzM2YTJhNjI3NDY4NGVkYSBsZWdhY3ktdHJ1bmsKKzgxNDMwIDZhMDhlZWI0YjMyMjM5Mjk3NTRhZTdlZjUwNzFkNmJjZjJjMWZjZjYgcmVsZWFzZTMxLW1haW50Cis4MTQzMSBmZWJkOWMyODhlNzZmODBiYzkzYWY4MjE5N2Q4ZDQxM2NjNTcxYzNjIGxlZ2FjeS10cnVuaworODE0MzIgZjA1ZDI5OTY3NzZlMGVmNGYzNjgzZmUyMWZmYTU0YmNjYmM1MTczMyBsZWdhY3ktdHJ1bmsKKzgxNDMzIDExZDU4NTE2MDMzZjdkNTQzMjllMGE2ZTYxMjhkMWIyZTJmNTRjZjQgbGVnYWN5LXRydW5rCis4MTQzNCA1ZDY3NDk3MGFjZDlhMDY4Y2I3MWM1MmI3YjRhMjBlZjhiYmUzY2ZhIHJlbGVhc2UyNi1tYWludAorODE0MzUgNDk1ZWJlMDRkNDc5OGNiYzBmNjg2YWRjODQ3ODI1ZDkyMGNjY2M1MyBweTNrCis4MTQzNiA2ZWY3Y2ZiMWY4ZjQ4MzFjMGIwMDVlYzMyZDUyYjZkZTQ0YzhjODgwIHJlbGVhc2UzMS1tYWludAorODE0MzcgOGM4ZDQwY2U1Y2ExNWE0NDRjZmY5YzZlMTMxNWQ2MGY4YmM2N2UwMyBsZWdhY3ktdHJ1bmsKKzgxNDM4IGYzODk1NjNmZjM3MjNlNjI2NWNiZjA1ZDc4MzdkM2VhOTE1NDE4NDkgcHkzaworODE0MzkgZTIwZWFlM2I1ZmU0NTQwYTc2YTMwNGNhZTlkNTFlYTQ1Yzk5N2E4YyByZWxlYXNlMjYtbWFpbnQKKzgxNDQwIGMwZGJmYjZhN2Q1NjczMDNjN2JiZTM4YTQ3ZDlmZTFiNTQyNWExMWIgbGVnYWN5LXRydW5rCis4MTQ0MSAzYTZlOTYzN2MzM2RkOWJlMzA3NTk5MWQ1ZmUzZjc2N2NhOWFkY2NiIHJlbGVhc2UyNi1tYWludAorODE0NDIgYTljYWQ1YWU0MDVkOGQyYTk1ZjhjYWExY2FjMzlmOTViMWYyOTUwZCBweTNrCis4MTQ0MyA3MmZhMDBhYzM4YmUzZTBkZDg2YWU3ODYwODM3NmE5MmNkOGRhMWE2IGxlZ2FjeS10cnVuaworODE0NDQgNTI0OTVjY2Y2MWNjODhkZWU3MzVmMmJjMTVkNjc0MWZmMGNjM2E3YiByZWxlYXNlMzEtbWFpbnQKKzgxNDQ1IDk1NDEzZWJkNDA4MTM2Mzg4M2UyNWIyNDFkZjg0NDk1YjA3MGE5YjIgcmVsZWFzZTI2LW1haW50Cis4MTQ0NiAyZDBiMDk4ZjZjYjdmOTg3MDQyN2FjZTkzMzQ4MzUzMTc2ZDUxN2Y0IHB5M2sKKzgxNDQ3IDE5NGY0ODhiOGFkMWE3N2I0NWViODljYzRlOGFjODE0YjBkY2I1ZTIgcmVsZWFzZTMxLW1haW50Cis4MTQ0OCAxYWNjYTljNDU1NjJiOGVmNDdhZjhjYWY2MDY0ZWVjNjdjMTM2OWMxIHJlbGVhc2UzMS1tYWludAorODE0NTAgMGUyNmNiOTc2YzRkOTBiYmRkMzhhNzkyMjk3NDY0NzkwYjZkZGI0MyBsZWdhY3ktdHJ1bmsKKzgxNDUxIDBmNTI4ZWUxNWVmNzIwNjBiNzEzNjExY2E0NjYzMWQ3NDg4OTEzYWMgcmVsZWFzZTI2LW1haW50Cis4MTQ1MiAwMjJjOTNlZDFiOGU4ZjRiZDY4YTQ0ZjY3ZGE4MjM3OTEyMzk0OGZlIHB5M2sKKzgxNDUzIDU1ZTgxOWNiNTM2MTAzNTkyNWM4MmQ2NGYzNjc0NGFhOTQ0N2E3NDQgcmVsZWFzZTMxLW1haW50Cis4MTQ1NCBjNmRmYzNkZDJkNWRmNGExZmIzMWQ0YTk5ZjRmMWFiMDYxZDQzMTY3IGxlZ2FjeS10cnVuaworODE0NTUgMmVhOTA5MjBjYzEwZDNhMTk4MWQzY2I0MWU2NDRiYTczMDhhMzliNSBweTNrCis4MTQ1NiAxNGQyM2JkZGY3OTMzMzRhZTY5ZmY5MzEzMzU5MGViN2Q0MGU5NDRiIHJlbGVhc2UyNi1tYWludAorODE0NTcgODE1YmEzODcyZjg1MDQ3ODY4ODBmNTIwZTIwMGQxOTBiMmYzMDhjNCBweTNrCis4MTQ1OCA4MGJlNzIxODc2N2I3MTJiNzYwNmM2MmJmYWVlMGNhYWU4ZmY3NWE3IHB5M2staml0Cis4MTQ1OSA5OWU5ZWQyMTRhYWRlNmRjMDNhYjQzMjljY2EzM2EyMGY5N2NmNjUzIGxlZ2FjeS10cnVuaworODE0NjAgMmEzODk3MzRkNTcwMjBiOTI2MGZlYTc2NWE3ZGU5Y2IzZmY0YTFhYSByZWxlYXNlMjYtbWFpbnQKKzgxNDYxIDFhZjI3MzUwZjQxYmM2ZmNhN2U1YTQ2ZjA0NjkwMDMzNTVlMTk1ZDkgcHkzaworODE0NjIgODQ2ZGJjZjk3MGFiZWE1Yzg1ZTMzNzQ5MzgxNjZmZjkwNTA2OTFkZCByZWxlYXNlMzEtbWFpbnQKKzgxNDYzIGI3MzlkMzAzNGVjNzUxMjU4NjY1MTQ5YTgxNmQ2Y2VmMTUzMjk4MmQgbGVnYWN5LXRydW5rCis4MTQ2NCA5YTAyMzljMGVhM2I0MWNkZGI5ZDBjOTJlZTQwMmJjN2NmYmVjZDFjIHJlbGVhc2UyNi1tYWludAorODE0NjUgMGE2NDdkMDhlNjg1ZmFmMGI5Nzc4NjBjNzNkNmUyZmU5ZGEzNWEwOSBsZWdhY3ktdHJ1bmsKKzgxNDY2IGYyMDVkNjYwNTZmODlkZDljZmY2NTI5MjM5NDJmMzExNjkxMjM1NmMgbGVnYWN5LXRydW5rCis4MTQ2NyA3NTVhMWJjNTYzMjZlZTA1YTdiM2Q1MGViNGMyODNlZjQxNTY4Nzk4IHJlbGVhc2UyNi1tYWludAorODE0NjggZDZhODg5Njk3MTdmNTViYzhkZmY3MGM5MGJlYmQ3YjhkOTMzM2U3MyBsZWdhY3ktdHJ1bmsKKzgxNDY5IDYzYjU3OGQ4MzNlZTdhZDkzZTI4YTNmN2M1NzhhOTZkYjE4ZmM3M2MgcmVsZWFzZTI2LW1haW50Cis4MTQ3MCAzNTZhNmZjOWU1Nzg1YzNmNjc2NTQ2MmIxOTk0ZjY3MzAzMzFiNTk4IHB5M2sKKzgxNDcxIGJmODJjMWQwNGUwNmNkYWJmY2RiOTIyODE1YjE0YmQ0MTJiZWJkMTkgbGVnYWN5LXRydW5rCis4MTQ3MiA5NzI2YzIxNzM4ODU4MmUxYWJiZWU2MTZiMTNhZDMwMGMzMzMzYjdmIGxlZ2FjeS10cnVuaworODE0NzMgYWIwODJlMzg3ZGQ1Y2UyOTU4M2VjZjE2NzVmMmM5NTBjYjM3YWVjOCByZWxlYXNlMjYtbWFpbnQKKzgxNDc0IDgzMGNkODliMDFlOGYwNGY1ZTEyM2VmZWI2NzM5MmM2NDQ0MWY3NDUgcHkzaworODE0NzUgY2Q0OTM2NjkxMTYzZmRjMjlhNDQ0ZWFmMjQ0NWJhM2Q1NGU3ZjI5ZiByZWxlYXNlMzEtbWFpbnQKKzgxNDc2IDZmZWUyNmM4OWY2ZTRiMmE3NjI5MDY2ZTMwNDkzNzRjODZhZWRlNTIgcHkzaworODE0NzcgNmRjOWVjODg1NDYzOTFjNzMxODE4YWJjNjdlNzFlN2Q2MTEwMDE5MCByZWxlYXNlMjYtbWFpbnQKKzgxNDc5IGVlNzZmMGEwNjVjMjRjOWZjYzI5ZDRlYTNkMmU3OTE1YmQ5Yjc4NDcgbGVnYWN5LXRydW5rCis4MTQ4MCAxZTA2YTZjMzEyMzQxYTMxZmVkZjg2YTcwMmJmNGYzODg5MTQyZmM1IHJlbGVhc2UzMS1tYWludAorODE0ODEgNjkyMDdmODAxYjMxNjY0NTQzYmE0OTFiNmFjZmJmMDEyYmI3OWEzMyBweTNrCis4MTQ4MiA0ZTQ5NTI2MzYxMTM0NWI3ODQwZjFlYWI5ZTJiYzQ3YjM0ZjViN2NjIHJlbGVhc2UyNi1tYWludAorODE0ODMgNTRiNTFhYmI2OTUxMjRkY2U3MTI2NDBmMDc5YmQwOTcyNzdkOGIxYiByZWxlYXNlMzEtbWFpbnQKKzgxNDg0IDFlOGM5MjMxNjQ2MzQ3NGU2YWJhNWY1NjY3M2QxODIzNTM1YTNiYzQgbGVnYWN5LXRydW5rCis4MTQ4NSBiMGRlZTMyYTFjNmIwOTVkZmFhOTM3YTk3M2QzOGI2Mzc0YTA0OGQyIHB5M2sKKzgxNDg2IDBiYzhmZmU2YmE5YWM4NWRmZjg1ZTEyMmUyOGQ0NzVkNGIxNDNlNGUgcHkzaworODE0ODcgYTBhNmU4YmZhYWY3MmEwOTM5MWE1MThjMmJkZDA3ZGNhOGU1NmM1ZSByZWxlYXNlMjYtbWFpbnQKKzgxNDg4IGRjYTNjYjE5ZGJkZDQ3MTI1YTdhYTlhMDYyMmE3ZDUzNDU2N2UyMDYgcmVsZWFzZTI2LW1haW50Cis4MTQ4OSAyMWZhMDlmMjUwZTMwMDZjZGMwYmM1Mjg1OWRkNTMzYjAxNWU1NzU5IGxlZ2FjeS10cnVuaworODE0OTAgNDBjYWQ3NTlhMzU1NDc1NWNkZTc5ODhmZGUwMTUxNjNiOTUwOWYxYSBsZWdhY3ktdHJ1bmsKKzgxNDkxIDc3NTA1NzljMzc1ZGExZDkyODg5NDY4YzA3MGViYWYyMGNhMjMzMTggcHkzaworODE0OTIgZTY0ZWExNjE5ODIwYzBiOWEzZmQ1NTBlNDkxNTkxYzFjNDg2ZTMyNiBsZWdhY3ktdHJ1bmsKKzgxNDkzIDAzNjAxN2YyZTc0YzZhNDZlNDllMjZiNzZlMTM4MDNlNDg0ZDExYzkgcHkzaworODE0OTQgMmYyNGEyZWY3MzMxYzYyZWRmMTYwOTI1MjIxZDM0MTNjNzVjYjMyNiByZWxlYXNlMjYtbWFpbnQKKzgxNDk1IDhhZDYxNzgwNTM1ZWZiNGFkZjg0MGY3NzdkZjkwNjg4N2QzYjIyZWIgcHkzaworODE0OTggYjAzOGZkYTU5M2Y2ZDU4ZTFlOTUzNjVmMWU5ZGQwYzNkMzVhMjZjMCBweTNrCis4MTQ5OSBjNTZmYjYzYzY0OGY0OTgzMjY5NGM0MTE0OTdkY2NlMmY2YmJjNDFkIGxlZ2FjeS10cnVuaworODE1MDAgZWJkYTY4MDNmOGQ1YzNlMWE3NjdlY2NlMTExY2Y1MGYzMzhmNTZkMiBsZWdhY3ktdHJ1bmsKKzgxNTAxIDkwZDYzMTQ2ODRkNDNiZTQ1ZTU5YjJiM2U4YjYwNzQxZjkyNjlhNWUgbGVnYWN5LXRydW5rCis4MTUwMiBlM2I1MzM4YmUwNTg4OTFiZDk1MmZmZGY2NzkyMTY2YzUyODQyMjI0IGxlZ2FjeS10cnVuaworODE1MDMgNGJlMjFhMDhkZDcwNzE2ZTY4Y2M2NDM2NWNmZjNlZTVkM2E4MzZjOCByZWxlYXNlMjYtbWFpbnQKKzgxNTA0IGJmMDRlYWYxYWY3NDhhODNiZDc0MmVmYjA0OTM0MmJhZGY5MmE5OTggcHkzaworODE1MDUgNjE0NDc2MGU4MzUwZDRjM2IwODdkOWYxNjM4ZTUzMzMwNjE0ODNlZCByZWxlYXNlMzEtbWFpbnQKKzgxNTA2IDU4NDkxOTExMTgyY2UxM2MyMTA3YTk4OTdmNTdjMDNiMzM5M2E4MTAgbGVnYWN5LXRydW5rCis4MTUwOCBmOTAzNjhjODdiMzNlNjg1MjllYTEwYmZjNzE3YzRmNGE0ZDBmMmI1IHB5M2staml0Cis4MTUwOSBhOGVhYjY3MDMyNjY2NGNiYWE4Y2RiMTgzNDQ3YThmMWRmZWZlY2IzIGxlZ2FjeS10cnVuaworODE1MTAgNjkzZTJiZWY0ZWUzYmM4MjA0YjM1ZDc3MzdlZTc0YmY3MmYzYzFjMyByZWxlYXNlMjYtbWFpbnQKKzgxNTExIDdmNDFkNzVhZDQzNWQyZDgzNmRmYzdjOGRhMGQxYzFkN2UzNDYzYWMgcHkzaworODE1MTIgYjczYmViZGZlNTI1OWMyYWI3YzM5YThkNzczNTNiM2ExMGM3ZjE2YiBsZWdhY3ktdHJ1bmsKKzgxNTEzIDcwMzI4N2E5OTkzOTE3MGZjMDMxMmMzMjdmYjcyNmMzYzYxOGVjYjUgcHkzaworODE1MTQgNGUwMDkxNGVjNDQ3YmJiZmY1NzU4NDFiMDFmNTBlNWJlZGJlZTlhMiBweTNrCis4MTUxNSA1YmM0ZmNmMDQxNDNkNmM1ZDI5OTI0YjNkYWI0NGU4NDA5NDg2ZmUyIHJlbGVhc2UzMS1tYWludAorODE1MTYgY2UyNjE3MjNiMzU2MmJhYmE4ZDI4MmI0NWFhZGU4ZTlmYzUxZmJkZSBsZWdhY3ktdHJ1bmsKKzgxNTE3IDc4MTliYTc3ZTQ1YzAwMDYzYzZhZTMwOThkMjcxMTNjNGMyMzU0ZDIgbGVnYWN5LXRydW5rCis4MTUxOCAyMjk3Y2Q1N2Q5NDVmMmZhOWM0YjY4NzliMzhjMWM3NjA0YzM5ZTk4IGxlZ2FjeS10cnVuaworODE1MTkgMjJjYWRmMjY0YWU1MjE3ZjIzOWU0ZWIzOTZkMzNjYWU2ODZiYWNjOCBweTNrCis4MTUyMCAxMzIxMmQ3NGNlMDA4ZTkwODRlOWNmMTlmMzA0NjI5ZTlhZmFjNzE1IHJlbGVhc2UyNi1tYWludAorODE1MjEgNTRiNDg4Y2JkMzdlMzkxNDFhNmZhMTY4MzBjMzVhNjQ5YmE1Y2I0ZiBsZWdhY3ktdHJ1bmsKKzgxNTIyIDc2MWFjOTcwM2E5NmMxNDFmMTczMzBhMTI0ODg4ODVlMzRhMmUyYzYgcHkzaworODE1MjMgZThhOTM5M2EwNzQ4ZDVkNTA0MjkwZTBkNjk5MjQ0YTIwNjU4ZDQ2NSByZWxlYXNlMjYtbWFpbnQKKzgxNTI0IGQwOWM5YTkzN2UxMGJmNmE3MTJmYTljYThmMmEwZGE5ZTQ3MjkyYmMgcmVsZWFzZTMxLW1haW50Cis4MTUyNSA4YWMzZDUyNzc0NWM0ZTNhYTdkODk2ZjkxMTYwYTE5ZWNkZjE4OTEwIGxlZ2FjeS10cnVuaworODE1MjYgNDcwODAwODBhYjYxOWI1NzEyNDk4MDI4NTFhYWQyYWIzYTM1OGNkMCBweTNrCis4MTUyNyA0NGY0MjIyZDkxYmQ3MGYxZDA4OTFkNzEzYWY1Y2M5NTAyYTE4NjdhIGxlZ2FjeS10cnVuaworODE1MjggNmRmZjNkOTIxMmE4NjVjMjEyODNhMTllN2JjZDFhMDdhZjhmYTMxZiBweTNrCis4MTUyOSA1NWRjOWVmMTVhYjFhMjQ1ZjQ0MzBkMGQyN2FiNTM2ZjNlOTk3N2Q3IHJlbGVhc2UyNi1tYWludAorODE1MzAgODJjMjQyNmY3ZjNlOWEwN2FmOTIxNDM0YWMzZTMzZDg0ZmZhZmU4NCByZWxlYXNlMzEtbWFpbnQKKzgxNTMxIGYxMzM3ZmU2YjdiNzc5ZWMyMzA1MTEzNGVmMzU0MjkyN2ZhYzhlNDQgbGVnYWN5LXRydW5rCis4MTUzMiBlNGFmNzAyZDYxYjdkM2NhZDc3YjE1NTA3NzNhMmZkMjYyM2I5MmM0IHB5M2sKKzgxNTMzIDRjMmQ2ZTFiODkwZWQ2Y2M0MzZhYzk5OWFhYzUyNmZiMWNkZTI3ZGMgcHkzaworODE1MzQgOTNjNWU2MjQxMzA5NjY4MDkyNDk4YzkyOWQzYTQ5OTQ2Y2ZhOWI2YSByZWxlYXNlMzEtbWFpbnQKKzgxNTM1IDA4MGU1NTA5MTZlZGNkOWE4NGE2Y2Q1ZTAxYmRmMTVjZDJmYTg5Y2MgcHkzaworODE1MzYgZjc4OGFmZjU3MmQxMWM5NTk4MjQ1Yzk3YzI2NGJmMThjNmU4ZDU5MCByZWxlYXNlMzEtbWFpbnQKKzgxNTM3IGJkNWY1ZGY3ZWQ3ODk0YzdhYWJlOWEzZjRhNmRjZTRkNDg0M2QzZDMgbGVnYWN5LXRydW5rCis4MTUzOCA2YTNjMmYwOTRiYmFkN2M3YmEyODYzMzBhMWVjZDQxZjAxOWEzZTBkIHB5M2sKKzgxNTM5IDhkYmJkOTBlZWRhODZlN2M2YTEyNWFlYWRiODZkNGU5MWU3OGRiZmEgcmVsZWFzZTI2LW1haW50Cis4MTU0MCA5Zjc5Y2I5OGQ1NWY0NGVkYWE5OTEzNjY3MzgyZjkyMGM0Y2M2YzdjIHJlbGVhc2UyNi1tYWludAorODE1NDEgODFhNTgwZDk0N2VmNGU4YWM4OGY5NmJlMjAwNzc0ODQzYzNjODk2OCBweTNrCis4MTU0MiAxOWIzZTQ4NTNjNzQzMjJjMGQ3YTk4ZGZhNzg4ZDRkZGYwYjlhYTY0IHJlbGVhc2UzMS1tYWludAorODE1NDMgNDlkNDk3NzkwNjA3ZjkyZWFmYTRmYzc4Yjc1ZDJmYmM5ZjRhZDhjOCBsZWdhY3ktdHJ1bmsKKzgxNTQ0IDcwMmQyNjFmM2EyOWFiZGUxYjg3NTVjMmUzMDRlZjQ2ZjgwNTMyYTkgcmVsZWFzZTI2LW1haW50Cis4MTU0NSA5YWVjNmFkNTNhMWI5NzRhYmYxMDRmMzRmYTE5ZmM4NDhmZDhkNmRmIHB5M2sKKzgxNTQ2IDliOGIxNDAzZjhkZGE4NTQwODYwNjQ1YzhmZDE1ZDk3NDVhMjAzNjggcmVsZWFzZTMxLW1haW50Cis4MTU0NyA0Zjk4MmU5NGFlMTZhYWJmMjA0ZDVkYjIzNmE3ZGFjYWRmMWFlZTA2IHB5M2sKKzgxNTQ4IDgzMjhjNWMzMjcyYzM1MTA0MjA5ZWUyNGFkNDRiMDk1NDgzMTU5ZGEgcHkzaworODE1NDkgNjAyNzAzZDA1NjBhZjUzYTBkZmNlZWNlMzk0YThmMDBiY2FlNmIwMCByZWxlYXNlMzEtbWFpbnQKKzgxNTUwIGZkOTk0NjdhYjRkNTk2NTAyZWQzZDY2N2Y1OTViZmQzMzMzMjgxNGQgcHkzaworODE1NTEgNTZhNTQ5MzZkYTFkYmQ0OTJlMWI2MjY2ZTY3Mjc4NjU2NTI5MWFkNSBsZWdhY3ktdHJ1bmsKKzgxNTUyIGM0ZjczOTc1YTQ0MGE5MmRlMTgwODU3ZDFlZjA0ZWRmN2VkN2E0Y2IgcmVsZWFzZTI2LW1haW50Cis4MTU1MyBlM2FkMWI4YzQ1MjEyOGZkNmJlNDA4OTllNjc3NTllOTYzNjI1ZTMzIHB5M2sKKzgxNTU0IDgxODBhYmJkMDdjYjJlNjBhZmFjMjVhMzhkOTZlYzQ3YmJhZTQxOGYgcmVsZWFzZTMxLW1haW50Cis4MTU1NSA0NzQ1ZTEzYWE5ZTQzNjQyOWE3OWNiNDVhOTM3YWEzNzdkZGJmYzZkIGxlZ2FjeS10cnVuaworODE1NTYgN2NmYmZmYTZhMzBiMjgyYmE0ZWQ2NGU1NzYxZjY5ZTNhNTYwNDZmOSBweTNrCis4MTU1NyBjNDJmZmIzZDYzYWZjNzhhMTVkNGU3MGQyYmIzMjY0ZTA2YmFjMWEwIHB5M2sKKzgxNTU4IDNmNGQyYTgxODEwYzVjYzdjYjEzZTU2MWQ3MjViNjM0OWM1ZTE2M2MgcmVsZWFzZTMxLW1haW50Cis4MTU1OSAxMzA3ZDk3ODc4OWZlZmMzZGFiMTExMDYwYjg0YWEzYmRkZTQxYzJlIGxlZ2FjeS10cnVuaworODE1NjAgN2YzMTJmNjBmZGIwNTE4ZDU1NWQ5YzhlMGUzOWJlNjhkNGJjMDlhMiBweTNrCis4MTU2MSAwMTQ4MjcwMDQzNGQ4YTA5YTNlMzYyMzNjNzc4OTJiN2NlMzZjZTIyIGxlZ2FjeS10cnVuaworODE1NjIgNTU1ZmY1OGNiN2NiOGE3YWUzNDEyOGY0NTZiMmVmMzUzYTBmNDNlNyBsZWdhY3ktdHJ1bmsKKzgxNTYzIGRkYTBlMWFkZDhiMzEyNmIxM2Y2MWNjYWFjNGIwNjNlMGU5NjNjODQgbGVnYWN5LXRydW5rCis4MTU2NCBjMjdlYWQ1MWM3ZGM2MzIzMTlhYjM1YTNjNDk2ZjIxMWY1ZDFkNjM2IHB5M2sKKzgxNTY1IGNmZDIxNWQ5NDk5YzNlYTFmZTUzMjE5YjI0OWI5NTNlMDZhZjY4M2QgcHkzaworODE1NjYgMzExYTI1M2I1OGI3NWQxMGJkMDRmMzBjMDFkZGEyMzAwYjA2NGJlMiBsZWdhY3ktdHJ1bmsKKzgxNTY3IDk2YTdhM2NjNTg5N2ViNDA4Y2NkNDk0MzM2YzI5MjI4ODBkMWE3MWEgbGVnYWN5LXRydW5rCis4MTU2OCA2Yjg5ZGUzNmE3NGZjMjkwZmFhYTBhYjhiZDUwYzRjNTk3YmFiMzkwIHB5M2sKKzgxNTY5IDBjY2YwZmRjNTk2NjUyZTEzMWI4NjgzNWU4ZmRjNTMxMzc4Yzc0NjcgcmVsZWFzZTI2LW1haW50Cis4MTU3MCA0YjE0MmY3YjM4MTJkMDk5Y2I4NjQzMDVjZWEzNjFlYmE5ZGRkZmExIHJlbGVhc2UzMS1tYWludAorODE1NzEgNWNjYzcxZGNiNWRlYTQ0MTdkYjg1Yjk0OTg2ZDFiOTAwNzBkYjA1ZCBsZWdhY3ktdHJ1bmsKKzgxNTcyIGM5YmVjY2I2M2VhOTA5YTQzYzAzN2RmMjJhMzBmNGJkYWE4YzEyZmEgcHkzaworODE1NzMgZjUwMWJlNjM4ODc4YTE1YjJmY2JjNTEzNTkxZjk5ZmQ3Mzg5MmE2MyByZWxlYXNlMjYtbWFpbnQKKzgxNTc0IDI1ZjJhMGYwZTlkZWJkMzA4YTIyMWI5YmFhYTk3MjI3NWFlOWJhYzggcmVsZWFzZTMxLW1haW50Cis4MTU3NSA1Y2MzYTBjMTQ4MDJlYmJhMDUwNjBhYTI3NDU0MWUzMjM5MTA2YTc5IHB5M2sKKzgxNTc2IDdmZTliNzkwMDU0YmFkYjg2NTRlMTg5YTczZGQyZmRjMGI4NTU4OGQgcmVsZWFzZTMxLW1haW50Cis4MTU3OCA5NTI2YTkwOGEyNThkYjg2NmJhNjVlNzI4Y2FmOTAwNDJjYmMwMDBlIGxlZ2FjeS10cnVuaworODE1NzkgMWE1OTI4YjI1OTNjOTBmNzY4Y2MzMTMzNGU3YjhhOTczYzdiNGZjYSBsZWdhY3ktdHJ1bmsKKzgxNTgwIGJkOWNiMjRiYTY4YjQyZDUzMGZiOWM3MTlmNDY5ZWI4ZDRhMzVhYzEgcmVsZWFzZTI2LW1haW50Cis4MTU4MSA2MjE5NDE1NTc4OTgzNmVjOTI1NjE1NThiMGMxYWU2NDVmZTA0NDU2IHB5M2sKKzgxNTgyIDdjOTQ3NzY4YjQzNWQ5Mzg5OTk2ZGQ1YWNmM2Y4ZjhlMzJkNzJkNjQgbGVnYWN5LXRydW5rCis4MTU4MyBmMTJiMDFlNjhmNjQ0ZmMyMGRkOThiOWI0NDlkYWIyODY4MTI0NmI3IHB5M2sKKzgxNTg0IGI2OTdlMjFkMWU3ODY3ZjkyMmEyOTVkYzZkM2ZjYmUzMmNjOTc5ZmMgbGVnYWN5LXRydW5rCis4MTU4NSBmMDAwNzU0Yzg5NDNlMTgwNjkwMzQ4ODE5ZjA1ZjBiYmVlYzhlMTQyIHB5M2sKKzgxNTg2IDQ0MTU1OTliNzAxMTZmZTQ5MTQ5ZWNmNjQ0YTE2ZWMyMGNkNzVkNzggbGVnYWN5LXRydW5rCis4MTU4NyAyY2ZiMThmMWMyOTMzY2Q1MDlhNWE0YTQwZjBiNzM2YjBlMmJmNTcyIGxlZ2FjeS10cnVuaworODE1ODggMzA4ZWRmMTFjN2NmZjY4NTJhNjE0MTdjMjA1NDUxOTFmMzMzNDI3MCBweTNrCis4MTU4OSA5YTA0YmRjNDgwODk4M2YyZjE3YWE5NTk2YzE0NWI5MTFhMWI5ZDYxIHJlbGVhc2UzMS1tYWludAorODE1OTAgODUyZDVlYTYyNWU3NDk1MjMyNTRhZDg2MGRhNjI2ZTIxYzVmODk3NCBweTNrCis4MTU5MSA0OWFiNWRiYzRmYWM5YzQzYjRiNDM0MzQyNjgyMWY4ZTJhNTJiYWNlIHJlbGVhc2UzMS1tYWludAorODE1OTMgZDVjNzlkODliMzkzYWZlNmY2Y2Y2ZmY2YWVlOWE0ODE3MGUwYmE3ZCBsZWdhY3ktdHJ1bmsKKzgxNTk0IDJiNTg3ZTdmMDI5OWI5ZjhkNjExOTBhMTk0YTA4Nzg1NGRjNzMyMjcgbGVnYWN5LXRydW5rCis4MTU5NSBiNzk5Zjg2MmZiMjE4YjQyYmM3Yzc0YzI1MmI5NDIxOWVhNDU1NjcxIHB5M2sKKzgxNTk2IDMyMmJmNGZmNGQzZDZlZmE1NDQ4YzJiYTk5YTM5NDI5Y2VmYmQ2ZWMgcmVsZWFzZTI2LW1haW50Cis4MTU5NyBhOTE3NDczMzZlYWU2MDI0ZjY2Mzg2MTgwYzc0YzNlOTRlOGQzN2JiIHJlbGVhc2UzMS1tYWludAorODE1OTggMDM3MmI0YzdiOWY0ZjZhMjdmM2RhZTg3MjFkZDRlZDQyNjMxOTM2NyBsZWdhY3ktdHJ1bmsKKzgxNTk5IDE2NDE5M2FkZTRiYWYwZTc0NjUzMWZlZTZiYWZlM2ZmZjZjNGFhMGUgcmVsZWFzZTI2LW1haW50Cis4MTYwMCA2M2U3OGZjZjdmOTRhY2U2NjFjMDc0N2U4OTUzZmNmMjJiNzI3MDI3IHB5M2sKKzgxNjAxIGE3YTliNThkMWMxODY3NTI4MDdhY2IzYTgzYmE0YmVmM2E2NzlmMDkgcmVsZWFzZTMxLW1haW50Cis4MTYwMiA2ZTcxZWNhNjI3OGNiNTc1ODMxOTJiODhhOTBhN2M5YjY5ZDFjOGU5IGxlZ2FjeS10cnVuaworODE2MDMgNWQ0M2I5NjYzNmM4ODg3ZmNjY2JhMjI5YWZmNGJmNTc5NzNiZGIzMCByZWxlYXNlMjYtbWFpbnQKKzgxNjA0IDA0NzBkYzYzZDEyYTk4MDNiZWNiMDYyMGI3ODdmYTMxOTY5MmJmYzcgcHkzaworODE2MDUgOWZhNWVkNGNhMGJiNWI0OGNhMGUzYTdjZWI1ZmNkZTkxYTdmNDVjZCByZWxlYXNlMzEtbWFpbnQKKzgxNjA2IGVkNzlkYTNhNTkxYzRhODA5Yjg2MjQ4MzBlY2JhZThkNmUzMTI5NzQgbGVnYWN5LXRydW5rCis4MTYwNyA2YjdhZjVhMjVkMmU4ZDJhM2MwNDhjNWVmYzY4ZjdiNTM5ZmYyNmQ5IHB5M2sKKzgxNjA4IDA1ZDZiMjVkZDE5NzE1YWI4NTg3ZThlN2I3Yjg5Njc1Nzk2ZmI0OWIgbGVnYWN5LXRydW5rCis4MTYwOSA5YTRiMDJiYWE3YzQzMTMwZThlMmIwYmZhYzU3MzVkYTVmZWQzNDdkIHB5M2sKKzgxNjEwIDNlZGZhZDI1NDljNjE3OGRhMTM0NzQ4Yzg5M2Q3ZmJlM2RkODE0YzcgbGVnYWN5LXRydW5rCis4MTYxMSA1ODMzNzk1MDYxYzVkOTcwODVlOTU4YzczNDZmMWFjNDc3NTgwYjRmIHB5M2sKKzgxNjEyIGU3NjZjMGQ4NmNmZjlkMWU1YmE2ZTNhNTdjY2RkMTgxZDBmYmE1MDMgcHkzaworODE2MTMgNjZiM2VkYTYyODNmZWFjNmE5YTQwMzFmM2UwM2NkNTk3MmU4YjQzYSBweTNrCis4MTYxOCAzMjQyYTBkMjJkZTYzOGFiNzJkZDQxOWY5YTRhMmQyYzllZDc0NGZiIHJlbGVhc2UyNi1tYWludAorODE2MTkgY2FjMDBjYmJlNzcwOTQzMzliYTFhYmMxOTNlZGYxYmQyZTJjOTMwZSByZWxlYXNlMzEtbWFpbnQKKzgxNjIwIGIxYjMxNzc1ODY3NjUzMmM2NTJlM2ZiYzBiYjcwZGU2MTYzNWE5MDEgcmVsZWFzZTMxLW1haW50Cis4MTYyMSA3OTQ1MDQ1YzNhNzU5MjA1ZTI1ZTE1N2FiNjA3OWJlOTUxYzdhYjcwIGxlZ2FjeS10cnVuaworODE2MjIgYzk2MzQ3OGI5MDkyZGVjZWY0MTNjZjYwYTk5MjkwZDZhOWQxYTM2MyByZWxlYXNlMjYtbWFpbnQKKzgxNjIzIDhlMjFjNjgzMWM3ZmE2YjNmOWRiZGNiZWY1MTM2MTkxMWYwYmQ3YTUgcHkzaworODE2MjQgOGExM2Y3NzNhOTc2MzllOThmYzdkZWExN2Q4NTc2MjJkMTZiNzRhYiByZWxlYXNlMzEtbWFpbnQKKzgxNjI1IDNlNjQyNWMyMjFlY2ZjNWE1ZTA2MDA4ZmEzZDNlYTJlNThiODIzODAgcHkzaworODE2MjYgZWJiOTEzMGFiMGM0NThmYWEwNmVmNTMxNDk0OWQ2MTY3Y2Y3NWI5YiByZWxlYXNlMjYtbWFpbnQKKzgxNjI3IDU3YjkwMzUwMzcyZjhjMDI2ZjZjNmU1ODBhZWEwYWRiNDkzOThhYzQgcmVsZWFzZTI2LW1haW50Cis4MTYyOCA3MTQ2NTNkZDRhYWRhZDQ1M2NjYWI5YmFjZGVjMTFlZTA4M2MzN2UyIHB5M2sKKzgxNjI5IGRjMjc2OGM5OThkZTEyNTBhZWJlYWZjZmRjYzJjMzQzNzBhNWQyMmIgcmVsZWFzZTMxLW1haW50Cis4MTYzMCA2NjEwOWQwZTRlNmRmMWRlYTRiN2Y5OGMwYTExYjNhZWEyZjFhNTg1IHB5M2sKKzgxNjMxIGViZDY1ZWM1NGQ3ZTliZWY1ZDZkNWEyOGNkN2EwYWM1MjI2NTAyOWUgcmVsZWFzZTMxLW1haW50Cis4MTYzMiA2MmNhNTQwZDhiNmU2MTUxYWQxMmU5NTk4MjA5YjcwMDRmN2U5ZWQ4IHB5M2sKKzgxNjMzIDlmOTJjYmFhNTM5ZDZhNDNjNTgyMjk1ODNjY2ZiY2FiM2ZlYjJmNzEgcmVsZWFzZTMxLW1haW50Cis4MTYzNCBmODEyNzFjMThlYjAxYWRjNjU5OWI5MTY0OGY4MWVmYTYxYjQ3OGUwIGxlZ2FjeS10cnVuaworODE2MzUgNTNlZTQ3MzIyZGQyYTJjMmEzNDgyNmIxYzQzNTA0OTYxNzY3NGJjMiBsZWdhY3ktdHJ1bmsKKzgxNjM2IGQ2OWIxYTJkOWJmMGVmMTA0ODFlMzQ3ZjhmMzFmYmYwOTQ2YWE3ZTQgbGVnYWN5LXRydW5rCis4MTYzNyBkNDI2MGRjYWZjN2ZiNjJiNTM3MDNiYzQ0ODBhYjBiMmIxNGYyZmFlIHJlbGVhc2UyNi1tYWludAorODE2MzggOWMwYzI3YTliNzFjNzljZjIxMTZmZTZjOTczNGYzOGMyYzFiYmE2MCBweTNrCis4MTYzOSAxMDk3NzcwOGRiMmVhYWIzZWM5NTRkOWYwYzA3MWJhNjM4NzQyNGQ5IHJlbGVhc2UzMS1tYWludAorODE2NDAgODk4ZWJiMjk5MGRmYTU5ZjE5YTdmYzc5YTIwZTY5YmViZjdiNGI3OSBsZWdhY3ktdHJ1bmsKKzgxNjQxIDJkZTcxMjMzYjY5YjBkMjAxNmVjNmFiNmNjODU3MTU2NDVhZWU5OTkgcmVsZWFzZTI2LW1haW50Cis4MTY0MiBlNGNiYmJiNzg2M2I5MmRiOWJhNjczZDllY2MxYmY3MjllNzAyYjRkIHB5M2sKKzgxNjQzIGNmZTEzODYwMGY2NGM0YzdiMTVlMWUxYWM4MGIyN2VjZjQ3ZjM2OGIgcmVsZWFzZTMxLW1haW50Cis4MTY0NCBhMDNiOTU2ODM1OWM1NWRkZWMyOTdhM2RmZWM0ZWVlNDk4MWU0OTAxIHJlbGVhc2UyNi1tYWludAorODE2NDUgOGUyOTRkZjBlMzgyYTQ2YjFhZTA2MmUxZTgyMWM4YjRkYmM2ZjM3ZCBsZWdhY3ktdHJ1bmsKKzgxNjQ2IDdiMTEyNmI1YmUyZDZmMGQxNDUzMDM5MGQwNzNhM2U3MWI3YTAzMWUgcmVsZWFzZTI2LW1haW50Cis4MTY0NyAzNzllZTIxMjE1M2UwM2Y4YWYwZjYwY2M2ZmI2N2RiYzdhY2Y1MjZjIHB5M2sKKzgxNjQ4IGQyMGRiM2VlODQ1NzU1ZjVlNjdiNTBjYTY5ZWI2NjVjMjk3ZGZhZWUgcmVsZWFzZTMxLW1haW50Cis4MTY0OSBiZDQ3Y2QxZjliYzJlOGJjYzI2MzA5ODA5YWRlYTUwYjFjYmMyYWIyIGxlZ2FjeS10cnVuaworODE2NTAgMzRhNjM3YmZkNGJlNzhiOWU0NjFkNGYzMzNjNDBjY2U4N2U4MWY2ZSBweTNrCis4MTY1MSBlYTQzYjQwNjQ1MGY5NGZjMjZiZWVlNTdlOGYyM2MxZjc2NGRiYWYwIGxlZ2FjeS10cnVuaworODE2NTIgM2I4MDcwOTEzMTY5NDk2ZjhhYjNjZTA1NDkwYTQ5NzI1NDJjNzVjZiBsZWdhY3ktdHJ1bmsKKzgxNjUzIGI0N2M0Y2YyNWYwMjJkNzU5MDYwNDFlMzM4NmE4ODI2N2M4ZTdlODkgcmVsZWFzZTI2LW1haW50Cis4MTY1NCBjM2FkYjkxY2E1ODk0NzA5OWViZmQ4ZjExNWQyMzUzOTA0NmQ0MmFjIHB5M2sKKzgxNjU1IGRmZjVmMDliNWE4NjAxODJkY2Y2Y2E3MzJmNDFhNTU1MDQ2NWU0NTIgcmVsZWFzZTMxLW1haW50Cis4MTY1NiA5N2VkZjBlYTAzZjliMTRlMmE0OWQ0OGE2YWExNWNhODBjZjMzMmU2IHB5M2sKKzgxNjU3IGRmYmQzNDVmNTNmMDNhNTg1ZTdjMDQyMjY1ZDcwYmQzYzVmMDIzNDcgcmVsZWFzZTMxLW1haW50Cis4MTY1OCA2YjA3Mjk0YjEzNTIwZTJkZjU2NTZkM2QwYmQxMjVjNTY3ZWRiMmNiIGxlZ2FjeS10cnVuaworODE2NTkgZGQzNzhiODg1Yjk0MDM2NTQwZjJjOTU5NTAxYWFlNzQyZTlmOTViNCByZWxlYXNlMjYtbWFpbnQKKzgxNjYwIGJiNjNlYWVmYzVhNjhkNzhmZGQ1YWE4MjJiMmU2MmM5NGM4YjRiNzIgcHkzaworODE2NjEgODMzZGU3OTg4NWU0ZmM5MmM2ODQwZjhhMTJmN2JmZDZmMTkyNTI1ZiByZWxlYXNlMzEtbWFpbnQKKzgxNjYyIGY2ZTkwMTgyNjg2YmM2MTVkNDdlZTg0OTZjOGQ5MDk4MTExM2Q4NzkgbGVnYWN5LXRydW5rCis4MTY2MyAyOTFiMGJiNjNmYjc2YmFkODQwMDMxMWFjNTc1NzIxODc4Zjg4NTllIGxlZ2FjeS10cnVuaworODE2NjQgZWQ5ODNiMTE2YTdkZTAwYWQ3MWIyZjU3MGM0Y2M3OTc1NDkwZDEyMSByZWxlYXNlMjYtbWFpbnQKKzgxNjY1IDhiYmQ0ZWI0ZWZjNDFlM2MzNzc3YzM1YjIzZGVhZDFhMzgzNGZkMzcgcHkzaworODE2NjYgY2VhNWVmNjgyYmRkNGM2ODM1NTBhMGI5MmE5ZGZkNzBkN2I1Y2I0YyByZWxlYXNlMzEtbWFpbnQKKzgxNjY3IDlhZjYwMGE2NjExNTcwMTA4OWZjNzVjZDZjY2YwNDg1Y2M1ZjhmNzcgbGVnYWN5LXRydW5rCis4MTY2OCBhZTExZjU2YWQ1ZDc0N2RhZjIwNzFiN2JmNzMwZmI2ZDc0ZTk0OTdiIHJlbGVhc2UyNi1tYWludAorODE2NjkgMWI0YzMwNzQyYTI0YTNjNjc5ZTgwYjUyOGQ5MGUzZTI4MmJiMjljYiBsZWdhY3ktdHJ1bmsKKzgxNjcwIGJmYmYyZDY1MGYyNjkzNGQ3Mjg5OWRkZWRmYzhlMWZkMzJhM2EyMTMgcHkzaworODE2NzEgMDUzNGNlMDFiYTUwMjliM2Y1NDYxYmE1M2ZhNGUyMjQ2YjM2M2ZjYyByZWxlYXNlMzEtbWFpbnQKKzgxNjcyIDg4MjVhN2U2YTVmMDFlNjk3ZDM2MWVmYTU0NTllYjIxYmM3NTk1NmQgbGVnYWN5LXRydW5rCis4MTY3MyAzNzk3ZWU1N2QzZDZlMzg1YmVhNzQxNDYzZWQ3MjZmODNiMmI4ZjYxIHB5M2sKKzgxNjc0IDE2ZmJkZjEwZDEwMDE4ZmNjZGM4M2YxMzA1M2RlNjkxMjFjMzQ1ZmEgcmVsZWFzZTI2LW1haW50Cis4MTY3NSAzZDExYmE3OTg5ZGYwYjUwOGVjOTBmNmFkODUzOTAwYjYzN2UwMzEzIGxlZ2FjeS10cnVuaworODE2NzYgNWUyOGEzZGZkZWVmM2Y0ZjFjNjc0MjVhZmQ2NDQ4YWRjMDllY2JmNCByZWxlYXNlMjYtbWFpbnQKKzgxNjc3IDI1YjQxNjNmZmUzZmQyZTY5ZDc1YmVlODAyN2M0YTQzMGJlNmMwMTUgcmVsZWFzZTMxLW1haW50Cis4MTY3OCAzOGRkZWNjZjAyYTk0MjI3YzUyZWY0ZmQ3Yzk3OTAwZmU0MmM1MzIwIGxlZ2FjeS10cnVuaworODE2NzkgMTFhY2M1N2Y1ODA0Y2FiYzBjMDg0ZGNmZjY1ZDAxMDVkYWU1MzkyOSBsZWdhY3ktdHJ1bmsKKzgxNjgwIDZlMTIwZDkzMTEyZWNhNDJmN2Y0Nzk2NTBiZDg5MGIzNTg1NWU3M2EgbGVnYWN5LXRydW5rCis4MTY4MSA1MzJlOWU2YWM4MjVmMWNmYjM2YWY3NDYzZmQ4YjdmYjhkN2I1ZjE0IGxlZ2FjeS10cnVuaworODE2ODIgMjY4MDMxNjhjZThhNzQ3MmRmNWFkYWM5M2E4OTAzOGFlZDhhOTA4MiBweTNrCis4MTY4MyBjYjRmYTNlNGI4ZDU3NjgwMTlhNjk1NGY3MzVmYWI0NWI5ZDFkYWY0IGxlZ2FjeS10cnVuaworODE2ODQgZGQ2NjM2ODIxN2MxNjI2ZTMxZjRiZWJkODQzYmM5YWVkODNkYTEwOCBsZWdhY3ktdHJ1bmsKKzgxNjg1IDIyYzBlMjI4ZDVhN2MxMmY2MzQzNjMxYTMwNGFiZDhiNjk0YmJiMWYgcHkzaworODE2ODYgYmYyMTAzYTIyZTAwNzhlNmEzZDRhNWQyYjNhOTE0YmQzMGY5ZTM0ZSByZWxlYXNlMzEtbWFpbnQKKzgxNjg3IDNiNjdmYTM1ODVmMDdjNTUwN2U5MTViNjAzODE3NWRiY2M2OWVmNDYgbGVnYWN5LXRydW5rCis4MTY4OCA5ZmE1NTkwMjU5ZjQ2NGIwZDU0YWRhYTQ5NTRmYTU4NDlkNDg0ZjMyIHJlbGVhc2UyNi1tYWludAorODE2ODkgMDc3ZDI5Mzg0Mzk5MThkNjNhY2QwMWY0MjFkM2M5OTU4OWJiNmQwNiBweTNrCis4MTY5MCA3YjU5YjFmNjMzY2I0ZTI2OGEyZmQwOGI2OTI3MzdhM2YxNDg4YmE1IHJlbGVhc2UzMS1tYWludAorODE2OTEgZWFjYmU3NzRmMDI5ZTRkODllN2ZhNDc3YWM5YjQzZTUxOGM0NjBhMiBsZWdhY3ktdHJ1bmsKKzgxNjkyIDQxOTkwMWU2NWRkMjE5ZGE2OGVlZjBiYWZhNDk2NjY3YmY4MjMzY2QgbGVnYWN5LXRydW5rCis4MTY5MyA4MjQ1NjgzZTZlYzYxMGNiZTkwZjczYTlhNDg5YTAzZDM1MzhlMDk1IHJlbGVhc2UyNi1tYWludAorODE2OTQgMTA5YTk4ZjlmY2RkZDM0YmJhOTZlZGNmNTA1ZTJiYzlhYWE4OGNjYyBweTNrCis4MTY5NSBjZDE5MmQxZmNkNjc2M2IxYzNjNWQxYmEwN2M3M2I4MjQ2YzY2MDRjIHB5M2sKKzgxNjk2IDg0OTg4YmI5MWZiZjYzOTliOGFjNjJmMmNiZDg2MGE0NjI0NGU3N2YgcmVsZWFzZTMxLW1haW50Cis4MTY5NyBjMTYwYWYwOWM1YjAxNjVlZjNkMTJkZDc1MTMxOWYwN2EzOTE3ODU5IGxlZ2FjeS10cnVuaworODE2OTggMmIyNWI1MGVhZWFkZDU1ODljNTk5N2FjNGI3MjgyODNhNTMyMjM3ZCBweTNrCis4MTY5OSAwYzc3NjRhYTY5NGExODZhNDEwNWQ0OWJhNGQ5MGRhZjUwODYzMDkxIHB5M2sKKzgxNzAwIDRjMGIyYmJkZDgyZDE3MDQ3YThjMWY1OTI4MTBhNmE4ZmFjNDQzZTEgbGVnYWN5LXRydW5rCis4MTcwMSBhODBjMWI5NjRhNmZlOTZmYjlmYmI4NmQ3ZGQwMGFkN2VmNTVmMzY3IGxlZ2FjeS10cnVuaworODE3MDIgYmJhZjYwNjJmMjQxNDM2YzljMDg4MDM4MTlhMDU0ODU2ZjQ3NjNhOSByZWxlYXNlMjYtbWFpbnQKKzgxNzAzIGYyMTRlMWJmMDMxZDI5Nzc1OWQyNzFmZGYxOGMyNmVmOGEwMzNlNzMgcHkzaworODE3MDQgNTJlOTJlNzdiMzExNGQ0N2Y5MzE3MjczMzA0MDJmMDg4Y2Y4MDNiZiByZWxlYXNlMzEtbWFpbnQKKzgxNzA1IDczNDQ0OGU4NTZhYTdjNmNlYTAxMGJjMTUxYThiZGU3NWJlMzRhYzYgbGVnYWN5LXRydW5rCis4MTcwNiAwOTE3NmQwYmRlMzg0OWUwZDFlOWUzOTlmOGIyMzkzM2ZhZmY4NjM1IGxlZ2FjeS10cnVuaworODE3MDcgZDc1NDFhNDkwY2JkODQyMzVkZWU3ZGUyMWFiYjc0OTY1YjFjMzVlMiBsZWdhY3ktdHJ1bmsKKzgxNzA4IDliYjVjMjJlZjEzNDIzYzVmMjJjNDI2ZTE4NTliMWVmN2E5ZmQyNWQgcHkzaworODE3MDkgNWNkZjI2NTc2ZThlYTFmZDQwNDE3NGE5ZTNiNzlhMzQ2NDJiNWMyYiBsZWdhY3ktdHJ1bmsKKzgxNzEwIDE0MmNiNmY2MGZkN2U5NTFjNTJjNzUzN2Q2ZGVlNjIwNDQ1ZjRmZmMgbGVnYWN5LXRydW5rCis4MTcxMSAyM2VkODM3NjE1YWFiNDllMTA1ZTA5MzYxMDE2MjgzYjYyNjJmZGQyIHB5M2sKKzgxNzEyIGRkYTliZWU1Yzg0YTAwMGQwOGMxOWM5YmE2MGQ3NmVkMDE4NDUxMjEgbGVnYWN5LXRydW5rCis4MTcxMyA2MDYxM2U4MWZiMWU4NTJkMTNiYzdlYTcyOWZlMDdlNTY0YWJkNjk2IHB5M2sKKzgxNzE0IDU5MDllMWY3NmJlNzQwZDYyYzJhMDg0NGUwN2E3MGU3YzkwYjg4MmUgcHkzay1jZGVjaW1hbAorODE3MTUgMmI1NzAyZDg4ZjI3NWU4ZmEwNzliZjdlZTI4ZmFiN2FkODQwYTNmNSBweTNrLWNkZWNpbWFsCis4MTcxNiBjODg2NDgyNzcxMzhmMWJjNWI2YzBiYzUwZjI5ZDQwMTM2NjlhMmExIHB5M2stY2RlY2ltYWwKKzgxNzE3IDZiNTAxM2ZlYTgxYmJmMGVmNTQ3ODgxYmYwM2MwMTFkYWJiMTRkOWIgcHkzay1jZGVjaW1hbAorODE3MTggNjFmNTQ2ZTg2MWMxMmY3NjE3Yjk4ZmNmZTU4ZTUzNmJjOTAxZjRmNiBweTNrLWNkZWNpbWFsCis4MTcxOSAwODI5ZjYwMjA4MGI5ZGI3NzJlOWY0YzJkNjcxY2YzOGUyZmUzZmQ5IHB5M2stY2RlY2ltYWwKKzgxNzIwIDZmMWYwNWM3MjViN2MwZjU3N2ExZDZiZWEzZmFiZmQwNTJiOTVlODIgcHkzay1jZGVjaW1hbAorODE3MjEgMWZkMzY1ZDM2OTU5NjJmMzFjOWEyZTQ2OGU5M2RhMGYxMTEwOGExMCBweTNrLWNkZWNpbWFsCis4MTcyMiBhNDA5YTVhYjgzYmJjYjJjNzhlNWMzZDk1N2JlNWFiNzM4NjE1ZmQxIHB5M2stY2RlY2ltYWwKKzgxNzIzIGE1NjEwNTQwMWQ1MjZkNDIzN2RkMWJmM2ZlYThiYmFkOTQ4OWVhMDcgcHkzay1jZGVjaW1hbAorODE3MjQgMDljMDVhZDQ1YjVmMGJkZjcxODkxYzBiODBjOTljZmY3MWU2OGU5NyBsZWdhY3ktdHJ1bmsKKzgxNzI1IDA5YzA2Y2EyN2Y3Zjg0NmNlZDM4MzYwYTljNmI1ZWFjZmE1MmQ5MTYgcHkzaworODE3MjYgNDNlOWEzZTYxNzk2ZTZkOGQwMDJkNjEyYzIzN2UzNmQyZjU4NjFjYiBweTNrLWNkZWNpbWFsCis4MTcyNyBjYjUwZGI5NDEyYzcwNGM4ZTc3YTQ0MDE1ZDE0YmRhNWJhM2VjYzk4IHB5M2stY2RlY2ltYWwKKzgxNzI4IGJlNTg4MTRlMjVkNzg1MTUyZDhkY2IyOGY5YjE2NDIxODJiZWQxMWUgbGVnYWN5LXRydW5rCis4MTcyOSAzYTU3MWZkOGMzYmVhMGIxYTBhZDMxNjllNTZhNTdhOGYwNjc5MDdmIHB5M2stY2RlY2ltYWwKKzgxNzMwIGVjMTc0ZjQyZjE1YmQ5MGRkZjJkMTU2YWQxN2FkZTBmM2FjMTBlYzUgcHkzaworODE3MzEgMGUzZWM0MTg4NDVhZGM3NTU3OGNmOWQxYmI3ZDgyZmExYjU1Y2I1NSBweTNrCis4MTczMiBhYTVjZTg2MTVjNGZjNzA1MjZlY2Q0OTFkYWVmODU1YWNlYjkxZTJhIHB5M2stY2RlY2ltYWwKKzgxNzMzIDJmMjgyZjhmOTM4ODQ4ZDMyMTBmYzNiYjI1MGI1YjExNmU2YTRhMGMgcHkzay1jZGVjaW1hbAorODE3MzQgNzZjZjRhY2Y3YjQzZjJkNjI2MjNjNTU5MjAwYzFmODZkN2UyOGViMyBweTNrLWNkZWNpbWFsCis4MTczNSA5ODZiYTBlYzJjNTVmMzUwNTVlMGM5YWZhMTU4Y2UxZmM2NTMxNThkIGxlZ2FjeS10cnVuaworODE3MzYgOGZhNGE1ZTVhZjU1MmRmNzhkOGU0M2VkODMwZWJlMDBiMTk1NmUxZiBsZWdhY3ktdHJ1bmsKKzgxNzM3IDA2YmQ0YTQ0ODM5ZDk2ZDU0NjBhYTIzNDQyYjY1ODdiNjcxNWIwZjQgcHkzaworODE3MzggNzJkYzBlZjM5NGFjYmI0NjRlYmZhY2IwZDViMTg4YTI2MDAyNGExMyByZWxlYXNlMjYtbWFpbnQKKzgxNzM5IGY4NmM2YTZlMTc0NDE0ODIyMzY4ZDFlMzJjNWI1MGE2NGFjMmM1MjEgbGVnYWN5LXRydW5rCis4MTc0MCA2N2MzM2NiOTYyMmRhOGVjNDI2NTQ2ZjBjZjU0NjkzNDU0YzgwYzM4IGxlZ2FjeS10cnVuaworODE3NDEgZTEyZDg3YzQ1NTkxOThlMTZlYzZkMTIwMDNhMjY5MzFlYmIxNGRiMCByZWxlYXNlMjYtbWFpbnQKKzgxNzQyIDFjMzBmOWViNDBiODI2MDcyYmQ5NjY0NzZmODhjNTlhMTNmOTZkY2YgcHkzaworODE3NDMgOTEyNTE3Y2NkYjNmZDZmYjg2NjQ2ZWFiMGU1MjA4MGU0ODA2NWE0YSBweTNrCis4MTc0NCAzNzIxZDRlNWIyZWVkMzc0OGRkMGRjMjQ5ZTg5OTQ5YTMwYjkyODQzIGxlZ2FjeS10cnVuaworODE3NDUgMzY2MmQyYjVhZmFhZWRkYjVkZGRjNmM4ODg5NzkwZmY0ZjVhZDc0ZCByZWxlYXNlMjYtbWFpbnQKKzgxNzQ2IGQwZDA1N2I1ZDM2MTMyODVhODJiNzhlZTg3NDM4M2VjOGM0ZWM5NGUgcHkzaworODE3NDcgOGI4NzAxNTUxMjUzOWEwNWJkMGM3ODdmNTk4NjkzZGNhZjNkMDE5ZiBsZWdhY3ktdHJ1bmsKKzgxNzQ4IGNlOTIwOTgxMWMwYWFjZmExNTAzYzgwZWEzYmRmNGI5ZmMyMWFiMTUgcHkzaworODE3NDkgNGExMTUyMjk4MGI3YjhlNTM2ODBlYjljZjVkOTBkOGE3ODIxN2JiNSBsZWdhY3ktdHJ1bmsKKzgxNzUwIGFmMmJkZTcyY2U2MWEyYzMyNzMwODQ2NDAxMjNhNDc4NTdjYjA2YTYgcmVsZWFzZTI2LW1haW50Cis4MTc1MSA1ZTFiM2I2MzRkNTM0NjQ5MmI3ZTdkZjBkNWY0OGNiMWRhY2JmMmM0IHB5M2sKKzgxNzUyIDYxMGJhOTliOGQwZGEzZDAyYmVmMWFhNmYyNzI3ZDIzNzIxOTZlNjkgbGVnYWN5LXRydW5rCis4MTc1MyAyZDJiMzgyNGUzOWE1MTA0MzFkNjBmZDBjN2I0NzhhNjI4NDlkZmYzIGxlZ2FjeS10cnVuaworODE3NTQgM2Q0ZjFjMjU5ZDJkMGFiMDQxZDg1NTgzYjc4YWM4ZTkzYjFhOTUyYyBweTNrCis4MTc1NSA5YzMwOTEwMjRiYzg0ODZkNjM0MmIxY2VjMDY4YTAwYWEyNDM5OGExIHB5M2sKKzgxNzU2IGNhMjYzZDIwMDVlNzYxMWU1YzY0NGEwODQ4NjljYWViODFhMTRlZTkgbGVnYWN5LXRydW5rCis4MTc1NyAwYTRiMzNlNGVlMjM2MzY1MjI3NDZmYTNkMjI5NDAxN2NhMzhiYzZiIHB5M2sKKzgxNzU4IDUwMzJmMWQ1YTFlMTVjMTgzNTkxYzQ1MTdjN2U0NDY4ZmM5MDQwYjggbGVnYWN5LXRydW5rCis4MTc1OSBjMWNhZWUzMjU0NGZiNzlmNzRmYzhmMGM4NjJkYTRlZGExNmI0NTQ1IGxlZ2FjeS10cnVuaworODE3NjAgMWQ5YjdkMDUyYmNjNWY1NzIyMTA0YjczNjg0OGNmNDJiNDRkYjMzMiBsZWdhY3ktdHJ1bmsKKzgxNzYxIDc0MmQzMjlkZmRmZDk1Y2YwMDUzYjUyNDYzNDM1YWIyMTBhOGY2YzAgbGVnYWN5LXRydW5rCis4MTc2MiBkYTdhOGZmNzY0OTk3NmNhZTRmOWMxZjBlZTdiNzQ5MGQ4ZDJiNzgxIHB5M2sKKzgxNzYzIGQ3ODcyZGRiNGI5ODA4MDhhZjU4YjAzNmQzM2YxMzU3MmQ3OGU5NTkgbGVnYWN5LXRydW5rCis4MTc2NCBjZGM3Y2E4ZGI4ZDZhYjQ0OTYwZGVjZTIzNGY5NmVlOGIyNTFlNzdlIGxlZ2FjeS10cnVuaworODE3NjUgZTBkZTMzNzY3YzI5OGNkYzlmMDE1NmM2OTdjOTNjNWY1MjY5Yjg1ZCBweTNrCis4MTc2NiAxNDEwYWM2MGE3NTQxMjFmOTAwYjNlMDZhOThlNzFkNzliNjAwZGNjIHB5M2sKKzgxNzY3IDNlMGJjMGUxN2Y1NjBlZDRkNzJmZGZhOWJiZjg0MDllNGJmM2FlZDcgbGVnYWN5LXRydW5rCis4MTc2OCAyNmJiNTM4ZWY2ZWE1ODMzMzEzNTEzMDA1MWJkMmMyYjc4N2U3ODQ3IHB5M2sKKzgxNzY5IGUxY2FlZDY5NTQ0ODFmY2U2MWQyY2ZjZDYyZDhkY2M1YTE2NDcxMTkgbGVnYWN5LXRydW5rCis4MTc3MCA0ZGZkOTE3NDJlYjliYmUyMWIzM2ExZDFiZTgyNzQxOGNiZDMzMGUwIGxlZ2FjeS10cnVuaworODE3NzEgZDEzZGVjMTQ2OGI4NzQ4OWMwNmI0NDU2NGFmNTJkMjg1YTc0MGJiYyBweTNrCis4MTc3MiBjZDhlZTAxOTk4OWQxNzU1N2Y2NmU4YWE1MGI4NGExYTllYTJiMjMwIGxlZ2FjeS10cnVuaworODE3NzMgZmRkYTNmNDYxNDJlNGY5N2IxNDY0YTFhYjU4ZTkwNzQ3MjVkMDZkYSBsZWdhY3ktdHJ1bmsKKzgxNzc0IDBlN2M3ZjE4Y2QyNGIwM2VjZDJmY2M4ZGMxOTAzYTBkNTI0MDUwZjIgbGVnYWN5LXRydW5rCis4MTc3NSAzODFjNWVlYjUxMTAzOGQwOTFkOGUwODA4YzRiODUwODdlZDJmNjg0IGxlZ2FjeS10cnVuaworODE3NzYgNmEyOGVmMjliMTEwMzk0NDM1MWUyZGRjMTMwYWQwYmUyOWY3NzFmYSBsZWdhY3ktdHJ1bmsKKzgxNzc3IDU4OWI2MTFkN2I0ZmEyOGM3MjI3YjQ2NDgxNzQ1MjhlMWZiMmE1MWIgbGVnYWN5LXRydW5rCis4MTc3OCAzMDFiNzhjYzk5OWIyOWJmMWE0YzRhNmQ1OTYxODU1Y2M3ZWNhZTM3IHB5M2sKKzgxNzc5IDY4ZmQyMjU5NWRiNTc3NjA5MjM5OGVlYzQxNTM1MDJmYTQxNDc2MjMgcHkzaworODE3ODAgYzRkNGRkYWNmOWE1OTY4NmEwN2I1YWI4Yjg5MzgyZWI5MDhjYmI1NSBweTNrCis4MTc4MSA4NDk2NTA1MDcwNTJlNmY0NmU0N2RjZTFiZDcxMzM3YzQ3MzU1YjE1IHB5M2sKKzgxNzgyIDQ3NWNiZGUxZWQxOWE3ZjQwZTI0MDI5NGY0MmRhNWE2NzI5ZTgxNTggcHkzaworODE3ODMgNmExZDZkOGNiYzUyMTNhNjQ5NDI5N2MyNWE0YjZiMDM2OTJmNjliMSByZWxlYXNlMzEtbWFpbnQKKzgxNzg0IDMxNDMzOTZhOTRmMWVlMzVlYjZmNjIyZWUyYjdjODA3MzY0MmIzMDcgcHkzay1jZGVjaW1hbAorODE3ODUgNDk1YmI3M2IxY2YxZjNhNTY2NjJmZmUyZmRlODNlM2Y2M2Y3YjU1ZCBweTNrLWNkZWNpbWFsCis4MTc4NiA0M2EzZjJhY2M5NGVjMmUxNjBlMDA4ZjUxOWZhY2U5NjY0YWRkNDQ5IHB5M2stY2RlY2ltYWwKKzgxNzg3IDMwMzhlYWM0MmY3ZGM3ZTRkZDA4OWI1MGE3ZDgxMGQxZTQ2ZmVkYjEgcHkzay1jZGVjaW1hbAorODE3ODggZjZkYWY1MzBmODllYTYzZGM2ZTYxNDA3Mjk4YWE3MzdhZTYzZGViZiBsZWdhY3ktdHJ1bmsKKzgxNzg5IGVkMGNhMzg5MjFjNzY3NTMxNTM2ODljYWM0ZWY1NDIzMWU0ZDg4N2UgcmVsZWFzZTI2LW1haW50Cis4MTc5MCBkZjhkYzhkMWQ1NzFjNmQwMDUxYzE2ZTZhMTBmOWViNWViNjZhMTE5IHB5M2sKKzgxNzkxIDczNGZlZDU2MTNhZWZhOTRjZjM0YjkwYWU5ZTU5YTkwZGNkNTBmYzUgcmVsZWFzZTMxLW1haW50Cis4MTc5MiA5ZDQ5Yjc0NDA3OGM2NWRmN2ExNjkyZGMwZGU4ZTU0YjdmNjAyYTdjIHB5M2sKKzgxNzkzIGNlZjM3NGIxNGY1YmVlNTM1MDcyMDIwYTk0MWQ0MGZjYmE5ZjA3ZDMgcmVsZWFzZTMxLW1haW50Cis4MTc5NCBjM2YyZWQ0ZDhlNjVlY2VhNDFkZWRiMmFhNTJkNjNmYzU3NDc2ZTUxIHB5M2sKKzgxNzk1IGMzMmIwMzhlMDAyMmU2ZTM0M2UzNWNiNjc3Mjc2ZjdhMjJmYmYwZDggcmVsZWFzZTMxLW1haW50Cis4MTc5NiBlZDI2ZWE3ODUzNmJhM2I5Yjc5ZTQ0NjI2M2YxN2NkZjEwYzNkNzg5IHB5M2stY2RlY2ltYWwKKzgxNzk3IGZmOGVjOTRiZWFlYWQ4ZTcyMzE3NTM2MDA2OWI2ZTMxMWYyMWNjNDMgcHkzay1jZGVjaW1hbAorODE3OTggYjFiN2FmNTE4M2UzNWJjZDM3OWY2YTJhNjNkZjU1YTRjMmUzZDgwNSBweTNrLWNkZWNpbWFsCis4MTc5OSA3MzZmYTM2ZWE4MWUyMDJkYjk5MTlkMjE5ZWEyZDZmOGZhMWFhYTQ0IHB5M2stY2RlY2ltYWwKKzgxODAwIGEyMmQ4OTg4ODk5NTAxYjYzOTc1ODdlYjJlZTkyZmJlNTI5MDI5NjEgcHkzay1jZGVjaW1hbAorODE4MDEgNmU4ZGNiOGU5ZTZiZmI5ODUxMzAzYjFmMTE2YTUxZDlmZDczMmIxOCBsZWdhY3ktdHJ1bmsKKzgxODAyIDJkNzQzMGRlZGVjMzgzNjNlYWYwMDMwODRjYWUxZGE2MDdiYTAxMDUgcHkzay1jZGVjaW1hbAorODE4MDMgZmUyYTBlMWVjOTVkY2Y5MDFmOWQ0ZWJkZWY1MmFiYzA1MTA3MTViOSBweTNrLWNkZWNpbWFsCis4MTgwNCAwZWZhMWFkOGJiNzUwNmFiMTU3MjI5MDQxZWRmM2FjZGQyZmMxNmI3IHB5M2stY2RlY2ltYWwKKzgxODA1IGIxMWNjMWYxYTY5OGM1MDlhMTU4ODg2OWM2YWJiNmM2MTNlMTA0MDAgcHkzay1jZGVjaW1hbAorODE4MDYgMGQ5MzQ3OTM0Y2M1YjRhOTJhYTI2NTRlNjA1NjA0NDc1NWEwNDllYSBweTNrCis4MTgwNyA2MDBjMjMxMjcyMDdkODIwNjU3Njg4OWI1ZWEyYjVlMTBiYzg2ZDNhIHB5M2sKKzgxODA4IGZkOGZjY2IyZWU5MDhjZDRmZDcwYmI3YjFjMDBlMDA3M2VjMmEzYjUgcmVsZWFzZTMxLW1haW50Cis4MTgwOSAxYTEwMTZmYTA3MjMwMGZhNjk3OWZjYzBmY2QwNzhkZmNkYWI2MmQ1IHB5M2sKKzgxODEwIGU5MzJkYzg4ODUxN2IxZjg3ZjM2YzkxZjM0YjkzNGJhNTcxNDJkMmIgcmVsZWFzZTMxLW1haW50Cis4MTgxMSA5Y2U1NTYzZWVjZmI3OTQwZGVlOTY5ODIyMGYwMDU3MjU0M2NiY2NmIHB5M2sKKzgxODEyIDYzNDJkMTQ2N2E0ZDQ0OGQyOGZhNzM0YWQ4ZTMwZmExYzEzZWZhN2EgcmVsZWFzZTMxLW1haW50Cis4MTgxMyBhMjE0NWEwNmE3MjY4ZjIwMzA5MDliNDE2N2ZkYTJhZTNkYjdhZjA1IGxlZ2FjeS10cnVuaworODE4MTQgOTVjYzFlNmQwMjQ2OTRhYTVmYmJlZjg3MWI3NDQ5ZmMzOTVmOWI2YyBweTNrCis4MTgxNSA1MzgxOTZjZjkxZmY3ODI5MTM2ZGViMzM0NTA0NzNhMzJjMGQyNGVjIHJlbGVhc2UyNi1tYWludAorODE4MTYgMmY2MWUzYTE0NmIxY2RjZTQxMWI5NTY3NDQ1MDdjOTRmZDU4YmRmMiBweTNrCis4MTgxNyBmNWNlNWUxYmIyM2EyMTM2Y2Q4ZmQwMzI5YjhmYTc1OTkzMTFjZTExIGxlZ2FjeS10cnVuaworODE4MTggZjJjNGRkMjJjYTYxYTIxMDc1ZGFmODMyNDI0YTZlYzEyNzMyZjRjMSBweTNrCis4MTgxOSA4MjIyODBjZWUwNGI1MjdmOGMyOGFlN2U4NWMyMzViNTVhNzBiY2NlIHJlbGVhc2UyNi1tYWludAorODE4MjAgMjZmYWM3NGViYWIzMjllMWQxYzdhNGRlYmY2ODMyMWFiYWRmNGFhMiBsZWdhY3ktdHJ1bmsKKzgxODIxIGZlY2Q4ZmI3YmJlZjVkYjA3N2VkNzk5ODNiNjdkNzQ0M2RlZjdlNGUgcHkzaworODE4MjIgYjQ0YTJmZTUzMWVmNTFmYTc4NTA2M2QxMzBjZjg1ZTk5OWJmMTAyYyByZWxlYXNlMjYtbWFpbnQKKzgxODIzIGQzNzk3ZTlkZmQyYzE5NzU4N2MwZDI2ODE2Nzc0OWQ5NDJjOTUwM2EgcHkzaworODE4MjQgZGRkYjk4ZWYzYmU1ZWY5MDY2ZDU2MTNlNmUyNzYzMDU4ZWVkYjdlYyBsZWdhY3ktdHJ1bmsKKzgxODI1IGU1ZjBiMjdiYzE3ODM3OThjNjVlOGZiNGU1NzFmODVlZjIxMjg1NzEgbGVnYWN5LXRydW5rCis4MTgyNiA4MjVmNjU0NDVhMGEwMWVmMWE3NTBhZWRmY2E1MjVlNmY2YWQ5NmEzIHB5M2sKKzgxODI3IDVjNmU3NWE4ZDYxZDU1ZTYzZmM3OTMzN2VmZGM3YmQ4NjZlNTdmYzkgcHkzaworODE4MjggM2U4NjI1NDAzOWI5MDk2ZmE0ODg2NGVmMTAxZDkxNTc1N2IyNDZjNyByZWxlYXNlMjYtbWFpbnQKKzgxODI5IDI3MTgxNThjNThkMDBmZmM3OGJiNGNhZmU5MDYzOTE2ZDAxZTg0YTggcHkzaworODE4MzAgYTM2MGUxMTQ4NjZiNTU0ZDhmZjFiMWFkYzVhYzRjODM5ZDNiY2I0MCBweTNrCis4MTgzMSA0ZjYxMzMyYWYzNWU2OWZiYjE0ZWNiOGM3MDU4YTJkZGIyODQ5ZTQ1IHB5M2sKKzgxODMyIGI5NTE4NjA2Y2RkY2U5MWQxYWU5NzAzM2JjNjE0NWQ1NzMzNTdmZmYgcHkzaworODE4MzMgZDIyNjRmOWFjNjFlY2ZkNmNmMDgzMzNmMmRiM2YyNzM1ZjAwNDRmYyByZWxlYXNlMzEtbWFpbnQKKzgxODM0IDM1YjRjMzU2ZjI0YTYyODEyYmY4OTBlYmVjNmVlYTEzOTg5OGYwZWIgbGVnYWN5LXRydW5rCis4MTgzNSAxMTY2ZmI3ZWZiMDdhNmU1NTRlOTVjMzM2NjQxOWZlM2Q3NmY1ZTlkIHB5M2sKKzgxODM2IGQ1ZWMyNDNjYWExMjI0YWZiNzY0YzI0NGJmNGMwNDk2OTkxMTU5YzkgcmVsZWFzZTI2LW1haW50Cis4MTgzNyBiNWFmNWM5MzEzNWIyNGYzNDE0NWQ2NmE3OTc0YTA2ZjA0OTVjZmE4IHJlbGVhc2UzMS1tYWludAorODE4MzggNjUwOWY5YTNjZGU1YWUyN2UwNDU3ZWEyNzdiZjc5NThmODVjYTdhNCBweTNrCis4MTgzOSA5ZjdiOGIzMmIwNzRhYTkxZDMxMzUyMTIwYTQ2OTE5ODFhNzA5OTBkIHJlbGVhc2UzMS1tYWludAorODE4NDAgYTA2YWQ3MzgzNTUyM2YyNDg2ZjAzNmI1MDE2MzVhZWI0YWJhYTU2NCBweTNrCis4MTg0MSBkMjgxZWQ1OWZmMGJlNGYyNDAyZjRmMTY5NTIxNGY2N2MxMDU5ODA3IHB5M2sKKzgxODQyIDdjY2M1NTgxMTQxMzFmMDliMTZlY2RkMWU2ZGFiZmFkZWRiNTlkMTIgcmVsZWFzZTMxLW1haW50Cis4MTg0MyBkOTI3MDhjZjFjMWZhMzM2NGI1NjQxMDkzNjI1ZTdlZTU0Y2ZhMmE2IHB5M2sKKzgxODQ0IGEyNWFkOWM0YWNlMDAxOGY4NTJiYjQzNzRlYzE1NWU4ODMzYTg5ZWEgcHkzaworODE4NDUgZDQ3ZmU0MTM0ZTdkMTFiZjQwMzYxMDdjODJlNjViN2YzMTY1MjQ3MyByZWxlYXNlMzEtbWFpbnQKKzgxODQ2IGY4M2YyMDFiMTI3NjA4NGRhNzNjYWU1ZWY3ZTk4MjhjNGI0MjY5MmMgcmVsZWFzZTMxLW1haW50Cis4MTg0NyAxOTY2YzFiYzkwNDhlNGVlZDFhMjAxMGE1ZDBlMjJmOTI2Njk5M2E0IGxlZ2FjeS10cnVuaworODE4NDggMjdkOWJjYzdlNjYxZWNiZDdmYTdlYjk4NWNjY2VlY2I4NzhkOTg0MCByZWxlYXNlMjYtbWFpbnQKKzgxODQ5IDJjZmUxNWIzY2RmNTUyYzA3NmM1YjYxMmFiNTEzOTVhODMyMzUwZDggcHkzaworODE4NTAgYjJjMTk5NTYzM2JkYzg1ZWJjMGVkY2NmYTcwY2IzYzlkZTNiYzkwMCByZWxlYXNlMzEtbWFpbnQKKzgxODUxIGQzMmIwZTgwZmFhY2QxZDA3NzI1MzU2NjM4ZTRhNzgyYjM0OTk1ZDYgcHkzaworODE4NTIgNmYzODU1MDM4OTE5YjYyMmI5OTRiODcxYjI5NTRlYjgwZWM3NzBkZiByZWxlYXNlMzEtbWFpbnQKKzgxODUzIDg2NGFjN2IzYzNkNmNlZjNjZjVhMmE2MjgwNmFmNTU0MWNjZjk2NDAgbGVnYWN5LXRydW5rCis4MTg1NCBkNzExM2NhY2Q0MjhiNjFiNWQ4YTNkNTk3ZDQ2ZDc1MjQ2ZjBhMjRjIHB5M2sKKzgxODU1IDZlNjg2NmNlYzM3ZWEyYzAwN2NjOTI3NjAzOTY4OWU2YzlhYmYyMWMgcmVsZWFzZTMxLW1haW50Cis4MTg1NiA5NmE1MTMzODI1ZDIzNjY4ODE4MTdkNzhhZDdlN2RjYzM2NDYzOTkwIHB5M2sKKzgxODU3IGM2MDQwMmZjMDY2ZjEwYzAzYTY1ZWMwODY4ZTYxN2U1MDI0YmI5YmIgcHkzaworODE4NTggYjZlZTIwNWI5NDk4YmQwZmU3M2ZhMTlmMzgyMWVlM2Q2MzUzZTFhMCByZWxlYXNlMzEtbWFpbnQKKzgxODU5IGYxYWFkYmViYzU3NzI5MTIzMTIyOGZkZjYyZTgzOTIxMjc2ZmVkNzcgbGVnYWN5LXRydW5rCis4MTg2MCBiYTJmMmQwODUwNGIwNTAwNmYxNzViNDU4MTQ2NmQzNDUwODMxMTEzIGxlZ2FjeS10cnVuaworODE4NjEgYzExNDVlNjY4ZDcyMDg2NDQ4OGRkY2UwMDE5NWJkYWM1NTk1NzM4YSByZWxlYXNlMjYtbWFpbnQKKzgxODYyIDg2NWUzNGNkN2U1Yjc2OTI5N2NhZGFlMDcwYzBmMWUyMGQ4MzljZjggcHkzaworODE4NjMgMzM3NTIzOWQ0MzcwZTJlNjZkODdkYjQ2ODgzZDYyMTJhNzJlNjExMSByZWxlYXNlMzEtbWFpbnQKKzgxODY0IDMyOWMxMjllMDdiNjhhZjI2Mjc5ZDQ4ZTljY2ZkOGM4YzhlZTg4OTggbGVnYWN5LXRydW5rCis4MTg2NSA4ZjU4YjllNTk2Njg4ZDQyZTY2N2FjZTY0ZWNkM2MwYWY4MzNkYTM0IHB5M2sKKzgxODY2IGEyZWExYTIzMTg2YjA4NzY3MDE2ODA4MTM5NjE1ZmU2YWU0OTE3YWQgcmVsZWFzZTI2LW1haW50Cis4MTg2NyBmMzNlNDY0YTlhNjBhYTlmMDQ5NzhjNmNmMGY1NTdmZWMwOGQ2MGU3IHJlbGVhc2UzMS1tYWludAorODE4NjggNWJmNzMzNmVhMGFhZDg5YmQyNDgyMjBjMjk4NGQ5MWQ3NTE3ZTJlZCBsZWdhY3ktdHJ1bmsKKzgxODY5IDc3YzBjYTY5ZDUxODRkODkyMmM1ZTE3YmM3NTU1NjNhZTZjYmY3MTAgcHkzaworODE4NzAgMTQyOWFjNmJlYmMzZjhkOWE3YWQxNzBkOTEyMjc1MjQ1NGJmODYzNyByZWxlYXNlMzEtbWFpbnQKKzgxODcxIGRkYjQ3ZmQ2MTJhNjcwMWIzN2Q1Y2YzNTY0ZTBlYWIwMGQzNTg0Y2EgcHkzaworODE4NzIgZTA4NzE2MjU3M2FjYzY3NjkyNmYyZThmYmRiYjE3YjRkZDJiYjc3OCByZWxlYXNlMzEtbWFpbnQKKzgxODczIGZlNWVkNzAyODNlZmU2MDk0MWE3ZWFjMzU0ODQxNGUzMzkxZDIwNTggcHkzaworODE4NzQgOGNmYTBkYzM4YWE3NDJiOTgwMzkxODRhMjZjNTBmYmZjMWVlYmNiYyBweTNrCis4MTg3NSBmZjUwZDQ1ZTA2MTgxMzUzMmQzZjYwNzY0ODk3YzY3OTlkOGNmYzJhIHB5M2sKKzgxODc2IGNkMTAyNDI4MWI3MzJiYjg0OGUwOWIxZWYwNGU2ZTRmZGI2YjA2MTQgbGVnYWN5LXRydW5rCis4MTg3NyBmMjk0NDczZDg3OTMxNWZiMzI2Yjc2OGU3ZGU0Njg4MTM1MmYzZDFlIHB5M2sKKzgxODc4IDdmNTQwZmU3NzVmY2NlMzVkYjdkMzZlYjg2NWY1OTY4NGNiZGI0YmQgbGVnYWN5LXRydW5rCis4MTg3OSA1ZmU0YWQ1YjVhYjllYjcyYTJmZDgzMDRhZGZkYTcyZjlkMmYyYTJlIHB5M2sKKzgxODgwIGRiZTdhZTY2NmNlMjI5ZDY5NGU4YTk2NzA5MTcxODQ2NzNiOGIwMjggbGVnYWN5LXRydW5rCis4MTg4MSAwZDE2NmU1Nzg4NGRmNDE3ZGE4MThmMTdhZjA5OGNiNzY1MmU0NzRhIGxlZ2FjeS10cnVuaworODE4ODIgYTg4NzJiNjUwNTc3NmE2NGQwZjI2OGQwNDdmZjZkZWM0Zjc2MzcxMyBsZWdhY3ktdHJ1bmsKKzgxODgzIDcyZjc3NDkwMzc3MjAxNmNmYzc0MzZmMTc0YjNiZmNiNDhhM2VmNmYgcHkzaworODE4ODQgOWUxMmM2NDlkMzEyNzVmMmMxYzc5NGMxZmEzYjRiNzk0YmNkNzg4NCByZWxlYXNlMzEtbWFpbnQKKzgxODg1IGFlYjQ3ZDMwZmJhNGUzOGRhMWU4ZjEyMjFlNGQwNjIwNDIzNzFlMWUgcHkzaworODE4ODYgMDc2NzYzYzY2N2Y5NTY1YjhlMjgyOTFlZWZhN2M0N2NlNGZiM2M1NCByZWxlYXNlMzEtbWFpbnQKKzgxODg3IDhjM2EyMjJmYTZkMTU4ZjVmYmFlYmEzYzYzZjUzNDkxZDcxYTZlZWYgcmVsZWFzZTI2LW1haW50Cis4MTg4OCA0Yzk5ZGE4YzFlODBlN2ZlY2IzYzg1NzNlNjdiMjBkN2M5OGVlODcwIGxlZ2FjeS10cnVuaworODE4ODkgN2VmNDZhNjFkYzk3ZWI3NTJmNDgwODY5ZGU4ZDczMTVmYmFiM2Q5NSBsZWdhY3ktdHJ1bmsKKzgxODkwIDM0MjBkZmM1NTliYmI4M2Y0NGY2YmFiNzJjOTkxNGExMWU4NjU2ZGUgcmVsZWFzZTI2LW1haW50Cis4MTg5MSA4MzE5Y2EwZDU0MzQ5MzEwYzVlZDc2NjJkMGQ3YmVjNWNmNGY4NDY2IHB5M2sKKzgxODkyIDQ0NjdjNGMxZDM4ZWNmZmZhZWMwZjIyNjUxYzU4MzlkOTU3MDFlMjUgcmVsZWFzZTMxLW1haW50Cis4MTg5MyAyNjY4NTMxMWQzMTMyNDEwYTQ3NzFkM2I1M2NjOWYxMjBmMWVkODZmIHB5M2sKKzgxODk0IDRjM2JlNzRjYTUwMTI3ZjA2MzhiNjhmZGUxOGMwNTg0YzRlNzRmNTEgcHkzaworODE4OTUgM2JhMWI1YjRjMTA4ODUwMDg0YzFiZGU0MWM5NzQ0YWJlYzMyNzExYSBweTNrCis4MTg5NiBlYmM0ZTg5NjkyNGUyYThjNGUwMDczNmYwMDJiYjQwN2ZmNmY1YzVkIHB5M2sKKzgxODk3IDZhZGM4M2Q5OTlkMGU0NTJkMDM2NmI5YTRkMTBiNzg2ZDZkZDJjNDIgcHkzaworODE4OTggNmZmODhkY2E4MTMzOTg3YzE3ODExZGIxN2ZmMDgwNjE3ZjllZDIyOCBweTNrCis4MTg5OSBjZDU5NmE4ZjkxZjM3ODYxOGNjYjUxOWEyODAxYjU5OGQ3MWVhOGFhIGxlZ2FjeS10cnVuaworODE5MDAgYjA5MWE3ZTQyODVmOTNjYjVmYTNkZjMwMTRhZjYwZDgzOWM4NmUxNiByZWxlYXNlMjYtbWFpbnQKKzgxOTAxIDJhOGVlMTFlM2UxOGEzZDQ0NzEyYTQ5MTU0NmMyMDRkOGI3MGVkNzkgcHkzaworODE5MDIgNzNkODJiMGI2ZGVlNGRhNWNlOWRkNWE4ODRkY2QyZDZiNWEyZTcwNyBweTNrCis4MTkwMyA1MGMyMzkxNzQ5NzYxOTM5ZWYyYTFlMzZjNWE5YTI5MWQyM2JmMWY3IHJlbGVhc2UzMS1tYWludAorODE5MDQgN2RiN2Y4NDQyNDE0ZmM0Yjg3YWUyOWY2YjAxNjc0MmRlNzg0ODg2ZCBsZWdhY3ktdHJ1bmsKKzgxOTA1IDlkYWM1ODE2M2I3OTk5YWM1MzA5N2E3N2Y3OWEyOGJjMzI3MTU5YjQgcHkzaworODE5MDYgNjYxNTE5ZmVjM2I4Njg4ZmM3NTA4NWE3YjE5YWIwMzRjYjZmMzU4MSBsZWdhY3ktdHJ1bmsKKzgxOTA3IDk4MjQ1NDY0YjY2NTRhMDVkYTg1NDIyM2FhOTFjMmEyYjU0MGE0ZmUgbGVnYWN5LXRydW5rCis4MTkwOCA3NTc2MjYwZDFiNjU0MTUwMDU4MmYyZTlkMjNjMDcyODRhMDcxMDMyIHB5M2sKKzgxOTA5IDIyYzA0NWQxYmM4Y2NmOTNjZjJhNDMwMWI0MGExMjcyMjQ5ZDc0ZWYgcmVsZWFzZTI2LW1haW50Cis4MTkxMCA4ZDVkZDIyNzY2ODA1NjRmNzM2NTBlMTY0Zjc5ZjhhYmEwZjMxZDRiIHJlbGVhc2UzMS1tYWludAorODE5MTEgODhhZWM1MTI0MTg1ZGZlNDE4MjFlZjgxNTU5MGE3YjIzMzNiNThjYiBweTNrCis4MTkxMiA0NGRjOTg1MDJhYzMyM2E1Y2RjOTE1N2FkYTk2Y2IxOTlhODYzODYzIHB5M2sKKzgxOTEzIGE2NTNlMzA2MTA4ZjUzNDNhY2JlNmI4NjY0ZTYxMDNmYzNiNjI2YzcgcmVsZWFzZTMxLW1haW50Cis4MTkxNCBiZDhhMWZkNGMzMTZmMjBkZWM1M2ZmOTE4NWExNmNkM2FiYzliYWViIHB5M2sKKzgxOTE1IGM4YmMyZDhlOWFlMWNmYzZiOTA0MWZlZjcwYTdiNzEwMTAyN2Y5ZTEgcmVsZWFzZTMxLW1haW50Cis4MTkxNiBmNTJhZWZkYWIxODIwZTY4YTJlNjUyM2ZjNmRlZDA0ODNkMThlZDNjIHB5M2sKKzgxOTE3IDJiMmY1NTNmMWNlNjExMDU4NDA0ZjFjNjNhMjE1YmZjMzBhZjhhYmUgcmVsZWFzZTMxLW1haW50Cis4MTkxOCBmNjBhYWY5OWI4MzZiZjZlZWUxODE2OTk3YzQwODY2YTFlNzY1ZDU2IHB5M2sKKzgxOTE5IGEyNTUxYjMwZjA0OTY0OTg1M2Q0MTgxODRkMjk3NmMyYmMzMjA4NzAgbGVnYWN5LXRydW5rCis4MTkxOSBmZTZiZTA0MjZlMGQzNTNkYjg0ZWM4NjlhNWIwMmRiYmE2YzNkNGE1IHJlbGVhc2UyNi1tYWludAorODE5MjAgMDE2N2Y5MTcyMWE4NGM2MThmZTIzYTljYzU2NGYwNThhZDI5YjA0NSBweTNrCis4MTkyMSA4NjI0NTgyODA5ZjljNzJkNGUzNDdkYzVhNWNmOWM4MzAyYTBiODhlIHJlbGVhc2UzMS1tYWludAorODE5MjIgZDkyODIwNjVmNWM5ZWJjMjRmZGVjNzAzMzVkY2ViMDZiOGNlMmEzNyByZWxlYXNlMzEtbWFpbnQKKzgxOTIzIDEzN2RhN2NlNWU4ZWQxYmI3YWY0Zjc0NjZmNTU4Y2M4YTE0NTY5MzUgcHkzaworODE5MjQgNzIxNjlmZmUzMmEwMmNlMWRlZjc0ZGY3YTMwMzBhYTY0NDVmYTZjNSByZWxlYXNlMzEtbWFpbnQKKzgxOTI1IDZlYWE3OWJlMDQ0OWZkMDRmNmRkYTdiMDBhYTIxODU3OWQ5MzRlY2MgcHkzaworODE5MjYgMTAzMTkyMTdhZjQ0MzBkZjRmZWVkNWMxZTdlMWViNjI2Y2E1MzY0MiByZWxlYXNlMzEtbWFpbnQKKzgxOTI3IDMwMjI5MDRmOTk3MTFiYjk3ZTI3MWM5ZjAwMDIxZjVjZmVjZjIyODggcHkzaworODE5MjggODE2OWYzM2YyMjY4OGYyNGEyYTQ2YjZkZjNlOWNhNDhiYTAwYzRiMSByZWxlYXNlMzEtbWFpbnQKKzgxOTI5IDQ0NGMwMjVlMjk4ZGEzNjk2ZWYwOTBiOGE1YjQyYWE4YjM0OGE3ZmMgcHkzaworODE5MzAgZTgwZGFiM2U5MDlmN2IzM2I5MTNjYmJiZGRkMjY3MmVmMTY1MGQ4NiBweTNrCis4MTkzMSBhMTBhN2NlOTdmNDVhN2I0ODVhNjQ3ZjkxMTA3MTgyOThhN2JlZWJmIGxlZ2FjeS10cnVuaworODE5MzIgODRkYWIyOWJkZWE3MGEzOTIzMTg0MzhjOTE3NjZlYmU5NDlhNjlkZCBsZWdhY3ktdHJ1bmsKKzgxOTMzIGMyYjkyMzgzNGRlYTc1ZGVhZTVhMzY5Y2M2M2RlOGJhYjYzMGY5Y2IgbGVnYWN5LXRydW5rCis4MTkzNCA2MWQ0Y2M2NzgxNjU1ZGU5OTljNmI4ZTgxNzU3OTM4ZGVkOWRiYzk4IHJlbGVhc2UyNi1tYWludAorODE5MzUgODAxMTBmZDQzMTkxMTkyOTE5ODY5NTg2NGU5ZDUzMTRkMzIyOTkxYiByZWxlYXNlMjYtbWFpbnQKKzgxOTM2IDZjZTdlYmNmOTM1OGRlNWY5NTYzMjUxYWUzYmI5Y2Q5YTE1N2M5NjEgcHkzaworODE5MzcgNTJlYjBjMDkzYjY4ODdiOWRlODY1YWJjNjhhZTU3NWEwODlkZmNhNiBweTNrCis4MTkzOCBhNDkwYWEzMDNkOGFkZGZiODMwMjA5NWM3YzA4NjA0NzExMDM1NDRlIHB5M2sKKzgxOTM5IDRlOWRkNmQ4MDA2MzgwZGRiZjVkOWU5OGI1NTUzMWFmYWI1NDhiZjMgbGVnYWN5LXRydW5rCis4MTk0MCAzMWYwMWM4ODFjNDYwZjM2YzA2OWFiMzNmYjU3YWVmMDI4MTBiY2FhIGxlZ2FjeS10cnVuaworODE5NDEgYWNhMTNhNWQ2MTQ0ZDM4YjY4NjI2YTg4OTliNmVhMmE2YWJlYjUxOCBsZWdhY3ktdHJ1bmsKKzgxOTQyIDQxZWQ1OGVkNWM5M2JhYzFkNjhlNTk2M2E0Y2NmYTk2NWU5ZDJjYWEgbGVnYWN5LXRydW5rCis4MTk0MyA4ZjI3YjYxYTQwZmE5OTA1MzMxYTczMDM5Yzg4MDU3MGJmYzM1YTdmIHJlbGVhc2UyNi1tYWludAorODE5NDQgNjA2YmFkNTg0MzQ0NjRkMzFjYTAwYjlhZTkzMTc5MGFkMDBmMmI3MyBweTNrCis4MTk0NSBkYjU1MTY3ZmE1ZTc5ODg4ZTc3ZGI0Nzc0Yzk1N2U4NzlhZDVlMjlmIGxlZ2FjeS10cnVuaworODE5NDYgNTE2MDA0OGQ1MzYxNzExMGMxODNiM2Y4ZTkwNmI0MTE4ZWM3YzY3MiBweTNrCis4MTk0NyBiZDg2YmJhNWVkMzNhMDFlYjMzNTk1YmE5YjZhMTMzOTUzYjdjZjYxIHB5M2sKKzgxOTQ4IGU1NWZhZDNkNWFlNDg0YzQxY2QxNzJlOGFhOWE4M2MyNDRkMjdkMzcgcHkzaworODE5NDkgOTU1MGVkYTFjMDk2NGU2NGNiNmQ3NjFlODMxZjVjYzRmZWI1NTZiYiBweTNrCis4MTk1MCA5YjMzM2JmMDhkNDVmNzVjMGI2OTFjMDBhODM1YjdlODNmYmRkNWVhIHB5M2sKKzgxOTUxIDQ0Y2FjNWM1NjViN2YwOTk5MzM2NzVlZTlhYzY4NDQ1MDlmY2MyMzMgcHkzaworODE5NTIgZDA2NTc3ZGI3Mjc4NTJjNTBiYmE0Mjk2ZDlkMzgyYzBiZDczN2Q2NCBweTNrCis4MTk1MyA3M2U1MzU0ZjkyZTcxNDI4YWNjMTMxOGI4ZThkNDQ3NTc5MjQyZTllIGxlZ2FjeS10cnVuaworODE5NTQgZTBjNGRhZGRmYzU0NjljZWQwNzc5MGQxYjc3OTA3NTY5ZDNkZjBlNiBweTNrCis4MTk1NSBiOTBlMzM1YTYwOWE5NzkxYzVkOTYwMjZjODRkZTVmNTA0OWY5OTI5IHB5M2sKKzgxOTU2IDhiYzBiZjIyMDE0ZDgzMWE4NDRiNTBkMjg1ZDlmODdiZjYzZGJkMWMgcHkzaworODE5NTcgMGE1NWFkZTZkODU3ODFjMzhjODIwYmY3NmIyMjY2MDM1OTc2ODFkNCBsZWdhY3ktdHJ1bmsKKzgxOTU4IDBiMmUwYjY4MzlhMjczNWJjOGYyMWM5YWZmOTNkMGZmM2YxMTJkNjggcHkzaworODE5NTkgYjAwYzczNjU1NWRlNzBlM2NkMmVhYTQ3YzAyYWM0N2IyNTY3YzkwYiByZWxlYXNlMjYtbWFpbnQKKzgxOTYwIDBmNWQxMTRlZmYwMTQ0MmEzYjIxMGNkZmZlY2M4Y2NlODcyM2ZjMGEgcmVsZWFzZTMxLW1haW50Cis4MTk2MSBlNTg1YjI0MzFjNGE1NDY5ZDViNDk4YjYyYTgwY2VhOGQ1N2FiM2Y1IHB5M2sKKzgxOTYyIDUyOTViNGRiZjM1NWE4NGQ2OTEwODQ4N2UxNTc3NTc1NTdlMTA5NzAgcmVsZWFzZTMxLW1haW50Cis4MTk2MyBiOWVjZGNlYzBmZjBkOGJkYzFmODhlNDNkZDI1MGRjYmIyNmYzMTZhIGxlZ2FjeS10cnVuaworODE5NjQgOGYxMzdhNWM0MTNjYTMxNjI3ZTlmNzlmZGVlNzllMzA1MjY0NmE4ZCBsZWdhY3ktdHJ1bmsKKzgxOTY1IDdhYzYxNDhlNmE3Zjg0YTZiZGVlNGFlNjk1YTcyMmMzNDAwMjBmMzkgcHkzaworODE5NjYgNGVhYzEzNWEzM2FmZDY5NGQzNzAzODUyZTQzZGRlYmNmOGE5NmJhMyByZWxlYXNlMzEtbWFpbnQKKzgxOTY3IGNmZjBhOTIzMTQwYmU4ZWM4Yjc4OGZiOGFmZTZlNmMxMTdjYTBhM2MgbGVnYWN5LXRydW5rCis4MTk2OCBkMDY0ZTg5MzRmNGQwY2NlMDRjOTVjYTVhODBmOTBlNTgxZmE1YTQ4IHB5M2sKKzgxOTY5IDJlNTJmYmNhYWE3M2JkZGMyMzExODE1MjUyOWQ1MTBlMWFiM2M1NDAgbGVnYWN5LXRydW5rCis4MTk3MCAxMzgzYjg0YjE3YWNmNzZjZTUxZjU3MzAwYTE3MTE5OTI0YjkzNDVhIHB5M2sKKzgxOTcxIGY4MmQ5NmI5ZjAzZWRhYWFkZWNiNDVlYjRhZTE1MzI3ZGRmYzEyMzcgbGVnYWN5LXRydW5rCis4MTk3MiBiMDg0YzBhOTM0YTdlOTYzODE3NDlkOGY1ZjdjYWNiMDZlNWRhYmZlIHB5M2sKKzgxOTczIGIzMmEyODE2ZjZlOWM3ODQ0MzkzYmRmNTEyZDk4NzRjZTJiZGVjNTMgcHkzaworODE5NzQgMDg0MGEyODNhZjVmOWFiNjJlZGFlY2I3MTlkOGVmZDgzOTkyZDRmOCBweTNrCis4MTk3NSA5Y2I5MDE2OWIyNWE4NjNkZjcyZGY4ZjVmNThlNzUyMWJhNmU1MDEyIHJlbGVhc2UzMS1tYWludAorODE5NzYgOTliODBjMjg4ZmFjNDVlZWQwZjgyM2U2NzJlZTZiNzVjNWQ1ZTIyNSBweTNrLWNkZWNpbWFsCis4MTk3NyA5MmI4YjY3ODQ0ZTEwMTdkNjZlNjlmODNlNjc4YTg2YjNhNDgwMDg4IHB5M2stY2RlY2ltYWwKKzgxOTc4IDg2N2I5NzZlMzQ5ZGFkMjM5OTdhODc4MTU1MDBiMTNkYWZlN2VjMWIgcHkzay1jZGVjaW1hbAorODE5NzkgMDcyM2VlMTk1NDdiOTU2MTVjMDZkYzExNTQ1N2M3MmMzYjA1YWE1MiBweTNrLWNkZWNpbWFsCis4MTk4MCBkNzhiMTU4MDg3MTBhN2Q2NzVkOGJhZjk0MTIyMzhlMDFmYWNmMTM5IHB5M2stY2RlY2ltYWwKKzgxOTgxIGI3OGE5MThiN2EwZWM2NGJlODljMmM4ZGFjZGYwZmE5NWFhYzE2ZDUgcHkzaworODE5ODQgOWJlNjBjMTg1MDMyYTY1ZTIyYTU5NjE4OTQ4MmI0NzcyN2M3ZDAxZSBsZWdhY3ktdHJ1bmsKKzgxOTg4IGVmNWRlNTZmMjRjNjRjZGUwNjA0YjNmNzExNDVmMzM3YjIyMjVmMDEgcHkzaworODE5ODkgNjIzYjczODExNmQyNDJmMGJiY2JmYmRjNWQ1OTE2ZTdhMzIwZjMzYyBweTNrCis4MTk5MCA5NWI1Y2EyNDY4Y2M2MGEyY2QyNDY0YjNlMzM3OTk1ZDIxZjQ3MWM2IHB5M2sKKzgxOTkxIGE1N2Q1OWNjY2I4ZmE1Y2ViMmEzYTIzZDMxNTc5ODEzZTAxYTYzMzEgbGVnYWN5LXRydW5rCis4MTk5MiA2ZjliMGMyNDAxOTFkZjczYzJmMTA1N2IxOTYyMTZiNjBlOTJkZDBmIGxlZ2FjeS10cnVuaworODE5OTMgOGYzZmNjMjM5NzgxYjc2NGMzNTEzYjFhZmZhYTBkZjhiMDhlMzFjYiByZWxlYXNlMjYtbWFpbnQKKzgxOTk0IDBlYmM3MmUzNjZhMWQ5NmZiOGU4Y2M2OTU1ZjcyODhhOWU4NGNjYWQgcHkzaworODE5OTUgN2FjMGY2N2ViYmJhODk0YmNkOWIwYjY1ZmE5M2E2MzY3YjZmYjU4NiByZWxlYXNlMzEtbWFpbnQKKzgxOTk2IDkxYmI1NzJiNzU2ZTA2ZDQ3NmQ2YmRhMDBiMDRmYzhlOTgwNjMzNTYgcmVsZWFzZTMxLW1haW50Cis4MTk5NyAzZWE2NmUzYTEyOWE0Zjk3YjNiN2M2YzQ4NWU3MjdkZDQ1Y2MwNDg4IHB5M2stY2RlY2ltYWwKKzgxOTk5IGU0M2FiNTJiNTdiMjM0MzllOTg4ZWNmMzRiNGQ3NWU4YTUwYzUyM2IgcHkzaworODIwMDAgMzJjNGZmZjQ0NWFkMmNmZmYwOTdhYzhmZTRmMzM5YTUzMjUwZjE4MyBweTNrCis4MjAwMSA0OWRkNTk5MTUwY2E3MTVjMjFlMGE3OWFhY2FkNjljNmZlOTE2NDVhIHB5M2sKKzgyMDAyIGZhODk3NzMyNGVkODY3MGFiMGFlMTdmNTljMmYxOTMyNTRhYzM3OGEgcmVsZWFzZTMxLW1haW50Cis4MjAwMyBmMTlhZTVjZWM4Y2U3OWYxNjA1ZjkzYmIxYjVmNTYzZDhhYjgwYjNiIHB5M2sKKzgyMDA0IDM1NGI3NTFlNDZkNjFjYjcxZjU5NDBiMDA4ODYyNDhhYWVhNzVkZDYgcHkzaworODIwMDUgMzU2ZDBlYThlYTM0N2YwZDdkMGFkYWE3NjUxNmEyNWU2YzZjOTlmMCBweTNrCis4MjAwNiAyNDY2YWZlZDZmNWVjZTY5ZTE1M2JhNjNkNzJlYWQ3ZThjMGUzNTExIHB5M2stY2RlY2ltYWwKKzgyMDA3IGI4NDg4NzM5ODc5ZWM5OGE1MDEzM2UxNzhkZTc0YjQwZGY4ZTJjMmYgcmVsZWFzZTI2LW1haW50Cis4MjAwOCA4MTg1NWNlZGMxNTZmNTk4Y2I2OTM4ZDdkOGFlNTg1YjUxZTA3NzY4IHB5M2sKKzgyMDA5IDQ4ZjU4NTk3NjBlZjRhM2JiMjg1ZjZiN2U2ZjgzZTc5MTU0MzM1NTYgcmVsZWFzZTMxLW1haW50Cis4MjAxMCA4YTg3YzVhZmFkZGFiZTMxNTg2NjEwY2Q2OTVmYTQ4MWJlMTEwNzRlIHJlbGVhc2UyNi1tYWludAorODIwMTEgNTg0MTM2NzZiZWZiNjRiYzMwOTQ3YTdlOTI0YmZiNWVjYTJkM2M1MiBweTNrCis4MjAxMiAyMmVhNjk2YWE3N2FjNjNlNTNkMjJiNmNkZDQ0MzQ5MWMzMDE0ZWVjIHJlbGVhc2UzMS1tYWludAorODIwMTMgN2JjODFmODUzNWVhNDE2MDRiNGZkOWE5Nzg5NTA4NmRjYjM0NzNjNyByZWxlYXNlMjYtbWFpbnQKKzgyMDE0IGFkYjhjODFjYzM5YTQ0ZjEzMDJmNDg5MjU2YjQ2M2JhY2I5ZmY1MjcgcHkzaworODIwMTUgOWRjODRjNDI0ZTQxMzY1N2FmODdmMzg3OTE2Y2Q0NzViNDZlZWYwZCBweTNrCis4MjAxNiA0MjJhMTgzZTBiYmRjYzcyYTgwNjVkMzgxZTk2NGI1NzhkNzgwYzMzIHJlbGVhc2UzMS1tYWludAorODIwMTcgMDAzMGE3NDcwNjY2MDExNmJkYjJkM2NjMDU0ZTk3ZjBkZGU0YmIyZSByZWxlYXNlMjYtbWFpbnQKKzgyMDE4IDg0ZmVmYmYxZDZjMDgwYjJiMTUxMzFjMmY4NGViOTQ5NjI1MGU2ZTMgbGVnYWN5LXRydW5rCis4MjAxOSBlNzUzNTYyY2MwMjNjMDNmMWFhYTM1MDgyNGIwNTVjY2VlMTE0YmM4IHJlbGVhc2UzMS1tYWludAorODIwMjAgYzQxY2I0ODRmMDkwNmNlMGY2YzM3NjUzOWRhNzM2ZTQzNWUwYzEyYSByZWxlYXNlMjYtbWFpbnQKKzgyMDIxIGQzMGY2YzU5ZjgxMDc1NzY5MWY1M2FlMGQ5YWQ5MDdiNTcyNzkxNzEgcHkzay1qaXQKKzgyMDIyIGQzMzc3ZWJkM2VlNTRmZmQ3N2ZhYWJmMjUxMGE2YTIxYzBhNjAzODYgcHkzaworODIwMjMgYjQyMzc3MDNhMGNjNTE0MTFmZWVhZjA3OWNjNDlmZDMxZGI2OGU0MSByZWxlYXNlMzEtbWFpbnQKKzgyMDI0IDgxMTM1Y2NmNWY1NWUzZTIwZGY2ZmE5ZDUwZTM3NWU3MjczOWE1YWEgcHkzay1kdG9hCis4MjAyNSA1NWUyNGMyNDNlMmYxYTg3Y2I5YzA0YWFmMzA2Y2FiMzliNzI3NDY2IHB5M2stZHRvYQorODIwMjYgYzY4NDVlODMwODZmNWY4MzE1ODk3ODRmZDJkNDkwOWMxOWM2YWVmMSBsZWdhY3ktdHJ1bmsKKzgyMDI3IGRhM2M0Nzk0ZDZkZDZjNTE5OTc2Zjk4NGVjZmE2Yzk3NmYyYTE4NmIgcmVsZWFzZTI2LW1haW50Cis4MjAyOCAzNDZjZTI1NWE1MmZlZjFkZWUxYzZhZjFiYzQyZDc4NWQyY2IwNWM0IHB5M2sKKzgyMDI5IGU0ZDUwNjQwZjA3NzdjNDc4NmY2MTQzYmJjZDQ3YmNhMDEwMzk2YzggcmVsZWFzZTMxLW1haW50Cis4MjAzMCA3MzU3ODJhMjc1ZjUwYTg1NGM3YjUxOGI2ZGM1OTEyZTM2N2RiZmJlIHB5M2staml0Cis4MjAzMSBmMzQxMzU1M2Y4ZjVlYTFhMjY5MmJkZDc2ODc1NzI5NjYyZjQ0YmE3IHB5M2stZHRvYQorODIwMzIgODU2Mjc2OTUyZTA4NjM5N2E1MDU3ZDI2N2Q0YjUyMjRkM2NhNTE5YyBweTNrLWR0b2EKKzgyMDMzIGJjYzBhOTk3ZjMyMWZjYWUxZDRlMTQxMTc1Y2VkZjY1NmZiMTM2NzAgcmVsZWFzZTMxLW1haW50Cis4MjAzNCA2ZDNiMDVhNDI5YjVhY2E1ZTJmNTBmYzQ0MTlhZTY4MGNjYTc3YmU1IHB5M2sKKzgyMDM1IDJkZDFmZTcwNDdmZmQ5ZmQ3NjZhZmJmNWFmYjIxNjg4NjI0ZmE5MjAgcHkzaworODIwMzYgMWIwOGE1NDE1NTFhYWQ4NjdlYzU5ZjhiNGNhYWIzMmU0ZmRhZDkwMSByZWxlYXNlMzEtbWFpbnQKKzgyMDM3IDI4M2Q5NDcyZGY0ZWQzYjdhNWJmODAwNGY0ZjFkNmUxYjgzMDA5NWYgcHkzaworODIwMzggODA3Y2RlYTQ3ODE3YmJlNzgyZTc4NjcxNGExMmQ4OWY4ZDFhYzkyOCBweTNrCis4MjAzOSAwMTdlNjBhZTYwNWY0YmUxZTIxMzY1MmFlMDE1MzkwOTViNWYyZTQ1IGxlZ2FjeS10cnVuaworODIwNDAgZjU4ODlmMmFjMzliYjM4ZTIyNjkwNTFkMzI1NjA5ZDNiZjk4ZjM0NSByZWxlYXNlMjYtbWFpbnQKKzgyMDQxIDJiYjBhMjdhM2UzNWM0MjdjYTBmZmIzNzI1ODkzOGE3MWRiOGU0ZjggcHkzaworODIwNDIgOGNjMGUxYzliYTZkNjA5ZmI4YTUzNWI3M2QwN2EzODI1Y2MxYWJlOCByZWxlYXNlMzEtbWFpbnQKKzgyMDQzIGNiNDk5N2I2YWE4YmU2OThiOWZhODkzOWQxNWFhZTJmN2NhNTZiM2YgcHkzaworODIwNDQgMmNjMDlmMDY5NTBiMDQ4MjVlMjM3NmUzZTEwYWY4MzU0NTU1Mjc3YSByZWxlYXNlMzEtbWFpbnQKKzgyMDQ1IDRkMjU2MzlhM2IxNGJkNmJjZTJkOGZjNDgwZTAwYTZhMWVkZDkzZWMgcHkzaworODIwNDYgYjFkNmNjYWQ4ZWFkNjY2NjRmMDZiMGI5Nzg5YjQ4MGQwN2FhYjRlMiByZWxlYXNlMzEtbWFpbnQKKzgyMDQ3IDg0ZWQzNDQ2YTI5YTFiODMwZjZiYWU3ZDBhZjM2MGQ1N2ExOWM1MjAgbGVnYWN5LXRydW5rCis4MjA0OCAxNzY0ZTBiZTQ4NGM2YzgyZjQwMGM5YTI2YjM1YTgyNTM3ZDVkYTlkIHJlbGVhc2UyNi1tYWludAorODIwNDkgMmZlMDgwMmM0MmM3NDVkY2U3MmM1ZmUwNzgwNWYxZjMwYjYyMzA3YiBweTNrCis4MjA1MCBjMmU3M2Q4NDRkODIyYmQzMmU4NGRkYmFhOTMwZDliNThiYjY2ZWM4IHJlbGVhc2UzMS1tYWludAorODIwNTEgYzQ4ZGRjOTZmNDU0YWUyOGI0MmZiODY1N2JiZTVjNTcxNWZlNWQ4YyBweTNrCis4MjA1MiA2YmZkY2QyNWVlYTcwZGYwM2UzY2IxMzI2ZGU4YzMwMGFhMTQ4NjUyIHJlbGVhc2UzMS1tYWludAorODIwNTMgNWMwZDhjMjg0YzMyZGM4ZTdhMDI2OTNmMjkyZDhiZTBlNjE4NzVkNyBweTNrCis4MjA1NCA2YTk5OTBlZjRhNmY1ZTk3MzJhMzk4YjFkYWIyN2Q4MzM5MWMzMGNhIHJlbGVhc2UzMS1tYWludAorODIwNTUgNDZhYjVlNGRiYTZiYWM3ZDFlN2JiMjBkYmNmZTAwMDVlMjhhNjYzYiBweTNrCis4MjA1NiAxZGE3NzMzZThmMjQ3MzFhMGI4OGRiZDY5MDc4MDRjYTAyYTExZGMzIGxlZ2FjeS10cnVuaworODIwNTcgZjNkZDkzMDY2NWJkMTc5MzYzMDg4MTMzMDRhMmM0MDg0YzViYjA5MSBweTNrCis4MjA1OCBkYTFhYWZhNTVhZTAyMzllZTUyNmZlYzg0YTRjNDA0MjY2YTEzMWNkIHJlbGVhc2UzMS1tYWludAorODIwNTkgOTA3ZjU2NDQ3NmJlNjY5ZWJlYWVkNDE4ZWZlYWQyZWJlNjBiZmNhYyBweTNrCis4MjA2MCA1OWM2MGE1OWIyN2E1N2U3YzRlMTYyYjZiZWQyNjRkZjAyYzZmZGI2IHJlbGVhc2UzMS1tYWludAorODIwNjEgOWQ0ZDRhYzBhN2JmZTgxMTc0YWY0ZDAxMTVlY2ZkMGQ0YTZhYzE5MCBweTNrCis4MjA2MiAwNzQ0OWIzNjc5MzU3ZGIyZWVhOTZhODMwMmRmODdjMDNjYmE1YjVjIHJlbGVhc2UzMS1tYWludAorODIwNjMgZmE4MzAzNzFjNzI0MTc0ZmJhMWI1M2EwOTkxZjBhM2Q1MThkMjEwNiByZWxlYXNlMzEtbWFpbnQKKzgyMDY4IDRkNjliZGI3MWM5YWQ1MWNkYzY4Njk2NDUyNmMyNTZkYmYyNzhkM2QgcHkzaworODIwNjkgNDYzNTYyNjdjZThmYmI1OWQ5YjA2NzUyODg1N2RhODEwMmZhZDVhNiByZWxlYXNlMzEtbWFpbnQKKzgyMDcwIGU1ZjUwMDhmZDU2ZDUwZjQ5ODAzYjVlNWRiMmY4OWJiNzBiOTI4MzcgcHkzaworODIwNzEgYmY5NGViOGZhZjYyNTM3ZmQ3NDQ2YmU0M2Q4OWM5YjIyYjM1MzVlNiBweTNrCis4MjA3MiBlYTI1MTI5Yjk0ZmVlYzUwMDk4NDgyYzRlZmE4MjVlZDcxZDUzNjU2IHJlbGVhc2UzMS1tYWludAorODIwNzMgOTBjYzI2Njc5OGEyNGZjNTBjMTViNzYyMWMxYjM0ODQ4OTIwMTE2NCBweTNrCis4MjA3NCBjNTRkZDU3NmRkMDU1NDgyZjFjYzE3MzA0NGNlN2VkMGQ1OGQ2MzYxIHJlbGVhc2UzMS1tYWludAorODIwNzUgZGE1NTg0NjFkOWE5NGJiN2VlOWU3OWZjYzJiYzBlMjRmZThhZTcwOCBsZWdhY3ktdHJ1bmsKKzgyMDc2IGVmOGEyYWIyNmU5ZmVmZWZiMzlmNTdmOWZjMzIwYWY4ZmI5NGM5ODEgcHkzaworODIwNzcgMWYwZTA3ODFmNzNlNDYxYjFhNTk5MGIxNWIxZWI1OWY4OWYzOTgxOSByZWxlYXNlMjYtbWFpbnQKKzgyMDc4IDVkZTUyZWIyNTJkYTcwNmRhM2Y2OTU0ZDUwZTFlODRhN2MxM2MwZjkgcmVsZWFzZTMxLW1haW50Cis4MjA3OSBkZDcwMDUxNDVmNmU2NWYyMzZlYWI1ZjIwODU4Nzk5M2IyYjNkM2NiIHB5M2stZHRvYQorODIwODAgMThiY2Y2YzJkMWUzN2IyODE4MTRmNDQ0MDU5NGQ4YmI3ZWJkMzVhOCBweTNrLWR0b2EKKzgyMDgxIGY2NzY3ZGRlOWIyOTg5Yjg3ZmYwNjMxNjYwYzdhNzk2ODZhNGUyNWMgcHkzay1kdG9hCis4MjA4MiBiNGE1YTg2OWUxYzU5ZDhhZjM1OTk5YTI2NmU4ZWRiYzg4YTY3N2ZjIHB5M2stZHRvYQorODIwODQgM2FmYzdkOGE0NDVhYTVhYzk1ZjIxN2M1Mzg3YzYzNzliNWM1NzU1ZCBweTNrCis4MjA4NSAwZGE0YzdkMWYzZWYyMzNlNWEzNDNlNjRmZDVjMjk0OWRkZDU3NzNlIHJlbGVhc2UzMS1tYWludAorODIwODYgYjkwMTlmMGRkODlkM2UxNzY5MTI1MmQxMjhmMTBhODM1ZjEwYmRhZSBweTNrLWR0b2EKKzgyMDg3IDQyOWIzMjlhMDNmODMzNGE2MjhjYWRjZjJlM2E2MzNkMTAwZjJhNDkgcHkzay1kdG9hCis4MjA4OCAzNDMwMDVjNGE0ZTNmNWUxZTFkYTA2OTk5NjI2NzJhYzZmNzIyMTQ0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjA4OSA0NDZhOTY2ODU4ZjE0ODFlNzA0N2JmMDI3ZWMyNzZlNDViNzIyZWZhIHB5M2sKKzgyMDkwIGM0ZjVjNzM0ZGE2ZTRjMTM3YWQwNjI2OTMzYTAwODc2YzU5ODQ4YzIgcHkzaworODIwOTEgNWEyOGM2Y2I0NzUyN2I5ZDQ3NzkzZmViZDhmYWUwOGQ3MzQ5MzUzNSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTIgMDY5NTM1ZTUwYTllNGZkZDRkZjBkYjZiZGU2ZmY5MTI1NWY1OWNjNSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTMgNDY2YzE2MmM3MzBjMjBjZDRkYzc2ZDM0ZGRhYWJlNGYyZjlhNjczMyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTQgODlhNDJlMDcxM2RkYjllZWIwOWRmNTAxMzBiM2FiYmNiOTg0OWZlMiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTUgZWQwNzc0MGM3NjY3YWZmOWU5YTcwZmE1NTFjMDUzMTFlNzk5YzlkZSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTYgODgwYmRlNWFiN2M1NDM0NTMxY2Q0ZDMyNjc4YmM3ZTdmYjQ2MDIwZCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTcgYWM1ZjU1MzdjNzNiNmRlNDc1NGNlOTE0ZTBjYjdkMThkMjk0MGY1ZSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTggODBkNDgwMDc3NDMzOWVlYjUyYmY2OWFkNmM3NjNhZmU4ZjZiZTc2NiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIwOTkgZjczZmEzNWY2ZjA1ZGU0NWI1ZGE2ODFkZjA5MzUzM2U0Yzk0MDY1NCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDAgMzVmODAxNTI2Mjc4ZDRhNGQyNjhhMjZkZjdjNjhjY2IwMWZiNDhlOSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDEgNWNmZTA1ZjJhNGU5YzU2YWMwY2EzNjIwMzg1NTVkNTAzMmNmOWYyZCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDIgY2VjMWI1NTg0NTE3YjA5NzUyN2UzNGM4MjU5NWQ2OTc0OTMyZjVkNyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDMgODA2MTNkY2Y4MDkxMGQ2ZDBiYWUzOTcyOTUzZTAwNTM3MWNiMTgwNyBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDQgNDgzZjM2MmI4ZWMzMDQzODMyYTYxMTdmNDQ1YTUwM2U4NjVhOTcwMCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDUgMzA2MzM2YTFjZTI5MTE3MGFlMzgwNDM2NGU0ZmZlMTZmZmJiYzdhNiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDYgYTU2ZmFhNmI4ZmEwMmZkNjY0OWMxMTllNjVlNWJmOWY2N2UxOGI2YiBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDcgMTk5MWE5YWFmZjVlMzk4NTE1MjI3ZTIzNTQ1NmM2MmUyMDczZTYzYSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDggYjYxNDY0N2EzNDAwNTJiNzE3M2UwMTM0NWUyNmRiYTVhYjU2YThhOSBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMDkgZWJhYzJlYjcyNTViNjU1M2IxZTczZDdkZDhiYTU5OWE2MDg0ODhiOCBweTNrLXNpZ25hbGZkLWlzc3VlODQwNworODIxMTIgOTM4OTZhMDk0NmMyZWY1ODRhOTdjNTNkZjA1OTQ4ODYzYTcyMmIwNyBsZWdhY3ktdHJ1bmsKKzgyMTEzIDVjODRmY2MxZDkwNmVhZWM5YjVmZDQwMDM1ZDdiNTE5MjMxOWYwY2MgcHkzaworODIxMTQgNmQ5NzQ2Y2Q5MzVjNjBkN2Y1OTc3NGY1MmUyNGQ4MDA4ZjhiZWFlNSBweTNrCis4MjExNSA2NTRlNTNlNzVjZDJiMDJjYWMzODAwNzExNzIxZTc3MWQwYjllNTUzIHB5M2sKKzgyMTE3IGVlMzVmNzE1Njc2MTJiMWU1OTc4ZDVjYWYyYmU0MDkyM2ZjNGU1N2YgbGVnYWN5LXRydW5rCis4MjExOCBjOTE1MzhjMWE3ZTZjMDc3ODgwOGQ5OTg1OGM1NzczMDIxMTk0NzcxIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjExOSA2YWNkZGI1ZmU4ZTIxYmU2ZGFjMDg5NThkNzMwMjU5YmY4ODdhMDQyIHB5M2sKKzgyMTIwIGJkZWY0NTRmNzIxMmE4YmFiZTAwZGY2YzlkOTFjNTc3MzllZTUzYzggbGVnYWN5LXRydW5rCis4MjEyMSA5MjM3MzUxMzcwMzBmMmM0YzkwNzEyOWIxMzdkMTc4MTMxYmU4NDk2IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyMiAzZjA5Y2MzOGU5N2UzMGNlMzM0MWRhMzVhMmEyNzkwODVlMWEzZjliIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyMyA5NjVhNDRjMmIyOTdiOWI2Y2UyYzg3NDBlYjE4MTAzZmRhOTZkZGE0IHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyNCA1M2QzZDA2OGJmNGM0YjllNzIwZGVhOGU1ZjFhNzhhOGEyMTg1Y2NhIHB5M2stc2lnbmFsZmQtaXNzdWU4NDA3Cis4MjEyNSA5ODYzYmM4NjMwYTM5ZGQ3M2FhNmU3ZDY4YmY1ZGVmMjY4MzZiYjc3IHB5M2sKKzgyMTI2IGNlMjFlYjVjMTdhNWYzMDNjYzI3OWIwNTRjNDA0ZjdmNzAyODVhZGEgbGVnYWN5LXRydW5rCis4MjEyNyBkMDE0ZDFmNjU4MjMxOTVjMTFhZmMzMWEyZWE2N2RiMmVjNWZkZTlhIGxlZ2FjeS10cnVuaworODIxMjggZGQ4ODA1N2IyN2IxY2Q5ZjViZTliZGYxYWE0MjViYWRkYTFiMzk4OSBweTNrCis4MjEyOSBmM2Q0NWM0NDNiMTM3OWUxOGJmN2Q4YjY4NzJmZDIwYTcyNzY4NzE3IHJlbGVhc2UzMS1tYWludAorODIxMzAgMWE4NmQ4NDVmYmM2ZjM5NGFkZDZhNDIwYzI3Zjk4YTgyNTBiY2I1ZCBsZWdhY3ktdHJ1bmsKKzgyMTMxIDczZjhmYWNhMjkwYmZlYjY0MGNjZmJlNDFlYjY4NmMwMjUyNTllZjcgcHkzaworODIxMzIgYTEwMWQwNzNhNWNkMWZiYzQ1NGZjYjVjMmYwNTU1ZDU2NjVlOWNkNSByZWxlYXNlMjYtbWFpbnQKKzgyMTMzIDFhZjk1Njc0NTg4ZDFkM2FlMmNhODg1ZWQwMzIxNjBmODk1ZTJiODMgcmVsZWFzZTMxLW1haW50Cis4MjEzNiA1ODE3Mzk1YTA0OGU1ZmYxNGZjODUxNDc3MDZlZmJmNjA1ZjUwN2ZhIGxlZ2FjeS10cnVuaworODIxMzcgMTNlNWIwYjIwNzFhMmE0MjA2N2ZiMDNmYWNjOTMxNDA5ZmE2YmE1MCBsZWdhY3ktdHJ1bmsKKzgyMTM4IDdlNGNkNzAzYTE4YjczMzNlODg3YjU1Yzk1NzEwNDA5MjFjNzI5ZDkgcHkzaworODIxMzkgMWYxMGM5MTJjMTI3ZmMzMGRmOWZlNjMyMjE2Y2RmZjA1OGY5MWRmYyBsZWdhY3ktdHJ1bmsKKzgyMTQwIGRhYTkxODg4ZGE1MmEzOTY2MzU5NGQ0MWIwYmYzNzgxOWEyOTIwYjcgcmVsZWFzZTMxLW1haW50Cis4MjE0MSBmMjY4YzJhZTA4MzVmNDI0YjNiMDdkZGU5Yzk0Y2M1NDE3YzNlMDIyIHJlbGVhc2UzMS1tYWludAorODIxNDIgYWY3NTFhMWQ2ZjQ0OTQ3YTI0MTQzYWVjNTVhNGE3MDc3OTIzOGFlOCBsZWdhY3ktdHJ1bmsKKzgyMTQ2IDBjZDk5ZjhjMzBlMTM5MDAwOGE5NWUxNDBjNjRjMjk2NDg5MDRiOGYgcHkzaworODIxNDcgMGFmZDc2MGU3Yzc2NTMxYjBkZmQ0MWFiMzAwNTVhMTQ0OGYyMGRjNCByZWxlYXNlMzEtbWFpbnQKKzgyMTQ4IDBiN2FjZGJkMDJlYjM0Mzg0Mjk2OGM3ODU5YzNiMmYzN2M1YWZhODkgcHkzaworODIxNDkgNWEzMjVlMGYxZmQwMTM1N2Y4NGI1OGI1ZWVlMTUzNjRjNDM2N2FiMiBsZWdhY3ktdHJ1bmsKKzgyMTUwIDZlNWQyMWUyMjNkMjI0ODQxNmY2OGVlZDBkNGRhZTljYmViM2U4M2EgbGVnYWN5LXRydW5rCis4MjE1MiA1NmVkNjhjMjE1YTcxZmY5N2E0MmZmNTk2OGY1Njk1MjJhYjNjMDExIHB5M2sKKzgyMTUzIDVkMzJiNmFmYjUyZWVlZDkyNjRkNTI2MDUyMzdkNjMxMTU0MzdlZmQgcmVsZWFzZTMxLW1haW50Cis4MjE1NSAxMDhmOTRkNTNlZGJlMmExZDBhYjgzMGIwOTJiNGIxNzRjM2FiODk4IGxlZ2FjeS10cnVuaworODIxNTYgZDlmY2JhNGNjMTQ1NDVhOWE4NGU0ZmRmNzlmODBiMDMzMmE0ZWE3YiBweTNrCis4MjE1NyBmOTE4ZDM1ZWM1NmI4NTI4OTAzOTQ5ZTYwZmIwMzAxOTk3YTAxYTQ4IGxlZ2FjeS10cnVuaworODIxNTggMzc2ZTgxZjllYmIxZDM5MWY3YzliYTBjNmQxNTU3NmQ5NzRkYjk2MSByZWxlYXNlMjYtbWFpbnQKKzgyMTU5IDkwNjA2M2NlNzExOTY1OTU5Yzk5ZGI0NWJmODUxMGFkOTNmNjc0ODcgcHkzaworODIxNjAgMTg2MzVjYmQ2NmUwYTMzYWQ0MjllNTU0MWE3ZmY3MDk3YTJmZjQ2OCBsZWdhY3ktdHJ1bmsKKzgyMTYxIGY3OGZjYjFiMjNmNWI4ZTAwMTAzZGMxNmUwODAyYjUxYWUwMDdmM2MgbGVnYWN5LXRydW5rCis4MjE2MiAxYzY5NWMwYWFmZmI0OGMyZDIyNmM1YWE3ZjJlMDQ2MGZiYzY1MWFhIHB5M2sKKzgyMTYzIDRlMjRkZmVkZjgwYzUxZTUwMDlhYWI5NjQyYWVhNjg4NjFhNjY0NzAgcHkzaworODIxNjQgYTEyMDZhNjllNzdhNTNiOTBjYmQ2NmNhMDRkNDkyYWYyZDFlMGEzZCByZWxlYXNlMzEtbWFpbnQKKzgyMTY1IDUzYTE1MmI0MDBhN2U1YmM2M2MzZTcyOGQ5ODI0MmVhMTJiMWE2YjAgbGVnYWN5LXRydW5rCis4MjE2NiBmMTdhMmMxZTI5MTkyOGM0NjM3MTZlMDA0NzE3YzhkNjliOWViMmMyIHB5M2sKKzgyMTY3IDRkZDhjZmY2YjdiZWIxZjZmMTAzYzRjY2U2ZTA4ZDA0NmI4ODBjMTYgbGVnYWN5LXRydW5rCis4MjE2OCBkMTViZThiNWM3Y2FkOTZkNGZiZjNkMDZiZDFhYTkwZDUwZDZhYTBmIHB5M2sKKzgyMTY5IGU5ZmIwNDJlNDZmYjUwMDA1Zjc3ZWExNjQzM2U0ZjQxODVlZjQyZGMgbGVnYWN5LXRydW5rCis4MjE3MCA4ODM2ZDI3MTY3MGI2YmI4NjRmMWFiM2M0NGQ2NTJhOTkyMjY4Mzc5IHJlbGVhc2UyNi1tYWludAorODIxNzEgZWI5NWFmMGE5OWNiYjFiYTBhYmY1ZGE1YTQxOTZmOTU1NmIzZDM2ZSBweTNrCis4MjE3MiAyOTA3Y2U4YmZiYjYwMjc2MTdiOWZhNDA5ZmI2MjA0ZGJiOGM2NjZkIHJlbGVhc2UzMS1tYWludAorODIxNzcgY2E0ZjJlOTg2OWI2NzUyZmNkOWNiYWIxMTJiMTFkOTI2ZDc3YzZjOSBsZWdhY3ktdHJ1bmsKKzgyMTc4IDQyNmVmOWMzNzkxNmZhZmQzYjhiNWRhNDY2OTcyMTBlOWIyOWY2ZTIgcmVsZWFzZTI2LW1haW50Cis4MjE3OSAwNzQ4NTllY2RjMTg3MzIyZGE5NjIzNjdlZjBkN2FlZWRiNTEyNzBhIHJlbGVhc2UyNi1tYWludAorODIxODAgNzZiYzZiNTc3MzczY2Y1NGRmZWRkMWIxMGIyZjc0ZDQ5MzU4M2M3ZiBweTNrCis4MjE4MSBjOGQ1ZDEyMDVmZTgzMGE1YjFkNmE0MjA2MDFiNjFiYWJlZDBjYTE2IHB5M2sKKzgyMTgyIDBlNDYzN2VhMjBkMDAxM2E1NzBkYzkxMjA2OGRjNzQzODUxYzM4ODAgcmVsZWFzZTMxLW1haW50Cis4MjE4MyA2NmVmOWE3N2M4YWZkNWNjMTg1MmE2NzYyMmFhZTMyZTgxYWVhYzA1IGxlZ2FjeS10cnVuaworODIxODQgM2NmMzUyMzFmN2QzZWQzNzVhMWE5OWRmZDg1YjZmZjBiYzY2NmFmNiBweTNrCis4MjE4NSAzYWZlMzYxZWZjZjM4YmY4ODY2NWVhNzEyMzE3NDBhZjdjMTc3ZjVhIHB5M2sKKzgyMTg2IGNmNzk3NDFmN2EyM2ZjNTVmZTUwMzdhNzViYWNmM2E0ZWMxYzI3N2MgcHkzaworODIxODcgOTVkMjAzNWExNjRiOWIwNWUwNTQwZDY2YTgzNjU3YzE0YzUxMTRkYyByZWxlYXNlMzEtbWFpbnQKKzgyMTg4IDVmNDU2OTI0ODlkYTFmZDM1NjFkMDYzOWM2ODA0ZjNkMTBkYTdlZGYgbGVnYWN5LXRydW5rCis4MjE4OSBjYjFhYjhlOTE1ODEwNzA4N2UwMWMzZjllYTJmZTg4NWU1M2MzZTc5IGxlZ2FjeS10cnVuaworODIxOTAgNjFmYzg0YmM0YjE0NjI2NWQwY2M5YmQ5NDQ3MzY5M2FlMWRjZTEyNyBweTNrCis4MjE5MSBiMTdmY2RkMzhhNWI0MDJhMGEwMTE5YmNiNjBjMTIzNzA5MTE4MjUzIGxlZ2FjeS10cnVuaworODIxOTIgMGQ0MjQ1NDEyZDBiNTMzYjU1OTk1ZWRhMmE4MzQ2ZjAzZDI4NDEzOCByZWxlYXNlMjYtbWFpbnQKKzgyMTkzIGM1NTE1N2UwM2FiOTQzZjk4YmIyYTRmNDY5ODY4MjVlZjZiYWZmODAgcHkzaworODIxOTQgNDViYWE0MjlmYzQ5Y2NkOTkxNWI2ZDMyMDQ1NTMxNmVhYzk1YTI3ZCBweTNrCis4MjE5NSAzZDZmMGEyMDUwZTI5MjZmNzA5M2RhMmIxY2U5NTEyNmJkZmM1NThkIHJlbGVhc2UzMS1tYWludAorODIyMDAgNWQ1MzhkMWU3MDk4ZDk2YWExYjE5YWM1NTEwMzY3N2RhMWJhZTA2NiBweTNrCis4MjIwMSBhMzliNTJlZTBiMWQ0ZDkyZWFiNjJhYTk5ZGZhZWM5MDNiZDhmODQ3IHJlbGVhc2UzMS1tYWludAorODIyMDIgODkzOTcwMTQxNjA4MmEyOWJlNTE5NGYwZjU1ZDBmNTE1ZTZmNjM0MyBweTNrCis4MjIwMyAzNDc0NGE3NjE0M2E4ZTY1NmUxYjYxYTdjOTRmM2QzZDY4MjMzYzEwIHJlbGVhc2UzMS1tYWludAorODIyMDQgMjFlODZkZDMyOGYxNTdlYzVmYzczMTFmNzUxOWQ1ZDNiM2Q5NzI4MSBweTNrCis4MjIwNSBiOGIwYTE1ZjhhN2NhNGU4NDMxYmE5YTBhNTNlYjM4NGYyZmQzMDIwIHJlbGVhc2UzMS1tYWludAorODIyMDYgYmI2MjIyYTRlZDI0MjZlOWM3YmVjYzk4NzVmMWMwOTViMGUxZmJiMiBweTNrCis4MjIwNyAxM2IyYTU5MmMxODY4M2UyZmRmZTA0NzZhMDgxM2I1YWQwYWJhMDAwIHJlbGVhc2UzMS1tYWludAorODIyMDggYmNjMGU4MjVmYWEwY2E4MGU5MzNhNzM4NGRlYThmYzk0OTI5YzBlMSBweTNrCis4MjIwOSBjNGRkNWE4ODllY2RmYjY4M2ZkOTY1ODZlZWM2YzJkYTUwYjM5OTc2IHJlbGVhc2UzMS1tYWludAorODIyMTAgNDZiNDg3ZTRhNzViOGMzOWYwODgwZmQzYzljODY4M2E0YzYzZTkyMiBsZWdhY3ktdHJ1bmsKKzgyMjExIDU3MTE1YWIwNmIyNzgwMDYxMzZkYTM5ZWY0ZGI3N2I0YTkyNWJmMzYgcHkzaworODIyMTIgNTk4ZThkYzE4YjgzZTg5ZDZiNzAyYzk0MjVhMWZkMGFiYjljYjk2MiByZWxlYXNlMjYtbWFpbnQKKzgyMjEzIGVmNjQyZTI0MDQ3YWI2ODE1NjQ4ZjNjOWUyZGM3OWIxMTFlN2JhMzUgcmVsZWFzZTMxLW1haW50Cis4MjIxNCA0ZTA5OWU1MDA0YTFlODI1Y2MyNDRmMTEzNzExNmE2YTU3OGQ2YTU3IHB5M2sKKzgyMjE1IGQ5NmFjYzQxYzU5ZjJmNDc3ZDRhZGE1MWI0ZWRjMjI4ZDRkZGEzZjggcmVsZWFzZTMxLW1haW50Cis4MjIyMCA2OWZkZjY4ZTBiNWI0NjA0MTE1MmIyMWIwYzA4ZWI5NDdhNWUwNzE1IHB5M2sKKzgyMjIxIGJhNTU4NDRiZjVjMDMxNGI2OTU1M2YxYmI3MzdiMjZlYjk0NzZjOGMgbGVnYWN5LXRydW5rCis4MjIyMiA4M2NhMGVhOWVmMWZiMjE2Y2FmY2Y1MGU1ZTZhYmJlMGRmNmE2NGQwIHJlbGVhc2UyNi1tYWludAorODIyMjMgMWM1YzE0NmRlNjQyNWQwMGUwOWQwYWM4MzViOWYwZDlkNWU1ZjgyMyBweTNrCis4MjIyNCAwYzg3NDkwNzY3YmYxYzUxNjc5MjYzNmNjN2FlMjE3NGY4MDZjOTAxIHJlbGVhc2UzMS1tYWludAorODIyMjUgYjY2M2NmNmJiZThiMzcxY2JjNGIxMDZkOGZhZTk2MTc0OTI2ZDk1MyBsZWdhY3ktdHJ1bmsKKzgyMjI2IDA5ZWIzNjI2ZDJhYWU4MTFkNmU0M2IzMGVjZWUzOTMzZDM3YTU3OGIgcHkzaworODIyMjcgM2QzMTA4YWMyMmIyYzZlNTY4NTUxOTcwNmE2OGRhNTA5MjFiOWNmNyBsZWdhY3ktdHJ1bmsKKzgyMjI4IDJjZDIyMjU3YTg2ZDdiODA2OWE2MzBlNGE2MDRkMDZlOWU1ZGNlOWQgcHkzaworODIyMjkgYTM0ZmQ2ZjgxNjUxNzliZmEzNTJmZGYxZTFhOGJiZTgwMDQ3YjlmMCBsZWdhY3ktdHJ1bmsKKzgyMjMwIGUyNDk5MGQwNTQ0ZmZmZjlmMjRhNjc2YWNhNTBhYzVhOWExMWYxNDEgcHkzaworODIyMzEgZjIzMmM1NjlkMjI1ZDdjMTQ3MGQyNmM2YzAxYTVhZDdhNWM4Y2VhMSBweTNrCis4MjIzMiBjNTFiZjMxNTNmMmNhODliNDBhODhiNjA0YjI4YzBhZjEzNGYzMmJjIHB5M2sKKzgyMjMzIDFiYTBhYjAyZTNiODU3MDczNDFhYWZmMTIyMzdkZWZkMzI3Y2IyZjkgbGVnYWN5LXRydW5rCis4MjIzNCBjYjZkOWJkNTU5ZWZkM2FkMzM2ZTU5NDg1NWNlYTFhOWY0NGVlYThkIHB5M2sKKzgyMjM1IGE0NTZiMDBjM2I3NTNiZGQ5NjVlZTc4NTgxN2JjMDBhNTc1YjQ3NzAgcmVsZWFzZTMxLW1haW50Cis4MjIzNiA3ZGNjZTZhMjgxY2UyYmY2YTVkNDdlODk5OWYwZTkzNDIwY2Q3MmRmIGxlZ2FjeS10cnVuaworODIyMzcgMTUyYjQ0NjQyYjJjNDE3ZWI2YWUyYWIwMjRkM2ZlNmZmY2ZlNDMxOCByZWxlYXNlMjYtbWFpbnQKKzgyMjM4IDRhZmVmMmU0MGI2MzMyNDliZDYwYzM2NTZiNGVlNTNmNjZhZWExZGUgcHkzaworODIyMzkgMjE1NTJhNDhlYmQxOTY4ZGI5MTU4YzQ5NWZlNDliZTU3NzBhNTMyNCByZWxlYXNlMzEtbWFpbnQKKzgyMjQyIDJmNmZlZDYwNjEzZTEyYzhlOTIxMTMzNDBlYzZhYzVjMWIwZjQ3Y2EgbGVnYWN5LXRydW5rCis4MjI0MyA3YjA0ZDlhNjk4YWVlNjc2YzJiMDU4ZGJlOWJhMjU0NzYzZjEzZjU2IHJlbGVhc2UyNi1tYWludAorODIyNDQgZDE3MTI3NmVkNzZkYTcyMzM0Yjc4MDA2MmZkMmFmZGQxNWUzZDIyMCBweTNrCis4MjI0NSAxZGNhZTUyYzQ5NWM4NDZjMWNmY2Q2ZDhkYjlkMTEzMmI0NDU0OTc0IHJlbGVhc2UzMS1tYWludAorODIyNDYgMjllNTA5NzkzZDNjNDgxOGE4ZjBjNTcwYmY2OTVkOTA1MzU1YTQ4YiBsZWdhY3ktdHJ1bmsKKzgyMjQ3IGFkYWZlZTk1ODllNDQyOWFkYWIwN2ZmMmNjYTUxZmYwYmQzMGNjMTIgcHkzaworODIyNDggZWQ4OWIxYWFkYzkzZDJkMWRhNzkwODkzNTU4OTM4M2E0MGQ0NzI5ZiBsZWdhY3ktdHJ1bmsKKzgyMjQ5IGM5MTJiNWIyNGM4ZjJkMWIyNGE3MDc0NWYzMjZhMTg0YzcwOWMzOWIgcmVsZWFzZTI2LW1haW50Cis4MjI1MCAwMTRlN2MwMGRjMjgwNTgzMWYyZWYyNGYxNDY5OWFkMjViZTFjN2U1IHJlbGVhc2UyNi1tYWludAorODIyNTEgMzk2ZWI2NjBlZTliNDBiZDllZjI1ODUyZjUwMjMwN2VmZTZmM2JlMCBsZWdhY3ktdHJ1bmsKKzgyMjUyIDM1MmRkYTA3NzA3YmY5MjhkM2RiOWU5Y2U0YzhkOGYxY2JkOGZkMjEgcHkzaworODIyNTMgYTM5Y2ViNmNlZGUzMTVkODMzNTgyMzM3N2QyYWIzMjVhMjA0OTZjNiByZWxlYXNlMzEtbWFpbnQKKzgyMjU0IDQ1NmQ2YzVkMjZkYzZlNmU1ZWY2NTk2NzUwMWEyMGQ2NThhZjM0Y2QgcmVsZWFzZTI2LW1haW50Cis4MjI1NSA3ZmQzZjZlYWY2NDk1YzMwN2RlYjQ1OTY4MzMwODdjMWVhYmNkYzIzIHB5M2sKKzgyMjU2IDcwNjY4OGZlNDU5MzU2NzNmOTUzNDQ4Yjc4YTdiMjJjZmNjMzE1ZjcgcmVsZWFzZTMxLW1haW50Cis4MjI1NyA1ZmIzZjFhNzQ3MjZhNmI4M2Q5YWFiNGRjMDczZjgxZmUxMjE1YjczIHJlbGVhc2UyNi1tYWludAorODIyNTggZjZkNWVhNzY5MjcyNzk2MzQzMTgzMDI5ZTQyZjk2NDI2N2ZjMDM4MCByZWxlYXNlMzEtbWFpbnQKKzgyMjU5IGU0NzUzODU1ZWMwMWJiZTUxNjE0NzIyN2I1MTdmN2Y4NjUxYTU5MzUgcHkzaworODIyNjIgNmVhNmQ4NTE1MGIxMmI4MWI3OTM0OGE5MTM4ZTQ2YThhOTlmOGE0NCBweTNrCis4MjI2MyA1NDdlNjVkYjRkMzg4MmVmZWI5OTMzN2RjYzI0ZmQ5ZTVkMmY5ODQ4IHB5M2sKKzgyMjY0IDZiNDU0Mzc3YWZmZWQ1OGY3NzdkNTA2MGNkYmQ4YWE1M2FjODM1MjYgbGVnYWN5LXRydW5rCis4MjI2NSA4MTUyODRjOWQ3MTkxNTRkYTM3OTMyMGExMWFkYTlkZjAxMTkzYzRiIGxlZ2FjeS10cnVuaworODIyNjYgNjc2YTQ4MGVmYzA4Y2JkYTRjZTg1N2I5NTE3OGViODkyN2FjMmY0MyBsZWdhY3ktdHJ1bmsKKzgyMjY3IGY3OWJlNzk4MTMwZjJiMWNmYzg1YjJmYmY4OTFhZTY4M2RhNmQ4YTYgbGVnYWN5LXRydW5rCis4MjI2OCBlZTFlZDgwZDc5NjMzOTE3OTVjYzI1MTU3YjRlMzI4NjBkZjgwMDZiIHJlbGVhc2UzMS1tYWludAorODIyNjkgMWEzZDhlYzBjNWZhOGFiNjVkZWUxNTU0YjQzZDk4NzAwNjY1NjZhOCBweTNrCis4MjI3MCA1YjM4YjUyMzRkZWRiNzJhZGM3NDZkNTI2ODQ0YWQ3NTFkMzZjMDBmIHB5M2sKKzgyMjcxIDAyODQyZWNkOGU1Yjk0YWRhOGJhYzNiZDYyMjkzYWZjNTdlZDdmN2UgbGVnYWN5LXRydW5rCis4MjI3MiBhM2RkMzllMzZjOWRmMTljNjAwZmY1ZjgxYTlmY2QzZDJkNDNkN2I4IGxlZ2FjeS10cnVuaworODIyNzMgZjExNzRlNzlmN2Y0M2U3NTk3ZjZiNzNjNTEzM2ZhMDMxMTQ0OWEwMCBweTNrCis4MjI3NCBkM2M3NWMyZjQ2YmUyNmJiYzY5ZWYwOWZjMmY2ODFhYjFiMzRmNjkxIHJlbGVhc2UyNi1tYWludAorODIyNzUgMDIwNDQ1NzNlZWVjMWVhYTMzYzNhYTQ2NzMwYjhmNTlmNDNjYTA3NCByZWxlYXNlMzEtbWFpbnQKKzgyMjc2IDZiMDMxMjQ5Mzc1NTllNzA5YjRkODJlYTFhN2RhOGNiMWQ5NjczZGIgbGVnYWN5LXRydW5rCis4MjI3NyBjNTA1NjM4MjQwOTQ0NDlhNzgwMjk1NGQ5NjU3MmE3OTRhYTdhNGJmIHJlbGVhc2UyNi1tYWludAorODIyNzggYzg4Zjc2MDBiYjE3YmFlNzA4NTgxNmUwNDRlYjQxYzNkNmM3YWQ5YiBweTNrCis4MjI3OSBmNTA1ZGYwM2E3ZDdjYmY3Mzk2MTJkNzI0N2RhZDE5YWE0MTVhN2E3IHJlbGVhc2UzMS1tYWludAorODIyODAgYjA0Y2VmNTVmZGY0M2NjNmMyMjhjM2E2MTU5YjAxZmM4ZGM2ODhiNSByZWxlYXNlMjYtbWFpbnQKKzgyMjgxIDdkOTI4MDI5YmMwZTlmMzYwNjdlN2MwZDdmYjViOWUzMzc3YTNhODYgcHkzaworODIyODIgZWVlMjU3OTI4MzAwMWE5ODA0OTU2OGYyZWQ0Yjc3Y2RmMWQ0MzJjNSByZWxlYXNlMzEtbWFpbnQKKzgyMjgzIGRjZjliY2Q5YTFlMDgxMDQ3ZGRmM2YwM2IyZjllMjBmOGI5ZjNmZjcgcHkzaworODIyODQgYTE4MzIzZmJhZjk1OGZhNDdhMTUzMDA0M2UxMTAxMmRjN2UyMWY1YiBsZWdhY3ktdHJ1bmsKKzgyMjg1IGRlZWQxNTZkMzNkODA2ZjBkZGMzNjhiZDc0MGQ5ODEyMGM1MjQyNzUgcmVsZWFzZTI2LW1haW50Cis4MjI4NiAwYmUyNDM5YmJjZDgwMTg1ZmVjZTIxZmEzMGQzZWJlOTUxZjMwMGJhIHB5M2sKKzgyMjg3IGU2NDc0NmUwMmU0MTAxMDBmMjZlMmI4YTEyZTE3Y2YwNzU0OGFiOWUgcmVsZWFzZTMxLW1haW50Cis4MjI4OCAyODE4MjgzYzE0OWEyZjQ3YmUzODBiZDJkOTg4ZjZjZjRkMzUwMWI0IHB5M2sKKzgyMjg5IDkzM2EzNTU2ZjU2MzM1ODhmYjEyYjM2ODhkOWYxYzdmM2VkMDI4YzkgcHkzaworODIyOTAgZWMwZmQ1YTZiYjQ1NmY3ODdlMDQyN2ViMGI1MWNlZmFiYzc5MTYyNyBweTNrCis4MjI5MSBjYjZmM2E0NDFhYzJkZTE2ZTFlZGZkNmRhY2M2ODFlYTRmOWNmMDU0IHB5M2sKKzgyMjkyIDJmMzUwMWY4ZDQ1NmZkZmQ0MGNkYTBiYzI5MDcyOWFkYTQzYTY2OTEgcHkzaworODIyOTMgMzU4ZDg2YTU3MmZiMTg5YTI0MzUwOWU4NjU5NWZlYTQxNzY2YjhjNyBweTNrCis4MjI5NCBjYmQ1MTM5ZThmZTQ4OTc1Y2RiYTlkMzI1MmM5ZDczYjZhODY0ZmU0IHB5M2sKKzgyMjk1IDA4OTczZTYwOGEyYTQ0MGY1ZTc1YWQ2YmRhZDk0YjM2ZThiYTFjMGUgcHkzaworODIyOTYgMDU1NTg4NGU5ODYyMzRiODMyMDkzYTczOWVlYjcwNjE0N2MxY2JjMiBweTNrCis4MjI5NyA4MjBmM2I2Y2I1NTExODc0OTc3MWZkM2NhOWRiMjQ0YjJmY2UyZWU4IHB5M2sKKzgyMjk4IDUwNGM0OTllOGM5NTgyZDViMTdkYjY2YTczMWIyNjYwODI1ZTMyMTIgcHkzaworODIyOTkgOWYyMjk0ODc0OTEwY2VkZGJiMWZlNWZhYTYxNzNlNTBhYjlkMTM1OCBweTNrCis4MjMwMCA4YTdjY2I5NjE4MTQ1OTFmOWJiODc4NjQ3ZDk0YzFmNTYwMGEyZWRkIHB5M2sKKzgyMzAxIDhkZjYxOTI1OTA1NjRlNjVlNjdhNjRmYzA2MWEyZDIzZmEyOTY5MjIgcHkzaworODIzMDIgMzI2NTFlZTc3OWVkMDBjZjE3MjA3NWUxYWUzYTE1MDA5NzdhYTM0YiBweTNrCis4MjMwMyAzNjcwYzY2ZWUxNDlhNWMzODM5OTZiOTI3MzFkOTA0OGNlYmQ1ZDU0IGxlZ2FjeS10cnVuaworODIzMDQgMWQxNzk3YWY0NjIyMGI1NzIwNTJkMTBhMWViYTE2MzQ0ZjkwZjUwNCBweTNrCis4MjMwNSBhYTI2MmM1YjE4YjUzMjZkYmExMmNmMmJlODkzMzhkOGJiOWQ2OGM0IHB5M2sKKzgyMzA2IDkzNTA3NWQzMzVmZThiZTdiYmI4ZWUzNzVkODZjZjVhMjRmMzM5OWQgcHkzaworODIzMDcgNDZmZWM3N2Y5NWU4ZDE1ZWQwMjQ3NjkyNmZjYWNiZDU2OGQ1NGEyZSBweTNrCis4MjMwOCA2ZWM4MjVjOWIzYjUwMWYyYWMxMjg4MzJkYjczZjJmNGQ4NGU3YjZlIHB5M2sKKzgyMzA5IDJlMzc2MDNjYTA0ZGEyNmI0MTM3MTViZDg5ZGMyZTg1MmIwZjUyYzAgcHkzaworODIzMTAgNGFhNWI5NTg5YzQyMTIwOTIzODJjMWEzZDk2N2Y0YjIxNTU1MTg0MSBweTNrCis4MjMxMSBhODU3ZGQ0MDc5NjQ4MmZhZjQyYjgxNmFhMzlkYjI4NWFlMTFlODFjIHB5M2sKKzgyMzEyIDJiYzA4MDAwYTg1NzI3ZTEwZWE5NDgzNDFkMDQzYTVhZGNhMzkyZWEgcHkzaworODIzMTMgZGQzMGJjNWQxODRlOTE0NmFhOGU0NWI0ZmIyNzRmODlhNzFlMzlmNyBweTNrCis4MjMxNCA0ODkzZTQwMDlmNTY3MTI0OGI4NmIwZDE5Zjc0Yzk4OTFjMzhkYjdjIHB5M2sKKzgyMzE1IDlmNjk5ZTUxNGE2MmMyN2U1Mjg2ODNmZWNkMTA0OWJiMzFjYmQ0OTAgcHkzaworODIzMTYgYTljZWQ0MjNkYWNlNzVhMjczMmE1ODEwM2NhMGY4MWQ5MGM4MjcwZiBweTNrCis4MjMxNyA0N2UyOWE1YzNkZGZmZjI1MGRlMzYzYzUzMTlkYzU5NGFmOTY0ZGZhIGxlZ2FjeS10cnVuaworODIzMTggM2JkY2RlY2VhNTYxMGUyNmY3NTM0ZmE5NjIxNjZmYTlkODljNzI5MSBweTNrCis4MjMyMCBiMDdiMmM5NTRhODA3N2Y0YzlhZDNmYzQ4OTMxNGVkODU3NGYyY2ExIHB5M2sKKzgyMzIxIGQ3ZTM0MjNjOWRhODIwMWJiNGIyYWQzZTIzZTkyNDQzMGFkMDNhZTMgcHkzaworODIzMjIgZTQyYmU2ZTZhYzJkNzM2NDJkM2YwMmE5ZjNhMWZlZmRkOWMxNzMyMCBsZWdhY3ktdHJ1bmsKKzgyMzIzIGZkMWExMTI5M2U2MmUxY2I0YmMyMDE3OWI4NDY0OTlkOTQwZDVhY2UgcmVsZWFzZTI2LW1haW50Cis4MjMyNCA5ZjAxODhlNGY4MWE4ODYyNzA5NGZlMWJhM2U2M2I4ZTQ5OGZhMjMwIGxlZ2FjeS10cnVuaworODIzMjUgMjAwM2I3MGE5YmFkZGI2NTEwZThmZTk5MTRiNGE5ZGQxMTUyMDIwMSByZWxlYXNlMjYtbWFpbnQKKzgyMzI2IGVhYzY0YTQ2MTBmMTIyNjJiNmI1NWIxNDNiNDhkYWY0N2UzMDhmMTYgcHkzaworODIzMjcgYjhkMzY1ZGExNzk4OTQxYjc1MzEyNWVkMmJiNThmOTUxYzNhMmU0YiByZWxlYXNlMzEtbWFpbnQKKzgyMzI4IDI4ZjlhMDAwYTM3OWQ0YzVlMTA4YWY1OThmMTEwM2U4ZmJkZjA1MTUgcHkzaworODIzMjkgM2NkMTZhYzUxODc3MTUzZWIyZmQ4NjUxY2VkNTEzNmYxMGJmYjYwNCByZWxlYXNlMzEtbWFpbnQKKzgyMzMwIGMwYTQ5YjZhNmZiMTFkODgwNjgwOTZhODlkZTlkODgwOTViY2Q4NTkgbGVnYWN5LXRydW5rCis4MjMzMSBmODE2Yjk5MWU1YjMxY2E3NzIxZThjMjcxMGU5NDVkMzdkZTM5YWYyIHB5M2sKKzgyMzMyIDg4Mjc2MTdhMDdkYzkxZjZlMmQ2NDM2ODVkNzIyYzk0NTZiNmRiMjQgbGVnYWN5LXRydW5rCis4MjMzMyBkNzE0MTFhMGE0NzMxNmFlYjM4YzFlYzlhOGQxNDAzNjdjZjZmMDE4IHB5M2sKKzgyMzM0IDJkY2Y0N2I1OTQzZjRlZTRmNWQ5MzE2OWI2MTEwZTFlYzU0YTZhNDMgbGVnYWN5LXRydW5rCis4MjMzNSAzN2NlNWFkYWU4YjliODhlOTc0YTVkOWE5ODZjOWNiMGQ5NWNkY2YwIHJlbGVhc2UyNi1tYWludAorODIzMzYgNzQ2NTc5YTllYWQ3MDVjZTdmY2RkYWQ1ODhjNTNhMWFkNzNhMDZkMCBweTNrCis4MjMzNyAyNWI3MjIxZGRhNjkxYmM1YWIzNGU1YWFlOTU1ZTcxNGY5ZWRmMWUwIHJlbGVhc2UzMS1tYWludAorODIzMzggM2NiM2NlN2RjYWI4NTBmOGYxNWNkYjdkZmZiZTI1N2FjNWMwN2MwMCBsZWdhY3ktdHJ1bmsKKzgyMzQwIDAyOTA0YzZlZTUwMjk3NjExM2QyYTZhOTQ1MTM0ZTg3YTZjMzlmNDQgbGVnYWN5LXRydW5rCis4MjM0MSAyNTIwYjgxOGRhMDUyMTkzZDhmYTBmNzM1MGE4NmNhNDMwMzU3NzdkIGxlZ2FjeS10cnVuaworODIzNDIgYzhiZGIzMmIwNGFhYWNhYWIyYzk5OWRkMjViNzE4NDY3NjE2Mzc4MSBweTNrCis4MjM0MyA2OGI2NzBmMzYxNGU5MGI0MWRkZmJiYTdkYzEyOGQ1OTU1ODAyNDk1IHB5M2sKKzgyMzQ0IGNlMDMyNTI3NmQyYWZhZjI0MDM4MWIyMmQ0Mjc5NjEyZGM5MGViMzkgcmVsZWFzZTMxLW1haW50Cis4MjM0NSA5Y2E5NTI0ZDNlNTc4YTQxYWQ1ODQyYjJkNTJjOTY3ZTA0MzgzNzU4IGxlZ2FjeS10cnVuaworODIzNDYgNjlmNmQyMTMwMjgxMjRjNzMwOTk1ZjdlYjljNTc1MTQzOTM2ZmNiMiBweTNrCis4MjM0NyBiODE3ZTcxNjUxNmVkZjAzYmY4NjM1ZDc2NDYxNTI3OWRiODBhYWQ4IHB5M2sKKzgyMzQ5IDk1ZjhiMjVlNTNjZTA5ZTRlZTgxMzFkYjNiNTg1MTNmNTc0NDU4YjggcHkzaworODIzNTEgMmNmNGNhMWVkNmQ2Y2Q2ZjNhZWRkMDZkYTc4NWY3NzNlOTBmYzA2YiBweTNrCis4MjM1MiBhY2Q4NjQ4ODY1YWFjNWUxZjNjZTc2ODdjZGI2NWFmMzk2ODc0MGEyIHJlbGVhc2UzMS1tYWludAorODIzNTQgZGZiZGI5OGM5MmU3ZjFiN2YzZjZkNzczYzZiZTVhN2VkMTYyYmJkYiBweTNrCis4MjM1NSAwZTE2ZGRkNDQxNTc4ZWJkZmNjZDc5MTAxZjVlYTVkMjAxMjQ4NWFhIHJlbGVhc2UzMS1tYWludAorODIzNTYgMmE4YzY4YmEwMDBiYTRmMjA3NWQ5ZjY5M2RjODk3MTA4MTU2NjQ2OSBsZWdhY3ktdHJ1bmsKKzgyMzU3IGViZmI2YmMwODJkOTJlZDlhNDk5NGMwMTQ3OTNkYTc1OTgzNTcxOGMgcHkzaworODIzNTggYTRlMWM1NmJlNTMyY2U1OGY1NTBhZmNkZDRiMGRhY2ZhZmFiNTFjOCBweTNrCis4MjM1OSAyZjkwNTFmZTZhZDljNjUxNTIwZjRhMWE2ZTMyZmQ0M2FkM2M5MWUzIHB5M2sKKzgyMzYwIGZlNDQ4MjhlYTdlZGRlMWRlYjU3NjkxNDlmNTQxOWVkZDZlMjk3ZjMgcHkzaworODIzNjEgYzUxOTI5MjMzZTE5NTQ5ZjEwNDAyMTNlMWVkNTc2OTI0MmFlNjk4NyByZWxlYXNlMjYtbWFpbnQKKzgyMzYzIDE0Zjk0YzAxYTAwMmE1ODExOTdkM2U4ODk0Y2MxOGZjYzVkZTAwOWYgbGVnYWN5LXRydW5rCis4MjM2NCBmN2I1NDM1Mjc3MWQyY2ZiYjdjMjA4NDk2ZGZmMTVlYzU1OTdlM2ZmIHJlbGVhc2UyNi1tYWludAorODIzNjUgYjcyYzMzZjQ5NmFjOGUxZDc1NzczMDY5NWU5Mjk4NjIyMDhmZDYzOCBweTNrCis4MjM2NyA3MTk5ZmYzODZmOWVjN2NmMmM5YWJiY2FhODYwMmI3YzEwODI3ZWY2IGxlZ2FjeS10cnVuaworODIzNjggMmY4ZDE3NjI2Y2RmZjQ0ZDVjY2EwMWU4M2E2YmIzMDVjOGE1Nzg4ZiBsZWdhY3ktdHJ1bmsKKzgyMzY5IDE3ZjE3ZGM2ZDQ4YmM0ZWI5ZjgwYWEwNDUxNmE2NDQ3MmVmODIyMDMgcmVsZWFzZTI2LW1haW50Cis4MjM3MCAwNzEzMWYwOGMzZGUxOTVjMDM4MzU5MWMzNDViNGFhMzIzZWUxYzBiIHB5M2sKKzgyMzcxIDI5NjQyNDM3NDgzNjE2NTZkOTAxMDY4NjcwMzU4NmJjOTRhNmYwYmYgcHkzaworODIzNzMgOWUyOTFhYzA3YzViY2Y1NzI1MGY1M2VkNDVjNmZhOTBlMzZmYzQ1ZiBweTNrCis4MjM3NCAwZmU5NzkzMjY0MmU3N2JhN2U0MmQ0MzU5ZGE3MzFlNzczOTAyM2IwIHJlbGVhc2UzMS1tYWludAorODIzNzUgNTA3MjU5MGI0ZGZkYzRmMDNlNzAyZTA1M2UzZDFjNjc5ZGRjN2E4YSBweTNrCis4MjM3NiAyOTBiZDBjMTUwYTY0NThkODE3MmExNDA5MTk3ZWYxNDk4YmY1NjhlIHB5M2sKKzgyMzc3IDE1ODE2NmVmNmYwNmQwMTRmZGUwODk5NWRmYWU3YzdmODU1NjIyZTcgcHkzaworODIzNzggYTkyYWM3NTcwMTE4M2FhMTVmZTI5NDY2OGEyNGFjMjhlMTUwMWJiMSByZWxlYXNlMzEtbWFpbnQKKzgyMzc5IGI1ZGZhMzM5NDk5YzI4NDQxNGM2MDQ3NTZhZjUxYjU5ZGQ3YzdhNmQgbGVnYWN5LXRydW5rCis4MjM4MCBiODhkYTRmNzdmNjg2Yzc1ZDM0MTExMDcwNGZmMmE0ZDM2NGMxNDBkIHJlbGVhc2UyNi1tYWludAorODIzODEgZmNhZTk1OWEyZmFiNTJmNDA2ZTdlNzIxYjVjZGE2ZjQ2ZWJlM2I5NSBweTNrCis4MjM4MiAzMjFlZGJhNWY3OTViZjZhMDBmZWQ2YTZiNjE1YmZjOGUyNzVlNDVkIHJlbGVhc2UzMS1tYWludAorODIzODMgMjVmYmYwMjMxMDJkOWI5MGM2N2U0OGE0MmM0ZTQ2ZjE2YjAxMTY3NiBweTNrCis4MjM4NCBlNmJiOTkwYWM5ZjY4NzAyMDRiY2M2MDIxMDI4YmZhNzZhNmJjMmQ4IHB5M2sKKzgyMzg2IDRmY2UyNWFiZmRkODJmYmQwNTFiYjEyNGM2MDc5ZDhiMzg2M2E2MDYgcHkzaworODIzODcgMTZkODhlY2EzYzMzYTE5ZGYyNWRkNjVmMzIyZGIyMGEyMThmNjFiYSBweTNrCis4MjM4OSBkMzRjZTBkZTk0MWNhODlhNGMzM2Q1OTNjNTUxZmJlODZjOWVmMGQyIHJlbGVhc2UzMS1tYWludAorODIzOTAgZTZmMWIzZDEwNDBhNDc1YTA0NzY1MjFiYWJmMTVlZTQyODliMzM0OCByZWxlYXNlMzEtbWFpbnQKKzgyMzkxIDJiYzU0ZGE0YjgyYzFhYjRjMjllNDcwZDcyYTZmZjY4OWJiZmJlNmEgcHkzaworODIzOTIgMzA4NDNiZTJlMTFhMjZjMzQ1MWUxNjAxNGMzYTc1NDFiODk1NmY4ZCBweTNrCis4MjM5MyAwNDNlZjA0ZjY0ZDIyYzdiNjk5ODgzNGRiYTYwMTNlZjJjNjQzYTM5IHB5M2sKKzgyMzk0IDMwZTFkOGQwODEwNTc4MGYzM2YyYWM0ZmJmMWJhNzNhZGNhYTk5YzAgcHkzaworODIzOTkgOWRjYzkzZmU3NTI4MmVkZjhkMmQ4MmY3YTQ4MTE5YjU3MWNkNWFhZSBsZWdhY3ktdHJ1bmsKKzgyNDAwIGM1YWZlOTU1Mjc3OTNjODI4ODQ2YjM4NmFlNDA4M2YwZTkyYTllYjAgbGVnYWN5LXRydW5rCis4MjQwMSA5ZjU0MzBlNDc3NzAwN2UzZTczY2I1MDVlNzJjNTQ2NTRkYzNiOGE4IHJlbGVhc2UyNi1tYWludAorODI0MDIgMDFjOTU4MWM3ZTNmNDk0ZGMwZjAzMjNjYzEwNTdlYjhiYzA5ZDFiYiBweTNrCis4MjQwMyBlOWM4YTk2NTg0ZDQzNGUxMDYyM2NmNGUzMGMxYjlmMGJmZTg0YjA3IGxlZ2FjeS10cnVuaworODI0MDQgNzZiYzI1NWQyOWZkZjRlM2JlNzBlMDY4NzdmZDA1ZTM4Mjc1YmIxZCBsZWdhY3ktdHJ1bmsKKzgyNDA1IGRiNmZkNDA1ZTU5NGZkNmMzMjk4MjYzNDUwMzcxZjE1OWE4ZmE4NjEgcHkzaworODI0MDYgODE2Y2Q4NThkMzMxYThkNTA2NjQzOWNjNmVlODczOWFlOTcwMWYzZCByZWxlYXNlMjYtbWFpbnQKKzgyNDA3IDNlODc4ZTI2OWIwOWVlNWIxZDA0NjFhZWQ0ZjRmN2NjNDhhNzM4YjAgcHkzaworODI0MDggM2E5M2EwNmU1ZTMwY2RmYTg5NGI3NTdlZmVmYjM3ZDc3MjdhY2FiNiByZWxlYXNlMzEtbWFpbnQKKzgyNDA5IGIwNDYxNmJlN2YxNGQ3MDYwNDQ3ZjAzM2Q0ODY2MzRkMjQ0ZDk5NTAgbGVnYWN5LXRydW5rCis4MjQxMCBjZTgxNDIyZWUzNWIzMTA1OGU4ODA0ZmNjZWRhODU5NWRlYTk3NzczIHB5M2sKKzgyNDEzIGUwZDVhNGE0OTExMmEyOGUxMWQwNzk5Nzg5N2EwNzQxNjE4NTIyYjggcHkzaworODI0MTUgOGI4ZjM2OTk0MWMxZWRiNDI4OTA2ZDUyNzliZmUzMzQ2Y2MzZjBmOCBsZWdhY3ktdHJ1bmsKKzgyNDE2IDMxODViMDU1ZjkzNzY2ZDJhY2Y0ZmI4M2VhODcxYjA1NGU5YzZmOGEgcHkzaworODI0MTcgYTg5YTNkOTJmOGFlYWRmYjgyNWM1NDM2NmRjOTJmM2E5NTQ5MmU3NCBweTNrCis4MjQxOCBhOWEyNjdhODFkYWM0MjNhZDU4YmQ2NDVhMGUwZGFkM2JlZWQyNmQ3IHJlbGVhc2UyNi1tYWludAorODI0MjAgYzUzZTEzNWEwOGI2OTBhOTA0NTcyN2VjMzk3N2I1ZDAwZGEyMDk1NSBsZWdhY3ktdHJ1bmsKKzgyNDIxIGE5MjcxOWI0OWU1ZWJhZTg1ZjAzYmI3YTNhOWFhN2M3NWZmMDg0MDEgcmVsZWFzZTI2LW1haW50Cis4MjQyMiBmYTExZDJiNGY5OGEyZWViMTE2MWU2N2YzOGJkZWU3YTkwNzBiNDYzIHB5M2sKKzgyNDIzIDEzYzA2YTZmNDY3Njc2ZTZkZDkzMGUzNWFjODgyODllNGI0ZGI4MzAgcmVsZWFzZTMxLW1haW50Cis4MjQyOSA0M2YwNmNhMzZhYjMwZDE2OGEwY2YwN2RiYWViNDM2ZGVlYTA5M2YxIGxlZ2FjeS10cnVuaworODI0MzAgZmU5NTUzYTZmNzk4ZDcxMTkzODZiZTY2ZTkyZDVmYjQ0MGY4ZDJjZCBweTNrCis4MjQzMSA2ZDBkZWRiM2EyNGVjMDc2NzQ0N2UxYjk5OWJiZTFmYmI0MzI2NmMxIHJlbGVhc2UyNi1tYWludAorODI0MzMgYmE5Y2YwZGYyMWIwMDk5MDcyZjFhM2FjODA3NDNmZTliZTZiZDBlZCBsZWdhY3ktdHJ1bmsKKzgyNDM0IGZlZjYzNDhjMmRkNmNmMjFiNTEzN2YxOGE5NzVlMjYzMWY3ZTc3OGMgcHkzaworODI0MzcgNGIwYzg4Mjc1ZjNiNjQyNTg1Mzk0NDExODRlOWMzNjY5YWY5ODlmNCBweTNrCis4MjQzOCAzNTM3MGQ3MjM2YzljNmFlNjJiNjQyMDUwNTg4ZDgyYTA5OGM3NmNmIHB5M2sKKzgyNDM5IDE3ODY2MjhlYTZmZjY0MTBkYjkwM2VmMjRlZjEyNGVkNTg2NmU3OWEgbGVnYWN5LXRydW5rCis4MjQ0MCBlMTdiMWNiMWI2MWM5Y2M2M2Y2MGZjMWVjOWMwOWM0YTcwMDdiMjg1IHB5M2sKKzgyNDQxIGY0MzBhODkxOTZjOWFmZWYzZGVmNzhhMjk3NWQzYTkyZTI0MWU5NTggbGVnYWN5LXRydW5rCis4MjQ0MiAzMzA0ZGM1NmRkYTQ0MDdmOGNjNjUyODg3MDhkODg5YWZiNjdhNDc1IHB5M2sKKzgyNDQzIGIzYmZhYmMwNDQ3YzUxOGE3ZjhiNmI1M2VlODAzZTkxYWIwMmFkMjMgcHkzaworODI0NDQgMzZhYmQ3NTU0YmFkOGNjYTI3NjczNmRkZjRmNGMzYjYxZDVlMjQyZCByZWxlYXNlMjYtbWFpbnQKKzgyNDQ1IDhhNjg5ZjI5Nzk3MGM5NWM0MDY5Y2E5ZjkxMDZhZjZlMjY5OTc5MzggcmVsZWFzZTMxLW1haW50Cis4MjQ0NiBlZjY3OThhOTllYWQyZWI2NzAzM2E5Nzg3YjgzZjI5OGYzNDQ0YjU2IGxlZ2FjeS10cnVuaworODI0NDcgYjU0MGE2MTJmNjAxNzAxNWViYzU5NWU2MGUzNDRhZmVhOWM3MGJhNyBsZWdhY3ktdHJ1bmsKKzgyNDQ4IDdmMTQ5NmU0MTEyNDczOGRlZjRhNjc4ZmZiZjZlYWMxYWI2ZDZkMzUgcHkzaworODI0NDkgZTgzNGM1ZDNhOWEzM2UzMDQ1ODZmMDkxYjExOWExOTA1OGJiNWRiNyByZWxlYXNlMjYtbWFpbnQKKzgyNDUwIGFlYzQyMjExMWNkZWEzNTczN2YwOWI5Y2YwM2YzMDFiMDdhNmY4YTAgcmVsZWFzZTMxLW1haW50Cis4MjQ1MSBmMWJhNGU2ZDZjMTIzMTczNDIxZGZjMzBhOGE5YTcwMGIzNjk5YTg5IHJlbGVhc2UyNi1tYWludAorODI0NTIgNjFhZDY4OTRlZDZhYTc2YzBhMzk5N2M4NWU5ZGE4YTk3NzE1ZjViMCBweTNrCis4MjQ1MyBjYjc4MDBjNjQ5MTIzY2M3NDMwYWUzMTJhYTY2MmZiNWE1OWZhZjZkIHJlbGVhc2UzMS1tYWludAorODI0NTUgZGUxNmE5MTViZDJhYzdkNTg3ZDIwYzMzNzA2YTE2NjU4YzM1MDIwNCBsZWdhY3ktdHJ1bmsKKzgyNDU2IDUyOWIyMTc1MzM5YmYwNjE1Nzc5ZmYyY2I4NGU3YzM5NzA3YTM4OGMgcHkzaworODI0NTcgNDNjMDQ3MTFhYWNiY2JhYjUyNGFkZWNmZWE4NGRjZGM1NTkzMjkwMyBsZWdhY3ktdHJ1bmsKKzgyNDU4IDMxNDQzY2Y0ZGVmMmYyYzFiNTY0YzRiN2U4MTZkNGViNDg5NmVlODggcmVsZWFzZTI2LW1haW50Cis4MjQ1OSBmYTE2YWNiMmZmZGQ2MTg1YTYzYWRiZGQ5YmNmMTM3YWM2NzJlNmRlIGxlZ2FjeS10cnVuaworODI0NjAgYzcyZmQ4YTJhZTAxZDA2NmIwZmE4ZThjZGNjYmZhZmNhNzFhMzRiNiByZWxlYXNlMjYtbWFpbnQKKzgyNDYxIDFlYjM2ZjE2OWM5NzI4ZmZjNzAzNzM5ZjQwYmE0YjRjNmY2YmY2YzggbGVnYWN5LXRydW5rCis4MjQ2MiBkM2ZhMTk5YjRhMTc0NjZkOWQzNTZlYWE2ZTUyZWJkNGVjMzhmMzk4IHB5M2sKKzgyNDYzIDhiZjZkOGJlYWZlMWQ1NGU4YzcwMTNmNjYzZThjODc2NmVjNTk2MjEgcmVsZWFzZTMxLW1haW50Cis4MjQ2NCBmMjcxZTFkMGU5YzQ0MjQ5NTRiMWM4Zjc2YTRiN2JkN2MyYTRmNmFlIHB5M2sKKzgyNDY1IGQ4MzFmYzBjMjYzNDJjMzNjZDc1M2I0MDI0YzE1YTc3NjQ5OGYzNTAgcHkzaworODI0NjYgYjhiMTFkNDM0OTQwNjFkNDJmNGY2YTE5MTBiYmI2Yjg2MzlmOGNkYyBsZWdhY3ktdHJ1bmsKKzgyNDY3IGIwYmU4OWY3MGZmOWI3NmVkYzBkYjQxY2EyMDhkOTFjZjZmNzBiMzYgcHkzaworODI0NjggOTkwMGE5OThiNDYwY2VkMDBjNWYyNDJkMjhkMmE4ZTNkZTlhNjcxYyBweTNrCis4MjQ2OSA5ZGM1ZjM4NWY0OTQyYzQ3OTVkY2Q0ZWMwNmFlN2MzYzE2MjExOWViIHJlbGVhc2UzMS1tYWludAorODI0NzAgNGRlMTNmZWFlYTAxODA1ZTE0ODFjODE1MDZkYWI3M2I1MjNmYTFiYSByZWxlYXNlMjYtbWFpbnQKKzgyNDcxIGViZTFiM2ZmOGQzMDIxODE4NWE0NTdlYjAxMjM5NzUzNzVhYmE0NjQgcHkzaworODI0NzIgNjFjYjk0MTBhODQyNGI1MDg1MTM3MTlhNDJmYzJhZTRjZDAyMWI4ZSBweTNrCis4MjQ3MyA0ZDNiNGYzNDE5MmIyMzllODdkOGJhMDc3MzY2MjAxNTY4MjljYzQxIGxlZ2FjeS10cnVuaworODI0NzQgMzIzOTZlODAwNDhmOWE4NzA2YjE2YWU2MWJkODI5ZDg5ZDMxOWYwNiBsZWdhY3ktdHJ1bmsKKzgyNDc1IDY5NzU2Y2RmNTM3YjRmYTM3ZGNhOWQ3YzhmMGYzOTkzOGEyNDhlMGIgbGVnYWN5LXRydW5rCis4MjQ3NiA4ZTIwZmZjNjE5ODY3M2NhYWZkYzcyMDFhYjliZmY2ODA5NTZmYTk3IGxlZ2FjeS10cnVuaworODI0NzcgY2M0YmQ3NjZmZTEwOWE1NzIxZDY1MWFhZTM2NTY3MDdiMzkyMjBlYiByZWxlYXNlMjYtbWFpbnQKKzgyNDc4IGM1ODU1ZGRkZjBlMWZhYmFlOTgxYTc1ZWQ0YTkzNDY1MDkyYjg5OWMgcHkzaworODI0NzkgNTYxM2QyZTFkNzc5NTI3ZWFiOGM0ZThlZDdhMjY4ZDJlMDg0YjBjZSByZWxlYXNlMzEtbWFpbnQKKzgyNDgwIGFhZTczODFhYzBiMmQwYTVjNDk4ZWI1MmUzM2Q3Yzk3NDM0MjcxYzYgcHkzaworODI0ODEgZDk3YzI0NTIzMzIxMGM3OWJiNjQ5OTdiZGU5MWFiNDc4Yzk4NjY4MyBweTNrCis4MjQ4MiAyYWFiOTU3YmY2MWZlYzY1YWFjYmFkZTVhNWU3ZmY2ZTIwOWRiMGU4IGxlZ2FjeS10cnVuaworODI0ODMgNmNmZTdiOTA0NjQ5YTA3M2MyMGM4MzY0NmMwNDRmZGZkYjU2MTc3YiBsZWdhY3ktdHJ1bmsKKzgyNDg0IDVkODM0ZmNkZjk4MGNkZmExZmFkMDRiYmVjMTNiZTM0ODkzNWY4ZGYgcHkzaworODI0ODUgMjMzYzhkYWI4ZmZhOWY3MTA1MjliMDY3MWZhNTBlZmVmZDU2NDMwZCBweTNrCis4MjQ4NiBhYzgyM2U3MTZkNTcxN2U4Y2NjMGUxMDJmMTY3YTNkYjg2NzRjZjE3IHJlbGVhc2UyNi1tYWludAorODI0ODcgYmIyMTFhMmRkYWJkNWYwYjg2MmNiOGNlMmJmNzU4NGQ1YTBmZjQwNSBweTNrCis4MjQ4OCA1NWVkZjc5YWQ4Mjc3ZjM5OWM0N2QwOWUzMTQ1M2U2MmU0N2Y2MzI3IHB5M2sKKzgyNDg5IGQzNWY4ZTViNDE5N2E4ZDdhMTUwNGZmNDc0ZGYyZjllOGQxNTEzMDEgbGVnYWN5LXRydW5rCis4MjQ5MCA0MGYxOWIwYmZhNjFhNTZiNDE0MGQxY2Y2NWFjMDJlYjZjYzdkMTA1IGxlZ2FjeS10cnVuaworODI0OTEgNmFjYjI1MzU2ZDJmMWE2OWRmMTQ0ODFkNGY0ZDg1NWExOTk0OTI3ZSBsZWdhY3ktdHJ1bmsKKzgyNDkyIGJlOGUxYTZlYmY3YWJlNzVhMzgxNGM0MmQzMjkwM2I4OWJlY2Y4ODYgbGVnYWN5LXRydW5rCis4MjQ5MyA0Y2E1ZDBhZWE0MWQzNjA5Y2Y0NjZiZmU4MzU5MTEyZmZmMjVhNzYzIGxlZ2FjeS10cnVuaworODI0OTQgOGJiOTMyODhkYjZkNjhlOWMxOGE4NWNhYjk1ZWRiMmUwM2QxNTJiNSByZWxlYXNlMjYtbWFpbnQKKzgyNDk1IDI5MTE2YjJmY2ZmZTkyODEzNzE2NGUyNzU4NThmYjNjNjkwNmRkZDcgcHkzaworODI0OTYgNzE4NDQyMWY4M2I1NjRmYWI1OWZlMmZiMzBiNDIyNzY2YWEwMmM0MCByZWxlYXNlMzEtbWFpbnQKKzgyNDk3IGIzYjkxMmQ0NTNhNTgyZTQxZGZmZmU3MWE5MTRlMWNmZGU3YmI0ZjcgbGVnYWN5LXRydW5rCis4MjQ5OCA5OWM4NGE1MWY1NzY1YmJlYmJmZjc1MDhmYWZjNWY0ZTAxYTU0MGFlIGxlZ2FjeS10cnVuaworODI0OTkgMmQ1ZjUxNTBkY2UyNGRhN2NiNjg2YmVjY2VlMDJiMjk3NTU4M2EwNyBsZWdhY3ktdHJ1bmsKKzgyNTAwIDgwYzhiNDM0MTMxMmEzMzlhMDBmMzc2MzFjMzg1NTAwNzg3OGQ3Y2QgbGVnYWN5LXRydW5rCis4MjUwMSA1NGZkY2MwZjRiYWNmMzc0ODRkYmJjY2YyZDdhZWVjMmJjODJhNzE4IGxlZ2FjeS10cnVuaworODI1MDIgMjE0NTU5M2QxMDhkZTYyZWJmNzcwOTg3YTRhYzJhNTdkMjY4YzlkMSBsZWdhY3ktdHJ1bmsKKzgyNTAzIDdmN2Q4MjM0MDJjNjlhZTYyMzJhZTI2MDkzY2Q0ODJhNGYzNTdmM2IgcmVsZWFzZTI3LW1haW50Cis4MjUwNCAzZjQ2ZjhhOWRiNTQ5NTE5MzM5ZmI5ZDU5OGI0YmIwZmNmZGFiZDIzIGxlZ2FjeS10cnVuaworODI1MDYgNzZkOTA4NDNkYmE2MTNjNTAxMzgxZjU2MzViNWFlZDZhZjQ0MWRmNiByZWxlYXNlMjctbWFpbnQKKzgyNTA3IDM2ZDAxYzAxN2I5YmVlZjkxN2Y1YmJlNDgwNzg1MTJlMGU3ZjQ4ZDAgcHkzaworODI1MDggMTk0YjZlNjJiZTk1MGQwY2M5OGVhNWNiYTVlYzIzNjU2ZDA1MGIzMSByZWxlYXNlMjctbWFpbnQKKzgyNTEwIDI2MjUyOWQxYzMxNWNkMTllOWQ2NWQxMDQxZGJlN2U0MmRjOWY5OGEgcHkzaworODI1MTEgMmFlZTgyOWVkZmUyODAyMjhiY2Y5OGE5YmRmZTNhMmRlMWI5YjlkNiByZWxlYXNlMzEtbWFpbnQKKzgyNTEyIGQ3NmQwZWViMjNjYWI4NDNhYmM2MzdhYTk0MjNhZjBmNGZmMjFjNjYgcmVsZWFzZTMxLW1haW50Cis4MjUxMyA5NzZhYTRhOGJjZjMwN2FiYjUyZWMwMGUzMzEyYzlhMmIxMmJlODhkIHJlbGVhc2UyNy1tYWludAorODI1MTQgZTQyYmFmNjc4ZDE0NDAwNjIwMjJhYWU5OGU4NmQ3NjNmMmU5YWE0ZSBweTNrCis4MjUxNSBmZTQ2YThkYmFmNjhjYTc0NGRmNmFhZDkxNjZjOTNlNThhNjZmMzE5IHB5M2sKKzgyNTE2IDE3ODQ1NWEyZjFhYTViYmQ5NjAwYTBhZjFmNjViMjllY2QwMmZkOGYgcHkzaworODI1MTcgMzFhNjg1NGY3ODEzOTkxOWY5MjFlNGJjODY2YTg5Mzg0ZWVhNzI0ZCBweTNrCis4MjUxOCAzNGQ4MjcyNDljZTBiYzI5OGZiOWUzZDJjMGM4MmNmN2E1YmFkYzE3IHB5M2sKKzgyNTE5IGZhNzE1MTJhNzRmOTE0ZDY5NzYwZTkwMzdiODBmYjFhZGZiYzM0NmYgcHkzaworODI1MjAgNmMzYzU0M2VkZThjNDk3ZWVlZjRmNzJjMGU3YzAwYjJhOTNkZjk0NyBweTNrCis4MjUyMSAyNjc0ZDNiZGRiMTgxZThlMzNjNjdjMGM3NWFiYTc2NWY1Y2QyZjg4IHB5M2sKKzgyNTIyIDM0ZjAxNWJjYTU0ZWRiMzMzOTE2NGY3NjM3NjdjNmEwYTQ4ZmJkMTkgcHkzaworODI1MjMgMzI2ODJiMjUzZmZjODE3ZTE2ZGE5YTZlMTIxNWFmM2FmZWM4MDFjYiBweTNrCis4MjUyNCA0YzMwYTZmNDBlNjg0ZTYzODUzODNkOTdmZTdjYjVkZmRmZDRmMTJlIHB5M2sKKzgyNTI2IDRiOTM0ODAzY2QzNDE0MjQzMTRkYWQ4NzBjMmY4ZmMwZDg2ZjYyMzUgcHkzaworODI1MjcgMTM1NTc1OTRlMjBiN2FkMDg2NDc0OTEwMWJjY2Y4YzM3NTJhZTQ4NiBweTNrCis4MjUyOCBiNjdmNzIwOTk4YTg4MDFhOGFkOGI3NGNiYWE4M2UyYWZiMDc4MWQ1IHJlbGVhc2UzMS1tYWludAorODI1MjkgMGY2NTQ4YTg2NzY4YjMyODEwNjMyMWI4ODQ4OTNjZWQzNjg0MGEyZiByZWxlYXNlMjctbWFpbnQKKzgyNTMyIGVjZDcxYjYxMjdlNDI2NzhkYzFhMmIxZjU3MWY2NDFjZWQwYTI4YzMgcmVsZWFzZTI3LW1haW50Cis4MjUzMyAzNDM5MDMxMThjYjViYjY3MWUxNjljNDUxYmVjNDk5YzZmYTUwZTc1IHB5M2sKKzgyNTM0IDEyNGE3NmFlN2E3MGU3NTcwZDk0MjNlZDdhNjVmNmQ0OTQ5YjljNGYgcmVsZWFzZTI2LW1haW50Cis4MjUzNSBmMDY5MWI0YTM4M2I4MmFlZTg1M2ExM2FmNzM5OTY0ZmFlODVkYzM4IHB5M2sKKzgyNTM2IDNmY2U2Y2RiNDczMzc3MTE2OTUzODMxOTNiNDc0ZGY5NGVjN2E4YzUgcmVsZWFzZTMxLW1haW50Cis4MjUzNyAxZWFmNGJiZTRiMWMxYzE4YjkxY2VjZTlkOTljNDY2OGJhNGYzZDhiIHB5M2sKKzgyNTM4IDYxY2FjZWNjZjgwNTgxMzUzYjg0ZDczYzBkYWExMDk5MTZhMWFiZTEgcHkzaworODI1MzkgMTgyODIwMzljNWM5YzAwNmRjNWZkNWYzZjA2MjFmYTExMGIzMWQ5NiByZWxlYXNlMzEtbWFpbnQKKzgyNTQwIDkzOTMyNjE5OTZjZWUyMzBjNjUyODVhZGQ3ZTMwZmE1ZjdhOTA2YzYgcHkzaworODI1NDEgOWUzNTRlYTM4MmNjZTdjYjAwY2VmNWJlMmJlZGUwY2Y5OWMzOWYzMSBweTNrCis4MjU0MiA3NjdiNGM1N2FlYTRkOWJkN2E0MGY2ZmYzYTljNTZhOGMwOTZkNmQ4IHB5M2sKKzgyNTQzIDM4MzAzOWVmMjZhMGUwOWU1MTYwZjZhOTQ4NGMyN2VkMTkwMzQyYjUgcmVsZWFzZTI3LW1haW50Cis4MjU0NCAzYWU5MTNhOWNkYTkwZWEzZTI1ZDk3OWQyNzU0NGY5MjQxNjYxZjA2IHJlbGVhc2UzMS1tYWludAorODI1NDUgYTYzZjZiYWJhNmI1NGRlOTg3ODg5MzRjZDM4ZmQxZDExMGVmMjkxYyByZWxlYXNlMjctbWFpbnQKKzgyNTQ2IGJlNjYyZDEyNDM4NTllZDQzN2MwODY5YjY2ZDNiNzk3OWFiZjgxYzkgcmVsZWFzZTI2LW1haW50Cis4MjU0NyAzNjE0MzFjNGQzNDRjNDRhY2Y2ZTZlZGNlMDdlMjAwNDc2MGJmNTU4IHB5M2sKKzgyNTQ4IDdjZTZlMzY0ZTExODMwNjdlN2NhODM3OWZhZDI2ODFmNDYzYTkyY2EgcmVsZWFzZTI3LW1haW50Cis4MjU0OSAzYjE1NDg2NjA4ZjA1YmVjZDE0Yzc2MDU0YzVkOTliYTQ1NDgyNjhhIHJlbGVhc2UzMS1tYWludAorODI1NTAgYjA3NDNkNTJiNmEzMTdiMjkxZjc1M2Q1ZWJiNzM1N2FjMWQ4NTJmNiBweTNrCis4MjU1MSAzNDNjZjVhMDhmZjAwZjA3MjM3YzE5MDk1ZjM0YjE5NGU3NmM0MmMyIHB5M2sKKzgyNTUyIGM2ZjE2YjhjYjg1OGRiOTU4YjE4NGJkNmQ0NTIyMjEwYTdmYTA1NmIgcHkzaworODI1NTMgZDI4MzAwOTEyMzdjZWEzY2MyMzVhNmQwNTFmZTAzMmMzMTAxNDBlYyBweTNrCis4MjU1NCA2OTJiNzk4OWNkOTIwMzY5MDUwZTc1YmI2YWQwYjU1YjNjYmVjZWNkIHJlbGVhc2UzMS1tYWludAorODI1NTUgZmIzNjBjMDc5MDU5NzZiMWQwZTc3NmZjYzZkNjlhNjI5MTc0ODJiNCBweTNrCis4MjU1NiAzYWEyMjQyODU4MmEzOGEyNzFiOWVhZWU2YzM0YTFjMzI3ZTFmZjAwIHJlbGVhc2UzMS1tYWludAorODI1NTcgODM3ZTNjZDNkMDgzNDYzM2RlYjE5ZmYzZWRhOWU2MTYxYmY1ZjFlOSBweTNrCis4MjU1OCBkODgwYzExNDMxNzU2N2JjODk5Y2VlNjg0ZThiMzU3YWZiM2ZkZTE5IHB5M2sKKzgyNTU5IGMxYTIzYTU0MGEyOWRmNjI2YzhkNTQ3ZjhhODEwYzk0OGQxNmE1MWYgcHkzaworODI1NjAgZmU1MjE3YThhZmZiZGMwZjRhYzc2ODA3NGQ5YWFmMmNiNjZlOTEyOCBweTNrCis4MjU2MSA0NmFiZGUwNzFmZmZjZTAxMzJjZDNjODc3OWNiMDlmNmVjMGQyYTVlIHB5M2sKKzgyNTYzIGExYzQ1NjMxN2I3YzNhMjM2OGU2ZTgyYjNhMWQ3N2VkMGVjMzFmMDIgcmVsZWFzZTI3LW1haW50Cis4MjU2NyA3ZmZkMmE0NDk0MmNmNjU2Mjc4ZDA0ZmQ5ZDI2N2IxZWY3NDlhZTY3IHB5M2sKKzgyNTcwIGRjYzJlOGJmNjRjZmY2MWZkYmM5ODc3NjU5MjZhNGE1NjZhNTNmMzcgcHkzaworODI1NzEgMDE0NTAxMjBjMGRkMThkNDg3YjFkM2I0ZDVkOGQ0MjMwOGZhNjUzOSByZWxlYXNlMjctbWFpbnQKKzgyNTcyIGUxZjQ4ZWIwMTRjNzA0NmFlZTE2ZmY5Y2UwY2Q1NmY3MDY4MTQyODIgcmVsZWFzZTMxLW1haW50Cis4MjU3MyBjZjRmN2Y5OGYxOWU3MmJjMWNiNmYxZWNiODQxNGExMTc3ZDlkOGY3IHB5M2sKKzgyNTc0IGU4NGQ1MTY0NDE0NDYwYTM2ZmZmNzgwYzI3ZjczMjQ4NTk2MTJiNjcgcmVsZWFzZTI3LW1haW50Cis4MjU3NSBjODFmYzFmZmU5NDY3MDNjNzkxZWZiZmMwZmQxZWMwY2MzYzk2ZjAwIHJlbGVhc2UzMS1tYWludAorODI1NzYgNzI2NDgzZDk3YjVjMDkzNmY4MGZlZmNkODY3MjAzZjk1ZDI3Y2Y2NyBweTNrCis4MjU3NyBhN2M4YjRhNjY3OGJmMTAyMTMwMGVhNzA2ZDNmODkxMDQyY2IxNzc3IHB5M2sKKzgyNTc4IDM2ZDVlMmY1ZDYwMDQzOTU0YTE1NWQwNDZlMzE5NzJhZTU1ZjlhZGMgcHkzaworODI1NzkgOGVkN2QxMTFiMmM5N2ZlZDYwZTZhYzQyODQxZmUwNTIzZGQyNTQ3NiByZWxlYXNlMzEtbWFpbnQKKzgyNTgxIDcwNTg2OWQxYmRmMGZkYTIxMWYwOTljMWQ0MjU5NjUyZjRhZDNmNTAgcmVsZWFzZTI3LW1haW50Cis4MjU4NSA0MDAxZDQ1OGYwYjIwY2M3ZjNhMTRkYmQ4Y2VhYzljMzdlMDhiNzgzIHB5M2sKKzgyNTg2IGVlOWVlMmY5ZmViOWNjZmMwYjY3YmIxNmYxMGYxYzI3YzAyODk4MDggcmVsZWFzZTI3LW1haW50Cis4MjU4NyA5ZDVmZTkzNjFkZTIxZGU2OGNiZmYzN2I5NjNjMmFiOTIzYzhlNmUzIHB5M2sKKzgyNTg4IDY4MGJmNmI4YWI4MjQwYTk2ZWVlOWI0M2M0ZjFlMGYzNTU3YjhiMTcgcmVsZWFzZTI3LW1haW50Cis4MjU4OSA2ZWM1NzIyYTA3YTVmMmFiZThhNzZjZmQ3NzkwMzZlOGVjMTZhOGI5IHB5M2sKKzgyNTkxIGI2ZmVlNTVmYWExYmJiYzgwODZiNmI5MmY5Zjc4ZDA3YTllNGM2NjkgcHkzaworODI1OTIgM2I3M2ZiODA4MDdhYTFiYzJmZTBmOThkODE4YmVhMzQyNmRlYWM0ZiByZWxlYXNlMjctbWFpbnQKKzgyNTkzIDg3Y2RhZmUzYmQ2YzcwYTM2MmNiZGYyOWVlZTk0YmQxMGY0MTJiYWQgcHkzaworODI1OTQgOGJiZjI0ZTUxY2NmYWFkYTNkNzJmOTBhNGZiY2E0NmQ0ZmZlMmJmNCBweTNrCis4MjU5NSA1MDk3YjFiNDk2MDEyZTFlMzQwZjlkYjY2MGZkNWUwZmRmOTM4MTFkIHB5M2sKKzgyNTk2IGEwN2VmNWVhYjkwYmIyNWIxMDRlNjU4NWRhYTBmMWI3NmYzMzM5NDMgcmVsZWFzZTI3LW1haW50Cis4MjU5NyA0ZDI5MWFkMDc4OTE0OWZjMTFkMDE2MjU1YWZhZWI5ODA1NzkwYjFlIHB5M2sKKzgyNTk4IDNkYzIxOTA3Mzg3NTc0ZTczOGFjN2YyM2U0M2NhNWM4ZTFkNDlhMWQgcmVsZWFzZTMxLW1haW50Cis4MjU5OSA5MTQ1N2IyMDE0ZTQwYjYxOTE2MjBlOWU3NTFlY2IyNGFjY2JjNTY5IHB5M2sKKzgyNjAwIDg3MGI2YjQ1NWVmMDVkMWI1M2EzMzA5MzhmODBiYzc2NjU1OTNjZTUgcHkzaworODI2MDEgMWYyODE0ZWI0ZDFkZDFiMWE2NzE0MzM4ZDgzZmUxMWE2ZTczNGVhMyBweTNrCis4MjYwMiA4Njg5MDQ0NmE0N2JjZjUyODRiZGZmM2EyZGExOTFiZTI2MTA1MDVkIHJlbGVhc2UzMS1tYWludAorODI2MDMgMzljN2Q1NGYyODQ4YzBkMWZhMmUzMDA4Zjc0YmU5ZjUwODZkOWUyNiByZWxlYXNlMjctbWFpbnQKKzgyNjA0IDFmMzdkMDgyYTlhYWY4MDM3ZTAzZjZiMzA1ZGM3OGVkMTA5Y2JlYmIgcHkzaworODI2MDcgZjFhNDE0N2IzYzAyM2NjZWE3YzZkZjhmY2M2MTMwYTlkMzkwNzE0NSBweTNrCis4MjYwOCAyMzk5ZTA0NTFkMGRlYzg2NjAxZjM0YzFmYmJjZTMxZWUyOGEwYWI3IHJlbGVhc2UyNy1tYWludAorODI2MDkgZDM2ZGMzN2M2N2Y4ODcwNjNlZGVmYTM3MTRjMDgwZmNmYTk2NDAwZCByZWxlYXNlMjYtbWFpbnQKKzgyNjA5IDc0YjBlYjc2NWE1MDQ5YjI1M2UxY2MzNTFkYThmZjM5ZTMwODJjNjYgcmVsZWFzZTI3LW1haW50Cis4MjYwOSAwNzI4YjI5NWY1M2JkNmEzZDcwZjVmNWM3MjVhODU1YjhmM2FmMjI5IHB5M2sKKzgyNjEwIDIwMmYzMWQ0MDM4OWNlM2Y2NTlmYjE1NjMwOGU4MmNlZTAwMzgwN2QgcHkzaworODI2MTEgMDYxOGM2MjMxYTFmMTkyNzE2NTk5Y2Q2MDJmZjRiYTAwMjIyZmU5ZiBweTNrLWR0b2EKKzgyNjEyIGUxMmFlY2RjMzMyYzc4Nzc5NmRmMjkzMDNjZmY2MWNmMTFkNzViODUgcHkzay1kdG9hCis4MjYxMyA0ZmU0OTNkOTlkY2MxYzIxN2JjYzUyN2IwZjM2M2ZiYzAwZGVkZGNjIHJlbGVhc2UzMS1tYWludAorODI2MTQgNzBiMDM4OGY5ZDNmNTI1NjVhODU4OTBjYWFjM2ZiOTQ0ZTMwZTJhNCBweTNrLWR0b2EKKzgyNjE1IDNlYTZmNjlkYjI0MjYxOTgyNGIwOGJhODIyYjdmZGVlMjBjZDJmOTEgcHkzaworODI2MTcgNTgxMmRkNDQ4MDdhZjk2NTE3ZWYyZjNhZjgxMWMxYWQ0ZDdjODNhMyBweTNrCis4MjYxOCBkMmIxNjg5YTMzODFlYzY1MmQ3YzRlYzg1MjNjOTI3NmFiNDhkZmFmIHJlbGVhc2UzMS1tYWludAorODI2MjAgMDU2MmYyZTA1MjhkMTJkYmQyZTI1NGFmMDRkNDIwYmZkMDk5ODY0ZCByZWxlYXNlMjctbWFpbnQKKzgyNjIxIDQzYWJhMDllODk0NjkzNmVkNTNlMmJhYjgyYWI2OGRlYjk4YTIxYjggcmVsZWFzZTMxLW1haW50Cis4MjYyMyA5MTJhYjJmYjQzZjU4YjAxMjk4ODM5MzRhYmRiZjQ2N2QwNzcwYTFjIHJlbGVhc2UyNy1tYWludAorODI2MjQgZjY0MWJkNTQ2ZGU0MTI4Y2Q3OWNlNzkzMjA3ZDIzMDBiNGVmODcwMCBweTNrCis4MjYyNSBlNjU1ODQ5ZTc5YzZjODJhOWQ0OTdiNzhjMDZiMDQzMWFiMzkyNTFmIHB5M2sKKzgyNjI2IDg3NTU1ZjQ1Y2Q2YmU1ODY3ZDgyZDk4MjY2OTRlMmE0ZWJiZGM3ZGEgcHkzaworODI2MjggNzRiMmNiZGE5YmRhNDQ3Zjk5NzgzODEyMzU1OTM5OTE1ODEzNzBkOSBweTNrCis4MjYyOSBjY2Y4ZTYwMjBjZjM0YjVmNWVjODhkZDVmMjY4YjEzMzc0NmFmMTBkIHB5M2sKKzgyNjMwIGY2MjY2YzQ1OTE1NjMwNmM5YmFiZDVmZDhmMzJkNzc2YzNkMTBjMGEgcHkzaworODI2MzEgZTdkYTk2OGUzZTVhMGRhNjRiYWQ5ZGVkOWY0YWY1YTIwNDY4ODM0MSByZWxlYXNlMjctbWFpbnQKKzgyNjMyIDVmM2UxODZiZWYwZjA4MzUzYjcyYWQzOTQwOTlhMWNiMmM0ZjY2NWUgcHkzaworODI2MzMgMzRlM2RiZDQ3ZTRmYTNlZDBiNmY2NTRhMmNlZDQxMzljZDdhNTMxYyBweTNrCis4MjYzNCA5NDY0NjRmZDY5MjEwZDcwYjRhYzVkZGY2NzllMjc5ZmFhZmI1ZWUyIHJlbGVhc2UyNy1tYWludAorODI2MzUgNTUzZjEwYjAzN2Q5ZWUyMzNiZDUxYWMwYzgzOTE5Y2M3YTVmOGM1YiByZWxlYXNlMjctbWFpbnQKKzgyNjM2IDM4NGY3M2ExMDRlOTRlMTBkNzllOWMxOTNlN2ZkMGUyZjJjODQ4ODQgcHkzaworODI2MzcgMzgyZGNiMGM2MDczYTE0NjhiZjQ3MGIyMmY3MmNmZTA3NGVlNjQ5NCBweTNrCis4MjYzOCA1NWEwMjRmNTE1MjRiZmQwMzcxODhkNjFmOGFlZWJiZjIzMjFmNWE0IHJlbGVhc2UzMS1tYWludAorODI2MzkgOGM2YjNkYzY1MmZiOTIzMjJhOGQzNGY2YTYzNTQxYjNlM2QzMjY0OSByZWxlYXNlMzEtbWFpbnQKKzgyNjQwIGEwMDgyYTc0ZDEyNWEyZTg1ZjhjZDA1YTUzYjE2MTA2NmJhZGI1NTYgcmVsZWFzZTI3LW1haW50Cis4MjY0MiAwNDA2NzkwODdkMDM1MmI1NjUxM2NlNTI5NDIzYzI5MjBjMjI2NjE5IHB5M2sKKzgyNjQ0IGNhMDUzNzFjZmYxMGEyZjlkMGYyYTAzYjUxMzg0NDg0ODg2ODcxYTAgcHkzaworODI2NDUgZjg0NWVkMWQ4OWQ1YmI4YzAzMGE4YTE3MTBjZDgwYjUxYTJiNTgxYiByZWxlYXNlMzEtbWFpbnQKKzgyNjQ2IGNhMGEzMzAxYTdlYTFiYWFiYWY1YzAyZGM2NTNiMjdmYjg5ZmIzNGEgcHkzaworODI2NDcgMTBlNmE1NDMwYjc5NDRiNmJlYmYxNTNlMWQ2ZmFhM2E0MDViODA5MCBweTNrCis4MjY0OCBjNzMwNWJhODQ2MTk3YjkzNWJmZWRhMDVkOTQ4ZWM4NWY2MmExMTk2IHJlbGVhc2UyNy1tYWludAorODI2NDkgZDE1NmY3YjM5YzNjMzQzMjNmYWY5NDdiOWZiZjIwMzZmODE4NjU3MSBweTNrCis4MjY1MCA1YmM3ZGJkMzFkMWI0OTQ2YzM5NWRjNjMyMGNkNGVhMWU2MzBlYmM0IHB5M2sKKzgyNjUxIGIwNDQ2MjUzMjJlMzE2YzY0ODRhNTMyNjFkZmRiM2ViNGFmZTBhZjIgcmVsZWFzZTMxLW1haW50Cis4MjY1MiBhNjMxOGRhZmI4ZWI1YzJkODE5ZmQ3MDgyMmRiZWI1ZTVmZjcwZmVmIHJlbGVhc2UyNy1tYWludAorODI2NTMgM2Q4YTdmNzAxY2IxYzI1MzdmNTgxYTE3ODBhMTI2ZWZmNjU1MmQ2OSByZWxlYXNlMjYtbWFpbnQKKzgyNjU0IDA5ZjVmZDAxM2MwYmUyZmU3YmIwZjQ5NDY0YWUzMWU3MjY2MzRhOTcgcHkzaworODI2NTUgOTc1MmI4NWMwMTE5MmZlODM4ZGFlZDBlZmFiYTUyNzA2ZDAyNmM1MSByZWxlYXNlMzEtbWFpbnQKKzgyNjU2IDZlZGMzZTJhN2RhNGFhZGFmYWNlNDU2OWIwZmM3YmJiMzU1NDQzYjIgcmVsZWFzZTI3LW1haW50Cis4MjY1NyA5NzRmOGQ4YmMwZDQ0ZDE1ZDhiOGRmNTM4NTJlYmJhOGNlN2Q4NjBjIHJlbGVhc2UyNi1tYWludAorODI2NTggYzhiZWNmNjA2YTBhYWMwOTZiZjg1ZjQ5NmQ2OGI5NjM4Mjg2NzRjYSByZWxlYXNlMjctbWFpbnQKKzgyNjU5IDczMGI3MjhlNWFlZmI1NmNjZmM0ZTljMmNjOTM0YzJhZDg2MzgwNTkgcHkzaworODI2NjEgN2EyMTZiYzJiZWQ2NTBiOTcwNWI2ODhhOGMwYjY4ZTI3NDNjZDZkOSBweTNrCis4MjY2MiAzNTI4YzRlNzgwYmYwN2I4ZjkwMmFjZTc1MzcwZDc2Nzg1N2MwZmJmIHB5M2sKKzgyNjYzIGU0YmRhNGE1MjBjYTc1MjkyYTE3MTYwYjU1NDlkM2Q2MzQwMzBjZWIgcHkzaworODI2NjQgZmYyZDFiMmNkYzY5MTM5ZjMyZGU3ODQ3MTNkMWJkZjA1ZDI4ZTIzMSBpbXBvcnRfdW5pY29kZQorODI2NjUgYzY3Zjk4YWRiOGYzNjFjYjE5MzY3NmM4ZjUxYzkxNTZlOTI3YWIwYyBpbXBvcnRfdW5pY29kZQorODI2NjYgNWI2MzE4NTM3MmQxZjM3YWE3MWQ2ZjEyYmNiMzQ2NzM3N2NjOTdjMyBpbXBvcnRfdW5pY29kZQorODI2NjcgMTZlMzQ4ZjE2NWY4NWQzNGQ2ZWI4Yjk3NDk1NDJmNGRjZTFlZmZiOCBpbXBvcnRfdW5pY29kZQorODI2NjggNDRiZDRhZDFmNmQ0MmZhYjIwNDQ1MDY0NDg1MDBkMjM3MDM3ZWQzZiBpbXBvcnRfdW5pY29kZQorODI2NjkgNWI2ZjAzZjM5MWRhZmUyNDYwYTBhMzk5ODU4M2I1NjI5N2RlNzMxMSBpbXBvcnRfdW5pY29kZQorODI2NzAgZTk2Mjc5YWM2ZDE0NjhhMzRkMWE3ZjQzMjcwNzUzOGUwYjQyODE2MCBpbXBvcnRfdW5pY29kZQorODI2NzEgYTk3Zjc1MDNlNTBjNDA1NmZlMzBiYTVmNDM0OTI1MjBjZGRjMjFjOCBpbXBvcnRfdW5pY29kZQorODI2NzIgNjBmYzk0NDZhYTJlMDM1Mzc2ZGZhMDcxMTNjZWE2ZmZkNmM5MzFjZCBpbXBvcnRfdW5pY29kZQorODI2NzMgYzMwZDg0ODA3YzYyZDA5NWU4NGRkYTVmZDMyNzUwYmRhYTNlYjM3OSBpbXBvcnRfdW5pY29kZQorODI2NzQgZGZlMjYwMjMxYzQ5YzE0Mjk4YWUxM2I1MTRkYWUzMDU4ZjQ2MGFhZiBpbXBvcnRfdW5pY29kZQorODI2NzUgMGNkOTQxNmExYzFlNjdiN2Y0MDllNmYzMzNhN2RiNjEyMjVkYjE1OSBpbXBvcnRfdW5pY29kZQorODI2NzYgZjczNWJiMmIwNmRlMTg1OThkYzMwOGExOTQ0ODIxMjNiMzI2NTFhZiBpbXBvcnRfdW5pY29kZQorODI2NzcgYmViY2I2YWIwOWE1NjViMTM3NmRlMWE3MGJkODU5YTU1MWFmNmQyZCBpbXBvcnRfdW5pY29kZQorODI2NzggYzg3MmU0ZmFhMWU3NDIzOTFlYmUwNzI1ZmM4MzMzNmVkY2I4MTk3MCBpbXBvcnRfdW5pY29kZQorODI2NzkgMTRkYTdjM2U5MjIzMmIxNGMzOGQ3ZjAwZjUxYTdjNzBjOGEyZTBkYiBpbXBvcnRfdW5pY29kZQorODI2ODAgMDk1MmUyZGYzYzRkMWI5ODRjYzBlZGRiNzY1ZDk4YjIyZmIyODIyNCBpbXBvcnRfdW5pY29kZQorODI2ODEgNzZmMzZjYTEwNjFmNDRmYTVhN2I5MTNiNjkyNDI0ZjM3OTQxYWVlMyBpbXBvcnRfdW5pY29kZQorODI2ODIgMjJiOTM4OGQ3YzBlZjkwYTdlNjYxNGNlZTQwNGJmMDVkNTlmZWFjMCBpbXBvcnRfdW5pY29kZQorODI2ODMgZTQyMzNlOWM4NDYxMjI2NTFkYWM4MTViZTg0MjE3NjQwYzc5MmM3NSBpbXBvcnRfdW5pY29kZQorODI2ODQgZTc2NmY3YmNiMmQ1NWMzNDc3NGRhMzJiZTVjZjliOGVjYTNkYTM2MSBpbXBvcnRfdW5pY29kZQorODI2ODUgNWNhNDFkZWViZDBmZmEyZWVmODYzMGRkYTdiOGZjZGQwZjRlNGY3NSBpbXBvcnRfdW5pY29kZQorODI2ODYgMmU5ZmM1MzJkMWQxYmQ5YmM4MWIwNWI5NDk5MGEwNDEzOWRlMmM1ZiBpbXBvcnRfdW5pY29kZQorODI2ODcgZTFkODZjZjJjZmU0NGJlMDk0NTNmMWVhMTk4YmUwYjkxODJjNGVmYSBpbXBvcnRfdW5pY29kZQorODI2ODggZTBmYjQ5ZWM5NDVjY2E1NzI0Mjk0NjdhMDY4OTUzNjMzNThiZTIwNyBpbXBvcnRfdW5pY29kZQorODI2ODkgYTJjN2YyMDYwZTViZGJkODdjZmJhZmQ1NDc3OWZjNTlmNGI2M2M4NSBpbXBvcnRfdW5pY29kZQorODI2OTAgMWMxZmQ5NWUxM2I0MmViZWZiYzI2ODFmMDMxODc2ZTI0NDI1NThlMSBpbXBvcnRfdW5pY29kZQorODI2OTEgMGEzMGI1NmNhM2FjOWRlMWIxNWM4YTM2NmZkMGRjMTZlZWIyMDlhZCBpbXBvcnRfdW5pY29kZQorODI2OTIgMzYwZTFhMDhlNTNiOTQ4MGFhNWRjYjM4ZTA5OWVkZGJjMjk2M2ZmMiBpbXBvcnRfdW5pY29kZQorODI2OTMgNjBmYmZhYTdkOTNkZmRiMTlkNGRiMTNmOTMyYTJjMWQwNTNlYzM0ZSBpbXBvcnRfdW5pY29kZQorODI2OTQgOTUwYjQ3NTRiYmUyYWJmYzBjNTAxYmJmMWY2MGI5MjUzYTU4MTE5NCBpbXBvcnRfdW5pY29kZQorODI2OTUgZmZlYjg1MTI4YzdlODQ4MzMxNjk2YjZlMTRiMjNhNGVhN2Y5OGVhOSBpbXBvcnRfdW5pY29kZQorODI2OTYgMDFlNGUzZDM3NzRkNjA0NWMyOTkyMzU4NGMwOGY3ZTg0NTIyODRjNSBpbXBvcnRfdW5pY29kZQorODI2OTcgZTgxZWQzYWQwNjlkOWFjMmU1ZWE5Y2NmODkzYTU4MGFmZDkwM2M4MCBpbXBvcnRfdW5pY29kZQorODI2OTggMWFkYzIzZGNlOTcxN2M0ODQwMTAwYWQyZTMzOTJlNGM2MzYzYmEzMyBpbXBvcnRfdW5pY29kZQorODI2OTkgMTc3YTgyZWNmZjY3MTA2YWJiYzRjNjc1NjVjMGY1MWNiZTYwMDI1MyBpbXBvcnRfdW5pY29kZQorODI3MDAgODI0OTdmMWMxYzU0MTUyODNhYWNiZWJhMDNiM2FjYTczNGYwNzgwOSBpbXBvcnRfdW5pY29kZQorODI3MDEgOTBjYTQ1ZDY1NmMyZDY1NzA1NWFlNTY3YmZkNWNiMDM1MjQ5ZjhkOSBpbXBvcnRfdW5pY29kZQorODI3MDIgMzBiYmMxODYwZmJiMmU3YmQwNjY2OWM0NjZhZTc3NDg3NGE3ZmQ2MiBpbXBvcnRfdW5pY29kZQorODI3MDMgODY1ZDE4YWZkYTE1MTA5OTNiY2ViNGRhMjA2YTA1NDI2ZjZjNWI4NyBpbXBvcnRfdW5pY29kZQorODI3MDQgN2FmMjI5ZWEyZTY2NWE5ZWMxYWVhNmY3NzFjNWUwZjBkZmZlZWVmNCBpbXBvcnRfdW5pY29kZQorODI3MDUgYTI5Y2MzODUwMDI5ZjU3ZTcyMjMxYWEzZDM2YzZiM2E5Y2M4NDhjOCBpbXBvcnRfdW5pY29kZQorODI3MDYgYTQyMWI0YjQ1YWE2NjIwZjJkMWE0NTFmNWIxZjgyZjcwYWY2OGU2NCBpbXBvcnRfdW5pY29kZQorODI3MDcgYTdiYjg0Zjg0OThhMWY2YmM1NWJjZDFjMmRhM2M2ZTFiMDU1MzcyYiBpbXBvcnRfdW5pY29kZQorODI3MDggYWY3ZWMxNjkxMDQ3YmNjMzJhMDYyNTcwOGZiMTJlZTM1OTFmYjlkOCBpbXBvcnRfdW5pY29kZQorODI3MDkgNjhiMGU3MmVmNGYyMjFkMGI1ZTZhM2JlYTc1MmE0YmNjODk2NmFkOCBpbXBvcnRfdW5pY29kZQorODI3MTAgOGU3MGE1ZWMxYWNhNjI5NTQ4ZTljMjdmMTE3MzA1ZGY5Yzg5Y2VlNCBpbXBvcnRfdW5pY29kZQorODI3MTEgNmRjYTkzNzAyZTZiZDAyZGRjN2VhYjQyY2ExYjk3YjgxNzcwY2ZlOCBpbXBvcnRfdW5pY29kZQorODI3MTIgNzZjMzVkOGEyNmEwMTIwZDhkMGI3OTM4MjRmOWQ4OThlMGVjYTNkOSBpbXBvcnRfdW5pY29kZQorODI3MTMgYTdjZjkwM2IxN2RjYjFlMjU2ZjcyNzdlZDU4ZTZjNWIyOGJkZTQ4MCBpbXBvcnRfdW5pY29kZQorODI3MTQgNzhlNmE2ZmJkMzYyMWJkOGY3MTAzNDk3MzIxZjQ4NTc3MWEyOWY4YyBpbXBvcnRfdW5pY29kZQorODI3MTUgYWIxN2IwYzIyYmExZDI0ZTA1NGRiOTM5NGQ1MGNmZjcxYjk2MmUwYyBpbXBvcnRfdW5pY29kZQorODI3MTYgMDk1YjI5NzJjNDRmMTEyMzZjMGUyOTMwM2MyMzdkMDA0ZWQ5YzUwZSBpbXBvcnRfdW5pY29kZQorODI3MTcgMzZmNmVkMDY1MWUxMzQwZWJmODFlNDlkNTBiOTIyMGY5ZjFlNGM5YSBpbXBvcnRfdW5pY29kZQorODI3MTggODUyZTRhNzVlMTU2OTA0YWU0N2RmOWJmNWJlZGZmNmQ1YzQ2ZjE3NSBpbXBvcnRfdW5pY29kZQorODI3MTkgZjBlZjgzZDkxMzU0NWJkZTMwOWM0YjRhMDBmZGMwODEzNGIyY2VhOCBpbXBvcnRfdW5pY29kZQorODI3MjAgZWNiYThmYTVjNzQzZWUwYTIzOTY1NTkxNjg5MjAyYTU4OWQ2MTM3MCBpbXBvcnRfdW5pY29kZQorODI3MjEgOGRjZjg0MWYxYmQ0MDVmZWNiZWZiMDQ2YWQ0YjQyNTMzMTg2NTBiMCBpbXBvcnRfdW5pY29kZQorODI3MjIgYmMwYjRjOTE4ZGRiNGE3ZDNlODkyY2U0OTg0Y2U3OTUwYTAzMDRkZSBpbXBvcnRfdW5pY29kZQorODI3MjMgMGU3ODJhNmU2YmI3NmUzZWRhNzZhN2FkMmZjZjA4YWJlNWVhZGY3MSBweTNrCis4MjcyNCBjN2YzNjE3MDI4YTgzOTkxN2I1MTJjYTViYTU3YmZiODZkZThkMmQyIHB5M2sKKzgyNzI1IGEyMTc3MjYyZjZiN2U1YTc0NGY3NDJiNDBkYjc3ZWQ5MTMwOGNkYTUgcmVsZWFzZTI3LW1haW50Cis4MjcyNiAwOGVlZTg5YWY3Yjk5ZDEzYTA1OThkZjU5Mjc3OGU5YTk2MjMyOGEzIHJlbGVhc2UyNi1tYWludAorODI3MjcgOGM2MTRiYzc2NmI0NTM5OWYzMTFkZTBiMzJlYWUyODE4MDZhMGE2MSByZWxlYXNlMjYtbWFpbnQKKzgyNzI4IDBkMTIyMDE3NWYyOWVkMDFmMDA5NjZkNWNhYTZjYTlkNDdjMjcyYzMgcmVsZWFzZTI2LW1haW50Cis4MjcyOSA4YWFhZjAxZmNmMDNlY2E0NDFhYjg0ZTlmMzhkM2IxZTBhMGFmZTZjIHJlbGVhc2UyNi1tYWludAorODI3MzAgZjNiZmRmZjIxNDZhYTRlMTAzMjNhNTBmY2M0YTk3Zjk5Y2UzNzNiMSBweTNrCis4MjczMSBjZmNmNmY2M2UwYjRhYzA1YjUyYTA5MTUxMGU1Y2Q1ZmVhNmExZmY1IHB5M2sKKzgyNzMyIDU4NWM3MGRjMWVhYTRmN2VlZmJmZmIxYTdmYjMxZDJlMDczODlkYzcgcmVsZWFzZTI3LW1haW50Cis4MjczMyBkYjI5M2ZkNzUyOGI5NGMwMTdjZGMyYzA2YjU1ZDM3MzdmN2EzNjZmIHJlbGVhc2UzMS1tYWludAorODI3MzQgNTIzYWZmZDRkNDcyOTM3MDkwN2NlZjM1OWQwYzU0OWRmMWMzOTJiMyByZWxlYXNlMjctbWFpbnQKKzgyNzM1IDQzYTBmYzE4NGE1ODE3NDkxMmVhYTE0Y2NlYmZkN2FmNWJmZjNkZTIgcHkzaworODI3MzYgNDdkNDliNDA2MjAzYTBmMmE5N2YxNWUxZTA2OGEyOGYzNzY0MDU0YSByZWxlYXNlMjctbWFpbnQKKzgyNzM3IGUwZGVkZDJkY2ZhODFlMDExYTk2NzFkNWQ2Y2ZkMDdjMGM0YmQ3MGIgcHkzaworODI3MzggN2U5NGMwM2JiODRlMTUzZWMxZjExZTRhN2RhMGMyNDczMDE0NmU0YSByZWxlYXNlMjctbWFpbnQKKzgyNzM5IDEwYzA2MzBmMWMxNDNhNTY3NTNjM2M0MGY1ZjAwZjhlZjI5YzVmZDkgcHkzaworODI3NDAgMDg5ZmQ3MTBkY2E4ODQ5MTU5ZTNlY2M1MTUzYmEyNzdhZjg1NGQ1MyByZWxlYXNlMjYtbWFpbnQKKzgyNzQxIDdkOWFiMzVlNDNiYzY2YWY5YzQyZDllZDc4OGJkZWQzMDI2NzlhNTQgcHkzaworODI3NDIgODE1YWU3ZjM3MzJiZWViZDFhNmUxY2EzMTJhNmE1ZWIzMGYyMmYxNCByZWxlYXNlMjctbWFpbnQKKzgyNzQzIDVhZTdkZjZjOTNlZDk5YjRiYjE1N2FjZTg2NTYwYjNhODlkMzJmNjMgcHkzaworODI3NDQgZTNmODNmNTZkZDNjZGU5MzZjN2QxOTBmZjM4OTg3ZjE5Y2I4OGFkZSBweTNrCis4Mjc0NSBlOTdjZGQ1YzVlNGZjOTkxNTY5MmI4MWM2NmVlMzM5MmI0MGY1YjAzIHB5M2sKKzgyNzQ2IDkyYTlkYzY2OGM5NTI5ZjAxOGE2MjBiNDcwN2JjMDljZTE4NjE2YzAgcHkzaworODI3NDcgZDQxYTMxZjViZjgyZjYyNGFmMjE5Zjk2OWE3ZTU2Y2E1MzU1OTk1MyByZWxlYXNlMjctbWFpbnQKKzgyNzQ4IDRlZmY5YzM1YzU0YTdiYjk4NTRmZTFiNjMxMzRhNWVjNTJlN2FiZmUgcHkzaworODI3NDkgZmJhOWU5MWU4OGRjZGYwYzc0OTM0NmJmNjZkMTA0MTRlNjU5ZmY3ZCBweTNrCis4Mjc1MCBjNzBkNTBkMjFmODUxYTZhNTcxNDA2OTllZjJkYTllN2JhYjNjZjU0IHB5M2sKKzgyNzUxIGRlMWI5ZmMzZTFlNzIyMGY0MzJmNjA3YjU4YTQ2MTNmYWExZTU2N2YgcmVsZWFzZTMxLW1haW50Cis4Mjc1MiA4ZWE2MGFlMTQ5NjhmMzY5YTI5YzM0MjI4OTVkNjk1YzU4NTE3MzIwIHJlbGVhc2UzMS1tYWludAorODI3NTMgYmQxOWM3MTc4ZjI0MmMzODQxNDFmNjIyYTMzMDdhY2EwNjFiMTdkYiBweTNrCis4Mjc1NCBmNDc4MWFhODJiMzc1MGIxZDQ4OWQ2MGMzMWI3NmE0OWMzOWUwM2UyIHJlbGVhc2UzMS1tYWludAorODI3NTUgNTAyNWJhMDU1M2I2MzI5ZWIxNThkNDNlYzE2YzI1OGM1OWY5MjZkZCByZWxlYXNlMzEtbWFpbnQKKzgyNzU2IDYzNjEzYzRmNjMxN2YwNmEwNTE2NWEzZTcyNmY2MTBkMzUxMDgyMDYgcmVsZWFzZTMxLW1haW50Cis4Mjc1NyA0ZDIyMmVlMmExYzg1NDc2ZGMwZDZjZWQ1ZjgyY2Y5MWMwYTNmODI0IHB5M2sKKzgyNzU4IDdiNTcyODllYmUwZDRlZjk5MWY1NWZmMWM5N2M5MDQzODNlNTNjYjEgcHkzaworODI3NTkgOTgzZTJjMGJmOGRjZGVjZGE5OWJmOTEyMDc2MWYyODVhMGMzYzk1MCBweTNrCis4Mjc2MCAzNWM1OWQxMWFlMTM4MzI3OTNiMzA4YjQxYzc0Yzk5NWU4NGZhOTQ1IHB5M2sKKzgyNzYxIGJjYjc5ZTFhYTAwZjdmNDRkMDhiNmM3ODU2N2E1NTEzODJmNjMyZjkgcHkzaworODI3NjIgMzNkZTljYWY3MDkwMDAwMjJhOTcyYmJiYmRhNTA2YjEyYjAzYjgwOSBweTNrCis4Mjc2MyAyNTRlZjUyMDUxMjhhYzZkNjAyOTFiNmUyOWE1ZDAwYzUzYWQ2NTNjIHB5M2sKKzgyNzY0IDk0Mzc4NDcwYWUxYzkwNzgzZjIyZTc4ODU5ODcxOGMzZDQ3YTgwYmMgcHkzaworODI3NjUgZmYxYTgwMzc2NDhjNGJjOWM1NDg3NTg3NDk1MDdhNzFhNTE2MDAwYSByZWxlYXNlMjctbWFpbnQKKzgyNzY2IDhiZTJiOWU0ODcxODdiZGMyODU3YmZiODI4MTRkZTg1ODE2ZmI4YjEgcHkzaworODI3NjcgYWFjMDkyZWFmOWQxODJkMTU2YmMyZDdhMjAwYzkzNmZhMjZlYmMxNyBweTNrCis4Mjc2OCAwZmJkYzNmYTAyNGJlNThlOGYxYjFkODg4N2VmOGQ4ZThkNDViMDNiIHJlbGVhc2UzMS1tYWludAorODI3NjkgZGFiMjg2ZDJiYTgyZmZhYmM5OTJhMmMxN2Q2YmM3ODBjOWQ3MjlhNyByZWxlYXNlMjctbWFpbnQKKzgyNzcwIDQ5ODYxZGZiMjcwMTgwMjExMTVmMGEyMTAzZTIzNjBjMGIyMTQyYWMgcmVsZWFzZTI2LW1haW50Cis4Mjc3MSBlZDNiYzdhOTZmZmI0YmEzN2QzYjYwMzkwMjZlYTFhNzYyZTYwMGEyIHB5M2sKKzgyNzcyIGFjZDZjY2NjZTgzN2I5MzUxNjEwNjQ2MTY2ZTZlZGE3MzgxZWI3MDIgcmVsZWFzZTMxLW1haW50Cis4Mjc3MyA0MjlkMGM3Y2RiODU2ZGM1OWIyM2ExOWJlYjE4MmMxNzEyNzdhYmIxIHJlbGVhc2UyNy1tYWludAorODI3NzQgYWNlZjVkNjYwODMzMDA5OGM2NmYzZTFjYTg2YjQzZThiOWFlZjRjOSByZWxlYXNlMjYtbWFpbnQKKzgyNzc1IDAzZjczYzQ2Zjg5YzdjYTc0MmM4OWU1ZWY0YjAzZGY5Y2FhMzExNTMgcmVsZWFzZTI3LW1haW50Cis4Mjc3NiAwMzAzNmFmY2E1NDkxYTAxNDQ5NzE2OGUyYjJhOTYyNDJlOGNlZTc3IHJlbGVhc2UzMS1tYWludAorODI3NzcgNWU2MGM3ZGIwZjUxMGVkYmEzMTZmZGE5YThmYzViY2VkZjI4MjM2ZSBweTNrCis4Mjc3OCAyODc1NWViNTNmMzg5NDYwZWRiMGIyZTJhMmQ0ZmU2ZDA2MjYyNzU2IHJlbGVhc2UyNy1tYWludAorODI3ODAgYjU4YjRhYTQ2OWM0ZjgxNzhmNzJlZmJmMmEzZTc1NDFmYzlmZmM1ZiBweTNrCis4Mjc4MSAxNjM2MTI0ZTVmZmVlYjZjYzExMjI5NTFhYjRhMzMzZjlmZDcxMGMwIHJlbGVhc2UzMS1tYWludAorODI3ODIgN2UwOWM2NGQ0YTY0Y2UwZDI2NDcxYzI3OWQwNWE0ODZhYTRmZDA0YSByZWxlYXNlMjctbWFpbnQKKzgyNzgzIGY3NTVkMWFiODA3NDZkYjZjYTUwZWFmMTMwYTY5M2ZlNDYyNTUzNzUgcmVsZWFzZTI2LW1haW50Cis4Mjc4NCA1MGY0ZjExM2JiYzNmNzMxZmJmMDMyMTBkMjlhY2I1Y2MxOWM1OTk1IHB5M2sKKzgyNzg1IGE5OWU4YWRhYzA4MWRmY2EyNWJmMzhmNWMxYjBhMmIxZTM0MzA1ZDUgcHkzaworODI3ODYgMzY3ZDYxZTZhNzBmMDY4ZjE3NWI3NDk5NThiZmE1ZjM5ZjU5ODZkMCByZWxlYXNlMzEtbWFpbnQKKzgyNzg3IDU1NTMzZDU4MjhiMDMxYTZhYWI2MmY5ZThjODA1MWQ1MjU1YzhhZTYgcmVsZWFzZTI3LW1haW50Cis4Mjc4OCBmMGRkMDNiZjZiYzVmYzA3N2Q3YTU1MDEzZGEwNjI1MDQyMzVkMDIwIHJlbGVhc2UyNi1tYWludAorODI3ODkgNWRiMmUwN2M0NDUxZmMyYjM5MTIyOTBlNzJiMDRmZjZiMzY0YWVkOCBweTNrCis4Mjc5MCBiYTBmNmUxN2ViMjIzYzAzYmRhM2E2YWViZmFlNzA4MGUxYjNmMmE4IHB5M2sKKzgyNzkxIDBiMDcxZTFlZmQ0MTRmMGJkNDE5ZDg1OTI1YmJlNmY4YjdhN2JkNDMgcmVsZWFzZTI3LW1haW50Cis4Mjc5MiA4MWQwNTU3ZGY2NDdiZmY1ZDYzODJkZjRkNWZjMGI4NDhjYWUzYjc5IHJlbGVhc2UzMS1tYWludAorODI3OTMgZjk3YmU1ODBkOGMxNmViMGY5YWI2MTUwOGY2YWU5MTRkYzNkMTdhOSByZWxlYXNlMjctbWFpbnQKKzgyNzk0IGI5MTUxNjI0MjdhYjRmNmU3NDk3Njk0Njg1MWUxZjlhZmQyZTlkNTQgcmVsZWFzZTI3LW1haW50Cis4Mjc5NSA0MjRlM2ZjZmQzYWQxMWUwNTE3NTQ1NDg5OGEwMmIzNjg5MGQyODc5IHJlbGVhc2UzMS1tYWludAorODI3OTYgY2U5MzVlNzFiZDA3ZTUxOGUyYzc3YzQxOWIwMTgwMGJjZjk1NjI1YyBweTNrCis4Mjc5NyA0NzA3ZWRlNGQxNGZmMTRlNzFiMjM1NDg5MTUwMzA5ZDIwMDdmODNkIHJlbGVhc2UyNi1tYWludAorODI3OTggYzhiNzdlZmU4YjU2ZTk3Mzc3M2VmZjdjMTBmMmEzOGI3OGMwZTNlMCBweTNrCis4Mjc5OSAwZTZmYmY1MTg4NTNmZWJmZmQ3NzNjZTRmMDBkYzMzMGNhMDBmZmRhIHB5M2sKKzgyODAwIGVkYWI1MDFmOWRmOGVmZTE4MjIyNTZhMWE0ZmE1MmUzZjZkYjU2NjcgcmVsZWFzZTMxLW1haW50Cis4MjgwMSAyOTdmMmMyOGYxODI5MzM5ZjRhOGIxZjNjMGQwOGJkYzlmOTE3Yzc3IHB5M2sKKzgyODAyIGQ1ZDUxMmI4NjVhNzVkM2RiMjQ1ODJmNzBhMDY5NTBlZTM5YmQ0ZjIgcmVsZWFzZTI3LW1haW50Cis4MjgwMyA1MDEyZmZhZTE4ZmFjNmI5MmNjMzdlYTEzZjA1NDZkMjBlNWNhNDZhIHJlbGVhc2UyNy1tYWludAorODI4MDQgOTBiZjA2MzFiZmI4ZWU4NzBkZWM3ZGI5YWFhNDlkNmJiYThkZDgyNCBweTNrCis4MjgwNSA0Y2IwZTg3YzA3Y2EzNmExZjBkZjE1OTA0NGI1ODQ1NGNhOWIyZTkxIHB5M2sKKzgyODA2IDYxMmUxMjYzMTUxMWIyMjRkM2I0ZDE4MDQwZWZhNjgxMDM3MDZmNzIgcHkzaworODI4MDcgZDA5MGY2MjU0YzQ1M2RjZTdkNzRkZmIwOGU3NzZjOWUyZmY1NmM5ZSByZWxlYXNlMjctbWFpbnQKKzgyODA4IDM2NWVlYWI0YTM1MDI2MGFmN2UxMDc2MTJhOGYyNjYwZmZhYWUzMTkgcmVsZWFzZTMxLW1haW50Cis4MjgwOSBmY2ZhN2JiZTE4NWVhZmMwYTliMTU3YzYyOWYxMjVhMTFiZDg0M2RmIHJlbGVhc2UzMS1tYWludAorODI4MTAgN2Y1Nzc1Mzk1ZDMyOGIwYzIwZGYxY2EwYzQxN2U0YTJmNTM4MmFlZiBpbXBvcnRfdW5pY29kZQorODI4MTEgYmUxM2ZmMzc1NWU5ZmFiNzE2MzFjYzhlODc0M2ViYzU0OTZkNzA0ZiBpbXBvcnRfdW5pY29kZQorODI4MTIgODFmMGYwZDUzZDEwODRlNjE3MmFlMjYwM2RlNTA3ZWU3ODU2ZWQxMiBpbXBvcnRfdW5pY29kZQorODI4MTMgZDEzOTE0ZWNkMzcwZmZiYjQ5ODEyZjVlZmM3YjZiYTM4NDY1OGYzZSBpbXBvcnRfdW5pY29kZQorODI4MTQgMTg5ZmE5MmQxNWRjNTk3ODI5ZTc1ZjA0ZGIxZDk4NmJmMzZkMTlhYyBweTNrCis4MjgxNSBiMTQzOGQyNmMxNjdiODYyMWRlOGMyMjg5ZTcwNDFlY2JhMWYyNTFiIHJlbGVhc2UyNy1tYWludAorODI4MTYgYTM1MmI5MTU2Y2VlY2IyNzg4NDk4NTk5MDNjZDBkNWU0ZTVkODg3ZiByZWxlYXNlMzEtbWFpbnQKKzgyODE3IDBmNGI3YzA3ZDFiMzdiNTIxMWM3YzIzNWYxMDkzNDIwZWJjNmY0YmMgcHkzaworODI4MTggNTNlN2FlOGNhMDM5MTQ4Y2Q0YTEyNTY2OGRkNzFjMjhmMzdjNjMzNCBweTNrCis4MjgxOSBlYWNjZjFhMWNiOTAzYjRkZDY4MjNlMjExZjg5OTE0MGE5ZmNjMDFmIHB5M2sKKzgyODIwIDRjMTFlNDE0MGNlZDFmYTM4OGQ3NGQ2YWJkOTRmZWEwODg0NDM5OTggcHkzaworODI4MjEgMDZiMzg5MWE2Mzk1MzRiYjRlNDM1MmJjYzcxMmYxNTAwZDg3MWFkYyBweTNrCis4MjgyMiAxY2Y0M2M2ZTY1NjZiMzYyOWZmMzJjM2IyODc0N2JiYjFlN2Y2YmY2IHB5M2sKKzgyODIzIDExMjlkNGRmZWVkNmZlMWQxYmZlOGMyZGM5MWE3YTlhZGNiMDE3NzAgcmVsZWFzZTI3LW1haW50Cis4MjgyNCA0MzI5MDhkNTIxY2VmZWViOTU3NTJkYmNmNGQ2OThlMGYwYWJmMTYwIHJlbGVhc2UzMS1tYWludAorODI4MjUgMzJkOGIyMmIwZTdjNWU2MjkwZDBmNGU3Y2M5NDcwN2VmNWQ2MjliYiBweTNrCis4MjgyNiA1Y2EyMmExYmUzY2QyMTY4ZTMxNGE0OTdiZmQ5OGEyMzRmYjcyODE1IGltcG9ydF91bmljb2RlCis4MjgyNyAxOTQzODRiNTM4MGU1MjQzOGQyYWJiNGFhMDczNjBiYTU3NDEwMmY3IGltcG9ydF91bmljb2RlCis4MjgyOCA0ZGQ5ODUyZGFlOWIzZTcwZWI5OTQxYTBhZmNkMzRiN2QwNjBlZjgwIHB5M2sKKzgyODI5IDczNzUxOWVmMTYyZTZlZjI3NjZhNmViYjE0NmIwN2Q0ZTZmODQwNmIgcmVsZWFzZTMxLW1haW50Cis4MjgzMCBhYjEwMmEyMjYwMzgzYjEyZGM1NzM5NGMwNTU2ODMwYzhmNjU2NDA4IHB5M2sKKzgyODMxIDNmMzdlM2NjYzEzMTM4Nzg3ZWNiODdhMzY3MWMyNmUwOWM5ODI3ZDEgcHkzaworODI4MzIgNjU3NmZkNGMwZDJlMzExOGQ0OTRkMGVkZjBlYjI0MTE0NDdiMDlmMiBweTNrCis4MjgzMyA0OWI4M2JmY2ZhOGZiYmEzZmY5NmQ2YjUzNmM3MzhkODYyZThmZWIxIHJlbGVhc2UzMS1tYWludAorODI4MzQgODQ5ZjZlMjIwYWEwZDIzMTBmOGE2MzMyNjA1MDExMGJjOTFjNDMxNCBweTNrCis4MjgzNSAzMGY2OTVlYzk0OWJkMjI1NTM4ZDQ4YTFkY2MzN2VlMGJlMjhkZDlhIHB5M2sKKzgyODM2IDhlNDJjN2E1ZGFiOGQ4ZmI2NGRhMTBkMmEwMGRlMWM2OGJjNDIyNTYgcmVsZWFzZTMxLW1haW50Cis4MjgzNyBmNWIxOGYyNjhmNTdkOGU5NjAyZWNlZjI2MGNkMDVhMWIwMWRlMjU1IHB5M2sKKzgyODM4IDBiYjRkYWQ4MTYxNGI3OWYyMjZmZDMyZWZmMzhjYTEwNmNmZmE0Y2QgcHkzaworODI4MzkgNjY0YTIwZjRhODM2Yzc4MjJjZGI1NjE5NTBlZTkyNjI2NzE0NTRhNyBweTNrCis4Mjg0MCA3ZWFiYTQxM2ZkYTRiOGYyNTc2MDJhMDU2ZjkyYjE1ZTFjYTBjMzk3IHJlbGVhc2UyNy1tYWludAorODI4NDEgOTRmNTI5NzY0YzM4NzNjNjUxZWQ0NTE4MWU4MGIyNjhiYjM1ZTE4NyByZWxlYXNlMzEtbWFpbnQKKzgyODQyIGZjZDQxMjNhZWQ5MzQ2YzY3OWZmOGU4ZWFlNjBkNzY0Y2JiM2RjYWMgcHkzaworODI4NDMgNjBmZGYxNDcwMzJjZjE1Zjk3OTY5MWQ3YjYyODQzMzM0ZjYwZDQyMSBweTNrCis4Mjg0NCA2NGNhYTc0OGEyOGVhYzkxZDVhMDU2ZWJkZWJiZWY5MDUwZTE4M2Y1IHJlbGVhc2UzMS1tYWludAorODI4NDUgNGVmNjM5ZjRkODEwMGI0MjkwY2Q1NWFjOTYzOTkxMTFhMmRkYjY3NSByZWxlYXNlMjctbWFpbnQKKzgyODQ2IDFmOTk4MjNmNGZhZTc4YTFkNzVlOWM5NjJhN2E1YmI4NjAxMWZjNDQgcmVsZWFzZTMxLW1haW50Cis4Mjg0NyA1YjM1MjEzM2M0NTIxYzllODI4YjMyZWEzOWMwYmNlOWE5YWQ1YmIxIHJlbGVhc2UzMS1tYWludAorODI4NDggYjllZGRmM2MxZTkwYTFlNjg5YTYyY2M2MmViZjA1MGI5YWY0Y2FiNiBweTNrCis4Mjg0OSBlZGZkN2VhNDhlZGIyNWVkNmZjOTFiODQwODAwZTExMzczN2VmOTEzIHB5M2sKKzgyODUwIGI1NzQ5ZGQ4YzQyMWJiMWQwODI0NjUyNjkyY2FmNmFmYTY4YmQwM2MgcHkzaworODI4NTEgZGFlYTk3OGE0OGFlODk0Zjc2MzE5YWNlNTU3NDgyNWY2MmFhNTdmMyByZWxlYXNlMzEtbWFpbnQKKzgyODUyIGFkNTFhYjhiNjRiZDAzZTkxMWUxNzJlOTg1MjM5MTM5NzUwYTMzMTkgcmVsZWFzZTI3LW1haW50Cis4Mjg1MyA0ZmQ1YmEzNWRmNmU1Njk1MTgwZDAyODliYTUxODIyODEwZThjOGE4IHJlbGVhc2UyNy1tYWludAorODI4NTQgOThhNGU5NmYxZjY3NDAxY2U2ZDlhNjE3ZDJjMzRhNDBjNWJiMWFjMCByZWxlYXNlMjctbWFpbnQKKzgyODU2IDMxYTNkNzZmMzgzNTE5ZmU2YjU0Njg1NGVhMTZjNTJiYTUwNjE3NGUgcHkzaworODI4NTcgMmM3NTc5ZTA0YWQyMTQ1NWZhZmVmYWVlNDI4MThjZjNjODlmNTRhMSBweTNrCis4Mjg1OCBlZjY3ZTc0ODEyNDQ3NzVkNThkZTk1YmJiY2QyOTgzNzc1MGZiODA1IHJlbGVhc2UzMS1tYWludAorODI4NTkgYWVkYjUzZDhjMmI4Y2Q1NDcyMWE5NjUyZjI2OTM1ODk1OWQ3NTBkYyByZWxlYXNlMzEtbWFpbnQKKzgyODYwIDY3ZWRjNDI0ZTk3YjgyY2RlZjg1NDY3MDY5NmIwOTcxMDIxNjU4ODMgcmVsZWFzZTMxLW1haW50Cis4Mjg2MSBlNjA3ZmUxNWYyZDY5NDI1ZjQ1OGE2YWQ5NGVhNTlmY2ZkODlmYjMwIGltcG9ydF91bmljb2RlCis4Mjg2MiAxZTM2N2FmZWZkN2UwZTk5NDEzMmViNGQxMjA2N2VhYTgwOWY5Y2NkIGltcG9ydF91bmljb2RlCis4Mjg2MyBhNWZiNzA3Y2FiZGVlYmQ4NmU5OTUxNGQ5ZDY3MGRmZTU2ODQ1MmM2IGltcG9ydF91bmljb2RlCis4Mjg2NCBkNDkzYTFiNDQ1N2U5YTkxMWY1NzEyNWQ0ZDkxOTQwOGI1OTViOWQ1IGltcG9ydF91bmljb2RlCis4Mjg2NSAyMGJiNmZkMGJkOWMzNWY1YjUwOGY1NjFkOWI4NDU5ZWM2ZWIwZTRiIGltcG9ydF91bmljb2RlCis4Mjg2NiAzMzFlMzdlMDUyY2YzYmM1M2I3NWI4MGE2NzMxNjYxMWZhNjllYzg5IGltcG9ydF91bmljb2RlCis4Mjg2NyAzYzliMzg0NGY5Nzg4MTEwY2U3MDJjNGRhNDA4ZGYzM2JlNTE2ZjFmIGltcG9ydF91bmljb2RlCis4Mjg2OCAwOTE2ZTg1ODVhY2IyZDllN2Q5MmEzODk0YjMwYzFjYjI5ZGMyNDU4IGltcG9ydF91bmljb2RlCis4Mjg2OSA3ZjBkYWJiN2ZkOGRkNjEyNmE1OTRkYzZlODZlYjBkZTI3YjE1NzUzIGltcG9ydF91bmljb2RlCis4Mjg3MCA1YjFiN2Y1NTc0YzAwMWJiOGE4MjdjZmRlMDQ0MDYwYjUyNjQ3MmY2IHJlbGVhc2UyNy1tYWludAorODI4NzEgODYzNTUyM2VmNWM2Mzk1NTBhNzZmYzQ0YjNmYWRiNTI1ZGJmNjJlZSBweTNrCis4Mjg3MiBkNGY2N2I4NjQ5Mjg4YTRiNTA4YWUyNWFmZmU0YWMwM2Y2OGIwZmQ1IHB5M2sKKzgyODczIGFkOTVlMjMxMjljNzZjYjI2ZDkwYjUzOThhMDA0NjBlNTYwMWY0NjYgcHkzaworODI4NzQgZDMwYjlkZmZiODZkNDEwNzUzZDNmZjg2YWYzNmNiMmU2ZDllMmJmYiBweTNrCis4Mjg3NSA3NzAyMzI5MmZjNjE0YmNhOTU0Y2I4MTdiZjBkOGZiNzBhYWU5NjQ5IHJlbGVhc2UyNy1tYWludAorODI4NzYgMThiZGM0M2NlNWVkMjhlNWRlMWYzNGFjMTJjMWNmZTZlZDg4NDJmYSByZWxlYXNlMjctbWFpbnQKKzgyODc3IDdkN2U2M2ViM2I1MzAxODQ1NGRjNDUzYmViYTBhZjg2MWNmNjcyMzUgcmVsZWFzZTI3LW1haW50Cis4Mjg3OCA3N2RmZTJhNzc1ZDE5OTkwYzNmM2I3Y2Q3YTM3N2UwZDQ2M2FlZWRkIHJlbGVhc2UyNi1tYWludAorODI4NzkgZWIwMDc1ZTYwNzI1YjlmMTMyM2NjYTNmOTM3MzdmYzdlNzE5MmNmMyBweTNrCis4Mjg4MCA0MTM2MGY4MDM5YWJmYjM0NjI2MmU4YTRlMDIyZGYyMWJjM2E4ZjUzIHJlbGVhc2UzMS1tYWludAorODI4ODEgZDc0ZGUwNTBjNDQ1ZGJlOWVjYTgzYTU5NjFjMmFlNTk0MmI0M2M1MSBweTNrCis4Mjg4MiA0YjQ1Njc4MGM4ZDhhZjQyOWFkOWZjMzIwYWUzZTU4YjcyMWZhZmFlIHJlbGVhc2UzMS1tYWludAorODI4ODMgNjE0MWNiMmUyNmUxNDcwMDM5YmMwYjQyMDM2MzIyZDIzYzU0NzI4NyByZWxlYXNlMjctbWFpbnQKKzgyODg0IDBmMjQzMTQwMTAyMTI3NzE5NjNlNTlmYTlhNmVhY2RmZTdiMzAzNmQgcmVsZWFzZTI2LW1haW50Cis4Mjg4NSBjMGUwNzU2ZTA5OTY2MzRlZWQ1ZGM5Y2NhYjAzNDM4MDVkYTJlOWQ0IHB5M2sKKzgyODg2IDM4MDVmZmU4ZmYzODMxNWViNmUyMjI1MDBlZGU0MTdmNmQzNjQ5OGEgcmVsZWFzZTMxLW1haW50Cis4Mjg4NyA2Yzc2M2Q2MzFkYmEwNTk0NzY3ZTJjZDcyZjVlZmNkMDc3ZTI4ZjcwIHB5M2sKKzgyODg4IDJiNjhhODQ0MTQ1ODcyZmZhZmU1MWMyODMzOTZjYTZjMWM5MTI4MDcgcmVsZWFzZTMxLW1haW50Cis4Mjg4OSBkNGY2MWIzNmNjZTZlNmU3MDAyN2E5ZWMyNWUwYjI3MWJkNjdjNWU2IHJlbGVhc2UyNy1tYWludAorODI4OTAgOWYxZDlhZWYzNzRjNzdkOTk5YWRkMmRmZjMyMGNkNzkzMzMxMDVlYiBweTNrCis4Mjg5MSAwZjgzY2ExMjA3NTI5MGJiMDVkMzY0Y2UyMDE1NTQzNzcwOGJhOGZmIHJlbGVhc2UzMS1tYWludAorODI4OTIgOTY3NTdjNjkwYjA1ZjJkZjRiY2U5ZWI2OWM3MWZjYTRkMDExYTJjMiByZWxlYXNlMjctbWFpbnQKKzgyODkzIGM3MDhjOTQ2ZmYzZTQzZTdkY2NmYTkwNzY4ZmY4MWI4ZWRkZGQzMDYgcmVsZWFzZTI2LW1haW50Cis4Mjg5NSBhMWY3ZGVhMzYyMTk2YjZiMWFiYzQ0NTBiYzdhNzQwZmQ0OGRkMDM4IHB5M2sKKzgyODk2IGEyOTczZTcwNTA1N2E3MWMwMDdjYzZjNTNkMmYwNjRiNmFlZDllNDkgcmVsZWFzZTMxLW1haW50Cis4Mjg5NyAwYjI5MWUyZmYwMGZjOTFhOTdlODBiNTA1MGU2NmE1YWJiOWRkZTQyIHJlbGVhc2UyNy1tYWludAorODI4OTggNjMzM2QzYTdlNWM3MzllOTU1NzE3OWQxMjUwNjNmZDlkOTY4MDMzMCByZWxlYXNlMjYtbWFpbnQKKzgyODk5IDQ2OTI3ODEwMjc5MDg3YTMzOGFjMTI1ZjQzNzQ1NTBlODA0MDY3OTMgcHkzaworODI5MDAgNGZlMjhhNDkxYTYzMDg5M2VhNWE2YzlkYmEyOGNiZTZhODg1MTc1NyByZWxlYXNlMzEtbWFpbnQKKzgyOTAxIGM3NDVkZjk0NjJlNjc3ZWQ4MTJlZTg2ZjYyYjgwMjIzNzBmN2U0YmQgaW1wb3J0X3VuaWNvZGUKKzgyOTAyIGFkMjYzY2MzODZhNTQyMjMyYmIyZWVkY2YzNjQ0YTExZWFhYTAxNDggaW1wb3J0X3VuaWNvZGUKKzgyOTAzIGZlY2ZmMDRkMGFiMTNiMGU4OWM2M2I4NzE2YWFjZDUyYmRkYjE0NTUgaW1wb3J0X3VuaWNvZGUKKzgyOTA0IDdjZGZhY2UxYWIwOTYyNmVkMWU0YWE2Y2I2YTU2NWY2YjkzZjA4OWUgaW1wb3J0X3VuaWNvZGUKKzgyOTA1IDczMGM4YjkwN2Q3ZGNjODc5MWVmNmUzNDAwYmI5YjZhMzc1YTgxMTAgaW1wb3J0X3VuaWNvZGUKKzgyOTA2IGZmOWRkYzE2MWVlM2QwNjk3YmExYzFlOThmYTYyOGU5MmZkYzhiZGYgaW1wb3J0X3VuaWNvZGUKKzgyOTA3IDdiNzFiNmRjNzQ0NGUwYTFjY2JjMDRlMzViNTFlNjUwMzgzZGI1MjcgaW1wb3J0X3VuaWNvZGUKKzgyOTA4IDg5Zjk3YTEyMTNjZDliMDQ3NTg0MTE3YzgyOGE4Y2ZjNGM4ZTdiOTMgaW1wb3J0X3VuaWNvZGUKKzgyOTEwIDIwMjZlYTQ0Mjg4OTljOTNhN2VlMzYyMDdhZDg5NGNhMGViMmIxNDQgcHkzaworODI5MTIgMGI3NTNhM2ZlNGIwZTE3OWU0NWY5NzhlMDJmMWZiNDZlYWJhMWIyOSByZWxlYXNlMzEtbWFpbnQKKzgyOTEzIDVmZmZhYzlhYzdkNmMyNjk1NmY3OWQ5MTNjYTM2MmYyZTVkZWNkZjAgaW1wb3J0X3VuaWNvZGUKKzgyOTE1IDFmMjdhMDVjNmMzMWQ0YTEzMTUyZDNjMzlmN2Y3NTljN2Q0NDYxYWEgcHkzaworODI5MTYgMjRmN2ZhMjU4MWU2ZjFkNGQyZTBmYTExZDM1YjJiNTRkOGFjMmU0MiByZWxlYXNlMzEtbWFpbnQKKzgyOTE3IGU3MDMxOTgzZTZmZGYzYzU0ODUzN2Q3YzhmOWMyMTVmNTBiZjUzMzMgcmVsZWFzZTI3LW1haW50Cis4MjkxOCBlMmVjNWZiYzZjZjEzN2NjNjRjYTBjM2E1OWI4MDBkZDk0NzAwYTkyIHB5M2sKKzgyOTE5IGEwYjk1Mzc3YWFhZDhkNmU5YmRiZTE0MGMzNGZiZGNhYmU5MzRjODcgcHkzaworODI5MjAgN2NiZjhjNGUyNzI3OTFmZDc4YjEzMjNjM2ExZGNmMDRjNTdkODA4OCByZWxlYXNlMzEtbWFpbnQKKzgyOTIxIDg0ZmY0MTc5NGQzZjJiNDhkYTI2ZTg4NjJlZWVmZGUxN2Y5MzNkZmEgcHkzaworODI5MjIgM2M3MzAxMGJkMGIwY2Y3ZjJkODI1YmE5YjJkMmVlNGNiYzM0NTQwZCBweTNrCis4MjkyMyA3YTAwY2E0Yjk1OTJiODVhNjVlZTIxMDVkMjM4M2UwODdkOWU0OTFhIHJlbGVhc2UzMS1tYWludAorODI5MjQgMDE3MTFmNjBmZmZjZmNkNDIxZmYxMTliNWU2ZTIyYWQ2M2I1NmVhYyByZWxlYXNlMjctbWFpbnQKKzgyOTI1IDRjNDVhMzJjM2NjOTk4ZWU1MjJkMjg0YzM3MTQxZDNjMmIxYjM4OTIgcmVsZWFzZTI2LW1haW50Cis4MjkyNiBlYWYwNGEzZjQ1MWEyZGJiMDFmZjQ2ZDFkOWMwZDlkMTdhYzY2ZjQ0IHB5M2stY2RlY2ltYWwKKzgyOTI3IGM3NDFhMWYyMjk3Njk4Yjk2NzhmZWMwZTBmMDVjMWViMzJiMDMzOGQgcHkzaworODI5MjggZmE4ZjM4ODM0Mjg3OGUyNjk4YjQ1YzU3ZmM0ZGRkZTdjMmI5MGJiZCByZWxlYXNlMzEtbWFpbnQKKzgyOTI5IGUwNWI2NDZkNmI5ODUwMWY4MTM3ZThjYWRhMzYzM2EwNzMzNGM5N2YgcmVsZWFzZTI3LW1haW50Cis4MjkzMCBiMjI4OTNiZTA4YzcxZTE3M2Y2NjgzODY2NTc5YWE2OTk1Y2RmMGU2IHJlbGVhc2UyNi1tYWludAorODI5MzEgY2Y0YjgzM2E0N2RlODVhZWM0NzU4MDA0NGZlNWQ2ZWJhNTJkNjdjMiBweTNrCis4MjkzMiBmMjgzMzA4ODFkYjQ0ZTgwNTIzYjc0MDhlM2ZjMWFlNDVlZWU3N2RkIHJlbGVhc2UzMS1tYWludAorODI5MzMgOTA1ZmE1NzE5NDAzMGVjNTZiMDJjMjliMzQxZTFhZTA1YTJkZjllYyByZWxlYXNlMjctbWFpbnQKKzgyOTM0IDJhNzliNzIzYWJkY2Y5NTJlMTIzOWIwZDk1NDIwOTE4NzAwMDM4MjcgcHkzaworODI5MzUgOGM0NDBjZjkwNzc2ZDJkNDczOGM3NjlhNWRmNWY1NTQ5ZmM5N2FlMCByZWxlYXNlMjctbWFpbnQKKzgyOTM2IDllNjE5ZjE2ZjY2YWE0MjRjNGY4MTY5OTQyNTIyNmI1NmEwZTBkNWIgcmVsZWFzZTMxLW1haW50Cis4MjkzNyAzYzc4YjNjZmQ0NjJjZjQ4YWJiZGI4YzRhYjBkZTZiOTRmZGYxYjhhIHB5M2sKKzgyOTM4IGFiZjY5ZDQwMjg4M2I3YjNkZTJjM2M5YTkyN2U4MzU2ZjI0YWRmYzUgcmVsZWFzZTMxLW1haW50Cis4MjkzOSBkMWQ4MTI0NmIyMjk5NmUzZjU2ODE3ZTZkNTA2NTE5YWJkODM1NjZlIHJlbGVhc2UyNy1tYWludAorODI5NDAgMWUyMWQ5NGUwNWY0NjI5MzQ2ZWQwZGVmMmIzNmU2ZGI4MzFlNmMwZiByZWxlYXNlMjctbWFpbnQKKzgyOTQxIDI2ODMzMzM3NTVmMzYyYjZiNTQ3YTAwNDIzYmM5NWZiOTFhNzQwMTEgcHkzaworODI5NDIgNjgwMzZmMmI1YWM4ZDlmNTM4OTMwYzUwMmNlZGFiMzA2ZTg2ZDNmMCByZWxlYXNlMzEtbWFpbnQKKzgyOTQzIGIxZGM2MGIzYzdhZWJjMjQ3MGIyY2I0Y2QzOTk4Zjc0NGU5NzNmMTQgcHkzaworODI5NDQgZGIyZGNjYTI0MDY5NDcyN2JiMDkxZjk0YTdiOTJmMDUzODFhZDNhOSByZWxlYXNlMzEtbWFpbnQKKzgyOTQ1IDE5MTkxNTU5ZWMwMmM1ZGZiMmZlOWQ3MjBjMTUzNGQ2ZDc2ZjkzNjYgcmVsZWFzZTI3LW1haW50Cis4Mjk0NiBjMTZiM2Y2YWM1MTFiNjI0NzNkNzliMjRjMzY0NTlmMGM3YmJkNGRmIHJlbGVhc2UyNi1tYWludAorODI5NDcgMjExZTMxOGQyM2VmYThmNmNkYTI5ZjJkMjUyNThiYzAxYzc1OWZiYyBweTNrCis4Mjk0OCBkYjNhZDZlYzBhNGIxNmQ5N2UyYzIxYjMxM2ZmZTRjOTE3OTI4NjI5IHJlbGVhc2UzMS1tYWludAorODI5NDkgOTc4NjgzZmRlODIwMzc0MTdkODE4NDQ1MjBmMmQ4N2IxZGEwZWJjNyBweTNrCis4Mjk1MSA2ZGMzZDIyMjgzZmY1NGZjNGI2MWYwZmE5ZDJkNGVlZWM1NTIyNTg5IHB5M2sKKzgyOTUyIDE2ZTg2MmE1YjZmMjZkZWQ5ODdjMDg3YTM4YmVlMzQ2YWIwOTNjMWIgcHkzaworODI5NTMgNGJmMDMzNzc1ODRkYjA3NjQ5YjhkZTM1ZTZlZDI2ZDUzYTU5ZWE5MCByZWxlYXNlMjctbWFpbnQKKzgyOTU0IDQxYWIxNjFkNDdhN2JmNDVkYzU4YjQ3OTYxNzY4MjBlMmRhYWI1NDEgcHkzaworODI5NTUgN2U0NTFjZTkwYzFhNjI0NGEzYjRlOWIwMThhNjkyMTFlMDkxZDY0MCByZWxlYXNlMzEtbWFpbnQKKzgyOTU2IDBkOTE4MTJmNjI2MDk2ODdmMGIyM2RhMzkyMmM1MWQ3NmJkZTRhMDMgcmVsZWFzZTMxLW1haW50Cis4Mjk1NyAzMWRmNmY4ZTlmMWQ0ZDA0OWQ5YjJiOTZhZThkYjg3NzQ3Yjk2YzQwIHB5M2sKKzgyOTU4IDY3ZjhmMDVjZDQwZGMwZTI2MWVjMmFiZWYwZDc4YjE0NWI2M2JjZjYgcHkzaworODI5NTkgY2NkM2U1NDU2MmZhN2EwZDY1M2NmZTcwOGExODA4OWVhMzI2MjcwMSBweTNrCis4Mjk2MCBhNGRhZTdlMmRmN2U2NjYzZjBkM2NmYmJhM2FjZWM4NTNmMGI5NTUyIHB5M2sKKzgyOTYxIDQ4MzUxMDZlY2UwYzUzMjRhMjBjNjIyNmY2MWQ5OWM4MDM0ZDlmZmUgcHkzaworODI5NjIgYTY1Yzk5Zjk0ODkwMDk1YjBjY2E0YTMwMjI2ZWU1YzM3MTU2MjQ5YyBweTNrCis4Mjk2MyBiYjdmYzA4ZjcyM2VjN2RiN2ZiMWRmOWVmNjM2OGNiNzg2YTQxOGViIHJlbGVhc2UzMS1tYWludAorODI5NjQgMmY5NTViZjkzMDM3YjZkNjhjYmI4NGIyZDRjMTM4NmRiODM0MjAwOSBweTNrCis4Mjk2NSAyNTIxNmE3ZTIzNGQ2YWEzODVjYjNhMjRmZDJhMTIzNjkwNGNhYTRlIHB5M2sKKzgyOTY2IGQzNTc4MmFjMjFmODYxZjk2OTk5NmRkN2RkODFlNmNiOTQxNDljMmIgcHkzaworODI5NjcgYjc5NDI5MTU0ODBmNzhiYTUzOTZhYTk0OTY0MTYxMjkwZTc3YzkwOCBweTNrCis4Mjk2OCBjOTAwMjFmZDFmYmZhZmZiZmJkYjRmMzNkMTRmNDc1ZGJlNmMzODk0IHJlbGVhc2UzMS1tYWludAorODI5NjkgYzk2YTcyMmJlMWRiYzFjNGUwZDBiYjQ0NmQwNzU1M2UzNGJiMmJkMiByZWxlYXNlMjctbWFpbnQKKzgyOTcwIGI5Yzk4OWEyZmFkMzEzNzdjYjI1OTA0OWUzN2JiNGI2YWU0YzhjZWQgcmVsZWFzZTI2LW1haW50Cis4Mjk3MSBhYTBiNTZkZDE0YWY3YjhiNWQ0M2FlMGY0ZGM0MDQ4M2Q2NDZlZGJiIHB5M2sKKzgyOTcyIGFkNjZlZmY5ODAwYmJjMmNmMjQ2NzI2YWFiZGQzY2Y2N2JmZmRiYmEgcmVsZWFzZTMxLW1haW50Cis4Mjk3MyAzNTQ1NDY4NDZjMjk3YWUzZTEzMjk4Yzk1MzM3OTRkMmJkNjk4NWQ5IHJlbGVhc2UyNy1tYWludAorODI5NzQgM2ZkZDliNDMwMjRjNjIxZjEyZmMyNjkyYjhjNWMwY2ViODZjYTI0YyByZWxlYXNlMjYtbWFpbnQKKzgyOTc1IDdmMzEzZWQ5ZTg4ZjMyNDM5YTBlNGQzYjE1YzllYTM4YTExNjFhZmIgcmVsZWFzZTI2LW1haW50Cis4Mjk3NyBhMTEyMTQwOWY5NmIyMGRlZmFhNGY0NzUxMmYxOTQ1MGJlZTI2YjQxIHJlbGVhc2UyNy1tYWludAorODI5NzggNzNkZGI4YjJiNTc0N2U4YzMyYjNhMTZkNDJlNWRmM2I2YmI2NTEwMSBweTNrCis4Mjk3OSA1Y2ZmMDU4ZDZjZWQ1YzE1OWIxYWZkZmEzODkyM2M2Mjc0NTViM2NlIHJlbGVhc2UzMS1tYWludAorODI5ODAgM2ZhNjA1Njg4ZDAzNWE1NDViNjAyMDEzYmIwYzBjMTZlNzU4MjExYiByZWxlYXNlMjctbWFpbnQKKzgyOTgxIGUxYmMyYzg5MzVkMjBhN2U4ZjcwMmQxOWU3OGYyMzBhYWIyYTE0ZTEgcmVsZWFzZTI3LW1haW50Cis4Mjk4MiAxYzY2ZjcyZjZiYzkzYjFkYjQzYzAzNTNlY2NhNDIwOGQzMDQ2NGYzIHJlbGVhc2UyNi1tYWludAorODI5ODMgZjI0MTU5MmVjZTRlYmU1ZGVhOTMwMDU3NzUwODllZjY5MjcyYjljNyBweTNrCis4Mjk4NCA3NDJmZGY3ZjY1NDAwNTYyNmZlNzdjNzFiZmNlNWIyOWVjYzQ2MzNkIHJlbGVhc2UyNi1tYWludAorODI5ODUgODcyYjM0Y2IyNjg4NTE0NDJlNDE5MzM4MDFmZTY2NDM5ZGM2YTQ1YyBweTNrCis4Mjk4NiBiMmYxMzg1YTIzNWUwZDg5ODZlMjk3NGRjMGFlNzM0OWRiMDAyYjAxIHB5M2stY2RlY2ltYWwKKzgyOTg3IDMzMzdhMjk1NWUxMTkyN2IzZGZhN2FlODhkNzRhOTU3YTkwMDBlMWYgcHkzay1jZGVjaW1hbAorODI5ODggMTY5MzQ3ZjlkNGM0ZjI1ZGIwN2M5ZmQ4NGZkMzc0OTcxZTZjMTQyMyBweTNrLWNkZWNpbWFsCis4Mjk5NSA5Yzc2NmNkMjExZGIwZWFhNjI3YTU4MWIxMDEzMjhkMDhkOGRhMDQxIHB5M2sKKzgyOTk3IGExNGE3ODY5MmM3YTE1ODBlYTc5OTU1NTM2MDJmNjBiYzJlN2RmNzQgcHkzaworODI5OTggYzBkOGZlMjVlMjY2ZWM4NjYxZjM0ZjZlOTc5ZDQ2NzRiMDA1MjRlNyBweTNrLWNkZWNpbWFsCis4Mjk5OSAxZTI2MWNjZTQxMTY0NWEzNmI1N2M4N2Y0ODQ4ZjVmZTJiZTI1ODc3IHJlbGVhc2UzMS1tYWludAorODMwMDAgNDVlZDBjZjJjMzg2YTZmYmM5N2U2MDZmNDIwNDM2YWMyOTE5YTBlMiByZWxlYXNlMjYtbWFpbnQKKzgzMDAxIGMxNjIwMjIwYTQzZDI4Zjc3MDA4MjMwOWY4NDVmNGUyNjc2NTI0ZjkgcmVsZWFzZTI3LW1haW50Cis4MzAwNSBjYmQ2ZjVkMjRhZjkwNjFlYTJhYmFhZWJlMmIxMTJjMDY0M2JlYTk2IHB5M2sKKzgzMDA2IDkwNTdlYTAxNDQ2MTdmMjg2NDEwZWVkMjg2MjZjNmU1ODM3MzU1ZWIgcHkzaworODMwMDcgNzVhZjRhMjdhMDcwOTcxYTAzZWI0ZGJjMzhiZTdhNmJiNDZiMWExZCByZWxlYXNlMjctbWFpbnQKKzgzMDA4IGQwYmEzYjhiMGQ0ODJiMTFlZmY5NmQ4OGRjNjgyMzVkN2RiNzY4ODkgcmVsZWFzZTI2LW1haW50Cis4MzAwOSBiZmRiNWYwOGMwZjgxZmI1MmM5ZWRlYzk1ZmJkMGExNTlhYmJiNDk0IHB5M2sKKzgzMDEwIDE1ZWRkNWZiYmNhZTFkM2JjMThkMDk2NzU5MTczZjU4NzdjZDI5NWEgcmVsZWFzZTMxLW1haW50Cis4MzAxMSBmZWU0OTk0NjIwZmJmOTg1MWFjMTNkODcwNmZjMWMxZTFjYmVmMTgwIHB5M2sKKzgzMDEyIGY0ZWIxYzZhMzRlZjQzMGFkMGViZWIyZjZiMWUxZTVjYjJkNmU2YjAgcmVsZWFzZTMxLW1haW50Cis4MzAxMyA3MDc5YzYwNzgxNGNhYWI0YzBiMTgzYTY1M2M3YmE1ODYxMGQ3YzUwIHJlbGVhc2UyNy1tYWludAorODMwMTYgNWI0Njg2ODc3NjhjZDUxOGFiODJjNjcxMDdmZTMwNjhiM2NhNmVhMyBweTNrCis4MzAxNyA3MDkyNWQzYzAyNzk0N2Y2OTkzNjk4MjIzYzg0YTE0MmIzODcxOTg3IHJlbGVhc2UzMS1tYWludAorODMwMTggMmYxYTgzNmYwZmFjMWEyM2YwZGI1MTlmN2M4ZDE5NTc4OGQ3MmQxNCByZWxlYXNlMjctbWFpbnQKKzgzMDI1IDIwZTU2ZWNjZGY1MjI2Mzg2YWU0MWNlYzMyZWRmMDQ2OGJhYjIyOTUgcHkzaworODMwMjYgNGI0MGJmOTFlYmViMzI2ZTU5Nzg0ODA3OGUwNTRhYjgwNzlmYTJhMCByZWxlYXNlMzEtbWFpbnQKKzgzMDI3IGJiNjhlNTM0NTRiNmQ2NGM2ZDM2MGIzMjMyMGZjODI1NTllNmZiYzIgcmVsZWFzZTI3LW1haW50Cis4MzAzMCAzNjc1MjlkYzM0ZDExZjEyNTM0ZjJiMzAzNWNiMjk2YWViNWZiNDNlIHB5M2sKKzgzMDMxIGU1Y2RiMTI3NjhjYjRhYjliYTk0MGM3MWNmMTQzOTMxZGQzMGQ5NmYgcmVsZWFzZTI3LW1haW50Cis4MzAzMiA3YjVkMTUyN2MwY2U4YTMwOTA2NTY4NWVlYWU5M2ZlYWM4MjBlYzA3IHJlbGVhc2UyNi1tYWludAorODMwMzMgNTIwYmY0ZDFjYjY2NTE2YjkxMDc0NmJhOGIxNjc3MDU2NzIwYjY2MCByZWxlYXNlMzEtbWFpbnQKKzgzMDM1IDQ1NDVmZjUwNjFiN2E3YTIyNDNiZmM2MWMzYTgzYTE2ZjBiYTE0N2QgcHkzaworODMwMzcgOWRiYmU2ZTdiNjY4YzE1ODQ2ZDdjOWZiMzVhNmUwNGIzNjZkYWM1NSByZWxlYXNlMzEtbWFpbnQKKzgzMDQ1IDFmNGVkNzFiNjhlMjI0NmU1ZGQ2MWVlNWFmMmI4ZWEzMzEzYmU2ZmMgcmVsZWFzZTI3LW1haW50Cis4MzA0NiAzMDU5MDJiM2MxYTAwOWZiY2RlMTc0N2E1M2FkZWZkNjE3NzVmZDUzIHB5M2sKKzgzMDUzIDI5YTNlZGE4OTk5NTNkYzJiMzE1NjhkMGVjNjcyNTk5NjE2MGUzNTEgcHkzaworODMwNTQgZWUwMWY1NDgxYzY4MGM5MGNjM2NkMTZkNjBmODg5ZDdiNzk2MmMxOCByZWxlYXNlMzEtbWFpbnQKKzgzMDU5IDNlNjA5YmY0NjJmZjMxMWNjMzA2ZDA4ZTQxNjU4ZTg5NWJhNjc0NjMgcHkzaworODMwNjIgMWM0NDFlMzlkYmU0NmQ4ODBmN2YxN2ZhMTYwODRlYjA2NzBmMDM2NSBwZXAtMDM4NAorODMwNjMgODg1MjBmYjQ1YmYyZWQ0YTNiNzlhNjNkNDdkYzAzZjAzYTY1NDczMSBwZXAtMDM4NAorODMwNjUgNTkxMjQ5ZDk4MzgzYWM2MzQxZGRiYzE3NjM5NDM5ZDg4N2Q2Y2ZiZSBweTNrCis4MzA2NiAxNmVkZDRmYmE2YTVjMmQ2YmUwNDBmMWE5NmVhMjJjNWM3OGM3YmUyIHB5M2sKKzgzMDY3IDJhZDhlOGNlNDZjNmI4ZjhlNjlmMzY5YTkwNjM0OTk0NGZkZDQ2NTUgcHkzaworODMwNjkgNWE2OThhMTUyZjMwMjM1ZDA0OTk0ODM1NGQ5MWFhMjU1ZDYwN2ViMSByZWxlYXNlMzEtbWFpbnQKKzgzMDcwIDcyMWU3MjhhYzA2MGYwYTQwYmQwMWY5ZWJjMmI2NDk2ZTdjOWI0YmUgcmVsZWFzZTI3LW1haW50Cis4MzA3MSA1MzVjYWIxYThjMDA0OTZlM2NmNTg3M2QxZjMxMzA0NWE3MTZlZDY2IHJlbGVhc2UyNy1tYWludAorODMwNzIgMzdkODQ4OTFjNjcxYTJkMTdiNDVhZGU0NTI2YWY5NDg2MTlhNmI3ZSBweTNrCis4MzA3MyA4ZWY5NTdjMzgxZmRhNzI3MDkxZWFkMGVmNDMxMjAxMmY1ZjFmOTZjIHB5M2sKKzgzMDc0IGZhYTVmMDE3ZmVhNWQ4OWY5M2I3NTk2MjdlNmE0MmM2NWFhZjdkYWYgcmVsZWFzZTMxLW1haW50Cis4MzA3NSBlNjBmZGIzNDhiZGM2MTEwYWIwZWQ3OGUzMDFjZTFkMGY4NjQ5ODQ3IHB5M2sKKzgzMDc2IGM0ODNmOTQ5Nzg3MmI2MzIxYTlkNWFiZWNhODJmZjM5NDUwZWUyOGYgcmVsZWFzZTMxLW1haW50Cis4MzA3NyBiZmZkMzk5Yjc2NGM2ZGQ2N2Q4MzUzOTM4MzAwZGE4MmFkZWIyNGRmIHJlbGVhc2UyNy1tYWludAorODMwNzggNzZlMDc5MjI1MDc5YzZmNTM5MGYzZGNkOTRhZmMyZTZmYjEwZGFhNiBweTNrCis4MzA3OSA5OTZlZTllMDM4MTY3MDc1ZTdlMTM1ZGEyOTUxOGFjOWU1YmY5MzdmIHJlbGVhc2UyNy1tYWludAorODMwODAgM2E5M2ZkMmViYjQwY2VjMmJmNmExYzU2YjlhZjVjY2JhYjc1ODdhYyBweTNrCis4MzA4MSBjMGNmN2Q3MDAxZTIzMjBjMmI4MjdiODY3NTA5MjVmYzRkNzk4ZjllIHJlbGVhc2UzMS1tYWludAorODMwODIgNWNlM2MwNjQ0OGE3OGVmNDZmMWVmZTI1YWEyNjkwMDc5NjFiMjc4MSByZWxlYXNlMjctbWFpbnQKKzgzMDgzIGJkYzA2OWExYTcyMWIyOGFkMjE4NDkyMzJiZDU0MjZkZGE4NzE1MDYgcmVsZWFzZTI2LW1haW50Cis4MzA4NCAxODNjNTYyNWUwMGJkZjY4ZDA0ODdmNjc2ZWI2Y2JhZDkyMDNiYTBkIHJlbGVhc2UzMS1tYWludAorODMwODUgMWNlODRjNjFmM2IxMzYwMDEzOWExMjE2YTNiZjBhOTY0NDlhMzk0MiByZWxlYXNlMjctbWFpbnQKKzgzMDg2IGUyNjdlZTk3NjBiZDE0YThiNDI3MGUxMmFmOTgyYzk0MWZhN2E2N2QgcmVsZWFzZTI2LW1haW50Cis4MzA4OCAxMDI3NGE3YmM1Mzc3NjFmZGJmODI2MzBlMWEzNjk0ODE4ODhhODY5IHB5M2sKKzgzMDg5IGU2MzgzYzgxZGE0MWNhMDU2YjVjZjYxN2QxOWVkYzliYjMzMjdlMWQgcHkzaworODMwOTAgZjUyM2IzOTg1MmU3NDYwY2Y3N2Q5NTBlNmZiNDg2ZTk3MjhkZGQ2ZCBweTNrCis4MzA5MSAwNDgzYjhlOGJjNTlmMTdjNzgxYjU0OTdiNzk5N2FmODFjM2NjNjFmIHB5M2sKKzgzMDkyIDI4NTVkNjM2MzE5MjlmZjU1NzRkYjNmMTRkOWEzYWU0OWY5ZGJmOTcgcHkzaworODMwOTMgZWM0MmI3MjgyNjRkYjZjZDRkNjgwZmYxNGEwZTcxMWQ4MmE4Y2M5YSByZWxlYXNlMzEtbWFpbnQKKzgzMDk0IDI3ODZkNjJjYzc5YzM4YTdhMDE4NDg3MTU4MmNlNTE0NDY2NzBlYTUgcHkzaworODMwOTUgNzY0ZWM5YmJmMDEzYTFmMDExMGE3M2UwMzNhN2MwZTk2MDQ4ZmE0YSBweTNrCis4MzA5NiA4NzIzYzFkZDFkMjVjMWE4NGJkOWYyZThjZDA2NjU5MTMwZTcyMzQ0IHB5M2sKKzgzMDk3IDFmOGZjYmI2Mzk2YmM2OWU2YzkyMDBiNTliZjI3MjZhZmQwYTI2YTAgcmVsZWFzZTMxLW1haW50Cis4MzA5OCA5N2I4NDFiM2IwYjQ3YmM2OTIyYzkxMGMxYzA2MzA3MTQ2ODM2OTQzIHJlbGVhc2UyNy1tYWludAorODMwOTkgMDYwZGUwNjBmMDNmZjBiNmQ5NmJlYTdhMjFkNWYyMTJlY2E4YzBhMiBweTNrCis4MzEwMCA2ODYxOWMzNzJlZjAxM2Y5ZGJlOGRhMzFkZTNhY2E0MWYxMzcyYWRjIHB5M2sKKzgzMTAxIDU4MGM3ODliNzg1ZDVkNzM5NjA5NzExYjEyZmEzNzU3YTgwMTdlMWEgcHkzaworODMxMDIgMzgzZTg0NjNmNTZjMDAwNGI1NWNhMWJiY2UxMTI2MTI5OTM0OTg2OSBweTNrCis4MzEwMyAwZjJiMGYzNzc2NDI0NmVjMTQyODIzYjY0NjJkMmYwOTg3NzZiZWNhIHB5M2sKKzgzMTA0IDIyN2RlZTI3ODYzOGE3Zjc4ZTIxNTJiYzJhNzA1YThmMDJjMzFiODAgcmVsZWFzZTMxLW1haW50Cis4MzEwNSAzMmZhY2JlZGZkMGViYzRlYTM2MjI4NWQ0NjJhYmYyY2RmMjM5NDlkIHJlbGVhc2UyNy1tYWludAorODMxMDYgNDgyNzE3OTYwMjU3YTA5MGQxMzBhYWMyOGE2YTc3NTE3NjMxYjIwZiBweTNrCis4MzEwNyBlNDM3OTUzNDI1ZDcwNTQzMjdmNzZlMjhmN2VhNDhhOGNjNTVjNzBiIHB5M2sKKzgzMTA4IGFmOTM0MTMyNGQzZDgyZTE4Mzg2YTgwZjBhZmNhNzc0NTBkM2I1OWMgcHkzaworODMxMDkgNzFmMWMwYmU4YWE3NzY1NDhlYzMzMzRmODRhYTYwMGNmM2MzM2RjOSBweTNrCis4MzExMCBkYjM3YWYwN2Q0YzI3MTIwODRhNmZhY2FlMzRlYjM0Y2RhYzc0YzFmIHJlbGVhc2UyNi1tYWludAorODMxMTEgZjk5NzAzOTFlZWFiMjhjMmE2ZjFjNGUxNGVhNzZiYzIwYzVhYTk5MCBweTNrCis4MzExMiBhZmRiNTMzMjMwNjU5YTQyN2EzNmIyZjY1YjM3YmNlM2IxZjhmMDA5IHB5M2sKKzgzMTEzIGU3NzM4ODQ1NzdhNTMzNGI3NzFhY2EyMGQ1NzE2NzA4N2U0NmVmN2QgcmVsZWFzZTMxLW1haW50Cis4MzExNCA4OTkzMWM4MzY4NTc0YThiNDY0MmUyN2ZjNjQ5NzBhOTE0YjU1Y2I2IHJlbGVhc2UyNy1tYWludAorODMxMTUgNGVkNjBjNGJjOGI2MDE2OWJiYjQzYTZlZjUyMDRkNzZlOWEzYmY1YiBweTNrCis4MzExNiA4ZmE0MjRhZWNkMGRiOGU2YWU3MTA3ZWU5YzY1YmVmZmNjNmMyZDVlIHB5M2sKKzgzMTE3IGRjMmE3YzM0NGJhYWZlYTEwYmEwZDkxMGJjZjExMTRmZTZhNjRmZmYgcmVsZWFzZTI3LW1haW50Cis4MzExOCA5MzU3ODBjNjJjNTk1NzcwMDlkYWQwMGE1YWZhMWU3OWY4YTZiNTFkIHJlbGVhc2UzMS1tYWludAorODMxMTkgZWQzMjhlNjcyYWNlMWEzZDhhNzg5OGJhMmM2MjUwYTdjOTYwOWIzNiByZWxlYXNlMjYtbWFpbnQKKzgzMTIwIDVhYTcyNjQxNGY4ZjA4ZDQ2NjA1YTVjNGNjYTA5ZjkzZTJjODdiOTUgcHkzaworODMxMjEgYjBhZjYzYWEwOWVhY2FiZTU2Njk5NGI3YzRjMzUwZGI0NGUzNzFhOSByZWxlYXNlMzEtbWFpbnQKKzgzMTIyIDgwNzJkZmQ5N2UxZGRmMzdmZDBjZGZhOTk5OTdkMzgxOGQwNzkwOGIgcmVsZWFzZTI3LW1haW50Cis4MzEyMyBjMzg2NmNkOTFhZTAwZTVkZGMyM2ZlY2E3MjgxM2ExOTAxNjUyYjE1IHJlbGVhc2UyNy1tYWludAorODMxMjQgZmY2NDQ5NjQzMTQyZTI0Y2QyZDBjNTBmMzVlNmE2MDFjMTc4Yzk0MSByZWxlYXNlMjctbWFpbnQKKzgzMTI1IDMzZTRhNDdhNmFkMTBkYjU1MzMwM2NjMmIzMzhkMTcxODQ5OGU4ODQgcHkzaworODMxMjYgZDg5NmYzZjk0YTRkZjIyODhmNTZlNjA3NTE1ZTAzM2RkMmE2OTFkNyByZWxlYXNlMjYtbWFpbnQKKzgzMTI3IDRjY2JjMjljN2YxMTMyOWE3MDk3N2RiYmQ1YWIxMzc2YjlhYzIzYjYgcHkzaworODMxMjggM2YyNDViZTU5MzM5YmZmYjFjOGQxNmMxYmM5YzRiODRmNDM2NjEwNiByZWxlYXNlMjYtbWFpbnQKKzgzMTMzIGFkNWYyNzkzZjdhZGYwOGY2NWU4ODA1MWUxYjUyYWYwOWU0Zjk0NzAgcHkzaworODMxMzQgZjgxMjYzNjdhMmRlZGRkYTI2YzM2M2U0N2ZlNTNiZWYwOWQyM2ZmYyByZWxlYXNlMzEtbWFpbnQKKzgzMTM1IDNlNjU5MjU4MWQwZjVhODIyNjQ1NjZiZjVmNWIwY2YxYmI4NzgwZTMgcmVsZWFzZTI3LW1haW50Cis4MzEzNiA1MzQzZWE3YzE5ODYzNDliOTdkNmVlN2RkNmVmMDYzODBlZGNiZDdkIHJlbGVhc2UyNi1tYWludAorODMxMzkgYTE2YjViYmRmMTliNDI4MmE0NTU0ZDM4ZDZkOGMwMzZhNDNjNTEwZCBweTNrCis4MzE0MCA5ZWNiYThhMTAxMjU1MWE2NGY5OTVlN2FlZmU1ODY4NTY0ZTBmNGRhIHB5M2sKKzgzMTQxIDJjNTZmNGFiMzZmMjZhNGIzYzg1MDQxY2M2ZjE2YTg1N2RlMmRlYTEgcHkzaworODMxNDIgMmRkMjk5ZTdhNmRiZDM3MTU5OTQwNmU5ZjRkYzQ5MDY3Y2MyZmU0NCByZWxlYXNlMjctbWFpbnQKKzgzMTQzIGVmOWIzOWRmNTkzNjgwNjJiNDc3NzFmZTNmYjAwOWQyNjMxYmZkYmYgcmVsZWFzZTMxLW1haW50Cis4MzE0NCBiMTlmOGE0OTI5ZDViM2I4YjU0OTZmZjgzODUxOWMyYWEyNDQyODZhIHJlbGVhc2UzMS1tYWludAorODMxNDUgZmRiMGNmZGNjZjg1ODI1ZjI4MGE4MzVlMzYzYzk2MDA4NDVmOGE0OSByZWxlYXNlMjctbWFpbnQKKzgzMTQ2IGQ4NmMxODU2OGU4OTc1NzRhNWExMmZlMGIyODBmNjFkNmVkYzUzMTIgcmVsZWFzZTMxLW1haW50Cis4MzE0NyBkMzNlYmIzZWYwYjEwN2Q4NzVhMjk3NjgzM2U0YTFhYmIyOGFjOGFmIHJlbGVhc2UyNi1tYWludAorODMxNDggOTA0YjNhMTYxNmYzN2MzODI1OWQ4Mzg4M2YzMDU3ZGNlYTAyYzk2MyByZWxlYXNlMzEtbWFpbnQKKzgzMTQ5IDllMzAzZDY3MTVjZTg5YWE2NmM1MzkwNzlkYWNiNzk4Mjk5YjIzODQgcHkzaworODMxNTAgOWVjYmRlZmM5ODQ5YWI5MDlhMDNiYzYyYmU5ZGU1ZWZiNGJiNjM5ZSBweTNrCis4MzE1MSA1MTNlNDk4YjIyM2MyYTZkMDcxYmUyOWE3OTNmMzZhZWUyMjEyZWMwIHB5M2sKKzgzMTUyIDEwY2UwNDE0MDA5Njg4NGMyNTFhMjQxMjBiYTUyYTNmZDJhNTRmZTYgcHkzaworODMxNTMgZmU4YTJjZTkxNGVhOGNkYWFjMjdhNThlOWVkYzk5YjAzZWFlMzZmYyByZWxlYXNlMjctbWFpbnQKKzgzMTU0IGZkYjcxZDZjMTgyMjRmODEwZTJjOGZiYzRjODdjZjNhZmI2MTFlNjMgcHkzaworODMxNTUgZWVjYzAxOGFhYzNlZGRkN2JmYzgwOTU3MmY0ZTU4OGVlZDdiZGY0ZSByZWxlYXNlMjctbWFpbnQKKzgzMTU2IDU1ZjQ1ZTkwNjc0ZDZjMDU1ZWFjZmZkOGI3NDRiODE2MmYyZmJhMWUgcHkzaworODMxNTcgZjZiOTI4MDhiOWIzNDM1NmU0MzIzYWRjODA1MGE1ZGQ4ZTZhYzc1OSBweTNrCis4MzE1OCA3NGIxNmY0MzllMDdiYTA0MWFlZWI0M2I4ZGEwMjAxNzUzMjAwNWRjIHJlbGVhc2UyNy1tYWludAorODMxNTkgNGQzZGUxNmQwMmNjMjg4ZWY4Y2JkOGY0ZGY5NGRkZTM5YmZhOWE4YSByZWxlYXNlMzEtbWFpbnQKKzgzMTYwIGMzYmUyMGMzOTBhMjcwOThiMDJiZTM4Y2IxOTM0MTRkNDlhOGUyNmYgcHkzaworODMxNjEgMmNlZDFjY2QzNWVhNDBlYzk4YTE1NTZlNGVlZjAyMTUxYTcxMTVkYyBweTNrCis4MzE2MiA2YTk5ZDkxYmUwZjhiY2I4OTgyYjE5ZGYxYjU1M2M4NjcyNTdiMzE2IHB5M2sKKzgzMTYzIDdhNDFlMGM0ODg1NTBjMzAzZmY2NTQwZTE4Yzg0MDAwYjhlMjc2MGYgcHkzaworODMxNjQgY2NiMjE5OWMxNmJhMGVlMjEzNGJkYWUwOWI3NjY0ZTNiN2MyYTRiMSByZWxlYXNlMjctbWFpbnQKKzgzMTY2IGY5YTAwN2FmZDQwZjM3MmY4ZGVhYWRlYjUyOGMyYzk1MmNmMzgzMWYgcHkzaworODMxNjggMzVjMTQ1NjIzNDgwMmUxMTgxZWM4NGE0NzM0MGY4YzViNWQyN2FjNiBweTNrCis4MzE2OSAzZTliOTJjZmNhY2M1MWY3YjQ0NGEyOTVlNDg0NjY1MGIyNTQ2MDJiIHB5M2sKKzgzMTcwIDA5NzA1NzcwMDllMDU3MTdkMGM1YzAzNmI3OGU4YzdiMDEzYzViZTcgcHkzaworODMxNzEgYWRlZmQ1YzAyMzVkZmIzNDE4Mjk4N2VhMmU5MmZiNGY2YzU1MTczYiBweTNrCis4MzE3MyBiYzAzNDc2Y2U5MDE5YjAzYTI1NzM0NWI1N2I0ZTZhZmYzNGYwNjdhIHB5M2sKKzgzMTc0IDBiODQwOTRiMTUxNThjZTY0M2FkNDM5MDZiZGQzNDNiYTk4ZTk0NjQgcmVsZWFzZTI3LW1haW50Cis4MzE3NSAzMzU1MzU2ZjFjNzRkNDQ4YmE1ZTUwMzYyNmFlMjk2Y2RkYjRhMjFjIHJlbGVhc2UyNy1tYWludAorODMxNzYgNTUyMjQzMzE1MGUxZDk4Y2IxNWUwYTlhZDk5NzcyMjMwNWM1ZjJmZiByZWxlYXNlMjctbWFpbnQKKzgzMTc3IGY5Yjg2MGVmMjRiYWQ5MjEyOTg2NTA0MWExODBjZjM2MWJjZTE2NjUgcHkzaworODMxNzggZTFjM2FkZmE1NzQ0ZGY3MzJkYmY1MTQ0NTJkYmNmYjliOTNlMmJmYSByZWxlYXNlMzEtbWFpbnQKKzgzMTc5IGRmZTAwOTVmY2FiMGY2ZjVjOGNjN2NkNzQ3MWE3MjVkMTk3N2E5NmYgcmVsZWFzZTI3LW1haW50Cis4MzE4MSAyZGY3MzM5NTFiYWI0N2MzNTc3MDE1MDEyZjcyMGMxZmMxNTVjNzcxIHB5M2sKKzgzMTgyIGYyMTRhZDA5YzM4NDJkMTA1NDQ2MDI2MTliZGJlODkzYjVhOGI3NzIgcHkzaworODMxODMgZTJkNjJiNWE4NzMwMTFlNmQ5ZTZmYTFmZjdmYjA5ZDIzYWE0ZTUwMCBweTNrCis4MzE4NCBlOTE4YWZkMzUwODY4ODQyZDk1ZGEwMjlkMGI4NzI0MzNlOWFiZDY3IHB5M2sKKzgzMTg1IGZkOWI0MjFjZGJhZjU1YzU0YzdhMTU0YzdkMGY5MThmOTdmNjk4MTEgcmVsZWFzZTMxLW1haW50Cis4MzE4NiA1YjViY2Y0YjlmYjAyMWE2ZTAxMjFkZTQ3YjM4NTVmZjA4NDQzNWRhIHB5M2sKKzgzMTg3IGMzZjU4MzNkYjg0MzFjZGVlM2E1YjEyNDM3ZTY5ZTRjOTdjNWJmYmEgcmVsZWFzZTI3LW1haW50Cis4MzE4OCA2ODVkMzkxOGYyYTVlMWJjOTQ0MTdiZmI1OTk3YmI1ZDI2ZjNiZjVkIHB5M2sKKzgzMTg5IGI1ZjNmNzQyMzMxODY3MTk0ZDAwOGJkMDRiNTFkM2NjMTllZDkyOTkgcmVsZWFzZTMxLW1haW50Cis4MzE5MCAxY2Q0NTRkYTQ5MjhiM2VjYTY1MjRmZjc1M2FhMTc0MjljNGQ4MmFlIHJlbGVhc2UyNy1tYWludAorODMxOTEgODAzMjUwZjVjNGMyNjhmNDQzYmUyN2FjZjM0NWE1MjIxZThhYzQ3ZSBweTNrCis4MzE5MiAxNmY1Y2ZiMTZjNmFjYzI5NmM0YWUyNDc1NTBlYTM1N2MzODE2YWU2IHJlbGVhc2UyNy1tYWludAorODMxOTMgNDNkYzEyOTg5MmFkZGJhMGFlMDE4YzcyYmQ3MWQ5ZjRlOGJiYWE5MyByZWxlYXNlMzEtbWFpbnQKKzgzMTk0IGU0YWIwZmJiYmM5NDYwZWNiMDcwZDViM2Y3NjlhNzdhYzNjMjlmMTcgcmVsZWFzZTI2LW1haW50Cis4MzE5NSA0YTdiMzk1ZWRiNjlkNzZkZGMxMjc4Y2YxODNkYjI5YzI5YTljZGRhIHB5M2sKKzgzMTk2IDVlZGNlMTRiNjI4NzczMjZmMDBhZmRmY2E0MzRiZDI0OTUxY2FhZmYgcHkzaworODMxOTcgYWM3ZWI2ZWFlZjY4ODc3Y2Y4MjBhZWZlYWY1ODM2ZTgxM2MyM2MxNiBweTNrCis4MzE5OCA3NGZkN2U4MGIxYmU0MjM2ODhhNWU2NjRlM2EzMDhiZDFkZWYwNDg4IHJlbGVhc2UyNy1tYWludAorODMxOTkgNWQ0NWM2NTEzNDhiZTNiOGYyZjU5YmY2MjE4YTZmNTYyYmM0YzQ4ZiByZWxlYXNlMjYtbWFpbnQKKzgzMjAwIDMxNWMyYjUyNGM1OWU5NTk2MTE0YzQ1ZDJmZjA3ZjY4YjY4OWEyZWUgcmVsZWFzZTI2LW1haW50Cis4MzIwMSAzMDY4MzNlZjExOWQxY2I1ZTljYWI1MTVhOTAxODk1OWRlY2Q2MGI4IHB5M2sKKzgzMjAyIGJiOWVlZjhkMWFjNmE0ZmM1OGQzZjVhZDk0ODVlZTJhNmUyMmRkZTggcHkzaworODMyMDQgOGU4Y2IxNjhhMDg5Zjc0NmFhMTcwMDA0ZDRiM2Y5NGRkYjY4ZmNmMCByZWxlYXNlMjctbWFpbnQKKzgzMjA1IGUwYmNiOTcwMzQ0MmRhZDg4NGU0M2Q5NzFlNWMzMzc4ODRlYjVhOTAgcmVsZWFzZTI3LW1haW50Cis4MzIwNiA2ZDMxYjYwMzcyYzQ4MzdjZmYxYzZkMjI2MTQxNjY4ZjJkOTI4NmRmIHJlbGVhc2UyNy1tYWludAorODMyMDcgMTc0M2RmZWViOWIwM2Q2YjdiNTk4NGEzYTA0OTdkMTE5NGU5ZTJhZCByZWxlYXNlMjctbWFpbnQKKzgzMjA4IGVhM2I1MzUxMzZlN2Y4NTMyOWU0Y2ZkZTUxMzg3NTQ4YmEwMTg0OTAgcmVsZWFzZTI3LW1haW50Cis4MzIwOSA5YmNiYzM0Mzc3OGYzY2RiYjkyODBkMmJkMGViOGEzMjRlM2MyZmU1IHB5M2sKKzgzMjEwIDMxMTljNGQ3Mjc2YjE1ZWRkNjE4OTlmOGQ4ZWFhMjEwMjIzYTMzODUgcmVsZWFzZTMxLW1haW50Cis4MzIxMSAwYmI0N2M1MWU5MzNmODY4ZWUzYjRhZjgwNjYzYWI5N2Q1NGY0MDczIHJlbGVhc2UyNy1tYWludAorODMyMTIgYWExOWE3Y2MxYmYzNTJiYmRlODYzZjlhZTFiYzZhYTQ2MDU3ODZiZCBweTNrCis4MzIxMyA3OWUzNzY4MjRiMzg4YTc2YjJkNzJkMzQ2MWI1MTE0OWE2NTNkOGFmIHB5M2sKKzgzMjE0IDAxMzJlNGVlOWU3ZjI0MWMwMzBjNTY1YmFhNGU2OWJhNTk5NjM0ZjIgcHkzaworODMyMTUgZDU1ZDIxYzM5NmM1Y2QyMTliYzIzMjQ1OWQ3ZTFmYzViMzA1MGZkNyBweTNrCis4MzIxNiBiZTZkMDE0ZGY5NTYwYTlkZTVkZTc0ZDllYjRhZDc2Y2E1MzhkZjdkIHB5M2sKKzgzMjE3IDUxNDY2ZDY3NzIyZTA2MTAxMWJkMTI2MmIxNGRhZGQxMjg1YjkzMDIgcHkzaworODMyMTggM2Q5OTY5NjY4OWY5YjJhZDkxYmViMmQwNDUyYmQ2NzFhZDZjZDBlMCBweTNrCis4MzIxOSBlMmUzMmE4Njk4MTBkZjhmN2MxYWYxNTZlOTBjZTgwZWQ2ZTI2ODU2IHB5M2sKKzgzMjIwIGU1YTJmNTBmZWU2NGUxMjMzYTcyOGRlNjU3YWRkY2ZhODg0MzdmM2EgcHkzaworODMyMjEgMDcxNjA5MDYwZjA1NWFmOTM2MWE1ZWEzNzIxN2FmM2Q2YmFlZGQ1MiByZWxlYXNlMjctbWFpbnQKKzgzMjIyIDUyYmMxOTQwNWMwZjMzMjNhM2Q1YjUyMDBiOTJlMGYwMzM0ZmMyMzcgcHkzaworODMyMjMgMDU0ZjMyNzllM2NjZTk1NjBiMzk1NjQ1MWUwMmFhNWIzMjg4MzM2OCBweTNrCis4MzIyNCBlZTM3YmNiOGYwM2U3MjJlZWY5ZjdlZTg5ODQ3ZDQ0YzQxNzUwYzFkIHB5M2sKKzgzMjI1IDA1NjQzNjA2NTI5MGY3MmI1ZGY3ZDMwYjcwZjNmN2UwZmNhMDJiYmYgcmVsZWFzZTMxLW1haW50Cis4MzIyNiBhMjc0NjhhZjVlYzJkYjViYTY0MzRkOWM3NWY0NmI1NTU3NGIwYjQ3IHB5M2sKKzgzMjI3IDA1NDBlNjdkNzkyNDFmNzkyNTlmY2RhMTNkODhlNGUyZjQ5OWUwM2QgcHkzaworODMyMjkgZjZkM2JmNGZhYTlhN2I1ODU3ZDgzZDNiMTVmMGVlZGUyMWE0MDcwZSBweTNrCis4MzIzMCBmMjBmZjk5YTI0Mjc1ZjJkZmQzMDI1YTFkMjM5NWUyMTllYmZmNWViIHB5M2sKKzgzMjMxIDgzNDcxNWZhZjE2NWE1MDBiZTk2MWU0YzIwM2FjNGRjZjk5ZjYxMTUgcHkzaworODMyMzIgYzU1ZmFmNDc0NTllMmViNzczZTc0Y2YzYjNiZmYwYzQ5OGY2MzQ5NiBweTNrCis4MzIzNCAxMjUwYjA2OGYzMTcwMWQ5YWFjYTJjN2YzZWNhOGE2ZTI2MzE2NjNiIHB5M2sKKzgzMjM1IDk0YjM5MDNkZTEwNzZiMmIzMjU2NzVmNTk5ZDUxODZlMmU0MzdiNDggcHkzaworODMyMzYgOTFjYmI1NWUyMGJlNTRmYTI1OWJkZGRiY2Y5NDRkN2NjZTY0ODQwYyBweTNrCis4MzIzNyAxNjE4OWI3ZGEzYjYyZjQ2ZjdlNmI2YTZmNTI4ZmZkYTNmNGUyMDAyIHB5M2sKKzgzMjM4IGY0MzViN2I5ODY5MDk3YzdkZDM2N2JmMDA2ZjBlMjIzZWQyYjRjYmMgcHkzaworODMyMzkgMjlhYjUzNmNmZWY2N2YyOWQ2OGExNWQxMTdkY2Y3ZTBkYzc0MWRmZSBweTNrCis4MzI0MCA5MDIxMzFiMzE5MjI3ZDgxOGE3ZTI4NGUxNzE0NTVlOTUxNjc0MDRjIHJlbGVhc2UzMS1tYWludAorODMyNDEgYjc1Y2EyNWExNDBiYWNjN2VmYmU0YjNjOWViMTA2YTM1MGQ3OWRlMiByZWxlYXNlMjctbWFpbnQKKzgzMjQyIDg5ZDc4YjY2N2QwN2JlNTQxMjA1NmIyYTA0NjYwYTRkYWQxOWM0NjYgcmVsZWFzZTI2LW1haW50Cis4MzI0MyA0YWUwZTEzZTk0NjYzZWI3MjNlZGVmZWY4MTVkZWE5MzlkYTE0NWFlIGltcG9ydF91bmljb2RlCis4MzI0NCA5NzA3Yzg1NTE0OGY2OGU0ZGRlMTI2YmMyMTU2MTM4MjI0OGEyYTU2IGltcG9ydF91bmljb2RlCis4MzI0NSA4YTc5Y2FhNGY0NzMyNzFkZWQ3YmQwMmNiN2RhMWQ3YWRjZDcwMDVkIGltcG9ydF91bmljb2RlCis4MzI0NiAyN2M2YTk0ODg5NDhmZGQ1Nzc3YzM2NmYyM2EwZGRmYWRmZjI5MmM0IGltcG9ydF91bmljb2RlCis4MzI0NyBhMTVlMTBkMWNkYzBkZmY3OGUwODc0NzU1NzNmN2Q0NzU5ZTc3ZmU3IGltcG9ydF91bmljb2RlCis4MzI0OCA5YTc0Yzc1ZGQ4MjUyNWZiMWE0M2ZmZTA1ZDBhYzNjNjQ0Y2M2M2E5IGltcG9ydF91bmljb2RlCis4MzI0OSBlZDA5MDExNmI3MzRmN2MzN2UyMDZiOWFjODU2ZGVhZjYyNjg3MTljIGltcG9ydF91bmljb2RlCis4MzI1MCA2MjE5OTU5MTA5MzkyZTBlNTk1MzEzZmYwMmUyMTBiM2QwMDE4ZTNmIGltcG9ydF91bmljb2RlCis4MzI1MSAwOTgzNTZmNWM4NDYxZDM0ZGJlMTdhOTQxYTJjNzE0YjAyZWJlZjU4IHJlbGVhc2UyNy1tYWludAorODMyNTIgMzI2YjE1ZDhjMzQxMzY1ODc1Mzk0YTk3ZWQ4Yzk2MTY4NTIwODBiNiBpbXBvcnRfdW5pY29kZQorODMyNTMgZGUzZmZmNDI3MmM4NGI4ZjQwMjRjYWM1ZjllNzMzOTlkNWQ5ZDEzOCBpbXBvcnRfdW5pY29kZQorODMyNTQgODA3YmVlZmFkNTFjNGJlNTY3ZDNhY2ZlYmQ0YzUzZWU3YzU4ZTlhNyBpbXBvcnRfdW5pY29kZQorODMyNTUgMDYzMzgxNTdiNGY3MDgzZTBiOGRkMzc0NzA1NjRkYjRmYjQxZTMzYyBpbXBvcnRfdW5pY29kZQorODMyNTYgMDRlNDkyNWU1YThjZDZjYTkxMGQzMWE4MjI4NDBkNTZlY2ZlZTY1YiBpbXBvcnRfdW5pY29kZQorODMyNTcgZGM1ZGEwMjEzNmU5ODk4MmMwMmM4ZTUwYjU2NmM1ZDM2Nzc2YThmMSBpbXBvcnRfdW5pY29kZQorODMyNTggYTRlMGI3YWY0YmE0NGIwMjA1N2VkODQxMDMwMDZkYWFhYzU3ZWZhMiBpbXBvcnRfdW5pY29kZQorODMyNTkgYTk2NmMzZDQzYTdlYWE2MTEyNDBlOWY4YzUxNmM4MTZiNTJmNDJkZiBweTNrCis4MzI2MCBjYjE4YmM4ZGQ0NjkzYTg0Y2ZmNGRhOWU3ZmM4YjgxMzM2ZmM3NWViIHB5M2sKKzgzMjYxIDBhMTc0OGUxM2RlOTZkYzU1N2M1ZWFkYzAxNzMyODQ0M2UxYzM1OTkgcHkzaworODMyNjIgMGY2YTFlNDc2ZDMxMGNhZWYwNDMwMjVhMzQ4ZTZlZjg4NzNlMmEzNyBweTNrCis4MzI2MyA0ODU1N2RiMGVlZWExOGY4OTI1MzcxZDVhNDU0NTIwNzQ2YjMxNTVmIHB5M2sKKzgzMjY0IDI0OTc1YWFkNDI2ODA5YThiMDRjMmM3N2VjZWM1MjIwZDRlNmFiZjkgcHkzaworODMyNjUgNzExMWI3OTdlYzExNWZjMzRhNGNmYmU5ZDVkZGY4MjQxNTBiOTRiZiBweTNrCis4MzI2NiBjNWJmZTE4NjBhNWQ4MGUwZGVkZjdmMjNjMzdiNzg3OTAyNzllNTk4IHB5M2sKKzgzMjY3IDI5NDEyM2FlZDQ2YjY1MTBkZTNlNjg5N2Y1MWM3ZWUzNGEzNmQxZmUgcmVsZWFzZTI3LW1haW50Cis4MzI2OCA5NzA0YjlkODEwZTViNzFlYjc1OTQ2OGNlOGE4OTYxY2U0NDMzOGZjIHB5M2sKKzgzMjY5IDg0MDYzM2QzNzJiY2RhZWFlYjJkODJhMGNlNDgwOTU0YWU5YTczMmMgcHkzaworODMyNzAgZWZkOTdhMDM5Mzc0OWE1ZjVlODg2YzVlN2RkNWJhNzM1ZTIyYzM4NiBweTNrCis4MzI3MSAwMzc2ZTY0MzVmNTdjMTJkNDVlMTY4MDUzYmI2MTEyZGZjMzE0OGJkIHB5M2sKKzgzMjcyIDFjNWY2MGYzODFiMjY0YWNkNmY3MTQ0ZjA3NzYzNjg3Y2Q1MzFiMDQgcHkzaworODMyNzQgYWQ5OGI1MjViNTg3YzY2YWQ2YWZiZTYyMjEyNmNiNDZkYWMyMDhlZCBweTNrCis4MzI3NSA0MGQ2YTdjMTU4MzZhMmYxNjc0MmEwZTRmNWI2NWU5YTJjMmU2ODc0IHB5M2sKKzgzMjc2IGExZTJhZjY1MzdkZmZmMjI0MWQwNDM0YzZhNjQ2NTNiYWRkZmUwN2UgcmVsZWFzZTI3LW1haW50Cis4MzI3NyA0MzgwZmIyMjZiMTEyNzA1YmY1ZWQ1M2QzMTZjZjcyOGFlMDc3NDA5IHB5M2sKKzgzMjc4IDU3OWIzMzlhYjE1ZjU2NmJiNWU0NGZmYmEwMGQ1MTg5OTNmNjlmOWUgcmVsZWFzZTMxLW1haW50Cis4MzI3OSAyOThjOTY5ZjU2NWI5NjViZjdjMWJiMWQ5YWIwNzM2Njg1YWNjNjY3IHJlbGVhc2UyNy1tYWludAorODMyODEgYTdjYzA4YjRiYTI2OWQ5YTc0YThhNDhiYTFjYjdkZGMyODMwMTk3MCBweTNrCis4MzI4MiBhYmJiNDlhZDFmYzMzMzA2OWUyNDI1NThlZTJhYmFkYjBkYzgyZDMxIHJlbGVhc2UyNy1tYWludAorODMyODMgMzgxMTgwYThmNDQ3MTJiYzEzNDQwNWQ2MWVkMjQxZGIwYmY3NjY5NyBweTNrCis4MzI4NCA5MzRiMDkwZGZlYzgwZWQ0YjdjZTRiNmIwYTcxNzRmOGZhZmNjMWE0IHB5M2sKKzgzMjg1IGZlNGJiN2NiMWZlODdiMmMxMDJmZmYxYjI3ZGZlY2I1MjAyN2EzNTAgcHkzaworODMyODYgMmM5YThlNjExMmIzOTkyMDExNjg1NDFiY2VlYTU1ZGE1ZTU3NmJhYiBweTNrCis4MzI4NyA0NmQyZWM3OGVmNzk1NzZjYTViOWM2MzU3NGM4MTNiNTU5MjkwODY0IHB5M2sKKzgzMjg4IGJjZjkzZTM3NjZlOGU0MDNiZTMwYTE4NzU3NTA3ZDk1YmY5OTk3MmIgcHkzaworODMyODkgNzhhM2RiMmY3ZTBmMTcxMGVlOTFiOTJiYmE2MmE1YzFjZmFiMDU2NSBweTNrCis4MzI5MCAyMGNjOTMxNzk2OTU4NmQ5ZmRiZDAxMDQ4NmZkNWFjNDY5M2ZhYjA1IGltcG9ydF91bmljb2RlCis4MzI5MSBjM2I2NzNiOTQ2MTIzZjkzNTMyYTAyYjk1NDAwN2MxODMzOWFkOTFhIHB5M2sKKzgzMjkyIGI4MDNjYzJkNmE1Y2JmNzdkMWE0YWM3YzA3ZDcwYmIyMjRmNDk2NTQgcHkzaworODMyOTMgNjcwZDRjYmYxNDY0NTIyYWI1NDA2ZWZjMTYxMDcwM2Q3MDA3YzllMiBweTNrCis4MzI5NCA3ODcxYWFmMTExYTI1ZDI5OTAxNjk0YzFiODViN2VkM2YyNjE3Y2NmIHB5M2sKKzgzMjk1IDEwMDJjM2RjOTBkMWE1YTdiMjkyMDc2NWQ0N2FmMjYyOGQxZTNlMmIgaW1wb3J0X3VuaWNvZGUKKzgzMjk2IDQ2NzAxOTU4OGZjYzdiMjM2ZGQzZWZmOTZkZDc5MjlkYjEyNjJhNzYgcHkzaworODMyOTcgMDhiOTQzYTFhOTM0NGQzYzgwYzA2MjQzNDAzMGI1ZjNlZGU4OWQzZCBpbXBvcnRfdW5pY29kZQorODMyOTggYzdkYzVjN2I3YWYxOTVmNzRjNjY2YTYwNjA0MDcyNDRhOWVhNWI3YyBpbXBvcnRfdW5pY29kZQorODMyOTkgM2U3NDg3M2YyMWVhNTlhM2JlMjM3NDkyZTI1NzFhYWNjMDM5NGJjZiBpbXBvcnRfdW5pY29kZQorODMzMDAgOGNmNmQyNjQ0OTc1N2YyNGU3OWRhNWJiNGRjZjAyNDliMGM2MmRmMCBpbXBvcnRfdW5pY29kZQorODMzMDEgNjVlZTBiYzk3NDc1ZjEzMmQ1ZjY3MWE2ZTQwOTQ1ZTA5YTQ3OTlhNiBpbXBvcnRfdW5pY29kZQorODMzMDIgZDZlYmVkY2Q2ZWM0ZThlNTQ4NWYwMWRhNjZiOGQ3NTA3ODAzMzdkZCBpbXBvcnRfdW5pY29kZQorODMzMDMgNTEwNWMxMmMzMWIyN2Q5YjI4NzkyMjg0OTJkNTQ1NjJmNDFlZmM3MyBpbXBvcnRfdW5pY29kZQorODMzMDQgODgyZmQ4NTVmMTAyYjQzOTJlZjEzZDlmNDBmNjg4MzE5NTA0ZTVhMCBpbXBvcnRfdW5pY29kZQorODMzMDUgODhhZGI2NGE3YWZkOWJlN2JlMmM2YzEyNzQ0ZTAxMjUwMjAxNzRjOSBpbXBvcnRfdW5pY29kZQorODMzMDYgMDA0OTYxODAxZDE4NjU2MjY2YWM1YzU3YmUyMzA3MzE0NjU5YjFjYiByZWxlYXNlMjctbWFpbnQKKzgzMzA3IDg0NWNlZjJlYjFkN2M3ZTczMWM2NTJiNTE5MWY5ZGQyODFkYTE3ZTcgcHkzaworODMzMDggN2M0YTc3NjA0MDI3NzMyZjYwMDQ3NmY4MzVmNGUyYWI2NzE1NDg0YyBweTNrCis4MzMxMiA2NjFlNGJmODVjNTg4NWQyZGMwMjBiNmEwOGFiNzRjN2YyNWIzMTFjIHJlbGVhc2UzMS1tYWludAorODMzMTMgYzJlYTA1MTYxYzkzMDk3YzQyMGY0ZDVkMDhiMjg0YTRiY2MyZDNkMSBweTNrCis4MzMxNCA1ODk0NTkwZTljOGQ1ZmFiYmJiNzBiMmEwNjY0OTI3YTMyNTRkOGM5IHJlbGVhc2UyNi1tYWludAorODMzMTUgYzNiMTM2MjY2NTM4OGFjOWUwMDhkOWRkMzI2Mjg3MGRkOTg1MmJkNiBweTNrCis4MzMxNiAzMmQ5NGYzMTZkYTk4NDdmZmUyNmI0Y2IyMjc0M2NjMjUzZjIzYzQ1IHB5M2sKKzgzMzE3IDdhYTk3NTc3NzIwMjNkYjE0NDY0M2NkZGQ0ODZmYmJiNDU1MDNlMTMgcHkzaworODMzMTggNmIyM2FhMzAwMDMyMWQ3OWNkMTk5YWQ2ZTdjMThhNzllNGI3MDM2YSBweTNrCis4MzMxOSBlMTdiMTYwMGY0NDA2YjZlZTE5ZjAyZWNkY2MwOGY0YWI4OGEyNzZkIHB5M2sKKzgzMzIwIDU1MGIzOGNhZjVjMWZjN2JmYWEwMDAxYmU2NzQ4ZDM5YTRkODkwNDAgcHkzaworODMzMjEgOGI0MjY5M2U5NWI4YzM3ODNiNTI5YWJiOThiM2M1ZjFjODc3ZDFkOSBweTNrCis4MzMyMiBmNTc0YTA3MTg4NmRkN2M0YWM0ZWI4NGQ2ZjJlM2ViNGFiZTk3ZDIwIHB5M2sKKzgzMzIzIDc5MDM1M2JlY2Y4Y2VjYjljNTUxMmI0ZTZhMTI3MGY4NzNjNjc1ODIgcHkzaworODMzMjQgNTdlYTAwNTE2ZWRlYTk1NjE5MzE0OTRhOWIyMDQyNDBmNWYyZjMxNyBweTNrCis4MzMyNSA2ZjhkZWZkMDE3ZDczNmU3MDUzMmExZTA1ZTViMWI5ZWEwYTU0ZDM5IHB5M2sKKzgzMzI2IDZlMTNlYWQzODk1NjA0ODgxMTJlNmNiMWFhM2RlMDVhMzgwMmNjZjAgcHkzaworODMzMjcgYTQ1YjM4ZGNkZjE2Y2EwMDY3ZGFmMjk2ODgyZmQyMmZhZDFjMmExNiBweTNrCis4MzMyOCA3NDU1MWMwYjUxM2I2Yzk4MzIwOGJiYmJhZWMzYTI5MTFhNmJhYmRkIHB5M2sKKzgzMzI5IGZiNmExMzgwN2FjOTVhZTMxYWI1NTk5MGU1ZTA1MTkzZWRlYzVkMmUgcHkzaworODMzMzAgZmM4MTVmM2IyNzgxMjc0YzhmOGY5YWYxNTRhOTE0Yjg5ZTg5OTYxNiByZWxlYXNlMzEtbWFpbnQKKzgzMzMyIDFiNTBlNjI3YzYzYWNlNWYwMjM4OGRhMDI5YjEwNDZkNzZjYTQ4NjAgaW1wb3J0X3VuaWNvZGUKKzgzMzMzIDE5ZmYzNjAzMjdlNzgzODIxYWJlYTFmOTY4YWRlMDEyYmE2M2VhZDUgaW1wb3J0X3VuaWNvZGUKKzgzMzM1IDA0M2NhYWM2Yzg3NTkzMTNhOGJmMzc0ZDI2ZmIyODQyMGY3Nzg2ZWIgcHkzaworODMzMzYgMjllNjBjZTYzYWU1YmUwNmUxZTdlM2E4NjBkODEzOWM5NGFhY2ExNiBweTNrCis4MzMzNyBlNDg2ZDE5ZjJiMGI4MWMzYjkwNjI5ZGU0NTQ5OTk4ZTQ3NTQzNTFhIHB5M2sKKzgzMzM4IDhhODAxYTNhY2EzNDk5YTFhYTBjMjQxMjg0MTlkOTMwYWRjOGU5YjIgcHkzaworODMzMzkgNDNkMTRiYmQ2ZWIxMTc4NDJiN2JmMWY2NzNiNzRjZGNkOWYyYzI5OSBweTNrCis4MzM0MCBkZWQ1OGU0NDlkYTMzMmU2ZjU2MWYzYWI0NmNlMGQyMWJhM2ZkYWM0IGltcG9ydF91bmljb2RlCis4MzM0MSAxMjVmNTRhNzBhYjhmYmU4ZmZmNTI4OWI3YTc1YTI1NjA3ZDE5MjM5IHB5M2sKKzgzMzQyIDU5NDdiMWJiMGZlY2RjMTdlNTEzZmM3ZDRlOGQzYzI3NjI5NTVkYjcgcHkzaworODMzNDMgYjM3Yjc4MzQ3NTc0OTJkMDA5Yjk5Y2YwY2E0ZDQyZDIxNTNkN2ZhYyBweTNrCis4MzM0NSBmY2U3OGEyMDhkYjI3MGIwM2NjODk1NTQ4NTk4MzE3NjJmZWY0OTYzIHB5M2sKKzgzMzQ4IDA5Y2E0NjQ5MDcwN2VmOWRlNDNlNWNkNTA5ZDNkZTk0ZDdmYmE5NGMgcHkzaworODMzNDkgYTZiNzE4ZTgxNDQ4MGNmYzZiMzFlM2FkMjNmMGI2ODRkZWExZWEzOCBweTNrCis4MzM1MCBjNTU4NzZhNmZhM2NjMDAwYTkzYWVmZWRkYjZlMzZmNWMwMjcwNDk4IHB5M2sKKzgzMzUxIGIxMmRkYTYyZTkzYmI5NGFjMGEzZTA4MGM0NGI0NjM4YjVlZDg5ZmMgcHkzaworODMzNTIgZTAxZDI2YTM0Njg5OWM4YWM1NzllNDkwOTlkN2FiMmJlOWJkNzFiZSBweTNrCis4MzM1MyA0ZGEzYzU3MDM0M2JiMTFlMDliNTE2YTNhYjEzNGZhODAwZjA3OGFjIHB5M2sKKzgzMzU0IDI1ZjZkNTcwZTdjMTYxMjYxM2Y3ZjIxODA2MzQ0YTQxM2IyMzFhMDkgcmVsZWFzZTI3LW1haW50Cis4MzM1NSBiZTYxYzgwOGI1Mjg5NmYyZTJhYmY4NWFjYjk3ZmRmMmE2Mjk1MDFkIHB5M2sKKzgzMzU2IGUyNTBlODg1MjRkNWIwOWIyZGNiZTIwMjFjMzM1NzkyZTdiNjNhMjEgcHkzaworODMzNTcgOGJkYmQzMmMyZWJiZGQ2YTAyYmJjZDFlMjM3ZmEwMjY3ZDMyZDJjZSBweTNrCis4MzM1OCBmOWNjMDlkYWNlZGFkZDRjNTJiOTFkYTI2MGYzMGU3MmZmYjNhMmY5IHB5M2sKKzgzMzU5IGFiODlkMGY1MmE3ZjMwYjdiNjA5ZTc0Zjk2MDc4NDk2N2ZhN2Q2ZTYgcHkzaworODMzNjAgOWViNGJhNDVhNmIyODZiNmM1NjEyYzUyZTU0YTEwMjA5NjQxNTYyMiBweTNrCis4MzM2MSBlMjM3YjE1YzJiZTk5NDI0MzYyYzVhOTQ1MTU3MzA3ODU5OGVkODk4IHB5M2sKKzgzMzYyIDZlYzY2ODYyMmQ2NGQ5Y2EzMDNmZTA1NWRhOTJjOGUzODIzOTFlZmMgcHkzaworODMzNjMgNmVlZWQzNTI2NjM0Mjc0NzgwNTJhNzE0ZTMzMTg3YTI3YTQ3YmQ0YSBpbXBvcnRfdW5pY29kZQorODMzNjQgYjI0ODQxYzMwOWJlNTQ2ODE1MTFjYTQ3MzBjNDk5NjY5NjFiOGM3YiBpbXBvcnRfdW5pY29kZQorODMzNjUgMThiMjczNGY3ZjM4Y2M1ZWViMjk2ZTA3MGQ0OTlhZTMwYjRlYTk5MSByZWxlYXNlMjctbWFpbnQKKzgzMzY2IDI2M2ZhZGEyNTY1ZGEyMzNjMjFkNjRkNWM4NWM3ZDQ3YTg4YmE2MGUgcHkzaworODMzNjcgMjY1NjVlYmQ1ZTMyZWU3ZDQxNjU1OTBhMjEwMmZlMmYzMTc0MzliOCBpbXBvcnRfdW5pY29kZQorODMzNjggNmY1YmE3MTMxNmU3MTYxYjc3ZmZmZWZjMzk3YmNlMzFhNzFhMjc1NiBweTNrCis4MzM2OSBhZjY5MmVlOTBmNjgzODA1NmU4ZmY5YzkyZWIxNDczOWIxYjhhMzUyIHB5M2sKKzgzMzcwIDI4ZjM3YTJiNDQ0YmYzNTRjN2FlNzRjNzI5ZjBlMDQxNzIxYWJkY2EgcHkzaworODMzNzEgZTJhOWY2MzNkNjEyNmZhZmZjNzQyMjlmNWM1MzEzZjA0ZGY3N2ZiNSBweTNrCis4MzM3MiAxY2U5ZDRmYjEzYzI2NTIwMjA5YmE3YWI3MzkzZjQ5Y2QzNjg2MzM3IHB5M2sKKzgzMzczIDY1YWY3YmU2MTRhNDgxOGM4ZjQ0YTMzYThiMzkyYzQ5NzJiMTI3N2IgcHkzaworODMzNzQgNWIyNGQxZTE4MjY5OWQxMWZhODM4NTMzOTcyNGQ2MzkzY2Y0NDE4NyBweTNrCis4MzM3NSAyMWQ4YzQyYzBiMTA3ODAwOTY4ZDBjY2FlNTk4ZWJhZjIxMzM4MzJkIHB5M2sKKzgzMzc2IDI4MTJiZmQ4NGI1MDAwYTVhYzU3ZmUyM2UzMzk5OTIwYThkNjNkZWIgcHkzaworODMzNzcgMzg3MDQzZDIwODBiNTNmZDgzYTE5NzkyMTYyM2M3ODY3YTVmZmQ0MyByZWxlYXNlMjYtbWFpbnQKKzgzMzc5IGYyOWMzMTlmZjU2NzlhM2Y2NDFlNDg4ZjE2OTE1ZDY5MTE5YzE5ZmEgcmVsZWFzZTI2LW1haW50Cis4MzM4MCA0NjAzYTVjNDY3NWE0MzIwMjU1NTA4ODc5MzliZjA2YmQ0ZDUxMzc4IHB5M2sKKzgzMzgxIGU4MDU3N2Q1NmE4ZmM0ODNkMDJiZGQ0MmVkOThjN2Y4ZmQ3MDI5OTUgcmVsZWFzZTI3LW1haW50Cis4MzM4MiBkY2IxNmQ3MDM2NTM4YTFkMzdlMDBhODJhMTcwMWI0NjE0NDhmY2E5IHJlbGVhc2UyNi1tYWludAorODMzODMgZWRkYTc1OTZjODMxMjc5NWZiMjk1YzEzMWY3NzJjZTA5NTEzM2ZjMyByZWxlYXNlMzEtbWFpbnQKKzgzMzg0IDc4YmNhZmYwZGQyYjAyYWNiYmI3YmMxOGE2ZmM1NzFjODg3NmQyNzAgcHkzaworODMzODUgZGFkMDg1YzhkZTA5OWIxYjY5NzUwMmQyMjllOTJhY2RiOGMwN2QyNyBweTNrCis4MzM4NiA2ZGU3MGQ0OWI5MTY1YWQ4NWY2NzFmYjU4MWE0MTY1OThhYWUyZDFiIHB5M2sKKzgzMzg3IDk3MGI3Y2Q1MjQ1M2I1ZWEzN2NkYjMxMmU4ZDc3MGJhNDc0ZmE1YmUgcHkzaworODMzODggNzM0NDQyN2U4N2RmY2IzNTllODQyMDFhNTI0MTNmNTUzZDUxYjE4YyBweTNrCis4MzM4OSA2YmYyOTJlOTA2YzJjMjNlYjEwNGEwZGY0MTQ4YWU5Yjk0ZTc5MzYzIHB5M2sKKzgzMzkwIDNjNGJkODYxMzM4M2U0ZDYxNTAzOThkYTM5OWIzMDg0NDczY2M1ZGUgcHkzaworODMzOTEgNTQxMGUxMTY3ZjdkM2M1MzU2NDg0Njg1ZjBiZGE0OWEyYzUzMDAyOSBweTNrCis4MzM5MiA2ZWYzMmQyMDhmY2M0ZjRlNzVjOWEyZjMxNzViYWNhMmY0OTA2ZTMyIHJlbGVhc2UyNy1tYWludAorODMzOTMgMzFmNGM0YjZjNDQ1MDMzMDZmM2E0M2YxNGM3YTJmY2E2Y2E0YWFhOCBweTNrCis4MzM5NCBhNGFkMTA5NzU3NzZjNThlOWY1ZTQ1NzFkNzFjNWIyOTc1ZTc0MWQzIHB5M2sKKzgzMzk1IDY2Y2IxNWM2MmRiNDJlNmQ3NTBhZTZlOWNhNmU3NWIyYTI5ZjFlZjggcHkzaworODMzOTYgZjJmNzk2MTlmNmE0OTQ3MDVhODIwNGUxN2VkZjQ5YjE1YWE2MjBhNSBweTNrCis4MzM5NyA1ZWUzZTI3MTJkN2RjZmJmN2EyMzhkZTI4M2RkM2FjMzg3ZmQyYWNhIHB5M2sKKzgzMzk4IGNiMjMxYjc5NjkzZTQ2ZGZlZmUyYWZiMDE3MmEzODNhOTU5NWQxNDggcHkzaworODMzOTkgNmQzNWQ2ZTU4NTYyMWZmM2U2ZjFkNjQzODRiMDg1NDBkZGFiM2E3NiBweTNrCis4MzQwMCA4OTdmZDUxMDUxYmI2ZjI2YWVhMGJjOWVlYTEwNWFjODhkZTNiYzAwIHB5M2sKKzgzNDAxIDM5OGZhN2I3NzUzYWUwYTY2ODY5ZTk2MjJhNmM4NjRjOThkNmYwODcgcmVsZWFzZTMxLW1haW50Cis4MzQwMiA1MWFhZDUwOWMyMGYxNTE1OTU1MWFkOGJkMzY2M2IwNzdhOThjODI4IHJlbGVhc2UyNy1tYWludAorODM0MDMgMWYwMjcxYzAzNmUxNjhmZTRhYjIwNDBjMDE5MjlhZjlmZTcxODY2OSBweTNrCis4MzQwNCBjYzJmODY0YmFjOWNlZTNiOGM4N2E5YjM0NDRiZTYxN2RmMzIyMmEzIHB5M2sKKzgzNDA1IDEzNWI5OTFkNjViNjBlNjg3NTFiMDVkNTM3YjY2ODBmNGZjYjk5MzQgcHkzaworODM0MDYgY2Y5ODlhMzRjNzdlMzAzOWJhMDU3NTViNTIwMWE4NTIzYTYzN2JlOCBweTNrCis4MzQwNyA4OGMzZGI2ZjQ3OWU0M2I5Yzg3OGQ1NWU2Y2Y2M2VkYmY5MDkxZjZhIHB5M2sKKzgzNDA4IDIyOTkzZDI3ZmM4ZGVlNGNiZTBhMmYzOTM1MTgxZTFiMjE2MThjOTUgcHkzaworODM0MDkgMGJlNTUwNDIxM2QzODBmMGZiYmNhYjk0NjFkMDNiZTE4Zjg1YjgyNyByZWxlYXNlMzEtbWFpbnQKKzgzNDEwIGUzMTY1ZWVhYTcwMGM1OGQxYTYwMjlmMGQxOTEwODcyOGRiODM4ZTMgcmVsZWFzZTI3LW1haW50Cis4MzQxMSA3NDU5OWQzOTU0ZTI4ZDRjOWY3NDYxOTNlMzU3OGRiNzY1ZjczYzgxIHB5M2sKKzgzNDEyIDBmZTU1YzI4NmVkZmQ0NzI2NGM5N2I4YjAwYzk3MDc2ZjkwYTA1ODMgcmVsZWFzZTI3LW1haW50Cis4MzQxMyA3NjYwNWNmYzRjZjM4M2JjOGViZmZmMzA2MWNjMDNmYWE2OWUxYmY4IHJlbGVhc2UzMS1tYWludAorODM0MTQgNjI1YzIxZGRlMTM4MGY4MWY1NGQ0YTJmMjZjMGZmYjgyNjFkOWU0NiByZWxlYXNlMjYtbWFpbnQKKzgzNDE1IGM4M2JhNTUxNTFiMWYzMGQyY2VkNTk4M2I3NGVkMDk0MDI2NTFhOTggcHkzaworODM0MTYgMzAyMDJjMDAxNDAxNTRkNTNkNDViM2M3NjY0MjI3ZDgzOTU4Y2IzNCByZWxlYXNlMzEtbWFpbnQKKzgzNDE3IGVmNzVlY2QwZTFhN2IzMmE5NTQwYzQyMmU2YzJmNjYzZGE1YzhlNTUgcHkzaworODM0MTggY2MzMzUwOGU4MGNkNzgxOTI5N2I5YTFkYWU3YTM0MTE1ZmZlYzJiMyByZWxlYXNlMjctbWFpbnQKKzgzNDE5IDcxZmM5MmI4OGIxOWI4MDFlODk4OWIzOGQxZWJlODZhNmEzNzA1MmQgcmVsZWFzZTI3LW1haW50Cis4MzQyMCAwMWNiZDkzMjAyNjQ0OGE3NTEwNWNmZTA1ZGEwOTY4NmU1YmYzNmRhIHJlbGVhc2UyNi1tYWludAorODM0MjEgODQzNjNjNzQ3YzIxMjBhYTQyYjQ4YTFiYTA0YjE3ZTA4OTJiZTJiNiByZWxlYXNlMjctbWFpbnQKKzgzNDIyIDllZTE5NmE3ZjlhMmEzMmJlNDRmODc2MTFlZDU3YTJkMmMwNjU4MjggcmVsZWFzZTMxLW1haW50Cis4MzQyMyBkYmM4ZGE4MTM2MzBlNjEwZjBmZTUwODg1NDZmZmVlMDIxNjlkYjIzIHJlbGVhc2UzMS1tYWludAorODM0MjQgOWRlMDdjNTVmZGRhMjc2OWVkYzU3OTg1ZmM5OTc3NjgyZjcxZTAyMyByZWxlYXNlMjctbWFpbnQKKzgzNDI1IGJjNjZlMTU2NmExOTI4NDcyYWJmMmFjZTE4ODhiMDIyZjkwMzI3MDkgcmVsZWFzZTMxLW1haW50Cis4MzQyNiBiZjVjNjMwZGFhZjc1MmQyNjg0MzNiZDgyM2EyNzNhOTA0ODE1MTRiIHJlbGVhc2UyNy1tYWludAorODM0MjcgOTNiM2FlNjNkMmYzMTM4ODQxN2ZiZjY0MDljNDFmNWQ5MWYxMzZkMSByZWxlYXNlMzEtbWFpbnQKKzgzNDI4IDEwYzFiNjE0MWQ1MzVjNWRlYmI2MGExM2VmZjVkMjA4ZmE5NTM3ODEgcmVsZWFzZTMxLW1haW50Cis4MzQyOSA5ZjJmYmVlNDIwZGFjMmExZGNkMzMyMGIxZjhmZDc4OTg5ZmZiOTY4IHJlbGVhc2UyNy1tYWludAorODM0MzAgMGRjYWU0NTVlYzA3NmRiZDM4ZjVlOWY3YjA0OWQ1Y2I1NmViZWQwYiByZWxlYXNlMzEtbWFpbnQKKzgzNDMxIGJhMzQyNzk2MjMwNjM3YThmN2U0MzJmOGNjZDE1YzU1ODAzYjg4M2UgcHkzaworODM0MzIgNjYxZTBiMGI0MGJmMWYzY2M4ZDA1YzhjYWJlNWZhMTM1NjA4ODA1NiByZWxlYXNlMjctbWFpbnQKKzgzNDMzIDIwYzcyNDRiY2E3ODAzNzY1ZTBlNjc1YTQ2YjgyNGIzMWUyNWI0YjUgcmVsZWFzZTMxLW1haW50Cis4MzQzNCBiNDkyMDE0ODRmN2ZlNWYzYTA0NWQ3M2Y3ZGViZjM5YTBmMmRhODc5IHJlbGVhc2UyNy1tYWludAorODM0MzUgOTE4MDI4NDBmMGY3ODNmMWRkNTU0NDVlNWRjYzM5OWQ0NWRjM2ZkOSByZWxlYXNlMzEtbWFpbnQKKzgzNDM2IDM0OTllZDZjYmQwNzdjZDU2YzQ2ZDI1NTM1NTE3MDMwZTJmYWM2MGMgcmVsZWFzZTI3LW1haW50Cis4MzQzNyA0OTAzZTc1Nzc0NTQ4NThhNTcxNGVjOTM5NGI2MWZjNDA4NTVmNTE0IHJlbGVhc2UzMS1tYWludAorODM0MzggNDZiMTRhMjk1MGQwMGViNzY1MzYzYWMwMWFjODlkMzkzNTc0NDkxOCByZWxlYXNlMzEtbWFpbnQKKzgzNDM5IDRmNjc5MTA0Y2I4NmJkZTY0M2MxOWI3MzBjOWEyZmM0ZDQ2YmU3ODkgcmVsZWFzZTI3LW1haW50Cis4MzQ0MCA0MDRhOWFjMWE5YTJiN2VlM2ZiNjVlNWRhMTA4YzFhNDNiNGQ2MzRiIHB5M2sKKzgzNDQxIDNjMGZmZTM5NTU3ZGVlNTVkYWQ0ZWY4ZWRkNzJkOTZlOGM5ZDBlMWIgcmVsZWFzZTMxLW1haW50Cis4MzQ0MiBhOGNmZWY4ODQwOGYzYzQ1NWNlNDM0YTc5YmIxM2VlOTkzY2I2ZDA0IHJlbGVhc2UyNy1tYWludAorODM0NDMgNzIwNzk4YTFlZTcxOTIyZmFhNzM0YWJhNWRjY2Q3N2Y3ZGMxNjcyMCByZWxlYXNlMjYtbWFpbnQKKzgzNDQ0IDc2NWJmZDhlYzk2ODk4Y2Q1M2Q5NDY3YWY2OTkyMTU2YWE1YTZiM2YgcHkzaworODM0NDUgNWFmMzYxYWRhYWU5ZmRkYmFjN2Y0MGIwOGFlMzhkMmU0Y2UzNGMzOCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ2IDc1YjNlZGRhM2MyYmQ5NTM4ZGI2OTdmMzViYjgyZTE1M2I1ZmFiMGMgcmVsZWFzZTI3LW1haW50Cis4MzQ0NyAxNDZmZWYwMjQ5ZjlmZmMxMGRmODc5NzY2ODYwMTgzY2YxZWQ1YmU0IHJlbGVhc2UzMS1tYWludAorODM0NDggNDE1ZWEyYzNjZmU4YTljMGYwODMyMjEyYTJjZmUzZDU0ZWVjNWFlMCByZWxlYXNlMzEtbWFpbnQKKzgzNDQ5IDRhMDAyZGE3ZmJmYjNkOTY2MWI2OGIyMmU0Y2EwYjMzZmJmMGVhNGMgcmVsZWFzZTI3LW1haW50Cis4MzQ1MCAzZDc4MjNlNjg5N2I3NjEyMDA0NTM3YjI0NzZmNmIyYzc4MjNkNzllIHJlbGVhc2UyNy1tYWludAorODM0NTEgMmNhODQyZGNiZTExZTg0NGYwMWNhMmNjMTRlZWY3MTcyYWM1MmUwZiByZWxlYXNlMzEtbWFpbnQKKzgzNDUyIDQ3M2E4MDY4ZjZjNTRhNDI3MzU5M2ZkZjExYjA5YWZiYzM4NzdhNTEgcmVsZWFzZTI3LW1haW50Cis4MzQ1MyBiZWFiMmZiMjk2Y2NkYjY4MTA2NzA2MjBkMmQxY2Y2OGJkM2RkN2VmIHJlbGVhc2UzMS1tYWludAorODM0NTQgMDFkOWNhODJmZDRlNGVlMzAzZWZlYmRjOGI4YTM4MDNmZTNjZWM5YSByZWxlYXNlMzEtbWFpbnQKKzgzNDU1IGFhZDU3NjZiZjM2ZmM2Y2NkOThmMjdkZjkzNmY1MDM3YWE5Yjg4OWEgcmVsZWFzZTMxLW1haW50Cis4MzQ1NiBjNzA2Zjg2NzlkZmNlM2Y0YTU3Y2Y5MWU3YjE4ZjhmY2JlMjE3OGFmIHB5M2sKKzgzNDU3IDhjMTA0NWI5MmI2ZjE5ZDI3ZDdkOWI4MDdhNWNlN2EyYTBhZGE2OGEgcmVsZWFzZTI3LW1haW50Cis4MzQ1OCBmMDRmNDIxMzRhOTIxNzRmZDAzODYzZTcwNGNlNWRlZDE0NTgxM2NmIHJlbGVhc2UzMS1tYWludAorODM0NTkgMmJjMWZjMmQ4Y2MwOWQ3MzRkNWI4YTRiZTcyZGEwZDVmZDhmYzMxMiByZWxlYXNlMjctbWFpbnQKKzgzNDYwIDY5Zjg3ZjlkMzNlNzIyMGI2YmViMTY5NWZjODI1ZTA2NGI3Mjc2ZWIgcmVsZWFzZTMxLW1haW50Cis4MzQ2MSBiZjY4MjI1ZGQyYmNlNmQ1ZDk1NzFkM2I5YTM4MzhhZjY1MDZjMTZjIHJlbGVhc2UyNy1tYWludAorODM0NjIgOWVhNWRiNTY3YmRkOGJmZjkyODA3Njk5ZTQwZGFhYjNkMDRlMzUxNSByZWxlYXNlMjctbWFpbnQKKzgzNDYzIGM0MzJhZGFjMTE2YWQ3MTQ4ODJjM2IyNmZjZWIyNGIxNmQ0MGVhYTkgcmVsZWFzZTMxLW1haW50Cis4MzQ2NCA5M2QxMjRhODE5NWNjNDhhNWI5ZTJjYjM0OGVhYWUxMDlhZGUwOGZiIHJlbGVhc2UyNi1tYWludAorODM0NjUgOWYxZWVjYmNjMzY2MjBkZTE1ODMzM2U4NDU4ODc3YTViZDcxMGNjYiByZWxlYXNlMzEtbWFpbnQKKzgzNDY2IDE5OGIyY2QzYTZkMWI4N2I4YWMyYjkzMWExZTgxN2Y1ZWI0MDIwNmMgcmVsZWFzZTI3LW1haW50Cis4MzQ2NyAzOTVlY2FlNjAyY2IxMDFlNmRkODY1NWUwNGI2MzM1ZmZiOGU5MDQwIHJlbGVhc2UzMS1tYWludAorODM0NjggNWI3ZTM1YWExZjFkMTczYThmZDBlYzUzZGVlZDViMzEzNjdkYTg3MCByZWxlYXNlMzEtbWFpbnQKKzgzNDY5IGNiNTIyMjU3MmZjZDkzZWI1YjI2ZWQ1ZWI4NjE4YThhOTQ5ZDA5ZjkgcmVsZWFzZTI3LW1haW50Cis4MzQ3MCBjZDExZTFhMWZkODliYzE1NmU0M2MwNzdiMzIxYmQ4YzRhYjUxOTdkIHJlbGVhc2UzMS1tYWludAorODM0NzEgZjM1NDE0NjQyZGZmYTMzNWIyN2I3Njg0NTRmMGNiOGY5NTcyOGU1YSByZWxlYXNlMjctbWFpbnQKKzgzNDcyIDIyOGEwZWYyM2E3YjJlNTRhYTQyODdjYjY2MmRhYjA0Y2E5NDAzYjcgcmVsZWFzZTMxLW1haW50Cis4MzQ3MyA5MmY5NjhkODc0Yjg2ZTgxZGVlNmMxYjQ5MzUyMDlmOGUwNTMwNTRmIHJlbGVhc2UyNy1tYWludAorODM0NzQgZjQ2ZGNkOGEzMTEzNWE4MzBhNmRhOTI5ODc5ZGIxYTljM2YyM2JlNyByZWxlYXNlMzEtbWFpbnQKKzgzNDc1IDI3NTQ0ZmIwZjdmMTQ4NTkwNDk0NDcwYTNlYWI4ZGUxZjJjMzkwODIgcmVsZWFzZTI3LW1haW50Cis4MzQ3NiAxMzEyZTU5NGViZTc4NDhlNjc1MDdiMGJjMmM2NzQyZDUxZWU2NTNkIHJlbGVhc2UzMS1tYWludAorODM0NzcgOWJmN2EwZjQyZWFjMzlmNTM5NjI5MTY2OTk3NTQ5NjA5ZTY4MzI2MiByZWxlYXNlMjctbWFpbnQKKzgzNDc4IDZhZWE3MDkyOGE2YWM2ZDQ5NjZjOTZkNDRjNmFkNTMxMWRmMjM1MGMgcmVsZWFzZTMxLW1haW50Cis4MzQ3OSAxYWJkYmNmYWEwODlkMDgwYjEzNmViYWZkZDU2ODk0NDVhODlmZTdhIHB5M2sKKzgzNDgwIGYzNmEwNDA3OGJmZGJmZWIyNjRkNzkzMzIxNTZkMDM1ZWUwMzhlNDUgcmVsZWFzZTI3LW1haW50Cis4MzQ4MSBlYmQ0YjI4ZjQ2YTBmMjliYmY5ZGU1ODc4YzY4ZDI2MGIzYzFkNjg0IHJlbGVhc2UzMS1tYWludAorODM0ODIgMGRkNDgwMDM4YTg4NzJjODcyZDdlYTkxMTgxZGYzNTJiZjQ0NGQ0NCByZWxlYXNlMjctbWFpbnQKKzgzNDgzIGQxNWI0M2MyNzJmYmI2ZDY0N2RjYmQ4MTc2NWY5NDI4YWM1NDI2YmQgcmVsZWFzZTI3LW1haW50Cis4MzQ4NCA5NTAxY2Q2NDBjOGU4N2UyZWNmMTE3NjkyMjcwYmNkYTY4Yzk1ZDliIHJlbGVhc2UzMS1tYWludAorODM0ODUgOGY4YmE0YmZiZmE1MDY0NzY0YmMyZmM0NjJmZWY2NWIzMWQ0NTc4NSByZWxlYXNlMjYtbWFpbnQKKzgzNDg2IDc0MzQwNjc0OWIyZDcwNWNjMzkxZDE0MWU4OGRmZGY1MTg1YzEyNjEgcmVsZWFzZTI3LW1haW50Cis4MzQ4NyBlOGZjOWE5ZTE5OTFhMDc5OTc4NTE1NjQyY2QzNmJjNmE1MmE2ZDc0IHJlbGVhc2UyNi1tYWludAorODM0ODggZGU2ZGVmNzkzMjZjOTM2Njc2ZjFkZGFjNTExZThhZjhhYjNmMzExNSBweTNrCis4MzQ4OSAyYTRiMmZlYzgyNzdjN2I4ZjVmYjVjMzIyMDhlNjMwMmNjYzI5M2U2IHJlbGVhc2UyNi1tYWludAorODM0OTAgMmMyNTNmNmUwMmU3ZjkyNTQwOTVjOWJlMzdjZjgyOWU3ZTNjYTIxMSByZWxlYXNlMjYtbWFpbnQKKzgzNDkxIDM4ODEyOTQ4YzUzMjExMTc3Yzk5OTFkNzhjZTg4NjUxYmQ1ZmZkYWEgcmVsZWFzZTI2LW1haW50Cis4MzQ5MiA5N2NiMWRkODU2NmViMjM1Y2NlNjk3NTJlYzc4NTU2MTk1ZDY2YmZkIHJlbGVhc2UyNi1tYWludAorODM0OTMgNWZkMDllNDEwZDM2YmYzNjBlYTFlMjE1YjQyNDg3NTZhNjQ5MDFmZiByZWxlYXNlMjYtbWFpbnQKKzgzNDk0IGI3ZDVjYmJlYTE4MGNmZmRiNDA4YmM5M2QyMGFlOWQwZDE3NjY4ZmEgcHkzaworODM0OTUgNjFhZDgxYTc3NGM1NTA2M2ZiMTI5ZWNlOWRmMjg3NDdlMTkzODAwMyByZWxlYXNlMjYtbWFpbnQKKzgzNDk2IDljNzVhOTQxODdjNzNmNmE3ODk0NTg2MDAyNDA0MGFjMjdiNTczMmMgcmVsZWFzZTI2LW1haW50Cis4MzQ5NyAwZGI2NWM2NTEwZGFhNTY4ZjBlZTFiMzk2YTkwNzkwYzA1OWFjMDFiIHJlbGVhc2UyNi1tYWludAorODM0OTggMzE3NGQ1YmE0NmUzOGYxYjgwMWViYTBiNjMzMzUxMGMwNTE4NzgwMCByZWxlYXNlMjYtbWFpbnQKKzgzNDk5IGJjMTBhNDQyNzJkZmM3ZWY4ZmVhOWU3YjA2MjkyYTBmNmE3NWU0ZTAgcmVsZWFzZTI3LW1haW50Cis4MzUwMCBmZGJmY2Y5ZGEyYzcxMGNiZmJjYTg4ZWFlYjIxNGYzMzk3MzcwOTY3IHJlbGVhc2UyNi1tYWludAorODM1MDEgOGFkYTM1ZTlmNDVkMGYxMzdlYTUzYzI0MGRlMzdmMTllNDQwZDcxZiBweTNrCis4MzUwMiAyYzM2NzUwMTYxNDUxZGQ1MDJjMzEyNzlkMzQzYWQwZDAyMmMxMmIyIHJlbGVhc2UyNi1tYWludAorODM1MDMgZTQ4ZWY3MTMxY2ZiYzdmNDQwNDBkNjUyNjgyNTUzMTYxNzFlZmY2YiByZWxlYXNlMzEtbWFpbnQKKzgzNTA0IGM5NjYzMTMyMzkwZGNkYzY2YmU0MDllYWZjOTA2ZDZiYzZhNjQyYWEgcmVsZWFzZTI3LW1haW50Cis4MzUwNSAwYWFjN2I4NzcxZTE3ZmUzYTgyYjk3NTE0ZmJmODgzNTUwYTE4ZGEzIHJlbGVhc2UyNi1tYWludAorODM1MDYgOGExNDlhOWY5ZGFmNjU3MTY0NTAwNmViNGUzNDNjNjYwOGQ3NmMyMiBweTNrCis4MzUwNyAyZTk3YWViYWRlNGRkYmNmMzZlMzY0MTk3ODhjZmU4Y2VhOWQzOWE0IHJlbGVhc2UzMS1tYWludAorODM1MDggNjNiMjM0OWVmNzkwZDRmNDZiN2MwZTQ4ZmQ3NDJkNTRlMDQwMzYzYSByZWxlYXNlMjctbWFpbnQKKzgzNTA5IDcyYzhmYWI5MTE2ZWIwOGJiMWMyODNmNGE5NDJlMjUwZTkxY2Y5NGYgcmVsZWFzZTI3LW1haW50Cis4MzUxMCBkZTlmMzUzZWU4NjVkOWU1ODViMTYyZDYzYjE2NTIzYzYzMGExNzUzIHJlbGVhc2UyNi1tYWludAorODM1MTEgMzdkM2NkOGMxMGZiNDUxMTk3ZTU0ZTdiZGVmY2VkN2ZkMDVjY2EyNiByZWxlYXNlMjYtbWFpbnQKKzgzNTEyIDc1MWM2ZGQ3MWI1ZWQ1NWQ0OTVjZTQwNzUxNDFlMTA5MmYyMDA3ZDggcmVsZWFzZTI2LW1haW50Cis4MzUxMyBlYjZmOTkyNTQzMTM3MzhkZGM3OGVmMDI4ZWVhN2ViYTY2ZmEzMTI0IHB5M2sKKzgzNTE0IDE4NWUzZjcyNjZlOTBkNzQzYTM5NzFmNWE4ZDM3YWZkMGE3YzdhZjIgcmVsZWFzZTI2LW1haW50Cis4MzUxNSAzMDA4NmFhMzMxMjM1MTJhYzM0ZWY0Y2I5ZDhkMDBjZGM1N2I4MGIyIHJlbGVhc2UyNi1tYWludAorODM1MTYgZDhkYmYyNDAwZDhhMjFjOWU0ZWFhYjQ4NTk5YmE5ODg5N2U4MTVlNSBweTNrCis4MzUxNyA4YTJhODJiYjcxYzgyMjQ3ZTFkZjA4NzI3YjFiMWM2ZGNmYzgxYjA4IHJlbGVhc2UyNi1tYWludAorODM1MTggMmRjMGI3MTMxYzcyMTA4MGFkOTE2OWM2OTg0MDNmZjc4NDA2YzkyNiByZWxlYXNlMjYtbWFpbnQKKzgzNTE5IDA3Yzg0Yjk4MTQwMTQ4NjJkMDNkYTYwNDFhMDY4MDRlM2RlZDJjMjQgcmVsZWFzZTI2LW1haW50Cis4MzUyMCBmZDRiMDdhYjc5NzY5OTY0MDA2NTAxMGRjM2RlYjlmYTliMTdjMDFiIHJlbGVhc2UyNi1tYWludAorODM1MjEgMzllMTRkZjc2NWU0MzFiOWE3OGZhNDc1M2EzYzM3MmQxOTZhODMzZSBweTNrCis4MzUyMiA5MDRlZjRiYmZmNWU1NjRiZjQxNmQwNjUwYWY5N2U3ZThkNzBiMjU0IHJlbGVhc2UzMS1tYWludAorODM1MjMgYjYxNDRkYWE0MzM5YTE4YWIxMGU2ZTFmZjYyZDY0M2UyY2E5NGE0OCBweTNrCis4MzUyNCA2MWQzNDgxZWJhNzQxZDc1NzI3N2UyN2I1NzQyYmJhNzMyMDM0YjkxIHB5M2sKKzgzNTI1IDc3YmJiMDVkMzEwZTYzZGRlNmRkYzVhYzZhMzA2NjA5ZTNkYThhZTQgcHkzaworODM1MjYgOTI0NmFhZGZjZDc4OWMyM2YxMzM5YWQ1YTAxZjRhYWRhNjczZDUyYyBweTNrCis4MzUyNyBlYjc5MDQ5NWM2YTQ1MDJjOWEwZWIxNTY1Y2I2OTBkODI0NGU1MWNmIHB5M2sKKzgzNTI4IGEzNDlmYWQ1MDdhMjI0NTgxNWU1MmJkOTdmYmVkOWJiMGNmODIzZTEgcHkzaworODM1MjkgMTY0MGVmYTdmZjI5YzkyNGI4ODc4ZmNmYmQxOWM5NDhmYTEwNjdhNSBweTNrCis4MzUzMCBiMDhkMzUwNjIwODg1ZjAyZmFmMjQ5MjUwNzJmZDcwZTU4MzhlMzc5IHJlbGVhc2UzMS1tYWludAorODM1MzEgODVjZGFmNWYzY2RjM2UxNGMwODFlOWYyNzk4NzQ4NmU4NWQ4YTc0ZSBweTNrCis4MzUzMiBhMzE0OWM5MzE2NTY1NmU4Zjk1MDA1MzU5OTA4ZmUyY2IzNThmNjRiIHJlbGVhc2UyNi1tYWludAorODM1MzMgNmJhZWJhNTRmZDI0YmQ3MWJhZTAwNTU5MGExZmFiYTAxYmNkMGM0YiByZWxlYXNlMjctbWFpbnQKKzgzNTM0IDMwNjhlMDBhMzIwNzY4YTVjMDI0M2ZjMzRmNWM2Mzg5Y2VkZGY3OTAgcmVsZWFzZTMxLW1haW50Cis4MzUzNSAzYmUyNDY0YzBjMzk0NmRjMjI4NTdkMmNlMzlhZWJiODU4OGE3NWQ0IHJlbGVhc2UyNi1tYWludAorODM1MzYgZDdmMzA4NWQxYjAzZTQyZmQ3NmE4MzVkMDY5ZDFlNTM5NmU5OTY4ZSBweTNrCis4MzUzNyA3YzNiODQ5ZDE4MWFlMmQ5ODExNTYyNDljYjVmNWZlYzYwMDA5MDlkIHJlbGVhc2UyNi1tYWludAorODM1MzggNTE2ZjllMzRhZjIwOTZkYTA5ZjYzOTM1ZGU5NjgwNGNjN2NkMjIxMiBweTNrCis4MzUzOSBjYTYzMmJhZDZkNjBjYjQ2YTViYzEzMjhjY2I3OWNhMGY2MDYzY2FhIHJlbGVhc2UyNi1tYWludAorODM1NDAgZGJhOTk4MjhkOTFjM2U4ZWUxOTc3ZDExYzgyOGJkZjIxMzQ1YzdhMyByZWxlYXNlMjYtbWFpbnQKKzgzNTQxIDY1MzYxNTBkZDRmNDI4NjVkMjg0NDc3MWZhZDJjZDJmMjljNmMyMDUgcmVsZWFzZTI2LW1haW50Cis4MzU0MiA1OGMyMmQzMGY3NDkzNjQ3N2JhMGJkNmQ5Yzg3NGQ3N2QzOTczMzFmIHB5M2sKKzgzNTQzIDY3MjQ5M2ZmZDc1M2Y5OWNlZmE5NjU3NTk3MWRhYjY5NDFiN2Y0OGMgcHkzaworODM1NDQgY2VjYzZkMmE1YjQ5Y2JjYzQ0ZDk3YTA1ZDc3YWFiN2I0ZWYzMWU2NiByZWxlYXNlMzEtbWFpbnQKKzgzNTQ1IGI2YzVmY2NjYjZkZTVkNTdkZjlkNTI4MmU1N2EyYTVjNjIzYTk1NjAgcmVsZWFzZTI3LW1haW50Cis4MzU0NiA3MjAyYzlhMjA1NjY2MjlkYWQ2ZDE2Nzk0MzM0OGFmOWY5ZTliODAwIHB5M2sKKzgzNTQ3IDBiZjM2Y2RkODMzNDU0MjUxMGM1ZWRjZmNhYzYzOTM0MmZlZDZiOGUgcHkzaworODM1NDggNmUzYzIwOTNiYjIxMDg0YzAxZGNhNDJkZmJmNThjMjM1ZDU4MWU3YyBweTNrCis4MzU0OSBmOGNlNjRhOTZjODk2MDJhNWYwYjk1ZTkwOWFiOGEyYWRlNGJhM2MzIHJlbGVhc2UyNi1tYWludAorODM1NTAgYTI0YzlhNzQwMWY0NTM1MTdlMzU2YWMwMTBlZDcyNTEyODAxMGJiMSBweTNrCis4MzU1MSA2OTlmY2RhZjk5ODEyY2E5MWFjOTI0Yjc1ZGE1NjNhYTc1ZTRmNDU5IHB5M2sKKzgzNTUyIDMwN2UxY2VlNGE1ODEwZjQwZWI0YTM3MWE5OWMyODJmZTI1YmUwZTggcHkzaworODM1NTMgN2Y2OGY4NTU0M2Q0ZjkxYTdlMjI0YTRiNjcxZjE3ZmI3YjJjYzRhOSBweTNrCis4MzU1NCA3ZjA3MTA4N2Q4MjBkOTkyZGIxNmE3YjE1MDA3ZTBhY2NlZDQzYTAwIHB5M2sKKzgzNTU1IDYyZDhjZmNjZDE4YjQ0ZjU2ZTk2Yzk3NjMyYWJjZDI3Yjc1OThhYjMgcHkzaworODM1NTcgNTExMDJhYmRlYzUwMjEyZjA1Njc3MTM0MmNiMWE1NTdjYzFlNGEyYyByZWxlYXNlMjYtbWFpbnQKKzgzNTU4IGI0ZjYxNDcxNzhlNWMyZjc5MjcyYjQyMjRlODhjZTE5ZjA3MDBkOTUgcHkzaworODM1NTkgYWZmOGQ3YmNhM2YzMzNmYTk5NjU0NmU5ZWM1MTlmNjVmNWNiYzBmZSByZWxlYXNlMjYtbWFpbnQKKzgzNTYwIDQ4NzRlZmQxZjY1N2EzNmY3NzBkNGFiOTBkY2IzNGFhZjY2NDEwYWYgcHkzaworODM1NjEgN2ViZjVmOTAxMWIxOTBkMmU4Mzk0NGE2ZWQ5NTU3OTNjYzgwZmFmMyBweTNrCis4MzU2MiBiNGI4OWQxYjQyY2Q0NDViYTViMTQ2YWYwODNiOTY3ZGJjODYyMDIxIHJlbGVhc2UyNi1tYWludAorODM1NjMgYmIyZGNmMTIwM2M0YzQ3MGY0MWE0OGQyYzc1YjEyYjNkMzlmMDgzMSBweTNrCis4MzU2NCBhYzI5ZjcwYzYxZGJhMzQ0NmM3NWJkZTJiMjA3ZTg5NjQ3NWUwNTUwIHJlbGVhc2UyNi1tYWludAorODM1NjUgNDJlMTljMTRiMTQ5MmE1YzlhNjMzMzNjNWE4OTE2YWNlZDRiNjE2NSBweTNrCis4MzU2NiA0N2JhOTA1YTdlODdkYzYxYjc4ODg1NDkyYWJkNzhjZjQwNjkxNDRlIHB5M2sKKzgzNTY3IGQwYmI4MGU4MWIzOWE2M2M0NjNkM2M2NzRlMGNjMjYyMDAzMTdiZTEgcmVsZWFzZTI3LW1haW50Cis4MzU2OCAzN2JhNDcyMzIwMjdhNjAyOTk0YWYxMWJhNTVmMGUzNDFiZGNjYTk5IHJlbGVhc2UyNy1tYWludAorODM1NjkgZmY2ZmFiZjI1Y2VmNDk1N2M5M2U3OWE0MmZlMGJjYTZjZWJmYmQ5NCBweTNrCis4MzU3MCBkZjM3OGU0NGJhOWFkM2VmODRlMDI1ZDJlOTA4ZGI1MjE5YWUyNWY2IHJlbGVhc2UyNi1tYWludAorODM1NzEgMjM2MzkzYzU1NGY3MTQ5MGRlY2M2ZjJjYWZmYzMxMzk3ZjU2MGJlZCBweTNrCis4MzU3MiA3OTU4OGQ0ODY3YmNiMjQ3NWQ2MjY4MWE3MjRlMjk1MTM2OTA5MDRhIHJlbGVhc2UyNi1tYWludAorODM1NzMgZGM5NDEzNDE4NmM4NzUzYzZjMGU1MzZjMzkyNjdmZTVmYWEzMWNmOSByZWxlYXNlMjYtbWFpbnQKKzgzNTc0IDg4MTZmNGU5ZjcxMmNmM2I3ZjE5YWJkMTRjOTZjYjNhMWVjZGEyNGQgcHkzaworODM1NzUgNzBhNmE3MjdlY2Q3MzI5MzUzODVhNWJiOWRmZDg5YTIzOTIwN2I4NSBweTNrCis4MzU3NiA2NDk0NzZjNjYzZmNmNjEwZTU2ZGNkNDUyMjJkYWFhYjA5ZjU1YTM5IHJlbGVhc2UyNi1tYWludAorODM1NzcgY2MzMzY2OTJiYWI5MDU0NzViOWM3NWU1ZTNiMmYyYTE1MDU5MWM5YyByZWxlYXNlMjYtbWFpbnQKKzgzNTc4IDk1OTQwMGFlMDViMDQ2YzYwZWQ4OTNhZmNmYTFlNjBjM2FjZGIyY2IgcmVsZWFzZTI2LW1haW50Cis4MzU3OSAzMTljOWY5ZGM0NTYxOTQ2ZGNkNWJiNDhhMWQzMzkwNDhmYWExOTk5IHJlbGVhc2UyNi1tYWludAorODM1ODAgM2QwMTFjMmVjMjM3Y2Q5MzU1OGVhYmVmN2MwYWY5MjdiNmUzMTYzMyBweTNrCis4MzU4MSAzYWY2Y2FlNWUwMjZiYmE3M2NkNjQ1NmZiYTEyZTZhMDdiMmZlMmE5IHJlbGVhc2UyNi1tYWludAorODM1ODIgZDZhYzNkMDliNzlkNGE3N2VkNzU3MzNmNmI3YjBkMmZiMzdmNDQ3ZCByZWxlYXNlMjYtbWFpbnQKKzgzNTgzIGI4NWNmODViN2VkYmM1NGU1MTU1OTI4NjljNTNiN2NlMWZmODM5NjAgcmVsZWFzZTI2LW1haW50Cis4MzU4NCBjZWE2ZWQ3YTBhYTExYTBmODQ5Nzg5NzQxMWM0YmVjZWMzZmU4OTA2IHB5M2sKKzgzNTg1IDRkZmI4YTYxZTY5ZmQwMzhmMzgyZTgwY2M0MDFkN2Y3MDgyYWNiZDYgcmVsZWFzZTI2LW1haW50Cis4MzU4NiA3NmUxYzVmMzE5MzFmMGZlMDc5YjZlNDUzMDlkMGFiZWE4YWJiNzg5IHJlbGVhc2UyNi1tYWludAorODM1ODcgZTk3MWMxMDRhNWMyMWUzZDM3NDgwZmI4NGRjMjU3ODEzZGYwZWIzYiByZWxlYXNlMjctbWFpbnQKKzgzNTg4IGZkMjQ5NzUwY2JhZTVhNGU2MDA0ODU4Yjk5OGExODE0ZmNhOTlkNTIgcmVsZWFzZTI2LW1haW50Cis4MzU4OSA2ZjgxZDZmOWE2ZDFjNGE3ZGNkZDM1ODI1NWNmNjRjZjQ4YzkzYmJmIHJlbGVhc2UyNy1tYWludAorODM1OTAgNjczMGNmOWQ2MjdhNWRhZTgxYjQ5NzVhYWUyMTNjYTNjYTE4ODFlZSByZWxlYXNlMjctbWFpbnQKKzgzNTkxIDc0NDlkMDQyMTNjNmU0MWU3YTc0NDM2OTkzYTAzNzIzNjA0MTI5YzAgcmVsZWFzZTI3LW1haW50Cis4MzU5MiAyMTYyMGQ5YjA4NDgwY2UzYWRjMzY2ZGFlNjgyYjc5YWNiNzhkODY3IHJlbGVhc2UyNi1tYWludAorODM1OTMgNTk1Njc2ZTQ2NmMwZDQzMGMwZWEyMTBlN2ZkZGQwN2M4ZmZiYmVlMCByZWxlYXNlMjctbWFpbnQKKzgzNTk0IGE5Y2QyNTUwZmY0MGFjZWIwZDc2NGYyZDAyNDA5YTY1ZGI1OGNjZWQgcmVsZWFzZTI2LW1haW50Cis4MzU5NSAxM2QyYmFjYzU2YTQxNTQ1MmQ3ZjEwMjliMjVkZTIxMGRjODgzYzgwIHJlbGVhc2UyNy1tYWludAorODM1OTYgZjNmZWYyMGE2NmRkMDhiZDJiZWRhMTBhNDA1Mjg1MmIwNDVmOWQwZiByZWxlYXNlMjYtbWFpbnQKKzgzNTk3IDI5ZDM0ZTRkMGE5YTM2N2FlODA0MzI4NWVmN2U4MDQ3YzI4ZThjZGQgcmVsZWFzZTI2LW1haW50Cis4MzU5OCA2MWI2OWJmMWVlYmRjZTExYWZjYjMwYTA3YzhkODAxZmM0YmEyNDkxIHJlbGVhc2UyNy1tYWludAorODM1OTkgZjJkODNhMTM3MDNmYTlmYzE1MjAwYThkNTk3M2JhZThjNjdmMzYzZCBweTNrCis4MzYwMCA1YzRjZGYzM2MxMzI1YTcwNTZlNzg4MGQ5ZTU3N2NkNmVhMzViYzc3IHJlbGVhc2UyNy1tYWludAorODM2MDEgMTJjOTFmNGJiNDE0NDlhYmFjNmFkYWZmYzJkNmM4ZGQwYmQ3ZWE2ZCByZWxlYXNlMjYtbWFpbnQKKzgzNjAyIDYzZmI4ZGJiZmRhMjVlNDI5NGI5YTNmYmRlNGJlZGNkMmRkNzBiNDggcmVsZWFzZTI2LW1haW50Cis4MzYwMyA0NDM4OTZmMzI0Y2UyMGZhNjk2MDY4NzcwODZjMDNmY2ViODAwMjkwIHJlbGVhc2UyNi1tYWludAorODM2MDQgYTJmMDEzMDIxZTFkZGIxYmZmMDg1NjMxMTk5NDU3NGMxNWUzMmU4NyByZWxlYXNlMjYtbWFpbnQKKzgzNjA1IDM3ZDM5OWFhOGMxNmZkYTY3NWU5MmM2NDU3NzhmYTU1MTVkMDIxNzQgcHkzaworODM2MDYgZmQyMGViYTFmMjAxMWQ2MzA0MmQzM2I5YTRjZWVmZGYyODZhZWJhOSBweTNrCis4MzYwNyA0NzUwYThhOGI0Y2Y0MTc0NWYyM2IwOTViMWU5MGZiMzJlN2E4MzdjIHB5M2sKKzgzNjA4IDYzODQxMGEyOTA0NjgxY2IwODI2OWU4NjliYmZkODc0MThjZjZhZmIgcHkzaworODM2MDkgN2E0N2M0ZDMwZjZlMWIzZjQ2ZWJkMGI0NGY4NzFkMDE3MTAzZjg5OSBweTNrCis4MzYxMCBkNDg1YzY4MGM2NWZhYzkzNzNkMDkzMmVhOWNmZmI2YjE2ZTYyY2YyIHB5M2sKKzgzNjExIDk1MmE4ZGU1Y2E2NWExNzdkOTRmZmU0ZGJhNjNkYzk5MzIyOTkzODcgcHkzaworODM2MTIgNTkzZDY0MTdlZGYxMDc5ZjJjM2U1MzUwMmY2MDU3ZTYyNDQ5ZWM2YyBweTNrCis4MzYxMyAyMDI0MmFmMjQzZDIwZTIzMDc3Y2JkNDM1YThiYWEyM2U3YWE2MWMxIHB5M2sKKzgzNjE0IDJkMDNkNmM0YzgyOWMyOTBkOTA1MTRmMWY1ZmVlNzRhZTIzZDU3OTQgcHkzaworODM2MTUgNDQ4MmE0Mjg4NWY3NWE1MTYxZGQ2ZWFjZDA1MjJhMmQ4NDFlMmExOCBweTNrCis4MzYxNiAyOWYyMGVmMTA3NTVhMGFhMjRhMGExMTRhZjhjOTAyNjM5ZTkzNTc2IHB5M2sKKzgzNjE3IDYwMTViNmVjODFmMmM3NzAzY2MxYjIxZGIyOGYwNzA1MDc3YzUwMWMgcHkzaworODM2MTggMDMxZTZiMzQ4YThlOGFmOWQzYjEzZTRjMzZkODU2NDcxZTVhYzViNCBweTNrCis4MzYxOSA3NjJkODlmYWNlYWFhYWM2OTgxNjViNDc1NzU4YWFmNmI1NjZiYTgzIHJlbGVhc2UyNi1tYWludAorODM2MjAgNDU0MGI2ZjQyOGQzNjM0NzQ4NDY4YjM3MWYyMmE4NzA4OThhNzQ2MyByZWxlYXNlMjYtbWFpbnQKKzgzNjIxIGQ1NzU1MmFiZjE4MGU1OGRkMjQwYzU4NjU4NTQzYmY1ZDk2NWM0MWIgcmVsZWFzZTI2LW1haW50Cis4MzYyMiBiOTJmMGM0OWYwZThmOWNhNjU2NWIzYmFiNTE5ZGYzYjMwNWYwMzM2IHJlbGVhc2UyNi1tYWludAorODM2MjMgNjhjZmM4NGU0ZGIxYzg2YzI5NDk5ZmNkZDljZGIzNGRmNmE4NjAxNyByZWxlYXNlMjYtbWFpbnQKKzgzNjI0IDRjMGIzN2Q4NjljYWY4Nzg2YjhlODEzOGU4M2ViMTYwYzYwNzRmNTAgcmVsZWFzZTI2LW1haW50Cis4MzYyNSBhNjkzNGExYmZhM2IwZmM2MDUxZTE5M2VhMDBjNWQxMzY1NTc1YmMxIHJlbGVhc2UyNi1tYWludAorODM2MjYgNjU3YWU4NzdjMGJmMjAwMDYwY2FlMWI4MDBmZTM1NDhkM2U0NGYyYSByZWxlYXNlMjYtbWFpbnQKKzgzNjI3IDhjNzk5MDlhN2VlN2E2MWY5M2U3YzEyNzYzOGZjYjMwZDdhY2RjYzkgcmVsZWFzZTI2LW1haW50Cis4MzYyOCA0ZGY3MmZlYjM5ZDkwNTgxY2NkYTVmZDEwNzA2MzY2MGRhM2FhYzUyIHJlbGVhc2UyNi1tYWludAorODM2MjkgZWYxMTlkYmJlODg3NjYxNTVjOGE0ZTRiN2Q1OTVjNjBkZDFmM2YxNyByZWxlYXNlMjYtbWFpbnQKKzgzNjMwIGE4OGNiODAwNTExMGY1NzNkYmJjOTA2Y2YxZDFiOGMzYmU4YzlkMjggcmVsZWFzZTI2LW1haW50Cis4MzYzMSBiMWUwNDNkZTljNWE1ODQwMTRiY2E1ODI2YWNlZmM1ZjkzYWRiOTg3IHJlbGVhc2UyNi1tYWludAorODM2MzIgNWNmNjc5YmUzZGZjNGVhOGYzZmY4NmRjMjVkMTc0MGJiYmNmZmIxYyByZWxlYXNlMjYtbWFpbnQKKzgzNjMzIDZmZmYwZmZmZjg1YjRlZmJmMGRmMzM1MzIwMGQ3OWU4MmFmMzM5YjUgcmVsZWFzZTI2LW1haW50Cis4MzYzNCAyYWNhMzQ0NjBmZGI0MDljZjVjMTFjMzIwYjMxMjE0MTAzZDlkNGIwIHJlbGVhc2UyNi1tYWludAorODM2MzUgM2VmYjQ1ODE3OTBhMzFjNzc4NjIwZDQ5NjQ1OGNkNWE0YTI0ZjNmYSByZWxlYXNlMjYtbWFpbnQKKzgzNjM2IDZhNmMxM2E3ZjAzMDM4YTBkYzg0ZDNiZTY2MTQyNWZmNTA2ZjUzMTMgcHkzaworODM2MzcgMzBhODAwZDdlYWNjYWFhNzE4NzYwZmIxMjI4ZTVmODc0NzQ3ZWM2NyByZWxlYXNlMjYtbWFpbnQKKzgzNjM4IGU3ZTdjNTY3MThhZjI2ZjU1NjA2NjJkZGMxMDEzYjg3YmYzNDgxNTkgcmVsZWFzZTI2LW1haW50Cis4MzYzOSAxOTk2NDk0NGNjMDEzZTdjMWY1MWRlN2M3MzUwNmIyZGU5ZGQ1NTViIHJlbGVhc2UyNi1tYWludAorODM2NDAgODZkMTE5ZTk0ZGEzYTA2YmMwMmJlNzZiYzk3N2I0ZmU3YzQ2NGQzMiByZWxlYXNlMjYtbWFpbnQKKzgzNjQxIDYzZjM4Mzc5ZTRlZGEwYjY3NjFkNTA4YWNjYTNiZTdkNWFiY2MzZmEgcmVsZWFzZTI2LW1haW50Cis4MzY0MiA3YjU4NGExM2JjOTY1YWJiYmY2OTYzMzhjYjNjZmM3N2M2MzkzMWRlIHJlbGVhc2UyNi1tYWludAorODM2NDMgZjMwNjBlNmZiNzE3NTg1ZGE0NmZjYjYyZGIyMWViZTY3OGUxNWNiMyByZWxlYXNlMjctbWFpbnQKKzgzNjQ0IDE4YzhjNTAwNDEwOWVkNzI4ZDg4ZTA4MjllZTY3ZTY2NDc5ODE1NmYgcHkzaworODM2NDUgNjk0NTQxNmM4ZDA0NWM2OGFlYWZjODY0MmFiZWI3YWFlMGZlMjBhYSByZWxlYXNlMzEtbWFpbnQKKzgzNjQ2IDUxNzg1OWNiMGU5MjAwMjNkNWFhYzA5MzNiMzQ1MWI5MGFlMmJhYTIgcmVsZWFzZTI3LW1haW50Cis4MzY0NyBjODJiNmVmZmI2OTUzMWE1ZjNjODhmY2NjYzdhOTkyNTFiYzVlNmNmIHJlbGVhc2UyNi1tYWludAorODM2NDggY2RmNmEzYTUwNDA3NDZkMzEwYTUyNGZkYjg1ZWMwZmU1ZDBlNTg1YiByZWxlYXNlMjYtbWFpbnQKKzgzNjQ5IDEyODhhMjU5MzI4NzZmNjM0NWQyN2FhNzg2YTE1OTY4ODFkYWFlZTQgcHkzaworODM2NTAgNTcxMDVlODc1NjA0ZmVmYmFkZTEzNzY2N2JkYzUzNzVjNGQ1MTA1OSByZWxlYXNlMjYtbWFpbnQKKzgzNjUxIGViYzkwNTE3YjhkOTZiZmY4MmExN2QwM2Q1MmJlOGJjMDg3ODcxODUgcmVsZWFzZTI2LW1haW50Cis4MzY1MiBlMWVmNTI2MzMzNTBkZjY0MzY0YzcyYjhiM2M0MTRkMDk2NmI4ZDY5IHJlbGVhc2UyNi1tYWludAorODM2NTMgZjg2NGZmYjhmMmVkZWY2ODZjNzc2ZTc1OWI3ODYzNTVkODY5MzQzZiByZWxlYXNlMjYtbWFpbnQKKzgzNjU0IGQyNjVmOTFjMzg3ZDJmYTg0MDg4NTk0MmY0Yzk1MDc1ZmU2NmQ1MDMgcmVsZWFzZTI2LW1haW50Cis4MzY1NSBhNzkzN2RhNjI1OTFjMjVlOGNhNzAxOTQ3YTdhMDZjMzliNTAwYWEwIHJlbGVhc2UyNi1tYWludAorODM2NTYgNDhjNTllOTA1NTMyNTFlN2Y1ODQyMGFiYzBiMzdhNTZjNzJlNGRiOCByZWxlYXNlMjYtbWFpbnQKKzgzNjU3IDdjZWUxYjk2MDllNDdkZTAzZmYwODE1NDQ0NGY5MTEzMGYyZjdjN2EgcmVsZWFzZTI2LW1haW50Cis4MzY1OCBiMjA2NjY3OGQ5MzdjZjk5MGZlZjVlODgwZWU1ODI5MDNiNmNlYjA2IHJlbGVhc2UyNi1tYWludAorODM2NTkgZTIxMGVkNjNiMDRlNDIzOGM4MjE3MThmNmYxNTkwMGYyY2Y4M2NkMyBweTNrCis4MzY2MCAzZGNmZTI5ZDljYTU0NDdjMGY4NmQ0MDI5NmQ2ODUwMWVmOGVmOTVjIHB5M2sKKzgzNjYxIGEzZjY0NTM4MWQ2MWNlMmUxZmFlNjJiNDEwNTQyMzU2MzM2OTZiMDIgcmVsZWFzZTI3LW1haW50Cis4MzY2MiBmOWM0ZjA5OWEyNGRkZGY3NzQ5NTkxODFlY2ZjODY0ZTIyN2VhM2E5IHJlbGVhc2UzMS1tYWludAorODM2NjMgNjY2MDFmYjkwZDNkZjY0NDhiMDdmYTgxNGZmOTUzNDEzZmI3N2Y5OCBweTNrCis4MzY2NCA3MWFlNTIzZWJhNWJhZGRmN2I4MWE4YmNhOGI3NzMwZTA1YzY0ZWJkIHJlbGVhc2UyNy1tYWludAorODM2NjUgNDVkYmEyMmE3NGZjOWEzOWU4MThiYWEwM2M2NDhlNmZmMGU3MjQ0ZSByZWxlYXNlMzEtbWFpbnQKKzgzNjY2IDlkOWE4M2IyNTA0NTc4MWZlYmU3ZDBhY2YxMTczNzc1OGYwMGI5ZjYgcmVsZWFzZTI3LW1haW50Cis4MzY2NyBhZjM2NTVmMmYyNDhjM2QzNDRmMjFlZjc1YTA4ZGE0NDAzMmI5Mjc3IHB5M2sKKzgzNjY4IDMzZTliZTJmYTRkMjM5MWU3NTBhM2E2YzJjMmFmZTk4Yzg3MmQ1NWEgcmVsZWFzZTMxLW1haW50Cis4MzY2OSA2M2UxZDBkYzQ0ZWUwN2ExNmY2OTZlYTg3OGNlNGY1NTkyYTJmZTFlIHJlbGVhc2UyNy1tYWludAorODM2NzAgMzNkMmY0MjQ1NTYxMDMzNmJlMjdiNGFjMDE5Y2YyOTFlMzUwNzM0ZiBweTNrCis4MzY3MSBkYzIwZGY5YzliYTk1ZjBhYzY3OTQ4NjdmYzUyN2NmMjUwZmQ0MDIxIHJlbGVhc2UzMS1tYWludAorODM2NzIgMDNhYTA1ZWJkOWJjNWJiZTk5NGI0MWNjN2U0YmZjZTY4MDI3MmJhNCByZWxlYXNlMjctbWFpbnQKKzgzNjczIDcxYzQzMTVkNDlmMjdmMjE4MWZiYTgxZGZiZTJmY2Y2ODJiMWM0M2EgcHkzaworODM2NzQgZmY0NDU2ZGQ0YTc4Y2E0ZDNhYTMxNmM0MWQ1ODAwMmNlMDIyMmMwMiByZWxlYXNlMzEtbWFpbnQKKzgzNjc1IDI4NTBiZDkxOTI3NzBkNGIxZDYyODdkYzhlMjlhNzM3ZThhZTAyODQgcHkzaworODM2NzYgMjNjMDg5ZGM1Y2ZmMGU5MDc0MGU2Zjk1ODI1ZDJlZDc3MmJmNzFmNyByZWxlYXNlMjctbWFpbnQKKzgzNjc3IGQ2YjMzNmRkNjQ1Nzc2ZmUxMGY0Njg5Njk2NmYwYmFkNWUwY2UyOWEgcHkzaworODM2NzggOWQ2OGU3ODQ1ZTQyMDUwOTUwZjQzMTI1YjlmZWM5MzE1MTBkMTNjMiBweTNrCis4MzY3OSBjNGJiZGEyZDRjNDk4NjVkMjZlYjM5ZjljZThkOTc3MGI0YjU3OTBhIHJlbGVhc2UzMS1tYWludAorODM2ODAgMDQyMGY1NDdmM2JmMjQxMTA2MWM2ODFkMzgwNTI2Y2NmY2U4MGMzZiByZWxlYXNlMjctbWFpbnQKKzgzNjgxIDM5OGEyNWNkNjEyZGRhYWVkNWNlOWZlYzA0ODE5MjUzNTM0MGNlMjkgcHkzaworODM2ODIgOTcxOWU1ZThhOGFmOTJlYmU4ZTE3NDE1YzA5ZWFiMGI5NTkxZGY2NSByZWxlYXNlMzEtbWFpbnQKKzgzNjgzIGIzM2M4MGY3YWIxNzY2YjVjNzcwMDI4ZWU0ZWRmMjE4ODA3ZTkyM2QgcHkzaworODM2ODQgZjI4MzhlYjFiYjFlZjkwYWY5NTcwN2RhZTg2Y2QxZDRhNjQwNmZjYyByZWxlYXNlMzEtbWFpbnQKKzgzNjg1IDhhOWU5NzYxMjdhYjEzOTc2ZjcxMjNmMDI0ZDE3NjhiZDAxNjVmNmMgcmVsZWFzZTI3LW1haW50Cis4MzY4NiAzNzc1YmY4Mjk5YjMxMzU2ZmI4Yzc5YmYyMTMyY2EyMDUxYTVhY2FiIHJlbGVhc2UyNi1tYWludAorODM2ODcgZjQzZjZkMTczMDc2ZTlhYjVhN2U2NzU2NTM4N2I0ZTE0MDM0OWZlNiByZWxlYXNlMjYtbWFpbnQKKzgzNjg4IGNmOWZlYTIyYzNhOWUxNjFmOWMyYWNlNjI0MWMyNDMyZmY0OGIzM2EgcmVsZWFzZTI2LW1haW50Cis4MzY4OSBkNjg2ZjMwMzMxNzRhOTMwMjVlYmVmNDA2OTg5MjU5MTkyYTFkNzI5IHJlbGVhc2UzMS1tYWludAorODM2OTAgMjBkNzNmZWM5ZjYyMzAxZGQyNDNkYWRiM2YwM2FjZTI4ZGEwNjUwYSBweTNrCis4MzY5MSBjMWRjOWU3OTg2YTJhOGUxMDcwZWM3YmVlNzQ4NTIwZmViZWYzODJlIHJlbGVhc2UyNi1tYWludAorODM2OTIgNWE3M2RkMTViZTA4NGJlNWQ4MTIyZWYyYTgyZGVmZDdjYjY5NzhjZCByZWxlYXNlMjYtbWFpbnQKKzgzNjk0IDIxYTljOTQwMTEwZDI2NWUzZDYzNTZjN2ZiODczNzI4MzVjOWUyYTAgcmVsZWFzZTMxLW1haW50Cis4MzY5NSBmY2EzYzlmYjVhMWI2M2MyNDU3MTU4M2QzNjZjOGJkNWUxZmM3NjU0IHJlbGVhc2UyNy1tYWludAorODM2OTYgYmY2OTUwOTYyNmZmOTU0YTFjY2IyMTI0OGU0YzY3OTU0MDMyMjU2MCBweTNrCis4MzY5NyA2ZTc5NWVjMzhlODAwODI4NTBjMmM5YmExNjFiZGE4N2E2Y2U3NDU2IHJlbGVhc2UzMS1tYWludAorODM2OTggYWYzOWUyNTVmZWFkMDU2YWQzMDEyYmJjNzZkNDYwNDUzM2I1MDdhNSBweTNrCis4MzY5OSBmMGVjYTc0ZjAwZTE0YjJkZjIyNThhOTgyNzA3NmVkNGVhNjkxNmMwIHB5M2sKKzgzNzAwIDE0ODlmMzk5YWJhMWU3MWUwNmExZmY0MzZkNjFiNjM5Mjg0NDAxYWQgcmVsZWFzZTI3LW1haW50Cis4MzcwMSBmNGM5ZjZmMWZlNzZhNjJlM2E2YjBiNzg3NmM2YzYyYzAyOGU4MTkzIHB5M2sKKzgzNzAyIDkxNWIwMjhiOTU0ZDc1YzNhZDgzYWE5MjY0ZTMzZThmM2UyZGVhZDcgcmVsZWFzZTMxLW1haW50Cis4MzcwMyA1ODMzNDM1Nzg3MzJlMmViMzRkODNlYzk0YzBhYmYwNDhmYWVmZjM4IHJlbGVhc2UyNy1tYWludAorODM3MDQgYjNmZGQ0NDVlMDM3OWQ3MzE0NDVlNTJkY2NmODU3ZmE5YzkwMjYwZCByZWxlYXNlMjYtbWFpbnQKKzgzNzA1IDg5ODkzYTAwMjI3M2VlYzU1OWUyMzdlN2E5ZjZmNjgwMzk1Njc2ODMgcHkzaworODM3MDYgYmE3MzUzMTQ3NTA3Nzc4NmNmOGZjY2FiZGExNTZhZGQyYTBmMjhjYiByZWxlYXNlMzEtbWFpbnQKKzgzNzA3IDRjNGQ4YWRlOWRiYWExNmM1MzNhMWY2OTJhZDgwMmQwYjVjZDdkOTcgcHkzaworODM3MDggZjU5ODQyM2E0NjIxNjlmNzMxMjAwZGRkZDI2OGY0MTgxNDVhMzk4YiBweTNrCis4MzcwOSBlNjg4NjM1OTcwNjEzZjUxYjI1Njg3NjUzODYzZWIyNDEwNDI5NWYxIHB5M2sKKzgzNzEwIDc3MTljYzdlY2Y0NTQ2YWFkMmYwM2I4YTdmM2RlN2Q1ZDYzNzE4ZmUgcmVsZWFzZTMxLW1haW50Cis4MzcxMSBlNWYxMjU4Y2ZjNTg5NWYxMDY5OGYxYmU0ZjA4MzdkOTAwY2I1ZDAzIHJlbGVhc2UyNy1tYWludAorODM3MTIgNmMxMmIxNzE3OTJlMjUwZjhlNzViZGY0MGZkZWY0N2U3ZjE1YzhlZCBweTNrCis4MzcxMyA1OTMxMTEyZWFiZTc3ZmQxMDg3ZjFmYzZhZDczZDM0M2EzZDJjNzk0IHB5M2sKKzgzNzE0IDcxNmU2MDE1NzBkYTFjNTE5YTQ5MjQ4ZjYzMDQyZjNlNDJiNmIyYWIgcHkzaworODM3MTUgNDg1YzA1NGM5YWExNjUxNTBjYzRhMGRmMGNmNDIxMjBjOTcxNDNlMyBweTNrCis4MzcxNiA3MDQyZmE1MzllN2M4MTU0Y2JiYzAwZGJiZTk2ZTU4ZDgxOWVlNGYxIHJlbGVhc2UzMS1tYWludAorODM3MTcgYzVhMjgyNzk3ZDVlMzUyZWRkMDMwOGJmMWY0Njg0M2JjNWYwZmVjMCByZWxlYXNlMjctbWFpbnQKKzgzNzE4IDBlNDUyOWQ3MzNhYzQxYTFjZDNjMzFmNDg5NGZiZjI0YjVkMmM5MDkgcmVsZWFzZTI2LW1haW50Cis4MzcxOSA1NzZiNzY1ODQ0YWY5MmRhNTMzNmNhMTVkNDk3NzFmOTgxM2Y1OWM5IHB5M2sKKzgzNzIwIGIzOTg0NmJjN2JhNTU2N2UzZjRhN2JkZTNhNmE0MzdiODNkZDZlZjYgcmVsZWFzZTI2LW1haW50Cis4MzcyMSBjYjM0Y2Q2MzAwMDAyMDBhMzljZmQyNmNkNTk2MTg1ZjVkYjFhMDgyIHJlbGVhc2UyNi1tYWludAorODM3MjIgZmQ3ZjczZTEyNTY4MDBjNzA3MTZiZTY0YTk1ODE0NTczZjc4Yjg2MCBweTNrCis4MzcyMyA4MzA0M2MxNTI1NjY4MWU2ZWE1Y2U4NWZkMGU0YzMyNjU2ODVmYWEwIHJlbGVhc2UzMS1tYWludAorODM3MjQgOWRlNTZjNDMxN2M5NDNlMGE5MGEzMWYwNDQxMjQxNDMyYzA1YmQxNyByZWxlYXNlMzEtbWFpbnQKKzgzNzI1IGI0YTUzMzJkMmJjYWNjYTgyMmVmYzY3ZjMxNWU5MjMyYTY0YTk4MDYgcmVsZWFzZTI3LW1haW50Cis4MzcyNiAyZDg4Y2E2NGE5MGJjMWQxOGU3OGFhZWRjZmJhMzAzYWM5MjA2ZGUyIHB5M2sKKzgzNzI3IDgyODIyN2EwMDUzODk4YmFlNDI3YTMyMjVkOWM5MGJkMjhlMTE3MDUgcHkzaworODM3MjggMzVmZWU5MjExZjNiNTg1YzlkYTU1OTBmOTNhYTE5MmZkY2YzMTU5NiByZWxlYXNlMjctbWFpbnQKKzgzNzI5IDhmNGY0NjhmZTI5ZTA4YWZjNjFiZDRlYTYxOTk4NGIzNmQ2YTc2YjEgcHkzaworODM3MzAgOWM3MDQ2ZmQ0ZDY2NzIwOTdiYzA1MDlkNDdmZDZhYjNjOGViMjY2MyByZWxlYXNlMzEtbWFpbnQKKzgzNzMxIGNhN2VkOTQxYmNiOTM0NDEzZWRjNGMzNDY5M2FhNjM0MWQxYWRkZGUgcHkzaworODM3MzIgY2E2ZDZlZDIzYjIzOGI3OTY3M2IwNGJhNGY0ODY3NGNhMTJhMmU1OSBweTNrCis4MzczMyA5NWZkNGZjMjdiOWJiNWVjYzkyNDI1ZThmMjI1ODNkMzQ4ZWYzM2YyIHJlbGVhc2UzMS1tYWludAorODM3MzQgNTZhYjllMTExYzFjMGY1YjczOTlhNzZhMTIxZGE3NzgyODJiMTRjOSByZWxlYXNlMjctbWFpbnQKKzgzNzM1IDM0NzRkZGYxZWJmZTRhMzg0MWIzZTljYWUwYzMzNzVhM2M1OTIzZjkgcHkzaworODM3MzYgZWFmZTA3ZDQwZWI3MzU5ZTA3YjE5NDBlOWM5ZmM2OGMzMzJkOTlmYiBweTNrCis4MzczNyBjMTVhY2QxZTkxNmIzNTA0ZjQ3YjAwODFlOGYxMTQ2ZThkNWRjY2Y1IHJlbGVhc2UyNy1tYWludAorODM3MzggYTE4NWNhZWRmMzJjZmVkZGI4NDE4ZDFmMTkzMWQ3MzAxZDJmOTlmYyByZWxlYXNlMjYtbWFpbnQKKzgzNzM5IDM1YmQ1N2QzZDIzMmNkYmQzNjFkN2Q3OTFmYTZhNzQ3OWNjOTBjNjMgcmVsZWFzZTI3LW1haW50Cis4Mzc0MSA4MTAwMDE3OTM5ZjQ5OWM3Zjg1NmEzNTc4N2Y0MDIwZWM5ZmMyNzIyIHB5M2sKKzgzNzQyIDYzMzlhN2IzMjQ1Y2NjM2VmYWZlNjcyMTM2NTlmZjJmMzFlODFhNzcgcHkzaworODM3NDMgNjc2NTJhN2YwYWVlMjM3ODdhMmRhMTExYmFiOTIxMmYzZWVlMDBjZSByZWxlYXNlMjYtbWFpbnQKKzgzNzQ0IGMxNjgwM2JiZDc5MGQ3MzJhOTk4NWU5Mzg4Yzg4MzBmODNhZTFhYzggcHkzaworODM3NDUgNzJmMDA2NzA0ZmJkYzgxNDUyZjQ1NzJhZTAzMmNlYWFmMTcyN2RjYSBweTNrCis4Mzc0NiAzODRkMjE4OWE5NmE5MDFmNjlhMWU2NjAxYmU0ZDRjM2I0MmJmYWJmIHJlbGVhc2UyNy1tYWludAorODM3NDcgMjkyMjZjMDhlNTQ3ZDg4ODBhNDRjZTM4YjU2MWY2NmM2OWI2ZDYzOSBweTNrCis4Mzc0OCBhMDM3MzlhZjlkMzg1ZWIyYjVmOTIxYTU3MmY4MGNlNzkyOTU2ZDVlIHJlbGVhc2UzMS1tYWludAorODM3NDkgZmNiN2UzNTkyNGU2MzRmY2ViMzFkMmI4MjQ2ZGQ2OWI4NTg2N2Y5MSByZWxlYXNlMjctbWFpbnQKKzgzNzUwIGJiMmEzMTVkNmEwMzUwMDJkMTNhOTkyM2E0MmI4M2ZhZjFmYjkxYTkgcHkzaworODM3NTEgZjgwNmZiM2QxZjI3NzYzOWI3NTg1YzI5OTMzY2E5YWMxYWY4MWI2YyBweTNrCis4Mzc1MiA4OGNmOWEwZWQxMTgxM2Y1OTg2MDliNDVhYTdkMWQ5Yjk1YmNhYjhiIHB5M2sKKzgzNzUzIDZiMjhiODhmNmM0ZTg4NWY0YzhmMTJmYWFkY2M0ZTMyMjIwYTVmMzAgcmVsZWFzZTMxLW1haW50Cis4Mzc1NCBiOTA2ZTllNWYyYTdmYTkzODQwYjVjNmU1MTQ0ZDI5ZTNlMTFjYTU3IHJlbGVhc2UyNy1tYWludAorODM3NTUgNzZmODQwMmNhN2YzNTQwZWYwMzI0Y2ZmZWI4YTFmOGRkNzE1Yzc5YyBweTNrCis4Mzc1NiBmYTYzMTRiMTQxZGM0MmQyN2E3OTA1OGRhOGVlNzQ5N2UzZTcyZjliIHJlbGVhc2UzMS1tYWludAorODM3NTcgMGY4YTRmY2ZkZDFlNTk0YzNlMDQ0YTZmNTk2NzljZTZhMzdjYzA2YiByZWxlYXNlMjctbWFpbnQKKzgzNzU4IGIwNjIyMmYxNTVmZjVlZDViMzVhNjcwZTU4MzVhNTJmZmUzMjdhMzEgcHkzaworODM3NTkgYWQyOTJmY2U3OWY5ZWNiMzYyZmYwZmI0M2ZmYzFmNzg0ZTcxMmM3NSBweTNrCis4Mzc2MCAyYzEwNTEwYTFhZWZjNTU1NWRjY2ExM2YwYTliY2RkMTEwNGJkMzNkIHJlbGVhc2UyNy1tYWludAorODM3NjEgYmIyNjA4ZjczZWI3YzZkMzQ4MmY4ZDk0Y2NmZDM3NmYwOTdiNDBmOSByZWxlYXNlMzEtbWFpbnQKKzgzNzYyIGY3YmQyOGIzYzY4Mzk0ZDFkNmM5YzAzOTk4YWIwNTBmZTQ0MTU4NGEgcHkzaworODM3NjMgOGNlNjkwOTY5NmQ0MmYxNzYyODE5OThjODRlMTMwMDVkYThmYWMzMyBweTNrCis4Mzc2NCBkMTRlMWU3MjQ4YmEzZjZmYWVjOTBhMGI2MDY4MjAwYjQwZjUyZDIzIHJlbGVhc2UzMS1tYWludAorODM3NjUgMzA3NWE3ZTg1YzE4ODE0MzZlZDU2ODIwMDQ1YzBmODQ2YzliZjYwNiByZWxlYXNlMjctbWFpbnQKKzgzNzY2IDc2ODY0YWM1YjY3ZDAxMjYzZGVmODFkMjcwZTIwNjRiMDEyOTBiYjYgcmVsZWFzZTMxLW1haW50Cis4Mzc2NyAwNmJiZGRhMTMyZjM1NDk1OGNhZTc1ODg1MDY2OWU3NDc0NTQzOTJhIHB5M2sKKzgzNzY4IDQzZTZiZjg2YzM3ZjJjMzA0OGQ0ZTQwNTZiZjVkNmVjNzliMjdlMGYgcHkzaworODM3NjkgMDhhZWQwMGZiZWMzMzlhMGQ3ZjNjMWZmNTUxNzM5ZTM0YTAyZTM0MCByZWxlYXNlMjctbWFpbnQKKzgzNzcwIDI2MGFiZTljZWZhYzI4YTIzOGMyYTg4Y2ZhOGVmZDlkNTgwZmIxNDAgcHkzaworODM3NzEgN2JjZjYyNTVkZTJmZmYzZDJiOTkxZTVmNzAzOTc4ZWEwYTQ5ZjBmYyBweTNrCis4Mzc3MiAzOTRlNDhjNTE2YzRhM2IxMjM2NmViODc3YjlkMDg5MmE4YzQ0ODcyIHJlbGVhc2UzMS1tYWludAorODM3NzMgNDBiNDgzNzgzM2E4YjUzMmZmMzc0NThhN2FhNTIxMmVmZDA2ZTAwYyByZWxlYXNlMjctbWFpbnQKKzgzNzc0IDlkMWM2NWY4MzIzZWZjMmRlZjIyMzNmNjU1OTIzZmMwZTM3OWY0NmIgcHkzaworODM3NzUgMDYzMjc5YzZmYzE2MGUwYWQzOTNiZTFjOGY1YzBkMjA1ZThhMmMzYSBweTNrCis4Mzc3NiBiY2NjODRlMDRhMmNhZTczMDk0YTRkM2M4YjBmYTgxNGVlZjQ5NzIzIHB5M2sKKzgzNzc3IGVjMzIxN2E5ZTUyMTZkZmIyZWYzZDcyZTIwYTA1M2VmMTBhOWIzOGQgcHkzaworODM3NzggNzYwODUzMmY5MzNhNDZlYWY0MmVmMDdiOGQ2NDA3NWZjNjNiYjdhMCBweTNrCis4Mzc3OSAyNzVhY2ZjY2NjY2IwOGI1NzU5M2ZjNTdjZWI0NDQxOWU0MzhiZjM5IHB5M2sKKzgzNzgwIDliODAyYjZiNDM5NTA5ZDNhZWViNzU0YjFiOWQ4NjdmMGM4NDY1NTYgcHkzaworODM3ODEgZjI3YjI3YzgyZDhmZjQ4YmIzYWRjNTA1NTIzZmEwNTU3OWVlZWJjYiByZWxlYXNlMzEtbWFpbnQKKzgzNzgyIDcxNzVkMTgwNWNjMGRmNjBhZWMxYzQ2N2Y5ZGVmMzY0MWY4OWQ4MmIgcmVsZWFzZTI3LW1haW50Cis4Mzc4MyAwZWQ2NjVlOGExMTU0MjliZmNmNWFkMjNkYjZkNDYyNTM4ZDcxYWE4IHB5M2sKKzgzNzg0IDI4MTM2YWYwMGNjYWI2ZDQ3YzljZWJiMTVlZWJhZTNmMzkxNjU2NDQgcHkzaworODM3ODUgNGUzMjU4ODk0ODg5ZmJkYWFlZjJjMDVhNDllMjFjMzczMmZjMmU3NyBweTNrCis4Mzc4NiBjNmQ4OTI2Yzk5ZGY1ODUwYjczMjU0ZmMwYmQ3NmJjNGVjNGZmMDE0IHJlbGVhc2UzMS1tYWludAorODM3ODcgODdmMzMzMDM4MDM1ZTc4YzFmOTA5YTk0ZjI5MGI2Y2Y2MGY2MmQzZSByZWxlYXNlMjctbWFpbnQKKzgzNzkyIGMxZDdmN2ZlNDdhMDU3MDcwN2U1Njk2NGIxMWUwNjcxNDRmNDMwMjMgcHkzaworODM3OTMgZmIwNmZhYjE2YTNmZTYwNWI5MmEzOWZkMDIxMmE5Y2NmODBmZjc2YyByZWxlYXNlMzEtbWFpbnQKKzgzNzk0IGFlOGMyNWY5NGFkZjRkMzUxOWRkZThkMTg4MTQ3MWUxYzYxMjViODQgcmVsZWFzZTI3LW1haW50Cis4Mzc5NSBkOTVmYmM0YWVlN2MzYjhlNjEyMjFhN2M5OWY5OTE4MTExNzA0ZjQzIHB5M2sKKzgzNzk2IDlkM2JhMGQ2NjVhNjUwOGM0MTdiNTM1OGQ2ZWRiM2E4ZWRlMWMwYzEgcmVsZWFzZTMxLW1haW50Cis4MzgwMiAyNGIzZGVkNTE4MjU0YzNhZjdiMzM3MmM3MjkxNjhhYWEwMzhiZjRlIHB5M2sKKzgzODA0IDRlZmVkNjJlYWMzYTg2YzFlZGY2MjQ1NTFkZTI2YmYzMTU5ODdiYTMgcHkzaworODM4MDUgNjAzYzM1NTA4YjM2M2RjM2JiZTVjZWU3N2Y4MTZlYzgwNDBkZDA4MCByZWxlYXNlMzEtbWFpbnQKKzgzODA2IDcwOTllYzBiY2JkMmM5OTI4YjI2MDhkZDE3OTlmY2M3ZjJmNzcyYWEgcmVsZWFzZTI3LW1haW50Cis4MzgwNyAxNTgzOWNhNDNkOTZhMzVlM2YxODlmMTU2YTQ2MTI2OWEyYjZkYzVmIHJlbGVhc2UzMS1tYWludAorODM4MDggYmJlMjIyM2UzNzUwNmEwNGI1NmI4ODg4NTQ5NGVlZGM1MmMyM2JhNCBweTNrCis4MzgwOSA0YmNkNTM2MTdhNjU2YmVkNzM1MGE2ODM4YTRiNjE2YzcwNDJjODZjIHB5M2sKKzgzODEwIDI4ZmVmOWU3YzNiYjczMmYxZjE2MDk2OGEwZTZkNTM5ODgwYTkwNTIgcmVsZWFzZTMxLW1haW50Cis4MzgxMiA5MjQ3MzhhYWI3MGZkZDY5ZGVkMTUwYTI5NmJjOTc2MTMxYjhiZWU1IHB5M2stZHRvYQorODM4MTMgOGMyMTBlNjFjYTc3NTQxMGY3MmY4NGRhMTNlNjhjNjFjNjliNmE2OSBweTNrLWR0b2EKKzgzODE0IGJmZmQxZTI4NTRiM2QzNmIxNTM1ODg4OTc3MDA3M2Q3NTEwZjExMTYgcHkzay1kdG9hCis4MzgxNSBhMGJkY2RkMGYwODY0MzdjODMxY2ZiMTgyNDA3ZTg1YTRlOTdkYTcyIHJlbGVhc2UyNy1tYWludAorODM4MTYgZTQxY2E2NjcyZjgyMmUwOTZjZTZlNjk4NWRkMjBjMzZjNTUwY2M4YSBweTNrCis4MzgxNyBmNGQ5MmM2ZDRkNDJhNTNkMDYwYTczZTgzYWJmOWIzYmZkMGYxODM4IHJlbGVhc2UzMS1tYWludAorODM4MTggYmYzMzU5YjdlZDJlZDVhN2I3OWJjMjg0NTZhZTMwYmI0NDI1ZjNkZSBweTNrCis4MzgxOSBlNjFhMDk0YjQ4MThkNDU5MzE3ZmUzYzYyMGI1Y2VkZWFmNTJlOWY3IHJlbGVhc2UzMS1tYWludAorODM4MjAgNGIyNGI3YTQyMGM5MjdmZTUyYWYwMmQzNGFjMDA0OWRlMTc0MTI3ZCByZWxlYXNlMjctbWFpbnQKKzgzODIxIDAxNzg3NTYzZTJjYjM0NGZlOTM0MTczYTQwN2JlNWM5YjIyNzZmYjQgcHkzay1kdG9hCis4MzgyMiAwMzcwYzExZmQyMWRmM2Q0YTk0NGY3MGFiZGZmMzJkYjAzNDYyNWRlIHB5M2sKKzgzODIzIGI2ZmViNjdhMDVmMWYxNmZhYjdiM2U1MWZiNmM3NWNlNGFmMmQ3YmEgcmVsZWFzZTMxLW1haW50Cis4MzgyNCBlMTY1NjA1ODVlMzVjNmIzNjRlMzNmZTYwMzE0ZjEwOTk0Yjk5NWQwIHJlbGVhc2UyNy1tYWludAorODM4MjUgNWVhNzA3ZDJjYWE4OGU5ZmYzMWI2NTM0ZTFmZmVlODBiZDgyYWY2OSBpbXBvcnRfdW5pY29kZQorODM4MjYgYmUxNTlmM2RiNWQ2YWUwZGUzMTYyZGJkMjUwZDdiNjQyNmFmMWIyOCBpbXBvcnRfdW5pY29kZQorODM4MjggMTA4NmRhZDUwYzc0ODA5MjBkODMwZTFlYzU4NTc2Zjc1ZjM3YTQ1OSBweTNrCis4MzgyOSA2YjIxODlkOGU4YzQ0ZDJmNDIyMGJhMWNiY2Y1NmRjY2VjNjE3Zjk2IHB5M2sKKzgzODMwIGI0ZjU0NjM5YjdiMTk1Y2Y5Yjc4MDUxOTg3YWJkYjJiZmJiNDQxN2QgcHkzaworODM4MzEgOTgzZjExMGEyMjRlMmE0NWViNTk4M2Y5Zjc1ZjBkZTM4ZWZkZWJiMSByZWxlYXNlMzEtbWFpbnQKKzgzODMyIGNjNWEyNDZiMmRhMWJiODJlOGYxN2Y0NDY4ZDY4MTNkYjQ5MTBlYjIgcmVsZWFzZTI3LW1haW50Cis4MzgzMyA3NWViZTZjYzgwODMzNTFhNTVmYjFlNzY5M2NmYjJmZDc1NGQ5MzM4IHB5M2sKKzgzODM0IGM1MmY1ZGY1MDQ0ODg5NzVkOWFkOWEyYTkzMGU2MTg2YWNlNDUzYzYgcHkzaworODM4MzUgODY4M2FlYTRiNzJlZjhkYzc5OTFhYjNkOGY4NDE1NzA4MWZkY2M3OSBweTNrCis4MzgzNiBlMTNlYTgzZTJlZGIzZGUyMmU3MmRlNTM3NGUyNzYxZWFmYTQ1YmM3IHJlbGVhc2UyNy1tYWludAorODM4MzcgNDBkMTFiODEzOWRhNTBiMDQ3ZmViMmY1ZjgxOTBhOTU2MmY0ZmQ1ZiBweTNrCis4MzgzOCA1MTVlMGQ3MDU1NDNmZTU3NTk3ZTdhMjk0NDBlNmU2OWRlMTk5YWY5IHB5M2sKKzgzODM5IDA4ZTA1ZDQyNGQ5N2E2MjkzMDM4ZGQ1ZWEzZmQ4MGNjNTQwMDBkOGUgcHkzaworODM4NDAgNjBhYzQxYWU3ZjMxMjBkMDU2Y2Q2MGQ5YmIxNDkzZDQ0MzZiNTE0MCByZWxlYXNlMjctbWFpbnQKKzgzODQxIGI5ZDE5ODAyMTc0NTg5NDI4NzZlMjc3MWU0ZmNmZmQwODNkMjYyNWMgcHkzaworODM4NDIgZGYyNTg5MTVmNTJmY2I0YWFmMzZjZjBiNTk2ZDdkOTE3MTk4Zjg3ZCByZWxlYXNlMzEtbWFpbnQKKzgzODQzIDVlN2YxNWYyYzBiZTZjY2ViMWYzOWFhMzQ1YTJiZjgwNjE0ZGQ5YmMgcmVsZWFzZTI3LW1haW50Cis4Mzg0NSA4YjM3OTZjYzMwOWU4Zjk4MDU5ZWIyY2I0NmZlOGNjNjliYWI2YTg3IHB5M2sKKzgzODQ2IGNjMGVlNmJiNWU5Yjg3MWVkZmQxOTI4YjA1YTc3MTk4NDY0NGQ2NjAgcHkzaworODM4NDcgZmVmZmMxYTI1OTljNzNlNzU5YzBlODUxMTY0NTc0MTA5MmJkNGI0YyByZWxlYXNlMjctbWFpbnQKKzgzODQ4IDc2YmE0MWI3N2Y1Mzg5Mzk1Mjg0OWY3MTM2MWU5ZDZhMzI4MmM3YzkgcmVsZWFzZTI3LW1haW50Cis4Mzg0OSA0NDYxOWE1NjZiNmI2MzYxM2Y5YmE5ZjBjMGQyMDBiODFmN2FhMDg4IHJlbGVhc2UzMS1tYWludAorODM4NTAgZmE4NjIyMjY1NjA5MTIwNzFmNjU3YzNkNjJiNzc0ZDlhOThhNTY3NSByZWxlYXNlMzEtbWFpbnQKKzgzODUxIDU3ZTYzMWYwODhkNzM2MDU0MzI4NDdiM2E0NGY5MTMxODg1ZjBiNTQgcHkzaworODM4NTQgNGNhNDk3ZjQ4MTljZmRhZDgyNjcwMWJiYTY3ZDFlM2U1MWFjMmU3ZiBweTNrCis4Mzg1NSA3N2M2ZjYwYTFiMjQwYjUwOWRkY2NiNGEyOWUwY2EzNmVlNWZkN2Y3IHJlbGVhc2UzMS1tYWludAorODM4NTYgNTVjNzBlNzljNjg4ODY3YzExZDcyODhjZjA0NDAyYWQ2MjM2NTllOCByZWxlYXNlMjctbWFpbnQKKzgzODU4IDU1Mzk3NTMzZGE1MThhMDNiYjQzYzhhM2IyZDUzN2YxMDI4MjhmNDQgcmVsZWFzZTI3LW1haW50Cis4Mzg1OSBlYjVhYTkxZjBlMTZmNmRkYjE0NzQ5OTM3ZTQyOGJlN2Y2M2VkZmUzIHB5M2sKKzgzODYwIDdkNDQyNWUzMDhmN2I4NTI2NmViYjIwM2E4ZjQ2MjM2ZTRkNThmYWQgcHkzaworODM4NjEgMWJkMzUzNDEzNmEwMzY0MzU3M2VhOWJkNDQ3ZDVhNjk4NTQ4NWY3OCBweTNrCis4Mzg2MiAxYWQ1OTIyYWVjNDUzZTQ3MDMxN2YxZjBhZjFhNzQwMjc3OWRjZjBkIHB5M2sKKzgzODYzIGQyMjgwNjgxOGZlM2E1M2RiNDAzZTJiMjIxNDJmZDYxNGVmZGNhNmYgcHkzaworODM4NjQgZWEzYTJkMWJkZWQyYTA1YjVkZDA3MzM1ZGRmMWJjZDNmYWQzZmMyMCBweTNrCis4Mzg2NSA4ZDZiNGZmYzA1MTJhYTQ3MTcxOGFjNWMyNjljNTUyNzU4ZTYwYjZmIGltcG9ydF91bmljb2RlCis4Mzg2NiAwMjEzNTE1OTVmYWMzNmIyMTdmZDIyYWUxNjg5ZDYyNzE1YTZmOGVmIGltcG9ydF91bmljb2RlCis4Mzg2NyAwZGEzYjU5YzNkMzgwNjE3Y2I1YjZiZjU0ODU1YWY5MzBmZGQ5YzEyIGltcG9ydF91bmljb2RlCis4Mzg2OCBmODEyYjc5NjQxMTk5YTBlOTZkOTBlZTdmZjljOWNmNDkzMzRiOTFhIGltcG9ydF91bmljb2RlCis4Mzg2OSAzZjhjZWY4MzdmMDczYzJiYzM3Nzk3MDUxYjJhNWZkYjk2ZWYxNGNkIHB5M2sKKzgzODcwIDEwYzk1YzBmMzRkMzU1YmU5ZjVkNjk3ZTk4NzQ1MzliMmM4YzZlZmQgcHkzaworODM4NzEgNTIzNTRjYjI5NjQ0OTI2YTE5NTlkZDJhMmI0MjQxNDlhZDI4YmJjZiBweTNrCis4Mzg3MiA5YzQ0NWJhZDM1YjA4NmQwNDE3MzEzMGE1Zjk4NGM1YjgzNDg1Y2Y3IHB5M2sKKzgzODczIDdmNWUxMTVkNzZkZmFkM2Y2NDg4NTNjZDJmMTdhZWZjMmFmNGRiODYgcmVsZWFzZTI3LW1haW50Cis4Mzg3NCBhMTNiZGIyYjgzOThmYmYxOTFkMzIxMmNjMjIxZDk4OTdjMTk5NGJjIHB5M2sKKzgzODc1IDhjZTFkZjM1MjhiNzZmY2IyYWVlMmI3MGVlNzBlOWFhOWUyOTQ0OGMgcHkzaworODM4NzYgYzc5OTVlOWJjMmUzNmQ5ZjFhMjE2NzE1MDJjNTcwY2ZmZTczYmRhYSBweTNrCis4Mzg3NyA4YjkzY2YzM2I5ODdjODc3OWRlY2Y1ODAxYmExNWM1MWFlYTk3ODZkIHB5M2sKKzgzODc4IDY4OGVkYmJiZTY1ODE3NWU2YjhmZTM4MDU3ZTdmYTdjNjBiZjE5OGYgcHkzaworODM4NzkgNWUzYzYxY2I3MDE0MWQzNjMwZDNlZTBiZDIyNmRkODJmMzBkMjA4MyByZWxlYXNlMjctbWFpbnQKKzgzODgwIDk0NjhkMTMwNDI4NDI1ZDI2NTIxOTA4MmM0ZmU5ZWRmYTZlOTIwMWEgcHkzaworODM4ODEgM2FlOTVmMjA3NjA2MzQ0ZjQyM2I1NWVmYjI4YjU4ODI3ZjYxYWVjNCByZWxlYXNlMzEtbWFpbnQKKzgzODgyIDdiN2ViZjU1ODg5NDg1NDczOGM0MTgzNGQxMzRlNWQyOWRhZjg3N2EgcHkzaworODM4ODMgMDAxNTI5ZDY0N2ZlNDlkYWFkMTQwMWZmMzIzNTUzZmQ1ZThiZDY1MiByZWxlYXNlMzEtbWFpbnQKKzgzODg1IDNhNGJlOWQyNWE1ZjgzMDYwY2QyN2Q4MWU5NjdkZTI3MjhhMjgwNjggcHkzaworODM4ODYgNWFlMzkwYWM2YzYxZDhhZTlhNmQ5N2E0NDcwZDg1YTc5NTg3NTMwMyBweTNrCis4Mzg4NyA1YzBkNWRlNTZmZGY5YWFiZTg5NTAxN2Q4NWZlZTYwMWZlMWU3OTI5IHB5M2sKKzgzODg4IGRlMDgwOTc3MmQ3ZTcwM2UwZDA5MTE4NjY5YTQxZjE5MWZjNjNmY2UgcHkzaworODM4ODkgOGJhMDljZGI2ZmM0OGIyYWRmMGVjNmJjNzZjMTgyMWU4OTNhOGNmNyBweTNrCis4Mzg5MCA3OTVlYjEyNDAzYjk0NDIwZGI0ODhjNDAzOGY2ZGRlZWQyYTQyNjZhIHB5M2sKKzgzODkxIGRmYmJlN2IzMGU5MDFiMzZmYTQ1MTg0ODliMzk3Njk3MjdhMTZiOGQgcHkzaworODM4OTIgZTE2MDc5YzZhNDhmNTgzY2QzNjhkOGY0ZjA4MDZmZmNmNzgxNmVkOCBweTNrCis4Mzg5MyBmMTYyN2NmY2M4OTA1MGI2Zjc1MzY5YTlmNDMxZDU2M2Q5ZGVkYTBjIHJlbGVhc2UyNy1tYWludAorODM4OTQgYzM4ZjNiOTY5YjRhZTUwNDQ0Y2RiNWI2NmM3MGJmYjM3ZTk3MzM2NyBweTNrCis4Mzg5NSA3ZGMzN2FlMTc1ZmNkNTcwN2U3NGU2MGE1MWUwNjRjZmY5NzQ5ZDJjIHB5M2sKKzgzODk3IDZmYjAzMTAzN2YyOWI1MGJiOTRkMTcwMjMwOWNmYTcyMzJiOWFhNjYgcHkzay1kdG9hCis4Mzg5OCAzNTVkNzI3MzczNjRmYmRkODU5OWU4ZjMzNzNhNDg4Y2Y1MjczYmZjIHB5M2stZHRvYQorODM5MDAgNzJkMDUwNGU2NDg5NjA0MjRmYjJjYjUxZGNiOGRmYjc5MWJkNGJiOCBweTNrCis4MzkwMSBjODlhZDZmOWNkZGMxODIyM2NlNGM3MTU4NGNlY2E0OTE5OWQxMjllIHB5M2sKKzgzOTAyIDk1MTE3YWFiOWE4NmRmNzJkMmYxOWJjMWQxZmE4NjdkNTQ3YTBmYTMgcmVsZWFzZTI3LW1haW50Cis4MzkwMyA1MDM4OGE4M2VjM2Y3ZTBiMmM5NDZiYzJiMmU0NGY4Yzk4NGNhYmJjIHJlbGVhc2UzMS1tYWludAorODM5MDQgNTBmOGY1MjQ3YzgxMGFlYjgwMThlNGNhMzdhNDRlMDViNjc5MjZjOSByZWxlYXNlMzEtbWFpbnQKKzgzOTA1IDBhZTcwNmE3MWEzYTUwZGMxZDE1Yjk1ZDBlOTU1NGJkMDIyMTdiODYgcmVsZWFzZTI3LW1haW50Cis4MzkwNiBhNTZkOGE4MGI4ODM5ZTU1OTdkZmQzMDVhNzY0MjFhNjM4OWIzMTE5IHJlbGVhc2UyNy1tYWludAorODM5MDcgNDZkNDhkNzE1NDQyZmNiYjgwMmVlZDM5NzU2ZmQzMjA5MjlmYjgyYyByZWxlYXNlMjctbWFpbnQKKzgzOTA4IDYwMDc2ZjI4YzAyM2FjNmVhYTI4ODU4MjM5ZDhiZjdlOWNiZjM2MGQgcHkzaworODM5MDkgYzJlMWRiMzBmNzU2MmZhY2U1MGRhMWE1NDhkZjdkNTZkYjBmNzA0YyByZWxlYXNlMjctbWFpbnQKKzgzOTEwIDMwY2MyN2ViMzU0YWNmNTFjNDZiZGUyZjI3MTA1MTRjZTZiOGYxY2IgYmJ0ZXN0Cis4MzkxMSA5ODUzNjU4YTgzNTViYmZiOGU0Mzg4MzI1NWIxMjAxMjIwNGU3OTg0IGJidGVzdAorODM5MTMgMjlhZjlhYmM3NmNhZGExNTNmYWM3MTg2MmY5MDM0YWYyYjQ4NTFhYSByZWxlYXNlMjYtbWFpbnQKKzgzOTE0IGIxODkyYjdmMTk2NmY0ZWM4YjkzMDdmZmM0OTkxMGU1MTNmMTZmMWQgcmVsZWFzZTI2LW1haW50Cis4MzkxNSA0YzUyM2UxZWYxMGYyYjcyMWY2MDc0YzJiZmM2MTM0MTJjZDNlZjgzIHJlbGVhc2UyNi1tYWludAorODM5MTYgYzM5MTJhYWMxYjczZjYwZjliNmNlOTc3YmMwZTlkZGYyNmY5N2Y4ZCByZWxlYXNlMjctbWFpbnQKKzgzOTE3IDZjZDI5MmM5YzI5NjBlODA5NzUyYzU4MDExYjlhYzRjNjM1YTVmYzEgcmVsZWFzZTI3LW1haW50Cis4MzkxOCAzNzE1NjkwN2YzNTljYjlkYTVhODlhMmM5YWVlNjY4ODUwMDNiMTQ0IHB5M2sKKzgzOTE5IDEwOWJkZTVlNDFiOTQ0ZWYzYWRlOThhYzYxNDhmNmJjMjZlNGE1OGMgcmVsZWFzZTMxLW1haW50Cis4MzkyMCBiNjVkY2U1OTAyYTI4NDdiZmM1MzlhNzVkNDQyZmRjNDlkZjYwYWFiIHJlbGVhc2UyNy1tYWludAorODM5MjEgZmY5NjE0ZWRmM2EwNTQ2ZmM2ZjE1YjlmMmMwNTU4MGZlNmI0MzYyOSBweTNrCis4MzkyMiAxNGZiNjdlN2ZhMDQ2OGMxMDdiNmQxMTg1ZDg0MzAxMzk3ZmIzYzI4IHJlbGVhc2UzMS1tYWludAorODM5MjMgZmE0ODVkY2VhNjEzZTkxNWEzOWUxNDkxNTgyNGJiYzMxZWZjMzI1NiByZWxlYXNlMjctbWFpbnQKKzgzOTI0IGJjZWEzNWEyZDJkMmJkOTVlMTA1ZDhlOGIxMmMxZDUwNDIxZGEyNzQgcmVsZWFzZTI3LW1haW50Cis4MzkyNSAxOWFmMDgyODdjYzc5MjkzZjE2MTQ5NTU5Yjg1MTk4N2NiOTRiMWQwIHJlbGVhc2UyNy1tYWludAorODM5MjYgYWQ2YzhlMjI4NzEyZTRjOTQxYzlmYThjYTUyMWVkODQ0NTI2NGU2ZiByZWxlYXNlMzEtbWFpbnQKKzgzOTI3IGMyZGIyN2FhNmJmMjUwMGJhY2JiYzhmNTM5YzVlNDAwZjNjMDM2OWMgcHkzaworODM5MjggMTMyMmVmM2M0YTZjODI5MmU4MGQ5OWFjZWFlZDRhNDZkY2RhNmE3NyByZWxlYXNlMjctbWFpbnQKKzgzOTI5IGRlYTFkMjY4ZTM0ZWQ2N2YxMzJjZDliMDU4MWQxZDJhNmI1YmEzNTYgcmVsZWFzZTMxLW1haW50Cis4MzkzMCA5ZTAwM2EyNjIwOTMzYzk4NmJiNWYxMzgwYTFhNzhiNzUxOWJmNWZiIHJlbGVhc2UyNy1tYWludAorODM5MzEgNGY3NmNlNjlhZWQwZGMyNzQ0NGJkMzQ1Yjk4MDcxMzk1ZTMyYjYxYyByZWxlYXNlMjctbWFpbnQKKzgzOTMyIDM5MDkyZjg2YjBhZjMyZGVhNWMwYjA5NTBiMWJhMDJjZWUzOTEzM2UgcHkzaworODM5MzMgYTM4NTNiZmEyNTE4MTZkZDU3MWU0YjZjNWQ4YmUyNzhjMTU1ZDA3NiBweTNrCis4MzkzNCAzZDZhMDJmMGEyZDhhN2FlMzc3N2MwNWViOThlNmIxMTRkNTM2MjA5IGltcG9ydF91bmljb2RlCis4MzkzNSA3ZTUyNWUxMjViNzE1ZTM5YTE2NmYzYWJlN2FhZTlhN2QzNGNiMzkwIGltcG9ydF91bmljb2RlCis4MzkzNiA3ZGQ1ZjVjZmExNzk0Njc2NzkzNTRiMmI0MDA1NzQ0MjkyN2MwOTcxIHB5M2sKKzgzOTM3IDBhMWFkOWIxMTQ5NjIyNTVkMjMwNTBlOTA0MTIyZGRkNjMxNjc5NGQgcHkzaworODM5MzggMmNiNTgxNzRhYTdkYTA3MmM1OWQ1NTMxYjRlNmMwOWJlNTY0ZTNiZiByZWxlYXNlMzEtbWFpbnQKKzgzOTM5IDI5ZTIwYmRiMmIxMWFiMGNlMTQ2NzM2NjlmMmEzYmQ1ZDIyNjFkZjUgcHkzaworODM5NDAgNDA1NTZhZTQyNGI3Mzc5ZjRlNGE2MTJmMmM5ZGMyN2Q4ZTkxODAwNCByZWxlYXNlMjYtbWFpbnQKKzgzOTQzIDY4OTY5YjlkYzNiMDYwMDU2Y2RkYTZkYmYwNTI4ZDM1ZjJjMzI5OWQgcHkzaworODM5NDQgNzM2NDk0MDY3MmYwMDQ0NzEzZWVhNDhhYzNmYzQ3MzE3ZWE3MTFmOSBweTNrCis4Mzk0NSA5MzBiMjgwM2M3MTY2YjIyM2NlMTcwZmFlZjRjNDgxYWE2Y2NkNjhlIHJlbGVhc2UzMS1tYWludAorODM5NDYgYzNmZjZlOTEwMDY4YjJmZTg3N2Q1MGRlNWM4ZDBmYmFlZjdmODkwNiByZWxlYXNlMjctbWFpbnQKKzgzOTQ3IDU2MDY2YTU4MjVjYTIwYmNkNTI3NGM0YWQ2OWI4NWU0MDE5Mjc1ZmMgcHkzaworODM5NDggNzZkNDYzYzk5MDA2Mzk2ZGM0MTUxMjMzODFhMWViMjhmM2VhMzY0YSBweTNrCis4Mzk0OSA5MTA4ZTdkY2Q3ZDgwNWU3YmNkMDhkYjFkZDZjNjE1YTA2YTc3NmMwIHB5M2sKKzgzOTUwIGExZGU0NjM5NTY0ZTVhZjFkOWUyZjc0MmRjYmQ4NTljMGQ0MzgxYzAgcmVsZWFzZTI3LW1haW50Cis4Mzk1MSBmMjJlOTUwNTUxYWQyYjg5YzA0OGM0NWQ4MGJhNWJiMDdiZGY1ODI2IHB5M2sKKzgzOTUyIDNmYThmNDFhMTEwM2M5OGNhZjI2OTRiY2E3ZWVhNjIxMTBjYzZmMzEgcmVsZWFzZTMxLW1haW50Cis4Mzk1MyBkMWIwMzVlMjQzNzJiZTAxN2RmZGQ0ZGQyNGQwYjEzNmQ0NzQ5NjVmIHJlbGVhc2UzMS1tYWludAorODM5NTQgM2RiYmNkMzRkNDk0ZTI1OGIwYzlmZTU0MGRiNWJmMjk5MDVlM2VjOCByZWxlYXNlMjctbWFpbnQKKzgzOTU2IDg0OTlhZTVkOTcxOTZhNzJhNWI4NzRiM2NiZjkwYTgzZGE0ZTczNTkgcmVsZWFzZTMxLW1haW50Cis4Mzk1NyBhYjJkOTQ5MzFiMGMxMDVmYTUzYzYwMjM5ZmNiMzliODFkZWQ0M2NiIHJlbGVhc2UyNy1tYWludAorODM5NTggNTlkYjM2M2ZhNTk0NWMxNzkwNzg1NGJmZDAwMjJjZDY0YzdiYTE4NyByZWxlYXNlMjctbWFpbnQKKzgzOTU5IGZkNDYwNmVmYzcwMGFiYjI1NzhkYmY4ODYwMjAxNWZlOTkyNWFmYzggcHkzaworODM5NjAgZjdkOGFhMTBjM2VmYTc2OGE3NWMxNjBhMDQ4MWJiNmY0NGIwZjk5MiBweTNrCis4Mzk2MSBlZDY2YjI0MTcxYWYxMmU4Yjc1NjViZjllOWUwYzVmNGFmOWFhYTg3IHJlbGVhc2UyNy1tYWludAorODM5NjIgNjhjNDhmOGFhNTU1MzgyMzRmZDViYTZjZTMyYmZlOTI3OTMyZjJkZiByZWxlYXNlMzEtbWFpbnQKKzgzOTY0IDUzNDNmNTcxNGZlZWM1MWFkM2NmZTFhN2E1YTY4NDBlMjBjNjIyNzUgcmVsZWFzZTI2LW1haW50Cis4Mzk2NSBiZTgzZDI5M2ExZTlhZjllNjdjODcwNTJmMmQ5Y2U4YTAxMWFiZGVjIHJlbGVhc2UyNi1tYWludAorODM5NjYgMDA1NzIxZTUwZTBiYTE0ZmIzOGJiMjUwNWYxODExMTQxMDFmZTJlYSBweTNrCis4Mzk2NyA2NGI1YzZmMjk2MDFjZDg5ZTRmY2RmYTc3MjI4MjUyY2Q5NmJhNGMxIHJlbGVhc2UyNi1tYWludAorODM5NjggY2I0NjFhOTE0NGRiMDM1NDNjNjU1MmVkZDAwM2UyYWY4ZGMzNGQ2MyByZWxlYXNlMzEtbWFpbnQKKzgzOTY5IGQyYjcyMTE4NWJmYTJjZDEyNzQ0NDhmMmFiNjk2MGU2MmI5MWZiZWIgcmVsZWFzZTI2LW1haW50Cis4Mzk3MCA0YTVhZDkxOGY3YWY0NTQ0YjkxZjE4NzNlZGJmMzRiZDFkYzAwMzIwIHJlbGVhc2UyNi1tYWludAorODM5NzEgODdiMmRhODQwMjUyZTdhYmFmYzhmOTI3NjExZTlkNmZjZjViYjZmYSBweTNrCis4Mzk3MiAwM2U4ODRmYWM0ZGJhMjUyOTBiNzhiZTYwNDQ1ZmY4MTRhZGI4NDIzIHB5M2sKKzgzOTczIDJkZDk2NGRhZDE2ODU0ZjI3MTVlZTg3OTEzZjI1NGJmODdkYTM4OWEgcHkzaworODM5NzQgYTQ0OWNlMWYzODViNzM0NTA2Y2YwMzI3OTc1YTEyMjk3NDRjNzQ3ZiBweTNrCis4Mzk3NSBhYTg5Y2JiN2JjMjE5YmVhMTE4YzE0NTRhNWRhZDFhZjkxM2JjNTUwIHB5M2sKKzgzOTc2IGZhMmQ5NzIwYTY2Y2IxMGY2MTEwNDE3MTkxMzIwN2Q0ZGRmYWViOTQgcHkzaworODM5NzcgZDZmOGU4NmExYmVjMjJjM2FmY2I1MzQ4ZDc1MzUxMzIxOTJjYWIxMiBweTNrCis4Mzk3OCA3NTU1YjAwMzVhNzc3NDExZDg0ZDE5NmM4ZDJkMTU2ZGQ4YjBkNmZhIHB5M2sKKzgzOTc5IDI3YjU1M2NkZDg1YjY0NmFiOWQ0Y2NiOGI0YjE5N2Q5OWMxNmUyMGMgcHkzaworODM5ODAgZjFkOTIyZDgyMGNhYWNhYWI0ZDY3OGJmODZhZDhiNDBkM2VlM2RkYSBweTNrCis4Mzk4MSA5MTNhYThhNDMwNGM1NzRiMmVkMjIyY2JjM2JjNjU3NDkzNTEyOGM3IHB5M2sKKzgzOTgyIDNhODBlNjdhMGQzNzI1YThiZTdkMWNkM2VlZWIzYTg1MDY2YjVkNTMgcHkzaworODM5ODMgYWE5YzhlODJjNDM1NzZiZjE3NWY3YWJhYmE3YTEzNDBjYWQ3ZDZkYSBweTNrCis4Mzk4NCBkNGI2NzBhYTZkNmI4M2RjNjczZWRjOWE3ZjkyZTQyNDk2MjU4YzA2IHJlbGVhc2UzMS1tYWludAorODM5ODUgMDY4MjkxZDQ0ZmQ3ZjhhMWE1YzBlNTRjNWIwYzM4YmEwOTU1NzQzOSByZWxlYXNlMjctbWFpbnQKKzgzOTg2IGU1NGJhZWJiZDZmZjAxMDQzNzUyY2JkZGU1MjRmN2Y0NWUxNTcwYmIgcHkzaworODM5ODcgMjkxYzlhZmFiMTJjZTA1ZDhkYjJjNWZlN2NlMmM5OTUxZmI4ZmZiZiBweTNrCis4Mzk4OCA0NzQyZTdhZWEyZjU5Y2NmNjJkODA5ODFiZGUyNTc5MTQyZDM4NWM1IHB5M2sKKzgzOTg5IDdiZTU5MTYzMzNkZmRhNmYwNzdkOWIzMzQyZDVjMzEzZThmYmIxZDggcHkzaworODM5OTAgNTBjMGRiYWVhYTA0ODAxMTY5N2YzN2RkZDc0YThhOWI0MjEwYTZiOSBweTNrCis4Mzk5MSBhYjY5NDY5NzJiN2ZkYmJkNDhmZjlkYjAwZTBjNGUzNmEyZmIwNjYzIHB5M2sKKzgzOTkyIGQ4Njg2YzZlNmI1ZWJkNmQzMjJlMDQ1ZjA3NDVlOGZjYTU5Yzg0ZTkgcmVsZWFzZTI2LW1haW50Cis4Mzk5MyAzYWY1OTdmMTIzMmFmNjhhMTVkMDljNTNiMGFiMjQzYWZhNjI1Y2JjIHB5M2sKKzgzOTk0IGQ1NGRhOTI0OGVkOWZmYWY2NWY2NTFjYTcxOTg4Y2RjYjEzMGNkODIgcmVsZWFzZTMxLW1haW50Cis4Mzk5NSA3MDYzNGMzZTAzMTA3YTFkZGFmMzI2MWRkZTkxZDIxZTRjMDk5M2RjIHJlbGVhc2UzMS1tYWludAorODM5OTYgZjc2MzlkY2RmZmMzNmRiYTRkYjIxMThhMDRjYjhiZmYzMTA1YWEwOCByZWxlYXNlMjctbWFpbnQKKzgzOTk3IDk0MjMyYTBjNDVhZTM0ODY1ZTBlOWJlY2I0ZGNjMTZhNzRiNTE4MmUgcmVsZWFzZTI3LW1haW50Cis4Mzk5OCBjYmEyYTk2MTExNzAxNDc3MjgwNTFjNjgxNGRlYzUyOGUzMDQxOWZkIHB5M2sKKzgzOTk5IDFiNTViNzFjN2MyMTBlYWE0ZWM1N2YxZmVjYmU5MTE5YWExOThkMDAgcHkzaworODQwMDAgZjhiNGViZTljNDFiOWQ5ZDZlODczY2YzNjE1OWY4YjI5MDE3NDY3MSBweTNrCis4NDAwMSAzOGQyYjY0YWI3YzE1ZmI3NWJmNzhiZjM3NDc3YjBjYmY4MDc4NzhlIHB5M2sKKzg0MDAyIGQ0NjAwZWU1ZTgyZjBlOTcxNjRlMzA3ZDc5NTdmNjNlODg2ZDMyMjMgcmVsZWFzZTMxLW1haW50Cis4NDAwMyA0OTRhMWI5NTQ1Njk2YjViNzI2ZDFlMTZmNThmYzM3ZjJkZDJlOGE1IHJlbGVhc2UyNy1tYWludAorODQwMDQgOTcxMjQ5Yzc0ZTgwNWQ4Yjc2ZmQ3ODc5Y2U3NzMwNWEzODYyYmU4ZCByZWxlYXNlMjctbWFpbnQKKzg0MDA1IDk4MTU1NWU5OTg2ZTMyOTRjNDIxNDZlNTIzOWFiOTYwZmU3YzdhZTUgcHkzaworODQwMDYgYWVkNGQ3ZjEyODIxZDcxMWEwYzBjNTJhMzhkOTViNjk2MTE3NWM0NiBweTNrCis4NDAwNyAwNjNjOTlkODAzMmM1MTg3NTIzM2JjOTg1ZWIwODVlOWU5NGNiOGM2IHB5M2sKKzg0MDA4IDc5NGViNDBiZWYzYTY1NTRhODk5YzA2NzVjOWU5ZjVmZGVlZTgxYzMgcHkzaworODQwMDkgMmQ3YmJhMWNmM2JjNTc1MjkyM2NhYjQwNjA0ZTA2MzhkNDhmZWEzYSBweTNrCis4NDAxMCAyOTNlMzMyYjhiNGIwNWE2OTcyMmNlOTYzN2M1OTM4NzNlZDgzOTkzIHJlbGVhc2UzMS1tYWludAorODQwMTEgODVhZGZlNTc4NzdiMWM5NTU5NTA4ZGY4ZGIyZmQyNmRiYjExMDU1MyBweTNrCis4NDAxMiA5NTMwMTBjMGIxNjg3ZmY5ZjQ2NTkxNmU4ZmVmN2ZiZGFlY2Q4ZTRlIHB5M2sKKzg0MDEzIGE2NTkyZmNmNzVlNzdlZjQ0YTY5NmM4NGMzY2ZjMzY2NjgyZjBmZjggcHkzaworODQwMTQgZTAxMzg1MDg2MGZhZjEzNWI3NzkxZTIxOWU1YjhmMTZhMTZiOGEyMCByZWxlYXNlMjctbWFpbnQKKzg0MDE1IDJiMGRmOWUxZjY5ZWM5ZTYxNDVjYTJiMDJjYzhlZjBlMTA2OWIyMTcgcHkzaworODQwMTYgZjFkMThmNGQ2MTYzYjU5YWYzMmFmY2IyNGQ5NmFiMDQ2NDM2MWNiNiBweTNrCis4NDAxNyA5NGIyOTBhYmJhZmJhYTUzYjQ4YTExOTdkMzRjMzAxMjgxNjY2YTcyIHB5M2sKKzg0MDE4IGE0ZmQzN2ExYmYzNzQzNWQ4ZjUwMWE0OTdjODk5YTk0OWRlZjNiNDQgcHkzaworODQwMTkgMTJmZTRjODhmOWU2Njc0ZGFiYWY4MDRkOWRlMmVjOGM5ZGY0MjM3YiBweTNrCis4NDAyMCAyNzcxMWIwY2QxZjAzYjU0YTNiNzVmYWFjYjcyNDBkZDgyOTIxMGNmIHB5M2sKKzg0MDIxIDI4NTQ0ZDY2OGVkMGRmYjQ2NTdmNDEzYTgxMzc3YzNjOTMyNmZlYmEgcHkzaworODQwMjIgZWY3NTk1NTEzOGQyMjc1OWU2ZTMzNzViYjVmYzNmMTAyMjBjMTgzNSBweTNrCis4NDAyMyAwYWFjNDBjNzc0NDQzNDI4MTNmYjIwZWI0MjFlZTUzYzA3OWY4MmY5IHB5M2sKKzg0MDI0IGI3YWI3N2ZkMjdiNzA3MzAzMDEwNTQ0YTNjNWUzYzMzM2YwY2FjNDggcHkzaworODQwMjUgMmM2ZDEzYzQwNTE4YmVhMjM2YzE3Y2QzNWQyZmZkOTE3MmI5M2NkZSBweTNrCis4NDAyNiBiNzIyMGU0MjlhYmI0NzQ4MDExMTQxNmFiMjE4ODIzODVjYmNjMDAyIHB5M2sKKzg0MDI3IDliZDA4MjcwMTc3NjczNjViNjU2YTA0ZjhmNGM4MzNiMDBlNWU5MmYgcmVsZWFzZTMxLW1haW50Cis4NDAyOCA0NWIyNGFkZmQwNjQ5ZjA4OGI3MjFhYzEwMjAyMDMxODM0ZGU1MDIyIHB5M2sKKzg0MDI5IGFiNjcwZTQxNGMyNjllN2I0ZGJjOTk3YWU1NTUyMmIzNDJlNzBjMDMgcmVsZWFzZTI3LW1haW50Cis4NDAzMCBkMzYwMzExZjBlNTI0NzZhZTE3ZGIwZDBiNGI1YTUzMjBmMzhmODU3IHB5M2sKKzg0MDMxIDVmMzM2NTNlMzgzN2VlZTAwNmExMTNhMDM4OTIwMzFkNjNhMmRiOWQgcmVsZWFzZTI2LW1haW50Cis4NDAzMiAzYTc5YWEyYzQ1NDlmZTM1MzgzZWI1M2VhMDY1MGU4NTg4MWUwZTUzIHB5M2sKKzg0MDMzIGYyOTIzYTE3NTFkODI1NDZiYmZiYzJkMzg3MjRmNTFkMjg5ZWYwMDMgcmVsZWFzZTMxLW1haW50Cis4NDAzNCAwZTcyMTgzMDY3ZWU3ZmU5ODBiNjFmODY5YjllOGM3ZTdlMDA5OTNmIHJlbGVhc2UyNy1tYWludAorODQwMzUgYzY4ZjI3MTM0MmQwNjVkZjM5MTFiNjM1NTFmNTY4OTFlYjU1Y2M1ZCBweTNrCis4NDAzNiAzN2M0ODc5MGQwOGUwZGY5YmMxNGQ3ZmE4MzQzYTgyNTczMmIwYmYzIHB5M2sKKzg0MDM3IDY1NmZlNjI5MmY5ZjZlOWI3NmFhMTM3MjJmMjk1MGE1ZmRkNTI5ZGIgcmVsZWFzZTMxLW1haW50Cis4NDAzOCBiMWY5OTMzNWM2Nzc0ZTdiNWU0YzEwOWQ0ZDBhNDMwY2RjZWFlMmRhIHB5M2sKKzg0MDM5IGFmYWU5OTk3ODIyNjlmMzQ3ZWNjYjJlMzRkMWRlOWJkMjlkOWM5MDIgcHkzaworODQwNDAgMWU3ZGNmYzA0MDYxOWI4YWRhNWRhOWVhMjc1NWQyMGQ3NTZiMjNjNyByZWxlYXNlMzEtbWFpbnQKKzg0MDQzIDNhMWI1YjFjMDY5YjJhNDY1MzBhMzMzZmI1NjJmZTZkNTdkNDg1MjUgcHkzaworODQwNDQgOTVjZThkYTM3ZTc4N2ZlNWNiYTVmN2NkYzdmYzZkMTkyNjVjNzZlNiByZWxlYXNlMzEtbWFpbnQKKzg0MDQ1IGQ4ZDBhYmU2MWU4M2U3YTAwOGFiN2RhOGY1NTBhOGI4ZTdmMmExODUgcHkzaworODQwNDYgMDViYTg4MjkyZDRjNWQ5Y2M2N2MwZTdiYTY0MGMyNjA1ZjcwMTk4MiByZWxlYXNlMjctbWFpbnQKKzg0MDQ3IGQ2NjdiYTkzZjAyYWM4ODcxN2ExOWU3MzA4ODc0ODgyMThjNjZmNDQgcHkzaworODQwNDggMjAzYjE4ZDVjNjI2ZGZhOTYzOTA4MTNiYTc0MDJmOTU5MmI1YjFjMyByZWxlYXNlMjctbWFpbnQKKzg0MDQ5IDc1MzgwNDllZmRlODljYjE2YjVlZTNjNmUxMzRlMDg0NTg0NzM3YzMgcmVsZWFzZTMxLW1haW50Cis4NDA1MCAzNTM0MzUxYzgzMDAxNDFhMzM3Y2E2Y2Q0NWQ3NDU0OWYwOGUxMTkyIHB5M2sKKzg0MDUxIDhkYjViZDcwMWFiMzYwZmEwMmQxZDgzNjQ1YzBlZmUwNmQ3ODMzOTEgcmVsZWFzZTMxLW1haW50Cis4NDA1MiAwMTVmMDUxMjk3YzUyMzlhZDM5MzYwZDY2NDU2MmM2MGE1MDIyMDU0IHJlbGVhc2UyNy1tYWludAorODQwNTMgYzIzM2M4NGJmNDAzYjRjYjA0Y2Y4MmI1M2ZlOWMxMDg5OTIyZjlkOCByZWxlYXNlMjctbWFpbnQKKzg0MDU0IDhkMGFiNTU1YTE2MDBkY2QyNjc1YzFkMDU0M2RhNWY3ODA2N2M2MmMgcHkzaworODQwNTUgMjY2ZjNhODc3ZjY0YzhjZTY2NzIyOTFhOGUyMDFiZGE3YWZhNmJmZCByZWxlYXNlMjctbWFpbnQKKzg0MDU2IDZkZmM3ZGExNzkxNDM0NDAyY2MwYjhlYTA5Y2M2OTRiOWU5NDYwODQgcHkzaworODQwNTcgMmIzNmYyOWMzM2ZjNmU0N2EzZTE2NjZkY2FjZDU2MWQ0MTNhMDJkMiBweTNrCis4NDA1OCA5NGQxZGFkNTU5NTUzNDc1NWQ4MDA4MWFmNjliMTJhMDNjODBjOGY2IHB5M2sKKzg0MDU5IDY0ZmIwYmQ1NWQzY2RkNGJmYTMyYWYwYzQxZGUwNzIwYTAyNTc5NDcgcHkzaworODQwNjAgOGUwOTkxYmEyOWY0NTczZGFiMzA2OGY1NWViZDFjZjU3YzI4ZDdkNSBweTNrCis4NDA2MSBmODhjZGQ5YTQ0ZWE2YzE3ZTE5ZThmNTkyNTRiZGU0YmYyZmU5MDVhIHJlbGVhc2UzMS1tYWludAorODQwNjIgOGYyZjA1OGI3ZDg5MTIyYzI3ODc0YWZhMDY5YjA1Y2U3ZmFmZjlkNyBweTNrCis4NDA2MyA1NjdkMDA5MjBlZDYzNjZjYmJhNzRiMThlOThjNzY5YTRmZTcwMjIwIHB5M2sKKzg0MDY0IDdhMWFkYmVjMGRiODc2NTdiODIyYjliM2I1ZDBjODdhNzhhNGQ1MmIgcmVsZWFzZTMxLW1haW50Cis4NDA2NSBiOWRkNDY3ZDA1NzQxODkxNjFhMmIwNWY2ZmQxNDNkZjUxMjE3ZGM5IHB5M2sKKzg0MDY2IDk5NjYyZGI5ZGM0MTk4NmRhZDRhMDcxZWY2NjBhMTBhZjIxYWZlYWYgcmVsZWFzZTI3LW1haW50Cis4NDA2NyA4MjdhNjMzZTY4Y2QzZTQ0ZDU0YWU0OTUyYzhjNTdmMDRkZWM2YWM3IHB5M2sKKzg0MDY4IDZmYjEwMTNlMzA3OWFhMDNmMzE1OTA3MWMwYjgyYTM5YWNkNWI1YzMgcHkzaworODQwNjkgMDA4NzVjYzM0ZDE3NTEyN2E2MmY2NzA0YThlZTE0MzcwMTQ2MDE5MyBweTNrCis4NDA3MCA5MDI4ZjIzZGI3NGJlNDFlY2ZlNzc2MTEzMzE0YTNlN2FlMDAwOWY4IHB5M2sKKzg0MDcyIGU3ODNjN2Q1YWUzNjQ2NDhiYWNlYzJkMWViM2ZhNTFmYjEyNTNhMDAgcHkzaworODQwNzMgN2E1NDg0OGQ0OTI5NDhmNzg3MWRlNzlkOGNhMGZjN2U2YzBiZjFmOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc0IDk4Njg2YjEwMzE0ZTk4ZDAxZjljODEwNjY1N2MyYzZkZGJmYjBlZGMgcHkzaworODQwNzUgZGU0NmU0MjUwNDMxYzZiNjRiMTliZjhlYTU0MTdhYWM2OWU0NzkyOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc2IDIwZmRkMjRkZDlhYWYyNGQzYTRlM2MwZmFmNDI3MDc4ZWU2ZDlmNTUgcHkzaworODQwNzcgNzlkNTcyZWExN2RmNDMyZDIwMzVmMjljM2E0YzE2MDM4OWYwOTFlOCByZWxlYXNlMzEtbWFpbnQKKzg0MDc4IDZlOGY1ODc4ODQ5YzhlNmQzOWUwNzM2MWQ3MWEwZDA3MTBkMDQ0MmIgcHkzaworODQwNzkgZDE1ODgwOGRiZDVhMjY5OWE4NWMzYjVmMzY0MTE5Y2UzNzYxNTY3YyByZWxlYXNlMzEtbWFpbnQKKzg0MDgwIDY3M2M0ZThhMDFjNDdiYmY5NDU2NzJlZGE4OTRjYzI3NzQ4NjFlY2IgcHkzaworODQwODEgYjA5ZjkzZmUyOWZiZjgwNTcyYmIzZjRiZjk2NjE1OGQyOTRiZjg4NyBweTNrCis4NDA4MiBhOTI3YTU5Y2VlMDZjNTdjOGY5Mzk3NWQwOGUzNGFkYWU2ODZhYTg2IHB5M2sKKzg0MDgzIDE4Mzk4Zjk5ZmM1NWZkMjdmZGMzNjE0MzNkMjUxNGQwYjk0NzMyNDQgcHkzaworODQwODQgMTM0Mjc2ZWVkMjgwODhhNDI3MzNlMzcxYzExZmFiMGRjMGJiYjJjMSBweTNrCis4NDA4NSBlOWUwYTAwY2NmYjM1MWFhNGI3YzA0MWY1MTcyMzVjNjM2YjRlMGRlIHB5M2sKKzg0MDg2IDg1YWU0NDJmZjhhNWQzNTM1ODcyZTA1ZjRhZTZmYjg3MzNiODQ4YTIgcHkzaworODQwODcgOGNjOGNlN2MzOTA5NDExYTFiZDY2ZjllMjA3MzRkMzg4MzYyMjc1ZiByZWxlYXNlMjctbWFpbnQKKzg0MDg4IGYwOThlMWM4YmM1OTc2NjhlNDViNzIwY2NkNGYyY2U4ZjUyYjI5MmMgcHkzaworODQwODkgOTJmNzg3NzA4OGFmZTQ2OTc5Y2U5ZWIwZWMyMTk2MWViODBjNDE1NSBweTNrCis4NDA5MCBiZjE4ZGQ3MGMxODAzMDQ2MjY1ODJjZWEyMTgzYmZhYjhhYzE2MGRmIHJlbGVhc2UzMS1tYWludAorODQwOTEgYjRkODhmOWVmM2Y5OTIzNGQxNTMyYzQ2NjUxMTFkNzZkZDZlMWMwMyByZWxlYXNlMjctbWFpbnQKKzg0MDkyIDkxZDRjN2IxYmMyNWY4OTI5ZjEyZmVmNzkwNWJiNWViNDM1NWQxNGMgcHkzaworODQwOTMgNGIyM2UyNjljNGQ5OWE2ODRjNjA5NmE2ODdmNmE1MjYwMzNmNzgzOSByZWxlYXNlMjYtbWFpbnQKKzg0MDk0IDVkOWJkZjVhYTA3YmZkNDhlNzhiMzdiOTJkYTRmNGRkNTM0NWU0NTUgcHkzaworODQwOTUgZmM4OWI4ZGVmZjFlMWNjZDVkYmQ4YTI5M2MzZWY4ZDE5MDc4NjYzNCBweTNrCis4NDA5NiBhYWUzZTBjNTEwZmZlNTA2ODFlZGE3YjFjNTQ5NjRhNzg0MDBmYmYzIHB5M2sKKzg0MDk3IGQ1MmY5YzhmZTVkNjA5YjQ1Njc0ZWVmZDJiMGI2OTEwYzZkNWI1YWMgcHkzaworODQwOTggNzE1YzQ0YjYwZWYzNzM2ZTQzYWY0NjY5ZTUzZDc4ZGQyYTk5OWI0NiBweTNrCis4NDA5OSBhMjMzYmU2OGQzMmVhOGM5ZjMwMjA0N2ZjZjc3ZGNiNWNmZTBkOTM5IHB5M2sKKzg0MTAwIGU0NDMyZWZjODhiOWY4YTI0MTY1MmI4NTQ2MmY2MmYwYTI2NTUzYjIgcmVsZWFzZTI3LW1haW50Cis4NDEwMSA5MDdmNzNlMjI3YTZiOWUxZmU4MDQwZmNmMGM2MjhiZjYxODY4YjExIHJlbGVhc2UyNi1tYWludAorODQxMDIgODk5NGQ4ZDYxMGQ0NDk5ZTgwNTBiMzMwNzc0NzcxZjUyMzliMzQ3MyByZWxlYXNlMjctbWFpbnQKKzg0MTAzIDlmZTc0ZWIwMjhhYjAxZjljMzAxYmYwMjc0NzFmMjU3ZGQ5NTdhOWYgcmVsZWFzZTI2LW1haW50Cis4NDEwNCBkZWUzMGM0NjczOWViZDFjODlmYTY2MWU3NWRiZTMzZGRiYjQyYzY3IHJlbGVhc2UzMS1tYWludAorODQxMDUgZGMzMmE3ZDlkYTgwMjlmYzQ3OTMxOWQ4NThmYTY1NWNkNDMyZjlmZSBweTNrCis4NDEwNiBlM2RmMzQ1NDRkYjkwODlmMzc2YjE5MDZlOGM0ZjgyODMxZTcyM2FjIHB5M2sKKzg0MTA3IDQwODVjYzU2MGU5ZWE1MzI4ODcyZDJmNGE0N2ViNGVlODIxZmRkNzMgcmVsZWFzZTMxLW1haW50Cis4NDEwOCA3NTZmOGIzOTgyMzBiM2E5ZGU2Y2VkY2M5ZWY4ZDVjNzdjNjc0MjI3IHJlbGVhc2UyNy1tYWludAorODQxMDkgYmUwYWExZDEzODRjZjYyYTg2Zjg1NTUwOTE5NWU5ZGYxYmY5MmI2OSBweTNrCis4NDExMCAxZDgzZDkyZWZmZTgxMTA0YWE4MGI4ZTZjOTkwNmM2NDA0MzliMWRjIHJlbGVhc2UyNy1tYWludAorODQxMTEgYjA4OWVkNTc2YjEzMjViNWNmY2JmZjQ1MzQzNTk2M2YwZDVhN2U1MCBweTNrCis4NDExMiA3N2IwNTJjNjRlYmJjMmUyNzgxYTM1NTYwMDQxZGU0ZmU3NGViZmMxIHB5M2sKKzg0MTEzIDQ3MjUwODJjMjgyZjAzZmU1YWZlOWQxYTk4ZDQ1YjA5Y2E5ZDhiZTAgcHkzaworODQxMTQgMTdkNWIwMzBlODc3OTkwMmQ4MmY3NmVkMzJhNjlkOGQ1ZTcxMTMxYSByZWxlYXNlMjYtbWFpbnQKKzg0MTE1IDRkZjBkMmExM2FhMTRmMTNmYmZhMmE4ZGRhZTljYzEwMjQxZTdmMDkgcmVsZWFzZTMxLW1haW50Cis4NDExNiA0MWM2MDg3ZjJlNmRhZThmMTQyOTNmOGVhZWUyM2M1MDVlZTFmZjhmIHJlbGVhc2UyNi1tYWludAorODQxMTcgODA1OWU2YjYyNDYzNjA4ZjczZmUwODdiNWJjNWFiZmRmZDBmNGYwZiByZWxlYXNlMjYtbWFpbnQKKzg0MTE4IGUxODlkYzhmZDY2MTU0ZWY0NmQ5Y2QyMjU4NGQ1NjY2OWI1NDRjYTMgcmVsZWFzZTI2LW1haW50Cis4NDExOSA5NTJkNjUwYTBhZmQ3NjljZDYyZmU0OWRjMGVhZWJkYTI3YmQ2MTdiIHJlbGVhc2UyNi1tYWludAorODQxMjAgYjY2MmEzOWYwODIzZWE5NGYzNWU5NTM4ZTQ1Y2MwMjcwZGFlOGM0ZSBweTNrCis4NDEyMSAwYzhiZmQyODVlZjk0MjgxNzBmMjdkOWQyMThhOWRkNTY4OGJhYzlkIHB5M2sKKzg0MTIyIDA1YzRiYWE4NzU0OWMzZDVlMmVkMGY5NDRmMTY3NjVhYzkxZDgxZWQgcHkzaworODQxMjMgMDQ5OGQ2OGRhZDVkMzc5MWMyZGQ0NmEwNTk3ZTJjZTZkYWM0OWMzNyBweTNrCis4NDEyNCBiOTEwNTllNTlkMGRjMjI1M2U4Yjk3YWQ4ZTVmMjNlZjY0MDhkMDYzIHB5M2sKKzg0MTI1IDc0NWJkNjM5ZWQ0ZGNkNmFjYzhiYWEyZGRmMDMyMzY1ZjI0YWU0YWQgcHkzaworODQxMjYgMGFkYTdjZTI0ZGUyY2Q0OTE3YThiOGM2ZjZjM2E3YjgwM2Q0NDZhOSBweTNrCis4NDEyNyA5N2Y0N2VhYzA5ZGI0YWRlODdhYWViY2IxNDNkOTIxOGQ0MjExMjZhIHJlbGVhc2UyNy1tYWludAorODQxMjggNjBhNDc3N2E3M2EwNjJmZjU3N2JhOGRiNjJkNDgxZWU4MDhkNmM0NiByZWxlYXNlMzEtbWFpbnQKKzg0MTI5IDI3Njc4ZmYwY2RhMTQ0ZDFhMDM5MGRhYTMyMzA4ZjhmMDBmZmZlZTQgcHkzaworODQxMzAgNmNiNzc2ZTU3Mjk2YmEzZjFjNzU0ZTU3NWY4NWEzYjhkOTBkNWI3NyBweTNrCis4NDEzMSA0NTQ4ZjRhYjE5Y2VlM2M0M2ZmYTlkZWMwMTFiMDcwOWNlY2RlNTBkIHB5M2sKKzg0MTMyIDc3YmY1ODI5NmM4NzA1OWY2YzQ2NDllNjIyODAzM2Y0ZjlhNTVkMTUgcHkzaworODQxMzMgYjJhOWE1OWMyZDU3MmJmYTI0OTA4OGM3NDU2NzIxMWU0Y2NiYTQ5ZCBweTNrCis4NDEzNCBhMDQ5ZTIyMGYwMzA5NjA2ZDg0NzA0MDZiNjA3MzRjNjM5YjBlNjkxIHB5M2sKKzg0MTM1IDZjYzY1NTQxNmQ2MzliZmUyODI2MzNiNTBkZGZlZDgwMDFkMjA3MGUgcmVsZWFzZTI3LW1haW50Cis4NDEzNiAyNGUwNjgzM2I1YjNiNzI3ZGJiMDAwNmNiNTNiYzNkMGVkZDM1ZjMxIHJlbGVhc2UzMS1tYWludAorODQxMzcgOWRkNzYzNDIzYTU2NmRkYzY4YTJkMDhlZDgwYzVmOTI2ZTk1ZDA4YiBweTNrCis4NDEzOCA1ZmNlMDFhNTFhYTVlNTE1NDU5YzFmYmNjMzJmYjUxZTM3NWIzNTlmIHB5M2sKKzg0MTM5IDRiYzlkZmQ5NWM4MDc1NmI2N2ExZjVhZjFhODk5OGFhMjM4YmEzZjUgcHkzaworODQxNDAgMjEyYTE2ZjkwNmE2NzI1YzgxODliNmI2YTk4NWU5YWRkYWEzZDBkYSBweTNrCis4NDE0MSA2ZmQ5NmMwMWI0MzcxMjZkOTA2NjMwOWI5YzQ0NTcxYTM1NzRmNTFmIHB5M2sKKzg0MTQyIDk5MGE3NjZmZjk4MzM1NjBkNzA4ZjIzZmZkNjRkOTAxNmYyYWIxM2QgcHkzaworODQxNDMgY2EyYTg1OWU5YmY2MzUxMGMwZWMzZThjN2E5MDc2MWY4MWRmYjViMyBweTNrCis4NDE0NCBjYWVlYmY3NDk3YzM4ZDU3ZDczNTE4OTQ3MTQ3M2Q5N2EzMmZjZTg3IHB5M2sKKzg0MTQ1IDI3ZTE3NjE2OTMzZWY4OWYyYzExOGM3ZWE4M2JmZmUzN2U1NmFjOTkgcHkzaworODQxNDYgZWUzZGNkZmUyZjg3MzY1ZjViMDMzOTZhNWNhZTMzNWM2ZmM4MmQyNCBweTNrCis4NDE0NyA3OTI1YmJkZmM4MDVmMDEzNzczMTU1MTk4MWEyMjFlMzM5MDUyZjY4IHB5M2sKKzg0MTQ4IDZlZDM4MTM1NWQwZDQ0OGEwMzFkNDZiMmVmNTE5MWVkMTAzZGExMGMgcmVsZWFzZTI3LW1haW50Cis4NDE0OSAzNWU2N2FmODA2ZTUwM2Q0MDZkMTg2ZGRmMjYxZDdjMzdkYzdhZjQxIHB5M2sKKzg0MTUwIGI2MjRjNzQxN2FkNGU2ZTkxYmJjMzliNzAzMWMzZWUwOWEyYWY0MDMgcHkzaworODQxNTEgMmE0Y2VlYmRmY2ZiMjU4ZWQ2ZWRhZmI1YWRkMzYzNzhkOTA3MDBkMCByZWxlYXNlMzEtbWFpbnQKKzg0MTUyIGZlYmFlYTFhNjg3MWVmZmQ4Mzc5NDE4MGZlMzI2Nzk3MzNlYWE5N2QgcmVsZWFzZTI2LW1haW50Cis4NDE1MyAzOWUxZDM4MjZmNGVhMGVmMzkxY2NiMTlkM2ZkNGY4NGU5NGI5MDE0IHB5M2sKKzg0MTU0IGYzZDU4MzdlMzFiNzg2YzNjNGIzNjlhOWUzOTAxYmE5NWI4OTFkMWMgcHkzaworODQxNTUgM2ZhMGE5NTUzNDAyNGQ4OTYwOTgwYWQwNzk5OGZjYTU2NjgzYmNiZSBweTNrCis4NDE1NiBmZGE5ZDFmZTdmMDZiNzZkMmI0NTY1NGYwNDRhZjM5NTQ4YTFiZTA0IHB5M2sKKzg0MTU3IDUxYTc3ODQ2MjliYmFkODRkYThjMmU3YjMzOWQ0MmRiZTRjNjA5MTEgcHkzaworODQxNTggMzVjNTNlN2UyMjgwZGM3YTk4MDZjNjBiODc1Y2JkNDhlYjI0MjE4YiByZWxlYXNlMzEtbWFpbnQKKzg0MTU5IDlhNTQ5NDBhMzMyZWU2OTE3N2VlZjc5NTlmODI1MmMxMjgxMjg0MGMgcHkzaworODQxNjAgZjc4MzI3ODc5MGNhNjM5MzkyMzNhMTJiNTQ2ZGEwY2NmMDU4MjdhOCByZWxlYXNlMzEtbWFpbnQKKzg0MTYxIGEwMTk5MmUyMTljMDkwMzM5NzZiNjhiYjgzYjQ4ZmNhMmE3MWZhMmQgcmVsZWFzZTMxLW1haW50Cis4NDE2MiAyYjMyMzEyZGNhYjE1MDZhZTllYmY3ODVjYTY1YWViNGQyZWNjZWQ1IHB5M2sKKzg0MTYzIDY4NmIxOGJmZmI4NjRmYWU4M2IzYWRlODczNDY1MTIyNzEzNThhMzcgcHkzaworODQxNjQgZmM3OTRhZGQ1NTlkNWFhYjc0NGNkN2Q2NDRkMjQ0MzYzMWEwMGU1MCBweTNrCis4NDE2NSA0OTQzMDc4YzkwYzlhZDQ4NWYyN2RlMGVlNmVkNTFhMWEyOWFkYzUzIHB5M2sKKzg0MTY2IDcxNDAwY2UwYzcyMWQxNTcwOGUwNDVmNmUxNjdhZDA2N2EzOGMyYzggcHkzaworODQxNjcgYmRkNzZhZDNiYzc2YjAxMTYwMGFiNjNhZTg3YjZjN2Y5NTEyOGE2MiBweTNrCis4NDE2OCBlZTc2NWE2N2MwYjExYjE5NTQyYzU2MzVkNzEzMWQ5MTk5YTJjNzljIHB5M2sKKzg0MTcwIDBlZDc2YzdiOTg0NzRiZDY0NWVjM2IxNDg5YzYzOWQ4YTcwYTdlMGEgcHkzaworODQxNzEgYThkOGRlMjNjYjc3ODVjNDA3MmFkOTFjZTUxMDYyYjBjODc0YmQ2ZiBweTNrCis4NDE3MiBjNzA5MzUxNDU4YTY2YWY2OTk3ZWQ4NTQwMmFmNDUxMjdlNjBjZDBjIHB5M2sKKzg0MTczIGMxMzBmNDMyZjI0YTAzOWJmNmJlZmZkZTgxMzBjY2RiMzAzOTcwMTEgcHkzaworODQxNzQgY2E1NTc5NDhhNWNmNjdiNTIwNjQ0NTc2MzJkOGQzOWI3MTQwMmRjYiByZWxlYXNlMjctbWFpbnQKKzg0MTc1IDZjZGE1ZmQwYTNjZjIzZmMzOTVmYWRhMGFjZDAzZmM5M2M2ZWE5YjEgcmVsZWFzZTMxLW1haW50Cis4NDE3NiBiODcxMjQ0ZDdmNzk3ODkwZjcwZDU0YzBmYmIyYjQ0NTMxYTc4M2FkIHB5M2sKKzg0MTc3IDhmOTdjNjRiMjMzMzYyMTYwYzRiNzM3NTg0OGMzY2VlZjViYWMxNTAgcHkzaworODQxNzggNzQ5YzIyZmZhMzZlYzc1NzdiZDgxMzVjODQxMzNhOGEzYWRiNTg1YiByZWxlYXNlMjctbWFpbnQKKzg0MTc5IGMzNzA4NjZmMzBhNzVhYTlmYWM2MjYzNzI5Zjg0NDlmYzQ3NWQ0NzYgcHkzaworODQxODAgZGY5NjEwNjRmODExY2ZjZDE5ZDk0M2M3MzQwNGU3NDgxN2ZhYmVlNiBweTNrCis4NDE4MSAyM2E1OThjMDE5MTFmMjA0MjA1YTRlZDcxNDA2YzJlMjc1ZWIwNTE3IHB5M2sKKzg0MTgyIDY4N2NjODU0Y2I0YmZkZjliNDk4YTMwNTNkZDVlMjU5NWViN2FmNjggcHkzaworODQxODMgZTY3ZTA3Y2I1MTcxY2Q4OTUyOTgyOGFiNTczZWI1OTgzNDRiZDFhOSBweTNrCis4NDE4NCAwNWEzZGZkYTA0ZmZjNmEzMjVmODk2MzEzOGZlNWExODFjOWU3ZThiIHB5M2sKKzg0MTg1IDc5MGQ0ODc4ODg3NGM1MTgxMjI0OGE5NWExZWUxZTc1N2Q3N2IyNWYgcHkzaworODQxODYgODBmOThhZjE3ZGVmODgzZGE0MzVjNzdlYmU4NDQwNzkzZjMxMjI0MyBweTNrCis4NDE4NyAyMjhlNmYwMDFhZTEzYjE0MTFkOTFiZjE1YzkyNGVjNGQ3ZTY5ZTcxIHB5M2sKKzg0MTg4IDlhZGVhOTQ1NTc1MzllNGNjNWM2YmRmYjY2MzdhZWE1YTJlMDRhZTEgcHkzaworODQxODkgZWEwZGVjZDJhY2ZiNjJkN2IwMGQ5MTc1MzdkNDI3NmI2NzYwYWQwZSBweTNrCis4NDE5MCA0ZjgzMWQ0NTEyNWYwZTU5MWI2N2MyZTJmOWVmMDg3OTJhZTkxNjhhIHJlbGVhc2UzMS1tYWludAorODQxOTEgNjVmZTA1OWI5N2JmMzM4OTI4YjJlZjk4ZmFlYTgwMDQ5MjM2N2U2NyBweTNrCis4NDE5MiBhYzEyZDk0OGE4OTU3NjQyMmU4MTZlZGFmYWZjMWE1Y2Y5YWNiNDFhIHJlbGVhc2UyNy1tYWludAorODQxOTMgYTllNzhmNmY2OTRlNjVhOThhNjI3OWM1NzlhNzQzMGYzMDc0M2EyYyBweTNrCis4NDE5NCAyY2IyNjYzZTMzNjg5MGY1OGU2NzMyMGRmODViNGE3YWQxZGE1MDNlIHB5M2sKKzg0MTk1IGFiODRhMGM3ZDYzYzYwZjZjZDU0NzRlZjFlYTRjZWE0Yjg5MWY5MTggcHkzaworODQxOTYgZjY3MjNkNTVkZTRiNmNlNzExMThmOTQyNTJlNjkwODAxYzUxZmFjMCByZWxlYXNlMzEtbWFpbnQKKzg0MTk3IGQwZTlmZWJmYTAwYWM3MWFmMDk2OGY5ZjI0MDhiMTBhZDJkOWNmOTggcmVsZWFzZTMxLW1haW50Cis4NDE5OCA4NTc4MDYxNDdlZTczNDFkNmI2MzRkZDdkYTA5ZDM3NjBlMjRmYTdlIHJlbGVhc2UyNy1tYWludAorODQxOTkgZjI0MzA1ODU5NjNjNTg0NWVlMjExZjM0YmFiODdmNmQwOGIwMDE4OCBweTNrCis4NDIwMCBmODcxMmEwN2IwYjExMzIxNmMxOGZiZDM4ZjlhMjkwNDVjMDM2NzNmIHB5M2sKKzg0MjAxIDA4MmVhZmEwODgwMjcyMWZhNzM3MjViOGRmNzUxY2YxODk2ODU3YWQgcHkzaworODQyMDIgZjY1YmJmYmI4MjNmZmMxYWY0MGVkMWZlMzBhNzcxNjA0NGQ2MTNmMSBweTNrCis4NDIwMyAzOGNlOTQ3YzI4ZmI0MDE2MTNiMThkNzQyOTQ4NDU0NmVjYjdmMTY5IHB5M2sKKzg0MjA0IDkxNTVkYjY1OWMyMGZmZjFmNzFkYjc3YjU0YjA3Zjg4MzE5NDE1ZDAgcHkzaworODQyMDUgYTRlYzdhNmE2ODk1ZTRlNDZiODg0Yzc1ZDg1ODc1MDAxZDc4MjA4NCBweTNrCis4NDIwNiA1ZDNjYTFjMDE4YWU0MzQxMGUwM2QxMjBhODVjYmY1YmRlMTAzNmZjIHB5M2sKKzg0MjA3IDA1MmY0MmQwMjIyZmQ5ZjU5MDM2N2NkZDZkZDc5NTgyZThiYjNhNjYgcmVsZWFzZTI3LW1haW50Cis4NDIwOCA2NjE0M2MyMzY4NGRhM2JmNTRmNGM4OWNlZmRkZThmZjBkZDNiMTA4IHB5M2sKKzg0MjA5IDVmZDI2ZjQ1MjYwMDBhZjNlYjk1NGIzY2NiNDBhYTM5ZTY0NjY4ZTcgcHkzaworODQyMTAgYWY0YTkxYzk0MDcxN2I5MTZlNDY5NDY5Y2UwZDdhYTE1NzU0NGQwOSBweTNrCis4NDIxMSA4OGU4NDNjZTExNjBlODIwYTM0ZjNlMzA5YzY5ZmZkNjQ5YmI2MjhiIHJlbGVhc2UzMS1tYWludAorODQyMTIgYmE2ZmRlOGEzYTk5N2Q1NmRhZTAyYjc3NWI4MGUwNGJlMDk4MjhiMSByZWxlYXNlMjctbWFpbnQKKzg0MjEyIDhjNmM3MmI2ZjFlZDBhNjEwNTU5YjBmOGM4M2M2YjNiYzM3NzU2ZmYgcHkzaworODQyMTMgNTRjOWM4NmFkMTA0YjI3YWE0NjY0YmNhOThkYTU1OTIyYTlkNWU1OSByZWxlYXNlMzEtbWFpbnQKKzg0MjE0IGMxOGVlYjk2OTEwMmYyNGFkOTZhZGUzMTZiMTRiYmZkYzYzYTM0NjQgcHkzaworODQyMTUgMzhjZWVhZTBkMWYwNzk2ZjAyMTYwZjAwMzZmMDNkNzU1Y2Q2MDc4ZSByZWxlYXNlMzEtbWFpbnQKKzg0MjE3IDU0OWE0MGNhMjA3NGQ3MjM4ODU0ZDMyOTAyOTZjOWEwMzA1OWFhOTMgcmVsZWFzZTI3LW1haW50Cis4NDIxOCAzNTI4YmE3YjQzMDVjYTc1YmY3YTA2YzFjZDMxYTE2YTVmMTRjMzQ5IHB5M2sKKzg0MjE5IGYyYzdlNGIxZDgwNDVjMTIzNTE4YjdkNmFmZGQzMDYxNDMxNDY1YmQgcmVsZWFzZTMxLW1haW50Cis4NDIyMCAzOWRhYzBhODg5NmEyNzg2YmExNWNlNDQ0Y2IyNzQ4NTBiMzc0OThiIHJlbGVhc2UzMS1tYWludAorODQyMjEgMzBhMGRjZjVhM2Q4YTU4MWI1ZWUxMjQ4NDcyNTA1OGY5NjU4ODNmZiBweTNrCis4NDIyMiA1YTI5OWQ3ODU5ODc4MzYxNjdlMjA0NmVlODI5YTIwMTA0YjFhOGQ1IHB5M2sKKzg0MjIzIDg3ZDQ2OGFlM2MzYzJjZjcxNGU3YjhhMTg1YTRlNTVhZTc1NjVkYmEgcHkzaworODQyMjQgZDRlMjBmOWYxMjdhOWY0ZmRlNjlkZGI0NWM2YTc2NDc5Yjk4ZmQxOSBweTNrCis4NDIyNSBhYjYzYzQ1NzhiMWJkMTQ0MTRiZWZjODExMDRjMzk3NGM2ZGY0N2U0IHB5M2sKKzg0MjI2IDY1Y2U5OTIzNjg5Nzg2NTg0NjYzMTFjMWZhZDQ2YTIxYTlmYmIzMDQgcHkzaworODQyMjcgZjNkYjUwNGNkZmIxZjNmNTUzODc5MWE1NGViNzgwNDNjOGNhMTdkOSBweTNrCis4NDIyOCA4Mzk3ZjJlMDA3ZWJjMjRlNGVhYTRkNzFiZDY0ZjIzNTdlM2YzZjg2IHB5M2sKKzg0MjI5IGZhN2QxZDVkMmFmYjYwMTVhOTczMGFmZmYzOWZiN2FkYmZhN2YzMzAgcHkzaworODQyMzAgN2QyYmQ4OTU1ZWRiODNiMDk0ODkyOGU4YjRkM2Y2NTM1M2NhZjk5YyByZWxlYXNlMjctbWFpbnQKKzg0MjMxIDBjM2Q3NjNmMzhmMTQyYTc4NWVhYmU3NzA4YmQ4ODU5YTNiZjA3NDUgcHkzaworODQyMzIgOWQ1OTE2YWI2MGUwZjMyNDExMTdjOWViMWMxMjA5MmY0ZDM0MTkzMiByZWxlYXNlMjctbWFpbnQKKzg0MjMzIDk5NjYwNGNkZTQxZjVmZTgwY2Q2ODRlYzkxY2ZkMzc4MWU5OTA5MGMgcmVsZWFzZTI3LW1haW50Cis4NDIzNCBhYmNmOTU3N2Q1ZGIzZmM1NTRkMDQ5NzNjNTJkZTBlMjFmOTM5OTQ3IHB5M2sKKzg0MjM1IDFlZmU4MjNlMWYxODg1ZTdkMGQxN2JiYzQyYTRjZjhhZWRlYjlhMzAgcmVsZWFzZTI3LW1haW50Cis4NDIzNiBjNGY1ZDk4ZWU4N2IwM2IxZThmNTcyOGE2OTA0YmViYWY4NDk5YmZhIHB5M2sKKzg0MjM3IDQ5N2E3ZTI4NGU0ZGM4ZTAwMzQxZGEwY2U2ZjYwZTU2ZDA4YmU1YzYgcHkzaworODQyMzggMmYzYWM4MzRiNTM2MzRlZWJhNTgwOGY1MGE1NDNkMDkwYzYwZGI1ZiBweTNrCis4NDIzOSBiMThjODBjNjg3NTQwMGJmYTlhYzUzMTRiMTQ5MTI1ZWRmYmM1NWZjIHB5M2sKKzg0MjQwIGRmZDAyMjk3NDhlZmQ0YzFhNjViYWQ5MWI3OWFlNmVkYmE0MDhkYWMgcmVsZWFzZTI3LW1haW50Cis4NDI0MSA5N2E1ZmIxYzk2Y2ViM2UxODVlNDg0MjQ3Yjk1MDFlNDkxOWQ3N2RlIHJlbGVhc2UzMS1tYWludAorODQyNDIgOGUxODRhOGJiMDBlNjQ5NzQxYTI0NjNiODkwN2VjNjQ0YjNkZmNmOSBweTNrCis4NDI0MyA0NjFhMjBhYjQzM2ZlZTRiN2I3YzBjNjI1ZjE4OWVjYWY1MGQ2ZTQ4IHB5M2sKKzg0MjQ0IDMwMmZlMjVjZDZiMTE4OGYyYmJkNWYwNDhkNWRiM2Y4N2UwMTc5NTcgcHkzaworODQyNDUgMTBkZjkzODcyY2E3MzA0MjAyNzVhYjViNzgzODg1OTcxY2IxZGVjYiByZWxlYXNlMjctbWFpbnQKKzg0MjQ2IGY1ZGVlMzBjY2QzOWZkNTBkODQ5NGQ5MDQ1NjhhNWI0OTMwOGQ5ZDAgcmVsZWFzZTMxLW1haW50Cis4NDI0NyBmOWFiOWM5MmRiOGRiMjRkZTZjNWU1ZTk0MzVhMTA0MWNmN2UyZjQ2IHB5M2sKKzg0MjQ4IGFhY2IxNTI5MWQ1NDYxMGNlMzFiNzVmMDg0ZWYyOThiMDJlMmM5NzUgcHkzaworODQyNDkgYTM0YmUwM2Y3MDlhMzQ5YjYxMWYyM2I5ZDZkY2Q1YTFhMDM2NzY0YyBweTNrCis4NDI1MiAwMWIwYTZjYjEzZDQzYzllYTM1ZjUyZTBjNGU1NDkzNTExM2M4NTJjIHB5M2sKKzg0MjUzIDZlMGZlMWI4M2ZmMDk1NmQ1YWM1NjU0MDk3NGFiZTNkODRhOGU5YWUgcmVsZWFzZTMxLW1haW50Cis4NDI1NCA5YzRlODU3ODVkNGU0YzVlOTQwNjhjZDJlNjg4NDJkY2VmOGYzNGU4IHJlbGVhc2UyNy1tYWludAorODQyNTUgMDEzMGU1NzRmNWJlNWEzODcyN2QzNGVkMGMwYjhlNTMzZjAxMzkxNCByZWxlYXNlMjctbWFpbnQKKzg0MjU2IDdmZjNmYTQyOTcyMTgzYTViYTIyZDQ1YmE5OTkwNGQ0YWVjOTU4ZWQgcHkzaworODQyNTcgYTVhNTg3MjA1MGUzMDM4NGRmODY3OTk3ODM3YTE2Mzg1ZjdkYTUzNSBweTNrCis4NDI1OCBiMDE3YTRlZjc2OTRmYWVhOTNjZDRjMGIwNTI4ZmVlMGM3MTI1N2JjIHB5M2sKKzg0MjU5IDRhY2ZhM2ZlNmE1ZWI1MmMxNTJiZWFlZGNjNmQ3ZDYyZjNlOWNkMTUgcmVsZWFzZTI3LW1haW50Cis4NDI1OSBlNDljNTNmNzUzNWMwOGQ1MTc2YTgxODNmODA5YWU2NzhjNGNhOGVjIHB5M2sKKzg0MjYwIGU4MTkwNmU5MmY5OWFlZGU2NjQwYTY1MGZjNzQ1NmRmODcxZWM3MjkgcmVsZWFzZTI3LW1haW50Cis4NDI2MCA2YWI2NTY3NjViY2EzODdmNzVkMjZhYjc0ZjhmYWZiYmU5MGIxZjRhIHB5M2sKKzg0MjYxIDM1MzA0YzJmZTllMGJiODgxMzFhMDViYTMwYTY4ZDA4Mzk5NTJjNDUgcHkzaworODQyNjIgZTkxODQ5Y2QwNjY4OWRkZTMxNzVmMTJiZDAyZjliNDM2YzU0ODRmOSBweTNrCis4NDI2MyBmMmU5MWUwOGMxYzU3ZjBhZTAzYWZmODVkYjgzNDdmMGMyMGQ4ZDMxIHB5M2sKKzg0MjY0IDNhY2Q4NmY4YzU1MjQ3M2FiOWI2MjZhOTk0MTRjYjRiMjBiMTJiMDMgcHkzaworODQyNjUgMWM4ODM0ZjNjZGI5NjM4NzdjNzI0NDFhYzkyNzk0MTE4NGM3NWZiMyBweTNrCis4NDI2NiA1OTQ4ZTQ4ZmJkODgwY2QxNGVlNGQ5ODQyMGFjZTkzZDdkYzI5ZGRmIHJlbGVhc2UyNy1tYWludAorODQyNjcgOGY1ZmFmNTY5NmU3YWYyZTExODEzN2UxNWI0YjY1OWNiYzk4ODM4NCBweTNrCis4NDI2OCAwMmUyZDllYWI3MzAxOTljNWJhYTk0NjE5MDJiMzAyNmRjNjZmNWEwIHB5M2sKKzg0MjY5IDcxNmQzZDEwMmMwYWExMjZkNTkxYTU4ZDI5NGUxYzBlZTkyM2FhNTEgcmVsZWFzZTMxLW1haW50Cis4NDI3MCBhNDEyY2VlZWYwZjFlZWJhYzdmZTdlZWE3ZDhkNWM1ZGE4ZGI4NWMyIHB5M2sKKzg0MjcxIGNmMzk5ZGUxMmI1NDI3ZDdhYmZiZDk0NGExY2NiM2NkNWU1ZmRkNDggcHkzaworODQyNzcgN2UxZTM0M2I3MDhiMTgyZjc4NzVjNDcwMzc1M2ZjZDRiMzZjMjU4MyBweTNrCis4NDI3OCBhYTI1Yjg2NzdjYzNmNzlkNGI1MzU0ZjhiY2FjZDFjYTEwZmZkODg3IHB5M2sKKzg0Mjc5IDUxYTI0YTkxNTQwODU5M2I4OWZkMTBjZmEzMjlhNjJiMzU0Y2NiNjcgcHkzaworODQyODAgYjUzNWNkZTkzMjczODNmODFkZjAyZWViMGQwOGJmNzE2YmRjNWE4YSByZWxlYXNlMjctbWFpbnQKKzg0MjgxIDFhMDg1OTYyMzg4MmY3MWRlZWYxNmY1OGZkZjAwNDYyMTc2OGUwODEgcHkzaworODQyODIgNDJjNzBmMTdjMmZlZGU2MTE2MTA4NTY4YTc1YjBlZWMwOGIzYzczYSByZWxlYXNlMjctbWFpbnQKKzg0MjgyIDlkNGRjNTg1NWM1MTViODA0NTI5M2YxYjQwYTZkZGM5Y2IxMTYzMDEgcHkzaworODQyODMgYmE1MzZhYzdhYjRlNGRiMDI4OTk2ZWJlOWJjYzUxMjE1OWQyZGJkYSBweTNrCis4NDI4NCBlNzliYTU1NTkyMmExNjg3YmI3MTlkYmY3ZGI5Mjg3OGNjODEyZDI5IHB5M2sKKzg0Mjg1IDc2ZTljZjg0NTY3NjAyYjkwYTdjNGE3NzA3NjU4ZmViMjQ0NGVhZWIgcmVsZWFzZTMxLW1haW50Cis4NDI4NiBiOTVlYzE3MWY1MDM2NDNjN2M5NmQyY2JhMjE0ZWMwYTBiY2E4ZGQ2IHJlbGVhc2UyNy1tYWludAorODQyODcgZWZhYTQ3ZTkyYThlODdlMDMzMzMyODY5NTgyZWU0OWYwYWYyZTMyYiBweTNrCis4NDI4OCA3ODk1YzQ1NTNiZjU0NDkwNjdjNTBmZWZkODkwNGM3NzgyY2UxMTdiIHB5M2sKKzg0Mjg5IDkwYmYyMjQzNTUyZDMzNDNhNjU4MzZmNWM2NTdjNDkyZjcyNzUyYmQgcHkzaworODQyOTAgZTJiY2UxYzU5NmJlYjNhOWVjZTdhYTNmOGE3ZjFiN2I0NzAwY2I3NCByZWxlYXNlMzEtbWFpbnQKKzg0MjkxIGU3MTZhYTIwOTRmYThkOTZjYjM3NWQwNjQzNjFhNjllNTNiYzRlZDYgcmVsZWFzZTI3LW1haW50Cis4NDI5MiA5Zjg3NzFlMDkwNTI3N2Y4YjNjMjc5OTExM2EwNjJmZGE0MTY0OTk1IHJlbGVhc2UyNi1tYWludAorODQyOTMgNmRiNzgzNWIwYTk1YWZjMWQ0ZjBhZTlmMTczOTQ4Yjg1NGU3YmEwZSByZWxlYXNlMjYtbWFpbnQKKzg0Mjk0IDJkZTlkNDQ1NzA4MjEyM2Q5MDA5YTdmMjVkMGQ5NGNjZjY1YjcyNTMgcHkzaworODQyOTUgYzFhODNmMmM3MDg3NTdkZGQyY2YyYjIxYWIwOWE1MTA1YWQwZmVjOSBweTNrCis4NDI5NiBkNGExZjkxNDJmN2E5ZDQ3N2VhNzg0MmZlZDBhYzYzZjgyMWY0YTgyIHJlbGVhc2UyNy1tYWludAorODQyOTggZGIyOTM2MGNhZDBmYWMzYTY0OTkzYjk4ODZmMTRkZjdhMTdhMmJjMiByZWxlYXNlMjYtbWFpbnQKKzg0Mjk5IDRiMTI5NmIyNjJjYTRiZWFmYzVhYzU3Y2VjODI0OTc3YzY0NDg4NTYgcHkzaworODQzMDAgZjkxZjI5ZWY0ZWU3YjVmNWVjZmJjOTA1ZTI3ZDlhZmE5YTAwOTk3ZCByZWxlYXNlMjctbWFpbnQKKzg0MzAxIGMxYzRmOGY4NTA3MGRhNGQ3YjY5YWUzNmU5ZTAxMjFjOTA1ZTE1ZmUgcHkzaworODQzMDIgOGZlMzZlMmI4ZWQxM2MyMjIyZmQxZDViN2Q3ZTlkYTA5ZWExOThhMSByZWxlYXNlMzEtbWFpbnQKKzg0MzAzIDgwYTQ4MTRlY2Y1ZDY1MjFkNjFjZTYwMGI2YWE1YjZkNjk4ZGExYzIgcHkzaworODQzMDQgYmU3NmIzN2ZlN2ZkODQwOWQzZDJmMjdmMjgyZTliNDFlYzNkODFmYyBweTNrCis4NDMwNSA2MTgwZjQ1NjQ3MTRkYjEzM2VjZmQyNTM3YTBkNmRlZjNkOGU2MTEyIHJlbGVhc2UyNy1tYWludAorODQzMDYgZjY1ZTljMTU4YzA0MDYyM2E5NjdiZTUzYjA0ZWM2NDJmNDc2ZGFkZSBweTNrCis4NDMwNyA4Njc2OTljOWI2M2ZmNTg0NWVjMDJmMTc0NGUzZTc2ZGZkNzE4NTEyIHB5M2sKKzg0MzA4IDE0ODhjZDEwM2Q3YjgyMTRmN2ExMTAzMDA3NDBmZWY2ZmMzNWFkNWUgcHkzaworODQzMDkgMWUyM2MzYjJlMjMyNTlhOTBhOTNiZjRiY2Y1NTU2MGM1ZDBjYmRmYyBweTNrCis4NDMxMCA4N2JkZjUzZmY0YmJmY2E0Mjk5NjUzMGE3ZjBlOWE4NWI1NDMzMWM4IHB5M2sKKzg0MzExIGY2YjNlNjRiNzYyMDY3ODAyODZiYjI1ZjM1YjRlMzBkNmU5NmYzYmYgcmVsZWFzZTI3LW1haW50Cis4NDMxMiAwNTNmZjY1YmU1NGNiMzYzYzVhMjg0ODE1NmZhMjNjYjc0MjcwMGI5IHJlbGVhc2UzMS1tYWludAorODQzMTMgMmNjZDA0M2FhZDVjMTA5MGFjNTk0YjNjOTZhOTI3NDE0NzFlMmRjMCBweTNrCis4NDMxNCA4NzAzN2Q4MzgwYmY0YTM5ZWYxMzdmMWY0MDg4NDBiOTBkNjk2M2E2IHB5M2sKKzg0MzE1IDNhYzlhMzdlNDI5YmE2Mjc5MWFmYTI2YmVmZjJhNDllNjAzMzY4MzcgcHkzaworODQzMTYgOTRjMGY5NzkxN2RkYzY5MjgxNzhmZjcyZDBjMjFlYmFmMDc1YThkZSBweTNrCis4NDMxNyAwNDgyYjMwY2E0NjYyOTNlZTgyY2JjMzU2YzIyNWM4NTkzYzc2OTBkIHB5M2sKKzg0MzE5IGFlZmJhODk5ZWFlZWI0MjQ3YTFhZjJmMmFiZDExMzlhZGM3NDViNDIgcHkzaworODQzMjAgODMzMDM0NmI1YzVmYThiNmZlYjk0ZGVjODQ5ZmZhNzEwZDE4MmEyYyBweTNrCis4NDMyMSBlYmZiOTRmMmNiYzM1NjRjODkyYzVkYzg2YTM4YThiMDkzZDU1MjQ5IHJlbGVhc2UyNy1tYWludAorODQzMjIgMTkwMzc1NDQ1MjQxOTg2YTNhODQ3YzhhNGQ3OGU4MTRlZDU0YTBhZCByZWxlYXNlMzEtbWFpbnQKKzg0MzIzIDY1NTIwNTU2MjY5NTAxZTM5ZmRhZGI4MzBmMjc0ZGNkZmUyNmNlOGQgcHkzaworODQzMjQgNzkxNWQyNjZlZTJiMjVkY2E0NjVmNzA0NjUyZDM0ZTE5MjFjMDE1MiByZWxlYXNlMjctbWFpbnQKKzg0MzI1IGVkODNkNTQ2MzE1ZDJlMGEzYWIzZTA2MDVmYTA1MzYzNmQ4OWFjM2UgcmVsZWFzZTMxLW1haW50Cis4NDMyNiAzMjVkMDE2YzE5ZjcxZjg0NzQzOTJkY2Q3MDZiNjdmOWEyNjg1N2EwIHB5M2sKKzg0MzI3IDlkNGFmZDhlODYyMTE1NGMxZjhlNjk1YjYwMmY5NGY1YzQxMDNiN2QgcHkzaworODQzMjggZGViYzI4NDJiNGIxYmY5NGM4NDYwODE4MjIwZTQxMDUxOWJiMDIzMSBwZXAtMDM4NAorODQzMjkgMDExMmYwNjRjZWRmYWIyYWY4ODc1YTU4OWEwYzVjZjFiNDc3OTE5MiBweTNrCis4NDMzMCBkMGI0NjBhNDdmN2ZmYTU4ZGY5OGQ1YzYxMDQyMWUwZTc1MmQxZmYzIHBlcC0wMzg0Cis4NDMzMSAwOTNhMDk1YWE3NGM2NDg5OTk2NjRiOGY2N2YwODliZWQ4ODRiNDJmIHBlcC0wMzg0Cis4NDMzMiAxYWJhNzMzOWZhNmMyYjg4ZTUzNWVhMWYxY2FmNDk1MGI4NmNmODg4IHB5M2sKKzg0MzMzIGNiMWY1ZDA1NDUxMGU0N2E0Y2IzMDY5MzZmMjFhM2I1NWE2MTUyZDkgcHkzaworODQzMzQgMzRkZmVlNTkwYTMwNzFiMWVmZmQ0MDRjNjFlYjJjMmFiMjUzMTFiMCBwZXAtMDM4NAorODQzMzUgZDcxNjIyMDczMThmNjdjYjA4YWI0OGY5MmU4N2M3MzlhYjQ4MTI4ZSBwZXAtMDM4NAorODQzMzYgMzNjNGNjYWZjNGY1MzhhMTJjZDZkYWQyYzczYjhjMjhhZjU5ZTY4ZSBwZXAtMDM4NAorODQzMzcgOWZhYzE5NzBkMzgwNmYyM2I1ODI3YzNkYWM1MmI1NDZjNzZiZTcwYyBweTNrCis4NDMzOCA3OGU0MDMxNmUwMjM0NmFmYzY3N2Y5ZDM1YWE0Nzg5MDE1YTEwMzcxIHB5M2sKKzg0MzM5IGVhYWUwZGY2ZDA2MzBlMTUyNDY1MWJjMGM2ZmVkM2ZjY2RmMzJiNjggcHkzaworODQzNDEgNWRjMDZhMDU5NjMwYWRjMzZmY2ViYWM4MWQ1OWQzYmY1MmZjMDE1NiBweTNrCis4NDM0NCAwMjY1ZDVmN2JkMDcyMTY2YTJiODNhYjk0NjkzYzg4NjVhM2QxNzg5IHB5M2sKKzg0MzQ1IDRjOTc4Y2QzNjQwZmM5ZTdjNDQ3OTRiOTY0YmM1ODRmMzhhY2ZkZjUgcmVsZWFzZTMxLW1haW50Cis4NDM0NiBiMmU4ZGNkMTUwNDAzNDFmY2Y3NjE4ZDIxYTA2MGVmNTE4NDc0ZjY2IHJlbGVhc2UyNy1tYWludAorODQzNDcgOGY2ZTQxYzNhMjE4YTk4ZjAwMjZmNTEzM2MxZjlhZWY4NzBmNWNkZSBweTNrCis4NDM0OCA1Yzg5Zjk1NzFiYTU0OTBlYzQ2NTIxZmI3Mjk4MGMxMWIxMjFkM2MzIHJlbGVhc2UzMS1tYWludAorODQzNDkgM2UyMGFiZDdkZWY2ZTM2MDA4YmFkNWE0MGJhNzkzMGQ5Y2M5YTRlZCByZWxlYXNlMjctbWFpbnQKKzg0MzUwIDRiYjMxN2ViNDk2YTA4NzU3YTJiY2ZkYzhiNTViMjMzZjlkZDM1ODYgcmVsZWFzZTI3LW1haW50Cis4NDM1MSA5Y2JhOTkwNjhjNTRhYTlmZThlY2NlZmI4YjFiNDU2YzZiNDBmNWI2IHB5M2sKKzg0MzUyIDkyOTc5NzQ2MDRmZmRiMzE5YTllNmQ5ZjExODRhZTI0ZWM2MWJhZjYgcHkzaworODQzNTMgOTE1ZGE5ZjJkYTE5OWU4YjU0YTRkNTRkYTBlZmJmODA4ODg1YWUxYiBweTNrCis4NDM1NSA4MGQyZTdkMWQ3ZDUzNGZhNDY1OTEyY2FiNGFjNDAxZjQwOWI2MDY3IHB5M2sKKzg0MzU2IDljNTFmMzgzNjU2MzJhMWI3Yjc4NWEyNzhkNTE0YjI4MTZlYTBmMGEgcHkzaworODQzNTcgNzI2NzA1ZDAyYWRkMjFlNmQyYzFiYzU1MDdhZjNkMzZjMTQ0Y2M0MCBweTNrCis4NDM1OCBlZmU5ZjZjOGEzMWQ0ZmM4MGQ1MzcxZWJmODhkMDVjZWZiM2IwZjU2IHJlbGVhc2UzMS1tYWludAorODQzNTkgOGFkNTliNTIzZmQ4YTA2NDI2ZjU0MGQ1ZDM2MTcyYmUxY2Y1MWVkNSBweTNrCis4NDM2MCBlMWRjZGNiNTIwMWQ0ODRmOGEwZTVhY2IzODU2MWZmODRlMzhlMjM5IHB5M2sKKzg0MzYxIDI5NDEwMWY3N2NiZWNhNGExYTc5MTQ3MzRkZjBiZTg2MDZiNGY2NTkgcmVsZWFzZTMxLW1haW50Cis4NDM2MiBlNmI0NTZmOTM0NDdhMTAwNWNhYjFmNDY2ODViNTNmZmQzYzJkZjk2IHB5M2sKKzg0MzYzIDA0MGVlOTRhOTM1MGVhMjQzNzgwMjA1MGEyM2IzOThiMjI5N2VhZTEgcHkzaworODQzNjQgZmU3MjE0YmM2ZDY2YjMzOWZmMWZmMzFhMWZjNmIxZTlkMzc3OWJmOSBweTNrCis4NDM2NSBhNDkyZjFhYzA1NzU0NzllNmI4ZWRhNzBlZDcxNTdkMDdmMDEzNmI5IHJlbGVhc2UzMS1tYWludAorODQzNjYgNTM3MGQ4MWE1ZjJkMmIzMDA0ZWM4MzVlMmNjNmM5Y2NiOTA2NDdiMiBweTNrCis4NDM2NyAwYTc4NGY2YWNhZTc2ODI0Y2FhYTM0NTZiMTZiY2FhMmU3NmY0N2EyIHJlbGVhc2UzMS1tYWludAorODQzNjggZjkyMDQzYzdmZjk4NDBlMzhiZDYyMmFjYTFkNTFhNDlhMTc0MzQxNCByZWxlYXNlMjctbWFpbnQKKzg0MzY5IGVhODkzZGIyM2U3MzhjNjA4OGM1MDQxNDM3ZmVlMWI0YTU0OTFhMGUgcmVsZWFzZTI3LW1haW50Cis4NDM2OSA0NzQzNzM4Y2NhZmUxN2FjOWU1YTNjZTZkMzQzMWQ4MWQ4ODc4YjBlIHB5M2sKKzg0MzcwIDg0ODgzNjA3ZTIxYTRiMWFmZWFlNDhiZTgxNjI1OTYwNDFmNDkyYzEgcHkzaworODQzNzIgN2IyZDBkNzdlNGFjNmU1NDc3M2FlOTg2OTkwYzQyNGY0ZDA2M2E1MyBweTNrCis4NDM3MyA4MDM4OTI5MzMzYTljNzgyOWI1NzAwZDA4NWZlMmYxZDFmOTExYmM1IHB5M2sKKzg0Mzc0IDA4ZjdhZTEwY2M3OTJhZWFiMDhlOTZkNDJjZWM1MWU4YmM5ZmI3YTggcHkzaworODQzNzYgY2E4ZjhjNmNjMmIxYjI4MTdlMTQ0Yzc3MGNmZjYzMjk2OTY5NzNmZiBweTNrCis4NDM3NyBhYzM3YTI4ZGRjOGY0OWI0YTliNGE3ZWE4NjdiZGE1ZjgwOWQ3YmNjIHJlbGVhc2UzMS1tYWludAorODQzNzggMTU3MGY2ZTlhNjg3NDU5ZWI3ZWVmNGUxOWQyNmE0MTJkYWY3ZGM4OSBweTNrCis4NDM3OSBkNTAzZjdhNDU0NTY2Yjk0OGJiMWM3NmQzZjViYWZlNThhZTRmYmY1IHB5M2sKKzg0MzgwIDYyOTMwY2IwNWVkOGI4YTE0NGFlMjJlMzViMGIwODZmOTI1NGFlNDkgcHkzaworODQzODEgMDMyNjhiZjlhMjU2NGY4NGZjZjFjODU5MjgzMTAwOGVmNzAzMmZjMCBweTNrCis4NDM4MiA0ZjI5MDVlYTc4MDk2NzNmMDQ1MmYzMmY5ZDFkMmJlNWY5OGMxYTg2IHJlbGVhc2UyNy1tYWludAorODQzODMgYTBlNzU2ZDkyZDYwMDYxMGY5YmI4MTljNWEzZGQ4NjMwMzczYmQ0YyBweTNrCis4NDM4NCA4YzIxNjBiNWM4MWFmN2E4ODIwZWY2NGM5YzYxOGJmYjMzMGQ1MjgwIHB5M2sKKzg0Mzg1IDljYTgzYzY0Zjc3YWUxNTU5MjZkMmYwYTY5NTQ4NmUzMmFiZDhiMjcgcmVsZWFzZTMxLW1haW50Cis4NDM4NiAyZTU3NjE1ZTYxZjBmMWFjYTZlNTE3ODY4YTZiNTVjYWIxZmEyYzk2IHJlbGVhc2UzMS1tYWludAorODQzODcgOWZkMzI2YWY2MmQ0NWM4ZGMyYWM2OTAzMjI5MmNhYWRiODFiZjA1ZCBweTNrCis4NDM4OCA0OTgwYjNlOWU4NGExODE0OWI2YmZiNzBkYzhjNjczMzhjMTNhOTM4IHB5M2sKKzg0Mzg5IDdlOWFiZDUzYjkyOThlNzBmZjZlNGFjZjA2OGI3ZGUyMmZlMGU2NzggcHkzaworODQzOTAgMjk3M2RhYTQ3MjRiMWVkNmFmM2Q5ZWJmYjk0ZWM1YTkyMTk1NGM0ZiByZWxlYXNlMzEtbWFpbnQKKzg0MzkxIGQyNDg3MGQwMGM0MjU5ZjgwYzc3NjRjZjM5MzZiMjBiNjIyZDYyYjMgcHkzaworODQzOTIgYjNiOGQwOGY5ZDA2ZWNmYmQ4MzYzYjRiYjI4NWIwYjA2MjU1MDZhNyByZWxlYXNlMzEtbWFpbnQKKzg0MzkzIGRhMTlkMDJhYWFhYTNkNmZiNzhlMGU5OGEzYWI4ZmY4OTk1MGM3YmQgcmVsZWFzZTI3LW1haW50Cis4NDM5NCA1YTMxMDFmNTU4ZWRkZTM0M2FjYzQ0MzlhZGQwZTQwOWU1ODI0YjkxIHB5M2sKKzg0Mzk1IDQxMzQ5ODE3NDY5NzY4ZjdmMmMyOGFiMGNkZmYyNTRkOWZmZjNlMzggcmVsZWFzZTI3LW1haW50Cis4NDM5NiAzZDFjNzI2MmFhMTRkY2MzODc4ZGE2NDI5MTc1YTVhMWQxODkyNzlmIHJlbGVhc2UzMS1tYWludAorODQzOTcgOTQ0MjMyNTIxNjI0YmI3OGNiMTAxZjgzZmM5ZTMyYmI4MWEyMTU5OSBweTNrCis4NDM5OCBkODUwYzM3YjY2YjZmNmZkMzA3NWE1NmQwMjk3NzhkMmUzYzA0OGQyIHJlbGVhc2UzMS1tYWludAorODQzOTkgMDYxZTI3MDMyZTYxOTM2MzJmZGNmYThmNWQ5MjFkZTYzM2IwNjZhYyByZWxlYXNlMjctbWFpbnQKKzg0NDAwIDJkYzE3ZGNjOTczNDY5ZjI5ZmZhZjNlMzJlMDNmOWViZWQxNTJlYzcgcHkzaworODQ0MDEgZGU0MjA3YzliOWMxMjhkODI2MzhlNmM4ODcwNzdkZTkwYzUxN2U3YyBweTNrCis4NDQwMiAzMDQ1ZWI5NDA1OTdiYzJjNDRiMjQ1ZTRlNzQ2Y2ViNDdkMDc1MWYyIHJlbGVhc2UyNy1tYWludAorODQ0MDMgZmE4YjU3Zjk4N2M1ZjE1Yjg0NTk0NjM1ZTA3ZDJhYWEzZjkwMzQ1MiBweTNrCis4NDQwNCBkNjY4MDdjNTAzOGJmYjY2ZjRmMzMzNTgwYzhhN2Y5NmJlMjA0MWVmIHJlbGVhc2UzMS1tYWludAorODQ0MDUgNmJhMDMzMjJiYzIzM2JiZGQyODM1Y2E2Njg1ZGM4NzQ5OGQzOGYxMSBweTNrCis4NDQwNiAwNjNiNTU0ZDMxNTNmMzZmNmVlNDdjNmM0MWI1ZDBlMDE1NmVmMTZmIHB5M2sKKzg0NDA3IDRkOGEyNWE0ZDFmNjA4MDVkODI0YzE0MDdkYjAwNjJlYWQ0NGFlNmUgcHkzaworODQ0MDggOTI1ZTkxMTNmMGFhZWZmMTNiNjNkZWE3ZjhlODJlNDAyZGUyZTQ2YiBweTNrCis4NDQwOSA3YTM5NWJjZWFjOTFhZjM2MGQzM2I1ODMzOTk0NGEzNzFjODc3NTI4IHB5M2sKKzg0NDEwIDQ1NDdiMTQ5MTE2OTAzN2MwZGY1NDI4MmY2YTQ1MDQzZTNjM2YwMmEgcmVsZWFzZTMxLW1haW50Cis4NDQxMSBmYTRkNzhiOWUzYTJhNmI4NGI4NDU4ZWFkNzJkNTdmNzQ0MTFmMTU5IHJlbGVhc2UyNy1tYWludAorODQ0MTIgNjE5YWZjODFjOTczMWUxNWQ1ZTFkYjJmOGI1NTUzYmJhMmUzNDY0NyByZWxlYXNlMjctbWFpbnQKKzg0NDEzIGZhOTQ5NTMxNmNhOTAwZDE5MTc2MTc0ZDE2YmQwMGQ2MjdiN2ExYzQgcmVsZWFzZTMxLW1haW50Cis4NDQxNCBhM2I2NDE5Mjk2ZTU4NGJmN2JkYTUyOTAxMmM1MTU4NDlkNzk3ZjcxIHB5M2sKKzg0NDE1IDI1ZWRiNmY0MzhiOTI2ZDk5YzkxZDdlOTNhYmIzNGExZDA3YzI0NWYgcHkzaworODQ0MTYgNTM4YWU2MjI0YTVlYjVlZmVkOThmN2E1OGZmOTlmNmQwOWNjMTMwNiBpbXBvcnRfdW5pY29kZQorODQ0MTcgZDc5MjE2ZmMyMWNlNzUxMTljYjk3YTFiNTNkYjE2NmY0NDBjNmQ3MSBpbXBvcnRfdW5pY29kZQorODQ0MTggODJlYWMzYzJjNjk3ZGYwYTEwYmIyZjBmNjZhMmI0ZTdiMjU4N2U4NSBpbXBvcnRfdW5pY29kZQorODQ0MTkgZWQzZDg2MWM0OTBjYTJmYzcwNDNkZDcxOTQyZWM1NGZlNTkxNzYyNyBpbXBvcnRfdW5pY29kZQorODQ0MjAgYTM5YmE3YWNiZTI4NzA0YTI4MjE1OTQ5NzIxYmU2NmRkNmZmOTM1YSBpbXBvcnRfdW5pY29kZQorODQ0MjEgZTY2MGU3YmQ3OTlkNzBmY2E3YTcyZmEzNGQ4ZjRjZDgyM2U4MjE2YiBpbXBvcnRfdW5pY29kZQorODQ0MjIgODA2NDFjN2E2ZjRmOWMyNGZmZWZlY2FjMDc2ODQ3MTlhMGRiNGFiMSBpbXBvcnRfdW5pY29kZQorODQ0MjMgM2Q3ODUyYjg2MTI4NGQ5YzY3MTdhNWVlYjg1MDk0NjBmNTRkYTE2ZSBpbXBvcnRfdW5pY29kZQorODQ0MjQgYjIxZmQ5NGY0ZmIzN2IzMzgxODYzOGZjY2YxMDMxMjA1OWY5NDczNSBpbXBvcnRfdW5pY29kZQorODQ0MjUgZjBkMGEwNzBmMTI4ZjJiNzBmYWZkOGEzNTE3ZmFlZjRmNGE1YmMxZiByZWxlYXNlMzEtbWFpbnQKKzg0NDI2IDkzZDZhZDg1MjM1MzQxZGZjMjE3Y2Q4ZTRkN2FhN2U2NzUxZjRlMzIgcmVsZWFzZTI3LW1haW50Cis4NDQyNyA4MjIxMWIxODUwZDRkYTJiYzNkNzAyZjE2YTQ4NTgyOTVlNDBjZGMzIHJlbGVhc2UyNy1tYWludAorODQ0MjggZGNiMmFhNDFjZDc4MGEwMDNjZDdkMTBlZDJmYjU1YjZiMTI1OWIyYiByZWxlYXNlMzEtbWFpbnQKKzg0NDI5IGEwZDhkZTA0YzNhODI4NTJiYjg3N2ZhNzAyNGRmNjUxN2I2YjhiZTAgcHkzaworODQ0MzAgMWYwNGIwMDc2ZmQ4MTVlMzk0ZDdiYzRiZjdmMGY2YWIwYWI4NjJmOCBweTNrCis4NDQzMSBhN2NhZGQ3YjM0YjUyNmYwMjc1N2QzNDlhYTM2OWRhNTNmYTA0NTUzIHB5M2sKKzg0NDMyIDQ3YjkzY2RhOTFkZjViMmJkMmM5N2Q3MDRlMDJhNjI1ZjhiYzZkZmEgcHkzaworODQ0MzQgODFhOWFjNzNkNjE5NjMyOWZiMjBlZDA4YzAxNGUxZDk0OTkzZmY1NSBweTNrCis4NDQzNSAwMjYwZTA0ZDJjZmM4Mjk4OTJiODIxODg1N2U5NmFjYzQ5ZDJlNjFiIHB5M2sKKzg0NDM2IDExZmM3OThhOGI0MzI3MjJlMDlmNmJhMGI0NzgzOTZhOTRjYzExMTkgcHkzaworODQ0MzcgYmQ3NDM1YTg3MDhiNjM3ZWYyZmEyYjhiZmQ3MzVkNTRkYmIwOWZkMSBweTNrCis4NDQzOCA1NWRiNjBmY2FiNTQyNDI3MGI1ZTE1ZWY1ZjU1YjBiYzY2ZjYxYTBkIHB5M2sKKzg0NDM5IGI4Y2ZiYmZlMTgzOTA2N2U3NWUyZTczZTEwODFhYjQ1NTczMDJjMDIgcHkzaworODQ0NDAgZDFjNmIxYWI1YmE3ODU0MDgxNzI0ZWE1ZDZlYzk4YTE3NzViMTExMSBweTNrCis4NDQ0MSA4Yjk0ZjE1Y2I2NTBiYTFhYWRlYjI1OTIwMGY3MzZjYjFhMGY2YmE4IHJlbGVhc2UzMS1tYWludAorODQ0NDIgNGFkN2VmZDkwOWJjZTk0YmMyZmExZWVjMzIzNjQxMzQ0ZDQwNjZhNiByZWxlYXNlMjctbWFpbnQKKzg0NDQzIDE2Y2VmZGZlZDY4MjBkMmM1NjQ3NjIxOThlMTQ4ZGFjMjliZGI0ZDIgcmVsZWFzZTI3LW1haW50Cis4NDQ0NCAxNmQ4YTRlOTRkZDA4NzI0OTYyMmFmOWIzZGVhODVmNTVjNjA1ZWM4IHB5M2sKKzg0NDQ1IDMzY2ZhYTMyYzhlODBlNzVlYzU4YmU5ZGIyNWIyMTg2MmFjOGNlZGYgcmVsZWFzZTI3LW1haW50Cis4NDQ0NiA4ZGJkMzE2YmViZGY5ODcyNTFkY2EyMmZlMmI2MDQ3NGMwOWUyY2IwIHJlbGVhc2UyNy1tYWludAorODQ0NDcgZDU2YjNjYWZiMWU2NTVlZmI4MWM4NTY4ODQ0OWVkYjJlNjA5Nzk3ZCBweTNrCis4NDQ0OCBiNjVkMDM3MWE3MzE1OGI0Yjk2ZTYxN2YyODA4OTAzZmM1OTYwZTJlIHB5M2sKKzg0NDQ5IGI4ZWU4MDg2M2Q2M2ZhYjgwN2ZkN2MzOWY1OWE5Y2NjYmViYTNjNTUgcHkzaworODQ0NTAgN2QxNzUyZDYyMDUwYzlhMzM2MGZlODQ5MjZlYjA5YzNiY2MyZmM5ZiBweTNrCis4NDQ1MSA2MzMxNjZkNGZjMTJhZDkyYTdkOGMxYzc5ZThmM2FiN2QxZWYwNGQ0IHJlbGVhc2UzMS1tYWludAorODQ0NTIgODNhNmZmZjNmNjgzMzRmZDdjYmRhNGMzMTc4MWMxMDI1MTEzNmQ1YiBweTNrCis4NDQ1MyAxMjcwNDUxZjQ2MDQ5ZDdhOWQ5MTY2ZWMzYmMwM2JkMGIxOTRhZTgzIHJlbGVhc2UzMS1tYWludAorODQ0NTQgMzU2OTlmMzg3ZGE2ZTdkMmQ2ZGQ2NzZiMThjNjRlYzBhNzI5MjRhNyByZWxlYXNlMjctbWFpbnQKKzg0NDU1IDk4ZjMzN2E2OTU3YzEzYzkwOGVkYTBiOWVkNGQ3M2U5NTJiNThiODYgcHkzaworODQ0NTYgNzI2NDBlNzExMzQ0MThhNzAwNjVhNzU2MzRiYzFkZTk4NDdkYTg2ZSBweTNrCis4NDQ1OCA1ZTMzYjI3YzcxYTg2MTcyMTk3NTkzNGU4YmZlM2MwNzVkZjE2YjNmIHB5M2sKKzg0NDU5IDIwMjc0N2RhZTNjZmFlYjRkNjhiMDgxODExMjRlMDAyNjMzNDgxZmYgcHkzaworODQ0NjIgYmE4N2NhZWVjYjkxNGY3YjE4MzY2NzQ0OGM5NzBhNjgzNjc1ZDc3NyBweTNrCis4NDQ2MyBiN2NiMjc3NzNlNzI5MWY1ZjA2NDUwYjZhMDM1NmUyZTJlNmMwNWMzIHJlbGVhc2UzMS1tYWludAorODQ0NjQgNzAwMTljNWNmMzVmOGVjN2NiM2ZlMjkyYzM3YzhkZTM2NWQ4N2I5YSBweTNrCis4NDQ2NSA5ODg3MThlOWY5M2QxNWUyYTkzN2E2ZTFjODZjMGRiNDJmZDdmYmM2IHJlbGVhc2UzMS1tYWludAorODQ0NjcgMDZlNWZkNDk1OWU4YTFlNDA0MDVmMGQyZjdiMmNiNTA3YzA5NGUwNyBweTNrCis4NDQ2OCAxZjQ3MjA2ZDU3N2YwN2FjZTNkMjFjZDE1N2FlYTRkMjAwOGE2OTU3IHB5M2sKKzg0NDY5IGY4YmE5NTU4YWRiZjkxNWJhMmY5MjM3MDE0MmQyOGJjNWI0MzliNjIgcHkzaworODQ0NzAgM2Y3NzY0YzQwYzBiZmI5NTJhOTU1ZDc3YzYwYTk2OWUwZjY0NmJlMyBweTNrCis4NDQ3MSBkYmM5NTc2MmNmNTg2MzVjNjVkMTcxNWQxMThlYjdiNGE3MjZhNTAyIHB5M2sKKzg0NDcyIDUyNGI0NDRhODA5NTA5NWE2ZDljYmFjMWJlMjBlNDQwZDU1NTNkYmYgcHkzaworODQ0NzMgZTkyYWRhNjQyZGJkZmRiNzE3ZDMzYzhhYjM5ZGJlNzdhMTIzOWVkYiByZWxlYXNlMzEtbWFpbnQKKzg0NDc0IDg5NWFlYjQ1OTVjMmY3MGU2YWQ1MDYxN2I0ZmJiMmJhMWIxOTVlNTAgcmVsZWFzZTI3LW1haW50Cis4NDQ3NSA0NzJkY2Y1MGNhNzFjODdmYzgzMWI5OTk3ZmZiNzU1MDJmYmZmMmMyIHB5M2sKKzg0NDc2IDUzMzA1YmFlZjU4OGQ4NTdjZTEwYjA2MjJjMjE4ZTNjMzRhNTVjN2YgcHkzaworODQ0NzcgNDA1MmQzZTI4NjViZjhhMWFmNDdhYjQ3OTE3YzAwYzk5MTE4MWNhZCBweTNrCis4NDQ3OCA1ZTU1ZTk1ZDVjNzc0YjRmYzJjMTIzNzUxM2ZkNjU5ZDIyM2Q5ZjRmIHB5M2sKKzg0NDc5IDY4ZmQ0MzA4NTlhNDljM2E4MzdlMWU4YTExNzk2YTU1MTFjOGEyNmEgcHkzaworODQ0ODAgZWE2ZDA4MmE5Y2Y4MDg2N2NjMWIzMjBmMWZmMjVhYjEwMTk3OGRmMyBweTNrCis4NDQ4MSA0MGViNTllMmYyZDM1MDZmZGU3ZGE1YTc1ZjllMjI1OTA4YTI2MTg4IHB5M2sKKzg0NDgyIGU1YWUwM2VmN2ZjMTNjODU3MmU2MzQ0YTM4NDc0ODYxZGFmZWE5MTEgcHkzaworODQ0ODMgZGU4ZDNkNzkxZTZhN2Y0MWNiODVjM2U4MDk2YjBhYjAwNzYyZDZhZSBweTNrCis4NDQ4NCAwMzI1NGZjODM5MDExNjNkM2M0OTNjNGY0MGM3ZDA1ODBkZDc2MzY4IHB5M2sKKzg0NDg1IGU5Y2QxNWQ1MzllMWEzZmVkYTAwNWNiYjllY2IzZmVlMjk0NWUyNzIgcHkzaworODQ0ODYgYjJiMjYyYzVkYWE4NjMwNzNhMDBjMmIwZmY0NDlhMDkxZWU3MjAxNiBweTNrCis4NDQ4NyBiNzBkMzNlZWZkOTYwZTRkMGMyZDZjMzQ4YmUyZDU2N2YyNTliOTJlIHB5M2sKKzg0NDg4IDAwYzY5NTdjNzcxOTBiMjkxYmRiYWMzYmEzNGZjMGFlMDliNzBlNmYgcHkzaworODQ0ODkgOTBlYjRjOTczZjUyYWZmNTFhNWZhOWYxMzUyMjNiNjQzYzg5NmM3NiBweTNrCis4NDQ5MCAwYWY5NGVlOTlhNDg0YmRjMjUyMWIzZDJiYTcxMTk3NDFlNTg3NDMwIHJlbGVhc2UzMS1tYWludAorODQ0OTEgOTE5N2JhZTYxOWFhNDBiMjU5ODJhNTQ0ZDQyY2UzNDc0NjgxZDZhOCByZWxlYXNlMjctbWFpbnQKKzg0NDkyIGVkNDVhMjZmNjY2NGRhNzE5ODYyMzRhYmRkNTUwZDI2MjFjNzI2ZDcgcHkzaworODQ0OTMgNDMzMTllMjkyZDY0YmExOWE5MjgwNzI3YWY3ODJkYzM2YTA1YTMwYSByZWxlYXNlMzEtbWFpbnQKKzg0NDk0IDU4YjgxMDFlYWMyMzhlNjA1M2FkMTgyNWExOTZkM2JmNjQ4MGI0OWEgcmVsZWFzZTI3LW1haW50Cis4NDQ5NSAwZjZlZTU5YzJhNzYzYTgyYTc1YWVkZTU5NTEzYjQxOTg5N2EzZWM4IHB5M2sKKzg0NDk2IGRhYmMxMTUxMTZiZDc0OGQyMTFlZDgzZmYwYjlmMjE4NTA3OWU1NWYgcHkzaworODQ0OTcgZDJiOGYxMTAzMjEyNGJiYjI3MjNjZjcyMjIzNTY5ZGM2ZWY1MDk5NiBweTNrCis4NDQ5OCBmOTk0ZTZmZDA2ODA2MjE0MjQyOTI2ZjY4M2VkODAzZTYzZTNjODBmIHJlbGVhc2UzMS1tYWludAorODQ0OTkgOGVjZTI5YzhiYmEyOGVkNWE2ZTI0MWM0ZDBlOGJlNGQxNDcyZGIwOCByZWxlYXNlMjctbWFpbnQKKzg0NTAwIDFiNWVlNmU4NDVjZGYwMTczN2Q4OTU2ZjllNzdmMzZmNWM5MjU3MDUgcHkzaworODQ1MDEgNzI1MjMxMjExMjczMjdjMDIyMDk2ZDMwZTdiMjhhNGE1YTg5NDk1ZCBweTNrCis4NDUwMiBjZTU0NmExYjlmZWMxZjYwYmVkYjNmMzE0NmQwNmYwOTg4MDVjZDdkIHB5M2sKKzg0NTAzIGE0MTVjZjk0YzdkYTdmMzU4YmM0OTVlZjhhZTVkNjMxMTY2YzhiMjcgcmVsZWFzZTMxLW1haW50Cis4NDUwNCA1OTk3YWUyZWFiMzcxOTE3ODc0YjczZDI2YTMxMzNjN2MzYTBiMjYyIHB5M2sKKzg0NTA1IGMzYWQ4ODNiOTQwYmU0ZWVhYjc1MmIwZWFiZGVmNmRmNjAwOWMwMDUgcHkzaworODQ1MDYgNzhlYTQ0MjJkZjRjMmM4ZDgxM2JkMzdjNTYwNzcwNTk4MGJmNmNiZCBweTNrCis4NDUwNyAyM2NmNTQxODZmNTY1MzIwNjljZjgzOTM3NzQ5ZThhOGM4NjkwNGE5IHJlbGVhc2UzMS1tYWludAorODQ1MDggOTgwODNmODc2NDU1NDcyNjJkOTgxNjI3YzhiMDY0MWNlZGFmYzM2MiByZWxlYXNlMjctbWFpbnQKKzg0NTA5IDk3MjA4MzZhYTNjYjg5MzE1NmQ0NGMzNzc2OWFkNTc0Yzk1MDg3YzcgcHkzaworODQ1MTAgNjFjNDQ3OTMyMzhkMTcxNGVjZDBmNjlmZGQ1MWE5MDhhMjRmYzJmMCBweTNrCis4NDUxMSBiMzJjYmZhOTY3Mzk0ZTMzOTJlYzQ0YjAxZjU3YTgzODViYmJiZWI3IHB5M2sKKzg0NTEyIGM3OGViMDE2ZDFjNTE0ODZkYTYxMWY0MDc5NTY2MWY3MTVkNjc3NWUgcHkzaworODQ1MTMgYzRiMzRiMmE1Y2MwZWVlYjU3MjVhYWQ3YzAwMzc3N2RjMzAxNWQ3ZCBweTNrCis4NDUxNCAwYjBiZDgxMDI4OTFiYjkzZTZlYWJmNjA1NTBiNjNjNjAzNzg1MTI2IHB5M2sKKzg0NTE1IDdhMzRkZWYzNWRlNzRiZDcyZmI2NWMxYWVjZTNjMjhiODZlMDU0Y2EgcHkzaworODQ1MTYgM2MzNjg0OWYwNjM5N2I1YTFmNDYyMDRjZDM1NDU0YjkxMWM2NzM1ZiBweTNrCis4NDUxNyBhOGQ1NGU4MDIzZjIxYTYyZjNiMzZiYTM4MmYwNGRiYmRhYzM1NzljIHB5M2sKKzg0NTE4IDhiYjE2MmIwMTkyNmY1YWY5OGJmNDk5YmVhM2U2ODg1MWQ4ZGY4OTYgcHkzaworODQ1MTkgMjYzYjEwNzdhYjk3NWIzZGVlMDllNjYwMzJlYzYwZTk4OTNjMDJjNSBweTNrCis4NDUyMCAwZDg2MTQwNzU1ZjBkNDk1MzkzZThmNjYxMDE1NWZmOWJkZWVhOGZmIHB5M2sKKzg0NTIyIDU2ZGMyYTVhZjIwYTFhZWRiZWVlNDkwOWNhYmQ2ZjAxNWQ1NDc5ZjMgcHkzaworODQ1MjMgNjIwOTg3NTFkYTY3YjVlZWY5YmI4NWIyMTU3MTIyYTIyZGMwNzE0ZCBweTNrCis4NDUyNCAxNjExOTEyOTMyNGQ0MWZhZjM0NDdhMzY5MzAxOGYwNTMyNTJlZDc1IHB5M2sKKzg0NTI1IDdkOWI0ZTAxOGM2MmU5MjNkY2U5NTJlZTY4ZTAwZWYyZWFiOTE5YzAgcHkzaworODQ1MjggNzhjNGRkYTdjZGM2MzczN2ZhMjQ4N2UxNTI1MWRmMWU5NWEyYjhjMCBweTNrCis4NDUyOSA1MTA0OGY2Mjc2Y2U4NGEzYzk5MTk1OTQxZDA1MGZiYTJjMGVmZWQzIHB5M2sKKzg0NTMwIGRjNTg5MmY3M2UwMzZkZjg0NjBjZGVjMDJjZDdhMWNiYTJjMDUyZWQgcHkzaworODQ1MzEgNGY3YjU2Yjc4NzI1MjU2MTdjNTZiN2JmYzg0OTdmMmUzMGQyMWE3MSBweTNrCis4NDUzMiBhNzVlOTg5Mzc1NDJiYzUzMjM0MzI5ZDA2YzQyMTU3ZTdlZTBjYzY2IHB5M2sKKzg0NTMzIGIwYWI4MzJmODkyMTI4MTg4MmU0ZTIxN2ZjMGQzMzA5YTA4ZmU1MzMgcHkzaworODQ1MzQgNzgxNGRjOWYzMWEyNWM5Mzc3ZWM2NmM1M2UzMTljMjVhNjY0MWI0MiBweTNrCis4NDUzNSA3ZTBkODY2Y2E4NzE0ODI0Y2IyYTlmOGU1NGVlYmM4NTk4MzhlNzY4IHB5M2sKKzg0NTM3IDdhN2I1MzFiY2I2NGQxMjVkZDNiYjAxZjRiNzAzMWE3MDA0NTk4YTUgcHkzaworODQ1MzggNzg4Nzk3MWRkYTQ4M2JjYmZmMjE5ZjFlYmE1OWQzMGYwZWU0OWYxZCBweTNrCis4NDUzOSAyMTM5MTYwMjg3YTExYTJkMDZlYWFiMTYyMmVhOTMwZTMxMTE1NjRmIHB5M2sKKzg0NTQwIDU2ZDQzNzNjZWNiNzNjOGI0NTEyNmJhN2IwNDViM2M3YjNmOTRiMGIgcHkzaworODQ1NDEgMWQwZDMzYzA1MTVlZThiYzZmZmU2NzRkOWExYzJlZjY5YzkxMDUzYiBweTNrCis4NDU0MiA1Yzk5ZjhjOTBlNjY0MTY1NGEzM2QzNzdlZjIwYmEzM2Q4Nzg5MTlhIHB5M2sKKzg0NTQzIGMzNDg5MjU3NWJjMGU0YWYxMTEwMDUxMDAwZjk3NmExY2I0MzEwY2UgcmVsZWFzZTMxLW1haW50Cis4NDU0NCA4N2FhNjJiZDE3MTU2ZTllMjg4YWRjMDIxOGQ3M2FmYWZjMzMzNTdiIHB5M2sKKzg0NTQ1IDhlZjY4ZWJlYzBlMWUyZTZiMTY4ZmMxMjdmNjc4YjVjYTQ5N2Q4MWYgcHkzaworODQ1NDYgNjljYjA5ZjI2NDI0MGNhM2MzMDMxNzYwZGYzYTEzNGQ2MGYyNDU1MCBweTNrCis4NDU0NyBlNTU4YWM0MjVhNTE4NWJmMWI1NjA4MzExNjI0ZDA5NTZlZjEyNjI0IHB5M2sKKzg0NTQ4IDA3MTIyNWFmNjRhM2Q3MDU2YjBkNTM0NmEwMGRlOTdhYzEyOGUzNjUgcHkzaworODQ1NDkgNjU3Zjc5NTE5OWI5ZTdlMzQ5MTI3ZWZmYzJmZmUyOTc2MzVlNGZkMyBweTNrCis4NDU1MCA2MzI0ZDIzOTYzYTcxOTA0NWM1MzRmY2IxMTNhNDFmZDYyZjI3ZTkyIHB5M2sKKzg0NTUxIGQzODkzNzQ3MWY4OTg0YWM5NjA1YTllNTdiYWZiMjJjNzFkYzYxNzIgcHkzaworODQ1NTIgMzlhYWEyYTdmZDRiZjZlYTI1NjVlNDNjZDE1ODJiNDE2YjMzZGNlNiBweTNrCis4NDU1MyAxZDM3NGU1YmEyZjEzMmViOTliN2Q1NWM2ZGM0MTFjZTJlZTdmNjA5IHB5M2sKKzg0NTU0IDQ5NDQxZTg4Y2NjMTRhZDQ4ZmZjMWMyMWEzNjRkMTE2MWI3Njk1OGUgcHkzaworODQ1NTUgZDkzOWM4MGM2NjZiZDM3MzhiNDA3Nzk5ZTI3NmQ1ZmFjNDhmMzExMSBweTNrCis4NDU1NiAwNjJhYjUxNDc0ODc0NTk3Y2ViNjVlMTNhMzg0NDczYTlhMWE3NzcyIHB5M2sKKzg0NTU3IDA0N2E5ZDdjYTI0MWRjMWI4Y2ZmNmJiYWM4ZDA5M2ZiOGM0OGRjZWYgcmVsZWFzZTMxLW1haW50Cis4NDU1OCAyYzJhMzhlMGNmMzA3NjU1MWNhYzg1NzdkMTZkZWFmNGIxYjlhMzMzIHJlbGVhc2UyNy1tYWludAorODQ1NTkgOWJkYzU5MDEyMDdiOGNkODBmNzNjNzVkYzdjYzVlYzdiZmJhNDJhMiBweTNrCis4NDU2MCA0YTE0NTVkMzY4ZmY1ZmZhZGM4MTRmN2U5ZDZhYmY1NWQ3M2ExMmIzIHJlbGVhc2UyNy1tYWludAorODQ1NjEgZjZkZmQ2YzU2M2UxMTU4YTQ4NmM2ZjNhNjRlZGRhNTJlN2I4ZjhiZSBweTNrCis4NDU2MiAyMTQwNTgxMmYzMTI3MGNmZmE0NjBkN2RjNDM1NTRlYWI4Y2NhYTVmIHB5M2sKKzg0NTYzIDBjMGYxZDBlYjc3ZTk4MGY3MGZiNDNlY2Q4M2Q4NjcwYmQ0NTY4NTUgcHkzaworODQ1NjQgNTQxMzM4Nzk1OTUwNzExOWExMWY2OTlmYjY0ODliM2ZkMTkwZWYzOSBweTNrCis4NDU2NSBlZjE2YjRiNzlkNTQ3ZjYyOTg5ZjIwYThlNGM0ZTRjOTgzOTk2NmVhIHB5M2sKKzg0NTY2IDZhOGI1YTYxOGU3YWVmMGM0ZjQ2YWUyNDYzNDAwMGJlNmNhZWFjYTIgcHkzaworODQ1NjcgYjMwNjEwNWJmODNkZmEyNjVlZmMwMjVhY2Y4YTdlMjE3YWI5Mzk3NiBweTNrCis4NDU2OCAxMjQ3ZmE3NTE3NzIxYWRjYTdlNTM1NDFhYjE3MzcxMGVjYTlhY2NhIHB5M2sKKzg0NTY5IGZhYWFiNWE2NTdlYjU0OWIyMTdkZGIwZDRiMmIzYjAwOWMxMDFhMjYgcmVsZWFzZTMxLW1haW50Cis4NDU2OSAxNjkyYzBiNjAzMTc2NDE1NjI3M2YyMDkzNzczYWU3ODNiOTU4NzNlIHJlbGVhc2UyNy1tYWludAorODQ1NjkgY2Q5MThhYzdiZDU1NGM4OTZmNTkzYjk2YmI1OTU0ZDJmYTJjZTQ4NCBweTNrCis4NDU3MCA1NGI3OTY0ZGQ3YTk1ZTMwOTAyMTAyNjY1N2ZiZWYwZDM3YjNjMjg2IHB5M2sKKzg0NTcxIDU2Nzg3NTlhODAwOWE3MDdkODU2YjUxOTI2NTlkM2ZhYzdiYWM2MGMgcHkzaworODQ1NzIgNTNjZDhlY2RjZThhZTY3MWFiNTk2MjM3ZmY2ZDJhZjc5NTU1OWIyNyByZWxlYXNlMjctbWFpbnQKKzg0NTczIGIzMmZkYTlmNzJmZjk1ZDE0ZDFlMGNhY2VlYTBlMWU2NDZlNDliZmQgcHkzaworODQ1NzQgNjU2NDJmMDg1YzU1Yzk0NWE5YmIwNTMwYTQ5MGIyOTIwZDQxOGVjYyBweTNrCis4NDU3NSAxMWJhNjM5N2UzYTRmZTQ3NDdhZTExNTZhMDdjMTg2ZjhkMTI3MTRjIHB5M2sKKzg0NTc2IGMyZjg0MThhMGUxNDYxMzkxZGY2MTJjNWZkMjM4ODczMjM0N2UyYzYgcHkzaworODQ1NzcgZTA3YzQ0ODNhZDNiNmZiMTUxNWQ3N2M4OTBjYzJkOTEwZTg1ZDY0MCBweTNrCis4NDU3OCA5Y2VkN2YyZjIwYjNmMWQ3M2FjNzNjMTlkYzE5MTA1OGU2ZjJkZGZkIHB5M2sKKzg0NTc5IDk0ZTFmMjM2Yzg4ZDc3OTNmNmJiMTdjNGNjOWUzMmYzMDU3ZDM0MmIgcHkzaworODQ1ODAgNmJhMjBiOTAzOWFlNjk5MDI4Zjk4MjQwZjkxYTNhNDhhMDY4NjE3OCBweTNrCis4NDU4MSBlODNhZjE0MWRmZmRhYThmNTVhMjdlYzE2YzQ0MDIzOTZmYTg1OGMzIHB5M2sKKzg0NTgyIDFhMWU3MjU0ZDk2NTU2N2ZhNGQxZTZhYzFkZTE1ZDIzZjhiMTE5MDggcHkzaworODQ1ODMgZTRkZTIxNzZmOThlMzBmNGM0ZThiMGFjN2I1YzQyNTlhMGJmZjhmMCByZWxlYXNlMjctbWFpbnQKKzg0NTg0IDRhYzhhZTdlODAyMmM0NGVjY2U3MWViOTAxZTFkZjMwNjlhMWFlNjkgcHkzaworODQ1ODUgYWRmYTFlNDg4NzM0ZTJjY2U1NzJiOGMyNTE1NDhkZGU5OWM4NjFhNCByZWxlYXNlMjctbWFpbnQKKzg0NTg2IGMyMTk5MTc1YWRhOGRlODFmMmNlMWZhY2E1YmRhNjVmYzg5MzIxYzEgcmVsZWFzZTMxLW1haW50Cis4NDU4NyA2MDk1ZWE5ZGNmZjQwMDk1MDIwY2VkODM1MjY0NTlhZTg1MzhiNmMwIHB5M2sKKzg0NTg4IDFjMjJjMWU0NTNkNGExY2NlNzg1Mzg0YzgzNzhkZjEwZDJlMWEyNDQgcHkzaworODQ1ODkgODRjMjRkYjEzNjc3Yzc0MDIxMGFmMmE0NmM4MzM3NGUxYjVhOGE4ZiBweTNrCis4NDU5MCAzZTVhODkzNzZkZjU0NDA0ZmNmNTFmMDk0NTliMDU0YzA0ZDI1NGVhIHJlbGVhc2UzMS1tYWludAorODQ1OTEgNzQzMmU1MDhlYjY2YTllMGM4YWRjNDQ2NmU1YTAyNWE3OGY3Y2M4NyByZWxlYXNlMjctbWFpbnQKKzg0NTkyIDRhM2RkYjg2MmE3MmNhZmRmNWFhODMxYjBlNWUwZmYxOGY4MTE4ZDUgcHkzaworODQ1OTMgNWRkMWU1OTRkOTE5NWViNTEyOTA4NTFhMDFhM2E4ZDE3OTAxODExZCByZWxlYXNlMzEtbWFpbnQKKzg0NTk0IDRiNjhkNDczNDhhNGRhYjc4NTQ1NjIyOTA4N2EwNjYyNDc3OWM0YTYgcmVsZWFzZTI3LW1haW50Cis4NDU5NSA3NzBjM2VjMDU2ODU2YjQ0ODRiYjM0NjI3ODIzOTRlNDJkM2MzYTUwIHB5M2sKKzg0NTk2IDg5ZmU1MTc5YWVjNWYwMGM1ODJmOTkxOTM5YWEwMTQ5MWZkZmQ3NGUgcHkzaworODQ1OTcgOTFjN2Y0NGU0YmVhOWRjYWZhMTgzYTQyZWJjZDYwM2IwMzI4ZWVjYyBweTNrCis4NDU5OCBiMmY3Y2Y5YzY3NzYzNTlmMjc1MTYwZmFkMTUzZDU4OGUyMTczMTdmIHB5M2sKKzg0NTk5IDYzY2VlZjA0NTNmNDA2YWJkMjBmOWM0ZjVmMjIxOWM3ZWIzODQyYjUgcHkzaworODQ2MDAgMjQwMGY1NWVhMzEyNTMwODg4ODg1ZTBjZjhjZjg5YzAyMDI1ZmE2MiByZWxlYXNlMzEtbWFpbnQKKzg0NjAxIDVkNzNiMDM2NTczYjc4N2Y1MDIwMTU2YTZkZDAzNWZhNTY4Mjg0ZWUgcHkzaworODQ2MDIgZDZkNGI4NDY0YjhjZjZlYjEwMjg0ZGUxNWFmOWJiYzAxMzZjMTI2YyBweTNrCis4NDYwMyBhZjQxNGIyOWQ0Njc4NzEzYzI0ZjkzZGJiMWFhOTdmOTg3ODgzNTFhIHJlbGVhc2UyNy1tYWludAorODQ2MDQgZWYwYTA3ZDU0ZGMxN2QzMGI4NDk1MDYyMTZkNDQyZDIxZmZhZTFiNiBweTNrCis4NDYwNSA0YzY0ZTY4OGY2NjVlZmQ2MjUwNDcxMTRmODc2NDcwNDczZDkwNTQxIHJlbGVhc2UzMS1tYWludAorODQ2MDYgZDAwOGY0MDZkYzk4YzlkMWMzYjdkZGQ0ZDY1MWM2OWU1MTRjNjY2OCByZWxlYXNlMjctbWFpbnQKKzg0NjA3IGMyZDZmMGNmOTI2YTJmM2UzZmEwMGExNjYxMmQ5OTBkM2UxYTViNWQgcHkzaworODQ2MDggOTYwZGUwMTAwODFiNzYzMTAzYTk1NzRhZDBhMDJkYjg4ZDgwMDU5OSBweTNrCis4NDYwOSAzODRhZWU2MjczZTgwNWI2OTZmMDMzYTVlZmVkZDQyZDY5Yzg1ZjNkIHJlbGVhc2UzMS1tYWludAorODQ2MTAgMDNhNmY3ODM5ZDZkMzUzMmZlZTZiYzM4MTMxMTY2MTIzYTdmMmViOCByZWxlYXNlMjctbWFpbnQKKzg0NjExIDU1OGYzMzhlMTMyMDgxMTc3ZWM2YjBiZTM1YTk3NjdjNDI5MjdhYWMgcHkzaworODQ2MTIgZTA2MjNiNmI0M2I2MzdhMzIxMDVjMjkyZjhkMjRhZmRlOWM4ZjY5ZSByZWxlYXNlMzEtbWFpbnQKKzg0NjEzIGJhZjFhNDgyYjU3ZDc2NmY3YzVlNjU3OTUxNTY1NDU5NGExMTRiMDcgcmVsZWFzZTI3LW1haW50Cis4NDYxNCA4OTIzZTE0OTNhMzQ0OTM2ZWNiN2E4Yzk3MzA3M2RmMzU0ZjhkNTEyIHB5M2sKKzg0NjE1IGQyN2Q0YmQ0ODhkYzgzOTQ2NGVlMGM1MmUwMjRlNmI4ZWExZTQ1NTQgcmVsZWFzZTMxLW1haW50Cis4NDYxNiAwZmRhODJiMWJmYmJjNTM4ZGE2Njk5YmU1Y2M0MmQxN2M3YWNjZjRlIHJlbGVhc2UyNy1tYWludAorODQ2MTcgZDUzMzE3MTJiNTA5ZDU3ZjQyNWUxYTBkNzQwNGM5MTc1NGM1OWUwMCBweTNrCis4NDYxOSA3OWExNGQzNjg1NDAxYzM1MTlkODkxODVhZGNlYTZmYjA3NmNjYTVmIHB5M2sKKzg0NjIwIGUzZWRkMmY5YmI2YWMzMDZjMTY0YjFjMDM1NzhkNGFlNjIwZTEwOGYgcHkzaworODQ2MjEgZTYwZWYxNzU2MWRjZWM0MjZiMjIxZWEyYjIyYzA5MmNjMWYzZTEyYiByZWxlYXNlMjctbWFpbnQKKzg0NjIyIGEwYjRiMmRmZDlkNWE4MTNjYzQ1MDljNzQwMjFjMmUzZDFlYzIxNGYgcmVsZWFzZTI3LW1haW50Cis4NDYyMyA4NTE2NzI0OThmZTUzNGRiNmU2NTU3YmYxMTk1YTE2MzYwYmFjODBkIHB5M2sKKzg0NjI0IGM0N2ZmM2E1M2E0YTUxYWFlMDA2ZjNhN2FiMjZmM2VmOGIxZGJhNjcgcmVsZWFzZTMxLW1haW50Cis4NDYyNSA1NzU4NDQ0MjdhOTVjZmMxNDE0ZmYwMDQ2ZGE4NDlhZDY3MzI0Yzg2IHJlbGVhc2UyNy1tYWludAorODQ2MjYgYWE2NmRmNzcyZTIzNzg0N2EzMzllMWEzZWRlNDZmOTE1YmE4NGFiNCByZWxlYXNlMjctbWFpbnQKKzg0NjI3IGY4ZjY2ZWJjZDViMWViNzFhM2M4MmFmYjFlYWI2OTkxZWFjNWM3MGQgcmVsZWFzZTI3LW1haW50Cis4NDYyOCBkYzU5ODZkMGU1YTQ0MzE2YzI3MmM3ODNhZDFhM2FiNGNhZWNkZjMwIHJlbGVhc2UzMS1tYWludAorODQ2MjkgYTRjZmQ1YjVkZjk2Njk3NTMxYzllODUzOGY4ZmViNjY3MGIyODQyNSBweTNrCis4NDYzMCA0NWIyM2YzZjdmNmI5ZWNjZDQ0ZWQyMzk1OTg2ZWUwZmQ0ODczY2EyIHJlbGVhc2UzMS1tYWludAorODQ2MzEgMjk3ZjY2Y2IzNzY0NGE0NTI3MDg3NDlhNDAzNjYyYWQ4ZDc4MGUxYiBweTNrCis4NDYzMiBiMTg2NWNhN2I2NWMxNDZjZTBmYzVhMmJlNGUxYTJiYzNkOTJlMzU3IHB5M2sKKzg0NjMzIDdjMmViNWI2Y2M1OGM2NGJiZTA3MTE2ZDhmOTg1ZTJkNjlhN2JlMzEgcHkzaworODQ2MzQgODYyN2MzZWM5NzExMjZmNDA5NDc5MWJlOGQ1M2YwZDY1MWNhODc1MyBweTNrCis4NDYzNSBhMmFlZGRjMTliNjZiNWMzOGU1MjE5YWMzMWI2ZTZlOWUxMjdiOGQxIHB5M2sKKzg0NjM2IGIxY2YzZjdmMzA0Y2YwODRkZjRlMTk5ZTAyMmNmN2RkN2EzYTUwOTggcHkzaworODQ2MzcgMTMyMjI2NmY5NjExNWFkNTI3YzA0ZWU2MTEwYTFmYmE1YmYzYzcwMSByZWxlYXNlMjctbWFpbnQKKzg0NjM4IDQ0MWU5NGNlNDA4NzE2ZmFkNjc1ZGQwMmExNWFjM2ZiNDg5YjQxZDAgcHkzaworODQ2MzkgY2FmMGI0YjA1NjllYWQwNzIyN2I2MTQyMDdmMmNiOGQyNTg0OTgxYSBweTNrCis4NDY0MCBhNThiZjY2NzI1Zjg2ZjBjMGY4ODRkYmRhY2IyNzE3ZDVlYWZhMWZjIHB5M2sKKzg0NjQxIGY4Yzg5NmFkNzg3ZjhkMDhiMzcyNWU2NGI3MWFlYjAwNTI2YjlmZDggcHkzaworODQ2NDIgMmM1NDcyMTBmOGM5ZjkyYWUxZmFkYjcyNzBjNzdiMTZlYzFjMjQ4YSBweTNrCis4NDY0MyA0NjJlMGJlM2I2YzQ2ZjZmN2ZlNmI5MGFlOTExMjU3MTJkMzc4Y2IyIHB5M2sKKzg0NjQ0IGM4ODU1MGNhMGZhZmI2NGFlNTk5Y2FkMDY0MDUzYThlNmNmNThmNGQgcHkzaworODQ2NDUgNjM2MTliNDI1ZWNhYTM5MTRmZmE2Y2U5ZDM5Y2IwZWU3MWZjYzIxOSBweTNrCis4NDY0NiBmZWE4NmM1ZTMzODU4OTBhNTNlMzQwYTE3MGQ1YTFmODQ5ZjBkNzE2IHB5M2sKKzg0NjQ3IDcxYjI2NGUxYmI3MTY0NDc3OTExYjE4YzVkNWU2YzY1OGZkZjBlOGIgcHkzaworODQ2NDggOTY1OWU4YzQwMDc5YjI5ZjI2ZTViZGQ0MmI3NGUyMThkYmRlN2ExYiBweTNrCis4NDY0OSBiYTU0MDk2YjdhNDI4OTBlZmFiOWI5MTljYmQwYjc2NzY2MDQxMGI4IHB5M2sKKzg0NjUwIDM4Y2E2MzUxODA4NWY1NzRlNDAxMzIwNGNkNTI4MzQxNzg0NjA4NjcgcHkzaworODQ2NTEgYTUxZjQ2N2Y1ZTFlODBiMDBhNTk0M2I0MzU2NzY2N2I4MzMxN2RkZCByZWxlYXNlMzEtbWFpbnQKKzg0NjUyIGQxM2MyZjkwYzE2OWFhNzZhMmYwNjc0NDc5N2NjZDk5YTk0NDgyODcgcmVsZWFzZTI3LW1haW50Cis4NDY1MyAwMjdmODE1NzliNGEwYWMwMWY1NjJlNWRhNjcyNTdjMTRhYTgyNTc4IHB5M2sKKzg0NjU0IGQ0OTI3MTU0Yjc3YjhmMjM2MTBkZjE5ZTE0MTZjYmFiNjk5MzY4NTYgcmVsZWFzZTMxLW1haW50Cis4NDY1NSBmYzc2ZThjNjE3ZGM0N2M3NzlkMGMzOTQ5NzhiMjhhYjFlMjUzMmYyIHB5M2sKKzg0NjU2IGFlNDcwNzk0OWNiMjQ2MDkxZmJiNjJlNjE5MDQ4M2Q2MjI1ZTZmMmIgcmVsZWFzZTMxLW1haW50Cis4NDY1NyAxYjdlYTQzZTVjNzk2N2I1NTM2ZTRjZTM3Y2VjMDlhYTU0NmI1NmI5IHB5M2sKKzg0NjU4IDZmMTRmMDIzNTllODBhYjM4ZmNkMjc0NWRiYzI3YWQxNmE0MGExNTUgcHkzaworODQ2NTkgODQyMTdiMmQ4YzBjMDZjZDY5OGZhNjBjNTI2ZWU0NDI4N2ZkOWYyZSBweTNrCis4NDY2MCBiZWU2ODNjYWU3MWZjNzlkZTkwZjhiNjg2ZTQ2NmRlYWY3NDcxMGExIHJlbGVhc2UzMS1tYWludAorODQ2NjEgZjEyMDdkOWE5YjA3YzEzNmNjOTEyMmMzMWQ4MjEyYTdjM2Q3MDBjMiByZWxlYXNlMjctbWFpbnQKKzg0NjYyIDJkYTVlY2QyMjRmZmU3ZmU3NDljYzdhZjNjMGY0NjI5Yjk1ZTBlNmUgcmVsZWFzZTI3LW1haW50Cis4NDY2MyA1YWJhY2QzNTE0ODUxZGEyNzRhMWRhN2FjZWU4YTViNzEyYjE3Y2JhIHJlbGVhc2UyNy1tYWludAorODQ2NjQgYjMwNDMzNmUwZTM1YjQ3OGQ1MGQ5YzE3YWJiNmJkZTM0YmI1ZGU1NSBweTNrCis4NDY2NSBlZGQwNTZjNGE0MGQyMjI1NjBkNjkxMjJlZDcxZGE4NWFmYmJhNTVkIHJlbGVhc2UyNy1tYWludAorODQ2NjYgYjhlNTEyNWU2ZmJkNzM2YjE0MzkxMzllYTQxMDNlZTZkNGM0NzY4MyBweTNrCis4NDY2NyA0NTdhYThkYTQ5MGE4NzdmZWFjMDUyYWYwNDQzNmQ0NzEwMDRkNjI3IHJlbGVhc2UyNy1tYWludAorODQ2NjggYzIwZGU5NmE0MzVhYzYwOTUwNGUyMjc5OWUwNmVhOTU2ZDZiMTQyNyByZWxlYXNlMzEtbWFpbnQKKzg0NjY5IDlmYWE4MGQwMTExZjFmMzJlZWI0NzNkYTllNWQ1MWViMjI5ZDIxZmQgcHkzaworODQ2NzAgYjMxNGFkYzliY2RlZWFkZDAxZWEzMzBiMGFjMzdiZjI5N2Y4OGM1MyByZWxlYXNlMzEtbWFpbnQKKzg0NjcxIDJlZWE4OWQwOTNlMjE0MjEwOGFhYjA3NDBmMzA3NTBhZDQ1ODgwZWUgcHkzaworODQ2NzIgYzY2NjlmNGJmOGM1NGVkYzU1M2NjYmNjMzE3YzY4ZDBhZTM4YTkwYSBweTNrCis4NDY3MyBkMGY5YWZjYjA2MTllZWIwOGUyNzVkNTRiZjgwNTM4MjhmNjZjMDMxIHB5M2sKKzg0Njc0IDM3OGUxNTdhYzAyNWZjOTlhZWVhOTRiNjMzMjQ4OWQ1YWI1ZWQ5OTcgcHkzaworODQ2NzUgYjQzZDYzYmYwZjc4ZjEwNDU0M2E2OGYyOTg5MWRkYTNmN2I4NGUzOCByZWxlYXNlMzEtbWFpbnQKKzg0Njc2IDIxYWU0MDQ2ZTQ3MTAxZDkyYzYzYWRiZjhjNDdlYTY1YjE5Y2MxOTggcmVsZWFzZTI3LW1haW50Cis4NDY3NyA3ZTJjZWI1ZDI4ZTMzOTMyZmUyMTU1NjcwODg1MGU2MTdmNDU3ZjE3IHB5M2sKKzg0Njc4IDM5MGFjZjUxMzRlOTRhYTRjMjJiZDZjMzgzNzlkMjE1ZmU1N2U4ZTggcmVsZWFzZTMxLW1haW50Cis4NDY3OSA1YzRiZTYzY2FiNGEyMmUxOTA0OGY1ZjhjM2VhMjE4NGMyZTMwOTE4IHB5M2sKKzg0NjgwIDkzMzk3MzhmODUwNGY4ODM3MjA5ZmQyZDU2OTdiMjM3NjRjNDUyZTIgcHkzaworODQ2ODEgMTZhNDJkNWYyMjA5YzNjYTEzOWViODRlMjdhMGMzMDRmNjMwYWU2NyBweTNrCis4NDY4MiA5ZjBkNjljYWVkM2IyZGUxNjg1OGZjMDhmYzU4NzdkNzZkODI3MGQ4IHJlbGVhc2UzMS1tYWludAorODQ2ODMgZTI3MDMwZTBjY2VkYThlODg3OTk4N2I4OTM5N2E2NWIyNjQ2MDYzOCByZWxlYXNlMjctbWFpbnQKKzg0Njg0IGNhZWNiNmViYzgzYzJhNTZhMGZjOGFjMGJkNTY5NDdiMjMwZDAwOWQgcHkzaworODQ2ODUgMjVjYzIyNmRjOWJkNGFiMGUyNGU0ODI0NmFkNzM5ZmYwMmM0ODIyMSBweTNrCis4NDY4NiAyNTI4OTVkNDkxNTcwZDVhMjc0NTI4MDliNTgyNzE3YmU0MDliMjRkIHB5M2sKKzg0Njg3IDk5OWQ3ZDIxMmYxNzkyZTA0Y2RmM2E4ZmM2OWIxMTgyNTYzNjUxM2YgcHkzaworODQ2ODggNTgzMDc5ZGUzN2UxMzkwYTgyMzhkMzE0NTE2ZDJlNmI1MzBlNTQ2NSBweTNrCis4NDY4OSA5MjY1NzUyYTFjODNkOWE1MTlkMWIxMjA4OTM4NDdlY2Y1ZTZjNDFjIHB5M2sKKzg0NjkwIGU4MjdiOWI4YTdiNGE1ZWVhMmNjYmFjYmUwZGEwZGFhYTUwMWQ1N2EgcHkzaworODQ2OTEgMTE2N2UzOTNhYTRkNmE0ZWUwYWEzOGM3NjNjOGE2OTk5MDMxMGQyNCByZWxlYXNlMjctbWFpbnQKKzg0NjkyIDZhY2NjMmM2NWNiODQ3ODAxZWI3ZGMyNDcxMGVkMzlkMGE4NzJjYTggcHkzaworODQ2OTMgNTY4NDRiNzE2Y2Q3NTYwYWMxMDAyZmQ3MGMxNjEyZTYzNGM3NmI0ZCBweTNrCis4NDY5NCA1ODZhNDExY2FjN2M3MGY4ODg2YzhjNzUwY2NmOWJiMjc0MTIwYzhiIHB5M2sKKzg0Njk1IDQ3MGE1MzYwNTcwY2MwMWU3ZTU5ZWU0MmQyYjNkOTU4YTg2MDBhNmYgcHkzaworODQ2OTYgYTYwOGZlMWU4NmYwMDgyMjQ0N2EwZGI1NGY1MzEzOTgyMDQzMDZiZCBweTNrCis4NDY5NyBmMzFlMGM3YzAyZTMzM2Q3OTIwZTIzM2E2ODY2ZjgyOTlmNGEwMGIzIHB5M2sKKzg0Njk4IGUwODBmMTFmY2ExOWIwZGQyMGZhOWQwNzg0YmUxZGZiNGM2YjE0YjIgcHkzaworODQ2OTkgMTc2NDc5NmU5ZWNhMmQzNTVlNGRmN2MwY2NkMzJhNmQ1ODQ5MjE5NSBweTNrCis4NDcwMCBmZTQ3ZWE4OTcyZWJlNmJhM2Y4OGI2MjU2YWM5MWQ3OWE1ZDU3M2IwIHB5M2sKKzg0NzAxIDg4N2VmMzk5NzZkMzlkZDg1YWZkODQxMTIxZDIyNWVkYjJlMjYzOGEgcHkzaworODQ3MDIgZWZjOTlhMjA3YmJlN2QyZDYyOGViNjY2MjM2YjFjYmZhYTY1OTM3ZCByZWxlYXNlMzEtbWFpbnQKKzg0NzAzIDIwYTIxNTNiMGRkYTg5NWQ0YjBhNGMxYmFkYTBkYzU0YTY1M2Q1ZmIgcHkzaworODQ3MDQgMWNmYWQ1NWRlNWJkNjYwYTJjYzcyOTZlZDYxZWRmM2NkNTZmMTJlOCBweTNrCis4NDcwNSA1YzljMDRjMjliMmMwYmZhOGNlYWU3YmQzNzNmMjNiNDI0ZGM2ZTE0IHB5M2sKKzg0NzA2IGVjOTJhOWZkNzc4MDZmMGE3OTEzYmU3MDkzODZiZGQ0NGY0Mjc5YmUgcHkzaworODQ3MDcgZjcyZmQyY2RhMzQ0MmY1OTUwNDJjNDRhNDA3ZjBlZjcyNzZiOTY3MSBweTNrCis4NDcwOCBjYjkxMzA3ZjcwNzJlYmFjOTRlNmFiZTE5OTE4NjcwMGFlODNmYWUzIHJlbGVhc2UyNy1tYWludAorODQ3MDkgZTBhN2I2OTY4NTVmNDBjOTQ5MzJlOTg3Y2E1NDUxNmM2OGJjNzIyYiByZWxlYXNlMjctbWFpbnQKKzg0NzA5IDUyMWViN2ZlZTY3YTc4MWNhYjVlZDFmNTM4ZGNhYzk3YmE1Nzk0ZDIgcHkzaworODQ3MTAgMWJlODc0Y2U0ZWFlZjMwNDQyNGNlOGVjZjM4YTlkOTc2YjJmZGFkYiBweTNrCis4NDcxMSA3Y2YzYmYwMTUwYTRkNWM2MDI0Y2M3MDQ2ZDM3N2QwZDVlMmE4ZTU2IHB5M2sKKzg0NzEyIDAwNDI1MjA5YzQ2ZWUyNTU3YTc2YWZiOGViY2QwZDZjMzY0OWQ2ZDAgcmVsZWFzZTMxLW1haW50Cis4NDcxMyA2ZWI0YWZiZTc3ZTg1NDgwYzM3MTA4NGYxZmIyODdhNzk3ZDQ4ZWVhIHJlbGVhc2UyNy1tYWludAorODQ3MTQgZDkwNWM5NGY5YWUxZDFhZWRjNjI3MzQxNjE1ZjFlZmY5YTkwNzRhNCBweTNrCis4NDcxNSA4ZjgxZWQ4YWNiYjAyNDQ0ZWE3NDFhNjY1ZTY0OGE0M2ZjYThiNDQ4IHJlbGVhc2UzMS1tYWludAorODQ3MTYgNjAxYTBkZWZkMTViYjJiOTkyYWYxNDEwZjVjYzdhMzFkZmZkMDAwMyByZWxlYXNlMzEtbWFpbnQKKzg0NzE3IDdjOGYzNDU5ZDlhZjhhNzZjMzIxNjQ3NmJlZWI4NjMwNTA2OTQ2ZjcgcHkzaworODQ3MTggMTdhOGY3MDRmMDdkODk0MmI1N2I1MmFkMjU1MjYwMTU2ZmU0MGNiNyByZWxlYXNlMzEtbWFpbnQKKzg0NzE5IGZkNjczN2FhODhkYzQ2ZGZhM2NlNzlhNDM2NGE3MzUxZTY3Y2I3NDIgcHkzaworODQ3MjAgNTMzODU4YTI5ODlhMmZiOGQ3ZDY4YTAxYTAzODM4ZWUwMzVhMTIzMiByZWxlYXNlMzEtbWFpbnQKKzg0NzIxIGM0ZTcyMzNmNTQ4ZGJkZThmZWI2NjczZWE0Mzk1OTljMzkzZTJiZmYgcmVsZWFzZTI3LW1haW50Cis4NDcyMiBiMDA3MDAxZmNhNzEwYzVjMDYwZWUxMzNhYWU4Y2NlNGNiODkwNDNmIHJlbGVhc2UyNy1tYWludAorODQ3MjMgYTM1MTA4NjEwNWM1M2NlMTQzM2Y2NmQ0N2JkOTAzZTVmNzI2NDZlMCByZWxlYXNlMzEtbWFpbnQKKzg0NzI0IDVmM2E2NDU2NGM1MWExMjg2MWIwYWUxZjFkZmViNDE0ODhmMzYxOTMgcHkzaworODQ3MjUgNTY3MTRlOWM2M2VmYjg0YzljNTcyZGVlOTQ1NjBiYTEzODJhZWQ1MyByZWxlYXNlMjctbWFpbnQKKzg0NzI2IGMzNWI0MmE4ZGEzZmI4NmQ4NzIxNDgyMDRmNWRhNDRlNTI3ZTk2MjMgcHkzaworODQ3MjcgZjNiMWVlYTExY2UxOTViYjM3YzE5NDZlMWQ5ZDZmYTIyMTA2ZWFiYiBweTNrCis4NDcyOCBmNDMyMGUxMjRiMWZiMWZiNzA1ZThiMTNlMWM0MzdmMGQ4NmNjNDI4IHB5M2sKKzg0NzI5IGIwYzlhODJlMGVjNWEzMzdlYTY0ZjAyOWIyYWQzNzIxYjM4MWYwYmQgcmVsZWFzZTMxLW1haW50Cis4NDczMCA4NTJiYjA1MjE1NmE4MTA5YzgxYjUxMGUwMmZiMjk5NDcwY2UyMGMzIHB5M2sKKzg0NzMxIGVkNDNlYmRhMzVmMmU1ZGYzOTg2NGRjMzk1YjdjZjM4YTJmN2EyY2YgcHkzaworODQ3MzIgNjM5MzlhZmFmOTg0YjRhNzkwY2ZlZDRjNTA3ZWMzODA3YTA0ZWNiNyByZWxlYXNlMzEtbWFpbnQKKzg0NzMzIGVmNmYwMzk3MWZiMzQ4NzBjZDE5YzAyNTc5YzljZDA0OTE5ZTIwODUgcmVsZWFzZTMxLW1haW50Cis4NDczNSAzODA4ZTM3OWZjM2NlOTNhNzc4Njk0ZmE5M2IyOGIxZGJiYzQ0NWZhIHB5M2sKKzg0NzM2IDM3NzRmNGRlZjc1NGYxZjhhNmI1YTlhZDkzMTAyOTc4NWYxNWM3MmYgcmVsZWFzZTMxLW1haW50Cis4NDczNyBmYjkwZjJmZjE3NjRiOWNlODI2OTk2ZWVhOGQ2YTlkOWVhNzE2MmE0IHB5M2sKKzg0NzM4IDY3ZWQ2ZDRmNzBiMWE2NmZiOTI2ZmFhYWQ2YTdiYjI1ZjhiMGIwNjMgcmVsZWFzZTMxLW1haW50Cis4NDczOSA3YWMwZTYwN2M0ZDY2MmEzYmQ2NDdjNTI3NzNlYzM3YzBmMzQ4NDE4IHJlbGVhc2UyNy1tYWludAorODQ3NDAgZDJlNTgxOTg5MzNiZTQ4YmYxYjlmZDFiYWU4MTgzMTE2ZGIyNTc1OCByZWxlYXNlMjctbWFpbnQKKzg0NzQxIDg4NjliMWI4NTQzNDhjNDA5NmZjZWFkY2UzODc3ZTczOTQ0ODlhYmYgcHkzaworODQ3NDIgNjNiZGE3ODlkNzNiNjNmN2FhODNlNzM2ZTIzNDA4Zjc5MWE2ZjU1YyByZWxlYXNlMzEtbWFpbnQKKzg0NzQzIGZhOTUxMGM3OTY0ODFhMGQ5NDY1ODk4N2QzNDgxOTczNGNmNTRjYjEgcHkzaworODQ3NDQgYjdlMjQ0ZjM0Y2M4MGQwM2I3NTFhNjcyNTUxYTg0MWMyZDgyZmU4NyBweTNrCis4NDc0NSA3NmI4ZGFkYTA2Y2JlNmE5MzI1MDBiODY0OTY2NzAzZDJiZTA4NDA2IHJlbGVhc2UzMS1tYWludAorODQ3NDYgNGI5Yzg1MjZlYTRjYjcwY2U0ODA4MDhmMmE2M2JjNTM0NjBhY2U5NiByZWxlYXNlMjctbWFpbnQKKzg0NzQ3IDZkMjgyYjU4ZDkwYWEyZmQzNmE4MTMwOTg2NTU4ZDY3Mjk5ZDRlN2MgcHkzaworODQ3NDggMmJiNGRkMmFkNWI1MDcwN2E4YTllMTQyMWUzMjJlNDYyZWI4ZjU4YyBweTNrCis4NDc0OSA3YWI1OTIzM2U4M2Y2OWI1YjM3MWZmNzExODg5MTYyMDljZTk1YmEyIHB5M2sKKzg0NzUwIDkyMTAyOTUwN2FkN2Q0NGM0NzU5YzkwNjBiZjlmM2UzZDVjMDNmYmMgcHkzaworODQ3NTEgYzFiNzA5MDc2YmY2M2ExZDFiNzUyMjI5YTY3OTUxNWE3Yjg1OTQ3YyBweTNrCis4NDc1MiA5Y2RiYTY4NjRlYjYwY2EyYTU5MzQ0OTFkMTk1Yzk1OThkOTcxNjU5IHB5M2sKKzg0NzUzIGEzZWU4NzdmZWQ4OWI1ZWQzN2NjYjk4ZDMwYzg1ZDFlZWQxMTBmNTEgcHkzaworODQ3NTQgYjE4NmFmYTM3MGU2ZDEwNTVlNTFjZmJkYzIxNDZlMjUzYjY0NjdkMSBweTNrCis4NDc1NSBjZmExMTljM2U0M2NmZTg3MmRkNTUzZDUwNTM4YmE1MjA1Mjk1NTQwIHB5M2sKKzg0NzU2IGVlOTY3ZjFjNzMxYjdkMDM2ZmYwNDMxNWQwNTAyY2JmODg2MTUwMjQgcHkzaworODQ3NTcgMGRlODE2NDc1NTNiYTA0YWI3MTQxNzM2ZTRhZjMxNzUyMGM5MWU0OCByZWxlYXNlMjctbWFpbnQKKzg0NzU4IDkwNjRmYzU3ZDNmYTkwN2QxMTAxZmY2MTMxYmJhNTA0OWFhZGVjNmIgcmVsZWFzZTMxLW1haW50Cis4NDc1OSAxZTg5YjVlZTAyZjg1ZWY5YjI3MDhjYTQ0NmE5YTE2NDE4NTY2NjA2IHB5M2sKKzg0NzYwIDU4NGIxZWRhMTE0MTQ3NjNiMGFmYWQwYjVhYjM4Mjk1YzM2NmM5MzAgcHkzaworODQ3NjEgMzE0ZDQxNmY0ZDIzZTI4YzY1NmRkNTc3MDFlOTk0MzI2YTZiNTUwYiByZWxlYXNlMzEtbWFpbnQKKzg0NzYyIGIxZTc2NmM3OWEzNjc3NDljOWJlM2VhZmI3MjFjZWQ1NTI4NjJkYjkgcHkzaworODQ3NjMgYWRkNjY0OTI0YWU5OTExYzA0ZDdmMWZjMzk1NDhjN2MzZTFhZjY0NiBweTNrCis4NDc2NCBiMGQyNmU4ZDhhMzMwYWE1NjQyMDM3YmIxODlhNTc0ZGUyYzVjYWJhIHJlbGVhc2UyNy1tYWludAorODQ3NjUgMmY4MzcwNTM4ZmZiYjE3YzNhY2FkOWU2NGNkYmQxMGVhZWE4M2NjNSBweTNrCis4NDc2NiAyOGU2YTQxYzViYTBiMDQyZGM4ZmRiOTA5ODYzZGE1Njg3MmJiYTYzIHJlbGVhc2UyNy1tYWludAorODQ3NjcgODJkYjgwYjYwYjg3YmJhYmYzYWRmNTg3YWU0NjU4ZGQ3NjIxMzFiNiByZWxlYXNlMzEtbWFpbnQKKzg0NzY4IGQwZmMzNTc4NzQ2NzQ2OTQzMmM0MWVkNzJiODI3Y2Q3NzdjOTY1OWUgcmVsZWFzZTI3LW1haW50Cis4NDc2OSAxZTkyMmQ3MWNlNGJmNmExODk3M2Y1MzM3Zjg2YzM0ZWY3NThhZjFkIHJlbGVhc2UzMS1tYWludAorODQ3NzAgYmJhOGZhODhkMTlhMjFiOTM4MjlmNWVkYzNhMTk2MTY1ODY3Yzg3NCByZWxlYXNlMjctbWFpbnQKKzg0NzcxIGE1OWFlOTM4OTEzMTkzNjU4MDZhYzA5YzVjNDcxOGJjMThlMDFiMjMgcmVsZWFzZTI3LW1haW50Cis4NDc3MiAyNzRhMGJmNDY4NzFlZjNhNTkxZjJiOTNhMzEzZWZjODIwNjlkZDNiIHJlbGVhc2UyNy1tYWludAorODQ3NzMgNDQxOTlhYTg5MzJiN2QxNGQwM2EwZTAzMThhOWI4MDVhOTBkYmJkMiByZWxlYXNlMjctbWFpbnQKKzg0Nzc0IDU1N2UyNTM3YzlhZTIzNTM4ZDlkZGI0ZWExZWI0OWJkYzQ1OWRmZTggcHkzaworODQ3NzYgMzMwZDc5ZmNiM2QzZDU4NjI4ZjhjZWFiMzU1ODE1M2M5NjU0YTRhZCBweTNrCis4NDc3NyAwZjNiOGY5MjhlYzEzZDhmOTFlYzQ5MGU1YjUyNGZlOTBiYTdmYWFjIHJlbGVhc2UyNy1tYWludAorODQ3NzggM2QyMmVlNjVlNDA3NWE5YjM2YjM3MWMyYTQzODE1MzMxZTQ1YjQ2OCByZWxlYXNlMjctbWFpbnQKKzg0Nzc5IDJhZDhkN2NiY2VhYmIwMTcyMDU5MTI4MmYxMzU3NzViNDVlNWJiZTggcmVsZWFzZTI3LW1haW50Cis4NDc4MCBlYTEyMWY4NzMxYTc4YmI1NTVjYTQyNTBiYWVkNGVmZDBjOGNmM2YzIHB5M2sKKzg0NzgxIDZmZjBlZjFmY2IzY2Q5OGU1MWIzMzU4NzRhODY4MmFhZThlYWE0ZGYgcHkzaworODQ3ODIgMjA1ZmYyYjAyYzc3MTIwZWUyMGIxNzdkYzNiNzY4YmU3NDY0N2Y2OCByZWxlYXNlMjctbWFpbnQKKzg0NzgzIDdkYmZjN2VmMzlmMmI2MzZkMzBhODc2NDUxMzEzZDk3N2MxOGQ4MzkgcmVsZWFzZTMxLW1haW50Cis4NDc4NCA1NTczNTVlNDZiYTYxOWRlNTM3NjJmNzUzMGViZDRlZDdmOWVhNWNmIHB5M2sKKzg0Nzg1IDc3Yzg5Yzg5ZjYwZTExMjI4OWZlNzljNDNkOTdiZWUyNTdiYmI5ZTUgcHkzaworODQ3ODYgMmQwODRhZDQ2OGRiZDAwYzk4OTBjYTgxNDk2MDI3N2RmN2UyZTMzOSBweTNrCis4NDc4NyA4MjM0ZDI2YjEzYzE5ZWY1NjlkMDQ4MTgxOGJjMGZkMDk1M2ZjOTQ0IHJlbGVhc2UyNy1tYWludAorODQ3ODggOTFhMDBiNmIxMjhiZWQwZDA0ZWM4M2U3OTVmY2EyZTBiMzZmYTRkMSBweTNrCis4NDc4OSBlYTg0ODNmOWU1NWFhNjYwOTMzMjBjMmYxNDIyYTg2NTRjYzAxOTg3IHB5M2sKKzg0NzkwIDlmNTVmYWFhMzE5M2FjYzY3MjQyYzMyMmU5YzYzM2U0Nzg3Yzc2YzYgcHkzaworODQ3OTEgZTJkZWM5YzBkMTNjZmNhYmMxMDdhYzg0YmM0M2Q4ZmNjOTJiMTEzNSBweTNrCis4NDc5MiBjZmFmMGY3ZWUwYzJjOTJlYzMxMDdiZDJiZGQ2MjZjYjVlMTQ3ZjE4IHB5M2sKKzg0NzkzIGE2MGRlZWNhYzI0MjRlZmQwYTNlZDA0YmMzYTUwM2MwOWM5ODlkMjIgcmVsZWFzZTI3LW1haW50Cis4NDc5NCAzYTI5NjNiNmY0NDNlODUwMTkwOGZjNzFjZjAwODAzYmE0NTgxOTg5IHB5M2sKKzg0Nzk1IGZiZTVkMDhhOTg2NjEzOTliZjY1NzFlOTJlOGJjOWU2NzdhN2VhMzAgcHkzaworODQ3OTYgNjllZDVlY2I1MDI2YWRkY2I1MjIzNzNlN2FmNWFmYjZmYzZhNmYxZSBweTNrCis4NDc5NyA0NGU0M2JlZDY3NGE1NGU1OTEzODQxODgxMWUyNDE0ODBhOWVmNjEzIHB5M2sKKzg0Nzk4IGU1ZjBmZjdkN2EwNmVlOTBiM2M2ZGI5OTNhOWRhNWFlMWNhODJjOGQgcHkzaworODQ3OTkgNGE0ZmJlMDIyN2FhNDk1MjVmYmFhMmI1ZTNkNWQwNjZlYWFmMzdiMyBweTNrCis4NDgwMCAyZDhlNDA4NTkzNTEyZWNjMGQ1ZDAxODUwYTg2MTNlMjg3ZDc0MmQ4IHJlbGVhc2UyNy1tYWludAorODQ4MDEgMjBjNDVjZGFkOWNmMWU4ZDQxZTZjNWM5MjA3NmI4YWM1MTIxYWY4YyByZWxlYXNlMzEtbWFpbnQKKzg0ODAyIGIyNzRhOTBhOGUyYmRmZTA5YTBhMDA1NDNjOGMzOWQwMzBlYjEzNmIgcmVsZWFzZTI3LW1haW50Cis4NDgwMyBhNDJkYjhmNTRiYTE3MDZkMzE4YWQ3NmU1YmJmZTczY2E0MmU4MTFmIHB5M2sKKzg0ODA0IDEyM2YzNTE0YjQ1YjUyN2JmMjYyMTA3NTU3MWU0NzM1MmRiYjE1N2QgcmVsZWFzZTMxLW1haW50Cis4NDgwNSBkYjllNjJjMjY1ZmY1MGU1OTNjYjJlNDY3Y2RmNjU3ZGMyYmVkZTFiIHJlbGVhc2UyNy1tYWludAorODQ4MDYgN2Y5OWFjNTMwMTRhNTQyODFmOTliZWQxYzkyZGUyZjQ3MjE1NDgxYSByZWxlYXNlMjctbWFpbnQKKzg0ODA3IDBlOTZmOWZhODRhMjRhNjlmNWExY2FhNGM4MTM0ZWZmY2FmZTJlOTMgcHkzaworODQ4MDggZmU1ZjljYzQwNzZlYmI3OTZiZTdkYWZjOWM1YmU0MDhhNmU1MDUyYSByZWxlYXNlMjctbWFpbnQKKzg0ODA5IDgwZDFjNzczNGRmMjU3ZTQ3YTljNjFiYjg0YWExODg5NDQ3ZDlhMzggcmVsZWFzZTMxLW1haW50Cis4NDgxMCAwZTI5YWU1MWQ5YmM2YWUwM2E5N2YyNDYxMzRmYWNmMDdjYzE4NTY5IHB5M2sKKzg0ODExIDkwNWVlOWUzZGE2ZGUwNzFhODFkNTc1YmNhOTZiOGE1NDllNTdjOGUgcmVsZWFzZTMxLW1haW50Cis4NDgxMiBlZGVkMGNhZWU2MjEzMzEwMDJlOWFlNThiZGJmZGRkMDJjOWM3ZDc5IHJlbGVhc2UyNy1tYWludAorODQ4MTMgNTM0ODUzYmE4Y2QzNmFiNWYyY2VlYzhhYzdlODY1ZWQ1YTkxZmFmOCBweTNrCis4NDgxNCAyYmYyYTdhNGUxN2Q2NDUyYmU3NDA1NjY2OTZjMjA2N2NiMzA5NGY3IHB5M2sKKzg0ODE1IGQ3YWUxYjlmMTBhYjdiNjgwMzNkODg3NmU4ZDYyNmI1MTE2M2RlNDMgcmVsZWFzZTMxLW1haW50Cis4NDgxNiAyYjlkZWEyYTJmZmZkNjI5MTMxNmM0YWQ4YTE5ZGQ5ODY0OGFkNzBiIHJlbGVhc2UyNy1tYWludAorODQ4MTcgMDcxYmQ4ZjM1MzVhYzBkZmNlYjQwNGEyNjM4MGQ0OTc5YmYxMjlkOCByZWxlYXNlMzEtbWFpbnQKKzg0ODE4IDM5NzdkYzM0OWFlNzk0MzBhMDdiNWU5NjA0ZDNjZjViMWUzNzY2NGIgcHkzaworODQ4MTkgOTE1MWQ1ZmFhZTNkNmE4NzI0YTViNzViZDcyMTY1YmI2NTM5ZWZlZCBweTNrCis4NDgyMCBiODFlOGUzZmE1YmJlNjc2ZGJkYTA4NGZjZWM5YmFhMGUwNDgzZTlkIHB5M2sKKzg0ODIxIGY2NDNkNTNjNTFiZDhiMTcyY2ViMTk4OGViZDhhNTA3NzQwYmIxOWEgcHkzaworODQ4MjIgZTYzM2UzYTZiMjU1NjhmYTBlZGIzOTU0MTI3OWVkMzlkOTNiMGMwZiBweTNrCis4NDgyMyBiNjk1MWIwNTIxN2IyMWFhYzY4NzcwYjNjZTNmNjJmNzZmNDUzYjNhIHB5M2sKKzg0ODI0IDM1ODQ4YTNiN2Q4YTVhZmJkMmFkODI1MGJmODY0Y2NjMzRkNTUyY2EgcmVsZWFzZTMxLW1haW50Cis4NDgyNSA3ZWY1YzZiZTcyMzI5N2ZmNzcyNmRjNDNkMjA3NDJhY2E0YTgxMzg2IHB5M2sKKzg0ODI2IDlhZmZiNGQ2ZTk3ZTJkMmVhZWUzZTc1ZTBmNDI1NjRkMTQ1ZjBhMzcgcHkzaworODQ4MjcgYzc3OWRlNjQ0MDVhOTAzZDQxOGFmYzMxN2NhNjY3MGUzZjE3OWM2ZCBweTNrCis4NDgyOCBkODhmZGY1YzViMzc2NDJlMTRiOWZkOGZjMzgwY2U1ZDM4ZTQwZTJlIHB5M2sKKzg0ODI5IGJlZDk1MGNiZDBjMDFlNTMwZGI2OTFjMGM2YmYyYmY3ODA1ODNhNDAgcHkzaworODQ4MzAgNWIwMTg3YzBkMDAyNDgxMmNkYzIwZjNjZGU4NDc3NzZhOWExYjViOCBweTNrCis4NDgzMSBiY2U5NzkzZmI1NDUwZWQ5MWI1NWFhNDFkZGZmNzljYzVmZWE5YmYyIHJlbGVhc2UyNy1tYWludAorODQ4MzIgYTk3ZDEyZTU0NjVmNzk1Mjk3NGQ0ZDBlYzgwOWJiMGUwNTI4MWJlMyByZWxlYXNlMzEtbWFpbnQKKzg0ODMzIDYxZGZjNzk2NTdkNzM3ZDJjMDcyY2VjYzBmYWUwMmQxZDIwYWUzZmMgcmVsZWFzZTMxLW1haW50Cis4NDgzNCBjMGQzMTY3NzczYTk3MzIzOGJhNjhkNzk5YTFhMjA2MDQxNjMyMGFjIHJlbGVhc2UyNy1tYWludAorODQ4MzUgYmViOWQxNzY1MDNlNDYyYTQ1M2JhN2Y5N2VmOTcyY2U2MzllMWFiMyByZWxlYXNlMjctbWFpbnQKKzg0ODM2IGFkNjNmOTY2OTIzYzQxMDM0MTYzYWFiZjBhZmM4MGM3MjY2NWY4ZDggcHkzaworODQ4MzcgM2VkYzI2MzgwZTQ5NmFiMGYzYjg2YWJiMjdjYjVmNjUwNDhlYWFkYSByZWxlYXNlMzEtbWFpbnQKKzg0ODM4IDFkZWJmZjQyZWE0NmQxMTNlYzAwZTAyZTFjYTQwMDY0MjkxY2JhNzIgcHkzaworODQ4MzkgZjJlYzAxMTVmOGIyMDNlNTFkNDc4MzVjMGM5M2FlM2EzMGU3NzU2YSBweTNrCis4NDg0MCBhMTZiNjdkNGYzMDMxNmQxMGNiYzQxMzFmNmMzZmVhZDI4NGJmODVhIHB5M2sKKzg0ODQxIGI1Nzc0YjI3YjNkYmQ5YWVkMmY4ODE0ODcwMjVlZmNhMzQ4ZGM2OTAgcHkzaworODQ4NDMgOTg1MDcyY2QzMWQwM2I4MmZiYzhiNTQ1OTdhNzFlOGU1OTE2MGYyMSBweTNrCis4NDg0NCBkNjU3ZThhNjAxMjY2NDljZjk1MzZjMzYyYzRkZmVjODczNzM1ZjM0IHB5M2sKKzg0ODQ2IGQxNzcxYjRjZDBjYmE4MzJhYjdhMTQ0NzM2Njg4NTM4ODY3NGU1YzcgcmVsZWFzZTI3LW1haW50Cis4NDg0NyAxYmU5NTBkY2JiMWE1ZjgxYWVjZjJiYjRmZWE0Y2E1ODNhMWRkNzJjIHB5M2sKKzg0ODQ4IDIzMjQxNjdlYzAxZDNhYTIwZjYzNTMxZTVjNDM5Njg5OWRmZDVjMjAgcmVsZWFzZTMxLW1haW50Cis4NDg0OSAzZjAwMDQ3MzZkMjgzOWNhNDQ2NDQwYzRiMGU0YzI3ZTc3Y2E4ZjdjIHB5M2sKKzg0ODUxIGZkNWM0Y2ZlZDdjZDBjM2FkYjBiMzdhNWI2M2RiYzM0MDliYzY3MjEgcHkzaworODQ4NTIgYTE3N2RkZGU0NWQxYjc0YTE2Nzc5ZWJlZTZkZjRlZTIyMTYwZmZkNCBweTNrCis4NDg1NiA1NzYxZjhlMzUyZWMyMWZkZDZlNzYzZDhkMDJjMDZmZjU1ODMwZDg3IHB5M2sKKzg0ODU3IDY4OWE4MTNmNGFmYzBkZDlkOTY2YmQwODczYzZmZmQ0ZTUwYTA1ZmEgcHkzaworODQ4NTggYTg4NjlhZjVkNWQwY2E2NzUyNjllZjUxZWY0YmUxOWYxZDZkZDkyNiByZWxlYXNlMjctbWFpbnQKKzg0ODU4IDgyNTg5YTg4OWUwNzBmZjc3NzExYzdmY2U2N2E3MWUwMjRlZTBlYTAgcHkzaworODQ4NTkgYzQzOGY5NjM0NmU5MGYxYWJlZGY3YjMxNDFhYmQ5NzFlZGE1ODk2MyByZWxlYXNlMjctbWFpbnQKKzg0ODU5IGUzYzNjMzBmMTQwOTgwODhhNGQxZjk4YmU1YWE4YjdmZDM5Y2Q4YTEgcHkzaworODQ4NjAgZmE0N2FmNzNhNjkxZTAwNmJmNzEwNWQ3ZTY1NDExMzU0NzgyNjFjMSByZWxlYXNlMjctbWFpbnQKKzg0ODYxIGNhMzU0MmFkZWUwZGFlYmMyY2FkNmE2NDdmNjliY2RlMTg4NmQwNDIgcHkzaworODQ4NjIgZTA2NDFkYmRjOGY2MmE3ZTlhYjYzNzU1ZWE4NDczNmI2YzE3YjNmOSByZWxlYXNlMjctbWFpbnQKKzg0ODYzIGUzOWFkNWRjMTFjZmU0ZDc0MDA2M2IxOTdkYTkzYWM3MmMyOGE4MTggcmVsZWFzZTMxLW1haW50Cis4NDg2NCBkYzQyMmRhYTVkYWRkMGJmYzU0Mjg3ODQ0MmRhNTFkZGNlNzc0NWMwIHB5M2sKKzg0ODY1IGE0MzFjNDhhZDQyYjFhMTk4MzFhYTVjMWQ0NWE0Yzg5OTZlNGE4MTcgcHkzaworODQ4NjYgZjc3Y2I4ZDc2ZTk5MTU3YTQwMjAzYTQ0ZGViNmY1MWIyN2RhZGQ2MiBweTNrCis4NDg2NyBjZDJlZjc1Mjg3MzY1YjZlOWE1NTRjZTJjY2Q2Y2Q5MjUxNzQ4ZmRjIHB5M2sKKzg0ODY4IDkzOGQ4NDI1N2QxMTAyNjBkY2MxMjY2NjU2Y2E4MWQ3YzBjNmI0OWMgcmVsZWFzZTI3LW1haW50Cis4NDg2OSBjODdlZDZmNThiODMwOTg4MWYxMTQyMDBlODdlMWI1Y2QyNWYyOTcwIHB5M2sKKzg0ODcwIGRmMzliMGJjNDEwNjczYjU4MTY4MmM2ZWMxZTQ5M2IxNzZlYjI3OTkgcHkzaworODQ4NzEgMDA2NDkwZjBlNzFmZDY2ZWM1MWQzYTRkNDRjMjFmMzE2ZGJmYWJiOCBweTNrCis4NDg3MiAwMWRiYjgyNzcxNzg4OTYyNWZhYTUwNzhmNjgxMmU3N2U5YzY2YjNlIHJlbGVhc2UzMS1tYWludAorODQ4NzMgMTUxODE3MTc3NTE0OWM3Y2FkYjFjNTMzMmFjMzQ1ZGI0MTg0MTI0YSByZWxlYXNlMjctbWFpbnQKKzg0ODc0IGQwNjA0NzRlMGUyNDU4NTY0MWRhNDhmZmZhZWM5OWY2YmExZGQzN2YgcHkzaworODQ4NzUgMmYyODA3MjdhMzA3ZjZlZDk2YzcwY2Y0ODVlZTU2MTc2MmMxNjg5NyBweTNrCis4NDg3NiAyODY3YWU5MDJmYTMxNDczNjQ2NDNmYmFiODBmNWE0YjJjYjhiNTAxIHB5M2sKKzg0ODc3IGQzOTA0MDBkNzFmN2I5NmVjMjMxYTRjMWY4MjY4Mjg3NmY2YTM2MmMgcmVsZWFzZTI3LW1haW50Cis4NDg3OCBiNDlhZWUzODc3OWJjMGE5ZGIyNjcxNThjZGMzMzRlYmY5OTFlNjBkIHB5M2sKKzg0ODc5IDRhYTJhMjBhYzMzNWJmMDVhNWFkNWY1ZTI5ZThjZDMwODBkZWNjZDUgcmVsZWFzZTI3LW1haW50Cis4NDg4MCAyOWVhZDU0YzA1YWQ4NzdhYzFhZjg1YTEwZDg0ZjhhZTllMjhlMTNhIHJlbGVhc2UzMS1tYWludAorODQ4ODEgMmRjMWQxODdlZTA0YWUzZWQzZDFkYWY3NzQ5ZDE2MTlmOGM0MDA5MyByZWxlYXNlMjctbWFpbnQKKzg0ODgyIDQ0OWQxMDRlMTgzNjI3M2FlYWU1ZDhiNzYwY2UxM2VkNjg1ZTQyYjQgcHkzaworODQ4ODMgNDk4MWNmMGE5Y2E0Y2Y5ZTE3N2U5M2U3YTI3M2M2YzgyYTA1NmUwNCBweTNrCis4NDg4NCA3NzQyNWYyZDdkNzY1OTc1NzY0OTA4MzM4MTU4OWY1MTEzMWE4YTZlIHJlbGVhc2UzMS1tYWludAorODQ4ODUgMDRiNDVkNDUxMDU5ZjUwZjFlZmFmMzAzZjZkOTg3ZDczNTI4YjY5ZiByZWxlYXNlMjctbWFpbnQKKzg0ODg2IDkyOTFhYTNkOGQzNTcyMzc3NTJiNGI0OWUzYmNiZTRmMmVmMjZjMWIgcmVsZWFzZTMxLW1haW50Cis4NDg4NyBmM2RjYjMxNGMzZTMwMmU1NTQyMmY4NmM0NmVjNzZhM2FlNjA2YTE3IHB5M2sKKzg0ODg4IDcxYjk1OTQyYzNhNDliODg5MjJmOTE4ODg2MzBiNmNiYjhjYzM2ZWQgcHkzaworODQ4ODkgOWRjODQ1MjI0NDg2MTI5ODEyODlhMjU3ZWJjY2MzYTE5NjQxNGE1NiBweTNrCis4NDg5MCBiNjk4NDJiNTBlMjYzODgyOGYxYjM0YjM0NmM4NWNhMjI4OGIzYjc5IHJlbGVhc2UyNy1tYWludAorODQ4OTEgNjVmNWUyYzNmMmRkMTkxOTgwZmZhNmQzZmZjOTlkZWRlNTc0NTAyYiByZWxlYXNlMzEtbWFpbnQKKzg0ODkyIDkyNTg4OTg2Yjc4YmQyOGFkYjNkMDJjOTQ4NWZlMWY5OWE0NzA4OTAgcHkzaworODQ4OTMgZTUyOTRjYTI3YWJlMmQxMjMwNDBhM2UzZDM5NmM3ZGNlMTk4YjNiNCBweTNrCis4NDg5NCBmN2E3NmZjOTdiMjIwZGYzMjU5YzRkMmUxMzMwNmE5ZWIxMzIyNGQ2IHJlbGVhc2UzMS1tYWludAorODQ4OTUgNDUxMTM5MzIyYTEzMTE5NWQ3MDAzMWJiMzE0MTMxYjkwN2RjYjc4NCBweTNrCis4NDg5NiBjZDViOWE3MGE2ODViYjczMzk4MzM5YmRlMThjYzA4MzY5ZWE5NmQ4IHJlbGVhc2UyNy1tYWludAorODQ4OTcgNTAxYWU5NGU1YmY2MTU4NDBkYmNmMDJlY2ZkN2JlYzY1MjNiNDIyNyBweTNrCis4NDg5OCA0NGM4OWM1OTkzYzgzYTE4OTc3ZDM2YzhkZTBhMjEyNDU5YjE2NDg3IHJlbGVhc2UyNy1tYWludAorODQ4OTkgMGFjZTllZWYxMjBiZTFmMWYxYTQ5NTQyYzBhMjM3N2QyZDhkNzY4NiBweTNrCis4NDkwMCBhNDhlMDMxZDgxNzhmYjgwY2EwYTllYzMzNmZjYWFkMTVhNzlhYjAyIHJlbGVhc2UzMS1tYWludAorODQ5MDEgNzg1YTk2ZmNkMzQwZGYyZDU5NGZhNTE3YWM0MWUwYWY0ZWVhMWVlNSByZWxlYXNlMjctbWFpbnQKKzg0OTAyIGIyOWU4NTU2MDE1Y2I3MzEwYTE4NTg3MGU2ZmM5YWUyMjExNDI0MTcgcHkzaworODQ5MDMgYTA1NDMzMDYwOTQxMTg2ZTE5OTRhYWRiMDZlYWE2OTVlZDk4NWJhMCBweTNrCis4NDkwNCA1MzRhZjkxZjM4NDU0MDYyZmUyNmRjNzE3ODJmZGVlZDYzZjNkY2YwIHJlbGVhc2UyNy1tYWludAorODQ5MDUgOTMzZDRiNWI3ZjNkNjhiNzg0NTViOTE5YTViYmQzZmM3NGY5NjA1ZCBweTNrCis4NDkwNiA3NjA1MWViMDc0MjJjNzg4ZjM1ZDMyYzk4YTIyMDA3NGVhZDVkN2RjIHB5M2sKKzg0OTA3IDhkZmJmNjZmMzY5Y2Y1YTJlN2FhNTYyZTdkODQ4OGUxNzllNzkzNGIgcHkzaworODQ5MDggZGQzMDgwYjgwZGRhOTE5NDU1N2RjZjIzNGE3OWI5NDFiYTdiYWQzMCBweTNrCis4NDkwOSA0Mzc0YjFlYWVhZDE3NzZmNWI5MmQ2OGJkMjg2NDcyMWQ4ODY0YjllIHB5M2sKKzg0OTEwIDE3ZWM5ZWQ1MDEzM2I4YmFlZGRhNjBlMjgzMjNjNjc2NGRhMTQ2MjMgcHkzaworODQ5MTEgMDM2NTg1MzgyZGUxOWJiOTdmMTUxMGMwMmE3MTE2ZjVmNTZhNDBhNyBweTNrCis4NDkxMiA0ZjRiZGRkYWMyNWIyM2I2NTMyNGI2ZGIzN2Q4OTQ3Yzk2NzdiZWI0IHB5M2sKKzg0OTEzIDc2ZmQ2OGJiYTFhODg1YTQ1ZjA3NDcxZGFiYmZhZmQ2MmRmODJlMjYgcHkzaworODQ5MTQgOGU0MjhiOGU3ZDgxNTg2ZTIzYjVmOTJmOWNhOWIxOGRhZjE0ZjQ0OSBweTNrCis4NDkxNSA2Yzc3NzU3ZDA4ODExNWEwMWNkZDI5MzFmMDAyZDcwNjg3YTJlMzAyIHB5M2sKKzg0OTE2IGI1NTcyNTM1OThiMWY5Y2QzODAyMDMzYjAxZjlkN2JlM2U3MDQxODggcHkzaworODQ5MTcgZWMwMjgwNjcwNDlkYTY3Yzc1MWQyNzk4NThkYjcxZDdiZjZkNDBkNiBweTNrCis4NDkxOCAyY2RkZjg3OGUzOTU1NTNiNmZhZTk3OTk3MjM4YTFlOTU0NWQ0ZTYyIHB5M2sKKzg0OTE5IGNmODgxNzE0OTliNWE3ODUwYmVlZTdhZWJkYTQyZmVlZGMxNTY0NTMgcHkzaworODQ5MjAgM2E0YWZhYTk2YWMzMzIzYzBkYzQ1NzMxMzE5MWZhYjA0ZTU3N2U2YiBweTNrCis4NDkyMSA0ODZjMmQ2YTc1NDY1ZDAxZjYxNmJhMTZhYzhhNTBkNmFjN2IyOWQ1IHB5M2sKKzg0OTIyIGE4OGRmZjI3YmUxZjdiMmViMDlkMDk4MDRiZjRkOWZhMTQ5YjI0OTcgcHkzaworODQ5MjMgZjM1YmQwOGMxMmFlZjJjNDZiNGRiNzlhOGNmYTdmZGU5YmFmYzM5OSByZWxlYXNlMzEtbWFpbnQKKzg0OTI0IDZiZDI3NmY1ZDFiY2U3OTk2NzVmOGM4MTFmMWI4Mjc5ODNlMmIwZDMgcmVsZWFzZTI3LW1haW50Cis4NDkyNSA5NmRiNjQwNjc0Y2I3YWFhNTNlZjA5NDFkOTYyNzdmNTQ5MjliZTIwIHB5M2sKKzg0OTI2IDNjYWNlMTI4OWRlNDg4YmFjZjYyMGJhMTRlZDQ0Yzg3NWY1MTk0YjYgcHkzaworODQ5MjcgMzhiMGQ1ZDBkZDMwZTUwYTczMDNlNGY0M2Q2NWVmZGIxY2VmYWE0NSBweTNrCis4NDkyOCAwZDBmMWRiNjM0MzEzZjM2MzEzZTE0Yjk5YTNiNTJjYjY4ZjhkODViIHB5M2sKKzg0OTI5IDAwZTRjZTMxZDQwNDBkNWMzNGI2NTdkZDE3OWNlYTU5NjU2ODIzZDEgcHkzaworODQ5MzAgYTZhZjljN2M4ZTY3ZThlNDZjNzk3ODA5YjgxM2M3Njg1MGFjODhlOCBweTNrCis4NDkzMSA4NjFjMzVjZWY3YWE5ZTUyMjZkNGNjMmViMWU5ZWI1MjlhMWM5ODQ4IHB5M2sKKzg0OTMyIDJjNzNlNmNlNmE3NTY4NDY4YzczODM2YTFjNzI2M2NlYmIxNjY4MjIgcmVsZWFzZTI3LW1haW50Cis4NDkzMyBiZjAxMWUzMGZjMDc2MjdiNTI4YWI4Y2YxNWI4NTRkNDk3OGE2ZGQxIHB5M2sKKzg0OTM0IDQ3YjEwZTRhNTFkN2U4ZDRjMGRmZjc2NGU0OGVjMmZhNzY3M2JiZTcgcmVsZWFzZTMxLW1haW50Cis4NDkzNSAzNjRkNmVmN2NjYWU0Y2MyNDE3N2VlNDU4ZDdkM2M5OTljM2Q0N2NhIHJlbGVhc2UyNy1tYWludAorODQ5MzYgZTkwNDI3OTg0NDQyY2Y1Yjk4OWJkYjMwNGMwYTVlMzNmYWQxNWU1NyBweTNrCis4NDkzNyA2MDM2NzlkODUzMjkzMDg5MmEyZDg4N2YwNTZmMDg4OTQ3ZWU2ODk5IHB5M2sKKzg0OTM4IDdkNDVmNTM5ZGI5N2M4MTFmMmM1NzVmMGU2YTQ5MTEzN2U0MGJhNTEgcHkzaworODQ5MzkgYjFlYzQ4YjdmZmRmZmViNTJhZmRmMmIyNzVlODY1MmVlNzYxMzNhMiByZWxlYXNlMjctbWFpbnQKKzg0OTQwIGQ4YmI5OGU0MmMyZmZjYTM4ZThmYTdjNjhmZjNlMTVhZGNkZmM1NDkgcmVsZWFzZTMxLW1haW50Cis4NDk0MSBmOGNlOWYzNTlmM2E2NGY5MWRkMjVjNmVmMTFhM2E4Mzk2MGZlNWU2IHB5M2sKKzg0OTQyIGEwZTBjYjg5M2UzMWUzMjBjYWVjNzgxYWI1ZWMyZDc4NmNlZDNjMWQgcmVsZWFzZTI3LW1haW50Cis4NDk0MyAzMzU5ZDJlMGE5NjcxNzA5YmZkNjBjZTNkMDI2ZDc3YjQ1YzViYmVhIHJlbGVhc2UzMS1tYWludAorODQ5NDQgZTU5YTE4ODI1OGIzNDg4MzhmZjdkNjI0NGMwOGYzZDBiMjU5M2UzNCBweTNrCis4NDk0NSBkNmQ2NTVmZGRmMjJhY2VjZGM2OWMxNWMzZWIzN2MyZjI1NTdiNmQ4IHB5M2sKKzg0OTQ2IDQ4ODlhODE2ZWVjMTY5ZDhhYTk1ZGNkMmVhYjc2MzNmNTYzODBiMTYgcHkzaworODQ5NDcgYjFmNTEzNGIwMDQ5YmQ2OGVhZDk5NWQ1ODVjMmNhMzFmM2ZjOTVhZSByZWxlYXNlMzEtbWFpbnQKKzg0OTQ4IDRlYzEyMTE1NmVlOWVmNDkyNzBmZjQxZDVjODNjMmJjOTg0YjhmMGUgcmVsZWFzZTI3LW1haW50Cis4NDk0OSBhNGVlOGE1YzY4NDM3MjQ0NWQ4NjBlYmFmMzA1MDMzNjhkNTRiZjYyIHB5M2sKKzg0OTUwIDlhZDY5ZmM0YWVmNzVkMWMzMDFmODVlNDA3Y2FkOThkODY0ZDkwZGYgcHkzaworODQ5NTEgOGNlZWI1OWY0NTUwYWY1MWRhNDc0NTA4ZjY4ZTlhMWZiYTcyMzE2MiByZWxlYXNlMjctbWFpbnQKKzg0OTUyIDA4YmQxYTA4YzYyZjc1ZTRkNjM5M2FlZGY1MzUzMTgwNDI3Y2VhNWMgcHkzaworODQ5NTMgMmI5MzI3Nzc3ODMyYTI0NGFmMjFmZjcyYWFlODVkMGM5NDAzMGRiOCBweTNrCis4NDk1NCA5ZTIyMTY0MjBjZDc5NWIyOWIzNzhmODY2YTMwYTg5NmFhZWYyYTVjIHJlbGVhc2UzMS1tYWludAorODQ5NTUgYzUzNzcwYjE1NDZkYWQ0YjkyOTk1OWNlMzUzYzczMjI5MmM5NjFlMyByZWxlYXNlMjctbWFpbnQKKzg0OTU2IGM5ZWRiY2UzZmNhZDhjNmNkMmQ1NDMxMDJhMWJlNzBiY2ZhMTU1YzQgcHkzaworODQ5NTcgZTFjOGViMzkwNTA3MDI4YTkxMDIwZDZiNjk3NjI0M2I1OWExMDIyYyBweTNrCis4NDk1OCAwNWE1ZjcxYzFhNzhmN2RjZDhkOTk0NjAzMjEwMDM0ZjYyZWEyYjJjIHJlbGVhc2UyNy1tYWludAorODQ5NTkgODIwOGE0MzE5MWUyOWM5MjQ3MDBhOTA4OGI4Y2NlMWM5ODAxMjlkNiByZWxlYXNlMzEtbWFpbnQKKzg0OTYwIDhhYzcwYjEyY2E2MWZhZTIxNDg3NDA2NzQzZTFhMzJiOGY0N2Y3NjYgcmVsZWFzZTMxLW1haW50Cis4NDk2MSBiM2QwZGVhZjUwZTUyMzJjNmQ5YmVjNzViNDA2ZDViZWRiMmMzOWNjIHB5M2sKKzg0OTYyIGQ1ZmUwNDBmNGE0OGEyNzgwZmUzMzEyZDkzODE4ZDU4ODAwODM1ODIgcHkzaworODQ5NjMgNmI5Zjg4ZGRiNGNlZTkxNDlhMWNmZDVmNzkwM2Y3YjQxMzg5M2Y3OCBweTNrCis4NDk2NCBmMmNlZWFhYWM5MzgwYjU0MjNlMmM1M2QzZDk2NTFhMmFmMDVhZjE5IHJlbGVhc2UyNy1tYWludAorODQ5NjUgZWJjZDgxMTU1OGQ2N2Q2MDQ2N2EyMjUwMGNhZjEyYmFlMjRkYmY2ZCBweTNrCis4NDk2NiAzNDc0Y2VlOWM3NThhODZlOTQyN2UzMWUxZjU3MzdjZmZkNWJmZDIxIHB5M2sKKzg0OTY3IGQ1MDAxZDZjNzczNjhlZmJkYWVmMzM2MjliMTkyMjU2MzIxYzUwNzIgcHkzaworODQ5NjggZjcwM2E2NDNlNmNlMDdiOGMxOTU4ZmUwYTc0ZDgxZjYyMDMxZjE1ZiBweTNrCis4NDk2OSAyMjVhNmQxY2Y4MTFmNzBhNzQ4MzIxMThkYmU0MTY1YTk0OTgzZTAyIHB5M2sKKzg0OTcwIDllYTUwNGQ0NWVlYWE3ZTFiZjQyOGY4YTY0MjlkYmJjYWYwNTc5YzcgcHkzaworODQ5NzEgOTZlN2VlMjMyYWJmMTFlMmRjYjgzYWMxN2E4ZTk2NjRlOWQ4ZWIzMyBweTNrCis4NDk3MiBkZmQ1NTg0ZWIxYWNiNTk5YmQ0MmJlZTRhODIyNGNiZjllOTRjNjE1IHJlbGVhc2UyNy1tYWludAorODQ5NzMgYTY3NmFjMDZlYWNjMDg3ZDY4MWNkMzcwNjc3MWNhZThlMjA4MDg1ZCBweTNrCis4NDk3NCBmZjkyY2MzNTZjMzU4MzEzNGEyYzUzNWRmNGU4ZTYxMmQ2ZThhNzVmIHB5M2sKKzg0OTc1IGVlMTUyODUyYzk0ZGY5NDY3NDJmNjkwZmU2MmZhYWQ5YWViYjQ4NjkgcmVsZWFzZTI3LW1haW50Cis4NDk3NiBmNGExYzc5NmJjOTg3NDUzZTU2OGY2MmM1YmE0YjVlYzJjYzZhN2NjIHB5M2sKKzg0OTc3IDYzM2M2YjExYTVhOWU3ODUxYWY5NzEzNjZmYWM5MzEyYWMyNGY1OWQgcHkzaworODQ5NzggZDU2MGVlY2UwODU3ZjA2YzNkMGQ1M2Q4YmU2ODZjZDUwZmMxOWU4ZCBweTNrCis4NDk3OSBlMzE0OTJmNDQwYzllOGU1MWE5YmUyYjVjM2UxYjA3ZjM0MDRjODYzIHB5M2sKKzg0OTgwIGEwZWNiOGUyZDc2OWU3YTNjMjZhZmZlY2E1NWMwOGVlOTAzZWRjNWQgcHkzaworODQ5ODEgNTFkOGZmZmNkMjYwZTgwYWEyNWQ1MzExODAwNjJmMzdmY2M1ODQyZCByZWxlYXNlMzEtbWFpbnQKKzg0OTgyIDIwZjM0NWZjMDM2MTE0Yjk0ZjVmOTlmYWU0NzY0NWNmOWU4MjlhNDIgcmVsZWFzZTI3LW1haW50Cis4NDk4MyBkMDg4ZmFhMzU0NTZlYWZiN2U2MjU0NTMyMmRiNDE5ZTRmOGJhZjkzIHB5M2sKKzg0OTg0IDJlNWJkZTM4M2E1Yzc0YWExOGYyZTQ0Y2FmNjAxYTNkZmQyYTkyYTYgcHkzaworODQ5ODUgMGM3N2QwMGY0ZjgyNGUyODhiNGI4MTQ4YmZlMTdmZmRjOTJiMzZhYiBweTNrCis4NDk4NiBhYjNkOTJmZWE5ZmRhNWU1YmY5ZGU3ZTc1MmUwOTJhZjIxNDgzMTUxIHJlbGVhc2UzMS1tYWludAorODQ5ODcgMWRlYmNjZmJjYmM5YThlZWQwOGEzOTUwNmMwYzA2Nzc3MGJkZTgxOCBweTNrCis4NDk4OCAyOGQ0MWQzNGEyZTYxNTU5MDU1NDhkNTNiMzY2MmEzM2Q5YzJiMzkzIHB5M2sKKzg0OTg5IDdhY2E0NTg0NjFhYjI3MWU3MDNmZjhiZTE1NGMzODY5MTgyMDQ4Y2IgcHkzaworODQ5OTAgNzk1MmNmYWJiYjg4NzVmOTg3NGU3NjI3ZGY0YWJlYThhZWU5N2U4MSByZWxlYXNlMzEtbWFpbnQKKzg0OTkxIDg3YWZlNDc0MjljNTZkMTdmNDk1NDU1MGJlNzI4NWNkNmVmYzJhNDQgcHkzaworODQ5OTIgYWE1NmViYjhmZTk0NzM0YTMyZjEwOWNjMGVhODUwZDllNTFjNzg2NyBweTNrCis4NDk5MyAyNjBkYzdkZTFlODdiZTliNWFiN2ZlM2FjYTJmMWZjODIwNGM5OTY3IHB5M2sKKzg0OTk0IDAwNzIyOGQwZTU2OTg0NjMxZTg4MDBlNzZiODE5ZTFlOGI2ODI3ZjAgcHkzaworODQ5OTUgMjM1MDQ0YjM5YTkyMTFhNTZiYjRkNGM5NmNkZWU3OThlMTliZWIzMCByZWxlYXNlMzEtbWFpbnQKKzg0OTk2IDEyZTBkZmZlZjdiZDI0ODI1YmIzYmQ3OTM1ZTM0NDc2NmUwN2UzNzkgcmVsZWFzZTI3LW1haW50Cis4NDk5NyBmNmEwZWI3MzBhOWI3ODRiYzBiNDdmM2NhNWRjOGRkMDIzZDc5NWY2IHB5M2sKKzg0OTk4IDhjYzRiZTY0OGFiNDkwNmRkYjRkNmMxYjY1YTYxNjgxMGQ3MWJlNGEgcmVsZWFzZTI3LW1haW50Cis4NDk5OSAyNjBkYzM2YzJjODYxZWY3YmNjYTg5ZWQ0ZTgyODU3ODBjYmIxYzIwIHB5M2sKKzg1MDAwIGI5NDUzZDUwNGY4Y2E0YWVmYTI4NWRmNGQxM2IyNGZjZjA5NGJmMmQgcHkzaworODUwMDEgYjI3OGQ5M2Y5NThlZWMxODQzODMwMTAwMTJlZWZlMzg0ZjBlODIwNCByZWxlYXNlMzEtbWFpbnQKKzg1MDAyIGU1YjcwNzkzNTY2ZWRkYTVlZTRhZWNlNTM0NzEwMjg1NjAyZTY3N2MgcmVsZWFzZTI3LW1haW50Cis4NTAwMyBjOWUyOTkyNDkzMjM4MjVmNjNiYmVlOGEwODg3MjVmYzIyMjFiNmI2IHB5M2sKKzg1MDA0IDk3NzRjMTFlMDNmNmIwYjhkODUzMmIxMjA1NzE3YzAyZDcxZTQzNTkgcmVsZWFzZTI3LW1haW50Cis4NTAwNSA0Y2QwZWRmMGIzNTYxOTcwZGZiYTViZDBiZWI5MmIzNDNmNmZkOTM1IHB5M2sKKzg1MDA2IGM5YjA4YzU4ZjA2MzBiOTFjOWIzZjg4MmE1ODM4OTZjMmUyYTMzYzIgcmVsZWFzZTI3LW1haW50Cis4NTAwOCAwYjQ4YzZmODY3MWZkNGUzMGMxOThiZWRjZDU1NjI0ZGJjNmE4ZmQwIHB5M2sKKzg1MDA5IGM1MmY3NWMzZmJhMmQ4NjQ5OGEwNTM5NmYzMmE3OTExYzFiMGY4YjcgcmVsZWFzZTI3LW1haW50Cis4NTAxMCA2NTExMTY1ZTQ4MzBkOGZmNjg0NmQ0Nzk5NWRiN2YxYjJlMzRjMTI2IHJlbGVhc2UyNy1tYWludAorODUwMTEgYmM3ZDg4MDhmMTk1YzlkMjUxNDdjN2FmMDM0MGY4M2U5MTAwMmI3MyBweTNrCis4NTAxMiAyNjVmNzAxNzc3MmI4NzExMmYwNjU2MWU3YjUxYjM2N2JlZmQyMTllIHJlbGVhc2UyNy1tYWludAorODUwMTIgNDNmZDllMmI1ZTdkMWZjM2NiYzRjZmNjNzExMDE2ZDdmMTcyY2QwOSBweTNrCis4NTAxMyA2M2JhN2E0ZTdjMTAyMjMxYWY2NzMxYTU0ZjY4MGQyODc1MTllNWUyIHJlbGVhc2UyNy1tYWludAorODUwMTMgNDA5ZDZjNzZjMzA3ZTQzMGNmMjI0ZmM4ZTZlNjE3NDc4MTc2YTEwZCBweTNrCis4NTAxNSA0MDNhZjM1ZjQ5NDg3Yjk0ZTY4MTEwY2M3NzNlMzUzOWQxNTA3YzI3IHB5M2sKKzg1MDE2IDZjNjhkYmY5MzJkMDY4NGYwZTNlODc0ZWQ3NWExY2MzNTQ2OGFkYzUgcmVsZWFzZTI3LW1haW50Cis4NTAxNyBhYzhhYTIyNWM0MTc1YWZkYWNhMzI4N2E2ZTZkZDMwM2RjZGVlNjk3IHJlbGVhc2UyNy1tYWludAorODUwMTcgMjhlOGZmYjJhY2NiNjk4NDViMTFkYmU5ZTkwNzI0NTM5ZDE4OGE1YSBweTNrCis4NTAxOCAyNmRmZTQ0YzlmYWE0NTlmMGQwZTdlMDMyZDkxMThlMTZlYzI4Y2VkIHB5M2sKKzg1MDIwIDA1YzU4YjNkNmQzOTQxYWFkMzFjM2FlNDYxNGQ3NWI5ZmFiNTUxOTIgcmVsZWFzZTI3LW1haW50Cis4NTAyMiA3YWMzMGQ1OGIxZDIxNmQ4M2E1NDMwNjRhNGE0ZjIwYjdhM2IzNzZkIHJlbGVhc2UyNy1tYWludAorODUwMjUgMmZjNzNkN2M3NjIyZDIwNmVlOWYzMTlkNDFmMWZhMGE5ODM2ZDllMyBweTNrCis4NTAyNiA4ODgxMjYwZDFkMTRmYmQ5ZDFhZDFkOGY0ZmQ4NmUzZWIwM2VlZDRlIHJlbGVhc2UzMS1tYWludAorODUwMjcgM2YwZmZjODE5OWVhZmNmMDMxMWU5YzUyMGZjZjljYjMyOGNjY2FjOSByZWxlYXNlMjctbWFpbnQKKzg1MDI4IGZkNWU1MTAzNTMzNWIzOGI5ZDBkYjQzMzExZWE4OGNmOTY0MzgxOGEgcHkzaworODUwMjkgZTkzOGVjYzU1MDA1NDhiYTk0NTY1ZGE3ODIyMDhmOGZlNzcxMWMxNyByZWxlYXNlMjctbWFpbnQKKzg1MDI5IDUyZWZiMTA0NGRlNTkzNGY5NzMxOTU0NTk5YWU2MDJmODgwZmJiZWEgcHkzaworODUwMzEgZmY1ZDNlNWM0YmI1OTU4ODBiZTM3OGYxODlkZGQ2OTAzMzk4ODhlMCBweTNrCis4NTAzMiBhZWQwNGIzZjBmZTM4MjJmZjUzNzRhY2EyMWFhZWU4OGZkNjAyZTJjIHB5M2sKKzg1MDMzIDZiNDllYTExYjE1Nzc5MGIxNmY2MjZkZDcyYmFhYTkzM2IwN2Y3YzIgcHkzaworODUwMzQgNWE3YmI4NWE1ZDk5YzM1NjM3YmM0NDM4MzY1YWNlNjVlMjMwZjhhYyByZWxlYXNlMzEtbWFpbnQKKzg1MDM1IDFkYzJiNTBkMzQ0Zjg1ZTYzYzliNGMxNTBkNDA1NWM5MDBiYWFhYzEgcmVsZWFzZTI3LW1haW50Cis4NTAzNiA3YmRhMGE2MzJiMGQ0NTVjNTQ5NGUxMmU3YmRlYjI0OTc1MzVhODAxIHJlbGVhc2UyNy1tYWludAorODUwMzcgNGQzZmJjZjZmOTZhMGU4MjM4ODg3ZDU2NGU1N2Q4ZTkyNDZmOGIxNiByZWxlYXNlMzEtbWFpbnQKKzg1MDM4IGNlNGEyMmZjOWNjNDQxYzk1MzIwM2FlNGU5NmFiNTQ1OGIxMjgwMDEgcHkzay10dGstZGVidWctb24teHA1Cis4NTA0MyAzZDQ5MGMzYTAxOWUyMTBiNjM0ZWZiYjdhMTEwNGQ4OGE5OTZlZTEzIHB5M2sKKzg1MDQ0IGY3NmVmMWY0NjI2NjM3MDY0MDRjY2E3YzEyY2M2Zjk0ODQ3YjJiMDQgcHkzay10dGstZGVidWctb24teHA1Cis4NTA0NSA3ZGZhOTkwMGY4Yzc4ODVjZmNjYzljMGFhOWExNDk2ZDRkZjQ0NGFhIHJlbGVhc2UzMS1tYWludAorODUwNDYgZTEyYmE0MmY4NjFmYzdlYjA1MGNjODQyMzBlNDFkNzM4ODM1ZGU3YiByZWxlYXNlMzEtbWFpbnQKKzg1MDQ3IGUzODJmZjc0MTc5MDI2MmU5Y2I0ZDlmMzc1YzE2YTBhMzdhZWY3YTUgcHkzaworODUwNDggYzhkYzRiNWU1NGZiZDRlMTRjZjU2NTUyYzdiOTY5ZGJkNzhlNGE0NCBweTNrCis4NTA0OSAzZjQyNzNkMzBiMzg1MjUxMWEzNjAyMWQ1NjY4MWMzZjM2YjlkNzY2IHJlbGVhc2UyNy1tYWludC10dGstZGVidWctb24teHA1Cis4NTA1MCAwOTgxMjNhN2EwM2NiN2IxYTVjMTJiN2E0YWI5MmE3ZDllNDZiNmIxIHJlbGVhc2UyNy1tYWludAorODUwNTEgNGM0OGViYTEyMTIzZWU1Njc5MWNiOGYwNzRhNGIzMDcwODU0M2ZiYiByZWxlYXNlMjctbWFpbnQKKzg1MDUyIDY5NGNiNWQ4NjUyNTE1MGNjMWVmMzQ2NGU2ZDFjMDg5NDZlZDVlZjUgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDUzIGE0YjM5OThhN2FkNDJkYTYxMDAzZmU1N2UwOTQ3NWU2OGEyZmFlZWMgcHkzay10dGstZGVidWctb24teHA1Cis4NTA1NCBmYWZlODQyZTMyMDBjYjhhZDU3NDkyOGIxZjgzNTBhNzEzZWYxMzdmIHB5M2sKKzg1MDU1IDRlNWQyMDFmZjI5NDAxYjA1ODk3ZmU1OTliNTNkZGMzMDE5ZGUxN2MgcHkzaworODUwNTYgMzUzZjBjMmJhZjc3ZDJkZDVmOTA5NDU1Y2VjNjVhZWExMjczOWZiYyBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU3IGNlYTM3ZmIwM2RjMGY0OWZkZmNjYzc4MTc2Mzk5N2M1NDU1OWIzMzAgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU4IDQ1ZjU2ZTMwYWZhNTc1ZjMyMmQxMzc1MzMwNGY0NGY1NGI0ZGQ3YmYgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MDU5IDk1MjNkYmUwYjY0OTllOWExMGZiNmJjMzFlNmQ1ZjhhODg2OGNkZjMgcHkzaworODUwNjAgZTA2Mjg4NDc2NWQ2NWFkZjg0OTFlZjI4ZDczNDUzZTk5NzU5NGJjYiByZWxlYXNlMjctbWFpbnQKKzg1MDYxIDA1Y2U1ODVmNjRjNDg4YTg5YTYwMTRkZDYzN2U1NWI3Yjc1MWRlMDIgcmVsZWFzZTMxLW1haW50Cis4NTA2MiBlMzMyY2Q5NWY0MTRhYTA4OWNkZWJkOGI0YmM1Y2Q0NGRiYmVjYWVlIHB5M2sKKzg1MDYzIDlkYTEzZTU2MGEzYTk2ZGQ1NGIzYzFlYWVmZjJiYmVlNTE5YWYyNTYgcmVsZWFzZTMxLW1haW50Cis4NTA2NCBhZmIyZjE0NGI5OGMyMzY1NWE4ZWQ4YmExNjFjNDg4OTM4ZmFiZTY3IHJlbGVhc2UyNy1tYWludAorODUwNjUgNDNiNzlkODBmNWFlY2VhYmEzMDdjYWQ5ODk1NzQ3YTIzMjliNGIxOCByZWxlYXNlMjctbWFpbnQtdHRrLWRlYnVnLW9uLXhwNQorODUwNjYgN2Q5YmFmNjQ5ZjJkOGQ3ZGQyNDE3ZjljYTk2YjU0OGM3NWQ0NTM3MSBweTNrCis4NTA2NyA2NGU0MTE3Zjc4ODc1NGFmZjA0MjNkYzA5MGEwYjhlMDhhMTBjZmVlIHJlbGVhc2UzMS1tYWludAorODUwNjggZDFiZWU3Y2Y2YzJmMmFlNWRlNTVhOWE5MWQ2OGU1ZmUxNjkyNTA5NiByZWxlYXNlMjctbWFpbnQKKzg1MDY5IGZhZDc4ZTg2ZDE2ZWNkMzViYmI1OWJiN2NmZGI2OGIyZTZhMTQ2NzIgcmVsZWFzZTI3LW1haW50Cis4NTA3MCBkZDk0YWMyYTQyYjE3ZWZhY2Q1MTFkNzU0YzI0M2Y4ZDRmOTliNTJhIHB5M2sKKzg1MDcxIDdlMjc1YTRjZjk0MTBkNDI5MGRiYmM0Y2Q0Nzg0ZTE5YTFiNjhmY2QgcHkzaworODUwNzIgYTA4ZTQyNzg5ZTZkNTFkMjI0NjM1MmRhZDQ4ZmJhZTc4ODFlYzY4OSBweTNrCis4NTA3MyA0NzJhNmVlYzE5NmFiZmMxNGRkNTA0Mzg5ZTNjYjMyMGU1ZmQ2YTI0IHB5M2sKKzg1MDc0IDBmOGMyZWI4OWY0NmQ1YzBmYWI3M2I4NzJlOTJmY2QxYWExNDBmOTggcHkzaworODUwNzUgZGMzODMzOTg0NzM0YjI0OTNlZGYyMWMyMThmYjZiNjMyNmExYjVkOCBweTNrCis4NTA3NiA2YzhhZGMyMDBlZTAyZjFkM2EwMjRmNDMxYjllZmRiM2I4MjY3N2Q1IHJlbGVhc2UzMS1tYWludAorODUwNzcgNmMxZjEwZTA3NDU1NjQwN2NhOTQzNzY1YzNiMzM5ZTRjOGI0ZmM2ZCBweTNrCis4NTA3OCBmYjdlZTBmMmM2ZjRhMDQ3YTcwMWExYmY1MDVlMDNkMGZiM2YzNDE2IHB5M2sKKzg1MDc5IGMxODQyM2Y0Yjk2ODhjODlhMDlmZTY0MGFlOTU5Y2Y1MGRiODVkM2EgcmVsZWFzZTMxLW1haW50Cis4NTA4MCBkMTJkNTUwZWJmMzQ1NWFiODkwMWZmNGE1MTlmZWYwMTljOTc1YjZhIHB5M2sKKzg1MDgxIDU1MjJjNmIyYWY4NzJjZTEwYjQ0MDE4OTU1MGZkOTUyMWIwMmRkZGMgcmVsZWFzZTMxLW1haW50Cis4NTA4MiA0Y2Y3N2QxOTNmNTdmNWUwNzZiMWExOTk1NWVhYmJkZWU3ZWJiZDM0IHB5M2sKKzg1MDgzIGRjNDU1NTY0NmU4MDdkODI2ZjI2NTBkODlkZTg5ZDY4OGI5MGQyN2EgcmVsZWFzZTMxLW1haW50Cis4NTA4NCAwNmY1ZTE5MDg1NWEzZmQ3NzI4NDg4OTBkZDJjOGI5MjQxMzg3ZTcwIHB5M2sKKzg1MDg1IGM4NjllYTA3Y2Q5ZDI2OGM5ZTZlYzgzZmFjMjJlMDgyYjAyNjliYjYgcmVsZWFzZTMxLW1haW50Cis4NTA4NiBiM2M3ZTUxNjI3ZmRjNjk5MGJkYTZhYTY1MGQ2ZDAxMTI5ZTU0M2YyIHB5M2sKKzg1MDg3IDdiYjA1MTNjZDBiODI4OTJlYjI1N2NmZTdkMzA2ODM3ZTRjMmY0MWYgcHkzaworODUwODggNzM0ODVjYmQ2YzllYjZlYzRlMDBhMDViNjcyNjQwOGEyNDdkZDUzOCBweTNrCis4NTA4OSA1OWRmYjIxMzgzZjhiZjlmNmQxNmZlYThlMjk1NTkyNDRhNTVkYmY0IHJlbGVhc2UzMS1tYWludAorODUwOTAgMGVlMjExM2E0ZmRlNjIzNjZkYjY3MzcyOWNjNTM3NTA2MDM5ZjkzOSBweTNrCis4NTA5MSA3NzhjYjhlNmM2MzgzMDQwMzQxYWU0Nzc2YTBjZGYxY2NjYzk0ODVmIHJlbGVhc2UzMS1tYWludAorODUwOTIgZTEyYjEwNDM1NTMwOGRiZjcyNWE5NWQ1ZjNlOTIzNjU4MjUyOWE0YyByZWxlYXNlMjctbWFpbnQKKzg1MDkzIDdjN2QxZDk2ZTJjMzM0MTRiZDQ5YjExYmUwMDUyMTQ5ZTgwOGY5ZTkgcHkzaworODUwOTQgYzYyMGZlODdjNzAzYjA5MGZjN2VhMGZkOTQ3MjlmMjk3ZjBhYzczZSBweTNrCis4NTA5NSBhYzhkOWNhYzMwMzM1ZTNhMjNjODFmYmVhYThkNDhjNDgzNTFlZWU0IHB5M2sKKzg1MDk2IDE5MWVkMmFkNTk5N2MxZmM1NmZhMjM2OTM1ZTU5NTg3YjhjZjIzNWYgcHkzaworODUwOTcgOTYxZjUzNTRlYjU0MWY0NDUwZTUwZjQ1MThkYTA0MzE3OGFiYWIzYiBweTNrCis4NTA5OCA4MDBhZGRjOTg1NzE5ZmVlNDE2N2Y3MzdmZGE0YTgyZjg3MDA2NjcxIHB5M2staXNzdWU5OTc4Cis4NTA5OSAzZmI1ODNjOGU5N2U3ZjY0OTAyOWRjNjBlODYxN2FjM2EwZmZhMDY5IHB5M2staXNzdWU5OTc4Cis4NTEwMCBmNGQwNDc0OTFjYjQyYTgzZjJhNjk2MjcwZWQzODc4NWNmYjE0NDZjIHB5M2sKKzg1MTAxIDk0MTA5MGVkOTZkZjRmMDdhZjc4NjE4MzU5YmZhZTg5Y2ZmNGVhYjggcHkzaworODUxMDIgNjQzNGNkY2U3MTUyODUyM2E5ZDJkZDExM2UxNDQzNzdiZDU5NjM1YiByZWxlYXNlMzEtbWFpbnQKKzg1MTAzIDBiNGJmNmNkZTExZGVlMGQ0NTY0ZGJkMjdjZDZmYWQyZjAwYTQwNGUgcmVsZWFzZTI3LW1haW50Cis4NTEwNCAxZDE1YjU2N2E3NGIyODNlYjNkNmY4Yjk4ZDk4Y2NjMjUwYjRiYWM1IHB5M2staXNzdWU5OTc4Cis4NTEwNSBhZjlkZWUxMjdlM2MyYjVkMDZhN2JhMzliZmU3YzMzOTIzNzYyOTMyIHB5M2staXNzdWU5OTc4Cis4NTEwNiBjNGM2ZDg0MmQ4MmEwMTg3MjU5MGQwMmEzNWZlZDNjNmU0NDY2MTk2IHB5M2staXNzdWU5OTc4Cis4NTEwNyAzNGFiZTM2OTE5ZTUzYTRhMjJjNDFjMWZkMDU5NjgzMmM2Mjg4NDYzIHB5M2staXNzdWU5OTc4Cis4NTEwOCAxNDcyNThhMGFkZjg1Y2M0YmM2YWNiOWRkYmVjZWY3MmVhMDgxZGMxIHB5M2staXNzdWU5OTc4Cis4NTEwOSAyNWU4Yjc4MjdjN2RmMzk2YjRhYjRhZjFiYjJkY2UxNzA5OWVhNTcxIHB5M2sKKzg1MTEwIGE0MzBmOGZlYzRhMGZjNGRhYzhjOTZjN2Q4NzRhNzI1YjVhY2Q5NWQgcmVsZWFzZTI3LW1haW50Cis4NTExMSAwMDc3ZWUzMDEzNGM2YjNkNGQ3YjFmMDY5MmJiMDllZmI5Mjg1MDUwIHB5M2sKKzg1MTEzIDZkZGNmNzQyODIyN2EyMjQ4NTFkNzRiNmFkMjFlOTMwMzhkZDBhNjAgcHkzaworODUxMTQgNTkzNmVjM2M0ZWMwMjdmZjkzZmQwYmE2Y2YwNTA3NDQ4NTRlYjkwMSBweTNrCis4NTExNSAwMWI5NmY3OGZiNzBiN2JlYWI4ZjdlMjEyYjgxYzRmZDY4MjBjYzEyIHB5M2sKKzg1MTE2IDFhZGQ4ZTVmMzE5ODUxOGIzMjNlNzdmMmFmY2M0OWRlYTlkNDQzZWIgcHkzaworODUxMTcgNzQ2ZTkxNTAxMTlhZGI3MDgyMTYwNDRiMTAyNDczZmYyYjY0ZGU4YiBweTNrCis4NTExOCBlNzEwZTc5MmVmMmU3NmI0OTFmZjYwNGM5Y2NhMGFjYzkxZmUxNzBiIHB5M2sKKzg1MTE5IGVmMTY4Njg4YWYwYTk2ZjgxNWRkMjcxYjMxNjIzYTI5ZmI1ZmJmODcgcHkzaworODUxMjAgYTkzNDlmZDNkMGY3YmNhZWExNTYwYWZhNGM1Y2Q4OTMzMDFmMDhjNiBweTNrCis4NTEyMSBlYTQ3MjNhYWM0NzhmNGJkNDQ5OGIxMmEzZTJhNzhhYWM3ZTI3MmE4IHB5M2sKKzg1MTIyIDQwMzNmODNjMmRmMThkOThmYTI3NmVmMzU3YWEyM2I5Y2FjMDllMDcgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTIzIDlmZTFkY2UyYmZhNDQ1MDYyOTgyMjBiNWIyODMzZjI5YWE3MWNjNzMgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTI0IGQ5NTczZTM2MjRlYzEyMjFlZjlkOWRlZTFhNmY4OWM1N2NmZTZkZmUgcmVsZWFzZTI3LW1haW50LXR0ay1kZWJ1Zy1vbi14cDUKKzg1MTI1IDdhZGQ0NWJjYzljNjcyYzM4NDMyNjBjOTM0NzE4ZjI2ZWE3YmNjMGIgcHkzaworODUxMjYgZDc4N2VmOWFjYjcyNGU4YzU5NzQ5NzRlMGE3YzZjZGQ2NDEzOGJkNSByZWxlYXNlMzEtbWFpbnQKKzg1MTI3IGI5OWY1MjdlMGQ3N2M3MDMzZWMxZGU3OThjMzU4ZDYxNzJkNTk4OWMgcmVsZWFzZTI3LW1haW50Cis4NTEzMCA5ZjI3ZDcyYmY1ZGY4OTMwOGJmNDBjNjgyYTYxOWU4OWNkYTkzOGE5IHB5M2sKKzg1MTMyIDI4MmM3N2RiM2QzODliZDczNDFiNGJkNmE4YzVjMDg1ODA5ZDVlN2YgcHkzaworODUxMzMgY2IyZmJiNWU2NDA5NjRlN2Y3ZGU2ZGYwZmM3ZTQ0OTc3YTFhOTFkNiByZWxlYXNlMzEtbWFpbnQKKzg1MTM1IDA0ZjUzY2E0MTU5NmVlODAxMDM5MzIzMDc1ODEyNjFlZGY0NWFmYWUgcHkzaworODUxMzYgODdmNGIzMjkwNWRmMTA1MGVmMGFjODY1ZjU4NGI0ZGFmNTMyMDk0YyByZWxlYXNlMjctbWFpbnQKKzg1MTM3IDU5NzgwNGI0MTEyNTliOGMwZjU2NTg0OWE2NDk0Y2UxYzZmN2EzYWUgcHkzaworODUxMzggZGFlY2U3YTIzNGRjOTFhODE5MDY0MzQ1MzA5OGIwYWQ1MTZmZGViMyByZWxlYXNlMjctbWFpbnQKKzg1MTM5IDU5ZGUyMjVhMTljZjhhYzU0N2EwY2RiYjQ5YTlmZDdjMmUwNjg1MjUgcmVsZWFzZTMxLW1haW50Cis4NTE0MCBhOWEzMGNmYjg5YTVkMzRiZjg2ZjcwMTcwNjJjZmJhOTUxNTg5ZjczIHB5M2sKKzg1MTQxIDZmMTMzZTg3YTRmOGIxZWVlMDgwOWFkNTVhZWZkNTgzNDA3MGUzODcgcmVsZWFzZTMxLW1haW50Cis4NTE0MiAxNWMzNjcxYzE3ODMyZDlhZjliMTdlZTE5ODY5ZmZmYTk4YzY1MjExIHB5M2sKKzg1MTQzIDliNWU2YTU3YWIxMDU0MjkxZTc3Y2U1MTA4ZTMxMTliZjk2ZDYxYjEgcmVsZWFzZTMxLW1haW50Cis4NTE0NCAyZjY4MzFjZDI0MWVkNzI5MTc0OThiMGQ5YjVhZDEwYTJjYzhiNTRkIHJlbGVhc2UyNy1tYWludAorODUxNDUgMDYyMmQ0ZDA4YWYwMjVmMjUxYjZmZmU2YmU1ZGMwY2IzZDFjNGJiNCByZWxlYXNlMjctbWFpbnQKKzg1MTQ2IDJlNjg0MGMwYzEyNjZiNDYwNmU4NTQ1ODZmN2YyYjI5MTBkNGU0YmMgcHkzaworODUxNTMgOTUyNThhNmEwNjgzZTZhNTQ5NWNkMGQxNTRiZmZlZWNkMzBhZmU5YyBweTNrCis4NTE1NCAzNDBkMWJmNTk1MWUxMDhiM2ZkMDAzOTllNTBlYzEzZTE2MjIyODg3IHB5M2sKKzg1MTU1IDQ3MWRiZDkwNmFhZDAxMWQyNGRkOGIyNGQzMmY0YjMzZjgwMWE5Y2MgcmVsZWFzZTI3LW1haW50Cis4NTE1NiA5MWU2MjM4OTBiOTRjMWRlMDQyZjY3MDA4NDU0YmQzMzA4MjI1ZmM0IHB5M2sKKzg1MTU3IGRlNDE4ZDlkZDczMzFiNjMyODI1ZDM4ZmM2Nzg3MTkxYTg4MTEwYTkgcmVsZWFzZTMxLW1haW50Cis4NTE1OCBjZTQ3NWQzNWI1MGZjNjM2ZTUyYTA1NWVmNTI3OTkwMjUwNTkwMzBlIHJlbGVhc2UyNy1tYWludAorODUxNjkgN2MwZjE4MzdlOGNiZTI1ZDQ3YjM4MTc1Y2EzMzYwZjNmNmEyMDE4NiBweTNrCis4NTE3MCBiZWJlNWUzNTY2MWUyMDc2ZWE3YTExYTQyODYzOTRmMDVlZDRkZmFmIHJlbGVhc2UzMS1tYWludAorODUxNzEgYTc0OGJmY2I2OTczM2NkOWZkMGU5Mzg3ODU3YjM0NjJkOTNjMGUwYyByZWxlYXNlMjctbWFpbnQKKzg1MTcyIGRlN2NkYjcyNjM1MDJiNzQ3Nzg2NGM5ZGFiMGU3MGNlMmMwNWFiZWYgcHkzaworODUxNzMgMGNjM2ZmODAyMGFlNjVjOTZjZDNiY2QzNTdhZWMyOGU5MGJmNWYyMyBweTNrCis4NTE3NCA0MjgzMTRlZWIyYzc2M2I5Y2NiODdjMzBkNjQ3YTU3ZjRiOGJhZGNiIHB5M2sKKzg1MTc1IGJiNWUxOGE5YmRlM2FlMjI3YzNmMWQwMmJmYWZkNjM5YjMzZjc5NGIgcHkzaworODUxNzYgOGRlNTM1ZGVmMTIyMmU0Yjc2NWYwMjk0OGNkMzFkNDEwYzE0NTEwYSBweTNrCis4NTE3NyA5MDQ4ODA3YmU4M2FiYjk5OTAzZTU3MzgwODQxMGJiNTAyNThmOGZiIHB5M2sKKzg1MTc4IGM5OTBlYjliNjBhOWU0NzliMWVmNTg3M2JmYjRjOTllMjQwZmY5M2YgcHkzaworODUxNzkgZWY1YzU3MjE3YjIwM2VhNzUwY2I4ZjRiZjU1NTFmY2YxMjUxMmY4MSBweTNrCis4NTE4MCAxMjEyZTUwMGE1ODUwZTk0NDQxMTM0YWYwNWQxZjVkNTFkYWNmZDYwIHJlbGVhc2UzMS1tYWludAorODUxODEgZjNhNzBkOTlkN2UwZmI1Y2E1YjZkMDUxMmY0N2M4N2JmODBkOTI4ZiByZWxlYXNlMjctbWFpbnQKKzg1MTgyIDA3MGE4ZjY2NDIyMGU2YzUzOGU1OGFkNzRkY2QzNDhiNTYyYjMxOGEgcHkzaworODUxODMgMzk0ZTI1MzgyYTU5MjM2YjdkNTQ4YjRhYzNjMDllZmJjMWI1MWQzMSByZWxlYXNlMzEtbWFpbnQKKzg1MTkzIGRlYzA4Nzg5YTliNDIzM2Y3MzNlZjNiMTViOGRlOTdjNjgyMmFlOTQgcHkzaworODUxOTQgMGY4NzA4NWIyOTBmNDA2MGZhODBkOWFmZDRlZDZiOWEzZTIxOGY4MiByZWxlYXNlMjctbWFpbnQKKzg1MTk1IGI5ZTI2YjBjNDYxNzk4Nzk1YWNmNGNhZmU1MzI0ZGZhNzQ3OGEwYTggcmVsZWFzZTMxLW1haW50Cis4NTE5NiA5YmJkNDQ5ODY1OGVlMzcxMmMxYTM1MjhiNjNlMGJhOTg2NGY2NDBlIHBlcC0zODIKKzg1MTk3IDNiYjNlZTZlNjBlMGE4MjIxOWI4OTI2ZDZhZDlhM2RlOWJiYTJjNmYgcHkzaworODUxOTggYmE4Y2QyMDA3ZDI5MjJmNTRlY2QwNTVjZjU2OWMzMGQyMTk4ZWVkMCByZWxlYXNlMzEtbWFpbnQKKzg1MTk5IDEzOWRkNGNmYjgwZjU3OGQ2NTNjNzNiYWE1YjMwYWY1NGU4MzU4ZDkgcHkzaworODUyMDAgZjdjOTEwN2Y3YWJkZTJmNTA3YWFmNzk5YzVjMDIxZTQwZTM2MjFlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjAxIGQxZTBjZjgxOGFkMjk5ZmZlNjQ1YWJlOWExMmI4Y2ZmZjUwZmYxYzkgcmVsZWFzZTI3LW1haW50Cis4NTIwMiAyYzJiYTFiMzA4MjNmMjA4ZDYwYTM5NDkwMDU3M2ZiZTdkMDJmZjE0IHB5M2sKKzg1MjAzIDk0NWE1NWQ0ZTczZWY4MjUxNDA3M2FmYjYzYTliZDM4NWRhZjlkZTQgcmVsZWFzZTMxLW1haW50Cis4NTIwNCBmMTFkYzk0MDRkMTE4NjFjMmMxMWZkNDUwMjg3NjcwY2Y5ZGFjYjQ5IHJlbGVhc2UyNy1tYWludAorODUyMDUgYWQ0MWZiZjMzZTNiOThkNGQ3YjI2ODUzMTQ4NzYwZjQ3NDZmN2M5ZCBweTNrCis4NTIwNiAzMmMzMmI3MGFhMzNiYjM0MDZjMjBjOGI0Mjg3NzE2MjcxM2Y4Zjk3IHJlbGVhc2UzMS1tYWludAorODUyMDcgZTFmNmNlODM2ZmM1MzE3ZmEzOTA1ZGNkYzg0Mzg2N2VjNTNlYjE1MCByZWxlYXNlMjctbWFpbnQKKzg1MjA4IDllYjllM2Y2NmUzYWQ4ZmVhZmZkZDVmNzU2ZjY4OGNlMDZmODA3M2EgcHkzaworODUyMDkgOGJkMGEwNjNjZWI5Y2U3YTkxNDExZWIwMzVkMmRmZjNmYzUxNmNmMSBweTNrCis4NTIxMCBiNzdlOTE0NDVkOWI3MWYxYTQ0MTliNmY5YjMyNmVlNDFlMzQ5MmQ1IHJlbGVhc2UzMS1tYWludAorODUyMTEgYjMzNGVhYWRiNTA4Y2VlMjRmZWFlMTM1OWJhMTY3NjI5ODdmMTU2ZCBweTNrCis4NTIxMiA2YWY3YjQxMDJkNzdkY2ExMzM5NzkxMTY4MTI2ZWRjNDNkYzdlN2VjIHJlbGVhc2UzMS1tYWludAorODUyMTMgMzYzM2Q4ZmU1NTUwNmE5YTNkODcxNWRlYmU3NTBhYTQxNjRjOWRjMSByZWxlYXNlMjctbWFpbnQKKzg1MjE1IGQxNjFmOGM5NjRlYjhhYjZhZGU0YzU0ZjRiNzI1MzVjOTg4YTRhYzQgcHkzaworODUyMjAgYzI4ZmRlZWVhNzg2MDg4ODk5NThhOWUyNDY0NGRlZmE1MDE0MmU4ZCBweTNrCis4NTIyMSA1ZjIwZjdmMTVlZGY3MDQ1ZDliZjNlODJhNjZkYzBiZDgxY2MyNmI1IHB5M2sKKzg1MjIyIDhmZThiMjgxMzU2YzNkYjNiODUzMWUxMTZlODZlZDBhYzYzMzkwNjEgcHkzaworODUyMjMgNzUzYmYyM2U0NWM1YmU4YzIzN2RhMmJiZjU0ZTQwYThiNjNhNmExNSBweTNrCis4NTIyNCBiMDY1YjE5NDBjYmQ5ZmEzY2U2NjM0NmZmNjNiZTkzMDU3NjA4YWI0IHJlbGVhc2UzMS1tYWludAorODUyMjUgMTJjNmRhNWFjZDczMDY3YzkxZDE2YzgzN2M1ZTQ5ZDZmZmZiYzYzZSByZWxlYXNlMjctbWFpbnQKKzg1MjI2IDA5ODE2ZmM5Y2RlNTU3ZDExNmViMmE2YzM5ODUyZTg5NTY0YzZhYzUgcHkzaworODUyMjggZmI4Mjg0MGYwZTcwYmVjZjc1YTEyYTA5ZmE4ZmVjYmMxN2RhYjE3ZCBweTNrCis4NTIyOSA5OTg4OTBjZmYyMDVmMzI0NWY3ZGYwZjM2NDdkNWM1ZDAzYzM0NmM0IHB5M2sKKzg1MjMyIDNkNDI1MGNjY2NlOTE4MjY1YzdhNGQ1MGVhZmFhNGFkN2ExMmUyMTggcHkzaworODUyMzMgNzc2MDk1YWEwNThkMWUxMDkzYTQyODFjNmNmYjM2MzUyOTQwZDcwZCByZWxlYXNlMzEtbWFpbnQKKzg1MjM0IGM2ZGRiZmI3YWI0MzgxOTU0ZjZhYjBiNjBjYjY0YWIzYzA0MjhkZDcgcmVsZWFzZTI3LW1haW50Cis4NTIzNSA3OWJiN2NhZTY5YmVjYjk2NGUwMThkNzZjODBjZGY3MTkxMGM1ZDYxIHB5M2sKKzg1MjM2IDc1OWU1ZDI3NWJlYjM5OWExY2IyYjJkN2Q2ODgxMjNjMmFiOTAyNjMgcHkzaworODUyMzcgNjRjYTAxZWMxNzE1ZmIzNmUxODM3MzYyZDcyNTc5MDBkNTE0MDM1NSByZWxlYXNlMzEtbWFpbnQKKzg1MjM4IGNkNzM5MTdmMjQ3ODM4NjZlZmVmNGMxMDlkYTJkMjgwMTgwNmUyZDkgcmVsZWFzZTI3LW1haW50Cis4NTIzOSAxYzQxNzgxMWU1MDhmOTllODViMWRjNDBlNGM1NjRiZGY4YjZlZDhjIHB5M2sKKzg1MjQwIDhiY2JkZDY3MzBhNzU3MzhjZDA1MWQzOWE2NGZkODBlNTY0NjIwNGUgcHkzaworODUyNDEgN2EwYjQxZjFjNzNiODUyYWY0Y2Y1ZDA5MTE3ZWU2YzQ5OGYzOGNlZSByZWxlYXNlMzEtbWFpbnQKKzg1MjQyIGVlZGJlNWVhNDRjYjIxNTkzZGFiM2JjZGYzMTYxNzg2MGY4ODgwNzcgcmVsZWFzZTMxLW1haW50Cis4NTI0MyBlYjdkNjlkODk2NTAxY2I5NmUxNjRhMGM5MjExNzJlNDhiMGM5Yzg2IHJlbGVhc2UzMS1tYWludAorODUyNDQgYTY4Zjg3NjM1NTViMjE0ZWY3MzUyOWM5Mjc3MjExMjNhYWUwZjk4NSByZWxlYXNlMzEtbWFpbnQKKzg1MjQ1IDUzNzBkNGYwODY0ODA5Y2VlMWUzZWY2MjlmNzU4MGRhODFlNTlkNzggcmVsZWFzZTMxLW1haW50Cis4NTI0NiBhNGM5NzQ2Y2IwM2M1YTViYTg0MmJhZGNiZDgwYzhiYWI4NzQ0ZTRlIHJlbGVhc2UzMS1tYWludAorODUyNDcgYmZlZTU0NzgxYmExZjkzZTRkOTBkY2Y2ZWZmMDdmMTdkZjNhNWVlNCByZWxlYXNlMzEtbWFpbnQKKzg1MjQ4IGM5ODc5YjM0MDJlNGFiNzJkMmQzOWI0NWRiNWFhMjNlM2RjZjZlYTYgcmVsZWFzZTMxLW1haW50Cis4NTI0OSBlYjhlMTM3ODRkZTczODRjNTlmZGJlNDc2YWUzOWNiMDJhMTIwNTZlIHJlbGVhc2UzMS1tYWludAorODUyNTAgYjlhNzVkZDc0MjBkMDU2NmI3MzIyNTg3MmE3NDVkYjY5Yjg3NzFiZiByZWxlYXNlMzEtbWFpbnQKKzg1MjUxIDkwZTE3MzVkZjRkOTYyY2VlMDBjNDg2MTFjYTBhZWZlOGU1OGViMDQgcmVsZWFzZTMxLW1haW50Cis4NTI1MiAyZGU4MzIzYmQ0ZWJhMmFhMzUzY2RiMWZkNjgwYTE5M2E3NDM5YTRhIHJlbGVhc2UzMS1tYWludAorODUyNTMgYTA0NzkzNDBmMDM1MmYyYWU2M2JiMzZmZDhkNjRmNjE2OWQ5NDcwNSBweTNrCis4NTI1NCBmMDA0NDBhZjk0MTM3OGRhYjQ0ZDRlMWQwNzRiYmJjMGM1MzYwOTJhIHJlbGVhc2UzMS1tYWludAorODUyNTUgMDQ0Y2M4YTlmMTljZmExYjc3ZmFkMGI4ZWEzNjFmOWZlYTU0NGQxMCByZWxlYXNlMzEtbWFpbnQKKzg1MjU2IDZmOWQxNWZjY2ZhNGFjZjFhZmEzNzBmMjFmYjNjZmRmYWIyM2E3NjggcmVsZWFzZTMxLW1haW50Cis4NTI1NyBjNjFjMDJhYzIwOTlmYmY3ODY0ZWZmY2JlYjQ0MDY3YzkzZGJkMjIyIHJlbGVhc2UzMS1tYWludAorODUyNTggNjk1OWFkYmEzYjZhNWQyMjdkYjg5MTk4MWIyOThiMDhjYzlmZDllYyByZWxlYXNlMzEtbWFpbnQKKzg1MjU5IGE1YzYzYjNhOTZhOWE4ZjIyNDJjM2QyMDk3MzNiM2FlODQ4MjNmNGIgcmVsZWFzZTMxLW1haW50Cis4NTI2MCAyODMwNjI0NGFmYTBmNDU4OWMxYzU5ZWQ3NDQwMzhiODJkZGI0OTNiIHJlbGVhc2UzMS1tYWludAorODUyNjEgNjQ5ODliMDMzOThjYTJmOGZiNjY4ODRmMjE5ZGE5ZDkzYWE3MGY4MyByZWxlYXNlMjctbWFpbnQKKzg1MjYyIGZmNzM0ZjIyNWI0N2U5Njg5YmQyZGQxMDU4NWU3MDJjNjQ0OGQwMjMgcmVsZWFzZTI3LW1haW50Cis4NTI2MyBjYWI0NTg2MzhlNGRiNTQ3ZTBkZjYzZDQwNzk1ZjJjZjlkMmU4ODI5IHJlbGVhc2UzMS1tYWludAorODUyNjQgYmFhOThiYTg1ZmQ0MTE4OWMwYTk1YzE1MGZmZDQ1NWNlZGRmYzc2MSByZWxlYXNlMjctbWFpbnQKKzg1MjY1IDJjMTE1YmY1MmNmZjljZTVmYmZjMjMwY2M0ZGIwYWY1Njc0ZWNkYTkgcmVsZWFzZTI3LW1haW50Cis4NTI2NiAyODU2NTFhMTUzNTVlY2RlNDA1OTg5OTRhZjk1YjQyZGMyMDc4ZDI0IHJlbGVhc2UyNy1tYWludAorODUyNjcgY2UyMDIxNTJlMjFhMTE0M2U2ZTliZWFjYWY4MDJmZWI3ZTE5Y2VmMCByZWxlYXNlMjctbWFpbnQKKzg1MjY4IDUzNmQ4NjUwZGEzZGYwZDk2N2RjOTc3OGUzMzQzYWIyYWM5ODk2Y2EgcmVsZWFzZTI3LW1haW50Cis4NTI2OSBlOWUyNDFhOTNmOWVlMzBjZWY5MzgxMDYyM2FmZDdhODBkOWI5MmNjIHJlbGVhc2UyNy1tYWludAorODUyNzAgNzgzOTZlZjRkODFjZDZiNzUzY2E1ODM3M2E4Y2VmYTQ4ZjUzZjBiZCByZWxlYXNlMjctbWFpbnQKKzg1MjcxIDFhMGUwNjY5Nzc5Y2NhZjZkODI3MDg4MTA3NTYxM2JhZjIxZTZkZjkgcmVsZWFzZTI3LW1haW50Cis4NTI3MiA1MjFlYWMzMWE4OTNhOThhMGQ1YWYzNDQ2ZTgzNWIwZGZmNDdjNGI1IHB5M2sKKzg1MjczIDFjZmQzYjEyNDg5ZGFlOTRhMWY2NGE3OTdmYzYwMmM5OWQ3YjBiNTQgcHkzaworODUyNzQgOWFmZWQ3MGQzYWNhMWM2Mzc4YWUyYzM0ZDNhNWRkY2ZmNzlhNzdjYSBweTNrCis4NTI3NiBkZjg0NGJiNjcyOWE0YmM2NjE4YmFkZTJjNjBiZDhhNThlOTBkNzVlIHB5M2sKKzg1Mjc3IDkyNTdmMDgzZmNmZjIyZjQzZmNhOThlZDBjN2FmOTc2ZGIzZmU0YzQgcmVsZWFzZTMxLW1haW50Cis4NTI3OCAwMTkyMDU1YmNjM2JlOTE1OTA3NjE3N2ZiNTgyNzMxOGQwY2MwM2FkIHJlbGVhc2UyNy1tYWludAorODUyNzkgZDY3Mjc1M2EwM2YwMDhjZTliMjg0YWQ5YmU0N2QwMzBjMTg0N2IzYiByZWxlYXNlMzEtbWFpbnQKKzg1MjgwIDcwMTgyNjFmMmFjMWRhMTExMGU1Nzc2ZjYzMGY3ZDBjZGFlNDM4YmQgcmVsZWFzZTI3LW1haW50Cis4NTI4MSAyZDk5ZWRjNGYxMGRmYjBjZmRhNGEyNmE3ZmMxYzBkMGI0MmU1OGM4IHJlbGVhc2UzMS1tYWludAorODUyODIgNWI1NWU4YTljMTA3MWQzNjQ0OTQ0ODM4MmJjZjU1ZmI4Y2I3ZmJjZiByZWxlYXNlMjctbWFpbnQKKzg1Mjg3IDA2NmZiM2ZhZjZkNTM5MmYyZWYzMjIzMzA4ZDhlMzEwZTU3MTg2NGIgcHkzaworODUyODggODYyOWY3ZDhiNWUzMzdiMGEwOTdhZjgwNzc5MjUzNzlkNzA0Njg5NyBweTNrCis4NTI4OSBkMGNlM2ViMTFiMjg2YWI1NDk5OTkyZDFlYjhiMzJkZjA1ZjkzMzJhIHB5M2sKKzg1MjkwIDRkYTU1YzQ5MzQzNTcwMDE1YTQ5NDhmMGRjMWUzYTkzMzUzNzZiMDUgcHkzaworODUyOTEgYjhlNzhjZmM5NGViYTZhZTQ2MjVlOTdiMjk1NjY0MThhMjNhNDg1MiBweTNrCis4NTI5MiAzMmRjY2NkYzczZjhmNmZkZTg1ZjhhNTgzY2FlZDQ0OThkNzg2ZDExIHJlbGVhc2UyNy1tYWludAorODUyOTMgN2MxMDMxZDM4MjNjYzRkYjQ0NTkyODdkMzg0NTA0MGFhNDE2OGM3NyByZWxlYXNlMzEtbWFpbnQKKzg1Mjk1IDYyYzU4ZGM5MTJlODE2NTU0Yjg3OGNmNzZkY2ZjMWZkY2FiMDZhN2YgcHkzaworODUyOTYgZjIzN2ZkZTkyNWZhN2RkNGU4NzcyMmQ3NjgyYjM5YWViMDBhNWJiNCBweTNrCis4NTI5NyBjMWU5NTQyYjZjNzRhYTYzZjA4YTZhNDRkYTdjODNhNmM4YzY2NDljIHB5M2sKKzg1Mjk4IGUzYWU1YjAwYmExNWVlZTdiNjViNDBjYTA5MmI1NDA1NDlkOTJmMzEgcHkzaworODUyOTkgYTYyYzRkNWNkZjZjNzQzODE3MGVjNjIzY2FjODVmZWYyMWYyNDMxMSBweTNrCis4NTMwMCBiMjQ1N2ViODM0YWUwOWQyODQ2Mjg4Mzc5ZWNiZjM3MTU5OWU4NTNjIHJlbGVhc2UzMS1tYWludAorODUzMDEgZGZiMzRlNWZlMDY2MTlhODVjMmQ4OGNiMGUwNzE5NzY5YjQ5ZmNkZCByZWxlYXNlMjctbWFpbnQKKzg1MzAyIDA3MWYxZjdhZjUyMjNiODhiMjFlZjNjNmE2ZDJjMWRiZTExNzA0NzYgcHkzaworODUzMDQgMzkwMTRmMGFiYzMyODI5NWIzYjc4MGM3NjEyNzkwNzQ5ODc4NWU1ZCBweTNrCis4NTMwNSA3ODc5YThlYzdmNzlhOTMyM2NjYzUwYWVmNTQwZThmZjRmNjZiYjkwIHB5M2sKKzg1MzA2IDFmMzkxOWFmOGE1MzZkMThlZWQ0NzU0OGMwNWIyZTg2OTAxOGMxODQgcHkzaworODUzMDcgMjE0N2NjMTUyMjI3MTU0MTE5MDBjYzI1MjU3NTM3YzJkN2I4ZTAwZCBweTNrCis4NTMwOCA4ZmQ1ZDA2NDYyZTZiOGQ1ZjE2MTg2OWU3YzdjNzRlYzk0NTAxNDQ4IHB5M2sKKzg1MzA5IGU0YmRkMDdjZTBjNjI2OTM4Y2NkOTkzNmZmMjNmMTU5ZmVkYTE4ZDUgcHkzaworODUzMTAgMWM0Nzc0YjRlOThhNDYyY2NkMDAyMGIwNWNkYWE5MDNkMjM3NWViNyBweTNrCis4NTMxMSA3N2E2YTI0OWUyNGU4ZTYyZWVmNWYzNWYwZWIwYjEyYjY2NzQ0ZjIxIHB5M2sKKzg1MzEyIGZhNmU1MDIwOGQ5MzA5NWE0OGZiMjZiZjM1ZmU4ZmY0MTU2Yjk1MGQgcmVsZWFzZTI3LW1haW50Cis4NTMxMyAzOWEwYjk0M2UzZTFmMTdmMTIyZjFkZWM4MDFmMDY1ZWZlN2Q1MjdmIHJlbGVhc2UzMS1tYWludAorODUzMTQgODg0YzcxY2Q4ZGM2OTVhOTJiMTZjMzEzODc3OTJhYWZjMTJjM2QxYSBweTNrCis4NTMxNSBhMTRlMDc0ZmE0MmZjNTUyYzI0OWRjNjdiMTI3NzUyNDQ0Y2ViNTNmIHB5M2sKKzg1MzE2IGM0MTE1NTJjZGM3Y2QzYmU4OWY2MTIzNTE1NzJmNjAxYzNjYjZlYTEgcHkzaworODUzMTcgOGM1NzYwMmVhMWIzMGMyYWEyMWVkYmM3ZWRjYTFlMjJmMDhjN2ZkOSByZWxlYXNlMzEtbWFpbnQKKzg1MzE4IGFjZGIzMjAwNWMwYWMzMGZhYzI4NWY4Mzk0OWFkYTgxNjUyOTYxYTAgcmVsZWFzZTI3LW1haW50Cis4NTMxOSA2YTJmOGY2OTJmMDQ4Y2M4OWU4MjRjMjllODJkZDRlZmMwMzA2MjZjIHJlbGVhc2UyNy1tYWludAorODUzMjAgYTk5NjRhNGQzYzI5ZjA2MWZlYzE5MGUxZGVjMjkwMjQ5MTZmNmRhYyByZWxlYXNlMjctbWFpbnQKKzg1MzIxIDRjOThlZWZmMzdlN2YzYzMyZWE5NjAwYTc3NjkxZTVhMDM1MGYwYjAgcHkzaworODUzMjIgMWEwNDFmMzY0OTE2YmIzZDNhYjFiMzg2YmE0MDVjNjY4YTA3MWVjYSBweTNrCis4NTMyMyA0OTg3MzQ0Y2VlMjAwMTI4ZWFhMjc1ZjkwYjhkOTY5ZjdkYmU1M2IwIHB5M2sKKzg1MzI0IGIxZmIwNTM5YmY5OGJjYjQ0OTY0OWMyMTBiODI0NzNjZTEyOTBjMDUgcHkzaworODUzMjUgZGJlMDJlOTE2YWVjY2Y0YmU4NTc1ZDUwMThhNWY3MTU4ZTU4OWM1OSBweTNrCis4NTMyNiA1NjkzZGVkZTlhM2EwODQwMmE3MGVmMDFkMTE3OGM5ZGJmNzNlZTI2IHB5M2sKKzg1MzI3IDljMDI2MTgzZDgyYTRlYTkwNDE4OWRjMDJlZjQzYmMyNmIxYjdhOGMgcHkzaworODUzMjggYWVkZGIxODdmY2JlYmE1NmUzN2M0NzAzMThmN2Q0MjMzMTI3YjI3ZiBweTNrCis4NTMyOSAwYmJjM2JiMDBmYzRlYmRiZWM3ZTQxOGM5ODg0ODE0YmZlNzc5ZjhjIHJlbGVhc2UzMS1tYWludAorODUzMzAgNTE1NzViZGM1NDIwNmZlYWY4MWEwODVhN2UwNWQ3NDU5ZDA1M2JlNSByZWxlYXNlMjctbWFpbnQKKzg1MzM1IDQyZDZjMjYyYzk0NjY3MDU3ZWM0MjViZGIyYmJkYmY2YzlmMzA1MDAgcmVsZWFzZTI3LW1haW50Cis4NTMzNiAwYzQ4ODRkYjUzZTA0OTAyNWNmZDU2NmY1YmM2OTIzODQwY2MzM2NlIHB5M2sKKzg1MzM3IDY1NDNmYTRiMTQ1ODE1MjM0YmIyYjlmNzcxNmMxNTFjMmFhN2FlZWUgcmVsZWFzZTMxLW1haW50Cis4NTMzOCA3ZTAxZDY5NjRkNWQ3ZTBhYjA3N2FjYmU3MjBjZDZhYWZiNDU5NzFmIHJlbGVhc2UzMS1tYWludAorODUzMzkgMmQxNjRiMWFlYjc5YjdkZTMxY2RlNGMyOTVlYjAxMjc4MjViZTFmNiBweTNrCis4NTM0MCBhN2FiMDQ4YzY4NDVkOGU5M2MzYWNjYWJhMmY3ZDBjMjczMWY4ODgxIHB5M2sKKzg1MzQxIGU3YzlhODVmZTk2M2I1OGRlMGY2ODRkNmEzOWQzZGMzOTVkNjQ0MmUgcGVwLTM4MgorODUzNDIgY2YyYzU4M2IyY2JlYmYxOGJkYWI0OTEwMWYxZTUzMmFmZmI3M2Y2OSBweTNrCis4NTM0MyA4MTBiNTQwYWU2NTBmNzZkYzAyYmU4YWQxMGY1ZGM4NWQyMjY4ZGUzIHJlbGVhc2UzMS1tYWludAorODUzNDQgMGY2ZmJhNjViY2RlN2QyOTE0OTBmODBiZDZiNTI2NDcyYjg2NWQyZSByZWxlYXNlMjctbWFpbnQKKzg1MzQ1IGI2Mjg5OWVkN2ZiN2Q1YjM3NjJmMThhNmQwNGU3MTFlYWZjMjE5YWQgcHkzaworODUzNDYgZDQ3NWM5NDU0NmJlZDY1NGU5NWU4MzNlZjNjNDU4NmViMTkyZmQzNyByZWxlYXNlMzEtbWFpbnQKKzg1MzQ3IGZkZWIwZGNiOWEzZmQwZDE5ZjQ2M2JkYTJhMWY2NjhlNTY3YjgzZWMgcHkzaworODUzNDggMmZhOWQ3MzQ1YWM3ZmEzYzk0ODEzNjExMzJkNGFmNDY0NTE2ZWQ5NCByZWxlYXNlMzEtbWFpbnQKKzg1MzQ5IDUxZDMwNGVjNmMxMWI1OTc0Zjc0ZWQ1ODhhNWE4MjYyZDRiOTMxZDggcHkzaworODUzNTAgYTlhNDU2MjRjZWRmMWRlMzI0NTVjZDJlMjZlODY4MjA5M2FmOGI5NiByZWxlYXNlMjctbWFpbnQKKzg1MzUxIDIzMTM0ZTE2NzNkNzFiYTliZDBmNDQ4NzBlMzdhODFjNmY2Yjk4Y2EgcmVsZWFzZTMxLW1haW50Cis4NTM1MiBlZDVlNTk4ZGExNTBlZjZiOTA1NmEwNzI3MzBhNGI0OTNhOGIzM2JiIHB5M2sKKzg1MzUzIDI1ZDA3ODczOWMyYTRlZDgzODVkZDZhZDE2ZTcxZTczOTZkMGIxNDAgcHkzaworODUzNTQgYzAxOWU5NzdmMjIyYzMwYmQzNmVhMzAwNzEyYTg3NTE1NDM0M2E2MiBweTNrCis4NTM1NSBlZjIxZjhjOTlmYjM0MDUyY2VkMzZiZWJlMjhmOWQ0YzVkZWE2NWUyIHB5M2sKKzg1MzU3IGRhMDEyZDlhMmMyM2QxNDRlMzk5ZDJlMDFhNTViOGE4M2FkOTQ1NzMgcHkzaworODUzNTggYWQxNWI4OTEwNmRlM2JlMDVlMGYwMzk2YjA2N2E4N2NlZGZlMGUwMSByZWxlYXNlMjctbWFpbnQKKzg1MzU5IDQ1MThiMmMyZDYxNGYxMzgxN2Q4ZTg3NWY5NTAzMzJjYTVhNzE4ZWYgcHkzaworODUzNjAgY2RjOTVmZGRkYjdiMmJhOWRhYTAzMjdjYWE1ZmU5YzFmOGJjZjJkZSByZWxlYXNlMjctbWFpbnQKKzg1MzYxIDVlZGUxNWUxMjQ1ODE2OTkwOTNlY2M0NTIwNmZhMGI3ZjVkM2YwMGEgcmVsZWFzZTI3LW1haW50Cis4NTM2MSBkNTBiZmI3YWI1N2M5MjZiZjA3ZmFiYjk4Y2I3OGFhYzA2MDgzOGI3IHB5M2sKKzg1MzYyIDQ3NTgzMDQyNGMxZTgxODYwNTk5NDUzYjMwOWE5NzRlNmUzZmNhYzYgcHkzay10dGstZGVidWctb24teHA1Cis4NTM2MyA1YWFlZmE5NzUyYWNiNDlhODA3YWRjZWNhMzVkMjA4NWJhMzQxMzY2IHB5M2stdHRrLWRlYnVnLW9uLXhwNQorODUzNjQgNjJjMTRlZDZiOGEwYTYyNGE5YTA1OWI4YTA0NGRhN2I4ZjVhYzU3ZCBpc3N1ZTkwMDMKKzg1MzY1IDI2NzZhZjY1NTE0ZDRkOTdhOWZhMmI4Yjc0NDI4MzExMGZmZjU4M2UgaXNzdWU5MDAzCis4NTM2NiBkNDkwOWEwNTZkNGU3ODAzYmU4YTA5MjFlMTgxN2FiMmU1ZDg5ZjAzIHJlbGVhc2UyNy1tYWludAorODUzNjcgNDFhOWY5NTFlYmVhNWUxYWM2Y2VlNjMxMWRmY2Q3MzQ1ODg1NzI3MCBpc3N1ZTkwMDMKKzg1MzY4IDBhZGI2NDQwNTgxZWUxZDVhNmYzYTZlYTQ0MWZjYzVlOTY3OWNkNjcgaXNzdWU5NDM3Cis4NTM2OSBmN2Y3MDUyOTMxMGY4NGI5MTNjOTJjODE0NmRmZmVhZjdjN2JlZDMwIGlzc3VlOTQzNworODUzNzAgOWQ2ZDgzMDYzZWMyMmJkYzQyM2Q0MTFhZWMwMDBiMzhkOTNmY2VjNiBweTNrCis4NTM3MSBjYmRlODFlZjRhZjdjMDJlYzg0ZThhODhjMGQyZTMyNDFhZWQ0Y2NlIHB5M2sKKzg1MzcyIDE4YjcyNTljZDkyZDgzOGVmNjlmZGNkYTc2ODM3YjNjOGQ1ZmU2ZDUgcHkzaworODUzNzMgOTdmODBkMGExZDU2MzhhM2ExZjNlNzJmZmE0NGYwNmU1NDQwN2ViOCBwZXAtMzgyCis4NTM3NCA2NjljMzcyODc1MGIxNzU2ZmJkYjhhMjllYWQxNjJiYzM5ZTFjMDEzIHBlcC0zODIKKzg1Mzc1IDVmYTEyNWFlMDdhNjQxNzIzOGEwZjVkNzQwMWVjYzhhZTE3MWZhNDIgcHkzaworODUzNzYgZjMyMDBiZTRlYWEwOTg0ZDgxMzNiNTNhN2VhMGYwNjhjMzI0MTViYSByZWxlYXNlMzEtbWFpbnQKKzg1Mzc3IGZhYTRlMjJhYWJhN2U0YjM2ZWY5M2ZhMGNlNjFiMGYwZGNhMzMxM2IgcmVsZWFzZTI3LW1haW50Cis4NTM3OCA4Y2YxYWZmMTg1OWM2MjYzYTc1YTAwZWVmYzQ4MTJiNWY4ZWFhZmIwIHBlcC0zODIKKzg1Mzc5IDZkOTE4ZDkxMGE5Njg3Zjk4ZTk4ZTRiMjM5NDc5N2NhM2NmNjcxN2IgcGVwLTM4MgorODUzODIgZDI0OTI4YzI4MDAxOTE4YjRkYzZlYzNlMTMxZWM5MjVlNjVmMDFhNCBweTNrCis4NTM4MyA5YzcyM2FmYTQ0ZGFiYjQyMTgxOWE3Yzc0NDJlNjhmNGMyOGRlNGJkIHB5M2sKKzg1Mzg0IDQ2MTNlMTQ0OTAwMDY4MjQzZmMwZDgyOGVkYjdjMWUxMTk3NjNjY2QgcHkzaworODUzODUgOWUxNDdjMzQ5MTI2YzZlODFkNjE0YzUwYjc5NmIzZGY3NDBhZGQ2YSBweTNrCis4NTM4NiBkZWQ2MWUyNmI4NDE0ZjQ3YWRkNmNhNzQ5OWExZjQ0MzY5ZDVkNzA3IHB5M2sKKzg1Mzg3IGE4MTcyMDVkMjU0YTlmNzlmZTdmZGVjMjNlM2MyZWI0NWFhOTY2NmMgcHkzaworODUzODkgMzliMzhjYTFhYzA0YmQxYjUxYWNiMWU5NWYxYjViZmQxNGQzZWM4OCBweTNrCis4NTM5MCAyZmZiZmJjMGQzY2IxNmM2MTdlMmM4OWE2NDZjOTQ2YWYxZjBlMzllIHJlbGVhc2UyNy1tYWludAorODUzOTEgNjE3MzFlYzlhMDQ4MWU1NzE2MDY4MDE5NDYxZjNlYjk5N2FmMTFiZCByZWxlYXNlMzEtbWFpbnQKKzg1MzkyIGUyYWEzYjFkMDhiY2JjMTBhZjQzZGIwZjJjZTMzNmUwYjI4N2E5NTUgcHkzaworODUzOTMgNzkwOTQzNjQwOGUyZWUwOGM0YTFiMTJhNzlhNmIyMGZiMjhhNzYyNiByZWxlYXNlMjctbWFpbnQKKzg1Mzk0IDNlOGQyODg4NmFkNjYwZDljMzk0YjE0MmYyYWE4ZmI4ZWFhYjMzZTYgcmVsZWFzZTMxLW1haW50Cis4NTM5NSBmMmY1MmI0MGMxZjI4ZDI4MDRlYTQ2MGUwYzE0ZjJjZjdkYTA4ZTViIHB5M2sKKzg1Mzk2IGQ3YTcxZjFkMWUzNDFjMmE5Y2QxYzMyZDQ1YTllNmFiMzcxMDdmMGIgcmVsZWFzZTMxLW1haW50Cis4NTM5NyAyMTk1N2IzYjBhY2EwOTMzNDFjMDYyNjI1YjUzZTU0ZWI1Yzc3M2VjIHJlbGVhc2UyNy1tYWludAorODUzOTggNzViZWI2NzYyZTNiMDIzNjc5ZDIwZmI2ZGVlOWIzZDE4N2QzYzI0NCBweTNrCis4NTM5OSBjMDkwOGNlYmYxODQxMGZjNzBkOGNlM2Q5MmFlMTY0ZjQ4YTc0NTczIHJlbGVhc2UyNy1tYWludAorODU0MDAgZDBmNjBiZWIyOGYyM2YyMzA0NzliMmRhMjNmZTk4MjM1MjVhNTdlZCBweTNrCis4NTQwMSBlYWQ1MzY0YzRhNTlhNzMzYTRhZTBkZDI2YmE2YmYyNTIwNmI4NzM5IHB5M2sKKzg1NDAyIGYyOWNlMGNjMWQ0Y2U2YjZjZDBkZTIwYTMwNTlhMmMxMGI0N2E3MmIgcHkzaworODU0MDMgNzUyMDZkZjhlNThjNjAyODUwZDBlZjlmZDZjMWI2NjhiYTE0NmIxNyBweTNrCis4NTQwNCAyY2U2NDk2MGQ0OTBkYjZkZmE0NzNiZjNkNmQ1YzBkODVmZjcxNWE2IHB5M2sKKzg1NDA1IDIwZjQ2M2E0NTg0ZDdjNDJlMDM4NmE4ZjEwMDZhMzhlZTk5MDNmYWMgcmVsZWFzZTI3LW1haW50Cis4NTQwNiAyNDZkM2RmY2U3YjEwM2QwZDU3ZjI0ZDE5ZWUxMGU5MDU2YjdjOWZhIHJlbGVhc2UzMS1tYWludAorODU0MDcgMjNlYzBiZTA3ZTIwZWRkZjg5OWM0YzUxNDc3ZWM4MzY3NDViMGEzNyBweTNrCis4NTQwOCAxMjMyN2I5ZDMzMjUxOTgxYTU4MTMxYTYwMWU1MjU4OWFiMDZlZjBhIHB5M2sKKzg1NDA5IGNiNmU5YjAzZDBjMzIwYzg2YjNlZDZmZDkxN2YzYjExZWZjZmE1MDUgcHkzaworODU0MTAgYTE1Njc4OTM3ODNmMjMyZGUwYTM2OGJmNjVmOWI3ZWZiMjE2NjIzNyBweTNrCis4NTQxMSBiZjVjZmU5YTBiYjVlNTFlODI5NTEzYjY0NTc0MTBkNDUxZTE0NjZlIHB5M2sKKzg1NDEyIGQwMmQ2YmIwMjUzODUyNTM5NmZiMjcwMGNhMzE2ODJjYTk5YWVhNzUgcHkzaworODU0MTMgZTUxN2MzZjU2MDkxODRiMWEzN2VkZjQ4NDE1OTBmYjQ1OGY1YTkyMiBweTNrCis4NTQxNCA1ZWY3NmJjMTcxYWQ2ZDdkODg0YmJlNGE3YWVmNWM0OTcwMzFhYWExIHB5M2sKKzg1NDE1IDM3MjEzNDM4ZTIxZmFmZmZlNzFjZjcwZWFiN2Q3MjFlNjk0NWQ5MGQgcHkzaworODU0MTYgNDBlY2I0ZDAwZjI1YWI5YjE0NmViZTkyZTAyMTUyOWRhODY2MjBjOSBwZXAtMzgyCis4NTQxNyBjNDhjMDllNjkzZTZjOTE4ZTQ4ZDIxOTFkZWNjNWMwYTA5MDY5MTM3IHB5M2sKKzg1NDE4IGZhOTA1NzAwNzc1NTUxZjQ3NTA2OTQ2NDU2OGM5ZmY1YTI3ZDAxN2UgcHkzaworODU0MTkgMGQxNmQ1MGM1N2EwZjIzNDJjZTI4NTdhYTAwODA4NWQwYWFiZTQ5YSBweTNrCis4NTQyMCAxODc1YmZlZDU2ODliOWQwMjkyOWI2OGRmYTlmYThiY2FmOTIxMTUxIHB5M2sKKzg1NDIxIDM2MTljMTIxNDAwN2QzZDVlM2QwN2QyMzU3ZjY3YjIyYWQyNDMyZjcgcmVsZWFzZTMxLW1haW50Cis4NTQyMiBlZWFlZGNiZTI4MWQ1ODQ0ZmIzNWEzZDAzNGEzMDMwY2U0ZjhlZjIyIHB5M2sKKzg1NDIzIDY4OTlhOWNhNWYzNTM1ZGIzNDkyYWJkYTAxZjZjNDhmMTU4M2RlNzQgcHkzaworODU0MjQgOGIxOTI1MDJhNGE5YWQ3ODgzOTA2OTZjZGEzN2MyNmYxM2M2Yjc4OCByZWxlYXNlMzEtbWFpbnQKKzg1NDI1IDYxMGMyNWI1Y2ZhMjg5YmY3NTQ2NzhiNmQzNDZmYzY1MDkzZjliMjYgcmVsZWFzZTI3LW1haW50Cis4NTQyNiBhMWVkZGM2NGI3NTA0OWM5Nzg4MTA1YTkzZTFlMzc0N2JhZTU5OTUwIHBlcC0wMzg0Cis4NTQyOSAxOTYwZjU4YWY3ODVkNGE3MGFkYmZjMDQxOTJlNzgyYjgxNmJmMTk1IHB5M2sKKzg1NDMwIGE3NWZkMzFkZGFiYmVlY2IwMzhhZWM2YmY0YjRiNWM3MWJkNzZjOWIgcHkzaworODU0MzEgMDBkMTNiMmY4MWEzYzMxYTEyMzg4NWZmZjBiYmI3ODQ2YmNhNjViMSByZWxlYXNlMzEtbWFpbnQKKzg1NDMyIDYxYzM1NDcyYTRmODFhNDIyNzc3MWMxZjgwZGI3MGE4M2UxNWFjNjYgcHkzaworODU0MzMgNjQ3NGFkZGQyODM4Yjc2OTc3ZmRiODViZmM2MjM3MDBjYjM0N2IzZSByZWxlYXNlMjctbWFpbnQKKzg1NDM0IGYyZjdiNzBmYzVlYmU0ZjkwYWE0MzUwODRiOTFmYzk0ZTFkN2M2MzEgcmVsZWFzZTI3LW1haW50Cis4NTQzNSAzMzM1ZWRjZTQ4YTM1NDY0OWIyYThhOGJjOGRjY2JiYWE3MjA1MTU1IHB5M2sKKzg1NDM2IGE0YTZkODIzZmY4OTUxNjYyMmYxNTIzZTRkMTk2YTk5OTBiY2RkMmQgcHkzaworODU0MzcgNDc1NTc0NDcyNGYyMGJhZDQ3Nzk2YjVjZDc2N2ZhMDY3NjllYjE2MCByZWxlYXNlMzEtbWFpbnQKKzg1NDM4IDFmMjI1ZDY2OTQxYTkyMzAyNjUyMjFjODAyMDM2ZWE4NDFjMmI3YjUgcmVsZWFzZTMxLW1haW50Cis4NTQzOSBlNzZmNTU0MTU4YTg1YmVhM2FmNTFkOWQ4Zjc3NmU3ODQ5Njg5YmRmIHJlbGVhc2UyNy1tYWludAorODU0NDAgZTllYTA5Nzg3YTM1Y2Y5M2NmNTM1Zjk2NjQ5ZGZhYzEyNmIwZWZkNCBweTNrCis4NTQ0MSA0YzU3MDZiYzJmNDMwNTFmYzY4YmY2NDJlMDE3YTFkNGJmNmQwZWUxIHB5M2sKKzg1NDQyIDQ5ZGY3Nzg4ODllNmZhY2NlMzk2ZTBkMWJjY2NlNjcyOWE1OWExMzggcHkzaworODU0NDMgYTQ2NzExZGU5MjkxMjA3MmJkMTg3OGNhY2Q3MWJmZGFhYTE1NWQwNiBweTNrCis4NTQ0NCA3OGExMmI4MjlhOWFhOWU3N2M0YmFmOWMzNDIwMTZhMjVkNjE2YmQ2IHB5M2sKKzg1NDQ1IDFlNzJhYmYwNzNjNTZmNWUzMTAzMTIwMmViZDgzZTM2Yzg0NjAzMzggcmVsZWFzZTMxLW1haW50Cis4NTQ0NiBlYmUxNGNjYmExYjdiNTFhODRiMThiOWEwNjk0MjdjNWY4Y2MyZmJhIHJlbGVhc2UyNy1tYWludAorODU0NDcgNmZkNDlkMDUyMTM0NWRhZDFmYzgyZTk2MzU3YmFjNWNhNzY1M2U0NSByZWxlYXNlMjctbWFpbnQKKzg1NDQ4IGZhMjdkZDEyOThmZTU3NzY1MDg3MmRjZDE2NGY2ZWFhMTQwMmQ0Y2MgcmVsZWFzZTI3LW1haW50Cis4NTQ0OSAyZjNlMGVlY2M3NjI3N2JmNTNjMTc3MGE0NjI3ODllZTBkNTZmZDljIHJlbGVhc2UyNy1tYWludAorODU0NTAgY2NjNDI0Yzk2NjQyNmJkMTUyMjIwMmYyMDk0ZjI5MmZlYjBhNDk0ZSBweTNrCis4NTQ1MSBiNWNlMDZiYmIwNmZlMjEzMDMxMDcyOTI0NWUzNWRjOTYyMTlmMGQxIHB5M2sKKzg1NDUyIGVhMmZlOTU4MWMyZDhmMGEyMDM3ZmExYWIwZjg0OTMyMTIyZmU2ZTUgcHkzaworODU0NTMgMzBiM2Q3YzUyNTNkNTg4ZWI1MDcwNjkwNWVlOTE5MjI5NGVkMjc2NiBweTNrCis4NTQ1NCAzNjExZWE0MmI3OTJkYzEzYzU1NDhjOTY4YjVkMzc4ZmUyOTkzNTlkIHB5M2sKKzg1NDU1IGJhNjU4MWVjYjZmMWVlN2E0ODMyMzU0Yjc4ODliMGQyZjk0MmQ4NmMgcHkzaworODU0NTYgZmQwNDRjZGE5N2Q4MzcwZmNlMzNhMTM5MDhlYmMwNjBiODBmOTE1OCBweTNrCis4NTQ1NyA2YWIwZjkyMTk2NjBiODgyZWZkNGRmNjRjOTMxNjE1YzhmNTgxYmNiIHB5M2sKKzg1NDU4IGJlYWU3NmVkNWViZmUzZjhlM2MwNmJjODY2YWQwZTZjZGY5YjRiZWQgcHkzaworODU0NTkgN2Q3OTY4ODE1NmRiNWZkYmM5MDBkOGM3NzA3MmU2MTdiNDkxZTI0NyBweTNrCis4NTQ2MCBkYzIwMGNmMmY1NjU4YWMxMDVkZWY1MmQ2OTNhZTc3NTJkOTY1ZDkwIHB5M2sKKzg1NDYxIDJmMTc5YTNjYjIwNjYwYTMyY2NmODE1ZTdmNDRiMTVjYzUzMWRhM2UgcHkzaworODU0NjIgODJjZGU4YjczNzI4MjMxOTFjOTk4ZDQwMGM0N2ZiYTIzZWQ3ZjdkMSBweTNrCis4NTQ2MyA0YThlMGQ4OTc1NWI2NGMyZTkwMzUzMmViZmI2MTE5YjVlYzA1ZDZhIHB5M2sKKzg1NDY0IDY3YTIxODU3MGY0YTRlMTZiMDQ1YTM1ODM2ODFjMTA2MWEwZWVhM2QgcHkzaworODU0NjUgNjYwYWZkYWViMmQ2ZTYwNzIzZWFkY2I2NTc0ZmEwNWFhYWE4YmRmZiBweTNrCis4NTQ2NiAyODUzY2FkOWNiYzAyNDMwMGUwNTdiMDA0YWE1NmQ4NDg4NzBhZTE3IHB5M2sKKzg1NDY3IGUyYzk4YzYwZGQ2NGQwYTVkMjEwNGQ3M2ZjYjU4NmEyNDEwZTE3NDMgcHkzaworODU0NjggYjY1MjA2MTI5YjVjOTRjNjg2ZDE0NzVhOTMwOTEyODhkZGM1NDRiNyBweTNrCis4NTQ2OSA5OTVjMzNlMjI2M2IxYzkxMGFhYjQxYWY0ZjFhMWViYWY3Y2I4ODc5IHB5M2sKKzg1NDcwIGE1ZWVhZDE0MWNiNDYzNTZmNWViY2RkOWQyZTRjYjUxODg4M2E4OTMgcmVsZWFzZTI3LW1haW50Cis4NTQ3MSA2YTg0ODk1NTQwMTk4MmMyNmQ2ZmNkYWE5NTcyMjczNjY0YjNmYThiIHJlbGVhc2UyNy1tYWludAorODU0NzIgNzFlNzZkMDNmYzY3ZjI1MDc3NGFjYmZhZmZiZWRmNGM0NDRmNmFmNCBweTNrCis4NTQ3MyBkN2Y5MDczNTdkYTdlOTUwY2JjZGM0MTk4N2MwNThmMWI3Y2M2OWZiIHJlbGVhc2UzMS1tYWludAorODU0NzQgODEzYjUxYTZhNDE3OTk3ZDU1YzE4NTc5NGNmZjRjMWVhZmUyYTk0YyByZWxlYXNlMjctbWFpbnQKKzg1NDc1IDk4MmM4ZWM3M2FlMzdlMGVkNmQ1NDk3M2ViYTNmNzBiZjYzOWVjOGMgcHkzaworODU0NzYgM2Q5ZWYwOThkYWYyZTM2ZmNiYzZkMjJmN2E5NTZhYjY3M2IwMTMwZCBweTNrCis4NTQ3NyBhMjdmYzBmZjM2NzhiMDA5NjYzNDA3NjUwZjI5ZWE0ZjIxNzM0ZjAxIHB5M2sKKzg1NDc5IDA4YTljMDQ2MDA0ZGQxMWE5NGFmOWYxZWMzMTIyZmFkNDI4ZGI2ZmUgcmVsZWFzZTI3LW1haW50Cis4NTQ4MCAxMjQ0MmFjM2Y3ZGRiYmEzY2JlOTgwNGE5MzI4OTA1NGU5YmRlYzQ0IHB5M2sKKzg1NDgxIDE5MGYyNDdlZGI5ZWViY2YzMGRmZmIyYWZkMTQ5OTdlZWIwYmM3MWIgcHkzaworODU0ODIgYWQ0MGMwYTNlMjIxNTZhMWUzYzVjY2Y1MmQ4OGQ4YmViNTYwM2FkMiBweTNrCis4NTQ4MyBiODNmMGE2NjdlN2NlYjJlZWQxYzBkMzZkOGE0YjA3NGRhODM2Zjk1IHJlbGVhc2UzMS1tYWludAorODU0ODQgMDdiNmJiNzZlZTQzOTIzYzU1NmZkMDA5NzE1ZjBjM2E1NWQ1OWMzZiByZWxlYXNlMjctbWFpbnQKKzg1NDg1IDA3OGUyZTQ3ZTUyYjA2YWZlMTJkMTgxOTk5OWVlZmRhMjE2N2U2MzIgcHkzaworODU0ODYgYjg4NmJmNjAyNTEzYjRmN2U5N2UxNTcxNWZmNDAzZDVjYjg3YzdlNyBweTNrCis4NTQ4NyA5MGMyYjY1NDkwYzc1MzIzMTZhZDBkNzE1ZDNhNjczNjljNTNjMTQ0IHB5M2sKKzg1NDg4IDgwZDNhMzc0OTliMWIyYjIwOWE2ZWQ4NTc5ZjY3NmIwNTU0NzRlMzcgcmVsZWFzZTMxLW1haW50Cis4NTQ4OSAwNjdlOGIyMDAwZGQwNTc5MmVmMDQzYTYwNjc2ZTVmNWY1Y2UyM2IzIHB5M2sKKzg1NDkwIDNlNzkxMzRjNjUzNTdhNzYyZGEyNWZhZTEwNmU1MWVmM2FhNDAwZWIgcHkzaworODU0OTEgMWE2MDEzZWU5NzRiMDg3N2I5NGExMzNjNjBiZDMyOTJjNDc4Y2M3ZCByZWxlYXNlMzEtbWFpbnQKKzg1NDkyIDI1M2EyNjg3ODU4NTc0OGZiZThiZjY1ODEyNzBhZWM4NjQ3NjY4OGUgcHkzaworODU0OTMgYjdlY2Q5NDRiN2NlYjJhZDFjN2ZjYmUxMDgyYTJiYTdiMGJmYjI5OCByZWxlYXNlMzEtbWFpbnQKKzg1NDk0IGQ1MmQ1ZDM1OWRiMzEwMDEwZWY3NWQ1YWI1YTdmMjVkNWJlZTI4MjYgcmVsZWFzZTI3LW1haW50Cis4NTQ5NSAwNTJjMTk5YWUxOWE5YjA5YjgzMjQ5ZDYyYTE3NTI5NDZhMGJiYWY2IHB5M2sKKzg1NDk2IGYzZGE4Y2Q3NDExMzc4YjZkMDlkNTA2ODg1MDdiMTljODUzMGQyZTAgcmVsZWFzZTI3LW1haW50Cis4NTQ5NyA0Njk1NmEyNWMyNjQxYmZlN2JjOGM1YWMzZWM1NmIxODg5OTg4NzA2IHB5M2sKKzg1NDk4IDYyOTY2MzJhZDJjYmU2NWY3MDMxYmJlMWNlNmZmMWMyMzMyMmJhZmMgcmVsZWFzZTMxLW1haW50Cis4NTQ5OSA0MjY5MjY3ZTZlNTdkYTI0MzI1ZGQ3NmIzNjIwMzQxYWFmYjI5ODQ4IHJlbGVhc2UyNy1tYWludAorODU1MDAgNmNmMjIzZWNhYTZmMGRjNTMyN2M1YzE5MjZlMzE1Zjg3MTYwNDE3MiBweTNrCis4NTUwMSBjZWIxMjcwM2M2ZGJhMzMwMjYxNWVjMGVlMTZkNjc3NjYyNThiOTg0IHJlbGVhc2UyNy1tYWludAorODU1MDIgMjdjMDUxMjQ3MjMzYTZlMjRiMzZiMTc2M2U1MWI2MTRjZGFiZmUyNSBweTNrCis4NTUwMyA0ZDVmMGM0NDg3ZWI5ZmZiMzY1ZTkzMzJkNzVhNGRlZDMzYmJjNTk2IHB5M2sKKzg1NTA0IDE3ODJkYTQ0MGZiMWU0NDZmNzc4ZGQ3ZTQzMjVhYjVjODY2OTk5YTcgcmVsZWFzZTMxLW1haW50Cis4NTUwNSBmZWE4ZjIxYjE5OWQ3NGQ3YjQwOGRhOTVlN2Q1MzVhOTBmMDZiMjU3IHJlbGVhc2UyNy1tYWludAorODU1MDkgN2QxZTQ1M2IxMjBiNmU2MmI5YTUwNjFhYWY2MjRiY2NhODc5MGZjYSByZWxlYXNlMjctbWFpbnQKKzg1NTEwIDg5YThiZjUzMjVjZDE1ZmVhOWUzMGVlOGZhOTM3OGU4M2Y2NzRkZTUgcHkzaworODU1MTEgNWUxNTc2MDUwNzQ5YmViYTE4YjFjMjljYTM4NDdlNTg0OWUyZDhmZSByZWxlYXNlMzEtbWFpbnQKKzg1NTEyIDE3ODA2ODRhZTNhZDk3YzBmYmU2Y2EzYWFjNzFmMDc5MTZiMDU0MTAgcHkzaworODU1MTMgYzNmMmM1ZDM1YWZhZmNkODlmNzgwZWRmMTBkODNhOTkwMjVhNDQzNyByZWxlYXNlMzEtbWFpbnQKKzg1NTE0IGU1MTIzNzJmNzQ5NDZkNmY4YTNiNjA1ODY4MGJmMzI1MTFhNmVhNjggcHkzaworODU1MTUgY2MxZDhhMmRiMzQ4NmU0MTI4MzdhMDliOTVkMmM5MDRhNDQwMGJhNiBweTNrCis4NTUxNiBmNjNkNzQ3NjIyYmQ1MTczNDdmMWVhZmUwMTJhMTJhYjllZjJhNTcwIHB5M2sKKzg1NTE3IDQ1M2ZkODE4MmMyZjk2ZTllMGUxN2MzZjMzY2RmNzJkNTAyZWEyYmYgcHkzaworODU1MTggYmIzMDM5M2QxZWExODlhZDNjYjY3Yjk1NGU3ZjczNzgwMjM4OWY3MyBweTNrCis4NTUxOSAxNTc3NTFjYzRjZDUxODgzNzAwZTk5MzZmMjI5N2M5Y2Q2YjUyZGVmIHB5M2sKKzg1NTIwIGU3NzNhMWYyM2Q0MzM5M2U3YmJmN2EzMmY3NGI0MTUwNzliZjYwMzEgcHkzaworODU1MjEgOWM3M2ZlM2Y0N2UyNjkwNjA5OTNkMzVhNzdjM2M1MDRjOWI4NGQ5NiBweTNrCis4NTUyMiA2YTM2NWI5YTIyYmE5YzNiMDFkZTUwODdiMDZkMmEyYTU1YTExODNmIHB5M2sKKzg1NTIzIDUyMDI1YzM1NDFkODg4ZmQxOWIwNDc1ZDRiZTkyZDFhZGZkMGI1NTcgcHkzaworODU1MjQgMWY1YTI4YmE3NDc3ZDAyYTNiODE1MjAyOWEyOTkxYThjZTYwM2M5ZiBweTNrCis4NTUyNSA4OGJkZWY1MzYwYWYwM2FjZWZmZWI3Y2YxNzg1OWE5MGVjNzAzYTc5IHB5M2sKKzg1NTI2IDMyMGQwZmEyMTY1OGQxZGY3NDE4OTZiNDczNTIzNjA1YjE5NjE5OTQgcHkzaworODU1MjcgNGViYzAzMDhmNGIxMmVlM2Y4YjU4ZDliYzhhZWRkOWU2YzZhMzc0YyBweTNrCis4NTUyOCAwYjUwZDg3MDYxMzQ0NjM0YTcxMTMyOTJmZmUzOTEyMzBmYTc0YjExIHB5M2sKKzg1NTI5IDgwZmUwNjZjMTM1YTkwNDc2ODFiNWU0NzFjMzU0NTNmMWI4ZTU4NzMgcmVsZWFzZTI3LW1haW50Cis4NTUzMCA0MTg2OGNhNTI3NDRjOGVkMmYzYTdlMGQ0NTRmNzQ2MDcyYmVhMTQxIHB5M2sKKzg1NTMxIDU2MzNhZjU5MDA1NzAyYjk1MzEwMDU2ZDFhNWU0ZmE0YmZlNjE4N2YgcHkzaworODU1MzIgOGY2YWJhMjNmYjJhYmM3NWJlOWViMmMwY2NlOTRiZjEyZGRkNThiYyBweTNrCis4NTUzMyAxMDQzNThiNWQ0ZDE0NDZkYmMwNWFiZTBlZmJjOGNkYjIzZTE1NDA4IHB5M2sKKzg1NTM0IGRjMjVjNTBhN2MxMTYwNjg4NDkxMmQwMmI1MDExMzZiZDA4MDA1ZGQgcHkzaworODU1MzUgNmI4MzE0Mzc2ZGUyZWViNGU0NTZlZTA3NDVmODVlMmYxNjEwNWZmZCBweTNrCis4NTUzNiA5MmVhNTZiNTJkOGY3MzE0YmM1N2FhOTdjMTg1MmE4MThmZDMwMjk4IHB5M2sKKzg1NTM3IDk3MTI1ODZmYTQyZjVmOWZlYTBlMzcxMDU1N2U4MWM4YjgzOGQ3YmUgcHkzaworODU1MzggYWM4NjgwNjg1ZmRlYWEzZTc3ZjgwODVkZjU0Njc1ODUzZWU2NjhjNiBweTNrCis4NTUzOSBkODM4NGZjZTNjNzNiOWRhYWY0NmE3YmNkNTE1MGYxOGUwZjk2ZWQxIHB5M2sKKzg1NTQwIDc4ZDUzODU5Mzk1YTQ0NjJlNzNmNmVjNjczNWM1NjMxMzUyYjUxZDggcHkzaworODU1NDEgZjMzYmI4NTA3ODllYTg1MmVkMzg2NjQ1NTQ2YThkZDI1OTg0OTM0NSBweTNrCis4NTU0MiA3ZGUzNjVjMTk4NmJhYmFiNmRjOThlZTdiMTc3ZjM0ZTI2NDRkMTdiIHB5M2sKKzg1NTQzIDZmNGNmNzMwMzJmYzliOGZjODQ2YjJhYTJiNDE2YTI3MTYyZTMyZDYgcHkzaworODU1NDQgOTM0N2IwYTg1Y2FmNTg2YWMwZWQxNmVkMzhjMzVmNTlhMWExODgwZSByZWxlYXNlMjctbWFpbnQKKzg1NTQ1IGVlYzQ5OTg0N2RmN2JiOWQ4Mzg0YmJhZGI4NDJhM2QxODg2NjMzN2EgcmVsZWFzZTI3LW1haW50Cis4NTU0NiBiNzFhYWY0ZTdkOGQ5MDFiYWZmMDZjY2QxNTU1OTFhZGNhYjNmNTJkIHB5M2sKKzg1NTQ3IDBlMmNiYzMxZmM5MjVlMjk2MjJlODRmYmZmMzQyNGM4MDZiYTAwYTkgcHkzaworODU1NDggMzk0YzAwYjRjOTE5NGNmZDcyNmVhMzJiMzEyODIxZjg3NDZmOTMwZiBweTNrCis4NTU0OSA4NDRlZDZkZGRjMDMxZWZlOTY0ZTM1ZGNiYjhkNTI5YzIwZmZhNGZlIHB5M2sKKzg1NTUwIDM0OGYzMzY5NjQwMjE1NTAxNDk5YzdmMmVhODA1OWFmOTFmOTcwYzIgcHkzaworODU1NTIgOTAwNTI4ODljZTNkZTMzYzFhZTBhMDliNGQwNGZiM2MxMmJjZTg2YSBweTNrCis4NTU1MyAyOTJiMWRmMDFiYWQ4N2M3YzNkNzE3NWY2YTY3ODMxZjc0ODE5YmNhIHB5M2sKKzg1NTU0IDNjNDIyNWJmODdiNDEyNjYzNDU2ODgzYWI4ZDVlM2Q1ZjZlNzhmZjQgcHkzaworODU1NTUgMmIxN2JlNjJjNzRmY2M4MDM1MjMxNDE3NjAwZGFmNzRmOTIzN2Y1YyBweTNrCis4NTU1NiBkNDM5MGI2YmY3ZWM4ZTE2ZjJlNDEwZTM5NTU3MTJmMDYxZDU3MzIyIHJlbGVhc2UyNy1tYWludAorODU1NTcgZGRmMmVhZDI2YWFhNDVlYTY5ZTA4ZjExZjEzMWYxOTNlNWNkNzNjOCByZWxlYXNlMzEtbWFpbnQKKzg1NTU4IDRkNmM2M2M2NTU1MGMyMzY5OTQ4MjY4MmM0NzQ2YWI2N2NiZWNkYWIgcmVsZWFzZTI3LW1haW50Cis4NTU1OSA5MzJmOTdiZmJkYzBjNTA0OWZlYWZjODIxYThhYjE0NmQxNDE3ZDEyIHB5M2sKKzg1NTYwIGZjZGMyZmFlNTBjMDgxYWM5YjcwM2RjYWM5NTdmOWZiMDMzNGQwZWQgcHkzaworODU1NjEgZjk4YzNlMmZkMDU1MDMzMTI0NTJlMTBhOGI1Yzc3NjA1MWMzYjM4MSBweTNrCis4NTU2MiBmZDVjODNmNzY0NDc1MGJkMjRhYWZmMGNjMmJlODg3NmIzMTc5M2ViIHB5M2sKKzg1NTYzIDM2MThkOWQ3OTAyZDNjYjQ0OGIyNTE3YjBmZDQ4MGQ0MDhhYjE1ZmYgcmVsZWFzZTMxLW1haW50Cis4NTU2NCAwYmQwZTg3YTY4NTE1NDIyNDZkYTVhN2UzZmU1OWY3MzVkMjkyNjU4IHJlbGVhc2UyNy1tYWludAorODU1NjUgZjkxODRlN2NkMjVjZTEzMDc1MjA0ZGE3OGRmNDNiODE3MmY3NmZjOCBweTNrCis4NTU2NiBkZDA4NjdiZDk1NTc5MGQ4Yzg2MzU5NjcxNGQzZDRmMmM5NTgyMzA1IHB5M2sKKzg1NTY3IDA5ZWZmZmU3MDAzMDcwMThlZmUxYjE2N2UwZWY2ZDNmZjRjNjdlMGQgcHkzaworODU1NjggNzZjODg4ZmQyMzgwZGYyNmI4MDMyNmYxZjY2NWI5ODkyOTViMTEzZiBweTNrCis4NTU2OSA1NWVkNWM1MjQ0MjhjYTIyODY0ZGI2NGQ4YjA1ZjY1NDY4YjVkYjVkIHB5M2sKKzg1NTcwIDllZDY4ZGQ2YjcxZmY3MjMzOWI3YmE5N2NhNWQyNDc0NzVlM2VlOWMgcHkzaworODU1NzEgNjAzOTg0NTA5MzQzMDJjMTA2ZWI5MzQyOTlhOGI0NjVjMTI1YjU0MCBweTNrCis4NTU3MiA2ODZhMmE5MWY4MjYwODBlZThlNWMzMmI5YmY3ZjA5NTVmMjc2ZWFkIHB5M2sKKzg1NTczIDNmMmUxNDVjNGEwMmU2NjIwZmNjODU1MDZjZDYyZmRmMjU0MzVhZDMgcHkzaworODU1NzQgNTE4MWMzYmY4OTcwZTE3YmUxM2QyMTM0NDZhMTBiYjYzYzhlNDZkYSByZWxlYXNlMjctbWFpbnQKKzg1NTc1IGE0NDJlY2I3MDg0MWYyZGQ3YzU1YTA5NTQ3NTljNmM2NGZhNWY2MzYgcmVsZWFzZTI3LW1haW50Cis4NTU3NiAwYmE1MGQ0ODVmMDcyNjhhMzQ3ZTUwNWE2ZmFkN2NkM2QyYTViZjhlIHB5M2sKKzg1NTc3IGI0YmRkNDI4ZWIyYjFmMjM5YTMyNDQyM2I0MTdhYjU0ZDNhNjAyNWYgcHkzaworODU1NzggYjc0OWRjNGMzNzRjMTY3ZWJhMTI4YzlhOTYyNTI1ZGIxYjI2ZmRlNSBweTNrCis4NTU3OSBlMWRjOTg2MWI0M2YzOWMxMTIyN2Q2YjNkMDExMWU1MjY4ZjIzODQ4IHB5M2sKKzg1NTgwIDZkY2JhOTNkNjI2MjAyYWMwNTllMGRhMDFlMTgxYmVmMzJiNjVkMTQgcHkzaworODU1ODEgZGYwZTM0OGU3MTc2MmU5YTU4NDVjZGJmODBmYmQ2YTljNDk1YjM0NiBweTNrCis4NTU4MiAzNzk0YzliNTA4MjRmZDdiNWY4Mzg0NmVmODc5OWMwNjIxZWJjMjY2IHB5M2sKKzg1NTgzIGJhODZmMzRmMDhkYTZiY2ExYTg4YWM5NmU3Zjg1YmYzODJjMjdiMDggcHkzaworODU1ODQgOTMwNmZmMWMzZDQ2ZjdkMTdiZjFiMGM2MzE3ZDBiMDM1MjJkOTRiYiBweTNrCis4NTU4NSAzNDAzNTlkODBjYTA1NmEyMGNmNTI0NTkxN2MwZjAyOTEyMWZmNjQ5IHB5M2sKKzg1NTg2IDQ0M2FiMmNiYWJjYmNhZGFkZjg5OTBhOWVhN2U2YzgwYTBmYWU4OGMgcHkzaworODU1ODcgMDI4MzA1NTNkYmQxOTkyOTc3NzkzMmE2MDA0MGVlODc3NjgyZjcyOSBweTNrCis4NTU4OCBmZDUxMzVjYmQ5MjhkZjMzMGUzOTdlMjY4OGU3OTk1Yzg1OGI1M2RiIHB5M2sKKzg1NTg5IDYwODdiMWY2Y2E5Yjc0ZWI4MmNjYjUwNmYzODAyZjU2OWRiZWUyYzkgcHkzaworODU1OTAgNmIyNjY4ODczZjMwZDI5MWMwOTY2M2ZlMWZhMzY2M2Q1MGNlMTEzNSBweTNrCis4NTU5MSA0MzU3NWIwOTY5ZWQwNjNjMDlmNzQ0ZGE4MWMwYzM2MmNjODg4OTIyIHB5M2sKKzg1NTkyIDZlY2U2Mjk0NDViNjBiMzUxNWI2MmE3ZjRiMzhkMmEyMDcwOTI0MzggcmVsZWFzZTI3LW1haW50Cis4NTU5MyAxYmY3NjdmMjhkYjRkZjYyMzRlMjIwMGJjYzhlNzc2YmIwN2RjZGFkIHJlbGVhc2UzMS1tYWludAorODU1OTQgMDUwNWViYTYyMzQ3MmZjZWZiZmMxYjYzOTFjZDcxZDM2MTQ5ZGU4OSBweTNrCis4NTU5NSBjOTljZjkxMDI0NzZjNDljNTUwNWQzZjk3ZTRiNzEzYjhlZmRjZmE4IHB5M2sKKzg1NTk2IGVhYmM1YzUzZjEzNGVhY2NjNTFiNzA1MTQ5YzljMWVkM2FkMzMwYTkgcHkzaworODU1OTcgMjg4MGU3MmE0NjRiZDFjMWE4ODUxZWY1OWU4MmQwMzBmY2M5OTBmNCBweTNrCis4NTU5OCA2ZTU1OTc5M2U0NTBjZWUzNTY1MzI2NjgwODVhYjAzYmVjYjI4YmYwIHB5M2sKKzg1NTk5IDE1ODU5NzQwYWFlNmMyZDcwMmM1Yzc5YzRlOWIxYTg4MGFkOWRmNmYgcmVsZWFzZTMxLW1haW50Cis4NTYwMCA3MDI1Mjc4YzVhNDFhOGI2Yzg1OTM0MWZkNDczMWMwYTRhMjE2OGEwIHJlbGVhc2UyNy1tYWludAorODU2MDEgZjYyMTZjNWYwNjgwM2FlNWJkOWU1Zjk2MzczY2RmZmFjZTFmYzMyZSByZWxlYXNlMjctbWFpbnQKKzg1NjAyIDE1ZTNhZDBjYTM2NDhiOWY5NzBjZmVmZWQ2ZGJjZTgyZjYxMDdjNWQgcmVsZWFzZTI3LW1haW50Cis4NTYwMyBjYWExN2EwMzMxNzZiMjllODY2NGU2MWYxMDUyNTcwZTNhN2ZlMjM5IHJlbGVhc2UyNy1tYWludAorODU2MDQgMDg4NDAyNDY5MDE2YmE1MWY5YjViYWUwYTgzOGE5NzQ2NzA4ZjA3NCBweTNrCis4NTYwNSA5MzFmMjM5MDgyOTY2ZmZjYzlkZjY5M2M0NGRjMGQzY2M2MTVjODI4IHJlbGVhc2UyNy1tYWludAorODU2MDYgODczM2M2OTAzZmNjYTI2ZGZmYmYwOWFhY2Q0MjYxNjIzODU5Y2M5OCBweTNrCis4NTYwNyBiZTYwYzk2MGFjMDlhNDBlMDQyNTEwMDA5N2YzNGMyZmJiMTMxYTEwIHB5M2sKKzg1NjA4IDJlODUwNDcxMTlkMjFiYWZmOTE0NzhjNWQ2OTA2YjAyYWYxZGU5OTIgcHkzaworODU2MDkgNWIyYWYzNWI4YjRiNjA2YTJjMGIwYjVhNzMwYWQzMDE0ZWQ0NjU1OSBweTNrCis4NTYxMCBkMjUzNDZjMGI5ZDA4ZDYyYmFjM2JmYjYwYzIyN2U0M2JmYTI3NTUzIHB5M2sKKzg1NjExIDNiNWVkODQ5MGFiMmMyYTMyYTA2Y2M1MDA5YWU5ZWI3ZjA5ODQyODcgcHkzaworODU2MTIgNjk3NDFkNGI4YTYwMDM5ZDA1ZGE0YjMwOTlkMGViMTJjNzkxM2YwNSBweTNrCis4NTYxMyA5NmQ3ZTc4NzRmOGM0NjI2NTFlOTMxYzEzNGYxMTJkNzY5OThjOGNjIHB5M2sKKzg1NjE0IDk2NmVjMzFiODM0MmM3NjIwODgzYjI4NzU1NDQ4NTU1YTcyNmE4MTggcHkzaworODU2MTUgNWRhODM3ZmNmNjc1OTNhZWE1NDcyNDc4OTI4ZDQyNGM4ZjMyYmY0MCBweTNrCis4NTYxNiA0NzNiOTIxZTNhMWYzYjZkMTVlZjc5NjY2ODI2MjY0NmE0YWI0YjhjIHB5M2sKKzg1NjE3IDdkZGY2MGM4ODk2YWEwNDE4OTk2MWNiYjM1MTI4OTA2NzdjZjEyZGIgcHkzaworODU2MTggYTRkZDM4MzkxMmQ4OThkYmRiYTY1ODc5YWI4M2E3ZTQwZjRhZDliYyBweTNrCis4NTYxOSBhOTA0N2NlMWU4MWRhYzI3MGMyY2Q5ZWNlMDc4ZjAzMGFhODFlNzA5IHB5M2sKKzg1NjIwIDE5Y2E3MGI0NjNjNTk5MmNiYWY3ZWJiN2FlNTMyNWE4ZWFjMDA3NTYgcHkzaworODU2MjEgYWEyZTQ2MzdmNmNlOTcxNjQyYTQ3ODFlYzkxYTQxZWMzOWI5Y2Q4ZCBweTNrCis4NTYyMiA1NzM3YWQ3MWU5ZTE5ZTk0NmUyYzUwYjZiNjMwNWUzNDY1OTU2NTBmIHB5M2sKKzg1NjIzIDg3ZGNlYmU3OGQ2N2NhMmIyNzgxYjY4YjNlNzU5MjkzZTExYzUxODYgcmVsZWFzZTI1LW1haW50Cis4NTYyNCAwOTk5ZTNhNDQ3MzViZTYxZTVlYzE2YTAxYmEyZDk3NTEyOTY4NDA2IHB5M2sKKzg1NjI1IGQ2OTk3MDhkYzJjMTkwNGJjOTMwZWNjNTgxOGY4ODM0ZWI3MTRiNjkgcmVsZWFzZTI1LW1haW50Cis4NTYyNiA1YTJkMzQ0OWI1NzVlM2ExMDU3YTFkYmJkYjAwZTU1MTkwZDE3MDU0IHB5M2sKKzg1NjI3IDA2NjA4Y2MyNWZiMjA0Y2FlNDc2MGU1ZTMzODAzZDAwODUxMmExMGMgcHkzaworODU2MjggY2U0ZDgxMDI1N2I0NGQ4YjVhZDZlYWU5MjhjOWI1MTVkMDViMjliMCByZWxlYXNlMjUtbWFpbnQKKzg1NjI5IGNhOTY5MDkyZjQ1YTZjZGI4OTIxMTNiYTJkMzkxYTZkMGJkZjZmYWEgcHkzaworODU2MzAgMzExZDdhYmJmYmUzMDBhMWNiY2E0YmYyMDNiYTY5NWJmOGZhY2UxOSBweTNrCis4NTYzMSBiYjIxMzU5ZTg4Yjk0NjRlMjY4MWQ5NzhmOTllODNjMjgzYWNjOGRkIHB5M2sKKzg1NjMyIDMxNzUwYzcyN2FlMzA1MGMwMDFjODAyMjczNWU2ZTZmMTU5NzFlZTAgcmVsZWFzZTI3LW1haW50Cis4NTYzMyBiY2IyNjBkNjhiMTU4YWFlZDMwYmJhNTI3MjFkYTRjNTE1ZGZiZGVkIHB5M2sKKzg1NjM0IDg3ZTViNTkzOGM2NWYwY2FjNDMwOGM1ODhlMjEyZDY1YWE3M2ZlODQgcmVsZWFzZTMxLW1haW50Cis4NTYzNSA0MjJhNGZiMGE0OTEyNDRkNTQzNDA5MGI3YTYwMjE0ZTRkMDZlZGFlIHB5M2sKKzg1NjM2IDA3M2UxYmU3NmI0NzQzNTg5NGU2ZmRkODdhOWZlYTBlYWIxNGYwOWQgcHkzaworODU2MzcgOWIyMjUwZmI4MGQ4YjViYjRiOTAxMDUyZWVjMjRhOGQyMTc4NDAyYiByZWxlYXNlMjctbWFpbnQKKzg1NjM4IDllNDVmYzgwNTI4OGE3N2M4NGEyNTIzYjk0YjdhNWVhZTdmZDM0YTYgcHkzaworODU2MzkgNjg0NDAyNzI1NGZhZTZiMWJmOTZhZTI3ZGJhZDM2YmQzNGIxY2RmMCBweTNrCis4NTY0MCAxODZhZjA1MWQwNGYyMTBiMWM3ZTA2ZTg5M2Q0ZThkY2ViZTc2ZjUwIHJlbGVhc2UyNy1tYWludAorODU2NDEgOTk0Yjg3OTlmMjhkNjhhNWU0YjkwYzJhODI4NDg3MTJhOTc3NWFiYyBweTNrCis4NTY0MiAyMWRkNzE5MzhhNDQ3MmQyNDZlNTgzODUwNjUwYjc2YmMzOTBiMDI1IHB5M2sKKzg1NjQzIDc0ZDgxYTNhMGQ1NjVhMTg3ODU5ZGQ2YTljMzAwY2U1N2NmYmFjOTYgcHkzaworODU2NDQgMDVkN2IxOTkxZmY3MmU3NGYxNTI2YThhMWVjNzU1Mzc2NzM2MzM1NCByZWxlYXNlMzEtbWFpbnQKKzg1NjQ1IGI0MmY5NDk2NDhiYWM1N2ZkYzAwMTE5YjNiNzU5N2E3NTFlNzk0MTQgcHkzaworODU2NDYgNjMzZGU1N2ZiNzNhZTExNjMyMjQwOTc3NDBkMWE0MjEyNGYwZmY5MSBweTNrCis4NTY0NyAzYzlhZmE5MmY4ZmRjNjUzMmIxMTg2Nzk4MDAyYzAwNDk3MmIxNzA1IHJlbGVhc2UyNy1tYWludAorODU2NDggNjIzZGVhZTc3MzI0MzY3ZDUxNmFhNGUxZjJkNDJkNTI4NjI5ZDA3MiByZWxlYXNlMzEtbWFpbnQKKzg1NjQ5IDM5YTJjM2IxMGE3YjFmZWZhZmY0ZjdiMjYzM2Q0MGI3MTBiZjk3M2IgcHkzaworODU2NTAgOWFjM2ZlMmNhNDllYjVlZmFiODQzYmM4NTVkMTBmZDM1OWFkZTY5MyByZWxlYXNlMjctbWFpbnQKKzg1NjUxIGVmZDM2OTk4MWI4ZGQ1NjFjYjZhYmM3Y2EyNTNlZjlmYzZlOWE3MzUgcmVsZWFzZTMxLW1haW50Cis4NTY1MiAzOGFkNTdkYjg4YWM0YmUyZjUyYzcwNzUxYWE0YjMxMDhiZTU3MTY4IHB5M2sKKzg1NjUzIDI0NGNiY2I2N2RjZDg3ZTExYjYzNjM0NzBiMmI4N2ZiNmY1MWFjZjggcHkzaworODU2NTQgMzljZGNjN2QzZTIwZDU0NGVhYThhNWM0YWEzZDY5MDY4NjhlOGY3YiBweTNrCis4NTY1NSAwMjNiNDEzNzYyOTBhMTIxYzc3YTI0YjcwMTQ3MGNhZTcwYTFiMjNmIHB5M2sKKzg1NjU2IDNhNDdmYmNiMjliMTIwNTA4N2M5ZTNjYTliMDI1NTZhN2RkZTdlNjYgcHkzaworODU2NTcgN2FmNDA2ZjIxOWE0ZTYxYjQ5OGFkYzcxZjVhYTI3ZmNmY2I5YWUzMSBweTNrCis4NTY1OCBkNThjZTNmZmIxY2I2OTdmMWVlZGI0YTUzZWEzYjExMjc2YmQ4ZWUxIHJlbGVhc2UyNy1tYWludAorODU2NTkgYjAyMjhhZjZkYjExODBhMTcxYzdkZTEyMDU3YWQ5MzY2MDUzYWRjMiBweTNrCis4NTY2MCA5NWUzYWVlYmI1YWJjZDgxZTQ4MTc1YjRmZjBkMjI5OTVkZTE1ZTI2IHB5M2sKKzg1NjYxIGQxZGVmN2IyYWJkMmY1OWI0MzI1NGJhMzI0MDk3NDYyZjFkYjIwZmIgcHkzaworODU2NjIgYjJhOWNhMmI2MWEyNDFiMGVkOGZkNzgwODgxMTMwMDhlMzQyNzRhMCBweTNrCis4NTY2MyBjMTQ3ZjkxMGFmNzAwODZmZDYzZGVhZTBlM2Y2MjBiOTE2M2I0MGQ4IHB5M2sKKzg1NjY0IGU4OTY5ZmI4MjJmYzJhMjc5YWUzNGJlNzNmOGUxZTE1YzQ1M2EzZDAgcHkzaworODU2NjUgZjhmYzJkMDNkN2U0MmExMmU5MmVjMjc0ODYzNDc1MDkyZWFkOGU3ZCBweTNrCis4NTY2NiBlNzU4MDY1MmFmYjhlNmNlNmEzOTVhZGZlZmZjNTE1NjM0NzJiY2VjIHJlbGVhc2UzMS1tYWludAorODU2NjcgYTMxNjU4MTI5MDA4MDc0MGY3YjYzMjBjZDU3MzM0MzgxYjI2NzZiOSByZWxlYXNlMjctbWFpbnQKKzg1NjY4IGIxY2E3ZDVhOWM3NGQ3MGNhYzE0NGQ0MjlkNzEyZjc4Yjc3MzE1NGQgcHkzaworODU2NjkgYjFiZGExZWM5OTVmYTEwMzZkZTA5ZmFhMzNjMzU1MGIyZjQzNmY0NyBweTNrCis4NTY3MCBlMGNjYjVmNTBlMGM3OTA2MzdlZTMxMTUyNzcwNTA0MzgwMDM3MWJiIHB5M2sKKzg1NjcxIDE2ZWFkODNmNzljYzk5Y2UxNDE3YjNmMDQ4M2E4YTFlYjRlZGUxZjUgcHkzaworODU2NzIgOTZhNjk3NjJiNDgxNjE2NzgxNjA3MzhmNDM5MGI0MDIyYjQzZmJhNCByZWxlYXNlMzEtbWFpbnQKKzg1NjczIDdhYTE0Y2FjNmY0ZDAyNzM5ZWNkYjRiNWQzMDVkNjgxZDU5MzgxNjcgcmVsZWFzZTI3LW1haW50Cis4NTY3NCBlYjg4MzdlZmQ4NGM1YjFlZGFhZmNiZTkwNDVlNzQxNWZkOTc2ZjkyIHB5M2sKKzg1Njc1IDM1MWQ3OTRkMzJmNDQzMjljMTA3MzczZTFkYWVjODYyNTMwZWVkMjMgcHkzaworODU2NzYgYWEyMDNkNDc4YmI4MTBmNmRlMmI2MTAyZmU0MTU5YTQyMTE2MjBmYyByZWxlYXNlMzEtbWFpbnQKKzg1Njc3IGQzOTdiMDI2MzFiNTQ3ZDk0YzY3YjRiOTEzODRlOTVlNmQxMzBmMDkgcmVsZWFzZTI3LW1haW50Cis4NTY3OCBiZWExNGYwMGQzZTAxMDA3MjdmZjdjMGY4ODg1MWQ3NjNlMDY3Y2EzIHB5M2sKKzg1Njc5IGIwYThmY2RhMDY1NDdkNmQzNGUzMzQ3MjI4MjU5YzI1MTAzNGUyZmUgcHkzaworODU2ODAgY2U5ZjVjZTMzYWQyYTBmNWQwM2NkMDhhYWE3ODM1ODM2MWQyZjg0YiBweTNrCis4NTY4MSBhNGMxMGE0NGQ5YWUxMWJlYzljOTk5NDI2ZTg3NDQ2OTZlY2ExY2U1IHB5M2sKKzg1NjgyIDE3Yzk2YWFmOTNjODdkMTA3YTNhMzA1Nzk4NDlmOTQ5YjM0YWZiZTcgcHkzaworODU2ODMgNWIwNjk4OTJlNDEzYTllMTE1YWJhOTYwNDk0ODg5Y2ZkYmMyZDk0MyBweTNrCis4NTY4NCA4ZjA2MjU5NTRmZmEzY2RkNzExNjIzOWM1Y2M5OGEwNjZhZjM3MjY3IHB5M2sKKzg1Njg1IGNkZmQxOThhNmYxZGUzMTM2Njk5NWVjNmQ4NTBmYTY4OTA4ZGE2Y2IgcHkzaworODU2ODYgNzUyZTRiNWM2NGU5NWNhYzQxNjI2NDFkYzQzNzE2NDBhNTY1ZWJjMSBweTNrCis4NTY4NyBjNzI3NTcwMzNkNDRmODUzZDBmNjRiNTlhMjgwZjJiMDYwODU0ZTdhIHB5M2sKKzg1Njg4IDY4YmQ3NWM2OWRiMTUwZmZkY2NiMjAzN2Q0MmZkZjNmNDFkZDVkNDEgcHkzaworODU2ODkgM2MzMzYzNDhhMmU5ODZmZTQ3NzljMTUzZjc4NzRjNDU5ODcxMWYxOCBweTNrCis4NTY5MCAzNzJjOTgwN2Q3NWQ5NzE0ZTYwNjQzYjkwYWYwYTFhOGIwZDk2MTgzIHB5M2sKKzg1NjkxIDc3YzEzYzljNmU1OWUzOWU5NjhjNGI0ZWZmYjYzZjcxOGUzNTM1OGEgcHkzaworODU2OTIgNTE5NTlmMzlhN2ZiMTM2YTVlZjI5MzY4YmI3MzgzMTFiODY1ZmU3ZCBweTNrCis4NTY5MyBiMGJhN2VlYjk4YTU1ZTk0NDJiMWQwNTE5ZDgzYmFmZGZlYTBlZGZiIHJlbGVhc2UzMS1tYWludAorODU2OTQgMmY3ZTAxNjk0OTI2NzU4NjY1YjE2OWI0Yzg5ZDNmMWNiZmU1MzI4MiByZWxlYXNlMjctbWFpbnQKKzg1Njk1IDg2ZjAwNjEyY2JkNjBlOWUxNjU0MGU4MjRiYmRkNjQ1MWYxNzM0MTQgcHkzaworODU2OTYgZWNmZjQxZTA2OGU2ZmU5MWUzMGQxYmE0ODhkZmZkYmJiMWQ0MmMyMiBweTNrCis4NTY5NyA4MmIwODNjOTZhMzlmYmY3MTMwOWNhODNiNzJjM2UyZjI4MmU1YzM3IHB5M2sKKzg1Njk4IDI0NmMwOGM4MjVhMTA1ODhkODA2YWNlYjEyZDhjMTQyYzhhOTI1MTYgcHkzaworODU2OTkgNTAzNjAwYmIyNWVhYTg5OGZlMjZiOGY3NjM4YWJiZDZmMmUyYjdlYyBweTNrCis4NTcwMCAzZmFmZjdlNTFmNDBkZWVkMGQ0NmZiOWYyZTEyZWQxMmRmYWI1MzU4IHB5M2sKKzg1NzAxIDE1ZTQxNTUyZGNiZDdjYzAzMjE2NjZjNDIyZTkxMzcwMmQ3MzQ2OWYgcHkzaworODU3MDIgYmIzMzM5NzNkZTM4YmMzMzkwODI2ZDA1ZjFiNzFiOWMzZjJlYzQ4ZiBweTNrCis4NTcwMyAyN2NlOTlmYzI1MjcwMTQ3NWU5Zjk5MDgxYTRiZjgwYmFjZjc0ZWEyIHBlcC0zODIKKzg1NzA0IDFhOTA1MzkxZTNlZDZlZDQyOGI3YjZiNTM5NzY2NjE5NWZjM2I2MmEgcHkzaworODU3MDUgODkxMjE5Mjk4MmNjODM3ODE5MzI5YTNmZjg1MTA5OGNkMmE0MDFjYSBweTNrCis4NTcwNiA2NjI4Zjg2ZGIyYjZiNzg5MDJhY2JiNTI2NjkwNTUxZjU1OWZkMmRiIHBlcC0zODIKKzg1NzA3IDFlYzJiZmE1NGNhYmI5YmI2MzQ3OGI1YmI2MTljOWZlZTMzM2ZiNzkgcGVwLTM4MgorODU3MDggMDI2MzViYWVhZDVmNWFiNWE3MzE2Y2FhNmUwYWIxNDMyNmQ1MjRmNiBwZXAtMzgyCis4NTcwOSBlMmJhMTI0OWEyZjU2MzY2MDIyYjk2ODc5MWE4ZmE1NTNjNmM4NWMyIHB5M2sKKzg1NzEwIGQ2MDdiNjMxMzA1ZGMwYTcwMjA4ZGE4MjQ1YWQwZmQ1Y2FhMTE5MmUgcGVwLTM4MgorODU3MTEgNGQ1NWYwYjA5MGQ1ODBkODJmNWJkNTc4YzA2OGZkMmIxOWY3MzFhOSBwZXAtMzgyCis4NTcxMiAxMzAzY2VhZjQ0MWE5YzkzZjgyZTNkNDQyMDBlZTI5MjcxMjYyMTU5IHBlcC0zODIKKzg1NzEzIGI0N2U0ZWUxNTQwMzJjZThiNDRjOGFhZTIwODVlYjRhMDg5MTgwYTkgcGVwLTM4MgorODU3MTQgNzBkMmI0YWVkYzA5ZWE0N2YwMTRlYTIyMWZlMTZmM2I2ODU5Y2I5ZSBwZXAtMzgyCis4NTcxNSA1OWU5YjU4ZGRhZjg0OGQzYWUwZDA4NjFkYTE0NjNhODc2YWVhNmFkIHBlcC0zODIKKzg1NzE2IDQyYjg0ZDMxODhkMTBlZmIyMjZiNWI4MmViMmYzMTAwNzhhZmI5ZmYgcmVsZWFzZTMxLW1haW50Cis4NTcxNyA0ZjBkZGRhZjgyZDZhNzQ3N2U0NGM1NmM0MzFlNzVkNTAzMTMyOTcxIHJlbGVhc2UyNy1tYWludAorODU3MTggNzcxN2Y4YzQ1ZmNjMzdmZjcwNTIzMWFiMjZhNDg4MGYyMzEzYWJiZiBwZXAtMzgyCis4NTcxOSA2ZThkMmUyZDhkODI4ZjczOTg5ZDc1M2Q2ZTVhYjJjMjdjY2VmZGI4IHBlcC0zODIKKzg1NzIwIGUzZTZhYTYzM2YzM2I0ZTk2N2Y3MDNmZDU3YmY1ZjIxMDRjYzIwMjIgcHkzaworODU3MjEgNzA3MmE1YjI4MWQzN2U1Yzk3MmE3YWU4MTcyMjVhZDc4YTRhY2FmMiBwZXAtMzgyCis4NTcyMiBiNTAyNTU2OWNiZDQwNmNiYWU5NGI5MzdjNjlhZWQ5ZTRiZmVjMGEyIHJlbGVhc2UyNy1tYWludAorODU3MjMgOGU2MGQ3YTk2MTQyMjcyZmYxNzFiZTdjMDZjZWJlZTZiMWM2YWRiYSByZWxlYXNlMzEtbWFpbnQKKzg1NzI0IGFkODkyMzc2MGQ1YzBkYTc0MjM4NTk5NDc4NjY3MDUzMjg0ODgxMjkgcHkzaworODU3MjUgMDUxMWM4NjhhNGUzOGE0YzQwYmE1Zjk1ODNiNTNmNTU2NTJlZGM5MiBweTNrCis4NTcyNiBiNmFkNDAxMzc3ZmM1OWJjYTkxOTBjYzE1M2ExN2EzZTIxZmZhMjdkIHJlbGVhc2UzMS1tYWludAorODU3MjcgMWYwYWI3MjljNjMyNTM1YjRlMjA3MzA4ZGM5MzAxMTcxYTdmODJiMiByZWxlYXNlMjctbWFpbnQKKzg1NzI4IDA0MDkwYWIzNTMxZTQzMjNlMTQzODk5ZGY0ZWZmNGJiZTVhZGU4ZjAgcHkzaworODU3MjkgYzQ3ZWYxODBiZTM5ZDZjNGVlMWE0ZTkzY2I0YmE4YjYwODcwMWM4NyBweTNrCis4NTczMCBlMTFhYzMwMTk5YjEwYWMzNTc5YmU2NjNmODE1NGMzNGJlMzI4M2JjIHB5M2sKKzg1NzMxIDM0YmVhYjk1OTU5NTlhZGVlZDQ3ODM3NmFjYzljMTMzYjVlMjQ3NmQgcHkzaworODU3MzIgMDM2NzcwZGQ5MDk2N2NhMmQ5NDZmNThkNDQxZjY1NWEyZThkNTM1YyBweTNrCis4NTczMyA5NjJlMWY0YzljMDAzYjQ4MjcyN2JkNDU0NDQwM2ZjMDAzYmRiYTc5IHB5M2sKKzg1NzM0IDA4NjUxOWMxZTdkMjlhODI0NzY3OWNlNmRjZmVlNGU5YmY0MzMyYmEgcHkzaworODU3MzUgZDNiNjFkYzczMmVmZjI1NzFmMTQzYWUzM2RjMzNkYWYxOWQwNDc0MyBweTNrCis4NTczNiBhNjYxYjQyNGVkNDdhOWJmNDMzN2QzMDljZWZlMDU0Y2VmNzg0NmJkIHJlbGVhc2UyNy1tYWludAorODU3MzYgYThlZmYzOWFlYjA5OTVhOGMzMmJkMGRiOTYwZWRjMGYxMTBlNTMzZSBweTNrCis4NTczNyBjZjYzNGEzOTdiZWM4MWE0MmE4M2Q3NmY1ZDVlOGUwNmRiMjdkMjEyIGlzc3VlNDM4OAorODU3MzggZDRkNTNiNGRiOTZlZDM4ODlhZTVkNjk2NjM1MDk4OGNmOGE1Njg1OCBpc3N1ZTQzODgKKzg1NzM5IDUyY2JmNDU5ZGE4YmNmYWFmYmM3ZGJhNmY2Y2RmYzEyZWVkZGQzNDcgaXNzdWU0Mzg4Cis4NTc0MCBlZGNmYzRjODlmMzA0MDE1NTI3N2Q0MjBhMWI4ZjIwNDkzNTQ2NTAwIGlzc3VlNDM4OAorODU3NDEgNTlhYWMwNzQ1ZWM3NWI4YzViMmE5MjI5NGZkNmU5Mzk4MWRhODg0NiBweTNrLXN0YXQtb24td2luZG93cworODU3NDIgM2JhZWNkNGUwYzEyYTEzY2E2MWZlZWYwZTE1NjNjODA5YjU3OTQyZCBweTNrCis4NTc0MyA2ZGNmNjE0NDdjMzNmNjgxZjE0NjZhMzc2MjBlNDMwOTA2OTA1NjU5IHJlbGVhc2UyNy1tYWludAorODU3NDQgMTYxOGNiMTViNWI5ODQ0MDBkOGFlOGEyOTIwNGYyYmU2NGEyM2U3MyBweTNrCis4NTc0NSBlODUwYmI5MzBjODQyZjFiNWM1ZDNlNmVjZWI1MTU5OWE5YjY3OTQ1IHJlbGVhc2UyNy1tYWludAorODU3NDYgNWNmMWU2ZTYxYzZjMzc1YWVhOGZhMmM5MGJhODVhMGMwZWQ2MTFjNSByZWxlYXNlMzEtbWFpbnQKKzg1NzQ3IDUwZGQ4NmY2ZjI0YWQ0Yjg3OGQ3YjgyOWEwMzliM2E1M2EwYTMzMGMgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg1NzQ4IDMwMTZhNmE0YTY4MGI4NGEzYzBlNGQyMDYyMDExZDcyNTQwOWE0YmMgaXNzdWU0Mzg4Cis4NTc0OSA2NDNhMDdjYzlkN2ZiODkzOTgxZTc0YjRhZDk4ODcyZmI0MGM5MDc0IGlzc3VlNDM4OAorODU3NTAgZTUzYzgwYjAxNjMzMzI4N2VmMzE2ZjFjM2JjZDYxYmM4NGJiNjdiMiBpc3N1ZTQzODgKKzg1NzUxIGQ3Y2UzN2I5YmNlZDIwMzZmMWU3MDZhOTdjNjg2MjM1YTBmMzk2NTMgaXNzdWU0Mzg4Cis4NTc1MiAyZjFhNTUwNjc5MzExNTE3NWRlN2Q0NGZiZmY3NTA3ZDdmMjg0MTczIGlzc3VlNDM4OAorODU3NTMgZjhmYzI0YTFmOWE2YzJkYmI2NjVhNTNhMWU2NGE3NDVjNWJkZTZiMCBpc3N1ZTQzODgKKzg1NzU0IGVjZmMwZGQxNWQ1N2YwZDlhOGFmNzYyMThjYjkwOGRlMzU5ODJhYTQgaXNzdWU0Mzg4Cis4NTc1NSBlNzExYjg1ODYxN2JlNzJjYzY2NDE5OTI5ZjlhYmYyNTU4ODdjODkyIHB5M2sKKzg1NzU2IDk4NTg5ZDBmMTEwMTJhYzYzZjhhOWRlOWFmN2E0NzM0OGM2NGExZjYgcHkzaworODU3NTcgYzVmOTdiMDU0MTU4NTgyNWM2NmRjMGE0M2I4ZmNlNDQ2ZDMyZWNlMCBweTNrCis4NTc1OCA4MGMwNDY5Zjk4NTk3ZjgxZTZjMzg2MWU4ODViNmUxMmEwNGVjMDdjIHJlbGVhc2UyNy1tYWludAorODU3NTkgOGU2YjdhYjFlMWExNDA3ZDZmMDljY2ZlODFmODM4OWFiMmU0NjEzZCByZWxlYXNlMzEtbWFpbnQKKzg1NzYwIGNiZTAyMjQ3MDE0NzFjNDcyOWY0NzE2MjFiNTFlYzIyNDQzNGQzZDggaXNzdWU0Mzg4Cis4NTc2MSAzOTM2NmJhNWYxYzEwNzRiN2QzYWQxOTM1NDJiNjM1OTRhNTRiODQxIHB5M2sKKzg1NzYyIGJlYzE2YTVlMGNkYWMxZWYzOGVlNjY0NGNiODk3MWExOTUzY2NhNWIgcHkzaworODU3NjMgYWJkYTgyNDBhNjQwNWRiZTlhOWUzOTc4OThjNDk2NmVmMWIyM2QzNyBweTNrCis4NTc2NCBhZWNiNTZjM2Y0ZWI1ZTcyZjNjZWE5Mzc2OTNmOTk5ODQ4ZTlkOTRmIGlzc3VlNDM4OAorODU3NjUgNDUwNzlhZDFlMjYwMDlhY2MwZjU3MjQ0MGNhYzIyYWIwYTc3NDk1MCBweTNrCis4NTc2NiAzODE2ZWIxMjg2YzBjZTU5NThiZWE5NWNiYjY4OTEyMmJmNjM0MGNhIHB5M2sKKzg1NzY3IDJlMTlkMWY0YjYxMmVjODkzZGYwZjg2ZTY4MGZhNDliODgxYmViODMgcHkzaworODU3NjggNzE3YWFjZmQyZGNkNjgzNmNhOThmZTdmZGQ0Y2JkOTgwNWIyZTZkNSBweTNrCis4NTc2OSBlOGQ1YWQwYzJmNWJjYjFlMDRjYjgzZDY3NTZlMzA3Yzc4NDZjZTI0IHB5M2sKKzg1NzcwIGEyYmI1MGZmZGZmM2Q0ZjlmNDEyN2EyMzQzNzRmY2FmN2RjMDViNGMgcHkzaworODU3NzEgMmY5NGQ2OGMyNzMxMjc3N2E4MzRkNmI3M2RjN2MyOWI3MzEzYTA2ZCBweTNrCis4NTc3MiAwYjViZmJhN2E5MDdlNmI5YTAxMDBhZTM0ZjVjZDNmODRmZDY2NGNlIHB5M2sKKzg1NzczIGNhYTU2Y2ZmMmZiM2E3OGVhYzJiMzRmZDc4M2M3ZGQxN2RjZGU0YjcgcHkzaworODU3NzQgMDgwMTQ1ZDNiYmY3NjgxYTYxNTc4NTk3ZmQ5ZDhkOWM1MDMyYTc4NyBweTNrCis4NTc3NSBlNDUzZTVhYjIwN2NhNDIzYzMyNTdiYjk0YWIwODFiY2U2NzdmMzkwIHB5M2sKKzg1Nzc2IDI0NDA5MDQzODYyM2UxMWYxMmM0Mzc0ZWU3ODBkNzY2ODI1Yjc2ZmQgcmVsZWFzZTI3LW1haW50Cis4NTc3NyBlNzljNTc2N2JkMDVkMDZmMzkzY2ZiNjEwYTQ4NjZhNDViYzIyMjgxIHB5M2sKKzg1Nzc4IDAyYzE2MjZmZjYwZmUyYTBlOWM1NjU1OTgyYzA0YmNhOTZhZTM4ZTAgcHkzaworODU3NzkgMjcyYjhmZjYwYmE0YzA4NDNlMDc4MWM2YmVjOWI0MTNjMzZkZjViNCByZWxlYXNlMzEtbWFpbnQKKzg1NzgwIDg3ODdmNGJiNGIyMTYwNTE5ODlhYzU1ZGI0YTczNjdiMmQ4NDYyY2QgcmVsZWFzZTI3LW1haW50Cis4NTc4MiBiZDFiMzFjMzc0MTBiYzAzYWM4NTExMWM1ZDEwZjUyNzgwODZmYjQwIGlzc3VlNTYzOQorODU3ODMgNmU0ZWVhNzU0M2JjMzY4OTRkNTFhOGIzM2JjNmVlYjI0NGM5NmRlNiBpc3N1ZTU2MzkKKzg1Nzg0IDdiNTQ2Mjk1MWFjOWI1MTFlNzljYTEyYTJlN2Y5YmFkNWI5NmQ5N2UgcmVsZWFzZTI3LW1haW50Cis4NTc4NSBmOTg0NDY5ZGUwYmI2ZDNkY2QxYjZmNTNmYzZmNWU0M2QyNGIyMGI2IHB5M2sKKzg1Nzg2IDg1MjU1NDQ5NjhmM2E1OTY0ZmJlMmYwNThlZGY3ZDliYzU4NDFkNjYgcHkzaworODU3ODcgMTJlYjI0NDYzNjEwOTQxN2M5NDY2MzQxYmI2ZjI2Y2M2MmYyNzE4ZCBweTNrCis4NTc4OCBjNmEwZWI3ZjczYmZjZmQ3MTZmOGFiMjlhY2I2OWVhMjA1ZTY1Zjc4IHB5M2sKKzg1Nzg5IDQ2YmJiZGNkNzc3ZjU1YjZiYzI1ZTA2MWIyNTdkNTJhZTM3MmI1OWIgcHkzaworODU3OTAgZmUzNTU3ZGJlZjg5MjUyMzUyNzQwMTVkYWFkYjcyODI4ZGIyZWJmZiByZWxlYXNlMjctbWFpbnQKKzg1NzkxIDMxYTBhYjdhYzJkNWI1NTI3Y2JhNWFkYjlhYjJhZTM0MzI4NjIwNzQgcmVsZWFzZTI3LW1haW50Cis4NTc5MiBlYTBmODNjZjdlOTk1OTYzMjI2NzIwMTc0MDg0MzI5YzY2Y2NlNmVhIHB5M2sKKzg1NzkzIDg0NmMwZTEzNDJkMGJhMWFlZDUxYWMwMTg3MjNlMTE2YTI2OTQ0NmUgcHkzaworODU3OTQgMTQzOGQ2YjY3MDUyNjUwZjgyNjE1MGRkNWI3MmFlMjBjNmFiYWE4YyBweTNrCis4NTc5NSAwNmRmYWViNThiZGUwMWMzNjhmM2QxNWVmNTE5NDhjY2FmZDAyNDgwIHJlbGVhc2UzMS1tYWludAorODU3OTYgODU4YWY2MGIyZGJiY2Q5YmNjNGM2ZmYwMDU1MTA5NzQ3ZGNjMjliOCBweTNrCis4NTc5NyBkOTg1YmE5ODExZTk4ZWE1ODBjMTNhZjc1ZjVhNzhlZDk0NzYxODQ1IHB5M2sKKzg1Nzk4IDk5MTJkNjFjZGYzNGMyYjA5MjAwYzQwYjI5NWFlYzVhNzJiZjhkYzMgcHkzaworODU3OTkgY2Q4MGQwNWYyZmQ2N2RiNjE2MDA4YWM2N2YwOGMxYjZlZDBlYmQzZiBweTNrCis4NTgwMCA1YjZlMTNiNmI0NzNiNWZkYzJmZjUwZDU5OTBjMmZmYzU1YmI4M2FkIHB5M2sKKzg1ODAxIDM4MzViY2JmYjI5YzBjNmIzMTAyNjViMGI0ZDEyNDgyYWNjMDIwYmYgcHkzaworODU4MDIgOTAyZjU3N2U3Zjk0OTU5YjA1NzM5MTc2NmMwZTE0YTNhMTZiODg4ZiByZWxlYXNlMzEtbWFpbnQKKzg1ODAzIGJlOGFlNmIxNzUzOWQyOTk1YzA2Y2E2OTBmY2YxZjJlNTAyNTAwZDUgcHkzaworODU4MDQgOGQ3ZjE4MzMyZGI3ZGQ0MTk0ZGI3MWYxYjNmMTE0Yzk1NzViNjE2MCBweTNrCis4NTgwNSAxYTA4ZjRhOWVhZmRjNDNlYWYzZGFiNjNlZWFjY2JjYmVkYTUzZDIzIHB5M2sKKzg1ODA2IGEzMGU3NTgyMGI4ZGVlZjcxMDFiMjFjZTdlZDc2YzNhNzhkNTJjOTMgcHkzaworODU4MDcgNzkyMDA1ZGUyNzdjODZhOGE0ODE5ZWU0Y2ZlZDAyY2ZjZmE3MzFiZSBweTNrCis4NTgwOCBlOTk2YzYxZTQ3YzdiMzkzOTU2MTVlOWI4NjljZDIzNzg1MmNmMWFmIHB5M2sKKzg1ODA5IDA5ODE3N2FjZjczZjIwODYwODFiYjE3YWEyMzEzMzE5YjM4MjQxNWUgcHkzaworODU4MTAgYjlkY2ZkZmZjYjYyMGM1MjcyNGExZGRiZWQwZTliZjUwNWRhZDAzNSBweTNrCis4NTgxMSBlYmY2NzQxYThkNmUzNzlkYzcxMGY5YTkwODdkYzIyNGQ0NzJkNWVjIHB5M2sKKzg1ODEyIGE5NGZiOGRiOWYxYTUwZjYxYjBjYWY1NGE3Nzc0MDlkZTg2NjY4ZmIgcmVsZWFzZTI3LW1haW50Cis4NTgxMyBkYjVhYmQ4MWRjOTRlZDZhNjhkODA3ZDg5MmEyNTY5OTI5OTIwNzFiIHJlbGVhc2UzMS1tYWludAorODU4MTQgMTg5ODlhZDQ0NjM2YWQ3NWVmMTg1ODUwNmFlOTRlODhjYWRiMzVhNiBweTNrCis4NTgxNSA1MzYzOWU1N2JhNDA5MjNhZjM1YzQzM2IwZGEzNmYwY2UxNjI5ZDcwIHJlbGVhc2UzMS1tYWludAorODU4MTYgYTRhMjcyNDBmZTA5MzRiODA5YjczOGFiNzI5Y2FjZjE2OWVhZGNlMyByZWxlYXNlMjctbWFpbnQKKzg1ODE3IGYxNDhmODY0YjE2OGIwODdlODkyNzM4MDZkMjc3ZWUxZDg1OGNhNTggcHkzaworODU4MTggYjE3MmQ3NTM3Yjk5YjU0MDRjOTY4OTY4ZWIzYzEzZWI5OGQ4Njg3MSBweTNrCis4NTgxOSA1YjUzNmM5MGNhMzZkZWZiMzBmNjc4NThiZmFmN2RjYzRiNDNmNDUzIHJlbGVhc2UyNy1tYWludAorODU4MjAgYTgyMDcyY2EwNmJhYTA1MWQzYzAwMWIxOWEwZGRkNTllNjdmZDhhZCBweTNrCis4NTgyMSBjNWFlYmZmYzlmYWM0NjVmYTgyMDVjODczNjYyOTMwMDNlMGJlZDVlIHJlbGVhc2UzMS1tYWludAorODU4MjIgY2NmMmZmMDg4NjZiOWJlNmMyYWQ1YzY5MDIwYjEyYTRlMDE1MjFhMyBweTNrCis4NTgyMyBiNGUzNzBjOGU3Y2FmNDMyMTI1MWE4ZTgyYzcwODY5ZGYwNDUzMTQ0IHB5M2sKKzg1ODI0IDM5YjllOWRlMzcyYjIwMTAzMGY1NWVmYmIwZTY1MWUxMmUxMWU3NmQgcHkzaworODU4MjUgNWEwNTQ1NGU1NjVmYTc4ZjM1MDc2MzhjYjNkYTFmZWFjYmQ1NDRmMCBweTNrCis4NTgyNiAxOTA4YTE0NmU5NjFkYzM5ZjgwYjBkOTQ4ZGY5NWYzOTI2MGY0MDdkIHB5M2sKKzg1ODI3IGRiNWE1MDgwZjliOGEwZWUxZWI2ZDRkZDlhNjgyYTkzODAzZDRjOTIgcHkzaworODU4MjggY2I2NDE4ZjRkNjBiOWNmNjQ5YjAzNDQ2MDQ4ZWVmMzQ1N2FiODU5MCBweTNrCis4NTgyOSA0ZTM2MDY1MjgzY2YyYzZmNzZkNzVjZjEzNmFjMzI2Nzc5ODY0NmVhIHB5M2sKKzg1ODMwIDE1OTUzMGYwZTQwNmE4NjRlMjQ0NTk3ODExNmRlMWEwMDVkNTg2NDYgcHkzaworODU4MzEgNjYwZDVmMzI0ODJlZjQ4OTQzYTA2ZWM4NzhhMGE3NDYzYmRkZWM4MSBwZXAtMDM4NAorODU4MzIgZjU3MGRhOWE0M2Y4NmUwY2IxYmI3NmMwNzgyMmU3ODQ5NjRiNWFiNCByZWxlYXNlMjctbWFpbnQKKzg1ODMzIDQ0ZDgxOTIyYTg4ZjM1ZGJiZWMyNWQ4NmMyZWY2NTNlNzY1NDFkOGMgcHkzaworODU4MzQgNWMxY2U1YzM2MGRhMjFmZGUzZjBiMGVkYjM3ZjQwY2NlMTY3YTI5MSBweTNrCis4NTgzNSAzYTljM2VjNWU5ZDJjZmZiMGNmYmE2NDU4NzVkZWFhMDlkZGNiNzdiIHB5M2sKKzg1ODM2IDIzNTJlNWU0NDA1M2U5NWJiNjg2YmZiNzY4OTE4YzJlMTYwZDAwNGMgcHkzaworODU4MzcgMGYwN2QyZGJmODIwYjg5NDkyNTBjNGU5MGExYTQxYjYxZGYyZmQ1OCBweTNrCis4NTgzOCA0ZTkyY2RlZmU0Yzc0MzdmZjkyYThmMTJlM2JjNjYzOTU5YmE2YThlIHB5M2sKKzg1ODM5IGQ3ZDMyM2RlMzVlNzZkMjgwOTI5MjZlZWU3MTk5YzUwMzc5YmZjNjcgcHkzaworODU4NDAgOWQzZWJhMDNmZDI1ZDFkN2VlYTRjODVmN2Q0NjAzMWRiMDc0MDg4OCBweTNrCis4NTg0MSBjZWViYjNmNDVmOWZjNjIzODlkMzhmYWFhZjJiYWQ0ZjM5MTIyOTQ1IHJlbGVhc2UyNy1tYWludAorODU4NDIgNzcyYjU1ZjAyODM1ZGU2NzY4Y2IzOGYxOGJjZWI2MGE3Yzg0MmRiNSByZWxlYXNlMzEtbWFpbnQKKzg1ODQzIGQzNTEwMGNjNmM2YjFiNDkwMzUzNTk1NjJiNWEzNmNkOWY5OGExYzAgcHkzaworODU4NDQgZTU1YTAwY2Y2NzhhN2U5NzFkY2IxY2YwMTNmYTAzYTdjNWE1ZjFhOCBweTNrCis4NTg0NSBiOWM3YmRjYWEwMzFkODkyMTY1NGM2MjhkZGU2Y2QzYzA3NWI4M2NjIHB5M2sKKzg1ODQ2IGU1MTVkMTI0MTg1ODZlNTEzM2RjNGI1OTdjNzA0MjBjNDc1NjlhNjQgcHkzaworODU4NDcgMzJjNGU4ZTk1Y2EzY2I1YmY4OGRkZGQzOTVkNGVlZjBkYWM2MmUzNyByZWxlYXNlMzEtbWFpbnQKKzg1ODQ4IDg0MTg5MmUyNzFmN2Y4NTE0MWJhYmJkMDY2OWIxMjNkODhmNjI1ZGMgcHkzaworODU4NDkgYTljNzlhOWQyZDkxZDA5ZmEyODRjZTRmNDliNzQ0YTFmMTI2M2I5MyBweTNrCis4NTg1MCA5ZGE1ZTA0YjA3OTNiOTkyNmYxMDFhOGQwMzEyMWZhNjg3YTA4ODI0IHB5M2sKKzg1ODUxIDExODcxNTZhMWYzMmMxMTZkN2JhNGE5ZGE1MjMxNGViMTNkZmIxZjYgcHkzaworODU4NTIgYzg5MmU0NTQ3ZmVkY2M5NjI2NWRmZjFhM2FiNmJkMWQ5NDNjOTgzNCBweTNrCis4NTg1MyAyOWFmMTgxZGUyZjJkODhmMzlhMzIxMzEzZGMxYjliODlkZjMyMDQ1IHB5M2sKKzg1ODU0IGJhMWM3M2UxNmM4YjFmOTNhOGFhNWY5NDMwYjVhMWUzMGUzZDE1N2QgcmVsZWFzZTI3LW1haW50Cis4NTg1NSBmZjZmYTIwYmRhZjhkZWNjYzVkODRhNjBiZjk0YzU1NjM2Yjg3ZWViIHB5M2sKKzg1ODU2IDllNGEyODA5ZTU1Y2UwZjA3NDQzZTYyODMzMzEwNjlhNWNlNDhhNWIgcHkzaworODU4NTcgNGI1NDIyMTdlOTNlZDAxN2Y1ZWViMTljMmVjYmY1N2E4YmEyN2ViNyBweTNrCis4NTg1OCBiZjVkYTYzNjA1M2FiOTkyNmRjN2FkYmE2NTBiN2E5NjlmMGNlNGYwIHB5M2sKKzg1ODU5IDY5MzhkN2FkNjBlNDFhZTUwOWNhYjRiOTU0MjNjMGFiNDhjZjQ1YzEgcmVsZWFzZTMxLW1haW50Cis4NTg2MCBkZjAyMDkzNTg4ZDZiYzJhMWVkODg4MGY1YjRlYjBhOTQ1YzA4NGE1IHJlbGVhc2UyNy1tYWludAorODU4NjEgNGRjYTNmMGUwZmMwNDY3ZDc3Y2JjZTliODYyOWU1NTgzZjZjMjZmZiBweTNrCis4NTg2MiBlOWUzZmU0YzllMzAwZTVhY2MyMTU3MzlkNGEwYmQ3OGRjNzMzM2IwIHJlbGVhc2UzMS1tYWludAorODU4NjMgZWJiODJmMDFkYmUyNjEwOWM0ZjRkYTFkYjBjMzVjMTljNDU4MTMyMiByZWxlYXNlMjctbWFpbnQKKzg1ODY0IDU5YWJkYjkyNzhmNzIwMzI0MzczY2EyZWIxZmY4MzA1MDRjYTE4Y2YgcHkzaworODU4NjUgMGQ1MGE5MTFkNzRmZTYyYWMwYzY5NWJhZTg1NGZlZWVmOWRkM2YxMiByZWxlYXNlMzEtbWFpbnQKKzg1ODY2IGFmMDZmMDk3MmQ5N2E3Njg3YzZhMWYyY2Y5ZjgwMjczNDk2M2IzOWIgcmVsZWFzZTI3LW1haW50Cis4NTg2NyAwNTFhYTQyN2RmZWRmZjU5ZDJkMjkwMjU1MDE1NGMyNzQyMzc2YTFkIHB5M2sKKzg1ODY4IDIxNGI5MDUxODQxZWE4OWU5N2Q5MTMzNDBjODYyYTUyMmMzZDRmN2EgcHkzaworODU4NjkgYWRkMWJjMDVlNDI2NmRiYjlkMDg0ZWQyZDY5MzhmMjhlMjU3ZWFhOCByZWxlYXNlMzEtbWFpbnQKKzg1ODcwIGY1ZTNkZTg3YjE0YmYwNDA3OTBiNTFiMDUyZDUzOGUwMWE0MWE4MDQgcmVsZWFzZTI3LW1haW50Cis4NTg3MSA2NGRlMTc0NmNkNmUzOTYzMjBhMmM4YzFlMTVlMWYzOTczNTY1MjI2IHJlbGVhc2UyNy1tYWludAorODU4NzIgM2U3OGVkZThmZDIxMjQ3YjdhYmViMDdkNGVhM2I3YTI5ZDRlNzg2NSByZWxlYXNlMjctbWFpbnQKKzg1ODczIGU0NDI1ZDY4ZGFkZjJjMzg2NDc1OTg0MGVmMGM3Mzc5Y2I4YTc3ZjMgcmVsZWFzZTMxLW1haW50Cis4NTg3NCBhMjgxOTg5YTIxOGIwYzFkNWU5ZmM1NWU3NDM1NTc5ZDdhY2Y1OGE4IHB5M2sKKzg1ODc1IDNmZjk5MDg5YzAyZTMwNDkxNmJiY2NkZGYzYTVhMmMwZDY1YTg5MDAgcHkzaworODU4NzYgNmRmZjU4MWQzMGYzODFmYzA4ZTM1ZDc0Y2RkODkwNzE3ODc1OTNlYyBweTNrCis4NTg3NyBlNWYyNjlkZDMxOGI4N2VhMTdlNjFlOWVlOTcyNTc0MDZiOWYxMmE0IHB5M2sKKzg1ODc4IDVhODgyZjc4OWVjMWU3ZDU4YWJmMWQwYzM4ZmQ0YTNhMGJlOTA5ZDEgcHkzaworODU4NzkgNWIxNjNmMmE2MDJiZWNhMzE4MjFiOGZlZGE2ZTczNzZmZjg1Zjc5YyBweTNrCis4NTg4MCA3YWQzNWFjYjIwYjBkNDk4YzIyMDM1N2VmMjBmODliMmZhNGFkMGMyIHB5M2sKKzg1ODgxIDIxMTBkMjY5YTg2ZWMwMGVkMzQ1YjNlMDBhZjUwYjg1ODM0YzNiNTMgcHkzaworODU4ODIgNzMxMjMzZjkwNDg2OWQ5ZjU5N2M1MzM1OGNiZjIwYTI3N2Q0ZGI0MSBpc3N1ZTEwMjA5Cis4NTg4MyBiOWNhMTAyYTc2ZDAzMzQzNDQ0OWZiNzdlMzQxMzQ4OGI5M2ZjYjY2IGlzc3VlMTAyMDkKKzg1ODg0IDY2YjQ0Y2NhMjliYjgzMzA1MDQyZTkzNWNkYzBlNDJlZDk5NDQwODUgaXNzdWUxMDIwOQorODU4ODYgZDA3YjliMGNhYWVmMWU0YTk0YThjYTYwY2U5MTg1MWZhMjE4ZDdlMiBpc3N1ZTEwMjA5Cis4NTg4NyAzZjdkMDM0Mjk0OTE4NmU1MTMyNmQ4MWM5NjY2YWI0Y2I4OWE5YThjIGlzc3VlMTAyMDkKKzg1ODg4IDZmMzFmMGFmNTM1NzY1MDBhNTUyMDhhY2I3M2VmYWNmYjAwM2RlYWUgcHkzaworODU4ODkgNWI4ZTY4OGVhNWFlZGQ5Y2Q1Yjk1MDZmZjA0ZWZlZDBhYzExNWNiYyBweTNrCis4NTg5MCAxNWVhY2I0YzU0MjI4MzIxZjM4OTYxM2IwZDcwMzFkNTkyYmRmZDZjIGlzc3VlMTAyMDkKKzg1ODkxIGRjMDZhZWQ5Yjk4NDVmMGNjNjk3ODRmMzQxODk5NjZmOTE0NDkzZmMgcHkzaworODU4OTIgNTM4M2FlOGRiM2NkZDFiNWUwMTk1NDVlOTI4ZjBlMTdmMjZmZmQwNSByZWxlYXNlMjctbWFpbnQKKzg1ODkzIDFjMTE0ZDM5YWU1MjYyYWM1M2RmYjg1M2JkNjQyOGI3MjcxYjliN2UgcHkzaworODU4OTQgNjk4ZDMwYjQ1MTE2Y2JjNDBkOTZlZGU1NmMxMTk1ZGIxZjBkMjZiNyBweTNrCis4NTg5NSA2MTNjN2I1OTZmZTc4MTJkZTg3YjQwMTdmZTVjMTdlYmNhZWFmMDY3IHB5M2sKKzg1ODk2IDFiN2EwMzg1YzY1ZjdhYjg4OTc3MzEzODJmMTU5MzBiZWU3ZDI2MjYgcHkzaworODU4OTcgNzBlYmRiZDc5YTAyZDA4M2NmYjhiYjYxMTgzOTgwYTM1YzJkYjk2YyBweTNrCis4NTg5OCBjNmQ4NjQzOWFhOTE4NDUxODU0MWY5ZTAxZGU5MDU2NGIzNmFkNjJjIHJlbGVhc2UzMS1tYWludAorODU4OTkgNDFhMzAxNDA5MjViZTEzNTI2ZTRiNDgwMDA1ZjQyNzZhMTJlZTMwMCBweTNrCis4NTkwMiBhNTZhMmE4MDNjZDc4ZWY5NDE3ZTlkMDA2ZTQ5YmM5M2RlMzc0NzFhIHB5M2sKKzg1OTAzIGI2NmRlZDRiZmYyMTM3Y2IyYzRhMWFmZTU2ZGQ5OGNhMWU1YWEzOWQgcHkzaworODU5MDQgNmFjMTg1NzZlOGZhOTk2ZWFiZmU4ZjBmZTFiN2MyNWViMTFkZWYwOCBweTNrCis4NTkwNSA2NGNlZThkMTFmMmU4YjhiNjVlNmVjYmQ3MzYwZjFmN2JhMmM3YTUyIHJlbGVhc2UyNy1tYWludAorODU5MDYgZThjODQwMGNhYTk5Y2E1N2Y5Y2JmMzYyMzliYjhjNjkwMmU4ZDk0OSByZWxlYXNlMzEtbWFpbnQKKzg1OTA3IDRhZjE0ZjlhYTk3MDU2NWIyMDQxMmM4MjU3M2U3ODMxYzYyNjk5YTkgcHkzaworODU5MDggNWU3MjBmOWQxZTZjMTlkN2ZjM2UzMzEwZDk1MmY1NjAwZTMwYTI1YiBweTNrCis4NTkwOSA4YzVhMTAxYTYzNTQ1ODM3MDM1ZWNiNWU1NTFiNTFhZWI2YzczYjJlIHB5M2sKKzg1OTEwIDhhOGYyYWE5ZGIwZjk5MGQ1YmE3MzNlZTI4ZWE1YzNlZjQ3ZDczYmUgcHkzaworODU5MTEgNzIyYjJhNGZhZTBkMTk2ZjYzYzYzMTBkN2UwYTBlNDVlZjBhOGJlYyBweTNrCis4NTkxMyA0ZDIzZGU0ZjQxMDIzYzc5M2NiNjY2OGRlOWFkYWRiODdlNGY5ODkzIHJlbGVhc2UyNy1tYWludAorODU5MTQgMDg2MGJlOWM4MzQzM2E2M2Y5OWM3ZjRiYWM2NjYyMGU0ZDE2Zjk2NiBweTNrCis4NTkxNSAxNmI5Mjk3MWMyZDQ0MGMyZWZkYWI1NzJlOGE5NmIyOTMzZmEyMjRjIHJlbGVhc2UyNy1tYWludAorODU5MTYgMDUwZjBmN2JlMTFlMjYyMjQ5OTAxMWMwYWU1ZjUwNmY4NmU3NzgzMSBweTNrCis4NTkxNyBmMzQ5ODg4ZmFlNjQzOWMwYmJjYmIyMjc2ZGY5YzQxZTJlMDZkZTgzIHJlbGVhc2UyNy1tYWludAorODU5MjAgY2ZmNzhmZmI5MzJhMjc2ZmNkMzBkYTM0ODMzMjdjMTg1MjkyMWVmMSBweTNrCis4NTkyMSAwYjVlNmY3ZWRmNmU2MmFmY2Y4ZmU4NDUxMmFmMmQ5YzM3YzFiMGFkIHB5M2sKKzg1OTIyIDhlNjMzOGNlMDg0NjY0YmVhYzdmNWUyZTZhMjg4MWIzNDRiYzMwMGUgcHkzaworODU5MjMgNGE3YTNlNTFjZDI5YTAyNjhhYzc1MWY5NDgxOWQzNTUyYWM2MDM0ZSBweTNrCis4NTkyNCBkMTQ3MjZmNGI0MTA3YjU2ZTE4OGI4YTgxZmE2NzJkMmViZjdjYjI3IHB5M2sKKzg1OTI1IGNmMWQyNzMyMWM3ODIxNzI4YTdkYzAyZmUxNzM5ODA0ZTMzYzhmOTUgcHkzaworODU5MjYgNDA0Mjc3NjBlMTYyOTRhYTk0NzQ0NjNhZTI1NzBkNTk0ZDQ4YjE0YyBweTNrCis4NTkyNyAzNzJkNmFmZjE1YmU4YzY0ZTZlMjg5MzI0MTgyZTg5OWE3MTdlZjE2IHB5M2sKKzg1OTI4IDhmYTEzMmEzYWZiNWJlOWZhNWY5MTM1M2Y2YjZlNzg0YTEwYmNiYWYgcmVsZWFzZTMxLW1haW50Cis4NTkyOSA1YzEzY2QwZjk5YjQ1ZTQ1OTZhOGI4ZDg3M2RhZTQwZjU1MTZjMDkwIHJlbGVhc2UyNy1tYWludAorODU5MzAgMTUzMmNhMjFiOTIwNTg2NzY0ZDVlZDEzY2FlOTg5OWM4YmJmYzVlMiBweTNrCis4NTkzMSA2MWE5YWU1MjJkY2NhNmI0OTYwMjQ5OWU4OGRjMTM4MmZjZGQxYmEyIHB5M2sKKzg1OTMyIGYzYTFlYWM2MzVmOThjN2NlZDc0YjYyMDEyZDkyZDBkOWUwMmUwNjYgcmVsZWFzZTMxLW1haW50Cis4NTkzMyBmOGQzNDQ4NDk1OTZlMTUxNmE0YmFiNDE4NGVmY2ZkZmNkYTRiY2E1IHJlbGVhc2UyNy1tYWludAorODU5MzQgYTRmZDNkYzc0Mjk5NzA3NjdhOTYxY2UwMjA3MWFmNjYxOTIwZDEyNiBweTNrCis4NTkzNSA4YjMyZTRmNmJkOTlkMmZiM2Q1YTQyZWM2MmJiZjQ2MDI5MjI4MDkyIHB5M2sKKzg1OTM2IGIxODI3NWIxMTdkMjEwYjQxMThkNTgzZTAxNTUwMjcwNDEwOTQwYzEgcHkzaworODU5MzcgYTA2MjZmOTcyN2UwZjJkMDhhMjk1MzM5NzcyNjVmYTIwOWQ4NzM4ZSBweTNrCis4NTkzOCA3NjVkNDIxZDk0M2M3MzUxNGYwZmE4MzRiN2U0OWQ4NjIyMTA3MWFiIHB5M2sKKzg1OTM5IDFkNTVjYzI4NGQ0YWI1YWZlMzc0YmRhZDNkOTIwMDlhOWE4MDI5ZTggcHkzaworODU5NDAgMmMyZWNlZDYzNWY2MGQwYTNiNzc5OTkwNGQ2ZDY4N2VhNjg2MzJjMiBweTNrCis4NTk0MSBlYjUwYzQ4ZDljYjQ5MDhhYTRjNTVkYWIzZmRjZGI1ZjNhMmVlNTgwIHJlbGVhc2UzMS1tYWludAorODU5NDIgM2RhMjNkZWI2ZTlhNTE5ZWI2Zjk4NTdkYWEyYWNlMzQ1MDYxMDdjMyBweTNrCis4NTk0MyBkMTYxNzE0ZTdjOTI4YzRlMzNhMzdmOGUwMjVlZjRlYThlNjc0YjdiIHB5M2sKKzg1OTQ0IDU1NmY1OTE2NjU0OTljMjQyMTE0OTY3YzA3ZmM4MzhhZDU3MzZhMmUgcHkzaworODU5NDUgYmVkZWQ0N2JiMTdmOGIwZTNlMDZkNzc3NDY0NzhlOTc2NDNkZmQ3YyBweTNrCis4NTk0NiA5MjZlOGI2YjZjOWQ2Zjc4M2FkZjNmMWY3YWU5MmU3YjgzM2E4ZmJjIHB5M2sKKzg1OTQ3IGU3MjdjZjM1NDcyMDEwODMzMmZkY2QwMmRjYmY5M2EzOGI4Nzk5M2QgcHkzaworODU5NDggNTM4NmYxZjQyOGExNWVhYjU4ZTdjYjM2MzYyYzY3YjQyODVmZDFjMCBweTNrCis4NTk0OSBmMjRhNTNlZGU5ZWQ4ZTg0Y2JjOTE0YWMzYWFlOTllOTQ0MWU3N2FmIHB5M2sKKzg1OTUwIDFjMDIwYmNkNTBjZDdlYjQ1MGRkYTY0MzI1ZjlhZWUxMWJiNzQwOTAgcHkzaworODU5NTEgNWMwMTNlYzI3MzI3ZGRhZjkxNjkzZTk2OThiYjlhN2NhYzVkYzIxMSBweTNrCis4NTk1MiBlMzhkMmQxNzMwODVmZjI4NWVjNDY5YWU2NTBiZWZjY2IzMzU3Y2RhIHB5M2sKKzg1OTUzIDQwYWM0NWEwOTJiNzdkNGExN2MxOWY2NDYzMDI5NjljZDE4NGY3ZDggcHkzaworODU5NTQgYzg1ZjUzMzkwNjhhMTFiOWIxNTExNjUxYTVhNjk1ZGNlYWExNDA5YSBweTNrCis4NTk1NSA2NGVmNjFkOWZmZGM0MTQxY2EyMTIxZmUxYmMyYWMyODMxYzU3ZTE0IHB5M2sKKzg1OTU2IDNjY2M2YWI1NDZjM2IxMjA2MzcyYTJhYTkyOThiZWJiMGE4N2VhMjYgcHkzaworODU5NTcgM2ZkYmM2YTRiMGQwZjdkODEwMjQ3MTE0NWFiZThjNjFkZDlkNzZlNCBweTNrCis4NTk1OCAxODgzMDI5YzdiOGE3NDk0MTZmMjQ3Y2E3ZWRiZDdmZjYxNGU3ODE3IHB5M2sKKzg1OTU5IGJhYWQ1MmU3OGRjYjNjYTJmMGE3YjFkODkzZWEzMWRkMDhjZWVmY2UgcHkzaworODU5NjAgMGY3NjVjMzNmNGRlMjczZjg3NzY1YmQ2MzQyNzAxMWJiNTcyNGYxNyBweTNrCis4NTk2MSAzYjIxMGQwNDhmNWRhYzQ5Y2RkMTg4NWZkZTA2NzM4OGQ5ZDJmMjdlIHB5M2sKKzg1OTYyIDk4Y2VjYTI1MTk4OGUyZWQzOGE5NmIyODhmY2RhMzYzN2U4NjZjMmEgcHkzaworODU5NjMgOWI2NmE5ZjEzN2I2YzA5ODgwYzNiNTUyMTJmYjlhN2ExMjYxMWM1NyBweTNrCis4NTk2NCA2MDMwMTBhZjgwY2YzNjdmMDIxMDUxZmYyZGU2YThkN2YyMGU3ZGQ0IHB5M2sKKzg1OTY2IDY0YTk3YzRlYmFkY2Y0OTRiOWJmMTNjNzhkOTg1MmU4Mzg3NWVmMTEgcmVsZWFzZTI3LW1haW50Cis4NTk2NyAxODJjYjNmODJiMGI2NTc4M2JlY2Q3MDQyODFlMTQzMWU2NzM1YjViIHB5M2sKKzg1OTY4IDQ4MGU0NTgyOGQ0YjE5MTIwY2FlYWViOWEzNDE4Yjc5ZjFkMmE2YjcgcmVsZWFzZTMxLW1haW50Cis4NTk2OSAwYTJlYzE3NGZiY2Q2MjhjMTIzZDY4OTc3YmQwYzU3NWI3N2MxMTY1IHJlbGVhc2UyNy1tYWludAorODU5NzAgOTBiYzcxZDZiZWRmYTE3MjYzZGE5OGI2YWNlZDdjMDg1ZGQ3MWE0YSBweTNrCis4NTk3MSAzMjI3YjZmMjA0Y2M0YjI2MGNkZjdmNTg0ZDEyNjUxNjAxMDg2OTlkIHB5M2sKKzg1OTcyIGFiYmQ5ZDI2YWU2YzY0ZWU0ODM1M2JkZmM2ZjU5Y2ViM2M3OWMzMjcgcGVwLTAzODQKKzg1OTczIGVhN2IyNjAwZmRjNTk4YWYzNWUwZDQyZWE0NDI5OTQ5MzNkNjIyNmYgcGVwLTAzODQKKzg1OTc1IDcxMDk2OGEyZTE2M2I4ZDk3MjRjNDZkYjFmMmU0YjU1YTQzYzE0ZmEgcHkzaworODU5NzYgOTM1NmQ3NjVkNzhlM2QxYjA5OGZjMzAxN2UzYmQ0YTU4YWRjOWE2NiBwZXAtMDM4NAorODU5NzcgZjk3MjFhOGY4N2JkOGJkM2Q4M2RhYmU1ODk5YTZhN2EyMTc1MGQ4MCBweTNrCis4NTk3OCBlZjZkYWQ3NTE3YzVjNTRmOTg3MGE0YmVmMjk2YWVkM2RlMTc2NmJmIHB5M2sKKzg1OTc5IGU2YWYxNDZiYjM4Yjg4NjBjNDcwZDlkZjQwYTgyODZhMTdkYmZlNGMgcHkzaworODU5ODAgZWExNDk3N2EzNmRlZjg4YWJkZDVmNWUwY2I3MjI3ZDYyYTMwZDkwYyBweTNrCis4NTk4MSBiMDM3NzlmMDA3MzlkNGM2Yzk0ZThkMDI1N2YwMjYwMDg2NjAyYmQ2IHJlbGVhc2UzMS1tYWludAorODU5ODIgODE5YjFlMDUzNWQxOTBhNmQ1NDg1MGY2OWY4M2I3NTJkMjE2NjQ4NiBweTNrCis4NTk4MyBiNzE4MGFmYTBkZmYyZjc4ZTc1ZTBiZDdkMWQwMWE4YzFkZmIwODI2IHB5M2sKKzg1OTg0IDM2ZWE3MTkwMmZjOGQxYzk4MmFhMjFjYTc4NmJiMDBlOTRlMzlmMWYgcHkzaworODU5ODUgMzg1NmM2MWI1YzhiYmJlZDNkMzVkZjcyMTgyNGU5ZjRlM2EwMjJmZCByZWxlYXNlMjctbWFpbnQKKzg1OTg2IGIwMWZjM2E0MmQzNWZiOGJkOWQ0YTk2NDM5MjA5OGNmMmExZDUxMDAgcmVsZWFzZTMxLW1haW50Cis4NTk4NyA3MmEyZDRkOTQwMDMyZDI1NWJlNGE5NTg4YzhjM2Y5NmI2Y2U3MWE1IHB5M2sKKzg1OTg4IGQ2OTgyMDU1NDNiZDcxOTYwOTVmNTljM2JjNWE0OTE5YmQ5MTkzOGIgcmVsZWFzZTMxLW1haW50Cis4NTk4OSBlMjAzZWQwNzFmY2FiNDM3MWNhYzNhNGQwNjQyZTZiYjgyNDg3ZDc5IHJlbGVhc2UyNy1tYWludAorODU5OTAgYjk0Mzk2NWZjNDJiYzkxZjcwZjNkMmY4OGVkNjczMjk3ZTBhYTMzNiBweTNrCis4NTk5MSA4ZDgyNDM0ODMyMjhjMDNmZGU5Yzg1NmIxNGZlYzI5MmE3YWFhOWNkIHJlbGVhc2UzMS1tYWludAorODU5OTIgMjRiMThjZDRkNWYzNTQ5NzI0YWRiYmZkNzNiYzJkNWViZGQ5YWEyZiBweTNrCis4NTk5MyA0MmFkNGFlNmQ4ZWViYjZiMjQwYTk3NWQyZjFhMDY0MmU5NjNmM2I1IHB5M2sKKzg1OTk0IDYyNGU4MzFjZTcwMDI5MWZlOGUxM2NkMjY2NThiYzM3YjJlMjZkMzIgcHkzaworODU5OTUgY2U1M2ZlYTdmOTU3M2Y4YWZlOGI2NjU4YmQ4ZjkwN2Y3YWVlZDYwMCBweTNrCis4NTk5NiA1YjYyNzAzNWE5MjJmN2E0MTIxNTU4ODMzOWI1MmVmZmJhNjg5MTk2IHB5M2sKKzg1OTk3IDkyNTFiYTI3MmYyY2EzM2YwOGFiYzUxYThlOGE1MjZlZDY4NmZjODYgcHkzaworODU5OTggMGJjMmIwNjQwNmY4YmUzYTMxNjEyNGU4MzYzYWIzYTkyZTkxNDYxYSBweTNrCis4NTk5OSAxOTU0YzhlMzFjYjM4YTg5ZDY3YjMxNWM0NjYzMzZhOTBlZTU5MmIwIHB5M2sKKzg2MDAwIGYxODI1MThmM2Y0MjhjY2NlZjM3OGM5NzVmNDQyNDExZmEyNGU0NWEgcHkzaworODYwMDEgNzFmNGYzYjFjMzM1NmVlYzVjOGNjNWUxNmQyZGNlMGIzZmZhNjFmNyByZWxlYXNlMzEtbWFpbnQKKzg2MDAyIDlmMTA5NjhmNTExZDczZjFiYWMzZjkzNzQ3MzY0OThhNmZkNWNjOTEgcmVsZWFzZTI3LW1haW50Cis4NjAwMyA3MzZmM2ExMGQxNzMzMTAzMjc1ZWE5MDA1YTVmMDFkZDE0MjQzN2QyIHB5M2sKKzg2MDA0IDA2ZTIxNTAwMTE5YTI5Y2VmMDcxZmU2N2I4OGMyZjJhOTFkMThmZDMgcmVsZWFzZTMxLW1haW50Cis4NjAwNSA3MzJmZmE4NmM3OThhOWFlNmJjMjllN2I4MzNhY2UyYzI0YTc4YTY1IHJlbGVhc2UyNy1tYWludAorODYwMDYgMjExODU4NzIzYjhjYTk0YjU3ZWJkNjM2NjgxODhlMDBkMGI5YjlkMSBweTNrCis4NjAwNyAyZTFhZDcxMjFlMjk3ZjE3NmFhZGEyZDYxZjQ0YWEwYTA4NTM2MzFhIHJlbGVhc2UyNy1tYWludAorODYwMDggNDU5ZTk1YjY5MzFiZTQzYTMyMDNkZTE1NGFmNDY5OTU4YjQ4OWZjOSBweTNrCis4NjAwOSA4NzcwOWM2ZTU2OTA1NzM3YjEwOTllMTZiYzhjZjZmYjYxOTQ2ZWIwIHB5M2sKKzg2MDEwIDkwYmMwYzVkNzIyZjc3NGM1NDg4YWRkNmY1Yzc1MmM4OTU2ZDg4ZWQgcmVsZWFzZTMxLW1haW50Cis4NjAxMSAzMDVlOTNmZDViNmQ0YWVkYjZmMzVkN2NlMWYzNmY2Mjk4MjU3OGVjIHJlbGVhc2UyNy1tYWludAorODYwMTIgM2E3NTU5YmE4ZWI1OTIwMzZhMmFjZTBkMTgzNmRiZDAxMmM1ZGU3OSBweTNrCis4NjAxMyA0OWEzMWFlMDM0OGE1OGMxNGEzZGUyMTFlMWVlYzg4MTU3ZTIyYWM3IHB5M2sKKzg2MDE0IDYxMmFiYjFlNzY3NjIxYzdiNmIyN2ZkYzcxMDQxMDk0MWY2NmM1YjggcHkzaworODYwMTUgOGJlMDg3NjFkZGMwYmU1N2Y0NTRkZmRiMzMwNjAxNzc5MGU5OWQ2OCBweTNrCis4NjAxNiA5N2YzMmJhNWZmODU0YTZhYmQyZWY5MzdjYzc5OWQ1Mjk2NWQ0Nzc3IHB5M2sKKzg2MDE3IDBlZTg2ZmQ5MDJmMWVmMzViZGVhNjRhMzljMzViOWE2OWZlYWY2NGQgcHkzaworODYwMTggMGVjMzE3MGZhYTk1ZTU4MmU1ZjBhOTY1MTcwYTkzNDFjMjc3NTA1ZCBweTNrCis4NjAxOSBhZjlmOWVmY2JiOWRiNjRkNjVhM2Y0M2QzYTUwNWZmMjcyMzY3ZDRlIHB5M2sKKzg2MDIwIDA4NWRlOTYwM2I2MjlmZjIxNDUwZTBhNjAyZmI5ZThkZDE2OTBhNGYgcmVsZWFzZTMxLW1haW50Cis4NjAyMSA3NjA4ZGNhZjc4NmRkZGRiZmIwZGYwN2QzNzY3YmZmNDIwOWEwNTFkIHJlbGVhc2UyNy1tYWludAorODYwMjIgOTRjNWFkOTgxYzFiN2Y2MWEzNTBjMTRhZjY0MDg3NjBmMDFlMDFkMCBweTNrCis4NjAyMyBiNDgxOTgzOGViNWI3M2YyMTQxNGRhOTRjMTdmOTRiMTBmOTM5NWYxIHB5M2sKKzg2MDI0IDIxODcyYzI0YTI1YjkwOWNiNDQ4MjIyYTQ4MmQ0NTJmZDVlYzI4NzEgcmVsZWFzZTMxLW1haW50Cis4NjAyNSA5ZTI5MWJlNDg5Y2Y1NTE0ZmI0MjcxYjRiMjFmZjYyZDkzMzEzOWYxIHJlbGVhc2UyNy1tYWludAorODYwMjYgZmM4NjU4NjE5YmRmNDlkZWEzY2E0MTlmYWE3ZTNlMGI1NzE4OWFkMiByZWxlYXNlMzEtbWFpbnQKKzg2MDI3IGQ4ZDMzNjQ4ZDFiMmM3ZThiYTI5NDdmNjY3ZWM1OGU3ZGFlOTEyYmEgcmVsZWFzZTI3LW1haW50Cis4NjAyOCBjOTgyMDczMTg4M2Q5YmQ0ZmY0YjBhMGI5MWFhMzM1OTE0ZmQ2MzQ1IHJlbGVhc2UzMS1tYWludAorODYwMjkgZjNhZmExMGNlNzc3MTllM2JiZGMwMmE4MTdjZGUzNjYxMzBmYmQ4MyByZWxlYXNlMjctbWFpbnQKKzg2MDMwIDEzMWU3Y2M5ZTQxNmNkNjE4ODFmOTAzYjNjYmMxY2E2YzI4YTZkZjkgcmVsZWFzZTI3LW1haW50Cis4NjAzMSAzMmMxOTFhNWMxY2Y5NDk1YmRhMGZjNDY4ODFjYjQyMmY1Nzc4ZjczIHJlbGVhc2UyNy1tYWludAorODYwMzIgYjg5YjBjN2YzNzA5NGEwYjczM2EwOTZhZDRhNDg1OTY0ODNmMzllOSByZWxlYXNlMzEtbWFpbnQKKzg2MDMzIGFlMDZjMDQ4ZGUyNDcyODA0MzE4ZThlYjUwNjBkMTM0YmJmMGY5ZmEgcmVsZWFzZTI3LW1haW50Cis4NjAzNCAzMjE3YjEwZjg0MTNhOGFkNzk4Y2E3MDk2OTM2MDNlMzRjY2E5ZTEwIHB5M2sKKzg2MDM1IDliODE0Mjk2MjBmNGI3NzQ1ZWViM2RjMmRiNmZiZDI2OWRkODRhZDYgcHkzaworODYwMzYgNDEyN2FiMWY2MzM4YzJjODBlNDM1Njc0MjY4OGM1N2I3ZjVmNWMzMiBweTNrCis4NjAzNyA5N2RmNWRkZTlmODFiYTZkNGUyN2JhNGUxNjgyZWRhZmZmZjIxODMzIHB5M2sKKzg2MDM4IGE2ODMwY2M4MjJhYWJlMzMzZDk1Mjg2N2ZmOTY3NjlmZjA0NDk3OWEgcmVsZWFzZTMxLW1haW50Cis4NjAzOSAxNDBkNDcxYjA2MWE1M2QxNzJmOWU0MmE2MjAzNjFiNzExNGYzNzMzIHJlbGVhc2UyNy1tYWludAorODYwNDAgNzVhYzEzZmU3ZGEwM2JiY2E0YzMzZTkxMGI5ZWIyYjBkMmNiMzczMCBweTNrCis4NjA0MSA2ZmE0OGZhMmE4NjU2OGM5NTgzNTIzMmZiNzkwZTM2NTA0MWNlM2MwIHJlbGVhc2UyNy1tYWludAorODYwNDIgOTQ0MzJlNGNkZGNmNjI0MWM5MzAzZDA4Nzg2OGZkNjQzNDRkYTIyMiBweTNrCis4NjA0MyA1YzViN2E5YmFjMDVjNjQ1OWNlOGQ5MjQ4YTYxNDdmMTZhZGY0MTJiIHJlbGVhc2UyNy1tYWludAorODYwNDQgNDk3OTY0Y2Y5ZTU4ZTYwYmFiN2ZiMWRhOTgxOTk0MWM1MDU1YTcwMSByZWxlYXNlMzEtbWFpbnQKKzg2MDQ1IDViZGMwZDZjNjkzOTMzYmM4M2Q5MmYwZDI2NTE0YTk4NDNjZWZkMTkgcHkzaworODYwNDYgNTc1Nzk0MjU5M2EwZWJiNTA3OWZhMjE2YzEzMDZmN2U0MjgwYmQ0YyBweTNrCis4NjA0NyBkZTFlNWVlYTdlNzVkMTA1YmUwOGFjNGJiZjJjMjAwOTBlMWYzM2Y3IHB5M2sKKzg2MDQ4IDcxOWViY2I5MzRmM2RjNDQwMTU1NjY2OGMxYWU1YzA3NjA2ZjkyYTYgcHkzaworODYwNDkgYmM2Y2NlNGFiM2M2MzY3NzAwZjlkNmFkMmE0OGFkOWUyOWQ5YjA2ZSBweTNrCis4NjA1MCAwMDA1YTE4MWQxMGJiYjk0ZmEwZTEyMmRmYjkzOTYzOWU0MTY3Mzk4IHB5M2sKKzg2MDUxIGVhMmMyZmMwMTlkNjVjNDEzYmUxYjYyZmZlZDNjMTQzNWFkZDgxNzggcHkzaworODYwNTIgNDFkNWQzZDdkYTIxOGY5YTI0ZTcwMzllYmM2ZjRlMmFmMjZkMzVlOCByZWxlYXNlMzEtbWFpbnQKKzg2MDUzIDBhOTQ5MjM3ODNhNDdkNDAxOThlNDI1MTczNmU2Zjg0YjY5NTQ4ODEgcmVsZWFzZTI3LW1haW50Cis4NjA1NCA0M2FjYzk1NDM0MTZiNDViMDUwYmZhODdlYTNjNzc5OTczOGQwOTI1IHB5M2sKKzg2MDU1IDkxMDNhYTliMjcwNGM5YjU5Y2MzMGViOGM1NmYyN2NmODc4N2EyOTIgcHkzaworODYwNTYgMDU5OWQyMTg4ODM3ZWM0MjFmMDk1NmRmOTdmY2ZmYmViYzkyYWY4YyBwZXAtMDM4NAorODYwNTcgZmVkZGI5YTgzYWVmMWM2YWM2ODE1M2M0ODE0NjdlMWI1ZDE3OTIyNiBwZXAtMDM4NAorODYwNTggMDg5MmIyYzM2MzZkOWUwYzI4YzMwZWI3NmYzMWY3ZjA4NDkzYWIyMSBwZXAtMDM4NAorODYwNTkgOTdiOWQ0MDg4OTE0ZTM4NGIxYjIzYTMxZWIxZWNmYmYwNDM4ZGU0MiBwZXAtMDM4NAorODYwNjAgMTI0MzNlOTg5ZDljOTAxOWU3M2QzYWFmMTNjZDBjZGMzNjI2MzJjNyBwZXAtMDM4NAorODYwNjEgMzkzM2FiNmY2ZjdhYzkzZDllNzg4OWY1ZjdhYjI0OWVhMGE2MjVhZCBweTNrCis4NjA2MiA1M2I1MWY1ZTk1YzRjY2JhMzU1YzU1MjE3YWQxMmQ5NTlhNzBjMDU3IHB5M2sKKzg2MDYzIGQwZjFjYTFhODEzOTFjZDMzMjRkYWI5OGEyZTgwZTRmZGMzODM5N2EgcHkzaworODYwNjQgYjY0MjQ0MWRhMWVhNTkwZmIyNzBjYzQyMzlhZjMxYjM1YzA1NTRkNSBweTNrCis4NjA2NSBlYWE1MDcyNTEyMmI2NmM1OTJlMzNmMzQ4MWMzOWQ0YjkyZDJlM2I5IHB5M2sKKzg2MDY2IGEyY2U4MjE4ZTAyOTJkY2RiYzkzMTczYWZkN2U3YTNiNGZjZWI5NjMgcHkzaworODYwNjcgNjQ3MDU2NjE5NmIzZDM1ZDUzODdmNjAxOTZjOTg4NzVmN2FmOGJhZCBweTNrCis4NjA2OCAwYTNhZTRhMjU1ZGUzYWI3NTUwNWUxZmM4NGQwMDI5ZTEzYzE1Njg0IHJlbGVhc2UzMS1tYWludAorODYwNjkgZmIxMmVlYjFlN2E5YmEyMThlYTllZTVmY2U1ZmE5ZjA5Nzk5NWRhYSByZWxlYXNlMjctbWFpbnQKKzg2MDcwIGQwYjIwYTY1MjFkMjE0NmVkNTg3YmI0OWQyMTJjYjVmMGMzMTA1YWEgcmVsZWFzZTI3LW1haW50Cis4NjA3MSBiNWUxZTZmMzE0MzdmMmM3NTZjNjU1ZDg3YWI3YTI0NTk4NDRiMjA4IHB5M2sKKzg2MDcyIGM4MjQ4NzUxM2U3NjkwNmFiNDA3MDIxYzllYjgxMDg2Yjc5ODIxOTQgcmVsZWFzZTMxLW1haW50Cis4NjA3MyBmZjJjNWM5YzA3OWJhMDZjM2U5YTc3MzQzNzY1YzgxMWZlNzM4ZjYyIHB5M2sKKzg2MDc0IDdkYzEzNmEwMTAxMzcwNjZiMmE4ZjkxNWUxNWU5MzMyN2U2OWE2YTkgcmVsZWFzZTMxLW1haW50Cis4NjA3NSA0NTFjOWJiNzUxNTllNDJhZmQ5MjFmODU1OTZmODdjODk3NTAxODQ2IHB5M2sKKzg2MDc2IDcyMGQ0NWE2ZTMxNjlkNmI1NWM2MmZkOTUwZmVkNmI3NDVlNjhiNGYgcmVsZWFzZTI3LW1haW50Cis4NjA3NyBmZTJkMTliMmE1YzZkMmRmOGY4YjBhNTJhZDhmNTY5YWY5NDZkYWUzIHB5M2sKKzg2MDc4IGJhMmFlMDk3ZjU2NzUzMTJiMDllMWRhYTNiYzZkZmEwNTZkY2U2OGUgcmVsZWFzZTMxLW1haW50Cis4NjA3OSAyMDZkZWQ5NDM1MzRkMzZiNjVmNDEwYjNkYzkwOGNhYTE5OWI4NTZmIHJlbGVhc2UyNy1tYWludAorODYwODAgOGU2NTg0OWY3MWY1MDkzOGU2ZGZmYzYzZTYyM2MyMjliNzdjZWYxZCBweTNrCis4NjA4MSBiZWVkYzc4NTZmNWIxMzkyOTljNzYwYmY0YTkwOTgwOTZlMGQwZDcxIHB5M2sKKzg2MDgyIDlkMTEzM2MxODYzZTRjMDY2YzE0ODFiNGQ1OWQ3N2NmZDhiMjY2NDEgcmVsZWFzZTMxLW1haW50Cis4NjA4MyA5ZGI4NTc5NjA0MDI3MjM1ZmQ2N2EzNTk4YzY0NjYyMTJiNmE0MDQ4IHJlbGVhc2UyNy1tYWludAorODYwODQgZjAzMDA1ODRjODI0NDRjOGJiZmE5M2ZlYTdhNjE4MzAxNzBkOTllMCByZWxlYXNlMjctbWFpbnQKKzg2MDg1IGU1ZGIzMmY0ZjRjZDY4MmEyN2Y4MzdiNTdjZjM1YTZmYTg0ZDBlOTAgcmVsZWFzZTMxLW1haW50Cis4NjA4NiBlNzFjMmUxZGFmNTcwYmZiZGM0Y2E5N2JlYjBiZjNlNWE4OGU1NDdhIHB5M2sKKzg2MDg3IDQ5M2EyZDQwN2M5NDQ2ODA2MWZmZGI3MjIyNmQ1ZTQwMzlkNTQwMTAgcmVsZWFzZTI3LW1haW50Cis4NjA4OCA0M2QyZDVhZmJmNzM4YjU5MTQzM2YwODg1NWVlNDMwYTRjODg1YjBmIHJlbGVhc2UzMS1tYWludAorODYwODkgN2M1OGZhZjIyZTlmMmVjNTc3OTg4NGNmYjhhMDhiNGMxZDlkZjdlMiBweTNrCis4NjA5MCBjYjllMTAwMzRlNGE2NWVjMjcxZGVlMGMwMzMzNDJjYWI3YzQ1NTEzIHB5M2sKKzg2MDkxIDg0ODkxMjc4OWI3OTRhYjQwNWVhOTI2YmUyNGUyNjg4MmI2MDY4MjUgcmVsZWFzZTI3LW1haW50Cis4NjA5MiBkOGFiMzVlYzQ4NmU5MDg2NjNiZjg4ZWUwNTRkMDA1YTEyMzlhZWU0IHB5M2sKKzg2MDkzIDU5NTJiOTM3YWI5YTI4YjIyMjVkM2M5OGM2YmVmYTNlZDBmOGRhZDUgcmVsZWFzZTI3LW1haW50Cis4NjA5NCBiM2MwOThjM2E4MjY2OWYyMTk0ZTNiMzliZjEzMGM2MjcyMGY1YzljIHB5M2sKKzg2MDk1IDYyMWYzZTlhY2VkZGM1ZTc4ZDY4Zjg4OTI1YWU2M2I5ZTI1OTBhOTkgcHkzaworODYwOTYgMzUyMGZlYTVlOTIyZWI3YTMxMDdiYjU1ZmIxN2YzZmNhZjg2NzEyMSBweTNrCis4NjA5NyA1MjA4NGVhNjNjNDIxMjFhOTdhNDU4OWIxMmZiMDhhZDU3MjcxNWMyIHB5M2sKKzg2MDk4IGM3OTFkMDI2MTAwNjI0YjQzMTE2MzMxMWM0MDg2YzI4ZDVlYjA4YTIgcHkzaworODYwOTkgNTM4ZjQ0YjMyYjBhOGRiOTkwNjdhMjQ2YzEwNjc5ZTRmMzQ3MzkxNyBweTNrCis4NjEwMCBmZjgxNjg4OWFhNjFmYzYyMjdhZTg1ZGE4OWYwNDNkOThkNGQ3MDM2IHB5M2sKKzg2MTAxIDljN2FkMGVkNjZjYmVjYWRiNTZhYmQ1ZmQ2ZmVmNTJlNmE5NzZhNTMgcHkzaworODYxMDIgYmUxZDdmNjE5ZmMwZjAwNjFmODZmMTVlZTc0ZjI4MjlhZjA0NjcyYiBweTNrCis4NjEwMyA4ZTE5ZmY5NjRjYzhkYTE2MjBiNTg3ZTc4MjNiNzM3MzBiODYwZGZhIHB5M2sKKzg2MTA0IDRlYTk0YzVmNmQxMDI1MjU0ZDk3OTNlZTViZWViMDU3NDlkOTllM2MgcmVsZWFzZTI3LW1haW50Cis4NjEwNSA4ODlmZDhlY2JmZjQyNDQ5ZGE1M2ZhZDY0YmViMTM3ZTAzZTcyNDE2IHB5M2sKKzg2MTA2IGEzN2Q2ZDgxZjRiMWU5ZDViOGEwNGQ3YTkwNjY0OTQzNjI0N2E3YjEgcmVsZWFzZTI3LW1haW50Cis4NjEwNyBhNjM5NTllZWM4ZmY0YWRkYmI4OTQ5NjRkMzAwYmY5OGU3MmM1MGMzIHB5M2sKKzg2MTA4IGIzNDZjOGQzM2U1NjAxZWM3YTA5Yjk1YjhiOWY2NDFhMzY2MjhjOGUgcmVsZWFzZTMxLW1haW50Cis4NjEwOSBkZWIyM2NiYWI1YWI2MjM1Mzk1NmU2MDgzOTJiMGNlNmEzYzE3MDJjIHJlbGVhc2UyNy1tYWludAorODYxMTEgZmY2ZjM5YjNjMzhlNDZiZDVhNTI0YjQ2NDY3ODZjY2RlMWUwYWU5OSBweTNrCis4NjExMiA1NzNkYjJhZjJkZGE3NGYyMzM3ZGNhZTQ3ZGQxY2I5OWFmZjFlNWI2IHJlbGVhc2UyNy1tYWludAorODYxMTMgZjNiNzE4ODE3MWMwMmNiNWNkN2E3Zjc5NjI3NDk5NGVlZGMxM2YzYiBweTNrCis4NjExNCAzNjg3MmEwZWQ5NDMzNWQ4MDgwMDFhMjAzNTFmMTI1M2ZjZGYwM2MwIHB5M2sKKzg2MTE1IGQ3ZWRkMTViYTBmMmFjMTA0ZjM2YzczZTY3YTY2NDhkZGUzY2QwZjkgcmVsZWFzZTI3LW1haW50Cis4NjExNiAxNTc2NzkwMmI1NDVmYzdiYzQyYmIzYTFhOGI1OTZiODE4Y2RiNGVhIHB5M2sKKzg2MTE3IDQ5ZjE4YTk1MzNjZGUyNjIwOGUwN2U1YmVlMTc5NmJmMDFlMTkyMGEgcHkzaworODYxMTggZWRmNDA2ZWFiMWRiN2ZhMmUwMzlhNGE1NmY2YTMxNTkyMjQ3YjdlNyBweTNrCis4NjExOSA2ZWVkMGZjMTg4MThjMTBhNjUzNmY5MjZmNWI3ZGEyZmM4MzNhYzIyIHJlbGVhc2UzMS1tYWludAorODYxMjAgNGNjZDA2OGNiYTBjOWIwMjI2YjExZTcyMmFkMzZkYjRlOWM2ZmVhMCByZWxlYXNlMzEtbWFpbnQKKzg2MTIyIGY0Zjc5NTU2YTUyMmUwNGYwNjM4ZmE5MzhiYzYxZTFlNjEzODkzNTMgcmVsZWFzZTMxLW1haW50Cis4NjEyMyAwMDRkNWYxNjU3MzhkZWNjMGNmMmNjYzM4MWY2MzNjNDBmY2MwNDVlIHJlbGVhc2UyNy1tYWludAorODYxMjQgYTI4NTg0M2U5NThhNGMzYTc3YzMzNTFjMjBhYmFkMzQ0M2ViZGI5MSByZWxlYXNlMjctbWFpbnQKKzg2MTI1IDQ1Nzc5MmFmZGVjZDYxMGJmYmJlMmZkYzA5OTc5NGU1M2QzZDAzZjQgcHkzaworODYxMjYgMjNiNDk2Nzg0MDFmMTgxNzBhZDFkNDNmNDBlYzg5MjAzNTNjYzFmYSByZWxlYXNlMjctbWFpbnQKKzg2MTI3IDUzZmI5OTE2MzI3ZTBmZWJkNTQ4MDg3ZTcwZDU0NDI2MmE2MTYyYzYgcHkzaworODYxMjggMTA5NTM4NzE2YzU5MWQxNjMwZTg5ZjdkZmU5NWNlOTRkYjJjMmMxMiBweTNrCis4NjEyOSAwY2UwZjhlYmRkMjk4NTIyMzgyMzIzN2Q1MTk4N2Q0NjFhNzdmZDlkIHB5M2sKKzg2MTMwIDE5MTA2N2Y0OWZjYTA1NTJmMjY2ZTZiYzk2NzE2OGVkN2M1MzQ1NjggcHkzaworODYxMzEgZjk4MGY5NDRiZTE5MzU0MjZkNGY0ZGYxNGM1NjY5NWU2ZmRhMDQ0NCByZWxlYXNlMjctbWFpbnQKKzg2MTMyIDY4MzQxZjljNTkzNzNmYmU4NmJlYjJlYzVmNmRkOTc4MmJmZTBkY2YgcmVsZWFzZTMxLW1haW50Cis4NjEzMyAyNjk3MzI2ZDRhNzdkM2VjODdhOTM1OTkwMjUyMjQ0ODA1YTFjZDU4IHB5M2sKKzg2MTM0IGE5ZGJjODdhM2ZmNGFjYTc0NzYyNjQyNjY1YTE0MmVlN2FlYWNhYjEgcHkzaworODYxMzUgNmQyMGRkZTk2MDljOTFlN2VmNmIzMDIwMWEzMDc5MmUzNzUyZDJlYyBweTNrCis4NjEzNiBiOTZlZGIwMmVmNjMwZjcxOWZlOWQ2NjNhNGIyZGYwNTY5YWUyNTE4IHJlbGVhc2UyNy1tYWludAorODYxMzcgMmQ0MjJmMTAwMjJmZjA3MTQ3N2I0YWY1MWIxODZmYmRjNjdiMjg0OCBweTNrCis4NjEzOSA1OGU1NGY1NjNkZTdjZjNkNDJhNjBhY2YyMGRiNDYwYTU0OTljMjczIHB5M2sKKzg2MTQwIDhhNGUyNjM3OTZhM2U1ZmY1OTUyMjZlOGNhMTY1ODNlODE1MzFjZTIgcHkzaworODYxNDEgYjhjMjA2ZTVlZDQ0YWNmZDNjNzJlZTI3ZWYzYmI5MzUzODI1YzQxZiBweTNrCis4NjE0MiA4ZWYzMjk1NWEzNDk0ZTljNmM0ZjljYWJlODEyMGUyZjRmOWM5ZGQzIHB5M2sKKzg2MTQzIDViMDY1Y2Y2MGRkZTEyYTA2OWY4ZmZhZGUzZTBiNDZkNzU0MTU2Y2UgcHkzaworODYxNDQgZjI1NTAxMmIzNDZiYzk0YTE2MDU5NWQ4MDBhYjdiMWEzYzQ3MzFlZCBweTNrCis4NjE0NSA2NzA4NWYyMDIxNDI5MTIyZmExMmVkYWI3ZjIyOGExZDkzNzJkMGVkIHJlbGVhc2UzMS1tYWludAorODYxNDYgMTQyZDUzOTBhYzVjNmEwMmFhYjJmOWM0MjM2OGUzZWM5YTM1OTcxNCBweTNrCis4NjE0NyA0ZDFhYjJkMjViYWY2ZDhlYzRiYjk1YmZhODQxYTgwYTQxZWY5OGRjIHB5M2sKKzg2MTQ4IGRjMzAzODJiYTg5YTEzMDdjODQwYzVkOWNiYTlhMzAzZTliZGI5MzAgcHkzaworODYxNDkgZjI5ZjYyYzM1N2UxNGM5NWZkMjQ2YTgzYzg2MDY3MDM1ZDc4NzgyOSBweTNrCis4NjE1MCA4MWIwZTg5ZTNkZjNjZDk0M2FmZjQxZWM1ZDdiNzgxNDljMmQ0ZTMxIHB5M2sKKzg2MTUxIDhhNWYwODczZDczODAyMTk4NWJhNmU4MjQ0OTU1NTllMjE0YmRiMjEgcHkzaworODYxNTIgOGQ2NTlhNTQ3OWNhODQ4OTNhMzlmZmE4NDAxOThkNTYzNWQ1Y2IwNiByZWxlYXNlMzEtbWFpbnQKKzg2MTUzIDQ2MjQxYTM1YjVmYzUwN2MzZGYyNjY4NmU5MTg0NzljNzI0ZjI4ZDUgcHkzaworODYxNTQgMjk5NzM1ZTVmZDdmOTExNGMzM2FiZTJlNTI3NTg0YTcxYTQ0MGFiNiByZWxlYXNlMjctbWFpbnQKKzg2MTU1IGM5NjczMTRlZjYxZTczZjJlNzZjNGVkZmI0MTBmY2FiN2Q2ZWEyNDMgcmVsZWFzZTMxLW1haW50Cis4NjE1OCA3MWFjNTIzYTZiMTIzODQyMjNlODdiNDY4NDEzYTk0NzViMzBmMmQ1IHJlbGVhc2UyNy1tYWludAorODYxNTkgZTFiNjFiMDUyYzY2YmQzZjRhMDk4MTMyYjQxMDI2MDY2MjE1NjRiMCBweTNrCis4NjE2MCAxZTRkNDZhNjFmYmVlZWViM2ViNDUwOTBmOThlYTZiN2VjODZhMzEzIHJlbGVhc2UzMS1tYWludAorODYxNjEgODQ0ZWNlMzczNzY0MTRjZDNmNTg2YTJmZDE5MDU2OTdhODkyNzUxZiBweTNrLXR0ay1kZWJ1Zy1vbi14cDUKKzg2MTYzIDdjNWQxZGNlMzlmYWFhNmMwYzM3MDBhMGQ5MzY1Mjg0N2JlZWQyNzggcHkzaworODYxNjQgNTIzMWE1YTM3YTdhY2ZlODY3M2IxMjQxOGE2NTRmOTMzZmM1YmZkNiByZWxlYXNlMzEtbWFpbnQKKzg2MTY1IGJlYmEyZGUyMDBkZDE2NWUyYTMzYzRlNTE5ZmY5ODdmNDE3NDdiNDIgcHkzaworODYxNjYgNmUwN2M3ZTRjN2NjYTk0ODU2NWFmMDk4NjdkYmQwZmVjMTE0MjQ1NCByZWxlYXNlMjctbWFpbnQKKzg2MTY3IGNjN2E4OGUwODg5OTM5YWE2MjBlMjQ3MDcxZGI2ZDUzZDJhZjAyNDcgcHkzaworODYxNjggZmY2NTg1YTJhMjQzMmMxYWExY2Y0OGUxNTE0YWQ1N2U3ZmNmNjMzZCBweTNrCis4NjE2OSA2NjMxZTVmNmQyY2VlNDIyZTMyY2EwYzdkYmM3N2ZmNmQ2MDJjNjYwIHB5M2sKKzg2MTcwIDA1ZWVkOWYwY2UwMTU1MjYwOGVhYjBkNjljMDJmM2M2ZTU3ZjJmMmUgcHkzaworODYxNzEgNDI5NGUyYzAwMjQ1NDAwMWQ0NzRmOTk2NGQ5MWU0Njg3OGMyYmFhZSByZWxlYXNlMzEtbWFpbnQKKzg2MTcyIDFmNDViZmI5ODQ3MzcwMTdjMmY4NzRjNjRiMjAyZGJjMGEyZjA5ODggcmVsZWFzZTI3LW1haW50Cis4NjE3MyBkZGYwMDBhZWY1YjA3YTQ0ZWM0ZGZiOThjMzk5Y2M5NTE3NjgwZGJmIHB5M2sKKzg2MTc0IDMyOTJjYzIyMmQ1Y2Q4NjEzM2RkZWRhNTQ1ZTg5ZTMzMjQwYWQ1Y2YgcHkzaworODYxNzUgMjcwYjUwMjk2ZWE5ZmIwZWQwNzViODczMWZkNDJkNjMxYzk1MTE5MSBweTNrCis4NjE3NiBlYTVhZWYzMmExN2YxNzM2Yzk2NGU0NWFkNjA1YTQ5Y2EwMWRlZDg5IHJlbGVhc2UzMS1tYWludAorODYxNzcgNGJiOWM5NzRmNTE5ODc2YzcwMDQ4YTYxMzZiMTRhOWJlNmRlZmJlYiBweTNrCis4NjE3OCA0ZWU2ODJmYmVjMzBkYmIxNDY0MmJlMmJjMDY1MDc4NTU4NGFmZDRjIHJlbGVhc2UyNy1tYWludAorODYxNzkgNjJiM2EwYTk5YjE5ZTRhNmQ1NjdlZDM4OTljZDhhODZkMjAzYTVhOSBweTNrCis4NjE4MCAyZDVkYmRlNjRhMzU4YjI2OTkzNDU2NDkxMTgyZTIzYjgxYmYxNjA0IHJlbGVhc2UyNy1tYWludAorODYxODEgNDhlNTU0OWUyYzI1ODlmM2RiYjFjMGU1MTI4YTYyYzU5Yzk0N2Y3OCByZWxlYXNlMjctbWFpbnQKKzg2MTgyIDdhYjcyYmEzOGZlMDJlMTJiMTRkOGIxNzg5MDA5Y2RlOWEwYmI0NmYgcmVsZWFzZTMxLW1haW50Cis4NjE4MyBiODM2ZjA0NzU5Y2QzNjMzZmFmNjJmZjU4Yzk0YzU2ZjIwNTUzMTk5IHJlbGVhc2UzMS1tYWludAorODYxODQgOTQ3YjVhY2M2NGJkOTI3ZTRkMDY3NjI4MGIwOGNiYTZhOTM3NDdkNiByZWxlYXNlMjctbWFpbnQKKzg2MTg1IDZlMWFlMzIzZmRlNjI2YjYyZmNhYjJkYWYyZDYxZTFlN2E1ZjFjNGQgcHkzaworODYxODYgNDMwZDUwZTNhYzUzMWE0ZjM4YjEyMGNhOGE3ZjczYTg3YTg3OGJmZiByZWxlYXNlMjctbWFpbnQKKzg2MTg3IDhjZjhiYjVkYzVmODZlYTJjMDExYzk0MDllNjZlMDA0ZjU2NzQ1YzcgcHkzaworODYxODggZWM5ZGQ5NzM1MzJmM2MwNDgyOTA3YWQ0ZGEyMzVjMjM3Y2M3NTIyOCByZWxlYXNlMzEtbWFpbnQKKzg2MTg5IGJiNjZhNGY1ZWJjMmFiYTg1NTliMDEzODU4YTk2M2EyODljMjlmYmIgcmVsZWFzZTI3LW1haW50Cis4NjE5MCAxY2U2OWVlNjllOGVjMDE4NTQyNDhjNzEwZDI1YmY0ODUyMDgxNTc4IHJlbGVhc2UyNy1tYWludAorODYxOTEgNGMxYzQ4YjNhZjY2MjZiNjA2ODA1ZDFkZjZhZjMyNDJjYTZiYzAzZCBweTNrCis4NjE5MiA3OWIzZmM2ODFjYjA5NDg2YjRhMWJmMjE4MjE0YTgzYjBiYjdiZmJiIHB5M2sKKzg2MTkzIDJkMDVlOWZkYjU5N2YwMmRjYzE5NDRmYzI3ZTA5ZDk5ZmFmNDViZDYgcmVsZWFzZTMxLW1haW50Cis4NjE5NCA3ZDI4MDg3ZmJhZjNhOWE2OTdmNDcyODcwNTcyNThiNzQwMDMxYTI3IHJlbGVhc2UyNy1tYWludAorODYxOTUgYjAyNDlkMDgzOWVkYWIxMjNlODM0NmMxMTZiY2I5MTU1ZDdmMWY4MCBweTNrCis4NjE5NiAxMjQzZWM2NzljMjk4YmE2NGVmMmY1NjE0ZDIxZTA4ZWE2ZDcyMmZiIHJlbGVhc2UzMS1tYWludAorODYxOTcgNjJmZjExNjQ0MzM5MWQwZTNkOTk1YjQzYjdkYzQ2NjFkYjE0ZGExNiByZWxlYXNlMjctbWFpbnQKKzg2MTk4IDE4ODk2ZDU4MDI5MGFjYTMwNmU5YzhlZDJhYTIyODM0NGU2NDBiZGYgcHkzaworODYxOTkgYzUwMGI0MTM4ZjdiOWMxMTc5YTgwZDllYmQ4ZTMwMTc3ZDQ4OTJlNCByZWxlYXNlMjctbWFpbnQKKzg2MjAwIDYyMDg1NzMzZjdkZmI5ZWMyYWEyMmJjZjQyMGQ5NzY3YzRmODgzYzUgcmVsZWFzZTI3LW1haW50Cis4NjIwMSBiMjU0YzY1MDdjMzVkMjc0MDg5NGViMmMzMjVkMWQ2MjU0MGE0MDM3IHB5M2sKKzg2MjAyIDI1OWE5YmVjMjMyNmM2OTFhZmZjZTYxN2RkZDI2ZWU5OGVhNDA3NTYgcHkzaworODYyMDMgZWQzNWIxMWViZWM2OGNlN2Y1ZDYwODk3YThhM2EzMTQxOWZkMDJlNiByZWxlYXNlMjctbWFpbnQKKzg2MjA0IDJhMzMyZTcxNTc2NjM4NmVkYzhmY2NhYjEyOTc3YjBkMWE3NTRjNjMgcHkzaworODYyMDUgZTIxM2U0NjVhMmRjODU1MmM5OGU1YzU3N2EzOTdiMjVmNTgzNzUyZSBweTNrCis4NjIwNiBlZGY4YzRiMDAwNDFlMDk1OGEzODNjOTA2ODQ3NzdmZDkyNmE5MTg4IHJlbGVhc2UyNy1tYWludAorODYyMDcgZmU4OTYyZmMwZTExOTkzZGRjNDA1MTU5YTI1ZWMyY2M3YjlmOGQzYiBweTNrCis4NjIwOCAyMzlmZmVlNWVkYWU1Mjk0NDZhYzM0YzNmY2FmMWUzYjljNDdlMjljIHJlbGVhc2UyNy1tYWludAorODYyMDkgNWIyMTFkYzk2OGRmYzdiYzlhOWZmM2VlM2RhZmRjZjIxZjJiZWVjZiBweTNrCis4NjIxMCBkMzFlYWVjODgzZWIzZWJiNzEwOGFjYWJiNmJmNWU0ZDU4MTA0MmVjIHB5M2sKKzg2MjExIDQ5YjBkNDIzMDIzZWQ3NGZhMzBjOGJkNTk3MzMxNmI2YWUzMWUxYTQgcHkzaworODYyMTIgYzM3YmVmOGRjZWEyY2I1OTBkMTA1Y2I5NTY0YWFiNjY0NjkwZWVlNiByZWxlYXNlMjctbWFpbnQKKzg2MjEzIGVkZWZjNWQyYjNkNzRlOWZiNTczNGQ0NDBkYjFiZjgyMDRlNWQzMjkgcHkzaworODYyMTQgZDMzZDYyYWI5MWNjYWNmNmUzNzkzYTkxNTg4MmIwNzFiOTEzMzZmMSBweTNrCis4NjIxNSA3M2NhNmRmYjIyYWExNTEzODIwMzg5MTJlMDgwZTY2YzRjMTZiMTg2IHJlbGVhc2UzMS1tYWludAorODYyMTYgMTg1YWI3YzRiOTQ2OTFhODhlZmY3MjM1MTJkZGMxMzQ2OWQyNzVmNSByZWxlYXNlMjctbWFpbnQKKzg2MjE3IDM4NWQyMzliY2JmYTc4MDY2NmIxNTQ3M2IzZDU5NWM3N2JmZTUyNjQgcHkzaworODYyMTggODIyMjE0MTA1NjJiM2RiMDhjZjFkOTMwY2ZhY2RiNzQ1YzczODQxMSBweTNrCis4NjIxOSA0NThiMDVhYmY5ODczZDlhNzZlMmJjM2U3ZDQ5ZDRiODIzYThjMDI2IHB5M2sKKzg2MjIwIDU3MWQzMTdiNGNkNWYyZjNlNjUzMTk4NGI5YTE1MjRmZWUxZGE4YWMgcHkzaworODYyMjEgNWRlZDI1ZTA2YTlhZmJhYzJmYTkwZGQ1ZWQ0NDBmYTM3MDljZTFlNyBweTNrCis4NjIyMiBmOTBlZDM3YWUxNmYwYTQ0MmY0OTllYTA2MWM5Yzg0NzEzYzIwMzk1IHB5M2sKKzg2MjIzIDNiZjg2Nzg1Y2Q5YzVlMzc5MWI1NTJiZGQxMWM5NDk0ZWMwZjU2MWQgcHkzaworODYyMjQgMTBlMDU4MDg5NWVkNDU4MDQyMGE4YTMxZTMyNTIyYzI4ZTE3MTNkZiBweTNrCis4NjIyNSBmZGQzNjgxYjE0Mzk5NjQzMjQ5ZWIzNGU3MWUzZjY2MTFkMGM4MTUyIHJlbGVhc2UyNy1tYWludAorODYyMjYgZTNmZDEyMDViMTA1NWU1ODU2ZTkxNTk4ZDY5MzMwNWE2NjcyOGZkMCBweTNrCis4NjIyNyAzMjA3ZDlmNGQwMGFlZDMyZTgwZDU3ZjgzMjA1NWIwODlkZWY3Y2IzIHJlbGVhc2UyNy1tYWludAorODYyMjggYTA5MGJmNzE2YTY4NzM1Njc5YzFhNGZkMGEzODM4NDYxNDUxYzRmZCBweTNrCis4NjIyOSA5ZDczZjk4MjdjOWY0YTVmOWIzY2I0M2RhZjVjM2Q4MDE3NWY1MDMxIHB5M2sKKzg2MjMwIDUzZWMzOGQzMTk4OGExZDJkNTkxMTIwYmQxNGFlY2UyZjAzOTNiNWIgcmVsZWFzZTMxLW1haW50Cis4NjIzMSA4OTExZjQ3NWFkM2QyZmYzY2RjZDE2MjUwMmJjYzFmZTg1NDE3YTczIHJlbGVhc2UzMS1tYWludAorODYyMzIgOTZkYmIwYzE2OGI2Nzk1MzEzN2U1MDhjY2I5MWVlNzllNTI0OWY5MiByZWxlYXNlMjctbWFpbnQKKzg2MjMzIGFjYjBhM2NjMWUxOGM3MDlkNWI2MzJiMjIxYzA0YjY4MzY4NGMxMjUgcmVsZWFzZTI3LW1haW50Cis4NjIzNCA5Zjg2MjExZjBhNDI3M2JjOTAxYjg2NTVlYzVhNTY5MDBhMmY3NWM4IHB5M2sKKzg2MjM1IDIyMjNhZmUzZWFiYTk0ODA0OTcxOWY3ZjU0NjEwOWJlMDQ2MDE2NDAgcHkzaworODYyMzYgOTZmMzBmZDU0ZTBmZWE2ZmJkYWUzZjk3YzQyMjkxNTM1YTdiNWU4OCBweTNrCis4NjIzNyBmNWRkNGE1NGQ3OWI1MTVmOWZhMjk3ZDU5OTNjODc1ZDFlYjc2ZTQwIHJlbGVhc2UzMS1tYWludAorODYyMzggYTE3YjIxYzI3YTMzODQ3NDkyNzNlNzg1NWIzNDk1ZjZiZWRkODlkYyByZWxlYXNlMjctbWFpbnQKKzg2MjM5IDVkODRmMWI3M2Q1MTAyODJkNTU5NDM2ZjQzMTEzZjNmNzE0OTk2ZWYgcHkzaworODYyNDAgZmYwNzJhYTcwYzFkYTc0YTkxYzE1ZWQwODFmYzgyNjBjMTBiOGYyMiBweTNrCis4NjI0MSBjY2Q5OWQ1NDc5ZGNlNzkxN2E5NTg1ZDBhZjcwNDQ3MDQyYjlkZDk0IHB5M2sKKzg2MjQyIGQ0M2JmMzBmYWY2ZWI4NTAwN2VlZWY3OGI5ZGZkNGNmMTAzMWY0YWEgcmVsZWFzZTMxLW1haW50Cis4NjI0MyA2MzZmZWQ4ZTc4ZDYzZjYyYWYxODIwYjYxZWI2ZjgzOWRmZmVmMDA3IHJlbGVhc2UyNy1tYWludAorODYyNDQgYjU2NDhlMTBjMjNhN2RjMWE4MmRjZGMyOGJlOWM1N2MyMjlmYzVlNiBweTNrCis4NjI0NSAyYjdlYjBlODZkMDdjZGZjNWNhNTFlMzVlY2YwNTJhMTBlYmRlZmYwIHJlbGVhc2UzMS1tYWludAorODYyNDYgZGYzNDk5MWM3ZDBlOTVhYjdjZDBhODQ5NjMzYWIxNzQwNjI3MzI5YSByZWxlYXNlMjctbWFpbnQKKzg2MjQ3IGZjNDgzNzUwNzlhNmFlNjlhMGU3NTczYzRjMTZjNzgwMDZhNzJjYmQgcHkzaworODYyNDggNjhmOGE5NWI1MGM3ZmFlMjZjM2VjMjA4MTBhNzlhNzQ0NWY2OWQxNyBweTNrCis4NjI0OSA1MTE1ZDRhMmQ4OTgyNDYwM2QwZTE4N2EzN2EwZTEzODRiM2Q3MDE4IHB5M2sKKzg2MjUwIDdjYjgwNDM1ODFiNTdmZWZmODM3NzQ0Y2E5NTNjNTY3ZDA1OGIyZmEgcmVsZWFzZTMxLW1haW50Cis4NjI1MSAzMDQ1YWRhMzkyNjkxNTc2MjdiMTJmZjIwZmE3NGYzMDk1MGVlODZjIHJlbGVhc2UyNy1tYWludAorODYyNTIgNmRkYzU3NjM0ZGU1NmVkMzMxYTZiNThhYzFhMmVmYjc4MDk2YzgyYyBweTNrCis4NjI1MyBiYTBhZWM2N2I5OWEwYThlM2ZhZTZmODZjMGZjMWFlZTE5MTA0MjM3IHB5M2sKKzg2MjU0IDg4MzhjNTZiNjk1MjUxZDI2MTY2ODIyY2YzZDE1MTlmMTlhZjZlOWEgcmVsZWFzZTI3LW1haW50Cis4NjI1NSAzYmY0MmQ5MTBkYjhiODc4NzRiYTUwZTNiZDRiNGIxNjA4ZTY1MTc0IHJlbGVhc2UyNy1tYWludAorODYyNTYgZmYxMjU3MTI4Yzc1MGU3ZDY5NGUzMWU1YzlmNDc0NmY3MjQ4NjdiZiBweTNrCis4NjI2MCBmNDU3YzQ2ZjkwOTgzNmM5YzFmZTE4YjI4YTFhNGI4YzNhOWQxNmMyIHB5M2sKKzg2MjYyIGU4NTAyNTY3ZWZhZjQ5ZTNmYWJkYWE5NzJkMzFlZGUxMmY1NjBiYmUgcHkzaworODYyNjMgYmU1NDY5ODA4Y2U5Yjg3NjNhNzI2NDI2Zjk2ZDVmYjNlODA4YjYzMSBweTNrCis4NjI2NCAzODI2YWRjYTdhM2JmNGNhNDE4ODcwN2YzNDFjYTU5YzgwMDc3M2MxIHJlbGVhc2UyNy1tYWludAorODYyNjUgNGZlYjUxZjZmZDc2YmQ5YWFjMmQ0ODlmMTQ0ODgzYWRiMDNlOGQ4ZCByZWxlYXNlMjctbWFpbnQKKzg2MjY3IDA3M2IwN2IzYmRhZWNkNTllMTM2NDNlYzEzYjkyNGZhMDczYmE2OGMgcmVsZWFzZTMxLW1haW50Cis4NjI2OCBkYjY1NzQzZDA2MmZjNWFmMjFjODY0MWYwNWU4M2FmZGMzNDM3ZGZkIHB5M2sKKzg2MjY5IDc2MmI5NDQ1MDM2NzVlNDc1NWEzZmI3MjM4ZGI5NmY3MzEwN2Q2N2YgcmVsZWFzZTMxLW1haW50Cis4NjI3MCBmMGM3ZTJiMTEyNzM5ZjNkZDg1ZWI1MmI4MThjNWRhY2NkNzA4ZWVmIHJlbGVhc2UyNy1tYWludAorODYyNzEgNDM0OGM5YjZhNzJkNmQ5NGI1NTE3NmRjYjBlZmQ5NDRhOGI1MDA2OCBweTNrCis4NjI3MiA3N2I4Yzk1ZjBjMWI1M2MwMTlhM2I0MGQ2MjRlNDg5MTJlNDc5ZDY4IHJlbGVhc2UzMS1tYWludAorODYyNzMgOTdiOTVhZTIzNDhiMmFhNzMyMGNkYzE1ODc4MDkxMDMzNDc2MDA2OSByZWxlYXNlMjctbWFpbnQKKzg2Mjc0IDdhOWRiYTg5YTdjZTg0NmI0OWIzODIwZmU0MThiNmMyNmIyYzQyMjAgcHkzaworODYyNzUgMTBiZGRhMjQyNjU0NTUwZjlhM2Q4OTYzNTMwMGYyMjYxODNkZGRiZSBweTNrCis4NjI3NiBhZjA0YWFlMTkzZmZmNjU5ZTY3YWIzNzY5MzI1MmJkNWQ4ZmQ4MDUyIHB5M2sKKzg2Mjc3IDcwNDI1ZmQ0Nzg1NjUwYmFkNGM3ZjdkZDVhNWY1YzFjNmYzZDY4ZDcgcHkzaworODYyNzggMmNjM2Q2MmYwNjgwODk5M2Y0NTVhOGFjOTI3NGIzZWMwYjhlMzI3NiByZWxlYXNlMzEtbWFpbnQKKzg2Mjc5IDE0OTlkYjk5YzRjZGNmMmRmMzIyNjQ2NzlhMDUzYjMwMzQzYTliZWIgcmVsZWFzZTI3LW1haW50Cis4NjI4MCAyODY0MjRlNzVjZDkyNGUxYTIxNjJiNTAyYWRhNGY4MTlhMTYzYWEwIHJlbGVhc2UyNy1tYWludAorODYyODEgMzdmNDNkZTY1ZDEwZTlmODJmNzYzMTg5MDdiMDY4MmJlNzZlMjcyOSBweTNrCis4NjI4MiBkMDM2MzJjMzY4ZDM3Mjg1ZjFjNmI5ZTBhNWZlNDIxN2NhZDRhMDA5IHB5M2sKKzg2MjgzIDYxYmJkNGI3NTg3NGUyMDg0YzM2ZTgzNGFhMDM0NmY5M2U3YzM3NWEgcHkzaworODYyODQgZjZiOGYzMzZlMDBhYTM3Njc4OTNmYWFkZmY1ZDgyMzYwZGM1MmRmNyBweTNrCis4NjI4NSBiNjAzZDI0OGQ0YWQ5MTEwZDBmZGVhZmI1ZjE4OTc0NWE1OTY1ZWQxIHB5M2sKKzg2Mjg2IGIxYzA2ZmE0OGNjNGIwOTM5OTFhYjQ1YjFmMGYwMTRiNWZhZGU5ZmIgcHkzaworODYyODcgMzI4OTkyYjBlYTc5YWY0ZTg3NDQ4MTRhNjIxYzFlZGIyMjA0MTBhYiByZWxlYXNlMzEtbWFpbnQKKzg2Mjg4IGRjZjE3ZmE4NDgyMTc2ZTc2ZTU5MjE5MGE3MzBlMGJkMGYxNjliYjIgcmVsZWFzZTI3LW1haW50Cis4NjI4OSAzOTc5ZTBjYzMzYzEzMzIwZGIwNDhlYzFjMDRkMDlkZjJhODM4M2IyIHB5M2sKKzg2MjkwIGFkNjQ5MGE1NmQxNThiOWI2ZmQwZWYwY2M0ZjQzNzdiY2ZhZWU1YjQgcmVsZWFzZTMxLW1haW50Cis4NjI5MSA3NDVkMGYxNmRmNzZhOGIwMTBhYjcxNjg4NWY0MGFmNzM0NmQyNzAyIHJlbGVhc2UzMS1tYWludAorODYyOTIgNmU4NDMyMTE2NjRkNzIxNjlhNTc3ZjMzYzg2ZjMyYzBjN2Y1ZGM5YiByZWxlYXNlMjctbWFpbnQKKzg2MjkzIGU0OWViYmQyYzQ5NjFlZDJhN2NlNzhhYzI0YTYyMjljZTE0MTM1ZGYgcHkzaworODYyOTQgYzA4ZjdkNmEwMjMxNjllYjkxYjY5MTc0ODY1MzBhYzIyMjRhNmIwYiByZWxlYXNlMzEtbWFpbnQKKzg2Mjk1IDUzODRlNGU0NjM3NGRhZDViYmNhMjZjM2E0OWQ5ZTc0NTI2MTg5MzcgcmVsZWFzZTI3LW1haW50Cis4NjI5NiAwNTQzYzAyZTk0MWMxMDI0YzYzMzMwYjQ3Y2QyZWE5NWZhN2ZiMDQwIHB5M2sKKzg2Mjk3IDIyNjJmNmM0NGViY2E2NjkzNGFmNDQyYmMyOGE2NTkwZjQ2OWM0NGYgcmVsZWFzZTMxLW1haW50Cis4NjI5OCA4ZjA5ZWVkY2Q3MGEwYTg5M2U4NzNmZjU0ZWQ4MDE4ZmIxNjc5MzgzIHJlbGVhc2UyNy1tYWludAorODYyOTkgZmRjYWFjMGUwMTBhMDM1OTkxNzcwZGQ5NzI5NDM4ODgzY2Y3MmYzMiBweTNrCis4NjMwMCAzMzU0MjNkNzM2YTdmZjQzYjFmN2ZiZTExZDBlYjg3MDM1OTNlMmUyIHB5M2sKKzg2MzAxIGU4ZjFlZjVmZDQyMzgzOTY3YjUzMjM4NGZlMjFmNmQwYjUyNDJmNjIgcHkzaworODYzMDIgNDE4ZGNiMWM0NWY3ZmI4MDFkZjU4ZDYwMDUzMWQ3YTkxZDc2ODdlYSBweTNrCis4NjMwMyA4MDQ3M2FkNjk3YWMzMDY3NTk3ZWNmMDA4ZDM0Y2YyNjZhMmQ3MTRhIHB5M2sKKzg2MzA0IDgxNTRkYjhhMTU5MzNkYjVkMjYwMWU4NmI2MmZmMzlkNjdlNmU5MTUgcHkzaworODYzMDUgZjgyMDhjMzM5NzhmOGY0ZjdmZDM1N2M0YTBkNWY4NjAyZTVlZmExMCBweTNrCis4NjMwNiA4OGQwNGYwMTQzYzcyNzZlZmFiN2YwOGU5NjFiZGIzOTg3OWM1Zjg3IHB5M2stY2RlY2ltYWwKKzg2MzA3IDg1NWExMGVmYjEwYTI5YWZlMWQyOTRiZmNmODlkMTc1ODJmZWJhNjIgcHkzaworODYzMDggNzZiYzcxOGZlN2M5MmE5ZTczMWEzYjY4Njc4ZTUwN2E3OTg3MDIzNyBweTNrCis4NjMwOSAzZGIxN2E0OTRkYzk0ZDI1NTZlOWZiMzRiZjE0N2JiNWYzZjc1YTBhIHB5M2sKKzg2MzEwIDNjMWJmZTU0Y2QyMDk2YTE4NmZkYTc1NGFjOGE5YWM4OTc5ZjhmYTkgcHkzaworODYzMTEgNmQxMjk0YWRmYWY0NDA5YzA3OGZhOTNmNDUzNmZlZGMzYmIzMGFjNyByZWxlYXNlMzEtbWFpbnQKKzg2MzEyIDk2YzgwZjQyYmNlNmNiOTdjMTBjNDJhMGMwYzE4MGRlZDdjNzM0ZjUgcmVsZWFzZTMxLW1haW50Cis4NjMxMyBkNTViN2QwYmM5NzM3ZmMwNmYxNGRjMTdlNjA0MTdkYWQ1NzM1OWEwIHB5M2sKKzg2MzE0IDA3NDUzM2E3NTk2MmUwYTIwZDBjNjFkNjAxZGI3ZmU5NGI1ZTFjZWQgcmVsZWFzZTI3LW1haW50Cis4NjMxNSAxZmZiZDY3NTNhMTU0MzdhZDQwNWRmY2RjZDRmMGY4N2QyYjExZTFjIHB5M2sKKzg2MzE2IDI5NDhkNWZiMWViZWI1Zjk4YTE5MGM5M2JmNzczODdlNDQwMGI2ZWUgcHkzaworODYzMTcgMmQ2ODI0ODg0NDM1YjdiNzNiNjI4NmNiZmI0MDk2ZTFiMTFkYjE0MSByZWxlYXNlMjctbWFpbnQKKzg2MzE4IGE4YWFjZGI0NTIwZTE2ZThjMWY5ZDVhMjFhZGNlYmYzNTVkZDViMGYgcHkzay1jZGVjaW1hbAorODYzMTkgYjBkZTBjZThhNzI2NGI0OGRiODMwYjljZGQ1NmEyNmYxZGYyZTUyNyBweTNrLWNkZWNpbWFsCis4NjMyMCA4Mzc4ZWI4MDc3NDZiYjFlMjdjNmMzMjliZmI4MzdlNDBiMWI0NTY5IHB5M2stY2RlY2ltYWwKKzg2MzIxIDE2OThiMGY2NDBiNjRlNWUyNDAzMGIyZDYxZGRhZmNhODYzNTM4ZWMgcHkzay1jZGVjaW1hbAorODYzMjIgY2EyYjkzN2UxYThkMTI2NWVmM2M2OTFmOTExNTk5ZGQwY2VkZjdhMiBweTNrLWNkZWNpbWFsCis4NjMyMyAyYjFmODRhNGFkMzNjMTVmNWRhMmY4ZWRmMDM0ODI0YjJiMDc1MDRhIHB5M2stY2RlY2ltYWwKKzg2MzI0IDA3MDM2ODE3NWIyNDljNTc0ZTU1Njk1NmY0YjEzZWFkMDc1Mjc1ODcgcHkzaworODYzMjUgM2JkNzMxMTNlODEwN2FlNWEwZTcxMGE0YzFlMTY0ODViNzJhYThmMiBweTNrLWNkZWNpbWFsCis4NjMyNiA0MjcwODBmMmFhYjVlZDM1YTNmMjMxNmY5M2I5NzkyZWNhNDllZGM2IHB5M2sKKzg2MzI3IDNmMTAzNGI0MzQ3ODNjNDAyMGM3MDVjZWRjNzkwMzAxZjM1YjAxZWMgcHkzaworODYzMjggZjNjNTMzODU3ZmFiYmI3OTZkMzNjN2MzODcxNjU2MjdhNzFhN2UzMyByZWxlYXNlMzEtbWFpbnQKKzg2MzI5IDBhZDZhMGQwMTQ5YWE4MmEyNTIwZDE0MzExODEyM2IxMzQ3NzEyNDcgcmVsZWFzZTI3LW1haW50Cis4NjMzMCBkNmQ3MWQ0ZDZiNjUwNmI3NTgyYzc0YzRlODhlMzEyZTFjODkxNzM4IHB5M2stY2RlY2ltYWwKKzg2MzMxIDE4Y2JhYmE2MWZhNTY0NDNiMjAzYjE3MjQ4YTg4ZjRmZDRkYTBlOGQgcHkzay1jZGVjaW1hbAorODYzMzIgMDBiYzNhZjg5YjdjZGExNTY0ZDNhMWVkM2Y2YjU3NjFlY2QyZDBiMCBweTNrCis4NjMzMyA4YWIxZGUwODEzYjNiZjc0NjM0ZjY4ZmE3OTQ4MGY3ZTAyODFkMDUzIHB5M2sKKzg2MzM0IDc4ODAzY2YxNGE5NGFmYjNjODRkMzIyOTY5NmJjZTRlZmQwYWIwNjggcHkzay1jZGVjaW1hbAorODYzMzUgYWQ2NDhmMmI1ZTAwMDVkZjJhNjM0MmYyNzNjNmVjMDQ2NGY4MmFiNyBweTNrLWNkZWNpbWFsCis4NjMzNiA0NGNkMDQwZGRhNTY2NjI1YTk1NTE4ZDNmMTkzZmQxOGNmNjRlN2ZhIHB5M2stY2RlY2ltYWwKKzg2MzM3IDQyOGI2MTJjYjA3NmQ4Mzg4N2Q1NDM3ZDU2ZTFmYzQ5OTgyNTY3MDYgcHkzay1jZGVjaW1hbAorODYzMzggYmFiN2U3MDNlM2VhOWQxMTQ3MmIzMDRjMjRhODViYjA3NTI2NTY0YyBweTNrCis4NjMzOSA1NmI2Y2NjYTFkNGNiNWM3ZTU1YTY2NDczZTYyYWIwMjgzODdjNzBlIHB5M2sKKzg2MzQwIDkwMDgxMWY2NzA1ZDc1ZTQ0MzIwM2U2YzUxNzA1MTRiOTdiZGIwNzEgcHkzaworODYzNDEgMWI1ZjQ3ZTJlMGYwMzBmMTRhODE1ZjY5NzFmYjlkNzgzMzYyMDM2YiBweTNrCis4NjM0MiA2YTJiOTExN2Q0NzdiNzYwY2EyZDBmYjRjZDNiYmQ5MGYxNDk0YWFlIHB5M2sKKzg2MzQzIDc2YTFjNWU4ODM1MmY3M2QyY2FmNzQ2ZWVlNTAxMmU1ZDZjZjRmZjMgcHkzaworODYzNDQgZmMzYjEyZWJmYjlhMmI0M2MzZGIxZTVhZGE0ODFhM2E2YmQ0NDBjMCBweTNrCis4NjM0NSA3NWUwMmZkYmQzM2U2Y2NiMjM5M2NkZmRiOWQ1YWE2MGMxYzdhNmFmIHB5M2sKKzg2MzQ2IDMwNjMzOWMzMTc1ODY1NjEwMzg5NjZkOTViNGZlNDE1MzEyYzY0NjggcHkzaworODYzNDcgMzIzZDQzZTg5NTNhZjkxYzk1NGU5NmFhNzQ5ODFmYjdkZjI5Yzg1MiBweTNrCis4NjM0OCA5YTY2ZmViMDdhMGFjMTJhYTZhZGMwZjgwMjgyNWRjNTE1ZDczYzk5IHB5M2sKKzg2MzQ5IGIzNDdiNWNkNDExMjY5ODM2MjRiNzE5Njc2NjE3MjQxZGZkZDU2NWYgcmVsZWFzZTI3LW1haW50Cis4NjM1MCA2NDBhMDhlYzhmYTI5NGM2ZGRiMTg0ODE0YmFjODY1MTJhMDljOGE2IHB5M2sKKzg2MzUxIGI2ZGE5NzkzMGY2MzFmYWNhOTk1MmMzNGY1YTI2MTM2MmQ0ZWUyZGQgcHkzaworODYzNTIgYjQ5MzhjMzRiODAzNjBjYzdiMTQ0MjRlM2IyMzEyNWIwYTZmNjkzYyByZWxlYXNlMjctbWFpbnQKKzg2MzUzIDQ0OGFiNzUxNmMwYTA2ZDZhODkyYjFhYzVjYmExOTU2ODBlYjZiYmMgcHkzaworODYzNTQgNjQ2ZGZkYzQ4Y2E4NmYxMjkyMTA1YWVmZGNjZGY3MzQ2NmFmMzE1NCBweTNrCis4NjM1NSAxOTRmMzBkYzQ3MDM0NTk0MTVkOWZjNDVkN2RlMGRhODFhNWMxMDMzIHB5M2sKKzg2MzU2IDk0ZDBjY2I2M2I0NjRjY2ZmNjAyNGE3NDc1OGNhMzUyNzJiNzJmZmQgcHkzaworODYzNTcgNzRmYTYzYWFiM2ZkNmM3OTdkMGVkYjI2MjY2ZWQzNTk5YThmMTNlMCBweTNrCis4NjM1OCA2ZjJhOTIxZDk3MjAzMTU4OTU3ZjRkZTE2ZWQ5Y2FhOTNmMTgwYTE3IHJlbGVhc2UzMS1tYWludAorODYzNTkgNDBlYjBjOWEzZjkyM2Y5OTRlODNjOGI1NGU1YmMxZDAzYmZlYjBmNiByZWxlYXNlMjctbWFpbnQKKzg2MzYwIDg2MThkZjZlY2FkZDliNjY2OTA3N2NmNjA5ZDM2ZTdkZmEyMGVjMGUgcHkzay1jZGVjaW1hbAorODYzNjEgZmU5Y2Y1MzUxMTkwMjdiN2YxYTdlMWE0NWJiN2VkYjg3NDBjZTJhNCBweTNrLWNkZWNpbWFsCis4NjM2MiA3MzY3MmU0NDVjYzkxMzIzYTE3MDYzNzMwM2JjMDlmMWRiZWFjYjQ1IHB5M2stY2RlY2ltYWwKKzg2MzYzIDdhODQwYjZkMmYyMjQ5NzVjOWU3NzdmMzdkYjA5ZGZjYzgzMWQzYTcgcHkzay1jZGVjaW1hbAorODYzNjQgNjAwMDU5MTRkZmM3NjBhODIzMDkzZjYwMWM5MDQwNDUyZjU3ZDhlMCBweTNrCis4NjM2NSA5YzA5ODU3YmRhMGI0OWQwM2Y4ZDBkODc1MWJmYzkxZWExZGEwODMwIHB5M2sKKzg2MzY2IGFmMjZiYzA5NDk1ZTNjZTE0YmY1MjliZDE1NmM0YTlhMGE5YjM3NDEgcHkzaworODYzNjcgMzEyYWQ4Zjk4ZmUzNzE3ZTVhOGE4N2JlYWRhZDI2MDhkZjhjZTRjOCBweTNrLWNkZWNpbWFsCis4NjM2OCBlMzNmMTZjYTllY2ZkZjY2N2Y0YmY1ZjRmODVmM2Y1MWFjZmYyMWViIHB5M2stY2RlY2ltYWwKKzg2MzY5IGVlZWJiNjIyZmQwOGY4NTAyMjUwZjAzMTJlZjk0MDQ4MTM4YzVlNTQgcHkzaworODYzNzAgMGFhOGFmNzkzNTlkNWI1MGM1OTQwY2ExZDhmZTI2ZmQwYTZkNGE1YyBweTNrCis4NjM3MSA4ZjVkMmI1Mjc2MzRhOGMxZjJlMzIyY2E0NmMzMDAwNDEwODU5NWY2IHB5M2sKKzg2MzcyIGJiOWU0N2M5OTFiNDE4MmZjYjJjMDM5MTBmNTY1YzMyMzRiNmZiMTYgcHkzaworODYzNzMgNjUzNjRjNDRlMjk1OGU4ZWVjN2Q4NzNjOGZiMGYyY2RjY2M2ZjJkMiByZWxlYXNlMzEtbWFpbnQKKzg2Mzc0IGQwZmMxMDY2MTdlMmE3MDU3NDgxODQ5YjY1YjM2MTgwOTJiZTBhOGIgcHkzaworODYzNzUgYzRkY2JlNTFjMmUzMzhjZTViYjdlNjk4YTBiMzRjMjFiNTUyNDRkNSBweTNrCis4NjM3NiA5ZmE1MjQ3OGIzMmI5ZmE3ZjljYWEyMThiOTQ4M2JlMDQ0MzlhNGVmIHB5M2sKKzg2Mzc3IDU1N2JiZjZiM2Q3MGFjODIxOWZhNmMwMDU2OWJmZDY2M2MzNzJlMzEgcHkzaworODYzNzggMmRkNTE5ZTU5OWNjMjNkN2Y1YWJjOWFiMTk1YWQ4ZTI5NDFiYjhhZSBweTNrCis4NjM3OSA0OTE5NjQyNmVkMmYxNDMyMjU4NTUwOTBmYjZhMGNlNmU2OThmNTRiIHB5M2stY2RlY2ltYWwKKzg2MzgwIDE2YTQ2YjZlNzA1NDRhMTQ5OTYzMGQxYmQ2NjRlMWM4ZjEyY2FjN2EgcHkzaworODYzODEgZjAwNTAyZjU3YjI4YWU4MGQ4NGYyZTljYjY0ZWEzMjQzYjdhNjgxNiByZWxlYXNlMzEtbWFpbnQKKzg2MzgyIDZhMjgxZjA0MGJiMTM0ZjIyYzVhMTgzZWRmOWZlYmM4MjIwN2ViYzEgcmVsZWFzZTI3LW1haW50Cis4NjM4MyA1NzQyOGUzMTIzYWNjMzQxYzY2NTNmZWU3Mjc3NDFlODJlYzY2MDIwIHB5M2sKKzg2Mzg0IDFiMTZiZDJiZjZjN2QwY2FiY2MzNTgxZTNjNzQ4Mjg3OTBkYWFiMDAgcmVsZWFzZTMxLW1haW50Cis4NjM4NSBhZTkyNmVjY2RkMGVkMGNhOTAyNDFkOWJmNDE1MmM2YjdlYzE0YzA0IHJlbGVhc2UyNy1tYWludAorODYzODYgMTgxN2ExNmQxZWFiNmE5NjBkZTc3YmJlNjdiNjI2ZjQ4M2RhZTUyNSByZWxlYXNlMzEtbWFpbnQKKzg2Mzg4IGViNGEzNDdiOThjMTZjZGMzYjFmMTlhMzQzOWNmOGYzZTk2NDhmZWQgcHkzaworODYzODkgMTgxN2I3MDg4ZDhkZmVkMWQwMGQ2ZjNkMjNhMzNkNzAxNmFkYjdlMyByZWxlYXNlMjctbWFpbnQKKzg2MzkwIGY5M2ZhYmRiODdhYjQxODMxMWVlNTBmMDNiYTFjNzg1M2VkZTNkYmUgcHkzaworODYzOTEgZTAyNzU4ZTU1MmU5MjU3ODhlZDdmNGMwZmU1ZTc2MDIxYTFmNzlmYSBweTNrCis4NjM5MiA5NjFjOWU4ODIxZGQ1ZGI1NWM1ZmQ3MjI2MDE1NDcxNTMzMjg4MWFiIHJlbGVhc2UzMS1tYWludAorODYzOTMgYTViMzlkODlkY2NiNzA2MGU4OTQ1NjczOTIwYjhiMDY0NDU4YTMyOCByZWxlYXNlMjctbWFpbnQKKzg2Mzk1IDA2Zjc2ZWYyN2Y4NmMwNGIyNWFiMTc4NGVmYzlkYzljZjA4OTc0NzggcHkzaworODYzOTYgZGVhNGY3NjQxOTQwZmUzZDlhMzM4MjBmMjQ2MjExYzkzOTBkYTYzNiByZWxlYXNlMzEtbWFpbnQKKzg2Mzk3IDc0YTU4OTRiOTUxMzRmMDg5ZWY1MzUyNTlhYzJjZmIzNmMzYmI1ZGYgcmVsZWFzZTI3LW1haW50Cis4NjM5OCA4ZTZhMWNkMWY0MmJmM2Y3MjAwZTFhNGEyMTU4OGE3MzQyMDczYzE3IHJlbGVhc2UzMS1tYWludAorODYzOTkgN2NlYzBkZDM5MWQ2OWY3MzZlM2I2ZmU1M2VlZTY1ODc2ZjBiMGNiOSBweTNrCis4NjQwMSAzMWIxYWEzMDMwNmM1NjNkMDY0OTJkYTA5NWVjZDA2OGM1NjJjZWU4IHJlbGVhc2UzMS1tYWludAorODY0MDIgZTU0NmY3NjA1Y2YxMjMwYWIwZDMzMzQ2NWViNTQ0Njg2OGFmMzZjNSBweTNrCis4NjQwMyBjNWUwNDlmZDgxNzBjOGE0YWNiMzExMTRkYWYzNWE2YTFhMDg5ODIxIHB5M2sKKzg2NDA0IGFhZmNkNWUwZmFmMWJmOWVjOGM4MDBhMTM4NGJiNGVlYTg4MTJkZjQgcHkzaworODY0MDUgNjdlYjNmNTNkZWViOTI5YzgzN2U1NWQ4ZDRhM2FjMjI2NmJjZWQwZCByZWxlYXNlMzEtbWFpbnQKKzg2NDA2IDViOWVjNWFjZGFjNDI3NGFkNDRkNmFmODBhYWQ1YThlNWRhMmZhMzYgcGVwLTMxNTEKKzg2NDA3IDc3OTM3N2YzMDc3ZDllMDYxZTY0ZjdiOWM0ZDRlYjZmODYyMGEwZDQgcGVwLTMxNTEKKzg2NDA4IDcyM2VkMWI3Nzg3MWJhMjFlNTQ2NTRkZjZkZWE2NDIxNmY3MWFjNTUgcGVwLTMxNTEKKzg2NDA5IGI1MjJhYmZkMmZkZTcwMDQ0YzIwMzc4Nzc4MzgwYzdlZTg4ODE1ZDMgcHkzaworODY0MTAgOThiZDNjYTFlZDg2MzZmOTZiNTEzYmE0NzQ0MWJkYjdkYjQ1MGVhNSBweTNrCis4NjQxMSBjNjlhYTA3MjgyYTg4YWU4MmNhNjc4ZGZiNTI3OGI0MjA2YjQ3ZDllIHJlbGVhc2UzMS1tYWludAorODY0MTIgMTJkYTVmYjgxMTM0MDE4ZmY4OGU3MzBkMjYzNDBiZjhlOTIxNGYzYiByZWxlYXNlMjctbWFpbnQKKzg2NDEzIDU1NzJiODY5NjdmZjc2ZTZiMjhkNTFmMTIyNjE5NDljZmRhNjA4ZWEgcHkzaworODY0MTQgODU3ZDlmZTYwMTY5ODI2M2MzZGNiNDYxM2Q0OWI2OGMyYzYxY2IxMyBweTNrCis4NjQxNSAxNjZjN2JlNzJlNzhhNjYyNTZkZjEwNTNiN2E1YTYyMDViMzEzYzZjIHJlbGVhc2UzMS1tYWludAorODY0MTYgZGYyZWJkZGMyOGM2MzJiMjJmMmJmODRlY2YyNzA5OWJhNmM1Y2YyZSByZWxlYXNlMjctbWFpbnQKKzg2NDE3IGMzZDg1ZDJhZTFjODdhM2Y5NjllYzlhODczOWVjY2E3YTg1YzdiYzYgcHkzaworODY0MTggMWE2NTI5MGU2ZDAzNjA1YzA2MTE3OTlmZDAzMWRiZmMxZTZkNGEwZCByZWxlYXNlMjctbWFpbnQKKzg2NDE5IDUwMzA3YTc5NTQyNDUyMDM4NjhlNjMwMDQyNWE2M2I5OTA3NGJjZjQgcHkzaworODY0MjAgMGExYTRjNDQ0MzgxNjgxZGVkYmI0MTkyZDFlNjEzNWE0ZGE0YTg4YiByZWxlYXNlMzEtbWFpbnQKKzg2NDIxIGJlNTBjOTFlNmRhNTNmNDFjYzU5NGZkNjQwODEwMWNjODVhYTg3NmEgcmVsZWFzZTI3LW1haW50Cis4NjQyMiA2MmFiMzllZmUxYzRiNDk1NmE5NzhhMGNkOGIwODA5MmViNjI5ZGYwIHB5M2sKKzg2NDIzIGVjNDIxMTJjMjEwMDliYTNlNzAyYzk3OGQ4NzYzNjRiMzdmZmUxMTYgcmVsZWFzZTMxLW1haW50Cis4NjQyNCA4ZWIxYzllODE4N2JkODUwNDE0NWRmMWIwYTQ5NDQ4YWE5NWI4ZjZmIHB5M2sKKzg2NDI1IGM5ZDNlMTJiY2Q0MmU2ZTlhOGY1ZTU2NzgzOTU3MGU1MzE2MmM1ZDUgcHkzaworODY0MjcgMDUwOWVjZGZmOGFlN2M5NTg1MjIzZTE4NDljNTM0ZTg3MWFmMzRhZCBweTNrCis4NjQyOCA1NmZiMWU3NzY3NDg2MTg0MmI3MzQyOGZjMWZjMTA3NzdlYzkxMjY3IHB5M2sKKzg2NDI5IDAzMjk2MzE2YTg5MjMxYzY4ZWY2YmFhYmQ4ZjdiNDhiNzBiYWNjNWIgcHkzaworODY0MzAgMGEyN2M5ZGI5YWM3OTMzMWEyZWI2ZDg4ZGU3N2IzNDZiYTRiZmM5ZCBweTNrCis4NjQzMSA4ZDY1MTY5NDlhNzFkMDc1ODU1Y2U5MmE2Yjk2ZTU5NTQyZjQyNDY5IHB5M2sKKzg2NDMyIDEyNjEwMmJhNzQ4ZjhmM2YyZDZkYmEzN2U1ODZhOWY2ZjRmMzM5MzEgcmVsZWFzZTI3LW1haW50Cis4NjQzMyA2YWE3NzgzZWEwZTllNmEzZGM1ZTVhOWU1OTdlYmU4NTM5NDgzMzNlIHJlbGVhc2UzMS1tYWludAorODY0MzQgZDJlZjg4ZTcxYjRhYzlmNzQ0ZWM5MTdmOTI2NDVjMGQxYzA4Yzg2NiByZWxlYXNlMjctbWFpbnQKKzg2NDM1IGUyZWY0N2JjMjgxZDQ5ODMyZjQ2YWM0OTQ0YmFjNzkzY2EzODY3OTggcHkzaworODY0MzYgY2U0MTI3ZWM1ZWViN2RhZmRlYjBjMDI2NTE1NGVmMDFmY2ZlN2JiYiByZWxlYXNlMjctbWFpbnQKKzg2NDM3IGY2ZTgxM2I0OGFmM2RhY2FlN2I2MmQyMmI5MDhlZGM0ZDA4NWEyODcgcmVsZWFzZTI3LW1haW50Cis4NjQzOCAzZDU0OGI3MWQwODI4MWNlNTgyNzM0Y2YyN2ZmMDE5MzExZmFjYzBkIHB5M2sKKzg2NDM5IGMyMWFlZjNmZjVlMmYzN2M2ZWUxZTA0N2JhZjczMTlhMzU4NGE2YjUgcmVsZWFzZTMxLW1haW50Cis4NjQ0MCBjYTBlZGE0MDAyMTQ4MTQyNmIwYWEwMTNkYTgxN2ExNzliZTc3ZTAzIHJlbGVhc2UyNy1tYWludAorODY0NDEgNWFjZTFkYTMyNzVlOWU4MGZlM2YxNjAzYjlmYzk2N2UxMjhhNDE5NSBweTNrCis4NjQ0MiAwMzI0NjI0NzllMGJkMzJhZmU2Nzg3NDFjNDM4YWE1ZDdjZGFiMjYyIHB5M2sKKzg2NDQzIDVmZDkxN2Q0MWM5YzJkMzdkZGQzZjg5ZDhkZDlmNTFkZGI5MTZjMDkgcHkzaworODY0NDQgY2FiYzc2MTE1NDc4NDk5ZjQ0MGRlN2RkODIyZjBlY2E0YWU3ZmE2NSBweTNrCis4NjQ0NSBhODNkOTg4OGEwZDlhYmEwN2QwNDZhZmJmYmE5YWExNjEwNTAwMzg2IHB5M2sKKzg2NDQ2IGQxMmI5OTM2MjlhMTY3ODE5YTNhOWI4NGMzYzMwMTIxOGYzZDk1ZjYgcHkzaworODY0NDcgNmJkZDMyY2I1NWE5YTJmMGZjODRhODIzZTc1MzdmMDBkODI4Y2UwZCByZWxlYXNlMzEtbWFpbnQKKzg2NDQ4IDRjNGZlNzEzOWM2OGUyMWJiZmE0ODIxMzRmNTQzNThhMzZkZDY0YjAgcHkzaworODY0NDkgYjExYTg0ZGU0NDkyNWRjYjk2MjdlMWNjMTI1OWIwNzYxNzZhNjZjOCBweTNrCis4NjQ1MCBjNmIyZjQxNzgzMGVhYjQ1NjVkOGJiZTc4NTMxMzY1MGE4YjZjNjY0IHB5M2sKKzg2NDUxIGQ5MmE1Yjg1MGY1ZTU2ODA4YmVkYzAxNzIzOTA2ZWQ2NGM1ZTZlMmUgcHkzaworODY0NTIgZDllNmI4YTc3MDcwNTJiZDQwOWVkNDZmODc0Njc1NmVmNTM1OWQxMiBweTNrCis4NjQ1MyBkMThlOWQ3MWYzNjlkODIxMWY2YWM4NzI1MmM2ZDMyMTFmOWJkMDlmIHJlbGVhc2UzMS1tYWludAorODY0NTQgZDVlZTk2ZTdhY2ViYjNmYjUyMGFiMzgzODE5YTRmZDEwYzZhNDU3YiByZWxlYXNlMzEtbWFpbnQKKzg2NDU1IDYzZDlmMDBmZWEwNzMwYzFjNDM3YTUwZjY0YTQyYjc3OTJiZGNiZmIgcmVsZWFzZTI3LW1haW50Cis4NjQ1NiA0ZDQ1YTRhZjMyYTk2ZjcxOGMxM2Y3OTI3NDJlMjYzMDEzM2JjM2FhIHJlbGVhc2UyNy1tYWludAorODY0NTkgNTAyMmU1YjczYWQxOTdjMTY2NzY1Y2U3YzBhMjA0NjVhNTQxYzM3MiByZWxlYXNlMjctbWFpbnQKKzg2NDYwIGNlMzg4ZmIxYmUwMWY5MjE5YjVmODQwNjZjOTk1MzFlMWMzNGQyMjMgcmVsZWFzZTMxLW1haW50Cis4NjQ2MSAwZjM5ODE4OGM3ZjYwNjEwMDI0OWJkMGY5M2M0YmU1NDU2YTg5MzI3IHJlbGVhc2UzMS1tYWludAorODY0NjIgYjdkMDJhZTQ1ZDE1MzUxNzQ4Yzg0ZjU4OGNhZmQ5ZjJlODBiMGRlZiByZWxlYXNlMjctbWFpbnQKKzg2NDYzIGZjYWJlNDdmZTFkZTUwNGYwM2ViY2Y2ZWFjZDQzMjk3YWI5NzZjNzAgcHkzaworODY0NjUgMjRmYzhjODUyZDEzYTQ3NjU2NTFiZTc2ODg2MjI4Yjc5Y2U1ODJjNSByZWxlYXNlMzEtbWFpbnQKKzg2NDY2IGI0NWVhYmM3YzAwNDZjNTE3YzQxNGIxZDliMGFkNzg4NDcwNmQ3YTAgcmVsZWFzZTI3LW1haW50Cis4NjQ2NyBiYTAxNDU0M2VkMmMyMzVjNjY0ZmVhNGEyYTc1N2NjOTUxMGU5NDYxIHB5M2sKKzg2NDY4IDY4MzMyNzEzNzM2NTE0Njk4Mjc5ZGIyMTRiZTYzODBlNGEwOGMxYWEgcHkzay1jZGVjaW1hbAorODY0NjkgNjI4OTU5ZmI0MGMzMzlhNjkyMWZlYjYzNzQ2NTMyNjk2NTI4NmNhNyBweTNrLWNkZWNpbWFsCis4NjQ3MCBlNDVkMGJiNzgwZGNiM2NmMjBhYWZkMjJkMTE0N2NlZjNmNTBmYjc1IHB5M2stY2RlY2ltYWwKKzg2NDcxIGY3MjNhYTE1N2E4MmQ5NzY3Mjg5ZTg2MjU0NjhmMmM0OThlNmIzYzkgcHkzay1jZGVjaW1hbAorODY0NzIgZGEwM2M2NTA1MjQwZWFlYmUyMTkwZjgwNTRiOWFhOTVkNjNiZTY2OCBweTNrLWNkZWNpbWFsCis4NjQ3MyA2OWM5MTMxYWEzMjI0ZTc2N2Q4ZDc2MjE2ZDlmMjQ3YjBiNWFlOTI3IHB5M2stY2RlY2ltYWwKKzg2NDc0IDMzNTgyNzEwZTAxNDFmZWMwNGE5YzZiOGMzNmJiYmYzODM4ZjI0NjYgcmVsZWFzZTMxLW1haW50Cis4NjQ3NyA5OGM4ZTc5M2MwYjNkY2NlZmE0ZTViZTBiZjE4NmI0YWI4YjRkMDllIHB5M2stY2RlY2ltYWwKKzg2NDc4IDBkZjZhYzYyMjcyYmE5NWQyMmIzZTVjODI3NzZlMTc2MDQ4ZDJmM2MgcHkzaworODY0NzkgNGI4Y2VkNWZlZmI3NDZiMzgzM2I2ODlkZGI3OWY2YzU3YTM5N2FiMiBweTNrCis4NjQ4MCAzNDYyN2RjYTIxOTZlZDhjMzIzNjNhOWVhYTBlOTA4Y2E3MGZiZDBkIHB5M2sKKzg2NDgxIDUyZmU2MDIxNmU4OTMyMzIyMTdhZGI5NzM4MWQyYzJjMjk4MTIwZDAgcmVsZWFzZTMxLW1haW50Cis4NjQ4NCBhZTY2MTBjYTkwYTE5Y2Y2ODMxOWMxMGY1NTI0OWNjOTg5MGMzZWY3IHB5M2sKKzg2NDg1IDU1YWJjMDk2NWU5ZDc2NWQzMDMzNmFjYTI5YjIwYWRiNWFkZDBmMzIgcHkzaworODY0ODYgYmIxMjM3NGM4ZGM2ZTdhYzE1MTAwZjAwNzM3MDM1NzYxNTFiZGQ0OSBweTNrCis4NjQ4NyBjNGZlNGIxMzAwZDU3ODk1MzE1MGRkZjFiNzNhNGZjMjc2OWMzYWEwIHB5M2sKKzg2NDg4IGVmMWRiN2Y1YzhhOWYyMTA1NWIzZjM4OTdjYmRiZWI0OWFmNDdmMGMgcHkzaworODY0ODkgZmY2YjJiZjc1ZDgxMjY3MWFkY2I3NTllMDU5YmQxMzkxOGM2NmEyZCByZWxlYXNlMzEtbWFpbnQKKzg2NDkwIDQ2NzlmYmRmYzgxN2Y2NmIxNWE2MzBjYjQ2ZGQxY2YxZTkwM2RlMjIgcmVsZWFzZTI3LW1haW50Cis4NjQ5MSA1ODZhOTJjZjRjYzdmNDczNThhYjk5OGM5NDlkMDYyZWY3NTJjOThlIHB5M2sKKzg2NDkyIGM5ZmIzMGZkMWYwYTVjYWZkMjJlMjZhYTRhMTkxZmQzMDcyZGU4NzAgcHkzaworODY0OTMgMGQxYjY2MjMwMjQ3YzU1Y2UyOGJhZjA0MzQ4MDEwMGY5YTQ3MDRmMyBweTNrCis4NjQ5NSA1MmJmNzlmZDZkNmM2ZjRiNmE2MjliMzJhMjQ4OGNlY2YyYzJlNDVmIHB5M2stY2RlY2ltYWwKKzg2NDk2IGQ1NGM4ZjE2YzUxYzJiZjVmZmY0MmYyMjUzYzI4MzRlZTJhNWE0ZjAgcHkzay1jZGVjaW1hbAorODY0OTcgYmQ2OGNlZjRmMWVlMDk4OGRlMzk5ZGRkYzgzM2I2OWQzMjgyYzc2OSBweTNrLWNkZWNpbWFsCis4NjQ5OCA3ODI2ZDkwN2I3NjViZDNlMjY2ODE0MzRkNzJhNmVkYjQ3ZWU1MTFkIHB5M2sKKzg2NDk5IGQ4Y2M5NWQ3ZGU2MmExZmJlNWViZmU2N2E1MzVkMzBiMDU3N2YwODMgcHkzaworODY1MDAgNzVhODJmZTI3NGE3Yzg2ZmU3YTU2NjJhZTIzNDgwMDIxNDdiYTkxNiBweTNrCis4NjUwMSAzNzkwMjk3MTRlMjQ1OTg5NzEwNmEyMzU2NmNiODA4NWNkODdlMDNhIHB5M2sKKzg2NTAyIDk0YmJjZWNkOTU4MjU3ZGIwYTFkMjMwNWYzNzA1ZjA2ODQyYzFlZWQgcmVsZWFzZTMxLW1haW50Cis4NjUwMyA1MmU1MTk5YjY1MTMzZTA1NjNjYjAxYzI3MTQ1ZGE0MDI0MTRhYTEzIHJlbGVhc2UyNy1tYWludAorODY1MDQgYjQxNDA0YTNmN2Q0MTliMWFmMjRjNGM0ODc2YzhjNjY0NGIxZjM2NSBweTNrCis4NjUwNSA2NmU4ZDM1ZDcxZmRlYWZiNzgxYTkyOTU3ZTFhMTBiZDNjZjgzOWM3IHJlbGVhc2UzMS1tYWludAorODY1MDYgY2RjMzlmNmJlYmYxMGJiZGY3NTUyZGUxMjZhMjQ2ZTkyMDQ2OTY2MyBweTNrCis4NjUwNyBhZjEzZmI2ZmIzZGY3ZTRhNmQ5ZjViZGI2MTliZGZhY2JkOTJkYjQ0IHB5M2sKKzg2NTA4IDE1YmQ1MGVlMmM0YzNlOTg2OGFjYzljNmM2NTMwMWJlYWYxNDRiZmYgcHkzaworODY1MDkgODA1YzI4ZGQ2N2IzZTIxYjA3NzI4MWU0YzliNTI2MzlmNDhmNzdkNiBweTNrCis4NjUxMCA0ODNiYmViYzU3YmZmYjVmNjk0MjFmZGZhNGFjMmFiNjc5ZTcyMmI0IHB5M2sKKzg2NTExIGY5ZmI5MmVhNDg1MDI5MjgwNzg0N2YwMWE4NWVjYmIzNDY3NDk5M2QgcHkzaworODY1MTIgZTEwNWU2YWM4NTM2NTE0ZDY5MzYzOGNhM2FjZTQ5Y2E2NTQ0NTIwZCByZWxlYXNlMjctbWFpbnQKKzg2NTEzIDI3ZTMyZDUyMDA1NTYwODk3NTI1Mzk2ZGU2NmVlMjE2MjFlMGFjYmMgcHkzaworODY1MTQgNWJjNDYzYjA0YzgzMzNkMzFmNzRhNmYzNTA4MjVlYzU3ZTk2MWU1NiBweTNrCis4NjUxNSAwMTk0MjFhODllZjU5ZGMwYjE2ZmE2OTNkNDhkYzBlNGZjNTFiMTQ5IHJlbGVhc2UzMS1tYWludAorODY1MTYgOGI2ZmFlYTMwNTczNDBkNTZmZWY5ZTU0ZGM4NzliZGI5NWI0NWRjMyBweTNrCis4NjUxNyAyOTc4MTYwZjQ5MTQ5NWJiMTM1MmEwYTAwZDIwZGFiYWY0MTE2NmU0IHB5M2sKKzg2NTE4IDgyYjE2MWZhMjgxODQxMjRkOTY3ZWNlYmJjYjEzOTViNTcwMTJlMmUgcHkzay1jZGVjaW1hbAorODY1MTkgZjBkZGM5MWJhZWMwNGE0NzI5ZmI0YzdlMzQ1ODczNThiMThiZjcwNyBweTNrLWNkZWNpbWFsCis4NjUyMCBiYjI3NjkzODljNTMxNDczZTBlOWM4YzE0N2ZkOWRiYzYyYTkxZmY5IHB5M2sKKzg2NTIxIDM3OGQ0ZjRlOWNiNTBkOGZkMjI3OTRkZGIyYzQ5OWVhNDRlMDcyNTIgcHkzaworODY1MjIgZmI3ZGRmMWQzNTk0MDI5MjcwM2U3MDFkZTg2N2E1YzFmNTAxODQ2NCByZWxlYXNlMzEtbWFpbnQKKzg2NTIzIDkzMmEzZmZhNGU1NjExZWU5NzA2YTJiMTZiMWY3YTQxZTJhNmVhNmMgcHkzaworODY1MjQgYTAxOWJiNGZmYjUwZTU1NzU2OWQ5YTJhNmVlOGIxY2U1YTQ0MWM5ZSByZWxlYXNlMzEtbWFpbnQKKzg2NTI1IDFkYWE0MGI0MTIxMTcyNjhlNGQyMDQyNWUwYmE3ZWJmOTA2ZTE2OWQgcHkzaworODY1MjYgYWUzMTVhN2Y2MmQyNzgxMWYzZDM3OTExYTNjMTcwMTA5ZGNjNTkxNyBweTNrCis4NjUyNyA2N2FiNzQwMmUwZGVjZGViM2FmNDMzMmU2ZTE2MjdhNzZkZjU2MTM1IHJlbGVhc2UzMS1tYWludAorODY1MjggMjdjNTQ1M2ExNDdmNTExY2MyOGUzODkwNzQyZDVhNDMxYjNiOTYwNiBweTNrCis4NjUyOSBiODQyMGU3Njc2MzhlNTYyNmU0OTUzOTY2OGVmZTAyNTkwZDdkNjM1IHJlbGVhc2UzMS1tYWludAorODY1MzAgMGNjYTczYjBhNWJmMDA4Nzc3ZWY5NDU5NjEyMDNmZjA0ZWRhYjEzYyBweTNrCis4NjUzMyBhMWRhODI0M2I2M2U2YWMyN2QwMjY3N2QwNGQ5ZTU4MTViNTJhZWNhIHB5M2sKKzg2NTM0IDQyMDMwMTQwMDQwM2YwZTIzOWE3YTc3MjljNjQ3ZWE5N2Y2OTc1ODQgcmVsZWFzZTMxLW1haW50Cis4NjUzNSBlOTgzZWIyMjI5ZGZkYTBlN2NjYzE0MDdjYjVkZjVlMDY2MzhlYWZkIHB5M2sKKzg2NTM2IDRiM2E1NTAyMDAyZDIxODkwMGZlOTcxNDFlNjY5MWZjY2Y5ZDVlNDIgcmVsZWFzZTI3LW1haW50Cis4NjUzNyBkOWM4OTA3MjA0NGU0OGQ3NWJkNDg5MWE5NjQxNTE1Yjg1YWI3ZmUwIHB5M2sKKzg2NTM4IGUzNzM0NGE4ZjBjOTFjMzk0MTI3MjdiYWZkNTY4OTc0N2I0OGMzMTAgcHkzaworODY1MzkgMzUwODk4ZTA5NWFhNmZiY2YwNWVmOWJiOGRjNjQzNDYxODgwY2Q0NSByZWxlYXNlMzEtbWFpbnQKKzg2NTQwIGI5YmU0NWY0MzNiOTJkYjg1MzAwZTAzOTMyMGQwNDkzOTJlMmMzMDggcHkzaworODY1NDEgNTFmNzJjNWZlMjhlNGJmMWFjODZjODA5Y2Q0MTk2OGIyNzRmNzhmYiByZWxlYXNlMzEtbWFpbnQKKzg2NTQyIGQ0ZjVlMjdlZDE4NmI2ZGIzNmFkZWM3YmJiZGQwYzg4ZjIxMWIzMWEgcHkzaworODY1NDMgNDU3MmQyOGRiYWM3MzNhM2Q3MTFmYTQ3ZGJhYzM5ZjgxYWE0OTc2YiByZWxlYXNlMzEtbWFpbnQKKzg2NTQ0IGNkZGNiZTNiZjU3YTJlODM3OTdjY2Q1NDIxNjc4NDE2NjIyZTE4YTYgcHkzaworODY1NDUgYzY0ZWQ2ZGE0OGI5YWIzOGI1OTI2MzgzZDAwZjA1YWNiMjA0N2EzOSBweTNrCis4NjU0NiBkMjJhYTVhZTc3NjI1Zjc2OWU3OWQ5NjYwNTk2NGEwMzYyNDQ1NzRjIHJlbGVhc2UzMS1tYWludAorODY1NDcgNWVkMzdjMmMwNTc0MWRlZTlhYjEwZjY5OGJhNTYyNDQyYWNkYmJlZSBweTNrCis4NjU0OCBlOWFjM2YzMTExOTk1NzgxZmI5NTYxYWI1YjFiY2YwY2Q4OTZhMWQwIHB5M2sKKzg2NTQ5IDg0YTMwNWUyZTU0ODg5MzE3NGM2YTUzMGIwMzkxMDM4ZWM0ZjQzODAgcHkzaworODY1NTAgNGI0YzcyMTMyYWI2ZWIyYjM1Y2RiYTlhZWU5ZTdjM2FhZDAxMjY2ZCBweTNrCis4NjU1MSBlNTMwZmM3NjgyYmYyOTY0YmE2OTUwNDMxYjg3NDRmZmJkYWViMTI0IHB5M2sKKzg2NTUyIDQwOTcwZTg5ZTYwYWJhMzlmNDc1MjU0MzUzM2U2MDcxOTNjODBkYzAgcHkzaworODY1NTMgODI1ZTQ4MGM5MzBkYTEwMzFlYzc5MTdkMDljNDRmMDEyMzlhYjJiNiBweTNrCis4NjU1NCBmMDc5NjQzOTE1YjUzZTljZjAxOGY2MzgzYWY5Mzg4N2I4ZjdjOTJmIHJlbGVhc2UyNy1tYWludAorODY1NTUgMjQ1ZjZjYTNiMjMzMGZlYjRhMjc4MWJkYzQyNzYwYjJhOTE4ZGM1NCBweTNrCis4NjU1NiA1M2RkNzAwYTM1YjZmMmZlNjc3MDA3OTg0MTExZWRlYzIxZWFkNmU3IHJlbGVhc2UyNy1tYWludAorODY1NTcgZGRiM2JjOGU2OTkwZGY0ZjFhNjE1NjRkMWZhYmJmMzMxNzIzNGZlMyByZWxlYXNlMzEtbWFpbnQKKzg2NTU4IDE5YjcxMWE3N2VmZjFiNDM3ZDY2NDY0YjAwZmVjOTA5NDgxYWJjMmIgcmVsZWFzZTI3LW1haW50Cis4NjU1OSAyZGQ1MzkyNWYwMDcxZGQ2NWU4ZTEzMzA3YzQ4MjAxZDcyZDI1MWVjIHJlbGVhc2UyNy1tYWludAorODY1NjAgNWQ1NWM1YmI4YWIxYzQwNTRkNzY0MDYyMWFmMWVlNDJlZTQyNWY4ZSByZWxlYXNlMzEtbWFpbnQKKzg2NTYxIGI0NmJjZTg3ZDJhZjAxZTQ1ODk4MjRkOWZmOTJkMzM5MTc4MmNhN2QgcHkzaworODY1NjIgZGViYzc2NjQxOTEyMmFmNjA4YTc2YTU3MDg4NTBhOTk0MWJmZjY4ZiBweTNrCis4NjU2NCA0MGIwYzY5YmIyYmQ3NTA2ZjU4ZGU4YzllOTAwYzMwOTE3MmNhMDIxIHB5M2sKKzg2NTY1IGMyMGFkZTYzZjNkYmNhMWI4YTI3ODI0ZmJlYzYwNjExN2M3Y2I2NTggcHkzaworODY1NjYgNGVkNjEwMWY4YWIyNTU1NDNjYjc1Y2ZjYzAzNWQ5Y2Y3NjY5NGI0OSBweTNrCis4NjU2NyA3ZjMyYzVmNTZkMWExMThkN2UwMzcwMjkzZjVkYTJmNWFjNDA4OTcyIHB5M2sKKzg2NTY4IGExOTM2ZmE2MzU4MGQ2MmM5MzFmNTIzMDQ5ODUyODk4OTlmMTg1ZTcgcmVsZWFzZTMxLW1haW50Cis4NjU2OSA1OWU1NmI4MmU2Y2IyY2ZiNTk1MzI5N2U1YjEyNWExZGQzODc5MjNlIHJlbGVhc2UyNy1tYWludAorODY1NzAgNGUyZGE1MjdmNWIxZGIxYWZlMTg0ODFjYTZmNWFhMzZjZWY0YTUwZiBweTNrCis4NjU3MSBhZWY4ZjE4NTBkMjRkNzBkYmUyMjE5N2JlMDc1M2Q5MzE5MTY4NmZmIHB5M2sKKzg2NTcyIDc4YTM4MGQ1N2ZlYTE5NGFjMzI0ZGY5ODViYWE5YTcwMWZhNThhNDMgcHkzaworODY1NzMgNTFlMWNiZGQ4ZmQyODU2ZGZlYTNiNjQ4MGU0Y2M3YjU4YTNjM2ViZCBweTNrCis4NjU3NCAyYWU0ZWVkNGEzYjM3ODdlODQ5YWZjOGZjZDZjNmYwNDU3ODU3YTcxIHB5M2sKKzg2NTc1IDgzOGY2OTQ4ZGViOGI2ZjgwNTY4ZmQ4OWU3MTAwZjJlMTM2YmFiMjAgcHkzaworODY1NzYgM2QyZjU1Y2NkNjYwZWM2MTUzNWFiNjRjZGQzZmE2YjE3OGQ5N2NiYSBweTNrCis4NjU3NyA4MGI0OGEzYTI0NzM0YzUzODhmMTg4MWJhNzU4ZTEyNTFjYjk3MmUyIHB5M2sKKzg2NTc4IGQ1NzE4MWFjYWY4YzQzZDY0M2EzOGVmZGIxNDc5YTcyN2NjMzI3MzggcHkzaworODY1NzkgMWVmNDY1MWZlZWY4OWI4MDJhY2Q3M2U1M2MzOTBiMTJiZDVhMTM4NiBweTNrCis4NjU4MCA0MWQ1OGJlYzNlMDhiNDVhMzgwMjQ0NTMzZWQ5OWU4NTZhNzc5Yzg0IHB5M2sKKzg2NTgxIDRlNTEyYTk0OWI2MGMwNDgwMTU3NDdjNTg0Mjk2Zjk4NGVhYWU5NjAgcmVsZWFzZTMxLW1haW50Cis4NjU4MiBhN2MyMjEwN2FlY2QwNDU3MmJmMDRjMzg0Y2MwZWYxNjA4NjA0OTgxIHJlbGVhc2UyNy1tYWludAorODY1ODMgNjZkNDBiNmEyYmIxYWQ4MGRiZjhkNDUyYzY2NTJlNTljOTg0ZWU1NiBweTNrCis4NjU4NCAzYTBlNzAwMGRjOGY5ZDcwOGFhNWVhYjUxNjFkNjQ3YjcxMWJmYzNlIHB5M2sKKzg2NTg1IGVhODM1NWNkZGQ5ZjgxOTdiZjg1Nzg3MjMwNGM1YjcyMjA1OTMxYjQgcHkzaworODY1ODYgYmM5ZGM3ZTdmMzczZGFjNmQ1NTE2Y2I4MjRkYjQ5YjYzMDg4ZTUxOSByZWxlYXNlMjctbWFpbnQKKzg2NTg3IDNjOWIxYzA1YmE5ZWM1N2JkNGMxYTljMzk3YmM4OTJjOWYwNGI2ODEgcHkzaworODY1ODggN2NkYmRiZjM0ODBiOGYwMmI5ZDA5N2Y4YTBkZTVhMjU2ZDA4MmJkOCByZWxlYXNlMzEtbWFpbnQKKzg2NTg5IGM0MDRjMmEzNDZhNTg0NGI1YTk1OGRiMDJlMzY3MDBjNDA3MGY3M2YgcmVsZWFzZTI3LW1haW50Cis4NjU5MCA2MzFkODQ0YmJjNDU5MzJkNTg4ZjU0YjY3Yjk0YmZkZTZkNTM3MzhiIHJlbGVhc2UyNy1tYWludAorODY1OTEgOTY1Zjg1OWU2MGFmZjkxNzY4ZWY2ZDYzMTdjZjljYjczYmM3MDgzNiByZWxlYXNlMjctbWFpbnQKKzg2NTkyIDUwNzUxODIyZjYyMjMwNjY1YWExZmM0OWIyN2MzNWZhYjA2ODIyMGEgcHkzaworODY1OTMgYzA2ZWQyNWU2OWI4MzMyN2Q1YjVjOWRhYjU4YzRjYzEyYzc2M2M0YSBweTNrCis4NjU5NCA0ZjI5YWE4ZjlmNTRiMWEyNWQ2OWI0MGZlZTkxZjI4YjljNTMwNGY0IHB5M2sKKzg2NTk1IDQzZTUwYmI5MjNhOTZlZWFhNThlMTljOTkwZjk0NjU0MWU5ZmY1MjYgcHkzaworODY1OTYgOWZlNzZjMjZlYTlmZTdiZjNiZWIzNGZkZDEyOTljYjE4MGVjNmVhOCBweTNrCis4NjU5NyBkZWRmNzE5YjI2YTM3NGQyOTI0YTJiMDBhNmQzN2IyNGRhOWVjNjI5IHBlcC0wMzg0Cis4NjU5OCAxMjkzZjgxOWNlMzY2MjJlNGFjMzc2NTgzMzRkNWIyMDVjMzQ5ODk0IHB5M2sKKzg2NTk5IDUzYmUxYTY3ZTk2NGFlY2MzOTM5NGFiNGEwZmYzMjg4MTVjZWJlODggcGVwLTAzODQKKzg2NjAwIDEzYTJhNWRlMWI3ZjZlYmM1NTMwNmM1NmM5MTU5NDA5MTk4OWJlY2IgcGVwLTAzODQKKzg2NjAxIDg2ZTNmNjMyNGU2NTAyMzUwZTFlMWJjYzY0NDM5NGE0ZmQwYTBmZjIgcHkzaworODY2MDIgNDRiMzEyMTlhZWNkMzMyZWJkMmNlYjJjOWJlMjI2NDgwZGU3Yzk1MyByZWxlYXNlMjctbWFpbnQKKzg2NjAzIDY3MWU2YmQxODExNDNkMjg0NmRhYzEyODA1YTAwMWJkYzNkY2NhYmMgcHkzaworODY2MDQgYjZkN2M1YjZmMWYyMDEzYjAxNDFmNWM1YjJlZGJmMTdjMWEzZGJjNyByZWxlYXNlMzEtbWFpbnQKKzg2NjA1IGY1ZGI1Mzc4MzkyMmQyNzY3Nzc4Mzk4OGYyYjlhYzdiNGVmNzAwMzkgcHkzaworODY2MDYgZWVkNDJkMjgzNTYyMmRmOGFhNDk0NTBiNTY3ZjQ5YjZlMDliZGEzYyByZWxlYXNlMzEtbWFpbnQKKzg2NjA3IDZlYWJmOGMxYTc1YzdlNTIzMmNkYWRmYjJiNWYxODgyNDE4ZjA1OGIgcHkzaworODY2MDggOWZlYzZhYmNhN2Q3Njc2MjI2MmVmZDY0YTY4ODRiZWFjMGY0NWU1YiBweTNrCis4NjYwOSA0YWUyZDAxMWE4MGJhNWNlYjRhNDUzZGFkZDYyZGVjNjljYzE4MmI2IHJlbGVhc2UyNy1tYWludAorODY2MTAgNTkzMDdhYTdkMmZlNjdhMDgxYWU0ZWY3MTMzNzE3YzRkODNhMmEyZCBweTNrCis4NjYxMSA0MzM1NjkzZGYyNTk3OWQ5YmY4NzUyMGJhMDc3ZTFiOWI1NjJiY2Q0IHB5M2sKKzg2NjEyIDFjZGM5YzFjNDMwZTg1YzViNjUzYWQxMjYzZDQxZjgxN2Y0MTBmM2YgcmVsZWFzZTMxLW1haW50Cis4NjYxMyA3YWVjMjM4NjgyODc3YjM5YjJjNDYyODQzMjNkNzQ4ZGFhNzdjMzY4IHJlbGVhc2UyNy1tYWludAorODY2MTQgMTBhMWMzOTk4NjRlNDYzYmQwNzQxN2IyM2UwM2FlODVmZWE2ZGM2MCBweTNrCis4NjYxNSBjZmQ1MzgzMTFiNmZhNjBmYmM5MzU4MzZhNGVhNDA3ZDllNTE5ODZjIHJlbGVhc2UzMS1tYWludAorODY2MTYgNDhmZGMyZDhmODk2ZWM3NGQ1MDc5MjYyOTg3NmY5Nzg5ZmY2NjA0NCByZWxlYXNlMjctbWFpbnQKKzg2NjE3IDdhZjE5ZTk5ZDJmODVlYjk3Y2UwZGQzYzc0NzI3MDI0NTkwNTU2YzkgcHkzaworODY2MTggMjM4Y2FhZjY4NTJiNzMzZWYwNTBkMTY2OWFmOTg3N2E3MmQxMzFkYyBweTNrCis4NjYxOSBhZGQ3ZTk3MjFmODA5NDcxMzYxZWI0YWI0YTNjNTc5ODAxOGE1MWRlIHB5M2sKKzg2NjIwIGUwMTIzNzgzMWFkMmZhZDY5YzVmZGJkMTI0YjkwNzFmMjBkOGQ1MDEgcHkzaworODY2MjEgMzk4YjIxODIxZDFiNGEwMGE0NDdmMmMzMjZiMmNlYTJiMDQ0NWMyNSBweTNrCis4NjYyMiAyNTc1MTJiOTdmODIzZDNlNzAwYWZhYmI4NzliZjAwZjkwZGQ1NzYyIHB5M2sKKzg2NjIzIDFiNDQ4ZmQ3ZTFhMjQ4YzQ5MzIxNTdhZjE0MmE4ZjI3ZjFhNmQ1OTAgcHkzaworODY2MjQgYWNkOTYyODI0ODE5MTQ4OWUwNjMxYjhhYjM5ZGE1Nzc1NmFiZmM1YiBweTNrCis4NjYyNSA0NTlhNjkwMjVkOWMxNmJkYjlhODQyNjAzMjIyODliNjI4OTg3NTQxIHB5M2sKKzg2NjI2IDYyMTgyYWJjMTE2YWJhYzU1ZThmZmQ3NmIzYzRkMTZhMmNhMGI3MjMgcHkzaworODY2MjcgMDdjYWRjMmM2NDM4Mjk5ZmUzYzRlMmRhYTFiZTZiODY5NWQ5Y2YzYiByZWxlYXNlMzEtbWFpbnQKKzg2NjI4IDgzN2FkNTg1NGZjOTNiNDBjNTE0MjkyZDBmYmJmNjkyM2MwM2U1MTggcmVsZWFzZTI3LW1haW50Cis4NjYyOSAyYmViMjUzNjkyODk3NTI2NzQzNDJjMGVhODc1ZDc5OWMwZmNlNTIxIHJlbGVhc2UzMS1tYWludAorODY2MzAgNWMwNmQzZDFiOWM5MGQ1MDM4ZjdlYjJlZDNhOGNiYmM4YzkxOTZmMCBweTNrCis4NjYzMSA1NDRiNDUzZTYwYTU4ZWVjMGU2YTQyODM0ZDcwNmNhMDNiZTFjODYyIHB5M2sKKzg2NjMyIDIwNjgyNTViNGRhMDBhMThmYzZjYmI2YWZjOGNiYjFlOTA1ZTU4NDYgcHkzaworODY2MzMgZmRmYzZkY2E4MDQ4M2IzZDEzZmNlNWNjYjZkYzE5MjQwZTQ3M2Q1MiBweTNrCis4NjYzNCBkMjlhNjdjMjY2MDBjNzY4MzRiOTBjNjE3OGY2ZjViMmM4MjUzYjA5IHB5M2sKKzg2NjM1IDlhMGMyNDAxYzZhNmUxZjAxYmNlNzk1MjEzMGZkNTUzMTk2NjEzOGUgcHkzaworODY2MzYgZjU0NzY4YTVlMmY1NWRjNmUxZTc3OTIwMjA1NDc0YmEwMDQzMDc0OCBweTNrCis4NjYzNyA2MTRjODQ2NzBjNjNkMzVhMGYyN2E4ODhkODY5ODUzOTA0OTNmZTdkIHJlbGVhc2UyNy1tYWludAorODY2MzggYzEzZjg5ODBjYTdmZGZiMzhjNDViNDA2ZjhhOTMzOTVhODc5NGRiMyBweTNrCis4NjYzOSBmOGNlYjZhZmQ3YTkxYWFjOWE3OTc5OTE1OWI5YjZkY2Y0Mzk1MzIyIHB5M2sKKzg2NjQwIDk3MTcxNTNkNTU4ZDA0OWU0YzM1MjE1NWU5OWU4NzFkYzcxOGM2ZmIgcHkzaworODY2NDEgNjFkMWVjMzA3YmIwZGI0OTFlYjZjYmIxYjIwZTJhYjdlODE2OWM3NiBweTNrCis4NjY0MiAzMjJhYTNlODI3NjhiZTNiYzdjMjg2YTg3YjVlMThiZjViNzM3NDIwIHB5M2sKKzg2NjQzIDE3OWRjNGMzNDcwZjNjZjc2ZGZiOWM5OGMyNzkxMTA3YmNhNTQ3NDMgcmVsZWFzZTMxLW1haW50Cis4NjY0NCA5NDNhODY0OTkwMGRmZjk4NTUxZWMyMjU1NTRmZjZlYTg5YTNhMjg1IHJlbGVhc2UyNy1tYWludAorODY2NDUgZWVkMzI4OGRlZDg5NWZiMmQ4OWU0YWM0ZTk5NWI1MjBkZWI3ZGU4OSBweTNrCis4NjY0NiBhNzg0NDU3ZTAwMGU1YzNjOTg1Nzk2NTIzNDQ4MmI2YzhhZWZlMjc4IHB5M2sKKzg2NjQ3IDFlZjhlOWE3NWZlZjNjNzIyMzA1ZjY0OGI3YjQ4NGVlNjQ0ODEwYjEgcHkzaworODY2NDggMjJiY2RhYzE4MWJjYTkxMWJlODAxYWM2YTQ1ZDE0ZjQ0NGRlNmQ0MCBweTNrCis4NjY0OSAxZWMwNTgwZDlkOWQ3YjY3ODlmMjlkYjg4MTI4Y2Q1ZGY3MWUzN2UwIHB5M2sKKzg2NjUwIDViYThiZmNlN2VjMWQ2ZGMwNjEzNWI0OTcxZmZiMDBkMjJjNWQwYzIgcHkzaworODY2NTEgOGJhMTZhYWJkNTY0NmI3Mjg2NTg4ZTE5YWRhYTBkZTRkMDZiZGExNSBweTNrCis4NjY1MiA0ODVkY2ZmYzg4YjQ1ZTE2ODVlYzFjZmM2ODdjZTY0Y2QwMzViMzc1IHJlbGVhc2UzMS1tYWludAorODY2NTMgZjQ3ZmNkNWI1MDFkZWMxYTgyZGIzZjhlNDQ0NTQ5NGE2YjdkZjU0ZCByZWxlYXNlMjctbWFpbnQKKzg2NjU0IDdiMTRmMWZmNjAyYmI1MDhkZDU1NDlhOTc0MTRlNzFiMzI5OWE5NzYgcHkzaworODY2NTUgYWRkOGEwM2RkZWU2ZTM1ZDQ3NmM1ZTY2OTY4MmJjNDRmODM1YmJlNCBweTNrCis4NjY1NiAwN2E0ODcwZjYwYTA3ZjBmNTNjZDVlMGYxN2Y0ODUxYjMyNTcyNjk2IHJlbGVhc2UzMS1tYWludAorODY2NTcgYTA4MTYyNWRkNmM2MjdlYjM1NDdmZjY1MDUwZDc0ZTJkZjA4YmEwYSByZWxlYXNlMjctbWFpbnQKKzg2NjU4IGZmYzM3MmM4Y2ZhMGM3NjNlM2M0NWYzMzJiNGQxZjgwODgxMzJhYjIgcmVsZWFzZTMxLW1haW50Cis4NjY1OSA1ZDExMmM3ODdkNmU5NGYwZDE3ZmI0ODdkMjMyY2Q5ZDE2ZGJiMmIyIHJlbGVhc2UyNy1tYWludAorODY2NjAgZjAyZjNiMzNkZDhmOTFmNDJiMWM3MDMwMzAyYTgyNTU4YjBkNDVkNCBweTNrCis4NjY2MSA1YWJmYzFjYzIyZDExZjNjOGNhMWI2YTA4YmNjNzI3YWJkN2U1MmZiIHB5M2sKKzg2NjYyIDY2ZTBmNWM2NTE1ODY4OWUzY2E2MWRlZWVlNTBmNjk0ZTIwZjM0NDggcHkzaworODY2NjMgYzVjYTFhOWIxZmRmNWYyYzRmN2FkZmE4YzhlMWVmODNkNGU4NTllNyByZWxlYXNlMzEtbWFpbnQKKzg2NjY0IDBiMjcxNmY4YWZiNTkwNGQ0MjgyOWI0OTliMTdiN2Y1NWJlMGEyNjcgcmVsZWFzZTI3LW1haW50Cis4NjY2NSAwZWZkNDI1ODlmMTcxZTM4MThhODgxZTkwNmE2Yzg3YWEyYjJjOWMwIHB5M2sKKzg2NjY2IGRjNmEyN2JmODU5MjhjYTc1ZTNiYWFiYjQwZmIxNTQzNmJjOGU3Y2IgcmVsZWFzZTMxLW1haW50Cis4NjY2NyA5YTE5MDY4YmE4YjEwZTExM2M0NGUxNDg5ZTZjZDY0ODIxMDQ3MGNmIHJlbGVhc2UyNy1tYWludAorODY2NjggMTAyZGIwY2ZmZTUxZjZjYzRjOWVmMDdkZGYzZDQ4ZmYwZjJmYTU2MSBweTNrCis4NjY2OSAzZTk1ZjA4OTIzN2E5ZTI3OTk3ZDIxZmRjMGMyZDE5MzkyOTcwMDJiIHB5M2sKKzg2NjcwIDA4MTNjMmFjZjc0MTU1MTk0ZGMwZDAwOWRhNjhiZmNiOGI3NDMzM2EgcHkzaworODY2NzEgYWRhNjdkZTY0OTE5OTcxY2FiOWJjMjI2MmMwNzNkZjUyMDBhYzk3ZCBweTNrCis4NjY3MiA1MzgyY2E5NWMzZjZjMzE2ZDhmZGJmOTZjOTAyMzA1OTQ3ZGVjMmVkIHJlbGVhc2UzMS1tYWludAorODY2NzMgZDZiNmY5OWY1YWY5ZTAxNTFhMjI4NDMxZmQxZWI0Y2ViYTQ0MmY4YiByZWxlYXNlMjctbWFpbnQKKzg2Njc0IGFhNjRkNGYxYTc5NTYxNTM1Y2FmNWIxNjcyNzM4NTQxMzRjNjhjYTcgcmVsZWFzZTMxLW1haW50Cis4NjY3NSAyZmY3NTgzMTVmYTEwYzViODg2ZGM2ZWFmMjQ4ZWU2NmUzZjUzYWMyIHJlbGVhc2UyNy1tYWludAorODY2NzYgN2I3MDUxMjgyN2NmMzk0ZDI5ZThiNWFjMWFkNjQ5Yzc0OTA2NTQ0MSBweTNrCis4NjY3NyAwYTlmZDVjOTRkYzM1OTU4OWQ0Y2ExMjJhOGI0ZmM4MTI2ODZkNWVlIHJlbGVhc2UzMS1tYWludAorODY2NzggNGMyYjJiZTcxNDU3Zjc1MGJiYzZjNzY3OTczNGExMGJiMDExMzJkNCByZWxlYXNlMjctbWFpbnQKKzg2Njc5IGM2YjdkZjFiZGY1MGU0OGI2MGRkN2ZkMjQ0NjdlNzRlYzdhNDYzOGYgcHkzaworODY2ODAgN2VlNTkwYWViMmIzNDIxMjRlZWIzNmRiMDQyMWUxMjQ5YTI1NmZmMCByZWxlYXNlMzEtbWFpbnQKKzg2NjgxIGQ5Nzc0MTIxYTZkZmRhN2Y1ZTkwYjk0NWY3ZjczNDBiZWM2ZjgzZGYgcHkzaworODY2ODIgNmYyNWNhYzI4MzZlYWQ3OTYzOWViODRlNWFjMTM5YmQxMDQ0ZGVhMiByZWxlYXNlMzEtbWFpbnQKKzg2NjgzIDRmMzU4NjZmZDhjYjEyZWE4NWVmZWM2MDZkZGJlNjNmNjY5NjRjODEgcmVsZWFzZTI3LW1haW50Cis4NjY4NCBmMTUwYjY3ODU0OGVkZjA5Yzk4MmRhZTExZDc4ODJjYzdkMDgzYjk4IHB5M2sKKzg2Njg1IDMzNjI1ODljMGMwMmFiZTIwNzViZGZiYjk1YWI0YjVlNTI5YWQxZmMgcmVsZWFzZTMxLW1haW50Cis4NjY4NiBlMGVjY2ZhOWFkNmJhMGEwNGJkYzdkNGIyNGM5ZTI1YThhMDc4N2Y3IHJlbGVhc2UyNy1tYWludAorODY2ODcgODJhYzc1M2JmNjJhOWEwZDkwMDQ3NmJlNjEyNmQ4YWJjMzVmZWI0MyBweTNrLWNkZWNpbWFsCis4NjY4OCBlODg0MDMzMWY3NzhlNzdkYmUwZGU1OTk2YjJkOWE5ZTcxYjJjOTVmIHB5M2stY2RlY2ltYWwKKzg2Njg5IGFhNGRlYWYzNDRkMTk5MDI2ZTdjMmRjYzJjMmM1YTUzNGI0NmYwZmQgcHkzaworODY2OTAgZGNhZDcwNmIzOGZjNDhiOGRlYWFkYWZmMmI5NmZlNTYzNWZkZjdiMCBweTNrCis4NjY5MSAwYzY2ODE0NmIxMjZhNmZkNDJhMTUwMDJiYWU4ZDNjOTM1OGRkNmRjIHJlbGVhc2UzMS1tYWludAorODY2OTIgOGRjYjE3NzgxZTgzMjRmZjBhYzI1NjMxYTEwYWFkZmZkYTIyMDliYiByZWxlYXNlMjctbWFpbnQKKzg2NjkzIDEyN2Y1MTY4YTc3NGY5Y2RlZjU1ZjQ2MDgxYTc1MDU1YTllNjNmMzkgcHkzaworODY2OTQgOThlMWRkZDUwNWJjMjlhZmE0YThmYzRlODE4MGEyYTZhOWQxOTA1NSBweTNrCis4NjY5NSA1OGFjNTE2MGQxYjdiYmJjZTc4ZDE1MWRlYzBlZGZiNWE2YjZkZDM5IHJlbGVhc2UzMS1tYWludAorODY2OTYgM2Y2MjM1MGVkZDJlOTM2NDY3ZTM3MGQ0NTIxNjM2NmI0M2FhMTY1NCByZWxlYXNlMjctbWFpbnQKKzg2Njk3IDQwMTA5MzAxODI4NTQ0ZjA0M2ExNDY4MDBmYTdmN2U1MGJjYzc4OGYgcHkzaworODY2OTggY2M5YzUxZjk1MjRmOWRmZTFiMzIxNmE5NDRlNjYzMDVkOWM1OWViOSByZWxlYXNlMzEtbWFpbnQKKzg2Njk5IDJjMzcwMDY1YzFiNGRlOTE1MWYwMzg0NGU1OTg1YmMwMjA0NjZkMDcgcHkzaworODY3MDAgMjYwZmYzNzkxMTVjN2I3YzQ1ZTllMGU2ZTNiODEzODEzMTc0MTA0MSBweTNrCis4NjcwMSBkY2I2MGJmMjZkY2U5OGE2MGUxODdjYjQ4NmUwNjZhMGNmMDcxOTRjIHB5M2sKKzg2NzAyIDVhNjlhNTg5YzZmMDg2OTdlZGU1ZGUzZTMzMTk1YTE0ODU1NzgwZTcgcHkzaworODY3MDMgYTczOTg4M2VlNmM1NjA2MTdmYzc0M2FhNjY1Y2VhNWU1NWRlYTk0NiByZWxlYXNlMzEtbWFpbnQKKzg2NzA0IDk1MjI4MmE1MDQ3ZmMyMWZmYWIyMjg1MWIwNDU3MTdhY2ZlZTVhY2IgcmVsZWFzZTI3LW1haW50Cis4NjcwNSAzMzAzYWJlMjlkMGIzOGQyMjY4YTE5ZTQ5YWU1NGQ5M2M3NDdlMmJmIHB5M2sKKzg2NzA2IGE0YjdhNDFkYWJkOTRjODM2MTE1YWI3MDgzOTA1ZTBkNzZlYmU5MGIgcmVsZWFzZTI3LW1haW50Cis4NjcwNyA2M2YxMTRiMDljYWZhOTIwZjQwMDRlYmIzNjAyN2ZlZmEwYjYzNGFhIHJlbGVhc2UzMS1tYWludAorODY3MDggMGNlNTc5NTFhZWM2MmE5MjMxMTQzMmUzNzU2YzI4OTdlZDRhMWM3ZiBweTNrCis4NjcxMCBjODZmMTcxMDQ2N2U3YTVkNGFjODg2MWE5YzIxZDg3Nzg5YzZmYzdiIHB5M2stdXJsbGliCis4NjcxMSA2Y2EyODkwYmFiNjc4ZGZiNWIwM2NhMzE4OGY5NmFmN2RhNWU4ZTdlIHB5M2stdXJsbGliCis4NjcxMiAwZjhjNTJlYzlmN2YxNWMxZTEzZGRmNzE5ZjE5MGJlOWUwMmM1YmY4IHB5M2stdXJsbGliCis4NjcxMyA5YWRmMzk3ZjU2ZTdiNDNjN2RhOTcxNzZlYWRkMDE5Y2Y3ZDY3M2JhIHB5M2sKKzg2NzE0IDhiNGE1MzFhZDM1MmE0NDhiOGQ3ZjlhOTNhM2E5NDExZmNmZTViZmIgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE1IDFhZTUxZDEzYzI1YjkyMzU2MDY4OTNkMTgzN2JkMzZmYTJmNWZkNjggZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE2IGJlMGY0ZDhiZmNlYWFjYTU2NDI3YTFlMjExYWRiNDYyMjU2NjU0ZGYgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzE3IDlmMjNjNWY0ODU2YzAyNDRlODc5MzY0ODA2OTNmNWIxNjIxMTJjMzIgcHkzaworODY3MTggYmFiOWMyMDdlMWNmOGFkMTZkMjMyNDRkMGRhMmMxNDNlN2RlYjQ5MSByZWxlYXNlMzEtbWFpbnQKKzg2NzE5IDE0MDRhYjA3NmI1OGY0NGM2MjNjNmYxYmFiYWY5NWEyMWIyZDdlNGYgcmVsZWFzZTI3LW1haW50Cis4NjcyMCA0MzZkYWYwOTVlODk2OGU1Y2VhYzRmOTFhZGNhZWM1OGI5ZGJiN2U3IHB5M2sKKzg2NzIxIDA4Mjg4MTRlMDNhZGRiODIwYTc1NGRiYTQyNDQxM2JjNWEyOTM1NDkgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzIyIDYxZjlkM2JmMjM0Y2YwZjkwZGY5MmIzOWU3ZmJkODZjYmM0Y2FmNWUgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzIzIDA5MjRmNDBiYjZkYzUxYzViY2Y2NjI0OGZmZWIyYTRjNDc3NWM3Y2EgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzI0IDQyNThlMjhjZjQ0MDYwYWU0M2Q5YjM5ODBiZWJiMGZhNjI5ZDBjMmMgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzI1IDY1MmJhZjIzYzM2ODZlNTIwYWVkM2QwZTdiNzdjNmU1YTRhMjQ0M2YgcHkzaworODY3MjYgMjg4OWVkNzM0MWUwN2U5ZmY5NGNhMTVjNzkzNjJhMTQ4Njg1OWE3MSByZWxlYXNlMjctbWFpbnQKKzg2NzI3IDBhMWJhYTYxOTE3MWFmMzI0ODY5ZWNiY2I2YzcxNDQwMjk4NzU5ZWMgcHkzaworODY3MjggZjNhNjFkYWZiZjZiYWQ4OGYxNWY4MWQ3ZjUzMDNhNTVkNDc0MThjMyByZWxlYXNlMjctbWFpbnQKKzg2NzI5IDRmZWQwMDY1OTgzMTQxYmEwMmFjMDY0NjI0YmNiNjdkMWJiM2M0OWYgcHkzaworODY3MzAgODNiMDUxN2QwZmM1ZTAyZjFlOWViYjU2MDYyMTc4ZDQ4YzcwZmQ3ZiBweTNrCis4NjczMSBhNzYzZWQzZDZlOGNhYTg3YWMxN2FiODIwMGU5MzdkZTVjZTkyM2YxIHB5M2sKKzg2NzMyIDgyZGEyYWJjZTcyMjBjMzQ2MzBjNWY5YzkwZjMzMjcxMWE0NDQ0ZmYgcHkzaworODY3MzMgOWNkMTAzNjQ1NWU3ZDYyODViNGMxZmIzNDNkMzIxYjFlNmM0NzczOSBweTNrCis4NjczNCAzOTVhYzZlMzE5YTg5NTliMzIxMTdmMTVhMGNjYTM3NmViMDg4MzlhIHB5M2sKKzg2NzM1IDI2ZjgwZjcyNGI0ZmYxNjkwMDY1NzFhNWYzZjQwYTBlZWViMzY3YWMgcmVsZWFzZTMxLW1haW50Cis4NjczNiAyNTMyYzRiYzAzNzNhMTY4Y2NkOGU2Nzc5YzhhZmJiZTc1NzI1MTIyIHJlbGVhc2UyNy1tYWludAorODY3MzcgZDZlOGI3ZTI1MGM2NWFjMzdlOTM5ZGQ4NzdjNzUwMGE0YTcwYjRmMCBweTNrCis4NjczOCBiNzM4MTI2OTBjNmU2NThmYmM5OWZkN2RjZDA0ZDNmN2Y4N2Q5ZDFmIHJlbGVhc2UzMS1tYWludAorODY3MzkgMjg3NzI2NWJkYjAxY2ExNWFiMTVmZjZhNzBiNWI0NThlODczZTE2YSByZWxlYXNlMjctbWFpbnQKKzg2NzQwIDk4Y2E2NTUzMjNjMDVjYjNkMWFhNzMyNmQ4ZjM3OWE2YTM1Mjc4NGIgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQxIDRkZDdlYjJkOTg1NmNlZjNmZTQxNjJlNjc0MmIzYjk5YmQ4OWY0MDAgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQyIDg1OGU4NmRiNDQyZjVhZDgxYWNiNDQ5Mzg4MThhNzNiNDQzNjQ1ZDUgZG1hbGNvbG0tYXN0LW9wdGltaXphdGlvbi1icmFuY2gKKzg2NzQzIGNlYWQwNGIzYzVlZDEzZjJmNWIzYmRjNGZmMWZiODk5Nzc0MmQzMDAgcHkzaworODY3NDQgMGNiMjY1MjY0MTlkODhiN2E0NmQ1MzVlZTM3YTU3MTY3NzhlYTJmZiBweTNrCis4Njc0NSBjNTRjNDExZDNkYTdhMTRiNmIzZTg5ZTAyNTk0MWYyZGQ2Mjg2NDA0IHB5M2sKKzg2NzQ2IDAzZDkzMzk0OGJmM2VhYThjNzljNjQ5ZGViZDU2Y2JiNmNmNTk1MTYgcHkzaworODY3NDcgNjc4ODIxMDVkZDY1NThiY2I1MGMzZjI3NzI1YWM5NzE3Y2I4ZTZlMyBweTNrCis4Njc0OCA0ZDM5NTJhMjFlMjU3NjBhMjlhMGM2OGM3NTMzMjhlYjQ2MTQ1ZTk0IHB5M2stdXJsbGliCis4Njc0OSBhZTgyYzc3MDc2OWNhZDU1ZjFmMjA2OTU4ZGI4N2M1M2Y1ZTdmZDQ0IHB5M2stdXJsbGliCis4Njc1MCAxMTc4ZTI1NDVkY2I1YzY4MmEyMDY1YzUyYjNhYjVjNDk4MmY5ZWM0IHB5M2sKKzg2NzUxIGVkZWQ2OTE0OTdiNzQ4YzNjZWI4ZWRlMGMxYjE2N2RjNzI4ZGE1NWYgcHkzaworODY3NTIgZjNkZjkzZTI2MjY3NWFjNWI5Y2U4ZDc3MWY4MDZlODk3N2Y1ZWI2NCByZWxlYXNlMzEtbWFpbnQKKzg2NzUzIDBkYTQyY2QwMTU3NjU1ZGZjZWIwY2UyMTEwNTg3OGFiZmQxZjljZTUgcmVsZWFzZTMxLW1haW50Cis4Njc1NiA0NTdjN2U3MDRlYzI5OWMzOWY2MTUyN2RmYjY2ZWEwNWQyZDFlZTkyIHB5M2stY2RlY2ltYWwKKzg2NzU3IDJkNmNkYzgxODVjYWU1NzVjZmQyM2RmYWIzZWQxMGU4MzQ5NThhMGIgcHkzay1zdGF0LW9uLXdpbmRvd3MtdjIKKzg2NzU4IDE0MGQ4YTY1NzcwNTQzM2E4MzQ1ZWM4NGMzY2ZiNWQyNTUzZDE3Y2MgcHkzaworODY3NTkgMDZkMjMwMjZmOTA0NTY5YjdlZTE1OGYyZWJjYWZlYjc4MDQxOTk4NSBweTNrCis4Njc2MCBmNTlkYmYyOGUxMmMzZjZiOWNjOGE5YTQ0NmIyMGM4MmRjMzg1NzY1IHJlbGVhc2UyNy1tYWludAorODY3NjEgZTQ4ZWQyZWY2ZDVmZmIzOTJkMWJkNzhiOTAzNjI2ODJkOTdjYmY1YSByZWxlYXNlMjctbWFpbnQKKzg2NzYyIDdhYjRmZGE3NzAzMTI3NjU1MzEyNGI4YjBkOWYyODBiN2RiOTQ1YTkgcmVsZWFzZTI3LW1haW50Cis4Njc2MyAxOTIzMjAyMGU0OTFkNzhlZjFiMDZhM2Q3YTkzZWM3OTY3NTEwZTE3IHJlbGVhc2UyNy1tYWludAorODY3NjQgOGNlOWFlNWExNTQyN2IwN2RkZmMwYTNhMTRhNjA2NGFlZjI2NWZjZiByZWxlYXNlMjctbWFpbnQKKzg2NzY1IDZjMzVhYmM3ZDBkMjE5MmUzMjEzOWQyMWJiZjk3MjVkODc5OWUxOGUgcmVsZWFzZTI3LW1haW50Cis4Njc2NiA0NWFiNTVmYTNkYzBkZjk1ODE2NGJjMDE0NDg3YjAwYTM3ZmYwMDQyIHJlbGVhc2UyNy1tYWludAorODY3NjcgNzc3NzFiMDg1ZWNhNzVkNGI3NzA1OGEzYzQ5ZGZkZTY0MWMyNjkxOSByZWxlYXNlMjctbWFpbnQKKzg2NzY4IGE4MDNmZDg0MWZkMTdjM2M0MzU4ZjI4ZDBiMWY2MmJiNThkY2M4NmQgcmVsZWFzZTI3LW1haW50Cis4Njc2OSBkNmM1NzUwMTUzYmIxMTg2NDRiZTEwNjk1OWFhMTU1MjdjYmFmMTM5IHJlbGVhc2UyNy1tYWludAorODY3NzAgMzdiMzdiNmE4OTcyYmQ2ZjA1NjhkOTFmOTU4OGJlNmVhMDdmMjU2YiByZWxlYXNlMjctbWFpbnQKKzg2NzcxIDI5NTVmMzM3OTY5ZTgxNjQ0ZjEwN2NjMmU3ODYxOWQyMGY2MDQ1OTggcmVsZWFzZTI3LW1haW50Cis4Njc3MiBlMTBmNjE4Yzk2N2FjMjkzYzZiMmExNmU1ODRhMTA4NmRiZDU5NjVlIHJlbGVhc2UyNy1tYWludAorODY3NzMgODM1YzE3NjIzOWQwMjU3YjJlNjk2NjAyMTkxMTVkZWNjZTQwZDE3NSByZWxlYXNlMjctbWFpbnQKKzg2Nzc0IGZiMmFhNDVhMWIyMmUzYjFiNWYzMzQzODQ2YTFmZTBjNTMxMjlhYjIgcmVsZWFzZTI3LW1haW50Cis4Njc3NSA4YjZhOWVjYmU5ODljMGI0YzBiN2JkZjhiYTVmOWRlNTc1ZjU5NGJmIHJlbGVhc2UyNy1tYWludAorODY3NzYgMmU1ODEyNmRiYWQwODcwM2JlMmYzM2MzOGE4N2M0MWRlNmI1NmNlNyByZWxlYXNlMjctbWFpbnQKKzg2Nzc3IDQxMzY1MTVjZGZhY2RmYzc4NDQ5OGEyYmI3YzE0ZDNhYjgyNDdiYTIgcmVsZWFzZTI3LW1haW50Cis4Njc3OCA3YzBlYjhkNTYxNDZiOWFlYWYzOTdjNGU3YzBkNGZiN2YwMTYwYTE2IHJlbGVhc2UyNy1tYWludAorODY3NzkgNzFiNzcxNTE5MzMzYTA0YjEyMzNkMWJhNWFmZGYyNjY4NDczOTVhNSByZWxlYXNlMjctbWFpbnQKKzg2NzgwIGEzNzJmYzQ4NjI4MTY2NzQxNjg0NDI4MTE1MjBkYTI5ZGM3YTE3NjEgcmVsZWFzZTMxLW1haW50Cis4Njc4MSA0NWU0OTI2OWUwZDhlZjFkZDI4MjIzZjY0OWEyZWFlN2JhNjkxMjNiIHJlbGVhc2UzMS1tYWludAorODY3ODIgZTc1OTNmZWI1YWQ1YzNmYjIyYjc0ODgxMDlmN2I3N2MzZTMwNTExZSByZWxlYXNlMzEtbWFpbnQKKzg2NzgzIGE5ZjBlYzYwNGM4YWQwODgwYmRhMTk3ZDFkYjE5ZTlhNTliZWMwMjAgcmVsZWFzZTMxLW1haW50Cis4Njc4NCAwNWVlNmY4YzAyNjBhYTViZTFlNWExZjRmNzY4OTE0NGQ1ZTlmYmRjIHJlbGVhc2UzMS1tYWludAorODY3ODUgMzliNWFmNzczZTc1OTZhYjc3NzE5YWYxM2QwNjU2OTQ3ZjU5ZGYyNyByZWxlYXNlMjctbWFpbnQKKzg2Nzg2IDliZWFkOTA5ZDhlZmVkZWM3ZjQwNjM0ZDYwMzY5YmU1NGZiNjhkYjcgcmVsZWFzZTMxLW1haW50Cis4Njc4NyA5YjM0NGJlMWJlOWE3ZTliOTAyNTRlYjRhZDJiZWM4MDc1OWFiZWU2IHJlbGVhc2UzMS1tYWludAorODY3ODggM2VlNmQwMzhhZjliNDZlODA5MzRmZTk3MGNlZTBlNjc3MTI2N2UyZiByZWxlYXNlMzEtbWFpbnQKKzg2Nzg5IDcyODE5MzdiMmQ2NWIzZDU4YmM3Y2JkNTg5YjQzNzM5NDRjNWVmZmIgcmVsZWFzZTMxLW1haW50Cis4Njc5MCA5ZDZlMjQ2NWY1OTI1NDY0ZmIwOTRkZWU1ZTE4ZWEyZDZlZDFkODI5IHJlbGVhc2UyNy1tYWludAorODY3OTEgNGVhMWM2YTRlOTJkMGZiOTk2YjQ0OTgyZTE2ODFlZjdkYTcxMmJkMiBweTNrCis4Njc5MiAyYzE2NzI4MTYyZmRkYmViNmIyZmNiMmY5ZmEyMjg3N2ZmMWYyNmExIHJlbGVhc2UyNy1tYWludAorODY3OTMgMDAwMGJiYWIwOGI0NDc2ODQ2YzAyMWU0NTk3OTIxZmQwNjUyZTNmNCByZWxlYXNlMzEtbWFpbnQKKzg2Nzk0IGIwZTk3ZGJkOThiODQzOGUxYzZlODE3NjJiNDQzYzQ4OTViNGFmMGIgcHkzaworODY3OTUgZmEwMTdiY2FlZTEwMDAzYjIzODhhMWRmMzI0MTdmZWFlYjg2NjVhOSBweTNrCis4Njc5NiA1MDg0Y2U5NDg0Mzc4NTlkNTFhMjY3NjE1MDQ2NzFhOGNjMGJjM2U0IHJlbGVhc2UzMS1tYWludAorODY3OTcgNDZmZWFlYzcyOWJkYzY3YmZiMjA0OTFmZGFjZDY2MjlmNGE3MGY5YSBweTNrCis4Njc5OCBmYjVjNDVkMzhlMmFmNTE1MGRiMjU4YzJmNTQzMzg2OTAwZDM5YjkyIHB5M2sKKzg2Nzk5IGFjNTIwN2RkOGQ5YTMzNDY2M2Y3ODc0ODg2OThhNTRlM2E3NzU5Y2YgcHkzaworODY4MDAgYWNlYjQ1MTZhOGQ0NGEyZDUwYWU1YzU2ZTY0M2EwY2JhZTMxNWQyMSBweTNrCis4NjgwMSBiZjVmNDE3NGI4YzJkNTg4OGEwOGI0Y2M2YjYzOWNlZDViMWUwMjdhIHB5M2sKKzg2ODAzIDIzMWIwYmJjMWY5MDQ2NGM1ZGQzMjI4NzllZjhhYjAyZGI3YzdiYWEgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODA0IDMyOTg0MmRmMDZhMTBhM2Y2OTE1YjNjMTIwZWRmY2EwMTUxOThmNTUgcHkzaworODY4MDUgMGUxZGQ0NTQ4YWExN2MxYjA4YmY3ZWQ4ZWEyMjhmMWVkNjY2Mjg4ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MDYgMTMyYTk0ZWMwY2U4MGQ2ZWU2NWE3N2VlNjUwNGIzZGJhZWYwNWRlNSByZWxlYXNlMjctbWFpbnQKKzg2ODA3IDQyNzllNDE3YjJhMDI0YjBjYjRiZTgwMmQxMTIwOWQyYWQ5ZTIwMzIgcmVsZWFzZTMxLW1haW50Cis4NjgwOCBmYWRmNzRjMGM1MDQzZDk3OThlYjM4YTYwMmRhNjc2MGFlMjNkZTViIHB5M2sKKzg2ODA5IDc4NmVlMTFlMGM4NDFhMGI1M2U2MTQ3MTAyZGJlZDUzOWFkYjk4NGEgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODEwIGM3YTM0MmE3OThlNzcxMzc3OTAwNDZmOThjZTE5OWMxOTJhNzJiNGQgcmVsZWFzZTMxLW1haW50Cis4NjgxMSA3NDliMWU3MTM5MWNhZTM2MjJlNDI4MDVmMzY3YjJmNmRkMWJmZTA5IHB5M2stc3RhdC1vbi13aW5kb3dzCis4NjgxMiBjODE2M2MyYTFiNmY0ZGUxNDE2NjBlM2ZiMzkxYzk5MmE3MjczZThkIHJlbGVhc2UyNy1tYWludAorODY4MTMgYzgyY2EzYmViNGRmMTVlOTUzMmRjMTM3NWYzOWZkYmM2ZGJhOTgyNyByZWxlYXNlMjctbWFpbnQKKzg2ODE0IDlmZWZmMTc3ZjQ0ZDEyNjlhZTIzZDYzNjkwY2I2MzExYzBlZjhiNzYgcmVsZWFzZTI3LW1haW50Cis4NjgxNSBhZDc5ZjliM2EwMjE5NzBhZjBlZWQ0ZTJjN2Y0MWZkMzc5N2QzNDU5IHJlbGVhc2UzMS1tYWludAorODY4MTYgZjIyMjI1YTlkNzIwODJhZjY2YTkzMzMwODJhMDExZTNiNGRmMmQ3ZSByZWxlYXNlMzEtbWFpbnQKKzg2ODE3IGVhNGVjNmRlOWNlZmUwOWE4NmQ4YjMyNGEyYzhkMGQ4NDYyODBmNmQgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODE4IGFiYmM1OGEwNmU0M2Q0OGQ5ZWYzZjhiNTRlNmVmNjQ5ZDc1MzQ0NDMgcHkzay1zdGF0LW9uLXdpbmRvd3MKKzg2ODE5IDk2Y2E5OWRmZWZkOGVlNzFiNDAzZGE5NmRiOWJlZDZkNmViZTY0ZWQgcHkzaworODY4MjAgODZhNjUzOWQyYzI1MzVkZWVjNTE5NDdlNDlkNmJmMzgyMTg3ZDQ1ZCBweTNrLXN0YXQtb24td2luZG93cworODY4MjEgMGI2MzQwNzMwOTEzYzRjYzU1NzU5NmU2ZDgyMWVlNjJiZDRhNTVjNCByZWxlYXNlMzEtbWFpbnQKKzg2ODIyIGI0YmZkYzUyYWQ1MTA2YjE3NGE5ZGMxNjczZWZjOGM4ZTMzNDdjYzcgcmVsZWFzZTI3LW1haW50Cis4NjgyMyBjY2YyNjMzYjk1ZGQ4OWY1YzFlZjE1ODk2NDM1MTQ5YmRjYjY5NGM5IHB5M2sKKzg2ODI0IDYzMzQxZGQzNjBhZjVmNzAzODcwMmJmNmQ5MTRmYzA3ZGQ5MGExYTggcHkzaworODY4MjUgZmVlOThiNjA0MTM5YzdmNWJhODEzYWE3NzI4NmZlNGNmYjlmMmRjNSBweTNrCis4NjgyOCA1OTYyMzlkYTNkYjc5ZGVkMGM1ODJhZDg4NGZhNmE1NWRlODU4MGU4IHB5M2sKKzg2ODI5IGQzYmFkNDFhZDcwMTc3Nzg4ODQ1NDFkZTI3MzQyOWRiNGQ4YWQ5MjMgcHkzaworODY4MzAgNThjMmFjNjBjY2I5ZGFiNGQyNWU3ZTJlOTBkZGUyNzY5YmRiNDk3ZiByZWxlYXNlMzEtbWFpbnQKKzg2ODMxIDgyYWRlMjEzYTY2ZGY5MmZiNzQzNzkyMTE3ZjVmMGRiZDBiZjZmZDcgcmVsZWFzZTI3LW1haW50Cis4NjgzMiA1Mzk1Zjk2NTg4ZDRmMDE5OWQzMjljYjc5ZWIxMDk2NDhkYzRlZjVlIHJlbGVhc2UyNy1tYWludAorODY4MzMgN2UzOGY4ZmJiYWRkYWI4YTE2YTY2NWE0OTRhZmVjZmNkNTBkZjNlOCByZWxlYXNlMjctbWFpbnQKKzg2ODM0IGE0Zjc1NzczYzAwNjBjZWUzOGIwYmI2NTFhN2FiYTZmNTZiMGU5OTYgcmVsZWFzZTMxLW1haW50Cis4NjgzNSBkYzI2ZTRhN2QyZTYwZDA1MjNlNjEwMjIxYzU1OTcxNWU4Mjk4ZTQ2IHJlbGVhc2UzMS1tYWludAorODY4MzYgNjNhYjM5ZDExODYwZTE1NjI4MzA0MDMyZGIzN2JiNWE5ZmNlMWEyZCByZWxlYXNlMzEtbWFpbnQKKzg2ODM3IDg3MzdmYjE3ZjQ0NDAxYTBhMmU5N2Q1NGM5YWU1MGQ1ZmM0Y2M3MzUgcHkzaworODY4MzggYTI3ZmIxZTZlMDlkNDRlNGYxMWQ3N2Y0OTcyMTY3NDRiZGFkMmVhYSBweTNrCis4NjgzOSA0MWNkMDkyYmU5M2FhNDA2NDRiYzg4NWM3OTNmNzU0M2M0MWQ5YzljIHB5M2sKKzg2ODQwIGY5NTEyNzRhZjNjN2Y1N2NmMDg0M2QwZGY1YjlkNzg0Y2ZiMWFiY2IgcmVsZWFzZTMxLW1haW50Cis4Njg0MSA3MmYwYmVhMDU0NTc3OTAwODRiZjgyNzhhYmEwNmU5ZjAyZjVmOGI0IHJlbGVhc2UyNy1tYWludAorODY4NDIgMWI3N2YyZWIxNjA2Nzg2NmE4YjkyNWU5ZmRlZTNmYjgzMzkwNWI0ZCBweTNrCis4Njg0MyAwZjBjNmI4Nzk3OTZiZWU3N2VhM2I3NWNmMDJkYWYyM2IyMzM4OWZkIHB5M2sKKzg2ODQ0IGQwYTE2ZjlmMzc0MWZkM2M5MzRjZmZkMzk0OTA3NjFmNzU2Y2RjODYgcHkzaworODY4NDUgNTM4MThlNGM0ZmNhNTY0ODg0MDdkOWNjYjJmOGM4YzFiYTY1ZjY2MSBweTNrCis4Njg0NiA1YmUzZWZiNDdiZmQ1ODM2ODc4NmI1MmUzMWMwYTQ1ODM3NmU2YmVhIHJlbGVhc2UyNy1tYWludAorODY4NDcgZTBhNTI1MjAyYzc3Y2M2Nzk3NTVmZjgxZWUzNTM1MmUxZWJiZGE2NCByZWxlYXNlMzEtbWFpbnQKKzg2ODQ4IGM0YWFjOGU2OTg4ODY1YjQwZWY3YThmNzE3ODZiYWQ4ODc1ZDU3ZjcgcmVsZWFzZTI3LW1haW50Cis4Njg1MCAyN2VlNDJiMGZhZjZjY2IwN2UzMGIyMWQ5ZDZmNjRiN2NlNzgwYzcwIGRtYWxjb2xtLWFzdC1vcHRpbWl6YXRpb24tYnJhbmNoCis4Njg1MSA3MmZmNDM1MzIyMTQ4MGI2M2Q2ODE4NTNiMmM4MDJiZDBlZjk0ZjgxIHBlcC0wMzg0Cis4Njg1MiBkMjRhYTNiMWVlMjgxNjk3NDQ5OGZlMzEzMzVhNmQ5MDA2Mjc2ZWNkIHBlcC0wMzg0Cis4Njg1NCAwM2QwZDE4NjcxM2I0ZmU0OTdjY2U4NGQwYTgzMTczMTQyNWM5M2UwIHB5M2sKKzg2ODU1IGJkZDU3ODQxZjVlMmY0NmY4YzBkNmEwMmQ0MjcwOGVjNTc0NDQ3YjQgcHkzaworODY4NTYgOTNjZDRkZThlZTBiMDRhMTMwMmZhY2I4MGZmYmQ0MjYyNmQ4YjA1NiBweTNrCis4Njg1NyA2OWVjNzc1MjYxODBmYmU5MGUwYjI0NmQyYjg2MzdjNzhjZGZmZDBhIHB5M2sKKzg2ODU5IDE2ZTNjOTViYzQ2YzVhNGVjYmUyOTc2NjM1YzFhN2Y4ZmViNTZhZWMgcmVsZWFzZTMxLW1haW50Cis4Njg2MCA3YTVmMjY1NDhlMWMyODUzMGM4NzRhYzEyODYxYjkzZmY3NThhNDE3IHJlbGVhc2UyNy1tYWludAorODY4NjEgZTVmY2I0MjI2YjQyYTY3MzZmNDNkZjMxNDcwZWU3OTQ0ZWU4YWI0MCBweTNrCis4Njg2MiAyZTBkOTAwOWFiNmI5ZTFjNzFlMWY5NmU3MmQ5ZDNmMzAyYjI5ZGVhIHJlbGVhc2UzMS1tYWludAorODY4NjMgOGZkMTNjNWQzODgyMzk3NDQxYjk3MDc2YTczNGYwMWFiOTNkZjZjZCByZWxlYXNlMjctbWFpbnQKKzg2ODY0IGU4MTJkYjM0NGE2NWQ1NTJhYzAyMDBlNTRlNzdlMWY4ZjI0ZmNjYWMgcHkzaworODY4NjUgZWFkNTMwNzAzYjliZTVjYjg5ZmE0YzIzMWZlN2ZlOTNjZjM1N2E2NyByZWxlYXNlMjctbWFpbnQKKzg2ODY2IDY2N2QyODM0NDAxNzE5ZGEyZmE0Mzk1ZDk3YTI4ZGUzOTY0ZGE5ZjUgcmVsZWFzZTMxLW1haW50Cis4Njg2NyBjZDZkMGNhZmZlZjI0YmUwNmQyZWM4ODA2YjZjMjA5MDhmMzBkYWM1IHB5M2sKKzg2ODY4IGIwZmYzMzNlYzNkYTFiZDYzMjZhMTU0N2ExNzJhMDg0NmY4NDM1ZmUgcHkzaworODY4NjkgZTg5YWE5MTQ3NjI0Y2E2MzliOWFjZTNiM2E1ODAwMjE3YzYxNmU2ZCBweTNrCis4Njg3MCBlNzM5MmZmZWUwNzFhNzZhYzBlY2I1MTgwNTFjMjUyMjIyMDgzZjEzIHB5M2sKKzg2ODcxIDZjYTg5MjJkYWZiNTNiNTlkOGU3OTdkZWZmN2RmYWNmNDVmOTQyYjMgcGVwLTM4MgorODY4NzIgMGNjYTk2NjE1Mzk1MWI5NjNiZjE5ZjUxYTA4MDhiMWEzOGRjZTJjMCByZWxlYXNlMzEtbWFpbnQKKzg2ODczIGRlNmU3OWM1YjFlZDQ0M2ZmOGQ1NGIyZmZiZjg2N2Q4NDI4NGRjYzcgcmVsZWFzZTI3LW1haW50Cis4Njg3NCA2Nzk5ZDU0ZGIzNzgxMmFiZjEwYTFkMmUyMDgzOTVmYTc4NTAzZjRjIHB5M2sKKzg2ODc1IGUzMmEzMDBhY2FjMmZjODZjN2QzYzQzZWUzZDE0ODQ3MTI4MWFjYzggcHkzaworODY4NzYgOWU5YTcwOWIzODllY2FlMzZiMTQ2ZjkwNzg5MTFiMWVmNjkxNzZlMiByZWxlYXNlMzEtbWFpbnQKKzg2ODc3IGVkNGJmYjc1ZDI4ZDg4MDY0NWM4MzQ1NzlhZjViNmZhODBhN2ZmM2EgcmVsZWFzZTI3LW1haW50Cis4Njg3OCAzMTJiMjkxNmNmZDQ1ZDhiZjMxMWJkYmEyNjI5M2ZhODg0OTU4NjBjIHB5M2sKKzg2ODc5IDMyZTY3NWRhYTBlNTFiZmUyZjU0ZDM3MmNjYmRlMmM0YjdjM2VhZTYgcHkzaworODY4ODAgZjE2YmY0Y2FlNWQ3MzdmYWY0MzZmMGUxZWZkY2I1ZjQ0ZGQ0NzFiZiBweTNrCis4Njg4MSAyOGI2N2I1NzBmMmJmOWE1OWJlNDM1MmRiMTRjZmEyMjU1ZGVkNDMyIHB5M2sKKzg2ODgyIGI0MDVhN2YwYWVkNzFiOGRhNTkxYmZmZTBkN2UyMGRlZjA0YjliMzkgcHkzaworODY4ODMgODMwNGJkNzY1YmNmNzdmODM3ZjUxNjlhODhiNWQ3NDRiNWUyZDAzMiBweTNrCis4Njg4NCA3MjQ5MjBhMDE1ZjcwMWEyMWRkN2UzMjlhNDhmNTRlMTNkMWRlMWE5IHB5M2sKKzg2ODg1IGVkYThkYTNhNzViM2M2MjQ3MDE0MzY5ZGVkNTg5MGFmMjA5ZmM3OWIgcmVsZWFzZTI3LW1haW50Cis4Njg4NiBkZWI5ZjJkMzdiNjNiZDEzMWFhOTQ4ODY4YWRlM2ZkZTQ4YzRlNDA5IHJlbGVhc2UzMS1tYWludAorODY4ODcgZmQ2ZTU2NTNiMzEwMjUwNjJmYjdiYTYzOWNjMjI5ODZmMmZiMDFmOCBweTNrCis4Njg4OCAxODM5OWU2MjBiNDExMGNkNDk2Y2M5N2VhM2VhOWM4ZWNhYzA1MDMyIHB5M2sKKzg2ODg5IGU0NDQxMGU1OTI4ZWUzMTE0YzY1OGRmNjdjZDE4MGU1YjUwMTE1ZDkgcHkzaworODY4OTAgYjgwZjViZjI2ZTk4N2I4ZDU1MGE1MzNkYzg4NDI3NTQ0YWYyOTE2MSBweTNrCis4Njg5MSBmNzk5MjhhZGFiNTc5ZjNjZjFhYmY4ZmRjYmViN2FmZTdjNGJjZTRmIHB5M2sKKzg2ODkyIDdlYTAyZjMxYzI1MmNiZWI0M2U3ZWJhY2U0OTIxNjEwYTVjYmU4NGUgcHkzaworODY4OTMgMmY2ZDBmMzYxYWI5MmM5N2M3OTc2ZTQwYTY3MTA1YjBhNDMxNzRkNiBweTNrCis4Njg5NCAzNDAzNjlmYjJlNzBlZjQ5OTE3NmM4YTM0YWFiMzM3NjY1MTQ5ZGEzIHJlbGVhc2UzMS1tYWludAorODY4OTUgNzQ2N2ExYzExYWViNDY1NDQ2NTg4YWI2Y2Y4MjYxMTExZDcxNmY5MyBweTNrCis4Njg5NiA2NTZkMjRkMTk3NDliMGIyZmFjM2Q5YWQ3Y2E3ZThkMmRhMTc3YTUzIHB5M2sKKzg2ODk3IGQ2MTAwNzQ5NzBkNzllM2Y1NTdiMjdkMWM2YjVjOTg3YWMzMmEwMmQgcmVsZWFzZTI3LW1haW50Cis4Njg5OCAwNGU4YmQ5YTFhYmFlMzc5OTg5ZDUzMWM4MmM4NDJkNDU4NWMwMGNlIHJlbGVhc2UyNy1tYWludAorODY4OTkgN2ZkMmM3ZGJkZGE2ODM4YmRmOGNiNThiOTBiZDAyNmQ2YTNhMGJhOCByZWxlYXNlMzEtbWFpbnQKKzg2OTAwIDI5ODRiNTdkNjdkYTQ5M2I4OTliM2QzMjA1NTFkZGZiNDRkMmY5MWYgcmVsZWFzZTI3LW1haW50Cis4NjkwMSAyYjJmYzQyNjIxNzAxZjg5Njk1NDIzMTI5NDlhNzcwOGM4ZmQ5ZmNiIHB5M2sKKzg2OTAyIDExNTUyZWE2YTk0NGMzYjMzNjkwN2IxYTAwOWQ1ZDllMDM2MjM2M2QgcHkzaworODY5MDMgNjkzZjc0MzBjM2NhNTA4MDdiMzA1MGM3MTYwZjdjMzVhOTg0YWY5YSBweTNrCis4NjkwNSBmZWUzYTJmMjQzZThlN2YyYjAxZDlmMTA0NDdmMTYyYWIzZmEzNzNjIHB5M2sKKzg2OTA2IDA5MjNkOWIzZGU2ZWE4MjJjMjlkNTFhMmYxMzE4ZWI0NmViNGVlMGIgcHkzaworODY5MDcgNWNiNTNmMDk0YzFhODhkMGMxZWM1OGRlMTgxOGNmZTc4MDk5MzI3MCBweTNrCis4NjkwOCA5MTg0YTM5MDlkZTBjOTkzOTJkYmViMzc0ZTQ1NDMyOTNkNTI5NDRiIHB5M2sKKzg2OTA5IDhiOTVlYTMxNzI1YjNlZTgxZWEyNjhjNzE1MDk0OGQ4ZDY1Y2Q0NmUgcHkzaworODY5MTAgMzhiZWM5MGZkOGFiNjAzZDhmZjg4OTE5NDhlZDliOWNjOTA4OGM3ZiBweTNrCis4NjkxMSAwMGM4Y2RmNTM5MzZiMzVhYmMyMWFmMDE0M2YyOTM4ZGQ5MzM0YzY4IHB5M2sKKzg2OTEyIDE0ODk2ZjEzMTNkYjA5ZmY0Y2FmMzUxMGZmNWYwY2E3YjBiNDMwYTkgcHkzaworODY5MTMgZmY3YzU5Mzc3OTAzMDBhNjJjMTVkYjhkNjQ2MjFjMzliMWI2N2IwOSBweTNrCis4NjkxNCA3MTgwOTg1YzFjMjIzZDMzMjBkOWIyNjYyNjdhYzRlMjJlNWFiODc5IHB5M2sKKzg2OTE1IGU1YzI4ZDY3NjljZmQxNzE2ZjI3MzFlM2RiYzFhYTk1OTdiOTg3NWMgcHkzaworODY5MTYgMmJhYWQ4YmQwYjRmYzg2NWYyZDhkNGJlMjljNDIzNjBkMDgxOTVkMyBweTNrCis4NjkxNyAzNzAwMmU0ZmY2NzcyZmJmZWM5MWM2MTZjODUzZDNjMzA0YTFlYmRlIHB5M2sKKzg2OTE4IDVkYTA5M2I0OWMyYTJkMzQyMzY4YzI5NjdlNTBkZjkxMTA3NGZiYzQgcHkzaworODY5MTkgMTNjNzFjOGM1YzBmODVlZDE1YzMyZDkwNTM2NTYyOWVmMDhiZTExMSBweTNrCis4NjkyMCA0ZTE4YjliZTI1YTQwOGUxYjhkM2U2NzU2ZGZhNjNkMjliZTI3NzYwIHB5M2sKKzg2OTIxIGNkODg3NjdiOGQwYzlmZjE0OTEyY2Y1YjA5MDA1OGI3MzU5ZmU0MTQgcHkzaworODY5MjIgNDM5NjU1ODBjNTU2ZGI5NDU0YmY3MDE0MDg2OGRmYTdkYjI5NjNiNCBweTNrCis4NjkyMyBjNWI1NDhmZDBjOGM4MjYxMzJjMjU3Y2M0YzBjNDYyNzRjYzBiMmE3IHB5M2sKKzg2OTI0IGI5MzE3YTlhM2QzYWI3NDdmNjNlZmMxOTE5NjhlYTEzMWNmNzE3NDIgcHkzaworODY5MjUgZTMxYTQ5NzIwODRhZjUyNjk1MjdmYzEwZDA2ZTgzZjc3ODNlMDI4MCBweTNrCis4NjkyNiAwNzhlNWM3YjMxNTlmMGNiZmYwZTY3NzQ3M2QxNDlkZWEzNWM5YWFiIHJlbGVhc2UzMS1tYWludAorODY5MjcgZTc4NDRiN2Y2ZWQ0OWViODJlNDg5MzI4NzQzNWE0MTBjODhhODU3ZSByZWxlYXNlMjctbWFpbnQKKzg2OTI4IDA5ZWQ0MTFhMTA5MDYyOGU2YzM3NzA5MzQ4MjM0YmQ2MzlkY2M5N2EgcHkzaworODY5MjkgOTBiNmNiZjJiMTFiNjEzY2JhYmIyODI3ZWVjMjcyNjEzOGUyYTJmMCBweTNrCis4NjkzMCA4OWNkYTA4MzNiYTYwMzkxYzE2MjEzNzk0MGQ0OGZjZWMyMzI2YWQ3IHB5M2sKKzg2OTMxIDBkZGZhNWJjZmJkMzcwM2E3ZjI5NWFmNjY2ZGU3YjAzNGU3YmIyMDAgcHkzaworODY5MzIgZDJlYTcxMWFiMTA3YzViNDg2OTAxODRmYzJmODUyYzZkNDNmOGE0NSBweTNrCis4NjkzMyBkYzczNDcyOTM1YzU4ZGM5MjYxM2Y4YWM0NDdkYjJjZDk1YmE4MDU4IHB5M2sKKzg2OTM0IDdlNDgzMzc2NGM4OGMwMDM3YTFmOWRmZjdkNGRhZjcwNjM2NDQ0ZGYgcHkzaworODY5MzUgOWEyMDU4MzA5YzFhYTYwN2QyM2MxNjg5ZTAyYWE3M2UwYzQ0ZDExYyBweTNrCis4NjkzNiBiOGJiYzBmYzYxOTE4OGM0MmUxZWU0MDMzMmFiZDI3MmM3NjM0YTE4IHB5M2sKKzg2OTM3IGUzMzlmY2E2ZTUxYTEwMTZmMTg4NTcwNmRhNDA5NDQ1MWEzNGU3YzEgcHkzaworODY5MzggYTM2MzBkZDkyMjE4MGIyMTlmYjMxZmIzOGFjZDQyYmMzOWM2YzQ3MCByZWxlYXNlMzEtbWFpbnQKKzg2OTM5IDQ1YWY1YTA2OGNjN2Y0MDZhZjgxZjM2ZTk1YTE1OThkZWNjM2IxNzUgcmVsZWFzZTI3LW1haW50Cis4Njk0MCAxYWRkOGNlZjc1MjdmZTlhNmZmNjQ5MTI5MzE3OTFhYjcyMDMxMDg2IHB5M2sKKzg2OTQxIDVmMjQxMjg0M2JiOTFlNmQxZGYyOTNlOGFiMThiMTA3NGQ5MDZkNGUgcmVsZWFzZTMxLW1haW50Cis4Njk0MiA4NjI5YzJhMjM0ZGIwMzZkM2RiODQ2OTBiODRkNmFkMWQ3MjkzOTgxIHJlbGVhc2UyNy1tYWludAorODY5NDMgZGVlMjAxNTVmZDY1NzQ4ZDhmYzI3YjRiZDgyNTJmNDI3OTYwZjQwNiBweTNrCis4Njk0NCAxOGQ4OWEzMGZhYmY5OTMzNjkxZjQ2ODhlZTI0MTRjZDhiMWJhNTY0IHB5M2sKKzg2OTQ1IGUxMWY3ZTY2MjM2OTEwNmQyYTA3YjAzZTBhYzc4ZjhlOWRhMmU1NjMgcHkzaworODY5NDYgOTk2Zjg0ZTUwNWJlMzUyZGQwOTQ1YmMwM2RjYmVhNGExZGQ0NWY1ZSBweTNrCis4Njk0NyBiZjQ5NWRkZTIwZTM5MzJkYTliNzJjYjI5NmU3YmVhMGE1YjM3MWZkIHB5M2sKKzg2OTQ4IDEwOThmYWI4NWU0NzI3MzZhODhhZjUzY2E3N2Q1N2M5YzEzODc2YmUgcHkzaworODY5NDkgZjkwNTgyYzZjYjVmZjZiNzIzNTFiYzI4YmRlNDc3YWE2ZTQ2OThhZiBweTNrCis4Njk1MCA2NGM2NDJiYjdmZjc5YWU2YjI1MWViZWUyZTVlZjRiMDA1MGJiNWEzIHB5M2sKKzg2OTUxIGUwMjAyMWZiZmUyMmI1YzUzYmJiOWFlYjhkNzczYmVhNmJhZDY5ZjEgcHkzaworODY5NTIgMWNiZmVmZmVhMTlmNzY3ZGE2YTMyYTFlYTk3NmY5ZDAzMzk2ZjY3ZSBweTNrCis4Njk1MyA2ZTQ5YWYyZTA4OTEwOWZjOGEyODZkZDcxM2RlNmY2NDUxN2U5ODMzIHB5M2sKKzg2OTU0IGQ3ZGUzMWFlOTVhNDQ3Y2M1MGI3ZDEzNWE1MzE1MGFhMWRiMjJjMTEgcHkzaworODY5NTUgZDdmYTE3YTQ2NjlkYjg1YWFiZDE1MDk2MWIzOTZhNzZkMzI5NjI5YiBweTNrCis4Njk1NiBjNjE0Zjc4Njc1ZDRhNzAxMjQzNjQ4YTQ1ODg2MDVhOTY2Mzk0YWQyIHB5M2sKKzg2OTU3IDA5ZDIzZmIwZDQyOGVkZDQwNDEyNjhhNGMwY2UzZGRmYzUzOWI5YzUgcHkzaworODY5NTggYTBjZjY0YTUyOTFlNzVhMzFjZTIzYmI5ZDlmZGJjNmQxMjI2ZWQzYyBweTNrCis4Njk1OSA3ODUxYmZiMWJkNzMzOWY4NjBlZGIzYjE2Nzg5NjUzZDhiMzNiODllIHB5M2sKKzg2OTYwIDc2ODU0ZTQ1YzQ2NTI3MGYyZDAwMTgwNjE1MDZjZmEwNDhlMDkzODYgcHkzaworODY5NjEgOGJmOTBiODcxMGQwMzc4MjdjOTE0MTYzZDUwOTY0MWViOTA4ZWExYyBweTNrCis4Njk2MiBhNWEzYWU5YmUxZmIwMzk1Mjg2ODRiYmMyMjg5ZmVkMjZkNDE4YzYyIHB5M2sKKzg2OTYzIDEwNzU2MWM1OGRlMTA0MzUzMTVjM2FkMWM4ZjJkNWM3YzgzOTc5NTQgcHkzaworODY5NjQgNDhjMjhjMjgxZDU3YWZmZTQ2OTcxY2Y5Yzk3Y2VhYTExODBkMGMwMSBweTNrCis4Njk2NSAzODM1M2JhNDA4YTFkODQyNmRhNzVmMDUxODg4ZTRhMjAyMGM4NmNlIHB5M2sKKzg2OTY2IDU3N2EyNWQ2NTVjNGFhZmMxODdlYzQwODkwNWZjMzQ3ODlmOGFlNDcgcHkzaworODY5NjcgODFmNGQxZmRmNTczNDEzMmVkMzAzYTYyOTEyZDRmMDJhYmViMTgxMyBweTNrCis4Njk2OCA3YzFiNGNhNDVkYjZkZDllMGMyNThiOTYxZGM1MWQyNTM3ZDM1MDQzIHB5M2sKKzg2OTY5IDk0ZmE1M2I1OGVlNTM0OGVmZjE1Y2FjNmRkOWIyZDRlNWRkODlkMzMgcHkzaworODY5NzAgNzgyMTYyNjM0MjVkMTU4MWU5ZmY4ZWZiN2I5OTc4YTRjYTUwNzAzZiBweTNrCis4Njk3MSA0YTU5OTkwMjMxMGRiOGE0ZDk5ZGM4NmIwOGIwMWE1NTU0NDFmMTM0IHB5M2sKKzg2OTcyIDViNjg2NzVkNzI2OWM2YTVjMDQ5ZGJlMzdjMmU2MWQyNDg4NGFiMjAgcmVsZWFzZTMxLW1haW50Cis4Njk3MyBmZGIzNTIzMWViZTI1OWY1MmUyODMxOGIxMWQ5YWI5MWNlMTNmOTNhIHJlbGVhc2UyNy1tYWludAorODY5NzQgZmUyYTU2YTFiYTc0NDM0Y2MwMTFiNWI3MDhmNWUwZmIyYzNkOWU4NCBweTNrCis4Njk3NSBmYWFkMTc5N2ZjOTJjZDYxZWU1N2U5MzIyNmIzMDU5OWZkODk5Y2MzIHB5M2sKKzg2OTc2IDVmZGE1MTk4MzRkZjg1MmI4ZTRmNjYzYjc1MjZiYWI2NjY4MTVjZjcgcHkzaworODY5NzcgYWUxMDI4MmU3ZjRlYzdmMmQ3MmM0NjVjMzViMjIxNGM3OTM2MDY2OSBweTNrCis4Njk3OCAzMDFkMjNkNmRkOWI2ZWQ4MDMzODY0MGRhZTcxZTg1ODQyODk0ZTBhIHJlbGVhc2UyNy1tYWludAorODY5NzkgNTIzYTZmYzUzYTcwNWM0NWNmYzI4OTlhMzkwNjg1ZDZkNmJhOGUyMiBweTNrCis4Njk4MCBiMzAwNDg2NjNiN2JmZTYxZTdiNTJkZTBiYTk4MzEwY2FjYjM3MDJmIHB5M2sKKzg2OTgxIDNkMmJmZDIwYzJmNGQ5MmRmNTRiYWQ3NWY1MmU0NjM1NDA2NzM4YjAgcHkzaworODY5ODIgMzIxNGUyMzFhMWM0NTkzZTVmYjMwYmM5ZGJkYjNhMGRiMmU4YjUxOSBwZXAtMDM4NAorODY5ODMgMjJmMGNmMWEyNzExYjI0NDcxODAxMWY2NzYzM2RkNGQ4ZTA4M2Y0ZiBweTNrCis4Njk4NCBmNzRmNWEwODNiNmY3ODU3YjdmNzU0Y2JkMGRhYTJiNGE4NWE5OWI0IHB5M2sKKzg2OTg1IDgzYWQwMGEzYTQ4OTE4MTY1MmQ0YmYyZWQ1YmFkYzNhYmM0MjZlZGQgcHkzaworODY5ODYgYjAzNDgzMjQxNGY3ODc4MDZkMmFhNTNhOGY4Yzc2MWE1YjkyNWEzMyBweTNrCis4Njk4NyA2NjVmMGZjNmRkZDdiZjM4ZGY1MDExMTkxOWQzN2Y2ZTUyMzM3ZmE4IHJlbGVhc2UzMS1tYWludAorODY5ODggN2NlOTAwMWQ3YTc3MWQyNDRmNDI5Y2ZhMjU0ZmEyZWRlMjhhNTcxYSByZWxlYXNlMzEtbWFpbnQKKzg2OTg5IDMxODJjNjA4N2U1MmVlMTBmNmFlMTRkN2ZjNDgzMDg3NDE2OGM2MGYgcGVwLTAzODQKKzg2OTkwIDU1NmRmMDg3ZGU0ZmMxMzJlOWRkNDA2ZDA4NGI5ZGUzMjJiNWJiOTEgcmVsZWFzZTI3LW1haW50Cis4Njk5MSBlNzU2ZWM4ZjQxNDNiYjlhM2YxNDgzYzRjMzIyNjA2NzIyYjI2MDdmIHBlcC0wMzg0Cis4Njk5MiA1YTcyM2I3YWVmYjcwZjcyOGNjZWYzZDUyMzUzYmM1YWE0MTExNmIzIHJlbGVhc2UyNy1tYWludAorODY5OTMgNGM5ODQ0NzMyOTI1NzMzOWI5NTlkMTdiMmUzZmIwOGNmMjVlYzgyNCBweTNrCis4Njk5NCBiZDNiYTg5OTQyZTMxNmQzNWNhOWEyMjFjNTJlNjQ5MGI3ZGY4ZDA4IHBlcC0wMzg0Cis4Njk5NSBmODk1YTIyMjFmZTEzYjAwOWZkYjViZTAyOTViMWM2ZDJiZjkzYTZmIHBlcC0wMzg0Cis4Njk5NiAzZGZlYzhmMTRlNzMyZTdiZDZlMDM1ZTY2YjQ1ZjIwMmFjMTlkOGI1IHB5M2sKKzg2OTk3IDNkOWE4NmI4Y2M5ODA0NmYwZDc0NTY0Nzk4Mjk0MTBlMzg2YmU2YjMgcHkzaworODY5OTggNjJiNjFhYmQwMmI4ZDcwOTUzOTc2ODc4ZWQ1Y2UyYzIxNTc5MTRmYyBweTNrCis4Njk5OSAxNDg2NDE2Yzg2ZDk3ZDgyMTgxMDczOWJiZmFjZmQ4ZTNjYmE3Y2Q2IHB5M2sKKzg3MDAwIDZiMDM0OTFlZTE3MWI0OWJmMTcwZTMzMmMxZGVlZTYxOTBlNjBlNGIgcHkzaworODcwMDEgNGNkYWZiMDJiMjBlMTU3NDUyYWY0Njk3YWZkOGNkN2RjNDdjODM5NiBweTNrCis4NzAwMiA1ZWM0ZWQ1MThlZjhmZDg0OWM5MzM5NmJjMGJhMWY1MWE2ZWUyMTU0IHB5M2sKKzg3MDAzIGE2ZTk0OWE2ZmZjOWM5ZjFkNzI1ZjU4ZjA5ODAxMTdiMTdiYTU2MGIgcHkzaworODcwMDQgZDYxODNiY2ViZGRlNjgyZTk0MzIwNjYwYWFjMThlYzJkZTk4OTYzZSBweTNrCis4NzAwNSBkMjliNTVhYzE2MzE5MzgwNjBmOTQyNGI0YTE0Zjg5NDJkOGFkOTg5IHJlbGVhc2UyNy1tYWludAorODcwMDYgN2MyM2E2OGZhM2RlODZhMzdkZTk5MWY2YTE2YmJhNjk0NmIyZDY3YSByZWxlYXNlMzEtbWFpbnQKKzg3MDA3IDdiNmFmNTZlZTc0ZDA4NDcwZDBjMTEyODViNmMzZjE1YzBlOWM3N2IgcHkzaworODcwMDggYTJmYWJlMjI0ZTg3MzYzMjEzODMxODdlMmI4ODJlOGMzODhiYTg0YSBweTNrCis4NzAwOSBhOTA3MTEwZGYyNWEwODk3ODliZTBiODdjNTMxN2JmNzRhZjE4OGUyIHB5M2sKKzg3MDEwIGIzN2RhNjBjOTA3MmExNjMwMGU1ZWUxMzNkMzM5NmI2ZWE3MDRiNjMgcHkzaworODcwMTEgNTZlZWQ4ZjQwN2JmOTQ2OWE0ZGQyNmZkYTE0ZjhiYTRiMDM0YzQ4MyBweTNrCis4NzAxMiAxZDM1MzFhYWNlYTBlMTA5NWRmZTU2NDYxMzc0ZmQ3MmFlNjI1MDBjIHB5M2sKKzg3MDEzIDRkZjhiNDM0MmU3MDI0M2Y3OTUxNjEwNGE2NGIzZTkxOTdmNDhiODMgcHkzaworODcwMTQgYjFlNzg5NjMxZGJjNDIxZDNiYjY0NzVjYjJjYTI4ZWUwMWE3NTkxZSBweTNrCis4NzAxNSA1MWQyOGEwZDFjMzJlOGQ4YmZhNWEyNDc4NWRjNDQwMzljYzc2ODc3IHJlbGVhc2UzMS1tYWludAorODcwMTYgM2FhZjM3YzI0ZGI4ZmE3Nzg2ZWVkYWNjNGE1ZDc3ZDJhMzNlM2Y3MyByZWxlYXNlMjctbWFpbnQKKzg3MDE3IDJlMWZjZjI4YzkxNDVjZjY3MGFjOGVlN2VkOGUzNGRhNjRkMDNhZTQgcHkzaworODcwMTggODkzYjA5ODkyOWU3ZWZlZTRmNzUzYjVkYWU5MDg1ODM1ZDNiNzUyNiBweTNrCis4NzAxOSA3MTNjNmI2Y2E1Y2UyMmVhM2NlZGE4MGRkMWNkNGFiZWZiN2EwNzc1IHB5M2sKKzg3MDIwIDhiMDJmN2Y5NDc1YjJhMzc0ODlhMTcyY2Q4ZWVmYzMzOWI2Zjc3ZjcgcHkzaworODcwMjEgZjM1YTZkN2UzMjVmZjUzMmNiMzk2NTU3YTYzNmVmMjU2NGYzZTExZSBweTNrCis4NzAyMiA0OGM0MDcwOTQxN2I5YzYwZGM0YmRjZmI3YzBkMzc1MTI4MTZiM2Y0IHB5M2sKKzg3MDIzIGY4MmVlYTQ3ODFmMTU2M2EzNTgyMTk4ZDdkMzAyMzNmMGVhOTBlYzQgcHkzaworODcwMjQgNzIxNGRjNWJmZjVjZmI3OTg5MTU0NTczNzM0NDhjMWZhMzQ1YWViNiBweTNrCis4NzAyNSBjMjU3OGE2ODg3OWQ5YzViN2ViOGNmOTMzYzI3MzFjN2EzZDhjZmYxIHB5M2sKKzg3MDI2IDI5NmU2Zjg1ZjU2ZDQxNjMwMWE3ZjU5NWI3ZGI4NmY1Yzk4MzFmYmQgcHkzaworODcwMjcgZDU4MmRhYmIzMGY4NWI3NzBmMDJmZDczOWQwZTRhMTI3ZGQ5YjU5ZSBweTNrCis4NzAyOCA0ODQ1MGYwNTk3MGI5MDA4MTQxYzc2MzZmMjMzZmQyMDdlMzUyNzUxIHB5M2sKKzg3MDI5IDhjYWJjZjRmOTAzMzhiNWE5YTUwNTU4ODcyODhjZTZkMjMxOGIxMDYgcHkzaworODcwMzAgYmVkZTgzZTIwODUzNGMyZGFmYWRkYmYyZjYzZWEzZGE5ZDY0MTQyMSBweTNrCis4NzAzMSBkZTdmMjhhNjQwZTVhNjljYjZjYmVjMzRmNzNkODZjZWJiNjI0NjQ0IHB5M2sKKzg3MDMyIDU3M2E2NzI3NjIxNzFmMDRkMjE2MGQ0MjE1YjJjYThjNTMwODY1NGUgcHkzaworODcwMzMgYThmMzg0NzYxOWY0ZGIyNDg3ZmJjNmI3NjM0MDE2NjEzOWVmN2U4YiByZWxlYXNlMjctbWFpbnQKKzg3MDM0IDliNjAzNjExZjZkNGM2ZDRhYTQ5ZmYzNmU3NmY0OTZmMGZiMGZiMjQgcmVsZWFzZTMxLW1haW50Cis4NzAzNSAyOTQ4MDZjYWM4YzU0YmU1M2JiZDVmNWU4ZjA0NDdhNWQyMjdjZDQzIHJlbGVhc2UzMS1tYWludAorODcwMzYgZGRjNmM0N2JmODI1ZTM5OGUwZjRhZDUxZTA0YTEzOTAxNDhkZDNjOSBweTNrCis4NzAzNyBmMTRmNjE5ZDcwNTAwMjc1OTA0NWUwMjY0NGEzZGVhYmI2MzlhMmQ1IHJlbGVhc2UzMS1tYWludAorODcwMzggYjMyZDE5ZWI0MzM4ZWMxNTZmZGU4NDI1YjQ1NjJhMDk2MDMyNGYxMyBweTNrCis4NzAzOSBmZDYzOGNhNzQ2MzRhYTE3ZmMzODI4N2Q0NjU2NWExYTkxM2ExYTc1IHB5M2sKKzg3MDQwIGFlM2ZhNzgxZWVmMmU0MDM1ZmMyMWFjODkyMGUzY2RkZTU0YTYzNjYgcHkzaworODcwNDEgZjFiZTM0OTIzNGMzZTRkZjQzZDBjZjNiYzU5NzllNWIwNDJiZjlmZSBweTNrCis4NzA0MiBjYjZkNWQxNTFiYjQyMWEzNjA2MDZjN2YwODE5Mzk5YmZiOTBmMmUzIHB5M2sKKzg3MDQzIGYyYTRhZGUzNmExZWE4MTMwNTRjOTJhNTZhMjdiZDdmZWUwNmViNmEgcHkzaworODcwNDQgYjU1ZjNkNjM5Y2Q4NmY5NTQ3ZDU2ODNjZWRjZDgxNjdjYTkwYjZmZCBweTNrCis4NzA0NSBjMmNhODY3Y2RkMWEyMDc4NzAxMGUwMzNkYjQ4MzBlNGJkMzYwNDQzIHB5M2sKKzg3MDQ2IDVlZWJlNGFkMGQ4NzhkNTE0MDdkYWVmYWZjOGMwZDc5MjRjODI5NDggcmVsZWFzZTMxLW1haW50Cis4NzA0NyAwZmQ2YWUwYTg1NjdkYTE4OTFmZTVhZTRkMGRhOTQ1MzVkOTk0NjQ5IHB5M2sKKzg3MDQ4IDk4MzJlOTZlNzMwYTkwNTRlMjA3ZGUyOWE1NDVjNjU1N2ZhMDJkYWYgcHkzaworODcwNTAgNzU3MTFkMTc0M2NjZTY4N2Y2OWJhYzg5NTNmYzk1MjM4MGEwNmNlZSBweTNrCis4NzA1MSA0ZTYyOTI3YTJiZGE5NTk5NDc3MDY2ZDU5YjY3OTUzNGQ3NzMwODIwIHB5M2sKKzg3MDUyIDc3OWEyM2EwOGQ4Y2VlZjA3M2Y5NjhhYTI3ZTAzODcyNzdiYWQ4NjMgcHkzaworODcwNTMgMzM5ZGQ2MjJkZTVhNTgzMjQ4NDE0NjcwNDU5ZDkyOTk5NGYxZTlhZCByZWxlYXNlMzEtbWFpbnQKKzg3MDU0IGJhNzA5YWQzZmY0Y2E2OWNmNmNlODQxN2M2OWExMDFhMTFhYjUxNDcgcHkzaworODcwNTUgMDRjZWMyZTFjYTQxYTg3NGNiODU5ZjYyOGY4ZTRkY2I2OTQzZjU1NyByZWxlYXNlMjctbWFpbnQKKzg3MDU2IDE4MjdhOGFjOWIxOGU5Yzg0NmM2ODU2NGU1NTM5MmU4YmQ4MjQ3N2YgcHkzaworODcwNTcgM2ZlZTg4ZTY0NDJhM2RhMjVmOWY1ZGFmYTY5MWQ0OTczZmNmN2NmOSBweTNrCis4NzA1OCBkZmU4NmRhMjdlNjhjMzhlNjg0OGFhNGM0MjJlNWViMzFmMjIzNTQ5IHB5M2sKKzg3MDU5IDY4MjViMmNkOWI4MWMzOGJkZjI5MDg2ZWI4ZGUzMDcwMTM1ODA4MDQgcHkzaworODcwNjAgM2QxYmNiNTRhODJiNjZjZjRlZmJhNTIxMmFmMDVkZmE0NjQ5MzU4YSBweTNrCis4NzA2MSBiN2YwOGEwYWVhMjg4NjUxMmQ5MWEyZTdjMmY0ODRmYzg2M2M3OGVhIHJlbGVhc2UyNy1tYWludAorODcwNjIgMTEwOTRiNTI4OGY5ODk3ZTIzYWM1NzU4NmQzNzZlNzlmOTQwYWI0OSBweTNrCis4NzA2MyA1NmY0MmUxODRhMTk2ZTk4NzA4NDZjZjA2ZDgwMTZjZmIzNzRhNjA2IHB5M2sKKzg3MDY0IDJmNWNkMTg2OWIxYTVmNmMxYzNjMjFiOWUxYzk2MWYxZjUwNWQ0ZWEgcHkzaworODcwNjUgZWM3OWFhZjhjMGJmYzJjMGYzZjNmOTU5Yzk1NTI5ZDkyYjNiZjNiNiBweTNrCis4NzA2NiA4MzU4ZGMxM2E1NzQ4NWIwODk4ZTZjZjRiNzFhMWYzNmQ2NDZmNTQxIHB5M2sKKzg3MDY3IDFjY2JiZGRiZWE4ODFlN2JlNjgzMmEyM2Y2YWI0MTc1YTFjYjhmYWQgcHkzaworODcwNjggODM5NTVlNDYxYzRiYTczNWFhZmIzNmM0ODY1NjNjMzQyYTY2NDVjYiBweTNrCis4NzA2OSA2ZmI1NjQwNGI2YmIyM2VkNTI1YWRkZGE2MmNlNGFjYjY4ZjIyZWRkIHB5M2sKKzg3MDcwIDRkMGJmYzMwMzcyNDY0OTMyZTQ5MmVlNTcyZmIyZmQ1NGFhNzRmMGQgcHkzaworODcwNzEgYzM4ZGE0YzU0MTg0ZThmMDdhZjdmOTkzOGY0YmM2MzQ3NGNmNzI1NCBweTNrCis4NzA3MiAwNzMxNzZmMDM4MTNmMGU0ZGEzMzNmNjliYzA4MDY3YmFkMWY0OTgyIHB5M2sKKzg3MDczIDY5YTUwYmE0NGU2NWI3ZjljYTZmZDU2MWU1NzE3MGIwNzQ0MTc0MGIgcHkzaworODcwNzQgMjg1ZTBjZmJmOTBmMzEzODlmMmI5MDllOTUwNWI2ZmJiOWY3MzkwMiBweTNrCis4NzA3NSA1YzNhYzg3OTVlOWM0ZDQzNzMzNjUyZTdhNDE0YjdjYTAyYWY5MjFjIHB5M2sKKzg3MDc2IDY4MWE4ZTg5YzY1YzgyMzhhZGFlNmU0YWU3ZWU2NjA0NDJkYzcwOGYgcHkzaworODcwNzcgYjM2N2I1MzJhODIzMzlhNGM0MzEwNDFjZTI4NDRmMzMwOWM4NTI5ZiBweTNrCis4NzA3OCBjYjNjZWJjZWJhNTBmZDJhYTdkODE0NWQzNjU3NjA3YWFmNGMwODRlIHB5M2sKKzg3MDc5IGI4ZWVkN2E1NmE4Y2VlNTQzZDUwNWQxNmE3MTg3MGY5OGZhMzA3ZGIgcHkzaworODcwODAgNTlmOTcyYjFkNTY3MDFmMTVmZDZhZDhlMmE0MzI0ODQ0OTQwZDc3MSBweTNrCis4NzA4MSA1OTdjMzA2OWFmZDM5OTE3NDcwMTBiMjc4NWI3NzVkODE2MmIwOWUwIHB5M2sKKzg3MDgyIDNmMjQyNDRiMTBmZDg4ZDZmYzM0Y2IyNTg3ODU3Zjg3MGQ2MmNjMjQgcHkzaworODcwODMgODE3MDU1NTQxNmFjNDQ4ODIzZTM5ODE3NDE0MGY4Yjg5MjFhYjIwZSBweTNrCis4NzA4NCA1ZjI4NmJhMDEzOTZlNzMzOGU4NzFlNTVlMDA2YmY1MzFlZGM3ZmVjIHB5M2sKKzg3MDg1IDQ5NjViZTkwZmUxOTlhODMzNzJkNjYzNTM5OTI0MDJmNmZkZWY2ZWEgcHkzaworODcwODYgOTAyZGI0NzIyNTk0YzJmOTA1NWU1NzJlM2Q1MjY3MjU2NTU5NzM5NyBweTNrCis4NzA4NyA5MDc5ZWNkNDMzYTIyNTg5NDU2YTg1YTg5MDM4MDUwNTE5YTE3ZWIxIHB5M2sKKzg3MDg4IGI2MzVjZWE5NDE5NTc4MGM4NzE2ZTIzNjQ3OWFmMzE5YmNjMjYyNTMgcHkzaworODcwODkgZjQ0OGRkNmI2N2RiYzBmZTU2OTAxNWNlNmJlNTA2NGRiYzhjM2Q3OSBweTNrCis4NzA5MyAwNjI5MDdmNjg1YWM0ZTcxZmU3MTdiYTBiMTkzYWJiNDZlOGZjYzFmIHB5M2sKKzg3MDk0IDIzZmY0YTBjMzc1YjMzMzJhOTdlNTc5ODA1OGJjMzczNGRlZmNhMDEgcHkzaworODcwOTUgMWU0YTZlNTU3NmFmNGU0NzAyYmFkYzhlMGZhN2NmYWU1ZmUxYWQ3NiByZWxlYXNlMzEtbWFpbnQKKzg3MDk2IDI2ZWRmYjI3YTBjZThlOTQzYzVkYzhkNTYwNTVjZGY0Nzc2YzczYmUgcmVsZWFzZTI3LW1haW50Cis4NzA5NyAwYWUwN2NhYWI1MDZmZWYxNDgxMTlhMWM1ZDJjZTY5MDJhMDhkNTI3IHJlbGVhc2UzMS1tYWludAorODcwOTggMjZjNjU5MzU3MWYxZmFlN2QwMjM0M2YzNjJkYjNlOGEwOWZiNTMwMiByZWxlYXNlMjctbWFpbnQKKzg3MDk5IGUxMTViMmJmYTlkN2M2NTM5ZDBkODFmNmI1NWEzZWY1MjZlZGNmM2MgcmVsZWFzZTMxLW1haW50Cis4NzEwMCAxNWE3NTcwZTNmZmQwM2QyNzZlMGFhZGVjMjI0ODE5NzgzZTI2NmRmIHJlbGVhc2UyNy1tYWludAorODcxMDEgMzBlYWNhNDczNWNiOGM4ZTYxYjVmOTJmYmJhOGVkNGE0ZWZjZTIxNCBweTNrCis4NzEwMiBjNDg5OGNlZjQ3MTVmMDhmZTczYmMyN2M2OTNjNGViZjM1ZjgwZGJhIHB5M2sKKzg3MTAzIDI3ZDZhYTRmMTgxMTFmNTIzODg0MjBlY2Y1NzcwYzMzNDRlYTA5NjEgcHkzaworODcxMDQgMjUxM2Q4OTJiMjU0MThiNWQwYWEyYWJlNTUzYmU5Mzg1NTc1YzIyYyBweTNrCis4NzEwNSA4NjhkNTZhYzFjNTkwNjYyOGYzZTgxMjJkMGVjMTNlZjNhNDhlYTkzIHB5M2sKKzg3MTA2IGMyMzQ5YjZiZmZhZjJhNDlkM2FmNDNiNmY3ZjgxZGY4ZmE1ZTRhZmMgcHkzaworODcxMDcgNGE5NGMyZGJmOWU4NGE0NTFlZmM2NmJhMzVhNGY2NzI0NTFmMGQxNSBweTNrCis4NzEwOCA4N2YyM2M3OTQ5ZWU4MTA5MzNmOTQxN2ZjNWM5NDYyYTE5NWVmN2RlIHB5M2sKKzg3MTA5IGExZjM2YjkzNzNiYmFmMTkxZjUxYTgzMjljOGViODRhMGQ2YzcwZGEgcHkzaworODcxMTAgMzkwMDk4NDE0NzFiNTk3YTNiMmI3OGU3ZjVlM2YwODNlOTkzYTJhNCBweTNrCis4NzExMSA2ZWYxYWVhZTQyYmViNmVjODUxZWRmYjAzMWNjMjA1Yzk4MTExMzIwIHJlbGVhc2UyNy1tYWludAorODcxMTIgMTFmYzZjMzgwOGI2NDA0N2ViZWMyNGIzMjQxNTZiN2MyY2M3MWQ5MCBweTNrCis4NzExMyAyZmIxZWM1YzczNWViMjAzN2FmZGQxNTZiZTAxNDVmMjQwZmNiZjRmIHB5M2sKKzg3MTE0IDEyMWVkODQ4YzY3MGIyYjUyZTZlMjZkYjgzMjFiZGY0MDc1OTE3OTkgcHkzaworODcxMTUgMzk2ZDlmYTRmYTI0MzJhZmY4OGY1ZTRlN2RmYTY3OTZlYzdlOTVmNCBweTNrCis4NzExNiBhYjEzNTUzNzAyZjU1YzI1ZTFiM2I2N2I5Yzk1ODQwYWU0Y2UyZmFjIHB5M2sKKzg3MTE3IDQxN2Y4Y2NjZDIwODlhNjk5ODU0Zjk5YmNjYmExOTgyMzMzYzAwNjAgcHkzaworODcxMTggNTBkZTlmMWE2ZDU0NzAzZTQ5OThhNzc1NDgwNTBiMjFiMTg3NDc3OCBweTNrCis4NzExOSA3ODg5ODRiN2RhNmYyZWVmMTgwNDlmMDg5YzUyNGVmODk5MDI4Y2FiIHB5M2sKKzg3MTIwIGJkZWQwNjdmOTFlOGRkOGI1N2NiNmI2MzFkODYzNjMxOGM5ZGYzNTQgcmVsZWFzZTMxLW1haW50Cis4NzEyMSA3NWNhYjZjZDk3YzYzNTIzYTQzOWIxMjE5NTI3ZmI1ZjQzNTEyZWJiIHJlbGVhc2UyNy1tYWludAorODcxMjIgNzg2ZmJlZDc4ZDU3ZDc3NzI1MGMyNjBlNTc0ODgwODM0NDU0NmQ5ZCByZWxlYXNlMjctbWFpbnQKKzg3MTIzIGFhMzBiMTZkMDdiYzQ1NGZmYjYyNTU2OGExZTRhMDE4MTliZjAzYTUgcmVsZWFzZTI2LW1haW50Cis4NzEyNCBmNGY1NmVmYTI4NzAyMDFjZmNkNTM1ZTA1MzRhNzY4Yjg2ZTg3OTI3IHB5M2sKKzg3MTI1IDllNzJiNmQwZjQ4YmEzZjkyNTdiZmU2MmJiNzc2MjYxNjUyYjI2NzMgcHkzaworODcxMjYgMDgyMWVmMTIyZDUzMWRjZTFhNzkzZjI2ZmY3NmQxNDlmNDgxZWNmNCBweTNrCis4NzEyNyBhNDZlMTllODY2ODAxNjUzMzk2MTFhYWFkZTQ3YjMwYjFlMDc3MmYwIHB5M2sKKzg3MTI4IGM3MThjYjc4NmFlYjVmYzU4MDI5N2VlY2RmMjA3MmYyODY1NWVlODggcHkzaworODcxMjkgMzI0ZDkzZDY4NTMzMWRmNmFmOThjYTg0ZTNmOTdmOTRkZjA4MmM0MyBweTNrCis4NzEzMCBkOTRkMzY1ZDdjZTVlYzZmYjA1ZTgyNzQwNjA0NjY5MWVhNTA2Y2ZiIHB5M2sKKzg3MTMxIDUyMjAxMjJlM2U5YmM3ZDM5ZmVhNzM2ZDljOWU2YmUwOTdmM2IzNTUgcHkzaworODcxMzIgN2I3ZjZlZjRmOTljN2ZmNjEyNDAxNTNlZjdiYzVmODZmMzk4ZGM3MCBweTNrCis4NzEzMyA5NWE3M2U0YjJjZWIzZTAyOWY4NmUzYTkxNGNhZWM0M2I5YzljZTY4IHB5M2sKKzg3MTM0IDRjN2UzMmU1OTI4ODU3ZjgwNmIxMzQxYWQyYWZiYTBmODlhYzg3NjYgcHkzaworODcxMzUgMTEzOTI1Yjc5Yjk3YjAzYzZlZWI3NGFiZWI3Y2E0MzAzYzI4MjAwYiBweTNrCis4NzEzNiBkNTc1OTFiZGY2MWU4ZTk4MzY1NGVkYmQyNWM5ZjNiODBjYzFmZDZjIHB5M2sKKzg3MTM3IDUwZDE3MGJiNzFjNzUzMTg2MTQ2N2NjYzU3NWQwNGI5NjgyM2Q0ZTQgcHkzaworODcxMzggYjg0MjYxYmQ2ZDRhNGU2ZWIwYmE3NzQyMTRkMTQyZjRjYWJjNTNhZCByZWxlYXNlMjctbWFpbnQKKzg3MTM5IGUwMDcyYmRkZDJkNTU3MDBhMzhjZmFiZWY2N2RhOThhYTk0YmFkMGIgcmVsZWFzZTMxLW1haW50Cis4NzE0MCA4ZDRmZWVkZWFhZWQzNDVhNGZmNDVhMzEwNWQxZjUxMjc1NWMyYjU0IHB5M2sKKzg3MTQxIDE2OWJmMDFiYjUwN2UwNzg5NGFhM2Q4MzAzZGEwZmM0ZDM4ZTM3YWIgcHkzaworODcxNDIgMjFkZjgxNTVjNzcwZjNjZmE2NjY5NDQwMDEyYzlhOTFjMjIxNDBmZSByZWxlYXNlMjctbWFpbnQKKzg3MTQzIGY4YmVhOTk2MDQ2MjExOGJiNjFiMzNkMGQ3MzQ3YmI2YmU5ZGNjMjMgcmVsZWFzZTI3LW1haW50Cis4NzE0NCA4MDA1NjNhYzA1N2VkYWUzZTZlMjUxZTVlM2JjMDNhODhkOWM5YzliIHJlbGVhc2UzMS1tYWludAorODcxNDUgZDI4MTI2ZWJkNjBkMDJkYTk3MjIzNDVkMTIzYmM2MTE1NjkyZjViNiBweTNrCis4NzE0NiA2ZTlmMzk3YmJhMDI1ZTJhYjNlZTIwNmIyYzU2ZTgxYWRjYjYxODgwIHB5M2sKKzg3MTQ3IGM1MzdiZDM3ZjUwOGFmMTNjMjEyOGY0MmQ1MjFlYTI1NjBlZmEyOTggcHkzaworODcxNDggMWI2NTlhMDA1NzBiZGI0YjdkYjBhNmUzMmZjZDA5NmNkYjNiZGM1NiBweTNrCis4NzE0OSA3NDAzMDJiYjNhZGZiMzg0YjY3NjQ2YjQxNjhiOWRiNDc5ZDgyZTk5IHB5M2sKKzg3MTUwIGJiY2U0MmY2ZGQ3ZGJiZjI2YTk2MTJkMzIyZWY2M2IzYmRmMjU2ODAgcHkzaworODcxNTEgM2M1ODljYTQxZDNhM2QxYjE2MTVhMjY2NGNlYzgzNDBiZjgzODM5NSBweTNrCis4NzE1MiAxNDg2ZDMxNzFjNjg2NzhhZjU3YjE2OTU5NjdmNzg0MmMwNDk2YTJmIHB5M2sKKzg3MTUzIDM4ZGM0MTM5ODU0YzhjYjhhYjZjN2ZhNDhmNDk2NjEzNDk1YzY1N2YgcHkzaworODcxNTQgOWNiMmVjYmIxZjBjYTliNzZlNDJmOTJlYjI1MzdmMjY2ODNjOWUzNiBweTNrCis4NzE1NSA4YzI1NGI2NGE0MzgwNGNkMjkxZjVjYWI5ZjMzMjcxMDcxMzQwOTU1IHB5M2sKKzg3MTU2IDhkZTMzNTYyODU1ZmFmOWNiOTZhYzYzZjhkZjQzMzljYzgxNjhjMzAgcHkzaworODcxNTcgYzg2ZGMyYmQzYWU4MTMxM2U0N2ZhYzkzZjIyYWE3NGQzZmE2ZmQyOCBweTNrCis4NzE1OCA3NGZlNzNjMTA2MTFkMjNkMWUzOGI2MzU1OWRlNWNhMDk5YjlkOGNiIHB5M2sKKzg3MTU5IDczOGVhZWVkMGIxYTI0NzI5ZDE2MDI5ZWQ2ZDQ3ZjM0NmUxZDM0OGQgcHkzaworODcxNjAgNGY4NDk3MjBiZjQxMzczMGY2ZGJjZTdiMjNjZTgzZjQ1ZjE3MTVkMCBweTNrCis4NzE2MSAwMTMzYjhjYjdkODA2ZDM3ZTM1NzMzZDdiNDllOTY1MDZjNDU4OGY2IHB5M2sKKzg3MTYyIDMzMGE5ODUyMzk2ZGY4OGVmZDZjZTkyZTVjYzI5YzM4MzA5NmNkZWIgcmVsZWFzZTI3LW1haW50Cis4NzE2MyA3MjUzYmU5NmExOWViZjE2ODhhNmViYzdmNDgwNDNlZTJlNDhiZTY2IHJlbGVhc2UzMS1tYWludAorODcxNjQgZmE1NWIwM2JlNTc0MDJlMTg5NGY0ZGZjNjM5MWY0NzRmYjM5NjYwOSByZWxlYXNlMjctbWFpbnQKKzg3MTY1IDA0ZWQ5ZGJjNmUwNTFjMzA5ZDY5ZThiOGMxOGJkMTBjM2RjYWYwYmQgcmVsZWFzZTMxLW1haW50Cis4NzE2NiA3MTRiOGUxZWY3MjYzZTI4MDljOWFkOWE1M2YwNTk4YjA4M2FhNTFkIHJlbGVhc2UyNy1tYWludAorODcxNjcgYWMzYzU1MjcxZmRkNDJhMDFjMTNlNjRiZjNhZjZjMjhiZWNiYTcxZiByZWxlYXNlMjctbWFpbnQKKzg3MTY4IGFhOTlkYzhmNzA1ZGZiYTkyZDU1ZmFiNjY0ODFmNGJjMGJiN2RhZjQgcmVsZWFzZTI3LW1haW50Cis4NzE2OSAyMDdlYTlhMDUwNjJmMjQyYTcyNzYxNTAxNmIzNGQ5ZDllYjUzNTYxIHJlbGVhc2UyNy1tYWludAorODcxNzEgZDZjNzAyZDQwZmZiMmRlOGUxYmY0Mjc1NjJmNTBjNTE3NTUwYTcyYSBweTNrCis4NzE3MiAzNTMwNzlhZjRmNTI3NWM5MTE5ZDIzYTE1YTQ4YzMyNGQ3MTRkOTY1IHB5M2sKKzg3MTczIDcwNDM2YjQ2ZTQzNGQyZDkyZTg2NDg3NDk3MWEzM2FmMGE1NGFkNGYgcHkzaworODcxNzQgYjFiZGVmNTY5NjZlZTEzNDlmYjY5MTM4YjExNDM2MTQ2MzU4MjU3ZCBweTNrCis4NzE3NSA4ZDM4YzZhMjcxODFjMWQxNTdkODYwMDE3YjM5NTQzZWY2MDZhNzVjIHB5M2sKKzg3MTc2IGE4MTFmN2MxMGU4MjUwZmI0ZTM0NDgxYzE2MDQxNTZjZjIxOGM4ZGUgcHkzaworODcxNzcgZjIyZDkxMzMyZGI5NGY2YTNmNjBhZGQyOGE4ZmU4NDM0MDY0YmU0NSBweTNrCis4NzE3OCAzMDZkODhhMzIzNTcyM2QzNTNkNWQxMjdmODUzMGQ2ZDk3NmEyZWU1IHJlbGVhc2UzMS1tYWludAorODcxNzkgYjk3ZDg0M2Q2NDU2Mjk2ZWExMzc0MThhOTVkYmY5NjlkZmVmYzZkNyBweTNrCis4NzE4MCAyNjNjOTk4YjJmNDU5Yzg3MTU2MWUyN2Q0NTA5YTMyYzRkYzIyZjcyIHB5M2sKKzg3MTgxIDNiNjI4NTU0ZTFhYTE1ZTNmODJjYTc2MWE1ZmQ4Y2EzYWUxZTEwYzIgcHkzaworODcxODIgNjEyZGQ1ZjJhYWIzMWE3NmRiZThhZTg5MWUzYjQyNTI4OTYxZDc2ZCBweTNrCis4NzE4MyBjZTI4Nzc2ODczNzAwNmU1MDliMTA5YWM5NjRkYTgxNzJhZTkwZWI3IHB5M2sKKzg3MTg0IDUzYmRmMWM4MTQ4NmJjZWRhMWY0NTg4ZjVkYWJiMDk2NjliZDljMDUgcHkzaworODcxODUgMmNmN2JiMmJiZmI4ZWVmN2I2OTQyNGE2ZjYwNDI2MDc1OTU3ODc5NiBweTNrCis4NzE4NiA5OTliMWFhMjQ2NzgzYWVmOTBlMjY3NWE4ZjM3MmFiNTBhYjhmMWJlIHB5M2sKKzg3MTg3IDE1NTMxY2JlM2Y1NWZkM2VjZjFmMGU0NzM0Yzk4Y2MwMDJhNjA0MWEgcmVsZWFzZTMxLW1haW50Cis4NzE4OCAwZWFkZDFiMmQyNThjODA0NjIyMDdiOTk3MzRiYzFkNjJiMzljNzhlIHB5M2sKKzg3MTg5IDViZmE0MzZhMjg3YmYwNDA0NzBiMmU3OGZkYWI3ZWZkMzMxNWY5NDIgcHkzaworODcxOTAgN2FjYTMyYTI4OTBlZjIwNGE2ODhmMDliZTRjNTIzOGFhYzYwMDg4OSBweTNrCis4NzE5MSA2NmQ5ZTM4ODE3NjEwMjJhMjc3YTlkZTgyMzRhYjQ1NWQ1OTBlNjk2IHB5M2sKKzg3MTkyIGQwMmU3NmRhY2U1YmYxMWUzMTM3NTc1MmVmMjRlODkyOGYwZTM3MTkgcHkzaworODcxOTMgNTU0ZjI2Y2UzM2UxOTk5Y2NmOTI2YzBiYmQ3MmQ4OGFjZGEyMjI1NyBweTNrCis4NzE5NCAzMjQyZmQxNzcxNjY0ZWIwNzRmMDY3OGIyNTBiNTllYjM0YTFjYjkwIHB5M2sKKzg3MTk1IGI3NDA1MWNhZDcxNzgyMzcwN2VhMDQ3M2EwYTgwYWQ4ODFiMWFiYjIgcmVsZWFzZTMxLW1haW50Cis4NzE5NiBhOTFiMzE2OGZjZTI5ODFlYmUxZjU3MzI2YjcxZWE1YmRkMTY1NmEwIHJlbGVhc2UyNy1tYWludAorODcxOTcgY2ZlN2NhMWE3YmFiMjQ1ZjU5Y2JkZmIzMzYzNWRjMzgwNjQxZjkyMiBweTNrCis4NzE5OCBmMzEzMGMyYzQ2ZjVhNGVlNDNhMWQzZGQwYzZiZWI1ZGI2Y2JhMThhIHB5M2sKKzg3MTk5IDk5ZWNhNjJkNjkxOTk0YjY4MDZkOWU0NWVkNzZiZDZhMmNjODU4OTkgcmVsZWFzZTMxLW1haW50Cis4NzIwMCA4MDgxNzYyZWI2ZDFhZWMxYWU2MDk1MTg2OGY4OGRjZjZjMmFhYTU0IHJlbGVhc2UzMS1tYWludAorODcyMDEgMTBlZTRmMzJiOTFjNDAyYzg0N2EwZjQ1NTU1YTUzNzIzM2RlMGIwMyBweTNrCis4NzIwMiBiN2NmYjVmMGZjNTViMzY2MzY3MDljYzEwOWQ3MTU3ZTlkNmI0N2JmIHB5M2sKKzg3MjAzIGVkMmFjMjEwODRmNGQ5OTM2NDI1NTFhNDNhNWM4ZmNlZmEzYmU3MGIgcHkzaworODcyMDQgMjg3MmY0NmU4MTk3MGQ0YTA0YzhlNWMzYmIwY2ViNDM3YzJkNzhjNiBweTNrCis4NzIwNSA0NzA4OGU1Y2I0MDEzMWZlYzM0ZTNjZWFhMmM4YjZjNTcyZWIyMjNmIHB5M2sKKzg3MjA2IGVhYjhmOTFmNTc1NGRkODdlZDhiZjdmNjhkYzIxNjBjNTk0NDQ0ZGIgcHkzaworODcyMDcgZGUwNWQ4NDY3OTVlNGI3NzYxYTIzMmYzNzMwMDljZDYyMWU2YjU0ZCBweTNrCis4NzIwOCBmYTNkMDc4NzI5OTM0MTExMGU3MTUzM2RiM2U4Y2JlNmQwNjZmM2JiIHB5M2sKKzg3MjA5IDA2MjA2ZjAwMWJjZDRjNzIxZTMwYmIyNmIyYTgzZThmYzE0MjM3YWQgcHkzaworODcyMTAgYmM4ODA5YjNlNGJlN2Y1ZjFhZjE4MzNiYTUwNTQ2N2EzOWUxMjY3YyBweTNrCis4NzIxMiBmN2U5ZWE4YzYxYTAyNzc3NTNjZjI2MDZjMzdmMDFjMWU2NTYzYmQwIHB5M2sKKzg3MjEzIDY2OGM0MjE4YWUyNmU3MzZmZDJmMWQ3NTVkMDljMzExN2MzZjM0NGYgcHkzaworODcyMTQgNGY4MWI1ZDM1NmNjZDQ1ZjRmYzllZWFjYmY3YmQxNTVhYjQ1NmJlMyBweTNrCis4NzIxNSA3OTRmNTRiYjk3MTM4MGM0NDM4ZDk4NTQxYjZjN2VjMmM1YWQ0ZWJhIHB5M2sKKzg3MjE2IGY4Y2Y5NzMxNGFlZWFlMzYwZjRmOTlmMjc0YWY2MTgwY2E3ZDM3YmYgcHkzaworODcyMTcgYzI4NzcxMTc3ZmM0MDVmZDAyZWEzNDVhYTk1YjBjNDI1YTBhZmVkYiBweTNrCis4NzIxOCAxOTExNjE5MWQ1MmQ4YWIzZDllZmE2YmZkNTg3MjU1MjhlNDkyZTQ0IHJlbGVhc2UzMS1tYWludAorODcyMTkgYmFmMGQxODllZDA3MzRiNzRmMmQxNDMzZTVlMzkwNTQwODgzMGRiOSByZWxlYXNlMjctbWFpbnQKKzg3MjIwIDE2YjZhZTc1ZGU5NDY4MjAzY2YwZTM4ODgyNzM1NzAyOWIxMTg3YWEgcmVsZWFzZTI3LW1haW50Cis4NzIyMSAxMGJmZDNjMTI5ZGFlMjcxYmFkNjc2ZDc2MmRkZWNmNGU1ZjJlYjJmIHB5M2sKKzg3MjIyIDI2MmJhMGFiNGUyMWVmMWU3OWM2MDJjMzY2ZTgwMDgwOGZhMTU3MTQgcHkzaworODcyMjMgN2Y4Y2RjZmJiMDhlMTgzNWZkZDQxZDg3MGQxZjNjMGU5ZWE1ZTI4NyByZWxlYXNlMzEtbWFpbnQKKzg3MjI0IGFjOGRhNTU3ODQ5M2M0ZDRiMDA5YjU5ZWJhNWZiYWQ3YzA3YjNjNDcgcmVsZWFzZTI3LW1haW50Cis4NzIyNSBiMDg0YjUwZTRhYTZkYzkxODNkYzBlODI3NjQ4N2Q5NTc2ODhiODJkIHB5M2sKKzg3MjI2IDcxZmIwMzI3NGE4OWNjM2E2OTc5Y2MxNGQ3NjczYzdhNjE1MTE1NGUgcmVsZWFzZTMxLW1haW50Cis4NzIyNyA5YWM4Njk5ZDg4ZDYxZGIzMWRkZDRlZTNiNWFkZGU0NDk1MzEzYWZkIHJlbGVhc2UyNy1tYWludAorODcyMjggNmY0NmFmYzUxNDM0Y2E4OTEwOTY3OWExYThmMjU1MjJiYjBjNjViOSBweTNrCis4NzIyOSA1OWI0M2RjMzQxNTg1MjliYTIwOGRlZGViZGQ3M2ZkY2UzODFhNzRkIHB5M2sKKzg3MjMwIGRhMjBlN2EwMWZhNjNhNmQ4YWIzNGYyMTBkYTEyOGNlNDQxNTY0ZWUgcHkzaworODcyMzEgNjliODU5NjRlYzg4ODM4MDA5MTk3OWExNzU4MDY3YjA0ZmYzNzY3MCByZWxlYXNlMzEtbWFpbnQKKzg3MjMyIDhjY2Y1OGIwYTVkYTc3NjAwNmQ3ZmM5OGQ5ZTY5NzVjODIyNjVhNzggcmVsZWFzZTI3LW1haW50Cis4NzIzMyA3Njc0MjA4MDhhNjJhZWZhMzFiNGNhYWQxZjYzMDE0YTVlYjdmYzBhIHB5M2sKKzg3MjM0IDA3MmVlM2Y3NDNjMjFmMzc3MGNjZjEzYWQ0OGUxMGExODA0ODA2M2YgcmVsZWFzZTI3LW1haW50Cis4NzIzNSBiMDY2YmQwYjY0ZTdjZjY4NDJmODhkOTg2ZmM5YzI5ZDdjMzUyYjQzIHJlbGVhc2UzMS1tYWludAorODcyMzYgMTIzODFmMTllMmFkZmM4ZjE2ODUwZTljNjVjNmNhNjcxNjcwMjhjMSBweTNrCis4NzIzNyAzMTEwZDRhNDg4NzhiNGQ1MTdjMjAzMDI0Yjc2YTBjNjdjODdmYzQwIHJlbGVhc2UzMS1tYWludAorODcyMzggZjNhZDUyZjY2YjhhNDJhNTc5MzkzMmM3MjJkMDQ5Zjg5YzI2ZWRjOCBweTNrCis4NzIzOSA2YWZiZTQ2MTJkNDk0M2JmN2RkM2I1ZDQ4NWI3YjRlMjc4YzU1OTk0IHJlbGVhc2UzMS1tYWludAorODcyNDAgNzlhMmI2YTEyODA1MTFkZmJmM2I4ODVmYTAwYWU4NjcwODQwODAxMSByZWxlYXNlMjctbWFpbnQKKzg3MjQxIGQxOGY0MzEzYjE5N2U1NmIyYjIyMWQ0MzgxNjgyODNiM2NkZjBiYTggcHkzaworODcyNDIgNzgzZjMxMWNhODY5M2NlZTAzMmRmZGQ0NzlkYTVlNjFiMDUxZGE1ZSByZWxlYXNlMzEtbWFpbnQKKzg3MjQzIDhkNzE3MWIzY2RkNjlhNzM4NzhlYWMwOTQwODlkMGU3ZWIzNGRkNTAgcmVsZWFzZTI3LW1haW50Cis4NzI0NSBlMTU2NTE5YTFjNjAzNzQ0ZjcxNzJlZWM3ZDc3ODQ0OWUyY2Q4OTE1IHB5M2sKKzg3MjQ2IDM4YWFhNzJjMDEzMWE5NTY5MjgwMTY2MTUzMjAwNzE4OTAwNWYyZjggcHkzaworODcyNDcgZDZjY2JkM2Y1YjQ1NTFjZTRmZTJkM2QwZjAzNGE3NmU5NjcyZGZmNiBweTNrCis4NzI0OCA0MGY1NDM2MzY4NDZjNzhiNmMwYmM2MTQ5NmJmNjE4NDIxZTFhMzAyIHB5M2sKKzg3MjQ5IGY5ZDA5NTU5NmVhOTY0MDFkZDkyMDkyYTU4ZjllOWE5NDAzZTcwNWEgcmVsZWFzZTMxLW1haW50Cis4NzI1MCBkNzA5ZDExNGNkZTNjMDVjNGEwNzQ1NmRjY2JjZDI1YWI1Y2EwYzQ2IHJlbGVhc2UyNy1tYWludAorODcyNTEgNTMxZjQyM2IwMTlkMzFmNTFlMGFkYzQ5YTY4MGRiYTE5ZmJlMjY2YSBweTNrCis4NzI1MiA3YzM3MTViMTBjZGQ0NWJlMmJlZjZiMjAyOGQzMDlkYzQ3YjE1ZWJlIHJlbGVhc2UzMS1tYWludAorODcyNTUgNGVlNDA4NmRkMWI3NDA1ZDBiYzI4ODg4OTc0NjFkNmY1N2NkMWRhYSByZWxlYXNlMjctbWFpbnQKKzg3MjU2IGE2MTU0NDc3OGZhNzQxYzk4NTVmOTE1YTdiY2E3NmU5NDQ4M2EyODMgcHkzaworODcyNTggMWMwMjdhMDgzYTZlOTBiN2IzOWZiNzFkNzYyN2I3ZGQ4NmExZGQwYSBweTNrCis4NzI2MCA4ZTcwMWJmZmU2ZTJjMGIyZTM3YTgxOWRlMmYwN2MzY2VhZGU3ODBkIHB5M2sKKzg3MjYxIDE3ODU4YWIyY2Q5MmE0ODA5ODY0OWMwNDViNDU4Y2Y2NzI5NGFkNmIgcHkzaworODcyNjIgY2ZiN2Y2MzIyZmJiYmFhYmZkZDllYjdkOTIzZTBjYmEwZTIzYzcwZSBweTNrCis4NzI2MyA3OWE5MGZhMDc5YThiZjE4MDI3ZDE1MjdmZTE2YmJjNDg4OTFhOTRmIHB5M2sKKzg3MjY0IGFhNDI4YWE5YjY4YjJhNzIyNzc1NjE3NWMyMDEyNDc2YjRhNzQ4OTggcHkzaworODcyNjUgNDAxMjVjZGRhZmI5MDUyOWQxMmVkMDVkOTFmYjM0M2RhOTk2YWI1ZCBweTNrCis4NzI2NiBhOTZhMmJjY2RmOGEyN2ExMjNjNjc3NmVjMjEzMjY5ZWJmYTgzMmUyIHB5M2sKKzg3MjY3IDAxOWFkOWYzMmMxM2U4YWJhYTI3MGRmMTEwODVjZGVlZTQzNzVlZTAgcHkzaworODcyNjggNDcxNjMwODQwNDI2M2ViMTljNTJjZTI5NmE4YTQ2ODAwNjE1MTljYSBweTNrCis4NzI2OSBhZmU1ZjZiMWM3NjY3NzcxYzFhODI4ZDk3N2IyZWZhODQ3NmNlMDFkIHB5M2sKKzg3MjcwIDIzZGRiZDgzNTk1MGI4OWMxOThkNjYwOTU4MjEyZTNlNTBkZjI5NTEgcHkzaworODcyNzEgYTBmY2FkOTA3MGFkMWM3YzliYzEyMmM0NmFlYmIxYWQ0NjhhNTQyNCBweTNrCis4NzI3MiA2ZGEzN2MzNGY4YTMwMzI0MGU4YmRiZjUxYTE3YjFlYmJjYmFhM2ExIHB5M2sKKzg3MjczIGI1ODA5Mjc4NzIxMzc3NDRiMTlhY2Y4ZjJmM2I5NjNjYmVmYmFlZDIgcHkzaworODcyNzQgNGRjZWMxNDZiOTlkNDZlZWU0NWM0NTE3Yzg0ZDNiYTVjOTA3ZjAzOCBweTNrCis4NzI3NSBhMjhlODcyMTExN2MyNmM0Nzg2MzdmN2RjZmQ5MTY1YjYyOWZlZGU0IHB5M2sKKzg3Mjc2IDlhMmU1NmQxMTQ2ZGYyODMwYzlmNjc4NGZhYmJhNDQ1OGQ0NjY4NTggcHkzaworODcyNzcgMmQyOTk3ZjE5ZTkwYzU5ODZhNGIyODk2Nzg0NDk3NDk4Zjg2YTVlNiBweTNrCis4NzI3OCAyNjEzMTgzZWMwMjUxYjBjODdhZjNhMGI4NjhmYzk0Mzg4NTNmY2Q1IHJlbGVhc2UzMS1tYWludAorODcyNzkgNWI0NDA1OTI0N2RiNjJiYTg4ZjVkNzVjMzBjZjMwOWQ2ZjljNWE1ZCByZWxlYXNlMjctbWFpbnQKKzg3MjgwIDAwZjdmNTFjZThiYTU5NDdiMTIyNTU5ZjY2YTE3NzVlOGFmZTY0ODIgcHkzaworODcyODEgZmYwN2EwNmY2ZDY1ZDBhMzAxNjdlOTFmYjI2N2EyNzkwYTRjOWJmZiByZWxlYXNlMzEtbWFpbnQKKzg3MjgyIDNiNWNjNjYzOGYzZDEwZDQ4MTY1ZDQwYmY0MzFhZDFmZTBmOGI2MTMgcmVsZWFzZTI3LW1haW50Cis4NzI4MyA1ZWMyYzJiZmFkZWQ1MjMxMGRiMTJmMmFjMDg4MzU5NzcwYmQwNTc5IHB5M2sKKzg3Mjg0IDljYzE5NzhlYzlkNDk4YzQ5MTIzM2Y3YTVkYzFmNGU2ZWUwMDljZWQgcHkzaworODcyODUgOWIxNTk0YzE1NDRiN2VjYzg3NDM0NjZlNzFjMDc0MjMxNjMzMTNhNSByZWxlYXNlMzEtbWFpbnQKKzg3Mjg3IDgwZTNhZDVhNjMxZDU3NTNhMzBkNzBkYjlmYzNiMjE3NmMyOTI0M2YgcmVsZWFzZTI3LW1haW50Cis4NzI4OCA0YWUyYzIxMTE2ZjFkZjNkZGE4ZGMzMDYwZjk0ZWFiNzgzZWFkMDk4IHB5M2sKKzg3Mjg5IDdmNTQ5OTA4YmY1MDMyYTlmYTQwMmQ3YzgyYWQ2ZDFjZTZkZmNjOWYgcHkzaworODcyOTAgYTUxYTRmNWU4N2U0OWUyM2IwODY1NTYwYWNhZGI1OWUyNTNiYjUxYyByZWxlYXNlMzEtbWFpbnQKKzg3MjkxIDU2OTk5NDk1YTliYWM1YmI0NWI1NzI3MzQxMjg3YzExZTYxMmVkNzEgcmVsZWFzZTI3LW1haW50Cis4NzI5MiBiNzUwYzQ1YTc3MmNlOGJkOTYxZTE1NjNiN2E0NTA0MzY2OGYyNjY0IHB5M2sKKzg3MjkzIGY1OWNkYTU3YTdmYTgzMzk0MDgyZTcwZmE1ZGU5ZDM3YmQxZWI2NGEgcHkzaworODcyOTQgYWQ5YjVjNWQyODMxZjRiZDAyNWVjMTZlNmM0ZjM0OWRjNDBmOWJhZSBweTNrCis4NzI5NSBkMmQ1MjZkYjI3NzM2YWNiYmU0MGE4N2QyOGMxYjNmMzE1Zjk1Y2FiIHB5M2sKKzg3Mjk2IGNhN2E1ZDEyN2Q1N2NkZDRhZTYzNjE1OWVjODU3NmUwMDljY2UxOWEgcHkzaworODcyOTcgZWNkMjhlODRjNDRiMGY0YzRlNzdjOTZiNTI5NzBkYTg4MGFmZDQ0OCBweTNrCis4NzI5OCA5YzFmY2VkZWYyYzE5ZDVmNWY5OWM3MTFjMGFlYzYxNjE0MWI0NTg4IHB5M2sKKzg3Mjk5IDNkZTZjZDkwMjYyNGM3YjkwOGYwZTBiYWYwYTU4NGU3ZDcyYzJkNTMgcHkzaworODczMDAgM2YxNzUyZDQyNTNiYjEzZmQ5YTE5YWY1M2ExMDc1YmQxOWJkNmE1OSBweTNrCis4NzMwMSAxYWE0ZTVjYTkxNzQyMTc0MzdlMTlkY2E5NTY4NTRmZTE2YzlhOTFlIHB5M2sKKzg3MzAyIGRlNWI5MGRhYWJiNDJlMTIxNDdiOTkzMTA2ODU3M2JjMWZkNWMyOWYgcHkzaworODczMDMgZTA4YzIwYTY3ZjY0N2ZlYWQ4NzhmMzIzN2Q4NzEwMjc2NTg5YjU2YiBweTNrCis4NzMwNCBhNjE4Mjg3ZWFmZDY1OGIxOWY4YjBlNjg4MTc2M2IxMzE1MWYwMjI2IHB5M2sKKzg3MzA1IDAwMzdkNjVkZWJkOGQ5OGM5ZTQxMjdlN2EwMDlmYWZmMzBhOWEyMjAgcmVsZWFzZTMxLW1haW50Cis4NzMwNiA3ZThlYjYzNGYwYTkxYzU0N2U4N2VmMjc0YjIwOTJiY2ZkMDBjMGUxIHB5M2sKKzg3MzA3IDJhYTA1MGE0NGFhODFmNDY1MGE3NWVkNzBhMzFkYjMwYzE4Y2ZiN2MgcmVsZWFzZTMxLW1haW50Cis4NzMwOCA1OWUyMzAyOTdiZmZhZGRkNGQzNmQzZWM5OWJmMGJhY2JiNjI5YjRjIHJlbGVhc2UyNy1tYWludAorODczMTAgZDg0ZWM4NTYwMGIxYTk4MDRkNmI1NGU5NTJkNTgwNWM2OWQwODI2NiByZWxlYXNlMjctbWFpbnQKKzg3MzExIGZkNzI2MTRiOTAzMjEwMWE1N2E0M2E0YjAwZjc5MzBkNzkxMjgxODcgcmVsZWFzZTI3LW1haW50Cis4NzMxMiA0YzA2MTliODMyZTFiY2UzZTI3NmMzY2IwZmEyNGY3ZTQ3MmE0NDg5IHB5M2sKKzg3MzEzIGQ5YjQ0MjY0NzlhYzYxNzhlZTdiZTVmN2IwMjBhZTAzYWUyODNlYzcgcmVsZWFzZTMxLW1haW50Cis4NzMxNCBjNjg4M2VjNDg4ODA0MmIzZjgzMDJkODEwNmVjYmUzYThkYTU5YWY3IHJlbGVhc2UyNy1tYWludAorODczMTUgNWI5MmZiMDJlODNiYzVmYzliODcwNWI3YjZmMDdjMGUyMGExMTdmYyBweTNrCis4NzMxNiBhYjY1MDAzMzQ2YzExYTE1MWM1MmIwZDdjMmE0ODcwMjk4MDI3MmFlIHB5M2sKKzg3MzE3IDQzNmJiYzdmMGFhNjhhYTc1NjU5NWEwNjU2YTJjZDRkMDhkZjA3ZTggcHkzaworODczMTggZGMzMjc4OGYwZTRlMzI1OGJiZDk5ZTU0ZjdkNWExNmQ5MGY5M2M3ZCByZWxlYXNlMzEtbWFpbnQKKzg3MzE5IGZjMmYwYzg2YjQ5N2NiOTM4ZDU0YmQwY2JjYTA4NmY1NWU4M2VlYTQgcmVsZWFzZTMxLW1haW50Cis4NzMyMCAyYzQyOWQ4YzVlZTIwMmEzNzIzODAzZDYzNzdjZmY1ODQ2YjYwZDExIHJlbGVhc2UyNy1tYWludAorODczMjEgODVjMmZlMzFiMTFlYzA5ODQ2ZGVjZWRiYzg1ZDNkNjY4N2RlNzQ4ZiByZWxlYXNlMzEtbWFpbnQKKzg3MzIyIDRkMmI0MjhkNzg4MjI1OGE0MWE0NzRiOGZiM2YyNzYxYzAwZmIyYTIgcmVsZWFzZTI3LW1haW50Cis4NzMyMyBlOWQ5MjRmZTM3ZTAzYTMwNWU2YTZlY2UyYjU2OGQyZmNmNThjZDM1IHB5M2sKKzg3MzI0IGVhOGY5NGNlODI5MzI2OTZkZTJlY2VjMzZmMmQyYWNkNTUwZjAzZTcgcHkzaworODczMjUgYWVkMmJiYWZhNTUwZTlkZmRmNDFkMzIyODU3ZjAyNGI3NWI0Yzc2ZCByZWxlYXNlMzEtbWFpbnQKKzg3MzI2IDIzOTFjZTM1YWQ2OTdmMmIyNjQzNzA2M2RlZjlkODVhOTU4NjE2ZGMgcmVsZWFzZTI3LW1haW50Cis4NzMyNyA5YmZkNmFiZjAxY2EyOWNkZTRmYmVlYzkwZjhlMjQ4Nzk3YWE3Zjc3IHB5M2sKKzg3MzI4IDA3NGMyMTcxNGEwMjc4ZTQ4MjkzNDk1YzM5OTQ0MWUwNTVlNDIxMmIgcHkzaworODczMjkgMGMyYTdlNTc4NWM4NjExMmNjZGFhNWUyOThiYzYyZDExOTk4Mjk5NyBweTNrCis4NzMzMCA3YTU1YjgwOGU0OTFjMTAyNzY2MjAxMTU0MjRhMjZkOWUyMmNlNzMzIHJlbGVhc2UzMS1tYWludAorODczMzEgNjliM2ExNTFhZWM1NzQzMjE5M2QzNmVlYjlmZjM0Y2UzOWJlOGU1NSByZWxlYXNlMjctbWFpbnQKKzg3MzM3IDA3MTEzZDFlZjhlNTFhNTJmZDU0N2RkYTY3MTBmMTVhNjMyMDM4MjkgcHkzaworODczMzggNjE5MzVjOGRjMDllMGRiNWM5NjYyNjVkZmI4MDk0NDU3ZjVhNWU3NSBweTNrCis4NzMzOSAwMTZiNDI1ZjBjZDBjZTQ0ZWIzNGZjMzc1NjNkZmYwYzliYmYyMjRiIHB5M2sKKzg3MzQwIGI2ZDNmZTcwODAyZjMyOTBkNjNhZGI1Yjk4ZmNhN2I0ZTQwNzFmZGMgcHkzaworODczNDEgNWE2YTFjYTI0ZTA0Y2ZhYTE1Zjc3MTNiYjc3NDEzYjlmNTEzOTRkNSBweTNrCis4NzM0MiBjNzBhYTAxMWMwNTk4NWU0NjJlYmRkNDZmZTE5ZjQyMGM0NmNhZjViIHJlbGVhc2UzMS1tYWludAorODczNDMgMzQxYjkzZDgzMTU3MWQ4NDhhY2FlNmRiMTgzZTc0ZGFlZTBiNjQyMyByZWxlYXNlMjctbWFpbnQKKzg3MzQ0IDIyZGI0ZDJmNjU1NDk4OTk5ZGE1MjhlZmMzY2IzOWQwNDVhMjViMDcgcHkzaworODczNDUgMDU1MGEyNDQ3YzFlNjMxYTAzOWE3NDhjZjljZTk3YjYwNzliYTQ5YSBweTNrCis4NzM0NiAzYTI5NTNlMjFmNzg1NzM0Njg3ZjFkN2M5NTM4YTIxY2VmM2U1NDZjIHB5M2sKKzg3MzQ4IDViYmY1YjZkMzY1ODA1MjVjNDdhNWM3YmI3M2ExZTBjYTcyYjg3MjUgcHkzaworODczNDkgYWM4YzZjN2MwY2IzNTY3NTRkOWE5NDE3NWRmMDQ5NzQxZjc5NWRlYSByZWxlYXNlMjctbWFpbnQKKzg3MzUwIDg5MjIzNjEzN2RiOTYxODEyYjQ5ZWE5Y2ZjZjVjMGUxYjE1OThlZTkgcHkzaworODczNTEgNDNiYzU5MjJmMjk5MDY0NWM1MTM1ZmU2M2U2MDYyZjkxNjllN2UyZCBweTNrCis4NzM1MiA2MWJjODYyNjY3ZTZlM2Q5ZjNiMTNhNTUxYzQyMTUyYzAzZGNiOWQ3IHB5M2sKKzg3MzUzIDI2YzBmNzY5ZTliNDcxZDFiOTBiNzc1OWE2YmI3YjU5ZjBkNzVhMTEgcHkzaworODczNTQgMjg3MTdkZTRjNTYyY2MzYTlkMWFmM2Q5NzY3ZjZjMDhlZDk0ZjU0YiBweTNrCis4NzM1NSA0MDliYTI1MDg3MTIyODg0ZWEwNjZmOGUyMzc1ZjFiYzNiOTY3OTgyIHB5M2sKKzg3MzU2IGE1ZWQ0YTEyNDMwYWE3YjFkZjg3ZDNjNTg1MGVjMDg3ZGIxNDNhZTMgcHkzaworODczNTcgODg0YjE0ZWQ4ZjU0M2RkNzZhMTA3NDU1OGM4YTZiMTQ3YzM3MmFlZSByZWxlYXNlMzEtbWFpbnQKKzg3MzU4IDY4YTQyYjk0NGZlMzk4YWE2YjQ5NDRiY2M5YzBkMjI1MDc0OWQwZGUgcmVsZWFzZTI3LW1haW50Cis4NzM1OSBjZDI3YzNjNDQyMzRhZmVlNWE1NDJiMThjZjRiNzc4YTk4MzhjYTRkIHB5M2sKKzg3MzYwIGEwYTk5NWUwZTY0MDE5ZjZjMGI4NjE1Mjk5OTlmYTg4ZjUyZDE2YTAgcHkzaworODczNjEgNzhjMTUyMjg4ZjUzYThmZDMzYzNmNmU0NDM2OWVlMmM5ODBiNGQ5NyBweTNrCis4NzM2MiA0YzA0MjYyNjExNDgzMWY3MWRkNzBjZDI0M2JlNTRjODcyMjA4YmIxIHB5M2sKKzg3MzYzIGJmMzZkNmJkZGU2MGI0YWYwNTBiM2U1ZDlhNGNiYTdjMjA1ZWM1Y2EgcHkzaworODczNjQgOWNmMTUxMmY4ODEyYzIwMDFlMGU3NTFkNmY5MmNkYzVhMjBmZjZhZSBweTNrCis4NzM2NSBjN2EwNTM3YzdmM2MyODY3MDhlNWZiMjRkYmJiOTllYjczZDgyMjg2IHB5M2sKKzg3MzY2IGEwNjY0N2ZmNWQ5ODE4ZTFmZDE5ZjUwMDZjNTQ5MDIwOTk0Y2U3OTUgcHkzaworODczNjcgZTY1Y2QyMWQ1ZjczMTRlZTdhNTEwODQ0MWNhOTY0N2E0NWJhYmZlMCBweTNrCis4NzM2OCBmZTdhOGExYmRmM2Q2YmM3MjEwMzAyNjI2MmVhYWY3NjMzODc2NWFkIHB5M2sKKzg3MzY5IDcyZjUzNmQxMDc1MGY0YjhmMTRkM2ZjNDRjYmIzMWY5MDA0ZmNlYWIgcmVsZWFzZTI3LW1haW50Cis4NzM3MCA2ZmU5NGZjMDJmYzc1OGQzMGVkNzRlNWM4MTEzZTJmNjc1YzkxMmNmIHJlbGVhc2UzMS1tYWludAorODczNzEgN2FjMDNlYzNiMjc4Yjk1ZDk1YjM1OWI2YWMwOTcyN2JmYWExYzBhYSBweTNrCis4NzM3MiA4YWRiNzVjNjkzMDQ3Mjg3NGJhMTM1NjEwZjM2YjI1ZjI0MDQ2NGZiIHB5M2sKKzg3MzczIDBiOTQ2MzVlZDJmNmZhODkzOTMzOWM0MjYyODQ0MGEzMzYzNjY0MTUgcHkzaworODczNzQgNDQwMTAwMzliZGRmYTY5OWQ0OGFmYWQ3NWE3NWY2ODBjMzVhYjViOSBweTNrCis4NzM3NSAzODE1NTYzNjljYWY2YTJlZjM0ZGUzYjNiYTkwNzkxNmFjYjY1YmIzIHJlbGVhc2UzMS1tYWludAorODczNzYgNWY0OWQzY2IxOTRmOTcwZDUxMTk5ZDFjMzlmMzM5ZTZkZGUwZjhiOCByZWxlYXNlMjctbWFpbnQKKzg3Mzc3IDczNjk2NGY3MDhkZWMyMzhmYzUxYTA3M2YwY2E5YWRlMDQ1MDM4YjIgcHkzaworODczNzggMjlkYjk3YzE3NmM5Y2Q5ZDAxNTAxYTJmYTI0NzRiZjRhOTg2ODczYyBweTNrCis4NzM3OSA1MTVkZTIyNzcwMDE4NGQxM2U3NGQxOWE2YTliNzBlNThiNTZjMmQzIHJlbGVhc2UzMS1tYWludAorODczODAgN2E0ODU5MGFmZDkyZTRiZjhmMmE4MWM1OGVkODQ5OGM0N2RjODQxZCByZWxlYXNlMjctbWFpbnQKKzg3MzgxIGMyZDVjZDAzMmJjOTE2MWY5NDI1YmM5NDFiOWNhZDI0ZWNkYTY5OTYgcHkzaworODczODIgM2MxODJmNzFkNGM5YzU2NjA3ZWFhZmU3YzRiNjU1N2EwZmZlMzk3ZSByZWxlYXNlMzEtbWFpbnQKKzg3MzgzIDk2NTMxNGYxMmY3MTlkYjljM2VmYTUyMjBhZjY0ZmJlZDRiNTFmYzAgcmVsZWFzZTI3LW1haW50Cis4NzM4NCA5Mzg1YzUzNmY0NTQ4MDI3OTcxMmVkYWM4NmJiZDYzYjg4NzYyODU2IHB5M2sKKzg3Mzg1IGVlOWJkYWNkM2NiNjEwMDk5OTc5YjljNzBiYmUxZGRmNzYxMTIzMzAgcmVsZWFzZTMxLW1haW50Cis4NzM4NiAwYWY5NGY5NzZkNTAxOGZkMmM1YjA2YmNmNWI4NDk0ZjkzMTI4NmRiIHJlbGVhc2UyNy1tYWludAorODczODcgZGFlNTE3NmQ3YjdmMzAwYzIyZTFiMDBkNjE5MjhiYTQyN2M0OWFhZSByZWxlYXNlMzEtbWFpbnQKKzg3Mzg4IGQxNmFkZDU2ZGFjMDM0YjllY2NkYTBjOGNhNjdiZWVmOWQxMDRiMTYgcmVsZWFzZTI3LW1haW50Cis4NzM4OSA1NTJiYWM3NTU4ZTc3OTJiMGI0MWIxN2U2OGY5ODA3ZDllNWJhNDUyIHB5M2sKKzg3MzkwIDRlMjIyMDJlNjJmODNjZDEyMzBhMmEwYzNkM2RkMTgzMjdjMjA5ODcgcHkzaworODczOTEgOWZiODlmYWE1OTU4MzNhMjAwNDlkMzczYzVkMmI5NGZiY2VjYzNjMyBweTNrCis4NzM5MiA0ZTJiODYwZTY1N2M5YWJiNDJkYmMzNWMyNDM3ZTc2MjI1MDY2MmMwIHB5M2sKKzg3MzkzIGU1OGZhOTgzYTk0ZWY4Y2ZjMGFiMjUxZWI5NmVmYTIwMTk0MWVkY2QgcHkzaworODczOTQgNGZhZmU5N2QwYWRiYTZmMDQwMzI5MjJkNTBlMDQ3ZWMzMGFlYmM0MyBweTNrCis4NzM5NSA1YjgwMjZmYWEwYTczZDYxNzkxNTc2ZjdiNWY0N2VjODUwMTA2MmVlIHB5M2sKKzg3Mzk2IDEzYjRhMGY1MmMyYzJjYmY0ZGQ2ZDZkMzJmY2FmZmM0MjhjYjY1NzUgcHkzaworODczOTcgN2MzMGQwZjEwMjhjNGQzNzU0NmI2NTE4OTU1MDZiZjJlMzhiNTM4ZiBweTNrCis4NzM5OCA0N2NjNDg5NjVlNTI1MzQ4YmZkYmM0NGFhOTBjYzJlNGMyZmNjMTkxIHB5M2sKKzg3Mzk5IDZmNTZiMjQ3YTdjZDI4MjMzY2IwODc1N2ZhMjg0YzM4MDFkMzM3ZjkgcHkzaworODc0MDAgZTNhZjVmM2E3OTA0YzBkNTM0M2VjOTYzM2VhNjZlN2FjZmQyM2E2NiBweTNrCis4NzQwMSA5YjI2MjQ4ODMwZjY1Y2E2MWRlOGQ3NjJhMWJmZmJjOTc2MGE2YmZiIHB5M2sKKzg3NDAyIGZjOTZiZDE4YmRjNjFjNTg5MjQyMDMwMDE2ZGIxMDZhMDhhNDMyODUgcHkzaworODc0MDMgNmQ1NjI3YTA2Njc3OGRkZDliMWViNjY1Mzc2ZGQyZWM0YmEyNWU3YyBweTNrCis4NzQwNSAzZDg2Y2Q5ZmM1MzRhZWZhYWY1NzM2Y2JkNDNhZWY5ODZhODljOTQ1IHJlbGVhc2UyNy1tYWludAorODc0MDYgMGM0YWZjNWY1OTM4ZTI3YmU5NTAyMTNiOWE1OWJjOTJmZWM0ZGJjNSByZWxlYXNlMjctbWFpbnQKKzg3NDA3IDQ3ZGJmM2VjMWFkN2Q4MjlkMTZkMzg0Mzg4YzI5YWIzMTdmM2Q0MmQgcmVsZWFzZTI3LW1haW50Cis4NzQwOCAyNDg5NGZhN2M1OGM1MGM1YmZhNjhiNzk3ZTY5MjNkMTNmNWQwMTkzIHB5M2sKKzg3NDA5IDUxNzk0YWRhNjgxMGFmNDk4ZDU3MjFjNDM1NmQyNmEzMDRiMjgxN2QgcmVsZWFzZTI3LW1haW50Cis4NzQxMCAyMmEwZWE3ZDk3NGViNmQyMzZiYWFhMzk0NDYxNDBmYWE5N2M5MDI5IHJlbGVhc2UzMS1tYWludAorODc0MTEgZjU2N2E2Yzg1OTM2NDVkODc3NjczNGYzNWIzMjNlYWU4YjZjM2IzNCBweTNrCis4NzQxMiBmY2FhOTg3Y2NlYTAyMDYyN2M0ZjBmNzk3NjU2NzIyZjFhZmUwNTYxIHJlbGVhc2UzMS1tYWludAorODc0MTMgMzY3MTk4YjczM2NkYmI0MjY2ZmExNDEzOGZiYzgwMzZiNjNhMTAyNCByZWxlYXNlMjctbWFpbnQKKzg3NDE0IGIxNjhiMmNjMWIyMWQyZTI0M2E4YTZjZTkxMTdlYjY1YzYzYTMzZGYgcmVsZWFzZTI3LW1haW50Cis4NzQxNSA4MTViNjkxNzU1ZmEwYmZjMjQ0YjM1MjU1OTIxZDI2NWU3ZjQzZmY4IHB5M2sKKzg3NDE2IDg2ODU3MTE1ODZkNDMxZWM2YmQ1ZDM1YzA3ZjAxNGNhY2YwYWU2YjQgcmVsZWFzZTMxLW1haW50Cis4NzQxNyA1NjRhNDE2NjZlZjZmNGIxNjI1Yzc2ZGY1MmQ2MWExZWFhM2ExOTQ5IHJlbGVhc2UyNy1tYWludAorODc0MTggOGI1M2YyNTYxNTlhYTNhYWI4NDBhZDhkMzNlNDMyYTJmNjI5MTVhNiBweTNrCis4NzQxOSA1MmQyOWM3MTU4ZmUyMDc5MmEzMzE0OTY3NjQ1ZTc3NDkwMzA1YjFlIHJlbGVhc2UzMS1tYWludAorODc0MjAgY2QxZGVlNTVhY2U4NGVlNjljOTZhZWMxNGNiOWUzNTk5ZDA0NjRmMCByZWxlYXNlMjctbWFpbnQKKzg3NDIxIDIwNGJmNDMzZDM2NmEzMDdlNDZkOWZiY2MyOTUzZjdlMmMzZGMyZDkgcHkzaworODc0MjIgMDk4Yzk3ZTk1ZDkzMTlmNWM3NmViMzhkNmI4NWVkMTQyOTM2NGUwMCByZWxlYXNlMzEtbWFpbnQKKzg3NDIzIDBkYWYzOTFhMWYxZGY4NjhkNzAwZjQ5ZDc3ZmViYWQ5ZDNiYTBjMjEgcmVsZWFzZTI3LW1haW50Cis4NzQyNCBkNWM4Y2UzYTcwZDQ4OThkNWY5YmZmN2U0NzZiMDhmMmYyMDVlMGYzIHB5M2sKKzg3NDI1IDJmMmRlNmNjNjJjNzgwNDRkMTYwODQ4ODE1ODgxZmJjNDIwZGU1YWEgcHkzaworODc0MjYgNTcyZjczZmYyOGMyMjJmZTQwMmVmY2M5Yzg3MDU5NWZhMzUxYzZmOCBweTNrCis4NzQyNyBhODQyMDRmMTE2ZjhiNjdmNGUyYzA5YThjN2ZkYzgwMWNjODMxMjk4IHB5M2sKKzg3NDI4IDVjZjg1NTVlNWJlNTVhZTEyNDZhM2U5MDU1MTBmMzlhYWMzYTU3MzQgcmVsZWFzZTMxLW1haW50Cis4NzQyOSA1OTVmMjU4ODA2ZWZmMGFkYmNiNWE0NTkxNjkzNDM4NDhkZDExNGY4IHJlbGVhc2UyNy1tYWludAorODc0MzAgNDM4YTQ2OTgwMDRhZGQ1NDg2Y2Y3YmM0YmNkYzhkNDI4MzRlYTRhOSBweTNrCis4NzQzMSA1NjFlYTY0MDE4OGIzNDRkNjA0ZWMwYTJkZDEzODBhYzQxMDI1OGY0IHJlbGVhc2UzMS1tYWludAorODc0MzIgM2Y5MDUxZDg2NjAzMjkxOTI2YWZkMGMwZmIzZTAxNDA0YTA2Nzk0MSByZWxlYXNlMjctbWFpbnQKKzg3NDMzIDhlN2Q0YzM5NzQ1ODdjZDM1YjQ1OThjMjI2MzQwY2MwMzZhNjY1NDcgcHkzaworODc0MzQgNTNhNDFhMTE3NDExYmJiMGYwMTU5YmYzZWJhMmNkNWVhYWJiMGFlYSByZWxlYXNlMzEtbWFpbnQKKzg3NDM1IGM2M2FjZTVhNTM0NmJiMGE5YjE1MjEzNzIwOTA1MDMyYTRjNzYwNWYgcHkzaworODc0MzYgYTgyZGYyMDk4NThhNjRkZmUxMWNlMTk3OTY2ZjFkNWZlMWI0NmQzNiBweTNrCis4NzQzNyA2ZmY1MGNlZjk4NGVlNTU5YjI5OTc3ZjQ0M2EyM2Y3YmY1NjBkYjk3IHB5M2sKKzg3NDM4IDkyNTAyYjM2NzRjYmVjNzhjZjgyYjIzMGFmZGNhZmM2MWU2MzIzZmUgcHkzaworODc0MzkgNmY0ODM0MmU5ZTNkZjY5YjJlNzZmMTljZTZiMDQyMWY1MTRiNDY1ZSBweTNrCis4NzQ0MCA5OWQxNDYzZWRiNTZjMWVkNzVlYzg1MWNkMmZjMGM2MTdlNGI1OWZmIHB5M2sKKzg3NDQxIDg5YTQxNmZkN2MyOTcwN2JkNDFmZjg0NWE3OWMxZWQ3NmIwNmRiNDQgcHkzaworODc0NDIgNmE2MjNhNzY3MDYyMmM3MmMzZDU0ZDg2M2QyZDZkOWM1OGU5ODc2NyBweTNrCis4NzQ0MyBlMjE5ZmI0MTM0ZTNiZDdkNmM4Mjc3MjUzMGIzNmY5NjQxYTg5MmMxIHB5M2sKKzg3NDQ0IDRkYzI0OGFjMjY0ZjU4OTA0MThmMzI2YTkyNWExMmI5ZGJmZTRhMWEgcmVsZWFzZTMxLW1haW50Cis4NzQ0NSBjZjE4ZDllNTFiOWQ2MDA0MzNhM2E3YmRlM2VmZjNkZTkyNWRhYjIyIHB5M2sKKzg3NDQ2IDM2YWMzZDlkNzRjMTUwNTI5YTFjY2E2ZTU0YTQxZWQ5MmEyNWY0Y2UgcHkzaworODc0NDcgODNiY2RhZDI1MzM1ZjhiMjE4YWExMDVlYjljMzU0ZDk0NjkyMGFlOSBweTNrCis4NzQ0OCAxMjFiYTA0ZjBmYmIxMDFhYmIzOTdhYWJlMDRmNmNlOWU4YTYyZDVjIHB5M2sKKzg3NDQ5IDIxOTJiYjk1ZjU0YjBkYWUxZTNmODk1ODBkZjhjZTZkOWNjMzE4N2MgcmVsZWFzZTMxLW1haW50Cis4NzQ1MCA5M2Y1NjE5NGNmNWI4MmMzM2JlMjM3YjBmMGI0MzIzNjg2YTQxMmEwIHJlbGVhc2UyNy1tYWludAorODc0NTEgNzY1Nzk2YTM0YWJlMTg4ZDA0NTkzNTI2ZTZkYWU2NjgwM2Q4OTQ1MiBweTNrCis4NzQ1MiA4MTk4MmFjZWQ4NmJjOTVjNzM1ZTBiYmZlODcyNjg3MjgxNjZmNDVjIHJlbGVhc2UzMS1tYWludAorODc0NTMgYjVkMDNjZWI4ZDc5MDc4ZTM5M2I3YTQwYzA0N2I3ODQyMTY1ODNkYSByZWxlYXNlMjctbWFpbnQKKzg3NDU0IGQ0ZTBkYTc2MTg4YjYwMjY3YWJhNThkYzgzZDFmM2FkYWMzYmZjOWYgcHkzaworODc0NTUgM2I2MTVlZTc4N2IwZjA2N2U0N2Q0Zjc1MTUzYjIxM2U1ODMzODBlNCBweTNrCis4NzQ1NiBjMzRhYzlmOWRlODMxN2QzNjI2ZDY5YzNlMTQ1NWYwMzg1MjI2YjA5IHJlbGVhc2UzMS1tYWludAorODc0NTcgNWMwODJmMTk3ZGRmNzczZWQ5ZWIyYTE5MTA4NzY4NTcwZGU5YzQzYSByZWxlYXNlMjctbWFpbnQKKzg3NDU4IGZkYjhiMDJjMWU2NWIzNTIzZmJiY2U4YWJhMjBjYjQyMTJmMzMxYmMgcHkzaworODc0NTkgZTFiZjNjMWM5NTYxMzQyNWFkZGU4NWQ5N2I3MzRlZmI5YWQyYTFkYiBweTNrCis4NzQ2MCBjYWY4OWE2YTE3YTdlODRiYTBmNGJhMmExNGIwZmFhMzJjNDA3MGJkIHB5M2sKKzg3NDYxIGNlZjI4MTdlYTE1NzI1ZTk0ZjA5Mjc3NWExNDkwZDcwNTU3MDY3MjQgcHkzaworODc0NjIgZDVmYWE5ZmZkZjJhOTMzODRlMjJkZjhjMjI5OWM0M2EwNjhjODRhMSBweTNrCis4NzQ2MyAwOTY3MzE2MjBmZjJhZWFjY2I1NDIzZTczOTdjZWYwMzQ1NGYyYTcyIHB5M2sKKzg3NDY0IGMzN2Q2ZGIwMmM4NGQwM2RjNjYyNjBkM2JmYmQ5NTEwNjQ2NDUyZWQgcmVsZWFzZTI3LW1haW50Cis4NzQ2NSBkMmMyOGEzN2Y3NjMwNjc1MDQ0MjBlNWE4ODkwOTA3MDBkZDdkYzI2IHJlbGVhc2UzMS1tYWludAorODc0NjYgODlhZTJjM2IwODVjYzFiMzk3YjYyYzA4ZWVlZGY2N2MyYzJkYTcyOCBweTNrCis4NzQ2NyA1MTMyNDE1NGY4OTNmN2I1NWUxMTliYTA4ZTU4MjkxYTMzYjhiN2Q4IHB5M2sKKzg3NDY4IDFjNTYwZjRiNWU1YjQ5ZDA0ZTJjY2MyMmNiZTU1OTEwNGU3MDY1ODYgcHkzaworODc0NjkgOTY4ZGIzZTViMWQ4MDAwOGZlNjYyNzBjNjY4NzgzYWZhNjM4ZmJiYiBweTNrCis4NzQ3MCA2MTg3NjYxY2RjMDg4YmMyYjIwMTY2MGUzN2NkOWFlYzllMjczZjFiIHB5M2sKKzg3NDcxIDM5Y2VhOTgwOTA1ZDNkMmMzMWVhNzM1NjkyNjBkNDI4OGQxYjZiODQgcHkzaworODc0NzIgMmU5NjcwZDY3MDE3MzFlNWNmY2IzMDg2ZjZjMmZkYWIxMzY2ZGYyYyBweTNrCis4NzQ3MyBjNTEwYzE1MDVjZTcyMzRlYjAzOWY1MDNlYTFkNjY5YTNjOWIxNjVlIHB5M2sKKzg3NDc0IDU3MDFhODA4NDAwMTkxN2Y2ZmEyZmMxNmFjOWU3N2ViNDc0MTVlZmMgcHkzaworODc0NzUgODRjMWQyNjc5NzA3OGZmOGYwMDkyMTcwZGE3MzYyM2RmN2VlMTQ4NCBweTNrCis4NzQ3NiAyZDgyY2RmNjJiMmNkZTJmZDU4NTM2Y2E1NzcwNDJhNTc4NDc0NmM5IHB5M2sKKzg3NDc3IDZjOGExYzExNzYxYjQ4OTEyNDI4ZDVlYTJkZDY0ZDE1OTJhNGMwMzUgcHkzaworODc0NzggOGU5YTQ3ZGIzOTNjZWZiZTM4MzRhNDkyY2Q4Njg3Y2JiZThmNGFlOCBweTNrCis4NzQ3OSBlZDhkZjVhOTBjZjE5NjI1MDU4ZDIyZDkzNmQxZDE0NGY5ZDk2MjQwIHB5M2sKKzg3NDgwIDk1MDNiMDY2MjUyZGRiMTc5OWIzOGEyMTI5OWM2MTgwMWJmNGIzMjkgcmVsZWFzZTMxLW1haW50Cis4NzQ4MSBkNTFhZmU0N2RlNzMyYTQwYmU1ZDE1OWY3NGYzOWUzMTAyY2VhNzBlIHJlbGVhc2UyNy1tYWludAorODc0ODIgZmE0ZGU2NmM3ZGVlYjNjN2M4ZmUzYmQxOTc0ZTM5MDlkN2NjNDM0NiBweTNrCis4NzQ4MyBjNTY2YzQxMzE0MzlmMTc3OGYzMTUzMGI5YTEwZGRmNzQ3MWRiOTcxIHB5M2sKKzg3NDg0IGE2N2I0MmJmZjQ3MTg2MjdmZmUzMTMwOTU0NWRkMDI2MWYxYzBlZmMgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NDg1IDM4ZDY2OTgwMTg3ZTI4NDY0NWIwODFlNmIxZjJiMTliODhmZWNkODUgcHkzaworODc0ODYgNjc4ZDgzMzZmNGMzZGM2NmUzNTczYzI4NTdkYTk0OTA1NmU1Njc5YiBweTNrCis4NzQ4NyAxYjIxNjBhZDRjNmU0YTZiOTE3NjJiNDBkYmFkYTkyZjE3YjY5ZDgwIHJlbGVhc2UzMS1tYWludAorODc0ODggNDg4ZWQ1NTBiN2Y4ODhjZWY4ZWIwNWJkNTE3OTM0MWUxNDI1OWFjZiByZWxlYXNlMjctbWFpbnQKKzg3NDg5IDRiOTI2YTEzZGM1NDI4ZmFhZmNiZGUxZjcwYmVjMmU5Y2MyNjZlNmYgcHkzaworODc0OTAgYTAxNTMzYjAxYjljOWJjMTY4ZmU3ZDEwNzUwMzY5Mzc3ZTM2YjRkOSByZWxlYXNlMzEtbWFpbnQKKzg3NDkxIGQ1YmJjNjViYzJiM2UwMWEzNGVhZGIzYzY4NTkwNzBkNjIwYTRiYTUgcmVsZWFzZTI3LW1haW50Cis4NzQ5MiBjMTdhNDk5NzIyNDQxNDc0ODZhNzk1ZmJjZGMyZWNjNzVjZGY2YjBjIHB5M2sKKzg3NDkzIGJmMDllY2Y2OGExOTk5ODYxYjcxZWExNDI2OGI3ZDQ0ZjlkMGMzMTYgcHkzaworODc0OTQgNGQyMGFlYTYwNWM1ZmI0NDAwYzNiN2IxMjY3MGJiMGNiNmUxNjY2ZCByZWxlYXNlMzEtbWFpbnQKKzg3NDk1IGZiYmVmY2Q2YTFhNjk1YWRmYjZlMGNiNDdhOTM0ZmRlMWY0YzRjODAgcmVsZWFzZTI3LW1haW50Cis4NzQ5NiBmNGJhNTRlMGJhNzc0NTA2MzI1NjgzMTk4YzhlYzg1MDE4MDk0YmEyIHB5M2sKKzg3NDk3IGMyYWU5MGFjYzkwODg1NjY2MDg5ZDRjNWQ0ZTEyNzUxNjg0MzAzODMgcHkzaworODc0OTggMTA4YmMxMjY5MzBmN2Y4ZjEyZWViY2Y0YmQ0YzEwOWU3MTJlNjY3OCBweTNrCis4NzQ5OSBlMjBhNjQzNmE5MjcwZjhhZTdmNTBiMjVkMWNlMGU0NjIwYzg3NmRmIHJlbGVhc2UzMS1tYWludAorODc1MDAgZGQ2ZDFlY2JlYjU2ZDNjYTMzMmFlMmQ5MjExYzZjNDZmNGUzMGUxMiByZWxlYXNlMjctbWFpbnQKKzg3NTAxIGJjZDZhNjViOGIyMjNlNTVhMjk5NTMyNzUzMDllYTFmZGRkMWQ2YzkgcHkzaworODc1MDIgNDQyZjFkYTAxYTg5ODJkNGFlYzQ3ZmRmNWYyOTA0YTJmOTQ0OGNhYiByZWxlYXNlMzEtbWFpbnQKKzg3NTAzIGQ0ZDNjODlhYjM4OGYwYzk1MWVmNDgyM2EzOTJmZjIyMzRmMjEzYjcgcmVsZWFzZTI3LW1haW50Cis4NzUwNCA5M2U5NWIyZTFhMWEyM2IzYjFiNWJlOWNlZjYyZTAzYzNhNmVhMzg1IHB5M2sKKzg3NTA1IDRiYjdmN2IxNTFmZWE5NDk4Y2I1MjY3MTk3MmJjN2M3N2QzNGMxODMgcHkzaworODc1MDYgNjZkODQ0NmEwMTliZTc2Nzk5NDRjYzNjOTA3NmFkOThhZjY2MjlhNSBweTNrCis4NzUwNyBmNjExOTY0NTNjNzgxZTcwNmZlY2IxOGRlYjA3OTkyOTcxYzI0YWRlIHB5M2sKKzg3NTA4IDIyYzEyYTVkOGVkMzA1MTU1MjcwNTliYzY5YzA2ZDdhNzM3NmE0OTMgcHkzaworODc1MDkgNWRhZTA0ZDQ5ZTE1Yzk5ZGU4NTljYzI1MjhlMjM3YzE5MWY1ZmVlOCByZWxlYXNlMzEtbWFpbnQKKzg3NTEwIGM2OTQ2ODViNzVlMjQzYTFjYWE3YjJiMDE4OGI0M2E2NmUzYmFiOTAgcmVsZWFzZTI3LW1haW50Cis4NzUxMiA2NjQ3MDVkYmZlNjI5OWUxOWQzMDEzYjQ3MmVkMDU5MTc0MjY0MGExIHB5M2sKKzg3NTEzIGVmZGM1ZDBkODFiNzIxYzI4Y2E2M2U4NzNhZDQ2MzVjZWNlOWU2NjAgcHkzaworODc1MTQgYmJmNzUxZmRmNDIwNjc3YzU0YmRjMjM0NmVmZGI2Yzc3OWQyZGVkYyBweTNrCis4NzUxNSAyZDA5YWY0YzEzN2M5YzZmM2NmNGIxNTUzZmZmNWM0NzA2NDI4NDA4IHJlbGVhc2UyNy1tYWludAorODc1MTYgODk1NDk1MzVkOTc1ODc0MjMwZTJiOTk1ZmUzYzE1YTJjMTExZDgzZSBweTNrCis4NzUxNyA2ZjE5NjIyZGQzNDJiNGQ5MmYwYzdlN2I1ODBmMGM5ZWM4YzE2YjIwIHB5M2sKKzg3NTE4IGZjODM0YjMyM2YyNjdkZDQ0ZGZlOWFlN2VmOTE5N2QyNzhiZTVhYWYgcHkzaworODc1MTkgNTYwNWY2OTIwYjYzOGU0MDhlOWJjYzViZmI1NDJiYTQwNzVkZWViYSBweTNrCis4NzUyMCAzMDVhZjZmNWNhYmY5NGViNDJiOTU3MDk2YmUxMjZjYTlhMTI0ODhkIHB5M2sKKzg3NTIxIDUzMjA5ZDAwZDNhYjE5MmU0NjVjMzQ1NzRiYTRkMWViOTNjMzY4YzAgcHkzaworODc1MjIgMDAwNDAxM2FlOTg0YTljNDE1MzAzMmUzYmJlMDBlNzgwYjM2YTYyOCBweTNrCis4NzUyMyAxMDlkZWZjMWE4Y2ZiMmUyYjJmNDIwNzNkM2RhNjA2MGU4MDExMjBlIHB5M2sKKzg3NTI0IDNhNDgxNmMzNmRmN2ZlY2Q3OTY5NGVmYzIxY2RmMThkOTQzZjhjMWYgcHkzaworODc1MjUgZTBjNTJjMGU4NTg2MjMzMGNmMjMzNWQ2NmJmNGY3ZjFhMzc5YTU1ZiBweTNrCis4NzUyNiA3ZDU1MWQ1ZWY0ZmNmNDY5OGVkNjJjYTg4NTNiNzZhOTcwOTg5OWFkIHB5M2sKKzg3NTI3IGNkNmUzNDNlMjc4ZThjMjRiMTA4YTkyY2M1MDRhNjVkNTg4NmMxMWMgcHkzaworODc1MjggNjE0NDhjZGMwZmE4YzBmNWIyZTMyN2E4Mzg5MTEwZWI3NWM2YTkwOSBweTNrCis4NzUyOSBlZjkzNTMxZDBhYzQ3YzkyMWZlZjI5ZThjMDc0OWQ0YzU0MzYzZTI3IHB5M2sKKzg3NTMwIDJlMjQ3NmZiODNlZmY5MGVkN2NlZjA1M2NhMjUxMjc3NDQ3ZDA1NjcgcHkzaworODc1MzEgNGE3NzM5YzUyNzRiOGE1YjgyZmZkNjQxMzgxOTE5MWJjMDRlZjlhMyBweTNrCis4NzUzMiA4ODA1ODZiOGQwZDAxNTdiYWY0ZDllZDZiNTUwMzAyY2U0NGU4Y2YzIHB5M2sKKzg3NTMzIDAxNzE0ZWZkYzZjZjEyMDk0Y2Q3MGU1NDhmODgyN2U3Mzk0OTk4Y2IgcHkzaworODc1MzQgOGZjYjhmMjY1NWE1OTI0MDg1M2NmMTZlZmM4ZmE1MWFmMjJhNzc5NSBweTNrCis4NzUzNSAxNGZkMGRmYjE2ZmZjMzYyNjlhNmFkOTNiODIyNmQ3YzkyNzY0MzhkIHB5M2sKKzg3NTM2IGY1MDkxMjk4MzQ2MTdjOTYxYWMzNzY0M2RmNzFhMzVhMjUxOGJmNGEgcHkzaworODc1MzcgYjkwMWRhNTYxY2QxNDA3MGZiYzc2NjQyMzUyYzA0MzhmMzgwZWZhYSBweTNrCis4NzUzOCBhOGJlMDU2NzNmMzQzNzdmMGY0MTA0OThmZWI4YjhjMTA1YzFjOGM4IHB5M2sKKzg3NTM5IDVhYTQzM2EyNzdmOTM3ZmM3OGNhMmNlZTAyN2M2ZWM2YmY5OGFmZTMgcHkzaworODc1NDAgYTRlYzIwY2M5MDY2NjgyMWIxNjVhOTZkZTY4MzBjOTUyN2JjZjNiMiByZWxlYXNlMzEtbWFpbnQKKzg3NTQxIDU0ZjFkNTY1MTU1NTc0YTc3M2IzMzE1NjQzNzkyYzgyMjRlNzBkOWMgcmVsZWFzZTI3LW1haW50Cis4NzU0MiAxOGJjZWU4NTY5YmIzN2E0NGUyYmNjOWU4NTIwMzdjMGJhMjQ5Zjk5IHB5M2sKKzg3NTQzIGNjNzhhNmJlZmJmMmYxZjZlZWE0YjU4MGYyOGExNTlkN2E4NGQ2NGMgcmVsZWFzZTI3LW1haW50Cis4NzU0NCAwNWNjY2Q0MjU3YTIyYTg3ODQyOTM3ZmMyOWM3ZmZhZjE3NWMzNjZkIHJlbGVhc2UyNy1tYWludAorODc1NDUgMzU0NmNlMWFhMzU1YmM2NzQxOWU2NWJkNTRhMWYyYWE3YzQ3Nzg2NSByZWxlYXNlMzEtbWFpbnQKKzg3NTQ2IDUyYTg2MTc0NjEyOTdiYjk1OTQ2YzdmOWJhZTY4YTA3MDRhMWUxZmMgcmVsZWFzZTI2LW1haW50Cis4NzU0NyA2Y2NkYjFlMDE2MTE1NzRkMWJlMDNlOWZlNTIxYjRlZmEzZDJmMmEzIHB5M2sKKzg3NTQ4IDY5NDYwYzgwNTczN2JlODM1MWY1Y2ViMmU1MGVhZjU1ZWI3ZWI0MDEgcHkzaworODc1NDkgYjdiZTY1MmRhZjZlZTMyMjIwN2IzYTQwY2FiZWRlODFkZmEwNWM3ZSBweTNrCis4NzU1MCA3N2RlZGFhMzZkM2FjYjhhZmMzMWMzNjViMjE4N2I5YmI5M2JjYWVjIHB5M2sKKzg3NTUxIDc0MWI5M2JjNjhhNWJlYmU4ZDcxZWRiNDI5MGY0NjczMDdjZjI3YWIgcmVsZWFzZTMxLW1haW50Cis4NzU1MiA5NTU5ZTExNTI1OTViOTVkZDJkNDE3MzJmNjViNGVhMjU4NDMyNGY5IHJlbGVhc2UyNy1tYWludAorODc1NTMgMGQ5N2JiOTk0MjVkZWNhMWZhY2JmOTA1MjkwOGNjYWRhMDgzZjFmZCBweTNrCis4NzU1NCA1YmJjMWRjNDU5YTU4MWY2NzZkOTU4M2IyNGU2YzJkOWM2NzFlNWIyIHJlbGVhc2UzMS1tYWludAorODc1NTUgMWRmMjAyMWM3YzNjNDdkMmZiYWQwOGFjYmQ1MDJiYmI3MGE5YmViMiByZWxlYXNlMjctbWFpbnQKKzg3NTU2IDI0OTg4ZjlmODUwYjFjM2VhMDE2YjE2MjQ3NjhmYjRmMmU2NDRjMTMgcHkzaworODc1NTcgZmE1OTg4ZjdjOGJkMjU3MDY0OGM1NGEyMDg2MDlmODM0Zjc3YjA1OCBweTNrCis4NzU1OCAyYTc3M2JlZjQwYzIxMTc0M2UwNGM2NWJmZmZlZWQ4ZWNhYjcxZDMxIHB5M2sKKzg3NTU5IDYwMzIzYTBlODBkN2MxZmZhMmIzMmZlMjRlM2RjZDNhMmQ4NWY2ZTAgcHkzaworODc1NjAgMzdhOTE1YmRmODI3YmE1MTQyNTZlZWJiMmQ4ZWJhMjYxMmUwNzhhMyBweTNrCis4NzU2MSA0MjdmOWYxNTUwNDg1ZTg0NDI4YThlZmI4ZDdkNTA5NTA0MmU3OWJmIHB5M2sKKzg3NTYyIDJiNDBlNGM3Nzc3NTUzNzI2ZTcyMmRjNWM4ZDI4ZWJmOTg1YWUyZTIgcHkzaworODc1NjMgYjBmYWY3YTQ1MjM5NTExNDM0MDBlNzYzOGM1YWVjZTljNmU5ZWYyMiBweTNrCis4NzU2NCA4YjVlZWI1ZjQ1NDY2NGJjN2Q2ZGI2ODM2NzEwNzJlYjQzYzhmMzRiIHB5M2sKKzg3NTY1IGUyZTU5Y2I0ZjUwY2IyYzI5YzAwMjcxMDE2N2EyYTQyNDEwZTAyZjEgcmVsZWFzZTMxLW1haW50Cis4NzU2NiAwMGJiMDQwNmJmZWQ5NDAxYWFjYTRmZmJkMzc4ZWMzYjI1MjJmNmNhIHJlbGVhc2UyNy1tYWludAorODc1NjcgYWI2MWJhYjMyMWMxMDExOTY3MDIxN2FhMWY3OTNiMGY4OWVmMDkxMyBweTNrCis4NzU2OCA3ZTcxNmI5YTQwM2QxNDk0OWRmMmE0ZTk1ZWQ2N2IyN2Y2M2JhOTFmIHJlbGVhc2UyNy1tYWludAorODc1NjkgZjA2OTdjYThhZDQ3NmRkODhhZjM2YTI2OTJiMjE4YjIyZDcwNTU0ZiBweTNrCis4NzU3MCAyZTU5MmE0ZTY4YWI4ZjYwNzE0NDhjMGViODk3MzM4NTVhYzA0MTQzIHJlbGVhc2UzMS1tYWludAorODc1NzEgMmUxZGJiMjUyZjI1NzgxOWEwMTI5M2Q0N2U0ZGZjZjgyYjU1MGE2NiBweTNrCis4NzU3MyAxMGI4MzY2ODM3ZDgwZGU3MzVhMWJjMjExNDk0MmViMWQxYjMyMGM2IHB5M2sKKzg3NTc0IDQxZDViNmNhMTkyM2VmOWY0YjcwNzhiZjExMzY5OWVlNGI3ZjZmYzkgcmVsZWFzZTMxLW1haW50Cis4NzU3NSBlOGU2NGViNGNhNGNmNTdmNDhkY2UxMzY5MmFhNDdhZjExODE4YThmIHB5M2sKKzg3NTc2IDkxMzg2MzRiOGJkMTQ2MDJkZDI1ZmFhYzVhYWE0ZmM4ZTczYWFmODMgcmVsZWFzZTMxLW1haW50Cis4NzU3NyA0YzgzYTI5YTcxMmY5MTVkYTRmOWZiYWUyMTM3ODhiZDNlNjBmZjQ4IHB5M2sKKzg3NTc5IDg3ZTZiZGIzNzNkMTNkNTVmOThlNmExMGEwMzk4Yjc3MmM2MzQ3YTkgcHkzaworODc1ODAgMTYzMTlmOWJlOTdjNGViOWExNWFlMzA4MTNhNGQxZmRjMjk1ZmM3NyBweTNrCis4NzU4MSA1NGVmNTJmOTcxYTUxOTdmM2NlNmEwMjFhODMwNGVkYTFhYmFjM2U4IHB5M2sKKzg3NTgyIDYzYmY4NGNmZDhhNjE0ZWI4NTYwMDEyYzU5MGRjNGM4ZmQ0NDBkMjkgcHkzaworODc1ODMgZjBiNTZhMzhhNTI0M2JlMDE3YzNmZmE4Y2QxYWVlM2U0ZGI1ODkwZCBweTNrCis4NzU4NCA0NGViMDlhNTUzOTNmMDdiZTlhNGI5YjgxZmIzYjM3NDU1MjIyNzFiIHB5M2sKKzg3NTg1IGYzN2Y5NmZjZTdiOTRkYTdmMzM3MjlkNWNmNzY2NGM5MmVhZjkzZDkgcHkzaworODc1ODYgZmRiNmJkMWQ1MzU0Y2U4MzZlNDcxNDljNDAwYTE2ODQ2Mjk4YmE2NiBweTNrCis4NzU4NyA4YzdkZjAzNTYwMzYwMjBmZWRkYTA2ODVjYjlmM2EwZjJjY2IxOWJiIHB5M2sKKzg3NTg4IGNhY2ZmZjM0OWQ0OGQ3MzJjYjBmZDhhOTQyMmZkNDM5NWQ4ZGFlY2IgcHkzaworODc1ODkgMGRmYjgzOTdhOTczYmFlNmIxNmQxYTdmMWI2OTU2NjQ5YjIxMTQyYSBweTNrCis4NzU5MCA3MDIwMzdjMDM5ZmYwMTM5NDk0NGRlYmJmYzNmM2EyY2RjYjcyZjEzIHB5M2sKKzg3NTkxIGM3MmVlNmUzYjdkZjhiYjlkMThjYmY0MGZhMmRmMDQzMTU3MTQ0MjkgcmVsZWFzZTMxLW1haW50Cis4NzU5MiBhMTNiODY2M2ZlYmFjNzdlZGU1NDMzY2Y0NDE2Y2Q3ZGM1ODNjMDI1IHJlbGVhc2UyNy1tYWludAorODc1OTMgNTUxMDA2M2IzOWQ0MDFlMGU4Zjk5YzA5MzcwNDRkYTI5ZmViMmRiNCBweTNrCis4NzU5NCAzZmU2NmZjMjIxN2IzMDFhOWJlNGU2ODBkNTA3NjZhNGMzODJiMjM1IHB5M2sKKzg3NTk1IGI2OGYzODdmYmI0OGE4YmU0NTNhMWUzODI2NWRjOGY3MDIxYjNmMDYgcHkzaworODc1OTYgODc1NzIxZGE3NDZkMzViN2NiOTYxNmViZmY1NjE5ZjY0MjYxYmJmOSByZWxlYXNlMzEtbWFpbnQKKzg3NTk3IDUzZGIyOTBlNDZlZjkzYjg4ZGNlOGNlNmNlZjM1OTYzYjhlYjk3NjggcmVsZWFzZTI3LW1haW50Cis4NzU5OCA4ZjkyNGNhZjJlNWU5OGRjOTg0Y2JiNTEzNTlkYWZhODY3ODU5MWEwIHB5M2sKKzg3NTk5IGVjYTI1ZjFkZWFlNzMxODMwYmJlYzI0NTNkYmU4ZjFmYjEzZGUyNzAgcmVsZWFzZTMxLW1haW50Cis4NzYwMCA1MDBlYjNkMDg5N2Y0OTEzZGE4OGNhMjIwZjdmY2NiZDBkYzQxNGNiIHJlbGVhc2UyNy1tYWludAorODc2MDEgM2JjNzQ2MTZjOWZmYzMxOWEyMjNlN2Q5NmI4MmEzMjZjNmY3NjMxNiBweTNrCis4NzYwMyBmYTg1NTAyMTNiY2ZkZGU3MjMyY2ZhMzQ2OTU3MjgyNDE2YTM3MTUwIHB5M2sKKzg3NjA0IDMzNTQzYjRlMGU1ZDYxNTA1ODgwNWJmNTY3NGQ4NzZmNjU5NTdkM2QgcHkzaworODc2MDYgY2Q4YzliNjdmMDMzODUyNjY0MzMwNTU3YzE3NzY0NTk5ZjMwOTVjZSBweTNrCis4NzYwNyA1ZGJhNjdjYTZjY2ZiNTVjMDE3ZThhNjYxZjY1NjY2YWRiY2JlZjdlIHB5M2sKKzg3NjA4IDdiYjM3YTRjZDdjZjc1OWVkMDE3NTZkMGQ4NzY2NDUwMTJhMTUzY2IgcmVsZWFzZTI3LW1haW50Cis4NzYwOSA1ZGI4OTg1M2NhY2UxOTY4MDdjMDFmZmM2MzFhODgxY2ZhZGY3NGIyIHJlbGVhc2UzMS1tYWludAorODc2MTAgOTAwYmEwN2U0ODI0YjhlMDhlYzk2YzM1YWYxNjE5YjYyMjdiM2UzMCBweTNrCis4NzYxMSBjY2VkMGE3Y2ViNDNlODA0MTU3YWMxZjQxNGY3MjkzZDM4NDI1MjAxIHB5M2sKKzg3NjEyIDQxNWE3OTJlMTI0OTNiOGMyMWJhYWVjZDc3ZDU1OGU0ZDk4OGVhMmIgcHkzaworODc2MTMgYTlhYTVlNGViOGMzYWU1NWY5MGQxNjFlZGM4YWI1NTZlZGRhMWQyOCByZWxlYXNlMjctbWFpbnQKKzg3NjE1IGY4YzJkODkwZmQxMDU0YjlkMzVkY2NhOGUwOTJiM2M0NTI2MDUzYTMgcHkzaworODc2MTYgOGRiZjg1NWM5MGVkYWM3ODE5NjllZWE0NjA1MWI3NzBlNDIwMTVmZSBweTNrLWNkZWNpbWFsCis4NzYxNyA1Nzg1N2E2MGZhOTc4NWJlZTA0OTJjMzViOGIzYWM0ZTA3NGZjMTFlIHB5M2stY2RlY2ltYWwKKzg3NjE4IGRkNDk0NTVkOGE4YzkxNzc3MjdiZTljNWNjOGFkYzQwNjY5YmI2ZmUgcHkzay1jZGVjaW1hbAorODc2MTkgNmFmOWU4MDAwMzMyOTc4YTRhM2Q4ZDZiODBmNDFmMTA0NzgxNWEyYyBweTNrLWNkZWNpbWFsCis4NzYyMCBhNmNkODRjYTdiMmE3OTY1MGY0NDJlMDdkYmNkNTI4YjVmMjUzOTc5IHB5M2stY2RlY2ltYWwKKzg3NjIxIGFlZTQ1NDQwMGVkNzE3YjgyN2JmZWFlNTM4ZjMzNzY2NzgzZDI4NzQgcHkzay1jZGVjaW1hbAorODc2MjIgNGFhNjZlNTE0ODhmMzk0NWFkYmY3ZjFmZjUyY2JhZGI5MDRkNmUyYSBweTNrLWNkZWNpbWFsCis4NzYyMyAwYjJlYTkwMzAwYzBjOWJmZmVhNTE1MTMyOTYxNTlmZDBhYmMzOGE3IHB5M2stY2RlY2ltYWwKKzg3NjI0IGQyY2E1YjMxMDRhYTNjYjk3YzE0ZDcwNWMyMzdiZGRjZjcwOTJkNWQgcHkzay1jZGVjaW1hbAorODc2MjUgZDM5M2VjNTM2Y2E5ZDVkM2VhMzIwMTIyMzdkMTk0ODY5MDYyOWQwOCBweTNrLWNkZWNpbWFsCis4NzYyNiAzZmVhZGE3MjIzM2M0NzM0ZTcyYzk0MjM3ZjJiNGU0NDQ4NzdmMzEwIHJlbGVhc2UyNy1tYWludAorODc2MjcgZGM2MjQ1YmZlNTY2MWFmOTZmYzkyNmM2MWJmMWQ5ODc2NjMzNWYzNyBweTNrCis4NzYyOCA3NDM2ZGFlYzk0MjEwZTI1MWZiOGE2OTAyNTJkY2Q5ZGE1MmM5YWNkIHB5M2sKKzg3NjI5IDQ0OTZkZWIyNjI2NWRhMzYwN2UwODZhYzUwMzNlNjg0YjhhYWViMjIgcHkzay1jZGVjaW1hbAorODc2MzAgNzk4YWEzZmUwMzQ3YjU5ZDk5YmMwODdlYTM1MTgzNDdkMWY0N2U0NyBweTNrLWNkZWNpbWFsCis4NzYzMSAyMWU0ZjFhYTI0MzBjMmZjNTk5NmEzN2M2NzBhNGExYWVmNmMzOTY2IHB5M2stY2RlY2ltYWwKKzg3NjMyIDBmYzI0OTNhMzg2M2Q3ZTJkMTUzMzA4MTYyNDRmNjIxYjcwZjJmZDQgcHkzay1jZGVjaW1hbAorODc2MzMgNWQzNmYwYTUzNzgzYWRlNDBiZDFiZTc1NjNjNDIzNDFjMTUxYTlkMCBweTNrLWNkZWNpbWFsCis4NzYzNCBlNzBjOTM2MTJkN2ZjYmQyYmM5OWYxZmYxZjYzM2NhM2ZjNDc2NWQ0IHB5M2stY2RlY2ltYWwKKzg3NjM1IGQ0NGJhNzUyMTAzZjIzYjdhYTc4MjlhOWE4YjM2NzYxNWJjZGQ2MmEgcHkzay1jZGVjaW1hbAorODc2MzYgMTZlODg2YTc2YzVhNTljNDk4Y2VhOWE3MDRiODgzMWY2ZmY2NmZjMyBweTNrLWNkZWNpbWFsCis4NzYzNyBmZTcyM2I4ZDdjNWZlMzA5N2FmYzg5ZTdhZWQ1ZGQ3NWZjMmRkNjA5IHB5M2stY2RlY2ltYWwKKzg3NjM4IDY0MDE0OTEzZWI4ODA5Yjg1ZmRiNmM5ZTI3MjljYWQwYzRiOWEyY2UgcHkzaworODc2MzkgYjM0NDM3N2ZkZDhkYjU2YjQwMTA5ZDgxNTc1OTlkMjI2MjkyNGNmZCBweTNrCis4NzY0MCAzMzY1YzdiNjQ4OTM3ZGZlNTJkMGE1NmVjYzkyNzgzZGRmOTRkMWU2IHJlbGVhc2UyNy1tYWludAorODc2NDEgOGYzM2I1MDIxODNiZjAzOTQ4MTJlZDUxY2FiZmEzZDFhMDgxN2IwNSByZWxlYXNlMzEtbWFpbnQKKzg3NjQyIGZmMTI2MWExNDU3MzNhNDZkYmZjMGIxNGUwOTE3MzM4MmY5ZDI1NDMgcHkzaworODc2NDMgOWVhMTJlODZkNTY1MjI3ZjNmNjlmMjlhOWQ1MzU0Mzc2Y2ZiZjFlYSByZWxlYXNlMjctbWFpbnQKKzg3NjQ0IDE1MmEwOTg1YjEzOGI3OTE4ZDE3ZDdjOGNlNWI0ZTMyYWRmZGZhNTkgcmVsZWFzZTI3LW1haW50Cis4NzY0NSAwYWZjNDEzOWNjNzAyOTFjNGExZjMwMjQzODc0MzRhZDYyNWVhNzhmIHJlbGVhc2UyNy1tYWludAorODc2NDYgMGNhZTIxZGU5OTIxMzhmNGQ1NWE2NGY2MmJjOTc0MjRhNGY4ZWM5OSBweTNrCis4NzY0NyAwMDcxYTE3MzQ2OTA5OTA3YWE2YzUwMmQ3MDAzMDcwZTM5YmRiYTFmIHB5M2stY2RlY2ltYWwKKzg3NjQ4IDZjNDYzYjA3ZGJkYjcyYWM1NGQ0MTBkZjkyNGRlYWUyMDg1NzMxY2EgcHkzaworODc2NDkgZGJiNmZiMmM1YjlkN2U2YTA5OWM4YWY5MmYwNWI0YzJjYjc3ZDAyOCByZWxlYXNlMzEtbWFpbnQKKzg3NjUwIGViOTU0Yzc2NTUyMWFhNzI3ZDQyNjRmNzQyMGUzZmM5YmQ0NDliNGMgcmVsZWFzZTI3LW1haW50Cis4NzY1MSBhNWFlM2ExN2Q1ZmIxODE0MTVmYzMyYzVmNDRiYWVmZmE2YTNkNGVlIHB5M2sKKzg3NjUyIGUwZTRlZmI2MzM1NGNkYjZmNDY2Y2U1MDYzMjI4M2FlY2MzN2ZlN2IgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjUzIDI1NmY3OTRjMmNjMDI4NDQ0MGJmNWVjYzc2MjBmMzM4NzBlMDJmZDkgcHkzaworODc2NTQgNTgxZTY3MjQ3OGY3ZWE0YTFmMzI3MmJlN2VhODA2ZTgyOTI1ZWIyOCBweTNrCis4NzY1NSBjNGQ2N2ZhOTA5ZGNkMmRhMTlkMWM0MWVmMDU2YTIwNzY2MmJiNDgwIHB5M2sKKzg3NjU2IGIwMjBkZjllZTM4MTZjYjBhOTM2NGU0MGM0ZWE3YWI4NTAyM2EwYjcgcHkzaworODc2NTcgZDM5ZWZhNTRkZWFmMDQ5MzA5OThlNDAyOTE3MjhlMmZmNzE0Y2JmMCBweTNrCis4NzY1OCA0MjYwZTMwMjUyZWIyYmI3ZDU1ZWI0ODNkYmU1NTI4ZDY2OWJjNTdiIHJlbGVhc2UzMS1tYWludAorODc2NTkgNzMwYjFhZjA5MjM4NzQ4M2QwNzI4ODgxZmE4OWYwNmRkNmY2YjM4YSByZWxlYXNlMjctbWFpbnQKKzg3NjYwIDA0YWE1YmU3MDZhYzAxNzcxMWExYWE5NWIxYTlmNTM0MjQzZmEwZDMgcmVsZWFzZTMxLW1haW50Cis4NzY2MSBhNWRhYTE0MDAxYThlZWJhNGFkMDI5N2I2NjdlZTU5NjJhMDU4ZjhiIHB5M2stZnV0dXJlcy1vbi13aW5kb3dzCis4NzY2MiBmODllMzdjZDZjNjU3NzE2OGRjYjNmMDI1MzA2N2MyMjZkYmUzYWI0IHJlbGVhc2UzMS1tYWludAorODc2NjMgODhlNWFlNWI3ZGMyNmEwMWM2NWJhZTk1MjMyODFkNzljNWMxM2JkNCByZWxlYXNlMjctbWFpbnQKKzg3NjY0IGUyODg2OGNmOTgyNTg5Yzc1ZTE3ZDBkNDBkZTNhMjk4YzdhODM3YjEgcmVsZWFzZTI2LW1haW50Cis4NzY2NSA3NDYxNDNlYzFmNjBkYTEyOTU0YTdlYTY3MWY5MTUzNmY0MDI5MmEwIHB5M2sKKzg3NjY2IDRhZjk4N2VjMDMzYTBkMDZlMTMxOTlmODlhNTJlZmVhYWVjYTEwYWUgcHkzaworODc2NjcgMjg1MzhmMmUwY2MyNDdmM2Y1Zjg5YTQ3MDhmYTRmZmFmNDkzODRkMSBweTNrCis4NzY2OCBkOGVkMGNjOWUzMzgyYzI2OTRjY2QwZjRlYTMxMmFjZjNiNWExNWJmIHJlbGVhc2UzMS1tYWludAorODc2NjkgOTNiN2MwMDA4YjA4NWUwN2EyOTQ0NGY4OTYxYTlmMmY3ZjJjMTBiNyByZWxlYXNlMjctbWFpbnQKKzg3NjcwIDczYjI0NDc2Y2EzYmFhZjcwN2U3NzYzYjdiZmQ3ZjcyMjUwZmQ1MzMgcHkzay1mdXR1cmVzLW9uLXdpbmRvd3MKKzg3NjcxIGEwNDhkMGNmMmFkMWQ4MjEwNzg0OTVjZTM5NzAyYmI0NDczZGFhOTUgcHkzaworODc2NzIgNTM4NGU3MjBmMjhmZDE5ODM2MGRjZDY2ZTk4NTZmYjEzZTliZDc3YSBweTNrCis4NzY3MyA0MzliZjk2ODBiZWYyNjYwM2M4ZjRhNzcxOTI5MThhZTM3MzdlMjA2IHB5M2sKKzg3Njc1IGU4YmNjN2RiYWI3ZGMyMGMzMzlmMzgzMTNmOGE0NGM0ZGE1NDNjZWIgcmVsZWFzZTMxLW1haW50Cis4NzY3NiBjODk4ZGQyMTViYTA2NjU3NGY3YWU0OGUxOWE3NmY4ODM1ZmY1NjNhIHJlbGVhc2UyNy1tYWludAorODc2NzcgZmE1OWFjMTE2NDg0MGRlOWMxOGI0OTJjY2EzNDM2NmQ4MjY2ODM5YiBweTNrCis4NzY3OCA1Nzc2ZjQyNGQ4NTc4MTJkNzFmYWJkNjcxNTg2MTM3ZDIyMjNlMzIwIHB5M2sKKzg3Njc5IDI4MTE5MDYxZjdkMDExODhkZTQyNTgxMTlmNjMwNDBmZDhmYzg3Y2EgcHkzaworODc2ODAgODA2MDBjMGMzM2I3OGIxZGM4NWQ3MWU4YTJkYTAyMjA0YzI3NGE0YiBweTNrCis4NzY4MSBmNWIxMDVjOWY0NmJmNmYyYWJjMzdjZTE0YTY3Y2U1YzJlYjAzYmZhIHB5M2sKKzg3NjgyIGJhMTZmZjg2ZDRmNmNkMTU5NmRhMjYwYmQzYjNhMTc4OWJmZGQ1ZDQgcHkzaworODc2ODMgZGJhOWI5YzdhMmRiNzZmODQ3NzBhYzIxM2Y2ZDkzODZhYTY1NDEwMyBweTNrCis4NzY4NCA2Y2I3ZWQ3YjY2OTdlNTM1MmEzZmY0ZWU0NDFjMDQ1N2U4ZWMxOWU4IHB5M2sKKzg3Njg1IDk0ODY5MjcxMmZkNzEwZDRjMzExOGYxMjBhMmJlZWJiZWE5OTZhMDkgcHkzaworODc2ODYgOTMxZDIzMjBmNTZhMDdiNDcxZGQ0NjMzODRmMDM1NzYwZDY5NzU2NyBweTNrCis4NzY4NyA0YzQ2ZjY2MzJkZGY5Nzc2NGJlZDA0MmU0NzBjOGE5YjA5ODMwZThmIHB5M2sKKzg3Njg4IDc3NDgzZjNlNDkxYTc5MzYwYzAwOWRiYzRjZDQ1NmNhZmUzZWFhYTEgcHkzaworODc2ODkgYzQxN2Q4MDU3NjgyNzQwOTdjZDM1YzliMGYwMDFmM2FiMGM4Y2JmMyBweTNrCis4NzY5MCA3NDdjNTVhOTRjYjBlNWU1MThkZmU2Njg2YzZhMjE3ZmIxZjZhY2Y3IHJlbGVhc2UzMS1tYWludAorODc2OTEgNmI3ZDlmMWMyY2U1MWE4NGNmMGEyMzI2OGRjNGFmODA4NDcwMWY5ZSBweTNrCis4NzY5MiAyNDUzNTkzODJiMGZhZDNlNDMyOGM3YmRiNTBkYzUzMGFkYmE2ZWNkIHJlbGVhc2UyNy1tYWludAorODc2OTMgZmViMjNlMjRkY2I1YzcwZjMzMTEwNzk5Y2Y3Mjk2YTJkNDFhNzZkMCByZWxlYXNlMzEtbWFpbnQKKzg3Njk0IGEzM2UxZjAyMDkxZjhmYTE1ZTdiODJiMDc0ZWIyYzk1OTQ0OWU5MDMgcmVsZWFzZTI3LW1haW50Cis4NzY5NSBhNjZhNmU0MjUzOGZlNDA5MTNmNjU2M2QyYmNlZDRhZmU3YTk3MmY1IHB5M2sKKzg3Njk2IGU5YTUxZDQ2MzU3OTI0NDMxNTYzYTdhNjJlMDk0OGUzNmMzNGI5ZGEgcmVsZWFzZTMxLW1haW50Cis4NzY5NyBhNDc2ZWIwODdlZTk3NjgzMzFlODNhMzUyNDgwNDgzNTU3NTk3YWJjIHJlbGVhc2UyNy1tYWludAorODc2OTggOGFjNGJjY2E4ZTMxNjFmMmVmYjdiZGFlY2MxN2U3OWYyNDRiYjFhZSBweTNrCis4NzY5OSA5YWNlZDVhZWQxMWFmNWFlMTdiYzdmNDQ0YjViOGMzNjZkN2NlNzIyIHJlbGVhc2UzMS1tYWludAorODc3MDAgYjBiNDQxNGMwYmRjMjFkZTQzNjUyNDc4ODgwODdkZDczMTFmNjA5ZCByZWxlYXNlMjctbWFpbnQKKzg3NzAxIDc4ZGUzYTdmYjg5NjM0ZTI5NmJjMjU3NGE1ZDJhNTQxMWUzYmIyZTYgcmVsZWFzZTI3LW1haW50Cis4NzcwMiAyNzVmYjk4NDk0OTFmZTE1YTdmMjBiYzFiYjdjNmVjMjYzZjRlMjlmIHJlbGVhc2UzMS1tYWludAorODc3MDMgZjQ5OGVhOTc4YzZmZTBlZGM5ZGE1ZWE4OGU5OWM0MGY4Yjk4ZTQ0MiBweTNrCis4NzcwNCA2MTE1NjdlYzRkN2I3MTVjYjgwNjhjMDA5MjQyZmRiOGQ3MzQ0MWI3IHB5M2sKKzg3NzA1IDhjMTg5OTJkMzc1MGFjMjNkYWI3OTAxYzY2YzUxN2MxODRhZGJmNTEgcHkzaworODc3MDYgZjYwYTg5OWEyMDRlNWIyOGVkY2M2ZWViNDEzNzdiN2MzZDRiMjFmMyByZWxlYXNlMzEtbWFpbnQKKzg3NzA3IDQwOTRiYzEzYWNmY2M0MTMwZjNjMjQ5NjM4MTQzMTgxM2Q2MjhkYzkgcmVsZWFzZTI3LW1haW50Cis4NzcwOCA5ZjQ5ZWU1MjM5NzU2MTA5ODAyZWU3NDMyZjYwN2U1MGZkMTIwODhlIHJlbGVhc2UzMS1tYWludAorODc3MDkgNWJjZjEwOGEzZjVkZmYyN2RhMjEwNzg4ZWMzM2I2OWU1NWIwMmJjMCByZWxlYXNlMjctbWFpbnQKKzg3NzEwIDZlNWFhZGE0ZmRkNWYxNzY4ODYyYmViNGJmNzA1MTNlNDI1YTA1YWMgcHkzaworODc3MTEgNTAxMTg3MGVjODZiZDRmMThiMjU0NGJlNGI2YTI2NTM3YjUyYWEyMSBweTNrCis4NzcxMiBhN2M0OTkyNjZhOWZlMDI1MWI2ZTcxOGY4ZjhhYWNkZGZlMzQ4OWNhIHB5M2sKKzg3NzEzIDhmNTA5YzUyNjBhOThhYzM5OGVhZTg1ODJmMTM1N2YxNmRiMWVhMjEgcHkzaworODc3MTQgODkzMjczZDc5M2M2ZWY1MWM1NTI5YzgwZTJiNzgyYjkyNDAzMjAzNSBweTNrCis4NzcxNSA3MzFkZWM0ZTc1MTM4MTY0YWQ5YzhiM2RkZDBhODEwMzAyZDYzODY0IHJlbGVhc2UyNy1tYWludAorODc3MTYgOWFkODk2NDI2Zjc5NjQxODAxM2JhZjM1OWFlYTRmODBjZmNlZWY3MyBweTNrCis4NzcxNyA3MGJlYTJkYWRlZjhhNzE0ZDJiM2E3ZDNmY2Y2NTY0ZTBkN2Y2Yjk0IHB5M2sKKzg3NzE4IDhiODQ4ZDNjNmFkMDE0NDUwODk5ZmVjZDBmOGNlMmE0NzFjMTVjZGMgcHkzaworODc3MTkgZDM2ZTM0NWExYTNjZWNiZTlkZGY4ZjY2MDAwZmQwZjEyYzM0YjM3OSBweTNrCis4NzcyMCBmMGViMzQ0OGNlMzg0NTkyOTM0MDdjM2ZhMGM5NDQyOGQ3OWQ4OWMxIHB5M2sKKzg3NzIxIDljZDgzYzY1OGJhNDYyMGJmMzIzMzhiYzZmYTk2N2ZiMTRhZGQyZjcgcHkzaworODc3MjIgMzc0ZGM5MTBkYjMzYWQ2OGMwNzM4ODlmN2E5NTZkZDQ4Y2VkMDdlNyBweTNrCis4NzcyMyAxOGRiYzNiYTE2YzBlYWZkODBjNjcyZjM3OGE2N2M0N2YyZmViMTNkIHJlbGVhc2UyNy1tYWludAorODc3MjQgYzAwN2MzZGJiZDNmYmQ5ZWUzYmQ1Yjg0Y2M2Yzc2ZmVmMWU5NmI4NiByZWxlYXNlMzEtbWFpbnQKKzg3NzI2IGFkMmYzNDM4MGFhYzg2Nzg0NzRiZDY1M2NlMTM5NmJjZWJkYzZjNWMgcmVsZWFzZTMxLW1haW50Cis4NzcyNyAzZTFjM2QyYTg2ODkwNzA1ZjEzNzI3NjkwNDVhZDZhOWJiZDM0NDYyIHJlbGVhc2UyNy1tYWludAorODc3MjggZjc4ZTdkYjFkNWU4NjRlY2U3OTlkOWU3ZTE5NTc5NzM2MTFhMTJlNiBweTNrCis4NzcyOSA0NTQ5NDI2ZWU0ZDY1MmViYzg1ZGJmY2FjMGQyMDM2NTAxMzA2OGM1IHB5M2sKKzg3NzMwIGY0YTgwOGY1YTY2ZDFjZWRkY2U0NDM1MTgzNzAzOGM3ZmU2Y2YwYzAgcHkzaworODc3MzEgYTdkMTVkZjdkNjdkM2YwZjExMzFmZTQ4YzA4ZWJkZWQ4ZDA3ZjVjYiBweTNrCis4NzczMiA5OGM4YWEyMzdmYzFjYzEzOThlMmQ4ZDU3MDFkODUxNjAxNGFlZGJiIHB5M2sKKzg3NzMzIDNiZjRkOWYxNjYwYTRjMWRjZWE1MzViOTQ0NGU2NDkyY2Q2OTI0M2UgcHkzaworODc3MzQgY2QyNzk4MjA4N2VhYzRiYjI0MThlNTkzMGJiNWE3MDBjN2MzMGJlZSBweTNrCis4NzczNSA4YWE4ZGNhNDY2ODRiNTRmYmNkZGVlNTc5ZGY3YTFlNjhmYmJhNjkxIHB5M2sKKzg3NzM2IDFlNjJhMGNlZTA5MjJjM2Y5ZmI4MzdjNTE5ZjhhMzkzMzhlM2EzN2EgcHkzaworODc3MzcgNjQyYzg4MDY4MzBmNWZiNDIwMjQxMDFkMWE4MTcyOWViZDY4N2M3MSBweTNrCis4NzczOCAyMDA0M2RhNzg3MjZhMzk0YTJiMmI2ZDJhMzA1MGY2MmE1ODUxYjAzIHB5M2sKKzg3NzM5IDYyOWViM2I2OTkwOWYxY2NiNmYxZTBhYWRlZDNmYTQ5YjUwNGFhNmQgcHkzaworODc3NDAgMzQ3OGQwMDdkZjIzNzIyZGY5ZmQzN2ZiMmU3ZjQ1Y2UwNjRjYjU3YiBweTNrCis4Nzc0MSBhM2I3YzI5MDc1NGEwYTE1MjM4MWE4Y2E4MTNjYmVmOTc0ODk2YTQwIHJlbGVhc2UzMS1tYWludAorODc3NDIgYTZiYzQ5N2IxOTYyNDNjZWQ4ZTMyMDExMTAxYTljNWM0ZTdkODM3MCByZWxlYXNlMjctbWFpbnQKKzg3NzQzIDdjNWMzN2I5NjI4MTZiNzg3NTRlOTA1Y2E5ZGZkM2ViNzU5MTdmNzMgcmVsZWFzZTI3LW1haW50Cis4Nzc0NCA4YWY2ZThmYzAyMDViY2NjNjU4MDI3ZDFlZjM3OTNjZTc2MjY4YmNiIHB5M2sKKzg3NzQ1IDQ1NTdkNDk1YTQ4NDZjM2U1MjI1ZjVmZDVhMGM2YTU0OGE5OWUyNDUgcmVsZWFzZTMxLW1haW50Cis4Nzc0NiAwODE5MjI2NWQxNzJjNGMxMDg5NzQ3YjZjMDgxMjkyM2QyNDczYzhlIHB5M2sKKzg3NzQ3IGMwZmVmOGExNDRmYWQ5OGRlOGVkNmFlMGQyOTBkMzUyNDA1YjEzMmMgcHkzaworODc3NDggZWZjYjE0Zjk0ZTc2OTEzYmRmYzE2MTNlNzY5ODcyOGFmMzkyNjE4YSBweTNrCis4Nzc0OSBkZDNmMjhmZmQwMjkwODlkMDhkMWYxNmYzNTI4ZjZjZDBiNTg5ODQ0IHB5M2sKKzg3NzUwIDQ5Nzg5YTUyYTk3NjI0NDQzMzZkNDgyYzI4ZWIzNjkwNmMzNjljYjggcHkzaworODc3NTEgMGVmZmIxNzVjOTgxOWI5NDQyZTI1MGM2NGNjYzk4NWU3MWU3NDAzYSByZWxlYXNlMzEtbWFpbnQKKzg3NzUyIDg1ZmJkNzc1NTM0ZWI3ZDgwODM2YWM4YmY1NGM5OTU4MTFkNWUxZGUgcmVsZWFzZTI3LW1haW50Cis4Nzc1MyBhMGQ0ZWRhOGRhMGFmMGZlOGMwNDE2NjY5NDJjMjFhNWVmYWUyZmEwIHB5M2sKKzg3NzU0IDRjYzQ3YTkwODNlMzg5OTk2ZmZhZDRlOWI2YjM5NjI4YmIyZjE2ODIgcHkzaworODc3NTUgNGE4MmJlNDdhOTQ4MWIxYzAzYmI5NTFhZThlOGM2OGM1ZTlhMDFlMiBweTNrCis4Nzc1NiBkZTg2MmRjMGNjY2FmNjkxMjFlMWU4ZTc0ODQ2OTQzMGUwZjAwZTRiIHB5M2sKKzg3NzU3IDI5NjFhZjgwZDU0NTU4YjY3ZWM0YjM1Yzc2M2Y3ZjMwZGRiYmNhMTQgcHkzaworODc3NTggNTA2MGE5MmE4NTk3ZTUwZWVlMzk4YTE3YzBlNDk1OGQ1NDNiYzlkZiBweTNrCis4Nzc1OSBlOTM0OGQ2OGNmY2QwMDA4ZTlkODg1Njg2OTIwMTQxNjEwMmIyNDI0IHB5M2sKKzg3NzYwIGMwNDI1YjVlZGU0N2FkNmYyYTdkMTFiNDIwMzUxNmZkZGZkMDczZTcgcHkzaworODc3NjEgYTQ0YmFkZjllMDBmNjNkM2RjNWRmOWU5ZDcwNjEwMTViZTVmYzRkZCBweTNrCis4Nzc2MiBiYzU3ZmRkODk1NjJiMTcyMzE5ODcwMGQxOGE0YWEwOTQwMTcwMmZmIHB5M2sKKzg3NzYzIDc5OWNkMTUyMzExMTdmOTMzOTkwMDUzYTBkNmZiZDQxM2JjMTdmZTQgcmVsZWFzZTMxLW1haW50Cis4Nzc2NCBiNzQyNmJlNmJiYjRjYTFmMzhmYWNhNzkxNWNlMmQ4ODM3MTQ1ZmVmIHJlbGVhc2UyNy1tYWludAorODc3NjUgNzQ1MjI1YWUyOWVmMDgxYmZlZDYwZTFiNzU2YTVkMWVmMzVhNGMyMiBweTNrCis4Nzc2NiA5MTJmZDIwZGUwZTA3MjBjYjA0NGZlNDdlYmUzMGYyN2NjOTM2ZjJjIHB5M2sKKzg3NzY3IDEzMjM3NGQ1MzdlNGQxMGQ3NmQ2ZmZlNzY4ZjNlODQyY2I0MzE4OGYgcHkzaworODc3NjggZWQwMjU5MjMwNjExMmEwY2UyZDcwMjMyODE4ODgzNzA3MzU0OGUzZCBweTNrCis4Nzc2OSBiZGI1N2Y0NjNjODVmYjU0ZjNmOWQyZDEyZTBmNzQ3NzNmNGU5N2U3IHB5M2sKKzg3NzcwIDRiZjNhNWEwNDEyMDkzNzlmNzdhZDc3MWE5MDM1M2Q0ODQ0NThhYTUgcmVsZWFzZTMxLW1haW50Cis4Nzc3MSAwNzYyODk4ZmQ4MDI4NmU4N2ZmOWRhYTFkMDI2OWQyOWQxZWUwM2M0IHB5M2sKKzg3NzcyIDhmNTNhNGU4OTYzMTNjNTZkZmU3NWYyMTQ4NWU2YjU4Y2M4MDU5MzAgcHkzaworODc3NzMgZGUzODc5NGQxNzQ5ODlhMzllZDVlZjIxODY1ZjI2OWE5Y2NkOWQxMSBweTNrCis4Nzc3NCBmMDZjMjc4YjRmMjEyM2ViYmVmN2ZjMWE0NGQ5MWQ0MTBhODVlM2U3IHB5M2sKKzg3Nzc1IDU4Yjc4NDU1M2NhNGY1YTg0MmVmMmU4ZDJjOTE0YWI3MjMwNzlmYTEgcHkzaworODc3NzYgOTJmNjFhNjkyZTM5NDEzMWFkYjM1YTMwZDQ2NmE5OWNkMDk3MTgzNiBweTNrCis4Nzc3NyA1MTBmN2UyOWU3MjgxN2VlMWY2YWQ4OTQ4YzFkYmJiZjM2YTU0ZjVkIHB5M2sKKzg3Nzc4IDIwZTNhZjFkNTMwYThmYjM5OTJjNzNjMWQ2OTJmNDc1OGI3M2E5ODkgcHkzaworODc3NzkgY2Y5ZTFmNzQ2NGRjNThlY2U5YTc3MmRkZWZhYzYzOTkwOGY5MzA3YiBweTNrCis4Nzc4MCA5MmYyZDdkMjhmZWVkYjMyMGQ2YTVhMWVlNDRmMWZiZmY4ODhmZTQ3IHB5M2sKKzg3NzgxIDM0ZDg5MTU4MGYzOGQ0NTZmMDIzNTAwNjg0NmM4YmJjNDM0NzUxY2YgcHkzaworODc3ODIgMjQ3YjdiYTZmZmFkNDQ4OTE4OTA3YjRiN2QwMTE0ZGRjYTZhODIyZCBweTNrCis4Nzc4MyA4YzQ0OGE0Mjc3YTBkNGZiOWE2NWNhNWNmOGI4NjdmNDg2YWU2OTA2IHB5M2sKKzg3Nzg0IGFiYjY4NmE1YTFkZmNkNmMwMmZmNDU3YTNmMjI3MjJhY2JiNThiNGUgcHkzaworODc3ODUgYzliNDg0ZjJhMGI3MDc0OTU3ZWMyNjg1OWIxNTk5YzdjNTI1NWYzNSByZWxlYXNlMzEtbWFpbnQKKzg3Nzg2IDcxZTFhOTk2MTgzNjE5YTNhMjYyMzA1YjQ4ZmNkZTNjMWVhNGRmZDMgcHkzaworODc3ODcgM2Q4MjRiNTEzN2RkYjEzM2RmZTU3YTU4NmY1NzBhMDY1MzZkZWFmMyBweTNrCis4Nzc4OCBkODI0ZTljZmJlZTg2ZGYwYTViMzUxOWEyZmU2ZmI3NmUzNzI3MjcwIHB5M2sKKzg3Nzg5IGEzMjg4YTRlMmVhZDlhZDEwMzc2ZDNiY2E0MWYyM2ZjMjU1OWZmMGYgcHkzaworODc3OTAgMTQyMjg4MDg5YzFhNDY1NmExYTJkOTYyZDljOGViOGUzZjFmMjIxMiBweTNrCis4Nzc5MSA1ZDY2Njg1NDg0Mjg0MmY5MWNhYWEzNTljMjE4ZTcyYmEzMWUwMzcxIHB5M2sKKzg3NzkyIGNjYmM4NDIyMmZkYTU4YTM2MDZjY2ZiOTQ5Y2MxZDI0N2I1ZjQyOWMgcHkzaworODc3OTMgMTc3NGQ2YTJmNWJmZWY4ZjFlNmI0MTQ1OWIxNTQ4ODZjZjc1ZjM5ZiByZWxlYXNlMzEtbWFpbnQKKzg3Nzk0IDI2ODM2ZTQ3ZGZiOTFjNDcxYjZhMTkxZjU2ZDVkODRjNGU0YjZiMTEgcmVsZWFzZTI3LW1haW50Cis4Nzc5NSBkMmE2NDYxMmQyMzViNmVmMjQyZWQ5YWMzZmUzZDdiMjdkNTI4MGQyIHB5M2sKKzg3Nzk2IDY0YzI0NTMxM2NmZjlmZGQ0NmU1NGRjZDNjNWIzOTk4MjQ0ZjQwMTkgcHkzaworODc3OTcgYTRjZmIyNzgyNDE2NGFmZDFjY2IyNTVjNzI3MDA4YTRhMDFkNGFhNCBweTNrCis4Nzc5OCA1OTE5MjIyOTlhY2MxMTE4YWQwMzNhN2FiODg0MWZmZjE2OTc4MDdmIHJlbGVhc2UzMS1tYWludAorODc3OTkgYjMzMmU3M2I1NTY3MDdjNGExMDg4YjAwODlkMDNlNjcxNjJjOGMxNSByZWxlYXNlMjctbWFpbnQKKzg3ODAwIDdlN2ZjOTRmZDBkNDE0ZmJlYzIzM2U3YTI0YjUyNjZiNmZiZjMzOTggcmVsZWFzZTMxLW1haW50Cis4NzgwMSA0MTljYTA4OWQzNjVmMzAxNGE0ZTAyYjUwYTk0ZWYzMGY3NjVkNzIxIHJlbGVhc2UyNy1tYWludAorODc4MDIgNmExZDA4MDYyM2Q3N2I4MjVjMWRlNzcyOTlmMzg2ODMzYjZjMzVkMCBweTNrCis4NzgwMyA3MjIyNjk3OTY0ZmM3NDQzOTljOGVlMTE4YmIzOTQ4YWQxNWRkMWRhIHJlbGVhc2UzMS1tYWludAorODc4MDQgYzdmZDliNmFhMDAyZWUzMDFjZTNmZjllOGU3YzE2ZjJlZWRhMGJmYiByZWxlYXNlMjctbWFpbnQKKzg3ODA1IDhhMzAyYTA5ZWU4M2E3NjkwNWVlZDJlMDU3ZmZmZThiOTBhNmIwMzIgcHkzaworODc4MDYgMDIwZGE5Yjg3ZGFhODkxMzM0YmI3ODQzOGExMDRmMGFhZDNlZDcyNyBweTNrCis4NzgwNyAxZDRkYzlkZjI0OTY3MjgyMzU2ZmI5NjhlYTQ4NDAwZDY3MjQ2Yzg0IHB5M2sKKzg3ODA4IDAxYjI1MzMzMWE4NmUwNjgwYjdkNGI3ZmI0YTY4ODIzYTg3MjliNDYgcHkzaworODc4MTAgN2JhNWY1N2M3NGU1NzYyOGNhNDFjZjU1ZjYzMGQ5NDJjZmIxOTFiOSBweTNrCis4NzgxMSA3ZTU3NzdlMWYwZmRhM2YxMzZjOWMxNDZlOTMwYmMyZGJiMzBhMjlmIHB5M2sKKzg3ODEyIDEyY2M4MTA2MmQ0YTg0ZjY3MGI4YmE4ODNkNDZlODkzYTAyNTljODMgcHkzaworODc4MTMgNDNjOGMxYmRkOTRmZDhhZWZlOTg4NWUzMjFjMTFmODYxMDc0YWRkNyBweTNrCis4NzgyMCA4M2QzZDVlMDY4N2VmZTRkMTE4ODdlMGJlYWQzOWJiN2ExNDViYjRhIHB5M2sKKzg3ODIxIDJlZTZiNDQ0YzkzZGVlNDg1MDExNjA2MDM0YjlkNzlhMDQwYzBmMTAgcHkzaworODc4MjIgNTI2MGZkMTJjNzYzZGRkM2M5ZDMyM2Y1ZDMxMzQ5NTM0MTJiMzQ2OSBweTNrCis4NzgyMyAwYjBhMmI2YzNhZDk4MzU3N2I4NDI3MmRkNWI2YmM0NzhlOTlhNjhjIHB5M2sKKzg3ODI0IDA5MzNjMzc1M2E3MTJiOWY4YWYyZDIzZTQwYWUwZGRhMWY4YWMyNTQgcHkzaworODc4MjUgMTQyNzBmZTg0ZGM3NzFmOWRkZjg2NzVkZGE5YjAwODM2NGQ0MTBjYiBweTNrCis4NzgyNiAzZWEyODA5OTcwMDFkNDIzYWE0YThmMDRmZGQ4NmM5MGVhOTQ0YTg3IHB5M2sKKzg3ODI3IDM3NzgxNTk4NWNhZjBkMDNjM2UzNjhiOWI0OTAzYTRjM2NlMDlhZTkgcHkzaworODc4MjggNWY4ZWI5ZTdhY2RjMDY1YWUzYTAwNmUxNzkxZmVlYzc5MjY1ODNkNiBweTNrCis4NzgyOSAxMjA3NGYzYWI4MDk1ZjkxYTQ3MzY4YWJhZDcxZDFmNmZhZmM1YTEyIHB5M2sKKzg3ODMwIGRmOWEwNjE2MDA0ZDkyZTk3Zjg3MWE4YTk1ZGUzOTdkMGQ5MGY1OWEgcHkzaworODc4MzEgMTMzZGVlODJhMDA5NjE2ZTFjMGRjY2ZhNWRiYThmOTJiMTczMzg5MyBweTNrCis4NzgzMiAzZTc1Y2YzZjYzNTU1NjdkZGE4NmYwYTY2N2ZhNzc3MmFkNmU5OGZkIHB5M2sKKzg3ODMzIDY2NTg3ZTkwZmRmYjYyN2Y4OGFiMWFjN2EyOWYzMTA0ZGEyYThmZDQgcHkzaworODc4MzQgZjU5NTBkZjAzY2UyMTBjNTBjY2Q5NjUxZWE0YzA2NmNiYmQ5NDkzMiBweTNrCis4NzgzNSA2YTU3MTE5NjU1NzFhYjIwNmI1NDllZjRmMDA2MzY2OTBkNDYxNzE1IHB5M2sKKzg3ODM2IDU0ZmE2MjE2NTg1MzM1YjIzYWM1NGRjM2JlZmZhZGViNjViNDBlNDEgcmVsZWFzZTMxLW1haW50Cis4NzgzNyAwZGUxOTA1YTc2MWY4N2FkODIzNDVjNjZmNGFlMzJjY2IzNTdlZjg5IHJlbGVhc2UyNy1tYWludAorODc4MzggMDgwYTBlOTZiNDgyYjEzYzA4ODdjZTJlYjYyOWE3MDc3N2E0NGRiNiBweTNrCis4NzgzOSBiMGI3OWMzNzM0YWNkZmFmOWZmNDNlNzVmZTM5YTkwMGU2ZWQyODc5IHB5M2sKKzg3ODQwIGNhZDE4MTFkOWUxM2U5ZmU4MTVkMTQ3ODc4ZWVjMzA2MDQ3ZmFjMWUgcHkzaworODc4NDEgMzk3Yjk5ZjU5MTJlNzZiNmM1NzUxMWZmOTg3ZDUxOTM5YmY3MzNkZSByZWxlYXNlMzEtbWFpbnQKKzg3ODQyIDYzMWU4MzAwMTZjMGU3NGY1ZDkzNGFkMzVmMDdmYjRhN2NiOGI1MzUgcmVsZWFzZTI3LW1haW50Cis4Nzg0MyAzMTQ2NTk2OGFlMjYzNWM2NWY3MDdlZTgyNWZkMWQxNDJhZDIxNjRkIHB5M2sKKzg3ODQ0IGM2YjhjNWI1NjRhOGM0NDg2MjY3YjI4OWI1MzkyYjM1NDEyNWQ3MWQgcHkzaworODc4NDUgODc1N2NkNjU5MjkxOTRhNGI0YzgwYWMwY2YzZDA4Zjg2NjU4ZmJhZiBweTNrCis4Nzg0NiAyNTNkOTFlNGY2NzI5MTQ0MjU2ODk2ZjBjYzA2OTZjNTE1ZWMyNTQwIHB5M2sKKzg3ODQ3IDNiNzllYzgzY2UyMTY2NmY0YjUwNjVhNzc1Yzg5OTFkNGVhZjM5YzAgcHkzaworODc4NDggZTQ4MDYwNDc2N2M0ZDMxMzc4MjI3ODI2MDkyMDViZWM0NDE1N2RjYSBweTNrCis4Nzg0OSAxNTk2N2I3ZjA1OGYxYjc4MmE5ZDBiNjFmZmFiNGFiMjFlYjlhNDhhIHB5M2sKKzg3ODUwIDBlMWY0ZGY0NzhmNjY4YTc0ZGIxN2RkNWI3ZTU1YmY3NTUwY2NhNDQgcHkzaworODc4NTMgNjQ5MmE3MTM4ODdlOGQ5MzUwY2QwNjNlOGM0ZGNjMzkzMWY1YTAyNCBweTNrCis4Nzg1NiBkYzlhNTZkZGE0Mjg3Zjc3NjA4NjY0MzFkMmIyMWE2OTg0MjIyYWQ3IHB5M2sKKzg3ODU3IDkwY2JhNmE2NzJmMGU5YmQ3YzNiNmE1NGJmNWNiOTljNjYyOGY2ZjkgcmVsZWFzZTMxLW1haW50Cis4Nzg1OCBkNjU2NmE3MGNhYTBhODRiNGYyMTdhMmE3ZTdmMjA0NjM3NTY3ODk0IHB5M2sKKzg3ODU5IDgyMzllYzZmMzllNjI1NTEwODk3ZTkzN2U5ZGZlNTVkYzBmY2ZiYjMgcHkzaworODc4NjAgYzAzZjY0YzcxYjA1YWNlMGVjYmM1ZDJlNzY3ZmU2Y2IyOGY1MDljOCBweTNrCis4Nzg2MSAwOTMyM2M5MTEwOWQyZmNlMWU1NzA1NTM4NDA0NzY1ZWJlNTVlNGQ2IHB5M2sKKzg3ODYyIGM2ZDQ1MzQ1NjJmNDBhMTI3MmRjY2NlODExZDNhNjUyMmFiNjBlNzIgcHkzaworODc4NjMgZjEyZGE1M2I4ZDY4MzA1NjdlYjViZTc4MjljZGI5Y2ZkMTU0N2JjMiBweTNrCis4Nzg2NCBhYmUyMDFkZmQzZGNlMmZiNzExODg5ZWNkYWRkNmQ2NDNjZTNlZGE0IHJlbGVhc2UzMS1tYWludAorODc4NjUgMDc1OTc0YTkwYzMxYjBjN2VlMDVlMjZkODI2NTNkNTQ1ODI0MTA5YiBweTNrCis4Nzg2NiA0ZDE5MjcwOTFiMzlmNzlmYTA0YjA1MjMwYmIyOTAyYTlmYTlmZTIxIHJlbGVhc2UyNy1tYWludAorODc4NjcgZWEwYjk0ZDQ3NTRkNzU1YmVmYTQ4NzU2ZTgwYWMyMWNkMzZmYmUzZiBweTNrCis4Nzg2OCAyMDUxN2FhM2EzNTg5YWM2MDg5YThmODFhYjEwZDFlNzU5MmRiMmI5IHB5M2sKKzg3ODY5IDcyNjNiZDkwZTExMGQ0NjZhNDRkMmM4ZjEyYWE3NGQzYTA0MmM1NDMgcHkzaworODc4NzAgM2VkM2M3YzZiNjA1ZDc4MDcwZTBiYTE1MjkzZDQyNDdjM2U1NDE3NSBweTNrCis4Nzg3MSAxZjcxYzQzYWQ3ZTMzOGZmMzBlNWY3M2UwOTNhZmI4YmJlY2M1ZTkyIHB5M2sKKzg3ODcyIDYxNTc3OGJlOThlOTk1MjVlN2RmZTI3MTIwY2RlMGYyMTU4OTM5M2QgcmVsZWFzZTI3LW1haW50Cis4Nzg3MyA4YmJmZjFjMjRhMzEyYTBiZjczMzg0MzhlYjk2N2QzYmQ2MmEwYjI0IHB5M2sKKzg3ODc0IDk2NmI4N2YyMzk1Y2M5YzcyYjY5ZjNkYTk0YTE5Y2Y1OWIwN2ZlZTkgcmVsZWFzZTMxLW1haW50Cis4Nzg3NSBhZGM3ZTE2NzFkOGMzOTVhMmI4ODg1NjMwZTI0NGE4ZDhlNzFjM2ZmIHJlbGVhc2UyNy1tYWludAorODc4NzYgOWYxM2RjNDM5ZGM1MWM2OTU1ZDIyZmJhZTJlYWFjODQ1MjdkOGEyYSBweTNrCis4Nzg3NyAxOWMwNTA1MWJmMWEwMmQyMGY4ZDIxMGJlNjA1NTI3OWFkNDkwNjA4IHB5M2sKKzg3ODc4IDliMmU2MGFlNGZlZjk3ZGIzMGQ3MzcyZmExYzZlZjJlNWFhYTM2MmUgcmVsZWFzZTI3LW1haW50Cis4Nzg3OSA3ZWMyMTY1M2E0ZDFlNTcyZTY3ZTg1YzM0OTRmOTZkZWJkN2Y0OWRmIHJlbGVhc2UyNy1tYWludAorODc4ODAgOTUzMDFhNDI4NTJmNTQyNWU5YWUxMGQ5YTgxYmNhZjExOTQxMjhmMyByZWxlYXNlMjctbWFpbnQKKzg3ODgxIDJlNzQzNjliNGY0MDYwYWM2Nzc5YzYyOGYzZWMwZWMzYmNjYzhmMWEgcmVsZWFzZTMxLW1haW50Cis4Nzg4MiAwYzk0YzY4MWZjNTMyMGRjMjgwODgxMzIzNDg3ZDQ2YjlhMGM0MWI5IHJlbGVhc2UyNy1tYWludAorODc4ODMgZTRkMDdhNmY3YWJmYzE2NjE5ZmE1ODkzMTFjY2NjOWFiNWZlNmE4ZiByZWxlYXNlMjctbWFpbnQKKzg3ODg0IDVhYjk2MzY0ZTc2MTkwMGQ0NTMyYTcxZTc4ZDk0MmM0ZGY5MGJiYjYgcmVsZWFzZTMxLW1haW50Cis4Nzg4NSBkZTc2MmIwMWMzNjY0YjQ5NDdjYTM4MjM1ZWI5YjU2MWEyMDk5ZTNhIHJlbGVhc2UzMS1tYWludAorODc4ODYgNThhMWI3ZThlNzUzMjM2OWQwZmM1Zjk5ZWJjMTNmN2YxZDY2M2YzNCByZWxlYXNlMjctbWFpbnQKKzg3ODg3IDVmNzc5MDdiMDA0MWU3ZTEyYTkxNGZmOWJiZjU2ZjU0OTM3Y2IxMTMgcmVsZWFzZTMxLW1haW50Cis4Nzg4OCA0YWQ2MTk2ZjMwYTViMjIwOGFmYTc2OTJlODk3ZDMyZTRhYjU0MGE2IHJlbGVhc2UyNy1tYWludAorODc4ODkgZTFiODBlMzllNDBmMzBjMzI3NTBhMmIyOTE3NmYwNWY3YzU3ZmY1MiByZWxlYXNlMjctbWFpbnQKKzg3ODkwIGIzM2JmNjY0YzQ4YWE0OTVlOGViOTcyMzdiYjJiNzYyMGVkYjRhMzEgcHkzaworODc4OTEgMTU3MWNjMDcyZmMyYWUzMDhlNzk5OTM0NzZkMmJkYWY4NGFhMTc1NSBweTNrCis4Nzg5MiA2ODFkMDU0MmJiYmQwN2U2NDI4OWUzOWM3MDUzNzM5ZDA2ZjNiZDA4IHJlbGVhc2UyNy1tYWludAorODc4OTMgZmZiMmMyNGJjYjYyNmRkOGUxMmU4ZjMzNDlhMDlhMjk5MWM5MzQwNCByZWxlYXNlMzEtbWFpbnQKKzg3ODk0IDRiZDI5NmM0OTUyNmY2MzUwMzU2MWIyNGI3NzJjNjE0MGNiNTNjNTggcmVsZWFzZTI3LW1haW50Cis4Nzg5NSBhMjJkNjFiZTQ4NDJiNDBjNzQ1NDc5ZjA5ZGJhM2U5ZGM5ZTQyMGE4IHB5M2sKKzg3ODk2IGZlNmZjYWY3YmIxN2RhNGZmMDU5NTRjYWM2Yjk3ZjE1NzM1MjMzNTUgcHkzaworODc4OTcgZjhjNjgzMTg0YWZmZGI3ZmZmYmJjYjViZmU0MTkyZDU5M2M0OGY4OSBweTNrCis4Nzg5OCA5NzRiMjdjOWQ4NDlkZjRjOWQ1YTIzMTY2OThiZGZmZjQwNTg4ODhhIHB5M2sKKzg3ODk5IDFhMzdmNGJhMWY5MjAxODNmZTgyMTY3MmE0NzNmMTgzYTg3ZDNkZDcgcHkzaworODc5MDAgYzJjNGE5OTQ0NTk2ZjRjMTM2ZTA0ODdkZDNkM2VlM2NmODczZmI3MSBweTNrCis4NzkwMSBjNGE1MjUyNmU3N2ZhNjQyMTZkYjM0YmMwMzdjYjg3N2I5YjIzNDZmIHB5M2sKKzg3OTAyIGI1YTc5YjVjYTIwMzcyYTYwMTdiNGFhYmFmNWY3MTRmOTNjYWM1ZmEgcHkzaworODc5MDMgM2MxMmFiOWUyMTRlOWVjZDUxNDBlMjEyMjQzN2IyYjk4MjY3NTBiNCBweTNrCis4NzkwNCBlYTNhYzYyZWZlNjdjZDRjZGY3ZmEyNzVjOGIwZjQ3ZmYzNGI1YzM2IHB5M2sKKzg3OTA1IGEyYjE2MWYxNzUyNTJmZGU3ZDE0ZmJjZmVjZDFlOTdmMDA1MWY4M2UgcmVsZWFzZTMxLW1haW50Cis4NzkwNiA1NjdkOTYxYmUwODNjNTc0ZWE2MzRkOTE1YzBkMTkxZGJlYzhiMGU0IHB5M2sKKzg3OTA3IGVjNTg4OTA5NzVmMWQyZjBjYmZjOWFiZmViZjE2ZGJlYjIwY2JmNjggcHkzaworODc5MDggOTg1NWM4Y2NjYjM2YzBlMDRhZDE5NTRkMjBlNzdlYTQ4YzdjMDZmYSBweTNrCis4NzkwOSBkYjdhMzJkOTBjZjRhMmQ5MzU4YjcwY2YzNGU5ZDZjZDRmZTMzYzg0IHJlbGVhc2UyNy1tYWludAorODc5MTAgM2U2ZGU4ODUxZjIzMTAxNjVmNzlkMWViMzQwYmQwNWQ2MjExZDk3ZiBweTNrCis4NzkxMSAxNDUwNTIxYjlkOTNmNGFjMGU1ZWFhNjJkZjExY2ZkOGEzMTA3YTEwIHB5M2sKKzg3OTEyIGUwYTY2YWEzNDI3YTY5NjliM2NhODMxMWQwYmI4Mzc1ZGQ0ZWEyNDYgcHkzaworODc5MTMgZTQ3ZDhkOTU1YmQ2MTA4M2RmMTljMzFkYmIzNmIyMDY5Mzg0ODBjMyByZWxlYXNlMzEtbWFpbnQKKzg3OTE0IGFlOTk0YmQ0NjYxNzhjOTJlODkzZmQ0NDM1ZmQwYWMzYWQ2OGZlOWIgcHkzaworODc5MTUgNjVhZGQ3YTQwZjcwMjJmMjljNDkwNWIzNjAxZDEyODI5ZjJiNmI0NyBweTNrCis4NzkxNiBlZGYzMDFhZjI2MTYxM2FkZDBiNzM5ZDM5NWM3MWI2NTVhZjg2OTE3IHB5M2sKKzg3OTE3IGFjNmNjMTQwNGUxNTA1NzQ0MGVjZWE4MDZjN2ZhMDA3Zjk3ZTU4MDAgcHkzaworODc5MTggMWM2NWFiNDRkMzY3MWIzZDQ4ZmNhNDFiNjI3YTE1NDVlMTcwYmExNCByZWxlYXNlMjctbWFpbnQKKzg3OTE5IGQ3MDUyMmNjOWQ0ZmU3YTY0MmUxZDU3M2YxOTdiZDcwYzAxYzE0YzMgcHkzaworODc5MjAgYWQwZWI1N2ViMmI1Yjg3NmQ5N2EwNzM1MWU1OWQyYThiZjExMTljZCBweTNrCis4NzkyMSBjMGYzYWMxOTM5MmI2MTkzNDM4ZjhmZWZjYzQxNWJlMDU4YzEwNjI3IHB5M2sKKzg3OTIyIGIxNmIwZDc1NGZjOTNhNTdlYWM2ZDkxMDE2ZjBlOGZlYjg2Y2QxMjYgcHkzaworODc5MjQgZDU3Mzk3MTMxMTI0MmFlODgyYmMwYWI5ZTA1OTU2MDg0NjdlMmIzZCBweTNrCis4NzkyNSBkYjhkMTU5MzMxMjFjMjdmYjYwZWY3ZDlmYTRiNDFjMjgyZTlmMjA5IHB5M2sKKzg3OTI2IDc4ZmYwOGNjZDE4YjdmZGJhOWQxZmM5MWViNDQ0ZTI1MDdkZjAzZjQgcHkzaworODc5MjcgNzUxMzcyYjc5ZWQ2OTI1YTc3MTRjNDU1ZDJmNjdiMzViZDIzMWI3NyByZWxlYXNlMzEtbWFpbnQKKzg3OTI4IDIwOTY5ODIxYmI2MTRhM2FiOTc2MjUyZGUzMDc5MjgyNzI5OGQyOTUgcmVsZWFzZTI3LW1haW50Cis4NzkyOSA3YjUxNTk0YTE1ZGVkMTU4ZDRiYjI3NDM4NWVlYmMyYzlmMzZlODZlIHB5M2stY2RlY2ltYWwKKzg3OTMwIGVkNmQwNTNlZWJhNWViNjcyZTg4OWRjODg5NTNhMzZjODEwYTI0ODUgcHkzay1jZGVjaW1hbAorODc5MzEgOWZhMDdlN2NkZjM4NjJhZjUwN2YzMzk1ZmVlYjVhMzAyMjRjMWIwZSBweTNrLWNkZWNpbWFsCis4NzkzMiA0YjQ2OWM4N2Q3ZTJlYTgxMzM1MjI0MzlmZTExYjkyNDc4YzM4NDcyIHB5M2stY2RlY2ltYWwKKzg3OTMzIDgzMDk1MmE3MWQyMTc3ZDgxYTRhZGVmYTMzYjY2Yzc5ZmI0NTk0MWQgcHkzay1jZGVjaW1hbAorODc5MzQgMDQ4YWQwNzE3YTQ1MjI5YWYzMGI3OGJjOTdkYTRhMDg0Yjk3MzNhZCByZWxlYXNlMzEtbWFpbnQKKzg3OTM1IGY4MjdmNzAzZWY2NWMwZTQwM2MyZWE4Y2Q1ODlkMjJkN2QzNmFlMmUgcmVsZWFzZTI3LW1haW50Cis4NzkzNiBhM2MzNzk1OGEyMDk0OGRjNThhMWQyMGUzNzk0NzFlZjU0YzM0NGI1IHB5M2stY2RlY2ltYWwKKzg3OTM3IDcwN2Y4OTI3ZDY2MzA2MGI3YzJlYzdkNmExMmUyMmNmYTI5MjE2N2YgcHkzay1jZGVjaW1hbAorODc5MzggMjI0NGFjNmMyYTliZmJmZDNmYzZkMzE4ZTQzMDZlNTMxNmZhNWQ4YyBweTNrCis4NzkzOSA1NGM4NjQ0NDUzZjkxMzRkYzFiODVkZWM1ZjJhNzBlMWQzOTU0ZjA4IHB5M2sKKzg3OTQwIGMwYjk1Y2RhZjQ2MGEyYTgyMzNmYWFmZjkwNzg2NDBmMjhlMjhmZmYgcHkzaworODc5NDEgY2I3NTRhNTgyYjM0MGM1OTAxOWM0ZDQzMDQzMDc4MmU3ZWFlN2VlYiBweTNrCis4Nzk0MiAyNTgxYTE3YjI5YWYwMzMxOTIyNWIwM2I4N2IwMDQzYjFkZWJlMDRiIHB5M2sKKzg3OTQzIGRmMzRiYjA4NjliYzg1MmQ0YjRmZDA3Y2UyNjdiMWNhNzcwNDQ1MzEgcHkzaworODc5NDQgZWM5NmI1YjU3MjNiY2Y0MzI2NzUwMTI0NWM0N2M5OGJlOWNmNzQxOSByZWxlYXNlMjctbWFpbnQKKzg3OTQ1IDFiMWE2NDI5NzE0OTdhZDBjZTU4MGQ2NzFhZjgzMTc3ZmM2MjlmY2EgcmVsZWFzZTI3LW1haW50Cis4Nzk0NiA3ZjBkMGM5YTJkNzI5Mzk5YzJmMjhjYzM5MDI4Y2M1MjkwZmNhZDY2IHB5M2sKKzg3OTQ3IDI2OWNmNDZjMDlhZjViODMzN2I5MDIxN2IyMjY5MDI0NjRhYjI5YjQgcHkzaworODc5NDggZmVmNTIxZjQ1YWYzYTkwYTY4YjY3NDA5NzE1MzNkNTFhNzgzN2RkMSBweTNrCis4Nzk0OSA0OWIwYjJiYzBlODMzMWJkZjllNDIwYmRhZjMyZjgxYmRmMWI2ZDhmIHB5M2sKKzg3OTUwIDQzNTA3MjFkZWU1NTNmM2NjNjE1ZmZiNDY0M2U3MmQyMTFjMjBhZTUgcmVsZWFzZTI3LW1haW50Cis4Nzk1MSA2MDA5Mzg4Y2E1YTIzZmZjYWI3NjIxNWJmM2Y5YmExYzk4YTIxYzExIHJlbGVhc2UzMS1tYWludAorODc5NTIgNzRiZjkzYmU1NjcxMDJkMTE4ZjQzNDI4MzM0ZmNhOTVlMzE0N2EyZSBweTNrCis4Nzk1MyA2MDFiY2I2ZmY3NTJkNzVjNzAyZjFiY2ViMjQ4MGQxNzAzYjZhN2YxIHB5M2sKKzg3OTU0IDIzNmUxMWJhMThjNTczOTZkNTcyZTRiODJlNGE1NzFlZjhmOTM2ZjMgcHkzaworODc5NTUgMmVhMWNmZGY5MjliZWUwOTM4NmU1NjNjMGMyNDExNDA0MDcwNTZmMCByZWxlYXNlMzEtbWFpbnQKKzg3OTU2IGRkYWExN2MwOThkOTNkZWRjNjdjYjc2YWY2MDdmODIzNTU5NDFhZTMgcmVsZWFzZTI3LW1haW50Cis4Nzk1NyA5MTQ0NjgxN2NjM2U4ZTczZmNlNDBhNzkzZDc1MGRjMjYwZTUwOGZiIHB5M2sKKzg3OTU4IGE1MDIxNDk2NmQyNDgyZWE2ZWVhZTI3ZjZlY2IyYTA3NGIxNmMwZjcgcHkzaworODc5NTkgNzdmZTNmMTYwODdhZjlmMWM3MzVlNjFhOGFlZDEwMTRkZTZkZWEzZiByZWxlYXNlMzEtbWFpbnQKKzg3OTYwIGFlY2NiZDE2OTcwZjhmNjVhMjJmNmE1N2VmMDk4ZWUzMGU4ZDk0MmMgcHkzaworODc5NjEgZTE1MjYwYTQ0ZTQ0NzhmYTQ2ZGY3MGMyZWM3OTIwYjAzZGFhM2FmZiByZWxlYXNlMjctbWFpbnQKKzg3OTYyIDUwNDhiMjcyMDBkNzRhMTA3NWNmZTVjYmUzZTA3NWU1MmVlZWFlYTAgcmVsZWFzZTI3LW1haW50Cis4Nzk2MyA2Y2M1Mjc3ZjVlN2FhMzMzNTIxZWM3NDU2ZmUxNWIzZTZhZWY3YWYwIHJlbGVhc2UzMS1tYWludAorODc5NjQgYWMwZWI1ZGYyYzA1YmVjMThlM2E5NzdjMmM5YzIwOGE1OGFjNmQwOSByZWxlYXNlMjctbWFpbnQKKzg3OTY1IGQxMjAyMThkODBhYjQzYjRjN2VlOTJhMjViYWFmM2ZlYmQzZjIxZDcgcmVsZWFzZTMxLW1haW50Cis4Nzk2NiAzZWVhZWNmMDA1YzE0ZDM4YzRmN2QyMDVhMzU5ZGIxZWY2OWM0MzJjIHB5M2sKKzg3OTY3IDZkY2Q0OTE1MDZlZDUwNTMzMTg4NDcyYTU5NTliM2Q4MmI3ZTE0MmMgcmVsZWFzZTMxLW1haW50Cis4Nzk2OCBiOWI1NTFlZDA4NThkMmI3ZGIxNDMzYjAzMWU4MTVkNDQyMTI3MDI4IHB5M2sKKzg3OTY5IDQ1YTM5MWNkYzY4YWMyOGRjZDNkNGFiZjhhMmEwZjIzNjlmYTNmMWEgcHkzaworODc5NzAgNGFiZmI3NjcwZWFkZGE5MDdiZDYxZTIyZTE1MjE5NzAyMzM2MjFmOCByZWxlYXNlMzEtbWFpbnQKKzg3OTcxIDQxYmRjMDMyZTcxYWNkN2Y0NDU1NTRhNTExZWFhOWY1Y2IwNjYwNmYgcHkzaworODc5NzIgZTFjYzM1NzI4NDgxZWVkZDRiNzUzZTYwYWI3MWFmMDJlNzM5MDllOSBweTNrCis4Nzk3MyA0ZTg2ZDY5NWJhOThhNTgyMjlkZTQ4MmUzNTJkMGI2ODNmOTZlMWEyIHB5M2sKKzg3OTc0IGM2NjlhNjk3NmJmOGNmMmI3YTc0NzM2MTA1ZTU1MmViNGFiMDI1ZWYgcHkzaworODc5NzUgY2NiZDY1ODdmOGVkNWM4NzIyZDA0NzIyNWJhM2MwMWUxNjcwYmRiZiBweTNrCis4Nzk3OCBmOTE2YzJhYTIzOGZlOGEyMGNlNjU4YTJiOWZhYTA4NWFkMDM0NjljIHB5M2sKKzg3OTc5IGVmZGYyNTYxN2I3Y2Q0MjdlYTQ3Yjg5NGJlYzNiOGFjMmFlOWU1NDkgcmVsZWFzZTMxLW1haW50Cis4Nzk4MCBlMTI1ZDkyZjc0MzhlMTJmZmY4ZjNjZDNkYzY1OThjNzNjMTgwNTAxIHB5M2sKKzg3OTgxIDg3MTlkZDcxMjM4NGRiNTk2OWE1MjkzZWQyYTRkYzE5NzNlNDNmY2MgcHkzaworODc5ODIgMTBkNjdkYjY3OTQyMGY0ZTc1Mzc5NWNiNDI2MTk1YTQ2ZGVkMGZiYyBweTNrCis4Nzk4MyBjYmRjOGIxZTZiZDM5Y2ExYzVhOWI0YzBjNzk2OTE2M2MwM2JiN2VmIHB5M2sKKzg3OTg0IDRlYWUzM2YzNzk3YzVkMWNkMjJlNjlkNDk4NDFmZWI3Y2ZlODc3MzkgcHkzaworODc5ODUgMjVkNTNlNDQ5N2Q4NTI3ZDg5ZTI2MDBiN2Q4NWQ3OWYwZDlhMTNlZSByZWxlYXNlMjctbWFpbnQKKzg3OTg2IDJmMDg5NGMwMmJmMmI4OGNhMDIyZjE5YTNlOTJkY2U4ZWY4MmI4MDcgcHkzaworODc5ODggN2NiYjVmM2I2OTU0YjlhYzJmMjViMjk4YTUxYTZiMDA0YjY0ZmE1ZiBweTNrCis4Nzk4OSA3ZDY1OGI0OWIzZTE0ZTliMTYzZWMyYjNiYzE2ZDk0OTFkMTQ1MDEwIHB5M2sKKzg3OTkwIDNhYzliN2NmNzYxNGNkZTAyZjVhZGEwNTM0NWIzMDNiODU2YWI3NzAgcHkzaworODc5OTEgNjA4ZjNhNjE1OGE4YzgxMzM3ODkwNzUzMjE2MWViMTU1NTgxOWE4YiBweTNrCis4Nzk5MiA0NzRiMmNlMDc5NGZmYWZmY2FlNGUzNmRjNTFmZDk1MWY0NTVhMWI3IHJlbGVhc2UyNy1tYWludAorODc5OTMgMDM1M2IxNjEzYWE4MTRiYzZjOTNlMjQ0OWUyMjM0OWJlMTI4OGE0MCBweTNrCis4Nzk5NCBmMTk4MjRhYWIzOWM4MGJkNDZjZWNjZjk4OWJhMTYwM2NmYThjNjFkIHJlbGVhc2UzMS1tYWludAorODc5OTUgMjQ0YTI3NDc3Mzk2ZDRhMjk4MDRhNGJmYmFhZTEwNjhjMzcyZjliMSByZWxlYXNlMzEtbWFpbnQKKzg3OTk2IGY2ZTlhYzRiODgxMzZiMzhkOTQ3YzFlNjAxNWZmYTI5MWFmMTZhZWEgcHkzaworODc5OTcgN2Y4ODg4YjRmZGZjYWZlOWEzZDAwZTgyMjE5YTY1YzllMWZlNzM3YyBweTNrCis4Nzk5OCBkODY0MzI4YTc0ZTQxNDJhYTI4NmY4MjJjNGI4MjdkMWI3MGNkOTMwIHB5M2sKKzg3OTk5IDk2ZmZlNGEzMTFkZDRkNWYwNTQ4YzNiZDA1ZDRlMzNiZWU0Y2YzNmUgcHkzaworODgwMDAgMzU5M2IwZDljYWE3NGM5MDQ4YjA5ZDg0ZTAxOWQ0MTc1ZjAwYzAyNiBweTNrCis4ODAwMSBmZWJlMDRhNmQ0ODY0ZGQ4OGE4ODJmMTdmMzNmMDEwMmI0N2Y5NjIzIHB5M2sKKzg4MDAyIDQ0MzBlNGQ2MzU5NDdhMmExNGJkNThiMzY0NDQyMjU4ODFhNWIyMTggcmVsZWFzZTMxLW1haW50Cis4ODAwMyAxOGFiOGUwZTY3MDI1YmMzMzliYjQyZGRiZjNiZTA0ODkzMjIyOWE2IHB5M2sKKzg4MDA0IDJhZmNkZjY4YTM4OTFmNzk1MmJhMWM4ZTMzMzM0ZDM3OWI2NDUwMWUgcHkzaworODgwMDUgYjA0ZGE1NDRlMTNiYmY1NDNkN2ZjZGYyZmNiNDQwMDU2ZDY4MzYxOSBweTNrCis4ODAwNiA0ODQ1NDc2NWQ4ZTBjZTY1NTBhMDRjNGQ1M2FiMzdhMjhhOTdjODY4IHB5M2sKKzg4MDA3IDkxMWQwYTc0NjA5ZTIxODAyMGQzZGZlMmVkMGExODRjMDUwYzU1MDggcHkzaworODgwMDggN2IyZDdjZWRhZmIwYTExNjJmMGQyNWJmYzhmYjYwY2RmNTcwYzNlNSBweTNrCis4ODAwOSAwYjRjOTk1Mjk5ZGRjZWRkMTUyN2EyY2VjZTJiOTA3YTI2ZWZiMTI2IHB5M2sKKzg4MDEwIDRkYzU1MDM3MzFmZWExNzY3Y2Q2Y2FlOGVkOWE4YzBmM2FlMzlkZTQgcmVsZWFzZTMxLW1haW50Cis4ODAxMSAyOTMwMzkzZjBiYmI5MWRhNWM0ZTYwNDU1YTVlNmRhZTQxYjgzYWExIHB5M2sKKzg4MDEyIGFlMDk5NDU4MzM0NTFiYjhjYjVjNzMxOWVmMWFlNzlmOTJmMmU5OTggcHkzaworODgwMTMgYzBjNTk0YWVmODQyMzVlNzAwYTJmMzJhYzZmNDkyOWRiYmJjNDNhMSBweTNrCis4ODAxNCAzOTY5YTZjYTE2YWYyOTE3NmM0ODY1MjgzYjg2ZjJlMDhkZTVkMjlkIHB5M2sKKzg4MDE1IDNmOTljMzZkMDBiOGFkNWYyN2M1NjllYzAxODY3MmMxNjI3NTcxNWYgcHkzaworODgwMTYgOTNiN2MwNTgwYzQzNDY5YmZiYTE3Y2Y1MTE4ODQ1ZDhjMTRhMzQyZSBweTNrCis4ODAxNyBmMTMwYmUwMWQyMzAwZDk5NDMyZjNiYWVjY2VmMWY0YmFmNzkxMjMwIHB5M2sKKzg4MDE4IGJlZWFiMGZhNDFlNWVhZmY2OTZhYWU1OWYyMzJjNmI0N2UwMDM3MmMgcHkzaworODgwMTkgYjAzNzQ3YWRhNDRkNmE4MDI1MTM2MTJhMmE0OTkwN2UyYjczNzYxNCByZWxlYXNlMzEtbWFpbnQKKzg4MDIwIGVmMDc3N2FmOTk3OGVlMmIyN2Y0NGI5ODlmNmFjZmVmNmY0YzA1YjIgcmVsZWFzZTI3LW1haW50Cis4ODAyMSBiOGY5N2Q4Y2Q0ODVmMjdhZDM1YzMzZGJkYTg0YWQwNGYyMGViMDIyIHB5M2sKKzg4MDIyIDNjMzE2MjM2ZWFiZDJhZWQ3N2RiNTlkZDA2Zjk3NDhkZTkyMTY0YTQgcHkzaworODgwMjMgNDFkODc0ZWNiZDgxZmI0NjYxN2Y3OGRiMDE1YTU0ZTBmZmU4NzlhZSByZWxlYXNlMzEtbWFpbnQKKzg4MDI0IDdhY2I4MzlmMzYxMzJlYjQ4YWM2ZTgwZjA2NWFlMzdjYTk3YmI3ZWIgcmVsZWFzZTI3LW1haW50Cis4ODAyNiA4ZGRjYWUyYjY0YjQ3MWZkM2VlYTcwMjQ5YzIyYWY3MzQyZDIyZTFhIHB5M2sKKzg4MDI4IDRhMjBlM2NhMjVlOWFkNzgxNDM0Y2Y4MWY1YWMzNGY0NjA4NThkZjMgcHkzaworODgwMzIgOTA3NmU0MjIwZmE0ZjBkMzcwZTcwNzRlZTIwMjdiYmUwMWRlZjk1OSBweTNrCis4ODAzMyBlODRkNWVmYTZkNzU0YjEzZTQ2N2RjOWI4NDA4Njg4NWYzYzJhZTg1IHB5M2sKKzg4MDM1IGFiOWRjNDI1NDdjMDk4ZTM0Nzg2NGY2YTIwNWI0YTU5NjZkYmRlMTEgcHkzaworODgwMzYgODY1ZDViMjRiZjI4Y2E0MWI1MzZiZWZjMzI2NDA3YzAzZTc0YTRkNSBweTNrCis4ODAzNyBmZTEwMjNhZjZiNTk2OWQ0YzUxNGM0MmU5MWVjZmNlZmMxMmJlNmFhIHJlbGVhc2UzMS1tYWludAorODgwMzggYWRhNzAyYzA0ZDE0YzM3NGJlZjYxZjYyZjFkYmJkNTY0MTBkYzY4YSByZWxlYXNlMjctbWFpbnQKKzg4MDM5IDQyZWZjMTFhYjc4MmQwZDFkMDJjNThmODdjNjJkMTU5YzdiZTk5OWEgcHkzaworODgwNDAgODU2NWU3MjNiNGEwZWEzZGFhMTRiNTM1ZWEyNDVhZTc0MWNjZmNkZiBweTNrCis4ODA0MSBmYzFkMTU5MTc4OTU1ZmMyMTk2YjFkODI5NDhhYjhkYjE0OTRkM2NjIHB5M2sKKzg4MDQyIGIxMTA0YjQyNTEzNGM2ZTlkZDE2MzhiYTRiZGM0NmNjNjhjMDY1MWEgcHkzaworODgwNDMgOWYyODJjZmE4OWEyMTg2YTVlOTZiM2YzNWU1MzM3OTc1NzhmMWY2MCBweTNrCis4ODA0NCBiN2E5N2YxMWI0MWIzNzZkOTQxYWI0NGQzM2IxYmY0OGE0Y2EwMmY1IHB5M2sKKzg4MDQ2IGM5MWRlMzI2ODM1ZTk3OGZkOTVmZTllNTYwYmQwNTY5NTM1MzY1YmUgcmVsZWFzZTI3LW1haW50Cis4ODA0NyAxZjZlMDQ1ZThhNjliYWI1YzU1Y2Y2ZTJlOGJkYmY2NmI3N2EwMzJiIHB5M2sKKzg4MDQ4IGQ2NzA0ODJhNTgyMTE3NWY5Y2Y5MTE3MjNkZDA1NDM1YjFkMjEzNDggcHkzaworODgwNDkgNDVkYTgzMzI3NjM1ZmRiY2Q1YzQ4NDUzYTEyOGJjYjE1MWFkZjBlMyBweTNrCis4ODA1MCAyY2Y2N2M2YWE2ZWU2OGYwYWJlODA3YTY1M2QyMWRlYWQwZWYxZDFmIHB5M2sKKzg4MDUxIDM4NDczN2E3NDA4MGUzZTE3NGI1ZTg1YzhmYjY1MGQ1NjU3YTc2MjUgcHkzaworODgwNTIgNDcyNGI5NGM1NzQ1NjhiNjIzOGJkNzUwNTMxYTEyOThiZDY4YjRkOCBweTNrCis4ODA1MyAzNjhlOTEwMzE4ODAyMDBiMDg0ZjNmNjE2ZDhmMWUyY2JkZmZjNjJiIHB5M2sKKzg4MDU0IGFlZWZhMjIxYmJlNjUyODA1ZjBmNTJmODQ2MTQzZmFhMzkxOTUwM2IgcHkzaworODgwNTUgNjkxYmMyYzJmYzIyZDU1ZWNkZDU1ZjJhMDRhYzZiZWI2YWRiZTY3ZCBweTNrCis4ODA1NiA1MjVhZWFhM2Q1M2YyOWZlNTBhNDk2NWQ3ODcyZjE3ZmQyYzY3YWZlIHB5M2sKKzg4MDU3IGZhZWMxYjVhOTZkYjc0NGQ3NmI5OWIxZTEyYzg1NmQwYTc2ZjgwNWYgcHkzaworODgwNTggMzY5MTA4NTFhNzE1Y2ZiNWY1NTRlZTMyMjQ2MGQ3MTNmYTRhZjcwMCBweTNrCis4ODA2MiA3YjMxYmViODhjZGIyZjE5NjgzMDRlMDI4Y2Q0ODljMGNkZmFlY2MzIHJlbGVhc2UzMS1tYWludAorODgwNjMgMzY3NGRjYjQxYTk0ZjMwYzA3MGU5ZWZjZGFhYjk1OTg5ZGZkNzAwYyBweTNrCis4ODA2NCBkZDg3YjBlZmNkZDgzNGEyZTViYzQ1OTEwNDFhZjYyNDc1MTYxY2FkIHJlbGVhc2UyNy1tYWludAorODgwNjUgYzU5Y2VhMjE4NTQ3NjczNWQwYjdkZWM3MzVhOTliODFmNTk1ZjBmYyByZWxlYXNlMzEtbWFpbnQKKzg4MDY2IGRmOGI2YTJiZGRkZDcyZjhkNDBhODI2NDMwMTExYTlhNmVhYWFkZDMgcHkzaworODgwNjcgODExYjRmYjhmMGNjNjkyMDFhNGIxNzlkMGNmMjcxYjhiMGFjNWQ0MyByZWxlYXNlMzEtbWFpbnQKKzg4MDY4IDFmNmQxNDE4Y2MxODMxNjdiYmRhZjZiYzBiNmEwYzVmZTgwYjliNzYgcmVsZWFzZTI3LW1haW50Cis4ODA2OSBhNzhjNmQwYzNmNjljZDlmNzYzYjIxN2EwYzMzMzM0ZWQxNDdjYzMwIHB5M2sKKzg4MDcwIDZlOGUwZmUxODIwNWYwMGEyNTI2OWUxYjg3MjgyZDllMzcyNjdkZmQgcmVsZWFzZTI3LW1haW50Cis4ODA3MSBiOTQ4ZGJkMWZhYzFiNGI3YzZiNDExYzFhZmM2MTFhNWM2OGEyOGNkIHJlbGVhc2UzMS1tYWludAorODgwNzIgY2FjYzM1YTFlMGMzZDE1OWRlODMxNDk0OWM2ZDQ3ZjRmZjdiODBiMCBweTNrCis4ODA3MyBkMzVhMjRhOTQ3MTc4ZDQ5M2U0MzdjYWFkMmNhMDYxNTA1N2UxMmI1IHB5M2sKKzg4MDc0IDRkMjc1YzU4MjE0YjMxMzI5MWQyOWRhM2E4YjUyY2M0NDFmZmU3ZGEgcHkzaworODgwNzUgZWRlMjYwYTUzZmI1MGE4N2E5ZmY0ZTJjYjI3M2FkOGJkOTA1NTU0NiBweTNrCis4ODA3NiAyOTVmZjU1YTI2NWU3Yjg3MTRmYjEwNTBkMzc2OTNjZjk4MTRlNTZmIHB5M2sKKzg4MDc3IDlhMDBkZTI1MGUxZTQ5ODJjMmNkMjEyMDAyMTZjOTMyYWMyZTg1Y2UgcHkzaworODgwNzggODk2MjhmM2VjZGNiYjdiOWFmZDEzNDBkNWU3N2VmMDAzMTlmOWM0NCBweTNrCis4ODA3OSA0MTUxNzNmODdmNDVkODIxZGMxMzI5OTkwYzRlMjg1YTY1MjE4NmYyIHB5M2sKKzg4MDgwIDZlNjgyNjUzODk3NDNiMTNlYmQ1YWEzYjNhOWIwOTNjMzg0YzdkNzQgcHkzaworODgwODEgZmQ4ZTgwZmMyZDk0MzY0ZWQ0ZTk0MjYyN2Q0MjUzZGY5ODAyZjY2NSByZWxlYXNlMzEtbWFpbnQKKzg4MDgyIDYxMDE2Mjk4MTBlMDBkZDI1MTYzNzNkY2NlYWIwODg3NzMzZWE5YWQgcmVsZWFzZTI3LW1haW50Cis4ODA4MyA5OWVhYjVlZGY5OWRlYzcyZmM3ZDAzOTc2MDI3ZGM1ODNiMmQ2MjRhIHB5M2sKKzg4MDg0IDU3YmQwZDg2NGNiMDM3YTE0N2NjMWUxMGZkNDc3NGUwZTc0YmU0ZDkgcHkzaworODgwODUgZjVhM2I2Mzk3YTUzOGQ4MTAyMjljMzZjNGY5MTQ0MDkyY2RiZjAwYSBweTNrCis4ODA4OCBlZDhmMDU4ZGM2NGIwNzVjZjU2ZTI3OTY4MzAyMTZmNTRkYWEyNTNiIHJlbGVhc2UzMS1tYWludAorODgwODkgNTJlODAyOTE0Y2Y4OTYyMGM4ZWE3ODY2NjIyMzJjNGQ0NGRkMWFjMyByZWxlYXNlMjctbWFpbnQKKzg4MDkwIDJkNDJmNjRiMjhmZGVmMjFjYjhhNTk5MzEwYzY0NTljNGE0ZTJmYmYgcmVsZWFzZTI3LW1haW50Cis4ODA5MSAzNGQ0ODg0OGQ0MWJjODExYjM2MjJmY2NhZmQyZDFmN2JmYzdjYmI3IHJlbGVhc2UzMS1tYWludAorODgwOTIgZjQ0MWM2ZTNhNzY5MTI5YzExODA0YzdlZTgzNDdlZmEyNTc1NTIzMCBweTNrCis4ODA5MyA0ZTBiY2VjODA5ZGQ4MDk0Yjk5ZjFmNTE3MjdkMDBkNDI3NmE2ZWEwIHB5M2sKKzg4MDk0IDc2MWU5YWQxNjVlZjFmYzE5YmQzZjVlYzNmZDRlMjg4MGIxZTNmN2QgcHkzaworODgwOTcgZmM1ZDAyYWU1MmRkNmJkODI3NTIwM2Q1NzJmZjU0ODUwNmY3NTM5NSBweTNrCis4ODA5OCAyZmRlNWFiZmI1ZjFiN2ZiYTBmMTc5ZGMzMmQzODQzMjI1NjZjYzBhIHJlbGVhc2UzMS1tYWludAorODgwOTkgZWFjNTQ1N2ZmMTk1YjA4ZWY3NTQ0MDk5YjMxYzU0YzNiMjMzZWQ2ZiByZWxlYXNlMjctbWFpbnQKKzg4MTAwIDQ5NmVhNTAyOGMwMWFjNWQ3MjgyMTc1MzQxMWZkNzA0MzViYzNiNjkgcHkzaworODgxMDEgMzgyNGJlZjM3NmNjN2ZlYWNmMzA4ODA5ZDQyZDc4ODQxODJiNzFhNyBweTNrCis4ODEwMiAxMDlhZjAzOWY0NGYwZDU5NjYyNzJhYTU2ZDMxYTEwNjFjZDNiODc0IHB5M2sKKzg4MTAzIGNjODk3NTcyNGY5YThiZjQ4YTViM2VlNDIyYTA2OTQyOTVkNDA3MTYgcHkzaworODgxMDQgZDcwNThmNzRiZDA0YjRmYTZmZDVhOGY2ZDdjYzNkOWU0NzdmNjM3OSBweTNrCis4ODEwNSA0MWM1MWY1Y2Y1ZDk5NDgwMDYyZDUwMDcwMjE3ODAwYmUwODE2OGJiIHB5M2sKKzg4MTA2IGE3YWE4MzczYjVmY2I1MjA0YTcxZjg5NmI4ZDFhMTEyYjA1MTA5ZWYgcHkzaworODgxMDcgM2MxYzhkNDI2OTY2MzAxYWJlZWUzODcxN2Y5MmQxNWQ3ZjhlNTJkZSBweTNrCis4ODEwOCA5OTE0NzBiZTAzNDBiZTBjNmJhZGQ2ZjAyZmMwMjI0ZTljNmIyYTUyIHB5M2sKKzg4MTA5IGRlOTI1MzYxZWJhNTExNjc2OWRjZTM1ZTE2ZjJhZjk0ZGJlMGJhYzQgcHkzaworODgxMTEgOTFhYmU4NTUwNzJhMzY2ZDJkODgxOGMwNTAyODc3MzM2ZDZkZDNjMyBweTNrCis4ODExMiAwN2UxZWIyNDRkZjg4YjM2ODAwZjJiYTY4N2EyODIyZTY3M2M2NDgyIHJlbGVhc2UzMS1tYWludAorODgxMTMgMDJlYzE5OTdkNzVlODdjYzViOThmMzhiMTRkYTY4NzdlMzMyMGY5ZCByZWxlYXNlMjctbWFpbnQKKzg4MTE0IGMzNTQwMGMzNjMwNGU4OTdhODQwZTQ4YjIyOWYzNWM3M2FmYzVhMzggcHkzaworODgxMTUgYTkyNWVhNGUxMDVmODE0ZmZhZmM5ZmQ5ZjMxNGI5MWZiZjM3NGRlMyBweTNrCis4ODExNiBiODgwYzgyMjdjMDI3MmMyZDIxOWMxYjc2OWZhNDAzMTFhYTgxZTIwIHJlbGVhc2UyNy1tYWludAorODgxMTcgMjMzY2M3NDAyNzRiNzEyNmI0N2ZhZTc4OTViNDRhMDI0ZjU0YjNhZSBweTNrCis4ODExOCBlNGU0YmZjMDllMThkYjNjZmNjNDlhNWIwYjI5NmViOTA0YzdmMGViIHB5M2sKKzg4MTE5IDZiOGI2ZTVhZWMwYTVmNDQ4ZDY4NTFhNGJjZDkzZDEwOTI1ZDQ0ODIgcHkzaworODgxMjAgN2Y3YzJhYWI4NjFjMTFhODQwZjQ0YmE0MWYzNjhkZmYwMjk0OGE1ZiBweTNrCis4ODEyMSBkYTQ0YmIwY2Q0ZTk5MmQ4NzY4MTlmZjc3YTJlMWQyM2Q0ZjBjNjI1IHB5M2sKKzg4MTIyIGZiZWJmMGYwNjA1Nzk4MDliM2ZiMjNlMTFmODZiNzYxN2JkOTFlZTcgcHkzaworODgxMjUgM2IzYzUzNjMwNjM3YTVhM2I3NDhkYWEyMWE5YmJlOWY1MGIyZTJhZCBweTNrCis4ODEyNiBhZWY0ODI0MjBlOTZjY2JhMzhmZTgwNzI5ZGI0ZThmYjhhNmEzOTE2IHB5M2sKKzg4MTI3IGNlNDA3NTRhODQyYTNkYjUxYzFjNjI0ODUwMTcyODRlMTI1M2Q0N2QgcHkzaworODgxMjggM2QzM2Y0MWU4MThkYmYxY2U2YWM4ZDAxZjBhYjZjOWZiODVhMjdiMiBweTNrCis4ODEyOSA5M2U5OGQ0MGYyYTVhNTQ5OWQxMmQyMzJkMGI1NDBiMzU4ZGRlZTRiIHB5M2sKKzg4MTMwIDVlNzBlZWU4NmM2MTMwYjFiZDIxNzZhNTMwMjhiMDY4N2MxYmU3ZWYgcHkzaworODgxMzEgYzgzOTZkMjdmNTZlOGQ2NTllZDkyODM0ZjQzZTg1MzI2NmNhZTJmMyBweTNrCis4ODEzMiBmMzY1MzhiYTkwYThmYTMwYTBlYzgxOTM5Zjk4ODYzMjQ5YWE0ODgyIHJlbGVhc2UzMS1tYWludAorODgxMzMgZGY5MWEwMThkZTNhYjUwNThjY2EwNjEzZTZlM2EzMjI2NWVhNmZhYyByZWxlYXNlMjctbWFpbnQKKzg4MTM0IGZiNjY4YWFhMmZhNGYwZDc1Y2E4YTg4NTViNWY4MGE4Zjg4NWE1ODkgcHkzaworODgxMzUgZTRlMzJjNGZmNjI2MjdhM2U1YzBiNjQxNmQ5MjNiYjBlOTQ1ZWQ4NiBweTNrCis4ODEzNiBjYzIxNjI3MDhiZjYyYjViZjc1YWMxNDAwYWFhNmE3MWEwMThlOTRjIHB5M2sKKzg4MTM3IDhlMGI2MTdjNmMyMjE2ZDM0OWQ4MTg5NGYwMzZjZTRkMzg0YmI0NGEgcHkzaworODgxMzggMTY0ODAxMWM2NWRhOWEwYzI2ZGJiZjQ2N2Q0MTVhNjRkZTk0MGRhZSByZWxlYXNlMzEtbWFpbnQKKzg4MTM5IDI0MTYxY2Y0MDVmNGMyMjM3NDMwYjdmZTk2YTA5Nzg1N2Q0YWFlZDIgcmVsZWFzZTMxLW1haW50Cis4ODEzOSBkZThkYjdhYWY3YTI5NjA1N2FlMjYxMjViOTk2MThjOTYxYjRmZWY2IHJlbGVhc2UyNy1tYWludAorODgxMzkgYzQwODE3Yzk1NTE0YjE0NzFkYjI2NzBlMzQ3NDc0OGVjODQzOTBiYSBweTNrCis4ODE0MCBiOTY4MDUzYWZhZDBkYzUxZThiMDg3ZTU5ZmYxMWU1OTQ5ODYzODFjIHB5M2sKKzg4MTQxIDc4OGIwMWI1YTc0ZWExN2M2MGY3N2Q2YjJkMWU5ZmE4MGY1YjU3OGUgcHkzaworODgxNDIgMzBjOTEzNDJiNmFlNjM2NWI3MzNiMTMzNjA3MjFkZDk0YjA3MmQ3NyBweTNrCis4ODE0MyBiM2NhZGY1Y2Y3NDI2YzViMjc4MjBlNGY3Nzg5NzkwYmRjNWIwMDEwIHB5M2sKKzg4MTQ0IDA4NjczZTVmNTQ5YTI3Y2M3MTU4MWU2Nzk5ZWY3ZDBkNmFiZjZjMTMgcHkzaworODgxNDUgYmFhOTIyYjQ2MjM3ZGIyYjI5YTI4NDAzMTRkZDA2YzM3MWUxMzk1NiBweTNrCis4ODE0NiA0ZjdmMzk5NTE5NGExYzhiMDNkNDM4NjMxYmQ2OGFjYTRlMTM4MTBlIHB5M2sKKzg4MTQ3IDRjNGFiZmI4ODRmYjQ4ZmUxNWNjZDZhYzZlYmE1OWVlOGZkNTJkMjMgcHkzaworODgxNDggYmNmMDMwZjczZWVlYjQxNTdjZDlkZjhmMjM1MGE3ZWQ1MGIzN2YzOSByZWxlYXNlMzEtbWFpbnQKKzg4MTQ5IGI4YzBjYTM1OTc5YTJjZGU4YzFmODdmZmU0MjUwZDNkODc0ZDU2ZGUgcHkzaworODgxNTAgNDMxZGRjZGI0MzEwNmFkOWI2YmViMzhhNjRiNmQ5ZjMwZmQxMDZiNyBweTNrCis4ODE1MSBmYzJhZGU4OGFiNDE3OWZiOGMxZWQzOTg5ZWFjYWQ3MGEwMDBjNTZiIHB5M2sKKzg4MTUyIGQxYzA2MzA2YzE5YmU4MmJlMzliMjRiYjZmY2Y2ZDVlYmM5MWIzNTkgcHkzaworODgxNTMgYTBhNWM1ZDlhYTRmZGYxZjE2NDQyN2QwMWY5YTJjNzA2NzdiZmJjMSBweTNrCis4ODE1NCAzYmIyMWRmNjRhYTUxMjAxNWViNGJjNDY5MThlNTliMWNkNGNlYTAwIHB5M2sKKzg4MTU1IDQwNjNlNTI2OTgyZjI2YmEwMmMyNjNhMmJlN2RlYmM4OGVhNjY1NGQgcHkzaworODgxNTYgNmY0MGI0NzA5ZTlhNTJmZDhlY2E2NGExN2JjMGI0MTJlMzI3ZWM3MCBweTNrCis4ODE1NyA1YTY1ZWMyODc3MTM3NDU5NmYyZWU0Y2ZiMDIzOWVjMzI2NmNjMjNiIHB5M2sKKzg4MTU4IGRkMjdkZjhkMTRlZmMxOTdmZWIxNzk5ODg5NTlhNTI5MzBiZGE1ZjkgcHkzaworODgxNTkgMmRlNjk5ZTVmOGYzMWE1MzIxZTIwNzgxODEyZGM0MThjNjQzYzlkYyBweTNrCis4ODE2MCA5MGEyZDliNzAyYmNiYWFmYmE5Y2FkNzc3MjE2YWJhMWQ1ZTdlY2ZhIHB5M2sKKzg4MTYxIGYzYmZlYjJmYmNmYjA2ZDVmM2JlYjI4MDE0Y2Y0OTljZGExZGQ0Y2MgcHkzaworODgxNjIgMDNlMmE4NzU1NzA5MGFhNTJiYTAyOGI0ZGJiNjZiZjc0M2UyMzVmZCBweTNrCis4ODE2MyBjMTc1ZjVkZmYzOTYwNGJkOTA3ZTQ1MjhlN2I0Y2Q4NDBmYzRkNzVjIHB5M2sKKzg4MTY0IDgyNWViYWRlYmY5YmEyOTIxODVlZDZlZGQzNDhiMzUzMzcyNDA2YzcgcHkzaworODgxNjUgMWUzZjE2OWI5ZTQ2YWU0ZTFiYTgzMTIyOTE5MmJjNWNhY2M2ZGJmNSBweTNrCis4ODE2NiA3MDkxOWJhZDc0NTg0MWQwMjY2YzdhYmZiN2MxZWU2YTIzODQ4NmUzIHB5M2sKKzg4MTY5IDdmOWE5OGY3NjZkNzVjOWI1OTQ0ODkwMmNkZjU0OTFjZDQ1YmFhZGMgcmVsZWFzZTI3LW1haW50Cis4ODE3MCA0NzNlNDM2ODM5ZWU2MzkxZTJjNTcwNjZlMWNkNTFkZWI5YzNlZTdhIHB5M2sKKzg4MTcxIDhhMzBhMmNiNGI5ZTM0NzJkODkyZGJhMzZkOGRkMGQ5MGJhMjVlOGYgcHkzaworODgxNzIgNTk4YzE5NWU1MmYzNjA4NmZlOTM5MDI4ZGNlNzFjNDhmZmYxMjMyMiBweTNrCis4ODE3MyAzYjkzZDAwOTljZWQwN2M3YTVjYmQ0YWE4YTllYWRkMDM3ODk4NGU5IHJlbGVhc2UzMS1tYWludAorODgxNzQgYjAyMjU5NTdlMDA2NTk5NWZiMjFhNzhhMmEzMDMxNjNhMDQwODUxOSBweTNrCis4ODE3NSA5M2E0MWRmOGM3Mzc4Y2ZhYjZmNzY4ODU2Yzk4ZTJmYmQyY2NhYWYxIHJlbGVhc2UyNy1tYWludAorODgxNzYgMGI1Mjk4ZTdiMmQ1NDA1YmQ3MjM3OWVkNjZiMzY4MzI4ODk4ODcxYyBweTNrCis4ODE3NyBlYjRiYTAzZDdjNGRmMzIzMjIzYzc2YmJjNjFkMmM4MWMxYzU0MmJiIHJlbGVhc2UzMS1tYWludAorODgxNzggMGQ2ZWNjZjAwYjViZDY3ZDFjMjA5OWVjZmI3ZTM4MDkzNzA5NjQyMyBweTNrCis4ODE3OSA3MTI4MTAxN2M0M2ZjNDNmZmIxNzdkMmFkODFmMDVlNmNlM2ZhMWIzIHB5M2sKKzg4MTgwIGZhZTE5ZTU1MTdiNjViZTJiZjMwNzNkMzM3NTAzODE3MjBkNjBlM2UgcHkzaworODgxODEgMDMyMjBlZDQ4YmNhZTBkZTBmY2NkY2JjMGFkOGM2OGE1YjBjZDg3OSBweTNrCis4ODE4MiBjMmJkNjkyMDc4ZDIwZTczYWU0MTk2ZDJlNDgxZTJjY2I4NzRiNDhlIHB5M2sKKzg4MTgzIDMyYzg5NjY4OGM5MWQwNjhhODYzYjc2M2QyZTM3NzgzNWRjNGJjOTAgcHkzaworODgxODQgMDhmMzJkMTFiN2VmYmEyNTQ1NWRjMGQ2OTk3MmQ5NzZmMDZiOWNmYyBweTNrCis4ODE4NSA4OWEzZjZjMTJmMDIxMmRkNjFmZjVhZTAwOWMyM2EyNmZlZmQzNzkyIHB5M2sKKzg4MTg2IDc1N2E5YjE4MzZiMTlmMmI2N2Y2YWZiNmIxM2RhYTZmZDA5NDA5OTcgcHkzaworODgxODcgMDA3NTNkMDRiYmJmYjMzZDU4NWExZDE2N2JiOWRkMDBhZTAyZWRkNiBweTNrCis4ODE4OCAzY2FiY2UwYjZjYWZjYWNjOTAxOGZhNWRmYWZjYTNlMGJjMmI4MDRjIHB5M2sKKzg4MTg5IDIxOTc1NGU5YzM5YzJmYTA2MjgwNDBjOWYyYTc1YTIzM2I2OTIzOGUgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5MCA3MDU3ODBiYTllM2EwNTNiNWM4YzUyYjM3NmRjNDc5ZDFjY2NmYmZkIHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgxOTEgNzc2YzNjMjk0YmI3MzVjNDg5YzA0NmI4OGY4ODc1YzBlNGY0YTdhZSBweTNrCis4ODE5MiBmNjM5MmM0Y2U2MTk4Nzc3N2RmN2ZjOTM0ZmEwYjg5ZTViM2ViNGM0IHJlbGVhc2UyNy1tYWludAorODgxOTMgMzJmYzFjYWZmYjE3MDI2ZmE4NWE3ZmMyMmU1ZDEwYTU2ZDVlOWI1NCB0ZXN0X3N1YnByb2Nlc3NfMTA4MjYKKzg4MTk0IDgyYjdmNTNjMmFjZDRhOTNhN2RiM2M2ZTQ0MjAyYzc0Yzk4ZWEwZjMgdGVzdF9zdWJwcm9jZXNzXzEwODI2Cis4ODE5NiBmOThhZDY1MDkwMjk1YTU0NDI0ZDViNTllMjM2NjcwYzQ5MzE4NzJhIHB5M2sKKzg4MTk3IDY1YjA5N2FlZGE4MDEzY2E3NzI3YzU5OWE4MDMzNDNlZjg0MDA3MGIgcHkzaworODgxOTggN2IzMGQ5Y2ZhMGQ5ZTUxODg0YjU0ZjI0YWRhYmNlZDUyMGRkYTVmNSBweTNrCis4ODE5OSA0ODcxOGIxOWMwZGMwODJlMGFlMjAxYmRkYzcxODBkZjhjN2ZlZmZhIHB5M2sKKzg4MjAwIGJkZjk4NjRmZDI3NjA4NTMwM2E5YTE2MGZkNGQ5Njk0N2Q1M2IxYzggcHkzaworODgyMDEgMWYyMTVmZGEyMzgzOGNlMzc1ODc3ODFkOWFmMWZkMTEzN2FlODkwMSBweTNrCis4ODIwMiBhNjc1YTQ0Njg2MjA4NDM5Nzg4NWQxN2EzMDYxOGIwM2YzYmQ0ZjIzIHJlbGVhc2UyNy1tYWludAorODgyMDMgMWQzYmU3YjAxZDg0NWVhNjRlYzBmOTM0MGQyZGY4NDJkZjE3YTA0NSBweTNrCis4ODIwNCA4ZWFhMzI3OTdmOTJlMjkyZTk0NWQwYzBkZTkzOGU5MjA0Y2QyNjcwIHB5M2sKKzg4MjA1IGFjNDdkMTFhOGNhMjRkNDYxZjYwYTQ3OWJjZTBmNzE2MjliNDZjYTYgcmVsZWFzZTMxLW1haW50Cis4ODIwNiA0NGMxYjU2ZDc3ODdkNzE1MjIzMjk2NDM3ZWM0MzYxOTU4ODU3OWQ4IHJlbGVhc2UyNy1tYWludAorODgyMDcgODA1NjE3NmMwNTNmMDVmYzExN2VkOWE1MjY1Mjk5OWU0OWQxZjA0MyBweTNrCis4ODIwOCAyNzlhMGM5NTlmN2RhZWYwYjljMjYxM2VlMzlkZDI1MTdmZTA5YTJlIHJlbGVhc2UzMS1tYWludAorODgyMDkgNTkxZDU0ZmZlOTY5ZDc0NjdjZGMxMDE4Yjg4NDdhZDBhZDA5YWNhOSBweTNrCis4ODIxMCBmODJhMDRjYjE1MGEyYzA2OGYxNTljOWUzOWQ3MjBjYTMwNjFhY2M4IHB5M2sKKzg4MjExIGIwYWIzMzUyMmRkYTlmODNjYmFlMTQzZGM5OWQwN2EzYWMyMjA5OWIgcHkzaworODgyMTIgMGUzMGQ0MTNiOWU5N2Y0NmNjYTk4MGQ3NjRkYTg3ZmM1MjhlM2Q3NyBweTNrCis4ODIxMyBiYWMyOTY2ODBjZjg0NjdiY2QyZDkxN2I2YTljNmRhZDlkMmI5OWNkIHB5M2sKKzg4MjE0IGIyMmNjNzU2M2IyODgyMzExYmQ5YWRlYTQ2ZTM5NzhkMzE4NDQ2M2EgcmVsZWFzZTI3LW1haW50Cis4ODIxNCBmYzJhYjdjZGRjZjAwNThhNTFmOTE1MmY4ZjE5YzAzMGUwM2RhZmY2IHB5M2sKKzg4MjE1IGRkNzMyODY3Mjk2ODMxZTAzYTE3ODIyMDFmY2IzMGQ0OGMxNzk1MmUgcHkzaworODgyMjAgZDIxY2I2YTdhMTRlZTlhYzMzYTAzMjdjYTJhOTJkNjI2NDY1YmY4ZiBweTNrCis4ODIyMSBlNzk1OTMwOWY1OWM2NWI0ZWEyODYzNmQ3YjIzODljYWUyM2Q3NDRhIHB5M2sKKzg4MjIyIGU0MDY0M2EzYzMxZGZmZjNhYmE3NmVmYzY1Zjc4NjVkYmRmYTZlMTYgcHkzaworODgyMjMgN2M3ZWU0ZTExODUwZDA3N2Y3NTU3NmZhZjU3Yjg1Y2U3Zjg0Y2Y5ZSBweTNrCis4ODIyNCAyZGI2MTdlOTBjYTBjMTIwZDNjM2FmNzBmMDJiY2Y3MGJhZGE4YzY5IHRlc3Rfc3VicHJvY2Vzc18xMDgyNgorODgyMjYgM2VmODY1MzI3ZDdiMDU4MGVjMGIwMjE0YTEyYzhiZDU5OTU4ZGU0OSBweTNrCis4ODIyOCA4NTIxODZlNWFlMmFjNjllMjFkMDQyMTMwMjQ5ODE2N2M2MDcxZGY0IHB5M2sKKzg4MjI5IGNmNzUwMGYwODBmZDNhYzYzZTQzMGM2NGY5MzcyOTE1NDgxYzJjZGMgcmVsZWFzZTMxLW1haW50Cis4ODIzMCBkN2NkMWI2MjYwOGI5ODMxYzU0MWY0NDBhNjBhMmIzOTZmNTI5NzNhIHB5M2sKKzg4MjMxIDA4NWUwZGQ2Mzc5NmI4MGQzZjhkZWU3ZjkwZWQ3M2RhZmQ5YjA5NjYgcHkzaworODgyMzIgNWM1MTcyNGJmNDExMTZhMDgzMmIwYzMzNzZkYmZhOGQyMTJiNDM3MSBweTNrCis4ODIzMyBiZTExZTU2NTNmZGE5NzU0ZmVjYjQxNGI0MTY4ZjM0ZTcyOGNhMTdjIHJlbGVhc2UzMS1tYWludAorODgyMzQgNjQ3MTNlMzE2ODNmOGI3MWUyNGI3OWNmOTg3ZGI5YzAzMWQ1NTgxNiBweTNrCis4ODIzNSAzMzQ4MTJiYTU4NzQyMmJkYzRiODkwZjc5YmQzNGMxNzg1YzUzZTc0IHB5M2sKKzg4MjM2IDZhMWZiOTQ2NDdjYjRkZGZjOGNmYTlkZDY3ZDg4ZjM4NzQwNzYzMzUgcHkzaworODgyMzcgMmFhZDcwN2VkYTYyNzhhMmEzYzY2NTY5MDY1ZWQ0MTRhYjMwMzEzOCByZWxlYXNlMzEtbWFpbnQKKzg4MjM4IGYxMmZlNjg1ZTQ0ZDI4ZGM5NzNjNjEyZDZlZWJhZDY2MDAzMDNhNjQgcmVsZWFzZTI3LW1haW50Cis4ODIzOSA3OTFmNTJmYmU1ZTA2MGFmYmRlNDU5ZDkwY2NjNzdjOTI4NDQ3NTI2IHB5M2sKKzg4MjQwIDVmMWFkNjVhMWI4NGM3NzdmZDUzNDEzOTAyNWUwNzY1NDViZGE5MDYgcHkzaworODgyNDEgM2M3NzcyZmZmYmFkMzRhMjYzMDJjZDMzMTI0NmRiOTU1ZTQ0NWU1NCByZWxlYXNlMzEtbWFpbnQKKzg4MjQyIGM2OTA2MDk5OTVhNjI3NjI3MzczZDY0ZmM4YWZkNzc5M2NlNDBkMWMgcmVsZWFzZTMxLW1haW50Cis4ODI0MyBiMGVmYjZmMGZlOTQzMjYzZjc2NWUzMDBhZGUwMTFjMGQ4ZGFmMzI2IHJlbGVhc2UyNy1tYWludAorODgyNDQgMGM2MDRlNjU0MjllMzJiODIzNDdkOTczMTQxODU3NWRmZTI4ODRmMyBweTNrCis4ODI0NSA0NmYwN2RjNDM3ZmZiZDc5MjVhNTMxZmVlZTQ4ODc5MGRjM2Y3ZWUzIHB5M2sKKzg4MjQ2IDhhMTlmNjAyOWNlNTk3ZTI5NzRhMmU0YmJmMDc1YjM4NDUwOWM5YWIgcHkzaworODgyNDcgYzgyNTg4Y2EzYTc5MDlkY2E3ZDZmOTAxMDkzY2NiNGM5ZjkzOTI4MSBweTNrCis4ODI0OCBkM2I0ZmEyZGQ3Mjg4ZWM3MDExNTJmNzcwNzc1MWYyNGYwMGRkNjUxIHJlbGVhc2UyNy1tYWludAorODgyNTEgMmM5MzcyYTFjNjg1YjViOTBlNGJjYWE1NTViMDg2ZmE2MWUxMTIwYyBweTNrCis4ODI1MiBkYzUwMWVmYTA1YjQxMjViYzVlNWJlNjNjZTkzOWJmMjFjM2Y1NzEwIHB5M2sKKzg4MjU2IDM2ZWViMjgyY2Q4NDRlYTg5MGQyMTg3ZjNmMWE0NDMwZDcxNzkzN2IgcHkzaworODgyNTggYmZhNTgzNWUxMGYwZTcxODVhZDc0NjQ4YjkxZDYwN2Q2ZDM3Yjg4MSBweTNrCis4ODI1OSA1OTVjMmI1NjY4MWViYjc2ZGRhODZmNzAzMWJiOTA4NTJhMjZiMTExIHB5M2sKKzg4MjYxIGRmYmQ5NTY4ZjQ5Y2JlOTAxNzNiNjYzZGYwMTY2Y2ViMDE1ZGQ0MDYgcHkzaworODgyNjMgMmJlZjdhYjYyNTZiNDIxMjQ0NDU5ZGNhY2ZhYWI1M2VjYTYwYmQ4ZCBweTNrCis4ODI2NCA5M2M0MDgxZGZkMTk1Y2JkYjA3YmU4ZmUxODI1YzMyMWRjMGE2MDA0IHB5M2sKKzg4MjY1IDI2NTc0YjAyNzA0MmM4ODAzMWE3OGE3NjllZjhiNWI2NzAxYjFlZTQgcHkzaworODgyNjYgYWNmM2UyNGRkMGQwZGZkMWUyMGM5MDdkNjk2ZDNkYTk2NWE4ZjU2ZiBweTNrCis4ODI2NyA3YzNkYWZiZWU5ZDBiNmIxYzExMjE1YTUyYzE2OWM3NjgzZDBjY2JlIHB5M2sKKzg4MjY4IGU4MjUwMTgxMmFlM2QzMTY1NjM1ZDk3ZjZmOTdhOWY4ZjFkY2Y3MGYgcmVsZWFzZTI3LW1haW50Cis4ODI2OSBhOWRkZGZiYWIyNDE3OWMwYjY5ZWIwODMxMWNkNmU3YWUxOTViNDZlIHJlbGVhc2UzMS1tYWludAorODgyNzAgMTgyMDdiOWQ5YTYwZjgxNTYyMGJlNTZlMDVjYTBmNWM5NzY4ZDMyNCByZWxlYXNlMjctbWFpbnQKKzg4MjcxIDBmMGM1ZjlhY2U5ZjNiYjRiNTIwYmM0ZjQ0ZDk0M2VkZTljNzU4YjAgcHkzaworODgyNzIgZGU2NzkyYmRkOTY1OTNiZDUxZTIxMGI4Nzk3OTIyMTJhNmExODgwMCBweTNrCis4ODI3MyAwODZjMmJjZDhkNzRlNmI0NDc0NjhmNzQ2MzVmYWUyNjRhYjZiZWZlIHB5M2sKKzg4Mjc0IDRhMjcyMjI1YzNkZTcxZTYxYTA3MTg1ZTQ0MDNiOTI0YmYwYjg4NmEgcHkzaworODgyNzUgYmMwOWRiODJhNWQwZjU0MzY5MTBlNTEwZjg3ODcyNjAwMTEzYTM3NCBweTNrCis4ODI3NiAwMmVmZGI5ZTA5ZTkwZWMyNTkwMDM5NDZkNGY0NGZjYzE5YmExMzgyIHB5M2sKKzg4MjgwIDRmOTQ4NzM4NDZhM2ZhNWZmOTRlYzJiNTc5YWY5OTUzYjIzNTBjNDAgcHkzaworODgyODEgMGE5ZjY4MGEyY2YwNWMzYmFlYzRjNjlhNGQ2N2MwZGNkMTk5MGI1OSBweTNrCis4ODI4MiA5ODdlNjYxNWEwNzk2YWQ5MDA0ZmMxYzNhYTA5MDE0NmJlYTViNDBjIHJlbGVhc2UzMS1tYWludAorODgyODMgYTZkZjNjM2UzNzQyMzYxMjRmZjk2ODkwYzc2MzQ2MmQxYzI3YTViYyByZWxlYXNlMjctbWFpbnQKKzg4Mjg0IDMxZjQwYmU5MjI1MjRjNjI5M2VkNzcwNjYyZTU3MGIwYjAyNjJmMTUgcHkzaworODgyODUgOGZhNzNhMDg4NWM5NWU4ZTE2ZjVkYTcwMmVhZDAyNDJjZjdhYzNhNyByZWxlYXNlMzEtbWFpbnQKKzg4Mjg2IGNhOTA5NDM4Y2Y5Zjg5MWJmMDc0NzQ0NGU0ZmZlNjM5ZWIwMjNmMjQgcmVsZWFzZTI3LW1haW50Cis4ODI5OSA3M2M0OTU3OWE0ODdjNGJkMWI3NThkOGM1Y2UyODhmMTRhMTQzNDgzIHB5M2sKKzg4MzAwIDkwMGZjMWVlNDQ4N2VmZTE4NzgwMDYxMGY4NjNjNTYwYjQzM2ZkZWYgcmVsZWFzZTMxLW1haW50Cis4ODMwMSA5NDRhZGY3ZWRhMmViYjFlYTYxMTRiNTE2YmY2YTEyZTliOTFiMWRhIHB5M2sKKzg4MzAyIDllNjU5NTEyNjZhMjA1MTI5NTAxNTdlZWVhNmRkYjg5OWVjYmJmOTcgcHkzaworODgzMTggYWE4NzMwMDRjZWE4MGRlN2FkZmJmYjE1YzI2ZTkzMDBjOWY2OGM5YiByZWxlYXNlMjctbWFpbnQKKzg4MzE5IDc3M2NiMzMyY2M2M2I2YzZhN2M1NTM0YzI4MDYxYzQ5ODU4NDBlMzkgcmVsZWFzZTMxLW1haW50Cis4ODMyMCBkMzM5MDNlYjMzODg1NDFmYWVkN2M0M2E5MTc1ZDEwODRiMDhmM2RmIHJlbGVhc2UyNy1tYWludAorODgzMjEgMTdkNmYxNjVlYWU5N2Y5YjRlYzZjZDcxZjE5ZTViOGNhYzA4YTUzZSByZWxlYXNlMzEtbWFpbnQKKzg4MzIyIDViZTcwMTEzOTA4OWNmOGY4NGY1OTIyNDQyZTRkZTMyNTI4ODI1ODggcHkzaworODgzMjMgOGU5OTY5NDE4ZGJlYmNiOGJiZjQ0OWE2NTZmNDM5YTM4NDZlZDk0NyByZWxlYXNlMzEtbWFpbnQKKzg4MzI0IGIyMTc4NjQxOWJiODMzZGIxMzY3MDEwMjQzOTUzMWMxZWQ1ODAxYTIgcmVsZWFzZTMxLW1haW50Cis4ODMyNSA3ODJiZjVmMzdhY2IwNmZlZDZmMDRiZDFkYzNmMWZlNzZlYmMzOTdiIHJlbGVhc2UzMS1tYWludAorODgzMjYgMmUzYzU4NDFhMGE2NjQwZWU3NjQ0MWE2NjA2OGQxN2Q5NjBiMzA2MCByZWxlYXNlMzEtbWFpbnQKKzg4MzI3IGExZDFiZmMzODNlZmNmNmUxZDczZTg0Yjg2NTNjMDg1ZjgxNTE3MWIgcmVsZWFzZTMxLW1haW50Cis4ODMyOCA2MjcwOTQ2MTE1ZDA4NDVjNWY5OWJkMzU3YzZjYjJmODI4ZDg3YTcyIHJlbGVhc2UyNy1tYWludAorODgzMjkgMDM4NjQzZDM5ZmMxNTZkZjNiMzYyZmFlYTU1MGJiNTJjMmZjMDAxYiBweTNrCis4ODMzMCA0NTA2NDk1NjU4NjMxYmViOTJmMGM2MTY4ZTdmYzdiNGJjOTBiMWFhIHB5M2sKKzg4MzMxIDhjYzEwMjc5YWM3ZGQ2ZTQ2NzUzOTNlYzgzYjhhYzEwM2MwODQyOWEgcHkzaworODgzMzIgZTU2NjhhZGMxZWQ5ZTZhYmEwNmRmNjk4NWFmNTM5ZjgyMDU4ZDY1MiBweTNrCis4ODMzMyAwNzc0NmJlMGJiYWQ0N2U2NmMxNTgwYzJhMzFjMDEyMTg4N2YyYTA4IHB5M2sKKzg4MzM0IDBiYmE1MzNjMDk1OWY2MjU0MDBkNWVlNzc4MjI4NWRjZTBmZDE4ZDggcHkzaworODgzMzUgZjkwMmZjNzc5M2UxMmI0OGI2MDEzOGMyODZlNWFjYzNkOWRkYTgxMyByZWxlYXNlMzEtbWFpbnQKKzg4MzM2IGYyMmM5OWRiOGE0NjU2ZmY1NjBjOWM2ZjI3Y2RkYmVmYjcyM2FhYmUgcmVsZWFzZTI3LW1haW50Cis4ODMzNyBjZThkYjQ4NWUyNmU0MzU2OGFkMzhlNjNjOGU0YjY4NjllOWU1ZDE0IHB5M2sKKzg4MzM4IGRjNTZjODI3MWZhODUxZmM3MGQ0OWFjNzE2N2VjODJkODE3NWJmMjIgcmVsZWFzZTI3LW1haW50Cis4ODMzOSA0MzU1MjEyZmUyYzQzMDMxMWE4MmIwOGI5MjMzMDVmZTJkYTExZDA3IHJlbGVhc2UzMS1tYWludAorODgzNDAgY2NmYjViYTUwYTQ0ZTljMWMwNzRlZGIxNDJmODE3NDJkZDIwNTYyYiBweTNrCis4ODM0MSA1YTUwNDg1YTM3NWYxMWM4ZTE2MGU4OWIyNTA1NzQ1MDM3OWY4M2E1IHB5M2sKKzg4MzQyIGJjNjg1YWRiYWExNWNlMTYyZDQ2MWNjMTI2NTM3ODgyZmRlZDNkZjUgcHkzaworODgzNDMgNDYwZjJmMWM1ZWM4M2ZiYzBkZDZkOTgxNmExNmFlYjQ4MDgyOGFlMiBweTNrCis4ODM0NCBiYjNmNmQzY2MwYjNjMzdkZGYxZGI5ZjgzNGI4OTVlNGQzYjBlM2FmIHB5M2sKKzg4MzQ1IDUyNjdlNTI2M2U0NzdkNGZmODY2NTYwN2FhNTgyOGNiYmIyYmZhZGMgcHkzaworODgzNDYgMzliNWZjNmM3OTJkNGI1OTY5ZGM4OGUwMWUxOWE5Njc4MmJjZjVjMSBweTNrCis4ODM0NyA4OGQ2OWMyZjllZmEzMjMzNWUzNGRmNDA5NGFmNzY2N2U1YzRhZmFmIHB5M2sKKzg4MzQ4IDliMzNkNjVjZGFlNGFlYjY1Y2MyOGI4MmQzMGQxOWM2MGY0NDVlMDUgcHkzaworODgzNDkgOGQyNTkyNTkxMGIxMGI1NTZkYzhmMTljZDlmN2I0MGYzMjM4ZjI1ZSBweTNrCis4ODM1MCAwZGE2OGUyZTRkNzgwYjY4YmQ1ZmFmN2IzZDcxYjAwNGQ4NmEyM2U4IHB5M2sKKzg4MzUxIGFjYTkxYzU1ZjM4ZDQ1MGZmZmRlNzVlMjRhZjVkZGNhNTdmYWFiYzMgcHkzaworODgzNTIgYWJhYjJjNTNmNThmZDMzNzQwNmI0YmEwMWYwNDZhZWZjMzM2YTJiNCBweTNrCis4ODM1MyA0MDVhNDRjNmRjZWRiNDU3YzNkMzlkNDA0Mzk5ZGZjNWM5MjU4MDAyIHJlbGVhc2UyNy1tYWludAorODgzNTQgYjVlMzZhNTQ5YzI1Mzc5MWVhNDljMzljYmJhNDgyYjNhNjc5OTQ5ZiByZWxlYXNlMzEtbWFpbnQKKzg4MzU1IDhlMjA5ODZiM2Q2ZTliOGRkY2M2YTVmMjRjYTE1ZjMxM2U4YmE5MDcgcHkzaworODgzNTYgNTE2YjlkYjZhZmU0YWY0OGM5OTE2NzRjMGJkMDRlOTE1N2Q4ODE3MiBweTNrCis4ODM1NyAzOTRjYjAyMjQ3ZmMzNmI5MTY3YzA2MjBiNDkyNDUyZDUyOTVjZmEzIHB5M2sKKzg4MzU4IGI3YjFkY2UzZTc3ZjI5NjUzZWZlZDEzZTRlMTBhMTc2MjBlZjRmY2YgcHkzaworODgzNTkgZDYxZWJmY2UxOGVkM2FlMTJiOGRkZWQ3NGRhYzI1MWZjZWE2NWM1MyBweTNrCis4ODM2MCAxNTE4YjkzNWRlMTBlNzA3MzA1OTE4YmZiZDYwZTZhOWI3MDg1OTVmIHB5M2sKKzg4MzYxIGI1NzAyYjIwYjQ3NjBlNTkxYmQ0MDc2NzA2ZmM5MDMyZWJmMzgwY2YgcHkzaworODgzNjIgYjRjN2QyMDNjM2QxNDMwY2NiNzU1MWQ0MmM5YzlkMmY0ZjM3Y2Q4OCBweTNrCis4ODM2MyAzYjlkN2I4NDU2MTgzOTI4MGQ4OGVjMTExMjNlNmQ3MTgzZjFjYWM4IHB5M2sKKzg4MzY0IDA5ZjA3YzdkYzNkYzI1ZGUxNTg5YzMwNDRiY2Q2NThiNzgwNTA3NjcgcHkzaworODgzNjUgM2UwMjEzNjZlNTFmYWM2MmFhNTRlY2I5YzgxZDdmNWEyN2Q3MTc3MyBweTNrCis4ODM2NiBmMWZhZWM0OTM1MGRjZGE2ZTg5Y2FkMjBjOGYxOTNkMWRlMGJhNzQ4IHB5M2sKKzg4MzY3IGJjZTc1ODkzOWQ3OTkzYmMwM2E4MTdmNWFlOTE0YWJjZGQ4OTZmMWYgcHkzaworODgzNjggMWQ5YzVhMmFhNjk0ZTdmMmU1MjVhZWI0ZTFkNDUyNDFlN2M2ZDhiOCBweTNrCis4ODM2OSAyNjEzNjdlOWU2YzFjOGExY2Q2YjAyYzgxZDQzMDQ3YzNkMGZmMjUwIHB5M2sKKzg4MzcwIDM0MTFjYzdmNjRkZjY2OWM0YTAyYmJkODZkZTNlNjkwZTNjZGJlMTMgcHkzaworODgzNzEgOWZkZmMwNWVmYmI1YmZjZjdjN2E1NTRmMTc5Njk0ODA5NWZjNTA4YyBweTNrCis4ODM3MiA5NDZlY2UyNmE0OGYzYmZlOWFkOGQ1YzE0MmJmYTI1NWYzN2I0ZDljIHJlbGVhc2UzMS1tYWludAorODgzNzMgNjhkNjE3ZGQzMGNkMzkxOThlZWZkYjAwMDYxMWM4ZmEyMzJjZWVjZiByZWxlYXNlMjctbWFpbnQKKzg4Mzc0IDdjNzFiMGE1YTI5MDE0Yjk2MDBmNjAzYzg5ZGQ4ODQ1ZjFlNWIzNDcgcHkzaworODgzNzUgZTlmYjZkNTA0NTlhZjVjNWRhZTU5YjUxMGFiMTU5ZTFjOTA4ZDk5YSBweTNrCis4ODM3NiBiYjc1N2ZhY2JmYTYxMTIwMzZkNjVjNTRmZmZjMjkxMTZmNWVjZmU1IHJlbGVhc2UyNy1tYWludAorODgzNzcgNTc0MmM3OTA4NmE4Nzk4MDQ3NmEzZDA2NTRkOGUxZmQ3YWVjZDFlMiBweTNrCis4ODM3OCBmNTJlMzVjNzVlMzNjNmY4ZGQxN2Q3Yjg3ZjhkMDdlMWI1N2ZmN2QwIHJlbGVhc2UzMS1tYWludAorODgzODEgZDY5NjZkOWI3NjA5ZmNjNzMxYjNmOThmOTY4NDBiNDMyOTM3MWQzMSBweTNrCis4ODM4MiBkY2YxNzkxY2IxNzY3YTUxNjg3NDg5M2JlZTBhNGJiMzBlYzhhNzFjIHB5M2sKKzg4MzgzIDA3MWQyNWFmYWRhYTg5NmU5NzFjZWNhZjMzYTZjNjczNzRlMDlmYTIgcHkzaworODgzODQgNjQzYWM5NDZlZmY0OWY0NzU1YTFhMTJhMjY2NjQ3OWRhYzM4NjhjYSBweTNrCis4ODM4NSAxNDZlODFlNGU1MWU0YTk1NDc1ZjcxMjkwYzQxMDI3ZjhjZWFmMDcyIHB5M2sKKzg4Mzg2IGY1Yjg4OWMzNmY5OTBhNmRmOGIwMTk1ZTFhYWE5MWEwYzYyZjI2YTkgcHkzaworODgzODcgNWRmZTBjNDJmZmU4ZDQyMjlkZGM1ZjEyZTVlYThjNWIzZGZmMjAwNCBweTNrCis4ODM4OCA1NmU2MTdjMmI1ZTgzZWMxNzBhYTcxMTVhM2M0ODk4YThmOTFjMGVjIHB5M2sKKzg4Mzg5IDcyYjQyZGMwNDFmM2ZmNTg3NmIyYzU1OTY0Y2ViYzc2ZWNiNzY0ZGYgcHkzaworODgzOTAgMDM3ZjE2YjAyY2E1NTJjNmZkNmM4OTJmZmI2ZDYwODUxYjVkMGY0MCByZWxlYXNlMzEtbWFpbnQKKzg4MzkxIDJiNDgyMmI3YzQyNGVjNTk4MzdiZTYxMDY1YmQ4MWViZjM4YzNiNzcgcmVsZWFzZTI3LW1haW50Cis4ODM5MiBkMWI1ZDgwNGQyYTU0NTI3MTM3NzE4MjgwMjlkOGI1NzYyNjA2YzY5IHJlbGVhc2UzMS1tYWludAorODgzOTMgODA4NGM2NjhiNjM3NzM1NTU4NGY4MjEwYzgyYjM5YzRjY2VkMmY4OSByZWxlYXNlMzEtbWFpbnQKKzg4Mzk0IGI0MDlkN2VjYjY2NTc0MjYyNDZkOTQxYTgzOGMxYzlmY2M3MWFmNGIgcHkzaworODgzOTUgMTJhY2FmN2E0OTU1ZGRhNTBiMzM4YTA4NWUxZTMzZDdiMmVkMGY4ZCBweTNrCis4ODM5NiA0ZDJhNTg5MThkZjE1ODc2MmZjNTVlMGUxODcyOGI0NDQ5MTkzNTVmIHB5M2sKKzg4Mzk3IDg5ZDUyZWZmYzMwYWE3ZDM5YzI3YWMwZDg1OWJmNGJlNmNlOGIxM2QgcmVsZWFzZTI3LW1haW50Cis4ODM5OCBkOWI3MTNlOTVmMzllOTBkM2E1YTE3MTMwYjVhZThhNjQ1MWQ2NjY1IHJlbGVhc2UyNy1tYWludAorODgzOTkgMDJiODgxMzI2ZjZlZDgyYzBlMDk2OWI3NWI1YTYyY2Y4NmI2ZTA5ZSBweTNrCis4ODQwMCAyMGQ4Mjg3M2FhOTc3YTlmNTZmMThhYjAwYzUzNjM0MGRjYTZlMWQ5IHB5M2sKKzg4NDAxIDA2YTY1N2QxYTNhYzE5OWY1ZDQwYTJhNDQ5NzViYzM2YTNiNTcwODIgcHkzaworODg0MDIgYzMxMGQyOTRmZGRlMGZiMDc2OTY3MzZjZmVjYTVlMzk2Nzk0NzRlOSBweTNrCis4ODQwMyAyY2JlOWQwNThmN2U5MmIxZGI0Yzg1ZDBhMjczNTlhM2RiMWJhOGEwIHB5M2sKKzg4NDA0IDExMTU3N2JmNWJhODk2NmY3YmNhOThlZDc5Y2ZlMTM1OTBhZWEzNDYgcmVsZWFzZTMxLW1haW50Cis4ODQwNSAxMWM2N2E2MDg0YzhlZDRmMmYzMTExYWFkMTllMmFlMDUwMzY2ZGQ4IHJlbGVhc2UyNy1tYWludAorODg0MDYgYmJhZjkzMDRhMGQwNGEwY2M0MjU4ZjI1NzM1MWUwODFkMjA4NDgzMCByZWxlYXNlMjctbWFpbnQKKzg4NDA3IGYzY2U0YWJiYWFmODVlOGZiM2RlYjA1OGUyMGFiNWM2MzQ0ZmNmN2YgcHkzaworODg0MDggODgzYTAyM2ViOTQzM2Q2MmYwMjczYzZhNzA2ZmE5Y2U1MWYzMWEwOSByZWxlYXNlMjctbWFpbnQKKzg4NDA5IDdkMzIwODIwZjQ2MmRkODNiNTNmNzQyMmFlNGQ2ZjRjZmQ1NDk5MTAgcmVsZWFzZTMxLW1haW50Cis4ODQxMCBiYTk1YzBiZGQ4YThkNzgzNDllMTA5NmQ0ODRhMjYyMGJmODRkZjc2IHJlbGVhc2UyNy1tYWludAorODg0MTEgMTA2NjAzY2E1M2MzN2MwZDVhODIyZjA4MWI0MGUxYzljNTJiMmIxNiBweTNrCis4ODQxMiA2YTU0MzExNmJmMTc0NzVjMjI4ZTc2MDRmMDU3NjhlNzgyMTZhMjE5IHB5M2sKKzg4NDEzIDE4YzFmNTI4OTY1MDFjN2VlMTNiMDM4NDU0YTM5YWNiNDVhODc5NzkgcHkzaworODg0MTQgOTNkZjk1ZTQwM2QxYTQ4NjE1MWYzZTRhOTFkNWQzNjA2NzQ1MmFlYSBweTNrCis4ODQxOCBiNDVmNGYzOWYyMDRkODY1YzkyZGZjMDdiMGQzMjM0YWE5MDU3ZWYwIHJlbGVhc2UzMS1tYWludAorODg0MTkgMDg4NTUxNGQ4OTdjMGM0YjdjYmUyYWNlM2U0MjRmOGZkOWM0YWRiNyByZWxlYXNlMjctbWFpbnQKKzg4NDIwIDViYWFjMTg2ZjBjMjhiZWM1YTMzODBlYzIwNmU0MjZlMjMwZjNhMzQgcHkzaworODg0MjEgMDNlYzYxZTEzNDYwYjI3MWFhNWY3OWRjNjRkNGE5Mjk5NzgyYjBhOCBweTNrCis4ODQyMiBkMWQ5ZDdlMDBiNGE1YTE5ODg4MjExOWZkMTM4ZDI2Y2Q5N2M1ZGY2IHJlbGVhc2UyNy1tYWludAorODg0MjMgZDgwMzFiYTM4ZTE2ZDNlZGM4YWMzYmI1YWJkYWRjNmE3NDQyNTUzNiBweTNrCis4ODQyNCA0M2FmOWUzNmJkZDU4YTJiYTc4ZDZiMGRlMmFkNDcwYmNmYjRmM2FiIHB5M2sKKzg4NDI1IDJlZTJjNzYwODJjOGM2YWVmNWU2MjU1NjIwZGE3NjcxMzE2NWFiMGUgcmVsZWFzZTMxLW1haW50Cis4ODQyNiA5ZmYzYjY2OTU0OGY4MzJhOTI5ZDhhYmFiNDUxNmIxMmYwNGY1N2JmIHB5M2sKKzg4NDI3IDdhODlmNGE3M2QxYWZkNjY0NDlkZmY3ZDBiNTczMWM3NmRkZTQyMjAgcmVsZWFzZTI3LW1haW50Cis4ODQyOCA1ZTdkZDY1N2Y5ZWI3NTFmM2IxNGU2ZWI1OTAwNjM4ZjUyMDJlYWEzIHJlbGVhc2UzMS1tYWludAorODg0MjkgOTA3ZjM4NzkyMzVhOGQ0YWVhNjEwMjhhMjhhOGU3YzM0ZmMwMWZmNCByZWxlYXNlMjctbWFpbnQKKzg4NDMwIGFkMmY4YzY4NmUwODU1YTcyMmQzMDA3MzU5ZDIzMWRhMDUxZTI2MjcgcHkzaworODg0MzEgMzljZjIwZDVhZDRjNWVhNTUzN2E5ZjFjYzMwNWM1M2RkODllYzkzMiBweTNrCis4ODQzMiA2ZDM5ZGFlZGVkZDU1MzZlNzlmYzU2ZDczMjVmMTVjOTM1ZDUzZWVjIHB5M2sKKzg4NDM0IDZjMWNhOWRlYjQyYTk1Mjg2YmIyN2ViNTViNmNhNGM0MmU1Y2E0OGUgcHkzaworODg0MzUgMTVhOGUyMmM0MTAxZGVkYTk1YWVhYWFkMDE4MTYzNzczYzkxZTY2MiBweTNrCis4ODQzNiAyMmQ5NGY1NWIwYzcwMzQyYWI4N2RmOTZiZjc5YWNhNzdmMjdmZDRmIHJlbGVhc2UyNy1tYWludAorODg0MzggOTJkZWJkZjk4MWM1ZjM0NDNlODc3ZjU4YjQ4NjExNTdiN2NkMjg2NCBweTNrCis4ODQzOSA2Y2FiOWE5OTQxMDUwMzU0MGZlMjFkZGI5MjA3ZGYzMGFlZDcyMDJhIHB5M2sKKzg4NDQwIDVhZjAzNTU4OWFhNzc3MmVmZmQwNDI3YzY3NGMyOWU5ZTI2NzZhNjcgcHkzaworODg0NDEgNWUzNzY2OTE3MmM4ZDI3ODM0ZGFmODY4ZTZkZjI4Y2NkODFhMzA4MSBweTNrCis4ODQ0MiAxMDFiYzY2OTUxYzdjYTRlNjM5YmRlODY5YWY0MTVjMzQ3Y2ZmYjkzIHB5M2sKKzg4NDQzIDc4OGVhZmFlZjdkYzQ4MjBkYjc4Y2I0OWE1N2EwYWRmNjNmYzUwY2UgcHkzaworODg0NDQgNTkwMGQ5NDhmZTU3YTQzOTlkYzJmZmVjM2JhMTI2NGIyMTdkNGUxNiBweTNrCis4ODQ0NSA0OTZhYzRkMWE5YWJiOTY1YzllMTE5ZTI0NGU2M2M3ZGIxNmQxODQ4IHB5M2sKKzg4NDQ2IGEyMjJhMDE1ZTI4ZDhhZTlhZjM4OTkyNThkYzZjMTVjM2Q0MGFkZDAgcmVsZWFzZTMyLW1haW50Cis4ODQ0NyA2NjM4MWNlYzZjNzMyNWMzMDYwNjczNGRkMzc2NjVkZDEwNGQ2NWViIHB5M2sKKzg4NDQ4IDIwMzk0NTA2MGJhZmYyMDZhNmE3N2M4NmJhYWQ4ODcwMWFkNDRmNzggcHkzaworODg0NDkgMGY1MmNmYzkxZmFlYzA4OTk3NzU0ODdjMmZkYjA0NDVkMzBjZWNmMSBweTNrCis4ODQ1MCA0NDE5MDdjMDgxNGU1YzcxZThjZTQ0OTM2NDk4YmZhYjczMGVkN2JmIHJlbGVhc2UzMi1tYWludAorODg0NTEgYTgzY2M5NjFjNDNhMmQzMjY5YmRhNGU3M2NlYjk4OTkxYWMzNDIxOSBweTNrCis4ODQ1MiAzNWMwZTM3ZmU5NTAxMjNmMGJjZWM1YzU5NGY1NTQ1YjllNmY2Zjg5IHJlbGVhc2UyNy1tYWludAorODg0NTMgYWVjOTUyN2Y2MjIzMjc2OTk2NzIxOTU4ZDhjMWMzNTYyZDlhNWE2OSByZWxlYXNlMjctbWFpbnQKKzg4NDU1IGJmODY0Mzk1ZDFjODhiMWMzMmMyYWY5NWE4OGE4NDY4MTY1OGI0ODMgcmVsZWFzZTMyLW1haW50Cis4ODQ1NiA3YjAxMWNmNjRmOTA2YzIyZmE4Y2FlNGNjZWI3NTg0YThkODRjMjU1IHB5M2sKKzg4NDU3IDM3MWYwNGUxYmQzZjhiM2U5MmJjYzJkZTY4YjY5ZDQ3YjQ3ZWIwZDUgcmVsZWFzZTMyLW1haW50Cis4ODQ1OCA3OTAyZjViZTJjOTA2YmYwYjc2YWE0MzdkNTcwNmRhYzdiYzE0YWQ1IHJlbGVhc2UzMi1tYWludAorODg0NTkgOTgzNjMwNzk3MzM4ZTJkZjdiMGFlYmUwZjMzYjQxY2I2ZmZiZjVjNCBweTNrCis4ODQ2MCA1MWEwODBiYWNiMjUwOGQ1NDYwYmFjMDNkMDFiMGNkN2U0MjQwYmQxIHB5M2sKKzg4NDYxIGRhNWRkM2UyM2M4NzAyNTIwODljMGM0ZGYzZGM5NGQyMmZmOGRhZmIgcmVsZWFzZTMyLW1haW50Cis4ODQ2MiA2YzFlMDVhNGI1NDFmMWUyMDFhZjM0OWVlNDE4MTU0Y2I1OTNjYmRiIHJlbGVhc2UzMi1tYWludAorODg0NjMgMjdlYTNhZTM2MmNkNTFmZjZhMmJiMDJkYjE3NDIyOWY4M2QzYWEyZCBweTNrCis4ODQ2NCA5NTRjZDVkYjUxZGMzNWVmNDNiOGY0Mzk0NWNkZDJmYTg4MWY1ZWYwIHB5M2sKKzg4NDY1IDlmODE0NmY0NWVhZTg3YzkyODk1MzgyYTBjY2QwMDY3ZmZhNWYwODUgcHkzaworODg0NjYgYTFmMzVjMjFhNzEyYzExODVmNWMwYTMyM2I1MGJjMzY4MzlkNTFlOSBweTNrCis4ODQ2NyA2MTRlMzI5MDBlZjdkYjg2YzZhMGM4ZGUxYzA4NzM5OGQ1MjY1ZjZlIHB5M2sKKzg4NDY4IGViOGZjMWNlMWM4MWViODNmYTc2ZTI2MTliOTdhYWJhOWJlMmE1MDIgcmVsZWFzZTMyLW1haW50Cis4ODQ2OSA0ODI1ODcxODAyNTVhNTFiMDkyMTY0NWVlNjg0MWUzNmI0ODEwNGE2IHJlbGVhc2UzMi1tYWludAorODg0NzAgYjE3YmJhMWM3MzAzY2U3ZTU5ZGZiYzI3OGY2NGU1NTc5NjczMmY0MCBweTNrCis4ODQ3MSA0NTBmOGQ1MWRkYTg2OWIzZjM1ODI5ZWMyNTU2YTFjYWJmNzQ5NjE1IHJlbGVhc2UzMi1tYWludAorODg0NzIgZmY4NmExNzliYzEzY2E3MTM1MzcwYjU3M2EyZmU1ZTM2Mzg1OThkNyByZWxlYXNlMzItbWFpbnQKKzg4NDczIDE4NTM5ODlmNzRlNzZhYjQ3NWNiMjY0NTQ2N2JjYjlhODgzMDhhMjAgcmVsZWFzZTMyLW1haW50Cis4ODQ3NCAxNThkNmRlZjJlZjg3ZjMxMjlhZTBkNDFjNmZkMjA2YTFiZGEzNTcyIHB5M2sKKzg4NDc1IGEwMzZjMzBhYjVhZTRhYzlkNzA1YmZlN2Y2NGFlM2Q2MTY1MGM5OTMgcHkzaworODg0NzYgYWIxNjY0YjI5OGZjZGIxZjhlOTZjOWIzZjQwYWM5N2VmOTE2MGRlMSBweTNrCis4ODQ3NyAwMGE0ZmZhNzJkYmUzZDFlYTFkMmQ0NmYzNTI2OTUxMDQ3OTA3MmU3IHJlbGVhc2UzMi1tYWludAorODg0NzggYmI4NTdkOWMzMDcxMjBjNWRmYTIyMjQ0NjFjYjQ1OWM3Nzc1ZmQyNiBweTNrCis4ODQ3OSAyODQwMjZlMDAzNDJkNGFlZTMyOTBjODBkZWQyYjFhNjE3ZTRiYjRlIHJlbGVhc2UyNy1tYWludAorODg0ODAgMmI4ZTZhMjFhZWFhMTk1NGIzOWRiZmFlMzIxZjlhNDNmMjgxOWVhYiBweTNrCis4ODQ4MSBlZjI4YWFkM2JiYWUwZjU3ZjI2NGEwYWJkZTVkNTRhOGI2MTdkYTcxIHB5M2sKKzg4NDgyIGI0YzE1ZDg3MDk0ZDllYTUxN2RmZGZjZGQ0NWRjNThlOGE3MTBhODkgaXNzdWUxMDI3Ni1zbm93bGVvcGFyZAorODg0ODMgMjNkZTNhYTcyMjMwNmQyYmZmZWIwZmVjYTE0NTc1YjExY2ExOTM3NyBpc3N1ZTEwMjc2LXNub3dsZW9wYXJkCis4ODQ4NCBmNWU5YzE3Yjg1YWQwNmIxN2JkNWQzMWNmODgxNWIwZmQ1MzczMTBlIHB5M2sKKzg4NDg1IGM2MDYwZWY1YzQwNTE0NmNlZDIyYmVhNDhkZGIyNDg5ZTg5NWZmNGYgcmVsZWFzZTMyLW1haW50Cis4ODQ4NiA0MWM1MjgwMzMwZmQ2MjQyZDcxZTNmMGE5MjIxZTc3Mjg2MTE1MjJiIHB5M2sKKzg4NDg3IDQyOTVlMDk1YWQ0ZmI4ZTkyYmNmNjFlNjBhNTA2ZTlkZjQ0YTQxZGIgcmVsZWFzZTMyLW1haW50Cis4ODQ4OCBiNTU4Njk1OTg2ODNmYTliNWI3ZTA0OTEzMmE5MDM0ZDA3MzI2ZTdjIHJlbGVhc2UyNy1tYWludAorODg0OTAgNzg2NjA3MTRmMTdhMzU1N2Y4YjVlNDE3ZmFiYmEyMmM3NDNlZWRlMCBweTNrCis4ODQ5MSA2N2VjMjZjYzRiNGY3ZTMxZDNjM2NkNDg0YmZjNzI3Nzc1Y2Q3N2I5IHB5M2sKKzg4NDkyIGNlMjBhYzQxZTMxZmQ5NDA0MDRjZDA4YzZmODMyZDk4NjIwNmRkNDAgcHkzaworODg0OTMgZmVkNzY4YjcxMTM2MTgzZjZlMjQyNTY2ZjgwYWZhZWE0M2RiN2U4ZCBweTNrCis4ODQ5NCA3Zjg1ZmJjMTZjYWVkZDA4MzgyODJmODFjZGI5OGQ2NTc0MTBjZTNiIHB5M2sKKzg4NDk1IDQ3M2QyMzNhMDQ3ODFkZmYzNzkyNzM5Zjk3OGQzNDQwMDY4ZWE2N2EgcmVsZWFzZTMyLW1haW50Cis4ODQ5NiBhZTE4NmIzYjJjNTU2ZTFjYjMyYjNjMWU5ODY3YTBkNWZlMzgzMjM1IHB5M2sKKzg4NDk3IDE5ZGY0NzgzOWJjYWI1NWY3ZjYzMTkzNmExMTY4YjRkM2Q5MWNiY2UgcmVsZWFzZTMyLW1haW50Cis4ODQ5OCBlYTI2MGQzOTNjZGVlM2MzZTM2MTRmOTU3ZGViNzJkYmQ3N2ZiMDcwIHB5M2sKKzg4NDk5IGM5MGUwZTViMGQyNTQ3MTA1MWUyYWU2YzEzMmY0NTRmNzQzYmRhZmUgcmVsZWFzZTMyLW1haW50Cis4ODUwMCAzNzJiMmVmMGZmMzdiNmExYWExMmU0MzBjYjJkZWM5OTliNjQ3OTNjIHB5M2sKKzg4NTAxIDI0MzM5YmYwYzdlNjZhN2VhMWVjYTJhNTJjMjRmMjhmY2FkNGZlZjUgcHkzaworODg1MDIgMzA0MTFhZjM0ZWViZmFmYTc1NWZlMzM4ZmYzOGU1NDJkMzcwMmE1ZSByZWxlYXNlMzItbWFpbnQKKzg4NTAzIDVjZTQ5OTE4MGQyNDVmODBiNjZhMDU3ZThkZWNiMmEzMzVhZDFkYzUgcHkzaworODg1MDQgOTgwNjk3NzY5ODY2MjA1ZDA5ZDMwMDIwMWZmODUyNTc3MDQ4N2MzZiByZWxlYXNlMzItbWFpbnQKKzg4NTA1IDI0N2EyODEwOTMyYWE1NWMxMjVjNTYxMDY1YzI5Mjc0MzRjNDA5NTUgcHkzaworODg1MDYgYTc1MTVhOTRmZGI1YjUwNTg5YjIzZjEyMWY2MGVkNGE4ZGVmNmMxYyBweTNrCis4ODUwNyBlMmY5NmJkMjkyNTJlNjIxYmI5ZTE1NjNmYmJiMGVjYTgyMzFkZTUzIHB5M2sKKzg4NTA4IDY0ODJkZDFjMTFlZDFjMWFmYjk5ZDIzNGUyODMwZjM0YzlmMzQ3ODYgcHkzaworODg1MDkgMTZlZTQyZGUwZmFiOTJmMTkwYzhjY2EyNzRjOTRlZDQ2YjQ5MWQxZCByZWxlYXNlMzItbWFpbnQKKzg4NTEwIDJiNTRiZTY1NTE2OThhNzE4NTZhNTJlNWMxYWFkMTIyYzg4NDMzMzUgcmVsZWFzZTMyLW1haW50Cis4ODUxMSAzMjdhNWE3OGEyNTdjZmUyN2FjZDkwMWM2NWUwODRiYTcxOTYxOGQ5IGlzc3VlMTAyNzYtc25vd2xlb3BhcmQKKzg4NTEyIDJmOGVjNzdkMzJjZDQ3MThhYWM3NDE1NTUzYmY3NDVkNTgzMGFiYTMgcHkzaworODg1MTMgMDU4NmM2OTlkNDY3YTY0YzNlMjNkZDg3NmQyZDM2MmU2MzNkODkwZCBweTNrCis4ODUxNCA2Mjk5NDY2MjY3NmE3YmU3OTBlMGRjY2M2MzI4MThiNzg4ZjZiZjIxIHB5M2sKKzg4NTE1IDBlOWYzYmI2M2QwMGI3YWE1MGRkYmIxZTU3NjhhMDg4MWUyMmRkNmUgcmVsZWFzZTMyLW1haW50Cis4ODUxNiAyZjg5Y2JiZWMwYjQ4NGQxMWI5NjQxMDVkMGRjMzI0OTZmYWYyOGE4IHB5M2sKKzg4NTE3IDA4NzQ2OThiMTIwMWRmOWMyZWM5NWQwOWRlODEwODhkNWRjOTE4OTIgcHkzaworODg1MTggZWMzYzA2NzYxODU2ZGQ2MzBhOTVlMzk5MzE2OWFmYjc4OGVlN2VjMyBweTNrCis4ODUxOSBhYzBkOGUyMWE0N2RlYjU1ZWFjOTI3NDk0YTIzOGMxODYyZDcwMDQzIHJlbGVhc2UzMi1tYWludAorODg1MjAgNDRjYzllZjQzMTI3ZjhiNmQ5YjVmYTQxZmNmN2E2MTM5N2JhN2RiYSBweTNrCis4ODUyMSBmMmVkYWY2MmQ4MjNmYjY2ZmU3OWY0ZGJmMWJmZjczODMyMjFlMDgwIHB5M2sKKzg4NTIyIDdmOGRhMTBiZmNlZmNmMzdlZGNhNzlhOGJhZGU3OGZiZDIxYjJjZDAgcHkzaworODg1MjMgMTY1ZDAxNWEyYmFmMDdmMzM3ZDBmNTYyZDMyZGM1ZjJiYmYwYzYyOCByZWxlYXNlMzItbWFpbnQKKzg4NTI0IDAzZjdhZmJjMTYwODQ4ZDRlMTdiNjYwZDNkZWY1N2Q3Mjk0ZmJkMTkgcHkzaworODg1MjUgYzhjNTdlNzY2NDI4NTMxZGY2OGJhYTFjZjU3ZmI3NjZiZjcwOTI2ZCBweTNrCis4ODUyNiA3NDg2MWE0MmE2ZTZhMjg5YzNhYjViNzcxOWJmMGNmNGYwYjc1MDIzIHB5M2sKKzg4NTI3IGJhMWFlYjM2MjE4MjFmMjIyMTI5MTRmNTVkODcxOGQ2NTRjNTFmNmEgcmVsZWFzZTMyLW1haW50Cis4ODUyOCAwMzVlZmRhZjgyMjljNzljNDIwZDEwNDYxYjA2OGRlNGM3NjRjZmUwIHB5M2sKKzg4NTI5IDIzMjVmZTM2YWEzNDU2NjNlOTRlZmRmMjQ2MmQwNjE3ZmZlNGY3NjkgcHkzaworODg1MzAgNWE5ZDkwZDRmODllYjgwZjEzNDNiY2YzODViNzdlODUxNWZlYTg2ZCByZWxlYXNlMzItbWFpbnQKKzg4NTMxIGFiYTE2YTU2ODNkMzY4NWVlZTFkNjFhYTc0NTYzY2I2YzE4MGVjYWIgcHkzaworODg1MzIgMzIzODZmYTY3YTEyYTc2OTE3MzM3YTNjM2I4Mzg0Mjg2N2IxOTlkMyByZWxlYXNlMzItbWFpbnQKKzg4NTMzIGNmOTE3NmYyYTYyMDVhZGM0ZjM0MDRiNmU5MjY2ZDJhMmM3Y2FiODUgcmVsZWFzZTMyLW1haW50Cis4ODUzNCBhMWNmZTgxNWQ5N2FhZDBhZjQ5MmVlZjVlOGUyMjk2NTljNTEzMjI3IHB5M2sKKzg4NTM1IDVhMjk4YWZhY2I5NTU0NzU3YjdkMTIxYWU5MGMxNjdjZmZlMjU1NzIgcHkzaworODg1MzcgZGU1YzNhMzlhZGU3MjRkYjQyNjViMjhmMGY2MDBmYzM3ODViYTZjYyByZWxlYXNlMjctbWFpbnQKKzg4NTM4IGU4ZGZlNjAyZWZhMWNkZWE5OGZjNWNlMWE4OGE1NTBkNmU0ZGQ3YTcgcmVsZWFzZTMyLW1haW50Cis4ODUzOSA5ODYxZGMxMTgzMjIyZmUwYmI1OWJmYWVlYjEzMTMwOTEzMGIyY2RmIHB5M2sKKzg4NTQwIDhiYTc2NTMyODAzMDZhNDNmMDkyODZlNjkzOWJlYmJmYTJjZmM0YjAgcHkzaworODg1NDEgNzMyNmYwNjRkODNhZmVhNTIwY2E2NjNjOGYzM2ZiYWVkYzlhOTg1NCBweTNrCis4ODU0MiA2MDlmMmI4MjMzNTBlNDJjMjY2NGViYjAxOGNjODUyYTY4NzY5NDIwIHB5M2sKKzg4NTQzIGJmODkwNmNlMTA0YjUwM2RjOGIyODViNmIzNDFkMDNjZDM0M2YxZTEgcmVsZWFzZTMyLW1haW50Cis4ODU0NSBmZDZlYzVlMDg0YTJjN2U2ZTFkMzVlNjE0ZmQ3NjQ3NDkwMDg3NmRiIHJlbGVhc2UzMi1tYWludAorODg1NDYgZGI3ZWYzNGVlZGFmNWJlYjljZDkyNWE2M2EwYzRjMTczMjQ3ODRhMSBweTNrCis4ODU0NyAzZTRkOTU5ZjhlMTJlZGZlZTJlYTVmNWQwNzE3ZDhlZTUzMzI4ZDkzIHB5M2sKKzg4NTQ4IGZlYWIyMzBiZDBkZGU0MGE1OTlmMDQzZTdjYzUyYWRmOWE2YzlmNzQgcmVsZWFzZTMyLW1haW50Cis4ODU0OSBjYzNjM2E0MzgzOThkZGFmMDlhNzJmZTRiNDFjNjc5NzYxOTU4NmNhIHJlbGVhc2UzMi1tYWludAorODg1NTAgNTcwYzU5MzliYzAzZTcyMjhiOTIwNDA1N2Y2Zjk4ZWE3ZjYzYzU0NyByZWxlYXNlMjctbWFpbnQKKzg4NTUxIGNiY2IyNmE5ZDJiZGRkOTIwNGNiOTQwZjFmNjJmYjNjODQ2Y2EzMTUgcHkzaworODg1NTIgNDU3MzljYTYzZWIzNDViMDBhMWFiMTAxMDk4OTI3ZTMzNGUyZjY0NSByZWxlYXNlMzItbWFpbnQKKzg4NTUzIDIzNmM0ZGM2ZjBlN2Q3YmI4MjY0N2M2ZDgzM2VjZWJkMGViYTRhOGUgcHkzaworODg1NTQgYzhjMGU0Mjk0NGExNjk3YTY5OWMzYWQyYTk4MzA4YWQwMTEwZDY2ZCBweTNrCis4ODU1NSAzNjRlNGMxMDYyOTdlYWZhZTZmMjRhYmI5YzQxNzI1ZWJjNjNkNjFiIHJlbGVhc2UzMi1tYWludAorODg1NTYgYjI0NWQ2OWI0ZjBhZDRlN2FmODY5MGEzZjVkOTc1ZjJmNzNlNmNlMSByZWxlYXNlMzEtbWFpbnQKKzg4NTU3IGM3OTY2NWZiMjY3YWEzNzQ3MGNkMjM2NWQxNzJkOWM3ZGUwMmQ2MjIgcmVsZWFzZTMxLW1haW50Cis4ODU1OCA2MTRhOGM3Yjk1MjVhZDA2MjhhMmQ2NGJhMWUwMGQ3OTA5NTI0ZDE2IHB5M2sKKzg4NTU5IDkyNjI5Y2NhYWU3NjQ2ZTU0YjJjNTAzMjdkYWRjZGNlNWY0NmQ5YjggcmVsZWFzZTMxLW1haW50Cis4ODU2MCA1ODVkYjA2ODA2OWVkNjE2ZWVkNDRmMjUzMzc1NWU0OTFjMjEyYzVhIHJlbGVhc2UzMS1tYWludAorODg1NjEgZWZmMmU4ZjE1YmVkMDhmMjY1YTBhZDMwZWUzYWY1MmI4YTg1NTYwMSByZWxlYXNlMzEtbWFpbnQKKzg4NTYyIDViMzViYmJlMzJlNzBhYjY3MGRhYjQxOTM3YjQ5NDM2M2I4NTIyZmYgcmVsZWFzZTMxLW1haW50Cis4ODU2MyBlM2M2ODQxNWEzMmQxMDBjNmRlMzJjZmI5MjczNDk3ZTQ0NmJmZWIwIHJlbGVhc2UzMS1tYWludAorODg1NjQgZDM1NjY0OTUwNGY5ZjQ3NmE3MWU0YjFiNTkyMmFlMzI1YmU4MjRlYSByZWxlYXNlMjctbWFpbnQKKzg4NTY1IDhlZWVlOWQ2ZDMyYjkxMzFmYzIxZGQ3OWRiNTE4ZTYxNmRmZWRhYzMgcmVsZWFzZTI3LW1haW50Cis4ODU2NiBjN2M3NmNmYmRiNGUwMTllNzlmNjYyZTM2YjE2MTdjNTU1MTE5MzUzIHJlbGVhc2UyNy1tYWludAorODg1NjcgM2U1ZjJlMmE4NGFiZTRlOGQxMzRkYzdjNjU0YjcyZGFkOWVkNjY2ZCBweTNrCis4ODU2OCAyMjZmMDAxYTcwMWZmMzRhZmI1ZjBlODhlYzU1ODU4YTg1NWM5YTgwIHJlbGVhc2UyNy1tYWludAorODg1NjkgMzRhZTMxNjMxOGVmNDU0ZjljMjM5M2QyZTNiN2Q2MDBhZjdmMDM5MyByZWxlYXNlMjctbWFpbnQKKzg4NTcwIDcyMGEyZjQ0Y2JmMmNjYTBmNzRjM2QzZTU5YjU2ODNjZTlmNTAyZjQgcmVsZWFzZTI3LW1haW50Cis4ODU3MSA3OGRiM2QwYzZkYjcyYTFiNmQxOWYwOTgxNmI0NjY5YjI4ZThkMTZkIHJlbGVhc2UyNy1tYWludAorODg1NzIgYjM1NmI4NzFiZjY3ZDJiNTBmZTMwYmU4N2Q1MDYyODQzYWRlNmFiNSByZWxlYXNlMjctbWFpbnQKKzg4NTczIDAxYzk2YjM3NTg2ZGQ2N2M0OWRmZTdkNmM4MWE5YjExNDIzM2ZlMzUgcmVsZWFzZTMxLW1haW50Cis4ODU3NCAwMzUyNjc4MTI4MmFlMjU4YmI2ZDRkMTk1ZGQ3OGY1MzdiZWNlYjQzIHB5M2sKKzg4NTc1IDc0MGFiOTI3YmY4OThiZGNjYzZmMTRlOTUwZTNhMTRkZDc4YjkzYzQgcHkzaworODg1NzYgYjE3YTA2NDkyOWIwNGM4Zjc2YTNlNjkyYzAyYTBiOWE4NWIwZjFhMyBweTNrCis4ODU3NyA5ZmY3YmMzNjEwNjA0MzM4ZGVmYWQxYWEyZTNhM2JmNGE3ZjA3OGVmIHB5M2sKKzg4NTc4IGViNWVkM2RhNjg2MjM0YTAxNThiNGUxYjI0NWZkN2ViZWM5ZWI0OTggcHkzaworODg1NzkgMTc2MmQ3OWVhYjY1ZjVmYzNiNjI5N2I1NTkzNDc3NDI5M2RlMGI3MSBweTNrCis4ODU4MCA3ZmQ4MGM2MWRkYWEzZjgwZWIyNGFlNGYyNjEzMmZiYTBhZjc4YWJiIHB5M2sKKzg4NTgxIGQzZjkzYTEyZDZhOTE1ZWU0MjMwMTMwMDA5NmU3MWJhNzk2NGRmMGIgcHkzaworODg1ODIgNjM2YjJiNTUyMDczZDFmMGI4MmJlYmEwYTBlZDQ1N2ViNDcyNDZlOCByZWxlYXNlMzItbWFpbnQKKzg4NTgzIGZkNDAxMTBkNWQ4NzM3ZjhhZDdhMjI0OTIyYzkyMDlkMzRmNjdhN2IgcmVsZWFzZTI3LW1haW50Cis4ODU4NCBiZDI1MmMxMmRhMWQ4ODNjNDFkM2JiNjBhMjhmMWExYTNkMzg2M2FhIHB5M2sKKzg4NTg1IGY0YjFhNjU3OTU0MTdiNGJiZThlZDg5NDdiOWVjYjE4MmQyYWRhM2QgcHkzaworODg1ODYgYmU2YzM4ZDE4MTdiMzAyMGI3NjA0MDBhYTJmNWFlZjcxN2E5YzkyMyBweTNrCis4ODU4NyAzNmMxYjY4YjA1ODY1ZmI5ZmExODliNWI5ZTBkMWY4ODA4OGEzMmJkIHB5M2sKKzg4NTg4IDE5ZDA3ZmE0MjAwNGIxMjQxZWY2OTMxYThiMjFmZjgwM2JjZmZmMDkgcHkzaworODg1ODkgODQyZmVlNmFlMGU1MDMwODkwZWRmNWQ3MDkzYmU1Yjg5YTUzODZkZCBweTNrCis4ODYwMiA3YWI1NjliMThjOThmODg0YWJhNWU1Y2I1Mjc1MWZmNjNmYTlhYTc0IHB5M2sKKzg4NjAzIDhjNWI4MTE0ODRiYzJkMmVlMTM0NmEzZGE1NDY1MmNlODM0OTIwZTIgcHkzaworODg2MDQgMTJjYTQ3N2M0Mzc4YzE3NThkMDk5OTUxNmUwOWI0NDkxY2YwYWQ3MyBweTNrCis4ODYwNSBiN2U4NWZkMGQxYzkyZGI5ZmY5YjJkMDdlN2VhN2ZmMGZiYjYxOTg1IHJlbGVhc2UzMi1tYWludAorODg2MDYgMTg2MzZiODcxZDAxNzQyMjk5Y2ZhODBkMzk4NTlmZGMxZmJlOGQ3NiByZWxlYXNlMjctbWFpbnQKKzg4NjA3IDRiNjA1MjMyMGU5ODNhZDc5OGQ0MWQzMGM0OTZmZDljMTcyMTI0MDcgcHkzaworODg2MDggYTAzODM0Mjg3MmEzNGM1NGQ3MDkzYTc0NjgzOGMxZWFmYTY0MWMxNyBweTNrCis4ODYwOSBhOWViMDA4N2I2MDIxNDNiZDY1OWZiMWRhOTVhMDc3ZjI0MzgwYTNlIHB5M2sKKzg4NjEwIDc4NTkzM2JhNDhhYzZiMDQ3NjFlNTBmNDIwOWJjNjA4MDE0NmU0ZTIgcHkzaworODg2MTEgNjZlZDcxYTZlMjlhOGYxYmYzOWJiYTNmNjhiMjZmMGZhNjIwODQ0ZSByZWxlYXNlMzItbWFpbnQKKzg4NjEyIDY3NWI0OGM0Yzg4YTFiYjcxZThiYWI1MWVkZDA3MzhjNGYxZDE2MTcgcmVsZWFzZTI3LW1haW50Cis4ODYxMyA3MDZiZTZlZTk2NjhiNDY0NDA1YmRiNjViNmQ4MzU5NzFmZDVhOTMzIHB5M2sKKzg4NjE0IDZmMTJhYWRmZmM5ZmI5MWQzZTEzOWRhZWE2NTY1NzJiODNiNzNkYTIgcmVsZWFzZTMyLW1haW50Cis4ODYxNSA4YjNlZjcxOWJjZWQyZGFhOGY4NDBiMDE5MTQyYzZiM2U1MDQ5YzI2IHJlbGVhc2UzMS1tYWludAorODg2MTYgZGI0NmVkYTIwZmQwMjlmYjcwMTIwOTRjNGE0MDViNDEzMTdjOGU0YyBweTNrCis4ODYxNyBhNzQ5MjRlZWE4NjFhOWRlOTYxZjU3ZDNlZTdkMDY2M2YyMWQ5OTRiIHJlbGVhc2UyNy1tYWludAorODg2MTggZjcxYWNjNGIyMzQxMDJiNjc1NzliZWQyYzEzN2UwZjAyZTY3ZTY1YSBweTNrCis4ODYxOSA4NzQyNWRjMjNmMjZlNWRlZjFjZTJjNmEwMmUzYjAzM2VkMzAyMmYyIHB5M2sKKzg4NjIwIGQyMTkwMDUxMTY3NWNlYTQ5YTkwYzdhY2JiMDJhMWVlNWVmYzVkMzAgcHkzaworODg2MjEgMjc5NjFkY2E4MzMzMDJjMWYyMTVmMGM5NjU3ZjA4MmU5MjliYzEzNCBweTNrCis4ODYyMiAxN2QxYzZjZWRlN2VkM2JjY2UyNTIxNTNhZWRhYTgxYjI4NGQwNmM4IHB5M2sKKzg4NjIzIDU5ZjllZDEyZjE3YTRlZmVmNDMxODMwNDU4NWQxNjAyZWFhZDFjZmYgcmVsZWFzZTMyLW1haW50Cis4ODYyNCAzZDNiYTQ1MmY4YWRlYzUzM2NkMzI4NjFiYzdmNzk3YTMzMTgyOWIzIHB5M2sKKzg4NjI1IGFhYWY3YjU4ZTIwOTBjMmViNjUwODZjZWQzNDM0YjBhNmM3YzAwOTMgcHkzaworODg2MjYgMjY3ZGJkNmM5OGMzMTkzMDFlOTVjNzAxY2JjMWE4NzA2ZWEyNDUyMyBweTNrCis4ODYyNyA1M2E0NWZiNzA3ODZmYTNkY2VkMTMxZDc2ZjkzN2E0ZDRlNjhmZDQ1IHB5M2sKKzg4NjI4IDczYzVhYmI0MTI5NmQ2OTk3NGY2YjIzMWIxMzk5ZDAyYWIwYWRlOGUgcHkzaworODg2MjkgMmExOWYwMjViOTc0YWE1YmRlMzMzZDhjMThiMDUwZTQ5ZmMxYTFjOCBweTNrCis4ODYzMCBhODY3ZjAyZDhmOGQ3ZjZiMmQ5YzBlZTUxNzFlZTNkOWQwN2E0MTgxIHB5M2sKKzg4NjMxIDY1NGM5ZjEzY2ZlOWUxMDcyZjRmYmIxMjBhNTZkNTVjMDJjODNjZTEgcHkzaworODg2MzIgZjQ1NTVkMzRmMzQwYTMwOWIxMDJiMDMxMTYzNzg2N2ZiMWEwNDliYyBweTNrCis4ODYzMyBiMzIyNmFkOWEzOThkZjlkZmI2ZjU5MDcyMjczYjBjZjE3OWJhZTZhIHB5M2sKKzg4NjM0IGJhOGUzMDJiNjI2YzAwOGQxZDMxZjM5Zjg5NmVlYzdhY2ZhODE3MzIgcmVsZWFzZTMyLW1haW50Cis4ODYzNSBjNmQzMDNiOTljODJhYWYyOGE4Y2YxODFmNzkyZTJhNDRmNDE2YzRiIHBlcC0zMTUxCis4ODYzNiA0ZGQ5M2QwZjVkMWUwNzhkZTczMTQ3OWIyMzI5MmVhMzA1OWY3MTRmIHB5M2sKKzg4NjM3IDY4MDhkNWRiYTFlYzEzZjBmYTk4OGJhOTI1ZTgxZGZkNWRjYjQ2NGQgcGVwLTMxNTEKKzg4NjM4IDllYjIwMmU2MzIwZTRhZGM5N2VkYzljMjg5ZjY3MTkzZjA1ZGFiMmQgZW1wdHkKKzg4NjM5IDQwOTIyOTZhM2Q4ZGE1YjFmMWEwNjJmYWMyMzRhMTRhYjdhODUxYjUgcHkzaworODg2NDAgN2ZhODZhOTE5NTY3MmM4ZDg4ODRlYjc2MDQyZGNlMDMyMjViMzRhMSBweTNrCis4ODY0MSA2MGE1YjRiMjM1NWRlNWY3MzY2NjU3YzgzZmNiNWQyN2YxOTE0YzIzIHJlbGVhc2UzMS1tYWludAorODg2NDIgMGI1OTZmZjZkNDY5NzU3ZTI3MzIwMTcwYzNmNjhlMmExYTg5ZjFlZSByZWxlYXNlMjctbWFpbnQKKzg4NjQzIDczZGFmOTFjNjE1YzUzY2M3OGI1ZDQ5Yzg2NDBjNWFhZWMzYmJiOWUgcHkzaworODg2NDQgNzY0MWZlMDg5ZGExZGFkN2NhZjNmMDkzMjhkZDRhOTAwZDY3M2MzYSByZWxlYXNlMzItbWFpbnQKKzg4NjQ0IDkwN2Q1YjJlZDVhMTlmNWUyM2Q2MTVkMmIyMTRiZTIxYWEwZmIyOGIgcHkzaworODg2NDUgNTcxN2RkMjE2NmVlMDU4NDYyNTJmZWRlZjdkOGQ0OTg1NDUyMzM0OSByZWxlYXNlMzItbWFpbnQKKzg4NjQ1IDdlZWEyYTU3NGRmYzg0YzcwOTE4MDk0NTM4OGM4ZGRkNjMzYmI1YzEgcHkzaworODg2NDYgNzY0Yjk5ZWU4YzgxMDlmNDBjZjhmMDI2M2QxNjIzNmJkYmNmMWY1ZSByZWxlYXNlMzItbWFpbnQKKzg4NjQ2IGM4NmY5MDM0MGNkN2QyMjcyZDY3ZWIxYzkwZjQxNWUzZWFhYzc1M2EgcHkzaworODg2NDcgMDdhZmZhMDMzOGJhZDI5NDEwNTFhM2VjODY5Y2ViNGVmNGZmMjBlOSBweTNrCis4ODY0OCAzMWQ0YjA0Y2I1YjA1NjdkMmVkNGFmNzczZDE4OGY4NDVmY2FlZGUzIHJlbGVhc2UzMS1tYWludAorODg2NDkgOTdkMDUwYzMxNzJmOWUyZWRjODJiMjkyMjhkYmQ2ODkxZmNkMmJhMCByZWxlYXNlMjctbWFpbnQKKzg4NjUwIDI3NmRlOWIyOTMwMzBjMTA0ZGViN2M2NzVlM2FmNjk5NjlhOTg3NDIgcHkzaworODg2NTEgMzc0ZjBiMjJlNGE0YzViMWJlNDBkMDYxZDVmODQ2OWJhMWQ1NGIyZCByZWxlYXNlMzItbWFpbnQKKzg4NjUyIDA5MTI5YWFmYjk1MzZiZGNmYmZkN2E0NGMzYmMyZTFkMDI5NzJlMzUgcHkzaworODg2NTMgZmVkMmM2ZDQ5ZjE5ODAwNmU1NGIzNzkxYTQ5NWY3YmJhY2JlMDg5YSBweTNrCis4ODY1NCA5NzlkYThmMTM5ZGQzZDZlMjE5ZjBiYWJmZjQ3NmY5NWNjZTZhNTIxIHJlbGVhc2UzMi1tYWludAorODg2NTQgNmE4ZmEyZTliMTA1NWNhZDdjYzIxODM5OTAzZjlmMzk4M2MzNTc4MCBweTNrCis4ODY1NSBjZDE0NzgyODg2Y2FhMjg1MDNiYjM1NmY1YjNjMzdhNDFlMjExYjQxIHJlbGVhc2UzMi1tYWludAorODg2NTYgNzIyYWVlYjU3ZWFiYmRmZjliZjUxYjRmODQzZWExZmM0MGZlZDAxOSBweTNrCis4ODY1OCAxMDI1NmJkNjg3ODc5MTVmOGYzZmZkNTk0NjExZDY3MDA2OTAyN2UyIHB5M2sKKzg4NjU5IDU5Zjc0YWFkOTcwMzFmMTlkZWFkY2U4Zjg2OTA0NWFkZmQ5ODQ3OTAgcmVsZWFzZTMyLW1haW50Cis4ODY2MCBjNzdiMjVhZGZlYzIzYzQxNDFhNTFjZGUxYTg1OTM5NWQ5MzEwYzE1IHB5M2sKKzg4NjYyIGE1ODEyOWNkZDM2NTczMjRhMmVmMDg4NGQ0OWZkYzRkYmZiNGM1MTYgcmVsZWFzZTI3LW1haW50Cis4ODY2MyA4Njg3YTFiNzM1MTZjYzUyMDMxYzc3MDk4MmQ5MmQ5MmZiZTRkYmRjIHB5M2sKKzg4NjY0IDE5MDljMTJlZjA2YzdjMWMyZTIyNDI2MjljM2I4MmQxZDc3NDQ4NzUgcHkzaworODg2NjUgNmNlYzA5MTAyMGEyYzk5NjlhYzhhYTI5N2RhZjJmMzZkZWQ0OWZkNCByZWxlYXNlMzItbWFpbnQKKzg4NjY2IDc0MmQ3M2E5OTQyNTc0YjUxMzBjOTRkZTFmM2EyODZjMWUyMjcwY2IgcmVsZWFzZTI3LW1haW50Cis4ODY2OCA2NTBkMTQ4MjBiZDhjNjZkZjRhMGJhYTVkMWRkYWUzZDQwODc1YjBmIHB5M2sKKzg4NjY5IGE5NTY1OTI1YmE3MDYxZDYzNzE4NDA2NGQ3OGZiNTJmOGRjODJiMjMgcmVsZWFzZTI3LW1haW50Cis4ODY3MCBhNWI1ZmRhNjY4OWM2NTNkODVkNmY0N2U3ZTBhNDZkNGUyMWQxYjNkIHJlbGVhc2UzMi1tYWludAorODg2NzEgMmYwN2QzNzVjZTZlZWNhYjQ3MWU1ZDhlYmI4ODkxMDZmMTY5ZGExMCBweTNrCis4ODY3MiA0NTY1MGViMzQ2ODUxMTdhN2I4NmY3NTZmYjEyNmRjYjJmM2ZkNTExIHJlbGVhc2UzMi1tYWludAorODg2NzMgMjE0MzZlNDgxNjFmYzMxNzAyMDEwMDFjY2FiYTdhNTViMzlkYjU3NSByZWxlYXNlMjctbWFpbnQKKzg4Njc0IGRjODYyNmUwODU3N2Q2YjFmZDEyZTQwZmQ1OWM5ZTUyMzAwOGQ2YTMgcmVsZWFzZTI3LW1haW50Cis4ODY3NSA3MjhmYmMyNjM1OWMxMDdmZjc1NWNlNWJiNmI5YjNiMDgwZjFiZWYxIHBlcC0zMTUxCis4ODY3OSBjYmQwNjA4MTAzZjYxMDZlZmExZDY1MjNkOWUwZWFiOTk0ZGNhMTRmIHB5M2sKKzg4NjgwIGI3ZDYyYmMwMTk5ODg5MjEyYmRjZDQwZDVkMDRhM2NhOTg4ZDM0NWYgcHkzaworODg2ODIgMmRkY2E1NWUwOThkZGEyYjFhNjg1NmEzNTllMTlmNzhkOTg1YzY4OCBweTNrCis4ODY4MyBiYmRkYWM1YzE4ZDM5ODBlNzY1OGEwOWJkNGZlODU0MTc5OGMzNTNjIHB5M2sKKzg4Njg0IDdjNmIyMWRiMDBlM2UzZjE1NWQyYjhhOTFkMTJjZDI4NDgyMDg3NGUgcHkzaworODg2ODUgYTJkNjExMTdjMmQyNjQ5ZjkwOTBmNjg5YWE4NWM1NTc1YTZkNzMzOSBweTNrCis4ODY4NiAxMGI4MzhmNmU1YTFhOTRiYTczYTFkM2M2NWM5NTBjZGQ4ZDVkYjMzIHB5M2sKKzg4Njg3IGZkZjMyZmEwZjQ0MGU3MWU1MGQwZmZjMzUyMjlkNmExNGM3ZDJhNDIgcmVsZWFzZTMyLW1haW50Cis4ODY4OCBiMjk0ZmY3NTczMzY1Y2RkY2NhOGEyN2MxNjQ5ZmQxOGQxOTk0NDhjIHBlcC0zODIKKzg4Njg5IGY4YTc3ZmQ2NzVmNWEzY2UwNTFlZTQwNGM3YjU2ZGIxYzcyZWJmMWQgcmVsZWFzZTMxLW1haW50Cis4ODY5MCA0NDczNGQzNzUzOTMxNTQ4YWM0YThlZDkyODJiMDM0OWI4YjYwMTUyIHJlbGVhc2UzMS1tYWludAorODg2OTEgMjYxMWNiZDc1YzRmOTcxY2Y2ZmJmNmIzMzcyNzk5NjY3YjU5NTAzMCBweTNrCis4ODY5MiBhMzY2MDk2Yjk1YWQyYTZiNWY4YTg2YjRhOTA4ZDIyODcxYjhjZGM5IHJlbGVhc2UzMi1tYWludAorODg2OTMgMTc5NzMwMGY4N2I5OTg2NWI2NjU4MWNlZGFhODQ3NmQyNDU4NzUxZiByZWxlYXNlMjctbWFpbnQKKzg4Njk0IDlhY2M5MDIxZjExZTMwMjE4MzZjODljZTgyNTgzYmJmOGVmOTdhOTMgcGVwLTM4MgorODg2OTYgOGUwN2ZjOTQ4NjgwNjg0OTA1ZjI2ZWNhNGU2MmNiOGZiZGFlZDY0OCBweTNrCis4ODY5NyA5YjcyNTQ2NzBjZTlkYTAwMjc1M2NhMDBjMjQ4ZWFiZjVkZGYzZmFlIHB5M2sKKzg4Njk4IDcyZjMwZjhlZjMzMWU5YjVmNTE0MGU4ZjMxZWE3ZGNiZWI5MDAwYTIgcmVsZWFzZTMyLW1haW50Cis4ODY5OSBiODJjM2U1OTNkYjY1NTVmYjgxNjU4MTZiYzdhMjljYTFiMjI3YzQ2IHB5M2sKKzg4NzAwIDFkMTk4NTE4Y2I4NzVjMzllNTNhZWUzYWY3ZDU0YTY2ZmMxMmQzZjMgcHkzaworODg3MDEgNWRjMzQ5M2UwN2E5ZjJhODMwZTc5YWIzMDgxYzA2NDkwMzBjM2QxNiByZWxlYXNlMzItbWFpbnQKKzg4NzAyIGRhOTU0NDBkOTJiMzZiMDA4MjE4NzExMTVkMzNiMGM1MTA4YzExZjMgcHkzaworODg3MDMgNzNhNDk5ZjBlYWYxYjBhZWYyODQ0YTYxYTE5YzEzNDA5OTdmOGQ3YyBweTNrCis4ODcwNCA4N2RlMDE3ZGE0YmY3Y2IzZDYwMjc2NTE3ZDIxODMwYjNhZTllMGQ3IHB5M2sKKzg4NzA1IDcyOTBiOGYzYzlmYjk5ODQ2NjlkMDgwN2U5ODRiZWM3MTM1MTNmMDMgcHkzaworODg3MDYgMzNlNzY4ZDIzYjE2YTU3MTBlNGY1MjJhNjIwOGU5MmJjYzJkM2NlOSBweTNrCis4ODcwNyA2ZjExN2QyN2FkMWM1ZTYzMjM5ZGQ1MmMzMjU2MmQ4MjQyNWFmODY3IHB5M2sKKzg4NzA4IGM3YTkzNjM2MjI4MTlmM2VhYjc3MmM3ODA0MzRiMjM0NzFmZTBiMjUgcHkzaworODg3MDkgMzc4ZWUzMjhiNjBlMGIxNjM2YWEyNDc1N2JlYTFhMTVmOTI4MWFlNCBweTNrCis4ODcxMCBhMWRiZTUzZjM3OTg0NWZmNjM2NzA5YjA4YWI0NTYzMzdjODY1YzkzIHB5M2sKKzg4NzExIDRkYWM0NzY5ZWEyNDhhYWNjODMwNzdlNTdhNjRkMmMxMzQxYzIzYWEgcHkzaworODg3MTIgNmIxMmQyYjY4ZjI1MzMzZGQ1YWZmZTZlM2U4ZjQ2YjU1Y2Q0MjQyNCBweTNrCis4ODcxNyAwZGM2YTkwZGVlMjE5MTIyYWJmNTY2YWM4NThhZWE2NWM0MzAwODJmIHB5M2sKKzg4NzE4IDZjOGVjNWY4YjllNTFiY2UxNTRlMTE4ZWZhOTFmNzFiMDA5NmViZDAgcmVsZWFzZTMyLW1haW50Cis4ODcxOSBhNGU3ZmJlZDc1M2M3MzFhNTUyNjdjZTcxMDA5YTgwZDgyNzA0ZDRhIHB5M2sKKzg4NzIwIDczOGZlZWM5Y2VkMDFmYzMxMzg5MmRiM2IxMDU4OWZiNjAyNWI4N2EgcHkzaworODg3MjEgMjBhNWEwOGMzYjZjYTlkOGE0MDg2OTdiOTU3NjcwZDVlM2Q2MjljMCBweTNrCis4ODcyMiAyMDhhNTI5MGZkMzhlYzhjNGZlMTM4ZTc5ZTgyM2QwMTg3NDNlY2M2IHB5M2sKKzg4NzIzIGExNzI3MDYzYTdkZmViMGQyYTYzYTZiMWEyOWY0NmZlYzMyYjA1ODIgcmVsZWFzZTMyLW1haW50Cis4ODcyNCBmNTM5OGZiODE0Mjg5YjI0YThiMDVmYWVkMzQ0ZjdmOTBiNzc1NmQ3IHB5M2sKKzg4NzI1IDJmY2U5Yzc0MmNkZWFiNGRlZDExMTUyZWNiZGQ5MDY3ZTEwZWYwZTIgcmVsZWFzZTMxLW1haW50Cis4ODcyNiBkZGMwYmI2YTdiN2M3MmM3YWJiN2IxYzQ4MGRlYThmZDkxOGRiOWNlIHB5M2sKKzg4NzI3IDU4Y2IwZmUwNmRhYTM2NTE5NTM1NTFiZTViMTFiMTQ1MDE1NDdiMDAgcmVsZWFzZTMyLW1haW50Cis4ODcyOCA5NjVhYjk5MTFmY2QwZWYxNGFmZTBkYTlmODM1NTVjNjg5NzhlN2QwIHJlbGVhc2UyNy1tYWludAorODg3MjkgZjIwNDZkZmNhNzMxMTM2NzJkNTliNTA0NmZmODZiMGIwM2I0MWQwOSBweTNrCis4ODczMCBiNTI4MWY1ZmFkZTRkZDU2N2YxZjFkNTZmYWM5Y2U3ZDU3ZWI5Zjk5IHB5M2sKKzg4NzMxIGJjOWVmYmJlNjNjZjNlYjNhM2I3YzFiOTI0NmM1NDRmNmZhNWZlYjIgcmVsZWFzZTMyLW1haW50Cis4ODczMiBhODM4OTQ2OGU2NTEzN2M1MDY1ZjcwMmM4NDZiOWMwZTU2MWU1OTcyIHJlbGVhc2UyNy1tYWludAorODg3MzMgMDg4MDRhZWEwOGYxYzQ4YTE2Yzg0OWRhMTI3MDdlNTFhODdkODZkOSBweTNrCis4ODczNCAyZjVmNzU1YjI2ODc4Y2IwZmIzNWMwYzU5MDczYWFmMThlYmUzNjgzIHB5M2sKKzg4NzM1IGQyYjViZGU1YzFmYTRjOTRhNzQ3YzY3MDE2M2Q2YWM3MDFmOTYwOTYgcHkzaworODg3MzkgMWEwNWJjMzZhMzM0MGE0ZTZiNTk2MTUzODU0M2YxMGU5YmY4Y2Y3YSByZWxlYXNlMzItbWFpbnQKKzg4NzQwIDNmNzBjNTRkODZkODlhZGNmN2E3NDUyMDI1OTY3YThmNzBiZTI5Y2YgcHkzaworODg3NDEgZTJkZmM4ZjI0ZDNmNmVhODM4NjNkMmUzMmMwYzMwM2UwMjZhYWFmZCByZWxlYXNlMjctbWFpbnQKKzg4NzQyIDkzZmQxNjY3MDc3NGEyNzdiOTE3MzkwNDI2Yjg0YzI4YWI3OTZjN2EgcHkzaworODg3NDQgZTc0MjA5YjliMmY1Mjg4ZjkzN2Q2ZTM0MTFhMmNmMTBhODY0NmIwNCBweTNrCis4ODc0NSBlN2I2YWRiYTU3MWFhOTNhNDQxNDVmMGViZjdiNWJiYTJlMzg1OTMxIHB5M2sKKzg4NzQ2IDUwYjM4ZTRiMDIzMTI2N2I5MTc1NWM0ZDFhMDA3MjBmMzgxOTUyNjggcHkzaworODg3NDcgMGU3MTgwZTRjM2NkYjk0ODQxOGJjMTdiNTc0ZDFmZjY1MTQyOWY0ZCBweTNrCis4ODc1MiA4NWEzNGEzMTY5NjkyNzg1OTNkNDU0YTg2ZWY0M2EyZjc2YzJkNzZjIHB5M2stY2RlY2ltYWwKZGlmZiAtLWdpdCBhL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAgYi9NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwCmluZGV4IGE2NjMwNWIuLjgxYTA3YzkgMTAwNjQ0Ci0tLSBhL01pc2MvdmFsZ3JpbmQtcHl0aG9uLnN1cHAKKysrIGIvTWlzYy92YWxncmluZC1weXRob24uc3VwcApAQCAtMTM3LDYgKzEzNywxOCBAQAogIyMjfQogIyMjCiAjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6QWRkcjgKKyMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCisjIyN9CisjIyMKKyMjI3sKKyMjIyAgIEFERFJFU1NfSU5fUkFOR0UvVXNlIG9mIHVuaW5pdGlhbGlzZWQgdmFsdWUgb2Ygc2l6ZSA4CisjIyMgICBNZW1jaGVjazpWYWx1ZTgKKyMjIyAgIGZ1bjpQeU9iamVjdF9GcmVlCisjIyN9CisjIyMKKyMjI3sKICMjIyAgIEFERFJFU1NfSU5fUkFOR0UvQ29uZGl0aW9uYWwganVtcCBvciBtb3ZlIGRlcGVuZHMgb24gdW5pbml0aWFsaXNlZCB2YWx1ZQogIyMjICAgTWVtY2hlY2s6Q29uZAogIyMjICAgZnVuOlB5T2JqZWN0X0ZyZWUKQEAgLTE1NSw2ICsxNjcsMTggQEAKICMjI30KICMjIwogIyMjeworIyMjICAgQUREUkVTU19JTl9SQU5HRS9Vc2Ugb2YgdW5pbml0aWFsaXNlZCB2YWx1ZSBvZiBzaXplIDgKKyMjIyAgIE1lbWNoZWNrOkFkZHI4CisjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYworIyMjfQorIyMjCisjIyN7CisjIyMgICBBRERSRVNTX0lOX1JBTkdFL1VzZSBvZiB1bmluaXRpYWxpc2VkIHZhbHVlIG9mIHNpemUgOAorIyMjICAgTWVtY2hlY2s6VmFsdWU4CisjIyMgICBmdW46UHlPYmplY3RfUmVhbGxvYworIyMjfQorIyMjCisjIyN7CiAjIyMgICBBRERSRVNTX0lOX1JBTkdFL0NvbmRpdGlvbmFsIGp1bXAgb3IgbW92ZSBkZXBlbmRzIG9uIHVuaW5pdGlhbGlzZWQgdmFsdWUKICMjIyAgIE1lbWNoZWNrOkNvbmQKICMjIyAgIGZ1bjpQeU9iamVjdF9SZWFsbG9jCkBAIC0yODYsNiArMzEwLDM4IEBACiAjIyMgICBmdW46TUQ1X1VwZGF0ZQogIyMjfQogCisjIEZlZG9yYSdzIHBhY2thZ2UgIm9wZW5zc2wtMS4wLjEtMC4xLmJldGEyLmZjMTcueDg2XzY0IiBvbiB4ODZfNjQKKyMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxNDE3MQoreworICAgb3BlbnNzbCAxLjAuMSBwcm5nIDEKKyAgIE1lbWNoZWNrOkNvbmQKKyAgIGZ1bjpiY21wCisgICBmdW46Zmlwc19nZXRfZW50cm9weQorICAgZnVuOkZJUFNfZHJiZ19pbnN0YW50aWF0ZQorICAgZnVuOlJBTkRfaW5pdF9maXBzCisgICBmdW46T1BFTlNTTF9pbml0X2xpYnJhcnkKKyAgIGZ1bjpTU0xfbGlicmFyeV9pbml0CisgICBmdW46aW5pdF9oYXNobGliCit9CisKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAyCisgICBNZW1jaGVjazpDb25kCisgICBmdW46Zmlwc19nZXRfZW50cm9weQorICAgZnVuOkZJUFNfZHJiZ19pbnN0YW50aWF0ZQorICAgZnVuOlJBTkRfaW5pdF9maXBzCisgICBmdW46T1BFTlNTTF9pbml0X2xpYnJhcnkKKyAgIGZ1bjpTU0xfbGlicmFyeV9pbml0CisgICBmdW46aW5pdF9oYXNobGliCit9CisKK3sKKyAgIG9wZW5zc2wgMS4wLjEgcHJuZyAzCisgICBNZW1jaGVjazpWYWx1ZTgKKyAgIGZ1bjpfeDg2XzY0X0FFU19lbmNyeXB0X2NvbXBhY3QKKyAgIGZ1bjpBRVNfZW5jcnlwdAorfQorCiAjCiAjIEFsbCBvZiB0aGVzZSBwcm9ibGVtcyBjb21lIGZyb20gdXNpbmcgdGVzdF9zb2NrZXRfc3NsCiAjCkBAIC0zODgsNCArNDQ0LDI4IEBACiAgICBmdW46U0hBMV9VcGRhdGUKIH0KIAoreworICAgdGVzdF9idWZmZXJfbm9uX2RlYnVnCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKK30KKworeworICAgdGVzdF9idWZmZXJfbm9uX2RlYnVnCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZV9GU0NvbnZlcnRlcgorfQorCisjIEFkZGl0aW9uYWwgc3VwcHJlc3Npb25zIGZvciB0aGUgdW5pZmllZCBkZWNpbWFsIHRlc3RzOgoreworICAgdGVzdF9kZWNpbWFsCisgICBNZW1jaGVjazpBZGRyNAorICAgZnVuOlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKK30KKworeworICAgdGVzdF9kZWNpbWFsMgorICAgTWVtY2hlY2s6QWRkcjQKKyAgIGZ1bjpQeVVuaWNvZGVfRlNDb252ZXJ0ZXIKK30KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IDkyNjlkZGYuLmY0NWRlNWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTEyNyw2ICsxMjcsOSBAQAogIyBidWlsdGluIG1vZHVsZSBhdm9pZHMgc29tZSBib290c3RyYXBwaW5nIHByb2JsZW1zIGFuZCByZWR1Y2VzIG92ZXJoZWFkLgogemlwaW1wb3J0IHppcGltcG9ydC5jCiAKKyMgZmF1bHRoYW5kbGVyIG1vZHVsZQorZmF1bHRoYW5kbGVyIGZhdWx0aGFuZGxlci5jCisKICMgVGhlIHJlc3Qgb2YgdGhlIG1vZHVsZXMgbGlzdGVkIGluIHRoaXMgZmlsZSBhcmUgYWxsIGNvbW1lbnRlZCBvdXQgYnkKICMgZGVmYXVsdC4gIFVzdWFsbHkgdGhleSBjYW4gYmUgZGV0ZWN0ZWQgYW5kIGJ1aWx0IGFzIGR5bmFtaWNhbGx5CiAjIGxvYWRlZCBtb2R1bGVzIGJ5IHRoZSBuZXcgc2V0dXAucHkgc2NyaXB0IGFkZGVkIGluIFB5dGhvbiAyLjEuICBJZgpAQCAtMjA3LDcgKzIxMCw3IEBACiAjCiAjIEZpcnN0LCBsb29rIGF0IFNldHVwLmNvbmZpZzsgY29uZmlndXJlIG1heSBoYXZlIHNldCB0aGlzIGZvciB5b3UuCiAKLSNjcnlwdCBjcnlwdG1vZHVsZS5jICMgLWxjcnlwdAkjIGNyeXB0KDMpOyBuZWVkcyAtbGNyeXB0IG9uIHNvbWUgc3lzdGVtcworI19jcnlwdCBfY3J5cHRtb2R1bGUuYyAjIC1sY3J5cHQJIyBjcnlwdCgzKTsgbmVlZHMgLWxjcnlwdCBvbiBzb21lIHN5c3RlbXMKIAogCiAjIFNvbWUgbW9yZSBVTklYIGRlcGVuZGVudCBtb2R1bGVzIC0tIG9mZiBieSBkZWZhdWx0LCBzaW5jZSB0aGVzZQpAQCAtMjMxLDE1ICsyMzQsMTQgQEAKICMgc3lzdGVtIGRvZXMgbm90IGhhdmUgdGhlIE9wZW5TU0wgbGlicyBjb250YWluaW5nIGFuIG9wdGltaXplZCB2ZXJzaW9uLgogCiAjIFRoZSBfbWQ1IG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUKLSMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuICBUaGUgbmVjZXNzYXJ5IGZpbGVzCi0jIG1kNS5jIGFuZCBtZDUuaCBhcmUgaW5jbHVkZWQgaGVyZS4KKyMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuCiAKLSNfbWQ1IG1kNW1vZHVsZS5jIG1kNS5jCisjX21kNSBtZDVtb2R1bGUuYwogCiAKICMgVGhlIF9zaGEgbW9kdWxlIGltcGxlbWVudHMgdGhlIFNIQSBjaGVja3N1bSBhbGdvcml0aG1zLgogIyAoTklTVCdzIFNlY3VyZSBIYXNoIEFsZ29yaXRobXMuKQotI19zaGEgc2hhbW9kdWxlLmMKKyNfc2hhMSBzaGExbW9kdWxlLmMKICNfc2hhMjU2IHNoYTI1Nm1vZHVsZS5jCiAjX3NoYTUxMiBzaGE1MTJtb2R1bGUuYwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19iaXNlY3Rtb2R1bGUuYyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCmluZGV4IGVhZTI5NzguLmZhY2E4Y2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jCkBAIC05MCw3ICs5MCw5IEBACiAgICAgICAgIGlmIChQeUxpc3RfSW5zZXJ0KGxpc3QsIGluZGV4LCBpdGVtKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxpc3QsICJpbnNlcnQiLCAibk8iLCBpbmRleCwgaXRlbSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGluc2VydCk7CisKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChsaXN0LCAmUHlJZF9pbnNlcnQsICJuTyIsIGluZGV4LCBpdGVtKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtMTkzLDcgKzE5NSw4IEBACiAgICAgICAgIGlmIChQeUxpc3RfSW5zZXJ0KGxpc3QsIGluZGV4LCBpdGVtKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxpc3QsICJpbnNlcnQiLCAibk8iLCBpbmRleCwgaXRlbSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGluc2VydCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQobGlzdCwgJlB5SWRfaW5zZXJ0LCAibk8iLCBpbmRleCwgaXRlbSk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2J6Mm1vZHVsZS5jIGIvTW9kdWxlcy9fYnoybW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNhYzhlNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2J6Mm1vZHVsZS5jCkBAIC0wLDAgKzEsNjA1IEBACisvKiBfYnoyIC0gTG93LWxldmVsIFB5dGhvbiBpbnRlcmZhY2UgdG8gbGliYnppcDIuICovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGJ6bGliLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworCisjaWZuZGVmIEJaX0NPTkZJR19FUlJPUgorI2RlZmluZSBCWjJfYnpDb21wcmVzcyBiekNvbXByZXNzCisjZGVmaW5lIEJaMl9iekNvbXByZXNzSW5pdCBiekNvbXByZXNzSW5pdAorI2RlZmluZSBCWjJfYnpDb21wcmVzc0VuZCBiekNvbXByZXNzRW5kCisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3MgYnpEZWNvbXByZXNzCisjZGVmaW5lIEJaMl9iekRlY29tcHJlc3NJbml0IGJ6RGVjb21wcmVzc0luaXQKKyNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0VuZCBiekRlY29tcHJlc3NFbmQKKyNlbmRpZiAgLyogISBCWl9DT05GSUdfRVJST1IgKi8KKworCisjaWZkZWYgV0lUSF9USFJFQUQKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikgZG8geyBcCisgICAgaWYgKCFQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDApKSB7IFwKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUyBcCisgICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jaygob2JqKS0+bG9jaywgMSk7IFwKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMgXAorICAgIH0gfSB3aGlsZSAoMCkKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKChvYmopLT5sb2NrKQorI2Vsc2UKKyNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikKKyNlbmRpZgorCisjZGVmaW5lIE1JTihYLCBZKSAoKChYKSA8IChZKSkgPyAoWCkgOiAoWSkpCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBiel9zdHJlYW0gYnpzOworICAgIGludCBmbHVzaGVkOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQloyQ29tcHJlc3NvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBiel9zdHJlYW0gYnpzOworICAgIGNoYXIgZW9mOyAgICAgICAgICAgLyogVF9CT09MIGV4cGVjdHMgYSBjaGFyICovCisgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gQloyRGVjb21wcmVzc29yOworCisKKy8qIEhlbHBlciBmdW5jdGlvbnMuICovCisKK3N0YXRpYyBpbnQKK2NhdGNoX2J6Ml9lcnJvcihpbnQgYnplcnJvcikKK3sKKyAgICBzd2l0Y2goYnplcnJvcikgeworICAgICAgICBjYXNlIEJaX09LOgorICAgICAgICBjYXNlIEJaX1JVTl9PSzoKKyAgICAgICAgY2FzZSBCWl9GTFVTSF9PSzoKKyAgICAgICAgY2FzZSBCWl9GSU5JU0hfT0s6CisgICAgICAgIGNhc2UgQlpfU1RSRUFNX0VORDoKKyAgICAgICAgICAgIHJldHVybiAwOworCisjaWZkZWYgQlpfQ09ORklHX0VSUk9SCisgICAgICAgIGNhc2UgQlpfQ09ORklHX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWJiemlwMiB3YXMgbm90IGNvbXBpbGVkIGNvcnJlY3RseSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisjZW5kaWYKKyAgICAgICAgY2FzZSBCWl9QQVJBTV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCBlcnJvciAtICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwYXJhbWV0ZXJzIHBhc3NlZCB0byBsaWJiemlwMiIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfTUVNX0VSUk9SOgorICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1I6CisgICAgICAgIGNhc2UgQlpfREFUQV9FUlJPUl9NQUdJQzoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiSW52YWxpZCBkYXRhIHN0cmVhbSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgQlpfSU9fRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgIlVua25vd24gSS9PIGVycm9yIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgbG9naWNhbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBCWl9TRVFVRU5DRV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIGVycm9yIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHNlcXVlbmNlIG9mIGNvbW1hbmRzIHNlbnQgdG8gbGliYnppcDIiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBlcnJvciBmcm9tIGxpYmJ6aXAyOiAlZCIsIGJ6ZXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisjaWYgQlVGU0laIDwgODE5MgorI2RlZmluZSBTTUFMTENIVU5LIDgxOTIKKyNlbHNlCisjZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCisjZW5kaWYKKworc3RhdGljIGludAorZ3Jvd19idWZmZXIoUHlPYmplY3QgKipidWYpCit7CisgICAgLyogRXhwYW5kIHRoZSBidWZmZXIgYnkgYW4gYW1vdW50IHByb3BvcnRpb25hbCB0byB0aGUgY3VycmVudCBzaXplLAorICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuIFVzZSBhIGxlc3MtdGhhbi1kb3VibGUKKyAgICAgICBncm93dGggZmFjdG9yIHRvIGF2b2lkIGV4Y2Vzc2l2ZSBhbGxvY2F0aW9uLiAqLworICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKKyAgICBzaXplX3QgbmV3X3NpemUgPSBzaXplICsgKHNpemUgPj4gMykgKyA2OworICAgIGlmIChuZXdfc2l6ZSA+IHNpemUpIHsKKyAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX1Jlc2l6ZShidWYsIG5ld19zaXplKTsKKyAgICB9IGVsc2UgeyAgLyogb3ZlcmZsb3cgKi8KKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGFsbG9jYXRlIGJ1ZmZlciAtIG91dHB1dCB0b28gbGFyZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KKworCisvKiBCWjJDb21wcmVzc29yIGNsYXNzLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorY29tcHJlc3MoQloyQ29tcHJlc3NvciAqYywgY2hhciAqZGF0YSwgc2l6ZV90IGxlbiwgaW50IGFjdGlvbikKK3sKKyAgICBzaXplX3QgZGF0YV9zaXplID0gMDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGMtPmJ6cy5uZXh0X2luID0gZGF0YTsKKyAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGxlbiBtaWdodCBub3QgZml0IGluIGF2YWlsX2luIChhbiB1bnNpZ25lZCBpbnQpLgorICAgICAgIERvIGNvbXByZXNzaW9uIGluIGNodW5rcyBvZiBubyBtb3JlIHRoYW4gVUlOVF9NQVggYnl0ZXMgZWFjaC4gKi8KKyAgICBjLT5ienMuYXZhaWxfaW4gPSBNSU4obGVuLCBVSU5UX01BWCk7CisgICAgbGVuIC09IGMtPmJ6cy5hdmFpbF9pbjsKKyAgICBjLT5ienMubmV4dF9vdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgZm9yICg7OykgeworICAgICAgICBjaGFyICp0aGlzX291dDsKKyAgICAgICAgaW50IGJ6ZXJyb3I7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICB0aGlzX291dCA9IGMtPmJ6cy5uZXh0X291dDsKKyAgICAgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzKCZjLT5ienMsIGFjdGlvbik7CisgICAgICAgIGRhdGFfc2l6ZSArPSBjLT5ienMubmV4dF9vdXQgLSB0aGlzX291dDsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKGMtPmJ6cy5hdmFpbF9pbiA9PSAwICYmIGxlbiA+IDApIHsKKyAgICAgICAgICAgIGMtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICAgICAgICAgIGxlbiAtPSBjLT5ienMuYXZhaWxfaW47CisgICAgICAgIH0KKworICAgICAgICAvKiBJbiByZWd1bGFyIGNvbXByZXNzaW9uIG1vZGUsIHN0b3Agd2hlbiBpbnB1dCBkYXRhIGlzIGV4aGF1c3RlZC4KKyAgICAgICAgICAgSW4gZmx1c2hpbmcgbW9kZSwgc3RvcCB3aGVuIGFsbCBidWZmZXJlZCBkYXRhIGhhcyBiZWVuIGZsdXNoZWQuICovCisgICAgICAgIGlmICgoYWN0aW9uID09IEJaX1JVTiAmJiBjLT5ienMuYXZhaWxfaW4gPT0gMCkgfHwKKyAgICAgICAgICAgIChhY3Rpb24gPT0gQlpfRklOSVNIICYmIGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAoYy0+YnpzLmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgYy0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGMtPmJ6cy5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQloyQ29tcHJlc3Nvcl9jb21wcmVzc19fZG9jX18sCisiY29tcHJlc3MoZGF0YSkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJQcm92aWRlIGRhdGEgdG8gdGhlIGNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGInJyBvdGhlcndpc2UuXG4iCisiXG4iCisiV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBwcm92aWRpbmcgZGF0YSB0byB0aGUgY29tcHJlc3NvciwgY2FsbCB0aGVcbiIKKyJmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0JaMkNvbXByZXNzb3JfY29tcHJlc3MoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6Y29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmZsdXNoZWQpCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcHJlc3NvciBoYXMgYmVlbiBmbHVzaGVkIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuLCBCWl9SVU4pOworICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5RG9jX1NUUlZBUihCWjJDb21wcmVzc29yX2ZsdXNoX19kb2NfXywKKyJmbHVzaCgpIC0+IGJ5dGVzXG4iCisiXG4iCisiRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdFxuIgorImluIGludGVybmFsIGJ1ZmZlcnMuXG4iCisiXG4iCisiVGhlIGNvbXByZXNzb3Igb2JqZWN0IG1heSBub3QgYmUgdXNlZCBhZnRlciB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0JaMkNvbXByZXNzb3JfZmx1c2goQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+Zmx1c2hlZCkKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJSZXBlYXRlZCBjYWxsIHRvIGZsdXNoKCkiKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc2VsZi0+Zmx1c2hlZCA9IDE7CisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIE5VTEwsIDAsIEJaX0ZJTklTSCk7CisgICAgfQorICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitCWjJDb21wcmVzc29yX2luaXQoQloyQ29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OworICAgIGludCBiemVycm9yOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpCWjJDb21wcmVzc29yIiwgJmNvbXByZXNzbGV2ZWwpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCEoMSA8PSBjb21wcmVzc2xldmVsICYmIGNvbXByZXNzbGV2ZWwgPD0gOSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmIChzZWxmLT5sb2NrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAiVW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCisgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCBjb21wcmVzc2xldmVsLCAwLCAwKTsKKyAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorQloyQ29tcHJlc3Nvcl9kZWFsbG9jKEJaMkNvbXByZXNzb3IgKnNlbGYpCit7CisgICAgQloyX2J6Q29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgQloyQ29tcHJlc3Nvcl9tZXRob2RzW10gPSB7CisgICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJDb21wcmVzc29yX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEJaMkNvbXByZXNzb3JfY29tcHJlc3NfX2RvY19ffSwKKyAgICB7ImZsdXNoIiwgICAgKFB5Q0Z1bmN0aW9uKUJaMkNvbXByZXNzb3JfZmx1c2gsICAgIE1FVEhfTk9BUkdTLAorICAgICBCWjJDb21wcmVzc29yX2ZsdXNoX19kb2NfX30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoQloyQ29tcHJlc3Nvcl9fZG9jX18sCisiQloyQ29tcHJlc3Nvcihjb21wcmVzc2xldmVsPTkpXG4iCisiXG4iCisiQ3JlYXRlIGEgY29tcHJlc3NvciBvYmplY3QgZm9yIGNvbXByZXNzaW5nIGRhdGEgaW5jcmVtZW50YWxseS5cbiIKKyJcbiIKKyJjb21wcmVzc2xldmVsLCBpZiBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGNvbXByZXNzaW9uLCB1c2UgdGhlIGNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEJaMkNvbXByZXNzb3JfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2J6Mi5CWjJDb21wcmVzc29yIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEJaMkNvbXByZXNzb3IpLCAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilCWjJDb21wcmVzc29yX2RlYWxsb2MsICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIEJaMkNvbXByZXNzb3JfX2RvY19fLCAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQloyQ29tcHJlc3Nvcl9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpQloyQ29tcHJlc3Nvcl9pbml0LCAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogQloyRGVjb21wcmVzc29yIGNsYXNzLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorZGVjb21wcmVzcyhCWjJEZWNvbXByZXNzb3IgKmQsIGNoYXIgKmRhdGEsIHNpemVfdCBsZW4pCit7CisgICAgc2l6ZV90IGRhdGFfc2l6ZSA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGQtPmJ6cy5uZXh0X2luID0gZGF0YTsKKyAgICAvKiBPbiBhIDY0LWJpdCBzeXN0ZW0sIGxlbiBtaWdodCBub3QgZml0IGluIGF2YWlsX2luIChhbiB1bnNpZ25lZCBpbnQpLgorICAgICAgIERvIGRlY29tcHJlc3Npb24gaW4gY2h1bmtzIG9mIG5vIG1vcmUgdGhhbiBVSU5UX01BWCBieXRlcyBlYWNoLiAqLworICAgIGQtPmJ6cy5hdmFpbF9pbiA9IE1JTihsZW4sIFVJTlRfTUFYKTsKKyAgICBsZW4gLT0gZC0+YnpzLmF2YWlsX2luOworICAgIGQtPmJ6cy5uZXh0X291dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgZC0+YnpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNoYXIgKnRoaXNfb3V0OworICAgICAgICBpbnQgYnplcnJvcjsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHRoaXNfb3V0ID0gZC0+YnpzLm5leHRfb3V0OworICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcygmZC0+YnpzKTsKKyAgICAgICAgZGF0YV9zaXplICs9IGQtPmJ6cy5uZXh0X291dCAtIHRoaXNfb3V0OworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfYnoyX2Vycm9yKGJ6ZXJyb3IpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgeworICAgICAgICAgICAgZC0+ZW9mID0gMTsKKyAgICAgICAgICAgIGxlbiArPSBkLT5ienMuYXZhaWxfaW47CisgICAgICAgICAgICBpZiAobGVuID4gMCkgeyAvKiBTYXZlIGxlZnRvdmVyIGlucHV0IHRvIHVudXNlZF9kYXRhICovCisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZC0+dW51c2VkX2RhdGEpOworICAgICAgICAgICAgICAgIGQtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkLT5ienMubmV4dF9pbiwgbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoZC0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChkLT5ienMuYXZhaWxfaW4gPT0gMCkgeworICAgICAgICAgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZC0+YnpzLmF2YWlsX2luID0gTUlOKGxlbiwgVUlOVF9NQVgpOworICAgICAgICAgICAgbGVuIC09IGQtPmJ6cy5hdmFpbF9pbjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZC0+YnpzLmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgICAgICBpZiAoYnVmZmVyX2xlZnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChncm93X2J1ZmZlcigmcmVzdWx0KSA8IDApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgZC0+YnpzLm5leHRfb3V0ID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSAtIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQtPmJ6cy5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoZGF0YV9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSkKKyAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBkYXRhX3NpemUpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19fLAorImRlY29tcHJlc3MoZGF0YSkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiJycgb3RoZXJ3aXNlLlxuIgorIlxuIgorIkF0dGVtcHRpbmcgdG8gZGVjb21wcmVzcyBkYXRhIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtIGlzIHJlYWNoZWRcbiIKKyJyYWlzZXMgYW4gRU9GRXJyb3IuIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIHN0cmVhbVxuIgorImlzIGlnbm9yZWQgYW5kIHNhdmVkIGluIHRoZSB1bnVzZWRfZGF0YSBhdHRyaWJ1dGUuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0JaMkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzKEJaMkRlY29tcHJlc3NvciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZidWZmZXIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKKyAgICBpZiAoc2VsZi0+ZW9mKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJFbmQgb2Ygc3RyZWFtIGFscmVhZHkgcmVhY2hlZCIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzcyhzZWxmLCBidWZmZXIuYnVmLCBidWZmZXIubGVuKTsKKyAgICBSRUxFQVNFX0xPQ0soc2VsZik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50CitCWjJEZWNvbXByZXNzb3JfaW5pdChCWjJEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGludCBiemVycm9yOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6QloyRGVjb21wcmVzc29yIikpCisgICAgICAgIHJldHVybiAtMTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CisgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgMCwgMCk7CisgICAgaWYgKGNhdGNoX2J6Ml9lcnJvcihiemVycm9yKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisgICAgc2VsZi0+bG9jayA9IE5VTEw7CisjZW5kaWYKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyB2b2lkCitCWjJEZWNvbXByZXNzb3JfZGVhbGxvYyhCWjJEZWNvbXByZXNzb3IgKnNlbGYpCit7CisgICAgQloyX2J6RGVjb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKKyAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoc2VsZi0+bG9jayAhPSBOVUxMKQorICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CisjZW5kaWYKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgQloyRGVjb21wcmVzc29yX21ldGhvZHNbXSA9IHsKKyAgICB7ImRlY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQloyRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX2RvY19ffSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfZW9mX19kb2NfXywKKyJUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLiIpOworCitQeURvY19TVFJWQVIoQloyRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX19kb2NfXywKKyJEYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLiIpOworCitzdGF0aWMgUHlNZW1iZXJEZWYgQloyRGVjb21wcmVzc29yX21lbWJlcnNbXSA9IHsKKyAgICB7ImVvZiIsIFRfQk9PTCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCBlb2YpLAorICAgICBSRUFET05MWSwgQloyRGVjb21wcmVzc29yX2VvZl9fZG9jX199LAorICAgIHsidW51c2VkX2RhdGEiLCBUX09CSkVDVF9FWCwgb2Zmc2V0b2YoQloyRGVjb21wcmVzc29yLCB1bnVzZWRfZGF0YSksCisgICAgIFJFQURPTkxZLCBCWjJEZWNvbXByZXNzb3JfdW51c2VkX2RhdGFfX2RvY19ffSwKKyAgICB7TlVMTH0KK307CisKK1B5RG9jX1NUUlZBUihCWjJEZWNvbXByZXNzb3JfX2RvY19fLAorIkJaMkRlY29tcHJlc3NvcigpXG4iCisiXG4iCisiQ3JlYXRlIGEgZGVjb21wcmVzc29yIG9iamVjdCBmb3IgZGVjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiRm9yIG9uZS1zaG90IGRlY29tcHJlc3Npb24sIHVzZSB0aGUgZGVjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBCWjJEZWNvbXByZXNzb3JfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2J6Mi5CWjJEZWNvbXByZXNzb3IiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKEJaMkRlY29tcHJlc3NvciksICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilCWjJEZWNvbXByZXNzb3JfZGVhbGxvYywvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIEJaMkRlY29tcHJlc3Nvcl9fZG9jX18sICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQloyRGVjb21wcmVzc29yX21ldGhvZHMsICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIEJaMkRlY29tcHJlc3Nvcl9tZW1iZXJzLCAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpQloyRGVjb21wcmVzc29yX2luaXQsICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogTW9kdWxlIGluaXRpYWxpemF0aW9uLiAqLworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9iejJtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfYnoyIiwKKyAgICBOVUxMLAorICAgIC0xLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fYnoyKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJDb21wcmVzc29yX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyRGVjb21wcmVzc29yX1R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfYnoybW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0lOQ1JFRigmQloyQ29tcHJlc3Nvcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkNvbXByZXNzb3IiLCAoUHlPYmplY3QgKikmQloyQ29tcHJlc3Nvcl9UeXBlKTsKKworICAgIFB5X0lOQ1JFRigmQloyRGVjb21wcmVzc29yX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQloyRGVjb21wcmVzc29yIiwKKyAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJkJaMkRlY29tcHJlc3Nvcl9UeXBlKTsKKworICAgIHJldHVybiBtOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29kZWNzbW9kdWxlLmMgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwppbmRleCBlYjc0MGY5Li40MDAzN2IxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2RlY3Ntb2R1bGUuYwpAQCAtMzgsNiArMzgsMTAgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgorCiAvKiAtLS0gUmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogUHlEb2NfU1RSVkFSKHJlZ2lzdGVyX19kb2NfXywKQEAgLTE2Miw3ICsxNjYsNiBAQAogZXNjYXBlX2VuY29kZShQeU9iamVjdCAqc2VsZiwKICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKmhleGRpZ2l0cyA9ICIwMTIzNDU2Nzg5YWJjZGVmIjsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3NpemU7CkBAIC0xNzQsMTIgKzE3NywxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHN0cik7Ci0gICAgbmV3c2l6ZSA9IDQqc2l6ZTsKLSAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIHx8IG5ld3NpemUgLyA0ICE9IHNpemUpIHsKKyAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gNCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJzdHJpbmcgaXMgdG9vIGxhcmdlIHRvIGVuY29kZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIG5ld3NpemUgPSA0KnNpemU7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmV3c2l6ZSk7CiAKICAgICBpZiAodiA9PSBOVUxMKSB7CkBAIC0yMDUsOCArMjA4LDggQEAKICAgICAgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7CiAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjICYgMHhmXTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07CisgICAgICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjICYgMHhmXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAqcCsrID0gYzsKQEAgLTIzNiw4ICsyMzksMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9JTkNSRUYob2JqKTsKLSAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKG9iaiwgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUob2JqLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIob2JqLCAoY29uc3Qgdm9pZCAqKikmZGF0YSwgJnNpemUpKQpAQCAtNTg4LDcgKzU5Myw3IEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKHVuaWNvZGUsIHBidWYubGVuKTsKIH0KIAotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogCiBzdGF0aWMgUHlPYmplY3QgKgogbWJjc19kZWNvZGUoUHlPYmplY3QgKnNlbGYsCkBAIC02MTMsNyArNjE4LDMyIEBACiAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKGRlY29kZWQsIGNvbnN1bWVkKTsKIH0KIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb2RlX3BhZ2VfZGVjb2RlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgcGJ1ZjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBmaW5hbCA9IDA7CisgICAgUHlfc3NpemVfdCBjb25zdW1lZDsKKyAgICBQeU9iamVjdCAqZGVjb2RlZCA9IE5VTEw7CisgICAgaW50IGNvZGVfcGFnZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXkqfHppOmNvZGVfcGFnZV9kZWNvZGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY29kZV9wYWdlLCAmcGJ1ZiwgJmVycm9ycywgJmZpbmFsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY29uc3VtZWQgPSBwYnVmLmxlbjsKKworICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlQ29kZVBhZ2VTdGF0ZWZ1bChjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBidWYuYnVmLCBwYnVmLmxlbiwgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCA/IE5VTEwgOiAmY29uc3VtZWQpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIGlmIChkZWNvZGVkID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBjb2RlY190dXBsZShkZWNvZGVkLCBjb25zdW1lZCk7Cit9CisKKyNlbmRpZiAvKiBIQVZFX01CQ1MgKi8KIAogLyogLS0tIEVuY29kZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTY0NSwxNyArNjc1LDMxIEBACiAgICAgUHlPYmplY3QgKm9iajsKICAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOwogICAgIGNvbnN0IGNoYXIgKmRhdGE7Ci0gICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X3NzaXplX3QgbGVuLCBzaXplOworCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAidW5pY29kZV9pbnRlcm5hbCBjb2RlYyBoYXMgYmVlbiBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3x6OnVuaWNvZGVfaW50ZXJuYWxfZW5jb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9iaiwgJmVycm9ycykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0gICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfQVNfREFUQShvYmopOwotICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUob2JqKTsKLSAgICAgICAgcmV0dXJuIGNvZGVjX3R1cGxlKFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZGF0YSwgc2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIFB5X1VOSUNPREUgKnU7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIHUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShvYmosICZsZW4pOworICAgICAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBzaXplID0gbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpOworICAgICAgICByZXR1cm4gY29kZWNfdHVwbGUoUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopdSwgc2l6ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIob2JqLCAoY29uc3Qgdm9pZCAqKikmZGF0YSwgJnNpemUpKQpAQCAtNjc2LDE0ICs3MjAsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEY3KFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjcoc3RyLCAwLCAwLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTcwMCwxMiArNzQyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhzdHIsICJ1dGYtOCIsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzMwLDEzICs3NzIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlb3JkZXIpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCBieXRlb3JkZXIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTc1MywxMyArNzk0LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0VuY29kZVVURjE2KHN0ciwgZXJyb3JzLCAtMSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtNzc2LDEzICs4MTYsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArMSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMTYoc3RyLCBlcnJvcnMsICsxKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04MDcsMTMgKzg0NiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVvcmRlciksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIGJ5dGVvcmRlciksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtODMwLDEzICs4NjgsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIoc3RyLCBlcnJvcnMsIC0xKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04NTMsMTMgKzg5MCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsxKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoX1B5VW5pY29kZV9FbmNvZGVVVEYzMihzdHIsIGVycm9ycywgKzEpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTg3NiwxMSArOTEyLDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlVW5pY29kZUVzY2FwZShQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC04OTcsMTIgKzkzNCwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoc3RyKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHY7CiB9CkBAIC05MTksMTMgKzk1NiwxMiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUxhdGluMSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTk0MiwxMyArOTc4LDEyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoc3RyID09IE5VTEwpCisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHYgPSBjb2RlY190dXBsZShQeVVuaWNvZGVfRW5jb2RlQVNDSUkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSk7CisgICAgfQorICAgIHYgPSBjb2RlY190dXBsZShfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KQEAgLTk2OCwxNCArMTAwMywxMiBAQAogICAgICAgICBtYXBwaW5nID0gTlVMTDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChzdHIgPT0gTlVMTCB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA8IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNoYXJtYXAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzdHIpKTsKKyAgICB9CisgICAgdiA9IGNvZGVjX3R1cGxlKF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIHJldHVybiB2OwogfQpAQCAtOTg5LDcgKzEwMjIsNyBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcChtYXApOwogfQogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtYmNzX2VuY29kZShQeU9iamVjdCAqc2VsZiwKQEAgLTEwMDMsMTggKzEwMzYsNDIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIpOwotICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICBpZiAoc3RyID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYoc3RyKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGNvZGVjX3R1cGxlKFB5VW5pY29kZV9FbmNvZGVNQkNTKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cikpOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgc3RyLCBlcnJvcnMpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICByZXR1cm4gdjsKIH0KIAotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitjb2RlX3BhZ2VfZW5jb2RlKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc3RyLCAqdjsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIGludCBjb2RlX3BhZ2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPfHo6Y29kZV9wYWdlX2VuY29kZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2RlX3BhZ2UsICZzdHIsICZlcnJvcnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CisgICAgaWYgKHN0ciA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpIDwgMCkgeworICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB2ID0gY29kZWNfdHVwbGUoUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiB2OworfQorCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBFcnJvciBoYW5kbGVyIHJlZ2lzdHJ5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCkBAIC0xMTAxLDkgKzExNTgsMTEgQEAKICAgICB7ImNoYXJtYXBfZGVjb2RlIiwgICAgICAgICAgY2hhcm1hcF9kZWNvZGUsICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY2hhcm1hcF9idWlsZCIsICAgICAgICAgICBjaGFybWFwX2J1aWxkLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkYnVmZmVyX2VuY29kZSIsICAgICAgIHJlYWRidWZmZXJfZW5jb2RlLCAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKKyNpZmRlZiBIQVZFX01CQ1MKICAgICB7Im1iY3NfZW5jb2RlIiwgICAgICAgICAgICAgbWJjc19lbmNvZGUsICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHsibWJjc19kZWNvZGUiLCAgICAgICAgICAgICBtYmNzX2RlY29kZSwgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJjb2RlX3BhZ2VfZW5jb2RlIiwgICAgICAgIGNvZGVfcGFnZV9lbmNvZGUsICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImNvZGVfcGFnZV9kZWNvZGUiLCAgICAgICAgY29kZV9wYWdlX2RlY29kZSwgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCiAgICAgeyJyZWdpc3Rlcl9lcnJvciIsICAgICAgICAgIHJlZ2lzdGVyX2Vycm9yLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTLAogICAgICAgICByZWdpc3Rlcl9lcnJvcl9fZG9jX199LApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKaW5kZXggMzE0YmFmZC4uZDY4OTljMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCkBAIC03NjcsOCArNzY3LDkgQEAKIGRlcXVlX3JlZHVjZShkZXF1ZW9iamVjdCAqZGVxdWUpCiB7CiAgICAgUHlPYmplY3QgKmRpY3QsICpyZXN1bHQsICphc2xpc3Q7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCi0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopZGVxdWUsICJfX2RpY3RfXyIpOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKWRlcXVlLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBhc2xpc3QgPSBQeVNlcXVlbmNlX0xpc3QoKFB5T2JqZWN0ICopZGVxdWUpOwpAQCAtODMyLDggKzgzMyw3IEBACiAKICAgICBpZiAoIVB5T2JqZWN0X1R5cGVDaGVjayh2LCAmZGVxdWVfdHlwZSkgfHwKICAgICAgICAgIVB5T2JqZWN0X1R5cGVDaGVjayh3LCAmZGVxdWVfdHlwZSkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgLyogU2hvcnRjdXRzICovCkBAIC0xMTQxLDYgKzExNDEsMzUgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlaXRlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlfc3NpemVfdCBpLCBpbmRleD0wOworICAgIFB5T2JqZWN0ICpkZXF1ZTsKKyAgICBkZXF1ZWl0ZXJvYmplY3QgKml0OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8biIsICZkZXF1ZV90eXBlLCAmZGVxdWUsICZpbmRleCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydCh0eXBlID09ICZkZXF1ZWl0ZXJfdHlwZSk7CisKKyAgICBpdCA9IChkZXF1ZWl0ZXJvYmplY3QqKWRlcXVlX2l0ZXIoKGRlcXVlb2JqZWN0ICopZGVxdWUpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIGNvbnN1bWUgaXRlbXMgZnJvbSB0aGUgcXVldWUgKi8KKyAgICBmb3IoaT0wOyBpPGluZGV4OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBkZXF1ZWl0ZXJfbmV4dChpdCk7CisgICAgICAgIGlmIChpdGVtKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXQtPmNvdW50ZXIpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCopaXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBkZXF1ZWl0ZXJfbGVuKGRlcXVlaXRlcm9iamVjdCAqaXQpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChpdC0+Y291bnRlcik7CkBAIC0xMTQ4LDE0ICsxMTc3LDIxIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlaXRlcl9yZWR1Y2UoZGVxdWVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGl0KSwgaXQtPmRlcXVlLCBpdC0+ZGVxdWUtPmxlbiAtIGl0LT5jb3VudGVyKTsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIGRlcXVlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pZGVxdWVpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRlcXVlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBkZXF1ZWl0ZXJfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiZGVxdWVfaXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiX2NvbGxlY3Rpb25zLl9kZXF1ZV9pdGVyYXRvciIsICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKGRlcXVlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwpAQCAtMTE4Myw2ICsxMjE5LDE2IEBACiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylkZXF1ZWl0ZXJfbmV4dCwgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGRlcXVlaXRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBkZXF1ZWl0ZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogICAgIDAsCiB9OwogCkBAIC0xMjM2LDkgKzEyODIsMzggQEAKICAgICByZXR1cm4gaXRlbTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2RlcXVlcmV2aXRlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlfc3NpemVfdCBpLCBpbmRleD0wOworICAgIFB5T2JqZWN0ICpkZXF1ZTsKKyAgICBkZXF1ZWl0ZXJvYmplY3QgKml0OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyF8biIsICZkZXF1ZV90eXBlLCAmZGVxdWUsICZpbmRleCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydCh0eXBlID09ICZkZXF1ZXJldml0ZXJfdHlwZSk7CisKKyAgICBpdCA9IChkZXF1ZWl0ZXJvYmplY3QqKWRlcXVlX3Jldml0ZXIoKGRlcXVlb2JqZWN0ICopZGVxdWUpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIGNvbnN1bWUgaXRlbXMgZnJvbSB0aGUgcXVldWUgKi8KKyAgICBmb3IoaT0wOyBpPGluZGV4OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBkZXF1ZXJldml0ZXJfbmV4dChpdCk7CisgICAgICAgIGlmIChpdGVtKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoaXQtPmNvdW50ZXIpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCopaXQ7Cit9CisKIHN0YXRpYyBQeVR5cGVPYmplY3QgZGVxdWVyZXZpdGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImRlcXVlX3JldmVyc2VfaXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIl9jb2xsZWN0aW9ucy5fZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihkZXF1ZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTEyNjYsNiArMTM0MSwxNiBAQAogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZGVxdWVyZXZpdGVyX25leHQsICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBkZXF1ZWl0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgZGVxdWVyZXZpdGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLAogfTsKIApAQCAtMTM1NCwxMyArMTQzOSwxNSBAQAogICAgIFB5T2JqZWN0ICppdGVtczsKICAgICBQeU9iamVjdCAqaXRlcjsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKwogICAgIGlmIChkZC0+ZGVmYXVsdF9mYWN0b3J5ID09IE5VTEwgfHwgZGQtPmRlZmF1bHRfZmFjdG9yeSA9PSBQeV9Ob25lKQogICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgZWxzZQogICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIGRkLT5kZWZhdWx0X2ZhY3RvcnkpOwogICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGl0ZW1zID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilkZCwgIml0ZW1zIiwgIigpIik7CisgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKWRkLCAmUHlJZF9pdGVtcywgIigpIik7CiAgICAgaWYgKGl0ZW1zID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE1NzMsMTIgKzE2NjAsOCBAQAogICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChtYXBwaW5nKSkgewogICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAga2V5ID0gUHlJdGVyX05leHQoaXQpOwotICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgb2xkdmFsID0gUHlEaWN0X0dldEl0ZW0obWFwcGluZywga2V5KTsKICAgICAgICAgICAgIGlmIChvbGR2YWwgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShtYXBwaW5nLCBrZXksIG9uZSkgPT0gLTEpCkBAIC0xNTk2LDEyICsxNjc5LDggQEAKICAgICB9IGVsc2UgewogICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAga2V5ID0gUHlJdGVyX05leHQoaXQpOwotICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkgJiYgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgb2xkdmFsID0gUHlPYmplY3RfR2V0SXRlbShtYXBwaW5nLCBrZXkpOwogICAgICAgICAgICAgaWYgKG9sZHZhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpIHx8ICFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKQEAgLTE2NzgsOSArMTc1NywxMyBAQAogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmZGVxdWVpdGVyX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZkZXF1ZWl0ZXJfdHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfZGVxdWVfaXRlcmF0b3IiLCAoUHlPYmplY3QgKikmZGVxdWVpdGVyX3R5cGUpOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmZGVxdWVyZXZpdGVyX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKCZkZXF1ZXJldml0ZXJfdHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJfZGVxdWVfcmV2ZXJzZV9pdGVyYXRvciIsIChQeU9iamVjdCAqKSZkZXF1ZXJldml0ZXJfdHlwZSk7CiAKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY3J5cHRtb2R1bGUuYyBiL01vZHVsZXMvX2NyeXB0bW9kdWxlLmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTW9kdWxlcy9jcnlwdG1vZHVsZS5jCnJlbmFtZSB0byBNb2R1bGVzL19jcnlwdG1vZHVsZS5jCmluZGV4IGQ1YTQyZmYuLjUxMDA3ODggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY3J5cHRtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jcnlwdG1vZHVsZS5jCkBAIC00NSw3ICs0NSw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgY3J5cHRtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJjcnlwdCIsCisgICAgIl9jcnlwdCIsCiAgICAgTlVMTCwKICAgICAtMSwKICAgICBjcnlwdF9tZXRob2RzLApAQCAtNTYsNyArNTYsNyBAQAogfTsKIAogUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9jcnlwdCh2b2lkKQorUHlJbml0X19jcnlwdCh2b2lkKQogewogICAgIHJldHVybiBQeU1vZHVsZV9DcmVhdGUoJmNyeXB0bW9kdWxlKTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Nzdi5jIGIvTW9kdWxlcy9fY3N2LmMKaW5kZXggODhkNGY5Ny4uY2M4N2JhZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3N2LmMKKysrIGIvTW9kdWxlcy9fY3N2LmMKQEAgLTE2LDkgKzE2LDM5IEBACiAjZGVmaW5lIElTX0JBU0VTVFJJTkcobykgXAogICAgIFB5VW5pY29kZV9DaGVjayhvKQogCi1zdGF0aWMgUHlPYmplY3QgKmVycm9yX29iajsgICAgIC8qIENTViBleGNlcHRpb24gKi8KLXN0YXRpYyBQeU9iamVjdCAqZGlhbGVjdHM7ICAgICAgLyogRGlhbGVjdCByZWdpc3RyeSAqLwotc3RhdGljIGxvbmcgZmllbGRfbGltaXQgPSAxMjggKiAxMDI0OyAgIC8qIG1heCBwYXJzZWQgZmllbGQgc2l6ZSAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICplcnJvcl9vYmo7ICAgLyogQ1NWIGV4Y2VwdGlvbiAqLworICAgIFB5T2JqZWN0ICpkaWFsZWN0czsgICAvKiBEaWFsZWN0IHJlZ2lzdHJ5ICovCisgICAgbG9uZyBmaWVsZF9saW1pdDsgICAvKiBtYXggcGFyc2VkIGZpZWxkIHNpemUgKi8KK30gX2NzdnN0YXRlOworCisjZGVmaW5lIF9jc3ZzdGF0ZShvKSAoKF9jc3ZzdGF0ZSAqKVB5TW9kdWxlX0dldFN0YXRlKG8pKQorCitzdGF0aWMgaW50CitfY3N2X2NsZWFyKFB5T2JqZWN0ICptKQoreworICAgIFB5X0NMRUFSKF9jc3ZzdGF0ZShtKS0+ZXJyb3Jfb2JqKTsKKyAgICBQeV9DTEVBUihfY3N2c3RhdGUobSktPmRpYWxlY3RzKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2Nzdl90cmF2ZXJzZShQeU9iamVjdCAqbSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoX2NzdnN0YXRlKG0pLT5lcnJvcl9vYmopOworICAgIFB5X1ZJU0lUKF9jc3ZzdGF0ZShtKS0+ZGlhbGVjdHMpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX2Nzdl9mcmVlKHZvaWQgKm0pCit7CisgICBfY3N2X2NsZWFyKChQeU9iamVjdCAqKW0pOworfQorCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9jc3Ztb2R1bGU7CisKKyNkZWZpbmUgX2NzdnN0YXRlX2dsb2JhbCAoKF9jc3ZzdGF0ZSAqKVB5TW9kdWxlX0dldFN0YXRlKFB5U3RhdGVfRmluZE1vZHVsZSgmX2Nzdm1vZHVsZSkpKQogCiB0eXBlZGVmIGVudW0gewogICAgIFNUQVJUX1JFQ09SRCwgU1RBUlRfRklFTEQsIEVTQ0FQRURfQ0hBUiwgSU5fRklFTEQsCkBAIC00Nyw5ICs3Nyw5IEBACiAgICAgUHlPYmplY3RfSEVBRAogCiAgICAgaW50IGRvdWJsZXF1b3RlOyAgICAgICAgICAgIC8qIGlzICIgcmVwcmVzZW50ZWQgYnkgIiI/ICovCi0gICAgUHlfVU5JQ09ERSBkZWxpbWl0ZXI7ICAgICAgIC8qIGZpZWxkIHNlcGFyYXRvciAqLwotICAgIFB5X1VOSUNPREUgcXVvdGVjaGFyOyAgICAgICAvKiBxdW90ZSBjaGFyYWN0ZXIgKi8KLSAgICBQeV9VTklDT0RFIGVzY2FwZWNoYXI7ICAgICAgLyogZXNjYXBlIGNoYXJhY3RlciAqLworICAgIFB5X1VDUzQgZGVsaW1pdGVyOyAgICAgICAvKiBmaWVsZCBzZXBhcmF0b3IgKi8KKyAgICBQeV9VQ1M0IHF1b3RlY2hhcjsgICAgICAgLyogcXVvdGUgY2hhcmFjdGVyICovCisgICAgUHlfVUNTNCBlc2NhcGVjaGFyOyAgICAgIC8qIGVzY2FwZSBjaGFyYWN0ZXIgKi8KICAgICBpbnQgc2tpcGluaXRpYWxzcGFjZTsgICAgICAgLyogaWdub3JlIHNwYWNlcyBmb2xsb3dpbmcgZGVsaW1pdGVyPyAqLwogICAgIFB5T2JqZWN0ICpsaW5ldGVybWluYXRvcjsgLyogc3RyaW5nIHRvIHdyaXRlIGJldHdlZW4gcmVjb3JkcyAqLwogICAgIGludCBxdW90aW5nOyAgICAgICAgICAgICAgICAvKiBzdHlsZSBvZiBxdW90aW5nIHRvIHdyaXRlICovCkBAIC02OCw3ICs5OCw3IEBACiAKICAgICBQeU9iamVjdCAqZmllbGRzOyAgICAgICAgICAgLyogZmllbGQgbGlzdCBmb3IgY3VycmVudCByZWNvcmQgKi8KICAgICBQYXJzZXJTdGF0ZSBzdGF0ZTsgICAgICAgICAgLyogY3VycmVudCBDU1YgcGFyc2Ugc3RhdGUgKi8KLSAgICBQeV9VTklDT0RFICpmaWVsZDsgICAgICAgICAgLyogYnVpbGQgY3VycmVudCBmaWVsZCBpbiBoZXJlICovCisgICAgUHlfVUNTNCAqZmllbGQ7ICAgICAgICAgICAgIC8qIHRlbXBvcmFyeSBidWZmZXIgKi8KICAgICBQeV9zc2l6ZV90IGZpZWxkX3NpemU7ICAgICAgLyogc2l6ZSBvZiBhbGxvY2F0ZWQgYnVmZmVyICovCiAgICAgUHlfc3NpemVfdCBmaWVsZF9sZW47ICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IGZpZWxkICovCiAgICAgaW50IG51bWVyaWNfZmllbGQ7ICAgICAgICAgIC8qIHRyZWF0IGZpZWxkIGFzIG51bWVyaWMgKi8KQEAgLTg2LDcgKzExNiw3IEBACiAKICAgICBEaWFsZWN0T2JqICpkaWFsZWN0OyAgICAvKiBwYXJzaW5nIGRpYWxlY3QgKi8KIAotICAgIFB5X1VOSUNPREUgKnJlYzsgICAgICAgICAgICAvKiBidWZmZXIgZm9yIHBhcnNlci5qb2luICovCisgICAgUHlfVUNTNCAqcmVjOyAgICAgICAgICAgIC8qIGJ1ZmZlciBmb3IgcGFyc2VyLmpvaW4gKi8KICAgICBQeV9zc2l6ZV90IHJlY19zaXplOyAgICAgICAgLyogc2l6ZSBvZiBhbGxvY2F0ZWQgcmVjb3JkICovCiAgICAgUHlfc3NpemVfdCByZWNfbGVuOyAgICAgICAgIC8qIGxlbmd0aCBvZiByZWNvcmQgKi8KICAgICBpbnQgbnVtX2ZpZWxkczsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGZpZWxkcyBpbiByZWNvcmQgKi8KQEAgLTEwMywxMCArMTMzLDEwIEBACiB7CiAgICAgUHlPYmplY3QgKmRpYWxlY3Rfb2JqOwogCi0gICAgZGlhbGVjdF9vYmogPSBQeURpY3RfR2V0SXRlbShkaWFsZWN0cywgbmFtZV9vYmopOworICAgIGRpYWxlY3Rfb2JqID0gUHlEaWN0X0dldEl0ZW0oX2NzdnN0YXRlX2dsb2JhbC0+ZGlhbGVjdHMsIG5hbWVfb2JqKTsKICAgICBpZiAoZGlhbGVjdF9vYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAidW5rbm93biBkaWFsZWN0Iik7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAidW5rbm93biBkaWFsZWN0Iik7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKGRpYWxlY3Rfb2JqKTsKQEAgLTEyMSwxNCArMTUxLDE0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1nZXRfbnVsbGNoYXJfYXNfTm9uZShQeV9VTklDT0RFIGMpCitnZXRfbnVsbGNoYXJfYXNfTm9uZShQeV9VQ1M0IGMpCiB7CiAgICAgaWYgKGMgPT0gJ1wwJykgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoKFB5X1VOSUNPREUgKikmYywgMSk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoYyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMDMsMjUgKzIzMywyMyBAQAogfQogCiBzdGF0aWMgaW50Ci1fc2V0X2NoYXIoY29uc3QgY2hhciAqbmFtZSwgUHlfVU5JQ09ERSAqdGFyZ2V0LCBQeU9iamVjdCAqc3JjLCBQeV9VTklDT0RFIGRmbHQpCitfc2V0X2NoYXIoY29uc3QgY2hhciAqbmFtZSwgUHlfVUNTNCAqdGFyZ2V0LCBQeU9iamVjdCAqc3JjLCBQeV9VQ1M0IGRmbHQpCiB7CiAgICAgaWYgKHNyYyA9PSBOVUxMKQogICAgICAgICAqdGFyZ2V0ID0gZGZsdDsKICAgICBlbHNlIHsKICAgICAgICAgKnRhcmdldCA9ICdcMCc7CiAgICAgICAgIGlmIChzcmMgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqYnVmOwogICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICBidWYgPSBQeVVuaWNvZGVfQXNVbmljb2RlKHNyYyk7Ci0gICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR2V0U2l6ZShzcmMpOwotICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMIHx8IGxlbiA+IDEpIHsKKyAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HZXRMZW5ndGgoc3JjKTsKKyAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIlwiJXNcIiBtdXN0IGJlIGFuIDEtY2hhcmFjdGVyIHN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChsZW4gPiAwKQotICAgICAgICAgICAgICAgICp0YXJnZXQgPSBidWZbMF07CisgICAgICAgICAgICAgICAgKnRhcmdldCA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3JjLCAwKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKQEAgLTUwMiw3ICs1MzAsOCBAQAogewogICAgIFB5T2JqZWN0ICpmaWVsZDsKIAotICAgIGZpZWxkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPmZpZWxkLCBzZWxmLT5maWVsZF9sZW4pOworICAgIGZpZWxkID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgc2VsZi0+ZmllbGQsIHNlbGYtPmZpZWxkX2xlbik7CiAgICAgaWYgKGZpZWxkID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBzZWxmLT5maWVsZF9sZW4gPSAwOwpAQCAtNTExLDExICs1NDAsOSBAQAogCiAgICAgICAgIHNlbGYtPm51bWVyaWNfZmllbGQgPSAwOwogICAgICAgICB0bXAgPSBQeU51bWJlcl9GbG9hdChmaWVsZCk7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoZmllbGQpOworICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGZpZWxkID0gdG1wOwogICAgIH0KICAgICBQeUxpc3RfQXBwZW5kKHNlbGYtPmZpZWxkcywgZmllbGQpOwpAQCAtNTMwLDE2ICs1NTcsMTYgQEAKICAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSA9IDQwOTY7CiAgICAgICAgIGlmIChzZWxmLT5maWVsZCAhPSBOVUxMKQogICAgICAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5maWVsZCk7Ci0gICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fTmV3KFB5X1VOSUNPREUsIHNlbGYtPmZpZWxkX3NpemUpOworICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX05ldyhQeV9VQ1M0LCBzZWxmLT5maWVsZF9zaXplKTsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5X1VDUzQgKmZpZWxkID0gc2VsZi0+ZmllbGQ7CiAgICAgICAgIGlmIChzZWxmLT5maWVsZF9zaXplID4gUFlfU1NJWkVfVF9NQVggLyAyKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSAqPSAyOwotICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX1Jlc2l6ZShzZWxmLT5maWVsZCwgUHlfVU5JQ09ERSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSk7CisgICAgICAgIHNlbGYtPmZpZWxkID0gUHlNZW1fUmVzaXplKGZpZWxkLCBQeV9VQ1M0LCBzZWxmLT5maWVsZF9zaXplKTsKICAgICB9CiAgICAgaWYgKHNlbGYtPmZpZWxkID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTU0OSwxMSArNTc2LDExIEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX2FkZF9jaGFyKFJlYWRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSBjKQorcGFyc2VfYWRkX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VQ1M0IGMpCiB7Ci0gICAgaWYgKHNlbGYtPmZpZWxkX2xlbiA+PSBmaWVsZF9saW1pdCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAiZmllbGQgbGFyZ2VyIHRoYW4gZmllbGQgbGltaXQgKCVsZCkiLAotICAgICAgICAgICAgICAgICAgICAgZmllbGRfbGltaXQpOworICAgIGlmIChzZWxmLT5maWVsZF9sZW4gPj0gX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwgImZpZWxkIGxhcmdlciB0aGFuIGZpZWxkIGxpbWl0ICglbGQpIiwKKyAgICAgICAgICAgICAgICAgICAgIF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoc2VsZi0+ZmllbGRfbGVuID09IHNlbGYtPmZpZWxkX3NpemUgJiYgIXBhcnNlX2dyb3dfYnVmZihzZWxmKSkKQEAgLTU2Myw3ICs1OTAsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1wYXJzZV9wcm9jZXNzX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VTklDT0RFIGMpCitwYXJzZV9wcm9jZXNzX2NoYXIoUmVhZGVyT2JqICpzZWxmLCBQeV9VQ1M0IGMpCiB7CiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdCA9IHNlbGYtPmRpYWxlY3Q7CiAKQEAgLTcxMCw3ICs3MzcsNyBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogaWxsZWdhbCAqLwotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgIiclYycgZXhwZWN0ZWQgYWZ0ZXIgJyVjJyIsCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAiJyVjJyBleHBlY3RlZCBhZnRlciAnJWMnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0LT5kZWxpbWl0ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbGVjdC0+cXVvdGVjaGFyKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTcyMyw3ICs3NTAsNyBAQAogICAgICAgICBlbHNlIGlmIChjID09ICdcMCcpCiAgICAgICAgICAgICBzZWxmLT5zdGF0ZSA9IFNUQVJUX1JFQ09SRDsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAibmV3LWxpbmUgY2hhcmFjdGVyIHNlZW4gaW4gdW5xdW90ZWQgZmllbGQgLSBkbyB5b3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGluIHVuaXZlcnNhbC1uZXdsaW5lIG1vZGU/Iik7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLCAibmV3LWxpbmUgY2hhcmFjdGVyIHNlZW4gaW4gdW5xdW90ZWQgZmllbGQgLSBkbyB5b3UgbmVlZCB0byBvcGVuIHRoZSBmaWxlIGluIHVuaXZlcnNhbC1uZXdsaW5lIG1vZGU/Iik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC03NDgsMTAgKzc3NSwxMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFJlYWRlcl9pdGVybmV4dChSZWFkZXJPYmogKnNlbGYpCiB7Ci0gICAgUHlPYmplY3QgKmxpbmVvYmo7CiAgICAgUHlPYmplY3QgKmZpZWxkcyA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqbGluZSwgYzsKLSAgICBQeV9zc2l6ZV90IGxpbmVsZW47CisgICAgUHlfVUNTNCBjOworICAgIFB5X3NzaXplX3QgcG9zLCBsaW5lbGVuOworICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlPYmplY3QgKmxpbmVvYmo7CiAKICAgICBpZiAocGFyc2VfcmVzZXQoc2VsZikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc2MiwxNCArNzkxLDE1IEBACiAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkgJiYgKHNlbGYtPmZpZWxkX2xlbiAhPSAwIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0YXRlID09IElOX1FVT1RFRF9GSUVMRCkpIHsKICAgICAgICAgICAgICAgICBpZiAoc2VsZi0+ZGlhbGVjdC0+c3RyaWN0KQotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoZXJyb3Jfb2JqLCAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSIpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZV9zYXZlX2ZpZWxkKHNlbGYpID49IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sobGluZW9iaikpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYXRvciBzaG91bGQgcmV0dXJuIHN0cmluZ3MsICIKICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICUuMjAwcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIihkaWQgeW91IG9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlPykiLApAQCAtNzc5LDE3ICs4MDksMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgICsrc2VsZi0+bGluZV9udW07Ci0gICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfQXNVbmljb2RlKGxpbmVvYmopOwotICAgICAgICBsaW5lbGVuID0gUHlVbmljb2RlX0dldFNpemUobGluZW9iaik7Ci0gICAgICAgIGlmIChsaW5lID09IE5VTEwgfHwgbGluZWxlbiA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lb2JqKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChsaW5lb2JqKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGxpbmVvYmopOworICAgICAgICBwb3MgPSAwOworICAgICAgICBsaW5lbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGluZW9iaik7CiAgICAgICAgIHdoaWxlIChsaW5lbGVuLS0pIHsKLSAgICAgICAgICAgIGMgPSAqbGluZSsrOworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnXDAnKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChlcnJvcl9vYmosCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUgY29udGFpbnMgTlVMTCBieXRlIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICB9CkBAIC03OTcsNiArODI1LDcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7CiAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBwb3MrKzsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYobGluZW9iaik7CiAgICAgICAgIGlmIChwYXJzZV9wcm9jZXNzX2NoYXIoc2VsZiwgMCkgPCAwKQpAQCAtOTUzLDEzICs5ODIsMTMgQEAKICAqIHJlY29yZCBsZW5ndGguCiAgKi8KIHN0YXRpYyBQeV9zc2l6ZV90Ci1qb2luX2FwcGVuZF9kYXRhKFdyaXRlck9iaiAqc2VsZiwgUHlfVU5JQ09ERSAqZmllbGQsIGludCBxdW90ZV9lbXB0eSwKLSAgICAgICAgICAgICAgICAgaW50ICpxdW90ZWQsIGludCBjb3B5X3BoYXNlKQoram9pbl9hcHBlbmRfZGF0YShXcml0ZXJPYmogKnNlbGYsIHVuc2lnbmVkIGludCBmaWVsZF9raW5kLCB2b2lkICpmaWVsZF9kYXRhLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiwgaW50IHF1b3RlX2VtcHR5LCBpbnQgKnF1b3RlZCwKKyAgICAgICAgICAgICAgICAgaW50IGNvcHlfcGhhc2UpCiB7CiAgICAgRGlhbGVjdE9iaiAqZGlhbGVjdCA9IHNlbGYtPmRpYWxlY3Q7CiAgICAgaW50IGk7CiAgICAgUHlfc3NpemVfdCByZWNfbGVuOwotICAgIFB5X1VOSUNPREUgKmxpbmV0ZXJtOwogCiAjZGVmaW5lIEFERENIKGMpIFwKICAgICBkbyB7XApAQCAtOTY4LDEwICs5OTcsNiBAQAogICAgICAgICByZWNfbGVuKys7XAogICAgIH0gd2hpbGUoMCkKIAotICAgIGxpbmV0ZXJtID0gUHlVbmljb2RlX0FzVW5pY29kZShkaWFsZWN0LT5saW5ldGVybWluYXRvcik7Ci0gICAgaWYgKGxpbmV0ZXJtID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLQogICAgIHJlY19sZW4gPSBzZWxmLT5yZWNfbGVuOwogCiAgICAgLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IGZpZWxkIHdlIG5lZWQgYSBmaWVsZCBzZXBhcmF0b3IgKi8KQEAgLTk4NCwxNyArMTAwOSwxNiBAQAogCiAgICAgLyogQ29weS9jb3VudCBmaWVsZCBkYXRhICovCiAgICAgLyogSWYgZmllbGQgaXMgbnVsbCBqdXN0IHBhc3Mgb3ZlciAqLwotICAgIGZvciAoaSA9IDA7IGZpZWxkOyBpKyspIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjID0gZmllbGRbaV07CisgICAgZm9yIChpID0gMDsgZmllbGRfZGF0YSAmJiAoaSA8IGZpZWxkX2xlbik7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBpKTsKICAgICAgICAgaW50IHdhbnRfZXNjYXBlID0gMDsKIAotICAgICAgICBpZiAoYyA9PSAnXDAnKQotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgaWYgKGMgPT0gZGlhbGVjdC0+ZGVsaW1pdGVyIHx8CiAgICAgICAgICAgICBjID09IGRpYWxlY3QtPmVzY2FwZWNoYXIgfHwKICAgICAgICAgICAgIGMgPT0gZGlhbGVjdC0+cXVvdGVjaGFyICB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9zdHJjaHIobGluZXRlcm0sIGMpKSB7CisgICAgICAgICAgICBQeVVuaWNvZGVfRmluZENoYXIoCisgICAgICAgICAgICAgICAgZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IsIGMsIDAsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpLCAxKSA+PSAwKSB7CiAgICAgICAgICAgICBpZiAoZGlhbGVjdC0+cXVvdGluZyA9PSBRVU9URV9OT05FKQogICAgICAgICAgICAgICAgIHdhbnRfZXNjYXBlID0gMTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMTAwOSw3ICsxMDMzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh3YW50X2VzY2FwZSkgewogICAgICAgICAgICAgICAgIGlmICghZGlhbGVjdC0+ZXNjYXBlY2hhcikgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2NzdnN0YXRlX2dsb2JhbC0+ZXJyb3Jfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5lZWQgdG8gZXNjYXBlLCBidXQgbm8gZXNjYXBlY2hhciBzZXQiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KQEAgLTEwMjUsNyArMTA0OSw3IEBACiAgICAgICovCiAgICAgaWYgKGkgPT0gMCAmJiBxdW90ZV9lbXB0eSkgewogICAgICAgICBpZiAoZGlhbGVjdC0+cXVvdGluZyA9PSBRVU9URV9OT05FKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLAorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KF9jc3ZzdGF0ZV9nbG9iYWwtPmVycm9yX29iaiwKICAgICAgICAgICAgICAgICAic2luZ2xlIGVtcHR5IGZpZWxkIHJlY29yZCBtdXN0IGJlIHF1b3RlZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC0xMDU3LDE0ICsxMDgxLDEzIEBACiAgICAgICAgICAgICBzZWxmLT5yZWNfc2l6ZSA9IChyZWNfbGVuIC8gTUVNX0lOQ1IgKyAxKSAqIE1FTV9JTkNSOwogICAgICAgICAgICAgaWYgKHNlbGYtPnJlYyAhPSBOVUxMKQogICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoc2VsZi0+cmVjKTsKLSAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX05ldyhQeV9VTklDT0RFLCBzZWxmLT5yZWNfc2l6ZSk7CisgICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9OZXcoUHlfVUNTNCwgc2VsZi0+cmVjX3NpemUpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVU5JQ09ERSogb2xkX3JlYyA9IHNlbGYtPnJlYzsKKyAgICAgICAgICAgIFB5X1VDUzQqIG9sZF9yZWMgPSBzZWxmLT5yZWM7CiAKICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplID0gKHJlY19sZW4gLyBNRU1fSU5DUiArIDEpICogTUVNX0lOQ1I7Ci0gICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9SZXNpemUoc2VsZi0+cmVjLCBQeV9VTklDT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnJlY19zaXplKTsKKyAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX1Jlc2l6ZShvbGRfcmVjLCBQeV9VQ1M0LCBzZWxmLT5yZWNfc2l6ZSk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+cmVjID09IE5VTEwpCiAgICAgICAgICAgICAgICAgUHlNZW1fRnJlZShvbGRfcmVjKTsKICAgICAgICAgfQpAQCAtMTA3NywxMSArMTEwMCwyMCBAQAogfQogCiBzdGF0aWMgaW50Ci1qb2luX2FwcGVuZChXcml0ZXJPYmogKnNlbGYsIFB5X1VOSUNPREUgKmZpZWxkLCBpbnQgKnF1b3RlZCwgaW50IHF1b3RlX2VtcHR5KQoram9pbl9hcHBlbmQoV3JpdGVyT2JqICpzZWxmLCBQeU9iamVjdCAqZmllbGQsIGludCAqcXVvdGVkLCBpbnQgcXVvdGVfZW1wdHkpCiB7CisgICAgdW5zaWduZWQgaW50IGZpZWxkX2tpbmQgPSAtMTsKKyAgICB2b2lkICpmaWVsZF9kYXRhID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGZpZWxkX2xlbiA9IDA7CiAgICAgUHlfc3NpemVfdCByZWNfbGVuOwogCi0gICAgcmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGQsIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDApOworICAgIGlmIChmaWVsZCAhPSBOVUxMKSB7CisgICAgICAgIGZpZWxkX2tpbmQgPSBQeVVuaWNvZGVfS0lORChmaWVsZCk7CisgICAgICAgIGZpZWxkX2RhdGEgPSBQeVVuaWNvZGVfREFUQShmaWVsZCk7CisgICAgICAgIGZpZWxkX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGZpZWxkKTsKKyAgICB9CisgICAgcmVjX2xlbiA9IGpvaW5fYXBwZW5kX2RhdGEoc2VsZiwgZmllbGRfa2luZCwgZmllbGRfZGF0YSwgZmllbGRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1b3RlX2VtcHR5LCBxdW90ZWQsIDApOwogICAgIGlmIChyZWNfbGVuIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEwODksNyArMTEyMSw4IEBACiAgICAgaWYgKCFqb2luX2NoZWNrX3JlY19zaXplKHNlbGYsIHJlY19sZW4pKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHNlbGYtPnJlY19sZW4gPSBqb2luX2FwcGVuZF9kYXRhKHNlbGYsIGZpZWxkLCBxdW90ZV9lbXB0eSwgcXVvdGVkLCAxKTsKKyAgICBzZWxmLT5yZWNfbGVuID0gam9pbl9hcHBlbmRfZGF0YShzZWxmLCBmaWVsZF9raW5kLCBmaWVsZF9kYXRhLCBmaWVsZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVfZW1wdHksIHF1b3RlZCwgMSk7CiAgICAgc2VsZi0+bnVtX2ZpZWxkcysrOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xMDk4LDEwICsxMTMxLDExIEBACiBzdGF0aWMgaW50CiBqb2luX2FwcGVuZF9saW5ldGVybWluYXRvcihXcml0ZXJPYmogKnNlbGYpCiB7Ci0gICAgUHlfc3NpemVfdCB0ZXJtaW5hdG9yX2xlbjsKLSAgICBQeV9VTklDT0RFICp0ZXJtaW5hdG9yOworICAgIFB5X3NzaXplX3QgdGVybWluYXRvcl9sZW4sIGk7CisgICAgdW5zaWduZWQgaW50IHRlcm1fa2luZDsKKyAgICB2b2lkICp0ZXJtX2RhdGE7CiAKLSAgICB0ZXJtaW5hdG9yX2xlbiA9IFB5VW5pY29kZV9HZXRTaXplKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKKyAgICB0ZXJtaW5hdG9yX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmRpYWxlY3QtPmxpbmV0ZXJtaW5hdG9yKTsKICAgICBpZiAodGVybWluYXRvcl9sZW4gPT0gLTEpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMTA5LDExICsxMTQzLDEwIEBACiAgICAgaWYgKCFqb2luX2NoZWNrX3JlY19zaXplKHNlbGYsIHNlbGYtPnJlY19sZW4gKyB0ZXJtaW5hdG9yX2xlbikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgdGVybWluYXRvciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOwotICAgIGlmICh0ZXJtaW5hdG9yID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIG1lbW1vdmUoc2VsZi0+cmVjICsgc2VsZi0+cmVjX2xlbiwgdGVybWluYXRvciwKLSAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpKnRlcm1pbmF0b3JfbGVuKTsKKyAgICB0ZXJtX2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmLT5kaWFsZWN0LT5saW5ldGVybWluYXRvcik7CisgICAgdGVybV9kYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZi0+ZGlhbGVjdC0+bGluZXRlcm1pbmF0b3IpOworICAgIGZvciAoaSA9IDA7IGkgPCB0ZXJtaW5hdG9yX2xlbjsgaSsrKQorICAgICAgICBzZWxmLT5yZWNbc2VsZi0+cmVjX2xlbiArIGldID0gUHlVbmljb2RlX1JFQUQodGVybV9raW5kLCB0ZXJtX2RhdGEsIGkpOwogICAgIHNlbGYtPnJlY19sZW4gKz0gdGVybWluYXRvcl9sZW47CiAKICAgICByZXR1cm4gMTsKQEAgLTExMzAsOSArMTE2MywxMCBAQAogewogICAgIERpYWxlY3RPYmogKmRpYWxlY3QgPSBzZWxmLT5kaWFsZWN0OwogICAgIFB5X3NzaXplX3QgbGVuLCBpOworICAgIFB5T2JqZWN0ICpsaW5lLCAqcmVzdWx0OwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoZXJyb3Jfb2JqLCAic2VxdWVuY2UgZXhwZWN0ZWQiKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJzZXF1ZW5jZSBleHBlY3RlZCIpOwogCiAgICAgbGVuID0gUHlTZXF1ZW5jZV9MZW5ndGgoc2VxKTsKICAgICBpZiAobGVuIDwgMCkKQEAgLTExNjMsMTQgKzExOTcsMTEgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soZmllbGQpKSB7Ci0gICAgICAgICAgICBhcHBlbmRfb2sgPSBqb2luX2FwcGVuZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoZmllbGQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgZmllbGQsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZmllbGQgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICZxdW90ZWQsIGxlbiA9PSAxKTsKKyAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsIE5VTEwsICZxdW90ZWQsIGxlbiA9PSAxKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWVsZCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0xMTgwLDkgKzEyMTEsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGZpZWxkKTsKICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGFwcGVuZF9vayA9IGpvaW5fYXBwZW5kKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnF1b3RlZCwgbGVuID09IDEpOworICAgICAgICAgICAgYXBwZW5kX29rID0gam9pbl9hcHBlbmQoc2VsZiwgc3RyLCAmcXVvdGVkLCBsZW4gPT0gMSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIWFwcGVuZF9vaykKQEAgLTExOTQsOSArMTIyMywxMyBAQAogICAgIGlmICgham9pbl9hcHBlbmRfbGluZXRlcm1pbmF0b3Ioc2VsZikpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT53cml0ZWxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHUjKSIsIHNlbGYtPnJlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnJlY19sZW4pOworICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopIHNlbGYtPnJlYywgc2VsZi0+cmVjX2xlbik7CisgICAgaWYgKGxpbmUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzZWxmLT53cml0ZWxpbmUsIGxpbmUsIE5VTEwpOworICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeURvY19TVFJWQVIoY3N2X3dyaXRlcm93c19kb2MsCkBAIC0xMzIwLDYgKzEzNTMsNyBAQAogewogICAgIFB5T2JqZWN0ICogb3V0cHV0X2ZpbGUsICogZGlhbGVjdCA9IE5VTEw7CiAgICAgV3JpdGVyT2JqICogc2VsZiA9IFB5T2JqZWN0X0dDX05ldyhXcml0ZXJPYmosICZXcml0ZXJfVHlwZSk7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMzYsNyArMTM3MCw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHNlbGYtPndyaXRlbGluZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob3V0cHV0X2ZpbGUsICJ3cml0ZSIpOworICAgIHNlbGYtPndyaXRlbGluZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0cHV0X2ZpbGUsICZQeUlkX3dyaXRlKTsKICAgICBpZiAoc2VsZi0+d3JpdGVsaW5lID09IE5VTEwgfHwgIVB5Q2FsbGFibGVfQ2hlY2soc2VsZi0+d3JpdGVsaW5lKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgbXVzdCBoYXZlIGEgXCJ3cml0ZVwiIG1ldGhvZCIpOwpAQCAtMTM1OCw3ICsxMzkyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBjc3ZfbGlzdF9kaWFsZWN0cyhQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlEaWN0X0tleXMoZGlhbGVjdHMpOworICAgIHJldHVybiBQeURpY3RfS2V5cyhfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMzc3LDcgKzE0MTEsNyBAQAogICAgIGRpYWxlY3QgPSBfY2FsbF9kaWFsZWN0KGRpYWxlY3Rfb2JqLCBrd2FyZ3MpOwogICAgIGlmIChkaWFsZWN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWFsZWN0cywgbmFtZV9vYmosIGRpYWxlY3QpIDwgMCkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cywgbmFtZV9vYmosIGRpYWxlY3QpIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoZGlhbGVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEzODksOCArMTQyMyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogY3N2X3VucmVnaXN0ZXJfZGlhbGVjdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqbmFtZV9vYmopCiB7Ci0gICAgaWYgKFB5RGljdF9EZWxJdGVtKGRpYWxlY3RzLCBuYW1lX29iaikgPCAwKQotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KGVycm9yX29iaiwgInVua25vd24gZGlhbGVjdCIpOworICAgIGlmIChQeURpY3RfRGVsSXRlbShfY3N2c3RhdGVfZ2xvYmFsLT5kaWFsZWN0cywgbmFtZV9vYmopIDwgMCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdChfY3N2c3RhdGVfZ2xvYmFsLT5lcnJvcl9vYmosICJ1bmtub3duIGRpYWxlY3QiKTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CkBAIC0xNDA1LDcgKzE0MzksNyBAQAogY3N2X2ZpZWxkX3NpemVfbGltaXQoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKm5ld19saW1pdCA9IE5VTEw7Ci0gICAgbG9uZyBvbGRfbGltaXQgPSBmaWVsZF9saW1pdDsKKyAgICBsb25nIG9sZF9saW1pdCA9IF9jc3ZzdGF0ZV9nbG9iYWwtPmZpZWxkX2xpbWl0OwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZmllbGRfc2l6ZV9saW1pdCIsIDAsIDEsICZuZXdfbGltaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0MTUsOSArMTQ0OSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbWl0IG11c3QgYmUgYW4gaW50ZWdlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZmllbGRfbGltaXQgPSBQeUxvbmdfQXNMb25nKG5ld19saW1pdCk7Ci0gICAgICAgIGlmIChmaWVsZF9saW1pdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBmaWVsZF9saW1pdCA9IG9sZF9saW1pdDsKKyAgICAgICAgX2NzdnN0YXRlX2dsb2JhbC0+ZmllbGRfbGltaXQgPSBQeUxvbmdfQXNMb25nKG5ld19saW1pdCk7CisgICAgICAgIGlmIChfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBfY3N2c3RhdGVfZ2xvYmFsLT5maWVsZF9saW1pdCA9IG9sZF9saW1pdDsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQpAQCAtMTU1NiwxNyArMTU5MCwxNiBAQAogICAgIHsgTlVMTCwgTlVMTCB9CiB9OwogCi0KIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX2Nzdm1vZHVsZSA9IHsKICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCiAgICAgIl9jc3YiLAogICAgIGNzdl9tb2R1bGVfZG9jLAotICAgIC0xLAorICAgIHNpemVvZihfY3N2c3RhdGUpLAogICAgIGNzdl9tZXRob2RzLAogICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwKKyAgICBfY3N2X3RyYXZlcnNlLAorICAgIF9jc3ZfY2xlYXIsCisgICAgX2Nzdl9mcmVlCiB9OwogCiBQeU1PRElOSVRfRlVOQwpAQCAtMTU5NCwxMSArMTYyNywxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNT0RVTEVfVkVSU0lPTikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgLyogU2V0IHRoZSBmaWVsZCBsaW1pdCAqLworICAgIF9jc3ZzdGF0ZShtb2R1bGUpLT5maWVsZF9saW1pdCA9IDEyOCAqIDEwMjQ7CisgICAgLyogRG8gSSBzdGlsbCBuZWVkIHRvIGFkZCB0aGlzIHZhciB0byB0aGUgTW9kdWxlIERpY3Q/ICovCisKICAgICAvKiBBZGQgX2RpYWxlY3RzIGRpY3Rpb25hcnkgKi8KLSAgICBkaWFsZWN0cyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoZGlhbGVjdHMgPT0gTlVMTCkKKyAgICBfY3N2c3RhdGUobW9kdWxlKS0+ZGlhbGVjdHMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIl9kaWFsZWN0cyIsIGRpYWxlY3RzKSkKKyAgICBQeV9JTkNSRUYoX2NzdnN0YXRlKG1vZHVsZSktPmRpYWxlY3RzKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIl9kaWFsZWN0cyIsIF9jc3ZzdGF0ZShtb2R1bGUpLT5kaWFsZWN0cykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogQWRkIHF1b3RlIHN0eWxlcyBpbnRvIGRpY3Rpb25hcnkgKi8KQEAgLTE2MTQsOSArMTY1MiwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEFkZCB0aGUgQ1NWIGV4Y2VwdGlvbiBvYmplY3QgdG8gdGhlIG1vZHVsZS4gKi8KLSAgICBlcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oIl9jc3YuRXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBpZiAoZXJyb3Jfb2JqID09IE5VTEwpCisgICAgX2NzdnN0YXRlKG1vZHVsZSktPmVycm9yX29iaiA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX2Nzdi5FcnJvciIsIE5VTEwsIE5VTEwpOworICAgIGlmIChfY3N2c3RhdGUobW9kdWxlKS0+ZXJyb3Jfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJFcnJvciIsIGVycm9yX29iaik7CisgICAgUHlfSU5DUkVGKF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmopOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJFcnJvciIsIF9jc3ZzdGF0ZShtb2R1bGUpLT5lcnJvcl9vYmopOwogICAgIHJldHVybiBtb2R1bGU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwppbmRleCA4YmU1OTU4Li43NTE2MzA2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKQEAgLTExNDIsNiArMTE0Miw4IEBACiBXQ2hhckFycmF5X3NldF92YWx1ZShDRGF0YU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gMDsKKyAgICBQeV9VTklDT0RFICp3c3RyOworICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTExNTUsNyArMTE1NywxMSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgaWYgKCh1bnNpZ25lZClQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpID4gc2VsZi0+Yl9zaXplL3NpemVvZih3Y2hhcl90KSkgeworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmbGVuKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKCh1bnNpZ25lZClsZW4gPiBzZWxmLT5iX3NpemUvc2l6ZW9mKHdjaGFyX3QpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbG9uZyIpOwogICAgICAgICByZXN1bHQgPSAtMTsKQEAgLTE4NDMsMTEgKzE4NDksOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwcm90bykpIHsKLSAgICAgICAgUHlPYmplY3QgKnYgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocHJvdG8sIE5VTEwpOwotICAgICAgICBpZiAoIXYpCisgICAgICAgIHByb3RvX3N0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHByb3RvLCAmcHJvdG9fbGVuKTsKKyAgICAgICAgaWYgKCFwcm90b19zdHIpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBwcm90b19zdHIgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICAgICAgcHJvdG9fbGVuID0gUHlCeXRlc19HRVRfU0laRSh2KTsKICAgICB9IGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgImNsYXNzIG11c3QgZGVmaW5lIGEgJ190eXBlXycgc3RyaW5nIGF0dHJpYnV0ZSIpOwpAQCAtMzY4MSw4ICszNjg1LDEwIEBACiAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cCwgaW5kZXgsIHYpOwogICAgICAgICAgICAgaW5kZXgrKzsKICAgICAgICAgfSBlbHNlIGlmIChiaXQgJiBvdXRtYXNrKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2N0eXBlc19mcm9tX291dHBhcmFtX18pOworCiAgICAgICAgICAgICB2ID0gUHlUdXBsZV9HRVRfSVRFTShjYWxsYXJncywgaSk7Ci0gICAgICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh2LCAiX19jdHlwZXNfZnJvbV9vdXRwYXJhbV9fIiwgTlVMTCk7CisgICAgICAgICAgICB2ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh2LCAmUHlJZF9fX2N0eXBlc19mcm9tX291dHBhcmFtX18sIE5VTEwpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCB8fCBudW1yZXR2YWxzID09IDEpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOwogICAgICAgICAgICAgICAgIHJldHVybiB2OwpAQCAtNDI0OSw3ICs0MjU1LDcgQEAKICAgICAgICAgICAgIHdjaGFyX3QgKmRlc3Q7CiAKICAgICAgICAgICAgIGlmIChzbGljZWxlbiA8PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgICAgICBpZiAoc3RlcCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHRyICsgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VsZW4pOwpAQCAtNDU5OSwzOCArNDYwNSwyMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIFNpbXBsZV9yZXByKENEYXRhT2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICp2YWwsICpuYW1lLCAqYXJncywgKnJlc3VsdDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBQeU9iamVjdCAqdmFsLCAqcmVzdWx0OwogCiAgICAgaWYgKFB5X1RZUEUoc2VsZiktPnRwX2Jhc2UgIT0gJlNpbXBsZV9UeXBlKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzIG9iamVjdCBhdCAlcD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBzZWxmKTsKICAgICB9CiAKLSAgICBpZiAoZm9ybWF0ID09IE5VTEwpIHsKLSAgICAgICAgZm9ybWF0ID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIiVzKCVyKSIpOwotICAgICAgICBpZiAoZm9ybWF0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICB2YWwgPSBTaW1wbGVfZ2V0X3ZhbHVlKHNlbGYpOwogICAgIGlmICh2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7Ci0gICAgaWYgKG5hbWUgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYodmFsKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgYXJncyA9IFB5VHVwbGVfUGFjaygyLCBuYW1lLCB2YWwpOwotICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMoJVIpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCB2YWwpOwogICAgIFB5X0RFQ1JFRih2YWwpOwotICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00OTQyLDcgKzQ5MzAsNyBAQAogICAgICAgICAgICAgd2NoYXJfdCAqZGVzdDsKIAogICAgICAgICAgICAgaWYgKGxlbiA8PSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgICAgICBpZiAoc3RlcCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocHRyICsgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jYWxscHJvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKaW5kZXggMWYzYzFjMC4uZGQ0NDFmNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMKQEAgLTY1OCwxMyArNjU4LDYgQEAKIAogI2lmZGVmIENUWVBFU19VTklDT0RFCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgICAgIHBhLT5mZmlfdHlwZSA9ICZmZmlfdHlwZV9wb2ludGVyOwotICAgICAgICBwYS0+dmFsdWUucCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iaik7Ci0gICAgICAgIFB5X0lOQ1JFRihvYmopOwotICAgICAgICBwYS0+a2VlcCA9IG9iajsKLSAgICAgICAgcmV0dXJuIDA7Ci0jZWxzZQogICAgICAgICBwYS0+ZmZpX3R5cGUgPSAmZmZpX3R5cGVfcG9pbnRlcjsKICAgICAgICAgcGEtPnZhbHVlLnAgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyhvYmosIE5VTEwpOwogICAgICAgICBpZiAocGEtPnZhbHVlLnAgPT0gTlVMTCkKQEAgLTY3NSw3ICs2NjgsNiBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwotI2VuZGlmCiAgICAgfQogI2VuZGlmCiAKQEAgLTk1Miw5ICs5NDQsOSBAQAogICAgIGVsc2UgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsKCZzLCBQeVVuaWNvZGVfRnJvbVN0cmluZygiPz8/IikpOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBQeUVycl9TZXRPYmplY3QoZXhjX2NsYXNzLCBzKTsKIGVycm9yOgogICAgIFB5X1hERUNSRUYodHApOwpAQCAtMTY5NSwxMyArMTY4NywxNSBAQAogICAgIFB5T2JqZWN0ICpzdGF0ZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19zZXRzdGF0ZV9fKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmdHlwLCAmc3RhdGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHR5cCwgIl9fbmV3X18iLCAiTyIsIHR5cCk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0eXAsICZQeUlkX19fbmV3X18sICJPIiwgdHlwKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocmVzdWx0LCAiX19zZXRzdGF0ZV9fIiwgIk8iLCBzdGF0ZSk7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX19fc2V0c3RhdGVfXywgIk8iLCBzdGF0ZSk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCA5ZGE4OTBkLi5mNmY4ZTQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC05LDcgKzksNiBAQAogCiAjZGVmaW5lIENUWVBFU19DRklFTERfQ0FQU1VMRV9OQU1FX1BZTUVNICJfY3R5cGVzL2NmaWVsZC5jIHB5bWVtIgogCi0jaWYgUHlfVU5JQ09ERV9TSVpFICE9IFNJWkVPRl9XQ0hBUl9UCiBzdGF0aWMgdm9pZCBweW1lbV9kZXN0cnVjdG9yKFB5T2JqZWN0ICpwdHIpCiB7CiAgICAgdm9pZCAqcCA9IFB5Q2Fwc3VsZV9HZXRQb2ludGVyKHB0ciwgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0pOwpAQCAtMTcsNyArMTYsNiBAQAogICAgICAgICBQeU1lbV9GcmVlKHApOwogICAgIH0KIH0KLSNlbmRpZgogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC01Miw3ICs1MCw3IEBACiB7CiAgICAgQ0ZpZWxkT2JqZWN0ICpzZWxmOwogICAgIFB5T2JqZWN0ICpwcm90bzsKLSAgICBQeV9zc2l6ZV90IHNpemUsIGFsaWduLCBsZW5ndGg7CisgICAgUHlfc3NpemVfdCBzaXplLCBhbGlnbjsKICAgICBTRVRGVU5DIHNldGZ1bmMgPSBOVUxMOwogICAgIEdFVEZVTkMgZ2V0ZnVuYyA9IE5VTEw7CiAgICAgU3RnRGljdE9iamVjdCAqZGljdDsKQEAgLTEwNiw3ICsxMDQsNiBAQAogICAgIH0KIAogICAgIHNpemUgPSBkaWN0LT5zaXplOwotICAgIGxlbmd0aCA9IGRpY3QtPmxlbmd0aDsKICAgICBwcm90byA9IGRlc2M7CiAKICAgICAvKiAgRmllbGQgZGVzY3JpcHRvcnMgZm9yICdjX2NoYXIgKiBuJyBhcmUgYmUgc2NwZWNpYWwgY2FzZWQgdG8KQEAgLTEyMTQsMzcgKzEyMTEsMzAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBVX2dldCh2b2lkICpwdHIsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X3NzaXplX3QgbGVuOwotICAgIFB5X1VOSUNPREUgKnA7CisgICAgd2NoYXJfdCAqcDsKIAogICAgIHNpemUgLz0gc2l6ZW9mKHdjaGFyX3QpOyAvKiB3ZSBjb3VudCBjaGFyYWN0ZXIgdW5pdHMgaGVyZSwgbm90IGJ5dGVzICovCiAKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCh3Y2hhcl90ICopcHRyLCBzaXplKTsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgLyogV2UgbmVlZCAncmVzdWx0JyB0byBiZSBhYmxlIHRvIGNvdW50IHRoZSBjaGFyYWN0ZXJzIHdpdGggd2NzbGVuLAogICAgICAgIHNpbmNlIHB0ciBtYXkgbm90IGJlIE5VTCB0ZXJtaW5hdGVkLiAgSWYgdGhlIGxlbmd0aCBpcyBzbWFsbGVyIChpZgogICAgICAgIGl0IHdhcyBhY3R1YWxseSBOVUwgdGVybWluYXRlZCwgd2UgY29uc3RydWN0IGEgbmV3IG9uZSBhbmQgdGhyb3cKICAgICAgICBhd2F5IHRoZSByZXN1bHQuCiAgICAgKi8KICAgICAvKiBjaG9wIG9mZiBhdCB0aGUgZmlyc3QgTlVMIGNoYXJhY3RlciwgaWYgYW55LiAqLwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgIGZvciAobGVuID0gMDsgbGVuIDwgc2l6ZTsgKytsZW4pCisgICAgcCA9ICh3Y2hhcl90KilwdHI7CisgICAgZm9yIChsZW4gPSAwOyBsZW4gPCBzaXplOyArK2xlbikgewogICAgICAgICBpZiAoIXBbbGVuXSkKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgaWYgKGxlbiA8IHNpemUpIHsKLSAgICAgICAgUHlPYmplY3QgKm9iID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcigod2NoYXJfdCAqKXB0ciwgbGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBvYjsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKCh3Y2hhcl90ICopcHRyLCBsZW4pOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogVV9zZXQodm9pZCAqcHRyLCBQeU9iamVjdCAqdmFsdWUsIFB5X3NzaXplX3QgbGVuZ3RoKQogeworICAgIFB5X1VOSUNPREUgKndzdHI7CiAgICAgUHlfc3NpemVfdCBzaXplOwogCiAgICAgLyogSXQncyBlYXNpZXIgdG8gY2FsY3VsYXRlIGluIGNoYXJhY3RlcnMgdGhhbiBpbiBieXRlcyAqLwpAQCAtMTI1Nyw3ICsxMjQ3LDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHZhbHVlLCAmc2l6ZSk7CisgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPiBsZW5ndGgpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsb25nICglemQsIG1heGltdW0gbGVuZ3RoICV6ZCkiLApAQCAtMTM3Nyw2ICsxMzcwLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBaX3NldCh2b2lkICpwdHIsIFB5T2JqZWN0ICp2YWx1ZSwgUHlfc3NpemVfdCBzaXplKQogeworICAgIFB5T2JqZWN0ICprZWVwOworICAgIHdjaGFyX3QgKmJ1ZmZlcjsKKwogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKSB7CiAgICAgICAgICood2NoYXJfdCAqKilwdHIgPSBOVUxMOwogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwpAQCAtMTM5NiwzNyArMTM5MiwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGUgc3RyaW5nIG9yIGludGVnZXIgYWRkcmVzcyBleHBlY3RlZCBpbnN0ZWFkIG9mICVzIGluc3RhbmNlIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfSBlbHNlCi0gICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFID09IFNJWkVPRl9XQ0hBUl9UCi0gICAgLyogV2UgY2FuIGNvcHkgZGlyZWN0bHkuICBIbSwgYXJlIHVuaWNvZGUgb2JqZWN0cyBhbHdheXMgTlVMCi0gICAgICAgdGVybWluYXRlZCBpbiBQeXRob24sIGludGVybmFsbHk/Ci0gICAgICovCi0gICAgKih3Y2hhcl90ICoqKXB0ciA9ICh3Y2hhcl90ICopIFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKTsKLSAgICByZXR1cm4gdmFsdWU7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgLyogV2UgbXVzdCBjcmVhdGUgYSB3Y2hhcl90KiBidWZmZXIgZnJvbSB0aGUgdW5pY29kZSBvYmplY3QsCi0gICAgICAgICAgIGFuZCBrZWVwIGl0IGFsaXZlICovCi0gICAgICAgIFB5T2JqZWN0ICprZWVwOwotICAgICAgICB3Y2hhcl90ICpidWZmZXI7Ci0KLSAgICAgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcodmFsdWUsIE5VTEwpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGtlZXAgPSBQeUNhcHN1bGVfTmV3KGJ1ZmZlciwgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0sIHB5bWVtX2Rlc3RydWN0b3IpOwotICAgICAgICBpZiAoIWtlZXApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICAqKHdjaGFyX3QgKiopcHRyID0gKHdjaGFyX3QgKilidWZmZXI7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIHJldHVybiBrZWVwOwogICAgIH0KLSNlbmRpZgorCisgICAgLyogV2UgbXVzdCBjcmVhdGUgYSB3Y2hhcl90KiBidWZmZXIgZnJvbSB0aGUgdW5pY29kZSBvYmplY3QsCisgICAgICAgYW5kIGtlZXAgaXQgYWxpdmUgKi8KKyAgICBidWZmZXIgPSBQeVVuaWNvZGVfQXNXaWRlQ2hhclN0cmluZyh2YWx1ZSwgTlVMTCk7CisgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtlZXAgPSBQeUNhcHN1bGVfTmV3KGJ1ZmZlciwgQ1RZUEVTX0NGSUVMRF9DQVBTVUxFX05BTUVfUFlNRU0sIHB5bWVtX2Rlc3RydWN0b3IpOworICAgIGlmICgha2VlcCkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAqKHdjaGFyX3QgKiopcHRyID0gYnVmZmVyOworICAgIHJldHVybiBrZWVwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTQ3MSwxMyArMTQ1MCwxNiBAQAogCiAgICAgLyogY3JlYXRlIGEgQlNUUiBmcm9tIHZhbHVlICovCiAgICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh2YWx1ZSk7CisgICAgICAgIHdjaGFyX3QqIHd2YWx1ZTsKKyAgICAgICAgUHlfc3NpemVfdCBzaXplOworICAgICAgICB3dmFsdWUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh2YWx1ZSwgJnNpemUpOworICAgICAgICBpZiAod3ZhbHVlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKCh1bnNpZ25lZCkgc2l6ZSAhPSBzaXplKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlN0cmluZyB0b28gbG9uZyBmb3IgQlNUUiIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKFB5VW5pY29kZV9BU19VTklDT0RFKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZClzaXplKTsKKyAgICAgICAgYnN0ciA9IFN5c0FsbG9jU3RyaW5nTGVuKHd2YWx1ZSwgKHVuc2lnbmVkKXNpemUpOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIH0gZWxzZQogICAgICAgICBic3RyID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkuZGlmZgppbmRleCA3YWZhMGVkLi4zNTdkMGVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpLmRpZmYKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS5kaWZmCkBAIC0xLDc0ICsxLDE0IEBACi1kaWZmIC11ck4gbGliZmZpLm9yaWcvY29uZmlndXJlIGxpYmZmaS9jb25maWd1cmUKLS0tLSBsaWJmZmkub3JpZy9jb25maWd1cmUJMjAxMC0wMy0xOSAxODoyOTo1NC41ODg0OTk4NjIgKzAxMDAKLSsrKyBsaWJmZmkvY29uZmlndXJlCTIwMTAtMDMtMTkgMTg6MzI6MDkuMTEzNDk5NDc5ICswMTAwCi1AQCAtMTEyMjgsNiArMTEyMjgsOSBAQAotICAgaT84Ni0qLXNvbGFyaXMyLjFbMC05XSopCi0gCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKLSAJOzsKLSsgIGkqODYtKi1udG8tcW54KikKLSsgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKLSsgICAgICAgIDs7Ci0gICBpPzg2LSotKikKLSAJVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgotIAk7OwotQEAgLTExMjQ1LDEyICsxMTI0OCwxMiBAQAotIAk7OwotIAotICAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCi0tCVRBUkdFVD1NSVBTOyBUQVJHRVRESVI9bWlwcwotKwlUQVJHRVQ9TUlQU19JUklYOyBUQVJHRVRESVI9bWlwcwotIAk7OwotICAgbWlwcyotKi1saW51eCopCi0gCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCi0gCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwotLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKLSsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKLSAJOzsKLSAKLSAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQotQEAgLTExMzA3LDcgKzExMzEwLDcgQEAKLSAgIGFzX2ZuX2Vycm9yICJcImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LlwiIiAiJExJTkVOTyIgNQotIGZpCi0gCi0tIGlmIHRlc3QgeCRUQVJHRVQgPSB4TUlQUzsgdGhlbgotKyBpZiBleHByIHgkVEFSR0VUIDogJ3hNSVBTJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgTUlQU19UUlVFPQotICAgTUlQU19GQUxTRT0nIycKLSBlbHNlCi1AQCAtMTI0MjIsNiArMTI0MjUsMTIgQEAKLSBhY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL2ZmaS5oIE1ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBtYW4vTWFrZWZpbGUgbGliZmZpLnBjIgotIAotIAotK2FjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyBpbmNsdWRlL2ZmaV9jb21tb24uaDppbmNsdWRlL2ZmaV9jb21tb24uaCIKLSsKLSsKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgZmZpY29uZmlnLnB5IgotKwotKwotIGNhdCA+Y29uZmNhY2hlIDw8XF9BQ0VPRgotICMgVGhpcyBmaWxlIGlzIGEgc2hlbGwgc2NyaXB0IHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGNvbmZpZ3VyZQotICMgdGVzdHMgcnVuIG9uIHRoaXMgc3lzdGVtIHNvIHRoZXkgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGNvbmZpZ3VyZQotQEAgLTEzNTIxLDYgKzEzNTMwLDggQEAKLSAgICAgInRlc3RzdWl0ZS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyB0ZXN0c3VpdGUvTWFrZWZpbGUiIDs7Ci0gICAgICJtYW4vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbWFuL01ha2VmaWxlIiA7OwotICAgICAibGliZmZpLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGxpYmZmaS5wYyIgOzsKLSsgICAgImluY2x1ZGUvZmZpX2NvbW1vbi5oIikgQ09ORklHX0xJTktTPSIkQ09ORklHX0xJTktTIGluY2x1ZGUvZmZpX2NvbW1vbi5oOmluY2x1ZGUvZmZpX2NvbW1vbi5oIiA7OwotKyAgICAiZmZpY29uZmlnLnB5IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGZmaWNvbmZpZy5weSIgOzsKLSAKLSAgICopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50OiBcYCRhY19jb25maWdfdGFyZ2V0JyIgIiRMSU5FTk8iIDU7OwotICAgZXNhYwotZGlmZiAtdXJOIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZS5hYyBsaWJmZmkvY29uZmlndXJlLmFjCi0tLS0gbGliZmZpLm9yaWcvY29uZmlndXJlLmFjCTIwMTAtMDMtMTkgMTg6Mjc6NDQuOTg4NDk4NTg1ICswMTAwCi0rKysgbGliZmZpL2NvbmZpZ3VyZS5hYwkyMDEwLTAzLTE5IDE4OjMxOjI5LjI1MjUwNTE3OCArMDEwMAorLS0tIGxpYmZmaS5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTEyIDA1OjEwOjUxLjAwMDAwMDAwMCArMDIwMAorKysrIGxpYmZmaS9jb25maWd1cmUuYWMJMjAxMi0wNi0yNiAxNTo0Mjo0Mi40Nzc0OTg5MzggKzAyMDAKIEBAIC0xLDQgKzEsNyBAQAogIGRubCBQcm9jZXNzIHRoaXMgd2l0aCBhdXRvY29uZiB0byBjcmVhdGUgY29uZmlndXJlCiArIwogKyMgZmlsZSBmcm9tIGxpYmZmaSAtIHNsaWdodGx5IHBhdGNoZWQgZm9yIGN0eXBlcwogKyMKICAKLSBBQ19QUkVSRVEoMi42MykKKyBBQ19QUkVSRVEoMi42OCkKICAKLUBAIC05MSw2ICs5NCw5IEBACitAQCAtMTE0LDYgKzExNyw5IEBACiAgICBpPzg2LSotc29sYXJpczIuMVtbMC05XV0qKQogIAlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAgCTs7CkBAIC03NiwyNCArMTYsMjQgQEAKICsgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKICsgICAgICAgIDs7CiAgICBpPzg2LSotKikKLSAJVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgorIAlUQVJHRVQ9WDg2XzY0OyBUQVJHRVRESVI9eDg2CiAgCTs7Ci1AQCAtMTA4LDEyICsxMTQsMTIgQEAKK0BAIC0xMzEsMTIgKzEzNywxMiBAQAogIAk7OwogIAotICAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCisgICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKiB8IG1pcHMqLSotcnRlbXMqKQogLQlUQVJHRVQ9TUlQUzsgVEFSR0VURElSPW1pcHMKICsJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKICAJOzsKLSAgIG1pcHMqLSotbGludXgqKQorICAgbWlwcyotKi1saW51eCogfCBtaXBzKi0qLW9wZW5ic2QqKQogIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgogIAlIQVZFX0xPTkdfRE9VQkxFPSdkZWZpbmVkKF9fbWlwczY0KScKIC0JVEFSR0VUPU1JUFM7IFRBUkdFVERJUj1taXBzCiArCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAgCTs7CiAgCi0gICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKLUBAIC0xNzAsNyArMTc2LDcgQEAKKyAgIG1veGllLSotKikKK0BAIC0yMTIsNyArMjE4LDcgQEAKICAgIEFDX01TR19FUlJPUihbImxpYmZmaSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvICRob3N0LiJdKQogIGZpCiAgCkBAIC0xMDIsNyArNDIsNyBAQAogIEFNX0NPTkRJVElPTkFMKFNQQVJDLCB0ZXN0IHgkVEFSR0VUID0geFNQQVJDKQogIEFNX0NPTkRJVElPTkFMKFg4NiwgdGVzdCB4JFRBUkdFVCA9IHhYODYpCiAgQU1fQ09ORElUSU9OQUwoWDg2X0ZSRUVCU0QsIHRlc3QgeCRUQVJHRVQgPSB4WDg2X0ZSRUVCU0QpCi1AQCAtNDAxLDQgKzQwNyw4IEBACitAQCAtNDk5LDQgKzUwNSw4IEBACiAgCiAgQUNfQ09ORklHX0ZJTEVTKGluY2x1ZGUvTWFrZWZpbGUgaW5jbHVkZS9mZmkuaCBNYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgbWFuL01ha2VmaWxlIGxpYmZmaS5wYykKICAKQEAgLTExMSwzICs1MSw3MCBAQAogK0FDX0NPTkZJR19GSUxFUyhmZmljb25maWcucHkpCiArCiAgQUNfT1VUUFVUCistLS0gbGliZmZpLTMuMC4xMS9mZmljb25maWcucHkuaW4JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBsaWJmZmkvZmZpY29uZmlnLnB5LmluCTIwMTItMDMtMTUgMDE6MDQ6MjcuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDM1IEBACisrZmZpX3NvdXJjZXMgPSAiIiIKKytzcmMvcHJlcF9jaWYuYworK3NyYy9jbG9zdXJlcy5jCisrc3JjL2RsbWFsbG9jLmMKKysiIiIuc3BsaXQoKQorKworK2ZmaV9wbGF0Zm9ybXMgPSB7CisrICAgICdNSVBTX0lSSVgnOiBbJ3NyYy9taXBzL2ZmaS5jJywgJ3NyYy9taXBzL28zMi5TJywgJ3NyYy9taXBzL24zMi5TJ10sCisrICAgICdNSVBTX0xJTlVYJzogWydzcmMvbWlwcy9mZmkuYycsICdzcmMvbWlwcy9vMzIuUyddLAorKyAgICAnWDg2JzogWydzcmMveDg2L2ZmaS5jJywgJ3NyYy94ODYvc3lzdi5TJ10sCisrICAgICdYODZfRlJFRUJTRCc6IFsnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L2ZyZWVic2QuUyddLAorKyAgICAnWDg2X1dJTjMyJzogWydzcmMveDg2L2ZmaS5jJywgJ3NyYy94ODYvd2luMzIuUyddLAorKyAgICAnU1BBUkMnOiBbJ3NyYy9zcGFyYy9mZmkuYycsICdzcmMvc3BhcmMvdjguUycsICdzcmMvc3BhcmMvdjkuUyddLAorKyAgICAnQUxQSEEnOiBbJ3NyYy9hbHBoYS9mZmkuYycsICdzcmMvYWxwaGEvb3NmLlMnXSwKKysgICAgJ0lBNjQnOiBbJ3NyYy9pYTY0L2ZmaS5jJywgJ3NyYy9pYTY0L3VuaXguUyddLAorKyAgICAnTTMyUic6IFsnc3JjL20zMnIvc3lzdi5TJywgJ3NyYy9tMzJyL2ZmaS5jJ10sCisrICAgICdNNjhLJzogWydzcmMvbTY4ay9mZmkuYycsICdzcmMvbTY4ay9zeXN2LlMnXSwKKysgICAgJ1BPV0VSUEMnOiBbJ3NyYy9wb3dlcnBjL2ZmaS5jJywgJ3NyYy9wb3dlcnBjL3N5c3YuUycsICdzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TJywgJ3NyYy9wb3dlcnBjL2xpbnV4NjQuUycsICdzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUyddLAorKyAgICAnUE9XRVJQQ19BSVgnOiBbJ3NyYy9wb3dlcnBjL2ZmaS5jJywgJ3NyYy9wb3dlcnBjL2FpeC5TJywgJ3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMnXSwKKysgICAgJ1BPV0VSUENfRlJFRUJTRCc6IFsnc3JjL3Bvd2VycGMvZmZpLmMnLCAnc3JjL3Bvd2VycGMvc3lzdi5TJywgJ3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMnXSwKKysgICAgJ0FSTSc6IFsnc3JjL2FybS9zeXN2LlMnLCAnc3JjL2FybS9mZmkuYyddLAorKyAgICAnTElCRkZJX0NSSVMnOiBbJ3NyYy9jcmlzL3N5c3YuUycsICdzcmMvY3Jpcy9mZmkuYyddLAorKyAgICAnRlJWJzogWydzcmMvZnJ2L2VhYmkuUycsICdzcmMvZnJ2L2ZmaS5jJ10sCisrICAgICdTMzkwJzogWydzcmMvczM5MC9zeXN2LlMnLCAnc3JjL3MzOTAvZmZpLmMnXSwKKysgICAgJ1g4Nl82NCc6IFsnc3JjL3g4Ni9mZmk2NC5jJywgJ3NyYy94ODYvdW5peDY0LlMnLCAnc3JjL3g4Ni9mZmkuYycsICdzcmMveDg2L3N5c3YuUyddLAorKyAgICAnU0gnOiBbJ3NyYy9zaC9zeXN2LlMnLCAnc3JjL3NoL2ZmaS5jJ10sCisrICAgICdTSDY0JzogWydzcmMvc2g2NC9zeXN2LlMnLCAnc3JjL3NoNjQvZmZpLmMnXSwKKysgICAgJ1BBJzogWydzcmMvcGEvbGludXguUycsICdzcmMvcGEvZmZpLmMnXSwKKysgICAgJ1BBX0xJTlVYJzogWydzcmMvcGEvbGludXguUycsICdzcmMvcGEvZmZpLmMnXSwKKysgICAgJ1BBX0hQVVgnOiBbJ3NyYy9wYS9ocHV4MzIuUycsICdzcmMvcGEvZmZpLmMnXSwKKyt9CisrCisrZmZpX3NvdXJjZXMgKz0gZmZpX3BsYXRmb3Jtc1snQFRBUkdFVEAnXQorKworK2ZmaV9jZmxhZ3MgPSAnQENGTEFHU0AnCitkaWZmIC11ck4gbGliZmZpLTMuMC4xMS9zcmMvZGxtYWxsb2MuYyBsaWJmZmkvc3JjL2RsbWFsbG9jLmMKKy0tLSBsaWJmZmktMy4wLjExL3NyYy9kbG1hbGxvYy5jCTIwMTItMDQtMTIgMDQ6NDY6MDYuMDAwMDAwMDAwICswMjAwCisrKysgbGliZmZpL3NyYy9kbG1hbGxvYy5jCTIwMTItMDYtMjYgMTU6MTU6NTguOTQ5NTQ3NDYxICswMjAwCitAQCAtNDU3LDYgKzQ1NywxMSBAQAorICNkZWZpbmUgTEFDS1NfRVJSTk9fSAorICNkZWZpbmUgTUFMTE9DX0ZBSUxVUkVfQUNUSU9OCisgI2RlZmluZSBNTUFQX0NMRUFSUyAwIC8qIFdJTkNFIGFuZCBzb21lIG90aGVycyBhcHBhcmVudGx5IGRvbid0IGNsZWFyICovCisrI2VsaWYgIWRlZmluZWQgX0dOVV9TT1VSQ0UKKysvKiBtcmVtYXAoKSBvbiBMaW51eCByZXF1aXJlcyB0aGlzIHZpYSBzeXMvbW1hbi5oCisrICogU2VlIHJvdW5kdXAgaXNzdWUgMTAzMDkKKysgKi8KKysjZGVmaW5lIF9HTlVfU09VUkNFIDEKKyAjZW5kaWYgIC8qIFdJTjMyICovCisgCisgI2lmZGVmIF9fT1MyX18KK2RpZmYgLXVyTiBsaWJmZmktMy4wLjExL3NyYy9zcGFyYy92OC5TIGxpYmZmaS9zcmMvc3BhcmMvdjguUworLS0tIGxpYmZmaS0zLjAuMTEvc3JjL3NwYXJjL3Y4LlMJMjAxMi0wNC0xMiAwNDo0NjowNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBsaWJmZmkvc3JjL3NwYXJjL3Y4LlMJMjAxMS0wMy0xMyAwNToxNTowNC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMTMsNiArMjEzLDEwIEBACisgCWJlLGEJZG9uZTEKKyAJIGxkZAlbJWZwLThdLCAlaTAKKyAKKysJY21wCSVvMCwgRkZJX1RZUEVfVUlOVDY0CisrCWJlLGEJZG9uZTEKKysJIGxkZAlbJWZwLThdLCAlaTAKKysKKyAJbGQJWyVmcC04XSwgJWkwCisgZG9uZTE6CisgCWptcAklaTcrOApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZwppbmRleCAwMGJhN2VmLi5mNDE0OGE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZwpAQCAtMSw4ICsxLDkxMSBAQAorMjAxMi0wNC0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBuZXcgc2NyaXB0LgorCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisKKzIwMTItMDQtMTEgIFphY2hhcnkgV2FsZG93c2tpICA8endhbGRvd3NraUBnbWFpbC5jb20+CisKKwkqIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHksCisJbGliZmZpLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IFN1cHBvcnQgYSBNYWMgc3RhdGljIGxpYnJhcnkgdmlhCisJWGNvZGUuIFNldCBpT1MgY29tcGF0aWJpbGl0eSB0byA0LjAuICBNb3ZlIGlPUyB0cmFtcG9saW5lCisJZ2VuZXJhdGlvbiBpbnRvIGFuIFhjb2RlICJydW4gc2NyaXB0IiBwaGFzZS4gIEluY2x1ZGUgYm90aCBhcworCVhjb2RlIGJ1aWxkIHNjcmlwdHMuIERvbid0IGFsd2F5cyByZWdlbmVyYXRlIGNvbmZpZyBmaWxlcy4KKworMjAxMi0wNC0xMCAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgKGZmaV9wcmVwX2FyZ3MpOiBBZGQgbWlzc2luZyBzZW1pY29sb24uCisKKzIwMTItMDQtMDYgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEVYVFJBX0RJU1QpOiBBZGQgbmV3IGlPUy94Y29kZSBmaWxlcy4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDEyLTA0LTA2ICBNaWtlIExld2lzICA8bWlrZWxpa2VzcGllQGdtYWlsLmNvbT4KKworCSogZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weTogTmV3IGZpbGUuCisJKiBsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IGZpbGUuCisJKiBSRUFETUU6IFVwZGF0ZSBpbnN0cnVjdGlvbnMgb24gYnVpbGRpbmcgaU9TIGJpbmFyeS4KKwkqIGJ1aWxkLWlvcy5zaDogRGVsZXRlLgorCisyMDEyLTA0LTA2ICBILkouIEx1ICA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CisKKwkqIG00L2xpYnRvb2wubTQgKF9MVF9FTkFCTEVfTE9DSyk6IFN1cHBvcnQgeDMyLgorCisyMDEyLTA0LTA2ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIHNyYy94ODYvZmZpNjQuYyAoVUlOVDEyOCk6IERlZmluZSBkaWZmZXJlbnRseSBmb3IgSW50ZWwgYW5kIEdOVQorCWNvbXBpbGVycywgdGhlbiB1c2UgaXQuCisKKzIwMTItMDQtMDYgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogdGVzdHN1aXRlL01ha2VmaWxlLmFtIChFWFRSQV9ESVNUKTogQWRkIG1pc3NpbmcgdGVzdCBjYXNlcy4KKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVidWlsdC4KKworMjAxMi0wNC0wNSAgWmFjaGFyeSBXYWxkb3dza2kgIDx6d2FsZG93c2tpQGdtYWlsLmNvbT4KKworCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIG1pc3NpbmcgdHJhbXBvbGluZSB0YWJsZSBmaWVsZHMuCisJKiBzcmMvYXJtL3N5c3YuUzogRml4IEVOVFJZIGRlZmluaXRpb24sIGFuZCB3cmFwIHN5bWJvbCByZWZlcmVuY2VzCisJaW4gQ05BTUUuCisJKiBzcmMveDg2L2ZmaS5jOiBXcmFwIFdpbmRvd3Mgc3BlY2lmaWMgY29kZSBpbiBpZmRlZnMuCisKKzIwMTItMDQtMDIgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2FsbF93aW4zMik6IFNpZ24vemVybyBleHRlbmQgdGhlIHJldHVybgorCXZhbHVlIGluIHRoZSBJbnRlbCB2ZXJzaW9uIGFzIGlzIGFscmVhZHkgZG9uZSBmb3IgdGhlIEFUJlQgdmVyc2lvbi4KKwkoZmZpX2Nsb3N1cmVfU1lTVik6IExpa2V3aXNlLgorCShmZmlfY2xvc3VyZV9yYXdfU1lTVik6IExpa2V3aXNlLgorCShmZmlfY2xvc3VyZV9TVERDQUxMKTogTGlrZXdpc2UuCisKKzIwMTItMDMtMjkgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwpOiBVbmlmeSB0aGUgZnJhbWUKKwlnZW5lcmF0aW9uLCBmaXggdGhlIEVORFAgbGFiZWwgYW5kIHJlbW92ZSB0aGUgc3VycGx1cyB0aGlyZCBhcmcKKwlmcm9tIHRoZSAnbGVhJyBpbnNuLgorCisyMDEyLTAzLTI5ICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyAoZmZpX2Nsb3N1cmVfcmF3X1NZU1YpOiBNYWtlIHRoZSAnc3R1YnJhdycgbGFiZWwKKwl2aXNpYmxlIG91dHNpZGUgdGhlIFBST0MsIHNvIHRoYXQgZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIGNhbiBzZWUKKwlpdC4gIEFsc28gaW5zdHJ1Y3QgdGhlIGFzc2VtYmxlciB0byBhZGQgYSBmcmFtZSB0byB0aGUgZnVuY3Rpb24uCisKKzIwMTItMDMtMjMgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogTWFrZWZpbGUuYW0gKEFNX0NQUEZMQUdTKTogQWRkIC1ERkZJX0JVSUxESU5HLgorCSogTWFrZWZpbGUuaW46IFJlYnVpbHQuCisJKiBpbmNsdWRlL2ZmaS5oLmluIFtNU1ZDXTogQWRkIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBkZWNvcmF0aW9ucworCXRvIGFsbCBkYXRhIGV4cG9ydHMsIHdoZW4gY29tcGlsaW5nIGxpYmZmaSBjbGllbnRzIHVzaW5nIE1TVkMuCisKKzIwMTItMDMtMjkgIFBldGVyIFJvc2luICA8cGVkYUBseXNhdG9yLmxpdS5zZT4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IEFkZCBuZXcgQUJJIEZGSV9NU19DREVDTCBhbmQKKwltYWtlIGl0IHRoZSBkZWZhdWx0IGZvciBNU1ZDLgorCShGRklfVFlQRV9NU19TVFJVQ1QpOiBOZXcgc3RydWN0dXJlIHJldHVybiBjb252ZW50aW9uLgorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBUd2VhayB0aGUgc3RydWN0dXJlCisJcmV0dXJuIGNvbnZlbnRpb24gZm9yIEZGSV9NU19DREVDTCB0byBiZSBGRklfVFlQRV9NU19TVFJVQ1QKKwlpbnN0ZWFkIG9mIGFuIG9yZGluYXJ5IEZGSV9UWVBFX1NUUlVDVC4KKwkoZmZpX3ByZXBfYXJncyk6IFRyZWF0IEZGSV9UWVBFX01TX1NUUlVDVCBhcyBGRklfVFlQRV9TVFJVQ1QuCisJKGZmaV9jYWxsKTogTGlrZXdpc2UuCisJKGZmaV9wcmVwX2luY29taW5nX2FyZ3NfU1lTVik6IExpa2V3aXNlLgorCShmZmlfcmF3X2NhbGwpOiBMaWtld2lzZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBUcmVhdCBGRklfTVNfQ0RFQ0wgYXMgRkZJX1NZU1YuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX1NZU1YpOiBGb3IgRkZJX1RZUEVfTVNfU1RSVUNULAorCXJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdCBzdHJ1Y3R1cmUgaW4gZWF4IGFuZCBkb24ndCBwb3AKKwl0aGF0IHBvaW50ZXIgZnJvbSB0aGUgc3RhY2ssIHRoZSBjYWxsZXIgdGFrZXMgY2FyZSBvZiBpdC4KKwkoZmZpX2NhbGxfd2luMzIpOiBUcmVhdCBGRklfVFlQRV9NU19TVFJVQ1QgYXMgRkZJX1RZUEVfU1RSVUNULgorCShmZmlfY2xvc3VyZV9yYXdfU1lTVik6IExpa2V3aXNlLgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBbTVNWQ106IEFkZCBpbmxpbmUKKwlhc3NlbWJseSB2ZXJzaW9uIHdpdGggSW50ZWwgc3ludGF4LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBbTVNWQ106IExpa2V3aXNlLgorCisyMDEyLTAzLTIzICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0Lmg6IFByb3ZpZGUgYWJzdHJhdGlvbiBvZgorCV9fYXR0cmlidXRlX18oKGZhc3RjYWxsKSkgaW4gdGhlIGZvcm0gb2YgYSBfX0ZBU1RDQUxMX18KKwlkZWZpbmUuICBEZWZpbmUgaXQgdG8gX19mYXN0Y2FsbCBmb3IgTVNWQy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYzogVXNlIHRoZSBhYm92ZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmM6IExpa2V3aXNlLgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHNyYy94ODYvd2luMzIuUyBbTVNWQ10gKGZmaV9jbG9zdXJlX1RISVNDQUxMKTogUmVtb3ZlIHRoZSBtYW51YWwKKwlmcmFtZSBvbiBmdW5jdGlvbiBlbnRyeSwgTUFTTSBhZGRzIG9uZSBhdXRvbWF0aWNhbGx5LgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmggW01TVkNdOiBBZGQga2x1ZGdlIGZvciBtaXNzaW5nCisJYml0cyBpbiB0aGUgTVNWQyBoZWFkZXJzLgorCisyMDEyLTAzLTIyICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmM6IEFkanVzdCB0byB0aGUgQzg5IHN0eWxlCisJd2l0aCBubyBkZWNsYXJhdGlvbnMgYWZ0ZXIgc3RhdGVtZW50cy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jOiBMaWtld2lzZS4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmM6IExpa2V3aXNlLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYzogTGlrZXdpc2UuCisKKzIwMTItMDMtMDYgIENodW5nLUxpbiBUYW5nICA8Y2x0YW5nQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV9jYWxsKTogQWRkIF9fQVJNX0VBQklfXyBndWFyZCBhcm91bmQgY2FsbCB0bworCWZmaV9jYWxsX1ZGUCgpLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEFkZCBfX0FSTV9FQUJJX18gZ3VhcmQgYXJvdW5kIHVzZSBvZgorCWZmaV9jbG9zdXJlX1ZGUC4KKwkqIHNyYy9hcm0vc3lzdi5TOiBBZGQgX19BUk1fRUFCSV9fIGd1YXJkIGFyb3VuZCBWRlAgY29kZS4KKworMjAxMi0wMy0yMSAgUGV0ZXIgUm9zaW4JIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYyAoZmxvYXRfdmFfZm4pOiBVc2UgJWYgd2hlbgorCXByaW50aW5nIGRvdWJsZXMgKCVsZiBpcyBmb3IgbG9uZyBkb3VibGVzKS4KKwkobWFpbik6IExpa2V3aXNlLgorCisyMDEyLTAzLTIxICBQZXRlciBSb3NpbiAgPHBlZGFAbHlzYXRvci5saXUuc2U+CisKKwkqIHRlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwIFsqLSotY3lnd2luKiwgKi0qLW1pbmd3Kl0KKwkoc2V0X2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFycyk6IEFkZCB0aGUgbGlicmFyeSBzZWFyY2ggZGlyIHRvIFBBVEgKKwkoYW5kIHNhdmUgUEFUSCBmb3IgbGF0ZXIpLgorCShyZXN0b3JlX2xkX2xpYnJhcnlfcGF0aF9lbnZfdmFycyk6IFJlc3RvcmUgUEFUSC4KKworMjAxMi0wMy0yMCAgUGV0ZXIgUm9zaW4gIDxwZWRhQGx5c2F0b3IubGl1LnNlPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIChtYWluKTogUmVtb3ZlIGJ1Zy4KKwkqIHNyYy94ODYvd2luMzIuUyBbTVNWQ10gKGZmaV9jbG9zdXJlX1NZU1YpOiBNYWtlIHRoZSAnc3R1YicgbGFiZWwKKwl2aXNpYmxlIG91dHNpZGUgdGhlIFBST0MsIHNvIHRoYXQgZmZpX2Nsb3N1cmVfVEhJU0NBTEwgY2FuIHNlZSBpdC4KKworMjAxMi0wMy0xOSAgQWxhbiBIb3VyaWhhbmUgIDxhbGFuaEBmYWlybGl0ZS5jby51az4KKworCSogc3JjL202OGsvZmZpLmM6IEFkZCBNSU5UIHN1cHBvcnQuCisJKiBzcmMvbTY4ay9zeXN2LlM6IERpdHRvLgorCisyMDEyLTAzLTE5ICBjaGVubmFtICA8Y3NpdEBheHdheS5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBGaXggQUlYIGNsb3N1cmUKKwlzdXBwb3J0LgorCisyMDEyLTA0LTAyICBQZXRlciBCZXJnbmVyICA8YmVyZ25lckB2bmV0LmlibS5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2ZmaS5jIChmZmlfcHJlcF9hcmdzX1NZU1YpOiBEZWNsYXJlIGRvdWJsZV90bXAuCisJU2lsZW5jZSBjYXN0aW5nIHBvaW50ZXIgdG8gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZSB3YXJuaW5nLgorCURlbGV0ZSBnb3RvIHRvIHByZXZpb3VzbHkgZGVsZXRlZCBsYWJlbC4KKwkoZmZpX2NhbGwpOiBTaWxlbmNlIHBvc3NpYmx5IHVuZGVmaW5lZCB3YXJuaW5nLgorCShmZmlfY2xvc3VyZV9oZWxwZXJfU1lTVik6IERlY2xhcmUgdmFyaWFibGUgdHlwZS4KKworMjAxMi0wMy0xMyAgS2F6IEtvamltYSAgPGtrb2ppbWFAZ2NjLmdudS5vcmc+CisKKwkqIHNyYy9zaC9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEb24ndCBBU1NFUlQgQUJJIHRlc3QsCisJanVzdCByZXR1cm4gRkZJX0JBRF9BQkkgd2hlbiB0aGluZ3MgYXJlIHdyb25nLgorCSogc3JjL3NoNjQvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisKKzIwMTItMDMtMDkgIERhdmlkIEVkZWxzb2huICA8ZGplLmdjY0BnbWFpbC5jb20+CisKKwkqIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgKGZmaV9jbG9zdXJlX0FTTSk6IEFkanVzdCBmb3IgRGFyd2luNjQKKwljaGFuZ2UgdG8gcmV0dXJuIHZhbHVlIG9mIGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4gYW5kIGxvYWQgdHlwZQorCWZyb20gcmV0dXJuIHR5cGUuCisKKzIwMTItMDMtMDMgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KKworCSogc3JjL3g4Ni9mZmk2NC5jIChmZmlfY2FsbCk6IENhc3QgdGhlIHJldHVybiB2YWx1ZSB0byB1bnNpZ25lZAorCWxvbmcuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQ2FzdCB0byA2NGJpdCBhZGRyZXNzIGluIHRyYW1wb2xpbmUuCisJKGZmaV9jbG9zdXJlX3VuaXg2NF9pbm5lcik6IENhc3QgcmV0dXJuIHBvaW50ZXIgdG8gdW5zaWduZWQgbG9uZworCWZpcnN0LgorCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChGRklfU0laRU9GX0FSRyk6IERlZmluZWQgdG8gOCBmb3IgeDMyLgorCShmZmlfYXJnKTogU2V0IHRvIHVuc2lnbmVkIGxvbmcgbG9uZyBmb3IgeDMyLgorCShmZmlfc2FyZyk6IFNldCB0byBsb25nIGxvbmcgZm9yIHgzMi4KKworMjAxMi0wMy0wMyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgorCisJKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmX2NvcmUpOiBQcm9wZXJseSBjaGVjayBiYWQgQUJJLgorCisyMDEyLTAzLTAzICBBbmRvbmkgTW9yYWxlcyBBbGFzdHJ1ZXkgIDx5bGF0dXlhQGdtYWlsLmNvbT4KKworCSogY29uZmlndXJlLmFjOiBBZGQgLW5vLXVuZGVmaW5lZCBmb3IgYm90aCAzMi0gYW5kIDY0LWJpdCB4ODYKKwl3aW5kb3dzLWxpa2UgaG9zdHMuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTItMDItMjcgIE1pa2FlbCBQZXR0ZXJzc29uICA8bWlrcGVAaXQudXUuc2U+CisKKwlQUiBsaWJmZmkvNTIyMjMKKwkqIE1ha2VmaWxlLmFtIChGTEFHU19UT19QQVNTKTogRGVmaW5lLgorCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisKKzIwMTItMDItMjMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogc3JjLyovZmZpdGFyZ2V0Lmg6IEVuc3VyZSB0aGF0IHVzZXJzIG5ldmVyIGluY2x1ZGUgZmZpdGFyZ2V0LmgKKwlkaXJlY3RseS4KKworMjAxMi0wMi0yMyAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwlQUiBsaWJmZmkvNTIyMjEKKwkqIHNyYy94ODYvZmZpLmMgKGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCk6IE5ldworCXByb3RvdHlwZS4KKwkoZmZpX3ByZXBfcmF3X2Nsb3N1cmVfbG9jKTogVXNlIGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCBmb3IKKwl0aGlzY2FsbC1jb252ZW50aW9uLgorCShmZmlfcmF3X2NhbGwpOiBVc2UgZmZpX3ByZXBfYXJnc19yYXcuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCk6IEFkZAorCWltcGxlbWVudGF0aW9uIGZvciBzdHViLgorCisyMDEyLTAyLTEwICBLYWkgVGlldHogIDxrdGlldHpAcmVkaGF0LmNvbT4KKworCSogY29uZmlndXJlLmFjIChBTV9MVExERkxBR1MpOiBBZGQgLW5vLXVuZGVmaW5lIGZvciB4NjQKKwl3aW5kb3dzIHRhcmdldC4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCisKKzIwMTItMDItMDggIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmKTogQWxsb3cgZm9yIFg4Nl9XSU4zMgorCWFsc28gRkZJX1RISVNDQUxMLgorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX2Nsb3N1cmVfVEhJU0NBTEwpOiBBZGQgcHJvdG90eXBlLgorCShGRklfSU5JVF9UUkFNUE9MSU5FX1RISVNDQUxMKTogTmV3IHRyYW1wb2xpbmUgY29kZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBBZGQgRkZJX1RISVNDQUxMIHN1cHBvcnQuCisJKiBzcmMveDg2L2ZmaXRhcmdldC5oIChGRklfVFJBTVBPTElORV9TSVpFKTogQWRqdXN0IHNpemUuCisJKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jbG9zdXJlX1RISVNDQUxMKTogTmV3IGNsb3N1cmUgY29kZQorCWZvciB0aGlzY2FsbC1jYWxsaW5nIGNvbnZlbnRpb24uCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV90aGlzY2FsbC5jOiBOZXcgdGVzdC4KKworMjAxMi0wMS0yOCAgS2FpIFRpZXR6ICA8a3RpZXR6QHJlZGhhdC5jb20+CisKKwkqIHNyYy9saWJmZmkvc3JjL3g4Ni9mZmkuYyAoZmZpX2NhbGxfd2luMzIpOiBBZGQgbmV3CisJYXJndW1lbnQgdG8gcHJvdG90eXBlIGZvciBzcGVjaWZ5IGNhbGxpbmctY29udmVudGlvbi4KKwkoZmZpX2NhbGwpOiBBZGQgc3VwcG9ydCBmb3Igc3RkY2FsbC90aGlzY2FsbCBjb252ZW50aW9uLgorCShmZmlfcHJlcF9hcmdzKTogTGlrZXdpc2UuCisJKGZmaV9yYXdfY2FsbCk6IExpa2V3aXNlLgorCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IEFkZCBGRklfVEhJU0NBTEwgYW5kCisJRkZJX0ZBU1RDQUxMLgorCSogc3JjL3g4Ni93aW4zMi5TIChfZmZpX2NhbGxfd2luMzIpOiBBZGQgc3VwcG9ydCBmb3IKKwlmYXN0Y2FsbC90aGlzY2FsbCBjYWxsaW5nLWNvbnZlbnRpb24gY2FsbHMuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYzogTmV3IHRlc3QuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jOiBOZXcgdGVzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxX3dpbjMyLmM6IE5ldyB0ZXN0LgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYzogTmV3IHRlc3QuCisKKzIwMTItMDEtMjMgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+CisKKwkqIHNyYy9hbHBoYS9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBDaGVjayBmb3IgYmFkIEFCSS4KKworMjAxMi0wMS0yMyAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCSAgICBDaHJpcyBZb3VuZyAgPGNkeW91bmdAbnRsd29ybGQuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBBbWlnYSBzdXBwb3J0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDEyLTAxLTIzICBEbWl0cnkgTmFkZXpoaW4gIDxkbWl0cnkubmFkZXpoaW5AZ21haWwuY29tPgorCisJKiBpbmNsdWRlL2ZmaV9jb21tb24uaCAoTElLRUxZLCBVTkxJS0VMWSk6IEZpeCBkZWZpbml0aW9ucy4KKworMjAxMi0wMS0yMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAbGludXgtbTY4ay5vcmc+CisKKwkqIHNyYy9tNjhrL3N5c3YuUyAoZmZpX2NhbGxfU1lTVik6IFByb3Blcmx5IHRlc3QgZm9yIHBsYWluCisJbWM2ODAwMC4gIFRlc3QgZm9yIF9fSEFWRV82ODg4MV9fIGluIGFkZGl0aW9uIHRvIF9fTUM2ODg4MV9fLgorCisyMDEyLTAxLTE5ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCVBSIHJ0bC1vcHRpbWl6YXRpb24vNDg0OTYKKwkqIHNyYy9pYTY0L2ZmaS5jIChmZmlfY2FsbCk6IEZpeCB1cCBhbGlhc2luZyB2aW9sYXRpb25zLgorCisyMDEyLTAxLTA5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogY29uZmlndXJlLmFjIChpPzg2LSotKik6IFNldCBUQVJHRVQgdG8gWDg2XzY0LgorCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgorCisyMDExLTEyLTA3ICBBbmRyZXcgUGluc2tpICA8YXBpbnNraUBjYXZpdW0uY29tPgorCisJUFIgbGliZmZpLzUwMDUxCisJKiBzcmMvbWlwcy9uMzIuUzogQWRkICIuc2V0IG1pcHM0Ii4KKworMjAxMS0xMS0yMSAgQW5kcmVhcyBUb2JsZXIgIDxhbmRyZWFzdEBmZ3puZXQuY2g+CisKKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMS0xMS0xMiAgRGF2aWQgR2lsYmVydCA8ZGF2aWQuZ2lsYmVydEBsaW5hcm8ub3JnPgorCisJKiBkb2MvbGliZmZpLnRleGksIGluY2x1ZGUvZmZpLmguaW4sIGluY2x1ZGUvZmZpX2NvbW1vbi5oLAorCW1hbi9NYWtlZmlsZS5hbSwgbWFuL2ZmaS4zLCBtYW4vZmZpX3ByZXBfY2lmLjMsCisJbWFuL2ZmaV9wcmVwX2NpZl92YXIuMywgc3JjL2FybS9mZmkuYywgc3JjL2FybS9mZml0YXJnZXQuaCwKKwlzcmMvY3Jpcy9mZmkuYywgc3JjL3ByZXBfY2lmLmMsCisJdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYywKKwl0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYywKKwl0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYzogTWFueSBjaGFuZ2VzIHRvIHN1cHBvcnQgdmFyaWFkaWMKKwlmdW5jdGlvbiBjYWxscy4KKworMjAxMS0xMS0xMiAgS3lsZSBNb2ZmZXR0IDxLeWxlLkQuTW9mZmV0dEBib2VpbmcuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmkuYywgc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgsCisJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUywgc3JjL3Bvd2VycGMvc3lzdi5TOiBNYW55IGNoYW5nZXMgZm9yCisJc29mdGZsb2F0IHBvd2VycGMgdmFyaWFudHMuCisKKzIwMTEtMTEtMTIgIFBldHIgU2FsaW5nZXIgPFBldHIuU2FsaW5nZXJAc2V6bmFtLmN6PgorCisJKiBjb25maWd1cmUuYWMgKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUpOiBGaXgga2ZyZWVic2Qgc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0xMS0xMiAgVGltb3RoeSBXYWxsICA8dHdhbGxAdXNlcnMuc2YubmV0PgorCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfcHJlcF9hcmdzLCBmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YpOiBNYXgKKwlhbGlnbm1lbnQgb2YgNCBmb3Igd2luY2Ugb24gQVJNLgorCisyMDExLTExLTEyICBLeWxlIE1vZmZldHQgPEt5bGUuRC5Nb2ZmZXR0QGJvZWluZy5jb20+CisJICAgIEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvcHBjL3N5c3YuUywgc3JjL3BwYy9mZmkuYzogUmVtb3ZlIHVzZSBvZiBwcGMgc3RyaW5nCisJaW5zdHJ1Y3Rpb25zIChub3QgYXZhaWxhYmxlIG9uIHNvbWUgY29yZXMsIGxpa2UgdGhlIFBQQzQ0MCkuCisKKzIwMTEtMTEtMTIgIEtpbXVyYSBXYXRhcnUgIDxraW11cmF3QGkubmlmdHkuanA+CisKKwkqIG00L2F4X2VuYWJsZV9idWlsZGRpcjogQ2hhbmdlIGZyb20gc3RyaW5nIGNvbXBhcmlzb24gdG8gbnVtZXJpYworCWNvbXBhcmlzb24gZm9yIHdjIG91dHB1dC4KKwkqIGNvbmZpZ3VyZS5hYzogRW5hYmxlIEZGSV9NTUFQX0VYRUNfV1JJVCBmb3IgZGFyd2luMTEgYWthIE1hYyBPUworCVggMTAuNy4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKworMjAxMS0xMS0xMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBNYWtlZmlsZS5hbSAoQU1fQ0NBU0ZMQUdTKTogQWRkIC1nIG9wdGlvbiB0byBidWlsZCBhc3NlbWJseQorCWZpbGVzIHdpdGggZGVidWcgaW5mby4KKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCisyMDExLTExLTEyICBKYXNwZXIgTGlldmlzc2UgQWRyaWFhbnNlIDxqYXNwZXJAb3BlbmJzZC5vcmc+CisKKwkqIFJFQURNRTogVXBkYXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIE9wZW5CU0Qgc3lzdGVtcy4KKworMjAxMS0xMS0xMiAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBsaWJ0b29sLXZlcnNpb246IFVwZGF0ZS4KKwkqIE1ha2VmaWxlLmFtIChub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMpOiBBZGQgc3JjL2RlYnVnLmMgaWYKKwlGRklfREVCVUcuCisJKGxpYmZmaV9sYV9TT1VSQ0VTKTogUmVtb3ZlIHNyYy9kZWJ1Zy5jCisJKEVYVFJBX0RJU1QpOiBBZGQgc3JjL2RlYnVnLmMKKwkqIE1ha2VmaWxlLmluOiBSZWJ1aWx0LgorCSogUkVBRE1FOiBVcGRhdGUgZm9yIDMuMC4xMS4KKworMjAxMS0xMS0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KKworCSogY29uZmlndXJlLmFjIChHQ0NfQVNfQ0ZJX1BTRVVET19PUCk6IFVzZSBpdCBpbnN0ZWFkIG9mIGlubGluZSBjaGVjay4KKwkqIGNvbmZpZ3VyZSwgYWNsb2NhbC5tNDogUmVidWlsZC4KKworMjAxMS0wOS0wNCAgSWFpbiBTYW5kb2UgIDxpYWluc0BnY2MuZ251Lm9yZz4KKworCVBSIGxpYmZmaS80OTU5NAorCSogc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyAoc3R1YnMpOiBNYWtlIHRoZSBzdHViIGJpbmRpbmcKKwloZWxwZXIgcmVmZXJlbmNlIHRyYWNrIHRoZSBhcmNoaXRlY3R1cmUgcG9pbnRlciBzaXplLgorCisyMDExLTA4LTI1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KKworCSogc3JjL2FybS9mZmkuYyAoRkZJX0lOSVRfVFJBTVBPTElORSk6IFJlbW92ZSBoYXJkLWNvZGVkIGFzc2VtYmx5CisJaW5zdHJ1Y3Rpb25zLgorCSogc3JjL2FybS9zeXN2LlMgKGZmaV9hcm1fdHJhbXBvbGluZSk6IFB1dCB0aGVtIGhlcmUgaW5zdGVhZC4KKworMjAxMS0wNy0xMSAgQW5kcmV3IEhhbGV5ICA8YXBoQHJlZGhhdC5jb20+CisKKyAgICAgICAgKiBzcmMvYXJtL2ZmaS5jIChGRklfSU5JVF9UUkFNUE9MSU5FKTogQ2xlYXIgaWNhY2hlLgorCisyMDExLTA2LTI5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYzogTW92ZSBQUiBudW1iZXIgdG8gY29tbWVudC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jOiBMaWtld2lzZS4KKworMjAxMS0wNi0yOSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwlQUiBsaWJmZmkvNDY2NjAKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmM6IHhmYWlsIGRnLW91dHB1dCBvbgorCW1pcHMtc2dpLWlyaXg2Ki4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jOiBMaWtld2lzZS4KKworMjAxMS0wNi0xNCAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jICh0ZXN0X2xhcmdlX2ZuKTogVXNlIFBSSXU4LAorCVBSSWQ4IGluc3RlYWQgb2YgJWhodSwgJWhoZC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmggW19fYWxwaGFfXyAmJiBfX29zZl9fXSAoUFJJZDgsCisJUFJJdTgpOiBEZWZpbmUuCisJW19fc2dpX19dIChQUklkOCwgUFJJdTgpOiBEZWZpbmUuCisKKzIwMTEtMDQtMjkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBzcmMvYWxwaGEvb3NmLlMgKFVBX1NJLCBGREVfRU5DT0RJTkcsIEZERV9FTkNPREUsIEZERV9BUkFOR0UpOgorCURlZmluZS4KKwlVc2UgdGhlbSB0byBoYW5kbGUgRUxGIHZzLiBFQ09GRiBkaWZmZXJlbmNlcy4KKwlbX19vc2ZfX10gKF9HTE9CQUxfX0ZfZmZpX2NhbGxfb3NmKTogRGVmaW5lLgorCisyMDExLTAzLTMwICBUaW1vdGh5IFdhbGwgIDx0d2FsbEB1c2Vycy5zZi5uZXQ+CisKKwkqIHNyYy9wb3dlcnBjL2Rhcndpbi5TOiBGaXggdW5rbm93biBGREUgZW5jb2RpbmcuCisJKiBzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TOiBkaXR0by4KKworMjAxMS0wMi0yNSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvcG93ZXJwYy9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBBbGxvdyBmb3IgbW9yZQorCTMyLWJpdCBBQklzLgorCisyMDExLTAyLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIG00L2F4X2NjX21heG9wdC5tNDogRG9uJ3QgLW1hbGlnbi1kb3VibGUgb3IgdXNlIC1mZmFzdC1tYXRoLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDExLTAyLTEzICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgorCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTEtMDItMTMgIEFudGhvbnkgR3JlZW4gIDxncmVlbkBtb3hpZWxvZ2ljLmNvbT4KKworCSogaW5jbHVkZS9mZmlfY29tbW9uLmggKFVOTElLRUxZLCBMSUtFTFkpOiBEZWZpbmUuCisJKiBzcmMveDg2L2ZmaTY0LmMgKFVOTElLRUxZLCBMSUtFTFkpOiBSZW1vdmUgZGVmaW5pdGlvbi4KKwkqIHNyYy9wcmVwX2NpZi5jIChVTkxJS0VMWSwgTElLRUxZKTogUmVtb3ZlIGRlZmluaXRpb24uCisKKwkqIHNyYy9wcmVwX2NpZi5jIChpbml0aWFsaXplX2FnZ3JlZ2F0ZSk6IENvbnZlcnQgYXNzZXJ0aW9uIGludG8KKwlGRklfQkFEX1RZUEVERUYgcmV0dXJuLiAgSW5pdGlhbGl6ZSBhcmcgc2l6ZSBhbmQgYWxpZ25tZW50IHRvIDAuCisKKwkqIHNyYy9wYS9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEb24ndCBBU1NFUlQgQUJJIHRlc3QsCisJanVzdCByZXR1cm4gRkZJX0JBRF9BQkkgd2hlbiB0aGluZ3MgYXJlIHdyb25nLgorCSogc3JjL2FybS9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9wb3dlcnBjL2ZmaS5jIChmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IERpdHRvLgorCSogc3JjL21pcHMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRGl0dG8uCisJKiBzcmMvaWE2NC9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKwkqIHNyYy9hdnIzMi9mZmkuYyAoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBEaXR0by4KKworMjAxMS0wMi0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiBzcmMvc3BhcmMvZmZpLmMgKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogRG9uJ3QgQVNTRVJUIEFCSSB0ZXN0LAorCWp1c3QgcmV0dXJuIEZGSV9CQURfQUJJIHdoZW4gdGhpbmdzIGFyZSB3cm9uZy4KKworMjAxMi0wMi0xMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KKworCSogc3JjL3NwYXJjL3Y5LlMgKFNUQUNLRlJBTUUpOiBCdW1wIHRvIDE3Ni4KKworMjAxMS0wMi0wOSAgU3R1YXJ0IFNoZWx0b24gIDxzcmNzaGVsdG9uQGdtYWlsLmNvbT4KKworCWh0dHA6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTI4NjkxMQorCSogc3JjL21pcHMvZmZpdGFyZ2V0Lmg6IENsZWFuIHVwIGVycm9yIG1lc3NhZ2VzLgorCSogc3JjL2phdmFfcmF3X2FwaS5jIChmZmlfamF2YV90cmFuc2xhdGVfYXJncyk6IENhc3QgcmF3IGFyZyB0bworCWZmaV9yYXcqLgorCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIHByYWdtYSBmb3IgU0dJIGNvbXBpbGVyLgorCisyMDExLTAyLTA5ICBBbnRob255IEdyZWVuICA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIHBvd2VycGM2NC0qLWRhcndpbiogc3VwcG9ydC4KKworMjAxMS0wMi0wOSAgQW50aG9ueSBHcmVlbiA8Z3JlZW5AbW94aWVsb2dpYy5jb20+CisKKwkqIFJFQURNRTogTWVudGlvbiBJbnRlcml4LgorCisyMDExLTAyLTA5ICBKb25hdGhhbiBDYWxsZW4gIDxhYmNkQGdlbnRvby5vcmc+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIEludGVyaXggdG8gd2luMzIvY3lnd2luL21pbmd3IGNhc2UuCisJKiBjb25maWd1cmU6IERpdHRvLgorCSogc3JjL2Nsb3N1cmVzLmM6IFRyZWF0IEludGVyaXggbGlrZSBDeWd3aW4sIGluc3RlYWQgb2YgYXMgYQorCWdlbmVyaWMgd2luMzIuCisKKzIwMTEtMDItMDkgIEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmM6IFJlbW92ZSB4ZmFpbC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jOiBSZW1vdmUgeGZhaWwuCisJKiBzcmMveDg2L2ZmaTY0LmMgKFVOTElLRUxZLCBMSUtFTFkpOiBEZWZpbmUuCisJKGZmaV9wcmVwX2Nsb3N1cmVfbG9jKTogQ2hlY2sgZm9yIGJhZCBBQkkuCisJKiBzcmMvcHJlcF9jaWYuYyAoVU5MSUtFTFksIExJS0VMWSk6IERlZmluZS4KKwkoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUpOiBDaGVjayBmb3IgYmFkIHR5cGVzLgorCisyMDExLTAyLTA5ICBMYW5kb24gRnVsbGVyIDxsYW5kb25mQHBsYXVzaWJsZS5jb29wPgorCisJKiBNYWtlZmlsZS5hbSAoRVhUUkFfRElTVCk6IEFkZCBidWlsZC1pb3Muc2gsIHNyYy9hcm0vZ2VudHJhbXAuc2gsCisJc3JjL2FybS90cmFtcG9saW5lLlMuCisJKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyk6IEFkZCBzcmMvYXJjL3RyYW1wb2xpbmUuUy4KKwkqIGNvbmZpZ3VyZS5hYyAoRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSk6IERlZmluZS4KKwkqIHNyYy9hcm0vZmZpLmMgKGZmaV90cmFtcG9saW5lX3RhYmxlKQorCShmZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UsIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5KQorCShGRklfVFJBTVBPTElORV9DT0RFTE9DX0NPTkZJRywgRkZJX1RSQU1QT0xJTkVfQ09ORklHX1BBR0VfT0ZGU0VUKQorCShGRklfVFJBTVBPTElORV9DT1VOVCwgZmZpX3RyYW1wb2xpbmVfbG9jaywgZmZpX3RyYW1wb2xpbmVfdGFibGVzKQorCShmZmlfdHJhbXBvbGluZV90YWJsZV9hbGxvYywgZmZpX2Nsb3N1cmVfYWxsb2MsIGZmaV9jbG9zdXJlX2ZyZWUpOgorCURlZmluZSBmb3IgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSBjYXNlIChpT1MpLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IEhhbmRsIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgY2FzZQorCXNlcGFyYXRlbHkuCisJKiBzcmMvYXJtL3N5c3YuUzogSGFuZGxlIEFwcGxlIGlPUyBob3N0LgorCSogc3JjL2Nsb3N1cmVzLmM6IEhhbmRsZSBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFIGNhc2UuCisJKiBidWlsZC1pb3Muc2g6IE5ldyBmaWxlLgorCSogZmZpY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW46IFJlYnVpbHQuCisJKiBSRUFETUU6IE1lbnRpb24gQVJNIGlPUy4KKworMjAxMS0wMi0wOCAgT3JlbiBIZWxkICA8b3JlbmhlQGlsLmlibS5jb20+CisKKwkqIHNyYy9kbG1hbGxvYy5jIChfU1RSVUNUX01BTExJTkZPKTogRGVmaW5lIGluIG9yZGVyIHRvIGF2b2lkCisJcmVkZWZpbml0aW9uIG9mIG1hbGxpbmZvIG9uIEhQLVVYLgorCisyMDExLTAyLTA4ICBHaW5uIENoZW4gIDxnaW5uLmNoZW5Ab3JhY2xlLmNvbT4KKworCSogc3JjL3NwYXJjL2ZmaS5jIChmZmlfY2FsbCk6IE1ha2UgY29tcGF0aWJsZSB3aXRoIFNvbGFyaXMgU3R1ZGlvCisJYWdncmVnYXRlIHJldHVybiBBQkkuICBGbHVzaCBjYWNoZS4KKwkoZmZpX3ByZXBfY2xvc3VyZV9sb2MpOiBGbHVzaCBjYWNoZS4KKworMjAxMS0wMi0xMSAgQW50aG9ueSBHcmVlbiAgPGdyZWVuQG1veGllbG9naWMuY29tPgorCisJRnJvbSBUb20gSG9uZXJtYW5uIDx0b20uaG9uZXJtYW5uQG9yYWNsZS5jb20+OgorCSogc3JjL3Bvd2VycGMvYWl4LlMgKGZmaV9jYWxsX0FJWCk6IFN1cHBvcnQgZm9yIHhsYyB0b29sY2hhaW4gb24KKwlBSVguICBEZWNsYXJlIC5mZmlfcHJlcF9hcmdzLiAgSW5zZXJ0IG5vcHMgYWZ0ZXIgYnJhbmNoCisJaW5zdHJ1Y3Rpb25zIHNvIHRoYXQgdGhlIEFJWCBsaW5rZXIgY2FuIGluc2VydCBUT0MgcmVsb2FkCisJaW5zdHJ1Y3Rpb25zLgorCSogc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUzogRGVjbGFyZSAuZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTi4KKworMjAxMS0wMi0wOCAgRWQgIDxlZEBrZHRjLm5ldD4KKworCSogc3JjL3Bvd2VycGMvYXNtLmg6IEZpeCBncmFtbWFyIG5pdCBpbiBjb21tZW50LgorCisyMDExLTAyLTA4ICBVbGkgTGluayAgPHVsLm1jYW1hZmlhQGxpbmtpdHVwLmRlPgorCisJKiBpbmNsdWRlL2ZmaS5oLmluIChGRklfNjRfQklUX01BWCk6IERlZmluZSBhbmQgdXNlLgorCisyMDExLTAyLTA5ICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCVBSIGxpYmZmaS80NjY2MQorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgKG1haW4pOiBDYXN0IHZvaWQgKiB0bworCXVpbnRwdHJfdCBmaXJzdC4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIChtYWluKTogTGlrZXdpc2UuCisKKzIwMTEtMDItMDggIFJhZmFlbCBBdmlsYSBkZSBFc3BpbmRvbGEgIDxyZXNwaW5kb2xhQG1vemlsbGEuY29tPgorCisJKiBjb25maWd1cmUuYWM6IEZpeCB4ODYgdGVzdCBmb3IgcGMgcmVsYXRlZCByZWxvY3MuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisKKzIwMTEtMDItMDcgIEpvZWwgU2hlcnJpbGwgPGpvZWwuc2hlcnJpbGxAb2FyY29ycC5jb20+CisKKwkqIGxpYmZmaS9zcmMvbTY4ay9mZmkuYzogQWRkIFJURU1TIHN1cHBvcnQgZm9yIGNhY2hlIGZsdXNoaW5nLgorCUhhbmRsZSBjYXNlIHdoZW4gQ1BVIHZhcmlhbnQgZG9lcyBub3QgaGF2ZSBsb25nIGRvdWJsZSBzdXBwb3J0LgorCSogbGliZmZpL3NyYy9tNjhrL3N5c3YuUzogQWRkIHN1cHBvcnQgZm9yIG1jNjgwMDAsIENvbGRmaXJlLAorCWFuZCBjb3JlcyB3aXRoIHNvZnQgZmxvYXRpbmcgcG9pbnQuCisKKzIwMTEtMDItMDcgIEpvZWwgU2hlcnJpbGwgPGpvZWwuc2hlcnJpbGxAb2FyY29ycC5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzogQWRkIG1pcHMqLSotcnRlbXMqIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBzcmMvbWlwcy9mZml0YXJnZXQuaDogRW5zdXJlIG5lZWRlZCBjb25zdGFudHMgYXJlIGF2YWlsYWJsZQorCWZvciB0YXJnZXRzIHdoaWNoIGRvIG5vdCBoYXZlIHNnaWRlZnMuaC4KKworMjAxMS0wMS0yNiAgRGF2ZSBLb3JuICA8ZGF2ZS5rb3JuLmN5Z3dpbkBnbWFpbC5jb20+CisKKwlQUiB0YXJnZXQvNDAxMjUKKwkqIGNvbmZpZ3VyZS5hYyAoQU1fTFRMREZMQUdTKTogQWRkIC1iaW5kaXIgb3B0aW9uIGZvciB3aW5kb3dzIERMTHMuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisKKzIwMTAtMTItMTggIElhaW4gU2FuZG9lICA8aWFpbnNAZ2NjLmdudS5vcmc+CisKKwlQUiBsaWJmZmkvMjkxNTIKKwlQUiBsaWJmZmkvNDIzNzgKKwkqIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlM6IFByb3ZpZGUgRGFyd2luNjQgaW1wbGVtZW50YXRpb24sCisJdXBkYXRlIGNvbW1lbnRzLgorCSogc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmggKFBPV0VSUENfREFSV0lONjQpOiBOZXcsCisJKEZGSV9UUkFNUE9MSU5FX1NJWkUpOiBVcGRhdGUgZm9yIERhcndpbjY0LgorCSogc3JjL3Bvd2VycGMvZGFyd2luLlM6IFByb3ZpZGUgRGFyd2luNjQgaW1wbGVtZW50YXRpb24sCisJdXBkYXRlIGNvbW1lbnRzLgorCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jOiBMaWtld2lzZS4KKworMjAxMC0xMi0wNiAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAobGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCk6IFVzZSBkb3VibGUKKwliYWNrc2xhc2hlcy4KKwkobGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3ApOiBMaWtld2lzZS4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKworMjAxMC0xMi0wMyAgQ2h1bmctTGluIFRhbmcgIDxjbHRhbmdAY29kZXNvdXJjZXJ5LmNvbT4KKworCSogc3JjL2FybS9zeXN2LlMgKGZmaV9jbG9zdXJlX1NZU1YpOiBBZGQgVU5XSU5EIHRvIC5wYWQgZGlyZWN0aXZlLgorCShmZmlfY2xvc3VyZV9WRlApOiBTYW1lLgorCShmZmlfY2FsbF9WRlApOiBNb3ZlIGRvd24gdG8gYmVmb3JlIGZmaV9jbG9zdXJlX1ZGUC4gQWRkICcuZnB1IHZmcCcKKwlkaXJlY3RpdmUuCisKKzIwMTAtMTItMDEgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oIFtfX3NnaV0gKFBSSWQ2NCwgUFJJdTY0KTogRGVmaW5lLgorCShQUkl1UFRSKTogRGVmaW5lLgorCisyMDEwLTExLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgorCSAgICBSYWluZXIgT3J0aCAgPHJvQENlQmlUZWMuVW5pLUJpZWxlZmVsZC5ERT4KKworCSogc3JjL3g4Ni9zeXN2LlMgKEZERV9FTkNPRElORywgRkRFX0VOQ09ERSk6IERlZmluZS4KKwkoLmVoX2ZyYW1lKTogVXNlIEZERV9FTkNPRElORy4KKwkoLkxBU0ZERTEsIC5MQVNGREUyLCBMQVNGREUzKTogU2ltcGxpZnkgd2l0aCBGREVfRU5DT0RFLgorCisyMDEwLTExLTIyICBKYWNlayBDYWJhbiA8amFjZWtAY29kZXdlYXZlcnMuY29tPgorCisJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBzeW1ib2wgdW5kZXJzY29yZXMgb24gbWluZ3ctdzY0LgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCSogc3JjL3g4Ni93aW42NC5TOiBDb3JyZWN0bHkgYWNjZXNzIGV4dGVybiBzeW1ib2xzIGluIHJlc3BlY3QgdG8KKwl1bmRlcnNjb3Jlcy4KKworMjAxMC0xMS0xNSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cDogUmVuYW1lIC4uLgorCSogdGVzdHN1aXRlL2xpYi9saWJmZmkuZXhwOiAuLi4gdG8gdGhpcy4KKwkqIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2FsbC5leHA6IERvbid0IGxvYWQgbGliZmZpLWRnLmV4cC4KKwkqIGxpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHA6IExpa2V3aXNlLgorCisyMDEwLTEwLTI4ICBDaHVuZy1MaW4gVGFuZyAgPGNsdGFuZ0Bjb2Rlc291cmNlcnkuY29tPgorCisJKiBzcmMvYXJtL2ZmaS5jIChmZmlfcHJlcF9hcmdzKTogQWRkIFZGUCByZWdpc3RlciBhcmd1bWVudCBoYW5kbGluZworCWNvZGUsIG5ldyBwYXJhbWV0ZXIsIGFuZCByZXR1cm4gdmFsdWUuIFVwZGF0ZSBjb21tZW50cy4KKwkoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBBZGQgY2FzZSBmb3IgVkZQIHN0cnVjdCByZXR1cm4gdmFsdWVzLiBBZGQKKwljYWxsIHRvIGxheW91dF92ZnBfYXJncygpLgorCShmZmlfY2FsbF9TWVNWKTogVXBkYXRlIGRlY2xhcmF0aW9uLgorCShmZmlfY2FsbF9WRlApOiBOZXcgZGVjbGFyYXRpb24uCisJKGZmaV9jYWxsKTogQWRkIFZGUCBzdHJ1Y3QgcmV0dXJuIGNvbmRpdGlvbnMuIENhbGwgZmZpX2NhbGxfVkZQKCkKKwl3aGVuIEFCSSBpcyBGRklfVkZQLgorCShmZmlfY2xvc3VyZV9WRlApOiBOZXcgZGVjbGFyYXRpb24uCisJKGZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIpOiBBZGQgbmV3IHZmcF9hcmdzIHBhcmFtZXRlciwgdXBkYXRlIGNhbGwgdG8KKwlmZmlfcHJlcF9pbmNvbWluZ19hcmdzX1NZU1YoKS4KKwkoZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKTogVXBkYXRlIHBhcmFtZXRlcnMuIEFkZCBWRlAgYXJndW1lbnQKKwljYXNlIGhhbmRsaW5nLgorCShmZmlfcHJlcF9jbG9zdXJlX2xvYyk6IFBhc3MgZmZpX2Nsb3N1cmVfVkZQIHRvIHRyYW1wb2xpbmUKKwljb25zdHJ1Y3Rpb24gdW5kZXIgVkZQIGhhcmQtZmxvYXQuCisJKHJlY192ZnBfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgorCSh2ZnBfdHlwZV9wKTogU2FtZS4KKwkocGxhY2VfdmZwX2FyZyk6IFNhbWUuCisJKGxheW91dF92ZnBfYXJncyk6IFNhbWUuCisJKiBzcmMvYXJtL2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQWRkIEZGSV9WRlAuIERlZmluZSBGRklfREVGQVVMVF9BQkkKKwliYXNlZCBvbiBfX0FSTV9QQ1NfVkZQLgorCShGRklfRVhUUkFfQ0lGX0ZJRUxEUyk6IERlZmluZSBmb3IgYWRkaW5nIFZGUCBoYXJkLWZsb2F0IHNwZWNpZmljCisJZmllbGRzLgorCShGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUKTogRGVmaW5lIGludGVybmFsbHkgdXNlZCB0eXBlIGNvZGUuCisJKEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFKTogU2FtZS4KKwkqIHNyYy9hcm0vc3lzdi5TIChmZmlfY2FsbF9TWVNWKTogQ2hhbmdlIGNhbGwgb2YgZmZpX3ByZXBfYXJncygpIHRvCisJZGlyZWN0IGNhbGwuIE1vdmUgZnVuY3Rpb24gcG9pbnRlciBsb2FkIHVwd2FyZHMuCisJKGZmaV9jYWxsX1ZGUCk6IE5ldyBmdW5jdGlvbi4KKwkoZmZpX2Nsb3N1cmVfVkZQKTogU2FtZS4KKworCSogdGVzdHN1aXRlL2xpYi9saWJmZmktZGcuZXhwIChjaGVjay1mbGFncyk6IE5ldyBmdW5jdGlvbi4KKwkoZGctc2tpcC1pZik6IE5ldyBmdW5jdGlvbi4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmM6IFNraXAgaWYgdGFyZ2V0IGlzIGFybSotKi0qCisJYW5kIGNvbXBpbGVyIG9wdGlvbnMgaW5jbHVkZSAtbWZsb2F0LWFiaT1oYXJkLgorCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmM6IFNhbWUuCisKKzIwMTAtMTAtMDEgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgorCisJUFIgbGliZmZpLzQ1Njc3CisJKiBzcmMveDg2L2ZmaTY0LmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogRW5zdXJlIGNpZi0+Ynl0ZXMgaXMKKwlhIG11bHRpcGxlIG9mIDguCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTIuYzogTmV3IHRlc3QuCisKKzIwMTAtMDgtMjAgIE1hcmsgV2llbGFhcmQgIDxtandAcmVkaGF0LmNvbT4KKworCSogc3JjL2Nsb3N1cmVzLmMgKG9wZW5fdGVtcF9leGVjX2ZpbGVfbW50KTogQ2hlY2sgaWYgZ2V0bW50ZW50X3IKKwlyZXR1cm5zIE5VTEwuCisKKzIwMTAtMDgtMDkgIEFuZHJlYXMgVG9ibGVyICA8YW5kcmVhc3RAZmd6bmV0LmNoPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCB0YXJnZXQgcG93ZXJwYzY0LSotZnJlZWJzZCouCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYzogUGFzcworCS1tbG9uZy1kb3VibGUtMTI4IG9ubHkgdG8gbGludXggdGFyZ2V0cy4KKwkqIHRlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYzogTGlrZXdpc2UuCisJKiB0ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYzogTGlrZXdpc2UuCisKKzIwMTAtMDgtMDUgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworICAgICAgICAqIE1ha2VmaWxlLmFtOiBQYXNzIEZGSV9ERUJVRyBkZWZpbmUgdG8gbXN2Y2Muc2ggZm9yIGxpbmtpbmcgdG8gdGhlCisgICAgICAgIGRlYnVnIENSVCB3aGVuIC0tZW5hYmxlLWRlYnVnIGlzIGdpdmVuLgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzogRGVmaW5lIGl0LgorICAgICAgICAqIG1zdmNjLnNoOiBUcmFuc2xhdGUgLWcgYW5kIC1ERkZJX0RFQlVHIGFwcHJvcHJpYXRlbHkuCisKKzIwMTAtMDgtMDQgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaDogQWRkIFg4Nl9BTlkgZGVmaW5lIGZvciBhbGwgeDg2L3g4Nl82NAorCXBsYXRmb3Jtcy4KKwkqIHNyYy94ODYvZmZpLmM6IFJlbW92ZSByZWR1bmRhbnQgaWZkZWYgY2hlY2tzLgorCSogc3JjL3ByZXBfY2lmLmM6IFB1c2ggc3RhY2sgc3BhY2UgY29tcHV0YXRpb24gaW50byBzcmMveDg2L2ZmaS5jCisJZm9yIFg4Nl9BTlkgc28gcmV0dXJuIHZhbHVlIHNwYWNlIGRvZXNuJ3QgZ2V0IGFkZGVkIHR3aWNlLgorCisyMDEwLTA4LTAzICBOZWlsIFJhc2hicm9va2UgPG5laWxAcGFya3dheWNjLmNvLnVrPgorCisJKiBtc3ZjYy5zaDogRG9uJ3QgcGFzcyAtc2FmZXNlaCB0byBtbDY0IGJlY2F1c2UgYmVoYXZpb3IgaXMgYnVnZ3kuCisKKzIwMTAtMDctMjIgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogc3JjLyovZmZpdGFyZ2V0Lmg6IE1ha2UgRkZJX0xBU1RfQUJJIG9uZSBwYXN0IHRoZSBsYXN0IHZhbGlkIEFCSS4KKwkqIHNyYy9wcmVwX2NpZi5jOiBGaXggQUJJIGFzc2VydGlvbi4KKyAgICAgICAgKiBzcmMvY3Jpcy9mZmkuYzogRGl0dG8uCisKKzIwMTAtMDctMTAgIEV2YW4gUGhvZW5peCAgPGV2YW5AZmFsbGluZ3Nub3cubmV0PgorCisJKiBzcmMvY2xvc3VyZXMuYyAoc2VsaW51eF9lbmFibGVkX2NoZWNrKTogRml4IHN0cm5jbXAgdXNhZ2UgYnVnLgorCisyMDEwLTA3LTA3ICBEYW4gSG9yw6FrIDxkYW5AZGFubnkuY3o+CisKKwkqIGluY2x1ZGUvZmZpLmguaW46IFByb3RlY3QgI2RlZmluZSB3aXRoICNpZm5kZWYuCisJKiBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaDogRGl0dG8uCisJKiBzcmMvczM5MC9mZml0YXJnZXQuaDogRGl0dG8uCisJKiBzcmMvc3BhcmMvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCisyMDEwLTA3LTA3ICAgTmVpbCBSb2JlcnRzIDxuZWlsQGxpbnV4LmludGVsLmNvbT4KKworCSogc3JjL3g4Ni9zeXN2LlMgKGZmaV9jYWxsX1NZU1YpOiBBbGlnbiB0aGUgc3RhY2sgcG9pbnRlciB0bworCTE2LWJ5dGVzLgorCisyMDEwLTA3LTAyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogTWFrZWZpbGUuYW0gKEFNX01BS0VGTEFHUyk6IFBhc3MgYWxzbyBtYW5kaXIgdG8gc3VibWFrZXMuCisJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCisKKzIwMTAtMDUtMTkgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBjb25maWd1cmUuYWMgKGxpYmZmaV9jdl9hc194ODZfcGNyZWwpOiBDaGVjayBmb3IgaWxsZWdhbCBpbiBhcworCW91dHB1dCwgdG9vLgorCShsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wKTogQ2hlY2sgZm9yIC5hc2NpaS4KKwkobGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3ApOiBDaGVjayBmb3IgLnN0cmluZy4KKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KKwkqIGZmaWNvbmZpZy5oLmluOiBSZWdlbmVyYXRlLgorCSogc3JjL3g4Ni9zeXN2LlMgKC5laF9mcmFtZSk6IFVzZSAuYXNjaWksIC5zdHJpbmcgb3IgZXJyb3IuCisKKzIwMTAtMDUtMTEgIERhbiBXaXR0ZSAgPGR3aXR0ZUBtb3ppbGxhLmNvbT4KKworCSogZG9jL2xpYmZmaS50ZXg6IERvY3VtZW50IHByZXZpb3VzIGNoYW5nZS4KKworMjAxMC0wNS0xMSAgTWFrb3RvIEthdG8gPG1fa2F0b0BnYTIuc28tbmV0Lm5lLmpwPgorCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfY2FsbCk6IERvbid0IGNvcHkgc3RydWN0cyBwYXNzZWQgYnkgdmFsdWUuCisKKzIwMTAtMDUtMDUgIE1pY2hhZWwgS29obGVyIDxtaWNoYWVsa29obGVyQGxpdmUuY29tPgorCisJKiBzcmMvZGxtYWxsb2MuYyAoZGxmcmVlKTogRml4IHNwZWxsaW5nLgorCSogc3JjL2lhNjQvZmZpLmMgKGZmaV9wcmVwX2NpZl9tYWNoZGVwKTogRGl0dG8uCisJKiBjb25maWd1cmUuYWM6IERpdHRvLgorCSogY29uZmlndXJlOiBSZWJ1aWx0LgorCisyMDEwLTA0LTEzICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisKKwkqIG1zdmNjLnNoOiBCdWlsZCB3aXRoIC1XMyBpbnN0ZWFkIG9mIC1XYWxsLgorCSogc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jOiBSZW1vdmUgYnVpbGQgd2FybmluZ3MuCisJKiBzcmMveDg2L2ZmaS5jOiBEaXR0by4KKwkqIHNyYy94ODYvZmZpdGFyZ2V0Lmg6IERpdHRvLgorCisyMDEwLTA0LTEyICBEYW4gV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+CisJICAgIFdhbHRlciBNZWlubCA8d3Vub0Bsc3Z3LmRlPgorCisJKiBjb25maWd1cmUuYWM6IEFkZCBPUy8yIHN1cHBvcnQuCisJKiBjb25maWd1cmU6IFJlYnVpbHQuCisJKiBzcmMvY2xvc3VyZXMuYzogRGl0dG8uCisJKiBzcmMvZGxtYWxsb2MuYzogRGl0dG8uCisJKiBzcmMveDg2L3dpbjMyLlM6IERpdHRvLgorCisyMDEwLTA0LTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KKworCSogdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmM6IFJlbW92ZSB1bnVzZWQgYXJncyB2YXJpYWJsZS4KKworMjAxMC0wNC0wMiAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KKworCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCisJKiBhY2xvY2FsLm00OiBSZWdlbmVyYXRlLgorCSogaW5jbHVkZS9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIG1hbi9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKwkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KKworMjAxMC0wMy0zMCAgRGFuIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBtc3ZjYy5zaDogRGlzYWJsZSBidWlsZCB3YXJuaW5ncy4KKwkqIFJFQURNRSAodGVzdGVkKTogQ2xhcmlmeSB3aW5kb3dzIGJ1aWxkIHByb2NlZHVyZS4KKworMjAxMC0wMy0xNSAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CisKKwkqIGNvbmZpZ3VyZS5hYyAobGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlKTogTmV3IHRlc3QuCisJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCisJKiBmZmljb25maWcuaC5pbjogUmVnZW5lcmF0ZS4KKwkqIGxpYmZmaS9zcmMveDg2L3VuaXg2NC5TICguZWhfZnJhbWUpCisJW0hBVkVfQVNfWDg2XzY0X1VOV0lORF9TRUNUSU9OX1RZUEVdOiBVc2UgQHVud2luZCBzZWN0aW9uIHR5cGUuCisKIDIwMTAtMDMtMTQgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0B1YnVudHUuY29tPgogCiAJKiBzcmMveDg2L2ZmaTY0LmM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCiAJKiBzcmMveDg2L2ZmaS5jOiBVc2UgLyogLi4uICovIGNvbW1lbnQgc3R5bGUuCiAKKzIwMTAtMDItMjQgIFJhaW5lciBPcnRoICA8cm9AQ2VCaVRlYy5VbmktQmllbGVmZWxkLkRFPgorCisJKiBkb2MvbGliZmZpLnRleGkgKFRoZSBDbG9zdXJlIEFQSSk6IEZpeCB0eXBvLgorCSogZG9jL2xpYmZmaS5pbmZvOiBSZW1vdmUuCisKKzIwMTAtMDItMTUgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0B1YnVudHUuY29tPgorCisJKiBzcmMvYXJtL3N5c3YuUyAoX19BUk1fQVJDSF9fKTogRGVmaW5lIGZvciBwcm9jZXNzb3IKKwlfX0FSTV9BUkNIXzdFTV9fLgorCisyMDEwLTAxLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KKworCSogUkVBRE1FOiBBZGQgbm90ZXMgb24gYnVpbGRpbmcgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKworMjAxMC0wMS0xNSAgRGFuaWVsIFdpdHRlICA8ZHdpdHRlQG1vemlsbGEuY29tPgorCisJKiBtc3ZjYy5zaDogTmV3IGZpbGUuCisKKwkqIHNyYy94ODYvd2luMzIuUzogUG9ydCBhc3NlbWJseSByb3V0aW5lcyB0byBNU1ZDIGFuZCAjaWZkZWYuCisJKiBzcmMveDg2L2ZmaS5jOiBUd2VhayBmdW5jdGlvbiBkZWNsYXJhdGlvbiBhbmQgcmVtb3ZlIGV4Y2VzcworCXBhcmVucy4KKwkqIGluY2x1ZGUvZmZpLmguaW46IEFkZCBfX2RlY2xzcGVjKGFsaWduKDgpKSB0byB0eXBlZGVmIHN0cnVjdAorCWZmaV9jbG9zdXJlLgorCisJKiBzcmMveDg2L2ZmaS5jOiBNZXJnZSBmZmlfY2FsbF9TWVNWIGFuZCBmZmlfY2FsbF9TVERDQUxMIGludG8gbmV3CisJZnVuY3Rpb24gZmZpX2NhbGxfd2luMzIgb24gWDg2X1dJTjMyLgorCSogc3JjL3g4Ni93aW4zMi5TIChmZmlfY2FsbF9TWVNWKTogUmVuYW1lIHRvIGZmaV9jYWxsX3dpbjMyLgorCShmZmlfY2FsbF9TVERDQUxMKTogUmVtb3ZlLgorCisJKiBzcmMvcHJlcF9jaWYuYyAoZmZpX3ByZXBfY2lmKTogTW92ZSBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGNvZGUKKwl0byBmZmlfcHJlcF9jaWZfbWFjaGRlcCBmb3IgeDg2LgorCSogc3JjL3g4Ni9mZmkuYyAoZmZpX3ByZXBfY2lmX21hY2hkZXApOiBUbyBoZXJlLgorCisyMDEwLTAxLTE1ICBPbGl2ZXIgS2lkZGxlICA8b2tpZGRsZUB5YWhvby5jby51az4KKworCSogc3JjL3g4Ni9mZml0YXJnZXQuaCAoZmZpX2FiaSk6IENoZWNrIGZvciBfX2kzODYgYW5kIF9fYW1kNjQgZm9yCisJU3VuIFN0dWRpbyBjb21waWxlciBjb21wYXRpYmlsaXR5LgorCisyMDEwLTAxLTEyICBDb25yYWQgSXJ3aW4gPGNvbnJhZC5pcndpbkBnbWFpbC5jb20+CisKKwkqIGRvYy9saWJmZmkudGV4aTogQWRkIGNsb3N1cmUgZXhhbXBsZS4KKwogMjAxMC0wMS0wNyAgUmFpbmVyIE9ydGggIDxyb0BDZUJpVGVjLlVuaS1CaWVsZWZlbGQuREU+CiAKIAlQUiBsaWJmZmkvNDA3MDEKQEAgLTE0OCw2ICsxMDUxLDEzIEBACiAJKiBzcmMvcGEvZmZpLmMgKGZmaV9jbG9zdXJlX2lubmVyX3BhMzIpOiBIYW5kbGUgRkZJX1RZUEVfTE9OR0RPVUJMRQogCXR5cGUgb24gSFAtVVguCiAKKzIwMTItMDItMTMgIEthaSBUaWV0eiAgPGt0aWV0ekByZWRoYXQuY29tPgorCisJUFIgbGliZmZpLzUyMjIxCisJKiBzcmMveDg2L2ZmaS5jIChmZmlfcHJlcF9yYXdfY2xvc3VyZV9sb2MpOiBBZGQgdGhpc2NhbGwKKwlzdXBwb3J0IGZvciBYODZfV0lOMzIuCisJKEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwpOiBGaXggZGlzcGxhY2VtZW50LgorCiAyMDA5LTEyLTExICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgogCiAJKiBzcmMvc3BhcmMvZmZpLmMgKGZmaV9jbG9zdXJlX3NwYXJjX2lubmVyX3Y5KTogUHJvcGVybHkgYWxpZ24gJ2xvbmcKQEAgLTMyMiw2ICsxMjMyLDExIEBACiAJKiBtYW4vTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCiAJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCiAKKzIwMTEtMDgtMjIgIEphc3BlciBMaWV2aXNzZSBBZHJpYWFuc2UgPGphc3BlckBvcGVuYnNkLm9yZz4KKworCSogY29uZmlndXJlLmFjOiBBZGQgT3BlbkJTRC9ocHBhIGFuZCBPcGVuQlNEL3Bvd2VycGMgc3VwcG9ydC4KKwkqIGNvbmZpZ3VyZTogUmVidWlsdC4KKwogMjAwOS0wNy0zMCAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KIAogCSogY29uZmlndXJlLmFjIChfQUNfQVJHX1ZBUl9QUkVDSU9VUyk6IFVzZSBtNF9yZW5hbWVfZm9yY2UuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0NoYW5nZUxvZy5saWJmZmkKaW5kZXggNTI3MmYzMy4uZjNlZThiMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9DaGFuZ2VMb2cubGliZmZpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvQ2hhbmdlTG9nLmxpYmZmaQpAQCAtMSwzNSArMSw2IEBACi0yMDEwLTAxLTE1ICBBbnRob255IEdyZWVuICA8Z3JlZW5AcmVkaGF0LmNvbT4KKzIwMTEtMDItMDggIEFuZHJlYXMgVG9ibGVyICA8YW5kcmVhc3RAZmd6bmV0LmNoPgogCi0JKiBSRUFETUU6IEFkZCBub3RlcyBvbiBidWlsZGluZyB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotCi0yMDEwLTAxLTE1ICBEYW5pZWwgV2l0dGUgIDxkd2l0dGVAbW96aWxsYS5jb20+Ci0KLQkqIG1zdmNjLnNoOiBOZXcgZmlsZS4KLQotCSogc3JjL3g4Ni93aW4zMi5TOiBQb3J0IGFzc2VtYmx5IHJvdXRpbmVzIHRvIE1TVkMgYW5kICNpZmRlZi4KLQkqIHNyYy94ODYvZmZpLmM6IFR3ZWFrIGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGFuZCByZW1vdmUgZXhjZXNzCi0JcGFyZW5zLgotCSogaW5jbHVkZS9mZmkuaC5pbjogQWRkIF9fZGVjbHNwZWMoYWxpZ24oOCkpIHRvIHR5cGVkZWYgc3RydWN0Ci0JZmZpX2Nsb3N1cmUuCi0KLQkqIHNyYy94ODYvZmZpLmM6IE1lcmdlIGZmaV9jYWxsX1NZU1YgYW5kIGZmaV9jYWxsX1NURENBTEwgaW50byBuZXcKLQlmdW5jdGlvbiBmZmlfY2FsbF93aW4zMiBvbiBYODZfV0lOMzIuCi0JKiBzcmMveDg2L3dpbjMyLlMgKGZmaV9jYWxsX1NZU1YpOiBSZW5hbWUgdG8gZmZpX2NhbGxfd2luMzIuCi0JKGZmaV9jYWxsX1NURENBTEwpOiBSZW1vdmUuCi0KLQkqIHNyYy9wcmVwX2NpZi5jIChmZmlfcHJlcF9jaWYpOiBNb3ZlIHN0YWNrIHNwYWNlIGFsbG9jYXRpb24gY29kZQotCXRvIGZmaV9wcmVwX2NpZl9tYWNoZGVwIGZvciB4ODYuCi0JKiBzcmMveDg2L2ZmaS5jIChmZmlfcHJlcF9jaWZfbWFjaGRlcCk6IFRvIGhlcmUuCi0KLTIwMTAtMDEtMTUgIE9saXZlciBLaWRkbGUgIDxva2lkZGxlQHlhaG9vLmNvLnVrPgotCi0JKiBzcmMveDg2L2ZmaXRhcmdldC5oIChmZmlfYWJpKTogQ2hlY2sgZm9yIF9faTM4NiBhbmQgX19hbWQ2NCBmb3IKLQlTdW4gU3R1ZGlvIGNvbXBpbGVyIGNvbXBhdGliaWxpdHkuIAotCi0yMDEwLTAxLTEyICBDb25yYWQgSXJ3aW4gPGNvbnJhZC5pcndpbkBnbWFpbC5jb20+Ci0KLQkqIGRvYy9saWJmZmkudGV4aTogQWRkIGNsb3N1cmUgZXhhbXBsZS4KLQkqIGRvYy9saWJmZmkuaW5mbzogUmVidWlsdC4KKwkqIHRlc3RzdWl0ZS9saWIvbGliZmZpLmV4cDogVHdlYWsgZm9yIHN0YW5kLWFsb25lIG1vZGUuCiAKIDIwMDktMTItMjUgIFNhbXVsaSBTdW9taW5lbiAgPHNzdW9taW5lbkBnZW50b28ub3JnPgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL0xJQ0VOU0UKaW5kZXggZWMyZmQ2OS4uYWE2MDM0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9MSUNFTlNFCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTElDRU5TRQpAQCAtMSw0ICsxLDQgQEAKLWxpYmZmaSAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDA5ICBBbnRob255IEdyZWVuLCBSZWQgSGF0LCBJbmMgYW5kIG90aGVycy4gIAorbGliZmZpIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMTIgIEFudGhvbnkgR3JlZW4sIFJlZCBIYXQsIEluYyBhbmQgb3RoZXJzLgogU2VlIHNvdXJjZSBmaWxlcyBmb3IgZGV0YWlscy4KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC05LDggKzksOCBAQAogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAKLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi1pbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIAogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuYW0KaW5kZXggZjQ3ZGQxYS4uNGE4NTVkNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5hbQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmFtCkBAIC0xMCwyOSArMTAsMzIgQEAKIAlzcmMvYXZyMzIvZmZpLmMgc3JjL2F2cjMyL3N5c3YuUyBzcmMvYXZyMzIvZmZpdGFyZ2V0LmggXAogCXNyYy9jcmlzL2ZmaS5jIHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZml0YXJnZXQuaCBcCiAJc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvZmZpdGFyZ2V0Lmggc3JjL2lhNjQvaWE2NF9mbGFncy5oIFwKLQlzcmMvaWE2NC91bml4LlMgXAotCXNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKLQlzcmMvbWlwcy9mZml0YXJnZXQuaCBcCi0Jc3JjL20zMnIvZmZpLmMgc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMgc3JjL202OGsvZmZpdGFyZ2V0LmggXAotCXNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBcCisJc3JjL2lhNjQvdW5peC5TIHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL24zMi5TIHNyYy9taXBzL28zMi5TIFwKKwlzcmMvbWlwcy9mZml0YXJnZXQuaCBzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgXAorCXNyYy9tMzJyL2ZmaXRhcmdldC5oIHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBcCisJc3JjL202OGsvZmZpdGFyZ2V0Lmggc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKIAlzcmMvcG93ZXJwYy9saW51eDY0LlMgc3JjL3Bvd2VycGMvbGludXg2NF9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggXAotCXNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2Rhcndpbi5TIFwKLQlzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgXAotCXNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBcCi0Jc3JjL3MzOTAvZmZpLmMgc3JjL3MzOTAvc3lzdi5TIHNyYy9zMzkwL2ZmaXRhcmdldC5oIFwKLQlzcmMvc2gvZmZpLmMgc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpdGFyZ2V0LmggXAotCXNyYy9zaDY0L2ZmaS5jIHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NwYXJjL3Y4LlMgc3JjL3NwYXJjL3Y5LlMgc3JjL3NwYXJjL2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvZmZpLmMgc3JjL3g4Ni9kYXJ3aW42NC5TIFwKLQlzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TIHNyYy94ODYvd2luMzIuUyBzcmMveDg2L3dpbjY0LlMgXAotCXNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mcmVlYnNkLlMgXAotCXNyYy94ODYvZmZpNjQuYyBzcmMveDg2L3VuaXg2NC5TIHNyYy94ODYvZmZpdGFyZ2V0LmggXAotCXNyYy9wYS9mZml0YXJnZXQuaCBzcmMvcGEvZmZpLmMgc3JjL3BhL2xpbnV4LlMgc3JjL3BhL2hwdXgzMi5TIFwKLQlzcmMvZnJ2L2ZmaS5jIHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpdGFyZ2V0Lmggc3JjL2RsbWFsbG9jLmMgXAotCWxpYnRvb2wtdmVyc2lvbiBDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgXAotCW00L2x0fm9ic29sZXRlLm00IG00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNAorCXNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvYXNtLmggc3JjL3Bvd2VycGMvYWl4LlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgXAorCXNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIFwKKwlzcmMvcG93ZXJwYy9mZml0YXJnZXQuaCBzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgXAorCXNyYy9zMzkwL2ZmaXRhcmdldC5oIHNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TCVwKKwlzcmMvc2gvZmZpdGFyZ2V0Lmggc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIFwKKwlzcmMvc2g2NC9mZml0YXJnZXQuaCBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBcCisJc3JjL3NwYXJjL2ZmaXRhcmdldC5oIHNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAorCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvZGFyd2luLlMgXAorCXNyYy94ODYvd2luNjQuUyBzcmMveDg2L2ZyZWVic2QuUyBzcmMveDg2L2ZmaTY0LmMgXAorCXNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBzcmMvcGEvZmZpdGFyZ2V0LmgJXAorCXNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgc3JjL2Zydi9mZmkuYyBcCisJc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCisJc3JjL21veGllL2ZmaS5jIHNyYy9tb3hpZS9lYWJpLlMgbGlidG9vbC12ZXJzaW9uIFwKKwlDaGFuZ2VMb2cubGliZmZpIG00L2xpYnRvb2wubTQgbTQvbHR+b2Jzb2xldGUubTQgXAorCW00L2x0b3B0aW9ucy5tNCBtNC9sdHN1Z2FyLm00IG00L2x0dmVyc2lvbi5tNCBcCisJbTQvbHR2ZXJzaW9uLm00IHNyYy9hcm0vZ2VudHJhbXAuc2ggc3JjL2RlYnVnLmMgXAorCW1zdmNjLnNoIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorCWdlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkgXAorICAgICAgICBsaWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBcCisJc3JjL2FybS90cmFtcG9saW5lLlMKIAogaW5mb19URVhJTkZPUyA9IGRvYy9saWJmZmkudGV4aQogCkBAIC02OSw2ICs3Miw3IEBACiAJImV4ZWNfcHJlZml4PSQoZXhlY19wcmVmaXgpIiBcCiAJImluZm9kaXI9JChpbmZvZGlyKSIgXAogCSJsaWJkaXI9JChsaWJkaXIpIiBcCisJIm1hbmRpcj0kKG1hbmRpcikiIFwKIAkicHJlZml4PSQocHJlZml4KSIgXAogCSJBUj0kKEFSKSIgXAogCSJBUz0kKEFTKSIgXApAQCAtODYsNyArOTAsNyBAQAogbGliX0xUTElCUkFSSUVTID0gbGliZmZpLmxhCiBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJmZmlfY29udmVuaWVuY2UubGEKIAotbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvZGVidWcuYyBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCitsaWJmZmlfbGFfU09VUkNFUyA9IHNyYy9wcmVwX2NpZi5jIHNyYy90eXBlcy5jIFwKIAkJc3JjL3Jhd19hcGkuYyBzcmMvamF2YV9yYXdfYXBpLmMgc3JjL2Nsb3N1cmVzLmMKIAogcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwpAQCAtOTQsNiArOTgsMTAgQEAKIAogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTID0KIAoraWYgRkZJX0RFQlVHCitub2Rpc3RfbGliZmZpX2xhX1NPVVJDRVMgKz0gc3JjL2RlYnVnLmMKK2VuZGlmCisKIGlmIE1JUFMKIG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvbWlwcy9mZmkuYyBzcmMvbWlwcy9vMzIuUyBzcmMvbWlwcy9uMzIuUwogZW5kaWYKQEAgLTE0MSw2ICsxNDksOSBAQAogZW5kaWYKIGlmIEFSTQogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9hcm0vc3lzdi5TIHNyYy9hcm0vZmZpLmMKK2lmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKK25vZGlzdF9saWJmZmlfbGFfU09VUkNFUyArPSBzcmMvYXJtL3RyYW1wb2xpbmUuUworZW5kaWYKIGVuZGlmCiBpZiBBVlIzMgogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaS5jCkBAIC0xNTEsNiArMTYyLDkgQEAKIGlmIEZSVgogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpLmMKIGVuZGlmCitpZiBNT1hJRQorbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9tb3hpZS9lYWJpLlMgc3JjL21veGllL2ZmaS5jCitlbmRpZgogaWYgUzM5MAogbm9kaXN0X2xpYmZmaV9sYV9TT1VSQ0VTICs9IHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZmkuYwogZW5kaWYKQEAgLTE3MywxMiArMTg3LDE3IEBACiBsaWJmZmlfY29udmVuaWVuY2VfbGFfU09VUkNFUyA9ICQobGliZmZpX2xhX1NPVVJDRVMpCiBub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUykKIAotQU1fQ0ZMQUdTID0gLVdhbGwgLWcgLWZleGNlcHRpb25zCitBTV9DRkxBR1MgPSAtZworaWYgRkZJX0RFQlVHCisjIEJ1aWxkIGRlYnVnLiBEZWZpbmUgRkZJX0RFQlVHIG9uIHRoZSBjb21tYW5kbGluZSBzbyB0aGF0LCB3aGVuIGJ1aWxkaW5nIHdpdGgKKyMgTVNWQywgaXQgY2FuIGxpbmsgYWdhaW5zdCB0aGUgZGVidWcgQ1JULgorQU1fQ0ZMQUdTICs9IC1ERkZJX0RFQlVHCitlbmRpZgogCiBsaWJmZmlfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gYGdyZXAgLXYgJ15cIycgJChzcmNkaXIpL2xpYnRvb2wtdmVyc2lvbmAgJChMVExERkxBR1MpICQoQU1fTFRMREZMQUdTKQogCi1BTV9DUFBGTEFHUyA9IC1JLiAtSSQodG9wX3NyY2RpcikvaW5jbHVkZSAtSWluY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL3NyYwotQU1fQ0NBU0ZMQUdTID0gJChBTV9DUFBGTEFHUykKK0FNX0NQUEZMQUdTID0gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1JaW5jbHVkZSAtSSQodG9wX3NyY2Rpcikvc3JjIC1ERkZJX0JVSUxESU5HCitBTV9DQ0FTRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtZwogCiAjIE5vIGluc3RhbGwtaHRtbCBvciBpbnN0YWxsLXBkZiBzdXBwb3J0IGluIGF1dG9tYWtlIHlldAogLlBIT05ZOiBpbnN0YWxsLWh0bWwgaW5zdGFsbC1wZGYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL01ha2VmaWxlLmluCmluZGV4IDQ5YWZjYzEuLjQzZWQ4NTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0zNiwzOCArMzYsNDUgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLUBNSVBTX1RSVUVAYW1fX2FwcGVuZF8xID0gc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbzMyLlMgc3JjL21pcHMvbjMyLlMKLUBYODZfVFJVRUBhbV9fYXBwZW5kXzIgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCi1AWDg2X0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzMgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvZnJlZWJzZC5TCi1AWDg2X1dJTjMyX1RSVUVAYW1fX2FwcGVuZF80ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjMyLlMKLUBYODZfV0lONjRfVFJVRUBhbV9fYXBwZW5kXzUgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvd2luNjQuUwotQFg4Nl9EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzYgPSBzcmMveDg2L2ZmaS5jIHNyYy94ODYvZGFyd2luLlMgc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvZGFyd2luNjQuUwotQFNQQVJDX1RSVUVAYW1fX2FwcGVuZF83ID0gc3JjL3NwYXJjL2ZmaS5jIHNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TCi1AQUxQSEFfVFJVRUBhbV9fYXBwZW5kXzggPSBzcmMvYWxwaGEvZmZpLmMgc3JjL2FscGhhL29zZi5TCi1ASUE2NF9UUlVFQGFtX19hcHBlbmRfOSA9IHNyYy9pYTY0L2ZmaS5jIHNyYy9pYTY0L3VuaXguUwotQE0zMlJfVFJVRUBhbV9fYXBwZW5kXzEwID0gc3JjL20zMnIvc3lzdi5TIHNyYy9tMzJyL2ZmaS5jCi1ATTY4S19UUlVFQGFtX19hcHBlbmRfMTEgPSBzcmMvbTY4ay9mZmkuYyBzcmMvbTY4ay9zeXN2LlMKLUBQT1dFUlBDX1RSVUVAYW1fX2FwcGVuZF8xMiA9IHNyYy9wb3dlcnBjL2ZmaS5jIHNyYy9wb3dlcnBjL3N5c3YuUyBzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIHNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUwotQFBPV0VSUENfQUlYX1RSVUVAYW1fX2FwcGVuZF8xMyA9IHNyYy9wb3dlcnBjL2ZmaV9kYXJ3aW4uYyBzcmMvcG93ZXJwYy9haXguUyBzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCi1AUE9XRVJQQ19EQVJXSU5fVFJVRUBhbV9fYXBwZW5kXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2Rhcndpbi5TIHNyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKLUBQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fYXBwZW5kXzE1ID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKLUBBUk1fVFJVRUBhbV9fYXBwZW5kXzE2ID0gc3JjL2FybS9zeXN2LlMgc3JjL2FybS9mZmkuYwotQEFWUjMyX1RSVUVAYW1fX2FwcGVuZF8xNyA9IHNyYy9hdnIzMi9zeXN2LlMgc3JjL2F2cjMyL2ZmaS5jCi1ATElCRkZJX0NSSVNfVFJVRUBhbV9fYXBwZW5kXzE4ID0gc3JjL2NyaXMvc3lzdi5TIHNyYy9jcmlzL2ZmaS5jCi1ARlJWX1RSVUVAYW1fX2FwcGVuZF8xOSA9IHNyYy9mcnYvZWFiaS5TIHNyYy9mcnYvZmZpLmMKLUBTMzkwX1RSVUVAYW1fX2FwcGVuZF8yMCA9IHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZmkuYwotQFg4Nl82NF9UUlVFQGFtX19hcHBlbmRfMjEgPSBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCi1AU0hfVFJVRUBhbV9fYXBwZW5kXzIyID0gc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpLmMKLUBTSDY0X1RSVUVAYW1fX2FwcGVuZF8yMyA9IHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZmkuYwotQFBBX0xJTlVYX1RSVUVAYW1fX2FwcGVuZF8yNCA9IHNyYy9wYS9saW51eC5TIHNyYy9wYS9mZmkuYwotQFBBX0hQVVhfVFJVRUBhbV9fYXBwZW5kXzI1ID0gc3JjL3BhL2hwdXgzMi5TIHNyYy9wYS9mZmkuYworQEZGSV9ERUJVR19UUlVFQGFtX19hcHBlbmRfMSA9IHNyYy9kZWJ1Zy5jCitATUlQU19UUlVFQGFtX19hcHBlbmRfMiA9IHNyYy9taXBzL2ZmaS5jIHNyYy9taXBzL28zMi5TIHNyYy9taXBzL24zMi5TCitAWDg2X1RSVUVAYW1fX2FwcGVuZF8zID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUworQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX2FwcGVuZF80ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2ZyZWVic2QuUworQFg4Nl9XSU4zMl9UUlVFQGFtX19hcHBlbmRfNSA9IHNyYy94ODYvZmZpLmMgc3JjL3g4Ni93aW4zMi5TCitAWDg2X1dJTjY0X1RSVUVAYW1fX2FwcGVuZF82ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3dpbjY0LlMKK0BYODZfREFSV0lOX1RSVUVAYW1fX2FwcGVuZF83ID0gc3JjL3g4Ni9mZmkuYyBzcmMveDg2L2Rhcndpbi5TIHNyYy94ODYvZmZpNjQuYyBzcmMveDg2L2RhcndpbjY0LlMKK0BTUEFSQ19UUlVFQGFtX19hcHBlbmRfOCA9IHNyYy9zcGFyYy9mZmkuYyBzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUworQEFMUEhBX1RSVUVAYW1fX2FwcGVuZF85ID0gc3JjL2FscGhhL2ZmaS5jIHNyYy9hbHBoYS9vc2YuUworQElBNjRfVFJVRUBhbV9fYXBwZW5kXzEwID0gc3JjL2lhNjQvZmZpLmMgc3JjL2lhNjQvdW5peC5TCitATTMyUl9UUlVFQGFtX19hcHBlbmRfMTEgPSBzcmMvbTMyci9zeXN2LlMgc3JjL20zMnIvZmZpLmMKK0BNNjhLX1RSVUVAYW1fX2FwcGVuZF8xMiA9IHNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUworQFBPV0VSUENfVFJVRUBhbV9fYXBwZW5kXzEzID0gc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIHNyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMgc3JjL3Bvd2VycGMvbGludXg2NC5TIHNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5TCitAUE9XRVJQQ19BSVhfVFJVRUBhbV9fYXBwZW5kXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2FpeC5TIHNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKK0BQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19hcHBlbmRfMTUgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgc3JjL3Bvd2VycGMvZGFyd2luLlMgc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUworQFBPV0VSUENfRlJFRUJTRF9UUlVFQGFtX19hcHBlbmRfMTYgPSBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUworQEFSTV9UUlVFQGFtX19hcHBlbmRfMTcgPSBzcmMvYXJtL3N5c3YuUyBzcmMvYXJtL2ZmaS5jCitAQVJNX1RSVUVAQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRUBhbV9fYXBwZW5kXzE4ID0gc3JjL2FybS90cmFtcG9saW5lLlMKK0BBVlIzMl9UUlVFQGFtX19hcHBlbmRfMTkgPSBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZmkuYworQExJQkZGSV9DUklTX1RSVUVAYW1fX2FwcGVuZF8yMCA9IHNyYy9jcmlzL3N5c3YuUyBzcmMvY3Jpcy9mZmkuYworQEZSVl9UUlVFQGFtX19hcHBlbmRfMjEgPSBzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaS5jCitATU9YSUVfVFJVRUBhbV9fYXBwZW5kXzIyID0gc3JjL21veGllL2VhYmkuUyBzcmMvbW94aWUvZmZpLmMKK0BTMzkwX1RSVUVAYW1fX2FwcGVuZF8yMyA9IHNyYy9zMzkwL3N5c3YuUyBzcmMvczM5MC9mZmkuYworQFg4Nl82NF9UUlVFQGFtX19hcHBlbmRfMjQgPSBzcmMveDg2L2ZmaTY0LmMgc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaS5jIHNyYy94ODYvc3lzdi5TCitAU0hfVFJVRUBhbV9fYXBwZW5kXzI1ID0gc3JjL3NoL3N5c3YuUyBzcmMvc2gvZmZpLmMKK0BTSDY0X1RSVUVAYW1fX2FwcGVuZF8yNiA9IHNyYy9zaDY0L3N5c3YuUyBzcmMvc2g2NC9mZmkuYworQFBBX0xJTlVYX1RSVUVAYW1fX2FwcGVuZF8yNyA9IHNyYy9wYS9saW51eC5TIHNyYy9wYS9mZmkuYworQFBBX0hQVVhfVFJVRUBhbV9fYXBwZW5kXzI4ID0gc3JjL3BhL2hwdXgzMi5TIHNyYy9wYS9mZmkuYworIyBCdWlsZCBkZWJ1Zy4gRGVmaW5lIEZGSV9ERUJVRyBvbiB0aGUgY29tbWFuZGxpbmUgc28gdGhhdCwgd2hlbiBidWlsZGluZyB3aXRoCisjIE1TVkMsIGl0IGNhbiBsaW5rIGFnYWluc3QgdGhlIGRlYnVnIENSVC4KK0BGRklfREVCVUdfVFJVRUBhbV9fYXBwZW5kXzI5ID0gLURGRklfREVCVUcKIHN1YmRpciA9IC4KIERJU1RfQ09NTU9OID0gUkVBRE1FICQoYW1fX2NvbmZpZ3VyZV9kZXBzKSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXAogCSQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHNyY2RpcikvZG9jL3N0YW1wLXZ0aSBcCiAJJChzcmNkaXIpL2RvYy92ZXJzaW9uLnRleGkgJChzcmNkaXIpL2ZmaWNvbmZpZy5oLmluIFwKLQkkKHNyY2RpcikvbGliZmZpLnBjLmluICQodG9wX3NyY2RpcikvY29uZmlndXJlIENoYW5nZUxvZyBcCi0JY29tcGlsZSBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiBkZXBjb21wIGluc3RhbGwtc2ggbHRtYWluLnNoIFwKLQltZGF0ZS1zaCBtaXNzaW5nIHRleGluZm8udGV4CisJJChzcmNkaXIpL2ZmaWNvbmZpZy5weS5pbiAkKHNyY2RpcikvbGliZmZpLnBjLmluIFwKKwkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBDaGFuZ2VMb2cgY29tcGlsZSBjb25maWcuZ3Vlc3MgXAorCWNvbmZpZy5zdWIgZGVwY29tcCBpbnN0YWxsLXNoIGx0bWFpbi5zaCBtZGF0ZS1zaCBtaXNzaW5nIFwKKwl0ZXhpbmZvLnRleAogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvYWNpbmNsdWRlLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwpAQCAtNzcsNyArODQsNyBAQAogIGNvbmZpZ3VyZS5saW5lbm8gY29uZmlnLnN0YXR1cy5saW5lbm8KIG1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCiBDT05GSUdfSEVBREVSID0gZmZpY29uZmlnLmgKLUNPTkZJR19DTEVBTl9GSUxFUyA9IGxpYmZmaS5wYworQ09ORklHX0NMRUFOX0ZJTEVTID0gbGliZmZpLnBjIGZmaWNvbmZpZy5weQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KIGFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwogYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKQEAgLTEwMCw1MSArMTA3LDYwIEBACiBhbV9fYmFzZV9saXN0ID0gXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCithbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCisgIHRlc3QgLXogIiQkZmlsZXMiIFwKKyAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKKyAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCisgIH0KIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChsaWJkaXIpIiAiJChERVNURElSKSQoaW5mb2RpcikiIFwKIAkiJChERVNURElSKSQocGtnY29uZmlnZGlyKSIKIExUTElCUkFSSUVTID0gJChsaWJfTFRMSUJSQVJJRVMpICQobm9pbnN0X0xUTElCUkFSSUVTKQogbGliZmZpX2xhX0xJQkFERCA9CiBhbV9fZGlyc3RhbXAgPSAkKGFtX19sZWFkaW5nX2RvdClkaXJzdGFtcAotYW1fbGliZmZpX2xhX09CSkVDVFMgPSBzcmMvZGVidWcubG8gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBcCi0Jc3JjL3Jhd19hcGkubG8gc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KLUBNSVBTX1RSVUVAYW1fX29iamVjdHNfMSA9IHNyYy9taXBzL2ZmaS5sbyBzcmMvbWlwcy9vMzIubG8gXAorYW1fbGliZmZpX2xhX09CSkVDVFMgPSBzcmMvcHJlcF9jaWYubG8gc3JjL3R5cGVzLmxvIHNyYy9yYXdfYXBpLmxvIFwKKwlzcmMvamF2YV9yYXdfYXBpLmxvIHNyYy9jbG9zdXJlcy5sbworQEZGSV9ERUJVR19UUlVFQGFtX19vYmplY3RzXzEgPSBzcmMvZGVidWcubG8KK0BNSVBTX1RSVUVAYW1fX29iamVjdHNfMiA9IHNyYy9taXBzL2ZmaS5sbyBzcmMvbWlwcy9vMzIubG8gXAogQE1JUFNfVFJVRUAJc3JjL21pcHMvbjMyLmxvCi1AWDg2X1RSVUVAYW1fX29iamVjdHNfMiA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvc3lzdi5sbwotQFg4Nl9GUkVFQlNEX1RSVUVAYW1fX29iamVjdHNfMyA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZnJlZWJzZC5sbwotQFg4Nl9XSU4zMl9UUlVFQGFtX19vYmplY3RzXzQgPSBzcmMveDg2L2ZmaS5sbyBzcmMveDg2L3dpbjMyLmxvCi1AWDg2X1dJTjY0X1RSVUVAYW1fX29iamVjdHNfNSA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luNjQubG8KLUBYODZfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfNiA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvZGFyd2luLmxvIFwKK0BYODZfVFJVRUBhbV9fb2JqZWN0c18zID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9zeXN2LmxvCitAWDg2X0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c180ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9mcmVlYnNkLmxvCitAWDg2X1dJTjMyX1RSVUVAYW1fX29iamVjdHNfNSA9IHNyYy94ODYvZmZpLmxvIHNyYy94ODYvd2luMzIubG8KK0BYODZfV0lONjRfVFJVRUBhbV9fb2JqZWN0c182ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni93aW42NC5sbworQFg4Nl9EQVJXSU5fVFJVRUBhbV9fb2JqZWN0c183ID0gc3JjL3g4Ni9mZmkubG8gc3JjL3g4Ni9kYXJ3aW4ubG8gXAogQFg4Nl9EQVJXSU5fVFJVRUAJc3JjL3g4Ni9mZmk2NC5sbyBzcmMveDg2L2RhcndpbjY0LmxvCi1AU1BBUkNfVFJVRUBhbV9fb2JqZWN0c183ID0gc3JjL3NwYXJjL2ZmaS5sbyBzcmMvc3BhcmMvdjgubG8gXAorQFNQQVJDX1RSVUVAYW1fX29iamVjdHNfOCA9IHNyYy9zcGFyYy9mZmkubG8gc3JjL3NwYXJjL3Y4LmxvIFwKIEBTUEFSQ19UUlVFQAlzcmMvc3BhcmMvdjkubG8KLUBBTFBIQV9UUlVFQGFtX19vYmplY3RzXzggPSBzcmMvYWxwaGEvZmZpLmxvIHNyYy9hbHBoYS9vc2YubG8KLUBJQTY0X1RSVUVAYW1fX29iamVjdHNfOSA9IHNyYy9pYTY0L2ZmaS5sbyBzcmMvaWE2NC91bml4LmxvCi1ATTMyUl9UUlVFQGFtX19vYmplY3RzXzEwID0gc3JjL20zMnIvc3lzdi5sbyBzcmMvbTMyci9mZmkubG8KLUBNNjhLX1RSVUVAYW1fX29iamVjdHNfMTEgPSBzcmMvbTY4ay9mZmkubG8gc3JjL202OGsvc3lzdi5sbwotQFBPV0VSUENfVFJVRUBhbV9fb2JqZWN0c18xMiA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBzcmMvcG93ZXJwYy9zeXN2LmxvIFwKK0BBTFBIQV9UUlVFQGFtX19vYmplY3RzXzkgPSBzcmMvYWxwaGEvZmZpLmxvIHNyYy9hbHBoYS9vc2YubG8KK0BJQTY0X1RSVUVAYW1fX29iamVjdHNfMTAgPSBzcmMvaWE2NC9mZmkubG8gc3JjL2lhNjQvdW5peC5sbworQE0zMlJfVFJVRUBhbV9fb2JqZWN0c18xMSA9IHNyYy9tMzJyL3N5c3YubG8gc3JjL20zMnIvZmZpLmxvCitATTY4S19UUlVFQGFtX19vYmplY3RzXzEyID0gc3JjL202OGsvZmZpLmxvIHNyYy9tNjhrL3N5c3YubG8KK0BQT1dFUlBDX1RSVUVAYW1fX29iamVjdHNfMTMgPSBzcmMvcG93ZXJwYy9mZmkubG8gc3JjL3Bvd2VycGMvc3lzdi5sbyBcCiBAUE9XRVJQQ19UUlVFQAlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5sbyBcCiBAUE9XRVJQQ19UUlVFQAlzcmMvcG93ZXJwYy9saW51eDY0LmxvIFwKIEBQT1dFUlBDX1RSVUVACXNyYy9wb3dlcnBjL2xpbnV4NjRfY2xvc3VyZS5sbwotQFBPV0VSUENfQUlYX1RSVUVAYW1fX29iamVjdHNfMTMgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmxvIFwKK0BQT1dFUlBDX0FJWF9UUlVFQGFtX19vYmplY3RzXzE0ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCiBAUE9XRVJQQ19BSVhfVFJVRUAJc3JjL3Bvd2VycGMvYWl4LmxvIFwKIEBQT1dFUlBDX0FJWF9UUlVFQAlzcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5sbwotQFBPV0VSUENfREFSV0lOX1RSVUVAYW1fX29iamVjdHNfMTQgPSBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmxvIFwKK0BQT1dFUlBDX0RBUldJTl9UUlVFQGFtX19vYmplY3RzXzE1ID0gc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5sbyBcCiBAUE9XRVJQQ19EQVJXSU5fVFJVRUAJc3JjL3Bvd2VycGMvZGFyd2luLmxvIFwKIEBQT1dFUlBDX0RBUldJTl9UUlVFQAlzcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5sbwotQFBPV0VSUENfRlJFRUJTRF9UUlVFQGFtX19vYmplY3RzXzE1ID0gc3JjL3Bvd2VycGMvZmZpLmxvIFwKK0BQT1dFUlBDX0ZSRUVCU0RfVFJVRUBhbV9fb2JqZWN0c18xNiA9IHNyYy9wb3dlcnBjL2ZmaS5sbyBcCiBAUE9XRVJQQ19GUkVFQlNEX1RSVUVACXNyYy9wb3dlcnBjL3N5c3YubG8gXAogQFBPV0VSUENfRlJFRUJTRF9UUlVFQAlzcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5sbwotQEFSTV9UUlVFQGFtX19vYmplY3RzXzE2ID0gc3JjL2FybS9zeXN2LmxvIHNyYy9hcm0vZmZpLmxvCi1AQVZSMzJfVFJVRUBhbV9fb2JqZWN0c18xNyA9IHNyYy9hdnIzMi9zeXN2LmxvIHNyYy9hdnIzMi9mZmkubG8KLUBMSUJGRklfQ1JJU19UUlVFQGFtX19vYmplY3RzXzE4ID0gc3JjL2NyaXMvc3lzdi5sbyBzcmMvY3Jpcy9mZmkubG8KLUBGUlZfVFJVRUBhbV9fb2JqZWN0c18xOSA9IHNyYy9mcnYvZWFiaS5sbyBzcmMvZnJ2L2ZmaS5sbwotQFMzOTBfVFJVRUBhbV9fb2JqZWN0c18yMCA9IHNyYy9zMzkwL3N5c3YubG8gc3JjL3MzOTAvZmZpLmxvCi1AWDg2XzY0X1RSVUVAYW1fX29iamVjdHNfMjEgPSBzcmMveDg2L2ZmaTY0LmxvIHNyYy94ODYvdW5peDY0LmxvIFwKK0BBUk1fVFJVRUBhbV9fb2JqZWN0c18xNyA9IHNyYy9hcm0vc3lzdi5sbyBzcmMvYXJtL2ZmaS5sbworQEFSTV9UUlVFQEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUVAYW1fX29iamVjdHNfMTggPSBzcmMvYXJtL3RyYW1wb2xpbmUubG8KK0BBVlIzMl9UUlVFQGFtX19vYmplY3RzXzE5ID0gc3JjL2F2cjMyL3N5c3YubG8gc3JjL2F2cjMyL2ZmaS5sbworQExJQkZGSV9DUklTX1RSVUVAYW1fX29iamVjdHNfMjAgPSBzcmMvY3Jpcy9zeXN2LmxvIHNyYy9jcmlzL2ZmaS5sbworQEZSVl9UUlVFQGFtX19vYmplY3RzXzIxID0gc3JjL2Zydi9lYWJpLmxvIHNyYy9mcnYvZmZpLmxvCitATU9YSUVfVFJVRUBhbV9fb2JqZWN0c18yMiA9IHNyYy9tb3hpZS9lYWJpLmxvIHNyYy9tb3hpZS9mZmkubG8KK0BTMzkwX1RSVUVAYW1fX29iamVjdHNfMjMgPSBzcmMvczM5MC9zeXN2LmxvIHNyYy9zMzkwL2ZmaS5sbworQFg4Nl82NF9UUlVFQGFtX19vYmplY3RzXzI0ID0gc3JjL3g4Ni9mZmk2NC5sbyBzcmMveDg2L3VuaXg2NC5sbyBcCiBAWDg2XzY0X1RSVUVACXNyYy94ODYvZmZpLmxvIHNyYy94ODYvc3lzdi5sbwotQFNIX1RSVUVAYW1fX29iamVjdHNfMjIgPSBzcmMvc2gvc3lzdi5sbyBzcmMvc2gvZmZpLmxvCi1AU0g2NF9UUlVFQGFtX19vYmplY3RzXzIzID0gc3JjL3NoNjQvc3lzdi5sbyBzcmMvc2g2NC9mZmkubG8KLUBQQV9MSU5VWF9UUlVFQGFtX19vYmplY3RzXzI0ID0gc3JjL3BhL2xpbnV4LmxvIHNyYy9wYS9mZmkubG8KLUBQQV9IUFVYX1RSVUVAYW1fX29iamVjdHNfMjUgPSBzcmMvcGEvaHB1eDMyLmxvIHNyYy9wYS9mZmkubG8KK0BTSF9UUlVFQGFtX19vYmplY3RzXzI1ID0gc3JjL3NoL3N5c3YubG8gc3JjL3NoL2ZmaS5sbworQFNINjRfVFJVRUBhbV9fb2JqZWN0c18yNiA9IHNyYy9zaDY0L3N5c3YubG8gc3JjL3NoNjQvZmZpLmxvCitAUEFfTElOVVhfVFJVRUBhbV9fb2JqZWN0c18yNyA9IHNyYy9wYS9saW51eC5sbyBzcmMvcGEvZmZpLmxvCitAUEFfSFBVWF9UUlVFQGFtX19vYmplY3RzXzI4ID0gc3JjL3BhL2hwdXgzMi5sbyBzcmMvcGEvZmZpLmxvCiBub2Rpc3RfbGliZmZpX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMikgXAogCSQoYW1fX29iamVjdHNfMykgJChhbV9fb2JqZWN0c180KSAkKGFtX19vYmplY3RzXzUpIFwKIAkkKGFtX19vYmplY3RzXzYpICQoYW1fX29iamVjdHNfNykgJChhbV9fb2JqZWN0c184KSBcCkBAIC0xNTMsMTcgKzE2OSwxOCBAQAogCSQoYW1fX29iamVjdHNfMTUpICQoYW1fX29iamVjdHNfMTYpICQoYW1fX29iamVjdHNfMTcpIFwKIAkkKGFtX19vYmplY3RzXzE4KSAkKGFtX19vYmplY3RzXzE5KSAkKGFtX19vYmplY3RzXzIwKSBcCiAJJChhbV9fb2JqZWN0c18yMSkgJChhbV9fb2JqZWN0c18yMikgJChhbV9fb2JqZWN0c18yMykgXAotCSQoYW1fX29iamVjdHNfMjQpICQoYW1fX29iamVjdHNfMjUpCisJJChhbV9fb2JqZWN0c18yNCkgJChhbV9fb2JqZWN0c18yNSkgJChhbV9fb2JqZWN0c18yNikgXAorCSQoYW1fX29iamVjdHNfMjcpICQoYW1fX29iamVjdHNfMjgpCiBsaWJmZmlfbGFfT0JKRUNUUyA9ICQoYW1fbGliZmZpX2xhX09CSkVDVFMpIFwKIAkkKG5vZGlzdF9saWJmZmlfbGFfT0JKRUNUUykKIGxpYmZmaV9sYV9MSU5LID0gJChMSUJUT09MKSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAogCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgXAogCSQobGliZmZpX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIGxpYmZmaV9jb252ZW5pZW5jZV9sYV9MSUJBREQgPQotYW1fX29iamVjdHNfMjYgPSBzcmMvZGVidWcubG8gc3JjL3ByZXBfY2lmLmxvIHNyYy90eXBlcy5sbyBcCi0Jc3JjL3Jhd19hcGkubG8gc3JjL2phdmFfcmF3X2FwaS5sbyBzcmMvY2xvc3VyZXMubG8KLWFtX2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yNikKLWFtX19vYmplY3RzXzI3ID0gJChhbV9fb2JqZWN0c18xKSAkKGFtX19vYmplY3RzXzIpICQoYW1fX29iamVjdHNfMykgXAorYW1fX29iamVjdHNfMjkgPSBzcmMvcHJlcF9jaWYubG8gc3JjL3R5cGVzLmxvIHNyYy9yYXdfYXBpLmxvIFwKKwlzcmMvamF2YV9yYXdfYXBpLmxvIHNyYy9jbG9zdXJlcy5sbworYW1fbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzI5KQorYW1fX29iamVjdHNfMzAgPSAkKGFtX19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKSBcCiAJJChhbV9fb2JqZWN0c180KSAkKGFtX19vYmplY3RzXzUpICQoYW1fX29iamVjdHNfNikgXAogCSQoYW1fX29iamVjdHNfNykgJChhbV9fb2JqZWN0c184KSAkKGFtX19vYmplY3RzXzkpIFwKIAkkKGFtX19vYmplY3RzXzEwKSAkKGFtX19vYmplY3RzXzExKSAkKGFtX19vYmplY3RzXzEyKSBcCkBAIC0xNzEsOCArMTg4LDkgQEAKIAkkKGFtX19vYmplY3RzXzE2KSAkKGFtX19vYmplY3RzXzE3KSAkKGFtX19vYmplY3RzXzE4KSBcCiAJJChhbV9fb2JqZWN0c18xOSkgJChhbV9fb2JqZWN0c18yMCkgJChhbV9fb2JqZWN0c18yMSkgXAogCSQoYW1fX29iamVjdHNfMjIpICQoYW1fX29iamVjdHNfMjMpICQoYW1fX29iamVjdHNfMjQpIFwKLQkkKGFtX19vYmplY3RzXzI1KQotbm9kaXN0X2xpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTID0gJChhbV9fb2JqZWN0c18yNykKKwkkKGFtX19vYmplY3RzXzI1KSAkKGFtX19vYmplY3RzXzI2KSAkKGFtX19vYmplY3RzXzI3KSBcCisJJChhbV9fb2JqZWN0c18yOCkKK25vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMzApCiBsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUyA9ICQoYW1fbGliZmZpX2NvbnZlbmllbmNlX2xhX09CSkVDVFMpIFwKIAkkKG5vZGlzdF9saWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykKIERFRkFVTFRfSU5DTFVERVMgPSAtSS5AYW1fX2lzcmNACkBAIC0yMjksOSArMjQ3LDExIEBACiBkaXN0ZGlyID0gJChQQUNLQUdFKS0kKFZFUlNJT04pCiB0b3BfZGlzdGRpciA9ICQoZGlzdGRpcikKIGFtX19yZW1vdmVfZGlzdGRpciA9IFwKLSAgeyB0ZXN0ICEgLWQgIiQoZGlzdGRpcikiIFwKLSAgICB8fCB7IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtMjAwIC1leGVjIGNobW9kIHUrdyB7fSAnOycgXAotICAgICAgICAgJiYgcm0gLWZyICIkKGRpc3RkaXIpIjsgfTsgfQorICBpZiB0ZXN0IC1kICIkKGRpc3RkaXIpIjsgdGhlbiBcCisgICAgZmluZCAiJChkaXN0ZGlyKSIgLXR5cGUgZCAhIC1wZXJtIC0yMDAgLWV4ZWMgY2htb2QgdSt3IHt9ICc7JyBcCisgICAgICAmJiBybSAtcmYgIiQoZGlzdGRpcikiIFwKKyAgICAgIHx8IHsgc2xlZXAgNSAmJiBybSAtcmYgIiQoZGlzdGRpcikiOyB9OyBcCisgIGVsc2UgOjsgZmkKIGFtX19yZWxhdGl2aXplID0gXAogICBkaXIwPWBwd2RgOyBcCiAgIHNlZF9maXJzdD0ncyxeXChbXi9dKlwpLy4qJCQsXDEsJzsgXApAQCAtMjYwLDYgKzI4MCw4IEBACiBESVNUX0FSQ0hJVkVTID0gJChkaXN0ZGlyKS50YXIuZ3oKIEdaSVBfRU5WID0gLS1iZXN0CiBkaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzID0gZmluZCAuIC10eXBlIGYgLXByaW50CithbV9fZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcyA9ICQoZGlzdHVuaW5zdGFsbGNoZWNrX2xpc3RmaWxlcykgXAorICB8IHNlZCAnc3xeXC4vfCQocHJlZml4KS98JyB8IGdyZXAgLXYgJyQoaW5mb2RpcikvZGlyJCQnCiBkaXN0Y2xlYW5jaGVja19saXN0ZmlsZXMgPSBmaW5kIC4gLXR5cGUgZiAtcHJpbnQKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFMTE9DQSA9IEBBTExPQ0FACkBAIC0yODIsNiArMzA0LDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtMjg5LDYgKzMxMiw3IEBACiBFQ0hPX1QgPSBARUNIT19UQAogRUdSRVAgPSBARUdSRVBACiBFWEVFWFQgPSBARVhFRVhUQAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAogRkdSRVAgPSBARkdSRVBACiBHUkVQID0gQEdSRVBACiBIQVZFX0xPTkdfRE9VQkxFID0gQEhBVkVfTE9OR19ET1VCTEVACkBAIC0zMDcsNiArMzMxLDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMzE5LDYgKzM0NCw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMzMzLDYgKzM1OSw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTM2NSw3ICszOTIsNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0zOTUsMjkgKzQyMSwzMiBAQAogCXNyYy9hdnIzMi9mZmkuYyBzcmMvYXZyMzIvc3lzdi5TIHNyYy9hdnIzMi9mZml0YXJnZXQuaCBcCiAJc3JjL2NyaXMvZmZpLmMgc3JjL2NyaXMvc3lzdi5TIHNyYy9jcmlzL2ZmaXRhcmdldC5oIFwKIAlzcmMvaWE2NC9mZmkuYyBzcmMvaWE2NC9mZml0YXJnZXQuaCBzcmMvaWE2NC9pYTY0X2ZsYWdzLmggXAotCXNyYy9pYTY0L3VuaXguUyBcCi0Jc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbjMyLlMgc3JjL21pcHMvbzMyLlMgXAotCXNyYy9taXBzL2ZmaXRhcmdldC5oIFwKLQlzcmMvbTMyci9mZmkuYyBzcmMvbTMyci9zeXN2LlMgc3JjL20zMnIvZmZpdGFyZ2V0LmggXAotCXNyYy9tNjhrL2ZmaS5jIHNyYy9tNjhrL3N5c3YuUyBzcmMvbTY4ay9mZml0YXJnZXQuaCBcCi0Jc3JjL3Bvd2VycGMvZmZpLmMgc3JjL3Bvd2VycGMvc3lzdi5TIFwKKwlzcmMvaWE2NC91bml4LlMgc3JjL21pcHMvZmZpLmMgc3JjL21pcHMvbjMyLlMgc3JjL21pcHMvbzMyLlMgXAorCXNyYy9taXBzL2ZmaXRhcmdldC5oIHNyYy9tMzJyL2ZmaS5jIHNyYy9tMzJyL3N5c3YuUyBcCisJc3JjL20zMnIvZmZpdGFyZ2V0Lmggc3JjL202OGsvZmZpLmMgc3JjL202OGsvc3lzdi5TIFwKKwlzcmMvbTY4ay9mZml0YXJnZXQuaCBzcmMvcG93ZXJwYy9mZmkuYyBzcmMvcG93ZXJwYy9zeXN2LlMgXAogCXNyYy9wb3dlcnBjL2xpbnV4NjQuUyBzcmMvcG93ZXJwYy9saW51eDY0X2Nsb3N1cmUuUyBcCi0Jc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9hc20uaCBcCi0Jc3JjL3Bvd2VycGMvYWl4LlMgc3JjL3Bvd2VycGMvZGFyd2luLlMgXAotCXNyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMgc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBcCi0Jc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIHNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIFwKLQlzcmMvczM5MC9mZmkuYyBzcmMvczM5MC9zeXN2LlMgc3JjL3MzOTAvZmZpdGFyZ2V0LmggXAotCXNyYy9zaC9mZmkuYyBzcmMvc2gvc3lzdi5TIHNyYy9zaC9mZml0YXJnZXQuaCBcCi0Jc3JjL3NoNjQvZmZpLmMgc3JjL3NoNjQvc3lzdi5TIHNyYy9zaDY0L2ZmaXRhcmdldC5oIFwKLQlzcmMvc3BhcmMvdjguUyBzcmMvc3BhcmMvdjkuUyBzcmMvc3BhcmMvZmZpdGFyZ2V0LmggXAotCXNyYy9zcGFyYy9mZmkuYyBzcmMveDg2L2RhcndpbjY0LlMgXAotCXNyYy94ODYvZmZpLmMgc3JjL3g4Ni9zeXN2LlMgc3JjL3g4Ni93aW4zMi5TIHNyYy94ODYvd2luNjQuUyBcCi0Jc3JjL3g4Ni9kYXJ3aW4uUyBzcmMveDg2L2ZyZWVic2QuUyBcCi0Jc3JjL3g4Ni9mZmk2NC5jIHNyYy94ODYvdW5peDY0LlMgc3JjL3g4Ni9mZml0YXJnZXQuaCBcCi0Jc3JjL3BhL2ZmaXRhcmdldC5oIHNyYy9wYS9mZmkuYyBzcmMvcGEvbGludXguUyBzcmMvcGEvaHB1eDMyLlMgXAotCXNyYy9mcnYvZmZpLmMgc3JjL2Zydi9lYWJpLlMgc3JjL2Zydi9mZml0YXJnZXQuaCBzcmMvZGxtYWxsb2MuYyBcCi0JbGlidG9vbC12ZXJzaW9uIENoYW5nZUxvZy5saWJmZmkgbTQvbGlidG9vbC5tNCBcCi0JbTQvbHR+b2Jzb2xldGUubTQgbTQvbHRvcHRpb25zLm00IG00L2x0c3VnYXIubTQgbTQvbHR2ZXJzaW9uLm00CisJc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9hc20uaCBzcmMvcG93ZXJwYy9haXguUyBcCisJc3JjL3Bvd2VycGMvZGFyd2luLlMgc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUyBcCisJc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUyBzcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMgXAorCXNyYy9wb3dlcnBjL2ZmaXRhcmdldC5oIHNyYy9zMzkwL2ZmaS5jIHNyYy9zMzkwL3N5c3YuUyBcCisJc3JjL3MzOTAvZmZpdGFyZ2V0Lmggc3JjL3NoL2ZmaS5jIHNyYy9zaC9zeXN2LlMJXAorCXNyYy9zaC9mZml0YXJnZXQuaCBzcmMvc2g2NC9mZmkuYyBzcmMvc2g2NC9zeXN2LlMgXAorCXNyYy9zaDY0L2ZmaXRhcmdldC5oIHNyYy9zcGFyYy92OC5TIHNyYy9zcGFyYy92OS5TIFwKKwlzcmMvc3BhcmMvZmZpdGFyZ2V0Lmggc3JjL3NwYXJjL2ZmaS5jIHNyYy94ODYvZGFyd2luNjQuUyBcCisJc3JjL3g4Ni9mZmkuYyBzcmMveDg2L3N5c3YuUyBzcmMveDg2L3dpbjMyLlMgc3JjL3g4Ni9kYXJ3aW4uUyBcCisJc3JjL3g4Ni93aW42NC5TIHNyYy94ODYvZnJlZWJzZC5TIHNyYy94ODYvZmZpNjQuYyBcCisJc3JjL3g4Ni91bml4NjQuUyBzcmMveDg2L2ZmaXRhcmdldC5oIHNyYy9wYS9mZml0YXJnZXQuaAlcCisJc3JjL3BhL2ZmaS5jIHNyYy9wYS9saW51eC5TIHNyYy9wYS9ocHV4MzIuUyBzcmMvZnJ2L2ZmaS5jIFwKKwlzcmMvZnJ2L2VhYmkuUyBzcmMvZnJ2L2ZmaXRhcmdldC5oIHNyYy9kbG1hbGxvYy5jIFwKKwlzcmMvbW94aWUvZmZpLmMgc3JjL21veGllL2VhYmkuUyBsaWJ0b29sLXZlcnNpb24gXAorCUNoYW5nZUxvZy5saWJmZmkgbTQvbGlidG9vbC5tNCBtNC9sdH5vYnNvbGV0ZS5tNCBcCisJbTQvbHRvcHRpb25zLm00IG00L2x0c3VnYXIubTQgbTQvbHR2ZXJzaW9uLm00IFwKKwltNC9sdHZlcnNpb24ubTQgc3JjL2FybS9nZW50cmFtcC5zaCBzcmMvZGVidWcuYyBcCisJbXN2Y2Muc2ggZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weSBcCisJZ2VuZXJhdGUtb3N4LXNvdXJjZS1hbmQtaGVhZGVycy5weSBcCisgICAgICAgIGxpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIFwKKwlzcmMvYXJtL3RyYW1wb2xpbmUuUwogCiBpbmZvX1RFWElORk9TID0gZG9jL2xpYmZmaS50ZXhpCiAKQEAgLTQ0OCw2ICs0NzcsNyBAQAogCSJleGVjX3ByZWZpeD0kKGV4ZWNfcHJlZml4KSIgXAogCSJpbmZvZGlyPSQoaW5mb2RpcikiIFwKIAkibGliZGlyPSQobGliZGlyKSIgXAorCSJtYW5kaXI9JChtYW5kaXIpIiBcCiAJInByZWZpeD0kKHByZWZpeCkiIFwKIAkiQVI9JChBUikiIFwKIAkiQVM9JChBUykiIFwKQEAgLTQ2Miw3ICs0OTIsNyBAQAogQUNMT0NBTF9BTUZMQUdTID0gJChBQ0xPQ0FMX0FNRkxBR1MpIC1JIG00CiBsaWJfTFRMSUJSQVJJRVMgPSBsaWJmZmkubGEKIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYmZmaV9jb252ZW5pZW5jZS5sYQotbGliZmZpX2xhX1NPVVJDRVMgPSBzcmMvZGVidWcuYyBzcmMvcHJlcF9jaWYuYyBzcmMvdHlwZXMuYyBcCitsaWJmZmlfbGFfU09VUkNFUyA9IHNyYy9wcmVwX2NpZi5jIHNyYy90eXBlcy5jIFwKIAkJc3JjL3Jhd19hcGkuYyBzcmMvamF2YV9yYXdfYXBpLmMgc3JjL2Nsb3N1cmVzLmMKIAogcGtnY29uZmlnZGlyID0gJChsaWJkaXIpL3BrZ2NvbmZpZwpAQCAtNDc1LDE5ICs1MDUsMjAgQEAKIAkkKGFtX19hcHBlbmRfMTUpICQoYW1fX2FwcGVuZF8xNikgJChhbV9fYXBwZW5kXzE3KSBcCiAJJChhbV9fYXBwZW5kXzE4KSAkKGFtX19hcHBlbmRfMTkpICQoYW1fX2FwcGVuZF8yMCkgXAogCSQoYW1fX2FwcGVuZF8yMSkgJChhbV9fYXBwZW5kXzIyKSAkKGFtX19hcHBlbmRfMjMpIFwKLQkkKGFtX19hcHBlbmRfMjQpICQoYW1fX2FwcGVuZF8yNSkKKwkkKGFtX19hcHBlbmRfMjQpICQoYW1fX2FwcGVuZF8yNSkgJChhbV9fYXBwZW5kXzI2KSBcCisJJChhbV9fYXBwZW5kXzI3KSAkKGFtX19hcHBlbmRfMjgpCiBsaWJmZmlfY29udmVuaWVuY2VfbGFfU09VUkNFUyA9ICQobGliZmZpX2xhX1NPVVJDRVMpCiBub2Rpc3RfbGliZmZpX2NvbnZlbmllbmNlX2xhX1NPVVJDRVMgPSAkKG5vZGlzdF9saWJmZmlfbGFfU09VUkNFUykKLUFNX0NGTEFHUyA9IC1XYWxsIC1nIC1mZXhjZXB0aW9ucwotbGliZmZpX2xhX0xERkxBR1MgPSAtdmVyc2lvbi1pbmZvIGBncmVwIC12ICdeXCMnICQoc3JjZGlyKS9saWJ0b29sLXZlcnNpb25gICQoQU1fTFRMREZMQUdTKQotQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMKLUFNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpCitBTV9DRkxBR1MgPSAtZyAkKGFtX19hcHBlbmRfMjkpCitsaWJmZmlfbGFfTERGTEFHUyA9IC12ZXJzaW9uLWluZm8gYGdyZXAgLXYgJ15cIycgJChzcmNkaXIpL2xpYnRvb2wtdmVyc2lvbmAgJChMVExERkxBR1MpICQoQU1fTFRMREZMQUdTKQorQU1fQ1BQRkxBR1MgPSAtSS4gLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUlpbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9zcmMgLURGRklfQlVJTERJTkcKK0FNX0NDQVNGTEFHUyA9ICQoQU1fQ1BQRkxBR1MpIC1nCiBhbGw6IGZmaWNvbmZpZy5oCiAJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLXJlY3Vyc2l2ZQogCiAuU1VGRklYRVM6CiAuU1VGRklYRVM6IC5TIC5jIC5kdmkgLmxvIC5vIC5vYmogLnBzCi1hbS0tcmVmcmVzaDoKK2FtLS1yZWZyZXNoOiBNYWtlZmlsZQogCUA6CiAkKHNyY2RpcikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKIAlAZm9yIGRlcCBpbiAkPzsgZG8gXApAQCAtNTIzLDEwICs1NTQsOCBAQAogJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKIAogZmZpY29uZmlnLmg6IHN0YW1wLWgxCi0JQGlmIHRlc3QgISAtZiAkQDsgdGhlbiBcCi0JICBybSAtZiBzdGFtcC1oMTsgXAotCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgc3RhbXAtaDE7IFwKLQllbHNlIDo7IGZpCisJQGlmIHRlc3QgISAtZiAkQDsgdGhlbiBybSAtZiBzdGFtcC1oMTsgZWxzZSA6OyBmaQorCUBpZiB0ZXN0ICEgLWYgJEA7IHRoZW4gJChNQUtFKSAkKEFNX01BS0VGTEFHUykgc3RhbXAtaDE7IGVsc2UgOjsgZmkKIAogc3RhbXAtaDE6ICQoc3JjZGlyKS9mZmljb25maWcuaC5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBybSAtZiBzdGFtcC1oMQpAQCAtNTQwLDYgKzU2OSw4IEBACiAJLXJtIC1mIGZmaWNvbmZpZy5oIHN0YW1wLWgxCiBsaWJmZmkucGM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9saWJmZmkucGMuaW4KIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACitmZmljb25maWcucHk6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9mZmljb25maWcucHkuaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICRACiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTOiAkKGxpYl9MVExJQlJBUklFUykKIAlAJChOT1JNQUxfSU5TVEFMTCkKIAl0ZXN0IC16ICIkKGxpYmRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmRpcikiCkBAIC01ODYsMTIgKzYxNywxMiBAQAogc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCk6CiAJQCQoTUtESVJfUCkgc3JjLyQoREVQRElSKQogCUA6ID4gc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKLXNyYy9kZWJ1Zy5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL3ByZXBfY2lmLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvdHlwZXMubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9yYXdfYXBpLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvamF2YV9yYXdfYXBpLmxvOiBzcmMvJChhbV9fZGlyc3RhbXApIHNyYy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBzcmMvY2xvc3VyZXMubG86IHNyYy8kKGFtX19kaXJzdGFtcCkgc3JjLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9kZWJ1Zy5sbzogc3JjLyQoYW1fX2RpcnN0YW1wKSBzcmMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL21pcHMvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIHNyYy9taXBzCiAJQDogPiBzcmMvbWlwcy8kKGFtX19kaXJzdGFtcCkKQEAgLTcxNCw2ICs3NDUsOCBAQAogCXNyYy9hcm0vJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2FybS9mZmkubG86IHNyYy9hcm0vJChhbV9fZGlyc3RhbXApIFwKIAlzcmMvYXJtLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9hcm0vdHJhbXBvbGluZS5sbzogc3JjL2FybS8kKGFtX19kaXJzdGFtcCkgXAorCXNyYy9hcm0vJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogc3JjL2F2cjMyLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvYXZyMzIKIAlAOiA+IHNyYy9hdnIzMi8kKGFtX19kaXJzdGFtcCkKQEAgLTc0NCw2ICs3NzcsMTYgQEAKIAlzcmMvZnJ2LyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9mcnYvZmZpLmxvOiBzcmMvZnJ2LyQoYW1fX2RpcnN0YW1wKSBcCiAJc3JjL2Zydi8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApOgorCUAkKE1LRElSX1ApIHNyYy9tb3hpZQorCUA6ID4gc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCk6CisJQCQoTUtESVJfUCkgc3JjL21veGllLyQoREVQRElSKQorCUA6ID4gc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK3NyYy9tb3hpZS9lYWJpLmxvOiBzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApIFwKKwlzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorc3JjL21veGllL2ZmaS5sbzogc3JjL21veGllLyQoYW1fX2RpcnN0YW1wKSBcCisJc3JjL21veGllLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9zMzkwLyQoYW1fX2RpcnN0YW1wKToKIAlAJChNS0RJUl9QKSBzcmMvczM5MAogCUA6ID4gc3JjL3MzOTAvJChhbV9fZGlyc3RhbXApCkBAIC03ODYsOSArODI5LDkgQEAKIHNyYy9wYS9mZmkubG86IHNyYy9wYS8kKGFtX19kaXJzdGFtcCkgc3JjL3BhLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIHNyYy9wYS9ocHV4MzIubG86IHNyYy9wYS8kKGFtX19kaXJzdGFtcCkgXAogCXNyYy9wYS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCi1saWJmZmkubGE6ICQobGliZmZpX2xhX09CSkVDVFMpICQobGliZmZpX2xhX0RFUEVOREVOQ0lFUykgCitsaWJmZmkubGE6ICQobGliZmZpX2xhX09CSkVDVFMpICQobGliZmZpX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJmZmlfbGFfREVQRU5ERU5DSUVTKSAKIAkkKGxpYmZmaV9sYV9MSU5LKSAtcnBhdGggJChsaWJkaXIpICQobGliZmZpX2xhX09CSkVDVFMpICQobGliZmZpX2xhX0xJQkFERCkgJChMSUJTKQotbGliZmZpX2NvbnZlbmllbmNlLmxhOiAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9ERVBFTkRFTkNJRVMpIAorbGliZmZpX2NvbnZlbmllbmNlLmxhOiAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9PQkpFQ1RTKSAkKGxpYmZmaV9jb252ZW5pZW5jZV9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZmZpX2NvbnZlbmllbmNlX2xhX0RFUEVOREVOQ0lFUykgCiAJJChMSU5LKSAgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfT0JKRUNUUykgJChsaWJmZmlfY29udmVuaWVuY2VfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CkBAIC04MDEsNiArODQ0LDggQEAKIAktcm0gLWYgc3JjL2FybS9mZmkubG8KIAktcm0gLWYgc3JjL2FybS9zeXN2LiQoT0JKRVhUKQogCS1ybSAtZiBzcmMvYXJtL3N5c3YubG8KKwktcm0gLWYgc3JjL2FybS90cmFtcG9saW5lLiQoT0JKRVhUKQorCS1ybSAtZiBzcmMvYXJtL3RyYW1wb2xpbmUubG8KIAktcm0gLWYgc3JjL2F2cjMyL2ZmaS4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL2F2cjMyL2ZmaS5sbwogCS1ybSAtZiBzcmMvYXZyMzIvc3lzdi4kKE9CSkVYVCkKQEAgLTgzNyw2ICs4ODIsMTAgQEAKIAktcm0gLWYgc3JjL21pcHMvbjMyLmxvCiAJLXJtIC1mIHNyYy9taXBzL28zMi4kKE9CSkVYVCkKIAktcm0gLWYgc3JjL21pcHMvbzMyLmxvCisJLXJtIC1mIHNyYy9tb3hpZS9lYWJpLiQoT0JKRVhUKQorCS1ybSAtZiBzcmMvbW94aWUvZWFiaS5sbworCS1ybSAtZiBzcmMvbW94aWUvZmZpLiQoT0JKRVhUKQorCS1ybSAtZiBzcmMvbW94aWUvZmZpLmxvCiAJLXJtIC1mIHNyYy9wYS9mZmkuJChPQkpFWFQpCiAJLXJtIC1mIHNyYy9wYS9mZmkubG8KIAktcm0gLWYgc3JjL3BhL2hwdXgzMi4kKE9CSkVYVCkKQEAgLTkxOSw2ICs5NjgsNyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hbHBoYS8kKERFUERJUikvb3NmLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2FybS8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL2FybS8kKERFUERJUikvc3lzdi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hcm0vJChERVBESVIpL3RyYW1wb2xpbmUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvYXZyMzIvJChERVBESVIpL2ZmaS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9hdnIzMi8kKERFUERJUikvc3lzdi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9jcmlzLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKQEAgLTkzNCw2ICs5ODQsOCBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9taXBzLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvbWlwcy8kKERFUERJUikvbjMyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL21pcHMvJChERVBESVIpL28zMi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9tb3hpZS8kKERFUERJUikvZWFiaS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9tb3hpZS8kKERFUERJUikvZmZpLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAc3JjL3BhLyQoREVQRElSKS9mZmkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBzcmMvcGEvJChERVBESVIpL2hwdXgzMi5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQHNyYy9wYS8kKERFUERJUikvbGludXguUGxvQGFtX19xdW90ZUAKQEAgLTEwMjksNiArMTA4MSw3IEBACiAJLXJtIC1yZiBzcmMvbTMyci8ubGlicyBzcmMvbTMyci9fbGlicwogCS1ybSAtcmYgc3JjL202OGsvLmxpYnMgc3JjL202OGsvX2xpYnMKIAktcm0gLXJmIHNyYy9taXBzLy5saWJzIHNyYy9taXBzL19saWJzCisJLXJtIC1yZiBzcmMvbW94aWUvLmxpYnMgc3JjL21veGllL19saWJzCiAJLXJtIC1yZiBzcmMvcGEvLmxpYnMgc3JjL3BhL19saWJzCiAJLXJtIC1yZiBzcmMvcG93ZXJwYy8ubGlicyBzcmMvcG93ZXJwYy9fbGlicwogCS1ybSAtcmYgc3JjL3MzOTAvLmxpYnMgc3JjL3MzOTAvX2xpYnMKQEAgLTEyMjEsOSArMTI3NCw3IEBACiAJQCQoTk9STUFMX1VOSU5TVEFMTCkKIAlAbGlzdD0nJChwa2djb25maWdfREFUQSknOyB0ZXN0IC1uICIkKHBrZ2NvbmZpZ2RpcikiIHx8IGxpc3Q9OyBcCiAJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLQl0ZXN0IC1uICIkJGZpbGVzIiB8fCBleGl0IDA7IFwKLQllY2hvICIgKCBjZCAnJChERVNURElSKSQocGtnY29uZmlnZGlyKScgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JY2QgIiQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikiICYmIHJtIC1mICQkZmlsZXMKKwlkaXI9JyQoREVTVERJUikkKHBrZ2NvbmZpZ2RpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCiAKICMgVGhpcyBkaXJlY3RvcnkncyBzdWJkaXJlY3RvcmllcyBhcmUgbW9zdGx5IGluZGVwZW5kZW50OyB5b3UgY2FuIGNkCiAjIGludG8gdGhlbSBhbmQgcnVuIGBtYWtlJyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhpcyBNYWtlZmlsZS4KQEAgLTEyMzIsNyArMTI4Myw3IEBACiAjICAgICAod2hpY2ggd2lsbCBjYXVzZSB0aGUgTWFrZWZpbGVzIHRvIGJlIHJlZ2VuZXJhdGVkIHdoZW4geW91IHJ1biBgbWFrZScpOwogIyAoMikgb3RoZXJ3aXNlLCBwYXNzIHRoZSBkZXNpcmVkIHZhbHVlcyBvbiB0aGUgYG1ha2UnIGNvbW1hbmQgbGluZS4KICQoUkVDVVJTSVZFX1RBUkdFVFMpOgotCUBmYWlsY29tPSdleGl0IDEnOyBcCisJQGZhaWw9IGZhaWxjb209J2V4aXQgMSc7IFwKIAlmb3IgZiBpbiB4ICQkTUFLRUZMQUdTOyBkbyBcCiAJICBjYXNlICQkZiBpbiBcCiAJICAgICo9KiB8IC0tWyFrXSopOzsgXApAQCAtMTI1Nyw3ICsxMzA4LDcgQEAKIAlmaTsgdGVzdCAteiAiJCRmYWlsIgogCiAkKFJFQ1VSU0lWRV9DTEVBTl9UQVJHRVRTKToKLQlAZmFpbGNvbT0nZXhpdCAxJzsgXAorCUBmYWlsPSBmYWlsY29tPSdleGl0IDEnOyBcCiAJZm9yIGYgaW4geCAkJE1BS0VGTEFHUzsgZG8gXAogCSAgY2FzZSAkJGYgaW4gXAogCSAgICAqPSogfCAtLVsha10qKTs7IFwKQEAgLTE0MjQsNyArMTQ3NSw4IEBACiAJICB0b3BfZGlzdGRpcj0iJCh0b3BfZGlzdGRpcikiIGRpc3RkaXI9IiQoZGlzdGRpcikiIFwKIAkgIGRpc3QtaW5mbwogCS10ZXN0IC1uICIkKGFtX19za2lwX21vZGVfZml4KSIgXAotCXx8IGZpbmQgIiQoZGlzdGRpcikiIC10eXBlIGQgISAtcGVybSAtNzc3IC1leGVjIGNobW9kIGErcnd4IHt9IFw7IC1vIFwKKwl8fCBmaW5kICIkKGRpc3RkaXIpIiAtdHlwZSBkICEgLXBlcm0gLTc1NSBcCisJCS1leGVjIGNobW9kIHUrcnd4LGdvK3J4IHt9IFw7IC1vIFwKIAkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWxpbmtzIDEgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKIAkgICEgLXR5cGUgZCAhIC1wZXJtIC00MDAgLWV4ZWMgY2htb2QgYStyIHt9IFw7IC1vIFwKIAkgICEgLXR5cGUgZCAhIC1wZXJtIC00NDQgLWV4ZWMgJChpbnN0YWxsX3NoKSAtYyAtbSBhK3Ige30ge30gXDsgXApAQCAtMTQzNCw3ICsxNDg2LDExIEBACiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtYnppcDI6IGRpc3RkaXIKLQl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgYnppcDIgLTkgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCBCWklQMj0kJHtCWklQMi0tOX0gYnppcDIgLWMgPiQoZGlzdGRpcikudGFyLmJ6MgorCSQoYW1fX3JlbW92ZV9kaXN0ZGlyKQorCitkaXN0LWx6aXA6IGRpc3RkaXIKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgbHppcCAtYyAkJHtMWklQX09QVC0tOX0gPiQoZGlzdGRpcikudGFyLmx6CiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtbHptYTogZGlzdGRpcgpAQCAtMTQ0Miw3ICsxNDk4LDcgQEAKIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKIAogZGlzdC14ejogZGlzdGRpcgotCXRhcmRpcj0kKGRpc3RkaXIpICYmICQoYW1fX3RhcikgfCB4eiAtYyA+JChkaXN0ZGlyKS50YXIueHoKKwl0YXJkaXI9JChkaXN0ZGlyKSAmJiAkKGFtX190YXIpIHwgWFpfT1BUPSQke1haX09QVC0tZX0geHogLWMgPiQoZGlzdGRpcikudGFyLnh6CiAJJChhbV9fcmVtb3ZlX2Rpc3RkaXIpCiAKIGRpc3QtdGFyWjogZGlzdGRpcgpAQCAtMTQ2OCwxNyArMTUyNCwxOSBAQAogZGlzdGNoZWNrOiBkaXN0CiAJY2FzZSAnJChESVNUX0FSQ0hJVkVTKScgaW4gXAogCSoudGFyLmd6KikgXAotCSAgR1pJUD0kKEdaSVBfRU5WKSBndW56aXAgLWMgJChkaXN0ZGlyKS50YXIuZ3ogfCAkKGFtX191bnRhcikgOztcCisJICBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWRjICQoZGlzdGRpcikudGFyLmd6IHwgJChhbV9fdW50YXIpIDs7XAogCSoudGFyLmJ6MiopIFwKLQkgIGJ1bnppcDIgLWMgJChkaXN0ZGlyKS50YXIuYnoyIHwgJChhbV9fdW50YXIpIDs7XAorCSAgYnppcDIgLWRjICQoZGlzdGRpcikudGFyLmJ6MiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnRhci5sem1hKikgXAotCSAgdW5sem1hIC1jICQoZGlzdGRpcikudGFyLmx6bWEgfCAkKGFtX191bnRhcikgOztcCisJICBsem1hIC1kYyAkKGRpc3RkaXIpLnRhci5sem1hIHwgJChhbV9fdW50YXIpIDs7XAorCSoudGFyLmx6KikgXAorCSAgbHppcCAtZGMgJChkaXN0ZGlyKS50YXIubHogfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIueHoqKSBcCiAJICB4eiAtZGMgJChkaXN0ZGlyKS50YXIueHogfCAkKGFtX191bnRhcikgOztcCiAJKi50YXIuWiopIFwKIAkgIHVuY29tcHJlc3MgLWMgJChkaXN0ZGlyKS50YXIuWiB8ICQoYW1fX3VudGFyKSA7O1wKIAkqLnNoYXIuZ3oqKSBcCi0JICBHWklQPSQoR1pJUF9FTlYpIGd1bnppcCAtYyAkKGRpc3RkaXIpLnNoYXIuZ3ogfCB1bnNoYXIgOztcCisJICBHWklQPSQoR1pJUF9FTlYpIGd6aXAgLWRjICQoZGlzdGRpcikuc2hhci5neiB8IHVuc2hhciA7O1wKIAkqLnppcCopIFwKIAkgIHVuemlwICQoZGlzdGRpcikuemlwIDs7XAogCWVzYWMKQEAgLTE0OTIsNiArMTU1MCw3IEBACiAJICAmJiBhbV9fY3dkPWBwd2RgIFwKIAkgICYmICQoYW1fX2NkKSAkKGRpc3RkaXIpL19idWlsZCBcCiAJICAmJiAuLi9jb25maWd1cmUgLS1zcmNkaXI9Li4gLS1wcmVmaXg9IiQkZGNfaW5zdGFsbF9iYXNlIiBcCisJICAgICQoQU1fRElTVENIRUNLX0NPTkZJR1VSRV9GTEFHUykgXAogCSAgICAkKERJU1RDSEVDS19DT05GSUdVUkVfRkxBR1MpIFwKIAkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIFwKIAkgICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGR2aSBcCkBAIC0xNTIwLDggKzE1NzksMTYgQEAKIAkgIGxpc3Q9JyQoRElTVF9BUkNISVZFUyknOyBmb3IgaSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRpOyBkb25lKSB8IFwKIAkgIHNlZCAtZSAxaCAtZSAxcy8uLz0vZyAtZSAxcCAtZSAxeCAtZSAnJCRwJyAtZSAnJCR4JwogZGlzdHVuaW5zdGFsbGNoZWNrOgotCUAkKGFtX19jZCkgJyQoZGlzdHVuaW5zdGFsbGNoZWNrX2RpciknIFwKLQkmJiB0ZXN0IGAkKGRpc3R1bmluc3RhbGxjaGVja19saXN0ZmlsZXMpIHwgd2MgLWxgIC1sZSAxIFwKKwlAdGVzdCAtbiAnJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgfHwgeyBcCisJICBlY2hvICdFUlJPUjogdHJ5aW5nIHRvIHJ1biAkQCB3aXRoIGFuIGVtcHR5JyBcCisJICAgICAgICckJChkaXN0dW5pbnN0YWxsY2hlY2tfZGlyKScgPiYyOyBcCisJICBleGl0IDE7IFwKKwl9OyBcCisJJChhbV9fY2QpICckKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyB8fCB7IFwKKwkgIGVjaG8gJ0VSUk9SOiBjYW5ub3QgY2hkaXIgaW50byAkKGRpc3R1bmluc3RhbGxjaGVja19kaXIpJyA+JjI7IFwKKwkgIGV4aXQgMTsgXAorCX07IFwKKwl0ZXN0IGAkKGFtX19kaXN0dW5pbnN0YWxsY2hlY2tfbGlzdGZpbGVzKSB8IHdjIC1sYCAtZXEgMCBcCiAJICAgfHwgeyBlY2hvICJFUlJPUjogZmlsZXMgbGVmdCBhZnRlciB1bmluc3RhbGw6IiA7IFwKIAkgICAgICAgIGlmIHRlc3QgLW4gIiQoREVTVERJUikiOyB0aGVuIFwKIAkgICAgICAgICAgZWNobyAiICAoY2hlY2sgREVTVERJUiBzdXBwb3J0KSI7IFwKQEAgLTE1NTUsMTAgKzE2MjIsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stcmVjdXJzaXZlCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKQEAgLTE1ODcsNiArMTY1OSw4IEBACiAJLXJtIC1mIHNyYy9tNjhrLyQoYW1fX2RpcnN0YW1wKQogCS1ybSAtZiBzcmMvbWlwcy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9taXBzLyQoYW1fX2RpcnN0YW1wKQorCS1ybSAtZiBzcmMvbW94aWUvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCS1ybSAtZiBzcmMvbW94aWUvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9wYS8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAJLXJtIC1mIHNyYy9wYS8kKGFtX19kaXJzdGFtcCkKIAktcm0gLWYgc3JjL3Bvd2VycGMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQpAQCAtMTYxMiw3ICsxNjg2LDcgQEAKIAogZGlzdGNsZWFuOiBkaXN0Y2xlYW4tcmVjdXJzaXZlCiAJLXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpCi0JLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCisJLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9tb3hpZS8kKERFUERJUikgc3JjL3BhLyQoREVQRElSKSBzcmMvcG93ZXJwYy8kKERFUERJUikgc3JjL3MzOTAvJChERVBESVIpIHNyYy9zaC8kKERFUERJUikgc3JjL3NoNjQvJChERVBESVIpIHNyYy9zcGFyYy8kKERFUERJUikgc3JjL3g4Ni8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKIGRpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAogCWRpc3RjbGVhbi1oZHIgZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MKQEAgLTE2NTQsMTMgKzE3MjgsMTQgQEAKIAlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKIAkgIGlmIHRlc3QgLWYgIiQkcCIgfHwgdGVzdCAtZCAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKIAkgICQoYW1fX3N0cmlwX2RpcikgXAotCSAgaWYgdGVzdCAtZCAiJCRkJCRwIjsgdGhlbiBcCisJICBkMj0kJGQkJHA7IFwKKwkgIGlmIHRlc3QgLWQgIiQkZDIiOyB0aGVuIFwKIAkgICAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGh0bWxkaXIpLyQkZiciOyBcCiAJICAgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiIgfHwgZXhpdCAxOyBcCi0JICAgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJyQkZCQkcCcvKiAnJChERVNURElSKSQoaHRtbGRpcikvJCRmJyI7IFwKLQkgICAgJChJTlNUQUxMX0RBVEEpICIkJGQkJHAiLyogIiQoREVTVERJUikkKGh0bWxkaXIpLyQkZiIgfHwgZXhpdCAkJD87IFwKKwkgICAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAnJCRkMicvKiAnJChERVNURElSKSQoaHRtbGRpcikvJCRmJyI7IFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICIkJGQyIi8qICIkKERFU1RESVIpJChodG1sZGlyKS8kJGYiIHx8IGV4aXQgJCQ/OyBcCiAJICBlbHNlIFwKLQkgICAgbGlzdDI9IiQkbGlzdDIgJCRkJCRwIjsgXAorCSAgICBsaXN0Mj0iJCRsaXN0MiAkJGQyIjsgXAogCSAgZmk7IFwKIAlkb25lOyBcCiAJdGVzdCAteiAiJCRsaXN0MiIgfHwgeyBlY2hvICIkJGxpc3QyIiB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCkBAIC0xNjkyLDggKzE3NjcsMTMgQEAKIAkgIGVjaG8gIiAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAnJChERVNURElSKSQoaW5mb2RpciknIjsgXAogCSAgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgIiQoREVTVERJUikkKGluZm9kaXIpIiB8fCBleGl0ICQkPzsgZG9uZQogCUAkKFBPU1RfSU5TVEFMTCkKLQlAaWYgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24gJiYgXAotCSAgICAgaW5zdGFsbC1pbmZvIC0tdmVyc2lvbiAyPiYxIHwgc2VkIDFxIHwgZ3JlcCAtaSAtdiBkZWJpYW4pID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJQGFtX19ydW5faW5zdGFsbGluZm89eWVzOyBcCisJY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCisJICBufG5vfE5PKSBhbV9fcnVuX2luc3RhbGxpbmZvPW5vOzsgXAorCSAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMSBcCisJICAgICAgIHx8IGFtX19ydW5faW5zdGFsbGluZm89bm87OyBcCisJZXNhYzsgXAorCWlmIHRlc3QgJCRhbV9fcnVuX2luc3RhbGxpbmZvID0geWVzOyB0aGVuIFwKIAkgIGxpc3Q9JyQoSU5GT19ERVBTKSc7IHRlc3QgLW4gIiQoaW5mb2RpcikiIHx8IGxpc3Q9OyBcCiAJICBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIFwKIAkgICAgcmVsZmlsZT1gZWNobyAiJCRmaWxlIiB8IHNlZCAnc3xeLiovfHwnYDsgXApAQCAtMTczMiw3ICsxODEyLDcgQEAKIG1haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tcmVjdXJzaXZlCiAJLXJtIC1mICQoYW1fX0NPTkZJR19ESVNUQ0xFQU5fRklMRVMpCiAJLXJtIC1yZiAkKHRvcF9zcmNkaXIpL2F1dG9tNHRlLmNhY2hlCi0JLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9wYS8kKERFUERJUikgc3JjL3Bvd2VycGMvJChERVBESVIpIHNyYy9zMzkwLyQoREVQRElSKSBzcmMvc2gvJChERVBESVIpIHNyYy9zaDY0LyQoREVQRElSKSBzcmMvc3BhcmMvJChERVBESVIpIHNyYy94ODYvJChERVBESVIpCisJLXJtIC1yZiBzcmMvJChERVBESVIpIHNyYy9hbHBoYS8kKERFUERJUikgc3JjL2FybS8kKERFUERJUikgc3JjL2F2cjMyLyQoREVQRElSKSBzcmMvY3Jpcy8kKERFUERJUikgc3JjL2Zydi8kKERFUERJUikgc3JjL2lhNjQvJChERVBESVIpIHNyYy9tMzJyLyQoREVQRElSKSBzcmMvbTY4ay8kKERFUERJUikgc3JjL21pcHMvJChERVBESVIpIHNyYy9tb3hpZS8kKERFUERJUikgc3JjL3BhLyQoREVQRElSKSBzcmMvcG93ZXJwYy8kKERFUERJUikgc3JjL3MzOTAvJChERVBESVIpIHNyYy9zaC8kKERFUERJUikgc3JjL3NoNjQvJChERVBESVIpIHNyYy9zcGFyYy8kKERFUERJUikgc3JjL3g4Ni8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKIG1haW50YWluZXItY2xlYW4tYW06IGRpc3RjbGVhbi1hbSBtYWludGFpbmVyLWNsZWFuLWFtaW5mbyBcCiAJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1haW50YWluZXItY2xlYW4tdnRpCkBAIC0xNzYxLDI0ICsxODQxLDI0IEBACiAJYWxsIGFsbC1hbSBhbS0tcmVmcmVzaCBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1hbWluZm8gXAogCWNsZWFuLWdlbmVyaWMgY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBcCiAJY2xlYW4tbm9pbnN0TFRMSUJSQVJJRVMgY3RhZ3MgY3RhZ3MtcmVjdXJzaXZlIGRpc3QgZGlzdC1hbGwgXAotCWRpc3QtYnppcDIgZGlzdC1nemlwIGRpc3QtaW5mbyBkaXN0LWx6bWEgZGlzdC1zaGFyIGRpc3QtdGFyWiBcCi0JZGlzdC14eiBkaXN0LXppcCBkaXN0Y2hlY2sgZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIFwKLQlkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4taGRyIGRpc3RjbGVhbi1saWJ0b29sIFwKLQlkaXN0Y2xlYW4tdGFncyBkaXN0Y2xlYW5jaGVjayBkaXN0ZGlyIGRpc3R1bmluc3RhbGxjaGVjayBkdmkgXAotCWR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBcCi0JaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBcCi0JaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIFwKLQlpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAotCWluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcGtnY29uZmlnREFUQSBcCi0JaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIFwKLQlpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgaW5zdGFsbGRpcnMtYW0gbWFpbnRhaW5lci1jbGVhbiBcCi0JbWFpbnRhaW5lci1jbGVhbi1hbWluZm8gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIFwKLQltYWludGFpbmVyLWNsZWFuLXZ0aSBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1hbWluZm8gXAotCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKLQltb3N0bHljbGVhbi12dGkgcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHRhZ3MtcmVjdXJzaXZlIFwKLQl1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1kdmktYW0gdW5pbnN0YWxsLWh0bWwtYW0gXAotCXVuaW5zdGFsbC1pbmZvLWFtIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUyB1bmluc3RhbGwtcGRmLWFtIFwKLQl1bmluc3RhbGwtcGtnY29uZmlnREFUQSB1bmluc3RhbGwtcHMtYW0KKwlkaXN0LWJ6aXAyIGRpc3QtZ3ppcCBkaXN0LWluZm8gZGlzdC1semlwIGRpc3QtbHptYSBkaXN0LXNoYXIgXAorCWRpc3QtdGFyWiBkaXN0LXh6IGRpc3QtemlwIGRpc3RjaGVjayBkaXN0Y2xlYW4gXAorCWRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIGRpc3RjbGVhbi1oZHIgXAorCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RjbGVhbmNoZWNrIGRpc3RkaXIgXAorCWRpc3R1bmluc3RhbGxjaGVjayBkdmkgZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gXAorCWluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIFwKKwlpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBcCisJaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gXAorCWluc3RhbGwtbGliTFRMSUJSQVJJRVMgaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gXAorCWluc3RhbGwtcGtnY29uZmlnREFUQSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBcCisJaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBpbnN0YWxsZGlycy1hbSBcCisJbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWFtaW5mbyBcCisJbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1haW50YWluZXItY2xlYW4tdnRpIG1vc3RseWNsZWFuIFwKKwltb3N0bHljbGVhbi1hbWluZm8gbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIFwKKwltb3N0bHljbGVhbi1saWJ0b29sIG1vc3RseWNsZWFuLXZ0aSBwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgXAorCXRhZ3MtcmVjdXJzaXZlIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWR2aS1hbSBcCisJdW5pbnN0YWxsLWh0bWwtYW0gdW5pbnN0YWxsLWluZm8tYW0gdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwl1bmluc3RhbGwtcGRmLWFtIHVuaW5zdGFsbC1wa2djb25maWdEQVRBIHVuaW5zdGFsbC1wcy1hbQogCiAKICMgTm8gaW5zdGFsbC1odG1sIG9yIGluc3RhbGwtcGRmIHN1cHBvcnQgaW4gYXV0b21ha2UgeWV0CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL1JFQURNRSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FCmluZGV4IDE2N2RlNDIuLmJjYzcxNzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvUkVBRE1FCkBAIC0xLDcgKzEsNyBAQAogU3RhdHVzCiA9PT09PT0KIAotbGliZmZpLTMuMC4xMCB3YXMgcmVsZWFzZWQgb24gWFhYWFhYWFhYWCwgMjAxMC4gQ2hlY2sgdGhlIGxpYmZmaSB3ZWIKK2xpYmZmaS0zLjAuMTEgd2FzIHJlbGVhc2VkIG9uIEFwcmlsIDExLCAyMDEyLiAgQ2hlY2sgdGhlIGxpYmZmaSB3ZWIKIHBhZ2UgZm9yIHVwZGF0ZXM6IDxVUkw6aHR0cDovL3NvdXJjZXdhcmUub3JnL2xpYmZmaS8+LgogCiAKQEAgLTQzLDcgKzQzLDcgQEAKIEZvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGRldGFpbHMgYW5kIHRlc3Rpbmcgc3RhdHVzLCBwbGVhc2UKIHJlZmVyIHRvIHRoZSB3aWtpIHBhZ2UgaGVyZToKIAotIGh0dHA6Ly93d3cubW94aWVsb2dpYy5vcmcvd2lraS9pbmRleC5waHA/dGl0bGU9TGliZmZpXzMuMC4xMAorIGh0dHA6Ly93d3cubW94aWVsb2dpYy5vcmcvd2lraS9pbmRleC5waHA/dGl0bGU9TGliZmZpXzMuMC4xMQogCiBBdCB0aGUgdGltZSBvZiByZWxlYXNlLCB0aGUgZm9sbG93aW5nIGJhc2ljIGNvbmZpZ3VyYXRpb25zIGhhdmUgYmVlbgogdGVzdGVkOgpAQCAtNTQsMTIgKzU0LDE3IEBACiB8IEFscGhhICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBBbHBoYSAgICAgICAgfCBUcnU2NCAgICAgICAgICAgIHwKIHwgQVJNICAgICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IEFSTSAgICAgICAgICB8IGlPUyAgICAgICAgICAgICAgfAogfCBBVlIzMiAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgSFBQQSAgICAgICAgIHwgSFBVWCAgICAgICAgICAgICB8CiB8IElBLTY0ICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBNNjhLICAgICAgICAgfCBGcmVlTWlOVCAgICAgICAgIHwKK3wgTTY4SyAgICAgICAgIHwgUlRFTVMgICAgICAgICAgICB8CiB8IE1JUFMgICAgICAgICB8IElSSVggICAgICAgICAgICAgfAogfCBNSVBTICAgICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKK3wgTUlQUyAgICAgICAgIHwgUlRFTVMgICAgICAgICAgICB8CiB8IE1JUFM2NCAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAorfCBQb3dlclBDICAgICAgfCBBTUlHQSAgICAgICAgICAgIHwKIHwgUG93ZXJQQyAgICAgIHwgTGludXggICAgICAgICAgICB8CiB8IFBvd2VyUEMgICAgICB8IE1hYyBPU1ggICAgICAgICAgfAogfCBQb3dlclBDICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKQEAgLTcxLDE1ICs3NiwxOCBAQAogfCBTUEFSQzY0ICAgICAgfCBMaW51eCAgICAgICAgICAgIHwKIHwgU1BBUkM2NCAgICAgIHwgRnJlZUJTRCAgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IEZyZWVCU0QgICAgICAgICAgfAorfCBYODYgICAgICAgICAgfCBJbnRlcml4ICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwga0ZyZWVCU0QgICAgICAgICB8CiB8IFg4NiAgICAgICAgICB8IExpbnV4ICAgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBNYWMgT1NYICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgT3BlbkJTRCAgICAgICAgICB8Cit8IFg4NiAgICAgICAgICB8IE9TLzIgICAgICAgICAgICAgfAogfCBYODYgICAgICAgICAgfCBTb2xhcmlzICAgICAgICAgIHwKIHwgWDg2ICAgICAgICAgIHwgV2luZG93cy9DeWd3aW4gICB8CiB8IFg4NiAgICAgICAgICB8IFdpbmRvd3MvTWluZ1cgICAgfAogfCBYODYtNjQgICAgICAgfCBGcmVlQlNEICAgICAgICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgTGludXggICAgICAgICAgICB8Cit8IFg4Ni02NCAgICAgICB8IExpbnV4L3gzMiAgICAgICAgfAogfCBYODYtNjQgICAgICAgfCBPcGVuQlNEICAgICAgICAgIHwKIHwgWDg2LTY0ICAgICAgIHwgV2luZG93cy9NaW5nVyAgICB8CiB8LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tfApAQCAtMTEzLDkgKzEyMSwxNiBAQAogTWljcm9zb2Z0J3MgVmlzdWFsIEMrKyBjb21waWxlci4gIEluIHRoaXMgY2FzZSwgdXNlIHRoZSBtc3ZjYy5zaAogd3JhcHBlciBzY3JpcHQgZHVyaW5nIGNvbmZpZ3VyYXRpb24gbGlrZSBzbzoKIAotcGF0aC90by9jb25maWd1cmUgLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLXN0YXRpYyBcCi0JQ0M9cGF0aC90by9tc3ZjYy5zaCBMRD1saW5rIFwKLQlDUFA9XCJjbCAtbm9sb2dvIC1FUFwiCitwYXRoL3RvL2NvbmZpZ3VyZSBDQz1wYXRoL3RvL21zdmNjLnNoIExEPWxpbmsgQ1BQPVwiY2wgLW5vbG9nbyAtRVBcIgorCitGb3IgNjQtYml0IFdpbmRvd3MgYnVpbGRzLCB1c2UgQ0M9InBhdGgvdG8vbXN2Y2Muc2ggLW02NCIuCitZb3UgbWF5IGFsc28gbmVlZCB0byBzcGVjaWZ5IC0tYnVpbGQgYXBwcm9wcmlhdGVseS4gV2hlbiBidWlsZGluZyB3aXRoIE1TVkMKK3VuZGVyIGEgTWluZ1cgZW52aXJvbm1lbnQsIHlvdSBtYXkgbmVlZCB0byByZW1vdmUgdGhlIGxpbmUgaW4gY29uZmlndXJlCit0aGF0IHNldHMgJ2ZpeF9zcmNmaWxlX3BhdGgnIHRvIGEgJ2N5Z3BhdGgnIGNvbW1hbmQuICgnY3lncGF0aCcgaXMgbm90CitwcmVzZW50IGluIE1pbmdXLCBhbmQgaXMgbm90IHJlcXVpcmVkIHdoZW4gdXNpbmcgTWluZ1ctc3R5bGUgcGF0aHMuKQorCitGb3IgaU9TIGJ1aWxkcywgcnVuIGdlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgYW5kIHRoZW4KK2xpYmZmaS54Y29kZXByb2ogc2hvdWxkIHdvcmsuCiAKIENvbmZpZ3VyZSBoYXMgbWFueSBvdGhlciBvcHRpb25zLiBVc2UgImNvbmZpZ3VyZSAtLWhlbHAiIHRvIHNlZSB0aGVtIGFsbC4KIApAQCAtMTMzLDExICsxNDgsMzAgQEAKIAogU2VlIHRoZSBDaGFuZ2VMb2cgZmlsZXMgZm9yIGRldGFpbHMuCiAKLTMuMC4xMCA/Pz8tPz8tPz8KLSAgICAgICAgRml4IHRoZSBONjQgYnVpbGQgb24gbWlwcy1zZ2ktaXJpeDYuNS4KLQlUZXN0c3VpdGUgZml4ZXMgZm9yIFRydTY0IFVuaXguCiszLjAuMTEgQXByLTExLTEyCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciB2YXJpYWRpYyBmdW5jdGlvbnMgKGZmaV9wcmVwX2NpZl92YXIpLgorCUFkZCBMaW51eC94MzIgc3VwcG9ydC4KKwlBZGQgdGhpc2NhbGwsIGZhc3RjYWxsIGFuZCBNU1ZDIGNkZWNsIHN1cHBvcnQgb24gV2luZG93cy4KKyAgICAgICAgQWRkIEFtaWdhIGFuZCBuZXdlciBNYWNPUyBzdXBwb3J0LgorCUFkZCBtNjhrIEZyZWVNaU5UIHN1cHBvcnQuCisJSW50ZWdyYXRpb24gd2l0aCBpT1MnIHhjb2RlIGJ1aWxkIHRvb2xzLgorCUZpeCBPY3Rlb24gYW5kIE1DNjg4ODEgc3VwcG9ydC4KKwlGaXggY29kZSBwZXNzaW1pemF0aW9ucy4KKyAgICAgICAgTG90cyBvZiBidWlsZCBmaXhlcy4KKworMy4wLjEwIEF1Zy0yMy0xMQorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgQXBwbGUncyBpT1MuCisJQWRkIHN1cHBvcnQgZm9yIEFSTSBWRlAgQUJJLgorICAgICAgICBBZGQgUlRFTVMgc3VwcG9ydCBmb3IgTUlQUyBhbmQgTTY4Sy4KKwlGaXggaW5zdHJ1Y3Rpb24gY2FjaGUgY2xlYXJpbmcgcHJvYmxlbXMgb24KKwkgIEFSTSBhbmQgU1BBUkMuCisJRml4IHRoZSBONjQgYnVpbGQgb24gbWlwcy1zZ2ktaXJpeDYuNS4KIAlFbmFibGUgYnVpbGRzIHdpdGggTWljcm9zb2Z0J3MgY29tcGlsZXIuCi0JRW5hYmxlIHg4NiBidWlsZHMgd2l0aCBTdW4ncyBjb21waWxlci4KKwlFbmFibGUgeDg2IGJ1aWxkcyB3aXRoIE9yYWNsZSdzIFNvbGFyaXMgY29tcGlsZXIuCisJRml4IHN1cHBvcnQgZm9yIGNhbGxpbmcgY29kZSBjb21waWxlZCB3aXRoIE9yYWNsZSdzIFNwYXJjCisJICBTb2xhcmlzIGNvbXBpbGVyLgorCVRlc3RzdWl0ZSBmaXhlcyBmb3IgVHJ1NjQgVW5peC4KKwlBZGRpdGlvbmFsIHBsYXRmb3JtIHN1cHBvcnQuCiAKIDMuMC45IERlYy0zMS0wOQogICAgICAgICBBZGQgQVZSMzIgYW5kIHdpbjY0IHBvcnRzLiAgQWRkIEFSTSBzb2Z0ZnAgc3VwcG9ydC4KQEAgLTI2Nyw3ICszMDEsNyBAQAogQXV0aG9ycyAmIENyZWRpdHMKID09PT09PT09PT09PT09PT09CiAKLWxpYmZmaSB3YXMgb3JpZ2luYWxseSB3cml0dGVuIGJ5IEFudGhvbnkgR3JlZW4gPGdyZWVuQHJlZGhhdC5jb20+LgorbGliZmZpIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgQW50aG9ueSBHcmVlbiA8Z3JlZW5AbW94aWVsb2dpYy5jb20+LgogCiBUaGUgZGV2ZWxvcGVycyBvZiB0aGUgR05VIENvbXBpbGVyIENvbGxlY3Rpb24gcHJvamVjdCBoYXZlIG1hZGUKIGlubnVtZXJhYmxlIHZhbHVhYmxlIGNvbnRyaWJ1dGlvbnMuICBTZWUgdGhlIENoYW5nZUxvZyBmaWxlIGZvcgpAQCAtMzE4LDUgKzM1Miw2IEBACiBUaGUgbGlzdCBhYm92ZSBpcyBhbG1vc3QgY2VydGFpbmx5IGluY29tcGxldGUgYW5kIGluYWNjdXJhdGUuICBJJ20KIGhhcHB5IHRvIG1ha2UgY29ycmVjdGlvbnMgb3IgYWRkaXRpb25zIHVwb24gcmVxdWVzdC4KIAotSWYgeW91IGhhdmUgYSBwcm9ibGVtLCBvciBoYXZlIGZvdW5kIGEgYnVnLCBwbGVhc2Ugc2VuZCBhIG5vdGUgdG8KLWdyZWVuQHJlZGhhdC5jb20uCitJZiB5b3UgaGF2ZSBhIHByb2JsZW0sIG9yIGhhdmUgZm91bmQgYSBidWcsIHBsZWFzZSBzZW5kIGEgbm90ZSB0byB0aGUKK2F1dGhvciBhdCBncmVlbkBtb3hpZWxvZ2ljLmNvbSwgb3IgdGhlIHByb2plY3QgbWFpbGluZyBsaXN0IGF0CitsaWJmZmktZGlzY3Vzc0Bzb3VyY2V3YXJlLm9yZy4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvYWNsb2NhbC5tNAppbmRleCBjOGU1MjZmLi5kMzMzZmYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2FjbG9jYWwubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9hY2xvY2FsLm00CkBAIC0xLDcgKzEsOCBAQAotIyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBhY2xvY2FsIDEuMTEuMSAtKi0gQXV0b2NvbmYgLSotCisjIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGFjbG9jYWwgMS4xMS4zIC0qLSBBdXRvY29uZiAtKi0KIAogIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsCi0jIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC0xMywxOCArMTQsODM5IEBACiAKIG00X2lmbmRlZihbQUNfQVVUT0NPTkZfVkVSU0lPTl0sCiAgIFttNF9jb3B5KFttNF9QQUNLQUdFX1ZFUlNJT05dLCBbQUNfQVVUT0NPTkZfVkVSU0lPTl0pXSlkbmwKLW00X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjVdLCwKLVttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42NS4KK200X2lmKG00X2RlZm4oW0FDX0FVVE9DT05GX1ZFUlNJT05dKSwgWzIuNjhdLCwKK1ttNF93YXJuaW5nKFt0aGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBmb3IgYXV0b2NvbmYgMi42OC4KIFlvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEl0IG1heSB3b3JrLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8uCiBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KIFRvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBsdGRsLm00IC0gQ29uZmlndXJlIGx0ZGwgZm9yIHRoZSB0YXJnZXQgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQorIworIyAgIENvcHlyaWdodCAoQykgMTk5OS0yMDA2LCAyMDA3LCAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIFdyaXR0ZW4gYnkgVGhvbWFzIFRhbm5lciwgMTk5OQorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDE4IExURExfSU5JVAorCisjIExUX0NPTkZJR19MVERMX0RJUihESVJFQ1RPUlksIFtMVERMLU1PREVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRElSRUNUT1JZIGNvbnRhaW5zIHRoZSBsaWJsdGRsIHNvdXJjZXMuICBJdCBpcyBva2F5IHRvIGNhbGwgdGhpcworIyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcywgYXMgbG9uZyBhcyB0aGUgc2FtZSBESVJFQ1RPUlkgaXMgYWx3YXlzIGdpdmVuLgorQUNfREVGVU4oW0xUX0NPTkZJR19MVERMX0RJUl0sCitbQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKQorXyQwKCQqKQorXSkjIExUX0NPTkZJR19MVERMX0RJUgorCisjIFdlIGJyZWFrIHRoaXMgb3V0IGludG8gYSBzZXBhcmF0ZSBtYWNybywgc28gdGhhdCB3ZSBjYW4gY2FsbCBpdCBzYWZlbHkKKyMgaW50ZXJuYWxseSB3aXRob3V0IGJlaW5nIGNhdWdodCBhY2NpZGVudGFsbHkgYnkgdGhlIHNlZCBzY2FuIGluIGxpYnRvb2xpemUuCittNF9kZWZ1bihbX0xUX0NPTkZJR19MVERMX0RJUl0sCitbZG5sIHJlbW92ZSB0cmFpbGluZyBzbGFzaGVzCittNF9wdXNoZGVmKFtfQVJHX0RJUl0sIG00X2JwYXRzdWJzdChbJDFdLCBbLyokXSkpCittNF9jYXNlKF9MVERMX0RJUiwKKwlbXSwgW2RubCBvbmx5IHNldCBsdF9sdGRsX2RpciBpZiBfQVJHX0RJUiBpcyBub3Qgc2ltcGx5IGAuJworCSAgICAgbTRfaWYoX0FSR19ESVIsIFsuXSwKKwkgICAgICAgICAgICAgW10sCisJCSBbbTRfZGVmaW5lKFtfTFRETF9ESVJdLCBfQVJHX0RJUikKKwkgICAgICAgICAgX0xUX1NIRUxMX0lOSVQoW2x0X2x0ZGxfZGlyPSddX0FSR19ESVJbJ10pXSldLAorICAgIFttNF9pZihfQVJHX0RJUiwgX0xURExfRElSLAorCSAgICBbXSwKKwlbbTRfZmF0YWwoW211bHRpcGxlIGxpYmx0ZGwgZGlyZWN0b3JpZXM6IGBdX0xURExfRElSWycsIGBdX0FSR19ESVJbJ10pXSldKQorbTRfcG9wZGVmKFtfQVJHX0RJUl0pCitdKSMgX0xUX0NPTkZJR19MVERMX0RJUgorCisjIEluaXRpYWxpc2U6CittNF9kZWZpbmUoW19MVERMX0RJUl0sIFtdKQorCisKKyMgX0xUX0JVSUxEX1BSRUZJWAorIyAtLS0tLS0tLS0tLS0tLS0tCisjIElmIEF1dG9jb25mIGlzIG5ldyBlbm91Z2gsIGV4cGFuZCB0byBgJHt0b3BfYnVpbGRfcHJlZml4fScsIG90aGVyd2lzZQorIyB0byBgJHt0b3BfYnVpbGRkaXJ9LycuCittNF9kZWZpbmUoW19MVF9CVUlMRF9QUkVGSVhdLAorW200X2lmZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwKKyAgIFttNF9pZihtNF92ZXJzaW9uX2NvbXBhcmUobTRfZGVmbihbQUNfQVVUT0NPTkZfVkVSU0lPTl0pLCBbMi42Ml0pLAorCSAgWy0xXSwgW200X2lmZGVmKFtfQUNfSEFWRV9UT1BfQlVJTERfUFJFRklYXSwKKwkJCSAgWyR7dG9wX2J1aWxkX3ByZWZpeH1dLAorCQkJICBbJHt0b3BfYnVpbGRkaXJ9L10pXSwKKwkgIFske3RvcF9idWlsZF9wcmVmaXh9XSldLAorICAgWyR7dG9wX2J1aWxkZGlyfS9dKVtdZG5sCitdKQorCisKKyMgTFRETF9DT05WRU5JRU5DRQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgY29udmVuaWVuY2UgbGlicmFyeSBhbmQKKyMgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcworIyAtLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0CisjIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgaGVyZS4gIExJQkxUREwgd2lsbCBiZSBwcmVmaXhlZCB3aXRoCisjICcke3RvcF9idWlsZF9wcmVmaXh9JyBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSB3aXRoICcke3RvcF9idWlsZGRpcn0vJywKKyMgYW5kIExURExJTkNMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3Bfc3JjZGlyfS8nIChub3RlIHRoZSBzaW5nbGUKKyMgcXVvdGVzISkuICBJZiB5b3VyIHBhY2thZ2UgaXMgbm90IGZsYXQgYW5kIHlvdSdyZSBub3QgdXNpbmcgYXV0b21ha2UsCisjIGRlZmluZSB0b3BfYnVpbGRfcHJlZml4LCB0b3BfYnVpbGRkaXIsIGFuZCB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkKKyMgaW4geW91ciBNYWtlZmlsZXMuCitBQ19ERUZVTihbTFRETF9DT05WRU5JRU5DRV0sCitbQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubAorZG5sIEFsdGhvdWdoIHRoZSBhcmd1bWVudCBpcyBkZXByZWNhdGVkIGFuZCBubyBsb25nZXIgZG9jdW1lbnRlZCwKK2RubCBMVERMX0NPTlZFTklFTkNFIHVzZWQgdG8gdGFrZSBhIERJUkVDVE9SWSBvcmd1bWVudCwgaWYgd2UgaGF2ZSBvbmUKK2RubCBoZXJlIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBhcyBhbnkgb3RoZXIgZGVjbGFyYXRpb24gb2YgbGlibHRkbCdzCitkbmwgbG9jYXRpb24hICBUaGlzIGFsc28gZW5zdXJlcyBsdF9sdGRsX2RpciBpcyBzZXQgd2hlbiBjb25maWd1cmUuYWMgaXMKK2RubCBub3QgeWV0IHVzaW5nIGFuIGV4cGxpY2l0IExUX0NPTkZJR19MVERMX0RJUi4KK200X2lmdmFsKFskMV0sIFtfTFRfQ09ORklHX0xURExfRElSKFskMV0pXSlkbmwKK18kMCgpCitdKSMgTFRETF9DT05WRU5JRU5DRQorCisjIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UgYWNjZXB0ZWQgYSBkaXJlY3RvcnkgYXJndW1lbnQgaW4gb2xkZXIgbGlidG9vbHMsCisjIG5vdyB3ZSBoYXZlIExUX0NPTkZJR19MVERMX0RJUjoKK0FVX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwKK1tfTFRfQ09ORklHX0xURExfRElSKFttNF9kZWZhdWx0KFskMV0sIFtsaWJsdGRsXSldKQorX0xURExfQ09OVkVOSUVOQ0VdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQkxURExfQ09OVkVOSUVOQ0VdLCBbXSkKKworCisjIF9MVERMX0NPTlZFTklFTkNFCisjIC0tLS0tLS0tLS0tLS0tLS0tCisjIENvZGUgc2hhcmVkIGJ5IExURExfQ09OVkVOSUVOQ0UgYW5kIExURExfSU5JVChbY29udmVuaWVuY2VdKS4KK200X2RlZnVuKFtfTFRETF9DT05WRU5JRU5DRV0sCitbY2FzZSAkZW5hYmxlX2x0ZGxfY29udmVuaWVuY2UgaW4KKyAgbm8pIEFDX01TR19FUlJPUihbdGhpcyBwYWNrYWdlIG5lZWRzIGEgY29udmVuaWVuY2UgbGlibHRkbF0pIDs7CisgICIiKSBlbmFibGVfbHRkbF9jb252ZW5pZW5jZT15ZXMKKyAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1jb252ZW5pZW5jZSIgOzsKK2VzYWMKK0xJQkxUREw9J19MVF9CVUlMRF9QUkVGSVgnIiR7bHRfbHRkbF9kaXIrJGx0X2x0ZGxfZGlyL31saWJsdGRsYy5sYSIKK0xURExERVBTPSRMSUJMVERMCitMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9JyIke2x0X2x0ZGxfZGlyKy8kbHRfbHRkbF9kaXJ9IgorCitBQ19TVUJTVChbTElCTFRETF0pCitBQ19TVUJTVChbTFRETERFUFNdKQorQUNfU1VCU1QoW0xURExJTkNMXSkKKworIyBGb3IgYmFja3dhcmRzIG5vbi1nZXR0ZXh0IGNvbnNpc3RlbnQgY29tcGF0aWJpbGl0eS4uLgorSU5DTFRETD0iJExURExJTkNMIgorQUNfU1VCU1QoW0lOQ0xURExdKQorXSkjIF9MVERMX0NPTlZFTklFTkNFCisKKworIyBMVERMX0lOU1RBTExBQkxFCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgc2V0cyBMSUJMVERMIHRvIHRoZSBsaW5rIGZsYWdzIGZvciB0aGUgbGlibHRkbCBpbnN0YWxsYWJsZSBsaWJyYXJ5CisjIGFuZCBMVERMSU5DTCB0byB0aGUgaW5jbHVkZSBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgaGVhZGVyIGFuZCBhZGRzCisjIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCB0byB0aGUgY29uZmlndXJlIGFyZ3VtZW50cy4gIE5vdGUgdGhhdAorIyBBQ19DT05GSUdfU1VCRElSUyBpcyBub3QgY2FsbGVkIGZyb20gaGVyZS4gIElmIGFuIGluc3RhbGxlZCBsaWJsdGRsCisjIGlzIG5vdCBmb3VuZCwgTElCTFRETCB3aWxsIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX2J1aWxkX3ByZWZpeH0nIGlmCisjIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHdpdGggJyR7dG9wX2J1aWxkZGlyfS8nLCBhbmQgTFRETElOQ0wgd2lsbCBiZQorIyBwcmVmaXhlZCB3aXRoICcke3RvcF9zcmNkaXJ9LycgKG5vdGUgdGhlIHNpbmdsZSBxdW90ZXMhKS4gIElmIHlvdXIKKyMgcGFja2FnZSBpcyBub3QgZmxhdCBhbmQgeW91J3JlIG5vdCB1c2luZyBhdXRvbWFrZSwgZGVmaW5lIHRvcF9idWlsZF9wcmVmaXgsCisjIHRvcF9idWlsZGRpciwgYW5kIHRvcF9zcmNkaXIgYXBwcm9wcmlhdGVseSBpbiB5b3VyIE1ha2VmaWxlcy4KKyMgSW4gdGhlIGZ1dHVyZSwgdGhpcyBtYWNybyBtYXkgaGF2ZSB0byBiZSBjYWxsZWQgYWZ0ZXIgTFRfSU5JVC4KK0FDX0RFRlVOKFtMVERMX0lOU1RBTExBQkxFXSwKK1tBQ19CRUZPUkUoWyQwXSwgW0xURExfSU5JVF0pZG5sCitkbmwgQWx0aG91Z2ggdGhlIGFyZ3VtZW50IGlzIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBkb2N1bWVudGVkLAorZG5sIExURExfSU5TVEFMTEFCTEUgdXNlZCB0byB0YWtlIGEgRElSRUNUT1JZIG9yZ3VtZW50LCBpZiB3ZSBoYXZlIG9uZQorZG5sIGhlcmUgbWFrZSBzdXJlIGl0IGlzIHRoZSBzYW1lIGFzIGFueSBvdGhlciBkZWNsYXJhdGlvbiBvZiBsaWJsdGRsJ3MKK2RubCBsb2NhdGlvbiEgIFRoaXMgYWxzbyBlbnN1cmVzIGx0X2x0ZGxfZGlyIGlzIHNldCB3aGVuIGNvbmZpZ3VyZS5hYyBpcworZG5sIG5vdCB5ZXQgdXNpbmcgYW4gZXhwbGljaXQgTFRfQ09ORklHX0xURExfRElSLgorbTRfaWZ2YWwoWyQxXSwgW19MVF9DT05GSUdfTFRETF9ESVIoWyQxXSldKWRubAorXyQwKCkKK10pIyBMVERMX0lOU1RBTExBQkxFCisKKyMgQUNfTElCTFRETF9JTlNUQUxMQUJMRSBhY2NlcHRlZCBhIGRpcmVjdG9yeSBhcmd1bWVudCBpbiBvbGRlciBsaWJ0b29scywKKyMgbm93IHdlIGhhdmUgTFRfQ09ORklHX0xURExfRElSOgorQVVfREVGVU4oW0FDX0xJQkxURExfSU5TVEFMTEFCTEVdLAorW19MVF9DT05GSUdfTFRETF9ESVIoW200X2RlZmF1bHQoWyQxXSwgW2xpYmx0ZGxdKV0pCitfTFRETF9JTlNUQUxMQUJMRV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCTFRETF9JTlNUQUxMQUJMRV0sIFtdKQorCisKKyMgX0xURExfSU5TVEFMTEFCTEUKKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ29kZSBzaGFyZWQgYnkgTFRETF9JTlNUQUxMQUJMRSBhbmQgTFRETF9JTklUKFtpbnN0YWxsYWJsZV0pLgorbTRfZGVmdW4oW19MVERMX0lOU1RBTExBQkxFXSwKK1tpZiB0ZXN0IC1mICRwcmVmaXgvbGliL2xpYmx0ZGwubGE7IHRoZW4KKyAgbHRfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgTERGTEFHUz0iLUwkcHJlZml4L2xpYiAkTERGTEFHUyIKKyAgQUNfQ0hFQ0tfTElCKFtsdGRsXSwgW2x0X2RsaW5pdF0sIFtsdF9saWJfbHRkbD15ZXNdKQorICBMREZMQUdTPSIkbHRfc2F2ZV9MREZMQUdTIgorICBpZiB0ZXN0IHgiJHtsdF9saWJfbHRkbC1ub30iID0geHllczsgdGhlbgorICAgIGlmIHRlc3QgeCIkZW5hYmxlX2x0ZGxfaW5zdGFsbCIgIT0geHllczsgdGhlbgorICAgICAgIyBEb24ndCBvdmVyd3JpdGUgJHByZWZpeC9saWIvbGlibHRkbC5sYSB3aXRob3V0IC0tZW5hYmxlLWx0ZGwtaW5zdGFsbAorICAgICAgQUNfTVNHX1dBUk4oW25vdCBvdmVyd3JpdGluZyBsaWJsdGRsIGF0ICRwcmVmaXgsIGZvcmNlIHdpdGggYC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCddKQorICAgICAgZW5hYmxlX2x0ZGxfaW5zdGFsbD1ubworICAgIGZpCisgIGVsaWYgdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiA9IHhubzsgdGhlbgorICAgIEFDX01TR19XQVJOKFtsaWJsdGRsIG5vdCBpbnN0YWxsZWQsIGJ1dCBpbnN0YWxsYXRpb24gZGlzYWJsZWRdKQorICBmaQorZmkKKworIyBJZiBjb25maWd1cmUuYWMgZGVjbGFyZWQgYW4gaW5zdGFsbGFibGUgbHRkbCwgYW5kIHRoZSB1c2VyIGRpZG4ndCBvdmVycmlkZQorIyB3aXRoIC0tZGlzYWJsZS1sdGRsLWluc3RhbGwsIHdlIHdpbGwgaW5zdGFsbCB0aGUgc2hpcHBlZCBsaWJsdGRsLgorY2FzZSAkZW5hYmxlX2x0ZGxfaW5zdGFsbCBpbgorICBubykgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAtLWVuYWJsZS1sdGRsLWluc3RhbGw9bm8iCisgICAgICBMSUJMVERMPSItbGx0ZGwiCisgICAgICBMVERMREVQUz0KKyAgICAgIExURExJTkNMPQorICAgICAgOzsKKyAgKikgIGVuYWJsZV9sdGRsX2luc3RhbGw9eWVzCisgICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbCIKKyAgICAgIExJQkxUREw9J19MVF9CVUlMRF9QUkVGSVgnIiR7bHRfbHRkbF9kaXIrJGx0X2x0ZGxfZGlyL31saWJsdGRsLmxhIgorICAgICAgTFRETERFUFM9JExJQkxUREwKKyAgICAgIExURExJTkNMPSctSSR7dG9wX3NyY2Rpcn0nIiR7bHRfbHRkbF9kaXIrLyRsdF9sdGRsX2Rpcn0iCisgICAgICA7OworZXNhYworCitBQ19TVUJTVChbTElCTFRETF0pCitBQ19TVUJTVChbTFRETERFUFNdKQorQUNfU1VCU1QoW0xURExJTkNMXSkKKworIyBGb3IgYmFja3dhcmRzIG5vbi1nZXR0ZXh0IGNvbnNpc3RlbnQgY29tcGF0aWJpbGl0eS4uLgorSU5DTFRETD0iJExURExJTkNMIgorQUNfU1VCU1QoW0lOQ0xURExdKQorXSkjIExURExfSU5TVEFMTEFCTEUKKworCisjIF9MVERMX01PREVfRElTUEFUQ0gKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRETF9NT0RFX0RJU1BBVENIXSwKK1tkbmwgSWYgX0xURExfRElSIGlzIGAuJywgdGhlbiB3ZSBhcmUgY29uZmlndXJpbmcgbGlibHRkbCBpdHNlbGY6CittNF9pZihfTFRETF9ESVIsIFtdLAorCVtdLAorICAgIGRubCBpZiBfTFRETF9NT0RFIHdhcyBub3Qgc2V0IGFscmVhZHksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGBzdWJwcm9qZWN0JzoKKyAgICBbbTRfY2FzZShtNF9kZWZhdWx0KF9MVERMX01PREUsIFtzdWJwcm9qZWN0XSksCisJICBbc3VicHJvamVjdF0sIFtBQ19DT05GSUdfU1VCRElSUyhfTFRETF9ESVIpCisJCQkgIF9MVF9TSEVMTF9JTklUKFtsdF9kbG9wZW5fZGlyPSIkbHRfbHRkbF9kaXIiXSldLAorCSAgW25vbnJlY3Vyc2l2ZV0sIFtfTFRfU0hFTExfSU5JVChbbHRfZGxvcGVuX2Rpcj0iJGx0X2x0ZGxfZGlyIjsgbHRfbGlib2JqX3ByZWZpeD0iJGx0X2x0ZGxfZGlyLyJdKV0sCisJICBbcmVjdXJzaXZlXSwgW10sCisJW200X2ZhdGFsKFt1bmtub3duIGxpYmx0ZGwgbW9kZTogXV9MVERMX01PREUpXSldKWRubAorZG5sIEJlIGNhcmVmdWwgbm90IHRvIGV4cGFuZCB0d2ljZToKK200X2RlZmluZShbJDBdLCBbXSkKK10pIyBfTFRETF9NT0RFX0RJU1BBVENICisKKworIyBfTFRfTElCT0JKKE1PRFVMRV9OQU1FKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBMaWtlIEFDX0xJQk9CSiwgZXhjZXB0IHRoYXQgTU9EVUxFX05BTUUgZ29lcyBpbnRvIF9MVF9MSUJPQkpTIGluc3RlYWQKKyMgb2YgaW50byBMSUJPQkpTLgorQUNfREVGVU4oW19MVF9MSUJPQkpdLCBbCisgIG00X3BhdHRlcm5fYWxsb3coW15fTFRfTElCT0JKUyRdKQorICBfTFRfTElCT0JKUz0iJF9MVF9MSUJPQkpTICQxLiRhY19vYmpleHQiCitdKSMgX0xUX0xJQk9CSlMKKworCisjIExURExfSU5JVChbT1BUSU9OU10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENsaWVudHMgb2YgbGlibHRkbCBjYW4gdXNlIHRoaXMgbWFjcm8gdG8gYWxsb3cgdGhlIGluc3RhbGxlciB0bworIyBjaG9vc2UgYmV0d2VlbiBhIHNoaXBwZWQgY29weSBvZiB0aGUgbHRkbCBzb3VyY2VzIG9yIGEgcHJlaW5zdGFsbGVkCisjIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkuICBJZiB0aGUgc2hpcHBlZCBsdGRsIHNvdXJjZXMgYXJlIG5vdCBpbiBhCisjIHN1YmRpcmVjdG9yeSBuYW1lZCBsaWJsdGRsLCB0aGUgZGlyZWN0b3J5IG5hbWUgbXVzdCBiZSBnaXZlbiBieQorIyBMVF9DT05GSUdfTFRETF9ESVIuCitBQ19ERUZVTihbTFRETF9JTklUXSwKK1tkbmwgUGFyc2UgT1BUSU9OUworX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCisKK2RubCBXZSBuZWVkIHRvIGtlZXAgb3VyIG93biBsaXN0IG9mIGxpYm9ianMgc2VwYXJhdGUgZnJvbSBvdXIgcGFyZW50IHByb2plY3QsCitkbmwgYW5kIHRoZSBlYXNpZXN0IHdheSB0byBkbyB0aGF0IGlzIHJlZGVmaW5lIHRoZSBBQ19MSUJPQkpzIG1hY3JvIHdoaWxlCitkbmwgd2UgbG9vayBmb3Igb3VyIG93biBMSUJPQkpzLgorbTRfcHVzaGRlZihbQUNfTElCT0JKXSwgbTRfZGVmbihbX0xUX0xJQk9CSl0pKQorbTRfcHVzaGRlZihbQUNfTElCU09VUkNFU10pCisKK2RubCBJZiBub3Qgb3RoZXJ3aXNlIGRlZmluZWQsIGRlZmF1bHQgdG8gdGhlIDEuNS54IGNvbXBhdGlibGUgc3VicHJvamVjdCBtb2RlOgorbTRfaWYoX0xURExfTU9ERSwgW10sCisgICAgICAgIFttNF9kZWZpbmUoW19MVERMX01PREVdLCBtNF9kZWZhdWx0KFskMl0sIFtzdWJwcm9qZWN0XSkpCisgICAgICAgIG00X2lmKFstMV0sIFttNF9icmVnZXhwKF9MVERMX01PREUsIFtcKHN1YnByb2plY3RcfFwobm9uXCk/cmVjdXJzaXZlXCldKV0sCisgICAgICAgICAgICAgICAgW200X2ZhdGFsKFt1bmtub3duIGxpYmx0ZGwgbW9kZTogXV9MVERMX01PREUpXSldKQorCitBQ19BUkdfV0lUSChbaW5jbHVkZWRfbHRkbF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtaW5jbHVkZWQtbHRkbF0sCisgICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIEdOVSBsdGRsIHNvdXJjZXMgaW5jbHVkZWQgaGVyZV0pXSkKKworaWYgdGVzdCAieCR3aXRoX2luY2x1ZGVkX2x0ZGwiICE9IHh5ZXM7IHRoZW4KKyAgIyBXZSBhcmUgbm90IGJlaW5nIGZvcmNlZCB0byB1c2UgdGhlIGluY2x1ZGVkIGxpYmx0ZGwgc291cmNlcywgc28KKyAgIyBkZWNpZGUgd2hldGhlciB0aGVyZSBpcyBhIHVzZWZ1bCBpbnN0YWxsZWQgdmVyc2lvbiB3ZSBjYW4gdXNlLgorICBBQ19DSEVDS19IRUFERVIoW2x0ZGwuaF0sCisgICAgICBbQUNfQ0hFQ0tfREVDTChbbHRfZGxpbnRlcmZhY2VfcmVnaXN0ZXJdLAorCSAgIFtBQ19DSEVDS19MSUIoW2x0ZGxdLCBbbHRfZGxhZHZpc2VfcHJlbG9hZF0sCisJICAgICAgIFt3aXRoX2luY2x1ZGVkX2x0ZGw9bm9dLAorCSAgICAgICBbd2l0aF9pbmNsdWRlZF9sdGRsPXllc10pXSwKKwkgICBbd2l0aF9pbmNsdWRlZF9sdGRsPXllc10sCisJICAgW0FDX0lOQ0xVREVTX0RFRkFVTFQKKwkgICAgI2luY2x1ZGUgPGx0ZGwuaD5dKV0sCisgICAgICBbd2l0aF9pbmNsdWRlZF9sdGRsPXllc10sCisgICAgICBbQUNfSU5DTFVERVNfREVGQVVMVF0KKyAgKQorZmkKKworZG5sIElmIG5laXRoZXIgTFRfQ09ORklHX0xURExfRElSLCBMVERMX0NPTlZFTklFTkNFIG5vciBMVERMX0lOU1RBTExBQkxFCitkbmwgd2FzIGNhbGxlZCB5ZXQsIHRoZW4gZm9yIG9sZCB0aW1lcycgc2FrZSwgd2UgYXNzdW1lIGxpYmx0ZGwgaXMgaW4gYW4KK2RubCBlcG9ueW1vdXMgZGlyZWN0b3J5OgorQUNfUFJPVklERV9JRkVMU0UoW0xUX0NPTkZJR19MVERMX0RJUl0sIFtdLCBbX0xUX0NPTkZJR19MVERMX0RJUihbbGlibHRkbF0pXSkKKworQUNfQVJHX1dJVEgoW2x0ZGxfaW5jbHVkZV0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbHRkbC1pbmNsdWRlPURJUl0sCisgICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIGx0ZGwgaGVhZGVycyBpbnN0YWxsZWQgaW4gRElSXSldKQorCitpZiB0ZXN0IC1uICIkd2l0aF9sdGRsX2luY2x1ZGUiOyB0aGVuCisgIGlmIHRlc3QgLWYgIiR3aXRoX2x0ZGxfaW5jbHVkZS9sdGRsLmgiOyB0aGVuIDoKKyAgZWxzZQorICAgIEFDX01TR19FUlJPUihbaW52YWxpZCBsdGRsIGluY2x1ZGUgZGlyZWN0b3J5OiBgJHdpdGhfbHRkbF9pbmNsdWRlJ10pCisgIGZpCitlbHNlCisgIHdpdGhfbHRkbF9pbmNsdWRlPW5vCitmaQorCitBQ19BUkdfV0lUSChbbHRkbF9saWJdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWx0ZGwtbGliPURJUl0sCisgICAgICAgICAgICAgICAgICAgIFt1c2UgdGhlIGxpYmx0ZGwubGEgaW5zdGFsbGVkIGluIERJUl0pXSkKKworaWYgdGVzdCAtbiAiJHdpdGhfbHRkbF9saWIiOyB0aGVuCisgIGlmIHRlc3QgLWYgIiR3aXRoX2x0ZGxfbGliL2xpYmx0ZGwubGEiOyB0aGVuIDoKKyAgZWxzZQorICAgIEFDX01TR19FUlJPUihbaW52YWxpZCBsdGRsIGxpYnJhcnkgZGlyZWN0b3J5OiBgJHdpdGhfbHRkbF9saWInXSkKKyAgZmkKK2Vsc2UKKyAgd2l0aF9sdGRsX2xpYj1ubworZmkKKworY2FzZSAsJHdpdGhfaW5jbHVkZWRfbHRkbCwkd2l0aF9sdGRsX2luY2x1ZGUsJHdpdGhfbHRkbF9saWIsIGluCisgICx5ZXMsbm8sbm8sKQorCW00X2Nhc2UobTRfZGVmYXVsdChfTFRETF9UWVBFLCBbY29udmVuaWVuY2VdKSwKKwkgICAgW2NvbnZlbmllbmNlXSwgW19MVERMX0NPTlZFTklFTkNFXSwKKwkgICAgW2luc3RhbGxhYmxlXSwgW19MVERMX0lOU1RBTExBQkxFXSwKKwkgIFttNF9mYXRhbChbdW5rbm93biBsaWJsdGRsIGJ1aWxkIHR5cGU6IF1fTFRETF9UWVBFKV0pCisJOzsKKyAgLG5vLG5vLG5vLCkKKwkjIElmIHRoZSBpbmNsdWRlZCBsdGRsIGlzIG5vdCB0byBiZSB1c2VkLCB0aGVuIHVzZSB0aGUKKwkjIHByZWluc3RhbGxlZCBsaWJsdGRsIHdlIGZvdW5kLgorCUFDX0RFRklORShbSEFWRV9MVERMXSwgWzFdLAorCSAgW0RlZmluZSB0aGlzIGlmIGEgbW9kZXJuIGxpYmx0ZGwgaXMgYWxyZWFkeSBpbnN0YWxsZWRdKQorCUxJQkxUREw9LWxsdGRsCisJTFRETERFUFM9CisJTFRETElOQ0w9CisJOzsKKyAgLG5vKixubywqKQorCUFDX01TR19FUlJPUihbYC0td2l0aC1sdGRsLWluY2x1ZGUnIGFuZCBgLS13aXRoLWx0ZGwtbGliJyBvcHRpb25zIG11c3QgYmUgdXNlZCB0b2dldGhlcl0pCisJOzsKKyAgKikJd2l0aF9pbmNsdWRlZF9sdGRsPW5vCisJTElCTFRETD0iLUwkd2l0aF9sdGRsX2xpYiAtbGx0ZGwiCisJTFRETERFUFM9CisJTFRETElOQ0w9Ii1JJHdpdGhfbHRkbF9pbmNsdWRlIgorCTs7Citlc2FjCitJTkNMVERMPSIkTFRETElOQ0wiCisKKyMgUmVwb3J0IG91ciBkZWNpc2lvbi4uLgorQUNfTVNHX0NIRUNLSU5HKFt3aGVyZSB0byBmaW5kIGxpYmx0ZGwgaGVhZGVyc10pCitBQ19NU0dfUkVTVUxUKFskTFRETElOQ0xdKQorQUNfTVNHX0NIRUNLSU5HKFt3aGVyZSB0byBmaW5kIGxpYmx0ZGwgbGlicmFyeV0pCitBQ19NU0dfUkVTVUxUKFskTElCTFRETF0pCisKK19MVERMX1NFVFVQCisKK2RubCByZXN0b3JlIGF1dG9jb25mIGRlZmluaXRpb24uCittNF9wb3BkZWYoW0FDX0xJQk9CSl0pCittNF9wb3BkZWYoW0FDX0xJQlNPVVJDRVNdKQorCitBQ19DT05GSUdfQ09NTUFORFNfUFJFKFsKKyAgICBfbHRkbF9saWJvYmpzPQorICAgIF9sdGRsX2x0bGlib2Jqcz0KKyAgICBpZiB0ZXN0IC1uICIkX0xUX0xJQk9CSlMiOyB0aGVuCisgICAgICAjIFJlbW92ZSB0aGUgZXh0ZW5zaW9uLgorICAgICAgX2x0X3NlZF9kcm9wX29iamV4dD0ncy9cLm8kLy87cy9cLm9iaiQvLycKKyAgICAgIGZvciBpIGluIGBmb3IgaSBpbiAkX0xUX0xJQk9CSlM7IGRvIGVjaG8gIiRpIjsgZG9uZSB8IHNlZCAiJF9sdF9zZWRfZHJvcF9vYmpleHQiIHwgc29ydCAtdWA7IGRvCisgICAgICAgIF9sdGRsX2xpYm9ianM9IiRfbHRkbF9saWJvYmpzICRsdF9saWJvYmpfcHJlZml4JGkuJGFjX29iamV4dCIKKyAgICAgICAgX2x0ZGxfbHRsaWJvYmpzPSIkX2x0ZGxfbHRsaWJvYmpzICRsdF9saWJvYmpfcHJlZml4JGkubG8iCisgICAgICBkb25lCisgICAgZmkKKyAgICBBQ19TVUJTVChbbHRkbF9MSUJPQkpTXSwgWyRfbHRkbF9saWJvYmpzXSkKKyAgICBBQ19TVUJTVChbbHRkbF9MVExJQk9CSlNdLCBbJF9sdGRsX2x0bGlib2Jqc10pCitdKQorCisjIE9ubHkgZXhwYW5kIG9uY2U6CittNF9kZWZpbmUoW0xURExfSU5JVF0pCitdKSMgTFRETF9JTklUCisKKyMgT2xkIG5hbWVzOgorQVVfREVGVU4oW0FDX0xJQl9MVERMXSwgW0xURExfSU5JVCgkQCldKQorQVVfREVGVU4oW0FDX1dJVEhfTFRETF0sIFtMVERMX0lOSVQoJEApXSkKK0FVX0RFRlVOKFtMVF9XSVRIX0xURExdLCBbTFRETF9JTklUKCRAKV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQl9MVERMXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX1dJVEhfTFRETF0sIFtdKQorZG5sIEFDX0RFRlVOKFtMVF9XSVRIX0xURExdLCBbXSkKKworCisjIF9MVERMX1NFVFVQCisjIC0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYWxsIHRoZSBjaGVja3MgbmVjZXNzYXJ5IGZvciBjb21waWxhdGlvbiBvZiB0aGUgbHRkbCBvYmplY3RzCisjICAtLSBpbmNsdWRpbmcgY29tcGlsZXIgY2hlY2tzIGFuZCBoZWFkZXIgY2hlY2tzLiAgVGhpcyBpcyBhIHB1YmxpYworIyBpbnRlcmZhY2UgIG1haW5seSBmb3IgdGhlIGJlbmVmaXQgb2YgbGlibHRkbCdzIG93biBjb25maWd1cmUuYWMsIG1vc3QKKyMgb3RoZXIgdXNlcnMgc2hvdWxkIGNhbGwgTFRETF9JTklUIGluc3RlYWQuCitBQ19ERUZVTihbX0xURExfU0VUVVBdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX01PRFVMRV9FWFRdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX01PRFVMRV9QQVRIXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1NZU19ETFNFQVJDSF9QQVRIXSlkbmwKK0FDX1JFUVVJUkUoW0xUX0xJQl9ETExPQURdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX1NZTUJPTF9VU0NPUkVdKWRubAorQUNfUkVRVUlSRShbTFRfRlVOQ19ETFNZTV9VU0NPUkVdKWRubAorQUNfUkVRVUlSRShbTFRfU1lTX0RMT1BFTl9ERVBMSUJTXSlkbmwKK0FDX1JFUVVJUkUoW2dsX0ZVTkNfQVJHWl0pZG5sCisKK200X3JlcXVpcmUoW19MVF9DSEVDS19PQkpESVJdKWRubAorbTRfcmVxdWlyZShbX0xUX0hFQURFUl9ETEZDTl0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfRExQUkVPUEVOXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCisKK2RubCBEb24ndCByZXF1aXJlIHRoaXMsIG9yIGl0IHdpbGwgYmUgZXhwYW5kZWQgZWFybGllciB0aGFuIHRoZSBjb2RlCitkbmwgdGhhdCBzZXRzIHRoZSB2YXJpYWJsZXMgaXQgcmVsaWVzIG9uOgorX0xUX0VOQUJMRV9JTlNUQUxMCisKK2RubCBfTFRETF9NT0RFIHNwZWNpZmljIGNvZGUgbXVzdCBiZSBjYWxsZWQgYXQgbGVhc3Qgb25jZToKK19MVERMX01PREVfRElTUEFUQ0gKKworIyBJbiBvcmRlciB0aGF0IGx0ZGwuYyBjYW4gY29tcGlsZSwgZmluZCBvdXQgdGhlIGZpcnN0IEFDX0NPTkZJR19IRUFERVJTCisjIHRoZSB1c2VyIHVzZWQuICBUaGlzIGlzIHNvIHRoYXQgbHRkbC5oIGNhbiBwaWNrIHVwIHRoZSBwYXJlbnQgcHJvamVjdHMKKyMgY29uZmlnLmggZmlsZSwgVGhlIGZpcnN0IGZpbGUgaW4gQUNfQ09ORklHX0hFQURFUlMgbXVzdCBjb250YWluIHRoZQorIyBkZWZpbml0aW9ucyByZXF1aXJlZCBieSBsdGRsLmMuCisjIEZJWE1FOiBSZW1vdmUgdXNlIG9mIHVuZG9jdW1lbnRlZCBBQ19MSVNUX0hFQURFUlMgKDIuNTkgY29tcGF0aWJpbGl0eSkuCitBQ19DT05GSUdfQ09NTUFORFNfUFJFKFtkbmwKK200X3BhdHRlcm5fYWxsb3coW15MVF9DT05GSUdfSCRdKWRubAorbTRfaWZzZXQoW0FIX0hFQURFUl0sCisgICAgW0xUX0NPTkZJR19IPUFIX0hFQURFUl0sCisgICAgW200X2lmc2V0KFtBQ19MSVNUX0hFQURFUlNdLAorCSAgICBbTFRfQ09ORklHX0g9YGVjaG8gIkFDX0xJU1RfSEVBREVSUyIgfCAkU0VEICdzLF5bWyAgICAgIF1dKiwsO3MsW1sgOl1dLiokLCwnYF0sCisJW10pXSldKQorQUNfU1VCU1QoW0xUX0NPTkZJR19IXSkKKworQUNfQ0hFQ0tfSEVBREVSUyhbdW5pc3RkLmggZGwuaCBzeXMvZGwuaCBkbGQuaCBtYWNoLW8vZHlsZC5oIGRpcmVudC5oXSwKKwlbXSwgW10sIFtBQ19JTkNMVURFU19ERUZBVUxUXSkKKworQUNfQ0hFQ0tfRlVOQ1MoW2Nsb3NlZGlyIG9wZW5kaXIgcmVhZGRpcl0sIFtdLCBbQUNfTElCT0JKKFtsdF9fZGlyZW50XSldKQorQUNfQ0hFQ0tfRlVOQ1MoW3N0cmxjYXQgc3RybGNweV0sIFtdLCBbQUNfTElCT0JKKFtsdF9fc3RybF0pXSkKKworbTRfcGF0dGVybl9hbGxvdyhbTFRfTElCRVhUXSlkbmwKK0FDX0RFRklORV9VTlFVT1RFRChbTFRfTElCRVhUXSxbIiRsaWJleHQiXSxbVGhlIGFyY2hpdmUgZXh0ZW5zaW9uXSkKKworbmFtZT0KK2V2YWwgImx0X2xpYnByZWZpeD1cIiRsaWJuYW1lX3NwZWNcIiIKK200X3BhdHRlcm5fYWxsb3coW0xUX0xJQlBSRUZJWF0pZG5sCitBQ19ERUZJTkVfVU5RVU9URUQoW0xUX0xJQlBSRUZJWF0sWyIkbHRfbGlicHJlZml4Il0sW1RoZSBhcmNoaXZlIHByZWZpeF0pCisKK25hbWU9bHRkbAorZXZhbCAiTFRETE9QRU49XCIkbGlibmFtZV9zcGVjXCIiCitBQ19TVUJTVChbTFRETE9QRU5dKQorXSkjIF9MVERMX1NFVFVQCisKKworIyBfTFRfRU5BQkxFX0lOU1RBTEwKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9FTkFCTEVfSU5TVEFMTF0sCitbQUNfQVJHX0VOQUJMRShbbHRkbC1pbnN0YWxsXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWx0ZGwtaW5zdGFsbF0sIFtpbnN0YWxsIGxpYmx0ZGxdKV0pCisKK2Nhc2UgLCR7ZW5hYmxlX2x0ZGxfaW5zdGFsbH0sJHtlbmFibGVfbHRkbF9jb252ZW5pZW5jZX0gaW4KKyAgKnllcyopIDs7CisgICopIGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlPXllcyA7OworZXNhYworCittNF9pZmRlZihbQU1fQ09ORElUSU9OQUxdLAorW0FNX0NPTkRJVElPTkFMKElOU1RBTExfTFRETCwgdGVzdCB4IiR7ZW5hYmxlX2x0ZGxfaW5zdGFsbC1ub30iICE9IHhubykKKyBBTV9DT05ESVRJT05BTChDT05WRU5JRU5DRV9MVERMLCB0ZXN0IHgiJHtlbmFibGVfbHRkbF9jb252ZW5pZW5jZS1ub30iICE9IHhubyldKQorXSkjIF9MVF9FTkFCTEVfSU5TVEFMTAorCisKKyMgTFRfU1lTX0RMT1BFTl9ERVBMSUJTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19ETE9QRU5fREVQTElCU10sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgZGVwbGlicyBhcmUgbG9hZGVkIGJ5IGRsb3Blbl0sCisgIFtsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnNdLAorICBbIyBQT1JUTUUgZG9lcyB5b3VyIHN5c3RlbSBhdXRvbWF0aWNhbGx5IGxvYWQgZGVwbGlicyBmb3IgZGxvcGVuPworICAjIG9yIGl0cyBsb2dpY2FsIGVxdWl2YWxlbnQgKGUuZy4gc2hsX2xvYWQgZm9yIEhQLVVYIDwgMTEpCisgICMgRm9yIG5vdywgd2UganVzdCBjYXRjaCBPU2VzIHdlIGtub3cgc29tZXRoaW5nIGFib3V0IC0tIGluIHRoZQorICAjIGZ1dHVyZSwgd2UnbGwgdHJ5IHRlc3QgdGhpcyBwcm9ncmFtbWF0aWNhbGx5LgorICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9dW5rbm93bgorICBjYXNlICRob3N0X29zIGluCisgIGFpeDMqfGFpeDQuMS4qfGFpeDQuMi4qKQorICAgICMgVW5rbm93biB3aGV0aGVyIHRoaXMgaXMgdHJ1ZSBmb3IgdGhlc2UgdmVyc2lvbnMgb2YgQUlYLCBidXQKKyAgICAjIHdlIHdhbnQgdGhpcyBgY2FzZScgaGVyZSB0byBleHBsaWNpdGx5IGNhdGNoIHRob3NlIHZlcnNpb25zLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgICAgOzsKKyAgYWl4W1s0LTldXSopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGFtaWdhb3MqKQorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgcG93ZXJwYykKKyAgICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz1ubworICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgZGFyd2luKikKKyAgICAjIEFzc3VtaW5nIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgYSBsaWJkbCBmcm9tIHNvbWV3aGVyZSwgdGhpcyBpcyB0cnVlCisgICAgIyBJZiB5b3UgYXJlIGxvb2tpbmcgZm9yIG9uZSBodHRwOi8vd3d3Lm9wZW5kYXJ3aW4ub3JnL3Byb2plY3RzL2RsY29tcGF0CisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgZ251KiB8IGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICAjIEdOVSBhbmQgaXRzIHZhcmlhbnRzLCB1c2luZyBnbnUgbGQuc28gKEdsaWJjKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBocHV4MTAqfGhwdXgxMSopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGludGVyaXgqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBpcml4W1sxMjM0NV1dKnxpcml4Ni5bWzAxXV0qKQorICAgICMgQ2F0Y2ggYWxsIHZlcnNpb25zIG9mIElSSVggYmVmb3JlIDYuMiwgYW5kIGluZGljYXRlIHRoYXQgd2UgZG9uJ3QKKyAgICAjIGtub3cgaG93IGl0IHdvcmtlZCBmb3IgYW55IG9mIHRob3NlIHZlcnNpb25zLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgICAgOzsKKyAgaXJpeCopCisgICAgIyBUaGUgY2FzZSBhYm92ZSBjYXRjaGVzIGFueXRoaW5nIGJlZm9yZSA2LjIsIGFuZCBpdCdzIGtub3duIHRoYXQKKyAgICAjIGF0IDYuMiBhbmQgbGF0ZXIgZGxvcGVuIGRvZXMgbG9hZCBkZXBsaWJzLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIG9wZW5ic2QqKQorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz15ZXMKKyAgICA7OworICBvc2ZbWzEyMzRdXSopCisgICAgIyBkbG9wZW4gZGlkIGxvYWQgZGVwbGlicyAoYXQgbGVhc3QgYXQgNC54KSwgYnV0IHVudGlsIHRoZSA1Lnggc2VyaWVzLAorICAgICMgaXQgZGlkICpub3QqIHVzZSBhbiBSUEFUSCBpbiBhIHNoYXJlZCBsaWJyYXJ5IHRvIGZpbmQgb2JqZWN0cyB0aGUKKyAgICAjIGxpYnJhcnkgZGVwZW5kcyBvbiwgc28gd2UgZXhwbGljaXRseSBzYXkgYG5vJy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9bm8KKyAgICA7OworICBvc2Y1LjB8b3NmNS4wYXxvc2Y1LjEpCisgICAgIyBkbG9wZW4gKmRvZXMqIGxvYWQgZGVwbGlicyBhbmQgd2l0aCB0aGUgcmlnaHQgbG9hZGVyIHBhdGNoIGFwcGxpZWQKKyAgICAjIGl0IGV2ZW4gdXNlcyBSUEFUSCBpbiBhIHNoYXJlZCBsaWJyYXJ5IHRvIHNlYXJjaCBmb3Igc2hhcmVkIG9iamVjdHMKKyAgICAjIHRoYXQgdGhlIGxpYnJhcnkgZGVwZW5kcyBvbiwgYnV0IHRoZXJlJ3Mgbm8gZWFzeSB3YXkgdG8ga25vdyBpZiB0aGF0CisgICAgIyBwYXRjaCBpcyBpbnN0YWxsZWQuICBTaW5jZSB0aGlzIGlzIHRoZSBjYXNlLCBhbGwgd2UgY2FuIHJlYWxseQorICAgICMgc2F5IGlzIHVua25vd24gLS0gaXQgZGVwZW5kcyBvbiB0aGUgcGF0Y2ggYmVpbmcgaW5zdGFsbGVkLiAgSWYKKyAgICAjIGl0IGlzLCB0aGlzIGNoYW5nZXMgdG8gYHllcycuICBXaXRob3V0IGl0LCBpdCB3b3VsZCBiZSBgbm8nLgorICAgIGx0X2N2X3N5c19kbG9wZW5fZGVwbGlicz11bmtub3duCisgICAgOzsKKyAgb3NmKikKKyAgICAjIHRoZSB0d28gY2FzZXMgYWJvdmUgc2hvdWxkIGNhdGNoIGFsbCB2ZXJzaW9ucyBvZiBvc2YgPD0gNS4xLiAgUmVhZAorICAgICMgdGhlIGNvbW1lbnRzIGFib3ZlIGZvciB3aGF0IHdlIGtub3cgYWJvdXQgdGhlbS4KKyAgICAjIEF0ID4gNS4xLCBkZXBsaWJzIGFyZSBsb2FkZWQgKmFuZCogYW55IFJQQVRIIGluIGEgc2hhcmVkIGxpYnJhcnkKKyAgICAjIGlzIHVzZWQgdG8gZmluZCB0aGVtIHNvIHdlIGNhbiBmaW5hbGx5IHNheSBgeWVzJy4KKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgcW54KikKKyAgICBsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnM9eWVzCisgICAgOzsKKyAgc29sYXJpcyopCisgICAgbHRfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQorICAgIGxpYmx0ZGxfY3Zfc3lzX2Rsb3Blbl9kZXBsaWJzPXllcworICAgIDs7CisgIGVzYWMKKyAgXSkKK2lmIHRlc3QgIiRsdF9jdl9zeXNfZGxvcGVuX2RlcGxpYnMiICE9IHllczsgdGhlbgorIEFDX0RFRklORShbTFRETF9ETE9QRU5fREVQTElCU10sIFsxXSwKKyAgICBbRGVmaW5lIGlmIHRoZSBPUyBuZWVkcyBoZWxwIHRvIGxvYWQgZGVwZW5kZW50IGxpYnJhcmllcyBmb3IgZGxvcGVuKCkuXSkKK2ZpCitdKSMgTFRfU1lTX0RMT1BFTl9ERVBMSUJTCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlNdLCBbTFRfU1lTX0RMT1BFTl9ERVBMSUJTXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9TWVNfRExPUEVOX0RFUExJQlNdLCBbXSkKKworCisjIExUX1NZU19NT0RVTEVfRVhUCisjIC0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX01PRFVMRV9FWFRdLAorW200X3JlcXVpcmUoW19MVF9TWVNfRFlOQU1JQ19MSU5LRVJdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doaWNoIGV4dGVuc2lvbiBpcyB1c2VkIGZvciBydW50aW1lIGxvYWRhYmxlIG1vZHVsZXNdLAorICBbbGlibHRkbF9jdl9zaGxpYmV4dF0sCitbCittb2R1bGU9eWVzCitldmFsIGxpYmx0ZGxfY3Zfc2hsaWJleHQ9JHNocmV4dF9jbWRzCittb2R1bGU9bm8KK2V2YWwgbGlibHRkbF9jdl9zaHJleHQ9JHNocmV4dF9jbWRzCisgIF0pCitpZiB0ZXN0IC1uICIkbGlibHRkbF9jdl9zaGxpYmV4dCI7IHRoZW4KKyAgbTRfcGF0dGVybl9hbGxvdyhbTFRfTU9EVUxFX0VYVF0pZG5sCisgIEFDX0RFRklORV9VTlFVT1RFRChbTFRfTU9EVUxFX0VYVF0sIFsiJGxpYmx0ZGxfY3Zfc2hsaWJleHQiXSwKKyAgICBbRGVmaW5lIHRvIHRoZSBleHRlbnNpb24gdXNlZCBmb3IgcnVudGltZSBsb2FkYWJsZSBtb2R1bGVzLCBzYXksICIuc28iLl0pCitmaQoraWYgdGVzdCAiJGxpYmx0ZGxfY3Zfc2hyZXh0IiAhPSAiJGxpYmx0ZGxfY3Zfc2hsaWJleHQiOyB0aGVuCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX1NIQVJFRF9FWFRdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX1NIQVJFRF9FWFRdLCBbIiRsaWJsdGRsX2N2X3NocmV4dCJdLAorICAgIFtEZWZpbmUgdG8gdGhlIHNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCwgc2F5LCAiLmR5bGliIi5dKQorZmkKK10pIyBMVF9TWVNfTU9EVUxFX0VYVAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU0hMSUJFWFRdLCBbTFRfU1lTX01PRFVMRV9FWFRdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NITElCRVhUXSwgW10pCisKKworIyBMVF9TWVNfTU9EVUxFX1BBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfU1lTX01PRFVMRV9QQVRIXSwKK1ttNF9yZXF1aXJlKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFt3aGljaCB2YXJpYWJsZSBzcGVjaWZpZXMgcnVuLXRpbWUgbW9kdWxlIHNlYXJjaCBwYXRoXSwKKyAgW2x0X2N2X21vZHVsZV9wYXRoX3Zhcl0sIFtsdF9jdl9tb2R1bGVfcGF0aF92YXI9IiRzaGxpYnBhdGhfdmFyIl0pCitpZiB0ZXN0IC1uICIkbHRfY3ZfbW9kdWxlX3BhdGhfdmFyIjsgdGhlbgorICBtNF9wYXR0ZXJuX2FsbG93KFtMVF9NT0RVTEVfUEFUSF9WQVJdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX01PRFVMRV9QQVRIX1ZBUl0sIFsiJGx0X2N2X21vZHVsZV9wYXRoX3ZhciJdLAorICAgIFtEZWZpbmUgdG8gdGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRoYXQgZGV0ZXJtaW5lcyB0aGUgcnVuLXRpbWUgbW9kdWxlIHNlYXJjaCBwYXRoLl0pCitmaQorXSkjIExUX1NZU19NT0RVTEVfUEFUSAorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xURExfU0hMSUJQQVRIXSwgW0xUX1NZU19NT0RVTEVfUEFUSF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfU0hMSUJQQVRIXSwgW10pCisKKworIyBMVF9TWVNfRExTRUFSQ0hfUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19ETFNFQVJDSF9QQVRIXSwKK1ttNF9yZXF1aXJlKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgdGhlIGRlZmF1bHQgbGlicmFyeSBzZWFyY2ggcGF0aF0sCisgIFtsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aF0sCisgIFtsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aD0iJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIl0pCitpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX2Rsc2VhcmNoX3BhdGgiOyB0aGVuCisgIHN5c19kbHNlYXJjaF9wYXRoPQorICBmb3IgZGlyIGluICRsdF9jdl9zeXNfZGxzZWFyY2hfcGF0aDsgZG8KKyAgICBpZiB0ZXN0IC16ICIkc3lzX2Rsc2VhcmNoX3BhdGgiOyB0aGVuCisgICAgICBzeXNfZGxzZWFyY2hfcGF0aD0iJGRpciIKKyAgICBlbHNlCisgICAgICBzeXNfZGxzZWFyY2hfcGF0aD0iJHN5c19kbHNlYXJjaF9wYXRoJFBBVEhfU0VQQVJBVE9SJGRpciIKKyAgICBmaQorICBkb25lCisgIG00X3BhdHRlcm5fYWxsb3coW0xUX0RMU0VBUkNIX1BBVEhdKWRubAorICBBQ19ERUZJTkVfVU5RVU9URUQoW0xUX0RMU0VBUkNIX1BBVEhdLCBbIiRzeXNfZGxzZWFyY2hfcGF0aCJdLAorICAgIFtEZWZpbmUgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IGxpYnJhcnkgc2VhcmNoIHBhdGguXSkKK2ZpCitdKSMgTFRfU1lTX0RMU0VBUkNIX1BBVEgKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NZU1NFQVJDSFBBVEhdLCBbTFRfU1lTX0RMU0VBUkNIX1BBVEhdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NZU1NFQVJDSFBBVEhdLCBbXSkKKworCisjIF9MVF9DSEVDS19ETFBSRU9QRU4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DSEVDS19ETFBSRU9QRU5dLAorW200X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgbGlidG9vbCBzdXBwb3J0cyAtZGxvcGVuLy1kbHByZW9wZW5dLAorICBbbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9sc10sCisgIFtpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KKyAgICBsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzPXllcworICBlbHNlCisgICAgbGlibHRkbF9jdl9wcmVsb2FkZWRfc3ltYm9scz1ubworICBmaQorICBdKQoraWYgdGVzdCB4IiRsaWJsdGRsX2N2X3ByZWxvYWRlZF9zeW1ib2xzIiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKFtIQVZFX1BSRUxPQURFRF9TWU1CT0xTXSwgWzFdLAorICAgIFtEZWZpbmUgaWYgbGlidG9vbCBjYW4gZXh0cmFjdCBzeW1ib2wgbGlzdHMgZnJvbSBvYmplY3QgZmlsZXMuXSkKK2ZpCitdKSMgX0xUX0NIRUNLX0RMUFJFT1BFTgorCisKKyMgTFRfTElCX0RMTE9BRAorIyAtLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfTElCX0RMTE9BRF0sCitbbTRfcGF0dGVybl9hbGxvdyhbXkxUX0RMTE9BREVSUyRdKQorTFRfRExMT0FERVJTPQorQUNfU1VCU1QoW0xUX0RMTE9BREVSU10pCisKK0FDX0xBTkdfUFVTSChbQ10pCisKK0xJQkFERF9ETE9QRU49CitBQ19TRUFSQ0hfTElCUyhbZGxvcGVuXSwgW2RsXSwKKwlbQUNfREVGSU5FKFtIQVZFX0xJQkRMXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBsaWJkbCBsaWJyYXJ5IG9yIGVxdWl2YWxlbnQuXSkKKwlpZiB0ZXN0ICIkYWNfY3Zfc2VhcmNoX2Rsb3BlbiIgIT0gIm5vbmUgcmVxdWlyZWQiIDsgdGhlbgorCSAgTElCQUREX0RMT1BFTj0iLWxkbCIKKwlmaQorCWxpYmx0ZGxfY3ZfbGliX2RsX2Rsb3Blbj0ieWVzIgorCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsb3Blbi5sYSJdLAorICAgIFtBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2lmIEhBVkVfRExGQ05fSAorIyAgaW5jbHVkZSA8ZGxmY24uaD4KKyNlbmRpZgorICAgIF1dLCBbW2Rsb3BlbigwLCAwKTtdXSldLAorCSAgICBbQUNfREVGSU5FKFtIQVZFX0xJQkRMXSwgWzFdLAorCQkgICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliZGwgbGlicmFyeSBvciBlcXVpdmFsZW50Ll0pCisJICAgIGxpYmx0ZGxfY3ZfZnVuY19kbG9wZW49InllcyIKKwkgICAgTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZGxvcGVuLmxhIl0sCisJW0FDX0NIRUNLX0xJQihbc3ZsZF0sIFtkbG9wZW5dLAorCQlbQUNfREVGSU5FKFtIQVZFX0xJQkRMXSwgWzFdLAorCQkJIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGxpYmRsIGxpYnJhcnkgb3IgZXF1aXZhbGVudC5dKQorCSAgICAgICAgTElCQUREX0RMT1BFTj0iLWxzdmxkIiBsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuPSJ5ZXMiCisJCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsb3Blbi5sYSJdKV0pXSkKK2lmIHRlc3QgeCIkbGlibHRkbF9jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzIHx8IHRlc3QgeCIkbGlibHRkbF9jdl9saWJfZGxfZGxvcGVuIiA9IHh5ZXMKK3RoZW4KKyAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKyAgTElCUz0iJExJQlMgJExJQkFERF9ETE9QRU4iCisgIEFDX0NIRUNLX0ZVTkNTKFtkbGVycm9yXSkKKyAgTElCUz0iJGx0X3NhdmVfTElCUyIKK2ZpCitBQ19TVUJTVChbTElCQUREX0RMT1BFTl0pCisKK0xJQkFERF9TSExfTE9BRD0KK0FDX0NIRUNLX0ZVTkMoW3NobF9sb2FkXSwKKwlbQUNfREVGSU5FKFtIQVZFX1NITF9MT0FEXSwgWzFdLAorCQkgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBzaGxfbG9hZCBmdW5jdGlvbi5dKQorCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfXNobF9sb2FkLmxhIl0sCisgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKKwkgICAgW0FDX0RFRklORShbSEFWRV9TSExfTE9BRF0sIFsxXSwKKwkJICAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIHNobF9sb2FkIGZ1bmN0aW9uLl0pCisJICAgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfXNobF9sb2FkLmxhIgorCSAgICBMSUJBRERfU0hMX0xPQUQ9Ii1sZGxkIl0pXSkKK0FDX1NVQlNUKFtMSUJBRERfU0hMX0xPQURdKQorCitjYXNlICRob3N0X29zIGluCitkYXJ3aW5bWzE1NjddXS4qKQorIyBXZSBvbmx5IHdhbnQgdGhpcyBmb3IgcHJlLU1hYyBPUyBYIDEwLjQuCisgIEFDX0NIRUNLX0ZVTkMoW19keWxkX2Z1bmNfbG9va3VwXSwKKwlbQUNfREVGSU5FKFtIQVZFX0RZTERdLCBbMV0sCisJCSAgIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIF9keWxkX2Z1bmNfbG9va3VwIGZ1bmN0aW9uLl0pCisJTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99ZHlsZC5sYSJdKQorICA7OworYmVvcyopCisgIExUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWxvYWRfYWRkX29uLmxhIgorICA7OworY3lnd2luKiB8IG1pbmd3KiB8IG9zMiogfCBwdzMyKikKKyAgQUNfQ0hFQ0tfREVDTFMoW2N5Z3dpbl9jb252X3BhdGhdLCBbXSwgW10sIFtbI2luY2x1ZGUgPHN5cy9jeWd3aW4uaD5dXSkKKyAgTFRfRExMT0FERVJTPSIkTFRfRExMT0FERVJTICR7bHRfZGxvcGVuX2RpciskbHRfZGxvcGVuX2Rpci99bG9hZGxpYnJhcnkubGEiCisgIDs7Citlc2FjCisKK0FDX0NIRUNLX0xJQihbZGxkXSwgW2RsZF9saW5rXSwKKwlbQUNfREVGSU5FKFtIQVZFX0RMRF0sIFsxXSwKKwkJICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgR05VIGRsZCBsaWJyYXJ5Ll0pCisJCUxUX0RMTE9BREVSUz0iJExUX0RMTE9BREVSUyAke2x0X2Rsb3Blbl9kaXIrJGx0X2Rsb3Blbl9kaXIvfWRsZF9saW5rLmxhIl0pCitBQ19TVUJTVChbTElCQUREX0RMRF9MSU5LXSkKKworbTRfcGF0dGVybl9hbGxvdyhbXkxUX0RMUFJFT1BFTiRdKQorTFRfRExQUkVPUEVOPQoraWYgdGVzdCAtbiAiJExUX0RMTE9BREVSUyIKK3RoZW4KKyAgZm9yIGx0X2xvYWRlciBpbiAkTFRfRExMT0FERVJTOyBkbworICAgIExUX0RMUFJFT1BFTj0iJExUX0RMUFJFT1BFTi1kbHByZW9wZW4gJGx0X2xvYWRlciAiCisgIGRvbmUKKyAgQUNfREVGSU5FKFtIQVZFX0xJQkRMTE9BREVSXSwgWzFdLAorICAgICAgICAgICAgW0RlZmluZSBpZiBsaWJkbGxvYWRlciB3aWxsIGJlIGJ1aWx0IG9uIHRoaXMgcGxhdGZvcm1dKQorZmkKK0FDX1NVQlNUKFtMVF9ETFBSRU9QRU5dKQorCitkbmwgVGhpcyBpc24ndCB1c2VkIGFueW1vcmUsIGJ1dCBzZXQgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5CitMSUJBRERfREw9IiRMSUJBRERfRExPUEVOICRMSUJBRERfU0hMX0xPQUQiCitBQ19TVUJTVChbTElCQUREX0RMXSkKKworQUNfTEFOR19QT1AKK10pIyBMVF9MSUJfRExMT0FECisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTFRETF9ETExJQl0sIFtMVF9MSUJfRExMT0FEXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTFRETF9ETExJQl0sIFtdKQorCisKKyMgTFRfU1lTX1NZTUJPTF9VU0NPUkUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgZG9lcyB0aGUgY29tcGlsZXIgcHJlZml4IGdsb2JhbCBzeW1ib2xzIHdpdGggYW4gdW5kZXJzY29yZT8KK0FDX0RFRlVOKFtMVF9TWVNfU1lNQk9MX1VTQ09SRV0sCitbbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCitBQ19DQUNIRV9DSEVDSyhbZm9yIF8gcHJlZml4IGluIGNvbXBpbGVkIHN5bWJvbHNdLAorICBbbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlXSwKKyAgW2x0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZT1ubworICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgordm9pZCBubV90ZXN0X2Z1bmMoKXt9CitpbnQgbWFpbigpe25tX3Rlc3RfZnVuYztyZXR1cm4gMDt9CitfTFRfRU9GCisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCisgICAgYWNfbmxpc3Q9Y29uZnRlc3Qubm0KKyAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRhY19ubGlzdCkgJiYgdGVzdCAtcyAiJGFjX25saXN0IjsgdGhlbgorICAgICAgIyBTZWUgd2hldGhlciB0aGUgc3ltYm9scyBoYXZlIGEgbGVhZGluZyB1bmRlcnNjb3JlLgorICAgICAgaWYgZ3JlcCAnXi4gX25tX3Rlc3RfZnVuYycgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9eWVzCisgICAgICBlbHNlCisgICAgICAgIGlmIGdyZXAgJ14uIG5tX3Rlc3RfZnVuYyAnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIDoKKyAgICAgICAgZWxzZQorCSAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJGFjX25saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgIGZpCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGVjaG8gImNvbmZpZ3VyZTogY2Fubm90IHJ1biAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgIGZpCisgIGVsc2UKKyAgICBlY2hvICJjb25maWd1cmU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBjYXQgY29uZnRlc3QuYyA+JkFTX01FU1NBR0VfTE9HX0ZECisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCoKKyAgXSkKKyAgc3lzX3N5bWJvbF91bmRlcnNjb3JlPSRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUKKyAgQUNfU1VCU1QoW3N5c19zeW1ib2xfdW5kZXJzY29yZV0pCitdKSMgTFRfU1lTX1NZTUJPTF9VU0NPUkUKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX1NZTUJPTF9VU0NPUkVdLCBbTFRfU1lTX1NZTUJPTF9VU0NPUkVdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MVERMX1NZTUJPTF9VU0NPUkVdLCBbXSkKKworCisjIExUX0ZVTkNfRExTWU1fVVNDT1JFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfRlVOQ19ETFNZTV9VU0NPUkVdLAorW0FDX1JFUVVJUkUoW0xUX1NZU19TWU1CT0xfVVNDT1JFXSlkbmwKK2lmIHRlc3QgeCIkbHRfY3Zfc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCB4IiRsaWJsdGRsX2N2X2Z1bmNfZGxvcGVuIiA9IHh5ZXMgfHwKKyAgICAgdGVzdCB4IiRsaWJsdGRsX2N2X2xpYl9kbF9kbG9wZW4iID0geHllcyA7IHRoZW4KKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB3ZSBoYXZlIHRvIGFkZCBhbiB1bmRlcnNjb3JlIGZvciBkbHN5bV0sCisJICBbbGlibHRkbF9jdl9uZWVkX3VzY29yZV0sCisJICBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT11bmtub3duCisgICAgICAgICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgICAgICBMSUJTPSIkTElCUyAkTElCQUREX0RMT1BFTiIKKwkgIF9MVF9UUllfRExPUEVOX1NFTEYoCisJICAgIFtsaWJsdGRsX2N2X25lZWRfdXNjb3JlPW5vXSwgW2xpYmx0ZGxfY3ZfbmVlZF91c2NvcmU9eWVzXSwKKwkgICAgW10sCQkJCSBbbGlibHRkbF9jdl9uZWVkX3VzY29yZT1jcm9zc10pCisJICBMSUJTPSIkc2F2ZV9MSUJTIgorCV0pCisgIGZpCitmaQorCitpZiB0ZXN0IHgiJGxpYmx0ZGxfY3ZfbmVlZF91c2NvcmUiID0geHllczsgdGhlbgorICBBQ19ERUZJTkUoW05FRURfVVNDT1JFXSwgWzFdLAorICAgIFtEZWZpbmUgaWYgZGxzeW0oKSByZXF1aXJlcyBhIGxlYWRpbmcgdW5kZXJzY29yZSBpbiBzeW1ib2wgbmFtZXMuXSkKK2ZpCitdKSMgTFRfRlVOQ19ETFNZTV9VU0NPUkUKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtBQ19MVERMX0RMU1lNX1VTQ09SRV0sIFtMVF9GVU5DX0RMU1lNX1VTQ09SRV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xURExfRExTWU1fVVNDT1JFXSwgW10pCisKKyMgQ29weXJpZ2h0IChDKSAyMDAyLCAyMDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9BVVRPTUFLRV9WRVJTSU9OKFZFUlNJT04pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQXV0b21ha2UgWC5ZIHRyYWNlcyB0aGlzIG1hY3JvIHRvIGVuc3VyZSBhY2xvY2FsLm00IGhhcyBiZWVuCkBAIC0zNCw3ICs4NTYsNyBAQAogW2FtX19hcGlfdmVyc2lvbj0nMS4xMScKIGRubCBTb21lIHVzZXJzIGZpbmQgQU1fQVVUT01BS0VfVkVSU0lPTiBhbmQgbWlzdGFrZSBpdCBmb3IgYSB3YXkgdG8KIGRubCByZXF1aXJlIHNvbWUgbWluaW11bSB2ZXJzaW9uLiAgUG9pbnQgdGhlbSB0byB0aGUgcmlnaHQgbWFjcm8uCi1tNF9pZihbJDFdLCBbMS4xMS4xXSwgW10sCittNF9pZihbJDFdLCBbMS4xMS4zXSwgW10sCiAgICAgICBbQUNfRkFUQUwoW0RvIG5vdCBjYWxsICQwLCB1c2UgQU1fSU5JVF9BVVRPTUFLRShbJDFdKS5dKV0pZG5sCiBdKQogCkBAIC01MCw3ICs4NzIsNyBAQAogIyBDYWxsIEFNX0FVVE9NQUtFX1ZFUlNJT04gYW5kIEFNX0FVVE9NQUtFX1ZFUlNJT04gc28gdGhleSBjYW4gYmUgdHJhY2VkLgogIyBUaGlzIGZ1bmN0aW9uIGlzIEFDX1JFUVVJUkVkIGJ5IEFNX0lOSVRfQVVUT01BS0UuCiBBQ19ERUZVTihbQU1fU0VUX0NVUlJFTlRfQVVUT01BS0VfVkVSU0lPTl0sCi1bQU1fQVVUT01BS0VfVkVSU0lPTihbMS4xMS4xXSlkbmwKK1tBTV9BVVRPTUFLRV9WRVJTSU9OKFsxLjExLjNdKWRubAogbTRfaWZuZGVmKFtBQ19BVVRPQ09ORl9WRVJTSU9OXSwKICAgW200X2NvcHkoW200X1BBQ0tBR0VfVkVSU0lPTl0sIFtBQ19BVVRPQ09ORl9WRVJTSU9OXSldKWRubAogX0FNX0FVVE9DT05GX1ZFUlNJT04obTRfZGVmbihbQUNfQVVUT0NPTkZfVkVSU0lPTl0pKV0pCkBAIC03OSwxMiArOTAxLDE0IEBACiAKICMgQU1fQVVYX0RJUl9FWFBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEZvciBwcm9qZWN0cyB1c2luZyBBQ19DT05GSUdfQVVYX0RJUihbZm9vXSksIEF1dG9jb25mIHNldHMKICMgJGFjX2F1eF9kaXIgdG8gYCRzcmNkaXIvZm9vJy4gIEluIG90aGVyIHByb2plY3RzLCBpdCBpcyBzZXQgdG8KICMgYCRzcmNkaXInLCBgJHNyY2Rpci8uLicsIG9yIGAkc3JjZGlyLy4uLy4uJy4KQEAgLTE2NiwxNCArOTkwLDE0IEBACiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS5dXSkKIGZpXSldKQogCi0jIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOQotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LAorIyAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDEwCisjIHNlcmlhbCAxMgogCiAjIFRoZXJlIGFyZSBhIGZldyBkaXJ0eSBoYWNrcyBiZWxvdyB0byBhdm9pZCBsZXR0aW5nIGBBQ19QUk9HX0NDJyBiZQogIyB3cml0dGVuIGluIGNsZWFyLCBpbiB3aGljaCBjYXNlIGF1dG9tYWtlLCB3aGVuIHJlYWRpbmcgYWNsb2NhbC5tNCwKQEAgLTIxMyw2ICsxMDM3LDcgQEAKICAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKICAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAogICAjIGluIEQnLgorICBybSAtcmYgY29uZnRlc3QuZGlyCiAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgogICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQogICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgpAQCAtMjc3LDcgKzExMDIsNyBAQAogCWJyZWFrCiAgICAgICBmaQogICAgICAgOzsKLSAgICBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQorICAgIG1zdmM3IHwgbXN2Yzdtc3lzIHwgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKICAgICAgICMgVGhpcyBjb21waWxlciB3b24ndCBncm9rIGAtYyAtbycsIGJ1dCBhbHNvLCB0aGUgbWludXNvIHRlc3QgaGFzCiAgICAgICAjIG5vdCBydW4geWV0LiAgVGhlc2UgZGVwbW9kZXMgYXJlIGxhdGUgZW5vdWdoIGluIHRoZSBnYW1lLCBhbmQKICAgICAgICMgc28gd2VhayB0aGF0IHRoZWlyIGZ1bmN0aW9uaW5nIHNob3VsZCBub3QgYmUgaW1wYWN0ZWQuCkBAIC0zNDIsMTAgKzExNjcsMTMgQEAKIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgogICBBTURFUEJBQ0tTTEFTSD0nXCcKKyAgYW1fX25vZGVwPSdfbm8nCiBmaQogQU1fQ09ORElUSU9OQUwoW0FNREVQXSwgW3Rlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhub10pCiBBQ19TVUJTVChbQU1ERVBCQUNLU0xBU0hdKWRubAogX0FNX1NVQlNUX05PVE1BS0UoW0FNREVQQkFDS1NMQVNIXSlkbmwKK0FDX1NVQlNUKFthbV9fbm9kZXBdKWRubAorX0FNX1NVQlNUX05PVE1BS0UoW2FtX19ub2RlcF0pZG5sCiBdKQogCiAjIEdlbmVyYXRlIGNvZGUgdG8gc2V0IHVwIGRlcGVuZGVuY3kgdHJhY2tpbmcuICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCkBAIC01NjcsMTIgKzEzOTUsMTUgQEAKIGRvbmUKIGVjaG8gInRpbWVzdGFtcCBmb3IgJF9hbV9hcmciID5gQVNfRElSTkFNRShbIiRfYW1fYXJnIl0pYC9zdGFtcC1oW10kX2FtX3N0YW1wX2NvdW50XSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUsIDIwMDgsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAorIyBzZXJpYWwgMQorCiAjIEFNX1BST0dfSU5TVEFMTF9TSAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KICMgRGVmaW5lICRpbnN0YWxsX3NoLgpAQCAtNjEyLDggKzE0NDMsOCBAQAogIyBBZGQgLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlIG9wdGlvbiB0byBjb25maWd1cmUuICAgICAgICAgLSotIEF1dG9jb25mIC0qLQogIyBGcm9tIEppbSBNZXllcmluZwogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5OCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOAotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA4LAorIyAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LApAQCAtNjMzLDcgKzE0NjQsNyBAQAogICAgICAgIFtkaXNhYmxlXSwgW200X2RlZmluZShbYW1fbWFpbnRhaW5lcl9vdGhlcl0sIFtlbmFibGVdKV0sCiAgICAgICAgW200X2RlZmluZShbYW1fbWFpbnRhaW5lcl9vdGhlcl0sIFtlbmFibGVdKQogICAgICAgICBtNF93YXJuKFtzeW50YXhdLCBbdW5leHBlY3RlZCBhcmd1bWVudCB0byBBTUAmdEBfTUFJTlRBSU5FUl9NT0RFOiAkMV0pXSkKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBhbV9tYWludGFpbmVyX290aGVyIG1haW50YWluZXItc3BlY2lmaWMgcG9ydGlvbnMgb2YgTWFrZWZpbGVzXSkKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXNdKQogICBkbmwgbWFpbnRhaW5lci1tb2RlJ3MgZGVmYXVsdCBpcyAnZGlzYWJsZScgdW5sZXNzICdlbmFibGUnIGlzIHBhc3NlZAogICBBQ19BUkdfRU5BQkxFKFttYWludGFpbmVyLW1vZGVdLAogWyAgLS1dW2FtX21haW50YWluZXJfb3RoZXJdWy1tYWludGFpbmVyLW1vZGUgIGFtX21haW50YWluZXJfb3RoZXIgbWFrZSBydWxlcyBhbmQgZGVwZW5kZW5jaWVzIG5vdCB1c2VmdWwKQEAgLTc3OSwxMiArMTYxMCwxNSBAQAogZmkKIF0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9QUk9HX01LRElSX1AKICMgLS0tLS0tLS0tLS0tLS0tCiAjIENoZWNrIGZvciBgbWtkaXIgLXAnLgpAQCAtODA3LDEzICsxNjQxLDE0IEBACiAKICMgSGVscGVyIGZ1bmN0aW9ucyBmb3Igb3B0aW9uIGhhbmRsaW5nLiAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDgsIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgNAorIyBzZXJpYWwgNQogCiAjIF9BTV9NQU5HTEVfT1BUSU9OKE5BTUUpCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC04MjEsMTMgKzE2NTYsMTMgQEAKIFtbX0FNX09QVElPTl9dbTRfYnBhdHN1YnN0KCQxLCBbW15hLXpBLVowLTlfXV0sIFtfXSldKQogCiAjIF9BTV9TRVRfT1BUSU9OKE5BTUUpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBTZXQgb3B0aW9uIE5BTUUuICBQcmVzZW50bHkgdGhhdCBvbmx5IG1lYW5zIGRlZmluaW5nIGEgZmxhZyBmb3IgdGhpcyBvcHRpb24uCiBBQ19ERUZVTihbX0FNX1NFVF9PUFRJT05dLAogW200X2RlZmluZShfQU1fTUFOR0xFX09QVElPTihbJDFdKSwgMSldKQogCiAjIF9BTV9TRVRfT1BUSU9OUyhPUFRJT05TKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBPUFRJT05TIGlzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgQXV0b21ha2Ugb3B0aW9ucy4KIEFDX0RFRlVOKFtfQU1fU0VUX09QVElPTlNdLAogW200X2ZvcmVhY2hfdyhbX0FNX09wdGlvbl0sIFskMV0sIFtfQU1fU0VUX09QVElPTihfQU1fT3B0aW9uKV0pXSkKQEAgLTkwMywxMiArMTczOCwxNCBAQAogZmkKIEFDX01TR19SRVNVTFQoeWVzKV0pCiAKLSMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAzLCAyMDA1LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKKyMgc2VyaWFsIDEKKwogIyBBTV9QUk9HX0lOU1RBTExfU1RSSVAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE9uZSBpc3N1ZSB3aXRoIHZlbmRvciBgaW5zdGFsbCcgKGV2ZW4gR05VKSBpcyB0aGF0IHlvdSBjYW4ndApAQCAtOTMxLDEzICsxNzY4LDEzIEBACiBJTlNUQUxMX1NUUklQX1BST0dSQU09IlwkKGluc3RhbGxfc2gpIC1jIC1zIgogQUNfU1VCU1QoW0lOU1RBTExfU1RSSVBfUFJPR1JBTV0pXSkKIAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KIAotIyBzZXJpYWwgMgorIyBzZXJpYWwgMwogCiAjIF9BTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTk0NiwxMyArMTc4MywxMyBAQAogQUNfREVGVU4oW19BTV9TVUJTVF9OT1RNQUtFXSkKIAogIyBBTV9TVUJTVF9OT1RNQUtFKFZBUklBQkxFKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgUHVibGljIHNpc3RlciBvZiBfQU1fU1VCU1RfTk9UTUFLRS4KIEFDX0RFRlVOKFtBTV9TVUJTVF9OT1RNQUtFXSwgW19BTV9TVUJTVF9OT1RNQUtFKCRAKV0pCiAKICMgQ2hlY2sgaG93IHRvIGNyZWF0ZSBhIHRhcmJhbGwuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KIAotIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCkBAIC05NzQsMTAgKzE4MTEsMTEgQEAKICMgYSB0YXJiYWxsIHJlYWQgZnJvbSBzdGRpbi4KICMgICAgICQoYW1fX3VudGFyKSA8IHJlc3VsdC50YXIKIEFDX0RFRlVOKFtfQU1fUFJPR19UQVJdLAotWyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KLUFNX01JU1NJTkdfUFJPRyhbQU1UQVJdLCBbdGFyXSkKK1sjIEFsd2F5cyBkZWZpbmUgQU1UQVIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuICBZZXMsIGl0J3Mgc3RpbGwgdXNlZAorIyBpbiB0aGUgd2lsZCA6LSggIFdlIHNob3VsZCBmaW5kIGEgcHJvcGVyIHdheSB0byBkZXByZWNhdGUgaXQgLi4uCitBQ19TVUJTVChbQU1UQVJdLCBbJyQke1RBUi10YXJ9J10pCiBtNF9pZihbJDFdLCBbdjddLAotICAgICBbYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtICIkJHRhcmRpciInOyBhbV9fdW50YXI9JyR7QU1UQVJ9IHhmIC0nXSwKKyAgICAgW2FtX190YXI9JyQke1RBUi10YXJ9IGNob2YgLSAiJCR0YXJkaXIiJyBhbV9fdW50YXI9JyQke1RBUi10YXJ9IHhmIC0nXSwKICAgICAgW200X2Nhc2UoWyQxXSwgW3VzdGFyXSwsIFtwYXhdLCwKICAgICAgICAgICAgICAgW200X2ZhdGFsKFtVbmtub3duIHRhciBmb3JtYXRdKV0pCiBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjcmVhdGUgYSAkMSB0YXIgYXJjaGl2ZV0pCkBAIC0xMDQ2LDYgKzE4ODQsMTYgQEAKIEFDX1NVQlNUKFthbV9fdW50YXJdKQogXSkgIyBfQU1fUFJPR19UQVIKIAorbTRfaW5jbHVkZShbbTQvYXNtY2ZpLm00XSkKK200X2luY2x1ZGUoW200L2F4X2FwcGVuZF9mbGFnLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NjX21heG9wdC5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jZmxhZ3Nfd2Fybl9hbGwubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00XSkKK200X2luY2x1ZGUoW200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNF0pCittNF9pbmNsdWRlKFttNC9heF9jb25maWd1cmVfYXJncy5tNF0pCittNF9pbmNsdWRlKFttNC9heF9lbmFibGVfYnVpbGRkaXIubTRdKQorbTRfaW5jbHVkZShbbTQvYXhfZ2NjX2FyY2hmbGFnLm00XSkKK200X2luY2x1ZGUoW200L2F4X2djY194ODZfY3B1aWQubTRdKQogbTRfaW5jbHVkZShbbTQvbGlidG9vbC5tNF0pCiBtNF9pbmNsdWRlKFttNC9sdG9wdGlvbnMubTRdKQogbTRfaW5jbHVkZShbbTQvbHRzdWdhci5tNF0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbXBpbGUKaW5kZXggMWIxZDIzMi4uYzAwOTZhNyAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb21waWxlCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29tcGlsZQpAQCAtMSw5ICsxLDEwIEBACiAjISAvYmluL3NoCiAjIFdyYXBwZXIgZm9yIGNvbXBpbGVycyB3aGljaCBkbyBub3QgdW5kZXJzdGFuZCBgLWMgLW8nLgogCi1zY3JpcHR2ZXJzaW9uPTIwMDUtMDUtMTQuMjIKK3NjcmlwdHZlcnNpb249MjAwOS0xMC0wNi4yMDsgIyBVVEMKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAsIDIwMDMsIDIwMDQsIDIwMDUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSwgMjAwOSAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFdyaXR0ZW4gYnkgVG9tIFRyb21leSA8dHJvbWV5QGN5Z251cy5jb20+LgogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTcsOCArMTgsNyBAQAogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKICMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQogIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKQEAgLTEwMywxMyArMTAzLDEzIEBACiBmaQogCiAjIE5hbWUgb2YgZmlsZSB3ZSBleHBlY3QgY29tcGlsZXIgdG8gY3JlYXRlLgotY29maWxlPWBlY2hvICIkY2ZpbGUiIHwgc2VkIC1lICdzfF4uKi98fCcgLWUgJ3MvXC5jJC8uby8nYAorY29maWxlPWBlY2hvICIkY2ZpbGUiIHwgc2VkICdzfF4uKltcXC9dfHw7IHN8XlthLXpBLVpdOnx8OyBzL1wuYyQvLm8vJ2AKIAogIyBDcmVhdGUgdGhlIGxvY2sgZGlyZWN0b3J5LgotIyBOb3RlOiB1c2UgYFsvLi1dJyBoZXJlIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgc2FtZSBuYW1lCisjIE5vdGU6IHVzZSBgWy9cXDouLV0nIGhlcmUgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgdXNlIHRoZSBzYW1lIG5hbWUKICMgdGhhdCB3ZSBhcmUgdXNpbmcgZm9yIHRoZSAubyBmaWxlLiAgQWxzbywgYmFzZSB0aGUgbmFtZSBvbiB0aGUgZXhwZWN0ZWQKICMgb2JqZWN0IGZpbGUgbmFtZSwgc2luY2UgdGhhdCBpcyB3aGF0IG1hdHRlcnMgd2l0aCBhIHBhcmFsbGVsIGJ1aWxkLgotbG9ja2Rpcj1gZWNobyAiJGNvZmlsZSIgfCBzZWQgLWUgJ3N8Wy8uLV18X3xnJ2AuZAorbG9ja2Rpcj1gZWNobyAiJGNvZmlsZSIgfCBzZWQgLWUgJ3N8Wy9cXDouLV18X3xnJ2AuZAogd2hpbGUgdHJ1ZTsgZG8KICAgaWYgbWtkaXIgIiRsb2NrZGlyIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBicmVhawpAQCAtMTI0LDkgKzEyNCw5IEBACiByZXQ9JD8KIAogaWYgdGVzdCAtZiAiJGNvZmlsZSI7IHRoZW4KLSAgbXYgIiRjb2ZpbGUiICIkb2ZpbGUiCisgIHRlc3QgIiRjb2ZpbGUiID0gIiRvZmlsZSIgfHwgbXYgIiRjb2ZpbGUiICIkb2ZpbGUiCiBlbGlmIHRlc3QgLWYgIiR7Y29maWxlfWJqIjsgdGhlbgotICBtdiAiJHtjb2ZpbGV9YmoiICIkb2ZpbGUiCisgIHRlc3QgIiR7Y29maWxlfWJqIiA9ICIkb2ZpbGUiIHx8IG12ICIke2NvZmlsZX1iaiIgIiRvZmlsZSIKIGZpCiAKIHJtZGlyICIkbG9ja2RpciIKQEAgLTEzOCw1ICsxMzgsNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuZ3Vlc3MgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcwppbmRleCBkNTNlMzA5Li5iMDI1NjVjIDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5ndWVzcwpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBBdHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgogIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMDktMTEtMTknCit0aW1lc3RhbXA9JzIwMTEtMDYtMDMnCiAKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTU2LDggKzU2LDkgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTE4MCw3ICsxODEsNyBAQAogCQlmaQogCQk7OwogCSAgICAqKQotCSAgICAgICAgb3M9bmV0YnNkCisJCW9zPW5ldGJzZAogCQk7OwogCWVzYWMKIAkjIFRoZSBPUyByZWxlYXNlCkBAIC0yMjMsNyArMjI0LDcgQEAKIAkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKIAkJOzsKIAkqNS4qKQotCSAgICAgICAgVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKKwkJVU5BTUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDR9J2AKIAkJOzsKIAllc2FjCiAJIyBBY2NvcmRpbmcgdG8gQ29tcGFxLCAvdXNyL3NiaW4vcHNyaW5mbyBoYXMgYmVlbiBhdmFpbGFibGUgb24KQEAgLTI2OSw3ICsyNzAsMTAgQEAKIAkjIEEgWG4ubiB2ZXJzaW9uIGlzIGFuIHVucmVsZWFzZWQgZXhwZXJpbWVudGFsIGJhc2VsZXZlbC4KIAkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KIAllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLW9zZmBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXltQVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKLQlleGl0IDs7CisJIyBSZXNldCBFWElUIHRyYXAgYmVmb3JlIGV4aXRpbmcgdG8gYXZvaWQgc3B1cmlvdXMgbm9uLXplcm8gZXhpdCBjb2RlLgorCWV4aXRjb2RlPSQ/CisJdHJhcCAnJyAwCisJZXhpdCAkZXhpdGNvZGUgOzsKICAgICBBbHBoYVwgKjpXaW5kb3dzX05UKjoqKQogCSMgSG93IGRvIHdlIGtub3cgaXQncyBJbnRlcml4IHJhdGhlciB0aGFuIHRoZSBnZW5lcmljIFBPU0lYIHN1YnN5c3RlbT8KIAkjIFNob3VsZCB3ZSBjaGFuZ2UgVU5BTUVfTUFDSElORSBiYXNlZCBvbiB0aGUgb3V0cHV0IG9mIHVuYW1lIGluc3RlYWQKQEAgLTI5NSw3ICsyOTksNyBAQAogCWVjaG8gczM5MC1pYm0tenZtb2UKIAlleGl0IDs7CiAgICAgKjpPUzQwMDoqOiopCi0gICAgICAgIGVjaG8gcG93ZXJwYy1pYm0tb3M0MDAKKwllY2hvIHBvd2VycGMtaWJtLW9zNDAwCiAJZXhpdCA7OwogICAgIGFybTpSSVNDKjoxLlswMTJdKjoqfGFybTpyaXNjaXg6MS5bMDEyXSo6KikKIAllY2hvIGFybS1hY29ybi1yaXNjaXgke1VOQU1FX1JFTEVBU0V9CkBAIC0zMzMsNiArMzM3LDkgQEAKICAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQogCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCVNVTl9BUkNIPSJpMzg2IgpAQCAtMzkxLDIzICszOTgsMjMgQEAKICAgICAjIE1pTlQuICBCdXQgTWlOVCBpcyBkb3dud2FyZCBjb21wYXRpYmxlIHRvIFRPUywgc28gdGhpcyBzaG91bGQKICAgICAjIGJlIG5vIHByb2JsZW0uCiAgICAgYXRhcmlzdFtlXToqTWlOVDoqOiogfCBhdGFyaXN0W2VdOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBhdGFyaSo6Kk1pTlQ6KjoqIHwgYXRhcmkqOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCiAJZWNobyBtNjhrLWF0YXJpLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgKmZhbGNvbio6Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBtaWxhbio6Kk1pTlQ6KjoqIHwgbWlsYW4qOiptaW50Oio6KiB8ICptaWxhbio6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQotICAgICAgICBleGl0IDs7CisJZWNobyBtNjhrLW1pbGFuLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIGhhZGVzKjoqTWlOVDoqOiogfCBoYWRlcyo6Km1pbnQ6KjoqIHwgKmhhZGVzKjoqVE9TOio6KikKLSAgICAgICAgZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwllY2hvIG02OGstaGFkZXMtbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgKjoqTWlOVDoqOiogfCAqOiptaW50Oio6KiB8ICo6KlRPUzoqOiopCi0gICAgICAgIGVjaG8gbTY4ay11bmtub3duLW1pbnQke1VOQU1FX1JFTEVBU0V9Ci0gICAgICAgIGV4aXQgOzsKKwllY2hvIG02OGstdW5rbm93bi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICBtNjhrOm1hY2h0ZW46KjoqKQogCWVjaG8gbTY4ay1hcHBsZS1tYWNodGVuJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTQ3Nyw4ICs0ODQsOCBAQAogCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MwogCWV4aXQgOzsKICAgICBBVmlpT046ZGd1eDoqOiopCi0gICAgICAgICMgREcvVVggcmV0dXJucyBBVmlpT04gZm9yIGFsbCBhcmNoaXRlY3R1cmVzCi0gICAgICAgIFVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4vdW5hbWUgLXBgCisJIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKwlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAogCWlmIFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMDAgXSB8fCBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTEwIF0KIAl0aGVuCiAJICAgIGlmIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0gbTg4a2RndXhlbGZ4IF0gfHwgXApAQCAtNDkxLDcgKzQ5OCw3IEBACiAJZWxzZQogCSAgICBlY2hvIGk1ODYtZGctZGd1eCR7VU5BTUVfUkVMRUFTRX0KIAlmaQotIAlleGl0IDs7CisJZXhpdCA7OwogICAgIE04OCo6RG9scGhpbk9TOio6KikJIyBEb2xwaGluT1MgKFNWUjMpCiAJZWNobyBtODhrLWRvbHBoaW4tc3lzdjMKIAlleGl0IDs7CkBAIC01NDgsNyArNTU1LDcgQEAKIAkJZWNobyByczYwMDAtaWJtLWFpeDMuMgogCWZpCiAJZXhpdCA7OwotICAgICo6QUlYOio6WzQ1Nl0pCisgICAgKjpBSVg6KjpbNDU2N10pCiAJSUJNX0NQVV9JRD1gL3Vzci9zYmluL2xzZGV2IC1DIC1jIHByb2Nlc3NvciAtUyBhdmFpbGFibGUgfCBzZWQgMXEgfCBhd2sgJ3sgcHJpbnQgJDEgfSdgCiAJaWYgL3Vzci9zYmluL2xzYXR0ciAtRWwgJHtJQk1fQ1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAJCUlCTV9BUkNIPXJzNjAwMApAQCAtNTkxLDUyICs1OTgsNTIgQEAKIAkgICAgOTAwMC9bNjc4XVswLTldWzAtOV0pCiAJCWlmIFsgLXggL3Vzci9iaW4vZ2V0Y29uZiBdOyB0aGVuCiAJCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9iaW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKLSAgICAgICAgICAgICAgICAgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgIiR7c2NfY3B1X3ZlcnNpb259IiBpbgotICAgICAgICAgICAgICAgICAgICAgIDUyMykgSFBfQVJDSD0iaHBwYTEuMCIgOzsgIyBDUFVfUEFfUklTQzFfMAotICAgICAgICAgICAgICAgICAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQotICAgICAgICAgICAgICAgICAgICAgIDUzMikgICAgICAgICAgICAgICAgICAgICAgIyBDUFVfUEFfUklTQzJfMAotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiJHtzY19rZXJuZWxfYml0c30iIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDMyKSBIUF9BUkNIPSJocHBhMi4wbiIgOzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgNjQpIEhQX0FSQ0g9ImhwcGEyLjB3IiA7OworCQkgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisJCSAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KKwkJICAgICAgNTIzKSBIUF9BUkNIPSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCisJCSAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorCQkgICAgICA1MzIpICAgICAgICAgICAgICAgICAgICAgICMgQ1BVX1BBX1JJU0MyXzAKKwkJCWNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgorCQkJICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7CisJCQkgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIgOzsKIAkJCSAgJycpIEhQX0FSQ0g9ImhwcGEyLjAiIDs7ICAgIyBIUC1VWCAxMC4yMAotICAgICAgICAgICAgICAgICAgICAgICAgZXNhYyA7OwotICAgICAgICAgICAgICAgICAgICBlc2FjCisJCQllc2FjIDs7CisJCSAgICBlc2FjCiAJCWZpCiAJCWlmIFsgIiR7SFBfQVJDSH0iID0gIiIgXTsgdGhlbgogCQkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCQkgICAgc2VkICdzL14gICAgICAgICAgICAgIC8vJyA8PCBFT0YgPiRkdW1teS5jCisJCSAgICBzZWQgJ3MvXgkJLy8nIDw8IEVPRiA+JGR1bW15LmMKIAotICAgICAgICAgICAgICAjZGVmaW5lIF9IUFVYX1NPVVJDRQotICAgICAgICAgICAgICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KKwkJI2RlZmluZSBfSFBVWF9TT1VSQ0UKKwkJI2luY2x1ZGUgPHN0ZGxpYi5oPgorCQkjaW5jbHVkZSA8dW5pc3RkLmg+CiAKLSAgICAgICAgICAgICAgaW50IG1haW4gKCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCi0gICAgICAgICAgICAgICAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7Ci0gICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKwkJaW50IG1haW4gKCkKKwkJeworCQkjaWYgZGVmaW5lZChfU0NfS0VSTkVMX0JJVFMpCisJCSAgICBsb25nIGJpdHMgPSBzeXNjb25mKF9TQ19LRVJORUxfQklUUyk7CisJCSNlbmRpZgorCQkgICAgbG9uZyBjcHUgID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKIAotICAgICAgICAgICAgICAgICAgc3dpdGNoIChjcHUpCi0gICAgICAgICAgICAgIAl7Ci0gICAgICAgICAgICAgIAljYXNlIENQVV9QQV9SSVNDMV8wOiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgCWNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xIik7IGJyZWFrOwotICAgICAgICAgICAgICAJY2FzZSBDUFVfUEFfUklTQzJfMDoKLSAgICAgICAgICAgICAgI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQotICAgICAgICAgICAgICAJICAgIHN3aXRjaCAoYml0cykKLSAgICAgICAgICAgICAgCQl7Ci0gICAgICAgICAgICAgIAkJY2FzZSA2NDogcHV0cyAoImhwcGEyLjB3Iik7IGJyZWFrOwotICAgICAgICAgICAgICAJCWNhc2UgMzI6IHB1dHMgKCJocHBhMi4wbiIpOyBicmVhazsKLSAgICAgICAgICAgICAgCQlkZWZhdWx0OiBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKLSAgICAgICAgICAgICAgCQl9IGJyZWFrOwotICAgICAgICAgICAgICAjZWxzZSAgLyogIWRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKSAqLwotICAgICAgICAgICAgICAJICAgIHB1dHMgKCJocHBhMi4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAgICAgCWRlZmF1bHQ6IHB1dHMgKCJocHBhMS4wIik7IGJyZWFrOwotICAgICAgICAgICAgICAJfQotICAgICAgICAgICAgICAgICAgZXhpdCAoMCk7Ci0gICAgICAgICAgICAgIH0KKwkJICAgIHN3aXRjaCAoY3B1KQorCQkJeworCQkJY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMSIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MyXzA6CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJCSAgICBzd2l0Y2ggKGJpdHMpCisJCQkJeworCQkJCWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBicmVhazsKKwkJCQljYXNlIDMyOiBwdXRzICgiaHBwYTIuMG4iKTsgYnJlYWs7CisJCQkJZGVmYXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCQkJfSBicmVhazsKKwkJI2Vsc2UgIC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8KKwkJCSAgICBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJI2VuZGlmCisJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCX0KKwkJICAgIGV4aXQgKDApOworCQl9CiBFT0YKIAkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsKSAmJiBIUF9BUkNIPWAkZHVtbXlgCiAJCSAgICB0ZXN0IC16ICIkSFBfQVJDSCIgJiYgSFBfQVJDSD1ocHBhCkBAIC03MjcsMjIgKzczNCwyMiBAQAogCWV4aXQgOzsKICAgICBDMSo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMxKjoqKQogCWVjaG8gYzEtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEMyKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCiAJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCiAJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCiAJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKIAlmaQotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIEMzNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkMzNCo6KikKIAllY2hvIGMzNC1jb252ZXgtYnNkCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQzM4KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM4KjoqKQogCWVjaG8gYzM4LWNvbnZleC1ic2QKLSAgICAgICAgZXhpdCA7OworCWV4aXQgOzsKICAgICBDNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQogCWVjaG8gYzQtY29udmV4LWJzZAotICAgICAgICBleGl0IDs7CisJZXhpdCA7OwogICAgIENSQVkqWS1NUDoqOio6KikKIAllY2hvIHltcC1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJwogCWV4aXQgOzsKQEAgLTc2NiwxNCArNzczLDE0IEBACiAJZXhpdCA7OwogICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQogCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCi0gICAgICAgIEZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKLSAgICAgICAgRlVKSVRTVV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy8gL18vJ2AKLSAgICAgICAgZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKLSAgICAgICAgZXhpdCA7OworCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gIiR7RlVKSVRTVV9QUk9DfS1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJZXhpdCA7OwogICAgIDUwMDA6VU5JWF9TeXN0ZW1fVjo0Lio6KikKLSAgICAgICAgRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAotICAgICAgICBGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAotICAgICAgICBlY2hvICJzcGFyYy1mdWppdHN1LSR7RlVKSVRTVV9TWVN9JHtGVUpJVFNVX1JFTH0iCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAic3BhcmMtZnVqaXRzdS0ke0ZVSklUU1VfU1lTfSR7RlVKSVRTVV9SRUx9IgogCWV4aXQgOzsKICAgICBpKjg2OkJTRC8zODY6KjoqIHwgaSo4NjpCU0QvT1M6KjoqIHwgKjpBc2NlbmRcIEVtYmVkZGVkL09TOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtYnNkaSR7VU5BTUVfUkVMRUFTRX0KQEAgLTgwMSwxNCArODA4LDE0IEBACiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKIAlleGl0IDs7CiAgICAgaSo6d2luZG93czMyKjoqKQotICAgIAkjIHVuYW1lIC1tIGluY2x1ZGVzICItcGMiIG9uIHRoaXMgc3lzdGVtLgotICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tbWluZ3czMgorCSMgdW5hbWUgLW0gaW5jbHVkZXMgIi1wYyIgb24gdGhpcyBzeXN0ZW0uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LW1pbmd3MzIKIAlleGl0IDs7CiAgICAgaSo6UFcqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKIAlleGl0IDs7CiAgICAgKjpJbnRlcml4KjoqKQotICAgIAljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KKwljYXNlICR7VU5BTUVfTUFDSElORX0gaW4KIAkgICAgeDg2KQogCQllY2hvIGk1ODYtcGMtaW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KIAkJZXhpdCA7OwpAQCAtODYzLDcgKzg3MCw3IEBACiAJICBFVjYpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OwogCSAgRVY2NykgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CiAJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKLSAgICAgICAgZXNhYworCWVzYWMKIAlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKIAlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KQEAgLTg3NSw3ICs4ODIsMTMgQEAKIAl0aGVuCiAJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWVsc2UKLQkgICAgZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaQorCSAgICBpZiBlY2hvIF9fQVJNX1BDU19WRlAgfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQl8IGdyZXAgLXEgX19BUk1fUENTX1ZGUAorCSAgICB0aGVuCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudWVhYmkKKwkgICAgZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpaGYKKwkgICAgZmkKIAlmaQogCWV4aXQgOzsKICAgICBhdnIzMio6TGludXg6KjoqKQpAQCAtODg4LDcgKzkwMSw3IEBACiAJZWNobyBjcmlzdjMyLWF4aXMtbGludXgtZ251CiAJZXhpdCA7OwogICAgIGZydjpMaW51eDoqOiopCi0gICAgCWVjaG8gZnJ2LXVua25vd24tbGludXgtZ251CisJZWNobyBmcnYtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgaSo4NjpMaW51eDoqOiopCiAJTElCQz1nbnUKQEAgLTk1Niw3ICs5NjksNyBAQAogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tbGludXgKIAlleGl0IDs7CiAgICAgc2g2NCo6TGludXg6KjoqKQotICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgc2gqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKQEAgLTk2NCw2ICs5NzcsOSBAQAogICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKKyAgICB0aWxlKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OwogICAgIHZheDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWRlYy1saW51eC1nbnUKIAlleGl0IDs7CkBAIC05NzEsNyArOTg3LDcgQEAKIAllY2hvIHg4Nl82NC11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKICAgICB4dGVuc2EqOkxpbnV4Oio6KikKLSAgICAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwogICAgIGkqODY6RFlOSVgvcHR4OjQqOiopCiAJIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KQEAgLTk4MCwxMSArOTk2LDExIEBACiAJZWNobyBpMzg2LXNlcXVlbnQtc3lzdjQKIAlleGl0IDs7CiAgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKLSAgICAgICAgIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQgaXQgaGFzIGl0cyBvd24gdmVyc2lvbgotICAgICAgICAjIG51bWJlciBzZXJpZXMgc3RhcnRpbmcgd2l0aCAyLi4uCi0gICAgICAgICMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKKwkjIFVuaXh3YXJlIGlzIGFuIG9mZnNob290IG9mIFNWUjQsIGJ1dCBpdCBoYXMgaXRzIG93biB2ZXJzaW9uCisJIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgorCSMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKIAkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCi0gICAgICAgICMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgorCSMgVXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2NC4ydXcke1VOQU1FX1ZFUlNJT059CiAJZXhpdCA7OwogICAgIGkqODY6T1MvMjoqOiopCkBAIC0xMDE2LDcgKzEwMzIsNyBAQAogCWZpCiAJZXhpdCA7OwogICAgIGkqODY6Kjo1Ols2NzhdKikKLSAgICAJIyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCisJIyBVbml4V2FyZSA3LngsIE9wZW5VTklYIGFuZCBPcGVuU2VydmVyIDYuCiAJY2FzZSBgL2Jpbi91bmFtZSAtWCB8IGdyZXAgIl5NYWNoaW5lImAgaW4KIAkgICAgKjQ4NiopCSAgICAgVU5BTUVfTUFDSElORT1pNDg2IDs7CiAJICAgICpQZW50aXVtKQkgICAgIFVOQU1FX01BQ0hJTkU9aTU4NiA7OwpAQCAtMTA0NCwxMyArMTA2MCwxMyBAQAogCWV4aXQgOzsKICAgICBwYzoqOio6KikKIAkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKLSAgICAgICAgIyB1bmFtZSAtbSBwcmludHMgZm9yIERKR1BQIGFsd2F5cyAncGMnLCBidXQgaXQgcHJpbnRzIG5vdGhpbmcgYWJvdXQKLSAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAorCSMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCiAJIyBOb3RlOiB3aGF0ZXZlciB0aGlzIGlzLCBpdCBNVVNUIGJlIHRoZSBzYW1lIGFzIHdoYXQgY29uZmlnLnN1YgogCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0LCBvciBlbHNlIEdEQiBjb25maWd1cnkgd2lsbCBkZWNpZGUgdGhhdAogCSMgdGhpcyBpcyBhIGNyb3NzLWJ1aWxkLgogCWVjaG8gaTU4Ni1wYy1tc2Rvc2RqZ3BwCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgSW50ZWw6TWFjaDozKjoqKQogCWVjaG8gaTM4Ni1wYy1tYWNoMwogCWV4aXQgOzsKQEAgLTEwODUsOCArMTEwMSw4IEBACiAJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCiAJICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OwogICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQotICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKLSAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhpdDsgfSA7OwogICAgIE5DUio6Kjo0LjI6KiB8IE1QUkFTKjoqOjQuMjoqKQogCU9TX1JFTD0nLjMnCiAJdGVzdCAtciAvZXRjLy5yZWxpZCBcCkBAIC0xMTI5LDEwICsxMTQ1LDEwIEBACiAJCWVjaG8gbnMzMmstc25pLXN5c3YKIAlmaQogCWV4aXQgOzsKLSAgICBQRU5USVVNOio6NC4wKjoqKSAjIFVuaXN5cyBgQ2xlYXJQYXRoIEhNUCBJWCA0MDAwJyBTVlI0L01QIGVmZm9ydAotICAgICAgICAgICAgICAgICAgICAgICMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KLSAgICAgICAgZWNobyBpNTg2LXVuaXN5cy1zeXN2NAotICAgICAgICBleGl0IDs7CisgICAgUEVOVElVTToqOjQuMCo6KikJIyBVbmlzeXMgYENsZWFyUGF0aCBITVAgSVggNDAwMCcgU1ZSNC9NUCBlZmZvcnQKKwkJCSMgc2F5cyA8UmljaGFyZC5NLkJhcnRlbEBjY01haWwuQ2Vuc3VzLkdPVj4KKwllY2hvIGk1ODYtdW5pc3lzLXN5c3Y0CisJZXhpdCA7OwogICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQogCSMgRnJvbSBHZXJhbGQgSGV3ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KIAkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRpbmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KQEAgLTExNTgsMTEgKzExNzQsMTEgQEAKIAlleGl0IDs7CiAgICAgUlszNF0wMDA6KlN5c3RlbV9WKjoqOiogfCBSNDAwMDpVTklYX1NZU1Y6KjoqIHwgUiowMDA6VU5JWF9TVjoqOiopCiAJaWYgWyAtZCAvdXNyL25lYyBdOyB0aGVuCi0JICAgICAgICBlY2hvIG1pcHMtbmVjLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJCWVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KIAllbHNlCi0JICAgICAgICBlY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQorCQllY2hvIG1pcHMtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfQogCWZpCi0gICAgICAgIGV4aXQgOzsKKwlleGl0IDs7CiAgICAgQmVCb3g6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIGhhcmR3YXJlIG1hZGUgYnkgQmUsIFBQQyBvbmx5LgogCWVjaG8gcG93ZXJwYy1iZS1iZW9zCiAJZXhpdCA7OwpAQCAtMTIyNyw2ICsxMjQzLDkgQEAKICAgICAqOlFOWDoqOjQqKQogCWVjaG8gaTM4Ni1wYy1xbngKIAlleGl0IDs7CisgICAgTkVPLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbmVvLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OwogICAgIE5TRS0/Ok5PTlNUT1BfS0VSTkVMOio6KikKIAllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEyNzIsMTMgKzEyOTEsMTMgQEAKIAllY2hvIHBkcDEwLXVua25vd24taXRzCiAJZXhpdCA7OwogICAgIFNFSToqOio6U0VJVVgpCi0gICAgICAgIGVjaG8gbWlwcy1zZWktc2VpdXgke1VOQU1FX1JFTEVBU0V9CisJZWNobyBtaXBzLXNlaS1zZWl1eCR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgKjpEcmFnb25GbHk6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWRyYWdvbmZseWBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AKIAlleGl0IDs7CiAgICAgKjoqVk1TOio6KikKLSAgICAJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAogCWNhc2UgIiR7VU5BTUVfTUFDSElORX0iIGluCiAJICAgIEEqKSBlY2hvIGFscGhhLWRlYy12bXMgOyBleGl0IDs7CiAJICAgIEkqKSBlY2hvIGlhNjQtZGVjLXZtcyA7IGV4aXQgOzsKQEAgLTEzMTgsMTEgKzEzMzcsMTEgQEAKICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KICAgcHJpbnRmICgibTY4ay1zb255LW5ld3NvcyVzXG4iLAogI2lmZGVmIE5FV1NPUzQKLSAgICAgICAgICAiNCIKKwkiNCIKICNlbHNlCi0JICAiIgorCSIiCiAjZW5kaWYKLSAgICAgICAgICk7IGV4aXQgKDApOworCSk7IGV4aXQgKDApOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWcuc3ViCmluZGV4IDE3YzkxNDUuLjc4MTc2YTQgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlnLnN1YgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZy5zdWIKQEAgLTEsMTAgKzEsMTAgQEAKICMhIC9iaW4vc2gKICMgQ29uZmlndXJhdGlvbiB2YWxpZGF0aW9uIHN1YnJvdXRpbmUgc2NyaXB0LgogIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKLSMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5Ci0jICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMDktMTEtMDcnCit0aW1lc3RhbXA9JzIwMTEtMTAtMjknCiAKICMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgogIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCkBAIC03NSw4ICs3NSw5IEBACiB2ZXJzaW9uPSJcCiBHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKIAotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTIzLDggKzEyNCw5IEBACiAjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgogbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wyLydgCiBjYXNlICRtYXliZV9vcyBpbgotICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1kaWV0bGliYyB8IGxpbnV4LW5ld2xpYiogfCBsaW51eC11Y2xpYmMqIHwgXAotICB1Y2xpbnV4LXVjbGliYyogfCB1Y2xpbnV4LWdudSogfCBrZnJlZWJzZCotZ251KiB8IGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCisgIG50by1xbngqIHwgbGludXgtZ251KiB8IGxpbnV4LWFuZHJvaWQqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgXAorICBsaW51eC11Y2xpYmMqIHwgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBcCisgIGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogfCBcCiAgIGtvcGVuc29sYXJpcyotZ251KiB8IFwKICAgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqKQogICAgIG9zPS0kbWF5YmVfb3MKQEAgLTE1Niw4ICsxNTgsOCBAQAogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OwotICAgICAgICAtYmx1ZWdlbmUqKQotCSAgICAgICAgb3M9LWNuaworCS1ibHVlZ2VuZSopCisJCW9zPS1jbmsKIAkJOzsKIAktc2ltIHwgLWNpc2NvIHwgLW9raSB8IC13ZWMgfCAtd2luYm9uZCkKIAkJb3M9CkBAIC0xNzMsMTAgKzE3NSwxMCBAQAogCQlvcz0tY2hvcnVzb3MKIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OwotIAktY2hvcnVzcmRiKQotIAkJb3M9LWNob3J1c3JkYgorCS1jaG9ydXNyZGIpCisJCW9zPS1jaG9ydXNyZGIKIAkJYmFzaWNfbWFjaGluZT0kMQotIAkJOzsKKwkJOzsKIAktaGl1eCopCiAJCW9zPS1oaXV4d2UyCiAJCTs7CkBAIC0yNDksMTMgKzI1MSwxNyBAQAogCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCiAJfCBhbTMzXzIuMCBcCiAJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCisgICAgICAgIHwgYmUzMiB8IGJlNjQgXAogCXwgYmZpbiBcCiAJfCBjNHggfCBjbGlwcGVyIFwKIAl8IGQxMHYgfCBkMzB2IHwgZGx4IHwgZHNwMTZ4eCBcCisJfCBlcGlwaGFueSBcCiAJfCBmaWRvIHwgZnIzMCB8IGZydiBcCiAJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQgXAorCXwgaGV4YWdvbiBcCiAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKIAl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbGUzMiB8IGxlNjQgXAogCXwgbG0zMiBcCiAJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKIAl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCB8IG1ldGFnIFwKQEAgLTI4MSwyNyArMjg3LDM4IEBACiAJfCBtb3hpZSBcCiAJfCBtdCBcCiAJfCBtc3A0MzAgXAorCXwgbmRzMzIgfCBuZHMzMmxlIHwgbmRzMzJiZSBcCiAJfCBuaW9zIHwgbmlvczIgXAogCXwgbnMxNmsgfCBuczMyayBcCisJfCBvcGVuOCBcCiAJfCBvcjMyIFwKIAl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCi0JfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgfCBwcGNiZSBcCisJfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgXAogCXwgcHlyYW1pZCBcCi0JfCByeCBcCisJfCBybDc4IHwgcnggXAogCXwgc2NvcmUgXAogCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKIAl8IHNoNjQgfCBzaDY0bGUgXAogCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAogCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKLQl8IHNwdSB8IHN0cm9uZ2FybSBcCi0JfCB0YWhvZSB8IHRodW1iIHwgdGljNHggfCB0aWM4MCB8IHRyb24gXAorCXwgc3B1IFwKKwl8IHRhaG9lIHwgdGljNHggfCB0aWM1NHggfCB0aWM1NXggfCB0aWM2eCB8IHRpYzgwIHwgdHJvbiBcCiAJfCB1Ymljb20zMiBcCi0JfCB2ODUwIHwgdjg1MGUgXAorCXwgdjg1MCB8IHY4NTBlIHwgdjg1MGUxIHwgdjg1MGUyIHwgdjg1MGVzIHwgdjg1MGUydjMgXAogCXwgd2UzMmsgXAotCXwgeDg2IHwgeGMxNnggfCB4c2NhbGUgfCB4c2NhbGVlW2JsXSB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCisJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCiAJfCB6OGsgfCB6ODApCiAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgogCQk7OworCWM1NHgpCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KKwkJOzsKKwljNTV4KQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCisJCTs7CisJYzZ4KQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KKwkJOzsKIAltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBwaWNvY2hpcCkKIAkJIyBNb3Rvcm9sYSA2OEhDMTEvMTIuCiAJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgpAQCAtMzEzLDYgKzMzMCwxOCBAQAogCQliYXNpY19tYWNoaW5lPW10LXVua25vd24KIAkJOzsKIAorCXN0cm9uZ2FybSB8IHRodW1iIHwgeHNjYWxlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCTs7CisKKwl4c2NhbGVlYikKKwkJYmFzaWNfbWFjaGluZT1hcm1lYi11bmtub3duCisJCTs7CisKKwl4c2NhbGVlbCkKKwkJYmFzaWNfbWFjaGluZT1hcm1lbC11bmtub3duCisJCTs7CisKIAkjIFdlIHVzZSBgcGMnIHJhdGhlciB0aGFuIGB1bmtub3duJwogCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAogCSMgKDIpIHRoZSB3b3JkICJ1bmtub3duIiB0ZW5kcyB0byBjb25mdXNlIGJlZ2lubmluZyB1c2Vycy4KQEAgLTMzMiwxNiArMzYxLDE5IEBACiAJfCBhbHBoYXBjYTVbNjddLSogfCBhbHBoYTY0cGNhNVs2N10tKiB8IGFyYy0qIFwKIAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAogCXwgYXZyLSogfCBhdnIzMi0qIFwKKwl8IGJlMzItKiB8IGJlNjQtKiBcCiAJfCBiZmluLSogfCBiczIwMDAtKiBcCi0JfCBjWzEyM10qIHwgYzMwLSogfCBbY2p0XTkwLSogfCBjNHgtKiB8IGM1NHgtKiB8IGM1NXgtKiB8IGM2eC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIFwKIAl8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCiAJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCiAJfCBlbHhzaS0qIFwKIAl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKIAl8IGg4MzAwLSogfCBoODUwMC0qIFwKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCisJfCBoZXhhZ29uLSogXAogCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKIAl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxlMzItKiB8IGxlNjQtKiBcCiAJfCBsbTMyLSogXAogCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAogCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKQEAgLTM2NywyNSArMzk5LDI5IEBACiAJfCBtbWl4LSogXAogCXwgbXQtKiBcCiAJfCBtc3A0MzAtKiBcCisJfCBuZHMzMi0qIHwgbmRzMzJsZS0qIHwgbmRzMzJiZS0qIFwKIAl8IG5pb3MtKiB8IG5pb3MyLSogXAogCXwgbm9uZS0qIHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBcCisJfCBvcGVuOC0qIFwKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCi0JfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAorCXwgcG93ZXJwYy0qIHwgcG93ZXJwYzY0LSogfCBwb3dlcnBjNjRsZS0qIHwgcG93ZXJwY2xlLSogXAogCXwgcHlyYW1pZC0qIFwKLQl8IHJvbXAtKiB8IHJzNjAwMC0qIHwgcngtKiBcCisJfCBybDc4LSogfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAogCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAogCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCiAJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCiAJfCBzcGFyY2xpdGUtKiBcCi0JfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCi0JfCB0YWhvZS0qIHwgdGh1bWItKiBcCi0JfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiB8IHRpbGUtKiBcCisJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN2MS0qIHwgc3g/LSogXAorCXwgdGFob2UtKiBcCisJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlKi0qIFwKIAl8IHRyb24tKiBcCiAJfCB1Ymljb20zMi0qIFwKLQl8IHY4NTAtKiB8IHY4NTBlLSogfCB2YXgtKiBcCisJfCB2ODUwLSogfCB2ODUwZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBcCisJfCB2YXgtKiBcCiAJfCB3ZTMyay0qIFwKLQl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogfCB4c2NhbGUtKiB8IHhzY2FsZWVbYmxdLSogXAorCXwgeDg2LSogfCB4ODZfNjQtKiB8IHhjMTZ4LSogfCB4cHMxMDAtKiBcCiAJfCB4c3Rvcm15MTYtKiB8IHh0ZW5zYSotKiBcCiAJfCB5bXAtKiBcCiAJfCB6OGstKiB8IHo4MC0qKQpAQCAtNDEwLDcgKzQ0Niw3IEBACiAJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKIAkJb3M9LXVkaQogCQk7OwotICAgIAlhYmFjdXMpCisJYWJhY3VzKQogCQliYXNpY19tYWNoaW5lPWFiYWN1cy11bmtub3duCiAJCTs7CiAJYWRvYmU2OGspCkBAIC00ODAsMTEgKzUxNiwyMCBAQAogCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJtCiAJCW9zPS1jbmsKIAkJOzsKKwljNTR4LSopCisJCWJhc2ljX21hY2hpbmU9dGljNTR4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJYzU1eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU1eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM2eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzZ4LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CiAJYzkwKQogCQliYXNpY19tYWNoaW5lPWM5MC1jcmF5CiAJCW9zPS11bmljb3MKIAkJOzsKLSAgICAgICAgY2VnY2MpCisJY2VnY2MpCiAJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KIAkJb3M9LWNlZ2NjCiAJCTs7CkBAIC01MTYsNyArNTYxLDcgQEAKIAkJYmFzaWNfbWFjaGluZT1jcmF5bnYtY3JheQogCQlvcz0tdW5pY29zbXAKIAkJOzsKLQljcjE2KQorCWNyMTYgfCBjcjE2LSopCiAJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCiAJCW9zPS1lbGYKIAkJOzsKQEAgLTczMiw3ICs3NzcsNyBAQAogCQliYXNpY19tYWNoaW5lPW5zMzJrLXV0ZWsKIAkJb3M9LXN5c3YKIAkJOzsKLSAgICAgICAgbWljcm9ibGF6ZSkKKwltaWNyb2JsYXplKQogCQliYXNpY19tYWNoaW5lPW1pY3JvYmxhemUteGlsaW54CiAJCTs7CiAJbWluZ3czMikKQEAgLTc3NSw2ICs4MjAsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQogCQlvcz0tbXZzCiAJCTs7CisJbmFjbCkKKwkJYmFzaWNfbWFjaGluZT1sZTMyLXVua25vd24KKwkJb3M9LW5hY2wKKwkJOzsKIAluY3IzMDAwKQogCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCiAJCW9zPS1zeXN2NApAQCAtODM5LDYgKzg4OCwxMiBAQAogCW5wMSkKIAkJYmFzaWNfbWFjaGluZT1ucDEtZ291bGQKIAkJOzsKKwluZW8tdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5lby10YW5kZW0KKwkJOzsKKwluc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKIAluc3ItdGFuZGVtKQogCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KIAkJOzsKQEAgLTkyMSw5ICs5NzYsMTAgQEAKIAkJOzsKIAlwb3dlcikJYmFzaWNfbWFjaGluZT1wb3dlci1pYm0KIAkJOzsKLQlwcGMpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJcHBjIHwgcHBjYmUpCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCiAJCTs7Ci0JcHBjLSopCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCXBwYy0qIHwgcHBjYmUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCiAJCTs7CiAJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxlIHwgcG93ZXJwYy1saXR0bGUpCiAJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KQEAgLTEwMTcsNiArMTA3Myw5IEBACiAJCWJhc2ljX21hY2hpbmU9aTg2MC1zdHJhdHVzCiAJCW9zPS1zeXN2NAogCQk7OworCXN0cm9uZ2FybS0qIHwgdGh1bWItKikKKwkJYmFzaWNfbWFjaGluZT1hcm0tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKIAlzdW4yKQogCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KIAkJOzsKQEAgLTEwNzMsMjAgKzExMzIsOCBAQAogCQliYXNpY19tYWNoaW5lPXQ5MC1jcmF5CiAJCW9zPS11bmljb3MKIAkJOzsKLQl0aWM1NHggfCBjNTR4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzU1eCB8IGM1NXgqKQotCQliYXNpY19tYWNoaW5lPXRpYzU1eC11bmtub3duCi0JCW9zPS1jb2ZmCi0JCTs7Ci0JdGljNnggfCBjNngqKQotCQliYXNpY19tYWNoaW5lPXRpYzZ4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKIAl0aWxlKikKLQkJYmFzaWNfbWFjaGluZT10aWxlLXVua25vd24KKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCW9zPS1saW51eC1nbnUKIAkJOzsKIAl0eDM5KQpAQCAtMTE1Niw2ICsxMjAzLDkgQEAKIAl4cHMgfCB4cHMxMDApCiAJCWJhc2ljX21hY2hpbmU9eHBzMTAwLWhvbmV5d2VsbAogCQk7OworCXhzY2FsZS0qIHwgeHNjYWxlZVtibF0tKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eeHNjYWxlL2FybS8nYAorCQk7OwogCXltcCkKIAkJYmFzaWNfbWFjaGluZT15bXAtY3JheQogCQlvcz0tdW5pY29zCkBAIC0xMjUzLDkgKzEzMDMsMTIgQEAKIGlmIFsgeCIkb3MiICE9IHgiIiBdCiB0aGVuCiBjYXNlICRvcyBpbgotICAgICAgICAjIEZpcnN0IG1hdGNoIHNvbWUgc3lzdGVtIHR5cGUgYWxpYXNlcwotICAgICAgICAjIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkIHdpdGggdmFsaWQgc3lzdGVtIHR5cGVzLgorCSMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCisJIyB0aGF0IG1pZ2h0IGdldCBjb25mdXNlZCB3aXRoIHZhbGlkIHN5c3RlbSB0eXBlcy4KIAkjIC1zb2xhcmlzKiBpcyBhIGJhc2ljIHN5c3RlbSB0eXBlLCB3aXRoIHRoaXMgb25lIGV4Y2VwdGlvbi4KKwktYXVyb3JhdXgpCisJCW9zPS1hdXJvcmF1eAorCQk7OwogCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCiAJCTs7CkBAIC0xMjc3LDggKzEzMzAsOCBAQAogCSMgLXN5c3YqIGlzIG5vdCBoZXJlIGJlY2F1c2UgaXQgY29tZXMgbGF0ZXIsIGFmdGVyIHN5c3ZyNC4KIAktZ251KiB8IC1ic2QqIHwgLW1hY2gqIHwgLW1pbml4KiB8IC1nZW5peCogfCAtdWx0cml4KiB8IC1pcml4KiBcCiAJICAgICAgfCAtKnZtcyogfCAtc2NvKiB8IC1lc2l4KiB8IC1pc2MqIHwgLWFpeCogfCAtY25rKiB8IC1zdW5vcyB8IC1zdW5vc1szNF0qXAotCSAgICAgIHwgLWhwdXgqIHwgLXVub3MqIHwgLW9zZiogfCAtbHVuYSogfCAtZGd1eCogfCAtc29sYXJpcyogfCAtc3ltKiBcCi0JICAgICAgfCAta29wZW5zb2xhcmlzKiBcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCiAJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCiAJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKQEAgLTEyOTEsNyArMTM0NCw4IEBACiAJICAgICAgfCAtdWRpKiB8IC1lYWJpKiB8IC1saXRlcyogfCAtaWVlZSogfCAtZ28zMiogfCAtYXV4KiBcCiAJICAgICAgfCAtY2hvcnVzb3MqIHwgLWNob3J1c3JkYiogfCAtY2VnY2MqIFwKIAkgICAgICB8IC1jeWd3aW4qIHwgLXBlKiB8IC1wc29zKiB8IC1tb3NzKiB8IC1wcm9lbGYqIHwgLXJ0ZW1zKiBcCi0JICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1uZXdsaWIqIHwgLWxpbnV4LXVjbGliYyogXAorCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtYW5kcm9pZCogXAorCSAgICAgIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCiAJICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAogCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCiAJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCkBAIC0xMzM4LDcgKzEzOTIsNyBAQAogCS1vcGVuZWQqKQogCQlvcz0tb3BlbmVkaXRpb24KIAkJOzsKLSAgICAgICAgLW9zNDAwKikKKwktb3M0MDAqKQogCQlvcz0tb3M0MDAKIAkJOzsKIAktd2luY2UqKQpAQCAtMTM4Nyw3ICsxNDQxLDcgQEAKIAktc2luaXgqKQogCQlvcz0tc3lzdjQKIAkJOzsKLSAgICAgICAgLXRwZiopCisJLXRwZiopCiAJCW9zPS10cGYKIAkJOzsKIAktdHJpdG9uKikKQEAgLTE0MzIsNiArMTQ4Niw4IEBACiAJLWRpY29zKikKIAkJb3M9LWRpY29zCiAJCTs7CisJLW5hY2wqKQorCQk7OwogCS1ub25lKQogCQk7OwogCSopCkBAIC0xNDU0LDEwICsxNTEwLDEwIEBACiAjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgogCiBjYXNlICRiYXNpY19tYWNoaW5lIGluCi0gICAgICAgIHNjb3JlLSopCisJc2NvcmUtKikKIAkJb3M9LWVsZgogCQk7OwotICAgICAgICBzcHUtKikKKwlzcHUtKikKIAkJb3M9LWVsZgogCQk7OwogCSotYWNvcm4pCkBAIC0xNDY5LDggKzE1MjUsMTcgQEAKIAlhcm0qLXNlbWkpCiAJCW9zPS1hb3V0CiAJCTs7Ci0gICAgICAgIGM0eC0qIHwgdGljNHgtKikKLSAgICAgICAgCW9zPS1jb2ZmCisJYzR4LSogfCB0aWM0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCiAJCTs7CiAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgogCXBkcDEwLSopCkBAIC0xNDk3LDcgKzE1NjIsNyBAQAogCW02OCotY2lzY28pCiAJCW9zPS1hb3V0CiAJCTs7Ci0gICAgICAgIG1lcC0qKQorCW1lcC0qKQogCQlvcz0tZWxmCiAJCTs7CiAJbWlwcyotY2lzY28pCkBAIC0xNTI0LDcgKzE1ODksNyBAQAogCSotaWJtKQogCQlvcz0tYWl4CiAJCTs7Ci0gICAgCSota251dGgpCisJKi1rbnV0aCkKIAkJb3M9LW1taXh3YXJlCiAJCTs7CiAJKi13ZWMpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZSBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlCmluZGV4IGM1YzcwYjEuLmM4NmE1OTcgMTAwNzU1Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlCkBAIC0xLDEzICsxLDEzIEBACiAjISAvYmluL3NoCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NSBmb3IgbGliZmZpIDMuMC4xMHJjMC4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4IGZvciBsaWJmZmkgMy4wLjExLgogIwotIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4uCisjIFJlcG9ydCBidWdzIHRvIDxodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXM+LgogIwogIwogIyBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsCi0jIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjCiAjIFRoaXMgY29uZmlndXJlIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCkBAIC05MSw2ICs5MSw3IEBACiBJRlM9IiAiIgkkYXNfbmwiCiAKICMgRmluZCB3aG8gd2UgYXJlLiAgTG9vayBpbiB0aGUgcGF0aCBpZiB3ZSBjb250YWluIG5vIGRpcmVjdG9yeSBzZXBhcmF0b3IuCithc19teXNlbGY9CiBjYXNlICQwIGluICMoKAogICAqW1xcL10qICkgYXNfbXlzZWxmPSQwIDs7CiAgICopIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTE3Myw2ICsxNzQsMTQgQEAKICAgYXNfbGluZW5vXzI9Ijthc19zdWdnZXN0ZWQ9JGFzX3N1Z2dlc3RlZCRMSU5FTk87YXNfc3VnZ2VzdGVkPSRhc19zdWdnZXN0ZWQiIGFzX2xpbmVub18yYT1cJExJTkVOTwogICBldmFsICd0ZXN0IFwieFwkYXNfbGluZW5vXzEnXCRhc19ydW4nXCIgIT0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIiAmJgogICB0ZXN0IFwieFxgZXhwciBcJGFzX2xpbmVub18xJ1wkYXNfcnVuJyArIDFcYFwiID0gXCJ4XCRhc19saW5lbm9fMidcJGFzX3J1bidcIicgfHwgZXhpdCAxCisKKyAgdGVzdCAtbiBcIlwke1pTSF9WRVJTSU9OK3NldH1cJHtCQVNIX1ZFUlNJT04rc2V0fVwiIHx8ICgKKyAgICBFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKKyAgICBFQ0hPPVwkRUNIT1wkRUNIT1wkRUNIT1wkRUNIT1wkRUNITworICAgIEVDSE89XCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPXCRFQ0hPCisgICAgUEFUSD0vZW1wdHkgRlBBVEg9L2VtcHR5OyBleHBvcnQgUEFUSCBGUEFUSAorICAgIHRlc3QgXCJYXGBwcmludGYgJXMgXCRFQ0hPXGBcIiA9IFwiWFwkRUNIT1wiIFxcCisgICAgICB8fCB0ZXN0IFwiWFxgcHJpbnQgLXIgLS0gXCRFQ0hPXGBcIiA9IFwiWFwkRUNIT1wiICkgfHwgZXhpdCAxCiB0ZXN0IFwkKCggMSArIDEgKSkgPSAyIHx8IGV4aXQgMSIKICAgaWYgKGV2YWwgIiRhc19yZXF1aXJlZCIpIDI+L2Rldi9udWxsOyB0aGVuIDoKICAgYXNfaGF2ZV9yZXF1aXJlZD15ZXMKQEAgLTIxNiwxMSArMjI1LDE4IEBACiAgICMgV2UgY2Fubm90IHlldCBhc3N1bWUgYSBkZWNlbnQgc2hlbGwsIHNvIHdlIGhhdmUgdG8gcHJvdmlkZSBhCiAJIyBuZXV0cmFsaXphdGlvbiB2YWx1ZSBmb3Igc2hlbGxzIHdpdGhvdXQgdW5zZXQ7IGFuZCB0aGlzIGFsc28KIAkjIHdvcmtzIGFyb3VuZCBzaGVsbHMgdGhhdCBjYW5ub3QgdW5zZXQgbm9uZXhpc3RlbnQgdmFyaWFibGVzLgorCSMgUHJlc2VydmUgLXYgYW5kIC14IHRvIHRoZSByZXBsYWNlbWVudCBzaGVsbC4KIAlCQVNIX0VOVj0vZGV2L251bGwKIAlFTlY9L2Rldi9udWxsCiAJKHVuc2V0IEJBU0hfRU5WKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQkFTSF9FTlYgRU5WCiAJZXhwb3J0IENPTkZJR19TSEVMTAotCWV4ZWMgIiRDT05GSUdfU0hFTEwiICIkYXNfbXlzZWxmIiAkezErIiRAIn0KKwljYXNlICQtIGluICMgKCgoKAorCSAgKnYqeCogfCAqeCp2KiApIGFzX29wdHM9LXZ4IDs7CisJICAqdiogKSBhc19vcHRzPS12IDs7CisJICAqeCogKSBhc19vcHRzPS14IDs7CisJICAqICkgYXNfb3B0cz0gOzsKKwllc2FjCisJZXhlYyAiJENPTkZJR19TSEVMTCIgJGFzX29wdHMgIiRhc19teXNlbGYiICR7MSsiJEAifQogZmkKIAogICAgIGlmIHRlc3QgeCRhc19oYXZlX3JlcXVpcmVkID0geG5vOyB0aGVuIDoKQEAgLTIzMSw4ICsyNDcsOCBAQAogICAgICRhc19lY2hvICIkMDogYmUgdXBncmFkZWQgdG8genNoIDQuMy40IG9yIGxhdGVyLiIKICAgZWxzZQogICAgICRhc19lY2hvICIkMDogUGxlYXNlIHRlbGwgYnVnLWF1dG9jb25mQGdudS5vcmcgYW5kCi0kMDogaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbCBhYm91dCB5b3VyIHN5c3RlbSwKLSQwOiBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcworJDA6IGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3VlcyBhYm91dCB5b3VyCiskMDogc3lzdGVtLCBpbmNsdWRpbmcgYW55IGVycm9yIHBvc3NpYmx5IG91dHB1dCBiZWZvcmUgdGhpcwogJDA6IG1lc3NhZ2UuIFRoZW4gaW5zdGFsbCBhIG1vZGVybiBzaGVsbCwgb3IgbWFudWFsbHkgcnVuCiAkMDogdGhlIHNjcmlwdCB1bmRlciBzdWNoIGEgc2hlbGwgaWYgeW91IGRvIGhhdmUgb25lLiIKICAgZmkKQEAgLTMxOSw3ICszMzUsNyBAQAogICAgICAgdGVzdCAtZCAiJGFzX2RpciIgJiYgYnJlYWsKICAgICBkb25lCiAgICAgdGVzdCAteiAiJGFzX2RpcnMiIHx8IGV2YWwgIm1rZGlyICRhc19kaXJzIgotICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgorICB9IHx8IHRlc3QgLWQgIiRhc19kaXIiIHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGRpcmVjdG9yeSAkYXNfZGlyIgogCiAKIH0gIyBhc19mbl9ta2Rpcl9wCkBAIC0zNTksMTkgKzM3NSwxOSBAQAogZmkgIyBhc19mbl9hcml0aAogCiAKLSMgYXNfZm5fZXJyb3IgRVJST1IgW0xJTkVOTyBMT0dfRkRdCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBhc19mbl9lcnJvciBTVEFUVVMgRVJST1IgW0xJTkVOTyBMT0dfRkRdCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgT3V0cHV0ICJgYmFzZW5hbWUgJDBgOiBlcnJvcjogRVJST1IiIHRvIHN0ZGVyci4gSWYgTElORU5PIGFuZCBMT0dfRkQgYXJlCiAjIHByb3ZpZGVkLCBhbHNvIG91dHB1dCB0aGUgZXJyb3IgdG8gTE9HX0ZELCByZWZlcmVuY2luZyBMSU5FTk8uIFRoZW4gZXhpdCB0aGUKLSMgc2NyaXB0IHdpdGggc3RhdHVzICQ/LCB1c2luZyAxIGlmIHRoYXQgd2FzIDAuCisjIHNjcmlwdCB3aXRoIFNUQVRVUywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgogYXNfZm5fZXJyb3IgKCkKIHsKLSAgYXNfc3RhdHVzPSQ/OyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKLSAgaWYgdGVzdCAiJDMiOyB0aGVuCi0gICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMiJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMSIgPiYkMworICBhc19zdGF0dXM9JDE7IHRlc3QgJGFzX3N0YXR1cyAtZXEgMCAmJiBhc19zdGF0dXM9MQorICBpZiB0ZXN0ICIkNCI7IHRoZW4KKyAgICBhc19saW5lbm89JHthc19saW5lbm8tIiQzIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6ICQyIiA+JiQ0CiAgIGZpCi0gICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMSIgPiYyCisgICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiAkMiIgPiYyCiAgIGFzX2ZuX2V4aXQgJGFzX3N0YXR1cwogfSAjIGFzX2ZuX2Vycm9yCiAKQEAgLTUyOCwxNjEgKzU0NCwxNCBAQAogIyBTZWQgZXhwcmVzc2lvbiB0byBtYXAgYSBzdHJpbmcgb250byBhIHZhbGlkIHZhcmlhYmxlIG5hbWUuCiBhc190cl9zaD0iZXZhbCBzZWQgJ3klKislcHAlO3MlW15fJGFzX2NyX2FsbnVtXSVfJWcnIgogCi0KLQotIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgogU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KIAotY2FzZSBYJGx0X0VDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFwkXFwkMCwnJDAnLCdgCi0gIDs7Ci1lc2FjCi0KLUVDSE89JHtsdF9FQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYJDEiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICMgRGlzY2FyZCB0aGUgLS1uby1yZWV4ZWMgZmxhZywgYW5kIGNvbnRpbnVlLgotICBzaGlmdAotZWxpZiB0ZXN0ICJYJDEiID0gWC0tZmFsbGJhY2stZWNobzsgdGhlbgotICAjIEF2b2lkIGlubGluZSBkb2N1bWVudCBoZXJlLCBpdCBtYXkgYmUgbGVmdCBvdmVyCi0gIDoKLWVsaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnIDsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotICBleGVjICRTSEVMTCAiJDAiIC0tbm8tcmVleGVjICR7MSsiJEAifQotZmkKLQotaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8X0xUX0VPRgotJCoKLV9MVF9FT0YKLSAgZXhpdCAwCi1maQotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1pZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KLSAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCi0gICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0Ci0gICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiJDAiJyAnc2VkIDIwcSAiJDAiJyAnc2VkIDEwcSAiJDAiJyAnc2VkIDJxICIkMCInICdlY2hvIHRlc3QnOyBkbwotICAgICAgIyBleHBlY3RlZCBzaXplczogbGVzcyB0aGFuIDJLYiwgMUtiLCA1MTIgYnl0ZXMsIDE2IGJ5dGVzLCAuLi4KLSAgICAgIGlmIHsgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkY21kYDsgfSAyPi9kZXYvbnVsbCAmJgotCSB7IHRlc3QgIlgkZWNob190ZXN0X3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbAotICAgICAgdGhlbgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gIGZpCi0KLSAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YHsgJEVDSE8gIiRlY2hvX3Rlc3Rfc3RyaW5nIjsgfSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgIyBUaGUgU29sYXJpcywgQUlYLCBhbmQgRGlnaXRhbCBVbml4IGRlZmF1bHQgZWNobyBwcm9ncmFtcyB1bnF1b3RlCi0gICAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAgICMgICBlY2hvICIkc29tZXRoaW5nIiB8IHNlZCAncy9cXC9cXFxcL2cnCi0gICAgIwotICAgICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBkaXIgaW4gJFBBVEggL3Vzci91Y2I7IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIGlmICh0ZXN0IC1mICRkaXIvZWNobyB8fCB0ZXN0IC1mICRkaXIvZWNobyRhY19leGVleHQpICYmCi0gICAgICAgICB0ZXN0ICJYYCgkZGlyL2VjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgIEVDSE89IiRkaXIvZWNobyIKLSAgICAgICAgYnJlYWsKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gICAgaWYgdGVzdCAiWCRFQ0hPIiA9IFhlY2hvOyB0aGVuCi0gICAgICAjIFdlIGRpZG4ndCBmaW5kIGEgYmV0dGVyIGVjaG8sIHNvIGxvb2sgZm9yIGFsdGVybmF0aXZlcy4KLSAgICAgIGlmIHRlc3QgIlhgeyBwcmludCAtciAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyBwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0gICAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICAgIEVDSE89J3ByaW50IC1yJwotICAgICAgZWxpZiB7IHRlc3QgLWYgL2Jpbi9rc2ggfHwgdGVzdCAtZiAvYmluL2tzaCRhY19leGVleHQ7IH0gJiYKLQkgICB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAgICMgSWYgd2UgaGF2ZSBrc2gsIHRyeSBydW5uaW5nIGNvbmZpZ3VyZSBhZ2FpbiB3aXRoIGl0LgotICAgICAgICBPUklHSU5BTF9DT05GSUdfU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLSAgICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgICBDT05GSUdfU0hFTEw9L2Jpbi9rc2gKLSAgICAgICAgZXhwb3J0IENPTkZJR19TSEVMTAotICAgICAgICBleGVjICRDT05GSUdfU0hFTEwgIiQwIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KLSAgICAgIGVsc2UKLSAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKLSAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgIyBDb29sLCBwcmludGYgd29ya3MKLQkgIDoKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiJDAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkgIENPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0JICBleHBvcnQgQ09ORklHX1NIRUxMCi0JICBTSEVMTD0iJENPTkZJR19TSEVMTCIKLQkgIGV4cG9ydCBTSEVMTAotCSAgRUNITz0iJENPTkZJR19TSEVMTCAkMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIiQwIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICIkMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBFQ0hPPSIkQ09ORklHX1NIRUxMICQwIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxzZQotCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KLQkgIHByZXY9OgotCi0JICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIiQwIicgJ3NlZCAxMHEgIiQwIicgJ3NlZCAyMHEgIiQwIicgJ3NlZCA1MHEgIiQwIic7IGRvCi0JICAgIGlmIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYYGV2YWwgJGNtZGAiOyB9IDI+L2Rldi9udWxsCi0JICAgIHRoZW4KLQkgICAgICBicmVhawotCSAgICBmaQotCSAgICBwcmV2PSIkY21kIgotCSAgZG9uZQotCi0JICBpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIiQwIic7IHRoZW4KLQkgICAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKLQkgICAgZXhwb3J0IGVjaG9fdGVzdF9zdHJpbmcKLQkgICAgZXhlYyAke09SSUdJTkFMX0NPTkZJR19TSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0gIiQwIiAkezErIiRAIn0KLQkgIGVsc2UKLQkgICAgIyBPb3BzLiAgV2UgbG9zdCBjb21wbGV0ZWx5LCBzbyBqdXN0IHN0aWNrIHdpdGggZWNoby4KLQkgICAgRUNITz1lY2hvCi0JICBmaQotICAgICAgICBmaQotICAgICAgZmkKLSAgICBmaQotICBmaQotZmkKLQotIyBDb3B5IGVjaG8gYW5kIHF1b3RlIHRoZSBjb3B5IHN1aXRhYmx5IGZvciBwYXNzaW5nIHRvIGxpYnRvb2wgZnJvbQotIyB0aGUgTWFrZWZpbGUsIGluc3RlYWQgb2YgcXVvdGluZyB0aGUgb3JpZ2luYWwsIHdoaWNoIGlzIHVzZWQgbGF0ZXIuCi1sdF9FQ0hPPSRFQ0hPCi1pZiB0ZXN0ICJYJGx0X0VDSE8iID0gIlgkQ09ORklHX1NIRUxMICQwIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLSAgIGx0X0VDSE89IiRDT05GSUdfU0hFTEwgXFxcJFwkMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi0KLQogCiB0ZXN0IC1uICIkREpESVIiIHx8IGV4ZWMgNzwmMCA8L2Rldi9udWxsCiBleGVjIDY+JjEKIAogIyBOYW1lIG9mIHRoZSBob3N0LgotIyBob3N0bmFtZSBvbiBzb21lIHN5c3RlbXMgKFNWUjMuMiwgTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKKyMgaG9zdG5hbWUgb24gc29tZSBzeXN0ZW1zIChTVlIzLjIsIG9sZCBHTlUvTGludXgpIHJldHVybnMgYSBib2d1cyBleGl0IHN0YXR1cywKICMgc28gdW5hbWUgZ2V0cyBydW4gdG9vLgogYWNfaG9zdG5hbWU9YChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgCiAKQEAgLTcwMSw5ICs1NzAsOSBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J2xpYmZmaScKIFBBQ0tBR0VfVEFSTkFNRT0nbGliZmZpJwotUEFDS0FHRV9WRVJTSU9OPSczLjAuMTByYzAnCi1QQUNLQUdFX1NUUklORz0nbGliZmZpIDMuMC4xMHJjMCcKLVBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vZ2NjLmdudS5vcmcvYnVncy5odG1sJworUEFDS0FHRV9WRVJTSU9OPSczLjAuMTEnCitQQUNLQUdFX1NUUklORz0nbGliZmZpIDMuMC4xMScKK1BBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXMnCiBQQUNLQUdFX1VSTD0nJwogCiAjIEZhY3RvcmluZyBkZWZhdWx0IGhlYWRlcnMgZm9yIG1vc3QgdGVzdHMuCkBAIC03NDgsOCArNjE3LDE0IEBACiBMSUJPQkpTCiB0b29sZXhlY2xpYmRpcgogdG9vbGV4ZWNkaXIKK0ZGSV9ERUJVR19GQUxTRQorRkZJX0RFQlVHX1RSVUUKIFRBUkdFVERJUgogVEFSR0VUCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFCitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUUKK3N5c19zeW1ib2xfdW5kZXJzY29yZQogSEFWRV9MT05HX0RPVUJMRQogQUxMT0NBCiBQQTY0X0hQVVhfRkFMU0UKQEAgLTc4Miw2ICs2NTcsOCBAQAogUE9XRVJQQ19BSVhfVFJVRQogUE9XRVJQQ19GQUxTRQogUE9XRVJQQ19UUlVFCitNT1hJRV9GQUxTRQorTU9YSUVfVFJVRQogTTY4S19GQUxTRQogTTY4S19UUlVFCiBNMzJSX0ZBTFNFCkBAIC04MTEsMTUgKzY4OCwxOCBAQAogTUFJTlQKIE1BSU5UQUlORVJfTU9ERV9GQUxTRQogTUFJTlRBSU5FUl9NT0RFX1RSVUUKK1BSVERJQUcKIENQUAogT1RPT0w2NAogT1RPT0wKIExJUE8KIE5NRURJVAogRFNZTVVUSUwKLWx0X0VDSE8KK01BTklGRVNUX1RPT0wKIFJBTkxJQgorYWNfY3RfQVIKIEFSCitETExUT09MCiBPQkpEVU1QCiBMTl9TCiBOTQpAQCAtODM5LDYgKzcxOSw3IEBACiBhbV9fZmFzdGRlcENDX0ZBTFNFCiBhbV9fZmFzdGRlcENDX1RSVUUKIENDREVQTU9ERQorYW1fX25vZGVwCiBBTURFUEJBQ0tTTEFTSAogQU1ERVBfRkFMU0UKIEFNREVQX1RSVUUKQEAgLTg3NSw2ICs3NTYsNyBAQAogSU5TVEFMTF9EQVRBCiBJTlNUQUxMX1NDUklQVAogSU5TVEFMTF9QUk9HUkFNCitheF9lbmFibGVfYnVpbGRkaXJfc2VkCiB0YXJnZXRfb3MKIHRhcmdldF92ZW5kb3IKIHRhcmdldF9jcHUKQEAgLTkyOCwxMyArODEwLDE3IEBACiBhY19zdWJzdF9maWxlcz0nJwogYWNfdXNlcl9vcHRzPScKIGVuYWJsZV9vcHRpb25fY2hlY2tpbmcKK2VuYWJsZV9idWlsZGRpcgogZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKIGVuYWJsZV9zaGFyZWQKIGVuYWJsZV9zdGF0aWMKIHdpdGhfcGljCiBlbmFibGVfZmFzdF9pbnN0YWxsCiB3aXRoX2dudV9sZAord2l0aF9zeXNyb290CiBlbmFibGVfbGlidG9vbF9sb2NrCitlbmFibGVfcG9ydGFibGVfYmluYXJ5Cit3aXRoX2djY19hcmNoCiBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCiBlbmFibGVfZGVidWcKIGVuYWJsZV9zdHJ1Y3RzCkBAIC0xMDEwLDggKzg5Niw5IEBACiAgIGZpCiAKICAgY2FzZSAkYWNfb3B0aW9uIGluCi0gICo9KikJYWNfb3B0YXJnPWBleHByICJYJGFjX29wdGlvbiIgOiAnW149XSo9XCguKlwpJ2AgOzsKLSAgKikJYWNfb3B0YXJnPXllcyA7OworICAqPT8qKSBhY19vcHRhcmc9YGV4cHIgIlgkYWNfb3B0aW9uIiA6ICdbXj1dKj1cKC4qXCknYCA7OworICAqPSkgICBhY19vcHRhcmc9IDs7CisgICopICAgIGFjX29wdGFyZz15ZXMgOzsKICAgZXNhYwogCiAgICMgQWNjZXB0IHRoZSBpbXBvcnRhbnQgQ3lnbnVzIGNvbmZpZ3VyZSBvcHRpb25zLCBzbyB3ZSBjYW4gZGlhZ25vc2UgdHlwb3MuCkBAIC0xMDU2LDcgKzk0Myw3IEBACiAgICAgYWNfdXNlcm9wdD1gZXhwciAieCRhY19vcHRpb24iIDogJ3gtKmRpc2FibGUtXCguKlwpJ2AKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgZXhwciAieCRhY191c2Vyb3B0IiA6ICIuKlteLSsuXyRhc19jcl9hbG51bV0iID4vZGV2L251bGwgJiYKLSAgICAgIGFzX2ZuX2Vycm9yICJpbnZhbGlkIGZlYXR1cmUgbmFtZTogJGFjX3VzZXJvcHQiCisgICAgICBhc19mbl9lcnJvciAkPyAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgogICAgIGFjX3VzZXJvcHRfb3JpZz0kYWNfdXNlcm9wdAogICAgIGFjX3VzZXJvcHQ9YCRhc19lY2hvICIkYWNfdXNlcm9wdCIgfCBzZWQgJ3MvWy0rLl0vXy9nJ2AKICAgICBjYXNlICRhY191c2VyX29wdHMgaW4KQEAgLTEwODIsNyArOTY5LDcgQEAKICAgICBhY191c2Vyb3B0PWBleHByICJ4JGFjX29wdGlvbiIgOiAneC0qZW5hYmxlLVwoW149XSpcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBmZWF0dXJlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgZmVhdHVyZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMjg2LDcgKzExNzMsNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRoLVwoW149XSpcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMzAyLDcgKzExODksNyBAQAogICAgIGFjX3VzZXJvcHQ9YGV4cHIgIngkYWNfb3B0aW9uIiA6ICd4LSp3aXRob3V0LVwoLipcKSdgCiAgICAgIyBSZWplY3QgbmFtZXMgdGhhdCBhcmUgbm90IHZhbGlkIHNoZWxsIHZhcmlhYmxlIG5hbWVzLgogICAgIGV4cHIgIngkYWNfdXNlcm9wdCIgOiAiLipbXi0rLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCBwYWNrYWdlIG5hbWU6ICRhY191c2Vyb3B0IgorICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgcGFja2FnZSBuYW1lOiAkYWNfdXNlcm9wdCIKICAgICBhY191c2Vyb3B0X29yaWc9JGFjX3VzZXJvcHQKICAgICBhY191c2Vyb3B0PWAkYXNfZWNobyAiJGFjX3VzZXJvcHQiIHwgc2VkICdzL1stKy5dL18vZydgCiAgICAgY2FzZSAkYWNfdXNlcl9vcHRzIGluCkBAIC0xMzMyLDggKzEyMTksOCBAQAogICB8IC0teC1saWJyYXI9KiB8IC0teC1saWJyYT0qIHwgLS14LWxpYnI9KiB8IC0teC1saWI9KiB8IC0teC1saT0qIHwgLS14LWw9KikKICAgICB4X2xpYnJhcmllcz0kYWNfb3B0YXJnIDs7CiAKLSAgLSopIGFzX2ZuX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nCi1UcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCRhY19vcHRpb24nCitUcnkgXGAkMCAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIgogICAgIDs7CiAKICAgKj0qKQpAQCAtMTM0MSw3ICsxMjI4LDcgQEAKICAgICAjIFJlamVjdCBuYW1lcyB0aGF0IGFyZSBub3QgdmFsaWQgc2hlbGwgdmFyaWFibGUgbmFtZXMuCiAgICAgY2FzZSAkYWNfZW52dmFyIGluICMoCiAgICAgICAnJyB8IFswLTldKiB8ICpbIV8kYXNfY3JfYWxudW1dKiApCi0gICAgICBhc19mbl9lcnJvciAiaW52YWxpZCB2YXJpYWJsZSBuYW1lOiBcYCRhY19lbnZ2YXInIiA7OworICAgICAgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFyaWFibGUgbmFtZTogXGAkYWNfZW52dmFyJyIgOzsKICAgICBlc2FjCiAgICAgZXZhbCAkYWNfZW52dmFyPVwkYWNfb3B0YXJnCiAgICAgZXhwb3J0ICRhY19lbnZ2YXIgOzsKQEAgLTEzNTEsNyArMTIzOCw3IEBACiAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogeW91IHNob3VsZCB1c2UgLS1idWlsZCwgLS1ob3N0LCAtLXRhcmdldCIgPiYyCiAgICAgZXhwciAieCRhY19vcHRpb24iIDogIi4qW14tLl8kYXNfY3JfYWxudW1dIiA+L2Rldi9udWxsICYmCiAgICAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBpbnZhbGlkIGhvc3QgdHlwZTogJGFjX29wdGlvbiIgPiYyCi0gICAgOiAke2J1aWxkX2FsaWFzPSRhY19vcHRpb259ICR7aG9zdF9hbGlhcz0kYWNfb3B0aW9ufSAke3RhcmdldF9hbGlhcz0kYWNfb3B0aW9ufQorICAgIDogIiR7YnVpbGRfYWxpYXM9JGFjX29wdGlvbn0gJHtob3N0X2FsaWFzPSRhY19vcHRpb259ICR7dGFyZ2V0X2FsaWFzPSRhY19vcHRpb259IgogICAgIDs7CiAKICAgZXNhYwpAQCAtMTM1OSwxMyArMTI0NiwxMyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfcHJldiI7IHRoZW4KICAgYWNfb3B0aW9uPS0tYGVjaG8gJGFjX3ByZXYgfCBzZWQgJ3MvXy8tL2cnYAotICBhc19mbl9lcnJvciAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIgorICBhc19mbl9lcnJvciAkPyAibWlzc2luZyBhcmd1bWVudCB0byAkYWNfb3B0aW9uIgogZmkKIAogaWYgdGVzdCAtbiAiJGFjX3VucmVjb2duaXplZF9vcHRzIjsgdGhlbgogICBjYXNlICRlbmFibGVfb3B0aW9uX2NoZWNraW5nIGluCiAgICAgbm8pIDs7Ci0gICAgZmF0YWwpIGFzX2ZuX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uczogJGFjX3VucmVjb2duaXplZF9vcHRzIiA7OworICAgIGZhdGFsKSBhc19mbl9lcnJvciAkPyAidW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgOzsKICAgICAqKSAgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdW5yZWNvZ25pemVkIG9wdGlvbnM6ICRhY191bnJlY29nbml6ZWRfb3B0cyIgPiYyIDs7CiAgIGVzYWMKIGZpCkBAIC0xMzg4LDcgKzEyNzUsNyBAQAogICAgIFtcXC8kXSogfCA/OltcXC9dKiApICBjb250aW51ZTs7CiAgICAgTk9ORSB8ICcnICkgY2FzZSAkYWNfdmFyIGluICpwcmVmaXggKSBjb250aW51ZTs7IGVzYWM7OwogICBlc2FjCi0gIGFzX2ZuX2Vycm9yICJleHBlY3RlZCBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBmb3IgLS0kYWNfdmFyOiAkYWNfdmFsIgorICBhc19mbl9lcnJvciAkPyAiZXhwZWN0ZWQgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgZm9yIC0tJGFjX3ZhcjogJGFjX3ZhbCIKIGRvbmUKIAogIyBUaGVyZSBtaWdodCBiZSBwZW9wbGUgd2hvIGRlcGVuZCBvbiB0aGUgb2xkIGJyb2tlbiBiZWhhdmlvcjogYCRob3N0JwpAQCAtMTQwMiw4ICsxMjg5LDggQEAKIGlmIHRlc3QgIngkaG9zdF9hbGlhcyIgIT0geDsgdGhlbgogICBpZiB0ZXN0ICJ4JGJ1aWxkX2FsaWFzIiA9IHg7IHRoZW4KICAgICBjcm9zc19jb21waWxpbmc9bWF5YmUKLSAgICAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBJZiB5b3Ugd2FudGVkIHRvIHNldCB0aGUgLS1idWlsZCB0eXBlLCBkb24ndCB1c2UgLS1ob3N0LgotICAgIElmIGEgY3Jvc3MgY29tcGlsZXIgaXMgZGV0ZWN0ZWQgdGhlbiBjcm9zcyBjb21waWxlIG1vZGUgd2lsbCBiZSB1c2VkLiIgPiYyCisgICAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogaWYgeW91IHdhbnRlZCB0byBzZXQgdGhlIC0tYnVpbGQgdHlwZSwgZG9uJ3QgdXNlIC0taG9zdC4KKyAgICBJZiBhIGNyb3NzIGNvbXBpbGVyIGlzIGRldGVjdGVkIHRoZW4gY3Jvc3MgY29tcGlsZSBtb2RlIHdpbGwgYmUgdXNlZCIgPiYyCiAgIGVsaWYgdGVzdCAieCRidWlsZF9hbGlhcyIgIT0gIngkaG9zdF9hbGlhcyI7IHRoZW4KICAgICBjcm9zc19jb21waWxpbmc9eWVzCiAgIGZpCkBAIC0xNDE4LDkgKzEzMDUsOSBAQAogYWNfcHdkPWBwd2RgICYmIHRlc3QgLW4gIiRhY19wd2QiICYmCiBhY19sc19kaT1gbHMgLWRpIC5gICYmCiBhY19wd2RfbHNfZGk9YGNkICIkYWNfcHdkIiAmJiBscyAtZGkgLmAgfHwKLSAgYXNfZm5fZXJyb3IgIndvcmtpbmcgZGlyZWN0b3J5IGNhbm5vdCBiZSBkZXRlcm1pbmVkIgorICBhc19mbl9lcnJvciAkPyAid29ya2luZyBkaXJlY3RvcnkgY2Fubm90IGJlIGRldGVybWluZWQiCiB0ZXN0ICJYJGFjX2xzX2RpIiA9ICJYJGFjX3B3ZF9sc19kaSIgfHwKLSAgYXNfZm5fZXJyb3IgInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKKyAgYXNfZm5fZXJyb3IgJD8gInB3ZCBkb2VzIG5vdCByZXBvcnQgbmFtZSBvZiB3b3JraW5nIGRpcmVjdG9yeSIKIAogCiAjIEZpbmQgdGhlIHNvdXJjZSBmaWxlcywgaWYgbG9jYXRpb24gd2FzIG5vdCBzcGVjaWZpZWQuCkBAIC0xNDU5LDExICsxMzQ2LDExIEBACiBmaQogaWYgdGVzdCAhIC1yICIkc3JjZGlyLyRhY191bmlxdWVfZmlsZSI7IHRoZW4KICAgdGVzdCAiJGFjX3NyY2Rpcl9kZWZhdWx0ZWQiID0geWVzICYmIHNyY2Rpcj0iJGFjX2NvbmZkaXIgb3IgLi4iCi0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRzcmNkaXIiCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBzb3VyY2VzICgkYWNfdW5pcXVlX2ZpbGUpIGluICRzcmNkaXIiCiBmaQogYWNfbXNnPSJzb3VyY2VzIGFyZSBpbiAkc3JjZGlyLCBidXQgXGBjZCAkc3JjZGlyJyBkb2VzIG5vdCB3b3JrIgogYWNfYWJzX2NvbmZkaXI9YCgKLQljZCAiJHNyY2RpciIgJiYgdGVzdCAtciAiLi8kYWNfdW5pcXVlX2ZpbGUiIHx8IGFzX2ZuX2Vycm9yICIkYWNfbXNnIgorCWNkICIkc3JjZGlyIiAmJiB0ZXN0IC1yICIuLyRhY191bmlxdWVfZmlsZSIgfHwgYXNfZm5fZXJyb3IgJD8gIiRhY19tc2ciCiAJcHdkKWAKICMgV2hlbiBidWlsZGluZyBpbiBwbGFjZSwgc2V0IHNyY2Rpcj0uCiBpZiB0ZXN0ICIkYWNfYWJzX2NvbmZkaXIiID0gIiRhY19wd2QiOyB0aGVuCkBAIC0xNDg5LDcgKzEzNzYsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIGxpYmZmaSAzLjAuMTByYzAgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgbGliZmZpIDMuMC4xMSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNTAzLDcgKzEzOTAsNyBAQAogICAgICAgLS1oZWxwPXNob3J0ICAgICAgICBkaXNwbGF5IG9wdGlvbnMgc3BlY2lmaWMgdG8gdGhpcyBwYWNrYWdlCiAgICAgICAtLWhlbHA9cmVjdXJzaXZlICAgIGRpc3BsYXkgdGhlIHNob3J0IGhlbHAgb2YgYWxsIHRoZSBpbmNsdWRlZCBwYWNrYWdlcwogICAtViwgLS12ZXJzaW9uICAgICAgICAgICBkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSAgLXEsIC0tcXVpZXQsIC0tc2lsZW50ICAgZG8gbm90IHByaW50IFxgY2hlY2tpbmcuLi4nIG1lc3NhZ2VzCisgIC1xLCAtLXF1aWV0LCAtLXNpbGVudCAgIGRvIG5vdCBwcmludCBcYGNoZWNraW5nIC4uLicgbWVzc2FnZXMKICAgICAgIC0tY2FjaGUtZmlsZT1GSUxFICAgY2FjaGUgdGVzdCByZXN1bHRzIGluIEZJTEUgW2Rpc2FibGVkXQogICAtQywgLS1jb25maWctY2FjaGUgICAgICBhbGlhcyBmb3IgXGAtLWNhY2hlLWZpbGU9Y29uZmlnLmNhY2hlJwogICAtbiwgLS1uby1jcmVhdGUgICAgICAgICBkbyBub3QgY3JlYXRlIG91dHB1dCBmaWxlcwpAQCAtMTU2MCw3ICsxNDQ3LDcgQEAKIAogaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KICAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCi0gICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBsaWJmZmkgMy4wLjEwcmMwOiI7OworICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgbGliZmZpIDMuMC4xMToiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0xNTY4LDYgKzE0NTUsOCBAQAogICAtLWRpc2FibGUtb3B0aW9uLWNoZWNraW5nICBpZ25vcmUgdW5yZWNvZ25pemVkIC0tZW5hYmxlLy0td2l0aCBvcHRpb25zCiAgIC0tZGlzYWJsZS1GRUFUVVJFICAgICAgIGRvIG5vdCBpbmNsdWRlIEZFQVRVUkUgKHNhbWUgYXMgLS1lbmFibGUtRkVBVFVSRT1ubykKICAgLS1lbmFibGUtRkVBVFVSRVs9QVJHXSAgaW5jbHVkZSBGRUFUVVJFIFtBUkc9eWVzXQorICAtLWRpc2FibGUtYnVpbGRkaXIgICAgICBkaXNhYmxlIGF1dG9tYXRpYyBidWlsZCBpbiBzdWJkaXIgb2Ygc291cmNlcworCiAgIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nICBzcGVlZHMgdXAgb25lLXRpbWUgYnVpbGQKICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyAgIGRvIG5vdCByZWplY3Qgc2xvdyBkZXBlbmRlbmN5IGV4dHJhY3RvcnMKICAgLS1lbmFibGUtc2hhcmVkWz1QS0dTXSAgYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdCkBAIC0xNTc1LDYgKzE0NjQsOSBAQAogICAtLWVuYWJsZS1mYXN0LWluc3RhbGxbPVBLR1NdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBbZGVmYXVsdD15ZXNdCiAgIC0tZGlzYWJsZS1saWJ0b29sLWxvY2sgIGF2b2lkIGxvY2tpbmcgKG1pZ2h0IGJyZWFrIHBhcmFsbGVsIGJ1aWxkcykKKyAgLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGUgY29tcGlsZXIgb3B0aW1pemF0aW9ucyB0aGF0IHdvdWxkIHByb2R1Y2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wb3J0YWJsZSBiaW5hcmllcwogICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgIGVuYWJsZSBtYWtlIHJ1bGVzIGFuZCBkZXBlbmRlbmNpZXMgbm90IHVzZWZ1bAogCQkJICAoYW5kIHNvbWV0aW1lcyBjb25mdXNpbmcpIHRvIHRoZSBjYXN1YWwgaW5zdGFsbGVyCiAgIC0tZW5hYmxlLWRlYnVnICAgICAgICAgIGRlYnVnZ2luZyBtb2RlCkBAIC0xNTg1LDkgKzE0NzcsMTMgQEAKIE9wdGlvbmFsIFBhY2thZ2VzOgogICAtLXdpdGgtUEFDS0FHRVs9QVJHXSAgICB1c2UgUEFDS0FHRSBbQVJHPXllc10KICAgLS13aXRob3V0LVBBQ0tBR0UgICAgICAgZG8gbm90IHVzZSBQQUNLQUdFIChzYW1lIGFzIC0td2l0aC1QQUNLQUdFPW5vKQotICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgLS13aXRoLXBpY1s9UEtHU10gICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCiAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKyAgLS13aXRoLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgLS13aXRoLWdjYy1hcmNoPTxhcmNoPiAgdXNlIGFyY2hpdGVjdHVyZSA8YXJjaD4gZm9yIGdjYyAtbWFyY2gvLW10dW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGd1ZXNzaW5nCiAKIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgogICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKQEAgLTE2MDQsNyArMTUwMCw3IEBACiBVc2UgdGhlc2UgdmFyaWFibGVzIHRvIG92ZXJyaWRlIHRoZSBjaG9pY2VzIG1hZGUgYnkgYGNvbmZpZ3VyZScgb3IgdG8gaGVscAogaXQgdG8gZmluZCBsaWJyYXJpZXMgYW5kIHByb2dyYW1zIHdpdGggbm9uc3RhbmRhcmQgbmFtZXMvbG9jYXRpb25zLgogCi1SZXBvcnQgYnVncyB0byA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4uCitSZXBvcnQgYnVncyB0byA8aHR0cDovL2dpdGh1Yi5jb20vYXRncmVlbi9saWJmZmkvaXNzdWVzPi4KIF9BQ0VPRgogYWNfc3RhdHVzPSQ/CiBmaQpAQCAtMTY2NywxMCArMTU2MywxMCBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLWxpYmZmaSBjb25maWd1cmUgMy4wLjEwcmMwCi1nZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjUKK2xpYmZmaSBjb25maWd1cmUgMy4wLjExCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgKIAotQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogVGhpcyBjb25maWd1cmUgc2NyaXB0IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4KIF9BQ0VPRgpAQCAtMTcxNCw3ICsxNjEwLDcgQEAKIAogCWFjX3JldHZhbD0xCiBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX3RyeV9jb21waWxlCkBAIC0xNzYwLDcgKzE2NTYsNyBAQAogICAjIGludGVyZmVyZSB3aXRoIHRoZSBuZXh0IGxpbmsgY29tbWFuZDsgYWxzbyBkZWxldGUgYSBkaXJlY3RvcnkgdGhhdCBpcwogICAjIGxlZnQgYmVoaW5kIGJ5IEFwcGxlJ3MgY29tcGlsZXIuICBXZSBkbyB0aGlzIGJlZm9yZSBleGVjdXRpbmcgdGhlIGFjdGlvbnMuCiAgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfbGluawpAQCAtMTc3NCw3ICsxNjcwLDcgQEAKICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjawogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KLWlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xNzkyLDcgKzE2ODgsNyBAQAogZXZhbCBhY19yZXM9XCQkMwogCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiAkYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9Ci0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogCiB9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZQogCkBAIC0xODE3LDcgKzE3MTMsNyBAQAogICAgIG12IC1mIGNvbmZ0ZXN0LmVyMSBjb25mdGVzdC5lcnIKICAgZmkKICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gPi9kZXYvbnVsbCAmJiB7CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gPiBjb25mdGVzdC5pICYmIHsKIAkgdGVzdCAteiAiJGFjX2NfcHJlcHJvY193YXJuX2ZsYWckYWNfY193ZXJyb3JfZmxhZyIgfHwKIAkgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycgogICAgICAgIH07IHRoZW4gOgpAQCAtMTgyOCw3ICsxNzI0LDcgQEAKIAogICAgIGFjX3JldHZhbD0xCiBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX3RyeV9jcHAKQEAgLTE4NzAsNyArMTc2Niw3IEBACiAgICAgICAgYWNfcmV0dmFsPSRhY19zdGF0dXMKIGZpCiAgIHJtIC1yZiBjb25mdGVzdC5kU1lNIGNvbmZ0ZXN0X2lwYThfY29uZnRlc3Qub28KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAgIGFzX2ZuX3NldF9zdGF0dXMgJGFjX3JldHZhbAogCiB9ICMgYWNfZm5fY190cnlfcnVuCkBAIC0xODgzLDcgKzE3NzksNyBAQAogICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTE5MzgsNyArMTgzNCw3IEBACiBldmFsIGFjX3Jlcz1cJCQzCiAJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyB0ZXN0ICJ4JGFzX2xpbmVub19zdGFjayIgPSB4ICYmIHsgYXNfbGluZW5vPTsgdW5zZXQgYXNfbGluZW5vO30KKyAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCiAKIH0gIyBhY19mbl9jX2NoZWNrX2Z1bmMKIApAQCAtMTk1MCwxMCArMTg0NiwxMCBAQAogYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAoKQogewogICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIGlmIHsgYXNfdmFyPSQzOyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKKyAgaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICQyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkMi4uLiAiID4mNjsgfQotaWYgeyBhc192YXI9JDM7IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBmaQogZXZhbCBhY19yZXM9XCQkMwpAQCAtMTk4OSw3ICsxODg1LDcgQEAKIGVsc2UKICAgYWNfaGVhZGVyX3ByZXByb2M9bm8KIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19oZWFkZXJfcHJlcHJvYyIgPiY1CiAkYXNfZWNobyAiJGFjX2hlYWRlcl9wcmVwcm9jIiA+JjY7IH0KIApAQCAtMjAxMiwxNyArMTkwOCwxNSBAQAogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJDI6ICAgICBzZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4mMjt9CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkMjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21waWxlcidzIHJlc3VsdCIgPiYyO30KLSggY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotIyMgUmVwb3J0IHRoaXMgdG8gaHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbCAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisoICRhc19lY2hvICIjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJlcG9ydCB0aGlzIHRvIGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3VlcyAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjIgogICAgICApIHwgc2VkICJzL14vJGFzX21lOiBXQVJOSU5HOiAgICAgLyIgPiYyCiAgICAgOzsKIGVzYWMKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJDIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICQyLi4uICIgPiY2OyB9Ci1pZiB7IGFzX3Zhcj0kMzsgZXZhbCAidGVzdCBcIlwkeyRhc192YXIrc2V0fVwiID0gc2V0IjsgfTsgdGhlbiA6CitpZiBldmFsIFwkeyQzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgZXZhbCAiJDM9XCRhY19oZWFkZXJfY29tcGlsZXIiCkBAIC0yMDMxLDEwICsxOTI1LDY0IEBACiAJICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKICRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KIGZpCi0gIGV2YWwgJGFzX2xpbmVub19zdGFjazsgdGVzdCAieCRhc19saW5lbm9fc3RhY2siID0geCAmJiB7IGFzX2xpbmVubz07IHVuc2V0IGFzX2xpbmVubzt9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubwogCiB9ICMgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbAogCisjIGFjX2ZuX2NfY2hlY2tfdHlwZSBMSU5FTk8gVFlQRSBWQVIgSU5DTFVERVMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyB3aGV0aGVyIFRZUEUgZXhpc3RzIGFmdGVyIGhhdmluZyBpbmNsdWRlZCBJTkNMVURFUywgc2V0dGluZyBjYWNoZQorIyB2YXJpYWJsZSBWQVIgYWNjb3JkaW5nbHkuCithY19mbl9jX2NoZWNrX3R5cGUgKCkKK3sKKyAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMSJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJDIuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBldmFsICIkMz1ubyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworJDQKK2ludAorbWFpbiAoKQoreworaWYgKHNpemVvZiAoJDIpKQorCSByZXR1cm4gMDsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCiskNAoraW50CittYWluICgpCit7CitpZiAoc2l6ZW9mICgoJDIpKSkKKwkgICAgcmV0dXJuIDA7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworZWxzZQorICBldmFsICIkMz15ZXMiCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorZXZhbCBhY19yZXM9XCQkMworCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CisgIGV2YWwgJGFzX2xpbmVub19zdGFjazsgJHthc19saW5lbm9fc3RhY2s6Kzp9IHVuc2V0IGFzX2xpbmVubworCit9ICMgYWNfZm5fY19jaGVja190eXBlCisKICMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKQEAgLTIyMDgsNyArMjE1Niw3IEBACiBybSAtZiBjb25mdGVzdC52YWwKIAogICBmaQotICBldmFsICRhc19saW5lbm9fc3RhY2s7IHRlc3QgIngkYXNfbGluZW5vX3N0YWNrIiA9IHggJiYgeyBhc19saW5lbm89OyB1bnNldCBhc19saW5lbm87fQorICBldmFsICRhc19saW5lbm9fc3RhY2s7ICR7YXNfbGluZW5vX3N0YWNrOis6fSB1bnNldCBhc19saW5lbm8KICAgYXNfZm5fc2V0X3N0YXR1cyAkYWNfcmV0dmFsCiAKIH0gIyBhY19mbl9jX2NvbXB1dGVfaW50CkBAIC0yMjE2LDggKzIxNjQsOCBAQAogVGhpcyBmaWxlIGNvbnRhaW5zIGFueSBtZXNzYWdlcyBwcm9kdWNlZCBieSBjb21waWxlcnMgd2hpbGUKIHJ1bm5pbmcgY29uZmlndXJlLCB0byBhaWQgZGVidWdnaW5nIGlmIGNvbmZpZ3VyZSBtYWtlcyBhIG1pc3Rha2UuCiAKLUl0IHdhcyBjcmVhdGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjEwcmMwLCB3aGljaCB3YXMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgbGliZmZpICRhc19tZSAzLjAuMTEsIHdoaWNoIHdhcworZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQAogCkBAIC0yMzI3LDExICsyMjc1LDkgQEAKICAgewogICAgIGVjaG8KIAotICAgIGNhdCA8PFxfQVNCT1gKLSMjIC0tLS0tLS0tLS0tLS0tLS0gIyMKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgQ2FjaGUgdmFyaWFibGVzLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tICMjIgogICAgIGVjaG8KICAgICAjIFRoZSBmb2xsb3dpbmcgd2F5IG9mIHdyaXRpbmcgdGhlIGNhY2hlIG1pc2hhbmRsZXMgbmV3bGluZXMgaW4gdmFsdWVzLAogKApAQCAtMjM2NSwxMSArMjMxMSw5IEBACiApCiAgICAgZWNobwogCi0gICAgY2F0IDw8XF9BU0JPWAotIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKICMjIE91dHB1dCB2YXJpYWJsZXMuICMjCi0jIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIyIKICAgICBlY2hvCiAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfdmFycwogICAgIGRvCkBAIC0yMzgyLDExICsyMzI2LDkgQEAKICAgICBlY2hvCiAKICAgICBpZiB0ZXN0IC1uICIkYWNfc3Vic3RfZmlsZXMiOyB0aGVuCi0gICAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjCisgICAgICAkYXNfZWNobyAiIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwogIyMgRmlsZSBzdWJzdGl0dXRpb25zLiAjIwotIyMgLS0tLS0tLS0tLS0tLS0tLS0tLSAjIwotX0FTQk9YCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tICMjIgogICAgICAgZWNobwogICAgICAgZm9yIGFjX3ZhciBpbiAkYWNfc3Vic3RfZmlsZXMKICAgICAgIGRvCkBAIC0yNDAwLDExICsyMzQyLDkgQEAKICAgICBmaQogCiAgICAgaWYgdGVzdCAtcyBjb25mZGVmcy5oOyB0aGVuCi0gICAgICBjYXQgPDxcX0FTQk9YCi0jIyAtLS0tLS0tLS0tLSAjIworICAgICAgJGFzX2VjaG8gIiMjIC0tLS0tLS0tLS0tICMjCiAjIyBjb25mZGVmcy5oLiAjIwotIyMgLS0tLS0tLS0tLS0gIyMKLV9BU0JPWAorIyMgLS0tLS0tLS0tLS0gIyMiCiAgICAgICBlY2hvCiAgICAgICBjYXQgY29uZmRlZnMuaAogICAgICAgZWNobwpAQCAtMjQ1OSw3ICsyMzk5LDEyIEBACiBhY19zaXRlX2ZpbGUxPU5PTkUKIGFjX3NpdGVfZmlsZTI9Tk9ORQogaWYgdGVzdCAtbiAiJENPTkZJR19TSVRFIjsgdGhlbgotICBhY19zaXRlX2ZpbGUxPSRDT05GSUdfU0lURQorICAjIFdlIGRvIG5vdCB3YW50IGEgUEFUSCBzZWFyY2ggZm9yIGNvbmZpZy5zaXRlLgorICBjYXNlICRDT05GSUdfU0lURSBpbiAjKCgKKyAgICAtKikgIGFjX3NpdGVfZmlsZTE9Li8kQ09ORklHX1NJVEU7OworICAgICovKikgYWNfc2l0ZV9maWxlMT0kQ09ORklHX1NJVEU7OworICAgICopICAgYWNfc2l0ZV9maWxlMT0uLyRDT05GSUdfU0lURTs7CisgIGVzYWMKIGVsaWYgdGVzdCAieCRwcmVmaXgiICE9IHhOT05FOyB0aGVuCiAgIGFjX3NpdGVfZmlsZTE9JHByZWZpeC9zaGFyZS9jb25maWcuc2l0ZQogICBhY19zaXRlX2ZpbGUyPSRwcmVmaXgvZXRjL2NvbmZpZy5zaXRlCkBAIC0yNDc0LDcgKzI0MTksMTEgQEAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGxvYWRpbmcgc2l0ZSBzY3JpcHQgJGFjX3NpdGVfZmlsZSIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBsb2FkaW5nIHNpdGUgc2NyaXB0ICRhY19zaXRlX2ZpbGUiID4mNjt9CiAgICAgc2VkICdzL14vfCAvJyAiJGFjX3NpdGVfZmlsZSIgPiY1Ci0gICAgLiAiJGFjX3NpdGVfZmlsZSIKKyAgICAuICIkYWNfc2l0ZV9maWxlIiBcCisgICAgICB8fCB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KK2FzX2ZuX2Vycm9yICQ/ICJmYWlsZWQgdG8gbG9hZCBzaXRlIHNjcmlwdCAkYWNfc2l0ZV9maWxlCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICBmaQogZG9uZQogCkBAIC0yNTUwLDcgKzI0OTksNyBAQAogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBjaGFuZ2VzIGluIHRoZSBlbnZpcm9ubWVudCBjYW4gY29tcHJvbWlzZSB0aGUgYnVpbGQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGNoYW5nZXMgaW4gdGhlIGVudmlyb25tZW50IGNhbiBjb21wcm9taXNlIHRoZSBidWlsZCIgPiYyO30KLSAgYXNfZm5fZXJyb3IgInJ1biBcYG1ha2UgZGlzdGNsZWFuJyBhbmQvb3IgXGBybSAkY2FjaGVfZmlsZScgYW5kIHN0YXJ0IG92ZXIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJydW4gXGBtYWtlIGRpc3RjbGVhbicgYW5kL29yIFxgcm0gJGNhY2hlX2ZpbGUnIGFuZCBzdGFydCBvdmVyIiAiJExJTkVOTyIgNQogZmkKICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCiAjIyBNYWluIGJvZHkgb2Ygc2NyaXB0LiAjIwpAQCAtMjU2OCwxNiArMjUxNywyMiBAQAogCiBhY19hdXhfZGlyPQogZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KLSAgZm9yIGFjX3QgaW4gaW5zdGFsbC1zaCBpbnN0YWxsLnNoIHNodG9vbDsgZG8KLSAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY190IjsgdGhlbgotICAgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCi0gICAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci8kYWNfdCAtYyIKLSAgICAgIGJyZWFrIDIKLSAgICBmaQotICBkb25lCisgIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgorICAgIGJyZWFrCisgIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLnNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL3NodG9vbCI7IHRoZW4KKyAgICBhY19hdXhfZGlyPSRhY19kaXIKKyAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKKyAgICBicmVhaworICBmaQogZG9uZQogaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gXCIkc3JjZGlyXCIgXCIkc3JjZGlyLy4uXCIgXCIkc3JjZGlyLy4uLy4uXCIiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gXCIkc3JjZGlyXCIgXCIkc3JjZGlyLy4uXCIgXCIkc3JjZGlyLy4uLy4uXCIiICIkTElORU5PIiA1CiBmaQogCiAjIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgdW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwKQEAgLTI1OTEsMjcgKzI1NDYsMjcgQEAKIAogIyBNYWtlIHN1cmUgd2UgY2FuIHJ1biBjb25maWcuc3ViLgogJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiBzdW40ID4vZGV2L251bGwgMj4mMSB8fAotICBhc19mbl9lcnJvciAiY2Fubm90IHJ1biAkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICIkTElORU5PIiA1CiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYnVpbGQgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfYnVpbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9idWlsZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2J1aWxkX2FsaWFzPSRidWlsZF9hbGlhcwogdGVzdCAieCRhY19idWlsZF9hbGlhcyIgPSB4ICYmCiAgIGFjX2J1aWxkX2FsaWFzPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5ndWVzcyJgCiB0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKLSAgYXNfZm5fZXJyb3IgImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBndWVzcyBidWlsZCB0eXBlOyB5b3UgbXVzdCBzcGVjaWZ5IG9uZSIgIiRMSU5FTk8iIDUKIGFjX2N2X2J1aWxkPWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRhY19idWlsZF9hbGlhc2AgfHwKLSAgYXNfZm5fZXJyb3IgIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRhY19idWlsZF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisgIGFzX2ZuX2Vycm9yICQ/ICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkYWNfYnVpbGRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9idWlsZCIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2J1aWxkIiA+JjY7IH0KIGNhc2UgJGFjX2N2X2J1aWxkIGluCiAqLSotKikgOzsKLSopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBidWlsZCIgIiRMSU5FTk8iIDU7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGJ1aWxkIiAiJExJTkVOTyIgNTs7CiBlc2FjCiBidWlsZD0kYWNfY3ZfYnVpbGQKIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKQEAgLTI2MjksMTQgKzI1ODQsMTQgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3N0IHN5c3RlbSB0eXBlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfaG9zdCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2hvc3QrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICJ4JGhvc3RfYWxpYXMiID0geDsgdGhlbgogICBhY19jdl9ob3N0PSRhY19jdl9idWlsZAogZWxzZQogICBhY19jdl9ob3N0PWAkU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICRob3N0X2FsaWFzYCB8fAotICAgIGFzX2ZuX2Vycm9yICIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiAkaG9zdF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICRob3N0X2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKIGZpCiAKIGZpCkBAIC0yNjQ0LDcgKzI1OTksNyBAQAogJGFzX2VjaG8gIiRhY19jdl9ob3N0IiA+JjY7IH0KIGNhc2UgJGFjX2N2X2hvc3QgaW4KICotKi0qKSA7OwotKikgYXNfZm5fZXJyb3IgImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIGhvc3QiICIkTElORU5PIiA1OzsKKyopIGFzX2ZuX2Vycm9yICQ/ICJpbnZhbGlkIHZhbHVlIG9mIGNhbm9uaWNhbCBob3N0IiAiJExJTkVOTyIgNTs7CiBlc2FjCiBob3N0PSRhY19jdl9ob3N0CiBhY19zYXZlX0lGUz0kSUZTOyBJRlM9Jy0nCkBAIC0yNjYyLDE0ICsyNjE3LDE0IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdGFyZ2V0IHN5c3RlbSB0eXBlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHRhcmdldCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl90YXJnZXQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl90YXJnZXQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0ICJ4JHRhcmdldF9hbGlhcyIgPSB4OyB0aGVuCiAgIGFjX2N2X3RhcmdldD0kYWNfY3ZfaG9zdAogZWxzZQogICBhY19jdl90YXJnZXQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJHRhcmdldF9hbGlhc2AgfHwKLSAgICBhc19mbl9lcnJvciAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJHRhcmdldF9hbGlhcyBmYWlsZWQiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViICR0YXJnZXRfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQogZmkKIAogZmkKQEAgLTI2NzcsNyArMjYzMiw3IEBACiAkYXNfZWNobyAiJGFjX2N2X3RhcmdldCIgPiY2OyB9CiBjYXNlICRhY19jdl90YXJnZXQgaW4KICotKi0qKSA7OwotKikgYXNfZm5fZXJyb3IgImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIHRhcmdldCIgIiRMSU5FTk8iIDU7OworKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgdmFsdWUgb2YgY2Fub25pY2FsIHRhcmdldCIgIiRMSU5FTk8iIDU7OwogZXNhYwogdGFyZ2V0PSRhY19jdl90YXJnZXQKIGFjX3NhdmVfSUZTPSRJRlM7IElGUz0nLScKQEAgLTI3MDQsNiArMjY1OSwxMTAgQEAKIAogLiAke3NyY2Rpcn0vY29uZmlndXJlLmhvc3QKIAorCisgICAjIFskXUAgaXMgdW5zYWJsZSBpbiAyLjYwKyBidXQgZWFybGllciBhdXRvY29uZiBoYWQgbm8gYWNfY29uZmlndXJlX2FyZ3MKKyAgIGlmIHRlc3QgIiR7YWNfY29uZmlndXJlX2FyZ3Mrc2V0fSIgIT0gInNldCIgOyB0aGVuCisgICAgICBhY19jb25maWd1cmVfYXJncz0KKyAgICAgIGZvciBhY19hcmcgaW4gJHsxKyIkQCJ9OyBkbworICAgICAgICAgYWNfY29uZmlndXJlX2FyZ3M9IiRhY19jb25maWd1cmVfYXJncyAnJGFjX2FyZyciCisgICAgICBkb25lCisgICBmaQorCisjIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCithbV9hdXhfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCisKKworYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWJ1aWxkZGlyIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2J1aWxkZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfYnVpbGRkaXI7IGF4X2VuYWJsZV9idWlsZGRpcj0iJGVuYWJsZXZhbCIKK2Vsc2UKKyAgYXhfZW5hYmxlX2J1aWxkZGlyPSJhdXRvIgorZmkKKworaWYgdGVzdCAiLiRhY19zcmNkaXJfZGVmYXVsdGVkIiAhPSAiLm5vIiA7IHRoZW4KK2lmIHRlc3QgIi4kc3JjZGlyIiA9ICIuLiIgOyB0aGVuCisgIGlmIHRlc3QgLWYgY29uZmlnLnN0YXR1cyA7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHRvcGxldmVsIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQuLi4gc2tpcHBpbmcgc3ViZGlyIGJ1aWxkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHRvcGxldmVsIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQuLi4gc2tpcHBpbmcgc3ViZGlyIGJ1aWxkIiA+JjY7fQorICBlbHNlCisgICAgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi4iICAmJiBheF9lbmFibGVfYnVpbGRkaXI9Ii4iCisgICAgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi5ubyIgICYmIGF4X2VuYWJsZV9idWlsZGRpcj0iLiIKKyAgICB0ZXN0ICIuJFRBUkdFVCIgPSAiLiIgJiYgVEFSR0VUPSIkdGFyZ2V0IgorICAgIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuYXV0byIgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIkVEFSR0VUIgorICAgIGlmIHRlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiAhPSAiLi4iIDsgdGhlbiAgICAjIHdlIGtub3cgd2hlcmUgdG8gZ28gYW5kCisgICAgICBhc19kaXI9JGF4X2VuYWJsZV9idWlsZGRpcjsgYXNfZm5fbWtkaXJfcAorICAgICAgZWNobyBfXy4kYXhfZW5hYmxlX2J1aWxkZGlyLl9fID4gJGF4X2VuYWJsZV9idWlsZGRpci9jb25mdGVzdC50bXAKKyAgICAgIGNkICRheF9lbmFibGVfYnVpbGRkaXIKKyAgICAgIGlmIGdyZXAgX18uJGF4X2VuYWJsZV9idWlsZGRpci5fXyBjb25mdGVzdC50bXAgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgcm0gY29uZnRlc3QudG1wCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciBcIi4vJGF4X2VuYWJsZV9idWlsZGRpclwiIiA+JjUKKyRhc19lY2hvICJjb250aW51ZSBjb25maWd1cmUgaW4gZGVmYXVsdCBidWlsZGRpciBcIi4vJGF4X2VuYWJsZV9idWlsZGRpclwiIiA+JjY7IH0KKyAgICAgIGVsc2UKKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjaGFuZ2UgdG8gZGVmYXVsdCBidWlsZGRpciBcIi4vJGF4X2VuYWJsZV9idWlsZGRpclwiIiAiJExJTkVOTyIgNQorICAgICAgZmkKKyAgICAgIHNyY2Rpcj1gZWNobyAiJGF4X2VuYWJsZV9idWlsZGRpciIgfAorICAgICAgICAgICAgICBzZWQgLWUgJ3MsXlwuLywsO3MsW14vXSQsJi8sO3MsW14vXSovLC4uLyxnO3MsWy9dJCwsOydgCisgICAgICAjIGdvaW5nIHRvIHJlc3RhcnQgZnJvbSBzdWJkaXJlY3RvcnkgbG9jYXRpb24KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25maWcubG9nICAgJiYgbXYgJHNyY2Rpci9jb25maWcubG9nICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZkZWZzLmggICAmJiBtdiAkc3JjZGlyL2NvbmZkZWZzLmggICAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZnRlc3QubG9nICYmIG12ICRzcmNkaXIvY29uZnRlc3QubG9nIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci8kY2FjaGVfZmlsZSAgJiYgbXYgJHNyY2Rpci8kY2FjaGVfZmlsZSAgLgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IC4uLi5leGVjICRTSEVMTCAkc3JjZGlyLyQwIFwiLS1zcmNkaXI9JHNyY2RpclwiIFwiLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpclwiICR7MStcIiRAXCJ9IiA+JjUKKyRhc19lY2hvICIuLi4uZXhlYyAkU0hFTEwgJHNyY2Rpci8kMCBcIi0tc3JjZGlyPSRzcmNkaXJcIiBcIi0tZW5hYmxlLWJ1aWxkZGlyPSRheF9lbmFibGVfYnVpbGRkaXJcIiAkezErXCIkQFwifSIgPiY2OyB9CisgICAgICBjYXNlICIkMCIgaW4gIyByZXN0YXJ0CisgICAgICAgL1xcKikgZXZhbCAkU0hFTEwgIickMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpciciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgICopIGV2YWwgJFNIRUxMICInJHNyY2Rpci8kMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JGF4X2VuYWJsZV9idWlsZGRpciciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgZXNhYyA7IGV4aXQgJD8KKyAgICBmaQorICBmaQorZmkgZmkKK3Rlc3QgIi4kYXhfZW5hYmxlX2J1aWxkZGlyIiA9ICIuYXV0byIgJiYgYXhfZW5hYmxlX2J1aWxkZGlyPSIuIgorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnc2VkIHNlZCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgZ3NlZCBzZWQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9heF9lbmFibGVfYnVpbGRkaXJfc2VkPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX2F4X2VuYWJsZV9idWlsZGRpcl9zZWQiICYmIGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZD0ic2VkIgorICA7OworZXNhYworZmkKK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9JGFjX2N2X3BhdGhfYXhfZW5hYmxlX2J1aWxkZGlyX3NlZAoraWYgdGVzdCAtbiAiJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgPiY1CiskYXNfZWNobyAiJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcj0iJGFtX2F1eF9kaXIiCithY19jb25maWdfY29tbWFuZHM9IiRhY19jb25maWdfY29tbWFuZHMgYnVpbGRpciIKKworCiBhbV9fYXBpX3ZlcnNpb249JzEuMTEnCiAKICMgRmluZCBhIGdvb2QgaW5zdGFsbCBwcm9ncmFtLiAgV2UgcHJlZmVyIGEgQyBwcm9ncmFtIChmYXN0ZXIpLApAQCAtMjcyMyw3ICsyNzgyLDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgQlNELWNvbXBhdGlibGUgaW5zdGFsbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBCU0QtY29tcGF0aWJsZSBpbnN0YWxsLi4uICIgPiY2OyB9CiBpZiB0ZXN0IC16ICIkSU5TVEFMTCI7IHRoZW4KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9pbnN0YWxsK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcGF0aF9pbnN0YWxsKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgpAQCAtMjgxMCwxMSArMjg2OSwxMSBAQAogJwogY2FzZSBgcHdkYCBpbgogICAqW1xcXCJcI1wkXCZcJ1xgJGFtX2xmXSopCi0gICAgYXNfZm5fZXJyb3IgInVuc2FmZSBhYnNvbHV0ZSB3b3JraW5nIGRpcmVjdG9yeSBuYW1lIiAiJExJTkVOTyIgNTs7CisgICAgYXNfZm5fZXJyb3IgJD8gInVuc2FmZSBhYnNvbHV0ZSB3b3JraW5nIGRpcmVjdG9yeSBuYW1lIiAiJExJTkVOTyIgNTs7CiBlc2FjCiBjYXNlICRzcmNkaXIgaW4KICAgKltcXFwiXCNcJFwmXCdcYCRhbV9sZlwgXAldKikKLSAgICBhc19mbl9lcnJvciAidW5zYWZlIHNyY2RpciB2YWx1ZTogXGAkc3JjZGlyJyIgIiRMSU5FTk8iIDU7OworICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bnNhZmUgc3JjZGlyIHZhbHVlOiBcYCRzcmNkaXInIiAiJExJTkVOTyIgNTs7CiBlc2FjCiAKICMgRG8gYHNldCcgaW4gYSBzdWJzaGVsbCBzbyB3ZSBkb24ndCBjbG9iYmVyIHRoZSBjdXJyZW50IHNoZWxsJ3MKQEAgLTI4MzYsNyArMjg5NSw3IEBACiAgICAgICAjIGlmLCBmb3IgaW5zdGFuY2UsIENPTkZJR19TSEVMTCBpcyBiYXNoIGFuZCBpdCBpbmhlcml0cyBhCiAgICAgICAjIGJyb2tlbiBscyBhbGlhcyBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIFRoaXMgaGFzIGFjdHVhbGx5CiAgICAgICAjIGhhcHBlbmVkLiAgU3VjaCBhIHN5c3RlbSBjb3VsZCBub3QgYmUgY29uc2lkZXJlZCAic2FuZSIuCi0gICAgICBhc19mbl9lcnJvciAibHMgLXQgYXBwZWFycyB0byBmYWlsLiAgTWFrZSBzdXJlIHRoZXJlIGlzIG5vdCBhIGJyb2tlbgorICAgICAgYXNfZm5fZXJyb3IgJD8gImxzIC10IGFwcGVhcnMgdG8gZmFpbC4gIE1ha2Ugc3VyZSB0aGVyZSBpcyBub3QgYSBicm9rZW4KIGFsaWFzIGluIHlvdXIgZW52aXJvbm1lbnQiICIkTElORU5PIiA1CiAgICBmaQogCkBAIC0yODQ2LDcgKzI5MDUsNyBAQAogICAgIyBPay4KICAgIDoKIGVsc2UKLSAgIGFzX2ZuX2Vycm9yICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyEKKyAgIGFzX2ZuX2Vycm9yICQ/ICJuZXdseSBjcmVhdGVkIGZpbGUgaXMgb2xkZXIgdGhhbiBkaXN0cmlidXRlZCBmaWxlcyEKIENoZWNrIHlvdXIgc3lzdGVtIGNsb2NrIiAiJExJTkVOTyIgNQogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQpAQCAtMjg2MSw5ICsyOTIwLDYgQEAKIGFjX3NjcmlwdD0ncy9bXFwkXS8mJi9nO3MvO3MseCx4LCQvLycKIHByb2dyYW1fdHJhbnNmb3JtX25hbWU9YCRhc19lY2hvICIkcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSIgfCBzZWQgIiRhY19zY3JpcHQiYAogCi0jIGV4cGFuZCAkYWNfYXV4X2RpciB0byBhbiBhYnNvbHV0ZSBwYXRoCi1hbV9hdXhfZGlyPWBjZCAkYWNfYXV4X2RpciAmJiBwd2RgCi0KIGlmIHRlc3QgeCIke01JU1NJTkcrc2V0fSIgIT0geHNldDsgdGhlbgogICBjYXNlICRhbV9hdXhfZGlyIGluCiAgICpcICogfCAqXAkqKQpAQCAtMjkwMCw3ICsyOTU2LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCkBAIC0yOTQwLDcgKzI5OTYsNyBAQAogc2V0IGR1bW15IHN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuCkBAIC0yOTkzLDcgKzMwNDksNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYSB0aHJlYWQtc2FmZSBta2RpciAtcCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYSB0aHJlYWQtc2FmZSBta2RpciAtcC4uLiAiID4mNjsgfQogaWYgdGVzdCAteiAiJE1LRElSX1AiOyB0aGVuCi0gIGlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9ta2RpcitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGlmICR7YWNfY3ZfcGF0aF9ta2Rpcis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTMwNDQsNyArMzEwMCw3IEBACiBzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0FXSytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfQVdLKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJEFXSyI7IHRoZW4KQEAgLTMwODQsNyArMzE0MCw3IEBACiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICR7TUFLRS1tYWtlfSBzZXRzIFwkKE1BS0UpLi4uICIgPiY2OyB9CiBzZXQgeCAke01BS0UtbWFrZX0KIGFjX21ha2U9YCRhc19lY2hvICIkMiIgfCBzZWQgJ3MvKy9wL2c7IHMvW15hLXpBLVowLTlfXS9fL2cnYAotaWYgeyBhc192YXI9YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0OyBldmFsICJ0ZXN0IFwiXCR7JGFzX3ZhcitzZXR9XCIgPSBzZXQiOyB9OyB0aGVuIDoKK2lmIGV2YWwgXCR7YWNfY3ZfcHJvZ19tYWtlXyR7YWNfbWFrZX1fc2V0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0ID5jb25mdGVzdC5tYWtlIDw8XF9BQ0VPRgpAQCAtMzA5Miw3ICszMTQ4LDcgQEAKIGFsbDoKIAlAZWNobyAnQEBAJSUlPSQoTUFLRSk9QEBAJSUlJwogX0FDRU9GCi0jIEdOVSBtYWtlIHNvbWV0aW1lcyBwcmludHMgIm1ha2VbMV06IEVudGVyaW5nLi4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KKyMgR05VIG1ha2Ugc29tZXRpbWVzIHByaW50cyAibWFrZVsxXTogRW50ZXJpbmcgLi4uIiwgd2hpY2ggd291bGQgY29uZnVzZSB1cy4KIGNhc2UgYCR7TUFLRS1tYWtlfSAtZiBjb25mdGVzdC5tYWtlIDI+L2Rldi9udWxsYCBpbgogICAqQEBAJSUlPT8qPUBAQCUlJSopCiAgICAgZXZhbCBhY19jdl9wcm9nX21ha2VfJHthY19tYWtlfV9zZXQ9eWVzOzsKQEAgLTMxMjYsNyArMzE4Miw3IEBACiAgIGFtX19pc3JjPScgLUkkKHNyY2RpciknCiAgICMgdGVzdCB0byBzZWUgaWYgc3JjZGlyIGFscmVhZHkgY29uZmlndXJlZAogICBpZiB0ZXN0IC1mICRzcmNkaXIvY29uZmlnLnN0YXR1czsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJzb3VyY2UgZGlyZWN0b3J5IGFscmVhZHkgY29uZmlndXJlZDsgcnVuIFwibWFrZSBkaXN0Y2xlYW5cIiB0aGVyZSBmaXJzdCIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAic291cmNlIGRpcmVjdG9yeSBhbHJlYWR5IGNvbmZpZ3VyZWQ7IHJ1biBcIm1ha2UgZGlzdGNsZWFuXCIgdGhlcmUgZmlyc3QiICIkTElORU5PIiA1CiAgIGZpCiBmaQogCkBAIC0zMTQyLDcgKzMxOTgsNyBAQAogCiAjIERlZmluZSB0aGUgaWRlbnRpdHkgb2YgdGhlIHBhY2thZ2UuCiAgUEFDS0FHRT0nbGliZmZpJwotIFZFUlNJT049JzMuMC4xMHJjMCcKKyBWRVJTSU9OPSczLjAuMTEnCiAKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgpAQCAtMzE3MiwxMSArMzIyOCwxMSBAQAogCiAjIFdlIG5lZWQgYXdrIGZvciB0aGUgImNoZWNrIiB0YXJnZXQuICBUaGUgc3lzdGVtICJhd2siIGlzIGJhZCBvbgogIyBzb21lIHBsYXRmb3Jtcy4KLSMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyMgQWx3YXlzIGRlZmluZSBBTVRBUiBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gIFllcywgaXQncyBzdGlsbCB1c2VkCisjIGluIHRoZSB3aWxkIDotKCAgV2Ugc2hvdWxkIGZpbmQgYSBwcm9wZXIgd2F5IHRvIGRlcHJlY2F0ZSBpdCAuLi4KK0FNVEFSPSckJHtUQVItdGFyfScKIAotQU1UQVI9JHtBTVRBUi0iJHthbV9taXNzaW5nX3J1bn10YXIifQotCi1hbV9fdGFyPScke0FNVEFSfSBjaG9mIC0gIiQkdGFyZGlyIic7IGFtX191bnRhcj0nJHtBTVRBUn0geGYgLScKK2FtX190YXI9JyQke1RBUi10YXJ9IGNob2YgLSAiJCR0YXJkaXIiJyBhbV9fdW50YXI9JyQke1RBUi10YXJ9IHhmIC0nCiAKIAogCkBAIC0zMTg3LDkgKzMyNDMsMTIgQEAKICMgV2UgbXVzdCBmb3JjZSBDQyB0byAvbm90LyBiZSBwcmVjaW91cyB2YXJpYWJsZXM7IG90aGVyd2lzZQogIyB0aGUgd3JvbmcsIG5vbi1tdWx0aWxpYi1hZGp1c3RlZCB2YWx1ZSB3aWxsIGJlIHVzZWQgaW4gbXVsdGlsaWJzLgogIyBBcyBhIHNpZGUgZWZmZWN0LCB3ZSBoYXZlIHRvIHN1YnN0IENGTEFHUyBvdXJzZWx2ZXMuCisjIEFsc28gc2F2ZSBhbmQgcmVzdG9yZSBDRkxBR1MsIHNpbmNlIEFDX1BST0dfQ0Mgd2lsbCBjb21lIHVwIHdpdGgKKyMgZGVmYXVsdHMgb2YgaXRzIG93biBpZiBub25lIGFyZSBwcm92aWRlZC4KIAogCiAKK3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMzIwMCw3ICszMjU5LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWdjYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzI0MCw3ICszMjk5LDcgQEAKIHNldCBkdW1teSBnY2M7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X0NDK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DQys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9DQyI7IHRoZW4KQEAgLTMyOTMsNyArMzM1Miw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1jYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzMzMyw3ICszMzkyLDcgQEAKIHNldCBkdW1teSBjYzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzM5Miw3ICszNDUxLDcgQEAKIHNldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJENDIjsgdGhlbgpAQCAtMzQzNiw3ICszNDk1LDcgQEAKIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQ0Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0NDKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0NDIjsgdGhlbgpAQCAtMzQ5MCw4ICszNTQ5LDggQEAKIAogdGVzdCAteiAiJENDIiAmJiB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIEMgY29tcGlsZXIgZm91bmQgaW4gXCRQQVRICitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogCiAjIFByb3ZpZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29tcGlsZXIuCiAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZXJzaW9uIiA+JjUKQEAgLTM2MDUsOSArMzY2NCw4IEBACiAKIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQoteyBhc19mbl9zZXRfc3RhdHVzIDc3Ci1hc19mbl9lcnJvciAiQyBjb21waWxlciBjYW5ub3QgY3JlYXRlIGV4ZWN1dGFibGVzCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH07IH0KK2FzX2ZuX2Vycm9yIDc3ICJDIGNvbXBpbGVyIGNhbm5vdCBjcmVhdGUgZXhlY3V0YWJsZXMKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQogJGFzX2VjaG8gInllcyIgPiY2OyB9CkBAIC0zNjQ5LDggKzM3MDcsOCBAQAogZWxzZQogICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2YgZXhlY3V0YWJsZXM6IGNhbm5vdCBjb21waWxlIGFuZCBsaW5rCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogZmkKIHJtIC1mIGNvbmZ0ZXN0IGNvbmZ0ZXN0JGFjX2N2X2V4ZWV4dAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9leGVleHQiID4mNQpAQCAtMzcwNyw5ICszNzY1LDkgQEAKICAgICBlbHNlCiAJeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciAiY2Fubm90IHJ1biBDIGNvbXBpbGVkIHByb2dyYW1zLgorYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBydW4gQyBjb21waWxlZCBwcm9ncmFtcy4KIElmIHlvdSBtZWFudCB0byBjcm9zcyBjb21waWxlLCB1c2UgXGAtLWhvc3QnLgotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9CitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgIGZpCiAgIGZpCiBmaQpAQCAtMzcyMCw3ICszNzc4LDcgQEAKIGFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X29iamV4dCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X29iamV4dCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTM3NjAsOCArMzgxOCw4IEBACiAKIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQogJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQotYXNfZm5fZXJyb3IgImNhbm5vdCBjb21wdXRlIHN1ZmZpeCBvZiBvYmplY3QgZmlsZXM6IGNhbm5vdCBjb21waWxlCi1TZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzLiIgIiRMSU5FTk8iIDU7IH0KK2FzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY29tcHV0ZSBzdWZmaXggb2Ygb2JqZWN0IGZpbGVzOiBjYW5ub3QgY29tcGlsZQorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGZpCiBybSAtZiBjb25mdGVzdC4kYWNfY3Zfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIGZpCkBAIC0zNzcxLDcgKzM4MjksNyBAQAogYWNfb2JqZXh0PSRPQkpFWFQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB3ZSBhcmUgdXNpbmcgdGhlIEdOVSBDIGNvbXBpbGVyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgd2UgYXJlIHVzaW5nIHRoZSBHTlUgQyBjb21waWxlci4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9jX2NvbXBpbGVyX2dudStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2NfY29tcGlsZXJfZ251Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMzgwOCw3ICszODY2LDcgQEAKIGFjX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAkQ0MgYWNjZXB0cyAtZyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyICRDQyBhY2NlcHRzIC1nLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfZytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfY2NfZys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX3NhdmVfY193ZXJyb3JfZmxhZz0kYWNfY193ZXJyb3JfZmxhZwpAQCAtMzg4Niw3ICszOTQ0LDcgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkQ0Mgb3B0aW9uIHRvIGFjY2VwdCBJU08gQzg5Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfY2NfYzg5K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19jY19jODkrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jdl9wcm9nX2NjX2M4OT1ubwpAQCAtNDAzMiw2ICs0MDkwLDcgQEAKIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBhbV9kZXBjb21wPSIkYWNfYXV4X2Rpci9kZXBjb21wIgogICBBTURFUEJBQ0tTTEFTSD0nXCcKKyAgYW1fX25vZGVwPSdfbm8nCiBmaQogIGlmIHRlc3QgIngkZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmciICE9IHhubzsgdGhlbgogICBBTURFUF9UUlVFPQpAQCAtNDA0Nyw3ICs0MTA2LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthbV9jdl9DQ19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FtX2N2X0NDX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAteiAiJEFNREVQX1RSVUUiICYmIHRlc3QgLWYgIiRhbV9kZXBjb21wIjsgdGhlbgpAQCAtNDA1Niw2ICs0MTE1LDcgQEAKICAgIyBpbnN0YW5jZSBpdCB3YXMgcmVwb3J0ZWQgdGhhdCBvbiBIUC1VWCB0aGUgZ2NjIHRlc3Qgd2lsbCBlbmQgdXAKICAgIyBtYWtpbmcgYSBkdW1teSBmaWxlIG5hbWVkIGBEJyAtLSBiZWNhdXNlIGAtTUQnIG1lYW5zIGBwdXQgdGhlIG91dHB1dAogICAjIGluIEQnLgorICBybSAtcmYgY29uZnRlc3QuZGlyCiAgIG1rZGlyIGNvbmZ0ZXN0LmRpcgogICAjIENvcHkgZGVwY29tcCB0byBzdWJkaXIgYmVjYXVzZSBvdGhlcndpc2Ugd2Ugd29uJ3QgZmluZCBpdCBpZiB3ZSdyZQogICAjIHVzaW5nIGEgcmVsYXRpdmUgZGlyZWN0b3J5LgpAQCAtNDExNSw3ICs0MTc1LDcgQEAKIAlicmVhawogICAgICAgZmkKICAgICAgIDs7Ci0gICAgbXN2aXN1YWxjcHAgfCBtc3ZjbXN5cykKKyAgICBtc3ZjNyB8IG1zdmM3bXN5cyB8IG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCiAgICAgICAjIFRoaXMgY29tcGlsZXIgd29uJ3QgZ3JvayBgLWMgLW8nLCBidXQgYWxzbywgdGhlIG1pbnVzbyB0ZXN0IGhhcwogICAgICAgIyBub3QgcnVuIHlldC4gIFRoZXNlIGRlcG1vZGVzIGFyZSBsYXRlIGVub3VnaCBpbiB0aGUgZ2FtZSwgYW5kCiAgICAgICAjIHNvIHdlYWsgdGhhdCB0aGVpciBmdW5jdGlvbmluZyBzaG91bGQgbm90IGJlIGltcGFjdGVkLgpAQCAtNDE3MCw2ICs0MjMwLDcgQEAKIGZpCiAKIAorQ0ZMQUdTPSRzYXZlX0NGTEFHUwogCiAKIApAQCAtNDE4Niw3ICs0MjQ3LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkZXBlbmRlbmN5IHN0eWxlIG9mICRkZXBjYy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthbV9jdl9DQ0FTX2RlcGVuZGVuY2llc19jb21waWxlcl90eXBlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YW1fY3ZfQ0NBU19kZXBlbmRlbmNpZXNfY29tcGlsZXJfdHlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRBTURFUF9UUlVFIiAmJiB0ZXN0IC1mICIkYW1fZGVwY29tcCI7IHRoZW4KQEAgLTQxOTUsNiArNDI1Niw3IEBACiAgICMgaW5zdGFuY2UgaXQgd2FzIHJlcG9ydGVkIHRoYXQgb24gSFAtVVggdGhlIGdjYyB0ZXN0IHdpbGwgZW5kIHVwCiAgICMgbWFraW5nIGEgZHVtbXkgZmlsZSBuYW1lZCBgRCcgLS0gYmVjYXVzZSBgLU1EJyBtZWFucyBgcHV0IHRoZSBvdXRwdXQKICAgIyBpbiBEJy4KKyAgcm0gLXJmIGNvbmZ0ZXN0LmRpcgogICBta2RpciBjb25mdGVzdC5kaXIKICAgIyBDb3B5IGRlcGNvbXAgdG8gc3ViZGlyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIHdvbid0IGZpbmQgaXQgaWYgd2UncmUKICAgIyB1c2luZyBhIHJlbGF0aXZlIGRpcmVjdG9yeS4KQEAgLTQyNTIsNyArNDMxNCw3IEBACiAJYnJlYWsKICAgICAgIGZpCiAgICAgICA7OwotICAgIG1zdmlzdWFsY3BwIHwgbXN2Y21zeXMpCisgICAgbXN2YzcgfCBtc3ZjN21zeXMgfCBtc3Zpc3VhbGNwcCB8IG1zdmNtc3lzKQogICAgICAgIyBUaGlzIGNvbXBpbGVyIHdvbid0IGdyb2sgYC1jIC1vJywgYnV0IGFsc28sIHRoZSBtaW51c28gdGVzdCBoYXMKICAgICAgICMgbm90IHJ1biB5ZXQuICBUaGVzZSBkZXBtb2RlcyBhcmUgbGF0ZSBlbm91Z2ggaW4gdGhlIGdhbWUsIGFuZAogICAgICAgIyBzbyB3ZWFrIHRoYXQgdGhlaXIgZnVuY3Rpb25pbmcgc2hvdWxkIG5vdCBiZSBpbXBhY3RlZC4KQEAgLTQzMTYsNyArNDM3OCw3IEBACiBmaQogc2V0IGR1bW15ICRDQzsgYWNfY2M9YCRhc19lY2hvICIkMiIgfAogCQkgICAgICBzZWQgJ3MvW15hLXpBLVowLTlfXS9fL2c7cy9eWzAtOV0vXy8nYAotaWYgeyBhc192YXI9YWNfY3ZfcHJvZ19jY18ke2FjX2NjfV9jX287IGV2YWwgInRlc3QgXCJcJHskYXNfdmFyK3NldH1cIiA9IHNldCI7IH07IHRoZW4gOgoraWYgZXZhbCBcJHthY19jdl9wcm9nX2NjXyR7YWNfY2N9X2Nfbys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTQ0NDEsOCArNDUwMyw4IEBACiAKIAogCi1tYWNyb192ZXJzaW9uPScyLjIuNicKLW1hY3JvX3JldmlzaW9uPScxLjMwMTInCittYWNyb192ZXJzaW9uPScyLjQuMicKK21hY3JvX3JldmlzaW9uPScxLjMzMzcnCiAKIAogCkBAIC00NDU4LDkgKzQ1MjAsNzggQEAKIAogbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCiAKKyMgQmFja3NsYXNoaWZ5IG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4KKyMgZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKKworIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKKworRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCitpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50IC1yIC0tJworZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgRUNITz0ncHJpbnRmICVzXG4nCitlbHNlCisgICMgVXNlIHRoaXMgZnVuY3Rpb24gYXMgYSBmYWxsYmFjayB0aGF0IGFsd2F5cyB3b3Jrcy4KKyAgZnVuY19mYWxsYmFja19lY2hvICgpCisgIHsKKyAgICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorJDEKK19MVEVDSE9fRU9GJworICB9CisgIEVDSE89J2Z1bmNfZmFsbGJhY2tfZWNobycKK2ZpCisKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiIgorfQorCitjYXNlICIkRUNITyIgaW4KKyAgcHJpbnRmKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHByaW50ZiIgPiY1CiskYXNfZWNobyAicHJpbnRmIiA+JjY7IH0gOzsKKyAgcHJpbnQqKSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogcHJpbnQgLXIiID4mNQorJGFzX2VjaG8gInByaW50IC1yIiA+JjY7IH0gOzsKKyAgKikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IGNhdCIgPiY1CiskYXNfZWNobyAiY2F0IiA+JjY7IH0gOzsKK2VzYWMKKworCisKKworCisKKworCisKKworCisKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9TRUQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX1NFRCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICAgICAgICAgICBhY19zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCkBAIC00NTE1LDcgKzQ2NDYsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX1NFRCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBzZWQgY291bGQgYmUgZm91bmQgaW4gXCRQQVRIIiAiJExJTkVOTyIgNQorICAgIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfU0VEPSRTRUQKQEAgLTQ1NDIsNyArNDY3Myw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdyZXAgdGhhdCBoYW5kbGVzIGxvbmcgbGluZXMgYW5kIC1lIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBncmVwIHRoYXQgaGFuZGxlcyBsb25nIGxpbmVzIGFuZCAtZS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wYXRoX0dSRVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX0dSRVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC16ICIkR1JFUCI7IHRoZW4KQEAgLTQ1OTEsNyArNDcyMiw3IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKICAgaWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKICAgZmkKIGVsc2UKICAgYWNfY3ZfcGF0aF9HUkVQPSRHUkVQCkBAIC00NjA1LDcgKzQ3MzYsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBlZ3JlcCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZWdyZXAuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcGF0aF9FR1JFUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfRUdSRVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiBlY2hvIGEgfCAkR1JFUCAtRSAnKGF8YiknID4vZGV2L251bGwgMj4mMQpAQCAtNDY1Nyw3ICs0Nzg4LDcgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9FR1JFUCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBlZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgZWdyZXAgY291bGQgYmUgZm91bmQgaW4gJFBBVEgkUEFUSF9TRVBBUkFUT1IvdXNyL3hwZzQvYmluIiAiJExJTkVOTyIgNQogICBmaQogZWxzZQogICBhY19jdl9wYXRoX0VHUkVQPSRFR1JFUApAQCAtNDY3Miw3ICs0ODAzLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZmdyZXAiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGZncmVwLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3BhdGhfRkdSRVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wYXRoX0ZHUkVQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgZWNobyAnYWIqYycgfCAkR1JFUCAtRiAnYWIqYycgPi9kZXYvbnVsbCAyPiYxCkBAIC00NzI0LDcgKzQ4NTUsNyBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX0ZHUkVQIjsgdGhlbgotICAgIGFzX2ZuX2Vycm9yICJubyBhY2NlcHRhYmxlIGZncmVwIGNvdWxkIGJlIGZvdW5kIGluICRQQVRIJFBBVEhfU0VQQVJBVE9SL3Vzci94cGc0L2JpbiIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAibm8gYWNjZXB0YWJsZSBmZ3JlcCBjb3VsZCBiZSBmb3VuZCBpbiAkUEFUSCRQQVRIX1NFUEFSQVRPUi91c3IveHBnNC9iaW4iICIkTElORU5PIiA1CiAgIGZpCiBlbHNlCiAgIGFjX2N2X3BhdGhfRkdSRVA9JEZHUkVQCkBAIC00ODAzLDcgKzQ5MzQsNyBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBub24tR05VIGxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBub24tR05VIGxkLi4uICIgPiY2OyB9CiBmaQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX0xEK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9MRCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KQEAgLTQ4NDAsMTAgKzQ5NzEsMTAgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotdGVzdCAteiAiJExEIiAmJiBhc19mbl9lcnJvciAibm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEgiICIkTElORU5PIiA1Cit0ZXN0IC16ICIkTEQiICYmIGFzX2ZuX2Vycm9yICQ/ICJubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19nbnVfbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2dudV9sZCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KQEAgLTQ4NzAsNyArNTAwMSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEJTRC0gb3IgTVMtY29tcGF0aWJsZSBuYW1lIGxpc3RlciAobm0pIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIgKG5tKS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9wYXRoX05NK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9OTSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiROTSI7IHRoZW4KQEAgLTQ5MjMsMTQgKzUwNTQsMTcgQEAKICAgTk09IiRsdF9jdl9wYXRoX05NIgogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotICBmb3IgYWNfcHJvZyBpbiAiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiCisgIGlmIHRlc3QgLW4gIiREVU1QQklOIjsgdGhlbiA6CisgICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGVsc2UKKyAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluIGR1bXBiaW4gImxpbmsgLWR1bXAiCiAgIGRvCiAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0RVTVBCSU4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0RVTVBCSU4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4KQEAgLTQ5NjgsMTMgKzUxMDIsMTMgQEAKIGZpCiBpZiB0ZXN0IC16ICIkRFVNUEJJTiI7IHRoZW4KICAgYWNfY3RfRFVNUEJJTj0kRFVNUEJJTgotICBmb3IgYWNfcHJvZyBpbiAiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiCisgIGZvciBhY19wcm9nIGluIGR1bXBiaW4gImxpbmsgLWR1bXAiCiBkbwogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRFVNUEJJTitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfRFVNUEJJTis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9EVU1QQklOIjsgdGhlbgpAQCAtNTAyMyw2ICs1MTU3LDE1IEBACiAgIGZpCiBmaQogCisgICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICAqQ09GRiopCisgICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIERVTVBCSU49OgorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCiAKICAgaWYgdGVzdCAiJERVTVBCSU4iICE9ICI6IjsgdGhlbgogICAgIE5NPSIkRFVNUEJJTiIKQEAgLTUwMzcsMTggKzUxODAsMTggQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0aGUgbmFtZSBsaXN0ZXIgKCROTSkgaW50ZXJmYWNlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHRoZSBuYW1lIGxpc3RlciAoJE5NKSBpbnRlcmZhY2UuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3Zfbm1faW50ZXJmYWNlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfbm1faW50ZXJmYWNlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJCU0Qgbm0iCiAgIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29uZnRlc3QuJGFjX2V4dAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6NTA0NTogJGFjX2NvbXBpbGVcIiIgPiY1KQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGFjX2NvbXBpbGVcIiIgPiY1KQogICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6NTA0ODogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JjUpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mNSkKICAgKGV2YWwgIiROTSBcImNvbmZ0ZXN0LiRhY19vYmpleHRcIiIgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0gIChldmFsIGVjaG8gIlwiXCRhc19tZTo1MDUxOiBvdXRwdXRcIiIgPiY1KQorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogb3V0cHV0XCIiID4mNSkKICAgY2F0IGNvbmZ0ZXN0Lm91dCA+JjUKICAgaWYgJEdSRVAgJ0V4dGVybmFsLipzb21lX3ZhcmlhYmxlJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KICAgICBsdF9jdl9ubV9pbnRlcmZhY2U9Ik1TIGR1bXBiaW4iCkBAIC01MDcyLDcgKzUyMTUsNyBAQAogIyBmaW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3N5c19tYXhfY21kX2xlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X3N5c19tYXhfY21kX2xlbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICAgaT0wCkBAIC01MTA1LDYgKzUyNDgsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKICAgICA7OwogCisgIG1pbnQqKQorICAgICMgT24gTWlOVCB0aGlzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCiAgIGFtaWdhb3MqKQogICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KICAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgpAQCAtNTEzMCw2ICs1Mjc4LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE5NjYwOAogICAgIDs7CiAKKyAgb3MyKikKKyAgICAjIFRoZSB0ZXN0IHRha2VzIGEgbG9uZyB0aW1lIG9uIE9TLzIuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTIKKyAgICA7OworCiAgIG9zZiopCiAgICAgIyBEci4gSGFucyBFa2tlaGFyZCBQbGVzc2VyIHJlcG9ydHMgc2VlaW5nIGEga2VybmVsIHBhbmljIHJ1bm5pbmcgY29uZmlndXJlCiAgICAgIyBkdWUgdG8gdGhpcyB0ZXN0IHdoZW4gZXhlY19kaXNhYmxlX2FyZ19saW1pdCBpcyAxIG9uIFRydTY0LiBJdCBpcyBub3QKQEAgLTUxNjksOCArNTMyMiw4IEBACiAgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQogICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKICAgICAgICMgd2UgY2FuJ3QgdGVsbC4KLSAgICAgIHdoaWxlIHsgdGVzdCAiWCJgJFNIRUxMICQwIC0tZmFsbGJhY2stZWNobyAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCi0JICAgICAgICAgPSAiWFgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIjsgfSA+L2Rldi9udWxsIDI+JjEgJiYKKyAgICAgIHdoaWxlIHsgdGVzdCAiWCJgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCisJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgogCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAogICAgICAgZG8KICAgICAgICAgaT1gZXhwciAkaSArIDFgCkBAIC01MjEyLDggKzUzNjUsOCBAQAogIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKIHhzaV9zaGVsbD1ubwogKCBfbHRfZHVtbXk9ImEvYi9jIgotICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotICAgICAgPSBjLGEvYiwsIFwKKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKyAgICAgID0gYyxhL2IsYi9jLCBcCiAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAogICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCiAgICYmIHhzaV9zaGVsbD15ZXMKQEAgLTUyNjIsOSArNTQxNSw4MyBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CitpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqLSotY3lnd2luKiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgOzsKK2VzYWMKKworZmkKKwordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisKKworCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7Citlc2FjCisKK2ZpCisKK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorCisKKworCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2xkX3JlbG9hZF9mbGFnK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9sZF9yZWxvYWRfZmxhZz0nLXInCkBAIC01Mjc4LDYgKzU1MDUsMTEgQEAKIGVzYWMKIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKIGNhc2UgJGhvc3Rfb3MgaW4KKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKyAgICBmaQorICAgIDs7CiAgIGRhcndpbiopCiAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKQEAgLTUzMDAsNyArNTUzMiw3IEBACiBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1vYmpkdW1wOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19PQkpEVU1QK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19PQkpEVU1QKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJE9CSkRVTVAiOyB0aGVuCkBAIC01MzQwLDcgKzU1NzIsNyBAQAogc2V0IGR1bW15IG9iamR1bXA7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX2FjX2N0X09CSkRVTVArc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X09CSkRVTVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfT0JKRFVNUCI7IHRoZW4KQEAgLTUzOTksNyArNTYzMSw3IEBACiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byByZWNvZ25pemUgZGVwZW5kZW50IGxpYnJhcmllcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRNQUdJQ19DTUQnCkBAIC01NDQxLDE2ICs1NjczLDE4IEBACiAgICMgQmFzZSBNU1lTL01pbkdXIGRvIG5vdCBwcm92aWRlIHRoZSAnZmlsZScgY29tbWFuZCBuZWVkZWQgYnkKICAgIyBmdW5jX3dpbjMyX2xpYmlkIHNoZWxsIGZ1bmN0aW9uLCBzbyB1c2UgYSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcsCiAgICMgdW5sZXNzIHdlIGZpbmQgJ2ZpbGUnLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHdlIGFyZSBjcm9zcy1jb21waWxpbmcuCi0gIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICMgZnVuY193aW4zMl9saWJpZCBhc3N1bWVzIEJTRCBubSwgc28gZGlzYWxsb3cgaXQgaWYgdXNpbmcgTVMgZHVtcGJpbi4KKyAgaWYgKCB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJCU0Qgbm0iICYmIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCiAgIGVsc2UKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKICAgZmkKICAgOzsKIAotY2VnY2MpCitjZWdjYyopCiAgICMgdXNlIHRoZSB3ZWFrZXIgdGVzdCBiYXNlZCBvbiAnb2JqZHVtcCcuIFNlZSBtaW5ndyouCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlLWFybS0uKmxpdHRsZSguKmFyY2hpdGVjdHVyZTogYXJtKT8nCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKQEAgLTU0ODAsNiArNTcxNCwxMCBAQAogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7OwogCitoYWlrdSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKIGhwdXgxMC4yMCogfCBocHV4MTEqKQogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCiAgIGNhc2UgJGhvc3RfY3B1IGluCkBAIC01NDg4LDExICs1NzI2LDExIEBACiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KICAgICA7OwogICBocHBhKjY0KikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEZbIC1dWzAtOV1bMC05XSkoLWJpdCk/KCBbTE1dU0IpPyBzaGFyZWQgb2JqZWN0KCBmaWxlKT9bLCAtXSogUEEtUklTQyBbMC05XVwuWzAtOV0nCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCiAgICAgOzsKICAgKikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxQQS1SSVNDWzAtOV0uWzAtOV0pIHNoYXJlZCBsaWJyYXJ5JworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfFBBLVJJU0NbMC05XVwuWzAtOV0pIHNoYXJlZCBsaWJyYXJ5JwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2xpYmMuc2wKICAgICA7OwogICBlc2FjCkBAIC01NTEzLDEyICs1NzUxLDEyIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLSMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KLWxpbnV4KiB8IGsqYnNkKi1nbnUpCisjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCitsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKLW5ldGJzZCopCituZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgogICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbXi9dKyhcLnNvXC5bMC05XStcLlswLTldK3xfcGljXC5hKSQnCiAgIGVsc2UKQEAgLTU1OTUsNiArNTgzMywyMSBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisKK2ZpbGVfbWFnaWNfZ2xvYj0KK3dhbnRfbm9jYXNlZ2xvYj1ubworaWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBtaW5ndyogfCBwdzMyKikKKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisgICAgZWxzZQorICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK2ZpCisKIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KQEAgLTU2MTAsMTIgKzU4NjMsMTY2IEBACiAKIAogCisKKworCisKKworCisKKworCisKIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0FSK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCitpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCitpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorICAgIERMTFRPT0w9ImZhbHNlIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKyAgZmkKK2Vsc2UKKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKK2ZpCisKK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKworCisKKworCisKKworCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKworY2FzZSAkaG9zdF9vcyBpbgorY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisgICotLWlkZW50aWZ5LXN0cmljdCopCisgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisgICAgOzsKKyAgKikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKyAgICA7OworICBlc2FjCisgIDs7CisqKQorICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorICA7OworZXNhYworCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAordGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworCisKKworCisKKworCisKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gYXIKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkQVIiOyB0aGVuCkBAIC01NjI4LDcgKzYwMzUsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC01NjQ4LDE0ICs2MDU1LDE4IEBACiBmaQogCiAKKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisgIGRvbmUKIGZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KICAgYWNfY3RfQVI9JEFSCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisgIGZvciBhY19wcm9nIGluIGFyCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfQVIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X0FSIjsgdGhlbgpAQCAtNTY2OCw3ICs2MDc5LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTU2ODcsNiArNjA5OCwxMCBAQAogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKKworICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCitkb25lCisKICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCiAgICAgQVI9ImZhbHNlIgogICBlbHNlCkBAIC01Njk4LDEyICs2MTEzLDEwIEBACiBlc2FjCiAgICAgQVI9JGFjX2N0X0FSCiAgIGZpCi1lbHNlCi0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKIGZpCiAKLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Cis6ICR7QVI9YXJ9Cis6ICR7QVJfRkxBR1M9Y3J1fQogCiAKIApAQCAtNTcxNSwxMiArNjEyOCw3MCBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisKK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorZWxzZQorICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKK2ZpCisKKworCisKKworCisKIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkU1RSSVAiOyB0aGVuCkBAIC01NzYwLDcgKzYyMzEsNyBAQAogc2V0IGR1bW15IHN0cmlwOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9TVFJJUCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfU1RSSVArOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfU1RSSVAiOyB0aGVuCkBAIC01ODE5LDcgKzYyOTAsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cmFubGliOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19SQU5MSUIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX1JBTkxJQis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCkBAIC01ODU5LDcgKzYzMzAsNyBAQAogc2V0IGR1bW15IHJhbmxpYjsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfUkFOTElCK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9SQU5MSUIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfUkFOTElCIjsgdGhlbgpAQCAtNTkyMSwxNSArNjM5MiwyNyBAQAogaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbgogICBvcGVuYnNkKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCR0b29sX29sZGxpYiIKICAgICA7OwogICAqKQotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogICAgIDs7CiAgIGVzYWMKLSAgb2xkX2FyY2hpdmVfY21kcz0iJG9sZF9hcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRvbGRsaWIiCisgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkdG9vbF9vbGRsaWIiCiBmaQogCitjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uPXllcyA7OworICAqKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj1ubyA7OworZXNhYworCisKKworCisKKwogCiAKIApAQCAtNTk3Niw3ICs2NDU5LDcgQEAKICMgQ2hlY2sgZm9yIGNvbW1hbmQgdG8gZ3JhYiB0aGUgcmF3IHN5bWJvbCBuYW1lIGZvbGxvd2VkIGJ5IEMgc3ltYm9sIGZyb20gbm0uCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGNvbW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dCBmcm9tICRjb21waWxlciBvYmplY3QiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgY29tbWFuZCB0byBwYXJzZSAkTk0gb3V0cHV0IGZyb20gJGNvbXBpbGVyIG9iamVjdC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKQEAgLTYwMzcsOCArNjUyMCw4IEBACiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKIAogIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCiBvcHRfY3I9CkBAIC02MDYyLDYgKzY1NDUsNyBAQAogICAgICMgd2hpY2ggc3RhcnQgd2l0aCBAIG9yID8uCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJEFXSyAnIlwKICIgICAgIHtsYXN0X3NlY3Rpb249c2VjdGlvbjsgc2VjdGlvbj1cJCAzfTsiXAorIiAgICAgL15DT0ZGIFNZTUJPTCBUQUJMRS97Zm9yKGkgaW4gaGlkZSkgZGVsZXRlIGhpZGVbaV19OyJcCiAiICAgICAvU2VjdGlvbiBsZW5ndGggLiojcmVsb2NzLioocGljayBhbnkpL3toaWRlW2xhc3Rfc2VjdGlvbl09MX07IlwKICIgICAgIFwkIDAhfi9FeHRlcm5hbCAqXHwve25leHR9OyJcCiAiICAgICAvIDArIFVOREVGIC97bmV4dH07IC8gVU5ERUYgXChbXnxdXCkqKCkve25leHR9OyJcCkBAIC02MDc0LDYgKzY1NTgsNyBAQAogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgZmkKKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgogCiAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICBwaXBlX3dvcmtzPW5vCkBAIC02MDk5LDggKzY1ODQsOCBAQAogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCiAgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCiAgICAgbmxpc3Q9Y29uZnRlc3Qubm0KLSAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3RcIiI7IH0gPiY1Ci0gIChldmFsICROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgMj4mNQorICAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgXD4gJG5saXN0XCIiOyB9ID4mNQorICAoZXZhbCAkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIFw+ICRubGlzdCkgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgpAQCAtNjExNSw2ICs2NjAwLDE4IEBACiAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKyNlbHNlCisjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTYxMjYsNyArNjYyMyw3IEBACiAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotY29uc3Qgc3RydWN0IHsKK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIHZvaWQgICAgICAgKmFkZHJlc3M7CiB9CkBAIC02MTUyLDggKzY2NDksOCBAQAogX0xUX0VPRgogCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwogCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQpAQCAtNjE2Myw4ICs2NjYwLDggQEAKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwogCWVsc2UKIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQogCWZpCkBAIC02MjAxLDYgKzY2OTgsMTIgQEAKICRhc19lY2hvICJvayIgPiY2OyB9CiBmaQogCisjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2ZpCiAKIAogCkBAIC02MjIzLDYgKzY3MjYsNDggQEAKIAogCiAKKworCisKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzcm9vdCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfc3lzcm9vdDsKK2Vsc2UKKyAgd2l0aF9zeXNyb290PW5vCitmaQorCisKK2x0X3N5c3Jvb3Q9CitjYXNlICR7d2l0aF9zeXNyb290fSBpbiAjKAorIHllcykKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisgICBmaQorICAgOzsgIygKKyAvKikKKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgIDs7ICMoCisgbm98JycpCisgICA7OyAjKAorICopCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX3N5c3Jvb3R9IiA+JjUKKyRhc19lY2hvICIke3dpdGhfc3lzcm9vdH0iID4mNjsgfQorICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisgICA7OworZXNhYworCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisKKworCisKKwogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7CkBAIC02MjU0LDcgKzY3OTksNyBAQAogICA7OwogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICcjbGluZSA2MjU3ICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgZWNobyAnI2xpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwpAQCAtNjM0OCw3ICs2ODkzLDcgQEAKICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1iZWxmIgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9jY19uZWVkc19iZWxmK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfY2NfbmVlZHNfYmVsZis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2V4dD1jCkBAIC02Mzg5LDcgKzY5MzQsNyBAQAogICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgogICBmaQogICA7Owotc3BhcmMqLSpzb2xhcmlzKikKKyotKnNvbGFyaXMqKQogICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQpAQCAtNjQwMCw3ICs2OTQ1LDIwIEBACiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC5vYCBpbgogICAgICo2NC1iaXQqKQogICAgICAgY2FzZSAkbHRfY3ZfcHJvZ19nbnVfbGQgaW4KLSAgICAgIHllcyopIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIgOzsKKyAgICAgIHllcyopCisgICAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICAgaT84Ni0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfeDg2XzY0IgorICAgICAgICAgIDs7CisgICAgICAgIHNwYXJjKi0qLXNvbGFyaXMqKQorICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGY2NF9zcGFyYyIKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgICMgR05VIGxkIDIuMjEgaW50cm9kdWNlZCBfc29sMiBlbXVsYXRpb25zLiAgVXNlIHRoZW0gaWYgYXZhaWxhYmxlLgorICAgICAgICBpZiAke0xELWxkfSAtViB8IGdyZXAgX3NvbDIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAgICAgTEQ9IiR7TEQtbGR9X3NvbDIiCisgICAgICAgIGZpCisgICAgICAgIDs7CiAgICAgICAqKQogCWlmICR7TEQtbGR9IC02NCAtciAtbyBjb25mdGVzdDIubyBjb25mdGVzdC5vID4vZGV2L251bGwgMj4mMTsgdGhlbgogCSAgTEQ9IiR7TEQtbGR9IC02NCIKQEAgLTY0MTYsNiArNjk3NCwxMjMgQEAKIAogbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCiAKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAoraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CiskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZmkKK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAoraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CiskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKyAgICBNQU5JRkVTVF9UT09MPSI6IgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKyAgZmkKK2Vsc2UKKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKK2ZpCisKK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorICBjYXQgY29uZnRlc3QuZXJyID4mNQorICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworICBmaQorICBybSAtZiBjb25mdGVzdCoKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CiskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorICBNQU5JRkVTVF9UT09MPToKK2ZpCisKKworCisKKwogCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4qKQpAQCAtNjQyNCw3ICs3MDk5LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRzeW11dGlsOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19EU1lNVVRJTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfRFNZTVVUSUwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkRFNZTVVUSUwiOyB0aGVuCkBAIC02NDY0LDcgKzcxMzksNyBAQAogc2V0IGR1bW15IGRzeW11dGlsOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9EU1lNVVRJTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfRFNZTVVUSUwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfRFNZTVVUSUwiOyB0aGVuCkBAIC02NTE2LDcgKzcxOTEsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bm1lZGl0OyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19OTUVESVQrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX05NRURJVCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiROTUVESVQiOyB0aGVuCkBAIC02NTU2LDcgKzcyMzEsNyBAQAogc2V0IGR1bW15IG5tZWRpdDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTk1FRElUK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9OTUVESVQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfTk1FRElUIjsgdGhlbgpAQCAtNjYwOCw3ICs3MjgzLDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWxpcG87IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9wcm9nX0xJUE8rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0xJUE8rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkTElQTyI7IHRoZW4KQEAgLTY2NDgsNyArNzMyMyw3IEBACiBzZXQgZHVtbXkgbGlwbzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfTElQTytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfTElQTys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRhY19jdF9MSVBPIjsgdGhlbgpAQCAtNjcwMCw3ICs3Mzc1LDcgQEAKIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW90b29sOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19PVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfT1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkT1RPT0wiOyB0aGVuCkBAIC02NzQwLDcgKzc0MTUsNyBAQAogc2V0IGR1bW15IG90b29sOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfYWNfY3RfT1RPT0wrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiB0ZXN0IC1uICIkYWNfY3RfT1RPT0wiOyB0aGVuCkBAIC02NzkyLDcgKzc0NjcsNyBAQAogc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9b3Rvb2w2NDsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3Byb2dfT1RPT0w2NCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3Byb2dfT1RPT0w2NCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLW4gIiRPVE9PTDY0IjsgdGhlbgpAQCAtNjgzMiw3ICs3NTA3LDcgQEAKIHNldCBkdW1teSBvdG9vbDY0OyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTDY0K3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9PVE9PTDY0Kzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAtbiAiJGFjX2N0X09UT09MNjQiOyB0aGVuCkBAIC02OTA3LDcgKzc1ODIsNyBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWciID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1zaW5nbGVfbW9kdWxlIGxpbmtlciBmbGFnLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD1ubwpAQCAtNjkyMyw3ICs3NTk4LDEzIEBACiAJJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGxpYmNvbmZ0ZXN0LmR5bGliIFwKIAkgIC1keW5hbWljbGliIC1XbCwtc2luZ2xlX21vZHVsZSBjb25mdGVzdC5jIDI+Y29uZnRlc3QuZXJyCiAgICAgICAgIF9sdF9yZXN1bHQ9JD8KLQlpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgISAtcyBjb25mdGVzdC5lcnIgJiYgdGVzdCAkX2x0X3Jlc3VsdCA9IDA7IHRoZW4KKwkjIElmIHRoZXJlIGlzIGEgbm9uLWVtcHR5IGVycm9yIGxvZywgYW5kICJzaW5nbGVfbW9kdWxlIgorCSMgYXBwZWFycyBpbiBpdCwgYXNzdW1lIHRoZSBmbGFnIGNhdXNlZCBhIGxpbmtlciB3YXJuaW5nCisgICAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIHNpbmdsZV9tb2R1bGUgY29uZnRlc3QuZXJyOyB0aGVuCisJICBjYXQgY29uZnRlc3QuZXJyID4mNQorCSMgT3RoZXJ3aXNlLCBpZiB0aGUgb3V0cHV0IHdhcyBjcmVhdGVkIHdpdGggYSAwIGV4aXQgY29kZSBmcm9tCisJIyB0aGUgY29tcGlsZXIsIGl0IHdvcmtlZC4KKwllbGlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMDsgdGhlbgogCSAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKIAllbHNlCiAJICBjYXQgY29uZnRlc3QuZXJyID4mNQpAQCAtNjkzNCw5ICs3NjE1LDEwIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPiY2OyB9CisKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ubwpAQCAtNjk2Niw2ICs3NjQ4LDQxIEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID4mNjsgfQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLWZvcmNlX2xvYWQgbGlua2VyIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnLi4uICIgPiY2OyB9CitpZiAke2x0X2N2X2xkX2ZvcmNlX2xvYWQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9sZF9mb3JjZV9sb2FkPW5vCisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBmb3JjZWRfbG9hZGVkKCkgeyByZXR1cm4gMjt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIiA+JjUKKyAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKK2ludCBtYWluKCkgeyByZXR1cm4gMDt9CitfTFRfRU9GCisgICAgICBlY2hvICIkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gY29uZnRlc3QgY29uZnRlc3QuYyAtV2wsLWZvcmNlX2xvYWQsLi9saWJjb25mdGVzdC5hIiA+JjUKKyAgICAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jIC1XbCwtZm9yY2VfbG9hZCwuL2xpYmNvbmZ0ZXN0LmEgMj5jb25mdGVzdC5lcnIKKyAgICAgIF9sdF9yZXN1bHQ9JD8KKyAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIGZvcmNlX2xvYWQgY29uZnRlc3QuZXJyOyB0aGVuCisJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKyAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlsdF9jdl9sZF9mb3JjZV9sb2FkPXllcworICAgICAgZWxzZQorCWNhdCBjb25mdGVzdC5lcnIgPiY1CisgICAgICBmaQorICAgICAgICBybSAtZiBjb25mdGVzdC5lcnIgbGliY29uZnRlc3QuYSBjb25mdGVzdCBjb25mdGVzdC5jCisgICAgICAgIHJtIC1yZiBjb25mdGVzdC5kU1lNCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA+JjY7IH0KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bMDEyXSkKICAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKQEAgLTY5OTMsNyArNzcxMCw3IEBACiAgICAgZWxzZQogICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IjsgdGhlbgorICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiICYmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJubyI7IHRoZW4KICAgICAgIF9sdF9kc3ltdXRpbD0nfiREU1lNVVRJTCAkbGliIHx8IDonCiAgICAgZWxzZQogICAgICAgX2x0X2RzeW11dGlsPQpAQCAtNzAxMyw3ICs3NzMwLDcgQEAKICAgQ1BQPQogZmkKIGlmIHRlc3QgLXogIiRDUFAiOyB0aGVuCi0gIGlmIHRlc3QgIiR7YWNfY3ZfcHJvZ19DUFArc2V0fSIgPSBzZXQ7IHRoZW4gOgorICBpZiAke2FjX2N2X3Byb2dfQ1BQKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgICAgICMgRG91YmxlIHF1b3RlcyBiZWNhdXNlIENQUCBuZWVkcyB0byBiZSBleHBhbmRlZApAQCAtNzA0Myw3ICs3NzYwLDcgQEAKICAgIyBCcm9rZW46IGZhaWxzIG9uIHZhbGlkIGlucHV0LgogY29udGludWUKIGZpCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LmkgY29uZnRlc3QuJGFjX2V4dAogCiAgICMgT0ssIHdvcmtzIG9uIHNhbmUgY2FzZXMuICBOb3cgY2hlY2sgd2hldGhlciBub25leGlzdGVudCBoZWFkZXJzCiAgICMgY2FuIGJlIGRldGVjdGVkIGFuZCBob3cuCkBAIC03MDU5LDExICs3Nzc2LDExIEBACiBhY19wcmVwcm9jX29rPToKIGJyZWFrCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogZG9uZQogIyBCZWNhdXNlIG9mIGBicmVhaycsIF9BQ19QUkVQUk9DX0lGRUxTRSdzIGNsZWFuaW5nIGNvZGUgd2FzIHNraXBwZWQuCi1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX2V4dAogaWYgJGFjX3ByZXByb2Nfb2s7IHRoZW4gOgogICBicmVhawogZmkKQEAgLTcxMDIsNyArNzgxOSw3IEBACiAgICMgQnJva2VuOiBmYWlscyBvbiB2YWxpZCBpbnB1dC4KIGNvbnRpbnVlCiBmaQotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKIAogICAjIE9LLCB3b3JrcyBvbiBzYW5lIGNhc2VzLiAgTm93IGNoZWNrIHdoZXRoZXIgbm9uZXhpc3RlbnQgaGVhZGVycwogICAjIGNhbiBiZSBkZXRlY3RlZCBhbmQgaG93LgpAQCAtNzExOCwxOCArNzgzNSwxOCBAQAogYWNfcHJlcHJvY19vaz06CiBicmVhawogZmkKLXJtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfZXh0CitybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuaSBjb25mdGVzdC4kYWNfZXh0CiAKIGRvbmUKICMgQmVjYXVzZSBvZiBgYnJlYWsnLCBfQUNfUFJFUFJPQ19JRkVMU0UncyBjbGVhbmluZyBjb2RlIHdhcyBza2lwcGVkLgotcm0gLWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKIGlmICRhY19wcmVwcm9jX29rOyB0aGVuIDoKIAogZWxzZQogICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yICJDIHByZXByb2Nlc3NvciBcIiRDUFBcIiBmYWlscyBzYW5pdHkgY2hlY2sKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMuIiAiJExJTkVOTyIgNTsgfQorYXNfZm5fZXJyb3IgJD8gIkMgcHJlcHJvY2Vzc29yIFwiJENQUFwiIGZhaWxzIHNhbml0eSBjaGVjaworU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KIGZpCiAKIGFjX2V4dD1jCkBAIC03MTQxLDcgKzc4NTgsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2hlYWRlcl9zdGRjK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfaGVhZGVyX3N0ZGMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC03MjU4LDggKzc5NzUsNyBAQAogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2hlYWRlcl9jb21waWxlICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdAogIgotZXZhbCBhc192YWw9XCQkYXNfYWNfSGVhZGVyCi0gICBpZiB0ZXN0ICJ4JGFzX3ZhbCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKIF9BQ0VPRgpAQCAtNzI3Myw3ICs3OTg5LDcgQEAKIGRvIDoKICAgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgImRsZmNuLmgiICJhY19jdl9oZWFkZXJfZGxmY25faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0CiAiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9kbGZjbl9oIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9kbGZjbl9oIiA9IHh5ZXM7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIEhBVkVfRExGQ05fSCAxCiBfQUNFT0YKQEAgLTcyODQsNiArODAwMCw4IEBACiAKIAogCisKKwogIyBTZXQgb3B0aW9ucwogCiAKQEAgLTczNTksNyArODA3NywyMiBAQAogCiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXBpYyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF9waWM7IHBpY19tb2RlPSIkd2l0aHZhbCIKKyAgd2l0aHZhbD0kd2l0aF9waWM7IGx0X3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkd2l0aHZhbCBpbgorICAgIHllc3xubykgcGljX21vZGU9JHdpdGh2YWwgOzsKKyAgICAqKQorICAgICAgcGljX21vZGU9ZGVmYXVsdAorICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgbHRfcGtnIGluICR3aXRodmFsOyBkbworCUlGUz0iJGx0X3NhdmVfaWZzIgorCWlmIHRlc3QgIlgkbHRfcGtnIiA9ICJYJGx0X3AiOyB0aGVuCisJICBwaWNfbW9kZT15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWMKIGVsc2UKICAgcGljX21vZGU9ZGVmYXVsdAogZmkKQEAgLTc0MzYsNiArODE2OSwxMSBAQAogCiAKIAorCisKKworCisKIHRlc3QgLXogIiRMTl9TIiAmJiBMTl9TPSJsbiAtcyIKIAogCkBAIC03NDU3LDcgKzgxOTUsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBvYmpkaXIiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIG9iamRpci4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9vYmpkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9vYmpkaXIrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBybSAtZiAubGlicyAyPi9kZXYvbnVsbApAQCAtNzQ4NSwxOSArODIyMyw2IEBACiAKIAogCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQogICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKQEAgLTc1MTAsMjMgKzgyMzUsNiBAQAogICA7OwogZXNhYwogCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKLQotIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi1kb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCi0jIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCi1kZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgotZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCi1ub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKLQogIyBHbG9iYWwgdmFyaWFibGVzOgogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKQEAgLTc1NTUsNyArODI2Myw3IEBACiAgICAgKikgYnJlYWs7OwogICBlc2FjCiBkb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK2NjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAogCiAKICMgT25seSBwZXJmb3JtIHRoZSBjaGVjayBmb3IgZmlsZSwgaWYgdGhlIGNoZWNrIG1ldGhvZCByZXF1aXJlcyBpdApAQCAtNzU2NSw3ICs4MjczLDcgQEAKICAgaWYgdGVzdCAiJGZpbGVfbWFnaWNfY21kIiA9ICckTUFHSUNfQ01EJzsgdGhlbgogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICR7YWNfdG9vbF9wcmVmaXh9ZmlsZSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJHthY190b29sX3ByZWZpeH1maWxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3BhdGhfTUFHSUNfQ01EK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9NQUdJQ19DTUQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXNlICRNQUdJQ19DTUQgaW4KQEAgLTc2MzEsNyArODMzOSw3IEBACiAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBmaWxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBmaWxlLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3BhdGhfTUFHSUNfQ01EK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcGF0aF9NQUdJQ19DTUQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXNlICRNQUdJQ19DTUQgaW4KQEAgLTc3NjQsMTEgKzg0NzIsMTYgQEAKIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPQogCiBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nIC1mbm8tYnVpbHRpbicKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgbnZjYyopCisgICAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9JyAtWGNvbXBpbGVyIC1mbm8tYnVpbHRpbicgOzsKKyAgKikKKyAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nIC1mbm8tYnVpbHRpbicgOzsKKyAgZXNhYwogCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zPW5vCkBAIC03Nzg0LDE1ICs4NDk3LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjc3ODc6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjc3OTE6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID5jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucz15ZXMKQEAgLTc4MjEsOCArODUzNCw2IEBACiBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CiAKICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwpAQCAtNzg3MCw2ICs4NTgxLDEyIEBACiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZuby1jb21tb24nCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIEhhaWt1LgorICAgICAgIyBUaGUgIi1zdGF0aWMiIGZsYWcgZXhpc3RzLCBidXQgaXMgYnJva2VuLgorICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgICAgICA7OworCiAgICAgaHB1eCopCiAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKICAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZwpAQCAtNzkxMiw2ICs4NjI5LDE1IEBACiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZQSUMnCiAgICAgICA7OwogICAgIGVzYWMKKworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgbnZjYyopICMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctWGxpbmtlciAnCisgICAgICBpZiB0ZXN0IC1uICIkbHRfcHJvZ19jb21waWxlcl9waWMiOyB0aGVuCisgICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSItWGNvbXBpbGVyICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIKKyAgICAgIGZpCisgICAgICA7OworICAgIGVzYWMKICAgZWxzZQogICAgICMgUE9SVE1FIENoZWNrIGZvciBmbGFnIHRvIHBhc3MgbGlua2VyIGZsYWdzIHRocm91Z2ggdGhlIHN5c3RlbSBjb21waWxlci4KICAgICBjYXNlICRob3N0X29zIGluCkBAIC03OTUzLDcgKzg2NzksNyBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1ub25fc2hhcmVkJwogICAgICAgOzsKIAotICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICMgb2xkIEludGVsIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogICAgICAgZWNjKikKQEAgLTc5NzQsNyArODcwMCwxMyBAQAogCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCiAJOzsKLSAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQorICAgICAgbmFnZm9yKikKKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKwk7OworICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKQEAgLTc5ODYsMjUgKzg3MTgsNDAgQEAKICAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCiAgICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctbm9uX3NoYXJlZCcKICAgICAgICAgOzsKLSAgICAgIHhsKikKLQkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisJIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xLCAxMS4xIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwogCWx0X3Byb2dfY29tcGlsZXJfcGljPSctcXBpYycKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXFzdGF0aWNsaW5rJwogCTs7CiAgICAgICAqKQogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIENlcmVzXCBGb3J0cmFuKiB8ICpTdW4qRm9ydHJhbipcIFsxLTddLiogfCAqU3VuKkZvcnRyYW4qXCA4LlswLTNdKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKwkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKwkgIGx0X3Byb2dfY29tcGlsZXJfd2w9JycKKwkgIDs7CisJKlN1blwgRiogfCAqU3VuKkZvcnRyYW4qKQorCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJworCSAgOzsKIAkqU3VuXCBDKikKIAkgICMgU3VuIEMgNS45CiAJICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCiAJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAJICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwogCSAgOzsKLQkqU3VuXCBGKikKLQkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKLQkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKKyAgICAgICAgKkludGVsKlwgW0NGXSpDb21waWxlciopCisJICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworCSAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1mUElDJworCSAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1zdGF0aWMnCisJICA7OworCSpQb3J0bGFuZFwgR3JvdXAqKQorCSAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKKwkgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctZnBpYycKIAkgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLQkgIGx0X3Byb2dfY29tcGlsZXJfd2w9JycKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC04MDM2LDcgKzg3ODMsNyBAQAogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwogICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKICAgICAgICopCiAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwpAQCAtODA5MywxMyArODg0MCwxNyBAQAogICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCiAgICAgOzsKIGVzYWMKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CiAKLQotCi0KLQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CitsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKIAogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgpAQCAtODEwNyw3ICs4ODU4LDcgQEAKIGlmIHRlc3QgLW4gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyI7IHRoZW4KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgUElDIGZsYWcgJGx0X3Byb2dfY29tcGlsZXJfcGljIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBQSUMgZmxhZyAkbHRfcHJvZ19jb21waWxlcl9waWMgd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzPW5vCkBAIC04MTIzLDE1ICs4ODc0LDE1IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjgxMjY6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjgxMzA6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCiAgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCiAgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKKyAgICAgJEVDSE8gIiRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFNFRCAnL14kL2QnID5jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrcz15ZXMKQEAgLTgxNjAsMTMgKzg5MTEsMTggQEAKIAogCiAKKworCisKKworCiAjCiAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCiAjCiB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIGx0X3RtcF9zdGF0aWNfZmxhZz1cIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY1wiCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRjb21waWxlciBzdGF0aWMgZmxhZyAkbHRfdG1wX3N0YXRpY19mbGFnIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdGF0aWMgZmxhZyAkbHRfdG1wX3N0YXRpY19mbGFnIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcz1ubwpAQCAtODE3OSw3ICs4OTM1LDcgQEAKICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KICAgICAgICAjIEFwcGVuZCBhbnkgZXJyb3JzIHRvIHRoZSBjb25maWcubG9nLgogICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgICRFQ0hPICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKICAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3M9eWVzCkBAIC04MjA5LDcgKzg5NjUsNyBAQAogCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfY19vK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz1ubwpAQCAtODIyOCwxNiArODk4NCwxNiBAQAogICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAogICAgLWUgJ3M6IFteIF0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTo4MjMxOiAkbHRfY29tcGlsZVwiIiA+JjUpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiY1KQogICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mNQotICAgZWNobyAiJGFzX21lOjgyMzU6IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz15ZXMKQEAgLTgyNjQsNyArOTAyMCw3IEBACiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGlmICRjb21waWxlciBzdXBwb3J0cyAtYyAtbyBmaWxlLiRhY19vYmpleHQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bHRfY3ZfcHJvZ19jb21waWxlcl9jX28rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPW5vCkBAIC04MjgzLDE2ICs5MDM5LDE2IEBACiAgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCiAgICAtZSAnczogW14gXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCiAgICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOjgyODY6ICRsdF9jb21waWxlXCIiID4mNSkKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkbHRfY29tcGlsZVwiIiA+JjUpCiAgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKICAgIGFjX3N0YXR1cz0kPwogICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiY1Ci0gICBlY2hvICIkYXNfbWU6ODI5MDogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgICBpZiAoZXhpdCAkYWNfc3RhdHVzKSAmJiB0ZXN0IC1zIG91dC9jb25mdGVzdDIuJGFjX29iamV4dAogICAgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3MKLSAgICAgJEVDSE8gIlgkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRYc2VkIC1lICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKICAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPXllcwpAQCAtODM1OCw3ICs5MTE0LDYgQEAKICAgaGFyZGNvZGVfZGlyZWN0PW5vCiAgIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT1ubwogICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPQogICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQogICBoYXJkY29kZV9taW51c19MPW5vCiAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKQEAgLTg0MDIsMTAgKzkxNTcsMzkgQEAKICAgb3BlbmJzZCopCiAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICA7OworICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKKyAgICBsaW5rX2FsbF9kZXBsaWJzPW5vCisgICAgOzsKICAgZXNhYwogCiAgIGxkX3NobGlicz15ZXMKKworICAjIE9uIHNvbWUgdGFyZ2V0cywgR05VIGxkIGlzIGNvbXBhdGlibGUgZW5vdWdoIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIKKyAgIyB0aGF0IHdlJ3JlIGJldHRlciBvZmYgdXNpbmcgdGhlIG5hdGl2ZSBpbnRlcmZhY2UgZm9yIGJvdGguCisgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPW5vCiAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgqKQorCSMgVGhlIEFJWCBwb3J0IG9mIEdOVSBsZCBoYXMgYWx3YXlzIGFzcGlyZWQgdG8gY29tcGF0aWJpbGl0eQorCSMgd2l0aCB0aGUgbmF0aXZlIGxpbmtlci4gIEhvd2V2ZXIsIGFzIHRoZSB3YXJuaW5nIGluIHRoZSBHTlUgbGQKKwkjIGJsb2NrIHNheXMsIHZlcnNpb25zIGJlZm9yZSAyLjE5LjUqIGNvdWxkbid0IHJlYWxseSBjcmVhdGUgd29ya2luZworCSMgc2hhcmVkIGxpYnJhcmllcywgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZXJmYWNlIHVzZWQuCisJY2FzZSBgJExEIC12IDI+JjFgIGluCisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi4xOS41KikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLlsyLTldKikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCBbMy05XSopIDs7CisJICAqKQorCSAgICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICopCisJbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJOzsKKyAgICBlc2FjCisgIGZpCisKKyAgaWYgdGVzdCAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIiA9IHllczsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgd2xhcmM9JyR7d2x9JwogCkBAIC04NDIzLDYgKzkyMDcsNyBAQAogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCiAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bMC05XS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KQEAgLTg0MzgsMTEgKzkyMjMsMTIgQEAKIAlsZF9zaGxpYnM9bm8KIAljYXQgPDxfTFRfRU9GIDE+JjIKIAotKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuOS4xLCBpcyByZXBvcnRlZAorKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuMTksIGlzIHJlcG9ydGVkCiAqKiogdG8gYmUgdW5hYmxlIHRvIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIEFJWC4KICoqKiBUaGVyZWZvcmUsIGxpYnRvb2wgaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIElmIHlvdQotKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gbW9kaWZ5IHlvdXIgUEFUSAotKioqIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZCwgYW5kIHRoZW4gcmVzdGFydC4KKyoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIGluc3RhbGwgYmludXRpbHMKKyoqKiAyLjIwIG9yIGFib3ZlLCBvciBtb2RpZnkgeW91ciBQQVRIIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZC4KKyoqKiBZb3Ugd2lsbCB0aGVuIG5lZWQgdG8gcmVzdGFydCB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLgogCiBfTFRfRU9GCiAgICAgICBmaQpAQCAtODQ3OCwxMCArOTI2NCwxMiBAQAogICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJwogICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwogICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwogCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCkBAIC04NDk5LDYgKzkyODcsMTEgQEAKICAgICAgIGZpCiAgICAgICA7OwogCisgICAgaGFpa3UqKQorICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCisgICAgICA7OworCiAgICAgaW50ZXJpeFszLTldKikKICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwpAQCAtODUxNCw3ICs5MzA3LDcgQEAKICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCi0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251KQorICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KICAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTg1MjQsMTUgKzkzMTcsMTYgQEAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKIAkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCiAgICAgICB0aGVuCi0JdG1wX2FkZGZsYWc9CisJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAkgIDs7Ci0JcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqKQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcgLU1ub21haW4nIDs7CiAJZWNjKixpYTY0KiB8IGljYyosaWE2NCopCSMgSW50ZWwgQyBjb21waWxlciBvbiBpYTY0CiAJICB0bXBfYWRkZmxhZz0nIC1pX2R5bmFtaWMnIDs7CkBAIC04NTQzLDEzICs5MzM3LDE3IEBACiAJbGY5NSopCQkJCSMgTGFoZXkgRm9ydHJhbiA4LjEKIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPQogCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OwotCXhsW2NDXSopCQkJIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQorCXhsW2NDXSogfCBiZ3hsW2NDXSogfCBtcGl4bFtjQ10qKSAjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCiAJICB0bXBfc2hhcmVkZmxhZz0nLXFta3Nocm9iaicKIAkgIHRtcF9hZGRmbGFnPSA7OworCW52Y2MqKQkjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgY29tcGlsZXJfbmVlZHNfb2JqZWN0PXllcworCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgY29tcGlsZXJfbmVlZHNfb2JqZWN0PXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCkBAIC04NTY1LDE3ICs5MzYzLDE2IEBACiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCXhsZiopCisJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtODU4NCwxMyArOTM4MSwxMyBAQAogICAgICAgZmkKICAgICAgIDs7CiAKLSAgICBuZXRic2QqKQorICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogCXdsYXJjPQogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTg2MDgsOCArOTQwNSw4IEBACiAKIF9MVF9FT0YKICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCWxkX3NobGlicz1ubwogICAgICAgZmkKQEAgLTg2NTUsOCArOTQ1Miw4IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCWxkX3NobGlicz1ubwogICAgICAgZmkKQEAgLTg2OTYsOCArOTQ5MywxMCBAQAogICAgICAgZWxzZQogCSMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgogCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKwkjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwKKwkjIGRlZmluZWQgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCiAJaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAllbHNlCiAJICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAlmaQpAQCAtODc1OSw2ICs5NTU4LDcgQEAKIAlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KIAkgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJwogCWZpCisJbGlua19hbGxfZGVwbGlicz1ubwogICAgICAgZWxzZQogCSMgbm90IHVzaW5nIGdjYwogCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCkBAIC04Nzg0LDcgKzk1ODQsMTMgQEAKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKQEAgLTg3OTcsMjUgKzk2MDMsMzIgQEAKIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpCisgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH0nCisgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmkKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorICBmaQorCitmaQorCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KK2ZpCiAKICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICBlbHNlCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtODgyNCw3ICs5NjM3LDEzIEBACiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKQEAgLTg4MzcsMzAgKzk2NTYsNDIgQEAKIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgogCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpCisgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJICAvXjAvIHsKKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworCSAgICAgIHAKKwkgIH0KKyAgICAgIH0nCisgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmkKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorICBmaQorCitmaQorCisgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KK2ZpCiAKIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICBub191bmRlZmluZWRfZmxhZz0nICR7d2x9LWJlcm5vdG9rJwogCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1iZXJvaycKLQkgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyRjb252ZW5pZW5jZScKKwkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgZWxzZQorCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyRjb252ZW5pZW5jZScKKwkgIGZpCiAJICBhcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKIAkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCiAJICBhcmNoaXZlX2V4cHN5bV9jbWRzPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCkBAIC04ODkyLDIwICs5NzIzLDY0IEBACiAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSAgICAgIGxpYmV4dD1saWIKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgJEVDSE8gIlgkZGVwbGlicyIgfCAkWHNlZCAtZSAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGNsKikKKwkjIE5hdGl2ZSBNU1ZDCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZWxzZQorCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZml+CisJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICBsaW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworCWV4Y2x1ZGVfZXhwc3ltcz0nX05VTExfSU1QT1JUX0RFU0NSSVBUT1J8X0lNUE9SVF9ERVNDUklQVE9SXy4qJworCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKwkjIERvbid0IHVzZSByYW5saWIKKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKwkgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICopCisJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgOzsKKwkgIGVzYWN+CisJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKwkgIGZpJworCTs7CisgICAgICAqKQorCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGRhcndpbiogfCByaGFwc29keSopCkBAIC04OTE1LDcgKzk3OTAsMTIgQEAKICAgaGFyZGNvZGVfZGlyZWN0PW5vCiAgIGhhcmRjb2RlX2F1dG9tYXRpYz15ZXMKICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj11bnN1cHBvcnRlZAotICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJworICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKworICBlbHNlCisgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JycKKyAgZmkKICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9IiRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZCIKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTg5MjMsNyArOTgwMyw3IEBACiAgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CiAgIGVzYWMKICAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAgICAgYXJjaGl2ZV9jbWRzPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJHtfbHRfZHN5bXV0aWx9IgogICAgIG1vZHVsZV9jbWRzPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kc3ltdXRpbH0iCiAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgpAQCAtODk0MSwxMCArOTgyMSw2IEBACiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICAgICA7OwogCi0gICAgZnJlZWJzZDEqKQotICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICA7OwotCiAgICAgIyBGcmVlQlNEIDIuMi5bMDEyXSBhbGxvd3MgdXMgdG8gaW5jbHVkZSBjKytydDAubyB0byBnZXQgQysrIGNvbnN0cnVjdG9yCiAgICAgIyBzdXBwb3J0LiAgRnV0dXJlIHZlcnNpb25zIGRvIHRoaXMgYXV0b21hdGljYWxseSwgYnV0IGFuIGV4cGxpY2l0IGMrK3J0MC5vCiAgICAgIyBkb2VzIG5vdCBicmVhayBhbnl0aGluZywgYW5kIGhlbHBzIHNpZ25pZmljYW50bHkgKGF0IHRoZSBjb3N0IG9mIGEgbGl0dGxlCkBAIC04OTU3LDcgKzk4MzMsNyBAQAogICAgICAgOzsKIAogICAgICMgVW5mb3J0dW5hdGVseSwgb2xkZXIgdmVyc2lvbnMgb2YgRnJlZUJTRCAyIGRvIG5vdCBoYXZlIHRoaXMgZmVhdHVyZS4KLSAgICBmcmVlYnNkMiopCisgICAgZnJlZWJzZDIuKikKICAgICAgIGFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCkBAIC04OTY2LDcgKzk4NDIsNyBAQAogCiAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgogICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KQEAgLTg5NzQsNyArOTg1MCw3IEBACiAKICAgICBocHV4OSopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQogCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICBmaQpAQCAtODk4OSwxNCArOTg2NSwxMyBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMCopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0JaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nK2IgJGxpYmRpcicKIAloYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKIAloYXJkY29kZV9kaXJlY3Q9eWVzCiAJaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPXllcwpAQCAtOTAwOCwxNiArOTg4MywxNiBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAljYXNlICRob3N0X2NwdSBpbgogCWhwcGEqNjQqKQogCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAllc2FjCiAgICAgICBlbHNlCkBAIC05MDI5LDcgKzk5MDQsNDYgQEAKIAkgIGFyY2hpdmVfY21kcz0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKworCSAgIyBPbGRlciB2ZXJzaW9ucyBvZiB0aGUgMTEuMDAgY29tcGlsZXIgZG8gbm90IHVuZGVyc3RhbmQgLWIgeWV0CisJICAjIChIUDkyNDUzLTAxIEEuMTEuMDEuMjAgZG9lc24ndCwgSFA5MjQ1My0wMSBCLjExLlguMzUxNzUtMzUxNzYuR1AgZG9lcykKKwkgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJENDIHVuZGVyc3RhbmRzIC1iIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRDQyB1bmRlcnN0YW5kcyAtYi4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX19iKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9fYj1ubworICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgIExERkxBR1M9IiRMREZMQUdTIC1iIgorICAgZWNobyAiJGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICBpZiAoZXZhbCAkYWNfbGluayAyPmNvbmZ0ZXN0LmVycikgJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KKyAgICAgIyBUaGUgbGlua2VyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCisgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncworICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgorICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCisgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisgICAgICAgJEVDSE8gIiRfbHRfbGlua2VyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgorICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPXllcworICAgICAgIGZpCisgICAgIGVsc2UKKyAgICAgICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPXllcworICAgICBmaQorICAgZmkKKyAgICRSTSAtciBjb25mdGVzdCoKKyAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA+JjY7IH0KKworaWYgdGVzdCB4IiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA9IHh5ZXM7IHRoZW4KKyAgICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworZWxzZQorICAgIGFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKK2ZpCisKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTkwNTcsMjYgKzk5NzEsMzkgQEAKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CiAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAogCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCi1pbnQgZm9vKHZvaWQpIHt9CitpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CiBfQUNFT0YKIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLQorICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKK2Vsc2UKKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJZmkKICAgICAgIGVsc2UKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz0nbm8nCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC05MDg1LDcgKzEwMDEyLDcgQEAKICAgICAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCiAgICAgICA7OwogCi0gICAgbmV0YnNkKikKKyAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKICAgICAgIGVsc2UKQEAgLTkxMzgsMTcgKzEwMDY1LDE3IEBACiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9taW51c19MPXllcwogICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgIGFyY2hpdmVfY21kcz0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgYXJjaGl2ZV9jbWRzPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICA7OwogCiAgICAgb3NmMyopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz0nbm8nCiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC05MTU4LDEzICsxMDA4NSwxMyBAQAogICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICBlbHNlCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKwkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKIAogCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctcnBhdGggJGxpYmRpcicKQEAgLTkxNzcsOSArMTAxMDQsOSBAQAogICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAl3bGFyYz0nJHt3bH0nCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAgICAgICBlbHNlCiAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAJKiJDb21waWxlcnMgNS4wIiopCkBAIC05MzY3LDQ0ICsxMDI5NCw1MCBAQAogICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW4uLi4gIiA+JjY7IH0KLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAoraWYgJHtsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICRSTSBjb25mdGVzdCoKKwllY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKIAotICAgICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisJaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CiAgIChldmFsICRhY19jb21waWxlKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICBzb25hbWU9Y29uZnRlc3QKLSAgICAgICAgbGliPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAotICAgICAgICBkZXBsaWJzPQotICAgICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bAotCXBpY19mbGFnPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotICAgICAgICBjb21waWxlcl9mbGFncz0tdgotICAgICAgICBsaW5rZXJfZmxhZ3M9LXYKLSAgICAgICAgdmVyc3RyaW5nPQotICAgICAgICBvdXRwdXRfb2JqZGlyPS4KLSAgICAgICAgbGlibmFtZT1jb25mdGVzdAotICAgICAgICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRhbGxvd191bmRlZmluZWRfZmxhZwotICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0KLSAgICAgICAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFyY2hpdmVfY21kcyAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMVwiIjsgfSA+JjUKKwkgIHNvbmFtZT1jb25mdGVzdAorCSAgbGliPWNvbmZ0ZXN0CisJICBsaWJvYmpzPWNvbmZ0ZXN0LiRhY19vYmpleHQKKwkgIGRlcGxpYnM9CisJICB3bD0kbHRfcHJvZ19jb21waWxlcl93bAorCSAgcGljX2ZsYWc9JGx0X3Byb2dfY29tcGlsZXJfcGljCisJICBjb21waWxlcl9mbGFncz0tdgorCSAgbGlua2VyX2ZsYWdzPS12CisJICB2ZXJzdHJpbmc9CisJICBvdXRwdXRfb2JqZGlyPS4KKwkgIGxpYm5hbWU9Y29uZnRlc3QKKwkgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JGFsbG93X3VuZGVmaW5lZF9mbGFnCisJICBhbGxvd191bmRlZmluZWRfZmxhZz0KKwkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjFcIiI7IH0gPiY1CiAgIChldmFsICRhcmNoaXZlX2NtZHMgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjEpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0gICAgICAgIHRoZW4KLQkgIGFyY2hpdmVfY21kc19uZWVkX2xjPW5vCi0gICAgICAgIGVsc2UKLQkgIGFyY2hpdmVfY21kc19uZWVkX2xjPXllcwotICAgICAgICBmaQotICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZwotICAgICAgZWxzZQotICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKLSAgICAgIGZpCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFyY2hpdmVfY21kc19uZWVkX2xjIiA+JjUKLSRhc19lY2hvICIkYXJjaGl2ZV9jbWRzX25lZWRfbGMiID4mNjsgfQorCSAgdGhlbgorCSAgICBsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYz1ubworCSAgZWxzZQorCSAgICBsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKKwkgIGZpCisJICBhbGxvd191bmRlZmluZWRfZmxhZz0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZworCWVsc2UKKwkgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorCWZpCisJJFJNIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYyIgPiY1CiskYXNfZWNobyAiJGx0X2N2X2FyY2hpdmVfY21kc19uZWVkX2xjIiA+JjY7IH0KKyAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjPSRsdF9jdl9hcmNoaXZlX2NtZHNfbmVlZF9sYwogICAgICAgOzsKICAgICBlc2FjCiAgIGZpCkBAIC05NTYyLDExICsxMDQ5NSw2IEBACiAKIAogCi0KLQotCi0KLQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MuLi4gIiA+JjY7IH0KIApAQCAtOTU3NSwxNiArMTA1MDMsMjMgQEAKICAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CiAgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKICAgZXNhYwotICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAotICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0icyw9XChbQS1aYS16XTpcKSxcMSxnIiA7OworICAgICopIGx0X3NlZF9zdHJpcF9lcT0icyw9LywvLGciIDs7CisgIGVzYWMKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgJGx0X3NlZF9zdHJpcF9lcWAKKyAgY2FzZSAkbHRfc2VhcmNoX3BhdGhfc3BlYyBpbgorICAqXDsqKQogICAgICMgaWYgdGhlIHBhdGggY29udGFpbnMgIjsiIHRoZW4gd2UgYXNzdW1lIGl0IHRvIGJlIHRoZSBzZXBhcmF0b3IKICAgICAjIG90aGVyd2lzZSBkZWZhdWx0IHRvIHRoZSBzdGFuZGFyZCBwYXRoIHNlcGFyYXRvciAoaS5lLiAiOiIpIC0gaXQgaXMKICAgICAjIGFzc3VtZWQgdGhhdCBubyBwYXJ0IG9mIGEgbm9ybWFsIHBhdGhuYW1lIGNvbnRhaW5zICI7IiBidXQgdGhhdCBzaG91bGQKICAgICAjIG9rYXkgaW4gdGhlIHJlYWwgd29ybGQgd2hlcmUgIjsiIGluIGRpcnBhdGhzIGlzIGl0c2VsZiBwcm9ibGVtYXRpYy4KLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gIGVsc2UKLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gIGZpCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgJ3MvOy8gL2cnYAorICAgIDs7CisgICopCisgICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgOzsKKyAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAogICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9CkBAIC05NTk3LDcgKzEwNTMyLDcgQEAKIAlsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aCIKICAgICBmaQogICBkb25lCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyB8IGF3ayAnCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMiIHwgYXdrICcKIEJFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKICAgbHRfZm9vPSIiOwogICBsdF9jb3VudD0wOwpAQCAtOTYxNyw3ICsxMDU1MiwxMyBAQAogICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbbHRfZm9vXSsrOyB9CiAgIGlmIChsdF9mcmVxW2x0X2Zvb10gPT0gMSkgeyBwcmludCBsdF9mb287IH0KIH0nYAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF9zZWFyY2hfcGF0aF9zcGVjYAorICAjIEFXSyBwcm9ncmFtIGFib3ZlIGVycm9uZW91c2x5IHByZXBlbmRzICcvJyB0byBDOi9kb3MvcGF0aHMKKyAgIyBmb3IgdGhlc2UgaG9zdHMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfFwKKyAgICAgICRTRUQgJ3MsL1woW0EtWmEtel06XCksXDEsZydgIDs7CisgIGVzYWMKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCiBmaQpAQCAtOTY0Myw3ICsxMDU4NCw3IEBACiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAKQEAgLTk2NTIsNyArMTA1OTMsNyBAQAogICA7OwogCiBhaXhbNC05XSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtOTcwNSw3ICsxMDY0Niw3IEBACiAgIG02OGspCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKICAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgotICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFteL10qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJworICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gZnVuY19lY2hvX2FsbCAiJGxpYiIgfCAkU0VEICdcJydzJV4uKi9cKFteL10qXClcLml4bGlicmFyeSQlXDElJ1wnJ2A7IHRlc3QgJFJNIC9zeXMvbGlicy8ke2xpYm5hbWV9X2l4bGlicmFyeS5hOyAkc2hvdyAiY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSI7IGNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgfHwgZXhpdCAxOyBkb25lJwogICAgIDs7CiAgIGVzYWMKICAgOzsKQEAgLTk3MTcsNyArMTA2NTgsNyBAQAogICA7OwogCiBic2RpWzQ1XSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKQEAgLTk3MzYsOCArMTA2NzcsOSBAQAogICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCiAKLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKyAgeWVzLCopCisgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KQEAgLTk3NTgsMzYgKzEwNzAwLDgzIEBACiAgICAgY3lnd2luKikKICAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9saWIvdzMyYXBpIgogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAogICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgJEdSRVAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKLSAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAotICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCi0gICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKLSAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAotICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gICAgICBlbHNlCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gICAgICBmaQogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwogICAgICAgOzsKICAgICBlc2FjCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICA7OworCisgICosY2wqKQorICAgICMgTmF0aXZlIE1TVkMKKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKworICAgIGNhc2UgJGJ1aWxkX29zIGluCisgICAgbWluZ3cqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorICAgICAgbHRfc2F2ZV9pZnM9JElGUworICAgICAgSUZTPSc7JworICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorICAgICAgZG8KKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorICAgICAgZG9uZQorICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKyAgICAgIDs7CisgICAgY3lnd2luKikKKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgOzsKKyAgICAqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisgICAgICBlbHNlCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgICAgIGZpCisgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorICAgICAgICRSTSBcJGRscGF0aCcKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwogICAgIDs7CiAKICAgKikKKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgIHNobGlicGF0aF92YXI9UEFUSAogICA7OwpAQCAtOTgwOCw3ICsxMDc5Nyw3IEBACiAgIDs7CiAKIGRndXgqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKQEAgLTk4MTYsMTAgKzEwODA1LDYgQEAKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIAotZnJlZWJzZDEqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCiBmcmVlYnNkKiB8IGRyYWdvbmZseSopCiAgICMgRHJhZ29uRmx5IGRvZXMgbm90IGhhdmUgYW91dC4gIFdoZW4vaWYgdGhleSBpbXBsZW1lbnQgYSBuZXcKICAgIyB2ZXJzaW9uaW5nIG1lY2hhbmlzbSwgYWRqdXN0IHRoaXMuCkBAIC05ODI3LDcgKzEwODEyLDcgQEAKICAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKICAgZWxzZQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBmcmVlYnNkWzEyM10qKSBvYmpmb3JtYXQ9YW91dCA7OworICAgIGZyZWVic2RbMjNdLiopIG9iamZvcm1hdD1hb3V0IDs7CiAgICAgKikgb2JqZm9ybWF0PWVsZiA7OwogICAgIGVzYWMKICAgZmkKQEAgLTk4NDUsNyArMTA4MzAsNyBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgZnJlZWJzZDIqKQorICBmcmVlYnNkMi4qKQogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgICA7OwogICBmcmVlYnNkMy5bMDFdKiB8IGZyZWVic2RlbGYzLlswMV0qKQpAQCAtOTg2NSwxMiArMTA4NTAsMjYgQEAKICAgOzsKIAogZ251KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK2hhaWt1KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTk5MTYsMTIgKzEwOTE1LDE0IEBACiAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgICA7OwogICBlc2FjCi0gICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LgorICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NSwgLi4uCiAgIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDU1NSAkbGliJworICAjIG9yIGZhaWxzIG91dHJpZ2h0LCBzbyBvdmVycmlkZSBhdG9taWNhbGx5OgorICBpbnN0YWxsX292ZXJyaWRlX21vZGU9NTU1CiAgIDs7CiAKIGludGVyaXhbMy05XSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKQEAgLTk5MzcsNyArMTA5MzgsNyBAQAogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQogCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KLQkJdmVyc2lvbl90eXBlPWxpbnV4CisJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CiAJZmkgOzsKQEAgLTk5NzQsOSArMTA5NzUsOSBAQAogICBkeW5hbWljX2xpbmtlcj1ubwogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyMgVGhpcyBtdXN0IGJlIGdsaWJjL0VMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtOTk4NCwxMiArMTA5ODUsMTcgQEAKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisKICAgIyBTb21lIGJpbnV0aWxzIGxkIGFyZSBwYXRjaGVkIHRvIHNldCBEVF9SVU5QQVRICi0gIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICBzYXZlX2xpYmRpcj0kbGliZGlyCi0gIGV2YWwgImxpYmRpcj0vZm9vOyB3bD1cIiRsdF9wcm9nX2NvbXBpbGVyX3dsXCI7IFwKLSAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgJHtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgICBzYXZlX2xpYmRpcj0kbGliZGlyCisgICAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJGx0X3Byb2dfY29tcGlsZXJfd2xcIjsgXAorCSBMREZMQUdTPVwiXCRMREZMQUdTICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogCiBpbnQKQEAgLTEwMDAyLDI2ICsxMTAwOCwyNyBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiAgIGlmICAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGw7IHRoZW4gOgotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIGx0X2N2X3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKIGZpCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCi0gIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgICBsaWJkaXI9JHNhdmVfbGliZGlyCisKK2ZpCisKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSRsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgKIAogICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KICAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCiAgICMgYmVmb3JlIHRoaXMgY2FuIGJlIGVuYWJsZWQuCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKIAotICAjIEFkZCBBQkktc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIHN5c3RlbSBsaWJyYXJ5IHBhdGguCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliNjQgL3Vzci9saWI2NCAvbGliIC91c3IvbGliIgotCiAgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgJGx0X2xkX2V4dHJhIgorICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFwkMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXCQwOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZztzLyIvL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgogICBmaQogCiAgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgpAQCAtMTAwMzMsNiArMTEwNDAsMTggQEAKICAgZHluYW1pY19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKICAgOzsKIAorbmV0YnNkZWxmKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJworICA7OworCiBuZXRic2QqKQogICB2ZXJzaW9uX3R5cGU9c3Vub3MKICAgbmVlZF9saWJfcHJlZml4PW5vCkBAIC0xMDA1Miw3ICsxMTA3MSw3IEBACiAgIDs7CiAKIG5ld3NvczYpCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCkBAIC0xMDEyMSw3ICsxMTE0MCw3IEBACiAgIDs7CiAKIHNvbGFyaXMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMTAxNDYsNyArMTExNjUsNyBAQAogICA7OwogCiBzeXN2NCB8IHN5c3Y0LjMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTEwMTcwLDcgKzExMTg5LDcgQEAKIAogc3lzdjQqTVAqKQogICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCi0gICAgdmVyc2lvbl90eXBlPWxpbnV4CisgICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3InCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTEwMjAxLDcgKzExMjIwLDcgQEAKIAogdHBmKikKICAgIyBUUEYgaXMgYSBjcm9zcy10YXJnZXQgb25seS4gIFByZWZlcnJlZCBjcm9zcy1ob3N0ID0gR05VL0xpbnV4LgotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMTAyMTEsNyArMTEyMzAsNyBAQAogICA7OwogCiB1dHM0KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0xMDMyMyw2ICsxMTM0MiwxMSBAQAogCiAKIAorCisKKworCisKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHByb2dyYW1zIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gcHJvZ3JhbXMuLi4gIiA+JjY7IH0KIGhhcmRjb2RlX2FjdGlvbj0KQEAgLTEwMzk1LDcgKzExNDE5LDcgQEAKICAgIyBpZiBsaWJkbCBpcyBpbnN0YWxsZWQgd2UgbmVlZCB0byBsaW5rIGFnYWluc3QgaXQKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsX2Rsb3BlbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDQyOSw3ICsxMTQ1Myw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgogZWxzZQogCkBAIC0xMDQ0MywxMiArMTE0NjcsMTIgQEAKIAogICAqKQogICAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInNobF9sb2FkIiAiYWNfY3ZfZnVuY19zaGxfbG9hZCIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19zaGxfbG9hZCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX3NobF9sb2FkIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49InNobF9sb2FkIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzaGxfbG9hZCBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsZF9zaGxfbG9hZCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbGRfc2hsX2xvYWQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDQ4MiwxNiArMTE1MDYsMTYgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjY7IH0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA9IHh5ZXM7IHRoZW4gOgogICBsdF9jdl9kbG9wZW49InNobF9sb2FkIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiCiBlbHNlCiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRsb3BlbiIgImFjX2N2X2Z1bmNfZGxvcGVuIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCiBlbHNlCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfZGxfZGxvcGVuK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfbGliX2RsX2Rsb3Blbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKQEAgLTEwNTI1LDEyICsxMTU0OSwxMiBAQAogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNjsgfQotaWYgdGVzdCAieCRhY19jdl9saWJfZGxfZGxvcGVuIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbF9kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCIKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9saWJfc3ZsZF9kbG9wZW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9saWJfc3ZsZF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDU2NCwxMiArMTE1ODgsMTIgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zdmxkX2Rsb3BlbiIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID0geHllczsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIgogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbGRfbGluayBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfbGliX2RsZF9kbGRfbGluaytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2xpYl9kbGRfZGxkX2xpbmsrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCkBAIC0xMDYwMyw3ICsxMTYyNyw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPSB4eWVzOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuPSJkbGRfbGluayIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGxkIgogZmkKIApAQCAtMTA2NDQsNyArMTE2NjgsNyBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZi4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsdF9jdl9kbG9wZW5fc2VsZitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2Rsb3Blbl9zZWxmKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgCSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgpAQCAtMTA2NTMsNyArMTE2NzcsNyBAQAogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCiAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0jbGluZSAxMDY1NiAiY29uZmlndXJlIgorI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBIQVZFX0RMRkNOX0gKQEAgLTEwNjk0LDcgKzExNzE4LDEzIEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXZvaWQgZm5vcmQoKSB7IGludCBpPTQyO30KKy8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQoraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworI2VuZGlmCisKK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQogaW50IG1haW4gKCkKIHsKICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CkBAIC0xMDcwMyw3ICsxMTczMywxMSBAQAogICBpZiAoc2VsZikKICAgICB7CiAgICAgICBpZiAoZGxzeW0gKHNlbGYsImZub3JkIikpICAgICAgIHN0YXR1cyA9ICRsdF9kbG5vX3VzY29yZTsKLSAgICAgIGVsc2UgaWYgKGRsc3ltKCBzZWxmLCJfZm5vcmQiKSkgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICBlbHNlCisgICAgICAgIHsKKwkgIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpICBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgICAgICBlbHNlIHB1dHMgKGRsZXJyb3IgKCkpOworCX0KICAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLwogICAgIH0KICAgZWxzZQpAQCAtMTA3NDAsNyArMTE3NzQsNyBAQAogICAgICAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wgZXZhbCBMREZMQUdTPVwiXCRMREZMQUdTICRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY1wiCiAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2x0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2x0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYys6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIAkgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKQEAgLTEwNzQ5LDcgKzExNzgzLDcgQEAKICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgogICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotI2xpbmUgMTA3NTIgImNvbmZpZ3VyZSIKKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWYgSEFWRV9ETEZDTl9ICkBAIC0xMDc5MCw3ICsxMTgyNCwxMyBAQAogIyAgZW5kaWYKICNlbmRpZgogCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9CisvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyNlbmRpZgorCitpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KIGludCBtYWluICgpCiB7CiAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwpAQCAtMTA3OTksNyArMTE4MzksMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTEwOTY4LDYgKzEyMDEyLDggQEAKIAogCiAKKworCiAgICAgICAgIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBsaWJ0b29sIgogCiAKQEAgLTEwOTc4LDYgKzEyMDI0LDk3NyBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQyBjb21waWxlciB2ZW5kb3IiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEMgY29tcGlsZXIgdmVuZG9yLi4uICIgPiY2OyB9CitpZiAke2F4X2N2X2NfY29tcGlsZXJfdmVuZG9yKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgIyBub3RlOiBkb24ndCBjaGVjayBmb3IgZ2NjIGZpcnN0IHNpbmNlIHNvbWUgb3RoZXIgY29tcGlsZXJzIGRlZmluZSBfX0dOVUNfXworICB2ZW5kb3JzPSJpbnRlbDogICAgIF9fSUNDLF9fRUNDLF9fSU5URUxfQ09NUElMRVIKKyAgICAgICAgICAgaWJtOiAgICAgICBfX3hsY19fLF9feGxDX18sX19JQk1DX18sX19JQk1DUFBfXworICAgICAgICAgICBwYXRoc2NhbGU6IF9fUEFUSENDX18sX19QQVRIU0NBTEVfXworICAgICAgICAgICBjbGFuZzogICAgIF9fY2xhbmdfXworICAgICAgICAgICBnbnU6ICAgICAgIF9fR05VQ19fCisgICAgICAgICAgIHN1bjogICAgICAgX19TVU5QUk9fQyxfX1NVTlBST19DQworICAgICAgICAgICBocDogICAgICAgIF9fSFBfY2MsX19IUF9hQ0MKKyAgICAgICAgICAgZGVjOiAgICAgICBfX0RFQ0MsX19ERUNDWFgsX19ERUNDX1ZFUixfX0RFQ0NYWF9WRVIKKyAgICAgICAgICAgYm9ybGFuZDogICBfX0JPUkxBTkRDX18sX19UVVJCT0NfXworICAgICAgICAgICBjb21lYXU6ICAgIF9fQ09NT19fCisgICAgICAgICAgIGNyYXk6ICAgICAgX0NSQVlDCisgICAgICAgICAgIGthaTogICAgICAgX19LQ0MKKyAgICAgICAgICAgbGNjOiAgICAgICBfX0xDQ19fCisgICAgICAgICAgIHNnaTogICAgICAgX19zZ2ksc2dpCisgICAgICAgICAgIG1pY3Jvc29mdDogX01TQ19WRVIKKyAgICAgICAgICAgbWV0cm93ZXJrczogX19NV0VSS1NfXworICAgICAgICAgICB3YXRjb206ICAgIF9fV0FUQ09NQ19fCisgICAgICAgICAgIHBvcnRsYW5kOiAgX19QR0kKKyAgICAgICAgICAgdW5rbm93bjogICBVTktOT1dOIgorICBmb3IgdmVudGVzdCBpbiAkdmVuZG9yczsgZG8KKyAgICBjYXNlICR2ZW50ZXN0IGluCisgICAgICAqOikgdmVuZG9yPSR2ZW50ZXN0OyBjb250aW51ZSA7OworICAgICAgKikgIHZlbmNwcD0iZGVmaW5lZCgiYGVjaG8gJHZlbnRlc3QgfCBzZWQgJ3MvLC8pIHx8IGRlZmluZWQoL2cnYCIpIiA7OworICAgIGVzYWMKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgICAgICAjaWYgISgkdmVuY3BwKQorICAgICAgICB0aGlzaXNhbmVycm9yOworICAgICAgI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBicmVhaworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBkb25lCisgIGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yPWBlY2hvICR2ZW5kb3IgfCBjdXQgLWQ6IC1mMWAKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IiID4mNQorJGFzX2VjaG8gIiRheF9jdl9jX2NvbXBpbGVyX3ZlbmRvciIgPiY2OyB9CisKKworCisKKworCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9ydGFibGUtYmluYXJ5IHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3BvcnRhYmxlX2JpbmFyeStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3BvcnRhYmxlX2JpbmFyeTsgYWN4X21heG9wdF9wb3J0YWJsZT0kd2l0aHZhbAorZWxzZQorICBhY3hfbWF4b3B0X3BvcnRhYmxlPW5vCitmaQorCisKKyMgVHJ5IHRvIGRldGVybWluZSAiZ29vZCIgbmF0aXZlIGNvbXBpbGVyIGZsYWdzIGlmIG5vbmUgc3BlY2lmaWVkIHZpYSBDRkxBR1MKK2lmIHRlc3QgIiRhY190ZXN0X0NGTEFHUyIgIT0gInNldCI7IHRoZW4KKyAgQ0ZMQUdTPSIiCisgIGNhc2UgJGF4X2N2X2NfY29tcGlsZXJfdmVuZG9yIGluCisgICAgZGVjKSBDRkxBR1M9Ii1uZXdjIC13MCAtTzUgLWFuc2lfYWxpYXMgLWFuc2lfYXJncyAtZnBfcmVvcmRlciAtdHVuZSBob3N0IgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisgICAgICAgICAgIENGTEFHUz0iJENGTEFHUyAtYXJjaCBob3N0IgorICAgICAgICAgZmk7OworCisgICAgc3VuKSBDRkxBR1M9Ii1uYXRpdmUgLWZhc3QgLXhPNSAtZGFsaWduIgorCSBpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geHllczsgdGhlbgorCSAgIENGTEFHUz0iJENGTEFHUyAteGFyY2g9Z2VuZXJpYyIKKyAgICAgICAgIGZpOzsKKworICAgIGhwKSAgQ0ZMQUdTPSIrT2FsbCArT3B0cnNfYW5zaSArRFNuYXRpdmUiCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuCisJICAgQ0ZMQUdTPSIkQ0ZMQUdTICtEQXBvcnRhYmxlIgorCSBmaTs7CisKKyAgICBpYm0pIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKyAgICAgICAgICAgeGxjX29wdD0iLXFhcmNoPWF1dG8gLXF0dW5lPWF1dG8iCisJIGVsc2UKKyAgICAgICAgICAgeGxjX29wdD0iLXF0dW5lPWF1dG8iCisJIGZpCisgICAgICAgICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJHhsY19vcHQiIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkeGxjX29wdCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkeGxjX29wdC4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICR4bGNfb3B0IgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgQ0ZMQUdTPSItTzMgLXFhbnNpYWxpYXMgLXcgJHhsY19vcHQiCitlbHNlCisgIENGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13IgorICAgICAgICAgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBZb3Ugc2VlbSB0byBoYXZlIHRoZSBJQk0gIEMgY29tcGlsZXIuICBJdCBpcyAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgcmVjb21tZW5kZWQgZm9yIGJlc3QgcGVyZm9ybWFuY2UgdGhhdCB5b3UgdXNlOiAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgIENGTEFHUz0tTzMgLXFhcmNoPXh4eCAtcXR1bmU9eHh4IC1xYW5zaWFsaWFzIC13ICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICAgICAgICAgICAgICAgICAgICBeXl4gICAgICAgIF5eXiAgICAgICAgICAgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHdoZXJlIHh4eCBpcyBwd3IyLCBwd3IzLCA2MDQsIG9yIHdoYXRldmVyIGtpbmQgb2YgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBDUFUgeW91IGhhdmUuICAoU2V0IHRoZSBDRkxBR1MgZW52aXJvbm1lbnQgdmFyLiAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgYW5kIHJlLXJ1biBjb25maWd1cmUuKSAgRm9yIG1vcmUgaW5mbywgbWFuIGNjLiAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKK2ZpCisKKyAgICAgICAgIDs7CisKKyAgICBpbnRlbCkgQ0ZMQUdTPSItTzMgLWFuc2lfYWxpYXMiCisJaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorCSAgaWNjX2FyY2hmbGFnPXVua25vd24KKwkgIGljY19mbGFncz0iIgorCSAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgaTY4Nip8eDg2XzY0KikKKyAgICAgICAgICAgICAgIyBpY2MgYWNjZXB0cyBnY2MgYXNzZW1ibHkgc3ludGF4LCBzbyB0aGVzZSBzaG91bGQgd29yazoKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAwIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzArOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMD11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMCwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMD11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMCIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMCIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgeDg2IGNwdWlkIDEgb3V0cHV0Li4uICIgPiY2OyB9CitpZiAke2F4X2N2X2djY194ODZfY3B1aWRfMSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPXVua25vd24KK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQKK21haW4gKCkKK3sKKworICAgICBpbnQgb3AgPSAxLCBlYXgsIGVieCwgZWN4LCBlZHg7CisgICAgIEZJTEUgKmY7CisgICAgICBfX2FzbV9fKCJjcHVpZCIKKyAgICAgICAgOiAiPWEiIChlYXgpLCAiPWIiIChlYngpLCAiPWMiIChlY3gpLCAiPWQiIChlZHgpCisgICAgICAgIDogImEiIChvcCkpOworICAgICBmID0gZm9wZW4oImNvbmZ0ZXN0X2NwdWlkIiwgInciKTsgaWYgKCFmKSByZXR1cm4gMTsKKyAgICAgZnByaW50ZihmLCAiJXg6JXg6JXg6JXhcbiIsIGVheCwgZWJ4LCBlY3gsIGVkeCk7CisgICAgIGZjbG9zZShmKTsKKyAgICAgcmV0dXJuIDA7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT1gY2F0IGNvbmZ0ZXN0X2NwdWlkYDsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2Vsc2UKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xPXVua25vd247IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIiA+JjY7IH0KK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworCisJICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluICMgc2VlIEFYX0dDQ19BUkNIRkxBRworICAgICAgICAgICAgICAgICo6NzU2ZTY1NDc6KjoqKSAjIEludGVsCisgICAgICAgICAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKyAgICAgICAgICAgICAgICAgICAgKjZhPzoqWzIzNF06KjoqfCo2Wzc4OWJdPzoqOio6KikgaWNjX2ZsYWdzPSIteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmYzWzM0N106KjoqOip8KmY0MTM0NzoqOio6KikgaWNjX2ZsYWdzPSIteFAgLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmY/PzoqOio6KikgaWNjX2ZsYWdzPSIteE4gLXhXIC14SyI7OworICAgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2ZsYWdzIiAhPSB4OyB0aGVuCisgICAgICAgICAgICBmb3IgZmxhZyBpbiAkaWNjX2ZsYWdzOyBkbworICAgICAgICAgICAgICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJGZsYWciIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZy4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICRmbGFnIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgaWNjX2FyY2hmbGFnPSRmbGFnOyBicmVhaworZWxzZQorICA6CitmaQorCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpY2MgYXJjaGl0ZWN0dXJlIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGljYyBhcmNoaXRlY3R1cmUgZmxhZy4uLiAiID4mNjsgfQorCSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRpY2NfYXJjaGZsYWciID4mNQorJGFzX2VjaG8gIiRpY2NfYXJjaGZsYWciID4mNjsgfQorICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2FyY2hmbGFnIiAhPSB4dW5rbm93bjsgdGhlbgorICAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRpY2NfYXJjaGZsYWciCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKwk7OworCisgICAgZ251KQorICAgICAjIGRlZmF1bHQgb3B0aW1pemF0aW9uIGZsYWdzIGZvciBnY2Mgb24gYWxsIHN5c3RlbXMKKyAgICAgQ0ZMQUdTPSItTzMgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKKyAgICAgIyAtbWFsaWduLWRvdWJsZSBmb3IgeDg2IHN5c3RlbXMKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtbWFsaWduLWRvdWJsZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtbWFsaWduLWRvdWJsZS4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAtbWFsaWduLWRvdWJsZSIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGU9eWVzCitlbHNlCisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGU9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jaGVja19jZmxhZ3NfX19tYWxpZ25fZG91YmxlIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fbWFsaWduX2RvdWJsZSIgPiY2OyB9CitpZiB0ZXN0IHgiJGF4X2N2X2NoZWNrX2NmbGFnc19fX21hbGlnbl9kb3VibGUiID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iJENGTEFHUyAtbWFsaWduLWRvdWJsZSIKK2Vsc2UKKyAgOgorZmkKKworCisgICAgICMgIC1mc3RyaWN0LWFsaWFzaW5nIGZvciBnY2MtMi45NSsKKyAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZnN0cmljdC1hbGlhc2luZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAtZnN0cmljdC1hbGlhc2luZy4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAtZnN0cmljdC1hbGlhc2luZyIKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmc9eWVzCitlbHNlCisgIGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmc9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgQ0ZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9jaGVja19jZmxhZ3NfX19mc3RyaWN0X2FsaWFzaW5nIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZnN0cmljdF9hbGlhc2luZyIgPiY2OyB9CitpZiB0ZXN0IHgiJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZzdHJpY3RfYWxpYXNpbmciID0geHllczsgdGhlbiA6CisgIENGTEFHUz0iJENGTEFHUyAtZnN0cmljdC1hbGlhc2luZyIKK2Vsc2UKKyAgOgorZmkKKworCisgICAgICMgbm90ZSB0aGF0IHdlIGVuYWJsZSAidW5zYWZlIiBmcCBvcHRpbWl6YXRpb24gd2l0aCBvdGhlciBjb21waWxlcnMsIHRvbworICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1mZmFzdC1tYXRoIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzIC1mZmFzdC1tYXRoLi4uICIgPiY2OyB9CitpZiAke2F4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgIC1mZmFzdC1tYXRoIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aD15ZXMKK2Vsc2UKKyAgYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2NoZWNrX2NmbGFnc19fX2ZmYXN0X21hdGgiID4mNQorJGFzX2VjaG8gIiRheF9jdl9jaGVja19jZmxhZ3NfX19mZmFzdF9tYXRoIiA+JjY7IH0KK2lmIHRlc3QgeCIkYXhfY3ZfY2hlY2tfY2ZsYWdzX19fZmZhc3RfbWF0aCIgPSB4eWVzOyB0aGVuIDoKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZmFzdC1tYXRoIgorZWxzZQorICA6CitmaQorCisKKworCisKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nY2MtYXJjaCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfZ2NjX2FyY2grc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2djY19hcmNoOyBheF9nY2NfYXJjaD0kd2l0aHZhbAorZWxzZQorICBheF9nY2NfYXJjaD15ZXMKK2ZpCisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWcuLi4gIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAiID4mNQorJGFzX2VjaG8gIiIgPiY2OyB9CitpZiAke2F4X2N2X2djY19hcmNoZmxhZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKK2F4X2N2X2djY19hcmNoZmxhZz0idW5rbm93biIKKworaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgPSB4eWVzOyB0aGVuCitheF9nY2NfYXJjaD0iIgoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorY2FzZSAkaG9zdF9jcHUgaW4KKyAgaVszNDU2XTg2Knx4ODZfNjQqKSAjIHVzZSBjcHVpZCBjb2RlcywgaW4gcGFydCBmcm9tIHg4NmluZm8tMS43IGJ5IEQuIEpvbmVzCisKK2FjX2V4dD1jCithY19jcHA9JyRDUFAgJENQUEZMQUdTJworYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKK2FjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDg2IGNwdWlkIDAgb3V0cHV0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4ODYgY3B1aWQgMCBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludAorbWFpbiAoKQoreworCisgICAgIGludCBvcCA9IDAsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wPWBjYXQgY29uZnRlc3RfY3B1aWRgOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZWxzZQorICBheF9jdl9nY2NfeDg2X2NwdWlkXzA9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWQKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNQorJGFzX2VjaG8gIiRheF9jdl9nY2NfeDg2X2NwdWlkXzAiID4mNjsgfQorYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCisKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMSBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAxIG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzErOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMSwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzE9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMT11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMSIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzAgaW4KKyAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMSBpbgorCSAgICAqNVs0OF0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tbXggcGVudGl1bSIgOzsKKwkgICAgKjU/PzoqOio6KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgICAqNlszNDU2XT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbMDFdOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0yIHBlbnRpdW1wcm8iIDs7CisJICAgICo2YT86KlsyMzRdOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2WzlkXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtLW0gcGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjZbNzhiXT86KjoqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNj8/Oio6KjoqKSBheF9nY2NfYXJjaD1wZW50aXVtcHJvIDs7CisgICAgICAgICAgICAqZjNbMzQ3XToqOio6KnwqZjQxMzQ3Oio6KjoqKQorCQljYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgICAgICAgICAgeDg2XzY0KikgYXhfZ2NjX2FyY2g9Im5vY29uYSBwZW50aXVtNCBwZW50aXVtcHJvIiA7OworICAgICAgICAgICAgICAgICAgKikgYXhfZ2NjX2FyY2g9InByZXNjb3R0IHBlbnRpdW00IHBlbnRpdW1wcm8iIDs7CisgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW00IHBlbnRpdW1wcm8iOzsKKyAgICAgICAgICBlc2FjIDs7CisgICAgICAgKjo2ODc0NzU0MToqOiopICMgQU1ECisgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisJICAgICo1WzY3XT86KjoqOiopIGF4X2djY19hcmNoPWs2IDs7CisJICAgICo1WzhkXT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0yIGs2IiA7OworCSAgICAqNVs5XT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0zIGs2IiA7OworCSAgICAqNjA/Oio6KjoqKSBheF9nY2NfYXJjaD1rNyA7OworCSAgICAqNlsxMl0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uIGs3IiA7OworCSAgICAqNlszNF0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLXRiaXJkIGs3IiA7OworCSAgICAqNjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLTQgYXRobG9uIGs3IiA7OworCSAgICAqNls2OGFdPzoqOio6KikKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB4ODYgY3B1aWQgMHg4MDAwMDAwNiBvdXRwdXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHg4NiBjcHVpZCAweDgwMDAwMDA2IG91dHB1dC4uLiAiID4mNjsgfQoraWYgJHtheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNj11bmtub3duCitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxzdGRpby5oPgoraW50CittYWluICgpCit7CisKKyAgICAgaW50IG9wID0gMHg4MDAwMDAwNiwgZWF4LCBlYngsIGVjeCwgZWR4OworICAgICBGSUxFICpmOworICAgICAgX19hc21fXygiY3B1aWQiCisgICAgICAgIDogIj1hIiAoZWF4KSwgIj1iIiAoZWJ4KSwgIj1jIiAoZWN4KSwgIj1kIiAoZWR4KQorICAgICAgICA6ICJhIiAob3ApKTsKKyAgICAgZiA9IGZvcGVuKCJjb25mdGVzdF9jcHVpZCIsICJ3Iik7IGlmICghZikgcmV0dXJuIDE7CisgICAgIGZwcmludGYoZiwgIiV4OiV4OiV4OiV4XG4iLCBlYXgsIGVieCwgZWN4LCBlZHgpOworICAgICBmY2xvc2UoZik7CisgICAgIHJldHVybiAwOworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgorICBheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDY9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkCitlbHNlCisgIGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNj11bmtub3duOyBybSAtZiBjb25mdGVzdF9jcHVpZAorZmkKK3JtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKKyAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiIgPiY1CiskYXNfZWNobyAiJGF4X2N2X2djY194ODZfY3B1aWRfMHg4MDAwMDAwNiIgPiY2OyB9CithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKyAjIEwyIGNhY2hlIHNpemUKKwkgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8weDgwMDAwMDA2IGluCisgICAgICAgICAgICAgICAgICo6KjoqWzEtOWEtZl0/Pz8/Pz86KikgIyAoTDIgPSBlY3ggPj4gMTYpID49IDI1NgorCQkJYXhfZ2NjX2FyY2g9ImF0aGxvbi14cCBhdGhsb24tNCBhdGhsb24gazciIDs7CisgICAgICAgICAgICAgICAgICopIGF4X2djY19hcmNoPSJhdGhsb24tNCBhdGhsb24gazciIDs7CisJICAgICAgIGVzYWMgOzsKKwkgICAgKmZbNGNlZjhiXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb242NCBrOCIgOzsKKwkgICAgKmY1PzoqOio6KikgYXhfZ2NjX2FyY2g9Im9wdGVyb24gazgiIDs7CisJICAgICpmNz86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tZnggb3B0ZXJvbiBrOCIgOzsKKwkgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9Ims4IiA7OworICAgICAgICAgIGVzYWMgOzsKKwkqOjc0NmU2NTQzOio6KikgIyBJRFQKKwkgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgICo1ND86KjoqOiopIGF4X2djY19hcmNoPXdpbmNoaXAtYzYgOzsKKwkgICAgICo1OD86KjoqOiopIGF4X2djY19hcmNoPXdpbmNoaXAyIDs7CisJICAgICAqNls3OF0/Oio6KjoqKSBheF9nY2NfYXJjaD1jMyA7OworCSAgICAgKjY5PzoqOio6KikgYXhfZ2NjX2FyY2g9ImMzLTIgYzMiIDs7CisJICAgZXNhYyA7OworICAgICBlc2FjCisgICAgIGlmIHRlc3QgeCIkYXhfZ2NjX2FyY2giID0geDsgdGhlbiAjIGZhbGxiYWNrCisJY2FzZSAkaG9zdF9jcHUgaW4KKwkgIGk1ODYqKSBheF9nY2NfYXJjaD1wZW50aXVtIDs7CisJICBpNjg2KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICBlc2FjCisgICAgIGZpCisgICAgIDs7CisKKyAgc3BhcmMqKQorICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBydGRpYWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHBydGRpYWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1BSVERJQUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRQUlRESUFHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1BSVERJQUc9IiRQUlRESUFHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorYXNfZHVtbXk9IiRQQVRIOi91c3IvcGxhdGZvcm0vYHVuYW1lIC1pYC9zYmluLzovdXNyL3BsYXRmb3JtL2B1bmFtZSAtbWAvc2Jpbi8iCitmb3IgYXNfZGlyIGluICRhc19kdW1teQorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9QUlRESUFHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1BSVERJQUciICYmIGFjX2N2X3BhdGhfUFJURElBRz0icHJ0ZGlhZyIKKyAgOzsKK2VzYWMKK2ZpCitQUlRESUFHPSRhY19jdl9wYXRoX1BSVERJQUcKK2lmIHRlc3QgLW4gIiRQUlRESUFHIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBSVERJQUciID4mNQorJGFzX2VjaG8gIiRQUlRESUFHIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgICAgY3B1dHlwZT1gKCgoZ3JlcCBjcHUgL3Byb2MvY3B1aW5mbyB8IGN1dCAtZDogLWYyKSA7ICgkUFJURElBRyAtdiB8Z3JlcCAtaSBzcGFyYykgOyBncmVwIC1pIGNwdSAvdmFyL3J1bi9kbWVzZy5ib290ICkgfCBoZWFkIC1uIDEpIDI+IC9kZXYvbnVsbGAKKyAgICAgY3B1dHlwZT1gZWNobyAiJGNwdXR5cGUiIHwgdHIgLWQgJyAtJyB8dHIgJGFzX2NyX0xFVFRFUlMgJGFzX2NyX2xldHRlcnNgCisgICAgIGNhc2UgJGNwdXR5cGUgaW4KKyAgICAgICAgICp1bHRyYXNwYXJjaXYqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYzQgdWx0cmFzcGFyYzMgdWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICp1bHRyYXNwYXJjaWlpKikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyYyopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnN1cGVyc3BhcmMqfCp0bXMzOTB6NVswNV0qKSBheF9nY2NfYXJjaD0ic3VwZXJzcGFyYyB2OCIgOzsKKyAgICAgICAgICpoeXBlcnNwYXJjKnwqcnQ2MlswNTZdKikgYXhfZ2NjX2FyY2g9Imh5cGVyc3BhcmMgdjgiIDs7CisgICAgICAgICAqY3lwcmVzcyopIGF4X2djY19hcmNoPWN5cHJlc3MgOzsKKyAgICAgZXNhYyA7OworCisgIGFscGhhZXY1KSBheF9nY2NfYXJjaD1ldjUgOzsKKyAgYWxwaGFldjU2KSBheF9nY2NfYXJjaD1ldjU2IDs7CisgIGFscGhhcGNhNTYpIGF4X2djY19hcmNoPSJwY2E1NiBldjU2IiA7OworICBhbHBoYXBjYTU3KSBheF9nY2NfYXJjaD0icGNhNTcgcGNhNTYgZXY1NiIgOzsKKyAgYWxwaGFldjYpIGF4X2djY19hcmNoPWV2NiA7OworICBhbHBoYWV2NjcpIGF4X2djY19hcmNoPWV2NjcgOzsKKyAgYWxwaGFldjY4KSBheF9nY2NfYXJjaD0iZXY2OCBldjY3IiA7OworICBhbHBoYWV2NjkpIGF4X2djY19hcmNoPSJldjY5IGV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjcpIGF4X2djY19hcmNoPSJldjcgZXY2OSBldjY4IGV2NjciIDs7CisgIGFscGhhZXY3OSkgYXhfZ2NjX2FyY2g9ImV2NzkgZXY3IGV2NjkgZXY2OCBldjY3IiA7OworCisgIHBvd2VycGMqKQorICAgICBjcHV0eXBlPWAoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBoZWFkIC1uIDEgfCBjdXQgLWQ6IC1mMiB8IGN1dCAtZCwgLWYxIHwgc2VkICdzLyAvL2cnKSA7IC91c3IvYmluL21hY2hpbmUgOyAvYmluL21hY2hpbmU7IGdyZXAgQ1BVIC92YXIvcnVuL2RtZXNnLmJvb3QgfCBoZWFkIC1uIDEgfCBjdXQgLWQiICIgLWYyKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gJGNwdXR5cGUgfCBzZWQgLWUgJ3MvcHBjLy9nO3MvICovL2cnYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgKjc1MCopIGF4X2djY19hcmNoPSI3NTAgRzMiIDs7CisgICAgICAgKjc0MFswLTldKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDc0MDAgRzQiIDs7CisgICAgICAgKjc0WzQtNV1bMC05XSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDUwIEc0IiA7OworICAgICAgICo3NFswLTldWzAtOV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgRzQiIDs7CisgICAgICAgKjk3MCopIGF4X2djY19hcmNoPSI5NzAgRzUgcG93ZXI0Ijs7CisgICAgICAgKlBPV0VSNCp8KnBvd2VyNCp8KmdxKikgYXhfZ2NjX2FyY2g9InBvd2VyNCA5NzAiOzsKKyAgICAgICAqUE9XRVI1KnwqcG93ZXI1KnwqZ3IqfCpncyopIGF4X2djY19hcmNoPSJwb3dlcjUgcG93ZXI0IDk3MCI7OworICAgICAgIDYwM2V2fDgyNDApIGF4X2djY19hcmNoPSIkY3B1dHlwZSA2MDNlIDYwMyI7OworICAgICAgICopIGF4X2djY19hcmNoPSRjcHV0eXBlIDs7CisgICAgIGVzYWMKKyAgICAgYXhfZ2NjX2FyY2g9IiRheF9nY2NfYXJjaCBwb3dlcnBjIgorICAgICA7OworZXNhYworZmkgIyBub3QgY3Jvc3MtY29tcGlsaW5nCitmaSAjIGd1ZXNzIGFyY2gKKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgIT0geCAtYSAieCRheF9nY2NfYXJjaCIgIT0geG5vOyB0aGVuCitmb3IgYXJjaCBpbiAkYXhfZ2NjX2FyY2g7IGRvCisgIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuICMgaWYgd2UgcmVxdWlyZSBwb3J0YWJsZSBjb2RlCisgICAgZmxhZ3M9Ii1tdHVuZT0kYXJjaCIKKyAgICAjIC1tY3B1PSRhcmNoIGFuZCBtJGFyY2ggZ2VuZXJhdGUgbm9ucG9ydGFibGUgY29kZSBvbiBldmVyeSBhcmNoIGV4Y2VwdAorICAgICMgeDg2LiAgQW5kIHNvbWUgb3RoZXIgYXJjaGVzIChlLmcuIEFscGhhKSBkb24ndCBhY2NlcHQgLW10dW5lLiAgR3Jyci4KKyAgICBjYXNlICRob3N0X2NwdSBpbiBpKjg2fHg4Nl82NCopIGZsYWdzPSIkZmxhZ3MgLW1jcHU9JGFyY2ggLW0kYXJjaCI7OyBlc2FjCisgIGVsc2UKKyAgICBmbGFncz0iLW1hcmNoPSRhcmNoIC1tY3B1PSRhcmNoIC1tJGFyY2giCisgIGZpCisgIGZvciBmbGFnIGluICRmbGFnczsgZG8KKyAgICBhc19DQUNIRVZBUj1gJGFzX2VjaG8gImF4X2N2X2NoZWNrX2NmbGFnc19fJGZsYWciIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkZmxhZy4uLiAiID4mNjsgfQoraWYgZXZhbCBcJHskYXNfQ0FDSEVWQVIrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JENGTEFHUworICBDRkxBR1M9IiRDRkxBR1MgICRmbGFnIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgYXhfY3ZfZ2NjX2FyY2hmbGFnPSRmbGFnOyBicmVhaworZWxzZQorICA6CitmaQorCisgIGRvbmUKKyAgdGVzdCAieCRheF9jdl9nY2NfYXJjaGZsYWciID0geHVua25vd24gfHwgYnJlYWsKK2RvbmUKK2ZpCisKK2ZpICMgJEdDQz15ZXMKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBnY2MgYXJjaGl0ZWN0dXJlIGZsYWcuLi4gIiA+JjY7IH0KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA+JjUKKyRhc19lY2hvICIkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA+JjY7IH0KK2lmIHRlc3QgIngkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA9IHh1bmtub3duOyB0aGVuCisgIDoKK2Vsc2UKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICRheF9jdl9nY2NfYXJjaGZsYWciCitmaQorCisgICAgIDs7CisgIGVzYWMKKworICBpZiB0ZXN0IC16ICIkQ0ZMQUdTIjsgdGhlbgorCWVjaG8gIiIKKwllY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBEb24ndCBrbm93IHRoZSBiZXN0IENGTEFHUyBmb3IgdGhpcyBzeXN0ZW0gICoiCisgICAgICAgIGVjaG8gIiogVXNlIC4vY29uZmlndXJlIENGTEFHUz0uLi4gdG8gc3BlY2lmeSB5b3VyIG93biBmbGFncyAqIgorCWVjaG8gIiogKG90aGVyd2lzZSwgYSBkZWZhdWx0IG9mIENGTEFHUz0tTzMgd2lsbCBiZSB1c2VkKSAgICAqIgorCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorCWVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSItTzMiCisgIGZpCisKKyAgYXNfQ0FDSEVWQVI9YCRhc19lY2hvICJheF9jdl9jaGVja19jZmxhZ3NfXyRDRkxBR1MiIHwgJGFzX3RyX3NoYAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIEMgY29tcGlsZXIgYWNjZXB0cyAkQ0ZMQUdTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgQyBjb21waWxlciBhY2NlcHRzICRDRkxBR1MuLi4gIiA+JjY7IH0KK2lmIGV2YWwgXCR7JGFzX0NBQ0hFVkFSKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICBheF9jaGVja19zYXZlX2ZsYWdzPSRDRkxBR1MKKyAgQ0ZMQUdTPSIkQ0ZMQUdTICAkQ0ZMQUdTIgorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPXllcyIKK2Vsc2UKKyAgZXZhbCAiJGFzX0NBQ0hFVkFSPW5vIgorZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorICBDRkxBR1M9JGF4X2NoZWNrX3NhdmVfZmxhZ3MKK2ZpCitldmFsIGFjX3Jlcz1cJCRhc19DQUNIRVZBUgorCSAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3JlcyIgPiY1CiskYXNfZWNobyAiJGFjX3JlcyIgPiY2OyB9CitpZiB0ZXN0IHgiYGV2YWwgJ2FzX3ZhbD0keyckYXNfQ0FDSEVWQVInfTskYXNfZWNobyAiJGFzX3ZhbCInYCIgPSB4eWVzOyB0aGVuIDoKKyAgOgorZWxzZQorCisJZWNobyAiIgorICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiKiBXQVJOSU5HOiBUaGUgZ3Vlc3NlZCBDRkxBR1MgZG9uJ3Qgc2VlbSB0byB3b3JrIHdpdGggICoiCisgICAgICAgIGVjaG8gIiogeW91ciBjb21waWxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIgorICAgICAgICBlY2hvICIqIFVzZSAuL2NvbmZpZ3VyZSBDRkxBR1M9Li4uIHRvIHNwZWNpZnkgeW91ciBvd24gZmxhZ3MgKiIKKyAgICAgICAgZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisgICAgICAgIGVjaG8gIiIKKyAgICAgICAgQ0ZMQUdTPSIiCisKK2ZpCisKKworZmkKKworYWNfZXh0PWMKK2FjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCithY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCithY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JworYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIENGTEFHUyBmb3IgbWF4aW11bSB3YXJuaW5ncyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBDRkxBR1MgZm9yIG1heGltdW0gd2FybmluZ3MuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfY2ZsYWdzX3dhcm5fYWxsKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsPSJubywgdW5rbm93biIKK2FjX3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorZm9yIGFjX2FyZyBpbiAiLXdhcm4gYWxsICAlIC13YXJuIGFsbCIgICAgICAiLXBlZGFudGljICAlIC1XYWxsIiAgICAgICAgICAiLXhzdHJjb25zdCAlIC12IiAgICAgICAgICAgICAiLXN0ZDEgICAgICAlIC12ZXJib3NlIC13MCAtd2FybnByb3RvcyIgICAgIi1xbGFuZ2x2bD1hbnNpICUgLXFzcmNtc2cgLXFpbmZvPWFsbDpub3BwdDpub3BwYzpub29iczpub2NuZCIgICAgIi1hbnNpIC1hbnNpRSAlIC1mdWxsd2FybiIgICAgIitFU2xpdCAgICAgJSArdzEiICAgICAgICAgICAgIi1YYyAgICAgICAgJSAtcHZjdGwsZnVsbG1zZyIgICAgIi1oIGNvbmZvcm0gJSAtaCBtc2dsZXZlbCAyIiAgICAjCitkbyBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyAiYGVjaG8gJGFjX2FyZyB8IHNlZCAtZSAncywlJS4qLCwnIC1lICdzLCUsLCdgCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKK2ludAorbWFpbiAoKQoreworCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsPWBlY2hvICRhY19hcmcgfCBzZWQgLWUgJ3MsLiolICosLCdgIDsgYnJlYWsKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2RvbmUKK0NGTEFHUz0iJGFjX3NhdmVfQ0ZMQUdTIgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiID4mNQorJGFzX2VjaG8gIiRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiID4mNjsgfQorY2FzZSAiLiRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiIGluCisgICAgIC5va3wub2ssKikgIDs7CisgICAufC5ub3wubm8sKikgIDs7CisgICAqKSBpZiAke0NGTEFHUys6fSBmYWxzZTsgdGhlbiA6CisgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKyAgICAqIiAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsICIqKQorICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IDogQ0ZMQUdTIGFscmVhZHkgY29udGFpbnMgXCRhY19jdl9jZmxhZ3Nfd2Fybl9hbGwiOyB9ID4mNQorICAoOiBDRkxBR1MgYWxyZWFkeSBjb250YWlucyAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorICAgICAgOzsKKyAgICAqKQorICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IDogQ0ZMQUdTPVwiXCRDRkxBR1MgXCRhY19jdl9jZmxhZ3Nfd2Fybl9hbGxcIiI7IH0gPiY1CisgICg6IENGTEFHUz0iJENGTEFHUyAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKyAgICAgIENGTEFHUz0iJENGTEFHUyAkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIgorICAgICAgOzsKKyAgIGVzYWMKK2Vsc2UKKyAgQ0ZMQUdTPSIkYWNfY3ZfY2ZsYWdzX3dhcm5fYWxsIgorZmkKKyA7OworZXNhYworCithY19leHQ9YworYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKK2FjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKK2FjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCithY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251CisKKworaWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgIENGTEFHUz0iJENGTEFHUyAtZmV4Y2VwdGlvbnMiCitmaQorCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbWFpbnRhaW5lci1zcGVjaWZpYyBwb3J0aW9ucyBvZiBNYWtlZmlsZXMuLi4gIiA+JjY7IH0KQEAgLTExMDA1LDcgKzEzMDIyLDcgQEAKIGZvciBhY19oZWFkZXIgaW4gc3lzL21tYW4uaAogZG8gOgogICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAic3lzL21tYW4uaCIgImFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zeXNfbW1hbl9oIiA9IHh5ZXM7IHRoZW4gOgogICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAjZGVmaW5lIEhBVkVfU1lTX01NQU5fSCAxCiBfQUNFT0YKQEAgLTExMDE3LDcgKzEzMDM0LDcgQEAKIGZvciBhY19mdW5jIGluIG1tYXAKIGRvIDoKICAgYWNfZm5fY19jaGVja19mdW5jICIkTElORU5PIiAibW1hcCIgImFjX2N2X2Z1bmNfbW1hcCIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHgiInllczsgdGhlbiA6CitpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfbW1hcCIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX01NQVAgMQogX0FDRU9GCkBAIC0xMTAyNyw3ICsxMzA0NCw3IEBACiAKIAogYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInN5cy9tbWFuLmgiICJhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc3lzX21tYW5faCIgPSB4eWVzOyB0aGVuIDoKICAgbGliZmZpX2hlYWRlcl9zeXNfbW1hbl9oPXllcwogZWxzZQogICBsaWJmZmlfaGVhZGVyX3N5c19tbWFuX2g9bm8KQEAgLTExMDM1LDcgKzEzMDUyLDcgQEAKIAogCiBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJtbWFwIiAiYWNfY3ZfZnVuY19tbWFwIgotaWYgdGVzdCAieCRhY19jdl9mdW5jX21tYXAiID0geCIieWVzOyB0aGVuIDoKK2lmIHRlc3QgIngkYWNfY3ZfZnVuY19tbWFwIiA9IHh5ZXM7IHRoZW4gOgogICBsaWJmZmlfZnVuY19tbWFwPXllcwogZWxzZQogICBsaWJmZmlfZnVuY19tbWFwPW5vCkBAIC0xMTA0OSw3ICsxMzA2Niw3IEBACiBlbHNlCiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgcmVhZC1vbmx5IG1tYXAgb2YgYSBwbGFpbiBmaWxlIHdvcmtzLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2Z1bmNfbW1hcF9maWxlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19tbWFwX2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAjIEFkZCBhIHN5c3RlbSB0byB0aGlzIGJsYWNrbGlzdCBpZgpAQCAtMTEwNjgsNyArMTMwODUsNyBAQAogJGFzX2VjaG8gIiRhY19jdl9mdW5jX21tYXBfZmlsZSIgPiY2OyB9CiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgbW1hcCBmcm9tIC9kZXYvemVybyB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIG1tYXAgZnJvbSAvZGV2L3plcm8gd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tbWFwX2Rldl96ZXJvK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3ZfZnVuY19tbWFwX2Rldl96ZXJvKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgIyBBZGQgYSBzeXN0ZW0gdG8gdGhpcyBibGFja2xpc3QgaWYgaXQgaGFzIG1tYXAoKSBidXQgL2Rldi96ZXJvCkBAIC0xMTA5NCw3ICsxMzExMSw3IEBACiAgICAjIFVubGlrZSAvZGV2L3plcm8sIHRoZSBNQVBfQU5PTihZTU9VUykgZGVmaW5lcyBjYW4gYmUgcHJvYmVkIGZvci4KICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE1BUF9BTk9OKFlNT1VTKSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgTUFQX0FOT04oWU1PVVMpLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X2RlY2xfbWFwX2Fub24rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9kZWNsX21hcF9hbm9uKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTExMzAsNyArMTMxNDcsNyBAQAogICAgZWxzZQogICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgbW1hcCB3aXRoIE1BUF9BTk9OKFlNT1VTKSB3b3JrcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIG1tYXAgd2l0aCBNQVBfQU5PTihZTU9VUykgd29ya3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfZnVuY19tbWFwX2Fub24rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9mdW5jX21tYXBfYW5vbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgICMgQWRkIGEgc3lzdGVtIHRvIHRoaXMgYmxhY2tsaXN0IGlmIGl0IGhhcyBtbWFwKCkgYW5kIE1BUF9BTk9OIG9yCkBAIC0xMTE4MCw3ICsxMzE5Nyw3IEBACiBjYXNlICIkaG9zdCIgaW4KICAgYWxwaGEqLSotKikKIAlUQVJHRVQ9QUxQSEE7IFRBUkdFVERJUj1hbHBoYTsKLQkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgorCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2VhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19MT05HX0RPVUJMRV8xMjhfXyknCiAJOzsKIApAQCAtMTEyMDgsNyArMTMyMjUsNyBAQAogCVRBUkdFVD1GUlY7IFRBUkdFVERJUj1mcnYKIAk7OwogCi0gIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KikKKyAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqIHwgaHBwYSotKi1vcGVuYnNkKikKIAlUQVJHRVQ9UEFfTElOVVg7IFRBUkdFVERJUj1wYQogCTs7CiAgIGhwcGEqNjQtKi1ocHV4KikKQEAgLTExMjIxLDEwICsxMzIzOCwxNyBAQAogICBpPzg2LSotZnJlZWJzZCogfCBpPzg2LSotb3BlbmJzZCopCiAJVEFSR0VUPVg4Nl9GUkVFQlNEOyBUQVJHRVRESVI9eDg2CiAJOzsKLSAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyopCisgIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqIHwgaT84Ni0qLW9zMiogfCBpPzg2LSotaW50ZXJpeCopCiAJVEFSR0VUPVg4Nl9XSU4zMjsgVEFSR0VURElSPXg4NgotCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSB0aGlzIGZvciBzaGFyZWRsaWIKLQlBTV9MVExERkxBR1M9Ii1uby11bmRlZmluZWQiCisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAgIGk/ODYtKi1kYXJ3aW4qKQogCVRBUkdFVD1YODZfREFSV0lOOyBUQVJHRVRESVI9eDg2CkBAIC0xMTIzNiw3ICsxMzI2MCw3IEBACiAgICAgICAgIFRBUkdFVD1YODY7IFRBUkdFVERJUj14ODYKICAgICAgICAgOzsKICAgaT84Ni0qLSopCi0JVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgorCVRBUkdFVD1YODZfNjQ7IFRBUkdFVERJUj14ODYKIAk7OwogCiAgIGlhNjQqLSotKikKQEAgLTExMjUxLDMwICsxMzI3NSw0MCBAQAogCVRBUkdFVD1NNjhLOyBUQVJHRVRESVI9bTY4awogCTs7CiAKLSAgbWlwcy1zZ2ktaXJpeDUuKiB8IG1pcHMtc2dpLWlyaXg2LiopCisgIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qIHwgbWlwcyotKi1ydGVtcyopCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwotICBtaXBzKi0qLWxpbnV4KikKKyAgbWlwcyotKi1saW51eCogfCBtaXBzKi0qLW9wZW5ic2QqKQogCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlIGZvciBOZXdBQkkuCiAJSEFWRV9MT05HX0RPVUJMRT0nZGVmaW5lZChfX21pcHM2NCknCiAJVEFSR0VUPU1JUFNfSVJJWDsgVEFSR0VURElSPW1pcHMKIAk7OwogCisgIG1veGllLSotKikKKyAgICAgICAgVEFSR0VUPU1PWElFOyBUQVJHRVRESVI9bW94aWUKKwk7OworCiAgIHBvd2VycGMqLSotbGludXgqIHwgcG93ZXJwYy0qLXN5c3YqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGMtKi1hbWlnYW9zKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjLSotYmVvcyopCiAJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWRhcndpbiopCisgIHBvd2VycGMtKi1kYXJ3aW4qIHwgcG93ZXJwYzY0LSotZGFyd2luKikKIAlUQVJHRVQ9UE9XRVJQQ19EQVJXSU47IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKICAgcG93ZXJwYy0qLWFpeCogfCByczYwMDAtKi1haXgqKQogCVRBUkdFVD1QT1dFUlBDX0FJWDsgVEFSR0VURElSPXBvd2VycGMKIAk7OwotICBwb3dlcnBjLSotZnJlZWJzZCopCisgIHBvd2VycGMtKi1mcmVlYnNkKiB8IHBvd2VycGMtKi1vcGVuYnNkKikKIAlUQVJHRVQ9UE9XRVJQQ19GUkVFQlNEOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CisgIHBvd2VycGM2NC0qLWZyZWVic2QqKQorCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYworCTs7CiAgIHBvd2VycGMqLSotcnRlbXMqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CkBAIC0xMTMwMCw2ICsxMzMzNCwxNSBAQAogCiAgIHg4Nl82NC0qLWN5Z3dpbiogfCB4ODZfNjQtKi1taW5ndyopCiAJVEFSR0VUPVg4Nl9XSU42NDsgVEFSR0VURElSPXg4NgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogCiAgIHg4Nl82NC0qLSopCkBAIC0xMTMxMSw3ICsxMzM1NCw3IEBACiAKIAogaWYgdGVzdCAkVEFSR0VURElSID0gdW5rbm93bjsgdGhlbgotICBhc19mbl9lcnJvciAiXCJsaWJmZmkgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byAkaG9zdC5cIiIgIiRMSU5FTk8iIDUKKyAgYXNfZm5fZXJyb3IgJD8gIlwibGliZmZpIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gJGhvc3QuXCIiICIkTElORU5PIiA1CiBmaQogCiAgaWYgZXhwciB4JFRBUkdFVCA6ICd4TUlQUycgPiAvZGV2L251bGw7IHRoZW4KQEAgLTExNDAyLDYgKzEzNDQ1LDE0IEBACiAgIE02OEtfRkFMU0U9CiBmaQogCisgaWYgdGVzdCB4JFRBUkdFVCA9IHhNT1hJRTsgdGhlbgorICBNT1hJRV9UUlVFPQorICBNT1hJRV9GQUxTRT0nIycKK2Vsc2UKKyAgTU9YSUVfVFJVRT0nIycKKyAgTU9YSUVfRkFMU0U9CitmaQorCiAgaWYgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDOyB0aGVuCiAgIFBPV0VSUENfVFJVRT0KICAgUE9XRVJQQ19GQUxTRT0nIycKQEAgLTExNTI1LDcgKzEzNTc2LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9oZWFkZXJfc3RkYytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2hlYWRlcl9zdGRjKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE2MzgsNyArMTM2ODksNyBAQAogZm9yIGFjX2Z1bmMgaW4gbWVtY3B5CiBkbyA6CiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIm1lbWNweSIgImFjX2N2X2Z1bmNfbWVtY3B5IgotaWYgdGVzdCAieCRhY19jdl9mdW5jX21lbWNweSIgPSB4IiJ5ZXM7IHRoZW4gOgoraWYgdGVzdCAieCRhY19jdl9mdW5jX21lbWNweSIgPSB4eWVzOyB0aGVuIDoKICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBIQVZFX01FTUNQWSAxCiBfQUNFT0YKQEAgLTExNjQ2LDExICsxMzY5NywyMiBAQAogZmkKIGRvbmUKIAorYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAic2l6ZV90IiAiYWNfY3ZfdHlwZV9zaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfdHlwZV9zaXplX3QiID0geHllczsgdGhlbiA6CisKK2Vsc2UKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBzaXplX3QgdW5zaWduZWQgaW50CitfQUNFT0YKKworZmkKKwogIyBUaGUgVWx0cml4IDQuMiBtaXBzIGJ1aWx0aW4gYWxsb2NhIGRlY2xhcmVkIGJ5IGFsbG9jYS5oIG9ubHkgd29ya3MKICMgZm9yIGNvbnN0YW50IGFyZ3VtZW50cy4gIFVzZWxlc3MhCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciB3b3JraW5nIGFsbG9jYS5oLi4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIke2FjX2N2X3dvcmtpbmdfYWxsb2NhX2grc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl93b3JraW5nX2FsbG9jYV9oKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE2ODMsNyArMTM3NDUsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhbGxvY2EiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFsbG9jYS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9mdW5jX2FsbG9jYV93b3JrcytzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Z1bmNfYWxsb2NhX3dvcmtzKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTE3MDIsNyArMTM3NjQsNyBAQAogICNwcmFnbWEgYWxsb2NhCiAjICAgZWxzZQogIyAgICBpZm5kZWYgYWxsb2NhIC8qIHByZWRlZmluZWQgYnkgSFAgY2MgK09saWJjYWxscyAqLwotY2hhciAqYWxsb2NhICgpOwordm9pZCAqYWxsb2NhIChzaXplX3QpOwogIyAgICBlbmRpZgogIyAgIGVuZGlmCiAjICBlbmRpZgpAQCAtMTE3NDYsNyArMTM4MDgsNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgXGBhbGxvY2EuYycgbmVlZHMgQ3JheSBob29rcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIFxgYWxsb2NhLmMnIG5lZWRzIENyYXkgaG9va3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfb3NfY3JheStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X29zX2NyYXkrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xMTc3Myw4ICsxMzgzNSw3IEBACiAgIGZvciBhY19mdW5jIGluIF9nZXRiNjcgR0VUQjY3IGdldGI2NzsgZG8KICAgICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKLWV2YWwgYXNfdmFsPVwkJGFzX2FjX3ZhcgotICAgaWYgdGVzdCAieCRhc192YWwiID0geCIieWVzOyB0aGVuIDoKK2lmIGV2YWwgdGVzdCBcInhcJCIkYXNfYWNfdmFyIlwiID0geCJ5ZXMiOyB0aGVuIDoKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgogI2RlZmluZSBDUkFZX1NUQUNLU0VHX0VORCAkYWNfZnVuYwpAQCAtMTE3ODgsNyArMTM4NDksNyBAQAogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN0YWNrIGRpcmVjdGlvbiBmb3IgQyBhbGxvY2EiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3RhY2sgZGlyZWN0aW9uIGZvciBDIGFsbG9jYS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHthY19jdl9jX3N0YWNrX2RpcmVjdGlvbitzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X2Nfc3RhY2tfZGlyZWN0aW9uKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgpAQCAtMTE4NDMsNyArMTM5MDQsNyBAQAogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBkb3VibGUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBkb3VibGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfc2l6ZW9mX2RvdWJsZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2FjX2N2X3NpemVvZl9kb3VibGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mIChkb3VibGUpKSIgImFjX2N2X3NpemVvZl9kb3VibGUiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKQEAgLTExODUyLDkgKzEzOTEzLDggQEAKICAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfZG91YmxlIiA9IHllczsgdGhlbgogICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKICRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLXsgYXNfZm5fc2V0X3N0YXR1cyA3NwotYXNfZm5fZXJyb3IgImNhbm5vdCBjb21wdXRlIHNpemVvZiAoZG91YmxlKQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9OyB9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChkb3VibGUpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQogICAgICBhY19jdl9zaXplb2ZfZG91YmxlPTAKICAgIGZpCkBAIC0xMTg3Nyw3ICsxMzkzNyw3IEBACiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgZG91YmxlIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2YgbG9uZyBkb3VibGUuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7YWNfY3Zfc2l6ZW9mX2xvbmdfZG91YmxlKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAobG9uZyBkb3VibGUpKSIgImFjX2N2X3NpemVvZl9sb25nX2RvdWJsZSIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgpAQCAtMTE4ODYsOSArMTM5NDYsOCBAQAogICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2RvdWJsZSIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci17IGFzX2ZuX3NldF9zdGF0dXMgNzcKLWFzX2ZuX2Vycm9yICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKGxvbmcgZG91YmxlKQotU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscy4iICIkTElORU5PIiA1OyB9OyB9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGRvdWJsZSkKK1NlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9CiAgICBlbHNlCiAgICAgIGFjX2N2X3NpemVvZl9sb25nX2RvdWJsZT0wCiAgICBmaQpAQCAtMTE5MjIsNyArMTM5ODEsNyBAQAogCiAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGJ5dGUgb3JkZXJpbmcgaXMgYmlnZW5kaWFuIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4uLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7YWNfY3ZfY19iaWdlbmRpYW4rc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHthY19jdl9jX2JpZ2VuZGlhbis6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGFjX2N2X2NfYmlnZW5kaWFuPXVua25vd24KQEAgLTEyMTQwLDE4ICsxNDE5OSwxOCBAQAogCiAgICAgIDs7ICMoCiAgICAqKQotICAgICBhc19mbl9lcnJvciAidW5rbm93biBlbmRpYW5uZXNzCisgICAgIGFzX2ZuX2Vycm9yICQ/ICJ1bmtub3duIGVuZGlhbm5lc3MKICBwcmVzZXR0aW5nIGFjX2N2X2NfYmlnZW5kaWFuPW5vIChvciB5ZXMpIHdpbGwgaGVscCIgIiRMSU5FTk8iIDUgOzsKICBlc2FjCiAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLmNmaSBwc2V1ZG8tb3Agc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgLmNmaSBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2djY19jdl9hc19jZmlfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKIAotICAgIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KKyAgICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD11bmtub3duCiAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAogLyogZW5kIGNvbmZkZWZzLmguICAqLwogYXNtICgiLmNmaV9zdGFydHByb2Ncblx0LmNmaV9lbmRwcm9jIik7CkBAIC0xMjE2NCwyNSArMTQyMjMsMjYgQEAKIH0KIF9BQ0VPRgogaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXMKKyAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9eWVzCiBlbHNlCi0gIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPW5vCisgIGdjY19jdl9hc19jZmlfcHNldWRvX29wPW5vCiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wIiA+JjUKLSRhc19lY2hvICIkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID4mNjsgfQotaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdjY19jdl9hc19jZmlfcHNldWRvX29wIiA+JjUKKyRhc19lY2hvICIkZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID4mNjsgfQorIGlmIHRlc3QgIngkZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX0NGSV9QU0VVRE9fT1AgMSIgPj5jb25mZGVmcy5oCiAKLWZpCisgZmkKKwogCiBpZiB0ZXN0IHgkVEFSR0VUID0geFNQQVJDOyB0aGVuCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBwYyByZWxhdGVkIHJlbG9jcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgYW5kIGxpbmtlciBzdXBwb3J0IHVuYWxpZ25lZCBwYyByZWxhdGVkIHJlbG9jcy4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfc3BhcmNfdWFfcGNyZWwrc2V0fSIgPSBzZXQ7IHRoZW4gOgoraWYgJHtsaWJmZmlfY3ZfYXNfc3BhcmNfdWFfcGNyZWwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCkBAIC0xMjIyMSw3ICsxNDI4MSw3IEBACiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAucmVnaXN0ZXIgcHNldWRvLW9wIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgYXNzZW1ibGVyIC5yZWdpc3RlciBwc2V1ZG8tb3Agc3VwcG9ydC4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3ZfYXNfcmVnaXN0ZXJfcHNldWRvX29wK3NldH0iID0gc2V0OyB0aGVuIDoKK2lmICR7bGliZmZpX2N2X2FzX3JlZ2lzdGVyX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAKQEAgLTEyMjU4LDEzICsxNDMxOCwxMyBAQAogaWYgdGVzdCB4JFRBUkdFVCA9IHhYODYgfHwgdGVzdCB4JFRBUkdFVCA9IHhYODZfV0lOMzIgfHwgdGVzdCB4JFRBUkdFVCA9IHhYODZfNjQ7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciBzdXBwb3J0cyBwYyByZWxhdGVkIHJlbG9jcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgcGMgcmVsYXRlZCByZWxvY3MuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2FzX3g4Nl9wY3JlbCtzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9hc194ODZfcGNyZWwrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCiAJbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD15ZXMKIAllY2hvICcudGV4dDsgZm9vOiBub3A7IC5kYXRhOyAubG9uZyBmb28tLjsgLnRleHQnID4gY29uZnRlc3QucwotCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8IGdyZXAgLWkgd2FybmluZyA+IC9kZXYvbnVsbDsgdGhlbgorCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8ICRFR1JFUCAtaSAnaWxsZWdhbHx3YXJuaW5nJyA+IC9kZXYvbnVsbDsgdGhlbgogCSAgICBsaWJmZmlfY3ZfYXNfeDg2X3BjcmVsPW5vCiAJZmkKIApAQCAtMTIyNzYsNzcgKzE0MzM2LDI0NCBAQAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19YODZfUENSRUwgMSIgPj5jb25mZGVmcy5oCiAKICAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgLmFzY2lpIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAuYXNjaWkgcHNldWRvLW9wIHN1cHBvcnQuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisKKyAgICAgICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLmFzY2lpCisgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworYXNtICgiLmFzY2lpIFxcInN0cmluZ1xcIiIpOworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPXllcworZWxzZQorICBsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID4mNQorJGFzX2VjaG8gIiRsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX0FTQ0lJX1BTRVVET19PUCAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGFzc2VtYmxlciAuc3RyaW5nIHBzZXVkby1vcCBzdXBwb3J0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGFzc2VtYmxlciAuc3RyaW5nIHBzZXVkby1vcCBzdXBwb3J0Li4uICIgPiY2OyB9CitpZiAke2xpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAgICAgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXVua25vd24KKyAgICAgICAjIENoZWNrIGlmIHdlIGhhdmUgLnN0cmluZworICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KK2FzbSAoIi5zdHJpbmcgXFwic3RyaW5nXFwiIik7CitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wPXllcworZWxzZQorICBsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcCIgPiY1CiskYXNfZWNobyAiJGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9BU19TVFJJTkdfUFNFVURPX09QIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKIGZpCiAKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2X1dJTjY0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgXyBwcmVmaXggaW4gY29tcGlsZWQgc3ltYm9scyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgXyBwcmVmaXggaW4gY29tcGlsZWQgc3ltYm9scy4uLiAiID4mNjsgfQoraWYgJHtsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9bm8KKyAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3ZvaWQgbm1fdGVzdF9mdW5jKCl7fQoraW50IG1haW4oKXtubV90ZXN0X2Z1bmM7cmV0dXJuIDA7fQorX0xUX0VPRgorICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCisgICAgYWNfbmxpc3Q9Y29uZnRlc3Qubm0KKyAgICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkYWNfbmxpc3RcIiI7IH0gPiY1CisgIChldmFsICROTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRhY19ubGlzdCkgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiJGFjX25saXN0IjsgdGhlbgorICAgICAgIyBTZWUgd2hldGhlciB0aGUgc3ltYm9scyBoYXZlIGEgbGVhZGluZyB1bmRlcnNjb3JlLgorICAgICAgaWYgZ3JlcCAnXi4gX25tX3Rlc3RfZnVuYycgIiRhY19ubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmU9eWVzCisgICAgICBlbHNlCisgICAgICAgIGlmIGdyZXAgJ14uIG5tX3Rlc3RfZnVuYyAnICIkYWNfbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIDoKKyAgICAgICAgZWxzZQorCSAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJGFjX25saXN0IiA+JjUKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgZWNobyAiY29uZmlndXJlOiBjYW5ub3QgcnVuICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiA+JjUKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiY29uZmlndXJlOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JjUKKyAgICBjYXQgY29uZnRlc3QuYyA+JjUKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUiID4mNQorJGFzX2VjaG8gIiRsdF9jdl9zeXNfc3ltYm9sX3VuZGVyc2NvcmUiID4mNjsgfQorICBzeXNfc3ltYm9sX3VuZGVyc2NvcmU9JGx0X2N2X3N5c19zeW1ib2xfdW5kZXJzY29yZQorCisKKyAgICBpZiB0ZXN0ICJ4JHN5c19zeW1ib2xfdW5kZXJzY29yZSIgPSB4eWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIFNZTUJPTF9VTkRFUlNDT1JFIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKK2ZpCisKKworRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRT0wCiBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAqLWFwcGxlLWRhcndpbjEwKiB8ICotKi1mcmVlYnNkKiB8ICotKi1vcGVuYnNkKiB8ICotcGMtc29sYXJpcyopCisgICAgICphcm0qLWFwcGxlLWRhcndpbiopCisgICAgICAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRT0xCisKKyRhc19lY2hvICIjZGVmaW5lIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgOzsKKyAgICAgKi1hcHBsZS1kYXJ3aW4xWzEwXSogfCAqLSotZnJlZWJzZCogfCAqLSota2ZyZWVic2QqIHwgKi0qLW9wZW5ic2QqIHwgKi1wYy1zb2xhcmlzKikKIAogJGFzX2VjaG8gIiNkZWZpbmUgRkZJX01NQVBfRVhFQ19XUklUIDEiID4+Y29uZmRlZnMuaAogCiAgICAgIDs7CiBlc2FjCisgaWYgdGVzdCB4JEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUgPSB4MTsgdGhlbgorICBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX1RSVUU9CisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfRkFMU0U9JyMnCitlbHNlCisgIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVfVFJVRT0nIycKKyAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9GQUxTRT0KK2ZpCiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seS4uLiAiID4mNjsgfQotaWYgdGVzdCAiJHtsaWJmZmlfY3Zfcm9fZWhfZnJhbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgorCisKK2lmIHRlc3QgeCRUQVJHRVQgPSB4WDg2XzY0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZS4uLiAiID4mNjsgfQoraWYgJHtsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCi0JbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCi0JZWNobyAnZXh0ZXJuIHZvaWQgZm9vICh2b2lkKTsgdm9pZCBiYXIgKHZvaWQpIHsgZm9vICgpOyBmb28gKCk7IH0nID4gY29uZnRlc3QuYwotCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgotCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCi0JICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAotCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZmkKKwlsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9eWVzCisJZWNobyAnLnNlY3Rpb24gLmVoX2ZyYW1lLCJhIixAdW53aW5kJyA+IGNvbmZ0ZXN0LnMKKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlPW5vCiAJZmkKLQlybSAtZiBjb25mdGVzdC4qCisKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPiY1CiskYXNfZWNobyAiJGxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSIgPiY2OyB9CisgICAgaWYgdGVzdCAieCRsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGUiID0geHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFIDEiID4+Y29uZmRlZnMuaAorCisgICAgZmkKK2ZpCisKK2lmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgLmVoX2ZyYW1lIHNlY3Rpb24gc2hvdWxkIGJlIHJlYWQtb25seSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHkuLi4gIiA+JjY7IH0KK2lmICR7bGliZmZpX2N2X3JvX2VoX2ZyYW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKworICAJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPW5vCisgIAllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCisgIAlpZiAkQ0MgJENGTEFHUyAtUyAtZnBpYyAtZmV4Y2VwdGlvbnMgLW8gY29uZnRlc3QucyBjb25mdGVzdC5jID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgCSAgICBpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiJhIicgY29uZnRlc3QucyA+IC9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKKyAgCSAgICBlbGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qI2FsbG9jJyBjb25mdGVzdC5jIFwKKyAgCQkgfCBncmVwIC12ICcjd3JpdGUnID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGZpCisgIAlmaQorICAJcm0gLWYgY29uZnRlc3QuKgogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID4mNQogJGFzX2VjaG8gIiRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID4mNjsgfQotaWYgdGVzdCAieCRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID0geHllczsgdGhlbgorICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUk9fRUhfRlJBTUUgMSIgPj5jb25mZGVmcy5oCiAKIAogJGFzX2VjaG8gIiNkZWZpbmUgRUhfRlJBTUVfRkxBR1MgXCJhXCIiID4+Y29uZmRlZnMuaAogCi1lbHNlCisgIGVsc2UKIAogJGFzX2VjaG8gIiNkZWZpbmUgRUhfRlJBTUVfRkxBR1MgXCJhd1wiIiA+PmNvbmZkZWZzLmgKIAotZmkKKyAgZmkKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eShcImhpZGRlblwiKSkpIiA+JjUKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eShcImhpZGRlblwiKSkpIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFwiaGlkZGVuXCIpKSkuLi4gIiA+JjY7IH0KLWlmIHRlc3QgIiR7bGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZStzZXR9IiA9IHNldDsgdGhlbiA6CitpZiAke2xpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogCi0JZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDE7IH0nID4gY29uZnRlc3QuYwotCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9bm8KLQlpZiB7IGFjX3RyeT0nJHtDQy1jY30gLVdlcnJvciAtUyBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0LnMgMT4mNScKKyAgCWVjaG8gJ2ludCBfX2F0dHJpYnV0ZV9fICgodmlzaWJpbGl0eSAoImhpZGRlbiIpKSkgZm9vICh2b2lkKSB7IHJldHVybiAxICA7IH0nID4gY29uZnRlc3QuYworICAJbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZT1ubworICAJaWYgeyBhY190cnk9JyR7Q0MtY2N9IC1XZXJyb3IgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JjUnCiAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY190cnlcIiI7IH0gPiY1CiAgIChldmFsICRhY190cnkpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB9OyB0aGVuCi0JICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgotCQlsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlPXllcwotCSAgICBmaQotCWZpCi0Jcm0gLWYgY29uZnRlc3QuKgorICAJICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9eWVzCisgIAkgICAgZmkKKyAgCWZpCisgIAlybSAtZiBjb25mdGVzdC4qCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUiID4mNQogJGFzX2VjaG8gIiRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlIiA+JjY7IH0KLWlmIHRlc3QgJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCAkbGliZmZpX2N2X2hpZGRlbl92aXNpYmlsaXR5X2F0dHJpYnV0ZSA9IHllczsgdGhlbgogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0hJRERFTl9WSVNJQklMSVRZX0FUVFJJQlVURSAxIiA+PmNvbmZkZWZzLmgKIAorICBmaQogZmkKIAogCkBAIC0xMjM2NSw2ICsxNDU5MiwxNCBAQAogICBmaQogZmkKIAorIGlmIHRlc3QgIiRlbmFibGVfZGVidWciID0gInllcyI7IHRoZW4KKyAgRkZJX0RFQlVHX1RSVUU9CisgIEZGSV9ERUJVR19GQUxTRT0nIycKK2Vsc2UKKyAgRkZJX0RFQlVHX1RSVUU9JyMnCisgIEZGSV9ERUJVR19GQUxTRT0KK2ZpCisKIAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXN0cnVjdHMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfc3RydWN0cytzZXR9IiA9IHNldDsgdGhlbiA6CkBAIC0xMjM5NiwyMSArMTQ2MzEsMjUgQEAKIGZpCiAKIAotaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKLSAgIHRlc3QgeCIkd2l0aF9jcm9zc19ob3N0IiAhPSB4Im5vIjsgdGhlbgotICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJwotZWxzZQotICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJwotICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworIyBUaGVzZSB2YXJpYWJsZXMgYXJlIG9ubHkgZXZlciB1c2VkIHdoZW4gd2UgY3Jvc3MtYnVpbGQgdG8gWDg2X1dJTjMyLgorIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCitpZiB0ZXN0IHgiJEdDQyIgIT0geCJubyI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKyAgICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisgICAgdG9vbGV4ZWNkaXI9JyQoZXhlY19wcmVmaXgpLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJCh0b29sZXhlY2RpcikvbGliJworICBlbHNlCisgICAgdG9vbGV4ZWNkaXI9JyQobGliZGlyKS9nY2MtbGliLyQodGFyZ2V0X2FsaWFzKScKKyAgICB0b29sZXhlY2xpYmRpcj0nJChsaWJkaXIpJworICBmaQorICBtdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAorICBjYXNlICRtdWx0aV9vc19kaXJlY3RvcnkgaW4KKyAgICAuKSA7OyAjIEF2b2lkIHRyYWlsaW5nIC8uCisgICAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKKyAgZXNhYworCisKIGZpCi1tdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotY2FzZSAkbXVsdGlfb3NfZGlyZWN0b3J5IGluCi0gIC4pIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KLSAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKLWVzYWMKLQotCiAKIGlmIHRlc3QgIiR7bXVsdGlsaWJ9IiA9ICJ5ZXMiOyB0aGVuCiAgIG11bHRpbGliX2FyZz0iLS1lbmFibGUtbXVsdGlsaWIiCkBAIC0xMjQ5OSwxMCArMTQ3MzgsMjEgQEAKICAgICAgOmVuZCcgPj5jb25mY2FjaGUKIGlmIGRpZmYgIiRjYWNoZV9maWxlIiBjb25mY2FjaGUgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDo7IGVsc2UKICAgaWYgdGVzdCAtdyAiJGNhY2hlX2ZpbGUiOyB0aGVuCi0gICAgdGVzdCAieCRjYWNoZV9maWxlIiAhPSAieC9kZXYvbnVsbCIgJiYKKyAgICBpZiB0ZXN0ICJ4JGNhY2hlX2ZpbGUiICE9ICJ4L2Rldi9udWxsIjsgdGhlbgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiB1cGRhdGluZyBjYWNoZSAkY2FjaGVfZmlsZSIgPiY2O30KLSAgICBjYXQgY29uZmNhY2hlID4kY2FjaGVfZmlsZQorICAgICAgaWYgdGVzdCAhIC1mICIkY2FjaGVfZmlsZSIgfHwgdGVzdCAtaCAiJGNhY2hlX2ZpbGUiOyB0aGVuCisJY2F0IGNvbmZjYWNoZSA+IiRjYWNoZV9maWxlIgorICAgICAgZWxzZQorICAgICAgICBjYXNlICRjYWNoZV9maWxlIGluICMoCisgICAgICAgICovKiB8ID86KikKKwkgIG12IC1mIGNvbmZjYWNoZSAiJGNhY2hlX2ZpbGUiJCQgJiYKKwkgIG12IC1mICIkY2FjaGVfZmlsZSIkJCAiJGNhY2hlX2ZpbGUiIDs7ICMoCisgICAgICAgICopCisJICBtdiAtZiBjb25mY2FjaGUgIiRjYWNoZV9maWxlIiA7OworCWVzYWMKKyAgICAgIGZpCisgICAgZmkKICAgZWxzZQogICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNQogJGFzX2VjaG8gIiRhc19tZTogbm90IHVwZGF0aW5nIHVud3JpdGFibGUgY2FjaGUgJGNhY2hlX2ZpbGUiID4mNjt9CkBAIC0xMjUxOCw2ICsxNDc2OCw3IEBACiAKIGFjX2xpYm9ianM9CiBhY19sdGxpYm9ianM9CitVPQogZm9yIGFjX2kgaW4gOiAkTElCT0JKUzsgZG8gdGVzdCAieCRhY19pIiA9IHg6ICYmIGNvbnRpbnVlCiAgICMgMS4gUmVtb3ZlIHRoZSBleHRlbnNpb24sIGFuZCAkVSBpZiBhbHJlYWR5IGluc3RhbGxlZC4KICAgYWNfc2NyaXB0PSdzL1wkVVwuLy4vO3MvXC5vJC8vO3MvXC5vYmokLy8nCkBAIC0xMjU0MSwxMzIgKzE0NzkyLDE0NCBAQAogZmkKIAogaWYgdGVzdCAteiAiJHtBTURFUF9UUlVFfSIgJiYgdGVzdCAteiAiJHtBTURFUF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkFNREVQXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDX1RSVUV9IiAmJiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcImFtX19mYXN0ZGVwQ0NcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke2FtX19mYXN0ZGVwQ0NBU19UUlVFfSIgJiYgdGVzdCAteiAiJHthbV9fZmFzdGRlcENDQVNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJhbV9fZmFzdGRlcENDQVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiYW1fX2Zhc3RkZXBDQ0FTXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNQUlOVEFJTkVSX01PREVfVFJVRX0iICYmIHRlc3QgLXogIiR7TUFJTlRBSU5FUl9NT0RFX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTUFJTlRBSU5FUl9NT0RFXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1BSU5UQUlORVJfTU9ERVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7VEVTVFNVQkRJUl9UUlVFfSIgJiYgdGVzdCAteiAiJHtURVNUU1VCRElSX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiVEVTVFNVQkRJUlwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJURVNUU1VCRElSXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNSVBTX1RSVUV9IiAmJiB0ZXN0IC16ICIke01JUFNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNSVBTXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk1JUFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1NQQVJDX1RSVUV9IiAmJiB0ZXN0IC16ICIke1NQQVJDX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiU1BBUkNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiU1BBUkNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfRlJFRUJTRF9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfRlJFRUJTRF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtYODZfV0lOMzJfVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X1dJTjMyX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiWDg2X1dJTjMyXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlg4Nl9XSU4zMlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7WDg2X1dJTjY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke1g4Nl9XSU42NF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9XSU42NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJYODZfV0lONjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl9EQVJXSU5fVFJVRX0iICYmIHRlc3QgLXogIiR7WDg2X0RBUldJTl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlg4Nl9EQVJXSU5cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2X0RBUldJTlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7QUxQSEFfVFJVRX0iICYmIHRlc3QgLXogIiR7QUxQSEFfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJBTFBIQVwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBTFBIQVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7SUE2NF9UUlVFfSIgJiYgdGVzdCAteiAiJHtJQTY0X0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiSUE2NFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJJQTY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtNMzJSX1RSVUV9IiAmJiB0ZXN0IC16ICIke00zMlJfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJNMzJSXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIk0zMlJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke002OEtfVFJVRX0iICYmIHRlc3QgLXogIiR7TTY4S19GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIk02OEtcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTTY4S1wiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3QgLXogIiR7TU9YSUVfVFJVRX0iICYmIHRlc3QgLXogIiR7TU9YSUVfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJNT1hJRVwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UE9XRVJQQ19UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQT1dFUlBDXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX0FJWF9UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0FJWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBPV0VSUENfQUlYXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENfQUlYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX0RBUldJTl9UUlVFfSIgJiYgdGVzdCAteiAiJHtQT1dFUlBDX0RBUldJTl9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBPV0VSUENfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENfREFSV0lOXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtQT1dFUlBDX0ZSRUVCU0RfVFJVRX0iICYmIHRlc3QgLXogIiR7UE9XRVJQQ19GUkVFQlNEX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUE9XRVJQQ19GUkVFQlNEXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlBPV0VSUENfRlJFRUJTRFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7QVJNX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FSTV9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIkFSTVwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJBUk1cIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0FWUjMyX1RSVUV9IiAmJiB0ZXN0IC16ICIke0FWUjMyX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiQVZSMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiQVZSMzJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0xJQkZGSV9DUklTX1RSVUV9IiAmJiB0ZXN0IC16ICIke0xJQkZGSV9DUklTX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiTElCRkZJX0NSSVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiTElCRkZJX0NSSVNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke0ZSVl9UUlVFfSIgJiYgdGVzdCAteiAiJHtGUlZfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJGUlZcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiRlJWXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTMzkwX1RSVUV9IiAmJiB0ZXN0IC16ICIke1MzOTBfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTMzkwXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlMzOTBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1g4Nl82NF9UUlVFfSIgJiYgdGVzdCAteiAiJHtYODZfNjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJYODZfNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiWDg2XzY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTSF9UUlVFfSIgJiYgdGVzdCAteiAiJHtTSF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlNIXCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlNIXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQogaWYgdGVzdCAteiAiJHtTSDY0X1RSVUV9IiAmJiB0ZXN0IC16ICIke1NINjRfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAiY29uZGl0aW9uYWwgXCJTSDY0XCIgd2FzIG5ldmVyIGRlZmluZWQuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlNINjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BBX0xJTlVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BBX0xJTlVYX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgImNvbmRpdGlvbmFsIFwiUEFfTElOVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUEFfTElOVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiBpZiB0ZXN0IC16ICIke1BBX0hQVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7UEFfSFBVWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBBX0hQVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiUEFfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKIGlmIHRlc3QgLXogIiR7UEE2NF9IUFVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1BBNjRfSFBVWF9GQUxTRX0iOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICJjb25kaXRpb25hbCBcIlBBNjRfSFBVWFwiIHdhcyBuZXZlciBkZWZpbmVkLgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJQQTY0X0hQVVhcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCiAKK2lmIHRlc3QgLXogIiR7RkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRV9UUlVFfSIgJiYgdGVzdCAteiAiJHtGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRVwiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKK2lmIHRlc3QgLXogIiR7RkZJX0RFQlVHX1RSVUV9IiAmJiB0ZXN0IC16ICIke0ZGSV9ERUJVR19GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkZGSV9ERUJVR1wiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKIAotOiAke0NPTkZJR19TVEFUVVM9Li9jb25maWcuc3RhdHVzfQorOiAiJHtDT05GSUdfU1RBVFVTPS4vY29uZmlnLnN0YXR1c30iCiBhY193cml0ZV9mYWlsPTAKIGFjX2NsZWFuX2ZpbGVzX3NhdmU9JGFjX2NsZWFuX2ZpbGVzCiBhY19jbGVhbl9maWxlcz0iJGFjX2NsZWFuX2ZpbGVzICRDT05GSUdfU1RBVFVTIgpAQCAtMTI3NjcsNiArMTUwMzAsNyBAQAogSUZTPSIgIiIJJGFzX25sIgogCiAjIEZpbmQgd2hvIHdlIGFyZS4gIExvb2sgaW4gdGhlIHBhdGggaWYgd2UgY29udGFpbiBubyBkaXJlY3Rvcnkgc2VwYXJhdG9yLgorYXNfbXlzZWxmPQogY2FzZSAkMCBpbiAjKCgKICAgKltcXC9dKiApIGFzX215c2VsZj0kMCA7OwogICAqKSBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCkBAIC0xMjgxMiwxOSArMTUwNzYsMTkgQEAKICh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKIAogCi0jIGFzX2ZuX2Vycm9yIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgYXNfZm5fZXJyb3IgU1RBVFVTIEVSUk9SIFtMSU5FTk8gTE9HX0ZEXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIE91dHB1dCAiYGJhc2VuYW1lICQwYDogZXJyb3I6IEVSUk9SIiB0byBzdGRlcnIuIElmIExJTkVOTyBhbmQgTE9HX0ZEIGFyZQogIyBwcm92aWRlZCwgYWxzbyBvdXRwdXQgdGhlIGVycm9yIHRvIExPR19GRCwgcmVmZXJlbmNpbmcgTElORU5PLiBUaGVuIGV4aXQgdGhlCi0jIHNjcmlwdCB3aXRoIHN0YXR1cyAkPywgdXNpbmcgMSBpZiB0aGF0IHdhcyAwLgorIyBzY3JpcHQgd2l0aCBTVEFUVVMsIHVzaW5nIDEgaWYgdGhhdCB3YXMgMC4KIGFzX2ZuX2Vycm9yICgpCiB7Ci0gIGFzX3N0YXR1cz0kPzsgdGVzdCAkYXNfc3RhdHVzIC1lcSAwICYmIGFzX3N0YXR1cz0xCi0gIGlmIHRlc3QgIiQzIjsgdGhlbgotICAgIGFzX2xpbmVubz0ke2FzX2xpbmVuby0iJDIifSBhc19saW5lbm9fc3RhY2s9YXNfbGluZW5vX3N0YWNrPSRhc19saW5lbm9fc3RhY2sKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogJDEiID4mJDMKKyAgYXNfc3RhdHVzPSQxOyB0ZXN0ICRhc19zdGF0dXMgLWVxIDAgJiYgYXNfc3RhdHVzPTEKKyAgaWYgdGVzdCAiJDQiOyB0aGVuCisgICAgYXNfbGluZW5vPSR7YXNfbGluZW5vLSIkMyJ9IGFzX2xpbmVub19zdGFjaz1hc19saW5lbm9fc3RhY2s9JGFzX2xpbmVub19zdGFjaworICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiAkMiIgPiYkNAogICBmaQotICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDEiID4mMgorICAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogJDIiID4mMgogICBhc19mbl9leGl0ICRhc19zdGF0dXMKIH0gIyBhc19mbl9lcnJvcgogCkBAIC0xMzAyMCw3ICsxNTI4NCw3IEBACiAgICAgICB0ZXN0IC1kICIkYXNfZGlyIiAmJiBicmVhawogICAgIGRvbmUKICAgICB0ZXN0IC16ICIkYXNfZGlycyIgfHwgZXZhbCAibWtkaXIgJGFzX2RpcnMiCi0gIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCisgIH0gfHwgdGVzdCAtZCAiJGFzX2RpciIgfHwgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICRhc19kaXIiCiAKIAogfSAjIGFzX2ZuX21rZGlyX3AKQEAgLTEzMDczLDggKzE1MzM3LDggQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IGxpYmZmaSAkYXNfbWUgMy4wLjEwcmMwLCB3aGljaCB3YXMKLWdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcworVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBsaWJmZmkgJGFzX21lIDMuMC4xMSwgd2hpY2ggd2FzCitnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjguICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCiAgIENPTkZJR19IRUFERVJTICA9ICRDT05GSUdfSEVBREVSUwpAQCAtMTMxMzcsMTcgKzE1NDAxLDE3IEBACiBDb25maWd1cmF0aW9uIGNvbW1hbmRzOgogJGNvbmZpZ19jb21tYW5kcwogCi1SZXBvcnQgYnVncyB0byA8aHR0cDovL2djYy5nbnUub3JnL2J1Z3MuaHRtbD4uIgorUmVwb3J0IGJ1Z3MgdG8gPGh0dHA6Ly9naXRodWIuY29tL2F0Z3JlZW4vbGliZmZpL2lzc3Vlcz4uIgogCiBfQUNFT0YKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKIGFjX2NzX3ZlcnNpb249IlxcCi1saWJmZmkgY29uZmlnLnN0YXR1cyAzLjAuMTByYzAKLWNvbmZpZ3VyZWQgYnkgJDAsIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42NSwKK2xpYmZmaSBjb25maWcuc3RhdHVzIDMuMC4xMQorY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LAogICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKIAotQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogVGhpcyBjb25maWcuc3RhdHVzIHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgogCkBAIC0xMzE2NSwxMSArMTU0MjksMTYgQEAKIHdoaWxlIHRlc3QgJCMgIT0gMAogZG8KICAgY2FzZSAkMSBpbgotICAtLSo9KikKKyAgLS0qPT8qKQogICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCiAgICAgYWNfb3B0YXJnPWBleHByICJYJDEiIDogJ1hbXj1dKj1cKC4qXCknYAogICAgIGFjX3NoaWZ0PToKICAgICA7OworICAtLSo9KQorICAgIGFjX29wdGlvbj1gZXhwciAiWCQxIiA6ICdYXChbXj1dKlwpPSdgCisgICAgYWNfb3B0YXJnPQorICAgIGFjX3NoaWZ0PToKKyAgICA7OwogICAqKQogICAgIGFjX29wdGlvbj0kMQogICAgIGFjX29wdGFyZz0kMgpAQCAtMTMxOTEsNiArMTU0NjAsNyBAQAogICAgICRhY19zaGlmdAogICAgIGNhc2UgJGFjX29wdGFyZyBpbgogICAgICpcJyopIGFjX29wdGFyZz1gJGFzX2VjaG8gIiRhY19vcHRhcmciIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgIDs7CisgICAgJycpIGFzX2ZuX2Vycm9yICQ/ICJtaXNzaW5nIGZpbGUgYXJndW1lbnQiIDs7CiAgICAgZXNhYwogICAgIGFzX2ZuX2FwcGVuZCBDT05GSUdfRklMRVMgIiAnJGFjX29wdGFyZyciCiAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CkBAIC0xMzIwMyw3ICsxNTQ3Myw3IEBACiAgICAgYWNfbmVlZF9kZWZhdWx0cz1mYWxzZTs7CiAgIC0taGUgfCAtLWgpCiAgICAgIyBDb25mbGljdCBiZXR3ZWVuIC0taGVscCBhbmQgLS1oZWFkZXIKLSAgICBhc19mbl9lcnJvciAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKKyAgICBhc19mbl9lcnJvciAkPyAiYW1iaWd1b3VzIG9wdGlvbjogXGAkMScKIFRyeSBcYCQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIjs7CiAgIC0taGVscCB8IC0taGVsIHwgLWggKQogICAgICRhc19lY2hvICIkYWNfY3NfdXNhZ2UiOyBleGl0IDs7CkBAIC0xMzIxMiw3ICsxNTQ4Miw3IEBACiAgICAgYWNfY3Nfc2lsZW50PTogOzsKIAogICAjIFRoaXMgaXMgYW4gZXJyb3IuCi0gIC0qKSBhc19mbl9lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbjogXGAkMScKKyAgLSopIGFzX2ZuX2Vycm9yICQ/ICJ1bnJlY29nbml6ZWQgb3B0aW9uOiBcYCQxJwogVHJ5IFxgJDAgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDs7CiAKICAgKikgYXNfZm5fYXBwZW5kIGFjX2NvbmZpZ190YXJnZXRzICIgJDEiCkBAIC0xMzI1Niw2ICsxNTUyNiwxNCBAQAogIwogIyBJTklULUNPTU1BTkRTCiAjCitheF9lbmFibGVfYnVpbGRkaXJfc3JjZGlyPSIkc3JjZGlyIiAgICAgICAgICAgICAgICAgICAgIyAkc3JjZGlyCitheF9lbmFibGVfYnVpbGRkaXJfaG9zdD0iJEhPU1QiICAgICAgICAgICAgICAgICAgICAgICAgIyAkSE9TVCAvICRob3N0CitheF9lbmFibGVfYnVpbGRkaXJfdmVyc2lvbj0iJFZFUlNJT04iICAgICAgICAgICAgICAgICAgIyAkVkVSU0lPTgorYXhfZW5hYmxlX2J1aWxkZGlyX3BhY2thZ2U9IiRQQUNLQUdFIiAgICAgICAgICAgICAgICAgICMgJFBBQ0tBR0UKK2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXI9IiRheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyIiAjICRBVVgKK2F4X2VuYWJsZV9idWlsZGRpcl9zZWQ9IiRheF9lbmFibGVfYnVpbGRkaXJfc2VkIiAgICAgICAjICRTRUQKK2F4X2VuYWJsZV9idWlsZGRpcj0iJGF4X2VuYWJsZV9idWlsZGRpciIgICAgICAgICAgICAgICAjICRTVUIKKwogQU1ERVBfVFJVRT0iJEFNREVQX1RSVUUiIGFjX2F1eF9kaXI9IiRhY19hdXhfZGlyIgogCiAKQEAgLTEzMjY2LDEzMSArMTU1NDQsMTU0IEBACiBzZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCiBkb3VibGVfcXVvdGVfc3Vic3Q9JyRkb3VibGVfcXVvdGVfc3Vic3QnCiBkZWxheV92YXJpYWJsZV9zdWJzdD0nJGRlbGF5X3ZhcmlhYmxlX3N1YnN0JwotbWFjcm9fdmVyc2lvbj0nYCRFQ0hPICJYJG1hY3JvX3ZlcnNpb24iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1hY3JvX3JldmlzaW9uPSdgJEVDSE8gIlgkbWFjcm9fcmV2aXNpb24iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9zaGFyZWQ9J2AkRUNITyAiWCRlbmFibGVfc2hhcmVkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1lbmFibGVfc3RhdGljPSdgJEVDSE8gIlgkZW5hYmxlX3N0YXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcGljX21vZGU9J2AkRUNITyAiWCRwaWNfbW9kZSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Zhc3RfaW5zdGFsbD0nYCRFQ0hPICJYJGVuYWJsZV9mYXN0X2luc3RhbGwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhvc3RfYWxpYXM9J2AkRUNITyAiWCRob3N0X2FsaWFzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ob3N0PSdgJEVDSE8gIlgkaG9zdCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaG9zdF9vcz0nYCRFQ0hPICJYJGhvc3Rfb3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWJ1aWxkX2FsaWFzPSdgJEVDSE8gIlgkYnVpbGRfYWxpYXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWJ1aWxkPSdgJEVDSE8gIlgkYnVpbGQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWJ1aWxkX29zPSdgJEVDSE8gIlgkYnVpbGRfb3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLVNFRD0nYCRFQ0hPICJYJFNFRCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotWHNlZD0nYCRFQ0hPICJYJFhzZWQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUdSRVA9J2AkRUNITyAiWCRHUkVQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1FR1JFUD0nYCRFQ0hPICJYJEVHUkVQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1GR1JFUD0nYCRFQ0hPICJYJEZHUkVQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1MRD0nYCRFQ0hPICJYJExEIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1OTT0nYCRFQ0hPICJYJE5NIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1MTl9TPSdgJEVDSE8gIlgkTE5fUyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbWF4X2NtZF9sZW49J2AkRUNITyAiWCRtYXhfY21kX2xlbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYWNfb2JqZXh0PSdgJEVDSE8gIlgkYWNfb2JqZXh0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leGVleHQ9J2AkRUNITyAiWCRleGVleHQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X3Vuc2V0PSdgJEVDSE8gIlgkbHRfdW5zZXQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X1NQMk5MPSdgJEVDSE8gIlgkbHRfU1AyTkwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X05MMlNQPSdgJEVDSE8gIlgkbHRfTkwyU1AiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXJlbG9hZF9mbGFnPSdgJEVDSE8gIlgkcmVsb2FkX2ZsYWciIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXJlbG9hZF9jbWRzPSdgJEVDSE8gIlgkcmVsb2FkX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU9CSkRVTVA9J2AkRUNITyAiWCRPQkpEVU1QIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1kZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICJYJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maWxlX21hZ2ljX2NtZD0nYCRFQ0hPICJYJGZpbGVfbWFnaWNfY21kIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1BUj0nYCRFQ0hPICJYJEFSIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1BUl9GTEFHUz0nYCRFQ0hPICJYJEFSX0ZMQUdTIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1TVFJJUD0nYCRFQ0hPICJYJFNUUklQIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1SQU5MSUI9J2AkRUNITyAiWCRSQU5MSUIiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIlgkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9J2AkRUNITyAiWCRvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1vbGRfYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIlgkb2xkX2FyY2hpdmVfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQ0M9J2AkRUNITyAiWCRDQyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQ0ZMQUdTPSdgJEVDSE8gIlgkQ0ZMQUdTIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1jb21waWxlcj0nYCRFQ0hPICJYJGNvbXBpbGVyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1HQ0M9J2AkRUNITyAiWCRHQ0MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiWCRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICJYJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIlgkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2JqZGlyPSdgJEVDSE8gIlgkb2JqZGlyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1TSEVMTD0nYCRFQ0hPICJYJFNIRUxMIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1FQ0hPPSdgJEVDSE8gIlgkRUNITyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTUFHSUNfQ01EPSdgJEVDSE8gIlgkTUFHSUNfQ01EIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICJYJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIlgkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiWCRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiWCRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbmVlZF9sb2Nrcz0nYCRFQ0hPICJYJG5lZWRfbG9ja3MiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLURTWU1VVElMPSdgJEVDSE8gIlgkRFNZTVVUSUwiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU5NRURJVD0nYCRFQ0hPICJYJE5NRURJVCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotTElQTz0nYCRFQ0hPICJYJExJUE8iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU9UT09MPSdgJEVDSE8gIlgkT1RPT0wiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLU9UT09MNjQ9J2AkRUNITyAiWCRPVE9PTDY0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saWJleHQ9J2AkRUNITyAiWCRsaWJleHQiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXNocmV4dF9jbWRzPSdgJEVDSE8gIlgkc2hyZXh0X2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4dHJhY3RfZXhwc3ltc19jbWRzPSdgJEVDSE8gIlgkZXh0cmFjdF9leHBzeW1zX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFyY2hpdmVfY21kc19uZWVkX2xjPSdgJEVDSE8gIlgkYXJjaGl2ZV9jbWRzX25lZWRfbGMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9J2AkRUNITyAiWCRlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leHBvcnRfZHluYW1pY19mbGFnX3NwZWM9J2AkRUNITyAiWCRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgJEVDSE8gIlgkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWNvbXBpbGVyX25lZWRzX29iamVjdD0nYCRFQ0hPICJYJGNvbXBpbGVyX25lZWRzX29iamVjdCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nYCRFQ0hPICJYJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzPSdgJEVDSE8gIlgkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWFyY2hpdmVfY21kcz0nYCRFQ0hPICJYJGFyY2hpdmVfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYXJjaGl2ZV9leHBzeW1fY21kcz0nYCRFQ0hPICJYJGFyY2hpdmVfZXhwc3ltX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1vZHVsZV9jbWRzPSdgJEVDSE8gIlgkbW9kdWxlX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW1vZHVsZV9leHBzeW1fY21kcz0nYCRFQ0hPICJYJG1vZHVsZV9leHBzeW1fY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotd2l0aF9nbnVfbGQ9J2AkRUNITyAiWCR3aXRoX2dudV9sZCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotYWxsb3dfdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiWCRhbGxvd191bmRlZmluZWRfZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbm9fdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiWCRub191bmRlZmluZWRfZmxhZyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nYCRFQ0hPICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9J2AkRUNITyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSdgJEVDSE8gIlgkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfZGlyZWN0PSdgJEVDSE8gIlgkaGFyZGNvZGVfZGlyZWN0IiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9J2AkRUNITyAiWCRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX21pbnVzX0w9J2AkRUNITyAiWCRoYXJkY29kZV9taW51c19MIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1oYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIlgkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIlgkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1pbmhlcml0X3JwYXRoPSdgJEVDSE8gIlgkaW5oZXJpdF9ycGF0aCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICJYJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiWCRmaXhfc3JjZmlsZV9wYXRoIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1hbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiWCRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiWCRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1leGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiWCRleGNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcHJlbGlua19jbWRzPSdgJEVDSE8gIlgkcHJlbGlua19jbWRzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICJYJGZpbGVfbGlzdF9zcGVjIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi12YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICJYJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1uZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiWCRuZWVkX2xpYl9wcmVmaXgiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW5lZWRfdmVyc2lvbj0nYCRFQ0hPICJYJG5lZWRfdmVyc2lvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotdmVyc2lvbl90eXBlPSdgJEVDSE8gIlgkdmVyc2lvbl90eXBlIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1ydW5wYXRoX3Zhcj0nYCRFQ0hPICJYJHJ1bnBhdGhfdmFyIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIlgkc2hsaWJwYXRoX3ZhciIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSdgJEVDSE8gIlgkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1saWJuYW1lX3NwZWM9J2AkRUNITyAiWCRsaWJuYW1lX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWxpYnJhcnlfbmFtZXNfc3BlYz0nYCRFQ0hPICJYJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc29uYW1lX3NwZWM9J2AkRUNITyAiWCRzb25hbWVfc3BlYyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICJYJHBvc3RpbnN0YWxsX2NtZHMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXBvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICJYJHBvc3R1bmluc3RhbGxfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZmluaXNoX2NtZHM9J2AkRUNITyAiWCRmaW5pc2hfY21kcyIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZmluaXNoX2V2YWw9J2AkRUNITyAiWCRmaW5pc2hfZXZhbCIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotaGFyZGNvZGVfaW50b19saWJzPSdgJEVDSE8gIlgkaGFyZGNvZGVfaW50b19saWJzIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiWCRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIlgkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWhhcmRjb2RlX2FjdGlvbj0nYCRFQ0hPICJYJGhhcmRjb2RlX2FjdGlvbiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Rsb3Blbj0nYCRFQ0hPICJYJGVuYWJsZV9kbG9wZW4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLWVuYWJsZV9kbG9wZW5fc2VsZj0nYCRFQ0hPICJYJGVuYWJsZV9kbG9wZW5fc2VsZiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0nYCRFQ0hPICJYJGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWMiIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLW9sZF9zdHJpcGxpYj0nYCRFQ0hPICJYJG9sZF9zdHJpcGxpYiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotc3RyaXBsaWI9J2AkRUNITyAiWCRzdHJpcGxpYiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbWFjcm9fdmVyc2lvbj0nYCRFQ0hPICIkbWFjcm9fdmVyc2lvbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCittYWNyb19yZXZpc2lvbj0nYCRFQ0hPICIkbWFjcm9fcmV2aXNpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX3NoYXJlZD0nYCRFQ0hPICIkZW5hYmxlX3NoYXJlZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfc3RhdGljPSdgJEVDSE8gIiRlbmFibGVfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3BpY19tb2RlPSdgJEVDSE8gIiRwaWNfbW9kZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitlbmFibGVfZmFzdF9pbnN0YWxsPSdgJEVDSE8gIiRlbmFibGVfZmFzdF9pbnN0YWxsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1NIRUxMPSdgJEVDSE8gIiRTSEVMTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitFQ0hPPSdgJEVDSE8gIiRFQ0hPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1BBVEhfU0VQQVJBVE9SPSdgJEVDSE8gIiRQQVRIX1NFUEFSQVRPUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitob3N0X2FsaWFzPSdgJEVDSE8gIiRob3N0X2FsaWFzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hvc3Q9J2AkRUNITyAiJGhvc3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaG9zdF9vcz0nYCRFQ0hPICIkaG9zdF9vcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitidWlsZF9hbGlhcz0nYCRFQ0hPICIkYnVpbGRfYWxpYXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYnVpbGQ9J2AkRUNITyAiJGJ1aWxkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2J1aWxkX29zPSdgJEVDSE8gIiRidWlsZF9vcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitTRUQ9J2AkRUNITyAiJFNFRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitYc2VkPSdgJEVDSE8gIiRYc2VkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0dSRVA9J2AkRUNITyAiJEdSRVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworRUdSRVA9J2AkRUNITyAiJEVHUkVQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0ZHUkVQPSdgJEVDSE8gIiRGR1JFUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitMRD0nYCRFQ0hPICIkTEQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTk09J2AkRUNITyAiJE5NIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0xOX1M9J2AkRUNITyAiJExOX1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbWF4X2NtZF9sZW49J2AkRUNITyAiJG1heF9jbWRfbGVuIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FjX29iamV4dD0nYCRFQ0hPICIkYWNfb2JqZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCityZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK09CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCit3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK1NUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfYXJjaGl2ZV9jbWRzPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj0nYCRFQ0hPICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0NDPSdgJEVDSE8gIiRDQyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitDRkxBR1M9J2AkRUNITyAiJENGTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitjb21waWxlcj0nYCRFQ0hPICIkY29tcGlsZXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworR0NDPSdgJEVDSE8gIiRHQ0MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2x0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0RTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK09UT09MPSdgJEVDSE8gIiRPVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitPVE9PTDY0PSdgJEVDSE8gIiRPVE9PTDY0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpYmV4dD0nYCRFQ0hPICIkbGliZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NocmV4dF9jbWRzPSdgJEVDSE8gIiRzaHJleHRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitleHRyYWN0X2V4cHN5bXNfY21kcz0nYCRFQ0hPICIkZXh0cmFjdF9leHBzeW1zX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworYXJjaGl2ZV9jbWRzX25lZWRfbGM9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9J2AkRUNITyAiJGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSdgJEVDSE8gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJword2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9J2AkRUNITyAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2NvbXBpbGVyX25lZWRzX29iamVjdD0nYCRFQ0hPICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK29sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHM9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVfY21kcz0nYCRFQ0hPICIkYXJjaGl2ZV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2FyY2hpdmVfZXhwc3ltX2NtZHM9J2AkRUNITyAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbW9kdWxlX2NtZHM9J2AkRUNITyAiJG1vZHVsZV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK21vZHVsZV9leHBzeW1fY21kcz0nYCRFQ0hPICIkbW9kdWxlX2V4cHN5bV9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3dpdGhfZ251X2xkPSdgJEVDSE8gIiR3aXRoX2dudV9sZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCithbGxvd191bmRlZmluZWRfZmxhZz0nYCRFQ0hPICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworbm9fdW5kZWZpbmVkX2ZsYWc9J2AkRUNITyAiJG5vX3VuZGVmaW5lZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2AkRUNITyAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nYCRFQ0hPICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9kaXJlY3Q9J2AkRUNITyAiJGhhcmRjb2RlX2RpcmVjdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9J2AkRUNITyAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitoYXJkY29kZV9taW51c19MPSdgJEVDSE8gIiRoYXJkY29kZV9taW51c19MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2Fsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2V4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwordmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK25lZWRfdmVyc2lvbj0nYCRFQ0hPICIkbmVlZF92ZXJzaW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3ZlcnNpb25fdHlwZT0nYCRFQ0hPICIkdmVyc2lvbl90eXBlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3J1bnBhdGhfdmFyPSdgJEVDSE8gIiRydW5wYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRzaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0nYCRFQ0hPICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpYm5hbWVfc3BlYz0nYCRFQ0hPICIkbGlibmFtZV9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2xpYnJhcnlfbmFtZXNfc3BlYz0nYCRFQ0hPICIkbGlicmFyeV9uYW1lc19zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NvbmFtZV9zcGVjPSdgJEVDSE8gIiRzb25hbWVfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitpbnN0YWxsX292ZXJyaWRlX21vZGU9J2AkRUNITyAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitwb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRwb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3Bvc3R1bmluc3RhbGxfY21kcz0nYCRFQ0hPICIkcG9zdHVuaW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2ZpbmlzaF9jbWRzPSdgJEVDSE8gIiRmaW5pc2hfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitmaW5pc2hfZXZhbD0nYCRFQ0hPICIkZmluaXNoX2V2YWwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworaGFyZGNvZGVfaW50b19saWJzPSdgJEVDSE8gIiRoYXJkY29kZV9pbnRvX2xpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9J2AkRUNITyAiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2hhcmRjb2RlX2FjdGlvbj0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2VuYWJsZV9kbG9wZW49J2AkRUNITyAiJGVuYWJsZV9kbG9wZW4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Rsb3Blbl9zZWxmPSdgJEVDSE8gIiRlbmFibGVfZGxvcGVuX3NlbGYiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0nYCRFQ0hPICIkZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitvbGRfc3RyaXBsaWI9J2AkRUNITyAiJG9sZF9zdHJpcGxpYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitzdHJpcGxpYj0nYCRFQ0hPICIkc3RyaXBsaWIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogCiBMVENDPSckTFRDQycKIExUQ0ZMQUdTPSckTFRDRkxBR1MnCiBjb21waWxlcj0nJGNvbXBpbGVyX0RFRkFVTFQnCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCQxCitfTFRFQ0hPX0VPRicKK30KKwogIyBRdW90ZSBldmFsZWQgc3RyaW5ncy4KLWZvciB2YXIgaW4gU0VEIFwKK2ZvciB2YXIgaW4gU0hFTEwgXAorRUNITyBcCitQQVRIX1NFUEFSQVRPUiBcCitTRUQgXAogR1JFUCBcCiBFR1JFUCBcCiBGR1JFUCBcCkBAIC0xMzQwMyw4ICsxNTcwNCwxMyBAQAogT0JKRFVNUCBcCiBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCiBmaWxlX21hZ2ljX2NtZCBcCitmaWxlX21hZ2ljX2dsb2IgXAord2FudF9ub2Nhc2VnbG9iIFwKK0RMTFRPT0wgXAorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAogQVIgXAogQVJfRkxBR1MgXAorYXJjaGl2ZXJfbGlzdF9zcGVjIFwKIFNUUklQIFwKIFJBTkxJQiBcCiBDQyBcCkBAIC0xMzQxNCwxNCArMTU3MjAsMTQgQEAKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotU0hFTEwgXAotRUNITyBcCitubV9maWxlX2xpc3Rfc3BlYyBcCiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKK2x0X3Byb2dfY29tcGlsZXJfd2wgXAogbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAogbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAogbmVlZF9sb2NrcyBcCitNQU5JRkVTVF9UT09MIFwKIERTWU1VVElMIFwKIE5NRURJVCBcCiBMSVBPIFwKQEAgLTEzNDM1LDkgKzE1NzQxLDcgQEAKIGFsbG93X3VuZGVmaW5lZF9mbGFnIFwKIG5vX3VuZGVmaW5lZF9mbGFnIFwKIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCiBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLWZpeF9zcmNmaWxlX3BhdGggXAogZXhjbHVkZV9leHBzeW1zIFwKIGluY2x1ZGVfZXhwc3ltcyBcCiBmaWxlX2xpc3Rfc3BlYyBcCkBAIC0xMzQ0NSwxMiArMTU3NDksMTMgQEAKIGxpYm5hbWVfc3BlYyBcCiBsaWJyYXJ5X25hbWVzX3NwZWMgXAogc29uYW1lX3NwZWMgXAoraW5zdGFsbF9vdmVycmlkZV9tb2RlIFwKIGZpbmlzaF9ldmFsIFwKIG9sZF9zdHJpcGxpYiBcCiBzdHJpcGxpYjsgZG8KLSAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtMTM0NzIsMTQgKzE1Nzc3LDE1IEBACiBtb2R1bGVfZXhwc3ltX2NtZHMgXAogZXhwb3J0X3N5bWJvbHNfY21kcyBcCiBwcmVsaW5rX2NtZHMgXAorcG9zdGxpbmtfY21kcyBcCiBwb3N0aW5zdGFsbF9jbWRzIFwKIHBvc3R1bmluc3RhbGxfY21kcyBcCiBmaW5pc2hfY21kcyBcCiBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgXAogc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltcXFxcXFxcYFxcIlxcXCRdKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTEzNDg3LDEyICsxNTc5Myw2IEBACiAgICAgZXNhYwogZG9uZQogCi0jIEZpeC11cCBmYWxsYmFjayBlY2hvIGlmIGl0IHdhcyBtYW5nbGVkIGJ5IHRoZSBhYm92ZSBxdW90aW5nIHJ1bGVzLgotY2FzZSBcJGx0X0VDSE8gaW4KLSonXFxcJDAgLS1mYWxsYmFjay1lY2hvIicpICBsdF9FQ0hPPVxgXCRFQ0hPICJYXCRsdF9FQ0hPIiB8IFwkWHNlZCAtZSAncy9cXFxcXFxcXFxcXFxcXFwkMCAtLWZhbGxiYWNrLWVjaG8iXCQvXCQwIC0tZmFsbGJhY2stZWNobyIvJ1xgCi0gIDs7Ci1lc2FjCi0KIGFjX2F1eF9kaXI9JyRhY19hdXhfZGlyJwogeHNpX3NoZWxsPSckeHNpX3NoZWxsJwogbHRfc2hlbGxfYXBwZW5kPSckbHRfc2hlbGxfYXBwZW5kJwpAQCAtMTM1MjMsNiArMTU4MjMsNyBAQAogZG8KICAgY2FzZSAkYWNfY29uZmlnX3RhcmdldCBpbgogICAgICJmZmljb25maWcuaCIpIENPTkZJR19IRUFERVJTPSIkQ09ORklHX0hFQURFUlMgZmZpY29uZmlnLmgiIDs7CisgICAgImJ1aWxkaXIiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgYnVpbGRpciIgOzsKICAgICAiZGVwZmlsZXMiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVwZmlsZXMiIDs7CiAgICAgImxpYnRvb2wiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgbGlidG9vbCIgOzsKICAgICAiaW5jbHVkZSIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBpbmNsdWRlIiA7OwpAQCAtMTM1MzcsNyArMTU4MzgsNyBAQAogICAgICJpbmNsdWRlL2ZmaV9jb21tb24uaCIpIENPTkZJR19MSU5LUz0iJENPTkZJR19MSU5LUyBpbmNsdWRlL2ZmaV9jb21tb24uaDppbmNsdWRlL2ZmaV9jb21tb24uaCIgOzsKICAgICAiZmZpY29uZmlnLnB5IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGZmaWNvbmZpZy5weSIgOzsKIAotICAqKSBhc19mbl9lcnJvciAiaW52YWxpZCBhcmd1bWVudDogXGAkYWNfY29uZmlnX3RhcmdldCciICIkTElORU5PIiA1OzsKKyAgKikgYXNfZm5fZXJyb3IgJD8gImludmFsaWQgYXJndW1lbnQ6IFxgJGFjX2NvbmZpZ190YXJnZXQnIiAiJExJTkVOTyIgNTs7CiAgIGVzYWMKIGRvbmUKIApAQCAtMTM1NjEsOSArMTU4NjIsMTAgQEAKICMgYWZ0ZXIgaXRzIGNyZWF0aW9uIGJ1dCBiZWZvcmUgaXRzIG5hbWUgaGFzIGJlZW4gYXNzaWduZWQgdG8gYCR0bXAnLgogJGRlYnVnIHx8CiB7Ci0gIHRtcD0KKyAgdG1wPSBhY190bXA9CiAgIHRyYXAgJ2V4aXRfc3RhdHVzPSQ/Ci0gIHsgdGVzdCAteiAiJHRtcCIgfHwgdGVzdCAhIC1kICIkdG1wIiB8fCBybSAtZnIgIiR0bXAiOyB9ICYmIGV4aXQgJGV4aXRfc3RhdHVzCisgIDogIiR7YWNfdG1wOj0kdG1wfSIKKyAgeyB0ZXN0ICEgLWQgIiRhY190bXAiIHx8IHJtIC1mciAiJGFjX3RtcCI7IH0gJiYgZXhpdCAkZXhpdF9zdGF0dXMKICcgMAogICB0cmFwICdhc19mbl9leGl0IDEnIDEgMiAxMyAxNQogfQpAQCAtMTM1NzEsMTIgKzE1ODczLDEzIEBACiAKIHsKICAgdG1wPWAodW1hc2sgMDc3ICYmIG1rdGVtcCAtZCAiLi9jb25mWFhYWFhYIikgMj4vZGV2L251bGxgICYmCi0gIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiCisgIHRlc3QgLWQgIiR0bXAiCiB9ICB8fAogewogICB0bXA9Li9jb25mJCQtJFJBTkRPTQogICAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1wIikKLX0gfHwgYXNfZm5fZXJyb3IgImNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluIC4iICIkTElORU5PIiA1Cit9IHx8IGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiAuIiAiJExJTkVOTyIgNQorYWNfdG1wPSR0bXAKIAogIyBTZXQgdXAgdGhlIHNjcmlwdHMgZm9yIENPTkZJR19GSUxFUyBzZWN0aW9uLgogIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19GSUxFUy4KQEAgLTEzNTkzLDEyICsxNTg5NiwxMiBAQAogZmkKIGFjX2NzX2F3a19jcj1gJEFXSyAnQkVHSU4geyBwcmludCAiYVxyYiIgfScgPC9kZXYvbnVsbCAyPi9kZXYvbnVsbGAKIGlmIHRlc3QgIiRhY19jc19hd2tfY3IiID0gImEke2FjX2NyfWIiOyB0aGVuCi0gIGFjX2NzX2F3a19jcj0nXHInCisgIGFjX2NzX2F3a19jcj0nXFxyJwogZWxzZQogICBhY19jc19hd2tfY3I9JGFjX2NyCiBmaQogCi1lY2hvICdCRUdJTiB7JyA+IiR0bXAvc3ViczEuYXdrIiAmJgorZWNobyAnQkVHSU4geycgPiIkYWNfdG1wL3N1YnMxLmF3ayIgJiYKIF9BQ0VPRgogCiAKQEAgLTEzNjA3LDE4ICsxNTkxMCwxOCBAQAogICBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBzZWQgJ3MvLiovJiEkJiRhY19kZWxpbS8nICYmCiAgIGVjaG8gIl9BQ0VPRiIKIH0gPmNvbmYkJHN1YnMuc2ggfHwKLSAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQotYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBncmVwIC1jICckJ2AKKyAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorYWNfZGVsaW1fbnVtPWBlY2hvICIkYWNfc3Vic3RfdmFycyIgfCBncmVwIC1jICdeJ2AKIGFjX2RlbGltPSclIV8hIyAnCiBmb3IgYWNfbGFzdF90cnkgaW4gZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgZmFsc2UgOjsgZG8KICAgLiAuL2NvbmYkJHN1YnMuc2ggfHwKLSAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogCiAgIGFjX2RlbGltX249YHNlZCAtbiAicy8uKiRhY19kZWxpbVwkL1gvcCIgY29uZiQkc3Vicy5hd2sgfCBncmVwIC1jIFhgCiAgIGlmIHRlc3QgJGFjX2RlbGltX24gPSAkYWNfZGVsaW1fbnVtOyB0aGVuCiAgICAgYnJlYWsKICAgZWxpZiAkYWNfbGFzdF90cnk7IHRoZW4KLSAgICBhc19mbl9lcnJvciAiY291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiICIkTElORU5PIiA1CisgICAgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBtYWtlICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQogICBlbHNlCiAgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKICAgZmkKQEAgLTEzNjI2LDcgKzE1OTI5LDcgQEAKIHJtIC1mIGNvbmYkJHN1YnMuc2gKIAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi1jYXQgPj4iXCR0bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCitjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PFxcX0FDQVdLICYmCiBfQUNFT0YKIHNlZCAtbiAnCiBoCkBAIC0xMzY3NCw3ICsxNTk3Nyw3IEBACiBybSAtZiBjb25mJCRzdWJzLmF3awogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBfQUNBV0sKLWNhdCA+PiJcJHRtcC9zdWJzMS5hd2siIDw8X0FDQVdLICYmCitjYXQgPj4iXCRhY190bXAvc3ViczEuYXdrIiA8PF9BQ0FXSyAmJgogICBmb3IgKGtleSBpbiBTKSBTX2lzX3NldFtrZXldID0gMQogICBGUyA9ICIHIgogCkBAIC0xMzcwNiwyMSArMTYwMDksMjkgQEAKICAgc2VkICJzLyRhY19jclwkLy87IHMvJGFjX2NyLyRhY19jc19hd2tfY3IvZyIKIGVsc2UKICAgY2F0Ci1maSA8ICIkdG1wL3N1YnMxLmF3ayIgPiAiJHRtcC9zdWJzLmF3ayIgXAotICB8fCBhc19mbl9lcnJvciAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1CitmaSA8ICIkYWNfdG1wL3N1YnMxLmF3ayIgPiAiJGFjX3RtcC9zdWJzLmF3ayIgXAorICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBmaWxlcyBtYWNoaW5lcnkiICIkTElORU5PIiA1CiBfQUNFT0YKIAotIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSAkKHNyY2RpciksCi0jICR7c3JjZGlyfSBhbmQgQHNyY2RpckAgZnJvbSBWUEFUSCBpZiBzcmNkaXIgaXMgIi4iLCBzdHJpcCBsZWFkaW5nIGFuZAorIyBWUEFUSCBtYXkgY2F1c2UgdHJvdWJsZSB3aXRoIHNvbWUgbWFrZXMsIHNvIHdlIHJlbW92ZSBzb2xlICQoc3JjZGlyKSwKKyMgJHtzcmNkaXJ9IGFuZCBAc3JjZGlyQCBlbnRyaWVzIGZyb20gVlBBVEggaWYgc3JjZGlyIGlzICIuIiwgc3RyaXAgbGVhZGluZyBhbmQKICMgdHJhaWxpbmcgY29sb25zIGFuZCB0aGVuIHJlbW92ZSB0aGUgd2hvbGUgbGluZSBpZiBWUEFUSCBiZWNvbWVzIGVtcHR5CiAjIChhY3R1YWxseSB3ZSBsZWF2ZSBhbiBlbXB0eSBsaW5lIHRvIHByZXNlcnZlIGxpbmUgbnVtYmVycykuCiBpZiB0ZXN0ICJ4JHNyY2RpciIgPSB4LjsgdGhlbgotICBhY192cHN1Yj0nL15bCSBdKlZQQVRIWwkgXSo9L3sKLXMvOipcJChzcmNkaXIpOiovOi8KLXMvOipcJHtzcmNkaXJ9OiovOi8KLXMvOipAc3JjZGlyQDoqLzovCi1zL15cKFtePV0qPVsJIF0qXCk6Ki9cMS8KKyAgYWNfdnBzdWI9Jy9eWwkgXSpWUEFUSFsJIF0qPVsJIF0qL3sKK2gKK3MvLy8KK3MvXi86Lworcy9bCSBdKiQvOi8KK3MvOlwkKHNyY2Rpcik6LzovZworcy86XCR7c3JjZGlyfTovOi9nCitzLzpAc3JjZGlyQDovOi9nCitzL146Ki8vCiBzLzoqJC8vCit4CitzL1woPVsJIF0qXCkuKi9cMS8KK0cKK3MvXG4vLwogcy9eW149XSo9WwkgXSokLy8KIH0nCiBmaQpAQCAtMTM3MzIsNyArMTYwNDMsNyBAQAogIyBObyBuZWVkIHRvIGdlbmVyYXRlIHRoZW0gaWYgdGhlcmUgYXJlIG5vIENPTkZJR19IRUFERVJTLgogIyBUaGlzIGhhcHBlbnMgZm9yIGluc3RhbmNlIHdpdGggYC4vY29uZmlnLnN0YXR1cyBNYWtlZmlsZScuCiBpZiB0ZXN0IC1uICIkQ09ORklHX0hFQURFUlMiOyB0aGVuCi1jYXQgPiIkdG1wL2RlZmluZXMuYXdrIiA8PFxfQUNBV0sgfHwKK2NhdCA+IiRhY190bXAvZGVmaW5lcy5hd2siIDw8XF9BQ0FXSyB8fAogQkVHSU4gewogX0FDRU9GCiAKQEAgLTEzNzQ0LDExICsxNjA1NSwxMSBAQAogIyBoYW5kbGluZyBvZiBsb25nIGxpbmVzLgogYWNfZGVsaW09JyUhXyEjICcKIGZvciBhY19sYXN0X3RyeSBpbiBmYWxzZSBmYWxzZSA6OyBkbwotICBhY190PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKLSAgaWYgdGVzdCAteiAiJGFjX3QiOyB0aGVuCisgIGFjX3R0PWBzZWQgLW4gIi8kYWNfZGVsaW0vcCIgY29uZmRlZnMuaGAKKyAgaWYgdGVzdCAteiAiJGFjX3R0IjsgdGhlbgogICAgIGJyZWFrCiAgIGVsaWYgJGFjX2xhc3RfdHJ5OyB0aGVuCi0gICAgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBtYWtlICRDT05GSUdfSEVBREVSUyIgIiRMSU5FTk8iIDUKKyAgICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IG1ha2UgJENPTkZJR19IRUFERVJTIiAiJExJTkVOTyIgNQogICBlbHNlCiAgICAgYWNfZGVsaW09IiRhY19kZWxpbSEkYWNfZGVsaW0gXyRhY19kZWxpbSEhICIKICAgZmkKQEAgLTEzODMzLDcgKzE2MTQ0LDcgQEAKIF9BQ0FXSwogX0FDRU9GCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCi0gIGFzX2ZuX2Vycm9yICJjb3VsZCBub3Qgc2V0dXAgY29uZmlnIGhlYWRlcnMgbWFjaGluZXJ5IiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IHNldHVwIGNvbmZpZyBoZWFkZXJzIG1hY2hpbmVyeSIgIiRMSU5FTk8iIDUKIGZpICMgdGVzdCAtbiAiJENPTkZJR19IRUFERVJTIgogCiAKQEAgLTEzODQ2LDcgKzE2MTU3LDcgQEAKICAgZXNhYwogICBjYXNlICRhY19tb2RlJGFjX3RhZyBpbgogICA6W0ZITF0qOiopOzsKLSAgOkwqIHwgOkMqOiopIGFzX2ZuX2Vycm9yICJpbnZhbGlkIHRhZyBcYCRhY190YWcnIiAiJExJTkVOTyIgNTs7CisgIDpMKiB8IDpDKjoqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB0YWcgXGAkYWNfdGFnJyIgIiRMSU5FTk8iIDU7OwogICA6W0ZIXS0pIGFjX3RhZz0tOi07OwogICA6W0ZIXSopIGFjX3RhZz0kYWNfdGFnOiRhY190YWcuaW47OwogICBlc2FjCkBAIC0xMzg2NSw3ICsxNjE3Niw3IEBACiAgICAgZm9yIGFjX2YKICAgICBkbwogICAgICAgY2FzZSAkYWNfZiBpbgotICAgICAgLSkgYWNfZj0iJHRtcC9zdGRpbiI7OworICAgICAgLSkgYWNfZj0iJGFjX3RtcC9zdGRpbiI7OwogICAgICAgKikgIyBMb29rIGZvciB0aGUgZmlsZSBmaXJzdCBpbiB0aGUgYnVpbGQgdHJlZSwgdGhlbiBpbiB0aGUgc291cmNlIHRyZWUKIAkgIyAoaWYgdGhlIHBhdGggaXMgbm90IGFic29sdXRlKS4gIFRoZSBhYnNvbHV0ZSBwYXRoIGNhbm5vdCBiZSBET1Mtc3R5bGUsCiAJICMgYmVjYXVzZSAkYWNfZiBjYW5ub3QgY29udGFpbiBgOicuCkBAIC0xMzg3NCw3ICsxNjE4NSw3IEBACiAJICAgW1xcLyRdKikgZmFsc2U7OwogCSAgICopIHRlc3QgLWYgIiRzcmNkaXIvJGFjX2YiICYmIGFjX2Y9IiRzcmNkaXIvJGFjX2YiOzsKIAkgICBlc2FjIHx8Ci0JICAgYXNfZm5fZXJyb3IgImNhbm5vdCBmaW5kIGlucHV0IGZpbGU6IFxgJGFjX2YnIiAiJExJTkVOTyIgNTs7CisJICAgYXNfZm5fZXJyb3IgMSAiY2Fubm90IGZpbmQgaW5wdXQgZmlsZTogXGAkYWNfZiciICIkTElORU5PIiA1OzsKICAgICAgIGVzYWMKICAgICAgIGNhc2UgJGFjX2YgaW4gKlwnKikgYWNfZj1gJGFzX2VjaG8gIiRhY19mIiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7IGVzYWMKICAgICAgIGFzX2ZuX2FwcGVuZCBhY19maWxlX2lucHV0cyAiICckYWNfZiciCkBAIC0xMzkwMCw4ICsxNjIxMSw4IEBACiAgICAgZXNhYwogCiAgICAgY2FzZSAkYWNfdGFnIGluCi0gICAgKjotOiogfCAqOi0pIGNhdCA+IiR0bXAvc3RkaW4iIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNSA7OworICAgICo6LToqIHwgKjotKSBjYXQgPiIkYWNfdG1wL3N0ZGluIiBcCisgICAgICB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUgOzsKICAgICBlc2FjCiAgICAgOzsKICAgZXNhYwpAQCAtMTQwMzcsMjMgKzE2MzQ4LDI0IEBACiBzJkBNS0RJUl9QQCYkYWNfTUtESVJfUCY7dCB0CiAkYWNfZGF0YXJvb3RkaXJfaGFjawogIgotZXZhbCBzZWQgXCJcJGFjX3NlZF9leHRyYVwiICIkYWNfZmlsZV9pbnB1dHMiIHwgJEFXSyAtZiAiJHRtcC9zdWJzLmF3ayIgPiR0bXAvb3V0IFwKLSAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CitldmFsIHNlZCBcIlwkYWNfc2VkX2V4dHJhXCIgIiRhY19maWxlX2lucHV0cyIgfCAkQVdLIC1mICIkYWNfdG1wL3N1YnMuYXdrIiBcCisgID4kYWNfdG1wL291dCB8fCBhc19mbl9lcnJvciAkPyAiY291bGQgbm90IGNyZWF0ZSAkYWNfZmlsZSIgIiRMSU5FTk8iIDUKIAogdGVzdCAteiAiJGFjX2RhdGFyb290ZGlyX2hhY2skYWNfZGF0YXJvb3RkaXJfc2VlbiIgJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAnL1wke2RhdGFyb290ZGlyfS9wJyAiJHRtcC9vdXQiYDsgdGVzdCAtbiAiJGFjX291dCI7IH0gJiYKLSAgeyBhY19vdXQ9YHNlZCAtbiAnL15bCSBdKmRhdGFyb290ZGlyWwkgXSo6Kj0vcCcgIiR0bXAvb3V0ImA7IHRlc3QgLXogIiRhY19vdXQiOyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9cJHtkYXRhcm9vdGRpcn0vcCcgIiRhY190bXAvb3V0ImA7IHRlc3QgLW4gIiRhY19vdXQiOyB9ICYmCisgIHsgYWNfb3V0PWBzZWQgLW4gJy9eWwkgXSpkYXRhcm9vdGRpclsJIF0qOio9L3AnIFwKKyAgICAgICIkYWNfdG1wL291dCJgOyB0ZXN0IC16ICIkYWNfb3V0IjsgfSAmJgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICRhY19maWxlIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSB2YXJpYWJsZSBcYGRhdGFyb290ZGlyJwotd2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkLiIgPiY1Cit3aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQiID4mNQogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2ZpbGUgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhcmlhYmxlIFxgZGF0YXJvb3RkaXInCi13aGljaCBzZWVtcyB0byBiZSB1bmRlZmluZWQuICBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGRlZmluZWQuIiA+JjI7fQord2hpY2ggc2VlbXMgdG8gYmUgdW5kZWZpbmVkLiAgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIiA+JjI7fQogCi0gIHJtIC1mICIkdG1wL3N0ZGluIgorICBybSAtZiAiJGFjX3RtcC9zdGRpbiIKICAgY2FzZSAkYWNfZmlsZSBpbgotICAtKSBjYXQgIiR0bXAvb3V0IiAmJiBybSAtZiAiJHRtcC9vdXQiOzsKLSAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJHRtcC9vdXQiICIkYWNfZmlsZSI7OworICAtKSBjYXQgIiRhY190bXAvb3V0IiAmJiBybSAtZiAiJGFjX3RtcC9vdXQiOzsKKyAgKikgcm0gLWYgIiRhY19maWxlIiAmJiBtdiAiJGFjX3RtcC9vdXQiICIkYWNfZmlsZSI7OwogICBlc2FjIFwKLSAgfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgIHx8IGFzX2ZuX2Vycm9yICQ/ICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQogIDs7CiAgIDpIKQogICAjCkBAIC0xNDA2MiwyMSArMTYzNzQsMjEgQEAKICAgaWYgdGVzdCB4IiRhY19maWxlIiAhPSB4LTsgdGhlbgogICAgIHsKICAgICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAotICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJHRtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiCi0gICAgfSA+IiR0bXAvY29uZmlnLmgiIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlICRhY19maWxlIiAiJExJTkVOTyIgNQotICAgIGlmIGRpZmYgIiRhY19maWxlIiAiJHRtcC9jb25maWcuaCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIKKyAgICB9ID4iJGFjX3RtcC9jb25maWcuaCIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgaWYgZGlmZiAiJGFjX2ZpbGUiICIkYWNfdG1wL2NvbmZpZy5oIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJGFjX2ZpbGUgaXMgdW5jaGFuZ2VkIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICRhY19maWxlIGlzIHVuY2hhbmdlZCIgPiY2O30KICAgICBlbHNlCiAgICAgICBybSAtZiAiJGFjX2ZpbGUiCi0gICAgICBtdiAiJHRtcC9jb25maWcuaCIgIiRhY19maWxlIiBcCi0JfHwgYXNfZm5fZXJyb3IgImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgICBtdiAiJGFjX3RtcC9jb25maWcuaCIgIiRhY19maWxlIiBcCisJfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgJGFjX2ZpbGUiICIkTElORU5PIiA1CiAgICAgZmkKICAgZWxzZQogICAgICRhc19lY2hvICIvKiAkY29uZmlndXJlX2lucHV0ICAqLyIgXAotICAgICAgJiYgZXZhbCAnJEFXSyAtZiAiJHRtcC9kZWZpbmVzLmF3ayInICIkYWNfZmlsZV9pbnB1dHMiIFwKLSAgICAgIHx8IGFzX2ZuX2Vycm9yICJjb3VsZCBub3QgY3JlYXRlIC0iICIkTElORU5PIiA1CisgICAgICAmJiBldmFsICckQVdLIC1mICIkYWNfdG1wL2RlZmluZXMuYXdrIicgIiRhY19maWxlX2lucHV0cyIgXAorICAgICAgfHwgYXNfZm5fZXJyb3IgJD8gImNvdWxkIG5vdCBjcmVhdGUgLSIgIiRMSU5FTk8iIDUKICAgZmkKICMgQ29tcHV0ZSAiJGFjX2ZpbGUiJ3MgaW5kZXggaW4gJGNvbmZpZ19oZWFkZXJzLgogX2FtX2FyZz0iJGFjX2ZpbGUiCkBAIC0xNDEzMCwxOSArMTY0NDIsMTkgQEAKICRhc19lY2hvICIkYXNfbWU6IGxpbmtpbmcgJGFjX3NvdXJjZSB0byAkYWNfZmlsZSIgPiY2O30KIAogICAgIGlmIHRlc3QgISAtciAiJGFjX3NvdXJjZSI7IHRoZW4KLSAgICAgIGFzX2ZuX2Vycm9yICIkYWNfc291cmNlOiBmaWxlIG5vdCBmb3VuZCIgIiRMSU5FTk8iIDUKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkYWNfc291cmNlOiBmaWxlIG5vdCBmb3VuZCIgIiRMSU5FTk8iIDUKICAgICBmaQogICAgIHJtIC1mICIkYWNfZmlsZSIKIAogICAgICMgVHJ5IGEgcmVsYXRpdmUgc3ltbGluaywgdGhlbiBhIGhhcmQgbGluaywgdGhlbiBhIGNvcHkuCi0gICAgY2FzZSAkc3JjZGlyIGluCisgICAgY2FzZSAkYWNfc291cmNlIGluCiAgICAgW1xcLyRdKiB8ID86W1xcL10qICkgYWNfcmVsX3NvdXJjZT0kYWNfc291cmNlIDs7CiAJKikgYWNfcmVsX3NvdXJjZT0kYWNfdG9wX2J1aWxkX3ByZWZpeCRhY19zb3VyY2UgOzsKICAgICBlc2FjCiAgICAgbG4gLXMgIiRhY19yZWxfc291cmNlIiAiJGFjX2ZpbGUiIDI+L2Rldi9udWxsIHx8CiAgICAgICBsbiAiJGFjX3NvdXJjZSIgIiRhY19maWxlIiAyPi9kZXYvbnVsbCB8fAogICAgICAgY3AgLXAgIiRhY19zb3VyY2UiICIkYWNfZmlsZSIgfHwKLSAgICAgIGFzX2ZuX2Vycm9yICJjYW5ub3QgbGluayBvciBjb3B5ICRhY19zb3VyY2UgdG8gJGFjX2ZpbGUiICIkTElORU5PIiA1CisgICAgICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGxpbmsgb3IgY29weSAkYWNfc291cmNlIHRvICRhY19maWxlIiAiJExJTkVOTyIgNQogICBmaQogIDs7CiAgIDpDKSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBleGVjdXRpbmcgJGFjX2ZpbGUgY29tbWFuZHMiID4mNQpAQCAtMTQxNTIsNiArMTY0NjQsMTUwIEBACiAKIAogICBjYXNlICRhY19maWxlJGFjX21vZGUgaW4KKyAgICAiYnVpbGRpciI6QykgICBhY190b3Bfc3JjZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NyY2RpciIKKyAgaWYgdGVzdCAiLiRheF9lbmFibGVfYnVpbGRkaXIiID0gIi4uIiA7IHRoZW4KKyAgICBpZiB0ZXN0IC1mICIkdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHNraXBwaW5nIHRvcF9zcmNkaXIvTWFrZWZpbGUgLSBsZWZ0IHVudG91Y2hlZCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbGVmdCB1bnRvdWNoZWQiID4mNjt9CisgICAgZWxzZQorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBza2lwcGluZyB0b3Bfc3JjZGlyL01ha2VmaWxlIC0gbm90IGNyZWF0ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogc2tpcHBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSAtIG5vdCBjcmVhdGVkIiA+JjY7fQorICAgIGZpCisgIGVsc2UKKyAgICBpZiB0ZXN0IC1mICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBhPWBncmVwICJeVkVSU0lPTiAiICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSJgIDsgYj1gZ3JlcCAiXlZFUlNJT04gIiBNYWtlZmlsZWAKKyAgICAgIHRlc3QgIiRhIiAhPSAiJGIiICYmIHJtICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIKKyAgICBmaQorICAgIGlmIHRlc3QgLWYgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA7IHRoZW4KKwllY2hvICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSA6ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlLmluIiA+ICR0bXAvY29uZnRlbXAubWsKKwllY2hvICIJQCBlY2hvICdSRU1PVkVELCwsJyA+XCRAIiA+PiAkdG1wL2NvbmZ0ZW1wLm1rCisgICAgICBldmFsICIke01BS0UtbWFrZX0gLWYgJHRtcC9jb25mdGVtcC5tayAyPi9kZXYvbnVsbCA+L2Rldi9udWxsIgorICAgICAgaWYgZ3JlcCAnXlJFTU9WRUQsLCwnICIkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSIgPi9kZXYvbnVsbAorICAgICAgdGhlbiBybSAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSA7IGZpCisgICAgICBjcCAkdG1wL2NvbmZ0ZW1wLm1rICRhY190b3Bfc3JjZGlyL21ha2VmaWxlcy5ta34gICAgICAjIyBERUJVR0dJTkcKKyAgICBmaQorICAgIGlmIHRlc3QgISAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjcmVhdGUgdG9wX3NyY2Rpci9NYWtlZmlsZSBndWVzc2VkIGZyb20gbG9jYWwgTWFrZWZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogY3JlYXRlIHRvcF9zcmNkaXIvTWFrZWZpbGUgZ3Vlc3NlZCBmcm9tIGxvY2FsIE1ha2VmaWxlIiA+JjY7fQorICAgICAgeD0nYCcgOyBjYXQgPiR0bXAvY29uZnRlbXAuc2VkIDw8X0VPRgorL15cJC9uCit4CisvXlwkL2JTCit4CisvXFxcXFwkL3tIO2Q7fQore0g7cy8uKi8vO3g7fQorYk0KKzpTCit4CisvXFxcXFwkL3toO2Q7fQore2g7cy8uKi8vO3g7fQorOk0KK3MvXFwoXFxuXFwpCS9cXDEgL2cKKy9eCS9kCisvXlsJIF0qW1xcI10vZAorL15WUEFUSCAqPS9kCitzL15zcmNkaXIgKj0uKi9zcmNkaXIgPSAuLworcy9edG9wX3NyY2RpciAqPS4qL3RvcF9zcmNkaXIgPSAuLworL1s6PV0vIWQKKy9eXFwuL2QKKy8gPSAvYgorLyAuPSAvYgorLzovIWIKK3MvOi4qLzovCitzLyAvICAvZworcy8gXFwoW2Etel1bYS16LV0qW2EtekEtWjAtOV1cXClcXChbIDpdXFwpLyBcXDEgXFwxLWFsbFxcMi9nCitzL15cXChbYS16XVthLXotXSpbYS16QS1aMC05XVxcKVxcKFsgOl1cXCkvXFwxIFxcMS1hbGxcXDIvCitzLyAgLyAvZworL15hbGwgYWxsLWFsbFsgOl0vaVxcCithbGwtY29uZmlndXJlZCA6IGFsbC1hbGwKK3MvIFthLXpBLVowLTktXSotYWxsIFthLXpBLVowLTktXSotYWxsLWFsbC8vZworLy1hbGwtYWxsL2QKK2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpci9jb25maWcuZ3Vlc3MgJHggXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyBcJFwkSE9TVCAiIE1ha2VmaWxlIHwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IHVzZT0keCBiYXNlbmFtZSAiXCRcQCIgLWFsbCAkeDsgbj0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRuICogXCRcQCI7IGlmIHRlc3QgIlwkXCRuIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IDsgZmkgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyB0ZXN0ICJcJFwkdXNlIiA9ICJcJFxAIiAmJiBCVUlMRD0keCBlY2hvICJcJFwkQlVJTEQiIHwgdGFpbCAtMSAkeCBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyAoY2QgIlwkXCRpIiAmJiB0ZXN0ICEgLWYgY29uZmlndXJlICYmIFwkKE1BS0UpIFwkXCR1c2UpIHx8IGV4aXQ7IGRvbmUKKy9kaXN0LWFsbCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS50YXIuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZmkgOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZm9yIGYgaW4gXCRcJGkvXCQoUEFDS0FHRSktXCQoVkVSU0lPTikudGFyLiogXFxcXFxcCisJOyBkbyB0ZXN0IC1mICJcJFwkZiIgJiYgbXYgIlwkXCRmIiBcJChQVUIpLiA7IGRvbmUgOyBicmVhayA7IGRvbmUKKy9kaXN0LVthLXpBLVowLTldKi1hbGwgKjovYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoIC4vY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmb3VuZD0keCBlY2hvIFwkXCRCVUlMRCB8IHdjIC13ICR4IFxcXFxcXAorCTsgZWNobyAiTUFLRSBcJFwkSE9TVCA6IFwkXCRmb3VuZCBcJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIiBcXFxcXFwKKwk7IGlmIHRlc3QgIlwkXCRmb3VuZCIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfHRhaWwgLTF8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyBmaSA7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBmb3IgZiBpbiBcJFwkaS9cJChQQUNLQUdFKS1cJChWRVJTSU9OKS4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCisvZGlzdGNsZWFuLWFsbCAqOi9hXFwKKwlAIEhPU1Q9IlwkKEhPU1QpXCIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEhPU1QiID0gIi4iICYmIEhPU1Q9JHggc2ggJGF4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXIvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyB1c2U9JHggYmFzZW5hbWUgIlwkXEAiIC1hbGwgJHg7IG49JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkbiAqIFwkXEAgKGFsbCBsb2NhbCBidWlsZHMpIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkQlVJTEQiID0gIi4iICYmIEJVSUxEPSIuIiBcXFxcXFwKKwk7IGZvciBpIGluIFwkXCRCVUlMRCA7IGRvIHRlc3QgIi5cJFwkaSIgPSAiLiIgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICIjIHJtIC1yIFwkXCRpIjsgZG9uZSA7IGVjaG8gIiMgKHNsZWVwIDMpIiA7IHNsZWVwIDMgXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi8iID4gL2Rldi9udWxsICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiXCRcJGkiIHwgZ3JlcCAiXi4uLyIgPiAvZGV2L251bGwgJiYgY29udGludWUgXFxcXFxcCisJOyBlY2hvICJybSAtciBcJFwkaSI7IChybSAtciAiXCRcJGkiKSA7IGRvbmUgOyBybSBNYWtlZmlsZQorX0VPRgorICAgICAgY3AgIiR0bXAvY29uZnRlbXAuc2VkIiAiJGFjX3RvcF9zcmNkaXIvbWFrZWZpbGUuc2VkfiIgICAgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIC1mICR0bXAvY29uZnRlbXAuc2VkIE1ha2VmaWxlID4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICAgICAgaWYgdGVzdCAtZiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUubWsiIDsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4dGVuZCB0b3Bfc3JjZGlyL01ha2VmaWxlIHdpdGggdG9wX3NyY2Rpci9NYWtlZmlsZS5tayIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBleHRlbmQgdG9wX3NyY2Rpci9NYWtlZmlsZSB3aXRoIHRvcF9zcmNkaXIvTWFrZWZpbGUubWsiID4mNjt9CisgICAgICAgIGNhdCAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZS5tayA+PiRhY190b3Bfc3JjZGlyL01ha2VmaWxlCisgICAgICBmaSA7IHh4eHg9IiMjIyMiCisgICAgICBlY2hvICIkeHh4eCBDT05GSUdVUkFUSU9OUyBGT1IgVE9QTEVWRUwgTUFLRUZJTEU6ICIgPj4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICAgICAgIyBzYW5pdHkgY2hlY2sKKyAgICAgIGlmIGdyZXAgJ147IGVjaG8gIk1BS0UgJyAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSA+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGJ1Z2d5IHNlZCBmb3VuZCAtIGl0IGRlbGV0ZXMgdGFiIGluIFwiYVwiIHRleHQgcGFydHMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogYnVnZ3kgc2VkIGZvdW5kIC0gaXQgZGVsZXRlcyB0YWIgaW4gXCJhXCIgdGV4dCBwYXJ0cyIgPiY2O30KKyAgICAgICAgJGF4X2VuYWJsZV9idWlsZGRpcl9zZWQgLWUgJy9eQCBIT1NUPS9zL14vCS8nIC1lICcvXjsgL3MvXi8JLycgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUgXAorICAgICAgICAgID4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZX4KKyAgICAgICAgKHRlc3QgLXMgJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGV+ICYmIG12ICRhY190b3Bfc3JjZGlyL01ha2VmaWxlfiAkYWNfdG9wX3NyY2Rpci9NYWtlZmlsZSkgMj4vZGV2L251bGwKKyAgICAgIGZpCisgICAgZWxzZQorICAgICAgeHh4eD0iXFwjXFwjXFwjXFwjIgorICAgICAgIyBlY2hvICIvXiR4eHh4ICokYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QgL2QiID4kdG1wL2NvbmZ0ZW1wLnNlZAorICAgICAgZWNobyAicyFeJHh4eHggW158XSogfCAqJGF4X2VuYWJsZV9idWlsZGRpciAqXCQhJHh4eHggLi4uLi4uICRheF9lbmFibGVfYnVpbGRkaXIhIiA+JHRtcC9jb25mdGVtcC5zZWQKKyAgICAgICRheF9lbmFibGVfYnVpbGRkaXJfc2VkIC1mICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRhY190b3Bfc3JjZGlyL01ha2VmaWxlIiA+JHRtcC9ta2ZpbGUudG1wCisgICAgICAgIGNwICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRhY190b3Bfc3JjZGlyL21ha2VmaWxlcy5zZWR+IiAgICAgICAgICMjIERFQlVHR0lORworICAgICAgICBjcCAiJHRtcC9ta2ZpbGUudG1wIiAgICIkYWNfdG9wX3NyY2Rpci9tYWtlZmlsZXMub3V0fiIgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgIGlmIGNtcCAtcyAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiICIkdG1wL21rZmlsZS50bXAiIDI+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGtlZXBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IGtlZXBpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjY7fQorICAgICAgICBybSAiJHRtcC9ta2ZpbGUudG1wIgorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJldXNpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IHJldXNpbmcgdG9wX3NyY2Rpci9NYWtlZmlsZSBmcm9tIGVhcmxpZXIgY29uZmlndXJlIiA+JjY7fQorICAgICAgICBtdiAiJHRtcC9ta2ZpbGUudG1wIiAiJGFjX3RvcF9zcmNkaXIvTWFrZWZpbGUiCisgICAgICBmaQorICAgIGZpCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBidWlsZCBpbiAkYXhfZW5hYmxlX2J1aWxkZGlyIChIT1NUPSRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCkiID4mNQorJGFzX2VjaG8gIiRhc19tZTogYnVpbGQgaW4gJGF4X2VuYWJsZV9idWlsZGRpciAoSE9TVD0kYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QpIiA+JjY7fQorICAgIHh4eHg9IiMjIyMiCisgICAgZWNobyAiJHh4eHgiICIkYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QiICJ8JGF4X2VuYWJsZV9idWlsZGRpciIgPj4kYWNfdG9wX3NyY2Rpci9NYWtlZmlsZQorICBmaQorIDs7CiAgICAgImRlcGZpbGVzIjpDKSB0ZXN0IHgiJEFNREVQX1RSVUUiICE9IHgiIiB8fCB7CiAgICMgQXV0b2NvbmYgMi42MiBxdW90ZXMgLS1maWxlIGFyZ3VtZW50cyBmb3IgZXZhbCwgYnV0IG5vdCB3aGVuIGZpbGVzCiAgICMgYXJlIGxpc3RlZCB3aXRob3V0IC0tZmlsZS4gIExldCdzIHBsYXkgc2FmZSBhbmQgb25seSBlbmFibGUgdGhlIGV2YWwKQEAgLTE0MjY4LDcgKzE2NzI0LDggQEAKICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgogIwogIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgICAgICAgICAgICAgICAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCkBAIC0xNDMxNiw2ICsxNjc3MywxNSBAQAogIyBXaGV0aGVyIG9yIG5vdCB0byBvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24uCiBmYXN0X2luc3RhbGw9JGVuYWJsZV9mYXN0X2luc3RhbGwKIAorIyBTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgorU0hFTEw9JGx0X1NIRUxMCisKKyMgQW4gZWNobyBwcm9ncmFtIHRoYXQgcHJvdGVjdHMgYmFja3NsYXNoZXMuCitFQ0hPPSRsdF9FQ0hPCisKKyMgVGhlIFBBVEggc2VwYXJhdG9yIGZvciB0aGUgYnVpbGQgc3lzdGVtLgorUEFUSF9TRVBBUkFUT1I9JGx0X1BBVEhfU0VQQVJBVE9SCisKICMgVGhlIGhvc3Qgc3lzdGVtLgogaG9zdF9hbGlhcz0kaG9zdF9hbGlhcwogaG9zdD0kaG9zdApAQCAtMTQzNjUsOSArMTY4MzEsMTEgQEAKICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KIE5MMlNQPSRsdF9sdF9OTDJTUAogCi0jIEhvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuCi1yZWxvYWRfZmxhZz0kbHRfcmVsb2FkX2ZsYWcKLXJlbG9hZF9jbWRzPSRsdF9yZWxvYWRfY21kcworIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorCisjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgordG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAogCiAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgogT0JKRFVNUD0kbHRfT0JKRFVNUApAQCAtMTQzNzUsMTMgKzE2ODQzLDMwIEBACiAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgogZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCiAKLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCiBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKIAorIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisKKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgord2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKworIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KK0RMTFRPT0w9JGx0X0RMTFRPT0wKKworIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisKICMgVGhlIGFyY2hpdmVyLgogQVI9JGx0X0FSCisKKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCiBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKIAorIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCithcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworCiAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgogU1RSSVA9JGx0X1NUUklQCiAKQEAgLTE0MzkwLDYgKzE2ODc1LDkgQEAKIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSRsdF9vbGRfcG9zdGluc3RhbGxfY21kcwogb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0kbHRfb2xkX3Bvc3R1bmluc3RhbGxfY21kcwogCisjIFdoZXRoZXIgdG8gdXNlIGEgbG9jayBmb3Igb2xkIGFyY2hpdmUgZXh0cmFjdGlvbi4KK2xvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj0kbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uCisKICMgQSBDIGNvbXBpbGVyLgogTFRDQz0kbHRfQ0MKIApAQCAtMTQ0MDgsMjEgKzE2ODk2LDI0IEBACiAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgogZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CiAKKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisKKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCitsdF9zeXNyb290PSRsdF9zeXNyb290CisKICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgogb2JqZGlyPSRvYmpkaXIKIAotIyBTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzLgotU0hFTEw9JGx0X1NIRUxMCi0KLSMgQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzLgotRUNITz0kbHRfRUNITwotCiAjIFVzZWQgdG8gZXhhbWluZSBsaWJyYXJpZXMgd2hlbiBmaWxlX21hZ2ljX2NtZCBiZWdpbnMgd2l0aCAiZmlsZSIuCiBNQUdJQ19DTUQ9JE1BR0lDX0NNRAogCiAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwogbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwogCisjIE1hbmlmZXN0IHRvb2wuCitNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisKICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KIERTWU1VVElMPSRsdF9EU1lNVVRJTAogCkBAIC0xNDQ3OSw2ICsxNjk3MCw5IEBACiAjIFRoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lLgogc29uYW1lX3NwZWM9JGx0X3NvbmFtZV9zcGVjCiAKKyMgUGVybWlzc2lvbiBtb2RlIG92ZXJyaWRlIGZvciBpbnN0YWxsYXRpb24gb2Ygc2hhcmVkIGxpYnJhcmllcy4KK2luc3RhbGxfb3ZlcnJpZGVfbW9kZT0kbHRfaW5zdGFsbF9vdmVycmlkZV9tb2RlCisKICMgQ29tbWFuZCB0byB1c2UgYWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIGEgc2hhcmVkIGFyY2hpdmUuCiBwb3N0aW5zdGFsbF9jbWRzPSRsdF9wb3N0aW5zdGFsbF9jbWRzCiAKQEAgLTE0NTE4LDYgKzE3MDEyLDEwIEBACiAjIFRoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBsaWJyYXJpZXMuCiBMRD0kbHRfTEQKIAorIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLgorcmVsb2FkX2ZsYWc9JGx0X3JlbG9hZF9mbGFnCityZWxvYWRfY21kcz0kbHRfcmVsb2FkX2NtZHMKKwogIyBDb21tYW5kcyB1c2VkIHRvIGJ1aWxkIGFuIG9sZC1zdHlsZSBhcmNoaXZlLgogb2xkX2FyY2hpdmVfY21kcz0kbHRfb2xkX2FyY2hpdmVfY21kcwogCkBAIC0xNDUzMCwxMiArMTcwMjgsMTIgQEAKICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKIAotIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLQogIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCiBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKIAorIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgord2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKwogIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgogbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKIApAQCAtMTQ1ODUsMTAgKzE3MDgzLDYgQEAKICMgVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzIG5vdCBleGlzdAogaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0kbHRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYwogCi0jIElmIGxkIGlzIHVzZWQgd2hlbiBsaW5raW5nLCBmbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkKLSMgZHVyaW5nIGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0kbHRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZAotCiAjIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAiLXJwYXRoIiBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnQuCiBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSRsdF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yCiAKQEAgLTE0NjIyLDkgKzE3MTE2LDYgQEAKICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgogbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwogCi0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0KICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgogYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKIApAQCAtMTQ2NDAsNiArMTcxMzEsOSBAQAogIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCiAKKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKwogIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCiBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKIApAQCAtMTQ2NzIsMjEyICsxNzE2NiwxNjkgQEAKICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKIAotICBjYXNlICR4c2lfc2hlbGwgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0jIGNhbGw6Ci0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLX0KLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci19Ci0KLV9MVF9FT0YKLSAgICA7OwotICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAotICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gIGVsc2UKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gIGZpCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCi19CisgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKK2Z1bmNfZGlybmFtZSAoKVwKK3tcCitcICAgIGNhc2UgJHsxfSBpblwKK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorXCAgICBlc2FjXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogCiAKLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgY2FzZSAkezJ9IGluCi0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlXFxcXCR7Mn1cJCUlImA7OwotICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJSR7Mn1cJCUlImA7OwotICBlc2FjCi19Ci0KLSMgc2VkIHNjcmlwdHM6Ci1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX29wdCJgCi0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfYXJnImAKLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgJ3MvXC5bXi5dKiQvLmxvLydgCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLX0KLQotIyBmdW5jX2xlbiBzdHJpbmcKLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLWZ1bmNfbGVuICgpCi17Ci0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLX0KLQotX0xUX0VPRgotZXNhYwotCi1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiQxKz1cJDIiCi19Ci1fTFRfRU9GCi0gICAgOzsKLSAgKikKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkMT1cJCQxXCQyIgotfQotCi1fTFRfRU9GCi0gICAgOzsKLSAgZXNhYworICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCitmdW5jX2Jhc2VuYW1lICgpXAore1wKK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiAKIAotICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKK3tcCitcICAgIGNhc2UgJHsxfSBpblwKK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorXCAgICBlc2FjXAorXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKIAotICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisKKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCitmdW5jX3N0cmlwbmFtZSAoKVwKK3tcCitcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCitcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCitcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCit7XAorXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCitcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCitmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKK3tcCitcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorZnVuY19sbzJvICgpXAore1wKK1wgICAgY2FzZSAkezF9IGluXAorXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKK1wgICAgZXNhY1wKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKK2Z1bmNfeGZvcm0gKClcCit7XAorICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCisKKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorZnVuY19hcml0aCAoKVwKK3tcCisgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorZnVuY19sZW4gKClcCit7XAorICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorCitmaQorCitpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorZnVuY19hcHBlbmQgKClcCit7XAorICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQordGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKworCisgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCitmdW5jX2FwcGVuZF9xdW90ZWQgKClcCit7XAorXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCit9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisKKworICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKK2Vsc2UKKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitmaQorCitpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KK2ZpCisKKworICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCiAKQEAgLTE0ODk3LDcgKzE3MzQ4LDcgQEAKIGFjX2NsZWFuX2ZpbGVzPSRhY19jbGVhbl9maWxlc19zYXZlCiAKIHRlc3QgJGFjX3dyaXRlX2ZhaWwgPSAwIHx8Ci0gIGFzX2ZuX2Vycm9yICJ3cml0ZSBmYWlsdXJlIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTIiAiJExJTkVOTyIgNQorICBhc19mbl9lcnJvciAkPyAid3JpdGUgZmFpbHVyZSBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyIgIiRMSU5FTk8iIDUKIAogCiAjIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGFuZCB0aGVuIGNhbGxzIGNvbmZpZy5zdGF0dXMuCkBAIC0xNDkxOCw3ICsxNzM2OSw3IEBACiAgIGV4ZWMgNT4+Y29uZmlnLmxvZwogICAjIFVzZSB8fCwgbm90ICYmLCB0byBhdm9pZCBleGl0aW5nIGZyb20gdGhlIGlmIHdpdGggJD8gPSAxLCB3aGljaAogICAjIHdvdWxkIG1ha2UgY29uZmlndXJlIGZhaWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBpbnN0cnVjdGlvbi4KLSAgJGFjX2NzX3N1Y2Nlc3MgfHwgYXNfZm5fZXhpdCAkPworICAkYWNfY3Nfc3VjY2VzcyB8fCBhc19mbl9leGl0IDEKIGZpCiBpZiB0ZXN0IC1uICIkYWNfdW5yZWNvZ25pemVkX29wdHMiICYmIHRlc3QgIiRlbmFibGVfb3B0aW9uX2NoZWNraW5nIiAhPSBubzsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVucmVjb2duaXplZCBvcHRpb25zOiAkYWNfdW5yZWNvZ25pemVkX29wdHMiID4mNQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUuYWMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYwppbmRleCA4N2M2M2UxLi5kODY1MmFhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYwpAQCAtMyw5ICszLDkgQEAKICMgZmlsZSBmcm9tIGxpYmZmaSAtIHNsaWdodGx5IHBhdGNoZWQgZm9yIGN0eXBlcwogIwogCi1BQ19QUkVSRVEoMi42MykKK0FDX1BSRVJFUSgyLjY4KQogCi1BQ19JTklUKFtsaWJmZmldLCBbMy4wLjEwcmMwXSwgW2h0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWxdKQorQUNfSU5JVChbbGliZmZpXSwgWzMuMC4xMV0sIFtodHRwOi8vZ2l0aHViLmNvbS9hdGdyZWVuL2xpYmZmaS9pc3N1ZXNdKQogQUNfQ09ORklHX0hFQURFUlMoW2ZmaWNvbmZpZy5oXSkKIAogQUNfQ0FOT05JQ0FMX1NZU1RFTQpAQCAtMTMsMTYgKzEzLDIyIEBACiAKIC4gJHtzcmNkaXJ9L2NvbmZpZ3VyZS5ob3N0CiAKK0FYX0VOQUJMRV9CVUlMRERJUgorCiBBTV9JTklUX0FVVE9NQUtFCiAKICMgVGhlIHNhbWUgYXMgaW4gYm9laG0tZ2MgYW5kIGxpYnN0ZGMrKy4gSGF2ZSB0byBib3Jyb3cgaXQgZnJvbSB0aGVyZS4KICMgV2UgbXVzdCBmb3JjZSBDQyB0byAvbm90LyBiZSBwcmVjaW91cyB2YXJpYWJsZXM7IG90aGVyd2lzZQogIyB0aGUgd3JvbmcsIG5vbi1tdWx0aWxpYi1hZGp1c3RlZCB2YWx1ZSB3aWxsIGJlIHVzZWQgaW4gbXVsdGlsaWJzLgogIyBBcyBhIHNpZGUgZWZmZWN0LCB3ZSBoYXZlIHRvIHN1YnN0IENGTEFHUyBvdXJzZWx2ZXMuCisjIEFsc28gc2F2ZSBhbmQgcmVzdG9yZSBDRkxBR1MsIHNpbmNlIEFDX1BST0dfQ0Mgd2lsbCBjb21lIHVwIHdpdGgKKyMgZGVmYXVsdHMgb2YgaXRzIG93biBpZiBub25lIGFyZSBwcm92aWRlZC4KIAogbTRfcmVuYW1lKFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10sW3JlYWxfUFJFQ0lPVVNdKQogbTRfZGVmaW5lKFtfQUNfQVJHX1ZBUl9QUkVDSU9VU10sW10pCitzYXZlX0NGTEFHUz0kQ0ZMQUdTCiBBQ19QUk9HX0NDCitDRkxBR1M9JHNhdmVfQ0ZMQUdTCiBtNF91bmRlZmluZShbX0FDX0FSR19WQVJfUFJFQ0lPVVNdKQogbTRfcmVuYW1lKFtyZWFsX1BSRUNJT1VTXSxbX0FDX0FSR19WQVJfUFJFQ0lPVVNdKQogCkBAIC0zMyw2ICszOSwxMiBAQAogQUNfUFJPR19MSUJUT09MCiBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCiAKK0FYX0NDX01BWE9QVAorQVhfQ0ZMQUdTX1dBUk5fQUxMCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1mZXhjZXB0aW9ucyIKK2ZpCisKIEFNX01BSU5UQUlORVJfTU9ERQogCiBBQ19DSEVDS19IRUFERVJTKHN5cy9tbWFuLmgpCkBAIC00Niw3ICs1OCw3IEBACiBjYXNlICIkaG9zdCIgaW4KICAgYWxwaGEqLSotKikKIAlUQVJHRVQ9QUxQSEE7IFRBUkdFVERJUj1hbHBoYTsKLQkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSwgY2hhbmdhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgorCSMgU3VwcG9ydCAxMjgtYml0IGxvbmcgZG91YmxlLCBjaGFuZ2VhYmxlIHZpYSBjb21tYW5kLWxpbmUgc3dpdGNoLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19MT05HX0RPVUJMRV8xMjhfXyknCiAJOzsKIApAQCAtNzQsNyArODYsNyBAQAogCVRBUkdFVD1GUlY7IFRBUkdFVERJUj1mcnYKIAk7OwogCi0gIGhwcGEqLSotbGludXgqIHwgcGFyaXNjKi0qLWxpbnV4KikKKyAgaHBwYSotKi1saW51eCogfCBwYXJpc2MqLSotbGludXgqIHwgaHBwYSotKi1vcGVuYnNkKikKIAlUQVJHRVQ9UEFfTElOVVg7IFRBUkdFVERJUj1wYQogCTs7CiAgIGhwcGEqNjQtKi1ocHV4KikKQEAgLTg3LDEwICs5OSwxNyBAQAogICBpPzg2LSotZnJlZWJzZCogfCBpPzg2LSotb3BlbmJzZCopCiAJVEFSR0VUPVg4Nl9GUkVFQlNEOyBUQVJHRVRESVI9eDg2CiAJOzsKLSAgaT84Ni13aW4zMiogfCBpPzg2LSotY3lnd2luKiB8IGk/ODYtKi1taW5ndyopCisgIGk/ODYtd2luMzIqIHwgaT84Ni0qLWN5Z3dpbiogfCBpPzg2LSotbWluZ3cqIHwgaT84Ni0qLW9zMiogfCBpPzg2LSotaW50ZXJpeCopCiAJVEFSR0VUPVg4Nl9XSU4zMjsgVEFSR0VURElSPXg4NgotCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSB0aGlzIGZvciBzaGFyZWRsaWIKLQlBTV9MVExERkxBR1M9Ii1uby11bmRlZmluZWQiCisJIyBBbGwgbWluZ3cvY3lnd2luL3dpbjMyIGJ1aWxkcyByZXF1aXJlIC1uby11bmRlZmluZWQgZm9yIHNoYXJlZGxpYi4KKwkjIFdlIG11c3QgYWxzbyBjaGVjayB3aXRoX2Nyb3NzX2hvc3QgdG8gZGVjaWRlIGlmIHRoaXMgaXMgYSBuYXRpdmUKKwkjIG9yIGNyb3NzLWJ1aWxkIGFuZCBzZWxlY3Qgd2hlcmUgdG8gaW5zdGFsbCBkbGxzIGFwcHJvcHJpYXRlbHkuCisJaWYgdGVzdCAtbiAiJHdpdGhfY3Jvc3NfaG9zdCIgJiYKKwkgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKHRvb2xleGVjbGliZGlyKSInOworCWVsc2UKKwkgIEFNX0xUTERGTEFHUz0nLW5vLXVuZGVmaW5lZCAtYmluZGlyICIkKGJpbmRpcikiJzsKKwlmaQogCTs7CiAgIGk/ODYtKi1kYXJ3aW4qKQogCVRBUkdFVD1YODZfREFSV0lOOyBUQVJHRVRESVI9eDg2CkBAIC0xMDIsNyArMTIxLDcgQEAKICAgICAgICAgVEFSR0VUPVg4NjsgVEFSR0VURElSPXg4NgogICAgICAgICA7OwogICBpPzg2LSotKikKLQlUQVJHRVQ9WDg2OyBUQVJHRVRESVI9eDg2CisJVEFSR0VUPVg4Nl82NDsgVEFSR0VURElSPXg4NgogCTs7CiAKICAgaWE2NCotKi0qKQpAQCAtMTE3LDMwICsxMzYsNDAgQEAKIAlUQVJHRVQ9TTY4SzsgVEFSR0VURElSPW02OGsKIAk7OwogCi0gIG1pcHMtc2dpLWlyaXg1LiogfCBtaXBzLXNnaS1pcml4Ni4qKQorICBtaXBzLXNnaS1pcml4NS4qIHwgbWlwcy1zZ2ktaXJpeDYuKiB8IG1pcHMqLSotcnRlbXMqKQogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKLSAgbWlwcyotKi1saW51eCopCisgIG1pcHMqLSotbGludXgqIHwgbWlwcyotKi1vcGVuYnNkKikKIAkjIFN1cHBvcnQgMTI4LWJpdCBsb25nIGRvdWJsZSBmb3IgTmV3QUJJLgogCUhBVkVfTE9OR19ET1VCTEU9J2RlZmluZWQoX19taXBzNjQpJwogCVRBUkdFVD1NSVBTX0lSSVg7IFRBUkdFVERJUj1taXBzCiAJOzsKIAorICBtb3hpZS0qLSopCisgICAgICAgIFRBUkdFVD1NT1hJRTsgVEFSR0VURElSPW1veGllCisJOzsKKwogICBwb3dlcnBjKi0qLWxpbnV4KiB8IHBvd2VycGMtKi1zeXN2KikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjLSotYW1pZ2FvcyopCisJVEFSR0VUPVBPV0VSUEM7IFRBUkdFVERJUj1wb3dlcnBjCisJOzsKICAgcG93ZXJwYy0qLWJlb3MqKQogCVRBUkdFVD1QT1dFUlBDOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7Ci0gIHBvd2VycGMtKi1kYXJ3aW4qKQorICBwb3dlcnBjLSotZGFyd2luKiB8IHBvd2VycGM2NC0qLWRhcndpbiopCiAJVEFSR0VUPVBPV0VSUENfREFSV0lOOyBUQVJHRVRESVI9cG93ZXJwYwogCTs7CiAgIHBvd2VycGMtKi1haXgqIHwgcnM2MDAwLSotYWl4KikKIAlUQVJHRVQ9UE9XRVJQQ19BSVg7IFRBUkdFVERJUj1wb3dlcnBjCiAJOzsKLSAgcG93ZXJwYy0qLWZyZWVic2QqKQorICBwb3dlcnBjLSotZnJlZWJzZCogfCBwb3dlcnBjLSotb3BlbmJzZCopCiAJVEFSR0VUPVBPV0VSUENfRlJFRUJTRDsgVEFSR0VURElSPXBvd2VycGMKIAk7OworICBwb3dlcnBjNjQtKi1mcmVlYnNkKikKKwlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKKwk7OwogICBwb3dlcnBjKi0qLXJ0ZW1zKikKIAlUQVJHRVQ9UE9XRVJQQzsgVEFSR0VURElSPXBvd2VycGMKIAk7OwpAQCAtMTY2LDYgKzE5NSwxNSBAQAogCiAgIHg4Nl82NC0qLWN5Z3dpbiogfCB4ODZfNjQtKi1taW5ndyopCiAJVEFSR0VUPVg4Nl9XSU42NDsgVEFSR0VURElSPXg4NgorCSMgQWxsIG1pbmd3L2N5Z3dpbi93aW4zMiBidWlsZHMgcmVxdWlyZSAtbm8tdW5kZWZpbmVkIGZvciBzaGFyZWRsaWIuCisJIyBXZSBtdXN0IGFsc28gY2hlY2sgd2l0aF9jcm9zc19ob3N0IHRvIGRlY2lkZSBpZiB0aGlzIGlzIGEgbmF0aXZlCisJIyBvciBjcm9zcy1idWlsZCBhbmQgc2VsZWN0IHdoZXJlIHRvIGluc3RhbGwgZGxscyBhcHByb3ByaWF0ZWx5LgorCWlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCisJICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJCh0b29sZXhlY2xpYmRpcikiJzsKKwllbHNlCisJICBBTV9MVExERkxBR1M9Jy1uby11bmRlZmluZWQgLWJpbmRpciAiJChiaW5kaXIpIic7CisJZmkKIAk7OwogCiAgIHg4Nl82NC0qLSopCkBAIC0xOTEsNiArMjI5LDcgQEAKIEFNX0NPTkRJVElPTkFMKElBNjQsIHRlc3QgeCRUQVJHRVQgPSB4SUE2NCkKIEFNX0NPTkRJVElPTkFMKE0zMlIsIHRlc3QgeCRUQVJHRVQgPSB4TTMyUikKIEFNX0NPTkRJVElPTkFMKE02OEssIHRlc3QgeCRUQVJHRVQgPSB4TTY4SykKK0FNX0NPTkRJVElPTkFMKE1PWElFLCB0ZXN0IHgkVEFSR0VUID0geE1PWElFKQogQU1fQ09ORElUSU9OQUwoUE9XRVJQQywgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDKQogQU1fQ09ORElUSU9OQUwoUE9XRVJQQ19BSVgsIHRlc3QgeCRUQVJHRVQgPSB4UE9XRVJQQ19BSVgpCiBBTV9DT05ESVRJT05BTChQT1dFUlBDX0RBUldJTiwgdGVzdCB4JFRBUkdFVCA9IHhQT1dFUlBDX0RBUldJTikKQEAgLTIyOCwxNyArMjY3LDcgQEAKIAogQUNfQ19CSUdFTkRJQU4KIAotQUNfQ0FDSEVfQ0hFQ0soW2Fzc2VtYmxlciAuY2ZpIHBzZXVkby1vcCBzdXBwb3J0XSwKLSAgICBsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcCwgWwotICAgIGxpYmZmaV9jdl9hc19jZmlfcHNldWRvX29wPXVua25vd24KLSAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLmNmaV9zdGFydHByb2Ncblx0LmNmaV9lbmRwcm9jIik7XSwsCi0JCSAgIFtsaWJmZmlfY3ZfYXNfY2ZpX3BzZXVkb19vcD15ZXNdLAotCQkgICBbbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3A9bm9dKQotXSkKLWlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX0FTX0NGSV9QU0VVRE9fT1AsIDEsCi0JICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuY2ZpXyogZGlyZWN0aXZlcy5dKQotZmkKK0dDQ19BU19DRklfUFNFVURPX09QCiAKIGlmIHRlc3QgeCRUQVJHRVQgPSB4U1BBUkM7IHRoZW4KICAgICBBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIGFuZCBsaW5rZXIgc3VwcG9ydCB1bmFsaWduZWQgcGMgcmVsYXRlZCByZWxvY3NdLApAQCAtMjc2LDcgKzMwNSw3IEBACiAJbGliZmZpX2N2X2FzX3g4Nl9wY3JlbCwgWwogCWxpYmZmaV9jdl9hc194ODZfcGNyZWw9eWVzCiAJZWNobyAnLnRleHQ7IGZvbzogbm9wOyAuZGF0YTsgLmxvbmcgZm9vLS47IC50ZXh0JyA+IGNvbmZ0ZXN0LnMKLQlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCBncmVwIC1pIHdhcm5pbmcgPiAvZGV2L251bGw7IHRoZW4KKwlpZiAkQ0MgJENGTEFHUyAtYyBjb25mdGVzdC5zIDI+JjEgfCAkRUdSRVAgLWkgJ2lsbGVnYWx8d2FybmluZycgPiAvZGV2L251bGw7IHRoZW4KIAkgICAgbGliZmZpX2N2X2FzX3g4Nl9wY3JlbD1ubwogCWZpCiAJXSkKQEAgLTI4NCw1NCArMzEzLDExNCBAQAogCUFDX0RFRklORShIQVZFX0FTX1g4Nl9QQ1JFTCwgMSwKIAkJICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIFBDIHJlbGF0aXZlIHJlbG9jcy5dKQogICAgIGZpCisKKyAgICBBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIC5hc2NpaSBwc2V1ZG8tb3Agc3VwcG9ydF0sCisgICAgICAgbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCwgWworICAgICAgIGxpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9dW5rbm93bgorICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSAuYXNjaWkKKyAgICAgICBBQ19UUllfQ09NUElMRShbYXNtICgiLmFzY2lpIFxcInN0cmluZ1xcIiIpO10sLAorCQkgICAgICAgW2xpYmZmaV9jdl9hc19hc2NpaV9wc2V1ZG9fb3A9eWVzXSwKKwkJICAgICAgIFtsaWJmZmlfY3ZfYXNfYXNjaWlfcHNldWRvX29wPW5vXSkKKyAgICBdKQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX2FzY2lpX3BzZXVkb19vcCIgPSB4eWVzOyB0aGVuCisgICAgICAgQUNfREVGSU5FKEhBVkVfQVNfQVNDSUlfUFNFVURPX09QLCAxLAorCSAgICAgICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5hc2NpaS5dKQorICAgIGZpCisKKyAgICBBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIC5zdHJpbmcgcHNldWRvLW9wIHN1cHBvcnRdLAorICAgICAgIGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wLCBbCisgICAgICAgbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9dW5rbm93bgorICAgICAgICMgQ2hlY2sgaWYgd2UgaGF2ZSAuc3RyaW5nCisgICAgICAgQUNfVFJZX0NPTVBJTEUoW2FzbSAoIi5zdHJpbmcgXFwic3RyaW5nXFwiIik7XSwsCisJCSAgICAgICBbbGliZmZpX2N2X2FzX3N0cmluZ19wc2V1ZG9fb3A9eWVzXSwKKwkJICAgICAgIFtsaWJmZmlfY3ZfYXNfc3RyaW5nX3BzZXVkb19vcD1ub10pCisgICAgXSkKKyAgICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9hc19zdHJpbmdfcHNldWRvX29wIiA9IHh5ZXM7IHRoZW4KKyAgICAgICBBQ19ERUZJTkUoSEFWRV9BU19TVFJJTkdfUFNFVURPX09QLCAxLAorCSAgICAgICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5zdHJpbmcuXSkKKyAgICBmaQogZmkKIAoraWYgdGVzdCB4JFRBUkdFVCA9IHhYODZfV0lONjQ7IHRoZW4KKyAgICBMVF9TWVNfU1lNQk9MX1VTQ09SRQorICAgIGlmIHRlc3QgIngkc3lzX3N5bWJvbF91bmRlcnNjb3JlIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKFNZTUJPTF9VTkRFUlNDT1JFLCAxLCBbRGVmaW5lIGlmIHN5bWJvbHMgYXJlIHVuZGVyc2NvcmVkLl0pCisgICAgZmkKK2ZpCisKKworRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRT0wCiBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAqLWFwcGxlLWRhcndpbjEwKiB8ICotKi1mcmVlYnNkKiB8ICotKi1vcGVuYnNkKiB8ICotcGMtc29sYXJpcyopCisgICAgICphcm0qLWFwcGxlLWRhcndpbiopCisgICAgICAgRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRT0xCisgICAgICAgQUNfREVGSU5FKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUsIDEsCisgICAgICAgICAgICAgICAgIFtDYW5ub3QgdXNlIFBST1RfRVhFQyBvbiB0aGlzIHRhcmdldCwgc28sIHdlIHJldmVydCB0bworICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlIG1lYW5zXSkKKyAgICAgOzsKKyAgICAgKi1hcHBsZS1kYXJ3aW4xW1sxMF1dKiB8ICotKi1mcmVlYnNkKiB8ICotKi1rZnJlZWJzZCogfCAqLSotb3BlbmJzZCogfCAqLXBjLXNvbGFyaXMqKQogICAgICAgIEFDX0RFRklORShGRklfTU1BUF9FWEVDX1dSSVQsIDEsCiAgICAgICAgICAgICAgICAgIFtDYW5ub3QgdXNlIG1hbGxvYyBvbiB0aGlzIHRhcmdldCwgc28sIHdlIHJldmVydCB0bwogICAgICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlIG1lYW5zXSkKICAgICAgOzsKIGVzYWMKK0FNX0NPTkRJVElPTkFMKEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUsIHRlc3QgeCRGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0geDEpCitBQ19TVUJTVChGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFKQogCi1BQ19DQUNIRV9DSEVDSyhbd2hldGhlciAuZWhfZnJhbWUgc2VjdGlvbiBzaG91bGQgYmUgcmVhZC1vbmx5XSwKLSAgICBsaWJmZmlfY3Zfcm9fZWhfZnJhbWUsIFsKLQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9bm8KLQllY2hvICdleHRlcm4gdm9pZCBmb28gKHZvaWQpOyB2b2lkIGJhciAodm9pZCkgeyBmb28gKCk7IGZvbyAoKTsgfScgPiBjb25mdGVzdC5jCi0JaWYgJENDICRDRkxBR1MgLVMgLWZwaWMgLWZleGNlcHRpb25zIC1vIGNvbmZ0ZXN0LnMgY29uZnRlc3QuYyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAgIGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qImEiJyBjb25mdGVzdC5zID4gL2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9yb19laF9mcmFtZT15ZXMKLQkgICAgZWxpZiBncmVwICcuc2VjdGlvbi4qZWhfZnJhbWUuKiNhbGxvYycgY29uZnRlc3QuYyBcCi0JCSB8IGdyZXAgLXYgJyN3cml0ZScgPiAvZGV2L251bGw7IHRoZW4KLQkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcwotCSAgICBmaQoraWYgdGVzdCB4JFRBUkdFVCA9IHhYODZfNjQ7IHRoZW4KKyAgICBBQ19DQUNIRV9DSEVDSyhbYXNzZW1ibGVyIHN1cHBvcnRzIHVud2luZCBzZWN0aW9uIHR5cGVdLAorCWxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZSwgWworCWxpYmZmaV9jdl9hc194ODZfNjRfdW53aW5kX3NlY3Rpb25fdHlwZT15ZXMKKwllY2hvICcuc2VjdGlvbiAuZWhfZnJhbWUsImEiLEB1bndpbmQnID4gY29uZnRlc3QucworCWlmICRDQyAkQ0ZMQUdTIC1jIGNvbmZ0ZXN0LnMgMj4mMSB8IGdyZXAgLWkgd2FybmluZyA+IC9kZXYvbnVsbDsgdGhlbgorCSAgICBsaWJmZmlfY3ZfYXNfeDg2XzY0X3Vud2luZF9zZWN0aW9uX3R5cGU9bm8KIAlmaQotCXJtIC1mIGNvbmZ0ZXN0LioKLSAgICBdKQotaWYgdGVzdCAieCRsaWJmZmlfY3Zfcm9fZWhfZnJhbWUiID0geHllczsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX1JPX0VIX0ZSQU1FLCAxLAotCSAgICAgIFtEZWZpbmUgaWYgLmVoX2ZyYW1lIHNlY3Rpb25zIHNob3VsZCBiZSByZWFkLW9ubHkuXSkKLSAgICBBQ19ERUZJTkUoRUhfRlJBTUVfRkxBR1MsICJhIiwKLQkgICAgICBbRGVmaW5lIHRvIHRoZSBmbGFncyBuZWVkZWQgZm9yIHRoZSAuc2VjdGlvbiAuZWhfZnJhbWUgZGlyZWN0aXZlLl0pCi1lbHNlCi0gICAgQUNfREVGSU5FKEVIX0ZSQU1FX0ZMQUdTLCAiYXciLAotCSAgICAgIFtEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuXSkKKwldKQorICAgIGlmIHRlc3QgIngkbGliZmZpX2N2X2FzX3g4Nl82NF91bndpbmRfc2VjdGlvbl90eXBlIiA9IHh5ZXM7IHRoZW4KKwlBQ19ERUZJTkUoSEFWRV9BU19YODZfNjRfVU5XSU5EX1NFQ1RJT05fVFlQRSwgMSwKKwkJICBbRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIHVud2luZCBzZWN0aW9uIHR5cGUuXSkKKyAgICBmaQogZmkKIAotQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpXSwKLSAgICBsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlLCBbCi0JZWNobyAnaW50IF9fYXR0cmlidXRlX18gKCh2aXNpYmlsaXR5ICgiaGlkZGVuIikpKSBmb28gKHZvaWQpIHsgcmV0dXJuIDE7IH0nID4gY29uZnRlc3QuYwotCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9bm8KLQlpZiBBQ19UUllfQ09NTUFORCgke0NDLWNjfSAtV2Vycm9yIC1TIGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QucyAxPiZBU19NRVNTQUdFX0xPR19GRCk7IHRoZW4KLQkgICAgaWYgZ3JlcCAnXC5oaWRkZW4uKmZvbycgY29uZnRlc3QucyA+L2Rldi9udWxsOyB0aGVuCi0JCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9eWVzCi0JICAgIGZpCi0JZmkKLQlybSAtZiBjb25mdGVzdC4qCi0gICAgXSkKLWlmIHRlc3QgJGxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGUgPSB5ZXM7IHRoZW4KLSAgICBBQ19ERUZJTkUoSEFWRV9ISURERU5fVklTSUJJTElUWV9BVFRSSUJVVEUsIDEsCi0JICAgICAgW0RlZmluZSBpZiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJoaWRkZW4iKSkpIGlzIHN1cHBvcnRlZC5dKQoraWYgdGVzdCAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC5laF9mcmFtZSBzZWN0aW9uIHNob3VsZCBiZSByZWFkLW9ubHldLAorICAgICAgbGliZmZpX2N2X3JvX2VoX2ZyYW1lLCBbCisgIAlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9bm8KKyAgCWVjaG8gJ2V4dGVybiB2b2lkIGZvbyAodm9pZCk7IHZvaWQgYmFyICh2b2lkKSB7IGZvbyAoKTsgZm9vICgpOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgCWlmICRDQyAkQ0ZMQUdTIC1TIC1mcGljIC1mZXhjZXB0aW9ucyAtbyBjb25mdGVzdC5zIGNvbmZ0ZXN0LmMgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAJICAgIGlmIGdyZXAgJy5zZWN0aW9uLiplaF9mcmFtZS4qImEiJyBjb25mdGVzdC5zID4gL2Rldi9udWxsOyB0aGVuCisgIAkJbGliZmZpX2N2X3JvX2VoX2ZyYW1lPXllcworICAJICAgIGVsaWYgZ3JlcCAnLnNlY3Rpb24uKmVoX2ZyYW1lLiojYWxsb2MnIGNvbmZ0ZXN0LmMgXAorICAJCSB8IGdyZXAgLXYgJyN3cml0ZScgPiAvZGV2L251bGw7IHRoZW4KKyAgCQlsaWJmZmlfY3Zfcm9fZWhfZnJhbWU9eWVzCisgIAkgICAgZmkKKyAgCWZpCisgIAlybSAtZiBjb25mdGVzdC4qCisgICAgICBdKQorICBpZiB0ZXN0ICJ4JGxpYmZmaV9jdl9yb19laF9mcmFtZSIgPSB4eWVzOyB0aGVuCisgICAgICBBQ19ERUZJTkUoSEFWRV9ST19FSF9GUkFNRSwgMSwKKyAgCSAgICAgIFtEZWZpbmUgaWYgLmVoX2ZyYW1lIHNlY3Rpb25zIHNob3VsZCBiZSByZWFkLW9ubHkuXSkKKyAgICAgIEFDX0RFRklORShFSF9GUkFNRV9GTEFHUywgImEiLAorICAJICAgICAgW0RlZmluZSB0byB0aGUgZmxhZ3MgbmVlZGVkIGZvciB0aGUgLnNlY3Rpb24gLmVoX2ZyYW1lIGRpcmVjdGl2ZS4gIF0pCisgIGVsc2UKKyAgICAgIEFDX0RFRklORShFSF9GUkFNRV9GTEFHUywgImF3IiwKKyAgCSAgICAgIFtEZWZpbmUgdG8gdGhlIGZsYWdzIG5lZWRlZCBmb3IgdGhlIC5zZWN0aW9uIC5laF9mcmFtZSBkaXJlY3RpdmUuICBdKQorICBmaQorCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiaGlkZGVuIikpKV0sCisgICAgICBsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlLCBbCisgIAllY2hvICdpbnQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJoaWRkZW4iKSkpIGZvbyAodm9pZCkgeyByZXR1cm4gMSAgOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9bm8KKyAgCWlmIEFDX1RSWV9DT01NQU5EKCR7Q0MtY2N9IC1XZXJyb3IgLVMgY29uZnRlc3QuYyAtbyBjb25mdGVzdC5zIDE+JkFTX01FU1NBR0VfTE9HX0ZEKTsgdGhlbgorICAJICAgIGlmIGdyZXAgJ1wuaGlkZGVuLipmb28nIGNvbmZ0ZXN0LnMgPi9kZXYvbnVsbDsgdGhlbgorICAJCWxpYmZmaV9jdl9oaWRkZW5fdmlzaWJpbGl0eV9hdHRyaWJ1dGU9eWVzCisgIAkgICAgZmkKKyAgCWZpCisgIAlybSAtZiBjb25mdGVzdC4qCisgICAgICBdKQorICBpZiB0ZXN0ICRsaWJmZmlfY3ZfaGlkZGVuX3Zpc2liaWxpdHlfYXR0cmlidXRlID0geWVzOyB0aGVuCisgICAgICBBQ19ERUZJTkUoSEFWRV9ISURERU5fVklTSUJJTElUWV9BVFRSSUJVVEUsIDEsCisgIAkgICAgICBbRGVmaW5lIGlmIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkgaXMgc3VwcG9ydGVkLl0pCisgIGZpCiBmaQogCiBBSF9CT1RUT00oWwpAQCAtMzYwLDYgKzQ0OSw3IEBACiAgIGlmIHRlc3QgIiRlbmFibGVfZGVidWciID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoRkZJX0RFQlVHLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgZXh0cmEgZGVidWdnaW5nLl0pCiAgIGZpKQorQU1fQ09ORElUSU9OQUwoRkZJX0RFQlVHLCB0ZXN0ICIkZW5hYmxlX2RlYnVnIiA9ICJ5ZXMiKQogCiBBQ19BUkdfRU5BQkxFKHN0cnVjdHMsCiBbICAtLWRpc2FibGUtc3RydWN0cyAgICAgICBvbWl0IGNvZGUgZm9yIHN0cnVjdCBzdXBwb3J0XSwKQEAgLTM3OSwyMSArNDY5LDI1IEBACiAgICAgQUNfREVGSU5FKFVTSU5HX1BVUklGWSwgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgUHVyaWZ5IGFuZCB3YW50IHRvIHN1cHByZXNzIHNwdXJpb3VzIG1lc3NhZ2VzLl0pCiAgIGZpKQogCi1pZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgotICAgdGVzdCB4IiR3aXRoX2Nyb3NzX2hvc3QiICE9IHgibm8iOyB0aGVuCi0gIHRvb2xleGVjZGlyPSckKGV4ZWNfcHJlZml4KS8kKHRhcmdldF9hbGlhcyknCi0gIHRvb2xleGVjbGliZGlyPSckKHRvb2xleGVjZGlyKS9saWInCi1lbHNlCi0gIHRvb2xleGVjZGlyPSckKGxpYmRpcikvZ2NjLWxpYi8kKHRhcmdldF9hbGlhcyknCi0gIHRvb2xleGVjbGliZGlyPSckKGxpYmRpciknCisjIFRoZXNlIHZhcmlhYmxlcyBhcmUgb25seSBldmVyIHVzZWQgd2hlbiB3ZSBjcm9zcy1idWlsZCB0byBYODZfV0lOMzIuCisjIEFuZCB3ZSBvbmx5IHN1cHBvcnQgdGhpcyB3aXRoIEdDQywgc28uLi4KK2lmIHRlc3QgeCIkR0NDIiAhPSB4Im5vIjsgdGhlbgorICBpZiB0ZXN0IC1uICIkd2l0aF9jcm9zc19ob3N0IiAmJgorICAgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KKyAgICB0b29sZXhlY2Rpcj0nJChleGVjX3ByZWZpeCkvJCh0YXJnZXRfYWxpYXMpJworICAgIHRvb2xleGVjbGliZGlyPSckKHRvb2xleGVjZGlyKS9saWInCisgIGVsc2UKKyAgICB0b29sZXhlY2Rpcj0nJChsaWJkaXIpL2djYy1saWIvJCh0YXJnZXRfYWxpYXMpJworICAgIHRvb2xleGVjbGliZGlyPSckKGxpYmRpciknCisgIGZpCisgIG11bHRpX29zX2RpcmVjdG9yeT1gJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgCisgIGNhc2UgJG11bHRpX29zX2RpcmVjdG9yeSBpbgorICAgIC4pIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KKyAgICAqKSB0b29sZXhlY2xpYmRpcj0kdG9vbGV4ZWNsaWJkaXIvJG11bHRpX29zX2RpcmVjdG9yeSA7OworICBlc2FjCisgIEFDX1NVQlNUKHRvb2xleGVjZGlyKQorICBBQ19TVUJTVCh0b29sZXhlY2xpYmRpcikKIGZpCi1tdWx0aV9vc19kaXJlY3Rvcnk9YCRDQyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5YAotY2FzZSAkbXVsdGlfb3NfZGlyZWN0b3J5IGluCi0gIC4pIDs7ICMgQXZvaWQgdHJhaWxpbmcgLy4KLSAgKikgdG9vbGV4ZWNsaWJkaXI9JHRvb2xleGVjbGliZGlyLyRtdWx0aV9vc19kaXJlY3RvcnkgOzsKLWVzYWMKLUFDX1NVQlNUKHRvb2xleGVjZGlyKQotQUNfU1VCU1QodG9vbGV4ZWNsaWJkaXIpCiAKIGlmIHRlc3QgIiR7bXVsdGlsaWJ9IiA9ICJ5ZXMiOyB0aGVuCiAgIG11bHRpbGliX2FyZz0iLS1lbmFibGUtbXVsdGlsaWIiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RlcGNvbXAgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RlcGNvbXAKaW5kZXggY2E1ZWE0ZS4uZGY4ZWVhNyAxMDA3NTUKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kZXBjb21wCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZGVwY29tcApAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBkZXBjb21wIC0gY29tcGlsZSBhIHByb2dyYW0gZ2VuZXJhdGluZyBkZXBlbmRlbmNpZXMgYXMgc2lkZS1lZmZlY3RzCiAKLXNjcmlwdHZlcnNpb249MjAwNi0xMC0xNS4xOAorc2NyaXB0dmVyc2lvbj0yMDA5LTA0LTI4LjIxOyAjIFVUQwogCi0jIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA5IEZyZWUKKyMgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNyw5ICsxNyw3IEBACiAjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQQotIyAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCiAjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKICMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCkBAIC04Nyw2ICs4NSwxNSBAQAogICAgZGVwbW9kZT1kYXNobXN0ZG91dAogZmkKIAorY3lncGF0aF91PSJjeWdwYXRoIC11IC1mIC0iCitpZiB0ZXN0ICIkZGVwbW9kZSIgPSBtc3ZjbXN5czsgdGhlbgorICAgIyBUaGlzIGlzIGp1c3QgbGlrZSBtc3Zpc3VhbGNwcCBidXQgdy9vIGN5Z3BhdGggdHJhbnNsYXRpb24uCisgICAjIEp1c3QgY29udmVydCB0aGUgYmFja3NsYXNoLWVzY2FwZWQgYmFja3NsYXNoZXMgdG8gc2luZ2xlIGZvcndhcmQKKyAgICMgc2xhc2hlcyB0byBzYXRpc2Z5IGRlcGVuZC5tNAorICAgY3lncGF0aF91PSJzZWQgcyxcXFxcXFxcXCwvLGciCisgICBkZXBtb2RlPW1zdmlzdWFsY3BwCitmaQorCiBjYXNlICIkZGVwbW9kZSIgaW4KIGdjYzMpCiAjIyBnY2MgMyBpbXBsZW1lbnRzIGRlcGVuZGVuY3kgdHJhY2tpbmcgdGhhdCBkb2VzIGV4YWN0bHkgd2hhdApAQCAtMTkyLDE0ICsxOTksMTQgQEAKICcgPCAiJHRtcGRlcGZpbGUiIFwKICAgICB8IHNlZCAtZSAncy9eLipcLm86Ly8nIC1lICdzLyMuKiQvLycgLWUgJy9eJC8gZCcgfCBcCiAgICAgdHIgJwotJyAnICcgPj4gJGRlcGZpbGUKLSAgICBlY2hvID4+ICRkZXBmaWxlCisnICcgJyA+PiAiJGRlcGZpbGUiCisgICAgZWNobyA+PiAiJGRlcGZpbGUiCiAKICAgICAjIFRoZSBzZWNvbmQgcGFzcyBnZW5lcmF0ZXMgYSBkdW1teSBlbnRyeSBmb3IgZWFjaCBoZWFkZXIgZmlsZS4KICAgICB0ciAnICcgJwogJyA8ICIkdG1wZGVwZmlsZSIgXAogICAgfCBzZWQgLWUgJ3MvXi4qXC5vOi8vJyAtZSAncy8jLiokLy8nIC1lICcvXiQvIGQnIC1lICdzLyQvOi8nIFwKLSAgID4+ICRkZXBmaWxlCisgICA+PiAiJGRlcGZpbGUiCiAgIGVsc2UKICAgICAjIFRoZSBzb3VyY2VmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW55IGRlcGVuZGVuY2llcywgc28ganVzdAogICAgICMgc3RvcmUgYSBkdW1teSBjb21tZW50IGxpbmUsIHRvIGF2b2lkIGVycm9ycyB3aXRoIHRoZSBNYWtlZmlsZQpAQCAtMjE1LDM0ICsyMjIsMzkgQEAKICAgIyBjdXJyZW50IGRpcmVjdG9yeS4gIEFsc28sIHRoZSBBSVggY29tcGlsZXIgcHV0cyBgJG9iamVjdDonIGF0IHRoZQogICAjIHN0YXJ0IG9mIGVhY2ggbGluZTsgJG9iamVjdCBkb2Vzbid0IGhhdmUgZGlyZWN0b3J5IGluZm9ybWF0aW9uLgogICAjIFZlcnNpb24gNiB1c2VzIHRoZSBkaXJlY3RvcnkgaW4gYm90aCBjYXNlcy4KLSAgc3RyaXBwZWQ9YGVjaG8gIiRvYmplY3QiIHwgc2VkICdzL1woLipcKVwuLiokL1wxLydgCi0gIHRtcGRlcGZpbGU9IiRzdHJpcHBlZC51IgorICBkaXI9YGVjaG8gIiRvYmplY3QiIHwgc2VkIC1lICdzfC9bXi9dKiR8L3wnYAorICB0ZXN0ICJ4JGRpciIgPSAieCRvYmplY3QiICYmIGRpcj0KKyAgYmFzZT1gZWNobyAiJG9iamVjdCIgfCBzZWQgLWUgJ3N8Xi4qL3x8JyAtZSAncy9cLm8kLy8nIC1lICdzL1wubG8kLy8nYAogICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KKyAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2UudQorICAgIHRtcGRlcGZpbGUyPSRiYXNlLnUKKyAgICB0bXBkZXBmaWxlMz0kZGlyLmxpYnMvJGJhc2UudQogICAgICIkQCIgLVdjLC1NCiAgIGVsc2UKKyAgICB0bXBkZXBmaWxlMT0kZGlyJGJhc2UudQorICAgIHRtcGRlcGZpbGUyPSRkaXIkYmFzZS51CisgICAgdG1wZGVwZmlsZTM9JGRpciRiYXNlLnUKICAgICAiJEAiIC1NCiAgIGZpCiAgIHN0YXQ9JD8KIAotICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4gOgotICBlbHNlCi0gICAgc3RyaXBwZWQ9YGVjaG8gIiRzdHJpcHBlZCIgfCBzZWQgJ3MsXi4qLywsJ2AKLSAgICB0bXBkZXBmaWxlPSIkc3RyaXBwZWQudSIKLSAgZmkKLQogICBpZiB0ZXN0ICRzdGF0IC1lcSAwOyB0aGVuIDoKICAgZWxzZQotICAgIHJtIC1mICIkdG1wZGVwZmlsZSIKKyAgICBybSAtZiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIiAiJHRtcGRlcGZpbGUzIgogICAgIGV4aXQgJHN0YXQKICAgZmkKIAorICBmb3IgdG1wZGVwZmlsZSBpbiAiJHRtcGRlcGZpbGUxIiAiJHRtcGRlcGZpbGUyIiAiJHRtcGRlcGZpbGUzIgorICBkbworICAgIHRlc3QgLWYgIiR0bXBkZXBmaWxlIiAmJiBicmVhaworICBkb25lCiAgIGlmIHRlc3QgLWYgIiR0bXBkZXBmaWxlIjsgdGhlbgotICAgIG91dG5hbWU9IiRzdHJpcHBlZC5vIgogICAgICMgRWFjaCBsaW5lIGlzIG9mIHRoZSBmb3JtIGBmb28ubzogZGVwZW5kZW50LmgnLgogICAgICMgRG8gdHdvIHBhc3Nlcywgb25lIHRvIGp1c3QgY2hhbmdlIHRoZXNlIHRvCiAgICAgIyBgJG9iamVjdDogZGVwZW5kZW50LmgnIGFuZCBvbmUgdG8gc2ltcGx5IGBkZXBlbmRlbnQuaDonLgotICAgIHNlZCAtZSAicyxeJG91dG5hbWU6LCRvYmplY3QgOiwiIDwgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKLSAgICBzZWQgLWUgInMsXiRvdXRuYW1lOiBcKC4qXCkkLFwxOiwiIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCisgICAgc2VkIC1lICJzLF4uKlwuW2Etel0qOiwkb2JqZWN0OiwiIDwgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKKyAgICAjIFRoYXQncyBhIHRhYiBhbmQgYSBzcGFjZSBpbiB0aGUgW10uCisgICAgc2VkIC1lICdzLF4uKlwuW2Etel0qOlsJIF0qLCwnIC1lICdzLCQsOiwnIDwgIiR0bXBkZXBmaWxlIiA+PiAiJGRlcGZpbGUiCiAgIGVsc2UKICAgICAjIFRoZSBzb3VyY2VmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW55IGRlcGVuZGVuY2llcywgc28ganVzdAogICAgICMgc3RvcmUgYSBkdW1teSBjb21tZW50IGxpbmUsIHRvIGF2b2lkIGVycm9ycyB3aXRoIHRoZSBNYWtlZmlsZQpAQCAtMzIzLDcgKzMzNSwxMiBAQAogICBpZiB0ZXN0IC1mICIkdG1wZGVwZmlsZSI7IHRoZW4KICAgICBzZWQgLWUgInMsXi4qXC5bYS16XSo6LCRvYmplY3Q6LCIgIiR0bXBkZXBmaWxlIiA+ICIkZGVwZmlsZSIKICAgICAjIEFkZCBgZGVwZW5kZW50Lmg6JyBsaW5lcy4KLSAgICBzZWQgLW5lICcyLCR7OyBzL14gKi8vOyBzLyBcXCokLy87IHMvJC86LzsgcDt9JyAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKKyAgICBzZWQgLW5lICcyLCR7CisJICAgICAgIHMvXiAqLy8KKwkgICAgICAgcy8gXFwqJC8vCisJICAgICAgIHMvJC86LworCSAgICAgICBwCisJICAgICB9JyAiJHRtcGRlcGZpbGUiID4+ICIkZGVwZmlsZSIKICAgZWxzZQogICAgIGVjaG8gIiNkdW1teSIgPiAiJGRlcGZpbGUiCiAgIGZpCkBAIC0zOTksNyArNDE2LDcgQEAKIAogICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgogICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KLSAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgd2hpbGUgdGVzdCAiWCQxIiAhPSAnWC0tbW9kZT1jb21waWxlJzsgZG8KICAgICAgIHNoaWZ0CiAgICAgZG9uZQogICAgIHNoaWZ0CkBAIC00NTAsMzIgKzQ2NywzOSBAQAogICAiJEAiIHx8IGV4aXQgJD8KICAgIyBSZW1vdmUgYW55IExpYnRvb2wgY2FsbAogICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KLSAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgd2hpbGUgdGVzdCAiWCQxIiAhPSAnWC0tbW9kZT1jb21waWxlJzsgZG8KICAgICAgIHNoaWZ0CiAgICAgZG9uZQogICAgIHNoaWZ0CiAgIGZpCiAgICMgWCBtYWtlZGVwZW5kCiAgIHNoaWZ0Ci0gIGNsZWFyZWQ9bm8KLSAgZm9yIGFyZyBpbiAiJEAiOyBkbworICBjbGVhcmVkPW5vIGVhdD1ubworICBmb3IgYXJnCisgIGRvCiAgICAgY2FzZSAkY2xlYXJlZCBpbgogICAgIG5vKQogICAgICAgc2V0ICIiOyBzaGlmdAogICAgICAgY2xlYXJlZD15ZXMgOzsKICAgICBlc2FjCisgICAgaWYgdGVzdCAkZWF0ID0geWVzOyB0aGVuCisgICAgICBlYXQ9bm8KKyAgICAgIGNvbnRpbnVlCisgICAgZmkKICAgICBjYXNlICIkYXJnIiBpbgogICAgIC1EKnwtSSopCiAgICAgICBzZXQgZm5vcmQgIiRAIiAiJGFyZyI7IHNoaWZ0IDs7CiAgICAgIyBTdHJpcCBhbnkgb3B0aW9uIHRoYXQgbWFrZWRlcGVuZCBtYXkgbm90IHVuZGVyc3RhbmQuICBSZW1vdmUKICAgICAjIHRoZSBvYmplY3QgdG9vLCBvdGhlcndpc2UgbWFrZWRlcGVuZCB3aWxsIHBhcnNlIGl0IGFzIGEgc291cmNlIGZpbGUuCisgICAgLWFyY2gpCisgICAgICBlYXQ9eWVzIDs7CiAgICAgLSp8JG9iamVjdCkKICAgICAgIDs7CiAgICAgKikKICAgICAgIHNldCBmbm9yZCAiJEAiICIkYXJnIjsgc2hpZnQgOzsKICAgICBlc2FjCiAgIGRvbmUKLSAgb2JqX3N1ZmZpeD0iYGVjaG8gJG9iamVjdCB8IHNlZCAncy9eLipcLi8uLydgIgorICBvYmpfc3VmZml4PWBlY2hvICIkb2JqZWN0IiB8IHNlZCAncy9eLipcLi8uLydgCiAgIHRvdWNoICIkdG1wZGVwZmlsZSIKICAgJHtNQUtFREVQRU5ELW1ha2VkZXBlbmR9IC1vIiRvYmpfc3VmZml4IiAtZiIkdG1wZGVwZmlsZSIgIiRAIgogICBybSAtZiAiJGRlcGZpbGUiCkBAIC00OTUsNyArNTE5LDcgQEAKIAogICAjIFJlbW92ZSB0aGUgY2FsbCB0byBMaWJ0b29sLgogICBpZiB0ZXN0ICIkbGlidG9vbCIgPSB5ZXM7IHRoZW4KLSAgICB3aGlsZSB0ZXN0ICQxICE9ICctLW1vZGU9Y29tcGlsZSc7IGRvCisgICAgd2hpbGUgdGVzdCAiWCQxIiAhPSAnWC0tbW9kZT1jb21waWxlJzsgZG8KICAgICAgIHNoaWZ0CiAgICAgZG9uZQogICAgIHNoaWZ0CkBAIC01MzMsMTMgKzU1NywyNyBAQAogCiBtc3Zpc3VhbGNwcCkKICAgIyBJbXBvcnRhbnQgbm90ZTogaW4gb3JkZXIgdG8gc3VwcG9ydCB0aGlzIG1vZGUsIGEgY29tcGlsZXIgKm11c3QqCi0gICMgYWx3YXlzIHdyaXRlIHRoZSBwcmVwcm9jZXNzZWQgZmlsZSB0byBzdGRvdXQsIHJlZ2FyZGxlc3Mgb2YgLW8sCi0gICMgYmVjYXVzZSB3ZSBtdXN0IHVzZSAtbyB3aGVuIHJ1bm5pbmcgbGlidG9vbC4KKyAgIyBhbHdheXMgd3JpdGUgdGhlIHByZXByb2Nlc3NlZCBmaWxlIHRvIHN0ZG91dC4KICAgIiRAIiB8fCBleGl0ICQ/CisKKyAgIyBSZW1vdmUgdGhlIGNhbGwgdG8gTGlidG9vbC4KKyAgaWYgdGVzdCAiJGxpYnRvb2wiID0geWVzOyB0aGVuCisgICAgd2hpbGUgdGVzdCAiWCQxIiAhPSAnWC0tbW9kZT1jb21waWxlJzsgZG8KKyAgICAgIHNoaWZ0CisgICAgZG9uZQorICAgIHNoaWZ0CisgIGZpCisKICAgSUZTPSIgIgogICBmb3IgYXJnCiAgIGRvCiAgICAgY2FzZSAiJGFyZyIgaW4KKyAgICAtbykKKyAgICAgIHNoaWZ0CisgICAgICA7OworICAgICRvYmplY3QpCisgICAgICBzaGlmdAorICAgICAgOzsKICAgICAiLUdtInwiL0dtInwiLUdpInwiL0dpInwiLVpJInwiL1pJIikKIAlzZXQgZm5vcmQgIiRAIgogCXNoaWZ0CkBAIC01NTIsMTYgKzU5MCwyMyBAQAogCTs7CiAgICAgZXNhYwogICBkb25lCi0gICIkQCIgLUUgfAotICBzZWQgLW4gJy9eI2xpbmUgWzAtOV1bMC05XSogIlwoW14iXSpcKSIvIHM6OmVjaG8gImBjeWdwYXRoIC11IFxcIlwxXFwiYCI6cCcgfCBzb3J0IHwgdW5pcSA+ICIkdG1wZGVwZmlsZSIKKyAgIiRAIiAtRSAyPi9kZXYvbnVsbCB8CisgIHNlZCAtbiAnL14jbGluZSBbMC05XVswLTldKiAiXChbXiJdKlwpIi8gczo6XDE6cCcgfCAkY3lncGF0aF91IHwgc29ydCAtdSA+ICIkdG1wZGVwZmlsZSIKICAgcm0gLWYgIiRkZXBmaWxlIgogICBlY2hvICIkb2JqZWN0IDogXFwiID4gIiRkZXBmaWxlIgotICAuICIkdG1wZGVwZmlsZSIgfCBzZWQgJ3MlICVcXCAlZycgfCBzZWQgLW4gJy9eXCguKlwpJC8gczo6CVwxIFxcOnAnID4+ICIkZGVwZmlsZSIKKyAgc2VkIDwgIiR0bXBkZXBmaWxlIiAtbiAtZSAncyUgJVxcICVnJyAtZSAnL15cKC4qXCkkLyBzOjoJXDEgXFw6cCcgPj4gIiRkZXBmaWxlIgogICBlY2hvICIJIiA+PiAiJGRlcGZpbGUiCi0gIC4gIiR0bXBkZXBmaWxlIiB8IHNlZCAncyUgJVxcICVnJyB8IHNlZCAtbiAnL15cKC4qXCkkLyBzOjpcMVw6OnAnID4+ICIkZGVwZmlsZSIKKyAgc2VkIDwgIiR0bXBkZXBmaWxlIiAtbiAtZSAncyUgJVxcICVnJyAtZSAnL15cKC4qXCkkLyBzOjpcMVw6OnAnID4+ICIkZGVwZmlsZSIKICAgcm0gLWYgIiR0bXBkZXBmaWxlIgogICA7OwogCittc3ZjbXN5cykKKyAgIyBUaGlzIGNhc2UgZXhpc3RzIG9ubHkgdG8gbGV0IGRlcGVuZC5tNCBkbyBpdHMgd29yay4gIEl0IHdvcmtzIGJ5CisgICMgbG9va2luZyBhdCB0aGUgdGV4dCBvZiB0aGlzIHNjcmlwdC4gIFRoaXMgY2FzZSB3aWxsIG5ldmVyIGJlIHJ1biwKKyAgIyBzaW5jZSBpdCBpcyBjaGVja2VkIGZvciBhYm92ZS4KKyAgZXhpdCAxCisgIDs7CisKIG5vbmUpCiAgIGV4ZWMgIiRAIgogICA7OwpAQCAtNTgwLDUgKzYyNSw2IEBACiAjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKICMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgogIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKLSMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgogIyBFbmQ6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9saWJmZmkuaW5mbyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS5pbmZvCmluZGV4IDg5NmE1ZWMuLjQwMmY3NjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS5pbmZvCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS5pbmZvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL2xpYmZmaS50ZXhpIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLnRleGkKaW5kZXggOWZhNWIxNy4uZjBlNjUxNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLnRleGkKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvbGliZmZpLnRleGkKQEAgLTE5LDcgKzE5LDcgQEAKIFRoaXMgbWFudWFsIGlzIGZvciBMaWJmZmksIGEgcG9ydGFibGUgZm9yZWlnbi1mdW5jdGlvbiBpbnRlcmZhY2UKIGxpYnJhcnkuCiAKLUNvcHlyaWdodCBAY29weXJpZ2h0e30gMjAwOCwgMjAxMCBSZWQgSGF0LCBJbmMuCitDb3B5cmlnaHQgQGNvcHlyaWdodHt9IDIwMDgsIDIwMTAsIDIwMTEgUmVkIEhhdCwgSW5jLgogCiBAcXVvdGF0aW9uCiBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoaXMgZG9jdW1lbnQKQEAgLTEzMyw4ICsxMzMsNiBAQAogeW91IHdhbnQuICBAcmVme011bHRpcGxlIEFCSXN9IGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiBAdmFye25hcmdzfSBpcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0aGF0IHRoaXMgZnVuY3Rpb24gYWNjZXB0cy4KLUBzYW1we2xpYmZmaX0gZG9lcyBub3QgeWV0IGhhbmRsZSB2YXJhcmdzIGZ1bmN0aW9uczsgc2VlIEByZWZ7TWlzc2luZwotRmVhdHVyZXN9IGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiBAdmFye3J0eXBlfSBpcyBhIHBvaW50ZXIgdG8gYW4gQGNvZGV7ZmZpX3R5cGV9IHN0cnVjdHVyZSB0aGF0CiBkZXNjcmliZXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBmdW5jdGlvbi4gIEB4cmVme1R5cGVzfS4KQEAgLTE1MCw2ICsxNDgsMzAgQEAKIGlzIGludmFsaWQuCiBAZW5kIGRlZnVuCiAKK0lmIHRoZSBmdW5jdGlvbiBiZWluZyBjYWxsZWQgaXMgdmFyaWFkaWMgKHZhcmFyZ3MpIHRoZW4KK0Bjb2Rle2ZmaV9wcmVwX2NpZl92YXJ9IG11c3QgYmUgdXNlZCBpbnN0ZWFkIG9mIEBjb2Rle2ZmaV9wcmVwX2NpZn0uCisKK0BmaW5kZXggZmZpX3ByZXBfY2lmX3ZhcgorQGRlZnVuIGZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmX3ZhciAoZmZpX2NpZiAqQHZhcntjaWZ9LCBmZmlfYWJpIHZhcnthYml9LCB1bnNpZ25lZCBpbnQgQHZhcntuZml4ZWRhcmdzfSwgdW5zaWduZWQgaW50IHZhcntudG90YWxhcmdzfSwgZmZpX3R5cGUgKkB2YXJ7cnR5cGV9LCBmZmlfdHlwZSAqKkB2YXJ7YXJndHlwZXN9KQorVGhpcyBpbml0aWFsaXplcyBAdmFye2NpZn0gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBwYXJhbWV0ZXJzIGZvcgorYSBjYWxsIHRvIGEgdmFyaWFkaWMgZnVuY3Rpb24uICBJbiBnZW5lcmFsIGl0J3Mgb3BlcmF0aW9uIGlzIHRoZQorc2FtZSBhcyBmb3IgQGNvZGV7ZmZpX3ByZXBfY2lmfSBleGNlcHQgdGhhdDoKKworQHZhcntuZml4ZWRhcmdzfSBpcyB0aGUgbnVtYmVyIG9mIGZpeGVkIGFyZ3VtZW50cywgcHJpb3IgdG8gYW55Cit2YXJpYWRpYyBhcmd1bWVudHMuICBJdCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgorCitAdmFye250b3RhbGFyZ3N9IHRoZSB0b3RhbCBudW1iZXIgb2YgYXJndW1lbnRzLCBpbmNsdWRpbmcgdmFyaWFkaWMKK2FuZCBmaXhlZCBhcmd1bWVudHMuCisKK05vdGUgdGhhdCwgZGlmZmVyZW50IGNpZidzIG11c3QgYmUgcHJlcHBlZCBmb3IgY2FsbHMgdG8gdGhlIHNhbWUKK2Z1bmN0aW9uIHdoZW4gZGlmZmVyZW50IG51bWJlcnMgb2YgYXJndW1lbnRzIGFyZSBwYXNzZWQuCisKK0Fsc28gbm90ZSB0aGF0IGEgY2FsbCB0byBAY29kZXtmZmlfcHJlcF9jaWZfdmFyfSB3aXRoCitAdmFye25maXhlZGFyZ3N9PUB2YXJ7bm90b3RhbGFyZ3N9IGlzIE5PVCBlcXVpdmFsZW50IHRvIGEgY2FsbCB0bworQGNvZGV7ZmZpX3ByZXBfY2lmfS4KKworQGVuZCBkZWZ1bgorCiAKIFRvIGNhbGwgYSBmdW5jdGlvbiB1c2luZyBhbiBpbml0aWFsaXplZCBAY29kZXtmZmlfY2lmfSwgdXNlIHRoZQogQGNvZGV7ZmZpX2NhbGx9IGZ1bmN0aW9uOgpAQCAtMTcxLDcgKzE5Myw5IEBACiBAdmFye2F2YWx1ZXN9IGlzIGEgdmVjdG9yIG9mIEBjb2Rle3ZvaWQgKn0gcG9pbnRlcnMgdGhhdCBwb2ludCB0byB0aGUKIG1lbW9yeSBsb2NhdGlvbnMgaG9sZGluZyB0aGUgYXJndW1lbnQgdmFsdWVzIGZvciBhIGNhbGwuICBJZiBAdmFye2NpZn0KIGRlY2xhcmVzIHRoYXQgdGhlIGZ1bmN0aW9uIGhhcyBubyBhcmd1bWVudHMgKGkuZS4sIEB2YXJ7bmFyZ3N9IHdhcyAwKSwKLXRoZW4gQHZhcnthdmFsdWVzfSBpcyBpZ25vcmVkLgordGhlbiBAdmFye2F2YWx1ZXN9IGlzIGlnbm9yZWQuICBOb3RlIHRoYXQgYXJndW1lbnQgdmFsdWVzIG1heSBiZQorbW9kaWZpZWQgYnkgdGhlIGNhbGxlZSAoZm9yIGluc3RhbmNlLCBzdHJ1Y3RzIHBhc3NlZCBieSB2YWx1ZSk7IHRoZQorYnVyZGVuIG9mIGNvcHlpbmcgcGFzcy1ieS12YWx1ZSBhcmd1bWVudHMgaXMgcGxhY2VkIG9uIHRoZSBjYWxsZXIuCiBAZW5kIGRlZnVuCiAKIApAQCAtNDM4LDcgKzQ2Miw3IEBACiBoZWFwLiAgTWVtb3J5IG1hbmFnZW1lbnQgZm9yIGNsb3N1cmVzIGlzIGhhbmRsZWQgYnkgYSBwYWlyIG9mCiBmdW5jdGlvbnM6CiAKLUBmaW5kZXggZmZpX2Nsb3N1cmVfYWxsb2NhCitAZmluZGV4IGZmaV9jbG9zdXJlX2FsbG9jCiBAZGVmdW4gdm9pZCAqZmZpX2Nsb3N1cmVfYWxsb2MgKHNpemVfdCBAdmFye3NpemV9LCB2b2lkICoqQHZhcntjb2RlfSkKIEFsbG9jYXRlIGEgY2h1bmsgb2YgbWVtb3J5IGhvbGRpbmcgQHZhcntzaXplfSBieXRlcy4gIFRoaXMgcmV0dXJucyBhCiBwb2ludGVyIHRvIHRoZSB3cml0YWJsZSBhZGRyZXNzLCBhbmQgc2V0cyAqQHZhcntjb2RlfSB0byB0aGUKQEAgLTU3MCw5ICs1OTQsNyBAQAogCiBAaXRlbWl6ZSBAYnVsbGV0CiBAaXRlbQotVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgY2FsbGluZyB2YXJhcmdzIGZ1bmN0aW9ucy4gIFRoaXMgbWF5IHdvcmsgb24KLXNvbWUgcGxhdGZvcm1zLCBkZXBlbmRpbmcgb24gaG93IHRoZSBBQkkgaXMgZGVmaW5lZCwgYnV0IGl0IGlzIG5vdAotcmVsaWFibGUuCitWYXJpYWRpYyBjbG9zdXJlcy4KIAogQGl0ZW0KIFRoZXJlIGlzIG5vIHN1cHBvcnQgZm9yIGJpdCBmaWVsZHMgaW4gc3RydWN0dXJlcy4KQEAgLTU4OSw2ICs2MTEsOCBAQAogQGMgYW55dGhpbmcgZWxzZT8KIEBlbmQgaXRlbWl6ZQogCitOb3RlIHRoYXQgdmFyaWFkaWMgc3VwcG9ydCBpcyB2ZXJ5IG5ldyBhbmQgdGVzdGVkIG9uIGEgcmVsYXRpdmVseQorc21hbGwgbnVtYmVyIG9mIHBsYXRmb3Jtcy4KIAogQG5vZGUgSW5kZXgKIEB1bm51bWJlcmVkIEluZGV4CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9zdGFtcC12dGkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy9zdGFtcC12dGkKaW5kZXggODFkMGI3OS4uZTI1OWExMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2Mvc3RhbXAtdnRpCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3N0YW1wLXZ0aQpAQCAtMSw0ICsxLDQgQEAKLUBzZXQgVVBEQVRFRCAxNCBGZWJydWFyeSAyMDA4Ci1Ac2V0IFVQREFURUQtTU9OVEggRmVicnVhcnkgMjAwOAotQHNldCBFRElUSU9OIDMuMC44Ci1Ac2V0IFZFUlNJT04gMy4wLjgKK0BzZXQgVVBEQVRFRCAxMSBBcHJpbCAyMDEyCitAc2V0IFVQREFURUQtTU9OVEggQXByaWwgMjAxMgorQHNldCBFRElUSU9OIDMuMC4xMQorQHNldCBWRVJTSU9OIDMuMC4xMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvdmVyc2lvbi50ZXhpIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9kb2MvdmVyc2lvbi50ZXhpCmluZGV4IDgxZDBiNzkuLmUyNTlhMTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZG9jL3ZlcnNpb24udGV4aQorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2RvYy92ZXJzaW9uLnRleGkKQEAgLTEsNCArMSw0IEBACi1Ac2V0IFVQREFURUQgMTQgRmVicnVhcnkgMjAwOAotQHNldCBVUERBVEVELU1PTlRIIEZlYnJ1YXJ5IDIwMDgKLUBzZXQgRURJVElPTiAzLjAuOAotQHNldCBWRVJTSU9OIDMuMC44CitAc2V0IFVQREFURUQgMTEgQXByaWwgMjAxMgorQHNldCBVUERBVEVELU1PTlRIIEFwcmlsIDIwMTIKK0BzZXQgRURJVElPTiAzLjAuMTEKK0BzZXQgVkVSU0lPTiAzLjAuMTEKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZmZpY29uZmlnLmguaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2ZmaWNvbmZpZy5oLmluCmluZGV4IGUwM2JiZjkuLjE2OGViYzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZmZpY29uZmlnLmguaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9mZmljb25maWcuaC5pbgpAQCAtMTcsNiArMTcsOSBAQAogLyogRGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgZXh0cmEgZGVidWdnaW5nLiAqLwogI3VuZGVmIEZGSV9ERUJVRwogCisvKiBDYW5ub3QgdXNlIFBST1RfRVhFQyBvbiB0aGlzIHRhcmdldCwgc28sIHdlIHJldmVydCB0byBhbHRlcm5hdGl2ZSBtZWFucyAqLworI3VuZGVmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKKwogLyogQ2Fubm90IHVzZSBtYWxsb2Mgb24gdGhpcyB0YXJnZXQsIHNvLCB3ZSByZXZlcnQgdG8gYWx0ZXJuYXRpdmUgbWVhbnMgKi8KICN1bmRlZiBGRklfTU1BUF9FWEVDX1dSSVQKIApAQCAtMzMsNiArMzYsOSBAQAogICAgKi8KICN1bmRlZiBIQVZFX0FMTE9DQV9ICiAKKy8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuYXNjaWkuICovCisjdW5kZWYgSEFWRV9BU19BU0NJSV9QU0VVRE9fT1AKKwogLyogRGVmaW5lIGlmIHlvdXIgYXNzZW1ibGVyIHN1cHBvcnRzIC5jZmlfKiBkaXJlY3RpdmVzLiAqLwogI3VuZGVmIEhBVkVfQVNfQ0ZJX1BTRVVET19PUAogCkBAIC00Myw2ICs0OSwxMiBAQAogICAgKi8KICN1bmRlZiBIQVZFX0FTX1NQQVJDX1VBX1BDUkVMCiAKKy8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuc3RyaW5nLiAqLworI3VuZGVmIEhBVkVfQVNfU1RSSU5HX1BTRVVET19PUAorCisvKiBEZWZpbmUgaWYgeW91ciBhc3NlbWJsZXIgc3VwcG9ydHMgdW53aW5kIHNlY3Rpb24gdHlwZS4gKi8KKyN1bmRlZiBIQVZFX0FTX1g4Nl82NF9VTldJTkRfU0VDVElPTl9UWVBFCisKIC8qIERlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyBQQyByZWxhdGl2ZSByZWxvY3MuICovCiAjdW5kZWYgSEFWRV9BU19YODZfUENSRUwKIApAQCAtMTQ4LDYgKzE2MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KICN1bmRlZiBTVERDX0hFQURFUlMKIAorLyogRGVmaW5lIGlmIHN5bWJvbHMgYXJlIHVuZGVyc2NvcmVkLiAqLworI3VuZGVmIFNZTUJPTF9VTkRFUlNDT1JFCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBhcmUgdXNpbmcgUHVyaWZ5IGFuZCB3YW50IHRvIHN1cHByZXNzIHNwdXJpb3VzIG1lc3NhZ2VzLgogICAgKi8KICN1bmRlZiBVU0lOR19QVVJJRlkKQEAgLTE2Nyw2ICsxODIsOSBAQAogIyBlbmRpZgogI2VuZGlmCiAKKy8qIERlZmluZSB0byBgdW5zaWduZWQgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KKyN1bmRlZiBzaXplX3QKKwogCiAjaWZkZWYgSEFWRV9ISURERU5fVklTSUJJTElUWV9BVFRSSUJVVEUKICNpZmRlZiBMSUJGRklfQVNNCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLWlvcy1zb3VyY2UtYW5kLWhlYWRlcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzJiY2E3MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvZ2VuZXJhdGUtaW9zLXNvdXJjZS1hbmQtaGVhZGVycy5weQpAQCAtMCwwICsxLDE2MCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgcmUKK2ltcG9ydCBvcworaW1wb3J0IGVycm5vCitpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBzeXMKKworY2xhc3MgUGxhdGZvcm0ob2JqZWN0KToKKyAgICBwYXNzCisKK3Nka19yZSA9IHJlLmNvbXBpbGUocicuKi1zZGsgKFthLXpBLVowLTkuXSopJykKKworZGVmIHNka2luZm8oc2RrbmFtZSk6CisgICAgcmV0ID0ge30KKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLlBvcGVuKFsneGNvZGVidWlsZCcsICctc2RrJywgc2RrbmFtZSwgJy12ZXJzaW9uJ10sIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLnN0ZG91dDoKKyAgICAgICAga3YgPSBsaW5lLnN0cmlwKCkuc3BsaXQoJzogJywgMSkKKyAgICAgICAgaWYgbGVuKGt2KSA9PSAyOgorICAgICAgICAgICAgayx2ID0ga3YKKyAgICAgICAgICAgIHJldFtrXSA9IHYKKyAgICByZXR1cm4gcmV0CisKK3NpbV9zZGtfaW5mbyA9IHNka2luZm8oJ2lwaG9uZXNpbXVsYXRvcicpCitkZXZpY2Vfc2RrX2luZm8gPSBzZGtpbmZvKCdpcGhvbmVvcycpCisKK2RlZiBsYXRlc3Rfc2RrcygpOgorICAgIGxhdGVzdF9zaW0gPSBOb25lCisgICAgbGF0ZXN0X2RldmljZSA9IE5vbmUKKyAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLlBvcGVuKFsneGNvZGVidWlsZCcsICctc2hvd3Nka3MnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0OgorICAgICAgICBtYXRjaCA9IHNka19yZS5tYXRjaChsaW5lKQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIGlmICdTaW11bGF0b3InIGluIGxpbmU6CisgICAgICAgICAgICAgICAgbGF0ZXN0X3NpbSA9IG1hdGNoLmdyb3VwKDEpCisgICAgICAgICAgICBlbGlmICdpT1MnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgbGF0ZXN0X2RldmljZSA9IG1hdGNoLmdyb3VwKDEpCisKKyAgICByZXR1cm4gbGF0ZXN0X3NpbSwgbGF0ZXN0X2RldmljZQorCitzaW1fc2RrLCBkZXZpY2Vfc2RrID0gbGF0ZXN0X3Nka3MoKQorCitjbGFzcyBzaW11bGF0b3JfcGxhdGZvcm0oUGxhdGZvcm0pOgorICAgIHNkaz0naXBob25lc2ltdWxhdG9yJworICAgIGFyY2ggPSAnaTM4NicKKyAgICBuYW1lID0gJ3NpbXVsYXRvcicKKyAgICB0cmlwbGUgPSAnaTM4Ni1hcHBsZS1kYXJ3aW4xMCcKKyAgICBzZGtyb290ID0gc2ltX3Nka19pbmZvWydQYXRoJ10KKworICAgIHByZWZpeCA9ICIjaWYgIWRlZmluZWQoX19hcm1fXykgJiYgZGVmaW5lZChfX2kzODZfXylcblxuIgorICAgIHN1ZmZpeCA9ICJcblxuI2VuZGlmIgorCitjbGFzcyBkZXZpY2VfcGxhdGZvcm0oUGxhdGZvcm0pOgorICAgIHNkaz0naXBob25lb3MnCisgICAgbmFtZSA9ICdpb3MnCisgICAgYXJjaCA9ICdhcm12NycKKyAgICB0cmlwbGUgPSAnYXJtLWFwcGxlLWRhcndpbjEwJworICAgIHNka3Jvb3QgPSBkZXZpY2Vfc2RrX2luZm9bJ1BhdGgnXQorCisgICAgcHJlZml4ID0gIiNpZmRlZiBfX2FybV9fXG5cbiIKKyAgICBzdWZmaXggPSAiXG5cbiNlbmRpZiIKKworCitkZWYgbW92ZV9maWxlKHNyY19kaXIsIGRzdF9kaXIsIGZpbGVuYW1lLCBmaWxlX3N1ZmZpeD1Ob25lLCBwcmVmaXg9JycsIHN1ZmZpeD0nJyk6CisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRzdF9kaXIpOgorICAgICAgICBvcy5tYWtlZGlycyhkc3RfZGlyKQorCisgICAgb3V0X2ZpbGVuYW1lID0gZmlsZW5hbWUKKworICAgIGlmIGZpbGVfc3VmZml4OgorICAgICAgICBzcGxpdF9uYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSkKKyAgICAgICAgb3V0X2ZpbGVuYW1lID0gICIlc18lcyVzIiAlIChzcGxpdF9uYW1lWzBdLCBmaWxlX3N1ZmZpeCwgc3BsaXRfbmFtZVsxXSkKKworICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oc3JjX2RpciwgZmlsZW5hbWUpKSBhcyBpbl9maWxlOgorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRzdF9kaXIsIG91dF9maWxlbmFtZSksICd3JykgYXMgb3V0X2ZpbGU6CisgICAgICAgICAgICBpZiBwcmVmaXg6CisgICAgICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUocHJlZml4KQorCisgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShpbl9maWxlLnJlYWQoKSkKKworICAgICAgICAgICAgaWYgc3VmZml4OgorICAgICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHN1ZmZpeCkKKworaGVhZGVyc19zZWVuID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3Qoc2V0KQorCitkZWYgbW92ZV9zb3VyY2VfdHJlZShzcmNfZGlyLCBkZXN0X2RpciwgZGVzdF9pbmNsdWRlX2RpciwgYXJjaD1Ob25lLCBwcmVmaXg9Tm9uZSwgc3VmZml4PU5vbmUpOgorICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNyY19kaXIsIGZvbGxvd2xpbmtzPVRydWUpOgorICAgICAgICByZWxyb290ID0gb3MucGF0aC5yZWxwYXRoKHJvb3Qsc3JjX2RpcikKKworICAgICAgICBkZWYgbW92ZV9kaXIoYXJjaCwgcHJlZml4PScnLCBzdWZmaXg9JycsIGZpbGVzPVtdKToKKyAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgorICAgICAgICAgICAgICAgIGZpbGVfc3VmZml4ID0gTm9uZQorICAgICAgICAgICAgICAgIGlmIGZpbGUuZW5kc3dpdGgoJy5oJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGRlc3RfaW5jbHVkZV9kaXI6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3N1ZmZpeCA9IGFyY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFyY2g6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyc19zZWVuW2ZpbGVdLmFkZChhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgbW92ZV9maWxlKHJvb3QsIGRlc3RfaW5jbHVkZV9kaXIsIGZpbGUsIGFyY2gsIHByZWZpeD1wcmVmaXgsIHN1ZmZpeD1zdWZmaXgpCisKKyAgICAgICAgICAgICAgICBlbGlmIGRlc3RfZGlyOgorICAgICAgICAgICAgICAgICAgICBvdXRyb290ID0gb3MucGF0aC5qb2luKGRlc3RfZGlyLCByZWxyb290KQorICAgICAgICAgICAgICAgICAgICBtb3ZlX2ZpbGUocm9vdCwgb3V0cm9vdCwgZmlsZSwgcHJlZml4PXByZWZpeCwgc3VmZml4PXN1ZmZpeCkKKworICAgICAgICBpZiByZWxyb290ID09ICcuJzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9YXJjaCwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGVzPWZpbGVzLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1zdWZmaXgpCisgICAgICAgIGVsaWYgcmVscm9vdCA9PSAnYXJtJzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9J2FybScsCisgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9IiNpZmRlZiBfX2FybV9fXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9IlxuXG4jZW5kaWYiLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMpCisgICAgICAgIGVsaWYgcmVscm9vdCA9PSAneDg2JzoKKyAgICAgICAgICAgIG1vdmVfZGlyKGFyY2g9J2kzODYnLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSIjaWYgIWRlZmluZWQoX19hcm1fXykgJiYgZGVmaW5lZChfX2kzODZfXylcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iXG5cbiNlbmRpZiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcykKKworZGVmIGJ1aWxkX3RhcmdldChwbGF0Zm9ybSk6CisgICAgZGVmIHhjcnVuX2NtZChjbWQpOgorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyd4Y3J1bicsICctc2RrJywgcGxhdGZvcm0uc2Rrcm9vdCwgJy1maW5kJywgY21kXSkuc3RyaXAoKQorCisgICAgYnVpbGRfZGlyID0gJ2J1aWxkXycgKyBwbGF0Zm9ybS5uYW1lCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkX2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGJ1aWxkX2RpcikKKyAgICAgICAgZW52ID0gZGljdChDQz14Y3J1bl9jbWQoJ2NsYW5nJyksCisgICAgICAgICAgICAgICAgICAgTEQ9eGNydW5fY21kKCdsZCcpLAorICAgICAgICAgICAgICAgICAgIENGTEFHUz0nLWFyY2ggJXMgLWlzeXNyb290ICVzIC1taXBob25lb3MtdmVyc2lvbi1taW49NC4wJyAlIChwbGF0Zm9ybS5hcmNoLCBwbGF0Zm9ybS5zZGtyb290KSkKKyAgICAgICAgd29ya2luZ19kaXI9b3MuZ2V0Y3dkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MuY2hkaXIoYnVpbGRfZGlyKQorICAgICAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsnLi4vY29uZmlndXJlJywgJy1ob3N0JywgcGxhdGZvcm0udHJpcGxlXSwgZW52PWVudikKKyAgICAgICAgICAgIG1vdmVfc291cmNlX3RyZWUoJy4nLCBOb25lLCAnLi4vaW9zL2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoPXBsYXRmb3JtLmFyY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wbGF0Zm9ybS5wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1wbGF0Zm9ybS5zdWZmaXgpCisgICAgICAgICAgICBtb3ZlX3NvdXJjZV90cmVlKCcuL2luY2x1ZGUnLCBOb25lLCAnLi4vaW9zL2luY2x1ZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2g9cGxhdGZvcm0uYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9cGxhdGZvcm0ucHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD1wbGF0Zm9ybS5zdWZmaXgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5jaGRpcih3b3JraW5nX2RpcikKKworICAgICAgICBmb3IgaGVhZGVyX25hbWUsIGFyY2hzIGluIGhlYWRlcnNfc2Vlbi5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGJhc2VuYW1lLCBzdWZmaXggPSBvcy5wYXRoLnNwbGl0ZXh0KGhlYWRlcl9uYW1lKQorCitkZWYgbWFpbigpOgorICAgIG1vdmVfc291cmNlX3RyZWUoJ3NyYycsICdpb3Mvc3JjJywgJ2lvcy9pbmNsdWRlJykKKyAgICBtb3ZlX3NvdXJjZV90cmVlKCdpbmNsdWRlJywgTm9uZSwgJ2lvcy9pbmNsdWRlJykKKyAgICBidWlsZF90YXJnZXQoc2ltdWxhdG9yX3BsYXRmb3JtKQorICAgIGJ1aWxkX3RhcmdldChkZXZpY2VfcGxhdGZvcm0pCisKKyAgICBmb3IgaGVhZGVyX25hbWUsIGFyY2hzIGluIGhlYWRlcnNfc2Vlbi5pdGVyaXRlbXMoKToKKyAgICAgICAgYmFzZW5hbWUsIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX25hbWUpCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oJ2lvcy9pbmNsdWRlJywgaGVhZGVyX25hbWUpLCAndycpIGFzIGhlYWRlcjoKKyAgICAgICAgICAgIGZvciBhcmNoIGluIGFyY2hzOgorICAgICAgICAgICAgICAgIGhlYWRlci53cml0ZSgnI2luY2x1ZGUgPCVzXyVzJXM+XG4nICUgKGJhc2VuYW1lLCBhcmNoLCBzdWZmaXgpKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9nZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MzEzYzEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2dlbmVyYXRlLW9zeC1zb3VyY2UtYW5kLWhlYWRlcnMucHkKQEAgLTAsMCArMSwxNTMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCByZQoraW1wb3J0IG9zCitpbXBvcnQgZXJybm8KK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IHN5cworCitjbGFzcyBQbGF0Zm9ybShvYmplY3QpOgorICAgIHBhc3MKKworc2RrX3JlID0gcmUuY29tcGlsZShyJy4qLXNkayAoW2EtekEtWjAtOS5dKiknKQorCitkZWYgc2RraW5mbyhzZGtuYW1lKToKKyAgICByZXQgPSB7fQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuUG9wZW4oWyd4Y29kZWJ1aWxkJywgJy1zZGsnLCBzZGtuYW1lLCAnLXZlcnNpb24nXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuc3Rkb3V0OgorICAgICAgICBrdiA9IGxpbmUuc3RyaXAoKS5zcGxpdCgnOiAnLCAxKQorICAgICAgICBpZiBsZW4oa3YpID09IDI6CisgICAgICAgICAgICBrLHYgPSBrdgorICAgICAgICAgICAgcmV0W2tdID0gdgorICAgIHJldHVybiByZXQKKworZGVza3RvcF9zZGtfaW5mbyA9IHNka2luZm8oJ21hY29zeCcpCisKK2RlZiBsYXRlc3Rfc2RrcygpOgorICAgIGxhdGVzdF9kZXNrdG9wID0gTm9uZQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuUG9wZW4oWyd4Y29kZWJ1aWxkJywgJy1zaG93c2RrcyddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5zdGRvdXQ6CisgICAgICAgIG1hdGNoID0gc2RrX3JlLm1hdGNoKGxpbmUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgaWYgJ09TIFgnIGluIGxpbmU6CisgICAgICAgICAgICAgICAgbGF0ZXN0X2Rlc2t0b3AgPSBtYXRjaC5ncm91cCgxKQorCisgICAgcmV0dXJuIGxhdGVzdF9kZXNrdG9wCisKK2Rlc2t0b3Bfc2RrID0gbGF0ZXN0X3Nka3MoKQorCitjbGFzcyBkZXNrdG9wX3BsYXRmb3JtXzMyKFBsYXRmb3JtKToKKyAgICBzZGs9J21hY29zeCcKKyAgICBhcmNoID0gJ2kzODYnCisgICAgbmFtZSA9ICdtYWMzMicKKyAgICB0cmlwbGUgPSAnaTM4Ni1hcHBsZS1kYXJ3aW4xMCcKKyAgICBzZGtyb290ID0gZGVza3RvcF9zZGtfaW5mb1snUGF0aCddCisKKyAgICBwcmVmaXggPSAiI2lmIGRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9feDg2XzY0X18pXG5cbiIKKyAgICBzdWZmaXggPSAiXG5cbiNlbmRpZiIKKworY2xhc3MgZGVza3RvcF9wbGF0Zm9ybV82NChQbGF0Zm9ybSk6CisgICAgc2RrPSdtYWNvc3gnCisgICAgYXJjaCA9ICd4ODZfNjQnCisgICAgbmFtZSA9ICdtYWMnCisgICAgdHJpcGxlID0gJ3g4Nl82NC1hcHBsZS1kYXJ3aW4xMCcKKyAgICBzZGtyb290ID0gZGVza3RvcF9zZGtfaW5mb1snUGF0aCddCisKKyAgICBwcmVmaXggPSAiI2lmICFkZWZpbmVkKF9faTM4Nl9fKSAmJiBkZWZpbmVkKF9feDg2XzY0X18pXG5cbiIKKyAgICBzdWZmaXggPSAiXG5cbiNlbmRpZiIKKworZGVmIG1vdmVfZmlsZShzcmNfZGlyLCBkc3RfZGlyLCBmaWxlbmFtZSwgZmlsZV9zdWZmaXg9Tm9uZSwgcHJlZml4PScnLCBzdWZmaXg9JycpOgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkc3RfZGlyKToKKyAgICAgICAgb3MubWFrZWRpcnMoZHN0X2RpcikKKworICAgIG91dF9maWxlbmFtZSA9IGZpbGVuYW1lCisKKyAgICBpZiBmaWxlX3N1ZmZpeDoKKyAgICAgICAgc3BsaXRfbmFtZSA9IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpCisgICAgICAgIG91dF9maWxlbmFtZSA9ICAiJXNfJXMlcyIgJSAoc3BsaXRfbmFtZVswXSwgZmlsZV9zdWZmaXgsIHNwbGl0X25hbWVbMV0pCisKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNyY19kaXIsIGZpbGVuYW1lKSkgYXMgaW5fZmlsZToKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkc3RfZGlyLCBvdXRfZmlsZW5hbWUpLCAndycpIGFzIG91dF9maWxlOgorICAgICAgICAgICAgaWYgcHJlZml4OgorICAgICAgICAgICAgICAgIG91dF9maWxlLndyaXRlKHByZWZpeCkKKworICAgICAgICAgICAgb3V0X2ZpbGUud3JpdGUoaW5fZmlsZS5yZWFkKCkpCisKKyAgICAgICAgICAgIGlmIHN1ZmZpeDoKKyAgICAgICAgICAgICAgICBvdXRfZmlsZS53cml0ZShzdWZmaXgpCisKK2hlYWRlcnNfc2VlbiA9IGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0KHNldCkKKworZGVmIG1vdmVfc291cmNlX3RyZWUoc3JjX2RpciwgZGVzdF9kaXIsIGRlc3RfaW5jbHVkZV9kaXIsIGFyY2g9Tm9uZSwgcHJlZml4PU5vbmUsIHN1ZmZpeD1Ob25lKToKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzcmNfZGlyLCBmb2xsb3dsaW5rcz1UcnVlKToKKyAgICAgICAgcmVscm9vdCA9IG9zLnBhdGgucmVscGF0aChyb290LHNyY19kaXIpCisKKyAgICAgICAgZGVmIG1vdmVfZGlyKGFyY2gsIHByZWZpeD0nJywgc3VmZml4PScnLCBmaWxlcz1bXSk6CisgICAgICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBmaWxlX3N1ZmZpeCA9IE5vbmUKKyAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCcuaCcpOgorICAgICAgICAgICAgICAgICAgICBpZiBkZXN0X2luY2x1ZGVfZGlyOgorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zdWZmaXggPSBhcmNoCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcmNoOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnNfc2VlbltmaWxlXS5hZGQoYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVfZmlsZShyb290LCBkZXN0X2luY2x1ZGVfZGlyLCBmaWxlLCBhcmNoLCBwcmVmaXg9cHJlZml4LCBzdWZmaXg9c3VmZml4KQorCisgICAgICAgICAgICAgICAgZWxpZiBkZXN0X2RpcjoKKyAgICAgICAgICAgICAgICAgICAgb3V0cm9vdCA9IG9zLnBhdGguam9pbihkZXN0X2RpciwgcmVscm9vdCkKKyAgICAgICAgICAgICAgICAgICAgbW92ZV9maWxlKHJvb3QsIG91dHJvb3QsIGZpbGUsIHByZWZpeD1wcmVmaXgsIHN1ZmZpeD1zdWZmaXgpCisKKyAgICAgICAgaWYgcmVscm9vdCA9PSAnLic6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPWFyY2gsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD1wcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9c3VmZml4KQorICAgICAgICBlbGlmIHJlbHJvb3QgPT0gJ3g4Nic6CisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPSdpMzg2JywKKyAgICAgICAgICAgICAgICAgICAgIHByZWZpeD0iI2lmIGRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9feDg2XzY0X18pXG5cbiIsCisgICAgICAgICAgICAgICAgICAgICBzdWZmaXg9IlxuXG4jZW5kaWYiLAorICAgICAgICAgICAgICAgICAgICAgZmlsZXM9ZmlsZXMpCisgICAgICAgICAgICBtb3ZlX2RpcihhcmNoPSd4ODZfNjQnLAorICAgICAgICAgICAgICAgICAgICAgcHJlZml4PSIjaWYgIWRlZmluZWQoX19pMzg2X18pICYmIGRlZmluZWQoX194ODZfNjRfXylcblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeD0iXG5cbiNlbmRpZiIsCisgICAgICAgICAgICAgICAgICAgICBmaWxlcz1maWxlcykKKworZGVmIGJ1aWxkX3RhcmdldChwbGF0Zm9ybSk6CisgICAgZGVmIHhjcnVuX2NtZChjbWQpOgorICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyd4Y3J1bicsICctc2RrJywgcGxhdGZvcm0uc2Rrcm9vdCwgJy1maW5kJywgY21kXSkuc3RyaXAoKQorCisgICAgYnVpbGRfZGlyID0gJ2J1aWxkXycgKyBwbGF0Zm9ybS5uYW1lCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGJ1aWxkX2Rpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGJ1aWxkX2RpcikKKyAgICAgICAgZW52ID0gZGljdChDQz14Y3J1bl9jbWQoJ2NsYW5nJyksCisgICAgICAgICAgICAgICAgICAgTEQ9eGNydW5fY21kKCdsZCcpLAorICAgICAgICAgICAgICAgICAgIENGTEFHUz0nLWFyY2ggJXMgLWlzeXNyb290ICVzIC1tbWFjb3N4LXZlcnNpb24tbWluPTEwLjYnICUgKHBsYXRmb3JtLmFyY2gsIHBsYXRmb3JtLnNka3Jvb3QpKQorICAgICAgICB3b3JraW5nX2Rpcj1vcy5nZXRjd2QoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5jaGRpcihidWlsZF9kaXIpCisgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWycuLi9jb25maWd1cmUnLCAnLWhvc3QnLCBwbGF0Zm9ybS50cmlwbGVdLCBlbnY9ZW52KQorICAgICAgICAgICAgbW92ZV9zb3VyY2VfdHJlZSgnLicsIE5vbmUsICcuLi9vc3gvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2g9cGxhdGZvcm0uYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXBsYXRmb3JtLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXBsYXRmb3JtLnN1ZmZpeCkKKyAgICAgICAgICAgIG1vdmVfc291cmNlX3RyZWUoJy4vaW5jbHVkZScsIE5vbmUsICcuLi9vc3gvaW5jbHVkZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyY2g9cGxhdGZvcm0uYXJjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4PXBsYXRmb3JtLnByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4PXBsYXRmb3JtLnN1ZmZpeCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmNoZGlyKHdvcmtpbmdfZGlyKQorCisgICAgICAgIGZvciBoZWFkZXJfbmFtZSwgYXJjaHMgaW4gaGVhZGVyc19zZWVuLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgYmFzZW5hbWUsIHN1ZmZpeCA9IG9zLnBhdGguc3BsaXRleHQoaGVhZGVyX25hbWUpCisKK2RlZiBtYWluKCk6CisgICAgbW92ZV9zb3VyY2VfdHJlZSgnc3JjJywgJ29zeC9zcmMnLCAnb3N4L2luY2x1ZGUnKQorICAgIG1vdmVfc291cmNlX3RyZWUoJ2luY2x1ZGUnLCBOb25lLCAnb3N4L2luY2x1ZGUnKQorICAgIGJ1aWxkX3RhcmdldChkZXNrdG9wX3BsYXRmb3JtXzMyKQorICAgIGJ1aWxkX3RhcmdldChkZXNrdG9wX3BsYXRmb3JtXzY0KQorCisgICAgZm9yIGhlYWRlcl9uYW1lLCBhcmNocyBpbiBoZWFkZXJzX3NlZW4uaXRlcml0ZW1zKCk6CisgICAgICAgIGJhc2VuYW1lLCBzdWZmaXggPSBvcy5wYXRoLnNwbGl0ZXh0KGhlYWRlcl9uYW1lKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKCdvc3gvaW5jbHVkZScsIGhlYWRlcl9uYW1lKSwgJ3cnKSBhcyBoZWFkZXI6CisgICAgICAgICAgICBmb3IgYXJjaCBpbiBhcmNoczoKKyAgICAgICAgICAgICAgICBoZWFkZXIud3JpdGUoJyNpbmNsdWRlIDwlc18lcyVzPlxuJyAlIChiYXNlbmFtZSwgYXJjaCwgc3VmZml4KSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9NYWtlZmlsZS5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9NYWtlZmlsZS5pbgppbmRleCAxMzZmMzZjLi43OWQ0OTNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvTWFrZWZpbGUuaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL01ha2VmaWxlLmluCkBAIC0xLDkgKzEsOSBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMSBmcm9tIE1ha2VmaWxlLmFtLgorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKICMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAotIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0jIEluYy4KKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTM3LDcgKzM3LDcgQEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKIHN1YmRpciA9IGluY2x1ZGUKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoc3JjZGlyKS9NYWtlZmlsZS5pbiBcCi0JJChzcmNkaXIpL2ZmaS5oLmluCisJJChzcmNkaXIpL2ZmaS5oLmluICQoc3JjZGlyKS9mZmlfY29tbW9uLmgKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2FjaW5jbHVkZS5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKQEAgLTQ2LDcgKzQ2LDcgQEAKIG1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCiBDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2ZmaWNvbmZpZy5oCiBDT05GSUdfQ0xFQU5fRklMRVMgPSBmZmkuaCBmZml0YXJnZXQuaAotQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KK0NPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9IGZmaV9jb21tb24uaAogU09VUkNFUyA9CiBESVNUX1NPVVJDRVMgPQogYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7CkBAIC03MCw2ICs3MCwxMiBAQAogYW1fX2Jhc2VfbGlzdCA9IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKICAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoaW5jbHVkZXNkaXIpIgogSEVBREVSUyA9ICQobm9kaXN0X2luY2x1ZGVzX0hFQURFUlMpCiBFVEFHUyA9IGV0YWdzCkBAIC03OCw2ICs4NCw3IEBACiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQAogQU1UQVIgPSBAQU1UQVJACitBTV9MVExERkxBR1MgPSBAQU1fTFRMREZMQUdTQAogQU1fUlVOVEVTVEZMQUdTID0gQEFNX1JVTlRFU1RGTEFHU0AKIEFSID0gQEFSQAogQVVUT0NPTkYgPSBAQVVUT0NPTkZACkBAIC05NSw2ICsxMDIsNyBAQAogQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKIERFRlMgPSBAREVGU0AKIERFUERJUiA9IEBERVBESVJACitETExUT09MID0gQERMTFRPT0xACiBEU1lNVVRJTCA9IEBEU1lNVVRJTEAKIERVTVBCSU4gPSBARFVNUEJJTkAKIEVDSE9fQyA9IEBFQ0hPX0NACkBAIC0xMDIsNiArMTEwLDcgQEAKIEVDSE9fVCA9IEBFQ0hPX1RACiBFR1JFUCA9IEBFR1JFUEAKIEVYRUVYVCA9IEBFWEVFWFRACitGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFID0gQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACiBGR1JFUCA9IEBGR1JFUEAKIEdSRVAgPSBAR1JFUEAKIEhBVkVfTE9OR19ET1VCTEUgPSBASEFWRV9MT05HX0RPVUJMRUAKQEAgLTEyMCw2ICsxMjksNyBAQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACitNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACiBNS0RJUl9QID0gQE1LRElSX1BACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACkBAIC0xMzIsNiArMTQyLDcgQEAKIFBBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACiBQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKIFBBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKIFBBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACiBQQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKIFJBTkxJQiA9IEBSQU5MSUJACkBAIC0xNDYsNiArMTU3LDcgQEAKIGFic19zcmNkaXIgPSBAYWJzX3NyY2RpckAKIGFic190b3BfYnVpbGRkaXIgPSBAYWJzX3RvcF9idWlsZGRpckAKIGFic190b3Bfc3JjZGlyID0gQGFic190b3Bfc3JjZGlyQAorYWNfY3RfQVIgPSBAYWNfY3RfQVJACiBhY19jdF9DQyA9IEBhY19jdF9DQ0AKIGFjX2N0X0RVTVBCSU4gPSBAYWNfY3RfRFVNUEJJTkAKIGFtX19pbmNsdWRlID0gQGFtX19pbmNsdWRlQApAQCAtMTc4LDcgKzE5MCw2IEBACiBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACiBsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAogbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAotbHRfRUNITyA9IEBsdF9FQ0hPQAogbWFuZGlyID0gQG1hbmRpckAKIG1rZGlyX3AgPSBAbWtkaXJfcEAKIG9sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKQEAgLTI2Myw5ICsyNzQsNyBAQAogCUAkKE5PUk1BTF9VTklOU1RBTEwpCiAJQGxpc3Q9JyQobm9kaXN0X2luY2x1ZGVzX0hFQURFUlMpJzsgdGVzdCAtbiAiJChpbmNsdWRlc2RpcikiIHx8IGxpc3Q9OyBcCiAJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKLQl0ZXN0IC1uICIkJGZpbGVzIiB8fCBleGl0IDA7IFwKLQllY2hvICIgKCBjZCAnJChERVNURElSKSQoaW5jbHVkZXNkaXIpJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLQljZCAiJChERVNURElSKSQoaW5jbHVkZXNkaXIpIiAmJiBybSAtZiAkJGZpbGVzCisJZGlyPSckKERFU1RESVIpJChpbmNsdWRlc2RpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCiAKIElEOiAkKEhFQURFUlMpICQoU09VUkNFUykgJChMSVNQKSAkKFRBR1NfRklMRVMpCiAJbGlzdD0nJChTT1VSQ0VTKSAkKEhFQURFUlMpICQoTElTUCkgJChUQUdTX0ZJTEVTKSc7IFwKQEAgLTM2NiwxMCArMzc1LDE1IEBACiAKIGluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCiBpbnN0YWxsLXN0cmlwOgotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCi0JICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgIGB0ZXN0IC16ICckKFNUUklQKScgfHwgXAotCSAgICBlY2hvICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknImAgaW5zdGFsbAorCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgICBpbnN0YWxsOyBcCisJZWxzZSBcCisJICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAorCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKKwkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKKwlmaQogbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKIAogY2xlYW4tZ2VuZXJpYzoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmkuaC5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmkuaC5pbgppbmRleCBkZjdkMmNkLi5hNTE1ODNiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpLmguaW4KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaS5oLmluCkBAIC0xLDE2ICsxLDE3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgbGliZmZpIEBWRVJTSU9OQCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzLCAyMDA3LCAyMDA4ICBSZWQgSGF0LCBJbmMuCisgICBsaWJmZmkgQFZFUlNJT05AIC0gQ29weXJpZ2h0IChjKSAyMDExIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgICAgLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMywgMjAwNywgMjAwOCBSZWQgSGF0LCBJbmMuCiAKLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgorICAgb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24KKyAgIGZpbGVzICh0aGUgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dAorICAgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksCisgICBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMKKyAgIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCisgICBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogCi0gICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgICBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQorICAgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAKICAgIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCiAgICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKQEAgLTU3LDcgKzU4LDkgQEAKICNlbmRpZgogCiAvKiBTcGVjaWZ5IHdoaWNoIGFyY2hpdGVjdHVyZSBsaWJmZmkgaXMgY29uZmlndXJlZCBmb3IuICovCisjaWZuZGVmIEBUQVJHRVRACiAjZGVmaW5lIEBUQVJHRVRACisjZW5kaWYKIAogLyogLS0tLSBTeXN0ZW0gY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNzUsMTUgKzc4LDMxIEBACiAvKiBMT05HX0xPTkdfTUFYIGlzIG5vdCBhbHdheXMgZGVmaW5lZCAobm90IGlmIFNUUklDVF9BTlNJLCBmb3IgZXhhbXBsZSkuCiAgICBCdXQgd2UgY2FuIGZpbmQgaXQgZWl0aGVyIHVuZGVyIHRoZSBjb3JyZWN0IEFOU0kgbmFtZSwgb3IgdW5kZXIgR05VCiAgICBDJ3MgaW50ZXJuYWwgbmFtZS4gICovCisKKyNkZWZpbmUgRkZJXzY0X0JJVF9NQVggOTIyMzM3MjAzNjg1NDc3NTgwNworCiAjaWZkZWYgTE9OR19MT05HX01BWAogIyBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTE9OR19MT05HX01BWAogI2Vsc2UKICMgaWZkZWYgTExPTkdfTUFYCiAjICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTExPTkdfTUFYCisjICBpZmRlZiBfQUlYNTIgLyogb3IgbmV3ZXIgaGFzIEM5OSBMTE9OR19NQVggKi8KKyMgICB1bmRlZiBGRklfNjRfQklUX01BWAorIyAgIGRlZmluZSBGRklfNjRfQklUX01BWCA5MjIzMzcyMDM2ODU0Nzc1ODA3TEwKKyMgIGVuZGlmIC8qIF9BSVg1MiBvciBuZXdlciAqLwogIyBlbHNlCiAjICBpZmRlZiBfX0dOVUNfXwogIyAgIGRlZmluZSBGRklfTE9OR19MT05HX01BWCBfX0xPTkdfTE9OR19NQVhfXwogIyAgZW5kaWYKKyMgIGlmZGVmIF9BSVggLyogQUlYIDUuMSBhbmQgZWFybGllciBoYXZlIExPTkdMT05HX01BWCAqLworIyAgIGlmbmRlZiBfX1BQQzY0X18KKyMgICAgaWYgZGVmaW5lZCAoX19JQk1DX18pIHx8IGRlZmluZWQgKF9fSUJNQ1BQX18pCisjICAgICBkZWZpbmUgRkZJX0xPTkdfTE9OR19NQVggTE9OR0xPTkdfTUFYCisjICAgIGVuZGlmCisjICAgZW5kaWYgLyogX19QUEM2NF9fICovCisjICAgdW5kZWYgIEZGSV82NF9CSVRfTUFYCisjICAgZGVmaW5lIEZGSV82NF9CSVRfTUFYIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTAorIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZgogCkBAIC0xMzAsMzkgKzE0OSw1MyBAQAogI2VuZGlmCiAKICNpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3Ci0jIGlmIEZGSV9MT05HX0xPTkdfTUFYICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKKyMgaWYgRkZJX0xPTkdfTE9OR19NQVggIT0gRkZJXzY0X0JJVF9NQVgKICAjZXJyb3IgIm5vIDY0LWJpdCBkYXRhIHR5cGUgc3VwcG9ydGVkIgogIyBlbmRpZgotI2VsaWYgTE9OR19NQVggIT0gOTIyMzM3MjAzNjg1NDc3NTgwNworI2VsaWYgTE9OR19NQVggIT0gRkZJXzY0X0JJVF9NQVgKICAjZXJyb3IgImxvbmcgc2l6ZSBub3Qgc3VwcG9ydGVkIgogI2VuZGlmCiAKICNpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3CiAjIGRlZmluZSBmZmlfdHlwZV91bG9uZyAgICAgICAgZmZpX3R5cGVfdWludDMyCiAjIGRlZmluZSBmZmlfdHlwZV9zbG9uZyAgICAgICAgZmZpX3R5cGVfc2ludDMyCi0jZWxpZiBMT05HX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3CisjZWxpZiBMT05HX01BWCA9PSBGRklfNjRfQklUX01BWAogIyBkZWZpbmUgZmZpX3R5cGVfdWxvbmcgICAgICAgIGZmaV90eXBlX3VpbnQ2NAogIyBkZWZpbmUgZmZpX3R5cGVfc2xvbmcgICAgICAgIGZmaV90eXBlX3NpbnQ2NAogI2Vsc2UKICAjZXJyb3IgImxvbmcgc2l6ZSBub3Qgc3VwcG9ydGVkIgogI2VuZGlmCiAKKy8qIE5lZWQgbWluaW1hbCBkZWNvcmF0aW9ucyBmb3IgRExMcyB0byB3b3JrcyBvbiBXaW5kb3dzLiAqLworLyogR0NDIGhhcyBhdXRvaW1wb3J0IGFuZCBhdXRvZXhwb3J0LiAgUmVseSBvbiBMaWJ0b29sIHRvICovCisvKiBoZWxwIE1TVkMgZXhwb3J0IGZyb20gYSBETEwsIGJ1dCBhbHdheXMgZGVjbGFyZSBkYXRhICAgKi8KKy8qIHRvIGJlIGltcG9ydGVkIGZvciBNU1ZDIGNsaWVudHMuICBUaGlzIGNvc3RzIGFuIGV4dHJhICAqLworLyogaW5kaXJlY3Rpb24gZm9yIE1TVkMgY2xpZW50cyB1c2luZyB0aGUgc3RhdGljIHZlcnNpb24gICovCisvKiBvZiB0aGUgbGlicmFyeSwgYnV0IGRvbid0IHdvcnJ5IGFib3V0IHRoYXQuICBCZXNpZGVzLCAgKi8KKy8qIGFzIGEgd29ya2Fyb3VuZCwgdGhleSBjYW4gZGVmaW5lIEZGSV9CVUlMRElORyBpZiB0aGV5ICAqLworLyogKmtub3cqIHRoZXkgYXJlIGdvaW5nIHRvIGxpbmsgd2l0aCB0aGUgc3RhdGljIGxpYnJhcnkuICovCisjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiAhZGVmaW5lZCBGRklfQlVJTERJTkcKKyNkZWZpbmUgRkZJX0VYVEVSTiBleHRlcm4gX19kZWNsc3BlYyhkbGxpbXBvcnQpCisjZWxzZQorI2RlZmluZSBGRklfRVhURVJOIGV4dGVybgorI2VuZGlmCisKIC8qIFRoZXNlIGFyZSBkZWZpbmVkIGluIHR5cGVzLmMgKi8KLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV92b2lkOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQ4OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQ4OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3VpbnQxNjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50MTY7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDMyOwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX3NpbnQzMjsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV91aW50NjQ7Ci1leHRlcm4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDY0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2Zsb2F0OwotZXh0ZXJuIGZmaV90eXBlIGZmaV90eXBlX2RvdWJsZTsKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9wb2ludGVyOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV92b2lkOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV91aW50ODsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDg7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3VpbnQxNjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfc2ludDE2OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV91aW50MzI7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3NpbnQzMjsKK0ZGSV9FWFRFUk4gZmZpX3R5cGUgZmZpX3R5cGVfdWludDY0OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9zaW50NjQ7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX2Zsb2F0OworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9kb3VibGU7CitGRklfRVhURVJOIGZmaV90eXBlIGZmaV90eXBlX3BvaW50ZXI7CiAKICNpZiBASEFWRV9MT05HX0RPVUJMRUAKLWV4dGVybiBmZmlfdHlwZSBmZmlfdHlwZV9sb25nZG91YmxlOworRkZJX0VYVEVSTiBmZmlfdHlwZSBmZmlfdHlwZV9sb25nZG91YmxlOwogI2Vsc2UKICNkZWZpbmUgZmZpX3R5cGVfbG9uZ2RvdWJsZSBmZmlfdHlwZV9kb3VibGUKICNlbmRpZgpAQCAtMTg4LDEyICsyMjEsMjEgQEAKICNlbmRpZgogfSBmZmlfY2lmOwogCisvKiBVc2VkIGludGVybmFsbHksIGJ1dCBvdmVycmlkZGVuIGJ5IHNvbWUgYXJjaGl0ZWN0dXJlcyAqLworZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfY29yZShmZmlfY2lmICpjaWYsCisJCQkgICAgIGZmaV9hYmkgYWJpLAorCQkJICAgICB1bnNpZ25lZCBpbnQgaXN2YXJpYWRpYywKKwkJCSAgICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsCisJCQkgICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorCQkJICAgICBmZmlfdHlwZSAqcnR5cGUsCisJCQkgICAgIGZmaV90eXBlICoqYXR5cGVzKTsKKwogLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgdGhlIHJhdyBBUEkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBGRklfU0laRU9GX0FSRwogIyBpZiBMT05HX01BWCA9PSAyMTQ3NDgzNjQ3CiAjICBkZWZpbmUgRkZJX1NJWkVPRl9BUkcgICAgICAgIDQKLSMgZWxpZiBMT05HX01BWCA9PSA5MjIzMzcyMDM2ODU0Nzc1ODA3CisjIGVsaWYgTE9OR19NQVggPT0gRkZJXzY0X0JJVF9NQVgKICMgIGRlZmluZSBGRklfU0laRU9GX0FSRyAgICAgICAgOAogIyBlbmRpZgogI2VuZGlmCkBAIC0yNTUsNyArMjk3LDEyIEBACiBfX2RlY2xzcGVjKGFsaWduKDgpKQogI2VuZGlmCiB0eXBlZGVmIHN0cnVjdCB7CisjaWYgQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGU7CisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGVfZW50cnk7CisjZWxzZQogICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOworI2VuZGlmCiAgIGZmaV9jaWYgICAqY2lmOwogICB2b2lkICAgICAoKmZ1bikoZmZpX2NpZiosdm9pZCosdm9pZCoqLHZvaWQqKTsKICAgdm9pZCAgICAgICp1c2VyX2RhdGE7CkBAIC0yNjMsNiArMzEwLDkgQEAKIH0gZmZpX2Nsb3N1cmUgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCAoOCkpKTsKICNlbHNlCiB9IGZmaV9jbG9zdXJlOworIyBpZmRlZiBfX3NnaQorIyAgcHJhZ21hIHBhY2sgMAorIyBlbmRpZgogI2VuZGlmCiAKIHZvaWQgKmZmaV9jbG9zdXJlX2FsbG9jIChzaXplX3Qgc2l6ZSwgdm9pZCAqKmNvZGUpOwpAQCAtMjgxLDkgKzMzMSwxNiBAQAogCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCiAJCSAgICAgIHZvaWQqY29kZWxvYyk7CiAKKyNpZmRlZiBfX3NnaQorIyBwcmFnbWEgcGFjayA4CisjZW5kaWYKIHR5cGVkZWYgc3RydWN0IHsKKyNpZiBARkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRUAKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZTsKKyAgdm9pZCAqdHJhbXBvbGluZV90YWJsZV9lbnRyeTsKKyNlbHNlCiAgIGNoYXIgdHJhbXBbRkZJX1RSQU1QT0xJTkVfU0laRV07Ci0KKyNlbmRpZgogICBmZmlfY2lmICAgKmNpZjsKIAogI2lmICFGRklfTkFUSVZFX1JBV19BUEkKQEAgLTMwMyw3ICszNjAsMTIgQEAKIH0gZmZpX3Jhd19jbG9zdXJlOwogCiB0eXBlZGVmIHN0cnVjdCB7CisjaWYgQEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEVACisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGU7CisgIHZvaWQgKnRyYW1wb2xpbmVfdGFibGVfZW50cnk7CisjZWxzZQogICBjaGFyIHRyYW1wW0ZGSV9UUkFNUE9MSU5FX1NJWkVdOworI2VuZGlmCiAKICAgZmZpX2NpZiAgICpjaWY7CiAKQEAgLTM1OSw2ICs0MjEsMTMgQEAKIAkJCWZmaV90eXBlICpydHlwZSwKIAkJCWZmaV90eXBlICoqYXR5cGVzKTsKIAorZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfdmFyKGZmaV9jaWYgKmNpZiwKKwkJCSAgICBmZmlfYWJpIGFiaSwKKwkJCSAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKwkJCSAgICB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncywKKwkJCSAgICBmZmlfdHlwZSAqcnR5cGUsCisJCQkgICAgZmZpX3R5cGUgKiphdHlwZXMpOworCiB2b2lkIGZmaV9jYWxsKGZmaV9jaWYgKmNpZiwKIAkgICAgICB2b2lkICgqZm4pKHZvaWQpLAogCSAgICAgIHZvaWQgKnJ2YWx1ZSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmlfY29tbW9uLmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luY2x1ZGUvZmZpX2NvbW1vbi5oCmluZGV4IDQyY2FjZTkuLmMxNzlkNjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5jbHVkZS9mZmlfY29tbW9uLmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbmNsdWRlL2ZmaV9jb21tb24uaApAQCAtMSw3ICsxLDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmlfY29tbW9uLmggLSBDb3B5cmlnaHQgKGMpIDE5OTYgIFJlZCBIYXQsIEluYy4KLSAgIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYwotCisgICBmZmlfY29tbW9uLmggLSBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwNyAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5NiAgUmVkIEhhdCwgSW5jLgorICAgICAgICAgICAgICAgICAgCiAgICBDb21tb24gaW50ZXJuYWwgZGVmaW5pdGlvbnMgYW5kIG1hY3Jvcy4gT25seSBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nCiAgICBsaWJmZmkuCiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNzQsNiArNzUsOCBAQAogCiAvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCiBmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZik7CitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwX3ZhcihmZmlfY2lmICpjaWYsCisJIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLCB1bnNpZ25lZCBpbnQgbnRvdGFsYXJncyk7CiAKIC8qIEV4dGVuZGVkIGNpZiwgdXNlZCBpbiBjYWxsYmFjayBmcm9tIGFzc2VtYmx5IHJvdXRpbmUgKi8KIHR5cGVkZWYgc3RydWN0CkBAIC0xMTIsMTEgKzExNSwxNCBAQAogCiB0eXBlZGVmIGZsb2F0IEZMT0FUMzI7CiAKKyNpZm5kZWYgX19HTlVDX18KKyNkZWZpbmUgX19idWlsdGluX2V4cGVjdCh4LCBleHBlY3RlZF92YWx1ZSkgKHgpCisjZW5kaWYKKyNkZWZpbmUgTElLRUxZKHgpICAgIF9fYnVpbHRpbl9leHBlY3QoISEoeCksMSkKKyNkZWZpbmUgVU5MSUtFTFkoeCkgIF9fYnVpbHRpbl9leHBlY3QoKHgpIT0wLDApCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCiAKICNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5zdGFsbC1zaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvaW5zdGFsbC1zaAppbmRleCA2ZWJlNDZkLi42NzgxYjk4IDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2luc3RhbGwtc2gKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9pbnN0YWxsLXNoCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAjIGluc3RhbGwgLSBpbnN0YWxsIGEgcHJvZ3JhbSwgc2NyaXB0LCBvciBkYXRhZmlsZQogCi1zY3JpcHR2ZXJzaW9uPTIwMDQtMTItMTcuMDkKK3NjcmlwdHZlcnNpb249MjAwOS0wNC0yOC4yMTsgIyBVVEMKIAogIyBUaGlzIG9yaWdpbmF0ZXMgZnJvbSBYMTFSNSAobWl0L3V0aWwvc2NyaXB0cy9pbnN0YWxsLnNoKSwgd2hpY2ggd2FzCiAjIGxhdGVyIHJlbGVhc2VkIGluIFgxMVI2ICh4Yy9jb25maWcvdXRpbC9pbnN0YWxsLnNoKSB3aXRoIHRoZQpAQCAtMzksMzggKzM5LDY4IEBACiAjIHdoZW4gdGhlcmUgaXMgbm8gTWFrZWZpbGUuCiAjCiAjIFRoaXMgc2NyaXB0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgQlNEIGluc3RhbGwgc2NyaXB0LCBidXQgd2FzIHdyaXR0ZW4KLSMgZnJvbSBzY3JhdGNoLiAgSXQgY2FuIG9ubHkgaW5zdGFsbCBvbmUgZmlsZSBhdCBhIHRpbWUsIGEgcmVzdHJpY3Rpb24KLSMgc2hhcmVkIHdpdGggbWFueSBPUydzIGluc3RhbGwgcHJvZ3JhbXMuCisjIGZyb20gc2NyYXRjaC4KKworbmw9JworJworSUZTPSIgIiIJJG5sIgogCiAjIHNldCBET0lUUFJPRyB0byBlY2hvIHRvIHRlc3QgdGhpcyBzY3JpcHQKIAogIyBEb24ndCB1c2UgOi0gc2luY2UgNC4zQlNEIGFuZCBlYXJsaWVyIHNoZWxscyBkb24ndCBsaWtlIGl0LgotZG9pdD0iJHtET0lUUFJPRy19IgorZG9pdD0ke0RPSVRQUk9HLX0KK2lmIHRlc3QgLXogIiRkb2l0IjsgdGhlbgorICBkb2l0X2V4ZWM9ZXhlYworZWxzZQorICBkb2l0X2V4ZWM9JGRvaXQKK2ZpCiAKLSMgcHV0IGluIGFic29sdXRlIHBhdGhzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOyBvciB1c2UgZW52LiB2YXJzLgorIyBQdXQgaW4gYWJzb2x1dGUgZmlsZSBuYW1lcyBpZiB5b3UgZG9uJ3QgaGF2ZSB0aGVtIGluIHlvdXIgcGF0aDsKKyMgb3IgdXNlIGVudmlyb25tZW50IHZhcnMuCiAKLW12cHJvZz0iJHtNVlBST0ctbXZ9IgotY3Bwcm9nPSIke0NQUFJPRy1jcH0iCi1jaG1vZHByb2c9IiR7Q0hNT0RQUk9HLWNobW9kfSIKLWNob3ducHJvZz0iJHtDSE9XTlBST0ctY2hvd259IgotY2hncnBwcm9nPSIke0NIR1JQUFJPRy1jaGdycH0iCi1zdHJpcHByb2c9IiR7U1RSSVBQUk9HLXN0cmlwfSIKLXJtcHJvZz0iJHtSTVBST0ctcm19IgotbWtkaXJwcm9nPSIke01LRElSUFJPRy1ta2Rpcn0iCitjaGdycHByb2c9JHtDSEdSUFBST0ctY2hncnB9CitjaG1vZHByb2c9JHtDSE1PRFBST0ctY2htb2R9CitjaG93bnByb2c9JHtDSE9XTlBST0ctY2hvd259CitjbXBwcm9nPSR7Q01QUFJPRy1jbXB9CitjcHByb2c9JHtDUFBST0ctY3B9Citta2RpcnByb2c9JHtNS0RJUlBST0ctbWtkaXJ9CittdnByb2c9JHtNVlBST0ctbXZ9CitybXByb2c9JHtSTVBST0ctcm19CitzdHJpcHByb2c9JHtTVFJJUFBST0ctc3RyaXB9CiAKLWNobW9kY21kPSIkY2htb2Rwcm9nIDA3NTUiCi1jaG93bmNtZD0KK3Bvc2l4X2dsb2I9Jz8nCitpbml0aWFsaXplX3Bvc2l4X2dsb2I9JworICB0ZXN0ICIkcG9zaXhfZ2xvYiIgIT0gIj8iIHx8IHsKKyAgICBpZiAoc2V0IC1mKSAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgcG9zaXhfZ2xvYj0KKyAgICBlbHNlCisgICAgICBwb3NpeF9nbG9iPToKKyAgICBmaQorICB9CisnCisKK3Bvc2l4X21rZGlyPQorCisjIERlc2lyZWQgbW9kZSBvZiBpbnN0YWxsZWQgZmlsZS4KK21vZGU9MDc1NQorCiBjaGdycGNtZD0KLXN0cmlwY21kPQorY2htb2RjbWQ9JGNobW9kcHJvZworY2hvd25jbWQ9CittdmNtZD0kbXZwcm9nCiBybWNtZD0iJHJtcHJvZyAtZiIKLW12Y21kPSIkbXZwcm9nIgorc3RyaXBjbWQ9CisKIHNyYz0KIGRzdD0KIGRpcl9hcmc9Ci1kc3Rhcmc9Citkc3RfYXJnPQorCitjb3B5X29uX2NoYW5nZT1mYWxzZQogbm9fdGFyZ2V0X2RpcmVjdG9yeT0KIAotdXNhZ2U9IlVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbLVRdIFNSQ0ZJTEUgRFNURklMRQordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbLVRdIFNSQ0ZJTEUgRFNURklMRQogICAgb3I6ICQwIFtPUFRJT05dLi4uIFNSQ0ZJTEVTLi4uIERJUkVDVE9SWQogICAgb3I6ICQwIFtPUFRJT05dLi4uIC10IERJUkVDVE9SWSBTUkNGSUxFUy4uLgogICAgb3I6ICQwIFtPUFRJT05dLi4uIC1kIERJUkVDVE9SSUVTLi4uCkBAIC04MCw4MSArMTEwLDg2IEBACiBJbiB0aGUgNHRoLCBjcmVhdGUgRElSRUNUT1JJRVMuCiAKIE9wdGlvbnM6Ci0tYyAgICAgICAgIChpZ25vcmVkKQotLWQgICAgICAgICBjcmVhdGUgZGlyZWN0b3JpZXMgaW5zdGVhZCBvZiBpbnN0YWxsaW5nIGZpbGVzLgotLWcgR1JPVVAgICAkY2hncnBwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBHUk9VUC4KLS1tIE1PREUgICAgJGNobW9kcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gTU9ERS4KLS1vIFVTRVIgICAgJGNob3ducHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gVVNFUi4KLS1zICAgICAgICAgJHN0cmlwcHJvZyBpbnN0YWxsZWQgZmlsZXMuCi0tdCBESVJFQ1RPUlkgIGluc3RhbGwgaW50byBESVJFQ1RPUlkuCi0tVCAgICAgICAgIHJlcG9ydCBhbiBlcnJvciBpZiBEU1RGSUxFIGlzIGEgZGlyZWN0b3J5LgotLS1oZWxwICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdC4KLS0tdmVyc2lvbiAgZGlzcGxheSB2ZXJzaW9uIGluZm8gYW5kIGV4aXQuCisgICAgIC0taGVscCAgICAgZGlzcGxheSB0aGlzIGhlbHAgYW5kIGV4aXQuCisgICAgIC0tdmVyc2lvbiAgZGlzcGxheSB2ZXJzaW9uIGluZm8gYW5kIGV4aXQuCisKKyAgLWMgICAgICAgICAgICAoaWdub3JlZCkKKyAgLUMgICAgICAgICAgICBpbnN0YWxsIG9ubHkgaWYgZGlmZmVyZW50IChwcmVzZXJ2ZSB0aGUgbGFzdCBkYXRhIG1vZGlmaWNhdGlvbiB0aW1lKQorICAtZCAgICAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9mIGluc3RhbGxpbmcgZmlsZXMuCisgIC1nIEdST1VQICAgICAgJGNoZ3JwcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gR1JPVVAuCisgIC1tIE1PREUgICAgICAgJGNobW9kcHJvZyBpbnN0YWxsZWQgZmlsZXMgdG8gTU9ERS4KKyAgLW8gVVNFUiAgICAgICAkY2hvd25wcm9nIGluc3RhbGxlZCBmaWxlcyB0byBVU0VSLgorICAtcyAgICAgICAgICAgICRzdHJpcHByb2cgaW5zdGFsbGVkIGZpbGVzLgorICAtdCBESVJFQ1RPUlkgIGluc3RhbGwgaW50byBESVJFQ1RPUlkuCisgIC1UICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yIGlmIERTVEZJTEUgaXMgYSBkaXJlY3RvcnkuCiAKIEVudmlyb25tZW50IHZhcmlhYmxlcyBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb21tYW5kczoKLSAgQ0hHUlBQUk9HIENITU9EUFJPRyBDSE9XTlBST0cgQ1BQUk9HIE1LRElSUFJPRyBNVlBST0cgUk1QUk9HIFNUUklQUFJPRworICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDTVBQUk9HIENQUFJPRyBNS0RJUlBST0cgTVZQUk9HCisgIFJNUFJPRyBTVFJJUFBST0cKICIKIAotd2hpbGUgdGVzdCAtbiAiJDEiOyBkbword2hpbGUgdGVzdCAkIyAtbmUgMDsgZG8KICAgY2FzZSAkMSBpbgotICAgIC1jKSBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisgICAgLWMpIDs7CiAKLSAgICAtZCkgZGlyX2FyZz10cnVlCi0gICAgICAgIHNoaWZ0Ci0gICAgICAgIGNvbnRpbnVlOzsKKyAgICAtQykgY29weV9vbl9jaGFuZ2U9dHJ1ZTs7CisKKyAgICAtZCkgZGlyX2FyZz10cnVlOzsKIAogICAgIC1nKSBjaGdycGNtZD0iJGNoZ3JwcHJvZyAkMiIKLSAgICAgICAgc2hpZnQKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworCXNoaWZ0OzsKIAotICAgIC0taGVscCkgZWNobyAiJHVzYWdlIjsgZXhpdCAwOzsKKyAgICAtLWhlbHApIGVjaG8gIiR1c2FnZSI7IGV4aXQgJD87OwogCi0gICAgLW0pIGNobW9kY21kPSIkY2htb2Rwcm9nICQyIgotICAgICAgICBzaGlmdAotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisgICAgLW0pIG1vZGU9JDIKKwljYXNlICRtb2RlIGluCisJICAqJyAnKiB8IConCScqIHwgKicKKycqCSAgfCAqJyonKiB8IConPycqIHwgKidbJyopCisJICAgIGVjaG8gIiQwOiBpbnZhbGlkIG1vZGU6ICRtb2RlIiA+JjIKKwkgICAgZXhpdCAxOzsKKwllc2FjCisJc2hpZnQ7OwogCiAgICAgLW8pIGNob3duY21kPSIkY2hvd25wcm9nICQyIgotICAgICAgICBzaGlmdAotICAgICAgICBzaGlmdAotICAgICAgICBjb250aW51ZTs7CisJc2hpZnQ7OwogCi0gICAgLXMpIHN0cmlwY21kPSRzdHJpcHByb2cKLSAgICAgICAgc2hpZnQKLSAgICAgICAgY29udGludWU7OworICAgIC1zKSBzdHJpcGNtZD0kc3RyaXBwcm9nOzsKIAotICAgIC10KSBkc3Rhcmc9JDIKLQlzaGlmdAotCXNoaWZ0Ci0JY29udGludWU7OworICAgIC10KSBkc3RfYXJnPSQyCisJc2hpZnQ7OwogCi0gICAgLVQpIG5vX3RhcmdldF9kaXJlY3Rvcnk9dHJ1ZQotCXNoaWZ0Ci0JY29udGludWU7OworICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWU7OwogCi0gICAgLS12ZXJzaW9uKSBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgMDs7CisgICAgLS12ZXJzaW9uKSBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgJD87OwogCi0gICAgKikgICMgV2hlbiAtZCBpcyB1c2VkLCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgZGlyZWN0b3JpZXMgdG8gY3JlYXRlLgotCSMgV2hlbiAtdCBpcyB1c2VkLCB0aGUgZGVzdGluYXRpb24gaXMgYWxyZWFkeSBzcGVjaWZpZWQuCi0JdGVzdCAtbiAiJGRpcl9hcmckZHN0YXJnIiAmJiBicmVhawotICAgICAgICAjIE90aGVyd2lzZSwgdGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIGRlc3RpbmF0aW9uLiAgUmVtb3ZlIGl0IGZyb20gJEAuCi0JZm9yIGFyZwotCWRvCi0gICAgICAgICAgaWYgdGVzdCAtbiAiJGRzdGFyZyI7IHRoZW4KLQkgICAgIyAkQCBpcyBub3QgZW1wdHk6IGl0IGNvbnRhaW5zIGF0IGxlYXN0ICRhcmcuCi0JICAgIHNldCBmbm9yZCAiJEAiICIkZHN0YXJnIgotCSAgICBzaGlmdCAjIGZub3JkCi0JICBmaQotCSAgc2hpZnQgIyBhcmcKLQkgIGRzdGFyZz0kYXJnCi0JZG9uZQorICAgIC0tKQlzaGlmdAogCWJyZWFrOzsKKworICAgIC0qKQllY2hvICIkMDogaW52YWxpZCBvcHRpb246ICQxIiA+JjIKKwlleGl0IDE7OworCisgICAgKikgIGJyZWFrOzsKICAgZXNhYworICBzaGlmdAogZG9uZQogCi1pZiB0ZXN0IC16ICIkMSI7IHRoZW4KK2lmIHRlc3QgJCMgLW5lIDAgJiYgdGVzdCAteiAiJGRpcl9hcmckZHN0X2FyZyI7IHRoZW4KKyAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCisgICMgV2hlbiAtdCBpcyB1c2VkLCB0aGUgZGVzdGluYXRpb24gaXMgYWxyZWFkeSBzcGVjaWZpZWQuCisgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KKyAgZm9yIGFyZworICBkbworICAgIGlmIHRlc3QgLW4gIiRkc3RfYXJnIjsgdGhlbgorICAgICAgIyAkQCBpcyBub3QgZW1wdHk6IGl0IGNvbnRhaW5zIGF0IGxlYXN0ICRhcmcuCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdF9hcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgZmkKKyAgICBzaGlmdCAjIGFyZworICAgIGRzdF9hcmc9JGFyZworICBkb25lCitmaQorCitpZiB0ZXN0ICQjIC1lcSAwOyB0aGVuCiAgIGlmIHRlc3QgLXogIiRkaXJfYXJnIjsgdGhlbgogICAgIGVjaG8gIiQwOiBubyBpbnB1dCBmaWxlIHNwZWNpZmllZC4iID4mMgogICAgIGV4aXQgMQpAQCAtMTY0LDI0ICsxOTksNDcgQEAKICAgZXhpdCAwCiBmaQogCitpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKKworICAjIFNldCB1bWFzayBzbyBhcyBub3QgdG8gY3JlYXRlIHRlbXBzIHdpdGggdG9vLWdlbmVyb3VzIG1vZGVzLgorICAjIEhvd2V2ZXIsICdzdHJpcCcgcmVxdWlyZXMgYm90aCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gdGVtcHMuCisgIGNhc2UgJG1vZGUgaW4KKyAgICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKyAgICAqNjQ0KSBjcF91bWFzaz0xMzM7OworICAgICo3NTUpIGNwX3VtYXNrPTIyOzsKKworICAgICpbMC03XSkKKyAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KKwl1X3BsdXNfcnc9CisgICAgICBlbHNlCisJdV9wbHVzX3J3PSclIDIwMCcKKyAgICAgIGZpCisgICAgICBjcF91bWFzaz1gZXhwciAnKCcgNzc3IC0gJG1vZGUgJSAxMDAwICcpJyAkdV9wbHVzX3J3YDs7CisgICAgKikKKyAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KKwl1X3BsdXNfcnc9CisgICAgICBlbHNlCisJdV9wbHVzX3J3PSx1K3J3CisgICAgICBmaQorICAgICAgY3BfdW1hc2s9JG1vZGUkdV9wbHVzX3J3OzsKKyAgZXNhYworZmkKKwogZm9yIHNyYwogZG8KICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgogICBjYXNlICRzcmMgaW4KLSAgICAtKikgc3JjPS4vJHNyYyA7OworICAgIC0qKSBzcmM9Li8kc3JjOzsKICAgZXNhYwogCiAgIGlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgogICAgIGRzdD0kc3JjCi0gICAgc3JjPQotCi0gICAgaWYgdGVzdCAtZCAiJGRzdCI7IHRoZW4KLSAgICAgIG1rZGlyY21kPToKLSAgICAgIGNobW9kY21kPQotICAgIGVsc2UKLSAgICAgIG1rZGlyY21kPSRta2RpcnByb2cKLSAgICBmaQorICAgIGRzdGRpcj0kZHN0CisgICAgdGVzdCAtZCAiJGRzdGRpciIKKyAgICBkc3RkaXJfc3RhdHVzPSQ/CiAgIGVsc2UKKwogICAgICMgV2FpdGluZyBmb3IgdGhpcyB0byBiZSBkZXRlY3RlZCBieSB0aGUgIiRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kCiAgICAgIyBtaWdodCBjYXVzZSBkaXJlY3RvcmllcyB0byBiZSBjcmVhdGVkLCB3aGljaCB3b3VsZCBiZSBlc3BlY2lhbGx5IGJhZAogICAgICMgaWYgJHNyYyAoYW5kIHRodXMgJGRzdHRtcCkgY29udGFpbnMgJyonLgpAQCAtMTkwLDcxICsyNDgsMTk5IEBACiAgICAgICBleGl0IDEKICAgICBmaQogCi0gICAgaWYgdGVzdCAteiAiJGRzdGFyZyI7IHRoZW4KKyAgICBpZiB0ZXN0IC16ICIkZHN0X2FyZyI7IHRoZW4KICAgICAgIGVjaG8gIiQwOiBubyBkZXN0aW5hdGlvbiBzcGVjaWZpZWQuIiA+JjIKICAgICAgIGV4aXQgMQogICAgIGZpCiAKLSAgICBkc3Q9JGRzdGFyZworICAgIGRzdD0kZHN0X2FyZwogICAgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KICAgICBjYXNlICRkc3QgaW4KLSAgICAgIC0qKSBkc3Q9Li8kZHN0IDs7CisgICAgICAtKikgZHN0PS4vJGRzdDs7CiAgICAgZXNhYwogCiAgICAgIyBJZiBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSwgYXBwZW5kIHRoZSBpbnB1dCBmaWxlbmFtZTsgd29uJ3Qgd29yawogICAgICMgaWYgZG91YmxlIHNsYXNoZXMgYXJlbid0IGlnbm9yZWQuCiAgICAgaWYgdGVzdCAtZCAiJGRzdCI7IHRoZW4KICAgICAgIGlmIHRlc3QgLW4gIiRub190YXJnZXRfZGlyZWN0b3J5IjsgdGhlbgotCWVjaG8gIiQwOiAkZHN0YXJnOiBJcyBhIGRpcmVjdG9yeSIgPiYyCisJZWNobyAiJDA6ICRkc3RfYXJnOiBJcyBhIGRpcmVjdG9yeSIgPiYyCiAJZXhpdCAxCiAgICAgICBmaQotICAgICAgZHN0PSRkc3QvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcj0kZHN0CisgICAgICBkc3Q9JGRzdGRpci9gYmFzZW5hbWUgIiRzcmMiYAorICAgICAgZHN0ZGlyX3N0YXR1cz0wCisgICAgZWxzZQorICAgICAgIyBQcmVmZXIgZGlybmFtZSwgYnV0IGZhbGwgYmFjayBvbiBhIHN1YnN0aXR1dGUgaWYgZGlybmFtZSBmYWlscy4KKyAgICAgIGRzdGRpcj1gCisJKGRpcm5hbWUgIiRkc3QiKSAyPi9kZXYvbnVsbCB8fAorCWV4cHIgWCIkZHN0IiA6ICdYXCguKlteL11cKS8vKlteL11bXi9dKi8qJCcgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvL1wpW14vXScgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvL1wpJCcgXHwgXAorCSAgICAgWCIkZHN0IiA6ICdYXCgvXCknIFx8IC4gMj4vZGV2L251bGwgfHwKKwllY2hvIFgiJGRzdCIgfAorCSAgICBzZWQgJy9eWFwoLipbXi9dXClcL1wvKlteL11bXi9dKlwvKiQveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wvXClbXi9dLioveworCQkgICBzLy9cMS8KKwkJICAgcQorCQkgfQorCQkgL15YXChcL1wvXCkkL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cKS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIHMvLiovLi87IHEnCisgICAgICBgCisKKyAgICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgICBkc3RkaXJfc3RhdHVzPSQ/CiAgICAgZmkKICAgZmkKIAotICAjIFRoaXMgc2VkIGNvbW1hbmQgZW11bGF0ZXMgdGhlIGRpcm5hbWUgY29tbWFuZC4KLSAgZHN0ZGlyPWBlY2hvICIkZHN0IiB8IHNlZCAtZSAncywvKiQsLDtzLFteL10qJCwsO3MsLyokLCw7cyxeJCwuLCdgCisgIG9ic29sZXRlX21rZGlyX3VzZWQ9ZmFsc2UKIAotICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZXhpc3RzLgorICBpZiB0ZXN0ICRkc3RkaXJfc3RhdHVzICE9IDA7IHRoZW4KKyAgICBjYXNlICRwb3NpeF9ta2RpciBpbgorICAgICAgJycpCisJIyBDcmVhdGUgaW50ZXJtZWRpYXRlIGRpcnMgdXNpbmcgbW9kZSA3NTUgYXMgbW9kaWZpZWQgYnkgdGhlIHVtYXNrLgorCSMgVGhpcyBpcyBsaWtlIEZyZWVCU0QgJ2luc3RhbGwnIGFzIG9mIDE5OTctMTAtMjguCisJdW1hc2s9YHVtYXNrYAorCWNhc2UgJHN0cmlwY21kLiR1bWFzayBpbgorCSAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCisJICAqWzIzNjddWzIzNjddKSBta2Rpcl91bWFzaz0kdW1hc2s7OworCSAgLiowWzAyXVswMl0gfCAuWzAyXVswMl0gfCAuWzAyXSkgbWtkaXJfdW1hc2s9MjI7OwogCi0gICMgU2tpcCBsb3RzIG9mIHN0YXQgY2FsbHMgaW4gdGhlIHVzdWFsIGNhc2UuCi0gIGlmIHRlc3QgISAtZCAiJGRzdGRpciI7IHRoZW4KLSAgICBkZWZhdWx0SUZTPScKLQkgJwotICAgIElGUz0iJHtJRlMtJGRlZmF1bHRJRlN9IgorCSAgKlswLTddKQorCSAgICBta2Rpcl91bWFzaz1gZXhwciAkdW1hc2sgKyAyMiBcCisJICAgICAgLSAkdW1hc2sgJSAxMDAgJSA0MCArICR1bWFzayAlIDIwIFwKKwkgICAgICAtICR1bWFzayAlIDEwICUgNCArICR1bWFzayAlIDIKKwkgICAgYDs7CisJICAqKSBta2Rpcl91bWFzaz0kdW1hc2ssZ28tdzs7CisJZXNhYwogCi0gICAgb0lGUz0kSUZTCi0gICAgIyBTb21lIHNoJ3MgY2FuJ3QgaGFuZGxlIElGUz0vIGZvciBzb21lIHJlYXNvbi4KLSAgICBJRlM9JyUnCi0gICAgc2V0IHggYGVjaG8gIiRkc3RkaXIiIHwgc2VkIC1lICdzQC9AJUBnJyAtZSAnc0BeJUAvQCdgCi0gICAgc2hpZnQKLSAgICBJRlM9JG9JRlMKKwkjIFdpdGggLWQsIGNyZWF0ZSB0aGUgbmV3IGRpcmVjdG9yeSB3aXRoIHRoZSB1c2VyLXNwZWNpZmllZCBtb2RlLgorCSMgT3RoZXJ3aXNlLCByZWx5IG9uICRta2Rpcl91bWFzay4KKwlpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKwkgIG1rZGlyX21vZGU9LW0kbW9kZQorCWVsc2UKKwkgIG1rZGlyX21vZGU9CisJZmkKIAotICAgIHBhdGhjb21wPQorCXBvc2l4X21rZGlyPWZhbHNlCisJY2FzZSAkdW1hc2sgaW4KKwkgICpbMTIzNTY3XVswLTddWzAtN10pCisJICAgICMgUE9TSVggbWtkaXIgLXAgc2V0cyB1K3d4IGJpdHMgcmVnYXJkbGVzcyBvZiB1bWFzaywgd2hpY2gKKwkgICAgIyBpcyBpbmNvbXBhdGlibGUgd2l0aCBGcmVlQlNEICdpbnN0YWxsJyB3aGVuICh1bWFzayAmIDMwMCkgIT0gMC4KKwkgICAgOzsKKwkgICopCisJICAgIHRtcGRpcj0ke1RNUERJUi0vdG1wfS9pbnMkUkFORE9NLSQkCisJICAgIHRyYXAgJ3JldD0kPzsgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiIDI+L2Rldi9udWxsOyBleGl0ICRyZXQnIDAKIAotICAgIHdoaWxlIHRlc3QgJCMgLW5lIDAgOyBkbwotICAgICAgcGF0aGNvbXA9JHBhdGhjb21wJDEKKwkgICAgaWYgKHVtYXNrICRta2Rpcl91bWFzayAmJgorCQlleGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiR0bXBkaXIvZCIpID4vZGV2L251bGwgMj4mMQorCSAgICB0aGVuCisJICAgICAgaWYgdGVzdCAteiAiJGRpcl9hcmciIHx8IHsKKwkJICAgIyBDaGVjayBmb3IgUE9TSVggaW5jb21wYXRpYmlsaXRpZXMgd2l0aCAtbS4KKwkJICAgIyBIUC1VWCAxMS4yMyBhbmQgSVJJWCA2LjUgbWtkaXIgLW0gLXAgc2V0cyBncm91cC0gb3IKKwkJICAgIyBvdGhlci13cml0ZWFibGUgYml0IG9mIHBhcmVudCBkaXJlY3Rvcnkgd2hlbiBpdCBzaG91bGRuJ3QuCisJCSAgICMgRnJlZUJTRCA2LjEgbWtkaXIgLW0gLXAgc2V0cyBtb2RlIG9mIGV4aXN0aW5nIGRpcmVjdG9yeS4KKwkJICAgbHNfbGRfdG1wZGlyPWBscyAtbGQgIiR0bXBkaXIiYAorCQkgICBjYXNlICRsc19sZF90bXBkaXIgaW4KKwkJICAgICBkPz8/Py0/ci0qKSBkaWZmZXJlbnRfbW9kZT03MDA7OworCQkgICAgIGQ/Pz8/LT8tLSopIGRpZmZlcmVudF9tb2RlPTc1NTs7CisJCSAgICAgKikgZmFsc2U7OworCQkgICBlc2FjICYmCisJCSAgICRta2RpcnByb2cgLW0kZGlmZmVyZW50X21vZGUgLXAgLS0gIiR0bXBkaXIiICYmIHsKKwkJICAgICBsc19sZF90bXBkaXJfMT1gbHMgLWxkICIkdG1wZGlyImAKKwkJICAgICB0ZXN0ICIkbHNfbGRfdG1wZGlyIiA9ICIkbHNfbGRfdG1wZGlyXzEiCisJCSAgIH0KKwkJIH0KKwkgICAgICB0aGVuIHBvc2l4X21rZGlyPToKKwkgICAgICBmaQorCSAgICAgIHJtZGlyICIkdG1wZGlyL2QiICIkdG1wZGlyIgorCSAgICBlbHNlCisJICAgICAgIyBSZW1vdmUgYW55IGRpcnMgbGVmdCBiZWhpbmQgYnkgYW5jaWVudCBta2RpciBpbXBsZW1lbnRhdGlvbnMuCisJICAgICAgcm1kaXIgLi8kbWtkaXJfbW9kZSAuLy1wIC4vLS0gMj4vZGV2L251bGwKKwkgICAgZmkKKwkgICAgdHJhcCAnJyAwOzsKKwllc2FjOzsKKyAgICBlc2FjCisKKyAgICBpZgorICAgICAgJHBvc2l4X21rZGlyICYmICgKKwl1bWFzayAkbWtkaXJfdW1hc2sgJiYKKwkkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiCisgICAgICApCisgICAgdGhlbiA6CisgICAgZWxzZQorCisgICAgICAjIFRoZSB1bWFzayBpcyByaWRpY3Vsb3VzLCBvciBta2RpciBkb2VzIG5vdCBjb25mb3JtIHRvIFBPU0lYLAorICAgICAgIyBvciBpdCBmYWlsZWQgcG9zc2libHkgZHVlIHRvIGEgcmFjZSBjb25kaXRpb24uICBDcmVhdGUgdGhlCisgICAgICAjIGRpcmVjdG9yeSB0aGUgc2xvdyB3YXksIHN0ZXAgYnkgc3RlcCwgY2hlY2tpbmcgZm9yIHJhY2VzIGFzIHdlIGdvLgorCisgICAgICBjYXNlICRkc3RkaXIgaW4KKwkvKikgcHJlZml4PScvJzs7CisJLSopIHByZWZpeD0nLi8nOzsKKwkqKSAgcHJlZml4PScnOzsKKyAgICAgIGVzYWMKKworICAgICAgZXZhbCAiJGluaXRpYWxpemVfcG9zaXhfZ2xvYiIKKworICAgICAgb0lGUz0kSUZTCisgICAgICBJRlM9LworICAgICAgJHBvc2l4X2dsb2Igc2V0IC1mCisgICAgICBzZXQgZm5vcmQgJGRzdGRpcgogICAgICAgc2hpZnQKLSAgICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotICAgICAgICAkbWtkaXJwcm9nICIkcGF0aGNvbXAiCi0JIyBta2RpciBjYW4gZmFpbCB3aXRoIGEgYEZpbGUgZXhpc3QnIGVycm9yIGluIGNhc2Ugc2V2ZXJhbAotCSMgaW5zdGFsbC1zaCBhcmUgY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBjb25jdXJyZW50bHkuICBUaGlzCi0JIyBpcyBPSy4KLQl0ZXN0IC1kICIkcGF0aGNvbXAiIHx8IGV4aXQKKyAgICAgICRwb3NpeF9nbG9iIHNldCArZgorICAgICAgSUZTPSRvSUZTCisKKyAgICAgIHByZWZpeGVzPQorCisgICAgICBmb3IgZAorICAgICAgZG8KKwl0ZXN0IC16ICIkZCIgJiYgY29udGludWUKKworCXByZWZpeD0kcHJlZml4JGQKKwlpZiB0ZXN0IC1kICIkcHJlZml4IjsgdGhlbgorCSAgcHJlZml4ZXM9CisJZWxzZQorCSAgaWYgJHBvc2l4X21rZGlyOyB0aGVuCisJICAgICh1bWFzaz0kbWtkaXJfdW1hc2sgJiYKKwkgICAgICRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIpICYmIGJyZWFrCisJICAgICMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkgICAgdGVzdCAtZCAiJHByZWZpeCIgfHwgZXhpdCAxCisJICBlbHNlCisJICAgIGNhc2UgJHByZWZpeCBpbgorCSAgICAgICpcJyopIHFwcmVmaXg9YGVjaG8gIiRwcmVmaXgiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsKKwkgICAgICAqKSBxcHJlZml4PSRwcmVmaXg7OworCSAgICBlc2FjCisJICAgIHByZWZpeGVzPSIkcHJlZml4ZXMgJyRxcHJlZml4JyIKKwkgIGZpCisJZmkKKwlwcmVmaXg9JHByZWZpeC8KKyAgICAgIGRvbmUKKworICAgICAgaWYgdGVzdCAtbiAiJHByZWZpeGVzIjsgdGhlbgorCSMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJIGV2YWwgIlwkZG9pdF9leGVjIFwkbWtkaXJwcm9nICRwcmVmaXhlcyIpIHx8CisJICB0ZXN0IC1kICIkZHN0ZGlyIiB8fCBleGl0IDEKKwlvYnNvbGV0ZV9ta2Rpcl91c2VkPXRydWUKICAgICAgIGZpCi0gICAgICBwYXRoY29tcD0kcGF0aGNvbXAvCi0gICAgZG9uZQorICAgIGZpCiAgIGZpCiAKICAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCi0gICAgJGRvaXQgJG1rZGlyY21kICIkZHN0IiBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0IjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0IjsgfSBcCi0gICAgICAmJiB7IHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICIkZHN0IjsgfQotCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAiJG9ic29sZXRlX21rZGlyX3VzZWQkY2hvd25jbWQkY2hncnBjbWQiID0gZmFsc2UgfHwKKyAgICAgIHRlc3QgLXogIiRjaG1vZGNtZCIgfHwgJGRvaXQgJGNobW9kY21kICRtb2RlICIkZHN0IjsgfSB8fCBleGl0IDEKICAgZWxzZQotICAgIGRzdGZpbGU9YGJhc2VuYW1lICIkZHN0ImAKIAogICAgICMgTWFrZSBhIGNvdXBsZSBvZiB0ZW1wIGZpbGUgbmFtZXMgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCiAgICAgZHN0dG1wPSRkc3RkaXIvX2luc3QuJCRfCkBAIC0yNjIsMTAgKzQ0OCw5IEBACiAKICAgICAjIFRyYXAgdG8gY2xlYW4gdXAgdGhvc2UgdGVtcCBmaWxlcyBhdCBleGl0LgogICAgIHRyYXAgJ3JldD0kPzsgcm0gLWYgIiRkc3R0bXAiICIkcm10bXAiICYmIGV4aXQgJHJldCcgMAotICAgIHRyYXAgJyhleGl0ICQ/KTsgZXhpdCcgMSAyIDEzIDE1CiAKICAgICAjIENvcHkgdGhlIGZpbGUgbmFtZSB0byB0aGUgdGVtcCBuYW1lLgotICAgICRkb2l0ICRjcHByb2cgIiRzcmMiICIkZHN0dG1wIiAmJgorICAgICh1bWFzayAkY3BfdW1hc2sgJiYgJGRvaXRfZXhlYyAkY3Bwcm9nICIkc3JjIiAiJGRzdHRtcCIpICYmCiAKICAgICAjIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMuCiAgICAgIwpAQCAtMjczLDUxICs0NTgsNjMgQEAKICAgICAjIGlnbm9yZSBlcnJvcnMgZnJvbSBhbnkgb2YgdGhlc2UsIGp1c3QgbWFrZSBzdXJlIG5vdCB0byBpZ25vcmUKICAgICAjIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQuCiAgICAgIwotICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3R0bXAiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3R0bXAiOyB9IFwKLSAgICAgICYmIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hvd25jbWQiIHx8ICRkb2l0ICRjaG93bmNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRjaGdycGNtZCIgfHwgJGRvaXQgJGNoZ3JwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJHN0cmlwY21kIiB8fCAkZG9pdCAkc3RyaXBjbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRjaG1vZGNtZCAkbW9kZSAiJGRzdHRtcCI7IH0gJiYKIAotICAgICMgTm93IHJlbmFtZSB0aGUgZmlsZSB0byB0aGUgcmVhbCBkZXN0aW5hdGlvbi4KLSAgICB7ICRkb2l0ICRtdmNtZCAtZiAiJGRzdHRtcCIgIiRkc3RkaXIvJGRzdGZpbGUiIDI+L2Rldi9udWxsIFwKLSAgICAgIHx8IHsKLQkgICAjIFRoZSByZW5hbWUgZmFpbGVkLCBwZXJoYXBzIGJlY2F1c2UgbXYgY2FuJ3QgcmVuYW1lIHNvbWV0aGluZyBlbHNlCi0JICAgIyB0byBpdHNlbGYsIG9yIHBlcmhhcHMgYmVjYXVzZSBtdiBpcyBzbyBhbmNpZW50IHRoYXQgaXQgZG9lcyBub3QKLQkgICAjIHN1cHBvcnQgLWYuCisgICAgIyBJZiAtQywgZG9uJ3QgYm90aGVyIHRvIGNvcHkgaWYgaXQgd291bGRuJ3QgY2hhbmdlIHRoZSBmaWxlLgorICAgIGlmICRjb3B5X29uX2NoYW5nZSAmJgorICAgICAgIG9sZD1gTENfQUxMPUMgbHMgLWRsTCAiJGRzdCIJMj4vZGV2L251bGxgICYmCisgICAgICAgbmV3PWBMQ19BTEw9QyBscyAtZGxMICIkZHN0dG1wIgkyPi9kZXYvbnVsbGAgJiYKIAotCSAgICMgTm93IHJlbW92ZSBvciBtb3ZlIGFzaWRlIGFueSBvbGQgZmlsZSBhdCBkZXN0aW5hdGlvbiBsb2NhdGlvbi4KLQkgICAjIFdlIHRyeSB0aGlzIHR3byB3YXlzIHNpbmNlIHJtIGNhbid0IHVubGluayBpdHNlbGYgb24gc29tZQotCSAgICMgc3lzdGVtcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGZpbGUgbWlnaHQgYmUgYnVzeSBmb3Igb3RoZXIKLQkgICAjIHJlYXNvbnMuICBJbiB0aGlzIGNhc2UsIHRoZSBmaW5hbCBjbGVhbnVwIG1pZ2h0IGZhaWwgYnV0IHRoZSBuZXcKLQkgICAjIGZpbGUgc2hvdWxkIHN0aWxsIGluc3RhbGwgc3VjY2Vzc2Z1bGx5LgotCSAgIHsKLQkgICAgIGlmIHRlc3QgLWYgIiRkc3RkaXIvJGRzdGZpbGUiOyB0aGVuCi0JICAgICAgICRkb2l0ICRybWNtZCAtZiAiJGRzdGRpci8kZHN0ZmlsZSIgMj4vZGV2L251bGwgXAotCSAgICAgICB8fCAkZG9pdCAkbXZjbWQgLWYgIiRkc3RkaXIvJGRzdGZpbGUiICIkcm10bXAiIDI+L2Rldi9udWxsIFwKLQkgICAgICAgfHwgewotCQkgZWNobyAiJDA6IGNhbm5vdCB1bmxpbmsgb3IgcmVuYW1lICRkc3RkaXIvJGRzdGZpbGUiID4mMgotCQkgKGV4aXQgMSk7IGV4aXQgMQotCSAgICAgICB9Ci0JICAgICBlbHNlCi0JICAgICAgIDoKLQkgICAgIGZpCi0JICAgfSAmJgorICAgICAgIGV2YWwgIiRpbml0aWFsaXplX3Bvc2l4X2dsb2IiICYmCisgICAgICAgJHBvc2l4X2dsb2Igc2V0IC1mICYmCisgICAgICAgc2V0IFggJG9sZCAmJiBvbGQ9OiQyOiQ0OiQ1OiQ2ICYmCisgICAgICAgc2V0IFggJG5ldyAmJiBuZXc9OiQyOiQ0OiQ1OiQ2ICYmCisgICAgICAgJHBvc2l4X2dsb2Igc2V0ICtmICYmCiAKLQkgICAjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCi0JICAgJGRvaXQgJG12Y21kICIkZHN0dG1wIiAiJGRzdGRpci8kZHN0ZmlsZSIKLQkgfQotICAgIH0KLSAgZmkgfHwgeyAoZXhpdCAxKTsgZXhpdCAxOyB9CisgICAgICAgdGVzdCAiJG9sZCIgPSAiJG5ldyIgJiYKKyAgICAgICAkY21wcHJvZyAiJGRzdCIgIiRkc3R0bXAiID4vZGV2L251bGwgMj4mMQorICAgIHRoZW4KKyAgICAgIHJtIC1mICIkZHN0dG1wIgorICAgIGVsc2UKKyAgICAgICMgUmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorICAgICAgJGRvaXQgJG12Y21kIC1mICIkZHN0dG1wIiAiJGRzdCIgMj4vZGV2L251bGwgfHwKKworICAgICAgIyBUaGUgcmVuYW1lIGZhaWxlZCwgcGVyaGFwcyBiZWNhdXNlIG12IGNhbid0IHJlbmFtZSBzb21ldGhpbmcgZWxzZQorICAgICAgIyB0byBpdHNlbGYsIG9yIHBlcmhhcHMgYmVjYXVzZSBtdiBpcyBzbyBhbmNpZW50IHRoYXQgaXQgZG9lcyBub3QKKyAgICAgICMgc3VwcG9ydCAtZi4KKyAgICAgIHsKKwkjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xkIGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCisJIyBXZSB0cnkgdGhpcyB0d28gd2F5cyBzaW5jZSBybSBjYW4ndCB1bmxpbmsgaXRzZWxmIG9uIHNvbWUKKwkjIHN5c3RlbXMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIG1pZ2h0IGJlIGJ1c3kgZm9yIG90aGVyCisJIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xlYW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3CisJIyBmaWxlIHNob3VsZCBzdGlsbCBpbnN0YWxsIHN1Y2Nlc3NmdWxseS4KKwl7CisJICB0ZXN0ICEgLWYgIiRkc3QiIHx8CisJICAkZG9pdCAkcm1jbWQgLWYgIiRkc3QiIDI+L2Rldi9udWxsIHx8CisJICB7ICRkb2l0ICRtdmNtZCAtZiAiJGRzdCIgIiRybXRtcCIgMj4vZGV2L251bGwgJiYKKwkgICAgeyAkZG9pdCAkcm1jbWQgLWYgIiRybXRtcCIgMj4vZGV2L251bGw7IDo7IH0KKwkgIH0gfHwKKwkgIHsgZWNobyAiJDA6IGNhbm5vdCB1bmxpbmsgb3IgcmVuYW1lICRkc3QiID4mMgorCSAgICAoZXhpdCAxKTsgZXhpdCAxCisJICB9CisJfSAmJgorCisJIyBOb3cgcmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorCSRkb2l0ICRtdmNtZCAiJGRzdHRtcCIgIiRkc3QiCisgICAgICB9CisgICAgZmkgfHwgZXhpdCAxCisKKyAgICB0cmFwICcnIDAKKyAgZmkKIGRvbmUKIAotIyBUaGUgZmluYWwgbGl0dGxlIHRyaWNrIHRvICJjb3JyZWN0bHkiIHBhc3MgdGhlIGV4aXQgc3RhdHVzIHRvIHRoZSBleGl0IHRyYXAuCi17Ci0gIChleGl0IDApOyBleGl0IDAKLX0KLQogIyBMb2NhbCB2YXJpYWJsZXM6CiAjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKICMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgogIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKLSMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgogIyBFbmQ6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYmZmaS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGU0OTAyCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJmZmkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDU5NSBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTZDNDNDQkRDMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkJEMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLzsgfTsKKwkJNkM0M0NCREQxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkJGMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgKi87IH07CisJCTZDNDNDQkRFMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JDMDE1MzRGNzZGMDAxNjIzNjQgLyogdHJhbXBvbGluZS5TICovOyB9OworCQk2QzQzQ0JFNjE1MzRGNzZGMDAxNjIzNjQgLyogZGFyd2luLlMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JDOTE1MzRGNzZGMDAxNjIzNjQgLyogZGFyd2luLlMgKi87IH07CisJCTZDNDNDQkU4MTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQkNCMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLzsgfTsKKwkJNkM0M0NCRTkxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaTY0LmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0JDQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpNjQuYyAqLzsgfTsKKwkJNkM0M0NDMUYxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbi5TIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMDUxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbi5TICovOyB9OworCQk2QzQzQ0MyMDE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luNjQuUyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzA2MTUzNEY3NzgwMDE2MjM2NCAvKiBkYXJ3aW42NC5TICovOyB9OworCQk2QzQzQ0MyMTE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0MwNzE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgKi87IH07CisJCTZDNDNDQzIyMTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMDgxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaTY0LmMgKi87IH07CisJCTZDNDNDQzJGMTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMjgxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgKi87IH07CisJCTZDNDNDQzMwMTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMjgxNTM0RjdCRTAwMTYyMzY0IC8qIGNsb3N1cmVzLmMgKi87IH07CisJCTZDNDNDQzMxMTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMjkxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgKi87IH07CisJCTZDNDNDQzMyMTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMjkxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgKi87IH07CisJCTZDNDNDQzMzMTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkExNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgKi87IH07CisJCTZDNDNDQzM0MTUzNEY3QkUwMDE2MjM2NCAvKiBkbG1hbGxvYy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkExNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgKi87IH07CisJCTZDNDNDQzM1MTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJCMTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyAqLzsgfTsKKwkJNkM0M0NDMzYxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkIxNTM0RjdCRTAwMTYyMzY0IC8qIGphdmFfcmF3X2FwaS5jICovOyB9OworCQk2QzQzQ0MzNzE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJDMTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jICovOyB9OworCQk2QzQzQ0MzODE1MzRGN0JFMDAxNjIzNjQgLyogcHJlcF9jaWYuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJDMTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jICovOyB9OworCQk2QzQzQ0MzOTE1MzRGN0JFMDAxNjIzNjQgLyogcmF3X2FwaS5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkQxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyAqLzsgfTsKKwkJNkM0M0NDM0ExNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzJEMTUzNEY3QkUwMDE2MjM2NCAvKiByYXdfYXBpLmMgKi87IH07CisJCTZDNDNDQzNCMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkUxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgKi87IH07CisJCTZDNDNDQzNDMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDMkUxNTM0RjdCRTAwMTYyMzY0IC8qIHR5cGVzLmMgKi87IH07CisJCTZDNDNDQzk3MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzhEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzk4MTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M4RTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOTkxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M4RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQzlBMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5MDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOUIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovOyB9OworCQk2QzQzQ0M5QzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQzkyMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovOyB9OworCQk2QzQzQ0M5RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ194ODZfNjQuaCAqLzsgfTsKKwkJNkM0M0NDOUUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDOTQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDOUYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5NTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0EwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0M5NjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQUQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQUUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9hcm12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9hcm12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQUYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk2QzQzQ0NCMDE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovOyB9OworCQk2QzQzQ0NCMjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBNzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnX2FybXY3LmggKi87IH07CisJCTZDNDNDQ0IzMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQTgxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi87IH07CisJCTZDNDNDQ0I0MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNDNDQ0E5MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTZDNDNDQ0I1MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBQTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0M0NDQUIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNkM0M0NDQjcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzQzQ0NBQzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTZDNDNDQjNEMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliZmZpLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTZDNDNDQkJEMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQkJGMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IHN5c3YuUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NCQzAxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYXNtOyBwYXRoID0gdHJhbXBvbGluZS5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JDOTE1MzRGNzZGMDAxNjIzNjQgLyogZGFyd2luLlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IGRhcndpbi5TOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JDQjE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgcGF0aCA9IGZmaS5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0JDQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpNjQuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpNjQuYzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMDUxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbi5TICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5hc207IHBhdGggPSBkYXJ3aW4uUzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDMDYxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmFzbTsgcGF0aCA9IGRhcndpbjY0LlM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzA3MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBwYXRoID0gZmZpLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzA4MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBmZmk2NC5jOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0MyODE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gY2xvc3VyZXMuYzsgcGF0aCA9IHNyYy9jbG9zdXJlcy5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzI5MTUzNEY3QkUwMDE2MjM2NCAvKiBkZWJ1Zy5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBkZWJ1Zy5jOyBwYXRoID0gc3JjL2RlYnVnLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkExNTM0RjdCRTAwMTYyMzY0IC8qIGRsbWFsbG9jLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGRsbWFsbG9jLmM7IHBhdGggPSBzcmMvZGxtYWxsb2MuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyQjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuYzsgbmFtZSA9IGphdmFfcmF3X2FwaS5jOyBwYXRoID0gc3JjL2phdmFfcmF3X2FwaS5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzJDMTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IG5hbWUgPSBwcmVwX2NpZi5jOyBwYXRoID0gc3JjL3ByZXBfY2lmLmM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJNkM0M0NDMkQxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gcmF3X2FwaS5jOyBwYXRoID0gc3JjL3Jhd19hcGkuYzsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk2QzQzQ0MyRTE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5jOyBuYW1lID0gdHlwZXMuYzsgcGF0aCA9IHNyYy90eXBlcy5jOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTZDNDNDQzhEMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzhFMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfY29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9jb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOEYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV9pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzkwMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmlfeDg2XzY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaV94ODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTExNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZ19pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzkzMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWdfeDg2XzY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZ194ODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTQxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDOTUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldF9pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQzk2MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXRfeDg2XzY0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldF94ODZfNjQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9hcm12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmlfYXJtdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2NvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2QzQzQ0NBNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpX2kzODYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZmljb25maWdfYXJtdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQTgxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaWNvbmZpZ19pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0E5MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZmZpdGFyZ2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZDNDNDQ0FBMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldF9hcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQUIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm12Ny5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmZml0YXJnZXRfYXJtdjcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0M0NDQUMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGZmaXRhcmdldF9pMzg2Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY2Rjk4MEJBMTQ3Mzg2MTMwMDA4RjEyMSAvKiBsaWJmZmkuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliZmZpLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNkM0M0NCM0ExNTM0RTlEMTAwMTYyMzY0IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRjZGOTgwQjcxNDczODYxMzAwMDhGMTIxIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJNkM0M0NCQUYxNTM0Rjc2RjAwMTYyMzY0IC8qIGlPUyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDQTExNTM1MDM5NjAwMTYyMzY0IC8qIGluY2x1ZGUgKi8sCisJCQkJNkM0M0NCQkIxNTM0Rjc2RjAwMTYyMzY0IC8qIHNyYyAqLywKKwkJCSk7CisJCQluYW1lID0gaU9TOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQkJCMTUzNEY3NkYwMDE2MjM2NCAvKiBzcmMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQkM4MTUzNEY3NkYwMDE2MjM2NCAvKiB4ODYgKi8sCisJCQkJNkM0M0NCQkMxNTM0Rjc2RjAwMTYyMzY0IC8qIGFybSAqLywKKwkJCSk7CisJCQlwYXRoID0gc3JjOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCQkMxNTM0Rjc2RjAwMTYyMzY0IC8qIGFybSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NCQkQxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jICovLAorCQkJCTZDNDNDQkJGMTUzNEY3NkYwMDE2MjM2NCAvKiBzeXN2LlMgKi8sCisJCQkJNkM0M0NCQzAxNTM0Rjc2RjAwMTYyMzY0IC8qIHRyYW1wb2xpbmUuUyAqLywKKwkJCSk7CisJCQlwYXRoID0gYXJtOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCQzgxNTM0Rjc2RjAwMTYyMzY0IC8qIHg4NiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NCQzkxNTM0Rjc2RjAwMTYyMzY0IC8qIGRhcndpbi5TICovLAorCQkJCTZDNDNDQkNCMTUzNEY3NkYwMDE2MjM2NCAvKiBmZmkuYyAqLywKKwkJCQk2QzQzQ0JDQzE1MzRGNzZGMDAxNjIzNjQgLyogZmZpNjQuYyAqLywKKwkJCSk7CisJCQlwYXRoID0geDg2OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NCRjAxNTM0Rjc3ODAwMTYyMzY0IC8qIE9TIFggKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQzhDMTUzNTAzMjYwMDE2MjM2NCAvKiBpbmNsdWRlICovLAorCQkJCTZDNDNDQkZDMTUzNEY3NzgwMDE2MjM2NCAvKiBzcmMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJPUyBYIjsKKwkJCXBhdGggPSBvc3g7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0JGQzE1MzRGNzc4MDAxNjIzNjQgLyogc3JjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0MwNDE1MzRGNzc4MDAxNjIzNjQgLyogeDg2ICovLAorCQkJKTsKKwkJCXBhdGggPSBzcmM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0MwNDE1MzRGNzc4MDAxNjIzNjQgLyogeDg2ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0MwNTE1MzRGNzc4MDAxNjIzNjQgLyogZGFyd2luLlMgKi8sCisJCQkJNkM0M0NDMDYxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgKi8sCisJCQkJNkM0M0NDMDcxNTM0Rjc3ODAwMTYyMzY0IC8qIGZmaS5jICovLAorCQkJCTZDNDNDQzA4MTUzNEY3NzgwMDE2MjM2NCAvKiBmZmk2NC5jICovLAorCQkJKTsKKwkJCXBhdGggPSB4ODY7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2QzQzQ0MzRDE1MzRGN0M0MDAxNjIzNjQgLyogc3JjICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0MyODE1MzRGN0JFMDAxNjIzNjQgLyogY2xvc3VyZXMuYyAqLywKKwkJCQk2QzQzQ0MyOTE1MzRGN0JFMDAxNjIzNjQgLyogZGVidWcuYyAqLywKKwkJCQk2QzQzQ0MyQTE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyAqLywKKwkJCQk2QzQzQ0MyQjE1MzRGN0JFMDAxNjIzNjQgLyogamF2YV9yYXdfYXBpLmMgKi8sCisJCQkJNkM0M0NDMkMxNTM0RjdCRTAwMTYyMzY0IC8qIHByZXBfY2lmLmMgKi8sCisJCQkJNkM0M0NDMkQxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyAqLywKKwkJCQk2QzQzQ0MyRTE1MzRGN0JFMDAxNjIzNjQgLyogdHlwZXMuYyAqLywKKwkJCSk7CisJCQluYW1lID0gc3JjOworCQkJcGF0aCA9IGlvczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZDNDNDQzhDMTUzNTAzMjYwMDE2MjM2NCAvKiBpbmNsdWRlICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk2QzQzQ0M4RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggKi8sCisJCQkJNkM0M0NDOEUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLywKKwkJCQk2QzQzQ0M4RjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLywKKwkJCQk2QzQzQ0M5MDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oICovLAorCQkJCTZDNDNDQzkxMTUzNTAzMjYwMDE2MjM2NCAvKiBmZmljb25maWcuaCAqLywKKwkJCQk2QzQzQ0M5MjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX2kzODYuaCAqLywKKwkJCQk2QzQzQ0M5MzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oICovLAorCQkJCTZDNDNDQzk0MTUzNTAzMjYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLywKKwkJCQk2QzQzQ0M5NTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLywKKwkJCQk2QzQzQ0M5NjE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBpbmNsdWRlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNkM0M0NDQTExNTM1MDM5NjAwMTYyMzY0IC8qIGluY2x1ZGUgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTZDNDNDQ0EyMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmkuaCAqLywKKwkJCQk2QzQzQ0NBMzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2FybXY3LmggKi8sCisJCQkJNkM0M0NDQTQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCAqLywKKwkJCQk2QzQzQ0NBNTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpX2kzODYuaCAqLywKKwkJCQk2QzQzQ0NBNjE1MzUwMzk2MDAxNjIzNjQgLyogZmZpY29uZmlnLmggKi8sCisJCQkJNkM0M0NDQTcxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oICovLAorCQkJCTZDNDNDQ0E4MTUzNTAzOTYwMDE2MjM2NCAvKiBmZmljb25maWdfaTM4Ni5oICovLAorCQkJCTZDNDNDQ0E5MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXQuaCAqLywKKwkJCQk2QzQzQ0NBQTE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2FybS5oICovLAorCQkJCTZDNDNDQ0FCMTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCAqLywKKwkJCQk2QzQzQ0NBQzE1MzUwMzk2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X2kzODYuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW5jbHVkZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUY2QjA4Mzk1MTQ3MjFFRTUwMDMxRDhBMSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkM0M0NDM0QxNTM0RjdDNDAwMTYyMzY0IC8qIHNyYyAqLywKKwkJCQk2QzQzQ0JBRjE1MzRGNzZGMDAxNjIzNjQgLyogaU9TICovLAorCQkJCTZDNDNDQkYwMTUzNEY3NzgwMDE2MjM2NCAvKiBPUyBYICovLAorCQkJCUY2Rjk4MEM2MTQ3Mzg2MjYwMDA4RjEyMSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlGNkY5ODBDNjE0NzM4NjI2MDAwOEYxMjEgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUY2Rjk4MEJBMTQ3Mzg2MTMwMDA4RjEyMSAvKiBsaWJmZmkuYSAqLywKKwkJCQk2QzQzQ0IzRDE1MzRFOUQxMDAxNjIzNjQgLyogbGliZmZpLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJcGF0aCA9IC4uLy4uOworCQkJc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNkM0M0NCM0IxNTM0RTlEMTAwMTYyMzY0IC8qIEhlYWRlcnMgKi8gPSB7CisJCQlpc2EgPSBQQlhIZWFkZXJzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk2QzQzQ0M5NzE1MzUwMzI2MDAxNjIzNjQgLyogZmZpLmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5ODE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX2NvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOTkxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaV9pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5QTE1MzUwMzI2MDAxNjIzNjQgLyogZmZpX3g4Nl82NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUUxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUYxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaXRhcmdldF9pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0NBMDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpdGFyZ2V0X3g4Nl82NC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUIxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDOUMxNTM1MDMyNjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCQk2QzQzQ0M5RDE1MzUwMzI2MDAxNjIzNjQgLyogZmZpY29uZmlnX3g4Nl82NC5oIGluIEhlYWRlcnMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUY2Rjk4MEI4MTQ3Mzg2MTMwMDA4RjEyMSAvKiBIZWFkZXJzICovID0geworCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNkM0M0NDQUQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQUUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9hcm12Ny5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQUYxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaV9jb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0IwMTUzNTAzOTYwMDE2MjM2NCAvKiBmZmlfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjQxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjUxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaXRhcmdldF9hcm0uaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0I2MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfYXJtdjcuaCBpbiBIZWFkZXJzICovLAorCQkJCTZDNDNDQ0I3MTUzNTAzOTYwMDE2MjM2NCAvKiBmZml0YXJnZXRfaTM4Ni5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjExNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjIxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19hcm12Ny5oIGluIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NDQjMxNTM1MDM5NjAwMTYyMzY0IC8qIGZmaWNvbmZpZ19pMzg2LmggaW4gSGVhZGVycyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTZDNDNDQjNDMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkgT1MgWCAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2QzQzQ0I0QTE1MzRFOUQxMDAxNjIzNjQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYmZmaSBPUyBYIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTZDNDNDQzQwMTUzNEZGM0IwMDE2MjM2NCAvKiBHZW5lcmF0ZSBTb3VyY2UgYW5kIEhlYWRlcnMgKi8sCisJCQkJNkM0M0NCMzkxNTM0RTlEMTAwMTYyMzY0IC8qIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCM0ExNTM0RTlEMTAwMTYyMzY0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJNkM0M0NCM0IxNTM0RTlEMTAwMTYyMzY0IC8qIEhlYWRlcnMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJsaWJmZmkgT1MgWCI7CisJCQlwcm9kdWN0TmFtZSA9ICJmZmkgT1MgWCI7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gNkM0M0NCM0QxNTM0RTlEMTAwMTYyMzY0IC8qIGxpYmZmaS5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisJCUY2Rjk4MEI5MTQ3Mzg2MTMwMDA4RjEyMSAvKiBsaWJmZmkgaU9TICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEY2Rjk4MEM0MTQ3Mzg2MTMwMDA4RjEyMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliZmZpIGlPUyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk2QzQzQ0MzRTE1MzRGOEUyMDAxNjIzNjQgLyogR2VuZXJhdGUgVHJhbXBvbGluZSAqLywKKwkJCQk2QzQzQ0MzRjE1MzRGRjFCMDAxNjIzNjQgLyogR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzICovLAorCQkJCUY2Rjk4MEI2MTQ3Mzg2MTMwMDA4RjEyMSAvKiBTb3VyY2VzICovLAorCQkJCUY2Rjk4MEI3MTQ3Mzg2MTMwMDA4RjEyMSAvKiBGcmFtZXdvcmtzICovLAorCQkJCUY2Rjk4MEI4MTQ3Mzg2MTMwMDA4RjEyMSAvKiBIZWFkZXJzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAibGliZmZpIGlPUyI7CisJCQlwcm9kdWN0TmFtZSA9IGZmaTsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSBGNkY5ODBCQTE0NzM4NjEzMDAwOEYxMjEgLyogbGliZmZpLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJRjZCMDgzOTcxNDcyMUVFNTAwMzFEOEExIC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA0MzA7CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEY2QjA4MzlBMTQ3MjFFRTUwMDMxRDhBMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxpYmZmaSIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gRjZCMDgzOTUxNDcyMUVFNTAwMzFEOEExOworCQkJcHJvZHVjdFJlZkdyb3VwID0gRjZCMDgzOTUxNDcyMUVFNTAwMzFEOEExOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCUY2Rjk4MEI5MTQ3Mzg2MTMwMDA4RjEyMSAvKiBsaWJmZmkgaU9TICovLAorCQkJCTZDNDNDQjNDMTUzNEU5RDEwMDE2MjM2NCAvKiBsaWJmZmkgT1MgWCAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTZDNDNDQzNFMTUzNEY4RTIwMDE2MjM2NCAvKiBHZW5lcmF0ZSBUcmFtcG9saW5lICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBUcmFtcG9saW5lIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL3Vzci9iaW4vcHl0aG9uOworCQkJc2hlbGxTY3JpcHQgPSAiaW1wb3J0IHN1YnByb2Nlc3NcbmltcG9ydCByZVxuaW1wb3J0IG9zXG5pbXBvcnQgZXJybm9cbmltcG9ydCBzeXNcblxuZGVmIG1haW4oKTpcbiAgICB3aXRoIG9wZW4oJ3NyYy9hcm0vdHJhbXBvbGluZS5TJywgJ3cnKSBhcyB0cmFtcF9vdXQ6XG4gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsnYmFzaCcsICdzcmMvYXJtL2dlbnRyYW1wLnNoJ10sIHN0ZG91dD10cmFtcF9vdXQpXG4gICAgICAgIHAud2FpdCgpXG5cbmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6XG4gICAgbWFpbigpIjsKKwkJfTsKKwkJNkM0M0NDM0YxNTM0RkYxQjAwMTYyMzY0IC8qIEdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIi91c3IvYmluL3B5dGhvbiBnZW5lcmF0ZS1pb3Mtc291cmNlLWFuZC1oZWFkZXJzLnB5IjsKKwkJfTsKKwkJNkM0M0NDNDAxNTM0RkYzQjAwMTYyMzY0IC8qIEdlbmVyYXRlIFNvdXJjZSBhbmQgSGVhZGVycyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgU291cmNlIGFuZCBIZWFkZXJzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIi91c3IvYmluL3B5dGhvbiBnZW5lcmF0ZS1vc3gtc291cmNlLWFuZC1oZWFkZXJzLnB5IjsKKwkJfTsKKy8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTZDNDNDQjM5MTUzNEU5RDEwMDE2MjM2NCAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNkM0M0NDMUYxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbi5TIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMjAxNTM0Rjc3ODAwMTYyMzY0IC8qIGRhcndpbjY0LlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MyMTE1MzRGNzc4MDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MyMjE1MzRGNzc4MDAxNjIzNjQgLyogZmZpNjQuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzMwMTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzIxNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzNDE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM2MTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM4MTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDM0ExNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzNDMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUY2Rjk4MEI2MTQ3Mzg2MTMwMDA4RjEyMSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNkM0M0NCREMxNTM0Rjc2RjAwMTYyMzY0IC8qIGZmaS5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NCREQxNTM0Rjc2RjAwMTYyMzY0IC8qIHN5c3YuUyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQkRFMTUzNEY3NkYwMDE2MjM2NCAvKiB0cmFtcG9saW5lLlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JFNjE1MzRGNzZGMDAxNjIzNjQgLyogZGFyd2luLlMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JFODE1MzRGNzZGMDAxNjIzNjQgLyogZmZpLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0JFOTE1MzRGNzZGMDAxNjIzNjQgLyogZmZpNjQuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzJGMTUzNEY3QkUwMDE2MjM2NCAvKiBjbG9zdXJlcy5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzExNTM0RjdCRTAwMTYyMzY0IC8qIGRlYnVnLmMgaW4gU291cmNlcyAqLywKKwkJCQk2QzQzQ0MzMzE1MzRGN0JFMDAxNjIzNjQgLyogZGxtYWxsb2MuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM1MTUzNEY3QkUwMDE2MjM2NCAvKiBqYXZhX3Jhd19hcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzM3MTUzNEY3QkUwMDE2MjM2NCAvKiBwcmVwX2NpZi5jIGluIFNvdXJjZXMgKi8sCisJCQkJNkM0M0NDMzkxNTM0RjdCRTAwMTYyMzY0IC8qIHJhd19hcGkuYyBpbiBTb3VyY2VzICovLAorCQkJCTZDNDNDQzNCMTUzNEY3QkUwMDE2MjM2NCAvKiB0eXBlcy5jIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTZDNDNDQjRCMTUzNEU5RDEwMDE2MjM2NCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzMyXzY0X0JJVCkiOworCQkJCURTVFJPT1QgPSAvdG1wL2ZmaS5kc3Q7CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJCSJcIiQoU1lTVEVNX0FQUFNfRElSKS9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL0xpYnJhcnkvRnJhbWV3b3Jrc1wiIiwKKwkJCQkpOworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjY7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSBmZmk7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTZDNDNDQjRDMTUzNEU5RDEwMDE2MjM2NCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfNjRfQklUKSI7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJRFNUUk9PVCA9IC90bXAvZmZpLmRzdDsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkJIlwiJChTWVNURU1fQVBQU19ESVIpL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvTGlicmFyeS9GcmFtZXdvcmtzXCIiLAorCQkJCSk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNjsKKwkJCQlQUk9EVUNUX05BTUUgPSBmZmk7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRjZCMDgzQUIxNDcyMUVFNTAwMzFEOEExIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfMzJfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBTFVFID0gTk87CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSBpb3MvaW5jbHVkZTsKKwkJCQlTREtST09UID0gaXBob25lb3M7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlGNkIwODNBQzE0NzIxRUU1MDAzMUQ4QTEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzMyX0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gIiI7CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBTFVFID0gTk87CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSBpb3MvaW5jbHVkZTsKKwkJCQlTREtST09UID0gaXBob25lb3M7CisJCQkJVkFMSURBVEVfUFJPRFVDVCA9IFlFUzsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRjZGOTgwQzIxNDczODYxMzAwMDhGMTIxIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFSQ0hTID0gKAorCQkJCQlhcm12NiwKKwkJCQkJYXJtdjcsCisJCQkJKTsKKwkJCQlEU1RST09UID0gL3RtcC9mZmkuZHN0OworCQkJCUdDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CisJCQkJR0NDX1RIVU1CX1NVUFBPUlQgPSBOTzsKKwkJCQlJUEhPTkVPU19ERVBMT1lNRU5UX1RBUkdFVCA9IDQuMDsKKwkJCQlPVEhFUl9MREZMQUdTID0gIi1PYmpDIjsKKwkJCQlQUk9EVUNUX05BTUUgPSBmZmk7CisJCQkJU0tJUF9JTlNUQUxMID0gWUVTOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRjZGOTgwQzMxNDczODYxMzAwMDhGMTIxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQVJDSFMgPSAoCisJCQkJCWFybXY2LAorCQkJCQlhcm12NywKKwkJCQkpOworCQkJCURTVFJPT1QgPSAvdG1wL2ZmaS5kc3Q7CisJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKKwkJCQlHQ0NfVEhVTUJfU1VQUE9SVCA9IE5POworCQkJCUlQSE9ORU9TX0RFUExPWU1FTlRfVEFSR0VUID0gNC4wOworCQkJCU9USEVSX0xERkxBR1MgPSAiLU9iakMiOworCQkJCVBST0RVQ1RfTkFNRSA9IGZmaTsKKwkJCQlTS0lQX0lOU1RBTEwgPSBZRVM7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJNkM0M0NCNEExNTM0RTlEMTAwMTYyMzY0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJmZmkgT1MgWCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk2QzQzQ0I0QjE1MzRFOUQxMDAxNjIzNjQgLyogRGVidWcgKi8sCisJCQkJNkM0M0NCNEMxNTM0RTlEMTAwMTYyMzY0IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRjZCMDgzOUExNDcyMUVFNTAwMzFEOEExIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGliZmZpIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUY2QjA4M0FCMTQ3MjFFRTUwMDMxRDhBMSAvKiBEZWJ1ZyAqLywKKwkJCQlGNkIwODNBQzE0NzIxRUU1MDAzMUQ4QTEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGNkY5ODBDNDE0NzM4NjEzMDAwOEYxMjEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYmZmaSBpT1MiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjZGOTgwQzIxNDczODYxMzAwMDhGMTIxIC8qIERlYnVnICovLAorCQkJCUY2Rjk4MEMzMTQ3Mzg2MTMwMDA4RjEyMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gRjZCMDgzOTcxNDcyMUVFNTAwMzFEOEExIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9saWJ0b29sLXZlcnNpb24gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYnRvb2wtdmVyc2lvbgppbmRleCBiOGI4MGUwLi45NWY0OGM1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYnRvb2wtdmVyc2lvbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL2xpYnRvb2wtdmVyc2lvbgpAQCAtMjYsNCArMjYsNCBAQAogIyAgICByZWxlYXNlLCB0aGVuIHNldCBhZ2UgdG8gMC4KICMKICMgQ1VSUkVOVDpSRVZJU0lPTjpBR0UKLTU6MTA6MAorNjowOjAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbHRtYWluLnNoIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9sdG1haW4uc2gKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCA2OTM5ZGNjLi5jMjg1MmQ4Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbHRtYWluLnNoCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbHRtYWluLnNoCkBAIC0xLDkgKzEsOSBAQAotIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KIAotIyBsdG1haW4uc2ggKEdOVSBsaWJ0b29sKSAyLjIuNgorIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40LjIKICMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KIApAQCAtMzIsNTAgKzMyLDU3IEBACiAjCiAjIFByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgogIwotIyAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSMgICAgIC0tZGVidWcgICAgICAgICAgICAgIGVuYWJsZSB2ZXJib3NlIHNoZWxsIHRyYWNpbmcKLSMgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0jICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSMgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCi0jICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCi0jICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0jICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCi0jIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0KQotIyAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgotIyAtaCwgLS1oZWxwICAgICAgICAgICAgICAgcHJpbnQgc2hvcnQgb3IgbG9uZyBoZWxwIG1lc3NhZ2UKKyMgICAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyMgICAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKyMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcworIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCisjICAgICAgIC0tbm8td2FybiAgICAgICAgICAgIGRvbid0IGRpc3BsYXkgd2FybmluZyBtZXNzYWdlcworIyAgICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCisjICAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IG1vcmUgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyB0aGFuIGRlZmF1bHQKKyMgICAgICAgLS1uby12ZXJib3NlICAgICAgICAgZG9uJ3QgcHJpbnQgdGhlIGV4dHJhIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyMgICAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgorIyAgIC1oLCAtLWhlbHAsIC0taGVscC1hbGwgICBwcmludCBzaG9ydCwgbG9uZywgb3IgZGV0YWlsZWQgaGVscCBtZXNzYWdlCiAjCiAjIE1PREUgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKICMKLSMgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKLSMgICAgICAgY29tcGlsZSAgICAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKLSMgICAgICAgZXhlY3V0ZSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCi0jICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCi0jICAgICAgIGluc3RhbGwgICAgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcwotIyAgICAgICBsaW5rICAgICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCi0jICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQorIyAgICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5CisjICAgICAgICAgY29tcGlsZSAgICAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKKyMgICAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KKyMgICAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcworIyAgICAgICAgIGluc3RhbGwgICAgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcworIyAgICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKKyMgICAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKICMKLSMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLgorIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuICBXaGVuIHBhc3NlZCBhcyBmaXJzdCBvcHRpb24sCisjIGAtLW1vZGU9TU9ERScgbWF5IGJlIGFiYnJldmlhdGVkIGFzIGBNT0RFJyBvciBhIHVuaXF1ZSBhYmJyZXZpYXRpb24gb2YgdGhhdC4KICMgVHJ5IGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT1NT0RFJyBmb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIE1PREUuCiAjCiAjIFdoZW4gcmVwb3J0aW5nIGEgYnVnLCBwbGVhc2UgZGVzY3JpYmUgYSB0ZXN0IGNhc2UgdG8gcmVwcm9kdWNlIGl0IGFuZAogIyBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CiAjCi0jICAgICAgIGhvc3QtdHJpcGxldDoJJGhvc3QKLSMgICAgICAgc2hlbGw6CQkkU0hFTEwKLSMgICAgICAgY29tcGlsZXI6CQkkTFRDQwotIyAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUwotIyAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQotIyAgICAgICAkcHJvZ25hbWU6CQkoR05VIGxpYnRvb2wpIDIuMi42Ci0jICAgICAgIGF1dG9tYWtlOgkJJGF1dG9tYWtlX3ZlcnNpb24KLSMgICAgICAgYXV0b2NvbmY6CQkkYXV0b2NvbmZfdmVyc2lvbgorIyAgICAgICAgIGhvc3QtdHJpcGxldDoJJGhvc3QKKyMgICAgICAgICBzaGVsbDoJCSRTSEVMTAorIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKKyMgICAgICAgICBjb21waWxlciBmbGFnczoJCSRMVENGTEFHUworIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCisjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNC4yIERlYmlhbi0yLjQuMi0xdWJ1bnR1MQorIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgorIyAgICAgICAgIGF1dG9jb25mOgkkYXV0b2NvbmZfdmVyc2lvbgogIwogIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCisjIEdOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0b29sLz4uCisjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgogCi1QUk9HUkFNPWx0bWFpbi5zaAorUFJPR1JBTT1saWJ0b29sCiBQQUNLQUdFPWxpYnRvb2wKLVZFUlNJT049Mi4yLjYKK1ZFUlNJT049IjIuNC4yIERlYmlhbi0yLjQuMi0xdWJ1bnR1MSIKIFRJTUVTVEFNUD0iIgotcGFja2FnZV9yZXZpc2lvbj0xLjMwMTIKK3BhY2thZ2VfcmV2aXNpb249MS4zMzM3CiAKICMgQmUgQm91cm5lIGNvbXBhdGlibGUKIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgpAQCAtOTEsMTAgKzk4LDE1IEBACiBCSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAogRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAogCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyQxCitfTFRFQ0hPX0VPRicKK30KKwogIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCi0jIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAotIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgogbHRfdXNlcl9sb2NhbGU9CiBsdF9zYWZlX2xvY2FsZT0KIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwpAQCAtMTA3LDI0ICsxMTksMjggQEAKIAkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKIAlmaSIKIGRvbmUKK0xDX0FMTD1DCitMQU5HVUFHRT1DCitleHBvcnQgTEFOR1VBR0UgTENfQUxMCiAKICRsdF91bnNldCBDRFBBVEgKIAogCisjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKKyMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisjIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAorIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCisjIGZ1bmN0aW9uLgorcHJvZ3BhdGg9IiQwIgogCiAKIAogOiAke0NQPSJjcCAtZiJ9Ci06ICR7RUNITz0iZWNobyJ9Ci06ICR7RUdSRVA9Ii9iaW4vZ3JlcCAtRSJ9Ci06ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9Ci06ICR7R1JFUD0iL2Jpbi9ncmVwIn0KLTogJHtMTl9TPSJsbiAtcyJ9Cit0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KIDogJHtNQUtFPSJtYWtlIn0KIDogJHtNS0RJUj0ibWtkaXIifQogOiAke01WPSJtdiAtZiJ9CiA6ICR7Uk09InJtIC1mIn0KLTogJHtTRUQ9Ii9iaW4vc2VkIn0KIDogJHtTSEVMTD0iJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0ifQogOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9CiAKQEAgLTE0NCw2ICsxNjAsMjcgQEAKIGRpcm5hbWU9InMsL1teL10qJCwsIgogYmFzZW5hbWU9InMsXi4qLywsIgogCisjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKyMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorZnVuY19kaXJuYW1lICgpCit7CisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICBmaQorfSAjIGZ1bmNfZGlybmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfYmFzZW5hbWUgZmlsZQorZnVuY19iYXNlbmFtZSAoKQoreworICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKwogIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAogIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgogIyBjYWxsOgpAQCAtMTU4LDMzICsxOTUsMTgzIEBACiAjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKIHsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKyAgICBlbHNlCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisgICAgZmkKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGJhc2VuYW1lImAKK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorZnVuY19zdHJpcG5hbWUgKCkKK3sKKyAgICBjYXNlICR7Mn0gaW4KKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisgICAgZXNhYworfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KK3BhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJworcGF0aGNkcj0ncyxeL1teL10qLCwnCityZW1vdmVkb3RwYXJ0cz0nOmRvdHNsCisJCXNAL1wuL0AvQGcKKwkJdCBkb3RzbAorCQlzLC9cLiQsLywnCitjb2xsYXBzZXNsYXNoZXM9J3NAL1x7MSxcfUAvQGcnCitmaW5hbHNsYXNoPSdzLC8qJCwvLCcKKworIyBmdW5jX25vcm1hbF9hYnNwYXRoIFBBVEgKKyMgUmVtb3ZlIGRvdWJsZWQtdXAgYW5kIHRyYWlsaW5nIHNsYXNoZXMsICIuIiBwYXRoIGNvbXBvbmVudHMsCisjIGFuZCBjYW5jZWwgb3V0IGFueSAiLi4iIHBhdGggY29tcG9uZW50cyBpbiBQQVRIIGFmdGVyIG1ha2luZworIyBpdCBhbiBhYnNvbHV0ZSBwYXRoLgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgorZnVuY19ub3JtYWxfYWJzcGF0aCAoKQoreworICAjIFN0YXJ0IGZyb20gcm9vdCBkaXIgYW5kIHJlYXNzZW1ibGUgdGhlIHBhdGguCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PQorICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPSQxCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPQorICBjYXNlICRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIGluCisgICAgIiIpCisgICAgICAjIEVtcHR5IHBhdGgsIHRoYXQganVzdCBtZWFucyAkY3dkLgorICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICJgcHdkYCIKKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICAgIHJldHVybgorICAgIDs7CisgICAgIyBUaGUgbmV4dCB0aHJlZSBlbnRyaWVzIGFyZSB1c2VkIHRvIHNwb3QgYSBydW4gb2YgcHJlY2lzZWx5CisgICAgIyB0d28gbGVhZGluZyBzbGFzaGVzIHdpdGhvdXQgdXNpbmcgbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3NlczsKKyAgICAjIHdlIHRha2UgYWR2YW50YWdlIG9mIGNhc2UncyBmaXJzdC1tYXRjaCBiZWhhdmlvdXIuCisgICAgLy8vKikKKyAgICAgICMgVW51c3VhbCBmb3JtIG9mIGFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgOzsKKyAgICAvLyopCisgICAgICAjIE5vdCBuZWNlc3NhcmlseSBhbiBvcmRpbmFyeSBwYXRoOyBQT1NJWCByZXNlcnZlcyBsZWFkaW5nICcvLycKKyAgICAgICMgYW5kIGZvciBleGFtcGxlIEN5Z3dpbiB1c2VzIGl0IHRvIGFjY2VzcyByZW1vdGUgZmlsZSBzaGFyZXMKKyAgICAgICMgb3ZlciBDSUZTL1NNQiwgc28gd2UgY29uc2VydmUgYSBsZWFkaW5nIGRvdWJsZSBzbGFzaCBpZiBmb3VuZC4KKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPS8KKyAgICA7OworICAgIC8qKQorICAgICAgIyBBYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgorICAgIDs7CisgICAgKikKKyAgICAgICMgUmVsYXRpdmUgcGF0aCwgcHJlcGVuZCAkY3dkLgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gcHdkYC8kZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aAorICAgIDs7CisgIGVzYWMKKyAgIyBDYW5jZWwgb3V0IGFsbCB0aGUgc2ltcGxlIHN0dWZmIHRvIHNhdmUgaXRlcmF0aW9ucy4gIFdlIGFsc28gd2FudAorICAjIHRoZSBwYXRoIHRvIGVuZCB3aXRoIGEgc2xhc2ggZm9yIGVhc2Ugb2YgcGFyc2luZywgc28gbWFrZSBzdXJlCisgICMgdGhlcmUgaXMgb25lIChhbmQgb25seSBvbmUpIGhlcmUuCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRyZW1vdmVkb3RwYXJ0cyIgLWUgIiRjb2xsYXBzZXNsYXNoZXMiIC1lICIkZmluYWxzbGFzaCJgCisgIHdoaWxlIDo7IGRvCisgICAgIyBQcm9jZXNzZWQgaXQgYWxsIHlldD8KKyAgICBpZiB0ZXN0ICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgPSAvIDsgdGhlbgorICAgICAgIyBJZiB3ZSBhc2NlbmRlZCB0byB0aGUgcm9vdCB1c2luZyAiLi4iIHRoZSByZXN1bHQgbWF5IGJlIGVtcHR5IG5vdy4KKyAgICAgIGlmIHRlc3QgLXogIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PS8KKyAgICAgIGZpCisgICAgICBicmVhaworICAgIGZpCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50PWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcGF0aGNhciJgCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHBhdGhjZHIiYAorICAgICMgRmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggaXQKKyAgICBjYXNlICRmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQgaW4KKyAgICAgICIiKQorICAgICAgICAjIFRyYWlsaW5nIGVtcHR5IHBhdGggY29tcG9uZW50LCBpZ25vcmUgaXQuCisgICAgICA7OworICAgICAgLi4pCisgICAgICAgICMgUGFyZW50IGRpcjsgc3RyaXAgbGFzdCBhc3NlbWJsZWQgY29tcG9uZW50IGZyb20gcmVzdWx0LgorICAgICAgICBmdW5jX2Rpcm5hbWUgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAgICAgIDs7CisgICAgICAqKQorICAgICAgICAjIEFjdHVhbCBwYXRoIGNvbXBvbmVudCwgYXBwZW5kIGl0LgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudAorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKyAgIyBSZXN0b3JlIGxlYWRpbmcgZG91YmxlLXNsYXNoIGlmIG9uZSB3YXMgZm91bmQgb24gZW50cnkuCisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAogfQogCi0jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS4KKyMgZnVuY19yZWxhdGl2ZV9wYXRoIFNSQ0RJUiBEU1RESVIKKyMgZ2VuZXJhdGVzIGEgcmVsYXRpdmUgcGF0aCBmcm9tIFNSQ0RJUiB0byBEU1RESVIsIHdpdGggYSB0cmFpbGluZworIyBzbGFzaCBpZiBub24tZW1wdHksIHN1aXRhYmxlIGZvciBpbW1lZGlhdGVseSBhcHBlbmRpbmcgYSBmaWxlbmFtZQorIyB3aXRob3V0IG5lZWRpbmcgdG8gYXBwZW5kIGEgc2VwYXJhdG9yLgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCitmdW5jX3JlbGF0aXZlX3BhdGggKCkKK3sKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0KKyAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDEiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMiIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiAKLSMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAotIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCi0jIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKLSMgZnVuY3Rpb24uCi1wcm9ncGF0aD0iJDAiCisgICMgQXNjZW5kIHRoZSB0cmVlIHN0YXJ0aW5nIGZyb20gbGliZGlyCisgIHdoaWxlIDo7IGRvCisgICAgIyBjaGVjayBpZiB3ZSBoYXZlIGZvdW5kIGEgcHJlZml4IG9mIGJpbmRpcgorICAgIGNhc2UgJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIGluCisgICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIpCisgICAgICAgICMgZm91bmQgYW4gZXhhY3QgbWF0Y2gKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9CisgICAgICAgIGJyZWFrCisgICAgICAgIDs7CisgICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIqKQorICAgICAgICAjIGZvdW5kIGEgbWF0Y2hpbmcgcHJlZml4CisgICAgICAgIGZ1bmNfc3RyaXBuYW1lICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIiICcnICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIiCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uCisgICAgICAgIGZpCisgICAgICAgIGJyZWFrCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBmdW5jX2Rpcm5hbWUgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSR7ZnVuY19kaXJuYW1lX3Jlc3VsdH0KKyAgICAgICAgaWYgdGVzdCAieCRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgPSB4IDsgdGhlbgorICAgICAgICAgICMgSGF2ZSB0byBkZXNjZW5kIGFsbCB0aGUgd2F5IHRvIHRoZSByb290IQorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0kZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIKKyAgICAgICAgICBicmVhaworICAgICAgICBmaQorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBOb3cgY2FsY3VsYXRlIHBhdGg7IHRha2UgY2FyZSB0byBhdm9pZCBkb3VibGluZy11cCBzbGFzaGVzLgorICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgorICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgZnVuY19zdHJpcG5hbWUgJy8nICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkIgorICBpZiB0ZXN0ICJ4JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIgIT0geCA7IHRoZW4KKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSR7ZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdH0vJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9CisgIGZpCisKKyAgIyBOb3JtYWxpc2F0aW9uLiBJZiBiaW5kaXIgaXMgbGliZGlyLCByZXR1cm4gZW1wdHkgc3RyaW5nLAorICAjIGVsc2UgcmVsYXRpdmUgcGF0aCBlbmRpbmcgd2l0aCBhIHNsYXNoOyBlaXRoZXIgd2F5LCB0YXJnZXQKKyAgIyBmaWxlIG5hbWUgY2FuIGJlIGRpcmVjdGx5IGFwcGVuZGVkLgorICBpZiB0ZXN0ICEgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgorICAgIGZ1bmNfc3RyaXBuYW1lICcuLycgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0LyIKKyAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgZmkKK30KIAogIyBUaGUgbmFtZSBvZiB0aGlzIHByb2dyYW06Ci0jIEluIHRoZSB1bmxpa2VseSBldmVudCAkcHJvZ25hbWUgYmVnYW4gd2l0aCBhICctJywgaXQgd291bGQgcGxheSBoYXZvYyB3aXRoCi0jIGZ1bmNfZWNobyAoaW1hZ2luZSBwcm9nbmFtZT0tbiksIHNvIHdlIHByZXBlbmQgLi8gaW4gdGhhdCBjYXNlOgogZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJHByb2dwYXRoIgogcHJvZ25hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0Ci1jYXNlICRwcm9nbmFtZSBpbgotICAtKikgcHJvZ25hbWU9Li8kcHJvZ25hbWUgOzsKLWVzYWMKIAogIyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBhYnNvbHV0ZSBwYXRoIGZvciByZWV4ZWN1dGlvbjoKIGNhc2UgJHByb2dwYXRoIGluCkBAIC0xOTYsNyArMzgzLDcgQEAKICAgICAgOzsKICAgKikKICAgICAgc2F2ZV9JRlM9IiRJRlMiCi0gICAgIElGUz06CisgICAgIElGUz0ke1BBVEhfU0VQQVJBVE9SLTp9CiAgICAgIGZvciBwcm9nZGlyIGluICRQQVRIOyBkbwogICAgICAgIElGUz0iJHNhdmVfSUZTIgogICAgICAgIHRlc3QgLXggIiRwcm9nZGlyLyRwcm9nbmFtZSIgJiYgYnJlYWsKQEAgLTIxNSw2ICs0MDIsMTUgQEAKICMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgogZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwogCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQorIyBzdHJpbmcgbGl0ZXJhbGx5Lgorc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCitsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisKICMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCiAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCiAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KQEAgLTI0Myw3ICs0MzksNyBAQAogIyBuYW1lIGlmIGl0IGhhcyBiZWVuIHNldCB5ZXQuCiBmdW5jX2VjaG8gKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAkKiIKKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgogfQogCiAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KQEAgLTI1OCwxOCArNDU0LDI1IEBACiAgICAgOgogfQogCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiQqIgorfQorCiAjIGZ1bmNfZXJyb3IgYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCiBmdW5jX2Vycm9yICgpCiB7Ci0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCisgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0iJHsxKyIkQCJ9IDE+JjIKIH0KIAogIyBmdW5jX3dhcm5pbmcgYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KIGZ1bmNfd2FybmluZyAoKQogewotICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKIAogICAgICMgYmFzaCBidWcgYWdhaW46CiAgICAgOgpAQCAtMzI2LDkgKzUyOSw5IEBACiAgICAgICAgIGNhc2UgJG15X2RpcmVjdG9yeV9wYXRoIGluICovKikgOzsgKikgYnJlYWsgOzsgZXNhYwogCiAgICAgICAgICMgLi4ub3RoZXJ3aXNlIHRocm93IGF3YXkgdGhlIGNoaWxkIGRpcmVjdG9yeSBhbmQgbG9vcAotICAgICAgICBteV9kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIlgkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICIkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAogICAgICAgZG9uZQotICAgICAgbXlfZGlyX2xpc3Q9YCRFQ0hPICJYJG15X2Rpcl9saXN0IiB8ICRYc2VkIC1lICdzLDoqJCwsJ2AKKyAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiJG15X2Rpcl9saXN0IiB8ICRTRUQgJ3MsOiokLCwnYAogCiAgICAgICBzYXZlX21rZGlyX3BfSUZTPSIkSUZTIjsgSUZTPSc6JwogICAgICAgZm9yIG15X2RpciBpbiAkbXlfZGlyX2xpc3Q7IGRvCkBAIC0zNzgsNyArNTgxLDcgQEAKICAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IFxgJG15X3RtcGRpciciCiAgICAgZmkKIAotICAgICRFQ0hPICJYJG15X3RtcGRpciIgfCAkWHNlZAorICAgICRFQ0hPICIkbXlfdG1wZGlyIgogfQogCiAKQEAgLTM5Miw3ICs1OTUsNyBAQAogewogICAgIGNhc2UgJDEgaW4KICAgICAgICpbXFxcYFwiXCRdKikKLQlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIlgkMSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CisJZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKICAgICAgICopCiAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PSIkMSIgOzsKICAgICBlc2FjCkBAIC00MTksNyArNjIyLDcgQEAKIHsKICAgICBjYXNlICQxIGluCiAgICAgICAqW1xcXGBcIl0qKQotCW15X2FyZz1gJEVDSE8gIlgkMSIgfCAkWHNlZCBcCisJbXlfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCBcCiAJICAgIC1lICIkZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKICAgICAgICopCiAgICAgICAgIG15X2FyZz0iJDEiIDs7CkBAIC00ODgsMTUgKzY5MSwzOSBAQAogICAgIGZpCiB9CiAKLQotCisjIGZ1bmNfdHJfc2gKKyMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCisjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCisjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgorZnVuY190cl9zaCAoKQoreworICBjYXNlICQxIGluCisgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKKyAgICA7OworICAqICkKKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorICAgIDs7CisgIGVzYWMKK30KIAogCiAjIGZ1bmNfdmVyc2lvbgogIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX3ZlcnNpb24gKCkKIHsKLSAgICAkU0VEIC1uICcvXiMgJyRQUk9HUkFNJyAoR05VIC8sLyMgd2FycmFudHk7IC8geworICAgICRvcHRfZGVidWcKKworICAgICRTRUQgLW4gJy8oQykvIWIgZ28KKwk6bW9yZQorCS9cLi8heworCSAgTgorCSAgcy9cbiMgLyAvCisJICBiIG1vcmUKKwl9CisJOmdvCisJL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogICAgICAgICBzL1woKEMpXClbIDAtOSwtXSpcKCBbMS05XVswLTldKlwpL1wxXDIvCkBAIC01MDksMjIgKzczNiwyOCBAQAogIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX3VzYWdlICgpCiB7Ci0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgLWgvIHsKKyAgICAkb3B0X2RlYnVnCisKKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8gewogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLwogCXAKICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgJEVDSE8KKyAgICBlY2hvCiAgICAgJEVDSE8gInJ1biBcYCRwcm9nbmFtZSAtLWhlbHAgfCBtb3JlJyBmb3IgZnVsbCB1c2FnZSIKICAgICBleGl0ICQ/CiB9CiAKLSMgZnVuY19oZWxwCi0jIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIyBmdW5jX2hlbHAgW05PRVhJVF0KKyMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQsCisjIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCiBmdW5jX2hlbHAgKCkKIHsKKyAgICAkb3B0X2RlYnVnCisKICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8geworCTpwcmludAogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAJcypcJHByb2duYW1lKickcHJvZ25hbWUnKgpAQCAtNTM0LDExICs3NjcsMTggQEAKIAlzKlwkTFRDRkxBR1MqJyIkTFRDRkxBR1MiJyoKIAlzKlwkTEQqJyIkTEQiJyoKIAlzL1wkd2l0aF9nbnVfbGQvJyIkd2l0aF9nbnVfbGQiJy8KLQlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLQlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKwlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoJHtBVVRPTUFLRS1hdXRvbWFrZX0gLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKwlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoJHtBVVRPQ09ORi1hdXRvY29uZn0gLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KIAlwCi0gICAgIH0nIDwgIiRwcm9ncGF0aCIKLSAgICBleGl0ICQ/CisJZAorICAgICB9CisgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50CisgICAgICcgPCAiJHByb2dwYXRoIgorICAgIHJldD0kPworICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgorICAgICAgZXhpdCAkcmV0CisgICAgZmkKIH0KIAogIyBmdW5jX21pc3NpbmdfYXJnIGFyZ25hbWUKQEAgLTU0Niw2MyArNzg2LDEwNiBAQAogIyBleGl0X2NtZC4KIGZ1bmNfbWlzc2luZ19hcmcgKCkKIHsKLSAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMSIKKyAgICAkb3B0X2RlYnVnCisKKyAgICBmdW5jX2Vycm9yICJtaXNzaW5nIGFyZ3VtZW50IGZvciAkMS4iCiAgICAgZXhpdF9jbWQ9ZXhpdAogfQogCisKKyMgZnVuY19zcGxpdF9zaG9ydF9vcHQgc2hvcnRvcHQKKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAorIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgorZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKK3sKKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJworICAgIG15X3NlZF9zaG9ydF9yZXN0PScxcy9eLi5cKC4qXCkkL1wxLztxJworCisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X3Jlc3QiYAorfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0CisjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCisjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgTE9OR09QVCBhdCB0aGUgYD0nIHNpZ24uCitmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCit7CisgICAgbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtLVtePV0qXCk9LiovXDEvO3EnCisgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKKworICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCit9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKwogZXhpdF9jbWQ9OgogCiAKIAogCiAKLSMgQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgd29ya2luZyAkRUNITy4KLWlmIHRlc3QgIlgkMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgQXZvaWQgaW5saW5lIGRvY3VtZW50IGhlcmUsIGl0IG1heSBiZSBsZWZ0IG92ZXIKLSAgOgotZWxpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCc7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgJEVDSE8gd2lsbCB3b3JrLgotICBleGVjICRTSEVMTCAiJHByb2dwYXRoIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KLWZpCi0KLWlmIHRlc3QgIlgkMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PEVPRgotJCoKLUVPRgotICBleGl0ICRFWElUX1NVQ0NFU1MKLWZpCi0KIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgogCiAjIEdsb2JhbCB2YXJpYWJsZXMuCi0jICRtb2RlIGlzIHVuc2V0CiBub25vcHQ9Ci1leGVjdXRlX2RsZmlsZXM9CiBwcmVzZXJ2ZV9hcmdzPQogbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgogbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgogZXh0cmFjdGVkX2FyY2hpdmVzPQogZXh0cmFjdGVkX3NlcmlhbD0wCiAKLW9wdF9kcnlfcnVuPWZhbHNlCi1vcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKLW9wdF9zaWxlbnQ9ZmFsc2UKLW9wdF9kZWJ1Zz06Ci0KICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAogIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCiAjIGxlZnQgb3ZlciBieSBzaGVsbHMuCiBleGVjX2NtZD0KIAorIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorZnVuY19hcHBlbmQgKCkKK3sKKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgorfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCisjIGJ5IGEgc3BhY2UuCitmdW5jX2FwcGVuZF9xdW90ZWQgKCkKK3sKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorZnVuY19hcml0aCAoKQoreworICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKK30gIyBmdW5jX2FyaXRoIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19sZW4gc3RyaW5nCisjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCitmdW5jX2xlbiAoKQoreworICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19sbzJvIG9iamVjdAorZnVuY19sbzJvICgpCit7CisgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorfSAjIGZ1bmNfbG8ybyBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorZnVuY194Zm9ybSAoKQoreworICAgIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKwogIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CiAjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgpAQCAtNjM2LDE2ICs5MTksMTYgQEAKICMgRGlzcGxheSB0aGUgZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0LgogZnVuY19mZWF0dXJlcyAoKQogewotICAgICRFQ0hPICJob3N0OiAkaG9zdCIKKyAgICBlY2hvICJob3N0OiAkaG9zdCIKICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgotICAgICAgJEVDSE8gImVuYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICAgZWxzZQotICAgICAgJEVDSE8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBmaQogICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLSAgICAgICRFQ0hPICJlbmFibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImVuYWJsZSBzdGF0aWMgbGlicmFyaWVzIgogICAgIGVsc2UKLSAgICAgICRFQ0hPICJkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICBlY2hvICJkaXNhYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZmkKIAogICAgIGV4aXQgJD8KQEAgLTY5MiwxMzMgKzk3NSw2IEBACiAgIGVzYWMKIH0KIAotIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCi17Ci0KLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0gIGNhc2UgJDEgaW4KLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgbGlua3xsaW58bGl8bCkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGVzYWMKLQotICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbwotICAgIG9wdD0iJDEiCi0gICAgc2hpZnQKLQotICAgIGNhc2UgJG9wdCBpbgotICAgICAgLS1jb25maWcpCQlmdW5jX2NvbmZpZwkJCQkJOzsKLQotICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0JCQlvcHRfZGVidWc9J3NldCAteCcKLQkJCSRvcHRfZGVidWcKLQkJCTs7Ci0KLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLQkJCWV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkMSIKLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAtLWRyeS1ydW4gfCAtbikJb3B0X2RyeV9ydW49OgkJCQkJOzsKLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7Ci0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7Ci0KLSAgICAgIC0tbW9kZSkJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJY2FzZSAkMSBpbgotCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotCQkJICBjbGVhbikJOzsKLQkJCSAgY29tcGlsZSkJOzsKLQkJCSAgZXhlY3V0ZSkJOzsKLQkJCSAgZmluaXNoKQk7OwotCQkJICBpbnN0YWxsKQk7OwotCQkJICBsaW5rKQkJOzsKLQkJCSAgcmVsaW5rKQk7OwotCQkJICB1bmluc3RhbGwpCTs7Ci0KLQkJCSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0JCQkgICAgIGV4aXRfY21kPWV4aXQKLQkJCSAgICAgYnJlYWsKLQkJCSAgICAgOzsKLQkJICAgICAgICBlc2FjCi0KLQkJCW1vZGU9IiQxIgotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCi0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OwotCi0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotCQkJb3B0X3NpbGVudD06Ci0JCQk7OwotCi0gICAgICAtLXZlcmJvc2V8IC12KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotCQkJb3B0X3NpbGVudD1mYWxzZQotCQkJOzsKLQotICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKLQkJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQgJDEiCi0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKLQkJCXNoaWZ0Ci0JCQk7OwotCi0gICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgotICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCi0JCQlmdW5jX29wdF9zcGxpdCAiJG9wdCIKLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJCTs7Ci0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OwotICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7Ci0KLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7Ci0KLSAgICAgICopCQlub25vcHQ9IiRvcHQiCi0JCQlicmVhawotCQkJOzsKLSAgICBlc2FjCi0gIGRvbmUKLQotCi0gIGNhc2UgJGhvc3QgaW4KLSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQotICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgotICAgICAgOzsKLSAgICAqKQotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCi0gICAgICA7OwotICBlc2FjCi0KLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCi0gICMgYW55dGhpbmcgd2FzIHdyb25nLgotICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotfQotCiAjIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAogIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQogIyByZWxlYXNlIG9mIGxpYnRvb2wuCkBAIC04NTUsMzggKzEwMTEsMjE5IEBACiB9CiAKIAorIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CitjYXNlICQxIGluCitjbGVhbnxjbGVhfGNsZXxjbCkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorICA7OworY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CisgIDs7CitleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2ZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorICA7OworaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgIDs7CitsaW5rfGxpbnxsaXxsKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK3VuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZXNhYworCisKKworIyBPcHRpb24gZGVmYXVsdHM6CitvcHRfZGVidWc9Ogorb3B0X2RyeV9ydW49ZmFsc2UKK29wdF9jb25maWc9ZmFsc2UKK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQorb3B0X2ZlYXR1cmVzPWZhbHNlCitvcHRfZmluaXNoPWZhbHNlCitvcHRfaGVscD1mYWxzZQorb3B0X2hlbHBfYWxsPWZhbHNlCitvcHRfc2lsZW50PToKK29wdF93YXJuaW5nPToKK29wdF92ZXJib3NlPToKK29wdF9zaWxlbnQ9ZmFsc2UKK29wdF92ZXJib3NlPWZhbHNlCisKKworIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4gdGhlCisjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KK3sKKyAgIyB0aGlzIGp1c3QgZWFzZXMgZXhpdCBoYW5kbGluZworICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworICAgIG9wdD0iJDEiCisgICAgc2hpZnQKKyAgICBjYXNlICRvcHQgaW4KKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JworCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorCQkJJG9wdF9kZWJ1ZworCQkJOzsKKyAgICAgIC0tZHJ5LXJ1bnwtLWRyeXJ1bnwtbikKKwkJCW9wdF9kcnlfcnVuPToKKwkJCTs7CisgICAgICAtLWNvbmZpZykKKwkJCW9wdF9jb25maWc9OgorZnVuY19jb25maWcKKwkJCTs7CisgICAgICAtLWRsb3BlbnwtZGxvcGVuKQorCQkJb3B0YXJnPSIkMSIKKwkJCW9wdF9kbG9wZW49IiR7b3B0X2Rsb3Blbiskb3B0X2Rsb3BlbgorfSRvcHRhcmciCisJCQlzaGlmdAorCQkJOzsKKyAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCisJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgorCQkJOzsKKyAgICAgIC0tZmVhdHVyZXMpCisJCQlvcHRfZmVhdHVyZXM9OgorZnVuY19mZWF0dXJlcworCQkJOzsKKyAgICAgIC0tZmluaXNoKQorCQkJb3B0X2ZpbmlzaD06CitzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisJCQk7OworICAgICAgLS1oZWxwKQorCQkJb3B0X2hlbHA9OgorCQkJOzsKKyAgICAgIC0taGVscC1hbGwpCisJCQlvcHRfaGVscF9hbGw9Ogorb3B0X2hlbHA9JzogaGVscC1hbGwnCisJCQk7OworICAgICAgLS1tb2RlKQorCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X21vZGU9IiRvcHRhcmciCitjYXNlICRvcHRhcmcgaW4KKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKKworICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKyAgICAgZXhpdF9jbWQ9ZXhpdAorICAgICBicmVhaworICAgICA7OworZXNhYworCQkJc2hpZnQKKwkJCTs7CisgICAgICAtLW5vLXNpbGVudHwtLW5vLXF1aWV0KQorCQkJb3B0X3NpbGVudD1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1uby13YXJuaW5nfC0tbm8td2FybikKKwkJCW9wdF93YXJuaW5nPWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLW5vLXZlcmJvc2UpCisJCQlvcHRfdmVyYm9zZT1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1zaWxlbnR8LS1xdWlldCkKKwkJCW9wdF9zaWxlbnQ9OgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCisJCQk7OworICAgICAgLS12ZXJib3NlfC12KQorCQkJb3B0X3ZlcmJvc2U9OgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCitvcHRfc2lsZW50PWZhbHNlCisJCQk7OworICAgICAgLS10YWcpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfdGFnPSIkb3B0YXJnIgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKK2Z1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7CisgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCTs7CisKKyAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6CisgICAgICAtLSo9KikKKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisgICAgICAtXD8qfC1oKnwtbip8LXYqKQorCQkJZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7CisgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIiA7OworICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgorCisgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorICAgIG5vbm9wdD0iJG9wdCIKKyAgICBzaGlmdAorICBmaQorCisgICMgcHJlc2VydmUgLS1kZWJ1ZworICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisKKyAgY2FzZSAkaG9zdCBpbgorICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCisgICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcworICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICA7OworICAgICopCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgIDs7CisgIGVzYWMKKworICAkb3B0X2hlbHAgfHwgeworICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKworICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorICAgIGZpCisKKyAgICAjIERhcndpbiBzdWNrcworICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisKKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKyAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgZmkKKworICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgorICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorICB9CisKKworICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCisgICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCit9CisKKworCisKICMjIC0tLS0tLS0tLS0tICMjCiAjIyAgICBNYWluLiAgICAjIwogIyMgLS0tLS0tLS0tLS0gIyMKIAotJG9wdF9oZWxwIHx8IHsKLSAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLQotICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0gIGZpCi0KLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCi0KLQotICAjIERhcndpbiBzdWNrcwotICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotCi0KLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0gICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gIGZpCi0KLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotICBnZW5lcmljX2hlbHA9IiRoZWxwIgotICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotfQotCi0KICMgZnVuY19sYWxpYl9wIGZpbGUKICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KICMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKQEAgLTk1MCwxMiArMTI4Nyw5IEBACiAjIHRlbXBvcmFyeSBsdHdyYXBwZXJfc2NyaXB0LgogZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQogewotICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIiCi0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0JZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotICAgIGZpCisgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKIH0KIAogIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKQEAgLTEwMDEsNiArMTMzNSwzNyBAQAogfQogCiAKKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAorIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CitmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQoreworICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JDEKKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCisgID0qKQorICAgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgOzsKKyAgZXNhYworfQorCisjIGZ1bmNfcmVwbGFjZV9zeXNyb290IFBBVEgKKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCisjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCitmdW5jX3JlcGxhY2Vfc3lzcm9vdCAoKQoreworICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KKyAgPyo6IiRsdF9zeXNyb290IiopCisgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKyAgICA7OworICAqKQorICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSQxCisgICAgOzsKKyAgZXNhYworfQorCiAjIGZ1bmNfaW5mZXJfdGFnIGFyZwogIyBJbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgYW55IGFyZSBhdmFpbGFibGUgYW5kCiAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgpAQCAtMTAxMywxMyArMTM3OCwxNSBAQAogICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCiAgICAgICBDQ19xdW90ZWQ9CiAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCiAgICAgICBkb25lCisgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgICAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKICAgICAgIGNhc2UgJEAgaW4KICAgICAgICMgQmxhbmtzIGluIHRoZSBjb21tYW5kIG1heSBoYXZlIGJlZW4gc3RyaXBwZWQgYnkgdGhlIGNhbGxpbmcgc2hlbGwsCiAgICAgICAjIGJ1dCBub3QgZnJvbSB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWd1cmUgd2FzIHJ1bi4KLSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRFQ0hPICRDQ2AgIiogfCAiYCRFQ0hPICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJEVDSE8gJENDX3F1b3RlZGAgIiogfCAiYCRFQ0hPICRDQ19xdW90ZWRgICIqKSA7OworICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiAkQ0NfZXhwYW5kZWQgIiogfCAiJENDX2V4cGFuZGVkICIqIHwgXAorICAgICAgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgJENDX3F1b3RlZF9leHBhbmRlZCAiKiB8ICIkQ0NfcXVvdGVkX2V4cGFuZGVkICIqKSA7OwogICAgICAgIyBCbGFua3MgYXQgdGhlIHN0YXJ0IG9mICRiYXNlX2NvbXBpbGUgd2lsbCBjYXVzZSB0aGlzIHRvIGZhaWwKICAgICAgICMgaWYgd2UgZG9uJ3QgY2hlY2sgZm9yIHRoZW0gYXMgd2VsbC4KICAgICAgICopCkBAIC0xMDMwLDExICsxMzk3LDEzIEBACiAJICAgIENDX3F1b3RlZD0KIAkgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCiAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgogCSAgICBkb25lCisJICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKwkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCiAJICAgIGNhc2UgIiRAICIgaW4KLQkgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikKKwkgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiAkQ0NfZXhwYW5kZWQgIiogfCAiJENDX2V4cGFuZGVkICIqIHwgXAorCSAgICAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiAkQ0NfcXVvdGVkX2V4cGFuZGVkICIqIHwgIiRDQ19xdW90ZWRfZXhwYW5kZWQgIiopCiAJICAgICAgIyBUaGUgY29tcGlsZXIgaW4gdGhlIGJhc2UgY29tcGlsZSBjb21tYW5kIG1hdGNoZXMKIAkgICAgICAjIHRoZSBvbmUgaW4gdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uLgogCSAgICAgICMgQXNzdW1lIHRoaXMgaXMgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uIHdlIHdhbnQuCkBAIC0xMDk3LDYgKzE0NjYsNDg2IEBACiAgICAgfQogfQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEZJTEUgTkFNRSBBTkQgUEFUSCBDT05WRVJTSU9OIEhFTFBFUiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyIEFSRworIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQorIyBjb3JyZWN0bHkgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbQorIyBpbiAkYnVpbGQncyAkUEFUSC4KKyMKKyMgQVJHIGlzIHRoZSAkYnVpbGQgZmlsZSBuYW1lIHRvIGJlIGNvbnZlcnRlZCB0byB3MzIgZm9ybWF0LgorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQorZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQorICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCisgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKKyAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8CisgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICBlbHNlCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0KKyAgICBmaQorICBmaQorfQorIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKKworCisjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCisjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCisjICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYSBjb3JyZWN0bHkKKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncworIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KKyMKKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCisjIFVuY29udmVydGlibGUgZmlsZSAoZGlyZWN0b3J5KSBuYW1lcyBpbiBBUkcgYXJlIHNraXBwZWQ7IGlmIG5vIGRpcmVjdG9yeSBuYW1lcworIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCitmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcworICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBvbGRJRlM9JElGUworICAgIElGUz06CisgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KKyAgICAgIElGUz0kb2xkSUZTCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgorICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgorICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgIGVsc2UKKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0kb2xkSUZTCisgIGZpCit9CisjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMgorCisKKyMgZnVuY19jeWdwYXRoIEFSR1MuLi4KKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgorIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKKyMgJGJ1aWxkIGlzIE1TWVMgYW5kICRob3N0IGlzIEN5Z3dpbiwgb3IgKDMpICRidWlsZCBpcyBDeWd3aW4uIEluIGNhc2UgKDEpIG9yCisjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0CisjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKKyMgZnJvbSAkYnVpbGQncyAqbml4IG9yIE1TWVMgZm9ybWF0KS4gSW4gY2FzZSAoMyksIHJldHVybnMgdGhlIHczMiBmaWxlIG5hbWUKKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCisjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KKyMKKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bworIyBiZSBjb252ZXJ0ZWQuCisjCisjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICisjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgorZnVuY19jeWdwYXRoICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAtbiAiJExUX0NZR1BBVEgiICYmIHRlc3QgLWYgIiRMVF9DWUdQQVRIIjsgdGhlbgorICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCisgICAgICAjIG9uIGZhaWx1cmUsIGVuc3VyZSByZXN1bHQgaXMgZW1wdHkKKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisgICAgZmkKKyAgZWxzZQorICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorICBmaQorfQorI2VuZDogZnVuY19jeWdwYXRoCisKKworIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgb3IgcGF0aCBBUkcgZnJvbSBNU1lTIGZvcm1hdCB0byB3MzIgZm9ybWF0LiAgUmV0dXJuCisjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCitmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CisgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorfQorI2VuZDogZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX2NoZWNrIEFSRzEgQVJHMgorIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgorZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKKyAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorICAgICMgRmFsbGJhY2s6CisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2NoZWNrCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayBGUk9NX1BBVEhTRVAgVE9fUEFUSFNFUCBGUk9NX1BBVEggVE9fUEFUSAorIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgorICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCisgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCisgICAgIyBzaG91bGQgbm90IGJlICJpbXByb3ZlZCIuICBTZWUgbGlidG9vbC5pbmZvLgorICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAorICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKKyAgICBlbHNlCisgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgorICAgIGZpCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjaworCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCisjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCisjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQoreworICAkb3B0X2RlYnVnCisgIGNhc2UgJDQgaW4KKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICA7OworICBlc2FjCisgIGNhc2UgJDQgaW4KKyAgJDIgKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgIiQzIgorICAgIDs7CisgIGVzYWMKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKyMKKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisKKworIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX3RvX2hvc3RfZmlsZSAoKQoreworICAkb3B0X2RlYnVnCisgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKK30KKyMgZW5kIGZ1bmNfdG9faG9zdF9maWxlCisKKworIyBmdW5jX3RvX3Rvb2xfZmlsZSBBUkcgTEFaWQorIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCisjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCisjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgorZnVuY190b190b29sX2ZpbGUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBjYXNlICwkMiwgaW4KKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQorICAgICAgOzsKKyAgICAqKQorICAgICAgJHRvX3Rvb2xfZmlsZV9jbWQgIiQxIgorICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKKyAgICAgIDs7CisgIGVzYWMKK30KKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRworIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCit7CisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIGJlY2F1c2UgJGJ1aWxkIGlzIGN5Z3dpbiwgd2UgY2FsbCAidGhlIiBjeWdwYXRoIGluICRQQVRIOyBubyBuZWVkIHRvIHVzZQorICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCisjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworIworIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisjCisjIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gIElmCisjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAorIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCisjCisjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246CisjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKKyMgICBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgICAgICA6IGZ1bmNfY29udmVydF9wYXRoX1hfdG9fWSAoKQorIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQorIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKKyMgdGhlIHR3byBuZXcgZnVuY3Rpb25zIG11c3QgZm9sbG93IHRoaXMgcGF0dGVybiwgb3IgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyMgd2lsbCBicmVhay4KKworCisjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQorIyBhcHByb3ByaWF0ZSB2YWx1ZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mICR0b19ob3N0X2ZpbGVfY21kLgordG9faG9zdF9wYXRoX2NtZD0KK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgorICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKyAgZmkKK30KKworCisjIGZ1bmNfdG9faG9zdF9wYXRoIEFSRworIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisgICR0b19ob3N0X3BhdGhfY21kICIkMSIKK30KKyMgZW5kIGZ1bmNfdG9faG9zdF9wYXRoCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9ub29wIEFSRworIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCit7CisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCisgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50IGFuZAorIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCisjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQorICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgorCisKICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCiBmdW5jX21vZGVfY29tcGlsZSAoKQogewpAQCAtMTEzNywxMiArMTk4NiwxMiBAQAogCSAgOzsKIAogCS1waWUgfCAtZnBpZSB8IC1mUElFKQotICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKyAgICAgICAgICBmdW5jX2FwcGVuZCBwaWVfZmxhZyAiICRhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAogCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCi0JICBsYXRlcj0iJGxhdGVyICRhcmciCisJICBmdW5jX2FwcGVuZCBsYXRlciAiICRhcmciCiAJICBjb250aW51ZQogCSAgOzsKIApAQCAtMTE2MywxNSArMjAxMiwxNCBAQAogCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCiAJICBmb3IgYXJnIGluICRhcmdzOyBkbwogCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKIAkgIGRvbmUKIAkgIElGUz0iJHNhdmVfaWZzIgogCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGJhc2VfY29tcGlsZSAiICRsYXN0YXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKQEAgLTExODcsOCArMjAzNSw3IEBACiAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKLSAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKICAgICBkb25lICMgZm9yIGFyZwogCiAgICAgY2FzZSAkYXJnX21vZGUgaW4KQEAgLTEyMTMsNyArMjA2MCw3IEBACiAgICAgKi5bY0NGU2lmbXNvXSB8IFwKICAgICAqLmFkYSB8ICouYWRiIHwgKi5hZHMgfCAqLmFzbSB8IFwKICAgICAqLmMrKyB8ICouY2MgfCAqLmlpIHwgKi5jbGFzcyB8ICouY3BwIHwgKi5jeHggfCBcCi0gICAgKi5bZkZdWzA5XT8gfCAqLmZvciB8ICouamF2YSB8ICoub2JqIHwgKi5zeCkKKyAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5nbyB8ICoub2JqIHwgKi5zeCB8ICouY3UgfCAqLmN1cCkKICAgICAgIGZ1bmNfeGZvcm0gIiRsaWJvYmoiCiAgICAgICBsaWJvYmo9JGZ1bmNfeGZvcm1fcmVzdWx0CiAgICAgICA7OwpAQCAtMTI4OCw3ICsyMTM1LDcgQEAKICAgICAjIENhbGN1bGF0ZSB0aGUgZmlsZW5hbWUgb2YgdGhlIG91dHB1dCBvYmplY3QgaWYgY29tcGlsZXIgZG9lcwogICAgICMgbm90IHN1cHBvcnQgLW8gd2l0aCAtYwogICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0gbm87IHRoZW4KLSAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJyAtZSAncyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CisgICAgICBvdXRwdXRfb2JqPWAkRUNITyAiJHNyY2ZpbGUiIHwgJFNFRCAncyVeLiovJSU7IHMlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQogICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxvY2siCiAgICAgZWxzZQogICAgICAgb3V0cHV0X29iaj0KQEAgLTEzMTksMTcgKzIxNjYsMTYgQEAKIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CiAJZXhpdCAkRVhJVF9GQUlMVVJFCiAgICAgICBmaQotICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJG91dHB1dF9vYmoiCiAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKICAgICBmaQogCiAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAotICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKyAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJGxvY2tmaWxlIgogICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1CiAKLSAgICBpZiB0ZXN0IC1uICIkZml4X3NyY2ZpbGVfcGF0aCI7IHRoZW4KLSAgICAgIGV2YWwgc3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIKLSAgICBmaQorICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICBzcmNmaWxlPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIApAQCAtMTM0OSw3ICsyMTk1LDcgQEAKIAogICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCiAJIyBQbGFjZSBQSUMgb2JqZWN0cyBpbiAkb2JqZGlyCi0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCisJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgogICAgICAgZmkKIAogICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXApAQCAtMTM5NiwxMSArMjI0MiwxMSBAQAogCWNvbW1hbmQ9IiRiYXNlX2NvbXBpbGUgJHFzcmNmaWxlICRwaWNfZmxhZyIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgotCWNvbW1hbmQ9IiRjb21tYW5kIC1vICRvYmoiCisJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCiAgICAgICBmaQogCiAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKKyAgICAgIGZ1bmNfYXBwZW5kIGNvbW1hbmQgIiRzdXBwcmVzc19vdXRwdXQiCiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCiAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCiAKQEAgLTE0NDUsMTMgKzIyOTEsMTMgQEAKIH0KIAogJG9wdF9oZWxwIHx8IHsKLXRlc3QgIiRtb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CisgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQogfQogCiBmdW5jX21vZGVfaGVscCAoKQogewogICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgotICAgIGNhc2UgJG1vZGUgaW4KKyAgICBjYXNlICRvcHRfbW9kZSBpbgogICAgICAgIiIpCiAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cwogICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCkBAIC0xNDgyLDEwICsyMzI4LDExIEBACiAKICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCiAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcwotICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQotICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKKyAgLXByZWZlci1ub24tcGljICAgdHJ5IHRvIGJ1aWxkIG5vbi1QSUMgb2JqZWN0cyBvbmx5CiAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCiAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCiAKIENPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyBhIFxgc3RhbmRhcmQnIG9iamVjdCBmaWxlCiBmcm9tIHRoZSBnaXZlbiBTT1VSQ0VGSUxFLgpAQCAtMTUzOCw3ICsyMzg1LDcgQEAKIAogVGhlIGZvbGxvd2luZyBjb21wb25lbnRzIG9mIElOU1RBTEwtQ09NTUFORCBhcmUgdHJlYXRlZCBzcGVjaWFsbHk6CiAKLSAgLWluc3QtcHJlZml4IFBSRUZJWC1ESVIgIFVzZSBQUkVGSVgtRElSIGFzIGEgc3RhZ2luZyBhcmVhIGZvciBpbnN0YWxsYXRpb24KKyAgLWluc3QtcHJlZml4LWRpciBQUkVGSVgtRElSICBVc2UgUFJFRklYLURJUiBhcyBhIHN0YWdpbmcgYXJlYSBmb3IgaW5zdGFsbGF0aW9uCiAKIFRoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVudHMgdG8gdGhhdCBjb21tYW5kIChvbmx5CiBCU0QtY29tcGF0aWJsZSBpbnN0YWxsIG9wdGlvbnMgYXJlIHJlY29nbml6ZWQpLiIKQEAgLTE1NTgsNiArMjQwNSw4IEBACiAKICAgLWFsbC1zdGF0aWMgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgYXQgYWxsCiAgIC1hdm9pZC12ZXJzaW9uICAgIGRvIG5vdCBhZGQgYSB2ZXJzaW9uIHN1ZmZpeCBpZiBwb3NzaWJsZQorICAtYmluZGlyIEJJTkRJUiAgICBzcGVjaWZ5IHBhdGggdG8gYmluYXJpZXMgZGlyZWN0b3J5IChmb3Igc3lzdGVtcyB3aGVyZQorICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgbXVzdCBiZSBmb3VuZCBpbiB0aGUgUEFUSCBzZXR0aW5nIGF0IHJ1bnRpbWUpCiAgIC1kbG9wZW4gRklMRSAgICAgIFxgLWRscHJlb3BlbicgRklMRSBpZiBpdCBjYW5ub3QgYmUgZGxvcGVuZWQgYXQgcnVudGltZQogICAtZGxwcmVvcGVuIEZJTEUgICBsaW5rIGluIEZJTEUgYW5kIGFkZCBpdHMgc3ltYm9scyB0byBsdF9wcmVsb2FkZWRfc3ltYm9scwogICAtZXhwb3J0LWR5bmFtaWMgICBhbGxvdyBzeW1ib2xzIGZyb20gT1VUUFVULUZJTEUgdG8gYmUgcmVzb2x2ZWQgd2l0aCBkbHN5bSgzKQpAQCAtMTU4Niw2ICsyNDM1LDExIEBACiAgIC12ZXJzaW9uLWluZm8gQ1VSUkVOVFs6UkVWSVNJT05bOkFHRV1dCiAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgbGlicmFyeSB2ZXJzaW9uIGluZm8gW2VhY2ggdmFyaWFibGUgZGVmYXVsdHMgdG8gMF0KICAgLXdlYWsgTElCTkFNRSAgICAgZGVjbGFyZSB0aGF0IHRoZSB0YXJnZXQgcHJvdmlkZXMgdGhlIExJQk5BTUUgaW50ZXJmYWNlCisgIC1XYyxGTEFHCisgIC1YY29tcGlsZXIgRkxBRyAgIHBhc3MgbGlua2VyLXNwZWNpZmljIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCisgIC1XbCxGTEFHCisgIC1YbGlua2VyIEZMQUcgICAgIHBhc3MgbGlua2VyLXNwZWNpZmljIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGxpbmtlcgorICAtWENDbGlua2VyIEZMQUcgICBwYXNzIGxpbmstc3BlY2lmaWMgRkxBRyB0byB0aGUgY29tcGlsZXIgZHJpdmVyIChDQykKIAogQWxsIG90aGVyIG9wdGlvbnMgKGFyZ3VtZW50cyBiZWdpbm5pbmcgd2l0aCBcYC0nKSBhcmUgaWdub3JlZC4KIApAQCAtMTYxOSwxOCArMjQ3Myw0NCBAQAogICAgICAgICA7OwogCiAgICAgICAqKQotICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCiAgICAgICAgIDs7CiAgICAgZXNhYwogCi0gICAgJEVDSE8KKyAgICBlY2hvCiAgICAgJEVDSE8gIlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzLiIKLQotICAgIGV4aXQgJD8KIH0KIAotICAjIE5vdyB0aGF0IHdlJ3ZlIGNvbGxlY3RlZCBhIHBvc3NpYmxlIC0tbW9kZSBhcmcsIHNob3cgaGVscCBpZiBuZWNlc3NhcnkKLSAgJG9wdF9oZWxwICYmIGZ1bmNfbW9kZV9oZWxwCisjIE5vdyB0aGF0IHdlJ3ZlIGNvbGxlY3RlZCBhIHBvc3NpYmxlIC0tbW9kZSBhcmcsIHNob3cgaGVscCBpZiBuZWNlc3NhcnkKK2lmICRvcHRfaGVscDsgdGhlbgorICBpZiB0ZXN0ICIkb3B0X2hlbHAiID0gOjsgdGhlbgorICAgIGZ1bmNfbW9kZV9oZWxwCisgIGVsc2UKKyAgICB7CisgICAgICBmdW5jX2hlbHAgbm9leGl0CisgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworCWZ1bmNfbW9kZV9oZWxwCisgICAgICBkb25lCisgICAgfSB8IHNlZCAtbiAnMXA7IDIsJHMvXlVzYWdlOi8gIG9yOiAvcCcKKyAgICB7CisgICAgICBmdW5jX2hlbHAgbm9leGl0CisgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworCWVjaG8KKwlmdW5jX21vZGVfaGVscAorICAgICAgZG9uZQorICAgIH0gfAorICAgIHNlZCAnMWQKKyAgICAgIC9eV2hlbiByZXBvcnRpbmcvLC9eUmVwb3J0L3sKKwlICisJZAorICAgICAgfQorICAgICAgJHgKKyAgICAgIC9pbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy9kCisgICAgICAvbW9yZSBkZXRhaWxlZCAuKk1PREUvZAorICAgICAgcy9eVXNhZ2U6LiotLW1vZGU9XChbXiBdKlwpIC4qL0Rlc2NyaXB0aW9uIG9mIFwxIG1vZGU6LycKKyAgZmkKKyAgZXhpdCAkPworZmkKIAogCiAjIGZ1bmNfbW9kZV9leGVjdXRlIGFyZy4uLgpAQCAtMTY0MywxMyArMjUyMywxNiBAQAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKIAogICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCi0gICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCiAJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgogCiAgICAgICBkaXI9CiAgICAgICBjYXNlICRmaWxlIGluCiAgICAgICAqLmxhKQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCkBAIC0xNjcxLDcgKzI1NTQsNyBAQAogCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KLQkgIGRpcj0iJGRpci8kb2JqZGlyIgorCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKIAllbHNlCiAJICBpZiB0ZXN0ICEgLWYgIiRkaXIvJGRsbmFtZSI7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKQEAgLTE3MTIsNyArMjU5NSw3IEBACiAgICAgZm9yIGZpbGUKICAgICBkbwogICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgLSopIDs7CisgICAgICAtKiB8ICoubGEgfCAqLmxvICkgOzsKICAgICAgICopCiAJIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGlidG9vbCBwcm9ncmFtLgogCWlmIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICIkZmlsZSI7IHRoZW4KQEAgLTE3MjgsOCArMjYxMSw3IEBACiAJOzsKICAgICAgIGVzYWMKICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCi0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKLSAgICAgIGFyZ3M9IiRhcmdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKICAgICBkb25lCiAKICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgpAQCAtMTc1NCwyOSArMjYzNiw2NiBAQAogICAgICAgIyBEaXNwbGF5IHdoYXQgd291bGQgYmUgZG9uZS4KICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogCWV2YWwgIlwkRUNITyBcIlwkc2hsaWJwYXRoX3Zhcj1cJCRzaGxpYnBhdGhfdmFyXCIiCi0JJEVDSE8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKKwllY2hvICJleHBvcnQgJHNobGlicGF0aF92YXIiCiAgICAgICBmaQogICAgICAgJEVDSE8gIiRjbWQkYXJncyIKICAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogICAgIGZpCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGV4ZWN1dGUgJiYgZnVuY19tb2RlX2V4ZWN1dGUgJHsxKyIkQCJ9Cit0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KIAogCiAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCiBmdW5jX21vZGVfZmluaXNoICgpCiB7CiAgICAgJG9wdF9kZWJ1ZwotICAgIGxpYmRpcnM9IiRub25vcHQiCisgICAgbGlicz0KKyAgICBsaWJkaXJzPQogICAgIGFkbWluY21kcz0KIAotICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0gICAgICBmb3IgZGlyCi0gICAgICBkbwotCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCi0gICAgICBkb25lCisgICAgZm9yIG9wdCBpbiAiJG5vbm9wdCIgJHsxKyIkQCJ9CisgICAgZG8KKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCisJZnVuY19hcHBlbmQgbGliZGlycyAiICRvcHQiCiAKKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkb3B0IjsgdGhlbgorCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCisJZWxzZQorCSAgZnVuY193YXJuaW5nICJcYCRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwlmaQorCisgICAgICBlbHNlCisJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgorICAgICAgZmkKKyAgICBkb25lCisKKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRsdF9zeXNyb290IjsgdGhlbgorICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgorICAgICAgZWxzZQorICAgICAgICBzeXNyb290X2NtZD0KKyAgICAgIGZpCisKKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcworICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCisgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCisgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCisgICAgICAgIGRvbmUKKyAgICAgIGVsc2UKKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKwkgIHNlZCAtZSAiJHtzeXNyb290X2NtZH0gcy9cKFsgJ10tW0xSXVwpPS9cMS9nOyBzL1woWyAnXVwpPS9cMS9nIiAkbGliIFwKKwkgICAgPiAkdG1wZGlyL3RtcC1sYQorCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgorCWRvbmUKKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgorICAgICAgZmkKKyAgICBmaQorCisgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KICAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCiAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgogCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KQEAgLTE3ODYsNyArMjcwNSw3IEBACiAJaWYgdGVzdCAtbiAiJGZpbmlzaF9ldmFsIjsgdGhlbgogCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgogCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgYWRtaW5jbWRzPSIkYWRtaW5jbWRzCisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCiAgICAgICAgJGNtZHMiCiAJZmkKICAgICAgIGRvbmUKQEAgLTE3OTUsNTMgKzI3MTQsNTUgQEAKICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KICAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKIAotICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAotICAgICRFQ0hPICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCi0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLSAgICAgICRFQ0hPICIgICAkbGliZGlyIgotICAgIGRvbmUKLSAgICAkRUNITwotICAgICRFQ0hPICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKLSAgICAkRUNITyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0gICAgJEVDSE8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0gICAgJEVDSE8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSAgICAgICRFQ0hPICIgICAgIGR1cmluZyBsaW5raW5nIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0gICAgICBsaWJkaXI9TElCRElSCi0gICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKyAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworCSRFQ0hPICIgICAkbGliZGlyIgorICAgICAgZG9uZQorICAgICAgZWNobworICAgICAgZWNobyAiSWYgeW91IGV2ZXIgaGFwcGVuIHRvIHdhbnQgdG8gbGluayBhZ2FpbnN0IGluc3RhbGxlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisgICAgICBlY2hvICJmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZzoiCisgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorCWVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKwlsaWJkaXI9TElCRElSCisJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgogCi0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLSAgICBmaQotICAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgICAkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0gICAgZmkKLSAgICAkRUNITworCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCisgICAgICBmaQorICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKyAgICAgIGZpCisgICAgICBlY2hvCiAKLSAgICAkRUNITyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0gICAgY2FzZSAkaG9zdCBpbgotICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKLSAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCi0JJEVDSE8gInBhZ2VzLiIKLQk7OwotICAgICAgKikKLSAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotICAgICAgICA7OwotICAgIGVzYWMKLSAgICAkRUNITyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKKyAgICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgorICAgICAgY2FzZSAkaG9zdCBpbgorCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCisJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSwgY3JsZSgxKSBhbmQgbGQuc28oOCkgbWFudWFsIgorCSAgZWNobyAicGFnZXMuIgorCSAgOzsKKwkqKQorCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCisJICA7OworICAgICAgZXNhYworICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICBmaQogICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogfQogCi10ZXN0ICIkbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KIAogCiAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgpAQCAtMTg1Miw3ICsyNzczLDcgQEAKICAgICAjIGluc3RhbGxfcHJvZyAoZXNwZWNpYWxseSBvbiBXaW5kb3dzIE5UKS4KICAgICBpZiB0ZXN0ICIkbm9ub3B0IiA9ICIkU0hFTEwiIHx8IHRlc3QgIiRub25vcHQiID0gL2Jpbi9zaCB8fAogICAgICAgICMgQWxsb3cgdGhlIHVzZSBvZiBHTlUgc2h0b29sJ3MgaW5zdGFsbCBjb21tYW5kLgotICAgICAgICRFQ0hPICJYJG5vbm9wdCIgfCAkR1JFUCBzaHRvb2wgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgIGNhc2UgJG5vbm9wdCBpbiAqc2h0b29sKikgOjs7ICopIGZhbHNlOzsgZXNhYzsgdGhlbgogICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgogICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJG5vbm9wdCIKICAgICAgIGluc3RhbGxfcHJvZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0ICIKQEAgLTE4NjYsNyArMjc4NywxMiBAQAogICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0kaW5zdGFsbF9wcm9nCisgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgorICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7CisgICAgICAqKSBpbnN0YWxsX2NwPWZhbHNlIDs7CisgICAgZXNhYwogCiAgICAgIyBXZSBuZWVkIHRvIGFjY2VwdCBhdCBsZWFzdCBhbGwgdGhlIEJTRCBpbnN0YWxsIGZsYWdzLgogICAgIGRlc3Q9CkBAIC0xODc2LDEwICsyODAyLDEyIEBACiAgICAgaW5zdGFsbF90eXBlPQogICAgIGlzZGlyPW5vCiAgICAgc3RyaXBtZT0KKyAgICBub19tb2RlPToKICAgICBmb3IgYXJnCiAgICAgZG8KKyAgICAgIGFyZzI9CiAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KLQlmaWxlcz0iJGZpbGVzICRkZXN0IgorCWZ1bmNfYXBwZW5kIGZpbGVzICIgJGRlc3QiCiAJZGVzdD0kYXJnCiAJY29udGludWUKICAgICAgIGZpCkBAIC0xODg3LDEwICsyODE1LDkgQEAKICAgICAgIGNhc2UgJGFyZyBpbgogICAgICAgLWQpIGlzZGlyPXllcyA7OwogICAgICAgLWYpCi0JY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgotCSpbXFxcIC9dY3BcICopIDs7Ci0JKikgcHJldj0kYXJnIDs7Ci0JZXNhYworCWlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKKwkgIHByZXY9JGFyZworCWZpCiAJOzsKICAgICAgIC1nIHwgLW0gfCAtbykKIAlwcmV2PSRhcmcKQEAgLTE5MDQsNiArMjgzMSwxMCBAQAogICAgICAgKikKIAkjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZGVkIGFuIGFyZ3VtZW50LCB0aGVuIHNraXAgaXQuCiAJaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCisJICBpZiB0ZXN0ICJ4JHByZXYiID0geC1tICYmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiOyB0aGVuCisJICAgIGFyZzI9JGluc3RhbGxfb3ZlcnJpZGVfbW9kZQorCSAgICBub19tb2RlPWZhbHNlCisJICBmaQogCSAgcHJldj0KIAllbHNlCiAJICBkZXN0PSRhcmcKQEAgLTE5MTQsNyArMjg0NSwxMSBAQAogCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgogICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBpZiB0ZXN0IC1uICIkYXJnMiI7IHRoZW4KKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKKyAgICAgIGZpCisgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgIGRvbmUKIAogICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKQEAgLTE5MjMsNiArMjg1OCwxMyBAQAogICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2JyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCiAKKyAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgorICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiCisJZnVuY19hcHBlbmQgaW5zdGFsbF9zaGFyZWRfcHJvZyAiIC1tICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZpCisgICAgZmkKKwogICAgIGlmIHRlc3QgLXogIiRmaWxlcyI7IHRoZW4KICAgICAgIGlmIHRlc3QgLXogIiRkZXN0IjsgdGhlbgogCWZ1bmNfZmF0YWxfaGVscCAibm8gZmlsZSBvciBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiCkBAIC0xOTc3LDEwICsyOTE5LDEzIEBACiAgICAgICBjYXNlICRmaWxlIGluCiAgICAgICAqLiRsaWJleHQpCiAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KLQlzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZmlsZSIKKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCiAJOzsKIAogICAgICAgKi5sYSkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCiAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKQEAgLTE5OTQsMjMgKzI5MzksMjMgQEAKIAlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgogCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWVsc2UKIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAKIAlmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiLyIgIiIKIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotCWRpcj0iJGRpciRvYmpkaXIiCisJZnVuY19hcHBlbmQgZGlyICIkb2JqZGlyIgogCiAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgogCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLQkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIlgkZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkbGliZGlyXCQlJSJgCisJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKIAogCSAgIyBEb24ndCBhbGxvdyB0aGUgdXNlciB0byBwbGFjZSB1cyBvdXRzaWRlIG9mIG91ciBleHBlY3RlZAogCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdApAQCAtMjAyMyw5ICsyOTY4LDkgQEAKIAogCSAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkgICAgIyBTdGljayB0aGUgaW5zdF9wcmVmaXhfZGlyIGRhdGEgaW50byB0aGUgbGluayBjb21tYW5kLgotCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSJgCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSJgCiAJICBlbHNlCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKIAkgIGZpCiAKIAkgIGZ1bmNfd2FybmluZyAicmVsaW5raW5nIFxgJGZpbGUnIgpAQCAtMjA0Myw3ICsyOTg4LDcgQEAKIAkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0iJHJlYWxuYW1lIlQKIAogCSAgIyBJbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeSBhbmQgYnVpbGQgdGhlIHN5bWxpbmtzLgotCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIFwKKwkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9zaGFyZWRfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAogCSAgICAgICdleGl0ICQ/JwogCSAgdHN0cmlwbWU9IiRzdHJpcG1lIgogCSAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMjA4Myw3ICszMDI4LDcgQEAKIAlmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiICdleGl0ICQ/JwogCiAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgotCXRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGRpci8kb2xkX2xpYnJhcnkiCisJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCiAJOzsKIAogICAgICAgKi5sbykKQEAgLTIxODMsNyArMzEyOCw3IEBACiAJICAgIGlmIHRlc3QgLWYgIiRsaWIiOyB0aGVuCiAJICAgICAgZnVuY19zb3VyY2UgIiRsaWIiCiAJICAgIGZpCi0JICAgIGxpYmZpbGU9IiRsaWJkaXIvImAkRUNITyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlZydgICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorCSAgICBsaWJmaWxlPSIkbGliZGlyLyJgJEVDSE8gIiRsaWIiIHwgJFNFRCAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CiAJICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCiAJICAgICAgZnVuY193YXJuaW5nICJcYCRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gXGAkbGliZGlyJyIKIAkgICAgICBmaW5hbGl6ZT1ubwpAQCAtMjIwMiw3ICszMTQ3LDcgQEAKIAkJZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogCSAgICAgICAgb3V0cHV0bmFtZT0iJHRtcGRpci8kZmlsZSIKIAkgICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZydgCisJICAgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKIAogCSAgICAgICAgJG9wdF9zaWxlbnQgfHwgewogCSAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRyZWxpbmtfY29tbWFuZCIKQEAgLTIyMjEsNyArMzE2Niw3IEBACiAJICAgIH0KIAkgIGVsc2UKIAkgICAgIyBJbnN0YWxsIHRoZSBiaW5hcnkgdGhhdCB3ZSBjb21waWxlZCBlYXJsaWVyLgotCSAgICBmaWxlPWAkRUNITyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAicyVcKFteL10qXCkkJSRvYmpkaXIvXDElImAKKwkgICAgZmlsZT1gJEVDSE8gIiRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkU0VEICJzJVwoW14vXSpcKSQlJG9iamRpci9cMSUiYAogCSAgZmkKIAlmaQogCkBAIC0yMjU3LDExICszMjAyLDEzIEBACiAKICAgICAgICMgU2V0IHVwIHRoZSByYW5saWIgcGFyYW1ldGVycy4KICAgICAgIG9sZGxpYj0iJGRlc3RkaXIvJG5hbWUiCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9sZGxpYiIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgIHRvb2xfb2xkbGliPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKIAogICAgICAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgXCRmaWxlIFwkb2xkbGliIiAnZXhpdCAkPycKIAogICAgICAgaWYgdGVzdCAtbiAiJHN0cmlwbWUiICYmIHRlc3QgLW4gIiRvbGRfc3RyaXBsaWIiOyB0aGVuCi0JZnVuY19zaG93X2V2YWwgIiRvbGRfc3RyaXBsaWIgJG9sZGxpYiIgJ2V4aXQgJD8nCisJZnVuY19zaG93X2V2YWwgIiRvbGRfc3RyaXBsaWIgJHRvb2xfb2xkbGliIiAnZXhpdCAkPycKICAgICAgIGZpCiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0aW5zdGFsbCBjb21tYW5kcy4KQEAgLTIyODAsNyArMzIyNyw3IEBACiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQogCiAKICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCkBAIC0yMzIzLDYgKzMyNzAsMjIgQEAKIGV4dGVybiBcIkNcIiB7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSkgfHwgKF9fR05VQ19fID4gNCkpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKKyNlbmRpZgorCisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAogIgogCkBAIC0yMzMyLDEwICszMjk1LDExIEBACiAJICAkb3B0X2RyeV9ydW4gfHwgZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCiAKIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KLQkgIHByb2dmaWxlcz1gJEVDSE8gIlgkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCi0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgotCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKwkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKIAkgIGRvbmUKIAogCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KQEAgLTIzNzEsNyArMzMzNSw3IEBACiAJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKIAkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KLQkgICAgICAgICpjeWd3aW4gfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKIAkgICAgICAgICAgZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwogCSAgICAgICAgICA7OwpAQCAtMjM4NCwxMCArMzM0OCw1MiBAQAogCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgogCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkgICRvcHRfZHJ5X3J1biB8fCB7Ci0JICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0JICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLQkgIH0KKyAgICAgICAgICBjYXNlICRob3N0IGluCisJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQorCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgorCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCisJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAorCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCisJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICAgICAgICAgZWxzZQorCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisJICAgICAgICAgIGZpCisJICAgICAgICBmaQorCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBlbHNlCisJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgorCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGZpCisJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKKwkgICAgICAgICAgICAkU0VEIC1lICcvSSBfX2ltcC9kJyAtZSAncy9JIF9fbm1fL0QgLztzL19ubV9fLy8nID4+ICckbmxpc3QnIgorCSAgICAgICAgfQorCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgorCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgICAgICB9CisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKikKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgICB9CisJICAgIDs7CisgICAgICAgICAgZXNhYwogCWRvbmUKIAogCSRvcHRfZHJ5X3J1biB8fCB7CkBAIC0yNDE1LDM2ICszNDIxLDE5IEBACiAJICBpZiB0ZXN0IC1mICIkbmxpc3QiUzsgdGhlbgogCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jZGVjbCInIDwgIiRubGlzdCJTID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIicKIAkgIGVsc2UKLQkgICAgJEVDSE8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCSAgICBlY2hvICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgIGZpCiAKLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICphZGRyZXNzOwogfSBsdF9kbHN5bWxpc3Q7Ci0iCi0JICBjYXNlICRob3N0IGluCi0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLQkgICAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotICAgb24gcHNldWRvLXJlbG9jcy4gICovIgotCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLQkgICpvc2Y1KikKLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCi0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotCSAgKikKLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKLQkgIGVzYWMKLQotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOwotJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQoge1wKICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCkBAIC0yNDU3LDcgKzM0NDYsNyBAQAogCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiA8ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCSAgICA7OwogCSAgZXNhYwotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogICB7MCwgKHZvaWQgKikgMH0KIH07CiAKQEAgLTI0ODQsNyArMzQ3Myw3IEBACiAJICAjIGxpbmtlZCBiZWZvcmUgYW55IG90aGVyIFBJQyBvYmplY3QuICBCdXQgd2UgbXVzdCBub3QgdXNlCiAJICAjIHBpY19mbGFnIHdoZW4gbGlua2luZyB3aXRoIC1zdGF0aWMuICBUaGUgcHJvYmxlbSBleGlzdHMgaW4KIAkgICMgRnJlZUJTRCAyLjIuNiBhbmQgaXMgZml4ZWQgaW4gRnJlZUJTRCAzLjEuCi0JICAqLSotZnJlZWJzZDIqfCotKi1mcmVlYnNkMy4wKnwqLSotZnJlZWJzZGVsZjMuMCopCisJICAqLSotZnJlZWJzZDIuKnwqLSotZnJlZWJzZDMuMCp8Ki0qLWZyZWVic2RlbGYzLjAqKQogCSAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWcgLURGUkVFQlNEX1dPUktBUk9VTkQiIDs7CiAJICAqLSotaHB1eCopCiAJICAgIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyIgIDs7CkBAIC0yNTAwLDcgKzM0ODksNyBAQAogCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbwogCSAgY2FzZSAkYXJnIGluCiAJICAtcGllIHwgLWZwaWUgfCAtZlBJRSkgOzsKLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7CisJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKIAkgIGVzYWMKIAlkb25lCiAKQEAgLTI1MTUsMTYgKzM1MDQsMTYgQEAKIAljYXNlICRob3N0IGluCiAJKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAJICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYiOyB0aGVuCi0JICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKLQkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKIAkgIGVsc2UKLQkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCi0JICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCiAJICBmaQogCSAgOzsKIAkqKQotCSAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCi0JICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCiAJICA7OwogCWVzYWMKIAk7OwpAQCAtMjUzOCw4ICszNTI3LDggQEAKICAgICAgICMgcmVhbGx5IHdhcyByZXF1aXJlZC4KIAogICAgICAgIyBOdWxsaWZ5IHRoZSBzeW1ib2wgZmlsZS4KLSAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCi0gICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSJgCisgICAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlIEBTWU1GSUxFQCUlImAKKyAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU0VEICJzJSBAU1lNRklMRUAlJSJgCiAgICAgZmkKIH0KIApAQCAtMjU0OSw2ICszNTM4LDcgQEAKICMgTmVlZCBhIGxvdCBvZiBnb28gdG8gaGFuZGxlICpib3RoKiBETExzIGFuZCBpbXBvcnQgbGlicwogIyBIYXMgdG8gYmUgYSBzaGVsbCBmdW5jdGlvbiBpbiBvcmRlciB0byAnZWF0JyB0aGUgYXJndW1lbnQKICMgdGhhdCBpcyBzdXBwbGllZCB3aGVuICRmaWxlX21hZ2ljX2NvbW1hbmQgaXMgY2FsbGVkLgorIyBEZXNwaXRlIHRoZSBuYW1lLCBhbHNvIGRlYWwgd2l0aCA2NCBiaXQgYmluYXJpZXMuCiBmdW5jX3dpbjMyX2xpYmlkICgpCiB7CiAgICRvcHRfZGVidWcKQEAgLTI1NTksOSArMzU0OSwxMSBAQAogICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBhcmNoaXZlIGltcG9ydCIKICAgICA7OwogICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCisgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCiAgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAotICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgcGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JyA+L2Rldi9udWxsIDsgdGhlbgotICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BICQxIHwKKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKIAkkU0VEIC1uIC1lICcKIAkgICAgMSwxMDB7CiAJCS8gSSAvewpAQCAtMjU5MCw2ICszNTgyLDEzMSBAQAogICAkRUNITyAiJHdpbjMyX2xpYmlkX3R5cGUiCiB9CiAKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliIEFSRworIworIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiAoKQoreworICAkb3B0X2RlYnVnCisgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWAkRExMVE9PTCAtLWlkZW50aWZ5LXN0cmljdCAtLWlkZW50aWZ5ICIkMSJgCit9CisKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgU0VDVElPTl9OQU1FIExJQk5BTUVzCisjCisjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKKyMgcGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUgbmFtZSBvZiB0aGUKKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCisjCisjIFNFQ1RJT05fTkFNRSBpcyBlaXRoZXIgLmlkYXRhJDYgb3IgLmlkYXRhJDcsIGRlcGVuZGluZworIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgorIworIyBFY2hvcyB0aGUgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorICAkT0JKRFVNUCAtcyAtLXNlY3Rpb24gIiQxIiAiJDIiIDI+L2Rldi9udWxsIHwKKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97CisgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCisgICAgICBzLy4qLz09PT1NQVJLPT09PS8KKyAgICAgIHAKKyAgICAgIGQKKyAgICB9CisgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAorICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCisgICAgLzpbCSBdKmZpbGUgZm9ybWF0IHBlW2ldXHssMVx9LS9kCisgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCisgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKKyAgICAvXj09PT1NQVJLPT09PS9wCisgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKKyAgICAvXi5cezQzXH0vIWQKKyAgICAjIEZyb20gcmVtYWluaW5nIGxpbmVzLCByZW1vdmUgZmlyc3QgNDMgY2hhcmFjdGVycworICAgIHMvXi5cezQzXH0vLycgfAorICAgICRTRUQgLW4gJworICAgICAgIyBKb2luIG1hcmtlciBhbmQgYWxsIGxpbmVzIHVudGlsIG5leHQgbWFya2VyIGludG8gYSBzaW5nbGUgbGluZQorICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQorICAgICAgSAorICAgICAgJCBiIHBhcmEKKyAgICAgIGIKKyAgICAgIDpwYXJhCisgICAgICB4CisgICAgICBzL1xuLy9nCisgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCisgICAgICBzL149PT09TUFSSz09PT0vLworICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQorICAgICAgcy9bXC4gXHRdKiQvLworICAgICAgIyBQcmludAorICAgICAgLy4vcCcgfAorICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAorICAgICMgY29udGVudHMgb2YgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgYWxsIG1lbWJlcnMgb2YgdGhlCisgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQorICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKKyAgICAjIGEgJy4nICh0aGF0IGlzLCBvYmpkdW1wJ3MgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5wcmludGFibGUKKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgorICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5CisgICAgIyBiZWdpbnMgd2l0aCBhIGxpdGVyYWwgJy4nIG9yIGEgc2luZ2xlIGNoYXJhY3RlciBmb2xsb3dlZCBieQorICAgICMgYSAnLicuCisgICAgIworICAgICMgT2YgdGhvc2UgdGhhdCByZW1haW4sIHByaW50IHRoZSBmaXJzdCBvbmUuCisgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKK30KKworIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRworIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisjIEFSRyBpcyBhIEdOVS9iaW51dGlscy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkRUdSRVAgJyAoX2hlYWRfW0EtWmEtejAtOV9dK19bYWRdbCp8W0EtWmEtejAtOV9dK19bYWRdbCpfaW5hbWUpJCdgCisgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRworIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisjIEFSRyBpcyBhbiBNUy1zdHlsZSBpbXBvcnQgbGlicmFyeS4gUmV0dXJucworIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgorZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEdSRVAgJ19OVUxMX0lNUE9SVF9ERVNDUklQVE9SJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgorfQorCisjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisjIGltcG9ydCBsaWJyYXJ5IEFSRy4KKyMKKyMgVGhpcyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBpcyBmb3IgdXNlIHdoZW4gJERMTFRPT0wKKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgorIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQorIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayAoKQoreworICAkb3B0X2RlYnVnCisgIGlmIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgIiQxIiA7IHRoZW4KKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5CisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKKyAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiA7IHRoZW4KKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCisgIGVsc2UKKyAgICAjIHVua25vd24KKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgorICBmaQorfQogCiAKICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgpAQCAtMjU5OCw3ICszNzE1LDE4IEBACiAgICAgJG9wdF9kZWJ1ZwogICAgIGZfZXhfYW5fYXJfZGlyPSIkMSI7IHNoaWZ0CiAgICAgZl9leF9hbl9hcl9vbGRsaWI9IiQxIgotICAgIGZ1bmNfc2hvd19ldmFsICIoY2QgXCRmX2V4X2FuX2FyX2RpciAmJiAkQVIgeCBcIlwkZl9leF9hbl9hcl9vbGRsaWJcIikiICdleGl0ICQ/JworICAgIGlmIHRlc3QgIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iID0geWVzOyB0aGVuCisgICAgICBsb2NrZmlsZT0kZl9leF9hbl9hcl9vbGRsaWIubG9jaworICAgICAgdW50aWwgJG9wdF9kcnlfcnVuIHx8IGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbworCWZ1bmNfZWNobyAiV2FpdGluZyBmb3IgJGxvY2tmaWxlIHRvIGJlIHJlbW92ZWQiCisJc2xlZXAgMgorICAgICAgZG9uZQorICAgIGZpCisgICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgXAorCQkgICAnc3RhdD0kPzsgcm0gLWYgIiRsb2NrZmlsZSI7IGV4aXQgJHN0YXQnCisgICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAgICRvcHRfZHJ5X3J1biB8fCBybSAtZiAiJGxvY2tmaWxlIgorICAgIGZpCiAgICAgaWYgKCRBUiB0ICIkZl9leF9hbl9hcl9vbGRsaWIiIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KICAgICAgOgogICAgIGVsc2UKQEAgLTI2NjksNyArMzc5Nyw3IEBACiAJICAgIGRhcndpbl9maWxlPQogCSAgICBkYXJ3aW5fZmlsZXM9CiAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwotCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgJE5MMlNQYAorCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcwogCSAgICBkb25lICMgJGRhcndpbl9maWxlbGlzdAogCSAgICAkUk0gLXJmIHVuZmF0LSQkCkBAIC0yNjg0LDI1ICszODEyLDMwIEBACiAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgogCTs7CiAgICAgICBlc2FjCi0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAorICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8IHNvcnQgfCAkTkwyU1BgCiAgICAgZG9uZQogCiAgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdD0iJG15X29sZG9ianMiCiB9CiAKIAotCi0jIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxIFthcmc9bm9dCisjIGZ1bmNfZW1pdF93cmFwcGVyIFthcmc9bm9dCiAjCi0jIEVtaXQgdGhlIGZpcnN0IHBhcnQgb2YgYSBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0IG9uIHN0ZG91dC4KLSMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUgZGVzY3JpcHRpb24gYXNzb2NpYXRlZCB3aXRoCi0jIGZ1bmNfZW1pdF93cmFwcGVyKCksIGJlbG93LgotZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgKCkKKyMgRW1pdCBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgorIyBEb24ndCBkaXJlY3RseSBvcGVuIGEgZmlsZSBiZWNhdXNlIHdlIG1heSB3YW50IHRvCisjIGluY29ycG9yYXRlIHRoZSBzY3JpcHQgY29udGVudHMgd2l0aGluIGEgY3lnd2luL21pbmd3CisjIHdyYXBwZXIgZXhlY3V0YWJsZS4gIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4KKyMgZnVuY19tb2RlX2xpbmsgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlcworIyBzZXQgdGhlcmVpbi4KKyMKKyMgQVJHIGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUgorIyB2YXJpYWJsZSB3aWxsIHRha2UuICBJZiAneWVzJywgdGhlbiB0aGUgZW1pdHRlZCBzY3JpcHQKKyMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGlzIHN0b3JlZCBpcworIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCisjIGJlaGF2aW9yLgorZnVuY19lbWl0X3dyYXBwZXIgKCkKIHsKLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPW5vCi0JaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotCSAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDFfYXJnMT0kMQotCWZpCisJZnVuY19lbWl0X3dyYXBwZXJfYXJnMT0kezEtbm99CiAKIAkkRUNITyAiXAogIyEgJFNIRUxMCkBAIC0yNzE4LDcgKzM4NTEsNiBAQAogCiAjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCiAjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotWHNlZD0nJHtTRUR9IC1lIDFzL15YLy8nCiBzZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCiAKICMgQmUgQm91cm5lIGNvbXBhdGlibGUKQEAgLTI3NDksMzEgKzM4ODEsMTM1IEBACiBlbHNlCiAgICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRFQ0hPIGFyZSBhbHJlYWR5IHNldC4KICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgotICAgIEVDSE89XCIkcWVjaG9cIgotICAgIGZpbGU9XCJcJDBcIgotICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCi0gICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gICAgICBzaGlmdAotICAgIGVsaWYgdGVzdCBcIlhcYHsgXCRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KLSAgICAgICMgWWlwcGVlLCBcJEVDSE8gd29ya3MhCi0gICAgICA6Ci0gICAgZWxzZQotICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJEVDSE8gd2lsbCB3b3JrLgotICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9Ci0gICAgZmkKLSAgZmlcCisgICAgZmlsZT1cIlwkMFwiIgorCisgICAgcUVDSE89YCRFQ0hPICIkRUNITyIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKKyAgICAkRUNITyAiXAorCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKK1wkMQorX0xURUNIT19FT0YnCit9CisgICAgRUNITz1cIiRxRUNIT1wiCisgIGZpCisKKyMgVmVyeSBiYXNpYyBvcHRpb24gcGFyc2luZy4gVGhlc2Ugb3B0aW9ucyBhcmUgKGEpIHNwZWNpZmljIHRvCisjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KKyMgd2luZG93cyBwbGF0Zm9ybXMsIGFuZCAoYykgYWxsIGJlZ2luIHdpdGggdGhlIHN0cmluZyAiLS1sdC0iCisjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCisjIHRoaXMgcGF0dGVybikuCisjCisjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgorIworIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCitsdF9vcHRpb25fZGVidWc9CitmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKK3sKKyAgbHRfc2NyaXB0X2FyZzA9XCQwCisgIHNoaWZ0CisgIGZvciBsdF9vcHQKKyAgZG8KKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgorICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7CisgICAgLS1sdC1kdW1wLXNjcmlwdCkKKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCisgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgorICAgICAgICBsdF9kdW1wX0Y9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyVeLiovJSUnXGAKKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgorICAgICAgICBleGl0IDAKKyAgICAgIDs7CisgICAgLS1sdC0qKQorICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgorICAgICAgICBleGl0IDEKKyAgICAgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgorICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgorICBmaQorfQorCisjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKKyMgKHJlZGlyZWN0aW9uIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyKQorZnVuY19sdF9kdW1wX2FyZ3MgKCkKK3sKKyAgbHRfZHVtcF9hcmdzX049MTsKKyAgZm9yIGx0X2FyZworICBkbworICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbXCRsdF9kdW1wX2FyZ3NfTl06IFwkbHRfYXJnXCIKKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAorICBkb25lCit9CisKKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KK2Z1bmNfZXhlY19wcm9ncmFtX2NvcmUgKCkKK3sKICIKLQkkRUNITyAiXAorICBjYXNlICRob3N0IGluCisgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworICAqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQorICAgICRFQ0hPICJcCisgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorICAgICAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2WzBdOiBcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgMT4mMgorICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKKyAgICAgIGZpCisgICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKyAgICA7OworCisgICopCisgICAgJEVDSE8gIlwKKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCisgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorICAgICAgZmkKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorICAgIDs7CisgIGVzYWMKKyAgJEVDSE8gIlwKKyAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKKyAgICAgIGV4aXQgMQorfQorCisjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCisjIGxhdW5jaGVzIHRhcmdldCBhcHBsaWNhdGlvbiB3aXRoIHRoZSByZW1haW5pbmcgYXJndW1lbnRzLgorZnVuY19leGVjX3Byb2dyYW0gKCkKK3sKKyAgY2FzZSBcIiBcJCogXCIgaW4KKyAgKlxcIC0tbHQtKikKKyAgICBmb3IgbHRfd3JfYXJnCisgICAgZG8KKyAgICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KKyAgICAgIC0tbHQtKikgOzsKKyAgICAgICopIHNldCB4IFwiXCRAXCIgXCJcJGx0X3dyX2FyZ1wiOyBzaGlmdDs7CisgICAgICBlc2FjCisgICAgICBzaGlmdAorICAgIGRvbmUgOzsKKyAgZXNhYworICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KK30KKworICAjIFBhcnNlIG9wdGlvbnMKKyAgZnVuY19wYXJzZV9sdF9vcHRpb25zIFwiXCQwXCIgXCR7MStcIlwkQFwifQogCiAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qJCUlJ1xgCisgIHRoaXNkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qJCUlJ1xgCiAgIHRlc3QgXCJ4XCR0aGlzZGlyXCIgPSBcInhcJGZpbGVcIiAmJiB0aGlzZGlyPS4KIAogICAjIEZvbGxvdyBzeW1ib2xpYyBsaW5rcyB1bnRpbCB3ZSBnZXQgdG8gdGhlIHJlYWwgdGhpc2Rpci4KLSAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8ICRTRUQgLW4gJ3MvLiotPiAvL3AnXGAKICAgd2hpbGUgdGVzdCAtbiBcIlwkZmlsZVwiOyBkbwotICAgIGRlc3RkaXI9XGBcJEVDSE8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qXCQlJSdcYAorICAgIGRlc3RkaXI9XGBcJEVDSE8gXCJcJGZpbGVcIiB8ICRTRUQgJ3MlL1teL10qXCQlJSdcYAogCiAgICAgIyBJZiB0aGVyZSB3YXMgYSBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGNoYW5nZSB0aGlzZGlyLgogICAgIGlmIHRlc3QgXCJ4XCRkZXN0ZGlyXCIgIT0gXCJ4XCRmaWxlXCI7IHRoZW4KQEAgLTI3ODMsMzAgKzQwMTksMTMgQEAKICAgICAgIGVzYWMKICAgICBmaQogCi0gICAgZmlsZT1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyVeLiovJSUnXGAKLSAgICBmaWxlPVxgbHMgLWxkIFwiXCR0aGlzZGlyL1wkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgICAgZmlsZT1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyVeLiovJSUnXGAKKyAgICBmaWxlPVxgbHMgLWxkIFwiXCR0aGlzZGlyL1wkZmlsZVwiIHwgJFNFRCAtbiAncy8uKi0+IC8vcCdcYAogICBkb25lCi0iCi19Ci0jIGVuZDogZnVuY19lbWl0X3dyYXBwZXJfcGFydDEKLQotIyBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiBbYXJnPW5vXQotIwotIyBFbWl0IHRoZSBzZWNvbmQgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCi1mdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiAoKQotewotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxPSQxCi0JZmkKLQotCSRFQ0hPICJcCiAKICAgIyBVc3VhbGx5ICdubycsIGV4Y2VwdCBvbiBjeWd3aW4vbWluZ3cgd2hlbiBlbWJlZGRlZCBpbnRvCiAgICMgdGhlIGN3cmFwcGVyLgotICBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUj0kZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMQorICBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUj0kZnVuY19lbWl0X3dyYXBwZXJfYXJnMQogICBpZiB0ZXN0IFwiXCRXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUlwiID0gXCJ5ZXNcIjsgdGhlbgogICAgICMgc3BlY2lhbCBjYXNlIGZvciAnLicKICAgICBpZiB0ZXN0IFwiXCR0aGlzZGlyXCIgPSBcIi5cIjsgdGhlbgpAQCAtMjgxNCw3ICs0MDMzLDcgQEAKICAgICBmaQogICAgICMgcmVtb3ZlIC5saWJzIGZyb20gdGhpc2RpcgogICAgIGNhc2UgXCJcJHRoaXNkaXJcIiBpbgotICAgICpbXFxcXC9dJG9iamRpciApIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCR0aGlzZGlyXCIgfCBcJFhzZWQgLWUgJ3MlW1xcXFwvXVteXFxcXC9dKiQlJSdcYCA7OworICAgICpbXFxcXC9dJG9iamRpciApIHRoaXNkaXI9XGBcJEVDSE8gXCJcJHRoaXNkaXJcIiB8ICRTRUQgJ3MlW1xcXFwvXVteXFxcXC9dKiQlJSdcYCA7OwogICAgICRvYmpkaXIgKSAgIHRoaXNkaXI9LiA7OwogICAgIGVzYWMKICAgZmkKQEAgLTI4NjksNiArNDA4OCwxOCBAQAogCiAgIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCiAKKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorCSMKKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAorCSMgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4KKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKwkgICRFQ0hPICJcCisgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorIgorCWZpCisKIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KIAlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCiAJICAkRUNITyAiXApAQCAtMjg3NywyNTQgKzQxMDgsMjkgQEAKIAogICAgICMgU29tZSBzeXN0ZW1zIGNhbm5vdCBjb3BlIHdpdGggY29sb24tdGVybWluYXRlZCAkc2hsaWJwYXRoX3ZhcgogICAgICMgVGhlIHNlY29uZCBjb2xvbiBpcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIEJlT1MgUjQgc2VkCi0gICAgJHNobGlicGF0aF92YXI9XGBcJEVDSE8gXCJYXCQkc2hsaWJwYXRoX3ZhclwiIHwgXCRYc2VkIC1lICdzLzo6KlwkLy8nXGAKKyAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkRUNITyBcIlwkJHNobGlicGF0aF92YXJcIiB8ICRTRUQgJ3MvOjoqXCQvLydcYAogCiAgICAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCiAiCiAJZmkKIAotCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCi0JaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0JICAkRUNITyAiXAotICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICi0gICAgUEFUSD0kZGxsc2VhcmNocGF0aDpcJFBBVEgKLSIKLQlmaQotCiAJJEVDSE8gIlwKICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCiAgICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgotIgotCWNhc2UgJGhvc3QgaW4KLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQotCSAgJEVDSE8gIlwKLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotIgotCSAgOzsKLQotCSopCi0JICAkRUNITyAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCi0JICA7OwotCWVzYWMKLQkkRUNITyAiXAotICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotICAgICAgZXhpdCAxCisgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9CiAgICAgZmkKICAgZWxzZQogICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KICAgICBcJEVDSE8gXCJcJDA6IGVycm9yOiBcXFxgXCRwcm9nZGlyL1wkcHJvZ3JhbScgZG9lcyBub3QgZXhpc3RcIiAxPiYyCiAgICAgXCRFQ0hPIFwiVGhpcyBzY3JpcHQgaXMganVzdCBhIHdyYXBwZXIgZm9yIFwkcHJvZ3JhbS5cIiAxPiYyCi0gICAgJEVDSE8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgorICAgIFwkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCiAgICAgZXhpdCAxCiAgIGZpCiBmaVwKICIKIH0KLSMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MgogCiAKLSMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KLSMKLSMgRW1pdCBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBEb24ndCBkaXJlY3RseSBvcGVuIGEgZmlsZSBiZWNhdXNlIHdlIG1heSB3YW50IHRvCi0jIGluY29ycG9yYXRlIHRoZSBzY3JpcHQgY29udGVudHMgd2l0aGluIGEgY3lnd2luL21pbmd3Ci0jIHdyYXBwZXIgZXhlY3V0YWJsZS4gIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4KLSMgZnVuY19tb2RlX2xpbmsgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlcwotIyBzZXQgdGhlcmVpbi4KLSMKLSMgQVJHIGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUgotIyB2YXJpYWJsZSB3aWxsIHRha2UuICBJZiAneWVzJywgdGhlbiB0aGUgZW1pdHRlZCBzY3JpcHQKLSMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGlzIHN0b3JlZCBpcwotIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCi0jIGJlaGF2aW9yLgotZnVuY19lbWl0X3dyYXBwZXIgKCkKLXsKLQlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPW5vCi0JaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotCSAgZnVuY19lbWl0X3dyYXBwZXJfYXJnMT0kMQotCWZpCi0KLQkjIHNwbGl0IHRoaXMgdXAgc28gdGhhdCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCi0JIyBjYW4gY2FsbCBlYWNoIHBhcnQgaW5kZXBlbmRlbnRseS4KLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKLQlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKLX0KLQotCi0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZwotIwotIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgotIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCi0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQotIyBidWlsZCBlbnZpcm9ubWVudHM6Ci0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KLSMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCi0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCi0jIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCi0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgotIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCi0jCi0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCi0jIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi1mdW5jX3RvX2hvc3RfcGF0aCAoKQotewotICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotICBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0gICAgY2FzZSAkaG9zdCBpbgotICAgICAgKm1pbmd3KiApCi0gICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cwotICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0Ci0gICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gKCBjbWQgLy9jIGVjaG8gIiQxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcyIgKSAyPi9kZXYvbnVsbCB8fCBlY2hvICIiYAotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqY3lnd2luKiApCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWBjeWdwYXRoIC13ICIkMSJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICogKQotICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybwotICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgotICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAotICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCi0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iIgotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLSAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCi0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0gICAgICAgICAgIyBGYWxsYmFjazoKLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgotICAgICAgICBmaQotICAgICAgICA7OwotICAgIGVzYWMKLSAgZmkKLX0KLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAotCi0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKLSMKLSMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCi0jIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgotIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndwotIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLSMKLSMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCi0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKLSMgb24gb3V0cHV0LgotIwotIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCi1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKLXsKLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCi0gIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSAgICBjYXNlICRob3N0IGluCi0gICAgICAqbWluZ3cqICkKLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KLSAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQotICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj0iJDEiCi0gICAgICAgICMgT25jZSBzZXQgZm9yIHRoaXMgY2FsbCwgdGhpcyB2YXJpYWJsZSBzaG91bGQgbm90IGJlCi0gICAgICAgICMgcmVhc3NpZ25lZC4gSXQgaXMgdXNlZCBpbiB0aGEgZmFsbGJhY2sgY2FzZS4KLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAkU0VEIC1lICdzfF46Knx8JyAtZSAnc3w6KiR8fCdgCi0gICAgICAgIGNhc2UgJGJ1aWxkIGluCi0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCi0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCi0gICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YCggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKmN5Z3dpbiogKQotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKiApCi0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUwotICAgICAgICAgICAgSUZTPToKLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbwotICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgotICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotICAgICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICBJRlM9OgotICAgICAgICAgICAgZG9uZQotICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKLSAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCi0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCi0gICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgotICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndwotICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCi0gICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAotICAgICAgICBmaQotICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjawotICAgICAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgY2FzZSAiJDEiIGluCi0gICAgICAgICAgKjogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDsiCi0gICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotfQotIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAotCiAjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAogIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKQEAgLTMxNDEsMzEgKzQxNDcsMjMgQEAKIAogICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgogICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotCi0gICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAotICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAotICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgogKi8KIEVPRgogCSAgICBjYXQgPDwiRU9GIgorI2lmZGVmIF9NU0NfVkVSCisjIGRlZmluZSBfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEUgMQorI2VuZGlmCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpZmRlZiBfTVNDX1ZFUgogIyBpbmNsdWRlIDxkaXJlY3QuaD4KICMgaW5jbHVkZSA8cHJvY2Vzcy5oPgogIyBpbmNsdWRlIDxpby5oPgotIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQogI2Vsc2UKICMgaW5jbHVkZSA8dW5pc3RkLmg+CiAjIGluY2x1ZGUgPHN0ZGludC5oPgogIyBpZmRlZiBfX0NZR1dJTl9fCiAjICBpbmNsdWRlIDxpby5oPgotIyAgZGVmaW5lIEhBVkVfU0VURU5WCi0jICBpZmRlZiBfX1NUUklDVF9BTlNJX18KLWNoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7Ci1pbnQgcHV0ZW52IChjaGFyICopOwotaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7Ci0jICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCiAjaW5jbHVkZSA8bWFsbG9jLmg+CkBAIC0zMTc3LDYgKzQxNzUsNDQgQEAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKKy8qIGRlY2xhcmF0aW9ucyBvZiBub24tQU5TSSBmdW5jdGlvbnMgKi8KKyNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorIyBpZmRlZiBfX1NUUklDVF9BTlNJX18KK2ludCBfcHV0ZW52IChjb25zdCBjaGFyICopOworIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyBpZmRlZiBfX1NUUklDVF9BTlNJX18KK2NoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7CitpbnQgcHV0ZW52IChjaGFyICopOworaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisjIGVuZGlmCisvKiAjZWxpZiBkZWZpbmVkIChvdGhlciBwbGF0Zm9ybXMpIC4uLiAqLworI2VuZGlmCisKKy8qIHBvcnRhYmlsaXR5IGRlZmluZXMsIGV4Y2x1ZGluZyBwYXRoIGhhbmRsaW5nIG1hY3JvcyAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCisjIGRlZmluZSBzdGF0ICAgIF9zdGF0CisjIGRlZmluZSBjaG1vZCAgIF9jaG1vZAorIyBkZWZpbmUgZ2V0Y3dkICBfZ2V0Y3dkCisjIGRlZmluZSBwdXRlbnYgIF9wdXRlbnYKKyMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKKyMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECisjICBkZWZpbmUgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBpbnRwdHJfdCBpbnQKKyMgZW5kaWYKKyNlbGlmIGRlZmluZWQoX19NSU5HVzMyX18pCisjIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCisjIGRlZmluZSBzdGF0ICAgIF9zdGF0CisjIGRlZmluZSBjaG1vZCAgIF9jaG1vZAorIyBkZWZpbmUgZ2V0Y3dkICBfZ2V0Y3dkCisjIGRlZmluZSBwdXRlbnYgIF9wdXRlbnYKKyNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKKyMgZGVmaW5lIEhBVkVfU0VURU5WCisjIGRlZmluZSBGT1BFTl9XQiAid2IiCisvKiAjZWxpZiBkZWZpbmVkIChvdGhlciBwbGF0Zm9ybXMpIC4uLiAqLworI2VuZGlmCisKICNpZiBkZWZpbmVkKFBBVEhfTUFYKQogIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAogI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQpAQCAtMzE5MiwxNCArNDIyOCw3IEBACiAjIGRlZmluZSBTX0lYR1JQIDAKICNlbmRpZgogCi0jaWZkZWYgX01TQ19WRVIKLSMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKLSMgZGVmaW5lIHN0YXQgX3N0YXQKLSMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECi0jICBkZWZpbmUgaW50cHRyX3QgaW50Ci0jIGVuZGlmCi0jZW5kaWYKLQorLyogcGF0aCBoYW5kbGluZyBwb3J0YWJpbGl0eSBtYWNyb3MgKi8KICNpZm5kZWYgRElSX1NFUEFSQVRPUgogIyBkZWZpbmUgRElSX1NFUEFSQVRPUiAnLycKICMgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICc6JwpAQCAtMzIzMCwxMCArNDI1OSw2IEBACiAjIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1JfMikKICNlbmRpZiAvKiBQQVRIX1NFUEFSQVRPUl8yICovCiAKLSNpZmRlZiBfX0NZR1dJTl9fCi0jIGRlZmluZSBGT1BFTl9XQiAid2IiCi0jZW5kaWYKLQogI2lmbmRlZiBGT1BFTl9XQgogIyBkZWZpbmUgRk9QRU5fV0IgInciCiAjZW5kaWYKQEAgLTMyNDYsMjIgKzQyNzEsMTMgQEAKICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKIH0gd2hpbGUgKDApCiAKLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKLSNpZiBkZWZpbmVkIERFQlVHV1JBUFBFUgotIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpIGx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiBhcmdzCi1zdGF0aWMgdm9pZAotbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKLXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0gICAgKHZvaWQpIHZmcHJpbnRmIChzdGRlcnIsIGZtdCwgYXJncyk7Ci0gICAgdmFfZW5kIChhcmdzKTsKLX0KKyNpZiBkZWZpbmVkKExUX0RFQlVHV1JBUFBFUikKK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOwogI2Vsc2UKLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQorc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7CiAjZW5kaWYKIAotY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KIAogdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7CiBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOwpAQCAtMzI3MSw0MSArNDI4NywyNyBAQAogaW50IG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CiBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7CiBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKLXZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cit2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwordm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7CitzdGF0aWMgY29uc3QgY2hhciAqbm9ubnVsbCAoY29uc3QgY2hhciAqcyk7CitzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOwogdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKIGNoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZyk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpOwotdm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpOwotaW50IGx0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSk7CiB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogdm9pZCBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKLQotc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQxID0KK2NoYXIgKipwcmVwYXJlX3NwYXduIChjaGFyICoqYXJndik7Cit2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKIEVPRgogCi0JICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxIHllcyB8Ci0JICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKLQkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJwotCSAgICBlY2hvICI7IgogCSAgICBjYXQgPDxFT0YKLQotc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQyID0KLUVPRgotCSAgICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiB5ZXMgfAotCSAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCi0JICAgICAgICAgICAgIC1lICdzL14vICAiLycgLWUgJ3MvJC9cXG4iLycKLQkgICAgZWNobyAiOyIKLQotCSAgICBjYXQgPDxFT0YKLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Cit2b2xhdGlsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwogY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOwogRU9GCiAKIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgorICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJHRlbXBfcnBhdGgiCiAJICAgICAgY2F0IDw8RU9GCi1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7Citjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKIEVPRgogCSAgICBlbHNlCiAJICAgICAgY2F0IDw8IkVPRiIKQEAgLTMzMTQsMTAgKzQzMTYsMTAgQEAKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkZGxsc2VhcmNocGF0aDoiCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCiAJICAgICAgY2F0IDw8RU9GCiBjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICJQQVRIIjsKLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwogRU9GCiAJICAgIGVsc2UKIAkgICAgICBjYXQgPDwiRU9GIgpAQCAtMzM0MCwyNCArNDM0MiwxMCBAQAogCSAgICBjYXQgPDwiRU9GIgogCiAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgotI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKIAotc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOwogc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7Ci0KIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Ci0KLXN0YXRpYyBjb25zdCBzaXplX3QgZW52X3NldF9vcHRfbGVuICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDc7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X3NldF9vcHQgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXNldCI7Ci0gIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIHZhbHVlIG9mIGZvbyBpcyBzZXQgdG8gYmFyICovCi0KLXN0YXRpYyBjb25zdCBzaXplX3QgZW52X3ByZXBlbmRfb3B0X2xlbiA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCArIDExOwotc3RhdGljIGNvbnN0IGNoYXIgKmVudl9wcmVwZW5kX29wdCAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImVudi1wcmVwZW5kIjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyBiYXIke2Zvb30gKi8KLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfYXBwZW5kX29wdF9sZW4gID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTA7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X2FwcGVuZF9vcHQgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LWFwcGVuZCI7Ci0gIC8qIGFyZ3VtZW50IGlzIHB1dGVudi1zdHlsZSAiZm9vPWJhciIsIG5ldyB2YWx1ZSBvZiBmb28gaXMgJHtmb299YmFyICovCitzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOwogCiBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC0zMzc0LDEwICs0MzYyLDEzIEBACiAgIGludCBpOwogCiAgIHByb2dyYW1fbmFtZSA9IChjaGFyICopIHhzdHJkdXAgKGJhc2VfbmFtZSAoYXJndlswXSkpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOworICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CiAKLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KKyAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQKKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0CisgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKKyAgICovCisgIG5ld2FyZ2M9MDsKICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKICAgICB7CiAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKQEAgLTMzOTEsMjUgKzQzODIsNTcgQEAKIAkgICAgICBlc2FjCiAKIAkgICAgY2F0IDw8IkVPRiIKLQkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDEpOwotCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0Mik7CisJICBsdF9kdW1wX3NjcmlwdCAoc3Rkb3V0KTsKIAkgIHJldHVybiAwOwogCX0KKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGRlYnVnX29wdCkgPT0gMCkKKwl7CisgICAgICAgICAgbHRfZGVidWcgPSAxOworICAgICAgICAgIGNvbnRpbnVlOworCX0KKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKyAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgorICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCisgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCisgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCisgICAgICAgICAgICovCisgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworICAgICAgICB9CisgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKICAgICB9CisgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CiAKLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworRU9GCisJICAgIGNhdCA8PEVPRgorICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7CitFT0YKKwkgICAgY2F0IDw8IkVPRiIKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgcHJvZ3JhbV9uYW1lOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKTsKKwogICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOwogICBpZiAodG1wX3BhdGhzcGVjID09IE5VTEwpCi0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLQkJCSAgdG1wX3BhdGhzcGVjKSk7CisgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorCQkgIHRtcF9wYXRoc3BlYyk7CiAKICAgYWN0dWFsX2N3cmFwcGVyX3BhdGggPSBjaGFzZV9zeW1saW5rcyAodG1wX3BhdGhzcGVjKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAorCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CiAKLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCAoYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwogICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CiAKICAgLyogd3JhcHBlciBuYW1lIHRyYW5zZm9ybXMgKi8KQEAgLTM0MjcsOCArNDQ1MCw5IEBACiAgIHRhcmdldF9uYW1lID0gdG1wX3BhdGhzcGVjOwogICB0bXBfcGF0aHNwZWMgPSAwOwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCi0JCQkgIHRhcmdldF9uYW1lKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKwkJICB0YXJnZXRfbmFtZSk7CiBFT0YKIAogCSAgICBjYXQgPDxFT0YKQEAgLTM0NzgsODAgKzQ1MDIsMTkgQEAKIAogICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KICAgbHRfc2V0ZW52ICgiRFVBTENBU0UiLCAiMSIpOyAgLyogZm9yIE1TSyBzaCAqLwotICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAorICAgICBiZSBwcmVwZW5kZWQgYmVmb3JlICh0aGF0IGlzLCBhcHBlYXIgYWZ0ZXIpIExJQl9QQVRIX1ZBTFVFICgkdGVtcF9ycGF0aCkKKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCisgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCiAgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOworICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKIAotICBuZXdhcmdjPTA7Ci0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0gICAgewotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9zZXRfb3B0LCBlbnZfc2V0X29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfc2V0X29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfc2V0X29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfc2V0X29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfcHJlcGVuZF9vcHQsIGVudl9wcmVwZW5kX29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfcHJlcGVuZF9vcHRfbGVuXSA9PSAnPScpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X3ByZXBlbmRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9wcmVwZW5kX29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBlbnZfYXBwZW5kX29wdCwgZW52X2FwcGVuZF9vcHRfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV1bZW52X2FwcGVuZF9vcHRfbGVuXSA9PSAnPScpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnAgPSBhcmd2W2ldICsgZW52X2FwcGVuZF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAocCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICdcMCcgJiYgaSArIDEgPCBhcmdjKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X2FwcGVuZF9vcHQpOwotICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgotICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCi0gICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCi0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0gICAgICAgICAgICovCi0gICAgICAgICAgbHRfZmF0YWwgKCJVbnJlY29nbml6ZWQgb3B0aW9uIGluICVzIG5hbWVzcGFjZTogJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLSAgICAgICAgfQotICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLwotICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0gICAgfQotICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwotCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbHRfYXJndl96ZXJvOiAlc1xuIiwKKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKICAgICB7Ci0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKKwkJICAgICAgaSwgbm9ubnVsbCAobmV3YXJneltpXSkpOwogICAgIH0KIAogRU9GCkBAIC0zNTYwLDExICs0NTIzLDE0IEBACiAJICAgICAgbWluZ3cqKQogCQljYXQgPDwiRU9GIgogICAvKiBleGVjdiBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgb24gbWluZ3cgYXMgZXhwZWN0ZWQgb24gdW5peCAqLworICBuZXdhcmd6ID0gcHJlcGFyZV9zcGF3biAobmV3YXJneik7CiAgIHJ2YWwgPSBfc3Bhd252IChfUF9XQUlULCBsdF9hcmd2X3plcm8sIChjb25zdCBjaGFyICogY29uc3QgKikgbmV3YXJneik7CiAgIGlmIChydmFsID09IC0xKQogICAgIHsKICAgICAgIC8qIGZhaWxlZCB0byBzdGFydCBwcm9jZXNzICovCi0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOworICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICAgIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6ICVzXG4iLAorCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKICAgICAgIHJldHVybiAxMjc7CiAgICAgfQogICByZXR1cm4gcnZhbDsKQEAgLTM1ODYsNyArNDU1Miw3IEBACiB7CiAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CiAgIGlmICghcCkKLSAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOwogCiAgIHJldHVybiBwOwogfQpAQCAtMzYyMCw4ICs0NTg2LDggQEAKIHsKICAgc3RydWN0IHN0YXQgc3Q7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHBhdGgpKTsKICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCiAgICAgcmV0dXJuIDA7CiAKQEAgLTM2MzgsOCArNDYwNCw4IEBACiAgIGludCBydmFsID0gMDsKICAgc3RydWN0IHN0YXQgc3Q7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFrZV9leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwogICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKICAgICByZXR1cm4gMDsKIApAQCAtMzY2NSw4ICs0NjMxLDggQEAKICAgaW50IHRtcF9sZW47CiAgIGNoYXIgKmNvbmNhdF9uYW1lOwogCi0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCi0JCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKIAogICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQogICAgIHJldHVybiBOVUxMOwpAQCAtMzcxOSw3ICs0Njg1LDggQEAKIAkJewogCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCiAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotCQkgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CiAJCSAgY29uY2F0X25hbWUgPQogCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CkBAIC0zNzQ0LDcgKzQ3MTEsOCBAQAogICAgIH0KICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLwogICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7CisgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogICB0bXBfbGVuID0gc3RybGVuICh0bXApOwogICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwogICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOwpAQCAtMzc3MCw4ICs0NzM4LDkgQEAKICAgaW50IGhhc19zeW1saW5rcyA9IDA7CiAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKICAgICB7Ci0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAgICAgImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCisJCSAgICAgIHRtcF9wYXRoc3BlYyk7CiAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCiAJewogCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKQEAgLTM3OTMsOCArNDc2Miw5IEBACiAJfQogICAgICAgZWxzZQogCXsKLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7Ci0JICBsdF9mYXRhbCAoIkVycm9yIGFjY2Vzc2luZyBmaWxlICVzICglcykiLCB0bXBfcGF0aHNwZWMsIGVycnN0cik7CisJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAorCQkgICAgdG1wX3BhdGhzcGVjLCBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAJfQogICAgIH0KICAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CkBAIC0zODA3LDcgKzQ3NzcsOCBAQAogICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CiAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKICAgICB7Ci0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJImNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOwogICAgIH0KICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CiAjZW5kaWYKQEAgLTM4MzMsMTEgKzQ4MDQsMjUgQEAKICAgcmV0dXJuIHN0cjsKIH0KIAordm9pZAorbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLikKK3sKKyAgdmFfbGlzdCBhcmdzOworICBpZiAobHRfZGVidWcpCisgICAgeworICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOworICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CisgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKyAgICAgIHZhX2VuZCAoYXJncyk7CisgICAgfQorfQorCiBzdGF0aWMgdm9pZAotbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAorCSAgICAgICBpbnQgbGluZSwgY29uc3QgY2hhciAqbW9kZSwKIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKIHsKLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOworICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7CiAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKICAgZnByaW50ZiAoc3RkZXJyLCAiLlxuIik7CiAKQEAgLTM4NDYsMjAgKzQ4MzEsMzIgQEAKIH0KIAogdm9pZAotbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKK2x0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQogewogICB2YV9saXN0IGFwOwogICB2YV9zdGFydCAoYXAsIG1lc3NhZ2UpOwotICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CiAgIHZhX2VuZCAoYXApOwogfQogCitzdGF0aWMgY29uc3QgY2hhciAqCitub25udWxsIChjb25zdCBjaGFyICpzKQoreworICByZXR1cm4gcyA/IHMgOiAiKG51bGwpIjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiAocyAmJiAhKnMpID8gIihlbXB0eSkiIDogbm9ubnVsbCAocyk7Cit9CisKIHZvaWQKIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogICB7CiAjaWZkZWYgSEFWRV9TRVRFTlYKICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLwpAQCAtMzkwNCw5NSArNDkwMSwxMiBAQAogICByZXR1cm4gbmV3X3ZhbHVlOwogfQogCi1pbnQKLWx0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSkKLXsKLSAgY29uc3QgY2hhciAqcDsKLSAgaW50IGxlbjsKLSAgaWYgKCFhcmcgfHwgISphcmcpCi0gICAgcmV0dXJuIDE7Ci0KLSAgcCA9IHN0cmNociAoYXJnLCAoaW50KSc9Jyk7Ci0KLSAgaWYgKCFwKQotICAgIHJldHVybiAxOwotCi0gICp2YWx1ZSA9IHhzdHJkdXAgKCsrcCk7Ci0KLSAgbGVuID0gc3RybGVuIChhcmcpIC0gc3RybGVuICgqdmFsdWUpOwotICAqbmFtZSA9IFhNQUxMT0MgKGNoYXIsIGxlbik7Ci0gIHN0cm5jcHkgKCpuYW1lLCBhcmcsIGxlbi0xKTsKLSAgKCpuYW1lKVtsZW4gLSAxXSA9ICdcMCc7Ci0KLSAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfc2V0X29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbHRfc2V0ZW52IChuYW1lLCB2YWx1ZSk7Ci0gIFhGUkVFIChuYW1lKTsKLSAgWEZSRUUgKHZhbHVlKTsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLSAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfcHJlcGVuZF9vcHQsIGFyZyk7Ci0gICAgfQotCi0gIG5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKLSAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOwotICBYRlJFRSAobmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpCi17Ci0gIGNoYXIgKm5hbWUgPSBOVUxMOwotICBjaGFyICp2YWx1ZSA9IE5VTEw7Ci0gIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7Ci0KLSAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKLSAgICB7Ci0gICAgICBYRlJFRSAobmFtZSk7Ci0gICAgICBYRlJFRSAodmFsdWUpOwotICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X2FwcGVuZF9vcHQsIGFyZyk7Ci0gICAgfQotCi0gIG5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAxKTsKLSAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOwotICBYRlJFRSAobmV3X3ZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCiB2b2lkCiBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogCiAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKICAgICB7CkBAIC00MDExLDkgKzQ5MjUsOSBAQAogdm9pZAogbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKIAogICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCiAgICAgewpAQCAtNDAyMywxMSArNDkzNywxNTggQEAKICAgICB9CiB9CiAKK0VPRgorCSAgICBjYXNlICRob3N0X29zIGluCisJICAgICAgbWluZ3cqKQorCQljYXQgPDwiRU9GIgogCisvKiBQcmVwYXJlcyBhbiBhcmd1bWVudCB2ZWN0b3IgYmVmb3JlIGNhbGxpbmcgc3Bhd24oKS4KKyAgIE5vdGUgdGhhdCBzcGF3bigpIGRvZXMgbm90IGJ5IGl0c2VsZiBjYWxsIHRoZSBjb21tYW5kIGludGVycHJldGVyCisgICAgIChnZXRlbnYgKCJDT01TUEVDIikgIT0gTlVMTCA/IGdldGVudiAoIkNPTVNQRUMiKSA6CisgICAgICAoeyBPU1ZFUlNJT05JTkZPIHY7IHYuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZihPU1ZFUlNJT05JTkZPKTsKKyAgICAgICAgIEdldFZlcnNpb25FeCgmdik7CisgICAgICAgICB2LmR3UGxhdGZvcm1JZCA9PSBWRVJfUExBVEZPUk1fV0lOMzJfTlQ7CisgICAgICB9KSA/ICJjbWQuZXhlIiA6ICJjb21tYW5kLmNvbSIpLgorICAgSW5zdGVhZCBpdCBzaW1wbHkgY29uY2F0ZW5hdGVzIHRoZSBhcmd1bWVudHMsIHNlcGFyYXRlZCBieSAnICcsIGFuZCBjYWxscworICAgQ3JlYXRlUHJvY2VzcygpLiAgV2UgbXVzdCBxdW90ZSB0aGUgYXJndW1lbnRzIHNpbmNlIFdpbjMyIENyZWF0ZVByb2Nlc3MoKQorICAgaW50ZXJwcmV0cyBjaGFyYWN0ZXJzIGxpa2UgJyAnLCAnXHQnLCAnXFwnLCAnIicgKGJ1dCBub3QgJzwnIGFuZCAnPicpIGluIGEKKyAgIHNwZWNpYWwgd2F5OgorICAgLSBTcGFjZSBhbmQgdGFiIGFyZSBpbnRlcnByZXRlZCBhcyBkZWxpbWl0ZXJzLiBUaGV5IGFyZSBub3QgdHJlYXRlZCBhcworICAgICBkZWxpbWl0ZXJzIGlmIHRoZXkgYXJlIHN1cnJvdW5kZWQgYnkgZG91YmxlIHF1b3RlczogIi4uLiIuCisgICAtIFVuZXNjYXBlZCBkb3VibGUgcXVvdGVzIGFyZSByZW1vdmVkIGZyb20gdGhlIGlucHV0LiBUaGVpciBvbmx5IGVmZmVjdCBpcworICAgICB0aGF0IHdpdGhpbiBkb3VibGUgcXVvdGVzLCBzcGFjZSBhbmQgdGFiIGFyZSB0cmVhdGVkIGxpa2Ugbm9ybWFsCisgICAgIGNoYXJhY3RlcnMuCisgICAtIEJhY2tzbGFzaGVzIG5vdCBmb2xsb3dlZCBieSBkb3VibGUgcXVvdGVzIGFyZSBub3Qgc3BlY2lhbC4KKyAgIC0gQnV0IDIqbisxIGJhY2tzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgZG91YmxlIHF1b3RlIGJlY29tZQorICAgICBuIGJhY2tzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgZG91YmxlIHF1b3RlIChuID49IDApOgorICAgICAgIFwiIC0+ICIKKyAgICAgICBcXFwiIC0+IFwiCisgICAgICAgXFxcXFwiIC0+IFxcIgorICovCisjZGVmaW5lIFNIRUxMX1NQRUNJQUxfQ0hBUlMgIlwiXFwgXDAwMVwwMDJcMDAzXDAwNFwwMDVcMDA2XDAwN1wwMTBcMDExXDAxMlwwMTNcMDE0XDAxNVwwMTZcMDE3XDAyMFwwMjFcMDIyXDAyM1wwMjRcMDI1XDAyNlwwMjdcMDMwXDAzMVwwMzJcMDMzXDAzNFwwMzVcMDM2XDAzNyIKKyNkZWZpbmUgU0hFTExfU1BBQ0VfQ0hBUlMgIiBcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcMDA3XDAxMFwwMTFcMDEyXDAxM1wwMTRcMDE1XDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3IgorY2hhciAqKgorcHJlcGFyZV9zcGF3biAoY2hhciAqKmFyZ3YpCit7CisgIHNpemVfdCBhcmdjOworICBjaGFyICoqbmV3X2FyZ3Y7CisgIHNpemVfdCBpOworCisgIC8qIENvdW50IG51bWJlciBvZiBhcmd1bWVudHMuICAqLworICBmb3IgKGFyZ2MgPSAwOyBhcmd2W2FyZ2NdICE9IE5VTEw7IGFyZ2MrKykKKyAgICA7CisKKyAgLyogQWxsb2NhdGUgbmV3IGFyZ3VtZW50IHZlY3Rvci4gICovCisgIG5ld19hcmd2ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisKKyAgLyogUHV0IHF1b3RlZCBhcmd1bWVudHMgaW50byB0aGUgbmV3IGFyZ3VtZW50IHZlY3Rvci4gICovCisgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspCisgICAgeworICAgICAgY29uc3QgY2hhciAqc3RyaW5nID0gYXJndltpXTsKKworICAgICAgaWYgKHN0cmluZ1swXSA9PSAnXDAnKQorCW5ld19hcmd2W2ldID0geHN0cmR1cCAoIlwiXCIiKTsKKyAgICAgIGVsc2UgaWYgKHN0cnBicmsgKHN0cmluZywgU0hFTExfU1BFQ0lBTF9DSEFSUykgIT0gTlVMTCkKKwl7CisJICBpbnQgcXVvdGVfYXJvdW5kID0gKHN0cnBicmsgKHN0cmluZywgU0hFTExfU1BBQ0VfQ0hBUlMpICE9IE5VTEwpOworCSAgc2l6ZV90IGxlbmd0aDsKKwkgIHVuc2lnbmVkIGludCBiYWNrc2xhc2hlczsKKwkgIGNvbnN0IGNoYXIgKnM7CisJICBjaGFyICpxdW90ZWRfc3RyaW5nOworCSAgY2hhciAqcDsKKworCSAgbGVuZ3RoID0gMDsKKwkgIGJhY2tzbGFzaGVzID0gMDsKKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgIGxlbmd0aCsrOworCSAgZm9yIChzID0gc3RyaW5nOyAqcyAhPSAnXDAnOyBzKyspCisJICAgIHsKKwkgICAgICBjaGFyIGMgPSAqczsKKwkgICAgICBpZiAoYyA9PSAnIicpCisJCWxlbmd0aCArPSBiYWNrc2xhc2hlcyArIDE7CisJICAgICAgbGVuZ3RoKys7CisJICAgICAgaWYgKGMgPT0gJ1xcJykKKwkJYmFja3NsYXNoZXMrKzsKKwkgICAgICBlbHNlCisJCWJhY2tzbGFzaGVzID0gMDsKKwkgICAgfQorCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgbGVuZ3RoICs9IGJhY2tzbGFzaGVzICsgMTsKKworCSAgcXVvdGVkX3N0cmluZyA9IFhNQUxMT0MgKGNoYXIsIGxlbmd0aCArIDEpOworCisJICBwID0gcXVvdGVkX3N0cmluZzsKKwkgIGJhY2tzbGFzaGVzID0gMDsKKwkgIGlmIChxdW90ZV9hcm91bmQpCisJICAgICpwKysgPSAnIic7CisJICBmb3IgKHMgPSBzdHJpbmc7ICpzICE9ICdcMCc7IHMrKykKKwkgICAgeworCSAgICAgIGNoYXIgYyA9ICpzOworCSAgICAgIGlmIChjID09ICciJykKKwkJeworCQkgIHVuc2lnbmVkIGludCBqOworCQkgIGZvciAoaiA9IGJhY2tzbGFzaGVzICsgMTsgaiA+IDA7IGotLSkKKwkJICAgICpwKysgPSAnXFwnOworCQl9CisJICAgICAgKnArKyA9IGM7CisJICAgICAgaWYgKGMgPT0gJ1xcJykKKwkJYmFja3NsYXNoZXMrKzsKKwkgICAgICBlbHNlCisJCWJhY2tzbGFzaGVzID0gMDsKKwkgICAgfQorCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgeworCSAgICAgIHVuc2lnbmVkIGludCBqOworCSAgICAgIGZvciAoaiA9IGJhY2tzbGFzaGVzOyBqID4gMDsgai0tKQorCQkqcCsrID0gJ1xcJzsKKwkgICAgICAqcCsrID0gJyInOworCSAgICB9CisJICAqcCA9ICdcMCc7CisKKwkgIG5ld19hcmd2W2ldID0gcXVvdGVkX3N0cmluZzsKKwl9CisgICAgICBlbHNlCisJbmV3X2FyZ3ZbaV0gPSAoY2hhciAqKSBzdHJpbmc7CisgICAgfQorICBuZXdfYXJndlthcmdjXSA9IE5VTEw7CisKKyAgcmV0dXJuIG5ld19hcmd2OworfQorRU9GCisJCTs7CisJICAgIGVzYWMKKworICAgICAgICAgICAgY2F0IDw8IkVPRiIKK3ZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUqIGYpCit7CitFT0YKKwkgICAgZnVuY19lbWl0X3dyYXBwZXIgeWVzIHwKKwkgICAgICAkU0VEIC1uIC1lICcKK3MvXlwoLlx7NzlcfVwpXCguLipcKS9cMVwKK1wyLworaAorcy9cKFtcXCJdXCkvXFxcMS9nCitzLyQvXFxuLworcy9cKFteXG5dKlwpLiovICBmcHV0cyAoIlwxIiwgZik7L3AKK2cKK0QnCisgICAgICAgICAgICBjYXQgPDwiRU9GIgorfQogRU9GCiB9CiAjIGVuZDogZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwogCisjIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wIEFSRworIyBUcnVlIGlmIEFSRyBpcyBhbiBpbXBvcnQgbGliLCBhcyBpbmRpY2F0ZWQgYnkgJGZpbGVfbWFnaWNfY21kCitmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCisgICAgKmltcG9ydCopIDogOzsKKyAgICAqKSBmYWxzZSA7OworICAgIGVzYWMKK30KKwogIyBmdW5jX21vZGVfbGluayBhcmcuLi4KIGZ1bmNfbW9kZV9saW5rICgpCiB7CkBAIC00MDcyLDYgKzUxMzMsNyBAQAogICAgIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPQogCiAgICAgYXZvaWRfdmVyc2lvbj1ubworICAgIGJpbmRpcj0KICAgICBkbGZpbGVzPQogICAgIGRscHJlZmlsZXM9CiAgICAgZGxzZWxmPW5vCkBAIC00MTY0LDYgKzUyMjYsMTEgQEAKIAllc2FjCiAKIAljYXNlICRwcmV2IGluCisJYmluZGlyKQorCSAgYmluZGlyPSIkYXJnIgorCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OwogCWRsZmlsZXN8ZGxwcmVmaWxlcykKIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IG5vOyB0aGVuCiAJICAgICMgQWRkIHRoZSBzeW1ib2wgb2JqZWN0IGludG8gdGhlIGxpbmtpbmcgY29tbWFuZHMuCkBAIC00MTk1LDkgKzUyNjIsOSBAQAogCSAgICA7OwogCSAgKikKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRhcmciCiAJICAgIGVsc2UKLQkgICAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgogCSAgICBmaQogCSAgICBwcmV2PQogCSAgICBjb250aW51ZQpAQCAtNDIyMSw3ICs1Mjg4LDcgQEAKIAkgICAgKi0qLWRhcndpbiopCiAJICAgICAgY2FzZSAiJGRlcGxpYnMgIiBpbgogCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKLQkJKikgZGVwbGlicz0iJGRlcGxpYnMgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgorCQkqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgogCQkgICA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwpAQCAtNDI0MCw3ICs1MzA3LDcgQEAKIAkgICAgbW9yZWFyZ3M9CiAJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKIAkgICAgZG8KLSMJICAgICAgbW9yZWFyZ3M9IiRtb3JlYXJncyAkZmlsIgorIwkgICAgICBmdW5jX2FwcGVuZCBtb3JlYXJncyAiICRmaWwiCiAJICAgICAgYXJnPSRmaWwKIAkgICAgICAjIEEgbGlidG9vbC1jb250cm9sbGVkIG9iamVjdC4KIApAQCAtNDI2OSw3ICs1MzM2LDcgQEAKIAogCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLQkJICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKIAkJICAgICAgcHJldj0KIAkJICAgICAgY29udGludWUKIAkJICAgIGVsc2UKQEAgLTQyODEsNyArNTM0OCw3IEBACiAJCSAgIyBDSEVDSyBNRTogIEkgdGhpbmsgSSBidXN0ZWQgdGhpcy4gIC1Pc3NhbWEKIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0JCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkcGljX29iamVjdCIKKwkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKIAkJICAgIHByZXY9CiAJCSAgZmkKIApAQCAtNDM1MSwxMiArNTQxOCwxMiBAQAogCSAgaWYgdGVzdCAiJHByZXYiID0gcnBhdGg7IHRoZW4KIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KIAkgICAgKiIgJGFyZyAiKikgOzsKLQkgICAgKikgcnBhdGg9IiRycGF0aCAkYXJnIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBycGF0aCAiICRhcmciIDs7CiAJICAgIGVzYWMKIAkgIGVsc2UKIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICopIHhycGF0aD0iJHhycGF0aCAkYXJnIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkYXJnIiA7OwogCSAgICBlc2FjCiAJICBmaQogCSAgcHJldj0KQEAgLTQzNjgsMjggKzU0MzUsMjggQEAKIAkgIGNvbnRpbnVlCiAJICA7OwogCXdlYWspCi0JICB3ZWFrX2xpYnM9IiR3ZWFrX2xpYnMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIHdlYWtfbGlicyAiICRhcmciCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CiAJeGNjbGlua2VyKQotCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjb21waWxlcikKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgogCSAgY29udGludWUKIAkgIDs7CiAJeGxpbmtlcikKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHdsJHFhcmciCkBAIC00NDI1LDYgKzU0OTIsMTEgQEAKIAljb250aW51ZQogCTs7CiAKKyAgICAgIC1iaW5kaXIpCisJcHJldj1iaW5kaXIKKwljb250aW51ZQorCTs7CisKICAgICAgIC1kbG9wZW4pCiAJcHJldj1kbGZpbGVzCiAJY29udGludWUKQEAgLTQ0NzUsMTUgKzU1NDcsMTYgQEAKIAk7OwogCiAgICAgICAtTCopCi0JZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGFyZyIKLQlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCisJZnVuY19zdHJpcG5hbWUgIi1MIiAnJyAiJGFyZyIKKwlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgogCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgInJlcXVpcmUgbm8gc3BhY2UgYmV0d2VlbiBcYC1MJyBhbmQgXGAkMSciCiAJICBlbHNlCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgogCSAgZmkKIAlmaQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCWRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwpAQCAtNDQ5NSwyNCArNTU2OCwzMCBAQAogCSAgOzsKIAllc2FjCiAJY2FzZSAiJGRlcGxpYnMgIiBpbgotCSoiIC1MJGRpciAiKikgOzsKKwkqIiAtTCRkaXIgIiogfCAqIiAkYXJnICIqKQorCSAgIyBXaWxsIG9ubHkgaGFwcGVuIGZvciBhYnNvbHV0ZSBvciBzeXNyb290IGFyZ3VtZW50cworCSAgOzsKIAkqKQotCSAgZGVwbGlicz0iJGRlcGxpYnMgLUwkZGlyIgotCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCisJICAjIFByZXNlcnZlIHN5c3Jvb3QsIGJ1dCBuZXZlciBpbmNsdWRlIHJlbGF0aXZlIGRpcmVjdG9yaWVzCisJICBjYXNlICRkaXIgaW4KKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLUwkZGlyIiA7OworCSAgZXNhYworCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKIAkgIDs7CiAJZXNhYwogCWNhc2UgJGhvc3QgaW4KIAkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotY2VnY2MqKQotCSAgdGVzdGJpbmRpcj1gJEVDSE8gIlgkZGlyIiB8ICRYc2VkIC1lICdzKi9saWIkKi9iaW4qJ2AKKwkgIHRlc3RiaW5kaXI9YCRFQ0hPICIkZGlyIiB8ICRTRUQgJ3MqL2xpYiQqL2JpbionYAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNDUyMiw3ICs1NjAxLDcgQEAKICAgICAgIC1sKikKIAlpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgfHwgdGVzdCAiWCRhcmciID0gIlgtbG0iOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKikKKwkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqIHwgKi0qLWhhaWt1KikKIAkgICAgIyBUaGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBDIG9yIG1hdGggbGlicmFyeSAoYXMgc3VjaCkKIAkgICAgY29udGludWUKIAkgICAgOzsKQEAgLTQ1MzYsNyArNTYxNSw3IEBACiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBhbmQgbWF0aCBsaWJyYXJpZXMgYXJlIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKIAkgICAgY29udGludWUKIAkgICAgOzsKIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKQEAgLTQ1NTYsNyArNTYzNSw3IEBACiAJICAgOzsKIAkgZXNhYwogCWZpCi0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKIAljb250aW51ZQogCTs7CiAKQEAgLTQ1NjgsMjEgKzU2NDcsMjIgQEAKICAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKICAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCi0gICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290KQotCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQorCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgogCXByZXY9eGNvbXBpbGVyCiAJY29udGludWUKIAk7OwogCi0gICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQotCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKyAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmUgXAorICAgICAgfC10aHJlYWRzfC1mb3Blbm1wfC1vcGVubXB8LW1wfC14b3Blbm1wfC1vbXB8LXFzbXA9KikKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OworCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CkBAIC00NjQ5LDEzICs1NzI5LDE3IEBACiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworCT0qKQorCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgorCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgOzsKIAkqKQogCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCiAJICA7OwogCWVzYWMKIAljYXNlICIkeHJwYXRoICIgaW4KIAkqIiAkZGlyICIqKSA7OwotCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CiAJZXNhYwogCWNvbnRpbnVlCiAJOzsKQEAgLTQ3MDgsOCArNTc5Miw4IEBACiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKIAlJRlM9IiRzYXZlX2lmcyIKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCkBAIC00NzI0LDkgKzU4MDgsOSBAQAogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgogCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKQEAgLTQ3NTQsMjMgKzU4MzgsMjcgQEAKIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAk7OwogCi0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQwotICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKKyAgICAgICMgLTY0LCAtbWlwc1swLTldICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgorICAgICAgIyArREEqLCArREQqICAgICAgICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBIUCBjb21waWxlcgorICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCisgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCisgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAorICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KICAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAotICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqKQorICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCisgICAgICAtTyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW4pCiAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCiAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKICAgICAgICAgY29udGludWUKICAgICAgICAgOzsKIApAQCAtNDc4Miw3ICs1ODcwLDcgQEAKIAogICAgICAgKi4kb2JqZXh0KQogCSMgQSBzdGFuZGFyZCBvYmplY3QuCi0Jb2Jqcz0iJG9ianMgJGFyZyIKKwlmdW5jX2FwcGVuZCBvYmpzICIgJGFyZyIKIAk7OwogCiAgICAgICAqLmxvKQpAQCAtNDgxMyw3ICs1OTAxLDcgQEAKIAogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKwkJZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgogCQlwcmV2PQogCQljb250aW51ZQogCSAgICAgIGVsc2UKQEAgLTQ4MjUsNyArNTkxMyw3IEBACiAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgogCSAgICAgIHByZXY9CiAJICAgIGZpCiAKQEAgLTQ4NzAsMjQgKzU5NTgsMjUgQEAKIAogICAgICAgKi4kbGliZXh0KQogCSMgQW4gYXJjaGl2ZS4KLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgotCW9sZF9kZXBsaWJzPSIkb2xkX2RlcGxpYnMgJGFyZyIKKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCiAJY29udGludWUKIAk7OwogCiAgICAgICAqLmxhKQogCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KIAorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkYXJnIgogCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgotCSAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KIAllbGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCi0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICBwcmV2PQogCWVsc2UKLQkgIGRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisJICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAlmaQogCWNvbnRpbnVlCiAJOzsKQEAgLTQ5MjUsNyArNjAxNCw3IEBACiAKICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KICAgICAgICMgZ2V0IHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJHNobGlicGF0aF92YXIKLSAgICAgIGV2YWwgc2hsaWJfc2VhcmNoX3BhdGg9XGBcJEVDSE8gXCJYXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRYc2VkIC1lIFwncy86LyAvZ1wnXGAKKyAgICAgIGV2YWwgc2hsaWJfc2VhcmNoX3BhdGg9XGBcJEVDSE8gXCJcJHskc2hsaWJwYXRoX3Zhcn1cIiBcfCBcJFNFRCBcJ3MvOi8gL2dcJ1xgCiAgICAgZWxzZQogICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CiAgICAgZmkKQEAgLTQ5MzQsNiArNjAyMyw4IEBACiAKICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgogICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvIgorICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCiAgICAgZnVuY19ta2Rpcl9wICIkb3V0cHV0X29iamRpciIKIApAQCAtNDk1NCwxMiArNjA0NSwxMiBAQAogICAgICMgRmluZCBhbGwgaW50ZXJkZXBlbmRlbnQgZGVwbGlicyBieSBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcwogICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQogICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0gICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAljYXNlICIkbGlicyAiIGluCi0JKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBmaQotICAgICAgbGlicz0iJGxpYnMgJGRlcGxpYiIKKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgogICAgIGRvbmUKIAogICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KQEAgLTQ5NzIsOSArNjA2Myw5IEBACiAgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwczsgdGhlbgogCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbwogCSAgY2FzZSAiJHByZV9wb3N0X2RlcHMgIiBpbgotCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkcHJlX3Bvc3RfZGVwcyIgOzsKKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7CiAJICBlc2FjCi0JICBwcmVfcG9zdF9kZXBzPSIkcHJlX3Bvc3RfZGVwcyAkcHJlX3Bvc3RfZGVwIgorCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCiAJZG9uZQogICAgICAgZmkKICAgICAgIHByZV9wb3N0X2RlcHM9CkBAIC01MDMzLDcgKzYxMjQsMTAgQEAKIAljYXNlICRwYXNzIGluCiAJZGxvcGVuKSBsaWJzPSIkZGxmaWxlcyIgOzsKIAlkbHByZW9wZW4pIGxpYnM9IiRkbHByZWZpbGVzIiA7OwotCWxpbmspIGxpYnM9IiRkZXBsaWJzICVERVBMSUJTJSAkZGVwZW5kZW5jeV9saWJzIiA7OworCWxpbmspCisJICBsaWJzPSIkZGVwbGlicyAlREVQTElCUyUiCisJICB0ZXN0ICJYJGxpbmtfYWxsX2RlcGxpYnMiICE9IFhubyAmJiBsaWJzPSIkbGlicyAkZGVwZW5kZW5jeV9saWJzIgorCSAgOzsKIAllc2FjCiAgICAgICBmaQogICAgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsZGxwcmVvcGVuIjsgdGhlbgpAQCAtNTA0MSwxNyArNjEzNSwxOSBAQAogCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCiAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCiAJICBkZXBlbmRlbmN5X2xpYnM9CisJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKIAkgIGNhc2UgJGxpYiBpbgotCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRsaWIiIDs7CisJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKIAkgIGVzYWMKIAogCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CiAJICAjIGhhcyBkZWNsYXJlZCBhcyB3ZWFrIGxpYnMKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAgICAgICAgICAgIGRlcGxpYl9iYXNlPWAkRUNITyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICAgIGZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCisgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgogCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7Ci0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZG9uZQpAQCAtNTA2NywxNiArNjE2MywxNyBAQAogCWxpYj0KIAlmb3VuZD1ubwogCWNhc2UgJGRlcGxpYiBpbgotCS1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCisJLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZSBcCisgICAgICAgIHwtdGhyZWFkc3wtZm9wZW5tcHwtb3Blbm1wfC1tcHwteG9wZW5tcHwtb21wfC1xc21wPSopCiAJICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KIAkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBlbHNlCi0JICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgIGZpCiAJICBmaQpAQCAtNTE2MSw3ICs2MjU4LDcgQEAKIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKIAkJZXNhYwogCSAgICBmaQogCSAgZmkKQEAgLTUxNzQsNyArNjI3MSw4IEBACiAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgICAgOzsKIAkgIHByb2cpCiAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KQEAgLTUxODgsNyArNjI4Niw4IEBACiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZmkKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgKikKIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgpAQCAtNTE5OSwxNyArNjI5OCwyMSBAQAogCS1SKikKIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KIAkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkZGlyICIqKSA7OwotCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKIAkgICAgZXNhYwogCSAgZmkKIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICBjb250aW51ZQogCSAgOzsKLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7CisJKi5sYSkKKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwkgIDs7CiAJKi4kbGliZXh0KQogCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgogCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgpAQCAtNTIyNyw3ICs2MzMwLDcgQEAKIAkJbWF0Y2hfcGF0dGVybiopCiAJCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKIAkJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCi0JCSAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkWHNlZCAtZSAxMHEgXAorCQkgIGlmIGV2YWwgIlwkRUNITyBcIiRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSBcCiAJCSAgICB8ICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJCSAgICB2YWxpZF9hX2xpYj15ZXMKIAkJICBmaQpAQCAtNTIzNywxNSArNjM0MCwxNSBAQAogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgICBpZiB0ZXN0ICIkdmFsaWRfYV9saWIiICE9IHllczsgdGhlbgotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogVHJ5aW5nIHRvIGxpbmsgd2l0aCBzdGF0aWMgbGliIGFyY2hpdmUgJGRlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgotCQkkRUNITyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZSBoZXJlLiIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKKwkJZWNobyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZSBoZXJlLiIKIAkgICAgICBlbHNlCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIgogCQkkRUNITyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKIAkJZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKQEAgLTUyNzIsMTEgKzYzNzUsMTEgQEAKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKIAkgICAgICAjIHdlIG5lZWQgdG8gcHJlbG9hZC4KLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgogCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGVsc2UKLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgogCSAgICBmaQogCSAgZmkKIAkgIGNvbnRpbnVlCkBAIC01MzE4LDIwICs2NDIxLDIwIEBACiAKIAkjIENvbnZlcnQgIi1mcmFtZXdvcmsgZm9vIiB0byAiZm9vLmx0ZnJhbWV3b3JrIgogCWlmIHRlc3QgLW4gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIjsgdGhlbgotCSAgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAorCSAgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICIkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzLy1mcmFtZXdvcmsgXChbXiAkXSpcKS9cMS5sdGZyYW1ld29yay9nJ2AKIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KIAkgICAgY2FzZSAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7Ci0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKIAkgICAgZXNhYwogCSAgZG9uZQogCWZpCi0JZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCAkZGVwZW5kZW5jeV9saWJzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIiAkZGVwZW5kZW5jeV9saWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgotCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZGxmaWxlcz0iJGRsZmlsZXMgJGRsb3BlbiIKLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCisJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKKwkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZGxwcmVvcGVuIgogCWZpCiAKIAlpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCkBAIC01MzQyLDMwICs2NDQ1LDM2IEBACiAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJICAgIGZpCiAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0JICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIHRtcF9saWJzPQorCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorCQljYXNlICIkdG1wX2xpYnMgIiBpbgorCQkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CisJCWVzYWMKKwkgICAgICBmaQorCSAgICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKKwkgICAgZG9uZQogCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IgogCSAgZmkKLQkgIHRtcF9saWJzPQotCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotCSAgICAgIGVzYWMKLQkgICAgZmkKLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotCSAgZG9uZQogCSAgY29udGludWUKIAlmaSAjICRwYXNzID0gY29udgogCiAKIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCiAJbGlua2xpYj0KLQlmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0JICBsaW5rbGliPSIkbCIKLQlkb25lCisJaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJgorCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSB5ZXMgfHwKKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCisJICBsaW5rbGliPSRvbGRfbGlicmFyeQorCWVsc2UKKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKwkgICAgbGlua2xpYj0iJGwiCisJICBkb25lCisJZmkKIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgogCWZpCkBAIC01MzgyLDkgKzY0OTEsOSBAQAogCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQogCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAogCSAgICAjIGJvbWIgb3V0IGluIHRoZSBsb2FkIGRlcGxpYnMgcGhhc2UuCi0JICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKIAkgIGVsc2UKLQkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCiAJICBmaQogCSAgY29udGludWUKIAlmaSAjICRwYXNzID0gZGxvcGVuCkBAIC01NDA2LDE0ICs2NTE1LDE0IEBACiAKIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KIAlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCi0JICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCisJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KIAkgICAgZnVuY193YXJuaW5nICJsaWJyYXJ5IFxgJGxpYicgd2FzIG1vdmVkLiIKIAkgICAgZGlyPSIkbGFkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKIAkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgogCSAgZWxzZQotCSAgICBkaXI9IiRsaWJkaXIiCi0JICAgIGFic2Rpcj0iJGxpYmRpciIKKwkgICAgZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCisJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgogCSAgZmkKIAkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCiAJZWxzZQpAQCAtNTQyMSwxMiArNjUzMCwxMiBAQAogCSAgICBkaXI9IiRsYWRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgogCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgogCSAgZWxzZQogCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGZpCiAJZmkgIyAkaW5zdGFsbGVkID0geWVzCiAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCkBAIC01NDM3LDIwICs2NTQ2LDQ2IEBACiAJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCiAJICBmaQotCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCi0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KLQkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCi0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotCSAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLQkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotCSAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KLQkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgotCSAgZWxzZQotCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRsaW5rbGliIgotCSAgZmkKKwkgIGNhc2UgIiRob3N0IiBpbgorCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCisJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICMgTGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcnkgaWYgYm90aAorCSAgICAgICMgc3RhdGljIGFuZCBzaGFyZWQgYXJlIHByZXNlbnQuICBUaGVyZWZvcmUsIGVuc3VyZSB3ZSBleHRyYWN0CisJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAorCSAgICAgICMgKG90aGVyd2lzZSwgdGhlIGRsb3BlbiBtb2R1bGUgbmFtZSB3aWxsIGJlIGluY29ycmVjdCkuICBXZSBkbworCSAgICAgICMgdGhpcyBieSBwdXR0aW5nIHRoZSBpbXBvcnQgbGlicmFyeSBuYW1lIGludG8gJG5ld2RscHJlZmlsZXMuCisJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKKwkgICAgICAjIG5hbWUgaW4gYSBzcGVjaWFsIHB1cnBvc2UgdmFyaWFibGUsIGFuZCAobGF0ZXIpIGV4dHJhY3RpbmcgdGhlCisJICAgICAgIyBkbG5hbWUgZnJvbSB0aGUgbGEgZmlsZS4KKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorCSAgICAgICAgZnVuY190cl9zaCAiJGRpci8kbGlua2xpYiIKKwkgICAgICAgIGV2YWwgImxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0PVwkYWJzX2xhZGlyL1wkbGFuYW1lIgorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisJICAgICAgZWxzZQorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICBmaQorCSAgICA7OworCSAgICAqICkKKwkgICAgICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKKwkgICAgICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCisJICAgICAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGRsbmFtZSIKKwkgICAgICBlbHNlCisJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kbGlua2xpYiIKKwkgICAgICBmaQorCSAgICA7OworCSAgZXNhYwogCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KIAogCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCkBAIC01NDY4LDcgKzY2MDMsNyBAQAogCiAKIAlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgotCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRsYWRpciIKIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCiAKIAkgIGxpbmthbGxkZXBsaWJzPW5vCkBAIC01NDgxLDcgKzY2MTYsOCBAQAogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJCSA7OwogCSAgICBlc2FjCiAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KQEAgLTU0OTIsMTIgKzY2MjgsMTIgQEAKIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcwogCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBmaQotCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCi0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgogCSAgZG9uZSAjIGZvciBkZXBsaWIKIAkgIGNvbnRpbnVlCiAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCkBAIC01NTEyLDcgKzY2NDgsNyBAQAogCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCiAJICAgICAgKiIkYWJzZGlyOiIqKSA7OwotCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoJGFic2RpcjoiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCkBAIC01NTI0LDcgKzY2NjAsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU1MzMsNyArNjY2OSw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU1NTgsMTIgKzY2OTQsMTIgQEAKIAkgIGNhc2UgJGhvc3QgaW4KIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCiAJICAgICAgIyBObyBwb2ludCBpbiByZWxpbmtpbmcgRExMcyBiZWNhdXNlIHBhdGhzIGFyZSBub3QgZW5jb2RlZAotCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCiAJICAgICAgbmVlZF9yZWxpbms9bm8KIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm87IHRoZW4KLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPXllcwogCSAgICBmaQogCSAgICA7OwpAQCAtNTU4MCw3ICs2NzE2LDcgQEAKIAkgICAgZmkKIAkgIGRvbmUKIAkgIGlmIHRlc3QgLXogIiRkbG9wZW5tb2R1bGUiICYmIHRlc3QgIiRzaG91bGRub3RsaW5rIiA9IHllcyAmJiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCi0JICAgICRFQ0hPCisJICAgIGVjaG8KIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KIAkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIGV4ZWN1dGFibGUgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCiAJICAgIGVsc2UKQEAgLTU1OTgsNyArNjczNCw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgogCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTYwNyw3ICs2NzQzLDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKIAkgICAgZXNhYwpAQCAtNTY2MSw3ICs2Nzk3LDcgQEAKIAkgICAgbGlua2xpYj0kbmV3bGliCiAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKIAotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgorCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KIAkgICAgYWRkX3NobGlicGF0aD0KIAkgICAgYWRkX2Rpcj0KIAkgICAgYWRkPQpAQCAtNTY4Myw5ICs2ODE5LDkgQEAKIAkJICAgICAgaWYgdGVzdCAiWCRkbG9wZW5tb2R1bGUiICE9ICJYJGxpYiI7IHRoZW4KIAkJCSRFQ0hPICIqKiogV2FybmluZzogbGliICRsaW5rbGliIGlzIGEgbW9kdWxlLCBub3QgYSBzaGFyZWQgbGlicmFyeSIKIAkJCWlmIHRlc3QgLXogIiRvbGRfbGlicmFyeSIgOyB0aGVuCi0JCQkgICRFQ0hPCi0JCQkgICRFQ0hPICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKLQkJCSAgJEVDSE8gIioqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgorCQkJICBlY2hvCisJCQkgIGVjaG8gIioqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgorCQkJICBlY2hvICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKIAkJCWVsc2UKIAkJCSAgYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKIAkJCWZpCkBAIC01NzEyLDEyICs2ODQ4LDEyIEBACiAJICAgICAgICAgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSIgPSBubzsgdGhlbgogCQlhZGQ9IiRkaXIvJGxpbmtsaWIiCiAJICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSB5ZXM7IHRoZW4KLQkJYWRkX2Rpcj0iLUwkZGlyIgorCQlhZGRfZGlyPSItTCRhYnNkaXIiCiAJCSMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJICBjYXNlICRsaWJkaXIgaW4KIAkJICAgIFtcXC9dKikKLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCiAJCSAgICAgIDs7CiAJCSAgZXNhYwogCQlmaQpAQCAtNTczOSw3ICs2ODc1LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCiAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgogCSAgICAgICoiOiRhZGRfc2hsaWJwYXRoOiIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCkBAIC01NzUzLDEzICs2ODg5LDEzIEBACiAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkJKiI6JGxpYmRpcjoiKikgOzsKLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICBmaQogCSAgZmkKIAotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU3NzMsNyArNjkwOSw3IEBACiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokbGliZGlyOiIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIGFkZD0iLWwkbmFtZSIKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgpAQCAtNTc5MCw3ICs2OTI2LDcgQEAKIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCQljYXNlICRsaWJkaXIgaW4KIAkJICBbXFwvXSopCi0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCiAJCSAgICA7OwogCQllc2FjCiAJICAgICAgZmkKQEAgLTU4MjUsMjEgKzY5NjEsMjEgQEAKIAogCSAgICAjIEp1c3QgcHJpbnQgYSB3YXJuaW5nIGFuZCBhZGQgdGhlIGxpYnJhcnkgdG8gZGVwZW5kZW5jeV9saWJzIHNvCiAJICAgICMgdGhhdCB0aGUgcHJvZ3JhbSBjYW4gYmUgbGlua2VkIGFnYWluc3QgdGhlIHN0YXRpYyBsaWJyYXJ5LgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgICRFQ0hPICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKLQkgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCSAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKKwkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkgICAgZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKIAkgICAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgICAkRUNITyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgotCSAgICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKLQkgICAgICAkRUNITyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgorCSAgICAgIGVjaG8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKKwkgICAgICBlY2hvICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKKwkgICAgICBlY2hvICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCiAJICAgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkJJEVDSE8KLQkJJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCQkkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkJJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkJJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCQllY2hvCisJCWVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCQllY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCQllY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJCWVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKQEAgLTU4NjcsMzcgKzcwMDMsNDYgQEAKIAkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgogCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7Ci0JCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7CiAJCSAgIGVzYWM7OwotCSAgICAgICopIHRlbXBfZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkbGliZGlyIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCiAJICBmaQogCi0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCiAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgY2FzZSAkZGVwbGliIGluCisgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKyAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OworICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKKyAgICAgICAgICAgIGVzYWMKKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQorICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCi0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgZG9uZQogCiAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHNlYXJjaCBwYXRocyBvZiBhbGwgZGVwZW5kZW5jeSBsaWJyYXJpZXMKIAkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworCSAgICAgIHBhdGg9CiAJICAgICAgY2FzZSAkZGVwbGliIGluCiAJICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OwogCSAgICAgICoubGEpCisJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKwkgICAgICAgIGRlcGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgotCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJCWNhc2UgJGRpciBpbgogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKQEAgLTU5MjQsOCArNzA2OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAogICAgICAgICAgICAgICAgICAgICAgIGZpCi0JCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCiAJCSAgICAgIHBhdGg9CiAJCSAgICBmaQogCQkgIGZpCkBAIC01OTU4LDcgKzcxMDMsNyBAQAogCSAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGNvbXBpbGVfZGVwbGlicyIKIAkgIGZpbmFsaXplX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZmluYWxpemVfZGVwbGlicyIKIAllbHNlCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAiYCRFQ0hPICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJZmkKICAgICAgIGZpCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCkBAIC01OTc1LDcgKzcxMjAsNyBAQAogCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbwogCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KIAkgICAgKiIgJGRpciAiKikgOzsKLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KQEAgLTYwMzMsMTAgKzcxNzgsMTAgQEAKIAkgICAgLUwqKQogCSAgICAgIGNhc2UgIiAkdG1wX2xpYnMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopIDs7Ci0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKLQkgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCkBAIC02MDUyLDcgKzcxOTcsNyBAQAogCSAgOzsKIAllc2FjCiAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotCSAgdG1wX2xpYnM9IiR0bXBfbGlicyAkaSIKKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCiAJZmkKICAgICAgIGRvbmUKICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKQEAgLTYwOTMsNyArNzIzOCw3IEBACiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogICAgICAgb2xkbGlicz0iJG91dHB1dCIKLSAgICAgIG9ianM9IiRvYmpzJG9sZF9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgogICAgICAgOzsKIAogICAgIGxpYikKQEAgLTYxMjYsMTAgKzcyNzEsMTAgQEAKIAlpZiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgYnVpbGQgbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIG9uIHRoaXMgaG9zdDokb2JqcyIKIAllbHNlCi0JICAkRUNITworCSAgZWNobwogCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgogCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCi0JICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKIAlmaQogICAgICAgZmkKIApAQCAtNjE4OCwxMyArNzMzMywxNCBAQAogCSAgIyB3aGljaCBoYXMgYW4gZXh0cmEgMSBhZGRlZCBqdXN0IGZvciBmdW4KIAkgICMKIAkgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgorCSAgIyBjb3JyZWN0IGxpbnV4IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJICBkYXJ3aW58bGludXh8b3NmfHdpbmRvd3N8bm9uZSkKIAkgICAgZnVuY19hcml0aCAkbnVtYmVyX21ham9yICsgJG51bWJlcl9taW5vcgogCSAgICBjdXJyZW50PSRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgICBhZ2U9IiRudW1iZXJfbWlub3IiCiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX3JldmlzaW9uIgogCSAgICA7OwotCSAgZnJlZWJzZC1hb3V0fGZyZWVic2QtZWxmfHN1bm9zKQorCSAgZnJlZWJzZC1hb3V0fGZyZWVic2QtZWxmfHFueHxzdW5vcykKIAkgICAgY3VycmVudD0iJG51bWJlcl9tYWpvciIKIAkgICAgcmV2aXNpb249IiRudW1iZXJfbWlub3IiCiAJICAgIGFnZT0iMCIKQEAgLTYyMDYsNiArNzM1Miw5IEBACiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgogCSAgICBsdF9pcml4X2luY3JlbWVudD1ubwogCSAgICA7OworCSAgKikKKwkgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICIkbW9kZW5hbWU6IHVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIKKwkgICAgOzsKIAkgIGVzYWMKIAkgIDs7CiAJbm8pCkBAIC02MzA0LDcgKzc0NTMsNyBAQAogCSAgdmVyc3VmZml4PSIkbWFqb3IuJHJldmlzaW9uIgogCSAgOzsKIAotCWxpbnV4KQorCWxpbnV4KSAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAkgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJICBtYWpvcj0uJGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB2ZXJzdWZmaXg9IiRtYWpvci4kYWdlLiRyZXZpc2lvbiIKQEAgLTYzMjcsNyArNzQ3Niw3IEBACiAJICBkb25lCiAKIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCisJICBmdW5jX2FwcGVuZCB2ZXJzdHJpbmcgIjoke2N1cnJlbnR9LjAiCiAJICA7OwogCiAJcW54KQpAQCAtNjM5NSwxMCArNzU0NCwxMCBAQAogICAgICAgZmkKIAogICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCi0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKKyAgICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkc3ltZmlsZW9iaiIKICAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAKLSAgICAgIGlmIHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCiAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKIAkjIG1heSBoYXZlIGJlZW4gY3JlYXRlZCB3aGVuIGNvbXBpbGluZyBQSUMgb2JqZWN0cy4KIAlyZW1vdmVsaXN0PQpAQCAtNjQxNCw3ICs3NTYzLDcgQEAKIAkJICAgY29udGludWUKIAkJIGZpCiAJICAgICAgIGZpCi0JICAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRwIgorCSAgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJHAiCiAJICAgICAgIDs7CiAJICAgICopIDs7CiAJICBlc2FjCkBAIC02NDI1LDI3ICs3NTc0LDI4IEBACiAKICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgogICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSBjb252ZW5pZW5jZSA7IHRoZW4KLQlvbGRsaWJzPSIkb2xkbGlicyAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCiAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgotCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSckL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJb2xkb2Jqcz0iJG9ianMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCiAgICAgICAjIEVsaW1pbmF0ZSBhbGwgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzLgogICAgICAgI2ZvciBwYXRoIGluICRub3RpbnN0X3BhdGg7IGRvCi0gICAgICAjCWxpYl9zZWFyY2hfcGF0aD1gJEVDSE8gIlgkbGliX3NlYXJjaF9wYXRoICIgfCAkWHNlZCAtZSAicyUgJHBhdGggJSAlZyJgCi0gICAgICAjCWRlcGxpYnM9YCRFQ0hPICJYJGRlcGxpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAotICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICJYJGRlcGVuZGVuY3lfbGlicyAiIHwgJFhzZWQgLWUgInMlIC1MJHBhdGggJSAlZyJgCisgICAgICAjCWxpYl9zZWFyY2hfcGF0aD1gJEVDSE8gIiRsaWJfc2VhcmNoX3BhdGggIiB8ICRTRUQgInMlICRwYXRoICUgJWciYAorICAgICAgIwlkZXBsaWJzPWAkRUNITyAiJGRlcGxpYnMgIiB8ICRTRUQgInMlIC1MJHBhdGggJSAlZyJgCisgICAgICAjCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIiRkZXBlbmRlbmN5X2xpYnMgIiB8ICRTRUQgInMlIC1MJHBhdGggJSAlZyJgCiAgICAgICAjZG9uZQogCiAgICAgICBpZiB0ZXN0IC1uICIkeHJwYXRoIjsgdGhlbgogCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KIAl0ZW1wX3hycGF0aD0KIAlmb3IgbGliZGlyIGluICR4cnBhdGg7IGRvCi0JICB0ZW1wX3hycGF0aD0iJHRlbXBfeHJwYXRoIC1SJGxpYmRpciIKKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorCSAgZnVuY19hcHBlbmQgdGVtcF94cnBhdGggIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCiAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlkb25lCiAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KQEAgLTY0NTksNyArNzYwOSw3IEBACiAgICAgICBmb3IgbGliIGluICRvbGRfZGxmaWxlczsgZG8KIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgogCSoiICRsaWIgIiopIDs7Ci0JKikgZGxmaWxlcz0iJGRsZmlsZXMgJGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAKQEAgLTY0NjksMTkgKzc2MTksMTkgQEAKICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbwogCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KIAkqIiAkbGliICIqKSA7OwotCSopIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgogCWlmIHRlc3QgLW4gIiRycGF0aCI7IHRoZW4KIAkgIGNhc2UgJGhvc3QgaW4KLQkgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqIHwgKi0qLWhhaWt1KikKIAkgICAgIyB0aGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBjIGxpYnJhcnkgKGFzIHN1Y2gpIQogCSAgICA7OwogCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgICAjIFJoYXBzb2R5IEMgbGlicmFyeSBpcyBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIDs7CiAJICAqLSotbmV0YnNkKikKIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCkBAIC02NDk4LDcgKzc2NDgsNyBAQAogCSAgKikKIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KIAkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbmVlZF9sYyIgPSAieWVzIjsgdGhlbgotCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgogCSAgICBmaQogCSAgICA7OwogCSAgZXNhYwpAQCAtNjU0Nyw3ICs3Njk3LDcgQEAKIAkJaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkgICoiICRpICIqKQotCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICBpPSIiCiAJCSAgICA7OwogCQkgIGVzYWMKQEAgLTY1NTgsMjEgKzc3MDgsMjEgQEAKIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAogCQkgIGRlcGxpYl9tYXRjaD0kMQogCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgIGVsc2UKIAkJICAgIGRyb3BwZWRkZXBzPXllcwotCQkgICAgJEVDSE8KKwkJICAgIGVjaG8KIAkJICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCBJIGJlbGlldmUgeW91IGRvIG5vdCBoYXZlIgotCQkgICAgJEVDSE8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIGl0IGZvciIKLQkJICAgICRFQ0hPICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQkgICAgZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKKwkJICAgIGVjaG8gIioqKiBiZWNhdXNlIGEgdGVzdF9jb21waWxlIGRpZCByZXZlYWwgdGhhdCB0aGUgbGlua2VyIGRpZCBub3QgdXNlIGl0IGZvciIKKwkJICAgIGVjaG8gIioqKiBpdHMgZHluYW1pYyBkZXBlbmRlbmN5IGxpc3QgdGhhdCBwcm9ncmFtcyBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKIAkJICBmaQogCQlmaQogCQk7OwogCSAgICAgICopCi0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC02NTkwLDcgKzc3NDAsNyBAQAogCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkgICAgKiIgJGkgIiopCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICAgIGk9IiIKIAkJICAgICAgOzsKIAkJICAgIGVzYWMKQEAgLTY2MDEsMjkgKzc3NTEsMjkgQEAKIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CiAJCSAgICBkZXBsaWJfbWF0Y2g9JDEKIAkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICAgIGVsc2UKIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAgICRFQ0hPCisJCSAgICAgIGVjaG8KIAkJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSAgICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSB0aGlzIG9uZSIKLQkJICAgICAgJEVDSE8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgICAgZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJICAgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkgICAgICBlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSB0aGlzIG9uZSIKKwkJICAgICAgZWNobyAiKioqIGFzIGEgZHluYW1pYyBkZXBlbmRlbmN5IHRoYXQgcHJvZ3JhbXMgY2FuIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgogCQkgICAgZmkKIAkJICBmaQogCQllbHNlCiAJCSAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgJEVDSE8KKwkJICBlY2hvCiAJCSAgJEVDSE8gIioqKiBXYXJuaW5nISAgTGlicmFyeSAkaSBpcyBuZWVkZWQgYnkgdGhpcyBsaWJyYXJ5IGJ1dCBJIHdhcyBub3QgYWJsZSB0byIKLQkJICAkRUNITyAiKioqIG1ha2UgaXQgbGluayBpbiEgIFlvdSB3aWxsIHByb2JhYmx5IG5lZWQgdG8gaW5zdGFsbCBpdCBvciBzb21lIgotCQkgICRFQ0hPICIqKiogbGlicmFyeSB0aGF0IGl0IGRlcGVuZHMgb24gYmVmb3JlIHRoaXMgbGlicmFyeSB3aWxsIGJlIGZ1bGx5IgotCQkgICRFQ0hPICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgorCQkgIGVjaG8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKKwkJICBlY2hvICIqKiogbGlicmFyeSB0aGF0IGl0IGRlcGVuZHMgb24gYmVmb3JlIHRoaXMgbGlicmFyeSB3aWxsIGJlIGZ1bGx5IgorCQkgIGVjaG8gIioqKiBmdW5jdGlvbmFsLiAgSW5zdGFsbGluZyBpdCBiZWZvcmUgY29udGludWluZyB3b3VsZCBiZSBldmVuIGJldHRlci4iCiAJCWZpCiAJCTs7CiAJICAgICAgKikKLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTY2NDAsMTUgKzc3OTAsMjcgQEAKIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkqIiAkYV9kZXBsaWIgIiopCi0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCSAgYV9kZXBsaWI9IiIKIAkJICA7OwogCQllc2FjCiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKwkJaWYgdGVzdCAtbiAiJGZpbGVfbWFnaWNfZ2xvYiI7IHRoZW4KKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAorCQllbHNlCisJCSAgbGlibmFtZWdsb2I9JGxpYm5hbWUKKwkJZmkKKwkJdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXMgJiYgbm9jYXNlZ2xvYj1gc2hvcHQgLXAgbm9jYXNlZ2xvYmAKIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCi0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisJCSAgaWYgdGVzdCAiJHdhbnRfbm9jYXNlZ2xvYiIgPSB5ZXM7IHRoZW4KKwkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICAgICRub2Nhc2VnbG9iCisJCSAgZWxzZQorCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorCQkgIGZpCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgogCQkgICAgICBpZiBscyAtbExkICIkcG90ZW50X2xpYiIgMj4vZGV2L251bGwgfApAQCAtNjY2NSwxMyArNzgyNywxMyBAQAogCQkJcG90bGlibGluaz1gbHMgLWxkICRwb3RsaWIgfCAke1NFRH0gJ3MvLiogLT4gLy8nYAogCQkJY2FzZSAkcG90bGlibGluayBpbgogCQkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBwb3RsaWI9IiRwb3RsaWJsaW5rIjs7Ci0JCQkqKSBwb3RsaWI9YCRFQ0hPICJYJHBvdGxpYiIgfCAkWHNlZCAtZSAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CisJCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OwogCQkJZXNhYwogCQkgICAgICBkb25lCiAJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8CiAJCQkgJFNFRCAtZSAxMHEgfAogCQkJICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0JCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkJYV9kZXBsaWI9IiIKIAkJCWJyZWFrIDIKIAkJICAgICAgZmkKQEAgLTY2ODAsMTIgKzc4NDIsMTIgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciBmaWxlIG1hZ2ljIHRlc3QpIgogCQllbHNlCkBAIC02Njk2LDcgKzc4NTgsNyBAQAogCSAgICAgIDs7CiAJICAgICopCiAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkgICAgICA7OwogCSAgICBlc2FjCiAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgpAQCAtNjcxMiw3ICs3ODc0LDcgQEAKIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkqIiAkYV9kZXBsaWIgIiopCi0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJCSAgYV9kZXBsaWI9IiIKIAkJICA7OwogCQllc2FjCkBAIC02NzIzLDkgKzc4ODUsOSBAQAogCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgIHBvdGxpYj0iJHBvdGVudF9saWIiICMgc2VlIHN5bWxpbmstY2hlY2sgYWJvdmUgaW4gZmlsZV9tYWdpYyB0ZXN0Ci0JCSAgICBpZiBldmFsICJcJEVDSE8gXCJYJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkWHNlZCAtZSAxMHEgfCBcCisJCSAgICBpZiBldmFsICJcJEVDSE8gXCIkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIHwgXAogCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgICAgICBhX2RlcGxpYj0iIgogCQkgICAgICBicmVhayAyCiAJCSAgICBmaQpAQCAtNjczNCwxMiArNzg5NiwxMiBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgotCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCi0JCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCi0JCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCiAJCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIHJlZ2V4IHBhdHRlcm4gdGVzdCkiCiAJCWVsc2UKQEAgLTY3NTAsMzIgKzc5MTIsMzIgQEAKIAkgICAgICA7OwogCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KIAkgIDs7CiAJbm9uZSB8IHVua25vd24gfCAqKQogCSAgbmV3ZGVwbGlicz0iIgotCSAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICRkZXBsaWJzIiB8ICRYc2VkIFwKLQkgICAgICAtZSAncy8gLWxjJC8vJyAtZSAncy8gLVtMUl1bXiBdKi8vZydgCisJICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkZGVwbGlicyIgfCAkU0VEICdzLyAtbGMkLy87IHMvIC1bTFJdW14gXSovL2cnYAogCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCSAgICBmb3IgaSBpbiAkcHJlZGVwcyAkcG9zdGRlcHMgOyBkbwogCSAgICAgICMgY2FuJ3QgdXNlIFhzZWQgYmVsb3csIGJlY2F1c2UgJGkgbWlnaHQgY29udGFpbiAnLycKLQkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIlggJHRtcF9kZXBsaWJzIiB8ICRYc2VkIC1lICJzLCRpLCwiYAorCSAgICAgIHRtcF9kZXBsaWJzPWAkRUNITyAiICR0bXBfZGVwbGlicyIgfCAkU0VEICJzLCRpLCwiYAogCSAgICBkb25lCiAJICBmaQotCSAgaWYgJEVDSE8gIlggJHRtcF9kZXBsaWJzIiB8ICRYc2VkIC1lICdzL1sJIF0vL2cnIHwKLQkgICAgICRHUkVQIC4gPi9kZXYvbnVsbDsgdGhlbgotCSAgICAkRUNITworCSAgY2FzZSAkdG1wX2RlcGxpYnMgaW4KKwkgICpbIVwJXCBdKikKKwkgICAgZWNobwogCSAgICBpZiB0ZXN0ICJYJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA9ICJYbm9uZSI7IHRoZW4KLQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgorCSAgICAgIGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKIAkgICAgZWxzZQotCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgorCSAgICAgIGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCiAJICAgIGZpCi0JICAgICRFQ0hPICIqKiogQWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBkcm9wcGVkLiIKKwkgICAgZWNobyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCiAJICAgIGRyb3BwZWRkZXBzPXllcwotCSAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAkgIDs7CiAJZXNhYwogCXZlcnN1ZmZpeD0kdmVyc3VmZml4X3NhdmUKQEAgLTY3ODcsMjMgKzc5NDksMjMgQEAKIAljYXNlICRob3N0IGluCiAJKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgIyBPbiBSaGFwc29keSByZXBsYWNlIHRoZSBDIGxpYnJhcnkgd2l0aCB0aGUgU3lzdGVtIGZyYW1ld29yawotCSAgbmV3ZGVwbGlicz1gJEVDSE8gIlggJG5ld2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwkgIG5ld2RlcGxpYnM9YCRFQ0hPICIgJG5ld2RlcGxpYnMiIHwgJFNFRCAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAogCSAgOzsKIAllc2FjCiAKIAlpZiB0ZXN0ICIkZHJvcHBlZGRlcHMiID0geWVzOyB0aGVuCiAJICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAkRUNITwotCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGxpYnRvb2wgY291bGQgbm90IHNhdGlzZnkgYWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkiCisJICAgIGVjaG8KKwkgICAgZWNobyAiKioqIFdhcm5pbmc6IGxpYnRvb2wgY291bGQgbm90IHNhdGlzZnkgYWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkiCiAJICAgICRFQ0hPICIqKiogZGVwZW5kZW5jaWVzIG9mIG1vZHVsZSAkbGlibmFtZS4gIFRoZXJlZm9yZSwgbGlidG9vbCB3aWxsIGNyZWF0ZSIKLQkgICAgJEVDSE8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgotCSAgICAkRUNITyAiKioqIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcuIgorCSAgICBlY2hvICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyIKKwkgICAgZWNobyAiKioqIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcuIgogCSAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCSAgICAgICRFQ0hPCi0JICAgICAgJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCSAgICAgICRFQ0hPICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCSAgICAgICRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JICAgICAgJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCSAgICAgIGVjaG8KKwkgICAgICBlY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkgICAgICBlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCSAgICAgIGVjaG8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKKwkgICAgICBlY2hvICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgZmkKIAkgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJICAgICAgb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKQEAgLTY4MTMsMTYgKzc5NzUsMTYgQEAKIAkgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KIAkgICAgZmkKIAkgIGVsc2UKLQkgICAgJEVDSE8gIioqKiBUaGUgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgdGhhdCBoYXZlIGJlZW4gZHJvcHBlZCBoZXJlIHdpbGwgYmUiCi0JICAgICRFQ0hPICIqKiogYXV0b21hdGljYWxseSBhZGRlZCB3aGVuZXZlciBhIHByb2dyYW0gaXMgbGlua2VkIHdpdGggdGhpcyBsaWJyYXJ5IgotCSAgICAkRUNITyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgorCSAgICBlY2hvICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgorCSAgICBlY2hvICIqKiogYXV0b21hdGljYWxseSBhZGRlZCB3aGVuZXZlciBhIHByb2dyYW0gaXMgbGlua2VkIHdpdGggdGhpcyBsaWJyYXJ5IgorCSAgICBlY2hvICIqKiogb3IgaXMgZGVjbGFyZWQgdG8gLWRsb3BlbiBpdC4iCiAKIAkgICAgaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZCIgPSBubzsgdGhlbgotCSAgICAgICRFQ0hPCi0JICAgICAgJEVDSE8gIioqKiBTaW5jZSB0aGlzIGxpYnJhcnkgbXVzdCBub3QgY29udGFpbiB1bmRlZmluZWQgc3ltYm9scywiCi0JICAgICAgJEVDSE8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgotCSAgICAgICRFQ0hPICIqKiogaXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdpdGggLW5vLXVuZGVmaW5lZCwiCi0JICAgICAgJEVDSE8gIioqKiBsaWJ0b29sIHdpbGwgb25seSBjcmVhdGUgYSBzdGF0aWMgdmVyc2lvbiBvZiBpdC4iCisJICAgICAgZWNobworCSAgICAgIGVjaG8gIioqKiBTaW5jZSB0aGlzIGxpYnJhcnkgbXVzdCBub3QgY29udGFpbiB1bmRlZmluZWQgc3ltYm9scywiCisJICAgICAgZWNobyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCisJICAgICAgZWNobyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgorCSAgICAgIGVjaG8gIioqKiBsaWJ0b29sIHdpbGwgb25seSBjcmVhdGUgYSBzdGF0aWMgdmVyc2lvbiBvZiBpdC4iCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJCW9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKQEAgLTY4MzksOSArODAwMSw5IEBACiAgICAgICAjIFRpbWUgdG8gY2hhbmdlIGFsbCBvdXIgImZvby5sdGZyYW1ld29yayIgc3R1ZmYgYmFjayB0byAiLWZyYW1ld29yayBmb28iCiAgICAgICBjYXNlICRob3N0IGluCiAJKi0qLWRhcndpbiopCi0JICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQkgIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiWCAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JICBkZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIG5ld2RlcGxpYnM9YCRFQ0hPICIgJG5ld2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiICRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgZGVwbGlicz1gJEVDSE8gIiAkZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAogCSAgOzsKICAgICAgIGVzYWMKIApAQCAtNjg1NCw3ICs4MDE2LDcgQEAKIAkqKQogCSAgY2FzZSAiICRkZXBsaWJzICIgaW4KIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwogCSAgZXNhYwogCSAgOzsKIAllc2FjCkBAIC02ODY0LDEwICs4MDI2LDEwIEBACiAJLUwqKQogCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCiAJICAqIiAkZGVwbGliICIqKSA7OwotCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwogCSAgZXNhYwogCSAgOzsKLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKICAgICAgIGRlcGxpYnM9IiRuZXdfbGlicyIKQEAgLTY4NzksMTUgKzgwNDEsMjIgQEAKIAogICAgICAgIyBUZXN0IGFnYWluLCB3ZSBtYXkgaGF2ZSBkZWNpZGVkIG5vdCB0byBidWlsZCBpdCBhbnkgbW9yZQogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKwkjIFJlbW92ZSAke3dsfSBpbnN0YW5jZXMgd2hlbiBsaW5raW5nIHdpdGggbGQuCisJIyBGSVhNRTogc2hvdWxkIHRlc3QgdGhlIHJpZ2h0IF9jbWRzIHZhcmlhYmxlLgorCWNhc2UgJGFyY2hpdmVfY21kcyBpbgorCSAgKlwkTERcICopIHdsPSA7OworICAgICAgICBlc2FjCiAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgPSB5ZXM7IHRoZW4KIAkgICMgSGFyZGNvZGUgdGhlIGxpYnJhcnkgcGF0aHMKIAkgIGhhcmRjb2RlX2xpYmRpcnM9CiAJICBkZXBfcnBhdGg9CiAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgotCSAgdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCiAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCiAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAogCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgogCQllbHNlCkBAIC02ODk2LDE4ICs4MDY1LDE4IEBACiAJCSAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQogCQkgICAgOzsKIAkJICAqKQotCQkgICAgaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCSAgICBmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCiAJCSAgICA7OwogCQkgIGVzYWMKIAkJZmkKIAkgICAgICBlbHNlCiAJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkJZGVwX3JwYXRoPSIkZGVwX3JwYXRoICRmbGFnIgorCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKIAkgICAgICBmaQogCSAgICBlbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBwZXJtX3JwYXRoPSIkcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGRvbmUKQEAgLTY5MTUsMTcgKzgwODQsMTMgQEAKIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgogCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0JICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIjsgdGhlbgotCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgotCSAgICBlbHNlCi0JICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JICAgIGZpCisJICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCiAJICBmaQogCSAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkcGVybV9ycGF0aCI7IHRoZW4KIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KIAkgICAgcnBhdGg9CiAJICAgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCi0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgICAgZG9uZQogCSAgICBldmFsICIkcnVucGF0aF92YXI9JyRycGF0aFwkJHJ1bnBhdGhfdmFyJzsgZXhwb3J0ICRydW5wYXRoX3ZhciIKIAkgIGZpCkBAIC02OTMzLDcgKzgwOTgsNyBAQAogCWZpCiAKIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCi0JdGVzdCAiJG1vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgogCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCiAJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCiAJZmkKQEAgLTY5NTksMTggKzgxMjQsMTggQEAKIAlsaW5rbmFtZXM9CiAJZm9yIGxpbmsKIAlkbwotCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgorCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCiAJZG9uZQogCiAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKLQl0ZXN0IC16ICIkcGljX2ZsYWciICYmIGxpYm9ianM9YCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwl0ZXN0IC16ICIkcGljX2ZsYWciICYmIGxpYm9ianM9YCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAJdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAogCWRlbGZpbGVzPQogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKIAkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgotCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCisJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKIAlmaQogCiAJb3JpZ19leHBvcnRfc3ltYm9scz0KQEAgLTcwMDEsMTQgKzgxNjYsNDYgQEAKIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcwogCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKwkgICAgZm9yIGNtZDEgaW4gJGNtZHM7IGRvCiAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCi0JICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAorCSAgICAgICMgZG9lc24ndCB3b3JrIG9yIGlmIHRvb2wgY29udmVyc2lvbiBpcyBub3QgbmVlZGVkLgorCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCisJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKKwkJICB0cnlfbm9ybWFsX2JyYW5jaD15ZXMKKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKKwkJICBmdW5jX2xlbiAiICRjbWQiCisJCSAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKKwkJICA7OworCQkqKQorCQkgIHRyeV9ub3JtYWxfYnJhbmNoPW5vCisJCSAgOzsKKwkgICAgICBlc2FjCisJICAgICAgaWYgdGVzdCAiJHRyeV9ub3JtYWxfYnJhbmNoIiA9IHllcyBcCisJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCisJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9CisJICAgICAgdGhlbgogCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCiAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisJICAgICAgZWxpZiB0ZXN0IC1uICIkbm1fZmlsZV9saXN0X3NwZWMiOyB0aGVuCisJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCisJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKwkJc2F2ZV9saWJvYmpzPSRsaWJvYmpzCisJCXNhdmVfb3V0cHV0PSRvdXRwdXQKKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCisJCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorCQlmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICROTSBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCisJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkJICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKwkJZG9uZSA+ICIkb3V0cHV0IgorCQlldmFsIGNtZD1cIiRjbWQxXCIKKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JworCQlvdXRwdXQ9JHNhdmVfb3V0cHV0CisJCWxpYm9ianM9JHNhdmVfbGlib2JqcworCQlza2lwcGVkX2V4cG9ydD1mYWxzZQogCSAgICAgIGVsc2UKIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCiAJCWZ1bmNfdmVyYm9zZSAidXNpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZSBmb3IgZXhwb3J0IGxpc3QuLi4iCkBAIC03MDI5LDcgKzgyMjYsNyBAQAogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgogCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCWZpCiAKIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgpAQCAtNzA0MSw3ICs4MjM4LDcgQEAKIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CiAJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgogCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCiAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCiAJZmkKQEAgLTcwNTEsNyArODI0OCw3IEBACiAJICBjYXNlICIgJGNvbnZlbmllbmNlICIgaW4KIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKIAkgICopCi0JICAgIHRtcF9kZXBsaWJzPSIkdG1wX2RlcGxpYnMgJHRlc3RfZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKIAkgICAgOzsKIAkgIGVzYWMKIAlkb25lCkBAIC03MDcxLDIxICs4MjY4LDIxIEBACiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBlbHNlCiAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQotCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZmkKIAlmaQogCiAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZmxhZyIKIAlmaQogCiAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCi0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPwogCWZpCiAKQEAgLTcxMzAsNyArODMyNyw4IEBACiAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcwogCSAgZmkKIAkgIHNhdmVfb3V0cHV0PSRvdXRwdXQKLQkgIG91dHB1dF9sYT1gJEVDSE8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorCSAgZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKwkgIG91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAogCSAgIyBDbGVhciB0aGUgcmVsb2FkYWJsZSBvYmplY3QgY3JlYXRpb24gY29tbWFuZCBxdWV1ZSBhbmQKIAkgICMgaW5pdGlhbGl6ZSBrIHRvIG9uZS4KQEAgLTcxNDMsMTMgKzgzNDEsMTYgQEAKIAkgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgogCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rc2NyaXB0CiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgR05VIGxkIHNjcmlwdDogJG91dHB1dCIKLQkgICAgJEVDSE8gJ0lOUFVUICgnID4gJG91dHB1dAorCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCiAJICAgIGRvCi0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAogCSAgICBkb25lCi0JICAgICRFQ0hPICcpJyA+PiAkb3V0cHV0Ci0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgICAgZWNobyAnKScgPj4gJG91dHB1dAorCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgICBvdXRwdXQ9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuawogCSAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGxpbmtlciBpbnB1dCBmaWxlIGxpc3Q6ICRvdXRwdXQiCkBAIC03MTYzLDEwICs4MzY0LDEyIEBACiAJICAgIGZpCiAJICAgIGZvciBvYmoKIAkgICAgZG8KLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CiAJICAgIGRvbmUKLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKKwkgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCiAJICBlbHNlCiAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCiAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKQEAgLTcxOTAsMTcgKzgzOTMsMTkgQEAKIAkJICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgogCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KIAkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCi0JCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCQkgICAgcmVsb2FkX29ianM9JG9iamxpc3QKKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgogCQkgIGVsc2UKIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCiAJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmp+XCRSTSAkbGFzdF9yb2JqXCIKKwkJICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCiAJCSAgZmkKIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKIAkJICBmdW5jX2FyaXRoICRrICsgMQogCQkgIGs9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJCSAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0JCSAgb2JqbGlzdD0kb2JqCisJCSAgb2JqbGlzdD0iICRvYmoiCiAJCSAgZnVuY19sZW4gIiAkbGFzdF9yb2JqIgogCQkgIGZ1bmNfYXJpdGggJGxlbjAgKyAkZnVuY19sZW5fcmVzdWx0CiAJCSAgbGVuPSRmdW5jX2FyaXRoX3Jlc3VsdApAQCAtNzIxMCwxMSArODQxNSwxMiBAQAogCSAgICAgICMgcmVsb2FkYWJsZSBvYmplY3QgZmlsZS4gIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0CiAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCiAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0JICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKKwkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgogCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgogCSAgICAgIGZpCi0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKIAogCSAgICBlbHNlCiAJICAgICAgb3V0cHV0PQpAQCAtNzI0OCw3ICs4NDU0LDcgQEAKIAkJbHRfZXhpdD0kPwogCiAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCiAJCSAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAogCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKQEAgLTcyNjksNyArODQ3NSw3IEBACiAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKIAkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIlgkaW5jbHVkZV9leHBzeW1zIiB8ICRYc2VkIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KQEAgLTcyODEsNyArODQ4Nyw3IEBACiAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgogCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgotCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCiAJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAkgICAgZmkKQEAgLTczMjIsMTAgKzg1MjgsMTAgQEAKIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAkgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJZmkKIApAQCAtNzM0MSw3ICs4NTQ3LDcgQEAKIAkgICAgbHRfZXhpdD0kPwogCiAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgICAgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCiAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAogCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtNzM1Myw3ICs4NTU5LDcgQEAKIAlJRlM9IiRzYXZlX2lmcyIKIAogCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KIAogCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgpAQCAtNzQzNCwxOCArODY0MCwyMSBAQAogICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgogCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiWCR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkWHNlZCAtZSAnc3wsfCB8ZydgCisJICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICIkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFNFRCAnc3wsfCB8ZydgCiAJZWxzZQogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAlmaQogICAgICAgZmkKIAorICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKKyAgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBsaWJvYmpzPSIkbm9uX3BpY19vYmplY3RzIgorCiAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0kJy9kJyAtZSAnL1wubGliJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CiAKICAgICAgIG91dHB1dD0iJG9iaiIKICAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcmVsb2FkX2NtZHMiICdleGl0ICQ/JwpAQCAtNzUwNSw4ICs4NzE0LDggQEAKICAgICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSBpcyB0aGUgU3lzdGVtIGZyYW1ld29yawotCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAotCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICJYICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiICRjb21waWxlX2RlcGxpYnMiIHwgJFNFRCAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICIgJGZpbmFsaXplX2RlcGxpYnMiIHwgJFNFRCAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAogCTs7CiAgICAgICBlc2FjCiAKQEAgLTc1MTcsMTQgKzg3MjYsMTQgQEAKIAlpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCiAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCiAJICAgIDEwLlswMTIzXSkKLQkgICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgotCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKIAkgICAgOzsKIAkgIGVzYWMKIAlmaQogCSMgVGltZSB0byBjaGFuZ2UgYWxsIG91ciAiZm9vLmx0ZnJhbWV3b3JrIiBzdHVmZiBiYWNrIHRvICItZnJhbWV3b3JrIGZvbyIKLQljb21waWxlX2RlcGxpYnM9YCRFQ0hPICJYICRjb21waWxlX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiICRjb21waWxlX2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiICRmaW5hbGl6ZV9kZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJOzsKICAgICAgIGVzYWMKIApAQCAtNzUzOCw3ICs4NzQ3LDcgQEAKIAkqKQogCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgogCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQotCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTc1NDgsMTcgKzg3NTcsMTcgQEAKIAktTCopCiAJICBjYXNlICIgJG5ld19saWJzICIgaW4KIAkgICoiICRkZXBsaWIgIiopIDs7Ci0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJICBlc2FjCiAJICA7OwotCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogICAgICAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2xpYnMiCiAKIAotICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRjb21waWxlX2RlcGxpYnMiCi0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCisgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGZpbmFsaXplX2RlcGxpYnMiCiAKICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCiAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgpAQCAtNzU2Niw3ICs4Nzc1LDcgQEAKIAkgICMgVGhpcyBpcyB0aGUgbWFnaWMgdG8gdXNlIC1ycGF0aC4KIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWRvbmUKICAgICAgIGZpCkBAIC03NTg1LDE4ICs4Nzk0LDE4IEBACiAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQogCQk7OwogCSAgICAgICopCi0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBmaQogCSAgZWxzZQogCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCiAJICBmaQogCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgogCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgIGVzYWMKIAlmaQogCWNhc2UgJGhvc3QgaW4KQEAgLTc2MDUsMTIgKzg4MTQsMTIgQEAKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGxpYmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRsaWJkaXIiOzsKIAkgIGVzYWMKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTc2MzYsMTggKzg4NDUsMTggQEAKIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCTs7CiAJICAgICAgKikKLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBlbHNlCiAJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKIAkgIGZpCiAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZmluYWxpemVfcGVybV9ycGF0aD0iJGZpbmFsaXplX3Blcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAgICAgICBkb25lCkBAIC03NjYxLDggKzg4NzAsOCBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkbGlib2JqcyIgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogCSMgVHJhbnNmb3JtIGFsbCB0aGUgbGlicmFyeSBvYmplY3RzIGludG8gc3RhbmRhcmQgb2JqZWN0cy4KLQljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAotCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKKwlmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRvdXRwdXRuYW1lIiAiQFBST0dSQU1AIiAibm8iCkBAIC03Njc0LDE1ICs4ODgzLDE1IEBACiAKICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPXllcwogICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKmNlZ2NjKiB8ICptaW5ndzMyY2UqKQorICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjIGFuZCBtaW5ndzMyY2UgaG9zdHMsIHdlIGFyZSBjcm9zcyBjb21waWxpbmcgYW55d2F5LgorICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICA7OwogICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqICkKICAgICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCiAgICAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KICAgICAgICAgZmkKICAgICAgICAgOzsKLSAgICAgICpjZWdjYykKLSAgICAgICAgIyBEaXNhYmxlIHdyYXBwZXJzIGZvciBjZWdjYywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCi0gICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCi0gICAgICAgIDs7CiAgICAgICAqKQogICAgICAgICBpZiB0ZXN0ICIkbmVlZF9yZWxpbmsiID0gbm8gfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCiAgICAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KQEAgLTc2OTEsMTMgKzg5MDAsMTkgQEAKICAgICAgIGVzYWMKICAgICAgIGlmIHRlc3QgIiR3cmFwcGVyc19yZXF1aXJlZCIgPSBubzsgdGhlbgogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKKwljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCiAJbGlua19jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAKIAkjIFdlIGhhdmUgbm8gdW5pbnN0YWxsZWQgbGlicmFyeSBkZXBlbmRlbmNpZXMsIHNvIGZpbmFsaXplIHJpZ2h0IG5vdy4KIAlleGl0X3N0YXR1cz0wCiAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0X3N0YXR1cz0kPycKIAorCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworCWZpCisKIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgogCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSI7IHRoZW4KIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCkBAIC03NzIwLDcgKzg5MzUsNyBAQAogCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KIAkgIHJwYXRoPQogCSAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCiAJICBkb25lCiAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCiAJZmkKQEAgLTc3MjgsNyArODk0Myw3IEBACiAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgcnBhdGg9CiAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbwotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgIGRvbmUKIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCiAJZmkKQEAgLTc3MzgsMTEgKzg5NTMsMTggQEAKIAkjIFdlIGRvbid0IG5lZWQgdG8gY3JlYXRlIGEgd3JhcHBlciBzY3JpcHQuCiAJbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAkjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlLgogCSRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dAogCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAogCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKworCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworCWZpCisKIAlleGl0ICRFWElUX1NVQ0NFU1MKICAgICAgIGZpCiAKQEAgLTc3NTcsNyArODk3OSw3IEBACiAJaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgIT0gbm87IHRoZW4KIAkgIGxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRjb21waWxlX2NvbW1hbmQkZmluYWxpemVfcnBhdGgiCiAJICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFNFRCAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAogCSAgZWxzZQogCSAgICAjIGZhc3RfaW5zdGFsbCBpcyBzZXQgdG8gbmVlZGxlc3MKIAkgICAgcmVsaW5rX2NvbW1hbmQ9CkBAIC03NzY5LDEzICs4OTkxLDE5IEBACiAgICAgICBmaQogCiAgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0gICAgICBsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCisgICAgICBsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAogCiAgICAgICAjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlcy4KICAgICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dCAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci9sdC0kb3V0cHV0bmFtZQogCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCiAKKyAgICAgIGlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisgICAgICBmaQorCiAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgogICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgogCkBAIC03NzkzLDE4ICs5MDIxLDcgQEAKIAkgIGZpCiAJZG9uZQogCXJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRyZWxpbmtfY29tbWFuZCkiCi0JcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICAgIGZpCi0KLSAgICAgICMgUXVvdGUgJEVDSE8gZm9yIHNoaXBwaW5nLgotICAgICAgaWYgdGVzdCAiWCRFQ0hPIiA9ICJYJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0JY2FzZSAkcHJvZ3BhdGggaW4KLQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHFlY2hvPSIkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwotCSopIHFlY2hvPSIkU0hFTEwgYHB3ZGAvJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwotCWVzYWMKLQlxZWNobz1gJEVDSE8gIlgkcWVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgZWxzZQotCXFlY2hvPWAkRUNITyAiWCRFQ0hPIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKwlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGZpCiAKICAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgbm90IGluIGRyeSBydW4gbW9kZS4KQEAgLTc4ODQsNyArOTEwMSw3IEBACiAJZWxzZQogCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCi0JICAgIG9sZG9ianM9IiRvbGRvYmpzICRzeW1maWxlb2JqIgorCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCiAJICBmaQogCWZpCiAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKQEAgLTc4OTIsMTAgKzkxMDksMTAgQEAKIAogICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCiAJZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwlmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAgICAgICBmaQogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KQEAgLTc5MDYsMTAgKzkxMjMsMTAgQEAKIAkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRkbHByZWZpbGVzCi0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKIAlmaQogCiAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCkBAIC03OTI1LDkgKzkxNDIsOSBAQAogCSAgICBkb25lIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KIAkgIDoKIAllbHNlCi0JICAkRUNITyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKIAkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcwogCSAgb2xkb2Jqcz0KQEAgLTc5NTEsMTggKzkxNjgsMzAgQEAKIAkJZXNhYwogCSAgICAgIGRvbmUKIAkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCi0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgorCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCiAJICAgICAgOzsKLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQorCWZ1bmNfdG9fdG9vbF9maWxlICIkb2xkbGliIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCXRvb2xfb2xkbGliPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKIAlldmFsIGNtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCiAKIAlmdW5jX2xlbiAiICRjbWRzIgogCWxlbj0kZnVuY19sZW5fcmVzdWx0CiAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCiAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisJZWxpZiB0ZXN0IC1uICIkYXJjaGl2ZXJfbGlzdF9zcGVjIjsgdGhlbgorCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgorCSAgZm9yIG9iaiBpbiAkb2xkb2JqcworCSAgZG8KKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCSAgZG9uZSA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZAorCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKwkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKIAllbHNlCiAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwogCSAgZnVuY192ZXJib3NlICJ1c2luZyBwaWVjZXdpc2UgYXJjaGl2ZSBsaW5raW5nLi4uIgpAQCAtODAzNiw3ICs5MjY1LDcgQEAKICAgICAgIGRvbmUKICAgICAgICMgUXVvdGUgdGhlIGxpbmsgY29tbWFuZCBmb3Igc2hpcHBpbmcuCiAgICAgICByZWxpbmtfY29tbWFuZD0iKGNkIGBwd2RgOyAkU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tbW9kZT1yZWxpbmsgJGxpYnRvb2xfYXJncyBAaW5zdF9wcmVmaXhfZGlyQCkiCi0gICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllcyA7IHRoZW4KIAlyZWxpbmtfY29tbWFuZD0KICAgICAgIGZpCkBAIC04MDU2LDEyICs5Mjg1LDIzIEBACiAJICAgICAgKi5sYSkKIAkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7Ci0JICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7CisJICAgICAgLUwqKQorCQlmdW5jX3N0cmlwbmFtZSAtTCAnJyAiJGRlcGxpYiIKKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKwkJOzsKKwkgICAgICAtUiopCisJCWZ1bmNfc3RyaXBuYW1lIC1SICcnICIkZGVwbGliIgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorCQk7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKQEAgLTgwNzUsOSArOTMxNSw5IEBACiAJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCiAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLQkJbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYmRpci8kbmFtZSIKKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwotCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgpAQCAtODA5NCw3ICs5MzM0LDcgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC04MTA2LDcgKzkzNDYsNyBAQAogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwogCSAgICAgIGVzYWMKLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgogCSAgICBkb25lCiAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgogCSAgICBuZXdkbHByZWZpbGVzPQpAQCAtODExNSwxNSArOTM1NSwzMyBAQAogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwogCSAgICAgIGVzYWMKLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkYWJzIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgogCSAgICBkb25lCiAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogCSAgZmkKIAkgICRSTSAkb3V0cHV0CiAJICAjIHBsYWNlIGRsbmFtZSBpbiBjb3JyZWN0IHBvc2l0aW9uIGZvciBjeWd3aW4KKwkgICMgSW4gZmFjdCwgaXQgd291bGQgYmUgbmljZSBpZiB3ZSBjb3VsZCB1c2UgdGhpcyBjb2RlIGZvciBhbGwgdGFyZ2V0CisJICAjIHN5c3RlbXMgdGhhdCBjYW4ndCBoYXJkLWNvZGUgbGlicmFyeSBwYXRocyBpbnRvIHRoZWlyIGV4ZWN1dGFibGVzCisJICAjIGFuZCB0aGF0IGhhdmUgbm8gc2hhcmVkIGxpYnJhcnkgcGF0aCB2YXJpYWJsZSBpbmRlcGVuZGVudCBvZiBQQVRILAorCSAgIyBidXQgaXQgdHVybnMgb3V0IHdlIGNhbid0IGVhc2lseSBkZXRlcm1pbmUgdGhhdCBmcm9tIGluc3BlY3RpbmcKKwkgICMgbGlidG9vbCB2YXJpYWJsZXMsIHNvIHdlIGhhdmUgdG8gaGFyZC1jb2RlIHRoZSBPU3MgdG8gd2hpY2ggaXQKKwkgICMgYXBwbGllcyBoZXJlOyBhdCB0aGUgbW9tZW50LCB0aGF0IG1lYW5zIHBsYXRmb3JtcyB0aGF0IHVzZSB0aGUgUEUKKwkgICMgb2JqZWN0IGZvcm1hdCB3aXRoIERMTCBmaWxlcy4gIFNlZSB0aGUgbG9uZyBjb21tZW50IGF0IHRoZSB0b3Agb2YKKwkgICMgdGVzdHMvYmluZGlyLmF0IGZvciBmdWxsIGRldGFpbHMuCiAJICB0ZGxuYW1lPSRkbG5hbWUKIAkgIGNhc2UgJGhvc3QsJG91dHB1dCwkaW5zdGFsbGVkLCRtb2R1bGUsJGRsbmFtZSBpbgotCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqY2VnY2MqLCpsYWkseWVzLG5vLCouZGxsKSB0ZGxuYW1lPS4uL2Jpbi8kZGxuYW1lIDs7CisJICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCB8ICpjZWdjYyosKmxhaSx5ZXMsbm8sKi5kbGwpCisJICAgICAgIyBJZiBhIC1iaW5kaXIgYXJndW1lbnQgd2FzIHN1cHBsaWVkLCBwbGFjZSB0aGUgZGxsIHRoZXJlLgorCSAgICAgIGlmIHRlc3QgIngkYmluZGlyIiAhPSB4IDsKKwkgICAgICB0aGVuCisJCWZ1bmNfcmVsYXRpdmVfcGF0aCAiJGluc3RhbGxfbGliZGlyIiAiJGJpbmRpciIKKwkJdGRsbmFtZT0kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCRkbG5hbWUKKwkgICAgICBlbHNlCisJCSMgT3RoZXJ3aXNlIGZhbGwgYmFjayBvbiBoZXVyaXN0aWMuCisJCXRkbG5hbWU9Li4vYmluLyRkbG5hbWUKKwkgICAgICBmaQorCSAgICAgIDs7CiAJICBlc2FjCiAJICAkRUNITyA+ICRvdXRwdXQgIlwKICMgJG91dHB1dG5hbWUgLSBhIGxpYnRvb2wgbGlicmFyeSBmaWxlCkBAIC04MTgyLDcgKzk0NDAsNyBAQAogICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogfQogCi17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCit7IHRlc3QgIiRvcHRfbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IH0gJiYKICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KIAogCkBAIC04MjAyLDkgKzk0NjAsOSBAQAogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7Ci0gICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7CisgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7CisgICAgICAqKSBmdW5jX2FwcGVuZCBmaWxlcyAiICRhcmciIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQogCkBAIC04MjEzLDI0ICs5NDcxLDIzIEBACiAKICAgICBybWRpcnM9CiAKLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgogICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KICAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgogICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCi0Jb2JqZGlyPSIkb3JpZ29iamRpciIKKwlvZGlyPSIkb2JqZGlyIgogICAgICAgZWxzZQotCW9iamRpcj0iJGRpci8kb3JpZ29iamRpciIKKwlvZGlyPSIkZGlyLyRvYmpkaXIiCiAgICAgICBmaQogICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCiAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgorICAgICAgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCAmJiBvZGlyPSIkZGlyIgogCi0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCi0gICAgICBpZiB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgdGhlbgorICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgogCWNhc2UgIiAkcm1kaXJzICIgaW4KLQkgICoiICRvYmpkaXIgIiopIDs7Ci0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKKwkgICoiICRvZGlyICIqKSA7OworCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7CiAJZXNhYwogICAgICAgZmkKIApAQCAtODI1NiwxOCArOTUxMywxNyBAQAogCiAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgogCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbiIKIAkgIGRvbmUKLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kb2xkX2xpYnJhcnkiCiAKLQkgIGNhc2UgIiRtb2RlIiBpbgorCSAgY2FzZSAiJG9wdF9tb2RlIiBpbgogCSAgY2xlYW4pCi0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgotCSAgICAjICIgICIgaW4gdGhlIGJlZ2lubmluZyBjYXRjaGVzIGVtcHR5ICRkbG5hbWUKKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKLQkgICAgKikgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kZGxuYW1lIiA7OworCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKIAkgICAgZXNhYwotCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCisJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKIAkgICAgOzsKIAkgIHVuaW5zdGFsbCkKIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCkBAIC04Mjk1LDE5ICs5NTUxLDE5IEBACiAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KIAkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiAmJgogCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJHBpY19vYmplY3QiCiAJICBmaQogCiAJICAjIEFkZCBub24tUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCiAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCiAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kbm9uX3BpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKIAkgIGZpCiAJZmkKIAk7OwogCiAgICAgICAqKQotCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgorCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KIAkgIG5vZXhlbmFtZT0kbmFtZQogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5leGUpCkBAIC04MzE3LDcgKzk1NzMsNyBAQAogCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCiAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgogCSAgICA7OwogCSAgZXNhYwogCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCkBAIC04MzI2LDcgKzk1ODIsNyBAQAogCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgogCSAgICAgIHJlbGlua19jb21tYW5kPQogCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAotCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgogCSAgICBlbHNlCiAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CiAJICAgICAgZnVuY19zb3VyY2UgJGRpci8kbm9leGVuYW1lCkBAIC04MzM0LDEyICs5NTkwLDEyIEBACiAKIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKIAkgICAgIyBhcyBkb2VzIHRoZSB2ZXJzaW9uIG9mICRmaWxlIHRoYXQgd2FzIGFkZGVkIGludG8gJHJtZmlsZXMKLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKIAkgICAgaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCisJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCi0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJHtub2V4ZW5hbWV9LmMiCiAJICAgIGZpCiAJICBmaQogCWZpCkBAIC04MzQ3LDcgKzk2MDMsNiBAQAogICAgICAgZXNhYwogICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCiAgICAgZG9uZQotICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCiAKICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCkBAIC04MzU5LDE2ICs5NjE0LDE2IEBACiAgICAgZXhpdCAkZXhpdF9zdGF0dXMKIH0KIAoteyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKK3sgdGVzdCAiJG9wdF9tb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IH0gJiYKICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQogCi10ZXN0IC16ICIkbW9kZSIgJiYgewordGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7CiAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCiAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCiB9CiAKIHRlc3QgLXogIiRleGVjX2NtZCIgJiYgXAotICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCiAKIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KICAgZXZhbCBleGVjICIkZXhlY19jbWQiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2FzbWNmaS5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXNtY2ZpLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZjczYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2FzbWNmaS5tNApAQCAtMCwwICsxLDEzIEBACitBQ19ERUZVTihbR0NDX0FTX0NGSV9QU0VVRE9fT1BdLAorW0FDX0NBQ0hFX0NIRUNLKFthc3NlbWJsZXIgLmNmaSBwc2V1ZG8tb3Agc3VwcG9ydF0sCisgICAgZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AsIFsKKyAgICBnY2NfY3ZfYXNfY2ZpX3BzZXVkb19vcD11bmtub3duCisgICAgQUNfVFJZX0NPTVBJTEUoW2FzbSAoIi5jZmlfc3RhcnRwcm9jXG5cdC5jZmlfZW5kcHJvYyIpO10sLAorCQkgICBbZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3A9eWVzXSwKKwkJICAgW2djY19jdl9hc19jZmlfcHNldWRvX29wPW5vXSkKKyBdKQorIGlmIHRlc3QgIngkZ2NjX2N2X2FzX2NmaV9wc2V1ZG9fb3AiID0geHllczsgdGhlbgorICAgIEFDX0RFRklORShIQVZFX0FTX0NGSV9QU0VVRE9fT1AsIDEsCisJICAgICAgW0RlZmluZSBpZiB5b3VyIGFzc2VtYmxlciBzdXBwb3J0cyAuY2ZpXyogZGlyZWN0aXZlcy5dKQorIGZpCitdKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9hcHBlbmRfZmxhZy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfYXBwZW5kX2ZsYWcubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQzOGI3NgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfYXBwZW5kX2ZsYWcubTQKQEAgLTAsMCArMSw2OSBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICBodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b2NvbmYtYXJjaGl2ZS9heF9hcHBlbmRfZmxhZy5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0FQUEVORF9GTEFHKEZMQUcsIFtGTEFHUy1WQVJJQUJMRV0pCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgRkxBRyBpcyBhcHBlbmRlZCB0byB0aGUgRkxBR1MtVkFSSUFCTEUgc2hlbGwgdmFyaWFibGUsIHdpdGggYSBzcGFjZQorIyAgIGFkZGVkIGluIGJldHdlZW4uCisjCisjICAgSWYgRkxBR1MtVkFSSUFCTEUgaXMgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UncyBmbGFncyAoZS5nLgorIyAgIENGTEFHUykgaXMgdXNlZC4gIEZMQUdTLVZBUklBQkxFIGlzIG5vdCBjaGFuZ2VkIGlmIGl0IGFscmVhZHkgY29udGFpbnMKKyMgICBGTEFHLiAgSWYgRkxBR1MtVkFSSUFCTEUgaXMgdW5zZXQgaW4gdGhlIHNoZWxsLCBpdCBpcyBzZXQgdG8gZXhhY3RseQorIyAgIEZMQUcuCisjCisjICAgTk9URTogSW1wbGVtZW50YXRpb24gYmFzZWQgb24gQVhfQ0ZMQUdTX0dDQ19PUFRJT04uCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMTEgTWFhcnRlbiBCb3NtYW5zIDxta2Jvc21hbnNAZ21haWwuY29tPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAyCisKK0FDX0RFRlVOKFtBWF9BUFBFTkRfRkxBR10sCitbQUNfUFJFUkVRKDIuNTkpZG5sIGZvciBfQUNfTEFOR19QUkVGSVgKK0FTX1ZBUl9QVVNIREVGKFtGTEFHU10sIFttNF9kZWZhdWx0KCQyLF9BQ19MQU5HX1BSRUZJWFtGTEFHU10pXSlkbmwKK0FTX1ZBUl9TRVRfSUYoRkxBR1MsCisgIFtjYXNlICIgQVNfVkFSX0dFVChGTEFHUykgIiBpbgorICAgICoiICQxICIqKQorICAgICAgQUNfUlVOX0xPRyhbOiBGTEFHUyBhbHJlYWR5IGNvbnRhaW5zICQxXSkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIEFDX1JVTl9MT0coWzogRkxBR1M9IiRGTEFHUyAkMSJdKQorICAgICAgQVNfVkFSX1NFVChGTEFHUywgWyJBU19WQVJfR0VUKEZMQUdTKSAkMSJdKQorICAgICAgOzsKKyAgIGVzYWNdLAorICBbQVNfVkFSX1NFVChGTEFHUyxbIiQxIl0pXSkKK0FTX1ZBUl9QT1BERUYoW0ZMQUdTXSlkbmwKK10pZG5sIEFYX0FQUEVORF9GTEFHCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NjX21heG9wdC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2NfbWF4b3B0Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNzUzMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NjX21heG9wdC5tNApAQCAtMCwwICsxLDE4MCBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY2NfbWF4b3B0Lmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ0NfTUFYT1BUCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgVHJ5IHRvIHR1cm4gb24gImdvb2QiIEMgb3B0aW1pemF0aW9uIGZsYWdzIGZvciB2YXJpb3VzIGNvbXBpbGVycyBhbmQKKyMgICBhcmNoaXRlY3R1cmVzLCBmb3Igc29tZSBkZWZpbml0aW9uIG9mICJnb29kIi4gKEluIG91ciBjYXNlLCBnb29kIGZvcgorIyAgIEZGVFcgYW5kIGhvcGVmdWxseSBmb3Igb3RoZXIgc2NpZW50aWZpYyBjb2Rlcy4gTW9kaWZ5IGFzIG5lZWRlZC4pCisjCisjICAgVGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRoZSBmbGFncyBieSBzZXR0aW5nIHRoZSBDRkxBR1MgZW52aXJvbm1lbnQKKyMgICB2YXJpYWJsZS4gVGhlIHVzZXIgY2FuIGFsc28gc3BlY2lmeSAtLWVuYWJsZS1wb3J0YWJsZS1iaW5hcnkgaW4gb3JkZXIgdG8KKyMgICBkaXNhYmxlIGFueSBvcHRpbWl6YXRpb24gZmxhZ3MgdGhhdCBtaWdodCByZXN1bHQgaW4gYSBiaW5hcnkgdGhhdCBvbmx5CisjICAgcnVucyBvbiB0aGUgaG9zdCBhcmNoaXRlY3R1cmUuCisjCisjICAgTm90ZSBhbHNvIHRoYXQgdGhlIGZsYWdzIGFzc3VtZSB0aGF0IEFOU0kgQyBhbGlhc2luZyBydWxlcyBhcmUgZm9sbG93ZWQKKyMgICBieSB0aGUgY29kZSAoZS5nLiBmb3IgZ2NjJ3MgLWZzdHJpY3QtYWxpYXNpbmcpLCBhbmQgdGhhdCBmbG9hdGluZy1wb2ludAorIyAgIGNvbXB1dGF0aW9ucyBjYW4gYmUgcmUtb3JkZXJlZCBhcyBuZWVkZWQuCisjCisjICAgUmVxdWlyZXMgbWFjcm9zOiBBWF9DSEVDS19DT01QSUxFX0ZMQUcsIEFYX0NPTVBJTEVSX1ZFTkRPUiwKKyMgICBBWF9HQ0NfQVJDSEZMQUcsIEFYX0dDQ19YODZfQ1BVSUQuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PgorIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXR0ZW8gRnJpZ28KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMTIKKworQUNfREVGVU4oW0FYX0NDX01BWE9QVF0sCitbCitBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKK0FDX1JFUVVJUkUoW0FYX0NPTVBJTEVSX1ZFTkRPUl0pCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisKK0FDX0FSR19FTkFCTEUocG9ydGFibGUtYmluYXJ5LCBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvcnRhYmxlLWJpbmFyeV0sIFtkaXNhYmxlIGNvbXBpbGVyIG9wdGltaXphdGlvbnMgdGhhdCB3b3VsZCBwcm9kdWNlIHVucG9ydGFibGUgYmluYXJpZXNdKV0sCisJYWN4X21heG9wdF9wb3J0YWJsZT0kd2l0aHZhbCwgYWN4X21heG9wdF9wb3J0YWJsZT1ubykKKworIyBUcnkgdG8gZGV0ZXJtaW5lICJnb29kIiBuYXRpdmUgY29tcGlsZXIgZmxhZ3MgaWYgbm9uZSBzcGVjaWZpZWQgdmlhIENGTEFHUworaWYgdGVzdCAiJGFjX3Rlc3RfQ0ZMQUdTIiAhPSAic2V0IjsgdGhlbgorICBDRkxBR1M9IiIKKyAgY2FzZSAkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IgaW4KKyAgICBkZWMpIENGTEFHUz0iLW5ld2MgLXcwIC1PNSAtYW5zaV9hbGlhcyAtYW5zaV9hcmdzIC1mcF9yZW9yZGVyIC10dW5lIGhvc3QiCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4bm87IHRoZW4KKyAgICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1hcmNoIGhvc3QiCisgICAgICAgICBmaTs7CisKKyAgICBzdW4pIENGTEFHUz0iLW5hdGl2ZSAtZmFzdCAteE81IC1kYWxpZ24iCisJIGlmIHRlc3QgIngkYWN4X21heG9wdF9wb3J0YWJsZSIgPSB4eWVzOyB0aGVuCisJICAgQ0ZMQUdTPSIkQ0ZMQUdTIC14YXJjaD1nZW5lcmljIgorICAgICAgICAgZmk7OworCisgICAgaHApICBDRkxBR1M9IitPYWxsICtPcHRyc19hbnNpICtEU25hdGl2ZSIKKwkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHh5ZXM7IHRoZW4KKwkgICBDRkxBR1M9IiRDRkxBR1MgK0RBcG9ydGFibGUiCisJIGZpOzsKKworICAgIGlibSkgaWYgdGVzdCAieCRhY3hfbWF4b3B0X3BvcnRhYmxlIiA9IHhubzsgdGhlbgorICAgICAgICAgICB4bGNfb3B0PSItcWFyY2g9YXV0byAtcXR1bmU9YXV0byIKKwkgZWxzZQorICAgICAgICAgICB4bGNfb3B0PSItcXR1bmU9YXV0byIKKwkgZmkKKyAgICAgICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygkeGxjX29wdCwKKwkJQ0ZMQUdTPSItTzMgLXFhbnNpYWxpYXMgLXcgJHhsY19vcHQiLAorICAgICAgICAgICAgICAgW0NGTEFHUz0iLU8zIC1xYW5zaWFsaWFzIC13IgorICAgICAgICAgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBZb3Ugc2VlbSB0byBoYXZlIHRoZSBJQk0gIEMgY29tcGlsZXIuICBJdCBpcyAgICAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgcmVjb21tZW5kZWQgZm9yIGJlc3QgcGVyZm9ybWFuY2UgdGhhdCB5b3UgdXNlOiAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICAgIENGTEFHUz0tTzMgLXFhcmNoPXh4eCAtcXR1bmU9eHh4IC1xYW5zaWFsaWFzIC13ICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgICAgICAgICAgICAgICAgICAgICBeXl4gICAgICAgIF5eXiAgICAgICAgICAgICAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIiogIHdoZXJlIHh4eCBpcyBwd3IyLCBwd3IzLCA2MDQsIG9yIHdoYXRldmVyIGtpbmQgb2YgKiIKKyAgICAgICAgICAgICAgICBlY2hvICIqICBDUFUgeW91IGhhdmUuICAoU2V0IHRoZSBDRkxBR1MgZW52aXJvbm1lbnQgdmFyLiAgICoiCisgICAgICAgICAgICAgICAgZWNobyAiKiAgYW5kIHJlLXJ1biBjb25maWd1cmUuKSAgRm9yIG1vcmUgaW5mbywgbWFuIGNjLiAgICAqIgorICAgICAgICAgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiJdKQorICAgICAgICAgOzsKKworICAgIGludGVsKSBDRkxBR1M9Ii1PMyAtYW5zaV9hbGlhcyIKKwlpZiB0ZXN0ICJ4JGFjeF9tYXhvcHRfcG9ydGFibGUiID0geG5vOyB0aGVuCisJICBpY2NfYXJjaGZsYWc9dW5rbm93bgorCSAgaWNjX2ZsYWdzPSIiCisJICBjYXNlICRob3N0X2NwdSBpbgorCSAgICBpNjg2Knx4ODZfNjQqKQorICAgICAgICAgICAgICAjIGljYyBhY2NlcHRzIGdjYyBhc3NlbWJseSBzeW50YXgsIHNvIHRoZXNlIHNob3VsZCB3b3JrOgorCSAgICAgIEFYX0dDQ19YODZfQ1BVSUQoMCkKKyAgICAgICAgICAgICAgQVhfR0NDX1g4Nl9DUFVJRCgxKQorCSAgICAgIGNhc2UgJGF4X2N2X2djY194ODZfY3B1aWRfMCBpbiAjIHNlZSBBWF9HQ0NfQVJDSEZMQUcKKyAgICAgICAgICAgICAgICAqOjc1NmU2NTQ3Oio6KikgIyBJbnRlbAorICAgICAgICAgICAgICAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8xIGluCisgICAgICAgICAgICAgICAgICAgICo2YT86KltbMjM0XV06KjoqfCo2W1s3ODliXV0/Oio6KjoqKSBpY2NfZmxhZ3M9Ii14SyI7OworICAgICAgICAgICAgICAgICAgICAqZjNbWzM0N11dOio6KjoqfCpmNFsxMzQ3XToqOio6KikgaWNjX2ZsYWdzPSIteFAgLXhOIC14VyAteEsiOzsKKyAgICAgICAgICAgICAgICAgICAgKmY/PzoqOio6KikgaWNjX2ZsYWdzPSIteE4gLXhXIC14SyI7OworICAgICAgICAgICAgICAgICAgZXNhYyA7OworICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIGlmIHRlc3QgIngkaWNjX2ZsYWdzIiAhPSB4OyB0aGVuCisgICAgICAgICAgICBmb3IgZmxhZyBpbiAkaWNjX2ZsYWdzOyBkbworICAgICAgICAgICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoJGZsYWcsIFtpY2NfYXJjaGZsYWc9JGZsYWc7IGJyZWFrXSkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGljYyBhcmNoaXRlY3R1cmUgZmxhZ10pCisJICBBQ19NU0dfUkVTVUxUKCRpY2NfYXJjaGZsYWcpCisgICAgICAgICAgaWYgdGVzdCAieCRpY2NfYXJjaGZsYWciICE9IHh1bmtub3duOyB0aGVuCisgICAgICAgICAgICBDRkxBR1M9IiRDRkxBR1MgJGljY19hcmNoZmxhZyIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorCTs7CisKKyAgICBnbnUpCisgICAgICMgZGVmYXVsdCBvcHRpbWl6YXRpb24gZmxhZ3MgZm9yIGdjYyBvbiBhbGwgc3lzdGVtcworICAgICBDRkxBR1M9Ii1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciIKKworICAgICAjIC1tYWxpZ24tZG91YmxlIGZvciB4ODYgc3lzdGVtcworICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoLW1hbGlnbi1kb3VibGUsIENGTEFHUz0iJENGTEFHUyAtbWFsaWduLWRvdWJsZSIpCisKKyAgICAgIyAgLWZzdHJpY3QtYWxpYXNpbmcgZm9yIGdjYy0yLjk1KworICAgICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoLWZzdHJpY3QtYWxpYXNpbmcsCisJQ0ZMQUdTPSIkQ0ZMQUdTIC1mc3RyaWN0LWFsaWFzaW5nIikKKworICAgICAjIG5vdGUgdGhhdCB3ZSBlbmFibGUgInVuc2FmZSIgZnAgb3B0aW1pemF0aW9uIHdpdGggb3RoZXIgY29tcGlsZXJzLCB0b28KKyAgICAgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHKC1mZmFzdC1tYXRoLCBDRkxBR1M9IiRDRkxBR1MgLWZmYXN0LW1hdGgiKQorCisgICAgIEFYX0dDQ19BUkNIRkxBRygkYWN4X21heG9wdF9wb3J0YWJsZSkKKyAgICAgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgLXogIiRDRkxBR1MiOyB0aGVuCisJZWNobyAiIgorCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIqIFdBUk5JTkc6IERvbid0IGtub3cgdGhlIGJlc3QgQ0ZMQUdTIGZvciB0aGlzIHN5c3RlbSAgKiIKKyAgICAgICAgZWNobyAiKiBVc2UgLi9jb25maWd1cmUgQ0ZMQUdTPS4uLiB0byBzcGVjaWZ5IHlvdXIgb3duIGZsYWdzICoiCisJZWNobyAiKiAob3RoZXJ3aXNlLCBhIGRlZmF1bHQgb2YgQ0ZMQUdTPS1PMyB3aWxsIGJlIHVzZWQpICAgICoiCisJZWNobyAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiCisJZWNobyAiIgorICAgICAgICBDRkxBR1M9Ii1PMyIKKyAgZmkKKworICBBWF9DSEVDS19DT01QSUxFX0ZMQUcoJENGTEFHUywgW10sIFsKKwllY2hvICIiCisgICAgICAgIGVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIgorICAgICAgICBlY2hvICIqIFdBUk5JTkc6IFRoZSBndWVzc2VkIENGTEFHUyBkb24ndCBzZWVtIHRvIHdvcmsgd2l0aCAgKiIKKyAgICAgICAgZWNobyAiKiB5b3VyIGNvbXBpbGVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoiCisgICAgICAgIGVjaG8gIiogVXNlIC4vY29uZmlndXJlIENGTEFHUz0uLi4gdG8gc3BlY2lmeSB5b3VyIG93biBmbGFncyAqIgorICAgICAgICBlY2hvICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIKKyAgICAgICAgZWNobyAiIgorICAgICAgICBDRkxBR1M9IiIKKyAgXSkKKworZmkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NmbGFnc193YXJuX2FsbC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2ZsYWdzX3dhcm5fYWxsLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyMmUzN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NmbGFnc193YXJuX2FsbC5tNApAQCAtMCwwICsxLDEyMSBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY2ZsYWdzX3dhcm5fYWxsLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ0ZMQUdTX1dBUk5fQUxMICAgWyhzaGVsbHZhciBbLGRlZmF1bHQsIFtBL05BXV0pXQorIyAgIEFYX0NYWEZMQUdTX1dBUk5fQUxMIFsoc2hlbGx2YXIgWyxkZWZhdWx0LCBbQS9OQV1dKV0KKyMgICBBWF9GQ0ZMQUdTX1dBUk5fQUxMICBbKHNoZWxsdmFyIFssZGVmYXVsdCwgW0EvTkFdXSldCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgVHJ5IHRvIGZpbmQgYSBjb21waWxlciBvcHRpb24gdGhhdCBlbmFibGVzIG1vc3QgcmVhc29uYWJsZSB3YXJuaW5ncy4KKyMKKyMgICBGb3IgdGhlIEdOVSBjb21waWxlciBpdCB3aWxsIGJlIC1XYWxsIChhbmQgLWFuc2kgLXBlZGFudGljKSBUaGUgcmVzdWx0CisjICAgaXMgYWRkZWQgdG8gdGhlIHNoZWxsdmFyIGJlaW5nIENGTEFHUywgQ1hYRkxBR1MsIG9yIEZDRkxBR1MgYnkgZGVmYXVsdC4KKyMKKyMgICBDdXJyZW50bHkgdGhpcyBtYWNybyBrbm93cyBhYm91dCB0aGUgR0NDLCBTb2xhcmlzLCBEaWdpdGFsIFVuaXgsIEFJWCwKKyMgICBIUC1VWCwgSVJJWCwgTkVDIFNYLTUgKFN1cGVyLVVYIDEwKSwgQ3JheSBKOTAgKFVuaWNvcyAxMC4wLjAuOCksIGFuZAorIyAgIEludGVsIGNvbXBpbGVycy4gIEZvciBhIGdpdmVuIGNvbXBpbGVyLCB0aGUgRm9ydHJhbiBmbGFncyBhcmUgbXVjaCBtb3JlCisjICAgZXhwZXJpbWVudGFsIHRoYW4gdGhlaXIgQyBlcXVpdmFsZW50cy4KKyMKKyMgICAgLSAkMSBzaGVsbC12YXJpYWJsZS10by1hZGQtdG8gOiBDRkxBR1MsIENYWEZMQUdTLCBvciBGQ0ZMQUdTCisjICAgIC0gJDIgYWRkLXZhbHVlLWlmLW5vdC1mb3VuZCA6IG5vdGhpbmcKKyMgICAgLSAkMyBhY3Rpb24taWYtZm91bmQgOiBhZGQgdmFsdWUgdG8gc2hlbGx2YXJpYWJsZQorIyAgICAtICQ0IGFjdGlvbi1pZi1ub3QtZm91bmQgOiBub3RoaW5nCisjCisjICAgTk9URTogVGhlc2UgbWFjcm9zIGRlcGVuZCBvbiBBWF9BUFBFTkRfRkxBRy4KKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBHdWlkbyBVLiBEcmFoZWltIDxndWlkb2RAZ214LmRlPgorIyAgIENvcHlyaWdodCAoYykgMjAxMCBSaHlzIFVsZXJpY2ggPHJoeXMudWxlcmljaEBnbWFpbC5jb20+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDEzCisKK0FDX0RFRlVOKFtBWF9GTEFHU19XQVJOX0FMTF0sW2RubAorQVNfVkFSX1BVU0hERUYoW0ZMQUdTXSxbX0FDX0xBTkdfUFJFRklYW11GTEFHU10pZG5sCitBU19WQVJfUFVTSERFRihbVkFSXSxbYWNfY3ZfW11fQUNfTEFOR19BQkJSRVZbXWZsYWdzX3dhcm5fYWxsXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFttNF9pZnZhbCgkMSwkMSxGTEFHUykgZm9yIG1heGltdW0gd2FybmluZ3NdLAorVkFSLFtWQVI9Im5vLCB1bmtub3duIgorYWNfc2F2ZV9bXUZMQUdTPSIkW11GTEFHUyIKK2ZvciBhY19hcmcgZG5sCitpbiAiLXdhcm4gYWxsICAlIC13YXJuIGFsbCIgICBkbmwgSW50ZWwKKyAgICItcGVkYW50aWMgICUgLVdhbGwiICAgICAgIGRubCBHQ0MKKyAgICIteHN0cmNvbnN0ICUgLXYiICAgICAgICAgIGRubCBTb2xhcmlzIEMKKyAgICItc3RkMSAgICAgICUgLXZlcmJvc2UgLXcwIC13YXJucHJvdG9zIiBkbmwgRGlnaXRhbCBVbml4CisgICAiLXFsYW5nbHZsPWFuc2kgJSAtcXNyY21zZyAtcWluZm89YWxsOm5vcHB0Om5vcHBjOm5vb2JzOm5vY25kIiBkbmwgQUlYCisgICAiLWFuc2kgLWFuc2lFICUgLWZ1bGx3YXJuIiBkbmwgSVJJWAorICAgIitFU2xpdCAgICAgJSArdzEiICAgICAgICAgZG5sIEhQLVVYIEMKKyAgICItWGMgICAgICAgICUgLXB2Y3RsWyxdZnVsbG1zZyIgZG5sIE5FQyBTWC01IChTdXBlci1VWCAxMCkKKyAgICItaCBjb25mb3JtICUgLWggbXNnbGV2ZWwgMiIgZG5sIENyYXkgQyAoVW5pY29zKQorICAgIworZG8gRkxBR1M9IiRhY19zYXZlX1tdRkxBR1MgImBlY2hvICRhY19hcmcgfCBzZWQgLWUgJ3MsJSUuKiwsJyAtZSAncywlLCwnYAorICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisgICAgICAgICAgICAgICAgICAgICBbVkFSPWBlY2hvICRhY19hcmcgfCBzZWQgLWUgJ3MsLiolICosLCdgIDsgYnJlYWtdKQorZG9uZQorRkxBR1M9IiRhY19zYXZlX1tdRkxBR1MiCitdKQorQVNfVkFSX1BPUERFRihbRkxBR1NdKWRubAorY2FzZSAiLiRWQVIiIGluCisgICAgIC5va3wub2ssKikgbTRfaWZ2YWxuKCQzLCQzKSA7OworICAgLnwubm98Lm5vLCopIG00X2RlZmF1bHQoJDQsW200X2lmdmFsKCQyLFtBWF9BUFBFTkRfRkxBRyhbJDJdLCBbJDFdKV0pXSkgOzsKKyAgICopIG00X2RlZmF1bHQoJDMsW0FYX0FQUEVORF9GTEFHKFskVkFSXSwgWyQxXSldKSA7OworZXNhYworQVNfVkFSX1BPUERFRihbVkFSXSlkbmwKK10pZG5sIEFYX0ZMQUdTX1dBUk5fQUxMCitkbmwgIGltcGxlbWVudGF0aW9uIHRhY3RpY3M6CitkbmwgICB0aGUgZm9yLWFyZ3VtZW50IGNvbnRhaW5zIGEgbGlzdCBvZiBvcHRpb25zLiBUaGUgZmlyc3QgcGFydCBvZgorZG5sICAgdGhlc2UgZG9lcyBvbmx5IGV4aXN0IHRvIGRldGVjdCB0aGUgY29tcGlsZXIgLSB1c3VhbGx5IGl0IGlzCitkbmwgICBhIGdsb2JhbCBvcHRpb24gdG8gZW5hYmxlIC1hbnNpIG9yIC1leHRyYXdhcm5pbmdzLiBBbGwgb3RoZXIKK2RubCAgIGNvbXBpbGVycyB3aWxsIGZhaWwgYWJvdXQgaXQuIFRoYXQgd2FzIG5lZWRlZCBzaW5jZSBhIGxvdCBvZgorZG5sICAgY29tcGlsZXJzIHdpbGwgZ2l2ZSBmYWxzZSBwb3NpdGl2ZXMgZm9yIHNvbWUgb3B0aW9uLXN5bnRheAorZG5sICAgbGlrZSAtV29wdGlvbiBvciAtWG9wdGlvbiBhcyB0aGV5IHRoaW5rIG9mIGl0IGlzIGEgcGFzcy10aHJvdWdoCitkbmwgICB0byBsYXRlciBjb21waWxlIHN0YWdlcyBvciBzb21ldGhpbmcuIFRoZSAiJSIgaXMgdXNlZCBhcyBhCitkbmwgICBkZWxpbWl0ZXIuIEEgbm9uLW9wdGlvbiBjb21tZW50IGNhbiBiZSBnaXZlbiBhZnRlciAiJSUiIG1hcmtzCitkbmwgICB3aGljaCB3aWxsIGJlIHNob3duIGJ1dCBub3QgYWRkZWQgdG8gdGhlIHJlc3BlY3RpdmUgQy9DWFhGTEFHUy4KKworQUNfREVGVU4oW0FYX0NGTEFHU19XQVJOX0FMTF0sW2RubAorQUNfTEFOR19QVVNIKFtDXSkKK0FYX0ZMQUdTX1dBUk5fQUxMKFskMV0sIFskMl0sIFskM10sIFskNF0pCitBQ19MQU5HX1BPUChbQ10pCitdKQorCitBQ19ERUZVTihbQVhfQ1hYRkxBR1NfV0FSTl9BTExdLFtkbmwKK0FDX0xBTkdfUFVTSChbQysrXSkKK0FYX0ZMQUdTX1dBUk5fQUxMKFskMV0sIFskMl0sIFskM10sIFskNF0pCitBQ19MQU5HX1BPUChbQysrXSkKK10pCisKK0FDX0RFRlVOKFtBWF9GQ0ZMQUdTX1dBUk5fQUxMXSxbZG5sCitBQ19MQU5HX1BVU0goW0ZvcnRyYW5dKQorQVhfRkxBR1NfV0FSTl9BTEwoWyQxXSwgWyQyXSwgWyQzXSwgWyQ0XSkKK0FDX0xBTkdfUE9QKFtGb3J0cmFuXSkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfY2hlY2tfY29tcGlsZV9mbGFnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzYThkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5tNApAQCAtMCwwICsxLDcyIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NoZWNrX2NvbXBpbGVfZmxhZy5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRyhGTEFHLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdLCBbRVhUUkEtRkxBR1NdKQorIworIyBERVNDUklQVElPTgorIworIyAgIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIEZMQUcgd29ya3Mgd2l0aCB0aGUgY3VycmVudCBsYW5ndWFnZSdzIGNvbXBpbGVyCisjICAgb3IgZ2l2ZXMgYW4gZXJyb3IuICAoV2FybmluZ3MsIGhvd2V2ZXIsIGFyZSBpZ25vcmVkKQorIworIyAgIEFDVElPTi1TVUNDRVNTL0FDVElPTi1GQUlMVVJFIGFyZSBzaGVsbCBjb21tYW5kcyB0byBleGVjdXRlIG9uCisjICAgc3VjY2Vzcy9mYWlsdXJlLgorIworIyAgIElmIEVYVFJBLUZMQUdTIGlzIGRlZmluZWQsIGl0IGlzIGFkZGVkIHRvIHRoZSBjdXJyZW50IGxhbmd1YWdlJ3MgZGVmYXVsdAorIyAgIGZsYWdzIChlLmcuIENGTEFHUykgd2hlbiB0aGUgY2hlY2sgaXMgZG9uZS4gIFRoZSBjaGVjayBpcyB0aHVzIG1hZGUgd2l0aAorIyAgIHRoZSBmbGFnczogIkNGTEFHUyBFWFRSQS1GTEFHUyBGTEFHIi4gIFRoaXMgY2FuIGZvciBleGFtcGxlIGJlIHVzZWQgdG8KKyMgICBmb3JjZSB0aGUgY29tcGlsZXIgdG8gaXNzdWUgYW4gZXJyb3Igd2hlbiBhIGJhZCBmbGFnIGlzIGdpdmVuLgorIworIyAgIE5PVEU6IEltcGxlbWVudGF0aW9uIGJhc2VkIG9uIEFYX0NGTEFHU19HQ0NfT1BUSU9OLiBQbGVhc2Uga2VlcCB0aGlzCisjICAgbWFjcm8gaW4gc3luYyB3aXRoIEFYX0NIRUNLX3tQUkVQUk9DLExJTkt9X0ZMQUcuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMTEgTWFhcnRlbiBCb3NtYW5zIDxta2Jvc21hbnNAZ21haWwuY29tPgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAyCisKK0FDX0RFRlVOKFtBWF9DSEVDS19DT01QSUxFX0ZMQUddLAorW0FDX1BSRVJFUSgyLjU5KWRubCBmb3IgX0FDX0xBTkdfUFJFRklYCitBU19WQVJfUFVTSERFRihbQ0FDSEVWQVJdLFtheF9jdl9jaGVja19bXV9BQ19MQU5HX0FCQlJFVltdZmxhZ3NfJDRfJDFdKWRubAorQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgX0FDX0xBTkcgY29tcGlsZXIgYWNjZXB0cyAkMV0sIENBQ0hFVkFSLCBbCisgIGF4X2NoZWNrX3NhdmVfZmxhZ3M9JFtdX0FDX0xBTkdfUFJFRklYW11GTEFHUworICBfQUNfTEFOR19QUkVGSVhbXUZMQUdTPSIkW11fQUNfTEFOR19QUkVGSVhbXUZMQUdTICQ0ICQxIgorICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKCldLAorICAgIFtBU19WQVJfU0VUKENBQ0hFVkFSLFt5ZXNdKV0sCisgICAgW0FTX1ZBUl9TRVQoQ0FDSEVWQVIsW25vXSldKQorICBfQUNfTEFOR19QUkVGSVhbXUZMQUdTPSRheF9jaGVja19zYXZlX2ZsYWdzXSkKK0FTX0lGKFt0ZXN0IHgiQVNfVkFSX0dFVChDQUNIRVZBUikiID0geHllc10sCisgIFttNF9kZWZhdWx0KFskMl0sIDopXSwKKyAgW200X2RlZmF1bHQoWyQzXSwgOildKQorQVNfVkFSX1BPUERFRihbQ0FDSEVWQVJdKWRubAorXSlkbmwgQVhfQ0hFQ0tfQ09NUElMRV9GTEFHUwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb21waWxlcl92ZW5kb3IubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbXBpbGVyX3ZlbmRvci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2UzMmVhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb21waWxlcl92ZW5kb3IubTQKQEAgLTAsMCArMSw4NCBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY29tcGlsZXJfdmVuZG9yLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfQ09NUElMRVJfVkVORE9SCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgRGV0ZXJtaW5lIHRoZSB2ZW5kb3Igb2YgdGhlIEMvQysrIGNvbXBpbGVyLCBlLmcuLCBnbnUsIGludGVsLCBpYm0sIHN1biwKKyMgICBocCwgYm9ybGFuZCwgY29tZWF1LCBkZWMsIGNyYXksIGthaSwgbGNjLCBtZXRyb3dlcmtzLCBzZ2ksIG1pY3Jvc29mdCwKKyMgICB3YXRjb20sIGV0Yy4gVGhlIHZlbmRvciBpcyByZXR1cm5lZCBpbiB0aGUgY2FjaGUgdmFyaWFibGUKKyMgICAkYXhfY3ZfY19jb21waWxlcl92ZW5kb3IgZm9yIEMgYW5kICRheF9jdl9jeHhfY29tcGlsZXJfdmVuZG9yIGZvciBDKysuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggU3RldmVuIEcuIEpvaG5zb24gPHN0ZXZlbmpAYWx1bS5taXQuZWR1PgorIyAgIENvcHlyaWdodCAoYykgMjAwOCBNYXR0ZW8gRnJpZ28KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgMTEKKworQUNfREVGVU4oW0FYX0NPTVBJTEVSX1ZFTkRPUl0sCitbQUNfQ0FDSEVfQ0hFQ0soW2ZvciBfQUNfTEFORyBjb21waWxlciB2ZW5kb3JdLCBheF9jdl9bXV9BQ19MQU5HX0FCQlJFVltdX2NvbXBpbGVyX3ZlbmRvciwKKyAgWyMgbm90ZTogZG9uJ3QgY2hlY2sgZm9yIGdjYyBmaXJzdCBzaW5jZSBzb21lIG90aGVyIGNvbXBpbGVycyBkZWZpbmUgX19HTlVDX18KKyAgdmVuZG9ycz0iaW50ZWw6ICAgICBfX0lDQyxfX0VDQyxfX0lOVEVMX0NPTVBJTEVSCisgICAgICAgICAgIGlibTogICAgICAgX194bGNfXyxfX3hsQ19fLF9fSUJNQ19fLF9fSUJNQ1BQX18KKyAgICAgICAgICAgcGF0aHNjYWxlOiBfX1BBVEhDQ19fLF9fUEFUSFNDQUxFX18KKyAgICAgICAgICAgY2xhbmc6ICAgICBfX2NsYW5nX18KKyAgICAgICAgICAgZ251OiAgICAgICBfX0dOVUNfXworICAgICAgICAgICBzdW46ICAgICAgIF9fU1VOUFJPX0MsX19TVU5QUk9fQ0MKKyAgICAgICAgICAgaHA6ICAgICAgICBfX0hQX2NjLF9fSFBfYUNDCisgICAgICAgICAgIGRlYzogICAgICAgX19ERUNDLF9fREVDQ1hYLF9fREVDQ19WRVIsX19ERUNDWFhfVkVSCisgICAgICAgICAgIGJvcmxhbmQ6ICAgX19CT1JMQU5EQ19fLF9fVFVSQk9DX18KKyAgICAgICAgICAgY29tZWF1OiAgICBfX0NPTU9fXworICAgICAgICAgICBjcmF5OiAgICAgIF9DUkFZQworICAgICAgICAgICBrYWk6ICAgICAgIF9fS0NDCisgICAgICAgICAgIGxjYzogICAgICAgX19MQ0NfXworICAgICAgICAgICBzZ2k6ICAgICAgIF9fc2dpLHNnaQorICAgICAgICAgICBtaWNyb3NvZnQ6IF9NU0NfVkVSCisgICAgICAgICAgIG1ldHJvd2Vya3M6IF9fTVdFUktTX18KKyAgICAgICAgICAgd2F0Y29tOiAgICBfX1dBVENPTUNfXworICAgICAgICAgICBwb3J0bGFuZDogIF9fUEdJCisgICAgICAgICAgIHVua25vd246ICAgVU5LTk9XTiIKKyAgZm9yIHZlbnRlc3QgaW4gJHZlbmRvcnM7IGRvCisgICAgY2FzZSAkdmVudGVzdCBpbgorICAgICAgKjopIHZlbmRvcj0kdmVudGVzdDsgY29udGludWUgOzsKKyAgICAgICopICB2ZW5jcHA9ImRlZmluZWQoImBlY2hvICR2ZW50ZXN0IHwgc2VkICdzLywvKSB8fCBkZWZpbmVkKC9nJ2AiKSIgOzsKKyAgICBlc2FjCisgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTSgsWworICAgICAgI2lmICEoJHZlbmNwcCkKKyAgICAgICAgdGhpc2lzYW5lcnJvcjsKKyAgICAgICNlbmRpZgorICAgIF0pXSwgW2JyZWFrXSkKKyAgZG9uZQorICBheF9jdl9bXV9BQ19MQU5HX0FCQlJFVltdX2NvbXBpbGVyX3ZlbmRvcj1gZWNobyAkdmVuZG9yIHwgY3V0IC1kOiAtZjFgCisgXSkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2NvbmZpZ3VyZV9hcmdzLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb25maWd1cmVfYXJncy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzI2YjFiCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9jb25maWd1cmVfYXJncy5tNApAQCAtMCwwICsxLDcwIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY29uZmlndXJlX2FyZ3MuaHRtbAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMKKyMgU1lOT1BTSVMKKyMKKyMgICBBWF9DT05GSUdVUkVfQVJHUworIworIyBERVNDUklQVElPTgorIworIyAgIEhlbHBlciBtYWNybyBmb3IgQVhfRU5BQkxFX0JVSUxERElSLgorIworIyAgIFRoZSB0cmFkaXRpb25hbCB3YXkgb2Ygc3RhcnRpbmcgYSBzdWJkaXItY29uZmlndXJlIGlzIHJ1bm5pbmcgdGhlIHNjcmlwdAorIyAgIHdpdGggJHsxKyIkQCJ9IGJ1dCBzaW5jZSBhdXRvY29uZiAyLjYwIHRoaXMgaXMgYnJva2VuLiBJbnN0ZWFkIHdlIGhhdmUKKyMgICB0byByZWx5IG9uIGV2YWwnaW5nICRhY19jb25maWd1cmVfYXJncyBob3dldmVyIHNvbWUgb2xkIGF1dG9jb25mCisjICAgdmVyc2lvbnMgZG8gbm90IHByb3ZpZGUgdGhhdC4gVG8gZW5zdXJlIG1heGltdW0gcG9ydGFiaWxpdHkgb2YgYXV0b2NvbmYKKyMgICBleHRlbnNpb24gbWFjcm9zIHRoaXMgaGVscGVyIGNhbiBiZSBBQ19SRVFVSVJFJ2Qgc28gdGhhdAorIyAgICRhY19jb25maWd1cmVfYXJncyB3aWxsIGFsc3dheXMgYmUgcHJlc2VudC4KKyMKKyMgICBTYWRseSwgdGhlIHRyYWRpdGlvbmFsICJleGVjICRTSEVMTCIgb2YgdGhlIGVuYWJsZV9idWlsZGRpciBtYWNyb3MgaXMKKyMgICBzcG9pbGVkIG5vdyBhbmQgbXVzdCBiZSByZXBsYWNlZCBieSAiZXZhbCArIGV4aXQgJD8iLgorIworIyAgIEV4YW1wbGU6CisjCisjICAgICBBQ19ERUZVTihbQVhfRU5BQkxFX1NVQkRJUl0sW2RubAorIyAgICAgICBBQ19SRVFVSVJFKFtBWF9DT05GSUdVUkVfQVJHU10pZG5sCisjICAgICAgIGV2YWwgJFNIRUxMICRhY19jb25maWd1cmVfYXJncyB8fCBleGl0ICQ/CisjICAgICAgIC4uLl0pCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIKKyMgICBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsCisjICAgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZworIyAgIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjICAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHJlc3BlY3RpdmUgQXV0b2NvbmYgTWFjcm8ncyBjb3B5cmlnaHQgb3duZXIKKyMgICBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhlIGNvbmZpZ3VyZQorIyAgIHNjcmlwdHMgdGhhdCBhcmUgdGhlIG91dHB1dCBvZiBBdXRvY29uZiB3aGVuIHByb2Nlc3NpbmcgdGhlIE1hY3JvLiBZb3UKKyMgICBuZWVkIG5vdCBmb2xsb3cgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB3aGVuIHVzaW5nCisjICAgb3IgZGlzdHJpYnV0aW5nIHN1Y2ggc2NyaXB0cywgZXZlbiB0aG91Z2ggcG9ydGlvbnMgb2YgdGhlIHRleHQgb2YgdGhlCisjICAgTWFjcm8gYXBwZWFyIGluIHRoZW0uIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBkb2VzIGdvdmVybgorIyAgIGFsbCBvdGhlciB1c2Ugb2YgdGhlIG1hdGVyaWFsIHRoYXQgY29uc3RpdHV0ZXMgdGhlIEF1dG9jb25mIE1hY3JvLgorIworIyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCBhcHBsaWVzIHRvIHZlcnNpb25zIG9mIHRoZSBBdXRvY29uZgorIyAgIE1hY3JvIHJlbGVhc2VkIGJ5IHRoZSBBdXRvY29uZiBBcmNoaXZlLiBXaGVuIHlvdSBtYWtlIGFuZCBkaXN0cmlidXRlIGEKKyMgICBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBBdXRvY29uZiBNYWNybywgeW91IG1heSBleHRlbmQgdGhpcyBzcGVjaWFsCisjICAgZXhjZXB0aW9uIHRvIHRoZSBHUEwgdG8gYXBwbHkgdG8geW91ciBtb2RpZmllZCB2ZXJzaW9uIGFzIHdlbGwuCisKKyNzZXJpYWwgOQorCitBQ19ERUZVTihbQVhfQ09ORklHVVJFX0FSR1NdLFsKKyAgICMgWyRdQCBpcyB1bnNhYmxlIGluIDIuNjArIGJ1dCBlYXJsaWVyIGF1dG9jb25mIGhhZCBubyBhY19jb25maWd1cmVfYXJncworICAgaWYgdGVzdCAiJHthY19jb25maWd1cmVfYXJncytzZXR9IiAhPSAic2V0IiA7IHRoZW4KKyAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPQorICAgICAgZm9yIGFjX2FyZyBpbiAkezErIlskXUAifTsgZG8KKyAgICAgICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgJyRhY19hcmcnIgorICAgICAgZG9uZQorICAgZmkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2VuYWJsZV9idWlsZGRpci5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZW5hYmxlX2J1aWxkZGlyLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYjg3MzEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2VuYWJsZV9idWlsZGRpci5tNApAQCAtMCwwICsxLDMwMCBAQAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfZW5hYmxlX2J1aWxkZGlyLmh0bWwKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIFNZTk9QU0lTCisjCisjICAgQVhfRU5BQkxFX0JVSUxERElSIFsoZGlyc3RyaW5nLW9yLWNvbW1hbmQgWyxNYWtlZmlsZS5tayBbLC1hbGxdXSldCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgSWYgdGhlIGN1cnJlbnQgY29uZmlndXJlIHdhcyBydW4gd2l0aGluIHRoZSBzcmNkaXIgdGhlbiB3ZSBtb3ZlIGFsbAorIyAgIGNvbmZpZ3VyZS1maWxlcyBpbnRvIGEgc3ViZGlyIGFuZCBsZXQgdGhlIGNvbmZpZ3VyZSBzdGVwcyBjb250aW51ZQorIyAgIHRoZXJlLiBXZSBwcm92aWRlIGFuIG9wdGlvbiAtLWRpc2FibGUtYnVpbGRkaXIgdG8gc3VwcHJlc3MgdGhlIG1vdmUgaW50bworIyAgIGEgc2VwYXJhdGUgYnVpbGRkaXIuCisjCisjICAgRGVmYXVsdHM6CisjCisjICAgICAkMSA9ICRob3N0IChvdmVycmlkZGVuIHdpdGggJEhPU1QpCisjICAgICAkMiA9IE1ha2VmaWxlLm1rCisjICAgICAkMyA9IC1hbGwKKyMKKyMgICBUaGlzIG1hY3JvIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBBTV9JTklUX0FVVE9NQUtFLiBJdCBjcmVhdGVzIGEgZGVmYXVsdAorIyAgIHRvcGxldmVsIHNyY2RpciBNYWtlZmlsZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBmb3VuZCBpbiB0aGUgY3JlYXRlZAorIyAgIHRvcGxldmVsIGJ1aWxkZGlyIE1ha2VmaWxlLiBJdCBqdXN0IGNvcGllcyB0aGUgdmFyaWFibGVzIGFuZAorIyAgIHJ1bGUtdGFyZ2V0cywgZWFjaCBleHRlbmRlZCB3aXRoIGEgZGVmYXVsdCBydWxlLWV4ZWN1dGlvbiB0aGF0IHJlY3Vyc2VzCisjICAgaW50byB0aGUgYnVpbGQgZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50ICJIT1NUIi4gWW91IGNhbiBvdmVycmlkZSB0aGUKKyMgICBhdXRvLWRlY3Rpb24gdGhyb3VnaCBgY29uZmlnLmd1ZXNzYCBhbmQgYnVpbGQtdGltZSBvZiBjb3Vyc2UsIGFzIGluCisjCisjICAgICBtYWtlIEhPU1Q9aTM4Ni1taW5ndy1jcm9zcworIworIyAgIHdoaWNoIGNhbiBvZiBjb3Vyc2Ugc2V0IGF0IGNvbmZpZ3VyZSB0aW1lIGFzIHdlbGwgdXNpbmcKKyMKKyMgICAgIGNvbmZpZ3VyZSAtLWhvc3Q9aTM4Ni1taW5ndy1jcm9zcworIworIyAgIEFmdGVyIHRoZSBkZWZhdWx0IGhhcyBiZWVuIGNyZWF0ZWQsIGFkZGl0aW9uYWwgcnVsZXMgY2FuIGJlIGFwcGVuZGVkCisjICAgdGhhdCB3aWxsIG5vdCBqdXN0IHJlY3Vyc2UgaW50byB0aGUgc3ViZGlyZWN0b3JpZXMgYW5kIG9ubHkgZXZlciBleGlzdAorIyAgIGluIHRoZSBzcmNkaXIgdG9wbGV2ZWwgbWFrZWZpbGUgLSB0aGVzZSBwYXJ0cyBhcmUgcmVhZCBmcm9tIHRoZSAkMiA9CisjICAgTWFrZWZpbGUubWsgZmlsZQorIworIyAgIFRoZSBhdXRvbWF0aWMgcnVsZXMgYXJlIHVzdWFsbHkgc2Nhbm5pbmcgdGhlIHRvcGxldmVsIE1ha2VmaWxlIGZvciBsaW5lcworIyAgIGxpa2UgJyMjIyMgJGhvc3QgfCRidWlsZGRpcicgdG8gcmVjb2duaXplIHRoZSBwbGFjZSB3aGVyZSB0byByZWN1cnNlCisjICAgaW50by4gVXN1YWxseSwgdGhlIGxhc3Qgb25lIGlzIHRoZSBvbmx5IG9uZSB1c2VkLiBIb3dldmVyLCBhbG1vc3QgYWxsCisjICAgdGFyZ2V0cyBoYXZlIGFuIGFkZGl0aW9uYWwgIiotYWxsIiBydWxlIHdoaWNoIG1ha2VzIHRoZSBzY3JpcHQgdG8KKyMgICByZWN1cnNlIGludG8gX2FsbF8gdmFyaWFudHMgb2YgdGhlIGN1cnJlbnQgSE9TVCAoISEpIHNldHRpbmcuIFRoZSAiLWFsbCIKKyMgICBzdWZmaXggY2FuIGJlIG92ZXJyaWRlbiBmb3IgdGhlIG1hY3JvIGFzIHdlbGwuCisjCisjICAgYSBzcGVjaWFsIHJ1bGUgaXMgb25seSBnaXZlbiBmb3IgdGhpbmdzIGxpa2UgImRpc3QiIHRoYXQgd2lsbCBjb3B5IHRoZQorIyAgIHRhcmJhbGwgZnJvbSB0aGUgYnVpbGRkaXIgdG8gdGhlIHNvdXJjZWRpciAob3IgJChQVUIpKSBmb3IgcmVhc29uIG9mCisjICAgY29udmVuaWVuY2UuCisjCisjIExJQ0VOU0UKKyMKKyMgICBDb3B5cmlnaHQgKGMpIDIwMDkgR3VpZG8gVS4gRHJhaGVpbSA8Z3VpZG9kQGdteC5kZT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDkgQWxhbiBKZW5raW5zIDxhbGFuLWplbmtpbnNAdHVmZm1haWwuY28udWs+CisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDIzCisKK0FDX0RFRlVOKFtBWF9FTkFCTEVfQlVJTERESVJdLFsKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlbXWRubAorQUNfUkVRVUlSRShbQVhfQ09ORklHVVJFX0FSR1NdKVtdZG5sCitBQ19SRVFVSVJFKFtBTV9BVVhfRElSX0VYUEFORF0pW11kbmwKK0FDX0JFRk9SRShbJDBdLFtBTV9JTklUX0FVVE9NQUtFXSlkbmwKK0FTX1ZBUl9QVVNIREVGKFtTVUJdLFtheF9lbmFibGVfYnVpbGRkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW0FVWF0sW2F4X2VuYWJsZV9idWlsZGRpcl9hdXhkaXJdKWRubAorQVNfVkFSX1BVU0hERUYoW1NFRF0sW2F4X2VuYWJsZV9idWlsZGRpcl9zZWRdKWRubAorU1VCPSIuIgorQUNfQVJHX0VOQUJMRShbYnVpbGRkaXJdLCBBU19IRUxQX1NUUklORygKKyAgWy0tZGlzYWJsZS1idWlsZGRpcl0sW2Rpc2FibGUgYXV0b21hdGljIGJ1aWxkIGluIHN1YmRpciBvZiBzb3VyY2VzXSkKKyAgLFtTVUI9IiRlbmFibGV2YWwiXSwgW1NVQj0iYXV0byJdKQoraWYgdGVzdCAiLiRhY19zcmNkaXJfZGVmYXVsdGVkIiAhPSAiLm5vIiA7IHRoZW4KK2lmIHRlc3QgIi4kc3JjZGlyIiA9ICIuLiIgOyB0aGVuCisgIGlmIHRlc3QgLWYgY29uZmlnLnN0YXR1cyA7IHRoZW4KKyAgICBBQ19NU0dfTk9USUNFKHRvcGxldmVsIHNyY2RpciBhbHJlYWR5IGNvbmZpZ3VyZWQuLi4gc2tpcHBpbmcgc3ViZGlyIGJ1aWxkKQorICBlbHNlCisgICAgdGVzdCAiLiRTVUIiID0gIi4iICAmJiBTVUI9Ii4iCisgICAgdGVzdCAiLiRTVUIiID0gIi5ubyIgICYmIFNVQj0iLiIKKyAgICB0ZXN0ICIuJFRBUkdFVCIgPSAiLiIgJiYgVEFSR0VUPSIkdGFyZ2V0IgorICAgIHRlc3QgIi4kU1VCIiA9ICIuYXV0byIgJiYgU1VCPSJtNF9pZnZhbChbJDFdLCBbJDFdLFskVEFSR0VUXSkiCisgICAgaWYgdGVzdCAiLiRTVUIiICE9ICIuLiIgOyB0aGVuICAgICMgd2Uga25vdyB3aGVyZSB0byBnbyBhbmQKKyAgICAgIEFTX01LRElSX1AoWyRTVUJdKQorICAgICAgZWNobyBfXy4kU1VCLl9fID4gJFNVQi9jb25mdGVzdC50bXAKKyAgICAgIGNkICRTVUIKKyAgICAgIGlmIGdyZXAgX18uJFNVQi5fXyBjb25mdGVzdC50bXAgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgcm0gY29uZnRlc3QudG1wCisgICAgICAgIEFDX01TR19SRVNVTFQoW2NvbnRpbnVlIGNvbmZpZ3VyZSBpbiBkZWZhdWx0IGJ1aWxkZGlyICIuLyRTVUIiXSkKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtjb3VsZCBub3QgY2hhbmdlIHRvIGRlZmF1bHQgYnVpbGRkaXIgIi4vJFNVQiJdKQorICAgICAgZmkKKyAgICAgIHNyY2Rpcj1gZWNobyAiJFNVQiIgfAorICAgICAgICAgICAgICBzZWQgLWUgJ3MsXlwuLywsO3MsW1teL11dJCwmLyw7cyxbW14vXV0qLywuLi8sZztzLFtbL11dJCwsOydgCisgICAgICAjIGdvaW5nIHRvIHJlc3RhcnQgZnJvbSBzdWJkaXJlY3RvcnkgbG9jYXRpb24KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci9jb25maWcubG9nICAgJiYgbXYgJHNyY2Rpci9jb25maWcubG9nICAgLgorICAgICAgdGVzdCAtZiAkc3JjZGlyL2NvbmZkZWZzLmggICAmJiBtdiAkc3JjZGlyL2NvbmZkZWZzLmggICAuCisgICAgICB0ZXN0IC1mICRzcmNkaXIvY29uZnRlc3QubG9nICYmIG12ICRzcmNkaXIvY29uZnRlc3QubG9nIC4KKyAgICAgIHRlc3QgLWYgJHNyY2Rpci8kY2FjaGVfZmlsZSAgJiYgbXYgJHNyY2Rpci8kY2FjaGVfZmlsZSAgLgorICAgICAgQUNfTVNHX1JFU1VMVCguLi4uZXhlYyAkU0hFTEwgJHNyY2Rpci9bJF0wICItLXNyY2Rpcj0kc3JjZGlyIiAiLS1lbmFibGUtYnVpbGRkaXI9JFNVQiIgJHsxKyJbJF1AIn0pCisgICAgICBjYXNlICJbJF0wIiBpbiAjIHJlc3RhcnQKKyAgICAgICBbL1xcXSopIGV2YWwgJFNIRUxMICInWyRdMCciICInLS1zcmNkaXI9JHNyY2RpciciICInLS1lbmFibGUtYnVpbGRkaXI9JFNVQiciICRhY19jb25maWd1cmVfYXJncyA7OworICAgICAgICopIGV2YWwgJFNIRUxMICInJHNyY2Rpci9bJF0wJyIgIictLXNyY2Rpcj0kc3JjZGlyJyIgIictLWVuYWJsZS1idWlsZGRpcj0kU1VCJyIgJGFjX2NvbmZpZ3VyZV9hcmdzIDs7CisgICAgICBlc2FjIDsgZXhpdCAkPworICAgIGZpCisgIGZpCitmaSBmaQordGVzdCAiLiRTVUIiID0gIi5hdXRvIiAmJiBTVUI9Ii4iCitkbmwgYWNfcGF0aF9wcm9nIHVzZXMgInNldCBkdW1teSIgdG8gb3ZlcnJpZGUgJEAgd2hpY2ggd291bGQgZGVmZWF0IHRoZSAiZXhlYyIKK0FDX1BBVEhfUFJPRyhTRUQsZ3NlZCBzZWQsIHNlZCkKK0FVWD0iJGFtX2F1eF9kaXIiCitBU19WQVJfUE9QREVGKFtTRURdKWRubAorQVNfVkFSX1BPUERFRihbQVVYXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NVQl0pZG5sCitBQ19DT05GSUdfQ09NTUFORFMoW2J1aWxkaXJdLFtkbmwgLi4uLi4uLi4uLi4uLi4gY29uZmlnLnN0YXR1cyAuLi4uLi4uLi4uLi4uLgorQVNfVkFSX1BVU0hERUYoW1NVQl0sW2F4X2VuYWJsZV9idWlsZGRpcl0pZG5sCitBU19WQVJfUFVTSERFRihbVE9QXSxbdG9wX3NyY2Rpcl0pZG5sCitBU19WQVJfUFVTSERFRihbU1JDXSxbYWNfdG9wX3NyY2Rpcl0pZG5sCitBU19WQVJfUFVTSERFRihbQVVYXSxbYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpcl0pZG5sCitBU19WQVJfUFVTSERFRihbU0VEXSxbYXhfZW5hYmxlX2J1aWxkZGlyX3NlZF0pZG5sCitwdXNoZGVmKFtFTkRdLFtNYWtlZmlsZS5ta10pZG5sCitwdXNoZGVmKFtfQUxMXSxbaWZlbHNlKFskM10sLFstYWxsXSxbJDNdKV0pZG5sCisgIFNSQz0iJGF4X2VuYWJsZV9idWlsZGRpcl9zcmNkaXIiCisgIGlmIHRlc3QgIi4kU1VCIiA9ICIuLiIgOyB0aGVuCisgICAgaWYgdGVzdCAtZiAiJFRPUC9NYWtlZmlsZSIgOyB0aGVuCisgICAgICBBQ19NU0dfTk9USUNFKFtza2lwcGluZyBUT1AvTWFrZWZpbGUgLSBsZWZ0IHVudG91Y2hlZF0pCisgICAgZWxzZQorICAgICAgQUNfTVNHX05PVElDRShbc2tpcHBpbmcgVE9QL01ha2VmaWxlIC0gbm90IGNyZWF0ZWRdKQorICAgIGZpCisgIGVsc2UKKyAgICBpZiB0ZXN0IC1mICIkU1JDL01ha2VmaWxlIiA7IHRoZW4KKyAgICAgIGE9YGdyZXAgIl5WRVJTSU9OICIgIiRTUkMvTWFrZWZpbGUiYCA7IGI9YGdyZXAgIl5WRVJTSU9OICIgTWFrZWZpbGVgCisgICAgICB0ZXN0ICIkYSIgIT0gIiRiIiAmJiBybSAiJFNSQy9NYWtlZmlsZSIKKyAgICBmaQorICAgIGlmIHRlc3QgLWYgIiRTUkMvTWFrZWZpbGUiIDsgdGhlbgorCWVjaG8gIiRTUkMvTWFrZWZpbGUgOiAkU1JDL01ha2VmaWxlLmluIiA+ICR0bXAvY29uZnRlbXAubWsKKwllY2hvICIJW11AIGVjaG8gJ1JFTU9WRUQsLCwnID5cJFtdQCIgPj4gJHRtcC9jb25mdGVtcC5taworICAgICAgZXZhbCAiJHtNQUtFLW1ha2V9IC1mICR0bXAvY29uZnRlbXAubWsgMj4vZGV2L251bGwgPi9kZXYvbnVsbCIKKyAgICAgIGlmIGdyZXAgJ15SRU1PVkVELCwsJyAiJFNSQy9NYWtlZmlsZSIgPi9kZXYvbnVsbAorICAgICAgdGhlbiBybSAkU1JDL01ha2VmaWxlIDsgZmkKKyAgICAgIGNwICR0bXAvY29uZnRlbXAubWsgJFNSQy9tYWtlZmlsZXMubWt+ICAgICAgIyMgREVCVUdHSU5HCisgICAgZmkKKyAgICBpZiB0ZXN0ICEgLWYgIiRTUkMvTWFrZWZpbGUiIDsgdGhlbgorICAgICAgQUNfTVNHX05PVElDRShbY3JlYXRlIFRPUC9NYWtlZmlsZSBndWVzc2VkIGZyb20gbG9jYWwgTWFrZWZpbGVdKQorICAgICAgeD0nYCcgOyBjYXQgPiR0bXAvY29uZnRlbXAuc2VkIDw8X0VPRgorL15cJC9uCit4CisvXlwkL2JTCit4CisvXFxcXFwkL3tIO2Q7fQore0g7cy8uKi8vO3g7fQorYk0KKzpTCit4CisvXFxcXFwkL3toO2Q7fQore2g7cy8uKi8vO3g7fQorOk0KK3MvXFwoXFxuXFwpCS9cXDEgL2cKKy9eCS9kCisvXltbCSBdXSpbW1xcI11dL2QKKy9eVlBBVEggKj0vZAorcy9ec3JjZGlyICo9Liovc3JjZGlyID0gLi8KK3MvXnRvcF9zcmNkaXIgKj0uKi90b3Bfc3JjZGlyID0gLi8KKy9bWzo9XV0vIWQKKy9eXFwuL2QKK2RubCBOb3cgaGFuZGxlIHJ1bGVzIChpLmUuIGxpbmVzIGNvbnRhaW5pbmcgIjoiIGJ1dCBub3QgIiA9ICIpLgorLyA9IC9iCisvIC49IC9iCisvOi8hYgorcy86LiovOi8KK3MvIC8gIC9nCitzLyBcXChbW2Etel1dW1thLXotXV0qW1thLXpBLVowLTldXVxcKVxcKFtbIDpdXVxcKS8gXFwxIFxcMVtdX0FMTFxcMi9nCitzL15cXChbW2Etel1dW1thLXotXV0qW1thLXpBLVowLTldXVxcKVxcKFtbIDpdXVxcKS9cXDEgXFwxW11fQUxMXFwyLworcy8gIC8gL2cKKy9eYWxsIGFsbFtdX0FMTFtbIDpdXS9pXFwKK2FsbC1jb25maWd1cmVkIDogYWxsW11fQUxMCitkbmwgZGlzdC1hbGwgZXhpc3RzLi4uIGFuZCB3b3VsZCBtYWtlIGZvciBkaXN0LWFsbC1hbGwKK3MvIFtbYS16QS1aMC05LV1dKltdX0FMTCBbW2EtekEtWjAtOS1dXSpbXV9BTExbXV9BTEwvL2cKKy9bXV9BTExbXV9BTEwvZAorYVxcCisJQCBIT1NUPSJcJChIT1NUKVwiIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRIT1NUIiA9ICIuIiAmJiBIT1NUPSR4IHNoICRBVVgvY29uZmlnLmd1ZXNzICR4IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgXCRcJEhPU1QgIiBNYWtlZmlsZSB8IHNlZCAtZSAncy8uKnwvLycgJHggXFxcXFxcCisJOyB1c2U9JHggYmFzZW5hbWUgIlwkXEAiIF9BTEwgJHg7IG49JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkbiAqIFwkXEAiOyBpZiB0ZXN0ICJcJFwkbiIgLWVxICIwIiA7IHRoZW4gOiBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCA7IGZpIFxcXFxcXAorCTsgdGVzdCAiLlwkXCRCVUlMRCIgPSAiLiIgJiYgQlVJTEQ9Ii4iIFxcXFxcXAorCTsgdGVzdCAiXCRcJHVzZSIgPSAiXCRcQCIgJiYgQlVJTEQ9JHggZWNobyAiXCRcJEJVSUxEIiB8IHRhaWwgLTEgJHggXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgKGNkICJcJFwkaSIgJiYgdGVzdCAhIC1mIGNvbmZpZ3VyZSAmJiBcJChNQUtFKSBcJFwkdXNlKSB8fCBleGl0OyBkb25lCitkbmwgc3BlY2lhbCBydWxlIGFkZC1vbjogImRpc3QiIGNvcGllcyB0aGUgdGFyYmFsbCB0byAkKFBVQikuIChzb3VyY2UgdHJlZSkKKy9kaXN0W11fQUxMICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkQVVYL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZm91bmQ9JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkZm91bmQgXCQoUEFDS0FHRSktXCQoVkVSU0lPTikudGFyLioiIFxcXFxcXAorCTsgaWYgdGVzdCAiXCRcJGZvdW5kIiAtZXEgIjAiIDsgdGhlbiA6IFxcXFxcXAorCTsgQlVJTEQ9JHggZ3JlcCAiXiMjIyMgLip8IiBNYWtlZmlsZSB8dGFpbCAtMXwgc2VkIC1lICdzLy4qfC8vJyAkeCBcXFxcXFwKKwk7IGZpIDsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGZvciBmIGluIFwkXCRpL1wkKFBBQ0tBR0UpLVwkKFZFUlNJT04pLnRhci4qIFxcXFxcXAorCTsgZG8gdGVzdCAtZiAiXCRcJGYiICYmIG12ICJcJFwkZiIgXCQoUFVCKS4gOyBkb25lIDsgYnJlYWsgOyBkb25lCitkbmwgc3BlY2lhbCBydWxlIGFkZC1vbjogImRpc3QtZm9vIiBjb3BpZXMgYWxsIHRoZSBhcmNoaXZlcyB0byAkKFBVQikuIChzb3VyY2UgdHJlZSkKKy9kaXN0LVtbYS16QS1aMC05XV0qW11fQUxMICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAuL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIFwkXCRIT1NUICIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZm91bmQ9JHggZWNobyBcJFwkQlVJTEQgfCB3YyAtdyAkeCBcXFxcXFwKKwk7IGVjaG8gIk1BS0UgXCRcJEhPU1QgOiBcJFwkZm91bmQgXCQoUEFDS0FHRSktXCQoVkVSU0lPTikuKiIgXFxcXFxcCisJOyBpZiB0ZXN0ICJcJFwkZm91bmQiIC1lcSAiMCIgOyB0aGVuIDogXFxcXFxcCisJOyBCVUlMRD0keCBncmVwICJeIyMjIyAuKnwiIE1ha2VmaWxlIHx0YWlsIC0xfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgZmkgOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZm9yIGYgaW4gXCRcJGkvXCQoUEFDS0FHRSktXCQoVkVSU0lPTikuKiBcXFxcXFwKKwk7IGRvIHRlc3QgLWYgIlwkXCRmIiAmJiBtdiAiXCRcJGYiIFwkKFBVQikuIDsgZG9uZSA7IGJyZWFrIDsgZG9uZQorZG5sIHNwZWNpYWwgcnVsZSBhZGQtb246ICJkaXN0Y2xlYW4iIHJlbW92ZXMgYWxsIGxvY2FsIGJ1aWxkZGlycyBjb21wbGV0ZWx5CisvZGlzdGNsZWFuW11fQUxMICo6L2FcXAorCUAgSE9TVD0iXCQoSE9TVClcIiBcXFxcXFwKKwk7IHRlc3QgIi5cJFwkSE9TVCIgPSAiLiIgJiYgSE9TVD0keCBzaCAkQVVYL2NvbmZpZy5ndWVzcyAkeCBcXFxcXFwKKwk7IEJVSUxEPSR4IGdyZXAgIl4jIyMjIC4qfCIgTWFrZWZpbGUgfCBzZWQgLWUgJ3MvLip8Ly8nICR4IFxcXFxcXAorCTsgdXNlPSR4IGJhc2VuYW1lICJcJFxAIiBfQUxMICR4OyBuPSR4IGVjaG8gXCRcJEJVSUxEIHwgd2MgLXcgJHggXFxcXFxcCisJOyBlY2hvICJNQUtFIFwkXCRIT1NUIDogXCRcJG4gKiBcJFxAIChhbGwgbG9jYWwgYnVpbGRzKSIgXFxcXFxcCisJOyB0ZXN0ICIuXCRcJEJVSUxEIiA9ICIuIiAmJiBCVUlMRD0iLiIgXFxcXFxcCisJOyBmb3IgaSBpbiBcJFwkQlVJTEQgOyBkbyB0ZXN0ICIuXCRcJGkiID0gIi4iICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAiIyBybSAtciBcJFwkaSI7IGRvbmUgOyBlY2hvICIjIChzbGVlcCAzKSIgOyBzbGVlcCAzIFxcXFxcXAorCTsgZm9yIGkgaW4gXCRcJEJVSUxEIDsgZG8gdGVzdCAiLlwkXCRpIiA9ICIuIiAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIlwkXCRpIiB8IGdyZXAgIl4vIiA+IC9kZXYvbnVsbCAmJiBjb250aW51ZSBcXFxcXFwKKwk7IGVjaG8gIlwkXCRpIiB8IGdyZXAgIl4uLi8iID4gL2Rldi9udWxsICYmIGNvbnRpbnVlIFxcXFxcXAorCTsgZWNobyAicm0gLXIgXCRcJGkiOyAocm0gLXIgIlwkXCRpIikgOyBkb25lIDsgcm0gTWFrZWZpbGUKK19FT0YKKyAgICAgIGNwICIkdG1wL2NvbmZ0ZW1wLnNlZCIgIiRTUkMvbWFrZWZpbGUuc2VkfiIgICAgICAgICAgICAjIyBERUJVR0dJTkcKKyAgICAgICRTRUQgLWYgJHRtcC9jb25mdGVtcC5zZWQgTWFrZWZpbGUgPiRTUkMvTWFrZWZpbGUKKyAgICAgIGlmIHRlc3QgLWYgIiRTUkMvbTRfaWZ2YWwoWyQyXSxbJDJdLFtFTkRdKSIgOyB0aGVuCisgICAgICAgIEFDX01TR19OT1RJQ0UoW2V4dGVuZCBUT1AvTWFrZWZpbGUgd2l0aCBUT1AvbTRfaWZ2YWwoWyQyXSxbJDJdLFtFTkRdKV0pCisgICAgICAgIGNhdCAkU1JDL0VORCA+PiRTUkMvTWFrZWZpbGUKKyAgICAgIGZpIDsgeHh4eD0iIyMjIyIKKyAgICAgIGVjaG8gIiR4eHh4IENPTkZJR1VSQVRJT05TIEZPUiBUT1BMRVZFTCBNQUtFRklMRTogIiA+PiRTUkMvTWFrZWZpbGUKKyAgICAgICMgc2FuaXR5IGNoZWNrCisgICAgICBpZiBncmVwICdeOyBlY2hvICJNQUtFICcgJFNSQy9NYWtlZmlsZSA+L2Rldi9udWxsIDsgdGhlbgorICAgICAgICBBQ19NU0dfTk9USUNFKFtidWdneSBzZWQgZm91bmQgLSBpdCBkZWxldGVzIHRhYiBpbiAiYSIgdGV4dCBwYXJ0c10pCisgICAgICAgICRTRUQgLWUgJy9eQCBIT1NUPS9zL14vCS8nIC1lICcvXjsgL3MvXi8JLycgJFNSQy9NYWtlZmlsZSBcCisgICAgICAgICAgPiRTUkMvTWFrZWZpbGV+CisgICAgICAgICh0ZXN0IC1zICRTUkMvTWFrZWZpbGV+ICYmIG12ICRTUkMvTWFrZWZpbGV+ICRTUkMvTWFrZWZpbGUpIDI+L2Rldi9udWxsCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIHh4eHg9IlxcI1xcI1xcI1xcIyIKKyAgICAgICMgZWNobyAiL14keHh4eCAqJGF4X2VuYWJsZV9idWlsZGRpcl9ob3N0IC9kIiA+JHRtcC9jb25mdGVtcC5zZWQKKyAgICAgIGVjaG8gInMhXiR4eHh4IFtbXnxdXSogfCAqJFNVQiAqXCQhJHh4eHggLi4uLi4uICRTVUIhIiA+JHRtcC9jb25mdGVtcC5zZWQKKyAgICAgICRTRUQgLWYgIiR0bXAvY29uZnRlbXAuc2VkIiAiJFNSQy9NYWtlZmlsZSIgPiR0bXAvbWtmaWxlLnRtcAorICAgICAgICBjcCAiJHRtcC9jb25mdGVtcC5zZWQiICIkU1JDL21ha2VmaWxlcy5zZWR+IiAgICAgICAgICMjIERFQlVHR0lORworICAgICAgICBjcCAiJHRtcC9ta2ZpbGUudG1wIiAgICIkU1JDL21ha2VmaWxlcy5vdXR+IiAgICAgICAgICMjIERFQlVHR0lORworICAgICAgaWYgY21wIC1zICIkU1JDL01ha2VmaWxlIiAiJHRtcC9ta2ZpbGUudG1wIiAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAgQUNfTVNHX05PVElDRShba2VlcGluZyBUT1AvTWFrZWZpbGUgZnJvbSBlYXJsaWVyIGNvbmZpZ3VyZV0pCisgICAgICAgIHJtICIkdG1wL21rZmlsZS50bXAiCisgICAgICBlbHNlCisgICAgICAgIEFDX01TR19OT1RJQ0UoW3JldXNpbmcgVE9QL01ha2VmaWxlIGZyb20gZWFybGllciBjb25maWd1cmVdKQorICAgICAgICBtdiAiJHRtcC9ta2ZpbGUudG1wIiAiJFNSQy9NYWtlZmlsZSIKKyAgICAgIGZpCisgICAgZmkKKyAgICBBQ19NU0dfTk9USUNFKFtidWlsZCBpbiAkU1VCIChIT1NUPSRheF9lbmFibGVfYnVpbGRkaXJfaG9zdCldKQorICAgIHh4eHg9IiMjIyMiCisgICAgZWNobyAiJHh4eHgiICIkYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3QiICJ8JFNVQiIgPj4kU1JDL01ha2VmaWxlCisgIGZpCitwb3BkZWYoW0VORF0pZG5sCitBU19WQVJfUE9QREVGKFtTRURdKWRubAorQVNfVkFSX1BPUERFRihbQVVYXSlkbmwKK0FTX1ZBUl9QT1BERUYoW1NSQ10pZG5sCitBU19WQVJfUE9QREVGKFtUT1BdKWRubAorQVNfVkFSX1BPUERFRihbU1VCXSlkbmwKK10sW2RubAorYXhfZW5hYmxlX2J1aWxkZGlyX3NyY2Rpcj0iJHNyY2RpciIgICAgICAgICAgICAgICAgICAgICMgJHNyY2RpcgorYXhfZW5hYmxlX2J1aWxkZGlyX2hvc3Q9IiRIT1NUIiAgICAgICAgICAgICAgICAgICAgICAgICMgJEhPU1QgLyAkaG9zdAorYXhfZW5hYmxlX2J1aWxkZGlyX3ZlcnNpb249IiRWRVJTSU9OIiAgICAgICAgICAgICAgICAgICMgJFZFUlNJT04KK2F4X2VuYWJsZV9idWlsZGRpcl9wYWNrYWdlPSIkUEFDS0FHRSIgICAgICAgICAgICAgICAgICAjICRQQUNLQUdFCitheF9lbmFibGVfYnVpbGRkaXJfYXV4ZGlyPSIkYXhfZW5hYmxlX2J1aWxkZGlyX2F1eGRpciIgIyAkQVVYCitheF9lbmFibGVfYnVpbGRkaXJfc2VkPSIkYXhfZW5hYmxlX2J1aWxkZGlyX3NlZCIgICAgICAgIyAkU0VECitheF9lbmFibGVfYnVpbGRkaXI9IiRheF9lbmFibGVfYnVpbGRkaXIiICAgICAgICAgICAgICAgIyAkU1VCCitdKWRubAorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX2FyY2hmbGFnLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9heF9nY2NfYXJjaGZsYWcubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjYxMWJhYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX2FyY2hmbGFnLm00CkBAIC0wLDAgKzEsMjE1IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2djY19hcmNoZmxhZy5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0dDQ19BUkNIRkxBRyhbUE9SVEFCTEU/XSwgW0FDVElPTi1TVUNDRVNTXSwgW0FDVElPTi1GQUlMVVJFXSkKKyMKKyMgREVTQ1JJUFRJT04KKyMKKyMgICBUaGlzIG1hY3JvIHRyaWVzIHRvIGd1ZXNzIHRoZSAibmF0aXZlIiBhcmNoIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRhcmdldAorIyAgIGFyY2hpdGVjdHVyZSBmb3IgdXNlIHdpdGggZ2NjJ3MgLW1hcmNoPWFyY2ggb3IgLW10dW5lPWFyY2ggZmxhZ3MuIElmCisjICAgZm91bmQsIHRoZSBjYWNoZSB2YXJpYWJsZSAkYXhfY3ZfZ2NjX2FyY2hmbGFnIGlzIHNldCB0byB0aGlzIGZsYWcgYW5kCisjICAgQUNUSU9OLVNVQ0NFU1MgaXMgZXhlY3V0ZWQ7IG90aGVyd2lzZSAkYXhfY3ZfZ2NjX2FyY2hmbGFnIGlzIHNldCB0bworIyAgICJ1bmtub3duIiBhbmQgQUNUSU9OLUZBSUxVUkUgaXMgZXhlY3V0ZWQuIFRoZSBkZWZhdWx0IEFDVElPTi1TVUNDRVNTIGlzCisjICAgdG8gYWRkICRheF9jdl9nY2NfYXJjaGZsYWcgdG8gdGhlIGVuZCBvZiAkQ0ZMQUdTLgorIworIyAgIFBPUlRBQkxFPyBzaG91bGQgYmUgZWl0aGVyIFt5ZXNdIChkZWZhdWx0KSBvciBbbm9dLiBJbiB0aGUgZm9ybWVyIGNhc2UsCisjICAgdGhlIGZsYWcgaXMgc2V0IHRvIC1tdHVuZSAob3IgZXF1aXZhbGVudCkgc28gdGhhdCB0aGUgYXJjaGl0ZWN0dXJlIGlzCisjICAgb25seSB1c2VkIGZvciB0dW5pbmcsIGJ1dCB0aGUgaW5zdHJ1Y3Rpb24gc2V0IHVzZWQgaXMgc3RpbGwgcG9ydGFibGUuIEluCisjICAgdGhlIGxhdHRlciBjYXNlLCB0aGUgZmxhZyBpcyBzZXQgdG8gLW1hcmNoIChvciBlcXVpdmFsZW50KSBzbyB0aGF0CisjICAgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGluc3RydWN0aW9ucyBhcmUgZW5hYmxlZC4KKyMKKyMgICBUaGUgdXNlciBjYW4gc3BlY2lmeSAtLXdpdGgtZ2NjLWFyY2g9PGFyY2g+IGluIG9yZGVyIHRvIG92ZXJyaWRlIHRoZQorIyAgIG1hY3JvJ3MgY2hvaWNlIG9mIGFyY2hpdGVjdHVyZSwgb3IgLS13aXRob3V0LWdjYy1hcmNoIHRvIGRpc2FibGUgdGhpcy4KKyMKKyMgICBXaGVuIGNyb3NzLWNvbXBpbGluZywgb3IgaWYgJENDIGlzIG5vdCBnY2MsIHRoZW4gQUNUSU9OLUZBSUxVUkUgaXMKKyMgICBjYWxsZWQgdW5sZXNzIHRoZSB1c2VyIHNwZWNpZmllZCAtLXdpdGgtZ2NjLWFyY2ggbWFudWFsbHkuCisjCisjICAgUmVxdWlyZXMgbWFjcm9zOiBBWF9DSEVDS19DT01QSUxFX0ZMQUcsIEFYX0dDQ19YODZfQ1BVSUQKKyMKKyMgICAoVGhlIG1haW4gZW1waGFzaXMgaGVyZSBpcyBvbiByZWNlbnQgQ1BVcywgb24gdGhlIHByaW5jaXBsZSB0aGF0IGRvaW5nCisjICAgaGlnaC1wZXJmb3JtYW5jZSBjb21wdXRpbmcgb24gb2xkIGhhcmR3YXJlIGlzIHVuY29tbW9uLikKKyMKKyMgTElDRU5TRQorIworIyAgIENvcHlyaWdodCAoYykgMjAwOCBTdGV2ZW4gRy4gSm9obnNvbiA8c3RldmVuakBhbHVtLm1pdC5lZHU+CisjICAgQ29weXJpZ2h0IChjKSAyMDA4IE1hdHRlbyBGcmlnbworIworIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisjICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlCisjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91cgorIyAgIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwKKyMgICBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisjICAgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMKKyMgICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgcmVzcGVjdGl2ZSBBdXRvY29uZiBNYWNybydzIGNvcHlyaWdodCBvd25lcgorIyAgIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSB0aGUgY29uZmlndXJlCisjICAgc2NyaXB0cyB0aGF0IGFyZSB0aGUgb3V0cHV0IG9mIEF1dG9jb25mIHdoZW4gcHJvY2Vzc2luZyB0aGUgTWFjcm8uIFlvdQorIyAgIG5lZWQgbm90IGZvbGxvdyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHdoZW4gdXNpbmcKKyMgICBvciBkaXN0cmlidXRpbmcgc3VjaCBzY3JpcHRzLCBldmVuIHRob3VnaCBwb3J0aW9ucyBvZiB0aGUgdGV4dCBvZiB0aGUKKyMgICBNYWNybyBhcHBlYXIgaW4gdGhlbS4gVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpIGRvZXMgZ292ZXJuCisjICAgYWxsIG90aGVyIHVzZSBvZiB0aGUgbWF0ZXJpYWwgdGhhdCBjb25zdGl0dXRlcyB0aGUgQXV0b2NvbmYgTWFjcm8uCisjCisjICAgVGhpcyBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGFwcGxpZXMgdG8gdmVyc2lvbnMgb2YgdGhlIEF1dG9jb25mCisjICAgTWFjcm8gcmVsZWFzZWQgYnkgdGhlIEF1dG9jb25mIEFyY2hpdmUuIFdoZW4geW91IG1ha2UgYW5kIGRpc3RyaWJ1dGUgYQorIyAgIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIEF1dG9jb25mIE1hY3JvLCB5b3UgbWF5IGV4dGVuZCB0aGlzIHNwZWNpYWwKKyMgICBleGNlcHRpb24gdG8gdGhlIEdQTCB0byBhcHBseSB0byB5b3VyIG1vZGlmaWVkIHZlcnNpb24gYXMgd2VsbC4KKworI3NlcmlhbCAxMAorCitBQ19ERUZVTihbQVhfR0NDX0FSQ0hGTEFHXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKworQUNfQVJHX1dJVEgoZ2NjLWFyY2gsIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdjYy1hcmNoPTxhcmNoPl0sIFt1c2UgYXJjaGl0ZWN0dXJlIDxhcmNoPiBmb3IgZ2NjIC1tYXJjaC8tbXR1bmUsIGluc3RlYWQgb2YgZ3Vlc3NpbmddKV0sCisJYXhfZ2NjX2FyY2g9JHdpdGh2YWwsIGF4X2djY19hcmNoPXllcykKKworQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnXSkKK0FDX01TR19SRVNVTFQoW10pCitBQ19DQUNIRV9WQUwoYXhfY3ZfZ2NjX2FyY2hmbGFnLAorWworYXhfY3ZfZ2NjX2FyY2hmbGFnPSJ1bmtub3duIgorCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCitpZiB0ZXN0ICJ4JGF4X2djY19hcmNoIiA9IHh5ZXM7IHRoZW4KK2F4X2djY19hcmNoPSIiCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG5vOyB0aGVuCitjYXNlICRob3N0X2NwdSBpbgorICBpW1szNDU2XV04Nip8eDg2XzY0KikgIyB1c2UgY3B1aWQgY29kZXMsIGluIHBhcnQgZnJvbSB4ODZpbmZvLTEuNyBieSBELiBKb25lcworICAgICBBWF9HQ0NfWDg2X0NQVUlEKDApCisgICAgIEFYX0dDQ19YODZfQ1BVSUQoMSkKKyAgICAgY2FzZSAkYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8wIGluCisgICAgICAgKjo3NTZlNjU0NzoqOiopICMgSW50ZWwKKyAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgKjVbWzQ4XV0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bS1tbXggcGVudGl1bSIgOzsKKwkgICAgKjU/PzoqOio6KikgYXhfZ2NjX2FyY2g9cGVudGl1bSA7OworCSAgICAqNltbMzQ1Nl1dPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0yIHBlbnRpdW1wcm8iIDs7CisJICAgICo2YT86KltbMDFdXToqOiopIGF4X2djY19hcmNoPSJwZW50aXVtMiBwZW50aXVtcHJvIiA7OworCSAgICAqNmE/OipbWzIzNF1dOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0zIHBlbnRpdW1wcm8iIDs7CisJICAgICo2W1s5ZF1dPzoqOio6KikgYXhfZ2NjX2FyY2g9InBlbnRpdW0tbSBwZW50aXVtMyBwZW50aXVtcHJvIiA7OworCSAgICAqNltbNzhiXV0/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTMgcGVudGl1bXBybyIgOzsKKwkgICAgKjY/PzoqOio6KikgYXhfZ2NjX2FyY2g9cGVudGl1bXBybyA7OworICAgICAgICAgICAgKmYzW1szNDddXToqOio6KnwqZjRbMTM0N106KjoqOiopCisJCWNhc2UgJGhvc3RfY3B1IGluCisgICAgICAgICAgICAgICAgICB4ODZfNjQqKSBheF9nY2NfYXJjaD0ibm9jb25hIHBlbnRpdW00IHBlbnRpdW1wcm8iIDs7CisgICAgICAgICAgICAgICAgICAqKSBheF9nY2NfYXJjaD0icHJlc2NvdHQgcGVudGl1bTQgcGVudGl1bXBybyIgOzsKKyAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAqZj8/Oio6KjoqKSBheF9nY2NfYXJjaD0icGVudGl1bTQgcGVudGl1bXBybyI7OworICAgICAgICAgIGVzYWMgOzsKKyAgICAgICAqOjY4NzQ3NTQxOio6KikgIyBBTUQKKyAgICAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgKjVbWzY3XV0/Oio6KjoqKSBheF9nY2NfYXJjaD1rNiA7OworCSAgICAqNVtbOGRdXT86KjoqOiopIGF4X2djY19hcmNoPSJrNi0yIGs2IiA7OworCSAgICAqNVtbOV1dPzoqOio6KikgYXhfZ2NjX2FyY2g9Ims2LTMgazYiIDs7CisJICAgICo2MD86KjoqOiopIGF4X2djY19hcmNoPWs3IDs7CisJICAgICo2W1sxMl1dPzoqOio6KikgYXhfZ2NjX2FyY2g9ImF0aGxvbiBrNyIgOzsKKwkgICAgKjZbWzM0XV0/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLXRiaXJkIGs3IiA7OworCSAgICAqNjc/Oio6KjoqKSBheF9nY2NfYXJjaD0iYXRobG9uLTQgYXRobG9uIGs3IiA7OworCSAgICAqNltbNjhhXV0/Oio6KjoqKQorCSAgICAgICBBWF9HQ0NfWDg2X0NQVUlEKDB4ODAwMDAwMDYpICMgTDIgY2FjaGUgc2l6ZQorCSAgICAgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzB4ODAwMDAwMDYgaW4KKyAgICAgICAgICAgICAgICAgKjoqOipbWzEtOWEtZl1dPz8/Pz8/OiopICMgKEwyID0gZWN4ID4+IDE2KSA+PSAyNTYKKwkJCWF4X2djY19hcmNoPSJhdGhsb24teHAgYXRobG9uLTQgYXRobG9uIGs3IiA7OworICAgICAgICAgICAgICAgICAqKSBheF9nY2NfYXJjaD0iYXRobG9uLTQgYXRobG9uIGs3IiA7OworCSAgICAgICBlc2FjIDs7CisJICAgICpmW1s0Y2VmOGJdXT86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb242NCBrOCIgOzsKKwkgICAgKmY1PzoqOio6KikgYXhfZ2NjX2FyY2g9Im9wdGVyb24gazgiIDs7CisJICAgICpmNz86KjoqOiopIGF4X2djY19hcmNoPSJhdGhsb24tZnggb3B0ZXJvbiBrOCIgOzsKKwkgICAgKmY/PzoqOio6KikgYXhfZ2NjX2FyY2g9Ims4IiA7OworICAgICAgICAgIGVzYWMgOzsKKwkqOjc0NmU2NTQzOio6KikgIyBJRFQKKwkgICBjYXNlICRheF9jdl9nY2NfeDg2X2NwdWlkXzEgaW4KKwkgICAgICo1ND86KjoqOiopIGF4X2djY19hcmNoPXdpbmNoaXAtYzYgOzsKKwkgICAgICo1OD86KjoqOiopIGF4X2djY19hcmNoPXdpbmNoaXAyIDs7CisJICAgICAqNltbNzhdXT86KjoqOiopIGF4X2djY19hcmNoPWMzIDs7CisJICAgICAqNjk/Oio6KjoqKSBheF9nY2NfYXJjaD0iYzMtMiBjMyIgOzsKKwkgICBlc2FjIDs7CisgICAgIGVzYWMKKyAgICAgaWYgdGVzdCB4IiRheF9nY2NfYXJjaCIgPSB4OyB0aGVuICMgZmFsbGJhY2sKKwljYXNlICRob3N0X2NwdSBpbgorCSAgaTU4NiopIGF4X2djY19hcmNoPXBlbnRpdW0gOzsKKwkgIGk2ODYqKSBheF9nY2NfYXJjaD1wZW50aXVtcHJvIDs7CisgICAgICAgIGVzYWMKKyAgICAgZmkKKyAgICAgOzsKKworICBzcGFyYyopCisgICAgIEFDX1BBVEhfUFJPRyhbUFJURElBR10sIFtwcnRkaWFnXSwgW3BydGRpYWddLCBbJFBBVEg6L3Vzci9wbGF0Zm9ybS9gdW5hbWUgLWlgL3NiaW4vOi91c3IvcGxhdGZvcm0vYHVuYW1lIC1tYC9zYmluL10pCisgICAgIGNwdXR5cGU9YCgoKGdyZXAgY3B1IC9wcm9jL2NwdWluZm8gfCBjdXQgLWQ6IC1mMikgOyAoJFBSVERJQUcgLXYgfGdyZXAgLWkgc3BhcmMpIDsgZ3JlcCAtaSBjcHUgL3Zhci9ydW4vZG1lc2cuYm9vdCApIHwgaGVhZCAtbiAxKSAyPiAvZGV2L251bGxgCisgICAgIGNwdXR5cGU9YGVjaG8gIiRjcHV0eXBlIiB8IHRyIC1kICcgLScgfHRyICRhc19jcl9MRVRURVJTICRhc19jcl9sZXR0ZXJzYAorICAgICBjYXNlICRjcHV0eXBlIGluCisgICAgICAgICAqdWx0cmFzcGFyY2l2KikgYXhfZ2NjX2FyY2g9InVsdHJhc3BhcmM0IHVsdHJhc3BhcmMzIHVsdHJhc3BhcmMgdjkiIDs7CisgICAgICAgICAqdWx0cmFzcGFyY2lpaSopIGF4X2djY19hcmNoPSJ1bHRyYXNwYXJjMyB1bHRyYXNwYXJjIHY5IiA7OworICAgICAgICAgKnVsdHJhc3BhcmMqKSBheF9nY2NfYXJjaD0idWx0cmFzcGFyYyB2OSIgOzsKKyAgICAgICAgICpzdXBlcnNwYXJjKnwqdG1zMzkwejVbWzA1XV0qKSBheF9nY2NfYXJjaD0ic3VwZXJzcGFyYyB2OCIgOzsKKyAgICAgICAgICpoeXBlcnNwYXJjKnwqcnQ2MltbMDU2XV0qKSBheF9nY2NfYXJjaD0iaHlwZXJzcGFyYyB2OCIgOzsKKyAgICAgICAgICpjeXByZXNzKikgYXhfZ2NjX2FyY2g9Y3lwcmVzcyA7OworICAgICBlc2FjIDs7CisKKyAgYWxwaGFldjUpIGF4X2djY19hcmNoPWV2NSA7OworICBhbHBoYWV2NTYpIGF4X2djY19hcmNoPWV2NTYgOzsKKyAgYWxwaGFwY2E1NikgYXhfZ2NjX2FyY2g9InBjYTU2IGV2NTYiIDs7CisgIGFscGhhcGNhNTcpIGF4X2djY19hcmNoPSJwY2E1NyBwY2E1NiBldjU2IiA7OworICBhbHBoYWV2NikgYXhfZ2NjX2FyY2g9ZXY2IDs7CisgIGFscGhhZXY2NykgYXhfZ2NjX2FyY2g9ZXY2NyA7OworICBhbHBoYWV2NjgpIGF4X2djY19hcmNoPSJldjY4IGV2NjciIDs7CisgIGFscGhhZXY2OSkgYXhfZ2NjX2FyY2g9ImV2NjkgZXY2OCBldjY3IiA7OworICBhbHBoYWV2NykgYXhfZ2NjX2FyY2g9ImV2NyBldjY5IGV2NjggZXY2NyIgOzsKKyAgYWxwaGFldjc5KSBheF9nY2NfYXJjaD0iZXY3OSBldjcgZXY2OSBldjY4IGV2NjciIDs7CisKKyAgcG93ZXJwYyopCisgICAgIGNwdXR5cGU9YCgoZ3JlcCBjcHUgL3Byb2MvY3B1aW5mbyB8IGhlYWQgLW4gMSB8IGN1dCAtZDogLWYyIHwgY3V0IC1kLCAtZjEgfCBzZWQgJ3MvIC8vZycpIDsgL3Vzci9iaW4vbWFjaGluZSA7IC9iaW4vbWFjaGluZTsgZ3JlcCBDUFUgL3Zhci9ydW4vZG1lc2cuYm9vdCB8IGhlYWQgLW4gMSB8IGN1dCAtZCIgIiAtZjIpIDI+IC9kZXYvbnVsbGAKKyAgICAgY3B1dHlwZT1gZWNobyAkY3B1dHlwZSB8IHNlZCAtZSAncy9wcGMvL2c7cy8gKi8vZydgCisgICAgIGNhc2UgJGNwdXR5cGUgaW4KKyAgICAgICAqNzUwKikgYXhfZ2NjX2FyY2g9Ijc1MCBHMyIgOzsKKyAgICAgICAqNzQwW1swLTldXSopIGF4X2djY19hcmNoPSIkY3B1dHlwZSA3NDAwIEc0IiA7OworICAgICAgICo3NFtbNC01XV1bWzAtOV1dKikgYXhfZ2NjX2FyY2g9IiRjcHV0eXBlIDc0NTAgRzQiIDs7CisgICAgICAgKjc0W1swLTldXVtbMC05XV0qKSBheF9nY2NfYXJjaD0iJGNwdXR5cGUgRzQiIDs7CisgICAgICAgKjk3MCopIGF4X2djY19hcmNoPSI5NzAgRzUgcG93ZXI0Ijs7CisgICAgICAgKlBPV0VSNCp8KnBvd2VyNCp8KmdxKikgYXhfZ2NjX2FyY2g9InBvd2VyNCA5NzAiOzsKKyAgICAgICAqUE9XRVI1KnwqcG93ZXI1KnwqZ3IqfCpncyopIGF4X2djY19hcmNoPSJwb3dlcjUgcG93ZXI0IDk3MCI7OworICAgICAgIDYwM2V2fDgyNDApIGF4X2djY19hcmNoPSIkY3B1dHlwZSA2MDNlIDYwMyI7OworICAgICAgICopIGF4X2djY19hcmNoPSRjcHV0eXBlIDs7CisgICAgIGVzYWMKKyAgICAgYXhfZ2NjX2FyY2g9IiRheF9nY2NfYXJjaCBwb3dlcnBjIgorICAgICA7OworZXNhYworZmkgIyBub3QgY3Jvc3MtY29tcGlsaW5nCitmaSAjIGd1ZXNzIGFyY2gKKworaWYgdGVzdCAieCRheF9nY2NfYXJjaCIgIT0geCAtYSAieCRheF9nY2NfYXJjaCIgIT0geG5vOyB0aGVuCitmb3IgYXJjaCBpbiAkYXhfZ2NjX2FyY2g7IGRvCisgIGlmIHRlc3QgInhbXW00X2RlZmF1bHQoWyQxXSx5ZXMpIiA9IHh5ZXM7IHRoZW4gIyBpZiB3ZSByZXF1aXJlIHBvcnRhYmxlIGNvZGUKKyAgICBmbGFncz0iLW10dW5lPSRhcmNoIgorICAgICMgLW1jcHU9JGFyY2ggYW5kIG0kYXJjaCBnZW5lcmF0ZSBub25wb3J0YWJsZSBjb2RlIG9uIGV2ZXJ5IGFyY2ggZXhjZXB0CisgICAgIyB4ODYuICBBbmQgc29tZSBvdGhlciBhcmNoZXMgKGUuZy4gQWxwaGEpIGRvbid0IGFjY2VwdCAtbXR1bmUuICBHcnJyLgorICAgIGNhc2UgJGhvc3RfY3B1IGluIGkqODZ8eDg2XzY0KikgZmxhZ3M9IiRmbGFncyAtbWNwdT0kYXJjaCAtbSRhcmNoIjs7IGVzYWMKKyAgZWxzZQorICAgIGZsYWdzPSItbWFyY2g9JGFyY2ggLW1jcHU9JGFyY2ggLW0kYXJjaCIKKyAgZmkKKyAgZm9yIGZsYWcgaW4gJGZsYWdzOyBkbworICAgIEFYX0NIRUNLX0NPTVBJTEVfRkxBRygkZmxhZywgW2F4X2N2X2djY19hcmNoZmxhZz0kZmxhZzsgYnJlYWtdKQorICBkb25lCisgIHRlc3QgIngkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA9IHh1bmtub3duIHx8IGJyZWFrCitkb25lCitmaQorCitmaSAjICRHQ0M9eWVzCitdKQorQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2NjIGFyY2hpdGVjdHVyZSBmbGFnXSkKK0FDX01TR19SRVNVTFQoJGF4X2N2X2djY19hcmNoZmxhZykKK2lmIHRlc3QgIngkYXhfY3ZfZ2NjX2FyY2hmbGFnIiA9IHh1bmtub3duOyB0aGVuCisgIG00X2RlZmF1bHQoWyQzXSw6KQorZWxzZQorICBtNF9kZWZhdWx0KFskMl0sIFtDRkxBR1M9IiRDRkxBR1MgJGF4X2N2X2djY19hcmNoZmxhZyJdKQorZmkKK10pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY194ODZfY3B1aWQubTQgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2F4X2djY194ODZfY3B1aWQubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Q0NmZlZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvYXhfZ2NjX3g4Nl9jcHVpZC5tNApAQCAtMCwwICsxLDc5IEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfZ2NjX3g4Nl9jcHVpZC5odG1sCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIworIyBTWU5PUFNJUworIworIyAgIEFYX0dDQ19YODZfQ1BVSUQoT1ApCisjCisjIERFU0NSSVBUSU9OCisjCisjICAgT24gUGVudGl1bSBhbmQgbGF0ZXIgeDg2IHByb2Nlc3NvcnMsIHdpdGggZ2NjIG9yIGEgY29tcGlsZXIgdGhhdCBoYXMgYQorIyAgIGNvbXBhdGlibGUgc3ludGF4IGZvciBpbmxpbmUgYXNzZW1ibHkgaW5zdHJ1Y3Rpb25zLCBydW4gYSBzbWFsbCBwcm9ncmFtCisjICAgdGhhdCBleGVjdXRlcyB0aGUgY3B1aWQgaW5zdHJ1Y3Rpb24gd2l0aCBpbnB1dCBPUC4gVGhpcyBjYW4gYmUgdXNlZCB0bworIyAgIGRldGVjdCB0aGUgQ1BVIHR5cGUuCisjCisjICAgT24gb3V0cHV0LCB0aGUgdmFsdWVzIG9mIHRoZSBlYXgsIGVieCwgZWN4LCBhbmQgZWR4IHJlZ2lzdGVycyBhcmUgc3RvcmVkCisjICAgYXMgaGV4YWRlY2ltYWwgc3RyaW5ncyBhcyAiZWF4OmVieDplY3g6ZWR4IiBpbiB0aGUgY2FjaGUgdmFyaWFibGUKKyMgICBheF9jdl9nY2NfeDg2X2NwdWlkX09QLgorIworIyAgIElmIHRoZSBjcHVpZCBpbnN0cnVjdGlvbiBmYWlscyAoYmVjYXVzZSB5b3UgYXJlIHJ1bm5pbmcgYQorIyAgIGNyb3NzLWNvbXBpbGVyLCBvciBiZWNhdXNlIHlvdSBhcmUgbm90IHVzaW5nIGdjYywgb3IgYmVjYXVzZSB5b3UgYXJlIG9uCisjICAgYSBwcm9jZXNzb3IgdGhhdCBkb2Vzbid0IGhhdmUgdGhpcyBpbnN0cnVjdGlvbiksIGF4X2N2X2djY194ODZfY3B1aWRfT1AKKyMgICBpcyBzZXQgdG8gdGhlIHN0cmluZyAidW5rbm93biIuCisjCisjICAgVGhpcyBtYWNybyBtYWlubHkgZXhpc3RzIHRvIGJlIHVzZWQgaW4gQVhfR0NDX0FSQ0hGTEFHLgorIworIyBMSUNFTlNFCisjCisjICAgQ29weXJpZ2h0IChjKSAyMDA4IFN0ZXZlbiBHLiBKb2huc29uIDxzdGV2ZW5qQGFsdW0ubWl0LmVkdT4KKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggTWF0dGVvIEZyaWdvCisjCisjICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyCisjICAgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbAorIyAgIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcKKyMgICB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSByZXNwZWN0aXZlIEF1dG9jb25mIE1hY3JvJ3MgY29weXJpZ2h0IG93bmVyCisjICAgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQgbW9kaWZ5IHRoZSBjb25maWd1cmUKKyMgICBzY3JpcHRzIHRoYXQgYXJlIHRoZSBvdXRwdXQgb2YgQXV0b2NvbmYgd2hlbiBwcm9jZXNzaW5nIHRoZSBNYWNyby4gWW91CisjICAgbmVlZCBub3QgZm9sbG93IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugd2hlbiB1c2luZworIyAgIG9yIGRpc3RyaWJ1dGluZyBzdWNoIHNjcmlwdHMsIGV2ZW4gdGhvdWdoIHBvcnRpb25zIG9mIHRoZSB0ZXh0IG9mIHRoZQorIyAgIE1hY3JvIGFwcGVhciBpbiB0aGVtLiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKEdQTCkgZG9lcyBnb3Zlcm4KKyMgICBhbGwgb3RoZXIgdXNlIG9mIHRoZSBtYXRlcmlhbCB0aGF0IGNvbnN0aXR1dGVzIHRoZSBBdXRvY29uZiBNYWNyby4KKyMKKyMgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgYXBwbGllcyB0byB2ZXJzaW9ucyBvZiB0aGUgQXV0b2NvbmYKKyMgICBNYWNybyByZWxlYXNlZCBieSB0aGUgQXV0b2NvbmYgQXJjaGl2ZS4gV2hlbiB5b3UgbWFrZSBhbmQgZGlzdHJpYnV0ZSBhCisjICAgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgQXV0b2NvbmYgTWFjcm8sIHlvdSBtYXkgZXh0ZW5kIHRoaXMgc3BlY2lhbAorIyAgIGV4Y2VwdGlvbiB0byB0aGUgR1BMIHRvIGFwcGx5IHRvIHlvdXIgbW9kaWZpZWQgdmVyc2lvbiBhcyB3ZWxsLgorCisjc2VyaWFsIDcKKworQUNfREVGVU4oW0FYX0dDQ19YODZfQ1BVSURdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQorQUNfTEFOR19QVVNIKFtDXSkKK0FDX0NBQ0hFX0NIRUNLKGZvciB4ODYgY3B1aWQgJDEgb3V0cHV0LCBheF9jdl9nY2NfeDg2X2NwdWlkXyQxLAorIFtBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDxzdGRpby5oPl0sIFsKKyAgICAgaW50IG9wID0gJDEsIGVheCwgZWJ4LCBlY3gsIGVkeDsKKyAgICAgRklMRSAqZjsKKyAgICAgIF9fYXNtX18oImNwdWlkIgorICAgICAgICA6ICI9YSIgKGVheCksICI9YiIgKGVieCksICI9YyIgKGVjeCksICI9ZCIgKGVkeCkKKyAgICAgICAgOiAiYSIgKG9wKSk7CisgICAgIGYgPSBmb3BlbigiY29uZnRlc3RfY3B1aWQiLCAidyIpOyBpZiAoIWYpIHJldHVybiAxOworICAgICBmcHJpbnRmKGYsICIleDoleDoleDoleFxuIiwgZWF4LCBlYngsIGVjeCwgZWR4KTsKKyAgICAgZmNsb3NlKGYpOworICAgICByZXR1cm4gMDsKK10pXSwKKyAgICAgW2F4X2N2X2djY194ODZfY3B1aWRfJDE9YGNhdCBjb25mdGVzdF9jcHVpZGA7IHJtIC1mIGNvbmZ0ZXN0X2NwdWlkXSwKKyAgICAgW2F4X2N2X2djY194ODZfY3B1aWRfJDE9dW5rbm93bjsgcm0gLWYgY29uZnRlc3RfY3B1aWRdLAorICAgICBbYXhfY3ZfZ2NjX3g4Nl9jcHVpZF8kMT11bmtub3duXSldKQorQUNfTEFOR19QT1AoW0NdKQorXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbGlidG9vbC5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbGlidG9vbC5tNAppbmRleCA2NzFjZGUxLi44MjgxMDRjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2xpYnRvb2wubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9saWJ0b29sLm00CkBAIC0xLDcgKzEsOCBAQAogIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KICMKICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjICAgICAgICAgICAgICAgICBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwpAQCAtMTAsNyArMTEsOCBAQAogCiBtNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAogIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUKKyMgICAgICAgICAgICAgICAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CiAjCiAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCkBAIC0zNyw3ICszOSw3IEBACiAjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogXSkKIAotIyBzZXJpYWwgNTYgTFRfSU5JVAorIyBzZXJpYWwgNTcgTFRfSU5JVAogCiAKICMgTFRfUFJFUkVRKFZFUlNJT04pCkBAIC02Niw2ICs2OCw3IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLQogQUNfREVGVU4oW0xUX0lOSVRdLAogW0FDX1BSRVJFUShbMi41OF0pZG5sIFdlIHVzZSBBQ19JTkNMVURFU19ERUZBVUxUCitBQ19SRVFVSVJFKFtBQ19DT05GSUdfQVVYX0RJUl9ERUZBVUxUXSlkbmwKIEFDX0JFRk9SRShbJDBdLCBbTFRfTEFOR10pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX09VVFBVVF0pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xURExfSU5JVF0pZG5sCkBAIC04Miw2ICs4NSw4IEBACiBBQ19SRVFVSVJFKFtMVE9CU09MRVRFX1ZFUlNJT05dKWRubAogbTRfcmVxdWlyZShbX0xUX1BST0dfTFRNQUlOXSlkbmwKIAorX0xUX1NIRUxMX0lOSVQoW1NIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9XSkKKwogZG5sIFBhcnNlIE9QVElPTlMKIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQogCkBAIC0xMTgsNyArMTIzLDcgQEAKICAgICAqKSBicmVhazs7CiAgIGVzYWMKIGRvbmUKLWNjX2Jhc2VuYW1lPWAkRUNITyAiWCRjY190ZW1wIiB8ICRYc2VkIC1lICdzJS4qLyUlJyAtZSAicyVeJGhvc3RfYWxpYXMtJSUiYAorY2NfYmFzZW5hbWU9YCRFQ0hPICIkY2NfdGVtcCIgfCAkU0VEICJzJS4qLyUlOyBzJV4kaG9zdF9hbGlhcy0lJSJgCiBdKQogCiAKQEAgLTEzOCw2ICsxNDMsMTEgQEAKIG00X2RlZnVuKFtfTFRfU0VUVVBdLAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pZG5sCisKK19MVF9ERUNMKFtdLCBbUEFUSF9TRVBBUkFUT1JdLCBbMV0sIFtUaGUgUEFUSCBzZXBhcmF0b3IgZm9yIHRoZSBidWlsZCBzeXN0ZW1dKWRubAorZG5sCiBfTFRfREVDTChbXSwgW2hvc3RfYWxpYXNdLCBbMF0sIFtUaGUgaG9zdCBzeXN0ZW1dKWRubAogX0xUX0RFQ0woW10sIFtob3N0XSwgWzBdKWRubAogX0xUX0RFQ0woW10sIFtob3N0X29zXSwgWzBdKWRubApAQCAtMTYwLDEwICsxNzAsMTMgQEAKIGRubAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlNdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAogbTRfcmVxdWlyZShbX0xUX0NIRUNLX01BR0lDX01FVEhPRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCiAKIF9MVF9DT05GSUdfTElCVE9PTF9JTklUKFsKICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKQEAgLTE3OSw3ICsxOTIsNiBAQAogX0xUX0NIRUNLX09CSkRJUgogCiBtNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKLV9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQpAQCAtMTkzLDIzICsyMDUsNiBAQAogICA7OwogZXNhYwogCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotc2VkX3F1b3RlX3N1YnN0PSdzL1woW1siYCRcXF1dXCkvXFxcMS9nJwotCi0jIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLWRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtbImBcXF1dXCkvXFxcMS9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQotIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgotZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KLWRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucwotbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCi0KICMgR2xvYmFsIHZhcmlhYmxlczoKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCkBAIC0yNTAsNiArMjQ1LDI4IEBACiBdKSMgX0xUX1NFVFVQCiAKIAorIyBfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZWZpbmUgYSBmZXcgc2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHAgdXMgZG8gcm9idXN0IHF1b3RpbmcuCittNF9kZWZ1bihbX0xUX1BSRVBBUkVfU0VEX1FVT1RFX1ZBUlNdLAorWyMgQmFja3NsYXNoaWZ5IG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4KKyMgZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzL1woW1siYCRcXF1dXCkvXFxcMS9nJworCisjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KK2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtbImBcXF1dXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQorIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgorZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KK2RlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCitdKQorCiAjIF9MVF9QUk9HX0xUTUFJTgogIyAtLS0tLS0tLS0tLS0tLS0KICMgTm90ZSB0aGF0IHRoaXMgY29kZSBpcyBjYWxsZWQgYm90aCBmcm9tIGBjb25maWd1cmUnLCBhbmQgYGNvbmZpZy5zdGF0dXMnCkBAIC00MDgsNyArNDI1LDcgQEAKICMgZGVjbGFyYXRpb24gdGhlcmUgd2lsbCBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIGluIGBjb25maWd1cmUnLiAgVkFSTkFNRQogIyBtdXN0IGhhdmUgYSBzaW5nbGUgcXVvdGUgZGVsaW1pdGVkIHZhbHVlIGZvciB0aGlzIHRvIHdvcmsuCiBtNF9kZWZpbmUoW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkVdLAotWyQxPSdgJEVDSE8gIlgkXVskMSIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJ10pCitbJDE9J2AkRUNITyAiJF1bJDEiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJ10pCiAKIAogIyBfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlMKQEAgLTQxOCw3ICs0MzUsNyBAQAogIyBlbWJlZGRlZCBzaW5nbGUgcXVvdGVzIHByb3Blcmx5LiAgSW4gY29uZmlndXJlLCB0aGlzIG1hY3JvIGV4cGFuZHMKICMgZWFjaCB2YXJpYWJsZSBkZWNsYXJlZCB3aXRoIF9MVF9ERUNMIChhbmQgX0xUX1RBR0RFQ0wpIGludG86CiAjCi0jICAgIDx2YXI+PSdgJEVDSE8gIlgkPHZhcj4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyMgICAgPHZhcj49J2AkRUNITyAiJDx2YXI+IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIG00X2RlZnVuKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlNdLAogW200X2ZvcmVhY2goW19sdF92YXJdLCBtNF9xdW90ZShsdF9kZWNsX2FsbF92YXJuYW1lcyksCiAgICAgW200X24oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkUoX2x0X3ZhcildKV0pXSkKQEAgLTUxNywxMiArNTM0LDIwIEBACiBMVENGTEFHUz0nJExUQ0ZMQUdTJwogY29tcGlsZXI9JyRjb21waWxlcl9ERUZBVUxUJwogCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKK1wkW10xCitfTFRFQ0hPX0VPRicKK30KKwogIyBRdW90ZSBldmFsZWQgc3RyaW5ncy4KIGZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAogXV0sIGx0X2RlY2xfcXVvdGVfdmFybmFtZXMpOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTUzMyw5ICs1NTgsOSBAQAogIyBEb3VibGUtcXVvdGUgZG91YmxlLWV2YWxlZCBzdHJpbmdzLgogZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCiBdXSwgbHRfZGVjbF9kcXVvdGVfdmFybmFtZXMpOyBkbwotICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU0MywxNiArNTY4LDM4IEBACiAgICAgZXNhYwogZG9uZQogCi0jIEZpeC11cCBmYWxsYmFjayBlY2hvIGlmIGl0IHdhcyBtYW5nbGVkIGJ5IHRoZSBhYm92ZSBxdW90aW5nIHJ1bGVzLgotY2FzZSBcJGx0X0VDSE8gaW4KLSonXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iJylkbmwgIgotICBsdF9FQ0hPPVxgXCRFQ0hPICJYXCRsdF9FQ0hPIiB8IFwkWHNlZCAtZSAncy9cXFxcXFxcXFxcXFxcXFxbJF0wIC0tZmFsbGJhY2stZWNobyJcWyRdL1xbJF0wIC0tZmFsbGJhY2stZWNobyIvJ1xgCi0gIDs7Ci1lc2FjCi0KIF9MVF9PVVRQVVRfTElCVE9PTF9JTklUCiBdKQogCisjIF9MVF9HRU5FUkFURURfRklMRV9JTklUKEZJTEUsIFtDT01NRU5UXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEdlbmVyYXRlIGEgY2hpbGQgc2NyaXB0IEZJTEUgd2l0aCBhbGwgaW5pdGlhbGl6YXRpb24gbmVjZXNzYXJ5IHRvCisjIHJldXNlIHRoZSBlbnZpcm9ubWVudCBsZWFybmVkIGJ5IHRoZSBwYXJlbnQgc2NyaXB0LCBhbmQgbWFrZSB0aGUKKyMgZmlsZSBleGVjdXRhYmxlLiAgSWYgQ09NTUVOVCBpcyBzdXBwbGllZCwgaXQgaXMgaW5zZXJ0ZWQgYWZ0ZXIgdGhlCisjIGAjIScgc2VxdWVuY2UgYnV0IGJlZm9yZSBpbml0aWFsaXphdGlvbiB0ZXh0IGJlZ2lucy4gIEFmdGVyIHRoaXMKKyMgbWFjcm8sIGFkZGl0aW9uYWwgdGV4dCBjYW4gYmUgYXBwZW5kZWQgdG8gRklMRSB0byBmb3JtIHRoZSBib2R5IG9mCisjIHRoZSBjaGlsZCBzY3JpcHQuICBUaGUgbWFjcm8gZW5kcyB3aXRoIG5vbi16ZXJvIHN0YXR1cyBpZiB0aGUKKyMgZmlsZSBjb3VsZCBub3QgYmUgZnVsbHkgd3JpdHRlbiAoc3VjaCBhcyBpZiB0aGUgZGlzayBpcyBmdWxsKS4KK200X2lmZGVmKFtBU19JTklUX0dFTkVSQVRFRF0sCitbbTRfZGVmdW4oW19MVF9HRU5FUkFURURfRklMRV9JTklUXSxbQVNfSU5JVF9HRU5FUkFURUQoJEApXSldLAorW200X2RlZnVuKFtfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVF0sCitbbTRfcmVxdWlyZShbQVNfUFJFUEFSRV0pXWRubAorW200X3B1c2hkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSldZG5sCitbbHRfd3JpdGVfZmFpbD0wCitjYXQgPiQxIDw8X0FTRU9GIHx8IGx0X3dyaXRlX2ZhaWw9MQorIyEgJFNIRUxMCisjIEdlbmVyYXRlZCBieSAkYXNfbWUuCiskMgorU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KK2V4cG9ydCBTSEVMTAorX0FTRU9GCitjYXQgPj4kMSA8PFxfQVNFT0YgfHwgbHRfd3JpdGVfZmFpbD0xCitBU19TSEVMTF9TQU5JVElaRQorX0FTX1BSRVBBUkUKK2V4ZWMgQVNfTUVTU0FHRV9GRD4mMQorX0FTRU9GCit0ZXN0ICRsdF93cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkMVtdZG5sCittNF9wb3BkZWYoW0FTX01FU1NBR0VfTE9HX0ZEXSldKV0pIyBfTFRfR0VORVJBVEVEX0ZJTEVfSU5JVAogCiAjIExUX09VVFBVVAogIyAtLS0tLS0tLS0KQEAgLTU2MiwyMCArNjA5LDExIEBACiBBQ19ERUZVTihbTFRfT1VUUFVUXSwKIFs6ICR7Q09ORklHX0xUPS4vY29uZmlnLmx0fQogQUNfTVNHX05PVElDRShbY3JlYXRpbmcgJENPTkZJR19MVF0pCi1jYXQgPiIkQ09ORklHX0xUIiA8PF9MVEVPRgotIyEgJFNIRUxMCi0jIEdlbmVyYXRlZCBieSAkYXNfbWUuCi0jIFJ1biB0aGlzIGZpbGUgdG8gcmVjcmVhdGUgYSBsaWJ0b29sIHN0dWIgd2l0aCB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLgotCi1sdF9jbF9zaWxlbnQ9ZmFsc2UKLVNIRUxMPVwke0NPTkZJR19TSEVMTC0kU0hFTEx9Ci1fTFRFT0YKK19MVF9HRU5FUkFURURfRklMRV9JTklUKFsiJENPTkZJR19MVCJdLAorWyMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSBhIGxpYnRvb2wgc3R1YiB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXSkKIAogY2F0ID4+IiRDT05GSUdfTFQiIDw8XF9MVEVPRgotQVNfU0hFTExfU0FOSVRJWkUKLV9BU19QUkVQQVJFCi0KLWV4ZWMgQVNfTUVTU0FHRV9GRD4mMQorbHRfY2xfc2lsZW50PWZhbHNlCiBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCiB7CiAgIGVjaG8KQEAgLTYwMSw3ICs2MzksNyBAQAogbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKIGNvbmZpZ3VyZWQgYnkgJFswXSwgZ2VuZXJhdGVkIGJ5IG00X1BBQ0tBR0VfU1RSSU5HLgogCi1Db3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiBUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgogCkBAIC02NDYsMTUgKzY4NCwxMyBAQAogIyBhcHBlbmRpbmcgdG8gY29uZmlnLmxvZywgd2hpY2ggZmFpbHMgb24gRE9TLCBhcyBjb25maWcubG9nIGlzIHN0aWxsIGtlcHQKICMgb3BlbiBieSBjb25maWd1cmUuICBIZXJlIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwgZWZmZWN0aXZlbHkgY2xvc2luZwogIyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQgYXBwZW5kZWQgdG8gYnkgY29uZmlnLmx0LgotaWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCi0gIGx0X2NsX3N1Y2Nlc3M9OgotICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgotICAgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKLSAgZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKLSAgJFNIRUxMICIkQ09ORklHX0xUIiAkbHRfY29uZmlnX2x0X2FyZ3MgfHwgbHRfY2xfc3VjY2Vzcz1mYWxzZQotICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCi0gICRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKLWZpCitsdF9jbF9zdWNjZXNzPToKK3Rlc3QgIiRzaWxlbnQiID0geWVzICYmCisgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+L2Rldi9udWxsCiskU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCitleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCiskbHRfY2xfc3VjY2VzcyB8fCBBU19FWElUKDEpCiBdKSMgTFRfT1VUUFVUCiAKIApAQCAtNzE3LDE1ICs3NTMsMTIgQEAKICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgogICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQogICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKIAotICBfTFRfUFJPR19YU0lfU0hFTExGTlMKKyAgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwogCi0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotCi0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQogICBjaG1vZCAreCAiJG9maWxlIgogXSwKQEAgLTc3MCw2ICs4MDMsNyBAQAogbTRfY2FzZShbJDFdLAogICBbQ10sCQkJW19MVF9MQU5HKEMpXSwKICAgW0MrK10sCQlbX0xUX0xBTkcoQ1hYKV0sCisgIFtHb10sCQkJW19MVF9MQU5HKEdPKV0sCiAgIFtKYXZhXSwJCVtfTFRfTEFORyhHQ0opXSwKICAgW0ZvcnRyYW4gNzddLAkJW19MVF9MQU5HKEY3NyldLAogICBbRm9ydHJhbl0sCQlbX0xUX0xBTkcoRkMpXSwKQEAgLTc5MSw2ICs4MjUsMzEgQEAKIF0pIyBfTFRfTEFORwogCiAKK200X2lmbmRlZihbQUNfUFJPR19HT10sIFsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBOT1RFOiBUaGlzIG1hY3JvIGhhcyBiZWVuIHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGludG8gICAjCisjICBHTlUgQXV0b2NvbmYgYXMgQUNfUFJPR19HTy4gIFdoZW4gaXQgaXMgYXZhaWxhYmxlIGluICAgICMKKyMgIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBBdXRvY29uZiB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgICAgIworIyAgbWFjcm8gYW5kIHVzZSBpdCBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK200X2RlZnVuKFtBQ19QUk9HX0dPXSwKK1tBQ19MQU5HX1BVU0goR28pZG5sCitBQ19BUkdfVkFSKFtHT0NdLCAgICAgW0dvIGNvbXBpbGVyIGNvbW1hbmRdKWRubAorQUNfQVJHX1ZBUihbR09GTEFHU10sIFtHbyBjb21waWxlciBmbGFnc10pZG5sCitfQUNfQVJHX1ZBUl9MREZMQUdTKClkbmwKK0FDX0NIRUNLX1RPT0woR09DLCBnY2NnbykKK2lmIHRlc3QgLXogIiRHT0MiOyB0aGVuCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgICBBQ19DSEVDS19QUk9HKEdPQywgWyR7YWNfdG9vbF9wcmVmaXh9Z2NjZ29dLCBbJHthY190b29sX3ByZWZpeH1nY2Nnb10pCisgIGZpCitmaQoraWYgdGVzdCAteiAiJEdPQyI7IHRoZW4KKyAgQUNfQ0hFQ0tfUFJPRyhHT0MsIGdjY2dvLCBnY2NnbywgZmFsc2UpCitmaQorXSkjbTRfZGVmdW4KK10pI200X2lmbmRlZgorCisKICMgX0xUX0xBTkdfREVGQVVMVF9DT05GSUcKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfTEFOR19ERUZBVUxUX0NPTkZJR10sCkBAIC04MjEsNiArODgwLDEwIEBACiAgICAgICAgbTRfaWZkZWYoW0xUX1BST0dfR0NKXSwKIAlbbTRfZGVmaW5lKFtMVF9QUk9HX0dDSl0sIGRlZm4oW0xUX1BST0dfR0NKXSlbTFRfTEFORyhHQ0opXSldKV0pXSldKQogCitBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19HT10sCisgIFtMVF9MQU5HKEdPKV0sCisgIFttNF9kZWZpbmUoW0FDX1BST0dfR09dLCBkZWZuKFtBQ19QUk9HX0dPXSlbTFRfTEFORyhHTyldKV0pCisKIEFDX1BST1ZJREVfSUZFTFNFKFtMVF9QUk9HX1JDXSwKICAgW0xUX0xBTkcoUkMpXSwKICAgW200X2RlZmluZShbTFRfUFJPR19SQ10sIGRlZm4oW0xUX1BST0dfUkNdKVtMVF9MQU5HKFJDKV0pXSkKQEAgLTgzMSwxMSArODk0LDEzIEBACiBBVV9ERUZVTihbQUNfTElCVE9PTF9GNzddLCBbTFRfTEFORyhGb3J0cmFuIDc3KV0pCiBBVV9ERUZVTihbQUNfTElCVE9PTF9GQ10sIFtMVF9MQU5HKEZvcnRyYW4pXSkKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0dDSl0sIFtMVF9MQU5HKEphdmEpXSkKK0FVX0RFRlVOKFtBQ19MSUJUT09MX1JDXSwgW0xUX0xBTkcoV2luZG93cyBSZXNvdXJjZSldKQogZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0NYWF0sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0Y3N10sIFtdKQogZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX0ZDXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfR0NKXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfUkNdLCBbXSkKIAogCiAjIF9MVF9UQUdfQ09NUElMRVIKQEAgLTkyMSw3ICs5ODYsMTMgQEAKIAkkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gbGliY29uZnRlc3QuZHlsaWIgXAogCSAgLWR5bmFtaWNsaWIgLVdsLC1zaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmMgMj5jb25mdGVzdC5lcnIKICAgICAgICAgX2x0X3Jlc3VsdD0kPwotCWlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyciAmJiB0ZXN0ICRfbHRfcmVzdWx0ID0gMDsgdGhlbgorCSMgSWYgdGhlcmUgaXMgYSBub24tZW1wdHkgZXJyb3IgbG9nLCBhbmQgInNpbmdsZV9tb2R1bGUiCisJIyBhcHBlYXJzIGluIGl0LCBhc3N1bWUgdGhlIGZsYWcgY2F1c2VkIGEgbGlua2VyIHdhcm5pbmcKKyAgICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnIgJiYgJEdSRVAgc2luZ2xlX21vZHVsZSBjb25mdGVzdC5lcnI7IHRoZW4KKwkgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorCSMgT3RoZXJ3aXNlLCBpZiB0aGUgb3V0cHV0IHdhcyBjcmVhdGVkIHdpdGggYSAwIGV4aXQgY29kZSBmcm9tCisJIyB0aGUgY29tcGlsZXIsIGl0IHdvcmtlZC4KKwllbGlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMDsgdGhlbgogCSAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKIAllbHNlCiAJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKQEAgLTkyOSw2ICsxMDAwLDcgQEAKIAlybSAtcmYgbGliY29uZnRlc3QuZHlsaWIqCiAJcm0gLWYgY29uZnRlc3QuKgogICAgICAgZmldKQorCiAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnXSwKICAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3RdLAogICAgICAgW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ubwpAQCAtOTQwLDYgKzEwMTIsMzQgQEAKIAlbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vXSkKIAlMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgogICAgIF0pCisKKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnXSxbbHRfY3ZfbGRfZm9yY2VfbG9hZF0sCisgICAgICBbbHRfY3ZfbGRfZm9yY2VfbG9hZD1ubworICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgZm9yY2VkX2xvYWRlZCgpIHsgcmV0dXJuIDI7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSAyPmNvbmZ0ZXN0LmVycgorICAgICAgX2x0X3Jlc3VsdD0kPworICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnIgJiYgJEdSRVAgZm9yY2VfbG9hZCBjb25mdGVzdC5lcnI7IHRoZW4KKwljYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwlsdF9jdl9sZF9mb3JjZV9sb2FkPXllcworICAgICAgZWxzZQorCWNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZmkKKyAgICAgICAgcm0gLWYgY29uZnRlc3QuZXJyIGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QgY29uZnRlc3QuYworICAgICAgICBybSAtcmYgY29uZnRlc3QuZFNZTQorICAgIF0pCiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKICAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKQEAgLTk2Nyw3ICsxMDY3LDcgQEAKICAgICBlbHNlCiAgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKICAgICBmaQotICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCisgICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiIgJiYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gIm5vIjsgdGhlbgogICAgICAgX2x0X2RzeW11dGlsPSd+JERTWU1VVElMICRsaWIgfHwgOicKICAgICBlbHNlCiAgICAgICBfbHRfZHN5bXV0aWw9CkBAIC05NzcsOCArMTA3Nyw4IEBACiBdKQogCiAKLSMgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBDaGVja3MgZm9yIGxpbmtlciBhbmQgY29tcGlsZXIgZmVhdHVyZXMgb24gZGFyd2luCiBtNF9kZWZ1bihbX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVNdLAogWwpAQCAtOTg3LDcgKzEwODcsMTMgQEAKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPXllcwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAotICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JycKKyAgaWYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gInllcyI7IHRoZW4KKyAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9J2Bmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSAke3dsfS1mb3JjZV9sb2FkLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgJworICAgIG00X2Nhc2UoWyQxXSwgW0Y3N10sIFtfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllc10sCisgICAgICAgICAgICAgICAgICBbRkNdLCAgW19MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzXSkKKyAgZWxzZQorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBmaQogICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05OTUsNyArMTEwMSw3IEBACiAgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CiAgIGVzYWMKICAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKICAgICBfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgpAQCAtMTAxMSwyMDMgKzExMTcsMTQyIEBACiAgIGZpCiBdKQogCi0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCiAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAogIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCiAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCiAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgorIyBTdG9yZSB0aGUgcmVzdWx0cyBmcm9tIHRoZSBkaWZmZXJlbnQgY29tcGlsZXJzIGZvciBlYWNoIFRBR05BTUUuCisjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCiBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAogW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi1BQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWwotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maV0sW10pCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK2lmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIEFDX0NBQ0hFX1ZBTChbX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSldLAorICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWworICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKwkgIC9eMC8geworCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisJICAgICAgcAorCSAgfQorICAgICAgfV0nCisgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmldLFtdKQorICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9Ii91c3IvbGliOi9saWIiCisgIGZpCisgIF0pCisgIGFpeF9saWJwYXRoPSRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKQorZmkKIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAogCiAKICMgX0xUX1NIRUxMX0lOSVQoQVJHKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZpbmUoW19MVF9TSEVMTF9JTklUXSwKLVtpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCi0JICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAotCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCi0kMQotQUNfRElWRVJUX1BPUAotXSkjIF9MVF9TSEVMTF9JTklUCitbbTRfZGl2ZXJ0X3RleHQoW000U0gtSU5JVF0sIFskMQorXSldKSMgX0xUX1NIRUxMX0lOSVQKKwogCiAKICMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoCi0jIHdpbGwgZmluZCBhbiBlY2hvIGNvbW1hbmQgd2hpY2ggZG9lc24ndCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCisjIEZpbmQgaG93IHdlIGNhbiBmYWtlIGFuIGVjaG8gY29tbWFuZCB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2guCisjIEluIHBhcnRpY3VsYXIsIHdpdGggQXV0b2NvbmYgMi42MCBvciBsYXRlciB3ZSBhZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydAorIyBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2ggd2lsbCBmaW5kIGEgc2hlbGwgd2l0aCBhIGJ1aWx0aW4KKyMgcHJpbnRmICh3aGljaCB3ZSBjYW4gdXNlIGFzIGFuIGVjaG8gY29tbWFuZCkuCiBtNF9kZWZ1bihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAotW19MVF9TSEVMTF9JTklUKFsKLSMgQ2hlY2sgdGhhdCB3ZSBhcmUgcnVubmluZyB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLVNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CitbRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KIAotY2FzZSBYJGx0X0VDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCi0gIDs7CitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBwcmludCBzdHJpbmdzXSkKKyMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgoraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludCAtciAtLScKK2VsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50ZiAlc1xuJworZWxzZQorICAjIFVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZmFsbGJhY2sgdGhhdCBhbHdheXMgd29ya3MuCisgIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorICB7CisgICAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyRbXTEKK19MVEVDSE9fRU9GJworICB9CisgIEVDSE89J2Z1bmNfZmFsbGJhY2tfZWNobycKK2ZpCisKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiJCoiIAorfQorCitjYXNlICIkRUNITyIgaW4KKyAgcHJpbnRmKikgQUNfTVNHX1JFU1VMVChbcHJpbnRmXSkgOzsKKyAgcHJpbnQqKSBBQ19NU0dfUkVTVUxUKFtwcmludCAtcl0pIDs7CisgICopIEFDX01TR19SRVNVTFQoW2NhdF0pIDs7CiBlc2FjCiAKLUVDSE89JHtsdF9FQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci1maQorbTRfaWZkZWYoW19BU19ERVRFQ1RfU1VHR0VTVEVEXSwKK1tfQVNfREVURUNUX1NVR0dFU1RFRChbCisgIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSR7QkFTSF9WRVJTSU9OK3NldH0iIHx8ICgKKyAgICBFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworICAgIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworICAgIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgICAgUEFUSD0vZW1wdHkgRlBBVEg9L2VtcHR5OyBleHBvcnQgUEFUSCBGUEFUSAorICAgIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPYCIgPSAiWCRFQ0hPIiBcCisgICAgICB8fCB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPYCIgPSAiWCRFQ0hPIiApXSldKQogCi1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PF9MVF9FT0YKLVskXSoKLV9MVF9FT0YKLSAgZXhpdCAwCi1maQotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1pZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KLSAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCi0gICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0Ci0gICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDJxICJbJF0wIicgJ2VjaG8gdGVzdCc7IGRvCi0gICAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMktiLCAxS2IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgotICAgICAgaWYgeyBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgOyB9IDI+L2Rldi9udWxsICYmCi0JIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsCi0gICAgICB0aGVuCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgZmkKLQotICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICA6Ci0gIGVsc2UKLSAgICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKLSAgICAjIGJhY2tzbGFzaGVzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHF1b3RlIGJhY2tzbGFzaGVzIHVzaW5nCi0gICAgIyAgIGVjaG8gIiRzb21ldGhpbmciIHwgc2VkICdzL1xcL1xcXFwvZycKLSAgICAjCi0gICAgIyBTbywgZmlyc3Qgd2UgbG9vayBmb3IgYSB3b3JraW5nIGVjaG8gaW4gdGhlIHVzZXIncyBQQVRILgotCi0gICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0gICAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICAgaWYgKHRlc3QgLWYgJGRpci9lY2hvIHx8IHRlc3QgLWYgJGRpci9lY2hvJGFjX2V4ZWV4dCkgJiYKLSAgICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkZGlyL2VjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgRUNITz0iJGRpci9lY2hvIgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0KLSAgICBpZiB0ZXN0ICJYJEVDSE8iID0gWGVjaG87IHRoZW4KLSAgICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgotICAgICAgaWYgdGVzdCAiWGB7IHByaW50IC1yICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7IHByaW50IC1yICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhhdCBkb2VzIHRoZSB0cmljay4KLSAgICAgICAgRUNITz0ncHJpbnQgLXInCi0gICAgICBlbGlmIHsgdGVzdCAtZiAvYmluL2tzaCB8fCB0ZXN0IC1mIC9iaW4va3NoJGFjX2V4ZWV4dDsgfSAmJgotCSAgIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9rc2g7IHRoZW4KLSAgICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcgY29uZmlndXJlIGFnYWluIHdpdGggaXQuCi0gICAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotICAgICAgICBleHBvcnQgT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0gICAgICAgIENPTkZJR19TSEVMTD0vYmluL2tzaAotICAgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0gICAgICAgIGV4ZWMgJENPTkZJR19TSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KLSAgICAgIGVsc2UKLSAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKLSAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgIyBDb29sLCBwcmludGYgd29ya3MKLQkgIDoKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAotCSAgZXhwb3J0IENPTkZJR19TSEVMTAotCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCi0JICBleHBvcnQgU0hFTEwKLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxzZQotCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KLQkgIHByZXY9OgotCi0JICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KLQkgICAgaWYgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCI7IH0gMj4vZGV2L251bGwKLQkgICAgdGhlbgotCSAgICAgIGJyZWFrCi0JICAgIGZpCi0JICAgIHByZXY9IiRjbWQiCi0JICBkb25lCi0KLQkgIGlmIHRlc3QgIiRwcmV2IiAhPSAnc2VkIDUwcSAiWyRdMCInOyB0aGVuCi0JICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCi0JICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICJbJF0wIiAkezErIlskXUAifQotCSAgZWxzZQotCSAgICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgotCSAgICBFQ0hPPWVjaG8KLQkgIGZpCi0gICAgICAgIGZpCi0gICAgICBmaQotICAgIGZpCi0gIGZpCi1maQotCi0jIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCi0jIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KLWx0X0VDSE89JEVDSE8KLWlmIHRlc3QgIlgkbHRfRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi1BQ19TVUJTVChsdF9FQ0hPKQotXSkKIF9MVF9ERUNMKFtdLCBbU0hFTExdLCBbMV0sIFtTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzXSkKLV9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwKLSAgICBbQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzXSkKK19MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogCiAKKyMgX0xUX1dJVEhfU1lTUk9PVAorIyAtLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCitBQ19BUkdfV0lUSChbc3lzcm9vdF0sCitbICAtLXdpdGgtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuXSwKK1tdLCBbd2l0aF9zeXNyb290PW5vXSkKKworZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorZG5sIGluIGNhc2UgdGhlIHVzZXIgcGFzc2VkIGEgZGlyZWN0b3J5IG5hbWUuCitsdF9zeXNyb290PQorY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKKyB5ZXMpCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorICAgZmkKKyAgIDs7ICMoCisgLyopCisgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICA7OyAjKAorIG5vfCcnKQorICAgOzsgIygKKyAqKQorICAgQUNfTVNHX1JFU1VMVChbJHt3aXRoX3N5c3Jvb3R9XSkKKyAgIEFDX01TR19FUlJPUihbVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLl0pCisgICA7OworZXNhYworCisgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQorX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCitbZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCisKICMgX0xUX0VOQUJMRV9MT0NLCiAjIC0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCkBAIC0xMjM2LDcgKzEyODEsNyBAQAogICA7OwogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICdbI11saW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGVjaG8gJ1sjXWxpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICBpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCiAgICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCkBAIC0xMzI5LDE0ICsxMzc0LDI3IEBACiAgICAgQ0ZMQUdTPSIkU0FWRV9DRkxBR1MiCiAgIGZpCiAgIDs7Ci1zcGFyYyotKnNvbGFyaXMqKQorKi0qc29sYXJpcyopCiAgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KICAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCiAgICAgKjY0LWJpdCopCiAgICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgotICAgICAgeWVzKikgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0X3NwYXJjIiA7OworICAgICAgeWVzKikKKyAgICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgICBpPzg2LSotc29sYXJpcyopCisgICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjQiCisgICAgICAgICAgOzsKKyAgICAgICAgc3BhcmMqLSotc29sYXJpcyopCisgICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0X3NwYXJjIgorICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgIyBHTlUgbGQgMi4yMSBpbnRyb2R1Y2VkIF9zb2wyIGVtdWxhdGlvbnMuICBVc2UgdGhlbSBpZiBhdmFpbGFibGUuCisgICAgICAgIGlmICR7TEQtbGR9IC1WIHwgZ3JlcCBfc29sMiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICAgICAgICBMRD0iJHtMRC1sZH1fc29sMiIKKyAgICAgICAgZmkKKyAgICAgICAgOzsKICAgICAgICopCiAJaWYgJHtMRC1sZH0gLTY0IC1yIC1vIGNvbmZ0ZXN0Mi5vIGNvbmZ0ZXN0Lm8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAJICBMRD0iJHtMRC1sZH0gLTY0IgpAQCAtMTM1NCwxNCArMTQxMiw0NyBAQAogXSkjIF9MVF9FTkFCTEVfTE9DSwogCiAKKyMgX0xUX1BST0dfQVIKKyMgLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfUFJPR19BUl0sCitbQUNfQ0hFQ0tfVE9PTFMoQVIsIFthcl0sIGZhbHNlKQorOiAke0FSPWFyfQorOiAke0FSX0ZMQUdTPWNydX0KK19MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSwgW0ZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlXSkKKworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0XSwgW2x0X2N2X2FyX2F0X2ZpbGVdLAorICBbbHRfY3ZfYXJfYXRfZmlsZT1ubworICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sCisgICAgIFtlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiZBU19NRVNTQUdFX0xPR19GRCcKKyAgICAgIEFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorCUFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisgICAgICAgIGZpCisgICAgICBmaQorICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisgICAgIF0pCisgIF0pCisKK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorZWxzZQorICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKK2ZpCitfTFRfREVDTChbXSwgW2FyY2hpdmVyX2xpc3Rfc3BlY10sIFsxXSwKKyAgW0hvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlcl0pCitdKSMgX0xUX1BST0dfQVIKKworCiAjIF9MVF9DTURfT0xEX0FSQ0hJVkUKICMgLS0tLS0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9DTURfT0xEX0FSQ0hJVkVdLAotW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci1fTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKLV9MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCitbX0xUX1BST0dfQVIKIAogQUNfQ0hFQ0tfVE9PTChTVFJJUCwgc3RyaXAsIDopCiB0ZXN0IC16ICIkU1RSSVAiICYmIFNUUklQPToKQEAgLTEzODAsMTggKzE0NzEsMjcgQEAKIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgb3BlbmJzZCopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiAtdCBcJG9sZGxpYiIKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgXCR0b29sX29sZGxpYiIKICAgICA7OwogICBlc2FjCi0gIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorICBvbGRfYXJjaGl2ZV9jbWRzPSIkb2xkX2FyY2hpdmVfY21kc35cJFJBTkxJQiBcJHRvb2xfb2xkbGliIgogZmkKKworY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj15ZXMgOzsKKyAgKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249bm8gOzsKK2VzYWMKIF9MVF9ERUNMKFtdLCBbb2xkX3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0pCiBfTFRfREVDTChbXSwgW29sZF9wb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0pCiBfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorX0xUX0RFQ0woW10sIFtsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb25dLCBbMF0sCisgICAgW1doZXRoZXIgdG8gdXNlIGEgbG9jayBmb3Igb2xkIGFyY2hpdmUgZXh0cmFjdGlvbl0pCiBdKSMgX0xUX0NNRF9PTERfQVJDSElWRQogCiAKQEAgLTE0MTYsMTUgKzE1MTYsMTUgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgJDI9eWVzCkBAIC0xNDY0LDcgKzE1NjQsNyBAQAogICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCiAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgICRFQ0hPICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKICAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgJDI9eWVzCkBAIC0xNTI3LDYgKzE2MjcsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKICAgICA7OwogCisgIG1pbnQqKQorICAgICMgT24gTWlOVCB0aGlzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCiAgIGFtaWdhb3MqKQogICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KICAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgpAQCAtMTU1Miw2ICsxNjU3LDExIEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE5NjYwOAogICAgIDs7CiAKKyAgb3MyKikKKyAgICAjIFRoZSB0ZXN0IHRha2VzIGEgbG9uZyB0aW1lIG9uIE9TLzIuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTIKKyAgICA7OworCiAgIG9zZiopCiAgICAgIyBEci4gSGFucyBFa2tlaGFyZCBQbGVzc2VyIHJlcG9ydHMgc2VlaW5nIGEga2VybmVsIHBhbmljIHJ1bm5pbmcgY29uZmlndXJlCiAgICAgIyBkdWUgdG8gdGhpcyB0ZXN0IHdoZW4gZXhlY19kaXNhYmxlX2FyZ19saW1pdCBpcyAxIG9uIFRydTY0LiBJdCBpcyBub3QKQEAgLTE1OTEsOCArMTcwMSw4IEBACiAgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQogICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKICAgICAgICMgd2UgY2FuJ3QgdGVsbC4KLSAgICAgIHdoaWxlIHsgdGVzdCAiWCJgJFNIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKLQkgICAgICAgICA9ICJYWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgorICAgICAgd2hpbGUgeyB0ZXN0ICJYImBlbnYgZWNobyAiJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgICA9ICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCiAJICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKQEAgLTE2NDMsNyArMTc1Myw3IEBACiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTY4NCw3ICsxNzk0LDEzIEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXZvaWQgZm5vcmQoKSB7IGludCBpPTQyO30KKy8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQoraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworI2VuZGlmCisKK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQogaW50IG1haW4gKCkKIHsKICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CkBAIC0xNjkzLDcgKzE4MDksMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTE4NjksMTYgKzE5ODksMTYgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5vdXQvY29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgb3V0L2NvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICBlY2hvICIkYXNfbWU6X19vbGluZV9fOiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSk9eWVzCkBAIC0yMDM3LDYgKzIxNTcsNyBAQAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAogQUNfTVNHX0NIRUNLSU5HKFtkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3NdKQogbTRfaWYoWyQxXSwKIAlbXSwgWwpAQCAtMjA0NSwxNiArMjE2NiwyMyBAQAogICAgIGRhcndpbiopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8sL0xSLyIgOzsKICAgICAqKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovIiA7OwogICBlc2FjCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gIGlmICRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtbQS1aYS16XV06XCksXDEsZyIgOzsKKyAgICAqKSBsdF9zZWRfc3RyaXBfZXE9InMsPS8sLyxnIiA7OworICBlc2FjCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICRsdF9zZWRfc3RyaXBfZXFgCisgIGNhc2UgJGx0X3NlYXJjaF9wYXRoX3NwZWMgaW4KKyAgKlw7KikKICAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCiAgICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCiAgICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCiAgICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICBlbHNlCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICBmaQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICdzLzsvIC9nJ2AKKyAgICA7OworICAqKQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgIDs7CisgIGVzYWMKICAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKICAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCiAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQpAQCAtMjA2Nyw3ICsyMTk1LDcgQEAKIAlsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aCIKICAgICBmaQogICBkb25lCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyB8IGF3ayAnCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMiIHwgYXdrICcKIEJFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKICAgbHRfZm9vPSIiOwogICBsdF9jb3VudD0wOwpAQCAtMjA4Nyw3ICsyMjE1LDEzIEBACiAgIGlmIChsdF9mb28gIT0gIiIpIHsgbHRfZnJlcVtbbHRfZm9vXV0rKzsgfQogICBpZiAobHRfZnJlcVtbbHRfZm9vXV0gPT0gMSkgeyBwcmludCBsdF9mb287IH0KIH0nYAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF9zZWFyY2hfcGF0aF9zcGVjYAorICAjIEFXSyBwcm9ncmFtIGFib3ZlIGVycm9uZW91c2x5IHByZXBlbmRzICcvJyB0byBDOi9kb3MvcGF0aHMKKyAgIyBmb3IgdGhlc2UgaG9zdHMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfFwKKyAgICAgICRTRUQgJ3MsL1woW1tBLVphLXpdXTpcKSxcMSxnJ2AgOzsKKyAgZXNhYworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkbHRfTkwyU1BgCiBlbHNlCiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKIGZpXSkKQEAgLTIxMTMsNyArMjI0Nyw3IEBACiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeDMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAKQEAgLTIxMjIsNyArMjI1Niw3IEBACiAgIDs7CiAKIGFpeFtbNC05XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTIxNzUsNyArMjMwOSw3IEBACiAgIG02OGspCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKICAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgotICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWBmdW5jX2VjaG9fYWxsICIkbGliIiB8ICRTRUQgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKICAgICA7OwogICBlc2FjCiAgIDs7CkBAIC0yMTg3LDcgKzIzMjEsNyBAQAogICA7OwogCiBic2RpW1s0NV1dKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwpAQCAtMjIwNiw4ICsyMzQwLDkgQEAKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCi0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisgIHllcywqKQorICAgICMgZ2NjCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCiAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CkBAIC0yMjI4LDM2ICsyMzYzLDgzIEBACiAgICAgY3lnd2luKikKICAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIC9saWIvdzMyYXBpIC9saWIgL3Vzci9sb2NhbC9saWIiCittNF9pZihbJDFdLCBbXSxbCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9saWIvdzMyYXBpIl0pCiAgICAgICA7OwogICAgIG1pbmd3KiB8IGNlZ2NjKikKICAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4CiAgICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8ICRHUkVQICJebGlicmFyaWVzOiIgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKLSAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAotICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCi0gICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKLSAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAotICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gICAgICBlbHNlCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0gICAgICBmaQogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwogICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCiAgICAgICA7OwogICAgIGVzYWMKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIDs7CisKKyAgKixjbCopCisgICAgIyBOYXRpdmUgTVNWQworICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisKKyAgICBjYXNlICRidWlsZF9vcyBpbgorICAgIG1pbmd3KikKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKyAgICAgIElGUz0nOycKKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKyAgICAgIGRvCisgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKyAgICAgIGRvbmUKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbW2EtekEtWl1dXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKyAgICAgIDs7CisgICAgY3lnd2luKikKKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgOzsKKyAgICAqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKyAgICAgIGVsc2UKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgZmkKKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgICAgJFJNIFwkZGxwYXRoJworICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCiAgICAgOzsKIAogICAqKQorICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCi0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgogICBzaGxpYnBhdGhfdmFyPVBBVEgKICAgOzsKQEAgLTIyNzgsNyArMjQ2MCw3IEBACiAgIDs7CiAKIGRndXgqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKQEAgLTIyODYsMTAgKzI0NjgsNiBAQAogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICA7OwogCi1mcmVlYnNkMSopCi0gIGR5bmFtaWNfbGlua2VyPW5vCi0gIDs7Ci0KIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKICAgIyBEcmFnb25GbHkgZG9lcyBub3QgaGF2ZSBhb3V0LiAgV2hlbi9pZiB0aGV5IGltcGxlbWVudCBhIG5ldwogICAjIHZlcnNpb25pbmcgbWVjaGFuaXNtLCBhZGp1c3QgdGhpcy4KQEAgLTIyOTcsNyArMjQ3NSw3IEBACiAgICAgb2JqZm9ybWF0PWAvdXNyL2Jpbi9vYmpmb3JtYXRgCiAgIGVsc2UKICAgICBjYXNlICRob3N0X29zIGluCi0gICAgZnJlZWJzZFtbMTIzXV0qKSBvYmpmb3JtYXQ9YW91dCA7OworICAgIGZyZWVic2RbWzIzXV0uKikgb2JqZm9ybWF0PWFvdXQgOzsKICAgICAqKSBvYmpmb3JtYXQ9ZWxmIDs7CiAgICAgZXNhYwogICBmaQpAQCAtMjMxNSw3ICsyNDkzLDcgQEAKICAgZXNhYwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X29zIGluCi0gIGZyZWVic2QyKikKKyAgZnJlZWJzZDIuKikKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgICAgOzsKICAgZnJlZWJzZDMuW1swMV1dKiB8IGZyZWVic2RlbGYzLltbMDFdXSopCkBAIC0yMzM1LDEyICsyNTEzLDI2IEBACiAgIDs7CiAKIGdudSopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwogICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCitoYWlrdSopCisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwogCkBAIC0yMzg2LDEyICsyNTc4LDE0IEBACiAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgICA7OwogICBlc2FjCi0gICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LgorICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NSwgLi4uCiAgIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDU1NSAkbGliJworICAjIG9yIGZhaWxzIG91dHJpZ2h0LCBzbyBvdmVycmlkZSBhdG9taWNhbGx5OgorICBpbnN0YWxsX292ZXJyaWRlX21vZGU9NTU1CiAgIDs7CiAKIGludGVyaXhbWzMtOV1dKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwpAQCAtMjQwNyw3ICsyNjAxLDcgQEAKICAgICBub25zdG9wdXgqKSB2ZXJzaW9uX3R5cGU9bm9uc3RvcHV4IDs7CiAgICAgKikKIAlpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCi0JCXZlcnNpb25fdHlwZT1saW51eAorCQl2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJZWxzZQogCQl2ZXJzaW9uX3R5cGU9aXJpeAogCWZpIDs7CkBAIC0yNDQ0LDkgKzI2MzgsOSBAQAogICBkeW5hbWljX2xpbmtlcj1ubwogICA7OwogCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyMgVGhpcyBtdXN0IGJlIGdsaWJjL0VMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwpAQCAtMjQ1NCwyOSArMjY0OCwzMSBAQAogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbiAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwogICAjIFNvbWUgYmludXRpbHMgbGQgYXJlIHBhdGNoZWQgdG8gc2V0IERUX1JVTlBBVEgKLSAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIHNhdmVfbGliZGlyPSRsaWJkaXIKLSAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKLSAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgotICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCi0gICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKLSAgICAgICBbc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKLSAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCi0gIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgQUNfQ0FDSEVfVkFMKFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGhdLAorICAgIFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgICBzYXZlX2xpYmRpcj0kbGliZGlyCisgICAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKKwkgTERGTEFHUz1cIlwkTERGTEFHUyAkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSlcIiIKKyAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCisgICAgICBbQVNfSUYoWyAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGxdLAorCSBbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKKyAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgICBsaWJkaXI9JHNhdmVfbGliZGlyCisgICAgXSkKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSRsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgKIAogICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KICAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCiAgICMgYmVmb3JlIHRoaXMgY2FuIGJlIGVuYWJsZWQuCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKIAotICAjIEFkZCBBQkktc3BlY2lmaWMgZGlyZWN0b3JpZXMgdG8gdGhlIHN5c3RlbSBsaWJyYXJ5IHBhdGguCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliNjQgL3Vzci9saWI2NCAvbGliIC91c3IvbGliIgotCiAgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKLSAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICRsdF9sZF9leHRyYSIKKyAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcWyRdMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXFskXTA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCiAgIGZpCiAKICAgIyBXZSB1c2VkIHRvIHRlc3QgZm9yIC9saWIvbGQuc28uMSBhbmQgZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCkBAIC0yNDg4LDYgKzI2ODQsMTggQEAKICAgZHluYW1pY19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKICAgOzsKIAorbmV0YnNkZWxmKi1nbnUpCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJworICA7OworCiBuZXRic2QqKQogICB2ZXJzaW9uX3R5cGU9c3Vub3MKICAgbmVlZF9saWJfcHJlZml4PW5vCkBAIC0yNTA3LDcgKzI3MTUsNyBAQAogICA7OwogCiBuZXdzb3M2KQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwpAQCAtMjU3Niw3ICsyNzg0LDcgQEAKICAgOzsKIAogc29sYXJpcyopCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC0yNjAxLDcgKzI4MDksNyBAQAogICA7OwogCiBzeXN2NCB8IHN5c3Y0LjMqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKQEAgLTI2MjUsNyArMjgzMyw3IEBACiAKIHN5c3Y0Kk1QKikKICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgotICAgIHZlcnNpb25fdHlwZT1saW51eAorICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwogICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0yNjU2LDcgKzI4NjQsNyBAQAogCiB0cGYqKQogICAjIFRQRiBpcyBhIGNyb3NzLXRhcmdldCBvbmx5LiAgUHJlZmVycmVkIGNyb3NzLWhvc3QgPSBHTlUvTGludXguCi0gIHZlcnNpb25fdHlwZT1saW51eAorICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCkBAIC0yNjY2LDcgKzI4NzQsNyBAQAogICA7OwogCiB1dHM0KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4CisgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCiAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICkBAIC0yNzA4LDYgKzI5MTYsOCBAQAogICAgIFRoZSBsYXN0IG5hbWUgaXMgdGhlIG9uZSB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2l0aCAtbE5BTUVdXSkKIF9MVF9ERUNMKFtdLCBbc29uYW1lX3NwZWNdLCBbMV0sCiAgICAgW1tUaGUgY29kZWQgbmFtZSBvZiB0aGUgbGlicmFyeSwgaWYgZGlmZmVyZW50IGZyb20gdGhlIHJlYWwgbmFtZV1dKQorX0xUX0RFQ0woW10sIFtpbnN0YWxsX292ZXJyaWRlX21vZGVdLCBbMV0sCisgICAgW1Blcm1pc3Npb24gbW9kZSBvdmVycmlkZSBmb3IgaW5zdGFsbGF0aW9uIG9mIHNoYXJlZCBsaWJyYXJpZXNdKQogX0xUX0RFQ0woW10sIFtwb3N0aW5zdGFsbF9jbWRzXSwgWzJdLAogICAgIFtDb21tYW5kIHRvIHVzZSBhZnRlciBpbnN0YWxsYXRpb24gb2YgYSBzaGFyZWQgYXJjaGl2ZV0pCiBfTFRfREVDTChbXSwgW3Bvc3R1bmluc3RhbGxfY21kc10sIFsyXSwKQEAgLTI4MjAsNiArMzAzMCw3IEBACiBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK200X3JlcXVpcmUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSlkbmwKIAogQUNfQVJHX1dJVEgoW2dudS1sZF0sCiAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZ251LWxkXSwKQEAgLTI5NDEsNiArMzE1MiwxMSBAQAogZXNhYwogcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogY2FzZSAkaG9zdF9vcyBpbgorICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgICByZWxvYWRfY21kcz1mYWxzZQorICAgIGZpCisgICAgOzsKICAgZGFyd2luKikKICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwpAQCAtMjk0OSw4ICszMTY1LDggQEAKICAgICBmaQogICAgIDs7CiBlc2FjCi1fTFRfREVDTChbXSwgW3JlbG9hZF9mbGFnXSwgWzFdLCBbSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlc10pZG5sCi1fTFRfREVDTChbXSwgW3JlbG9hZF9jbWRzXSwgWzJdKWRubAorX0xUX1RBR0RFQ0woW10sIFtyZWxvYWRfZmxhZ10sIFsxXSwgW0hvdyB0byBjcmVhdGUgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXNdKWRubAorX0xUX1RBR0RFQ0woW10sIFtyZWxvYWRfY21kc10sIFsyXSlkbmwKIF0pIyBfTFRfQ01EX1JFTE9BRAogCiAKQEAgLTMwMDIsMTYgKzMyMTgsMTggQEAKICAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQogICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKICAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgIyBmdW5jX3dpbjMyX2xpYmlkIGFzc3VtZXMgQlNEIG5tLCBzbyBkaXNhbGxvdyBpdCBpZiB1c2luZyBNUyBkdW1wYmluLgorICBpZiAoIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIkJTRCBubSIgJiYgZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCiAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwogICBmaQogICA7OwogCi1jZWdjYykKK2NlZ2NjKikKICAgIyB1c2UgdGhlIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJy4gU2VlIG1pbmd3Ki4KICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGUtYXJtLS4qbGl0dGxlKC4qYXJjaGl0ZWN0dXJlOiBhcm0pPycKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwpAQCAtMzA0MSw2ICszMjU5LDEwIEBACiAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCiAgIDs7CiAKK2hhaWt1KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKwogaHB1eDEwLjIwKiB8IGhwdXgxMSopCiAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPS91c3IvYmluL2ZpbGUKICAgY2FzZSAkaG9zdF9jcHUgaW4KQEAgLTMwNDksMTEgKzMyNzEsMTEgQEAKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9ocHV4MzIvbGliYy5zbwogICAgIDs7CiAgIGhwcGEqNjQqKQotICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XSddCisgICAgW2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRlsgLV1bMC05XVswLTldKSgtYml0KT8oIFtMTV1TQik/IHNoYXJlZCBvYmplY3QoIGZpbGUpP1ssIC1dKiBQQS1SSVNDIFswLTldXC5bMC05XSddCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCiAgICAgOzsKICAgKikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXS5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXVwuW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCiAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGliYy5zbAogICAgIDs7CiAgIGVzYWMKQEAgLTMwNzQsMTIgKzMyOTYsMTIgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKKyMgVGhpcyBtdXN0IGJlIGdsaWJjL0VMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotbmV0YnNkKikKK25ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfF9waWNcLmEpJCcKICAgZWxzZQpAQCAtMzE1Myw2ICszMzc1LDIxIEBACiAgIDs7CiBlc2FjCiBdKQorCitmaWxlX21hZ2ljX2dsb2I9Cit3YW50X25vY2FzZWdsb2I9bm8KK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgbWluZ3cqIHwgcHczMiopCisgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworICAgIGVsc2UKKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorICAgIGZpCisgICAgOzsKKyAgZXNhYworZmkKKwogZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgpAQCAtMzE2MCw3ICszMzk3LDExIEBACiBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAogICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCiBfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfY21kXSwgWzFdLAotICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCisgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2dsb2JdLCBbMV0sCisgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorICAgIFtGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQogXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKIAogCkBAIC0zMjE3LDcgKzM0NTgsMTkgQEAKICAgTk09IiRsdF9jdl9wYXRoX05NIgogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KLSAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgWyJkdW1wYmluIC1zeW1ib2xzIiAibGluayAtZHVtcCAtc3ltYm9scyJdLCA6KQorICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4gOgorICAgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBlbHNlCisgICAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgW2R1bXBiaW4gImxpbmsgLWR1bXAiXSwgOikKKyAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorICAgICpDT0ZGKikKKyAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIgorICAgICAgOzsKKyAgICAqKQorICAgICAgRFVNUEJJTj06CisgICAgICA7OworICAgIGVzYWMKKyAgZmkKICAgQUNfU1VCU1QoW0RVTVBCSU5dKQogICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCiAgICAgTk09IiREVU1QQklOIgpAQCAtMzIzMCwxMyArMzQ4MywxMyBAQAogQUNfQ0FDSEVfQ0hFQ0soW3RoZSBuYW1lIGxpc3RlciAoJE5NKSBpbnRlcmZhY2VdLCBbbHRfY3Zfbm1faW50ZXJmYWNlXSwKICAgW2x0X2N2X25tX2ludGVyZmFjZT0iQlNEIG5tIgogICBlY2hvICJpbnQgc29tZV92YXJpYWJsZSA9IDA7IiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGFjX2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIChldmFsICIkYWNfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIChldmFsICIkTk0gXCJjb25mdGVzdC4kYWNfb2JqZXh0XCIiIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0KQogICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiBvdXRwdXRcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgY2F0IGNvbmZ0ZXN0Lm91dCA+JkFTX01FU1NBR0VfTE9HX0ZECiAgIGlmICRHUkVQICdFeHRlcm5hbC4qc29tZV92YXJpYWJsZScgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJNUyBkdW1wYmluIgpAQCAtMzI1MSw2ICszNTA0LDY3IEBACiBkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQogCisjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisjIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGxpbmsgbGlicmFyeS4KKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCittNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzXSwKK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAorW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworCitjYXNlICRob3N0X29zIGluCitjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKyAgICA7OworICAqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworICAgIDs7CisgIGVzYWMKKyAgOzsKKyopCisgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIDs7Citlc2FjCitdKQorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCit0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisKK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisgICAgW0NvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXNdKQorXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisKKworIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbG9jYXRlIHRoZSBtYW5pZmVzdCB0b29sCittNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CitBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCisgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QqXSkKK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisgIE1BTklGRVNUX1RPT0w9OgorZmkKK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAorXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKwogCiAjIExUX0xJQl9NCiAjIC0tLS0tLS0tCkBAIC0zMjU5LDcgKzM1NzMsNyBAQAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIExJQk09CiBjYXNlICRob3N0IGluCi0qLSotYmVvcyogfCAqLSotY3lnd2luKiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQorKi0qLWJlb3MqIHwgKi0qLWNlZ2NjKiB8ICotKi1jeWd3aW4qIHwgKi0qLWhhaWt1KiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQogICAjIFRoZXNlIHN5c3RlbSBkb24ndCBoYXZlIGxpYm0sIG9yIGRvbid0IG5lZWQgaXQKICAgOzsKICotbmNyLXN5c3Y0LjMqKQpAQCAtMzI4Nyw3ICszNjAxLDEyIEBACiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CiAKIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgbnZjYyopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CisgICopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJyA7OworICBlc2FjCiAKICAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLAogICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zLApAQCAtMzMwNCw2ICszNjIzLDcgQEAKIG00X2RlZnVuKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtMzM3MSw4ICszNjkxLDggQEAKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAKICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgogCiAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KIG9wdF9jcj0KQEAgLTMzOTYsNiArMzcxNiw3IEBACiAgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLIFsnIlwKICIgICAgIHtsYXN0X3NlY3Rpb249c2VjdGlvbjsgc2VjdGlvbj1cJCAzfTsiXAorIiAgICAgL15DT0ZGIFNZTUJPTCBUQUJMRS97Zm9yKGkgaW4gaGlkZSkgZGVsZXRlIGhpZGVbaV19OyJcCiAiICAgICAvU2VjdGlvbiBsZW5ndGggLiojcmVsb2NzLioocGljayBhbnkpL3toaWRlW2xhc3Rfc2VjdGlvbl09MX07IlwKICIgICAgIFwkIDAhfi9FeHRlcm5hbCAqXHwve25leHR9OyJcCiAiICAgICAvIDArIFVOREVGIC97bmV4dH07IC8gVU5ERUYgXChbXnxdXCkqKCkve25leHR9OyJcCkBAIC0zNDA4LDYgKzM3MjksNyBAQAogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKICAgZmkKKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgogCiAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgogICBwaXBlX3dvcmtzPW5vCkBAIC0zNDI5LDcgKzM3NTEsNyBAQAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgogICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCi0gICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KKyAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgXD4gJG5saXN0KSAmJiB0ZXN0IC1zICIkbmxpc3QiOyB0aGVuCiAgICAgICAjIFRyeSBzb3J0aW5nIGFuZCB1bmlxdWlmeWluZyB0aGUgb3V0cHV0LgogICAgICAgaWYgc29ydCAiJG5saXN0IiB8IHVuaXEgPiAiJG5saXN0IlQ7IHRoZW4KIAltdiAtZiAiJG5saXN0IlQgIiRubGlzdCIKQEAgLTM0NDEsNiArMzc2MywxOCBAQAogICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorI2VsaWYgZGVmaW5lZChfX29zZl9fKQorLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKyNlbHNlCisjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC0zNDUyLDcgKzM3ODYsNyBAQAogCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAKIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLWNvbnN0IHN0cnVjdCB7CitMVEAmdEBfRExTWU1fQ09OU1Qgc3RydWN0IHsKICAgY29uc3QgY2hhciAqbmFtZTsKICAgdm9pZCAgICAgICAqYWRkcmVzczsKIH0KQEAgLTM0NzgsMTUgKzM4MTIsMTUgQEAKIF9MVF9FT0YKIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCiAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCiAJICBDRkxBR1M9IiRDRkxBR1MkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIgogCSAgaWYgQUNfVFJZX0VWQUwoYWNfbGluaykgJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogCSAgICBwaXBlX3dvcmtzPXllcwogCSAgZmkKLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKIAllbHNlCiAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECiAJZmkKQEAgLTM1MTksNiArMzg1MywxMyBAQAogICBBQ19NU0dfUkVTVUxUKG9rKQogZmkKIAorIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCitpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tbQF1dRklMRScgPi9kZXYvbnVsbDsgdGhlbgorICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKK2ZpCisKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3BpcGVdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZV0sIFsxXSwKICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFsxXSwKQEAgLTM1MjksNiArMzg3MCw4IEBACiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWRdKQorX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKKyAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQogXSkgIyBfTFRfQ01EX0dMT0JBTF9TWU1CT0xTCiAKIApAQCAtMzU0MCw3ICszODgzLDYgQEAKIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KIAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10pCiBtNF9pZihbJDFdLCBbQ1hYXSwgWwogICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCiAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCkBAIC0zNTkxLDYgKzM5MzMsMTEgQEAKICAgICAgICMgREpHUFAgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGF0IGFsbAogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogICAgICAgOzsKKyAgICBoYWlrdSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSGFpa3UuCisgICAgICAjIFRoZSAiLXN0YXRpYyIgZmxhZyBleGlzdHMsIGJ1dCBpcyBicm9rZW4uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9CisgICAgICA7OwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCiAgICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KQEAgLTM2NDAsNiArMzk4NywxMiBAQAogCSAgOzsKIAllc2FjCiAJOzsKKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworCSMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisJbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorCSAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisJOzsKICAgICAgIGRndXgqKQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBlYysrKikKQEAgLTM2OTYsNyArNDA0OSw3IEBACiAJICAgIDs7CiAJZXNhYwogCTs7Ci0gICAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBLQ0MqKQogCSAgICAjIEtBSSBDKysgQ29tcGlsZXIKQEAgLTM3MjksOCArNDA4Miw4IEBACiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKIAkgICAgOzsKLQkgIHhsYyogfCB4bEMqKQotCSAgICAjIElCTSBYTCA4LjAgb24gUFBDCisJICB4bGMqIHwgeGxDKiB8IGJneGxbW2NDXV0qIHwgbXBpeGxbW2NDXV0qKQorCSAgICAjIElCTSBYTCA4LjAsIDkuMCBvbiBQUEMgYW5kIEJsdWVHZW5lCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xcGljJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKQEAgLTM3NjAsNyArNDExMyw3IEBACiAJICAgIDs7CiAJZXNhYwogCTs7Ci0gICAgICBuZXRic2QqKQorICAgICAgbmV0YnNkKiB8IG5ldGJzZGVsZiotZ251KQogCTs7CiAgICAgICAqcW54KiB8ICpudG8qKQogICAgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQpAQCAtMzc5Miw3ICs0MTQ1LDcgQEAKIAk7OwogICAgICAgc29sYXJpcyopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKKwkgIENDKiB8IHN1bkNDKikKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwpAQCAtMzg5Niw2ICs0MjQ5LDEyIEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJwogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CisKICAgICBocHV4KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciA2NC1iaXQgUEEgSFAtVVgsIGJ1dCBub3QgZm9yIDMyLWJpdAogICAgICAgIyBQQSBIUC1VWC4gIE9uIElBNjQgSFAtVVgsIFBJQyBpcyB0aGUgZGVmYXVsdCBidXQgdGhlIHBpYyBmbGFnCkBAIC0zOTM4LDYgKzQyOTcsMTUgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCiAgICAgICA7OwogICAgIGVzYWMKKworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgbnZjYyopICMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVhsaW5rZXIgJworICAgICAgaWYgdGVzdCAtbiAiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSI7IHRoZW4KKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSItWGNvbXBpbGVyICRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkiCisgICAgICBmaQorICAgICAgOzsKKyAgICBlc2FjCiAgIGVsc2UKICAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMzk4MCw3ICs0MzQ4LDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAgICAgICA7OwogCi0gICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQpAQCAtNDAwMSw3ICs0MzY5LDEzIEBACiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwogCTs7Ci0gICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgIG5hZ2ZvciopCisJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJOzsKKyAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwpAQCAtNDAxMywyNSArNDM4Nyw0MCBAQAogICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKICAgICAgICAgOzsKLSAgICAgIHhsKikKLQkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisJIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xLCAxMS4xIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xcGljJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwogCTs7CiAgICAgICAqKQogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIENlcmVzXCBGb3J0cmFuKiB8ICpTdW4qRm9ydHJhbipcIFtbMS03XV0uKiB8ICpTdW4qRm9ydHJhbipcIDguW1swLTNdXSopCisJICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPScnCisJICA7OworCSpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKKwkgIDs7CiAJKlN1blwgQyopCiAJICAjIFN1biBDIDUuOQogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAkgIDs7Ci0JKlN1blwgRiopCi0JICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCi0JICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgICAqSW50ZWwqXCBbW0NGXV0qQ29tcGlsZXIqKQorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCSAgOzsKKwkqUG9ydGxhbmRcIEdyb3VwKikKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZnBpYycKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0JICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nJwogCSAgOzsKIAllc2FjCiAJOzsKQEAgLTQwNjMsNyArNDQ1Miw3IEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCisgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICc7OwogICAgICAgKikKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCc7OwpAQCAtNDEyMCw5ICs0NTA5LDExIEBACiAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSkiCiAgICAgOzsKIGVzYWMKLUFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCi0JW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQorCitBQ19DQUNIRV9DSEVDSyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSwKKyAgW19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0kX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCiAKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KQEAgLTQxNDEsNiArNDUzMiw4IEBACiBfTFRfVEFHREVDTChbcGljX2ZsYWddLCBbbHRfcHJvZ19jb21waWxlcl9waWNdLCBbMV0sCiAJW0FkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0c10pCiAKK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKICMKICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KICMKQEAgLTQxNjEsNiArNDU1NCw3IEBACiBtNF9kZWZ1bihbX0xUX0xJTktFUl9TSExJQlNdLAogW0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKQEAgLTQxNjksMjcgKzQ1NjMsNDAgQEAKIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQogICBjYXNlICRob3N0X29zIGluCiAgIGFpeFtbNC05XV0qKQogICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgogICAgICMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKyAgICAjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwgZGVmaW5lZAorICAgICMgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCiAgICAgaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBlbHNlCiAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBmaQogICAgIDs7CiAgIHB3MzIqKQogICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKLSAgOzsKKyAgICA7OwogICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQotICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSAgOzsKKyAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgIGNsKikKKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9J19OVUxMX0lNUE9SVF9ERVNDUklQVE9SfF9JTVBPUlRfREVTQ1JJUFRPUl8uKicKKyAgICAgIDs7CisgICAgKikKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKKyAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT1ubworICAgIDs7CiAgICopCiAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSAgOzsKKyAgICA7OwogICBlc2FjCi0gIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQogXSwgWwogICBydW5wYXRoX3Zhcj0KICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNDIwNCw3ICs0NjExLDYgQEAKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCkBAIC00MjQ5LDEwICs0NjU1LDM5IEBACiAgIG9wZW5ic2QqKQogICAgIHdpdGhfZ251X2xkPW5vCiAgICAgOzsKKyAgbGludXgqIHwgaypic2QqLWdudSB8IGdudSopCisgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KKyAgICA7OwogICBlc2FjCiAKICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKworICAjIE9uIHNvbWUgdGFyZ2V0cywgR05VIGxkIGlzIGNvbXBhdGlibGUgZW5vdWdoIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIKKyAgIyB0aGF0IHdlJ3JlIGJldHRlciBvZmYgdXNpbmcgdGhlIG5hdGl2ZSBpbnRlcmZhY2UgZm9yIGJvdGguCisgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPW5vCiAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgqKQorCSMgVGhlIEFJWCBwb3J0IG9mIEdOVSBsZCBoYXMgYWx3YXlzIGFzcGlyZWQgdG8gY29tcGF0aWJpbGl0eQorCSMgd2l0aCB0aGUgbmF0aXZlIGxpbmtlci4gIEhvd2V2ZXIsIGFzIHRoZSB3YXJuaW5nIGluIHRoZSBHTlUgbGQKKwkjIGJsb2NrIHNheXMsIHZlcnNpb25zIGJlZm9yZSAyLjE5LjUqIGNvdWxkbid0IHJlYWxseSBjcmVhdGUgd29ya2luZworCSMgc2hhcmVkIGxpYnJhcmllcywgcmVnYXJkbGVzcyBvZiB0aGUgaW50ZXJmYWNlIHVzZWQuCisJY2FzZSBgJExEIC12IDI+JjFgIGluCisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi4xOS41KikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCAyLltbMi05XV0qKSA7OworCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIFtbMy05XV0qKSA7OworCSAgKikKKwkgICAgbHRfdXNlX2dudV9sZF9pbnRlcmZhY2U9eWVzCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICAqKQorCWx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCTs7CisgICAgZXNhYworICBmaQorCisgIGlmIHRlc3QgIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSIgPSB5ZXM7IHRoZW4KICAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQogICAgIHdsYXJjPScke3dsfScKIApAQCAtNDI3MCw2ICs0NzA1LDcgQEAKICAgICBmaQogICAgIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz1ubwogICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgorICAgICAgKkdOVVwgZ29sZCopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsKICAgICAgICpcIFtbMDFdXS4qIHwgKlwgMi5bWzAtOV1dLiogfCAqXCAyLjEwLiopIDs7ICMgY2F0Y2ggdmVyc2lvbnMgPCAyLjExCiAgICAgICAqXCAyLjExLjkzLjAuMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIFJINy4zIC4uLgogICAgICAgKlwgMi4xMS45Mi4wLjEyXCAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7ICMgTWFuZHJha2UgOC4yIC4uLgpAQCAtNDI4NSwxMSArNDcyMSwxMiBAQAogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KIAljYXQgPDxfTFRfRU9GIDE+JjIKIAotKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuOS4xLCBpcyByZXBvcnRlZAorKioqIFdhcm5pbmc6IHRoZSBHTlUgbGlua2VyLCBhdCBsZWFzdCB1cCB0byByZWxlYXNlIDIuMTksIGlzIHJlcG9ydGVkCiAqKiogdG8gYmUgdW5hYmxlIHRvIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIEFJWC4KICoqKiBUaGVyZWZvcmUsIGxpYnRvb2wgaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIElmIHlvdQotKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gbW9kaWZ5IHlvdXIgUEFUSAotKioqIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZCwgYW5kIHRoZW4gcmVzdGFydC4KKyoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIGluc3RhbGwgYmludXRpbHMKKyoqKiAyLjIwIG9yIGFib3ZlLCBvciBtb2RpZnkgeW91ciBQQVRIIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZC4KKyoqKiBZb3Ugd2lsbCB0aGVuIG5lZWQgdG8gcmVzdGFydCB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLgogCiBfTFRfRU9GCiAgICAgICBmaQpAQCAtNDMyNSwxMCArNDc2MiwxMiBAQAogICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAogICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwogICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQogCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCiAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwpAQCAtNDM0Niw2ICs0Nzg1LDExIEBACiAgICAgICBmaQogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICA7OworCiAgICAgaW50ZXJpeFtbMy05XV0qKQogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KQEAgLTQzNjEsNyArNDgwNSw3IEBACiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKICAgICAgIDs7CiAKLSAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUpCisgICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICB0bXBfZGlldD1ubwogICAgICAgaWYgdGVzdCAiJGhvc3Rfb3MiID0gbGludXgtZGlldGxpYmM7IHRoZW4KIAljYXNlICRjY19iYXNlbmFtZSBpbgpAQCAtNDM3MSwxNSArNDgxNSwxNiBAQAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEVHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGwgXAogCSAmJiB0ZXN0ICIkdG1wX2RpZXQiID0gbm8KICAgICAgIHRoZW4KLQl0bXBfYWRkZmxhZz0KKwl0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAl0bXBfc2hhcmVkZmxhZz0nLXNoYXJlZCcKIAljYXNlICRjY19iYXNlbmFtZSwkaG9zdF9jcHUgaW4KICAgICAgICAgcGdjYyopCQkJCSMgUG9ydGxhbmQgR3JvdXAgQyBjb21waWxlcgotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJICA7OwotCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisJCQkJCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJwogCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcgLU1ub21haW4nIDs7CiAJZWNjKixpYTY0KiB8IGljYyosaWE2NCopCSMgSW50ZWwgQyBjb21waWxlciBvbiBpYTY0CiAJICB0bXBfYWRkZmxhZz0nIC1pX2R5bmFtaWMnIDs7CkBAIC00MzkwLDEzICs0ODM1LDE3IEBACiAJbGY5NSopCQkJCSMgTGFoZXkgRm9ydHJhbiA4LjEKIAkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KIAkgIHRtcF9zaGFyZWRmbGFnPSctLXNoYXJlZCcgOzsKLQl4bFtbY0NdXSopCQkJIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQorCXhsW1tjQ11dKiB8IGJneGxbW2NDXV0qIHwgbXBpeGxbW2NDXV0qKSAjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCiAJICB0bXBfc2hhcmVkZmxhZz0nLXFta3Nocm9iaicKIAkgIHRtcF9hZGRmbGFnPSA7OworCW52Y2MqKQkjIEN1ZGEgQ29tcGlsZXIgRHJpdmVyIDIuMgorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCisJICA7OwogCWVzYWMKIAljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KIAkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCiAJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CiAJKlN1blwgRiopCQkJIyBTdW4gRm9ydHJhbiA4LjMKQEAgLTQ0MTIsMTcgKzQ4NjEsMTYgQEAKICAgICAgICAgZmkKIAogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JeGxmKikKKwl4bGYqIHwgYmdmKiB8IGJneGxmKiB8IG1waXhsZiopCiAJICAjIElCTSBYTCBGb3J0cmFuIDEwLjEgb24gUFBDIGNhbm5vdCBjcmVhdGUgc2hhcmVkIGxpYnMgaXRzZWxmCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0JICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLQkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPSctcnBhdGggJGxpYmRpcicKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwogCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtNDQzMSwxMyArNDg3OSwxMyBAQAogICAgICAgZmkKICAgICAgIDs7CiAKLSAgICBuZXRic2QqKQorICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtNDQ1NSw4ICs0OTAzLDggQEAKIAogX0xUX0VPRgogICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCkBAIC00NTAyLDggKzQ5NTAsOCBAQAogCiAgICAgKikKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ1NDMsOCArNDk5MSwxMCBAQAogICAgICAgZWxzZQogCSMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgogCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKwkjIEFsc28sIEFJWCBubSB0cmVhdHMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwKKwkjIGRlZmluZWQgc3ltYm9scywgd2hlcmVhcyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCiAJaWYgJE5NIC1WIDI+JjEgfCAkR1JFUCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAllbHNlCiAJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKIAlmaQpAQCAtNDYwNiw2ICs1MDU2LDcgQEAKIAlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KIAkgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJwogCWZpCisJX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KICAgICAgIGVsc2UKIAkjIG5vdCB1c2luZyBnY2MKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgpAQCAtNDYzMSw5ICs1MDgyLDkgQEAKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLSAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKyAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCiAgICAgICBlbHNlCiAJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTQ2NDIsMTQgKzUwOTMsMTkgQEAKIAllbHNlCiAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0JIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAJIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KIAkgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwogCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICAjIFdlIG9ubHkgdXNlIHRoaXMgY29kZSBmb3IgR05VIGxkcyB0aGF0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlLgorCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgZWxzZQorCSAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICBmaQogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwogCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCkBAIC00NjgxLDIwICs1MTM3LDY0IEBACiAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgogICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwogICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJwotICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotICAgICAgbGliZXh0PWxpYgotICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgJEVDSE8gIlgkZGVwbGlicyIgfCAkWHNlZCAtZSAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwotICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0gICAgICBfTFRfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKT0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0gICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICBjbCopCisJIyBOYXRpdmUgTVNWQworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorCV9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisJbGliZXh0PWxpYgorCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCXNocmV4dF9jbWRzPSIuZGxsIgorCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGVsc2UKKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKwkgIGZpfgorCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorCSAgbGlua25hbWVzPScKKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKwlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPSdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUnxfSU1QT1JUX0RFU0NSSVBUT1JfLionCisJX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworCSMgRG9uJ3QgdXNlIHJhbmxpYgorCV9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisJX0xUX1RBR1ZBUihwb3N0bGlua19jbWRzLCAkMSk9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisJICAgICouZXhlfCouRVhFKSA7OworCSAgICAqKQorCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorCSAgICAgIDs7CisJICBlc2FjfgorCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisJICBmaScKKwk7OworICAgICAgKikKKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorCWxpYmV4dD1saWIKKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKwlzaHJleHRfY21kcz0iLmRsbCIKKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorCV9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQpAQCAtNDcwNywxMCArNTIwNyw2IEBACiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwogICAgICAgOzsKIAotICAgIGZyZWVic2QxKikKLSAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgIDs7Ci0KICAgICAjIEZyZWVCU0QgMi4yLlswMTJdIGFsbG93cyB1cyB0byBpbmNsdWRlIGMrK3J0MC5vIHRvIGdldCBDKysgY29uc3RydWN0b3IKICAgICAjIHN1cHBvcnQuICBGdXR1cmUgdmVyc2lvbnMgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LCBidXQgYW4gZXhwbGljaXQgYysrcnQwLm8KICAgICAjIGRvZXMgbm90IGJyZWFrIGFueXRoaW5nLCBhbmQgaGVscHMgc2lnbmlmaWNhbnRseSAoYXQgdGhlIGNvc3Qgb2YgYSBsaXR0bGUKQEAgLTQ3MjMsNyArNTIxOSw3IEBACiAgICAgICA7OwogCiAgICAgIyBVbmZvcnR1bmF0ZWx5LCBvbGRlciB2ZXJzaW9ucyBvZiBGcmVlQlNEIDIgZG8gbm90IGhhdmUgdGhpcyBmZWF0dXJlLgotICAgIGZyZWVic2QyKikKKyAgICBmcmVlYnNkMi4qKQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKQEAgLTQ3MzIsNyArNTIyOCw3IEBACiAKICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00NzQwLDcgKzUyMzYsNyBAQAogCiAgICAgaHB1eDkqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZmkKQEAgLTQ3NTUsMTQgKzUyNTEsMTMgQEAKICAgICAgIDs7CiAKICAgICBocHV4MTAqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgLWEgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKLQlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nK2IgJGxpYmRpcicKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcwpAQCAtNDc3NCwxNiArNTI2OSwxNiBAQAogICAgICAgOzsKIAogICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAljYXNlICRob3N0X2NwdSBpbgogCWhwcGEqNjQqKQogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWVzYWMKICAgICAgIGVsc2UKQEAgLTQ3OTUsNyArNTI5MCwxNCBAQAogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJbTRfaWYoJDEsIFtdLCBbCisJICAjIE9sZGVyIHZlcnNpb25zIG9mIHRoZSAxMS4wMCBjb21waWxlciBkbyBub3QgdW5kZXJzdGFuZCAtYiB5ZXQKKwkgICMgKEhQOTI0NTMtMDEgQS4xMS4wMS4yMCBkb2Vzbid0LCBIUDkyNDUzLTAxIEIuMTEuWC4zNTE3NS0zNTE3Ni5HUCBkb2VzKQorCSAgX0xUX0xJTktFUl9PUFRJT04oW2lmICRDQyB1bmRlcnN0YW5kcyAtYl0sCisJICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9fYiwgJDEpLCBbLWJdLAorCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSwKKwkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnXSldLAorCSAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10pCiAJICA7OwogCWVzYWMKICAgICAgIGZpCkBAIC00ODIzLDE5ICs1MzI1LDM0IEBACiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CiAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAogCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICAgKQotICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisJQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2xdLAorCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKKwkgIFtzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKwkgICBBQ19MSU5LX0lGRUxTRSgKKwkgICAgIFtBQ19MQU5HX1NPVVJDRSgKKwkgICAgICAgIFtBQ19MQU5HX0NBU0UoW0NdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKwkJCSAgICAgIFtDKytdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKwkJCSAgICAgIFtGb3J0cmFuIDc3XSwgW1sKKyAgICAgIHN1YnJvdXRpbmUgZm9vCisgICAgICBlbmRdXSwKKwkJCSAgICAgIFtGb3J0cmFuXSwgW1sKKyAgICAgIHN1YnJvdXRpbmUgZm9vCisgICAgICBlbmRdXSldKV0sCisJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllc10sCisJICAgICAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vXSkKKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQorCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlmaQogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKQEAgLTQ4NDQsNyArNTM2MSw3IEBACiAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKICAgICAgIDs7CiAKLSAgICBuZXRic2QqKQorICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKICAgICAgIGVsc2UKQEAgLTQ4OTcsMTcgKzU0MTQsMTcgQEAKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKICAgICAgIDs7CiAKICAgICBvc2YzKikKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtNDkxNywxMyArNTQzNCwxMyBAQAogICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmU7IHByaW50ZiAiJXNcXG4iICItaGlkZGVuIj4+ICRsaWIuZXhwfgotCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJworCSRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAkY29tcGlsZXJfZmxhZ3MgJGxpYm9ianMgJGRlcGxpYnMgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJwogCiAJIyBCb3RoIGMgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKQEAgLTQ5MzYsOSArNTQ1Myw5IEBACiAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAteiBkZWZzJwogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAl3bGFyYz0nJHt3bH0nCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAgICAgICBlbHNlCiAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAJKiJDb21waWxlcnMgNS4wIiopCkBAIC01MTE0LDM2ICs1NjMxLDM4IEBACiAgICAgICAjIFRlc3Qgd2hldGhlciB0aGUgY29tcGlsZXIgaW1wbGljaXRseSBsaW5rcyB3aXRoIC1sYyBzaW5jZSBvbiBzb21lCiAgICAgICAjIHN5c3RlbXMsIC1sZ2NjIGhhcyB0byBjb21lIGJlZm9yZSAtbGMuIElmIGdjYyBhbHJlYWR5IHBhc3NlcyAtbGMKICAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgotICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dKQotICAgICAgJFJNIGNvbmZ0ZXN0KgotICAgICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluXSwKKwlbbHRfY3ZfXV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKSwKKwlbJFJNIGNvbmZ0ZXN0KgorCWVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogCi0gICAgICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICBzb25hbWU9Y29uZnRlc3QKLSAgICAgICAgbGliPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAotICAgICAgICBkZXBsaWJzPQotICAgICAgICB3bD0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKLQlwaWNfZmxhZz0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPS12Ci0gICAgICAgIGxpbmtlcl9mbGFncz0tdgotICAgICAgICB2ZXJzdHJpbmc9Ci0gICAgICAgIG91dHB1dF9vYmpkaXI9LgotICAgICAgICBsaWJuYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQotICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci0gICAgICAgIGlmIEFDX1RSWV9FVkFMKF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjEpCi0gICAgICAgIHRoZW4KLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgICAgICBlbHNlCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCi0gICAgICAgIGZpCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZwotICAgICAgZWxzZQotICAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JjUKLSAgICAgIGZpCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpXSkKKwlpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgorCSAgc29uYW1lPWNvbmZ0ZXN0CisJICBsaWI9Y29uZnRlc3QKKwkgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAorCSAgZGVwbGlicz0KKwkgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQorCSAgcGljX2ZsYWc9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKQorCSAgY29tcGlsZXJfZmxhZ3M9LXYKKwkgIGxpbmtlcl9mbGFncz0tdgorCSAgdmVyc3RyaW5nPQorCSAgb3V0cHV0X29iamRpcj0uCisJICBsaWJuYW1lPWNvbmZ0ZXN0CisJICBsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnPSRfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KKwkgIGlmIEFDX1RSWV9FVkFMKF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8ICRHUkVQIFwiIC1sYyBcIiBcPi9kZXYvbnVsbCAyXD5cJjEpCisJICB0aGVuCisJICAgIGx0X2N2X1tdX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisJICBlbHNlCisJICAgIGx0X2N2X1tdX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcworCSAgZmkKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0kbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZworCWVsc2UKKwkgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorCWZpCisJJFJNIGNvbmZ0ZXN0KgorCV0pCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9JGx0X2N2X1tdX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpCiAgICAgICA7OwogICAgIGVzYWMKICAgZmkKQEAgLTUxODAsOSArNTY5OSw2IEBACiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNdLCBbMV0sCiAgICAgW0ZsYWcgdG8gaGFyZGNvZGUgJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgogICAgIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgJGxpYmRpciBkb2VzIG5vdCBleGlzdF0pCi1fTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRdLCBbMV0sCi0gICAgW1tJZiBsZCBpcyB1c2VkIHdoZW4gbGlua2luZywgZmxhZyB0byBoYXJkY29kZSAkbGliZGlyIGludG8gYSBiaW5hcnkKLSAgICBkdXJpbmcgbGlua2luZy4gIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgJGxpYmRpciBkb2VzIG5vdCBleGlzdF1dKQogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yXSwgWzFdLAogICAgIFtXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgIi1ycGF0aCIgZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50XSkKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfZGlyZWN0XSwgWzBdLApAQCAtNTIwOCw4ICs1NzI0LDYgQEAKICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCiBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCiAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCi1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCi0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCiBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKQEAgLTUyMjAsNiArNTczNCw4IEBACiAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCiBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQorX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAorICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCiAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCiBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTUzMTMsMTQgKzU4MjksMTUgQEAKIF0pIyBfTFRfTEFOR19DX0NPTkZJRwogCiAKLSMgX0xUX1BST0dfQ1hYCi0jIC0tLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0NYWCBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyBnKysgaWYgdGhlcmUgaXMgbm8gYysrCi0jIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0NYWF0sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzXSkKLUFDX1BST0dfQ1hYCisjIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5CisjIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKKyMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCiBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgogICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAogICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgpAQCAtNTMyOCwyMiArNTg0NSw2IEBACiBlbHNlCiAgIF9sdF9jYXVnaHRfQ1hYX2Vycm9yPXllcwogZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19DWFgKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19DWFhdLCBbXSkKLQotCi0jIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5Ci0jIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKLSMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0NYWF0pZG5sCi1tNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLW00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKIAogQUNfTEFOR19QVVNIKEMrKykKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwpAQCAtNTM1NSw3ICs1ODU2LDYgQEAKIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZApAQCAtNTM2NSw2ICs1ODY1LDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTUzOTYsNiArNTg5OCw3IEBACiAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0kQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBsdF9zYXZlX0xEPSRMRAogICBsdF9zYXZlX0dDQz0kR0NDCiAgIEdDQz0kR1hYCkBAIC01NDEzLDYgKzU5MTYsNyBAQAogICBmaQogICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAogICBDQz0ke0NYWC0iYysrIn0KKyAgQ0ZMQUdTPSRDWFhGTEFHUwogICBjb21waWxlcj0kQ0MKICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC01NDM0LDggKzU5MzgsOCBAQAogICAgICAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCiAgICAgICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KICAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01NDY3LDcgKzU5NzEsNyBAQAogICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCiAgICAgZWxzZQogICAgICAgR1hYPW5vCkBAIC01NTc2LDEwICs2MDgwLDEwIEBACiAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCiAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CiAgICAgICAgICAgIyBleGVjdXRhYmxlLgotICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgICAgZWxzZQogICAgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTU1ODgsMTQgKzYwOTIsMTkgQEAKICAgICAgICAgICBlbHNlCiAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwogCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBlbHNlCisJICAgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKIAkgICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkCiAJICAgICMgbGlicmFyaWVzLgpAQCAtNTYyNSwyOCArNjEzNCw3NSBAQAogICAgICAgICA7OwogCiAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKwksY2wqIHwgbm8sY2wqKQorCSAgIyBOYXRpdmUgTVNWQworCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwkgIGxpYmV4dD1saWIKKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgICBlbHNlCisJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICAgIGZpfgorCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICAgIGxpbmtuYW1lcz0nCisJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJICAjIERvbid0IHVzZSByYW5saWIKKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisJICAgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICAgKikKKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorCQk7OworCSAgICBlc2FjfgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisJICAgIGZpJworCSAgOzsKKwkqKQorCSAgIyBnKysKKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwogCi0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgICAgICBlbHNlCi0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotICAgICAgICAgIGZpfgotICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICAgZWxzZQotICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICAgZmkKLSAgICAgICAgOzsKKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgZWxzZQorCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgIGZpfgorCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICBlbHNlCisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIGZpCisJICA7OworCWVzYWMKKwk7OwogICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCiAJOzsKQEAgLTU2NjksNyArNjIyNSw3IEBACiAgICAgICAgIGVzYWMKICAgICAgICAgOzsKIAotICAgICAgZnJlZWJzZFtbMTJdXSopCisgICAgICBmcmVlYnNkMi4qKQogICAgICAgICAjIEMrKyBzaGFyZWQgbGlicmFyaWVzIHJlcG9ydGVkIHRvIGJlIGZhaXJseSBicm9rZW4gYmVmb3JlCiAJIyBzd2l0Y2ggdG8gRUxGCiAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KQEAgLTU2ODgsNiArNjI0NCwxMSBAQAogICAgICAgZ251KikKICAgICAgICAgOzsKIAorICAgICAgaGFpa3UqKQorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICAgIDs7CisKICAgICAgIGhwdXg5KikKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CkBAIC01NzEyLDExICs2MjczLDExIEBACiAgICAgICAgICAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogICAgICAgICAgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisgICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKICAgICAgICAgICAgIDs7CiAgICAgICAgICAgKikKICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC01Nzc3LDcgKzYzMzgsNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAkgICAgOzsKICAgICAgICAgICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtNTc4NywxMCArNjM0OCwxMCBAQAogCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICBpYTY0KikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICAqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgZXNhYwogCSAgICAgIGZpCkBAIC01ODIwLDcgKzYzODEsNyBAQAogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKIAkgICAgIyBTR0kgQysrCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNTgzMSw5ICs2MzkyLDkgQEAKICAgICAgICAgICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgZWxzZQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCiAJICAgICAgZmkKIAkgICAgZmkKIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCkBAIC01ODQ0LDcgKzY0MDUsNyBAQAogICAgICAgICBfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT15ZXMKICAgICAgICAgOzsKIAotICAgICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgICBLQ0MqKQogCSAgICAjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCkBAIC01ODYyLDcgKzY0MjMsNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU4OTksMjYgKzY0NjAsMjYgQEAKICAgICAgICAgICBwZ0NDKiB8IHBnY3BwKikKICAgICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgQysrIGNvbXBpbGVyCiAJICAgIGNhc2UgYCRDQyAtVmAgaW4KLQkgICAgKnBnQ0NcIFtbMS01XV0qIHwgKnBnY3BwXCBbWzEtNV1dKikKKwkgICAgKnBnQ0NcIFtbMS01XV0uKiB8ICpwZ2NwcFwgW1sxLTVdXS4qKQogCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgogCQkkUkFOTElCICRvbGRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKLQkgICAgKikgIyBWZXJzaW9uIDYgd2lsbCB1c2Ugd2VhayBzeW1ib2xzCisJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKQEAgLTU5MjYsNyArNjQ4Nyw3IEBACiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1ycGF0aCAke3dsfSRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAgICAgICAgICAgICA7OwogCSAgY3h4KikKIAkgICAgIyBDb21wYXEgQysrCkBAIC01OTQ1LDkgKzY1MDYsOSBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCiAJICAgIDs7Ci0JICB4bCopCisJICB4bCogfCBtcGl4bCogfCBiZ3hsKikKIAkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQywgd2l0aCBHTlUgbGQKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTk2NywxMyArNjUyOCwxMyBAQAogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMnCiAJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLQkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCiAJICAgICAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgogCSAgICAgICMgJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEKIAkgICAgICAjIHdvdWxkIGJlIGJldHRlci4KLQkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZnVuY19lY2hvX2FsbCcKIAogCSAgICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjA0Miw3ICs2NjAzLDcgQEAKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKIAkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwogCSAgZmkKLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKwkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKIAllbHNlCiAJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJZmkKQEAgLTYwNzcsMTUgKzY2MzgsMTUgQEAKIAkgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgIG9zZjMqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKIAkJOzsKIAkgICAgICAqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZX4KIAkgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgorCSAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+CiAJICAgICAgICAgICRSTSAkbGliLmV4cCcKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKIAkJOzsKQEAgLTYxMDEsMTcgKzY2NjIsMTcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiIHwgJEdSRVAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAgIG9zZjMqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICAgICopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICBlc2FjCiAKQEAgLTYxMjEsNyArNjY4Miw3IEBACiAJICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAogCSAgICBlbHNlCiAJICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CkBAIC02MTU3LDcgKzY3MTgsNyBAQAogCiAgICAgICBzb2xhcmlzKikKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgICBDQyopCisgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQogCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwpAQCAtNjE3OCw3ICs2NzM5LDcgQEAKIAkgICAgZXNhYwogCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKIAotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2Z1bmNfZWNob19hbGwnCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjE5OCwxNCArNjc1OSwxNCBAQAogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGVsc2UKIAkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKIAkgICAgICAgICMgcGxhdGZvcm0uCkBAIC02MjE2LDcgKzY3NzcsNyBAQAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAJICAgICAgZmkKIAogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCkBAIC02MjcwLDYgKzY4MzEsMTAgQEAKICAgICAgICAgICBDQyopCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1UcHJlbGlua19vYmplY3RzICRvbGRvYmpzfgorCSAgICAgICciJF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIgorCSAgICBfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkcmVsb2FkX29ianN+CisJICAgICAgJyIkX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpIgogCSAgICA7OwogCSAgKikKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwpAQCAtNjMyNSw2ICs2ODkwLDcgQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgQ0M9JGx0X3NhdmVfQ0MKKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogICBMRENYWD0kTEQKICAgTEQ9JGx0X3NhdmVfTEQKICAgR0NDPSRsdF9zYXZlX0dDQwpAQCAtNjMzOSw2ICs2OTA1LDI5IEBACiBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRwogCiAKKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjCisjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAorIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCittNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAorQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQoreworICBjYXNlICR7Mn0gaW4KKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWVfY25mCitdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorCiAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKQEAgLTYzNDcsNiArNjkzNiw3IEBACiAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAogIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9CkBAIC02Mzk2LDcgKzY5ODYsMjAgQEAKICAgfQogfTsKIF9MVF9FT0YKK10sIFskMV0sIFtHT10sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorcGFja2FnZSBmb28KK2Z1bmMgZm9vKCkgeworfQorX0xUX0VPRgogXSkKKworX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUworY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAorKlwgLWZsdG8qXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby1sdG8iIDs7CisqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7CisqXCAtZnVzZS1saW5rZXItcGx1Z2luKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tdXNlLWxpbmtlci1wbHVnaW4iIDs7Citlc2FjCisKIGRubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKIGRubCBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCiBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgpAQCAtNjQwOCw3ICs3MDExLDcgQEAKICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwogCiAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLSAgICBjYXNlICRwIGluCisgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgogCiAgICAgLUwqIHwgLVIqIHwgLWwqKQogICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCkBAIC02NDE3LDEzICs3MDIwLDIyIEBACiAgICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KIAkgcHJldj0kcAogCSBjb250aW51ZQotICAgICAgIGVsc2UKLQkgcHJldj0KICAgICAgICBmaQogCisgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKyAgICAgICAgIGNhc2UgJHAgaW4KKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgLWwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1sJyAnJyAiJHAiOyBwcmV2PS1sOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIGVzYWMKKyAgICAgICBmaQorICAgICAgIGNhc2UgJHAgaW4KKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgIGVzYWMKICAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgotCSBjYXNlICRwIGluCi0JIC1MKiB8IC1SKikKKwkgY2FzZSAke3ByZXZ9IGluCisJIC1MIHwgLVIpCiAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCiAJICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCiAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCkBAIC02NDQzLDggKzcwNTUsMTAgQEAKIAkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7X0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpfSAke3ByZXZ9JHtwfSIKIAkgZmkKICAgICAgICBmaQorICAgICAgIHByZXY9CiAgICAgICAgOzsKIAorICAgICoubHRvLiRvYmpleHQpIDs7ICMgSWdub3JlIEdDQyBMVE8gb2JqZWN0cwogICAgICouJG9iamV4dCkKICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKICAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KQEAgLTY0ODAsNiArNzA5NCw3IEBACiBmaQogCiAkUk0gLWYgY29uZmVzdC4kb2JqZXh0CitDRkxBR1M9JF9sdF9saWJkZXBzX3NhdmVfQ0ZMQUdTCiAKICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCiBtNF9pZihbJDFdLCBbQ1hYXSwKQEAgLTY1MTYsNyArNzEzMSw3IEBACiAKIHNvbGFyaXMqKQogICBjYXNlICRjY19iYXNlbmFtZSBpbgotICBDQyopCisgIENDKiB8IHN1bkNDKikKICAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCkBAIC02NTYwLDMyICs3MTc1LDE2IEBACiBdKSMgX0xUX1NZU19ISURERU5fTElCREVQUwogCiAKLSMgX0xUX1BST0dfRjc3Ci0jIC0tLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0Y3NyBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nCi0jIGlmIHRoZXJlIGlzIG5vIGZvcnRyYW4gY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCi1tNF9kZWZ1bihbX0xUX1BST0dfRjc3XSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfZGlzYWJsZV9GNzc9eWVzXSkKLUFDX1BST0dfRjc3Ci1pZiB0ZXN0IC16ICIkRjc3IiB8fCB0ZXN0ICJYJEY3NyIgPSAiWG5vIjsgdGhlbgotICBfbHRfZGlzYWJsZV9GNzc9eWVzCi1maQotcG9wZGVmKFtBQ19NU0dfRVJST1JdKQotXSkjIF9MVF9QUk9HX0Y3NwotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0Y3N10sIFtdKQotCi0KICMgX0xUX0xBTkdfRjc3X0NPTkZJRyhbVEFHXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gNzcgY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKICMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0Y3N19DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0Y3N10pZG5sCi1BQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKK1tBQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKK2lmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCisgIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKK2ZpCiAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNjU5NSw3ICs3MTk0LDYgQEAKIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPW5vCkBAIC02NjA0LDYgKzcyMDIsOCBAQAogX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CiBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwpAQCAtNjY0Myw3ICs3MjQzLDkgQEAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0iJENDIgogICBsdF9zYXZlX0dDQz0kR0NDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0M9JHtGNzctImY3NyJ9CisgIENGTEFHUz0kRkZMQUdTCiAgIGNvbXBpbGVyPSRDQwogICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTY2OTcsMzggKzcyOTksMjQgQEAKIAogICBHQ0M9JGx0X3NhdmVfR0NDCiAgIENDPSIkbHRfc2F2ZV9DQyIKKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCiBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcwogCiBBQ19MQU5HX1BPUAogXSkjIF9MVF9MQU5HX0Y3N19DT05GSUcKIAogCi0jIF9MVF9QUk9HX0ZDCi0jIC0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRkMgaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZwotIyBpZiB0aGVyZSBpcyBubyBmb3J0cmFuIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0ZDXSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfZGlzYWJsZV9GQz15ZXNdKQotQUNfUFJPR19GQwotaWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0ICJYJEZDIiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0ZDPXllcwotZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19GQwotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0ZDXSwgW10pCi0KLQogIyBfTFRfTEFOR19GQ19DT05GSUcoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKICMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0ZDX0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRkNdKWRubAotQUNfTEFOR19QVVNIKEZvcnRyYW4pCitbQUNfTEFOR19QVVNIKEZvcnRyYW4pCisKK2lmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgorICBfbHRfZGlzYWJsZV9GQz15ZXMKK2ZpCiAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNjczOCw3ICs3MzI2LDYgQEAKIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CiBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCiBfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPW5vCkBAIC02NzQ3LDYgKzczMzQsOCBAQAogX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CiBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwpAQCAtNjc4Niw3ICs3Mzc1LDkgQEAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0iJENDIgogICBsdF9zYXZlX0dDQz0kR0NDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0M9JHtGQy0iZjk1In0KKyAgQ0ZMQUdTPSRGQ0ZMQUdTCiAgIGNvbXBpbGVyPSRDQwogICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQogCkBAIC02ODQyLDcgKzc0MzMsOCBAQAogICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKIAogICBHQ0M9JGx0X3NhdmVfR0NDCi0gIENDPSIkbHRfc2F2ZV9DQyIKKyAgQ0M9JGx0X3NhdmVfQ0MKKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllcwogCiBBQ19MQU5HX1BPUApAQCAtNjg3OSwxMCArNzQ3MSwxMiBAQAogX0xUX0xJTktFUl9CT0lMRVJQTEFURQogCiAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9DQz0kQ0MKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGx0X3NhdmVfR0NDPSRHQ0MKIEdDQz15ZXMKIENDPSR7R0NKLSJnY2oifQorQ0ZMQUdTPSRHQ0pGTEFHUwogY29tcGlsZXI9JENDCiBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKQEAgLTY4OTIsNiArNzQ4Niw4IEBACiBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIAogX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKIAogIyMgQ0FWRUFUIEVNUFRPUjoKICMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCkBAIC02OTExLDEwICs3NTA3LDgyIEBACiBBQ19MQU5HX1JFU1RPUkUKIAogR0NDPSRsdF9zYXZlX0dDQwotQ0M9IiRsdF9zYXZlX0NDIgorQ0M9JGx0X3NhdmVfQ0MKK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIF0pIyBfTFRfTEFOR19HQ0pfQ09ORklHCiAKIAorIyBfTFRfTEFOR19HT19DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIEdOVSBHbyBjb21waWxlcgorIyBhcmUgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfR09fQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtMVF9QUk9HX0dPXSlkbmwKK0FDX0xBTkdfU0FWRQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgR28gdGVzdCBzb3VyY2VzLgorYWNfZXh0PWdvCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBHbyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9InBhY2thZ2UgbWFpbjsgZnVuYyBtYWluKCkgeyB9IgorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSdwYWNrYWdlIG1haW47IGZ1bmMgbWFpbigpIHsgfScKKworIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorX0xUX1RBR19DT01QSUxFUgorCisjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCitfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCitsdF9zYXZlX0NDPSRDQworbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworbHRfc2F2ZV9HQ0M9JEdDQworR0NDPXllcworQ0M9JHtHT0MtImdjY2dvIn0KK0NGTEFHUz0kR09GTEFHUworY29tcGlsZXI9JENDCitfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCitfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKK19MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKworIyBHbyBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIEdDQyBkaWRuJ3QgaW1wbGljaXRseSBsaW5rIGxpYmMgaW4uCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKworX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKK19MVF9UQUdWQVIocmVsb2FkX2ZsYWcsICQxKT0kcmVsb2FkX2ZsYWcKK19MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKT0kcmVsb2FkX2NtZHMKKworIyMgQ0FWRUFUIEVNUFRPUjoKKyMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCitpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgIF9MVF9DT01QSUxFUl9OT19SVFRJKCQxKQorICBfTFRfQ09NUElMRVJfUElDKCQxKQorICBfTFRfQ09NUElMRVJfQ19PKCQxKQorICBfTFRfQ09NUElMRVJfRklMRV9MT0NLUygkMSkKKyAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSCgkMSkKKworICBfTFRfQ09ORklHKCQxKQorZmkKKworQUNfTEFOR19SRVNUT1JFCisKK0dDQz0kbHRfc2F2ZV9HQ0MKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCitdKSMgX0xUX0xBTkdfR09fQ09ORklHCisKKwogIyBfTFRfTEFOR19SQ19DT05GSUcoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgV2luZG93cyByZXNvdXJjZSBjb21waWxlcgpAQCAtNjk0Niw5ICs3NjE0LDExIEBACiAKICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiBsdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9CiBDQz0ke1JDLSJ3aW5kcmVzIn0KK0NGTEFHUz0KIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQpAQCAtNjk2MSw3ICs3NjMxLDggQEAKIAogR0NDPSRsdF9zYXZlX0dDQwogQUNfTEFOR19SRVNUT1JFCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogXSkjIF9MVF9MQU5HX1JDX0NPTkZJRwogCiAKQEAgLTY5ODEsNiArNzY1MiwxMyBAQAogZG5sIEFDX0RFRlVOKFtMVF9BQ19QUk9HX0dDSl0sIFtdKQogCiAKKyMgTFRfUFJPR19HTworIyAtLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfUFJPR19HT10sCitbQUNfQ0hFQ0tfVE9PTChHT0MsIGdjY2dvLCkKK10pCisKKwogIyBMVF9QUk9HX1JDCiAjIC0tLS0tLS0tLS0KIEFDX0RFRlVOKFtMVF9QUk9HX1JDXSwKQEAgLTcwMjAsNiArNzY5OCwxNSBAQAogQUNfU1VCU1QoW09CSkRVTVBdKQogXSkKIAorIyBfTFRfREVDTF9ETExUT09MCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIERMTFRPT0wgdmFyaWFibGUgaXMgc2V0LgorbTRfZGVmdW4oW19MVF9ERUNMX0RMTFRPT0xdLAorW0FDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCit0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCitfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pCitBQ19TVUJTVChbRExMVE9PTF0pCitdKQogCiAjIF9MVF9ERUNMX1NFRAogIyAtLS0tLS0tLS0tLS0KQEAgLTcxMTMsOCArNzgwMCw4IEBACiAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwogeHNpX3NoZWxsPW5vCiAoIF9sdF9kdW1teT0iYS9iL2MiCi0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0gICAgICA9IGMsYS9iLCwgXAorICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorICAgICAgPSBjLGEvYixiL2MsIFwKICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCiAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKICAgJiYgeHNpX3NoZWxsPXllcwpAQCAtNzE1MywyMDggKzc4NDAsMTYyIEBACiBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCiAKIAotIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEJvdXJuZSBhbmQgWFNJIGNvbXBhdGlibGUgdmFyaWFudHMgb2Ygc29tZSB1c2VmdWwgc2hlbGwgZnVuY3Rpb25zLgotbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCi1bY2FzZSAkeHNpX3NoZWxsIGluCi0gIHllcykKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotIyBjYWxsOgotIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLSAgZXNhYwotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi19Ci0KLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci19Ci0KLSMgZnVuY19vcHRfc3BsaXQKLWZ1bmNfb3B0X3NwbGl0ICgpCi17Ci0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotfQotCi0jIGZ1bmNfbG8ybyBvYmplY3QKLWZ1bmNfbG8ybyAoKQotewotICBjYXNlICR7MX0gaW4KLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotICBlc2FjCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKQotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci19Ci0KLV9MVF9FT0YKLSAgICA7OwotICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCi17Ci0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGRpcm5hbWUiYAotICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gIGVsc2UKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0gIGZpCi19Ci0KLSMgZnVuY19iYXNlbmFtZSBmaWxlCi1mdW5jX2Jhc2VuYW1lICgpCi17Ci0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCi19Ci0KLWRubCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lCi1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAotZG5sIHNvIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGl0IGhlcmUuCi0KLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotZnVuY19zdHJpcG5hbWUgKCkKLXsKLSAgY2FzZSAkezJ9IGluCi0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlXFxcXCR7Mn1cJCUlImA7OwotICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAotICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJSR7Mn1cJCUlImA7OwotICBlc2FjCi19Ci0KLSMgc2VkIHNjcmlwdHM6Ci1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bW149XV0qXCk9LiovXDEvO3EnCi1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19vcHQiYAotICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX2FyZyJgCi19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotfQotCi0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotZnVuY194Zm9ybSAoKQotewotICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICdzL1wuW1teLl1dKiQvLmxvLydgCi19Ci0KLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLWZ1bmNfYXJpdGggKCkKLXsKLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRbQF0iYAotfQotCi0jIGZ1bmNfbGVuIHN0cmluZwotIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotZnVuY19sZW4gKCkKLXsKLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkWzFdIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi19Ci0KLV9MVF9FT0YKLWVzYWMKLQotY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0gIHllcykKLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotCi0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi1mdW5jX2FwcGVuZCAoKQotewotICBldmFsICIkWzFdKz1cJFsyXSIKLX0KLV9MVF9FT0YKLSAgICA7OwotICAqKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCi19Ci0KLV9MVF9FT0YKLSAgICA7OwotICBlc2FjCisjIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UgKEZVTkNOQU1FLCBSRVBMQUNFTUVOVC1CT0RZKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKKyMgJ159IEZVTkNOQU1FICcsIGFuZCByZXBsYWNlIGl0cyBib2R5IHdpdGggUkVQTEFDRU1FTlQtQk9EWS4KK200X2RlZnVuKFtfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFXSwKK1tkbmwgeworc2VkIC1lICcvXiQxICgpJC8sL159ICMgJDEgL2NcCiskMSAoKVwKK3tcCittNF9icGF0c3Vic3RzKFskMl0sIFskXSwgW1xcXSwgW15cKFsJIF1cKV0sIFtcXFwxXSkKK30gIyBFeHRlbmRlZC1zaGVsbCAkMSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCit0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgogXSkKKworCisjIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXBsYWNlIGV4aXN0aW5nIHBvcnRhYmxlIGltcGxlbWVudGF0aW9ucyBvZiBzZXZlcmFsIHNoZWxsIGZ1bmN0aW9ucyB3aXRoCisjIGVxdWl2YWxlbnQgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb25zIHdoZXJlIHRob3NlIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUuLgorbTRfZGVmdW4oW19MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlNdLAorW2lmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKyAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgICBlc2FjXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Jhc2VuYW1lXSwgW2RubAorICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWVdLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICAgIGVzYWMKKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3N0cmlwbmFtZV0sIFtkbmwKKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCisgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn0KKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X3Nob3J0X29wdF0sIFtkbmwKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CisgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKyAgICBlc2FjXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3hmb3JtXSwgWyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FyaXRoXSwgWyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJFsqXSApKV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sZW5dLCBbICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfV0pCitmaQorCitpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kXSwgWyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2FwcGVuZF9xdW90ZWRdLCBbZG5sCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKK2RubCBtNCBleHBhbnNpb24gdHVybnMgXFxcXCBpbnRvIFxcLCBhbmQgdGhlbiB0aGUgc2hlbGwgZXZhbCB0dXJucyB0aGF0IGludG8gXAorICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXSkKKworICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZWxzZQorICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorZmkKKworaWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKyAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGVdKQorZmkKK10pCisKKyMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRGV0ZXJtaW5lIHdoaWNoIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQorIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCisjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KK200X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0XSkKK0FDX0NBQ0hFX1ZBTChsdF9jdl90b19ob3N0X2ZpbGVfY21kLAorW2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgICAgKi0qLWN5Z3dpbiogKQorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKyAgICAgICAgOzsKKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisgICAgICAgIDs7CisgICAgZXNhYworICAgIDs7CisgICotKi1jeWd3aW4qICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKyAgICA7OworZXNhYworXSkKK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b19ob3N0X2ZpbGVfY21kXSkKK19MVF9ERUNMKFt0b19ob3N0X2ZpbGVfY21kXSwgW2x0X2N2X3RvX2hvc3RfZmlsZV9jbWRdLAorICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKWRubAorCitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQsCitbI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCitjYXNlICRob3N0IGluCisgICotKi1taW5ndyogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKK2VzYWMKK10pCit0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCitBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9fdG9vbF9maWxlX2NtZF0pCitfTFRfREVDTChbdG9fdG9vbF9maWxlX2NtZF0sIFtsdF9jdl90b190b29sX2ZpbGVfY21kXSwKKyAgICAgICAgIFswXSwgW2NvbnZlcnQgJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXRdKWRubAorXSkjIF9MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0b3B0aW9ucy5tNCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHRvcHRpb25zLm00CmluZGV4IDM0MTUxYTMuLjVkOWFjZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHRvcHRpb25zLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHRvcHRpb25zLm00CkBAIC0xLDEzICsxLDE0IEBACiAjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgICBJbmMuCiAjICAgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorIyBzZXJpYWwgNyBsdG9wdGlvbnMubTQKIAogIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKQEAgLTEyNSw3ICsxMjYsNyBAQAogW2VuYWJsZV93aW4zMl9kbGw9eWVzCiAKIGNhc2UgJGhvc3QgaW4KLSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotY2VnY2MqKQorKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWNlZ2NjKikKICAgQUNfQ0hFQ0tfVE9PTChBUywgYXMsIGZhbHNlKQogICBBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQogICBBQ19DSEVDS19UT09MKE9CSkRVTVAsIG9iamR1bXAsIGZhbHNlKQpAQCAtMTMzLDEzICsxMzQsMTMgQEAKIGVzYWMKIAogdGVzdCAteiAiJEFTIiAmJiBBUz1hcwotX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzBdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzFdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAogCiB0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi1fTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMF0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCiAKIHRlc3QgLXogIiRPQkpEVU1QIiAmJiBPQkpEVU1QPW9iamR1bXAKLV9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFswXSwgW09iamVjdCBkdW1wZXIgcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAogXSkjIHdpbjMyLWRsbAogCiBBVV9ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLApAQCAtMzI1LDkgKzMyNiwyNCBAQAogIyBNT0RFIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGJvdGgnLgogbTRfZGVmaW5lKFtfTFRfV0lUSF9QSUNdLAogW0FDX0FSR19XSVRIKFtwaWNdLAotICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLXBpY10sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGljQDw6QD1QS0dTQDo+QF0sCiAJW3RyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIEA8OkBkZWZhdWx0PXVzZSBib3RoQDo+QF0pXSwKLSAgICBbcGljX21vZGU9IiR3aXRodmFsIl0sCisgICAgW2x0X3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkd2l0aHZhbCBpbgorICAgIHllc3xubykgcGljX21vZGU9JHdpdGh2YWwgOzsKKyAgICAqKQorICAgICAgcGljX21vZGU9ZGVmYXVsdAorICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgbHRfcGtnIGluICR3aXRodmFsOyBkbworCUlGUz0iJGx0X3NhdmVfaWZzIgorCWlmIHRlc3QgIlgkbHRfcGtnIiA9ICJYJGx0X3AiOyB0aGVuCisJICBwaWNfbW9kZT15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWNdLAogICAgIFtwaWNfbW9kZT1kZWZhdWx0XSkKIAogdGVzdCAteiAiJHBpY19tb2RlIiAmJiBwaWNfbW9kZT1tNF9kZWZhdWx0KFskMV0sIFtkZWZhdWx0XSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR2ZXJzaW9uLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdHZlcnNpb24ubTQKaW5kZXggYjhlMTU0Zi4uMDdhODYwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdHZlcnNpb24ubTQKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdHZlcnNpb24ubTQKQEAgLTcsMTcgKzcsMTcgQEAKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKIAotIyBzZXJpYWwgMzAxMiBsdHZlcnNpb24ubTQKKyMgc2VyaWFsIDMzMzcgbHR2ZXJzaW9uLm00CiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCiAKLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi42XSkKLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMwMTJdKQorbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40LjJdKQorbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzMzN10pCiAKIEFDX0RFRlVOKFtMVFZFUlNJT05fVkVSU0lPTl0sCi1bbWFjcm9fdmVyc2lvbj0nMi4yLjYnCi1tYWNyb19yZXZpc2lvbj0nMS4zMDEyJworW21hY3JvX3ZlcnNpb249JzIuNC4yJworbWFjcm9fcmV2aXNpb249JzEuMzMzNycKIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQogX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKIF0pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0fm9ic29sZXRlLm00IGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tNC9sdH5vYnNvbGV0ZS5tNAppbmRleCA2MzdiYjIwLi5jNTczZGE5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL200L2x0fm9ic29sZXRlLm00CisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbTQvbHR+b2Jzb2xldGUubTQKQEAgLTEsMTMgKzEsMTMgQEAKICMgbHR+b2Jzb2xldGUubTQgLS0gYWNsb2NhbCBzYXRpc2Z5aW5nIG9ic29sZXRlIGRlZmluaXRpb25zLiAgICAtKi1BdXRvY29uZi0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0LgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKIAogIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCiAjCkBAIC03Nyw3ICs3Nyw2IEBACiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NYWF0pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfRjc3XSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19HQ0pdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdKV0pCi1tNF9pZm5kZWYoW0FDX0xJQlRPT0xfUkNdLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NfQ09ORklHXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddKV0pCkBAIC05MCwzICs4OSwxMCBAQAogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19SQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX1JDX0NPTkZJR10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9DT05GSUddLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0NPTkZJR10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0ZJTEVfTFRETExfQ10sCVtBQ19ERUZVTihbX0xUX0FDX0ZJTEVfTFRETExfQ10pXSkKK200X2lmbmRlZihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdLAlbQUNfREVGVU4oW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfUFJPR19DWFhDUFBdLAkJW0FDX0RFRlVOKFtfTFRfQUNfUFJPR19DWFhDUFBdKV0pCittNF9pZm5kZWYoW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSwJW0FDX0RFRlVOKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAlbQUNfREVGVU4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19GNzddLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19GNzddKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0ZDXSwJCVtBQ19ERUZVTihbX0xUX1BST0dfRkNdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9QUk9HX0NYWF0pXSkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmFtIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuYW0KaW5kZXggMjUxOTI3Ny4uYWZjYmZiNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuYW0KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vTWFrZWZpbGUuYW0KQEAgLTIsNyArMiw3IEBACiAKIEFVVE9NQUtFX09QVElPTlM9Zm9yZWlnbgogCi1FWFRSQV9ESVNUID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMworRVhUUkFfRElTVCA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMgZmZpX3ByZXBfY2lmX3Zhci4zCiAKLW1hbl9NQU5TID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMworbWFuX01BTlMgPSBmZmkuMyBmZmlfY2FsbC4zIGZmaV9wcmVwX2NpZi4zIGZmaV9wcmVwX2NpZl92YXIuMwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9NYWtlZmlsZS5pbiBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmluCmluZGV4IDNlNDBiZTIuLmIyOWZiMTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmluCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL01ha2VmaWxlLmluCkBAIC0xLDkgKzEsOSBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMSBmcm9tIE1ha2VmaWxlLmFtLgorIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xMS4zIGZyb20gTWFrZWZpbGUuYW0uCiAjIEBjb25maWd1cmVfaW5wdXRACiAKICMgQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLAotIyAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0jIEluYy4KKyMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiAjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCiAjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KQEAgLTY4LDYgKzY4LDEyIEBACiBhbV9fYmFzZV9saXN0ID0gXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAogICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCithbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCisgIHRlc3QgLXogIiQkZmlsZXMiIFwKKyAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKKyAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCisgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCisgIH0KIG1hbjNkaXIgPSAkKG1hbmRpcikvbWFuMwogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKG1hbjNkaXIpIgogTlJPRkYgPSBucm9mZgpAQCAtNzYsNiArODIsNyBAQAogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUxMT0NBID0gQEFMTE9DQUAKIEFNVEFSID0gQEFNVEFSQAorQU1fTFRMREZMQUdTID0gQEFNX0xUTERGTEFHU0AKIEFNX1JVTlRFU1RGTEFHUyA9IEBBTV9SVU5URVNURkxBR1NACiBBUiA9IEBBUkAKIEFVVE9DT05GID0gQEFVVE9DT05GQApAQCAtOTMsNiArMTAwLDcgQEAKIENZR1BBVEhfVyA9IEBDWUdQQVRIX1dACiBERUZTID0gQERFRlNACiBERVBESVIgPSBAREVQRElSQAorRExMVE9PTCA9IEBETExUT09MQAogRFNZTVVUSUwgPSBARFNZTVVUSUxACiBEVU1QQklOID0gQERVTVBCSU5ACiBFQ0hPX0MgPSBARUNIT19DQApAQCAtMTAwLDYgKzEwOCw3IEBACiBFQ0hPX1QgPSBARUNIT19UQAogRUdSRVAgPSBARUdSRVBACiBFWEVFWFQgPSBARVhFRVhUQAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAogRkdSRVAgPSBARkdSRVBACiBHUkVQID0gQEdSRVBACiBIQVZFX0xPTkdfRE9VQkxFID0gQEhBVkVfTE9OR19ET1VCTEVACkBAIC0xMTgsNiArMTI3LDcgQEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAogTUtESVJfUCA9IEBNS0RJUl9QQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQApAQCAtMTMwLDYgKzE0MCw3IEBACiBQQUNLQUdFX05BTUUgPSBAUEFDS0FHRV9OQU1FQAogUEFDS0FHRV9TVFJJTkcgPSBAUEFDS0FHRV9TVFJJTkdACiBQQUNLQUdFX1RBUk5BTUUgPSBAUEFDS0FHRV9UQVJOQU1FQAorUEFDS0FHRV9VUkwgPSBAUEFDS0FHRV9VUkxACiBQQUNLQUdFX1ZFUlNJT04gPSBAUEFDS0FHRV9WRVJTSU9OQAogUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACiBSQU5MSUIgPSBAUkFOTElCQApAQCAtMTQ0LDYgKzE1NSw3IEBACiBhYnNfc3JjZGlyID0gQGFic19zcmNkaXJACiBhYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACiBhYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAogYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACiBhY19jdF9EVU1QQklOID0gQGFjX2N0X0RVTVBCSU5ACiBhbV9faW5jbHVkZSA9IEBhbV9faW5jbHVkZUAKQEAgLTE3Niw3ICsxODgsNiBAQAogbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAogbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKIGxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLWx0X0VDSE8gPSBAbHRfRUNIT0AKIG1hbmRpciA9IEBtYW5kaXJACiBta2Rpcl9wID0gQG1rZGlyX3BACiBvbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACkBAIC0xOTksOCArMjEwLDggQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiBBVVRPTUFLRV9PUFRJT05TID0gZm9yZWlnbgotRVhUUkFfRElTVCA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMKLW1hbl9NQU5TID0gZmZpLjMgZmZpX2NhbGwuMyBmZmlfcHJlcF9jaWYuMworRVhUUkFfRElTVCA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMgZmZpX3ByZXBfY2lmX3Zhci4zCittYW5fTUFOUyA9IGZmaS4zIGZmaV9jYWxsLjMgZmZpX3ByZXBfY2lmLjMgZmZpX3ByZXBfY2lmX3Zhci4zCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC0yNzUsOSArMjg2LDcgQEAKIAkgIHNlZCAtbiAnL1wuM1thLXpdKiQkL3AnOyBcCiAJfSB8IHNlZCAtZSAncywuKi8sLDtoO3MsLipcLiwsO3MsXlteM11bMC05YS16XSokJCwzLDt4JyBcCiAJICAgICAgLWUgJ3MsXC5bMC05YS16XSokJCwsOyQodHJhbnNmb3JtKTtHO3MsXG4sLiwnYDsgXAotCXRlc3QgLXogIiQkZmlsZXMiIHx8IHsgXAotCSAgZWNobyAiICggY2QgJyQoREVTVERJUikkKG1hbjNkaXIpJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLQkgIGNkICIkKERFU1RESVIpJChtYW4zZGlyKSIgJiYgcm0gLWYgJCRmaWxlczsgfQorCWRpcj0nJChERVNURElSKSQobWFuM2RpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCiB0YWdzOiBUQUdTCiBUQUdTOgogCkBAIC0zNDUsMTAgKzM1NCwxNSBAQAogCiBpbnN0YWxsY2hlY2s6IGluc3RhbGxjaGVjay1hbQogaW5zdGFsbC1zdHJpcDoKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCi0JICBgdGVzdCAteiAnJChTVFJJUCknIHx8IFwKLQkgICAgZWNobyAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyJgIGluc3RhbGwKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmkuMyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaS4zCmluZGV4IDE4YjVkNWQuLjFmMWQzMDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaS4zCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaS4zCkBAIC0xNiw2ICsxNiwxNSBAQAogLkZhICJmZmlfdHlwZSAqKmF0eXBlcyIKIC5GYwogLkZ0IHZvaWQKKy5GbyBmZmlfcHJlcF9jaWZfdmFyCisuRmEgImZmaV9jaWYgKmNpZiIKKy5GYSAiZmZpX2FiaSBhYmkiCisuRmEgInVuc2lnbmVkIGludCBuZml4ZWRhcmdzIgorLkZhICJ1bnNpZ25lZCBpbnQgbnRvdGFsYXJncyIKKy5GYSAiZmZpX3R5cGUgKnJ0eXBlIgorLkZhICJmZmlfdHlwZSAqKmF0eXBlcyIKKy5GYworLkZ0IHZvaWQKIC5GbyBmZmlfY2FsbAogLkZhICJmZmlfY2lmICpjaWYiCiAuRmEgInZvaWQgKCpmbikodm9pZCkiCkBAIC0yOCw0ICszNyw1IEBACiB0aGUgY2FsbGVkIGZ1bmN0aW9uJ3MgaW50ZXJmYWNlIGF0IGNvbXBpbGUgdGltZS4KIC5TaCBTRUUgQUxTTwogLlhyIGZmaV9wcmVwX2NpZiAzICwKKy5YciBmZmlfcHJlcF9jaWZfdmFyIDMgLAogLlhyIGZmaV9jYWxsIDMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZi4zIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmLjMKaW5kZXggOTQzNmIzMS4uZTFiZGJkNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmLjMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tYW4vZmZpX3ByZXBfY2lmLjMKQEAgLTM3LDcgKzM3LDkgQEAKIHBvaW50cyB0byBhbgogLk5tIGZmaV90eXBlCiB0aGF0IGRlc2NyaWJlcyB0aGUgZGF0YSB0eXBlLCBzaXplIGFuZCBhbGlnbm1lbnQgb2YgdGhlCi1yZXR1cm4gdmFsdWUuCityZXR1cm4gdmFsdWUuIE5vdGUgdGhhdCB0byBjYWxsIGEgdmFyaWFkaWMgZnVuY3Rpb24KKy5ObSBmZmlfcHJlcF9jaWZfdmFyCittdXN0IGJlIHVzZWQgaW5zdGVhZC4KIC5TaCBSRVRVUk4gVkFMVUVTCiBVcG9uIHN1Y2Nlc3NmdWwgY29tcGxldGlvbiwKIC5ObSBmZmlfcHJlcF9jaWYKQEAgLTYzLDQgKzY1LDYgQEAKIC4KIC5TaCBTRUUgQUxTTwogLlhyIGZmaSAzICwKLS5YciBmZmlfY2FsbCAzIAorLlhyIGZmaV9jYWxsIDMgLAorLlhyIGZmaV9wcmVwX2NpZl92YXIgMworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWZfdmFyLjMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21hbi9mZmlfcHJlcF9jaWZfdmFyLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UxOWQwYgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWFuL2ZmaV9wcmVwX2NpZl92YXIuMwpAQCAtMCwwICsxLDczIEBACisuRGQgSmFudWFyeSAyNSwgMjAxMQorLkR0IGZmaV9wcmVwX2NpZl92YXIgMworLlNoIE5BTUUKKy5ObSBmZmlfcHJlcF9jaWZfdmFyCisuTmQgUHJlcGFyZSBhCisuTm0gZmZpX2NpZgorc3RydWN0dXJlIGZvciB1c2Ugd2l0aAorLk5tIGZmaV9jYWxsCitmb3IgdmFyaWFkaWMgZnVuY3Rpb25zLgorLlNoIFNZTk9QU0lTCisuSW4gZmZpLmgKKy5GdCBmZmlfc3RhdHVzCisuRm8gZmZpX3ByZXBfY2lmX3ZhcgorLkZhICJmZmlfY2lmICpjaWYiCisuRmEgImZmaV9hYmkgYWJpIgorLkZhICJ1bnNpZ25lZCBpbnQgbmZpeGVkYXJncyIKKy5GYSAidW5zaWduZWQgaW50IG50b3RhbGFyZ3MiCisuRmEgImZmaV90eXBlICpydHlwZSIKKy5GYSAiZmZpX3R5cGUgKiphdHlwZXMiCisuRmMKKy5TaCBERVNDUklQVElPTgorVGhlCisuTm0gZmZpX3ByZXBfY2lmX3ZhcgorZnVuY3Rpb24gcHJlcGFyZXMgYQorLk5tIGZmaV9jaWYKK3N0cnVjdHVyZSBmb3IgdXNlIHdpdGgKKy5ObSBmZmlfY2FsbAorZm9yIHZhcmlhZGljIGZ1bmN0aW9ucy4KKy5GYSBhYmkKK3NwZWNpZmllcyBhIHNldCBvZiBjYWxsaW5nIGNvbnZlbnRpb25zIHRvIHVzZS4KKy5GYSBhdHlwZXMKK2lzIGFuIGFycmF5IG9mCisuRmEgbnRvdGFsYXJncworcG9pbnRlcnMgdG8KKy5ObSBmZmlfdHlwZQorc3RydWN0cyB0aGF0IGRlc2NyaWJlIHRoZSBkYXRhIHR5cGUsIHNpemUgYW5kIGFsaWdubWVudCBvZiBlYWNoIGFyZ3VtZW50LgorLkZhIHJ0eXBlCitwb2ludHMgdG8gYW4KKy5ObSBmZmlfdHlwZQordGhhdCBkZXNjcmliZXMgdGhlIGRhdGEgdHlwZSwgc2l6ZSBhbmQgYWxpZ25tZW50IG9mIHRoZQorcmV0dXJuIHZhbHVlLgorLkZhIG5maXhlZGFyZ3MKK211c3QgY29udGFpbiB0aGUgbnVtYmVyIG9mIGZpeGVkIChub24tdmFyaWFkaWMpIGFyZ3VtZW50cy4KK05vdGUgdGhhdCB0byBjYWxsIGEgbm9uLXZhcmlhZGljIGZ1bmN0aW9uCisuTm0gZmZpX3ByZXBfY2lmCittdXN0IGJlIHVzZWQuCisuU2ggUkVUVVJOIFZBTFVFUworVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sCisuTm0gZmZpX3ByZXBfY2lmX3ZhcgorcmV0dXJucworLk5tIEZGSV9PSyAuCitJdCB3aWxsIHJldHVybgorLk5tIEZGSV9CQURfVFlQRURFRgoraWYKKy5GYSBjaWYKK2lzCisuTm0gTlVMTAorb3IKKy5GYSBhdHlwZXMKK29yCisuRmEgcnR5cGUKK2lzIG1hbGZvcm1lZC4gSWYKKy5GYSBhYmkKK2RvZXMgbm90IHJlZmVyIHRvIGEgdmFsaWQgQUJJLAorLk5tIEZGSV9CQURfQUJJCit3aWxsIGJlIHJldHVybmVkLiBBdmFpbGFibGUgQUJJcyBhcmUKK2RlZmluZWQgaW4KKy5ObSA8ZmZpdGFyZ2V0Lmg+CisuCisuU2ggU0VFIEFMU08KKy5YciBmZmkgMyAsCisuWHIgZmZpX2NhbGwgMyAsCisuWHIgZmZpX3ByZXBfY2lmIDMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWlzc2luZyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvbWlzc2luZwppbmRleCA4OTRlNzg2Li4yODA1NWQyIDEwMDc1NQotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21pc3NpbmcKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9taXNzaW5nCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIENvbW1vbiBzdHViIGZvciBhIGZldyBtaXNzaW5nIEdOVSBwcm9ncmFtcyB3aGlsZSBpbnN0YWxsaW5nLgogCi1zY3JpcHR2ZXJzaW9uPTIwMDUtMDYtMDguMjEKK3NjcmlwdHZlcnNpb249MjAwOS0wNC0yOC4yMTsgIyBVVEMKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTksIDIwMDAsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUKLSMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk5LCAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorIyAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyBPcmlnaW5hbGx5IGJ5IEZyYW4sY29pcyBQaW5hcmQgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPiwgMTk5Ni4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTgsOSArMTgsNyBAQAogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEKLSMgMDIxMTAtMTMwMSwgVVNBLgorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIAogIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CiAjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQpAQCAtMzMsNiArMzEsOCBAQAogZmkKIAogcnVuPToKK3NlZF9vdXRwdXQ9J3MvLiogLS1vdXRwdXRbID1dXChbXiBdKlwpLiovXDEvcCcKK3NlZF9taW51c289J3MvLiogLW8gXChbXiBdKlwpLiovXDEvcCcKIAogIyBJbiB0aGUgY2FzZXMgd2hlcmUgdGhpcyBtYXR0ZXJzLCBgbWlzc2luZycgaXMgYmVpbmcgcnVuIGluIHRoZQogIyBzcmNkaXIgYWxyZWFkeS4KQEAgLTQ0LDcgKzQ0LDcgQEAKIAogbXNnPSJtaXNzaW5nIG9uIHlvdXIgc3lzdGVtIgogCi1jYXNlICIkMSIgaW4KK2Nhc2UgJDEgaW4KIC0tcnVuKQogICAjIFRyeSB0byBydW4gcmVxdWVzdGVkIHByb2dyYW0sIGFuZCBqdXN0IGV4aXQgaWYgaXQgc3VjY2VlZHMuCiAgIHJ1bj0KQEAgLTc3LDYgKzc3LDcgQEAKICAgYWNsb2NhbCAgICAgIHRvdWNoIGZpbGUgXGBhY2xvY2FsLm00JwogICBhdXRvY29uZiAgICAgdG91Y2ggZmlsZSBcYGNvbmZpZ3VyZScKICAgYXV0b2hlYWRlciAgIHRvdWNoIGZpbGUgXGBjb25maWcuaC5pbicKKyAgYXV0b200dGUgICAgIHRvdWNoIHRoZSBvdXRwdXQgZmlsZSwgb3IgY3JlYXRlIGEgc3R1YiBvbmUKICAgYXV0b21ha2UgICAgIHRvdWNoIGFsbCBcYE1ha2VmaWxlLmluJyBmaWxlcwogICBiaXNvbiAgICAgICAgY3JlYXRlIFxgeS50YWIuW2NoXScsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5bY2hdCiAgIGZsZXggICAgICAgICBjcmVhdGUgXGBsZXgueXkuYycsIGlmIHBvc3NpYmxlLCBmcm9tIGV4aXN0aW5nIC5jCkBAIC04Niw2ICs4Nyw5IEBACiAgIHRhciAgICAgICAgICB0cnkgdGFyLCBnbnV0YXIsIGd0YXIsIHRoZW4gdGFyIHdpdGhvdXQgbm9uLXBvcnRhYmxlIGZsYWdzCiAgIHlhY2MgICAgICAgICBjcmVhdGUgXGB5LnRhYi5bY2hdJywgaWYgcG9zc2libGUsIGZyb20gZXhpc3RpbmcgLltjaF0KIAorVmVyc2lvbiBzdWZmaXhlcyB0byBQUk9HUkFNIGFzIHdlbGwgYXMgdGhlIHByZWZpeGVzIFxgZ251LScsIFxgZ251JywgYW5kCitcYGcnIGFyZSBpZ25vcmVkIHdoZW4gY2hlY2tpbmcgdGhlIG5hbWUuCisKIFNlbmQgYnVnIHJlcG9ydHMgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPi4iCiAgICAgZXhpdCAkPwogICAgIDs7CkBAIC0xMDMsMTUgKzEwNywyMiBAQAogCiBlc2FjCiAKKyMgbm9ybWFsaXplIHByb2dyYW0gbmFtZSB0byBjaGVjayBmb3IuCitwcm9ncmFtPWBlY2hvICIkMSIgfCBzZWQgJworICBzL15nbnUtLy87IHQKKyAgcy9eZ251Ly87IHQKKyAgcy9eZy8vOyB0J2AKKwogIyBOb3cgZXhpdCBpZiB3ZSBoYXZlIGl0LCBidXQgaXQgZmFpbGVkLiAgQWxzbyBleGl0IG5vdyBpZiB3ZQogIyBkb24ndCBoYXZlIGl0IGFuZCAtLXZlcnNpb24gd2FzIHBhc3NlZCAobW9zdCBsaWtlbHkgdG8gZGV0ZWN0Ci0jIHRoZSBwcm9ncmFtKS4KLWNhc2UgIiQxIiBpbgotICBsZXh8eWFjYykKKyMgdGhlIHByb2dyYW0pLiAgVGhpcyBpcyBhYm91dCBub24tR05VIHByb2dyYW1zLCBzbyB1c2UgJDEgbm90CisjICRwcm9ncmFtLgorY2FzZSAkMSBpbgorICBsZXgqfHlhY2MqKQogICAgICMgTm90IEdOVSBwcm9ncmFtcywgdGhleSBkb24ndCBoYXZlIC0tdmVyc2lvbi4KICAgICA7OwogCi0gIHRhcikKKyAgdGFyKikKICAgICBpZiB0ZXN0IC1uICIkcnVuIjsgdGhlbgogICAgICAgIGVjaG8gMT4mMiAiRVJST1I6IFxgdGFyJyByZXF1aXJlcyAtLXJ1biIKICAgICAgICBleGl0IDEKQEAgLTEzNSw3ICsxNDYsNyBAQAogCiAjIElmIGl0IGRvZXMgbm90IGV4aXN0LCBvciBmYWlscyB0byBydW4gKHBvc3NpYmx5IGFuIG91dGRhdGVkIHZlcnNpb24pLAogIyB0cnkgdG8gZW11bGF0ZSBpdC4KLWNhc2UgIiQxIiBpbgorY2FzZSAkcHJvZ3JhbSBpbgogICBhY2xvY2FsKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgpAQCAtMTQ1LDcgKzE1Niw3IEBACiAgICAgdG91Y2ggYWNsb2NhbC5tNAogICAgIDs7CiAKLSAgYXV0b2NvbmYpCisgIGF1dG9jb25mKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzICRtc2cuICBZb3Ugc2hvdWxkIG9ubHkgbmVlZCBpdCBpZgogICAgICAgICAgeW91IG1vZGlmaWVkIFxgJHtjb25maWd1cmVfYWN9Jy4gIFlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwgdGhlCkBAIC0xNTQsNyArMTY1LDcgQEAKICAgICB0b3VjaCBjb25maWd1cmUKICAgICA7OwogCi0gIGF1dG9oZWFkZXIpCisgIGF1dG9oZWFkZXIqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAgICAgICAgICB5b3UgbW9kaWZpZWQgXGBhY2NvbmZpZy5oJyBvciBcYCR7Y29uZmlndXJlX2FjfScuICBZb3UgbWlnaHQgd2FudApAQCAtMTY0LDcgKzE3NSw3IEBACiAgICAgdGVzdCAteiAiJGZpbGVzIiAmJiBmaWxlcz0iY29uZmlnLmgiCiAgICAgdG91Y2hfZmlsZXM9CiAgICAgZm9yIGYgaW4gJGZpbGVzOyBkbwotICAgICAgY2FzZSAiJGYiIGluCisgICAgICBjYXNlICRmIGluCiAgICAgICAqOiopIHRvdWNoX2ZpbGVzPSIkdG91Y2hfZmlsZXMgImBlY2hvICIkZiIgfAogCQkJCSAgICAgICBzZWQgLWUgJ3MvXlteOl0qOi8vJyAtZSAncy86LiovLydgOzsKICAgICAgICopIHRvdWNoX2ZpbGVzPSIkdG91Y2hfZmlsZXMgJGYuaW4iOzsKQEAgLTE4NCw3ICsxOTUsNyBAQAogCSAgIHdoaWxlIHJlYWQgZjsgZG8gdG91Y2ggIiRmIjsgZG9uZQogICAgIDs7CiAKLSAgYXV0b200dGUpCisgIGF1dG9tNHRlKikKICAgICBlY2hvIDE+JjIgIlwKIFdBUk5JTkc6IFxgJDEnIGlzIG5lZWRlZCwgYnV0IGlzICRtc2cuCiAgICAgICAgICBZb3UgbWlnaHQgaGF2ZSBtb2RpZmllZCBzb21lIGZpbGVzIHdpdGhvdXQgaGF2aW5nIHRoZQpAQCAtMTkyLDggKzIwMyw4IEBACiAgICAgICAgICBZb3UgY2FuIGdldCBcYCQxJyBhcyBwYXJ0IG9mIFxgQXV0b2NvbmYnIGZyb20gYW55IEdOVQogICAgICAgICAgYXJjaGl2ZSBzaXRlLiIKIAotICAgIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAncy8uKi0tb3V0cHV0WyA9XSpcKFteIF0qXCkuKi9cMS9wJ2AKLSAgICB0ZXN0IC16ICIkZmlsZSIgJiYgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLW9bIF0qXChbXiBdKlwpLiovXDEvcCdgCisgICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX291dHB1dCJgCisgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9taW51c28iYAogICAgIGlmIHRlc3QgLWYgIiRmaWxlIjsgdGhlbgogCXRvdWNoICRmaWxlCiAgICAgZWxzZQpAQCAtMjA3LDgwICsyMTgsNzggQEAKICAgICBmaQogICAgIDs7CiAKLSAgYmlzb258eWFjYykKKyAgYmlzb24qfHlhY2MqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAgICAgICAgICB5b3UgbW9kaWZpZWQgYSBcYC55JyBmaWxlLiAgWW91IG1heSBuZWVkIHRoZSBcYEJpc29uJyBwYWNrYWdlCiAgICAgICAgICBpbiBvcmRlciBmb3IgdGhvc2UgbW9kaWZpY2F0aW9ucyB0byB0YWtlIGVmZmVjdC4gIFlvdSBjYW4gZ2V0CiAgICAgICAgICBcYEJpc29uJyBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKICAgICBybSAtZiB5LnRhYi5jIHkudGFiLmgKLSAgICBpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgICBpZiB0ZXN0ICQjIC1uZSAxOyB0aGVuCiAgICAgICAgIGV2YWwgTEFTVEFSRz0iXCR7JCN9IgotCWNhc2UgIiRMQVNUQVJHIiBpbgorCWNhc2UgJExBU1RBUkcgaW4KIAkqLnkpCiAJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy95JC9jLydgCi0JICAgIGlmIFsgLWYgIiRTUkNGSUxFIiBdOyB0aGVuCisJICAgIGlmIHRlc3QgLWYgIiRTUkNGSUxFIjsgdGhlbgogCSAgICAgICAgIGNwICIkU1JDRklMRSIgeS50YWIuYwogCSAgICBmaQogCSAgICBTUkNGSUxFPWBlY2hvICIkTEFTVEFSRyIgfCBzZWQgJ3MveSQvaC8nYAotCSAgICBpZiBbIC1mICIkU1JDRklMRSIgXTsgdGhlbgorCSAgICBpZiB0ZXN0IC1mICIkU1JDRklMRSI7IHRoZW4KIAkgICAgICAgICBjcCAiJFNSQ0ZJTEUiIHkudGFiLmgKIAkgICAgZmkKIAkgIDs7CiAJZXNhYwogICAgIGZpCi0gICAgaWYgWyAhIC1mIHkudGFiLmggXTsgdGhlbgorICAgIGlmIHRlc3QgISAtZiB5LnRhYi5oOyB0aGVuCiAJZWNobyA+eS50YWIuaAogICAgIGZpCi0gICAgaWYgWyAhIC1mIHkudGFiLmMgXTsgdGhlbgorICAgIGlmIHRlc3QgISAtZiB5LnRhYi5jOyB0aGVuCiAJZWNobyAnbWFpbigpIHsgcmV0dXJuIDA7IH0nID55LnRhYi5jCiAgICAgZmkKICAgICA7OwogCi0gIGxleHxmbGV4KQorICBsZXgqfGZsZXgqKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAgICAgICAgICB5b3UgbW9kaWZpZWQgYSBcYC5sJyBmaWxlLiAgWW91IG1heSBuZWVkIHRoZSBcYEZsZXgnIHBhY2thZ2UKICAgICAgICAgIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UgZWZmZWN0LiAgWW91IGNhbiBnZXQKICAgICAgICAgIFxgRmxleCcgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCiAgICAgcm0gLWYgbGV4Lnl5LmMKLSAgICBpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgICBpZiB0ZXN0ICQjIC1uZSAxOyB0aGVuCiAgICAgICAgIGV2YWwgTEFTVEFSRz0iXCR7JCN9IgotCWNhc2UgIiRMQVNUQVJHIiBpbgorCWNhc2UgJExBU1RBUkcgaW4KIAkqLmwpCiAJICAgIFNSQ0ZJTEU9YGVjaG8gIiRMQVNUQVJHIiB8IHNlZCAncy9sJC9jLydgCi0JICAgIGlmIFsgLWYgIiRTUkNGSUxFIiBdOyB0aGVuCisJICAgIGlmIHRlc3QgLWYgIiRTUkNGSUxFIjsgdGhlbgogCSAgICAgICAgIGNwICIkU1JDRklMRSIgbGV4Lnl5LmMKIAkgICAgZmkKIAkgIDs7CiAJZXNhYwogICAgIGZpCi0gICAgaWYgWyAhIC1mIGxleC55eS5jIF07IHRoZW4KKyAgICBpZiB0ZXN0ICEgLWYgbGV4Lnl5LmM7IHRoZW4KIAllY2hvICdtYWluKCkgeyByZXR1cm4gMDsgfScgPmxleC55eS5jCiAgICAgZmkKICAgICA7OwogCi0gIGhlbHAybWFuKQorICBoZWxwMm1hbiopCiAgICAgZWNobyAxPiYyICJcCiBXQVJOSU5HOiBcYCQxJyBpcyAkbXNnLiAgWW91IHNob3VsZCBvbmx5IG5lZWQgaXQgaWYKIAkgeW91IG1vZGlmaWVkIGEgZGVwZW5kZW5jeSBvZiBhIG1hbnVhbCBwYWdlLiAgWW91IG1heSBuZWVkIHRoZQogCSBcYEhlbHAybWFuJyBwYWNrYWdlIGluIG9yZGVyIGZvciB0aG9zZSBtb2RpZmljYXRpb25zIHRvIHRha2UKIAkgZWZmZWN0LiAgWW91IGNhbiBnZXQgXGBIZWxwMm1hbicgZnJvbSBhbnkgR05VIGFyY2hpdmUgc2l0ZS4iCiAKLSAgICBmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotbyBcKFteIF0qXCkuKi9cMS9wJ2AKLSAgICBpZiB0ZXN0IC16ICIkZmlsZSI7IHRoZW4KLQlmaWxlPWBlY2hvICIkKiIgfCBzZWQgLW4gJ3MvLiotLW91dHB1dD1cKFteIF0qXCkuKi9cMS9wJ2AKLSAgICBmaQotICAgIGlmIFsgLWYgIiRmaWxlIiBdOyB0aGVuCisgICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX291dHB1dCJgCisgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9taW51c28iYAorICAgIGlmIHRlc3QgLWYgIiRmaWxlIjsgdGhlbgogCXRvdWNoICRmaWxlCiAgICAgZWxzZQogCXRlc3QgLXogIiRmaWxlIiB8fCBleGVjID4kZmlsZQogCWVjaG8gIi5hYiBoZWxwMm1hbiBpcyByZXF1aXJlZCB0byBnZW5lcmF0ZSB0aGlzIHBhZ2UiCi0JZXhpdCAxCisJZXhpdCAkPwogICAgIGZpCiAgICAgOzsKIAotICBtYWtlaW5mbykKKyAgbWFrZWluZm8qKQogICAgIGVjaG8gMT4mMiAiXAogV0FSTklORzogXGAkMScgaXMgJG1zZy4gIFlvdSBzaG91bGQgb25seSBuZWVkIGl0IGlmCiAgICAgICAgICB5b3UgbW9kaWZpZWQgYSBcYC50ZXhpJyBvciBcYC50ZXhpbmZvJyBmaWxlLCBvciBhbnkgb3RoZXIgZmlsZQpAQCAtMjg5LDExICsyOTgsMTcgQEAKICAgICAgICAgIERVLCBJUklYKS4gIFlvdSBtaWdodCB3YW50IHRvIGluc3RhbGwgdGhlIFxgVGV4aW5mbycgcGFja2FnZSBvcgogICAgICAgICAgdGhlIFxgR05VIG1ha2UnIHBhY2thZ2UuICBHcmFiIGVpdGhlciBmcm9tIGFueSBHTlUgYXJjaGl2ZSBzaXRlLiIKICAgICAjIFRoZSBmaWxlIHRvIHRvdWNoIGlzIHRoYXQgc3BlY2lmaWVkIHdpdGggLW8gLi4uCi0gICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICdzLy4qLW8gXChbXiBdKlwpLiovXDEvcCdgCisgICAgZmlsZT1gZWNobyAiJCoiIHwgc2VkIC1uICIkc2VkX291dHB1dCJgCisgICAgdGVzdCAteiAiJGZpbGUiICYmIGZpbGU9YGVjaG8gIiQqIiB8IHNlZCAtbiAiJHNlZF9taW51c28iYAogICAgIGlmIHRlc3QgLXogIiRmaWxlIjsgdGhlbgogICAgICAgIyAuLi4gb3IgaXQgaXMgdGhlIG9uZSBzcGVjaWZpZWQgd2l0aCBAc2V0ZmlsZW5hbWUgLi4uCiAgICAgICBpbmZpbGU9YGVjaG8gIiQqIiB8IHNlZCAncy8uKiBcKFteIF0qXCkgKiQvXDEvJ2AKLSAgICAgIGZpbGU9YHNlZCAtbiAnL15Ac2V0ZmlsZW5hbWUvIHsgcy8uKiBcKFteIF0qXCkgKiQvXDEvOyBwOyBxOyB9JyAkaW5maWxlYAorICAgICAgZmlsZT1gc2VkIC1uICcKKwkvXkBzZXRmaWxlbmFtZS97CisJICBzLy4qIFwoW14gXSpcKSAqJC9cMS8KKwkgIHAKKwkgIHEKKwl9JyAkaW5maWxlYAogICAgICAgIyAuLi4gb3IgaXQgaXMgZGVyaXZlZCBmcm9tIHRoZSBzb3VyY2UgbmFtZSAoZGlyL2YudGV4aSBiZWNvbWVzIGYuaW5mbykKICAgICAgIHRlc3QgLXogIiRmaWxlIiAmJiBmaWxlPWBlY2hvICIkaW5maWxlIiB8IHNlZCAncywuKi8sLDtzLC5bXi5dKiQsLCdgLmluZm8KICAgICBmaQpAQCAtMzAzLDcgKzMxOCw3IEBACiAgICAgdG91Y2ggJGZpbGUKICAgICA7OwogCi0gIHRhcikKKyAgdGFyKikKICAgICBzaGlmdAogCiAgICAgIyBXZSBoYXZlIGFscmVhZHkgdHJpZWQgdGFyIGluIHRoZSBnZW5lcmljIHBhcnQuCkBAIC0zMTcsMTMgKzMzMiwxMyBAQAogICAgIGZpCiAgICAgZmlyc3Rhcmc9IiQxIgogICAgIGlmIHNoaWZ0OyB0aGVuCi0JY2FzZSAiJGZpcnN0YXJnIiBpbgorCWNhc2UgJGZpcnN0YXJnIGluCiAJKm8qKQogCSAgICBmaXJzdGFyZz1gZWNobyAiJGZpcnN0YXJnIiB8IHNlZCBzL28vL2AKIAkgICAgdGFyICIkZmlyc3RhcmciICIkQCIgJiYgZXhpdCAwCiAJICAgIDs7CiAJZXNhYwotCWNhc2UgIiRmaXJzdGFyZyIgaW4KKwljYXNlICRmaXJzdGFyZyBpbgogCSpoKikKIAkgICAgZmlyc3Rhcmc9YGVjaG8gIiRmaXJzdGFyZyIgfCBzZWQgcy9oLy9gCiAJICAgIHRhciAiJGZpcnN0YXJnIiAiJEAiICYmIGV4aXQgMApAQCAtMzU2LDUgKzM3MSw2IEBACiAjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKICMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgogIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQuJTAySCIKLSMgdGltZS1zdGFtcC1lbmQ6ICIkIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgdGltZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgogIyBFbmQ6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21zdmNjLnNoIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tc3ZjYy5zaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDgzMDE4MzkuLmRjZGJlYWIKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9tc3ZjYy5zaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL21zdmNjLnNoCkBAIC00MiwxMyArNDIsMTEgQEAKICMgZm9ybWF0IGFuZCB0cmFuc2xhdGVkIGludG8gc29tZXRoaW5nIHNlbnNpYmxlIGZvciBjbCBvciBtbC4KICMKIAotIyBEaXNhYmxlIHNwZWNpZmljIHdhcm5pbmdzLCBhbmQgZW5hYmxlIHdhcm5pbmdzLWFzLWVycm9ycyBzbyB3ZSBjYXRjaCBhbnkKLSMgbWlzdHJhbnNsYXRlZCBhcmdzLgotbm93YXJuPSItd2Q0MTI3IC13ZDQ4MjAgLXdkNDcwNiAtd2Q0MTAwIC13ZDQyNTUgLXdkNDY2OCAtd2Q0MDUzIC13ZDQzMjQiCi1hcmdzPSItbm9sb2dvIC1XMyAtV1ggJG5vd2FybiIKK2FyZ3M9Ii1ub2xvZ28gLVczIgogbWQ9LU1ECiBjbD0iY2wiCiBtbD0ibWwiCitzYWZlc2VoPSItc2FmZXNlaCIKIG91dHB1dD0KIAogd2hpbGUgWyAkIyAtZ3QgMCBdCkBAIC02NiwxNSArNjQsMjggQEAKICAgICAtbTY0KQogICAgICAgY2w9ImNsIiAgICMgIiRNU1ZDL3g4Nl9hbWQ2NC9jbCIKICAgICAgIG1sPSJtbDY0IiAjICIkTVNWQy94ODZfYW1kNjQvbWw2NCIKKyAgICAgIHNhZmVzZWg9CisgICAgICBzaGlmdCAxCisgICAgOzsKKyAgICAtTzApCisgICAgICBhcmdzPSIkYXJncyAtT2QiCiAgICAgICBzaGlmdCAxCiAgICAgOzsKICAgICAtTyopCi0gICAgICBhcmdzPSIkYXJncyAkMSIKKyAgICAgICMgSWYgd2UncmUgb3B0aW1pemluZywgbWFrZSBzdXJlIHdlIGV4cGxpY2l0bHkgdHVybiBvbiBzb21lIG9wdGltaXphdGlvbnMKKyAgICAgICMgdGhhdCBhcmUgaW1wbGljaXRseSBkaXNhYmxlZCBieSBkZWJ1ZyBzeW1ib2xzICgtWmkpLgorICAgICAgYXJncz0iJGFyZ3MgJDEgLU9QVDpSRUYgLU9QVDpJQ0YgLUlOQ1JFTUVOVEFMOk5PIgogICAgICAgc2hpZnQgMQogICAgIDs7CiAgICAgLWcpCi0gICAgICAjIENhbid0IHNwZWNpZnkgLVJUQzEgb3IgLVppIGluIG9wdC4gLUd5IGlzIG9rLiBVc2UgLU9QVDpSRUY/Ci0gICAgICBhcmdzPSIkYXJncyAtRF9ERUJVRyAtUlRDMSAtWmkiCisgICAgICAjIEVuYWJsZSBkZWJ1ZyBzeW1ib2wgZ2VuZXJhdGlvbi4KKyAgICAgIGFyZ3M9IiRhcmdzIC1aaSAtREVCVUciCisgICAgICBzaGlmdCAxCisgICAgOzsKKyAgICAtREZGSV9ERUJVRykKKyAgICAgICMgTGluayBhZ2FpbnN0IGRlYnVnIENSVCBhbmQgZW5hYmxlIHJ1bnRpbWUgZXJyb3IgY2hlY2tzLgorICAgICAgYXJncz0iJGFyZ3MgLVJUQzEiCisgICAgICBkZWZpbmVzPSIkZGVmaW5lcyAkMSIKICAgICAgIG1kPS1NRGQKICAgICAgIHNoaWZ0IDEKICAgICA7OwpAQCAtMTExLDcgKzEyMiw4IEBACiAgICAgICBzaGlmdCAxCiAgICAgOzsKICAgICAtV2FsbCkKLSAgICAgIGFyZ3M9IiRhcmdzIC1XYWxsIgorICAgICAgIyAtV2FsbCBvbiBNU1ZDIGlzIG92ZXJ6ZWFsb3VzLCBhbmQgd2UgYWxyZWFkeSBidWlsZCB3aXRoIC1XMy4gTm90aGluZworICAgICAgIyB0byBkbyBoZXJlLgogICAgICAgc2hpZnQgMQogICAgIDs7CiAgICAgLVdlcnJvcikKQEAgLTE2Niw3ICsxNzgsNyBAQAogICAgIGVjaG8gIiRjbCAtbm9sb2dvIC1FUCAkaW5jbHVkZXMgJGRlZmluZXMgJHNyYyA+ICRwcHNyYyIKICAgICAiJGNsIiAtbm9sb2dvIC1FUCAkaW5jbHVkZXMgJGRlZmluZXMgJHNyYyA+ICRwcHNyYyB8fCBleGl0ICQ/CiAgICAgb3V0cHV0PSIkKGVjaG8gJG91dHB1dCB8IHNlZCAncyUvRltkcGFdW14gXSolJWcnKSIKLSAgICBhcmdzPSItbm9sb2dvIC1zYWZlc2VoICRzaW5nbGUgJG91dHB1dCAkcHBzcmMiCisgICAgYXJncz0iLW5vbG9nbyAkc2FmZXNlaCAkc2luZ2xlICRvdXRwdXQgJHBwc3JjIgogCiAgICAgZWNobyAiJG1sICRhcmdzIgogICAgIGV2YWwgIlwiJG1sXCIgJGFyZ3MiCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaS5jCmluZGV4IDhkNmIyYmEuLjE5MmY2OTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaS5jCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDAxLCAyMDA3LCAyMDA4ICBSZWQgSGF0LCBJbmMuCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDEsIDIwMDcsIDIwMDggIFJlZCBIYXQsIEluYy4KICAgIAogICAgQWxwaGEgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTE3OCw2ICsxNzksOSBAQAogewogICB1bnNpZ25lZCBpbnQgKnRyYW1wOwogCisgIGlmIChjaWYtPmFiaSAhPSBGRklfT1NGKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKKwogICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogICB0cmFtcFswXSA9IDB4NDdmYjA0MDE7CS8qIG1vdiAkMjcsJDEJCSovCiAgIHRyYW1wWzFdID0gMHhhNzdiMDAxMDsJLyogbGRxICQyNywxNigkMjcpCSovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaXRhcmdldC5oCmluZGV4IDdkMDZlYjAuLmFmMTQ1YmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FscGhhL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFscGhhLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYWxwaGEvb3NmLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9vc2YuUwppbmRleCBkMGU3NzgyLi42YjlmNGRmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9vc2YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hbHBoYS9vc2YuUwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBvc2YuUyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwMSwgMjAwNywgMjAwOCBSZWQgSGF0CisgICBvc2YuUyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwMSwgMjAwNywgMjAwOCwgMjAxMSBSZWQgSGF0CiAgICAKICAgIEFscGhhL09TRiBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMjk5LDMzICsyOTksNTEgQEAKICNlbmRpZgogCiAjaWZkZWYgX19FTEZfXworIyBkZWZpbmUgVUFfU0kJCS40Ynl0ZQorIyBkZWZpbmUgRkRFX0VOQ09ESU5HCTB4MWIJLyogcGNyZWwgc2RhdGE0ICovCisjIGRlZmluZSBGREVfRU5DT0RFKFgpCS40Ynl0ZSBYLS4KKyMgZGVmaW5lIEZERV9BUkFOR0UoWCkJLjRieXRlIFgKKyNlbGlmIGRlZmluZWQgX19vc2ZfXworIyBkZWZpbmUgVUFfU0kJCS5hbGlnbiAwOyAubG9uZworIyBkZWZpbmUgRkRFX0VOQ09ESU5HCTB4NTAJLyogYWxpZ25lZCBhYnNvbHV0ZSAqLworIyBkZWZpbmUgRkRFX0VOQ09ERShYKQkuYWxpZ24gMzsgLnF1YWQgWAorIyBkZWZpbmUgRkRFX0FSQU5HRShYKQkuYWxpZ24gMDsgLnF1YWQgWAorI2VuZGlmCisKKyNpZmRlZiBfX0VMRl9fCiAJLnNlY3Rpb24JLmVoX2ZyYW1lLEVIX0ZSQU1FX0ZMQUdTLEBwcm9nYml0cworI2VsaWYgZGVmaW5lZCBfX29zZl9fCisJLmRhdGEKKwkuYWxpZ24gMworCS5nbG9ibCBfR0xPQkFMX19GX2ZmaV9jYWxsX29zZgorX0dMT0JBTF9fRl9mZmlfY2FsbF9vc2Y6CisjZW5kaWYKIF9fRlJBTUVfQkVHSU5fXzoKLQkuNGJ5dGUJJExFQ0lFMS0kTFNDSUUxCSMgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQorCVVBX1NJCSRMRUNJRTEtJExTQ0lFMQkjIExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkKICRMU0NJRTE6Ci0JLjRieXRlCTB4MAkJIyBDSUUgSWRlbnRpZmllciBUYWcKKwlVQV9TSQkweDAJCSMgQ0lFIElkZW50aWZpZXIgVGFnCiAJLmJ5dGUJMHgxCQkjIENJRSBWZXJzaW9uCiAJLmFzY2lpICJ6UlwwIgkJIyBDSUUgQXVnbWVudGF0aW9uCiAJLmJ5dGUJMHgxCQkjIHVsZWIxMjggMHgxOyBDSUUgQ29kZSBBbGlnbm1lbnQgRmFjdG9yCiAJLmJ5dGUJMHg3OAkJIyBzbGViMTI4IC04OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCiAJLmJ5dGUJMjYJCSMgQ0lFIFJBIENvbHVtbgogCS5ieXRlCTB4MQkJIyB1bGViMTI4IDB4MTsgQXVnbWVudGF0aW9uIHNpemUKLQkuYnl0ZQkweDFiCQkjIEZERSBFbmNvZGluZyAocGNyZWwgc2RhdGE0KQorCS5ieXRlCUZERV9FTkNPRElORwkjIEZERSBFbmNvZGluZwogCS5ieXRlCTB4YwkJIyBEV19DRkFfZGVmX2NmYQogCS5ieXRlCTMwCQkjIHVsZWIxMjggY29sdW1uIDMwCiAJLmJ5dGUJMAkJIyB1bGViMTI4IG9mZnNldCAwCiAJLmFsaWduIDMKICRMRUNJRTE6CiAkTFNGREUxOgotCS40Ynl0ZQkkTEVGREUxLSRMQVNGREUxCQkjIEZERSBMZW5ndGgKKwlVQV9TSQkkTEVGREUxLSRMQVNGREUxCQkjIEZERSBMZW5ndGgKICRMQVNGREUxOgotCS40Ynl0ZQkkTEFTRkRFMS1fX0ZSQU1FX0JFR0lOX18JIyBGREUgQ0lFIG9mZnNldAotCS40Ynl0ZQkkTEZCMS0uCQkjIEZERSBpbml0aWFsIGxvY2F0aW9uCi0JLjRieXRlCSRMRkUxLSRMRkIxCSMgRkRFIGFkZHJlc3MgcmFuZ2UKKwlVQV9TSQkkTEFTRkRFMS1fX0ZSQU1FX0JFR0lOX18JIyBGREUgQ0lFIG9mZnNldAorCUZERV9FTkNPREUoJExGQjEpCQkJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgorCUZERV9BUkFOR0UoJExGRTEtJExGQjEpCQkJIyBGREUgYWRkcmVzcyByYW5nZQogCS5ieXRlCTB4MAkJIyB1bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUKIAogCS5ieXRlCTB4NAkJIyBEV19DRkFfYWR2YW5jZV9sb2M0Ci0JLjRieXRlCSRMQ0ZJMS0kTEZCMQorCVVBX1NJCSRMQ0ZJMS0kTEZCMQogCS5ieXRlCTB4OWEJCSMgRFdfQ0ZBX29mZnNldCwgY29sdW1uIDI2CiAJLmJ5dGUJNAkJIyB1bGViMTI4IDQqLTgKIAkuYnl0ZQkweDhmCQkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAxNQpAQCAtMzM1LDMyICszNTMsMzUgQEAKIAkuYnl0ZQkzMgkJIyB1bGViMTI4IG9mZnNldCAzMgogCiAJLmJ5dGUJMHg0CQkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuNGJ5dGUJJExDRkkyLSRMQ0ZJMQorCVVBX1NJCSRMQ0ZJMi0kTENGSTEKIAkuYnl0ZQkweGRhCQkjIERXX0NGQV9yZXN0b3JlLCBjb2x1bW4gMjYKIAkuYWxpZ24gMwogJExFRkRFMToKIAogJExTRkRFMzoKLQkuNGJ5dGUJJExFRkRFMy0kTEFTRkRFMwkJIyBGREUgTGVuZ3RoCisJVUFfU0kJJExFRkRFMy0kTEFTRkRFMwkJIyBGREUgTGVuZ3RoCiAkTEFTRkRFMzoKLQkuNGJ5dGUJJExBU0ZERTMtX19GUkFNRV9CRUdJTl9fCSMgRkRFIENJRSBvZmZzZXQKLQkuNGJ5dGUJJExGQjItLgkJIyBGREUgaW5pdGlhbCBsb2NhdGlvbgotCS40Ynl0ZQkkTEZFMi0kTEZCMgkjIEZERSBhZGRyZXNzIHJhbmdlCisJVUFfU0kJJExBU0ZERTMtX19GUkFNRV9CRUdJTl9fCSMgRkRFIENJRSBvZmZzZXQKKwlGREVfRU5DT0RFKCRMRkIyKQkJCSMgRkRFIGluaXRpYWwgbG9jYXRpb24KKwlGREVfQVJBTkdFKCRMRkUyLSRMRkIyKQkJCSMgRkRFIGFkZHJlc3MgcmFuZ2UKIAkuYnl0ZQkweDAJCSMgdWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplCiAKIAkuYnl0ZQkweDQJCSMgRFdfQ0ZBX2FkdmFuY2VfbG9jNAotCS40Ynl0ZQkkTENGSTUtJExGQjIKKwlVQV9TSQkkTENGSTUtJExGQjIKIAkuYnl0ZQkweGUJCSMgRFdfQ0ZBX2RlZl9jZmFfb2Zmc2V0CiAJLmJ5dGUJMHg4MCwweDEJIyB1bGViMTI4IDEyOAogCiAJLmJ5dGUJMHg0CQkjIERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuNGJ5dGUJJExDRkk2LSRMQ0ZJNQorCVVBX1NJCSRMQ0ZJNi0kTENGSTUKIAkuYnl0ZQkweDlhCQkjIERXX0NGQV9vZmZzZXQsIGNvbHVtbiAyNgogCS5ieXRlCTE2CQkjIHVsZWIxMjggb2Zmc2V0IDE2Ki04CiAJLmFsaWduIDMKICRMRUZERTM6Ci0KLSNpZmRlZiBfX2xpbnV4X18KLQkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCisjaWYgZGVmaW5lZCBfX29zZl9fCisJLmFsaWduIDAKKwkubG9uZwkwCQkjIEVuZCBvZiBUYWJsZQogI2VuZGlmCisKKyNpZiBkZWZpbmVkIF9fRUxGX18gJiYgZGVmaW5lZCBfX2xpbnV4X18KKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCiAjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYwppbmRleCBmNmE2NDc1Li4zY2NjZWI5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaS5jCkBAIC0xLDYgKzEsMTAgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwOCAgUmVkIEhhdCwgSW5jLgotICAgCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAxMSBUaW1vdGh5IFdhbGwKKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDExIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMSBBbnRob255IEdyZWVuCisJICAgQ29weXJpZ2h0IChjKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDgsIDIwMTEgIFJlZCBIYXQsIEluYy4KKwkgICAKICAgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yOSwxMiArMzMsMjAgQEAKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCi0vKiBmZmlfcHJlcF9hcmdzIGlzIGNhbGxlZCBieSB0aGUgYXNzZW1ibHkgcm91dGluZSBvbmNlIHN0YWNrIHNwYWNlCi0gICBoYXMgYmVlbiBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyAqLworLyogRm9yd2FyZCBkZWNsYXJlcy4gKi8KK3N0YXRpYyBpbnQgdmZwX3R5cGVfcCAoZmZpX3R5cGUgKik7CitzdGF0aWMgdm9pZCBsYXlvdXRfdmZwX2FyZ3MgKGZmaV9jaWYgKik7CiAKLXZvaWQgZmZpX3ByZXBfYXJncyhjaGFyICpzdGFjaywgZXh0ZW5kZWRfY2lmICplY2lmKQorLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQorICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMKKyAgIAorICAgVGhlIHZmcF9zcGFjZSBwYXJhbWV0ZXIgaXMgdGhlIGxvYWQgYXJlYSBmb3IgVkZQIHJlZ3MsIHRoZSByZXR1cm4KKyAgIHZhbHVlIGlzIGNpZi0+dmZwX3VzZWQgKHdvcmQgYml0c2V0IG9mIFZGUCByZWdzIHVzZWQgZm9yIHBhc3NpbmcKKyAgIGFyZ3VtZW50cykuIFRoZXNlIGFyZSBvbmx5IHVzZWQgZm9yIHRoZSBWRlAgaGFyZC1mbG9hdCBBQkkuCisqLworaW50IGZmaV9wcmVwX2FyZ3MoY2hhciAqc3RhY2ssIGV4dGVuZGVkX2NpZiAqZWNpZiwgZmxvYXQgKnZmcF9zcGFjZSkKIHsKLSAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGk7CisgIHJlZ2lzdGVyIHVuc2lnbmVkIGludCBpLCB2aSA9IDA7CiAgIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7CiAgIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7CiAgIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7CkBAIC01MywxMCArNjUsMzEgQEAKICAgICAgICBpLS0sIHBfYXJnKyspCiAgICAgewogICAgICAgc2l6ZV90IHo7CisgICAgICBzaXplX3QgYWxpZ25tZW50OworCisgICAgICAvKiBBbGxvY2F0ZWQgaW4gVkZQIHJlZ2lzdGVycy4gKi8KKyAgICAgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfVkZQCisJICAmJiB2aSA8IGVjaWYtPmNpZi0+dmZwX25hcmdzICYmIHZmcF90eXBlX3AgKCpwX2FyZykpCisJeworCSAgZmxvYXQqIHZmcF9zbG90ID0gdmZwX3NwYWNlICsgZWNpZi0+Y2lmLT52ZnBfYXJnc1t2aSsrXTsKKwkgIGlmICgoKnBfYXJnKS0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVCkKKwkgICAgKigoZmxvYXQqKXZmcF9zbG90KSA9ICooKGZsb2F0KikqcF9hcmd2KTsKKwkgIGVsc2UgaWYgKCgqcF9hcmcpLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKKwkgICAgKigoZG91YmxlKil2ZnBfc2xvdCkgPSAqKChkb3VibGUqKSpwX2FyZ3YpOworCSAgZWxzZQorCSAgICBtZW1jcHkodmZwX3Nsb3QsICpwX2FyZ3YsICgqcF9hcmcpLT5zaXplKTsKKwkgIHBfYXJndisrOworCSAgY29udGludWU7CisJfQogCiAgICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KLSAgICAgIGlmICgoKCpwX2FyZyktPmFsaWdubWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7Ci0JYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsICgqcF9hcmcpLT5hbGlnbm1lbnQpOworICAgICAgYWxpZ25tZW50ID0gKCpwX2FyZyktPmFsaWdubWVudDsKKyNpZmRlZiBfV0lOMzJfV0NFCisgICAgICBpZiAoYWxpZ25tZW50ID4gNCkKKwlhbGlnbm1lbnQgPSA0OworI2VuZGlmCisgICAgICBpZiAoKGFsaWdubWVudCAtIDEpICYgKHVuc2lnbmVkKSBhcmdwKSB7CisJYXJncCA9IChjaGFyICopIEFMSUdOKGFyZ3AsIGFsaWdubWVudCk7CiAgICAgICB9CiAKICAgICAgIGlmICgoKnBfYXJnKS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpCkBAIC0xMDMsMTMgKzEzNiwxNSBAQAogCSAgcF9hcmd2Kys7CiAJICBhcmdwICs9IHo7CiAgICAgfQotICAKLSAgcmV0dXJuOworCisgIC8qIEluZGljYXRlIHRoZSBWRlAgcmVnaXN0ZXJzIHVzZWQuICovCisgIHJldHVybiBlY2lmLT5jaWYtPnZmcF91c2VkOwogfQogCiAvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nICovCiBmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGZmaV9jaWYgKmNpZikKIHsKKyAgaW50IHR5cGVfY29kZTsKICAgLyogUm91bmQgdGhlIHN0YWNrIHVwIHRvIGEgbXVsdGlwbGUgb2YgOCBieXRlcy4gIFRoaXMgaXNuJ3QgbmVlZGVkIAogICAgICBldmVyeXdoZXJlLCBidXQgaXQgaXMgb24gc29tZSBwbGF0Zm9ybXMsIGFuZCBpdCBkb2Vzbid0IGhhcm0gYW55dGhpbmcKICAgICAgd2hlbiBpdCBpc24ndCBuZWVkZWQuICAqLwpAQCAtMTMwLDcgKzE2NSwxNCBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSAgICAgIGlmIChjaWYtPnJ0eXBlLT5zaXplIDw9IDQpCisgICAgICBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUAorCSAgJiYgKHR5cGVfY29kZSA9IHZmcF90eXBlX3AgKGNpZi0+cnR5cGUpKSAhPSAwKQorCXsKKwkgIC8qIEEgQ29tcG9zaXRlIFR5cGUgcGFzc2VkIGluIFZGUCByZWdpc3RlcnMsIGVpdGhlcgorCSAgICAgRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVCBvciBGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRS4gKi8KKwkgIGNpZi0+ZmxhZ3MgPSAodW5zaWduZWQpIHR5cGVfY29kZTsKKwl9CisgICAgICBlbHNlIGlmIChjaWYtPnJ0eXBlLT5zaXplIDw9IDQpCiAJLyogQSBDb21wb3NpdGUgVHlwZSBub3QgbGFyZ2VyIHRoYW4gNCBieXRlcyBpcyByZXR1cm5lZCBpbiByMC4gICovCiAJY2lmLT5mbGFncyA9ICh1bnNpZ25lZClGRklfVFlQRV9JTlQ7CiAgICAgICBlbHNlCkBAIC0xNDUsMTEgKzE4NywzMCBAQAogICAgICAgYnJlYWs7CiAgICAgfQogCisgIC8qIE1hcCBvdXQgdGhlIHJlZ2lzdGVyIHBsYWNlbWVudHMgb2YgVkZQIHJlZ2lzdGVyIGFyZ3MuCisgICAgIFRoZSBWRlAgaGFyZC1mbG9hdCBjYWxsaW5nIGNvbnZlbnRpb25zIGFyZSBzbGlnaHRseSBtb3JlIHNvcGhpc3RpY2F0ZWQgdGhhbgorICAgICB0aGUgYmFzZSBjYWxsaW5nIGNvbnZlbnRpb25zLCBzbyB3ZSBkbyBpdCBoZXJlIGluc3RlYWQgb2YgaW4gZmZpX3ByZXBfYXJncygpLiAqLworICBpZiAoY2lmLT5hYmkgPT0gRkZJX1ZGUCkKKyAgICBsYXlvdXRfdmZwX2FyZ3MgKGNpZik7CisKICAgcmV0dXJuIEZGSV9PSzsKIH0KIAotZXh0ZXJuIHZvaWQgZmZpX2NhbGxfU1lTVih2b2lkICgqKShjaGFyICosIGV4dGVuZGVkX2NpZiAqKSwgZXh0ZW5kZWRfY2lmICosCi0JCQkgIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgdm9pZCAoKmZuKSh2b2lkKSk7CisvKiBQZXJmb3JtIG1hY2hpbmUgZGVwZW5kZW50IGNpZiBwcm9jZXNzaW5nIGZvciB2YXJpYWRpYyBjYWxscyAqLworZmZpX3N0YXR1cyBmZmlfcHJlcF9jaWZfbWFjaGRlcF92YXIoZmZpX2NpZiAqY2lmLAorCQkJCSAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKwkJCQkgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MpCit7CisgIC8qIFZGUCB2YXJpYWRpYyBjYWxscyBhY3R1YWxseSB1c2UgdGhlIFNZU1YgQUJJICovCisgIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQKQorCWNpZi0+YWJpID0gRkZJX1NZU1Y7CisKKyAgcmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGNpZik7Cit9CisKKy8qIFByb3RvdHlwZXMgZm9yIGFzc2VtYmx5IGZ1bmN0aW9ucywgaW4gc3lzdi5TICovCitleHRlcm4gdm9pZCBmZmlfY2FsbF9TWVNWICh2b2lkICgqZm4pKHZvaWQpLCBleHRlbmRlZF9jaWYgKiwgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCAqKTsKK2V4dGVybiB2b2lkIGZmaV9jYWxsX1ZGUCAodm9pZCAoKmZuKSh2b2lkKSwgZXh0ZW5kZWRfY2lmICosIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKik7CiAKIHZvaWQgZmZpX2NhbGwoZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICpydmFsdWUsIHZvaWQgKiphdmFsdWUpCiB7CkBAIC0xNTcsNiArMjE4LDggQEAKIAogICBpbnQgc21hbGxfc3RydWN0ID0gKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfSU5UIAogCQkgICAgICAmJiBjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCk7CisgIGludCB2ZnBfc3RydWN0ID0gKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCQkgICAgfHwgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRSk7CiAKICAgZWNpZi5jaWYgPSBjaWY7CiAgIGVjaWYuYXZhbHVlID0gYXZhbHVlOwpAQCAtMTczLDM4ICsyMzYsNTMgQEAKICAgICB9CiAgIGVsc2UgaWYgKHNtYWxsX3N0cnVjdCkKICAgICBlY2lmLnJ2YWx1ZSA9ICZ0ZW1wOworICBlbHNlIGlmICh2ZnBfc3RydWN0KQorICAgIHsKKyAgICAgIC8qIExhcmdlc3QgY2FzZSBpcyBkb3VibGUgeCA0LiAqLworICAgICAgZWNpZi5ydmFsdWUgPSBhbGxvY2EoMzIpOworICAgIH0KICAgZWxzZQogICAgIGVjaWYucnZhbHVlID0gcnZhbHVlOwogCiAgIHN3aXRjaCAoY2lmLT5hYmkpIAogICAgIHsKICAgICBjYXNlIEZGSV9TWVNWOgotICAgICAgZmZpX2NhbGxfU1lTVihmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsCi0JCSAgICBmbik7Ci0KKyAgICAgIGZmaV9jYWxsX1NZU1YgKGZuLCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUpOwogICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEZGSV9WRlA6CisjaWZkZWYgX19BUk1fRUFCSV9fCisgICAgICBmZmlfY2FsbF9WRlAgKGZuLCAmZWNpZiwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUpOworICAgICAgYnJlYWs7CisjZW5kaWYKKwogICAgIGRlZmF1bHQ6CiAgICAgICBGRklfQVNTRVJUKDApOwogICAgICAgYnJlYWs7CiAgICAgfQogICBpZiAoc21hbGxfc3RydWN0KQogICAgIG1lbWNweSAocnZhbHVlLCAmdGVtcCwgY2lmLT5ydHlwZS0+c2l6ZSk7CisgIGVsc2UgaWYgKHZmcF9zdHJ1Y3QpCisgICAgbWVtY3B5IChydmFsdWUsIGVjaWYucnZhbHVlLCBjaWYtPnJ0eXBlLT5zaXplKTsKIH0KIAogLyoqIHByaXZhdGUgbWVtYmVycyAqKi8KIAogc3RhdGljIHZvaWQgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWIChjaGFyICpzdGFjaywgdm9pZCAqKnJldCwKLQkJCQkJIHZvaWQqKiBhcmdzLCBmZmlfY2lmKiBjaWYpOworCQkJCQkgdm9pZCoqIGFyZ3MsIGZmaV9jaWYqIGNpZiwgZmxvYXQgKnZmcF9zdGFjayk7CiAKIHZvaWQgZmZpX2Nsb3N1cmVfU1lTViAoZmZpX2Nsb3N1cmUgKik7CiAKK3ZvaWQgZmZpX2Nsb3N1cmVfVkZQIChmZmlfY2xvc3VyZSAqKTsKKwogLyogVGhpcyBmdW5jdGlvbiBpcyBqdW1wZWQgdG8gYnkgdGhlIHRyYW1wb2xpbmUgKi8KIAogdW5zaWduZWQgaW50Ci1mZmlfY2xvc3VyZV9TWVNWX2lubmVyIChjbG9zdXJlLCByZXNwcCwgYXJncykKK2ZmaV9jbG9zdXJlX1NZU1ZfaW5uZXIgKGNsb3N1cmUsIHJlc3BwLCBhcmdzLCB2ZnBfYXJncykKICAgICAgZmZpX2Nsb3N1cmUgKmNsb3N1cmU7CiAgICAgIHZvaWQgKipyZXNwcDsKICAgICAgdm9pZCAqYXJnczsKKyAgICAgdm9pZCAqdmZwX2FyZ3M7CiB7CiAgIC8vIG91ciB2YXJpb3VzIHRoaW5ncy4uLgogICBmZmlfY2lmICAgICAgICpjaWY7CkBAIC0yMTksNyArMjk3LDcgQEAKICAgICogYSBzdHJ1Y3R1cmUsIGl0IHdpbGwgcmUtc2V0IFJFU1AgdG8gcG9pbnQgdG8gdGhlCiAgICAqIHN0cnVjdHVyZSByZXR1cm4gYWRkcmVzcy4gICovCiAKLSAgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGFyZ3MsIHJlc3BwLCBhcmdfYXJlYSwgY2lmKTsKKyAgZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGFyZ3MsIHJlc3BwLCBhcmdfYXJlYSwgY2lmLCB2ZnBfYXJncyk7CiAKICAgKGNsb3N1cmUtPmZ1bikgKGNpZiwgKnJlc3BwLCBhcmdfYXJlYSwgY2xvc3VyZS0+dXNlcl9kYXRhKTsKIApAQCAtMjI5LDEwICszMDcsMTIgQEAKIC8qQC1leHBvcnRoZWFkZXJAKi8KIHN0YXRpYyB2b2lkIAogZmZpX3ByZXBfaW5jb21pbmdfYXJnc19TWVNWKGNoYXIgKnN0YWNrLCB2b2lkICoqcnZhbHVlLAotCQkJICAgIHZvaWQgKiphdmFsdWUsIGZmaV9jaWYgKmNpZikKKwkJCSAgICB2b2lkICoqYXZhbHVlLCBmZmlfY2lmICpjaWYsCisJCQkgICAgLyogVXNlZCBvbmx5IHVuZGVyIFZGUCBoYXJkLWZsb2F0IEFCSS4gKi8KKwkJCSAgICBmbG9hdCAqdmZwX3N0YWNrKQogLypAPWV4cG9ydGhlYWRlckAqLwogewotICByZWdpc3RlciB1bnNpZ25lZCBpbnQgaTsKKyAgcmVnaXN0ZXIgdW5zaWduZWQgaW50IGksIHZpID0gMDsKICAgcmVnaXN0ZXIgdm9pZCAqKnBfYXJndjsKICAgcmVnaXN0ZXIgY2hhciAqYXJncDsKICAgcmVnaXN0ZXIgZmZpX3R5cGUgKipwX2FyZzsKQEAgLTI0OSwxMCArMzI5LDIzIEBACiAgIGZvciAoaSA9IGNpZi0+bmFyZ3MsIHBfYXJnID0gY2lmLT5hcmdfdHlwZXM7IChpICE9IDApOyBpLS0sIHBfYXJnKyspCiAgICAgewogICAgICAgc2l6ZV90IHo7CisgICAgICBzaXplX3QgYWxpZ25tZW50OworICAKKyAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfVkZQCisJICAmJiB2aSA8IGNpZi0+dmZwX25hcmdzICYmIHZmcF90eXBlX3AgKCpwX2FyZykpCisJeworCSAgKnBfYXJndisrID0gKHZvaWQqKSh2ZnBfc3RhY2sgKyBjaWYtPnZmcF9hcmdzW3ZpKytdKTsKKwkgIGNvbnRpbnVlOworCX0KIAotICAgICAgc2l6ZV90IGFsaWdubWVudCA9ICgqcF9hcmcpLT5hbGlnbm1lbnQ7CisgICAgICBhbGlnbm1lbnQgPSAoKnBfYXJnKS0+YWxpZ25tZW50OwogICAgICAgaWYgKGFsaWdubWVudCA8IDQpCiAJYWxpZ25tZW50ID0gNDsKKyNpZmRlZiBfV0lOMzJfV0NFCisgICAgICBlbHNlCisJaWYgKGFsaWdubWVudCA+IDQpCisJICBhbGlnbm1lbnQgPSA0OworI2VuZGlmCiAgICAgICAvKiBBbGlnbiBpZiBuZWNlc3NhcnkgKi8KICAgICAgIGlmICgoYWxpZ25tZW50IC0gMSkgJiAodW5zaWduZWQpIGFyZ3ApIHsKIAlhcmdwID0gKGNoYXIgKikgQUxJR04oYXJncCwgYWxpZ25tZW50KTsKQEAgLTI3MywxOCArMzY2LDIzNyBAQAogCiAvKiBIb3cgdG8gbWFrZSBhIHRyYW1wb2xpbmUuICAqLwogCitleHRlcm4gdW5zaWduZWQgaW50IGZmaV9hcm1fdHJhbXBvbGluZVszXTsKKworI2lmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKKworI2luY2x1ZGUgPG1hY2gvbWFjaC5oPgorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorCitleHRlcm4gdm9pZCAqZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZV9wYWdlOworCit0eXBlZGVmIHN0cnVjdCBmZmlfdHJhbXBvbGluZV90YWJsZSBmZmlfdHJhbXBvbGluZV90YWJsZTsKK3R5cGVkZWYgc3RydWN0IGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5IGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5OworCitzdHJ1Y3QgZmZpX3RyYW1wb2xpbmVfdGFibGUgeworICAvKiBjb250aWdpb3VzIHdyaXRhYmxlIGFuZCBleGVjdXRhYmxlIHBhZ2VzICovCisgIHZtX2FkZHJlc3NfdCBjb25maWdfcGFnZTsKKyAgdm1fYWRkcmVzc190IHRyYW1wb2xpbmVfcGFnZTsKKworICAvKiBmcmVlIGxpc3QgdHJhY2tpbmcgKi8KKyAgdWludDE2X3QgZnJlZV9jb3VudDsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmZyZWVfbGlzdDsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKmZyZWVfbGlzdF9wb29sOworCisgIGZmaV90cmFtcG9saW5lX3RhYmxlICpwcmV2OworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqbmV4dDsKK307CisKK3N0cnVjdCBmZmlfdHJhbXBvbGluZV90YWJsZV9lbnRyeSB7CisgIHZvaWQgKigqdHJhbXBvbGluZSkoKTsKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkgKm5leHQ7Cit9OworCisvKiBPdmVycmlkZSB0aGUgc3RhbmRhcmQgYXJjaGl0ZWN0dXJlIHRyYW1wb2xpbmUgc2l6ZSAqLworLy8gWFhYIFRPRE8gLSBGaXgKKyN1bmRlZiBGRklfVFJBTVBPTElORV9TSVpFCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMTIKKworLyogVGhlIHRyYW1wb2xpbmUgY29uZmlndXJhdGlvbiBpcyBwbGFjZWQgYXQgNDA4MCBieXRlcyBwcmlvciB0byB0aGUgdHJhbXBvbGluZSdzIGVudHJ5IHBvaW50ICovCisjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX0NPREVMT0NfQ09ORklHKGNvZGVsb2MpICgodm9pZCAqKikgKCgodWludDhfdCAqKSBjb2RlbG9jKSAtIDQwODApKTsKKworLyogVGhlIGZpcnN0IDE2IGJ5dGVzIG9mIHRoZSBjb25maWcgcGFnZSBhcmUgdW51c2VkLCBhcyB0aGV5IGFyZSB1bmFkZHJlc3NhYmxlIGZyb20gdGhlIHRyYW1wb2xpbmUgcGFnZS4gKi8KKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfQ09ORklHX1BBR0VfT0ZGU0VUIDE2CisKKy8qIFRvdGFsIG51bWJlciBvZiB0cmFtcG9saW5lcyB0aGF0IGZpdCBpbiBvbmUgdHJhbXBvbGluZSB0YWJsZSAqLworI2RlZmluZSBGRklfVFJBTVBPTElORV9DT1VOVCAoKFBBR0VfU0laRSAtIEZGSV9UUkFNUE9MSU5FX0NPTkZJR19QQUdFX09GRlNFVCkgLyBGRklfVFJBTVBPTElORV9TSVpFKQorCitzdGF0aWMgcHRocmVhZF9tdXRleF90IGZmaV90cmFtcG9saW5lX2xvY2sgPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIGZmaV90cmFtcG9saW5lX3RhYmxlICpmZmlfdHJhbXBvbGluZV90YWJsZXMgPSBOVUxMOworCitzdGF0aWMgZmZpX3RyYW1wb2xpbmVfdGFibGUgKgorZmZpX3RyYW1wb2xpbmVfdGFibGVfYWxsb2MgKCkKK3sKKyAgZmZpX3RyYW1wb2xpbmVfdGFibGUgKnRhYmxlID0gTlVMTDsKKworICAvKiBMb29wIHVudGlsIHdlIGNhbiBhbGxvY2F0ZSB0d28gY29udGlnaW91cyBwYWdlcyAqLworICB3aGlsZSAodGFibGUgPT0gTlVMTCkgeworICAgIHZtX2FkZHJlc3NfdCBjb25maWdfcGFnZSA9IDB4MDsKKyAgICBrZXJuX3JldHVybl90IGt0OworCisgICAgLyogVHJ5IHRvIGFsbG9jYXRlIHR3byBwYWdlcyAqLworICAgIGt0ID0gdm1fYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCAmY29uZmlnX3BhZ2UsIFBBR0VfU0laRSoyLCBWTV9GTEFHU19BTllXSEVSRSk7CisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykgeworICAgICAgZnByaW50ZihzdGRlcnIsICJ2bV9hbGxvY2F0ZSgpIGZhaWx1cmU6ICVkIGF0ICVzOiVkXG4iLCBrdCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8qIE5vdyBkcm9wIHRoZSBzZWNvbmQgaGFsZiBvZiB0aGUgYWxsb2NhdGlvbiB0byBtYWtlIHJvb20gZm9yIHRoZSB0cmFtcG9saW5lIHRhYmxlICovCisgICAgdm1fYWRkcmVzc190IHRyYW1wb2xpbmVfcGFnZSA9IGNvbmZpZ19wYWdlK1BBR0VfU0laRTsKKyAgICBrdCA9IHZtX2RlYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCB0cmFtcG9saW5lX3BhZ2UsIFBBR0VfU0laRSk7CisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykgeworICAgICAgZnByaW50ZihzdGRlcnIsICJ2bV9kZWFsbG9jYXRlKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgLyogUmVtYXAgdGhlIHRyYW1wb2xpbmUgdGFibGUgdG8gZGlyZWN0bHkgZm9sbG93IHRoZSBjb25maWcgcGFnZSAqLworICAgIHZtX3Byb3RfdCBjdXJfcHJvdDsKKyAgICB2bV9wcm90X3QgbWF4X3Byb3Q7CisKKyAgICBrdCA9IHZtX3JlbWFwIChtYWNoX3Rhc2tfc2VsZiAoKSwgJnRyYW1wb2xpbmVfcGFnZSwgUEFHRV9TSVpFLCAweDAsIEZBTFNFLCBtYWNoX3Rhc2tfc2VsZiAoKSwgKHZtX2FkZHJlc3NfdCkgJmZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZSwgRkFMU0UsICZjdXJfcHJvdCwgJm1heF9wcm90LCBWTV9JTkhFUklUX1NIQVJFKTsKKworICAgIC8qIElmIHdlIGxvc3QgYWNjZXNzIHRvIHRoZSBkZXN0aW5hdGlvbiB0cmFtcG9saW5lIHBhZ2UsIGRyb3Agb3VyIGNvbmZpZyBhbGxvY2F0aW9uIG1hcHBpbmcgYW5kIHJldHJ5ICovCisgICAgaWYgKGt0ICE9IEtFUk5fU1VDQ0VTUykgeworICAgICAgLyogTG9nIHVuZXhwZWN0ZWQgZmFpbHVyZXMgKi8KKyAgICAgIGlmIChrdCAhPSBLRVJOX05PX1NQQUNFKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAidm1fcmVtYXAoKSBmYWlsdXJlOiAlZCBhdCAlczolZFxuIiwga3QsIF9fRklMRV9fLCBfX0xJTkVfXyk7CisgICAgICB9CisKKyAgICAgIHZtX2RlYWxsb2NhdGUgKG1hY2hfdGFza19zZWxmICgpLCBjb25maWdfcGFnZSwgUEFHRV9TSVpFKTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIC8qIFdlIGhhdmUgdmFsaWQgdHJhbXBvbGluZSBhbmQgY29uZmlnIHBhZ2VzICovCisgICAgdGFibGUgPSBjYWxsb2MgKDEsIHNpemVvZihmZmlfdHJhbXBvbGluZV90YWJsZSkpOworICAgIHRhYmxlLT5mcmVlX2NvdW50ID0gRkZJX1RSQU1QT0xJTkVfQ09VTlQ7CisgICAgdGFibGUtPmNvbmZpZ19wYWdlID0gY29uZmlnX3BhZ2U7CisgICAgdGFibGUtPnRyYW1wb2xpbmVfcGFnZSA9IHRyYW1wb2xpbmVfcGFnZTsKKworICAgIC8qIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgZnJlZSBsaXN0ICovCisgICAgdGFibGUtPmZyZWVfbGlzdF9wb29sID0gY2FsbG9jKEZGSV9UUkFNUE9MSU5FX0NPVU5ULCBzaXplb2YoZmZpX3RyYW1wb2xpbmVfdGFibGVfZW50cnkpKTsKKworICAgIHVpbnQxNl90IGk7CisgICAgZm9yIChpID0gMDsgaSA8IHRhYmxlLT5mcmVlX2NvdW50OyBpKyspIHsKKyAgICAgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICplbnRyeSA9ICZ0YWJsZS0+ZnJlZV9saXN0X3Bvb2xbaV07CisgICAgICBlbnRyeS0+dHJhbXBvbGluZSA9ICh2b2lkICopICh0YWJsZS0+dHJhbXBvbGluZV9wYWdlICsgKGkgKiBGRklfVFJBTVBPTElORV9TSVpFKSk7CisKKyAgICAgIGlmIChpIDwgdGFibGUtPmZyZWVfY291bnQgLSAxKQorICAgICAgICBlbnRyeS0+bmV4dCA9ICZ0YWJsZS0+ZnJlZV9saXN0X3Bvb2xbaSsxXTsKKyAgICB9CisKKyAgICB0YWJsZS0+ZnJlZV9saXN0ID0gdGFibGUtPmZyZWVfbGlzdF9wb29sOworICB9CisKKyAgcmV0dXJuIHRhYmxlOworfQorCit2b2lkICoKK2ZmaV9jbG9zdXJlX2FsbG9jIChzaXplX3Qgc2l6ZSwgdm9pZCAqKmNvZGUpCit7CisgIC8qIENyZWF0ZSB0aGUgY2xvc3VyZSAqLworICBmZmlfY2xvc3VyZSAqY2xvc3VyZSA9IG1hbGxvYyhzaXplKTsKKyAgaWYgKGNsb3N1cmUgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKworICBwdGhyZWFkX211dGV4X2xvY2soJmZmaV90cmFtcG9saW5lX2xvY2spOworCisgIC8qIENoZWNrIGZvciBhbiBhY3RpdmUgdHJhbXBvbGluZSB0YWJsZSB3aXRoIGF2YWlsYWJsZSBlbnRyaWVzLiAqLworICBmZmlfdHJhbXBvbGluZV90YWJsZSAqdGFibGUgPSBmZmlfdHJhbXBvbGluZV90YWJsZXM7CisgIGlmICh0YWJsZSA9PSBOVUxMIHx8IHRhYmxlLT5mcmVlX2xpc3QgPT0gTlVMTCkgeworICAgIHRhYmxlID0gZmZpX3RyYW1wb2xpbmVfdGFibGVfYWxsb2MgKCk7CisgICAgaWYgKHRhYmxlID09IE5VTEwpIHsKKyAgICAgIGZyZWUoY2xvc3VyZSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBJbnNlcnQgdGhlIG5ldyB0YWJsZSBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0ICovCisgICAgdGFibGUtPm5leHQgPSBmZmlfdHJhbXBvbGluZV90YWJsZXM7CisgICAgaWYgKHRhYmxlLT5uZXh0ICE9IE5VTEwpCisgICAgICAgIHRhYmxlLT5uZXh0LT5wcmV2ID0gdGFibGU7CisKKyAgICBmZmlfdHJhbXBvbGluZV90YWJsZXMgPSB0YWJsZTsKKyAgfQorCisgIC8qIENsYWltIHRoZSBmcmVlIGVudHJ5ICovCisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICplbnRyeSA9IGZmaV90cmFtcG9saW5lX3RhYmxlcy0+ZnJlZV9saXN0OworICBmZmlfdHJhbXBvbGluZV90YWJsZXMtPmZyZWVfbGlzdCA9IGVudHJ5LT5uZXh0OworICBmZmlfdHJhbXBvbGluZV90YWJsZXMtPmZyZWVfY291bnQtLTsKKyAgZW50cnktPm5leHQgPSBOVUxMOworCisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmZmlfdHJhbXBvbGluZV9sb2NrKTsKKworICAvKiBJbml0aWFsaXplIHRoZSByZXR1cm4gdmFsdWVzICovCisgICpjb2RlID0gZW50cnktPnRyYW1wb2xpbmU7CisgIGNsb3N1cmUtPnRyYW1wb2xpbmVfdGFibGUgPSB0YWJsZTsKKyAgY2xvc3VyZS0+dHJhbXBvbGluZV90YWJsZV9lbnRyeSA9IGVudHJ5OworCisgIHJldHVybiBjbG9zdXJlOworfQorCit2b2lkCitmZmlfY2xvc3VyZV9mcmVlICh2b2lkICpwdHIpCit7CisgIGZmaV9jbG9zdXJlICpjbG9zdXJlID0gcHRyOworCisgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZmZpX3RyYW1wb2xpbmVfbG9jayk7CisKKyAgLyogRmV0Y2ggdGhlIHRhYmxlIGFuZCBlbnRyeSByZWZlcmVuY2VzICovCisgIGZmaV90cmFtcG9saW5lX3RhYmxlICp0YWJsZSA9IGNsb3N1cmUtPnRyYW1wb2xpbmVfdGFibGU7CisgIGZmaV90cmFtcG9saW5lX3RhYmxlX2VudHJ5ICplbnRyeSA9IGNsb3N1cmUtPnRyYW1wb2xpbmVfdGFibGVfZW50cnk7CisKKyAgLyogUmV0dXJuIHRoZSBlbnRyeSB0byB0aGUgZnJlZSBsaXN0ICovCisgIGVudHJ5LT5uZXh0ID0gdGFibGUtPmZyZWVfbGlzdDsKKyAgdGFibGUtPmZyZWVfbGlzdCA9IGVudHJ5OworICB0YWJsZS0+ZnJlZV9jb3VudCsrOworCisgIC8qIElmIGFsbCB0cmFtcG9saW5lcyB3aXRoaW4gdGhpcyB0YWJsZSBhcmUgZnJlZSwgYW5kIGF0IGxlYXN0IG9uZSBvdGhlciB0YWJsZSBleGlzdHMsIGRlYWxsb2NhdGUKKyAgICogdGhlIHRhYmxlICovCisgIGlmICh0YWJsZS0+ZnJlZV9jb3VudCA9PSBGRklfVFJBTVBPTElORV9DT1VOVCAmJiBmZmlfdHJhbXBvbGluZV90YWJsZXMgIT0gdGFibGUpIHsKKyAgICAvKiBSZW1vdmUgZnJvbSB0aGUgbGlzdCAqLworICAgIGlmICh0YWJsZS0+cHJldiAhPSBOVUxMKQorICAgICAgdGFibGUtPnByZXYtPm5leHQgPSB0YWJsZS0+bmV4dDsKKworICAgIGlmICh0YWJsZS0+bmV4dCAhPSBOVUxMKQorICAgICAgdGFibGUtPm5leHQtPnByZXYgPSB0YWJsZS0+cHJldjsKKworICAgIC8qIERlYWxsb2NhdGUgcGFnZXMgKi8KKyAgICBrZXJuX3JldHVybl90IGt0OworICAgIGt0ID0gdm1fZGVhbGxvY2F0ZSAobWFjaF90YXNrX3NlbGYgKCksIHRhYmxlLT5jb25maWdfcGFnZSwgUEFHRV9TSVpFKTsKKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgZnByaW50ZihzdGRlcnIsICJ2bV9kZWFsbG9jYXRlKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworCisgICAga3QgPSB2bV9kZWFsbG9jYXRlIChtYWNoX3Rhc2tfc2VsZiAoKSwgdGFibGUtPnRyYW1wb2xpbmVfcGFnZSwgUEFHRV9TSVpFKTsKKyAgICBpZiAoa3QgIT0gS0VSTl9TVUNDRVNTKQorICAgICAgZnByaW50ZihzdGRlcnIsICJ2bV9kZWFsbG9jYXRlKCkgZmFpbHVyZTogJWQgYXQgJXM6JWRcbiIsIGt0LCBfX0ZJTEVfXywgX19MSU5FX18pOworCisgICAgLyogRGVhbGxvY2F0ZSBmcmVlIGxpc3QgKi8KKyAgICBmcmVlICh0YWJsZS0+ZnJlZV9saXN0X3Bvb2wpOworICAgIGZyZWUgKHRhYmxlKTsKKyAgfSBlbHNlIGlmIChmZmlfdHJhbXBvbGluZV90YWJsZXMgIT0gdGFibGUpIHsKKyAgICAvKiBPdGhlcndpc2UsIGJ1bXAgdGhpcyB0YWJsZSB0byB0aGUgdG9wIG9mIHRoZSBsaXN0ICovCisgICAgdGFibGUtPnByZXYgPSBOVUxMOworICAgIHRhYmxlLT5uZXh0ID0gZmZpX3RyYW1wb2xpbmVfdGFibGVzOworICAgIGlmIChmZmlfdHJhbXBvbGluZV90YWJsZXMgIT0gTlVMTCkKKyAgICAgIGZmaV90cmFtcG9saW5lX3RhYmxlcy0+cHJldiA9IHRhYmxlOworCisgICAgZmZpX3RyYW1wb2xpbmVfdGFibGVzID0gdGFibGU7CisgIH0KKworICBwdGhyZWFkX211dGV4X3VubG9jayAoJmZmaV90cmFtcG9saW5lX2xvY2spOworCisgIC8qIEZyZWUgdGhlIGNsb3N1cmUgKi8KKyAgZnJlZSAoY2xvc3VyZSk7Cit9CisKKyNlbHNlCisKICNkZWZpbmUgRkZJX0lOSVRfVFJBTVBPTElORShUUkFNUCxGVU4sQ1RYKQkJCQlcCiAoeyB1bnNpZ25lZCBjaGFyICpfX3RyYW1wID0gKHVuc2lnbmVkIGNoYXIqKShUUkFNUCk7CQkJXAogICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKEZVTik7CQkJCVwKICAgIHVuc2lnbmVkIGludCAgX19jdHggPSAodW5zaWduZWQgaW50KShDVFgpOwkJCQlcCi0gICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzBdID0gMHhlOTJkMDAwZjsgLyogc3RtZmQgc3AhLCB7cjAtcjN9ICovCVwKLSAgICoodW5zaWduZWQgaW50KikgJl9fdHJhbXBbNF0gPSAweGU1OWYwMDAwOyAvKiBsZHIgcjAsIFtwY10gKi8JXAotICAgKih1bnNpZ25lZCBpbnQqKSAmX190cmFtcFs4XSA9IDB4ZTU5ZmYwMDA7IC8qIGxkciBwYywgW3BjXSAqLwlcCisgICB1bnNpZ25lZCBjaGFyICppbnNucyA9ICh1bnNpZ25lZCBjaGFyICopKENUWCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICBtZW1jcHkgKF9fdHJhbXAsIGZmaV9hcm1fdHJhbXBvbGluZSwgc2l6ZW9mIGZmaV9hcm1fdHJhbXBvbGluZSk7ICAgICBcCiAgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzEyXSA9IF9fY3R4OwkJCQlcCiAgICAqKHVuc2lnbmVkIGludCopICZfX3RyYW1wWzE2XSA9IF9fZnVuOwkJCQlcCi0gICBfX2NsZWFyX2NhY2hlKCgmX190cmFtcFswXSksICgmX190cmFtcFsxOV0pKTsJCQlcCisgICBfX2NsZWFyX2NhY2hlKCgmX190cmFtcFswXSksICgmX190cmFtcFsxOV0pKTsgLyogQ2xlYXIgZGF0YSBtYXBwaW5nLiAgKi8gXAorICAgX19jbGVhcl9jYWNoZShpbnNucywgaW5zbnMgKyAzICogc2l6ZW9mICh1bnNpZ25lZCBpbnQpKTsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsZWFyIGluc3RydWN0aW9uICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcuICAqLyAgICAgICAgXAogIH0pCiAKKyNlbmRpZgogCiAvKiB0aGUgY2lmIG11c3QgYWxyZWFkeSBiZSBwcmVwJ2VkICovCiAKQEAgLTI5NSwxNSArNjA3LDE1MCBAQAogCQkgICAgICB2b2lkICp1c2VyX2RhdGEsCiAJCSAgICAgIHZvaWQgKmNvZGVsb2MpCiB7Ci0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9TWVNWKTsKKyAgdm9pZCAoKmNsb3N1cmVfZnVuYykoZmZpX2Nsb3N1cmUqKSA9IE5VTEw7CiAKLSAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLCBcCi0JCSAgICAgICAmZmZpX2Nsb3N1cmVfU1lTViwgIFwKLQkJICAgICAgIGNvZGVsb2MpOworICBpZiAoY2lmLT5hYmkgPT0gRkZJX1NZU1YpCisgICAgY2xvc3VyZV9mdW5jID0gJmZmaV9jbG9zdXJlX1NZU1Y7CisjaWZkZWYgX19BUk1fRUFCSV9fCisgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9WRlApCisgICAgY2xvc3VyZV9mdW5jID0gJmZmaV9jbG9zdXJlX1ZGUDsKKyNlbmRpZgorICBlbHNlCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICAgIAorI2lmIEZGSV9FWEVDX1RSQU1QT0xJTkVfVEFCTEUKKyAgdm9pZCAqKmNvbmZpZyA9IEZGSV9UUkFNUE9MSU5FX0NPREVMT0NfQ09ORklHKGNvZGVsb2MpOworICBjb25maWdbMF0gPSBjbG9zdXJlOworICBjb25maWdbMV0gPSBjbG9zdXJlX2Z1bmM7CisjZWxzZQorICBGRklfSU5JVF9UUkFNUE9MSU5FICgmY2xvc3VyZS0+dHJhbXBbMF0sIFwKKwkJICAgICAgIGNsb3N1cmVfZnVuYywgIFwKKwkJICAgICAgIGNvZGVsb2MpOworI2VuZGlmCisKICAgY2xvc3VyZS0+Y2lmICA9IGNpZjsKICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOwogICBjbG9zdXJlLT5mdW4gID0gZnVuOwogCiAgIHJldHVybiBGRklfT0s7CiB9CisKKy8qIEJlbG93IGFyZSByb3V0aW5lcyBmb3IgVkZQIGhhcmQtZmxvYXQgc3VwcG9ydC4gKi8KKworc3RhdGljIGludCByZWNfdmZwX3R5cGVfcCAoZmZpX3R5cGUgKnQsIGludCAqZWx0LCBpbnQgKmVsbnVtKQoreworICBzd2l0Y2ggKHQtPnR5cGUpCisgICAgeworICAgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6CisgICAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisgICAgICAqZWx0ID0gKGludCkgdC0+dHlwZTsKKyAgICAgICplbG51bSA9IDE7CisgICAgICByZXR1cm4gMTsKKworICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVDoKKyAgICAgICplbHQgPSBGRklfVFlQRV9GTE9BVDsKKyAgICAgICplbG51bSA9IHQtPnNpemUgLyBzaXplb2YgKGZsb2F0KTsKKyAgICAgIHJldHVybiAxOworCisgICAgY2FzZSBGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRToKKyAgICAgICplbHQgPSBGRklfVFlQRV9ET1VCTEU7CisgICAgICAqZWxudW0gPSB0LT5zaXplIC8gc2l6ZW9mIChkb3VibGUpOworICAgICAgcmV0dXJuIDE7CisKKyAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDo7CisgICAgICB7CisJaW50IGJhc2VfZWx0ID0gMCwgdG90YWxfZWxudW0gPSAwOworCWZmaV90eXBlICoqZWwgPSB0LT5lbGVtZW50czsKKwl3aGlsZSAoKmVsKQorCSAgeworCSAgICBpbnQgZWxfZWx0ID0gMCwgZWxfZWxudW0gPSAwOworCSAgICBpZiAoISByZWNfdmZwX3R5cGVfcCAoKmVsLCAmZWxfZWx0LCAmZWxfZWxudW0pCisJCXx8IChiYXNlX2VsdCAmJiBiYXNlX2VsdCAhPSBlbF9lbHQpCisJCXx8IHRvdGFsX2VsbnVtICsgZWxfZWxudW0gPiA0KQorCSAgICAgIHJldHVybiAwOworCSAgICBiYXNlX2VsdCA9IGVsX2VsdDsKKwkgICAgdG90YWxfZWxudW0gKz0gZWxfZWxudW07CisJICAgIGVsKys7CisJICB9CisJKmVsbnVtID0gdG90YWxfZWxudW07CisJKmVsdCA9IGJhc2VfZWx0OworCXJldHVybiAxOworICAgICAgfQorICAgIGRlZmF1bHQ6IDsKKyAgICB9CisgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IHZmcF90eXBlX3AgKGZmaV90eXBlICp0KQoreworICBpbnQgZWx0LCBlbG51bTsKKyAgaWYgKHJlY192ZnBfdHlwZV9wICh0LCAmZWx0LCAmZWxudW0pKQorICAgIHsKKyAgICAgIGlmICh0LT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKwl7CisJICBpZiAoZWxudW0gPT0gMSkKKwkgICAgdC0+dHlwZSA9IGVsdDsKKwkgIGVsc2UKKwkgICAgdC0+dHlwZSA9IChlbHQgPT0gRkZJX1RZUEVfRkxPQVQKKwkJICAgICAgID8gRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCQkgICAgICAgOiBGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRSk7CisJfQorICAgICAgcmV0dXJuIChpbnQpIHQtPnR5cGU7CisgICAgfQorICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgcGxhY2VfdmZwX2FyZyAoZmZpX2NpZiAqY2lmLCBmZmlfdHlwZSAqdCkKK3sKKyAgaW50IHJlZyA9IGNpZi0+dmZwX3JlZ19mcmVlOworICBpbnQgbnJlZ3MgPSB0LT5zaXplIC8gc2l6ZW9mIChmbG9hdCk7CisgIGludCBhbGlnbiA9ICgodC0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUCisJCXx8IHQtPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQpID8gMSA6IDIpOworICAvKiBBbGlnbiByZWdpc3RlciBudW1iZXIuICovCisgIGlmICgocmVnICYgMSkgJiYgYWxpZ24gPT0gMikKKyAgICByZWcrKzsKKyAgd2hpbGUgKHJlZyArIG5yZWdzIDw9IDE2KQorICAgIHsKKyAgICAgIGludCBzLCBuZXdfdXNlZCA9IDA7CisgICAgICBmb3IgKHMgPSByZWc7IHMgPCByZWcgKyBucmVnczsgcysrKQorCXsKKwkgIG5ld191c2VkIHw9ICgxIDw8IHMpOworCSAgaWYgKGNpZi0+dmZwX3VzZWQgJiAoMSA8PCBzKSkKKwkgICAgeworCSAgICAgIHJlZyArPSBhbGlnbjsKKwkgICAgICBnb3RvIG5leHRfcmVnOworCSAgICB9CisJfQorICAgICAgLyogRm91bmQgcmVncyB0byBhbGxvY2F0ZS4gKi8KKyAgICAgIGNpZi0+dmZwX3VzZWQgfD0gbmV3X3VzZWQ7CisgICAgICBjaWYtPnZmcF9hcmdzW2NpZi0+dmZwX25hcmdzKytdID0gcmVnOworCisgICAgICAvKiBVcGRhdGUgdmZwX3JlZ19mcmVlLiAqLworICAgICAgaWYgKGNpZi0+dmZwX3VzZWQgJiAoMSA8PCBjaWYtPnZmcF9yZWdfZnJlZSkpCisJeworCSAgcmVnICs9IG5yZWdzOworCSAgd2hpbGUgKGNpZi0+dmZwX3VzZWQgJiAoMSA8PCByZWcpKQorCSAgICByZWcgKz0gMTsKKwkgIGNpZi0+dmZwX3JlZ19mcmVlID0gcmVnOworCX0KKyAgICAgIHJldHVybjsKKyAgICBuZXh0X3JlZzogOworICAgIH0KK30KKworc3RhdGljIHZvaWQgbGF5b3V0X3ZmcF9hcmdzIChmZmlfY2lmICpjaWYpCit7CisgIGludCBpOworICAvKiBJbml0IFZGUCBmaWVsZHMgKi8KKyAgY2lmLT52ZnBfdXNlZCA9IDA7CisgIGNpZi0+dmZwX25hcmdzID0gMDsKKyAgY2lmLT52ZnBfcmVnX2ZyZWUgPSAwOworICBtZW1zZXQgKGNpZi0+dmZwX2FyZ3MsIC0xLCAxNik7IC8qIEluaXQgdG8gLTEuICovCisKKyAgZm9yIChpID0gMDsgaSA8IGNpZi0+bmFyZ3M7IGkrKykKKyAgICB7CisgICAgICBmZmlfdHlwZSAqdCA9IGNpZi0+YXJnX3R5cGVzW2ldOworICAgICAgaWYgKHZmcF90eXBlX3AgKHQpKQorCXBsYWNlX3ZmcF9hcmcgKGNpZiwgdCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2ZmaXRhcmdldC5oCmluZGV4IGE5NTc0MjYuLjI2ZDQ5NGQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDEwICBDb2RlU291cmNlcnkKKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKwogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBBUk0uCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMzAsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCwxMSArNDEsMjcgQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAorICBGRklfVkZQLAorICBGRklfTEFTVF9BQkksCisjaWZkZWYgX19BUk1fUENTX1ZGUAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVkZQLAorI2Vsc2UKICAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyNlbmRpZgogfSBmZmlfYWJpOwogI2VuZGlmCiAKKyNkZWZpbmUgRkZJX0VYVFJBX0NJRl9GSUVMRFMJCQlcCisgIGludCB2ZnBfdXNlZDsJCQkJCVwKKyAgc2hvcnQgdmZwX3JlZ19mcmVlLCB2ZnBfbmFyZ3M7CQlcCisgIHNpZ25lZCBjaGFyIHZmcF9hcmdzWzE2XQkJCVwKKworLyogSW50ZXJuYWxseSB1c2VkLiAqLworI2RlZmluZSBGRklfVFlQRV9TVFJVQ1RfVkZQX0ZMT0FUICAoRkZJX1RZUEVfTEFTVCArIDEpCisjZGVmaW5lIEZGSV9UWVBFX1NUUlVDVF9WRlBfRE9VQkxFIChGRklfVFlQRV9MQVNUICsgMikKKworI2RlZmluZSBGRklfVEFSR0VUX1NQRUNJRklDX1ZBUklBRElDCisKIC8qIC0tLS0gRGVmaW5pdGlvbnMgZm9yIGNsb3N1cmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNkZWZpbmUgRkZJX0NMT1NVUkVTIDEKQEAgLTQ2LDQgKzY5LDMgQEAKICNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKIAogI2VuZGlmCi0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9nZW50cmFtcC5zaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9nZW50cmFtcC5zaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGYwYjg2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL2dlbnRyYW1wLnNoCkBAIC0wLDAgKzEsMTE4IEBACisjIS9iaW4vc2gKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAgZ2VudHJhbXAuc2ggLSBDb3B5cmlnaHQgKGMpIDIwMTAsIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCisjICAKKyMgIEFSTSBUcmFtcG9saW5lIFBhZ2UgR2VuZXJhdG9yCisjCisjICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyMgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorIyAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisjICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisjICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyMgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworIyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyMgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyMgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorIyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyMgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorIyAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCisjICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1BST0dOQU1FPSQwCisKKyMgRWFjaCB0cmFtcG9saW5lIGlzIGV4YWN0bHkgMyBpbnN0cnVjdGlvbnMsIG9yIDEyIGJ5dGVzLiBJZiBhbnkgb2YgdGhlc2UgdmFsdWVzIGNoYW5nZSwKKyMgdGhlIGVudGlyZSBhcm0gdHJhbXBvbGluZSBpbXBsZW1lbnRhdGlvbiBtdXN0IGJlIHVwZGF0ZWQgdG8gbWF0Y2gsIHRvby4KKworIyBTaXplIG9mIGFuIGluZGl2aWR1YWwgdHJhbXBvbGluZSwgaW4gYnl0ZXMKK1RSQU1QT0xJTkVfU0laRT0xMgorCisjIFBhZ2Ugc2l6ZSwgaW4gYnl0ZXMKK1BBR0VfU0laRT00MDk2CisKKyMgQ29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgcmVhY2hhYmxlIGNvbmZpZyBwYWdlOyBUaGUgZmlyc3QgMTYgYnl0ZXMgb2YgdGhlIGNvbmZpZyBwYWdlCisjIGFyZSB1bnJlYWNoYWJsZSBkdWUgdG8gb3VyIG1heGltdW0gcGMtcmVsYXRpdmUgbGRyIG9mZnNldC4KK1BBR0VfQVZBSUw9YGV4cHIgJFBBR0VfU0laRSAtIDE2YAorCisjIENvbXB1dGUgdGhlIG51bWJlciBvZiBvZiBhdmFpbGFibGUgdHJhbXBvbGluZXMuIAorVFJBTVBPTElORV9DT1VOVD1gZXhwciAkUEFHRV9BVkFJTCAvICRUUkFNUE9MSU5FX1NJWkVgCisKK2hlYWRlciAoKSB7CisgICAgZWNobyAiIyBHRU5FUkFURUQgQ09ERSAtIERPIE5PVCBFRElUIgorICAgIGVjaG8gIiMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgJFBST0dOQU1FIgorICAgIGVjaG8gIiIKKworICAgICMgV3JpdGUgb3V0IHRoZSBsaWNlbnNlIGhlYWRlcgorY2F0IDw8IEVPRgorIyAgQ29weXJpZ2h0IChjKSAyMDEwLCBQbGF1c2libGUgTGFicyBDb29wZXJhdGl2ZSwgSW5jLgorIyAgCisjICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKKyMgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQorIyAgYGBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisjICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisjICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyMgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworIyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyMgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKKyMgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgorIyAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKKyMgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAorIyAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCisjICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKKyMgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyMgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyMgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0VPRgorCisgICAgIyBXcml0ZSBvdXQgdGhlIHRyYW1wb2xpbmUgdGFibGUsIGFsaWduZWQgdG8gdGhlIHBhZ2UgYm91bmRhcnkKKyAgICBlY2hvICIudGV4dCIKKyAgICBlY2hvICIuYWxpZ24gMTIiCisgICAgZWNobyAiLmdsb2JsIF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlX3BhZ2UiCisgICAgZWNobyAiX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZToiCit9CisKKworIyBXQVJOSU5HIC0gRG9uJ3QgbW9kaWZ5IHRoZSB0cmFtcG9saW5lIGNvZGUgc2l6ZSB3aXRob3V0IGFsc28gdXBkYXRpbmcgdGhlIHJlbGV2ZW50IGxpYmZmaSBjb2RlCit0cmFtcG9saW5lICgpIHsKKyAgICBjYXQgPDwgRU5ECisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworRU5ECit9CisKK21haW4gKCkgeworICAgICMgV3JpdGUgb3V0IHRoZSBoZWFkZXIKKyAgICBoZWFkZXIKKworICAgICMgV3JpdGUgb3V0IHRoZSB0cmFtcG9saW5lcworICAgIGxvY2FsIGk9MAorICAgIHdoaWxlIFsgJGkgLWx0ICR7VFJBTVBPTElORV9DT1VOVH0gXTsgZG8KKyAgICAgICAgdHJhbXBvbGluZQorICAgICAgICBsb2NhbCBpPWBleHByICRpICsgMWAKKyAgICBkb25lCit9CisKK21haW4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vc3lzdi5TCmluZGV4IDkwNjQzMTguLmZiMzhjZDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3N5c3YuUwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTgsIDIwMDggUmVkIEhhdCwgSW5jLgorICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4LCAyMDA4LCAyMDExIFJlZCBIYXQsIEluYy4KKwkgICAgQ29weXJpZ2h0IChjKSAyMDExIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCiAgICAKICAgIEFSTSBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMzksNyArNDAsMTEgQEAKICNlbHNlCiAjZGVmaW5lIENOQU1FKHgpIHgKICNlbmRpZgorI2lmZGVmIF9fQVBQTEVfXworI2RlZmluZSBFTlRSWSh4KSAuZ2xvYmwgXyMjeDsgXyMjeDoKKyNlbHNlCiAjZGVmaW5lIEVOVFJZKHgpIC5nbG9ibCBDTkFNRSh4KTsgLnR5cGUgQ05BTUUoeCksJWZ1bmN0aW9uOyBDTkFNRSh4KToKKyNlbmRpZiAvKiBfX0FQUExFX18gKi8KICNlbmRpZgogCiAjaWZkZWYgX19FTEZfXwpAQCAtNDgsNiArNTMsMTIgQEAKICNkZWZpbmUgTFNZTSh4KSB4CiAjZW5kaWYKIAorLyogVXNlIHRoZSBTT0ZURlAgcmV0dXJuIHZhbHVlIEFCSSBvbiBNYWMgT1MgWCwgYXMgcGVyIHRoZSBpT1MgQUJJCisgIEZ1bmN0aW9uIENhbGwgR3VpZGUgKi8KKyNpZmRlZiBfX0FQUExFX18KKyNkZWZpbmUgX19TT0ZURlBfXworI2VuZGlmCisKIC8qIFdlIG5lZWQgYSBiZXR0ZXIgd2F5IG9mIHRlc3RpbmcgZm9yIHRoaXMsIGJ1dCBmb3Igbm93LCB0aGlzIGlzIGFsbCAKICAgIHdlIGNhbiBkby4gICovCiBAIFRoaXMgc2VsZWN0cyB0aGUgbWluaW11bSBhcmNoaXRlY3R1cmUgbGV2ZWwgcmVxdWlyZWQuCkBAIC0xMDUsMjEgKzExNiwzMyBAQAogCS5hbGlnbiAwCiAJLnRodW1iCiAJLnRodW1iX2Z1bmMKKyNpZmRlZiBfX0FQUExFX18KKwlFTlRSWSgkMCkKKyNlbHNlCiAJRU5UUlkoXG5hbWUpCisjZW5kaWYKIAlieAlwYwogCW5vcAogCS5hcm0KIAlVTldJTkQgLmZuc3RhcnQKIC8qIEEgaG9vayB0byB0ZWxsIGdkYiB0aGF0IHdlJ3ZlIHN3aXRjaGVkIHRvIEFSTSBtb2RlLiAgQWxzbyB1c2VkIHRvIGNhbGwKICAgIGRpcmVjdGx5IGZyb20gb3RoZXIgbG9jYWwgYXJtIHJvdXRpbmVzLiAgKi8KLV9MX19cbmFtZToJCQorI2lmZGVmIF9fQVBQTEVfXworX0xfXyQwOgorI2Vsc2UKK19MX19cbmFtZToKKyNlbmRpZgogLmVuZG0KICNlbHNlCiAubWFjcm8JQVJNX0ZVTkNfU1RBUlQgbmFtZQogCS50ZXh0CiAJLmFsaWduIDAKIAkuYXJtCisjaWZkZWYgX19BUFBMRV9fCisJRU5UUlkoJDApCisjZWxzZQogCUVOVFJZKFxuYW1lKQorI2VuZGlmCiAJVU5XSU5EIC5mbnN0YXJ0CiAuZW5kbQogI2VuZGlmCkBAIC0xNDEsMTMgKzE2NCwxMSBAQAogI2VuZGlmCiAuZW5kbQogCi0KIAlAIHIwOiAgIGZmaV9wcmVwX2FyZ3MKIAlAIHIxOiAgICZlY2lmCiAJQCByMjogICBjaWYtPmJ5dGVzCiAJQCByMzogICBmaWctPmZsYWdzCiAJQCBzcCswOiBlY2lmLnJ2YWx1ZQotCUAgc3ArNDogZm4KIAogCUAgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiBBUk1fRlVOQ19TVEFSVCBmZmlfY2FsbF9TWVNWCkBAIC0xNjIsMjQgKzE4MywyMyBAQAogCXN1YglzcCwgZnAsIHIyCiAKIAlAIFBsYWNlIGFsbCBvZiB0aGUgZmZpX3ByZXBfYXJncyBpbiBwb3NpdGlvbgotCW1vdglpcCwgcjAKIAltb3YJcjAsIHNwCiAJQCAgICAgcjEgYWxyZWFkeSBzZXQKIAogCUAgQ2FsbCBmZmlfcHJlcF9hcmdzKHN0YWNrLCAmZWNpZikKLQljYWxsX3JlZyhpcCkKKwlibAlDTkFNRShmZmlfcHJlcF9hcmdzKQogCiAJQCBtb3ZlIGZpcnN0IDQgcGFyYW1ldGVycyBpbiByZWdpc3RlcnMKIAlsZG1pYQlzcCwge3IwLXIzfQogCiAJQCBhbmQgYWRqdXN0IHN0YWNrCi0JbGRyCWlwLCBbZnAsICM4XQotICAgICAgICBjbXAJaXAsICMxNgotCW1vdmhzCWlwLCAjMTYKLSAgICAgICAgYWRkCXNwLCBzcCwgaXAKKwlzdWIJbHIsIGZwLCBzcAlAIGNpZi0+Ynl0ZXMgPT0gZnAgLSBzcAorCWxkcglpcCwgW2ZwXQlAIGxvYWQgZm4oKSBpbiBhZHZhbmNlCisJY21wCWxyLCAjMTYKKwltb3ZocwlsciwgIzE2CisJYWRkCXNwLCBzcCwgbHIKIAogCUAgY2FsbCAoZm4pICguLi4pCi0JbGRyCWlwLCBbZnAsICMyOF0KIAljYWxsX3JlZyhpcCkKIAkKIAlAIFJlbW92ZSB0aGUgc3BhY2Ugd2UgcHVzaGVkIGZvciB0aGUgYXJncwpAQCAtMjI0LDExICsyNDQsMTkgQEAKICNlbmRpZgogCiBMU1lNKExlcGlsb2d1ZSk6Ci0JUkVUTERNCSJyMC1yMyxmcCIKKyNpZiBkZWZpbmVkIChfX0lOVEVSV09SS0lOR19fKQorCWxkbWlhICAgc3AhLCB7cjAtcjMsZnAsIGxyfQorCWJ4CWxyCisjZWxzZQorCWxkbWlhICAgc3AhLCB7cjAtcjMsZnAsIHBjfQorI2VuZGlmCiAKIC5mZmlfY2FsbF9TWVNWX2VuZDoKIAlVTldJTkQgLmZuZW5kCisjaWZkZWYgX19FTEZfXwogICAgICAgICAuc2l6ZSAgICBDTkFNRShmZmlfY2FsbF9TWVNWKSwuZmZpX2NhbGxfU1lTVl9lbmQtQ05BTUUoZmZpX2NhbGxfU1lTVikKKyNlbmRpZgorCiAKIC8qCiAJdW5zaWduZWQgaW50IEZGSV9ISURERU4KQEAgLTI0NCwxMSArMjcyLDExIEBACiAJc3RtZmQJc3AhLCB7aXAsIGxyfQogCVVOV0lORCAuc2F2ZQl7cjAsIGxyfQogCWFkZAlyMiwgc3AsICM4Ci0JLnBhZCAjMTYKKwlVTldJTkQgLnBhZCAjMTYKIAlzdWIJc3AsIHNwLCAjMTYKIAlzdHIJc3AsIFtzcCwgIzhdCiAJYWRkCXIxLCBzcCwgIzgKLQlibAlmZmlfY2xvc3VyZV9TWVNWX2lubmVyCisJYmwJQ05BTUUoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcikKIAljbXAJcjAsICNGRklfVFlQRV9JTlQKIAliZXEJLkxyZXRpbnQKIApAQCAtMzAwLDcgKzMyOCwxNzcgQEAKIAogLmZmaV9jbG9zdXJlX1NZU1ZfZW5kOgogCVVOV0lORCAuZm5lbmQKKyNpZmRlZiBfX0VMRl9fCiAgICAgICAgIC5zaXplICAgIENOQU1FKGZmaV9jbG9zdXJlX1NZU1YpLC5mZmlfY2xvc3VyZV9TWVNWX2VuZC1DTkFNRShmZmlfY2xvc3VyZV9TWVNWKQorI2VuZGlmCisKKworLyogQmVsb3cgYXJlIFZGUCBoYXJkLWZsb2F0IEFCSSBjYWxsIGFuZCBjbG9zdXJlIGltcGxlbWVudGF0aW9ucy4KKyAgIEFkZCBWRlAgRlBVIGRpcmVjdGl2ZSBoZXJlLiBUaGlzIGlzIG9ubHkgY29tcGlsZWQgaW50byB0aGUgbGlicmFyeQorICAgdW5kZXIgRUFCSS4gICovCisjaWZkZWYgX19BUk1fRUFCSV9fCisJLmZwdQl2ZnAKKworCUAgcjA6ICAgZm4KKwlAIHIxOiAgICZlY2lmCisJQCByMjogICBjaWYtPmJ5dGVzCisJQCByMzogICBmaWctPmZsYWdzCisJQCBzcCswOiBlY2lmLnJ2YWx1ZQorCitBUk1fRlVOQ19TVEFSVCBmZmlfY2FsbF9WRlAKKwlAIFNhdmUgcmVnaXN0ZXJzCisgICAgICAgIHN0bWZkCXNwISwge3IwLXIzLCBmcCwgbHJ9CisJVU5XSU5EIC5zYXZlCXtyMC1yMywgZnAsIGxyfQorCW1vdglmcCwgc3AKKwlVTldJTkQgLnNldGZwCWZwLCBzcAorCisJQCBNYWtlIHJvb20gZm9yIGFsbCBvZiB0aGUgbmV3IGFyZ3MuCisJc3ViCXNwLCBzcCwgcjIKKworCUAgTWFrZSByb29tIGZvciBsb2FkaW5nIFZGUCBhcmdzCisJc3ViCXNwLCBzcCwgIzY0CisKKwlAIFBsYWNlIGFsbCBvZiB0aGUgZmZpX3ByZXBfYXJncyBpbiBwb3NpdGlvbgorCW1vdglyMCwgc3AKKwlAICAgICByMSBhbHJlYWR5IHNldAorCXN1YglyMiwgZnAsICM2NCAgIEAgVkZQIHNjcmF0Y2ggc3BhY2UKKworCUAgQ2FsbCBmZmlfcHJlcF9hcmdzKHN0YWNrLCAmZWNpZiwgdmZwX3NwYWNlKQorCWJsCUNOQU1FKGZmaV9wcmVwX2FyZ3MpCisKKwlAIExvYWQgVkZQIHJlZ2lzdGVyIGFyZ3MgaWYgbmVlZGVkCisJY21wCXIwLCAjMAorCWJlcQlMU1lNKExiYXNlX2FyZ3MpCisKKwlAIExvYWQgb25seSBkMCBpZiBwb3NzaWJsZQorCWNtcAlyMCwgIzMKKwlzdWIJaXAsIGZwLCAjNjQKKwlmbGRkbGUJZDAsIFtpcF0KKwlmbGRtaWFkZ3QJaXAsIHtkMC1kN30KKworTFNZTShMYmFzZV9hcmdzKToKKwlAIG1vdmUgZmlyc3QgNCBwYXJhbWV0ZXJzIGluIHJlZ2lzdGVycworCWxkbWlhCXNwLCB7cjAtcjN9CisKKwlAIGFuZCBhZGp1c3Qgc3RhY2sKKwlzdWIJbHIsIGlwLCBzcAlAIGNpZi0+Ynl0ZXMgPT0gKGZwIC0gNjQpIC0gc3AKKwlsZHIJaXAsIFtmcF0JQCBsb2FkIGZuKCkgaW4gYWR2YW5jZQorICAgICAgICBjbXAJbHIsICMxNgorCW1vdmhzCWxyLCAjMTYKKyAgICAgICAgYWRkCXNwLCBzcCwgbHIKKworCUAgY2FsbCAoZm4pICguLi4pCisJY2FsbF9yZWcoaXApCisKKwlAIFJlbW92ZSB0aGUgc3BhY2Ugd2UgcHVzaGVkIGZvciB0aGUgYXJncworCW1vdglzcCwgZnAKKworCUAgTG9hZCByMiB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yCisJQCB0aGUgcmV0dXJuIHZhbHVlCisJbGRyCXIyLCBbc3AsICMyNF0KKworCUAgTG9hZCByMyB3aXRoIHRoZSByZXR1cm4gdHlwZSBjb2RlIAorCWxkcglyMywgW3NwLCAjMTJdCisKKwlAIElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLAorCUAgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4KKwljbXAJcjIsICMwCisJYmVxCUxTWU0oTGVwaWxvZ3VlX3ZmcCkKKworCWNtcAlyMywgI0ZGSV9UWVBFX0lOVAorCXN0cmVxCXIwLCBbcjJdCisJYmVxCUxTWU0oTGVwaWxvZ3VlX3ZmcCkKKworCWNtcAlyMywgI0ZGSV9UWVBFX1NJTlQ2NAorCXN0bWVxaWEJcjIsIHtyMCwgcjF9CisJYmVxCUxTWU0oTGVwaWxvZ3VlX3ZmcCkKKworCWNtcAlyMywgI0ZGSV9UWVBFX0ZMT0FUCisJZnN0c2VxCXMwLCBbcjJdCisJYmVxCUxTWU0oTGVwaWxvZ3VlX3ZmcCkKKwkKKwljbXAJcjMsICNGRklfVFlQRV9ET1VCTEUKKwlmc3RkZXEJZDAsIFtyMl0KKwliZXEJTFNZTShMZXBpbG9ndWVfdmZwKQorCisJY21wCXIzLCAjRkZJX1RZUEVfU1RSVUNUX1ZGUF9GTE9BVAorCWNtcG5lCXIzLCAjRkZJX1RZUEVfU1RSVUNUX1ZGUF9ET1VCTEUKKwlmc3RtaWFkZXEJcjIsIHtkMC1kM30KKworTFNZTShMZXBpbG9ndWVfdmZwKToKKwlSRVRMRE0JInIwLXIzLGZwIgorCisuZmZpX2NhbGxfVkZQX2VuZDoKKwlVTldJTkQgLmZuZW5kCisgICAgICAgIC5zaXplICAgIENOQU1FKGZmaV9jYWxsX1ZGUCksLmZmaV9jYWxsX1ZGUF9lbmQtQ05BTUUoZmZpX2NhbGxfVkZQKQorCisKK0FSTV9GVU5DX1NUQVJUIGZmaV9jbG9zdXJlX1ZGUAorCWZzdG1mZGQJc3AhLCB7ZDAtZDd9CisJQCByMC1yMywgdGhlbiBkMC1kNworCVVOV0lORCAucGFkICM4MAorCWFkZAlpcCwgc3AsICM4MAorCXN0bWZkCXNwISwge2lwLCBscn0KKwlVTldJTkQgLnNhdmUJe3IwLCBscn0KKwlhZGQJcjIsIHNwLCAjNzIKKwlhZGQJcjMsIHNwLCAjOAorCVVOV0lORCAucGFkICM3MgorCXN1YglzcCwgc3AsICM3MgorCXN0cglzcCwgW3NwLCAjNjRdCisJYWRkCXIxLCBzcCwgIzY0CisJYmwJQ05BTUUoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcikKKworCWNtcAlyMCwgI0ZGSV9UWVBFX0lOVAorCWJlcQkuTHJldGludF92ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX0ZMT0FUCisJYmVxCS5McmV0ZmxvYXRfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9ET1VCTEUKKwljbXBuZQlyMCwgI0ZGSV9UWVBFX0xPTkdET1VCTEUKKwliZXEJLkxyZXRkb3VibGVfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9TSU5UNjQKKwliZXEJLkxyZXRsb25nbG9uZ192ZnAKKworCWNtcAlyMCwgI0ZGSV9UWVBFX1NUUlVDVF9WRlBfRkxPQVQKKwliZXEJLkxyZXRmbG9hdF9zdHJ1Y3RfdmZwCisKKwljbXAJcjAsICNGRklfVFlQRV9TVFJVQ1RfVkZQX0RPVUJMRQorCWJlcQkuTHJldGRvdWJsZV9zdHJ1Y3RfdmZwCisJCisuTGNsb3N1cmVfZXBpbG9ndWVfdmZwOgorCWFkZAlzcCwgc3AsICM3MgorCWxkbWZkCXNwLCB7c3AsIHBjfQorCisuTHJldGZsb2F0X3ZmcDoKKwlmbGRzCXMwLCBbc3BdCisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGRvdWJsZV92ZnA6CisJZmxkZAlkMCwgW3NwXQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRpbnRfdmZwOgorCWxkcglyMCwgW3NwXQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRsb25nbG9uZ192ZnA6CisJbGRtaWEJc3AsIHtyMCwgcjF9CisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisuTHJldGZsb2F0X3N0cnVjdF92ZnA6CisJZmxkbWlhZAlzcCwge2QwLWQxfQorCWIJLkxjbG9zdXJlX2VwaWxvZ3VlX3ZmcAorLkxyZXRkb3VibGVfc3RydWN0X3ZmcDoKKwlmbGRtaWFkCXNwLCB7ZDAtZDN9CisJYgkuTGNsb3N1cmVfZXBpbG9ndWVfdmZwCisKKy5mZmlfY2xvc3VyZV9WRlBfZW5kOgorCVVOV0lORCAuZm5lbmQKKyAgICAgICAgLnNpemUgICAgQ05BTUUoZmZpX2Nsb3N1cmVfVkZQKSwuZmZpX2Nsb3N1cmVfVkZQX2VuZC1DTkFNRShmZmlfY2xvc3VyZV9WRlApCisjZW5kaWYKKworRU5UUlkoZmZpX2FybV90cmFtcG9saW5lKQorCXN0bWZkIHNwISwge3IwLXIzfQorCWxkciByMCwgW3BjXQorCWxkciBwYywgW3BjXQogCiAjaWYgZGVmaW5lZCBfX0VMRl9fICYmIGRlZmluZWQgX19saW51eF9fCiAJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLCVwcm9nYml0cwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXJtL3RyYW1wb2xpbmUuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS90cmFtcG9saW5lLlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM1ZThkZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS90cmFtcG9saW5lLlMKQEAgLTAsMCArMSw0NDUwIEBACisjIEdFTkVSQVRFRCBDT0RFIC0gRE8gTk9UIEVESVQKKyMgVGhpcyBmaWxlIHdhcyBnZW5lcmF0ZWQgYnkgc3JjL2FybS9nZW50cmFtcC5zaAorCisjICBDb3B5cmlnaHQgKGMpIDIwMTAsIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCisjICAKKyMgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworIyAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCisjICBTb2Z0d2FyZScnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisjICB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCisjICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KKyMgIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0bworIyAgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKKyMgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorIworIyAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIEFTIElTJycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCisjICBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKKyMgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECisjICBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQKKyMgIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLAorIyAgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisjICBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSCisjICBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisudGV4dAorLmFsaWduIDEyCisuZ2xvYmwgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZQorX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGVfcGFnZToKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCisKKyAgICAvLyB0cmFtcG9saW5lCisgICAgLy8gU2F2ZSB0byBzdGFjaworICAgIHN0bWZkIHNwISwge3IwLXIzfQorCisgICAgLy8gTG9hZCB0aGUgY29udGV4dCBhcmd1bWVudCBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICAvLyBUaGlzIHBsYWNlcyB0aGUgZmlyc3QgdXNhYmxlIGNvbmZpZyB2YWx1ZSBhdCBfZmZpX2Nsb3N1cmVfdHJhbXBvbGluZV90YWJsZS00MDgwCisgICAgLy8gVGhpcyBhY2NvdW50cyBmb3IgdGhlIGFib3ZlIDQtYnl0ZSBzdG1mZCBpbnN0cnVjdGlvbiwgcGx1cyA4IGJ5dGVzIGNvbnN0YW50IHdoZW4gbG9hZGluZyBmcm9tIHBjLgorICAgIGxkciByMCwgW3BjLCAjLTQwOTJdCisKKyAgICAvLyBMb2FkIHRoZSBqdW1wIGFkZHJlc3MgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgbGRyIHBjLCBbcGMsICMtNDA5Ml0KKworCisgICAgLy8gdHJhbXBvbGluZQorICAgIC8vIFNhdmUgdG8gc3RhY2sKKyAgICBzdG1mZCBzcCEsIHtyMC1yM30KKworICAgIC8vIExvYWQgdGhlIGNvbnRleHQgYXJndW1lbnQgZnJvbSB0aGUgY29uZmlnIHBhZ2UuCisgICAgLy8gVGhpcyBwbGFjZXMgdGhlIGZpcnN0IHVzYWJsZSBjb25maWcgdmFsdWUgYXQgX2ZmaV9jbG9zdXJlX3RyYW1wb2xpbmVfdGFibGUtNDA4MAorICAgIC8vIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBhYm92ZSA0LWJ5dGUgc3RtZmQgaW5zdHJ1Y3Rpb24sIHBsdXMgOCBieXRlcyBjb25zdGFudCB3aGVuIGxvYWRpbmcgZnJvbSBwYy4KKyAgICBsZHIgcjAsIFtwYywgIy00MDkyXQorCisgICAgLy8gTG9hZCB0aGUganVtcCBhZGRyZXNzIGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIGxkciBwYywgW3BjLCAjLTQwOTJdCisKKworICAgIC8vIHRyYW1wb2xpbmUKKyAgICAvLyBTYXZlIHRvIHN0YWNrCisgICAgc3RtZmQgc3AhLCB7cjAtcjN9CisKKyAgICAvLyBMb2FkIHRoZSBjb250ZXh0IGFyZ3VtZW50IGZyb20gdGhlIGNvbmZpZyBwYWdlLgorICAgIC8vIFRoaXMgcGxhY2VzIHRoZSBmaXJzdCB1c2FibGUgY29uZmlnIHZhbHVlIGF0IF9mZmlfY2xvc3VyZV90cmFtcG9saW5lX3RhYmxlLTQwODAKKyAgICAvLyBUaGlzIGFjY291bnRzIGZvciB0aGUgYWJvdmUgNC1ieXRlIHN0bWZkIGluc3RydWN0aW9uLCBwbHVzIDggYnl0ZXMgY29uc3RhbnQgd2hlbiBsb2FkaW5nIGZyb20gcGMuCisgICAgbGRyIHIwLCBbcGMsICMtNDA5Ml0KKworICAgIC8vIExvYWQgdGhlIGp1bXAgYWRkcmVzcyBmcm9tIHRoZSBjb25maWcgcGFnZS4KKyAgICBsZHIgcGMsIFtwYywgIy00MDkyXQorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaS5jCmluZGV4IDM5ZmJhMmIuLjNkNDMzOTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2F2cjMyL2ZmaS5jCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDA5ICBCcmFkbGV5IFNtaXRoIDxicmFkQGJyYWQtc21pdGguY28udWs+CisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAxMSAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDkgIEJyYWRsZXkgU21pdGggPGJyYWRAYnJhZC1zbWl0aC5jby51az4KIAogICAgQVZSMzIgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKIApAQCAtMzk0LDcgKzM5NSw4IEBACiAgICAgdm9pZCAoKmZ1bikoZmZpX2NpZiosIHZvaWQqLCB2b2lkKiosIHZvaWQqKSwgdm9pZCAqdXNlcl9kYXRhLAogICAgIHZvaWQgKmNvZGVsb2MpCiB7Ci0gICAgRkZJX0FTU0VSVChjaWYtPmFiaSA9PSBGRklfU1lTVik7CisgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9TWVNWKQorICAgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgICAgdW5zaWduZWQgY2hhciAqX190cmFtcCA9ICh1bnNpZ25lZCBjaGFyKikoJmNsb3N1cmUtPnRyYW1wWzBdKTsKICAgICB1bnNpZ25lZCBpbnQgIF9fZnVuID0gKHVuc2lnbmVkIGludCkoJmZmaV9jbG9zdXJlX1NZU1YpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvYXZyMzIvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZml0YXJnZXQuaAppbmRleCAxYzc5OWIxLi5kMGM3NTg2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hdnIzMi9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAwOSAgQnJhZGxleSBTbWl0aCA8YnJhZEBicmFkLXNtaXRoLmNvLnVrPgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA5ICBCcmFkbGV5IFNtaXRoIDxicmFkQGJyYWQtc21pdGguY28udWs+CiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEFWUjMyLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsOCArMzksOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jbG9zdXJlcy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY2xvc3VyZXMuYwppbmRleCAwYjE1NmUwLi4xYjM3ODI3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jbG9zdXJlcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Nsb3N1cmVzLmMKQEAgLTEsNiArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgY2xvc3VyZXMuYyAtIENvcHlyaWdodCAoYykgMjAwNyAgUmVkIEhhdCwgSW5jLgotICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICBjbG9zdXJlcy5jIC0gQ29weXJpZ2h0IChjKSAyMDA3LCAyMDA5LCAyMDEwICBSZWQgSGF0LCBJbmMuCisgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDExIFBsYXVzaWJsZSBMYWJzIENvb3BlcmF0aXZlLCBJbmMuCiAKICAgIENvZGUgdG8gYWxsb2NhdGUgYW5kIGRlYWxsb2NhdGUgbWVtb3J5IGZvciBjbG9zdXJlcy4KIApAQCAtMzIsNyArMzMsNyBAQAogI2luY2x1ZGUgPGZmaS5oPgogI2luY2x1ZGUgPGZmaV9jb21tb24uaD4KIAotI2lmbmRlZiBGRklfTU1BUF9FWEVDX1dSSVQKKyNpZiAhRkZJX01NQVBfRVhFQ19XUklUICYmICFGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCiAjIGlmIF9fZ251X2xpbnV4X18KIC8qIFRoaXMgbWFjcm8gaW5kaWNhdGVzIGl0IG1heSBiZSBmb3JiaWRkZW4gdG8gbWFwIGFub255bW91cyBtZW1vcnkKICAgIHdpdGggYm90aCB3cml0ZSBhbmQgZXhlY3V0ZSBwZXJtaXNzaW9uLiAgQ29kZSBjb21waWxlZCB3aGVuIHRoaXMKQEAgLTQ0LDcgKzQ1LDcgQEAKICMgIGRlZmluZSBGRklfTU1BUF9FWEVDX1dSSVQgMQogIyAgZGVmaW5lIEhBVkVfTU5URU5UIDEKICMgZW5kaWYKLSMgaWYgZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KQorIyBpZiBkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykKIC8qIFdpbmRvd3Mgc3lzdGVtcyBtYXkgaGF2ZSBEYXRhIEV4ZWN1dGlvbiBQcm90ZWN0aW9uIChERVApIGVuYWJsZWQsIAogICAgd2hpY2ggcmVxdWlyZXMgdGhlIHVzZSBvZiBWaXJ0dWFsTWFsbG9jL1ZpcnR1YWxGcmVlIHRvIGFsbG9jL2ZyZWUKICAgIGV4ZWN1dGFibGUgbWVtb3J5LiAqLwpAQCAtNjMsNyArNjQsMTEgQEAKIAogI2lmIEZGSV9DTE9TVVJFUwogCi0jIGlmIEZGSV9NTUFQX0VYRUNfV1JJVAorIyBpZiBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFCisKKy8vIFBlci10YXJnZXQgaW1wbGVtZW50YXRpb247IEl0J3MgdW5jbGVhciB3aGF0IGNhbiByZWFzb25hYmxlIGJlIHNoYXJlZCBiZXR3ZWVuIHR3byBPUy9hcmNoaXRlY3R1cmUgaW1wbGVtZW50YXRpb25zLgorCisjIGVsaWYgRkZJX01NQVBfRVhFQ19XUklUIC8qICFGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFICovCiAKICNkZWZpbmUgVVNFX0xPQ0tTIDEKICNkZWZpbmUgVVNFX0RMX1BSRUZJWCAxCkBAIC0xNDYsNyArMTUxLDcgQEAKICAgICAgIHAgPSBzdHJjaHIgKHAgKyAxLCAnICcpOwogICAgICAgaWYgKHAgPT0gTlVMTCkKICAgICAgICAgYnJlYWs7Ci0gICAgICBpZiAoc3RybmNtcCAocCArIDEsICJzZWxpbnV4ZnMgIiwgMTApICE9IDApCisgICAgICBpZiAoc3RybmNtcCAocCArIDEsICJzZWxpbnV4ZnMgIiwgMTApID09IDApCiAgICAgICAgIHsKICAgICAgICAgICBmcmVlIChidWYpOwogICAgICAgICAgIGZjbG9zZSAoZik7CkBAIC0xNjcsNyArMTcyLDcgQEAKIAogI2VuZGlmIC8qICFGRklfTU1BUF9FWEVDX1NFTElOVVggKi8KIAotI2VsaWYgZGVmaW5lZCAoX19DWUdXSU5fXykKKyNlbGlmIGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKQogCiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KIApAQCAtMTkzLDExICsxOTgsMTEgQEAKIHN0YXRpYyBzaXplX3QgZGxtYWxsb2NfdXNhYmxlX3NpemUodm9pZCopIE1BWUJFX1VOVVNFRDsKIHN0YXRpYyB2b2lkIGRsbWFsbG9jX3N0YXRzKHZvaWQpIE1BWUJFX1VOVVNFRDsKIAotI2lmICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykKKyNpZiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpCiAvKiBVc2UgdGhlc2UgZm9yIG1tYXAgYW5kIG11bm1hcCB3aXRoaW4gZGxtYWxsb2MuYy4gICovCiBzdGF0aWMgdm9pZCAqZGxtbWFwKHZvaWQgKiwgc2l6ZV90LCBpbnQsIGludCwgaW50LCBvZmZfdCk7CiBzdGF0aWMgaW50IGRsbXVubWFwKHZvaWQgKiwgc2l6ZV90KTsKLSNlbmRpZiAvKiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pICovCisjZW5kaWYgLyogIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpIHx8IGRlZmluZWQoX19PUzJfXykpIHx8IGRlZmluZWQgKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX19JTlRFUklYKSAqLwogCiAjZGVmaW5lIG1tYXAgZGxtbWFwCiAjZGVmaW5lIG11bm1hcCBkbG11bm1hcApAQCAtMjA3LDcgKzIxMiw3IEBACiAjdW5kZWYgbW1hcAogI3VuZGVmIG11bm1hcAogCi0jaWYgIShkZWZpbmVkKFg4Nl9XSU4zMikgfHwgZGVmaW5lZChYODZfV0lONjQpKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKQorI2lmICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSB8fCBkZWZpbmVkKF9fT1MyX18pKSB8fCBkZWZpbmVkIChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fSU5URVJJWCkKIAogLyogQSBtdXRleCB1c2VkIHRvIHN5bmNocm9uaXplIGFjY2VzcyB0byAqZXhlYyogdmFyaWFibGVzIGluIHRoaXMgZmlsZS4gICovCiBzdGF0aWMgcHRocmVhZF9tdXRleF90IG9wZW5fdGVtcF9leGVjX2ZpbGVfbXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwpAQCAtMjk0LDcgKzI5OSw3IEBACiAgICAgICBzdHJ1Y3QgbW50ZW50IG1udDsKICAgICAgIGNoYXIgYnVmW01BWFBBVEhMRU4gKiAzXTsKIAotICAgICAgaWYgKGdldG1udGVudF9yIChsYXN0X21udGVudCwgJm1udCwgYnVmLCBzaXplb2YgKGJ1ZikpKQorICAgICAgaWYgKGdldG1udGVudF9yIChsYXN0X21udGVudCwgJm1udCwgYnVmLCBzaXplb2YgKGJ1ZikpID09IE5VTEwpCiAJcmV0dXJuIC0xOwogCiAgICAgICBpZiAoaGFzbW50b3B0ICgmbW50LCAicm8iKQpAQCAtNTIyLDcgKzUyNyw3IEBACiB9CiAjZW5kaWYKIAotI2VuZGlmIC8qICEoZGVmaW5lZChYODZfV0lOMzIpIHx8IGRlZmluZWQoWDg2X1dJTjY0KSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgKi8KKyNlbmRpZiAvKiAhKGRlZmluZWQoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9XSU42NCkgfHwgZGVmaW5lZChfX09TMl9fKSkgfHwgZGVmaW5lZCAoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfX0lOVEVSSVgpICovCiAKIC8qIEFsbG9jYXRlIGEgY2h1bmsgb2YgbWVtb3J5IHdpdGggdGhlIGdpdmVuIHNpemUuICBSZXR1cm5zIGEgcG9pbnRlcgogICAgdG8gdGhlIHdyaXRhYmxlIGFkZHJlc3MsIGFuZCBzZXRzICpDT0RFIHRvIHRoZSBleGVjdXRhYmxlCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZmkuYwppbmRleCBlOWMzOTUzLi5hYWNhNWIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpLmMKQEAgLTE1MywyMSArMTUzLDI0IEBACiAgIHJldHVybiAoc3RydWN0X2NvdW50KTsKIH0KIAotZmZpX3N0YXR1cwotZmZpX3ByZXBfY2lmIChmZmlfY2lmICogY2lmLAotCSAgICAgIGZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgbmFyZ3MsCi0JICAgICAgZmZpX3R5cGUgKiBydHlwZSwgZmZpX3R5cGUgKiogYXR5cGVzKQorZmZpX3N0YXR1cyBGRklfSElEREVOCitmZmlfcHJlcF9jaWZfY29yZSAoZmZpX2NpZiAqIGNpZiwKKwkgICAgICAgICAgIGZmaV9hYmkgYWJpLCB1bnNpZ25lZCBpbnQgaXN2YXJpYWRpYywKKwkJICAgdW5zaWduZWQgaW50IG5maXhlZGFyZ3MsIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorCSAgICAgICAgICAgZmZpX3R5cGUgKiBydHlwZSwgZmZpX3R5cGUgKiogYXR5cGVzKQogewogICB1bnNpZ25lZCBieXRlcyA9IDA7CiAgIHVuc2lnbmVkIGludCBpOwogICBmZmlfdHlwZSAqKnB0cjsKIAogICBGRklfQVNTRVJUIChjaWYgIT0gTlVMTCk7Ci0gIEZGSV9BU1NFUlQgKChhYmkgPiBGRklfRklSU1RfQUJJKSAmJiAoYWJpIDw9IEZGSV9ERUZBVUxUX0FCSSkpOworICBGRklfQVNTRVJUKCghaXN2YXJpYWRpYykgfHwgKG5maXhlZGFyZ3MgPj0gMSkpOworICBGRklfQVNTRVJUKG5maXhlZGFyZ3MgPD0gbnRvdGFsYXJncyk7CisgIEZGSV9BU1NFUlQgKGFiaSA+IEZGSV9GSVJTVF9BQkkgJiYgYWJpIDwgRkZJX0xBU1RfQUJJKTsKIAogICBjaWYtPmFiaSA9IGFiaTsKICAgY2lmLT5hcmdfdHlwZXMgPSBhdHlwZXM7Ci0gIGNpZi0+bmFyZ3MgPSBuYXJnczsKKyAgY2lmLT5uYXJncyA9IG50b3RhbGFyZ3M7CiAgIGNpZi0+cnR5cGUgPSBydHlwZTsKIAogICBjaWYtPmZsYWdzID0gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9jcmlzL2ZmaXRhcmdldC5oCmluZGV4IDQyNTdmMTAuLmI4MzdlOTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2NyaXMvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvY3Jpcy9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBDUklTLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwogdHlwZWRlZiBzaWduZWQgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsOCArMzksOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1NZU1YsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgIEZGSV9MQVNUX0FCSSwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZGxtYWxsb2MuYwppbmRleCA1ODJkZGMzLi4yNzczOTUzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9kbG1hbGxvYy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2RsbWFsbG9jLmMKQEAgLTQ2NCw2ICs0NjQsMTQgQEAKICNkZWZpbmUgX0dOVV9TT1VSQ0UgMQogI2VuZGlmICAvKiBXSU4zMiAqLwogCisjaWZkZWYgX19PUzJfXworI2RlZmluZSBJTkNMX0RPUworI2luY2x1ZGUgPG9zMi5oPgorI2RlZmluZSBIQVZFX01NQVAgMQorI2RlZmluZSBIQVZFX01PUkVDT1JFIDAKKyNkZWZpbmUgTEFDS1NfU1lTX01NQU5fSAorI2VuZGlmICAvKiBfX09TMl9fICovCisKICNpZiBkZWZpbmVkKERBUldJTikgfHwgZGVmaW5lZChfREFSV0lOKQogLyogTWFjIE9TWCBkb2NzIGFkdmlzZSBub3QgdG8gdXNlIHNicms7IGl0IHNlZW1zIGJldHRlciB0byB1c2UgbW1hcCAqLwogI2lmbmRlZiBIQVZFX01PUkVDT1JFCkBAIC02MTksNiArNjI3LDkgQEAKICNpbmNsdWRlICIvdXNyL2luY2x1ZGUvbWFsbG9jLmgiCiAjZWxzZSAvKiBIQVZFX1VTUl9JTkNMVURFX01BTExPQ19IICovCiAKKy8qIEhQLVVYJ3Mgc3RkbGliLmggcmVkZWZpbmVzIG1hbGxpbmZvIHVubGVzcyBfU1RSVUNUX01BTExJTkZPIGlzIGRlZmluZWQgKi8KKyNkZWZpbmUgX1NUUlVDVF9NQUxMSU5GTworCiBzdHJ1Y3QgbWFsbGluZm8gewogICBNQUxMSU5GT19GSUVMRF9UWVBFIGFyZW5hOyAgICAvKiBub24tbW1hcHBlZCBzcGFjZSBhbGxvY2F0ZWQgZnJvbSBzeXN0ZW0gKi8KICAgTUFMTElORk9fRklFTERfVFlQRSBvcmRibGtzOyAgLyogbnVtYmVyIG9mIGZyZWUgY2h1bmtzICovCkBAIC0xMjkzLDcgKzEzMDQsNyBAQAogI2RlZmluZSBJU19NTUFQUEVEX0JJVCAgICAgICAoU0laRV9UX09ORSkKICNkZWZpbmUgVVNFX01NQVBfQklUICAgICAgICAgKFNJWkVfVF9PTkUpCiAKLSNpZm5kZWYgV0lOMzIKKyNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQgKF9fT1MyX18pCiAjZGVmaW5lIENBTExfTVVOTUFQKGEsIHMpICAgIG11bm1hcCgoYSksIChzKSkKICNkZWZpbmUgTU1BUF9QUk9UICAgICAgICAgICAgKFBST1RfUkVBRHxQUk9UX1dSSVRFKQogI2lmICFkZWZpbmVkKE1BUF9BTk9OWU1PVVMpICYmIGRlZmluZWQoTUFQX0FOT04pCkBAIC0xMzE2LDYgKzEzMjcsNDIgQEAKICNlbmRpZiAvKiBNQVBfQU5PTllNT1VTICovCiAKICNkZWZpbmUgRElSRUNUX01NQVAocykgICAgICAgQ0FMTF9NTUFQKHMpCisKKyNlbGlmIGRlZmluZWQoX19PUzJfXykKKworLyogT1MvMiBNTUFQIHZpYSBEb3NBbGxvY01lbSAqLworc3RhdGljIHZvaWQqIG9zMm1tYXAoc2l6ZV90IHNpemUpIHsKKyAgdm9pZCogcHRyOworICBpZiAoRG9zQWxsb2NNZW0oJnB0ciwgc2l6ZSwgT0JKX0FOWXxQQUdfQ09NTUlUfFBBR19SRUFEfFBBR19XUklURSkgJiYKKyAgICAgIERvc0FsbG9jTWVtKCZwdHIsIHNpemUsIFBBR19DT01NSVR8UEFHX1JFQUR8UEFHX1dSSVRFKSkKKyAgICByZXR1cm4gTUZBSUw7CisgIHJldHVybiBwdHI7Cit9CisKKyNkZWZpbmUgb3MyZGlyZWN0X21tYXAobikgICAgIG9zMm1tYXAobikKKworLyogVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyByZWxlYXNpbmcgY29hbGVzZWQgc2VnbWVudHMgKi8KK3N0YXRpYyBpbnQgb3MybXVubWFwKHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpIHsKKyAgd2hpbGUgKHNpemUpIHsKKyAgICBVTE9ORyB1bFNpemUgPSBzaXplOworICAgIFVMT05HIHVsRmxhZ3MgPSAwOworICAgIGlmIChEb3NRdWVyeU1lbShwdHIsICZ1bFNpemUsICZ1bEZsYWdzKSAhPSAwKQorICAgICAgcmV0dXJuIC0xOworICAgIGlmICgodWxGbGFncyAmIFBBR19CQVNFKSA9PSAwIHx8KHVsRmxhZ3MgJiBQQUdfQ09NTUlUKSA9PSAwIHx8CisgICAgICAgIHVsU2l6ZSA+IHNpemUpCisgICAgICByZXR1cm4gLTE7CisgICAgaWYgKERvc0ZyZWVNZW0ocHRyKSAhPSAwKQorICAgICAgcmV0dXJuIC0xOworICAgIHB0ciA9ICggdm9pZCAqICkgKCAoIGNoYXIgKiApIHB0ciArIHVsU2l6ZSApOworICAgIHNpemUgLT0gdWxTaXplOworICB9CisgIHJldHVybiAwOworfQorCisjZGVmaW5lIENBTExfTU1BUChzKSAgICAgICAgIG9zMm1tYXAocykKKyNkZWZpbmUgQ0FMTF9NVU5NQVAoYSwgcykgICAgb3MybXVubWFwKChhKSwgKHMpKQorI2RlZmluZSBESVJFQ1RfTU1BUChzKSAgICAgICBvczJkaXJlY3RfbW1hcChzKQorCiAjZWxzZSAvKiBXSU4zMiAqLwogCiAvKiBXaW4zMiBNTUFQIHZpYSBWaXJ0dWFsQWxsb2MgKi8KQEAgLTEzOTIsNyArMTQzOSw3IEBACiAgICAgdW5pcXVlIG1wYXJhbXMgdmFsdWVzIGFyZSBpbml0aWFsaXplZCBvbmx5IG9uY2UuCiAqLwogCi0jaWZuZGVmIFdJTjMyCisjaWYgIWRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fT1MyX18pCiAvKiBCeSBkZWZhdWx0IHVzZSBwb3NpeCBsb2NrcyAqLwogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNkZWZpbmUgTUxPQ0tfVCBwdGhyZWFkX211dGV4X3QKQEAgLTE0MDYsNiArMTQ1MywxNiBAQAogCiBzdGF0aWMgTUxPQ0tfVCBtYWdpY19pbml0X211dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKIAorI2VsaWYgZGVmaW5lZChfX09TMl9fKQorI2RlZmluZSBNTE9DS19UIEhNVFgKKyNkZWZpbmUgSU5JVElBTF9MT0NLKGwpICAgICAgRG9zQ3JlYXRlTXV0ZXhTZW0oMCwgbCwgMCwgRkFMU0UpCisjZGVmaW5lIEFDUVVJUkVfTE9DSyhsKSAgICAgIERvc1JlcXVlc3RNdXRleFNlbSgqbCwgU0VNX0lOREVGSU5JVEVfV0FJVCkKKyNkZWZpbmUgUkVMRUFTRV9MT0NLKGwpICAgICAgRG9zUmVsZWFzZU11dGV4U2VtKCpsKQorI2lmIEhBVkVfTU9SRUNPUkUKK3N0YXRpYyBNTE9DS19UIG1vcmVjb3JlX211dGV4OworI2VuZGlmIC8qIEhBVkVfTU9SRUNPUkUgKi8KK3N0YXRpYyBNTE9DS19UIG1hZ2ljX2luaXRfbXV0ZXg7CisKICNlbHNlIC8qIFdJTjMyICovCiAvKgogICAgQmVjYXVzZSBsb2NrLXByb3RlY3RlZCByZWdpb25zIGhhdmUgYm91bmRlZCB0aW1lcywgYW5kIHRoZXJlCkBAIC0yNDk3LDEwICsyNTU0LDE1IEBACiAgICAgfQogICAgIFJFTEVBU0VfTUFHSUNfSU5JVF9MT0NLKCk7CiAKLSNpZm5kZWYgV0lOMzIKKyNpZiAhZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQoX19PUzJfXykKICAgICBtcGFyYW1zLnBhZ2Vfc2l6ZSA9IG1hbGxvY19nZXRwYWdlc2l6ZTsKICAgICBtcGFyYW1zLmdyYW51bGFyaXR5ID0gKChERUZBVUxUX0dSQU5VTEFSSVRZICE9IDApPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVF9HUkFOVUxBUklUWSA6IG1wYXJhbXMucGFnZV9zaXplKTsKKyNlbGlmIGRlZmluZWQgKF9fT1MyX18pCisgLyogaWYgbG93LW1lbW9yeSBpcyB1c2VkLCBvczJtdW5tYXAoKSB3b3VsZCBicmVhaworICAgIGlmIGl0IHdlcmUgYW55dGhpbmcgb3RoZXIgdGhhbiA2NGsgKi8KKyAgICBtcGFyYW1zLnBhZ2Vfc2l6ZSA9IDQwOTZ1OworICAgIG1wYXJhbXMuZ3JhbnVsYXJpdHkgPSA2NTUzNnU7CiAjZWxzZSAvKiBXSU4zMiAqLwogICAgIHsKICAgICAgIFNZU1RFTV9JTkZPIHN5c3RlbV9pbmZvOwpAQCAtNDE5Nyw3ICs0MjU5LDcgQEAKIAogdm9pZCBkbGZyZWUodm9pZCogbWVtKSB7CiAgIC8qCi0gICAgIENvbnNvbGlkYXRlIGZyZWVkIGNodW5rcyB3aXRoIHByZWNlZWRpbmcgb3Igc3VjY2VlZGluZyBib3JkZXJpbmcKKyAgICAgQ29uc29saWRhdGUgZnJlZWQgY2h1bmtzIHdpdGggcHJlY2VkaW5nIG9yIHN1Y2NlZWRpbmcgYm9yZGVyaW5nCiAgICAgIGZyZWUgY2h1bmtzLCBpZiB0aGV5IGV4aXN0LCBhbmQgdGhlbiBwbGFjZSBpbiBhIGJpbi4gIEludGVybWl4ZWQKICAgICAgd2l0aCBzcGVjaWFsIGNhc2VzIGZvciB0b3AsIGR2LCBtbWFwcGVkIGNodW5rcywgYW5kIHVzYWdlIGVycm9ycy4KICAgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Zydi9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2Zydi9mZml0YXJnZXQuaAppbmRleCAxYzMxOWVhLi5kNDI1NDBlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9mcnYvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvZnJ2L2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDQgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDA0ICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIEZSLVYKIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw2ICsyOCwxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zNSwxMyArNDAsOSBAQAogCiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAotCi0jaWZkZWYgRlJWCiAgIEZGSV9FQUJJLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfRUFCSSwKLSNlbmRpZgotCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfRUFCSQogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaS5jCmluZGV4IDNmOGZjYzUuLjk1MzNlZjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZmkuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwNywgMjAwOCBSZWQgSGF0LCBJbmMuCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5OCwgMjAwNywgMjAwOCwgMjAxMiBSZWQgSGF0LCBJbmMuCiAJICAgQ29weXJpZ2h0IChjKSAyMDAwIEhld2xldHQgUGFja2FyZCBDb21wYW55CisJICAgQ29weXJpZ2h0IChjKSAyMDExIEFudGhvbnkgR3JlZW4KICAgIAogICAgSUE2NCBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtMjI1LDcgKzIyNiw3IEBACiAgIGludCBmbGFnczsKIAogICAvKiBBZGp1c3QgY2lmLT5ieXRlcyB0byBpbmNsdWRlIHNwYWNlIGZvciB0aGUgYml0cyBvZiB0aGUgaWE2NF9hcmdzIGZyYW1lCi0gICAgIHRoYXQgcHJlY2VlZHMgdGhlIGludGVnZXIgcmVnaXN0ZXIgcG9ydGlvbi4gIFRoZSBlc3RpbWF0ZSB0aGF0IHRoZSAKKyAgICAgdGhhdCBwcmVjZWRlcyB0aGUgaW50ZWdlciByZWdpc3RlciBwb3J0aW9uLiAgVGhlIGVzdGltYXRlIHRoYXQgdGhlCiAgICAgIGdlbmVyaWMgYml0cyBkaWQgZm9yIHRoZSBhcmd1bWVudCBzcGFjZSByZXF1aXJlZCBpcyBnb29kIGVub3VnaCBmb3IgdGhlCiAgICAgIGludGVnZXIgY29tcG9uZW50LiAgKi8KICAgY2lmLT5ieXRlcyArPSBvZmZzZXRvZihzdHJ1Y3QgaWE2NF9hcmdzLCBncF9yZWdzWzBdKTsKQEAgLTMyNCwxMyArMzI1LDE3IEBACiAJY2FzZSBGRklfVFlQRV9GTE9BVDoKIAkgIGlmIChncGNvdW50IDwgOCAmJiBmcGNvdW50IDwgOCkKIAkgICAgc3RmX3NwaWxsICgmc3RhY2stPmZwX3JlZ3NbZnBjb3VudCsrXSwgKihmbG9hdCAqKWF2YWx1ZVtpXSk7Ci0JICBzdGFjay0+Z3BfcmVnc1tncGNvdW50KytdID0gKihVSU5UMzIgKilhdmFsdWVbaV07CisJICB7CisJICAgIFVJTlQzMiB0bXA7CisJICAgIG1lbWNweSAoJnRtcCwgYXZhbHVlW2ldLCBzaXplb2YgKFVJTlQzMikpOworCSAgICBzdGFjay0+Z3BfcmVnc1tncGNvdW50KytdID0gdG1wOworCSAgfQogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX0RPVUJMRToKIAkgIGlmIChncGNvdW50IDwgOCAmJiBmcGNvdW50IDwgOCkKIAkgICAgc3RmX3NwaWxsICgmc3RhY2stPmZwX3JlZ3NbZnBjb3VudCsrXSwgKihkb3VibGUgKilhdmFsdWVbaV0pOwotCSAgc3RhY2stPmdwX3JlZ3NbZ3Bjb3VudCsrXSA9ICooVUlOVDY0ICopYXZhbHVlW2ldOworCSAgbWVtY3B5ICgmc3RhY2stPmdwX3JlZ3NbZ3Bjb3VudCsrXSwgYXZhbHVlW2ldLCBzaXplb2YgKFVJTlQ2NCkpOwogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CkBAIC00MjUsNyArNDMwLDggQEAKICAgc3RydWN0IGZmaV9pYTY0X3RyYW1wb2xpbmVfc3RydWN0ICp0cmFtcDsKICAgc3RydWN0IGlhNjRfZmQgKmZkOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9VTklYKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9VTklYKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICB0cmFtcCA9IChzdHJ1Y3QgZmZpX2lhNjRfdHJhbXBvbGluZV9zdHJ1Y3QgKiljbG9zdXJlLT50cmFtcDsKICAgZmQgPSAoc3RydWN0IGlhNjRfZmQgKikodm9pZCAqKWZmaV9jbG9zdXJlX3VuaXg7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvaWE2NC9mZml0YXJnZXQuaAppbmRleCBkODVjMDQ5Li5lNjhjZWE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9pYTY0L2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2lhNjQvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgSUEtNjQuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICAgICAgICAgZmZpX2FyZzsKIHR5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyAgICAgICAgICAgIGZmaV9zYXJnOwpAQCAtMzQsOCArMzksOCBAQAogdHlwZWRlZiBlbnVtIGZmaV9hYmkgewogICBGRklfRklSU1RfQUJJID0gMCwKICAgRkZJX1VOSVgsICAgCS8qIExpbnV4IGFuZCBhbGwgVW5peCB2YXJpYW50cyB1c2UgdGhlIHNhbWUgY29udmVudGlvbnMJKi8KLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1VOSVgsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVU5JWAogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2phdmFfcmF3X2FwaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvamF2YV9yYXdfYXBpLmMKaW5kZXggOWM1MzgzZS4uNTIyYzhiZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvamF2YV9yYXdfYXBpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvamF2YV9yYXdfYXBpLmMKQEAgLTMxMSw3ICszMTEsNyBAQAogICBmZmlfcmF3X2Nsb3N1cmUgKmNsID0gKGZmaV9yYXdfY2xvc3VyZSopdXNlcl9kYXRhOwogCiAgIGZmaV9qYXZhX3B0cmFycmF5X3RvX3JhdyAoY2lmLCBhdmFsdWUsIHJhdyk7Ci0gICgqY2wtPmZ1bikgKGNpZiwgcnZhbHVlLCByYXcsIGNsLT51c2VyX2RhdGEpOworICAoKmNsLT5mdW4pIChjaWYsIHJ2YWx1ZSwgKGZmaV9yYXcqKXJhdywgY2wtPnVzZXJfZGF0YSk7CiAgIGZmaV9qYXZhX3Jhd190b19ydmFsdWUgKGNpZiwgcnZhbHVlKTsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTMyci9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL20zMnIvZmZpdGFyZ2V0LmgKaW5kZXggNmE3NjFmNi4uNmMzNDgwMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTMyci9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tMzJyL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDA0ICBSZW5lc2FzIFRlY2hub2xvZ3kuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDQgIFJlbmVzYXMgVGVjaG5vbG9neS4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgTTMyUi4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNiw2ICsyNywxMCBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBHZW5lcmljIHR5cGUgZGVmaW5pdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmbmRlZiBMSUJGRklfQVNNCkBAIC0zNiw4ICs0MSw4IEBACiAgIHsKICAgICBGRklfRklSU1RfQUJJID0gMCwKICAgICBGRklfU1lTViwKLSAgICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCisgICAgRkZJX0xBU1RfQUJJLAorICAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiAgIH0gZmZpX2FiaTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZmkuYwppbmRleCA2MDBjZjIwLi4zN2EwNzg0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpLmMKQEAgLTEsNyArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgZmZpLmMKLSAgIAotICAgbTY4ayBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKKworICAgbTY4ayBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2luY2x1ZGUgPGZmaS5oPgpAQCAtOSw4ICs5LDE3IEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpZmRlZiBfX3J0ZW1zX18KK3ZvaWQgcnRlbXNfY2FjaGVfZmx1c2hfbXVsdGlwbGVfZGF0YV9saW5lcyggY29uc3Qgdm9pZCAqLCBzaXplX3QgKTsKKyNlbHNlCiAjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyNpZmRlZiBfX01JTlRfXworI2luY2x1ZGUgPG1pbnQvbWludGJpbmQuaD4KKyNpbmNsdWRlIDxtaW50L3NzeXN0ZW0uaD4KKyNlbHNlCiAjaW5jbHVkZSA8YXNtL2NhY2hlY3RsLmg+CisjZW5kaWYKKyNlbmRpZgogCiB2b2lkIGZmaV9jYWxsX1NZU1YgKGV4dGVuZGVkX2NpZiAqLAogCQkgICAgdW5zaWduZWQsIHVuc2lnbmVkLApAQCAtMzUsOCArNDQsMTIgQEAKIAogICBhcmdwID0gc3RhY2s7CiAKLSAgaWYgKGVjaWYtPmNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAmJiAhZWNpZi0+Y2lmLT5mbGFncykKKyAgaWYgKAorI2lmZGVmIF9fTUlOVF9fCisgICAgICAoZWNpZi0+Y2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKSB8fAorI2VuZGlmCisgICAgICAoKChlY2lmLT5jaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKyAgICAgICAgJiYgIWVjaWYtPmNpZi0+ZmxhZ3MpKSkKICAgICBzdHJ1Y3RfdmFsdWVfcHRyID0gZWNpZi0+cnZhbHVlOwogICBlbHNlCiAgICAgc3RydWN0X3ZhbHVlX3B0ciA9IE5VTEw7CkBAIC00NywxMiArNjAsMTIgQEAKICAgICAgICBpICE9IDA7CiAgICAgICAgaS0tLCBwX2FyZysrKQogICAgIHsKLSAgICAgIHNpemVfdCB6OworICAgICAgc2l6ZV90IHogPSAoKnBfYXJnKS0+c2l6ZTsKKyAgICAgIGludCB0eXBlID0gKCpwX2FyZyktPnR5cGU7CiAKLSAgICAgIHogPSAoKnBfYXJnKS0+c2l6ZTsKICAgICAgIGlmICh6IDwgc2l6ZW9mIChpbnQpKQogCXsKLQkgIHN3aXRjaCAoKCpwX2FyZyktPnR5cGUpCisJICBzd2l0Y2ggKHR5cGUpCiAJICAgIHsKIAkgICAgY2FzZSBGRklfVFlQRV9TSU5UODoKIAkgICAgICAqKHNpZ25lZCBpbnQgKikgYXJncCA9IChzaWduZWQgaW50KSAqKFNJTlQ4ICopICpwX2FyZ3Y7CkBAIC03MSw3ICs4NCwxNCBAQAogCSAgICAgIGJyZWFrOwogCiAJICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorI2lmZGVmIF9fTUlOVF9fCisJICAgICAgaWYgKHogPT0gMSB8fCB6ID09IDIpCisJCW1lbWNweSAoYXJncCArIDIsICpwX2FyZ3YsIHopOworICAgICAgICAgICAgICBlbHNlCisJCW1lbWNweSAoYXJncCwgKnBfYXJndiwgeik7CisjZWxzZQogCSAgICAgIG1lbWNweSAoYXJncCArIHNpemVvZiAoaW50KSAtIHosICpwX2FyZ3YsIHopOworI2VuZGlmCiAJICAgICAgYnJlYWs7CiAKIAkgICAgZGVmYXVsdDoKQEAgLTExNiwxNyArMTM2LDM0IEBACiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgorICAgICAgaWYgKGNpZi0+cnR5cGUtPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCAmJgorICAgICAgICAgIGNpZi0+cnR5cGUtPmVsZW1lbnRzWzFdKQorICAgICAgICB7CisgICAgICAgICAgY2lmLT5mbGFncyA9IDA7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgc3dpdGNoIChjaWYtPnJ0eXBlLT5zaXplKQogCXsKIAljYXNlIDE6CisjaWZkZWYgX19NSU5UX18KKwkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfU1RSVUNUMjsKKyNlbHNlCiAJICBjaWYtPmZsYWdzID0gQ0lGX0ZMQUdTX1NUUlVDVDE7CisjZW5kaWYKIAkgIGJyZWFrOwogCWNhc2UgMjoKIAkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfU1RSVUNUMjsKIAkgIGJyZWFrOworI2lmZGVmIF9fTUlOVF9fCisJY2FzZSAzOgorI2VuZGlmCiAJY2FzZSA0OgogCSAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19JTlQ7CiAJICBicmVhazsKKyNpZmRlZiBfX01JTlRfXworCWNhc2UgNzoKKyNlbmRpZgogCWNhc2UgODoKIAkgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfRElOVDsKIAkgIGJyZWFrOwpAQCAtMTQ0LDkgKzE4MSwxNSBAQAogICAgICAgY2lmLT5mbGFncyA9IENJRl9GTEFHU19ET1VCTEU7CiAgICAgICBicmVhazsKIAorI2lmIChGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRSkKICAgICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisjaWZkZWYgX19NSU5UX18KKyAgICAgIGNpZi0+ZmxhZ3MgPSAwOworI2Vsc2UKICAgICAgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfTERPVUJMRTsKKyNlbmRpZgogICAgICAgYnJlYWs7CisjZW5kaWYKIAogICAgIGNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKICAgICAgIGNpZi0+ZmxhZ3MgPSBDSUZfRkxBR1NfUE9JTlRFUjsKQEAgLTIxMiw2ICsyNTUsMjYgQEAKICAgICAgIHNpemVfdCB6OwogCiAgICAgICB6ID0gKCpwX2FyZyktPnNpemU7CisjaWZkZWYgX19NSU5UX18KKyAgICAgIGlmIChjaWYtPmZsYWdzICYmCisgICAgICAgICAgY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYKKyAgICAgICAgICAoeiA9PSAxIHx8IHogPT0gMikpCisgCXsKKwkgICpwX2FyZ3YgPSAodm9pZCAqKSAoYXJncCArIDIpOworCisJICB6ID0gNDsKKwl9CisgICAgICBlbHNlCisgICAgICBpZiAoY2lmLT5mbGFncyAmJgorICAgICAgICAgIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUICYmCisgICAgICAgICAgKHogPT0gMyB8fCB6ID09IDQpKQorIAl7CisJICAqcF9hcmd2ID0gKHZvaWQgKikgKGFyZ3ApOworCisJICB6ID0gNDsKKwl9CisgICAgICBlbHNlCisjZW5kaWYKICAgICAgIGlmICh6IDw9IDQpCiAJewogCSAgKnBfYXJndiA9ICh2b2lkICopIChhcmdwICsgNCAtIHopOwpAQCAtMjU1LDE5ICszMTgsMzEgQEAKIAkJICAgICAgdm9pZCAqdXNlcl9kYXRhLAogCQkgICAgICB2b2lkICpjb2RlbG9jKQogewotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfU1lTVik7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgKih1bnNpZ25lZCBzaG9ydCAqKWNsb3N1cmUtPnRyYW1wID0gMHgyMDdjOwogICAqKHZvaWQgKiopKGNsb3N1cmUtPnRyYW1wICsgMikgPSBjb2RlbG9jOwogICAqKHVuc2lnbmVkIHNob3J0ICopKGNsb3N1cmUtPnRyYW1wICsgNikgPSAweDRlZjk7Ci0gIGlmIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVAotICAgICAgJiYgIWNpZi0+ZmxhZ3MpCisKKyAgaWYgKAorI2lmZGVmIF9fTUlOVF9fCisgICAgICAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKSB8fAorI2VuZGlmCisgICAgICAoKChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKyAgICAgICAgICYmICFjaWYtPmZsYWdzKSkpCiAgICAgKih2b2lkICoqKShjbG9zdXJlLT50cmFtcCArIDgpID0gZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1Y7CiAgIGVsc2UKICAgICAqKHZvaWQgKiopKGNsb3N1cmUtPnRyYW1wICsgOCkgPSBmZmlfY2xvc3VyZV9TWVNWOwogCisjaWZkZWYgX19ydGVtc19fCisgIHJ0ZW1zX2NhY2hlX2ZsdXNoX211bHRpcGxlX2RhdGFfbGluZXMoIGNvZGVsb2MsIEZGSV9UUkFNUE9MSU5FX1NJWkUgKTsKKyNlbGlmIGRlZmluZWQoX19NSU5UX18pCisgIFNzeXN0ZW0oU19GTFVTSENBQ0hFLCBjb2RlbG9jLCBGRklfVFJBTVBPTElORV9TSVpFKTsKKyNlbHNlCiAgIHN5c2NhbGwoU1lTX2NhY2hlZmx1c2gsIGNvZGVsb2MsIEZMVVNIX1NDT1BFX0xJTkUsCiAJICBGTFVTSF9DQUNIRV9CT1RILCBGRklfVFJBTVBPTElORV9TSVpFKTsKKyNlbmRpZgogCiAgIGNsb3N1cmUtPmNpZiAgPSBjaWY7CiAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKQEAgLTI3NSw0ICszNTAsMyBAQAogCiAgIHJldHVybiBGRklfT0s7CiB9Ci0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tNjhrL2ZmaXRhcmdldC5oCmluZGV4IDYzMzcxN2IuLmU4MWRkZTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBNb3Rvcm9sYSA2OEsuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjcsNiArMjgsMTAgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKICNpZm5kZWYgTElCRkZJX0FTTQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CkBAIC0zNCw4ICszOSw4IEBACiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLAogICBGRklfU1lTViwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YsCi0gIEZGSV9MQVNUX0FCSSA9IEZGSV9ERUZBVUxUX0FCSSArIDEKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL202OGsvc3lzdi5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9zeXN2LlMKaW5kZXggNTg4MjJlMC4uZjZmNGVmOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9zeXN2LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbTY4ay9zeXN2LlMKQEAgLTEsNSArMSw3IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgc3lzdi5TIC0gQ29weXJpZ2h0IChjKSAxOTk4IEFuZHJlYXMgU2Nod2FiCisJCisgICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDIwMTIgQWxhbiBIb3VyaWhhbmUKKwkgICAgQ29weXJpZ2h0IChjKSAxOTk4LCAyMDEyIEFuZHJlYXMgU2Nod2FiCiAJICAgIENvcHlyaWdodCAoYykgMjAwOCBSZWQgSGF0LCBJbmMuIAogICAgCiAgICBtNjhrIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIApAQCAtNDEsMTMgKzQzLDE5IEBACiAjZGVmaW5lIENGSV9FTkRQUk9DKCkKICNlbmRpZgogCisjaWZkZWYgX19NSU5UX18KKyNkZWZpbmUgQ0FMTEZVTkMoZnVuY25hbWUpIF8gIyMgZnVuY25hbWUKKyNlbHNlCisjZGVmaW5lIENBTExGVU5DKGZ1bmNuYW1lKSBmdW5jbmFtZQorI2VuZGlmCisKIAkudGV4dAogCi0JLmdsb2JsCWZmaV9jYWxsX1NZU1YKLQkudHlwZQlmZmlfY2FsbF9TWVNWLEBmdW5jdGlvbgorCS5nbG9ibAlDQUxMRlVOQyhmZmlfY2FsbF9TWVNWKQorCS50eXBlCUNBTExGVU5DKGZmaV9jYWxsX1NZU1YpLEBmdW5jdGlvbgogCS5hbGlnbgk0CiAKLWZmaV9jYWxsX1NZU1Y6CitDQUxMRlVOQyhmZmlfY2FsbF9TWVNWKToKIAlDRklfU1RBUlRQUk9DKCkKIAlsaW5rCSVmcCwjMAogCUNGSV9PRkZTRVQoMTQsLTgpCkBAIC02MiwxNCArNzAsMTggQEAKIAltb3ZlLmwJOCglZnApLC0oJXNwKQogCXBlYQk0KCVzcCkKICNpZiAhZGVmaW5lZCBfX1BJQ19fCi0JanNyCWZmaV9wcmVwX2FyZ3MKKwlqc3IJQ0FMTEZVTkMoZmZpX3ByZXBfYXJncykKICNlbHNlCi0JYnNyLmwJZmZpX3ByZXBfYXJnc0BQTFRQQworCWJzci5sCUNBTExGVU5DKGZmaV9wcmVwX2FyZ3NAUExUUEMpCiAjZW5kaWYKIAlhZGRxLmwJIzgsJXNwCQogCiAJfCBQYXNzIHBvaW50ZXIgdG8gc3RydWN0IHZhbHVlLCBpZiBhbnkKKyNpZmRlZiBfX01JTlRfXworCW1vdmUubAklZDAsJWExCisjZWxzZQogCW1vdmUubAklYTAsJWExCisjZW5kaWYKIAogCXwgQ2FsbCB0aGUgZnVuY3Rpb24KIAltb3ZlLmwJMjQoJWZwKSwlYTAKQEAgLTg1LDcgKzk3LDEyIEBACiAJbW92ZS5sCTE2KCVmcCksJWQyCiAKIAl8IElmIHRoZSByZXR1cm4gdmFsdWUgcG9pbnRlciBpcyBOVUxMLCBhc3N1bWUgbm8gcmV0dXJuIHZhbHVlLgorCXwgTk9URTogT24gdGhlIG1jNjgwMDAsIHRzdCBvbiBhbiBhZGRyZXNzIHJlZ2lzdGVyIGlzIG5vdCBzdXBwb3J0ZWQuCisjaWYgIWRlZmluZWQoX19tYzY4MDIwX18pICYmICFkZWZpbmVkKF9fbWM2ODAzMF9fKSAmJiAhZGVmaW5lZChfX21jNjgwNDBfXykgJiYgIWRlZmluZWQoX19tYzY4MDYwX18pICYmICFkZWZpbmVkKF9fbWNvbGRmaXJlX18pCisJY21wLncJIzAsICVhMQorI2Vsc2UKIAl0c3QubAklYTEKKyNlbmRpZgogCWpiZXEJbm9yZXR2YWwKIAogCWJ0c3QJIzAsJWQyCkBAIC0xMDMsMjUgKzEyMCw0NCBAQAogcmV0ZmxvYXQ6CiAJYnRzdAkjMiwlZDIKIAlqYmVxCXJldGRvdWJsZQorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUucwklZnAwLCglYTEpCisjZWxzZQorCW1vdmUubAklZDAsKCVhMSkKKyNlbmRpZgogCWpicmEJZXBpbG9ndWUKIAogcmV0ZG91YmxlOgogCWJ0c3QJIzMsJWQyCiAJamJlcQlyZXRsb25nZG91YmxlCisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS5kCSVmcDAsKCVhMSkKKyNlbHNlCisJbW92ZS5sCSVkMCwoJWExKSsKKwltb3ZlLmwJJWQxLCglYTEpCisjZW5kaWYKIAlqYnJhCWVwaWxvZ3VlCiAKIHJldGxvbmdkb3VibGU6CiAJYnRzdAkjNCwlZDIKIAlqYmVxCXJldHBvaW50ZXIKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLngJJWZwMCwoJWExKQorI2Vsc2UKKwltb3ZlLmwJJWQwLCglYTEpKworCW1vdmUubAklZDEsKCVhMSkrCisJbW92ZS5sCSVkMiwoJWExKQorI2VuZGlmCiAJamJyYQllcGlsb2d1ZQogCiByZXRwb2ludGVyOgogCWJ0c3QJIzUsJWQyCiAJamJlcQlyZXRzdHJ1Y3QxCisjaWZkZWYgX19NSU5UX18KKwltb3ZlLmwJJWQwLCglYTEpCisjZWxzZQogCW1vdmUubAklYTAsKCVhMSkKKyNlbmRpZgogCWpicmEJZXBpbG9ndWUKIAogcmV0c3RydWN0MToKQEAgLTE0MSwxMyArMTc3LDEzIEBACiAJdW5sawklZnAKIAlydHMKIAlDRklfRU5EUFJPQygpCi0JLnNpemUJZmZpX2NhbGxfU1lTViwuLWZmaV9jYWxsX1NZU1YKKwkuc2l6ZQlDQUxMRlVOQyhmZmlfY2FsbF9TWVNWKSwuLUNBTExGVU5DKGZmaV9jYWxsX1NZU1YpCiAKLQkuZ2xvYmwJZmZpX2Nsb3N1cmVfU1lTVgotCS50eXBlCWZmaV9jbG9zdXJlX1NZU1YsIEBmdW5jdGlvbgorCS5nbG9ibAlDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKQorCS50eXBlCUNBTExGVU5DKGZmaV9jbG9zdXJlX1NZU1YpLCBAZnVuY3Rpb24KIAkuYWxpZ24JNAogCi1mZmlfY2xvc3VyZV9TWVNWOgorQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVik6CiAJQ0ZJX1NUQVJUUFJPQygpCiAJbGluawklZnAsIy0xMgogCUNGSV9PRkZTRVQoMTQsLTgpCkBAIC0xNTcsOSArMTkzLDkgQEAKIAlwZWEJLTEyKCVmcCkKIAltb3ZlLmwJJWEwLC0oJXNwKQogI2lmICFkZWZpbmVkIF9fUElDX18KLQlqc3IJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgorCWpzcglDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWX2lubmVyKQogI2Vsc2UKLQlic3IubAlmZmlfY2xvc3VyZV9TWVNWX2lubmVyQFBMVFBDCisJYnNyLmwJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lckBQTFRQQykKICNlbmRpZgogCiAJbHNyLmwJIzEsJWQwCkBAIC0xNzgsMTYgKzIxNCwzMSBAQAogCW1vdmUubAkoJWEwKSwlZDEKIAlqcmEJLkxjbHNfZXBpbG9ndWUKIC5MY2xzX3JldF9mbG9hdDoKKyNpZiBkZWZpbmVkKF9fTUM2ODg4MV9fKSB8fCBkZWZpbmVkKF9fSEFWRV82ODg4MV9fKQogCWZtb3ZlLnMJKCVhMCksJWZwMAorI2Vsc2UKKwltb3ZlLmwJKCVhMCksJWQwCisjZW5kaWYKIAlqcmEJLkxjbHNfZXBpbG9ndWUKIDE6CiAJbHNyLmwJIzIsJWQwCiAJam5lCTFmCiAJamNzCS5MY2xzX3JldF9sZG91YmxlCisjaWYgZGVmaW5lZChfX01DNjg4ODFfXykgfHwgZGVmaW5lZChfX0hBVkVfNjg4ODFfXykKIAlmbW92ZS5kCSglYTApLCVmcDAKKyNlbHNlCisJbW92ZS5sCSglYTApKywlZDAKKwltb3ZlLmwJKCVhMCksJWQxCisjZW5kaWYKIAlqcmEJLkxjbHNfZXBpbG9ndWUKIC5MY2xzX3JldF9sZG91YmxlOgorI2lmIGRlZmluZWQoX19NQzY4ODgxX18pIHx8IGRlZmluZWQoX19IQVZFXzY4ODgxX18pCiAJZm1vdmUueAkoJWEwKSwlZnAwCisjZWxzZQorCW1vdmUubAkoJWEwKSssJWQwCisJbW92ZS5sCSglYTApKywlZDEKKwltb3ZlLmwJKCVhMCksJWQyCisjZW5kaWYKIAlqcmEJLkxjbHNfZXBpbG9ndWUKIDE6CiAJbHNyLmwJIzIsJWQwCkBAIC0yMDQsMTMgKzI1NSwxMyBAQAogCWpyYQkuTGNsc19lcGlsb2d1ZQogCUNGSV9FTkRQUk9DKCkKIAotCS5zaXplCWZmaV9jbG9zdXJlX1NZU1YsLi1mZmlfY2xvc3VyZV9TWVNWCisJLnNpemUJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTViksLi1DQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWKQogCi0JLmdsb2JsCWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWCi0JLnR5cGUJZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YsIEBmdW5jdGlvbgorCS5nbG9ibAlDQUxMRlVOQyhmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVikKKwkudHlwZQlDQUxMRlVOQyhmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTViksIEBmdW5jdGlvbgogCS5hbGlnbgk0CiAKLWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWOgorQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YpOgogCUNGSV9TVEFSVFBST0MoKQogCWxpbmsJJWZwLCMwCiAJQ0ZJX09GRlNFVCgxNCwtOCkKQEAgLTIyMCwxNCArMjcxLDE0IEBACiAJbW92ZS5sCSVhMSwtKCVzcCkKIAltb3ZlLmwJJWEwLC0oJXNwKQogI2lmICFkZWZpbmVkIF9fUElDX18KLQlqc3IJZmZpX2Nsb3N1cmVfU1lTVl9pbm5lcgorCWpzcglDQUxMRlVOQyhmZmlfY2xvc3VyZV9TWVNWX2lubmVyKQogI2Vsc2UKLQlic3IubAlmZmlfY2xvc3VyZV9TWVNWX2lubmVyQFBMVFBDCisJYnNyLmwJQ0FMTEZVTkMoZmZpX2Nsb3N1cmVfU1lTVl9pbm5lckBQTFRQQykKICNlbmRpZgogCXVubGsJJWZwCiAJcnRzCiAJQ0ZJX0VORFBST0MoKQotCS5zaXplCWZmaV9jbG9zdXJlX3N0cnVjdF9TWVNWLC4tZmZpX2Nsb3N1cmVfc3RydWN0X1NZU1YKKwkuc2l6ZQlDQUxMRlVOQyhmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTViksLi1DQUxMRlVOQyhmZmlfY2xvc3VyZV9zdHJ1Y3RfU1lTVikKIAogI2lmIGRlZmluZWQgX19FTEZfXyAmJiBkZWZpbmVkIF9fbGludXhfXwogCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaS5jCmluZGV4IGQ3MTRjYzkuLjc5Y2ZmOWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZmkuYwpAQCAtMSw2ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5NiwgMjAwNywgMjAwOCAgUmVkIEhhdCwgSW5jLgotICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggICAgICAgRGF2aWQgRGFuZXkKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDExICBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwOCAgRGF2aWQgRGFuZXkKKyAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LCAyMDA3LCAyMDA4LCAyMDExICBSZWQgSGF0LCBJbmMuCiAgICAKICAgIE1JUFMgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTM3LDcgKzM4LDExIEBACiAjZW5kaWYKIAogI2lmbmRlZiBVU0VfX0JVSUxUSU5fX19DTEVBUl9DQUNIRQotI2luY2x1ZGUgPHN5cy9jYWNoZWN0bC5oPgorIyAgaWYgZGVmaW5lZChfX09wZW5CU0RfXykKKyMgICAgaW5jbHVkZSA8bWlwczY0L3N5c2FyY2guaD4KKyMgIGVsc2UKKyMgICAgaW5jbHVkZSA8c3lzL2NhY2hlY3RsLmg+CisjICBlbmRpZgogI2VuZGlmCiAKICNpZmRlZiBGRklfREVCVUcKQEAgLTY2MiwxMCArNjY3LDEyIEBACiAgIGNoYXIgKmNsZWFyX2xvY2F0aW9uID0gKGNoYXIgKikgY29kZWxvYzsKIAogI2lmIGRlZmluZWQoRkZJX01JUFNfTzMyKQotICBGRklfQVNTRVJUKGNpZi0+YWJpID09IEZGSV9PMzIgfHwgY2lmLT5hYmkgPT0gRkZJX08zMl9TT0ZUX0ZMT0FUKTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9PMzIgJiYgY2lmLT5hYmkgIT0gRkZJX08zMl9TT0ZUX0ZMT0FUKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgZm4gPSBmZmlfY2xvc3VyZV9PMzI7CiAjZWxzZSAvKiBGRklfTUlQU19OMzIgKi8KLSAgRkZJX0FTU0VSVChjaWYtPmFiaSA9PSBGRklfTjMyIHx8IGNpZi0+YWJpID09IEZGSV9ONjQpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX04zMiAmJiBjaWYtPmFiaSAhPSBGRklfTjY0KQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgZm4gPSBmZmlfY2xvc3VyZV9OMzI7CiAjZW5kaWYgLyogRkZJX01JUFNfTzMyICovCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL2ZmaXRhcmdldC5oCmluZGV4IGM1ZjRlMDUuLjcxN2Q2NTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBNSVBTLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDExICsyOCwyMyBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmZGVmIGxpbnV4CiAjIGluY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+Ci0jZWxzZQorI2VsaWYgZGVmaW5lZChfX3J0ZW1zX18pCisvKgorICogU3VicHJvZ3JhbSBjYWxsaW5nIGNvbnZlbnRpb24gLSBjb3BpZWQgZnJvbSBzZ2lkZWZzLmgKKyAqLworI2RlZmluZSBfTUlQU19TSU1fQUJJMzIJCTEKKyNkZWZpbmUgX01JUFNfU0lNX05BQkkzMgkyCisjZGVmaW5lIF9NSVBTX1NJTV9BQkk2NAkJMworI2VsaWYgIWRlZmluZWQoX19PcGVuQlNEX18pCiAjIGluY2x1ZGUgPHNnaWRlZnMuaD4KICNlbmRpZgorCiAjICBpZm5kZWYgX0FCSU4zMgogIyAgICBkZWZpbmUgX0FCSU4zMiBfTUlQU19TSU1fTkFCSTMyCiAjICBlbmRpZgpAQCAtNDMsNyArNTYsNyBAQAogIyAgZW5kaWYKIAogI2lmICFkZWZpbmVkKF9NSVBTX1NJTSkKLS0tIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nIC0tCisjIGVycm9yIC0tIHNvbWV0aGluZyBpcyB2ZXJ5IHdyb25nIC0tCiAjZWxzZQogIyAgaWYgKF9NSVBTX1NJTT09X0FCSU4zMiAmJiBkZWZpbmVkKF9BQklOMzIpKSB8fCAoX01JUFNfU0lNPT1fQUJJNjQgJiYgZGVmaW5lZChfQUJJNjQpKQogIyAgICBkZWZpbmUgRkZJX01JUFNfTjMyCkBAIC01MSw3ICs2NCw3IEBACiAjICAgIGlmIChfTUlQU19TSU09PV9BQklPMzIgJiYgZGVmaW5lZChfQUJJTzMyKSkKICMgICAgICBkZWZpbmUgRkZJX01JUFNfTzMyCiAjICAgIGVsc2UKLS0tIHRoaXMgaXMgYW4gdW5zdXBwb3J0ZWQgcGxhdGZvcm0gLS0KKyMgICAgIGVycm9yIC0tIHRoaXMgaXMgYW4gdW5zdXBwb3J0ZWQgcGxhdGZvcm0gLS0KICMgICAgZW5kaWYKICMgIGVuZGlmCiAjZW5kaWYKQEAgLTE4NiwzMCArMTk5LDI5IEBACiAgIEZGSV9PMzJfU09GVF9GTE9BVCwKICAgRkZJX04zMl9TT0ZUX0ZMT0FULAogICBGRklfTjY0X1NPRlRfRkxPQVQsCisgIEZGSV9MQVNUX0FCSSwKIAogI2lmZGVmIEZGSV9NSVBTX08zMgogI2lmZGVmIF9fbWlwc19zb2Z0X2Zsb2F0Ci0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9PMzJfU09GVF9GTE9BVCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX08zMl9TT0ZUX0ZMT0FUCiAjZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTzMyLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTzMyCiAjZW5kaWYKICNlbHNlCiAjIGlmIF9NSVBTX1NJTT09X0FCSTY0CiAjICBpZmRlZiBfX21pcHNfc29mdF9mbG9hdAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjY0X1NPRlRfRkxPQVQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9ONjRfU09GVF9GTE9BVAogIyAgZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjY0LAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjY0CiAjICBlbmRpZgogIyBlbHNlCiAjICBpZmRlZiBfX21pcHNfc29mdF9mbG9hdAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjMyX1NPRlRfRkxPQVQsCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9OMzJfU09GVF9GTE9BVAogIyAgZWxzZQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjMyLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfTjMyCiAjICBlbmRpZgogIyBlbmRpZgogI2VuZGlmCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQogfSBmZmlfYWJpOwogCiAjZGVmaW5lIEZGSV9FWFRSQV9DSUZfRklFTERTIHVuc2lnbmVkIHJzdHJ1Y3RfZmxhZwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9uMzIuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL21pcHMvbjMyLlMKaW5kZXggYWUyMzA5NC4uZmY0YmJjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbWlwcy9uMzIuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9taXBzL24zMi5TCkBAIC00Myw2ICs0Myw3IEBACiAjaWZkZWYgX19HTlVDX18KIAkuYWJpY2FsbHMKICNlbmRpZgorCS5zZXQgbWlwczQKIAkudGV4dAogCS5hbGlnbgkyCiAJLmdsb2JsCWZmaV9jYWxsX04zMgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvbW94aWUvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tb3hpZS9mZml0YXJnZXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUzMDVkMS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9tb3hpZS9mZml0YXJnZXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAwOSBBbnRob255IEdyZWVuCi0gICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIE1veGllCi0KLSAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0gICBgYFNvZnR3YXJlJycpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSAgIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bwotICAgcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0gICB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0KLSAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCi0gICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIGBgQVMgSVMnJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwKLSAgIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQKLSAgIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVAotICAgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksCi0gICBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLSAgIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKLSAgIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KLQotICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKLSNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICi0KLS8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLSNpZm5kZWYgTElCRkZJX0FTTQotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7Ci10eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7Ci0KLXR5cGVkZWYgZW51bSBmZmlfYWJpIHsKLSAgRkZJX0ZJUlNUX0FCSSA9IDAsCi0KLSNpZmRlZiBNT1hJRQotICBGRklfRUFCSSwKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0VBQkksCi0jZW5kaWYKLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCi19IGZmaV9hYmk7Ci0jZW5kaWYKLQotLyogLS0tLSBEZWZpbml0aW9ucyBmb3IgY2xvc3VyZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2RlZmluZSBGRklfQ0xPU1VSRVMgMAotI2RlZmluZSBGRklfTkFUSVZFX1JBV19BUEkgMAotCi0vKiBUcmFtcG9saW5lcyBhcmUgNSA0LWJ5dGUgaW5zdHJ1Y3Rpb25zIGxvbmcuICAqLwotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFICg1KjQpCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZmkuYwppbmRleCA2ZDc2MDZmLi40Y2UyYmM2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZmkuYwpAQCAtMSw5ICsxLDExIEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpLmMgLSAoYykgMjAwMy0yMDA0IFJhbmRvbHBoIENodW5nIDx0YXVzcUBkZWJpYW4ub3JnPgorICAgZmZpLmMgLSAoYykgMjAxMSBBbnRob255IEdyZWVuCiAgICAgICAgICAgIChjKSAyMDA4IFJlZCBIYXQsIEluYy4KLQorCSAgIChjKSAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgICAgICAgICAoYykgMjAwMy0yMDA0IFJhbmRvbHBoIENodW5nIDx0YXVzcUBkZWJpYW4ub3JnPgorICAgICAgICAgICAKICAgIEhQUEEgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKLSAgIEhQLVVYIFBBIEFCSSBzdXBwb3J0IChjKSAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgSFAtVVggUEEgQUJJIHN1cHBvcnQgCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogICAgYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCkBAIC02MzMsNyArNjM1LDggQEAKICAgVUlOVDMyICp0bXA7CiAjZW5kaWYKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfUEEzMik7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfUEEzMikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgLyogTWFrZSBhIHNtYWxsIHRyYW1wb2xpbmUgdGhhdCB3aWxsIGJyYW5jaCB0byBvdXIKICAgICAgaGFuZGxlciBmdW5jdGlvbi4gVXNlIFBDLXJlbGF0aXZlIGFkZHJlc3NpbmcuICAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcGEvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZml0YXJnZXQuaAppbmRleCAwMDFmODkxLi41ZTM2NGQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZml0YXJnZXQuaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wYS9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBocHBhLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM4LDIxICs0MywyMiBAQAogCiAjaWZkZWYgUEFfTElOVVgKICAgRkZJX1BBMzIsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTMyLAorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTMyCiAjZW5kaWYKIAogI2lmZGVmIFBBX0hQVVgKICAgRkZJX1BBMzIsCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTMyLAorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9QQTMyCiAjZW5kaWYKIAogI2lmZGVmIFBBNjRfSFBVWAogI2Vycm9yICJQQTY0X0hQVVggRkZJIGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQiCiAgIEZGSV9QQTY0LAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEE2NCwKKyAgRkZJX0xBU1RfQUJJLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfUEE2NAogI2VuZGlmCi0KLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeC5TCmluZGV4IGM2Zjg3NjQuLjIxM2YyZGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXguUwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBhaXguUyAtIENvcHlyaWdodCAoYykgMjAwMiwyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgYWl4LlMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgICBiYXNlZCBvbiBkYXJ3aW4uUyBieSBKb2huIEhvcm5rdmlzdAogCiAgICBQb3dlclBDIEFzc2VtYmx5IGdsdWUuCkBAIC03OSw2ICs3OSw4IEBACiAJLnNldCBmMjAsMjAKIAkuc2V0IGYyMSwyMQogCisJLmV4dGVybiAuZmZpX3ByZXBfYXJncworCiAjZGVmaW5lIExJQkZGSV9BU00KICNpbmNsdWRlIDxmZmljb25maWcuaD4KICNpbmNsdWRlIDxmZmkuaD4KQEAgLTEyNSw2ICsxMjcsNyBAQAogCS8qIENhbGwgZmZpX3ByZXBfYXJncy4gICovCiAJbXIJcjQsIHIxCiAJYmwJLmZmaV9wcmVwX2FyZ3MKKwlub3AKIAogCS8qIE5vdyBkbyB0aGUgY2FsbC4gICovCiAJbGQJcjAsIDAocjI5KQpAQCAtMjI2LDYgKzIyOSw3IEBACiAJLyogQ2FsbCBmZmlfcHJlcF9hcmdzLiAgKi8KIAltcglyNCwgcjEKIAlibAkuZmZpX3ByZXBfYXJncworCW5vcAogCiAJLyogTm93IGRvIHRoZSBjYWxsLiAgKi8KIAlsd3oJcjAsIDAocjI5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9haXhfY2xvc3VyZS5TCmluZGV4IDVjNzQ0NDguLmFhYmQzYzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYWl4X2Nsb3N1cmUuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FpeF9jbG9zdXJlLlMKQEAgLTc5LDYgKzc5LDggQEAKIAkuc2V0IGYyMCwyMAogCS5zZXQgZjIxLDIxCiAKKwkuZXh0ZXJuIC5mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOCisKICNkZWZpbmUgTElCRkZJX0FTTQogI2RlZmluZSBKVU1QVEFSR0VUKG5hbWUpIG5hbWUKICNkZWZpbmUgTCh4KSB4CkBAIC0xNjUsNiArMTY3LDcgQEAKIAogCS8qIGxvb2sgdXAgdGhlIHByb3BlciBzdGFydGluZyBwb2ludCBpbiB0YWJsZSAgKi8KIAkvKiBieSB1c2luZyByZXR1cm4gdHlwZSBhcyBvZmZzZXQgKi8KKwlsaHoJcjMsIDEwKHIzKQkvKiBsb2FkIHR5cGUgZnJvbSByZXR1cm4gdHlwZSAqLwogCWxkCXI0LCBMQy4uNjAoMikJLyogZ2V0IGFkZHJlc3Mgb2YganVtcCB0YWJsZSAqLwogCXNsZGkJcjMsIHIzLCA0CS8qIG5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSAxNiAqLwogCWxkCXIwLCAyNDArMTYocjEpCS8qIGxvYWQgcmV0dXJuIGFkZHJlc3MgKi8KQEAgLTMzNyw4ICszNDAsOSBAQAogCiAJLyogbG9vayB1cCB0aGUgcHJvcGVyIHN0YXJ0aW5nIHBvaW50IGluIHRhYmxlICAqLwogCS8qIGJ5IHVzaW5nIHJldHVybiB0eXBlIGFzIG9mZnNldCAqLworCWxoeglyMywgNihyMykJLyogbG9hZCB0eXBlIGZyb20gcmV0dXJuIHR5cGUgKi8KIAlsd3oJcjQsIExDLi42MCgyKQkvKiBnZXQgYWRkcmVzcyBvZiBqdW1wIHRhYmxlICovCi0Jc2x3aQlyMywgcjMsIDQJLyogbm93IG11bHRpcGx5IHJldHVybiB0eXBlIGJ5IDQgKi8KKwlzbHdpCXIzLCByMywgNAkvKiBub3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgMTYgKi8KIAlsd3oJcjAsIDE3Nis4KHIxKQkvKiBsb2FkIHJldHVybiBhZGRyZXNzICovCiAJYWRkCXIzLCByMywgcjQJLyogYWRkIGNvbnRlbnRzIG9mIHRhYmxlIHRvIHRhYmxlIGFkZHJlc3MgKi8KIAltdGN0cglyMwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9hc20uaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvYXNtLmgKaW5kZXggZTg2ZTZiMC4uOTk0ZjYyZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9hc20uaAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2FzbS5oCkBAIC00Miw3ICs0Miw3IEBACiAKIC8qIElmIGNvbXBpbGVkIGZvciBwcm9maWxpbmcsIGNhbGwgYF9tY291bnQnIGF0IHRoZSBzdGFydCBvZiBlYWNoIGZ1bmN0aW9uLiAgKi8KICNpZmRlZglQUk9GCi0vKiBUaGUgbWNvdW50IGNvZGUgcmVsaWVzIG9uIGEgdGhlIHJldHVybiBhZGRyZXNzIGJlaW5nIG9uIHRoZSBzdGFjaworLyogVGhlIG1jb3VudCBjb2RlIHJlbGllcyBvbiB0aGUgcmV0dXJuIGFkZHJlc3MgYmVpbmcgb24gdGhlIHN0YWNrCiAgICB0byBsb2NhdGUgb3VyIGNhbGxlciBhbmQgc28gaXQgY2FuIHJlc3RvcmUgaXQ7IHNvIHN0b3JlIG9uZSBqdXN0CiAgICBmb3IgaXRzIGJlbmVmaXQuICAqLwogI2lmZGVmIFBJQwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW4uUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luLlMKaW5kZXggZDhhMWRmNS4uNGY5ODdkYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW4uUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbi5TCkBAIC0xLDYgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGRhcndpbi5TIC0gQ29weXJpZ2h0IChjKSAyMDAwIEpvaG4gSG9ybmt2aXN0Ci0JICAgICAgQ29weXJpZ2h0IChjKSAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCSAgICAgIENvcHlyaWdodCAoYykgMjAwNCwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgUG93ZXJQQyBBc3NlbWJseSBnbHVlLgogCkBAIC0yNCw1MSArMjQsOTIgQEAKICAgIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKyNkZWZpbmUgTElCRkZJX0FTTQogI2lmIGRlZmluZWQoX19wcGM2NF9fKQogI2RlZmluZSBNT0RFX0NIT0lDRSh4LCB5KSB5CiAjZWxzZQogI2RlZmluZSBNT0RFX0NIT0lDRSh4LCB5KSB4CiAjZW5kaWYKIAotI2RlZmluZSBnX2xvbmcgIE1PREVfQ0hPSUNFKGxvbmcsIHF1YWQpICAgICAgICAgLyogdXNhZ2UgaXMgIi5nX2xvbmciICovCisjZGVmaW5lIG1hY2hpbmVfY2hvaWNlCU1PREVfQ0hPSUNFKHBwYzc0MDAscHBjNjQpCiAKLSNkZWZpbmUgTE9HMl9HUFJfQllURVMgIE1PREVfQ0hPSUNFKDIsMykgICAgICAgIC8qIGxvZzIoR1BSX0JZVEVTKSAqLworOyBEZWZpbmUgc29tZSBwc2V1ZG8tb3Bjb2RlcyBmb3Igc2l6ZS1pbmRlcGVuZGVudCBsb2FkICYgc3RvcmUgb2YgR1BScyAuLi4KKyNkZWZpbmUgbGd1CQlNT0RFX0NIT0lDRShsd3p1LCBsZHUpCisjZGVmaW5lIGxnCQlNT0RFX0NIT0lDRShsd3osbGQpCisjZGVmaW5lIHNnCQlNT0RFX0NIT0lDRShzdHcsc3RkKQorI2RlZmluZSBzZ3UJCU1PREVfQ0hPSUNFKHN0d3Usc3RkdSkKKyNkZWZpbmUgc2d1eAkJTU9ERV9DSE9JQ0Uoc3R3dXgsc3RkdXgpCiAKLSNkZWZpbmUgTElCRkZJX0FTTQorOyAuLi4gYW5kIHRoZSBzaXplIG9mIEdQUnMgYW5kIHRoZWlyIHN0b3JhZ2UgaW5kaWNhdG9yLgorI2RlZmluZSBHUFJfQllURVMJTU9ERV9DSE9JQ0UoNCw4KQorI2RlZmluZSBMT0cyX0dQUl9CWVRFUwlNT0RFX0NIT0lDRSgyLDMpCS8qIGxvZzIoR1BSX0JZVEVTKSAqLworI2RlZmluZSBnX2xvbmcJCU1PREVfQ0hPSUNFKGxvbmcsIHF1YWQpCS8qIHVzYWdlIGlzICIuZ19sb25nIiAqLworCis7IEZyb20gdGhlIEFCSSBkb2M6ICJNYWMgT1MgWCBBQkkgRnVuY3Rpb24gQ2FsbCBHdWlkZSIgVmVyc2lvbiAyMDA5LTAyLTA0LgorI2RlZmluZSBMSU5LQUdFX1NJWkUJTU9ERV9DSE9JQ0UoMjQsNDgpCisjZGVmaW5lIFBBUkFNX0FSRUEJTU9ERV9DSE9JQ0UoMzIsNjQpCisjZGVmaW5lIFNBVkVEX0xSX09GRlNFVAlNT0RFX0NIT0lDRSg4LDE2KQkvKiBzYXZlIHBvc2l0aW9uIGZvciBsciAqLworCisvKiBJZiB0aGVyZSBpcyBhbnkgRlAgc3R1ZmYgd2UgbWFrZSBzcGFjZSBmb3IgYWxsIG9mIHRoZSByZWdzLiAgKi8KKyNkZWZpbmUgU0FWRURfRlBSX0NPVU5UIDEzCisjZGVmaW5lIEZQUl9TSVpFCTgKKyNkZWZpbmUgUkVTVUxUX0JZVEVTCTE2CisKKy8qIFRoaXMgc2hvdWxkIGJlIGtlcHQgaW4gc3RlcCB3aXRoIHRoZSBzYW1lIHZhbHVlIGluIGZmaV9kYXJ3aW4uYy4gICovCisjZGVmaW5lIEFTTV9ORUVEU19SRUdJU1RFUlMgNAorI2RlZmluZSBTQVZFX1JFR1NfU0laRSAoQVNNX05FRURTX1JFR0lTVEVSUyAqIEdQUl9CWVRFUykKKwogI2luY2x1ZGUgPGZmaWNvbmZpZy5oPgogI2luY2x1ZGUgPGZmaS5oPgorCiAjZGVmaW5lIEpVTVBUQVJHRVQobmFtZSkgbmFtZQogI2RlZmluZSBMKHgpIHgKLS50ZXh0Ci0JLmFsaWduIDIKLS5nbG9ibCBfZmZpX3ByZXBfYXJncwogCi0udGV4dAorCS50ZXh0CiAJLmFsaWduIDIKLS5nbG9ibCBfZmZpX2NhbGxfREFSV0lOCi0udGV4dAorCS5nbG9ibCBfZmZpX3ByZXBfYXJncworCiAJLmFsaWduIDIKKwkuZ2xvYmwgX2ZmaV9jYWxsX0RBUldJTgorCisJLyogV2UgYXJyaXZlIGhlcmUgd2l0aDoKKwkgICByMyA9IHB0ciB0byBleHRlbmRlZCBjaWYuCisJICAgcjQgPSAtYnl0ZXMuCisJICAgcjUgPSBjaWYgZmxhZ3MuCisJICAgcjYgPSBwdHIgdG8gcmV0dXJuIHZhbHVlLgorCSAgIHI3ID0gZm4gcG9pbnRlciAodXNlciBmdW5jKS4KKwkgICByOCA9IGZuIHBvaW50ZXIgKGZmaV9wcmVwX2FyZ3MpLgorCSAgIHI5ID0gZmZpX3R5cGUqIGZvciB0aGUgcmV0IHZhbC4gICovCisKIF9mZmlfY2FsbF9EQVJXSU46Ci1MRkIwOgorTHN0YXJ0Y29kZToKIAltciAgIAlyMTIscjgJLyogV2Ugb25seSBuZWVkIHIxMiB1bnRpbCB0aGUgY2FsbCwKLQkJCSAgIHNvIGl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBzYXZlZC4gICovCisJCQkgICBzbyBpdCBkb2VzIG5vdCBoYXZlIHRvIGJlIHNhdmVkLiAgKi8KIExGQjE6CiAJLyogU2F2ZSB0aGUgb2xkIHN0YWNrIHBvaW50ZXIgYXMgQVAuICAqLwogCW1yCXI4LHIxCiBMQ0ZJMDoKKwkKKwkvKiBTYXZlIHRoZSByZXR2YWwgdHlwZSBpbiBwYXJlbnRzIGZyYW1lLiAgKi8KKwlzZwlyOSwoTElOS0FHRV9TSVpFKzYqR1BSX0JZVEVTKShyOCkKKwogCS8qIEFsbG9jYXRlIHRoZSBzdGFjayBzcGFjZSB3ZSBuZWVkLiAgKi8KLQlzdHd1eAlyMSxyMSxyNAorCXNndXgJcjEscjEscjQKIAogCS8qIFNhdmUgcmVnaXN0ZXJzIHdlIHVzZS4gICovCiAJbWZscglyOQorCXNnCXI5LFNBVkVEX0xSX09GRlNFVChyOCkKIAotCXN0dwlyMjgsLTE2KHI4KQkKLQlzdHcJcjI5LC0xMihyOCkKLQlzdHcJcjMwLC04KHI4KQotCXN0dwlyMzEsLTQocjgpCisJc2cJcjI4LC0oNCAqIEdQUl9CWVRFUykocjgpCQorCXNnCXIyOSwtKDMgKiBHUFJfQllURVMpKHI4KQorCXNnCXIzMCwtKDIgKiBHUFJfQllURVMpKHI4KQorCXNnCXIzMSwtKCAgICBHUFJfQllURVMpKHI4KQogCi0Jc3R3CXI5LDgocjgpCi0Jc3R3CXIyLDIwKHIxKQorI2lmICFkZWZpbmVkKFBPV0VSUENfREFSV0lOKQorCS8qIFRoZSBUT0Mgc2xvdCBpcyByZXNlcnZlZCBpbiB0aGUgRGFyd2luIEFCSSBhbmQgcjIgaXMgdm9sYXRpbGUuICAqLworCXNnCXIyLCg1ICogR1BSX0JZVEVTKShyMSkKKyNlbmRpZgorCiBMQ0ZJMToKIAogCS8qIFNhdmUgYXJndW1lbnRzIG92ZXIgY2FsbC4gICovCkBAIC03NywxNCArMTE4LDE3IEBACiAJbXIJcjI5LHI3CS8qIGZ1bmN0aW9uIGFkZHJlc3MsICAqLwogCW1yCXIyOCxyOAkvKiBvdXIgQVAuICAqLwogTENGSTI6Ci0JLyogQ2FsbCBmZmlfcHJlcF9hcmdzLiAgKi8KKwkvKiBDYWxsIGZmaV9wcmVwX2FyZ3MuIHIzID0gZXh0ZW5kZWQgY2lmLCByNCA9IHN0YWNrIHB0ciBjb3B5LiAgKi8KIAltcglyNCxyMQogCWxpCXI5LDAKIAogCW10Y3RyCXIxMiAvKiByMTIgaG9sZHMgYWRkcmVzcyBvZiBfZmZpX3ByZXBfYXJncy4gICovCiAJYmN0cmwKLQlsd3ogICAgIHIyLDIwKHIxKQogCisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU4pCisJLyogVGhlIFRPQyBzbG90IGlzIHJlc2VydmVkIGluIHRoZSBEYXJ3aW4gQUJJIGFuZCByMiBpcyB2b2xhdGlsZS4gICovCisJbGcgICAgIHIyLCg1ICogR1BSX0JZVEVTKShyMSkKKyNlbmRpZgogCS8qIE5vdyBkbyB0aGUgY2FsbC4KIAkgICBTZXQgdXAgY3IxIHdpdGggYml0cyA0LTcgb2YgdGhlIGZsYWdzLiAgKi8KIAltdGNyZgkweDQwLHIzMQpAQCAtOTIsNzEgKzEzNiwxMzAgQEAKIAltdGN0cglyMjkKIAkvKiBMb2FkIGFsbCB0aG9zZSBhcmd1bWVudCByZWdpc3RlcnMuCiAJICAgV2UgaGF2ZSBzZXQgdXAgYSBuaWNlIHN0YWNrIGZyYW1lLCBqdXN0IGxvYWQgaXQgaW50byByZWdpc3RlcnMuICAqLwotCWx3eiAgICAgcjMsMjArKDEqNCkocjEpCi0JbHd6ICAgICByNCwyMCsoMio0KShyMSkKLQlsd3ogICAgIHI1LDIwKygzKjQpKHIxKQotCWx3eiAgICAgcjYsMjArKDQqNCkocjEpCisJbGcgICAgIHIzLCAoTElOS0FHRV9TSVpFICAgICAgICAgICAgICAgICkocjEpCisJbGcgICAgIHI0LCAoTElOS0FHRV9TSVpFICsgICAgIEdQUl9CWVRFUykocjEpCisJbGcgICAgIHI1LCAoTElOS0FHRV9TSVpFICsgMiAqIEdQUl9CWVRFUykocjEpCisJbGcgICAgIHI2LCAoTElOS0FHRV9TSVpFICsgMyAqIEdQUl9CWVRFUykocjEpCiAJbm9wCi0JbHd6ICAgICByNywyMCsoNSo0KShyMSkKLQlsd3ogICAgIHI4LDIwKyg2KjQpKHIxKQotCWx3eiAgICAgcjksMjArKDcqNCkocjEpCi0JbHd6ICAgICByMTAsMjArKDgqNCkocjEpCisJbGcgICAgIHI3LCAoTElOS0FHRV9TSVpFICsgNCAqIEdQUl9CWVRFUykocjEpCisJbGcgICAgIHI4LCAoTElOS0FHRV9TSVpFICsgNSAqIEdQUl9CWVRFUykocjEpCisJbGcgICAgIHI5LCAoTElOS0FHRV9TSVpFICsgNiAqIEdQUl9CWVRFUykocjEpCisJbGcgICAgIHIxMCwoTElOS0FHRV9TSVpFICsgNyAqIEdQUl9CWVRFUykocjEpCiAKIEwxOgotCS8qIExvYWQgYWxsIHRoZSBGUCByZWdpc3RlcnMuICAqLworCS8qIC4uLiBMb2FkIGFsbCB0aGUgRlAgcmVnaXN0ZXJzLiAgKi8KIAliZgk2LEwyCS8qIE5vIGZsb2F0cyB0byBsb2FkLiAgKi8KLQlsZmQJZjEsLTE2LSgxMyo4KShyMjgpCi0JbGZkCWYyLC0xNi0oMTIqOCkocjI4KQotCWxmZAlmMywtMTYtKDExKjgpKHIyOCkKLQlsZmQJZjQsLTE2LSgxMCo4KShyMjgpCisJbGZkCWYxLCAtU0FWRV9SRUdTX1NJWkUtKDEzKkZQUl9TSVpFKShyMjgpCisJbGZkCWYyLCAtU0FWRV9SRUdTX1NJWkUtKDEyKkZQUl9TSVpFKShyMjgpCisJbGZkCWYzLCAtU0FWRV9SRUdTX1NJWkUtKDExKkZQUl9TSVpFKShyMjgpCisJbGZkCWY0LCAtU0FWRV9SRUdTX1NJWkUtKDEwKkZQUl9TSVpFKShyMjgpCiAJbm9wCi0JbGZkCWY1LC0xNi0oOSo4KShyMjgpCi0JbGZkCWY2LC0xNi0oOCo4KShyMjgpCi0JbGZkCWY3LC0xNi0oNyo4KShyMjgpCi0JbGZkCWY4LC0xNi0oNio4KShyMjgpCisJbGZkCWY1LCAtU0FWRV9SRUdTX1NJWkUtKCA5KkZQUl9TSVpFKShyMjgpCisJbGZkCWY2LCAtU0FWRV9SRUdTX1NJWkUtKCA4KkZQUl9TSVpFKShyMjgpCisJbGZkCWY3LCAtU0FWRV9SRUdTX1NJWkUtKCA3KkZQUl9TSVpFKShyMjgpCisJbGZkCWY4LCAtU0FWRV9SRUdTX1NJWkUtKCA2KkZQUl9TSVpFKShyMjgpCiAJbm9wCi0JbGZkICAgICBmOSwtMTYtKDUqOCkocjI4KQotCWxmZCAgICAgZjEwLC0xNi0oNCo4KShyMjgpCi0JbGZkICAgICBmMTEsLTE2LSgzKjgpKHIyOCkKLQlsZmQgICAgIGYxMiwtMTYtKDIqOCkocjI4KQorCWxmZCAgICAgZjksIC1TQVZFX1JFR1NfU0laRS0oIDUqRlBSX1NJWkUpKHIyOCkKKwlsZmQgICAgIGYxMCwtU0FWRV9SRUdTX1NJWkUtKCA0KkZQUl9TSVpFKShyMjgpCisJbGZkICAgICBmMTEsLVNBVkVfUkVHU19TSVpFLSggMypGUFJfU0laRSkocjI4KQorCWxmZCAgICAgZjEyLC1TQVZFX1JFR1NfU0laRS0oIDIqRlBSX1NJWkUpKHIyOCkKIAlub3AKLQlsZmQgICAgIGYxMywtMTYtKDEqOCkocjI4KQorCWxmZCAgICAgZjEzLC1TQVZFX1JFR1NfU0laRS0oIDEqRlBSX1NJWkUpKHIyOCkKIAogTDI6CiAJbXIJcjEyLHIyOQkvKiBQdXQgdGhlIHRhcmdldCBhZGRyZXNzIGluIHIxMiBhcyBzcGVjaWZpZWQuICAqLwogCW10Y3RyICAJcjEyCiAJbm9wCiAJbm9wCisKIAkvKiBNYWtlIHRoZSBjYWxsLiAgKi8KIAliY3RybAogCiAJLyogTm93LCBkZWFsIHdpdGggdGhlIHJldHVybiB2YWx1ZS4gICovCi0JbXRjcmYJMHgwMSxyMzEKIAotCWJ0CTMwLEwoZG9uZV9yZXR1cm5fdmFsdWUpCi0JYnQJMjksTChmcF9yZXR1cm5fdmFsdWUpCi0Jc3R3CXIzLDAocjMwKQotCWJmCTI4LEwoZG9uZV9yZXR1cm5fdmFsdWUpCi0Jc3R3CXI0LDQocjMwKQorCS8qIG02NCBzdHJ1Y3R1cmUgcmV0dXJucyBjYW4gb2NjdXB5IHRoZSBzYW1lIHNldCBvZiByZWdpc3RlcnMgYXMKKwkgICB3b3VsZCBiZSB1c2VkIHRvIHBhc3Mgc3VjaCBhIHN0cnVjdHVyZSBhcyBhcmcwIC0gc28gdGFrZSBjYXJlIAorCSAgIG5vdCB0byBzdGVwIG9uIGFueSBwb3NzaWJseSBob3QgcmVncy4gICovCiAKLQkvKiBGYWxsIHRocm91Z2guICAqLworCS8qIEdldCB0aGUgZmxhZ3MuLiAqLworCW10Y3JmCTB4MDMscjMxIDsgd2UgbmVlZCBjNiAmIGNyNyBub3cuCisJOyBGTEFHX1JFVFVSTlNfTk9USElORyBhbHNvIGNvdmVycyBzdHJ1Y3QgcmV0LWJ5LXJlZi4KKwlidAkzMCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQkgIDsgRkxBR19SRVRVUk5TX05PVEhJTkcKKwliZgkyNyxMKHNjYWxhcl9yZXR1cm5fdmFsdWUpIDsgbm90IEZMQUdfUkVUVVJOU19TVFJVQ1QKKwkKKwkvKiBPSywgc28gd2UgaGF2ZSBhIHN0cnVjdC4gICovCisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJYnQJMzEsTChtYXliZV9yZXR1cm5fMTI4KSA7IEZMQUdfUkVUVVJOU18xMjhCSVRTLCBzcGVjaWFsIGNhc2UgCiAKLUwoZG9uZV9yZXR1cm5fdmFsdWUpOgotCS8qIFJlc3RvcmUgdGhlIHJlZ2lzdGVycyB3ZSB1c2VkIGFuZCByZXR1cm4uICAqLwotCWx3eglyOSw4KHIyOCkKLQlsd3oJcjMxLC00KHIyOCkKLQltdGxyCXI5Ci0JbHd6CXIzMCwtOChyMjgpCi0JbHd6CXIyOSwtMTIocjI4KQotCWx3eglyMjgsLTE2KHIyOCkKLQlsd3oJcjEsMChyMSkKLQlibHIKKwkvKiBPSywgd2UgaGF2ZSB0byBtYXAgdGhlIHJldHVybiBiYWNrIHRvIGEgbWVtIHN0cnVjdC4KKwkgICBXZSBhcmUgYWJvdXQgdG8gdHJhbXBsZSB0aGUgcGFyZW50cyBwYXJhbSBhcmVhLCBzbyByZWNvdmVyIHRoZQorCSAgIHJldHVybiB0eXBlLiAgcjI5IGlzIGZyZWUsIHNpbmNlIHRoZSBjYWxsIGlzIGRvbmUuICAqLworCWxnCXIyOSwoTElOS0FHRV9TSVpFICsgNiAqIEdQUl9CWVRFUykocjI4KQorCisJc2cJcjMsIChMSU5LQUdFX1NJWkUgICAgICAgICAgICAgICAgKShyMjgpCisJc2cJcjQsIChMSU5LQUdFX1NJWkUgKyAgICAgR1BSX0JZVEVTKShyMjgpCisJc2cJcjUsIChMSU5LQUdFX1NJWkUgKyAyICogR1BSX0JZVEVTKShyMjgpCisJc2cJcjYsIChMSU5LQUdFX1NJWkUgKyAzICogR1BSX0JZVEVTKShyMjgpCisJbm9wCisJc2cJcjcsIChMSU5LQUdFX1NJWkUgKyA0ICogR1BSX0JZVEVTKShyMjgpCisJc2cJcjgsIChMSU5LQUdFX1NJWkUgKyA1ICogR1BSX0JZVEVTKShyMjgpCisJc2cJcjksIChMSU5LQUdFX1NJWkUgKyA2ICogR1BSX0JZVEVTKShyMjgpCisJc2cJcjEwLChMSU5LQUdFX1NJWkUgKyA3ICogR1BSX0JZVEVTKShyMjgpCisJLyogT0ssIHNvIGRvIHRoZSBibG9jayBtb3ZlIC0gd2UgdHJ1c3QgdGhhdCBtZW1jcHkgd2lsbCBub3QgdHJhbXBsZQorCSAgIHRoZSBmcHJzLi4uICAqLworCW1yIAlyMyxyMzAgOyBkZXN0CisJYWRkaQlyNCxyMjgsTElOS0FHRV9TSVpFIDsgc291cmNlCisJLyogVGhlIHNpemUgaXMgYSBzaXplX3QsIHNob3VsZCBiZSBsb25nLiAgKi8KKwlsZwlyNSwwKHIyOSkKKwkvKiBGaWd1cmUgb3V0IHNtYWxsIHN0cnVjdHMgKi8KKwljbXBpCTAscjUsNAorCWJndAlMMwk7IDEsIDIgYW5kIDQgYnl0ZXMgaGF2ZSBzcGVjaWFsIHJ1bGVzLgorCWNtcGkJMCxyNSwzCisJYmVxCUwzCTsgbm90IDMKKwlhZGRpCXI0LHI0LDgKKwlzdWJmCXI0LHI1LHI0CitMMzoKKwlibAlfbWVtY3B5CisJCisJLyogLi4uIGRvIHdlIG5lZWQgdGhlIEZQIHJlZ2lzdGVycz8gLSByZWNvdmVyIHRoZSBmbGFncy4uICovCisJbXRjcmYJMHgwMyxyMzEgOyB3ZSBuZWVkIGM2ICYgY3I3IG5vdy4KKwliZgkyOSxMKGRvbmVfcmV0dXJuX3ZhbHVlKQkvKiBObyBmbG9hdHMgaW4gdGhlIHN0cnVjdC4gICovCisJc3RmZAlmMSwgLVNBVkVfUkVHU19TSVpFLSgxMypGUFJfU0laRSkocjI4KQorCXN0ZmQJZjIsIC1TQVZFX1JFR1NfU0laRS0oMTIqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYzLCAtU0FWRV9SRUdTX1NJWkUtKDExKkZQUl9TSVpFKShyMjgpCisJc3RmZAlmNCwgLVNBVkVfUkVHU19TSVpFLSgxMCpGUFJfU0laRSkocjI4KQorCW5vcAorCXN0ZmQJZjUsIC1TQVZFX1JFR1NfU0laRS0oIDkqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWY2LCAtU0FWRV9SRUdTX1NJWkUtKCA4KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmNywgLVNBVkVfUkVHU19TSVpFLSggNypGUFJfU0laRSkocjI4KQorCXN0ZmQJZjgsIC1TQVZFX1JFR1NfU0laRS0oIDYqRlBSX1NJWkUpKHIyOCkKKwlub3AKKwlzdGZkCWY5LCAtU0FWRV9SRUdTX1NJWkUtKCA1KkZQUl9TSVpFKShyMjgpCisJc3RmZAlmMTAsLVNBVkVfUkVHU19TSVpFLSggNCpGUFJfU0laRSkocjI4KQorCXN0ZmQJZjExLC1TQVZFX1JFR1NfU0laRS0oIDMqRlBSX1NJWkUpKHIyOCkKKwlzdGZkCWYxMiwtU0FWRV9SRUdTX1NJWkUtKCAyKkZQUl9TSVpFKShyMjgpCisJbm9wCisJc3RmZAlmMTMsLVNBVkVfUkVHU19TSVpFLSggMSpGUFJfU0laRSkocjI4KQorCisJbXIJcjMscjI5CTsgZmZpX3R5cGUgKgorCW1yCXI0LHIzMAk7IGRlc3QKKwlhZGRpCXI1LHIyOCwtU0FWRV9SRUdTX1NJWkUtKDEzKkZQUl9TSVpFKSA7IGZwcnMKKwl4b3IJcjYscjYscjYKKwlzZwlyNiwoTElOS0FHRV9TSVpFICsgNyAqIEdQUl9CWVRFUykocjI4KQorCWFkZGkJcjYscjI4LChMSU5LQUdFX1NJWkUgKyA3ICogR1BSX0JZVEVTKSA7IHBvaW50IHRvIGEgemVyb2VkIGNvdW50ZXIuCisJYmwgCV9kYXJ3aW42NF9zdHJ1Y3RfZmxvYXRzX3RvX21lbQorCisJYiBMKGRvbmVfcmV0dXJuX3ZhbHVlKQorI2Vsc2UKKwlzdHcJcjMsMChyMzApIDsgbTMyIHRoZSBvbmx5IHN0cnVjdCByZXR1cm4gaW4gcmVnIGlzIDQgYnl0ZXMuCisjZW5kaWYKKwliIEwoZG9uZV9yZXR1cm5fdmFsdWUpCiAKIEwoZnBfcmV0dXJuX3ZhbHVlKToKIAkvKiBEbyB3ZSBoYXZlIGxvbmcgZG91YmxlIHRvIHN0b3JlPyAgKi8KLQliZgkzMSxMKGZkX3JldHVybl92YWx1ZSkKKwliZgkzMSxMKGZkX3JldHVybl92YWx1ZSkgOyBGTEFHX1JFVFVSTlNfMTI4QklUUwogCXN0ZmQJZjEsMChyMzApCi0Jc3RmZAlmMiw4KHIzMCkKKwlzdGZkCWYyLEZQUl9TSVpFKHIzMCkKIAliCUwoZG9uZV9yZXR1cm5fdmFsdWUpCiAKIEwoZmRfcmV0dXJuX3ZhbHVlKToKQEAgLTE3MCwyMSArMjczLDU3IEBACiAJc3RmcwlmMSwwKHIzMCkKIAliCUwoZG9uZV9yZXR1cm5fdmFsdWUpCiAKK0woc2NhbGFyX3JldHVybl92YWx1ZSk6CisJYnQJMjksTChmcF9yZXR1cm5fdmFsdWUpCTsgRkxBR19SRVRVUk5TX0ZQCisJOyBmZmlfYXJnIGlzIGRlZmluZWQgYXMgdW5zaWduZWQgbG9uZy4gCisJc2cJcjMsMChyMzApCQk7IFNhdmUgdGhlIHJlZy4KKwliZgkyOCxMKGRvbmVfcmV0dXJuX3ZhbHVlKSA7IG5vdCBGTEFHX1JFVFVSTlNfNjRCSVRTIAorCisjaWYgZGVmaW5lZChfX3BwYzY0X18pCitMKG1heWJlX3JldHVybl8xMjgpOgorCXN0ZAlyMywwKHIzMCkKKwliZgkzMSxMKGRvbmVfcmV0dXJuX3ZhbHVlKSA7IG5vdCBGTEFHX1JFVFVSTlNfMTI4QklUUyAKKwlzdGQJcjQsOChyMzApCisjZWxzZQorCXN0dwlyNCw0KHIzMCkKKyNlbmRpZgorCisJLyogRmFsbCB0aHJvdWdoLiAgKi8KKwkvKiBXZSB3YW50IHRoaXMgYXQgdGhlIGVuZCB0byBzaW1wbGlmeSBlaCBlcGlsb2cgY29tcHV0YXRpb24uICAqLworCitMKGRvbmVfcmV0dXJuX3ZhbHVlKToKKwkvKiBSZXN0b3JlIHRoZSByZWdpc3RlcnMgd2UgdXNlZCBhbmQgcmV0dXJuLiAgKi8KKwlsZwlyMjksU0FWRURfTFJfT0ZGU0VUKHIyOCkKKwk7IGVwaWxvZworCWxnCXIzMSwtKDEgKiBHUFJfQllURVMpKHIyOCkKKwltdGxyCXIyOQorCWxnCXIzMCwtKDIgKiBHUFJfQllURVMpKHIyOCkKKwlsZwlyMjksLSgzICogR1BSX0JZVEVTKShyMjgpCisJbGcJcjI4LC0oNCAqIEdQUl9CWVRFUykocjI4KQorCWxnCXIxLDAocjEpCisJYmxyCiBMRkUxOgorCS5hbGlnbgkxCiAvKiBFTkQoX2ZmaV9jYWxsX0RBUldJTikgICovCiAKIC8qIFByb3ZpZGUgYSBudWxsIGRlZmluaXRpb24gb2YgX2ZmaV9jYWxsX0FJWC4gICovCi0udGV4dAotCS5hbGlnbiAyCi0uZ2xvYmwgX2ZmaV9jYWxsX0FJWAotLnRleHQKKwkudGV4dAorCS5nbG9ibCBfZmZpX2NhbGxfQUlYCiAJLmFsaWduIDIKIF9mZmlfY2FsbF9BSVg6CiAJYmxyCiAvKiBFTkQoX2ZmaV9jYWxsX0FJWCkgICovCiAKLS5kYXRhCi0uc2VjdGlvbiBfX1RFWFQsX19laF9mcmFtZSxjb2FsZXNjZWQsbm9fdG9jK3N0cmlwX3N0YXRpY19zeW1zCisvKiBFSCBzdHVmZi4gICovCisKKyNkZWZpbmUgRUhfREFUQV9BTElHTl9GQUNUIE1PREVfQ0hPSUNFKDB4N2MsMHg3OCkKKworCS5zdGF0aWNfZGF0YQorCS5hbGlnbiBMT0cyX0dQUl9CWVRFUworTExGQjAkbm9uX2xhenlfcHRyOgorCS5nX2xvbmcgTHN0YXJ0Y29kZQorCisJLnNlY3Rpb24gX19URVhULF9fZWhfZnJhbWUsY29hbGVzY2VkLG5vX3RvYytzdHJpcF9zdGF0aWNfc3ltcytsaXZlX3N1cHBvcnQKIEVIX2ZyYW1lMToKIAkuc2V0CUwkc2V0JDAsTEVDSUUxLUxTQ0lFMQogCS5sb25nCUwkc2V0JDAJOyBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5CkBAIC0xOTMsMTYgKzMzMiwxNyBAQAogCS5ieXRlCTB4MQk7IENJRSBWZXJzaW9uCiAJLmFzY2lpCSJ6UlwwIgk7IENJRSBBdWdtZW50YXRpb24KIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MTsgQ0lFIENvZGUgQWxpZ25tZW50IEZhY3RvcgotCS5ieXRlCTB4N2MJOyBzbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yCisJLmJ5dGUJRUhfREFUQV9BTElHTl9GQUNUIDsgc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgogCS5ieXRlCTB4NDEJOyBDSUUgUkEgQ29sdW1uCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDE7IEF1Z21lbnRhdGlvbiBzaXplCi0JLmJ5dGUJMHg5MAk7IEZERSBFbmNvZGluZyAoaW5kaXJlY3QgcGNyZWwpCisJLmJ5dGUJMHgxMAk7IEZERSBFbmNvZGluZyAoaW5kaXJlY3QgcGNyZWwpCiAJLmJ5dGUJMHhjCTsgRFdfQ0ZBX2RlZl9jZmEKIAkuYnl0ZQkweDEJOyB1bGViMTI4IDB4MQogCS5ieXRlCTB4MAk7IHVsZWIxMjggMHgwCiAJLmFsaWduCUxPRzJfR1BSX0JZVEVTCiBMRUNJRTE6Ci0uZ2xvYmwgX2ZmaV9jYWxsX0RBUldJTi5laAorCisJLmdsb2JsIF9mZmlfY2FsbF9EQVJXSU4uZWgKIF9mZmlfY2FsbF9EQVJXSU4uZWg6CiBMU0ZERTE6CiAJLnNldAlMJHNldCQxLExFRkRFMS1MQVNGREUxCkBAIC0yMTAsMTEgKzM1MCwxMSBAQAogTEFTRkRFMToKIAkubG9uZwlMQVNGREUxLUVIX2ZyYW1lMSA7IEZERSBDSUUgb2Zmc2V0CiAJLmdfbG9uZwlMTEZCMCRub25fbGF6eV9wdHItLgk7IEZERSBpbml0aWFsIGxvY2F0aW9uCi0JLnNldAlMJHNldCQzLExGRTEtTEZCMAorCS5zZXQJTCRzZXQkMyxMRkUxLUxzdGFydGNvZGUKIAkuZ19sb25nCUwkc2V0JDMJOyBGREUgYWRkcmVzcyByYW5nZQogCS5ieXRlICAgMHgwICAgICA7IHVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZQogCS5ieXRlCTB4NAk7IERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuc2V0CUwkc2V0JDQsTENGSTAtTEZCMQorCS5zZXQJTCRzZXQkNCxMQ0ZJMC1Mc3RhcnRjb2RlCiAJLmxvbmcJTCRzZXQkNAogCS5ieXRlCTB4ZAk7IERXX0NGQV9kZWZfY2ZhX3JlZ2lzdGVyCiAJLmJ5dGUJMHgwOAk7IHVsZWIxMjggMHgwOApAQCAtMjM5LDcgKzM3OSw1IEBACiAJLmJ5dGUJMHgxYwk7IHVsZWIxMjggMHgxYwogCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwogTEVGREUxOgotLmRhdGEKLQkuYWxpZ24gTE9HMl9HUFJfQllURVMKLUxMRkIwJG5vbl9sYXp5X3B0cjoKLQkuZ19sb25nIExGQjAKKwkuYWxpZ24gMQorCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2Rhcndpbl9jbG9zdXJlLlMKaW5kZXggNzk1OTgzOC4uM2Y2NzkwZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9kYXJ3aW5fY2xvc3VyZS5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZGFyd2luX2Nsb3N1cmUuUwpAQCAtMSw2ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBkYXJ3aW5fY2xvc3VyZS5TIC0gQ29weXJpZ2h0IChjKSAyMDAyLCAyMDAzLCAyMDA0LCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0gICBJbmMuIGJhc2VkIG9uIHBwY19jbG9zdXJlLlMKKyAgIGRhcndpbl9jbG9zdXJlLlMgLSBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMsIDIwMDQsIDIwMTAsIAorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIAorICAgYmFzZWQgb24gcHBjX2Nsb3N1cmUuUwogCiAgICBQb3dlclBDIEFzc2VtYmx5IGdsdWUuCiAKQEAgLTMzLDkxICszNCwxNzcgQEAKICNkZWZpbmUgTU9ERV9DSE9JQ0UoeCwgeSkgeAogI2VuZGlmCiAKLSNkZWZpbmUgbGd1ICAgICBNT0RFX0NIT0lDRShsd3p1LCBsZHUpCisjZGVmaW5lIG1hY2hpbmVfY2hvaWNlCU1PREVfQ0hPSUNFKHBwYzc0MDAscHBjNjQpCiAKLSNkZWZpbmUgZ19sb25nICBNT0RFX0NIT0lDRShsb25nLCBxdWFkKSAgICAgICAgIC8qIHVzYWdlIGlzICIuZ19sb25nIiAqLworOyBEZWZpbmUgc29tZSBwc2V1ZG8tb3Bjb2RlcyBmb3Igc2l6ZS1pbmRlcGVuZGVudCBsb2FkICYgc3RvcmUgb2YgR1BScyAuLi4KKyNkZWZpbmUgbGd1CQlNT0RFX0NIT0lDRShsd3p1LCBsZHUpCisjZGVmaW5lIGxnCQlNT0RFX0NIT0lDRShsd3osbGQpCisjZGVmaW5lIHNnCQlNT0RFX0NIT0lDRShzdHcsc3RkKQorI2RlZmluZSBzZ3UJCU1PREVfQ0hPSUNFKHN0d3Usc3RkdSkKIAotI2RlZmluZSBMT0cyX0dQUl9CWVRFUyAgTU9ERV9DSE9JQ0UoMiwzKSAgICAgICAgLyogbG9nMihHUFJfQllURVMpICovCis7IC4uLiBhbmQgdGhlIHNpemUgb2YgR1BScyBhbmQgdGhlaXIgc3RvcmFnZSBpbmRpY2F0b3IuCisjZGVmaW5lIEdQUl9CWVRFUwlNT0RFX0NIT0lDRSg0LDgpCisjZGVmaW5lIExPRzJfR1BSX0JZVEVTCU1PREVfQ0hPSUNFKDIsMykJLyogbG9nMihHUFJfQllURVMpICovCisjZGVmaW5lIGdfbG9uZwkJTU9ERV9DSE9JQ0UobG9uZywgcXVhZCkJLyogdXNhZ2UgaXMgIi5nX2xvbmciICovCisKKzsgRnJvbSB0aGUgQUJJIGRvYzogIk1hYyBPUyBYIEFCSSBGdW5jdGlvbiBDYWxsIEd1aWRlIiBWZXJzaW9uIDIwMDktMDItMDQuCisjZGVmaW5lIExJTktBR0VfU0laRQlNT0RFX0NIT0lDRSgyNCw0OCkKKyNkZWZpbmUgUEFSQU1fQVJFQQlNT0RFX0NIT0lDRSgzMiw2NCkKKworI2RlZmluZSBTQVZFRF9DUl9PRkZTRVQJTU9ERV9DSE9JQ0UoNCw4KQkvKiBzYXZlIHBvc2l0aW9uIGZvciBDUiAqLworI2RlZmluZSBTQVZFRF9MUl9PRkZTRVQJTU9ERV9DSE9JQ0UoOCwxNikJLyogc2F2ZSBwb3NpdGlvbiBmb3IgbHIgKi8KKworLyogV0FSTklORzogaWYgZmZpX3R5cGUgaXMgY2hhbmdlZC4uLiBoZXJlIGJlIG1vbnN0ZXJzLiAgCisgICBPZmZzZXRzIG9mIGl0ZW1zIHdpdGhpbiB0aGUgcmVzdWx0IHR5cGUuICAqLworI2RlZmluZSBGRklfVFlQRV9UWVBFCU1PREVfQ0hPSUNFKDYsMTApCisjZGVmaW5lIEZGSV9UWVBFX0VMRU0JTU9ERV9DSE9JQ0UoOCwxNikKKworI2RlZmluZSBTQVZFRF9GUFJfQ09VTlQgMTMKKyNkZWZpbmUgRlBSX1NJWkUJOAorLyogYmlnZ2VzdCBtNjQgc3RydWN0IHJldCBpcyA4R1BSUyArIDEzRlBSUyA9IDE2OCBieXRlcyAtIHJvdW5kZWQgdG8gMTZieXRlcyA9IDE3Ni4gKi8KKyNkZWZpbmUgUkVTVUxUX0JZVEVTCU1PREVfQ0hPSUNFKDE2LDE3NikKKworOyBUaGUgd2hvbGUgc3RhY2sgZnJhbWUgKipNVVNUKiogYmUgMTZieXRlLWFsaWduZWQuCisjZGVmaW5lIFNBVkVfU0laRSAoKChMSU5LQUdFX1NJWkUrUEFSQU1fQVJFQStTQVZFRF9GUFJfQ09VTlQqRlBSX1NJWkUrUkVTVUxUX0JZVEVTKSsxNSkgJiAtMTZMTCkKKyNkZWZpbmUgUEFEX1NJWkUgKFNBVkVfU0laRS0oTElOS0FHRV9TSVpFK1BBUkFNX0FSRUErU0FWRURfRlBSX0NPVU5UKkZQUl9TSVpFK1JFU1VMVF9CWVRFUykpCisKKyNkZWZpbmUgUEFSRU5UX1BBUk1fQkFTRSAoU0FWRV9TSVpFK0xJTktBR0VfU0laRSkKKyNkZWZpbmUgRlBfU0FWRV9CQVNFIChMSU5LQUdFX1NJWkUrUEFSQU1fQVJFQSkKKworI2lmIGRlZmluZWQoX19FTlZJUk9OTUVOVF9NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRF9fKSAmJiBfX0VOVklST05NRU5UX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEX18gPj0gMTA1MAorOyBXZSBubyBsb25nZXIgbmVlZCB0aGUgcGljIHN5bWJvbCBzdHViIGZvciBEYXJ3aW4gPj0gOS4KKyNkZWZpbmUgQkxDTFNfSEVMUCBfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgorI2RlZmluZSBTVFJVQ1RfUkVUVkFMVUVfUCBfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wCisjZGVmaW5lIFBBU1NfU1RSX0ZMT0FUUyBfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzCisjdW5kZWYgV0FOVF9TVFVCCisjZWxzZQorI2RlZmluZSBCTENMU19IRUxQIExfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiRzdHViCisjZGVmaW5lIFNUUlVDVF9SRVRWQUxVRV9QIExfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJHN0dWIKKyNkZWZpbmUgUEFTU19TVFJfRkxPQVRTIExfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJHN0dWIKKyNkZWZpbmUgV0FOVF9TVFVCCisjZW5kaWYKKworLyogbTMyL202NAorCisgICBUaGUgc3RhY2sgbGF5b3V0IGxvb2tzIGxpa2UgdGhpczoKKworICAgfCAgIEFkZGl0aW9uYWwgcGFyYW1zLi4uCQkJfCB8ICAgICBIaWdoZXIgYWRkcmVzcworICAgfgkJCQkJCX4gfgorICAgfCAgIFBhcmFtZXRlcnMgICAgICAoYXQgbGVhc3QgOCo0Lzg9MzIvNjQpCXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAyKjQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFNwYWNlIGZvciBjYWxsZWVgcyBMUgkJNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgU2F2ZWQgQ1IgW2xvdyB3b3JkIGZvciBtNjRdICAgICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgQ3VycmVudCBiYWNrY2hhaW4gcG9pbnRlcgk0LzgJfC0vIFBhcmVudGBzIGZyYW1lLgorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCA8KyA8PDwgb24gZW50cnkgdG8KKyAgIHwgICBSZXN1bHQgQnl0ZXMJCSAgICAgICAxNi8xNzYJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIH4gICBwYWRkaW5nIHRvIDE2LWJ5dGUgYWxpZ25tZW50CQl+IH4KKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyBzbG90cwkJfCB8CisgICB8ICAgaGVyZSBmcDEzIC4uIGZwMQkJICAgICAgIDEzKjgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBSMy4uUjEwCQkJICA4KjQvOD0zMi82NAl8IHwgTlVNX0dQUl9BUkdfUkVHSVNURVJTCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBUT0M9UjIgKEFJWCkgUmVzZXJ2ZWQgKERhcndpbikgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJc3RhY2sJfAorICAgfCAgIFJlc2VydmVkIFtjb21waWxlcixiaW5kZXJdICAgICAyKjQvOAl8IHwJZ3Jvd3MJfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWRvd24JVgorICAgfCAgIFNwYWNlIGZvciBjYWxsZWVzIExSCQk0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJbG93ZXIgYWRkcmVzc2VzCisgICB8ICAgU2F2ZWQgQ1IgW2xvdyB3b3JkIGZvciBtNjRdICAgICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8ICAgICBzdGFjayBwb2ludGVyIGhlcmUKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8JZHVyaW5nCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18ICAgPDw8CWNhbGwuCisKKyovCiAKIAkuZmlsZQkiZGFyd2luX2Nsb3N1cmUuUyIKLS50ZXh0Ci0JLmFsaWduIExPRzJfR1BSX0JZVEVTCi0uZ2xvYmwgX2ZmaV9jbG9zdXJlX0FTTQogCi0udGV4dAorCS5tYWNoaW5lIG1hY2hpbmVfY2hvaWNlCisKKwkudGV4dAorCS5nbG9ibCBfZmZpX2Nsb3N1cmVfQVNNCiAJLmFsaWduIExPRzJfR1BSX0JZVEVTCiBfZmZpX2Nsb3N1cmVfQVNNOgogTEZCMToKLQltZmxyCXIwCQkvKiBleHRyYWN0IHJldHVybiBhZGRyZXNzICAqLwotCXN0dwlyMCw4KHIxKQkvKiBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyAgKi8KK0xzdGFydGNvZGU6CisJbWZscglyMAkJCS8qIGV4dHJhY3QgcmV0dXJuIGFkZHJlc3MgICovCisJc2cJcjAsU0FWRURfTFJfT0ZGU0VUKHIxKQkvKiBzYXZlIHRoZSByZXR1cm4gYWRkcmVzcyAgKi8KIExDRkkwOgotCS8qIDI0IEJ5dGVzIChMaW5rYWdlIEFyZWEpCi0JICAgMzIgQnl0ZXMgKG91dGdvaW5nIHBhcmFtZXRlciBhcmVhLCBhbHdheXMgcmVzZXJ2ZWQpCi0JICAgMTA0IEJ5dGVzICgxMyo4IGZyb20gRlBSKQotCSAgIDE2IEJ5dGVzIChyZXN1bHQpCi0JICAgMTc2IEJ5dGVzICAqLwotCi0Jc3R3dQlyMSwtMTc2KHIxKQkvKiBza2lwIG92ZXIgY2FsbGVyIHNhdmUgYXJlYQotCQkJCWtlZXAgc3RhY2sgYWxpZ25lZCB0byAxNi4gICovCisJc2d1CXIxLC1TQVZFX1NJWkUocjEpCS8qIHNraXAgb3ZlciBjYWxsZXIgc2F2ZSBhcmVhCisJCQkJCWtlZXAgc3RhY2sgYWxpZ25lZCB0byAxNi4gICovCiBMQ0ZJMToKIAkvKiBXZSB3YW50IHRvIGJ1aWxkIHVwIGFuIGFyZWEgZm9yIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZAogCSAgIGluIHJlZ2lzdGVycy4gKGJvdGggZmxvYXRpbmcgcG9pbnQgYW5kIGludGVnZXIpICAqLwogCi0JLyogV2Ugc3RvcmUgZ3ByIDMgdG8gZ3ByIDEwIChhbGlnbmVkIHRvIDQpCi0JICAgaW4gdGhlIHBhcmVudHMgb3V0Z29pbmcgYXJlYS4gICovCi0Jc3R3ICAgcjMsMjAwKHIxKQotCXN0dyAgIHI0LDIwNChyMSkKLQlzdHcgICByNSwyMDgocjEpCi0Jc3R3ICAgcjYsMjEyKHIxKQotCXN0dyAgIHI3LDIxNihyMSkKLQlzdHcgICByOCwyMjAocjEpCi0Jc3R3ICAgcjksMjI0KHIxKQotCXN0dyAgIHIxMCwyMjgocjEpCisJLyogUHV0IGdwciAzIHRvIGdwciAxMCBpbiB0aGUgcGFyZW50cyBvdXRnb2luZyBhcmVhLi4uCisJICAgLi4uIHRoZSByZW1haW5kZXIgb2YgYW55IHBhcmFtcyB0aGF0IG92ZXJmbG93ZWQgdGhlIHJlZ3Mgd2lsbAorCSAgIGZvbGxvdyBoZXJlLiAgKi8KKwlzZwlyMywgKFBBUkVOVF9QQVJNX0JBU0UgICAgICAgICAgICAgICAgKShyMSkKKwlzZwlyNCwgKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgICAgKShyMSkKKwlzZwlyNSwgKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgKiAyKShyMSkKKwlzZwlyNiwgKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgKiAzKShyMSkKKwlzZwlyNywgKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgKiA0KShyMSkKKwlzZwlyOCwgKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgKiA1KShyMSkKKwlzZwlyOSwgKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgKiA2KShyMSkKKwlzZwlyMTAsKFBBUkVOVF9QQVJNX0JBU0UgKyBHUFJfQllURVMgKiA3KShyMSkKIAotCS8qIFdlIHNhdmUgZnByIDEgdG8gZnByIDEzLiAoYWxpZ25lZCB0byA4KSAgKi8KLQlzdGZkICBmMSw1NihyMSkKLQlzdGZkICBmMiw2NChyMSkKLQlzdGZkICBmMyw3MihyMSkKLQlzdGZkICBmNCw4MChyMSkKLQlzdGZkICBmNSw4OChyMSkKLQlzdGZkICBmNiw5NihyMSkKLQlzdGZkICBmNywxMDQocjEpCi0Jc3RmZCAgZjgsMTEyKHIxKQotCXN0ZmQgIGY5LDEyMChyMSkKLQlzdGZkICBmMTAsMTI4KHIxKQotCXN0ZmQgIGYxMSwxMzYocjEpCi0Jc3RmZCAgZjEyLDE0NChyMSkKLQlzdGZkICBmMTMsMTUyKHIxKQorCS8qIFdlIHNhdmUgZnByIDEgdG8gZnByIDE0IGluIG91ciBvd24gc2F2ZSBmcmFtZS4gICovCisJc3RmZAlmMSwgKEZQX1NBVkVfQkFTRSAgICAgICAgICAgICAgICAgKShyMSkKKwlzdGZkCWYyLCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICAgICApKHIxKQorCXN0ZmQJZjMsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAyICkocjEpCisJc3RmZAlmNCwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDMgKShyMSkKKwlzdGZkCWY1LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNCApKHIxKQorCXN0ZmQJZjYsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA1ICkocjEpCisJc3RmZAlmNywgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDYgKShyMSkKKwlzdGZkCWY4LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNyApKHIxKQorCXN0ZmQJZjksIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA4ICkocjEpCisJc3RmZAlmMTAsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDkgKShyMSkKKwlzdGZkCWYxMSwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTApKHIxKQorCXN0ZmQJZjEyLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMSkocjEpCisJc3RmZAlmMTMsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDEyKShyMSkKIAogCS8qIFNldCB1cCByZWdpc3RlcnMgZm9yIHRoZSByb3V0aW5lIHRoYXQgYWN0dWFsbHkgZG9lcyB0aGUgd29yawogCSAgIGdldCB0aGUgY29udGV4dCBwb2ludGVyIGZyb20gdGhlIHRyYW1wb2xpbmUuICAqLwotCW1yIHIzLHIxMQorCW1yCXIzLHIxMQogCiAJLyogTm93IGxvYWQgdXAgdGhlIHBvaW50ZXIgdG8gdGhlIHJlc3VsdCBzdG9yYWdlLiAgKi8KLQlhZGRpIHI0LHIxLDE2MAorCWFkZGkJcjQscjEsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpCiAKIAkvKiBOb3cgbG9hZCB1cCB0aGUgcG9pbnRlciB0byB0aGUgc2F2ZWQgZ3ByIHJlZ2lzdGVycy4gICovCi0JYWRkaSByNSxyMSwyMDAKKwlhZGRpCXI1LHIxLFBBUkVOVF9QQVJNX0JBU0UKIAogCS8qIE5vdyBsb2FkIHVwIHRoZSBwb2ludGVyIHRvIHRoZSBzYXZlZCBmcHIgcmVnaXN0ZXJzLiAgKi8KLQlhZGRpIHI2LHIxLDU2CisJYWRkaQlyNixyMSxGUF9TQVZFX0JBU0UKIAogCS8qIE1ha2UgdGhlIGNhbGwuICAqLwotCWJsCUxmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJHN0dWIKKwlibAlCTENMU19IRUxQCiAKLQkvKiBOb3cgcjMgY29udGFpbnMgdGhlIHJldHVybiB0eXBlCi0JICAgc28gdXNlIGl0IHRvIGxvb2sgdXAgaW4gYSB0YWJsZQorCS8qIHIzIGNvbnRhaW5zIHRoZSBydHlwZSBwb2ludGVyLi4uIHNhdmUgaXQgc2luY2Ugd2Ugd2lsbCBuZWVkCisJICAgaXQgbGF0ZXIuICAqLworCXNnCXIzLExJTktBR0VfU0laRShyMSkJOyBmZmlfdHlwZSAqIHJlc3VsdF90eXBlCisJbGcJcjAsMChyMykJCTsgc2l6ZSA9PiByMAorCWxoeglyMyxGRklfVFlQRV9UWVBFKHIzKQk7IHR5cGUgPT4gcjMKKworCS8qIFRoZSBoZWxwZXIgd2lsbCBoYXZlIGludGVyY2VwdGVkIHN0cnV0dXJlIHJldHVybnMgYW5kIGluc2VydGVkCisJICAgdGhlIGNhbGxlcmBzIGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yIHN0cnVjdHMgcmV0dXJuZWQgYnkgcmVmLiAgKi8KKworCS8qIHIzIGNvbnRhaW5zIHRoZSByZXR1cm4gdHlwZSAgc28gdXNlIGl0IHRvIGxvb2sgdXAgaW4gYSB0YWJsZQogCSAgIHNvIHdlIGtub3cgaG93IHRvIGRlYWwgd2l0aCBlYWNoIHR5cGUuICAqLwogCi0JLyogTG9vayB1cCB0aGUgcHJvcGVyIHN0YXJ0aW5nIHBvaW50IGluIHRhYmxlCi0JICAgYnkgdXNpbmcgcmV0dXJuIHR5cGUgYXMgb2Zmc2V0LiAgKi8KLQlhZGRpICByNSxyMSwxNjAJCSAgLyogR2V0IHBvaW50ZXIgdG8gcmVzdWx0cyBhcmVhLiAgKi8KLQlibCAgICBMZ2V0X3JldF90eXBlMF9hZGRyIC8qIEdldCBwb2ludGVyIHRvIExyZXRfdHlwZTAgaW50byBMUi4gICovCi0JbWZsciAgcjQJCSAgLyogTW92ZSB0byByNC4gICovCi0Jc2x3aSAgcjMscjMsNAkJICAvKiBOb3cgbXVsdGlwbHkgcmV0dXJuIHR5cGUgYnkgMTYuICAqLwotCWFkZCAgIHIzLHIzLHI0CQkgIC8qIEFkZCBjb250ZW50cyBvZiB0YWJsZSB0byB0YWJsZSBhZGRyZXNzLiAgKi8KLQltdGN0ciByMwotCWJjdHIJCQkgIC8qIEp1bXAgdG8gaXQuICAqLworCWFkZGkJcjUscjEsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpIC8qIE90aGVyd2lzZSwgb3VyIHJldHVybiBpcyBoZXJlLiAgKi8KKwlibAlMZ2V0X3JldF90eXBlMF9hZGRyCS8qIEdldCBwb2ludGVyIHRvIExyZXRfdHlwZTAgaW50byBMUi4gICovCisJbWZscglyNAkJCS8qIE1vdmUgdG8gcjQuICAqLworCXNsd2kJcjMscjMsNAkJCS8qIE5vdyBtdWx0aXBseSByZXR1cm4gdHlwZSBieSAxNi4gICovCisJYWRkCXIzLHIzLHI0CQkvKiBBZGQgY29udGVudHMgb2YgdGFibGUgdG8gdGFibGUgYWRkcmVzcy4gICovCisJbXRjdHIJcjMKKwliY3RyCQkJIAkgLyogSnVtcCB0byBpdC4gICovCiBMRkUxOgogLyogRWFjaCBvZiB0aGUgcmV0X3R5cGVYIGNvZGUgZnJhZ21lbnRzIGhhcyB0byBiZSBleGFjdGx5IDE2IGJ5dGVzIGxvbmcKICAgICg0IGluc3RydWN0aW9ucykuIEZvciBjYWNoZSBlZmZlY3RpdmVuZXNzIHdlIGFsaWduIHRvIGEgMTYgYnl0ZSBib3VuZGFyeQpAQCAtMTQwLDcgKzIyNyw3IEBACiAKIC8qIGNhc2UgRkZJX1RZUEVfSU5UICAqLwogTHJldF90eXBlMToKLQlsd3oJcjMsMChyNSkKKwlsZwlyMywwKHI1KQogCWIJTGZpbmlzaAogCW5vcAogCW5vcApAQCAtMTY4LDg1ICsyNTUsMjI0IEBACiAKIC8qIGNhc2UgRkZJX1RZUEVfVUlOVDggICovCiBMcmV0X3R5cGU1OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxieglyMyw3KHI1KQorI2Vsc2UKIAlsYnoJcjMsMyhyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NJTlQ4ICAqLwogTHJldF90eXBlNjoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsYnoJcjMsNyhyNSkKKyNlbHNlCiAJbGJ6CXIzLDMocjUpCisjZW5kaWYKIAlleHRzYglyMyxyMwogCWIJTGZpbmlzaAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1VJTlQxNiAgKi8KIExyZXRfdHlwZTc6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGh6CXIzLDYocjUpCisjZWxzZQogCWxoeglyMywyKHI1KQorI2VuZGlmCiAJYglMZmluaXNoCiAJbm9wCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU0lOVDE2ICAqLwogTHJldF90eXBlODoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsaGEJcjMsNihyNSkKKyNlbHNlCiAJbGhhCXIzLDIocjUpCisjZW5kaWYKIAliCUxmaW5pc2gKIAlub3AKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9VSU5UMzIgICovCiBMcmV0X3R5cGU5OgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWx3eglyMyw0KHI1KQorI2Vsc2UKIAlsd3oJcjMsMChyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1NJTlQzMiAgKi8KIExyZXRfdHlwZTEwOgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWx3eglyMyw0KHI1KQorI2Vsc2UKIAlsd3oJcjMsMChyNSkKKyNlbmRpZgogCWIJTGZpbmlzaAogCW5vcAogCW5vcAogCiAvKiBjYXNlIEZGSV9UWVBFX1VJTlQ2NCAgKi8KIExyZXRfdHlwZTExOgorI2lmIGRlZmluZWQoX19wcGM2NF9fKQorCWxnCXIzLDAocjUpCisJYglMZmluaXNoCisJbm9wCisjZWxzZQogCWx3eglyMywwKHI1KQogCWx3eglyNCw0KHI1KQogCWIJTGZpbmlzaAorI2VuZGlmCiAJbm9wCiAKIC8qIGNhc2UgRkZJX1RZUEVfU0lOVDY0ICAqLwogTHJldF90eXBlMTI6CisjaWYgZGVmaW5lZChfX3BwYzY0X18pCisJbGcJcjMsMChyNSkKKwliCUxmaW5pc2gKKwlub3AKKyNlbHNlCiAJbHd6CXIzLDAocjUpCiAJbHd6CXI0LDQocjUpCiAJYglMZmluaXNoCisjZW5kaWYKIAlub3AKIAogLyogY2FzZSBGRklfVFlQRV9TVFJVQ1QgICovCiBMcmV0X3R5cGUxMzoKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwlsZwlyMywwKHI1KQkJOyB3ZSBuZWVkIGF0IGxlYXN0IHRoaXMuLi4KKwljbXBpCTAscjAsNAorCWJndAlMc3RydWN0ZW5kCQk7IG5vdCBhIHNwZWNpYWwgc21hbGwgY2FzZQorCWIJTHNtYWxsc3RydWN0CQk7IHNlZSBpZiB3ZSBuZWVkIG1vcmUuCisjZWxzZQorCWNtcGkJMCxyMCw0CisJYmd0CUxmaW5pc2gJCTsgbm90IGJ5IHZhbHVlCisJbGcJcjMsMChyNSkKIAliCUxmaW5pc2gKLQlub3AKKyNlbmRpZgorLyogY2FzZSBGRklfVFlQRV9QT0lOVEVSICAqLworTHJldF90eXBlMTQ6CisJbGcJcjMsMChyNSkKKwliCUxmaW5pc2gKIAlub3AKIAlub3AKIAotLyogY2FzZSBGRklfVFlQRV9QT0lOVEVSICAqLwotTHJldF90eXBlMTQ6Ci0JbHd6CXIzLDAocjUpCi0JYglMZmluaXNoCi0Jbm9wCi0Jbm9wCisjaWYgZGVmaW5lZChfX3BwYzY0X18pCitMc21hbGxzdHJ1Y3Q6CisJYmVxCUxmb3VyCQkJOyBjb250aW51YXRpb24gb2YgTHJldDEzLgorCWNtcGkJMCxyMCwzCisJYmVxCUxmaW5pc2gJCQk7IGRvbmB0IGFkanVzdCB0aGlzIC0gY2FuYHQgYmUgYW55IGZsb2F0cyBoZXJlLi4uCisJc3JkaQlyMyxyMyw0OAorCWNtcGkJMCxyMCwyCisJYmVxCUxmaW5pc2gJCQk7IC4uIG9yIGhlcmUgLi4KKwlzcmRpCXIzLHIzLDgKKwliIAlMZmluaXNoCQkJOyAuLiBvciBoZXJlLgorCitMZm91cjoKKwlsZwlyNixMSU5LQUdFX1NJWkUocjEpCTsgZ2V0IHRoZSByZXN1bHQgdHlwZQorCWxnCXI2LEZGSV9UWVBFX0VMRU0ocjYpCTsgZWxlbWVudHMgYXJyYXkgcG9pbnRlcgorCWxnCXI2LDAocjYpCQk7IGZpcnN0IGVsZW1lbnQKKwlsaHoJcjAsRkZJX1RZUEVfVFlQRShyNikJOyBPSyBnbyB0aGUgdHlwZQorCWNtcGkJMCxyMCwyCQkJOyBGRklfVFlQRV9GTE9BVAorCWJuZQlMZm91cmludAorCWxmcwlmMSwwKHI1KQkJOyBqdXN0IG9uZSBmbG9hdCBpbiB0aGUgc3RydWN0LgorCWIgCUxmaW5pc2gKKworTGZvdXJpbnQ6CisJc3JkaQlyMyxyMywzMgkJOyBmb3VyIGJ5dGVzLgorCWIgCUxmaW5pc2gKKworTHN0cnVjdGVuZDoKKwlsZwlyMyxMSU5LQUdFX1NJWkUocjEpCTsgZ2V0IHRoZSByZXN1bHQgdHlwZQorCWJsCVNUUlVDVF9SRVRWQUxVRV9QCisJY21waQkwLHIzLDAKKwliZXEJTGZpbmlzaAkJCTsgbm9wZS4KKwkvKiBSZWNvdmVyIGEgcG9pbnRlciB0byB0aGUgcmVzdWx0cy4gICovCisJYWRkaQlyMTEscjEsKFNBVkVfU0laRS1SRVNVTFRfQllURVMpCisJbGcJcjMsMChyMTEpCQk7IHdlIG5lZWQgYXQgbGVhc3QgdGhpcy4uLgorCWxnCXI0LDgocjExKQorCWNtcGkJMCxyMCwxNgorCWJlcQlMZmluaXNoCQk7IHNwZWNpYWwgY2FzZSAxNiBieXRlcyB3ZSBkb24ndCBjb25zaWRlciBmbG9hdHMuCisKKwkvKiBPSywgZnJ1c3RyYXRpbmdseSwgdGhlIHByb2Nlc3Mgb2Ygc2F2aW5nIHRoZSBzdHJ1Y3QgdG8gbWVtIG1pZ2h0IGhhdmUKKwkgICBtZXNzZWQgd2l0aCB0aGUgRlBScywgc28gd2UgaGF2ZSB0byByZS1sb2FkIHRoZW0gOiguCisJICAgV2VgbGwgdXNlIG91ciBGUFJzIHNwYWNlIGFnYWluIC0gY2FsbGluZzogCisJICAgdm9pZCBkYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMgKGZmaV90eXBlICpzLCBjaGFyICpzcmMsIAorCQkJCQkgICAgIHVuc2lnbmVkICpuZnByLCBkb3VibGUgKipmcHJzKSAKKwkgICBXZWBsbCB0ZW1wb3JhcmlseSBwaW5jaCB0aGUgZmlyc3QgdHdvIHNsb3RzIG9mIHRoZSBwYXJhbSBhcmVhIGZvciBsb2NhbAorCSAgIHZhcnMgdXNlZCBieSB0aGUgcm91dGluZS4gICovCisJeG9yCXI2LHI2LHI2CisJYWRkaQlyNSxyMSxQQVJFTlRfUEFSTV9CQVNFCQk7IHNvbWUgc3BhY2UKKwlzZwlyNiwwKHI1KQkJCTsgKm5mcHIgemVyb2VkLgorCWFkZGkJcjYscjUsOAkJCQk7ICoqZnBycworCWFkZGkJcjMscjEsRlBfU0FWRV9CQVNFCQk7IHBvaW50ZXIgdG8gRlBScyBzcGFjZQorCXNnCXIzLDAocjYpCisJbXIJcjQscjExCQkJCTsgdGhlIHN0cnVjdCBpcyBoZXJlLi4uCisJbGcJcjMsTElOS0FHRV9TSVpFKHIxKQkJOyBmZmlfdHlwZSAqIHJlc3VsdF90eXBlLgorCWJsCVBBU1NfU1RSX0ZMT0FUUwkJCTsgZ2V0IHN0cnVjdCBmbG9hdHMgaW50byBGUFIgc2F2ZSBzcGFjZS4KKwkvKiBTZWUgaWYgd2UgdXNlZCBhbnkgZmxvYXRzICAqLworCWx3eglyMCwoU0FWRV9TSVpFLVJFU1VMVF9CWVRFUykocjEpCQorCWNtcGkJMCxyMCwwCisJYmVxCUxzdHJ1Y3RpbnRzCQkJOyBub3BlLgorCS8qIE9LIGxvYWQgYGVtIHVwLi4uICovCisJbGZkCWYxLCAoRlBfU0FWRV9CQVNFICAgICAgICAgICAgICAgICApKHIxKQorCWxmZAlmMiwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAgICAgKShyMSkKKwlsZmQJZjMsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAyICkocjEpCisJbGZkCWY0LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMyApKHIxKQorCWxmZAlmNSwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDQgKShyMSkKKwlsZmQJZjYsIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA1ICkocjEpCisJbGZkCWY3LCAoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogNiApKHIxKQorCWxmZAlmOCwgKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDcgKShyMSkKKwlsZmQJZjksIChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiA4ICkocjEpCisJbGZkCWYxMCwoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogOSApKHIxKQorCWxmZAlmMTEsKEZQX1NBVkVfQkFTRSArICBGUFJfU0laRSAqIDEwKShyMSkKKwlsZmQJZjEyLChGUF9TQVZFX0JBU0UgKyAgRlBSX1NJWkUgKiAxMSkocjEpCisJbGZkCWYxMywoRlBfU0FWRV9CQVNFICsgIEZQUl9TSVpFICogMTIpKHIxKQorCisJLyogcG9pbnQgYmFjayBhdCBvdXIgc2F2ZWQgc3RydWN0LiAgKi8KK0xzdHJ1Y3RpbnRzOgorCWFkZGkJcjExLHIxLChTQVZFX1NJWkUtUkVTVUxUX0JZVEVTKQorCWxnCXIzLDAocjExKQkJCTsgd2UgZW5kIHVwIHBpY2tpbmcgdGhlCisJbGcJcjQsOChyMTEpCQkJOyBmaXJzdCB0d28gYWdhaW4uCisJbGcJcjUsMTYocjExKQorCWxnCXI2LDI0KHIxMSkKKwlsZwlyNywzMihyMTEpCisJbGcJcjgsNDAocjExKQorCWxnCXI5LDQ4KHIxMSkKKwlsZwlyMTAsNTYocjExKQorI2VuZGlmCiAKIC8qIGNhc2UgZG9uZSAgKi8KIExmaW5pc2g6Ci0JYWRkaQlyMSxyMSwxNzYJLyogUmVzdG9yZSBzdGFjayBwb2ludGVyLiAgKi8KLQlsd3oJcjAsOChyMSkJLyogR2V0IHJldHVybiBhZGRyZXNzLiAgKi8KLQltdGxyCXIwCQkvKiBSZXNldCBsaW5rIHJlZ2lzdGVyLiAgKi8KKwlhZGRpCXIxLHIxLFNBVkVfU0laRQkJLyogUmVzdG9yZSBzdGFjayBwb2ludGVyLiAgKi8KKwlsZwlyMCxTQVZFRF9MUl9PRkZTRVQocjEpCS8qIEdldCByZXR1cm4gYWRkcmVzcy4gICovCisJbXRscglyMAkJCS8qIFJlc2V0IGxpbmsgcmVnaXN0ZXIuICAqLwogCWJscgotCitMZW5kY29kZToKKwkuYWxpZ24gMQorCQogLyogRU5EKGZmaV9jbG9zdXJlX0FTTSkgICovCiAKLS5kYXRhCi0uc2VjdGlvbiBfX1RFWFQsX19laF9mcmFtZSxjb2FsZXNjZWQsbm9fdG9jK3N0cmlwX3N0YXRpY19zeW1zK2xpdmVfc3VwcG9ydAorLyogRUggZnJhbWUgc3R1ZmYuICAqLworI2RlZmluZSBFSF9EQVRBX0FMSUdOX0ZBQ1QgTU9ERV9DSE9JQ0UoMHg3YywweDc4KQorLyogMTc2LCA0MDAgKi8KKyNkZWZpbmUgRUhfRlJBTUVfT0ZGU0VUQSBNT0RFX0NIT0lDRSgxNzYsMHg5MCkKKyNkZWZpbmUgRUhfRlJBTUVfT0ZGU0VUQiBNT0RFX0NIT0lDRSgxLDMpCisKKwkuc3RhdGljX2RhdGEKKwkuYWxpZ24gTE9HMl9HUFJfQllURVMKK0xMRkIxJG5vbl9sYXp5X3B0cjoKKwkuZ19sb25nIExzdGFydGNvZGUKKworCS5zZWN0aW9uIF9fVEVYVCxfX2VoX2ZyYW1lLGNvYWxlc2NlZCxub190b2Mrc3RyaXBfc3RhdGljX3N5bXMrbGl2ZV9zdXBwb3J0CiBFSF9mcmFtZTE6CiAJLnNldAlMJHNldCQwLExFQ0lFMS1MU0NJRTEKIAkubG9uZwlMJHNldCQwCTsgTGVuZ3RoIG9mIENvbW1vbiBJbmZvcm1hdGlvbiBFbnRyeQpAQCAtMjU1LDE2ICs0ODEsMTYgQEAKIAkuYnl0ZQkweDEJOyBDSUUgVmVyc2lvbgogCS5hc2NpaQkielJcMCIJOyBDSUUgQXVnbWVudGF0aW9uCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDE7IENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IKLQkuYnl0ZQkweDdjCTsgc2xlYjEyOCAtNDsgQ0lFIERhdGEgQWxpZ25tZW50IEZhY3RvcgorCS5ieXRlCUVIX0RBVEFfQUxJR05fRkFDVCA7IHNsZWIxMjggLTQ7IENJRSBEYXRhIEFsaWdubWVudCBGYWN0b3IKIAkuYnl0ZQkweDQxCTsgQ0lFIFJBIENvbHVtbgogCS5ieXRlCTB4MQk7IHVsZWIxMjggMHgxOyBBdWdtZW50YXRpb24gc2l6ZQotCS5ieXRlCTB4OTAJOyBGREUgRW5jb2RpbmcgKGluZGlyZWN0IHBjcmVsKQorCS5ieXRlCTB4MTAJOyBGREUgRW5jb2RpbmcgKGluZGlyZWN0IHBjcmVsKQogCS5ieXRlCTB4Ywk7IERXX0NGQV9kZWZfY2ZhCiAJLmJ5dGUJMHgxCTsgdWxlYjEyOCAweDEKIAkuYnl0ZQkweDAJOyB1bGViMTI4IDB4MAogCS5hbGlnbglMT0cyX0dQUl9CWVRFUwogTEVDSUUxOgotLmdsb2JsIF9mZmlfY2xvc3VyZV9BU00uZWgKKwkuZ2xvYmwgX2ZmaV9jbG9zdXJlX0FTTS5laAogX2ZmaV9jbG9zdXJlX0FTTS5laDoKIExTRkRFMToKIAkuc2V0CUwkc2V0JDEsTEVGREUxLUxBU0ZERTEKQEAgLTI3Myw0NSArNDk5LDc4IEBACiBMQVNGREUxOgogCS5sb25nCUxBU0ZERTEtRUhfZnJhbWUxCTsgRkRFIENJRSBvZmZzZXQKIAkuZ19sb25nCUxMRkIxJG5vbl9sYXp5X3B0ci0uCTsgRkRFIGluaXRpYWwgbG9jYXRpb24KLQkuc2V0CUwkc2V0JDMsTEZFMS1MRkIxCisJLnNldAlMJHNldCQzLExGRTEtTHN0YXJ0Y29kZQogCS5nX2xvbmcJTCRzZXQkMwk7IEZERSBhZGRyZXNzIHJhbmdlCiAJLmJ5dGUgICAweDAgICAgIDsgdWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplCiAJLmJ5dGUJMHg0CTsgRFdfQ0ZBX2FkdmFuY2VfbG9jNAogCS5zZXQJTCRzZXQkMyxMQ0ZJMS1MQ0ZJMAogCS5sb25nCUwkc2V0JDMKIAkuYnl0ZQkweGUJOyBEV19DRkFfZGVmX2NmYV9vZmZzZXQKLQkuYnl0ZQkxNzYsMQk7IHVsZWIxMjggMTc2CisJLmJ5dGUJRUhfRlJBTUVfT0ZGU0VUQSxFSF9GUkFNRV9PRkZTRVRCCTsgdWxlYjEyOCAxNzYsMS8xOTAsMwogCS5ieXRlCTB4NAk7IERXX0NGQV9hZHZhbmNlX2xvYzQKLQkuc2V0CUwkc2V0JDQsTENGSTAtTEZCMQorCS5zZXQJTCRzZXQkNCxMQ0ZJMC1Mc3RhcnRjb2RlCiAJLmxvbmcJTCRzZXQkNAogCS5ieXRlICAgMHgxMSAgICA7IERXX0NGQV9vZmZzZXRfZXh0ZW5kZWRfc2YKIAkuYnl0ZQkweDQxCTsgdWxlYjEyOCAweDQxCiAJLmJ5dGUgICAweDdlICAgIDsgc2xlYjEyOCAtMgogCS5hbGlnbglMT0cyX0dQUl9CWVRFUwogTEVGREUxOgotLmRhdGEKLQkuYWxpZ24JTE9HMl9HUFJfQllURVMKLUxERkNNMDoKLS5zZWN0aW9uIF9fVEVYVCxfX3BpY3N5bWJvbHN0dWIxLHN5bWJvbF9zdHVicyxwdXJlX2luc3RydWN0aW9ucywzMgotCS5hbGlnbglMT0cyX0dQUl9CWVRFUwotTGZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kc3R1YjoKLSNpZiAxCisJLmFsaWduIAkxCisKKyNpZmRlZiBXQU5UX1NUVUIKKwkuc2VjdGlvbiBfX1RFWFQsX19waWNzeW1ib2xzdHViMSxzeW1ib2xfc3R1YnMscHVyZV9pbnN0cnVjdGlvbnMsMzIKKwkuYWxpZ24gNQorTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJHN0dWI6CiAJLmluZGlyZWN0X3N5bWJvbCBfZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgotCW1mbHIJcjAKLQliY2wJMjAsMzEsTE8kZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTgotTE8kZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTjoKLQltZmxyCXIxMQotCWFkZGlzCXIxMSxyMTEsaGExNihMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHIgLSBMTyRmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOKQotCW10bHIJcjAKLQlsZ3UJcjEyLGxvMTYoTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyIC0gTE8kZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTikocjExKQotCW10Y3RyCXIxMgorCW1mbHIgcjAKKwliY2wgMjAsMzEsIkwwMDAwMDAwMDAwMSRzcGIiCisiTDAwMDAwMDAwMDAxJHNwYiI6CisJbWZsciByMTEKKwlhZGRpcyByMTEscjExLGhhMTYoTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyLSJMMDAwMDAwMDAwMDEkc3BiIikKKwltdGxyIHIwCisJbHd6dSByMTIsbG8xNihMX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4kbGF6eV9wdHItIkwwMDAwMDAwMDAwMSRzcGIiKShyMTEpCisJbXRjdHIgcjEyCiAJYmN0cgotLmxhenlfc3ltYm9sX3BvaW50ZXIKKwkubGF6eV9zeW1ib2xfcG9pbnRlcgogTF9mZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOJGxhenlfcHRyOgogCS5pbmRpcmVjdF9zeW1ib2wgX2ZmaV9jbG9zdXJlX2hlbHBlcl9EQVJXSU4KLQkuZ19sb25nIGR5bGRfc3R1Yl9iaW5kaW5nX2hlbHBlcgorCS5nX2xvbmcJZHlsZF9zdHViX2JpbmRpbmdfaGVscGVyCisKKyNpZiBkZWZpbmVkKF9fcHBjNjRfXykKKwkuc2VjdGlvbiBfX1RFWFQsX19waWNzeW1ib2xzdHViMSxzeW1ib2xfc3R1YnMscHVyZV9pbnN0cnVjdGlvbnMsMzIKKwkuYWxpZ24gNQorTF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3Akc3R1YjoKKwkuaW5kaXJlY3Rfc3ltYm9sIF9kYXJ3aW42NF9zdHJ1Y3RfcmV0X2J5X3ZhbHVlX3AKKwltZmxyIHIwCisJYmNsIDIwLDMxLCJMMDAwMDAwMDAwMDIkc3BiIgorIkwwMDAwMDAwMDAwMiRzcGIiOgorCW1mbHIgcjExCisJYWRkaXMgcjExLHIxMSxoYTE2KExfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJGxhenlfcHRyLSJMMDAwMDAwMDAwMDIkc3BiIikKKwltdGxyIHIwCisJbHd6dSByMTIsbG8xNihMX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCRsYXp5X3B0ci0iTDAwMDAwMDAwMDAyJHNwYiIpKHIxMSkKKwltdGN0ciByMTIKKwliY3RyCisJLmxhenlfc3ltYm9sX3BvaW50ZXIKK0xfZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wJGxhenlfcHRyOgorCS5pbmRpcmVjdF9zeW1ib2wgX2RhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcAorCS5nX2xvbmcJZHlsZF9zdHViX2JpbmRpbmdfaGVscGVyCisKKwkuc2VjdGlvbiBfX1RFWFQsX19waWNzeW1ib2xzdHViMSxzeW1ib2xfc3R1YnMscHVyZV9pbnN0cnVjdGlvbnMsMzIKKwkuYWxpZ24gNQorTF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMkc3R1YjoKKwkuaW5kaXJlY3Rfc3ltYm9sIF9kYXJ3aW42NF9wYXNzX3N0cnVjdF9mbG9hdHMKKwltZmxyIHIwCisJYmNsIDIwLDMxLCJMMDAwMDAwMDAwMDMkc3BiIgorIkwwMDAwMDAwMDAwMyRzcGIiOgorCW1mbHIgcjExCisJYWRkaXMgcjExLHIxMSxoYTE2KExfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJGxhenlfcHRyLSJMMDAwMDAwMDAwMDMkc3BiIikKKwltdGxyIHIwCisJbHd6dSByMTIsbG8xNihMX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyRsYXp5X3B0ci0iTDAwMDAwMDAwMDAzJHNwYiIpKHIxMSkKKwltdGN0ciByMTIKKwliY3RyCisJLmxhenlfc3ltYm9sX3BvaW50ZXIKK0xfZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzJGxhenlfcHRyOgorCS5pbmRpcmVjdF9zeW1ib2wgX2RhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cworCS5nX2xvbmcJZHlsZF9zdHViX2JpbmRpbmdfaGVscGVyCisjICBlbmRpZgogI2VuZGlmCi0uZGF0YQotCS5hbGlnbiBMT0cyX0dQUl9CWVRFUwotTExGQjEkbm9uX2xhenlfcHRyOgotCS5nX2xvbmcgTEZCMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpLmMKaW5kZXggNzU3ODRhOS4uYmFjYTY5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaS5jCkBAIC0xLDcgKzEsOSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAxOTk4IEdlb2ZmcmV5IEtlYXRpbmcKLSAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYwotICAgQ29weXJpZ2h0IChDKSAyMDA4IFJlZCBIYXQsIEluYworICAgZmZpLmMgLSBDb3B5cmlnaHQgKEMpIDIwMTEgQW50aG9ueSBHcmVlbgorICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgS3lsZSBNb2ZmZXR0CisgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwOCBSZWQgSGF0LCBJbmMKKyAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jCisJICAgQ29weXJpZ2h0IChjKSAxOTk4IEdlb2ZmcmV5IEtlYXRpbmcKIAogICAgUG93ZXJQQyBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZQogCkBAIC0zOSwzMiArNDEsMjggQEAKICAgLyogVGhlIGFzc2VtYmx5IGRlcGVuZHMgb24gdGhlc2UgZXhhY3QgZmxhZ3MuICAqLwogICBGTEFHX1JFVFVSTlNfU01TVAk9IDEgPDwgKDMxLTMxKSwgLyogVXNlZCBmb3IgRkZJX1NZU1Ygc21hbGwgc3RydWN0cy4gICovCiAgIEZMQUdfUkVUVVJOU19OT1RISU5HICA9IDEgPDwgKDMxLTMwKSwgLyogVGhlc2UgZ28gaW4gY3I3ICovCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIEZMQUdfUkVUVVJOU19GUCAgICAgICA9IDEgPDwgKDMxLTI5KSwKKyNlbmRpZgogICBGTEFHX1JFVFVSTlNfNjRCSVRTICAgPSAxIDw8ICgzMS0yOCksCiAKICAgRkxBR19SRVRVUk5TXzEyOEJJVFMgID0gMSA8PCAoMzEtMjcpLCAvKiBjcjYgICovCi0gIEZMQUdfU1lTVl9TTVNUX1I0ICAgICA9IDEgPDwgKDMxLTI2KSwgLyogdXNlIHI0IGZvciBGRklfU1lTViA4IGJ5dGUKLQkJCQkJICAgc3RydWN0cy4gICovCi0gIEZMQUdfU1lTVl9TTVNUX1IzICAgICA9IDEgPDwgKDMxLTI1KSwgLyogdXNlIHIzIGZvciBGRklfU1lTViA0IGJ5dGUKLQkJCQkJICAgc3RydWN0cy4gICovCi0gIC8qIEJpdHMgKDMxLTI0KSB0aHJvdWdoICgzMS0xOSkgc3RvcmUgc2hpZnQgdmFsdWUgZm9yIFNNU1QgKi8KIAogICBGTEFHX0FSR19ORUVEU19DT1BZICAgPSAxIDw8ICgzMS0gNyksCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgIEZMQUdfRlBfQVJHVU1FTlRTICAgICA9IDEgPDwgKDMxLSA2KSwgLyogY3IxLmVxOyBzcGVjaWZpZWQgYnkgQUJJICovCisjZW5kaWYKICAgRkxBR180X0dQUl9BUkdVTUVOVFMgID0gMSA8PCAoMzEtIDUpLAogICBGTEFHX1JFVFZBTF9SRUZFUkVOQ0UgPSAxIDw8ICgzMS0gNCkKIH07CiAKIC8qIEFib3V0IHRoZSBTWVNWIEFCSS4gICovCi11bnNpZ25lZCBpbnQgTlVNX0dQUl9BUkdfUkVHSVNURVJTID0gODsKKyNkZWZpbmUgQVNNX05FRURTX1JFR0lTVEVSUyA0CisjZGVmaW5lIE5VTV9HUFJfQVJHX1JFR0lTVEVSUyA4CiAjaWZuZGVmIF9fTk9fRlBSU19fCi11bnNpZ25lZCBpbnQgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gODsKLSNlbHNlCi11bnNpZ25lZCBpbnQgTlVNX0ZQUl9BUkdfUkVHSVNURVJTID0gMDsKKyMgZGVmaW5lIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA4CiAjZW5kaWYKIAotZW51bSB7IEFTTV9ORUVEU19SRUdJU1RFUlMgPSA0IH07Ci0KIC8qIGZmaV9wcmVwX2FyZ3NfU1lTViBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQogICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMuCiAKQEAgLTExMywxMCArMTExLDEyIEBACiAgIHZhbHAgZ3ByX2Jhc2U7CiAgIGludCBpbnRhcmdfY291bnQ7CiAKKyNpZm5kZWYgX19OT19GUFJTX18KICAgLyogJ2Zwcl9iYXNlJyBwb2ludHMgYXQgdGhlIHNwYWNlIGZvciBmcHIxLCBhbmQgZ3Jvd3MgdXB3YXJkcyBhcwogICAgICB3ZSB1c2UgRlBSIHJlZ2lzdGVycy4gICovCiAgIHZhbHAgZnByX2Jhc2U7CiAgIGludCBmcGFyZ19jb3VudDsKKyNlbmRpZgogCiAgIC8qICdjb3B5X3NwYWNlJyBncm93cyBkb3duIGFzIHdlIHB1dCBzdHJ1Y3R1cmVzIGluIGl0LiAgSXQgc2hvdWxkCiAgICAgIHN0YXkgMTYtYnl0ZSBhbGlnbmVkLiAgKi8KQEAgLTEyNSw5ICsxMjUsOCBAQAogICAvKiAnbmV4dF9hcmcnIGdyb3dzIHVwIGFzIHdlIHB1dCBwYXJhbWV0ZXJzIGluIGl0LiAgKi8KICAgdmFscCBuZXh0X2FyZzsKIAotICBpbnQgaSwgaWkgTUFZQkVfVU5VU0VEOworICBpbnQgaTsKICAgZmZpX3R5cGUgKipwdHI7Ci0gIGRvdWJsZSBkb3VibGVfdG1wOwogICB1bmlvbiB7CiAgICAgdm9pZCAqKnY7CiAgICAgY2hhciAqKmM7CkBAIC0xNDMsMjEgKzE0MiwyMyBAQAogICBzaXplX3Qgc3RydWN0X2NvcHlfc2l6ZTsKICAgdW5zaWduZWQgZ3BydmFsdWU7CiAKLSAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotICAgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDA7Ci0KICAgc3RhY2t0b3AuYyA9IChjaGFyICopIHN0YWNrICsgYnl0ZXM7CiAgIGdwcl9iYXNlLnUgPSBzdGFja3RvcC51IC0gQVNNX05FRURTX1JFR0lTVEVSUyAtIE5VTV9HUFJfQVJHX1JFR0lTVEVSUzsKICAgaW50YXJnX2NvdW50ID0gMDsKKyNpZm5kZWYgX19OT19GUFJTX18KKyAgZG91YmxlIGRvdWJsZV90bXA7CiAgIGZwcl9iYXNlLmQgPSBncHJfYmFzZS5kIC0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTOwogICBmcGFyZ19jb3VudCA9IDA7CiAgIGNvcHlfc3BhY2UuYyA9ICgoZmxhZ3MgJiBGTEFHX0ZQX0FSR1VNRU5UUykgPyBmcHJfYmFzZS5jIDogZ3ByX2Jhc2UuYyk7CisjZWxzZQorICBjb3B5X3NwYWNlLmMgPSBncHJfYmFzZS5jOworI2VuZGlmCiAgIG5leHRfYXJnLnUgPSBzdGFjayArIDI7CiAKICAgLyogQ2hlY2sgdGhhdCBldmVyeXRoaW5nIHN0YXJ0cyBhbGlnbmVkIHByb3Blcmx5LiAgKi8KLSAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCkgKGNoYXIgKikgc3RhY2sgJiAweEYpID09IDApOwotICBGRklfQVNTRVJUICgoKHVuc2lnbmVkKSBjb3B5X3NwYWNlLmMgJiAweEYpID09IDApOwotICBGRklfQVNTRVJUICgoKHVuc2lnbmVkKSBzdGFja3RvcC5jICYgMHhGKSA9PSAwKTsKKyAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCBsb25nKSAoY2hhciAqKSBzdGFjayAmIDB4RikgPT0gMCk7CisgIEZGSV9BU1NFUlQgKCgodW5zaWduZWQgbG9uZykgY29weV9zcGFjZS5jICYgMHhGKSA9PSAwKTsKKyAgRkZJX0FTU0VSVCAoKCh1bnNpZ25lZCBsb25nKSBzdGFja3RvcC5jICYgMHhGKSA9PSAwKTsKICAgRkZJX0FTU0VSVCAoKGJ5dGVzICYgMHhGKSA9PSAwKTsKICAgRkZJX0FTU0VSVCAoY29weV9zcGFjZS5jID49IG5leHRfYXJnLmMpOwogCkBAIC0xNzQsMTIgKzE3NSwyOCBAQAogICAgICAgIGkgPiAwOwogICAgICAgIGktLSwgcHRyKyssIHBfYXJndi52KyspCiAgICAgewotICAgICAgc3dpdGNoICgoKnB0ciktPnR5cGUpCi0JeworICAgICAgdW5zaWduZWQgc2hvcnQgdHlwZW51bSA9ICgqcHRyKS0+dHlwZTsKKworICAgICAgLyogV2UgbWF5IG5lZWQgdG8gaGFuZGxlIHNvbWUgdmFsdWVzIGRlcGVuZGluZyBvbiBBQkkgKi8KKyAgICAgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9GTE9BVCkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMzI7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UNjQ7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDEyODsKKyAgICAgIH0gZWxzZSBpZiAoZWNpZi0+Y2lmLT5hYmkgIT0gRkZJX0xJTlVYKSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9TVFJVQ1Q7CisjZW5kaWYKKyAgICAgIH0KKworICAgICAgLyogTm93IHRlc3QgdGhlIHRyYW5zbGF0ZWQgdmFsdWUgKi8KKyAgICAgIHN3aXRjaCAodHlwZW51bSkgeworI2lmbmRlZiBfX05PX0ZQUlNfXwogCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CiAJICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGZsb2F0cyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQzMi4gICovCi0JICBpZiAoZWNpZi0+Y2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gc29mdF9mbG9hdF9wcmVwOwogCSAgZG91YmxlX3RtcCA9ICoqcF9hcmd2LmY7CiAJICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQogCSAgICB7CkBAIC0xOTUsOCArMjEyLDYgQEAKIAogCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgogCSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBkb3VibGVzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDY0LiAgKi8KLQkgIGlmIChlY2lmLT5jaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBzb2Z0X2RvdWJsZV9wcmVwOwogCSAgZG91YmxlX3RtcCA9ICoqcF9hcmd2LmQ7CiAKIAkgIGlmIChmcGFyZ19jb3VudCA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCkBAIC0yMTgsNDMgKzIzMyw2IEBACiAKICNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQogCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLQkgIGlmICgoZWNpZi0+Y2lmLT5hYmkgIT0gRkZJX0xJTlVYKQotCQkmJiAoZWNpZi0+Y2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpKQotCSAgICBnb3RvIGRvX3N0cnVjdDsKLQkgIC8qIFRoZSBzb2Z0IGZsb2F0IEFCSSBmb3IgbG9uZyBkb3VibGVzIHdvcmtzIGxpa2UgdGhpcywKLQkgICAgIGEgbG9uZyBkb3VibGUgaXMgcGFzc2VkIGluIGZvdXIgY29uc2VjdXRpdmUgZ3BycyBpZiBhdmFpbGFibGUuCi0JICAgICBBIG1heGltdW0gb2YgMiBsb25nIGRvdWJsZXMgY2FuIGJlIHBhc3NlZCBpbiBncHJzLgotCSAgICAgSWYgd2UgZG8gbm90IGhhdmUgNCBncHJzIGxlZnQsIHRoZSBsb25nIGRvdWJsZSBpcyBwYXNzZWQgb24gdGhlCi0JICAgICBzdGFjaywgNC1ieXRlIGFsaWduZWQuICAqLwotCSAgaWYgKGVjaWYtPmNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICB7Ci0JICAgICAgdW5zaWduZWQgaW50IGludF90bXAgPSAoKnBfYXJndi51aSlbMF07Ci0JICAgICAgaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSAzKQotCQl7Ci0JCSAgaWYgKGludGFyZ19jb3VudCA8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKLQkJICAgIGludGFyZ19jb3VudCArPSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSBpbnRhcmdfY291bnQ7Ci0JCSAgKm5leHRfYXJnLnUgPSBpbnRfdG1wOwotCQkgIG5leHRfYXJnLnUrKzsKLQkJICBmb3IgKGlpID0gMTsgaWkgPCA0OyBpaSsrKQotCQkgICAgewotCQkgICAgICBpbnRfdG1wID0gKCpwX2FyZ3YudWkpW2lpXTsKLQkJICAgICAgKm5leHRfYXJnLnUgPSBpbnRfdG1wOwotCQkgICAgICBuZXh0X2FyZy51Kys7Ci0JCSAgICB9Ci0JCX0KLQkgICAgICBlbHNlCi0JCXsKLQkJICAqZ3ByX2Jhc2UudSsrID0gaW50X3RtcDsKLQkJICBmb3IgKGlpID0gMTsgaWkgPCA0OyBpaSsrKQotCQkgICAgewotCQkgICAgICBpbnRfdG1wID0gKCpwX2FyZ3YudWkpW2lpXTsKLQkJICAgICAgKmdwcl9iYXNlLnUrKyA9IGludF90bXA7Ci0JCSAgICB9Ci0JCX0KLQkgICAgICBpbnRhcmdfY291bnQgKz00OwotCSAgICB9Ci0JICBlbHNlCi0JICAgIHsKIAkgICAgICBkb3VibGVfdG1wID0gKCpwX2FyZ3YuZClbMF07CiAKIAkgICAgICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTIC0gMSkKQEAgLTI4MCwxMyArMjU4LDQwIEBACiAKIAkgICAgICBmcGFyZ19jb3VudCArPSAyOwogCSAgICAgIEZGSV9BU1NFUlQgKGZsYWdzICYgRkxBR19GUF9BUkdVTUVOVFMpOwotCSAgICB9CiAJICBicmVhazsKICNlbmRpZgorI2VuZGlmIC8qIGhhdmUgRlBScyAqLworCisJLyoKKwkgKiBUaGUgc29mdCBmbG9hdCBBQkkgZm9yIGxvbmcgZG91YmxlcyB3b3JrcyBsaWtlIHRoaXMsIGEgbG9uZyBkb3VibGUKKwkgKiBpcyBwYXNzZWQgaW4gZm91ciBjb25zZWN1dGl2ZSBHUFJzIGlmIGF2YWlsYWJsZS4gIEEgbWF4aW11bSBvZiAyCisJICogbG9uZyBkb3VibGVzIGNhbiBiZSBwYXNzZWQgaW4gZ3Bycy4gIElmIHdlIGRvIG5vdCBoYXZlIDQgR1BScworCSAqIGxlZnQsIHRoZSBsb25nIGRvdWJsZSBpcyBwYXNzZWQgb24gdGhlIHN0YWNrLCA0LWJ5dGUgYWxpZ25lZC4KKwkgKi8KKwljYXNlIEZGSV9UWVBFX1VJTlQxMjg6IHsKKwkJdW5zaWduZWQgaW50IGludF90bXAgPSAoKnBfYXJndi51aSlbMF07CisJCXVuc2lnbmVkIGludCBpaTsKKwkJaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSAzKSB7CisJCQlpZiAoaW50YXJnX2NvdW50IDwgTlVNX0dQUl9BUkdfUkVHSVNURVJTKQorCQkJCWludGFyZ19jb3VudCArPSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSBpbnRhcmdfY291bnQ7CisJCQkqKG5leHRfYXJnLnUrKykgPSBpbnRfdG1wOworCQkJZm9yIChpaSA9IDE7IGlpIDwgNDsgaWkrKykgeworCQkJCWludF90bXAgPSAoKnBfYXJndi51aSlbaWldOworCQkJCSoobmV4dF9hcmcudSsrKSA9IGludF90bXA7CisJCQl9CisJCX0gZWxzZSB7CisJCQkqKGdwcl9iYXNlLnUrKykgPSBpbnRfdG1wOworCQkJZm9yIChpaSA9IDE7IGlpIDwgNDsgaWkrKykgeworCQkJCWludF90bXAgPSAoKnBfYXJndi51aSlbaWldOworCQkJCSooZ3ByX2Jhc2UudSsrKSA9IGludF90bXA7CisJCQl9CisJCX0KKwkJaW50YXJnX2NvdW50ICs9IDQ7CisJCWJyZWFrOworCX0KIAogCWNhc2UgRkZJX1RZUEVfVUlOVDY0OgogCWNhc2UgRkZJX1RZUEVfU0lOVDY0OgotCXNvZnRfZG91YmxlX3ByZXA6CiAJICBpZiAoaW50YXJnX2NvdW50ID09IE5VTV9HUFJfQVJHX1JFR0lTVEVSUy0xKQogCSAgICBpbnRhcmdfY291bnQrKzsKIAkgIGlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTKQpAQCAtMzE5LDkgKzMyNCw2IEBACiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JZG9fc3RydWN0OgotI2VuZGlmCiAJICBzdHJ1Y3RfY29weV9zaXplID0gKCgqcHRyKS0+c2l6ZSArIDE1KSAmIH4weEY7CiAJICBjb3B5X3NwYWNlLmMgLT0gc3RydWN0X2NvcHlfc2l6ZTsKIAkgIG1lbWNweSAoY29weV9zcGFjZS5jLCAqcF9hcmd2LmMsICgqcHRyKS0+c2l6ZSk7CkBAIC0zNDksNyArMzUxLDYgQEAKIAljYXNlIEZGSV9UWVBFX1VJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1NJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6Ci0Jc29mdF9mbG9hdF9wcmVwOgogCiAJICBncHJ2YWx1ZSA9ICoqcF9hcmd2LnVpOwogCkBAIC0zNjYsOCArMzY3LDEwIEBACiAgIC8qIENoZWNrIHRoYXQgd2UgZGlkbid0IG92ZXJydW4gdGhlIHN0YWNrLi4uICAqLwogICBGRklfQVNTRVJUIChjb3B5X3NwYWNlLmMgPj0gbmV4dF9hcmcuYyk7CiAgIEZGSV9BU1NFUlQgKGdwcl9iYXNlLnUgPD0gc3RhY2t0b3AudSAtIEFTTV9ORUVEU19SRUdJU1RFUlMpOworI2lmbmRlZiBfX05PX0ZQUlNfXwogICBGRklfQVNTRVJUIChmcHJfYmFzZS51CiAJICAgICAgPD0gc3RhY2t0b3AudSAtIEFTTV9ORUVEU19SRUdJU1RFUlMgLSBOVU1fR1BSX0FSR19SRUdJU1RFUlMpOworI2VuZGlmCiAgIEZGSV9BU1NFUlQgKGZsYWdzICYgRkxBR180X0dQUl9BUkdVTUVOVFMgfHwgaW50YXJnX2NvdW50IDw9IDQpOwogfQogCkBAIC02MDQsOSArNjA3LDYgQEAKICAgdW5zaWduZWQgdHlwZSA9IGNpZi0+cnR5cGUtPnR5cGU7CiAgIHVuc2lnbmVkIHNpemUgPSBjaWYtPnJ0eXBlLT5zaXplOwogCi0gIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSAgICBOVU1fRlBSX0FSR19SRUdJU1RFUlMgPSAwOwotCiAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkKICAgICB7CiAgICAgICAvKiBBbGwgdGhlIG1hY2hpbmUtaW5kZXBlbmRlbnQgY2FsY3VsYXRpb24gb2YgY2lmLT5ieXRlcyB3aWxsIGJlIHdyb25nLgpAQCAtNjQ2LDYyICs2NDYsNTYgQEAKICAgICAgLSBTaW5nbGUvZG91YmxlIEZQIHZhbHVlcyBpbiBmcHIxLCBsb25nIGRvdWJsZSBpbiBmcHIxLGZwcjIuCiAgICAgIC0gc29mdC1mbG9hdCBmbG9hdC9kb3VibGVzIGFyZSB0cmVhdGVkIGFzIFVJTlQzMi9VSU5UNjQgcmVzcGVjdGl2bGV5LgogICAgICAtIHNvZnQtZmxvYXQgbG9uZyBkb3VibGVzIGFyZSByZXR1cm5lZCBpbiBncHIzLWdwcjYuICAqLworICAvKiBGaXJzdCB0cmFuc2xhdGUgZm9yIHNvZnRmbG9hdC9ub25saW51eCAqLworICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpIHsKKwlpZiAodHlwZSA9PSBGRklfVFlQRV9GTE9BVCkKKwkJdHlwZSA9IEZGSV9UWVBFX1VJTlQzMjsKKwlpZiAodHlwZSA9PSBGRklfVFlQRV9ET1VCTEUpCisJCXR5cGUgPSBGRklfVFlQRV9VSU5UNjQ7CisJaWYgKHR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJdHlwZSA9IEZGSV9UWVBFX1VJTlQxMjg7CisgIH0gZWxzZSBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWDY0KSB7CisjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKKwlpZiAodHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQl0eXBlID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisgIH0KKwogICBzd2l0Y2ggKHR5cGUpCiAgICAgewotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisjaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotICAgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NAotCSYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCWdvdG8gYnlyZWY7CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfMTI4QklUUzsKICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCi0jZW5kaWYKICAgICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU182NEJJVFM7CiAgICAgICAvKiBGYWxsIHRocm91Z2guICAqLwogICAgIGNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0gICAgICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIG5vIGZwIHJlZ2lzdGVycyBhcmUgdXNlZC4gICovCi0gICAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JZmxhZ3MgfD0gRkxBR19SRVRVUk5TX0ZQOworICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TX0ZQOwogICAgICAgYnJlYWs7CisjZW5kaWYKIAorICAgIGNhc2UgRkZJX1RZUEVfVUlOVDEyODoKKyAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU18xMjhCSVRTOworICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICAgICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKICAgICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKICAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU182NEJJVFM7CiAgICAgICBicmVhazsKIAogICAgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWKQotCXsKLQkgIC8qIFRoZSBmaW5hbCBTWVNWIEFCSSBzYXlzIHRoYXQgc3RydWN0dXJlcyBzbWFsbGVyIG9yIGVxdWFsIDggYnl0ZXMKLQkgICAgIGFyZSByZXR1cm5lZCBpbiByMy9yNC4gVGhlIEZGSV9HQ0NfU1lTViBBQkkgaW5zdGVhZCByZXR1cm5zIHRoZW0KLQkgICAgIGluIG1lbW9yeS4gICovCi0KLQkgIC8qIFRyZWF0IHN0cnVjdHMgd2l0aCBzaXplIDw9IDggYnl0ZXMuICAqLwotCSAgaWYgKHNpemUgPD0gOCkKLQkgICAgewotCSAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19TTVNUOwotCSAgICAgIC8qIFRoZXNlIHN0cnVjdHMgYXJlIHJldHVybmVkIGluIHIzLiBXZSBwYWNrIHRoZSB0eXBlIGFuZCB0aGUKLQkJIHByZWNhbGN1bGF0ZWQgc2hpZnQgdmFsdWUgKG5lZWRlZCBpbiB0aGUgc3lzdi5TKSBpbnRvIGZsYWdzLgotCQkgVGhlIHNhbWUgYXBwbGllcyBmb3IgdGhlIHN0cnVjdHMgcmV0dXJuZWQgaW4gcjMvcjQuICAqLwotCSAgICAgIGlmIChzaXplIDw9IDQpCi0JCXsKLQkJICBmbGFncyB8PSBGTEFHX1NZU1ZfU01TVF9SMzsKLQkJICBmbGFncyB8PSA4ICogKDQgLSBzaXplKSA8PCA4OwotCQkgIGJyZWFrOwotCQl9Ci0JICAgICAgLyogVGhlc2Ugc3RydWN0cyBhcmUgcmV0dXJuZWQgaW4gcjMgYW5kIHI0LiBTZWUgYWJvdmUuICAgKi8KLQkgICAgICBpZiAgKHNpemUgPD0gOCkKLQkJewotCQkgIGZsYWdzIHw9IEZMQUdfU1lTVl9TTVNUX1IzIHwgRkxBR19TWVNWX1NNU1RfUjQ7Ci0JCSAgZmxhZ3MgfD0gOCAqICg4IC0gc2l6ZSkgPDwgODsKLQkJICBicmVhazsKLQkJfQotCSAgICB9Ci0JfQotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0gICAgYnlyZWY6Ci0jZW5kaWYKKyAgICAgIC8qCisgICAgICAgKiBUaGUgZmluYWwgU1lTViBBQkkgc2F5cyB0aGF0IHN0cnVjdHVyZXMgc21hbGxlciBvciBlcXVhbCA4IGJ5dGVzCisgICAgICAgKiBhcmUgcmV0dXJuZWQgaW4gcjMvcjQuIFRoZSBGRklfR0NDX1NZU1YgQUJJIGluc3RlYWQgcmV0dXJucyB0aGVtCisgICAgICAgKiBpbiBtZW1vcnkuCisgICAgICAgKgorICAgICAgICogTk9URTogVGhlIGFzc2VtYmx5IGNvZGUgY2FuIHNhZmVseSBhc3N1bWUgdGhhdCBpdCBqdXN0IG5lZWRzIHRvCisgICAgICAgKiAgICAgICBzdG9yZSBib3RoIHIzIGFuZCByNCBpbnRvIGEgOC1ieXRlIHdvcmQtYWxpZ25lZCBidWZmZXIsIGFzCisgICAgICAgKiAgICAgICB3ZSBhbGxvY2F0ZSBhIHRlbXBvcmFyeSBidWZmZXIgaW4gZmZpX2NhbGwoKSBpZiB0aGlzIGZsYWcgaXMKKyAgICAgICAqICAgICAgIHNldC4KKyAgICAgICAqLworICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWICYmIHNpemUgPD0gOCkKKwlmbGFncyB8PSBGTEFHX1JFVFVSTlNfU01TVDsKICAgICAgIGludGFyZ19jb3VudCsrOwogICAgICAgZmxhZ3MgfD0gRkxBR19SRVRWQUxfUkVGRVJFTkNFOwogICAgICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KQEAgLTcyMiwzOSArNzE2LDM2IEBACiAgICAgICAgU3R1ZmYgb24gdGhlIHN0YWNrIG5lZWRzIHRvIGtlZXAgcHJvcGVyIGFsaWdubWVudC4gICovCiAgICAgZm9yIChwdHIgPSBjaWYtPmFyZ190eXBlcywgaSA9IGNpZi0+bmFyZ3M7IGkgPiAwOyBpLS0sIHB0cisrKQogICAgICAgewotCXN3aXRjaCAoKCpwdHIpLT50eXBlKQotCSAgeworCXVuc2lnbmVkIHNob3J0IHR5cGVudW0gPSAoKnB0ciktPnR5cGU7CisKKwkvKiBXZSBtYXkgbmVlZCB0byBoYW5kbGUgc29tZSB2YWx1ZXMgZGVwZW5kaW5nIG9uIEFCSSAqLworCWlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9GTE9BVCkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMzI7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UNjQ7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDEyODsKKwl9IGVsc2UgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkgeworI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCQl0eXBlbnVtID0gRkZJX1RZUEVfU1RSVUNUOworI2VuZGlmCisJfQorCisJc3dpdGNoICh0eXBlbnVtKSB7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgotCSAgICAvKiBXaXRoIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGZsb2F0cyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQzMi4gICovCi0JICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgICBnb3RvIHNvZnRfZmxvYXRfY2lmOwogCSAgICBmcGFyZ19jb3VudCsrOwogCSAgICAvKiBmbG9hdGluZyBzaW5nbGVzIGFyZSBub3QgOC1hbGlnbmVkIG9uIHN0YWNrICovCiAJICAgIGJyZWFrOwogCiAjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKIAkgIGNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKLQkgICAgaWYgKGNpZi0+YWJpICE9IEZGSV9MSU5VWCAmJiBjaWYtPmFiaSAhPSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgICBnb3RvIGRvX3N0cnVjdDsKLQkgICAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICAgIHsKLQkJaWYgKGludGFyZ19jb3VudCA+PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMgLSAzCi0JCSAgfHwgaW50YXJnX2NvdW50IDwgTlVNX0dQUl9BUkdfUkVHSVNURVJTKQotCQkgIC8qIEEgbG9uZyBkb3VibGUgaW4gRkZJX0xJTlVYX1NPRlRfRkxPQVQgY2FuIHVzZSBvbmx5Ci0JCSAgICAgYSBzZXQgb2YgZm91ciBjb25zZWN1dGl2ZSBncHJzLiBJZiB3ZSBoYXZlIG5vdCBlbm91Z2gsCi0JCSAgICAgd2UgaGF2ZSB0byBhZGp1c3QgdGhlIGludGFyZ19jb3VudCB2YWx1ZS4gICovCi0JCSAgaW50YXJnX2NvdW50ICs9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAtIGludGFyZ19jb3VudDsKLQkJaW50YXJnX2NvdW50ICs9IDQ7Ci0JCWJyZWFrOwotCSAgICAgIH0KLQkgICAgZWxzZQotCSAgICAgIGZwYXJnX2NvdW50Kys7CisJICAgIGZwYXJnX2NvdW50Kys7CiAJICAgIC8qIEZhbGwgdGhydSAqLwogI2VuZGlmCiAJICBjYXNlIEZGSV9UWVBFX0RPVUJMRToKLQkgICAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBkb3VibGVzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDY0LiAgKi8KLQkgICAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICAgIGdvdG8gc29mdF9kb3VibGVfY2lmOwogCSAgICBmcGFyZ19jb3VudCsrOwogCSAgICAvKiBJZiB0aGlzIEZQIGFyZyBpcyBnb2luZyBvbiB0aGUgc3RhY2ssIGl0IG11c3QgYmUKIAkgICAgICAgOC1ieXRlLWFsaWduZWQuICAqLwpAQCAtNzYzLDEwICs3NTQsMjEgQEAKIAkJJiYgaW50YXJnX2NvdW50ICUgMiAhPSAwKQogCSAgICAgIGludGFyZ19jb3VudCsrOwogCSAgICBicmVhazsKKyNlbmRpZgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMTI4OgorCQkvKgorCQkgKiBBIGxvbmcgZG91YmxlIGluIEZGSV9MSU5VWF9TT0ZUX0ZMT0FUIGNhbiB1c2Ugb25seSBhIHNldAorCQkgKiBvZiBmb3VyIGNvbnNlY3V0aXZlIGdwcnMuIElmIHdlIGRvIG5vdCBoYXZlIGVub3VnaCwgd2UKKwkJICogaGF2ZSB0byBhZGp1c3QgdGhlIGludGFyZ19jb3VudCB2YWx1ZS4KKwkJICovCisJCWlmIChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIC0gMworCQkJCSYmIGludGFyZ19jb3VudCA8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKKwkJCWludGFyZ19jb3VudCA9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUzsKKwkJaW50YXJnX2NvdW50ICs9IDQ7CisJCWJyZWFrOwogCiAJICBjYXNlIEZGSV9UWVBFX1VJTlQ2NDoKIAkgIGNhc2UgRkZJX1RZUEVfU0lOVDY0OgotCSAgc29mdF9kb3VibGVfY2lmOgogCSAgICAvKiAnbG9uZyBsb25nJyBhcmd1bWVudHMgYXJlIHBhc3NlZCBhcyB0d28gd29yZHMsIGJ1dAogCSAgICAgICBlaXRoZXIgYm90aCB3b3JkcyBtdXN0IGZpdCBpbiByZWdpc3RlcnMgb3IgYm90aCBnbwogCSAgICAgICBvbiB0aGUgc3RhY2suICBJZiB0aGV5IGdvIG9uIHRoZSBzdGFjaywgdGhleSBtdXN0CkBAIC03ODMsOSArNzg1LDYgQEAKIAkgICAgYnJlYWs7CiAKIAkgIGNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JICBkb19zdHJ1Y3Q6Ci0jZW5kaWYKIAkgICAgLyogV2UgbXVzdCBhbGxvY2F0ZSBzcGFjZSBmb3IgYSBjb3B5IG9mIHRoZXNlIHRvIGVuZm9yY2UKIAkgICAgICAgcGFzcy1ieS12YWx1ZS4gIFBhZCB0aGUgc3BhY2UgdXAgdG8gYSBtdWx0aXBsZSBvZiAxNgogCSAgICAgICBieXRlcyAodGhlIG1heGltdW0gYWxpZ25tZW50IHJlcXVpcmVkIGZvciBhbnl0aGluZyB1bmRlcgpAQCAtNzkzLDEyICs3OTIsMjAgQEAKIAkgICAgc3RydWN0X2NvcHlfc2l6ZSArPSAoKCpwdHIpLT5zaXplICsgMTUpICYgfjB4RjsKIAkgICAgLyogRmFsbCB0aHJvdWdoIChhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIHBvaW50ZXIpLiAgKi8KIAotCSAgZGVmYXVsdDoKLQkgIHNvZnRfZmxvYXRfY2lmOgorCSAgY2FzZSBGRklfVFlQRV9QT0lOVEVSOgorCSAgY2FzZSBGRklfVFlQRV9JTlQ6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQzMjoKKwkgIGNhc2UgRkZJX1RZUEVfU0lOVDMyOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMTY6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQxNjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDg6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQ4OgogCSAgICAvKiBFdmVyeXRoaW5nIGVsc2UgaXMgcGFzc2VkIGFzIGEgNC1ieXRlIHdvcmQgaW4gYSBHUFIsIGVpdGhlcgogCSAgICAgICB0aGUgb2JqZWN0IGl0c2VsZiBvciBhIHBvaW50ZXIgdG8gaXQuICAqLwogCSAgICBpbnRhcmdfY291bnQrKzsKIAkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCQlGRklfQVNTRVJUICgwKTsKIAkgIH0KICAgICAgIH0KICAgZWxzZQpAQCAtODI3LDE2ICs4MzQsMjkgQEAKIAkgICAgaW50YXJnX2NvdW50ICs9ICgoKnB0ciktPnNpemUgKyA3KSAvIDg7CiAJICAgIGJyZWFrOwogCi0JICBkZWZhdWx0OgorCSAgY2FzZSBGRklfVFlQRV9QT0lOVEVSOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UNjQ6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQ2NDoKKwkgIGNhc2UgRkZJX1RZUEVfSU5UOgorCSAgY2FzZSBGRklfVFlQRV9VSU5UMzI6CisJICBjYXNlIEZGSV9UWVBFX1NJTlQzMjoKKwkgIGNhc2UgRkZJX1RZUEVfVUlOVDE2OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UMTY6CisJICBjYXNlIEZGSV9UWVBFX1VJTlQ4OgorCSAgY2FzZSBGRklfVFlQRV9TSU5UODoKIAkgICAgLyogRXZlcnl0aGluZyBlbHNlIGlzIHBhc3NlZCBhcyBhIDgtYnl0ZSB3b3JkIGluIGEgR1BSLCBlaXRoZXIKIAkgICAgICAgdGhlIG9iamVjdCBpdHNlbGYgb3IgYSBwb2ludGVyIHRvIGl0LiAgKi8KIAkgICAgaW50YXJnX2NvdW50Kys7CiAJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkJRkZJX0FTU0VSVCAoMCk7CiAJICB9CiAgICAgICB9CiAKKyNpZm5kZWYgX19OT19GUFJTX18KICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAgICAgZmxhZ3MgfD0gRkxBR19GUF9BUkdVTUVOVFM7CisjZW5kaWYKICAgaWYgKGludGFyZ19jb3VudCA+IDQpCiAgICAgZmxhZ3MgfD0gRkxBR180X0dQUl9BUkdVTUVOVFM7CiAgIGlmIChzdHJ1Y3RfY29weV9zaXplICE9IDApCkBAIC04NDQsMjEgKzg2NCwyNyBAQAogCiAgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkKICAgICB7CisjaWZuZGVmIF9fTk9fRlBSU19fCiAgICAgICAvKiBTcGFjZSBmb3IgdGhlIEZQUiByZWdpc3RlcnMsIGlmIG5lZWRlZC4gICovCiAgICAgICBpZiAoZnBhcmdfY291bnQgIT0gMCkKIAlieXRlcyArPSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgKiBzaXplb2YgKGRvdWJsZSk7CisjZW5kaWYKIAogICAgICAgLyogU3RhY2sgc3BhY2UuICAqLwogICAgICAgaWYgKGludGFyZ19jb3VudCA+IE5VTV9HUFJfQVJHX1JFR0lTVEVSUykKIAlieXRlcyArPSAoaW50YXJnX2NvdW50IC0gTlVNX0dQUl9BUkdfUkVHSVNURVJTKSAqIHNpemVvZiAoaW50KTsKKyNpZm5kZWYgX19OT19GUFJTX18KICAgICAgIGlmIChmcGFyZ19jb3VudCA+IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAlieXRlcyArPSAoZnBhcmdfY291bnQgLSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpICogc2l6ZW9mIChkb3VibGUpOworI2VuZGlmCiAgICAgfQogICBlbHNlCiAgICAgeworI2lmbmRlZiBfX05PX0ZQUlNfXwogICAgICAgLyogU3BhY2UgZm9yIHRoZSBGUFIgcmVnaXN0ZXJzLCBpZiBuZWVkZWQuICAqLwogICAgICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAJYnl0ZXMgKz0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTNjQgKiBzaXplb2YgKGRvdWJsZSk7CisjZW5kaWYKIAogICAgICAgLyogU3RhY2sgc3BhY2UuICAqLwogICAgICAgaWYgKGludGFyZ19jb3VudCA+IE5VTV9HUFJfQVJHX1JFR0lTVEVSUzY0KQpAQCAtODg2LDI4ICs5MTIsNDEgQEAKIHZvaWQKIGZmaV9jYWxsKGZmaV9jaWYgKmNpZiwgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAqcnZhbHVlLCB2b2lkICoqYXZhbHVlKQogeworICAvKgorICAgKiBUaGUgZmluYWwgU1lTViBBQkkgc2F5cyB0aGF0IHN0cnVjdHVyZXMgc21hbGxlciBvciBlcXVhbCA4IGJ5dGVzCisgICAqIGFyZSByZXR1cm5lZCBpbiByMy9yNC4gVGhlIEZGSV9HQ0NfU1lTViBBQkkgaW5zdGVhZCByZXR1cm5zIHRoZW0KKyAgICogaW4gbWVtb3J5LgorICAgKgorICAgKiBKdXN0IHRvIGtlZXAgdGhpbmdzIHNpbXBsZSBmb3IgdGhlIGFzc2VtYmx5IGNvZGUsIHdlIHdpbGwgYWx3YXlzCisgICAqIGJvdW5jZS1idWZmZXIgc3RydWN0IHJldHVybiB2YWx1ZXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDggYnl0ZXMuCisgICAqIFRoaXMgYWxsb3dzIHRoZSBBU00gdG8gaGFuZGxlIFNZU1Ygc21hbGwgc3RydWN0dXJlcyBieSBkaXJlY3RseQorICAgKiB3cml0aW5nIHIzIGFuZCByNCB0byBtZW1vcnkgd2l0aG91dCB3b3JyeWluZyBhYm91dCBzdHJ1Y3Qgc2l6ZS4KKyAgICovCisgIHVuc2lnbmVkIGludCBzbXN0X2J1ZmZlclsyXTsKICAgZXh0ZW5kZWRfY2lmIGVjaWY7CisgIHVuc2lnbmVkIGludCByc2l6ZSA9IDA7CiAKICAgZWNpZi5jaWYgPSBjaWY7CiAgIGVjaWYuYXZhbHVlID0gYXZhbHVlOwogCi0gIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgYSBzdHJ1Y3QgYW5kIHdlIGRvbid0IGhhdmUgYSByZXR1cm4JKi8KLSAgLyogdmFsdWUgYWRkcmVzcyB0aGVuIHdlIG5lZWQgdG8gbWFrZSBvbmUJCSAgICAgICAgKi8KLQotICBpZiAoKHJ2YWx1ZSA9PSBOVUxMKSAmJiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpKQotICAgIHsKLSAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKGNpZi0+cnR5cGUtPnNpemUpOwotICAgIH0KLSAgZWxzZQotICAgIGVjaWYucnZhbHVlID0gcnZhbHVlOwotCisgIC8qIEVuc3VyZSB0aGF0IHdlIGhhdmUgYSB2YWxpZCBzdHJ1Y3QgcmV0dXJuIHZhbHVlICovCisgIGVjaWYucnZhbHVlID0gcnZhbHVlOworICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QpIHsKKyAgICByc2l6ZSA9IGNpZi0+cnR5cGUtPnNpemU7CisgICAgaWYgKHJzaXplIDw9IDgpCisgICAgICBlY2lmLnJ2YWx1ZSA9IHNtc3RfYnVmZmVyOworICAgIGVsc2UgaWYgKCFydmFsdWUpCisgICAgICBlY2lmLnJ2YWx1ZSA9IGFsbG9jYShyc2l6ZSk7CisgIH0KIAogICBzd2l0Y2ggKGNpZi0+YWJpKQogICAgIHsKICNpZm5kZWYgUE9XRVJQQzY0CisjIGlmbmRlZiBfX05PX0ZQUlNfXwogICAgIGNhc2UgRkZJX1NZU1Y6CiAgICAgY2FzZSBGRklfR0NDX1NZU1Y6CiAgICAgY2FzZSBGRklfTElOVVg6CisjIGVuZGlmCiAgICAgY2FzZSBGRklfTElOVVhfU09GVF9GTE9BVDoKICAgICAgIGZmaV9jYWxsX1NZU1YgKCZlY2lmLCAtY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuKTsKICAgICAgIGJyZWFrOwpAQCAtOTIwLDYgKzk1OSwxMCBAQAogICAgICAgRkZJX0FTU0VSVCAoMCk7CiAgICAgICBicmVhazsKICAgICB9CisKKyAgLyogQ2hlY2sgZm9yIGEgYm91bmNlLWJ1ZmZlcmVkIHJldHVybiB2YWx1ZSAqLworICBpZiAocnZhbHVlICYmIGVjaWYucnZhbHVlID09IHNtc3RfYnVmZmVyKQorICAgIG1lbWNweShydmFsdWUsIHNtc3RfYnVmZmVyLCByc2l6ZSk7CiB9CiAKIApAQCAtOTQ5LDE0ICs5OTIsMTkgQEAKICNpZmRlZiBQT1dFUlBDNjQKICAgdm9pZCAqKnRyYW1wID0gKHZvaWQgKiopICZjbG9zdXJlLT50cmFtcFswXTsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfTElOVVg2NCk7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVg2NCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIC8qIENvcHkgZnVuY3Rpb24gYWRkcmVzcyBhbmQgVE9DIGZyb20gZmZpX2Nsb3N1cmVfTElOVVg2NC4gICovCiAgIG1lbWNweSAodHJhbXAsIChjaGFyICopIGZmaV9jbG9zdXJlX0xJTlVYNjQsIDE2KTsKICAgdHJhbXBbMl0gPSBjb2RlbG9jOwogI2Vsc2UKICAgdW5zaWduZWQgaW50ICp0cmFtcDsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfR0NDX1NZU1YgfHwgY2lmLT5hYmkgPT0gRkZJX1NZU1YpOworICBpZiAoISAoY2lmLT5hYmkgPT0gRkZJX0dDQ19TWVNWIAorCSB8fCBjaWYtPmFiaSA9PSBGRklfU1lTVgorCSB8fCBjaWYtPmFiaSA9PSBGRklfTElOVVgKKwkgfHwgY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKIAogICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwogICB0cmFtcFswXSA9IDB4N2MwODAyYTY7ICAvKiAgIG1mbHIgICAgcjAgKi8KQEAgLTEwMTEsMzIgKzEwNTksMzggQEAKICAgdm9pZCAqKiAgICAgICAgICBhdmFsdWU7CiAgIGZmaV90eXBlICoqICAgICAgYXJnX3R5cGVzOwogICBsb25nICAgICAgICAgICAgIGksIGF2bjsKLSAgbG9uZyAgICAgICAgICAgICBuZjsgICAvKiBudW1iZXIgb2YgZmxvYXRpbmcgcmVnaXN0ZXJzIGFscmVhZHkgdXNlZCAqLwotICBsb25nICAgICAgICAgICAgIG5nOyAgIC8qIG51bWJlciBvZiBnZW5lcmFsIHJlZ2lzdGVycyBhbHJlYWR5IHVzZWQgKi8KLSAgZmZpX2NpZiAqICAgICAgICBjaWY7Ci0gIGRvdWJsZSAgICAgICAgICAgdGVtcDsKLSAgdW5zaWduZWQgICAgICAgICBzaXplOworI2lmbmRlZiBfX05PX0ZQUlNfXworICBsb25nICAgICAgICAgICAgIG5mID0gMDsgICAvKiBudW1iZXIgb2YgZmxvYXRpbmcgcmVnaXN0ZXJzIGFscmVhZHkgdXNlZCAqLworI2VuZGlmCisgIGxvbmcgICAgICAgICAgICAgbmcgPSAwOyAgIC8qIG51bWJlciBvZiBnZW5lcmFsIHJlZ2lzdGVycyBhbHJlYWR5IHVzZWQgKi8KIAotICBjaWYgPSBjbG9zdXJlLT5jaWY7CisgIGZmaV9jaWYgKmNpZiA9IGNsb3N1cmUtPmNpZjsKKyAgdW5zaWduZWQgICAgICAgc2l6ZSAgICAgPSBjaWYtPnJ0eXBlLT5zaXplOworICB1bnNpZ25lZCBzaG9ydCBydHlwZW51bSA9IGNpZi0+cnR5cGUtPnR5cGU7CisKICAgYXZhbHVlID0gYWxsb2NhIChjaWYtPm5hcmdzICogc2l6ZW9mICh2b2lkICopKTsKLSAgc2l6ZSA9IGNpZi0+cnR5cGUtPnNpemU7CiAKLSAgbmYgPSAwOwotICBuZyA9IDA7CisgIC8qIEZpcnN0IHRyYW5zbGF0ZSBmb3Igc29mdGZsb2F0L25vbmxpbnV4ICovCisgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkgeworCWlmIChydHlwZW51bSA9PSBGRklfVFlQRV9GTE9BVCkKKwkJcnR5cGVudW0gPSBGRklfVFlQRV9VSU5UMzI7CisJaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX0RPVUJMRSkKKwkJcnR5cGVudW0gPSBGRklfVFlQRV9VSU5UNjQ7CisJaWYgKHJ0eXBlbnVtID09IEZGSV9UWVBFX0xPTkdET1VCTEUpCisJCXJ0eXBlbnVtID0gRkZJX1RZUEVfVUlOVDEyODsKKyAgfSBlbHNlIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCWlmIChydHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQlydHlwZW51bSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorICB9CisKIAogICAvKiBDb3B5IHRoZSBjYWxsZXIncyBzdHJ1Y3R1cmUgcmV0dXJuIHZhbHVlIGFkZHJlc3Mgc28gdGhhdCB0aGUgY2xvc3VyZQogICAgICByZXR1cm5zIHRoZSBkYXRhIGRpcmVjdGx5IHRvIHRoZSBjYWxsZXIuCiAgICAgIEZvciBGRklfU1lTViB0aGUgcmVzdWx0IGlzIHBhc3NlZCBpbiByMy9yNCBpZiB0aGUgc3RydWN0IHNpemUgaXMgbGVzcwogICAgICBvciBlcXVhbCA4IGJ5dGVzLiAgKi8KLQotICBpZiAoKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAgJiYgISgoY2lmLT5hYmkgPT0gRkZJX1NZU1YpICYmIChzaXplIDw9IDgpKSkKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotICAgICAgfHwgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfTE9OR0RPVUJMRQotCSAgJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotI2VuZGlmCi0gICAgICApCi0gICAgeworICBpZiAocnR5cGVudW0gPT0gRkZJX1RZUEVfU1RSVUNUICYmICgoY2lmLT5hYmkgIT0gRkZJX1NZU1YpIHx8IChzaXplID4gOCkpKSB7CiAgICAgICBydmFsdWUgPSAodm9pZCAqKSAqcGdyOwogICAgICAgbmcrKzsKICAgICAgIHBncisrOwpAQCAtMTA0NywxMCArMTEwMSwxMDkgQEAKICAgYXJnX3R5cGVzID0gY2lmLT5hcmdfdHlwZXM7CiAKICAgLyogR3JhYiB0aGUgYWRkcmVzc2VzIG9mIHRoZSBhcmd1bWVudHMgZnJvbSB0aGUgc3RhY2sgZnJhbWUuICAqLwotICB3aGlsZSAoaSA8IGF2bikKLSAgICB7Ci0gICAgICBzd2l0Y2ggKGFyZ190eXBlc1tpXS0+dHlwZSkKLQl7CisgIHdoaWxlIChpIDwgYXZuKSB7CisgICAgICB1bnNpZ25lZCBzaG9ydCB0eXBlbnVtID0gYXJnX3R5cGVzW2ldLT50eXBlOworCisgICAgICAvKiBXZSBtYXkgbmVlZCB0byBoYW5kbGUgc29tZSB2YWx1ZXMgZGVwZW5kaW5nIG9uIEFCSSAqLworICAgICAgaWYgKGNpZi0+YWJpID09IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKSB7CisJCWlmICh0eXBlbnVtID09IEZGSV9UWVBFX0ZMT0FUKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQzMjsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1VJTlQ2NDsKKwkJaWYgKHR5cGVudW0gPT0gRkZJX1RZUEVfTE9OR0RPVUJMRSkKKwkJCXR5cGVudW0gPSBGRklfVFlQRV9VSU5UMTI4OworICAgICAgfSBlbHNlIGlmIChjaWYtPmFiaSAhPSBGRklfTElOVVggJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYNjQpIHsKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCQlpZiAodHlwZW51bSA9PSBGRklfVFlQRV9MT05HRE9VQkxFKQorCQkJdHlwZW51bSA9IEZGSV9UWVBFX1NUUlVDVDsKKyNlbmRpZgorICAgICAgfQorCisgICAgICBzd2l0Y2ggKHR5cGVudW0pIHsKKyNpZm5kZWYgX19OT19GUFJTX18KKwljYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgLyogdW5mb3J0dW5hdGVseSBmbG9hdCB2YWx1ZXMgYXJlIHN0b3JlZCBhcyBkb3VibGVzCisJICAgKiBpbiB0aGUgZmZpX2Nsb3N1cmVfU1lTViBjb2RlIChzaW5jZSB3ZSBkb24ndCBjaGVjaworCSAgICogdGhlIHR5cGUgaW4gdGhhdCByb3V0aW5lKS4KKwkgICAqLworCisJICAvKiB0aGVyZSBhcmUgOCA2NGJpdCBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgKi8KKworCSAgaWYgKG5mIDwgOCkKKwkgICAgeworCSAgICAgIGRvdWJsZSB0ZW1wID0gcGZyLT5kOworCSAgICAgIHBmci0+ZiA9IChmbG9hdCkgdGVtcDsKKwkgICAgICBhdmFsdWVbaV0gPSBwZnI7CisJICAgICAgbmYrKzsKKwkgICAgICBwZnIrKzsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgLyogRklYTUU/IGhlcmUgd2UgYXJlIHJlYWxseSBjaGFuZ2luZyB0aGUgdmFsdWVzCisJICAgICAgICogc3RvcmVkIGluIHRoZSBvcmlnaW5hbCBjYWxsaW5nIHJvdXRpbmVzIG91dGdvaW5nCisJICAgICAgICogcGFyYW1ldGVyIHN0YWNrLiAgVGhpcyBpcyBwcm9iYWJseSBhIHJlYWxseQorCSAgICAgICAqIG5hdWdodHkgdGhpbmcgdG8gZG8gYnV0Li4uCisJICAgICAgICovCisJICAgICAgYXZhbHVlW2ldID0gcHN0OworCSAgICAgIHBzdCArPSAxOworCSAgICB9CisJICBicmVhazsKKworCWNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgLyogT24gdGhlIG91dGdvaW5nIHN0YWNrIGFsbCB2YWx1ZXMgYXJlIGFsaWduZWQgdG8gOCAqLworCSAgLyogdGhlcmUgYXJlIDggNjRiaXQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzICovCisKKwkgIGlmIChuZiA8IDgpCisJICAgIHsKKwkgICAgICBhdmFsdWVbaV0gPSBwZnI7CisJICAgICAgbmYrKzsKKwkgICAgICBwZnIrKzsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgaWYgKCgobG9uZykgcHN0KSAmIDQpCisJCXBzdCsrOworCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKKwkgICAgICBwc3QgKz0gMjsKKwkgICAgfQorCSAgYnJlYWs7CisKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKKwkgIGlmIChuZiA8IDcpCisJICAgIHsKKwkgICAgICBhdmFsdWVbaV0gPSBwZnI7CisJICAgICAgcGZyICs9IDI7CisJICAgICAgbmYgKz0gMjsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgaWYgKCgobG9uZykgcHN0KSAmIDQpCisJCXBzdCsrOworCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKKwkgICAgICBwc3QgKz0gNDsKKwkgICAgICBuZiA9IDg7CisJICAgIH0KKwkgIGJyZWFrOworI2VuZGlmCisjZW5kaWYgLyogaGF2ZSBGUFJTICovCisKKwljYXNlIEZGSV9UWVBFX1VJTlQxMjg6CisJCS8qCisJCSAqIFRlc3QgaWYgZm9yIHRoZSB3aG9sZSBsb25nIGRvdWJsZSwgNCBncHJzIGFyZSBhdmFpbGFibGUuCisJCSAqIG90aGVyd2lzZSB0aGUgc3R1ZmYgZW5kcyB1cCBvbiB0aGUgc3RhY2suCisJCSAqLworCQlpZiAobmcgPCA1KSB7CisJCQlhdmFsdWVbaV0gPSBwZ3I7CisJCQlwZ3IgKz0gNDsKKwkJCW5nICs9IDQ7CisJCX0gZWxzZSB7CisJCQlhdmFsdWVbaV0gPSBwc3Q7CisJCQlwc3QgKz0gNDsKKwkJCW5nID0gOCs0OworCQl9CisJCWJyZWFrOworCiAJY2FzZSBGRklfVFlQRV9TSU5UODoKIAljYXNlIEZGSV9UWVBFX1VJTlQ4OgogCSAgLyogdGhlcmUgYXJlIDggZ3ByIHJlZ2lzdGVycyB1c2VkIHRvIHBhc3MgdmFsdWVzICovCkBAIC0xMDg2LDcgKzEyMzksNiBAQAogCWNhc2UgRkZJX1RZUEVfU0lOVDMyOgogCWNhc2UgRkZJX1RZUEVfVUlOVDMyOgogCWNhc2UgRkZJX1RZUEVfUE9JTlRFUjoKLQlzb2Z0X2Zsb2F0X2Nsb3N1cmU6CiAJICAvKiB0aGVyZSBhcmUgOCBncHIgcmVnaXN0ZXJzIHVzZWQgdG8gcGFzcyB2YWx1ZXMgKi8KIAkgIGlmIChuZyA8IDgpCiAJICAgIHsKQEAgLTExMDIsOSArMTI1NCw2IEBACiAJICBicmVhazsKIAogCWNhc2UgRkZJX1RZUEVfU1RSVUNUOgotI2lmIEZGSV9UWVBFX0xPTkdET1VCTEUgIT0gRkZJX1RZUEVfRE9VQkxFCi0JZG9fc3RydWN0OgotI2VuZGlmCiAJICAvKiBTdHJ1Y3RzIGFyZSBwYXNzZWQgYnkgcmVmZXJlbmNlLiBUaGUgYWRkcmVzcyB3aWxsIGFwcGVhciBpbiBhCiAJICAgICBncHIgaWYgaXQgaXMgb25lIG9mIHRoZSBmaXJzdCA4IGFyZ3VtZW50cy4gICovCiAJICBpZiAobmcgPCA4KQpAQCAtMTEyMiw3ICsxMjcxLDYgQEAKIAogCWNhc2UgRkZJX1RZUEVfU0lOVDY0OgogCWNhc2UgRkZJX1RZUEVfVUlOVDY0OgotCXNvZnRfZG91YmxlX2Nsb3N1cmU6CiAJICAvKiBwYXNzaW5nIGxvbmcgbG9uZyBpbnRzIGFyZSBjb21wbGV4LCB0aGV5IG11c3QKIAkgICAqIGJlIHBhc3NlZCBpbiBzdWl0YWJsZSByZWdpc3RlciBwYWlycyBzdWNoIGFzCiAJICAgKiAocjMscjQpIG9yIChyNSxyNikgb3IgKHI2LHI3KSwgb3IgKHI3LHI4KSBvciAocjkscjEwKQpAQCAtMTE1NCw5OSArMTMwMiw4IEBACiAJICAgIH0KIAkgIGJyZWFrOwogCi0JY2FzZSBGRklfVFlQRV9GTE9BVDoKLQkgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZmxvYXRzIGFyZSBoYW5kbGVkIGxpa2UgVUlOVDMyLiAgKi8KLQkgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgZ290byBzb2Z0X2Zsb2F0X2Nsb3N1cmU7Ci0JICAvKiB1bmZvcnR1bmF0ZWx5IGZsb2F0IHZhbHVlcyBhcmUgc3RvcmVkIGFzIGRvdWJsZXMKLQkgICAqIGluIHRoZSBmZmlfY2xvc3VyZV9TWVNWIGNvZGUgKHNpbmNlIHdlIGRvbid0IGNoZWNrCi0JICAgKiB0aGUgdHlwZSBpbiB0aGF0IHJvdXRpbmUpLgotCSAgICovCi0KLQkgIC8qIHRoZXJlIGFyZSA4IDY0Yml0IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAqLwotCi0JICBpZiAobmYgPCA4KQotCSAgICB7Ci0JICAgICAgdGVtcCA9IHBmci0+ZDsKLQkgICAgICBwZnItPmYgPSAoZmxvYXQpIHRlbXA7Ci0JICAgICAgYXZhbHVlW2ldID0gcGZyOwotCSAgICAgIG5mKys7Ci0JICAgICAgcGZyKys7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIC8qIEZJWE1FPyBoZXJlIHdlIGFyZSByZWFsbHkgY2hhbmdpbmcgdGhlIHZhbHVlcwotCSAgICAgICAqIHN0b3JlZCBpbiB0aGUgb3JpZ2luYWwgY2FsbGluZyByb3V0aW5lcyBvdXRnb2luZwotCSAgICAgICAqIHBhcmFtZXRlciBzdGFjay4gIFRoaXMgaXMgcHJvYmFibHkgYSByZWFsbHkKLQkgICAgICAgKiBuYXVnaHR5IHRoaW5nIHRvIGRvIGJ1dC4uLgotCSAgICAgICAqLwotCSAgICAgIGF2YWx1ZVtpXSA9IHBzdDsKLQkgICAgICBwc3QgKz0gMTsKLQkgICAgfQotCSAgYnJlYWs7Ci0KLQljYXNlIEZGSV9UWVBFX0RPVUJMRToKLQkgIC8qIFdpdGggRkZJX0xJTlVYX1NPRlRfRkxPQVQgZG91YmxlcyBhcmUgaGFuZGxlZCBsaWtlIFVJTlQ2NC4gICovCi0JICBpZiAoY2lmLT5hYmkgPT0gRkZJX0xJTlVYX1NPRlRfRkxPQVQpCi0JICAgIGdvdG8gc29mdF9kb3VibGVfY2xvc3VyZTsKLQkgIC8qIE9uIHRoZSBvdXRnb2luZyBzdGFjayBhbGwgdmFsdWVzIGFyZSBhbGlnbmVkIHRvIDggKi8KLQkgIC8qIHRoZXJlIGFyZSA4IDY0Yml0IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAqLwotCi0JICBpZiAobmYgPCA4KQotCSAgICB7Ci0JICAgICAgYXZhbHVlW2ldID0gcGZyOwotCSAgICAgIG5mKys7Ci0JICAgICAgcGZyKys7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICgoKGxvbmcpIHBzdCkgJiA0KQotCQlwc3QrKzsKLQkgICAgICBhdmFsdWVbaV0gPSBwc3Q7Ci0JICAgICAgcHN0ICs9IDI7Ci0JICAgIH0KLQkgIGJyZWFrOwotCi0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0JICBpZiAoY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotCSAgICBnb3RvIGRvX3N0cnVjdDsKLQkgIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLQkgICAgeyAvKiBUZXN0IGlmIGZvciB0aGUgd2hvbGUgbG9uZyBkb3VibGUsIDQgZ3BycyBhcmUgYXZhaWxhYmxlLgotCQkgb3RoZXJ3aXNlIHRoZSBzdHVmZiBlbmRzIHVwIG9uIHRoZSBzdGFjay4gICovCi0JICAgICAgaWYgKG5nIDwgNSkKLQkJewotCQkgIGF2YWx1ZVtpXSA9IHBncjsKLQkJICBwZ3IgKz0gNDsKLQkJICBuZyArPSA0OwotCQl9Ci0JICAgICAgZWxzZQotCQl7Ci0JCSAgYXZhbHVlW2ldID0gcHN0OwotCQkgIHBzdCArPSA0OwotCQkgIG5nID0gODsKLQkJfQotCSAgICAgIGJyZWFrOwotCSAgICB9Ci0JICBpZiAobmYgPCA3KQotCSAgICB7Ci0JICAgICAgYXZhbHVlW2ldID0gcGZyOwotCSAgICAgIHBmciArPSAyOwotCSAgICAgIG5mICs9IDI7Ci0JICAgIH0KLQkgIGVsc2UKLQkgICAgewotCSAgICAgIGlmICgoKGxvbmcpIHBzdCkgJiA0KQotCQlwc3QrKzsKLQkgICAgICBhdmFsdWVbaV0gPSBwc3Q7Ci0JICAgICAgcHN0ICs9IDQ7Ci0JICAgICAgbmYgPSA4OwotCSAgICB9Ci0JICBicmVhazsKLSNlbmRpZgotCiAJZGVmYXVsdDoKLQkgIEZGSV9BU1NFUlQgKDApOworCQlGRklfQVNTRVJUICgwKTsKIAl9CiAKICAgICAgIGkrKzsKQEAgLTEyNjMsMzkgKzEzMjAsOSBAQAogICAgICBhbHJlYWR5IHVzZWQgYW5kIHdlIG5ldmVyIGhhdmUgYSBzdHJ1Y3Qgd2l0aCBzaXplIHplcm8uIFRoYXQgaXMgdGhlIHJlYXNvbgogICAgICBmb3IgdGhlIHN1YnRyYWN0aW9uIG9mIDEuIFNlZSB0aGUgY29tbWVudCBpbiBmZml0YXJnZXQuaCBhYm91dCBvcmRlcmluZy4KICAgKi8KLSAgaWYgKGNpZi0+YWJpID09IEZGSV9TWVNWICYmIGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAmJiBzaXplIDw9IDgpCisgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTViAmJiBydHlwZW51bSA9PSBGRklfVFlQRV9TVFJVQ1QgJiYgc2l6ZSA8PSA4KQogICAgIHJldHVybiAoRkZJX1NZU1ZfVFlQRV9TTUFMTF9TVFJVQ1QgLSAxKSArIHNpemU7Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLSAgZWxzZSBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFCi0JICAgJiYgY2lmLT5hYmkgIT0gRkZJX0xJTlVYICYmIGNpZi0+YWJpICE9IEZGSV9MSU5VWF9TT0ZUX0ZMT0FUKQotICAgIHJldHVybiBGRklfVFlQRV9TVFJVQ1Q7Ci0jZW5kaWYKLSAgLyogV2l0aCBGRklfTElOVVhfU09GVF9GTE9BVCBmbG9hdHMgYW5kIGRvdWJsZXMgYXJlIGhhbmRsZWQgbGlrZSBVSU5UMzIKLSAgICAgcmVzcGVjdGl2bGV5IFVJTlQ2NC4gICovCi0gIGlmIChjaWYtPmFiaSA9PSBGRklfTElOVVhfU09GVF9GTE9BVCkKLSAgICB7Ci0gICAgICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCi0JewotCWNhc2UgRkZJX1RZUEVfRkxPQVQ6Ci0JICByZXR1cm4gRkZJX1RZUEVfVUlOVDMyOwotCSAgYnJlYWs7Ci0JY2FzZSBGRklfVFlQRV9ET1VCTEU6Ci0JICByZXR1cm4gRkZJX1RZUEVfVUlOVDY0OwotCSAgYnJlYWs7Ci0jaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQljYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6Ci0JICByZXR1cm4gRkZJX1RZUEVfVUlOVDEyODsKLQkgIGJyZWFrOwotI2VuZGlmCi0JZGVmYXVsdDoKLQkgIHJldHVybiBjaWYtPnJ0eXBlLT50eXBlOwotCX0KLSAgICB9Ci0gIGVsc2UKLSAgICB7Ci0gICAgICByZXR1cm4gY2lmLT5ydHlwZS0+dHlwZTsKLSAgICB9CisgIHJldHVybiBydHlwZW51bTsKIH0KIAogaW50IEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfaGVscGVyX0xJTlVYNjQgKGZmaV9jbG9zdXJlICosIHZvaWQgKiwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpX2Rhcndpbi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMKaW5kZXggZDg0ZjFjMy4uZGQ4OTdmNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZmlfZGFyd2luLmMKQEAgLTMsNyArMyw3IEBACiAKICAgIENvcHlyaWdodCAoQykgMTk5OCBHZW9mZnJleSBLZWF0aW5nCiAgICBDb3B5cmlnaHQgKEMpIDIwMDEgSm9obiBIb3Jua3Zpc3QKLSAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNiwgMjAwNywgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvcHlyaWdodCAoQykgMjAwMiwgMjAwNiwgMjAwNywgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgRkZJIHN1cHBvcnQgZm9yIERhcndpbiBhbmQgQUlYLgogICAgCkBAIC0zNSwxMSArMzUsMTcgQEAKIGV4dGVybiB2b2lkIGZmaV9jbG9zdXJlX0FTTSAodm9pZCk7CiAKIGVudW0gewotICAvKiBUaGUgYXNzZW1ibHkgZGVwZW5kcyBvbiB0aGVzZSBleGFjdCBmbGFncy4gICovCi0gIEZMQUdfUkVUVVJOU19OT1RISU5HICA9IDEgPDwgKDMxLTMwKSwgLyogVGhlc2UgZ28gaW4gY3I3ICAqLwotICBGTEFHX1JFVFVSTlNfRlAgICAgICAgPSAxIDw8ICgzMS0yOSksCi0gIEZMQUdfUkVUVVJOU182NEJJVFMgICA9IDEgPDwgKDMxLTI4KSwKLSAgRkxBR19SRVRVUk5TXzEyOEJJVFMgID0gMSA8PCAoMzEtMzEpLAorICAvKiBUaGUgYXNzZW1ibHkgZGVwZW5kcyBvbiB0aGVzZSBleGFjdCBmbGFncy4gIAorICAgICBGb3IgRGFyd2luNjQgKHdoZW4gRkxBR19SRVRVUk5TX1NUUlVDVCBpcyBzZXQpOgorICAgICAgIEZMQUdfUkVUVVJOU19GUCBpbmRpY2F0ZXMgdGhhdCB0aGUgc3RydWN0dXJlIGVtYmVkcyBGUCBkYXRhLgorICAgICAgIEZMQUdfUkVUVVJOU18xMjhCSVRTIHNpZ25hbHMgYSBzcGVjaWFsIHN0cnVjdCBzaXplIHRoYXQgaXMgbm90CisgICAgICAgZXhwYW5kZWQgZm9yIGZsb2F0IGNvbnRlbnQuICAqLworICBGTEFHX1JFVFVSTlNfMTI4QklUUwk9IDEgPDwgKDMxLTMxKSwgLyogVGhlc2UgZ28gaW4gY3I3ICAqLworICBGTEFHX1JFVFVSTlNfTk9USElORwk9IDEgPDwgKDMxLTMwKSwKKyAgRkxBR19SRVRVUk5TX0ZQCT0gMSA8PCAoMzEtMjkpLAorICBGTEFHX1JFVFVSTlNfNjRCSVRTCT0gMSA8PCAoMzEtMjgpLAorCisgIEZMQUdfUkVUVVJOU19TVFJVQ1QJPSAxIDw8ICgzMS0yNyksIC8qIFRoaXMgZ29lcyBpbiBjcjYgICovCiAKICAgRkxBR19BUkdfTkVFRFNfQ09QWSAgID0gMSA8PCAoMzEtIDcpLAogICBGTEFHX0ZQX0FSR1VNRU5UUyAgICAgPSAxIDw8ICgzMS0gNiksIC8qIGNyMS5lcTsgc3BlY2lmaWVkIGJ5IEFCSSAgKi8KQEAgLTUwLDQzICs1Niw2MSBAQAogLyogQWJvdXQgdGhlIERBUldJTiBBQkkuICAqLwogZW51bSB7CiAgIE5VTV9HUFJfQVJHX1JFR0lTVEVSUyA9IDgsCi0gIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDEzCisgIE5VTV9GUFJfQVJHX1JFR0lTVEVSUyA9IDEzLAorICBMSU5LQUdFX0FSRUFfR1BSUyA9IDYKIH07Ci1lbnVtIHsgQVNNX05FRURTX1JFR0lTVEVSUyA9IDQgfTsKKworZW51bSB7IEFTTV9ORUVEU19SRUdJU1RFUlMgPSA0IH07IC8qIHIyOC1yMzEgKi8KIAogLyogZmZpX3ByZXBfYXJncyBpcyBjYWxsZWQgYnkgdGhlIGFzc2VtYmx5IHJvdXRpbmUgb25jZSBzdGFjayBzcGFjZQogICAgaGFzIGJlZW4gYWxsb2NhdGVkIGZvciB0aGUgZnVuY3Rpb24ncyBhcmd1bWVudHMuCisgICAKKyAgIG0zMi9tNjQKIAogICAgVGhlIHN0YWNrIGxheW91dCB3ZSB3YW50IGxvb2tzIGxpa2UgdGhpczoKIAogICAgfCAgIFJldHVybiBhZGRyZXNzIGZyb20gZmZpX2NhbGxfREFSV0lOICAgICAgfAloaWdoZXIgYWRkcmVzc2VzCiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18Ci0gICB8ICAgUHJldmlvdXMgYmFja2NoYWluIHBvaW50ZXIJNAl8CXN0YWNrIHBvaW50ZXIgaGVyZQorICAgfCAgIFByZXZpb3VzIGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8CXN0YWNrIHBvaW50ZXIgaGVyZQogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfDwrIDw8PAlvbiBlbnRyeSB0bwotICAgfCAgIFNhdmVkIHIyOC1yMzEJCQk0KjQJfCB8CWZmaV9jYWxsX0RBUldJTgorICAgfCAgIEFTTV9ORUVEU19SRUdJU1RFUlM9cjI4LXIzMSAgIDQqKDQvOCkJfCB8CWZmaV9jYWxsX0RBUldJTgogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8Ci0gICB8ICAgUGFyYW1ldGVycyAgICAgICAgICAgICAoYXQgbGVhc3QgOCo0PTMyKSB8IHwKKyAgIHwgICBXaGVuIHdlIGhhdmUgYW55IEZQIGFjdGl2aXR5Li4uIHRoZQl8IHwKKyAgIHwgICBGUFJzIG9jY3VweSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgc2xvdHMJfCB8CisgICB8ICAgaGVyZSBmcDEzIC4uIGZwMSBmcm9tIGhpZ2ggdG8gbG93IGFkZHIuCXwgfAorICAgfgkJCQkJCX4gfgorICAgfCAgIFBhcmFtZXRlcnMgICAgICAoYXQgbGVhc3QgOCo0Lzg9MzIvNjQpCXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAotICAgfCAgIFNwYWNlIGZvciBHUFIyICAgICAgICAgICAgICAgICAgIDQgICAgICAgfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CXN0YWNrCXwKLSAgIHwgICBSZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgMio0ICAgICAgIHwgfAlncm93cwl8CisgICB8ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIDIqNC84CXwgfAlncm93cwl8CiAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJZG93bglWCi0gICB8ICAgU3BhY2UgZm9yIGNhbGxlZSdzIExSCQk0CXwgfAorICAgfCAgIFNwYWNlIGZvciBjYWxsZWUncyBMUgkJNC84CXwgfAogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CWxvd2VyIGFkZHJlc3NlcwotICAgfCAgIFNhdmVkIENSICAgICAgICAgICAgICAgICAgICAgICAgIDQgICAgICAgfCB8CisgICB8ICAgU2F2ZWQgQ1IgW2xvdyB3b3JkIGZvciBtNjRdICAgICAgNC84CXwgfAogICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8ICAgICBzdGFjayBwb2ludGVyIGhlcmUKLSAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQJfC0vCWR1cmluZworICAgfCAgIEN1cnJlbnQgYmFja2NoYWluIHBvaW50ZXIJNC84CXwtLwlkdXJpbmcKICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgICA8PDwJZmZpX2NhbGxfREFSV0lOCiAKICAgICovCiAKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCitzdGF0aWMgdm9pZAorZGFyd2luNjRfcGFzc19zdHJ1Y3RfYnlfdmFsdWUgCisgIChmZmlfdHlwZSAqLCBjaGFyICosIHVuc2lnbmVkLCB1bnNpZ25lZCAqLCBkb3VibGUgKiosIHVuc2lnbmVkIGxvbmcgKiopOworI2VuZGlmCisKKy8qIFRoaXMgZGVwZW5kcyBvbiBHUFJfU0laRSA9IHNpemVvZiAodW5zaWduZWQgbG9uZykgKi8KKwogdm9pZAogZmZpX3ByZXBfYXJncyAoZXh0ZW5kZWRfY2lmICplY2lmLCB1bnNpZ25lZCBsb25nICpjb25zdCBzdGFjaykKIHsKICAgY29uc3QgdW5zaWduZWQgYnl0ZXMgPSBlY2lmLT5jaWYtPmJ5dGVzOwogICBjb25zdCB1bnNpZ25lZCBmbGFncyA9IGVjaWYtPmNpZi0+ZmxhZ3M7CiAgIGNvbnN0IHVuc2lnbmVkIG5hcmdzID0gZWNpZi0+Y2lmLT5uYXJnczsKKyNpZiAhZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KSAKICAgY29uc3QgZmZpX2FiaSBhYmkgPSBlY2lmLT5jaWYtPmFiaTsKKyNlbmRpZgogCiAgIC8qICdzdGFja3RvcCcgcG9pbnRzIGF0IHRoZSBwcmV2aW91cyBiYWNrY2hhaW4gcG9pbnRlci4gICovCiAgIHVuc2lnbmVkIGxvbmcgKmNvbnN0IHN0YWNrdG9wID0gc3RhY2sgKyAoYnl0ZXMgLyBzaXplb2YodW5zaWduZWQgbG9uZykpOwpAQCAtOTQsMTggKzExOCwxOSBAQAogICAvKiAnZnByX2Jhc2UnIHBvaW50cyBhdCB0aGUgc3BhY2UgZm9yIGZwcjEsIGFuZCBncm93cyB1cHdhcmRzIGFzCiAgICAgIHdlIHVzZSBGUFIgcmVnaXN0ZXJzLiAgKi8KICAgZG91YmxlICpmcHJfYmFzZSA9IChkb3VibGUgKikgKHN0YWNrdG9wIC0gQVNNX05FRURTX1JFR0lTVEVSUykgLSBOVU1fRlBSX0FSR19SRUdJU1RFUlM7Ci0gIGludCBmcGFyZ19jb3VudCA9IDA7Ci0KKyAgaW50IGdwX2NvdW50ID0gMCwgZnBhcmdfY291bnQgPSAwOwogCiAgIC8qICduZXh0X2FyZycgZ3Jvd3MgdXAgYXMgd2UgcHV0IHBhcmFtZXRlcnMgaW4gaXQuICAqLwotICB1bnNpZ25lZCBsb25nICpuZXh0X2FyZyA9IHN0YWNrICsgNjsgLyogNiByZXNlcnZlZCBwb3NpdGlvbnMuICAqLworICB1bnNpZ25lZCBsb25nICpuZXh0X2FyZyA9IHN0YWNrICsgTElOS0FHRV9BUkVBX0dQUlM7IC8qIDYgcmVzZXJ2ZWQgcG9zaXRpb25zLiAgKi8KIAogICBpbnQgaTsKICAgZG91YmxlIGRvdWJsZV90bXA7CiAgIHZvaWQgKipwX2FyZ3YgPSBlY2lmLT5hdmFsdWU7CiAgIHVuc2lnbmVkIGxvbmcgZ3BydmFsdWU7CiAgIGZmaV90eXBlKiogcHRyID0gZWNpZi0+Y2lmLT5hcmdfdHlwZXM7CisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkgCiAgIGNoYXIgKmRlc3RfY3B5OworI2VuZGlmCiAgIHVuc2lnbmVkIHNpemVfYWwgPSAwOwogCiAgIC8qIENoZWNrIHRoYXQgZXZlcnl0aGluZyBzdGFydHMgYWxpZ25lZCBwcm9wZXJseS4gICovCkBAIC0xMzAsMjUgKzE1NSwzMCBAQAogCSAgIHRoZSBzaXplIG9mIHRoZSBmbG9hdGluZy1wb2ludCBwYXJhbWV0ZXIgYXJlIHNraXBwZWQuICAqLwogCWNhc2UgRkZJX1RZUEVfRkxPQVQ6CiAJICBkb3VibGVfdG1wID0gKihmbG9hdCAqKSAqcF9hcmd2OwotCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKLQkgICAgKihkb3VibGUgKiluZXh0X2FyZyA9IGRvdWJsZV90bXA7Ci0JICBlbHNlCisJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICpmcHJfYmFzZSsrID0gZG91YmxlX3RtcDsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lOKQorCSAgKihmbG9hdCAqKW5leHRfYXJnID0gKihmbG9hdCAqKSAqcF9hcmd2OworI2Vsc2UKKwkgICooZG91YmxlICopbmV4dF9hcmcgPSBkb3VibGVfdG1wOworI2VuZGlmCiAJICBuZXh0X2FyZysrOworCSAgZ3BfY291bnQrKzsKIAkgIGZwYXJnX2NvdW50Kys7CiAJICBGRklfQVNTRVJUKGZsYWdzICYgRkxBR19GUF9BUkdVTUVOVFMpOwogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX0RPVUJMRToKIAkgIGRvdWJsZV90bXAgPSAqKGRvdWJsZSAqKSAqcF9hcmd2OwotCSAgaWYgKGZwYXJnX2NvdW50ID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKLQkgICAgKihkb3VibGUgKiluZXh0X2FyZyA9IGRvdWJsZV90bXA7Ci0JICBlbHNlCisJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICpmcHJfYmFzZSsrID0gZG91YmxlX3RtcDsKKwkgICooZG91YmxlICopbmV4dF9hcmcgPSBkb3VibGVfdG1wOwogI2lmZGVmIFBPV0VSUEM2NAogCSAgbmV4dF9hcmcrKzsKKwkgIGdwX2NvdW50Kys7CiAjZWxzZQogCSAgbmV4dF9hcmcgKz0gMjsKKwkgIGdwX2NvdW50ICs9IDI7CiAjZW5kaWYKIAkgIGZwYXJnX2NvdW50Kys7CiAJICBGRklfQVNTRVJUKGZsYWdzICYgRkxBR19GUF9BUkdVTUVOVFMpOwpAQCAtMTU3LDMwICsxODcsNDEgQEAKICNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQogCiAJY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgotI2lmZGVmIFBPV0VSUEM2NAorIyAgaWYgZGVmaW5lZChQT1dFUlBDNjQpICYmICFkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICAvKiA/Pz8gVGhpcyB3aWxsIGV4Y2VlZCB0aGUgcmVncyBjb3VudCB3aGVuIHRoZSB2YWx1ZSBzdGFydHMgYXQgZnAxMworCSAgICAgYW5kIGl0IHdpbGwgbm90IHB1dCB0aGUgZXh0cmEgYml0IG9uIHRoZSBzdGFjay4gICovCiAJICBpZiAoZnBhcmdfY291bnQgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCiAJICAgICoobG9uZyBkb3VibGUgKikgZnByX2Jhc2UrKyA9ICoobG9uZyBkb3VibGUgKikgKnBfYXJndjsKIAkgIGVsc2UKIAkgICAgKihsb25nIGRvdWJsZSAqKSBuZXh0X2FyZyA9ICoobG9uZyBkb3VibGUgKikgKnBfYXJndjsKIAkgIG5leHRfYXJnICs9IDI7CiAJICBmcGFyZ19jb3VudCArPSAyOwotI2Vsc2UKKyMgIGVsc2UKIAkgIGRvdWJsZV90bXAgPSAoKGRvdWJsZSAqKSAqcF9hcmd2KVswXTsKIAkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKmZwcl9iYXNlKysgPSBkb3VibGVfdG1wOwotCSAgZWxzZQotCSAgICAqKGRvdWJsZSAqKSBuZXh0X2FyZyA9IGRvdWJsZV90bXA7CisJICAqKGRvdWJsZSAqKSBuZXh0X2FyZyA9IGRvdWJsZV90bXA7CisjICAgIGlmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIG5leHRfYXJnKys7CisJICBncF9jb3VudCsrOworIyAgICBlbHNlCiAJICBuZXh0X2FyZyArPSAyOworCSAgZ3BfY291bnQgKz0gMjsKKyMgICAgZW5kaWYKIAkgIGZwYXJnX2NvdW50Kys7Ci0KIAkgIGRvdWJsZV90bXAgPSAoKGRvdWJsZSAqKSAqcF9hcmd2KVsxXTsKIAkgIGlmIChmcGFyZ19jb3VudCA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKIAkgICAgKmZwcl9iYXNlKysgPSBkb3VibGVfdG1wOwotCSAgZWxzZQotCSAgICAqKGRvdWJsZSAqKSBuZXh0X2FyZyA9IGRvdWJsZV90bXA7CisJICAqKGRvdWJsZSAqKSBuZXh0X2FyZyA9IGRvdWJsZV90bXA7CisjICAgIGlmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIG5leHRfYXJnKys7CisJICBncF9jb3VudCsrOworIyAgICBlbHNlCiAJICBuZXh0X2FyZyArPSAyOworCSAgZ3BfY291bnQgKz0gMjsKKyMgICAgZW5kaWYKIAkgIGZwYXJnX2NvdW50Kys7Ci0jZW5kaWYKKyMgIGVuZGlmCiAJICBGRklfQVNTRVJUKGZsYWdzICYgRkxBR19GUF9BUkdVTUVOVFMpOwogCSAgYnJlYWs7CiAjZW5kaWYKQEAgLTE5Miw2ICsyMzMsNyBAQAogI2Vsc2UKIAkgICoobG9uZyBsb25nICopIG5leHRfYXJnID0gKihsb25nIGxvbmcgKikgKnBfYXJndjsKIAkgIG5leHRfYXJnICs9IDI7CisJICBncF9jb3VudCArPSAyOwogI2VuZGlmCiAJICBicmVhazsKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6CkBAIC0yMTEsMzIgKzI1MywzNSBAQAogCSAgZ290byBwdXRncHI7CiAKIAljYXNlIEZGSV9UWVBFX1NUUlVDVDoKLSNpZmRlZiBQT1dFUlBDNjQKLQkgIGRlc3RfY3B5ID0gKGNoYXIgKikgbmV4dF9hcmc7CiAJICBzaXplX2FsID0gKCpwdHIpLT5zaXplOwotCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gMykKLQkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7Ci0JICBpZiAoc2l6ZV9hbCA8IDMgJiYgYWJpID09IEZGSV9EQVJXSU4pCi0JICAgIGRlc3RfY3B5ICs9IDQgLSBzaXplX2FsOwotCi0JICBtZW1jcHkgKChjaGFyICopIGRlc3RfY3B5LCAoY2hhciAqKSAqcF9hcmd2LCBzaXplX2FsKTsKLQkgIG5leHRfYXJnICs9IChzaXplX2FsICsgNykgLyA4OworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKwkgIG5leHRfYXJnID0gKHVuc2lnbmVkIGxvbmcgKilBTElHTigoY2hhciAqKW5leHRfYXJnLCAoKnB0ciktPmFsaWdubWVudCk7CisJICBkYXJ3aW42NF9wYXNzX3N0cnVjdF9ieV92YWx1ZSAoKnB0ciwgKGNoYXIgKikgKnBfYXJndiwgCisJCQkJCSAodW5zaWduZWQpIHNpemVfYWwsCisJCQkJCSAodW5zaWduZWQgaW50ICopICZmcGFyZ19jb3VudCwKKwkJCQkJICZmcHJfYmFzZSwgJm5leHRfYXJnKTsKICNlbHNlCiAJICBkZXN0X2NweSA9IChjaGFyICopIG5leHRfYXJnOwogCisJICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gaW5jbHVkZSBlbm91Z2gKKwkgICAgIHBhZGRpbmcgaW4gdGhlIHN0cnVjdCBzaXplIHRvIGFsaWduIGl0IHRvIGRvdWJsZS13b3JkLiAgKi8KKwkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKKwkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7CisKKyMgIGlmIGRlZmluZWQoUE9XRVJQQzY0KSAKKwkgIEZGSV9BU1NFUlQgKGFiaSAhPSBGRklfREFSV0lOKTsKKwkgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIChjaGFyICopICpwX2FyZ3YsIHNpemVfYWwpOworCSAgbmV4dF9hcmcgKz0gKHNpemVfYWwgKyA3KSAvIDg7CisjICBlbHNlCiAJICAvKiBTdHJ1Y3R1cmVzIHRoYXQgbWF0Y2ggdGhlIGJhc2ljIG1vZGVzIChRSSAxIGJ5dGUsIEhJIDIgYnl0ZXMsCiAJICAgICBTSSA0IGJ5dGVzKSBhcmUgYWxpZ25lZCBhcyBpZiB0aGV5IHdlcmUgdGhvc2UgbW9kZXMuCiAJICAgICBTdHJ1Y3R1cmVzIHdpdGggMyBieXRlIGluIHNpemUgYXJlIHBhZGRlZCB1cHdhcmRzLiAgKi8KLQkgIHNpemVfYWwgPSAoKnB0ciktPnNpemU7Ci0JICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gYWxpZ24KLQkgICAgIHRoZSBzdHJ1Y3QgdG8gZG91YmxlLXdvcmQuICAqLwotCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQotCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsKIAkgIGlmIChzaXplX2FsIDwgMyAmJiBhYmkgPT0gRkZJX0RBUldJTikKIAkgICAgZGVzdF9jcHkgKz0gNCAtIHNpemVfYWw7CiAKIAkgIG1lbWNweSgoY2hhciAqKSBkZXN0X2NweSwgKGNoYXIgKikgKnBfYXJndiwgc2l6ZV9hbCk7CiAJICBuZXh0X2FyZyArPSAoc2l6ZV9hbCArIDMpIC8gNDsKKyMgIGVuZGlmCiAjZW5kaWYKIAkgIGJyZWFrOwogCkBAIC0yNDksNiArMjk0LDcgQEAKIAkgIGdwcnZhbHVlID0gKih1bnNpZ25lZCBpbnQgKikgKnBfYXJndjsKIAlwdXRncHI6CiAJICAqbmV4dF9hcmcrKyA9IGdwcnZhbHVlOworCSAgZ3BfY291bnQrKzsKIAkgIGJyZWFrOwogCWRlZmF1bHQ6CiAJICBicmVhazsKQEAgLTI2Miw4ICszMDgsMjY5IEBACiAgIC8vRkZJX0FTU0VSVChmbGFncyAmIEZMQUdfNF9HUFJfQVJHVU1FTlRTIHx8IGludGFyZ19jb3VudCA8PSA0KTsKIH0KIAorI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKworLyogU2VlIGlmIHdlIGNhbiBwdXQgc29tZSBvZiB0aGUgc3RydWN0IGludG8gZnBycy4KKyAgIFRoaXMgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZm9yIHN0cnVjdHVyZXMgb2Ygc2l6ZSAxNiBieXRlcywgc2luY2UgdGhlc2UgYXJlIG5vdAorICAgYnJva2VuIG91dCB0aGlzIHdheS4gICovCitzdGF0aWMgdm9pZAorZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAoZmZpX3R5cGUgKnMsIHVuc2lnbmVkICpuZnByKQoreworICBpbnQgaTsKKworICBGRklfQVNTRVJUIChzLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKworICBmb3IgKGkgPSAwOyBzLT5lbGVtZW50c1tpXSAhPSBOVUxMOyBpKyspCisgICAgeworICAgICAgZmZpX3R5cGUgKnAgPSBzLT5lbGVtZW50c1tpXTsKKyAgICAgIHN3aXRjaCAocC0+dHlwZSkKKwl7CisJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKwkgICAgZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAocCwgbmZwcik7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgICAoKm5mcHIpICs9IDI7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICBjYXNlIEZGSV9UWVBFX0ZMT0FUOgorCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgZGVmYXVsdDoKKwkgICAgYnJlYWs7ICAgIAorCX0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2RhcndpbjY0X3N0cnVjdF9zaXplX2V4Y2VlZHNfZ3Byc19wIChmZmlfdHlwZSAqcywgY2hhciAqc3JjLCB1bnNpZ25lZCAqbmZwcikKK3sKKyAgdW5zaWduZWQgc3RydWN0X29mZnNldD0wLCBpOworCisgIGZvciAoaSA9IDA7IHMtPmVsZW1lbnRzW2ldICE9IE5VTEw7IGkrKykKKyAgICB7CisgICAgICBjaGFyICppdGVtX2Jhc2U7CisgICAgICBmZmlfdHlwZSAqcCA9IHMtPmVsZW1lbnRzW2ldOworICAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhpcyBpdGVtICgwIGZvciB0aGUgZmlyc3Qgb25lKS4gICovCisgICAgICBpZiAoaSA+IDApCisgICAgICAgIHN0cnVjdF9vZmZzZXQgPSBBTElHTihzdHJ1Y3Rfb2Zmc2V0LCBwLT5hbGlnbm1lbnQpOworCisgICAgICBpdGVtX2Jhc2UgPSBzcmMgKyBzdHJ1Y3Rfb2Zmc2V0OworCisgICAgICBzd2l0Y2ggKHAtPnR5cGUpCisJeworCSAgY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CisJICAgIGlmIChkYXJ3aW42NF9zdHJ1Y3Rfc2l6ZV9leGNlZWRzX2dwcnNfcCAocCwgaXRlbV9iYXNlLCBuZnByKSkKKwkgICAgICByZXR1cm4gMTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICAgIGlmICgqbmZwciA+PSBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgcmV0dXJuIDE7CisJICAgICgqbmZwcikgKz0gMTsKKwkgICAgaXRlbV9iYXNlICs9IDg7CisJICAvKiBGQUxMIFRIUk9VR0ggKi8KKwkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgICBpZiAoKm5mcHIgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHJldHVybiAxOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgaWYgKCpuZnByID49IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICByZXR1cm4gMTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIC8qIElmIHdlIHRyeSBhbmQgcGxhY2UgYW55IGl0ZW0sIHRoYXQgaXMgbm9uLWZsb2F0LCBvbmNlIHdlJ3ZlCisJICAgICAgIGV4Y2VlZGVkIHRoZSA4IEdQUiBtYXJrLCB0aGVuIHdlIGNhbid0IGZpdCB0aGUgc3RydWN0LiAgKi8KKwkgICAgaWYgKCh1bnNpZ25lZCBsb25nKWl0ZW1fYmFzZSA+PSA4KjgpIAorCSAgICAgIHJldHVybiAxOworCSAgICBicmVhazsgICAgCisJfQorICAgICAgLyogbm93IGNvdW50IHRoZSBzaXplIG9mIHdoYXQgd2UganVzdCB1c2VkLiAgKi8KKyAgICAgIHN0cnVjdF9vZmZzZXQgKz0gcC0+c2l6ZTsKKyAgICB9CisgIHJldHVybiAwOworfQorCisvKiBDYW4gdGhpcyBzdHJ1Y3QgYmUgcmV0dXJuZWQgYnkgdmFsdWU/ICAqLworaW50IAorZGFyd2luNjRfc3RydWN0X3JldF9ieV92YWx1ZV9wIChmZmlfdHlwZSAqcykKK3sKKyAgdW5zaWduZWQgbmZwID0gMDsKKworICBGRklfQVNTRVJUIChzICYmIHMtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKTsKKyAgCisgIC8qIFRoZSBsYXJnZXN0IHN0cnVjdHVyZSB3ZSBjYW4gcmV0dXJuIGlzIDhsb25nICsgMTMgZG91Ymxlcy4gICovCisgIGlmIChzLT5zaXplID4gMTY4KQorICAgIHJldHVybiAwOworICAKKyAgLyogV2UgY2FuJ3QgcGFzcyBtb3JlIHRoYW4gMTMgZmxvYXRzLiAgKi8KKyAgZGFyd2luNjRfc2Nhbl9zdHJ1Y3RfZm9yX2Zsb2F0cyAocywgJm5mcCk7CisgIGlmIChuZnAgPiAxMykKKyAgICByZXR1cm4gMDsKKyAgCisgIC8qIElmIHRoZXJlIGFyZSBub3QgdG9vIG1hbnkgZmxvYXRzLCBhbmQgdGhlIHN0cnVjdCBpcworICAgICBzbWFsbCBlbm91Z2ggdG8gYWNjb21tb2RhdGUgaW4gdGhlIEdQUnMsIHRoZW4gaXQgbXVzdCBiZSBPSy4gICovCisgIGlmIChzLT5zaXplIDw9IDY0KQorICAgIHJldHVybiAxOworICAKKyAgLyogV2VsbCwgd2UgaGF2ZSB0byBsb29rIGhhcmRlci4gICovCisgIG5mcCA9IDA7CisgIGlmIChkYXJ3aW42NF9zdHJ1Y3Rfc2l6ZV9leGNlZWRzX2dwcnNfcCAocywgTlVMTCwgJm5mcCkpCisgICAgcmV0dXJuIDA7CisgIAorICByZXR1cm4gMTsKK30KKwordm9pZAorZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzIChmZmlfdHlwZSAqcywgY2hhciAqc3JjLCAKKwkJCSAgICAgdW5zaWduZWQgKm5mcHIsIGRvdWJsZSAqKmZwcnMpCit7CisgIGludCBpOworICBkb3VibGUgKmZwcl9iYXNlID0gKmZwcnM7CisgIHVuc2lnbmVkIHN0cnVjdF9vZmZzZXQgPSAwOworCisgIC8qIFdlIGRvbid0IGFzc3VtZSBhbnl0aGluZyBhYm91dCB0aGUgYWxpZ25tZW50IG9mIHRoZSBzb3VyY2UuICAqLworICBmb3IgKGkgPSAwOyBzLT5lbGVtZW50c1tpXSAhPSBOVUxMOyBpKyspCisgICAgeworICAgICAgY2hhciAqaXRlbV9iYXNlOworICAgICAgZmZpX3R5cGUgKnAgPSBzLT5lbGVtZW50c1tpXTsKKyAgICAgIC8qIEZpbmQgdGhlIHN0YXJ0IG9mIHRoaXMgaXRlbSAoMCBmb3IgdGhlIGZpcnN0IG9uZSkuICAqLworICAgICAgaWYgKGkgPiAwKQorICAgICAgICBzdHJ1Y3Rfb2Zmc2V0ID0gQUxJR04oc3RydWN0X29mZnNldCwgcC0+YWxpZ25tZW50KTsKKyAgICAgIGl0ZW1fYmFzZSA9IHNyYyArIHN0cnVjdF9vZmZzZXQ7CisKKyAgICAgIHN3aXRjaCAocC0+dHlwZSkKKwl7CisJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKwkgICAgZGFyd2luNjRfcGFzc19zdHJ1Y3RfZmxvYXRzIChwLCBpdGVtX2Jhc2UsIG5mcHIsCisJCQkJCSAgICZmcHJfYmFzZSk7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFOgorCSAgICBpZiAoKm5mcHIgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgKmZwcl9iYXNlKysgPSAqKGRvdWJsZSAqKWl0ZW1fYmFzZTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBpdGVtX2Jhc2UgKz0gODsKKwkgIC8qIEZBTEwgVEhST1VHSCAqLworCSAgY2FzZSBGRklfVFlQRV9ET1VCTEU6CisJICAgIGlmICgqbmZwciA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICAqZnByX2Jhc2UrKyA9ICooZG91YmxlICopaXRlbV9iYXNlOworCSAgICAoKm5mcHIpICs9IDE7CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgaWYgKCpuZnByIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgICpmcHJfYmFzZSsrID0gKGRvdWJsZSkgKihmbG9hdCAqKWl0ZW1fYmFzZTsKKwkgICAgKCpuZnByKSArPSAxOworCSAgICBicmVhazsKKwkgIGRlZmF1bHQ6CisJICAgIGJyZWFrOyAgICAKKwl9CisgICAgICAvKiBub3cgY291bnQgdGhlIHNpemUgb2Ygd2hhdCB3ZSBqdXN0IHVzZWQuICAqLworICAgICAgc3RydWN0X29mZnNldCArPSBwLT5zaXplOworICAgIH0KKyAgLyogVXBkYXRlIHRoZSBzY29yZXMuICAqLworICAqZnBycyA9IGZwcl9iYXNlOworfQorCisvKiBEYXJ3aW42NCBzcGVjaWFsIHJ1bGVzLgorICAgQnJlYWsgb3V0IGEgc3RydWN0IGludG8gcGFyYW1zIGFuZCBmbG9hdCByZWdpc3RlcnMuICAqLworc3RhdGljIHZvaWQKK2RhcndpbjY0X3Bhc3Nfc3RydWN0X2J5X3ZhbHVlIChmZmlfdHlwZSAqcywgY2hhciAqc3JjLCB1bnNpZ25lZCBzaXplLAorCQkJICAgICAgIHVuc2lnbmVkICpuZnByLCBkb3VibGUgKipmcHJzLCB1bnNpZ25lZCBsb25nICoqYXJnKQoreworICB1bnNpZ25lZCBsb25nICpuZXh0X2FyZyA9ICphcmc7CisgIGNoYXIgKmRlc3RfY3B5ID0gKGNoYXIgKiluZXh0X2FyZzsKKworICBGRklfQVNTRVJUIChzLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKworICBpZiAoIXNpemUpCisgICAgcmV0dXJuOworCisgIC8qIEZpcnN0Li4uIHNwZWNpYWwgY2FzZXMuICAqLworICBpZiAoc2l6ZSA8IDMKKyAgICAgIHx8IChzaXplID09IDQgCisJICAmJiBzLT5lbGVtZW50c1swXSAKKwkgICYmIHMtPmVsZW1lbnRzWzBdLT50eXBlICE9IEZGSV9UWVBFX0ZMT0FUKSkKKyAgICB7CisgICAgICAvKiBNdXN0IGJlIGF0IGxlYXN0IG9uZSBHUFIsIHBhZGRpbmcgaXMgdW5zcGVjaWZpZWQgaW4gdmFsdWUsIAorCSBsZXQncyBtYWtlIGl0IHplcm8uICAqLworICAgICAgKm5leHRfYXJnID0gMFVMOyAKKyAgICAgIGRlc3RfY3B5ICs9IDggLSBzaXplOworICAgICAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgc3JjLCBzaXplKTsKKyAgICAgIG5leHRfYXJnKys7CisgICAgfQorICBlbHNlIGlmIChzaXplID09IDE2KQorICAgIHsKKyAgICAgIG1lbWNweSAoKGNoYXIgKikgZGVzdF9jcHksIHNyYywgc2l6ZSk7CisgICAgICBuZXh0X2FyZyArPSAyOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIG5vdyB0aGUgZ2VuZXJhbCBjYXNlLCB3ZSBjb25zaWRlciBlbWJlZGRlZCBmbG9hdHMuICAqLworICAgICAgbWVtY3B5ICgoY2hhciAqKSBkZXN0X2NweSwgc3JjLCBzaXplKTsKKyAgICAgIGRhcndpbjY0X3Bhc3Nfc3RydWN0X2Zsb2F0cyAocywgc3JjLCBuZnByLCBmcHJzKTsKKyAgICAgIG5leHRfYXJnICs9IChzaXplKzcpLzg7CisgICAgfQorICAgIAorICAqYXJnID0gbmV4dF9hcmc7Cit9CisKK2RvdWJsZSAqCitkYXJ3aW42NF9zdHJ1Y3RfZmxvYXRzX3RvX21lbSAoZmZpX3R5cGUgKnMsIGNoYXIgKmRlc3QsIGRvdWJsZSAqZnBycywgdW5zaWduZWQgKm5mKQoreworICBpbnQgaTsKKyAgdW5zaWduZWQgc3RydWN0X29mZnNldCA9IDA7CisKKyAgLyogV2UgZG9uJ3QgYXNzdW1lIGFueXRoaW5nIGFib3V0IHRoZSBhbGlnbm1lbnQgb2YgdGhlIHNvdXJjZS4gICovCisgIGZvciAoaSA9IDA7IHMtPmVsZW1lbnRzW2ldICE9IE5VTEw7IGkrKykKKyAgICB7CisgICAgICBjaGFyICppdGVtX2Jhc2U7CisgICAgICBmZmlfdHlwZSAqcCA9IHMtPmVsZW1lbnRzW2ldOworICAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhpcyBpdGVtICgwIGZvciB0aGUgZmlyc3Qgb25lKS4gICovCisgICAgICBpZiAoaSA+IDApCisgICAgICAgIHN0cnVjdF9vZmZzZXQgPSBBTElHTihzdHJ1Y3Rfb2Zmc2V0LCBwLT5hbGlnbm1lbnQpOworICAgICAgaXRlbV9iYXNlID0gZGVzdCArIHN0cnVjdF9vZmZzZXQ7CisKKyAgICAgIHN3aXRjaCAocC0+dHlwZSkKKwl7CisJICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKwkgICAgZnBycyA9IGRhcndpbjY0X3N0cnVjdF9mbG9hdHNfdG9fbWVtIChwLCBpdGVtX2Jhc2UsIGZwcnMsIG5mKTsKKwkgICAgYnJlYWs7CisJICBjYXNlIEZGSV9UWVBFX0xPTkdET1VCTEU6CisJICAgIGlmICgqbmYgPCBOVU1fRlBSX0FSR19SRUdJU1RFUlMpCisJICAgICAgeworCQkqKGRvdWJsZSAqKWl0ZW1fYmFzZSA9ICpmcHJzKysgOworCQkoKm5mKSArPSAxOworCSAgICAgIH0KKwkgICAgaXRlbV9iYXNlICs9IDg7CisJICAvKiBGQUxMIFRIUk9VR0ggKi8KKwkgIGNhc2UgRkZJX1RZUEVfRE9VQkxFOgorCSAgICBpZiAoKm5mIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCSAgICAgIHsKKwkJKihkb3VibGUgKilpdGVtX2Jhc2UgPSAqZnBycysrIDsKKwkJKCpuZikgKz0gMTsKKwkgICAgICB9CisJICAgIGJyZWFrOworCSAgY2FzZSBGRklfVFlQRV9GTE9BVDoKKwkgICAgaWYgKCpuZiA8IE5VTV9GUFJfQVJHX1JFR0lTVEVSUykKKwkgICAgICB7CisJCSooZmxvYXQgKilpdGVtX2Jhc2UgPSAoZmxvYXQpICpmcHJzKysgOworCQkoKm5mKSArPSAxOworCSAgICAgIH0KKwkgICAgYnJlYWs7CisJICBkZWZhdWx0OgorCSAgICBicmVhazsgICAgCisJfQorICAgICAgLyogbm93IGNvdW50IHRoZSBzaXplIG9mIHdoYXQgd2UganVzdCB1c2VkLiAgKi8KKyAgICAgIHN0cnVjdF9vZmZzZXQgKz0gcC0+c2l6ZTsKKyAgICB9CisgIHJldHVybiBmcHJzOworfQorCisjZW5kaWYKKwogLyogQWRqdXN0IHRoZSBzaXplIG9mIFMgdG8gYmUgY29ycmVjdCBmb3IgRGFyd2luLgotICAgT24gRGFyd2luLCB0aGUgZmlyc3QgZmllbGQgb2YgYSBzdHJ1Y3R1cmUgaGFzIG5hdHVyYWwgYWxpZ25tZW50LiAgKi8KKyAgIE9uIERhcndpbiBtMzIsIHRoZSBmaXJzdCBmaWVsZCBvZiBhIHN0cnVjdHVyZSBoYXMgbmF0dXJhbCBhbGlnbm1lbnQuICAKKyAgIE9uIERhcndpbiBtNjQsIGFsbCBmaWVsZHMgaGF2ZSBuYXR1cmFsIGFsaWdubWVudC4gICovCiAKIHN0YXRpYyB2b2lkCiBkYXJ3aW5fYWRqdXN0X2FnZ3JlZ2F0ZV9zaXplcyAoZmZpX3R5cGUgKnMpCkBAIC0yODAsMjIgKzU4NywyOSBAQAogICAgICAgaW50IGFsaWduOwogICAgICAgCiAgICAgICBwID0gcy0+ZWxlbWVudHNbaV07Ci0gICAgICBkYXJ3aW5fYWRqdXN0X2FnZ3JlZ2F0ZV9zaXplcyAocCk7Ci0gICAgICBpZiAoaSA9PSAwCi0JICAmJiAocC0+dHlwZSA9PSBGRklfVFlQRV9VSU5UNjQKLQkgICAgICB8fCBwLT50eXBlID09IEZGSV9UWVBFX1NJTlQ2NAotCSAgICAgIHx8IHAtPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFCi0JICAgICAgfHwgcC0+YWxpZ25tZW50ID09IDgpKQotCWFsaWduID0gODsKKyAgICAgIGlmIChwLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKwlkYXJ3aW5fYWRqdXN0X2FnZ3JlZ2F0ZV9zaXplcyAocCk7CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorICAgICAgLyogTmF0dXJhbCBhbGlnbm1lbnQgZm9yIGFsbCBpdGVtcy4gICovCisgICAgICBhbGlnbiA9IHAtPmFsaWdubWVudDsKKyNlbHNlCisgICAgICAvKiBOYXRydWFsIGFsaWdubWVudCBmb3IgdGhlIGZpcnN0IGl0ZW0uLi4gKi8KKyAgICAgIGlmIChpID09IDApCisJYWxpZ24gPSBwLT5hbGlnbm1lbnQ7CiAgICAgICBlbHNlIGlmIChwLT5hbGlnbm1lbnQgPT0gMTYgfHwgcC0+YWxpZ25tZW50IDwgNCkKKwkvKiAuLiBzdWJzZXF1ZW50IGl0ZW1zIHdpdGggdmVjdG9yIG9yIGFsaWduIDwgNCBoYXZlIG5hdHVyYWwgYWxpZ24uICAqLwogCWFsaWduID0gcC0+YWxpZ25tZW50OwogICAgICAgZWxzZQorCS8qIC4uIG9yIGFsaWduIGlzIDQuICAqLwogCWFsaWduID0gNDsKKyNlbmRpZgorICAgICAgLyogUGFkLCBpZiBuZWNlc3NhcnksIGJlZm9yZSBhZGRpbmcgdGhlIGN1cnJlbnQgaXRlbS4gICovCiAgICAgICBzLT5zaXplID0gQUxJR04ocy0+c2l6ZSwgYWxpZ24pICsgcC0+c2l6ZTsKICAgICB9CiAgIAogICBzLT5zaXplID0gQUxJR04ocy0+c2l6ZSwgcy0+YWxpZ25tZW50KTsKICAgCisgIC8qIFRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3Nhcnkgb24gbTY0LCBidXQgaGFybWxlc3MuICAqLwogICBpZiAocy0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfVUlOVDY0CiAgICAgICB8fCBzLT5lbGVtZW50c1swXS0+dHlwZSA9PSBGRklfVFlQRV9TSU5UNjQKICAgICAgIHx8IHMtPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRQpAQCAtMzQ0LDEwICs2NTgsMTAgQEAKIGZmaV9wcmVwX2NpZl9tYWNoZGVwIChmZmlfY2lmICpjaWYpCiB7CiAgIC8qIEFsbCB0aGlzIGlzIGZvciB0aGUgREFSV0lOIEFCSS4gICovCi0gIGludCBpOworICB1bnNpZ25lZCBpOwogICBmZmlfdHlwZSAqKnB0cjsKICAgdW5zaWduZWQgYnl0ZXM7Ci0gIGludCBmcGFyZ19jb3VudCA9IDAsIGludGFyZ19jb3VudCA9IDA7CisgIHVuc2lnbmVkIGZwYXJnX2NvdW50ID0gMCwgaW50YXJnX2NvdW50ID0gMDsKICAgdW5zaWduZWQgZmxhZ3MgPSAwOwogICB1bnNpZ25lZCBzaXplX2FsID0gMDsKIApAQCAtMzcyLDE2ICs2ODYsMjUgQEAKICAgLyogU3BhY2UgZm9yIHRoZSBmcmFtZSBwb2ludGVyLCBjYWxsZWUncyBMUiwgQ1IsIGV0YywgYW5kIGZvcgogICAgICB0aGUgYXNtJ3MgdGVtcCByZWdzLiAgKi8KIAotICBieXRlcyA9ICg2ICsgQVNNX05FRURTX1JFR0lTVEVSUykgKiBzaXplb2YobG9uZyk7CisgIGJ5dGVzID0gKExJTktBR0VfQVJFQV9HUFJTICsgQVNNX05FRURTX1JFR0lTVEVSUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7CiAKLSAgLyogUmV0dXJuIHZhbHVlIGhhbmRsaW5nLiAgVGhlIHJ1bGVzIGFyZSBhcyBmb2xsb3dzOgorICAvKiBSZXR1cm4gdmFsdWUgaGFuZGxpbmcuICAKKyAgICBUaGUgcnVsZXMgbTMyIGFyZSBhcyBmb2xsb3dzOgogICAgICAtIDMyLWJpdCAob3IgbGVzcykgaW50ZWdlciB2YWx1ZXMgYXJlIHJldHVybmVkIGluIGdwcjM7Ci0gICAgIC0gU3RydWN0dXJlcyBvZiBzaXplIDw9IDQgYnl0ZXMgYWxzbyByZXR1cm5lZCBpbiBncHIzOwotICAgICAtIDY0LWJpdCBpbnRlZ2VyIHZhbHVlcyBhbmQgc3RydWN0dXJlcyBiZXR3ZWVuIDUgYW5kIDggYnl0ZXMgYXJlIHJldHVybmVkCi0gICAgICAgaW4gZ3ByMyBhbmQgZ3ByNDsKKyAgICAgLSBzdHJ1Y3R1cmVzIG9mIHNpemUgPD0gNCBieXRlcyBhbHNvIHJldHVybmVkIGluIGdwcjM7CisgICAgIC0gNjQtYml0IGludGVnZXIgdmFsdWVzIFs/Pz8gYW5kIHN0cnVjdHVyZXMgYmV0d2VlbiA1IGFuZCA4IGJ5dGVzXSBhcmUKKyAgICAgICByZXR1cm5lZCBpbiBncHIzIGFuZCBncHI0OwogICAgICAtIFNpbmdsZS9kb3VibGUgRlAgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBmcHIxOwogICAgICAtIExvbmcgZG91YmxlIEZQIChpZiBub3QgZXF1aXZhbGVudCB0byBkb3VibGUpIHZhbHVlcyBhcmUgcmV0dXJuZWQgaW4KICAgICAgICBmcHIxIGFuZCBmcHIyOworICAgICBtNjQ6CisgICAgIC0gNjQtYml0IG9yIHNtYWxsZXIgaW50ZWdyYWwgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBHUFIzCisgICAgIC0gU2luZ2xlL2RvdWJsZSBGUCB2YWx1ZXMgYXJlIHJldHVybmVkIGluIGZwcjE7CisgICAgIC0gTG9uZyBkb3VibGUgRlAgdmFsdWVzIGFyZSByZXR1cm5lZCBpbiBmcHIxIGFuZCBmcHIyOworICAgICBtNjQgU3RydWN0dXJlczoKKyAgICAgLSBJZiB0aGUgc3RydWN0dXJlIGNvdWxkIGJlIGFjY29tbW9kYXRlZCBpbiByZWdpc3RlcnMgd2VyZSBpdCB0byBiZSB0aGUKKyAgICAgICBmaXJzdCBhcmd1bWVudCB0byBhIHJvdXRpbmUsIHRoZW4gaXQgaXMgcmV0dXJuZWQgaW4gdGhvc2UgcmVnaXN0ZXJzLgorICAgICBtMzIvbTY0IHN0cnVjdHVyZXMgb3RoZXJ3aXNlOgogICAgICAtIExhcmdlciBzdHJ1Y3R1cmVzIHZhbHVlcyBhcmUgYWxsb2NhdGVkIHNwYWNlIGFuZCBhIHBvaW50ZXIgaXMgcGFzc2VkCiAgICAgICAgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAgKi8KICAgc3dpdGNoIChjaWYtPnJ0eXBlLT50eXBlKQpAQCAtNDEwLDkgKzczMyw0MiBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEZGSV9UWVBFX1NUUlVDVDoKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgICAgICB7CisJLyogQ2FuIHdlIGZpdCB0aGUgc3RydWN0IGludG8gcmVncz8gICovCisJaWYgKGRhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCAoY2lmLT5ydHlwZSkpCisJICB7CisJICAgIHVuc2lnbmVkIG5mcHIgPSAwOworCSAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfU1RSVUNUOworCSAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSAhPSAxNikKKwkgICAgICBkYXJ3aW42NF9zY2FuX3N0cnVjdF9mb3JfZmxvYXRzIChjaWYtPnJ0eXBlLCAmbmZwcikgOworCSAgICBlbHNlCisJICAgICAgZmxhZ3MgfD0gRkxBR19SRVRVUk5TXzEyOEJJVFM7CisJICAgIC8qIFdpbGwgYmUgMCBmb3IgMTZieXRlIHN0cnVjdC4gICovCisJICAgIGlmIChuZnByKQorCSAgICAgIGZsYWdzIHw9IEZMQUdfUkVUVVJOU19GUDsKKwkgIH0KKwllbHNlIC8qIEJ5IHJlZi4gKi8KKwkgIHsKKwkgICAgZmxhZ3MgfD0gRkxBR19SRVRWQUxfUkVGRVJFTkNFOworCSAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfTk9USElORzsKKwkgICAgaW50YXJnX2NvdW50Kys7CisJICB9CisgICAgICB9CisjZWxpZiBkZWZpbmVkKERBUldJTl9QUEMpCisgICAgICBpZiAoY2lmLT5ydHlwZS0+c2l6ZSA8PSA0KQorCWZsYWdzIHw9IEZMQUdfUkVUVVJOU19TVFJVQ1Q7CisgICAgICBlbHNlIC8qIGVsc2UgYnkgcmVmZXJlbmNlLiAgKi8KKwl7CisJICBmbGFncyB8PSBGTEFHX1JFVFZBTF9SRUZFUkVOQ0U7CisJICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfTk9USElORzsKKwkgIGludGFyZ19jb3VudCsrOworCX0KKyNlbHNlIC8qIGFzc3VtZSB3ZSBwYXNzIGJ5IHJlZi4gICovCiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFZBTF9SRUZFUkVOQ0U7CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfTk9USElORzsKICAgICAgIGludGFyZ19jb3VudCsrOworI2VuZGlmCiAgICAgICBicmVhazsKICAgICBjYXNlIEZGSV9UWVBFX1ZPSUQ6CiAgICAgICBmbGFncyB8PSBGTEFHX1JFVFVSTlNfTk9USElORzsKQEAgLTQyNSw1NyArNzgxLDgzIEBACiAKICAgLyogVGhlIGZpcnN0IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyB3b3JkcyBvZiBpbnRlZ2VyIGFyZ3VtZW50cywgYW5kIHRoZQogICAgICBmaXJzdCBOVU1fRlBSX0FSR19SRUdJU1RFUlMgZnAgYXJndW1lbnRzLCBnbyBpbiByZWdpc3RlcnM7IHRoZSByZXN0Ci0gICAgIGdvZXMgb24gdGhlIHN0YWNrLiAgU3RydWN0dXJlcyBhcmUgcGFzc2VkIGFzIGEgcG9pbnRlciB0byBhIGNvcHkgb2YKLSAgICAgdGhlIHN0cnVjdHVyZS4gU3R1ZmYgb24gdGhlIHN0YWNrIG5lZWRzIHRvIGtlZXAgcHJvcGVyIGFsaWdubWVudC4gICovCisgICAgIGdvZXMgb24gdGhlIHN0YWNrLiAgCisgICAgID8/PyBTdHJ1Y3R1cmVzIGFyZSBwYXNzZWQgYXMgYSBwb2ludGVyIHRvIGEgY29weSBvZiB0aGUgc3RydWN0dXJlLiAKKyAgICAgU3R1ZmYgb24gdGhlIHN0YWNrIG5lZWRzIHRvIGtlZXAgcHJvcGVyIGFsaWdubWVudC4gIAorICAgICBGb3IgbTY0IHRoZSBjb3VudCBpcyBlZmZlY3RpdmVseSBvZiBoYWxmLUdQUnMuICAqLwogICBmb3IgKHB0ciA9IGNpZi0+YXJnX3R5cGVzLCBpID0gY2lmLT5uYXJnczsgaSA+IDA7IGktLSwgcHRyKyspCiAgICAgeworICAgICAgdW5zaWduZWQgYWxpZ25fd29yZHM7CiAgICAgICBzd2l0Y2ggKCgqcHRyKS0+dHlwZSkKIAl7CiAJY2FzZSBGRklfVFlQRV9GTE9BVDoKIAljYXNlIEZGSV9UWVBFX0RPVUJMRToKIAkgIGZwYXJnX2NvdW50Kys7CisjaWYgIWRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKIAkgIC8qIElmIHRoaXMgRlAgYXJnIGlzIGdvaW5nIG9uIHRoZSBzdGFjaywgaXQgbXVzdCBiZQogCSAgICAgOC1ieXRlLWFsaWduZWQuICAqLwogCSAgaWYgKGZwYXJnX2NvdW50ID4gTlVNX0ZQUl9BUkdfUkVHSVNURVJTCi0JICAgICAgJiYgaW50YXJnX2NvdW50JTIgIT0gMCkKKwkgICAgICAmJiAoaW50YXJnX2NvdW50ICYgMHgwMSkgIT0gMCkKIAkgICAgaW50YXJnX2NvdW50Kys7CisjZW5kaWYKIAkgIGJyZWFrOwogCiAjaWYgRkZJX1RZUEVfTE9OR0RPVUJMRSAhPSBGRklfVFlQRV9ET1VCTEUKLQogCWNhc2UgRkZJX1RZUEVfTE9OR0RPVUJMRToKIAkgIGZwYXJnX2NvdW50ICs9IDI7CiAJICAvKiBJZiB0aGlzIEZQIGFyZyBpcyBnb2luZyBvbiB0aGUgc3RhY2ssIGl0IG11c3QgYmUKLQkgICAgIDgtYnl0ZS1hbGlnbmVkLiAgKi8KLQkgIGlmIChmcGFyZ19jb3VudCA+IE5VTV9GUFJfQVJHX1JFR0lTVEVSUwotCSAgICAgICYmIGludGFyZ19jb3VudCUyICE9IDApCi0JICAgIGludGFyZ19jb3VudCsrOwotCSAgaW50YXJnX2NvdW50ICs9MjsKKwkgICAgIDE2LWJ5dGUtYWxpZ25lZC4gICovCisJICBpZiAoZnBhcmdfY291bnQgPj0gTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorI2lmIGRlZmluZWQgKFBPV0VSUEM2NCkKKwkgICAgaW50YXJnX2NvdW50ID0gQUxJR04oaW50YXJnX2NvdW50LCAyKTsKKyNlbHNlCisJICAgIGludGFyZ19jb3VudCA9IEFMSUdOKGludGFyZ19jb3VudCwgNCk7CisjZW5kaWYKIAkgIGJyZWFrOwogI2VuZGlmCiAKIAljYXNlIEZGSV9UWVBFX1VJTlQ2NDoKIAljYXNlIEZGSV9UWVBFX1NJTlQ2NDoKKyNpZiBkZWZpbmVkKFBPV0VSUEM2NCkKKwkgIGludGFyZ19jb3VudCsrOworI2Vsc2UKIAkgIC8qICdsb25nIGxvbmcnIGFyZ3VtZW50cyBhcmUgcGFzc2VkIGFzIHR3byB3b3JkcywgYnV0CiAJICAgICBlaXRoZXIgYm90aCB3b3JkcyBtdXN0IGZpdCBpbiByZWdpc3RlcnMgb3IgYm90aCBnbwogCSAgICAgb24gdGhlIHN0YWNrLiAgSWYgdGhleSBnbyBvbiB0aGUgc3RhY2ssIHRoZXkgbXVzdAogCSAgICAgYmUgOC1ieXRlLWFsaWduZWQuICAqLwogCSAgaWYgKGludGFyZ19jb3VudCA9PSBOVU1fR1BSX0FSR19SRUdJU1RFUlMtMQotCSAgICAgIHx8IChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTICYmIGludGFyZ19jb3VudCUyICE9IDApKQorCSAgICAgIHx8IChpbnRhcmdfY291bnQgPj0gTlVNX0dQUl9BUkdfUkVHSVNURVJTIAorCSAgICAgICAgICAmJiAoaW50YXJnX2NvdW50ICYgMHgwMSkgIT0gMCkpCiAJICAgIGludGFyZ19jb3VudCsrOwogCSAgaW50YXJnX2NvdW50ICs9IDI7CisjZW5kaWYKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6CiAJICBzaXplX2FsID0gKCpwdHIpLT5zaXplOwotCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGFsaWduCi0JICAgICB0aGUgc3RydWN0IHRvIGRvdWJsZS13b3JkLiAgKi8KLQkgIGlmICgoKnB0ciktPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKLQkgICAgc2l6ZV9hbCA9IEFMSUdOKCgqcHRyKS0+c2l6ZSwgOCk7Ci0jaWZkZWYgUE9XRVJQQzY0CisjaWYgZGVmaW5lZChQT1dFUlBDX0RBUldJTjY0KQorCSAgYWxpZ25fd29yZHMgPSAoKnB0ciktPmFsaWdubWVudCA+PiAzOworCSAgaWYgKGFsaWduX3dvcmRzKQorCSAgICBpbnRhcmdfY291bnQgPSBBTElHTihpbnRhcmdfY291bnQsIGFsaWduX3dvcmRzKTsKKwkgIC8qIEJhc2Ugc2l6ZSBvZiB0aGUgc3RydWN0LiAgKi8KIAkgIGludGFyZ19jb3VudCArPSAoc2l6ZV9hbCArIDcpIC8gODsKKwkgIC8qIElmIDE2IGJ5dGVzIHRoZW4gZG9uJ3Qgd29ycnkgYWJvdXQgZmxvYXRzLiAgKi8KKwkgIGlmIChzaXplX2FsICE9IDE2KQorCSAgICAvKiBTY2FuIHRocm91Z2ggZm9yIGZsb2F0cyB0byBiZSBwbGFjZWQgaW4gcmVncy4gICovCisJICAgIGRhcndpbjY0X3NjYW5fc3RydWN0X2Zvcl9mbG9hdHMgKCpwdHIsICZmcGFyZ19jb3VudCkgOwogI2Vsc2UKKwkgIGFsaWduX3dvcmRzID0gKCpwdHIpLT5hbGlnbm1lbnQgPj4gMjsKKwkgIGlmIChhbGlnbl93b3JkcykKKwkgICAgaW50YXJnX2NvdW50ID0gQUxJR04oaW50YXJnX2NvdW50LCBhbGlnbl93b3Jkcyk7CisJICAvKiBJZiB0aGUgZmlyc3QgbWVtYmVyIG9mIHRoZSBzdHJ1Y3QgaXMgYSBkb3VibGUsIHRoZW4gYWxpZ24KKwkgICAgIHRoZSBzdHJ1Y3QgdG8gZG91YmxlLXdvcmQuIAorCSAgaWYgKCgqcHRyKS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQorCSAgICBzaXplX2FsID0gQUxJR04oKCpwdHIpLT5zaXplLCA4KTsgKi8KKyMgIGlmZGVmIFBPV0VSUEM2NAorCSAgaW50YXJnX2NvdW50ICs9IChzaXplX2FsICsgNykgLyA4OworIyAgZWxzZQogCSAgaW50YXJnX2NvdW50ICs9IChzaXplX2FsICsgMykgLyA0OworIyAgZW5kaWYKICNlbmRpZgogCSAgYnJlYWs7CiAKQEAgLTQ5MCw5ICs4NzIsMTggQEAKICAgaWYgKGZwYXJnX2NvdW50ICE9IDApCiAgICAgZmxhZ3MgfD0gRkxBR19GUF9BUkdVTUVOVFM7CiAKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgIC8qIFNwYWNlIHRvIGltYWdlIHRoZSBGUFIgcmVnaXN0ZXJzLCBpZiBuZWVkZWQgLSB3aGljaCBpbmNsdWRlcyB3aGVuIHRoZXkgbWlnaHQgYmUKKyAgICAgdXNlZCBpbiBhIHN0cnVjdCByZXR1cm4uICAqLworICBpZiAoZnBhcmdfY291bnQgIT0gMCAKKyAgICAgIHx8ICgoZmxhZ3MgJiBGTEFHX1JFVFVSTlNfU1RSVUNUKQorCSAgICYmIChmbGFncyAmIEZMQUdfUkVUVVJOU19GUCkpKQorICAgIGJ5dGVzICs9IE5VTV9GUFJfQVJHX1JFR0lTVEVSUyAqIHNpemVvZihkb3VibGUpOworI2Vsc2UKICAgLyogU3BhY2UgZm9yIHRoZSBGUFIgcmVnaXN0ZXJzLCBpZiBuZWVkZWQuICAqLwogICBpZiAoZnBhcmdfY291bnQgIT0gMCkKICAgICBieXRlcyArPSBOVU1fRlBSX0FSR19SRUdJU1RFUlMgKiBzaXplb2YoZG91YmxlKTsKKyNlbmRpZgogCiAgIC8qIFN0YWNrIHNwYWNlLiAgKi8KICNpZmRlZiBQT1dFUlBDNjQKQEAgLTUwNiw3ICs4OTcsNyBAQAogICAgIGJ5dGVzICs9IE5VTV9HUFJfQVJHX1JFR0lTVEVSUyAqIHNpemVvZihsb25nKTsKIAogICAvKiBUaGUgc3RhY2sgc3BhY2UgYWxsb2NhdGVkIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgMTYgYnl0ZXMuICAqLwotICBieXRlcyA9IChieXRlcyArIDE1KSAmIH4weEY7CisgIGJ5dGVzID0gQUxJR04oYnl0ZXMsIDE2KSA7CiAKICAgY2lmLT5mbGFncyA9IGZsYWdzOwogICBjaWYtPmJ5dGVzID0gYnl0ZXM7CkBAIC01MTYsOCArOTA3LDkgQEAKIAogZXh0ZXJuIHZvaWQgZmZpX2NhbGxfQUlYKGV4dGVuZGVkX2NpZiAqLCBsb25nLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwKIAkJCSB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICgqZm4yKSh2b2lkKSk7CisKIGV4dGVybiB2b2lkIGZmaV9jYWxsX0RBUldJTihleHRlbmRlZF9jaWYgKiwgbG9uZywgdW5zaWduZWQsIHVuc2lnbmVkICosCi0JCQkgICAgdm9pZCAoKmZuKSh2b2lkKSwgdm9pZCAoKmZuMikodm9pZCkpOworCQkJICAgIHZvaWQgKCpmbikodm9pZCksIHZvaWQgKCpmbjIpKHZvaWQpLCBmZmlfdHlwZSopOwogCiB2b2lkCiBmZmlfY2FsbCAoZmZpX2NpZiAqY2lmLCB2b2lkICgqZm4pKHZvaWQpLCB2b2lkICpydmFsdWUsIHZvaWQgKiphdmFsdWUpCkBAIC01NDIsMTEgKzkzNCwxMSBAQAogICAgIHsKICAgICBjYXNlIEZGSV9BSVg6CiAgICAgICBmZmlfY2FsbF9BSVgoJmVjaWYsIC0obG9uZyljaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4sCi0JCSAgIGZmaV9wcmVwX2FyZ3MpOworCQkgICBGRklfRk4oZmZpX3ByZXBfYXJncykpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRklfREFSV0lOOgogICAgICAgZmZpX2NhbGxfREFSV0lOKCZlY2lmLCAtKGxvbmcpY2lmLT5ieXRlcywgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuLAotCQkgICAgICBmZmlfcHJlcF9hcmdzKTsKKwkJICAgICAgRkZJX0ZOKGZmaV9wcmVwX2FyZ3MpLCBjaWYtPnJ0eXBlKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBGRklfQVNTRVJUKDApOwpAQCAtNTY2LDU4ICs5NTgsNDggQEAKIH0gYWl4X2ZkOwogCiAvKiBoZXJlIEknZCBsaWtlIHRvIGFkZCB0aGUgc3RhY2sgZnJhbWUgbGF5b3V0IHdlIHVzZSBpbiBkYXJ3aW5fY2xvc3VyZS5TCi0gICBhbmQgYWl4X2Nsc291cmUuUworICAgYW5kIGFpeF9jbG9zdXJlLlMKIAotICAgU1AgcHJldmlvdXMgLT4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tLSBjaGlsZCBmcmFtZQotCQkgIHwgYmFjayBjaGFpbiB0byBjYWxsZXIgNCAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgNAotCQkgIHwgc2F2ZWQgQ1IgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgOAotCQkgIHwgc2F2ZWQgTFIgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTIKLQkJICB8IHJlc2VydmVkIGZvciBjb21waWxlcnMgNCAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE2Ci0JCSAgfCByZXNlcnZlZCBmb3IgYmluZGVycyA0ICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAyMAotCQkgIHwgc2F2ZWQgVE9DIHBvaW50ZXIgNCAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMjQKLQkJICB8IGFsd2F5cyByZXNlcnZlZCA4KjQ9MzIgKHByZXZpb3VzIEdQUnMpfAotCQkgIHwgYWNjb3JkaW5nIHRvIHRoZSBsaW5rYWdlIGNvbnZlbnRpb24gICB8Ci0JCSAgfCBmcm9tIEFJWCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA1NgotCQkgIHwgb3VyIEZQUiBhcmVhIDEzKjg9MTA0ICAgICAgICAgICAgICAgICB8Ci0JCSAgfCBmMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgZjEzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTYwCi0JCSAgfCByZXN1bHQgYXJlYSA4ICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxNjgKLQkJICB8IGFsaWduZW1lbnQgdG8gdGhlIG5leHQgbXVsdGlwbGUgb2YgMTYgfAotU1AgY3VycmVudCAtLT4gICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTc2IDwtIHBhcmVudCBmcmFtZQotCQkgIHwgYmFjayBjaGFpbiB0byBjYWxsZXIgNCAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTgwCi0JCSAgfCBzYXZlZCBDUiA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxODQKLQkJICB8IHNhdmVkIExSIDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDE4OAotCQkgIHwgcmVzZXJ2ZWQgZm9yIGNvbXBpbGVycyA0ICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgMTkyCi0JCSAgfCByZXNlcnZlZCBmb3IgYmluZGVycyA0ICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAxOTYKLQkJICB8IHNhdmVkIFRPQyBwb2ludGVyIDQgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDIwMAotCQkgIHwgYWx3YXlzIHJlc2VydmVkIDgqND0zMiAgd2Ugc3RvcmUgb3VyICB8Ci0JCSAgfCBHUFJzIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICB8IHIzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgIHwgLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgfCByMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLQkJICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyAyMzIKLQkJICB8IG92ZXJmbG93IHBhcnQgICAgICAgICAgICAgICAgICAgICAgICAgfAotCQkgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIHh4eAotCQkgIHwgPz8/PyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0JCSAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgeHh4CisgICBtMzIvbTY0CisKKyAgIFRoZSBzdGFjayBsYXlvdXQgbG9va3MgbGlrZSB0aGlzOgorCisgICB8ICAgQWRkaXRpb25hbCBwYXJhbXMuLi4JCQl8IHwgICAgIEhpZ2hlciBhZGRyZXNzCisgICB+CQkJCQkJfiB+CisgICB8ICAgUGFyYW1ldGVycyAgICAgIChhdCBsZWFzdCA4KjQvOD0zMi82NCkJfCB8IE5VTV9HUFJfQVJHX1JFR0lTVEVSUworICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgVE9DPVIyIChBSVgpIFJlc2VydmVkIChEYXJ3aW4pICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgUmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIDIqNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZSdzIExSCQk0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBTYXZlZCBDUiBbbG93IHdvcmQgZm9yIG02NF0gICAgICA0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8gUGFyZW50J3MgZnJhbWUuCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IDwrIDw8PCBvbiBlbnRyeSB0byBmZmlfY2xvc3VyZV9BU00KKyAgIHwgICBSZXN1bHQgQnl0ZXMJCQkxNgl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfiAgIHBhZGRpbmcgdG8gMTYtYnl0ZSBhbGlnbm1lbnQJCX4gfgorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8CisgICB8ICAgTlVNX0ZQUl9BUkdfUkVHSVNURVJTIHNsb3RzCQl8IHwKKyAgIHwgICBoZXJlIGZwMTMgLi4gZnAxCQkgICAgICAgMTMqOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFIzLi5SMTAJCQkgIDgqNC84PTMyLzY0CXwgfCBOVU1fR1BSX0FSR19SRUdJU1RFUlMKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAorICAgfCAgIFRPQz1SMiAoQUlYKSBSZXNlcnZlZCAoRGFyd2luKSAgIDQvOAl8IHwKKyAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgfAlzdGFjawl8CisgICB8ICAgUmVzZXJ2ZWQgW2NvbXBpbGVyLGJpbmRlcl0gICAgIDIqNC84CXwgfAlncm93cwl8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJZG93bglWCisgICB8ICAgU3BhY2UgZm9yIGNhbGxlZSdzIExSCQk0LzgJfCB8CisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwJbG93ZXIgYWRkcmVzc2VzCisgICB8ICAgU2F2ZWQgQ1IgW2xvdyB3b3JkIGZvciBtNjRdICAgICAgNC84CXwgfAorICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCB8ICAgICBzdGFjayBwb2ludGVyIGhlcmUKKyAgIHwgICBDdXJyZW50IGJhY2tjaGFpbiBwb2ludGVyCTQvOAl8LS8JZHVyaW5nCisgICB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18ICAgPDw8CWZmaV9jbG9zdXJlX0FTTS4KIAogKi8KKwogZmZpX3N0YXR1cwogZmZpX3ByZXBfY2xvc3VyZV9sb2MgKGZmaV9jbG9zdXJlKiBjbG9zdXJlLAogCQkgICAgICBmZmlfY2lmKiBjaWYsCkBAIC02MzEsMzAgKzEwMTMsNDQgQEAKIAogICBzd2l0Y2ggKGNpZi0+YWJpKQogICAgIHsKLSAgICBjYXNlIEZGSV9EQVJXSU46CisgICAgICBjYXNlIEZGSV9EQVJXSU46CiAKLSAgICAgIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9EQVJXSU4pOworCUZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9EQVJXSU4pOwogCi0gICAgICB0cmFtcCA9ICh1bnNpZ25lZCBpbnQgKikgJmNsb3N1cmUtPnRyYW1wWzBdOwotICAgICAgdHJhbXBbMF0gPSAweDdjMDgwMmE2OyAgLyogICBtZmxyICAgIHIwICAqLwotICAgICAgdHJhbXBbMV0gPSAweDQyOWYwMDBkOyAgLyogICBiY2wtICAgIDIwLDQqY3I3K3NvLDB4MTAgICovCi0gICAgICB0cmFtcFs0XSA9IDB4N2Q2ODAyYTY7ICAvKiAgIG1mbHIgICAgcjExICAqLwotICAgICAgdHJhbXBbNV0gPSAweDgxOGIwMDAwOyAgLyogICBsd3ogICAgIHIxMiwwKHIxMSkgZnVuY3Rpb24gYWRkcmVzcyAgKi8KLSAgICAgIHRyYW1wWzZdID0gMHg3YzA4MDNhNjsgIC8qICAgbXRsciAgICByMCAgICovCi0gICAgICB0cmFtcFs3XSA9IDB4N2Q4OTAzYTY7ICAvKiAgIG10Y3RyICAgcjEyICAqLwotICAgICAgdHJhbXBbOF0gPSAweDgxNmIwMDA0OyAgLyogICBsd3ogICAgIHIxMSw0KHIxMSkgc3RhdGljIGNoYWluICAqLwotICAgICAgdHJhbXBbOV0gPSAweDRlODAwNDIwOyAgLyogICBiY3RyICAqLwotICAgICAgdHJhbXBbMl0gPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfQVNNOyAvKiBmdW5jdGlvbiAgKi8KLSAgICAgIHRyYW1wWzNdID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7IC8qIGNvbnRleHQgICovCisJdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJdHJhbXBbMF0gPSAweDdjMDgwMmE2OyAgLyogICBtZmxyICAgIHIwICAqLworCXRyYW1wWzFdID0gMHg0MjlmMDAxNTsgIC8qICAgYmNsLSAgICAyMCw0KmNyNytzbywgICsweDE4IChMMSkgICovCisJLyogV2UgcHV0IHRoZSBhZGRyZXNzZXMgaGVyZS4gICovCisJdHJhbXBbNl0gPSAweDdkNjgwMmE2OyAgLypMMTogICBtZmxyICAgIHIxMSAgKi8KKwl0cmFtcFs3XSA9IDB4ZTk4YjAwMDA7ICAvKiAgIGxkICAgICByMTIsMChyMTEpIGZ1bmN0aW9uIGFkZHJlc3MgICovCisJdHJhbXBbOF0gPSAweDdjMDgwM2E2OyAgLyogICBtdGxyICAgIHIwICAgKi8KKwl0cmFtcFs5XSA9IDB4N2Q4OTAzYTY7ICAvKiAgIG10Y3RyICAgcjEyICAqLworCXRyYW1wWzEwXSA9IDB4ZTk2YjAwMDg7ICAvKiAgIGx3eiAgICAgcjExLDgocjExKSBzdGF0aWMgY2hhaW4gICovCisJdHJhbXBbMTFdID0gMHg0ZTgwMDQyMDsgIC8qICAgYmN0ciAgKi8KIAotICAgICAgY2xvc3VyZS0+Y2lmID0gY2lmOwotICAgICAgY2xvc3VyZS0+ZnVuID0gZnVuOwotICAgICAgY2xvc3VyZS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworCSooKHVuc2lnbmVkIGxvbmcgKikmdHJhbXBbMl0pID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX0FTTTsgLyogZnVuY3Rpb24gICovCisJKigodW5zaWduZWQgbG9uZyAqKSZ0cmFtcFs0XSkgPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsgLyogY29udGV4dCAgKi8KKyNlbHNlCisJdHJhbXBbMF0gPSAweDdjMDgwMmE2OyAgLyogICBtZmxyICAgIHIwICAqLworCXRyYW1wWzFdID0gMHg0MjlmMDAwZDsgIC8qICAgYmNsLSAgICAyMCw0KmNyNytzbywweDEwICAqLworCXRyYW1wWzRdID0gMHg3ZDY4MDJhNjsgIC8qICAgbWZsciAgICByMTEgICovCisJdHJhbXBbNV0gPSAweDgxOGIwMDAwOyAgLyogICBsd3ogICAgIHIxMiwwKHIxMSkgZnVuY3Rpb24gYWRkcmVzcyAgKi8KKwl0cmFtcFs2XSA9IDB4N2MwODAzYTY7ICAvKiAgIG10bHIgICAgcjAgICAqLworCXRyYW1wWzddID0gMHg3ZDg5MDNhNjsgIC8qICAgbXRjdHIgICByMTIgICovCisJdHJhbXBbOF0gPSAweDgxNmIwMDA0OyAgLyogICBsd3ogICAgIHIxMSw0KHIxMSkgc3RhdGljIGNoYWluICAqLworCXRyYW1wWzldID0gMHg0ZTgwMDQyMDsgIC8qICAgYmN0ciAgKi8KKwl0cmFtcFsyXSA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV9BU007IC8qIGZ1bmN0aW9uICAqLworCXRyYW1wWzNdID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7IC8qIGNvbnRleHQgICovCisjZW5kaWYKKwljbG9zdXJlLT5jaWYgPSBjaWY7CisJY2xvc3VyZS0+ZnVuID0gZnVuOworCWNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKIAotICAgICAgLyogRmx1c2ggdGhlIGljYWNoZS4gT25seSBuZWNlc3Nhcnkgb24gRGFyd2luLiAgKi8KLSAgICAgIGZsdXNoX3JhbmdlKGNvZGVsb2MsIEZGSV9UUkFNUE9MSU5FX1NJWkUpOworCS8qIEZsdXNoIHRoZSBpY2FjaGUuIE9ubHkgbmVjZXNzYXJ5IG9uIERhcndpbi4gICovCisJZmx1c2hfcmFuZ2UoY29kZWxvYywgRkZJX1RSQU1QT0xJTkVfU0laRSk7CiAKLSAgICAgIGJyZWFrOworCWJyZWFrOwogCiAgICAgY2FzZSBGRklfQUlYOgogCkBAIC02NjksMTAgKzEwNjUsMTAgQEAKICAgICAgIGNsb3N1cmUtPmNpZiA9IGNpZjsKICAgICAgIGNsb3N1cmUtPmZ1biA9IGZ1bjsKICAgICAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKyAgICAgIGJyZWFrOwogCiAgICAgZGVmYXVsdDoKLQotICAgICAgRkZJX0FTU0VSVCgwKTsKKyAgICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgcmV0dXJuIEZGSV9PSzsKQEAgLTcwOCw3ICsxMTA0LDcgQEAKICAgZG91YmxlIGQ7CiB9IGZmaV9kYmxmbDsKIAotaW50CitmZmlfdHlwZSAqCiBmZmlfY2xvc3VyZV9oZWxwZXJfREFSV0lOIChmZmlfY2xvc3VyZSAqLCB2b2lkICosCiAJCQkgICB1bnNpZ25lZCBsb25nICosIGZmaV9kYmxmbCAqKTsKIApAQCAtNzE5LDcgKzExMTUsNyBAQAogICAgdXAgc3BhY2UgZm9yIGEgcmV0dXJuIHZhbHVlLCBmZmlfY2xvc3VyZV9BU00gaW52b2tlcyB0aGUKICAgIGZvbGxvd2luZyBoZWxwZXIgZnVuY3Rpb24gdG8gZG8gbW9zdCBvZiB0aGUgd29yay4gICovCiAKLWludAorZmZpX3R5cGUgKgogZmZpX2Nsb3N1cmVfaGVscGVyX0RBUldJTiAoZmZpX2Nsb3N1cmUgKmNsb3N1cmUsIHZvaWQgKnJ2YWx1ZSwKIAkJCSAgIHVuc2lnbmVkIGxvbmcgKnBnciwgZmZpX2RibGZsICpwZnIpCiB7CkBAIC03NDEsMTYgKzExMzcsMzIgQEAKICAgZmZpX2NpZiAqICAgICAgICBjaWY7CiAgIGZmaV9kYmxmbCAqICAgICAgZW5kX3BmciA9IHBmciArIE5VTV9GUFJfQVJHX1JFR0lTVEVSUzsKICAgdW5zaWduZWQgICAgICAgICBzaXplX2FsOworI2lmIGRlZmluZWQoUE9XRVJQQ19EQVJXSU42NCkKKyAgdW5zaWduZWQgCSAgIGZwc3VzZWQgPSAwOworI2VuZGlmCiAKICAgY2lmID0gY2xvc3VyZS0+Y2lmOwogICBhdmFsdWUgPSBhbGxvY2EgKGNpZi0+bmFyZ3MgKiBzaXplb2Yodm9pZCAqKSk7CiAKLSAgLyogQ29weSB0aGUgY2FsbGVyJ3Mgc3RydWN0dXJlIHJldHVybiB2YWx1ZSBhZGRyZXNzIHNvIHRoYXQgdGhlIGNsb3N1cmUKLSAgICAgcmV0dXJucyB0aGUgZGF0YSBkaXJlY3RseSB0byB0aGUgY2FsbGVyLiAgKi8KICAgaWYgKGNpZi0+cnR5cGUtPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQogICAgIHsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisgICAgICBpZiAoIWRhcndpbjY0X3N0cnVjdF9yZXRfYnlfdmFsdWVfcCAoY2lmLT5ydHlwZSkpCisJeworICAgIAkgIC8qIFdvbid0IGZpdCBpbnRvIHRoZSByZWdzIC0gcmV0dXJuIGJ5IHJlZi4gICovCisJICBydmFsdWUgPSAodm9pZCAqKSAqcGdyOworCSAgcGdyKys7CisJfQorI2VsaWYgZGVmaW5lZChEQVJXSU5fUFBDKQorICAgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgPiA0KQorCXsKKwkgIHJ2YWx1ZSA9ICh2b2lkICopICpwZ3I7CisJICBwZ3IrKzsKKwl9CisjZWxzZSAvKiBhc3N1bWUgd2UgcmV0dXJuIGJ5IHJlZi4gICovCiAgICAgICBydmFsdWUgPSAodm9pZCAqKSAqcGdyOwogICAgICAgcGdyKys7CisjZW5kaWYKICAgICB9CiAKICAgaSA9IDA7CkBAIC03NjQsNyArMTE3Niw3IEBACiAJewogCWNhc2UgRkZJX1RZUEVfU0lOVDg6CiAJY2FzZSBGRklfVFlQRV9VSU5UODoKLSNpZmRlZiBQT1dFUlBDNjQKKyNpZiAgZGVmaW5lZChQT1dFUlBDNjQpCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyA3OwogI2Vsc2UKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDM7CkBAIC03NzQsNyArMTE4Niw3IEBACiAKIAljYXNlIEZGSV9UWVBFX1NJTlQxNjoKIAljYXNlIEZGSV9UWVBFX1VJTlQxNjoKLSNpZmRlZiBQT1dFUlBDNjQKKyNpZiAgZGVmaW5lZChQT1dFUlBDNjQpCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyA2OwogI2Vsc2UKIAkgIGF2YWx1ZVtpXSA9IChjaGFyICopIHBnciArIDI7CkBAIC03ODQsNyArMTE5Niw3IEBACiAKIAljYXNlIEZGSV9UWVBFX1NJTlQzMjoKIAljYXNlIEZGSV9UWVBFX1VJTlQzMjoKLSNpZmRlZiBQT1dFUlBDNjQKKyNpZiAgZGVmaW5lZChQT1dFUlBDNjQpCiAJICBhdmFsdWVbaV0gPSAoY2hhciAqKSBwZ3IgKyA0OwogI2Vsc2UKIAljYXNlIEZGSV9UWVBFX1BPSU5URVI6CkBAIC03OTQsMzQgKzEyMDYsNTMgQEAKIAkgIGJyZWFrOwogCiAJY2FzZSBGRklfVFlQRV9TVFJVQ1Q6Ci0jaWZkZWYgUE9XRVJQQzY0CiAJICBzaXplX2FsID0gYXJnX3R5cGVzW2ldLT5zaXplOwotCSAgaWYgKGFyZ190eXBlc1tpXS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRE9VQkxFKQotCSAgICBzaXplX2FsID0gQUxJR04gKGFyZ190eXBlc1tpXS0+c2l6ZSwgOCk7Ci0JICBpZiAoc2l6ZV9hbCA8IDMgJiYgY2lmLT5hYmkgPT0gRkZJX0RBUldJTikKLQkgICAgYXZhbHVlW2ldID0gKHZvaWQgKikgcGdyICsgOCAtIHNpemVfYWw7Ci0JICBlbHNlCi0JICAgIGF2YWx1ZVtpXSA9ICh2b2lkICopIHBncjsKKyNpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisJICBwZ3IgPSAodW5zaWduZWQgbG9uZyAqKUFMSUdOKChjaGFyICopcGdyLCBhcmdfdHlwZXNbaV0tPmFsaWdubWVudCk7CisJICBpZiAoc2l6ZV9hbCA8IDMgfHwgc2l6ZV9hbCA9PSA0KQorCSAgICB7CisJICAgICAgYXZhbHVlW2ldID0gKChjaGFyICopcGdyKSs4LXNpemVfYWw7CisJICAgICAgaWYgKGFyZ190eXBlc1tpXS0+ZWxlbWVudHNbMF0tPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQKKwkJICAmJiBmcHN1c2VkIDwgTlVNX0ZQUl9BUkdfUkVHSVNURVJTKQorCQl7CisJCSAgKihmbG9hdCAqKXBnciA9IChmbG9hdCkgKihkb3VibGUgKilwZnI7CisJCSAgcGZyKys7CisJCSAgZnBzdXNlZCsrOworCQl9CisJICAgIH0KKwkgIGVsc2UgCisJICAgIHsKKwkgICAgICBpZiAoc2l6ZV9hbCAhPSAxNikKKwkJcGZyID0gKGZmaV9kYmxmbCAqKSAKKwkJICAgIGRhcndpbjY0X3N0cnVjdF9mbG9hdHNfdG9fbWVtIChhcmdfdHlwZXNbaV0sIChjaGFyICopcGdyLAorCQkJCQkJICAgKGRvdWJsZSAqKXBmciwgJmZwc3VzZWQpOworCSAgICAgIGF2YWx1ZVtpXSA9IHBncjsKKwkgICAgfQogCSAgcGdyICs9IChzaXplX2FsICsgNykgLyA4OwogI2Vsc2UKLQkgIC8qIFN0cnVjdHVyZXMgdGhhdCBtYXRjaCB0aGUgYmFzaWMgbW9kZXMgKFFJIDEgYnl0ZSwgSEkgMiBieXRlcywKLQkgICAgIFNJIDQgYnl0ZXMpIGFyZSBhbGlnbmVkIGFzIGlmIHRoZXkgd2VyZSB0aG9zZSBtb2Rlcy4gICovCi0JICBzaXplX2FsID0gYXJnX3R5cGVzW2ldLT5zaXplOwogCSAgLyogSWYgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGUgc3RydWN0IGlzIGEgZG91YmxlLCB0aGVuIGFsaWduCiAJICAgICB0aGUgc3RydWN0IHRvIGRvdWJsZS13b3JkLiAgKi8KIAkgIGlmIChhcmdfdHlwZXNbaV0tPmVsZW1lbnRzWzBdLT50eXBlID09IEZGSV9UWVBFX0RPVUJMRSkKIAkgICAgc2l6ZV9hbCA9IEFMSUdOKGFyZ190eXBlc1tpXS0+c2l6ZSwgOCk7CisjICBpZiBkZWZpbmVkKFBPV0VSUEM2NCkKKwkgIEZGSV9BU1NFUlQgKGNpZi0+YWJpICE9IEZGSV9EQVJXSU4pOworCSAgYXZhbHVlW2ldID0gcGdyOworCSAgcGdyICs9IChzaXplX2FsICsgNykgLyA4OworIyAgZWxzZQorCSAgLyogU3RydWN0dXJlcyB0aGF0IG1hdGNoIHRoZSBiYXNpYyBtb2RlcyAoUUkgMSBieXRlLCBISSAyIGJ5dGVzLAorCSAgICAgU0kgNCBieXRlcykgYXJlIGFsaWduZWQgYXMgaWYgdGhleSB3ZXJlIHRob3NlIG1vZGVzLiAgKi8KIAkgIGlmIChzaXplX2FsIDwgMyAmJiBjaWYtPmFiaSA9PSBGRklfREFSV0lOKQotCSAgICBhdmFsdWVbaV0gPSAodm9pZCopIHBnciArIDQgLSBzaXplX2FsOworCSAgICBhdmFsdWVbaV0gPSAoY2hhciopIHBnciArIDQgLSBzaXplX2FsOwogCSAgZWxzZQotCSAgICBhdmFsdWVbaV0gPSAodm9pZCopIHBncjsKKwkgICAgYXZhbHVlW2ldID0gcGdyOwogCSAgcGdyICs9IChzaXplX2FsICsgMykgLyA0OworIyAgZW5kaWYKICNlbmRpZgogCSAgYnJlYWs7CiAKIAljYXNlIEZGSV9UWVBFX1NJTlQ2NDoKIAljYXNlIEZGSV9UWVBFX1VJTlQ2NDoKLSNpZmRlZiBQT1dFUlBDNjQKKyNpZiAgZGVmaW5lZChQT1dFUlBDNjQpCiAJY2FzZSBGRklfVFlQRV9QT0lOVEVSOgogCSAgYXZhbHVlW2ldID0gcGdyOwogCSAgcGdyKys7CkBAIC05MjQsNSArMTM1NSw1IEBACiAgIChjbG9zdXJlLT5mdW4pIChjaWYsIHJ2YWx1ZSwgYXZhbHVlLCBjbG9zdXJlLT51c2VyX2RhdGEpOwogCiAgIC8qIFRlbGwgZmZpX2Nsb3N1cmVfQVNNIHRvIHBlcmZvcm0gcmV0dXJuIHR5cGUgcHJvbW90aW9ucy4gICovCi0gIHJldHVybiBjaWYtPnJ0eXBlLT50eXBlOworICByZXR1cm4gY2lmLT5ydHlwZTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL2ZmaXRhcmdldC5oCmluZGV4IGI0Zjk5MmUuLjNjOWRiNDkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9mZml0YXJnZXQuaApAQCAtMSw2ICsxLDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMKKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYworICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFBvd2VyUEMuCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMjgsMTUgKzMwLDI4IEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIFN5c3RlbSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWYgZGVmaW5lZCAoUE9XRVJQQykgJiYgZGVmaW5lZCAoX19wb3dlcnBjNjRfXykJLyogbGludXg2NCAqLworI2lmbmRlZiBQT1dFUlBDNjQKICNkZWZpbmUgUE9XRVJQQzY0Ci0jZWxpZiBkZWZpbmVkIChQT1dFUlBDX0RBUldJTikgJiYgZGVmaW5lZCAoX19wcGM2NF9fKQkvKiBEYXJ3aW4gKi8KKyNlbmRpZgorI2VsaWYgZGVmaW5lZCAoUE9XRVJQQ19EQVJXSU4pICYmIGRlZmluZWQgKF9fcHBjNjRfXykJLyogRGFyd2luNjQgKi8KKyNpZm5kZWYgUE9XRVJQQzY0CiAjZGVmaW5lIFBPV0VSUEM2NAorI2VuZGlmCisjaWZuZGVmIFBPV0VSUENfREFSV0lONjQKKyNkZWZpbmUgUE9XRVJQQ19EQVJXSU42NAorI2VuZGlmCiAjZWxpZiBkZWZpbmVkIChQT1dFUlBDX0FJWCkgJiYgZGVmaW5lZCAoX182NEJJVF9fKQkvKiBBSVg2NCAqLworI2lmbmRlZiBQT1dFUlBDNjQKICNkZWZpbmUgUE9XRVJQQzY0CiAjZW5kaWYKKyNlbmRpZgogCiAjaWZuZGVmIExJQkZGSV9BU00KIHR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgICAgICBmZmlfYXJnOwpAQCAtNTEsMTggKzY2LDE0IEBACiAgIEZGSV9MSU5VWDY0LAogICBGRklfTElOVVgsCiAgIEZGSV9MSU5VWF9TT0ZUX0ZMT0FULAotIyBpZmRlZiBQT1dFUlBDNjQKKyMgaWYgZGVmaW5lZChQT1dFUlBDNjQpCiAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9MSU5VWDY0LAotIyBlbHNlCi0jICBpZiAoIWRlZmluZWQoX19OT19GUFJTX18pICYmIChfX0xEQkxfTUFOVF9ESUdfXyA9PSAxMDYpKQotICBGRklfREVGQVVMVF9BQkkgPSBGRklfTElOVVgsCi0jICBlbHNlCi0jICAgaWZkZWYgX19OT19GUFJTX18KKyMgZWxpZiBkZWZpbmVkKF9fTk9fRlBSU19fKQogICBGRklfREVGQVVMVF9BQkkgPSBGRklfTElOVVhfU09GVF9GTE9BVCwKLSMgICBlbHNlCisjIGVsaWYgKF9fTERCTF9NQU5UX0RJR19fID09IDEwNikKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX0xJTlVYLAorIyBlbHNlCiAgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9HQ0NfU1lTViwKLSMgICBlbmRpZgotIyAgZW5kaWYKICMgZW5kaWYKICNlbmRpZgogCkBAIC0xMDgsOSArMTE5LDEzIEBACiAjZGVmaW5lIEZGSV9TWVNWX1RZUEVfU01BTExfU1RSVUNUIChGRklfVFlQRV9MQVNUICsgMikKIAogI2lmIGRlZmluZWQoUE9XRVJQQzY0KSB8fCBkZWZpbmVkKFBPV0VSUENfQUlYKQotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI0CisjICBpZiBkZWZpbmVkKFBPV0VSUENfREFSV0lONjQpCisjICAgIGRlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDQ4CisjICBlbHNlCisjICAgIGRlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDI0CisjICBlbmRpZgogI2Vsc2UgLyogUE9XRVJQQyB8fCBQT1dFUlBDX0FJWCAqLwotI2RlZmluZSBGRklfVFJBTVBPTElORV9TSVpFIDQwCisjICBkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSA0MAogI2VuZGlmCiAKICNpZm5kZWYgTElCRkZJX0FTTQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9wcGNfY2xvc3VyZS5TCmluZGV4IDU2ZjdkMWEuLjQxZmI4ODUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3Bvd2VycGMvcHBjX2Nsb3N1cmUuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3BwY19jbG9zdXJlLlMKQEAgLTEyMiwyMiArMTIyLDQxIEBACiAJYmxyCiAKICMgY2FzZSBGRklfVFlQRV9GTE9BVAorI2lmbmRlZiBfX05PX0ZQUlNfXwogCWxmcyAlZjEsMTEyKzAoJXIxKQogCW10bHIgJXIwCiAJYWRkaSAlcjEsJXIxLDE0NAorI2Vsc2UKKwlub3AKKwlub3AKKwlub3AKKyNlbmRpZgogCWJscgogCiAjIGNhc2UgRkZJX1RZUEVfRE9VQkxFCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJbGZkICVmMSwxMTIrMCglcjEpCiAJbXRsciAlcjAKIAlhZGRpICVyMSwlcjEsMTQ0CisjZWxzZQorCW5vcAorCW5vcAorCW5vcAorI2VuZGlmCiAJYmxyCiAKICMgY2FzZSBGRklfVFlQRV9MT05HRE9VQkxFCisjaWZuZGVmIF9fTk9fRlBSU19fCiAJbGZkICVmMSwxMTIrMCglcjEpCiAJbGZkICVmMiwxMTIrOCglcjEpCiAJbXRsciAlcjAKIAliIC5MZmluaXNoCisjZWxzZQorCW5vcAorCW5vcAorCW5vcAorCWJscgorI2VuZGlmCiAKICMgY2FzZSBGRklfVFlQRV9VSU5UOAogCWxieiAlcjMsMTEyKzMoJXIxKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcG93ZXJwYy9zeXN2LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3N5c3YuUwppbmRleCA5NmVhMjJiLi42NzVlZDAzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3N5c3YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wb3dlcnBjL3N5c3YuUwpAQCAtODMsNiArODMsNyBAQAogCW5vcAogMToKIAorI2lmbmRlZiBfX05PX0ZQUlNfXwogCS8qIExvYWQgYWxsIHRoZSBGUCByZWdpc3RlcnMuICAqLwogCWJmLQk2LDJmCiAJbGZkCSVmMSwtMTYtKDgqNCktKDgqOCkoJXIyOCkKQEAgLTk0LDYgKzk1LDcgQEAKIAlsZmQJJWY2LC0xNi0oOCo0KS0oMyo4KSglcjI4KQogCWxmZAklZjcsLTE2LSg4KjQpLSgyKjgpKCVyMjgpCiAJbGZkCSVmOCwtMTYtKDgqNCktKDEqOCkoJXIyOCkKKyNlbmRpZgogMjoKIAogCS8qIE1ha2UgdGhlIGNhbGwuICAqLwpAQCAtMTAzLDcgKzEwNSw5IEBACiAJbXRjcmYJMHgwMSwlcjMxIC8qIGNyNyAgKi8KIAlidC0JMzEsTChzbWFsbF9zdHJ1Y3RfcmV0dXJuX3ZhbHVlKQogCWJ0LQkzMCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQorI2lmbmRlZiBfX05PX0ZQUlNfXwogCWJ0LQkyOSxMKGZwX3JldHVybl92YWx1ZSkKKyNlbmRpZgogCXN0dwklcjMsMCglcjMwKQogCWJmKwkyOCxMKGRvbmVfcmV0dXJuX3ZhbHVlKQogCXN0dwklcjQsNCglcjMwKQpAQCAtMTI0LDYgKzEyOCw3IEBACiAJbHd6CSVyMSwwKCVyMSkKIAlibHIKIAorI2lmbmRlZiBfX05PX0ZQUlNfXwogTChmcF9yZXR1cm5fdmFsdWUpOgogCWJmCTI4LEwoZmxvYXRfcmV0dXJuX3ZhbHVlKQogCXN0ZmQJJWYxLDAoJXIzMCkKQEAgLTEzNCwyMSArMTM5LDE3IEBACiBMKGZsb2F0X3JldHVybl92YWx1ZSk6CiAJc3RmcwklZjEsMCglcjMwKQogCWIJTChkb25lX3JldHVybl92YWx1ZSkKKyNlbmRpZgogCiBMKHNtYWxsX3N0cnVjdF9yZXR1cm5fdmFsdWUpOgotCWV4dHJ3aQklcjYsJXIzMSwyLDE5ICAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIHBhZGRpbmcgPSBzaGlmdC84ICovCi0JbXRjcmYJMHgwMiwlcjMxCSAgICAgIC8qIGNvcHkgZmxhZ3MgdG8gY3JbMjQ6MjddIChjcjYpICovCi0JZXh0cndpCSVyNSwlcjMxLDUsMTkgICAgICAgICAvKiByNSA8LSBudW1iZXIgb2YgYml0cyBvZiBwYWRkaW5nICovCi0Jc3ViZmljICAlcjYsJXI2LDQgICAgICAgICAgICAgLyogcjYgPC0gbnVtYmVyIG9mIHVzZWZ1bCBieXRlcyBpbiByMyAqLwotCWJmLQkyNSxMKGRvbmVfcmV0dXJuX3ZhbHVlKSAvKiBzdHJ1Y3QgaW4gcjMgPyBpZiBub3QsIGRvbmUuICovCi0vKiBzbXN0X29uZV9yZWdpc3RlcjogKi8KLQlzbHcJJXIzLCVyMywlcjUgICAgICAgICAgIC8qIExlZnQtanVzdGlmeSB2YWx1ZSBpbiByMyAqLwotCW10eGVyCSVyNiAgICAgICAgICAgICAgICAgICAvKiBtb3ZlIGJ5dGUgY291bnQgdG8gWEVSIC4uLiAqLwotCXN0c3d4CSVyMywwLCVyMzAgICAgICAgICAgICAvKiAuLi4gYW5kIHN0b3JlIHRoYXQgbWFueSBieXRlcyAqLwotCWJmKwkyNixMKGRvbmVfcmV0dXJuX3ZhbHVlKSAgLyogc3RydWN0IGluIHIzOnI0ID8gKi8KLQlhZGQJJXI2LCVyNiwlcjMwICAgICAgICAgIC8qIGFkanVzdCBwb2ludGVyICovCi0Jc3Rzd2kJJXI0LCVyNiw0ICAgICAgICAgICAgIC8qIHN0b3JlIGxhc3QgZm91ciBieXRlcyAqLwotCWIJTChkb25lX3JldHVybl92YWx1ZSkKKwkvKgorCSAqIFRoZSBDIGNvZGUgYWx3YXlzIGFsbG9jYXRlcyBhIHByb3Blcmx5LWFsaWduZWQgOC1ieXRlIGJvdW5jZQorCSAqIGJ1ZmZlciB0byBtYWtlIHRoaXMgYXNzZW1ibHkgY29kZSB2ZXJ5IHNpbXBsZS4gIEp1c3Qgd3JpdGUgb3V0CisJICogcjMgYW5kIHI0IHRvIHRoZSBidWZmZXIgdG8gYWxsb3cgdGhlIEMgY29kZSB0byBoYW5kbGUgdGhlIHJlc3QuCisJICovCisJc3R3ICVyMywgMCglcjMwKQorCXN0dyAlcjQsIDQoJXIzMCkKKwliIEwoZG9uZV9yZXR1cm5fdmFsdWUpCiAKIC5MRkUxOgogRU5EKGZmaV9jYWxsX1NZU1YpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wcmVwX2NpZi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvcHJlcF9jaWYuYwppbmRleCBjMWMzYjlhLi5lYjY4MzQxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9wcmVwX2NpZi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3ByZXBfY2lmLmMKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgcHJlcF9jaWYuYyAtIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCwgMjAwNyAgUmVkIEhhdCwgSW5jLgorICAgcHJlcF9jaWYuYyAtIENvcHlyaWdodCAoYykgMjAxMSwgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCwgMjAwNyAgUmVkIEhhdCwgSW5jLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICAgIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzcsMTcgKzM4LDIxIEBACiB7CiAgIGZmaV90eXBlICoqcHRyOwogCi0gIEZGSV9BU1NFUlQoYXJnICE9IE5VTEwpOworICBpZiAoVU5MSUtFTFkoYXJnID09IE5VTEwgfHwgYXJnLT5lbGVtZW50cyA9PSBOVUxMKSkKKyAgICByZXR1cm4gRkZJX0JBRF9UWVBFREVGOwogCi0gIEZGSV9BU1NFUlQoYXJnLT5lbGVtZW50cyAhPSBOVUxMKTsKLSAgRkZJX0FTU0VSVChhcmctPnNpemUgPT0gMCk7Ci0gIEZGSV9BU1NFUlQoYXJnLT5hbGlnbm1lbnQgPT0gMCk7CisgIGFyZy0+c2l6ZSA9IDA7CisgIGFyZy0+YWxpZ25tZW50ID0gMDsKIAogICBwdHIgPSAmKGFyZy0+ZWxlbWVudHNbMF0pOwogCisgIGlmIChVTkxJS0VMWShwdHIgPT0gMCkpCisgICAgcmV0dXJuIEZGSV9CQURfVFlQRURFRjsKKwogICB3aGlsZSAoKCpwdHIpICE9IE5VTEwpCiAgICAgewotICAgICAgaWYgKCgoKnB0ciktPnNpemUgPT0gMCkgJiYgKGluaXRpYWxpemVfYWdncmVnYXRlKCgqcHRyKSkgIT0gRkZJX09LKSkKKyAgICAgIGlmIChVTkxJS0VMWSgoKCpwdHIpLT5zaXplID09IDApCisJCSAgICAmJiAoaW5pdGlhbGl6ZV9hZ2dyZWdhdGUoKCpwdHIpKSAhPSBGRklfT0spKSkKIAlyZXR1cm4gRkZJX0JBRF9UWVBFREVGOwogCiAgICAgICAvKiBQZXJmb3JtIGEgc2FuaXR5IGNoZWNrIG9uIHRoZSBhcmd1bWVudCB0eXBlICovCkBAIC04NSwxOSArOTAsMzggQEAKIC8qIFBlcmZvcm0gbWFjaGluZSBpbmRlcGVuZGVudCBmZmlfY2lmIHByZXBhcmF0aW9uLCB0aGVuIGNhbGwKICAgIG1hY2hpbmUgZGVwZW5kZW50IHJvdXRpbmUuICovCiAKLWZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKGZmaV9jaWYgKmNpZiwgZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBuYXJncywKLQkJCWZmaV90eXBlICpydHlwZSwgZmZpX3R5cGUgKiphdHlwZXMpCisvKiBGb3Igbm9uIHZhcmlhZGljIGZ1bmN0aW9ucyBpc3ZhcmlhZGljIHNob3VsZCBiZSAwIGFuZAorICAgbmZpeGVkYXJncz09bnRvdGFsYXJncy4KKworICAgRm9yIHZhcmlhZGljIGNhbGxzLCBpc3ZhcmlhZGljIHNob3VsZCBiZSAxIGFuZCBuZml4ZWRhcmdzCisgICBhbmQgbnRvdGFsYXJncyBzZXQgYXMgYXBwcm9wcmlhdGUuIG5maXhlZGFyZ3MgbXVzdCBhbHdheXMgYmUgPj0xICovCisKKworZmZpX3N0YXR1cyBGRklfSElEREVOIGZmaV9wcmVwX2NpZl9jb3JlKGZmaV9jaWYgKmNpZiwgZmZpX2FiaSBhYmksCisJCQkgICAgIHVuc2lnbmVkIGludCBpc3ZhcmlhZGljLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmZpeGVkYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG50b3RhbGFyZ3MsCisJCQkgICAgIGZmaV90eXBlICpydHlwZSwgZmZpX3R5cGUgKiphdHlwZXMpCiB7CiAgIHVuc2lnbmVkIGJ5dGVzID0gMDsKICAgdW5zaWduZWQgaW50IGk7CiAgIGZmaV90eXBlICoqcHRyOwogCiAgIEZGSV9BU1NFUlQoY2lmICE9IE5VTEwpOwotICBGRklfQVNTRVJUKChhYmkgPiBGRklfRklSU1RfQUJJKSAmJiAoYWJpIDw9IEZGSV9ERUZBVUxUX0FCSSkpOworICBGRklfQVNTRVJUKCghaXN2YXJpYWRpYykgfHwgKG5maXhlZGFyZ3MgPj0gMSkpOworICBGRklfQVNTRVJUKG5maXhlZGFyZ3MgPD0gbnRvdGFsYXJncyk7CisKKyNpZm5kZWYgWDg2X1dJTjMyCisgIGlmICghIChhYmkgPiBGRklfRklSU1RfQUJJICYmIGFiaSA8IEZGSV9MQVNUX0FCSSkpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOworI2Vsc2UKKyAgaWYgKCEgKGFiaSA+IEZGSV9GSVJTVF9BQkkgJiYgYWJpIDwgRkZJX0xBU1RfQUJJIHx8IGFiaSA9PSBGRklfVEhJU0NBTEwpKQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKKyNlbmRpZgogCiAgIGNpZi0+YWJpID0gYWJpOwogICBjaWYtPmFyZ190eXBlcyA9IGF0eXBlczsKLSAgY2lmLT5uYXJncyA9IG5hcmdzOworICBjaWYtPm5hcmdzID0gbnRvdGFsYXJnczsKICAgY2lmLT5ydHlwZSA9IHJ0eXBlOwogCiAgIGNpZi0+ZmxhZ3MgPSAwOwpAQCAtMTEwLDcgKzEzNCw3IEBACiAgIEZGSV9BU1NFUlRfVkFMSURfVFlQRShjaWYtPnJ0eXBlKTsKIAogICAvKiB4ODYsIHg4Ni02NCBhbmQgczM5MCBzdGFjayBzcGFjZSBhbGxvY2F0aW9uIGlzIGhhbmRsZWQgaW4gcHJlcF9tYWNoZGVwLiAqLwotI2lmICFkZWZpbmVkIE02OEsgJiYgIWRlZmluZWQgX19pMzg2X18gJiYgIWRlZmluZWQgX194ODZfNjRfXyAmJiAhZGVmaW5lZCBTMzkwICYmICFkZWZpbmVkIFBBCisjaWYgIWRlZmluZWQgTTY4SyAmJiAhZGVmaW5lZCBYODZfQU5ZICYmICFkZWZpbmVkIFMzOTAgJiYgIWRlZmluZWQgUEEKICAgLyogTWFrZSBzcGFjZSBmb3IgdGhlIHJldHVybiBzdHJ1Y3R1cmUgcG9pbnRlciAqLwogICBpZiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKICNpZmRlZiBTUEFSQwpAQCAtMTMxLDcgKzE1NSw3IEBACiAJIGNoZWNrIGFmdGVyIHRoZSBpbml0aWFsaXphdGlvbi4gICovCiAgICAgICBGRklfQVNTRVJUX1ZBTElEX1RZUEUoKnB0cik7CiAKLSNpZiAhZGVmaW5lZCBfX2kzODZfXyAmJiAhZGVmaW5lZCBfX3g4Nl82NF9fICYmICFkZWZpbmVkIFMzOTAgJiYgIWRlZmluZWQgUEEKKyNpZiAhZGVmaW5lZCBYODZfQU5ZICYmICFkZWZpbmVkIFMzOTAgJiYgIWRlZmluZWQgUEEKICNpZmRlZiBTUEFSQwogICAgICAgaWYgKCgoKnB0ciktPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCiAJICAgJiYgKCgqcHRyKS0+c2l6ZSA+IDE2IHx8IGNpZi0+YWJpICE9IEZGSV9WOSkpCkBAIC0xNTMsMTAgKzE3NywzMSBAQAogICBjaWYtPmJ5dGVzID0gYnl0ZXM7CiAKICAgLyogUGVyZm9ybSBtYWNoaW5lIGRlcGVuZGVudCBjaWYgcHJvY2Vzc2luZyAqLworI2lmZGVmIEZGSV9UQVJHRVRfU1BFQ0lGSUNfVkFSSUFESUMKKyAgaWYgKGlzdmFyaWFkaWMpCisJcmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwX3ZhcihjaWYsIG5maXhlZGFyZ3MsIG50b3RhbGFyZ3MpOworI2VuZGlmCisKICAgcmV0dXJuIGZmaV9wcmVwX2NpZl9tYWNoZGVwKGNpZik7CiB9CiAjZW5kaWYgLyogbm90IF9fQ1JJU19fICovCiAKK2ZmaV9zdGF0dXMgZmZpX3ByZXBfY2lmKGZmaV9jaWYgKmNpZiwgZmZpX2FiaSBhYmksIHVuc2lnbmVkIGludCBuYXJncywKKwkJCSAgICAgZmZpX3R5cGUgKnJ0eXBlLCBmZmlfdHlwZSAqKmF0eXBlcykKK3sKKyAgcmV0dXJuIGZmaV9wcmVwX2NpZl9jb3JlKGNpZiwgYWJpLCAwLCBuYXJncywgbmFyZ3MsIHJ0eXBlLCBhdHlwZXMpOworfQorCitmZmlfc3RhdHVzIGZmaV9wcmVwX2NpZl92YXIoZmZpX2NpZiAqY2lmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZmaV9hYmkgYWJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBuZml4ZWRhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBudG90YWxhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZmaV90eXBlICpydHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmlfdHlwZSAqKmF0eXBlcykKK3sKKyAgcmV0dXJuIGZmaV9wcmVwX2NpZl9jb3JlKGNpZiwgYWJpLCAxLCBuZml4ZWRhcmdzLCBudG90YWxhcmdzLCBydHlwZSwgYXR5cGVzKTsKK30KKwogI2lmIEZGSV9DTE9TVVJFUwogCiBmZmlfc3RhdHVzCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zMzkwL2ZmaXRhcmdldC5oIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvczM5MC9mZml0YXJnZXQuaAppbmRleCA3OGYzYzY1Li45N2ZhNWM0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zMzkwL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3MzOTAvZmZpdGFyZ2V0LmgKQEAgLTEsNSArMSw2IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSotQy0qLQotICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgUzM5MC4KIAogICAgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCkBAIC0yNyw5ICsyOCwxNSBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogI2lmIGRlZmluZWQgKF9fczM5MHhfXykKKyNpZm5kZWYgUzM5MFgKICNkZWZpbmUgUzM5MFgKICNlbmRpZgorI2VuZGlmCiAKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTQwLDggKzQ3LDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2gvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZmkuYwppbmRleCA2OWJkMDI1Li4zNTE1YjkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZmkuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBLYXogS29qaW1hCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAwMi0yMDA4LCAyMDEyIEtheiBLb2ppbWEKICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4IFJlZCBIYXQsIEluYy4KICAgIAogICAgU3VwZXJIIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlIApAQCAtNDYzLDcgKzQ2Myw4IEBACiAgIHVuc2lnbmVkIGludCAqdHJhbXA7CiAgIHVuc2lnbmVkIGludCBpbnNuOwogCi0gIEZGSV9BU1NFUlQgKGNpZi0+YWJpID09IEZGSV9HQ0NfU1lTVik7CisgIGlmIChjaWYtPmFiaSAhPSBGRklfU1lTVikKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAKICAgdHJhbXAgPSAodW5zaWduZWQgaW50ICopICZjbG9zdXJlLT50cmFtcFswXTsKICAgLyogU2V0IFQgYml0IGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGEgc3RydWN0IHBvaW50ZWQgd2l0aCBSMi4gICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaC9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaXRhcmdldC5oCmluZGV4IDIxOGFlM2QuLmEzNmJmNDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KICAgIFRhcmdldCBjb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgU3VwZXJILgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIEdlbmVyaWMgdHlwZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM2LDggKzQxLDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpLmMKaW5kZXggOGZiYzA1Yy4uMTIzYjg3YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaS5jCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0LCAyMDA2LCAyMDA3IEtheiBLb2ppbWEKKyAgIGZmaS5jIC0gQ29weXJpZ2h0IChjKSAyMDAzLCAyMDA0LCAyMDA2LCAyMDA3LCAyMDEyIEtheiBLb2ppbWEKICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDA4IEFudGhvbnkgR3JlZW4KICAgIAogICAgU3VwZXJIIFNIbWVkaWEgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCkBAIC0zMDIsNyArMzAyLDggQEAKIHsKICAgdW5zaWduZWQgaW50ICp0cmFtcDsKIAotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfR0NDX1NZU1YpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpCisgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogCiAgIHRyYW1wID0gKHVuc2lnbmVkIGludCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAgIC8qIFNpbmNlIGZmaV9jbG9zdXJlIGlzIGFuIGFsaWduZWQgb2JqZWN0LCB0aGUgZmZpIHRyYW1wb2xpbmUgaXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zaDY0L2ZmaXRhcmdldC5oCmluZGV4IDRlOTIyZmMuLjA4YTZmZTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NoNjQvZmZpdGFyZ2V0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc2g2NC9mZml0YXJnZXQuaApAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCisgICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMjAxMiAgQW50aG9ueSBHcmVlbgorICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDE5OTYtMjAwMyAgUmVkIEhhdCwgSW5jLgogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciBTdXBlckggLSBTSG1lZGlhLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDYgKzI4LDEwIEBACiAjaWZuZGVmIExJQkZGSV9UQVJHRVRfSAogI2RlZmluZSBMSUJGRklfVEFSR0VUX0gKIAorI2lmbmRlZiBMSUJGRklfSAorI2Vycm9yICJQbGVhc2UgZG8gbm90IGluY2x1ZGUgZmZpdGFyZ2V0LmggZGlyZWN0bHkgaW50byB5b3VyIHNvdXJjZS4gIFVzZSBmZmkuaCBpbnN0ZWFkLiIKKyNlbmRpZgorCiAvKiAtLS0tIEdlbmVyaWMgdHlwZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAjaWZuZGVmIExJQkZGSV9BU00KQEAgLTM2LDggKzQxLDggQEAKIHR5cGVkZWYgZW51bSBmZmlfYWJpIHsKICAgRkZJX0ZJUlNUX0FCSSA9IDAsCiAgIEZGSV9TWVNWLAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWCiB9IGZmaV9hYmk7CiAKICNkZWZpbmUgRkZJX0VYVFJBX0NJRl9GSUVMRFMgbG9uZyBsb25nIGZsYWdzMgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvZmZpLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZmkuYwppbmRleCAxZDAxZjU5Li4xYWM1ZDQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZmkuYwpAQCAtMSw1ICsxLDYgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICBmZmkuYyAtIENvcHlyaWdodCAoYykgMTk5NiwgMjAwMywgMjAwNCwgMjAwNywgMjAwOCBSZWQgSGF0LCBJbmMuCisgICBmZmkuYyAtIENvcHlyaWdodCAoYykgMjAxMSBBbnRob255IEdyZWVuCisgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5NiwgMjAwMy0yMDA0LCAyMDA3LTIwMDggUmVkIEhhdCwgSW5jLgogICAgCiAgICBTUEFSQyBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZSAKIApAQCAtNDA2LDggKzQwNyw1MCBAQAogICAgICAgLyogV2UgZG9uJ3QgeWV0IHN1cHBvcnQgY2FsbGluZyAzMmJpdCBjb2RlIGZyb20gNjRiaXQgKi8KICAgICAgIEZGSV9BU1NFUlQoMCk7CiAjZWxzZQotICAgICAgZmZpX2NhbGxfdjgoZmZpX3ByZXBfYXJnc192OCwgJmVjaWYsIGNpZi0+Ynl0ZXMsIAotCQkgIGNpZi0+ZmxhZ3MsIHJ2YWx1ZSwgZm4pOworICAgICAgaWYgKHJ2YWx1ZSAmJiAoY2lmLT5ydHlwZS0+dHlwZSA9PSBGRklfVFlQRV9TVFJVQ1QKKyNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQorCSAgfHwgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9MT05HRE9VQkxFCisjZW5kaWYKKwkgICkpCisJeworCSAgLyogRm9yIHY4LCB3ZSBuZWVkIGFuICJ1bmltcCIgd2l0aCBzaXplIG9mIHJldHVybmluZyBzdHJ1Y3QgKi8KKwkgIC8qIGJlaGluZCAiY2FsbCIsIHNvIHdlIGFsbG9jIHNvbWUgZXhlY3V0YWJsZSBzcGFjZSBmb3IgaXQuICovCisJICAvKiBsNyBpcyB1c2VkLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB2OC5TIGRvZXNuJ3QgdXNlICVsNy4gICAqLworCSAgdW5zaWduZWQgaW50ICpjYWxsX3N0cnVjdCA9IE5VTEw7CisJICBmZmlfY2xvc3VyZV9hbGxvYygzMiwgJmNhbGxfc3RydWN0KTsKKwkgIGlmIChjYWxsX3N0cnVjdCkKKwkgICAgeworCSAgICAgIHVuc2lnbmVkIGxvbmcgZiA9ICh1bnNpZ25lZCBsb25nKWZuOworCSAgICAgIGNhbGxfc3RydWN0WzBdID0gMHhhZTEwMDAxZjsJCSAvKiBtb3YgICAlaTcsICVsNwkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFsxXSA9IDB4YmUxMDAwMGY7CQkgLyogbW92ICAgJW83LCAlaTcJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbMl0gPSAweDAzMDAwMDAwIHwgZiA+PiAxMDsgICAgIC8qIHNldGhpICVoaShmbiksICVnMQkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFszXSA9IDB4OWZjMDYwMDAgfCAoZiAmIDB4M2ZmKTsgLyogam1wICVnMSslbG8oZm4pLCAlbzcgKi8KKwkgICAgICBjYWxsX3N0cnVjdFs0XSA9IDB4MDEwMDAwMDA7CQkgLyogbm9wCQkJICovCisJICAgICAgaWYgKGNpZi0+cnR5cGUtPnNpemUgPCAweDdmKQorCQljYWxsX3N0cnVjdFs1XSA9IGNpZi0+cnR5cGUtPnNpemU7CSAvKiB1bmltcAkJICovCisJICAgICAgZWxzZQorCQljYWxsX3N0cnVjdFs1XSA9IDB4MDEwMDAwMDA7CSAgICAgCSAvKiBub3AJCQkgKi8KKwkgICAgICBjYWxsX3N0cnVjdFs2XSA9IDB4ODFjN2UwMDg7CQkgLyogcmV0CQkJICovCisJICAgICAgY2FsbF9zdHJ1Y3RbN10gPSAweGJlMTAwMDE3OwkJIC8qIG1vdiAgICVsNywgJWk3CSAqLworCSAgICAgIGFzbSB2b2xhdGlsZSAoImlmbHVzaCAlMDsgaWZsdXNoICUwKzg7IGlmbHVzaCAlMCsxNjsgaWZsdXNoICUwKzI0IiA6IDoKKwkJCSAgICAiciIgKGNhbGxfc3RydWN0KSA6ICJtZW1vcnkiKTsKKwkgICAgICAvKiBTUEFSQyB2OCByZXF1aXJlcyA1IGluc3RydWN0aW9ucyBmb3IgZmx1c2ggdG8gYmUgdmlzaWJsZSAqLworCSAgICAgIGFzbSB2b2xhdGlsZSAoIm5vcDsgbm9wOyBub3A7IG5vcDsgbm9wIik7CisJICAgICAgZmZpX2NhbGxfdjgoZmZpX3ByZXBfYXJnc192OCwgJmVjaWYsIGNpZi0+Ynl0ZXMsCisJCQkgIGNpZi0+ZmxhZ3MsIHJ2YWx1ZSwgY2FsbF9zdHJ1Y3QpOworCSAgICAgIGZmaV9jbG9zdXJlX2ZyZWUoY2FsbF9zdHJ1Y3QpOworCSAgICB9CisJICBlbHNlCisJICAgIHsKKwkgICAgICBmZmlfY2FsbF92OChmZmlfcHJlcF9hcmdzX3Y4LCAmZWNpZiwgY2lmLT5ieXRlcywKKwkJCSAgY2lmLT5mbGFncywgcnZhbHVlLCBmbik7CisJICAgIH0KKwl9CisgICAgICBlbHNlCisJeworCSAgZmZpX2NhbGxfdjgoZmZpX3ByZXBfYXJnc192OCwgJmVjaWYsIGNpZi0+Ynl0ZXMsCisJCSAgICAgIGNpZi0+ZmxhZ3MsIHJ2YWx1ZSwgZm4pOworCX0KICNlbmRpZgogICAgICAgYnJlYWs7CiAgICAgY2FzZSBGRklfVjk6CkBAIC00MjUsNyArNDY4LDYgQEAKICAgICAgIEZGSV9BU1NFUlQoMCk7CiAgICAgICBicmVhazsKICAgICB9Ci0KIH0KIAogCkBAIC00NDcsNyArNDg5LDggQEAKICNpZmRlZiBTUEFSQzY0CiAgIC8qIFRyYW1wb2xpbmUgYWRkcmVzcyBpcyBlcXVhbCB0byB0aGUgY2xvc3VyZSBhZGRyZXNzLiAgV2UgdGFrZSBhZHZhbnRhZ2UKICAgICAgb2YgdGhhdCB0byByZWR1Y2UgdGhlIHRyYW1wb2xpbmUgc2l6ZSBieSA4IGJ5dGVzLiAqLwotICBGRklfQVNTRVJUIChjaWYtPmFiaSA9PSBGRklfVjkpOworICBpZiAoY2lmLT5hYmkgIT0gRkZJX1Y5KQorICAgIHJldHVybiBGRklfQkFEX0FCSTsKICAgZm4gPSAodW5zaWduZWQgbG9uZykgZmZpX2Nsb3N1cmVfdjk7CiAgIHRyYW1wWzBdID0gMHg4MzQxNDAwMDsJLyogcmQJJXBjLCAlZzEJKi8KICAgdHJhbXBbMV0gPSAweGNhNTg2MDEwOwkvKiBsZHgJWyVnMSsxNl0sICVnNQkqLwpAQCAtNDU2LDcgKzQ5OSw4IEBACiAgICooKHVuc2lnbmVkIGxvbmcgKikgJnRyYW1wWzRdKSA9IGZuOwogI2Vsc2UKICAgdW5zaWduZWQgbG9uZyBjdHggPSAodW5zaWduZWQgbG9uZykgY29kZWxvYzsKLSAgRkZJX0FTU0VSVCAoY2lmLT5hYmkgPT0gRkZJX1Y4KTsKKyAgaWYgKGNpZi0+YWJpICE9IEZGSV9WOCkKKyAgICByZXR1cm4gRkZJX0JBRF9BQkk7CiAgIGZuID0gKHVuc2lnbmVkIGxvbmcpIGZmaV9jbG9zdXJlX3Y4OwogICB0cmFtcFswXSA9IDB4MDMwMDAwMDAgfCBmbiA+PiAxMDsJLyogc2V0aGkgJWhpKGZuKSwgJWcxCSovCiAgIHRyYW1wWzFdID0gMHgwNTAwMDAwMCB8IGN0eCA+PiAxMDsJLyogc2V0aGkgJWhpKGN0eCksICVnMgkqLwpAQCAtNDY4LDEzICs1MTIsMTMgQEAKICAgY2xvc3VyZS0+ZnVuID0gZnVuOwogICBjbG9zdXJlLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CiAKLSAgLyogRmx1c2ggdGhlIEljYWNoZS4gIEZJWE1FOiBhbGlnbm1lbnQgaXNuJ3QgY2VydGFpbiwgYXNzdW1lIDggYnl0ZXMgKi8KKyAgLyogRmx1c2ggdGhlIEljYWNoZS4gIGNsb3N1cmUgaXMgOCBieXRlcyBhbGlnbmVkLiAgKi8KICNpZmRlZiBTUEFSQzY0Ci0gIGFzbSB2b2xhdGlsZSAoImZsdXNoCSUwIiA6IDogInIiIChjbG9zdXJlKSA6ICJtZW1vcnkiKTsKLSAgYXNtIHZvbGF0aWxlICgiZmx1c2gJJTAiIDogOiAiciIgKCgoY2hhciAqKSBjbG9zdXJlKSArIDgpIDogIm1lbW9yeSIpOworICBhc20gdm9sYXRpbGUgKCJmbHVzaAklMDsgZmx1c2ggJTArOCIgOiA6ICJyIiAoY2xvc3VyZSkgOiAibWVtb3J5Iik7CiAjZWxzZQotICBhc20gdm9sYXRpbGUgKCJpZmx1c2gJJTAiIDogOiAiciIgKGNsb3N1cmUpIDogIm1lbW9yeSIpOwotICBhc20gdm9sYXRpbGUgKCJpZmx1c2gJJTAiIDogOiAiciIgKCgoY2hhciAqKSBjbG9zdXJlKSArIDgpIDogIm1lbW9yeSIpOworICBhc20gdm9sYXRpbGUgKCJpZmx1c2gJJTA7IGlmbHVzaCAlMCs4IiA6IDogInIiIChjbG9zdXJlKSA6ICJtZW1vcnkiKTsKKyAgLyogU1BBUkMgdjggcmVxdWlyZXMgNSBpbnN0cnVjdGlvbnMgZm9yIGZsdXNoIHRvIGJlIHZpc2libGUgKi8KKyAgYXNtIHZvbGF0aWxlICgibm9wOyBub3A7IG5vcDsgbm9wOyBub3AiKTsKICNlbmRpZgogCiAgIHJldHVybiBGRklfT0s7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy9mZml0YXJnZXQuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaXRhcmdldC5oCmluZGV4IDFhMWExYWMuLmQ4OWY3ODcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL2ZmaXRhcmdldC5oCkBAIC0xLDUgKzEsNiBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLUMtKi0KLSAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMgIFJlZCBIYXQsIEluYy4KKyAgIGZmaXRhcmdldC5oIC0gQ29weXJpZ2h0IChjKSAyMDEyICBBbnRob255IEdyZWVuCisgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzICBSZWQgSGF0LCBJbmMuCiAgICBUYXJnZXQgY29uZmlndXJhdGlvbiBtYWNyb3MgZm9yIFNQQVJDLgogCiAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKQEAgLTI3LDExICsyOCwxNyBAQAogI2lmbmRlZiBMSUJGRklfVEFSR0VUX0gKICNkZWZpbmUgTElCRkZJX1RBUkdFVF9ICiAKKyNpZm5kZWYgTElCRkZJX0gKKyNlcnJvciAiUGxlYXNlIGRvIG5vdCBpbmNsdWRlIGZmaXRhcmdldC5oIGRpcmVjdGx5IGludG8geW91ciBzb3VyY2UuICBVc2UgZmZpLmggaW5zdGVhZC4iCisjZW5kaWYKKwogLyogLS0tLSBTeXN0ZW0gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2lmIGRlZmluZWQoX19hcmNoNjRfXykgfHwgZGVmaW5lZChfX3NwYXJjdjkpCisjaWZuZGVmIFNQQVJDNjQKICNkZWZpbmUgU1BBUkM2NAogI2VuZGlmCisjZW5kaWYKIAogI2lmbmRlZiBMSUJGRklfQVNNCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgZmZpX2FyZzsKQEAgLTQyLDEyICs0OSwxMiBAQAogICBGRklfVjgsCiAgIEZGSV9WOFBMVVMsCiAgIEZGSV9WOSwKKyAgRkZJX0xBU1RfQUJJLAogI2lmZGVmIFNQQVJDNjQKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1Y5LAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfVjkKICNlbHNlCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9WOCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1Y4CiAjZW5kaWYKLSAgRkZJX0xBU1RfQUJJID0gRkZJX0RFRkFVTFRfQUJJICsgMQogfSBmZmlfYWJpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL3Y5LlMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9zcGFyYy92OS5TCmluZGV4IDQ4OWZmMDIuLmJmMzFhMmIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3NwYXJjL3Y5LlMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMvc3BhcmMvdjkuUwpAQCAtMzIsNyArMzIsNyBAQAogLyogT25seSBjb21waWxlIHRoaXMgaW4gZm9yIDY0Yml0IGJ1aWxkcywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIG9iamVjdCBmaWxlCiAgICB3aWxsIGhhdmUgaW5wcm9wZXIgYXJjaGl0ZWN0dXJlIGR1ZSB0byB1c2VkIGluc3RydWN0aW9ucy4gICovCiAKLSNkZWZpbmUgU1RBQ0tGUkFNRSAxMjgJCS8qIE1pbmltdW0gc3RhY2sgZnJhbWVzaXplIGZvciBTUEFSQyAqLworI2RlZmluZSBTVEFDS0ZSQU1FIDE3NgkJLyogTWluaW11bSBzdGFjayBmcmFtZXNpemUgZm9yIFNQQVJDIDY0LWJpdCAqLwogI2RlZmluZSBTVEFDS19CSUFTIDIwNDcKICNkZWZpbmUgQVJHUyAoMTI4KQkJLyogT2Zmc2V0IG9mIHJlZ2lzdGVyIGFyZWEgaW4gZnJhbWUgKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaS5jCmluZGV4IDgwNDk2NTMuLjYxMWUyMjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpLmMKQEAgLTMsNyArMyw3IEBACiAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAwMiAgUmFuaml0IE1hdGhldwogICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDIgIEJvIFRob3JzZW4KICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAyICBSb2dlciBTYXlsZQotICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgICAgICAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiAgICB4ODYgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UKIApAQCAtNDgsMTAgKzQ4LDE4IEBACiAgIHJlZ2lzdGVyIHZvaWQgKipwX2FyZ3Y7CiAgIHJlZ2lzdGVyIGNoYXIgKmFyZ3A7CiAgIHJlZ2lzdGVyIGZmaV90eXBlICoqcF9hcmc7CisjaWZkZWYgWDg2X1dJTjMyCisgIHNpemVfdCBwX3N0YWNrX2FyZ3NbMl07CisgIHZvaWQgKnBfc3RhY2tfZGF0YVsyXTsKKyAgY2hhciAqYXJncDIgPSBzdGFjazsKKyAgaW50IHN0YWNrX2FyZ3NfY291bnQgPSAwOworICBpbnQgY2FiaSA9IGVjaWYtPmNpZi0+YWJpOworI2VuZGlmCiAKICAgYXJncCA9IHN0YWNrOwogCi0gIGlmIChlY2lmLT5jaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICBpZiAoKGVjaWYtPmNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgICAgICAgfHwgZWNpZi0+Y2lmLT5mbGFncyA9PSBGRklfVFlQRV9NU19TVFJVQ1QpCiAjaWZkZWYgWDg2X1dJTjY0CiAgICAgICAmJiAoZWNpZi0+Y2lmLT5ydHlwZS0+c2l6ZSAhPSAxICYmIGVjaWYtPmNpZi0+cnR5cGUtPnNpemUgIT0gMgogICAgICAgICAgICYmIGVjaWYtPmNpZi0+cnR5cGUtPnNpemUgIT0gNCAmJiBlY2lmLT5jaWYtPnJ0eXBlLT5zaXplICE9IDgpCkBAIC01OSw2ICs2NywxNiBAQAogICAgICAgKQogICAgIHsKICAgICAgICoodm9pZCAqKikgYXJncCA9IGVjaWYtPnJ2YWx1ZTsKKyNpZmRlZiBYODZfV0lOMzIKKyAgICAgIC8qIEZvciBmYXN0Y2FsbC90aGlzY2FsbCB0aGlzIGlzIGZpcnN0IHJlZ2lzdGVyLXBhc3NlZAorICAgICAgICAgYXJndW1lbnQuICAqLworICAgICAgaWYgKGNhYmkgPT0gRkZJX1RISVNDQUxMIHx8IGNhYmkgPT0gRkZJX0ZBU1RDQUxMKQorCXsKKwkgIHBfc3RhY2tfYXJnc1tzdGFja19hcmdzX2NvdW50XSA9IHNpemVvZiAodm9pZCopOworCSAgcF9zdGFja19kYXRhW3N0YWNrX2FyZ3NfY291bnRdID0gYXJncDsKKwkgICsrc3RhY2tfYXJnc19jb3VudDsKKwl9CisjZW5kaWYKICAgICAgIGFyZ3AgKz0gc2l6ZW9mKHZvaWQqKTsKICAgICB9CiAKQEAgLTEzNCw2ICsxNTIsMjQgQEAKICAgICAgICAgewogICAgICAgICAgIG1lbWNweShhcmdwLCAqcF9hcmd2LCB6KTsKICAgICAgICAgfQorCisjaWZkZWYgWDg2X1dJTjMyCisgICAgLyogRm9yIHRoaXNjYWxsL2Zhc3RjYWxsIGNvbnZlbnRpb24gcmVnaXN0ZXItcGFzc2VkIGFyZ3VtZW50cworICAgICAgIGFyZSB0aGUgZmlyc3QgdHdvIG5vbmUtZmxvYXRpbmctcG9pbnQgYXJndW1lbnRzIHdpdGggYSBzaXplCisgICAgICAgc21hbGxlciBvciBlcXVhbCB0byBzaXplb2YgKHZvaWQqKS4gICovCisgICAgaWYgKChjYWJpID09IEZGSV9USElTQ0FMTCAmJiBzdGFja19hcmdzX2NvdW50IDwgMSkKKyAgICAgICAgfHwgKGNhYmkgPT0gRkZJX0ZBU1RDQUxMICYmIHN0YWNrX2FyZ3NfY291bnQgPCAyKSkKKyAgICAgIHsKKwlpZiAoeiA8PSA0CisJICAgICYmICgoKnBfYXJnKS0+dHlwZSAhPSBGRklfVFlQRV9GTE9BVAorCSAgICAgICAgJiYgKCpwX2FyZyktPnR5cGUgIT0gRkZJX1RZUEVfU1RSVUNUKSkKKwkgIHsKKwkgICAgcF9zdGFja19hcmdzW3N0YWNrX2FyZ3NfY291bnRdID0gejsKKwkgICAgcF9zdGFja19kYXRhW3N0YWNrX2FyZ3NfY291bnRdID0gYXJncDsKKwkgICAgKytzdGFja19hcmdzX2NvdW50OworCSAgfQorICAgICAgfQorI2VuZGlmCiAgICAgICBwX2FyZ3YrKzsKICNpZmRlZiBYODZfV0lONjQKICAgICAgIGFyZ3AgKz0gKHogKyBzaXplb2Yodm9pZCopIC0gMSkgJiB+KHNpemVvZih2b2lkKikgLSAxKTsKQEAgLTE0MSw3ICsxNzcsNDUgQEAKICAgICAgIGFyZ3AgKz0gejsKICNlbmRpZgogICAgIH0KLSAgCisKKyNpZmRlZiBYODZfV0lOMzIKKyAgLyogV2UgbmVlZCB0byBtb3ZlIHRoZSByZWdpc3Rlci1wYXNzZWQgYXJndW1lbnRzIGZvciB0aGlzY2FsbC9mYXN0Y2FsbAorICAgICBvbiB0b3Agb2Ygc3RhY2ssIHNvIHRoYXQgdGhvc2UgY2FuIGJlIG1vdmVkIHRvIHJlZ2lzdGVycyBlY3gvZWR4IGJ5CisgICAgIGNhbGwtaGFuZGxlci4gICovCisgIGlmIChzdGFja19hcmdzX2NvdW50ID4gMCkKKyAgICB7CisgICAgICBzaXplX3QgenogPSAocF9zdGFja19hcmdzWzBdICsgMykgJiB+MzsKKyAgICAgIGNoYXIgKmg7CisKKyAgICAgIC8qIE1vdmUgZmlyc3QgYXJndW1lbnQgdG8gdG9wLXN0YWNrIHBvc2l0aW9uLiAgKi8KKyAgICAgIGlmIChwX3N0YWNrX2RhdGFbMF0gIT0gYXJncDIpCisJeworCSAgaCA9IGFsbG9jYSAoenogKyAxKTsKKwkgIG1lbWNweSAoaCwgcF9zdGFja19kYXRhWzBdLCB6eik7CisJICBtZW1tb3ZlIChhcmdwMiArIHp6LCBhcmdwMiwKKwkgICAgICAgICAgIChzaXplX3QpICgoY2hhciAqKSBwX3N0YWNrX2RhdGFbMF0gLSAoY2hhciopYXJncDIpKTsKKwkgIG1lbWNweSAoYXJncDIsIGgsIHp6KTsKKwl9CisKKyAgICAgIGFyZ3AyICs9IHp6OworICAgICAgLS1zdGFja19hcmdzX2NvdW50OworICAgICAgaWYgKHp6ID4gNCkKKwlzdGFja19hcmdzX2NvdW50ID0gMDsKKworICAgICAgLyogSWYgd2UgaGF2ZSBhIHNlY29uZCBhcmd1bWVudCwgdGhlbiBtb3ZlIGl0IG9uIHRvcAorICAgICAgICAgYWZ0ZXIgdGhlIGZpcnN0IG9uZS4gICovCisgICAgICBpZiAoc3RhY2tfYXJnc19jb3VudCA+IDAgJiYgcF9zdGFja19kYXRhWzFdICE9IGFyZ3AyKQorCXsKKwkgIHp6ID0gcF9zdGFja19hcmdzWzFdOworCSAgenogPSAoenogKyAzKSAmIH4zOworCSAgaCA9IGFsbG9jYSAoenogKyAxKTsKKwkgIGggPSBhbGxvY2EgKHp6ICsgMSk7CisJICBtZW1jcHkgKGgsIHBfc3RhY2tfZGF0YVsxXSwgenopOworCSAgbWVtbW92ZSAoYXJncDIgKyB6eiwgYXJncDIsIChzaXplX3QpICgoY2hhciopIHBfc3RhY2tfZGF0YVsxXSAtIChjaGFyKilhcmdwMikpOworCSAgbWVtY3B5IChhcmdwMiwgaCwgenopOworCX0KKyAgICB9CisjZW5kaWYKICAgcmV0dXJuOwogfQogCkBAIC0xNTUsMTIgKzIyOSwxMCBAQAogICBzd2l0Y2ggKGNpZi0+cnR5cGUtPnR5cGUpCiAgICAgewogICAgIGNhc2UgRkZJX1RZUEVfVk9JRDoKLSNpZiBkZWZpbmVkKFg4NikgfHwgZGVmaW5lZCAoWDg2X1dJTjMyKSB8fCBkZWZpbmVkKFg4Nl9GUkVFQlNEKSB8fCBkZWZpbmVkKFg4Nl9EQVJXSU4pIHx8IGRlZmluZWQoWDg2X1dJTjY0KQogICAgIGNhc2UgRkZJX1RZUEVfVUlOVDg6CiAgICAgY2FzZSBGRklfVFlQRV9VSU5UMTY6CiAgICAgY2FzZSBGRklfVFlQRV9TSU5UODoKICAgICBjYXNlIEZGSV9UWVBFX1NJTlQxNjoKLSNlbmRpZgogI2lmZGVmIFg4Nl9XSU42NAogICAgIGNhc2UgRkZJX1RZUEVfVUlOVDMyOgogICAgIGNhc2UgRkZJX1RZUEVfU0lOVDMyOgpAQCAtMjA4LDggKzI4MCwxMyBAQAogICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgIHsKLSAgICAgICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfU1RSVUNUOwotICAgICAgICAgIC8vIGFsbG9jYXRlIHNwYWNlIGZvciByZXR1cm4gdmFsdWUgcG9pbnRlcgorI2lmZGVmIFg4Nl9XSU4zMgorICAgICAgICAgIGlmIChjaWYtPmFiaSA9PSBGRklfTVNfQ0RFQ0wpCisgICAgICAgICAgICBjaWYtPmZsYWdzID0gRkZJX1RZUEVfTVNfU1RSVUNUOworICAgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgY2lmLT5mbGFncyA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgICAgICAgICAvKiBhbGxvY2F0ZSBzcGFjZSBmb3IgcmV0dXJuIHZhbHVlIHBvaW50ZXIgKi8KICAgICAgICAgICBjaWYtPmJ5dGVzICs9IEFMSUdOKHNpemVvZih2b2lkKiksIEZGSV9TSVpFT0ZfQVJHKTsKICAgICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0yMzQsNyArMzExLDcgQEAKICAgICB9CiAKICNpZmRlZiBYODZfV0lONjQKLSAgLy8gZW5zdXJlIHNwYWNlIGZvciBzdG9yaW5nIGZvdXIgcmVnaXN0ZXJzCisgIC8qIGVuc3VyZSBzcGFjZSBmb3Igc3RvcmluZyBmb3VyIHJlZ2lzdGVycyAqLwogICBjaWYtPmJ5dGVzICs9IDQgKiBzaXplb2YoZmZpX2FyZyk7CiAjZW5kaWYKIApAQCAtMjUyLDcgKzMyOSw3IEBACiAjZWxpZiBkZWZpbmVkKFg4Nl9XSU4zMikKIGV4dGVybiB2b2lkCiBmZmlfY2FsbF93aW4zMih2b2lkICgqKShjaGFyICosIGV4dGVuZGVkX2NpZiAqKSwgZXh0ZW5kZWRfY2lmICosCi0gICAgICAgICAgICAgICB1bnNpZ25lZCwgdW5zaWduZWQsIHVuc2lnbmVkICosIHZvaWQgKCpmbikodm9pZCkpOworICAgICAgICAgICAgICAgdW5zaWduZWQsIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgdm9pZCAoKmZuKSh2b2lkKSk7CiAjZWxzZQogZXh0ZXJuIHZvaWQgZmZpX2NhbGxfU1lTVih2b2lkICgqKShjaGFyICosIGV4dGVuZGVkX2NpZiAqKSwgZXh0ZW5kZWRfY2lmICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkLCB1bnNpZ25lZCwgdW5zaWduZWQgKiwgdm9pZCAoKmZuKSh2b2lkKSk7CkBAIC0yNzgsNyArMzU1LDggQEAKICAgICB9CiAjZWxzZQogICBpZiAocnZhbHVlID09IE5VTEwKLSAgICAgICYmIGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUKQorICAgICAgJiYgKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgICAgICAgICAgfHwgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9NU19TVFJVQ1QpKQogICAgIHsKICAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKGNpZi0+cnR5cGUtPnNpemUpOwogICAgIH0KQEAgLTI5MSwzMyArMzY5LDQ0IEBACiAgICAgewogI2lmZGVmIFg4Nl9XSU42NAogICAgIGNhc2UgRkZJX1dJTjY0OgotICAgICAgewotICAgICAgICAvLyBNYWtlIGNvcGllcyBvZiBhbGwgc3RydWN0IGFyZ3VtZW50cwotICAgICAgICAvLyBOT1RFOiBub3Qgc3VyZSBpZiByZXNwb25zaWJpbGl0eSBzaG91bGQgYmUgaGVyZSBvciBpbiBjYWxsZXIKLSAgICAgICAgdW5zaWduZWQgaW50IGk7Ci0gICAgICAgIGZvciAoaT0wOyBpIDwgY2lmLT5uYXJncztpKyspIHsKLSAgICAgICAgICBzaXplX3Qgc2l6ZSA9IGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplOwotICAgICAgICAgIGlmICgoY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUCi0gICAgICAgICAgICAgICAmJiAoc2l6ZSAhPSAxICYmIHNpemUgIT0gMiAmJiBzaXplICE9IDQgJiYgc2l6ZSAhPSA4KSkKLSNpZiBGRklfVFlQRV9MT05HRE9VQkxFICE9IEZGSV9UWVBFX0RPVUJMRQotICAgICAgICAgICAgICB8fCBjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9MT05HRE9VQkxFCi0jZW5kaWYKLSAgICAgICAgICAgICAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICB2b2lkICpsb2NhbCA9IGFsbG9jYShzaXplKTsKLSAgICAgICAgICAgICAgbWVtY3B5KGxvY2FsLCBhdmFsdWVbaV0sIHNpemUpOwotICAgICAgICAgICAgICBhdmFsdWVbaV0gPSBsb2NhbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBmZmlfY2FsbF93aW42NChmZmlfcHJlcF9hcmdzLCAmZWNpZiwgY2lmLT5ieXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuKTsKLSAgICAgIH0KKyAgICAgIGZmaV9jYWxsX3dpbjY0KGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBjaWYtPmJ5dGVzLAorICAgICAgICAgICAgICAgICAgICAgY2lmLT5mbGFncywgZWNpZi5ydmFsdWUsIGZuKTsKICAgICAgIGJyZWFrOwogI2VsaWYgZGVmaW5lZChYODZfV0lOMzIpCiAgICAgY2FzZSBGRklfU1lTVjoKICAgICBjYXNlIEZGSV9TVERDQUxMOgotICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgIGNhc2UgRkZJX01TX0NERUNMOgorICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+YWJpLCBjaWYtPmJ5dGVzLCBjaWYtPmZsYWdzLAorCQkgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIEZGSV9USElTQ0FMTDoKKyAgICBjYXNlIEZGSV9GQVNUQ0FMTDoKKyAgICAgIHsKKwl1bnNpZ25lZCBpbnQgYWJpID0gY2lmLT5hYmk7CisJdW5zaWduZWQgaW50IGksIHBhc3NlZF9yZWdzID0gMDsKKworCWlmIChjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCkKKwkgICsrcGFzc2VkX3JlZ3M7CisKKwlmb3IgKGk9MDsgaSA8IGNpZi0+bmFyZ3MgJiYgcGFzc2VkX3JlZ3MgPCAyO2krKykKKwkgIHsKKwkgICAgc2l6ZV90IHN6OworCisJICAgIGlmIChjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSA9PSBGRklfVFlQRV9GTE9BVAorCSAgICAgICAgfHwgY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfU1RSVUNUKQorCSAgICAgIGNvbnRpbnVlOworCSAgICBzeiA9IChjaWYtPmFyZ190eXBlc1tpXS0+c2l6ZSArIDMpICYgfjM7CisJICAgIGlmIChzeiA9PSAwIHx8IHN6ID4gNCkKKwkgICAgICBjb250aW51ZTsKKwkgICAgKytwYXNzZWRfcmVnczsKKwkgIH0KKwlpZiAocGFzc2VkX3JlZ3MgPCAyICYmIGFiaSA9PSBGRklfRkFTVENBTEwpCisJICBhYmkgPSBGRklfVEhJU0NBTEw7CisJaWYgKHBhc3NlZF9yZWdzIDwgMSAmJiBhYmkgPT0gRkZJX1RISVNDQUxMKQorCSAgYWJpID0gRkZJX1NURENBTEw7CisgICAgICAgIGZmaV9jYWxsX3dpbjMyKGZmaV9wcmVwX2FyZ3MsICZlY2lmLCBhYmksIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgICB9CiAgICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBGRklfU1lTVjoKQEAgLTM0NSw4ICs0MzQsMTIgQEAKIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9yYXdfU1lTViAoZmZpX3Jhd19jbG9zdXJlICopCiAgICAgIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSk7CiAjaWZkZWYgWDg2X1dJTjMyCit2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIChmZmlfcmF3X2Nsb3N1cmUgKikKKyAgICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0oMSkpKTsKIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9TVERDQUxMIChmZmlfY2xvc3VyZSAqKQogICAgICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgxKSkpOwordm9pZCBGRklfSElEREVOIGZmaV9jbG9zdXJlX1RISVNDQUxMIChmZmlfY2xvc3VyZSAqKQorICAgICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgxKSkpOwogI2VuZGlmCiAjaWZkZWYgWDg2X1dJTjY0CiB2b2lkIEZGSV9ISURERU4gZmZpX2Nsb3N1cmVfd2luNjQgKGZmaV9jbG9zdXJlICopOwpAQCAtNDI4LDcgKzUyMSw4IEBACiAgICAgYXJncCArPSBzaXplb2Yodm9pZCAqKTsKICAgfQogI2Vsc2UKLSAgaWYgKCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVCApIHsKKyAgaWYgKCBjaWYtPmZsYWdzID09IEZGSV9UWVBFX1NUUlVDVAorICAgICAgIHx8IGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfTVNfU1RSVUNUICkgewogICAgICpydmFsdWUgPSAqKHZvaWQgKiopIGFyZ3A7CiAgICAgYXJncCArPSBzaXplb2Yodm9pZCAqKTsKICAgfQpAQCAtNTA2LDYgKzYwMCwzMyBAQAogICAgKih1bnNpZ25lZCBpbnQqKSAgJl9fdHJhbXBbNl0gPSBfX2RpczsgLyogam1wIF9fZnVuICAqLyBcCiAgfQogCisjZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwoVFJBTVAsRlVOLENUWCxTSVpFKSBcCit7IHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAgPSAodW5zaWduZWQgY2hhciopKFRSQU1QKTsgXAorICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKEZVTik7IFwKKyAgIHVuc2lnbmVkIGludCAgX19jdHggPSAodW5zaWduZWQgaW50KShDVFgpOyBcCisgICB1bnNpZ25lZCBpbnQgIF9fZGlzID0gX19mdW4gLSAoX19jdHggKyA0OSk7ICBcCisgICB1bnNpZ25lZCBzaG9ydCBfX3NpemUgPSAodW5zaWduZWQgc2hvcnQpKFNJWkUpOyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFswXSA9IDB4ODMyNDA0OGI7CS8qIG1vdiAoJWVzcCksICVlYXggKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbNF0gPSAweDRjODkwY2VjOwkvKiBzdWIgJDEyLCAlZXNwICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzhdID0gMHgwNDg5MDQyNDsJLyogbW92ICVlY3gsIDQoJWVzcCkgKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgJl9fdHJhbXBbMTJdID0gMHgyNDsJLyogbW92ICVlYXgsICglZXNwKSAqLyBcCisgICAqKHVuc2lnbmVkIGNoYXIqKSAmX190cmFtcFsxM10gPSAweGI4OyBcCisgICAqKHVuc2lnbmVkIGludCAqKSAmX190cmFtcFsxNF0gPSBfX3NpemU7CS8qIG1vdiBfX3NpemUsICVlYXggKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMThdID0gMHgwODI0NGM4ZDsJLyogbGVhIDgoJWVzcCksICVlY3ggKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMjJdID0gMHg0ODAyZThjMTsgLyogc2hyICQyLCAlZWF4IDsgZGVjICVlYXggKi8gXAorICAgKih1bnNpZ25lZCBzaG9ydCopICZfX3RyYW1wWzI2XSA9IDB4MGI3NDsJLyoganogMWYgKi8gXAorICAgKih1bnNpZ25lZCBpbnQgKikgJl9fdHJhbXBbMjhdID0gMHg4OTA4NTE4YjsJLyogMmI6IG1vdiA4KCVlY3gpLCAlZWR4ICovIFwKKyAgICoodW5zaWduZWQgaW50ICopICZfX3RyYW1wWzMyXSA9IDB4MDRjMTgzMTE7IC8qIG1vdiAlZWR4LCAoJWVjeCkgOyBhZGQgJDQsICVlY3ggKi8gXAorICAgKih1bnNpZ25lZCBjaGFyKikgJl9fdHJhbXBbMzZdID0gMHg0ODsJLyogZGVjICVlYXggKi8gXAorICAgKih1bnNpZ25lZCBzaG9ydCopICZfX3RyYW1wWzM3XSA9IDB4ZjU3NTsJLyogam56IDJiIDsgMWY6ICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICZfX3RyYW1wWzM5XSA9IDB4Yjg7IFwKKyAgICoodW5zaWduZWQgaW50KikgICZfX3RyYW1wWzQwXSA9IF9fY3R4OyAvKiBtb3ZsIF9fY3R4LCAlZWF4ICovIFwKKyAgICoodW5zaWduZWQgY2hhciAqKSAgJl9fdHJhbXBbNDRdID0gMHhlODsgXAorICAgKih1bnNpZ25lZCBpbnQqKSAgJl9fdHJhbXBbNDVdID0gX19kaXM7IC8qIGNhbGwgX19mdW4gICovIFwKKyAgICoodW5zaWduZWQgY2hhciopICAmX190cmFtcFs0OV0gPSAweGMyOyAvKiByZXQgICovIFwKKyAgICoodW5zaWduZWQgc2hvcnQqKSAgJl9fdHJhbXBbNTBdID0gKF9fc2l6ZSArIDgpOyAvKiByZXQgKF9fc2l6ZSArIDgpICAqLyBcCisgfQorCiAjZGVmaW5lIEZGSV9JTklUX1RSQU1QT0xJTkVfU1REQ0FMTChUUkFNUCxGVU4sQ1RYLFNJWkUpICBcCiB7IHVuc2lnbmVkIGNoYXIgKl9fdHJhbXAgPSAodW5zaWduZWQgY2hhciopKFRSQU1QKTsgXAogICAgdW5zaWduZWQgaW50ICBfX2Z1biA9ICh1bnNpZ25lZCBpbnQpKEZVTik7IFwKQEAgLTU0OCwxMiArNjY5LDI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopY29kZWxvYyk7CiAgICAgfQogI2lmZGVmIFg4Nl9XSU4zMgorICBlbHNlIGlmIChjaWYtPmFiaSA9PSBGRklfVEhJU0NBTEwpCisgICAgeworICAgICAgRkZJX0lOSVRfVFJBTVBPTElORV9USElTQ0FMTCAoJmNsb3N1cmUtPnRyYW1wWzBdLAorCQkJCSAgICAmZmZpX2Nsb3N1cmVfVEhJU0NBTEwsCisJCQkJICAgICh2b2lkKiljb2RlbG9jLAorCQkJCSAgICBjaWYtPmJ5dGVzKTsKKyAgICB9CiAgIGVsc2UgaWYgKGNpZi0+YWJpID09IEZGSV9TVERDQUxMKQogICAgIHsKICAgICAgIEZGSV9JTklUX1RSQU1QT0xJTkVfU1REQ0FMTCAoJmNsb3N1cmUtPnRyYW1wWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmZpX2Nsb3N1cmVfU1REQ0FMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKWNvZGVsb2MsIGNpZi0+Ynl0ZXMpOwogICAgIH0KKyAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX01TX0NERUNMKQorICAgIHsKKyAgICAgIEZGSV9JTklUX1RSQU1QT0xJTkUgKCZjbG9zdXJlLT50cmFtcFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZmZmlfY2xvc3VyZV9TWVNWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKWNvZGVsb2MpOworICAgIH0KICNlbmRpZiAvKiBYODZfV0lOMzIgKi8KICNlbmRpZiAvKiAhWDg2X1dJTjY0ICovCiAgIGVsc2UKQEAgLTU4Miw2ICs3MTYsOSBAQAogICBpbnQgaTsKIAogICBpZiAoY2lmLT5hYmkgIT0gRkZJX1NZU1YpIHsKKyNpZmRlZiBYODZfV0lOMzIKKyAgICBpZiAoY2lmLT5hYmkgIT0gRkZJX1RISVNDQUxMKQorI2VuZGlmCiAgICAgcmV0dXJuIEZGSV9CQURfQUJJOwogICB9CiAKQEAgLTU5NiwxMCArNzMzLDIwIEBACiAgICAgICBGRklfQVNTRVJUIChjaWYtPmFyZ190eXBlc1tpXS0+dHlwZSAhPSBGRklfVFlQRV9MT05HRE9VQkxFKTsKICAgICB9CiAgIAotCisjaWZkZWYgWDg2X1dJTjMyCisgIGlmIChjaWYtPmFiaSA9PSBGRklfU1lTVikKKyAgICB7CisjZW5kaWYKICAgRkZJX0lOSVRfVFJBTVBPTElORSAoJmNsb3N1cmUtPnRyYW1wWzBdLCAmZmZpX2Nsb3N1cmVfcmF3X1NZU1YsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVsb2MpOwotICAgIAorI2lmZGVmIFg4Nl9XSU4zMgorICAgIH0KKyAgZWxzZSBpZiAoY2lmLT5hYmkgPT0gRkZJX1RISVNDQUxMKQorICAgIHsKKyAgICAgIEZGSV9JTklUX1RSQU1QT0xJTkVfVEhJU0NBTEwgKCZjbG9zdXJlLT50cmFtcFswXSwgJmZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTCwKKwkJCQkgICAgY29kZWxvYywgY2lmLT5ieXRlcyk7CisgICAgfQorI2VuZGlmCiAgIGNsb3N1cmUtPmNpZiAgPSBjaWY7CiAgIGNsb3N1cmUtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKICAgY2xvc3VyZS0+ZnVuICA9IGZ1bjsKQEAgLTYzMCw4ICs3NzcsOSBAQAogICAvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIGEgc3RydWN0IGFuZCB3ZSBkb24ndCBoYXZlIGEgcmV0dXJuICovCiAgIC8qIHZhbHVlIGFkZHJlc3MgdGhlbiB3ZSBuZWVkIHRvIG1ha2Ugb25lICAgICAgICAgICAgICAgICAgICAgKi8KIAotICBpZiAoKHJ2YWx1ZSA9PSBOVUxMKSAmJiAKLSAgICAgIChjaWYtPnJ0eXBlLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkpCisgIGlmIChydmFsdWUgPT0gTlVMTAorICAgICAgJiYgKGNpZi0+ZmxhZ3MgPT0gRkZJX1RZUEVfU1RSVUNUCisgICAgICAgICAgfHwgY2lmLT5mbGFncyA9PSBGRklfVFlQRV9NU19TVFJVQ1QpKQogICAgIHsKICAgICAgIGVjaWYucnZhbHVlID0gYWxsb2NhKGNpZi0+cnR5cGUtPnNpemUpOwogICAgIH0KQEAgLTY0NCw4ICs3OTIsMzggQEAKICNpZmRlZiBYODZfV0lOMzIKICAgICBjYXNlIEZGSV9TWVNWOgogICAgIGNhc2UgRkZJX1NURENBTEw6Ci0gICAgICBmZmlfY2FsbF93aW4zMihmZmlfcHJlcF9hcmdzX3JhdywgJmVjaWYsIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgIGNhc2UgRkZJX01TX0NERUNMOgorICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJnc19yYXcsICZlY2lmLCBjaWYtPmFiaSwgY2lmLT5ieXRlcywgY2lmLT5mbGFncywKKwkJICAgICBlY2lmLnJ2YWx1ZSwgZm4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGRklfVEhJU0NBTEw6CisgICAgY2FzZSBGRklfRkFTVENBTEw6CisgICAgICB7CisJdW5zaWduZWQgaW50IGFiaSA9IGNpZi0+YWJpOworCXVuc2lnbmVkIGludCBpLCBwYXNzZWRfcmVncyA9IDA7CisKKwlpZiAoY2lmLT5mbGFncyA9PSBGRklfVFlQRV9TVFJVQ1QpCisJICArK3Bhc3NlZF9yZWdzOworCisJZm9yIChpPTA7IGkgPCBjaWYtPm5hcmdzICYmIHBhc3NlZF9yZWdzIDwgMjtpKyspCisJICB7CisJICAgIHNpemVfdCBzejsKKworCSAgICBpZiAoY2lmLT5hcmdfdHlwZXNbaV0tPnR5cGUgPT0gRkZJX1RZUEVfRkxPQVQKKwkgICAgICAgIHx8IGNpZi0+YXJnX3R5cGVzW2ldLT50eXBlID09IEZGSV9UWVBFX1NUUlVDVCkKKwkgICAgICBjb250aW51ZTsKKwkgICAgc3ogPSAoY2lmLT5hcmdfdHlwZXNbaV0tPnNpemUgKyAzKSAmIH4zOworCSAgICBpZiAoc3ogPT0gMCB8fCBzeiA+IDQpCisJICAgICAgY29udGludWU7CisJICAgICsrcGFzc2VkX3JlZ3M7CisJICB9CisJaWYgKHBhc3NlZF9yZWdzIDwgMiAmJiBhYmkgPT0gRkZJX0ZBU1RDQUxMKQorCSAgY2lmLT5hYmkgPSBhYmkgPSBGRklfVEhJU0NBTEw7CisJaWYgKHBhc3NlZF9yZWdzIDwgMSAmJiBhYmkgPT0gRkZJX1RISVNDQUxMKQorCSAgY2lmLT5hYmkgPSBhYmkgPSBGRklfU1REQ0FMTDsKKyAgICAgICAgZmZpX2NhbGxfd2luMzIoZmZpX3ByZXBfYXJnc19yYXcsICZlY2lmLCBhYmksIGNpZi0+Ynl0ZXMsIGNpZi0+ZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgIGVjaWYucnZhbHVlLCBmbik7CisgICAgICB9CiAgICAgICBicmVhazsKICNlbHNlCiAgICAgY2FzZSBGRklfU1lTVjoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZmk2NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaTY0LmMKaW5kZXggMDdhMjYyNy4uMWRhYTFjMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaTY0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaTY0LmMKQEAgLTEsNyArMSw4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgZmZpNjQuYyAtIENvcHlyaWdodCAoYykgMjAwMiwgMjAwNyAgQm8gVGhvcnNlbiA8Ym9Ac3VzZS5kZT4KLSAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDggIFJlZCBIYXQsIEluYy4KLSAgIAorICAgZmZpNjQuYyAtIENvcHlyaWdodCAoYykgMjAwMTEgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTAgIFJlZCBIYXQsIEluYy4KKyAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDcgIEJvIFRob3JzZW4gPGJvQHN1c2UuZGU+CisgICAgICAgICAgICAgCiAgICB4ODYtNjQgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwpAQCAtMzYsMTEgKzM3LDE3IEBACiAjZGVmaW5lIE1BWF9HUFJfUkVHUyA2CiAjZGVmaW5lIE1BWF9TU0VfUkVHUyA4CiAKKyNpZmRlZiBfX0lOVEVMX0NPTVBJTEVSCisjZGVmaW5lIFVJTlQxMjggX19tMTI4CisjZWxzZQorI2RlZmluZSBVSU5UMTI4IF9faW50MTI4X3QKKyNlbmRpZgorCiBzdHJ1Y3QgcmVnaXN0ZXJfYXJncwogewogICAvKiBSZWdpc3RlcnMgZm9yIGFyZ3VtZW50IHBhc3NpbmcuICAqLwogICBVSU5UNjQgZ3ByW01BWF9HUFJfUkVHU107Ci0gIF9faW50MTI4X3Qgc3NlW01BWF9TU0VfUkVHU107CisgIFVJTlQxMjggc3NlW01BWF9TU0VfUkVHU107CiB9OwogCiBleHRlcm4gdm9pZCBmZmlfY2FsbF91bml4NjQgKHZvaWQgKmFyZ3MsIHVuc2lnbmVkIGxvbmcgYnl0ZXMsIHVuc2lnbmVkIGZsYWdzLApAQCAtMzc4LDcgKzM4NSw3IEBACiAJICBpZiAoYWxpZ24gPCA4KQogCSAgICBhbGlnbiA9IDg7CiAKLQkgIGJ5dGVzID0gQUxJR04oYnl0ZXMsIGFsaWduKTsKKwkgIGJ5dGVzID0gQUxJR04gKGJ5dGVzLCBhbGlnbik7CiAJICBieXRlcyArPSBjaWYtPmFyZ190eXBlc1tpXS0+c2l6ZTsKIAl9CiAgICAgICBlbHNlCkBAIC0zOTAsNyArMzk3LDcgQEAKICAgaWYgKHNzZWNvdW50KQogICAgIGZsYWdzIHw9IDEgPDwgMTE7CiAgIGNpZi0+ZmxhZ3MgPSBmbGFnczsKLSAgY2lmLT5ieXRlcyA9IGJ5dGVzOworICBjaWYtPmJ5dGVzID0gQUxJR04gKGJ5dGVzLCA4KTsKIAogICByZXR1cm4gRkZJX09LOwogfQpAQCAtNDI2LDcgKzQzMyw3IEBACiAgIC8qIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgcGFzc2VkIGluIG1lbW9yeSwgYWRkIHRoZSBwb2ludGVyIGFzIHRoZQogICAgICBmaXJzdCBpbnRlZ2VyIGFyZ3VtZW50LiAgKi8KICAgaWYgKHJldF9pbl9tZW1vcnkpCi0gICAgcmVnX2FyZ3MtPmdwcltncHJjb3VudCsrXSA9IChsb25nKSBydmFsdWU7CisgICAgcmVnX2FyZ3MtPmdwcltncHJjb3VudCsrXSA9ICh1bnNpZ25lZCBsb25nKSBydmFsdWU7CiAKICAgYXZuID0gY2lmLT5uYXJnczsKICAgYXJnX3R5cGVzID0gY2lmLT5hcmdfdHlwZXM7CkBAIC00OTgsMTIgKzUwNSwyMSBAQAogewogICB2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqdHJhbXA7CiAKKyAgLyogU2FuaXR5IGNoZWNrIG9uIHRoZSBjaWYgQUJJLiAgKi8KKyAgeworICAgIGludCBhYmkgPSBjaWYtPmFiaTsKKyAgICBpZiAoVU5MSUtFTFkgKCEgKGFiaSA+IEZGSV9GSVJTVF9BQkkgJiYgYWJpIDwgRkZJX0xBU1RfQUJJKSkpCisgICAgICByZXR1cm4gRkZJX0JBRF9BQkk7CisgIH0KKwogICB0cmFtcCA9ICh2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydCAqKSAmY2xvc3VyZS0+dHJhbXBbMF07CiAKICAgdHJhbXBbMF0gPSAweGJiNDk7CQkvKiBtb3YgPGNvZGU+LCAlcjExCSovCi0gICoodm9pZCAqIHZvbGF0aWxlICopICZ0cmFtcFsxXSA9IGZmaV9jbG9zdXJlX3VuaXg2NDsKKyAgKigodW5zaWduZWQgbG9uZyBsb25nICogdm9sYXRpbGUpICZ0cmFtcFsxXSkKKyAgICA9ICh1bnNpZ25lZCBsb25nKSBmZmlfY2xvc3VyZV91bml4NjQ7CiAgIHRyYW1wWzVdID0gMHhiYTQ5OwkJLyogbW92IDxkYXRhPiwgJXIxMAkqLwotICAqKHZvaWQgKiB2b2xhdGlsZSAqKSAmdHJhbXBbNl0gPSBjb2RlbG9jOworICAqKCh1bnNpZ25lZCBsb25nIGxvbmcgKiB2b2xhdGlsZSkgJnRyYW1wWzZdKQorICAgID0gKHVuc2lnbmVkIGxvbmcpIGNvZGVsb2M7CiAKICAgLyogU2V0IHRoZSBjYXJyeSBiaXQgaWZmIHRoZSBmdW5jdGlvbiB1c2VzIGFueSBzc2UgcmVnaXN0ZXJzLgogICAgICBUaGlzIGlzIGNsYyBvciBzdGMsIHRvZ2V0aGVyIHdpdGggdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIGptcC4gICovCkBAIC01NDIsNyArNTU4LDcgQEAKIAl7CiAJICAvKiBUaGUgcmV0dXJuIHZhbHVlIGdvZXMgaW4gbWVtb3J5LiAgQXJyYW5nZSBmb3IgdGhlIGNsb3N1cmUKIAkgICAgIHJldHVybiB2YWx1ZSB0byBnbyBkaXJlY3RseSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjYWxsZXIuICAqLwotCSAgcnZhbHVlID0gKHZvaWQgKikgcmVnX2FyZ3MtPmdwcltncHJjb3VudCsrXTsKKwkgIHJ2YWx1ZSA9ICh2b2lkICopICh1bnNpZ25lZCBsb25nKSByZWdfYXJncy0+Z3ByW2dwcmNvdW50KytdOwogCSAgLyogV2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBpbiBhc20gZm9yIHRoZSByZXR1cm4uICAqLwogCSAgcmV0ID0gRkZJX1RZUEVfVk9JRDsKIAl9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpdGFyZ2V0LmggYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvZmZpdGFyZ2V0LmgKaW5kZXggODlhODk4My4uZjQ0MjY1NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L2ZmaXRhcmdldC5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9mZml0YXJnZXQuaApAQCAtMSw2ICsxLDcgQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi1DLSotCi0gICBmZml0YXJnZXQuaCAtIENvcHlyaWdodCAoYykgMTk5Ni0yMDAzLCAyMDEwICBSZWQgSGF0LCBJbmMuCi0gICBDb3B5cmlnaHQgKEMpIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorICAgZmZpdGFyZ2V0LmggLSBDb3B5cmlnaHQgKGMpIDIwMTIgIEFudGhvbnkgR3JlZW4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAxOTk2LTIwMDMsIDIwMTAgIFJlZCBIYXQsIEluYy4KKyAgICAgICAgICAgICAgICAgQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGFyZ2V0IGNvbmZpZ3VyYXRpb24gbWFjcm9zIGZvciB4ODYgYW5kIHg4Ni02NC4KIApAQCAtMjksOCArMzAsMTUgQEAKICNpZm5kZWYgTElCRkZJX1RBUkdFVF9ICiAjZGVmaW5lIExJQkZGSV9UQVJHRVRfSAogCisjaWZuZGVmIExJQkZGSV9ICisjZXJyb3IgIlBsZWFzZSBkbyBub3QgaW5jbHVkZSBmZml0YXJnZXQuaCBkaXJlY3RseSBpbnRvIHlvdXIgc291cmNlLiAgVXNlIGZmaS5oIGluc3RlYWQuIgorI2VuZGlmCisKIC8qIC0tLS0gU3lzdGVtIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIEZvciBjb2RlIGNvbW1vbiB0byBhbGwgcGxhdGZvcm1zIG9uIHg4NiBhbmQgeDg2XzY0LiAqLworI2RlZmluZSBYODZfQU5ZCisKICNpZiBkZWZpbmVkIChYODZfNjQpICYmIGRlZmluZWQgKF9faTM4Nl9fKQogI3VuZGVmIFg4Nl82NAogI2RlZmluZSBYODYKQEAgLTM4LDcgKzQ2LDcgQEAKIAogI2lmZGVmIFg4Nl9XSU42NAogI2RlZmluZSBGRklfU0laRU9GX0FSRyA4Ci0jZGVmaW5lIFVTRV9CVUlMVElOX0ZGUyAwIC8vIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gbWluZ3ctNjQgCisjZGVmaW5lIFVTRV9CVUlMVElOX0ZGUyAwIC8qIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4gbWluZ3ctNjQgKi8KICNlbmRpZgogCiAvKiAtLS0tIEdlbmVyaWMgdHlwZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtNTMsOSArNjEsMTUgQEAKIHR5cGVkZWYgbG9uZyBsb25nICAgICAgICAgICAgICBmZmlfc2FyZzsKICNlbmRpZgogI2Vsc2UKKyNpZiBkZWZpbmVkIF9feDg2XzY0X18gJiYgIWRlZmluZWQgX19MUDY0X18KKyNkZWZpbmUgRkZJX1NJWkVPRl9BUkcgOAordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICAgIGZmaV9hcmc7Cit0eXBlZGVmIGxvbmcgbG9uZyAgICAgICAgICAgICAgZmZpX3Nhcmc7CisjZWxzZQogdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgICAgIGZmaV9hcmc7CiB0eXBlZGVmIHNpZ25lZCBsb25nICAgICAgICAgICAgZmZpX3Nhcmc7CiAjZW5kaWYKKyNlbmRpZgogCiB0eXBlZGVmIGVudW0gZmZpX2FiaSB7CiAgIEZGSV9GSVJTVF9BQkkgPSAwLApAQCAtNjQsMjggKzc4LDMyIEBACiAjaWZkZWYgWDg2X1dJTjMyCiAgIEZGSV9TWVNWLAogICBGRklfU1REQ0FMTCwKLSAgLyogVE9ETzogQWRkIGZhc3RjYWxsIHN1cHBvcnQgZm9yIHRoZSBzYWtlIG9mIGNvbXBsZXRlbmVzcyAqLwotICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTViwKKyAgRkZJX1RISVNDQUxMLAorICBGRklfRkFTVENBTEwsCisgIEZGSV9NU19DREVDTCwKKyAgRkZJX0xBU1RfQUJJLAorI2lmZGVmIF9NU0NfVkVSCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9NU19DREVDTAorI2Vsc2UKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1NZU1YKICNlbmRpZgogCi0jaWZkZWYgWDg2X1dJTjY0CisjZWxpZiBkZWZpbmVkKFg4Nl9XSU42NCkKICAgRkZJX1dJTjY0LAotICBGRklfREVGQVVMVF9BQkkgPSBGRklfV0lONjQsCi0jZWxzZQorICBGRklfTEFTVF9BQkksCisgIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9XSU42NAogCisjZWxzZQogICAvKiAtLS0tIEludGVsIHg4NiBhbmQgQU1EIHg4Ni02NCAtICovCi0jaWYgIWRlZmluZWQoWDg2X1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX2FtZDY0KSkKICAgRkZJX1NZU1YsCiAgIEZGSV9VTklYNjQsICAgLyogVW5peCB2YXJpYW50cyBhbGwgdXNlIHRoZSBzYW1lIEFCSSBmb3IgeDg2LTY0ICAqLworICBGRklfTEFTVF9BQkksCiAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2kzODYpCi0gIEZGSV9ERUZBVUxUX0FCSSA9IEZGSV9TWVNWLAorICBGRklfREVGQVVMVF9BQkkgPSBGRklfU1lTVgogI2Vsc2UKLSAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1VOSVg2NCwKKyAgRkZJX0RFRkFVTFRfQUJJID0gRkZJX1VOSVg2NAogI2VuZGlmCiAjZW5kaWYKLSNlbmRpZiAvKiBYODZfV0lONjQgKi8KLQotICBGRklfTEFTVF9BQkkgPSBGRklfREVGQVVMVF9BQkkgKyAxCiB9IGZmaV9hYmk7CiAjZW5kaWYKIApAQCAtOTUsMTMgKzExMywxNCBAQAogI2RlZmluZSBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIgKEZGSV9UWVBFX0xBU1QgKyAxKQogI2RlZmluZSBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIgKEZGSV9UWVBFX0xBU1QgKyAyKQogI2RlZmluZSBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIgKEZGSV9UWVBFX0xBU1QgKyAzKQorI2RlZmluZSBGRklfVFlQRV9NU19TVFJVQ1QgICAgICAgKEZGSV9UWVBFX0xBU1QgKyA0KQogCiAjaWYgZGVmaW5lZCAoWDg2XzY0KSB8fCAoZGVmaW5lZCAoX194ODZfNjRfXykgJiYgZGVmaW5lZCAoWDg2X0RBUldJTikpCiAjZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMjQKICNkZWZpbmUgRkZJX05BVElWRV9SQVdfQVBJIDAKICNlbHNlCiAjaWZkZWYgWDg2X1dJTjMyCi0jZGVmaW5lIEZGSV9UUkFNUE9MSU5FX1NJWkUgMTMKKyNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSA1MgogI2Vsc2UKICNpZmRlZiBYODZfV0lONjQKICNkZWZpbmUgRkZJX1RSQU1QT0xJTkVfU0laRSAyOQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3N5c3YuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9zeXN2LlMKaW5kZXggZjRiNmMxZS4uZjEwOGRkOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3N5c3YuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvc3lzdi5TCkBAIC0xLDUgKzEsNSBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIHN5c3YuUyAtIENvcHlyaWdodCAoYykgMTk5NiwgMTk5OCwgMjAwMS0yMDAzLCAyMDA1LCAyMDA4ICBSZWQgSGF0LCBJbmMuCisgICBzeXN2LlMgLSBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTgsIDIwMDEtMjAwMywgMjAwNSwgMjAwOCwgMjAxMCAgUmVkIEhhdCwgSW5jLgogICAgCiAgICBYODYgRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgCiAKQEAgLTQ4LDYgKzQ4LDkgQEAKIAltb3ZsICAxNiglZWJwKSwlZWN4CiAJc3VibCAgJWVjeCwlZXNwCiAKKyAgICAgICAgLyogQWxpZ24gdGhlIHN0YWNrIHBvaW50ZXIgdG8gMTYtYnl0ZXMgKi8KKyAgICAgICAgYW5kbCAgJDB4ZmZmZmZmZjAsICVlc3AKKwogCW1vdmwgICVlc3AsJWVheAogCiAJLyogUGxhY2UgYWxsIG9mIHRoZSBmZmlfcHJlcF9hcmdzIGluIHBvc2l0aW9uICAqLwpAQCAtMzI1LDIzICszMjgsNTIgQEAKIAkuc2l6ZQlmZmlfY2xvc3VyZV9yYXdfU1lTViwgLi1mZmlfY2xvc3VyZV9yYXdfU1lTVgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkIF9fUElDX18KKyMgaWYgZGVmaW5lZCBfX3N1bl9fICYmIGRlZmluZWQgX19zdnI0X18KKy8qIDMyLWJpdCBTb2xhcmlzIDIveDg2IHVzZXMgZGF0YXJlbCBlbmNvZGluZyBmb3IgUElDLiAgR05VIGxkIGJlZm9yZSAyLjIyCisgICBkb2Vzbid0IGNvcnJlY3RseSBzb3J0IC5laF9mcmFtZV9oZHIgd2l0aCBtaXhlZCBlbmNvZGluZ3MsIHNvIG1hdGNoIHRoaXMuICAqLworIyAgZGVmaW5lIEZERV9FTkNPRElORwkJMHgzMAkvKiBkYXRhcmVsICovCisjICBkZWZpbmUgRkRFX0VOQ09ERShYKQkJWEBHT1RPRkYKKyMgZWxzZQorIyAgZGVmaW5lIEZERV9FTkNPRElORwkJMHgxYgkvKiBwY3JlbCBzZGF0YTQgKi8KKyMgIGlmIGRlZmluZWQgSEFWRV9BU19YODZfUENSRUwKKyMgICBkZWZpbmUgRkRFX0VOQ09ERShYKQlYLS4KKyMgIGVsc2UKKyMgICBkZWZpbmUgRkRFX0VOQ09ERShYKQlYQHJlbAorIyAgZW5kaWYKKyMgZW5kaWYKKyNlbHNlCisjIGRlZmluZSBGREVfRU5DT0RJTkcJCTAJLyogYWJzb2x1dGUgKi8KKyMgZGVmaW5lIEZERV9FTkNPREUoWCkJCVgKKyNlbmRpZgorCiAJLnNlY3Rpb24JLmVoX2ZyYW1lLEVIX0ZSQU1FX0ZMQUdTLEBwcm9nYml0cwogLkxmcmFtZTE6CiAJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCS8qIExlbmd0aCBvZiBDb21tb24gSW5mb3JtYXRpb24gRW50cnkgKi8KIC5MU0NJRTE6CiAJLmxvbmcJMHgwCS8qIENJRSBJZGVudGlmaWVyIFRhZyAqLwogCS5ieXRlCTB4MQkvKiBDSUUgVmVyc2lvbiAqLworI2lmZGVmIEhBVkVfQVNfQVNDSUlfUFNFVURPX09QCiAjaWZkZWYgX19QSUNfXwogCS5hc2NpaSAielJcMCIJLyogQ0lFIEF1Z21lbnRhdGlvbiAqLwogI2Vsc2UKIAkuYXNjaWkgIlwwIgkvKiBDSUUgQXVnbWVudGF0aW9uICovCiAjZW5kaWYKKyNlbGlmIGRlZmluZWQgSEFWRV9BU19TVFJJTkdfUFNFVURPX09QCisjaWZkZWYgX19QSUNfXworCS5zdHJpbmcgInpSIgkvKiBDSUUgQXVnbWVudGF0aW9uICovCisjZWxzZQorCS5zdHJpbmcgIiIJLyogQ0lFIEF1Z21lbnRhdGlvbiAqLworI2VuZGlmCisjZWxzZQorI2Vycm9yIG1pc3NpbmcgLmFzY2lpLy5zdHJpbmcKKyNlbmRpZgogCS5ieXRlCTB4MQkvKiAudWxlYjEyOCAweDE7IENJRSBDb2RlIEFsaWdubWVudCBGYWN0b3IgKi8KIAkuYnl0ZQkweDdjCS8qIC5zbGViMTI4IC00OyBDSUUgRGF0YSBBbGlnbm1lbnQgRmFjdG9yICovCiAJLmJ5dGUJMHg4CS8qIENJRSBSQSBDb2x1bW4gKi8KICNpZmRlZiBfX1BJQ19fCiAJLmJ5dGUJMHgxCS8qIC51bGViMTI4IDB4MTsgQXVnbWVudGF0aW9uIHNpemUgKi8KLQkuYnl0ZQkweDFiCS8qIEZERSBFbmNvZGluZyAocGNyZWwgc2RhdGE0KSAqLworCS5ieXRlCUZERV9FTkNPRElORwogI2VuZGlmCiAJLmJ5dGUJMHhjCS8qIERXX0NGQV9kZWZfY2ZhICovCiAJLmJ5dGUJMHg0CS8qIC51bGViMTI4IDB4NCAqLwpAQCAtMzU0LDE0ICszODYsOCBAQAogCS5sb25nCS5MRUZERTEtLkxBU0ZERTEJLyogRkRFIExlbmd0aCAqLwogLkxBU0ZERTE6CiAJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEJLyogRkRFIENJRSBvZmZzZXQgKi8KLSNpZiBkZWZpbmVkIF9fUElDX18gJiYgZGVmaW5lZCBIQVZFX0FTX1g4Nl9QQ1JFTAotCS5sb25nCS5MRkIxLS4JLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KLSNlbGlmIGRlZmluZWQgX19QSUNfXwotCS5sb25nCS5MRkIxQHJlbAotI2Vsc2UKLQkubG9uZwkuTEZCMQotI2VuZGlmCi0JLmxvbmcJLkxGRTEtLkxGQjEJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KKwkubG9uZwlGREVfRU5DT0RFKC5MRkIxKQkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLworCS5sb25nCS5MRkUxLS5MRkIxCQkvKiBGREUgYWRkcmVzcyByYW5nZSAqLwogI2lmZGVmIF9fUElDX18KIAkuYnl0ZQkweDAJLyogLnVsZWIxMjggMHgwOyBBdWdtZW50YXRpb24gc2l6ZSAqLwogI2VuZGlmCkBAIC0zODEsMTQgKzQwNyw4IEBACiAJLmxvbmcJLkxFRkRFMi0uTEFTRkRFMgkvKiBGREUgTGVuZ3RoICovCiAuTEFTRkRFMjoKIAkubG9uZwkuTEFTRkRFMi0uTGZyYW1lMQkvKiBGREUgQ0lFIG9mZnNldCAqLwotI2lmIGRlZmluZWQgX19QSUNfXyAmJiBkZWZpbmVkIEhBVkVfQVNfWDg2X1BDUkVMCi0JLmxvbmcJLkxGQjItLgkvKiBGREUgaW5pdGlhbCBsb2NhdGlvbiAqLwotI2VsaWYgZGVmaW5lZCBfX1BJQ19fCi0JLmxvbmcJLkxGQjJAcmVsCi0jZWxzZQotCS5sb25nCS5MRkIyCi0jZW5kaWYKLQkubG9uZwkuTEZFMi0uTEZCMgkvKiBGREUgYWRkcmVzcyByYW5nZSAqLworCS5sb25nCUZERV9FTkNPREUoLkxGQjIpCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCisJLmxvbmcJLkxGRTItLkxGQjIJCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCiAjaWZkZWYgX19QSUNfXwogCS5ieXRlCTB4MAkvKiAudWxlYjEyOCAweDA7IEF1Z21lbnRhdGlvbiBzaXplICovCiAjZW5kaWYKQEAgLTQxNywxNCArNDM3LDggQEAKIAkubG9uZwkuTEVGREUzLS5MQVNGREUzCS8qIEZERSBMZW5ndGggKi8KIC5MQVNGREUzOgogCS5sb25nCS5MQVNGREUzLS5MZnJhbWUxCS8qIEZERSBDSUUgb2Zmc2V0ICovCi0jaWYgZGVmaW5lZCBfX1BJQ19fICYmIGRlZmluZWQgSEFWRV9BU19YODZfUENSRUwKLQkubG9uZwkuTEZCMy0uCS8qIEZERSBpbml0aWFsIGxvY2F0aW9uICovCi0jZWxpZiBkZWZpbmVkIF9fUElDX18KLQkubG9uZwkuTEZCM0ByZWwKLSNlbHNlCi0JLmxvbmcJLkxGQjMKLSNlbmRpZgotCS5sb25nCS5MRkUzLS5MRkIzCS8qIEZERSBhZGRyZXNzIHJhbmdlICovCisJLmxvbmcJRkRFX0VOQ09ERSguTEZCMykJLyogRkRFIGluaXRpYWwgbG9jYXRpb24gKi8KKwkubG9uZwkuTEZFMy0uTEZCMwkJLyogRkRFIGFkZHJlc3MgcmFuZ2UgKi8KICNpZmRlZiBfX1BJQ19fCiAJLmJ5dGUJMHgwCS8qIC51bGViMTI4IDB4MDsgQXVnbWVudGF0aW9uIHNpemUgKi8KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TCmluZGV4IGZlM2Y0ZmQuLjdhNjYxOWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni91bml4NjQuUworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvdW5peDY0LlMKQEAgLTMyNCw3ICszMjQsMTEgQEAKIC5MVVc5OgogCS5zaXplCWZmaV9jbG9zdXJlX3VuaXg2NCwuLWZmaV9jbG9zdXJlX3VuaXg2NAogCisjaWZkZWYgSEFWRV9BU19YODZfNjRfVU5XSU5EX1NFQ1RJT05fVFlQRQorCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHVud2luZAorI2Vsc2UKIAkuc2VjdGlvbgkuZWhfZnJhbWUsImEiLEBwcm9nYml0cworI2VuZGlmCiAuTGZyYW1lMToKIAkubG9uZwkuTEVDSUUxLS5MU0NJRTEJCS8qIENJRSBMZW5ndGggKi8KIC5MU0NJRTE6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luMzIuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW4zMi5TCmluZGV4IGFjMWVkNmYuLjI0YjdiYmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW4zMi5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW4zMi5TCkBAIC00NSw2ICs0NSw3IEBACiBmZmlfY2FsbF93aW4zMiBQUk9DIE5FQVIsCiAgICAgZmZpX3ByZXBfYXJncyA6IE5FQVIgUFRSIERXT1JELAogICAgIGVjaWYgICAgICAgICAgOiBORUFSIFBUUiBEV09SRCwKKyAgICBjaWZfYWJpICAgICAgIDogRFdPUkQsCiAgICAgY2lmX2J5dGVzICAgICA6IERXT1JELAogICAgIGNpZl9mbGFncyAgICAgOiBEV09SRCwKICAgICBydmFsdWUgICAgICAgIDogTkVBUiBQVFIgRFdPUkQsCkBAIC02NCw2ICs2NSwxOSBAQAogICAgICAgICA7OyBSZXR1cm4gc3RhY2sgdG8gcHJldmlvdXMgc3RhdGUgYW5kIGNhbGwgdGhlIGZ1bmN0aW9uCiAgICAgICAgIGFkZCAgZXNwLCA4CiAKKwk7OyBIYW5kbGUgdGhpc2NhbGwgYW5kIGZhc3RjYWxsCisJY21wIGNpZl9hYmksIDMgOzsgRkZJX1RISVNDQUxMCisJanogZG9fdGhpc2NhbGwKKwljbXAgY2lmX2FiaSwgNCA7OyBGRklfRkFTVENBTEwKKwlqbnogZG9fc3RkY2FsbAorCW1vdiBlY3gsIERXT1JEIFBUUiBbZXNwXQorCW1vdiBlZHgsIERXT1JEIFBUUiBbZXNwKzRdCisJYWRkIGVzcCwgOAorCWptcCBkb19zdGRjYWxsCitkb190aGlzY2FsbDoKKwltb3YgZWN4LCBEV09SRCBQVFIgW2VzcF0KKwlhZGQgZXNwLCA0Citkb19zdGRjYWxsOgogICAgICAgICBjYWxsIGZuCiAKICAgICAgICAgOzsgY2RlY2w6ICAgd2UgcmVzdG9yZSBlc3AgaW4gdGhlIGVwaWxvZ3VlLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8KQEAgLTk0LDMxICsxMDgsMzcgQEAKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGZsb2F0ICAgICAgIDs7IEZGSV9UWVBFX0ZMT0FUCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRkb3VibGUgICAgICA7OyBGRklfVFlQRV9ET1VCTEUKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGxvbmdkb3VibGUgIDs7IEZGSV9UWVBFX0xPTkdET1VCTEUKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TSU5UOAotICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2Ci0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNhX3JldHVpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjYV9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TSU5UOAorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0dWludDE2ICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2CisgICAgICAgIGRkIG9mZnNldCBjYV9yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1VJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY2FfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9VSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY2FfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfU1RSVUNUCiAgICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9QT0lOVEVSCi0gICAgICAgIGRkIG9mZnNldCBjYV9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKLSAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgorICAgICAgICBkZCBvZmZzZXQgY2FfcmV0c3RydWN0MWIgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCisgICAgICAgIGRkIG9mZnNldCBjYV9yZXRzdHJ1Y3QyYiAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKICAgICAgICAgZGQgb2Zmc2V0IGNhX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QgorICAgICAgICBkZCBvZmZzZXQgY2FfZXBpbG9ndWUgICAgICAgOzsgRkZJX1RZUEVfTVNfU1RSVUNUCiAKLWNhX3JldGludDg6Ci0gICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92ICAgZWN4LCBydmFsdWUKLSAgICAgICAgbW92ICAgW2VjeCArIDBdLCBhbAotICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQorICAgICAgICAvKiBTaWduL3plcm8gZXh0ZW5kIGFzIGFwcHJvcHJpYXRlLiAgKi8KK2NhX3JldHVpbnQ4OgorICAgICAgICBtb3Z6eCBlYXgsIGFsCisgICAgICAgIGptcCAgIGNhX3JldGludAogCi1jYV9yZXRpbnQxNjoKLSAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3YgICBlY3gsIHJ2YWx1ZQotICAgICAgICBtb3YgICBbZWN4ICsgMF0sIGF4Ci0gICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCitjYV9yZXRzaW50ODoKKyAgICAgICAgbW92c3ggZWF4LCBhbAorICAgICAgICBqbXAgICBjYV9yZXRpbnQKKworY2FfcmV0dWludDE2OgorICAgICAgICBtb3Z6eCBlYXgsIGF4CisgICAgICAgIGptcCAgIGNhX3JldGludAorCitjYV9yZXRzaW50MTY6CisgICAgICAgIG1vdnN4IGVheCwgYXgKKyAgICAgICAgam1wICAgY2FfcmV0aW50CiAKIGNhX3JldGludDoKICAgICAgICAgOzsgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQpAQCAtMTUxLDExICsxNzEsMzEgQEAKICAgICAgICAgZnN0cCAgVEJZVEUgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNhX2VwaWxvZ3VlCiAKK2NhX3JldHN0cnVjdDFiOgorICAgICAgICA7OyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCisgICAgICAgIG1vdiAgIGVjeCwgcnZhbHVlCisgICAgICAgIG1vdiAgIFtlY3ggKyAwXSwgYWwKKyAgICAgICAgam1wICAgY2FfZXBpbG9ndWUKKworY2FfcmV0c3RydWN0MmI6CisgICAgICAgIDs7IExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgICAgbW92ICAgZWN4LCBydmFsdWUKKyAgICAgICAgbW92ICAgW2VjeCArIDBdLCBheAorICAgICAgICBqbXAgICBjYV9lcGlsb2d1ZQorCiBjYV9lcGlsb2d1ZToKICAgICAgICAgOzsgRXBpbG9ndWUgY29kZSBpcyBhdXRvZ2VuZXJhdGVkLgogICAgICAgICByZXQKIGZmaV9jYWxsX3dpbjMyIEVORFAKIAorZmZpX2Nsb3N1cmVfVEhJU0NBTEwgUFJPQyBORUFSIEZPUkNFRlJBTUUKKwlzdWIJZXNwLCA0MAorCWxlYQllZHgsIFtlYnAgLTI0XQorCW1vdglbZWJwIC0gMTJdLCBlZHgJLyogcmVzcCAqLworCWxlYQllZHgsIFtlYnAgKyAxMl0gIC8qIGFjY291bnQgZm9yIHN0dWIgcmV0dXJuIGFkZHJlc3Mgb24gc3RhY2sgKi8KKwlqbXAJc3R1YgorZmZpX2Nsb3N1cmVfVEhJU0NBTEwgRU5EUAorCiBmZmlfY2xvc3VyZV9TWVNWIFBST0MgTkVBUiBGT1JDRUZSQU1FCiAgICAgOzsgdGhlIGZmaV9jbG9zdXJlIGN0eCBpcyBwYXNzZWQgaW4gZWF4IGJ5IHRoZSB0cmFtcG9saW5lLgogCkBAIC0xNjMsNiArMjAzLDcgQEAKICAgICAgICAgbGVhICBlZHgsIFtlYnAgLSAyNF0KICAgICAgICAgbW92ICBbZWJwIC0gMTJdLCBlZHggICAgICAgICA7OyByZXNwCiAgICAgICAgIGxlYSAgZWR4LCBbZWJwICsgOF0KK3N0dWI6OgogICAgICAgICBtb3YgIFtlc3AgKyA4XSwgZWR4ICAgICAgICAgIDs7IGFyZ3MKICAgICAgICAgbGVhICBlZHgsIFtlYnAgLSAxMl0KICAgICAgICAgbW92ICBbZXNwICsgNF0sIGVkeCAgICAgICAgICA7OyAmcmVzcApAQCAtMTc5LDI2ICsyMjAsMzUgQEAKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGZsb2F0ICAgICAgIDs7IEZGSV9UWVBFX0ZMT0FUCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRkb3VibGUgICAgICA7OyBGRklfVFlQRV9ET1VCTEUKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGxvbmdkb3VibGUgIDs7IEZGSV9UWVBFX0xPTkdET1VCTEUKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TSU5UOAotICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2Ci0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNzX3JldHVpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjc19yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TSU5UOAorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0dWludDE2ICAgICAgOzsgRkZJX1RZUEVfVUlOVDE2CisgICAgICAgIGRkIG9mZnNldCBjc19yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TSU5UMTYKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1VJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9VSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c3RydWN0ICAgICAgOzsgRkZJX1RZUEVfU1RSVUNUCiAgICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9QT0lOVEVSCi0gICAgICAgIGRkIG9mZnNldCBjc19yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKLSAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCisgICAgICAgIGRkIG9mZnNldCBjc19yZXRzaW50MTYgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKICAgICAgICAgZGQgb2Zmc2V0IGNzX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QgorICAgICAgICBkZCBvZmZzZXQgY3NfcmV0bXNzdHJ1Y3QgICAgOzsgRkZJX1RZUEVfTVNfU1RSVUNUCiAKLWNzX3JldGludDg6Ci0gICAgICAgIG1vdiAgIGFsLCBbZWN4XQorY3NfcmV0dWludDg6CisgICAgICAgIG1vdnp4IGVheCwgQllURSBQVFIgW2VjeF0KICAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKIAotY3NfcmV0aW50MTY6Ci0gICAgICAgIG1vdiAgIGF4LCBbZWN4XQorY3NfcmV0c2ludDg6CisgICAgICAgIG1vdnN4IGVheCwgQllURSBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKKworY3NfcmV0dWludDE2OgorICAgICAgICBtb3Z6eCBlYXgsIFdPUkQgUFRSIFtlY3hdCisgICAgICAgIGptcCAgIGNzX2VwaWxvZ3VlCisKK2NzX3JldHNpbnQxNjoKKyAgICAgICAgbW92c3ggZWF4LCBXT1JEIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjc19lcGlsb2d1ZQogCiBjc19yZXRpbnQ6CkBAIC0yMjcsNiArMjc3LDEyIEBACiAgICAgICAgIDs7IEVwaWxvZ3VlIGNvZGUgaXMgYXV0b2dlbmVyYXRlZC4KICAgICAgICAgcmV0CTQKIAorY3NfcmV0bXNzdHJ1Y3Q6CisgICAgICAgIDs7IENhbGxlciBleHBlY3RzIHVzIHRvIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlYWwgcmV0dXJuIHZhbHVlLgorICAgICAgICBtb3YgICBlYXgsIGVjeAorICAgICAgICA7OyBDYWxsZXIgZG9lc24ndCBleHBlY3RzIHVzIHRvIHBvcCBzdHJ1Y3QgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaGlkZGVuIGFyZy4KKyAgICAgICAgam1wICAgY3NfZXBpbG9ndWUKKwogY3NfZXBpbG9ndWU6CiAgICAgICAgIDs7IEVwaWxvZ3VlIGNvZGUgaXMgYXV0b2dlbmVyYXRlZC4KICAgICAgICAgcmV0CkBAIC0yMzksNyArMjk1LDE2IEBACiAjZGVmaW5lIFJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVQgKFJBV19DTE9TVVJFX0ZVTl9PRkZTRVQgKyA0KQogI2RlZmluZSBDSUZfRkxBR1NfT0ZGU0VUIDIwCiAKLWZmaV9jbG9zdXJlX3Jhd19TWVNWIFBST0MgTkVBUiBVU0VTIGVzaQorZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMIFBST0MgTkVBUiBVU0VTIGVzaSBGT1JDRUZSQU1FCisJc3ViIGVzcCwgMzYKKwltb3YgIGVzaSwgW2VheCArIFJBV19DTE9TVVJFX0NJRl9PRkZTRVRdICAgICAgICA7OyBjbG9zdXJlLT5jaWYKKwltb3YgIGVkeCwgW2VheCArIFJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVRdICA7OyBjbG9zdXJlLT51c2VyX2RhdGEKKwltb3YgW2VzcCArIDEyXSwgZWR4CisJbGVhIGVkeCwgW2VicCArIDEyXQorCWptcCBzdHVicmF3CitmZmlfY2xvc3VyZV9yYXdfVEhJU0NBTEwgRU5EUAorCitmZmlfY2xvc3VyZV9yYXdfU1lTViBQUk9DIE5FQVIgVVNFUyBlc2kgRk9SQ0VGUkFNRQogICAgIDs7IHRoZSBmZmlfY2xvc3VyZSBjdHggaXMgcGFzc2VkIGluIGVheCBieSB0aGUgdHJhbXBvbGluZS4KIAogICAgICAgICBzdWIgIGVzcCwgNDAKQEAgLTI0Nyw2ICszMTIsNyBAQAogICAgICAgICBtb3YgIGVkeCwgW2VheCArIFJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVRdICA7OyBjbG9zdXJlLT51c2VyX2RhdGEKICAgICAgICAgbW92ICBbZXNwICsgMTJdLCBlZHggICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgdXNlcl9kYXRhCiAgICAgICAgIGxlYSAgZWR4LCBbZWJwICsgOF0KK3N0dWJyYXc6OgogICAgICAgICBtb3YgIFtlc3AgKyA4XSwgZWR4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyByYXdfYXJncwogICAgICAgICBsZWEgIGVkeCwgW2VicCAtIDI0XQogICAgICAgICBtb3YgIFtlc3AgKyA0XSwgZWR4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyAmcmVzCkBAIC0yNjQsMjYgKzMzMCwzNSBAQAogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0ZmxvYXQgICAgICAgOzsgRkZJX1RZUEVfRkxPQVQKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGRvdWJsZSAgICAgIDs7IEZGSV9UWVBFX0RPVUJMRQogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0bG9uZ2RvdWJsZSAgOzsgRkZJX1RZUEVfTE9OR0RPVUJMRQotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4Ci0gICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY3JfcmV0dWludDggICAgICAgOzsgRkZJX1RZUEVfVUlOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NJTlQ4CisgICAgICAgIGRkIG9mZnNldCBjcl9yZXR1aW50MTYgICAgICA7OyBGRklfVFlQRV9VSU5UMTYKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NJTlQxNgogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfVUlOVDMyCiAgICAgICAgIGRkIG9mZnNldCBjcl9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDY0ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQ2NAogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfU0lOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjcl9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9TVFJVQ1QKICAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1BPSU5URVIKLSAgICAgICAgZGQgb2Zmc2V0IGNyX3JldGludDggICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgotICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCisgICAgICAgIGRkIG9mZnNldCBjcl9yZXRzaW50OCAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIKKyAgICAgICAgZGQgb2Zmc2V0IGNyX3JldHNpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQgogICAgICAgICBkZCBvZmZzZXQgY3JfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCCisgICAgICAgIGRkIG9mZnNldCBjcl9lcGlsb2d1ZSAgICAgICA7OyBGRklfVFlQRV9NU19TVFJVQ1QKIAotY3JfcmV0aW50ODoKLSAgICAgICAgbW92ICAgYWwsIFtlY3hdCitjcl9yZXR1aW50ODoKKyAgICAgICAgbW92enggZWF4LCBCWVRFIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjcl9lcGlsb2d1ZQogCi1jcl9yZXRpbnQxNjoKLSAgICAgICAgbW92ICAgYXgsIFtlY3hdCitjcl9yZXRzaW50ODoKKyAgICAgICAgbW92c3ggZWF4LCBCWVRFIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjcl9lcGlsb2d1ZQorCitjcl9yZXR1aW50MTY6CisgICAgICAgIG1vdnp4IGVheCwgV09SRCBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY3JfZXBpbG9ndWUKKworY3JfcmV0c2ludDE2OgorICAgICAgICBtb3ZzeCBlYXgsIFdPUkQgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNyX2VwaWxvZ3VlCiAKIGNyX3JldGludDoKQEAgLTMzNywyNiArNDEyLDM0IEBACiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRmbG9hdCAgICAgICA7OyBGRklfVFlQRV9GTE9BVAogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0ZG91YmxlICAgICAgOzsgRkZJX1RZUEVfRE9VQkxFCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRsb25nZG91YmxlICA7OyBGRklfVFlQRV9MT05HRE9VQkxFCi0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ4ICAgICAgICA7OyBGRklfVFlQRV9VSU5UOAotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKLSAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludDE2ICAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50MTYgICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CisgICAgICAgIGRkIG9mZnNldCBjZF9yZXR1aW50OCAgICAgICA7OyBGRklfVFlQRV9VSU5UOAorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0c2ludDggICAgICAgOzsgRkZJX1RZUEVfU0lOVDgKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHVpbnQxNiAgICAgIDs7IEZGSV9UWVBFX1VJTlQxNgorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU0lOVDE2CiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9VSU5UMzIKICAgICAgICAgZGQgb2Zmc2V0IGNkX3JldGludCAgICAgICAgIDs7IEZGSV9UWVBFX1NJTlQzMgogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50NjQgICAgICAgOzsgRkZJX1RZUEVfVUlOVDY0CiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQ2NCAgICAgICA7OyBGRklfVFlQRV9TSU5UNjQKICAgICAgICAgZGQgb2Zmc2V0IGNkX2VwaWxvZ3VlICAgICAgIDs7IEZGSV9UWVBFX1NUUlVDVAogICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50ICAgICAgICAgOzsgRkZJX1RZUEVfUE9JTlRFUgotICAgICAgICBkZCBvZmZzZXQgY2RfcmV0aW50OCAgICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzFCCi0gICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQxNiAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMkIKKyAgICAgICAgZGQgb2Zmc2V0IGNkX3JldHNpbnQ4ICAgICAgIDs7IEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQgorICAgICAgICBkZCBvZmZzZXQgY2RfcmV0c2ludDE2ICAgICAgOzsgRkZJX1RZUEVfU01BTExfU1RSVUNUXzJCCiAgICAgICAgIGRkIG9mZnNldCBjZF9yZXRpbnQgICAgICAgICA7OyBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfNEIKIAotY2RfcmV0aW50ODoKLSAgICAgICAgbW92ICAgYWwsIFtlY3hdCitjZF9yZXR1aW50ODoKKyAgICAgICAgbW92enggZWF4LCBCWVRFIFBUUiBbZWN4XQogICAgICAgICBqbXAgICBjZF9lcGlsb2d1ZQogCi1jZF9yZXRpbnQxNjoKLSAgICAgICAgbW92ICAgYXgsIFtlY3hdCitjZF9yZXRzaW50ODoKKyAgICAgICAgbW92c3ggZWF4LCBCWVRFIFBUUiBbZWN4XQorICAgICAgICBqbXAgICBjZF9lcGlsb2d1ZQorCitjZF9yZXR1aW50MTY6CisgICAgICAgIG1vdnp4IGVheCwgV09SRCBQVFIgW2VjeF0KKyAgICAgICAgam1wICAgY2RfZXBpbG9ndWUKKworY2RfcmV0c2ludDE2OgorICAgICAgICBtb3ZzeCBlYXgsIFdPUkQgUFRSIFtlY3hdCiAgICAgICAgIGptcCAgIGNkX2VwaWxvZ3VlCiAKIGNkX3JldGludDoKQEAgLTM5NSw3ICs0NzgsOSBAQAogICAgICAgICAjIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogICAgICAgICAuYmFsaWduIDE2CiAJLmdsb2JsCV9mZmlfY2FsbF93aW4zMgorI2lmbmRlZiBfX09TMl9fCiAJLmRlZglfZmZpX2NhbGxfd2luMzI7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCiBfZmZpX2NhbGxfd2luMzI6CiAuTEZCMToKICAgICAgICAgcHVzaGwgJWVicApAQCAtNDAzLDcgKzQ4OCw3IEBACiAgICAgICAgIG1vdmwgICVlc3AsJWVicAogLkxDRkkxOgogICAgICAgICAjIE1ha2Ugcm9vbSBmb3IgYWxsIG9mIHRoZSBuZXcgYXJncy4KLSAgICAgICAgbW92bCAgMTYoJWVicCksJWVjeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIG1vdmwgIDIwKCVlYnApLCVlY3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICBzdWJsICAlZWN4LCVlc3AKICAKICAgICAgICAgbW92bCAgJWVzcCwlZWF4CkBAIC00MTUsMTkgKzUwMCwzNCBAQAogIAogICAgICAgICAjIFJldHVybiBzdGFjayB0byBwcmV2aW91cyBzdGF0ZSBhbmQgY2FsbCB0aGUgZnVuY3Rpb24KICAgICAgICAgYWRkbCAgJDgsJWVzcAotIAorCisJIyBIYW5kbGUgZmFzdGNhbGwgYW5kIHRoaXNjYWxsCisJY21wbCAkMywgMTYoJWVicCkgICMgRkZJX1RISVNDQUxMCisJanogLmRvX3RoaXNjYWxsCisJY21wbCAkNCwgMTYoJWVicCkgIyBGRklfRkFTVENBTEwKKwlqbnogLmRvX2ZuY2FsbAorCW1vdmwgKCVlc3ApLCAlZWN4CisJbW92bCA0KCVlc3ApLCAlZWR4CisJYWRkbCAkOCwgJWVzcAorCWptcCAuZG9fZm5jYWxsCisuZG9fdGhpc2NhbGw6CisJbW92bCAoJWVzcCksICVlY3gKKwlhZGRsICQ0LCAlZXNwCisKKy5kb19mbmNhbGw6CisJIAogICAgICAgICAjIEZJWE1FOiBBbGlnbiB0aGUgc3RhY2sgdG8gYSAxMjgtYml0IGJvdW5kYXJ5IHRvIGF2b2lkCiAgICAgICAgICMgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGhpdHMuCiAKLSAgICAgICAgY2FsbCAgKjI4KCVlYnApCisgICAgICAgIGNhbGwgICozMiglZWJwKQogIAogICAgICAgICAjIHN0ZGNhbGwgZnVuY3Rpb25zIHBvcCBhcmd1bWVudHMgb2ZmIHRoZSBzdGFjayB0aGVtc2VsdmVzCiAKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcmV0dXJuIHR5cGUgY29kZQotICAgICAgICBtb3ZsICAyMCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKICAKICAgICAgICAgIyBJZiB0aGUgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaXMgTlVMTCwgYXNzdW1lIG5vIHJldHVybiB2YWx1ZS4KLSAgICAgICAgY21wbCAgJDAsMjQoJWVicCkKKyAgICAgICAgY21wbCAgJDAsMjgoJWVicCkKICAgICAgICAgam5lICAgMGYKICAKICAgICAgICAgIyBFdmVuIGlmIHRoZXJlIGlzIG5vIHNwYWNlIGZvciB0aGUgcmV0dXJuIHZhbHVlLCB3ZSBhcmUKQEAgLTQ2MCw2ICs1NjAsNyBAQAogCS5sb25nCS5McmV0c3RydWN0MWIJCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQiAqLwogCS5sb25nCS5McmV0c3RydWN0MmIJCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQiAqLwogCS5sb25nCS5McmV0c3RydWN0NGIJCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QiAqLworCS5sb25nCS5McmV0c3RydWN0CQkvKiBGRklfVFlQRV9NU19TVFJVQ1QgKi8KIDE6CiAJYWRkCSVlY3gsICVlY3gKIAlhZGQJJWVjeCwgJWVjeApAQCAtNDg2LDUwICs1ODcsNTAgQEAKIAogLkxyZXRpbnQ6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92bCAgJWVheCwwKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKICAKIC5McmV0ZmxvYXQ6CiAgICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIGZzdHBzICglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldGRvdWJsZToKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBmc3RwbCAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRsb25nZG91YmxlOgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIGZzdHB0ICglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAgCiAuTHJldGludDY0OgogICAgICAgICAjIExvYWQgJWVjeCB3aXRoIHRoZSBwb2ludGVyIHRvIHN0b3JhZ2UgZm9yIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgICAgbW92bCAgMjQoJWVicCksJWVjeAorICAgICAgICBtb3ZsICAyOCglZWJwKSwlZWN4CiAgICAgICAgIG1vdmwgICVlYXgsMCglZWN4KQogICAgICAgICBtb3ZsICAlZWR4LDQoJWVjeCkKIAlqbXAgICAuTGVwaWxvZ3VlCiAKIC5McmV0c3RydWN0MWI6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92YiAgJWFsLDAoJWVjeCkKICAgICAgICAgam1wICAgLkxlcGlsb2d1ZQogIAogLkxyZXRzdHJ1Y3QyYjoKICAgICAgICAgIyBMb2FkICVlY3ggd2l0aCB0aGUgcG9pbnRlciB0byBzdG9yYWdlIGZvciB0aGUgcmV0dXJuIHZhbHVlCi0gICAgICAgIG1vdmwgIDI0KCVlYnApLCVlY3gKKyAgICAgICAgbW92bCAgMjgoJWVicCksJWVjeAogICAgICAgICBtb3Z3ICAlYXgsMCglZWN4KQogICAgICAgICBqbXAgICAuTGVwaWxvZ3VlCiAKIC5McmV0c3RydWN0NGI6CiAgICAgICAgICMgTG9hZCAlZWN4IHdpdGggdGhlIHBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgdGhlIHJldHVybiB2YWx1ZQotICAgICAgICBtb3ZsICAyNCglZWJwKSwlZWN4CisgICAgICAgIG1vdmwgIDI4KCVlYnApLCVlY3gKICAgICAgICAgbW92bCAgJWVheCwwKCVlY3gpCiAgICAgICAgIGptcCAgIC5MZXBpbG9ndWUKIApAQCAtNTQyLDEyICs2NDMsMjcgQEAKICAgICAgICAgcG9wbCAlZWJwCiAgICAgICAgIHJldAogLmZmaV9jYWxsX3dpbjMyX2VuZDoKKyAgICAgICAgLmJhbGlnbiAxNgorCS5nbG9ibAlfZmZpX2Nsb3N1cmVfVEhJU0NBTEwKKyNpZm5kZWYgX19PUzJfXworCS5kZWYJX2ZmaV9jbG9zdXJlX1RISVNDQUxMOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgorX2ZmaV9jbG9zdXJlX1RISVNDQUxMOgorCXB1c2hsCSVlYnAKKwltb3ZsCSVlc3AsICVlYnAKKwlzdWJsCSQ0MCwgJWVzcAorCWxlYWwJLTI0KCVlYnApLCAlZWR4CisJbW92bAklZWR4LCAtMTIoJWVicCkJLyogcmVzcCAqLworCWxlYWwJMTIoJWVicCksICVlZHggIC8qIGFjY291bnQgZm9yIHN0dWIgcmV0dXJuIGFkZHJlc3Mgb24gc3RhY2sgKi8KKwlqbXAJLnN0dWIKIC5MRkUxOgogCiAgICAgICAgICMgVGhpcyBhc3N1bWVzIHdlIGFyZSB1c2luZyBnYXMuCiAgICAgICAgIC5iYWxpZ24gMTYKIAkuZ2xvYmwJX2ZmaV9jbG9zdXJlX1NZU1YKKyNpZm5kZWYgX19PUzJfXwogCS5kZWYJX2ZmaV9jbG9zdXJlX1NZU1Y7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCiBfZmZpX2Nsb3N1cmVfU1lTVjoKIC5MRkIzOgogCXB1c2hsCSVlYnAKQEAgLTU1OCw2ICs2NzQsNyBAQAogCWxlYWwJLTI0KCVlYnApLCAlZWR4CiAJbW92bAklZWR4LCAtMTIoJWVicCkJLyogcmVzcCAqLwogCWxlYWwJOCglZWJwKSwgJWVkeAorLnN0dWI6CiAJbW92bAklZWR4LCA0KCVlc3ApCS8qIGFyZ3MgPSBfX2J1aWx0aW5fZHdhcmZfY2ZhICgpICovCiAJbGVhbAktMTIoJWVicCksICVlZHgKIAltb3ZsCSVlZHgsICglZXNwKQkvKiAmcmVzcCAqLwpAQCAtNTg2LDYgKzcwMyw3IEBACiAJLmxvbmcJLkxjbHNfcmV0c3RydWN0MQkvKiBGRklfVFlQRV9TTUFMTF9TVFJVQ1RfMUIgKi8KIAkubG9uZwkuTGNsc19yZXRzdHJ1Y3QyCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQiAqLwogCS5sb25nCS5MY2xzX3JldHN0cnVjdDQJLyogRkZJX1RZUEVfU01BTExfU1RSVUNUXzRCICovCisJLmxvbmcJLkxjbHNfcmV0bXNzdHJ1Y3QJLyogRkZJX1RZUEVfTVNfU1RSVUNUICovCiAKIDE6CiAJYWRkCSVlYXgsICVlYXgKQEAgLTY1MCw2ICs3NjgsMTIgQEAKIAlwb3BsCSVlYnAKIAlyZXQJJDB4NAogCisuTGNsc19yZXRtc3N0cnVjdDoKKwkjIENhbGxlciBleHBlY3RzIHVzIHRvIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlYWwgcmV0dXJuIHZhbHVlLgorCW1vdgklZWN4LCAlZWF4CisJIyBDYWxsZXIgZG9lc24ndCBleHBlY3RzIHVzIHRvIHBvcCBzdHJ1Y3QgcmV0dXJuIHZhbHVlIHBvaW50ZXIgaGlkZGVuIGFyZy4KKwlqbXAJLkxjbHNfZXBpbG9ndWUKKwogLkxjbHNfbm9yZXR2YWw6CiAuTGNsc19lcGlsb2d1ZToKIAltb3ZsCSVlYnAsICVlc3AKQEAgLTY2NCwxMSArNzg4LDI3IEBACiAjZGVmaW5lIFJBV19DTE9TVVJFX0ZVTl9PRkZTRVQgKFJBV19DTE9TVVJFX0NJRl9PRkZTRVQgKyA0KQogI2RlZmluZSBSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUIChSQVdfQ0xPU1VSRV9GVU5fT0ZGU0VUICsgNCkKICNkZWZpbmUgQ0lGX0ZMQUdTX09GRlNFVCAyMAotCisgICAgICAgIC5iYWxpZ24gMTYKKwkuZ2xvYmwJX2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTAorI2lmbmRlZiBfX09TMl9fCisJLmRlZglfZmZpX2Nsb3N1cmVfcmF3X1RISVNDQUxMOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgorX2ZmaV9jbG9zdXJlX3Jhd19USElTQ0FMTDoKKwlwdXNobAklZWJwCisJbW92bAklZXNwLCAlZWJwCisJcHVzaGwJJWVzaQorCXN1YmwJJDM2LCAlZXNwCisJbW92bAlSQVdfQ0xPU1VSRV9DSUZfT0ZGU0VUKCVlYXgpLCAlZXNpCSAvKiBjbG9zdXJlLT5jaWYgKi8KKwltb3ZsCVJBV19DTE9TVVJFX1VTRVJfREFUQV9PRkZTRVQoJWVheCksICVlZHggLyogY2xvc3VyZS0+dXNlcl9kYXRhICovCisJbW92bAklZWR4LCAxMiglZXNwKQkvKiB1c2VyX2RhdGEgKi8KKwlsZWFsCTEyKCVlYnApLCAlZWR4CS8qIF9fYnVpbHRpbl9kd2FyZl9jZmEgKCkgKi8KKwlqbXAJLnN0dWJyYXcKICAgICAgICAgIyBUaGlzIGFzc3VtZXMgd2UgYXJlIHVzaW5nIGdhcy4KICAgICAgICAgLmJhbGlnbiAxNgogCS5nbG9ibAlfZmZpX2Nsb3N1cmVfcmF3X1NZU1YKKyNpZm5kZWYgX19PUzJfXwogCS5kZWYJX2ZmaV9jbG9zdXJlX3Jhd19TWVNWOwkuc2NsCTI7CS50eXBlCTMyOwkuZW5kZWYKKyNlbmRpZgogX2ZmaV9jbG9zdXJlX3Jhd19TWVNWOgogLkxGQjQ6CiAJcHVzaGwJJWVicApAQCAtNjgyLDYgKzgyMiw3IEBACiAJbW92bAlSQVdfQ0xPU1VSRV9VU0VSX0RBVEFfT0ZGU0VUKCVlYXgpLCAlZWR4IC8qIGNsb3N1cmUtPnVzZXJfZGF0YSAqLwogCW1vdmwJJWVkeCwgMTIoJWVzcCkJLyogdXNlcl9kYXRhICovCiAJbGVhbAk4KCVlYnApLCAlZWR4CS8qIF9fYnVpbHRpbl9kd2FyZl9jZmEgKCkgKi8KKy5zdHVicmF3OgogCW1vdmwJJWVkeCwgOCglZXNwKQkvKiByYXdfYXJncyAqLwogCWxlYWwJLTI0KCVlYnApLCAlZWR4CiAJbW92bAklZWR4LCA0KCVlc3ApCS8qICZyZXMgKi8KQEAgLTcxMCw2ICs4NTEsNyBAQAogCS5sb25nCS5McmNsc19yZXRzdHJ1Y3QxCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8xQiAqLwogCS5sb25nCS5McmNsc19yZXRzdHJ1Y3QyCS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF8yQiAqLwogCS5sb25nCS5McmNsc19yZXRzdHJ1Y3Q0CS8qIEZGSV9UWVBFX1NNQUxMX1NUUlVDVF80QiAqLworCS5sb25nCS5McmNsc19yZXRzdHJ1Y3QJLyogRkZJX1RZUEVfTVNfU1RSVUNUICovCiAxOgogCWFkZAklZWF4LCAlZWF4CiAJYWRkCSVlYXgsICVlYXgKQEAgLTc4NCw3ICs5MjYsOSBAQAogICAgICAgICAjIFRoaXMgYXNzdW1lcyB3ZSBhcmUgdXNpbmcgZ2FzLgogCS5iYWxpZ24JMTYKIAkuZ2xvYmwJX2ZmaV9jbG9zdXJlX1NURENBTEwKKyNpZm5kZWYgX19PUzJfXwogCS5kZWYJX2ZmaV9jbG9zdXJlX1NURENBTEw7CS5zY2wJMjsJLnR5cGUJMzI7CS5lbmRlZgorI2VuZGlmCiBfZmZpX2Nsb3N1cmVfU1REQ0FMTDoKIC5MRkI1OgogCXB1c2hsCSVlYnAKQEAgLTg5MCw3ICsxMDM0LDkgQEAKIC5mZmlfY2xvc3VyZV9TVERDQUxMX2VuZDoKIC5MRkU1OgogCisjaWZuZGVmIF9fT1MyX18KIAkuc2VjdGlvbgkuZWhfZnJhbWUsInciCisjZW5kaWYKIC5MZnJhbWUxOgogLkxTQ0lFMToKIAkubG9uZwkuTEVDSUUxLS5MQVNDSUUxICAvKiBMZW5ndGggb2YgQ29tbW9uIEluZm9ybWF0aW9uIEVudHJ5ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy94ODYvd2luNjQuUyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW42NC5TCmluZGV4IDZlOTE4MTguLmZjZGIyNzAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW42NC5TCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni93aW42NC5TCkBAIC0yMzIsMTAgKzIzMiwxOCBAQAogZmZpX2NhbGxfd2luNjQgRU5EUAogX1RFWFQJRU5EUwogRU5ECi0jZWxzZSAgICAgICAgCisKKyNlbHNlCisKKyNpZmRlZiBTWU1CT0xfVU5ERVJTQ09SRQorI2RlZmluZSBTWU1CT0xfTkFNRShuYW1lKSBfIyNuYW1lCisjZWxzZQorI2RlZmluZSBTWU1CT0xfTkFNRShuYW1lKSBuYW1lCisjZW5kaWYKKwogLnRleHQKIAotLmV4dGVybiBfZmZpX2Nsb3N1cmVfd2luNjRfaW5uZXIKKy5leHRlcm4gU1lNQk9MX05BTUUoZmZpX2Nsb3N1cmVfd2luNjRfaW5uZXIpCiAKICMgZmZpX2Nsb3N1cmVfd2luNjQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGVzZSByZWdpc3RlcnMgc2V0OgogIyAgICByYXggcG9pbnRzIHRvICdjbG9zdXJlJwpAQCAtMjQ2LDggKzI1NCw4IEBACiAjIGNhbGwgZmZpX2Nsb3N1cmVfd2luNjRfaW5uZXIgZm9yIHRoZSBhY3R1YWwgd29yaywgdGhlbiByZXR1cm4gdGhlIHJlc3VsdC4KICMgCiAJLmJhbGlnbiAxNgotICAgICAgICAuZ2xvYmwgX2ZmaV9jbG9zdXJlX3dpbjY0CQotX2ZmaV9jbG9zdXJlX3dpbjY0OiAgICAgCisgICAgICAgIC5nbG9ibCBTWU1CT0xfTkFNRShmZmlfY2xvc3VyZV93aW42NCkKK1NZTUJPTF9OQU1FKGZmaV9jbG9zdXJlX3dpbjY0KToKIAkjIGNvcHkgcmVnaXN0ZXIgYXJndW1lbnRzIG9udG8gc3RhY2sKIAl0ZXN0CSQxLCVyMTEKIAlqbmUJLkxmaXJzdF9pc19mbG9hdAkKQEAgLTI4Nyw3ICsyOTUsNyBAQAogCW1vdgklcmF4LCAlcmN4CSMgY29udGV4dCBpcyBmaXJzdCBwYXJhbWV0ZXIKIAltb3YJJXJzcCwgJXJkeAkjIHN0YWNrIGlzIHNlY29uZCBwYXJhbWV0ZXIKIAlhZGQJJDQ4LCAlcmR4CSMgcG9pbnQgdG8gc3RhcnQgb2YgYXJndW1lbnRzCi0JbW92CSRfZmZpX2Nsb3N1cmVfd2luNjRfaW5uZXIsICVyYXgKKwltb3YJJFNZTUJPTF9OQU1FKGZmaV9jbG9zdXJlX3dpbjY0X2lubmVyKSwgJXJheAogCWNhbGxxCSolcmF4CQkjIGNhbGwgdGhlIHJlYWwgY2xvc3VyZSBmdW5jdGlvbgogCWFkZAkkNDAsICVyc3AKIAltb3ZxCSVyYXgsICV4bW0wCSMgSWYgdGhlIGNsb3N1cmUgcmV0dXJuZWQgYSBmbG9hdCwKQEAgLTI5Niw4ICszMDQsOCBAQAogLmZmaV9jbG9zdXJlX3dpbjY0X2VuZDoKIAogCS5iYWxpZ24gMTYKLSAgICAgICAgLmdsb2JsCV9mZmlfY2FsbF93aW42NAotX2ZmaV9jYWxsX3dpbjY0OiAgICAgICAgCisgICAgICAgIC5nbG9ibAlTWU1CT0xfTkFNRShmZmlfY2FsbF93aW42NCkKK1NZTUJPTF9OQU1FKGZmaV9jYWxsX3dpbjY0KToKICAgICAgICAgIyBjb3B5IHJlZ2lzdGVycyBvbnRvIHN0YWNrCiAJbW92CSVyOSwzMiglcnNwKQogCW1vdgklcjgsMjQoJXJzcCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL01ha2VmaWxlLmFtIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KaW5kZXggZWFlM2Q3NC4uMTQ2ZmRmOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KQEAgLTE1LDY2ICsxNSw3MSBAQAogCiBDTEVBTkZJTEVTID0gKi5leGUgY29yZSogKi5sb2cgKi5zdW0KIAotRVhUUkFfRElTVCA9IGxpYmZmaS5zcGVjaWFsL3NwZWNpYWwuZXhwCVwKLWxpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3RfZmZpX2NhbGwuY2MgbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYyBcCi1saWJmZmkuc3BlY2lhbC9mZml0ZXN0Y3h4LmggY29uZmlnL2RlZmF1bHQuZXhwIGxpYi90YXJnZXQtbGlicGF0aC5leHAgXAotbGliL2xpYmZmaS1kZy5leHAgbGliL3dyYXBwZXIuZXhwIGxpYmZmaS5jYWxsL2Zsb2F0LmMgXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMgbGliZmZpLmNhbGwvZmxvYXQzLmMgXAotbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBcCi1saWJmZmkuY2FsbC9wcm9tb3Rpb24uYyBsaWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYyBcCi1saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19mbG9hdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMi5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMgXAotbGliZmZpLmNhbGwvY2xzX3VpbnQuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgXAotbGliZmZpLmNhbGwvZmxvYXQxLmMgbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jIFwKLWxpYmZmaS5jYWxsL2Nsc19zc2hvcnQuYyBsaWJmZmkuY2FsbC9jbHNfdWxvbmdsb25nLmMgXAotbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdWNoYXIuYyBcCi1saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgbGliZmZpLmNhbGwvcmV0dXJuX3VjLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xsMS5jIFwKLWxpYmZmaS5jYWxsL2Nsc191c2hvcnQuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMgXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMi5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfbG9jX2ZuMC5jIGxpYmZmaS5jYWxsL3JldHVybl9zYy5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMJXAotbGliZmZpLmNhbGwvcmV0dXJuX2xsLmMgbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYyBcCi1saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jIGxpYmZmaS5jYWxsL3JldHVybl9kYmwxLmMgXAotbGliZmZpLmNhbGwvY2FsbC5leHAgbGliZmZpLmNhbGwvZmZpdGVzdC5oIGxpYmZmaS5jYWxsL3N0cmxlbi5jCVwKLWxpYmZmaS5jYWxsL3JldHVybl9zbC5jIGxpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMgXAotbGliZmZpLmNhbGwvc3RydWN0MS5jIGxpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fdWwuYyBcCi1saWJmZmkuY2FsbC9jbHNfZG91YmxlLmMgbGliZmZpLmNhbGwvbWFueV93aW4zMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMJXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIGxpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwlcCi1saWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0Y2hhci5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwuYyBcCi1saWJmZmkuY2FsbC9zdHJsZW5fd2luMzIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGRsLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgbGliZmZpLmNhbGwvc3RydWN0My5jIFwKLWxpYmZmaS5jYWxsL2Nsc191Y2hhci5jIGxpYmZmaS5jYWxsL2Nsc19zaW50LmMgbGliZmZpLmNhbGwvZmxvYXQyLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnQuYyBcCi1saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGxpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9kYmwuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgXAotbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgbGliZmZpLmNhbGwvcHlvYmpjLXRjLmMJXAotbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc19zY2hhci5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMy5jIFwKLWxpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4yLmMJXAotbGliZmZpLmNhbGwvc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMgXAotbGliZmZpLmNhbGwvcmV0dXJuX2ZsMy5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYwlcCi1saWJmZmkuY2FsbC9wcm9ibGVtMS5jIGxpYmZmaS5jYWxsL2Zsb2F0NC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9mbjUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNi5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGxpYmZmaS5jYWxsL21hbnkuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvbmVnaW50LmMgbGliZmZpLmNhbGwvc3RydWN0NS5jIFwKLWxpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMgXAotbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgXAorRVhUUkFfRElTVCA9IGNvbmZpZy9kZWZhdWx0LmV4cCBsaWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2xvY19mbjAuYyBcCitsaWJmZmkuY2FsbC9jbHNfc2NoYXIuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMS5jIFwKK2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX3VsLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jIGxpYmZmaS5jYWxsL3JldHVybl9mbDIuYyBcCitsaWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2ZmaXRlc3QuaCBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnQuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QzLmMgbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIFwKK2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0LmMgXAorbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jIGxpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMgXAorbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgXAorbGliZmZpLmNhbGwvY2xzX211bHRpX3NjaGFyLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2NhbGwuZXhwIFwKK2xpYmZmaS5jYWxsL2Nsc19kb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgXAorbGliZmZpLmNhbGwvY2xzX3VpbnQuYyBsaWJmZmkuY2FsbC9yZXR1cm5fbGwxLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm40LmMgbGliZmZpLmNhbGwvY2xzX3VjaGFyLmMgXAorbGliZmZpLmNhbGwvc3RydWN0Mi5jIGxpYmZmaS5jYWxsL2Nsc183Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cmxlbi5jIFwKK2xpYmZmaS5jYWxsL21hbnkuYyBsaWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jIGxpYmZmaS5jYWxsL3JldHVybl9mbC5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDUuYyBsaWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydGNoYXIuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMi5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9mbDMuYyBsaWJmZmkuY2FsbC9zdHJldF9tZWRpdW0uYyBcCitsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jIGxpYmZmaS5jYWxsL2Eub3V0IFwKK2xpYmZmaS5jYWxsL2Nsb3N1cmVfZm4zLmMgbGliZmZpLmNhbGwvZmxvYXQzLmMgbGliZmZpLmNhbGwvbWFueTIuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMgXAorbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm42LmMgXAorbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19zc2hvcnQuYyBsaWJmZmkuY2FsbC9tYW55X3dpbjMyLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl91Yy5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYyBcCitsaWJmZmkuY2FsbC9jbHNfMThieXRlLmMgbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgXAorbGliZmZpLmNhbGwvcHJvbW90aW9uLmMgbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9kYmwuYyBsaWJmZmkuY2FsbC9jbHNfMjRieXRlLmMgXAorbGliZmZpLmNhbGwvc3RydWN0NC5jIGxpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYyBsaWJmZmkuY2FsbC9mbG9hdC5jIFwKK2xpYmZmaS5jYWxsL2Zsb2F0MS5jIGxpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMgbGliZmZpLmNhbGwvbmVnaW50LmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2RibDEuYyBsaWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGxpYmZmaS5jYWxsL3JldHVybl9mbDEuYyBcCiBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MTAuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jIFwKLWxpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKK2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jIGxpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYyBcCitsaWJmZmkuY2FsbC9zdHJldF9sYXJnZTIuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2wuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMC5jIGxpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGxpYmZmaS5jYWxsL2Zsb2F0Mi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsc19zaW50LmMgXAorbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBsaWJmZmkuY2FsbC9jbHNfdWxvbmdsb25nLmMgXAorbGliZmZpLmNhbGwvY2xzX3VzaG9ydC5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMgXAorbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBsaWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19mbG9hdC5jIGxpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgXAorbGliZmZpLmNhbGwvcHlvYmpjLXRjLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VzaG9ydGNoYXIuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QxLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBcCitsaWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jIGxpYmZmaS5jYWxsL3Byb2JsZW0xLmMgbGliZmZpLmNhbGwvZmxvYXQ0LmMgXAorbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xkbC5jIFwKK2xpYmZmaS5jYWxsL3N0cmxlbjJfd2luMzIuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNS5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDJfd2luMzIuYyBsaWJmZmkuY2FsbC9zdHJ1Y3Q2LmMgXAorbGliZmZpLmNhbGwvcmV0dXJuX2xsLmMgbGliZmZpLmNhbGwvc3RydWN0OS5jIGxpYmZmaS5jYWxsL3JldHVybl9zYy5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgXAorbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgbGliZmZpLmNhbGwvc3RybGVuX3dpbjMyLmMgXAorbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMgbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMgXAorbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdC5jYyBsaWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cCBcCitsaWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0X2ZmaV9jYWxsLmNjIGxpYmZmaS5zcGVjaWFsL2ZmaXRlc3RjeHguaCBcCitsaWIvd3JhcHBlci5leHAgbGliL3RhcmdldC1saWJwYXRoLmV4cCBsaWIvbGliZmZpLmV4cApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvTWFrZWZpbGUuaW4gYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgppbmRleCA2OThjNDYxLi40Y2Y0MGNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9NYWtlZmlsZS5pbgpAQCAtMSw5ICsxLDkgQEAKLSMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEgZnJvbSBNYWtlZmlsZS5hbS4KKyMgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGJ5IGF1dG9tYWtlIDEuMTEuMyBmcm9tIE1ha2VmaWxlLmFtLgogIyBAY29uZmlndXJlX2lucHV0QAogCiAjIENvcHlyaWdodCAoQykgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwKLSMgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotIyBJbmMuCisjIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAogIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCkBAIC01Myw2ICs1Myw3IEBACiBBQ0xPQ0FMID0gQEFDTE9DQUxACiBBTExPQ0EgPSBAQUxMT0NBQAogQU1UQVIgPSBAQU1UQVJACitBTV9MVExERkxBR1MgPSBAQU1fTFRMREZMQUdTQAogQU1fUlVOVEVTVEZMQUdTID0gCiBBUiA9IEBBUkAKIEFVVE9DT05GID0gQEFVVE9DT05GQApAQCAtNzAsNiArNzEsNyBAQAogQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKIERFRlMgPSBAREVGU0AKIERFUERJUiA9IEBERVBESVJACitETExUT09MID0gQERMTFRPT0xACiBEU1lNVVRJTCA9IEBEU1lNVVRJTEAKIERVTVBCSU4gPSBARFVNUEJJTkAKIEVDSE9fQyA9IEBFQ0hPX0NACkBAIC03Nyw2ICs3OSw3IEBACiBFQ0hPX1QgPSBARUNIT19UQAogRUdSRVAgPSBARUdSRVBACiBFWEVFWFQgPSBARVhFRVhUQAorRkZJX0VYRUNfVFJBTVBPTElORV9UQUJMRSA9IEBGRklfRVhFQ19UUkFNUE9MSU5FX1RBQkxFQAogRkdSRVAgPSBARkdSRVBACiBHUkVQID0gQEdSRVBACiBIQVZFX0xPTkdfRE9VQkxFID0gQEhBVkVfTE9OR19ET1VCTEVACkBAIC05NSw2ICs5OCw3IEBACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKK01BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKIE1LRElSX1AgPSBATUtESVJfUEAKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKQEAgLTEwNyw2ICsxMTEsNyBAQAogUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKIFBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAogUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKK1BBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAogUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKIFBBVEhfU0VQQVJBVE9SID0gQFBBVEhfU0VQQVJBVE9SQAogUkFOTElCID0gQFJBTkxJQkAKQEAgLTEyMSw2ICsxMjYsNyBAQAogYWJzX3NyY2RpciA9IEBhYnNfc3JjZGlyQAogYWJzX3RvcF9idWlsZGRpciA9IEBhYnNfdG9wX2J1aWxkZGlyQAogYWJzX3RvcF9zcmNkaXIgPSBAYWJzX3RvcF9zcmNkaXJACithY19jdF9BUiA9IEBhY19jdF9BUkAKIGFjX2N0X0NDID0gQGFjX2N0X0NDQAogYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAogYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACkBAIC0xNTMsNyArMTU5LDYgQEAKIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKIGxvY2FsZWRpciA9IEBsb2NhbGVkaXJACiBsb2NhbHN0YXRlZGlyID0gQGxvY2Fsc3RhdGVkaXJACi1sdF9FQ0hPID0gQGx0X0VDSE9ACiBtYW5kaXIgPSBAbWFuZGlyQAogbWtkaXJfcCA9IEBta2Rpcl9wQAogb2xkaW5jbHVkZWRpciA9IEBvbGRpbmNsdWRlZGlyQApAQCAtMTg3LDY5ICsxOTIsNzQgQEAKIAkgICAgZWxzZSBlY2hvIHJ1bnRlc3Q7IGZpYAogCiBDTEVBTkZJTEVTID0gKi5leGUgY29yZSogKi5sb2cgKi5zdW0KLUVYVFJBX0RJU1QgPSBsaWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cAlcCi1saWJmZmkuc3BlY2lhbC91bndpbmR0ZXN0X2ZmaV9jYWxsLmNjIGxpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3QuY2MgXAotbGliZmZpLnNwZWNpYWwvZmZpdGVzdGN4eC5oIGNvbmZpZy9kZWZhdWx0LmV4cCBsaWIvdGFyZ2V0LWxpYnBhdGguZXhwIFwKLWxpYi9saWJmZmktZGcuZXhwIGxpYi93cmFwcGVyLmV4cCBsaWJmZmkuY2FsbC9mbG9hdC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jIGxpYmZmaS5jYWxsL2Zsb2F0My5jIFwKLWxpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgXAotbGliZmZpLmNhbGwvY2xzXzVfMV9ieXRlLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgXAotbGliZmZpLmNhbGwvcHJvbW90aW9uLmMgbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jIGxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4xLmMgXAotbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfZmxvYXQuYyBcCi1saWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNC5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDIuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jIFwKLWxpYmZmaS5jYWxsL2Nsc191aW50LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jIFwKLWxpYmZmaS5jYWxsL2Zsb2F0MS5jIGxpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIGxpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDEuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIFwKLWxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYyBcCi1saWJmZmkuY2FsbC9jbHNfc3Nob3J0LmMgbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jIFwKLWxpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3VjaGFyLmMgXAotbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMgXAotbGliZmZpLmNhbGwvc3RydWN0Ni5jIGxpYmZmaS5jYWxsL3JldHVybl91Yy5jIGxpYmZmaS5jYWxsL3JldHVybl9sbDEuYyBcCi1saWJmZmkuY2FsbC9jbHNfdXNob3J0LmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnRjaGFyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDIuYyBcCi1saWJmZmkuY2FsbC9jbG9zdXJlX2xvY19mbjAuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBcCi1saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jIGxpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jCVwKLWxpYmZmaS5jYWxsL3JldHVybl9sbC5jIGxpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgXAotbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZGJsMS5jIFwKLWxpYmZmaS5jYWxsL2NhbGwuZXhwIGxpYmZmaS5jYWxsL2ZmaXRlc3QuaCBsaWJmZmkuY2FsbC9zdHJsZW4uYwlcCi1saWJmZmkuY2FsbC9yZXR1cm5fc2wuYyBsaWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIFwKLWxpYmZmaS5jYWxsL3N0cnVjdDEuYyBsaWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgbGliZmZpLmNhbGwvcmV0dXJuX3VsLmMgXAotbGliZmZpLmNhbGwvY2xzX2RvdWJsZS5jIGxpYmZmaS5jYWxsL21hbnlfd2luMzIuYyBcCi1saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCVwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYyBsaWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMJXAotbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydGNoYXIuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0LmMgXAotbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgbGliZmZpLmNhbGwvcmV0dXJuX2ZsLmMgXAotbGliZmZpLmNhbGwvc3RybGVuX3dpbjMyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2xkbC5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9mbG9hdC5jIGxpYmZmaS5jYWxsL3N0cnVjdDMuYyBcCi1saWJmZmkuY2FsbC9jbHNfdWNoYXIuYyBsaWJmZmkuY2FsbC9jbHNfc2ludC5jIGxpYmZmaS5jYWxsL2Zsb2F0Mi5jIFwKLWxpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgXAotbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfc3Nob3J0LmMgXAotbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgXAotbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBcCi1saWJmZmkuY2FsbC9yZXR1cm5fZGJsLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIFwKLWxpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIGxpYmZmaS5jYWxsL3B5b2JqYy10Yy5jCVwKLWxpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNl8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jbHNfc2NoYXIuYyBcCi1saWJmZmkuY2FsbC9jbHNfMThieXRlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjMuYyBcCi1saWJmZmkuY2FsbC9lcnJfYmFkX3R5cGVkZWYuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMi5jCVwKLWxpYmZmaS5jYWxsL3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgXAotbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jIFwKLWxpYmZmaS5jYWxsL3JldHVybl9mbDMuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMJXAotbGliZmZpLmNhbGwvcHJvYmxlbTEuYyBsaWJmZmkuY2FsbC9mbG9hdDQuYyBcCi1saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMgbGliZmZpLmNhbGwvc3RydWN0OS5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfZm41LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIFwKLWxpYmZmaS5jYWxsL2Nsb3N1cmVfZm4wLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjYuYyBcCi1saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBcCi1saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBsaWJmZmkuY2FsbC9tYW55LmMgXAotbGliZmZpLmNhbGwvc3RydWN0OC5jIGxpYmZmaS5jYWxsL25lZ2ludC5jIGxpYmZmaS5jYWxsL3N0cnVjdDUuYyBcCi1saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMgbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jIFwKLWxpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIFwKK0VYVFJBX0RJU1QgPSBjb25maWcvZGVmYXVsdC5leHAgbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMgbGliZmZpLmNhbGwvY2xvc3VyZV9sb2NfZm4wLmMgXAorbGliZmZpLmNhbGwvY2xzX3NjaGFyLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjEuYyBcCitsaWJmZmkuY2FsbC9tYW55Ml93aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl91bC5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwyLmMgXAorbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYyBsaWJmZmkuY2FsbC9jbHNfNjRieXRlLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9mZml0ZXN0LmggXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdXNob3J0LmMgXAorbGliZmZpLmNhbGwvc3RydWN0My5jIGxpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYyBcCitsaWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgbGliZmZpLmNhbGwvc3RydWN0OC5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgbGliZmZpLmNhbGwvY2xzX211bHRpX3NzaG9ydC5jIFwKK2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYyBsaWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jIGxpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIFwKK2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zY2hhci5jIGxpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBcCitsaWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBsaWJmZmkuY2FsbC9jYWxsLmV4cCBcCitsaWJmZmkuY2FsbC9jbHNfZG91YmxlLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc191aW50LmMgbGliZmZpLmNhbGwvcmV0dXJuX2xsMS5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMgbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNC5jIGxpYmZmaS5jYWxsL2Nsc191Y2hhci5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDIuYyBsaWJmZmkuY2FsbC9jbHNfN2J5dGUuYyBsaWJmZmkuY2FsbC9zdHJsZW4uYyBcCitsaWJmZmkuY2FsbC9tYW55LmMgbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jIFwKK2xpYmZmaS5jYWxsL2Nsc19tdWx0aV9zc2hvcnRjaGFyLmMgXAorbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQyLmMgbGliZmZpLmNhbGwvcmV0dXJuX2RibDIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZmwzLmMgbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMgXAorbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYyBsaWJmZmkuY2FsbC9hLm91dCBcCitsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuMy5jIGxpYmZmaS5jYWxsL2Zsb2F0My5jIGxpYmZmaS5jYWxsL21hbnkyLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX2ZuNi5jIFwKK2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jIFwKK2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjIuYyBcCitsaWJmZmkuY2FsbC9jbHNfc3Nob3J0LmMgbGliZmZpLmNhbGwvbWFueV93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbHNfMjBieXRlLmMgXAorbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYyBsaWJmZmkuY2FsbC9jbHNfbXVsdGlfdWNoYXIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fdWMuYyBsaWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMgXAorbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jIGxpYmZmaS5jYWxsL2Nsc184Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL3Byb21vdGlvbi5jIGxpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYyBcCitsaWJmZmkuY2FsbC9yZXR1cm5fZGJsLmMgbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jIFwKK2xpYmZmaS5jYWxsL3N0cnVjdDQuYyBsaWJmZmkuY2FsbC9jbHNfNmJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMgbGliZmZpLmNhbGwvZmxvYXQuYyBcCitsaWJmZmkuY2FsbC9mbG9hdDEuYyBsaWJmZmkuY2FsbC9mbG9hdF92YS5jIGxpYmZmaS5jYWxsL25lZ2ludC5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9kYmwxLmMgbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYyBsaWJmZmkuY2FsbC9yZXR1cm5fZmwxLmMgXAogbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMgbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYyBcCi1saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCitsaWJmZmkuY2FsbC9mYXN0dGhpczFfd2luMzIuYyBsaWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgXAorbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMgbGliZmZpLmNhbGwvcmV0dXJuX3NsLmMgXAorbGliZmZpLmNhbGwvY2xvc3VyZV9mbjAuYyBsaWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBcCitsaWJmZmkuY2FsbC9jbHNfMmJ5dGUuYyBsaWJmZmkuY2FsbC9mbG9hdDIuYyBcCitsaWJmZmkuY2FsbC9jbHNfZGJsc19zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9jbHNfc2ludC5jIFwKK2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgbGliZmZpLmNhbGwvY2xzX3Vsb25nbG9uZy5jIFwKK2xpYmZmaS5jYWxsL2Nsc191c2hvcnQuYyBsaWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jIFwKK2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMgbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBcCitsaWJmZmkuY2FsbC9jbHNfZmxvYXQuYyBsaWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jIFwKK2xpYmZmaS5jYWxsL3B5b2JqYy10Yy5jIGxpYmZmaS5jYWxsL2Nsc19tdWx0aV91c2hvcnRjaGFyLmMgXAorbGliZmZpLmNhbGwvc3RydWN0MS5jIGxpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgXAorbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYyBsaWJmZmkuY2FsbC9wcm9ibGVtMS5jIGxpYmZmaS5jYWxsL2Zsb2F0NC5jIFwKK2xpYmZmaS5jYWxsL2Zhc3R0aGlzM193aW4zMi5jIGxpYmZmaS5jYWxsL3JldHVybl9sZGwuYyBcCitsaWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMgbGliZmZpLmNhbGwvY2xvc3VyZV9mbjUuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMgbGliZmZpLmNhbGwvc3RydWN0Ni5jIFwKK2xpYmZmaS5jYWxsL3JldHVybl9sbC5jIGxpYmZmaS5jYWxsL3N0cnVjdDkuYyBsaWJmZmkuY2FsbC9yZXR1cm5fc2MuYyBcCitsaWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIFwKK2xpYmZmaS5jYWxsL2Nsc180Ynl0ZS5jIGxpYmZmaS5jYWxsL3N0cmxlbl93aW4zMi5jIFwKK2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGxpYmZmaS5jYWxsL2Nsc183XzFfYnl0ZS5jIFwKK2xpYmZmaS5zcGVjaWFsL3Vud2luZHRlc3QuY2MgbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAgXAorbGliZmZpLnNwZWNpYWwvdW53aW5kdGVzdF9mZmlfY2FsbC5jYyBsaWJmZmkuc3BlY2lhbC9mZml0ZXN0Y3h4LmggXAorbGliL3dyYXBwZXIuZXhwIGxpYi90YXJnZXQtbGlicGF0aC5leHAgbGliL2xpYmZmaS5leHAKIAogYWxsOiBhbGwtYW0KIApAQCAtMjk4LDcgKzMwOCw3IEBACiAKIAogY2hlY2stREVKQUdOVTogc2l0ZS5leHAKLQlzcmNkaXI9YCQoYW1fX2NkKSAkKHNyY2RpcikgJiYgcHdkYDsgZXhwb3J0IHNyY2RpcjsgXAorCXNyY2Rpcj0nJChzcmNkaXIpJzsgZXhwb3J0IHNyY2RpcjsgXAogCUVYUEVDVD0kKEVYUEVDVCk7IGV4cG9ydCBFWFBFQ1Q7IFwKIAlydW50ZXN0PSQoUlVOVEVTVCk7IFwKIAlpZiAkKFNIRUxMKSAtYyAiJCRydW50ZXN0IC0tdmVyc2lvbiIgPiAvZGV2L251bGwgMj4mMTsgdGhlbiBcCkBAIC0zMDksMTIgKzMxOSwxMiBAQAogCWVsc2UgZWNobyAiV0FSTklORzogY291bGQgbm90IGZpbmQgXGBydW50ZXN0JyIgMT4mMjsgOjtcCiAJZmk7IFwKIAlleGl0ICQkZXhpdF9zdGF0dXMKLXNpdGUuZXhwOiBNYWtlZmlsZQorc2l0ZS5leHA6IE1ha2VmaWxlICQoRVhUUkFfREVKQUdOVV9TSVRFX0NPTkZJRykKIAlAZWNobyAnTWFraW5nIGEgbmV3IHNpdGUuZXhwIGZpbGUuLi4nCiAJQGVjaG8gJyMjIHRoZXNlIHZhcmlhYmxlcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgbWFrZSAjIycgPnNpdGUudG1wCiAJQGVjaG8gJyMgRG8gbm90IGVkaXQgaGVyZS4gIElmIHlvdSB3aXNoIHRvIG92ZXJyaWRlIHRoZXNlIHZhbHVlcycgPj5zaXRlLnRtcAogCUBlY2hvICcjIGVkaXQgdGhlIGxhc3Qgc2VjdGlvbicgPj5zaXRlLnRtcAotCUBlY2hvICdzZXQgc3JjZGlyICQoc3JjZGlyKScgPj5zaXRlLnRtcAorCUBlY2hvICdzZXQgc3JjZGlyICIkKHNyY2RpcikiJyA+PnNpdGUudG1wCiAJQGVjaG8gInNldCBvYmpkaXIgYHB3ZGAiID4+c2l0ZS50bXAKIAlAZWNobyAnc2V0IGJ1aWxkX2FsaWFzICIkKGJ1aWxkX2FsaWFzKSInID4+c2l0ZS50bXAKIAlAZWNobyAnc2V0IGJ1aWxkX3RyaXBsZXQgJChidWlsZF90cmlwbGV0KScgPj5zaXRlLnRtcApAQCAtMzIyLDkgKzMzMiwxNiBAQAogCUBlY2hvICdzZXQgaG9zdF90cmlwbGV0ICQoaG9zdF90cmlwbGV0KScgPj5zaXRlLnRtcAogCUBlY2hvICdzZXQgdGFyZ2V0X2FsaWFzICIkKHRhcmdldF9hbGlhcykiJyA+PnNpdGUudG1wCiAJQGVjaG8gJ3NldCB0YXJnZXRfdHJpcGxldCAkKHRhcmdldF90cmlwbGV0KScgPj5zaXRlLnRtcAotCUBlY2hvICcjIyBBbGwgdmFyaWFibGVzIGFib3ZlIGFyZSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiBEbyBOb3QgRWRpdCAjIycgPj5zaXRlLnRtcAotCUB0ZXN0ICEgLWYgc2l0ZS5leHAgfHwgXAotCSAgc2VkICcxLC9eIyMgQWxsIHZhcmlhYmxlcyBhYm92ZSBhcmUuKiMjLyBkJyBzaXRlLmV4cCA+PiBzaXRlLnRtcAorCUBsaXN0PSckKEVYVFJBX0RFSkFHTlVfU0lURV9DT05GSUcpJzsgZm9yIGYgaW4gJCRsaXN0OyBkbyBcCisJICBlY2hvICIjIyBCZWdpbiBjb250ZW50IGluY2x1ZGVkIGZyb20gZmlsZSAkJGYuICBEbyBub3QgbW9kaWZ5LiAjIyIgXAorCSAgICYmIGNhdCBgdGVzdCAtZiAiJCRmIiB8fCBlY2hvICckKHNyY2RpcikvJ2AkJGYgXAorCSAgICYmIGVjaG8gIiMjIEVuZCBjb250ZW50IGluY2x1ZGVkIGZyb20gZmlsZSAkJGYuICMjIiBcCisJICAgfHwgZXhpdCAxOyBcCisJIGRvbmUgPj4gc2l0ZS50bXAKKwlAZWNobyAiIyMgRW5kIG9mIGF1dG8tZ2VuZXJhdGVkIGNvbnRlbnQ7IHlvdSBjYW4gZWRpdCBmcm9tIGhlcmUuICMjIiA+PiBzaXRlLnRtcAorCUBpZiB0ZXN0IC1mIHNpdGUuZXhwOyB0aGVuIFwKKwkgICBzZWQgLWUgJzEsL14jIyBFbmQgb2YgYXV0by1nZW5lcmF0ZWQgY29udGVudC4qIyMvZCcgc2l0ZS5leHAgPj4gc2l0ZS50bXA7IFwKKwkgZmkKIAlALXJtIC1mIHNpdGUuYmFrCiAJQHRlc3QgISAtZiBzaXRlLmV4cCB8fCBtdiBzaXRlLmV4cCBzaXRlLmJhawogCUBtdiBzaXRlLnRtcCBzaXRlLmV4cApAQCAtMzgwLDEwICszOTcsMTUgQEAKIAogaW5zdGFsbGNoZWNrOiBpbnN0YWxsY2hlY2stYW0KIGluc3RhbGwtc3RyaXA6Ci0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKLQkgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAotCSAgYHRlc3QgLXogJyQoU1RSSVApJyB8fCBcCi0JICAgIGVjaG8gIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciYCBpbnN0YWxsCisJaWYgdGVzdCAteiAnJChTVFJJUCknOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAgIGluc3RhbGw7IFwKKwllbHNlIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIElOU1RBTExfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBcCisJICAgIGluc3RhbGxfc2hfUFJPR1JBTT0iJChJTlNUQUxMX1NUUklQX1BST0dSQU0pIiBJTlNUQUxMX1NUUklQX0ZMQUc9LXMgXAorCSAgICAiSU5TVEFMTF9QUk9HUkFNX0VOVj1TVFJJUFBST0c9JyQoU1RSSVApJyIgaW5zdGFsbDsgXAorCWZpCiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHAgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLmV4cApzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBNb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvbGliZmZpLWRnLmV4cApyZW5hbWUgdG8gTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS5leHAKaW5kZXggODM4YTMwNi4uNGE2NWVkMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS1kZy5leHAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL2xpYmZmaS5leHAKQEAgLTEsNCArMSw0IEBACi0jICAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA1LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNSwgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTEsOCArMTEsOCBAQAogIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorIyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIHByb2MgbG9hZF9nY2NfbGliIHsgZmlsZW5hbWUgfSB7CiAgICAgZ2xvYmFsIHNyY2RpcgpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgZ2xvYmFsIHRvb2xfcm9vdF9kaXIKICAgICBnbG9iYWwgbGRfbGlicmFyeV9wYXRoCiAKLSAgICBzZXQgYmxkZGlyZmZpIFtwd2RdLy4uCisgICAgc2V0IGJsZGRpcmZmaSBbcHdkXS8uLiAKICAgICB2ZXJib3NlICJsaWJmZmkgJGJsZGRpcmZmaSIKIAogICAgIHNldCBnY2NkaXIgW2xvb2tmb3JfZmlsZSAkdG9vbF9yb290X2RpciBnY2MvbGliZ2NjLmFdCkBAIC0yNjYsNiArMjY2LDU2IEBACiAgICAgfQogfQogCitwcm9jIGNoZWNrLWZsYWdzIHsgYXJncyB9IHsKKworICAgICMgVGhlIGFyZ3MgYXJlIHdpdGhpbiBhbm90aGVyIGxpc3Q7IHB1bGwgdGhlbSBvdXQuCisgICAgc2V0IGFyZ3MgW2xpbmRleCAkYXJncyAwXQorCisgICAgIyBUaGUgbmV4dCB0d28gYXJndW1lbnRzIGFyZSBvcHRpb25hbC4gIElmIHRoZXkgd2VyZSBub3Qgc3BlY2lmaWVkLAorICAgICMgdXNlIHRoZSBkZWZhdWx0cy4KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA9PSAyIH0geworCWxhcHBlbmQgJGFyZ3MgW2xpc3QgIioiXQorICAgIH0KKyAgICBpZiB7IFtsbGVuZ3RoICRhcmdzXSA9PSAzIH0geworCWxhcHBlbmQgJGFyZ3MgW2xpc3QgIiJdCisgICAgfQorCisgICAgIyBJZiB0aGUgb3B0aW9uIHN0cmluZ3MgYXJlIHRoZSBkZWZhdWx0cywgb3IgdGhlIHNhbWUgYXMgdGhlCisgICAgIyBkZWZhdWx0cywgdGhlcmUgaXMgbm8gbmVlZCB0byBjYWxsIGNoZWNrX2NvbmRpdGlvbmFsX3hmYWlsIHRvCisgICAgIyBjb21wYXJlIHRoZW0gdG8gdGhlIGFjdHVhbCBvcHRpb25zLgorICAgIGlmIHsgW3N0cmluZyBjb21wYXJlIFtsaW5kZXggJGFyZ3MgMl0gIioiXSA9PSAwCisJICYmIFtzdHJpbmcgY29tcGFyZSBbbGluZGV4ICRhcmdzIDNdICIiIF0gPT0gMCB9IHsKKwlzZXQgcmVzdWx0IDEgICAgCisgICAgfSBlbHNlIHsKKwkjIFRoZSB0YXJnZXQgbGlzdCBtaWdodCBiZSBhbiBlZmZlY3RpdmUtdGFyZ2V0IGtleXdvcmQsIHNvIHJlcGxhY2UKKwkjIHRoZSBvcmlnaW5hbCBsaXN0IHdpdGggIiotKi0qIiwgc2luY2Ugd2UgYWxyZWFkeSBrbm93IGl0IG1hdGNoZXMuCisJc2V0IHJlc3VsdCBbY2hlY2tfY29uZGl0aW9uYWxfeGZhaWwgW2xyZXBsYWNlICRhcmdzIDEgMSAiKi0qLSoiXV0KKyAgICB9CisKKyAgICByZXR1cm4gJHJlc3VsdAorfQorCitwcm9jIGRnLXNraXAtaWYgeyBhcmdzIH0geworICAgICMgVmVyaWZ5IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLiAgVGhlIGxhc3QgdHdvIGFyZSBvcHRpb25hbC4KKyAgICBzZXQgYXJncyBbbHJlcGxhY2UgJGFyZ3MgMCAwXQorICAgIGlmIHsgW2xsZW5ndGggJGFyZ3NdIDwgMiB8fCBbbGxlbmd0aCAkYXJnc10gPiA0IH0geworICAgICAgICBlcnJvciAiZGctc2tpcC1pZiAyOiBuZWVkIDIsIDMsIG9yIDQgYXJndW1lbnRzIgorICAgIH0KKworICAgICMgRG9uJ3QgYm90aGVyIGlmIHdlJ3JlIGFscmVhZHkgc2tpcHBpbmcgdGhlIHRlc3QuCisgICAgdXB2YXIgZGctZG8td2hhdCBkZy1kby13aGF0CisgICAgaWYgeyBbbGluZGV4ICR7ZGctZG8td2hhdH0gMV0gPT0gIk4iIH0geworICAgICAgcmV0dXJuCisgICAgfQorCisgICAgc2V0IHNlbGVjdG9yIFtsaXN0IHRhcmdldCBbbGluZGV4ICRhcmdzIDFdXQorICAgIGlmIHsgW2RnLXByb2Nlc3MtdGFyZ2V0ICRzZWxlY3Rvcl0gPT0gIlMiIH0geworICAgICAgICBpZiBbY2hlY2stZmxhZ3MgJGFyZ3NdIHsKKyAgICAgICAgICAgIHVwdmFyIGRnLWRvLXdoYXQgZGctZG8td2hhdAorICAgICAgICAgICAgc2V0IGRnLWRvLXdoYXQgW2xpc3QgW2xpbmRleCAke2RnLWRvLXdoYXR9IDBdICJOIiAiUCJdCisgICAgICAgIH0KKyAgICB9Cit9CiAKICMgV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhZGRpdGlvbmFsX2ZpbGVzIGFuZCBhZGRpdGlvbmFsX3NvdXJjZXMKICMgYXJlIGJvdGggY2xlYXJlZCBvdXQgYWZ0ZXIgZXZlcnkgdGVzdC4gIEl0IGlzIG5vdCBlbm91Z2ggdG8gY2xlYXIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWIvdGFyZ2V0LWxpYnBhdGguZXhwCmluZGV4IDg5OTlhYTQuLjZiN2JlYmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYi90YXJnZXQtbGlicGF0aC5leHAKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliL3RhcmdldC1saWJwYXRoLmV4cApAQCAtMjUsNyArMjUsNyBAQAogc2V0IG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyX3NhdmVkIDAKIHNldCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NF9zYXZlZCAwCiBzZXQgb3JpZ19keWxkX2xpYnJhcnlfcGF0aF9zYXZlZCAwCi0KK3NldCBvcmlnX3BhdGhfc2F2ZWQgMAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgcHJvYyBzZXRfbGRfbGlicmFyeV9wYXRoX2Vudl92YXJzIHsgfQpAQCAtNDIsNiArNDIsNyBAQAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzJfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0X3NhdmVkCiAgIGdsb2JhbCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoX3NhdmVkCisgIGdsb2JhbCBvcmlnX3BhdGhfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoCiAgIGdsb2JhbCBvcmlnX2xkX3J1bl9wYXRoCiAgIGdsb2JhbCBvcmlnX3NobGliX3BhdGgKQEAgLTUwLDYgKzUxLDcgQEAKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzMyCiAgIGdsb2JhbCBvcmlnX2xkX2xpYnJhcnlfcGF0aF82NAogICBnbG9iYWwgb3JpZ19keWxkX2xpYnJhcnlfcGF0aAorICBnbG9iYWwgb3JpZ19wYXRoCiAgIGdsb2JhbCBHQ0NfRVhFQ19QUkVGSVgKIAogICAjIFNldCB0aGUgcmVsb2NhdGVkIGNvbXBpbGVyIHByZWZpeCwgYnV0IG9ubHkgaWYgdGhlIHVzZXIgaGFzbid0IHNwZWNpZmllZCBvbmUuCkBAIC0xMDAsNiArMTAyLDEwIEBACiAgICAgICBzZXQgb3JpZ19keWxkX2xpYnJhcnlfcGF0aCAiJGVudihEWUxEX0xJQlJBUllfUEFUSCkiCiAgICAgICBzZXQgb3JpZ19keWxkX2xpYnJhcnlfcGF0aF9zYXZlZCAxCiAgICAgfQorICAgIGlmIFtpbmZvIGV4aXN0cyBlbnYoUEFUSCldIHsKKyAgICAgIHNldCBvcmlnX3BhdGggIiRlbnYoUEFUSCkiCisgICAgICBzZXQgb3JpZ19wYXRoX3NhdmVkIDEKKyAgICB9CiAgIH0KIAogICAjIFdlIG5lZWQgdG8gc2V0IGxkIGxpYnJhcnkgcGF0aCBpbiB0aGUgZW52aXJvbm1lbnQuICBDdXJyZW50bHksCkBAIC0xNjksNiArMTc1LDEzIEBACiAgIH0gZWxzZSB7CiAgICAgc2V0ZW52IERZTERfTElCUkFSWV9QQVRIICIkbGRfbGlicmFyeV9wYXRoIgogICB9CisgIGlmIHsgW2lzdGFyZ2V0ICotKi1jeWd3aW4qXSB8fCBbaXN0YXJnZXQgKi0qLW1pbmd3Kl0gfSB7CisgICAgaWYgeyAkb3JpZ19wYXRoX3NhdmVkIH0geworICAgICAgc2V0ZW52IFBBVEggIiRsZF9saWJyYXJ5X3BhdGg6JG9yaWdfcGF0aCIKKyAgICB9IGVsc2UgeworICAgICAgc2V0ZW52IFBBVEggIiRsZF9saWJyYXJ5X3BhdGgiCisgICAgfQorICB9CiAKICAgdmVyYm9zZSAtbG9nICJzZXRfbGRfbGlicmFyeV9wYXRoX2Vudl92YXJzOiBsZF9saWJyYXJ5X3BhdGg9JGxkX2xpYnJhcnlfcGF0aCIKIH0KQEAgLTE4Nyw2ICsyMDAsNyBAQAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzJfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0X3NhdmVkCiAgIGdsb2JhbCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoX3NhdmVkCisgIGdsb2JhbCBvcmlnX3BhdGhfc2F2ZWQKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoCiAgIGdsb2JhbCBvcmlnX2xkX3J1bl9wYXRoCiAgIGdsb2JhbCBvcmlnX3NobGliX3BhdGgKQEAgLTE5NSw2ICsyMDksNyBAQAogICBnbG9iYWwgb3JpZ19sZF9saWJyYXJ5X3BhdGhfMzIKICAgZ2xvYmFsIG9yaWdfbGRfbGlicmFyeV9wYXRoXzY0CiAgIGdsb2JhbCBvcmlnX2R5bGRfbGlicmFyeV9wYXRoCisgIGdsb2JhbCBvcmlnX3BhdGgKIAogICBpZiB7ICRvcmlnX2Vudmlyb25tZW50X3NhdmVkID09IDAgfSB7CiAgICAgcmV0dXJuCkBAIC0yNDAsNiArMjU1LDExIEBACiAgIH0gZWxzZWlmIFtpbmZvIGV4aXN0cyBlbnYoRFlMRF9MSUJSQVJZX1BBVEgpXSB7CiAgICAgdW5zZXRlbnYgRFlMRF9MSUJSQVJZX1BBVEgKICAgfQorICBpZiB7ICRvcmlnX3BhdGhfc2F2ZWQgfSB7CisgICAgc2V0ZW52IFBBVEggIiRvcmlnX3BhdGgiCisgIH0gZWxzZWlmIFtpbmZvIGV4aXN0cyBlbnYoUEFUSCldIHsKKyAgICB1bnNldGVudiBQQVRICisgIH0KIH0KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9hLm91dCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Eub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkzZWU4NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9hLm91dApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jYWxsLmV4cCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwCmluZGV4IDFlOTk4NWUuLjI2YWNkODEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2NhbGwuZXhwCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwMywgMjAwNiwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQsMTAgKzE0LDYgQEAKICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi0jIGxpYmZmaSB0ZXN0c3VpdGUgdGhhdCB1c2VzIHRoZSAnZGcuZXhwJyBkcml2ZXIuCi0KLWxvYWRfbGliIGxpYmZmaS1kZy5leHAKLQogZGctaW5pdAogbGliZmZpLWluaXQKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xvc3VyZV9zdGRjYWxsLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYwppbmRleCA2YmZjYzFmLi4xNDA3ZjAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3N0ZGNhbGwuYwpAQCAtNDksOSArNDksMTcgQEAKICAgQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbG9zdXJlX3Rlc3Rfc3RkY2FsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgMyAvKiB1c2VyZGF0YSAqLywgY29kZSkgPT0gRkZJX09LKTsKIAorI2lmZGVmIF9NU0NfVkVSCisgIF9fYXNtIHsgbW92IHNwX3ByZSwgZXNwIH0KKyNlbHNlCiAgIGFzbSB2b2xhdGlsZSAoIiBtb3ZsICUlZXNwLCUwIiA6ICI9ZyIgKHNwX3ByZSkpOworI2VuZGlmCiAgIHJlcyA9ICgqKGNsb3N1cmVfdGVzdF90eXBlMCljb2RlKSgwLCAxLCAyLCAzKTsKKyNpZmRlZiBfTVNDX1ZFUgorICBfX2FzbSB7IG1vdiBzcF9wb3N0LCBlc3AgfQorI2Vsc2UKICAgYXNtIHZvbGF0aWxlICgiIG1vdmwgJSVlc3AsJTAiIDogIj1nIiAoc3BfcG9zdCkpOworI2VuZGlmCiAgIC8qIHsgZGctb3V0cHV0ICIwIDEgMiAzOiA5IiB9ICovCiAKICAgcHJpbnRmKCJyZXM6ICVkXG4iLHJlcyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbG9zdXJlX3RoaXNjYWxsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGY5MzY0OQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsb3N1cmVfdGhpc2NhbGwuYwpAQCAtMCwwICsxLDcyIEBACisvKiBBcmVhOgljbG9zdXJlX2NhbGwgKHRoaXNjYWxsIGNvbnZlbnRpb24pCisgICBQdXJwb3NlOglDaGVjayBoYW5kbGluZyB3aGVuIGNhbGxlciBleHBlY3RzIHRoaXNjYWxsIGNhbGxlZQorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOgk8a3RpZXR6QHJlZGhhdC5jb20+ICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgdm9pZAorY2xvc3VyZV90ZXN0X3RoaXNjYWxsKGZmaV9jaWYqIGNpZiBfX1VOVVNFRF9fLCB2b2lkKiByZXNwLCB2b2lkKiogYXJncywKKwkJICAgICAgdm9pZCogdXNlcmRhdGEpCit7CisgICooZmZpX2FyZyopcmVzcCA9CisgICAgKGludCkqKGludCAqKWFyZ3NbMF0gKyAoaW50KSgqKGludCAqKWFyZ3NbMV0pCisgICAgKyAoaW50KSgqKGludCAqKWFyZ3NbMl0pICArIChpbnQpKCooaW50ICopYXJnc1szXSkKKyAgICArIChpbnQpKGludHB0cl90KXVzZXJkYXRhOworCisgIHByaW50ZigiJWQgJWQgJWQgJWQ6ICVkXG4iLAorCSAoaW50KSooaW50ICopYXJnc1swXSwgKGludCkoKihpbnQgKilhcmdzWzFdKSwKKwkgKGludCkoKihpbnQgKilhcmdzWzJdKSwgKGludCkoKihpbnQgKilhcmdzWzNdKSwKKyAgICAgICAgIChpbnQpKihmZmlfYXJnICopcmVzcCk7CisKK30KKwordHlwZWRlZiBpbnQgKF9fdGhpc2NhbGwgKmNsb3N1cmVfdGVzdF90eXBlMCkoaW50LCBpbnQsIGludCwgaW50KTsKKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICB2b2lkICpjb2RlOworICBmZmlfY2xvc3VyZSAqcGNsID0gZmZpX2Nsb3N1cmVfYWxsb2Moc2l6ZW9mKGZmaV9jbG9zdXJlKSwgJmNvZGUpOworICBmZmlfdHlwZSAqIGNsX2FyZ190eXBlc1sxN107CisgIGludCByZXM7CisgIHZvaWQqIHNwX3ByZTsKKyAgdm9pZCogc3BfcG9zdDsKKyAgY2hhciBidWZbMTAyNF07CisKKyAgY2xfYXJnX3R5cGVzWzBdID0gJmZmaV90eXBlX3VpbnQ7CisgIGNsX2FyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV91aW50OworICBjbF9hcmdfdHlwZXNbMl0gPSAmZmZpX3R5cGVfdWludDsKKyAgY2xfYXJnX3R5cGVzWzNdID0gJmZmaV90eXBlX3VpbnQ7CisgIGNsX2FyZ190eXBlc1s0XSA9IE5VTEw7CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfVEhJU0NBTEwsIDQsCisJCSAgICAgJmZmaV90eXBlX3NpbnQsIGNsX2FyZ190eXBlcykgPT0gRkZJX09LKTsKKworICBDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsb3N1cmVfdGVzdF90aGlzY2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgMyAvKiB1c2VyZGF0YSAqLywgY29kZSkgPT0gRkZJX09LKTsKKworI2lmZGVmIF9NU0NfVkVSCisgIF9fYXNtIHsgbW92IHNwX3ByZSwgZXNwIH0KKyNlbHNlCisgIGFzbSB2b2xhdGlsZSAoIiBtb3ZsICUlZXNwLCUwIiA6ICI9ZyIgKHNwX3ByZSkpOworI2VuZGlmCisgIHJlcyA9ICgqKGNsb3N1cmVfdGVzdF90eXBlMCljb2RlKSgwLCAxLCAyLCAzKTsKKyNpZmRlZiBfTVNDX1ZFUgorICBfX2FzbSB7IG1vdiBzcF9wb3N0LCBlc3AgfQorI2Vsc2UKKyAgYXNtIHZvbGF0aWxlICgiIG1vdmwgJSVlc3AsJTAiIDogIj1nIiAoc3BfcG9zdCkpOworI2VuZGlmCisgIC8qIHsgZGctb3V0cHV0ICIwIDEgMiAzOiA5IiB9ICovCisKKyAgcHJpbnRmKCJyZXM6ICVkXG4iLHJlcyk7CisgIC8qIHsgZGctb3V0cHV0ICJcbnJlczogOSIgfSAqLworCisgIHNwcmludGYoYnVmLCAibWlzbWF0Y2g6IHByZT0lcCB2cyBwb3N0PSVwIiwgc3BfcHJlLCBzcF9wb3N0KTsKKyAgcHJpbnRmKCJzdGFjayBwb2ludGVyICVzXG4iLCAoc3BfcHJlID09IHNwX3Bvc3QgPyAibWF0Y2giIDogYnVmKSk7CisgIC8qIHsgZGctb3V0cHV0ICJcbnN0YWNrIHBvaW50ZXIgbWF0Y2giIH0gKi8KKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xMmJ5dGUuYwppbmRleCBmMGEzMzRmLi5lYTA4MjVkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTJieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzEyYnl0ZS5jCkBAIC00OSwxNSArNDksMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgaF9kYmwgPSB7IDcsIDQsIDkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIGpfZGJsID0geyAxLCA1LCAzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xMmJ5dGUgaF9kYmwgPSB7IDcsIDQsIDkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTJieXRlIGpfZGJsID0geyAxLCA1LCAzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzEyYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3NpbnQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTZieXRlLmMKaW5kZXggOWI5MjkyYS4uODlhMDhhMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE2Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xNmJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIGhfZGJsID0geyA3LCA4LjAsIDkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIGpfZGJsID0geyAxLCA5LjAsIDMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSBoX2RibCA9IHsgNywgOC4wLCA5IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSBqX2RibCA9IHsgMSwgOS4wLCAzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOGJ5dGUuYwppbmRleCA0MGM4YzZkLi45Zjc1ZGE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMThieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE4Ynl0ZS5jCkBAIC01NCwxNSArNTQsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgZ19kYmwgPSB7IDEuMCwgMTI3LCAxMjYsIDMuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgZl9kYmwgPSB7IDQuMCwgMTI1LCAxMjQsIDUuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIGdfZGJsID0geyAxLjAsIDEyNywgMTI2LCAzLjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIGZfZGJsID0geyA0LjAsIDEyNSwgMTI0LCA1LjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMThieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMTlieXRlLmMKaW5kZXggYWE2NDI0OC4uMjc4Nzk0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzE5Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xOWJ5dGUuYwpAQCAtNTcsMTUgKzU3LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIGdfZGJsID0geyAxLjAsIDEyNywgMTI2LCAzLjAsIDEyMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgZl9kYmwgPSB7IDQuMCwgMTI1LCAxMjQsIDUuMCwgMTE5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xOWJ5dGUgZ19kYmwgPSB7IDEuMCwgMTI3LCAxMjYsIDMuMCwgMTIwIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE5Ynl0ZSBmX2RibCA9IHsgNC4wLCAxMjUsIDEyNCwgNS4wLCAxMTkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTlieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzFfMWJ5dGUuYwppbmRleCBiOTQwMmQ2Li44MjQ5MmMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMV8xYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18xXzFieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgZ19kYmwgPSB7IDEyIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgZl9kYmwgPSB7IDE3OCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgZ19kYmwgPSB7IDEyIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzFfMWJ5dGUgZl9kYmwgPSB7IDE3OCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xXzFieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZS5jCmluZGV4IDgwZGQ3YWMuLjNmOGJiMjggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBnX2RibCA9IHsgMS4wLCAyLjAsIDMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGZfZGJsID0geyA0LjAsIDUuMCwgNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGdfZGJsID0geyAxLjAsIDIuMCwgMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZl9kYmwgPSB7IDQuMCwgNS4wLCA3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yMGJ5dGUxLmMKaW5kZXggNTBiY2JiZi4uNjU2MjcyNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzIwYnl0ZTEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjBieXRlMS5jCkBAIC01MiwxNSArNTIsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCwgMy4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBmX2RibCA9IHsgNCwgNS4wLCA3LjAgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzIwYnl0ZSBnX2RibCA9IHsgMSwgMi4wLCAzLjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMjBieXRlIGZfZGJsID0geyA0LCA1LjAsIDcuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yMGJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yNGJ5dGUuYwppbmRleCA0NmE2ZWI0Li4xZDgyZjZlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfMjRieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzI0Ynl0ZS5jCkBAIC02MSwxNyArNjEsMTcgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0gIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLSAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIGVfZGJsID0geyA5LjAsIDIuMCwgNiwgNS4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSBmX2RibCA9IHsgMS4wLCAyLjAsIDMsIDcuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF8yNGJ5dGUgZ19kYmwgPSB7IDQuMCwgNS4wLCA3LCA5LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfMjRieXRlIGhfZGJsID0geyA4LjAsIDYuMCwgMSwgNC4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzI0Ynl0ZSByZXNfZGJsOwogCisgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKyAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOworICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18yYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmMKaW5kZXggMTAxZTEzMC4uODFiYjBhNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzJieXRlLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIGdfZGJsID0geyAxMiwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzJieXRlIGZfZGJsID0geyAxLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSBnX2RibCA9IHsgMTIsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8yYnl0ZSBmX2RibCA9IHsgMSwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMmJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM18xYnl0ZS5jCmluZGV4IGZjNzgwYzMuLmI3ODI3NDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zXzFieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNfMWJ5dGUuYwpAQCAtNTQsMTUgKzU0LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSBnX2RibCA9IHsgMTIsIDEzLCAxNCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIGZfZGJsID0geyAxNzgsIDE3OSwgMTgwIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM18xYnl0ZSBnX2RibCA9IHsgMTIsIDEzLCAxNCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zXzFieXRlIGZfZGJsID0geyAxNzgsIDE3OSwgMTgwIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzNfMWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMS5jCmluZGV4IDU3MDVjZTMuLmEwMmM0NjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUxLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIGdfZGJsID0geyAxMiwgMTE5IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlIGZfZGJsID0geyAxLCAxNSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSBnX2RibCA9IHsgMTIsIDExOSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZSBmX2RibCA9IHsgMSwgMTUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfM2J5dGUyLmMKaW5kZXggMDE3NzBhMC4uYzcyNTFjZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzNieXRlMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc18zYnl0ZTIuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSBnX2RibCA9IHsgMTUsIDEyNSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIGZfZGJsID0geyA5LCAxOSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8zYnl0ZV8xIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzNieXRlXzEgZ19kYmwgPSB7IDE1LCAxMjUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSBmX2RibCA9IHsgOSwgMTkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfM2J5dGVfMSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNF8xYnl0ZS5jCmluZGV4IGYzODA2ZDcuLjJkNmQ4YjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc180XzFieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRfMWJ5dGUuYwpAQCAtNTYsMTUgKzU2LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSBnX2RibCA9IHsgMTIsIDEzLCAxNCwgMTUgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSBmX2RibCA9IHsgMTc4LCAxNzksIDE4MCwgMTgxIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSBnX2RibCA9IHsgMTIsIDEzLCAxNCwgMTUgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNF8xYnl0ZSBmX2RibCA9IHsgMTc4LCAxNzksIDE4MCwgMTgxIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzRfMWJ5dGUgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzRieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYwppbmRleCBhMWFiYTNjLi40YWMzNzg3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNGJ5dGUuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNGJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIGZfZGJsID0geyAxMiwgMTI4IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzRieXRlIGdfZGJsID0geyAxMjcsIDEyMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF80Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNV8xX2J5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jCmluZGV4IDJjZWJhM2QuLmFkOWQ1MWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181XzFfYnl0ZS5jCkBAIC01OCwxNSArNTgsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDMsIDQgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDMsIDQgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNWJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jCmluZGV4IDYxZDU5NWMuLjRlMGMwMDAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc181Ynl0ZS5jCkBAIC01MywxNSArNTMsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDkgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCB9OworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF81Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDkgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfNWJ5dGUgcmVzX2RibCA9IHsgMCwgMCwgMCB9OwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VzaG9ydDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182NGJ5dGUuYwppbmRleCA1NzZlYmUwLi5hNTVlZGMyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNjRieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzY0Ynl0ZS5jCkBAIC02NiwxNyArNjYsMTcgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0gIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLSAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIGVfZGJsID0geyA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgNC4wLCA4LjAsIDEuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wIH07CiAgIHN0cnVjdCBjbHNfc3RydWN0XzY0Ynl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDEuMCwgMi4wLCA5LjAgfTsKICAgc3RydWN0IGNsc19zdHJ1Y3RfNjRieXRlIGhfZGJsID0geyA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgMy4wLCAzLjAsIDEuMCB9OwogICBzdHJ1Y3QgY2xzX3N0cnVjdF82NGJ5dGUgcmVzX2RibDsKIAorICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOworICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182XzFfYnl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMKaW5kZXggOWYyZWZmNi4uYjRkY2RiYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZfMV9ieXRlLmMKQEAgLTYwLDE1ICs2MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCwgNSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCwgNSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwLCAwIH07CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIGdfZGJsID0geyAxMjcsIDEyMCwgMSwgMywgNCwgNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMywgNCwgNSB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSByZXNfZGJsID0geyAwLCAwLCAwLCAwLCAwLCAwIH07Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc182Ynl0ZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzZieXRlLmMKaW5kZXggNzMyNTdiMDk4Li43NDA2NzgwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfNmJ5dGUuYwpAQCAtNTYsMTUgKzU2LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAxMjggfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfNmJ5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDEyOCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF82Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzZieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdfMV9ieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYwppbmRleCA1MGQwOWM5Li4xNGE3ZTk2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN18xX2J5dGUuYwpAQCAtNjIsMTUgKzYyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0LCA1LCA2IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0LCA1LCA2IH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAzLCA0LCA1LCA2IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIGZfZGJsID0geyAxMiwgMTI4LCA5LCAzLCA0LCA1LCA2IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHJlc19kYmwgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzdieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYwppbmRleCBmNWMwMDAwLi4xNjQ1Y2M2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfN2J5dGUuYwpAQCAtNTUsMTUgKzU1LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZ19kYmwgPSB7IDEyNywgMTIwLCAxLCAyNTQgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfN2J5dGUgZl9kYmwgPSB7IDEyLCAxMjgsIDksIDI1NSB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBnX2RibCA9IHsgMTI3LCAxMjAsIDEsIDI1NCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF83Ynl0ZSBmX2RibCA9IHsgMTIsIDEyOCwgOSwgMjU1IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzdieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91c2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzhieXRlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYwppbmRleCA0YWE5OWQxLi5mNmMxZWE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOGJ5dGUuYwpAQCAtNDksMTUgKzQ5LDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgZ19kYmwgPSB7IDEsIDIuMCB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSBmX2RibCA9IHsgNCwgNS4wIH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzhieXRlIGdfZGJsID0geyAxLCAyLjAgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOGJ5dGUgZl9kYmwgPSB7IDQsIDUuMCB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF84Ynl0ZSByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3NpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUxLmMKaW5kZXggY2M1ZTlkNi4uMGI4NTcyMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTEuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgaF9kYmwgPSB7IDcsIDguMH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGpfZGJsID0geyAxLCA5LjB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNywgOC4wfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEsIDkuMH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfOWJ5dGUyLmMKaW5kZXggNWMwYmEwZC4uZWRmOTkxZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzXzlieXRlMi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc185Ynl0ZTIuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgaF9kYmwgPSB7IDcuMCwgOH07CisgIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIGpfZGJsID0geyAxLjAsIDl9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF85Ynl0ZSBoX2RibCA9IHsgNy4wLCA4fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfOWJ5dGUgal9kYmwgPSB7IDEuMCwgOX07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzlieXRlIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZG91YmxlLmMKaW5kZXggMjJiOTRkNS4uYWFkNWYzYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2RvdWJsZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9kb3VibGUuYwpAQCAtNTIsMTUgKzUyLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2Zsb2F0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYwppbmRleCA2MjYzN2YyLi4zN2UwODU1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fZmxvYXQuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGUuYwppbmRleCBhZjM4MDYwLi5iMzMyMmQ4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlLmMKQEAgLTUxLDE1ICs1MSwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX2xvbmdkb3VibGVfc3BsaXQuYwppbmRleCA0Mjc0YWYxLi4xNWY5MzY1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0LmMKQEAgLTYsNyArNiw3IEBACiAKIC8qIHsgZGctZXhjZXNzLWVycm9ycyAibm8gbG9uZyBkb3VibGUgZm9ybWF0IiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotKiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotbGludXgqIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIAogI2luY2x1ZGUgImZmaXRlc3QuaCIKQEAgLTg3LDE1ICs4NywxNSBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxLCAyLCAzLCA0LCA1LCA2LCA3IH07CisJc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCB9OworCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKIAljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMSwgMiwgMywgNCwgNSwgNiwgNyB9OwotCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQgfTsKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAJY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fbG9uZ2RvdWJsZV9zcGxpdDIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jCmluZGV4IDA4OGYwZDMuLmNhMWMzNTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9sb25nZG91YmxlX3NwbGl0Mi5jCkBAIC03LDcgKzcsNyBAQAogCiAvKiB7IGRnLWV4Y2Vzcy1lcnJvcnMgIm5vIGxvbmcgZG91YmxlIGZvcm1hdCIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIC8qIHsgZGctZG8gcnVuIHsgeGZhaWwgc3Ryb25nYXJtKi0qLSogfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLSogfSB9ICovCisvKiB7IGRnLW9wdGlvbnMgLW1sb25nLWRvdWJsZS0xMjggeyB0YXJnZXQgcG93ZXJwYzY0Ki0qLWxpbnV4KiB9IH0gKi8KIC8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAKICNpbmNsdWRlICJmZml0ZXN0LmgiCkBAIC02NywxNSArNjcsMTUgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMSwgMiwgMywgNCwgNSwgNiwgNyB9OworCXN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQgfTsKKwlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAJY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEsIDIsIDMsIDQsIDUsIDYsIDcgfTsKLQlzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0IH07Ci0Jc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2xvbmdkb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9sb25nZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9wb2ludGVyLmMKaW5kZXggY2JjNGY5NS4uOGZiZjM2YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3BvaW50ZXIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fcG9pbnRlci5jCkBAIC01NCwxNSArNTQsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsICh2b2lkICopNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCAodm9pZCAqKTkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgKHZvaWQgKik0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsICh2b2lkICopOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDE2LmMKaW5kZXggMzgzZWE0MS4uMDM5Yjg3NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQxNi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MTYuYwpAQCAtNTAsMTUgKzUwLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zc2hvcnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQzMi5jCmluZGV4IDcwNWQ3OGMuLmM5NmM2ZDEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50MzIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDMyLmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfc2ludDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfdWNoYXI7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fc2ludDY0LmMKaW5kZXggMzFkNTNhZi4uOWFhN2JkZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3NpbnQ2NC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl9zaW50NjQuYwpAQCAtNTEsMTUgKzUxLDE1IEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9zaW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQxNi5jCmluZGV4IGNiNmI3NDguLjk3NjIwYjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MTYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDE2LmMKQEAgLTUwLDE1ICs1MCwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdXNob3J0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50MzIuYwppbmRleCBlNDUzZDNlLi41NzY2ZmFkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDMyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQzMi5jCkBAIC01MCwxNSArNTAsMTUgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZ19kYmwgPSB7IDEyLCA0OTUxLCAxMjcgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gZl9kYmwgPSB7IDEsIDkzMjAsIDEzIH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VpbnQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX3VjaGFyOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2FsaWduX3VpbnQ2NC5jCmluZGV4IDQ5NWM3OWYuLmE1MmNiODkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19hbGlnbl91aW50NjQuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfYWxpZ25fdWludDY0LmMKQEAgLTUyLDE1ICs1MiwxNSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGdfZGJsID0geyAxMiwgNDk1MSwgMTI3IH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2FsaWduIGZfZGJsID0geyAxLCA5MzIwLCAxMyB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBnX2RibCA9IHsgMTIsIDQ5NTEsIDEyNyB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9hbGlnbiBmX2RibCA9IHsgMSwgOTMyMCwgMTMgfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfYWxpZ24gcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWludDY0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV91Y2hhcjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kYmxzX3N0cnVjdC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMKaW5kZXggNjYwZGFiYi4uZDY2Mzc5MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RibHNfc3RydWN0LmMKQEAgLTM3LDYgKzM3LDggQEAKIAlmZmlfdHlwZQl0czFfdHlwZTsKIAlmZmlfdHlwZSoJdHMxX3R5cGVfZWxlbWVudHNbNF07CiAKKwlEYmxzIGFyZyA9IHsgMS4wLCAyLjAgfTsKKwogCXRzMV90eXBlLnNpemUgPSAwOwogCXRzMV90eXBlLmFsaWdubWVudCA9IDA7CiAJdHMxX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTQ4LDggKzUwLDYgQEAKIAogCWNsX2FyZ190eXBlc1swXSA9ICZ0czFfdHlwZTsKIAotCURibHMgYXJnID0geyAxLjAsIDIuMCB9OwotCiAJLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCiAJQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMSwKIAkJCQkgJmZmaV90eXBlX3ZvaWQsIGNsX2FyZ190eXBlcykgPT0gRkZJX09LKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19kb3VibGVfdmEuYwppbmRleCAwNjk1ODc0Li5kYmYyMDAwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfZG91YmxlX3ZhLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2RvdWJsZV92YS5jCkBAIC02LDYgKzYsOCBAQAogCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCBhdnIzMiotKi0qIH0gfSAqLworLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCBtaXBzLXNnaS1pcml4NiogfSB9IFBSIGxpYmZmaS80NjY2MCAqLworCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgogCiBzdGF0aWMgdm9pZApAQCAtMzQsNyArMzYsOCBAQAogCWFyZ190eXBlc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJYXJnX3R5cGVzWzJdID0gTlVMTDsKIAotCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsICZmZmlfdHlwZV9zaW50LAorCS8qIFRoaXMgcHJpbnRmIGNhbGwgaXMgdmFyaWFkaWMgKi8KKwlDSEVDSyhmZmlfcHJlcF9jaWZfdmFyKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMSwgMiwgJmZmaV90eXBlX3NpbnQsCiAJCWFyZ190eXBlcykgPT0gRkZJX09LKTsKIAogCWFyZ3NbMF0gPSAmZm9ybWF0OwpAQCAtNDYsNiArNDksOSBAQAogCXByaW50ZigicmVzOiAlZFxuIiwgKGludCkgcmVzKTsKIAkvLyB7IGRnLW91dHB1dCAiXG5yZXM6IDQiIH0KIAorCS8qIFRoZSBjYWxsIHRvIGNsc19kb3VibGVfdmFfZm4gaXMgc3RhdGljLCBzbyBoYXZlIHRvIHVzZSBhIG5vcm1hbCBwcmVwX2NpZiAqLworCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfREVGQVVMVF9BQkksIDIsICZmZmlfdHlwZV9zaW50LCBhcmdfdHlwZXMpID09IEZGSV9PSyk7CisKIAlDSEVDSyhmZmlfcHJlcF9jbG9zdXJlX2xvYyhwY2wsICZjaWYsIGNsc19kb3VibGVfdmFfZm4sIE5VTEwsIGNvZGUpID09IEZGSV9PSyk7CiAKIAlyZXMJPSAoKGludCgqKShjaGFyKiwgZG91YmxlKSkoY29kZSkpKGZvcm1hdCwgZG91YmxlQXJnKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZS5jCmluZGV4IDUyYWY2Y2YuLmU2YmFjMWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGUuYwpAQCAtNiw3ICs2LDcgQEAKIAogLyogeyBkZy1leGNlc3MtZXJyb3JzICJubyBsb25nIGRvdWJsZSBmb3JtYXQiIHsgeGZhaWwgeDg2XzY0LSotbWluZ3cqIHg4Nl82NC0qLWN5Z3dpbiogfSB9ICovCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIGFybSotKi0qIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwotLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi0qIH0gfSAqLworLyogeyBkZy1vcHRpb25zIC1tbG9uZy1kb3VibGUtMTI4IHsgdGFyZ2V0IHBvd2VycGM2NCotKi1saW51eCogfSB9ICovCiAvKiB7IGRnLW91dHB1dCAiIiB7IHhmYWlsIHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogCiAjaW5jbHVkZSAiZmZpdGVzdC5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19sb25nZG91YmxlX3ZhLmMKaW5kZXggMzg1NjRjYi4uNGZhMWVhMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX2xvbmdkb3VibGVfdmEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfbG9uZ2RvdWJsZV92YS5jCkBAIC02LDYgKzYsOCBAQAogCiAvKiB7IGRnLWRvIHJ1biB7IHhmYWlsIHN0cm9uZ2FybSotKi0qIHhzY2FsZSotKi0qIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCBhdnIzMiotKi0qIHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KKy8qIHsgZGctb3V0cHV0ICIiIHsgeGZhaWwgbWlwcy1zZ2ktaXJpeDYqIH0gfSBQUiBsaWJmZmkvNDY2NjAgKi8KKwogI2luY2x1ZGUgImZmaXRlc3QuaCIKIAogc3RhdGljIHZvaWQKQEAgLTM0LDcgKzM2LDggQEAKIAlhcmdfdHlwZXNbMV0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKIAlhcmdfdHlwZXNbMl0gPSBOVUxMOwogCi0JQ0hFQ0soZmZpX3ByZXBfY2lmKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgJmZmaV90eXBlX3NpbnQsCisJLyogVGhpcyBwcmludGYgY2FsbCBpcyB2YXJpYWRpYyAqLworCUNIRUNLKGZmaV9wcmVwX2NpZl92YXIoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAxLCAyLCAmZmZpX3R5cGVfc2ludCwKIAkJYXJnX3R5cGVzKSA9PSBGRklfT0spOwogCiAJYXJnc1swXSA9ICZmb3JtYXQ7CkBAIC00Niw2ICs0OSwxMCBAQAogCXByaW50ZigicmVzOiAlZFxuIiwgKGludCkgcmVzKTsKIAkvLyB7IGRnLW91dHB1dCAiXG5yZXM6IDQiIH0KIAorCS8qIFRoZSBjYWxsIHRvIGNsc19sb25nZG91YmxlX3ZhX2ZuIGlzIHN0YXRpYywgc28gaGF2ZSB0byB1c2UgYSBub3JtYWwgcHJlcF9jaWYgKi8KKwlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAyLCAmZmZpX3R5cGVfc2ludCwKKwkJYXJnX3R5cGVzKSA9PSBGRklfT0spOworCiAJQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbHNfbG9uZ2RvdWJsZV92YV9mbiwgTlVMTCwgY29kZSkgPT0gRkZJX09LKTsKIAogCXJlcwk9ICgoaW50KCopKGNoYXIqLCBsb25nIGRvdWJsZSkpKGNvZGUpKShmb3JtYXQsIGxkQXJnKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlci5jCmluZGV4IGZhZGQzNTMuLmNmMDM5OTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXIuYwpAQCAtNjUsNyArNjUsNyBAQAogCiAJQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbHNfcG9pbnRlcl9nbiwgTlVMTCwgY29kZSkgPT0gRkZJX09LKTsKIAotCXJlcyA9IChmZmlfYXJnKSgodm9pZCooKikodm9pZCosIHZvaWQqKSkoY29kZSkpKGFyZzEsIGFyZzIpOworCXJlcyA9IChmZmlfYXJnKSh1aW50cHRyX3QpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CiAJLyogeyBkZy1vdXRwdXQgIlxuMHgxMjM0NTY3OCAweDg5YWJjZGVmOiAweDliZTAyNDY3IiB9ICovCiAJcHJpbnRmKCJyZXM6IDB4JTA4eFxuIiwgKHVuc2lnbmVkIGludCkgcmVzKTsKIAkvKiB7IGRnLW91dHB1dCAiXG5yZXM6IDB4OWJlMDI0NjciIH0gKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9jbHNfcG9pbnRlcl9zdGFjay5jCmluZGV4IDY5N2YyNzEuLmUzMTEzOWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Nsc19wb2ludGVyX3N0YWNrLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvY2xzX3BvaW50ZXJfc3RhY2suYwpAQCAtMjgsMTEgKzI4LDEyIEBACiAJY2hhcgkJdHJhbXBsZTYJPSB0cmFtcGxlNCArICgoY2hhciopJmEyKVsxXTsKIAlsb25nIGRvdWJsZQl0cmFtcGxlNwk9IChpbnRwdHJfdCl0cmFtcGxlNSArIChpbnRwdHJfdCl0cmFtcGxlMTsKIAljaGFyCQl0cmFtcGxlOAk9IHRyYW1wbGU2ICsgdHJhbXBsZTI7CisJdm9pZCoJCXJlc3VsdDsKIAogCWR1bW15VmFyCT0gZHVtbXlfZnVuYyh0cmFtcGxlMSwgdHJhbXBsZTIsIHRyYW1wbGUzLCB0cmFtcGxlNCwKIAkJdHJhbXBsZTUsIHRyYW1wbGU2LCB0cmFtcGxlNywgdHJhbXBsZTgpOwogCi0Jdm9pZCoJcmVzdWx0CT0gKHZvaWQqKSgoaW50cHRyX3QpYTEgKyAoaW50cHRyX3QpYTIpOworCXJlc3VsdAk9ICh2b2lkKikoKGludHB0cl90KWExICsgKGludHB0cl90KWEyKTsKIAogCXByaW50ZigiMHglMDh4IDB4JTA4eDogMHglMDh4XG4iLCAKIAkgICAgICAgKHVuc2lnbmVkIGludCkodWludHB0cl90KSBhMSwKQEAgLTUyLDExICs1MywxMiBAQAogCWNoYXIJCXRyYW1wbGU2CT0gdHJhbXBsZTQgKyAoKGNoYXIqKSZhMilbMV07CiAJbG9uZyBkb3VibGUJdHJhbXBsZTcJPSAoaW50cHRyX3QpdHJhbXBsZTUgKyAoaW50cHRyX3QpdHJhbXBsZTE7CiAJY2hhcgkJdHJhbXBsZTgJPSB0cmFtcGxlNiArIHRyYW1wbGUyOworCXZvaWQqCQlyZXN1bHQ7CiAKIAlkdW1teVZhcgk9IGR1bW15X2Z1bmModHJhbXBsZTEsIHRyYW1wbGUyLCB0cmFtcGxlMywgdHJhbXBsZTQsCiAJCXRyYW1wbGU1LCB0cmFtcGxlNiwgdHJhbXBsZTcsIHRyYW1wbGU4KTsKIAotCXZvaWQqCXJlc3VsdAk9ICh2b2lkKikoKGludHB0cl90KWExICsgKGludHB0cl90KWEyKTsKKwlyZXN1bHQJPSAodm9pZCopKChpbnRwdHJfdClhMSArIChpbnRwdHJfdClhMik7CiAKIAlwcmludGYoIjB4JTA4eCAweCUwOHg6IDB4JTA4eFxuIiwKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpKGludHB0cl90KSBhMSwKQEAgLTEyOSw3ICsxMzEsNyBAQAogCiAJQ0hFQ0soZmZpX3ByZXBfY2xvc3VyZV9sb2MocGNsLCAmY2lmLCBjbHNfcG9pbnRlcl9nbiwgTlVMTCwgY29kZSkgPT0gRkZJX09LKTsKIAotCXJlcyA9IChmZmlfYXJnKSgodm9pZCooKikodm9pZCosIHZvaWQqKSkoY29kZSkpKGFyZzEsIGFyZzIpOworCXJlcyA9IChmZmlfYXJnKSh1aW50cHRyX3QpKCh2b2lkKigqKSh2b2lkKiwgdm9pZCopKShjb2RlKSkoYXJnMSwgYXJnMik7CiAKIAlwcmludGYoInJlczogMHglMDh4XG4iLCAodW5zaWduZWQgaW50KSByZXMpOwogCS8vIHsgZGctb3V0cHV0ICJcbjB4MDEyMzQ1NjcgMHg4OWFiY2RlZjogMHg4YWNmMTM1NiIgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfYWJpLmMKaW5kZXggYTIxYTNmZC4uZjVhNzMxNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF9hYmkuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9lcnJfYmFkX2FiaS5jCkBAIC00LDcgKzQsOCBAQAogICAgUFI6CQkJbm9uZS4KICAgIE9yaWdpbmF0b3I6CUJsYWtlIENoYWZmaW4gNi82LzIwMDcJICovCiAKLS8qIHsgZGctZG8gcnVuIHsgeGZhaWwgKi0qLSogfSB9ICovCisvKiB7IGRnLWRvIHJ1biB9ICovCisKICNpbmNsdWRlICJmZml0ZXN0LmgiCiAKIHN0YXRpYyB2b2lkCkBAIC0xNywxMSArMTgsOSBAQAogCWZmaV9jaWYgY2lmOwogICAgICAgICB2b2lkICpjb2RlOwogCWZmaV9jbG9zdXJlICpwY2wgPSBmZmlfY2xvc3VyZV9hbGxvYyhzaXplb2YoZmZpX2Nsb3N1cmUpLCAmY29kZSk7Ci0Jdm9pZCogYXJnc1sxXTsKIAlmZmlfdHlwZSogYXJnX3R5cGVzWzFdOwogCiAJYXJnX3R5cGVzWzBdID0gTlVMTDsKLQlhcmdzWzBdID0gTlVMTDsKIAogCUNIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCAyNTUsIDAsICZmZmlfdHlwZV92b2lkLAogCQlhcmdfdHlwZXMpID09IEZGSV9CQURfQUJJKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Vycl9iYWRfdHlwZWRlZi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMKaW5kZXggYmQyZmM1NC4uYmY2MDE2MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZXJyX2JhZF90eXBlZGVmLmMKQEAgLTQsNyArNCw4IEBACiAgICBQUjoJCQlub25lLgogICAgT3JpZ2luYXRvcjoJQmxha2UgQ2hhZmZpbiA2LzYvMjAwNwkgKi8KIAotLyogeyBkZy1kbyBydW4geyB4ZmFpbCAqLSotKiB9IH0gKi8KKy8qIHsgZGctZG8gcnVuIH0gKi8KKwogI2luY2x1ZGUgImZmaXRlc3QuaCIKIAogaW50IG1haW4gKHZvaWQpCkBAIC0xMiwxMCArMTMsMTAgQEAKIAlmZmlfY2lmIGNpZjsKIAlmZmlfdHlwZSogYXJnX3R5cGVzWzFdOwogCi0JYXJnX3R5cGVzWzBdID0gTlVMTDsKLQogCWZmaV90eXBlCWJhZFR5cGUJPSBmZmlfdHlwZV92b2lkOwogCisJYXJnX3R5cGVzWzBdID0gTlVMTDsKKwogCWJhZFR5cGUuc2l6ZSA9IDA7CiAKIAlDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0RFRkFVTFRfQUJJLCAwLCAmYmFkVHlwZSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMxX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JjNDcyNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMV93aW4zMi5jCkBAIC0wLDAgKzEsNTAgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBmYXN0Y2FsbCBmY3QgY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgc2l6ZV90IF9fRkFTVENBTExfXyBteV9mYXN0Y2FsbF9mKGNoYXIgKnMsIGZsb2F0IGEpCit7CisgIHJldHVybiAoc2l6ZV90KSAoKGludCkgc3RybGVuKHMpICsgKGludCkgYSk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfYXJnIHJpbnQ7CisgIGNoYXIgKnM7CisgIGZsb2F0IHYyOworICBhcmdzWzBdID0gJmZmaV90eXBlX3BvaW50ZXI7CisgIGFyZ3NbMV0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgIHZhbHVlc1swXSA9ICh2b2lkKikgJnM7CisgIHZhbHVlc1sxXSA9ICh2b2lkKikgJnYyOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDIsCisJCSAgICAgICAmZmZpX3R5cGVfc2ludCwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHMgPSAiYSI7CisgIHYyID0gMC4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDEpOworICAKKyAgcyA9ICIxMjM0NTY3IjsKKyAgdjIgPSAtMS4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDYpOworICAKKyAgcyA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKKyAgdjIgPSAxLjA7CisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihteV9mYXN0Y2FsbF9mKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMjYpOworICAKKyAgcHJpbnRmKCJmYXN0Y2FsbCBmY3QxIHRlc3RzIHBhc3NlZFxuIik7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zhc3R0aGlzMl93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZGQwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczJfd2luMzIuYwpAQCAtMCwwICsxLDUwIEBACisvKiBBcmVhOglmZmlfY2FsbAorICAgUHVycG9zZToJQ2hlY2sgZmFzdGNhbGwgZmN0IGNhbGwgb24gWDg2X1dJTjMyIHN5c3RlbXMuCisgICBMaW1pdGF0aW9uczoJbm9uZS4KKyAgIFBSOgkJbm9uZS4KKyAgIE9yaWdpbmF0b3I6CUZyb20gdGhlIG9yaWdpbmFsIGZmaXRlc3QuYyAgKi8KKworLyogeyBkZy1kbyBydW4geyB0YXJnZXQgaT84Ni0qLWN5Z3dpbiogaT84Ni0qLW1pbmd3KiB9IH0gKi8KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworc3RhdGljIHNpemVfdCBfX0ZBU1RDQUxMX18gbXlfZmFzdGNhbGxfZihmbG9hdCBhLCBjaGFyICpzKQoreworICByZXR1cm4gKHNpemVfdCkgKChpbnQpIHN0cmxlbihzKSArIChpbnQpIGEpOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiBjaWY7CisgIGZmaV90eXBlICphcmdzW01BWF9BUkdTXTsKKyAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKKyAgZmZpX2FyZyByaW50OworICBjaGFyICpzOworICBmbG9hdCB2MjsKKyAgYXJnc1sxXSA9ICZmZmlfdHlwZV9wb2ludGVyOworICBhcmdzWzBdID0gJmZmaV90eXBlX2Zsb2F0OworICB2YWx1ZXNbMV0gPSAodm9pZCopICZzOworICB2YWx1ZXNbMF0gPSAodm9pZCopICZ2MjsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAyLAorCQkgICAgICAgJmZmaV90eXBlX3NpbnQsIGFyZ3MpID09IEZGSV9PSyk7CisgIAorICBzID0gImEiOworICB2MiA9IDAuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAxKTsKKyAgCisgIHMgPSAiMTIzNDU2NyI7CisgIHYyID0gLTEuMDsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSA2KTsKKyAgCisgIHMgPSAiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NSI7CisgIHYyID0gMS4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDI2KTsKKyAgCisgIHByaW50ZigiZmFzdGNhbGwgZmN0MiB0ZXN0cyBwYXNzZWRcbiIpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mYXN0dGhpczNfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWQ2MDZkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmFzdHRoaXMzX3dpbjMyLmMKQEAgLTAsMCArMSw1NiBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIGZhc3RjYWxsIGYgY2FsbCBvbiBYODZfV0lOMzIgc3lzdGVtcy4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCitzdGF0aWMgc2l6ZV90IF9fRkFTVENBTExfXyBteV9mYXN0Y2FsbF9mKGZsb2F0IGEsIGNoYXIgKnMsIGludCBpKQoreworICByZXR1cm4gKHNpemVfdCkgKChpbnQpIHN0cmxlbihzKSArIChpbnQpIGEgKyBpKTsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV9hcmcgcmludDsKKyAgY2hhciAqczsKKyAgaW50IHYxOworICBmbG9hdCB2MjsKKyAgYXJnc1syXSA9ICZmZmlfdHlwZV9zaW50OworICBhcmdzWzFdID0gJmZmaV90eXBlX3BvaW50ZXI7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfZmxvYXQ7CisgIHZhbHVlc1syXSA9ICh2b2lkKikgJnYxOworICB2YWx1ZXNbMV0gPSAodm9pZCopICZzOworICB2YWx1ZXNbMF0gPSAodm9pZCopICZ2MjsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAzLAorCQkgICAgICAgJmZmaV90eXBlX3NpbnQsIGFyZ3MpID09IEZGSV9PSyk7CisgIAorICBzID0gImEiOworICB2MSA9IDE7CisgIHYyID0gMC4wOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDIpOworICAKKyAgcyA9ICIxMjM0NTY3IjsKKyAgdjIgPSAtMS4wOworICB2MSA9IC0yOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfZiksICZyaW50LCB2YWx1ZXMpOworICBDSEVDSyhyaW50ID09IDQpOworICAKKyAgcyA9ICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1IjsKKyAgdjIgPSAxLjA7CisgIHYxID0gMjsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKG15X2Zhc3RjYWxsX2YpLCAmcmludCwgdmFsdWVzKTsKKyAgQ0hFQ0socmludCA9PSAyOCk7CisgIAorICBwcmludGYoImZhc3RjYWxsIGZjdDMgdGVzdHMgcGFzc2VkXG4iKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaCBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2ZmaXRlc3QuaAppbmRleCAyY2I5ODQ5Li5kODFkNGRhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9mZml0ZXN0LmgKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmZpdGVzdC5oCkBAIC0yNSw2ICsyNSwxNCBAQAogI2RlZmluZSBfX1VOVVNFRF9fCiAjZW5kaWYKIAorLyogRGVmaW5lIF9fRkFTVENBTExfXyBzbyB0aGF0IG90aGVyIGNvbXBpbGVycyB0aGFuIGdjYyBjYW4gcnVuIHRoZSB0ZXN0cy4gICovCisjdW5kZWYgX19GQVNUQ0FMTF9fCisjaWYgZGVmaW5lZCBfTVNDX1ZFUgorI2RlZmluZSBfX0ZBU1RDQUxMX18gX19mYXN0Y2FsbAorI2Vsc2UKKyNkZWZpbmUgX19GQVNUQ0FMTF9fIF9fYXR0cmlidXRlX18oKGZhc3RjYWxsKSkKKyNlbmRpZgorCiAvKiBQcmVmZXIgTUFQX0FOT04oWU1PVVMpIHRvIC9kZXYvemVybywgc2luY2Ugd2UgZG9uJ3QgbmVlZCB0byBrZWVwIGEKICAgIGZpbGUgb3Blbi4gICovCiAjaWZkZWYgSEFWRV9NTUFQX0FOT04KQEAgLTY3LDYgKzc1LDggQEAKICNkZWZpbmUgUFJJZExMICJsZCIKICN1bmRlZiBQUkl1TEwKICNkZWZpbmUgUFJJdUxMICJsdSIKKyNkZWZpbmUgUFJJZDggImhkIgorI2RlZmluZSBQUkl1OCAiaHUiCiAjZGVmaW5lIFBSSWQ2NCAibGQiCiAjZGVmaW5lIFBSSXU2NCAibHUiCiAjZGVmaW5lIFBSSXVQVFIgImx1IgpAQCAtNzcsNiArODcsMjggQEAKICNkZWZpbmUgUFJJdVBUUiAibHUiCiAjZW5kaWYKIAorLyogSVJJWCBrbHVkZ2UuICAqLworI2lmIGRlZmluZWQoX19zZ2kpCisvKiBJUklYIDYuNSA8aW50dHlwZXMuaD4gcHJvdmlkZXMgYWxsIGRlZmluaXRpb25zLCBidXQgb25seSBmb3IgQzk5CisgICBjb21waWxhdGlvbnMuICAqLworI2RlZmluZSBQUklkOCAiaGhkIgorI2RlZmluZSBQUkl1OCAiaGh1IgorI2lmIChfTUlQU19TWkxPTkcgPT0gMzIpCisjZGVmaW5lIFBSSWQ2NCAibGxkIgorI2RlZmluZSBQUkl1NjQgImxsdSIKKyNlbmRpZgorLyogVGhpcyBkb2Vzbid0IG1hdGNoIDxpbnR0eXBlcy5oPiwgd2hpY2ggYWx3YXlzIGhhcyAibGxkIiBoZXJlLCBidXQgdGhlCisgICBhcmd1bWVudHMgYXJlIHVpbnQ2NF90LCBpbnQ2NF90LCB3aGljaCBhcmUgdW5zaWduZWQgbG9uZywgbG9uZyBmb3IKKyAgIDY0LWJpdCBpbiA8c2dpZGVmcy5oPi4gICovCisjaWYgKF9NSVBTX1NaTE9ORyA9PSA2NCkKKyNkZWZpbmUgUFJJZDY0ICJsZCIKKyNkZWZpbmUgUFJJdTY0ICJsdSIKKyNlbmRpZgorLyogVGhpcyBkb2Vzbid0IG1hdGNoIDxpbnR0eXBlcy5oPiwgd2hpY2ggaGFzICJ1IiBoZXJlLCBidXQgdGhlIGFyZ3VtZW50cworICAgYXJlIHVpbnRwdHJfdCwgd2hpY2ggaXMgYWx3YXlzIHVuc2lnbmVkIGxvbmcuICAqLworI2RlZmluZSBQUkl1UFRSICJsdSIKKyNlbmRpZgorCiAvKiBTb2xhcmlzIDwgMTAga2x1ZGdlLiAgKi8KICNpZiBkZWZpbmVkKF9fc3VuX18pICYmIGRlZmluZWQoX19zdnI0X18pICYmICFkZWZpbmVkKFBSSXVQVFIpCiAjaWYgZGVmaW5lZChfX2FyY2g2NF9fKSB8fCBkZWZpbmVkIChfX3g4Nl82NF9fKQpAQCAtODYsNiArMTE4LDE1IEBACiAjZW5kaWYKICNlbmRpZgogCisvKiBNU1ZDIGtsdWRnZS4gICovCisjaWYgZGVmaW5lZCBfTVNDX1ZFUgorI2RlZmluZSBQUkl1UFRSICJsdSIKKyNkZWZpbmUgUFJJdTggInUiCisjZGVmaW5lIFBSSWQ4ICJkIgorI2RlZmluZSBQUkl1NjQgIkk2NHUiCisjZGVmaW5lIFBSSWQ2NCAiSTY0ZCIKKyNlbmRpZgorCiAjaWZkZWYgVVNJTkdfTU1BUAogc3RhdGljIGlubGluZSB2b2lkICoKIGFsbG9jYXRlX21tYXAgKHNpemVfdCBzaXplKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvZmxvYXRfdmEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlMTU4ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2Zsb2F0X3ZhLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qIEFyZWE6ICAgICAgICBmcCBhbmQgdmFyaWFkaWNzCisgICBQdXJwb3NlOiAgICAgY2hlY2sgZnAgaW5wdXRzIGFuZCByZXR1cm5zIHdvcmsgb24gdmFyaWFkaWNzLCBldmVuIHRoZSBmaXhlZCBwYXJhbXMKKyAgIExpbWl0YXRpb25zOiBOb25lCisgICBQUjogICAgICAgICAgbm9uZQorICAgT3JpZ2luYXRvcjogIDxkYXZpZC5naWxiZXJ0QGxpbmFyby5vcmc+IDIwMTEtMDEtMjUKKworICAgSW50ZW5kZWQgdG8gc3RyZXNzIHRoZSBkaWZmZXJlbmNlIGluIEFCSSBvbiBBUk0gdmZwCisqLworCisvKiB7IGRnLWRvIHJ1biB9ICovCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworI2luY2x1ZGUgImZmaXRlc3QuaCIKKworLyogcHJpbnRzIG91dCBhbGwgdGhlIHBhcmFtZXRlcnMsIGFuZCByZXR1cm5zIHRoZSBzdW0gb2YgdGhlbSBhbGwuCisgKiAneCcgaXMgdGhlIG51bWJlciBvZiB2YXJpYWRpYyBwYXJhbWV0ZXJzIGFsbCBvZiB3aGljaCBhcmUgZG91YmxlIGluIHRoaXMgdGVzdAorICovCitkb3VibGUgZmxvYXRfdmFfZm4odW5zaWduZWQgaW50IHgsIGRvdWJsZSB5LC4uLikKK3sKKyAgZG91YmxlIHRvdGFsPTAuMDsKKyAgdmFfbGlzdCBhcDsKKyAgdW5zaWduZWQgaW50IGk7CisKKyAgdG90YWwrPShkb3VibGUpeDsKKyAgdG90YWwrPXk7CisKKyAgcHJpbnRmKCIldTogJS4xZiA6IiwgeCwgeSk7CisKKyAgdmFfc3RhcnQoYXAsIHkpOworICBmb3IoaT0wO2k8eDtpKyspCisgIHsKKyAgICBkb3VibGUgYXJnPXZhX2FyZyhhcCwgZG91YmxlKTsKKyAgICB0b3RhbCs9YXJnOworICAgIHByaW50ZigiICVkOiUuMWYgIiwgaSwgYXJnKTsKKyAgfQorICB2YV9lbmQoYXApOworCisgIHByaW50ZigiIHRvdGFsOiAlLjFmXG4iLCB0b3RhbCk7CisKKyAgcmV0dXJuIHRvdGFsOworfQorCitpbnQgbWFpbiAodm9pZCkKK3sKKyAgZmZpX2NpZiAgICBjaWY7CisKKyAgZmZpX3R5cGUgICAgKmFyZ190eXBlc1s1XTsKKyAgdm9pZCAgICAgICAgKnZhbHVlc1s1XTsKKyAgZG91YmxlICAgICAgICBkb3VibGVzWzVdOworICB1bnNpZ25lZCBpbnQgZmlyc3Rhcmc7CisgIGRvdWJsZSAgICAgICAgcmVzZnA7CisKKyAgLyogRmlyc3QgdGVzdCwgcGFzcyBmbG9hdF92YV9mbigwLDIuMCkgLSBub3RlIHRoZXJlIGFyZSBubyBhY3R1YWwKKyAgICogdmFyaWFkaWMgcGFyYW1ldGVycywgYnV0IGl0J3MgZGVjbGFyZWQgdmFyaWFkaWMgc28gdGhlIEFCSSBtYXkgYmUKKyAgICogZGlmZmVyZW50LiAqLworICAvKiBDYWxsIGl0IHN0YXRpY2FsbHkgYW5kIHRoZW4gdmlhIGZmaSAqLworICByZXNmcD1mbG9hdF92YV9mbigwLDIuMCk7CisgIC8vIHsgZGctb3V0cHV0ICIwOiAyLjAgOiB0b3RhbDogMi4wIiB9CisgIHByaW50ZigiY29tcGlsZWQ6ICUuMWZcbiIsIHJlc2ZwKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuY29tcGlsZWQ6IDIuMCIgfQorCisgIGFyZ190eXBlc1swXSA9ICZmZmlfdHlwZV91aW50OworICBhcmdfdHlwZXNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOworICBhcmdfdHlwZXNbMl0gPSBOVUxMOworICBDSEVDSyhmZmlfcHJlcF9jaWZfdmFyKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgMiwKKyAgICAgICAgJmZmaV90eXBlX2RvdWJsZSwgYXJnX3R5cGVzKSA9PSBGRklfT0spOworCisgIGZpcnN0YXJnID0gMDsKKyAgZG91Ymxlc1swXSA9IDIuMDsKKyAgdmFsdWVzWzBdID0gJmZpcnN0YXJnOworICB2YWx1ZXNbMV0gPSAmZG91Ymxlc1swXTsKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKGZsb2F0X3ZhX2ZuKSwgJnJlc2ZwLCB2YWx1ZXMpOworICAvLyB7IGRnLW91dHB1dCAiXG4wOiAyLjAgOiB0b3RhbDogMi4wIiB9CisgIHByaW50ZigiZmZpOiAlLjFmXG4iLCByZXNmcCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbmZmaTogMi4wIiB9CisKKyAgLyogU2Vjb25kIHRlc3QsIGZsb2F0X3ZhX2ZuKDIsMi4wLDMuMCw0LjApLCBub3cgd2l0aCB2YXJpYWRpYyBwYXJhbXMgKi8KKyAgLyogQ2FsbCBpdCBzdGF0aWNhbGx5IGFuZCB0aGVuIHZpYSBmZmkgKi8KKyAgcmVzZnA9ZmxvYXRfdmFfZm4oMiwyLjAsMy4wLDQuMCk7CisgIC8vIHsgZGctb3V0cHV0ICJcbjI6IDIuMCA6IDA6My4wICAxOjQuMCAgdG90YWw6IDExLjAiIH0KKyAgcHJpbnRmKCJjb21waWxlZDogJS4xZlxuIiwgcmVzZnApOworICAvLyB7IGRnLW91dHB1dCAiXG5jb21waWxlZDogMTEuMCIgfQorCisgIGFyZ190eXBlc1swXSA9ICZmZmlfdHlwZV91aW50OworICBhcmdfdHlwZXNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOworICBhcmdfdHlwZXNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOworICBhcmdfdHlwZXNbM10gPSAmZmZpX3R5cGVfZG91YmxlOworICBhcmdfdHlwZXNbNF0gPSBOVUxMOworICBDSEVDSyhmZmlfcHJlcF9jaWZfdmFyKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgMiwgNCwKKyAgICAgICAgJmZmaV90eXBlX2RvdWJsZSwgYXJnX3R5cGVzKSA9PSBGRklfT0spOworCisgIGZpcnN0YXJnID0gMjsKKyAgZG91Ymxlc1swXSA9IDIuMDsKKyAgZG91Ymxlc1sxXSA9IDMuMDsKKyAgZG91Ymxlc1syXSA9IDQuMDsKKyAgdmFsdWVzWzBdID0gJmZpcnN0YXJnOworICB2YWx1ZXNbMV0gPSAmZG91Ymxlc1swXTsKKyAgdmFsdWVzWzJdID0gJmRvdWJsZXNbMV07CisgIHZhbHVlc1szXSA9ICZkb3VibGVzWzJdOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4oZmxvYXRfdmFfZm4pLCAmcmVzZnAsIHZhbHVlcyk7CisgIC8vIHsgZGctb3V0cHV0ICJcbjI6IDIuMCA6IDA6My4wICAxOjQuMCAgdG90YWw6IDExLjAiIH0KKyAgcHJpbnRmKCJmZmk6ICUuMWZcbiIsIHJlc2ZwKTsKKyAgLy8geyBkZy1vdXRwdXQgIlxuZmZpOiAxMS4wIiB9CisKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9odWdlX3N0cnVjdC5jCmluZGV4IDljZmZiNzEuLjM4MGZlZGYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL2h1Z2Vfc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvaHVnZV9zdHJ1Y3QuYwpAQCAtNyw3ICs3LDcgQEAKIAogLyogeyBkZy1leGNlc3MtZXJyb3JzICIiIHsgdGFyZ2V0IHg4Nl82NC0qLW1pbmd3KiB4ODZfNjQtKi1jeWd3aW4qIH0gfSAqLwogLyogeyBkZy1kbyBydW4geyB4ZmFpbCBzdHJvbmdhcm0qLSotKiB4c2NhbGUqLSotKiB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotKiB9IH0gKi8KKy8qIHsgZGctb3B0aW9ucyAtbWxvbmctZG91YmxlLTEyOCB7IHRhcmdldCBwb3dlcnBjNjQqLSotbGludXgqIH0gfSAqLwogLyogeyBkZy1vdXRwdXQgIiIgeyB4ZmFpbCB4ODZfNjQtKi1taW5ndyogeDg2XzY0LSotY3lnd2luKiB9IH0gKi8KIAogI2luY2x1ZGUgImZmaXRlc3QuaCIKQEAgLTEyOSwxNCArMTI5LDE0IEBACiAJCQl1aTY0XzQgKyA0LCBzaTY0XzQgKyA0LCBmXzQgKyA0LCBkXzQgKyA0LCBsZF80ICsgNCwgKGNoYXIqKSgoaW50cHRyX3QpcF80ICsgNCksIAogCQl1aThfNSArIDUsIHNpOF81ICsgNX07CiAKLQlwcmludGYoIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICVoaHUgJWhoZDogIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgotCQkiJWhodSAlaGhkICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJWhodSAlaGhkXG4iLAorCXByaW50ZigiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJSIgUFJJdTggIiAlIiBQUklkOCAiOiAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCisJCSIlIiBQUkl1OCAiICUiIFBSSWQ4ICIgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlIiBQUkl1OCAiICUiIFBSSWQ4ICJcbiIsCiAJICAgICAgIHVpOF8xLCBzaThfMSwgdWkxNl8xLCBzaTE2XzEsIHVpMzJfMSwgc2kzMl8xLCB1aTY0XzEsIHNpNjRfMSwgZl8xLCBkXzEsIGxkXzEsICh1bnNpZ25lZCBsb25nKXBfMSwKIAkJdWk4XzIsIHNpOF8yLCB1aTE2XzIsIHNpMTZfMiwgdWkzMl8yLCBzaTMyXzIsIHVpNjRfMiwgc2k2NF8yLCBmXzIsIGRfMiwgbGRfMiwgKHVuc2lnbmVkIGxvbmcpcF8yLAogCQl1aThfMywgc2k4XzMsIHVpMTZfMywgc2kxNl8zLCB1aTMyXzMsIHNpMzJfMywgdWk2NF8zLCBzaTY0XzMsIGZfMywgZF8zLCBsZF8zLCAodW5zaWduZWQgbG9uZylwXzMsCkBAIC0yMjksNiArMjI5LDE5IEBACiAJZmZpX3R5cGUqCXN0X2ZpZWxkc1s1MV07CiAJQmlnU3RydWN0CXJldFZhbDsKIAorCXVpbnQ4X3QJCXVpOAkJPSAxOworCWludDhfdAkJc2k4CQk9IDI7CisJdWludDE2X3QJdWkxNgk9IDM7CisJaW50MTZfdAkJc2kxNgk9IDQ7CisJdWludDMyX3QJdWkzMgk9IDU7CisJaW50MzJfdAkJc2kzMgk9IDY7CisJdWludDY0X3QJdWk2NAk9IDc7CisJaW50NjRfdAkJc2k2NAk9IDg7CisJZmxvYXQJCWYJCT0gOTsKKwlkb3VibGUJCWQJCT0gMTA7CisJbG9uZyBkb3VibGUJbGQJCT0gMTE7CisJY2hhcioJCXAJCT0gKGNoYXIqKTB4MTIzNDU2Nzg7CisKIAltZW1zZXQgKCZyZXRWYWwsIDAsIHNpemVvZihyZXRWYWwpKTsKIAogCXJldF9zdHJ1Y3RfdHlwZS5zaXplID0gMDsKQEAgLTI1MSwxOSArMjY0LDYgQEAKIAogCXN0X2ZpZWxkc1s1MF0gPSBOVUxMOwogCi0JdWludDhfdAkJdWk4CQk9IDE7Ci0JaW50OF90CQlzaTgJCT0gMjsKLQl1aW50MTZfdAl1aTE2CT0gMzsKLQlpbnQxNl90CQlzaTE2CT0gNDsKLQl1aW50MzJfdAl1aTMyCT0gNTsKLQlpbnQzMl90CQlzaTMyCT0gNjsKLQl1aW50NjRfdAl1aTY0CT0gNzsKLQlpbnQ2NF90CQlzaTY0CT0gODsKLQlmbG9hdAkJZgkJPSA5OwotCWRvdWJsZQkJZAkJPSAxMDsKLQlsb25nIGRvdWJsZQlsZAkJPSAxMTsKLQljaGFyKgkJcAkJPSAoY2hhciopMHgxMjM0NTY3ODsKLQogCWFyZ1R5cGVzWzBdCQk9IGFyZ1R5cGVzWzEyXQk9IGFyZ1R5cGVzWzI0XQk9IGFyZ1R5cGVzWzM2XQk9IGFyZ1R5cGVzWzQ4XQk9ICZmZmlfdHlwZV91aW50ODsKIAlhcmdWYWx1ZXNbMF0JPSBhcmdWYWx1ZXNbMTJdCT0gYXJnVmFsdWVzWzI0XQk9IGFyZ1ZhbHVlc1szNl0JPSBhcmdWYWx1ZXNbNDhdCT0gJnVpODsKIAlhcmdUeXBlc1sxXQkJPSBhcmdUeXBlc1sxM10JPSBhcmdUeXBlc1syNV0JPSBhcmdUeXBlc1szN10JPSBhcmdUeXBlc1s0OV0JPSAmZmZpX3R5cGVfc2ludDg7CkBAIC0yOTYsMTAgKzI5NiwxMCBAQAogCiAJZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKHRlc3RfbGFyZ2VfZm4pLCAmcmV0VmFsLCBhcmdWYWx1ZXMpOwogCS8vIHsgZGctb3V0cHV0ICIxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMjogMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDB4MTIzNDU2NzkgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAweDEyMzQ1NjdhIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDB4MTIzNDU2N2IgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDB4MTIzNDU2N2MgNiA3IiB9Ci0JcHJpbnRmKCJyZXM6ICVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKLQkJIiVoaHUgJWhoZCAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICVoaHUgJWhoZFxuIiwKKwlwcmludGYoInJlczogJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggIgorCQkiJSIgUFJJdTggIiAlIiBQUklkOCAiICVodSAlaGQgJXUgJWQgJSIgUFJJdTY0ICIgJSIgUFJJZDY0ICIgJS4wZiAlLjBmICUuMExmICUjbHggJSIgUFJJdTggIiAlIiBQUklkOCAiXG4iLAogCQlyZXRWYWwuYSwgcmV0VmFsLmIsIHJldFZhbC5jLCByZXRWYWwuZCwgcmV0VmFsLmUsIHJldFZhbC5mLAogCSAgICAgICByZXRWYWwuZywgcmV0VmFsLmgsIHJldFZhbC5pLCByZXRWYWwuaiwgcmV0VmFsLmssICh1bnNpZ25lZCBsb25nKXJldFZhbC5sLAogCQlyZXRWYWwubSwgcmV0VmFsLm4sIHJldFZhbC5vLCByZXRWYWwucCwgcmV0VmFsLnEsIHJldFZhbC5yLApAQCAtMzI0LDEwICszMjQsMTAgQEAKIAkJdWk4LCBzaTgsIHVpMTYsIHNpMTYsIHVpMzIsIHNpMzIsIHVpNjQsIHNpNjQsIGYsIGQsIGxkLCBwLAogCQl1aTgsIHNpOCk7CiAJLy8geyBkZy1vdXRwdXQgIlxuMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAweDEyMzQ1Njc4IDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDB4MTIzNDU2NzggMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMHgxMjM0NTY3OCAxIDI6IDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMiAweDEyMzQ1Njc5IDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMHgxMjM0NTY3YSA0IDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAweDEyMzQ1NjdiIDUgNiA3IDggOSAxMCAxMSAxMiAxMyAxNCAxNSAweDEyMzQ1NjdjIDYgNyIgfQotCXByaW50ZigicmVzOiAlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAiCi0JCSIlaGh1ICVoaGQgJWh1ICVoZCAldSAlZCAlIiBQUkl1NjQgIiAlIiBQUklkNjQgIiAlLjBmICUuMGYgJS4wTGYgJSNseCAlaGh1ICVoaGRcbiIsCisJcHJpbnRmKCJyZXM6ICUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICIKKwkJIiUiIFBSSXU4ICIgJSIgUFJJZDggIiAlaHUgJWhkICV1ICVkICUiIFBSSXU2NCAiICUiIFBSSWQ2NCAiICUuMGYgJS4wZiAlLjBMZiAlI2x4ICUiIFBSSXU4ICIgJSIgUFJJZDggIlxuIiwKIAkJcmV0VmFsLmEsIHJldFZhbC5iLCByZXRWYWwuYywgcmV0VmFsLmQsIHJldFZhbC5lLCByZXRWYWwuZiwKIAkgICAgICAgcmV0VmFsLmcsIHJldFZhbC5oLCByZXRWYWwuaSwgcmV0VmFsLmosIHJldFZhbC5rLCAodW5zaWduZWQgbG9uZylyZXRWYWwubCwKIAkJcmV0VmFsLm0sIHJldFZhbC5uLCByZXRWYWwubywgcmV0VmFsLnAsIHJldFZhbC5xLCByZXRWYWwuciwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzcxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9tYW55Mi5jCkBAIC0wLDAgKzEsNTQgQEAKKy8qIEFyZWE6ICAgICAgICBmZmlfY2FsbAorICAgUHVycG9zZTogICAgIENoZWNrIHVpbnQ4X3QgYXJndW1lbnRzLgorICAgTGltaXRhdGlvbnM6IG5vbmUuCisgICBQUjogICAgICAgICAgUFI0NTY3Ny4KKyAgIE9yaWdpbmF0b3I6ICBEYW4gV2l0dGUgPGR3aXR0ZUBnbWFpbC5jb20+IDIwMTAwOTE2ICAqLworCisvKiB7IGRnLWRvIHJ1biB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKKyNkZWZpbmUgTkFSR1MgNworCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdTg7CisKK19fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgdWludDhfdAorZm9vICh1aW50OF90IGEsIHVpbnQ4X3QgYiwgdWludDhfdCBjLCB1aW50OF90IGQsCisgICAgIHVpbnQ4X3QgZSwgdWludDhfdCBmLCB1aW50OF90IGcpCit7CisgIHJldHVybiBhICsgYiArIGMgKyBkICsgZSArIGYgKyBnOworfQorCit1aW50OF90CitiYXIgKHVpbnQ4X3QgYSwgdWludDhfdCBiLCB1aW50OF90IGMsIHVpbnQ4X3QgZCwKKyAgICAgdWludDhfdCBlLCB1aW50OF90IGYsIHVpbnQ4X3QgZykKK3sKKyAgcmV0dXJuIGZvbyAoYSwgYiwgYywgZCwgZSwgZiwgZyk7Cit9CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgZmZpX3R5cGUgKmZmaXR5cGVzW05BUkdTXTsKKyAgaW50IGk7CisgIGZmaV9jaWYgY2lmOworICBmZmlfYXJnIHJlc3VsdCA9IDA7CisgIHVpbnQ4X3QgYXJnc1tOQVJHU107CisgIHZvaWQgKmFyZ3B0cnNbTkFSR1NdOworCisgIGZvciAoaSA9IDA7IGkgPCBOQVJHUzsgKytpKQorICAgIGZmaXR5cGVzW2ldID0gJmZmaV90eXBlX3VpbnQ4OworCisgIENIRUNLIChmZmlfcHJlcF9jaWYgKCZjaWYsIEZGSV9ERUZBVUxUX0FCSSwgTkFSR1MsCisJCSAgICAgICAmZmZpX3R5cGVfdWludDgsIGZmaXR5cGVzKSA9PSBGRklfT0spOworCisgIGZvciAoaSA9IDA7IGkgPCBOQVJHUzsgKytpKQorICAgIHsKKyAgICAgIGFyZ3NbaV0gPSBpOworICAgICAgYXJncHRyc1tpXSA9ICZhcmdzW2ldOworICAgIH0KKyAgZmZpX2NhbGwgKCZjaWYsIEZGSV9GTiAoYmFyKSwgJnJlc3VsdCwgYXJncHRycyk7CisKKyAgQ0hFQ0sgKHJlc3VsdCA9PSAyMSk7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbWFueTJfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkYmU0ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL21hbnkyX3dpbjMyLmMKQEAgLTAsMCArMSw2MyBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIHN0ZGNhbGwgbWFueSBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisjaW5jbHVkZSA8ZmxvYXQuaD4KKworc3RhdGljIGZsb2F0IF9fYXR0cmlidXRlX18oKGZhc3RjYWxsKSkgZmFzdGNhbGxfbWFueShmbG9hdCBmMSwKKwkJCQkJCSAgIGZsb2F0IGYyLAorCQkJCQkJICAgZmxvYXQgZjMsCisJCQkJCQkgICBmbG9hdCBmNCwKKwkJCQkJCSAgIGZsb2F0IGY1LAorCQkJCQkJICAgZmxvYXQgZjYsCisJCQkJCQkgICBmbG9hdCBmNywKKwkJCQkJCSAgIGZsb2F0IGY4LAorCQkJCQkJICAgZmxvYXQgZjksCisJCQkJCQkgICBmbG9hdCBmMTAsCisJCQkJCQkgICBmbG9hdCBmMTEsCisJCQkJCQkgICBmbG9hdCBmMTIsCisJCQkJCQkgICBmbG9hdCBmMTMpCit7CisgIHJldHVybiAoKGYxL2YyK2YzL2Y0K2Y1L2Y2K2Y3L2Y4K2Y5L2YxMCtmMTEvZjEyKSAqIGYxMyk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbMTNdOworICB2b2lkICp2YWx1ZXNbMTNdOworICBmbG9hdCBmYVsxM107CisgIGZsb2F0IGYsIGZmOworICB1bnNpZ25lZCBsb25nIHVsOworCisgIGZvciAodWwgPSAwOyB1bCA8IDEzOyB1bCsrKQorICAgIHsKKyAgICAgIGFyZ3NbdWxdID0gJmZmaV90eXBlX2Zsb2F0OworICAgICAgdmFsdWVzW3VsXSA9ICZmYVt1bF07CisJZmFbdWxdID0gKGZsb2F0KSB1bDsKKyAgICB9CisKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEzLAorCQkgICAgICZmZmlfdHlwZV9mbG9hdCwgYXJncykgPT0gRkZJX09LKTsKKworICBmZiA9ICBmYXN0Y2FsbF9tYW55KGZhWzBdLCBmYVsxXSwKKwkJICAgICBmYVsyXSwgZmFbM10sCisJCSAgICAgZmFbNF0sIGZhWzVdLAorCQkgICAgIGZhWzZdLCBmYVs3XSwKKwkJICAgICBmYVs4XSwgZmFbOV0sCisJCSAgICAgZmFbMTBdLCBmYVsxMV0sIGZhWzEyXSk7CisKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKGZhc3RjYWxsX21hbnkpLCAmZiwgdmFsdWVzKTsKKworICBpZiAoZiAtIGZmIDwgRkxUX0VQU0lMT04pCisgICAgcHJpbnRmKCJmYXN0Y2FsbCBtYW55IGFyZyB0ZXN0cyBvayFcbiIpOworICBlbHNlCisgICAgQ0hFQ0soMCk7CisgIGV4aXQoMCk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0LmMKaW5kZXggOGFhNTI3ZS4uYzE1ZTNhMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QuYwpAQCAtNzcsNiArNzcsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAorICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIGVfZGJsID0geyA5LjAsIDIuMCwgNn07CisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTIgZl9kYmwgPSB7IDEsIDIuMCwgMy4wfTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7ezQuMCwgNS4wLCA2fSwKKwkJCQkgICAgICB7MywgMS4wLCA4LjB9fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTkyLDEyICs5OCw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTIudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMi5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMjsKIAotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIGVfZGJsID0geyA5LjAsIDIuMCwgNn07Ci0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTIgZl9kYmwgPSB7IDEsIDIuMCwgMy4wfTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7ezQuMCwgNS4wLCA2fSwKLQkJCQkgICAgICB7MywgMS4wLCA4LjB9fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX2Zsb2F0OwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9ICZmZmlfdHlwZV9zaW50OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxLmMKaW5kZXggMmE5ZjUxNS4uMTA4N2Y3YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0MS5jCkBAIC04MSw2ICs4MSwxMyBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTEsIGNsc19zdHJ1Y3RfdHlwZTI7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKKyAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OworICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAorCQkJCSAgICAgIHszLCAxLjAsIDguMH19OworICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIGhfZGJsID0geyAzLjAsIDIuMCwgNH07CisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC05NiwxMyArMTAzLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBjbHNfc3RydWN0XzE2Ynl0ZTEgZV9kYmwgPSB7IDkuMCwgMi4wLCA2fTsKLSAgc3RydWN0IGNsc19zdHJ1Y3RfMTZieXRlMiBmX2RibCA9IHsgMSwgMi4wLCAzLjB9OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF9jb21iaW5lZCBnX2RibCA9IHt7NC4wLCA1LjAsIDZ9LAotCQkJCSAgICAgIHszLCAxLjAsIDguMH19OwotICBzdHJ1Y3QgY2xzX3N0cnVjdF8xNmJ5dGUxIGhfZGJsID0geyAzLjAsIDIuMCwgNH07Ci0gIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfc2ludDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QxMC5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMKaW5kZXggZDZhNzE4Yi4uMzRhNzRlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDEwLmMKQEAgLTY3LDYgKzY3LDEyIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMSwgY2xzX3N0cnVjdF90eXBlMjsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNF07CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0geyA5OSwgezEyTEwgLCAxMjd9LCAyNTV9OworICBzdHJ1Y3QgQyBnX2RibCA9IHsgMkxMLCA5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtODIsMTIgKzg4LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHsgOTksIHsxMkxMICwgMTI3fSwgMjU1fTsKLSAgc3RydWN0IEMgZ19kYmwgPSB7IDJMTCwgOX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV91aW50NjQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDIuYwppbmRleCBkZTE1ODRjLi42OTI2OGNkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Mi5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QyLmMKQEAgLTU3LDYgKzU3LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDEsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY3LDExICs3Miw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMSwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMiAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3Vsb25nOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3QzLmMKaW5kZXggNThhYTg1My4uYWIxOGNhZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0My5jCkBAIC01OCw2ICs1OCwxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTJMTCAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjgsMTEgKzczLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTJMTCAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NC5jCmluZGV4IDk4ZTQ5MWUuLjJmZmI0ZDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDQuYwpAQCAtNTgsNiArNTgsMTEgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1szXTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisKKyAgc3RydWN0IEIgcmVzX2RibDsKKwogICBjbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTY4LDExICs3Myw2IEBACiAgIGNsc19zdHJ1Y3RfdHlwZTEudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKICAgY2xzX3N0cnVjdF90eXBlMS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzMTsKIAotICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKLSAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07Ci0KLSAgc3RydWN0IEIgcmVzX2RibDsKLQogICBjbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VjaGFyOwogICBjbHNfc3RydWN0X2ZpZWxkc1syXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDUuYwppbmRleCBkOGUzNTM3Li42Yzc5ODQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0NS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q1LmMKQEAgLTU4LDYgKzU4LDExIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZSwgY2xzX3N0cnVjdF90eXBlMTsKICAgZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbM107CiAKKyAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307CisgIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC02OCwxMSArNzMsNiBAQAogICBjbHNfc3RydWN0X3R5cGUxLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTEuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczE7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDEuMCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMi4wICwgMTI3fSwgOTl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfbG9uZ2RvdWJsZTsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ni5jCmluZGV4IDJmMmIyNWEuLjU5ZDM1NzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q2LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDYuYwpAQCAtNjYsNiArNjYsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s0XTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMS4wLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisgIHN0cnVjdCBDIGdfZGJsID0geyAyLCA5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtODEsMTIgKzg3LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLjAsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLSAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOwogICBjbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV91Y2hhcjsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q3LmMKaW5kZXggMTRjNzAyMy4uMjc1OTVlNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDcuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0Ny5jCkBAIC01OCw2ICs1OCwxMSBAQAogICBmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGUsIGNsc19zdHJ1Y3RfdHlwZTE7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzNdOwogCisgIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OworICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtNjgsMTEgKzczLDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUxLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMxOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxTEwsIDd9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OC5jCmluZGV4IGJiNzdlYWQuLjBlNmM2ODIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q4LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDguYwpAQCAtNjYsNiArNjYsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s0XTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMUxMLCA3fTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyTEwgLCAxMjd9LCA5OX07CisgIHN0cnVjdCBDIGdfZGJsID0geyAyTEwsIDl9OworCisgIHN0cnVjdCBCIHJlc19kYmw7CisKICAgY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwogICBjbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC04MSwxMiArODcsNiBAQAogICBjbHNfc3RydWN0X3R5cGUyLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTIuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczI7CiAKLSAgc3RydWN0IEEgZV9kYmwgPSB7IDFMTCwgN307Ci0gIHN0cnVjdCBCIGZfZGJsID0ge3sxMkxMICwgMTI3fSwgOTl9OwotICBzdHJ1Y3QgQyBnX2RibCA9IHsgMkxMLCA5fTsKLQotICBzdHJ1Y3QgQiByZXNfZGJsOwotCiAgIGNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzJdID0gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9uZXN0ZWRfc3RydWN0OS5jCmluZGV4IGU5ZjU0MWMuLjVmN2FjNjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL25lc3RlZF9zdHJ1Y3Q5LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvbmVzdGVkX3N0cnVjdDkuYwpAQCAtNjYsNiArNjYsMTIgQEAKICAgZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlLCBjbHNfc3RydWN0X3R5cGUxLCBjbHNfc3RydWN0X3R5cGUyOwogICBmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s0XTsKIAorICBzdHJ1Y3QgQSBlX2RibCA9IHsgMSwgN0xMfTsKKyAgc3RydWN0IEIgZl9kYmwgPSB7ezEyLjAgLCAxMjd9LCA5OX07CisgIHN0cnVjdCBDIGdfZGJsID0geyAyLCA5fTsKKworICBzdHJ1Y3QgQiByZXNfZGJsOworCiAgIGNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CiAgIGNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtODEsMTIgKzg3LDYgQEAKICAgY2xzX3N0cnVjdF90eXBlMi50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwogICBjbHNfc3RydWN0X3R5cGUyLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHMyOwogCi0gIHN0cnVjdCBBIGVfZGJsID0geyAxLCA3TEx9OwotICBzdHJ1Y3QgQiBmX2RibCA9IHt7MTIuMCAsIDEyN30sIDk5fTsKLSAgc3RydWN0IEMgZ19kYmwgPSB7IDIsIDl9OwotCi0gIHN0cnVjdCBCIHJlc19kYmw7Ci0KICAgY2xzX3N0cnVjdF9maWVsZHNbMF0gPSAmZmZpX3R5cGVfdWNoYXI7CiAgIGNsc19zdHJ1Y3RfZmllbGRzWzFdID0gJmZmaV90eXBlX3VpbnQ2NDsKICAgY2xzX3N0cnVjdF9maWVsZHNbMl0gPSBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvcmV0dXJuX3NjLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9yZXR1cm5fc2MuYwppbmRleCAxOTYwOGVlLi5hMzZjZjNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9yZXR1cm5fc2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9yZXR1cm5fc2MuYwpAQCAtMzAsNyArMzAsNyBAQAogICAgICAgIHNjIDwgKHNpZ25lZCBjaGFyKSAxMjc7IHNjKyspCiAgICAgewogICAgICAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKHJldHVybl9zYyksICZyaW50LCB2YWx1ZXMpOwotICAgICAgQ0hFQ0socmludCA9PSAoZmZpX2FyZykgc2MpOworICAgICAgQ0hFQ0soKHNpZ25lZCBjaGFyKXJpbnQgPT0gc2MpOwogICAgIH0KICAgZXhpdCgwKTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9sYXJnZS5jCmluZGV4IDIzYTkzYjkuLmYzMjkzOGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UuYwpAQCAtODIsMTcgKzgyLDE3IEBACiAJZmZpX3R5cGUgY2xzX3N0cnVjdF90eXBlOwogCWZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCi0JY2xzX3N0cnVjdF90eXBlLnNpemUgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS5hbGlnbm1lbnQgPSAwOwotCWNsc19zdHJ1Y3RfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotCWNsc19zdHJ1Y3RfdHlwZS5lbGVtZW50cyA9IGNsc19zdHJ1Y3RfZmllbGRzOwotCiAJc3RydWN0XzEwOGJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNyB9OwogCXN0cnVjdF8xMDhieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA2LjAsIDcuMCwgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDQgfTsKIAlzdHJ1Y3RfMTA4Ynl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDEuMCwgMi4wLCA5LjAsIDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzIH07CiAJc3RydWN0XzEwOGJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgMiB9OwogCXN0cnVjdF8xMDhieXRlIHJlc19kYmw7CiAKKwljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X2xhcmdlMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMKaW5kZXggZTI1OTlkMi4uM2IwZWY5YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbGFyZ2UyLmMKQEAgLTg0LDE3ICs4NCwxNyBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLQljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLQljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLQljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogCXN0cnVjdF8xMTZieXRlIGVfZGJsID0geyA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgNC4wLCA4LjAsIDEuMCwgMS4wLCAyLjAsIDMuMCwgNy4wLCAyLjAsIDUuMCwgNyB9OwogCXN0cnVjdF8xMTZieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA2LjAsIDcuMCwgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDYuMCwgNCB9OwogCXN0cnVjdF8xMTZieXRlIGdfZGJsID0geyA0LjAsIDUuMCwgNy4wLCA5LjAsIDEuMCwgMS4wLCAyLjAsIDkuMCwgOC4wLCA2LjAsIDEuMCwgNC4wLCAwLjAsIDcuMCwgMyB9OwogCXN0cnVjdF8xMTZieXRlIGhfZGJsID0geyA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgMy4wLCAzLjAsIDEuMCwgOS4wLCAyLjAsIDYuMCwgNS4wLCAzLjAsIDguMCwgMiB9OwogCXN0cnVjdF8xMTZieXRlIHJlc19kYmw7CiAKKwljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bS5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMKaW5kZXggMWZjNmE5ZS4uOTczZWUwMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtLmMKQEAgLTY4LDE3ICs2OCwxNyBAQAogCWZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTsKIAlmZmlfdHlwZSogZGJsX2FyZ190eXBlc1s1XTsKIAotCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKLQljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKLQljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKLQljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKLQogCXN0cnVjdF83MmJ5dGUgZV9kYmwgPSB7IDkuMCwgMi4wLCA2LjAsIDUuMCwgMy4wLCA0LjAsIDguMCwgMS4wLCA3LjAgfTsKIAlzdHJ1Y3RfNzJieXRlIGZfZGJsID0geyAxLjAsIDIuMCwgMy4wLCA3LjAsIDIuMCwgNS4wLCA2LjAsIDcuMCwgNC4wIH07CiAJc3RydWN0XzcyYnl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDEuMCwgMi4wLCA5LjAsIDMuMCB9OwogCXN0cnVjdF83MmJ5dGUgaF9kYmwgPSB7IDguMCwgNi4wLCAxLjAsIDQuMCwgMC4wLCAzLjAsIDMuMCwgMS4wLCAyLjAgfTsKIAlzdHJ1Y3RfNzJieXRlIHJlc19kYmw7CiAKKwljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7CisJY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7CisJY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisJY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7CisKIAljbHNfc3RydWN0X2ZpZWxkc1swXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogCWNsc19zdHJ1Y3RfZmllbGRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cmV0X21lZGl1bTIuYwppbmRleCBjYjJmMmZiLi44NDMyM2QxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJldF9tZWRpdW0yLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RyZXRfbWVkaXVtMi5jCkBAIC02OSwxNyArNjksMTcgQEAKIAlmZmlfdHlwZSBjbHNfc3RydWN0X3R5cGU7CiAJZmZpX3R5cGUqIGRibF9hcmdfdHlwZXNbNV07CiAKLQljbHNfc3RydWN0X3R5cGUuc2l6ZSA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLmFsaWdubWVudCA9IDA7Ci0JY2xzX3N0cnVjdF90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7Ci0JY2xzX3N0cnVjdF90eXBlLmVsZW1lbnRzID0gY2xzX3N0cnVjdF9maWVsZHM7Ci0KIAlzdHJ1Y3RfNzJieXRlIGVfZGJsID0geyA5LjAsIDIuMCwgNi4wLCA1LjAsIDMuMCwgNC4wLCA4LjAsIDEuMCwgNyB9OwogCXN0cnVjdF83MmJ5dGUgZl9kYmwgPSB7IDEuMCwgMi4wLCAzLjAsIDcuMCwgMi4wLCA1LjAsIDYuMCwgNy4wLCA0IH07CiAJc3RydWN0XzcyYnl0ZSBnX2RibCA9IHsgNC4wLCA1LjAsIDcuMCwgOS4wLCAxLjAsIDEuMCwgMi4wLCA5LjAsIDMgfTsKIAlzdHJ1Y3RfNzJieXRlIGhfZGJsID0geyA4LjAsIDYuMCwgMS4wLCA0LjAsIDAuMCwgMy4wLCAzLjAsIDEuMCwgMiB9OwogCXN0cnVjdF83MmJ5dGUgcmVzX2RibDsKIAorCWNsc19zdHJ1Y3RfdHlwZS5zaXplID0gMDsKKwljbHNfc3RydWN0X3R5cGUuYWxpZ25tZW50ID0gMDsKKwljbHNfc3RydWN0X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKwljbHNfc3RydWN0X3R5cGUuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczsKKwogCWNsc19zdHJ1Y3RfZmllbGRzWzBdID0gJmZmaV90eXBlX2RvdWJsZTsKIAljbHNfc3RydWN0X2ZpZWxkc1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAJY2xzX3N0cnVjdF9maWVsZHNbMl0gPSAmZmZpX3R5cGVfZG91YmxlOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RybGVuMl93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkODEwNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJsZW4yX3dpbjMyLmMKQEAgLTAsMCArMSw0NCBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIGZhc3RjYWxsIHN0cmxlbiBjYWxsIG9uIFg4Nl9XSU4zMiBzeXN0ZW1zLgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisKKyNpbmNsdWRlICJmZml0ZXN0LmgiCisKK3N0YXRpYyBzaXplX3QgX19GQVNUQ0FMTF9fIG15X2Zhc3RjYWxsX3N0cmxlbihjaGFyICpzKQoreworICByZXR1cm4gKHN0cmxlbihzKSk7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICBmZmlfYXJnIHJpbnQ7CisgIGNoYXIgKnM7CisgIGFyZ3NbMF0gPSAmZmZpX3R5cGVfcG9pbnRlcjsKKyAgdmFsdWVzWzBdID0gKHZvaWQqKSAmczsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAxLAorCQkgICAgICAgJmZmaV90eXBlX3NpbnQsIGFyZ3MpID09IEZGSV9PSyk7CisgIAorICBzID0gImEiOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfc3RybGVuKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMSk7CisgIAorICBzID0gIjEyMzQ1NjciOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfc3RybGVuKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gNyk7CisgIAorICBzID0gIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDUiOworICBmZmlfY2FsbCgmY2lmLCBGRklfRk4obXlfZmFzdGNhbGxfc3RybGVuKSwgJnJpbnQsIHZhbHVlcyk7CisgIENIRUNLKHJpbnQgPT0gMjUpOworICAKKyAgcHJpbnRmKCJmYXN0Y2FsbCBzdHJsZW4gdGVzdHMgcGFzc2VkXG4iKTsKKyAgZXhpdCgwKTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDEuYwppbmRleCBlYTc2Yzg1Li5iZmMyM2Y2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QxLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MS5jCkBAIC0zMCw2ICszMCwxMyBAQAogICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOwogICBmZmlfdHlwZSB0czFfdHlwZTsKICAgZmZpX3R5cGUgKnRzMV90eXBlX2VsZW1lbnRzWzRdOworCisgIHRlc3Rfc3RydWN0dXJlXzEgdHMxX2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfMSAqdHMxX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzEgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMSkpOworCiAgIHRzMV90eXBlLnNpemUgPSAwOwogICB0czFfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czFfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzksMTEgKzQ2LDYgQEAKICAgdHMxX3R5cGVfZWxlbWVudHNbMl0gPSAmZmZpX3R5cGVfdWludDsKICAgdHMxX3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOwogICAKLSAgdGVzdF9zdHJ1Y3R1cmVfMSB0czFfYXJnOwotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfMSAqdHMxX3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV8xICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzEpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHMxX3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czFfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDFfd2luMzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzU2ZjVhCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0MV93aW4zMi5jCkBAIC0wLDAgKzEsNjcgQEAKKy8qIEFyZWE6CWZmaV9jYWxsCisgICBQdXJwb3NlOglDaGVjayBzdHJ1Y3R1cmVzIHdpdGggZmFzdGNhbGwvdGhpc2NhbGwgY29udmVudGlvbi4KKyAgIExpbWl0YXRpb25zOglub25lLgorICAgUFI6CQlub25lLgorICAgT3JpZ2luYXRvcjoJRnJvbSB0aGUgb3JpZ2luYWwgZmZpdGVzdC5jICAqLworCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBpPzg2LSotY3lnd2luKiBpPzg2LSotbWluZ3cqIH0gfSAqLworI2luY2x1ZGUgImZmaXRlc3QuaCIKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgdW5zaWduZWQgY2hhciB1YzsKKyAgZG91YmxlIGQ7CisgIHVuc2lnbmVkIGludCB1aTsKK30gdGVzdF9zdHJ1Y3R1cmVfMTsKKworc3RhdGljIHRlc3Rfc3RydWN0dXJlXzEgX19GQVNUQ0FMTF9fIHN0cnVjdDEodGVzdF9zdHJ1Y3R1cmVfMSB0cykKK3sKKyAgdHMudWMrKzsKKyAgdHMuZC0tOworICB0cy51aSsrOworCisgIHJldHVybiB0czsKK30KKworaW50IG1haW4gKHZvaWQpCit7CisgIGZmaV9jaWYgY2lmOworICBmZmlfdHlwZSAqYXJnc1tNQVhfQVJHU107CisgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CisgIGZmaV90eXBlIHRzMV90eXBlOworICBmZmlfdHlwZSAqdHMxX3R5cGVfZWxlbWVudHNbNF07CisKKyAgdGVzdF9zdHJ1Y3R1cmVfMSB0czFfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV8xICp0czFfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfMSAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV8xKSk7CisKKyAgdHMxX3R5cGUuc2l6ZSA9IDA7CisgIHRzMV90eXBlLmFsaWdubWVudCA9IDA7CisgIHRzMV90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CisgIHRzMV90eXBlLmVsZW1lbnRzID0gdHMxX3R5cGVfZWxlbWVudHM7CisgIHRzMV90eXBlX2VsZW1lbnRzWzBdID0gJmZmaV90eXBlX3VjaGFyOworICB0czFfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIHRzMV90eXBlX2VsZW1lbnRzWzJdID0gJmZmaV90eXBlX3VpbnQ7CisgIHRzMV90eXBlX2VsZW1lbnRzWzNdID0gTlVMTDsKKyAgCisgIGFyZ3NbMF0gPSAmdHMxX3R5cGU7CisgIHZhbHVlc1swXSA9ICZ0czFfYXJnOworICAKKyAgLyogSW5pdGlhbGl6ZSB0aGUgY2lmICovCisgIENIRUNLKGZmaV9wcmVwX2NpZigmY2lmLCBGRklfRkFTVENBTEwsIDEsIAorCQkgICAgICZ0czFfdHlwZSwgYXJncykgPT0gRkZJX09LKTsKKyAgCisgIHRzMV9hcmcudWMgPSAnXHgwMSc7CisgIHRzMV9hcmcuZCA9IDMuMTQxNTk7CisgIHRzMV9hcmcudWkgPSA1NTU7CisKKyAgZmZpX2NhbGwoJmNpZiwgRkZJX0ZOKHN0cnVjdDEpLCB0czFfcmVzdWx0LCB2YWx1ZXMpOworICAKKyAgQ0hFQ0sodHMxX3Jlc3VsdC0+dWkgPT0gNTU2KTsKKyAgQ0hFQ0sodHMxX3Jlc3VsdC0+ZCA9PSAzLjE0MTU5IC0gMSk7CisgCisgIGZyZWUgKHRzMV9yZXN1bHQpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Mi5jCmluZGV4IDE0YmM5ZmQuLmQ4NTM4NWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDIuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyLmMKQEAgLTI5LDYgKzI5LDExIEBACiAgIHRlc3Rfc3RydWN0dXJlXzIgdHMyX2FyZzsKICAgZmZpX3R5cGUgdHMyX3R5cGU7CiAgIGZmaV90eXBlICp0czJfdHlwZV9lbGVtZW50c1szXTsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfMiAqdHMyX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzIgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMikpOworCiAgIHRzMl90eXBlLnNpemUgPSAwOwogICB0czJfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czJfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzcsMTEgKzQyLDYgQEAKICAgdHMyX3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfZG91YmxlOwogICB0czJfdHlwZV9lbGVtZW50c1syXSA9IE5VTEw7CiAKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV8yICp0czJfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzIgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMikpOwotICAKICAgYXJnc1swXSA9ICZ0czJfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzMl9hcmc7CiAgIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ml93aW4zMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMDIyODUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QyX3dpbjMyLmMKQEAgLTAsMCArMSw2NyBAQAorLyogQXJlYToJZmZpX2NhbGwKKyAgIFB1cnBvc2U6CUNoZWNrIHN0cnVjdHVyZXMgaW4gZmFzdGNhbGwvc3RkY2FsbCBmdW5jdGlvbgorICAgTGltaXRhdGlvbnM6CW5vbmUuCisgICBQUjoJCW5vbmUuCisgICBPcmlnaW5hdG9yOglGcm9tIHRoZSBvcmlnaW5hbCBmZml0ZXN0LmMgICovCisKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGk/ODYtKi1jeWd3aW4qIGk/ODYtKi1taW5ndyogfSB9ICovCisjaW5jbHVkZSAiZmZpdGVzdC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworICBkb3VibGUgZDE7CisgIGRvdWJsZSBkMjsKK30gdGVzdF9zdHJ1Y3R1cmVfMjsKKworc3RhdGljIHRlc3Rfc3RydWN0dXJlXzIgX19GQVNUQ0FMTF9fIHN0cnVjdDIodGVzdF9zdHJ1Y3R1cmVfMiB0cykKK3sKKyAgdHMuZDEtLTsKKyAgdHMuZDItLTsKKworICByZXR1cm4gdHM7Cit9CisKK2ludCBtYWluICh2b2lkKQoreworICBmZmlfY2lmIGNpZjsKKyAgZmZpX3R5cGUgKmFyZ3NbTUFYX0FSR1NdOworICB2b2lkICp2YWx1ZXNbTUFYX0FSR1NdOworICB0ZXN0X3N0cnVjdHVyZV8yIHRzMl9hcmc7CisgIGZmaV90eXBlIHRzMl90eXBlOworICBmZmlfdHlwZSAqdHMyX3R5cGVfZWxlbWVudHNbM107CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzIgKnRzMl9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV8yICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzIpKTsKKworICB0czJfdHlwZS5zaXplID0gMDsKKyAgdHMyX3R5cGUuYWxpZ25tZW50ID0gMDsKKyAgdHMyX3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKKyAgdHMyX3R5cGUuZWxlbWVudHMgPSB0czJfdHlwZV9lbGVtZW50czsKKyAgdHMyX3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfZG91YmxlOworICB0czJfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CisgIHRzMl90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKKworICBhcmdzWzBdID0gJnRzMl90eXBlOworICB2YWx1ZXNbMF0gPSAmdHMyX2FyZzsKKyAgCisgIC8qIEluaXRpYWxpemUgdGhlIGNpZiAqLworICBDSEVDSyhmZmlfcHJlcF9jaWYoJmNpZiwgRkZJX0ZBU1RDQUxMLCAxLCAmdHMyX3R5cGUsIGFyZ3MpID09IEZGSV9PSyk7CisgIAorICB0czJfYXJnLmQxID0gNS41NTsKKyAgdHMyX2FyZy5kMiA9IDYuNjY7CisgIAorICBwcmludGYgKCIlZ1xuIiwgdHMyX2FyZy5kMSk7CisgIHByaW50ZiAoIiVnXG4iLCB0czJfYXJnLmQyKTsKKyAgCisgIGZmaV9jYWxsKCZjaWYsIEZGSV9GTihzdHJ1Y3QyKSwgdHMyX3Jlc3VsdCwgdmFsdWVzKTsKKyAgCisgIHByaW50ZiAoIiVnXG4iLCB0czJfcmVzdWx0LT5kMSk7CisgIHByaW50ZiAoIiVnXG4iLCB0czJfcmVzdWx0LT5kMik7CisgIAorICBDSEVDSyh0czJfcmVzdWx0LT5kMSA9PSA1LjU1IC0gMSk7CisgIENIRUNLKHRzMl9yZXN1bHQtPmQyID09IDYuNjYgLSAxKTsKKyAgCisgIGZyZWUgKHRzMl9yZXN1bHQpOworICBleGl0KDApOworfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0My5jCmluZGV4IGUwYmIwOWIuLmRlODgzYzIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDMuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3QzLmMKQEAgLTI3LDYgKzI3LDExIEBACiAgIGludCBjb21wYXJlX3ZhbHVlOwogICBmZmlfdHlwZSB0czNfdHlwZTsKICAgZmZpX3R5cGUgKnRzM190eXBlX2VsZW1lbnRzWzJdOworCisgIHRlc3Rfc3RydWN0dXJlXzMgdHMzX2FyZzsKKyAgdGVzdF9zdHJ1Y3R1cmVfMyAqdHMzX3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzMgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfMykpOworCiAgIHRzM190eXBlLnNpemUgPSAwOwogICB0czNfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czNfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzQsMTAgKzM5LDYgQEAKICAgdHMzX3R5cGVfZWxlbWVudHNbMF0gPSAmZmZpX3R5cGVfc2ludDsKICAgdHMzX3R5cGVfZWxlbWVudHNbMV0gPSBOVUxMOwogCi0gIHRlc3Rfc3RydWN0dXJlXzMgdHMzX2FyZzsKLSAgdGVzdF9zdHJ1Y3R1cmVfMyAqdHMzX3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV8zICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzMpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHMzX3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czNfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDQuYwppbmRleCAwYWQwYTgzLi40OGUwMzQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NC5jCkBAIC0yOCwyMSArMjgsMjIgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM0X3R5cGU7CiAgIGZmaV90eXBlICp0czRfdHlwZV9lbGVtZW50c1s0XTsgIAorCisgIHRlc3Rfc3RydWN0dXJlXzQgdHM0X2FyZzsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfNCAqdHM0X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzQgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNCkpOworCiAgIHRzNF90eXBlLnNpemUgPSAwOwogICB0czRfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czRfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwotICB0ZXN0X3N0cnVjdHVyZV80IHRzNF9hcmc7CiAgIHRzNF90eXBlLmVsZW1lbnRzID0gdHM0X3R5cGVfZWxlbWVudHM7CiAgIHRzNF90eXBlX2VsZW1lbnRzWzBdID0gJmZmaV90eXBlX3VpbnQ7CiAgIHRzNF90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX3VpbnQ7CiAgIHRzNF90eXBlX2VsZW1lbnRzWzJdID0gJmZmaV90eXBlX3VpbnQ7CiAgIHRzNF90eXBlX2VsZW1lbnRzWzNdID0gTlVMTDsKIAotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzQgKnRzNF9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfNCAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV80KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzNF90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM0X2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q1LmMKaW5kZXggYzAzY2M5Ny4uMjhiMWYwYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0NS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDUuYwpAQCAtMjcsNiArMjcsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM1X3R5cGU7CiAgIGZmaV90eXBlICp0czVfdHlwZV9lbGVtZW50c1szXTsKKworICB0ZXN0X3N0cnVjdHVyZV81IHRzNV9hcmcxLCB0czVfYXJnMjsKKworICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KKyAgdGVzdF9zdHJ1Y3R1cmVfNSAqdHM1X3Jlc3VsdCA9CisgICAgKHRlc3Rfc3RydWN0dXJlXzUgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNSkpOworCiAgIHRzNV90eXBlLnNpemUgPSAwOwogICB0czVfdHlwZS5hbGlnbm1lbnQgPSAwOwogICB0czVfdHlwZS50eXBlID0gRkZJX1RZUEVfU1RSVUNUOwpAQCAtMzUsMTIgKzQyLDYgQEAKICAgdHM1X3R5cGVfZWxlbWVudHNbMV0gPSAmZmZpX3R5cGVfc2NoYXI7CiAgIHRzNV90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKIAotICB0ZXN0X3N0cnVjdHVyZV81IHRzNV9hcmcxLCB0czVfYXJnMjsKLSAgCi0gIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLwotICB0ZXN0X3N0cnVjdHVyZV81ICp0czVfcmVzdWx0ID0gCi0gICAgKHRlc3Rfc3RydWN0dXJlXzUgKikgbWFsbG9jIChzaXplb2YodGVzdF9zdHJ1Y3R1cmVfNSkpOwotICAKICAgYXJnc1swXSA9ICZ0czVfdHlwZTsKICAgYXJnc1sxXSA9ICZ0czVfdHlwZTsKICAgdmFsdWVzWzBdID0gJnRzNV9hcmcxOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ni5jCmluZGV4IDgzZGI5YWYuLjBlMjY3NDYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDYuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q2LmMKQEAgLTI3LDYgKzI3LDEzIEBACiAgIHZvaWQgKnZhbHVlc1tNQVhfQVJHU107CiAgIGZmaV90eXBlIHRzNl90eXBlOwogICBmZmlfdHlwZSAqdHM2X3R5cGVfZWxlbWVudHNbM107CisKKyAgdGVzdF9zdHJ1Y3R1cmVfNiB0czZfYXJnOworCisgIC8qIFRoaXMgaXMgYSBoYWNrIHRvIGdldCBhIHByb3Blcmx5IGFsaWduZWQgcmVzdWx0IGJ1ZmZlciAqLworICB0ZXN0X3N0cnVjdHVyZV82ICp0czZfcmVzdWx0ID0KKyAgICAodGVzdF9zdHJ1Y3R1cmVfNiAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV82KSk7CisKICAgdHM2X3R5cGUuc2l6ZSA9IDA7CiAgIHRzNl90eXBlLmFsaWdubWVudCA9IDA7CiAgIHRzNl90eXBlLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CkBAIC0zNSwxMyArNDIsNiBAQAogICB0czZfdHlwZV9lbGVtZW50c1sxXSA9ICZmZmlfdHlwZV9kb3VibGU7CiAgIHRzNl90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKIAotCi0gIHRlc3Rfc3RydWN0dXJlXzYgdHM2X2FyZzsKLQotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfNiAqdHM2X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV82ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzYpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM2X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czZfYXJnOwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q3LmMKaW5kZXggNThhYWM0Yy4uOGYyYmJmZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0Ny5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDcuYwpAQCAtMjksNiArMjksMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM3X3R5cGU7CiAgIGZmaV90eXBlICp0czdfdHlwZV9lbGVtZW50c1s0XTsKKworICB0ZXN0X3N0cnVjdHVyZV83IHRzN19hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzcgKnRzN19yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV83ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzcpKTsKKwogICB0czdfdHlwZS5zaXplID0gMDsKICAgdHM3X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM3X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM4LDEzICs0NSw2IEBACiAgIHRzN190eXBlX2VsZW1lbnRzWzJdID0gJmZmaV90eXBlX2RvdWJsZTsKICAgdHM3X3R5cGVfZWxlbWVudHNbM10gPSBOVUxMOwogCi0KLSAgdGVzdF9zdHJ1Y3R1cmVfNyB0czdfYXJnOwotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzcgKnRzN19yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfNyAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV83KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzN190eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM3X2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q4LmMKaW5kZXggYzc3M2FjNy4uMjY2ZTFmMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OC5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDguYwpAQCAtMzEsNiArMzEsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM4X3R5cGU7CiAgIGZmaV90eXBlICp0czhfdHlwZV9lbGVtZW50c1s1XTsKKworICB0ZXN0X3N0cnVjdHVyZV84IHRzOF9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzggKnRzOF9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV84ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzgpKTsKKwogICB0czhfdHlwZS5zaXplID0gMDsKICAgdHM4X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM4X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTQxLDEyICs0OCw2IEBACiAgIHRzOF90eXBlX2VsZW1lbnRzWzNdID0gJmZmaV90eXBlX2Zsb2F0OwogICB0czhfdHlwZV9lbGVtZW50c1s0XSA9IE5VTEw7CiAKLSAgdGVzdF9zdHJ1Y3R1cmVfOCB0czhfYXJnOwotICAKLSAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCi0gIHRlc3Rfc3RydWN0dXJlXzggKnRzOF9yZXN1bHQgPSAKLSAgICAodGVzdF9zdHJ1Y3R1cmVfOCAqKSBtYWxsb2MgKHNpemVvZih0ZXN0X3N0cnVjdHVyZV84KSk7Ci0gIAogICBhcmdzWzBdID0gJnRzOF90eXBlOwogICB2YWx1ZXNbMF0gPSAmdHM4X2FyZzsKICAgCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC9zdHJ1Y3Q5LmMKaW5kZXggZjMwMDkxZi4uZWZlYjcxNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvc3RydWN0OS5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3N0cnVjdDkuYwpAQCAtMjgsNiArMjgsMTMgQEAKICAgdm9pZCAqdmFsdWVzW01BWF9BUkdTXTsKICAgZmZpX3R5cGUgdHM5X3R5cGU7CiAgIGZmaV90eXBlICp0czlfdHlwZV9lbGVtZW50c1szXTsKKworICB0ZXN0X3N0cnVjdHVyZV85IHRzOV9hcmc7CisKKyAgLyogVGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGEgcHJvcGVybHkgYWxpZ25lZCByZXN1bHQgYnVmZmVyICovCisgIHRlc3Rfc3RydWN0dXJlXzkgKnRzOV9yZXN1bHQgPQorICAgICh0ZXN0X3N0cnVjdHVyZV85ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzkpKTsKKwogICB0czlfdHlwZS5zaXplID0gMDsKICAgdHM5X3R5cGUuYWxpZ25tZW50ID0gMDsKICAgdHM5X3R5cGUudHlwZSA9IEZGSV9UWVBFX1NUUlVDVDsKQEAgLTM2LDEyICs0Myw2IEBACiAgIHRzOV90eXBlX2VsZW1lbnRzWzFdID0gJmZmaV90eXBlX3NpbnQ7CiAgIHRzOV90eXBlX2VsZW1lbnRzWzJdID0gTlVMTDsKIAotICB0ZXN0X3N0cnVjdHVyZV85IHRzOV9hcmc7Ci0gIAotICAvKiBUaGlzIGlzIGEgaGFjayB0byBnZXQgYSBwcm9wZXJseSBhbGlnbmVkIHJlc3VsdCBidWZmZXIgKi8KLSAgdGVzdF9zdHJ1Y3R1cmVfOSAqdHM5X3Jlc3VsdCA9IAotICAgICh0ZXN0X3N0cnVjdHVyZV85ICopIG1hbGxvYyAoc2l6ZW9mKHRlc3Rfc3RydWN0dXJlXzkpKTsKLSAgCiAgIGFyZ3NbMF0gPSAmdHM5X3R5cGU7CiAgIHZhbHVlc1swXSA9ICZ0czlfYXJnOwogICAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuY2FsbC90ZXN0Y2xvc3VyZS5jCmluZGV4IDE2MWNjODkuLmNhMzEwNTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmkvdGVzdHN1aXRlL2xpYmZmaS5jYWxsL3Rlc3RjbG9zdXJlLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLmNhbGwvdGVzdGNsb3N1cmUuYwpAQCAtNDMsMTMgKzQzLDEzIEBACiAgIGZmaV90eXBlIGNsc19zdHJ1Y3RfdHlwZTA7CiAgIGZmaV90eXBlKiBkYmxfYXJnX3R5cGVzWzVdOwogCisgIHN0cnVjdCBjbHNfc3RydWN0X2NvbWJpbmVkIGdfZGJsID0gezQuMCwgNS4wLCAxLjAsIDguMH07CisKICAgY2xzX3N0cnVjdF90eXBlMC5zaXplID0gMDsKICAgY2xzX3N0cnVjdF90eXBlMC5hbGlnbm1lbnQgPSAwOwogICBjbHNfc3RydWN0X3R5cGUwLnR5cGUgPSBGRklfVFlQRV9TVFJVQ1Q7CiAgIGNsc19zdHJ1Y3RfdHlwZTAuZWxlbWVudHMgPSBjbHNfc3RydWN0X2ZpZWxkczA7CiAKLSAgc3RydWN0IGNsc19zdHJ1Y3RfY29tYmluZWQgZ19kYmwgPSB7NC4wLCA1LjAsIDEuMCwgOC4wfTsKLQogICBjbHNfc3RydWN0X2ZpZWxkczBbMF0gPSAmZmZpX3R5cGVfZmxvYXQ7CiAgIGNsc19zdHJ1Y3RfZmllbGRzMFsxXSA9ICZmZmlfdHlwZV9mbG9hdDsKICAgY2xzX3N0cnVjdF9maWVsZHMwWzJdID0gJmZmaV90eXBlX2Zsb2F0OwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS90ZXN0c3VpdGUvbGliZmZpLnNwZWNpYWwvc3BlY2lhbC5leHAgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cAppbmRleCBlMTY3ZTg2Li43NDY3MWIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cAorKysgYi9Nb2R1bGVzL19jdHlwZXMvbGliZmZpL3Rlc3RzdWl0ZS9saWJmZmkuc3BlY2lhbC9zcGVjaWFsLmV4cApAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE0LDggKzE0LDYgQEAKICMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi1sb2FkX2xpYiBsaWJmZmktZGcuZXhwCi0KIGRnLWluaXQKIGxpYmZmaS1pbml0CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMgYi9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCmluZGV4IDI2MmQwYjQuLmU1YjBlNGMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYwpAQCAtNDI2LDkgKzQyNiw5IEBACiAgICAgICAgIFN0Z0RpY3RPYmplY3QgKmRpY3Q7CiAgICAgICAgIGludCBiaXRzaXplID0gMDsKIAotICAgICAgICBpZiAoIXBhaXIgfHwgIVB5QXJnX1BhcnNlVHVwbGUocGFpciwgIk9PfGkiLCAmbmFtZSwgJmRlc2MsICZiaXRzaXplKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICInX2ZpZWxkc18nIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBwYWlycyIpOworICAgICAgICBpZiAoIXBhaXIgfHwgIVB5QXJnX1BhcnNlVHVwbGUocGFpciwgIlVPfGkiLCAmbmFtZSwgJmRlc2MsICZiaXRzaXplKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ19maWVsZHNfJyBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgKG5hbWUsIEMgdHlwZSkgcGFpcnMiKTsKICAgICAgICAgICAgIFB5X1hERUNSRUYocGFpcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTQ3OCw2ICs0NzgsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJpdHNpemUgPSAwOworCiAgICAgICAgIGlmIChpc1N0cnVjdCAmJiAhaXNQYWNrZWQpIHsKICAgICAgICAgICAgIGNoYXIgKmZpZWxkZm10ID0gZGljdC0+Zm9ybWF0ID8gZGljdC0+Zm9ybWF0IDogIkIiOwogICAgICAgICAgICAgY2hhciAqZmllbGRuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lKTsKQEAgLTQ4NywxMCArNDg4LDYgQEAKIAogICAgICAgICAgICAgaWYgKGZpZWxkbmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJ1Y3R1cmUgZmllbGQgbmFtZSBtdXN0IGJlIHN0cmluZyBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhaXIpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTUxNSw2ICs1MTIsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGlmIChpc1N0cnVjdCkgewogICAgICAgICAgICAgcHJvcCA9IFB5Q0ZpZWxkX0Zyb21EZXNjKGRlc2MsIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWVsZF9zaXplLCBiaXRzaXplLCAmYml0b2ZzLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzX3BhbmVsLmMgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwppbmRleCA4NTYxYTJlLi4xYzdkMDg0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYworKysgYi9Nb2R1bGVzL19jdXJzZXNfcGFuZWwuYwpAQCAtMTYsOCArMTYsMzcgQEAKIAogI2luY2x1ZGUgPHBhbmVsLmg+CiAKLXN0YXRpYyBQeU9iamVjdCAqUHlDdXJzZXNFcnJvcjsKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqUHlDdXJzZXNFcnJvcjsKKyAgICBQeU9iamVjdCAqUHlDdXJzZXNQYW5lbF9UeXBlOworfSBfY3Vyc2VzX3BhbmVsc3RhdGU7CiAKKyNkZWZpbmUgX2N1cnNlc19wYW5lbHN0YXRlKG8pICgoX2N1cnNlc19wYW5lbHN0YXRlICopUHlNb2R1bGVfR2V0U3RhdGUobykpCisKK3N0YXRpYyBpbnQKK19jdXJzZXNfcGFuZWxfY2xlYXIoUHlPYmplY3QgKm0pCit7CisgICAgUHlfQ0xFQVIoX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc0Vycm9yKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2N1cnNlc19wYW5lbF90cmF2ZXJzZShQeU9iamVjdCAqbSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoX2N1cnNlc19wYW5lbHN0YXRlKG0pLT5QeUN1cnNlc0Vycm9yKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK19jdXJzZXNfcGFuZWxfZnJlZSh2b2lkICptKQoreworICAgIF9jdXJzZXNfcGFuZWxfY2xlYXIoKFB5T2JqZWN0ICopIG0pOworfQorCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9jdXJzZXNfcGFuZWxtb2R1bGU7CisKKyNkZWZpbmUgX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbCBcCisoKF9jdXJzZXNfcGFuZWxzdGF0ZSAqKSBQeU1vZHVsZV9HZXRTdGF0ZShQeVN0YXRlX0ZpbmRNb2R1bGUoJl9jdXJzZXNfcGFuZWxtb2R1bGUpKSkKIAogLyogVXRpbGl0eSBGdW5jdGlvbnMgKi8KIApAQCAtMzQsOSArNjMsOSBAQAogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoZm5hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsIGNhdGNoYWxsX0VSUik7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfRVJSKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUN1cnNlc0Vycm9yLCAiJXMoKSByZXR1cm5lZCBFUlIiLCBmbmFtZSk7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNFcnJvciwgIiVzKCkgcmV0dXJuZWQgRVJSIiwgZm5hbWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTU0LDkgKzgzLDggQEAKICAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd287ICAgLyogZm9yIHJlZmVyZW5jZSBjb3VudHMgKi8KIH0gUHlDdXJzZXNQYW5lbE9iamVjdDsKIAotUHlUeXBlT2JqZWN0IFB5Q3Vyc2VzUGFuZWxfVHlwZTsKLQotI2RlZmluZSBQeUN1cnNlc1BhbmVsX0NoZWNrKHYpICAgKFB5X1RZUEUodikgPT0gJlB5Q3Vyc2VzUGFuZWxfVHlwZSkKKyNkZWZpbmUgUHlDdXJzZXNQYW5lbF9DaGVjayh2KSAgXAorIChQeV9UWVBFKHYpID09IF9jdXJzZXNfcGFuZWxzdGF0ZV9nbG9iYWwtPlB5Q3Vyc2VzUGFuZWxfVHlwZSkKIAogLyogU29tZSBoZWxwZXIgZnVuY3Rpb25zLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXJlJ3MgYWx3YXlzIGEgd2luZG93CiAgICBhc3NvY2lhdGVkIHdpdGggYSBwYW5lbC4gVG8gZW5zdXJlIHRoYXQgUHl0aG9uJ3MgR0MgZG9lc24ndCBwdWxsCkBAIC0xNzUsNyArMjAzLDggQEAKIHsKICAgICBQeUN1cnNlc1BhbmVsT2JqZWN0ICpwbzsKIAotICAgIHBvID0gUHlPYmplY3RfTkVXKFB5Q3Vyc2VzUGFuZWxPYmplY3QsICZQeUN1cnNlc1BhbmVsX1R5cGUpOworICAgIHBvID0gUHlPYmplY3RfTkVXKFB5Q3Vyc2VzUGFuZWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKShfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsKS0+UHlDdXJzZXNQYW5lbF9UeXBlKTsKICAgICBpZiAocG8gPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAgICAgcG8tPnBhbiA9IHBhbjsKICAgICBpZiAoaW5zZXJ0X2xvcChwbykgPCAwKSB7CkBAIC0yODAsNyArMzA5LDcgQEAKIAogICAgIHJ0biA9IHJlcGxhY2VfcGFuZWwoc2VsZi0+cGFuLCB0ZW1wLT53aW4pOwogICAgIGlmIChydG4gPT0gRVJSKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCAicmVwbGFjZV9wYW5lbCgpIHJldHVybmVkIEVSUiIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNFcnJvciwgInJlcGxhY2VfcGFuZWwoKSByZXR1cm5lZCBFUlIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0RFQ1JFRihwby0+d28pOwpAQCAtMzA1LDcgKzMzNCw3IEBACiAgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKICAgICBvYmogPSAoUHlPYmplY3QgKikgcGFuZWxfdXNlcnB0cihzZWxmLT5wYW4pOwogICAgIGlmIChvYmogPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgIm5vIHVzZXJwdHIgc2V0Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhfY3Vyc2VzX3BhbmVsc3RhdGVfZ2xvYmFsLT5QeUN1cnNlc0Vycm9yLCAibm8gdXNlcnB0ciBzZXQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMzQsMzYgKzM2MywxOCBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotUHlUeXBlT2JqZWN0IFB5Q3Vyc2VzUGFuZWxfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiX2N1cnNlc19wYW5lbC5jdXJzZXMgcGFuZWwiLCAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihQeUN1cnNlc1BhbmVsT2JqZWN0KSwgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcilQeUN1cnNlc1BhbmVsX0RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBQeUN1cnNlc1BhbmVsX01ldGhvZHMsIC8qdHBfbWV0aG9kcyovCitzdGF0aWMgUHlUeXBlX1Nsb3QgUHlDdXJzZXNQYW5lbF9UeXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2RlYWxsb2MsIFB5Q3Vyc2VzUGFuZWxfRGVhbGxvY30sCisgICAge1B5X3RwX21ldGhvZHMsIFB5Q3Vyc2VzUGFuZWxfTWV0aG9kc30sCisgICAgezAsIDB9LAorfTsKKworc3RhdGljIFB5VHlwZV9TcGVjIFB5Q3Vyc2VzUGFuZWxfVHlwZV9zcGVjID0geworICAgICJfY3Vyc2VzX3BhbmVsLmN1cnNlcyBwYW5lbCIsCisgICAgc2l6ZW9mKFB5Q3Vyc2VzUGFuZWxPYmplY3QpLAorICAgIDAsCisgICAgUHlfVFBGTEFHU19ERUZBVUxULAorICAgIFB5Q3Vyc2VzUGFuZWxfVHlwZV9zbG90cwogfTsKIAogLyogV3JhcHBlciBmb3IgcGFuZWxfYWJvdmUoTlVMTCkuIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYm90dG9tCkBAIC00MDUsNyArNDE2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcGFuID0gbmV3X3BhbmVsKHdpbi0+d2luKTsKICAgICBpZiAocGFuID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsIGNhdGNoYWxsX05VTEwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoX2N1cnNlc19wYW5lbHN0YXRlX2dsb2JhbC0+UHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfTlVMTCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNQYW5lbF9OZXcocGFuLCB3aW4pOwpAQCAtNDY3LDEyICs0NzgsMTIgQEAKICAgICAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAogICAgICAgICAiX2N1cnNlc19wYW5lbCIsCiAgICAgICAgIE5VTEwsCi0gICAgICAgIC0xLAorICAgICAgICBzaXplb2YoX2N1cnNlc19wYW5lbHN0YXRlKSwKICAgICAgICAgUHlDdXJzZXNfbWV0aG9kcywKICAgICAgICAgTlVMTCwKLSAgICAgICAgTlVMTCwKLSAgICAgICAgTlVMTCwKLSAgICAgICAgTlVMTAorICAgICAgICBfY3Vyc2VzX3BhbmVsX3RyYXZlcnNlLAorICAgICAgICBfY3Vyc2VzX3BhbmVsX2NsZWFyLAorICAgICAgICBfY3Vyc2VzX3BhbmVsX2ZyZWUKIH07CiAKIFB5TU9ESU5JVF9GVU5DCkBAIC00ODAsMjEgKzQ5MSwyMyBAQAogewogICAgIFB5T2JqZWN0ICptLCAqZCwgKnY7CiAKLSAgICAvKiBJbml0aWFsaXplIG9iamVjdCB0eXBlICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlDdXJzZXNQYW5lbF9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaW1wb3J0X2N1cnNlcygpOwotCiAgICAgLyogQ3JlYXRlIHRoZSBtb2R1bGUgYW5kIGFkZCB0aGUgZnVuY3Rpb25zICovCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmX2N1cnNlc19wYW5lbG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKIAorICAgIC8qIEluaXRpYWxpemUgb2JqZWN0IHR5cGUgKi8KKyAgICBfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzUGFuZWxfVHlwZSA9IFwKKyAgICAgICAgUHlUeXBlX0Zyb21TcGVjKCZQeUN1cnNlc1BhbmVsX1R5cGVfc3BlYyk7CisgICAgaWYgKF9jdXJzZXNfcGFuZWxzdGF0ZShtKS0+UHlDdXJzZXNQYW5lbF9UeXBlID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGltcG9ydF9jdXJzZXMoKTsKKwogICAgIC8qIEZvciBleGNlcHRpb24gX2N1cnNlc19wYW5lbC5lcnJvciAqLwotICAgIFB5Q3Vyc2VzRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oIl9jdXJzZXNfcGFuZWwuZXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiZXJyb3IiLCBQeUN1cnNlc0Vycm9yKTsKKyAgICBfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oIl9jdXJzZXNfcGFuZWwuZXJyb3IiLCBOVUxMLCBOVUxMKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiZXJyb3IiLCBfY3Vyc2VzX3BhbmVsc3RhdGUobSktPlB5Q3Vyc2VzRXJyb3IpOwogCiAgICAgLyogTWFrZSB0aGUgdmVyc2lvbiBhdmFpbGFibGUgKi8KICAgICB2ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlDdXJzZXNWZXJzaW9uKTsKQEAgLTUwMiw0ICs1MTUsNyBAQAogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX3ZlcnNpb25fXyIsIHYpOwogICAgIFB5X0RFQ1JFRih2KTsKICAgICByZXR1cm4gbTsKKyAgZmFpbDoKKyAgICBQeV9YREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3Vyc2VzbW9kdWxlLmMgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwppbmRleCA1ZTFhZmE5Li40ZTE0NDliIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYwpAQCAtMTA1LDEwICsxMDUsNiBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogCiAKLSNpZmRlZiBfX29zZl9fCi0jZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUyAgICAgIC8qIERvbid0IHVzZSBuY3Vyc2VzIGV4dGVuc2lvbnMgKi8KLSNlbmRpZgotCiAjaWZkZWYgX19ocHV4CiAjZGVmaW5lIFNUUklDVF9TWVNWX0NVUlNFUwogI2VuZGlmCkBAIC0xMjUsNiArMTIxLDEwIEBACiAjaW5jbHVkZSA8dGVybS5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKKyNpbmNsdWRlIDxsYW5naW5mby5oPgorI2VuZGlmCisKICNpZiAhZGVmaW5lZChIQVZFX05DVVJTRVNfSCkgJiYgKGRlZmluZWQoc2dpKSB8fCBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKFNDTzUpKQogI2RlZmluZSBTVFJJQ1RfU1lTVl9DVVJTRVMgICAgICAgLyogRG9uJ3QgdXNlIG5jdXJzZXMgZXh0ZW5zaW9ucyAqLwogdHlwZWRlZiBjaHR5cGUgYXR0cl90OyAgICAgICAgICAgLyogTm8gYXR0cl90IHR5cGUgaXMgYXZhaWxhYmxlICovCkBAIC0xNDcsNiArMTQ3LDggQEAKIC8qIFRlbGxzIHdoZXRoZXIgc3RhcnRfY29sb3IoKSBoYXMgYmVlbiBjYWxsZWQgdG8gaW5pdGlhbGlzZSBjb2xvciB1c2FnZS4gKi8KIHN0YXRpYyBpbnQgaW5pdGlhbGlzZWRjb2xvcnMgPSBGQUxTRTsKIAorc3RhdGljIGNoYXIgKnNjcmVlbl9lbmNvZGluZyA9IE5VTEw7CisKIC8qIFV0aWxpdHkgTWFjcm9zICovCiAjZGVmaW5lIFB5Q3Vyc2VzU2V0dXBUZXJtQ2FsbGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKGluaXRpYWxpc2VkX3NldHVwdGVybSAhPSBUUlVFKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xNzksNyArMTgxLDcgQEAKICAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlDdXJzZXNDaGVja0VSUihpbnQgY29kZSwgY2hhciAqZm5hbWUpCitQeUN1cnNlc0NoZWNrRVJSKGludCBjb2RlLCBjb25zdCBjaGFyICpmbmFtZSkKIHsKICAgICBpZiAoY29kZSAhPSBFUlIpIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwpAQCAtMTk0LDI3ICsxOTYsMTc1IEBACiAgICAgfQogfQogCisvKiBDb252ZXJ0IGFuIG9iamVjdCB0byBhIGJ5dGUgKGFuIGludGVnZXIgb2YgdHlwZSBjaHR5cGUpOgorCisgICAtIGludAorICAgLSBieXRlcyBvZiBsZW5ndGggMQorICAgLSBzdHIgb2YgbGVuZ3RoIDEKKworICAgUmV0dXJuIDEgb24gc3VjY2VzcywgMCBvbiBlcnJvciAoaW52YWxpZCB0eXBlIG9yIGludGVnZXIgb3ZlcmZsb3cpLiAqLwogc3RhdGljIGludAotUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKFB5T2JqZWN0ICpvYmosIGNodHlwZSAqY2gpCitQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoUHlDdXJzZXNXaW5kb3dPYmplY3QgKndpbiwgUHlPYmplY3QgKm9iaiwgY2h0eXBlICpjaCkKIHsKLSAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgewotICAgICAgICBpbnQgb3ZlcmZsb3c7Ci0gICAgICAgIC8qIFhYWCBzaG91bGQgdGhlIHRydW5jYXRpb24gYnkgdGhlIGNhc3QgYWxzbyBiZSByZXBvcnRlZAotICAgICAgICAgICBhcyBhbiBlcnJvcj8gKi8KLSAgICAgICAgKmNoID0gKGNodHlwZSkgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJm92ZXJmbG93KTsKLSAgICAgICAgaWYgKG92ZXJmbG93KQorICAgIGxvbmcgdmFsdWU7CisgICAgaWYoUHlCeXRlc19DaGVjayhvYmopICYmIFB5Qnl0ZXNfU2l6ZShvYmopID09IDEpIHsKKyAgICAgICAgdmFsdWUgPSAodW5zaWduZWQgY2hhcilQeUJ5dGVzX0FzU3RyaW5nKG9iailbMF07CisgICAgfQorICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR2V0TGVuZ3RoKG9iaikgIT0gMSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0IGJ5dGVzIG9yIHN0ciBvZiBsZW5ndGggMSwgb3IgaW50LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBhIHN0ciBvZiBsZW5ndGggJXppIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0gZWxzZSBpZihQeUJ5dGVzX0NoZWNrKG9iaikKLSAgICAgICAgICAgICAgJiYgKFB5Qnl0ZXNfU2l6ZShvYmopID09IDEpKSB7Ci0gICAgICAgICpjaCA9IChjaHR5cGUpICpQeUJ5dGVzX0FzU3RyaW5nKG9iaik7Ci0gICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSAmJiBQeVVuaWNvZGVfR2V0U2l6ZShvYmopID09IDEpIHsKLSAgICAgICAgKmNoID0gKGNodHlwZSkgKlB5VW5pY29kZV9BU19VTklDT0RFKG9iaik7Ci0gICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICB2YWx1ZSA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKKyAgICAgICAgaWYgKDEyOCA8IHZhbHVlKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZzsKKyAgICAgICAgICAgIGlmICh3aW4pCisgICAgICAgICAgICAgICAgZW5jb2RpbmcgPSB3aW4tPmVuY29kaW5nOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVuY29kaW5nID0gc2NyZWVuX2VuY29kaW5nOworICAgICAgICAgICAgYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0KG9iaiwgZW5jb2RpbmcsIE5VTEwpOworICAgICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShieXRlcykgPT0gMSkKKyAgICAgICAgICAgICAgICB2YWx1ZSA9ICh1bnNpZ25lZCBjaGFyKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKVswXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IC0xOworICAgICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvYmopKSB7CisgICAgICAgIGludCBsb25nX292ZXJmbG93OworICAgICAgICB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhvYmosICZsb25nX292ZXJmbG93KTsKKyAgICAgICAgaWYgKGxvbmdfb3ZlcmZsb3cpCisgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJleHBlY3QgYnl0ZXMgb3Igc3RyIG9mIGxlbmd0aCAxLCBvciBpbnQsIGdvdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKmNoID0gKGNodHlwZSl2YWx1ZTsKKyAgICBpZiAoKGxvbmcpKmNoICE9IHZhbHVlKQorICAgICAgICBnb3RvIG92ZXJmbG93OworICAgIHJldHVybiAxOworCitvdmVyZmxvdzoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImJ5dGUgZG9lc24ndCBmaXQgaW4gY2h0eXBlIik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgYnl0ZSAoY2h0eXBlKSBvciBhIGNoYXJhY3RlciAoY2NoYXJfdCk6CisKKyAgICAtIGludAorICAgIC0gYnl0ZXMgb2YgbGVuZ3RoIDEKKyAgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm46CisKKyAgICAtIDIgaWYgb2JqIGlzIGEgY2hhcmFjdGVyICh3cml0dGVuIGludG8gKndjaCkKKyAgICAtIDEgaWYgb2JqIGlzIGEgYnl0ZSAod3JpdHRlbiBpbnRvICpjaCkKKyAgICAtIDAgb24gZXJyb3I6IHJhaXNlIGFuIGV4Y2VwdGlvbiAqLworc3RhdGljIGludAorUHlDdXJzZXNfQ29udmVydFRvQ2NoYXJfdChQeUN1cnNlc1dpbmRvd09iamVjdCAqd2luLCBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjaHR5cGUgKmNoCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgICAgICAgICAgICAgICAgICAgICAgICAsIGNjaGFyX3QgKndjaAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICkKK3sKKyAgICBsb25nIHZhbHVlOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90IGJ1ZmZlclsyXTsKKyNlbmRpZgorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgICAgICBpZiAoUHlVbmljb2RlX0FzV2lkZUNoYXIob2JqLCBidWZmZXIsIDIpICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYSBzdHIgb2YgbGVuZ3RoICV6aSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBtZW1zZXQod2NoLT5jaGFycywgMCwgc2l6ZW9mKHdjaC0+Y2hhcnMpKTsKKyAgICAgICAgd2NoLT5jaGFyc1swXSA9IGJ1ZmZlclswXTsKKyAgICAgICAgcmV0dXJuIDI7CisjZWxzZQorICAgICAgICByZXR1cm4gUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHdpbiwgb2JqLCBjaCk7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZihQeUJ5dGVzX0NoZWNrKG9iaikgJiYgUHlCeXRlc19TaXplKG9iaikgPT0gMSkgeworICAgICAgICB2YWx1ZSA9ICh1bnNpZ25lZCBjaGFyKVB5Qnl0ZXNfQXNTdHJpbmcob2JqKVswXTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBpbnQgb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJm92ZXJmbG93KTsKKyAgICAgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGRvZXNuJ3QgZml0IGluIGxvbmciKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpjaCA9IChjaHR5cGUpdmFsdWU7CisgICAgaWYgKChsb25nKSpjaCAhPSB2YWx1ZSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJieXRlIGRvZXNuJ3QgZml0IGluIGNodHlwZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CiAKKy8qIENvbnZlcnQgYW4gb2JqZWN0IHRvIGEgYnl0ZSBzdHJpbmcgKGNoYXIqKSBvciBhIHdpZGUgY2hhcmFjdGVyIHN0cmluZworICAgKHdjaGFyX3QqKS4gUmV0dXJuOgorCisgICAgLSAyIGlmIG9iaiBpcyBhIGNoYXJhY3RlciBzdHJpbmcgKHdyaXR0ZW4gaW50byAqd2NoKQorICAgIC0gMSBpZiBvYmogaXMgYSBieXRlIHN0cmluZyAod3JpdHRlbiBpbnRvICpieXRlcykKKyAgICAtIDAgb24gZXJyb3I6IHJhaXNlIGFuIGV4Y2VwdGlvbiAqLworc3RhdGljIGludAorUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICp3aW4sIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipieXRlcywgd2NoYXJfdCAqKndzdHIpCit7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgICAgICBhc3NlcnQgKHdzdHIgIT0gTlVMTCk7CisgICAgICAgICp3c3RyID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcob2JqLCBOVUxMKTsKKyAgICAgICAgaWYgKCp3c3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDI7CisjZWxzZQorICAgICAgICBhc3NlcnQgKHdzdHIgPT0gTlVMTCk7CisgICAgICAgICpieXRlcyA9IFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Qob2JqLCB3aW4tPmVuY29kaW5nLCBOVUxMKTsKKyAgICAgICAgaWYgKCpieXRlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAxOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sob2JqKSkgeworICAgICAgICBQeV9JTkNSRUYob2JqKTsKKyAgICAgICAgKmJ5dGVzID0gb2JqOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICByZXR1cm4gMDsKK30KKwogLyogRnVuY3Rpb24gdmVyc2lvbnMgb2YgdGhlIDMgZnVuY3Rpb25zIGZvciB0ZXN0aW5nIHdoZXRoZXIgY3Vyc2VzIGhhcyBiZWVuCiAgICBpbml0aWFsaXNlZCBvciBub3QuICovCiAKQEAgLTM1OCwxMyArNTA4LDM3IEBACiAvKiBBbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gb2YgV2luZG93IE9iamVjdHMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLVB5Q3Vyc2VzV2luZG93X05ldyhXSU5ET1cgKndpbikKK1B5Q3Vyc2VzV2luZG93X05ldyhXSU5ET1cgKndpbiwgY29uc3QgY2hhciAqZW5jb2RpbmcpCiB7CiAgICAgUHlDdXJzZXNXaW5kb3dPYmplY3QgKndvOwogCisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgICAgIGNoYXIgKmJ1ZmZlclsxMDBdOworICAgICAgICBVSU5UIGNwOworICAgICAgICBjcCA9IEdldENvbnNvbGVPdXRwdXRDUCgpOworICAgICAgICBpZiAoY3AgIT0gMCkgeworICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiY3AldSIsIGNwKTsKKyAgICAgICAgICAgIGVuY29kaW5nID0gYnVmZmVyOworICAgICAgICB9CisjZWxpZiBkZWZpbmVkKENPREVTRVQpCisgICAgICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKKyAgICAgICAgaWYgKGNvZGVzZXQgIT0gTlVMTCAmJiBjb2Rlc2V0WzBdICE9IDApCisgICAgICAgICAgICBlbmNvZGluZyA9IGNvZGVzZXQ7CisjZW5kaWYKKyAgICAgICAgaWYgKGVuY29kaW5nID09IE5VTEwpCisgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisgICAgfQorCiAgICAgd28gPSBQeU9iamVjdF9ORVcoUHlDdXJzZXNXaW5kb3dPYmplY3QsICZQeUN1cnNlc1dpbmRvd19UeXBlKTsKICAgICBpZiAod28gPT0gTlVMTCkgcmV0dXJuIE5VTEw7CiAgICAgd28tPndpbiA9IHdpbjsKKyAgICB3by0+ZW5jb2RpbmcgPSBzdHJkdXAoZW5jb2RpbmcpOworICAgIGlmICh3by0+ZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYod28pOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXdvOwogfQogCkBAIC0zNzIsNiArNTQ2LDggQEAKIFB5Q3Vyc2VzV2luZG93X0RlYWxsb2MoUHlDdXJzZXNXaW5kb3dPYmplY3QgKndvKQogewogICAgIGlmICh3by0+d2luICE9IHN0ZHNjcikgZGVsd2luKHdvLT53aW4pOworICAgIGlmICh3by0+ZW5jb2RpbmcgIT0gTlVMTCkKKyAgICAgICAgZnJlZSh3by0+ZW5jb2RpbmcpOwogICAgIFB5T2JqZWN0X0RFTCh3byk7CiB9CiAKQEAgLTM4MSwyOSArNTU3LDM0IEBACiBQeUN1cnNlc1dpbmRvd19BZGRDaChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJ0biwgeCwgeSwgdXNlX3h5ID0gRkFMU0U7Ci0gICAgUHlPYmplY3QgKnRlbXA7Ci0gICAgY2h0eXBlIGNoID0gMDsKKyAgICBQeU9iamVjdCAqY2hvYmo7CisgICAgaW50IHR5cGU7CisgICAgY2h0eXBlIGNoOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBjY2hhcl90IHdjaDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAxOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk87Y2ggb3IgaW50IiwgJnRlbXApKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk87Y2ggb3IgaW50IiwgJmNob2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT2w7Y2ggb3IgaW50LGF0dHIiLCAmdGVtcCwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbDtjaCBvciBpbnQsYXR0ciIsICZjaG9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTzt5LHgsY2ggb3IgaW50IiwgJnksICZ4LCAmdGVtcCkpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU87eSx4LGNoIG9yIGludCIsICZ5LCAmeCwgJmNob2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6CiAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9sO3kseCxjaCBvciBpbnQsIGF0dHIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnksICZ4LCAmdGVtcCwgJmxhdHRyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ5LCAmeCwgJmNob2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKQEAgLTQxMywxNyArNTk0LDMzIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9DY2hhcl90KHNlbGYsIGNob2JqLCAmY2gsICZ3Y2gpOworICAgIGlmICh0eXBlID09IDIpIHsKKyAgICAgICAgZnVuY25hbWUgPSAiYWRkX3djaCI7CisgICAgICAgIHdjaC5hdHRyID0gYXR0cjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3YWRkX3djaChzZWxmLT53aW4seSx4LCAmd2NoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBydG4gPSB3YWRkX3djaChzZWxmLT53aW4sICZ3Y2gpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyNlbHNlCisgICAgdHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb0NjaGFyX3Qoc2VsZiwgY2hvYmosICZjaCk7CisjZW5kaWYKKyAgICBpZiAodHlwZSA9PSAxKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZGNoIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3YWRkY2goc2VsZi0+d2luLHkseCwgY2ggfCBhdHRyKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBydG4gPSB3YWRkY2goc2VsZi0+d2luLCBjaCB8IGF0dHIpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBpZiAodXNlX3h5ID09IFRSVUUpCi0gICAgICAgIHJ0biA9IG12d2FkZGNoKHNlbGYtPndpbix5LHgsIGNoIHwgYXR0cik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHJ0biA9IHdhZGRjaChzZWxmLT53aW4sIGNoIHwgYXR0cik7Ci0gICAgfQotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImFkZGNoIik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCBmdW5jbmFtZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MzEsMjkgKzYyOCwzNCBAQAogewogICAgIGludCBydG47CiAgICAgaW50IHgsIHk7Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInM7c3RyIiwgJnN0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO3N0ciIsICZzdHJvYmopKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNsO3N0cixhdHRyIiwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9sO3N0cixhdHRyIiwgJnN0cm9iaiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzO2ludCxpbnQsc3RyIiwgJnksICZ4LCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTztpbnQsaW50LHN0ciIsICZ5LCAmeCwgJnN0cm9iaikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzbDtpbnQsaW50LHN0cixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPbDtpbnQsaW50LHN0cixhdHRyIiwgJnksICZ4LCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtNDYyLDQ3ICs2NjQsNzQgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFkZHN0ciByZXF1aXJlcyAxIHRvIDQgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpIHsKICAgICAgICAgYXR0cl9vbGQgPSBnZXRhdHRycyhzZWxmLT53aW4pOwogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cik7CiAgICAgfQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3YWRkc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgaWYgKHN0cnR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJhZGR3c3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3YWRkd3N0cihzZWxmLT53aW4seSx4LHdzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkd3N0cihzZWxmLT53aW4sd3N0cik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2FkZHN0cihzZWxmLT53aW4sc3RyKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJhZGRzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndhZGRzdHIoc2VsZi0+d2luLHkseCxzdHIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkc3RyKHNlbGYtPndpbixzdHIpOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXNvYmopOworICAgIH0KICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkKICAgICAgICAgKHZvaWQpd2F0dHJzZXQoc2VsZi0+d2luLGF0dHJfb2xkKTsKLSAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJhZGRzdHIiKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzV2luZG93X0FkZE5TdHIoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBydG4sIHgsIHksIG47Ci0gICAgY2hhciAqc3RyOworICAgIGludCBzdHJ0eXBlOworICAgIFB5T2JqZWN0ICpzdHJvYmosICpieXRlc29iaiA9IE5VTEw7CisjaWZkZWYgSEFWRV9OQ1VSU0VTVworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworI2VuZGlmCiAgICAgYXR0cl90IGF0dHIgPSBBX05PUk1BTCAsIGF0dHJfb2xkID0gQV9OT1JNQUw7CiAgICAgbG9uZyBsYXR0cjsKICAgICBpbnQgdXNlX3h5ID0gRkFMU0UsIHVzZV9hdHRyID0gRkFMU0U7CisgICAgY29uc3QgY2hhciAqZnVuY25hbWU7CiAKICAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgewogICAgIGNhc2UgMjoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsInNpO3N0cixuIiwgJnN0ciwgJm4pKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2k7c3RyLG4iLCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAzOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2lsO3N0cixuLGF0dHIiLCAmc3RyLCAmbiwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9pbDtzdHIsbixhdHRyIiwgJnN0cm9iaiwgJm4sICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfYXR0ciA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNDoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaU9pO3kseCxzdHIsbiIsICZ5LCAmeCwgJnN0cm9iaiwgJm4pKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHVzZV94eSA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgNToKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpc2lsO3kseCxzdHIsbixhdHRyIiwgJnksICZ4LCAmc3RyLCAmbiwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2lsO3kseCxzdHIsbixhdHRyIiwgJnksICZ4LCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV94eSA9IHVzZV9hdHRyID0gVFJVRTsKQEAgLTUxMSwxOCArNzQwLDQxIEBACiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhZGRuc3RyIHJlcXVpcmVzIDIgdG8gNSBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCAmd3N0cik7CisjZWxzZQorICAgIHN0cnR5cGUgPSBQeUN1cnNlc19Db252ZXJ0VG9TdHJpbmcoc2VsZiwgc3Ryb2JqLCAmYnl0ZXNvYmosIE5VTEwpOworI2VuZGlmCisgICAgaWYgKHN0cnR5cGUgPT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAodXNlX2F0dHIgPT0gVFJVRSkgewogICAgICAgICBhdHRyX29sZCA9IGdldGF0dHJzKHNlbGYtPndpbik7CiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyKTsKICAgICB9Ci0gICAgaWYgKHVzZV94eSA9PSBUUlVFKQotICAgICAgICBydG4gPSBtdndhZGRuc3RyKHNlbGYtPndpbix5LHgsc3RyLG4pOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICBpZiAoc3RydHlwZSA9PSAyKSB7CisgICAgICAgIGZ1bmNuYW1lID0gImFkZG53c3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3YWRkbndzdHIoc2VsZi0+d2luLHkseCx3c3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3YWRkbndzdHIoc2VsZi0+d2luLHdzdHIsbik7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgfQogICAgIGVsc2UKLSAgICAgICAgcnRuID0gd2FkZG5zdHIoc2VsZi0+d2luLHN0cixuKTsKKyNlbmRpZgorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXNvYmopOworICAgICAgICBmdW5jbmFtZSA9ICJhZGRuc3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3YWRkbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2FkZG5zdHIoc2VsZi0+d2luLHN0cixuKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzb2JqKTsKKyAgICB9CiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpCiAgICAgICAgICh2b2lkKXdhdHRyc2V0KHNlbGYtPndpbixhdHRyX29sZCk7Ci0gICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIocnRuLCAiYWRkbnN0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNTQ4LDEwICs4MDAsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmYmtnZCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcCwgJmJrZ2QpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih3YmtnZChzZWxmLT53aW4sIGJrZ2QgfCBhdHRyKSwgImJrZ2QiKTsKIH0KQEAgLTYwNiwxMCArODU2LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmJrZ2QpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCAxIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmYmtnZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHdia2dkc2V0KHNlbGYtPndpbiwgYmtnZCB8IGF0dHIpOwogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKDAsICJia2dkc2V0Iik7CkBAIC02MzQsMTEgKzg4Miw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yKGk9MDsgaTw4OyBpKyspIHsKLSAgICAgICAgaWYgKHRlbXBbaV0gIT0gTlVMTCAmJiAhUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXBbaV0sICZjaFtpXSkpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50ICVpIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiLCBpKzEpOworICAgICAgICBpZiAodGVtcFtpXSAhPSBOVUxMICYmICFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUoc2VsZiwgdGVtcFtpXSwgJmNoW2ldKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgfQogCiAgICAgd2JvcmRlcihzZWxmLT53aW4sCkBAIC03ODMsNyArMTAyOCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04MTEsMTAgKzEwNTYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhcmd1bWVudCAxIG11c3QgYmUgYSBjaCBvciBhbiBpbnQiKTsKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmY2gpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICNpZmRlZiBXSU5ET1dfSEFTX0ZMQUdTCiAgICAgaWYgKHNlbGYtPndpbi0+X2ZsYWdzICYgX0lTUEFEKQpAQCAtOTEwLDYgKzExNTMsNDMgQEAKICAgICB9CiB9CiAKKyNpZmRlZiBIQVZFX05DVVJTRVNXCitzdGF0aWMgUHlPYmplY3QgKgorUHlDdXJzZXNXaW5kb3dfR2V0X1dDaChQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHgsIHk7CisgICAgaW50IGN0OworICAgIHdpbnRfdCBydG47CisKKyAgICBzd2l0Y2ggKFB5VHVwbGVfU2l6ZShhcmdzKSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBjdCA9IHdnZXRfd2NoKHNlbGYtPndpbiwmcnRuKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWk7eSx4IiwmeSwmeCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBjdCA9IG12d2dldF93Y2goc2VsZi0+d2luLHkseCwmcnRuKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdldF93Y2ggcmVxdWlyZXMgMCBvciAyIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGN0ID09IEVSUikgeworICAgICAgICAvKiBnZXRfd2NoKCkgcmV0dXJucyBFUlIgaW4gbm9kZWxheSBtb2RlICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUN1cnNlc0Vycm9yLCAibm8gaW5wdXQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChjdCA9PSBLRVlfQ09ERV9ZRVMpCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocnRuKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwocnRuKTsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfR2V0U3RyKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTEwMDEsMTEgKzEyODEsOCBAQAogICAgIH0KIAogICAgIGlmIChjb2RlICE9IEVSUikgewotICAgICAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZSh0ZW1wLCAmY2gpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAxIG9yIDMgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgICAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShzZWxmLCB0ZW1wLCAmY2gpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIod2hsaW5lKHNlbGYtPndpbiwgY2ggfCBhdHRyLCBuKSwgImhsaW5lIik7CiAgICAgfSBlbHNlCiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKGNvZGUsICJ3bW92ZSIpOwpAQCAtMTA0NiwxMSArMTMyMyw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAxIG9yIDMgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKICAgICAgICAgcnRuID0gbXZ3aW5zY2goc2VsZi0+d2luLHkseCwgY2ggfCBhdHRyKTsKQEAgLTExMjEsMjkgKzEzOTUsMzQgQEAKIHsKICAgICBpbnQgcnRuOwogICAgIGludCB4LCB5OwotICAgIGNoYXIgKnN0cjsKKyAgICBpbnQgc3RydHlwZTsKKyAgICBQeU9iamVjdCAqc3Ryb2JqLCAqYnl0ZXNvYmogPSBOVUxMOworI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB3Y2hhcl90ICp3c3RyID0gTlVMTDsKKyNlbmRpZgogICAgIGF0dHJfdCBhdHRyID0gQV9OT1JNQUwgLCBhdHRyX29sZCA9IEFfTk9STUFMOwogICAgIGxvbmcgbGF0dHI7CiAgICAgaW50IHVzZV94eSA9IEZBTFNFLCB1c2VfYXR0ciA9IEZBTFNFOworICAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lOwogCiAgICAgc3dpdGNoIChQeVR1cGxlX1NpemUoYXJncykpIHsKICAgICBjYXNlIDE6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzO3N0ciIsICZzdHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztzdHIiLCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDI6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzbDtzdHIsYXR0ciIsICZzdHIsICZsYXR0cikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPbDtzdHIsYXR0ciIsICZzdHJvYmosICZsYXR0cikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgYXR0ciA9IGxhdHRyOwogICAgICAgICB1c2VfYXR0ciA9IFRSVUU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpczt5LHgsc3RyIiwgJnksICZ4LCAmc3RyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpTzt5LHgsc3RyIiwgJnksICZ4LCAmc3Ryb2JqKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB1c2VfeHkgPSBUUlVFOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDQ6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpaXNsO3kseCxzdHIsYXR0ciIsICZ5LCAmeCwgJnN0ciwgJmxhdHRyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2w7eSx4LHN0cixhdHRyIiwgJnksICZ4LCAmc3Ryb2JqLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtMTE1Myw0NiArMTQzMiw3NSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgJndzdHIpOworI2Vsc2UKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCBOVUxMKTsKKyNlbmRpZgorICAgIGlmIChzdHJ0eXBlID09IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpIHsKICAgICAgICAgYXR0cl9vbGQgPSBnZXRhdHRycyhzZWxmLT53aW4pOwogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cik7CiAgICAgfQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3aW5zc3RyKHNlbGYtPndpbix5LHgsc3RyKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgaWYgKHN0cnR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJpbnN3c3RyIjsKKyAgICAgICAgaWYgKHVzZV94eSA9PSBUUlVFKQorICAgICAgICAgICAgcnRuID0gbXZ3aW5zX3dzdHIoc2VsZi0+d2luLHkseCx3c3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnRuID0gd2luc193c3RyKHNlbGYtPndpbix3c3RyKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICBydG4gPSB3aW5zc3RyKHNlbGYtPndpbixzdHIpOworI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhieXRlc29iaik7CisgICAgICAgIGZ1bmNuYW1lID0gImluc3N0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc3N0cihzZWxmLT53aW4seSx4LHN0cik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNzdHIoc2VsZi0+d2luLHN0cik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImluc3N0ciIpOworICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgZnVuY25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfSW5zTlN0cihQeUN1cnNlc1dpbmRvd09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgaW50IHJ0biwgeCwgeSwgbjsKLSAgICBjaGFyICpzdHI7CisgICAgaW50IHN0cnR5cGU7CisgICAgUHlPYmplY3QgKnN0cm9iaiwgKmJ5dGVzb2JqID0gTlVMTDsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CisjZW5kaWYKICAgICBhdHRyX3QgYXR0ciA9IEFfTk9STUFMICwgYXR0cl9vbGQgPSBBX05PUk1BTDsKICAgICBsb25nIGxhdHRyOwogICAgIGludCB1c2VfeHkgPSBGQUxTRSwgdXNlX2F0dHIgPSBGQUxTRTsKKyAgICBjb25zdCBjaGFyICpmdW5jbmFtZTsKIAogICAgIHN3aXRjaCAoUHlUdXBsZV9TaXplKGFyZ3MpKSB7CiAgICAgY2FzZSAyOgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywic2k7c3RyLG4iLCAmc3RyLCAmbikpCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPaTtzdHIsbiIsICZzdHJvYmosICZuKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBicmVhazsKICAgICBjYXNlIDM6Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJzaWw7c3RyLG4sYXR0ciIsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiT2lsO3N0cixuLGF0dHIiLCAmc3Ryb2JqLCAmbiwgJmxhdHRyKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBhdHRyID0gbGF0dHI7CiAgICAgICAgIHVzZV9hdHRyID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaTt5LHgsc3RyLG4iLCAmeSwgJngsICZzdHIsICZuKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsImlpT2k7eSx4LHN0cixuIiwgJnksICZ4LCAmc3Ryb2JqLCAmbikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSA1OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlzaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHIsICZuLCAmbGF0dHIpKQorICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiaWlPaWw7eSx4LHN0cixuLGF0dHIiLCAmeSwgJngsICZzdHJvYmosICZuLCAmbGF0dHIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGF0dHIgPSBsYXR0cjsKICAgICAgICAgdXNlX3h5ID0gdXNlX2F0dHIgPSBUUlVFOwpAQCAtMTIwMiwxNyArMTUxMCw0MSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgc3RydHlwZSA9IFB5Q3Vyc2VzX0NvbnZlcnRUb1N0cmluZyhzZWxmLCBzdHJvYmosICZieXRlc29iaiwgJndzdHIpOworI2Vsc2UKKyAgICBzdHJ0eXBlID0gUHlDdXJzZXNfQ29udmVydFRvU3RyaW5nKHNlbGYsIHN0cm9iaiwgJmJ5dGVzb2JqLCBOVUxMKTsKKyNlbmRpZgorICAgIGlmIChzdHJ0eXBlID09IDApCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKHVzZV9hdHRyID09IFRSVUUpIHsKICAgICAgICAgYXR0cl9vbGQgPSBnZXRhdHRycyhzZWxmLT53aW4pOwogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cik7CiAgICAgfQotICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKLSAgICAgICAgcnRuID0gbXZ3aW5zbnN0cihzZWxmLT53aW4seSx4LHN0cixuKTsKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgaWYgKHN0cnR5cGUgPT0gMikgeworICAgICAgICBmdW5jbmFtZSA9ICJpbnNuX3dzdHIiOworICAgICAgICBpZiAodXNlX3h5ID09IFRSVUUpCisgICAgICAgICAgICBydG4gPSBtdndpbnNfbndzdHIoc2VsZi0+d2luLHkseCx3c3RyLG4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydG4gPSB3aW5zX253c3RyKHNlbGYtPndpbix3c3RyLG4pOworICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJ0biA9IHdpbnNuc3RyKHNlbGYtPndpbixzdHIsbik7CisjZW5kaWYKKyAgICB7CisgICAgICAgIGNoYXIgKnN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzb2JqKTsKKyAgICAgICAgZnVuY25hbWUgPSAiaW5zbnN0ciI7CisgICAgICAgIGlmICh1c2VfeHkgPT0gVFJVRSkKKyAgICAgICAgICAgIHJ0biA9IG12d2luc25zdHIoc2VsZi0+d2luLHkseCxzdHIsbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ0biA9IHdpbnNuc3RyKHNlbGYtPndpbixzdHIsbik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlc29iaik7CisgICAgfQogICAgIGlmICh1c2VfYXR0ciA9PSBUUlVFKQogICAgICAgICAodm9pZCl3YXR0cnNldChzZWxmLT53aW4sYXR0cl9vbGQpOwotICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHJ0biwgImluc25zdHIiKTsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sIGZ1bmNuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEzODUsMTAgKzE3MTcsMTIgQEAKICAgICB3aGlsZSAoMSkgewogICAgICAgICBjaGFyIGJ1ZltCVUZTSVpdOwogICAgICAgICBQeV9zc2l6ZV90IG4gPSBmcmVhZChidWYsIDEsIEJVRlNJWiwgZnApOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKICAgICAgICAgaWYgKG4gPD0gMCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzdHJlYW0sICJ3cml0ZSIsICJ5IyIsIGJ1Ziwgbik7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc3RyZWFtLCAmUHlJZF93cml0ZSwgInkjIiwgYnVmLCBuKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTQ5Myw3ICsxODI3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBzZWxmLT5lbmNvZGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTY5LDE2ICsxOTAzLDUyIEBACiAgICAgfQogCiAgICAgaWYgKGNvZGUgIT0gRVJSKSB7Ci0gICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAsICZjaCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IDEgb3IgMyBtdXN0IGJlIGEgY2ggb3IgYW4gaW50Iik7CisgICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHNlbGYsIHRlbXAsICZjaCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih3dmxpbmUoc2VsZi0+d2luLCBjaCB8IGF0dHIsIG4pLCAidmxpbmUiKTsKICAgICB9IGVsc2UKICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIoY29kZSwgIndtb3ZlIik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc1dpbmRvd19nZXRfZW5jb2RpbmcoUHlDdXJzZXNXaW5kb3dPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNlbGYtPmVuY29kaW5nKTsKK30KKworc3RhdGljIGludAorUHlDdXJzZXNXaW5kb3dfc2V0X2VuY29kaW5nKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgUHlPYmplY3QgKmFzY2lpOworICAgIGNoYXIgKmVuY29kaW5nOworCisgICAgLyogSXQgaXMgaWxsZWdhbCB0byBkZWwgd2luLmVuY29kaW5nICovCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBtYXkgbm90IGJlIGRlbGV0ZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNldHRpbmcgZW5jb2RpbmcgdG8gYSBub24tc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYXNjaWkgPSBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh2YWx1ZSk7CisgICAgaWYgKGFzY2lpID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbmNvZGluZyA9IHN0cmR1cChQeUJ5dGVzX0FTX1NUUklORyhhc2NpaSkpOworICAgIFB5X0RFQ1JFRihhc2NpaSk7CisgICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmcmVlKHNlbGYtPmVuY29kaW5nKTsKKyAgICBzZWxmLT5lbmNvZGluZyA9IGVuY29kaW5nOworICAgIHJldHVybiAwOworfQorCisKIHN0YXRpYyBQeU1ldGhvZERlZiBQeUN1cnNlc1dpbmRvd19NZXRob2RzW10gPSB7CiAgICAgeyJhZGRjaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfQWRkQ2gsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJhZGRuc3RyIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfQWRkTlN0ciwgTUVUSF9WQVJBUkdTfSwKQEAgLTE2MDgsNiArMTk3OCw5IEBACiAgICAgeyJnZXRia2dkIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0QmtnZCwgTUVUSF9OT0FSR1N9LAogICAgIHsiZ2V0Y2giLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldENoLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZ2V0a2V5IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0dldEtleSwgTUVUSF9WQVJBUkdTfSwKKyNpZmRlZiBIQVZFX05DVVJTRVNXCisgICAgeyJnZXRfd2NoIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfR2V0X1dDaCwgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgogICAgIHsiZ2V0bWF4eXgiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X2dldG1heHl4LCBNRVRIX05PQVJHU30sCiAgICAgeyJnZXRwYXJ5eCIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfZ2V0cGFyeXgsIE1FVEhfTk9BUkdTfSwKICAgICB7ImdldHN0ciIsICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19HZXRTdHIsIE1FVEhfVkFSQVJHU30sCkBAIC0xNjYzLDYgKzIwMzYsMTQgQEAKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgUHlDdXJzZXNXaW5kb3dfZ2V0c2V0c1tdID0geworICAgIHsiZW5jb2RpbmciLAorICAgICAoZ2V0dGVyKVB5Q3Vyc2VzV2luZG93X2dldF9lbmNvZGluZywKKyAgICAgKHNldHRlcilQeUN1cnNlc1dpbmRvd19zZXRfZW5jb2RpbmcsCisgICAgICJ0aGUgdHlwZWNvZGUgY2hhcmFjdGVyIHVzZWQgdG8gY3JlYXRlIHRoZSBhcnJheSJ9LAorICAgIHtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMIH0gIC8qIHNlbnRpbmVsICovCit9OworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogUHlUeXBlT2JqZWN0IFB5Q3Vyc2VzV2luZG93X1R5cGUgPSB7CkBAIC0xNjk1LDYgKzIwNzYsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KICAgICBQeUN1cnNlc1dpbmRvd19NZXRob2RzLCAgICAgLyp0cF9tZXRob2RzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIFB5Q3Vyc2VzV2luZG93X2dldHNldHMsICAgICAvKiB0cF9nZXRzZXQgKi8KIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTE4NzUsNiArMjI1OCw3IEBACiAgICAgV0lORE9XICp3aW47CiAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogCiAgICAgc3RyY3B5KGZuLCAiL3RtcC9weS5jdXJzZXMuZ2V0d2luLlhYWFhYWCIpOwogICAgIGZkID0gbWtzdGVtcChmbik7CkBAIC0xODg2LDcgKzIyNzAsNyBAQAogICAgICAgICByZW1vdmUoZm4pOwogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIGZuKTsKICAgICB9Ci0gICAgZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc3RyZWFtLCAicmVhZCIsICIiKTsKKyAgICBkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJlYW0sICZQeUlkX3JlYWQsICIiKTsKICAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgIGZjbG9zZShmcCk7CiAgICAgICAgIHJlbW92ZShmbik7CkBAIC0xOTE3LDcgKzIzMDEsNyBAQAogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlDdXJzZXNFcnJvciwgY2F0Y2hhbGxfTlVMTCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgcmV0dXJuIFB5Q3Vyc2VzV2luZG93X05ldyh3aW4sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTk5NSwxMCArMjM3OSwxMSBAQAogUHlDdXJzZXNfSW5pdFNjcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBXSU5ET1cgKndpbjsKKyAgICBQeUN1cnNlc1dpbmRvd09iamVjdCAqd2lub2JqOwogCiAgICAgaWYgKGluaXRpYWxpc2VkID09IFRSVUUpIHsKICAgICAgICAgd3JlZnJlc2goc3Rkc2NyKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyhzdGRzY3IpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHN0ZHNjciwgTlVMTCk7CiAgICAgfQogCiAgICAgd2luID0gaW5pdHNjcigpOwpAQCAtMjA5MCw3ICsyNDc1LDkgQEAKICAgICBTZXREaWN0SW50KCJMSU5FUyIsIExJTkVTKTsKICAgICBTZXREaWN0SW50KCJDT0xTIiwgQ09MUyk7CiAKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbik7CisgICAgd2lub2JqID0gKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CisgICAgc2NyZWVuX2VuY29kaW5nID0gd2lub2JqLT5lbmNvZGluZzsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopd2lub2JqOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjI5Miw3ICsyNjc5LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKVB5Q3Vyc2VzV2luZG93X05ldyh3aW4pOworICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzMjQsNyArMjcxMSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKilQeUN1cnNlc1dpbmRvd19OZXcod2luKTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopUHlDdXJzZXNXaW5kb3dfTmV3KHdpbiwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDE2LDYgKzI4MDMsOCBAQAogewogICAgIFB5T2JqZWN0ICpvOwogICAgIFB5T2JqZWN0ICptID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiY3Vyc2VzIik7CisgICAgX1B5X0lERU5USUZJRVIoTElORVMpOworICAgIF9QeV9JREVOVElGSUVSKENPTFMpOwogCiAgICAgaWYgKCFtKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI0MjUsMTIgKzI4MTQsMTMgQEAKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobSwgIkxJTkVTIiwgbykpIHsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChtLCAmUHlJZF9MSU5FUywgbykpIHsKICAgICAgICAgUHlfREVDUkVGKG0pOwogICAgICAgICBQeV9ERUNSRUYobyk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoTW9kRGljdCwgIkxJTkVTIiwgbykpIHsKKyAgICAvKiBQeUlkX0xJTkVTLm9iamVjdCB3aWxsIGJlIGluaXRpYWxpemVkIGhlcmUuICovCisgICAgaWYgKFB5RGljdF9TZXRJdGVtKE1vZERpY3QsIFB5SWRfTElORVMub2JqZWN0LCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNDQxLDEyICsyODMxLDEyIEBACiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKG0sICJDT0xTIiwgbykpIHsKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChtLCAmUHlJZF9DT0xTLCBvKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhNb2REaWN0LCAiQ09MUyIsIG8pKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKE1vZERpY3QsIFB5SWRfQ09MUy5vYmplY3QsIG8pKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKICAgICAgICAgUHlfREVDUkVGKG8pOwogICAgICAgICByZXR1cm4gMDsKQEAgLTI2MzgsMTAgKzMwMjgsOCBAQAogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpIHJldHVybiBOVUxMOwogCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKE5VTEwsIHRlbXAsICZjaCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcodW5jdHJsKGNoKSk7CiB9CkBAIC0yNjU0LDE2ICszMDQyLDgwIEBACiAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk87Y2ggb3IgaW50IiwmdGVtcCkpIHJldHVybiBOVUxMOwotCi0gICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcCwgJmNoKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnQgbXVzdCBiZSBhIGNoIG9yIGFuIGludCIpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJPO2NoIG9yIGludCIsJnRlbXApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKKyAgICBpZiAoIVB5Q3Vyc2VzX0NvbnZlcnRUb0NodHlwZShOVUxMLCB0ZW1wLCAmY2gpKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHVuZ2V0Y2goY2gpLCAidW5nZXRjaCIpOwogfQogCisjaWZkZWYgSEFWRV9OQ1VSU0VTVworLyogQ29udmVydCBhbiBvYmplY3QgdG8gYSBjaGFyYWN0ZXIgKHdjaGFyX3QpOgorCisgICAgLSBpbnQKKyAgICAtIHN0ciBvZiBsZW5ndGggMQorCisgICBSZXR1cm4gMSBvbiBzdWNjZXNzLCAwIG9uIGVycm9yLiAqLworc3RhdGljIGludAorUHlDdXJzZXNfQ29udmVydFRvV2NoYXJfdChQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3Y2gpCit7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKSB7CisgICAgICAgIHdjaGFyX3QgYnVmZmVyWzJdOworICAgICAgICBpZiAoUHlVbmljb2RlX0FzV2lkZUNoYXIob2JqLCBidWZmZXIsIDIpICE9IDEpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYSBzdHIgb2YgbGVuZ3RoICV6aSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAqd2NoID0gYnVmZmVyWzBdOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBsb25nIHZhbHVlOworICAgICAgICBpbnQgb3ZlcmZsb3c7CisgICAgICAgIHZhbHVlID0gUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KG9iaiwgJm92ZXJmbG93KTsKKyAgICAgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGRvZXNuJ3QgZml0IGluIGxvbmciKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICp3Y2ggPSAod2NoYXJfdCl2YWx1ZTsKKyAgICAgICAgaWYgKChsb25nKSp3Y2ggIT0gdmFsdWUpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgZG9lc24ndCBmaXQgaW4gd2NoYXJfdCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImV4cGVjdCBieXRlcyBvciBzdHIgb2YgbGVuZ3RoIDEsIG9yIGludCwgZ290ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK1B5Q3Vyc2VzX1VuZ2V0X1djaChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB3Y2hhcl90IHdjaDsKKworICAgIFB5Q3Vyc2VzSW5pdGlhbGlzZWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTyIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvV2NoYXJfdChvYmosICZ3Y2gpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih1bmdldF93Y2god2NoKSwgInVuZ2V0X3djaCIpOworfQorI2VuZGlmCisKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc19Vc2VfRW52KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTI3OTEsNiArMzI0Myw5IEBACiAgICAgeyJ0eXBlYWhlYWQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1R5cGVBaGVhZCwgTUVUSF9WQVJBUkdTfSwKICAgICB7InVuY3RybCIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5DdHJsLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidW5nZXRjaCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbmdldENoLCBNRVRIX1ZBUkFSR1N9LAorI2lmZGVmIEhBVkVfTkNVUlNFU1cKKyAgICB7InVuZ2V0X3djaCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRfV2NoLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJ1c2VfZW52IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VzZV9FbnYsIE1FVEhfVkFSQVJHU30sCiAjaWZuZGVmIFNUUklDVF9TWVNWX0NVUlNFUwogICAgIHsidXNlX2RlZmF1bHRfY29sb3JzIiwgIChQeUNGdW5jdGlvbilQeUN1cnNlc19Vc2VfRGVmYXVsdF9Db2xvcnMsIE1FVEhfTk9BUkdTfSwKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMgYi9Nb2R1bGVzL19kYXRldGltZW1vZHVsZS5jCmluZGV4IGVmMmY3YjMuLjg3M2Q0NmYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2RhdGV0aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZGF0ZXRpbWVtb2R1bGUuYwpAQCAtNyw4ICs3LDYgQEAKIAogI2luY2x1ZGUgPHRpbWUuaD4KIAotI2luY2x1ZGUgIl90aW1lLmgiCi0KIC8qIERpZmZlcmVudGlhdGUgYmV0d2VlbiBidWlsZGluZyB0aGUgY29yZSBtb2R1bGUgYW5kIGJ1aWxkaW5nIGV4dGVuc2lvbgogICogbW9kdWxlcy4KICAqLwpAQCAtNzY2LDggKzc2NCwxMCBAQAogICAgIFB5T2JqZWN0ICpuYW1lOwogfSBQeURhdGVUaW1lX1RpbWVab25lOwogCi0vKiBUaGUgaW50ZXJuZWQgVVRDIHRpbWV6b25lIGluc3RhbmNlICovIAorLyogVGhlIGludGVybmVkIFVUQyB0aW1lem9uZSBpbnN0YW5jZSAqLwogc3RhdGljIFB5T2JqZWN0ICpQeURhdGVUaW1lX1RpbWVab25lX1VUQzsKKy8qIFRoZSBpbnRlcm5lZCBFcG9jaCBkYXRldGltZSBpbnN0YW5jZSAqLworc3RhdGljIFB5T2JqZWN0ICpQeURhdGVUaW1lX0Vwb2NoOwogCiAvKiBDcmVhdGUgbmV3IHRpbWV6b25lIGluc3RhbmNlIGNoZWNraW5nIG9mZnNldCByYW5nZS4gIFRoaXMKICAgIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSBuYW1lIGFyZ3VtZW50LiAgQ2FsbGVyIG11c3QgYXNzdXJlCkBAIC04MDksMTQgKzgwOSwxNiBAQAogICAgIH0KICAgICBpZiAoR0VUX1REX01JQ1JPU0VDT05EUyhvZmZzZXQpICE9IDAgfHwgR0VUX1REX1NFQ09ORFMob2Zmc2V0KSAlIDYwICE9IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSIKLSAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICIgcmVwcmVzZW50aW5nIGEgd2hvbGUgbnVtYmVyIG9mIG1pbnV0ZXMsIgorICAgICAgICAgICAgICAgICAgICAgIiBub3QgJVIuIiwgb2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICgoR0VUX1REX0RBWVMob2Zmc2V0KSA9PSAtMSAmJiBHRVRfVERfU0VDT05EUyhvZmZzZXQpID09IDApIHx8CiAgICAgICAgIEdFVF9URF9EQVlTKG9mZnNldCkgPCAtMSB8fCBHRVRfVERfREFZUyhvZmZzZXQpID49IDEpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgbXVzdCBiZSBhIHRpbWVkZWx0YSIKICAgICAgICAgICAgICAgICAgICAgICIgc3RyaWN0bHkgYmV0d2VlbiAtdGltZWRlbHRhKGhvdXJzPTI0KSBhbmQiCi0gICAgICAgICAgICAgICAgICAgICAiIHRpbWVkZWx0YShob3Vycz0yNCkuIik7CisgICAgICAgICAgICAgICAgICAgICAiIHRpbWVkZWx0YShob3Vycz0yNCksIgorICAgICAgICAgICAgICAgICAgICAgIiBub3QgJVIuIiwgb2Zmc2V0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC05NDYsNiArOTQ4LDcgQEAKIGNhbGxfdHpuYW1lKFB5T2JqZWN0ICp0emluZm8sIFB5T2JqZWN0ICp0emluZm9hcmcpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUih0em5hbWUpOwogCiAgICAgYXNzZXJ0KHR6aW5mbyAhPSBOVUxMKTsKICAgICBhc3NlcnQoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPj0gMCk7CkBAIC05NTQsNyArOTU3LDcgQEAKICAgICBpZiAodHppbmZvID09IFB5X05vbmUpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJ0em5hbWUiLCAiTyIsIHR6aW5mb2FyZyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0emluZm8sICZQeUlkX3R6bmFtZSwgIk8iLCB0emluZm9hcmcpOwogCiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMIHx8IHJlc3VsdCA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtOTg1LDkgKzk4OCw4IEBACiAgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gcmVwcjsKICAgICAvKiBHZXQgcmlkIG9mIHRoZSB0cmFpbGluZyAnKScuICovCi0gICAgYXNzZXJ0KFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpW1B5VW5pY29kZV9HRVRfU0laRShyZXByKS0xXSA9PSAnKScpOwotICAgIHRlbXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoUHlVbmljb2RlX0FTX1VOSUNPREUocmVwciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShyZXByKSAtIDEpOworICAgIGFzc2VydChQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHIsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHIpLTEpID09ICcpJyk7CisgICAgdGVtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcocmVwciwgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwcikgLSAxKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgaWYgKHRlbXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDc5LDYgKzEwODEsOCBAQAogICAgIFB5T2JqZWN0ICp0ZW1wOwogICAgIFB5T2JqZWN0ICp0emluZm8gPSBnZXRfdHppbmZvX21lbWJlcihvYmplY3QpOwogICAgIFB5T2JqZWN0ICpacmVwbGFjZW1lbnQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CisKICAgICBpZiAoWnJlcGxhY2VtZW50ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0emluZm8gPT0gUHlfTm9uZSB8fCB0emluZm8gPT0gTlVMTCkKQEAgLTEwOTksNyArMTEwMyw3IEBACiAgICAgICogc3RyZnRpbWUgZG9lc24ndCB0cmVhdCB0aGVtIGFzIGZvcm1hdCBjb2Rlcy4KICAgICAgKi8KICAgICBQeV9ERUNSRUYoWnJlcGxhY2VtZW50KTsKLSAgICBacmVwbGFjZW1lbnQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRlbXAsICJyZXBsYWNlIiwgInNzIiwgIiUiLCAiJSUiKTsKKyAgICBacmVwbGFjZW1lbnQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRlbXAsICZQeUlkX3JlcGxhY2UsICJzcyIsICIlIiwgIiUlIik7CiAgICAgUHlfREVDUkVGKHRlbXApOwogICAgIGlmIChacmVwbGFjZW1lbnQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTY2LDMxICsxMTcwLDYgQEAKICAgICBpZiAoIXBpbikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBHaXZlIHVwIGlmIHRoZSB5ZWFyIGlzIGJlZm9yZSAxMDAwLgotICAgICAqIFB5dGhvbiBzdHJmdGltZSgpIHBsYXlzIGdhbWVzIHdpdGggdGhlIHllYXIsIGFuZCBkaWZmZXJlbnQKLSAgICAgKiBnYW1lcyBkZXBlbmRpbmcgb24gd2hldGhlciBlbnZhciBQWVRIT04ySyBpcyBzZXQuICBUaGlzIG1ha2VzCi0gICAgICogeWVhcnMgYmVmb3JlIDEwMDAgYSBuaWdodG1hcmUsIGV2ZW4gaWYgdGhlIHBsYXRmb3JtIHN0cmZ0aW1lCi0gICAgICogc3VwcG9ydHMgdGhlbSAoYW5kIG5vdCBhbGwgZG8pLgotICAgICAqIFdlIGNvdWxkIGdldCBhIGxvdCBmYXJ0aGVyIGhlcmUgYnkgYXZvaWRpbmcgUHl0aG9uJ3Mgc3RyZnRpbWUKLSAgICAgKiB3cmFwcGVyIGFuZCBjYWxsaW5nIHRoZSBDIHN0cmZ0aW1lKCkgZGlyZWN0bHksIGJ1dCB0aGF0IGlzbid0Ci0gICAgICogYW4gb3B0aW9uIGluIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtb2R1bGUuCi0gICAgICovCi0gICAgewotICAgICAgICBsb25nIHllYXI7Ci0gICAgICAgIFB5T2JqZWN0ICpweXllYXIgPSBQeVNlcXVlbmNlX0dldEl0ZW0odGltZXR1cGxlLCAwKTsKLSAgICAgICAgaWYgKHB5eWVhciA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLSAgICAgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayhweXllYXIpKTsKLSAgICAgICAgeWVhciA9IFB5TG9uZ19Bc0xvbmcocHl5ZWFyKTsKLSAgICAgICAgUHlfREVDUkVGKHB5eWVhcik7Ci0gICAgICAgIGlmICh5ZWFyIDwgMTAwMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJ5ZWFyPSVsZCBpcyBiZWZvcmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICIxMDAwOyB0aGUgZGF0ZXRpbWUgc3RyZnRpbWUoKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm1ldGhvZHMgcmVxdWlyZSB5ZWFyID49IDEwMDAiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHllYXIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICAvKiBTY2FuIHRoZSBpbnB1dCBmb3JtYXQsIGxvb2tpbmcgZm9yICV6LyVaLyVmIGVzY2FwZXMsIGJ1aWxkaW5nCiAgICAgICogYSBuZXcgZm9ybWF0LiAgU2luY2UgY29tcHV0aW5nIHRoZSByZXBsYWNlbWVudHMgZm9yIHRob3NlIGNvZGVzCiAgICAgICogaXMgZXhwZW5zaXZlLCBkb24ndCB1bmxlc3MgdGhleSdyZSBhY3R1YWxseSB1c2VkLgpAQCAtMTI4NiwxNCArMTI2NSwxMyBAQAogICAgICAgICBhc3NlcnQocHRvYXBwZW5kICE9IE5VTEwpOwogICAgICAgICBhc3NlcnQobnRvYXBwZW5kID4gMCk7CiAgICAgICAgIHdoaWxlICh1c2VkbmV3ICsgbnRvYXBwZW5kID4gdG90YWxuZXcpIHsKLSAgICAgICAgICAgIHNpemVfdCBiaWdnZXIgPSB0b3RhbG5ldyA8PCAxOwotICAgICAgICAgICAgaWYgKChiaWdnZXIgPj4gMSkgIT0gdG90YWxuZXcpIHsgLyogb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgIGlmICh0b3RhbG5ldyA+IChQWV9TU0laRV9UX01BWCA+PiAxKSkgeyAvKiBvdmVyZmxvdyAqLwogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgZ290byBEb25lOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3Zm10LCBiaWdnZXIpIDwgMCkKKyAgICAgICAgICAgIHRvdGFsbmV3IDw8PSAxOworICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3Zm10LCB0b3RhbG5ldykgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gRG9uZTsKLSAgICAgICAgICAgIHRvdGFsbmV3ID0gYmlnZ2VyOwogICAgICAgICAgICAgcG5ldyA9IFB5Qnl0ZXNfQXNTdHJpbmcobmV3Zm10KSArIHVzZWRuZXc7CiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KHBuZXcsIHB0b2FwcGVuZCwgbnRvYXBwZW5kKTsKQEAgLTEzMDcsMTIgKzEyODUsMTUgQEAKICAgICB7CiAgICAgICAgIFB5T2JqZWN0ICpmb3JtYXQ7CiAgICAgICAgIFB5T2JqZWN0ICp0aW1lID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOworCiAgICAgICAgIGlmICh0aW1lID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld2ZtdCkpOwogICAgICAgICBpZiAoZm9ybWF0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGltZSwgInN0cmZ0aW1lIiwgIk9PIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCB0aW1ldHVwbGUsIE5VTEwpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3RyZnRpbWUpOworCisgICAgICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRpbWUsICZQeUlkX3N0cmZ0aW1lLCAiT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHRpbWV0dXBsZSwgTlVMTCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZm9ybWF0KTsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodGltZSk7CkBAIC0xMzM4LDcgKzEzMTksOSBAQAogICAgIFB5T2JqZWN0ICp0aW1lID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygidGltZSIpOwogCiAgICAgaWYgKHRpbWUgIT0gTlVMTCkgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRpbWUsICJ0aW1lIiwgIigpIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHRpbWUpOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfdGltZSwgIigpIik7CiAgICAgICAgIFB5X0RFQ1JFRih0aW1lKTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzNTUsMTMgKzEzMzgsMTUgQEAKIAogICAgIHRpbWUgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJ0aW1lIik7CiAgICAgaWYgKHRpbWUgIT0gTlVMTCkgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRpbWUsICJzdHJ1Y3RfdGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigoaWlpaWlpaWlpKSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIG0sIGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGgsIG1tLCBzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5KHksIG0sIGQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc3RydWN0X3RpbWUpOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGltZSwgJlB5SWRfc3RydWN0X3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigoaWlpaWlpaWlpKSkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksIG0sIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGgsIG1tLCBzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5KHksIG0sIGQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheXNfYmVmb3JlX21vbnRoKHksIG0pICsgZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RmbGFnKTsKICAgICAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTQ2MSw3ICsxNDQ2LDcgQEAKICAgICAgICAgZ290byBEb25lOwogICAgIFB5X0RFQ1JFRih4MSk7CiAgICAgUHlfREVDUkVGKHgyKTsKLSAgICB4MSA9IHgyID0gTlVMTDsKKyAgICAvKiB4MSA9ICovIHgyID0gTlVMTDsKIAogICAgIC8qIHgzIGhhcyBkYXlzK3NlY29uZHMgaW4gc2Vjb25kcyAqLwogICAgIHgxID0gUHlOdW1iZXJfTXVsdGlwbHkoeDMsIHVzX3Blcl9zZWNvbmQpOyAgICAgICAgICAvKiB1cyAqLwpAQCAtMTU5NCwxMSArMTU3OSwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpweXVzX2luID0gTlVMTCwgKnRlbXAsICpweXVzX291dDsKICAgICBQeU9iamVjdCAqcmF0aW8gPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKGFzX2ludGVnZXJfcmF0aW8pOwogCiAgICAgcHl1c19pbiA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcyhkZWx0YSk7CiAgICAgaWYgKHB5dXNfaW4gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmF0aW8gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZsb2F0b2JqLCAiYXNfaW50ZWdlcl9yYXRpbyIsIE5VTEwpOworICAgIHJhdGlvID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmbG9hdG9iaiwgJlB5SWRfYXNfaW50ZWdlcl9yYXRpbywgTlVMTCk7CiAgICAgaWYgKHJhdGlvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgdGVtcCA9IFB5TnVtYmVyX011bHRpcGx5KHB5dXNfaW4sIFB5VHVwbGVfR0VUX0lURU0ocmF0aW8sIDApKTsKQEAgLTE2OTIsMTEgKzE2NzgsMTIgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqcHl1c19pbiA9IE5VTEwsICp0ZW1wLCAqcHl1c19vdXQ7CiAgICAgUHlPYmplY3QgKnJhdGlvID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihhc19pbnRlZ2VyX3JhdGlvKTsKIAogICAgIHB5dXNfaW4gPSBkZWx0YV90b19taWNyb3NlY29uZHMoZGVsdGEpOwogICAgIGlmIChweXVzX2luID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJhdGlvID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAiYXNfaW50ZWdlcl9yYXRpbyIsIE5VTEwpOworICAgIHJhdGlvID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9hc19pbnRlZ2VyX3JhdGlvLCBOVUxMKTsKICAgICBpZiAocmF0aW8gPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICB0ZW1wID0gUHlOdW1iZXJfTXVsdGlwbHkocHl1c19pbiwgUHlUdXBsZV9HRVRfSVRFTShyYXRpbywgMSkpOwpAQCAtMTgzNyw4ICsxODI0LDcgQEAKICAgICAgICAgcmV0dXJuIGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiB9CiAKQEAgLTE5MzYsMTAgKzE5MjIsOCBAQAogICAgIFB5T2JqZWN0ICpweXVzX3JlbWFpbmRlcjsKICAgICBQeU9iamVjdCAqcmVtYWluZGVyOwogCi0gICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlEZWx0YV9DaGVjayhsZWZ0KSB8fCAhUHlEZWx0YV9DaGVjayhyaWdodCkpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHB5dXNfbGVmdCA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcygoUHlEYXRlVGltZV9EZWx0YSAqKWxlZnQpOwogICAgIGlmIChweXVzX2xlZnQgPT0gTlVMTCkKQEAgLTE5NzQsMTAgKzE5NTgsOCBAQAogICAgIFB5T2JqZWN0ICpkZWx0YTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeURlbHRhX0NoZWNrKGxlZnQpIHx8ICFQeURlbHRhX0NoZWNrKHJpZ2h0KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlEZWx0YV9DaGVjayhsZWZ0KSB8fCAhUHlEZWx0YV9DaGVjayhyaWdodCkpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHB5dXNfbGVmdCA9IGRlbHRhX3RvX21pY3Jvc2Vjb25kcygoUHlEYXRlVGltZV9EZWx0YSAqKWxlZnQpOwogICAgIGlmIChweXVzX2xlZnQgPT0gTlVMTCkKQEAgLTI0NjAsMjYgKzI0NDIsMjkgQEAKIAogLyogUmV0dXJuIG5ldyBkYXRlIGZyb20gbG9jYWx0aW1lKHQpLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWRhdGVfbG9jYWxfZnJvbV90aW1lX3QoUHlPYmplY3QgKmNscywgZG91YmxlIHRzKQorZGF0ZV9sb2NhbF9mcm9tX29iamVjdChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqb2JqKQogewogICAgIHN0cnVjdCB0bSAqdG07CiAgICAgdGltZV90IHQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICB0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KHRzKTsKLSAgICBpZiAodCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmdCkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgdG0gPSBsb2NhbHRpbWUoJnQpOwotICAgIGlmICh0bSkKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5KTsKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSBsb2NhbHRpbWUoKSBmdW5jdGlvbiIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgaWYgKHRtID09IE5VTEwpIHsKKyAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNscywgImlpaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5KTsKIH0KIAogLyogUmV0dXJuIG5ldyBkYXRlIGZyb20gY3VycmVudCB0aW1lLgpAQCAtMjQ5Miw2ICsyNDc3LDcgQEAKIHsKICAgICBQeU9iamVjdCAqdGltZTsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKGZyb210aW1lc3RhbXApOwogCiAgICAgdGltZSA9IHRpbWVfdGltZSgpOwogICAgIGlmICh0aW1lID09IE5VTEwpCkBAIC0yNTAzLDcgKzI0ODksNyBAQAogICAgICAqIHRpbWUudGltZSgpIGRlbGl2ZXJzOyBpZiBzb21lb25lIHdlcmUgZ29uem8gYWJvdXQgb3B0aW1pemF0aW9uLAogICAgICAqIGRhdGUudG9kYXkoKSBjb3VsZCBnZXQgYXdheSB3aXRoIHBsYWluIEMgdGltZSgpLgogICAgICAqLwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY2xzLCAiZnJvbXRpbWVzdGFtcCIsICJPIiwgdGltZSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjbHMsICZQeUlkX2Zyb210aW1lc3RhbXAsICJPIiwgdGltZSk7CiAgICAgUHlfREVDUkVGKHRpbWUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0yNTEyLDExICsyNDk4LDExIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGF0ZV9mcm9tdGltZXN0YW1wKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJkOmZyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKLSAgICAgICAgcmVzdWx0ID0gZGF0ZV9sb2NhbF9mcm9tX3RpbWVfdChjbHMsIHRpbWVzdGFtcCk7CisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86ZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQorICAgICAgICByZXN1bHQgPSBkYXRlX2xvY2FsX2Zyb21fb2JqZWN0KGNscywgdGltZXN0YW1wKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0yNTcxLDEwICsyNTU3LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX2FkZChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIGlmIChQeURhdGVUaW1lX0NoZWNrKGxlZnQpIHx8IFB5RGF0ZVRpbWVfQ2hlY2socmlnaHQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIGlmIChQeURhdGVfQ2hlY2sobGVmdCkpIHsKICAgICAgICAgLyogZGF0ZSArID8/PyAqLwogICAgICAgICBpZiAoUHlEZWx0YV9DaGVjayhyaWdodCkpCkBAIC0yNTkzLDE3ICsyNTc4LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopIGxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgIH0KLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRlX3N1YnRyYWN0KFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgaWYgKFB5RGF0ZVRpbWVfQ2hlY2sobGVmdCkgfHwgUHlEYXRlVGltZV9DaGVjayhyaWdodCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoUHlEYXRlVGltZV9DaGVjayhsZWZ0KSB8fCBQeURhdGVUaW1lX0NoZWNrKHJpZ2h0KSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworCiAgICAgaWYgKFB5RGF0ZV9DaGVjayhsZWZ0KSkgewogICAgICAgICBpZiAoUHlEYXRlX0NoZWNrKHJpZ2h0KSkgewogICAgICAgICAgICAgLyogZGF0ZSAtIGRhdGUgKi8KQEAgLTI2MjIsOCArMjYwNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogCkBAIC0yNjQ4LDcgKzI2MzAsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGVfc3RyKFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiaXNvZm9ybWF0IiwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoaXNvZm9ybWF0KTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CiB9CiAKIApAQCAtMjY2NywxMyArMjY1MSwxNCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKnR1cGxlOwogICAgIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgX1B5X0lERU5USUZJRVIodGltZXR1cGxlKTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZm9ybWF0IiwgTlVMTH07CiAKICAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJVOnN0cmZ0aW1lIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHR1cGxlID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAidGltZXR1cGxlIiwgIigpIik7CisgICAgdHVwbGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3RpbWV0dXBsZSwgIigpIik7CiAgICAgaWYgKHR1cGxlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJlc3VsdCA9IHdyYXBfc3RyZnRpbWUoKFB5T2JqZWN0ICopc2VsZiwgZm9ybWF0LCB0dXBsZSwKQEAgLTI2ODYsMTUgKzI2NzEsMTYgQEAKIGRhdGVfZm9ybWF0KFB5RGF0ZVRpbWVfRGF0ZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBfUHlfSURFTlRJRklFUihzdHJmdGltZSk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIGlmIHRoZSBmb3JtYXQgaXMgemVybyBsZW5ndGgsIHJldHVybiBzdHIoc2VsZikgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoZm9ybWF0KSA9PSAwKQorICAgIGlmIChQeVVuaWNvZGVfR2V0TGVuZ3RoKGZvcm1hdCkgPT0gMCkKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cigoUHlPYmplY3QgKilzZWxmKTsKIAotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJzdHJmdGltZSIsICJPIiwgZm9ybWF0KTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9zdHJmdGltZSwgIk8iLCBmb3JtYXQpOwogfQogCiAvKiBJU08gbWV0aG9kcy4gKi8KQEAgLTI3NDAsMTAgKzI3MjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlEYXRlVGltZV9EQVRFX0RBVEFTSVpFKTsKICAgICAgICAgcmV0dXJuIGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjc3NSwyNyArMjc1OSwxMCBAQAogICAgIHJldHVybiBjbG9uZTsKIH0KIAotLyoKLSAgICBCb3Jyb3dlZCBmcm9tIHN0cmluZ29iamVjdC5jLCBvcmlnaW5hbGx5IGl0IHdhcyBzdHJpbmdfaGFzaCgpCi0qLwogc3RhdGljIFB5X2hhc2hfdAogZ2VuZXJpY19oYXNoKHVuc2lnbmVkIGNoYXIgKmRhdGEsIGludCBsZW4pCiB7Ci0gICAgcmVnaXN0ZXIgdW5zaWduZWQgY2hhciAqcDsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgeDsKLQotICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7Ci0gICAgcCA9ICh1bnNpZ25lZCBjaGFyICopIGRhdGE7Ci0gICAgeCA9IF9QeV9IYXNoU2VjcmV0LnByZWZpeDsKLSAgICB4IF49ICpwIDw8IDc7Ci0gICAgd2hpbGUgKC0tbGVuID49IDApCi0gICAgICAgIHggPSAoMTAwMDAwMyp4KSBeICpwKys7Ci0gICAgeCBePSBsZW47Ci0gICAgeCBePSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7Ci0gICAgaWYgKHggPT0gLTEpCi0gICAgICAgIHggPSAtMjsKLQotICAgIHJldHVybiB4OworICAgIHJldHVybiBfUHlfSGFzaEJ5dGVzKGRhdGEsIGxlbik7CiB9CiAKIApAQCAtMzEwMCwxMiArMzA2NywxNCBAQAogewogICAgIFB5T2JqZWN0ICphcmdzLCAqc3RhdGUsICp0bXA7CiAgICAgUHlPYmplY3QgKmdldGluaXRhcmdzLCAqZ2V0c3RhdGU7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRpbml0YXJnc19fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldHN0YXRlX18pOwogCiAgICAgdG1wID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGdldGluaXRhcmdzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLCAiX19nZXRpbml0YXJnc19fIik7CisgICAgZ2V0aW5pdGFyZ3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgaWYgKGdldGluaXRhcmdzICE9IE5VTEwpIHsKICAgICAgICAgYXJncyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0aW5pdGFyZ3MsIHRtcCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRpbml0YXJncyk7CkBAIC0zMTIwLDcgKzMwODksNyBAQAogICAgICAgICBQeV9JTkNSRUYoYXJncyk7CiAgICAgfQogCi0gICAgZ2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2dldHN0YXRlX18iKTsKKyAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19nZXRzdGF0ZV9fKTsKICAgICBpZiAoZ2V0c3RhdGUgIT0gTlVMTCkgewogICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZ2V0c3RhdGUsIHRtcCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CkBAIC0zMjQzLDEwICszMjEyLDggQEAKIHRpbWV6b25lX3JpY2hjb21wYXJlKFB5RGF0ZVRpbWVfVGltZVpvbmUgKnNlbGYsCiAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lICpvdGhlciwgaW50IG9wKQogewotICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIGlmIChQeV9UWVBFKG90aGVyKSAhPSAmUHlEYXRlVGltZV9UaW1lWm9uZVR5cGUpIHsKIAlpZiAob3AgPT0gUHlfRVEpCiAJICAgIFB5X1JFVFVSTl9GQUxTRTsKQEAgLTMyOTcsNyArMzI2NCw2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdGltZXpvbmVfc3RyKFB5RGF0ZVRpbWVfVGltZVpvbmUgKnNlbGYpCiB7Ci0gICAgY2hhciBidWZbMTBdOwogICAgIGludCBob3VycywgbWludXRlcywgc2Vjb25kczsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogICAgIGNoYXIgc2lnbjsKQEAgLTMzMjMsMTEgKzMyODksOSBAQAogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIG1pbnV0ZXMgPSBkaXZtb2Qoc2Vjb25kcywgNjAsICZzZWNvbmRzKTsKICAgICBob3VycyA9IGRpdm1vZChtaW51dGVzLCA2MCwgJm1pbnV0ZXMpOwotICAgIGFzc2VydChzZWNvbmRzID09IDApOwogICAgIC8qIFhYWCBpZ25vcmUgc3ViLW1pbnV0ZSBkYXRhLCBjdXJlbnRseSBub3QgYWxsb3dlZC4gKi8KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJVVEMlYyUwMmQ6JTAyZCIsIHNpZ24sIGhvdXJzLCBtaW51dGVzKTsKLQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIGFzc2VydChzZWNvbmRzID09IDApOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiVVRDJWMlMDJkOiUwMmQiLCBzaWduLCBob3VycywgbWludXRlcyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNjI0LDcgKzM1ODgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc3RyKFB5RGF0ZVRpbWVfVGltZSAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiaXNvZm9ybWF0IiwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoaXNvZm9ybWF0KTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIigpIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zNzAxLDEwICszNjY3LDggQEAKICAgICBQeU9iamVjdCAqb2Zmc2V0MSwgKm9mZnNldDI7CiAgICAgaW50IGRpZmY7CiAKLSAgICBpZiAoISBQeVRpbWVfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCEgUHlUaW1lX0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgaWYgKEdFVF9USU1FX1RaSU5GTyhzZWxmKSA9PSBHRVRfVElNRV9UWklORk8ob3RoZXIpKSB7CiAgICAgICAgIGRpZmYgPSBtZW1jbXAoKChQeURhdGVUaW1lX1RpbWUgKilzZWxmKS0+ZGF0YSwKQEAgLTM3NTAsNiArMzcxNCwxNCBAQAogICAgICAgICAgICAgICAgICAgIFRJTUVfR0VUX01JQ1JPU0VDT05EKG90aGVyKTsKICAgICAgICAgcmVzdWx0ID0gZGlmZl90b19ib29sKGRpZmYsIG9wKTsKICAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfRVEpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfRmFsc2U7CisgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9ORSkgeworICAgICAgICByZXN1bHQgPSBQeV9UcnVlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgY29tcGFyZSBvZmZzZXQtbmFpdmUgYW5kICIKQEAgLTQxMDUsMzMgKzQwNzcsMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0emluZm8pCiB7CiAgICAgc3RydWN0IHRtICp0bTsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKIAogICAgIHRtID0gZigmdGltZXQpOwotICAgIGlmICh0bSkgewotICAgICAgICAvKiBUaGUgcGxhdGZvcm0gbG9jYWx0aW1lL2dtdGltZSBtYXkgaW5zZXJ0IGxlYXAgc2Vjb25kcywKLSAgICAgICAgICogaW5kaWNhdGVkIGJ5IHRtLT50bV9zZWMgPiA1OS4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhlbSwKLSAgICAgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCi0gICAgICAgICAqIGNvbnN0cnVjdG9yIHdvdWxkIHJhaXNlIFZhbHVlRXJyb3IgZm9yIGEgcmVhc29uIHRoYXQKLSAgICAgICAgICogbWFkZSBubyBzZW5zZSB0byB0aGUgdXNlci4KLSAgICAgICAgICovCi0gICAgICAgIGlmICh0bS0+dG1fc2VjID4gNTkpCi0gICAgICAgICAgICB0bS0+dG1fc2VjID0gNTk7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihjbHMsICJpaWlpaWlpTyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1feWVhciArIDE5MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbW9uICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9tZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX2hvdXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3NlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKTsKKyAgICBpZiAodG0gPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSBmb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIGxvY2FsdGltZSgpL2dtdGltZSgpIGZ1bmN0aW9uIik7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIC8qIFRoZSBwbGF0Zm9ybSBsb2NhbHRpbWUvZ210aW1lIG1heSBpbnNlcnQgbGVhcCBzZWNvbmRzLAorICAgICAqIGluZGljYXRlZCBieSB0bS0+dG1fc2VjID4gNTkuICBXZSBkb24ndCBjYXJlIGFib3V0IHRoZW0sCisgICAgICogZXhjZXB0IHRvIHRoZSBleHRlbnQgdGhhdCBwYXNzaW5nIHRoZW0gb24gdG8gdGhlIGRhdGV0aW1lCisgICAgICogY29uc3RydWN0b3Igd291bGQgcmFpc2UgVmFsdWVFcnJvciBmb3IgYSByZWFzb24gdGhhdAorICAgICAqIG1hZGUgbm8gc2Vuc2UgdG8gdGhlIHVzZXIuCisgICAgICovCisgICAgaWYgKHRtLT50bV9zZWMgPiA1OSkKKyAgICAgICAgdG0tPnRtX3NlYyA9IDU5OworICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oY2xzLCAiaWlpaWlpaU8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX3llYXIgKyAxOTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21vbiArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bS0+dG1fbWRheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9ob3VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG0tPnRtX21pbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtLT50bV9zZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbyk7CiB9CiAKIC8qIEludGVybmFsIGhlbHBlci4KQEAgLTQxNDIsMzIgKzQxMTQsMTUgQEAKICAqIHRvIGdldCB0aGF0IG11Y2ggcHJlY2lzaW9uIChlLmcuLCBDIHRpbWUoKSBpc24ndCBnb29kIGVub3VnaCkuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIGRvdWJsZSB0aW1lc3RhbXAsCitkYXRldGltZV9mcm9tX3RpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBUTV9GVU5DIGYsIFB5T2JqZWN0ICp0aW1lc3RhbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdHppbmZvKQogewogICAgIHRpbWVfdCB0aW1ldDsKLSAgICBkb3VibGUgZnJhY3Rpb247Ci0gICAgaW50IHVzOworICAgIGxvbmcgdXM7CiAKLSAgICB0aW1ldCA9IF9QeVRpbWVfRG91YmxlVG9UaW1ldCh0aW1lc3RhbXApOwotICAgIGlmICh0aW1ldCA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1ldmFsKHRpbWVzdGFtcCwgJnRpbWV0LCAmdXMpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcmFjdGlvbiA9IHRpbWVzdGFtcCAtIChkb3VibGUpdGltZXQ7Ci0gICAgdXMgPSAoaW50KXJvdW5kX3RvX2xvbmcoZnJhY3Rpb24gKiAxZTYpOwotICAgIGlmICh1cyA8IDApIHsKLSAgICAgICAgLyogVHJ1bmNhdGlvbiB0b3dhcmRzIHplcm8gaXMgbm90IHdoYXQgd2Ugd2FudGVkCi0gICAgICAgICAgIGZvciBuZWdhdGl2ZSBudW1iZXJzIChQeXRob24ncyBtb2Qgc2VtYW50aWNzKSAqLwotICAgICAgICB0aW1ldCAtPSAxOwotICAgICAgICB1cyArPSAxMDAwMDAwOwotICAgIH0KLSAgICAvKiBJZiB0aW1lc3RhbXAgaXMgbGVzcyB0aGFuIG9uZSBtaWNyb3NlY29uZCBzbWFsbGVyIHRoYW4gYQotICAgICAqIGZ1bGwgc2Vjb25kLCByb3VuZCB1cC4gT3RoZXJ3aXNlLCBWYWx1ZUVycm9ycyBhcmUgcmFpc2VkCi0gICAgICogZm9yIHNvbWUgZmxvYXRzLiAqLwotICAgIGlmICh1cyA9PSAxMDAwMDAwKSB7Ci0gICAgICAgIHRpbWV0ICs9IDE7Ci0gICAgICAgIHVzID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIGRhdGV0aW1lX2Zyb21fdGltZXRfYW5kX3VzKGNscywgZiwgdGltZXQsIHVzLCB0emluZm8pOworICAgIHJldHVybiBkYXRldGltZV9mcm9tX3RpbWV0X2FuZF91cyhjbHMsIGYsIHRpbWV0LCAoaW50KXVzLCB0emluZm8pOwogfQogCiAvKiBJbnRlcm5hbCBoZWxwZXIuCkBAIC00MjA1LDcgKzQxNjAsOSBAQAogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotICAgICAgICBzZWxmID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJmcm9tdXRjIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZnJvbXV0Yyk7CisKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwogICAgICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwpAQCAtNDIyNSwxMSArNDE4MiwxMSBAQAogZGF0ZXRpbWVfZnJvbXRpbWVzdGFtcChQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogewogICAgIFB5T2JqZWN0ICpzZWxmOwotICAgIGRvdWJsZSB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKnRpbWVzdGFtcDsKICAgICBQeU9iamVjdCAqdHppbmZvID0gUHlfTm9uZTsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsidGltZXN0YW1wIiwgInR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJkfE86ZnJvbXRpbWVzdGFtcCIsCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiT3xPOmZyb210aW1lc3RhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkcywgJnRpbWVzdGFtcCwgJnR6aW5mbykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjaGVja190emluZm9fc3ViY2xhc3ModHppbmZvKSA8IDApCkBAIC00MjQyLDcgKzQxOTksOSBAQAogICAgIGlmIChzZWxmICE9IE5VTEwgJiYgdHppbmZvICE9IFB5X05vbmUpIHsKICAgICAgICAgLyogQ29udmVydCBVVEMgdG8gdHppbmZvJ3Mgem9uZS4gKi8KICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBzZWxmOwotICAgICAgICBzZWxmID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0emluZm8sICJmcm9tdXRjIiwgIk8iLCBzZWxmKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZnJvbXV0Yyk7CisKKyAgICAgICAgc2VsZiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodHppbmZvLCAmUHlJZF9mcm9tdXRjLCAiTyIsIHNlbGYpOwogICAgICAgICBQeV9ERUNSRUYodGVtcCk7CiAgICAgfQogICAgIHJldHVybiBzZWxmOwpAQCAtNDI1MiwxMCArNDIxMSwxMCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX3V0Y2Zyb210aW1lc3RhbXAoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHRpbWVzdGFtcDsKKyAgICBQeU9iamVjdCAqdGltZXN0YW1wOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCi0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6dXRjZnJvbXRpbWVzdGFtcCIsICZ0aW1lc3RhbXApKQorICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnV0Y2Zyb210aW1lc3RhbXAiLCAmdGltZXN0YW1wKSkKICAgICAgICAgcmVzdWx0ID0gZGF0ZXRpbWVfZnJvbV90aW1lc3RhbXAoY2xzLCBnbXRpbWUsIHRpbWVzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQyNjYsOSArNDIyNSwxMCBAQAogZGF0ZXRpbWVfc3RycHRpbWUoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICptb2R1bGUgPSBOVUxMOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnN0cmluZywgKmZvcm1hdDsKKyAgICBQeU9iamVjdCAqc3RyaW5nLCAqZm9ybWF0OworICAgIF9QeV9JREVOVElGSUVSKF9zdHJwdGltZV9kYXRldGltZSk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInV1OnN0cnB0aW1lIiwgJnN0cmluZywgJmZvcm1hdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpzdHJwdGltZSIsICZzdHJpbmcsICZmb3JtYXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtb2R1bGUgPT0gTlVMTCkgewpAQCAtNDI3Niw4ICs0MjM2LDggQEAKICAgICAgICAgaWYgKG1vZHVsZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKG1vZHVsZSwgIl9zdHJwdGltZV9kYXRldGltZSIsICJPdXUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscywgc3RyaW5nLCBmb3JtYXQpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG1vZHVsZSwgJlB5SWRfX3N0cnB0aW1lX2RhdGV0aW1lLCAiT09PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscywgc3RyaW5nLCBmb3JtYXQpOwogfQogCiAvKiBSZXR1cm4gbmV3IGRhdGV0aW1lIGZyb20gZGF0ZS9kYXRldGltZSBhbmQgdGltZSBhcmd1bWVudHMuICovCkBAIC00MzkzLDggKzQzNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKSBsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDUyMyw3ICs0NDgyLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkYXRldGltZV9zdHIoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiaXNvZm9ybWF0IiwgIihzKSIsICIgIik7CisgICAgX1B5X0lERU5USUZJRVIoaXNvZm9ybWF0KTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2lzb2Zvcm1hdCwgIihzKSIsICIgIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00NTk2LDggKzQ1NTcsNyBAQAogICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgICAgICAgICAgcmV0dXJuIGNtcGVycm9yKHNlbGYsIG90aGVyKTsKICAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBpZiAoR0VUX0RUX1RaSU5GTyhzZWxmKSA9PSBHRVRfRFRfVFpJTkZPKG90aGVyKSkgewpAQCAtNDYzOSw2ICs0NTk5LDE0IEBACiAgICAgICAgIFB5X0RFQ1JFRihkZWx0YSk7CiAgICAgICAgIHJlc3VsdCA9IGRpZmZfdG9fYm9vbChkaWZmLCBvcCk7CiAgICAgfQorICAgIGVsc2UgaWYgKG9wID09IFB5X0VRKSB7CisgICAgICAgIHJlc3VsdCA9IFB5X0ZhbHNlOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICB9CisgICAgZWxzZSBpZiAob3AgPT0gUHlfTkUpIHsKKyAgICAgICAgcmVzdWx0ID0gUHlfVHJ1ZTsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IGNvbXBhcmUgb2Zmc2V0LW5haXZlIGFuZCAiCkBAIC00NzI1LDE2ICs0NjkzLDgzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitsb2NhbF90aW1lem9uZShQeURhdGVUaW1lX0RhdGVUaW1lICp1dGNfdGltZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgdG0gKnRpbWVwOworICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgUHlPYmplY3QgKmRlbHRhOworICAgIFB5T2JqZWN0ICpvbmVfc2Vjb25kOworICAgIFB5T2JqZWN0ICpzZWNvbmRzOworICAgIFB5T2JqZWN0ICpuYW1lbyA9IE5VTEw7CisgICAgY29uc3QgY2hhciAqem9uZSA9IE5VTEw7CisKKyAgICBkZWx0YSA9IGRhdGV0aW1lX3N1YnRyYWN0KChQeU9iamVjdCAqKXV0Y190aW1lLCBQeURhdGVUaW1lX0Vwb2NoKTsKKyAgICBpZiAoZGVsdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb25lX3NlY29uZCA9IG5ld19kZWx0YSgwLCAxLCAwLCAwKTsKKyAgICBpZiAob25lX3NlY29uZCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHNlY29uZHMgPSBkaXZpZGVfdGltZWRlbHRhX3RpbWVkZWx0YSgoUHlEYXRlVGltZV9EZWx0YSAqKWRlbHRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9uZV9zZWNvbmQpOworICAgIFB5X0RFQ1JFRihvbmVfc2Vjb25kKTsKKyAgICBpZiAoc2Vjb25kcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0RFQ1JFRihkZWx0YSk7CisgICAgdGltZXN0YW1wID0gUHlMb25nX0FzTG9uZyhzZWNvbmRzKTsKKyAgICBQeV9ERUNSRUYoc2Vjb25kcyk7CisgICAgaWYgKHRpbWVzdGFtcCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0aW1lcCA9IGxvY2FsdGltZSgmdGltZXN0YW1wKTsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgem9uZSA9IHRpbWVwLT50bV96b25lOworICAgIGRlbHRhID0gbmV3X2RlbHRhKDAsIHRpbWVwLT50bV9nbXRvZmYsIDAsIDEpOworI2Vsc2UgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIHsKKyAgICAgICAgUHlPYmplY3QgKmxvY2FsX3RpbWU7CisgICAgICAgIGxvY2FsX3RpbWUgPSBuZXdfZGF0ZXRpbWUodGltZXAtPnRtX3llYXIgKyAxOTAwLCB0aW1lcC0+dG1fbW9uICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcC0+dG1fbWRheSwgdGltZXAtPnRtX2hvdXIsIHRpbWVwLT50bV9taW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXAtPnRtX3NlYywgREFURV9HRVRfTUlDUk9TRUNPTkQodXRjX3RpbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0Y190aW1lLT50emluZm8pOworICAgICAgICBpZiAobG9jYWxfdGltZSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgZGVsdGEgPSBkYXRldGltZV9zdWJ0cmFjdChsb2NhbF90aW1lLCAoUHlPYmplY3QqKXV0Y190aW1lKTsKKyAgICAgICAgLyogWFhYOiBiZWZvcmUgcmVseWluZyBvbiB0em5hbWUsIHdlIHNob3VsZCBjb21wYXJlIGRlbHRhCisgICAgICAgICAgIHRvIHRoZSBvZmZzZXQgaW1wbGllZCBieSB0aW1lem9uZS9hbHR6b25lICovCisgICAgICAgIGlmIChkYXlsaWdodCAmJiB0aW1lcC0+dG1faXNkc3QgPj0gMCkKKyAgICAgICAgICAgIHpvbmUgPSB0em5hbWVbdGltZXAtPnRtX2lzZHN0ICUgMl07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHpvbmUgPSB0em5hbWVbMF07CisgICAgICAgIFB5X0RFQ1JFRihsb2NhbF90aW1lKTsKKyAgICB9CisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLworICAgIGlmICh6b25lICE9IE5VTEwpIHsKKyAgICAgICAgbmFtZW8gPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgaWYgKG5hbWVvID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICByZXN1bHQgPSBuZXdfdGltZXpvbmUoZGVsdGEsIG5hbWVvKTsKKyAgICBQeV9ERUNSRUYobmFtZW8pOworICBlcnJvcjoKKyAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeURhdGVUaW1lX0RhdGVUaW1lICoKIGRhdGV0aW1lX2FzdGltZXpvbmUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqb2Zmc2V0OwogICAgIFB5T2JqZWN0ICp0ZW1wOwotICAgIFB5T2JqZWN0ICp0emluZm87CisgICAgUHlPYmplY3QgKnR6aW5mbyA9IFB5X05vbmU7CisgICAgX1B5X0lERU5USUZJRVIoZnJvbXV0Yyk7CiAgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InR6IiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPITphc3RpbWV6b25lIiwga2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURhdGVUaW1lX1RaSW5mb1R5cGUsICZ0emluZm8pKQorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPOmFzdGltZXpvbmUiLCBrZXl3b3JkcywKKwkJCQkgICAgICAmdHppbmZvKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoY2hlY2tfdHppbmZvX3N1YmNsYXNzKHR6aW5mbykgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFIQVNUWklORk8oc2VsZikgfHwgc2VsZi0+dHppbmZvID09IFB5X05vbmUpCkBAIC00NzQzLDcgKzQ3NzgsNyBAQAogICAgIC8qIENvbnZlcnNpb24gdG8gc2VsZidzIG93biB0aW1lIHpvbmUgaXMgYSBOT1AuICovCiAgICAgaWYgKHNlbGYtPnR6aW5mbyA9PSB0emluZm8pIHsKICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgcmV0dXJuIHNlbGY7CiAgICAgfQogCiAgICAgLyogQ29udmVydCBzZWxmIHRvIFVUQy4gKi8KQEAgLTQ3NTksMjAgKzQ3OTQsMjkgQEAKICAgICB9CiAKICAgICAvKiByZXN1bHQgPSBzZWxmIC0gb2Zmc2V0ICovCi0gICAgcmVzdWx0ID0gYWRkX2RhdGV0aW1lX3RpbWVkZWx0YShzZWxmLAotICAgICAgICAgICAgICAgIChQeURhdGVUaW1lX0RlbHRhICopb2Zmc2V0LCAtMSk7CisgICAgcmVzdWx0ID0gKFB5RGF0ZVRpbWVfRGF0ZVRpbWUgKilhZGRfZGF0ZXRpbWVfdGltZWRlbHRhKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKW9mZnNldCwgLTEpOwogICAgIFB5X0RFQ1JFRihvZmZzZXQpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBdHRhY2ggbmV3IHR6aW5mbyBhbmQgbGV0IGZyb211dGMoKSBkbyB0aGUgcmVzdC4gKi8KLSAgICB0ZW1wID0gKChQeURhdGVUaW1lX0RhdGVUaW1lICopcmVzdWx0KS0+dHppbmZvOwotICAgICgoUHlEYXRlVGltZV9EYXRlVGltZSAqKXJlc3VsdCktPnR6aW5mbyA9IHR6aW5mbzsKLSAgICBQeV9JTkNSRUYodHppbmZvKTsKKyAgICB0ZW1wID0gcmVzdWx0LT50emluZm87CisgICAgaWYgKHR6aW5mbyA9PSBQeV9Ob25lKSB7CisgICAgICAgIHR6aW5mbyA9IGxvY2FsX3RpbWV6b25lKHJlc3VsdCk7CisgICAgICAgIGlmICh0emluZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgICBQeV9JTkNSRUYodHppbmZvKTsKKyAgICByZXN1bHQtPnR6aW5mbyA9IHR6aW5mbzsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAKLSAgICB0ZW1wID0gcmVzdWx0OwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodHppbmZvLCAiZnJvbXV0YyIsICJPIiwgdGVtcCk7CisgICAgdGVtcCA9IChQeU9iamVjdCAqKXJlc3VsdDsKKyAgICByZXN1bHQgPSAoUHlEYXRlVGltZV9EYXRlVGltZSAqKQorICAgICAgICBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHR6aW5mbywgJlB5SWRfZnJvbXV0YywgIk8iLCB0ZW1wKTsKICAgICBQeV9ERUNSRUYodGVtcCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNDgwNCw2ICs0ODQ4LDQ0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitkYXRldGltZV90aW1lc3RhbXAoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKEhBU1RaSU5GTyhzZWxmKSAmJiBzZWxmLT50emluZm8gIT0gUHlfTm9uZSkgeworICAgICAgICBQeU9iamVjdCAqZGVsdGE7CisgICAgICAgIGRlbHRhID0gZGF0ZXRpbWVfc3VidHJhY3QoKFB5T2JqZWN0ICopc2VsZiwgUHlEYXRlVGltZV9FcG9jaCk7CisgICAgICAgIGlmIChkZWx0YSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJlc3VsdCA9IGRlbHRhX3RvdGFsX3NlY29uZHMoZGVsdGEpOworICAgICAgICBQeV9ERUNSRUYoZGVsdGEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RydWN0IHRtIHRpbWU7CisgICAgICAgIHRpbWVfdCB0aW1lc3RhbXA7CisgICAgICAgIG1lbXNldCgodm9pZCAqKSAmdGltZSwgJ1wwJywgc2l6ZW9mKHN0cnVjdCB0bSkpOworICAgICAgICB0aW1lLnRtX3llYXIgPSBHRVRfWUVBUihzZWxmKSAtIDE5MDA7CisgICAgICAgIHRpbWUudG1fbW9uID0gR0VUX01PTlRIKHNlbGYpIC0gMTsKKyAgICAgICAgdGltZS50bV9tZGF5ID0gR0VUX0RBWShzZWxmKTsKKyAgICAgICAgdGltZS50bV9ob3VyID0gREFURV9HRVRfSE9VUihzZWxmKTsKKyAgICAgICAgdGltZS50bV9taW4gPSBEQVRFX0dFVF9NSU5VVEUoc2VsZik7CisgICAgICAgIHRpbWUudG1fc2VjID0gREFURV9HRVRfU0VDT05EKHNlbGYpOworICAgICAgICB0aW1lLnRtX3dkYXkgPSAtMTsKKyAgICAgICAgdGltZS50bV9pc2RzdCA9IC0xOworICAgICAgICB0aW1lc3RhbXAgPSBta3RpbWUoJnRpbWUpOworICAgICAgICAvKiBSZXR1cm4gdmFsdWUgb2YgLTEgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiBhbiBlcnJvciwgYnV0IHRtX3dkYXkKKyAgICAgICAgICogY2Fubm90IHJlbWFpbiBzZXQgdG8gLTEgaWYgbWt0aW1lIHN1Y2NlZWRlZC4gKi8KKyAgICAgICAgaWYgKHRpbWVzdGFtcCA9PSAodGltZV90KSgtMSkgJiYgdGltZS50bV93ZGF5ID09IC0xKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZXN0YW1wIG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKHRpbWVzdGFtcCArIERBVEVfR0VUX01JQ1JPU0VDT05EKHNlbGYpIC8gMWU2KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGRhdGV0aW1lX2dldGRhdGUoUHlEYXRlVGltZV9EYXRlVGltZSAqc2VsZikKIHsKICAgICByZXR1cm4gbmV3X2RhdGUoR0VUX1lFQVIoc2VsZiksCkBAIC00OTUwLDYgKzUwMzIsOSBAQAogICAgIHsidGltZXR1cGxlIiwgICAoUHlDRnVuY3Rpb24pZGF0ZXRpbWVfdGltZXR1cGxlLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJSZXR1cm4gdGltZSB0dXBsZSwgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIil9LAogCisgICAgeyJ0aW1lc3RhbXAiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV90aW1lc3RhbXAsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIlJldHVybiBQT1NJWCB0aW1lc3RhbXAgYXMgZmxvYXQuIil9LAorCiAgICAgeyJ1dGN0aW1ldHVwbGUiLCAgIChQeUNGdW5jdGlvbilkYXRldGltZV91dGN0aW1ldHVwbGUsIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIlJldHVybiBVVEMgdGltZSB0dXBsZSwgY29tcGF0aWJsZSB3aXRoIHRpbWUubG9jYWx0aW1lKCkuIil9LAogCkBAIC01MjA3LDYgKzUyOTIsMTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHgpOwogCisgICAgLyogRXBvY2ggKi8KKyAgICBQeURhdGVUaW1lX0Vwb2NoID0gbmV3X2RhdGV0aW1lKDE5NzAsIDEsIDEsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeURhdGVUaW1lX1RpbWVab25lX1VUQyk7CisgICAgaWYgKFB5RGF0ZVRpbWVfRXBvY2ggPT0gTlVMTCkKKyAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogbW9kdWxlIGluaXRpYWxpemF0aW9uICovCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1JTllFQVIiLCBNSU5ZRUFSKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTUFYWUVBUiIsIE1BWFlFQVIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGJtbW9kdWxlLmMgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwppbmRleCA4MjdhY2NlLi4zMjdiODczIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19kYm1tb2R1bGUuYworKysgYi9Nb2R1bGVzL19kYm1tb2R1bGUuYwpAQCAtMjEyLDYgKzIxMiw3IEBACiB7CiAgICAgZGJtb2JqZWN0ICpkcCA9IChkYm1vYmplY3QgKilzZWxmOwogICAgIGRhdHVtIGtleSwgdmFsOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAogICAgIGlmICgoZHApLT5kaV9kYm0gPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoRGJtRXJyb3IsCkBAIC0yMTksOCArMjIwLDkgQEAKICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGFyZyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhhcmcsIE5VTEwpOwotICAgICAgICBpZiAoYXJnID09IE5VTEwpCisgICAgICAgIGtleS5kcHRyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXJnLCAmc2l6ZSk7CisgICAgICAgIGtleS5kc2l6ZSA9IHNpemU7CisgICAgICAgIGlmIChrZXkuZHB0ciA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soYXJnKSkgewpAQCAtMjI5LDggKzIzMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBrZXkuZHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyk7Ci0gICAga2V5LmRzaXplID0gUHlCeXRlc19HRVRfU0laRShhcmcpOworICAgIGVsc2UgeworICAgICAgICBrZXkuZHB0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZyk7CisgICAgICAgIGtleS5kc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKTsKKyAgICB9CiAgICAgdmFsID0gZGJtX2ZldGNoKGRwLT5kaV9kYm0sIGtleSk7CiAgICAgcmV0dXJuIHZhbC5kcHRyICE9IE5VTEw7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL1JFQURNRS50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL1JFQURNRS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxN2NmZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvUkVBRE1FLnR4dApAQCAtMCwwICsxLDQ2IEBACisKKworQWJvdXQKKz09PT09CisKK19kZWNpbWFsLmMgaXMgYSB3cmFwcGVyIGZvciB0aGUgbGlibXBkZWMgbGlicmFyeS4gbGlibXBkZWMgaXMgYSBmYXN0IEMKK2xpYnJhcnkgZm9yIGNvcnJlY3RseS1yb3VuZGVkIGFyYml0cmFyeSBwcmVjaXNpb24gZGVjaW1hbCBmbG9hdGluZyBwb2ludAorYXJpdGhtZXRpYy4gSXQgaXMgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBNaWtlIENvd2xpc2hhdy9JQk0ncworR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbi4KKworCitCdWlsZCBwcm9jZXNzIGZvciB0aGUgbW9kdWxlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FzIHVzdWFsLCB0aGUgYnVpbGQgcHJvY2VzcyBmb3IgX2RlY2ltYWwuc28gaXMgZHJpdmVuIGJ5IHNldHVwLnB5IGluIHRoZSB0b3AKK2xldmVsIGRpcmVjdG9yeS4gc2V0dXAucHkgYXV0b2RldGVjdHMgdGhlIGZvbGxvd2luZyBidWlsZCBjb25maWd1cmF0aW9uczoKKworICAgMSkgeDY0ICAgICAgICAgLSA2NC1iaXQgUHl0aG9uLCB4ODZfNjQgcHJvY2Vzc29yIChBTUQsIEludGVsKQorCisgICAyKSB1aW50MTI4ICAgICAtIDY0LWJpdCBQeXRob24sIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90IChnY2MpCisKKyAgIDMpIGFuc2k2NCAgICAgIC0gNjQtYml0IFB5dGhvbiwgQU5TSSBDCisKKyAgIDQpIHBwcm8gICAgICAgIC0gMzItYml0IFB5dGhvbiwgeDg2IENQVSwgUGVudGl1bVBybyBvciBsYXRlcgorCisgICA1KSBhbnNpMzIgICAgICAtIDMyLWJpdCBQeXRob24sIEFOU0kgQworCisgICA2KSBhbnNpLWxlZ2FjeSAtIDMyLWJpdCBQeXRob24sIGNvbXBpbGVyIHdpdGhvdXQgdWludDY0X3QKKworICAgNykgdW5pdmVyc2FsICAgLSBNYWMgT1Mgb25seSAobXVsdGktYXJjaCkKKworCitJdCBpcyBwb3NzaWJsZSB0byBvdmVycmlkZSBhdXRvZGV0ZWN0aW9uIGJ5IGV4cG9ydGluZzoKKworICAgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FPXZhbHVlLCB3aGVyZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGFib3ZlIG9wdGlvbnMuCisKKworTk9URQorPT09PQorIAorZGVjaW1hbC5zbyBpcyBub3QgYnVpbHQgZnJvbSBhIHN0YXRpYyBsaWJtcGRlYy5hIHNpbmNlIGRvaW5nIHNvIGxlZCB0bworZmFpbHVyZXMgb24gQUlYICh1c2VyIHJlcG9ydCkgYW5kIFdpbmRvd3MgKG1peGluZyBzdGF0aWMgYW5kIGR5bmFtaWMgQ1JUcworY2F1c2VzIGxvY2FsZSBwcm9ibGVtcyBhbmQgbW9yZSkuCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL19kZWNpbWFsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk2ZjlkYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvX2RlY2ltYWwuYwpAQCAtMCwwICsxLDU2NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlICJsb25naW50cmVwci5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisjaW5jbHVkZSAiY29tcGxleG9iamVjdC5oIgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJkb2NzdHJpbmdzLmgiCisjaW5jbHVkZSAibWVtb3J5LmgiCisKKworLyoKKyAqIFR5cGUgc2l6ZXMgd2l0aCBhc3NlcnRpb25zIGluIG1wZGVjaW1hbC5oIGFuZCBweXBvcnQuaDoKKyAqICAgIHNpemVvZihzaXplX3QpID09IHNpemVvZihQeV9zc2l6ZV90KQorICogICAgc2l6ZW9mKHNpemVfdCkgPT0gc2l6ZW9mKG1wZF91aW50X3QpID09IHNpemVvZihtcGRfc3NpemVfdCkKKyAqLworCisjaWZkZWYgVEVTVF9DT1ZFUkFHRQorICAjdW5kZWYgUHlfTE9DQUxfSU5MSU5FCisgICNkZWZpbmUgUHlfTE9DQUxfSU5MSU5FIFB5X0xPQ0FMCisjZW5kaWYKKworI2RlZmluZSBNUERfRmxvYXRfb3BlcmF0aW9uIE1QRF9Ob3RfaW1wbGVtZW50ZWQKKworI2RlZmluZSBCT1VORFNfQ0hFQ0soeCwgTUlOLCBNQVgpIHggPSAoeCA8IE1JTiB8fCBNQVggPCB4KSA/IE1BWCA6IHgKKworCisvKiBfUHlfREVDX01JTkFMTE9DID49IE1QRF9NSU5BTExPQyAqLworI2RlZmluZSBfUHlfREVDX01JTkFMTE9DIDQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBtcGRfdCBkZWM7CisgICAgbXBkX3VpbnRfdCBkYXRhW19QeV9ERUNfTUlOQUxMT0NdOworfSBQeURlY09iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICB1aW50MzJfdCAqZmxhZ3M7Cit9IFB5RGVjU2lnbmFsRGljdE9iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBtcGRfY29udGV4dF90IGN0eDsKKyAgICBQeU9iamVjdCAqdHJhcHM7CisgICAgUHlPYmplY3QgKmZsYWdzOworICAgIGludCBjYXBpdGFsczsKKyNpZm5kZWYgV0lUSE9VVF9USFJFQURTCisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworI2VuZGlmCit9IFB5RGVjQ29udGV4dE9iamVjdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqbG9jYWw7CisgICAgUHlPYmplY3QgKmdsb2JhbDsKK30gUHlEZWNDb250ZXh0TWFuYWdlck9iamVjdDsKKworCisjdW5kZWYgTVBECisjdW5kZWYgQ1RYCitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjX1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpQeURlY1NpZ25hbERpY3RfVHlwZTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNDb250ZXh0X1R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0IFB5RGVjQ29udGV4dE1hbmFnZXJfVHlwZTsKKyNkZWZpbmUgUHlEZWNfQ2hlY2tFeGFjdCh2KSAoUHlfVFlQRSh2KSA9PSAmUHlEZWNfVHlwZSkKKyNkZWZpbmUgUHlEZWNfQ2hlY2sodikgUHlPYmplY3RfVHlwZUNoZWNrKHYsICZQeURlY19UeXBlKQorI2RlZmluZSBQeURlY1NpZ25hbERpY3RfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gUHlEZWNTaWduYWxEaWN0X1R5cGUpCisjZGVmaW5lIFB5RGVjQ29udGV4dF9DaGVjayh2KSBQeU9iamVjdF9UeXBlQ2hlY2sodiwgJlB5RGVjQ29udGV4dF9UeXBlKQorI2RlZmluZSBNUEQodikgKCYoKFB5RGVjT2JqZWN0ICopdiktPmRlYykKKyNkZWZpbmUgU2RGbGFnQWRkcih2KSAoKChQeURlY1NpZ25hbERpY3RPYmplY3QgKil2KS0+ZmxhZ3MpCisjZGVmaW5lIFNkRmxhZ3ModikgKCooKFB5RGVjU2lnbmFsRGljdE9iamVjdCAqKXYpLT5mbGFncykKKyNkZWZpbmUgQ1RYKHYpICgmKChQeURlY0NvbnRleHRPYmplY3QgKil2KS0+Y3R4KQorI2RlZmluZSBDdHhDYXBzKHYpICgoKFB5RGVjQ29udGV4dE9iamVjdCAqKXYpLT5jYXBpdGFscykKKworCitQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKK2luY3JfdHJ1ZSh2b2lkKQoreworICAgIFB5X0lOQ1JFRihQeV9UcnVlKTsKKyAgICByZXR1cm4gUHlfVHJ1ZTsKK30KKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitpbmNyX2ZhbHNlKHZvaWQpCit7CisgICAgUHlfSU5DUkVGKFB5X0ZhbHNlKTsKKyAgICByZXR1cm4gUHlfRmFsc2U7Cit9CisKKworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworLyogRGVmYXVsdCBtb2R1bGUgY29udGV4dCAqLworc3RhdGljIFB5T2JqZWN0ICptb2R1bGVfY29udGV4dCA9IE5VTEw7CisjZWxzZQorLyogS2V5IGZvciB0aHJlYWQgc3RhdGUgZGljdGlvbmFyeSAqLworc3RhdGljIFB5T2JqZWN0ICp0bHNfY29udGV4dF9rZXkgPSBOVUxMOworLyogSW52YXJpYW50OiBOVUxMIG9yIHRoZSBtb3N0IHJlY2VudGx5IGFjY2Vzc2VkIHRocmVhZCBsb2NhbCBjb250ZXh0ICovCitzdGF0aWMgUHlEZWNDb250ZXh0T2JqZWN0ICpjYWNoZWRfY29udGV4dCA9IE5VTEw7CisjZW5kaWYKKworLyogVGVtcGxhdGUgZm9yIGNyZWF0aW5nIG5ldyB0aHJlYWQgY29udGV4dHMsIGNhbGxpbmcgQ29udGV4dCgpIHdpdGhvdXQKKyAqIGFyZ3VtZW50cyBhbmQgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGVfY29udGV4dCBvbiBmaXJzdCBhY2Nlc3MuICovCitzdGF0aWMgUHlPYmplY3QgKmRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSA9IE5VTEw7CisvKiBCYXNpYyBhbmQgZXh0ZW5kZWQgY29udGV4dCB0ZW1wbGF0ZXMgKi8KK3N0YXRpYyBQeU9iamVjdCAqYmFzaWNfY29udGV4dF90ZW1wbGF0ZSA9IE5VTEw7CitzdGF0aWMgUHlPYmplY3QgKmV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUgPSBOVUxMOworCisKKy8qIEVycm9yIGNvZGVzIGZvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4gc2lnbmFscyBvciBjb25kaXRpb25zICovCisjZGVmaW5lIERFQ19JTlZBTElEX1NJR05BTFMgKE1QRF9NYXhfc3RhdHVzKzFVKQorI2RlZmluZSBERUNfRVJSX09DQ1VSUkVEIChERUNfSU5WQUxJRF9TSUdOQUxTPDwxKQorI2RlZmluZSBERUNfRVJST1JTIChERUNfSU5WQUxJRF9TSUdOQUxTfERFQ19FUlJfT0NDVVJSRUQpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBjb25zdCBjaGFyICpuYW1lOyAgIC8qIGNvbmRpdGlvbiBvciBzaWduYWwgbmFtZSAqLworICAgIGNvbnN0IGNoYXIgKmZxbmFtZTsgLyogZnVsbHkgcXVhbGlmaWVkIG5hbWUgKi8KKyAgICB1aW50MzJfdCBmbGFnOyAgICAgIC8qIGxpYm1wZGVjIGZsYWcgKi8KKyAgICBQeU9iamVjdCAqZXg7ICAgICAgIC8qIGNvcnJlc3BvbmRpbmcgZXhjZXB0aW9uICovCit9IERlY0NvbmRNYXA7CisKKy8qIFRvcCBsZXZlbCBFeGNlcHRpb247IGluaGVyaXRzIGZyb20gQXJpdGhtZXRpY0Vycm9yICovCitzdGF0aWMgUHlPYmplY3QgKkRlY2ltYWxFeGNlcHRpb24gPSBOVUxMOworCisvKiBFeGNlcHRpb25zIHRoYXQgY29ycmVzcG9uZCB0byBJRUVFIHNpZ25hbHMgKi8KKyNkZWZpbmUgU1VCTk9STUFMIDUKKyNkZWZpbmUgSU5FWEFDVCA2CisjZGVmaW5lIFJPVU5ERUQgNworI2RlZmluZSBTSUdOQUxfTUFQX0xFTiA5CitzdGF0aWMgRGVjQ29uZE1hcCBzaWduYWxfbWFwW10gPSB7CisgIHsiSW52YWxpZE9wZXJhdGlvbiIsICJkZWNpbWFsLkludmFsaWRPcGVyYXRpb24iLCBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbiwgTlVMTH0sCisgIHsiRmxvYXRPcGVyYXRpb24iLCAiZGVjaW1hbC5GbG9hdE9wZXJhdGlvbiIsIE1QRF9GbG9hdF9vcGVyYXRpb24sIE5VTEx9LAorICB7IkRpdmlzaW9uQnlaZXJvIiwgImRlY2ltYWwuRGl2aXNpb25CeVplcm8iLCBNUERfRGl2aXNpb25fYnlfemVybywgTlVMTH0sCisgIHsiT3ZlcmZsb3ciLCAiZGVjaW1hbC5PdmVyZmxvdyIsIE1QRF9PdmVyZmxvdywgTlVMTH0sCisgIHsiVW5kZXJmbG93IiwgImRlY2ltYWwuVW5kZXJmbG93IiwgTVBEX1VuZGVyZmxvdywgTlVMTH0sCisgIHsiU3Vibm9ybWFsIiwgImRlY2ltYWwuU3Vibm9ybWFsIiwgTVBEX1N1Ym5vcm1hbCwgTlVMTH0sCisgIHsiSW5leGFjdCIsICJkZWNpbWFsLkluZXhhY3QiLCBNUERfSW5leGFjdCwgTlVMTH0sCisgIHsiUm91bmRlZCIsICJkZWNpbWFsLlJvdW5kZWQiLCBNUERfUm91bmRlZCwgTlVMTH0sCisgIHsiQ2xhbXBlZCIsICJkZWNpbWFsLkNsYW1wZWQiLCBNUERfQ2xhbXBlZCwgTlVMTH0sCisgIHtOVUxMfQorfTsKKworLyogRXhjZXB0aW9ucyB0aGF0IGluaGVyaXQgZnJvbSBJbnZhbGlkT3BlcmF0aW9uICovCitzdGF0aWMgRGVjQ29uZE1hcCBjb25kX21hcFtdID0geworICB7IkludmFsaWRPcGVyYXRpb24iLCAiZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uIiwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBOVUxMfSwKKyAgeyJDb252ZXJzaW9uU3ludGF4IiwgImRlY2ltYWwuQ29udmVyc2lvblN5bnRheCIsIE1QRF9Db252ZXJzaW9uX3N5bnRheCwgTlVMTH0sCisgIHsiRGl2aXNpb25JbXBvc3NpYmxlIiwgImRlY2ltYWwuRGl2aXNpb25JbXBvc3NpYmxlIiwgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUsIE5VTEx9LAorICB7IkRpdmlzaW9uVW5kZWZpbmVkIiwgImRlY2ltYWwuRGl2aXNpb25VbmRlZmluZWQiLCBNUERfRGl2aXNpb25fdW5kZWZpbmVkLCBOVUxMfSwKKyAgeyJJbnZhbGlkQ29udGV4dCIsICJkZWNpbWFsLkludmFsaWRDb250ZXh0IiwgTVBEX0ludmFsaWRfY29udGV4dCwgTlVMTH0sCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorICB7Ik1hbGxvY0Vycm9yIiwgImRlY2ltYWwuTWFsbG9jRXJyb3IiLCBNUERfTWFsbG9jX2Vycm9yLCBOVUxMfSwKKyNlbmRpZgorICB7TlVMTH0KK307CisKK3N0YXRpYyBjb25zdCBjaGFyICpkZWNfc2lnbmFsX3N0cmluZ1tNUERfTlVNX0ZMQUdTXSA9IHsKKyAgICAiQ2xhbXBlZCIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJEaXZpc2lvbkJ5WmVybyIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkluZXhhY3QiLAorICAgICJJbnZhbGlkT3BlcmF0aW9uIiwKKyAgICAiSW52YWxpZE9wZXJhdGlvbiIsCisgICAgIkludmFsaWRPcGVyYXRpb24iLAorICAgICJGbG9hdE9wZXJhdGlvbiIsCisgICAgIk92ZXJmbG93IiwKKyAgICAiUm91bmRlZCIsCisgICAgIlN1Ym5vcm1hbCIsCisgICAgIlVuZGVyZmxvdyIsCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqaW52YWxpZF9yb3VuZGluZ19lcnIgPQorInZhbGlkIHZhbHVlcyBmb3Igcm91bmRpbmcgYXJlOlxuXAorICBbUk9VTkRfQ0VJTElORywgUk9VTkRfRkxPT1IsIFJPVU5EX1VQLCBST1VORF9ET1dOLFxuXAorICAgUk9VTkRfSEFMRl9VUCwgUk9VTkRfSEFMRl9ET1dOLCBST1VORF9IQUxGX0VWRU4sXG5cCisgICBST1VORF8wNVVQXSI7CisKK3N0YXRpYyBjb25zdCBjaGFyICppbnZhbGlkX3NpZ25hbHNfZXJyID0KKyJ2YWxpZCB2YWx1ZXMgZm9yIHNpZ25hbHMgYXJlOlxuXAorICBbSW52YWxpZE9wZXJhdGlvbiwgRmxvYXRPcGVyYXRpb24sIERpdmlzaW9uQnlaZXJvLFxuXAorICAgT3ZlcmZsb3csIFVuZGVyZmxvdywgU3Vibm9ybWFsLCBJbmV4YWN0LCBSb3VuZGVkLFxuXAorICAgQ2xhbXBlZF0iOworCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIGNvbnN0IGNoYXIgKmludmFsaWRfZmxhZ3NfZXJyID0KKyJ2YWxpZCB2YWx1ZXMgZm9yIF9mbGFncyBvciBfdHJhcHMgYXJlOlxuXAorICBzaWduYWxzOlxuXAorICAgIFtEZWNJRUVFSW52YWxpZE9wZXJhdGlvbiwgRGVjRmxvYXRPcGVyYXRpb24sIERlY0RpdmlzaW9uQnlaZXJvLFxuXAorICAgICBEZWNPdmVyZmxvdywgRGVjVW5kZXJmbG93LCBEZWNTdWJub3JtYWwsIERlY0luZXhhY3QsIERlY1JvdW5kZWQsXG5cCisgICAgIERlY0NsYW1wZWRdXG5cCisgIGNvbmRpdGlvbnMgd2hpY2ggdHJpZ2dlciBEZWNJRUVFSW52YWxpZE9wZXJhdGlvbjpcblwKKyAgICBbRGVjSW52YWxpZE9wZXJhdGlvbiwgRGVjQ29udmVyc2lvblN5bnRheCwgRGVjRGl2aXNpb25JbXBvc3NpYmxlLFxuXAorICAgICBEZWNEaXZpc2lvblVuZGVmaW5lZCwgRGVjRnB1RXJyb3IsIERlY0ludmFsaWRDb250ZXh0LCBEZWNNYWxsb2NFcnJvcl0iOworI2VuZGlmCisKK3N0YXRpYyBpbnQKK3ZhbHVlX2Vycm9yX2ludChjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gLTE7Cit9CisKKyNpZmRlZiBDT05GSUdfMzIKK3N0YXRpYyBQeU9iamVjdCAqCit2YWx1ZV9lcnJvcl9wdHIoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgbWVzZyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworc3RhdGljIGludAordHlwZV9lcnJvcl9pbnQoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0eXBlX2Vycm9yX3B0cihjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc2cpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50CitydW50aW1lX2Vycm9yX2ludChjb25zdCBjaGFyICptZXNnKQoreworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1lc2cpOworICAgIHJldHVybiAtMTsKK30KKyNkZWZpbmUgSU5URVJOQUxfRVJST1JfSU5UKGZ1bmNuYW1lKSBcCisgICAgcmV0dXJuIHJ1bnRpbWVfZXJyb3JfaW50KCJpbnRlcm5hbCBlcnJvciBpbiAiIGZ1bmNuYW1lKQorCitzdGF0aWMgUHlPYmplY3QgKgorcnVudGltZV9lcnJvcl9wdHIoY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBtZXNnKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKyNkZWZpbmUgSU5URVJOQUxfRVJST1JfUFRSKGZ1bmNuYW1lKSBcCisgICAgcmV0dXJuIHJ1bnRpbWVfZXJyb3JfcHRyKCJpbnRlcm5hbCBlcnJvciBpbiAiIGZ1bmNuYW1lKQorCitzdGF0aWMgdm9pZAorZGVjX3RyYXBoYW5kbGVyKG1wZF9jb250ZXh0X3QgKmN0eCBVTlVTRUQpIC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KK3sgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIHJldHVybjsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmxhZ3NfYXNfZXhjZXB0aW9uKHVpbnQzMl90IGZsYWdzKQoreworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICByZXR1cm4gY20tPmV4OworICAgICAgICB9CisgICAgfQorCisgICAgSU5URVJOQUxfRVJST1JfUFRSKCJmbGFnc19hc19leGNlcHRpb24iKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworfQorCitQeV9MT0NBTF9JTkxJTkUodWludDMyX3QpCitleGNlcHRpb25fYXNfZmxhZyhQeU9iamVjdCAqZXgpCit7CisgICAgRGVjQ29uZE1hcCAqY207CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoY20tPmV4ID09IGV4KSB7CisgICAgICAgICAgICByZXR1cm4gY20tPmZsYWc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsIGludmFsaWRfc2lnbmFsc19lcnIpOworICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZmxhZ3NfYXNfbGlzdCh1aW50MzJfdCBmbGFncykKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBEZWNDb25kTWFwICpjbTsKKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChjbSA9IGNvbmRfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGlmIChmbGFncyZjbS0+ZmxhZykgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgY20tPmV4KSA8IDApIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGZvciAoY20gPSBzaWduYWxfbWFwKzE7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgaWYgKGZsYWdzJmNtLT5mbGFnKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBjbS0+ZXgpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbGlzdDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGxpc3QpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsc19hc19saXN0KHVpbnQzMl90IGZsYWdzKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIERlY0NvbmRNYXAgKmNtOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGNtID0gc2lnbmFsX21hcDsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBpZiAoZmxhZ3MmY20tPmZsYWcpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIGNtLT5leCkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK3N0YXRpYyB1aW50MzJfdAorbGlzdF9hc19mbGFncyhQeU9iamVjdCAqbGlzdCkKK3sKKyAgICBQeU9iamVjdCAqaXRlbTsKKyAgICB1aW50MzJfdCBmbGFncywgeDsKKyAgICBQeV9zc2l6ZV90IG4sIGo7CisKKyAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKGxpc3QpKTsKKworICAgIG4gPSBQeUxpc3RfU2l6ZShsaXN0KTsKKyAgICBmbGFncyA9IDA7CisgICAgZm9yIChqID0gMDsgaiA8IG47IGorKykgeworICAgICAgICBpdGVtID0gUHlMaXN0X0dldEl0ZW0obGlzdCwgaik7CisgICAgICAgIHggPSBleGNlcHRpb25fYXNfZmxhZyhpdGVtKTsKKyAgICAgICAgaWYgKHggJiBERUNfRVJST1JTKSB7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQorICAgICAgICBmbGFncyB8PSB4OworICAgIH0KKworICAgIHJldHVybiBmbGFnczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZsYWdzX2FzX2RpY3QodWludDMyX3QgZmxhZ3MpCit7CisgICAgRGVjQ29uZE1hcCAqY207CisgICAgUHlPYmplY3QgKmRpY3Q7CisKKyAgICBkaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChjbSA9IHNpZ25hbF9tYXA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmIgPSBmbGFncyZjbS0+ZmxhZyA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGRpY3QsIGNtLT5leCwgYikgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkaWN0OworfQorCitzdGF0aWMgdWludDMyX3QKK2RpY3RfYXNfZmxhZ3MoUHlPYmplY3QgKnZhbCkKK3sKKyAgICBQeU9iamVjdCAqYjsKKyAgICBEZWNDb25kTWFwICpjbTsKKyAgICB1aW50MzJfdCBmbGFncyA9IDA7CisgICAgaW50IHg7CisKKyAgICBpZiAoIVB5RGljdF9DaGVjayh2YWwpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIHNpZ25hbCBkaWN0Iik7CisgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgIH0KKworICAgIGlmIChQeURpY3RfU2l6ZSh2YWwpICE9IFNJR05BTF9NQVBfTEVOKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIHNpZ25hbCBkaWN0Iik7CisgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgIH0KKworICAgIGZvciAoY20gPSBzaWduYWxfbWFwOyBjbS0+bmFtZSAhPSBOVUxMOyBjbSsrKSB7CisgICAgICAgIGIgPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcih2YWwsIGNtLT5leCk7CisgICAgICAgIGlmIChiID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERFQ19FUlJfT0NDVVJSRUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgImludmFsaWQgc2lnbmFsIGRpY3QiKTsKKyAgICAgICAgICAgIHJldHVybiBERUNfSU5WQUxJRF9TSUdOQUxTOworICAgICAgICB9CisKKyAgICAgICAgeCA9IFB5T2JqZWN0X0lzVHJ1ZShiKTsKKyAgICAgICAgaWYgKHggPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gREVDX0VSUl9PQ0NVUlJFRDsKKyAgICAgICAgfQorICAgICAgICBpZiAoeCA9PSAxKSB7CisgICAgICAgICAgICBmbGFncyB8PSBjbS0+ZmxhZzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmbGFnczsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyB1aW50MzJfdAorbG9uZ19hc19mbGFncyhQeU9iamVjdCAqdikKK3sKKyAgICBsb25nIHg7CisKKyAgICB4ID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBERUNfRVJSX09DQ1VSUkVEOworICAgIH0KKyAgICBpZiAoeCA8IDAgfHwgeCA+IChsb25nKU1QRF9NYXhfc3RhdHVzKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIGludmFsaWRfZmxhZ3NfZXJyKTsKKyAgICAgICAgcmV0dXJuIERFQ19JTlZBTElEX1NJR05BTFM7CisgICAgfQorCisgICAgcmV0dXJuIHg7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorZGVjX2FkZHN0YXR1cyhQeU9iamVjdCAqY29udGV4dCwgdWludDMyX3Qgc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChjb250ZXh0KTsKKworICAgIGN0eC0+c3RhdHVzIHw9IHN0YXR1czsKKyAgICBpZiAoc3RhdHVzICYgKGN0eC0+dHJhcHN8TVBEX01hbGxvY19lcnJvcikpIHsKKyAgICAgICAgUHlPYmplY3QgKmV4LCAqc2lnbGlzdDsKKworICAgICAgICBpZiAoc3RhdHVzICYgTVBEX01hbGxvY19lcnJvcikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgZXggPSBmbGFnc19hc19leGNlcHRpb24oY3R4LT50cmFwcyZzdGF0dXMpOworICAgICAgICBpZiAoZXggPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDE7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgICAgICBzaWdsaXN0ID0gZmxhZ3NfYXNfbGlzdChjdHgtPnRyYXBzJnN0YXR1cyk7CisgICAgICAgIGlmIChzaWdsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KGV4LCBzaWdsaXN0KTsKKyAgICAgICAgUHlfREVDUkVGKHNpZ2xpc3QpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpZ25hbERpY3QgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUaGUgU2lnbmFsRGljdCBpcyBhIE11dGFibGVNYXBwaW5nIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZQorICAgbXBkX2NvbnRleHRfdCBmbGFncywgd2hpY2ggcmVzaWRlIGluIHRoZSBjb250ZXh0IG9iamVjdC4gV2hlbiBhCisgICBuZXcgY29udGV4dCBpcyBjcmVhdGVkLCBjb250ZXh0LnRyYXBzIGFuZCBjb250ZXh0LmZsYWdzIGFyZQorICAgaW5pdGlhbGl6ZWQgdG8gbmV3IFNpZ25hbERpY3RzLiBPbmNlIGEgU2lnbmFsRGljdCBpcyB0aWVkIHRvCisgICBhIGNvbnRleHQsIGl0IGNhbm5vdCBiZSBkZWxldGVkLiAqLworCitzdGF0aWMgaW50CitzaWduYWxkaWN0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCwgUHlPYmplY3QgKmt3ZHMgVU5VU0VEKQoreworICAgIFNkRmxhZ0FkZHIoc2VsZikgPSBOVUxMOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorc2lnbmFsZGljdF9sZW4oUHlPYmplY3QgKnNlbGYgVU5VU0VEKQoreworICAgIHJldHVybiBTSUdOQUxfTUFQX0xFTjsKK30KKworc3RhdGljIFB5T2JqZWN0ICpTaWduYWxUdXBsZTsKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X2l0ZXIoUHlPYmplY3QgKnNlbGYgVU5VU0VEKQoreworICAgIHJldHVybiBQeVR1cGxlX1R5cGUudHBfaXRlcihTaWduYWxUdXBsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X2dldGl0ZW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCit7CisgICAgdWludDMyX3QgZmxhZzsKKworICAgIGZsYWcgPSBleGNlcHRpb25fYXNfZmxhZyhrZXkpOworICAgIGlmIChmbGFnICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gU2RGbGFncyhzZWxmKSZmbGFnID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7Cit9CisKK3N0YXRpYyBpbnQKK3NpZ25hbGRpY3Rfc2V0aXRlbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIHVpbnQzMl90IGZsYWc7CisgICAgaW50IHg7CisKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KCJzaWduYWwga2V5cyBjYW5ub3QgYmUgZGVsZXRlZCIpOworICAgIH0KKworICAgIGZsYWcgPSBleGNlcHRpb25fYXNfZmxhZyhrZXkpOworICAgIGlmIChmbGFnICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgeCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgaWYgKHggPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoeCA9PSAxKSB7CisgICAgICAgIFNkRmxhZ3Moc2VsZikgfD0gZmxhZzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFNkRmxhZ3Moc2VsZikgJj0gfmZsYWc7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxkaWN0X3JlcHIoUHlPYmplY3QgKnNlbGYpCit7CisgICAgRGVjQ29uZE1hcCAqY207CisgICAgY29uc3QgY2hhciAqbltTSUdOQUxfTUFQX0xFTl07IC8qIG5hbWUgKi8KKyAgICBjb25zdCBjaGFyICpiW1NJR05BTF9NQVBfTEVOXTsgLyogYm9vbCAqLworICAgIGludCBpOworCisgICAgYXNzZXJ0KFNJR05BTF9NQVBfTEVOID09IDkpOworCisgICAgZm9yIChjbT1zaWduYWxfbWFwLCBpPTA7IGNtLT5uYW1lICE9IE5VTEw7IGNtKyssIGkrKykgeworICAgICAgICBuW2ldID0gY20tPmZxbmFtZTsKKyAgICAgICAgYltpXSA9IFNkRmxhZ3Moc2VsZikmY20tPmZsYWcgPyAiVHJ1ZSIgOiAiRmFsc2UiOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICJ7PGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgIgorICAgICAgICAgIjxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzLCA8Y2xhc3MgJyVzJz46JXMsICIKKyAgICAgICAgICI8Y2xhc3MgJyVzJz46JXMsIDxjbGFzcyAnJXMnPjolcywgPGNsYXNzICclcyc+OiVzfSIsCisgICAgICAgICAgICBuWzBdLCBiWzBdLCBuWzFdLCBiWzFdLCBuWzJdLCBiWzJdLAorICAgICAgICAgICAgblszXSwgYlszXSwgbls0XSwgYls0XSwgbls1XSwgYls1XSwKKyAgICAgICAgICAgIG5bNl0sIGJbNl0sIG5bN10sIGJbN10sIG5bOF0sIGJbOF0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsZGljdF9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gUHlfTm90SW1wbGVtZW50ZWQ7CisKKyAgICBhc3NlcnQoUHlEZWNTaWduYWxEaWN0X0NoZWNrKHYpKTsKKworICAgIGlmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgeworICAgICAgICBpZiAoUHlEZWNTaWduYWxEaWN0X0NoZWNrKHcpKSB7CisgICAgICAgICAgICByZXMgPSAoU2RGbGFncyh2KT09U2RGbGFncyh3KSkgXiAob3A9PVB5X05FKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeURpY3RfQ2hlY2sodykpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gZGljdF9hc19mbGFncyh3KTsKKyAgICAgICAgICAgIGlmIChmbGFncyAmIERFQ19FUlJPUlMpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBERUNfSU5WQUxJRF9TSUdOQUxTKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIG5vbi1jb21wYXJhYmxlOiBQeV9Ob3RJbXBsZW1lbnRlZCAqLworICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzID0gKFNkRmxhZ3Modik9PWZsYWdzKSBeIChvcD09UHlfTkUpID8gUHlfVHJ1ZSA6IFB5X0ZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbGRpY3RfY29weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIHJldHVybiBmbGFnc19hc19kaWN0KFNkRmxhZ3Moc2VsZikpOworfQorCisKK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIHNpZ25hbGRpY3RfYXNfbWFwcGluZyA9IHsKKyAgICAobGVuZnVuYylzaWduYWxkaWN0X2xlbiwgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpc2lnbmFsZGljdF9nZXRpdGVtLCAgIC8qIG1wX3N1YnNjcmlwdCAqLworICAgIChvYmpvYmphcmdwcm9jKXNpZ25hbGRpY3Rfc2V0aXRlbSAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgc2lnbmFsZGljdF9tZXRob2RzW10gPSB7CisgICAgeyAiY29weSIsIChQeUNGdW5jdGlvbilzaWduYWxkaWN0X2NvcHksIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY1NpZ25hbERpY3RNaXhpbl9UeXBlID0KK3sKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoMCwgMCkKKyAgICAiZGVjaW1hbC5TaWduYWxEaWN0TWl4aW4iLCAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5RGVjU2lnbmFsRGljdE9iamVjdCksICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAoZ2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgKHNldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKSBzaWduYWxkaWN0X3JlcHIsICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJnNpZ25hbGRpY3RfYXNfbWFwcGluZywgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCwgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgKHJlcHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIChQeUJ1ZmZlclByb2NzICopIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFfAorICAgIFB5X1RQRkxBR1NfSEFWRV9HQywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIHNpZ25hbGRpY3RfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAoZ2V0aXRlcmZ1bmMpc2lnbmFsZGljdF9pdGVyLCAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBzaWduYWxkaWN0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYylzaWduYWxkaWN0X2luaXQsICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIFB5VHlwZV9HZW5lcmljTmV3LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QsIFBhcnQgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgRGVjX0NPTlRFWFRfR0VUX1NTSVpFKG1lbSkgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjb250ZXh0X2dldCMjbWVtKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobXBkX2dldCMjbWVtKENUWChzZWxmKSkpOyBcCit9CisKKyNkZWZpbmUgRGVjX0NPTlRFWFRfR0VUX1VMT05HKG1lbSkgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2NvbnRleHRfZ2V0IyNtZW0oUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKSAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhtcGRfZ2V0IyNtZW0oQ1RYKHNlbGYpKSk7IFwKK30KKworRGVjX0NPTlRFWFRfR0VUX1NTSVpFKHByZWMpCitEZWNfQ09OVEVYVF9HRVRfU1NJWkUoZW1heCkKK0RlY19DT05URVhUX0dFVF9TU0laRShlbWluKQorRGVjX0NPTlRFWFRfR0VUX1NTSVpFKHJvdW5kKQorRGVjX0NPTlRFWFRfR0VUX1NTSVpFKGNsYW1wKQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorRGVjX0NPTlRFWFRfR0VUX1VMT05HKHRyYXBzKQorRGVjX0NPTlRFWFRfR0VUX1VMT05HKHN0YXR1cykKKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRjYXBpdGFscyhQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhDdHhDYXBzKHNlbGYpKTsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGFsbGNyKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1wZF9nZXRjcihDVFgoc2VsZikpKTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9nZXRldGlueShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG1wZF9ldGlueShDVFgoc2VsZikpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfZ2V0ZXRvcChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KG1wZF9ldG9wKENUWChzZWxmKSkpOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHByZWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRwcmVjKGN0eCwgeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgcHJlYyBpcyBbMSwgTUFYX1BSRUNdIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0ZW1pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldGVtaW4oY3R4LCB4KSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciBFbWluIGlzIFtNSU5fRU1JTiwgMF0iKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRlbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0ZW1heChjdHgsIHgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIEVtYXggaXMgWzAsIE1BWF9FTUFYXSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgQ09ORklHXzMyCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF91bnNhZmVfc2V0cHJlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChzZWxmKTsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHggPCAxIHx8IHggPiAxMDcwMDAwMDAwTCkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfcHRyKAorICAgICAgICAgICAgInZhbGlkIHJhbmdlIGZvciB1bnNhZmUgcHJlYyBpcyBbMSwgMTA3MDAwMDAwMF0iKTsKKyAgICB9CisKKyAgICBjdHgtPnByZWMgPSB4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF91bnNhZmVfc2V0ZW1pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChzZWxmKTsKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHggPCAtMTA3MDAwMDAwMEwgfHwgeCA+IDApIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX3B0cigKKyAgICAgICAgICAgICJ2YWxpZCByYW5nZSBmb3IgdW5zYWZlIGVtaW4gaXMgWy0xMDcwMDAwMDAwLCAwXSIpOworICAgIH0KKworICAgIGN0eC0+ZW1pbiA9IHg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X3Vuc2FmZV9zZXRlbWF4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKHNlbGYpOworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoeCA8IDAgfHwgeCA+IDEwNzAwMDAwMDBMKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9wdHIoCisgICAgICAgICAgICAidmFsaWQgcmFuZ2UgZm9yIHVuc2FmZSBlbWF4IGlzIFswLCAxMDcwMDAwMDAwXSIpOworICAgIH0KKworICAgIGN0eC0+ZW1heCA9IHg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorY29udGV4dF9zZXRyb3VuZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgQk9VTkRTX0NIRUNLKHgsIElOVF9NSU4sIElOVF9NQVgpOworCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRyb3VuZChjdHgsIChpbnQpeCkpIHsKKyAgICAgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KGludmFsaWRfcm91bmRpbmdfZXJyKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorY29udGV4dF9zZXRjYXBpdGFscyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfc3NpemVfdCB4OworCisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3QodmFsdWUpOworICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICh4ICE9IDAgJiYgeCAhPSAxKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoCisgICAgICAgICAgICAidmFsaWQgdmFsdWVzIGZvciBjYXBpdGFscyBhcmUgMCBvciAxIik7CisgICAgfQorICAgIEN0eENhcHMoc2VsZikgPSAoaW50KXg7CisKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0dHJhcHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgZmxhZ3MgPSBsb25nX2FzX2ZsYWdzKHZhbHVlKTsKKyAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHRyYXBzKGN0eCwgZmxhZ3MpKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX0lOVCgiY29udGV4dF9zZXR0cmFwcyIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0dHJhcHNfbGlzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbGlzdF9hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXR0cmFwcyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0dHJhcHNfbGlzdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X3NldHRyYXBzX2RpY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBpZiAoUHlEZWNTaWduYWxEaWN0X0NoZWNrKHZhbHVlKSkgeworICAgICAgICBmbGFncyA9IFNkRmxhZ3ModmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmxhZ3MgPSBkaWN0X2FzX2ZsYWdzKHZhbHVlKTsKKyAgICAgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXR0cmFwcyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0dHJhcHNfZGljdCIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIGludAorY29udGV4dF9zZXRzdGF0dXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIHVpbnQzMl90IGZsYWdzOworCisgICAgZmxhZ3MgPSBsb25nX2FzX2ZsYWdzKHZhbHVlKTsKKyAgICBpZiAoZmxhZ3MgJiBERUNfRVJST1JTKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBjdHggPSBDVFgoc2VsZik7CisgICAgaWYgKCFtcGRfcXNldHN0YXR1cyhjdHgsIGZsYWdzKSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9JTlQoImNvbnRleHRfc2V0c3RhdHVzIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKworc3RhdGljIGludAorY29udGV4dF9zZXRzdGF0dXNfbGlzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKyAgICB1aW50MzJfdCBmbGFnczsKKworICAgIGZsYWdzID0gbGlzdF9hc19mbGFncyh2YWx1ZSk7CisgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRzdGF0dXMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHN0YXR1c19saXN0Iik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0c3RhdHVzX2RpY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgdWludDMyX3QgZmxhZ3M7CisKKyAgICBpZiAoUHlEZWNTaWduYWxEaWN0X0NoZWNrKHZhbHVlKSkgeworICAgICAgICBmbGFncyA9IFNkRmxhZ3ModmFsdWUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmxhZ3MgPSBkaWN0X2FzX2ZsYWdzKHZhbHVlKTsKKyAgICAgICAgaWYgKGZsYWdzICYgREVDX0VSUk9SUykgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRzdGF0dXMoY3R4LCBmbGFncykpIHsKKyAgICAgICAgSU5URVJOQUxfRVJST1JfSU5UKCJjb250ZXh0X3NldHN0YXR1c19kaWN0Iik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0Y2xhbXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY2xvc3VyZSBVTlVTRUQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworICAgIG1wZF9zc2l6ZV90IHg7CisKKyAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh2YWx1ZSk7CisgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIEJPVU5EU19DSEVDSyh4LCBJTlRfTUlOLCBJTlRfTUFYKTsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKyAgICBpZiAoIW1wZF9xc2V0Y2xhbXAoY3R4LCAoaW50KXgpKSB7CisgICAgICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoInZhbGlkIHZhbHVlcyBmb3IgY2xhbXAgYXJlIDAgb3IgMSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisjaWZkZWYgRVhUUkFfRlVOQ1RJT05BTElUWQorc3RhdGljIGludAorY29udGV4dF9zZXRhbGxjcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgbXBkX3NzaXplX3QgeDsKKworICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHZhbHVlKTsKKyAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgQk9VTkRTX0NIRUNLKHgsIElOVF9NSU4sIElOVF9NQVgpOworCisgICAgY3R4ID0gQ1RYKHNlbGYpOworICAgIGlmICghbXBkX3FzZXRjcihjdHgsIChpbnQpeCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgidmFsaWQgdmFsdWVzIGZvciBfYWxsY3IgYXJlIDAgb3IgMSIpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2dldGF0dHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAidHJhcHMiKSA9PSAwKSB7CisgICAgICAgICAgICByZXR2YWwgPSAoKFB5RGVjQ29udGV4dE9iamVjdCAqKXNlbGYpLT50cmFwczsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihyZXR2YWwpOworICAgICAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgImZsYWdzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dmFsID0gKChQeURlY0NvbnRleHRPYmplY3QgKilzZWxmKS0+ZmxhZ3M7CisgICAgICAgICAgICBQeV9JTkNSRUYocmV0dmFsKTsKKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoc2VsZiwgbmFtZSk7Cit9CisKK3N0YXRpYyBpbnQKK2NvbnRleHRfc2V0YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAiY29udGV4dCBhdHRyaWJ1dGVzIGNhbm5vdCBiZSBkZWxldGVkIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCAidHJhcHMiKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dF9zZXR0cmFwc19kaWN0KHNlbGYsIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgImZsYWdzIikgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHRfc2V0c3RhdHVzX2RpY3Qoc2VsZiwgdmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKHNlbGYsIG5hbWUsIHZhbHVlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfY2xlYXJfdHJhcHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgQ1RYKHNlbGYpLT50cmFwcyA9IDA7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X2NsZWFyX2ZsYWdzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIENUWChzZWxmKS0+c3RhdHVzID0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2RlZmluZSBERUNfREZMVF9FTUFYIDk5OTk5OQorI2RlZmluZSBERUNfREZMVF9FTUlOIC05OTk5OTkKKworc3RhdGljIG1wZF9jb250ZXh0X3QgZGZsdF9jdHggPSB7CisgIDI4LCBERUNfREZMVF9FTUFYLCBERUNfREZMVF9FTUlOLAorICBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbnxNUERfRGl2aXNpb25fYnlfemVyb3xNUERfT3ZlcmZsb3csCisgIDAsIDAsIE1QRF9ST1VORF9IQUxGX0VWRU4sIDAsIDEKK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb250ZXh0X25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCwgUHlPYmplY3QgKmt3ZHMgVU5VU0VEKQoreworICAgIFB5RGVjQ29udGV4dE9iamVjdCAqc2VsZiA9IE5VTEw7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4OworCisgICAgaWYgKHR5cGUgPT0gJlB5RGVjQ29udGV4dF9UeXBlKSB7CisgICAgICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoUHlEZWNDb250ZXh0T2JqZWN0LCAmUHlEZWNDb250ZXh0X1R5cGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc2VsZiA9IChQeURlY0NvbnRleHRPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICB9CisKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYtPnRyYXBzID0gUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKilQeURlY1NpZ25hbERpY3RfVHlwZSwgTlVMTCk7CisgICAgaWYgKHNlbGYtPnRyYXBzID09IE5VTEwpIHsKKyAgICAgICAgc2VsZi0+ZmxhZ3MgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWxmLT5mbGFncyA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopUHlEZWNTaWduYWxEaWN0X1R5cGUsIE5VTEwpOworICAgIGlmIChzZWxmLT5mbGFncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgY3R4ID0gQ1RYKHNlbGYpOworCisgICAgaWYgKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSkgeworICAgICAgICAqY3R4ID0gKkNUWChkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKmN0eCA9IGRmbHRfY3R4OworICAgIH0KKworICAgIFNkRmxhZ0FkZHIoc2VsZi0+dHJhcHMpID0gJmN0eC0+dHJhcHM7CisgICAgU2RGbGFnQWRkcihzZWxmLT5mbGFncykgPSAmY3R4LT5zdGF0dXM7CisKKyAgICBDdHhDYXBzKHNlbGYpID0gMTsKKyNpZm5kZWYgV0lUSE9VVF9USFJFQURTCisgICAgc2VsZi0+dHN0YXRlID0gTlVMTDsKKyNlbmRpZgorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7Cit9CisKK3N0YXRpYyB2b2lkCitjb250ZXh0X2RlYWxsb2MoUHlEZWNDb250ZXh0T2JqZWN0ICpzZWxmKQoreworI2lmbmRlZiBXSVRIT1VUX1RIUkVBRFMKKyAgICBpZiAoc2VsZiA9PSBjYWNoZWRfY29udGV4dCkgeworICAgICAgICBjYWNoZWRfY29udGV4dCA9IE5VTEw7CisgICAgfQorI2VuZGlmCisgICAgUHlfWERFQ1JFRihzZWxmLT50cmFwcyk7CisgICAgUHlfWERFQ1JFRihzZWxmLT5mbGFncyk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIGludAorZ2V0cm91bmQoUHlPYmplY3QgKnYpCit7CisgICAgY29uc3QgY2hhciAqczsKKyAgICBsb25nIHg7CisgICAgaW50IGk7CisKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHggPSBQeUxvbmdfQXNMb25nKHYpOworICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgQk9VTkRTX0NIRUNLKHgsIDAsIElOVF9NQVgpOworICAgICAgICByZXR1cm4gKGludCl4OworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IE1QRF9ST1VORF9HVUFSRDsgaSsrKSB7CisgICAgICAgICAgICBzID0gbXBkX3JvdW5kX3N0cmluZ1tpXTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh2LCBzKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHlwZV9lcnJvcl9pbnQoImludmFsaWQgcm91bmRpbmcgbW9kZSIpOworfQorCitzdGF0aWMgaW50Citjb250ZXh0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAicHJlYyIsICJyb3VuZGluZyIsICJFbWluIiwgIkVtYXgiLCAiY2FwaXRhbHMiLCAiY2xhbXAiLAorICAgICAgImZsYWdzIiwgInRyYXBzIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKnJvdW5kaW5nID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdHJhcHMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpzdGF0dXMgPSBOVUxMOworICAgIG1wZF9jb250ZXh0X3QgKmN0eCwgdDsKKyAgICBpbnQgY2FwaXRhbHMgPSAxOworICAgIGludCByZXQ7CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisgICAgY3R4ID0gQ1RYKHNlbGYpOworCisgICAgdCA9ICpjdHg7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCisgICAgICAgICAgICBhcmdzLCBrd2RzLAorICAgICAgICAgICAgInxuT25uaWlPTyIsIGt3bGlzdCwKKyAgICAgICAgICAgICZ0LnByZWMsICZyb3VuZGluZywgJnQuZW1pbiwgJnQuZW1heCwgJmNhcGl0YWxzLCAmdC5jbGFtcCwKKyAgICAgICAgICAgICZzdGF0dXMsICZ0cmFwcworICAgICAgICAgKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChyb3VuZGluZyAhPSBOVUxMKSB7CisgICAgICAgIHQucm91bmQgPSBnZXRyb3VuZChyb3VuZGluZyk7CisgICAgICAgIGlmICh0LnJvdW5kIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtcGRfcXNldHByZWMoY3R4LCB0LnByZWMpIHx8CisgICAgICAgICFtcGRfcXNldGVtaW4oY3R4LCB0LmVtaW4pIHx8CisgICAgICAgICFtcGRfcXNldGVtYXgoY3R4LCB0LmVtYXgpIHx8CisgICAgICAgICFtcGRfcXNldGNsYW1wKGN0eCwgdC5jbGFtcCkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlX2Vycm9yX2ludCgiaW52YWxpZCBjb250ZXh0Iik7CisgICAgfQorICAgIGlmICghbXBkX3FzZXRyb3VuZChjdHgsIHQucm91bmQpIHx8CisgICAgICAgICFtcGRfcXNldHRyYXBzKGN0eCwgdC50cmFwcykgfHwKKyAgICAgICAgIW1wZF9xc2V0c3RhdHVzKGN0eCwgdC5zdGF0dXMpKSB7CisgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX2ludCgiaW52YWxpZCBjb250ZXh0Iik7CisgICAgfQorCisgICAgaWYgKGNhcGl0YWxzICE9IDAgJiYgY2FwaXRhbHMgIT0gMSkgeworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KCJpbnZhbGlkIGNvbnRleHQiKTsKKyAgICB9CisgICAgQ3R4Q2FwcyhzZWxmKSA9IGNhcGl0YWxzOworCisgICAgaWYgKHRyYXBzICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5TGlzdF9DaGVjayh0cmFwcykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0dHJhcHNfbGlzdChzZWxmLCB0cmFwcyk7CisgICAgICAgIH0KKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgICAgICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayh0cmFwcykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0dHJhcHMoc2VsZiwgdHJhcHMsIE5VTEwpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXQgPSBjb250ZXh0X3NldHRyYXBzX2RpY3Qoc2VsZiwgdHJhcHMpOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICB9CisgICAgfQorICAgIGlmIChzdGF0dXMgIT0gTlVMTCkgeworICAgICAgICBpZiAoUHlMaXN0X0NoZWNrKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0c3RhdHVzX2xpc3Qoc2VsZiwgc3RhdHVzKTsKKyAgICAgICAgfQorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgICAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0c3RhdHVzKHNlbGYsIHN0YXR1cywgTlVMTCk7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldCA9IGNvbnRleHRfc2V0c3RhdHVzX2RpY3Qoc2VsZiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY29udGV4dF9yZXByKFB5RGVjQ29udGV4dE9iamVjdCAqc2VsZikKK3sKKyAgICBtcGRfY29udGV4dF90ICpjdHg7CisgICAgY2hhciBmbGFnc1tNUERfTUFYX1NJR05BTF9MSVNUXTsKKyAgICBjaGFyIHRyYXBzW01QRF9NQVhfU0lHTkFMX0xJU1RdOworICAgIGludCBuLCBtZW07CisKKyAgICBhc3NlcnQoUHlEZWNDb250ZXh0X0NoZWNrKHNlbGYpKTsKKyAgICBjdHggPSBDVFgoc2VsZik7CisKKyAgICBtZW0gPSBNUERfTUFYX1NJR05BTF9MSVNUOworICAgIG4gPSBtcGRfbHNucHJpbnRfc2lnbmFscyhmbGFncywgbWVtLCBjdHgtPnN0YXR1cywgZGVjX3NpZ25hbF9zdHJpbmcpOworICAgIGlmIChuIDwgMCB8fCBuID49IG1lbSkgeworICAgICAgICBJTlRFUk5BTF9FUlJPUl9QVFIoImNvbnRleHRfcmVwciIpOworICAgIH0KKworICAgIG4gPSBtcGRfbHNucHJpbnRfc2lnbmFscyh0cmFwcywgbWVtLCBjdHgtPnRyYXBzLCBkZWNfc2lnbmFsX3N0cmluZyk7CisgICAgaWYgKG4gPCAwIHx8IG4gPj0gbWVtKSB7CisgICAgICAgIElOVEVSTkFMX0VSUk9SX1BUUigiY29udGV4dF9yZXByIik7CisgICAgfQorCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KAorICAgICAgICAiQ29udGV4dChwcmVjPSV6ZCwgcm91bmRpbmc9JXMsIEVtaW49JXpkLCBFbWF4PSV6ZCwgIgorICAgICAgICAgICAgICAgICJjYXBpdGFscz0lZCwgY2xhbXA9JWQsIGZsYWdzPSVzLCB0cmFwcz0lcykiLAorICAgICAgICAgY3R4LT5wcmVjLCBtcGRfcm91bmRfc3RyaW5nW2N0eC0+cm91bmRdLCBjdHgtPmVtaW4sIGN0eC0+ZW1heCwKKyAgICAgICAgIHNlbGYtPmNhcGl0YWxzLCBjdHgtPmNsYW1wLCBmbGFncywgdHJhcHMpOworfQorCitzdGF0aWMgdm9pZAoraW5pdF9iYXNpY19jb250ZXh0KFB5T2JqZWN0ICp2KQoreworICAgIG1wZF9jb250ZXh0X3QgY3R4ID0gZGZsdF9jdHg7CisKKyAgICBjdHgucHJlYyA9IDk7CisgICAgY3R4LnRyYXBzIHw9IChNUERfVW5kZXJmbG93fE1QRF9DbGFtcGVkKTsKKyAgICBjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9VUDsKKworICAgICpDVFgodikgPSBjdHg7CisgICAgQ3R4Q2Fwcyh2KSA9IDE7Cit9CisKK3N0YXRpYyB2b2lkCitpbml0X2V4dGVuZGVkX2NvbnRleHQoUHlPYmplY3QgKnYpCit7CisgICAgbXBkX2NvbnRleHRfdCBjdHggPSBkZmx0X2N0eDsKKworICAgIGN0eC5wcmVjID0gOTsKKyAgICBjdHgudHJhcHMgPSAwOworCisgICAgKkNUWCh2KSA9IGN0eDsKKyAgICBDdHhDYXBzKHYpID0gMTsKK30KKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKy8qIEZhY3RvcnkgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIElFRUUgaW50ZXJjaGFuZ2UgZm9ybWF0IGNvbnRleHRzICovCitzdGF0aWMgUHlPYmplY3QgKgoraWVlZV9jb250ZXh0KFB5T2JqZWN0ICpkdW1teSBVTlVTRUQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIG1wZF9zc2l6ZV90IGJpdHM7CisgICAgbXBkX2NvbnRleHRfdCBjdHg7CisKKyAgICBiaXRzID0gUHlMb25nX0FzU3NpemVfdCh2KTsKKyAgICBpZiAoYml0cyA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoYml0cyA8PSAwIHx8IGJpdHMgPiBJTlRfTUFYKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChtcGRfaWVlZV9jb250ZXh0KCZjdHgsIChpbnQpYml0cykgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgY29udGV4dCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICAqQ1RYKGNvbnRleHQpID0gY3R4OworCisgICAgcmV0dXJuIGNvbnRleHQ7CisKK2Vycm9yOgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLCB3aXRoIGEgbWF4aW11bSBvZiAlZCIsCisgICAgICAgIE1QRF9JRUVFX0NPTlRFWFRfTUFYX0JJVFMpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfY29weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb3B5OworCisgICAgY29weSA9IFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKTsKKyAgICBpZiAoY29weSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgICpDVFgoY29weSkgPSAqQ1RYKHNlbGYpOworICAgIENUWChjb3B5KS0+bmV3dHJhcCA9IDA7CisgICAgQ3R4Q2Fwcyhjb3B5KSA9IEN0eENhcHMoc2VsZik7CisKKyAgICByZXR1cm4gY29weTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2NvbnRleHRfcmVkdWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmZsYWdzOworICAgIFB5T2JqZWN0ICp0cmFwczsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIG1wZF9jb250ZXh0X3QgKmN0eDsKKworICAgIGN0eCA9IENUWChzZWxmKTsKKworICAgIGZsYWdzID0gc2lnbmFsc19hc19saXN0KGN0eC0+c3RhdHVzKTsKKyAgICBpZiAoZmxhZ3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgdHJhcHMgPSBzaWduYWxzX2FzX2xpc3QoY3R4LT50cmFwcyk7CisgICAgaWYgKHRyYXBzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gUHlfQnVpbGRWYWx1ZSgKKyAgICAgICAgICAgICJPKG5zbm5paU9PKSIsCisgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLAorICAgICAgICAgICAgY3R4LT5wcmVjLCBtcGRfcm91bmRfc3RyaW5nW2N0eC0+cm91bmRdLCBjdHgtPmVtaW4sIGN0eC0+ZW1heCwKKyAgICAgICAgICAgIEN0eENhcHMoc2VsZiksIGN0eC0+Y2xhbXAsIGZsYWdzLCB0cmFwcworICAgICk7CisKKyAgICBQeV9ERUNSRUYoZmxhZ3MpOworICAgIFB5X0RFQ1JFRih0cmFwcyk7CisgICAgcmV0dXJuIHJldDsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgY29udGV4dF9nZXRzZXRzIFtdID0KK3sKKyAgeyAicHJlYyIsIChnZXR0ZXIpY29udGV4dF9nZXRwcmVjLCAoc2V0dGVyKWNvbnRleHRfc2V0cHJlYywgTlVMTCwgTlVMTH0sCisgIHsgIkVtYXgiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0ZW1heCwgKHNldHRlciljb250ZXh0X3NldGVtYXgsIE5VTEwsIE5VTEx9LAorICB7ICJFbWluIiwgKGdldHRlciljb250ZXh0X2dldGVtaW4sIChzZXR0ZXIpY29udGV4dF9zZXRlbWluLCBOVUxMLCBOVUxMfSwKKyAgeyAicm91bmRpbmciLCAoZ2V0dGVyKWNvbnRleHRfZ2V0cm91bmQsIChzZXR0ZXIpY29udGV4dF9zZXRyb3VuZCwgTlVMTCwgTlVMTH0sCisgIHsgImNhcGl0YWxzIiwgKGdldHRlciljb250ZXh0X2dldGNhcGl0YWxzLCAoc2V0dGVyKWNvbnRleHRfc2V0Y2FwaXRhbHMsIE5VTEwsIE5VTEx9LAorICB7ICJjbGFtcCIsIChnZXR0ZXIpY29udGV4dF9nZXRjbGFtcCwgKHNldHRlciljb250ZXh0X3NldGNsYW1wLCBOVUxMLCBOVUxMfSwKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgIHsgIl9hbGxjciIsIChnZXR0ZXIpY29udGV4dF9nZXRhbGxjciwgKHNldHRlciljb250ZXh0X3NldGFsbGNyLCBOVUxMLCBOVUxMfSwKKyAgeyAiX3RyYXBzIiwgKGdldHRlciljb250ZXh0X2dldHRyYXBzLCAoc2V0dGVyKWNvbnRleHRfc2V0dHJhcHMsIE5VTEwsIE5VTEx9LAorICB7ICJfZmxhZ3MiLCAoZ2V0dGVyKWNvbnRleHRfZ2V0c3RhdHVzLCAoc2V0dGVyKWNvbnRleHRfc2V0c3RhdHVzLCBOVUxMLCBOVUxMfSwKKyNlbmRpZgorICB7TlVMTH0KK307CisKKworI2RlZmluZSBDT05URVhUX0NIRUNLKG9iaikgXAorICAgIGlmICghUHlEZWNDb250ZXh0X0NoZWNrKG9iaikpIHsgICAgICAgIFwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgICBcCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIGNvbnRleHQiKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9CisKKyNkZWZpbmUgQ09OVEVYVF9DSEVDS19WQShvYmopIFwKKyAgICBpZiAoIVB5RGVjQ29udGV4dF9DaGVjayhvYmopKSB7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgICAgICAgICAgXAorICAgICAgICAgICAgIm9wdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYSBjb250ZXh0Iik7IFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICBHbG9iYWwsIHRocmVhZCBsb2NhbCBhbmQgdGVtcG9yYXJ5IGNvbnRleHRzICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworLyogUmV0dXJuIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0LiBXaGVuIGNvbXBpbGVkCisgKiB3aXRob3V0IHRocmVhZHMsIHRoaXMgaXMgYWx3YXlzIHRoZSBtb2R1bGUgY29udGV4dC4gKi8KK3N0YXRpYyBpbnQgbW9kdWxlX2NvbnRleHRfc2V0ID0gMDsKK3N0YXRpYyBQeU9iamVjdCAqCitjdXJyZW50X2NvbnRleHQodm9pZCkKK3sKKyAgICAvKiBJbiBkZWNpbWFsLnB5LCB0aGUgbW9kdWxlIGNvbnRleHQgaXMgYXV0b21hdGljYWxseSBpbml0aWFsaXplZAorICAgICAqIGZyb20gdGhlIERlZmF1bHRDb250ZXh0IHdoZW4gaXQgaXMgZmlyc3QgYWNjZXNzZWQuIFRoaXMKKyAgICAgKiBjb21wbGljYXRlcyB0aGUgY29kZSBhbmQgaGFzIGEgc3BlZWQgcGVuYWx0eSBvZiAxLTIlLiAqLworICAgIGlmIChtb2R1bGVfY29udGV4dF9zZXQpIHsKKyAgICAgICAgcmV0dXJuIG1vZHVsZV9jb250ZXh0OworICAgIH0KKworICAgICpDVFgobW9kdWxlX2NvbnRleHQpID0gKkNUWChkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOworICAgIENUWChtb2R1bGVfY29udGV4dCktPnN0YXR1cyA9IDA7CisgICAgQ1RYKG1vZHVsZV9jb250ZXh0KS0+bmV3dHJhcCA9IDA7CisgICAgQ3R4Q2Fwcyhtb2R1bGVfY29udGV4dCkgPSBDdHhDYXBzKGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSk7CisKKyAgICBtb2R1bGVfY29udGV4dF9zZXQgPSAxOworICAgIHJldHVybiBtb2R1bGVfY29udGV4dDsKK30KKworLyogY3R4b2JqIDo9IGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBjb250ZXh0ICovCisjZGVmaW5lIENVUlJFTlRfQ09OVEVYVChjdHhvYmopIFwKKyAgICBjdHhvYmogPSBjdXJyZW50X2NvbnRleHQoKQorCisvKiBjdHggOj0gcG9pbnRlciB0byB0aGUgbXBkX2NvbnRleHRfdCBzdHJ1Y3Qgb2YgdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFRfQUREUihjdHgpIFwKKyAgICBjdHggPSBDVFgoY3VycmVudF9jb250ZXh0KCkpCisKKy8qIFJldHVybiBhIG5ldyByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0dldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKmFyZ3MgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworCisgICAgUHlfSU5DUkVGKGNvbnRleHQpOworICAgIHJldHVybiBjb250ZXh0OworfQorCisvKiBTZXQgdGhlIG1vZHVsZSBjb250ZXh0IHRvIGEgbmV3IGNvbnRleHQsIGRlY3JlbWVudCBvbGQgcmVmZXJlbmNlICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfU2V0Q3VycmVudENvbnRleHQoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBDT05URVhUX0NIRUNLKHYpOworCisgICAgLyogSWYgdGhlIG5ldyBjb250ZXh0IGlzIG9uZSBvZiB0aGUgdGVtcGxhdGVzLCBtYWtlIGEgY29weS4KKyAgICAgKiBUaGlzIGlzIHRoZSBjdXJyZW50IGJlaGF2aW9yIG9mIGRlY2ltYWwucHkuICovCisgICAgaWYgKHYgPT0gZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gYmFzaWNfY29udGV4dF90ZW1wbGF0ZSB8fAorICAgICAgICB2ID09IGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpIHsKKyAgICAgICAgdiA9IGNvbnRleHRfY29weSh2LCBOVUxMKTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgQ1RYKHYpLT5zdGF0dXMgPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgIH0KKworICAgIFB5X1hERUNSRUYobW9kdWxlX2NvbnRleHQpOworICAgIG1vZHVsZV9jb250ZXh0ID0gdjsKKyAgICBtb2R1bGVfY29udGV4dF9zZXQgPSAxOworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2Vsc2UKKy8qCisgKiBUaHJlYWQgbG9jYWwgc3RvcmFnZSBjdXJyZW50bHkgaGFzIGEgc3BlZWQgcGVuYWx0eSBvZiBhYm91dCA0JS4KKyAqIEFsbCBmdW5jdGlvbnMgdGhhdCBtYXAgUHl0aG9uJ3MgYXJpdGhtZXRpYyBvcGVyYXRvcnMgdG8gbXBkZWNpbWFsCisgKiBmdW5jdGlvbnMgaGF2ZSB0byBsb29rIHVwIHRoZSBjdXJyZW50IGNvbnRleHQgZm9yIGVhY2ggYW5kIGV2ZXJ5CisgKiBvcGVyYXRpb24uCisgKi8KKworLyogR2V0IHRoZSBjb250ZXh0IGZyb20gdGhlIHRocmVhZCBzdGF0ZSBkaWN0aW9uYXJ5LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N1cnJlbnRfY29udGV4dF9mcm9tX2RpY3Qodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBQeU9iamVjdCAqdGxfY29udGV4dDsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICBkaWN0ID0gUHlUaHJlYWRTdGF0ZV9HZXREaWN0KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBnZXQgdGhyZWFkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHRsX2NvbnRleHQgPSBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcihkaWN0LCB0bHNfY29udGV4dF9rZXkpOworICAgIGlmICh0bF9jb250ZXh0ICE9IE5VTEwpIHsKKyAgICAgICAgLyogV2UgYWxyZWFkeSBoYXZlIGEgdGhyZWFkIGxvY2FsIGNvbnRleHQuICovCisgICAgICAgIENPTlRFWFRfQ0hFQ0sodGxfY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiBTZXQgdXAgYSBuZXcgdGhyZWFkIGxvY2FsIGNvbnRleHQuICovCisgICAgICAgIHRsX2NvbnRleHQgPSBjb250ZXh0X2NvcHkoZGVmYXVsdF9jb250ZXh0X3RlbXBsYXRlLCBOVUxMKTsKKyAgICAgICAgaWYgKHRsX2NvbnRleHQgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgQ1RYKHRsX2NvbnRleHQpLT5zdGF0dXMgPSAwOworCisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWN0LCB0bHNfY29udGV4dF9rZXksIHRsX2NvbnRleHQpIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRsX2NvbnRleHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHRsX2NvbnRleHQpOworICAgIH0KKworICAgIC8qIENhY2hlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRocmVhZCwgYXNzdW1pbmcgdGhhdCBpdAorICAgICAqIHdpbGwgYmUgYWNjZXNzZWQgc2V2ZXJhbCB0aW1lcyBiZWZvcmUgYSB0aHJlYWQgc3dpdGNoLiAqLworICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgaWYgKHRzdGF0ZSkgeworICAgICAgICBjYWNoZWRfY29udGV4dCA9IChQeURlY0NvbnRleHRPYmplY3QgKil0bF9jb250ZXh0OworICAgICAgICBjYWNoZWRfY29udGV4dC0+dHN0YXRlID0gdHN0YXRlOworICAgIH0KKworICAgIC8qIEJvcnJvd2VkIHJlZmVyZW5jZSB3aXRoIHJlZmNvdW50PT0xICovCisgICAgcmV0dXJuIHRsX2NvbnRleHQ7Cit9CisKKy8qIFJldHVybiBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhyZWFkIGxvY2FsIGNvbnRleHQuICovCitzdGF0aWMgUHlPYmplY3QgKgorY3VycmVudF9jb250ZXh0KHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpZiAoY2FjaGVkX2NvbnRleHQgJiYgY2FjaGVkX2NvbnRleHQtPnRzdGF0ZSA9PSB0c3RhdGUpIHsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWNhY2hlZF9jb250ZXh0OworICAgIH0KKworICAgIHJldHVybiBjdXJyZW50X2NvbnRleHRfZnJvbV9kaWN0KCk7Cit9CisKKy8qIGN0eG9iaiA6PSBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFQoY3R4b2JqKSBcCisgICAgY3R4b2JqID0gY3VycmVudF9jb250ZXh0KCk7IFwKKyAgICBpZiAoY3R4b2JqID09IE5VTEwpIHsgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICBcCisgICAgfQorCisvKiBjdHggOj0gcG9pbnRlciB0byB0aGUgbXBkX2NvbnRleHRfdCBzdHJ1Y3Qgb2YgdGhlIGN1cnJlbnQgY29udGV4dCAqLworI2RlZmluZSBDVVJSRU5UX0NPTlRFWFRfQUREUihjdHgpIHsgXAorICAgIFB5T2JqZWN0ICpfY190X3hfb19iX2ogPSBjdXJyZW50X2NvbnRleHQoKTsgXAorICAgIGlmIChfY190X3hfb19iX2ogPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGN0eCA9IENUWChfY190X3hfb19iX2opOyAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNvbnRleHQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19HZXRDdXJyZW50Q29udGV4dChQeU9iamVjdCAqc2VsZiBVTlVTRUQsIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIGNvbnRleHQgPSBjdXJyZW50X2NvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRihjb250ZXh0KTsKKyAgICByZXR1cm4gY29udGV4dDsKK30KKworLyogU2V0IHRoZSB0aHJlYWQgbG9jYWwgY29udGV4dCB0byBhIG5ldyBjb250ZXh0LCBkZWNyZW1lbnQgb2xkIHJlZmVyZW5jZSAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX1NldEN1cnJlbnRDb250ZXh0KFB5T2JqZWN0ICpzZWxmIFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKmRpY3Q7CisKKyAgICBDT05URVhUX0NIRUNLKHYpOworCisgICAgZGljdCA9IFB5VGhyZWFkU3RhdGVfR2V0RGljdCgpOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgZ2V0IHRocmVhZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBJZiB0aGUgbmV3IGNvbnRleHQgaXMgb25lIG9mIHRoZSB0ZW1wbGF0ZXMsIG1ha2UgYSBjb3B5LgorICAgICAqIFRoaXMgaXMgdGhlIGN1cnJlbnQgYmVoYXZpb3Igb2YgZGVjaW1hbC5weS4gKi8KKyAgICBpZiAodiA9PSBkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUgfHwKKyAgICAgICAgdiA9PSBiYXNpY19jb250ZXh0X3RlbXBsYXRlIHx8CisgICAgICAgIHYgPT0gZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSkgeworICAgICAgICB2ID0gY29udGV4dF9jb3B5KHYsIE5VTEwpOworICAgICAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBDVFgodiktPnN0YXR1cyA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgfQorCisgICAgY2FjaGVkX2NvbnRleHQgPSBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbShkaWN0LCB0bHNfY29udGV4dF9rZXksIHYpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCisvKiBDb250ZXh0IG1hbmFnZXIgb2JqZWN0IGZvciB0aGUgJ3dpdGgnIHN0YXRlbWVudC4gVGhlIG1hbmFnZXIKKyAqIG93bnMgb25lIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIChvdXRlcikgY29udGV4dCBhbmQgb25lCisgKiB0byB0aGUgbG9jYWwgKGlubmVyKSBjb250ZXh0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N0eG1hbmFnZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSBVTlVTRUQsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGY7CisgICAgUHlPYmplY3QgKmxvY2FsOworICAgIFB5T2JqZWN0ICpnbG9iYWw7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoZ2xvYmFsKTsKKyAgICBsb2NhbCA9IGdsb2JhbDsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPIiwgJmxvY2FsKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShsb2NhbCk7CisKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAmUHlEZWNDb250ZXh0TWFuYWdlcl9UeXBlKTsKKyAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYtPmxvY2FsID0gY29udGV4dF9jb3B5KGxvY2FsLCBOVUxMKTsKKyAgICBpZiAoc2VsZi0+bG9jYWwgPT0gTlVMTCkgeworICAgICAgICBzZWxmLT5nbG9iYWwgPSBOVUxMOworICAgICAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWxmLT5nbG9iYWwgPSBnbG9iYWw7CisgICAgUHlfSU5DUkVGKHNlbGYtPmdsb2JhbCk7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKK30KKworc3RhdGljIHZvaWQKK2N0eG1hbmFnZXJfZGVhbGxvYyhQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0ICpzZWxmKQoreworICAgIFB5X1hERUNSRUYoc2VsZi0+bG9jYWwpOworICAgIFB5X1hERUNSRUYoc2VsZi0+Z2xvYmFsKTsKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhtYW5hZ2VyX3NldF9sb2NhbChQeURlY0NvbnRleHRNYW5hZ2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIHJldCA9IFB5RGVjX1NldEN1cnJlbnRDb250ZXh0KE5VTEwsIHNlbGYtPmxvY2FsKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXQpOworCisgICAgUHlfSU5DUkVGKHNlbGYtPmxvY2FsKTsKKyAgICByZXR1cm4gc2VsZi0+bG9jYWw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhtYW5hZ2VyX3Jlc3RvcmVfZ2xvYmFsKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzIFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmV0OworCisgICAgcmV0ID0gUHlEZWNfU2V0Q3VycmVudENvbnRleHQoTlVMTCwgc2VsZi0+Z2xvYmFsKTsKKyAgICBpZiAocmV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0RFQ1JFRihyZXQpOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworc3RhdGljIFB5TWV0aG9kRGVmIGN0eG1hbmFnZXJfbWV0aG9kc1tdID0geworICB7Il9fZW50ZXJfXyIsIChQeUNGdW5jdGlvbiljdHhtYW5hZ2VyX3NldF9sb2NhbCwgTUVUSF9OT0FSR1MsIE5VTEx9LAorICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKWN0eG1hbmFnZXJfcmVzdG9yZV9nbG9iYWwsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUgPQoreworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJkZWNpbWFsLkNvbnRleHRNYW5hZ2VyIiwgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKFB5RGVjQ29udGV4dE1hbmFnZXJPYmplY3QpLCAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKSBjdHhtYW5hZ2VyX2RlYWxsb2MsICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgKGdldGF0dHJmdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAoc2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIChyZXByZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKSBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAoc2V0YXR0cm9mdW5jKSAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAoUHlCdWZmZXJQcm9jcyAqKSAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY3R4bWFuYWdlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3IERlY2ltYWwgT2JqZWN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX05ldyhQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgUHlEZWNPYmplY3QgKmRlYzsKKworICAgIGlmICh0eXBlID09ICZQeURlY19UeXBlKSB7CisgICAgICAgIGRlYyA9IFB5T2JqZWN0X05ldyhQeURlY09iamVjdCwgJlB5RGVjX1R5cGUpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGVjID0gKFB5RGVjT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgfQorICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMtPmhhc2ggPSAtMTsKKworICAgIE1QRChkZWMpLT5mbGFncyA9IE1QRF9TVEFUSUN8TVBEX1NUQVRJQ19EQVRBOworICAgIE1QRChkZWMpLT5leHAgPSAwOworICAgIE1QRChkZWMpLT5kaWdpdHMgPSAwOworICAgIE1QRChkZWMpLT5sZW4gPSAwOworICAgIE1QRChkZWMpLT5hbGxvYyA9IF9QeV9ERUNfTUlOQUxMT0M7CisgICAgTVBEKGRlYyktPmRhdGEgPSBkZWMtPmRhdGE7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZGVjOworfQorI2RlZmluZSBkZWNfYWxsb2MoKSBQeURlY1R5cGVfTmV3KCZQeURlY19UeXBlKQorCitzdGF0aWMgdm9pZAorZGVjX2RlYWxsb2MoUHlPYmplY3QgKmRlYykKK3sKKyAgICBtcGRfZGVsKE1QRChkZWMpKTsKKyAgICBQeV9UWVBFKGRlYyktPnRwX2ZyZWUoZGVjKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJzaW9ucyB0byBEZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitpc19zcGFjZShlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgcG9zKQoreworICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOworICAgIHJldHVybiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpOworfQorCisvKiBSZXR1cm4gdGhlIEFTQ0lJIHJlcHJlc2VudGF0aW9uIG9mIGEgbnVtZXJpYyBVbmljb2RlIHN0cmluZy4gVGhlIG51bWVyaWMKKyAgIHN0cmluZyBtYXkgY29udGFpbiBhc2NpaSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbMSwgMTI3XSwgYW55IFVuaWNvZGUKKyAgIHNwYWNlIGFuZCBhbnkgdW5pY29kZSBkaWdpdC4gSWYgc3RyaXBfd3MgaXMgdHJ1ZSwgbGVhZGluZyBhbmQgdHJhaWxpbmcKKyAgIHdoaXRlc3BhY2UgaXMgc3RyaXBwZWQuCisKKyAgIFJldHVybiBOVUxMIGlmIG1hbGxvYyBmYWlscyBhbmQgYW4gZW1wdHkgc3RyaW5nIGlmIGludmFsaWQgY2hhcmFjdGVycworICAgYXJlIGZvdW5kLiAqLworc3RhdGljIGNoYXIgKgorbnVtZXJpY19hc19hc2NpaShjb25zdCBQeU9iamVjdCAqdSwgaW50IHN0cmlwX3dzKQoreworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X1VDUzQgY2g7CisgICAgY2hhciAqcmVzLCAqY3A7CisgICAgUHlfc3NpemVfdCBqLCBsZW47CisgICAgaW50IGQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHUpKTsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgbGVuID0gIFB5VW5pY29kZV9HRVRfTEVOR1RIKHUpOworCisgICAgY3AgPSByZXMgPSBQeU1lbV9NYWxsb2MobGVuKzEpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBqID0gMDsKKyAgICBpZiAoc3RyaXBfd3MpIHsKKyAgICAgICAgd2hpbGUgKGxlbiA+IDAgJiYgaXNfc3BhY2Uoa2luZCwgZGF0YSwgbGVuLTEpKSB7CisgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaiA8IGxlbiAmJiBpc19zcGFjZShraW5kLCBkYXRhLCBqKSkgeworICAgICAgICAgICAgaisrOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yICg7IGogPCBsZW47IGorKykgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopOworICAgICAgICBpZiAoMCA8IGNoICYmIGNoIDw9IDEyNykgeworICAgICAgICAgICAgKmNwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcgJzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGQgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7CisgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgLyogZW1wdHkgc3RyaW5nIHRyaWdnZXJzIENvbnZlcnNpb25TeW50YXggKi8KKyAgICAgICAgICAgICpyZXMgPSAnXDAnOworICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgICAgICAqY3ArKyA9ICcwJyArIGQ7CisgICAgfQorICAgICpjcCA9ICdcMCc7CisgICAgcmV0dXJuIHJlczsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgQyBzdHJpbmcuIFVzZSB0aGUgY29udGV4dAorICAgZHVyaW5nIGNvbnZlcnNpb24uICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21DU3RyaW5nKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcXNldF9zdHJpbmcoTVBEKGRlYyksIHMsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBvciBhIHN1YnR5cGUgZnJvbSBhIEMgc3RyaW5nLiBBdHRlbXB0IGV4YWN0CisgICBjb252ZXJzaW9uLiBJZiB0aGUgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHksIHNldAorICAgSW52YWxpZE9wZXJhdGlvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKworICAgIG1wZF9xc2V0X3N0cmluZyhNUEQoZGVjKSwgcywgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgLyogd2Ugd2FudCBleGFjdCByZXN1bHRzICovCisgICAgICAgIG1wZF9zZXRlcnJvcihNUEQoZGVjKSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCAmc3RhdHVzKTsKKyAgICB9CisgICAgc3RhdHVzICY9IE1QRF9FcnJvcnM7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgUHlVbmljb2RlT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tVW5pY29kZShQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICp1LAorICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDApOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21DU3RyaW5nKHR5cGUsIHMsIGNvbnRleHQpOworICAgIFB5TWVtX0ZyZWUocyk7CisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgbmV3IFB5RGVjT2JqZWN0IG9yIGEgc3VidHlwZSBmcm9tIGEgUHlVbmljb2RlT2JqZWN0LiBBdHRlbXB0IGV4YWN0CisgKiBjb252ZXJzaW9uLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgZXhhY3QsIGZhaWwgd2l0aCBJbnZhbGlkT3BlcmF0aW9uLgorICogQWxsb3cgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBpbiB0aGUgaW5wdXQgb3BlcmFuZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdFdTKFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIHMgPSBudW1lcmljX2FzX2FzY2lpKHUsIDEpOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZGVjID0gUHlEZWNUeXBlX0Zyb21DU3RyaW5nRXhhY3QodHlwZSwgcywgY29udGV4dCk7CisgICAgUHlNZW1fRnJlZShzKTsKKyAgICByZXR1cm4gZGVjOworfQorCisvKiBTZXQgUHlEZWNPYmplY3QgZnJvbSB0cmlwbGUgd2l0aG91dCBhbnkgZXJyb3IgY2hlY2tpbmcuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK19kZWNfc2V0dHJpcGxlKFB5T2JqZWN0ICpkZWMsIHVpbnQ4X3Qgc2lnbiwgdWludDMyX3QgdiwgbXBkX3NzaXplX3QgZXhwKQoreworCisjaWZkZWYgQ09ORklHXzY0CisgICAgTVBEKGRlYyktPmRhdGFbMF0gPSB2OworICAgIE1QRChkZWMpLT5sZW4gPSAxOworI2Vsc2UKKyAgICB1aW50MzJfdCBxLCByOworICAgIHEgPSB2IC8gTVBEX1JBRElYOworICAgIHIgPSB2IC0gcSAqIE1QRF9SQURJWDsKKyAgICBNUEQoZGVjKS0+ZGF0YVsxXSA9IHE7CisgICAgTVBEKGRlYyktPmRhdGFbMF0gPSByOworICAgIE1QRChkZWMpLT5sZW4gPSBxID8gMiA6IDE7CisjZW5kaWYKKyAgICBtcGRfc2V0X2ZsYWdzKE1QRChkZWMpLCBzaWduKTsKKyAgICBNUEQoZGVjKS0+ZXhwID0gZXhwOworICAgIG1wZF9zZXRkaWdpdHMoTVBEKGRlYykpOworfQorCisvKiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QgZnJvbSBhbiBtcGRfc3NpemVfdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVNzaXplKFB5VHlwZU9iamVjdCAqdHlwZSwgbXBkX3NzaXplX3QgdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gUHlEZWNUeXBlX05ldyh0eXBlKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FzZXRfc3NpemUoTVBEKGRlYyksIHYsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGFuIG1wZF9zc2l6ZV90LiBDb252ZXJzaW9uIGlzIGV4YWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tU3NpemVFeGFjdChQeVR5cGVPYmplY3QgKnR5cGUsIG1wZF9zc2l6ZV90IHYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9OZXcodHlwZSk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworCisgICAgbXBkX3FzZXRfc3NpemUoTVBEKGRlYyksIHYsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gZGVjOworfQorCisvKiBDb252ZXJ0IGZyb20gYSBQeUxvbmdPYmplY3QuIFRoZSBjb250ZXh0IGlzIG5vdCBtb2RpZmllZDsgZmxhZ3Mgc2V0CisgICBkdXJpbmcgY29udmVyc2lvbiBhcmUgYWNjdW11bGF0ZWQgaW4gdGhlIHN0YXR1cyBwYXJhbWV0ZXIuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Zyb21fbG9uZyhQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICp2LAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICBQeUxvbmdPYmplY3QgKmwgPSAoUHlMb25nT2JqZWN0ICopdjsKKyAgICBQeV9zc2l6ZV90IG9iX3NpemU7CisgICAgc2l6ZV90IGxlbjsKKyAgICB1aW50OF90IHNpZ247CisKKyAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgIGlmIChkZWMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvYl9zaXplID0gUHlfU0laRShsKTsKKyAgICBpZiAob2Jfc2l6ZSA9PSAwKSB7CisgICAgICAgIF9kZWNfc2V0dHJpcGxlKGRlYywgTVBEX1BPUywgMCwgMCk7CisgICAgICAgIHJldHVybiBkZWM7CisgICAgfQorCisgICAgaWYgKG9iX3NpemUgPCAwKSB7CisgICAgICAgIGxlbiA9IC1vYl9zaXplOworICAgICAgICBzaWduID0gTVBEX05FRzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxlbiA9IG9iX3NpemU7CisgICAgICAgIHNpZ24gPSBNUERfUE9TOworICAgIH0KKworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBfZGVjX3NldHRyaXBsZShkZWMsIHNpZ24sICpsLT5vYl9kaWdpdCwgMCk7CisgICAgICAgIG1wZF9xZmluYWxpemUoTVBEKGRlYyksIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIGRlYzsKKyAgICB9CisKKyNpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAzMAorICAgIG1wZF9xaW1wb3J0X3UzMihNUEQoZGVjKSwgbC0+b2JfZGlnaXQsIGxlbiwgc2lnbiwgUHlMb25nX0JBU0UsCisgICAgICAgICAgICAgICAgICAgIGN0eCwgc3RhdHVzKTsKKyNlbGlmIFBZTE9OR19CSVRTX0lOX0RJR0lUID09IDE1CisgICAgbXBkX3FpbXBvcnRfdTE2KE1QRChkZWMpLCBsLT5vYl9kaWdpdCwgbGVuLCBzaWduLCBQeUxvbmdfQkFTRSwKKyAgICAgICAgICAgICAgICAgICAgY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgI2Vycm9yICJQWUxPTkdfQklUU19JTl9ESUdJVCBzaG91bGQgYmUgMTUgb3IgMzAiCisjZW5kaWYKKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGEgUHlMb25nT2JqZWN0LiBVc2UgdGhlIGNvbnRleHQgZm9yCisgICBjb252ZXJzaW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tTG9uZyhQeVR5cGVPYmplY3QgKnR5cGUsIGNvbnN0IFB5T2JqZWN0ICpweWxvbmcsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlYzsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgZGVjID0gZGVjX2Zyb21fbG9uZyh0eXBlLCBweWxvbmcsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIFJldHVybiBhIG5ldyBQeURlY09iamVjdCBmcm9tIGEgUHlMb25nT2JqZWN0LiBVc2UgYSBtYXhpbXVtIGNvbnRleHQKKyAgIGZvciBjb252ZXJzaW9uLiBJZiB0aGUgY29udmVyc2lvbiBpcyBub3QgZXhhY3QsIHNldCBJbnZhbGlkT3BlcmF0aW9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgY29uc3QgUHlPYmplY3QgKnB5bG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworICAgIGRlYyA9IGRlY19mcm9tX2xvbmcodHlwZSwgcHlsb25nLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHN0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgLyogd2Ugd2FudCBleGFjdCByZXN1bHRzICovCisgICAgICAgIG1wZF9zZXRlcnJvcihNUEQoZGVjKSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCAmc3RhdHVzKTsKKyAgICB9CisgICAgc3RhdHVzICY9IE1QRF9FcnJvcnM7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGRlYzsKK30KKworLyogUmV0dXJuIGEgUHlEZWNPYmplY3Qgb3IgYSBzdWJ0eXBlIGZyb20gYSBQeUZsb2F0T2JqZWN0LgorICAgQ29udmVyc2lvbiBpcyBleGFjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGVjLCAqdG1wOworICAgIFB5T2JqZWN0ICpuLCAqZCwgKm5fZDsKKyAgICBtcGRfc3NpemVfdCBrOworICAgIGRvdWJsZSB4OworICAgIGludCBzaWduOworICAgIG1wZF90ICpkMSwgKmQyOworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjdHg7CisKKworICAgIGFzc2VydChQeVR5cGVfSXNTdWJ0eXBlKHR5cGUsICZQeURlY19UeXBlKSk7CisKKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbUxvbmdFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKKyAgICB9CisgICAgaWYgKCFQeUZsb2F0X0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBpbnQgb2YgZmxvYXQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzaWduID0gKGNvcHlzaWduKDEuMCwgeCkgPT0gMS4wKSA/IDAgOiAxOworCisgICAgaWYgKFB5X0lTX05BTih4KSB8fCBQeV9JU19JTkZJTklUWSh4KSkgeworICAgICAgICBkZWMgPSBQeURlY1R5cGVfTmV3KHR5cGUpOworICAgICAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeV9JU19OQU4oeCkpIHsKKyAgICAgICAgICAgIC8qIGRlY2ltYWwucHkgY2FsbHMgcmVwcihmbG9hdCgrLW5hbikpLAorICAgICAgICAgICAgICogd2hpY2ggYWx3YXlzIGdpdmVzIGEgcG9zaXRpdmUgcmVzdWx0LiAqLworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoTVBEKGRlYyksIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoTVBEKGRlYyksIHNpZ24sIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkZWM7CisgICAgfQorCisgICAgLyogYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGZsb2F0ICovCisgICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh2LCAiX19hYnNfXyIsIE5VTEwpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBmbG9hdCBhcyBpbnRlZ2VyIHJhdGlvOiBudW1lcmF0b3IvZGVub21pbmF0b3IgKi8KKyAgICBuX2QgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRtcCwgImFzX2ludGVnZXJfcmF0aW8iLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBpZiAobl9kID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIG4gPSBQeVR1cGxlX0dFVF9JVEVNKG5fZCwgMCk7CisgICAgZCA9IFB5VHVwbGVfR0VUX0lURU0obl9kLCAxKTsKKworICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZCwgImJpdF9sZW5ndGgiLCBOVUxMKTsKKyAgICBpZiAodG1wID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5fZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIGlmIChrID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKG5fZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBrLS07CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUxvbmdFeGFjdCh0eXBlLCBuLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYobl9kKTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZDEgPSBtcGRfcW5ldygpOworICAgIGlmIChkMSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZDIgPSBtcGRfcW5ldygpOworICAgIGlmIChkMiA9PSBOVUxMKSB7CisgICAgICAgIG1wZF9kZWwoZDEpOworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgbXBkX3FzZXRfdWludChkMSwgNSwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgbXBkX3FzZXRfc3NpemUoZDIsIGssICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9xcG93KGQxLCBkMSwgZDIsICZtYXhjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX2RlbChkMSk7CisgICAgICAgIG1wZF9kZWwoZDIpOworICAgICAgICBQeV9ERUNSRUYoZGVjKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogcmVzdWx0ID0gbiAqIDUqKmsgKi8KKyAgICBtcGRfcW11bChNUEQoZGVjKSwgTVBEKGRlYyksIGQxLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICBtcGRfZGVsKGQxKTsKKyAgICBtcGRfZGVsKGQyKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogcmVzdWx0ID0gKy0gbiAqIDUqKmsgKiAxMCoqLWsgKi8KKyAgICBtcGRfc2V0X3NpZ24oTVBEKGRlYyksIHNpZ24pOworICAgIE1QRChkZWMpLT5leHAgPSAtazsKKworICAgIHJldHVybiBkZWM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbUZsb2F0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKworICAgIGRlYyA9IFB5RGVjVHlwZV9Gcm9tRmxvYXRFeGFjdCh0eXBlLCB2LCBjb250ZXh0KTsKKyAgICBpZiAoZGVjID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShNUEQoZGVjKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihkZWMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gZGVjOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2VxdWVuY2VfYXNfdHVwbGUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpleCwgY29uc3QgY2hhciAqbWVzZykKK3sKKyAgICBpZiAoUHlUdXBsZV9DaGVjayh2KSkgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBpZiAoUHlMaXN0X0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeUxpc3RfQXNUdXBsZSh2KTsKKyAgICB9CisKKyAgICBQeUVycl9TZXRTdHJpbmcoZXgsIG1lc2cpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBSZXR1cm4gYSBuZXcgQyBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBEZWNpbWFsVHVwbGUuICovCitzdGF0aWMgY2hhciAqCitkZWN0dXBsZV9hc19zdHIoUHlPYmplY3QgKmRlY3R1cGxlKQoreworICAgIFB5T2JqZWN0ICpkaWdpdHMgPSBOVUxMLCAqdG1wOworICAgIGNoYXIgKmRlY3N0cmluZyA9IE5VTEw7CisgICAgY2hhciBzaWduX3NwZWNpYWxbNl07CisgICAgY2hhciAqY3A7CisgICAgbG9uZyBzaWduLCBsOworICAgIG1wZF9zc2l6ZV90IGV4cCA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBtZW0sIHRzaXplOworICAgIGludCBpc19pbmZpbml0ZSA9IDA7CisgICAgaW50IG47CisKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhkZWN0dXBsZSkpOworCisgICAgaWYgKFB5VHVwbGVfU2l6ZShkZWN0dXBsZSkgIT0gMykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIDMiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBzaWduICovCisgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShkZWN0dXBsZSwgMCk7CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJzaWduIG11c3QgYmUgYW4gaW50ZWdlciB3aXRoIHRoZSB2YWx1ZSAwIG9yIDEiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgc2lnbiA9IFB5TG9uZ19Bc0xvbmcodG1wKTsKKyAgICBpZiAoc2lnbiA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChzaWduICE9IDAgJiYgc2lnbiAhPSAxKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInNpZ24gbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggdGhlIHZhbHVlIDAgb3IgMSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBzaWduX3NwZWNpYWxbMF0gPSBzaWduID8gJy0nIDogJysnOworICAgIHNpZ25fc3BlY2lhbFsxXSA9ICdcMCc7CisKKyAgICAvKiBleHBvbmVudCBvciBlbmNvZGluZyBmb3IgYSBzcGVjaWFsIG51bWJlciAqLworICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0oZGVjdHVwbGUsIDIpOworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodG1wKSkgeworICAgICAgICAvKiBzcGVjaWFsICovCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh0bXAsICJGIikgPT0gMCkgeworICAgICAgICAgICAgc3RyY2F0KHNpZ25fc3BlY2lhbCwgIkluZiIpOworICAgICAgICAgICAgaXNfaW5maW5pdGUgPSAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKHRtcCwgIm4iKSA9PSAwKSB7CisgICAgICAgICAgICBzdHJjYXQoc2lnbl9zcGVjaWFsLCAiTmFOIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcodG1wLCAiTiIpID09IDApIHsKKyAgICAgICAgICAgIHN0cmNhdChzaWduX3NwZWNpYWwsICJzTmFOIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAic3RyaW5nIGFyZ3VtZW50IGluIHRoZSB0aGlyZCBwb3NpdGlvbiAiCisgICAgICAgICAgICAgICAgIm11c3QgYmUgJ0YnLCAnbicgb3IgJ04nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBleHBvbmVudCAqLworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZXhwb25lbnQgbXVzdCBiZSBhbiBpbnRlZ2VyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGV4cCA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICAgICAgaWYgKGV4cCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgLyogY29lZmZpY2llbnQgKi8KKyAgICBkaWdpdHMgPSBzZXF1ZW5jZV9hc190dXBsZShQeVR1cGxlX0dFVF9JVEVNKGRlY3R1cGxlLCAxKSwgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cyIpOworICAgIGlmIChkaWdpdHMgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHRzaXplID0gUHlUdXBsZV9TaXplKGRpZ2l0cyk7CisgICAgLyogW3NpZ25dW2NvZWZmZGlnaXRzKzFdW0VdWy1dW2V4cGRpZ2l0cysxXVsnXDAnXSAqLworICAgIG1lbSA9IDEgKyB0c2l6ZSArIDMgKyBNUERfRVhQRElHSVRTICsgMjsKKyAgICBjcCA9IGRlY3N0cmluZyA9IFB5TWVtX01hbGxvYyhtZW0pOworICAgIGlmIChkZWNzdHJpbmcgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG4gPSBzbnByaW50ZihjcCwgbWVtLCAiJXMiLCBzaWduX3NwZWNpYWwpOworICAgIGlmIChuIDwgMCB8fCBuID49IG1lbSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgImludGVybmFsIGVycm9yIGluIGRlY19zZXF1ZW5jZV9hc19zdHIiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgY3AgKz0gbjsKKworICAgIGlmICh0c2l6ZSA9PSAwICYmIHNpZ25fc3BlY2lhbFsxXSA9PSAnXDAnKSB7CisgICAgICAgIC8qIGVtcHR5IHR1cGxlOiB6ZXJvIGNvZWZmaWNpZW50LCBleGNlcHQgZm9yIHNwZWNpYWwgbnVtYmVycyAqLworICAgICAgICAqY3ArKyA9ICcwJzsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHRzaXplOyBpKyspIHsKKyAgICAgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShkaWdpdHMsIGkpOworICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh0bXApKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY29lZmZpY2llbnQgbXVzdCBiZSBhIHR1cGxlIG9mIGRpZ2l0cyIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBsID0gUHlMb25nX0FzTG9uZyh0bXApOworICAgICAgICBpZiAobCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmIChsIDwgMCB8fCBsID4gOSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNvZWZmaWNpZW50IG11c3QgYmUgYSB0dXBsZSBvZiBkaWdpdHMiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX2luZmluaXRlKSB7CisgICAgICAgICAgICAvKiBhY2NlcHQgYnV0IGlnbm9yZSBhbnkgd2VsbC1mb3JtZWQgY29lZmZpY2llbnQgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgIHdpdGggZGVjaW1hbC5weSAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgKmNwKysgPSAoY2hhcilsICsgJzAnOworICAgIH0KKyAgICAqY3AgPSAnXDAnOworCisgICAgaWYgKHNpZ25fc3BlY2lhbFsxXSA9PSAnXDAnKSB7CisgICAgICAgIC8qIG5vdCBhIHNwZWNpYWwgbnVtYmVyICovCisgICAgICAgICpjcCsrID0gJ0UnOworICAgICAgICBuID0gc25wcmludGYoY3AsIE1QRF9FWFBESUdJVFMrMiwgIiUiIFBSSV9tcGRfc3NpemVfdCwgZXhwKTsKKyAgICAgICAgaWYgKG4gPCAwIHx8IG4gPj0gTVBEX0VYUERJR0lUUysyKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnRlcm5hbCBlcnJvciBpbiBkZWNfc2VxdWVuY2VfYXNfc3RyIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfWERFQ1JFRihkaWdpdHMpOworICAgIHJldHVybiBkZWNzdHJpbmc7CisKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihkaWdpdHMpOworICAgIGlmIChkZWNzdHJpbmcpIFB5TWVtX0ZyZWUoZGVjc3RyaW5nKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogQ3VycmVudGx5IGFjY2VwdHMgdHVwbGVzIGFuZCBsaXN0cy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbVNlcXVlbmNlKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpkZWN0dXBsZTsKKyAgICBQeU9iamVjdCAqZGVjOworICAgIGNoYXIgKnM7CisKKyAgICBkZWN0dXBsZSA9IHNlcXVlbmNlX2FzX3R1cGxlKHYsIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOworICAgIGlmIChkZWN0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHMgPSBkZWN0dXBsZV9hc19zdHIoZGVjdHVwbGUpOworICAgIFB5X0RFQ1JFRihkZWN0dXBsZSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmcodHlwZSwgcywgY29udGV4dCk7CisKKyAgICBQeU1lbV9GcmVlKHMpOworICAgIHJldHVybiBkZWM7Cit9CisKKy8qIEN1cnJlbnRseSBhY2NlcHRzIHR1cGxlcyBhbmQgbGlzdHMuICovCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZUV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRlY3R1cGxlOworICAgIFB5T2JqZWN0ICpkZWM7CisgICAgY2hhciAqczsKKworICAgIGRlY3R1cGxlID0gc2VxdWVuY2VfYXNfdHVwbGUodiwgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBtdXN0IGJlIGEgdHVwbGUgb3IgbGlzdCIpOworICAgIGlmIChkZWN0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHMgPSBkZWN0dXBsZV9hc19zdHIoZGVjdHVwbGUpOworICAgIFB5X0RFQ1JFRihkZWN0dXBsZSk7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkZWMgPSBQeURlY1R5cGVfRnJvbUNTdHJpbmdFeGFjdCh0eXBlLCBzLCBjb250ZXh0KTsKKworICAgIFB5TWVtX0ZyZWUocyk7CisgICAgcmV0dXJuIGRlYzsKK30KKworI2RlZmluZSBQeURlY19Gcm9tQ1N0cmluZyhzdHIsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21DU3RyaW5nKCZQeURlY19UeXBlLCBzdHIsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21DU3RyaW5nRXhhY3Qoc3RyLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tQ1N0cmluZ0V4YWN0KCZQeURlY19UeXBlLCBzdHIsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbVVuaWNvZGUodW5pY29kZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVVuaWNvZGUoJlB5RGVjX1R5cGUsIHVuaWNvZGUsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21Vbmljb2RlRXhhY3QodW5pY29kZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdCgmUHlEZWNfVHlwZSwgdW5pY29kZSwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbVVuaWNvZGVFeGFjdFdTKHVuaWNvZGUsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Vbmljb2RlRXhhY3RXUygmUHlEZWNfVHlwZSwgdW5pY29kZSwgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tU3NpemUodiwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVNzaXplKCZQeURlY19UeXBlLCB2LCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tU3NpemVFeGFjdCh2LCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tU3NpemVFeGFjdCgmUHlEZWNfVHlwZSwgdiwgY29udGV4dCkKKworI2RlZmluZSBQeURlY19Gcm9tTG9uZyhweWxvbmcsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21Mb25nKCZQeURlY19UeXBlLCBweWxvbmcsIGNvbnRleHQpCisjZGVmaW5lIFB5RGVjX0Zyb21Mb25nRXhhY3QocHlsb25nLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KCZQeURlY19UeXBlLCBweWxvbmcsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbUZsb2F0KHB5ZmxvYXQsIGNvbnRleHQpIFwKKyAgICAgICAgUHlEZWNUeXBlX0Zyb21GbG9hdCgmUHlEZWNfVHlwZSwgcHlmbG9hdCwgY29udGV4dCkKKyNkZWZpbmUgUHlEZWNfRnJvbUZsb2F0RXhhY3QocHlmbG9hdCwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbUZsb2F0RXhhY3QoJlB5RGVjX1R5cGUsIHB5ZmxvYXQsIGNvbnRleHQpCisKKyNkZWZpbmUgUHlEZWNfRnJvbVNlcXVlbmNlKHNlcXVlbmNlLCBjb250ZXh0KSBcCisgICAgICAgIFB5RGVjVHlwZV9Gcm9tU2VxdWVuY2UoJlB5RGVjX1R5cGUsIHNlcXVlbmNlLCBjb250ZXh0KQorI2RlZmluZSBQeURlY19Gcm9tU2VxdWVuY2VFeGFjdChzZXF1ZW5jZSwgY29udGV4dCkgXAorICAgICAgICBQeURlY1R5cGVfRnJvbVNlcXVlbmNlRXhhY3QoJlB5RGVjX1R5cGUsIHNlcXVlbmNlLCBjb250ZXh0KQorCisvKiBjbGFzcyBtZXRob2QgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZnJvbV9mbG9hdChQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqcHlmbG9hdCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KChQeVR5cGVPYmplY3QgKilkZWMsIHB5ZmxvYXQsIGNvbnRleHQpOworfQorCisvKiBjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0ICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X2Zyb21fZmxvYXQoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIHJldHVybiBQeURlY19Gcm9tRmxvYXQodiwgY29udGV4dCk7Cit9CisKKy8qIEFwcGx5IHRoZSBjb250ZXh0IHRvIHRoZSBpbnB1dCBvcGVyYW5kLiBSZXR1cm4gYSBuZXcgUHlEZWNPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FwcGx5KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX3Fjb3B5KE1QRChyZXN1bHQpLCBNUEQodiksICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZmluYWxpemUoTVBEKHJlc3VsdCksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogJ3YnIGNhbiBoYXZlIGFueSB0eXBlIGFjY2VwdGVkIGJ5IHRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yLiBBdHRlbXB0CisgICBhbiBleGFjdCBjb252ZXJzaW9uLiBJZiB0aGUgcmVzdWx0IGRvZXMgbm90IG1lZXQgdGhlIHJlc3RyaWN0aW9ucworICAgZm9yIGFuIG1wZF90LCBmYWlsIHdpdGggSW52YWxpZE9wZXJhdGlvbi4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY1R5cGVfRnJvbU9iamVjdEV4YWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tU3NpemVFeGFjdCh0eXBlLCAwLCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY1R5cGVfRnJvbVVuaWNvZGVFeGFjdFdTKHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tTG9uZ0V4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHYpIHx8IFB5TGlzdF9DaGVjayh2KSkgeworICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21TZXF1ZW5jZUV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHYpKSB7CisgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIE1QRF9GbG9hdF9vcGVyYXRpb24pKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlEZWNUeXBlX0Zyb21GbG9hdEV4YWN0KHR5cGUsIHYsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb252ZXJzaW9uIGZyb20gJXMgdG8gRGVjaW1hbCBpcyBub3Qgc3VwcG9ydGVkIiwKKyAgICAgICAgICAgIHYtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIFRoZSBjb250ZXh0IGlzIHVzZWQgZHVyaW5nIGNvbnZlcnNpb24uIFRoaXMgZnVuY3Rpb24gaXMgdGhlCisgICBlcXVpdmFsZW50IG9mIGNvbnRleHQuY3JlYXRlX2RlY2ltYWwoKS4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeURlY19Gcm9tU3NpemUoMCwgY29udGV4dCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5RGVjX0NoZWNrKHYpKSB7CisgICAgICAgIG1wZF9jb250ZXh0X3QgKmN0eCA9IENUWChjb250ZXh0KTsKKyAgICAgICAgaWYgKG1wZF9pc25hbihNUEQodikpICYmCisgICAgICAgICAgICBNUEQodiktPmRpZ2l0cyA+IGN0eC0+cHJlYyAtIGN0eC0+Y2xhbXApIHsKKyAgICAgICAgICAgIC8qIFNwZWNpYWwgY2FzZTogdG9vIG1hbnkgTmFOIHBheWxvYWQgZGlnaXRzICovCisgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICAgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgTVBEX0NvbnZlcnNpb25fc3ludGF4KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKE1QRChyZXN1bHQpLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlY19hcHBseSh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY19Gcm9tVW5pY29kZSh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIHJldHVybiBQeURlY19Gcm9tTG9uZyh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2KSB8fCBQeUxpc3RfQ2hlY2sodikpIHsKKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21TZXF1ZW5jZSh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlGbG9hdF9DaGVjayh2KSkgeworICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBNUERfRmxvYXRfb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RGVjX0Zyb21GbG9hdCh2LCBjb250ZXh0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY29udmVyc2lvbiBmcm9tICVzIHRvIERlY2ltYWwgaXMgbm90IHN1cHBvcnRlZCIsCisgICAgICAgICAgICB2LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InZhbHVlIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPTyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgcmV0dXJuIFB5RGVjVHlwZV9Gcm9tT2JqZWN0RXhhY3QodHlwZSwgdiwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfY3JlYXRlX2RlY2ltYWwoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8iLCAmdikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5RGVjX0Zyb21PYmplY3QodiwgY29udGV4dCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgSW1wbGljaXQgY29udmVyc2lvbnMgdG8gRGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUcnkgdG8gY29udmVydCBQeU9iamVjdCB2IHRvIGEgbmV3IFB5RGVjT2JqZWN0IGNvbnYuIElmIHRoZSBjb252ZXJzaW9uCisgICBmYWlscywgc2V0IGNvbnYgdG8gTlVMTCAoZXhjZXB0aW9uIGlzIHNldCkuIElmIHRoZSBjb252ZXJzaW9uIGlzIG5vdAorICAgaW1wbGVtZW50ZWQsIHNldCBjb252IHRvIFB5X05vdEltcGxlbWVudGVkLiAqLworI2RlZmluZSBOT1RfSU1QTCAwCisjZGVmaW5lIFRZUEVfRVJSIDEKK1B5X0xPQ0FMX0lOTElORShpbnQpCitjb252ZXJ0X29wKGludCB0eXBlX2VyciwgUHlPYmplY3QgKipjb252LCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKmNvbnRleHQpCit7CisKKyAgICBpZiAoUHlEZWNfQ2hlY2sodikpIHsKKyAgICAgICAgKmNvbnYgPSB2OworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgICpjb252ID0gUHlEZWNfRnJvbUxvbmdFeGFjdCh2LCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCpjb252ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICh0eXBlX2VycikgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNvbnZlcnNpb24gZnJvbSAlcyB0byBEZWNpbWFsIGlzIG5vdCBzdXBwb3J0ZWQiLAorICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICAqY29udiA9IFB5X05vdEltcGxlbWVudGVkOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogUmV0dXJuIE5vdEltcGxlbWVudGVkIGZvciB1bnN1cHBvcnRlZCB0eXBlcy4gKi8KKyNkZWZpbmUgQ09OVkVSVF9PUChhLCB2LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBhLCB2LCBjb250ZXh0KSkgeyBcCisgICAgICAgIHJldHVybiAqKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfQklOT1AoYSwgYiwgdiwgdywgY29udGV4dCkgXAorICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgYSwgdiwgY29udGV4dCkpIHsgXAorICAgICAgICByZXR1cm4gKihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChOT1RfSU1QTCwgYiwgdywgY29udGV4dCkpIHsgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDT05WRVJUX1RFUk5PUChhLCBiLCBjLCB2LCB3LCB4LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBhLCB2LCBjb250ZXh0KSkgeyAgIFwKKyAgICAgICAgcmV0dXJuICooYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCBiLCB3LCBjb250ZXh0KSkgeyAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoTk9UX0lNUEwsIGMsIHgsIGNvbnRleHQpKSB7ICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuICooYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworLyogUmFpc2UgVHlwZUVycm9yIGZvciB1bnN1cHBvcnRlZCB0eXBlcy4gKi8KKyNkZWZpbmUgQ09OVkVSVF9PUF9SQUlTRShhLCB2LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBhLCB2LCBjb250ZXh0KSkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENPTlZFUlRfQklOT1BfUkFJU0UoYSwgYiwgdiwgdywgY29udGV4dCkgXAorICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgYSwgdiwgY29udGV4dCkpIHsgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghY29udmVydF9vcChUWVBFX0VSUiwgYiwgdywgY29udGV4dCkpIHsgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDT05WRVJUX1RFUk5PUF9SQUlTRShhLCBiLCBjLCB2LCB3LCB4LCBjb250ZXh0KSBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBhLCB2LCBjb250ZXh0KSkgeyAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCBiLCB3LCBjb250ZXh0KSkgeyAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKCooYSkpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIWNvbnZlcnRfb3AoVFlQRV9FUlIsIGMsIHgsIGNvbnRleHQpKSB7ICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoKihhKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRigqKGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgIEltcGxpY2l0IGNvbnZlcnNpb25zIHRvIERlY2ltYWwgZm9yIGNvbXBhcmlzb24gICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIENvbnZlcnQgcmF0aW9uYWxzIGZvciBjb21wYXJpc29uICovCitzdGF0aWMgUHlPYmplY3QgKlJhdGlvbmFsID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCittdWx0aXBseV9ieV9kZW5vbWluYXRvcihQeU9iamVjdCAqdiwgUHlPYmplY3QgKnIsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRlbm9tID0gTlVMTDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyAgICBtcGRfdCAqdnY7CisKKyAgICAvKiB2IGlzIG5vdCBzcGVjaWFsLCByIGlzIGEgcmF0aW9uYWwgKi8KKyAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHIsICJkZW5vbWluYXRvciIpOworICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZGVub20gPSBQeURlY19Gcm9tTG9uZ0V4YWN0KHRtcCwgY29udGV4dCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgaWYgKGRlbm9tID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdnYgPSBtcGRfcW5jb3B5KE1QRCh2KSk7CisgICAgaWYgKHZ2ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlbm9tKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoZGVub20pOworICAgICAgICBtcGRfZGVsKHZ2KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisgICAgLyogUHJldmVudCBPdmVyZmxvdyBpbiB0aGUgZm9sbG93aW5nIG11bHRpcGxpY2F0aW9uLiBUaGUgcmVzdWx0IG9mCisgICAgICAgdGhlIG11bHRpcGxpY2F0aW9uIGlzIG9ubHkgdXNlZCBpbiBtcGRfcWNtcCwgd2hpY2ggY2FuIGhhbmRsZQorICAgICAgIHZhbHVlcyB0aGF0IGFyZSB0ZWNobmljYWxseSBvdXQgb2YgYm91bmRzLCBsaWtlIChmb3IgMzItYml0KQorICAgICAgIDk5OTk5OTk5OTk5OTk5OTk5OTk5Li4uOTk5OTk5OTllKzQyNTAwMDAwMC4gKi8KKyAgICBleHAgPSB2di0+ZXhwOworICAgIHZ2LT5leHAgPSAwOworICAgIG1wZF9xbXVsKE1QRChyZXN1bHQpLCB2diwgTVBEKGRlbm9tKSwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgTVBEKHJlc3VsdCktPmV4cCA9IGV4cDsKKworICAgIFB5X0RFQ1JFRihkZW5vbSk7CisgICAgbXBkX2RlbCh2dik7CisgICAgLyogSWYgYW55IHN0YXR1cyBoYXMgYmVlbiBhY2N1bXVsYXRlZCBkdXJpbmcgdGhlIG11bHRpcGxpY2F0aW9uLAorICAgICAgIHRoZSByZXN1bHQgaXMgaW52YWxpZC4gVGhpcyBpcyB2ZXJ5IHVubGlrZWx5LCBzaW5jZSBldmVuIHRoZQorICAgICAgIDMyLWJpdCB2ZXJzaW9uIHN1cHBvcnRzIDQyNTAwMDAwMCBkaWdpdHMuICovCisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJleGFjdCBjb252ZXJzaW9uIGZvciBjb21wYXJpc29uIGZhaWxlZCIpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK251bWVyYXRvcl9hc19kZWNpbWFsKFB5T2JqZWN0ICpyLCBQeU9iamVjdCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqdG1wLCAqbnVtOworCisgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhyLCAibnVtZXJhdG9yIik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG51bSA9IFB5RGVjX0Zyb21Mb25nRXhhY3QodG1wLCBjb250ZXh0KTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbnVtOworfQorCisvKiBDb252ZXJ0IHYgYW5kIHcgZm9yIGNvbXBhcmlzb24uIHYgaXMgYSBEZWNpbWFsLiBJZiB3IGlzIGEgUmF0aW9uYWwsIGJvdGgKKyAgIHYgYW5kIHcgaGF2ZSB0byBiZSB0cmFuc2Zvcm1lZC4gUmV0dXJuIDEgZm9yIHN1Y2Nlc3MsIHdpdGggbmV3IHJlZmVyZW5jZXMKKyAgIHRvIHRoZSBjb252ZXJ0ZWQgb2JqZWN0cyBpbiB2Y21wIGFuZCB3Y21wLiBSZXR1cm4gMCBmb3IgZmFpbHVyZS4gSW4gdGhhdAorICAgY2FzZSB3Y21wIGlzIGVpdGhlciBOVUxMIG9yIFB5X05vdEltcGxlbWVudGVkIChuZXcgcmVmZXJlbmNlKSBhbmQgdmNtcAorICAgaXMgdW5kZWZpbmVkLiAqLworc3RhdGljIGludAorY29udmVydF9vcF9jbXAoUHlPYmplY3QgKip2Y21wLCBQeU9iamVjdCAqKndjbXAsIFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywKKyAgICAgICAgICAgICAgIGludCBvcCwgUHlPYmplY3QgKmNvbnRleHQpCit7CisgICAgbXBkX2NvbnRleHRfdCAqY3R4ID0gQ1RYKGNvbnRleHQpOworCisgICAgKnZjbXAgPSB2OworCisgICAgaWYgKFB5RGVjX0NoZWNrKHcpKSB7CisgICAgICAgIFB5X0lOQ1JFRih3KTsKKyAgICAgICAgKndjbXAgPSB3OworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2sodykpIHsKKyAgICAgICAgKndjbXAgPSBQeURlY19Gcm9tTG9uZ0V4YWN0KHcsIGNvbnRleHQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKHcpKSB7CisgICAgICAgIGlmIChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSAmJgorICAgICAgICAgICAgZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBNUERfRmxvYXRfb3BlcmF0aW9uKSkgeworICAgICAgICAgICAgKndjbXAgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY3R4LT5zdGF0dXMgfD0gTVBEX0Zsb2F0X29wZXJhdGlvbjsKKyAgICAgICAgICAgICp3Y21wID0gUHlEZWNfRnJvbUZsb2F0RXhhY3QodywgY29udGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoUHlDb21wbGV4X0NoZWNrKHcpICYmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkpIHsKKyAgICAgICAgUHlfY29tcGxleCBjID0gUHlDb21wbGV4X0FzQ0NvbXBsZXgodyk7CisgICAgICAgIGlmIChjLnJlYWwgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAqd2NtcCA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYy5pbWFnID09IDAuMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5RmxvYXRfRnJvbURvdWJsZShjLnJlYWwpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKndjbXAgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY3R4LT5zdGF0dXMgfD0gTVBEX0Zsb2F0X29wZXJhdGlvbjsKKyAgICAgICAgICAgICAgICAqd2NtcCA9IFB5RGVjX0Zyb21GbG9hdEV4YWN0KHRtcCwgY29udGV4dCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICAgICAgKndjbXAgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChQeU9iamVjdF9Jc0luc3RhbmNlKHcsIFJhdGlvbmFsKSkgeworICAgICAgICAqd2NtcCA9IG51bWVyYXRvcl9hc19kZWNpbWFsKHcsIGNvbnRleHQpOworICAgICAgICBpZiAoKndjbXAgJiYgIW1wZF9pc3NwZWNpYWwoTVBEKHYpKSkgeworICAgICAgICAgICAgKnZjbXAgPSBtdWx0aXBseV9ieV9kZW5vbWluYXRvcih2LCB3LCBjb250ZXh0KTsKKyAgICAgICAgICAgIGlmICgqdmNtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoKndjbXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICAqd2NtcCA9IFB5X05vdEltcGxlbWVudGVkOworICAgIH0KKworICAgIGlmICgqd2NtcCA9PSBOVUxMIHx8ICp3Y21wID09IFB5X05vdEltcGxlbWVudGVkKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoKnZjbXAgPT0gdikgeworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCisjZGVmaW5lIENPTlZFUlRfQklOT1BfQ01QKHZjbXAsIHdjbXAsIHYsIHcsIG9wLCBjdHgpIFwKKyAgICBpZiAoIWNvbnZlcnRfb3BfY21wKHZjbXAsIHdjbXAsIHYsIHcsIG9wLCBjdHgpKSB7ICBcCisgICAgICAgIHJldHVybiAqKHdjbXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnNpb25zIGZyb20gZGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2Zyb21hc2NpaShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtY3B5KFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyksIHMsIHNpemUpOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIFB5RGVjT2JqZWN0IGFzIGEgc3RyaW5nLiBUaGUgZGVmYXVsdCBtb2R1bGUgY29udGV4dCBpcyBvbmx5IHVzZWQgZm9yCisgICB0aGUgdmFsdWUgb2YgJ2NhcGl0YWxzJy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfc3RyKFB5T2JqZWN0ICpkZWMpCit7CisgICAgUHlPYmplY3QgKnJlcywgKmNvbnRleHQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpjcDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBzaXplID0gbXBkX3RvX3NjaV9zaXplKCZjcCwgTVBEKGRlYyksIEN0eENhcHMoY29udGV4dCkpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSB1bmljb2RlX2Zyb21hc2NpaShjcCwgc2l6ZSk7CisgICAgbXBkX2ZyZWUoY3ApOworICAgIHJldHVybiByZXM7Cit9CisKKy8qIFJlcHJlc2VudGF0aW9uIG9mIGEgUHlEZWNPYmplY3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3JlcHIoUHlPYmplY3QgKmRlYykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqY29udGV4dDsKKyAgICBjaGFyICpjcDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBjcCA9IG1wZF90b19zY2koTVBEKGRlYyksIEN0eENhcHMoY29udGV4dCkpOworICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJEZWNpbWFsKCclcycpIiwgY3ApOworICAgIG1wZF9mcmVlKGNwKTsKKyAgICByZXR1cm4gcmVzOworfQorCisvKiBDb252ZXJ0IGRlY2ltYWxfcG9pbnQgb3IgdGhvdXNhbmRzX3NlcCwgd2hpY2ggbWF5IGJlIG11bHRpYnl0ZSBvciBpbgorICAgdGhlIHJhbmdlIFsxMjgsIDI1NV0sIHRvIGEgVVRGOCBzdHJpbmcuICovCitzdGF0aWMgUHlPYmplY3QgKgorZG90c2VwX2FzX3V0ZjgoY29uc3QgY2hhciAqcykKK3sKKyAgICBQeU9iamVjdCAqdXRmODsKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHdjaGFyX3QgYnVmWzJdOworICAgIHNpemVfdCBuOworCisgICAgbiA9IG1ic3Rvd2NzKGJ1ZiwgcywgMik7CisgICAgaWYgKG4gIT0gMSkgeyAvKiBJc3N1ZSAjNzQ0MiAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIGRlY2ltYWwgcG9pbnQgb3IgdW5zdXBwb3J0ZWQgIgorICAgICAgICAgICAgImNvbWJpbmF0aW9uIG9mIExDX0NUWVBFIGFuZCBMQ19OVU1FUklDIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB0bXAgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGJ1Ziwgbik7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB1dGY4ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiB1dGY4OworfQorCisvKiBGb3JtYXR0ZWQgcmVwcmVzZW50YXRpb24gb2YgYSBQeURlY09iamVjdC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfZm9ybWF0KFB5T2JqZWN0ICpkZWMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpvdmVycmlkZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRvdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmdyb3VwaW5nID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm10ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm10YXJnOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIG1wZF9zcGVjX3Qgc3BlYzsKKyAgICBjaGFyICpkZWNzdHJpbmc9IE5VTEw7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBzaXplX3QgbjsKKworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPIiwgJmZtdGFyZywgJm92ZXJyaWRlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGZtdGFyZykpIHsKKyAgICAgICAgZm10ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhmbXRhcmcpOworICAgICAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImZvcm1hdCBhcmcgbXVzdCBiZSBzdHIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFtcGRfcGFyc2VfZm10X3N0cigmc3BlYywgUHlCeXRlc19BU19TVFJJTkcoZm10KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEN0eENhcHMoY29udGV4dCkpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImludmFsaWQgZm9ybWF0IHN0cmluZyIpOworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisgICAgaWYgKG92ZXJyaWRlKSB7CisgICAgICAgIC8qIFZhbHVlcyBmb3IgZGVjaW1hbF9wb2ludCwgdGhvdXNhbmRzX3NlcCBhbmQgZ3JvdXBpbmcgY2FuCisgICAgICAgICAgIGJlIGV4cGxpY2l0bHkgc3BlY2lmaWVkIGluIHRoZSBvdmVycmlkZSBkaWN0LiBUaGVzZSB2YWx1ZXMKKyAgICAgICAgICAgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIHZhbHVlcyBvYnRhaW5lZCBmcm9tIGxvY2FsZWNvbnYoKQorICAgICAgICAgICBpbiBtcGRfcGFyc2VfZm10X3N0cigpLiBUaGUgZmVhdHVyZSBpcyBub3QgZG9jdW1lbnRlZCBhbmQKKyAgICAgICAgICAgaXMgb25seSB1c2VkIGluIHRlc3RfZGVjaW1hbC4gKi8KKyAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ZlcnJpZGUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJvcHRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGEgZGljdCIpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChkb3QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhvdmVycmlkZSwgImRlY2ltYWxfcG9pbnQiKSkpIHsKKyAgICAgICAgICAgIGlmICgoZG90ID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhkb3QpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjLmRvdCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGRvdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChzZXAgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhvdmVycmlkZSwgInRob3VzYW5kc19zZXAiKSkpIHsKKyAgICAgICAgICAgIGlmICgoc2VwID0gUHlVbmljb2RlX0FzVVRGOFN0cmluZyhzZXApKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzcGVjLnNlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlcCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChncm91cGluZyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG92ZXJyaWRlLCAiZ3JvdXBpbmciKSkpIHsKKyAgICAgICAgICAgIGlmICgoZ3JvdXBpbmcgPSBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKGdyb3VwaW5nKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3BlYy5ncm91cGluZyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGdyb3VwaW5nKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX3ZhbGlkYXRlX2xjb252KCZzcGVjKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIG92ZXJyaWRlIGRpY3QiKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuID0gc3RybGVuKHNwZWMuZG90KTsKKyAgICAgICAgaWYgKG4gPiAxIHx8IChuID09IDEgJiYgIWlzYXNjaWkoKHVjaGFyKXNwZWMuZG90WzBdKSkpIHsKKyAgICAgICAgICAgIC8qIGZpeCBsb2NhbGUgZGVwZW5kZW50IG5vbi1hc2NpaSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICBkb3QgPSBkb3RzZXBfYXNfdXRmOChzcGVjLmRvdCk7CisgICAgICAgICAgICBpZiAoZG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuZG90ID0gUHlCeXRlc19BU19TVFJJTkcoZG90KTsKKyAgICAgICAgfQorICAgICAgICBuID0gc3RybGVuKHNwZWMuc2VwKTsKKyAgICAgICAgaWYgKG4gPiAxIHx8IChuID09IDEgJiYgIWlzYXNjaWkoKHVjaGFyKXNwZWMuc2VwWzBdKSkpIHsKKyAgICAgICAgICAgIC8qIGZpeCBsb2NhbGUgZGVwZW5kZW50IG5vbi1hc2NpaSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICBzZXAgPSBkb3RzZXBfYXNfdXRmOChzcGVjLnNlcCk7CisgICAgICAgICAgICBpZiAoc2VwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNwZWMuc2VwID0gUHlCeXRlc19BU19TVFJJTkcoc2VwKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgZGVjc3RyaW5nID0gbXBkX3Fmb3JtYXRfc3BlYyhNUEQoZGVjKSwgJnNwZWMsIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgaWYgKGRlY3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIHJlc3VsdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGRlY3N0cmluZywgc3RybGVuKGRlY3N0cmluZyksIE5VTEwpOworCisKK2ZpbmlzaDoKKyAgICBQeV9YREVDUkVGKGdyb3VwaW5nKTsKKyAgICBQeV9YREVDUkVGKHNlcCk7CisgICAgUHlfWERFQ1JFRihkb3QpOworICAgIFB5X1hERUNSRUYoZm10KTsKKyAgICBpZiAoZGVjc3RyaW5nKSBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIFJldHVybiBhIFB5TG9uZ09iamVjdCBmcm9tIGEgUHlEZWNPYmplY3QsIHVzaW5nIHRoZSBzcGVjaWZpZWQgcm91bmRpbmcKKyAqIG1vZGUuIFRoZSBjb250ZXh0IHByZWNpc2lvbiBpcyBub3Qgb2JzZXJ2ZWQuICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2FzX2xvbmcoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmNvbnRleHQsIGludCByb3VuZCkKK3sKKyAgICBQeUxvbmdPYmplY3QgKnB5bG9uZzsKKyAgICBkaWdpdCAqb2JfZGlnaXQ7CisgICAgc2l6ZV90IG47CisgICAgUHlfc3NpemVfdCBpOworICAgIG1wZF90ICp4OworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoTVBEKGRlYykpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oTVBEKGRlYykpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBpbnRlZ2VyIik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgeCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgd29ya2N0eCA9ICpDVFgoY29udGV4dCk7CisgICAgd29ya2N0eC5yb3VuZCA9IHJvdW5kOworICAgIG1wZF9xcm91bmRfdG9faW50KHgsIE1QRChkZWMpLCAmd29ya2N0eCwgJnN0YXR1cyk7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBtcGRfZGVsKHgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzdGF0dXMgPSAwOworICAgIG9iX2RpZ2l0ID0gTlVMTDsKKyNpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAzMAorICAgIG4gPSBtcGRfcWV4cG9ydF91MzIoJm9iX2RpZ2l0LCAwLCBQeUxvbmdfQkFTRSwgeCwgJnN0YXR1cyk7CisjZWxpZiBQWUxPTkdfQklUU19JTl9ESUdJVCA9PSAxNQorICAgIG4gPSBtcGRfcWV4cG9ydF91MTYoJm9iX2RpZ2l0LCAwLCBQeUxvbmdfQkFTRSwgeCwgJnN0YXR1cyk7CisjZWxzZQorICAgICNlcnJvciAiUFlMT05HX0JJVFNfSU5fRElHSVQgc2hvdWxkIGJlIDE1IG9yIDMwIgorI2VuZGlmCisKKyAgICBpZiAobiA9PSBTSVpFX01BWCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBtcGRfZGVsKHgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBhc3NlcnQobiA+IDApOworICAgIHB5bG9uZyA9IF9QeUxvbmdfTmV3KG4pOworICAgIGlmIChweWxvbmcgPT0gTlVMTCkgeworICAgICAgICBtcGRfZnJlZShvYl9kaWdpdCk7CisgICAgICAgIG1wZF9kZWwoeCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbWNweShweWxvbmctPm9iX2RpZ2l0LCBvYl9kaWdpdCwgbiAqIHNpemVvZihkaWdpdCkpOworICAgIG1wZF9mcmVlKG9iX2RpZ2l0KTsKKworICAgIGkgPSBuOworICAgIHdoaWxlICgoaSA+IDApICYmIChweWxvbmctPm9iX2RpZ2l0W2ktMV0gPT0gMCkpIHsKKyAgICAgICAgaS0tOworICAgIH0KKworICAgIFB5X1NJWkUocHlsb25nKSA9IGk7CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKHgpICYmICFtcGRfaXN6ZXJvKHgpKSB7CisgICAgICAgIFB5X1NJWkUocHlsb25nKSA9IC1pOworICAgIH0KKworICAgIG1wZF9kZWwoeCk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBweWxvbmc7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Ub0ludGVncmFsVmFsdWUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicm91bmRpbmciLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgaW50IHJvdW5kID0gLTE7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpTyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm91bmQsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKworICAgIHdvcmtjdHggPSAqQ1RYKGNvbnRleHQpOworICAgIGlmIChyb3VuZCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzZXRyb3VuZCgmd29ya2N0eCwgcm91bmQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9wdHIoaW52YWxpZF9yb3VuZGluZ19lcnIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xcm91bmRfdG9faW50KE1QRChyZXN1bHQpLCBNUEQoZGVjKSwgJndvcmtjdHgsICZzdGF0dXMpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Ub0ludGVncmFsRXhhY3QoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicm91bmRpbmciLCAiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgaW50IHJvdW5kID0gLTE7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpTyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm91bmQsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKworICAgIHdvcmtjdHggPSAqQ1RYKGNvbnRleHQpOworICAgIGlmIChyb3VuZCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzZXRyb3VuZCgmd29ya2N0eCwgcm91bmQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9wdHIoaW52YWxpZF9yb3VuZGluZ19lcnIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xcm91bmRfdG9faW50eChNUEQocmVzdWx0KSwgTVBEKGRlYyksICZ3b3JrY3R4LCAmc3RhdHVzKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorUHlEZWNfQXNGbG9hdChQeU9iamVjdCAqZGVjKQoreworICAgIFB5T2JqZWN0ICpmLCAqczsKKworICAgIGlmIChtcGRfaXNuYW4oTVBEKGRlYykpKSB7CisgICAgICAgIGlmIChtcGRfaXNzbmFuKE1QRChkZWMpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IHNpZ25hbGluZyBOYU4gdG8gZmxvYXQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShNUEQoZGVjKSkpIHsKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLW5hbiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJuYW4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcyA9IGRlY19zdHIoZGVjKTsKKyAgICB9CisKKyAgICBpZiAocyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGYgPSBQeUZsb2F0X0Zyb21TdHJpbmcocyk7CisgICAgUHlfREVDUkVGKHMpOworCisgICAgcmV0dXJuIGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY19Sb3VuZChQeU9iamVjdCAqZGVjLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp4ID0gTlVMTDsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZ4KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoeCkgeworICAgICAgICBtcGRfdWludF90IGRxWzFdID0gezF9OworICAgICAgICBtcGRfdCBxID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsMCwxLDEsMSxkcX07CisgICAgICAgIG1wZF9zc2l6ZV90IHk7CisKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soeCkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgIm9wdGlvbmFsIGFyZyBtdXN0IGJlIGFuIGludGVnZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgeSA9IFB5TG9uZ19Bc1NzaXplX3QoeCk7CisgICAgICAgIGlmICh5ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IGRlY19hbGxvYygpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcS5leHAgPSAoeSA9PSBNUERfU1NJWkVfTUlOKSA/IE1QRF9TU0laRV9NQVggOiAteTsKKyAgICAgICAgbXBkX3FxdWFudGl6ZShNUEQocmVzdWx0KSwgTVBEKGRlYyksICZxLCBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgICAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBkZWNfYXNfbG9uZyhkZWMsIGNvbnRleHQsIE1QRF9ST1VORF9IQUxGX0VWRU4pOworICAgIH0KK30KKworUHlPYmplY3QgKkRlY2ltYWxUdXBsZSA9IE5VTEw7CisvKiBSZXR1cm4gdGhlIERlY2ltYWxUdXBsZSByZXByZXNlbnRhdGlvbiBvZiBhIFB5RGVjT2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICoKK1B5RGVjX0FzVHVwbGUoUHlPYmplY3QgKmRlYywgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2lnbiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmNvZWZmID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXhwdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CisgICAgbXBkX3QgKnggPSBOVUxMOworICAgIGNoYXIgKmludHN0cmluZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpbnRsZW4sIGk7CisKKworICAgIHggPSBtcGRfcW5jb3B5KE1QRChkZWMpKTsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHNpZ24gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhtcGRfc2lnbihNUEQoZGVjKSkpOworICAgIGlmIChzaWduID09IE5VTEwpIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKG1wZF9pc2luZmluaXRlKHgpKSB7CisgICAgICAgIGV4cHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiRiIpOworICAgICAgICBpZiAoZXhwdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWNpbWFsLnB5IGhhcyBub24tY29tcGxpYW50IGluZmluaXR5IHBheWxvYWRzLiAqLworICAgICAgICBjb2VmZiA9IFB5X0J1aWxkVmFsdWUoIihpKSIsIDApOworICAgICAgICBpZiAoY29lZmYgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oeCkpIHsKKyAgICAgICAgICAgIGV4cHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtcGRfaXNxbmFuKHgpPyJuIjoiTiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXhwdCA9IFB5TG9uZ19Gcm9tU3NpemVfdChNUEQoZGVjKS0+ZXhwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhwdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIGNvZWZmaWNpZW50IGlzIGRlZmluZWQgKi8KKyAgICAgICAgaWYgKHgtPmxlbiA+IDApIHsKKworICAgICAgICAgICAgLyogbWFrZSBhbiBpbnRlZ2VyICovCisgICAgICAgICAgICB4LT5leHAgPSAwOworICAgICAgICAgICAgLyogY2xlYXIgTmFOIGFuZCBzaWduICovCisgICAgICAgICAgICBtcGRfY2xlYXJfZmxhZ3MoeCk7CisgICAgICAgICAgICBpbnRzdHJpbmcgPSBtcGRfdG9fc2NpKHgsIDEpOworICAgICAgICAgICAgaWYgKGludHN0cmluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50bGVuID0gc3RybGVuKGludHN0cmluZyk7CisgICAgICAgICAgICBjb2VmZiA9IFB5VHVwbGVfTmV3KGludGxlbik7CisgICAgICAgICAgICBpZiAoY29lZmYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaW50bGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICB0bXAgPSBQeUxvbmdfRnJvbUxvbmcoaW50c3RyaW5nW2ldLScwJyk7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGNvZWZmLCBpLCB0bXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29lZmYgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgICAgIGlmIChjb2VmZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKERlY2ltYWxUdXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24sIGNvZWZmLCBleHB0LCBOVUxMKTsKKworb3V0OgorICAgIGlmICh4KSBtcGRfZGVsKHgpOworICAgIGlmIChpbnRzdHJpbmcpIG1wZF9mcmVlKGludHN0cmluZyk7CisgICAgUHlfWERFQ1JFRihzaWduKTsKKyAgICBQeV9YREVDUkVGKGNvZWZmKTsKKyAgICBQeV9YREVDUkVGKGV4cHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgTWFjcm9zIGZvciBjb252ZXJ0aW5nIG1wZGVjaW1hbCBmdW5jdGlvbnMgdG8gRGVjaW1hbCBtZXRob2RzICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBVbmFyeSBudW1iZXIgbWV0aG9kIHRoYXQgdXNlcyB0aGUgZGVmYXVsdCBtb2R1bGUgY29udGV4dC4gKi8KKyNkZWZpbmUgRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK25tXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoc2VsZiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQmluYXJ5IG51bWJlciBtZXRob2QgdGhhdCB1c2VzIGRlZmF1bHQgbW9kdWxlIGNvbnRleHQuICovCisjZGVmaW5lIERlY19CaW5hcnlOdW1iZXJNZXRob2QoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitubV8jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlcikgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCkgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1AoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogQm9vbGVhbiBmdW5jdGlvbiB3aXRob3V0IGEgY29udGV4dCBhcmcuICovCisjZGVmaW5lIERlY19Cb29sRnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKSAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIE1QREZVTkMoTVBEKHNlbGYpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOyBcCit9CisKKy8qIEJvb2xlYW4gZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gKi8KKyNkZWZpbmUgRGVjX0Jvb2xGdW5jVkEoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LCAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIE1QREZVTkMoTVBEKHNlbGYpLCBDVFgoY29udGV4dCkpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7IFwKK30KKworLyogVW5hcnkgZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gKi8KKyNkZWZpbmUgRGVjX1VuYXJ5RnVuY1ZBKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RlY18jI01QREZVTkMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbnRleHQiLCBOVUxMfTsgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCkpIHsgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoc2VsZiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7ICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogVW5hcnkgZnVuY3Rpb24gd2l0aCBhbiBvcHRpb25hbCBjb250ZXh0IGFyZy4gVGhlIGFjdHVhbCBNUERGVU5DCisgICBvbmx5IHRha2VzIGEgc3RhdHVzIHBhcmFtZXRlci4gKi8KKyNkZWZpbmUgRGVjX1VuYXJ5RnVuY1ZBX05PX0NUWChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmNvbnRleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQpKSB7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKHNlbGYpLCAmc3RhdHVzKTsgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfQmluYXJ5RnVuY1ZBKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpvdGhlciwgKmNvbnRleHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE8iLCBrd2xpc3QsICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmY29udGV4dCkpIHsgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOyAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiBBY3R1YWwgTVBERlVOQyBkb2VzCisgICBOT1QgdGFrZSBhIGNvbnRleHQuIFRoZSBjb250ZXh0IGlzIHVzZWQgdG8gcmVjb3JkIEludmFsaWRPcGVyYXRpb24KKyAgIGlmIHRoZSBzZWNvbmQgb3BlcmFuZCBjYW5ub3QgYmUgY29udmVydGVkIGV4YWN0bHkuICovCisjZGVmaW5lIERlY19CaW5hcnlGdW5jVkFfTk9fQ1RYKE1QREZVTkMpIFwKK3N0YXRpYyBQeU9iamVjdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitkZWNfIyNNUERGVU5DKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsgICAgICAgICBcCisgICAgUHlPYmplY3QgKm90aGVyLCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICphLCAqYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm90aGVyLCAmY29udGV4dCkpIHsgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYikpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyogVGVybmFyeSBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIGNvbnRleHQgYXJnLiAqLworI2RlZmluZSBEZWNfVGVybmFyeUZ1bmNWQShNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZGVjXyMjTVBERlVOQyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKSAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJ0aGlyZCIsICJjb250ZXh0IiwgTlVMTH07ICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpvdGhlciwgKnRoaXJkLCAqY29udGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmIsICpjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPT3xPIiwga3dsaXN0LCAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZ0aGlyZCwgJmNvbnRleHQpKSB7ICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9URVJOT1BfUkFJU0UoJmEsICZiLCAmYywgc2VsZiwgb3RoZXIsIHRoaXJkLCBjb250ZXh0KTsgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksIE1QRChjKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgIE51bWJlciBtZXRob2RzICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKG1wZF9xbWludXMpCitEZWNfVW5hcnlOdW1iZXJNZXRob2QobXBkX3FwbHVzKQorRGVjX1VuYXJ5TnVtYmVyTWV0aG9kKG1wZF9xYWJzKQorCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xYWRkKQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcXN1YikKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FtdWwpCitEZWNfQmluYXJ5TnVtYmVyTWV0aG9kKG1wZF9xZGl2KQorRGVjX0JpbmFyeU51bWJlck1ldGhvZChtcGRfcXJlbSkKK0RlY19CaW5hcnlOdW1iZXJNZXRob2QobXBkX3FkaXZpbnQpCisKK3N0YXRpYyBQeU9iamVjdCAqCitubV9kZWNfYXNfbG9uZyhQeU9iamVjdCAqZGVjKQoreworICAgIFB5T2JqZWN0ICpjb250ZXh0OworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIHJldHVybiBkZWNfYXNfbG9uZyhkZWMsIGNvbnRleHQsIE1QRF9ST1VORF9ET1dOKTsKK30KKworc3RhdGljIGludAorbm1fbm9uemVybyhQeU9iamVjdCAqdikKK3sKKyAgICByZXR1cm4gIW1wZF9pc3plcm8oTVBEKHYpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25tX21wZF9xZGl2bW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKK3sKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnEsICpyOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgUHlPYmplY3QgKnJldDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICBxID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHEgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHIgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAociA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xZGl2bW9kKE1QRChxKSwgTVBEKHIpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgUHlfREVDUkVGKHIpOworICAgICAgICBQeV9ERUNSRUYocSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoIihPTykiLCBxLCByKTsKKyAgICBQeV9ERUNSRUYocik7CisgICAgUHlfREVDUkVGKHEpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBtcGRfdWludF90IGRhdGFfemVyb1sxXSA9IHswfTsKK3N0YXRpYyBjb25zdCBtcGRfdCB6ZXJvID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsIGRhdGFfemVyb307CisKK3N0YXRpYyBQeU9iamVjdCAqCitubV9tcGRfcXBvdyhQeU9iamVjdCAqYmFzZSwgUHlPYmplY3QgKmV4cCwgUHlPYmplY3QgKm1vZCkKK3sKKyAgICBQeU9iamVjdCAqYSwgKmIsICpjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUCgmYSwgJmIsIGJhc2UsIGV4cCwgY29udGV4dCk7CisKKyAgICBpZiAobW9kICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFjb252ZXJ0X29wKE5PVF9JTVBMLCAmYywgbW9kLCBjb250ZXh0KSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIFB5X1hERUNSRUYoYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChjID09IE5VTEwpIHsKKyAgICAgICAgbXBkX3Fwb3coTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLAorICAgICAgICAgICAgICAgICBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3Fwb3dtb2QoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBNUEQoYyksCisgICAgICAgICAgICAgICAgICAgIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgICAgIFB5X0RFQ1JFRihjKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCBNZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogVW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfVW5hcnlGdW5jVkEobXBkX3FleHApCitEZWNfVW5hcnlGdW5jVkEobXBkX3FsbikKK0RlY19VbmFyeUZ1bmNWQShtcGRfcWxvZzEwKQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbmV4dF9taW51cykKK0RlY19VbmFyeUZ1bmNWQShtcGRfcW5leHRfcGx1cykKK0RlY19VbmFyeUZ1bmNWQShtcGRfcXJlZHVjZSkKK0RlY19VbmFyeUZ1bmNWQShtcGRfcXNxcnQpCisKKy8qIEJpbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KK0RlY19CaW5hcnlGdW5jVkEobXBkX3Fjb21wYXJlKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcWNvbXBhcmVfc2lnbmFsKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW1heCkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FtYXhfbWFnKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW1pbikKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FtaW5fbWFnKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcW5leHRfdG93YXJkKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXJlbV9uZWFyKQorCisvKiBUZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX1Rlcm5hcnlGdW5jVkEobXBkX3FmbWEpCisKKy8qIEJvb2xlYW4gZnVuY3Rpb25zLCBubyBjb250ZXh0IGFyZyAqLworRGVjX0Jvb2xGdW5jKG1wZF9pc2Nhbm9uaWNhbCkKK0RlY19Cb29sRnVuYyhtcGRfaXNmaW5pdGUpCitEZWNfQm9vbEZ1bmMobXBkX2lzaW5maW5pdGUpCitEZWNfQm9vbEZ1bmMobXBkX2lzbmFuKQorRGVjX0Jvb2xGdW5jKG1wZF9pc3FuYW4pCitEZWNfQm9vbEZ1bmMobXBkX2lzc25hbikKK0RlY19Cb29sRnVuYyhtcGRfaXNzaWduZWQpCitEZWNfQm9vbEZ1bmMobXBkX2lzemVybykKKworLyogQm9vbGVhbiBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCitEZWNfQm9vbEZ1bmNWQShtcGRfaXNub3JtYWwpCitEZWNfQm9vbEZ1bmNWQShtcGRfaXNzdWJub3JtYWwpCisKKy8qIFVuYXJ5IGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX2FkamV4cChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBtcGRfc3NpemVfdCByZXR2YWw7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChNUEQoc2VsZikpKSB7CisgICAgICAgIHJldHZhbCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSBtcGRfYWRqZXhwKE1QRChzZWxmKSk7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXR2YWwpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX2Nhbm9uaWNhbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY29uanVnYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfcmFkaXgoUHlPYmplY3QgKnNlbGYgVU5VU0VELCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgX2RlY19zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxMCwgMCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogVW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyBmb3IgY29udmVyc2lvbiBlcnJvcnMgKi8KK0RlY19VbmFyeUZ1bmNWQV9OT19DVFgobXBkX3Fjb3B5X2FicykKK0RlY19VbmFyeUZ1bmNWQV9OT19DVFgobXBkX3Fjb3B5X25lZ2F0ZSkKKworLyogVW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xaW52ZXJ0KQorRGVjX1VuYXJ5RnVuY1ZBKG1wZF9xbG9nYikKKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfY2xhc3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKyAgICBjb25zdCBjaGFyICpjcDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE8iLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworCisgICAgY3AgPSBtcGRfY2xhc3MoTVBEKHNlbGYpLCBDVFgoY29udGV4dCkpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjcCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3RvX2VuZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiY29udGV4dCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKyAgICBjaGFyICpzOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udGV4dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIENPTlRFWFRfQ0hFQ0tfVkEoY29udGV4dCk7CisKKyAgICBzaXplID0gbXBkX3RvX2VuZ19zaXplKCZzLCBNUEQoc2VsZiksIEN0eENhcHMoY29udGV4dCkpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSB1bmljb2RlX2Zyb21hc2NpaShzLCBzaXplKTsKKyAgICBtcGRfZnJlZShzKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEJpbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworRGVjX0JpbmFyeUZ1bmNWQV9OT19DVFgobXBkX2NvbXBhcmVfdG90YWwpCitEZWNfQmluYXJ5RnVuY1ZBX05PX0NUWChtcGRfY29tcGFyZV90b3RhbF9tYWcpCisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfbXBkX3Fjb3B5X3NpZ24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im90aGVyIiwgImNvbnRleHQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqb3RoZXIsICpjb250ZXh0OworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3RoZXIsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgc2VsZiwgb3RoZXIsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHlfc2lnbihNUEQocmVzdWx0KSwgTVBEKGEpLCBNUEQoYiksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19tcGRfc2FtZV9xdWFudHVtKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJvdGhlciIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKm90aGVyLCAqY29udGV4dDsKKyAgICBQeU9iamVjdCAqYSwgKmI7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdGhlciwgJmNvbnRleHQpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBDT05URVhUX0NIRUNLX1ZBKGNvbnRleHQpOworICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCBzZWxmLCBvdGhlciwgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBtcGRfc2FtZV9xdWFudHVtKE1QRChhKSwgTVBEKGIpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBCaW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworRGVjX0JpbmFyeUZ1bmNWQShtcGRfcWFuZCkKK0RlY19CaW5hcnlGdW5jVkEobXBkX3FvcikKK0RlY19CaW5hcnlGdW5jVkEobXBkX3F4b3IpCisKK0RlY19CaW5hcnlGdW5jVkEobXBkX3Fyb3RhdGUpCitEZWNfQmluYXJ5RnVuY1ZBKG1wZF9xc2NhbGViKQorRGVjX0JpbmFyeUZ1bmNWQShtcGRfcXNoaWZ0KQorCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX21wZF9xcXVhbnRpemUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImV4cCIsICJyb3VuZGluZyIsICJjb250ZXh0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKncsICpjb250ZXh0OworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIGludCByb3VuZCA9IC0xOworCisgICAgQ1VSUkVOVF9DT05URVhUKGNvbnRleHQpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfGlPIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3LCAmcm91bmQsICZjb250ZXh0KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgQ09OVEVYVF9DSEVDS19WQShjb250ZXh0KTsKKworICAgIHdvcmtjdHggPSAqQ1RYKGNvbnRleHQpOworICAgIGlmIChyb3VuZCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzZXRyb3VuZCgmd29ya2N0eCwgcm91bmQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHlwZV9lcnJvcl9wdHIoaW52YWxpZF9yb3VuZGluZ19lcnIpOworICAgICAgICB9CisgICAgfQorCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcXF1YW50aXplKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgJndvcmtjdHgsICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBQeV9ERUNSRUYoYik7CisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogU3BlY2lhbCBtZXRob2RzICovCitzdGF0aWMgUHlPYmplY3QgKgorZGVjX3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQoreworICAgIFB5T2JqZWN0ICphOworICAgIFB5T2JqZWN0ICpiOworICAgIFB5T2JqZWN0ICpjb250ZXh0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgaW50IGFfaXNzbmFuLCBiX2lzc25hbjsKKyAgICBpbnQgcjsKKworICAgIGFzc2VydChQeURlY19DaGVjayh2KSk7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgQ09OVkVSVF9CSU5PUF9DTVAoJmEsICZiLCB2LCB3LCBvcCwgY29udGV4dCk7CisKKyAgICBhX2lzc25hbiA9IG1wZF9pc3NuYW4oTVBEKGEpKTsKKyAgICBiX2lzc25hbiA9IG1wZF9pc3NuYW4oTVBEKGIpKTsKKworICAgIHIgPSBtcGRfcWNtcChNUEQoYSksIE1QRChiKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAociA9PSBJTlRfTUFYKSB7CisgICAgICAgIC8qIHNOYU5zIG9yIG9wPXtsZSxnZSxsdCxndH0gYWx3YXlzIHNpZ25hbC4gKi8KKyAgICAgICAgaWYgKGFfaXNzbmFuIHx8IGJfaXNzbmFuIHx8IChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkpIHsKKyAgICAgICAgICAgIGlmIChkZWNfYWRkc3RhdHVzKGNvbnRleHQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBxTmFOIGNvbXBhcmlzb24gd2l0aCBvcD17ZXEsbmV9IG9yIGNvbXBhcmlzb24KKyAgICAgICAgICogd2l0aCBJbnZhbGlkT3BlcmF0aW9uIGRpc2FibGVkLiAqLworICAgICAgICByZXR1cm4gKG9wID09IFB5X05FKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOworICAgIH0KKworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIFB5X0VROgorICAgICAgICByID0gKHIgPT0gMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfTkU6CisgICAgICAgIHIgPSAociAhPSAwKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeV9MRToKKyAgICAgICAgciA9IChyIDw9IDApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5X0dFOgorICAgICAgICByID0gKHIgPj0gMCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfTFQ6CisgICAgICAgIHIgPSAociA9PSAtMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlfR1Q6CisgICAgICAgIHIgPSAociA9PSAxKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyKTsKK30KKworLyogX19jZWlsX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY2VpbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gZGVjX2FzX2xvbmcoc2VsZiwgY29udGV4dCwgTVBEX1JPVU5EX0NFSUxJTkcpOworfQorCisvKiBfX2NvbXBsZXhfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19jb21wbGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpmOworICAgIGRvdWJsZSB4OworCisgICAgZiA9IFB5RGVjX0FzRmxvYXQoc2VsZik7CisgICAgaWYgKGYgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZShmKTsKKyAgICBQeV9ERUNSRUYoZik7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUNvbXBsZXhfRnJvbURvdWJsZXMoeCwgMCk7Cit9CisKKy8qIF9fY29weV9fIGFuZCBfX2RlZXBjb3B5X18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfY29weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy8qIF9fZmxvb3JfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19mbG9vcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15IFVOVVNFRCkKK3sKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworICAgIENVUlJFTlRfQ09OVEVYVChjb250ZXh0KTsKKyAgICByZXR1cm4gZGVjX2FzX2xvbmcoc2VsZiwgY29udGV4dCwgTVBEX1JPVU5EX0ZMT09SKTsKK30KKworLyogQWx3YXlzIHVzZXMgdGhlIG1vZHVsZSBjb250ZXh0ICovCitzdGF0aWMgUHlfaGFzaF90CitfZGVjX2hhc2goUHlEZWNPYmplY3QgKnYpCit7CisjaWYgZGVmaW5lZChDT05GSUdfNjQpICYmIF9QeUhBU0hfQklUUyA9PSA2MQorICAgIC8qIDIqKjYxIC0gMSAqLworICAgIG1wZF91aW50X3QgcF9kYXRhWzFdID0gezIzMDU4NDMwMDkyMTM2OTM5NTFVTEx9OworICAgIG1wZF90IHAgPSB7TVBEX1BPU3xNUERfU1RBVElDfE1QRF9DT05TVF9EQVRBLCAwLCAxOSwgMSwgMSwgcF9kYXRhfTsKKyAgICAvKiBJbnZlcnNlIG9mIDEwIG1vZHVsbyBwICovCisgICAgbXBkX3VpbnRfdCBpbnYxMF9wX2RhdGFbMV0gPSB7MjA3NTI1ODcwODI5MjMyNDU1NlVMTH07CisgICAgbXBkX3QgaW52MTBfcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAwLCAxOSwgMSwgMSwgaW52MTBfcF9kYXRhfTsKKyNlbGlmIGRlZmluZWQoQ09ORklHXzMyKSAmJiBfUHlIQVNIX0JJVFMgPT0gMzEKKyAgICAvKiAyKiozMSAtIDEgKi8KKyAgICBtcGRfdWludF90IHBfZGF0YVsyXSA9IHsxNDc0ODM2NDdVTCwgMn07CisgICAgbXBkX3QgcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEwLCAyLCAyLCBwX2RhdGF9OworICAgIC8qIEludmVyc2Ugb2YgMTAgbW9kdWxvIHAgKi8KKyAgICBtcGRfdWludF90IGludjEwX3BfZGF0YVsyXSA9IHs1MDMyMzg1NTNVTCwgMX07CisgICAgbXBkX3QgaW52MTBfcCA9IHtNUERfUE9TfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAwLCAxMCwgMiwgMiwgaW52MTBfcF9kYXRhfTsKKyNlbHNlCisgICAgI2Vycm9yICJObyB2YWxpZCBjb21iaW5hdGlvbiBvZiBDT05GSUdfNjQsIENPTkZJR18zMiBhbmQgX1B5SEFTSF9CSVRTIgorI2VuZGlmCisgICAgY29uc3QgUHlfaGFzaF90IHB5X2hhc2hfaW5mID0gMzE0MTU5OworICAgIGNvbnN0IFB5X2hhc2hfdCBweV9oYXNoX25hbiA9IDA7CisgICAgbXBkX3VpbnRfdCB0ZW5fZGF0YVsxXSA9IHsxMH07CisgICAgbXBkX3QgdGVuID0ge01QRF9QT1N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwKKyAgICAgICAgICAgICAgICAgMCwgMiwgMSwgMSwgdGVuX2RhdGF9OworICAgIFB5X2hhc2hfdCByZXN1bHQ7CisgICAgbXBkX3QgKmV4cF9oYXNoID0gTlVMTDsKKyAgICBtcGRfdCAqdG1wID0gTlVMTDsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKyAgICBQeU9iamVjdCAqY29udGV4dDsKKworCisgICAgY29udGV4dCA9IGN1cnJlbnRfY29udGV4dCgpOworICAgIGlmIChjb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChtcGRfaXNzcGVjaWFsKE1QRCh2KSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oTVBEKHYpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiQ2Fubm90IGhhc2ggYSBzaWduYWxpbmcgTmFOIHZhbHVlIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbmFuKE1QRCh2KSkpIHsKKyAgICAgICAgICAgIHJldHVybiBweV9oYXNoX25hbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBweV9oYXNoX2luZiAqIG1wZF9hcml0aF9zaWduKE1QRCh2KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y3R4KTsKKyAgICBleHBfaGFzaCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKGV4cF9oYXNoID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIHRtcCA9IG1wZF9xbmV3KCk7CisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKworICAgIC8qCisgICAgICogZXhwKHYpOiBleHBvbmVudCBvZiB2CisgICAgICogaW50KHYpOiBjb2VmZmljaWVudCBvZiB2CisgICAgICovCisgICAgZXhwID0gTVBEKHYpLT5leHA7CisgICAgaWYgKGV4cCA+PSAwKSB7CisgICAgICAgIC8qIDEwKipleHAodikgJSBwICovCisgICAgICAgIG1wZF9xc3NldF9zc2l6ZSh0bXAsIGV4cCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgICAgIG1wZF9xcG93bW9kKGV4cF9oYXNoLCAmdGVuLCB0bXAsICZwLCAmbWF4Y3R4LCAmc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGludjEwX3AqKigtZXhwKHYpKSAlIHAgKi8KKyAgICAgICAgbXBkX3Fzc2V0X3NzaXplKHRtcCwgLWV4cCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgICAgIG1wZF9xcG93bW9kKGV4cF9oYXNoLCAmaW52MTBfcCwgdG1wLCAmcCwgJm1heGN0eCwgJnN0YXR1cyk7CisgICAgfQorCisgICAgLyogaGFzaCA9IChpbnQodikgKiBleHBfaGFzaCkgJSBwICovCisgICAgaWYgKCFtcGRfcWNvcHkodG1wLCBNUEQodiksICZzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKyAgICB0bXAtPmV4cCA9IDA7CisgICAgbXBkX3NldF9wb3NpdGl2ZSh0bXApOworCisgICAgbWF4Y3R4LnByZWMgPSBNUERfTUFYX1BSRUMgKyAyMTsKKyAgICBtYXhjdHguZW1heCA9IE1QRF9NQVhfRU1BWCArIDIxOworICAgIG1heGN0eC5lbWluID0gTVBEX01JTl9FTUlOIC0gMjE7CisKKyAgICBtcGRfcW11bCh0bXAsIHRtcCwgZXhwX2hhc2gsICZtYXhjdHgsICZzdGF0dXMpOworICAgIG1wZF9xcmVtKHRtcCwgdG1wLCAmcCwgJm1heGN0eCwgJnN0YXR1cyk7CisKKyAgICByZXN1bHQgPSBtcGRfcWdldF9zc2l6ZSh0bXAsICZzdGF0dXMpOworICAgIHJlc3VsdCA9IG1wZF9pc3Bvc2l0aXZlKE1QRCh2KSkgPyByZXN1bHQgOiAtcmVzdWx0OworICAgIHJlc3VsdCA9IChyZXN1bHQgPT0gLTEpID8gLTIgOiByZXN1bHQ7CisKKyAgICBpZiAoc3RhdHVzICE9IDApIHsKKyAgICAgICAgaWYgKHN0YXR1cyAmIE1QRF9NYWxsb2NfZXJyb3IpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZGVjX2hhc2g6IGludGVybmFsIGVycm9yOiBwbGVhc2UgcmVwb3J0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorCisKK2ZpbmlzaDoKKyAgICBpZiAoZXhwX2hhc2gpIG1wZF9kZWwoZXhwX2hhc2gpOworICAgIGlmICh0bXApIG1wZF9kZWwodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OworCittYWxsb2NfZXJyb3I6CisgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICByZXN1bHQgPSAtMTsKKyAgICBnb3RvIGZpbmlzaDsKK30KKworc3RhdGljIFB5X2hhc2hfdAorZGVjX2hhc2goUHlEZWNPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhc2ggPT0gLTEpIHsKKyAgICAgICAgc2VsZi0+aGFzaCA9IF9kZWNfaGFzaChzZWxmKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VsZi0+aGFzaDsKK30KKworLyogX19yZWR1Y2VfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKnN0cjsKKworICAgIHN0ciA9IGRlY19zdHIoc2VsZik7CisgICAgaWYgKHN0ciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKHNlbGYpLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogX19zaXplb2ZfXyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19zaXplb2YoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlfc3NpemVfdCByZXM7CisKKyAgICByZXMgPSBzaXplb2YoUHlEZWNPYmplY3QpOworICAgIGlmIChtcGRfaXNkeW5hbWljX2RhdGEoTVBEKHYpKSkgeworICAgICAgICByZXMgKz0gTVBEKHYpLT5hbGxvYyAqIHNpemVvZihtcGRfdWludF90KTsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOworfQorCisvKiBfX3RydW5jX18gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfdHJ1bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSBVTlVTRUQpCit7CisgICAgUHlPYmplY3QgKmNvbnRleHQ7CisKKyAgICBDVVJSRU5UX0NPTlRFWFQoY29udGV4dCk7CisgICAgcmV0dXJuIGRlY19hc19sb25nKHNlbGYsIGNvbnRleHQsIE1QRF9ST1VORF9ET1dOKTsKK30KKworLyogcmVhbCBhbmQgaW1hZyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2RlY19yZWFsKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlIFVOVVNFRCkKK3sKKyAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNfaW1hZyhQeU9iamVjdCAqc2VsZiBVTlVTRUQsIHZvaWQgKmNsb3N1cmUgVU5VU0VEKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgX2RlY19zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAwLCAwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyBQeUdldFNldERlZiBkZWNfZ2V0c2V0cyBbXSA9Cit7CisgIHsgInJlYWwiLCAoZ2V0dGVyKWRlY19yZWFsLCBOVUxMLCBOVUxMLCBOVUxMfSwKKyAgeyAiaW1hZyIsIChnZXR0ZXIpZGVjX2ltYWcsIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7TlVMTH0KK307CisKK3N0YXRpYyBQeU51bWJlck1ldGhvZHMgZGVjX251bWJlcl9tZXRob2RzID0KK3sKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FhZGQsCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xc3ViLAorICAgIChiaW5hcnlmdW5jKSBubV9tcGRfcW11bCwKKyAgICAoYmluYXJ5ZnVuYykgbm1fbXBkX3FyZW0sCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xZGl2bW9kLAorICAgICh0ZXJuYXJ5ZnVuYykgbm1fbXBkX3Fwb3csCisgICAgKHVuYXJ5ZnVuYykgbm1fbXBkX3FtaW51cywKKyAgICAodW5hcnlmdW5jKSBubV9tcGRfcXBsdXMsCisgICAgKHVuYXJ5ZnVuYykgbm1fbXBkX3FhYnMsCisgICAgKGlucXVpcnkpIG5tX25vbnplcm8sCisgICAgKHVuYXJ5ZnVuYykgMCwgICAvKiBubyBiaXQtY29tcGxlbWVudCAqLworICAgIChiaW5hcnlmdW5jKSAwLCAgLyogbm8gc2hpZnRsICovCisgICAgKGJpbmFyeWZ1bmMpIDAsICAvKiBubyBzaGlmdHIgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIGJpdC1hbmQgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIGJpdC14b3IgKi8KKyAgICAoYmluYXJ5ZnVuYykgMCwgIC8qIG5vIGJpdC1pb3IgKi8KKyAgICAodW5hcnlmdW5jKSBubV9kZWNfYXNfbG9uZywKKyAgICAwLCAgICAgICAgICAgICAgIC8qIG5iX3Jlc2VydmVkICovCisgICAgKHVuYXJ5ZnVuYykgUHlEZWNfQXNGbG9hdCwKKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9hZGQ7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2Vfc3VidHJhY3Q7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfbXVsdGlwbHk7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfcmVtYWluZGVyOyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogdGVybmFyeWZ1bmMgbmJfaW5wbGFjZV9wb3dlcjsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9sc2hpZnQ7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfcnNoaWZ0OyAqLworICAgIDAsICAgICAgICAgICAgICAgLyogYmluYXJ5ZnVuYyBuYl9pbnBsYWNlX2FuZDsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV94b3I7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2Vfb3I7ICovCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xZGl2aW50LCAgLyogYmluYXJ5ZnVuYyBuYl9mbG9vcl9kaXZpZGU7ICovCisgICAgKGJpbmFyeWZ1bmMpIG5tX21wZF9xZGl2LCAgICAgLyogYmluYXJ5ZnVuYyBuYl90cnVlX2RpdmlkZTsgKi8KKyAgICAwLCAgICAgICAgICAgICAgIC8qIGJpbmFyeWZ1bmMgbmJfaW5wbGFjZV9mbG9vcl9kaXZpZGU7ICovCisgICAgMCwgICAgICAgICAgICAgICAvKiBiaW5hcnlmdW5jIG5iX2lucGxhY2VfdHJ1ZV9kaXZpZGU7ICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgZGVjX21ldGhvZHMgW10gPQoreworICAvKiBVbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiZXhwIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWV4cCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19leHAgfSwKKyAgeyAibG4iLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbG4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG4gfSwKKyAgeyAibG9nMTAiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbG9nMTAsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9nMTAgfSwKKyAgeyAibmV4dF9taW51cyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FuZXh0X21pbnVzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX25leHRfbWludXMgfSwKKyAgeyAibmV4dF9wbHVzIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW5leHRfcGx1cywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19uZXh0X3BsdXMgfSwKKyAgeyAibm9ybWFsaXplIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXJlZHVjZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19ub3JtYWxpemUgfSwKKyAgeyAidG9faW50ZWdyYWwiLCAoUHlDRnVuY3Rpb24pUHlEZWNfVG9JbnRlZ3JhbFZhbHVlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3RvX2ludGVncmFsIH0sCisgIHsgInRvX2ludGVncmFsX2V4YWN0IiwgKFB5Q0Z1bmN0aW9uKVB5RGVjX1RvSW50ZWdyYWxFeGFjdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY190b19pbnRlZ3JhbF9leGFjdCB9LAorICB7ICJ0b19pbnRlZ3JhbF92YWx1ZSIsIChQeUNGdW5jdGlvbilQeURlY19Ub0ludGVncmFsVmFsdWUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfdG9faW50ZWdyYWxfdmFsdWUgfSwKKyAgeyAic3FydCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FzcXJ0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NxcnQgfSwKKworICAvKiBCaW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnICovCisgIHsgImNvbXBhcmUiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xY29tcGFyZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb21wYXJlIH0sCisgIHsgImNvbXBhcmVfc2lnbmFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWNvbXBhcmVfc2lnbmFsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvbXBhcmVfc2lnbmFsIH0sCisgIHsgIm1heCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FtYXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbWF4IH0sCisgIHsgIm1heF9tYWciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbWF4X21hZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19tYXhfbWFnIH0sCisgIHsgIm1pbiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FtaW4sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbWluIH0sCisgIHsgIm1pbl9tYWciLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xbWluX21hZywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19taW5fbWFnIH0sCisgIHsgIm5leHRfdG93YXJkIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcW5leHRfdG93YXJkLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX25leHRfdG93YXJkIH0sCisgIHsgInF1YW50aXplIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXF1YW50aXplLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3F1YW50aXplIH0sCisgIHsgInJlbWFpbmRlcl9uZWFyIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXJlbV9uZWFyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3JlbWFpbmRlcl9uZWFyIH0sCisKKyAgLyogVGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiZm1hIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcWZtYSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19mbWEgfSwKKworICAvKiBCb29sZWFuIGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KKyAgeyAiaXNfY2Fub25pY2FsIiwgZGVjX21wZF9pc2Nhbm9uaWNhbCwgTUVUSF9OT0FSR1MsIGRvY19pc19jYW5vbmljYWwgfSwKKyAgeyAiaXNfZmluaXRlIiwgZGVjX21wZF9pc2Zpbml0ZSwgTUVUSF9OT0FSR1MsIGRvY19pc19maW5pdGUgfSwKKyAgeyAiaXNfaW5maW5pdGUiLCBkZWNfbXBkX2lzaW5maW5pdGUsIE1FVEhfTk9BUkdTLCBkb2NfaXNfaW5maW5pdGUgfSwKKyAgeyAiaXNfbmFuIiwgZGVjX21wZF9pc25hbiwgTUVUSF9OT0FSR1MsIGRvY19pc19uYW4gfSwKKyAgeyAiaXNfcW5hbiIsIGRlY19tcGRfaXNxbmFuLCBNRVRIX05PQVJHUywgZG9jX2lzX3FuYW4gfSwKKyAgeyAiaXNfc25hbiIsIGRlY19tcGRfaXNzbmFuLCBNRVRIX05PQVJHUywgZG9jX2lzX3NuYW4gfSwKKyAgeyAiaXNfc2lnbmVkIiwgZGVjX21wZF9pc3NpZ25lZCwgTUVUSF9OT0FSR1MsIGRvY19pc19zaWduZWQgfSwKKyAgeyAiaXNfemVybyIsIGRlY19tcGRfaXN6ZXJvLCBNRVRIX05PQVJHUywgZG9jX2lzX3plcm8gfSwKKworICAvKiBCb29sZWFuIGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAiaXNfbm9ybWFsIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfaXNub3JtYWwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfaXNfbm9ybWFsIH0sCisgIHsgImlzX3N1Ym5vcm1hbCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX2lzc3Vibm9ybWFsLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2lzX3N1Ym5vcm1hbCB9LAorCisgIC8qIFVuYXJ5IGZ1bmN0aW9ucywgbm8gY29udGV4dCBhcmcgKi8KKyAgeyAiYWRqdXN0ZWQiLCBkZWNfbXBkX2FkamV4cCwgTUVUSF9OT0FSR1MsIGRvY19hZGp1c3RlZCB9LAorICB7ICJjYW5vbmljYWwiLCBkZWNfY2Fub25pY2FsLCBNRVRIX05PQVJHUywgZG9jX2Nhbm9uaWNhbCB9LAorICB7ICJjb25qdWdhdGUiLCBkZWNfY29uanVnYXRlLCBNRVRIX05PQVJHUywgZG9jX2Nvbmp1Z2F0ZSB9LAorICB7ICJyYWRpeCIsIGRlY19tcGRfcmFkaXgsIE1FVEhfTk9BUkdTLCBkb2NfcmFkaXggfSwKKworICAvKiBVbmFyeSBmdW5jdGlvbnMsIG9wdGlvbmFsIGNvbnRleHQgYXJnIGZvciBjb252ZXJzaW9uIGVycm9ycyAqLworICB7ICJjb3B5X2FicyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fjb3B5X2FicywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb3B5X2FicyB9LAorICB7ICJjb3B5X25lZ2F0ZSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fjb3B5X25lZ2F0ZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19jb3B5X25lZ2F0ZSB9LAorCisgIC8qIFVuYXJ5IGZ1bmN0aW9ucywgb3B0aW9uYWwgY29udGV4dCBhcmcgKi8KKyAgeyAibG9nYiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fsb2diLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2IgfSwKKyAgeyAibG9naWNhbF9pbnZlcnQiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xaW52ZXJ0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2xvZ2ljYWxfaW52ZXJ0IH0sCisgIHsgIm51bWJlcl9jbGFzcyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX2NsYXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX251bWJlcl9jbGFzcyB9LAorICB7ICJ0b19lbmdfc3RyaW5nIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfdG9fZW5nLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3RvX2VuZ19zdHJpbmcgfSwKKworICAvKiBCaW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyBmb3IgY29udmVyc2lvbiBlcnJvcnMgKi8KKyAgeyAiY29tcGFyZV90b3RhbCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX2NvbXBhcmVfdG90YWwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY29tcGFyZV90b3RhbCB9LAorICB7ICJjb21wYXJlX3RvdGFsX21hZyIsIChQeUNGdW5jdGlvbilkZWNfbXBkX2NvbXBhcmVfdG90YWxfbWFnLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2NvbXBhcmVfdG90YWxfbWFnIH0sCisgIHsgImNvcHlfc2lnbiIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3Fjb3B5X3NpZ24sIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfY29weV9zaWduIH0sCisgIHsgInNhbWVfcXVhbnR1bSIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3NhbWVfcXVhbnR1bSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19zYW1lX3F1YW50dW0gfSwKKworICAvKiBCaW5hcnkgZnVuY3Rpb25zLCBvcHRpb25hbCBjb250ZXh0IGFyZyAqLworICB7ICJsb2dpY2FsX2FuZCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FhbmQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBkb2NfbG9naWNhbF9hbmQgfSwKKyAgeyAibG9naWNhbF9vciIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FvciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2dpY2FsX29yIH0sCisgIHsgImxvZ2ljYWxfeG9yIiwgKFB5Q0Z1bmN0aW9uKWRlY19tcGRfcXhvciwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19sb2dpY2FsX3hvciB9LAorICB7ICJyb3RhdGUiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xcm90YXRlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3JvdGF0ZSB9LAorICB7ICJzY2FsZWIiLCAoUHlDRnVuY3Rpb24pZGVjX21wZF9xc2NhbGViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX3NjYWxlYiB9LAorICB7ICJzaGlmdCIsIChQeUNGdW5jdGlvbilkZWNfbXBkX3FzaGlmdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGRvY19zaGlmdCB9LAorCisgIC8qIE1pc2NlbGxhbmVvdXMgKi8KKyAgeyAiZnJvbV9mbG9hdCIsIGRlY19mcm9tX2Zsb2F0LCBNRVRIX098TUVUSF9DTEFTUywgZG9jX2Zyb21fZmxvYXQgfSwKKyAgeyAiYXNfdHVwbGUiLCBQeURlY19Bc1R1cGxlLCBNRVRIX05PQVJHUywgZG9jX2FzX3R1cGxlIH0sCisKKyAgLyogU3BlY2lhbCBtZXRob2RzICovCisgIHsgIl9fY29weV9fIiwgZGVjX2NvcHksIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fZGVlcGNvcHlfXyIsIGRlY19jb3B5LCBNRVRIX08sIE5VTEwgfSwKKyAgeyAiX19mb3JtYXRfXyIsIGRlY19mb3JtYXQsIE1FVEhfVkFSQVJHUywgTlVMTCB9LAorICB7ICJfX3JlZHVjZV9fIiwgZGVjX3JlZHVjZSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19yb3VuZF9fIiwgUHlEZWNfUm91bmQsIE1FVEhfVkFSQVJHUywgTlVMTCB9LAorICB7ICJfX2NlaWxfXyIsIGRlY19jZWlsLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJfX2Zsb29yX18iLCBkZWNfZmxvb3IsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgIHsgIl9fdHJ1bmNfXyIsIGRlY190cnVuYywgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19jb21wbGV4X18iLCBkZWNfY29tcGxleCwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19zaXplb2ZfXyIsIGRlY19zaXplb2YsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisKKyAgeyBOVUxMLCBOVUxMLCAxIH0KK307CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEZWNfVHlwZSA9Cit7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImRlY2ltYWwuRGVjaW1hbCIsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlEZWNPYmplY3QpLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpIGRlY19kZWFsbG9jLCAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAoZ2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIChzZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKSBkZWNfcmVwciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAmZGVjX251bWJlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAoaGFzaGZ1bmMpIGRlY19oYXNoLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgKHJlcHJmdW5jKSBkZWNfc3RyLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIChQeUJ1ZmZlclByb2NzICopIDAsICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICAoUHlfVFBGTEFHU19ERUZBVUxUfAorICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFKSwgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGRvY19kZWNpbWFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICBkZWNfcmljaGNvbXBhcmUsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIGRlY19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBkZWNfZ2V0c2V0cywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGRlY19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBPYmplY3QsIFBhcnQgMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICBNYWNyb3MgZm9yIGNvbnZlcnRpbmcgbXBkZWNpbWFsIGZ1bmN0aW9ucyB0byBDb250ZXh0IG1ldGhvZHMgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBCb29sZWFuIGNvbnRleHQgbWV0aG9kLiAqLworI2RlZmluZSBEZWNDdHhfQm9vbEZ1bmMoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KSAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICpyZXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0ID0gTVBERlVOQyhNUEQoYSksIENUWChjb250ZXh0KSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJvb2xlYW4gY29udGV4dCBtZXRob2QuIE1QREZVTkMgZG9lcyBOT1QgdXNlIGEgY29udGV4dC4gKi8KKyNkZWZpbmUgRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KSAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldCA9IE1QREZVTkMoTVBEKGEpKSA/IGluY3JfdHJ1ZSgpIDogaW5jcl9mYWxzZSgpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBVbmFyeSBjb250ZXh0IG1ldGhvZC4gKi8KKyNkZWZpbmUgRGVjQ3R4X1VuYXJ5RnVuYyhNUERGVU5DKSBcCitzdGF0aWMgUHlPYmplY3QgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjdHhfIyNNUERGVU5DKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdCwgKmE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTVBERlVOQyhNUEQocmVzdWx0KSwgTVBEKGEpLCBDVFgoY29udGV4dCksICZzdGF0dXMpOyBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKGRlY19hZGRzdGF0dXMoY29udGV4dCwgc3RhdHVzKSkgeyAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit9CisKKy8qIEJpbmFyeSBjb250ZXh0IG1ldGhvZC4gKi8KKyNkZWZpbmUgRGVjQ3R4X0JpbmFyeUZ1bmMoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitjdHhfIyNNUERGVU5DKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqYXJncykgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICp2LCAqdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKmEsICpiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeyAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfQklOT1BfUkFJU0UoJmEsICZiLCB2LCB3LCBjb250ZXh0KTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgQ1RYKGNvbnRleHQpLCAmc3RhdHVzKTsgXAorICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworLyoKKyAqIEJpbmFyeSBjb250ZXh0IG1ldGhvZC4gVGhlIGNvbnRleHQgaXMgb25seSB1c2VkIGZvciBjb252ZXJzaW9uLgorICogVGhlIGFjdHVhbCBNUERGVU5DIGRvZXMgTk9UIHRha2UgYSBjb250ZXh0IGFyZy4KKyAqLworI2RlZmluZSBEZWNDdHhfQmluYXJ5RnVuY19OT19DVFgoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKSBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICp2LCAqdzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOyAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoKHJlc3VsdCA9IGRlY19hbGxvYygpKSA9PSBOVUxMKSB7ICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBNUERGVU5DKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSk7ICAgICAgICBcCisgICAgUHlfREVDUkVGKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihiKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvKiBUZXJuYXJ5IGNvbnRleHQgbWV0aG9kLiAqLworI2RlZmluZSBEZWNDdHhfVGVybmFyeUZ1bmMoTVBERlVOQykgXAorc3RhdGljIFB5T2JqZWN0ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2N0eF8jI01QREZVTkMoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICphcmdzKSAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5T2JqZWN0ICp2LCAqdywgKng7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBQeU9iamVjdCAqYSwgKmIsICpjOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlPYmplY3QgKnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT08iLCAmdiwgJncsICZ4KSkgeyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIENPTlZFUlRfVEVSTk9QX1JBSVNFKCZhLCAmYiwgJmMsIHYsIHcsIHgsIGNvbnRleHQpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKChyZXN1bHQgPSBkZWNfYWxsb2MoKSkgPT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIE1QREZVTkMoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBNUEQoYyksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7IFwKKyAgICBQeV9ERUNSRUYoYSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgUHlfREVDUkVGKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFB5X0RFQ1JFRihjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHJldHVybiByZXN1bHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworCisvKiBVbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcWFicykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FleHApCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xbG4pCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xbG9nMTApCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xbWludXMpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xbmV4dF9taW51cykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FuZXh0X3BsdXMpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xcGx1cykKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FyZWR1Y2UpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xcm91bmRfdG9faW50KQorRGVjQ3R4X1VuYXJ5RnVuYyhtcGRfcXJvdW5kX3RvX2ludHgpCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xc3FydCkKKworLyogQmluYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcWFkZCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xY29tcGFyZSkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xY29tcGFyZV9zaWduYWwpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcWRpdikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xZGl2aW50KQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FtYXgpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW1heF9tYWcpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcW1pbikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbWluX21hZykKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xbXVsKQorRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3FuZXh0X3Rvd2FyZCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xcXVhbnRpemUpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXJlbSkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xcmVtX25lYXIpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXN1YikKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfcWRpdm1vZChQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnYsICp3OworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcSwgKnI7CisgICAgdWludDMyX3Qgc3RhdHVzID0gMDsKKyAgICBQeU9iamVjdCAqcmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZ2LCAmdykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOworCisgICAgcSA9IGRlY19hbGxvYygpOworICAgIGlmIChxID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByID0gZGVjX2FsbG9jKCk7CisgICAgaWYgKHIgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYoYSk7CisgICAgICAgIFB5X0RFQ1JFRihiKTsKKyAgICAgICAgUHlfREVDUkVGKHEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWRpdm1vZChNUEQocSksIE1QRChyKSwgTVBEKGEpLCBNUEQoYiksIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyKTsKKyAgICAgICAgUHlfREVDUkVGKHEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeV9CdWlsZFZhbHVlKCIoT08pIiwgcSwgcik7CisgICAgUHlfREVDUkVGKHIpOworICAgIFB5X0RFQ1JFRihxKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBCaW5hcnkgb3IgdGVybmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfcXBvdyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiYSIsICJiIiwgIm1vZHVsbyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpiYXNlLCAqZXhwLCAqbW9kID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYSwgKmIsICpjID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT098TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmFzZSwgJmV4cCwgJm1vZCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIGJhc2UsIGV4cCwgY29udGV4dCk7CisKKyAgICBpZiAobW9kICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCFjb252ZXJ0X29wKFRZUEVfRVJSLCAmYywgbW9kLCBjb250ZXh0KSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICAgICAgUHlfREVDUkVGKGIpOworICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIFB5X1hERUNSRUYoYyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChjID09IE5VTEwpIHsKKyAgICAgICAgbXBkX3Fwb3coTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLAorICAgICAgICAgICAgICAgICBDVFgoY29udGV4dCksICZzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3Fwb3dtb2QoTVBEKHJlc3VsdCksIE1QRChhKSwgTVBEKGIpLCBNUEQoYyksCisgICAgICAgICAgICAgICAgICAgIENUWChjb250ZXh0KSwgJnN0YXR1cyk7CisgICAgICAgIFB5X0RFQ1JFRihjKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBUZXJuYXJ5IGFyaXRobWV0aWMgZnVuY3Rpb25zICovCitEZWNDdHhfVGVybmFyeUZ1bmMobXBkX3FmbWEpCisKKy8qIE5vIGFyZ3VtZW50ICovCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X21wZF9yYWRpeChQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmR1bW15KQoreworICAgIHJldHVybiBkZWNfbXBkX3JhZGl4KGNvbnRleHQsIGR1bW15KTsKK30KKworLyogQm9vbGVhbiBmdW5jdGlvbnM6IHNpbmdsZSBkZWNpbWFsIGFyZ3VtZW50ICovCitEZWNDdHhfQm9vbEZ1bmMobXBkX2lzbm9ybWFsKQorRGVjQ3R4X0Jvb2xGdW5jKG1wZF9pc3N1Ym5vcm1hbCkKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzZmluaXRlKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNpbmZpbml0ZSkKK0RlY0N0eF9Cb29sRnVuY19OT19DVFgobXBkX2lzbmFuKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNxbmFuKQorRGVjQ3R4X0Jvb2xGdW5jX05PX0NUWChtcGRfaXNzaWduZWQpCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc3NuYW4pCitEZWNDdHhfQm9vbEZ1bmNfTk9fQ1RYKG1wZF9pc3plcm8pCisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfaXNjYW5vbmljYWwoUHlPYmplY3QgKmNvbnRleHQgVU5VU0VELCBQeU9iamVjdCAqdikKK3sKKyAgICBpZiAoIVB5RGVjX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhIERlY2ltYWwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9pc2Nhbm9uaWNhbChNUEQodikpID8gaW5jcl90cnVlKCkgOiBpbmNyX2ZhbHNlKCk7Cit9CisKKy8qIEZ1bmN0aW9ucyB3aXRoIGEgc2luZ2xlIGRlY2ltYWwgYXJndW1lbnQgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitQeURlY0NvbnRleHRfQXBwbHkoUHlPYmplY3QgKmNvbnRleHQsIFB5T2JqZWN0ICp2KQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQsICphOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYXBwbHkoYSwgY29udGV4dCk7CisgICAgUHlfREVDUkVGKGEpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfY2Fub25pY2FsKFB5T2JqZWN0ICpjb250ZXh0IFVOVVNFRCwgUHlPYmplY3QgKnYpCit7CisgICAgaWYgKCFQeURlY19DaGVjayh2KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgYSBEZWNpbWFsIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRih2KTsKKyAgICByZXR1cm4gdjsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfcWNvcHlfYWJzKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYTsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHlfYWJzKE1QRChyZXN1bHQpLCBNUEQoYSksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY3R4X2NvcHlfZGVjaW1hbChQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJnJlc3VsdCwgdiwgY29udGV4dCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfcWNvcHlfbmVnYXRlKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqYTsKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworCisgICAgQ09OVkVSVF9PUF9SQUlTRSgmYSwgdiwgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtcGRfcWNvcHlfbmVnYXRlKE1QRChyZXN1bHQpLCBNUEQoYSksICZzdGF0dXMpOworICAgIFB5X0RFQ1JFRihhKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitEZWNDdHhfVW5hcnlGdW5jKG1wZF9xbG9nYikKK0RlY0N0eF9VbmFyeUZ1bmMobXBkX3FpbnZlcnQpCisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX2NsYXNzKFB5T2JqZWN0ICpjb250ZXh0LCBQeU9iamVjdCAqdikKK3sKKyAgICBQeU9iamVjdCAqYTsKKyAgICBjb25zdCBjaGFyICpjcDsKKworICAgIENPTlZFUlRfT1BfUkFJU0UoJmEsIHYsIGNvbnRleHQpOworCisgICAgY3AgPSBtcGRfY2xhc3MoTVBEKGEpLCBDVFgoY29udGV4dCkpOworICAgIFB5X0RFQ1JFRihhKTsKKworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjcCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3RvX3NjaShQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqYTsKKyAgICBtcGRfc3NpemVfdCBzaXplOworICAgIGNoYXIgKnM7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHNpemUgPSBtcGRfdG9fc2NpX3NpemUoJnMsIE1QRChhKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgUHlfREVDUkVGKGEpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSB1bmljb2RlX2Zyb21hc2NpaShzLCBzaXplKTsKKyAgICBtcGRfZnJlZShzKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3RvX2VuZyhQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKnYpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqYTsKKyAgICBtcGRfc3NpemVfdCBzaXplOworICAgIGNoYXIgKnM7CisKKyAgICBDT05WRVJUX09QX1JBSVNFKCZhLCB2LCBjb250ZXh0KTsKKworICAgIHNpemUgPSBtcGRfdG9fZW5nX3NpemUoJnMsIE1QRChhKSwgQ3R4Q2Fwcyhjb250ZXh0KSk7CisgICAgUHlfREVDUkVGKGEpOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSB1bmljb2RlX2Zyb21hc2NpaShzLCBzaXplKTsKKyAgICBtcGRfZnJlZShzKTsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEZ1bmN0aW9ucyB3aXRoIHR3byBkZWNpbWFsIGFyZ3VtZW50cyAqLworRGVjQ3R4X0JpbmFyeUZ1bmNfTk9fQ1RYKG1wZF9jb21wYXJlX3RvdGFsKQorRGVjQ3R4X0JpbmFyeUZ1bmNfTk9fQ1RYKG1wZF9jb21wYXJlX3RvdGFsX21hZykKKworc3RhdGljIFB5T2JqZWN0ICoKK2N0eF9tcGRfcWNvcHlfc2lnbihQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnYsICp3OworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJnYsICZ3KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDT05WRVJUX0JJTk9QX1JBSVNFKCZhLCAmYiwgdiwgdywgY29udGV4dCk7CisKKyAgICByZXN1bHQgPSBkZWNfYWxsb2MoKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGEpOworICAgICAgICBQeV9ERUNSRUYoYik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1wZF9xY29weV9zaWduKE1QRChyZXN1bHQpLCBNUEQoYSksIE1QRChiKSwgJnN0YXR1cyk7CisgICAgUHlfREVDUkVGKGEpOworICAgIFB5X0RFQ1JFRihiKTsKKyAgICBpZiAoZGVjX2FkZHN0YXR1cyhjb250ZXh0LCBzdGF0dXMpKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcWFuZCkKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xb3IpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXhvcikKKworRGVjQ3R4X0JpbmFyeUZ1bmMobXBkX3Fyb3RhdGUpCitEZWNDdHhfQmluYXJ5RnVuYyhtcGRfcXNjYWxlYikKK0RlY0N0eF9CaW5hcnlGdW5jKG1wZF9xc2hpZnQpCisKK3N0YXRpYyBQeU9iamVjdCAqCitjdHhfbXBkX3NhbWVfcXVhbnR1bShQeU9iamVjdCAqY29udGV4dCwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnYsICp3OworICAgIFB5T2JqZWN0ICphLCAqYjsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyIsICZ2LCAmdykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgQ09OVkVSVF9CSU5PUF9SQUlTRSgmYSwgJmIsIHYsIHcsIGNvbnRleHQpOworCisgICAgcmVzdWx0ID0gbXBkX3NhbWVfcXVhbnR1bShNUEQoYSksIE1QRChiKSkgPyBpbmNyX3RydWUoKSA6IGluY3JfZmFsc2UoKTsKKyAgICBQeV9ERUNSRUYoYSk7CisgICAgUHlfREVDUkVGKGIpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgY29udGV4dF9tZXRob2RzIFtdID0KK3sKKyAgLyogVW5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KKyAgeyAiYWJzIiwgY3R4X21wZF9xYWJzLCBNRVRIX08sIGRvY19jdHhfYWJzIH0sCisgIHsgImV4cCIsIGN0eF9tcGRfcWV4cCwgTUVUSF9PLCBkb2NfY3R4X2V4cCB9LAorICB7ICJsbiIsIGN0eF9tcGRfcWxuLCBNRVRIX08sIGRvY19jdHhfbG4gfSwKKyAgeyAibG9nMTAiLCBjdHhfbXBkX3Fsb2cxMCwgTUVUSF9PLCBkb2NfY3R4X2xvZzEwIH0sCisgIHsgIm1pbnVzIiwgY3R4X21wZF9xbWludXMsIE1FVEhfTywgZG9jX2N0eF9taW51cyB9LAorICB7ICJuZXh0X21pbnVzIiwgY3R4X21wZF9xbmV4dF9taW51cywgTUVUSF9PLCBkb2NfY3R4X25leHRfbWludXMgfSwKKyAgeyAibmV4dF9wbHVzIiwgY3R4X21wZF9xbmV4dF9wbHVzLCBNRVRIX08sIGRvY19jdHhfbmV4dF9wbHVzIH0sCisgIHsgIm5vcm1hbGl6ZSIsIGN0eF9tcGRfcXJlZHVjZSwgTUVUSF9PLCBkb2NfY3R4X25vcm1hbGl6ZSB9LAorICB7ICJwbHVzIiwgY3R4X21wZF9xcGx1cywgTUVUSF9PLCBkb2NfY3R4X3BsdXMgfSwKKyAgeyAidG9faW50ZWdyYWwiLCBjdHhfbXBkX3Fyb3VuZF90b19pbnQsIE1FVEhfTywgZG9jX2N0eF90b19pbnRlZ3JhbCB9LAorICB7ICJ0b19pbnRlZ3JhbF9leGFjdCIsIGN0eF9tcGRfcXJvdW5kX3RvX2ludHgsIE1FVEhfTywgZG9jX2N0eF90b19pbnRlZ3JhbF9leGFjdCB9LAorICB7ICJ0b19pbnRlZ3JhbF92YWx1ZSIsIGN0eF9tcGRfcXJvdW5kX3RvX2ludCwgTUVUSF9PLCBkb2NfY3R4X3RvX2ludGVncmFsX3ZhbHVlIH0sCisgIHsgInNxcnQiLCBjdHhfbXBkX3FzcXJ0LCBNRVRIX08sIGRvY19jdHhfc3FydCB9LAorCisgIC8qIEJpbmFyeSBhcml0aG1ldGljIGZ1bmN0aW9ucyAqLworICB7ICJhZGQiLCBjdHhfbXBkX3FhZGQsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9hZGQgfSwKKyAgeyAiY29tcGFyZSIsIGN0eF9tcGRfcWNvbXBhcmUsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9jb21wYXJlIH0sCisgIHsgImNvbXBhcmVfc2lnbmFsIiwgY3R4X21wZF9xY29tcGFyZV9zaWduYWwsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9jb21wYXJlX3NpZ25hbCB9LAorICB7ICJkaXZpZGUiLCBjdHhfbXBkX3FkaXYsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9kaXZpZGUgfSwKKyAgeyAiZGl2aWRlX2ludCIsIGN0eF9tcGRfcWRpdmludCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2RpdmlkZV9pbnQgfSwKKyAgeyAiZGl2bW9kIiwgY3R4X21wZF9xZGl2bW9kLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfZGl2bW9kIH0sCisgIHsgIm1heCIsIGN0eF9tcGRfcW1heCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X21heCB9LAorICB7ICJtYXhfbWFnIiwgY3R4X21wZF9xbWF4X21hZywgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X21heF9tYWcgfSwKKyAgeyAibWluIiwgY3R4X21wZF9xbWluLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbWluIH0sCisgIHsgIm1pbl9tYWciLCBjdHhfbXBkX3FtaW5fbWFnLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfbWluX21hZyB9LAorICB7ICJtdWx0aXBseSIsIGN0eF9tcGRfcW11bCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X211bHRpcGx5IH0sCisgIHsgIm5leHRfdG93YXJkIiwgY3R4X21wZF9xbmV4dF90b3dhcmQsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9uZXh0X3Rvd2FyZCB9LAorICB7ICJxdWFudGl6ZSIsIGN0eF9tcGRfcXF1YW50aXplLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfcXVhbnRpemUgfSwKKyAgeyAicmVtYWluZGVyIiwgY3R4X21wZF9xcmVtLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfcmVtYWluZGVyIH0sCisgIHsgInJlbWFpbmRlcl9uZWFyIiwgY3R4X21wZF9xcmVtX25lYXIsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9yZW1haW5kZXJfbmVhciB9LAorICB7ICJzdWJ0cmFjdCIsIGN0eF9tcGRfcXN1YiwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X3N1YnRyYWN0IH0sCisKKyAgLyogQmluYXJ5IG9yIHRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KKyAgeyAicG93ZXIiLCAoUHlDRnVuY3Rpb24pY3R4X21wZF9xcG93LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgZG9jX2N0eF9wb3dlciB9LAorCisgIC8qIFRlcm5hcnkgYXJpdGhtZXRpYyBmdW5jdGlvbnMgKi8KKyAgeyAiZm1hIiwgY3R4X21wZF9xZm1hLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfZm1hIH0sCisKKyAgLyogTm8gYXJndW1lbnQgKi8KKyAgeyAiRXRpbnkiLCBjb250ZXh0X2dldGV0aW55LCBNRVRIX05PQVJHUywgZG9jX2N0eF9FdGlueSB9LAorICB7ICJFdG9wIiwgY29udGV4dF9nZXRldG9wLCBNRVRIX05PQVJHUywgZG9jX2N0eF9FdG9wIH0sCisgIHsgInJhZGl4IiwgY3R4X21wZF9yYWRpeCwgTUVUSF9OT0FSR1MsIGRvY19jdHhfcmFkaXggfSwKKworICAvKiBCb29sZWFuIGZ1bmN0aW9ucyAqLworICB7ICJpc19jYW5vbmljYWwiLCBjdHhfaXNjYW5vbmljYWwsIE1FVEhfTywgZG9jX2N0eF9pc19jYW5vbmljYWwgfSwKKyAgeyAiaXNfZmluaXRlIiwgY3R4X21wZF9pc2Zpbml0ZSwgTUVUSF9PLCBkb2NfY3R4X2lzX2Zpbml0ZSB9LAorICB7ICJpc19pbmZpbml0ZSIsIGN0eF9tcGRfaXNpbmZpbml0ZSwgTUVUSF9PLCBkb2NfY3R4X2lzX2luZmluaXRlIH0sCisgIHsgImlzX25hbiIsIGN0eF9tcGRfaXNuYW4sIE1FVEhfTywgZG9jX2N0eF9pc19uYW4gfSwKKyAgeyAiaXNfbm9ybWFsIiwgY3R4X21wZF9pc25vcm1hbCwgTUVUSF9PLCBkb2NfY3R4X2lzX25vcm1hbCB9LAorICB7ICJpc19xbmFuIiwgY3R4X21wZF9pc3FuYW4sIE1FVEhfTywgZG9jX2N0eF9pc19xbmFuIH0sCisgIHsgImlzX3NpZ25lZCIsIGN0eF9tcGRfaXNzaWduZWQsIE1FVEhfTywgZG9jX2N0eF9pc19zaWduZWQgfSwKKyAgeyAiaXNfc25hbiIsIGN0eF9tcGRfaXNzbmFuLCBNRVRIX08sIGRvY19jdHhfaXNfc25hbiB9LAorICB7ICJpc19zdWJub3JtYWwiLCBjdHhfbXBkX2lzc3Vibm9ybWFsLCBNRVRIX08sIGRvY19jdHhfaXNfc3Vibm9ybWFsIH0sCisgIHsgImlzX3plcm8iLCBjdHhfbXBkX2lzemVybywgTUVUSF9PLCBkb2NfY3R4X2lzX3plcm8gfSwKKworICAvKiBGdW5jdGlvbnMgd2l0aCBhIHNpbmdsZSBkZWNpbWFsIGFyZ3VtZW50ICovCisgIHsgIl9hcHBseSIsIFB5RGVjQ29udGV4dF9BcHBseSwgTUVUSF9PLCBOVUxMIH0sIC8qIGFsaWFzIGZvciBhcHBseSAqLworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyAiYXBwbHkiLCBQeURlY0NvbnRleHRfQXBwbHksIE1FVEhfTywgZG9jX2N0eF9hcHBseSB9LAorI2VuZGlmCisgIHsgImNhbm9uaWNhbCIsIGN0eF9jYW5vbmljYWwsIE1FVEhfTywgZG9jX2N0eF9jYW5vbmljYWwgfSwKKyAgeyAiY29weV9hYnMiLCBjdHhfbXBkX3Fjb3B5X2FicywgTUVUSF9PLCBkb2NfY3R4X2NvcHlfYWJzIH0sCisgIHsgImNvcHlfZGVjaW1hbCIsIGN0eF9jb3B5X2RlY2ltYWwsIE1FVEhfTywgZG9jX2N0eF9jb3B5X2RlY2ltYWwgfSwKKyAgeyAiY29weV9uZWdhdGUiLCBjdHhfbXBkX3Fjb3B5X25lZ2F0ZSwgTUVUSF9PLCBkb2NfY3R4X2NvcHlfbmVnYXRlIH0sCisgIHsgImxvZ2IiLCBjdHhfbXBkX3Fsb2diLCBNRVRIX08sIGRvY19jdHhfbG9nYiB9LAorICB7ICJsb2dpY2FsX2ludmVydCIsIGN0eF9tcGRfcWludmVydCwgTUVUSF9PLCBkb2NfY3R4X2xvZ2ljYWxfaW52ZXJ0IH0sCisgIHsgIm51bWJlcl9jbGFzcyIsIGN0eF9tcGRfY2xhc3MsIE1FVEhfTywgZG9jX2N0eF9udW1iZXJfY2xhc3MgfSwKKyAgeyAidG9fc2NpX3N0cmluZyIsIGN0eF9tcGRfdG9fc2NpLCBNRVRIX08sIGRvY19jdHhfdG9fc2NpX3N0cmluZyB9LAorICB7ICJ0b19lbmdfc3RyaW5nIiwgY3R4X21wZF90b19lbmcsIE1FVEhfTywgZG9jX2N0eF90b19lbmdfc3RyaW5nIH0sCisKKyAgLyogRnVuY3Rpb25zIHdpdGggdHdvIGRlY2ltYWwgYXJndW1lbnRzICovCisgIHsgImNvbXBhcmVfdG90YWwiLCBjdHhfbXBkX2NvbXBhcmVfdG90YWwsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9jb21wYXJlX3RvdGFsIH0sCisgIHsgImNvbXBhcmVfdG90YWxfbWFnIiwgY3R4X21wZF9jb21wYXJlX3RvdGFsX21hZywgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvbXBhcmVfdG90YWxfbWFnIH0sCisgIHsgImNvcHlfc2lnbiIsIGN0eF9tcGRfcWNvcHlfc2lnbiwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NvcHlfc2lnbiB9LAorICB7ICJsb2dpY2FsX2FuZCIsIGN0eF9tcGRfcWFuZCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2xvZ2ljYWxfYW5kIH0sCisgIHsgImxvZ2ljYWxfb3IiLCBjdHhfbXBkX3FvciwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2xvZ2ljYWxfb3IgfSwKKyAgeyAibG9naWNhbF94b3IiLCBjdHhfbXBkX3F4b3IsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9sb2dpY2FsX3hvciB9LAorICB7ICJyb3RhdGUiLCBjdHhfbXBkX3Fyb3RhdGUsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9yb3RhdGUgfSwKKyAgeyAic2FtZV9xdWFudHVtIiwgY3R4X21wZF9zYW1lX3F1YW50dW0sIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9zYW1lX3F1YW50dW0gfSwKKyAgeyAic2NhbGViIiwgY3R4X21wZF9xc2NhbGViLCBNRVRIX1ZBUkFSR1MsIGRvY19jdHhfc2NhbGViIH0sCisgIHsgInNoaWZ0IiwgY3R4X21wZF9xc2hpZnQsIE1FVEhfVkFSQVJHUywgZG9jX2N0eF9zaGlmdCB9LAorCisgIC8qIFNldCBjb250ZXh0IHZhbHVlcyAqLworICB7ICJjbGVhcl9mbGFncyIsIGNvbnRleHRfY2xlYXJfZmxhZ3MsIE1FVEhfTk9BUkdTLCBkb2NfY3R4X2NsZWFyX2ZsYWdzIH0sCisgIHsgImNsZWFyX3RyYXBzIiwgY29udGV4dF9jbGVhcl90cmFwcywgTUVUSF9OT0FSR1MsIGRvY19jdHhfY2xlYXJfdHJhcHMgfSwKKworI2lmZGVmIENPTkZJR18zMgorICAvKiBVbnNhZmUgc2V0IGZ1bmN0aW9ucyB3aXRoIHJlbGF4ZWQgcmFuZ2UgY2hlY2tzICovCisgIHsgIl91bnNhZmVfc2V0cHJlYyIsIGNvbnRleHRfdW5zYWZlX3NldHByZWMsIE1FVEhfTywgTlVMTCB9LAorICB7ICJfdW5zYWZlX3NldGVtaW4iLCBjb250ZXh0X3Vuc2FmZV9zZXRlbWluLCBNRVRIX08sIE5VTEwgfSwKKyAgeyAiX3Vuc2FmZV9zZXRlbWF4IiwgY29udGV4dF91bnNhZmVfc2V0ZW1heCwgTUVUSF9PLCBOVUxMIH0sCisjZW5kaWYKKworICAvKiBNaXNjZWxsYW5lb3VzICovCisgIHsgIl9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKWNvbnRleHRfY29weSwgTUVUSF9OT0FSR1MsIE5VTEwgfSwKKyAgeyAiX19yZWR1Y2VfXyIsIGNvbnRleHRfcmVkdWNlLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICB7ICJjb3B5IiwgKFB5Q0Z1bmN0aW9uKWNvbnRleHRfY29weSwgTUVUSF9OT0FSR1MsIGRvY19jdHhfY29weSB9LAorICB7ICJjcmVhdGVfZGVjaW1hbCIsIGN0eF9jcmVhdGVfZGVjaW1hbCwgTUVUSF9WQVJBUkdTLCBkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsIH0sCisgIHsgImNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQiLCBjdHhfZnJvbV9mbG9hdCwgTUVUSF9PLCBkb2NfY3R4X2NyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQgfSwKKworICB7IE5VTEwsIE5VTEwsIDEgfQorfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBQeURlY0NvbnRleHRfVHlwZSA9Cit7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgImRlY2ltYWwuQ29udGV4dCIsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoUHlEZWNDb250ZXh0T2JqZWN0KSwgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpIGNvbnRleHRfZGVhbGxvYywgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAoZ2V0YXR0cmZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIChzZXRhdHRyZnVuYykgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKSBjb250ZXh0X3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAoaGFzaGZ1bmMpIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgKHJlcHJmdW5jKSBjb250ZXh0X3JlcHIsICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChnZXRhdHRyb2Z1bmMpIGNvbnRleHRfZ2V0YXR0ciwgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpIGNvbnRleHRfc2V0YXR0ciwgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIChQeUJ1ZmZlclByb2NzICopIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFR8UHlfVFBGTEFHU19CQVNFVFlQRSwgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBkb2NfY29udGV4dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjb250ZXh0X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgY29udGV4dF9nZXRzZXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgY29udGV4dF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBjb250ZXh0X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKKworc3RhdGljIFB5TWV0aG9kRGVmIF9kZWNpbWFsX21ldGhvZHMgW10gPQoreworICB7ICJnZXRjb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKVB5RGVjX0dldEN1cnJlbnRDb250ZXh0LCBNRVRIX05PQVJHUywgZG9jX2dldGNvbnRleHR9LAorICB7ICJzZXRjb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKVB5RGVjX1NldEN1cnJlbnRDb250ZXh0LCBNRVRIX08sIGRvY19zZXRjb250ZXh0fSwKKyAgeyAibG9jYWxjb250ZXh0IiwgKFB5Q0Z1bmN0aW9uKWN0eG1hbmFnZXJfbmV3LCBNRVRIX1ZBUkFSR1MsIGRvY19sb2NhbGNvbnRleHR9LAorI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKKyAgeyAiSUVFRUNvbnRleHQiLCAoUHlDRnVuY3Rpb24paWVlZV9jb250ZXh0LCBNRVRIX08sIGRvY19pZWVlX2NvbnRleHR9LAorI2VuZGlmCisgIHsgTlVMTCwgTlVMTCwgMSwgTlVMTCB9Cit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9kZWNpbWFsX21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgImRlY2ltYWwiLAorICAgIGRvY19fZGVjaW1hbCwKKyAgICAtMSwKKyAgICBfZGVjaW1hbF9tZXRob2RzLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwKK307CisKK3N0cnVjdCBzc2l6ZV9jb25zdG1hcCB7IGNvbnN0IGNoYXIgKm5hbWU7IG1wZF9zc2l6ZV90IHZhbDsgfTsKK3N0YXRpYyBzdHJ1Y3Qgc3NpemVfY29uc3RtYXAgc3NpemVfY29uc3RhbnRzIFtdID0geworICAgIHsiTUFYX1BSRUMiLCBNUERfTUFYX1BSRUN9LAorICAgIHsiTUFYX0VNQVgiLCBNUERfTUFYX0VNQVh9LAorICAgIHsiTUlOX0VNSU4iLCAgTVBEX01JTl9FTUlOfSwKKyAgICB7Ik1JTl9FVElOWSIsIE1QRF9NSU5fRVRJTll9LAorICAgIHtOVUxMfQorfTsKKworc3RydWN0IGludF9jb25zdG1hcCB7IGNvbnN0IGNoYXIgKm5hbWU7IGludCB2YWw7IH07CitzdGF0aWMgc3RydWN0IGludF9jb25zdG1hcCBpbnRfY29uc3RhbnRzIFtdID0geworICAgIC8qIGludCBjb25zdGFudHMgKi8KKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgICAgeyJERUNJTUFMMzIiLCBNUERfREVDSU1BTDMyfSwKKyAgICB7IkRFQ0lNQUw2NCIsIE1QRF9ERUNJTUFMNjR9LAorICAgIHsiREVDSU1BTDEyOCIsIE1QRF9ERUNJTUFMMTI4fSwKKyAgICB7IklFRUVfQ09OVEVYVF9NQVhfQklUUyIsIE1QRF9JRUVFX0NPTlRFWFRfTUFYX0JJVFN9LAorI2VuZGlmCisgICAgeyJST1VORF9DRUlMSU5HIiwgTVBEX1JPVU5EX0NFSUxJTkd9LAorICAgIHsiUk9VTkRfRkxPT1IiLCBNUERfUk9VTkRfRkxPT1J9LAorICAgIHsiUk9VTkRfVVAiLCBNUERfUk9VTkRfVVB9LAorICAgIHsiUk9VTkRfRE9XTiIsIE1QRF9ST1VORF9ET1dOfSwKKyAgICB7IlJPVU5EX0hBTEZfVVAiLCBNUERfUk9VTkRfSEFMRl9VUH0sCisgICAgeyJST1VORF9IQUxGX0RPV04iLCBNUERfUk9VTkRfSEFMRl9ET1dOfSwKKyAgICB7IlJPVU5EX0hBTEZfRVZFTiIsIE1QRF9ST1VORF9IQUxGX0VWRU59LAorICAgIHsiUk9VTkRfMDVVUCIsIE1QRF9ST1VORF8wNVVQfSwKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCisgICAgeyJST1VORF9UUlVOQyIsIE1QRF9ST1VORF9UUlVOQ30sCisgICAgLyogaW50IGNvbmRpdGlvbiBmbGFncyAqLworICAgIHsiRGVjQ2xhbXBlZCIsIE1QRF9DbGFtcGVkfSwKKyAgICB7IkRlY0NvbnZlcnNpb25TeW50YXgiLCBNUERfQ29udmVyc2lvbl9zeW50YXh9LAorICAgIHsiRGVjRGl2aXNpb25CeVplcm8iLCBNUERfRGl2aXNpb25fYnlfemVyb30sCisgICAgeyJEZWNEaXZpc2lvbkltcG9zc2libGUiLCBNUERfRGl2aXNpb25faW1wb3NzaWJsZX0sCisgICAgeyJEZWNEaXZpc2lvblVuZGVmaW5lZCIsIE1QRF9EaXZpc2lvbl91bmRlZmluZWR9LAorICAgIHsiRGVjRnB1RXJyb3IiLCBNUERfRnB1X2Vycm9yfSwKKyAgICB7IkRlY0luZXhhY3QiLCBNUERfSW5leGFjdH0sCisgICAgeyJEZWNJbnZhbGlkQ29udGV4dCIsIE1QRF9JbnZhbGlkX2NvbnRleHR9LAorICAgIHsiRGVjSW52YWxpZE9wZXJhdGlvbiIsIE1QRF9JbnZhbGlkX29wZXJhdGlvbn0sCisgICAgeyJEZWNJRUVFSW52YWxpZE9wZXJhdGlvbiIsIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9ufSwKKyAgICB7IkRlY01hbGxvY0Vycm9yIiwgTVBEX01hbGxvY19lcnJvcn0sCisgICAgeyJEZWNGbG9hdE9wZXJhdGlvbiIsIE1QRF9GbG9hdF9vcGVyYXRpb259LAorICAgIHsiRGVjT3ZlcmZsb3ciLCBNUERfT3ZlcmZsb3d9LAorICAgIHsiRGVjUm91bmRlZCIsIE1QRF9Sb3VuZGVkfSwKKyAgICB7IkRlY1N1Ym5vcm1hbCIsIE1QRF9TdWJub3JtYWx9LAorICAgIHsiRGVjVW5kZXJmbG93IiwgTVBEX1VuZGVyZmxvd30sCisgICAgeyJEZWNFcnJvcnMiLCBNUERfRXJyb3JzfSwKKyAgICB7IkRlY1RyYXBzIiwgTVBEX1RyYXBzfSwKKyNlbmRpZgorICAgIHtOVUxMfQorfTsKKworCisjZGVmaW5lIENIRUNLX0lOVChleHByKSBcCisgICAgZG8geyBpZiAoKGV4cHIpIDwgMCkgZ290byBlcnJvcjsgfSB3aGlsZSAoMCkKKyNkZWZpbmUgQVNTSUdOX1BUUihyZXN1bHQsIGV4cHIpIFwKKyAgICBkbyB7IHJlc3VsdCA9IChleHByKTsgaWYgKHJlc3VsdCA9PSBOVUxMKSBnb3RvIGVycm9yOyB9IHdoaWxlICgwKQorI2RlZmluZSBDSEVDS19QVFIoZXhwcikgXAorICAgIGRvIHsgaWYgKChleHByKSA9PSBOVUxMKSBnb3RvIGVycm9yOyB9IHdoaWxlICgwKQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X19kZWNpbWFsKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworICAgIFB5T2JqZWN0ICpudW1iZXJzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqTnVtYmVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY29sbGVjdGlvbnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpNdXRhYmxlTWFwcGluZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm9iaiA9IE5VTEw7CisgICAgRGVjQ29uZE1hcCAqY207CisgICAgc3RydWN0IHNzaXplX2NvbnN0bWFwICpzc2l6ZV9jbTsKKyAgICBzdHJ1Y3QgaW50X2NvbnN0bWFwICppbnRfY207CisgICAgaW50IGk7CisKKworICAgIC8qIEluaXQgbGlibXBkZWMgKi8KKyAgICBtcGRfdHJhcGhhbmRsZXIgPSBkZWNfdHJhcGhhbmRsZXI7CisgICAgbXBkX21hbGxvY2Z1bmMgPSBQeU1lbV9NYWxsb2M7CisgICAgbXBkX3JlYWxsb2NmdW5jID0gUHlNZW1fUmVhbGxvYzsKKyAgICBtcGRfY2FsbG9jZnVuYyA9IG1wZF9jYWxsb2NmdW5jX2VtOworICAgIG1wZF9mcmVlID0gUHlNZW1fRnJlZTsKKyAgICBtcGRfc2V0bWluYWxsb2MoX1B5X0RFQ19NSU5BTExPQyk7CisKKworICAgIC8qIEluaXQgdHlwZXMgKi8KKyAgICBQeURlY19UeXBlLnRwX2Jhc2UgPSAmUHlCYXNlT2JqZWN0X1R5cGU7CisgICAgUHlEZWNDb250ZXh0X1R5cGUudHBfYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICBQeURlY0NvbnRleHRNYW5hZ2VyX1R5cGUudHBfYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICBQeURlY1NpZ25hbERpY3RNaXhpbl9UeXBlLnRwX2Jhc2UgPSAmUHlCYXNlT2JqZWN0X1R5cGU7CisKKyAgICBDSEVDS19JTlQoUHlUeXBlX1JlYWR5KCZQeURlY19UeXBlKSk7CisgICAgQ0hFQ0tfSU5UKFB5VHlwZV9SZWFkeSgmUHlEZWNDb250ZXh0X1R5cGUpKTsKKyAgICBDSEVDS19JTlQoUHlUeXBlX1JlYWR5KCZQeURlY1NpZ25hbERpY3RNaXhpbl9UeXBlKSk7CisgICAgQ0hFQ0tfSU5UKFB5VHlwZV9SZWFkeSgmUHlEZWNDb250ZXh0TWFuYWdlcl9UeXBlKSk7CisKKyAgICBBU1NJR05fUFRSKG9iaiwgUHlVbmljb2RlX0Zyb21TdHJpbmcoImRlY2ltYWwiKSk7CisgICAgQ0hFQ0tfSU5UKFB5RGljdF9TZXRJdGVtU3RyaW5nKFB5RGVjX1R5cGUudHBfZGljdCwgIl9fbW9kdWxlX18iLCBvYmopKTsKKyAgICBDSEVDS19JTlQoUHlEaWN0X1NldEl0ZW1TdHJpbmcoUHlEZWNDb250ZXh0X1R5cGUudHBfZGljdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbW9kdWxlX18iLCBvYmopKTsKKyAgICBQeV9DTEVBUihvYmopOworCisKKyAgICAvKiBOdW1lcmljIGFic3RyYWN0IGJhc2UgY2xhc3NlcyAqLworICAgIEFTU0lHTl9QVFIobnVtYmVycywgUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJudW1iZXJzIikpOworICAgIEFTU0lHTl9QVFIoTnVtYmVyLCBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG51bWJlcnMsICJOdW1iZXIiKSk7CisgICAgLyogUmVnaXN0ZXIgRGVjaW1hbCB3aXRoIHRoZSBOdW1iZXIgYWJzdHJhY3QgYmFzZSBjbGFzcyAqLworICAgIEFTU0lHTl9QVFIob2JqLCBQeU9iamVjdF9DYWxsTWV0aG9kKE51bWJlciwgInJlZ2lzdGVyIiwgIihPKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5RGVjX1R5cGUpKTsKKyAgICBQeV9DTEVBUihvYmopOworICAgIC8qIFJhdGlvbmFsIGlzIGEgZ2xvYmFsIHZhcmlhYmxlIHVzZWQgZm9yIGZyYWN0aW9uIGNvbXBhcmlzb25zLiAqLworICAgIEFTU0lHTl9QVFIoUmF0aW9uYWwsIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobnVtYmVycywgIlJhdGlvbmFsIikpOworICAgIC8qIERvbmUgd2l0aCBudW1iZXJzLCBOdW1iZXIgKi8KKyAgICBQeV9DTEVBUihudW1iZXJzKTsKKyAgICBQeV9DTEVBUihOdW1iZXIpOworCisgICAgLyogRGVjaW1hbFR1cGxlICovCisgICAgQVNTSUdOX1BUUihjb2xsZWN0aW9ucywgUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJjb2xsZWN0aW9ucyIpKTsKKyAgICBBU1NJR05fUFRSKERlY2ltYWxUdXBsZSwgUHlPYmplY3RfQ2FsbE1ldGhvZChjb2xsZWN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lZHR1cGxlIiwgIihzcykiLCAiRGVjaW1hbFR1cGxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduIGRpZ2l0cyBleHBvbmVudCIpKTsKKyAgICAvKiBNdXRhYmxlTWFwcGluZyAqLworICAgIEFTU0lHTl9QVFIoTXV0YWJsZU1hcHBpbmcsIFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY29sbGVjdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXV0YWJsZU1hcHBpbmciKSk7CisgICAgLyogQ3JlYXRlIFNpZ25hbERpY3QgdHlwZSAqLworICAgIEFTU0lHTl9QVFIoUHlEZWNTaWduYWxEaWN0X1R5cGUsCisgICAgICAgICAgICAgICAgICAgKFB5VHlwZU9iamVjdCAqKVB5T2JqZWN0X0NhbGxGdW5jdGlvbigKKyAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmUHlUeXBlX1R5cGUsICJzKE9PKXt9IiwKKyAgICAgICAgICAgICAgICAgICAiU2lnbmFsRGljdCIsICZQeURlY1NpZ25hbERpY3RNaXhpbl9UeXBlLAorICAgICAgICAgICAgICAgICAgIE11dGFibGVNYXBwaW5nKSk7CisKKyAgICAvKiBEb25lIHdpdGggY29sbGVjdGlvbnMsIE11dGFibGVNYXBwaW5nICovCisgICAgUHlfQ0xFQVIoY29sbGVjdGlvbnMpOworICAgIFB5X0NMRUFSKE11dGFibGVNYXBwaW5nKTsKKworCisgICAgLyogQ3JlYXRlIHRoZSBtb2R1bGUgKi8KKyAgICBBU1NJR05fUFRSKG0sIFB5TW9kdWxlX0NyZWF0ZSgmX2RlY2ltYWxfbW9kdWxlKSk7CisKKworICAgIC8qIEFkZCB0eXBlcyB0byB0aGUgbW9kdWxlICovCisgICAgUHlfSU5DUkVGKCZQeURlY19UeXBlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJEZWNpbWFsIiwgKFB5T2JqZWN0ICopJlB5RGVjX1R5cGUpKTsKKyAgICBQeV9JTkNSRUYoJlB5RGVjQ29udGV4dF9UeXBlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDb250ZXh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSkpOworICAgIFB5X0lOQ1JFRihEZWNpbWFsVHVwbGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRlY2ltYWxUdXBsZSIsIERlY2ltYWxUdXBsZSkpOworCisKKyAgICAvKiBDcmVhdGUgdG9wIGxldmVsIGV4Y2VwdGlvbiAqLworICAgIEFTU0lHTl9QVFIoRGVjaW1hbEV4Y2VwdGlvbiwgUHlFcnJfTmV3RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNpbWFsLkRlY2ltYWxFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX0FyaXRobWV0aWNFcnJvciwgTlVMTCkpOworICAgIFB5X0lOQ1JFRihEZWNpbWFsRXhjZXB0aW9uKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJEZWNpbWFsRXhjZXB0aW9uIiwgRGVjaW1hbEV4Y2VwdGlvbikpOworCisgICAgLyogQ3JlYXRlIHNpZ25hbCB0dXBsZSAqLworICAgIEFTU0lHTl9QVFIoU2lnbmFsVHVwbGUsIFB5VHVwbGVfTmV3KFNJR05BTF9NQVBfTEVOKSk7CisKKyAgICAvKiBBZGQgZXhjZXB0aW9ucyB0aGF0IGNvcnJlc3BvbmQgdG8gSUVFRSBzaWduYWxzICovCisgICAgZm9yIChpID0gU0lHTkFMX01BUF9MRU4tMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgUHlPYmplY3QgKmJhc2U7CisKKyAgICAgICAgY20gPSBzaWduYWxfbWFwICsgaTsKKworICAgICAgICBzd2l0Y2ggKGNtLT5mbGFnKSB7CisgICAgICAgIGNhc2UgTVBEX0Zsb2F0X29wZXJhdGlvbjoKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMiwgRGVjaW1hbEV4Y2VwdGlvbiwgUHlFeGNfVHlwZUVycm9yKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9EaXZpc2lvbl9ieV96ZXJvOgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygyLCBEZWNpbWFsRXhjZXB0aW9uLCBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfT3ZlcmZsb3c6CisgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9QYWNrKDIsIHNpZ25hbF9tYXBbSU5FWEFDVF0uZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hbF9tYXBbUk9VTkRFRF0uZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTVBEX1VuZGVyZmxvdzoKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMywgc2lnbmFsX21hcFtJTkVYQUNUXS5leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX21hcFtST1VOREVEXS5leCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmFsX21hcFtTVUJOT1JNQUxdLmV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygxLCBEZWNpbWFsRXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0lHTl9QVFIoY20tPmV4LCBQeUVycl9OZXdFeGNlcHRpb24oKGNoYXIgKiljbS0+ZnFuYW1lLCBiYXNlLCBOVUxMKSk7CisgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKworICAgICAgICAvKiBhZGQgdG8gbW9kdWxlICovCisgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIGNtLT5uYW1lLCBjbS0+ZXgpKTsKKworICAgICAgICAvKiBhZGQgdG8gc2lnbmFsIHR1cGxlICovCisgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKFNpZ25hbFR1cGxlLCBpLCBjbS0+ZXgpOworICAgIH0KKworICAgIC8qCisgICAgICogVW5mb3J0dW5hdGVseSwgSW52YWxpZE9wZXJhdGlvbiBpcyBhIHNpZ25hbCB0aGF0IGNvbXByaXNlcworICAgICAqIHNldmVyYWwgY29uZGl0aW9ucywgaW5jbHVkaW5nIEludmFsaWRPcGVyYXRpb24hIE5hbWluZyB0aGUKKyAgICAgKiBzaWduYWwgSUVFRUludmFsaWRPcGVyYXRpb24gd291bGQgcHJldmVudCB0aGUgY29uZnVzaW9uLgorICAgICAqLworICAgIGNvbmRfbWFwWzBdLmV4ID0gc2lnbmFsX21hcFswXS5leDsKKworICAgIC8qIEFkZCByZW1haW5pbmcgZXhjZXB0aW9ucywgaW5oZXJpdCBmcm9tIEludmFsaWRPcGVyYXRpb24gKi8KKyAgICBmb3IgKGNtID0gY29uZF9tYXArMTsgY20tPm5hbWUgIT0gTlVMTDsgY20rKykgeworICAgICAgICBQeU9iamVjdCAqYmFzZTsKKyAgICAgICAgaWYgKGNtLT5mbGFnID09IE1QRF9EaXZpc2lvbl91bmRlZmluZWQpIHsKKyAgICAgICAgICAgIGJhc2UgPSBQeVR1cGxlX1BhY2soMiwgc2lnbmFsX21hcFswXS5leCwgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYmFzZSA9IFB5VHVwbGVfUGFjaygxLCBzaWduYWxfbWFwWzBdLmV4KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYmFzZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgQVNTSUdOX1BUUihjbS0+ZXgsIFB5RXJyX05ld0V4Y2VwdGlvbigoY2hhciAqKWNtLT5mcW5hbWUsIGJhc2UsIE5VTEwpKTsKKyAgICAgICAgUHlfREVDUkVGKGJhc2UpOworCisgICAgICAgIFB5X0lOQ1JFRihjbS0+ZXgpOworICAgICAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sIGNtLT5uYW1lLCBjbS0+ZXgpKTsKKyAgICB9CisKKworICAgIC8qIEluaXQgZGVmYXVsdCBjb250ZXh0IHRlbXBsYXRlIGZpcnN0ICovCisgICAgQVNTSUdOX1BUUihkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUsCisgICAgICAgICAgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCkpOworICAgIFB5X0lOQ1JFRihkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkRlZmF1bHRDb250ZXh0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfY29udGV4dF90ZW1wbGF0ZSkpOworCisjaWZkZWYgV0lUSE9VVF9USFJFQURTCisgICAgLyogSW5pdCBtb2R1bGUgY29udGV4dCAqLworICAgIEFTU0lHTl9QVFIobW9kdWxlX2NvbnRleHQsCisgICAgICAgICAgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0KChQeU9iamVjdCAqKSZQeURlY0NvbnRleHRfVHlwZSwgTlVMTCkpOworICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CisgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFWRV9USFJFQURTIiwgUHlfRmFsc2UpKTsKKyNlbHNlCisgICAgQVNTSUdOX1BUUih0bHNfY29udGV4dF9rZXksIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJfX19ERUNJTUFMX0NUWF9fIikpOworICAgIFB5X0lOQ1JFRihQeV9UcnVlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVZFX1RIUkVBRFMiLCBQeV9UcnVlKSk7CisjZW5kaWYKKworICAgIC8qIEluaXQgYmFzaWMgY29udGV4dCB0ZW1wbGF0ZSAqLworICAgIEFTU0lHTl9QVFIoYmFzaWNfY29udGV4dF90ZW1wbGF0ZSwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0X0NhbGxPYmplY3QoKFB5T2JqZWN0ICopJlB5RGVjQ29udGV4dF9UeXBlLCBOVUxMKSk7CisgICAgaW5pdF9iYXNpY19jb250ZXh0KGJhc2ljX2NvbnRleHRfdGVtcGxhdGUpOworICAgIFB5X0lOQ1JFRihiYXNpY19jb250ZXh0X3RlbXBsYXRlKTsKKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCYXNpY0NvbnRleHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaWNfY29udGV4dF90ZW1wbGF0ZSkpOworCisgICAgLyogSW5pdCBleHRlbmRlZCBjb250ZXh0IHRlbXBsYXRlICovCisgICAgQVNTSUdOX1BUUihleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlLAorICAgICAgICAgICAgICAgUHlPYmplY3RfQ2FsbE9iamVjdCgoUHlPYmplY3QgKikmUHlEZWNDb250ZXh0X1R5cGUsIE5VTEwpKTsKKyAgICBpbml0X2V4dGVuZGVkX2NvbnRleHQoZXh0ZW5kZWRfY29udGV4dF90ZW1wbGF0ZSk7CisgICAgUHlfSU5DUkVGKGV4dGVuZGVkX2NvbnRleHRfdGVtcGxhdGUpOworICAgIENIRUNLX0lOVChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkV4dGVuZGVkQ29udGV4dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKSk7CisKKworICAgIC8qIEluaXQgbXBkX3NzaXplX3QgY29uc3RhbnRzICovCisgICAgZm9yIChzc2l6ZV9jbSA9IHNzaXplX2NvbnN0YW50czsgc3NpemVfY20tPm5hbWUgIT0gTlVMTDsgc3NpemVfY20rKykgeworICAgICAgICBBU1NJR05fUFRSKG9iaiwgUHlMb25nX0Zyb21Tc2l6ZV90KHNzaXplX2NtLT52YWwpKTsKKyAgICAgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZE9iamVjdChtLCBzc2l6ZV9jbS0+bmFtZSwgb2JqKSk7CisgICAgICAgIG9iaiA9IE5VTEw7CisgICAgfQorCisgICAgLyogSW5pdCBpbnQgY29uc3RhbnRzICovCisgICAgZm9yIChpbnRfY20gPSBpbnRfY29uc3RhbnRzOyBpbnRfY20tPm5hbWUgIT0gTlVMTDsgaW50X2NtKyspIHsKKyAgICAgICAgQ0hFQ0tfSU5UKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sIGludF9jbS0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9jbS0+dmFsKSk7CisgICAgfQorCisgICAgLyogQWRkIHNwZWNpZmljYXRpb24gdmVyc2lvbiBudW1iZXIgKi8KKyAgICBDSEVDS19JTlQoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIiAxLjcwIikpOworCisKKyAgICByZXR1cm4gbTsKKworCitlcnJvcjoKKyAgICBQeV9DTEVBUihvYmopOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIobnVtYmVycyk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihOdW1iZXIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoUmF0aW9uYWwpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoY29sbGVjdGlvbnMpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoTXV0YWJsZU1hcHBpbmcpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoU2lnbmFsVHVwbGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIoRGVjaW1hbFR1cGxlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworI2lmZGVmIFdJVEhPVVRfVEhSRUFEUworICAgIFB5X0NMRUFSKG1vZHVsZV9jb250ZXh0KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworI2Vsc2UKKyAgICBQeV9DTEVBUihkZWZhdWx0X2NvbnRleHRfdGVtcGxhdGUpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgUHlfQ0xFQVIodGxzX2NvbnRleHRfa2V5KTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworI2VuZGlmCisgICAgUHlfQ0xFQVIoYmFzaWNfY29udGV4dF90ZW1wbGF0ZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICBQeV9DTEVBUihleHRlbmRlZF9jb250ZXh0X3RlbXBsYXRlKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIFB5X0NMRUFSKG0pOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisKKyAgICByZXR1cm4gTlVMTDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9kb2NzdHJpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxNTBjNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvZG9jc3RyaW5ncy5oCkBAIC0wLDAgKzEsNzUzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDAxLTIwMTIgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBNb2RpZmllZCBhbmQgZXh0ZW5kZWQgYnkgU3RlZmFuIEtyYWguCisgKi8KKworCisjaWZuZGVmIERPQ1NUUklOR1NfSAorI2RlZmluZSBET0NTVFJJTkdTX0gKKworCisjaW5jbHVkZSAicHltYWNyby5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCitQeURvY19TVFJWQVIoZG9jX19kZWNpbWFsLAorIkMgZGVjaW1hbCBhcml0aG1ldGljIG1vZHVsZSIpOworCitQeURvY19TVFJWQVIoZG9jX2dldGNvbnRleHQsIlxuXAorZ2V0Y29udGV4dCgpIC0gR2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc2V0Y29udGV4dCwiXG5cCitzZXRjb250ZXh0KGMpIC0gU2V0IGEgbmV3IGRlZmF1bHQgY29udGV4dC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9jYWxjb250ZXh0LCJcblwKK2xvY2FsY29udGV4dChjKSAtIFJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHdpbGwgc2V0IHRoZSBkZWZhdWx0IGNvbnRleHRcblwKK3RvIGEgY29weSBvZiBjIG9uIGVudHJ5IHRvIHRoZSB3aXRoLXN0YXRlbWVudCBhbmQgcmVzdG9yZSB0aGUgcHJldmlvdXMgZGVmYXVsdFxuXAorY29udGV4dCB3aGVuIGV4aXRpbmcgdGhlIHdpdGgtc3RhdGVtZW50LiBJZiBubyBjb250ZXh0IGlzIHNwZWNpZmllZCwgYSBjb3B5IG9mXG5cCit0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKK1xuIik7CisKKyNpZmRlZiBFWFRSQV9GVU5DVElPTkFMSVRZCitQeURvY19TVFJWQVIoZG9jX2llZWVfY29udGV4dCwiXG5cCitJRUVFQ29udGV4dChiaXRzKSAtIFJldHVybiBhIGNvbnRleHQgb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBwcm9wZXIgdmFsdWVzIGZvclxuXAorb25lIG9mIHRoZSBJRUVFIGludGVyY2hhbmdlIGZvcm1hdHMuIFRoZSBhcmd1bWVudCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzIgYW5kXG5cCitsZXNzIHRoYW4gSUVFRV9DT05URVhUX01BWF9CSVRTLiBGb3IgdGhlIG1vc3QgY29tbW9uIHZhbHVlcywgdGhlIGNvbnN0YW50c1xuXAorREVDSU1BTDMyLCBERUNJTUFMNjQgYW5kIERFQ0lNQUwxMjggYXJlIHByb3ZpZGVkLlxuXAorXG4iKTsKKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCBPYmplY3QgYW5kIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworUHlEb2NfU1RSVkFSKGRvY19kZWNpbWFsLCJcblwKK0RlY2ltYWwoW3ZhbHVlWywgY29udGV4dF1dKTogQ29uc3RydWN0IGEgbmV3IERlY2ltYWwgb2JqZWN0IGZyb20gdmFsdWUuXG5cCitcblwKK3ZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyLCBzdHJpbmcsIHR1cGxlLCBvciBhbm90aGVyIERlY2ltYWwgb2JqZWN0LlxuXAorSWYgbm8gdmFsdWUgaXMgZ2l2ZW4sIHJldHVybiBEZWNpbWFsKCcwJykuIFRoZSBjb250ZXh0IGRvZXMgbm90IGFmZmVjdFxuXAordGhlIGNvbnZlcnNpb24gYW5kIGlzIG9ubHkgcGFzc2VkIHRvIGRldGVybWluZSBpZiB0aGUgSW52YWxpZE9wZXJhdGlvblxuXAordHJhcCBpcyBhY3RpdmUuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2FkanVzdGVkLCJcblwKK2FkanVzdGVkKCkgLSBSZXR1cm4gdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIHRoZSBudW1iZXIuXG5cCitcblwKK0RlZmluZWQgYXMgZXhwICsgZGlnaXRzIC0gMS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfYXNfdHVwbGUsIlxuXAorYXNfdHVwbGUoKSAtIFJldHVybiBhIHR1cGxlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2Nhbm9uaWNhbCwiXG5cCitjYW5vbmljYWwoKSAtIFJldHVybiB0aGUgY2Fub25pY2FsIGVuY29kaW5nIG9mIHRoZSBhcmd1bWVudC4gQ3VycmVudGx5LFxuXAordGhlIGVuY29kaW5nIG9mIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMgY2Fub25pY2FsLCBzbyB0aGlzIG9wZXJhdGlvblxuXAorcmV0dXJucyBpdHMgYXJndW1lbnQgdW5jaGFuZ2VkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlLCJcblwKK2NvbXBhcmUob3RoZXJbLCBjb250ZXh0XSkgLSBDb21wYXJlIHNlbGYgdG8gb3RoZXIuIFJldHVybiBhIGRlY2ltYWwgdmFsdWU6XG5cCitcblwKKyAgICBhIG9yIGIgaXMgYSBOYU4gPT0+IERlY2ltYWwoJ05hTicpXG5cCisgICAgYSA8IGIgICAgICAgICAgID09PiBEZWNpbWFsKCctMScpXG5cCisgICAgYSA9PSBiICAgICAgICAgID09PiBEZWNpbWFsKCcwJylcblwKKyAgICBhID4gYiAgICAgICAgICAgPT0+IERlY2ltYWwoJzEnKVxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3NpZ25hbCwiXG5cCitjb21wYXJlX3NpZ25hbChvdGhlclssIGNvbnRleHRdKSAtIElkZW50aWNhbCB0byBjb21wYXJlLCBleGNlcHQgdGhhdFxuXAorYWxsIE5hTnMgc2lnbmFsLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb21wYXJlX3RvdGFsLCJcblwKK2NvbXBhcmVfdG90YWwob3RoZXIpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb25cblwKK3JhdGhlciB0aGFuIHRoZWlyIG51bWVyaWNhbCB2YWx1ZS4gU2ltaWxhciB0byB0aGUgY29tcGFyZSgpIG1ldGhvZCwgYnV0IHRoZVxuXAorcmVzdWx0IGdpdmVzIGEgdG90YWwgb3JkZXJpbmcgb24gRGVjaW1hbCBpbnN0YW5jZXMuIFR3byBEZWNpbWFsIGluc3RhbmNlcyB3aXRoXG5cCit0aGUgc2FtZSBudW1lcmljIHZhbHVlIGJ1dCBkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25zIGNvbXBhcmUgdW5lcXVhbCBpbiB0aGlzXG5cCitvcmRlcmluZzpcblwKK1xuXAorICAgID4+PiBEZWNpbWFsKCcxMi4wJykuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMicpKVxuXAorICAgIERlY2ltYWwoJy0xJylcblwKK1xuXAorUXVpZXQgYW5kIHNpZ25hbGluZyBOYU5zIGFyZSBhbHNvIGluY2x1ZGVkIGluIHRoZSB0b3RhbCBvcmRlcmluZy4gVGhlIHJlc3VsdFxuXAorb2YgdGhpcyBmdW5jdGlvbiBpcyBEZWNpbWFsKCcwJykgaWYgYm90aCBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uLFxuXAorRGVjaW1hbCgnLTEnKSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBsb3dlciBpbiB0aGUgdG90YWwgb3JkZXIgdGhhbiB0aGUgc2Vjb25kLFxuXAorYW5kIERlY2ltYWwoJzEnKSBpZiB0aGUgZmlyc3Qgb3BlcmFuZCBpcyBoaWdoZXIgaW4gdGhlIHRvdGFsIG9yZGVyIHRoYW4gdGhlXG5cCitzZWNvbmQgb3BlcmFuZC4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9mIHRoZSB0b3RhbCBvcmRlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29tcGFyZV90b3RhbF9tYWcsIlxuXAorY29tcGFyZV90b3RhbF9tYWcob3RoZXIpIC0gQ29tcGFyZSB0d28gb3BlcmFuZHMgdXNpbmcgdGhlaXIgYWJzdHJhY3RcblwKK3JlcHJlc2VudGF0aW9uIHJhdGhlciB0aGFuIHRoZWlyIHZhbHVlIGFzIGluIGNvbXBhcmVfdG90YWwoKSwgYnV0XG5cCitpZ25vcmluZyB0aGUgc2lnbiBvZiBlYWNoIG9wZXJhbmQuICB4LmNvbXBhcmVfdG90YWxfbWFnKHkpIGlzXG5cCitlcXVpdmFsZW50IHRvIHguY29weV9hYnMoKS5jb21wYXJlX3RvdGFsKHkuY29weV9hYnMoKSkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2Nvbmp1Z2F0ZSwiXG5cCitjb25qdWdhdGUoKSAtIFJldHVybiBzZWxmLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jb3B5X2FicywiXG5cCitjb3B5X2FicygpIC0gUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgYXJndW1lbnQuIFRoaXMgb3BlcmF0aW9uXG5cCitpcyB1bmFmZmVjdGVkIGJ5IHRoZSBjb250ZXh0IGFuZCBpcyBxdWlldDogbm8gZmxhZ3MgYXJlIGNoYW5nZWQgYW5kIG5vXG5cCityb3VuZGluZyBpcyBwZXJmb3JtZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2NvcHlfbmVnYXRlLCJcblwKK2NvcHlfbmVnYXRlKCkgLSBSZXR1cm4gdGhlIG5lZ2F0aW9uIG9mIHRoZSBhcmd1bWVudC4gVGhpcyBvcGVyYXRpb24gaXNcblwKK3VuYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmUgY2hhbmdlZCBhbmQgbm9cblwKK3JvdW5kaW5nIGlzIHBlcmZvcm1lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY29weV9zaWduLCJcblwKK2NvcHlfc2lnbihvdGhlcikgLSBSZXR1cm4gYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIHNpZ24gc2V0XG5cCit0byBiZSB0aGUgc2FtZSBhcyB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuIEZvciBleGFtcGxlOlxuXAorXG5cCisgICAgPj4+IERlY2ltYWwoJzIuMycpLmNvcHlfc2lnbihEZWNpbWFsKCctMS41JykpXG5cCisgICAgRGVjaW1hbCgnLTIuMycpXG5cCitcblwKK1RoaXMgb3BlcmF0aW9uIGlzIHVuYWZmZWN0ZWQgYnkgdGhlIGNvbnRleHQgYW5kIGlzIHF1aWV0OiBubyBmbGFncyBhcmVcblwKK2NoYW5nZWQgYW5kIG5vIHJvdW5kaW5nIGlzIHBlcmZvcm1lZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfZXhwLCJcblwKK2V4cChbY29udGV4dF0pIC0gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgKG5hdHVyYWwpIGV4cG9uZW50aWFsIGZ1bmN0aW9uIGUqKnhcblwKK2F0IHRoZSBnaXZlbiBudW1iZXIuIFRoZSBmdW5jdGlvbiBhbHdheXMgdXNlcyB0aGUgUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kXG5cCit0aGUgcmVzdWx0IGlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19mcm9tX2Zsb2F0LCJcblwKK2Zyb21fZmxvYXQoZikgLSBDbGFzcyBtZXRob2QgdGhhdCBjb252ZXJ0cyBhIGZsb2F0IHRvIGEgZGVjaW1hbCBudW1iZXIsIGV4YWN0bHkuXG5cCitTaW5jZSAwLjEgaXMgbm90IGV4YWN0bHkgcmVwcmVzZW50YWJsZSBpbiBiaW5hcnkgZmxvYXRpbmcgcG9pbnQsXG5cCitEZWNpbWFsLmZyb21fZmxvYXQoMC4xKSBpcyBub3QgdGhlIHNhbWUgYXMgRGVjaW1hbCgnMC4xJykuXG5cCitcblwKKyAgICA+Pj4gRGVjaW1hbC5mcm9tX2Zsb2F0KDAuMSlcblwKKyAgICBEZWNpbWFsKCcwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUnKVxuXAorICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJ25hbicpKVxuXAorICAgIERlY2ltYWwoJ05hTicpXG5cCisgICAgPj4+IERlY2ltYWwuZnJvbV9mbG9hdChmbG9hdCgnaW5mJykpXG5cCisgICAgRGVjaW1hbCgnSW5maW5pdHknKVxuXAorICAgID4+PiBEZWNpbWFsLmZyb21fZmxvYXQoZmxvYXQoJy1pbmYnKSlcblwKKyAgICBEZWNpbWFsKCctSW5maW5pdHknKVxuXAorXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2ZtYSwiXG5cCitmbWEob3RoZXIsIHRoaXJkWywgY29udGV4dF0pIC0gRnVzZWQgbXVsdGlwbHktYWRkLiBSZXR1cm4gc2VsZipvdGhlcit0aGlyZFxuXAord2l0aCBubyByb3VuZGluZyBvZiB0aGUgaW50ZXJtZWRpYXRlIHByb2R1Y3Qgc2VsZipvdGhlci5cblwKK1xuXAorICAgID4+PiBEZWNpbWFsKDIpLmZtYSgzLCA1KVxuXAorICAgIERlY2ltYWwoJzExJylcblwKK1xuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19jYW5vbmljYWwsIlxuXAoraXNfY2Fub25pY2FsKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgY2Fub25pY2FsIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitDdXJyZW50bHksIGEgRGVjaW1hbCBpbnN0YW5jZSBpcyBhbHdheXMgY2Fub25pY2FsLCBzbyB0aGlzIG9wZXJhdGlvbiBhbHdheXNcblwKK3JldHVybnMgVHJ1ZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfZmluaXRlLCJcblwKK2lzX2Zpbml0ZSgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgZmluaXRlIG51bWJlciwgYW5kIEZhbHNlIGlmIHRoZVxuXAorYXJndW1lbnQgaXMgaW5maW5pdGUgb3IgYSBOYU4uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX2luZmluaXRlLCJcblwKK2lzX2luZmluaXRlKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlXG5cCitpbmZpbml0eSBhbmQgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19uYW4sIlxuXAoraXNfbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSAocXVpZXQgb3Igc2lnbmFsaW5nKSBOYU4gYW5kXG5cCitGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX25vcm1hbCwiXG5cCitpc19ub3JtYWwoW2NvbnRleHRdKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIG5vcm1hbCBmaW5pdGUgbm9uLXplcm9cblwKK251bWJlciB3aXRoIGFuIGFkanVzdGVkIGV4cG9uZW50IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBFbWluLiBSZXR1cm4gRmFsc2VcblwKK2lmIHRoZSBhcmd1bWVudCBpcyB6ZXJvLCBzdWJub3JtYWwsIGluZmluaXRlIG9yIGEgTmFOLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19pc19xbmFuLCJcblwKK2lzX3FuYW4oKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBhIHF1aWV0IE5hTiwgYW5kIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfc2lnbmVkLCJcblwKK2lzX3NpZ25lZCgpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGhhcyBhIG5lZ2F0aXZlIHNpZ24gYW5kXG5cCitGYWxzZSBvdGhlcndpc2UuIE5vdGUgdGhhdCBib3RoIHplcm9zIGFuZCBOYU5zIGNhbiBjYXJyeSBzaWducy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfaXNfc25hbiwiXG5cCitpc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB0aGUgYXJndW1lbnQgaXMgYSBzaWduYWxpbmcgTmFOIGFuZCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX3N1Ym5vcm1hbCwiXG5cCitpc19zdWJub3JtYWwoW2NvbnRleHRdKSAtIFJldHVybiBUcnVlIGlmIHRoZSBhcmd1bWVudCBpcyBzdWJub3JtYWwsIGFuZCBGYWxzZVxuXAorb3RoZXJ3aXNlLiBBIG51bWJlciBpcyBzdWJub3JtYWwgaWYgaXQgaXMgbm9uLXplcm8sIGZpbml0ZSwgYW5kIGhhcyBhblxuXAorYWRqdXN0ZWQgZXhwb25lbnQgbGVzcyB0aGFuIEVtaW4uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2lzX3plcm8sIlxuXAoraXNfemVybygpIC0gUmV0dXJuIFRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGEgKHBvc2l0aXZlIG9yIG5lZ2F0aXZlKSB6ZXJvIGFuZFxuXAorRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sbiwiXG5cCitsbihbY29udGV4dF0pIC0gUmV0dXJuIHRoZSBuYXR1cmFsIChiYXNlIGUpIGxvZ2FyaXRobSBvZiB0aGUgb3BlcmFuZC5cblwKK1RoZSBmdW5jdGlvbiBhbHdheXMgdXNlcyB0aGUgUk9VTkRfSEFMRl9FVkVOIG1vZGUgYW5kIHRoZSByZXN1bHQgaXNcblwKK2NvcnJlY3RseSByb3VuZGVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19sb2cxMCwiXG5cCitsb2cxMChbY29udGV4dF0pIC0gUmV0dXJuIHRoZSBiYXNlIHRlbiBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuXG5cCitUaGUgZnVuY3Rpb24gYWx3YXlzIHVzZXMgdGhlIFJPVU5EX0hBTEZfRVZFTiBtb2RlIGFuZCB0aGUgcmVzdWx0IGlzXG5cCitjb3JyZWN0bHkgcm91bmRlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbG9nYiwiXG5cCitsb2diKFtjb250ZXh0XSkgLSBGb3IgYSBub24temVybyBudW1iZXIsIHJldHVybiB0aGUgYWRqdXN0ZWQgZXhwb25lbnRcblwKK29mIHRoZSBvcGVyYW5kIGFzIGEgRGVjaW1hbCBpbnN0YW5jZS4gSWYgdGhlIG9wZXJhbmQgaXMgYSB6ZXJvLCB0aGVuXG5cCitEZWNpbWFsKCctSW5maW5pdHknKSBpcyByZXR1cm5lZCBhbmQgdGhlIERpdmlzaW9uQnlaZXJvIGNvbmRpdGlvbiBpc1xuXAorcmFpc2VkLiBJZiB0aGUgb3BlcmFuZCBpcyBhbiBpbmZpbml0eSB0aGVuIERlY2ltYWwoJ0luZmluaXR5JykgaXMgcmV0dXJuZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfYW5kLCJcblwKK2xvZ2ljYWxfYW5kKG90aGVyWywgY29udGV4dF0pIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGFuZCBvZiB0aGUgdHdvXG5cCisobG9naWNhbCkgb3BlcmFuZHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfaW52ZXJ0LCJcblwKK2xvZ2ljYWxfaW52ZXJ0KFtjb250ZXh0XSkgLSBSZXR1cm4gdGhlIGRpZ2l0LXdpc2UgaW52ZXJzaW9uIG9mIHRoZVxuXAorKGxvZ2ljYWwpIG9wZXJhbmQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfb3IsIlxuXAorbG9naWNhbF9vcihvdGhlclssIGNvbnRleHRdKSAtIFJldHVybiB0aGUgZGlnaXQtd2lzZSBvciBvZiB0aGUgdHdvXG5cCisobG9naWNhbCkgb3BlcmFuZHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2xvZ2ljYWxfeG9yLCJcblwKK2xvZ2ljYWxfeG9yKG90aGVyWywgY29udGV4dF0pIC0gUmV0dXJuIHRoZSBkaWdpdC13aXNlIGV4Y2x1c2l2ZSBvciBvZiB0aGVcblwKK3R3byAobG9naWNhbCkgb3BlcmFuZHMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX21heCwiXG5cCittYXgob3RoZXJbLCBjb250ZXh0XSkgLSBNYXhpbXVtIG9mIHNlbGYgYW5kIG90aGVyLiBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0XG5cCitOYU4gYW5kIHRoZSBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19tYXhfbWFnLCJcblwKK21heF9tYWcob3RoZXJbLCBjb250ZXh0XSkgLSBTaW1pbGFyIHRvIHRoZSBtYXgoKSBtZXRob2QsIGJ1dCB0aGUgY29tcGFyaXNvbiBpc1xuXAorZG9uZSB1c2luZyB0aGUgYWJzb2x1dGUgdmFsdWVzIG9mIHRoZSBvcGVyYW5kcy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfbWluLCJcblwKK21pbihvdGhlclssIGNvbnRleHRdKSAtIE1pbmltdW0gb2Ygc2VsZiBhbmQgb3RoZXIuIElmIG9uZSBvcGVyYW5kIGlzIGEgcXVpZXRcblwKK05hTiBhbmQgdGhlIG90aGVyIGlzIG51bWVyaWMsIHRoZSBudW1lcmljIG9wZXJhbmQgaXMgcmV0dXJuZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX21pbl9tYWcsIlxuXAorbWluX21hZyhvdGhlclssIGNvbnRleHRdKSAtIFNpbWlsYXIgdG8gdGhlIG1pbigpIG1ldGhvZCwgYnV0IHRoZSBjb21wYXJpc29uIGlzXG5cCitkb25lIHVzaW5nIHRoZSBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19uZXh0X21pbnVzLCJcblwKK25leHRfbWludXMoW2NvbnRleHRdKSAtIFJldHVybiB0aGUgbGFyZ2VzdCBudW1iZXIgcmVwcmVzZW50YWJsZSBpbiB0aGUgZ2l2ZW5cblwKK2NvbnRleHQgKG9yIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgY29udGV4dCBpZiBubyBjb250ZXh0IGlzIGdpdmVuKSB0aGF0IGlzXG5cCitzbWFsbGVyIHRoYW4gdGhlIGdpdmVuIG9wZXJhbmQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX25leHRfcGx1cywiXG5cCituZXh0X3BsdXMoW2NvbnRleHRdKSAtIFJldHVybiB0aGUgc21hbGxlc3QgbnVtYmVyIHJlcHJlc2VudGFibGUgaW4gdGhlIGdpdmVuXG5cCitjb250ZXh0IChvciBpbiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaWYgbm8gY29udGV4dCBpcyBnaXZlbikgdGhhdCBpc1xuXAorbGFyZ2VyIHRoYW4gdGhlIGdpdmVuIG9wZXJhbmQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX25leHRfdG93YXJkLCJcblwKK25leHRfdG93YXJkKG90aGVyWywgY29udGV4dF0pIC0gSWYgdGhlIHR3byBvcGVyYW5kcyBhcmUgdW5lcXVhbCwgcmV0dXJuIHRoZVxuXAorbnVtYmVyIGNsb3Nlc3QgdG8gdGhlIGZpcnN0IG9wZXJhbmQgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuXG5cCitJZiBib3RoIG9wZXJhbmRzIGFyZSBudW1lcmljYWxseSBlcXVhbCwgcmV0dXJuIGEgY29weSBvZiB0aGUgZmlyc3Qgb3BlcmFuZFxuXAord2l0aCB0aGUgc2lnbiBzZXQgdG8gYmUgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHNlY29uZCBvcGVyYW5kLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19ub3JtYWxpemUsIlxuXAorbm9ybWFsaXplKFtjb250ZXh0XSkgLSBOb3JtYWxpemUgdGhlIG51bWJlciBieSBzdHJpcHBpbmcgdGhlIHJpZ2h0bW9zdCB0cmFpbGluZ1xuXAoremVyb3MgYW5kIGNvbnZlcnRpbmcgYW55IHJlc3VsdCBlcXVhbCB0byBEZWNpbWFsKCcwJykgdG8gRGVjaW1hbCgnMGUwJykuIFVzZWRcblwKK2ZvciBwcm9kdWNpbmcgY2Fub25pY2FsIHZhbHVlcyBmb3IgbWVtYmVycyBvZiBhbiBlcXVpdmFsZW5jZSBjbGFzcy4gRm9yIGV4YW1wbGUsXG5cCitEZWNpbWFsKCczMi4xMDAnKSBhbmQgRGVjaW1hbCgnMC4zMjEwMDBlKzInKSBib3RoIG5vcm1hbGl6ZSB0byB0aGUgZXF1aXZhbGVudFxuXAordmFsdWUgRGVjaW1hbCgnMzIuMScpLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19udW1iZXJfY2xhc3MsIlxuXAorbnVtYmVyX2NsYXNzKFtjb250ZXh0XSkgLSBSZXR1cm4gYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgY2xhc3Mgb2YgdGhlIG9wZXJhbmQuXG5cCitUaGUgcmV0dXJuZWQgdmFsdWUgaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdGVuIHN0cmluZ3M6XG5cCitcblwKKyAgICAqICctSW5maW5pdHknLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgbmVnYXRpdmUgaW5maW5pdHkuXG5cCisgICAgKiAnLU5vcm1hbCcsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIG5lZ2F0aXZlIG5vcm1hbCBudW1iZXIuXG5cCisgICAgKiAnLVN1Ym5vcm1hbCcsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBuZWdhdGl2ZSBhbmQgc3Vibm9ybWFsLlxuXAorICAgICogJy1aZXJvJywgaW5kaWNhdGluZyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgbmVnYXRpdmUgemVyby5cblwKKyAgICAqICcrWmVybycsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHBvc2l0aXZlIHplcm8uXG5cCisgICAgKiAnK1N1Ym5vcm1hbCcsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBwb3NpdGl2ZSBhbmQgc3Vibm9ybWFsLlxuXAorICAgICogJytOb3JtYWwnLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBwb3NpdGl2ZSBub3JtYWwgbnVtYmVyLlxuXAorICAgICogJytJbmZpbml0eScsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBwb3NpdGl2ZSBpbmZpbml0eS5cblwKKyAgICAqICdOYU4nLCBpbmRpY2F0aW5nIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gKE5vdCBhIE51bWJlcikuXG5cCisgICAgKiAnc05hTicsIGluZGljYXRpbmcgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHNpZ25hbGluZyBOYU4uXG5cCitcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfcXVhbnRpemUsIlxuXAorcXVhbnRpemUoZXhwWywgcm91bmRpbmdbLCBjb250ZXh0XV0pIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGZpcnN0XG5cCitvcGVyYW5kIGFmdGVyIHJvdW5kaW5nIGFuZCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mIHRoZSBzZWNvbmQgb3BlcmFuZC5cblwKK1xuXAorICAgID4+PiBEZWNpbWFsKCcxLjQxNDIxMzU2JykucXVhbnRpemUoRGVjaW1hbCgnMS4wMDAnKSlcblwKKyAgICBEZWNpbWFsKCcxLjQxNCcpXG5cCitcblwKK1VubGlrZSBvdGhlciBvcGVyYXRpb25zLCBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBjb2VmZmljaWVudCBhZnRlciB0aGUgcXVhbnRpemVcblwKK29wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uLCB0aGVuIGFuIEludmFsaWRPcGVyYXRpb24gaXMgc2lnbmFsZWQuXG5cCitUaGlzIGd1YXJhbnRlZXMgdGhhdCwgdW5sZXNzIHRoZXJlIGlzIGFuIGVycm9yIGNvbmRpdGlvbiwgdGhlIHF1YW50aXplZCBleHBvbmVudFxuXAoraXMgYWx3YXlzIGVxdWFsIHRvIHRoYXQgb2YgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZC5cblwKK1xuXAorQWxzbyB1bmxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgcXVhbnRpemUgbmV2ZXIgc2lnbmFscyBVbmRlcmZsb3csIGV2ZW4gaWYgdGhlXG5cCityZXN1bHQgaXMgc3Vibm9ybWFsIGFuZCBpbmV4YWN0LlxuXAorXG5cCitJZiB0aGUgZXhwb25lbnQgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGxhcmdlciB0aGFuIHRoYXQgb2YgdGhlIGZpcnN0LCB0aGVuXG5cCityb3VuZGluZyBtYXkgYmUgbmVjZXNzYXJ5LiBJbiB0aGlzIGNhc2UsIHRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlXG5cCityb3VuZGluZyBhcmd1bWVudCBpZiBnaXZlbiwgZWxzZSBieSB0aGUgZ2l2ZW4gY29udGV4dCBhcmd1bWVudDsgaWYgbmVpdGhlclxuXAorYXJndW1lbnQgaXMgZ2l2ZW4sIHRoZSByb3VuZGluZyBtb2RlIG9mIHRoZSBjdXJyZW50IHRocmVhZCdzIGNvbnRleHQgaXMgdXNlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfcmFkaXgsIlxuXAorcmFkaXgoKSAtIFJldHVybiBEZWNpbWFsKDEwKSwgdGhlIHJhZGl4IChiYXNlKSBpbiB3aGljaCB0aGUgRGVjaW1hbCBjbGFzcyBkb2VzXG5cCithbGwgaXRzIGFyaXRobWV0aWMuIEluY2x1ZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggdGhlIHNwZWNpZmljYXRpb24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3JlbWFpbmRlcl9uZWFyLCJcblwKK3JlbWFpbmRlcl9uZWFyKG90aGVyWywgY29udGV4dF0pIC0gQ29tcHV0ZSB0aGUgbW9kdWxvIGFzIGVpdGhlciBhIHBvc2l0aXZlXG5cCitvciBuZWdhdGl2ZSB2YWx1ZSBkZXBlbmRpbmcgb24gd2hpY2ggaXMgY2xvc2VzdCB0byB6ZXJvLiBGb3IgaW5zdGFuY2UsXG5cCitEZWNpbWFsKDEwKS5yZW1haW5kZXJfbmVhcig2KSByZXR1cm5zIERlY2ltYWwoJy0yJyksIHdoaWNoIGlzIGNsb3NlciB0byB6ZXJvXG5cCit0aGFuIERlY2ltYWwoJzQnKS5cblwKK1xuXAorSWYgYm90aCBhcmUgZXF1YWxseSBjbG9zZSwgdGhlIG9uZSBjaG9zZW4gd2lsbCBoYXZlIHRoZSBzYW1lIHNpZ24gYXMgc2VsZi5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfcm90YXRlLCJcblwKK3JvdGF0ZShvdGhlclssIGNvbnRleHRdKSAtIFJldHVybiB0aGUgcmVzdWx0IG9mIHJvdGF0aW5nIHRoZSBkaWdpdHMgb2YgdGhlXG5cCitmaXJzdCBvcGVyYW5kIGJ5IGFuIGFtb3VudCBzcGVjaWZpZWQgYnkgdGhlIHNlY29uZCBvcGVyYW5kLiBUaGUgc2Vjb25kIG9wZXJhbmRcblwKK211c3QgYmUgYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgLXByZWNpc2lvbiB0aHJvdWdoIHByZWNpc2lvbi4gVGhlIGFic29sdXRlXG5cCit2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgZ2l2ZXMgdGhlIG51bWJlciBvZiBwbGFjZXMgdG8gcm90YXRlLiBJZiB0aGUgc2Vjb25kXG5cCitvcGVyYW5kIGlzIHBvc2l0aXZlIHRoZW4gcm90YXRpb24gaXMgdG8gdGhlIGxlZnQ7IG90aGVyd2lzZSByb3RhdGlvbiBpcyB0byB0aGVcblwKK3JpZ2h0LiBUaGUgY29lZmZpY2llbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgaXMgcGFkZGVkIG9uIHRoZSBsZWZ0IHdpdGggemVyb3MgdG9cblwKK2xlbmd0aCBwcmVjaXNpb24gaWYgbmVjZXNzYXJ5LiBUaGUgc2lnbiBhbmQgZXhwb25lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYXJlXG5cCit1bmNoYW5nZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NhbWVfcXVhbnR1bSwiXG5cCitzYW1lX3F1YW50dW0ob3RoZXJbLCBjb250ZXh0XSkgLSBUZXN0IHdoZXRoZXIgc2VsZiBhbmQgb3RoZXIgaGF2ZSB0aGVcblwKK3NhbWUgZXhwb25lbnQgb3Igd2hldGhlciBib3RoIGFyZSBOYU4uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3NjYWxlYiwiXG5cCitzY2FsZWIob3RoZXJbLCBjb250ZXh0XSkgLSBSZXR1cm4gdGhlIGZpcnN0IG9wZXJhbmQgd2l0aCB0aGUgZXhwb25lbnQgYWRqdXN0ZWRcblwKK3RoZSBzZWNvbmQuIEVxdWl2YWxlbnRseSwgcmV0dXJuIHRoZSBmaXJzdCBvcGVyYW5kIG11bHRpcGxpZWQgYnkgMTAqKm90aGVyLlxuXAorVGhlIHNlY29uZCBvcGVyYW5kIG11c3QgYmUgYW4gaW50ZWdlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc2hpZnQsIlxuXAorc2hpZnQob3RoZXJbLCBjb250ZXh0XSkgLSBSZXR1cm4gdGhlIHJlc3VsdCBvZiBzaGlmdGluZyB0aGUgZGlnaXRzIG9mXG5cCit0aGUgZmlyc3Qgb3BlcmFuZCBieSBhbiBhbW91bnQgc3BlY2lmaWVkIGJ5IHRoZSBzZWNvbmQgb3BlcmFuZC4gVGhlIHNlY29uZFxuXAorb3BlcmFuZCBtdXN0IGJlIGFuIGludGVnZXIgaW4gdGhlIHJhbmdlIC1wcmVjaXNpb24gdGhyb3VnaCBwcmVjaXNpb24uIFRoZVxuXAorYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIGdpdmVzIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvIHNoaWZ0LlxuXAorSWYgdGhlIHNlY29uZCBvcGVyYW5kIGlzIHBvc2l0aXZlLCB0aGVuIHRoZSBzaGlmdCBpcyB0byB0aGUgbGVmdDsgb3RoZXJ3aXNlXG5cCit0aGUgc2hpZnQgaXMgdG8gdGhlIHJpZ2h0LiBEaWdpdHMgc2hpZnRlZCBpbnRvIHRoZSBjb2VmZmljaWVudCBhcmUgemVyb3MuXG5cCitUaGUgc2lnbiBhbmQgZXhwb25lbnQgb2YgdGhlIGZpcnN0IG9wZXJhbmQgYXJlIHVuY2hhbmdlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2Nfc3FydCwiXG5cCitzcXJ0KFtjb250ZXh0XSkgLSBSZXR1cm4gdGhlIHNxdWFyZSByb290IG9mIHRoZSBhcmd1bWVudCB0byBmdWxsIHByZWNpc2lvbi5cblwKK1RoZSByZXN1bHQgaXMgY29ycmVjdGx5IHJvdW5kZWQgdXNpbmcgdGhlIFJPVU5EX0hBTEZfRVZFTiByb3VuZGluZyBtb2RlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY190b19lbmdfc3RyaW5nLCJcblwKK3RvX2VuZ19zdHJpbmcoW2NvbnRleHRdKSAtIENvbnZlcnQgdG8gYW4gZW5naW5lZXJpbmctdHlwZSBzdHJpbmcuXG5cCitFbmdpbmVlcmluZyBub3RhdGlvbiBoYXMgYW4gZXhwb25lbnQgd2hpY2ggaXMgYSBtdWx0aXBsZSBvZiAzLCBzb1xuXAordGhlcmUgYXJlIHVwIHRvIDMgZGlnaXRzIGxlZnQgb2YgdGhlIGRlY2ltYWwgcGxhY2UuIEZvciBleGFtcGxlLFxuXAorRGVjaW1hbCgnMTIzRSsxJykgaXMgY29udmVydGVkIHRvIERlY2ltYWwoJzEuMjNFKzMnKVxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY190b19pbnRlZ3JhbCwiXG5cCit0b19pbnRlZ3JhbChbcm91bmRpbmdbLCBjb250ZXh0XV0pIC0gSWRlbnRpY2FsIHRvIHRoZSB0b19pbnRlZ3JhbF92YWx1ZSgpXG5cCittZXRob2QuIFRoZSB0b19pbnRlZ3JhbCBuYW1lIGhhcyBiZWVuIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlclxuXAordmVyc2lvbnMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX2V4YWN0LCJcblwKK3RvX2ludGVncmFsX2V4YWN0KFtyb3VuZGluZ1ssIGNvbnRleHRdXSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLFxuXAorc2lnbmFsaW5nIEluZXhhY3Qgb3IgUm91bmRlZCBhcyBhcHByb3ByaWF0ZSBpZiByb3VuZGluZyBvY2N1cnMuIFRoZSByb3VuZGluZ1xuXAorbW9kZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3VuZGluZyBwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuXG5cCitjb250ZXh0LiBJZiBuZWl0aGVyIHBhcmFtZXRlciBpcyBnaXZlbiwgdGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudFxuXAorZGVmYXVsdCBjb250ZXh0IGlzIHVzZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX3RvX2ludGVncmFsX3ZhbHVlLCJcblwKK3RvX2ludGVncmFsX3ZhbHVlKFtyb3VuZGluZ1ssIGNvbnRleHRdXSkgLSBSb3VuZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIHdpdGhvdXRcblwKK3NpZ25hbGluZyBJbmV4YWN0IG9yIFJvdW5kZWQuIFRoZSByb3VuZGluZyBtb2RlIGlzIGRldGVybWluZWQgYnkgdGhlIHJvdW5kaW5nXG5cCitwYXJhbWV0ZXIgaWYgZ2l2ZW4sIGVsc2UgYnkgdGhlIGdpdmVuIGNvbnRleHQuIElmIG5laXRoZXIgcGFyYW1ldGVyIGlzIGdpdmVuLFxuXAordGhlbiB0aGUgcm91bmRpbmcgbW9kZSBvZiB0aGUgY3VycmVudCBkZWZhdWx0IGNvbnRleHQgaXMgdXNlZC5cblwKK1xuIik7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0IE9iamVjdCBhbmQgTWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitQeURvY19TVFJWQVIoZG9jX2NvbnRleHQsIlxuXAorVGhlIGNvbnRleHQgYWZmZWN0cyBhbG1vc3QgYWxsIG9wZXJhdGlvbnMgYW5kIGNvbnRyb2xzIHJvdW5kaW5nLFxuXAorT3Zlci9VbmRlcmZsb3csIHJhaXNpbmcgb2YgZXhjZXB0aW9ucyBhbmQgbXVjaCBtb3JlLiBBIG5ldyBjb250ZXh0XG5cCitjYW4gYmUgY29uc3RydWN0ZWQgYXMgZm9sbG93czpcblwKK1xuXAorICAgID4+PiBjID0gQ29udGV4dChwcmVjPTI4LCBFbWluPS00MjUwMDAwMDAsIEVtYXg9NDI1MDAwMDAwLFxuXAorICAgIC4uLiAgICAgICAgICAgICByb3VuZGluZz1ST1VORF9IQUxGX0VWRU4sIGNhcGl0YWxzPTEsIGNsYW1wPTEsXG5cCisgICAgLi4uICAgICAgICAgICAgIHRyYXBzPVtJbnZhbGlkT3BlcmF0aW9uLCBEaXZpc2lvbkJ5WmVybywgT3ZlcmZsb3ddLFxuXAorICAgIC4uLiAgICAgICAgICAgICBmbGFncz1bXSlcblwKKyAgICA+Pj5cblwKK1xuXAorXG4iKTsKKworI2lmZGVmIEVYVFJBX0ZVTkNUSU9OQUxJVFkKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FwcGx5LCJcblwKK2FwcGx5KHgpIC0gQXBwbHkgc2VsZiB0byBEZWNpbWFsIHguXG5cCitcbiIpOworI2VuZGlmCisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NsZWFyX2ZsYWdzLCJcblwKK2NsZWFyX2ZsYWdzKCkgLSBSZXNldCBhbGwgZmxhZ3MgdG8gRmFsc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jbGVhcl90cmFwcywiXG5cCitjbGVhcl90cmFwcygpIC0gU2V0IGFsbCB0cmFwcyB0byBGYWxzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHksIlxuXAorY29weSgpIC0gUmV0dXJuIGEgZHVwbGljYXRlIG9mIHRoZSBjb250ZXh0IHdpdGggYWxsIGZsYWdzIGNsZWFyZWQuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2RlY2ltYWwsIlxuXAorY29weV9kZWNpbWFsKHgpIC0gUmV0dXJuIGEgY29weSBvZiBEZWNpbWFsIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jcmVhdGVfZGVjaW1hbCwiXG5cCitjcmVhdGVfZGVjaW1hbCh4KSAtIENyZWF0ZSBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGZyb20geCwgdXNpbmcgc2VsZiBhcyB0aGVcblwKK2NvbnRleHQuIFVubGlrZSB0aGUgRGVjaW1hbCBjb25zdHJ1Y3RvciwgdGhpcyBmdW5jdGlvbiBvYnNlcnZlcyB0aGUgY29udGV4dFxuXAorbGltaXRzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCwiXG5cCitjcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0KGYpIC0gQ3JlYXRlIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBmbG9hdCBmLlxuXAorVW5saWtlIHRoZSBEZWNpbWFsLmZyb21fZmxvYXQoKSBjbGFzcyBtZXRob2QsIHRoaXMgZnVuY3Rpb24gb2JzZXJ2ZXMgdGhlXG5cCitjb250ZXh0IGxpbWl0cy5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X0V0aW55LCJcblwKK0V0aW55KCkgLSBSZXR1cm4gYSB2YWx1ZSBlcXVhbCB0byBFbWluIC0gcHJlYyArIDEsIHdoaWNoIGlzIHRoZSBtaW5pbXVtXG5cCitleHBvbmVudCB2YWx1ZSBmb3Igc3Vibm9ybWFsIHJlc3VsdHMuIFdoZW4gdW5kZXJmbG93IG9jY3VycywgdGhlIGV4cG9uZW50XG5cCitpcyBzZXQgdG8gRXRpbnkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9FdG9wLCJcblwKK0V0b3AoKSAtIFJldHVybiBhIHZhbHVlIGVxdWFsIHRvIEVtYXggLSBwcmVjICsgMS4gVGhpcyBpcyB0aGUgbWF4aW11bSBleHBvbmVudFxuXAoraWYgdGhlIF9jbGFtcCBmaWVsZCBvZiB0aGUgY29udGV4dCBpcyBzZXQgdG8gMSAoSUVFRSBjbGFtcCBtb2RlKS4gRXRvcCgpIG11c3RcblwKK25vdCBiZSBuZWdhdGl2ZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2FicywiXG5cCithYnMoeCkgLSBSZXR1cm4gdGhlIGFic29sdXRlIHZhbHVlIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9hZGQsIlxuXAorYWRkKHgsIHkpIC0gUmV0dXJuIHRoZSBzdW0gb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2Nhbm9uaWNhbCwiXG5cCitjYW5vbmljYWwoeCkgLSBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvbXBhcmUsIlxuXAorY29tcGFyZSh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSBudW1lcmljYWxseS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvbXBhcmVfc2lnbmFsLCJcblwKK2NvbXBhcmVfc2lnbmFsKHgsIHkpIC0gQ29tcGFyZSB4IGFuZCB5IG51bWVyaWNhbGx5LiBBbGwgTmFOcyBzaWduYWwuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsLCJcblwKK2NvbXBhcmVfdG90YWwoeCwgeSkgLSBDb21wYXJlIHggYW5kIHkgdXNpbmcgdGhlaXIgYWJzdHJhY3QgcmVwcmVzZW50YXRpb24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb21wYXJlX3RvdGFsX21hZywiXG5cCitjb21wYXJlX3RvdGFsX21hZyh4LCB5KSAtIENvbXBhcmUgeCBhbmQgeSB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbixcblwKK2lnbm9yaW5nIHNpZ24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9jb3B5X2FicywiXG5cCitjb3B5X2Ficyh4KSAtIFJldHVybiBhIGNvcHkgb2YgeCB3aXRoIHRoZSBzaWduIHNldCB0byAwLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfY29weV9uZWdhdGUsIlxuXAorY29weV9uZWdhdGUoeCkgLSBSZXR1cm4gYSBjb3B5IG9mIHggd2l0aCB0aGUgc2lnbiBpbnZlcnRlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2NvcHlfc2lnbiwiXG5cCitjb3B5X3NpZ24oeCwgeSkgLSBDb3B5IHRoZSBzaWduIGZyb20geSB0byB4LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZGl2aWRlLCJcblwKK2RpdmlkZSh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2RpdmlkZV9pbnQsIlxuXAorZGl2aWRlX2ludCh4LCB5KSAtIFJldHVybiB4IGRpdmlkZWQgYnkgeSwgdHJ1bmNhdGVkIHRvIGFuIGludGVnZXIuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9kaXZtb2QsIlxuXAorZGl2bW9kKHgsIHkpIC0gUmV0dXJuIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIHggLyB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfZXhwLCJcblwKK2V4cCh4KSAtIFJldHVybiBlICoqIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9mbWEsIlxuXAorZm1hKHgsIHksIHopIC0gUmV0dXJuIHggbXVsdGlwbGllZCBieSB5LCBwbHVzIHouXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19jYW5vbmljYWwsIlxuXAoraXNfY2Fub25pY2FsKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBjYW5vbmljYWwsIEZhbHNlIG90aGVyd2lzZS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2lzX2Zpbml0ZSwiXG5cCitpc19maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGZpbml0ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfaW5maW5pdGUsIlxuXAoraXNfaW5maW5pdGUoeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGluZmluaXRlLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19uYW4sIlxuXAoraXNfbmFuKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBhIHFOYU4gb3Igc05hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfbm9ybWFsLCJcblwKK2lzX25vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgYSBub3JtYWwgbnVtYmVyLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19xbmFuLCJcblwKK2lzX3FuYW4oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgcXVpZXQgTmFOLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc19zaWduZWQsIlxuXAoraXNfc2lnbmVkKHgpIC0gUmV0dXJuIFRydWUgaWYgeCBpcyBuZWdhdGl2ZSwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc25hbiwiXG5cCitpc19zbmFuKCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgc2lnbmFsaW5nIE5hTiwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfaXNfc3Vibm9ybWFsLCJcblwKK2lzX3N1Ym5vcm1hbCh4KSAtIFJldHVybiBUcnVlIGlmIHggaXMgc3Vibm9ybWFsLCBGYWxzZSBvdGhlcndpc2UuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9pc196ZXJvLCJcblwKK2lzX3plcm8oeCkgLSBSZXR1cm4gVHJ1ZSBpZiB4IGlzIGEgemVybywgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbG4sIlxuXAorbG4oeCkgLSBSZXR1cm4gdGhlIG5hdHVyYWwgKGJhc2UgZSkgbG9nYXJpdGhtIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9sb2cxMCwiXG5cCitsb2cxMCh4KSAtIFJldHVybiB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2IsIlxuXAorbG9nYih4KSAtIFJldHVybiB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZSBvZiB0aGUgb3BlcmFuZCdzIE1TRC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfYW5kLCJcblwKK2xvZ2ljYWxfYW5kKHgsIHkpIC0gRGlnaXQtd2lzZSBhbmQgb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfaW52ZXJ0LCJcblwKK2xvZ2ljYWxfaW52ZXJ0KHgpIC0gSW52ZXJ0IGFsbCBkaWdpdHMgb2YgeC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfb3IsIlxuXAorbG9naWNhbF9vcih4LCB5KSAtIERpZ2l0LXdpc2Ugb3Igb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X2xvZ2ljYWxfeG9yLCJcblwKK2xvZ2ljYWxfeG9yKHgsIHkpIC0gRGlnaXQtd2lzZSB4b3Igb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21heCwiXG5cCittYXgoeCwgeSkgLSBDb21wYXJlIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybiB0aGUgbWF4aW11bS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21heF9tYWcsIlxuXAorbWF4X21hZyh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21pbiwiXG5cCittaW4oeCwgeSkgLSBDb21wYXJlIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgYW5kIHJldHVybiB0aGUgbWluaW11bS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21pbl9tYWcsIlxuXAorbWluX21hZyh4LCB5KSAtIENvbXBhcmUgdGhlIHZhbHVlcyBudW1lcmljYWxseSB3aXRoIHRoZWlyIHNpZ24gaWdub3JlZC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X21pbnVzLCJcblwKK21pbnVzKHgpIC0gTWludXMgY29ycmVzcG9uZHMgdG8gdGhlIHVuYXJ5IHByZWZpeCBtaW51cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCitidXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfbXVsdGlwbHksIlxuXAorbXVsdGlwbHkoeCwgeSkgLSBSZXR1cm4gdGhlIHByb2R1Y3Qgb2YgeCBhbmQgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfbWludXMsIlxuXAorbmV4dF9taW51cyh4KSAtIFJldHVybiB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIG51bWJlciBzbWFsbGVyIHRoYW4geC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X25leHRfcGx1cywiXG5cCituZXh0X3BsdXMoeCkgLSBSZXR1cm4gdGhlIHNtYWxsZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIGxhcmdlciB0aGFuIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9uZXh0X3Rvd2FyZCwiXG5cCituZXh0X3Rvd2FyZCh4KSAtIFJldHVybiB0aGUgbnVtYmVyIGNsb3Nlc3QgdG8geCwgaW4gdGhlIGRpcmVjdGlvbiB0b3dhcmRzIHkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9ub3JtYWxpemUsIlxuXAorbm9ybWFsaXplKHgpIC0gUmVkdWNlIHggdG8gaXRzIHNpbXBsZXN0IGZvcm0uIEFsaWFzIGZvciByZWR1Y2UoeCkuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9udW1iZXJfY2xhc3MsIlxuXAorbnVtYmVyX2NsYXNzKHgpIC0gUmV0dXJuIGFuIGluZGljYXRpb24gb2YgdGhlIGNsYXNzIG9mIHguXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9wbHVzLCJcblwKK3BsdXMoeCkgLSBQbHVzIGNvcnJlc3BvbmRzIHRvIHRoZSB1bmFyeSBwcmVmaXggcGx1cyBvcGVyYXRvciBpbiBQeXRob24sXG5cCitidXQgYXBwbGllcyB0aGUgY29udGV4dCB0byB0aGUgcmVzdWx0LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcG93ZXIsIlxuXAorcG93ZXIoeCwgeSkgLSBDb21wdXRlIHgqKnkuIElmIHggaXMgbmVnYXRpdmUsIHRoZW4geSBtdXN0IGJlIGludGVncmFsLlxuXAorVGhlIHJlc3VsdCB3aWxsIGJlIGluZXhhY3QgdW5sZXNzIHkgaXMgaW50ZWdyYWwgYW5kIHRoZSByZXN1bHQgaXMgZmluaXRlXG5cCithbmQgY2FuIGJlIGV4cHJlc3NlZCBleGFjdGx5IGluICdwcmVjaXNpb24nIGRpZ2l0cy4gSW4gdGhlIFB5dGhvbiB2ZXJzaW9uXG5cCit0aGUgcmVzdWx0IGlzIGFsd2F5cyBjb3JyZWN0bHkgcm91bmRlZCwgaW4gdGhlIEMgdmVyc2lvbiB0aGUgcmVzdWx0IGlzXG5cCithbG1vc3QgYWx3YXlzIGNvcnJlY3RseSByb3VuZGVkLlxuXAorXG5cCitwb3dlcih4LCB5LCBtKSAtIENvbXB1dGUgKHgqKnkpICUgbS4gVGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnMgaG9sZDpcblwKK1xuXAorICAgICogYWxsIHRocmVlIGFyZ3VtZW50cyBtdXN0IGJlIGludGVncmFsXG5cCisgICAgKiB5IG11c3QgYmUgbm9ubmVnYXRpdmVcblwKKyAgICAqIGF0IGxlYXN0IG9uZSBvZiB4IG9yIHkgbXVzdCBiZSBub256ZXJvXG5cCisgICAgKiBtIG11c3QgYmUgbm9uemVybyBhbmQgbGVzcyB0aGFuIDEwKipwcmVjIGluIGFic29sdXRlIHZhbHVlXG5cCitcblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3F1YW50aXplLCJcblwKK3F1YW50aXplKHgsIHkpIC0gUmV0dXJuIGEgdmFsdWUgZXF1YWwgdG8geCAocm91bmRlZCksIGhhdmluZyB0aGUgZXhwb25lbnQgb2YgeS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3JhZGl4LCJcblwKK3JhZGl4KCkgLSBSZXR1cm4gMTAuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9yZW1haW5kZXIsIlxuXAorcmVtYWluZGVyKHgsIHkpIC0gUmV0dXJuIHRoZSByZW1haW5kZXIgZnJvbSBpbnRlZ2VyIGRpdmlzaW9uLiBUaGUgc2lnbiBvZlxuXAordGhlIHJlc3VsdCwgaWYgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfcmVtYWluZGVyX25lYXIsIlxuXAorcmVtYWluZGVyX25lYXIoeCwgeSkgLSBSZXR1cm4geCAtIHkgKiBuLCB3aGVyZSBuIGlzIHRoZSBpbnRlZ2VyIG5lYXJlc3QgdGhlXG5cCitleGFjdCB2YWx1ZSBvZiB4IC8geSAoaWYgdGhlIHJlc3VsdCBpcyAwIHRoZW4gaXRzIHNpZ24gd2lsbCBiZSB0aGUgc2lnbiBvZiB4KS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3JvdGF0ZSwiXG5cCityb3RhdGUoeCwgeSkgLSBSZXR1cm4gYSBjb3B5IG9mIHgsIHJvdGF0ZWQgYnkgeSBwbGFjZXMuXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF9zYW1lX3F1YW50dW0sIlxuXAorc2FtZV9xdWFudHVtKHgsIHkpIC0gUmV0dXJuIFRydWUgaWYgdGhlIHR3byBvcGVyYW5kcyBoYXZlIHRoZSBzYW1lIGV4cG9uZW50LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc2NhbGViLCJcblwKK3NjYWxlYih4LCB5KSAtIFJldHVybiB0aGUgZmlyc3Qgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZVxuXAordG8gaXRzIGV4cC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3NoaWZ0LCJcblwKK3NoaWZ0KHgsIHkpIC0gUmV0dXJuIGEgY29weSBvZiB4LCBzaGlmdGVkIGJ5IHkgcGxhY2VzLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc3FydCwiXG5cCitzcXJ0KHgpIC0gU3F1YXJlIHJvb3Qgb2YgYSBub24tbmVnYXRpdmUgbnVtYmVyIHRvIGNvbnRleHQgcHJlY2lzaW9uLlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfc3VidHJhY3QsIlxuXAorc3VidHJhY3QoeCwgeSkgLSBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB4IGFuZCB5LlxuXAorXG4iKTsKKworUHlEb2NfU1RSVkFSKGRvY19jdHhfdG9fZW5nX3N0cmluZywiXG5cCit0b19lbmdfc3RyaW5nKHgpIC0gQ29udmVydCBhIG51bWJlciB0byBhIHN0cmluZywgdXNpbmcgZW5naW5lZXJpbmcgbm90YXRpb24uXG5cCitcbiIpOworCitQeURvY19TVFJWQVIoZG9jX2N0eF90b19pbnRlZ3JhbCwiXG5cCit0b19pbnRlZ3JhbCh4KSAtIElkZW50aWNhbCB0byB0b19pbnRlZ3JhbF92YWx1ZSh4KS5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsX2V4YWN0LCJcblwKK3RvX2ludGVncmFsX2V4YWN0KHgpIC0gUm91bmQgdG8gYW4gaW50ZWdlci4gU2lnbmFsIGlmIHRoZSByZXN1bHQgaXNcblwKK3JvdW5kZWQgb3IgaW5leGFjdC5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX2ludGVncmFsX3ZhbHVlLCJcblwKK3RvX2ludGVncmFsX3ZhbHVlKHgpIC0gUm91bmQgdG8gYW4gaW50ZWdlci5cblwKK1xuIik7CisKK1B5RG9jX1NUUlZBUihkb2NfY3R4X3RvX3NjaV9zdHJpbmcsIlxuXAordG9fc2NpX3N0cmluZyh4KSAtIENvbnZlcnQgYSBudW1iZXIgdG8gYSBzdHJpbmcgdXNpbmcgc2NpZW50aWZpYyBub3RhdGlvbi5cblwKK1xuIik7CisKKworI2VuZGlmIC8qIERPQ1NUUklOR1NfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9SRUFETUUudHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkOGY4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL1JFQURNRS50eHQKQEAgLTAsMCArMSw5MCBAQAorCisKK2xpYm1wZGVjCis9PT09PT09PQorCitsaWJtcGRlYyBpcyBhIGZhc3QgQy9DKysgbGlicmFyeSBmb3IgY29ycmVjdGx5LXJvdW5kZWQgYXJiaXRyYXJ5IHByZWNpc2lvbgorZGVjaW1hbCBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljLiBJdCBpcyBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIG9mCitNaWtlIENvd2xpc2hhdy9JQk0ncyBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uLgorCisKK0ZpbGVzIHJlcXVpcmVkIGZvciB0aGUgUHl0aG9uIF9kZWNpbWFsIG1vZHVsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgQ29yZSBmaWxlcyBmb3Igc21hbGwgYW5kIG1lZGl1bSBwcmVjaXNpb24gYXJpdGhtZXRpYworICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBiYXNlYXJpdGgue2MsaH0gIC0+ICBDb3JlIGFyaXRobWV0aWMgaW4gYmFzZSAxMCoqOSBvciAxMCoqMTkuCisgICAgYml0cy5oICAgICAgICAgICAtPiAgUG9ydGFibGUgZGV0ZWN0aW9uIG9mIGxlYXN0L21vc3Qgc2lnbmlmaWNhbnQgb25lLWJpdC4KKyAgICBjb25zdGFudHMue2MsaH0gIC0+ICBDb25zdGFudHMgdGhhdCBhcmUgdXNlZCBpbiBtdWx0aXBsZSBmaWxlcy4KKyAgICBjb250ZXh0LmMgICAgICAgIC0+ICBDb250ZXh0IGZ1bmN0aW9ucy4KKyAgICBpby57YyxofSAgICAgICAgIC0+ICBDb252ZXJzaW9ucyBiZXR3ZWVuIG1wZF90IGFuZCBBU0NJSSBzdHJpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF90IGZvcm1hdHRpbmcgKGFsbG93cyBVVEYtOCBmaWxsIGNoYXJhY3RlcikuCisgICAgbWVtb3J5LntjLGh9ICAgICAtPiAgQWxsb2NhdGlvbiBoYW5kbGVycyB3aXRoIG92ZXJmbG93IGRldGVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBmdW5jdGlvbnMgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIHN0YXRpYworICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkeW5hbWljIG1wZF90LgorICAgIG1wZGVjaW1hbC57YyxofSAgLT4gIEFsbCAocXVpZXQpIGZ1bmN0aW9ucyBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KKyAgICB0eXBlYXJpdGguaCAgICAgIC0+ICBGYXN0IHByaW1pdGl2ZXMgZm9yIGRvdWJsZSB3b3JkIG11bHRpcGxpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRpdmlzaW9uIGV0Yy4KKworICAgIFZpc3VhbCBTdHVkaW8gb25seToKKyAgICB+fn5+fn5+fn5+fn5+fn5+fn5+CisgICAgICB2Y2NvbXBhdC5oICAgIC0+ICBzbnByaW50ZiA8PT0+IHNwcmludGZfcyBhbmQgc2ltaWxhciB0aGluZ3MuCisgICAgICB2Y3N0ZGludC5oICAgIC0+ICBzdGRpbnQuaCAoaW5jbHVkZWQgaW4gVlMgMjAxMCBidXQgbm90IGluIFZTIDIwMDgpLgorICAgICAgdmNkaXY2NC5hc20gICAtPiAgRG91YmxlIHdvcmQgZGl2aXNpb24gdXNlZCBpbiB0eXBlYXJpdGguaC4gVlMgMjAwOCBkb2VzCisgICAgICAgICAgICAgICAgICAgICAgICBub3QgYWxsb3cgaW5saW5lIGFzbSBmb3IgeDY0LiBBbHNvLCBpdCBkb2VzIG5vdCBwcm92aWRlCisgICAgICAgICAgICAgICAgICAgICAgICBhbiBpbnRyaW5zaWMgZm9yIGRvdWJsZSB3b3JkIGRpdmlzaW9uLgorCisgIEZpbGVzIGZvciBiaWdudW0gYXJpdGhtZXRpYzoKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIGZvbGxvd2luZyBmaWxlcyBpbXBsZW1lbnQgdGhlIEZhc3QgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0KKyAgICB1c2VkIGZvciBtdWx0aXBseWluZyBjb2VmZmljaWVudHMgd2l0aCBtb3JlIHRoYW4gMTAyNCB3b3JkcyAoc2VlCisgICAgbXBkZWNpbWFsLmM6IF9tcGRfZm50bXVsKCkpLgorCisgICAgICB1bW9kYXJpdGguaCAgICAgICAgLT4gIEZhc3QgbG93IGxldmVsIHJvdXRpbmVzIGZvciB1bnNpZ25lZCBtb2R1bGFyIGFyaXRobWV0aWMuCisgICAgICBudW1iZXJ0aGVvcnkue2MsaH0gLT4gIFJvdXRpbmVzIGZvciBzZXR0aW5nIHVwIHRoZSBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4KKyAgICAgIGRpZnJhZGl4Mi57YyxofSAgICAtPiAgRGVjaW1hdGlvbiBpbiBmcmVxdWVuY3kgdHJhbnNmb3JtLCB1c2VkIGFzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFzZSBjYXNlIiBieSB0aGUgZm9sbG93aW5nIHRocmVlIGZpbGVzOgorCisgICAgICAgIGZudC57YyxofSAgICAgICAgLT4gIFRyYW5zZm9ybSBhcnJheXMgdXAgdG8gNDA5NiB3b3Jkcy4KKyAgICAgICAgc2l4c3RlcC57YyxofSAgICAtPiAgVHJhbnNmb3JtIGxhcmdlciBhcnJheXMgb2YgbGVuZ3RoIDIqKm4uCisgICAgICAgIGZvdXJzdGVwLntjLGh9ICAgLT4gIFRyYW5zZm9ybSBsYXJnZXIgYXJyYXlzIG9mIGxlbmd0aCAzICogMioqbi4KKworICAgICAgY29udm9sdXRlLntjLGh9ICAgIC0+ICBGYXN0IGNvbnZvbHV0aW9uIHVzaW5nIG9uZSBvZiB0aGUgdGhyZWUgdHJhbnNmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy4KKyAgICAgIHRyYW5zcG9zZS57YyxofSAgICAtPiAgVHJhbnNwb3NpdGlvbnMgbmVlZGVkIGZvciB0aGUgc2l4c3RlcCBhbGdvcml0aG0uCisgICAgICBjcnQue2MsaH0gICAgICAgICAgLT4gIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW06IHVzZSBpbmZvcm1hdGlvbiBmcm9tIHRocmVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMgbW9kdWxvIHRocmVlIGRpZmZlcmVudCBwcmltZXMgdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCByZXN1bHQuCisKKworUG9pbnRlcnMgdG8gbGl0ZXJhdHVyZSwgcHJvb2ZzIGFuZCBtb3JlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBsaXRlcmF0dXJlLworICAtLS0tLS0tLS0tLQorCisgICAgUkVGRVJFTkNFUy50eHQgIC0+ICBMaXN0IG9mIHJlbGV2YW50IHBhcGVycy4KKyAgICBiaWdudW0udHh0ICAgICAgLT4gIEV4cGxhbmF0aW9uIG9mIHRoZSBGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtIChGTlQpLgorICAgIGZudC5weSAgICAgICAgICAtPiAgVmVyaWZ5IGNvbnN0YW50cyB1c2VkIGluIHRoZSBGTlQ7IFB5dGhvbiBkZW1vIGZvciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIE8oTioqMikgZGlzY3JldGUgdHJhbnNmb3JtLgorCisgICAgbWF0cml4LXRyYW5zZm9ybS50eHQgLT4gUHJvb2YgZm9yIHRoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gdXNlZCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdXJzdGVwLmMuCisgICAgc2l4LXN0ZXAudHh0ICAgICAgICAgLT4gU2hvdyB0aGF0IHRoZSBhbGdvcml0aG0gdXNlZCBpbiBzaXhzdGVwLmMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHZhcmlhbnQgb2YgdGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybS4KKyAgICBtdWxtb2QtNjQudHh0ICAgICAgICAtPiBQcm9vZiBmb3IgdGhlIG11bG1vZDY0IGFsZ29yaXRobSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW1vZGFyaXRoLmguCisgICAgbXVsbW9kLXBwcm8udHh0ICAgICAgLT4gUHJvb2YgZm9yIHRoZSB4ODcgRlBVIG1vZHVsYXIgbXVsdGlwbGljYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHVtb2Rhcml0aC5oLgorICAgIHVtb2Rhcml0aC5saXNwICAgICAgIC0+IEFDTDIgcHJvb2ZzIGZvciBtYW55IGZ1bmN0aW9ucyBmcm9tIHVtb2Rhcml0aC5oLgorICAKKworTGlicmFyeSBBdXRob3IKKz09PT09PT09PT09PT09CisKKyAgU3RlZmFuIEtyYWggPHNrcmFoQGJ5dGVyZWVmLm9yZz4KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkMjFhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5jCkBAIC0wLDAgKzEsNjU4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJiYXNlYXJpdGguaCIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgQ2FsY3VsYXRpb25zIGluIGJhc2UgTVBEX1JBRElYICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoKKyAqIEtudXRoLCBUQU9DUCwgVm9sdW1lIDIsIDQuMy4xOgorICogICAgdyA6PSBzdW0gb2YgdSAobGVuIG0pIGFuZCB2IChsZW4gbikKKyAqICAgIG4gPiAwIGFuZCBtID49IG4KKyAqIFRoZSBjYWxsaW5nIGZ1bmN0aW9uIGhhcyB0byBoYW5kbGUgYSBwb3NzaWJsZSBmaW5hbCBjYXJyeS4KKyAqLworbXBkX3VpbnRfdAorX21wZF9iYXNlYWRkKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBzOworICAgIG1wZF91aW50X3QgY2FycnkgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCAmJiBtID49IG4pOworCisgICAgLyogYWRkIG4gbWVtYmVycyBvZiB1IGFuZCB2ICovCisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBzID0gdVtpXSArICh2W2ldICsgY2FycnkpOworICAgICAgICBjYXJyeSA9IChzIDwgdVtpXSkgfCAocyA+PSBNUERfUkFESVgpOworICAgICAgICB3W2ldID0gY2FycnkgPyBzLU1QRF9SQURJWCA6IHM7CisgICAgfQorICAgIC8qIGlmIHRoZXJlIGlzIGEgY2FycnksIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoOyBjYXJyeSAmJiBpIDwgbTsgaSsrKSB7CisgICAgICAgIHMgPSB1W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gTVBEX1JBRElYKTsKKyAgICAgICAgd1tpXSA9IGNhcnJ5ID8gMCA6IHM7CisgICAgfQorICAgIC8qIGNvcHkgdGhlIHJlc3Qgb2YgdSAqLworICAgIGZvciAoOyBpIDwgbTsgaSsrKSB7CisgICAgICAgIHdbaV0gPSB1W2ldOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyoKKyAqIEFkZCB0aGUgY29udGVudHMgb2YgdSB0byB3LiBDYXJyaWVzIGFyZSBwcm9wYWdhdGVkIGZ1cnRoZXIuIFRoZSBjYWxsZXIKKyAqIGhhcyB0byBtYWtlIHN1cmUgdGhhdCB3IGlzIGJpZyBlbm91Z2guCisgKi8KK3ZvaWQKK19tcGRfYmFzZWFkZHRvKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgaWYgKG4gPT0gMCkgcmV0dXJuOworCisgICAgLyogYWRkIG4gbWVtYmVycyBvZiB1IHRvIHcgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIHMgPSB3W2ldICsgKHVbaV0gKyBjYXJyeSk7CisgICAgICAgIGNhcnJ5ID0gKHMgPCB3W2ldKSB8IChzID49IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IHMtTVBEX1JBRElYIDogczsKKyAgICB9CisgICAgLyogaWYgdGhlcmUgaXMgYSBjYXJyeSwgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yICg7IGNhcnJ5OyBpKyspIHsKKyAgICAgICAgcyA9IHdbaV0gKyBjYXJyeTsKKyAgICAgICAgY2FycnkgPSAocyA9PSBNUERfUkFESVgpOworICAgICAgICB3W2ldID0gY2FycnkgPyAwIDogczsKKyAgICB9Cit9CisKKy8qCisgKiBBZGQgdiB0byB3IChsZW4gbSkuIFRoZSBjYWxsaW5nIGZ1bmN0aW9uIGhhcyB0byBoYW5kbGUgYSBwb3NzaWJsZQorICogZmluYWwgY2FycnkuIEFzc3VtcHRpb246IG0gPiAwLgorICovCittcGRfdWludF90CitfbXBkX3Nob3J0YWRkKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChtID4gMCk7CisKKyAgICAvKiBhZGQgdiB0byB3ICovCisgICAgcyA9IHdbMF0gKyB2OworICAgIGNhcnJ5ID0gKHMgPCB2KSB8IChzID49IE1QRF9SQURJWCk7CisgICAgd1swXSA9IGNhcnJ5ID8gcy1NUERfUkFESVggOiBzOworCisgICAgLyogaWYgdGhlcmUgaXMgYSBjYXJyeSwgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yIChpID0gMTsgY2FycnkgJiYgaSA8IG07IGkrKykgeworICAgICAgICBzID0gd1tpXSArIGNhcnJ5OworICAgICAgICBjYXJyeSA9IChzID09IE1QRF9SQURJWCk7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IDAgOiBzOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyogSW5jcmVtZW50IHUuIFRoZSBjYWxsaW5nIGZ1bmN0aW9uIGhhcyB0byBoYW5kbGUgYSBwb3NzaWJsZSBjYXJyeS4gKi8KK21wZF91aW50X3QKK19tcGRfYmFzZWluY3IobXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMTsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgLyogaWYgdGhlcmUgaXMgYSBjYXJyeSwgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yIChpID0gMDsgY2FycnkgJiYgaSA8IG47IGkrKykgeworICAgICAgICBzID0gdVtpXSArIGNhcnJ5OworICAgICAgICBjYXJyeSA9IChzID09IE1QRF9SQURJWCk7CisgICAgICAgIHVbaV0gPSBjYXJyeSA/IDAgOiBzOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyoKKyAqIEtudXRoLCBUQU9DUCwgVm9sdW1lIDIsIDQuMy4xOgorICogICAgIHcgOj0gZGlmZmVyZW5jZSBvZiB1IChsZW4gbSkgYW5kIHYgKGxlbiBuKS4KKyAqICAgICBudW1iZXIgaW4gdSA+PSBudW1iZXIgaW4gdjsKKyAqLwordm9pZAorX21wZF9iYXNlc3ViKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBkOworICAgIG1wZF91aW50X3QgYm9ycm93ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobSA+IDAgJiYgbiA+IDApOworCisgICAgLyogc3VidHJhY3QgbiBtZW1iZXJzIG9mIHYgZnJvbSB1ICovCisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICBkID0gdVtpXSAtICh2W2ldICsgYm9ycm93KTsKKyAgICAgICAgYm9ycm93ID0gKHVbaV0gPCBkKTsKKyAgICAgICAgd1tpXSA9IGJvcnJvdyA/IGQgKyBNUERfUkFESVggOiBkOworICAgIH0KKyAgICAvKiBpZiB0aGVyZSBpcyBhIGJvcnJvdywgcHJvcGFnYXRlIGl0ICovCisgICAgZm9yICg7IGJvcnJvdyAmJiBpIDwgbTsgaSsrKSB7CisgICAgICAgIGQgPSB1W2ldIC0gYm9ycm93OworICAgICAgICBib3Jyb3cgPSAodVtpXSA9PSAwKTsKKyAgICAgICAgd1tpXSA9IGJvcnJvdyA/IE1QRF9SQURJWC0xIDogZDsKKyAgICB9CisgICAgLyogY29weSB0aGUgcmVzdCBvZiB1ICovCisgICAgZm9yICg7IGkgPCBtOyBpKyspIHsKKyAgICAgICAgd1tpXSA9IHVbaV07CisgICAgfQorfQorCisvKgorICogU3VidHJhY3QgdGhlIGNvbnRlbnRzIG9mIHUgZnJvbSB3LiB3IGlzIGxhcmdlciB0aGFuIHUuIEJvcnJvd3MgYXJlCisgKiBwcm9wYWdhdGVkIGZ1cnRoZXIsIGJ1dCBldmVudHVhbGx5IHcgY2FuIGFic29yYiB0aGUgZmluYWwgYm9ycm93LgorICovCit2b2lkCitfbXBkX2Jhc2VzdWJmcm9tKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IGQ7CisgICAgbXBkX3VpbnRfdCBib3Jyb3cgPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGlmIChuID09IDApIHJldHVybjsKKworICAgIC8qIHN1YnRyYWN0IG4gbWVtYmVycyBvZiB1IGZyb20gdyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgZCA9IHdbaV0gLSAodVtpXSArIGJvcnJvdyk7CisgICAgICAgIGJvcnJvdyA9ICh3W2ldIDwgZCk7CisgICAgICAgIHdbaV0gPSBib3Jyb3cgPyBkICsgTVBEX1JBRElYIDogZDsKKyAgICB9CisgICAgLyogaWYgdGhlcmUgaXMgYSBib3Jyb3csIHByb3BhZ2F0ZSBpdCAqLworICAgIGZvciAoOyBib3Jyb3c7IGkrKykgeworICAgICAgICBkID0gd1tpXSAtIGJvcnJvdzsKKyAgICAgICAgYm9ycm93ID0gKHdbaV0gPT0gMCk7CisgICAgICAgIHdbaV0gPSBib3Jyb3cgPyBNUERfUkFESVgtMSA6IGQ7CisgICAgfQorfQorCisvKiB3IDo9IHByb2R1Y3Qgb2YgdSAobGVuIG4pIGFuZCB2IChzaW5nbGUgd29yZCkgKi8KK3ZvaWQKK19tcGRfc2hvcnRtdWwobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHVbaV0sIHYpOworICAgICAgICBsbyA9IGNhcnJ5ICsgbG87CisgICAgICAgIGlmIChsbyA8IGNhcnJ5KSBoaSsrOworCisgICAgICAgIF9tcGRfZGl2X3dvcmRzX3IoJmNhcnJ5LCAmd1tpXSwgaGksIGxvKTsKKyAgICB9CisgICAgd1tpXSA9IGNhcnJ5OworfQorCisvKgorICogS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC4zLjE6CisgKiAgICAgdyA6PSBwcm9kdWN0IG9mIHUgKGxlbiBtKSBhbmQgdiAobGVuIG4pCisgKiAgICAgdyBtdXN0IGJlIGluaXRpYWxpemVkIHRvIHplcm8KKyAqLwordm9pZAorX21wZF9iYXNlbXVsKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfc2l6ZV90IGksIGo7CisKKyAgICBhc3NlcnQobSA+IDAgJiYgbiA+IDApOworCisgICAgZm9yIChqPTA7IGogPCBuOyBqKyspIHsKKyAgICAgICAgY2FycnkgPSAwOworICAgICAgICBmb3IgKGk9MDsgaSA8IG07IGkrKykgeworCisgICAgICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVtpXSwgdltqXSk7CisgICAgICAgICAgICBsbyA9IHdbaStqXSArIGxvOworICAgICAgICAgICAgaWYgKGxvIDwgd1tpK2pdKSBoaSsrOworICAgICAgICAgICAgbG8gPSBjYXJyeSArIGxvOworICAgICAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgICAgIF9tcGRfZGl2X3dvcmRzX3IoJmNhcnJ5LCAmd1tpK2pdLCBoaSwgbG8pOworICAgICAgICB9CisgICAgICAgIHdbaittXSA9IGNhcnJ5OworICAgIH0KK30KKworLyoKKyAqIEtudXRoLCBUQU9DUCBWb2x1bWUgMiwgNC4zLjEsIGV4ZXJjaXNlIDE2OgorICogICAgIHcgOj0gcXVvdGllbnQgb2YgdSAobGVuIG4pIGRpdmlkZWQgYnkgYSBzaW5nbGUgd29yZCB2CisgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRkaXYobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCByZW0gPSAwOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChuID4gMCk7CisKKyAgICBmb3IgKGk9bi0xOyBpICE9IE1QRF9TSVpFX01BWDsgaS0tKSB7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHJlbSwgTVBEX1JBRElYKTsKKyAgICAgICAgbG8gPSB1W2ldICsgbG87CisgICAgICAgIGlmIChsbyA8IHVbaV0pIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHMoJndbaV0sICZyZW0sIGhpLCBsbywgdik7CisgICAgfQorCisgICAgcmV0dXJuIHJlbTsKK30KKworLyoKKyAqIEtudXRoLCBUQU9DUCBWb2x1bWUgMiwgNC4zLjE6CisgKiAgICAgcSwgciA6PSBxdW90aWVudCBhbmQgcmVtYWluZGVyIG9mIHVjb25zdCAobGVuIG5wbHVzbSkKKyAqICAgICAgICAgICAgIGRpdmlkZWQgYnkgdmNvbnN0IChsZW4gbikKKyAqICAgICBucGx1c20gPj0gbgorICoKKyAqIElmIHIgaXMgbm90IE5VTEwsIHIgd2lsbCBjb250YWluIHRoZSByZW1haW5kZXIuIElmIHIgaXMgTlVMTCwgdGhlCisgKiByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIGlmIHRoZXJlIGlzIGEgcmVtYWluZGVyOiAxIGZvciB0cnVlLCAwIGZvcgorICogZmFsc2UuICBBIHJldHVybiB2YWx1ZSBvZiAtMSBpbmRpY2F0ZXMgYW4gZXJyb3IuCisgKi8KK2ludAorX21wZF9iYXNlZGl2bW9kKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX3VpbnRfdCAqdWNvbnN0LCBjb25zdCBtcGRfdWludF90ICp2Y29uc3QsCisgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBucGx1c20sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfdWludF90IHVzdGF0aWNbTVBEX01JTkFMTE9DX01BWF07CisgICAgbXBkX3VpbnRfdCB2c3RhdGljW01QRF9NSU5BTExPQ19NQVhdOworICAgIG1wZF91aW50X3QgKnUgPSB1c3RhdGljOworICAgIG1wZF91aW50X3QgKnYgPSB2c3RhdGljOworICAgIG1wZF91aW50X3QgZCwgcWhhdCwgcmhhdCwgdzJbMl07CisgICAgbXBkX3VpbnRfdCBoaSwgbG8sIHg7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKyAgICBtcGRfc2l6ZV90IGksIGosIG07CisgICAgaW50IHJldHZhbCA9IDA7CisKKyAgICBhc3NlcnQobiA+IDEgJiYgbnBsdXNtID49IG4pOworICAgIG0gPSBzdWJfc2l6ZV90KG5wbHVzbSwgbik7CisKKyAgICAvKiBEMTogbm9ybWFsaXplICovCisgICAgZCA9IE1QRF9SQURJWCAvICh2Y29uc3Rbbi0xXSArIDEpOworCisgICAgaWYgKG5wbHVzbSA+PSBNUERfTUlOQUxMT0NfTUFYKSB7CisgICAgICAgIGlmICgodSA9IG1wZF9hbGxvYyhucGx1c20rMSwgc2l6ZW9mICp1KSkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmIChuID49IE1QRF9NSU5BTExPQ19NQVgpIHsKKyAgICAgICAgaWYgKCh2ID0gbXBkX2FsbG9jKG4rMSwgc2l6ZW9mICp2KSkgPT0gTlVMTCkgeworICAgICAgICAgICAgbXBkX2ZyZWUodSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfbXBkX3Nob3J0bXVsKHUsIHVjb25zdCwgbnBsdXNtLCBkKTsKKyAgICBfbXBkX3Nob3J0bXVsKHYsIHZjb25zdCwgbiwgZCk7CisKKyAgICAvKiBEMjogbG9vcCAqLworICAgIGZvciAoaj1tOyBqICE9IE1QRF9TSVpFX01BWDsgai0tKSB7CisKKyAgICAgICAgLyogRDM6IGNhbGN1bGF0ZSBxaGF0IGFuZCByaGF0ICovCisgICAgICAgIHJoYXQgPSBfbXBkX3Nob3J0ZGl2KHcyLCB1K2orbi0xLCAyLCB2W24tMV0pOworICAgICAgICBxaGF0ID0gdzJbMV0gKiBNUERfUkFESVggKyB3MlswXTsKKworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgaWYgKHFoYXQgPCBNUERfUkFESVgpIHsKKyAgICAgICAgICAgICAgICBfbXBkX3NpbmdsZW11bCh3MiwgcWhhdCwgdltuLTJdKTsKKyAgICAgICAgICAgICAgICBpZiAodzJbMV0gPD0gcmhhdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAodzJbMV0gIT0gcmhhdCB8fCB3MlswXSA8PSB1W2orbi0yXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBxaGF0IC09IDE7CisgICAgICAgICAgICByaGF0ICs9IHZbbi0xXTsKKyAgICAgICAgICAgIGlmIChyaGF0IDwgdltuLTFdIHx8IHJoYXQgPj0gTVBEX1JBRElYKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogRDQ6IG11bHRpcGx5IGFuZCBzdWJ0cmFjdCAqLworICAgICAgICBjYXJyeSA9IDA7CisgICAgICAgIGZvciAoaT0wOyBpIDw9IG47IGkrKykgeworCisgICAgICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgcWhhdCwgdltpXSk7CisKKyAgICAgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgICAgIGlmIChsbyA8IGNhcnJ5KSBoaSsrOworCisgICAgICAgICAgICBfbXBkX2Rpdl93b3Jkc19yKCZoaSwgJmxvLCBoaSwgbG8pOworCisgICAgICAgICAgICB4ID0gdVtpK2pdIC0gbG87CisgICAgICAgICAgICBjYXJyeSA9ICh1W2kral0gPCB4KTsKKyAgICAgICAgICAgIHVbaStqXSA9IGNhcnJ5ID8geCtNUERfUkFESVggOiB4OworICAgICAgICAgICAgY2FycnkgKz0gaGk7CisgICAgICAgIH0KKyAgICAgICAgcVtqXSA9IHFoYXQ7CisgICAgICAgIC8qIEQ1OiB0ZXN0IHJlbWFpbmRlciAqLworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIHFbal0gLT0gMTsKKyAgICAgICAgICAgIC8qIEQ2OiBhZGQgYmFjayAqLworICAgICAgICAgICAgKHZvaWQpX21wZF9iYXNlYWRkKHUraiwgdStqLCB2LCBuKzEsIG4pOworICAgICAgICB9CisgICAgfQorCisgICAgLyogRDg6IHVubm9ybWFsaXplICovCisgICAgaWYgKHIgIT0gTlVMTCkgeworICAgICAgICBfbXBkX3Nob3J0ZGl2KHIsIHUsIG4sIGQpOworICAgICAgICAvKiB3ZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIHJldHVybiB2YWx1ZSBoZXJlICovCisgICAgICAgIHJldHZhbCA9IDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR2YWwgPSAhX21wZF9pc2FsbHplcm8odSwgbik7CisgICAgfQorCisKK2lmICh1ICE9IHVzdGF0aWMpIG1wZF9mcmVlKHUpOworaWYgKHYgIT0gdnN0YXRpYykgbXBkX2ZyZWUodik7CityZXR1cm4gcmV0dmFsOworfQorCisvKgorICogTGVmdCBzaGlmdCBvZiBzcmMgYnkgJ3NoaWZ0JyBkaWdpdHM7IHNyYyBtYXkgZXF1YWwgZGVzdC4KKyAqCisgKiAgZGVzdCA6PSBhcmVhIG9mIG4gbXBkX3VpbnRfdCB3aXRoIHNwYWNlIGZvciBzcmNkaWdpdHMrc2hpZnQgZGlnaXRzLgorICogIHNyYyAgOj0gY29lZmZpY2llbnQgd2l0aCBsZW5ndGggbS4KKyAqCisgKiBUaGUgY2FzZSBzcGxpdHMgaW4gdGhlIGZ1bmN0aW9uIGFyZSBub24tb2J2aW91cy4gVGhlIGZvbGxvd2luZworICogZXF1YXRpb25zIG1pZ2h0IGhlbHA6CisgKgorICogIExldCBtc2RpZ2l0cyBkZW5vdGUgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQKKyAqICB3b3JkIG9mIHNyYy4gVGhlbiAxIDw9IG1zZGlnaXRzIDw9IHJkaWdpdHMuCisgKgorICogICAxKSBzaGlmdCA9IHEgKiByZGlnaXRzICsgcgorICogICAyKSBzcmNkaWdpdHMgPSBxc3JjICogcmRpZ2l0cyArIG1zZGlnaXRzCisgKiAgIDMpIGRlc3RkaWdpdHMgPSBzaGlmdCArIHNyY2RpZ2l0cworICogICAgICAgICAgICAgICAgID0gcSAqIHJkaWdpdHMgKyByICsgcXNyYyAqIHJkaWdpdHMgKyBtc2RpZ2l0cworICogICAgICAgICAgICAgICAgID0gcSAqIHJkaWdpdHMgKyAocXNyYyAqIHJkaWdpdHMgKyAociArIG1zZGlnaXRzKSkKKyAqCisgKiAgVGhlIHJlc3VsdCBoYXMgcSB6ZXJvIHdvcmRzLCBmb2xsb3dlZCBieSB0aGUgY29lZmZpY2llbnQgdGhhdAorICogIGlzIGxlZnQtc2hpZnRlZCBieSByLiBUaGUgY2FzZSByID09IDAgaXMgdHJpdmlhbC4gRm9yIHIgPiAwLCBpdAorICogIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQgdGhhdCB3ZSBhbHdheXMgcmVhZCBtIHNvdXJjZSB3b3JkcywKKyAqICBidXQgd3JpdGUgbSsxIGRlc3RpbmF0aW9uIHdvcmRzIGlmIHIgKyBtc2RpZ2l0cyA+IHJkaWdpdHMsIG0gd29yZHMKKyAqICBvdGhlcndpc2UuCisgKi8KK3ZvaWQKK19tcGRfYmFzZXNoaWZ0bChtcGRfdWludF90ICpkZXN0LCBtcGRfdWludF90ICpzcmMsIG1wZF9zaXplX3QgbiwgbXBkX3NpemVfdCBtLAorICAgICAgICAgICAgICAgIG1wZF9zaXplX3Qgc2hpZnQpCit7CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgIC8qIHNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgd2FybmluZ3MgKi8KKyAgICBtcGRfdWludF90IGw9bCwgbHByZXY9bHByZXYsIGg9aDsKKyNlbHNlCisgICAgbXBkX3VpbnRfdCBsLCBscHJldiwgaDsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgcSwgcjsKKyAgICBtcGRfdWludF90IHBoOworCisgICAgYXNzZXJ0KG0gPiAwICYmIG4gPj0gbSk7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZxLCAmciwgKG1wZF91aW50X3Qpc2hpZnQsIE1QRF9SRElHSVRTKTsKKworICAgIGlmIChyICE9IDApIHsKKworICAgICAgICBwaCA9IG1wZF9wb3cxMFtyXTsKKworICAgICAgICAtLW07IC0tbjsKKyAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZscHJldiwgc3JjW20tLV0sIE1QRF9SRElHSVRTLXIpOworICAgICAgICBpZiAoaCAhPSAwKSB7IC8qIHIgKyBtc2RpZ2l0cyA+IHJkaWdpdHMgPD09PiBoICE9IDAgKi8KKyAgICAgICAgICAgIGRlc3Rbbi0tXSA9IGg7CisgICAgICAgIH0KKyAgICAgICAgLyogd3JpdGUgbS0xIHNoaWZ0ZWQgd29yZHMgKi8KKyAgICAgICAgZm9yICg7IG0gIT0gTVBEX1NJWkVfTUFYOyBtLS0sbi0tKSB7CisgICAgICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaCwgJmwsIHNyY1ttXSwgTVBEX1JESUdJVFMtcik7CisgICAgICAgICAgICBkZXN0W25dID0gcGggKiBscHJldiArIGg7CisgICAgICAgICAgICBscHJldiA9IGw7CisgICAgICAgIH0KKyAgICAgICAgLyogd3JpdGUgbGVhc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworICAgICAgICBkZXN0W3FdID0gcGggKiBscHJldjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdoaWxlICgtLW0gIT0gTVBEX1NJWkVfTUFYKSB7CisgICAgICAgICAgICBkZXN0W20rcV0gPSBzcmNbbV07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfdWludF96ZXJvKGRlc3QsIHEpOworfQorCisvKgorICogUmlnaHQgc2hpZnQgb2Ygc3JjIGJ5ICdzaGlmdCcgZGlnaXRzOyBzcmMgbWF5IGVxdWFsIGRlc3QuCisgKiBBc3N1bXB0aW9uOiBzcmNkaWdpdHMtc2hpZnQgPiAwLgorICoKKyAqICBkZXN0IDo9IGFyZWEgd2l0aCBzcGFjZSBmb3Igc3JjZGlnaXRzLXNoaWZ0IGRpZ2l0cy4KKyAqICBzcmMgIDo9IGNvZWZmaWNpZW50IHdpdGggbGVuZ3RoICdzbGVuJy4KKyAqCisgKiBUaGUgY2FzZSBzcGxpdHMgaW4gdGhlIGZ1bmN0aW9uIHJlbHkgb24gdGhlIGZvbGxvd2luZyBlcXVhdGlvbnM6CisgKgorICogIExldCBtc2RpZ2l0cyBkZW5vdGUgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQKKyAqICB3b3JkIG9mIHNyYy4gVGhlbiAxIDw9IG1zZGlnaXRzIDw9IHJkaWdpdHMuCisgKgorICogIDEpIHNoaWZ0ID0gcSAqIHJkaWdpdHMgKyByCisgKiAgMikgc3JjZGlnaXRzID0gcXNyYyAqIHJkaWdpdHMgKyBtc2RpZ2l0cworICogIDMpIGRlc3RkaWdpdHMgPSBzcmNkaWdpdHMgLSBzaGlmdAorICogICAgICAgICAgICAgICAgPSBxc3JjICogcmRpZ2l0cyArIG1zZGlnaXRzIC0gKHEgKiByZGlnaXRzICsgcikKKyAqICAgICAgICAgICAgICAgID0gKHFzcmMgLSBxKSAqIHJkaWdpdHMgKyBtc2RpZ2l0cyAtIHIKKyAqCisgKiBTaW5jZSBkZXN0ZGlnaXRzID4gMCBhbmQgMSA8PSBtc2RpZ2l0cyA8PSByZGlnaXRzOgorICoKKyAqICA0KSBxc3JjID49IHEKKyAqICA1KSBxc3JjID09IHEgID09PiAgbXNkaWdpdHMgPiByCisgKgorICogVGhlIHJlc3VsdCBoYXMgc2xlbi1xIHdvcmRzIGlmIG1zZGlnaXRzID4gciwgc2xlbi1xLTEgd29yZHMgb3RoZXJ3aXNlLgorICovCittcGRfdWludF90CitfbXBkX2Jhc2VzaGlmdHIobXBkX3VpbnRfdCAqZGVzdCwgbXBkX3VpbnRfdCAqc3JjLCBtcGRfc2l6ZV90IHNsZW4sCisgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCkKK3sKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKSAmJiAhZGVmaW5lZChfX2NsYW5nX18pCisgICAgLyogc3B1cmlvdXMgdW5pbml0aWFsaXplZCB3YXJuaW5ncyAqLworICAgIG1wZF91aW50X3QgbD1sLCBoPWgsIGhwcmV2PWhwcmV2OyAvKiBsb3csIGhpZ2gsIHByZXZpb3VzIGhpZ2ggKi8KKyNlbHNlCisgICAgbXBkX3VpbnRfdCBsLCBoLCBocHJldjsgLyogbG93LCBoaWdoLCBwcmV2aW91cyBoaWdoICovCisjZW5kaWYKKyAgICBtcGRfdWludF90IHJuZCwgcmVzdDsgICAvKiByb3VuZGluZyBkaWdpdCwgcmVzdCAqLworICAgIG1wZF91aW50X3QgcSwgcjsKKyAgICBtcGRfc2l6ZV90IGksIGo7CisgICAgbXBkX3VpbnRfdCBwaDsKKworICAgIGFzc2VydChzbGVuID4gMCk7CisKKyAgICBfbXBkX2Rpdl93b3JkKCZxLCAmciwgKG1wZF91aW50X3Qpc2hpZnQsIE1QRF9SRElHSVRTKTsKKworICAgIHJuZCA9IHJlc3QgPSAwOworICAgIGlmIChyICE9IDApIHsKKworICAgICAgICBwaCA9IG1wZF9wb3cxMFtNUERfUkRJR0lUUy1yXTsKKworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmaHByZXYsICZyZXN0LCBzcmNbcV0sIHIpOworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmcm5kLCAmcmVzdCwgcmVzdCwgci0xKTsKKworICAgICAgICBpZiAocmVzdCA9PSAwICYmIHEgPiAwKSB7CisgICAgICAgICAgICByZXN0ID0gIV9tcGRfaXNhbGx6ZXJvKHNyYywgcSk7CisgICAgICAgIH0KKyAgICAgICAgLyogd3JpdGUgc2xlbi1xLTEgd29yZHMgKi8KKyAgICAgICAgZm9yIChqPTAsaT1xKzE7IGk8c2xlbjsgaSsrLGorKykgeworICAgICAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJmgsICZsLCBzcmNbaV0sIHIpOworICAgICAgICAgICAgZGVzdFtqXSA9IHBoICogbCArIGhwcmV2OworICAgICAgICAgICAgaHByZXYgPSBoOworICAgICAgICB9CisgICAgICAgIC8qIHdyaXRlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworICAgICAgICBpZiAoaHByZXYgIT0gMCkgeyAvKiBhbHdheXMgdGhlIGNhc2UgaWYgc2xlbj09cS0xICovCisgICAgICAgICAgICBkZXN0W2pdID0gaHByZXY7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChxID4gMCkgeworICAgICAgICAgICAgX21wZF9kaXZtb2RfcG93MTAoJnJuZCwgJnJlc3QsIHNyY1txLTFdLCBNUERfUkRJR0lUUy0xKTsKKyAgICAgICAgICAgIC8qIGlzIHRoZXJlIGFueSBub24temVybyBkaWdpdCBiZWxvdyBybmQ/ICovCisgICAgICAgICAgICBpZiAocmVzdCA9PSAwKSByZXN0ID0gIV9tcGRfaXNhbGx6ZXJvKHNyYywgcS0xKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGogPSAwOyBqIDwgc2xlbi1xOyBqKyspIHsKKyAgICAgICAgICAgIGRlc3Rbal0gPSBzcmNbcStqXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIDAtNCAgPT0+IHJuZCtyZXN0IDwgMC41ICAgKi8KKyAgICAvKiA1ICAgID09PiBybmQrcmVzdCA9PSAwLjUgICovCisgICAgLyogNi05ICA9PT4gcm5kK3Jlc3QgPiAwLjUgICAqLworICAgIHJldHVybiAocm5kID09IDAgfHwgcm5kID09IDUpID8gcm5kICsgISFyZXN0IDogcm5kOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICBDYWxjdWxhdGlvbnMgaW4gYmFzZSBiICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIEFkZCB2IHRvIHcgKGxlbiBtKS4gVGhlIGNhbGxpbmcgZnVuY3Rpb24gaGFzIHRvIGhhbmRsZSBhIHBvc3NpYmxlCisgKiBmaW5hbCBjYXJyeS4gQXNzdW1wdGlvbjogbSA+IDAuCisgKi8KK21wZF91aW50X3QKK19tcGRfc2hvcnRhZGRfYihtcGRfdWludF90ICp3LCBtcGRfc2l6ZV90IG0sIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgczsKKyAgICBtcGRfdWludF90IGNhcnJ5OworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGFzc2VydChtID4gMCk7CisKKyAgICAvKiBhZGQgdiB0byB3ICovCisgICAgcyA9IHdbMF0gKyB2OworICAgIGNhcnJ5ID0gKHMgPCB2KSB8IChzID49IGIpOworICAgIHdbMF0gPSBjYXJyeSA/IHMtYiA6IHM7CisKKyAgICAvKiBpZiB0aGVyZSBpcyBhIGNhcnJ5LCBwcm9wYWdhdGUgaXQgKi8KKyAgICBmb3IgKGkgPSAxOyBjYXJyeSAmJiBpIDwgbTsgaSsrKSB7CisgICAgICAgIHMgPSB3W2ldICsgY2Fycnk7CisgICAgICAgIGNhcnJ5ID0gKHMgPT0gYik7CisgICAgICAgIHdbaV0gPSBjYXJyeSA/IDAgOiBzOworICAgIH0KKworICAgIHJldHVybiBjYXJyeTsKK30KKworLyogdyA6PSBwcm9kdWN0IG9mIHUgKGxlbiBuKSBhbmQgdiAoc2luZ2xlIHdvcmQpLiBSZXR1cm4gY2FycnkuICovCittcGRfdWludF90CitfbXBkX3Nob3J0bXVsX2MobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLCBtcGRfdWludF90IHYpCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisgICAgbXBkX3VpbnRfdCBjYXJyeSA9IDA7CisgICAgbXBkX3NpemVfdCBpOworCisgICAgYXNzZXJ0KG4gPiAwKTsKKworICAgIGZvciAoaT0wOyBpIDwgbjsgaSsrKSB7CisKKyAgICAgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHVbaV0sIHYpOworICAgICAgICBsbyA9IGNhcnJ5ICsgbG87CisgICAgICAgIGlmIChsbyA8IGNhcnJ5KSBoaSsrOworCisgICAgICAgIF9tcGRfZGl2X3dvcmRzX3IoJmNhcnJ5LCAmd1tpXSwgaGksIGxvKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fycnk7Cit9CisKKy8qIHcgOj0gcHJvZHVjdCBvZiB1IChsZW4gbikgYW5kIHYgKHNpbmdsZSB3b3JkKSAqLworbXBkX3VpbnRfdAorX21wZF9zaG9ydG11bF9iKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IGNhcnJ5ID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPTA7IGkgPCBuOyBpKyspIHsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVtpXSwgdik7CisgICAgICAgIGxvID0gY2FycnkgKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgY2FycnkpIGhpKys7CisKKyAgICAgICAgX21wZF9kaXZfd29yZHMoJmNhcnJ5LCAmd1tpXSwgaGksIGxvLCBiKTsKKyAgICB9CisKKyAgICByZXR1cm4gY2Fycnk7Cit9CisKKy8qCisgKiBLbnV0aCwgVEFPQ1AgVm9sdW1lIDIsIDQuMy4xLCBleGVyY2lzZSAxNjoKKyAqICAgICB3IDo9IHF1b3RpZW50IG9mIHUgKGxlbiBuKSBkaXZpZGVkIGJ5IGEgc2luZ2xlIHdvcmQgdgorICovCittcGRfdWludF90CitfbXBkX3Nob3J0ZGl2X2IobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgIG1wZF91aW50X3QgdiwgbXBkX3VpbnRfdCBiKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF91aW50X3QgcmVtID0gMDsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobiA+IDApOworCisgICAgZm9yIChpPW4tMTsgaSAhPSBNUERfU0laRV9NQVg7IGktLSkgeworCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCByZW0sIGIpOworICAgICAgICBsbyA9IHVbaV0gKyBsbzsKKyAgICAgICAgaWYgKGxvIDwgdVtpXSkgaGkrKzsKKworICAgICAgICBfbXBkX2Rpdl93b3Jkcygmd1tpXSwgJnJlbSwgaGksIGxvLCB2KTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVtOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9iYXNlYXJpdGguaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAwNGIyYwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmgKQEAgLTAsMCArMSwyMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgQkFTRUFSSVRIX0gKKyNkZWZpbmUgQkFTRUFSSVRIX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKworCittcGRfdWludF90IF9tcGRfYmFzZWFkZChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VhZGR0byhtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pOworbXBkX3VpbnRfdCBfbXBkX3Nob3J0YWRkKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydGFkZF9iKG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbSwgbXBkX3VpbnRfdCB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBiKTsKK21wZF91aW50X3QgX21wZF9iYXNlaW5jcihtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VzdWIobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKTsKK3ZvaWQgX21wZF9iYXNlc3ViZnJvbShtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4pOwordm9pZCBfbXBkX2Jhc2VtdWwobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICAgICAgIG1wZF9zaXplX3QgbSwgbXBkX3NpemVfdCBuKTsKK3ZvaWQgX21wZF9zaG9ydG11bChtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB2KTsKK21wZF91aW50X3QgX21wZF9zaG9ydG11bF9jKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF9zaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3Qgdik7CittcGRfdWludF90IF9tcGRfc2hvcnRtdWxfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYik7CittcGRfdWludF90IF9tcGRfc2hvcnRkaXYobXBkX3VpbnRfdCAqdywgY29uc3QgbXBkX3VpbnRfdCAqdSwgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3Qgdik7CittcGRfdWludF90IF9tcGRfc2hvcnRkaXZfYihtcGRfdWludF90ICp3LCBjb25zdCBtcGRfdWludF90ICp1LCBtcGRfc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90IHYsIG1wZF91aW50X3QgYik7CitpbnQgX21wZF9iYXNlZGl2bW9kKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIGNvbnN0IG1wZF91aW50X3QgKnVjb25zdCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3VpbnRfdCAqdmNvbnN0LCBtcGRfc2l6ZV90IG5wbHVzbSwgbXBkX3NpemVfdCBuKTsKK3ZvaWQgX21wZF9iYXNlc2hpZnRsKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBuLAorICAgICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBtLCBtcGRfc2l6ZV90IHNoaWZ0KTsKK21wZF91aW50X3QgX21wZF9iYXNlc2hpZnRyKG1wZF91aW50X3QgKmRlc3QsIG1wZF91aW50X3QgKnNyYywgbXBkX3NpemVfdCBzbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXBkX3NpemVfdCBzaGlmdCk7CisKKworCisjaWZkZWYgQ09ORklHXzY0CitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBtcHJpbWVfcmR4OworCisvKgorICogQWxnb3JpdGhtIGZyb206IERpdmlzaW9uIGJ5IEludmFyaWFudCBJbnRlZ2VycyB1c2luZyBNdWx0aXBsaWNhdGlvbiwKKyAqIFQuIEdyYW5sdW5kIGFuZCBQLiBMLiBNb250Z29tZXJ5LCBQcm9jZWVkaW5ncyBvZiB0aGUgU0lHUExBTiAnOTQKKyAqIENvbmZlcmVuY2Ugb24gUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgRGVzaWduIGFuZCBJbXBsZW1lbnRhdGlvbi4KKyAqCisgKiBodHRwOi8vZ21wbGliLm9yZy9+dGVnZS9kaXZjbnN0LXBsZGk5NC5wZGYKKyAqCisgKiBWYXJpYWJsZXMgZnJvbSB0aGUgcGFwZXIgYW5kIHRoZWlyIHRyYW5zbGF0aW9ucyAoU2VlIHNlY3Rpb24gOCk6CisgKgorICogIE4gOj0gNjQKKyAqICBkIDo9IE1QRF9SQURJWAorICogIGwgOj0gNjQKKyAqICBtJyA6PSBmbG9vcigoMioqKDY0KzY0KSAtIDEpL01QRF9SQURJWCkgLSAyKio2NAorICoKKyAqIFNpbmNlIE4tbCA9PSAwOgorICoKKyAqICBkbm9ybSA6PSBkCisgKiAgbjIgOj0gaGkKKyAqICBuMTAgOj0gbG8KKyAqCisgKiBBQ0wyIHByb29mOiBtcGQtZGl2LXdvcmRzLXItY29ycmVjdAorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzX3IobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbykKK3sKKyAgICBtcGRfdWludF90IG5fYWRqLCBoLCBsLCB0OworICAgIG1wZF91aW50X3QgbjFfbmVnOworCisgICAgLyogbjFfbmVnID0gaWYgbG8gPj0gMioqNjMgdGhlbiBNUERfVUlOVF9NQVggZWxzZSAwICovCisgICAgbjFfbmVnID0gKGxvICYgKDFVTEw8PDYzKSkgPyBNUERfVUlOVF9NQVggOiAwOworICAgIC8qIG5fYWRqID0gaWYgbG8gPj0gMioqNjMgdGhlbiBsbytNUERfUkFESVggZWxzZSBsbyAqLworICAgIG5fYWRqID0gbG8gKyAobjFfbmVnICYgTVBEX1JBRElYKTsKKworICAgIC8qIChoLCBsKSA9IGlmIGxvID49IDIqKjYzIHRoZW4gbScqKGhpKzEpIGVsc2UgbScqaGkgKi8KKyAgICBfbXBkX211bF93b3JkcygmaCwgJmwsIG1wcmltZV9yZHgsIGhpLW4xX25lZyk7CisgICAgbCA9IGwgKyBuX2FkajsKKyAgICBpZiAobCA8IG5fYWRqKSBoKys7CisgICAgdCA9IGggKyBoaTsKKyAgICAvKiBBdCB0aGlzIHBvaW50IHQgPT0gcWVzdCwgd2l0aCBxID09IHFlc3Qgb3IgcSA9PSBxZXN0KzE6CisgICAgICogICAxKSAwIDw9IDIqKjY0KmhpICsgbG8gLSBxZXN0Kk1QRF9SQURJWCA8IDIqTVBEX1JBRElYCisgICAgICovCisKKyAgICAvKiB0ID0gMioqNjQtMSAtIHFlc3QgPSAyKio2NCAtIChxZXN0KzEpICovCisgICAgdCA9IE1QRF9VSU5UX01BWCAtIHQ7CisKKyAgICAvKiAoaCwgbCkgPSAyKio2NCpNUERfUkFESVggLSAocWVzdCsxKSpNUERfUkFESVggKi8KKyAgICBfbXBkX211bF93b3JkcygmaCwgJmwsIHQsIE1QRF9SQURJWCk7CisgICAgbCA9IGwgKyBsbzsKKyAgICBpZiAobCA8IGxvKSBoKys7CisgICAgaCArPSBoaTsKKyAgICBoIC09IE1QRF9SQURJWDsKKyAgICAvKiAoaCwgbCkgPSAyKio2NCpoaSArIGxvIC0gKHFlc3QrMSkqTVBEX1JBRElYIChtb2QgMioqMTI4KQorICAgICAqIENhc2UgcSA9PSBxZXN0KzE6CisgICAgICogICAgIGEpIGggPT0gMCwgbCA9PSByCisgICAgICogICAgIGIpIHEgOj0gaCAtIHQgPT0gcWVzdCsxCisgICAgICogICAgIGMpIHIgOj0gbAorICAgICAqIENhc2UgcSA9PSBxZXN0OgorICAgICAqICAgICBhKSBoID09IE1QRF9VSU5UX01BWCwgbCA9PSAyKio2NC0oTVBEX1JBRElYLXIpCisgICAgICogICAgIGIpIHEgOj0gaCAtIHQgPT0gcWVzdAorICAgICAqICAgICBjKSByIDo9IGwgKyBNUERfUkFESVggPSByCisgICAgICovCisKKyAgICAqcSA9IChoIC0gdCk7CisgICAgKnIgPSBsICsgKE1QRF9SQURJWCAmIGgpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHNfcihtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvKQoreworICAgIF9tcGRfZGl2X3dvcmRzKHEsIHIsIGhpLCBsbywgTVBEX1JBRElYKTsKK30KKyNlbmRpZgorCisKKy8qIE11bHRpcGx5IHR3byBzaW5nbGUgYmFzZSBNUERfUkFESVggd29yZHMsIHN0b3JlIHJlc3VsdCBpbiBhcnJheSB3WzJdLiAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3NpbmdsZW11bChtcGRfdWludF90IHdbMl0sIG1wZF91aW50X3QgdSwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIHUsIHYpOworICAgIF9tcGRfZGl2X3dvcmRzX3IoJndbMV0sICZ3WzBdLCBoaSwgbG8pOworfQorCisvKiBNdWx0aXBseSB1IChsZW4gMikgYW5kIHYgKGxlbiBtLCAxIDw9IG0gPD0gMikuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsXzJfbGUyKG1wZF91aW50X3Qgd1s0XSwgbXBkX3VpbnRfdCB1WzJdLCBtcGRfdWludF90IHZbMl0sIG1wZF9zc2l6ZV90IG0pCit7CisgICAgbXBkX3VpbnRfdCBoaSwgbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVswXSwgdlswXSk7CisgICAgX21wZF9kaXZfd29yZHNfcigmd1sxXSwgJndbMF0sIGhpLCBsbyk7CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVsxXSwgdlswXSk7CisgICAgbG8gPSB3WzFdICsgbG87CisgICAgaWYgKGxvIDwgd1sxXSkgaGkrKzsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzJdLCAmd1sxXSwgaGksIGxvKTsKKyAgICBpZiAobSA9PSAxKSByZXR1cm47CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgdVswXSwgdlsxXSk7CisgICAgbG8gPSB3WzFdICsgbG87CisgICAgaWYgKGxvIDwgd1sxXSkgaGkrKzsKKyAgICBfbXBkX2Rpdl93b3Jkc19yKCZ3WzNdLCAmd1sxXSwgaGksIGxvKTsKKworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCB1WzFdLCB2WzFdKTsKKyAgICBsbyA9IHdbMl0gKyBsbzsKKyAgICBpZiAobG8gPCB3WzJdKSBoaSsrOworICAgIGxvID0gd1szXSArIGxvOworICAgIGlmIChsbyA8IHdbM10pIGhpKys7CisgICAgX21wZF9kaXZfd29yZHNfcigmd1szXSwgJndbMl0sIGhpLCBsbyk7Cit9CisKKworLyoKKyAqIFRlc3QgaWYgYWxsIHdvcmRzIGZyb20gZGF0YVtsZW4tMV0gdG8gZGF0YVswXSBhcmUgemVyby4gSWYgbGVuIGlzIDAsIG5vdGhpbmcKKyAqIGlzIHRlc3RlZCBhbmQgdGhlIGNvZWZmaWNpZW50IGlzIHJlZ2FyZGVkIGFzICJhbGwgemVybyIuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX2lzYWxsemVybyhjb25zdCBtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBsZW4pCit7CisgICAgd2hpbGUgKC0tbGVuID49IDApIHsKKyAgICAgICAgaWYgKGRhdGFbbGVuXSAhPSAwKSByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUZXN0IGlmIGFsbCBmdWxsIHdvcmRzIGZyb20gZGF0YVtsZW4tMV0gdG8gZGF0YVswXSBhcmUgTVBEX1JBRElYLTEKKyAqIChhbGwgbmluZXMpLiBSZXR1cm4gdHJ1ZSBpZiBsZW4gPT0gMC4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfaXNhbGxuaW5lKGNvbnN0IG1wZF91aW50X3QgKmRhdGEsIG1wZF9zc2l6ZV90IGxlbikKK3sKKyAgICB3aGlsZSAoLS1sZW4gPj0gMCkgeworICAgICAgICBpZiAoZGF0YVtsZW5dICE9IE1QRF9SQURJWC0xKSByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKworI2VuZGlmIC8qIEJBU0VBUklUSF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2JpdHMuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OWVjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2JpdHMuaApAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBCSVRTX0gKKyNkZWZpbmUgQklUU19ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworLyogQ2hlY2sgaWYgbiBpcyBhIHBvd2VyIG9mIDIuICovCitzdGF0aWMgaW5saW5lIGludAoraXNwb3dlcjIobXBkX3NpemVfdCBuKQoreworICAgIHJldHVybiBuICE9IDAgJiYgKG4gJiAobi0xKSkgPT0gMDsKK30KKworI2lmIGRlZmluZWQoQU5TSSkKKy8qCisgKiBSZXR1cm4gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHBvc2l0aW9uIG9mIG4gZnJvbSAwIHRvIDMxICg2MykuCisgKiBBc3N1bXB0aW9uczogbiAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzcihtcGRfc2l6ZV90IG4pCit7CisgICAgaW50IHBvcyA9IDA7CisgICAgbXBkX3NpemVfdCB0bXA7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICB0bXAgPSBuID4+IDMyOworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gMzI7IH0KKyNlbmRpZgorICAgIHRtcCA9IG4gPj4gMTY7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSAxNjsgfQorICAgIHRtcCA9IG4gPj4gODsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDg7IH0KKyAgICB0bXAgPSBuID4+IDQ7CisgICAgaWYgKHRtcCAhPSAwKSB7IG4gPSB0bXA7IHBvcyArPSA0OyB9CisgICAgdG1wID0gbiA+PiAyOworICAgIGlmICh0bXAgIT0gMCkgeyBuID0gdG1wOyBwb3MgKz0gMjsgfQorICAgIHRtcCA9IG4gPj4gMTsKKyAgICBpZiAodG1wICE9IDApIHsgbiA9IHRtcDsgcG9zICs9IDE7IH0KKworICAgIHJldHVybiBwb3MgKyAoaW50KW4gLSAxOworfQorCisvKgorICogUmV0dXJuIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgcG9zaXRpb24gb2YgbiBmcm9tIDAgdG8gMzEgKDYzKS4KKyAqIEFzc3VtcHRpb25zOiBuICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CittcGRfYnNmKG1wZF9zaXplX3QgbikKK3sKKyAgICBpbnQgcG9zOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgcG9zID0gNjM7CisgICAgaWYgKG4gJiAweDAwMDAwMDAwRkZGRkZGRkZVTEwpIHsgcG9zIC09IDMyOyB9IGVsc2UgeyBuID4+PSAzMjsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDBGRkZGVUxMKSB7IHBvcyAtPSAxNjsgfSBlbHNlIHsgbiA+Pj0gMTY7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDBGRlVMTCkgeyBwb3MgLT0gIDg7IH0gZWxzZSB7IG4gPj49ICA4OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMEZVTEwpIHsgcG9zIC09ICA0OyB9IGVsc2UgeyBuID4+PSAgNDsgfQorICAgIGlmIChuICYgMHgwMDAwMDAwMDAwMDAwMDAzVUxMKSB7IHBvcyAtPSAgMjsgfSBlbHNlIHsgbiA+Pj0gIDI7IH0KKyAgICBpZiAobiAmIDB4MDAwMDAwMDAwMDAwMDAwMVVMTCkgeyBwb3MgLT0gIDE7IH0KKyNlbHNlCisgICAgcG9zID0gMzE7CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMEZGRkZVTCkgeyBwb3MgLT0gMTY7IH0gZWxzZSB7IG4gPj49IDE2OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwRkZVTCkgeyBwb3MgLT0gIDg7IH0gZWxzZSB7IG4gPj49ICA4OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMEZVTCkgeyBwb3MgLT0gIDQ7IH0gZWxzZSB7IG4gPj49ICA0OyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMDNVTCkgeyBwb3MgLT0gIDI7IH0gZWxzZSB7IG4gPj49ICAyOyB9CisgICAgaWYgKG4gJiAweDAwMDAwMDAwMDAwMDAwMDFVTCkgeyBwb3MgLT0gIDE7IH0KKyNlbmRpZgorICAgIHJldHVybiBwb3M7Cit9CisvKiBFTkQgQU5TSSAqLworCisjZWxpZiBkZWZpbmVkKEFTTSkKKy8qCisgKiBCaXQgc2NhbiByZXZlcnNlLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzcihtcGRfc2l6ZV90IGEpCit7CisgICAgbXBkX3NpemVfdCByZXR2YWw7CisKKyAgICBfX2FzbV9fICgKKyNpZmRlZiBDT05GSUdfNjQKKyAgICAgICAgImJzcnEgJTEsICUwXG5cdCIKKyNlbHNlCisgICAgICAgICJic3IgJTEsICUwXG5cdCIKKyNlbmRpZgorICAgICAgICA6Ij1yIiAocmV0dmFsKQorICAgICAgICA6InIiIChhKQorICAgICAgICA6ImNjIgorICAgICk7CisKKyAgICByZXR1cm4gKGludClyZXR2YWw7Cit9CisKKy8qCisgKiBCaXQgc2NhbiBmb3J3YXJkLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludAorbXBkX2JzZihtcGRfc2l6ZV90IGEpCit7CisgICAgbXBkX3NpemVfdCByZXR2YWw7CisKKyAgICBfX2FzbV9fICgKKyNpZmRlZiBDT05GSUdfNjQKKyAgICAgICAgImJzZnEgJTEsICUwXG5cdCIKKyNlbHNlCisgICAgICAgICJic2YgJTEsICUwXG5cdCIKKyNlbmRpZgorICAgICAgICA6Ij1yIiAocmV0dmFsKQorICAgICAgICA6InIiIChhKQorICAgICAgICA6ImNjIgorICAgICk7CisKKyAgICByZXR1cm4gKGludClyZXR2YWw7Cit9CisvKiBFTkQgQVNNICovCisKKyNlbGlmIGRlZmluZWQoTUFTTSkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKy8qCisgKiBCaXQgc2NhbiByZXZlcnNlLiBBc3N1bXB0aW9uczogYSAhPSAwLgorICovCitzdGF0aWMgaW5saW5lIGludCBfX2NkZWNsCittcGRfYnNyKG1wZF9zaXplX3QgYSkKK3sKKyAgICB1bnNpZ25lZCBsb25nIHJldHZhbDsKKworI2lmZGVmIENPTkZJR182NAorICAgIF9CaXRTY2FuUmV2ZXJzZTY0KCZyZXR2YWwsIGEpOworI2Vsc2UKKyAgICBfQml0U2NhblJldmVyc2UoJnJldHZhbCwgYSk7CisjZW5kaWYKKworICAgIHJldHVybiAoaW50KXJldHZhbDsKK30KKworLyoKKyAqIEJpdCBzY2FuIGZvcndhcmQuIEFzc3VtcHRpb25zOiBhICE9IDAuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50IF9fY2RlY2wKK21wZF9ic2YobXBkX3NpemVfdCBhKQoreworICAgIHVuc2lnbmVkIGxvbmcgcmV0dmFsOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgX0JpdFNjYW5Gb3J3YXJkNjQoJnJldHZhbCwgYSk7CisjZWxzZQorICAgIF9CaXRTY2FuRm9yd2FyZCgmcmV0dmFsLCBhKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIChpbnQpcmV0dmFsOworfQorLyogRU5EIE1BU00gKF9NU0NfVkVSKSAqLworI2Vsc2UKKyAgI2Vycm9yICJtaXNzaW5nIHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyIKKyNlbmRpZiAvKiBCU1IvQlNGICovCisKKworI2VuZGlmIC8qIEJJVFNfSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTJmNTg5MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorCisKKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKworICAvKiBudW1iZXItdGhlb3J5LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfbW9kdWxpWzNdID0geworICAgIDE4NDQ2NzQ0MDY5NDE0NTg0MzIxVUxMLCAxODQ0Njc0NDA1NjUyOTY4MjQzM1VMTCwgMTg0NDY3NDI5NzQxOTc5MjM4NDFVTEwKKyAgfTsKKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcm9vdHNbM10gID0gezdVTEwsIDEwVUxMLCAxOVVMTH07CisKKyAgLyogY3J0LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFfTU9EX1AyICAgPSAxODQ0Njc0NDA1NTA5ODAyNjY2OVVMTDsKKyAgY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFQMl9NT0RfUDMgPSAyODcwNjQxNDM3MDgxNjBVTEw7CisgIGNvbnN0IG1wZF91aW50X3QgTEhfUDFQMiA9IDE4NDQ2NzQ0MDUyMjM0NzE1MTM3VUxMOyAgICAgLyogKFAxKlAyKSAlIDJeNjQgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBVSF9QMVAyID0gMTg0NDY3NDQwNTIyMzQ3MTUxNDFVTEw7ICAgICAvKiAoUDEqUDIpIC8gMl42NCAqLworCisgIC8qIHRyYW5zcG9zZS5jICovCisgIGNvbnN0IG1wZF9zaXplX3QgbXBkX2JpdHNbNjRdID0geworICAgIDEsIDIsIDQsIDgsIDE2LCAzMiwgNjQsIDEyOCwgMjU2LCA1MTIsIDEwMjQsICAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwKKyAgICAzMjc2OCwgNjU1MzYsIDEzMTA3MiwgMjYyMTQ0LCA1MjQyODgsIDEwNDg1NzYsIDIwOTcxNTIsIDQxOTQzMDQsIDgzODg2MDgsCisgICAgMTY3NzcyMTYsIDMzNTU0NDMyLCA2NzEwODg2NCwgMTM0MjE3NzI4LCAyNjg0MzU0NTYsIDUzNjg3MDkxMiwgMTA3Mzc0MTgyNCwKKyAgICAyMTQ3NDgzNjQ4VUxMLCA0Mjk0OTY3Mjk2VUxMLCA4NTg5OTM0NTkyVUxMLCAxNzE3OTg2OTE4NFVMTCwgMzQzNTk3MzgzNjhVTEwsCisgICAgNjg3MTk0NzY3MzZVTEwsIDEzNzQzODk1MzQ3MlVMTCwgMjc0ODc3OTA2OTQ0VUxMLCA1NDk3NTU4MTM4ODhVTEwsCisgICAgMTA5OTUxMTYyNzc3NlVMTCwgMjE5OTAyMzI1NTU1MlVMTCwgNDM5ODA0NjUxMTEwNCwgODc5NjA5MzAyMjIwOFVMTCwKKyAgICAxNzU5MjE4NjA0NDQxNlVMTCwgMzUxODQzNzIwODg4MzJVTEwsIDcwMzY4NzQ0MTc3NjY0VUxMLCAxNDA3Mzc0ODgzNTUzMjhVTEwsCisgICAgMjgxNDc0OTc2NzEwNjU2VUxMLCA1NjI5NDk5NTM0MjEzMTJVTEwsIDExMjU4OTk5MDY4NDI2MjRVTEwsCisgICAgMjI1MTc5OTgxMzY4NTI0OFVMTCwgNDUwMzU5OTYyNzM3MDQ5NlVMTCwgOTAwNzE5OTI1NDc0MDk5MlVMTCwKKyAgICAxODAxNDM5ODUwOTQ4MTk4NFVMTCwgMzYwMjg3OTcwMTg5NjM5NjhVTEwsIDcyMDU3NTk0MDM3OTI3OTM2VUxMLAorICAgIDE0NDExNTE4ODA3NTg1NTg3MlVMTCwgMjg4MjMwMzc2MTUxNzExNzQ0VUxMLCA1NzY0NjA3NTIzMDM0MjM0ODhVTEwsCisgICAgMTE1MjkyMTUwNDYwNjg0Njk3NlVMTCwgMjMwNTg0MzAwOTIxMzY5Mzk1MlVMTCwgNDYxMTY4NjAxODQyNzM4NzkwNFVMTCwKKyAgICA5MjIzMzcyMDM2ODU0Nzc1ODA4VUxMCisgIH07CisKKyAgLyogbXBkZWNpbWFsLmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcG93MTBbTVBEX1JESUdJVFMrMV0gPSB7CisgICAgMSwxMCwxMDAsMTAwMCwxMDAwMCwxMDAwMDAsMTAwMDAwMCwxMDAwMDAwMCwxMDAwMDAwMDAsMTAwMDAwMDAwMCwKKyAgICAxMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMFVMTCwKKyAgICAxMDAwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMDAwMFVMTCwKKyAgICAxMDAwMDAwMDAwMDAwMDAwMDBVTEwsMTAwMDAwMDAwMDAwMDAwMDAwMFVMTCwxMDAwMDAwMDAwMDAwMDAwMDAwMFVMTAorICB9OworCisgIC8qIG1hZ2ljIG51bWJlciBmb3IgY29uc3RhbnQgZGl2aXNpb24gYnkgTVBEX1JBRElYICovCisgIGNvbnN0IG1wZF91aW50X3QgbXByaW1lX3JkeCA9IDE1NTgxNDkyNjE4Mzg0Mjk0NzMwVUxMOworCisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKworICAvKiBudW1iZXItdGhlb3J5LmMgKi8KKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfbW9kdWxpWzNdICA9IHsyMTEzOTI5MjE3VUwsIDIwMTMyNjU5MjFVTCwgMTgxMTkzOTMyOVVMfTsKKyAgY29uc3QgbXBkX3VpbnRfdCBtcGRfcm9vdHNbM10gICA9IHs1VUwsIDMxVUwsIDEzVUx9OworCisgIC8qIFBlbnRpdW1Qcm8gbW9kdWxhciBtdWx0aXBsaWNhdGlvbjogVGhlc2UgY29uc3RhbnRzIGhhdmUgdG8gYmUgbG9hZGVkIGFzCisgICAqIDgwIGJpdCBsb25nIGRvdWJsZXMsIHdoaWNoIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IGNlcnRhaW4gY29tcGlsZXJzLiAqLworICBjb25zdCB1aW50MzJfdCBtcGRfaW52bW9kdWxpWzNdWzNdID0geworICAgIHs0MjkzODg1MTcwVSwgMjE4MTU3MDY4OFUsIDE2MzUyVX0sICAvKiAoKGxvbmcgZG91YmxlKSAxIC8gMjExMzkyOTIxN1VMKSAqLworICAgIHsxNjk4ODk4MTc3VSwgMjI5MDY0OTIyM1UsIDE2MzUyVX0sICAvKiAoKGxvbmcgZG91YmxlKSAxIC8gMjAxMzI2NTkyMVVMKSAqLworICAgIHsyNzE2MDIxODQ2VSwgMjU0NTE2NTgwM1UsIDE2MzUyVX0gICAvKiAoKGxvbmcgZG91YmxlKSAxIC8gMTgxMTkzOTMyOVVMKSAqLworICB9OworCisgIGNvbnN0IGZsb2F0IE1QRF9UV082MyA9IDkyMjMzNzIwMzY4NTQ3NzU4MDguMDsgLyogMl42MyAqLworCisgIC8qIGNydC5jICovCisgIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxX01PRF9QMiAgID0gMjAxMzI2NTkwMVVMOworICBjb25zdCBtcGRfdWludF90IElOVl9QMVAyX01PRF9QMyA9IDU0VUw7CisgIGNvbnN0IG1wZF91aW50X3QgTEhfUDFQMiA9IDQxMjcxOTUxMzdVTDsgIC8qIChQMSpQMikgJSAyXjMyICovCisgIGNvbnN0IG1wZF91aW50X3QgVUhfUDFQMiA9IDk5MDkwNDMyMFVMOyAgIC8qIChQMSpQMikgLyAyXjMyICovCisKKyAgLyogdHJhbnNwb3NlLmMgKi8KKyAgY29uc3QgbXBkX3NpemVfdCBtcGRfYml0c1szMl0gPSB7CisgICAgMSwgMiwgNCwgOCwgMTYsIDMyLCA2NCwgMTI4LCAyNTYsIDUxMiwgIDEwMjQsICAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwKKyAgICAzMjc2OCwgNjU1MzYsIDEzMTA3MiwgMjYyMTQ0LCA1MjQyODgsIDEwNDg1NzYsIDIwOTcxNTIsIDQxOTQzMDQsIDgzODg2MDgsCisgICAgMTY3NzcyMTYsIDMzNTU0NDMyLCA2NzEwODg2NCwgMTM0MjE3NzI4LCAyNjg0MzU0NTYsIDUzNjg3MDkxMiwgMTA3Mzc0MTgyNCwKKyAgICAyMTQ3NDgzNjQ4VUwKKyAgfTsKKworICAvKiBtcGRlY2ltYWwuYyAqLworICBjb25zdCBtcGRfdWludF90IG1wZF9wb3cxMFtNUERfUkRJR0lUUysxXSA9IHsKKyAgICAxLDEwLDEwMCwxMDAwLDEwMDAwLDEwMDAwMCwxMDAwMDAwLDEwMDAwMDAwLDEwMDAwMDAwMCwxMDAwMDAwMDAwCisgIH07CisKKyNlbHNlCisgICNlcnJvciAiQ09ORklHXzY0IG9yIENPTkZJR18zMiBtdXN0IGJlIGRlZmluZWQuIgorI2VuZGlmCisKK2NvbnN0IGNoYXIgKm1wZF9yb3VuZF9zdHJpbmdbTVBEX1JPVU5EX0dVQVJEXSA9IHsKKyAgICAiUk9VTkRfVVAiLCAgICAgICAgICAvKiByb3VuZCBhd2F5IGZyb20gMCAgICAgICAgICAgICAgICovCisgICAgIlJPVU5EX0RPV04iLCAgICAgICAgLyogcm91bmQgdG93YXJkIDAgKHRydW5jYXRlKSAgICAgICAqLworICAgICJST1VORF9DRUlMSU5HIiwgICAgIC8qIHJvdW5kIHRvd2FyZCAraW5maW5pdHkgICAgICAgICAgKi8KKyAgICAiUk9VTkRfRkxPT1IiLCAgICAgICAvKiByb3VuZCB0b3dhcmQgLWluZmluaXR5ICAgICAgICAgICovCisgICAgIlJPVU5EX0hBTEZfVVAiLCAgICAgLyogMC41IGlzIHJvdW5kZWQgdXAgICAgICAgICAgICAgICAqLworICAgICJST1VORF9IQUxGX0RPV04iLCAgIC8qIDAuNSBpcyByb3VuZGVkIGRvd24gICAgICAgICAgICAgKi8KKyAgICAiUk9VTkRfSEFMRl9FVkVOIiwgICAvKiAwLjUgaXMgcm91bmRlZCB0byBldmVuICAgICAgICAgICovCisgICAgIlJPVU5EXzA1VVAiLCAgICAgICAgLyogcm91bmQgemVybyBvciBmaXZlIGF3YXkgZnJvbSAwICAqLworICAgICJST1VORF9UUlVOQyIsICAgICAgIC8qIHRydW5jYXRlLCBidXQgc2V0IGluZmluaXR5ICAgICAgKi8KK307CisKK2NvbnN0IGNoYXIgKm1wZF9jbGFtcF9zdHJpbmdbTVBEX0NMQU1QX0dVQVJEXSA9IHsKKyAgICAiQ0xBTVBfREVGQVVMVCIsCisgICAgIkNMQU1QX0lFRUVfNzU0IgorfTsKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnN0YW50cy5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDYzZDdlCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIENPTlNUQU5UU19ICisjZGVmaW5lIENPTlNUQU5UU19ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKy8qIGNob2ljZSBvZiBvcHRpbWl6ZWQgZnVuY3Rpb25zICovCisjaWYgZGVmaW5lZChDT05GSUdfNjQpCisvKiB4NjQgKi8KKyAgI2RlZmluZSBNVUxNT0QoYSwgYikgeDY0X211bG1vZChhLCBiLCB1bW9kKQorICAjZGVmaW5lIE1VTE1PRDJDKGEwLCBhMSwgdykgeDY0X211bG1vZDJjKGEwLCBhMSwgdywgdW1vZCkKKyAgI2RlZmluZSBNVUxNT0QyKGEwLCBiMCwgYTEsIGIxKSB4NjRfbXVsbW9kMihhMCwgYjAsIGExLCBiMSwgdW1vZCkKKyAgI2RlZmluZSBQT1dNT0QoYmFzZSwgZXhwKSB4NjRfcG93bW9kKGJhc2UsIGV4cCwgdW1vZCkKKyAgI2RlZmluZSBTRVRNT0RVTFVTKG1vZG51bSkgc3RkX3NldG1vZHVsdXMobW9kbnVtLCAmdW1vZCkKKyAgI2RlZmluZSBTSVpFM19OVFQoeDAsIHgxLCB4MiwgdzN0YWJsZSkgc3RkX3NpemUzX250dCh4MCwgeDEsIHgyLCB3M3RhYmxlLCB1bW9kKQorI2VsaWYgZGVmaW5lZChQUFJPKQorLyogUGVudGl1bVBybyAob3IgbGF0ZXIpIGdjYyBpbmxpbmUgYXNtICovCisgICNkZWZpbmUgTVVMTU9EKGEsIGIpIHBwcm9fbXVsbW9kKGEsIGIsICZkbW9kLCBkaW52bW9kKQorICAjZGVmaW5lIE1VTE1PRDJDKGEwLCBhMSwgdykgcHByb19tdWxtb2QyYyhhMCwgYTEsIHcsICZkbW9kLCBkaW52bW9kKQorICAjZGVmaW5lIE1VTE1PRDIoYTAsIGIwLCBhMSwgYjEpIHBwcm9fbXVsbW9kMihhMCwgYjAsIGExLCBiMSwgJmRtb2QsIGRpbnZtb2QpCisgICNkZWZpbmUgUE9XTU9EKGJhc2UsIGV4cCkgcHByb19wb3dtb2QoYmFzZSwgZXhwLCAmZG1vZCwgZGludm1vZCkKKyAgI2RlZmluZSBTRVRNT0RVTFVTKG1vZG51bSkgcHByb19zZXRtb2R1bHVzKG1vZG51bSwgJnVtb2QsICZkbW9kLCBkaW52bW9kKQorICAjZGVmaW5lIFNJWkUzX05UVCh4MCwgeDEsIHgyLCB3M3RhYmxlKSBwcHJvX3NpemUzX250dCh4MCwgeDEsIHgyLCB3M3RhYmxlLCB1bW9kLCAmZG1vZCwgZGludm1vZCkKKyNlbHNlCisgIC8qIEFOU0kgQzk5ICovCisgICNkZWZpbmUgTVVMTU9EKGEsIGIpIHN0ZF9tdWxtb2QoYSwgYiwgdW1vZCkKKyAgI2RlZmluZSBNVUxNT0QyQyhhMCwgYTEsIHcpIHN0ZF9tdWxtb2QyYyhhMCwgYTEsIHcsIHVtb2QpCisgICNkZWZpbmUgTVVMTU9EMihhMCwgYjAsIGExLCBiMSkgc3RkX211bG1vZDIoYTAsIGIwLCBhMSwgYjEsIHVtb2QpCisgICNkZWZpbmUgUE9XTU9EKGJhc2UsIGV4cCkgc3RkX3Bvd21vZChiYXNlLCBleHAsIHVtb2QpCisgICNkZWZpbmUgU0VUTU9EVUxVUyhtb2RudW0pIHN0ZF9zZXRtb2R1bHVzKG1vZG51bSwgJnVtb2QpCisgICNkZWZpbmUgU0laRTNfTlRUKHgwLCB4MSwgeDIsIHczdGFibGUpIHN0ZF9zaXplM19udHQoeDAsIHgxLCB4MiwgdzN0YWJsZSwgdW1vZCkKKyNlbmRpZgorCisvKiBQZW50aXVtUHJvIChvciBsYXRlcikgZ2NjIGlubGluZSBhc20gKi8KK2V4dGVybiBjb25zdCBmbG9hdCBNUERfVFdPNjM7CitleHRlcm4gY29uc3QgdWludDMyX3QgbXBkX2ludm1vZHVsaVszXVszXTsKKworZW51bSB7UDEsIFAyLCBQM307CisKK2V4dGVybiBjb25zdCBtcGRfdWludF90IG1wZF9tb2R1bGlbXTsKK2V4dGVybiBjb25zdCBtcGRfdWludF90IG1wZF9yb290c1tdOworZXh0ZXJuIGNvbnN0IG1wZF9zaXplX3QgbXBkX2JpdHNbXTsKK2V4dGVybiBjb25zdCBtcGRfdWludF90IG1wZF9wb3cxMFtdOworCitleHRlcm4gY29uc3QgbXBkX3VpbnRfdCBJTlZfUDFfTU9EX1AyOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgSU5WX1AxUDJfTU9EX1AzOworZXh0ZXJuIGNvbnN0IG1wZF91aW50X3QgTEhfUDFQMjsKK2V4dGVybiBjb25zdCBtcGRfdWludF90IFVIX1AxUDI7CisKKworI2VuZGlmIC8qIENPTlNUQU5UU19IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnRleHQuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1OWY4OGMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2NvbnRleHQuYwpAQCAtMCwwICsxLDI4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisKKwordm9pZAorbXBkX2RmbHRfdHJhcGhhbmRsZXIobXBkX2NvbnRleHRfdCAqY3R4IFVOVVNFRCkKK3sKKyAgICByYWlzZShTSUdGUEUpOworfQorCit2b2lkICgqIG1wZF90cmFwaGFuZGxlcikobXBkX2NvbnRleHRfdCAqKSA9IG1wZF9kZmx0X3RyYXBoYW5kbGVyOworCisKKy8qIFNldCBndWFyYW50ZWVkIG1pbmltdW0gbnVtYmVyIG9mIGNvZWZmaWNpZW50IHdvcmRzLiBUaGUgZnVuY3Rpb24gbWF5CisgICBiZSB1c2VkIG9uY2UgYXQgcHJvZ3JhbSBzdGFydC4gU2V0dGluZyBNUERfTUlOQUxMT0MgdG8gb3V0LW9mLWJvdW5kcworICAgdmFsdWVzIGlzIGEgY2F0YXN0cm9waGljIGVycm9yLCBzbyBpbiB0aGF0IGNhc2UgdGhlIGZ1bmN0aW9uIGV4aXRzIHJhdGhlcgorICAgdGhhbiByZWx5aW5nIG9uIHRoZSB1c2VyIHRvIGNoZWNrIGEgcmV0dXJuIHZhbHVlLiAqLwordm9pZAorbXBkX3NldG1pbmFsbG9jKG1wZF9zc2l6ZV90IG4pCit7CisgICAgc3RhdGljIGludCBtaW5hbGxvY19pc19zZXQgPSAwOworCisgICAgaWYgKG1pbmFsbG9jX2lzX3NldCkgeworICAgICAgICBtcGRfZXJyX3dhcm4oIm1wZF9zZXRtaW5hbGxvYzogaWdub3JpbmcgcmVxdWVzdCB0byBzZXQgIgorICAgICAgICAgICAgICAgICAgICAgIk1QRF9NSU5BTExPQyBhIHNlY29uZCB0aW1lXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobiA8IE1QRF9NSU5BTExPQ19NSU4gfHwgbiA+IE1QRF9NSU5BTExPQ19NQVgpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgiaWxsZWdhbCB2YWx1ZSBmb3IgTVBEX01JTkFMTE9DIik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisgICAgTVBEX01JTkFMTE9DID0gbjsKKyAgICBtaW5hbGxvY19pc19zZXQgPSAxOworfQorCit2b2lkCittcGRfaW5pdChtcGRfY29udGV4dF90ICpjdHgsIG1wZF9zc2l6ZV90IHByZWMpCit7CisgICAgbXBkX3NzaXplX3QgaWRlYWxfbWluYWxsb2M7CisKKyAgICBtcGRfZGVmYXVsdGNvbnRleHQoY3R4KTsKKworICAgIGlmICghbXBkX3FzZXRwcmVjKGN0eCwgcHJlYykpIHsKKyAgICAgICAgbXBkX2FkZHN0YXR1c19yYWlzZShjdHgsIE1QRF9JbnZhbGlkX2NvbnRleHQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWRlYWxfbWluYWxsb2MgPSAyICogKChwcmVjK01QRF9SRElHSVRTLTEpIC8gTVBEX1JESUdJVFMpOworICAgIGlmIChpZGVhbF9taW5hbGxvYyA8IE1QRF9NSU5BTExPQ19NSU4pIGlkZWFsX21pbmFsbG9jID0gTVBEX01JTkFMTE9DX01JTjsKKyAgICBpZiAoaWRlYWxfbWluYWxsb2MgPiBNUERfTUlOQUxMT0NfTUFYKSBpZGVhbF9taW5hbGxvYyA9IE1QRF9NSU5BTExPQ19NQVg7CisKKyAgICBtcGRfc2V0bWluYWxsb2MoaWRlYWxfbWluYWxsb2MpOworfQorCit2b2lkCittcGRfbWF4Y29udGV4dChtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgY3R4LT5wcmVjPU1QRF9NQVhfUFJFQzsKKyAgICBjdHgtPmVtYXg9TVBEX01BWF9FTUFYOworICAgIGN0eC0+ZW1pbj1NUERfTUlOX0VNSU47CisgICAgY3R4LT5yb3VuZD1NUERfUk9VTkRfSEFMRl9FVkVOOworICAgIGN0eC0+dHJhcHM9TVBEX1RyYXBzOworICAgIGN0eC0+c3RhdHVzPTA7CisgICAgY3R4LT5uZXd0cmFwPTA7CisgICAgY3R4LT5jbGFtcD0wOworICAgIGN0eC0+YWxsY3I9MTsKK30KKwordm9pZAorbXBkX2RlZmF1bHRjb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBjdHgtPnByZWM9MipNUERfUkRJR0lUUzsKKyAgICBjdHgtPmVtYXg9TVBEX01BWF9FTUFYOworICAgIGN0eC0+ZW1pbj1NUERfTUlOX0VNSU47CisgICAgY3R4LT5yb3VuZD1NUERfUk9VTkRfSEFMRl9VUDsKKyAgICBjdHgtPnRyYXBzPU1QRF9UcmFwczsKKyAgICBjdHgtPnN0YXR1cz0wOworICAgIGN0eC0+bmV3dHJhcD0wOworICAgIGN0eC0+Y2xhbXA9MDsKKyAgICBjdHgtPmFsbGNyPTE7Cit9CisKK3ZvaWQKK21wZF9iYXNpY2NvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIGN0eC0+cHJlYz05OworICAgIGN0eC0+ZW1heD1NUERfTUFYX0VNQVg7CisgICAgY3R4LT5lbWluPU1QRF9NSU5fRU1JTjsKKyAgICBjdHgtPnJvdW5kPU1QRF9ST1VORF9IQUxGX1VQOworICAgIGN0eC0+dHJhcHM9TVBEX1RyYXBzfE1QRF9DbGFtcGVkOworICAgIGN0eC0+c3RhdHVzPTA7CisgICAgY3R4LT5uZXd0cmFwPTA7CisgICAgY3R4LT5jbGFtcD0wOworICAgIGN0eC0+YWxsY3I9MTsKK30KKworaW50CittcGRfaWVlZV9jb250ZXh0KG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IGJpdHMpCit7CisgICAgaWYgKGJpdHMgPD0gMCB8fCBiaXRzID4gTVBEX0lFRUVfQ09OVEVYVF9NQVhfQklUUyB8fCBiaXRzICUgMzIpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGN0eC0+cHJlYyA9IDkgKiAoYml0cy8zMikgLSAyOworICAgIGN0eC0+ZW1heCA9IDMgKiAoKG1wZF9zc2l6ZV90KTE8PChiaXRzLzE2KzMpKTsKKyAgICBjdHgtPmVtaW4gPSAxIC0gY3R4LT5lbWF4OworICAgIGN0eC0+cm91bmQ9TVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICBjdHgtPnRyYXBzPTA7CisgICAgY3R4LT5zdGF0dXM9MDsKKyAgICBjdHgtPm5ld3RyYXA9MDsKKyAgICBjdHgtPmNsYW1wPTE7CisgICAgY3R4LT5hbGxjcj0xOworCisgICAgcmV0dXJuIDA7Cit9CisKK21wZF9zc2l6ZV90CittcGRfZ2V0cHJlYyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+cHJlYzsKK30KKworbXBkX3NzaXplX3QKK21wZF9nZXRlbWF4KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5lbWF4OworfQorCittcGRfc3NpemVfdAorbXBkX2dldGVtaW4oY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmVtaW47Cit9CisKK2ludAorbXBkX2dldHJvdW5kKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5yb3VuZDsKK30KKwordWludDMyX3QKK21wZF9nZXR0cmFwcyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+dHJhcHM7Cit9CisKK3VpbnQzMl90CittcGRfZ2V0c3RhdHVzKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5zdGF0dXM7Cit9CisKK2ludAorbXBkX2dldGNsYW1wKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5jbGFtcDsKK30KKworaW50CittcGRfZ2V0Y3IoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHJldHVybiBjdHgtPmFsbGNyOworfQorCisKK2ludAorbXBkX3FzZXRwcmVjKG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgcHJlYykKK3sKKyAgICBpZiAocHJlYyA8PSAwIHx8IHByZWMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+cHJlYyA9IHByZWM7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRlbWF4KG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgZW1heCkKK3sKKyAgICBpZiAoZW1heCA8IDAgfHwgZW1heCA+IE1QRF9NQVhfRU1BWCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5lbWF4ID0gZW1heDsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldGVtaW4obXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBlbWluKQoreworICAgIGlmIChlbWluID4gMCB8fCBlbWluIDwgTVBEX01JTl9FTUlOKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmVtaW4gPSBlbWluOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0cm91bmQobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgcm91bmQpCit7CisgICAgaWYgKCEoMCA8PSByb3VuZCAmJiByb3VuZCA8IE1QRF9ST1VORF9HVUFSRCkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+cm91bmQgPSByb3VuZDsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldHRyYXBzKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgdHJhcHMpCit7CisgICAgaWYgKHRyYXBzID4gTVBEX01heF9zdGF0dXMpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGN0eC0+dHJhcHMgPSB0cmFwczsKKyAgICByZXR1cm4gMTsKK30KKworaW50CittcGRfcXNldHN0YXR1cyhtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKQoreworICAgIGlmIChmbGFncyA+IE1QRF9NYXhfc3RhdHVzKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPnN0YXR1cyA9IGZsYWdzOworICAgIHJldHVybiAxOworfQorCitpbnQKK21wZF9xc2V0Y2xhbXAobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYykKK3sKKyAgICBpZiAoYyAhPSAwICYmIGMgIT0gMSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgY3R4LT5jbGFtcCA9IGM7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3FzZXRjcihtcGRfY29udGV4dF90ICpjdHgsIGludCBjKQoreworICAgIGlmIChjICE9IDAgJiYgYyAhPSAxKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjdHgtPmFsbGNyID0gYzsKKyAgICByZXR1cm4gMTsKK30KKworCit2b2lkCittcGRfYWRkc3RhdHVzX3JhaXNlKG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgY3R4LT5zdGF0dXMgfD0gZmxhZ3M7CisgICAgaWYgKGZsYWdzJmN0eC0+dHJhcHMpIHsKKyAgICAgICAgY3R4LT5uZXd0cmFwID0gKGZsYWdzJmN0eC0+dHJhcHMpOworICAgICAgICBtcGRfdHJhcGhhbmRsZXIoY3R4KTsKKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVmZTEzMQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmMKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJmbnQuaCIKKyNpbmNsdWRlICJmb3Vyc3RlcC5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInNpeHN0ZXAuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJjb252b2x1dGUuaCIKKworCisvKiBCaWdudW06IEZhc3QgY29udm9sdXRpb24gdXNpbmcgdGhlIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLiBVc2VkIGZvcgorICAgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHZlcnkgbGFyZ2UgY29lZmZpY2llbnRzLiAqLworCisKKy8qIENvbnZvbHV0ZSB0aGUgZGF0YSBpbiBjMSBhbmQgYzIuIFJlc3VsdCBpcyBpbiBjMS4gKi8KK2ludAorZm50X2NvbnZvbHV0ZShtcGRfdWludF90ICpjMSwgbXBkX3VpbnRfdCAqYzIsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBpbnQgKCpmbnQpKG1wZF91aW50X3QgKiwgbXBkX3NpemVfdCwgaW50KTsKKyAgICBpbnQgKCppbnZfZm50KShtcGRfdWludF90ICosIG1wZF9zaXplX3QsIGludCk7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IG5faW52LCB1bW9kOworICAgIG1wZF9zaXplX3QgaTsKKworCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIG5faW52ID0gUE9XTU9EKG4sICh1bW9kLTIpKTsKKworICAgIGlmIChpc3Bvd2VyMihuKSkgeworICAgICAgICBpZiAobiA+IFNJWF9TVEVQX1RIUkVTSE9MRCkgeworICAgICAgICAgICAgZm50ID0gc2l4X3N0ZXBfZm50OworICAgICAgICAgICAgaW52X2ZudCA9IGludl9zaXhfc3RlcF9mbnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmbnQgPSBzdGRfZm50OworICAgICAgICAgICAgaW52X2ZudCA9IHN0ZF9pbnZfZm50OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmbnQgPSBmb3VyX3N0ZXBfZm50OworICAgICAgICBpbnZfZm50ID0gaW52X2ZvdXJfc3RlcF9mbnQ7CisgICAgfQorCisgICAgaWYgKCFmbnQoYzEsIG4sIG1vZG51bSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghZm50KGMyLCBuLCBtb2RudW0pKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgbi0xOyBpICs9IDIpIHsKKyAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGMxW2ldOworICAgICAgICBtcGRfdWludF90IHkwID0gYzJbaV07CisgICAgICAgIG1wZF91aW50X3QgeDEgPSBjMVtpKzFdOworICAgICAgICBtcGRfdWludF90IHkxID0gYzJbaSsxXTsKKyAgICAgICAgTVVMTU9EMigmeDAsIHkwLCAmeDEsIHkxKTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgIH0KKworICAgIGlmICghaW52X2ZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG4tMzsgaSArPSA0KSB7CisgICAgICAgIG1wZF91aW50X3QgeDAgPSBjMVtpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIG1wZF91aW50X3QgeDIgPSBjMVtpKzJdOworICAgICAgICBtcGRfdWludF90IHgzID0gYzFbaSszXTsKKyAgICAgICAgTVVMTU9EMkMoJngwLCAmeDEsIG5faW52KTsKKyAgICAgICAgTVVMTU9EMkMoJngyLCAmeDMsIG5faW52KTsKKyAgICAgICAgYzFbaV0gPSB4MDsKKyAgICAgICAgYzFbaSsxXSA9IHgxOworICAgICAgICBjMVtpKzJdID0geDI7CisgICAgICAgIGMxW2krM10gPSB4MzsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogQXV0b2NvbnZvbHV0ZSB0aGUgZGF0YSBpbiBjMS4gUmVzdWx0IGlzIGluIGMxLiAqLworaW50CitmbnRfYXV0b2NvbnZvbHV0ZShtcGRfdWludF90ICpjMSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIGludCAoKmZudCkobXBkX3VpbnRfdCAqLCBtcGRfc2l6ZV90LCBpbnQpOworICAgIGludCAoKmludl9mbnQpKG1wZF91aW50X3QgKiwgbXBkX3NpemVfdCwgaW50KTsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3Qgbl9pbnYsIHVtb2Q7CisgICAgbXBkX3NpemVfdCBpOworCisKKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAgbl9pbnYgPSBQT1dNT0QobiwgKHVtb2QtMikpOworCisgICAgaWYgKGlzcG93ZXIyKG4pKSB7CisgICAgICAgIGlmIChuID4gU0lYX1NURVBfVEhSRVNIT0xEKSB7CisgICAgICAgICAgICBmbnQgPSBzaXhfc3RlcF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gaW52X3NpeF9zdGVwX2ZudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZudCA9IHN0ZF9mbnQ7CisgICAgICAgICAgICBpbnZfZm50ID0gc3RkX2ludl9mbnQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZudCA9IGZvdXJfc3RlcF9mbnQ7CisgICAgICAgIGludl9mbnQgPSBpbnZfZm91cl9zdGVwX2ZudDsKKyAgICB9CisKKyAgICBpZiAoIWZudChjMSwgbiwgbW9kbnVtKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IG4tMTsgaSArPSAyKSB7CisgICAgICAgIG1wZF91aW50X3QgeDAgPSBjMVtpXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGMxW2krMV07CisgICAgICAgIE1VTE1PRDIoJngwLCB4MCwgJngxLCB4MSk7CisgICAgICAgIGMxW2ldID0geDA7CisgICAgICAgIGMxW2krMV0gPSB4MTsKKyAgICB9CisKKyAgICBpZiAoIWludl9mbnQoYzEsIG4sIG1vZG51bSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBuLTM7IGkgKz0gNCkgeworICAgICAgICBtcGRfdWludF90IHgwID0gYzFbaV07CisgICAgICAgIG1wZF91aW50X3QgeDEgPSBjMVtpKzFdOworICAgICAgICBtcGRfdWludF90IHgyID0gYzFbaSsyXTsKKyAgICAgICAgbXBkX3VpbnRfdCB4MyA9IGMxW2krM107CisgICAgICAgIE1VTE1PRDJDKCZ4MCwgJngxLCBuX2ludik7CisgICAgICAgIE1VTE1PRDJDKCZ4MiwgJngzLCBuX2ludik7CisgICAgICAgIGMxW2ldID0geDA7CisgICAgICAgIGMxW2krMV0gPSB4MTsKKyAgICAgICAgYzFbaSsyXSA9IHgyOworICAgICAgICBjMVtpKzNdID0geDM7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY4ZDZkOAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY29udm9sdXRlLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBDT05WT0xVVEVfSAorI2RlZmluZSBDT05WT0xVVEVfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjZGVmaW5lIFNJWF9TVEVQX1RIUkVTSE9MRCA0MDk2CisKKworaW50IGZudF9jb252b2x1dGUobXBkX3VpbnRfdCAqYzEsIG1wZF91aW50X3QgKmMyLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IGZudF9hdXRvY29udm9sdXRlKG1wZF91aW50X3QgKmMxLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcxYzRlZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY3J0LmMKQEAgLTAsMCArMSwxNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgInVtb2Rhcml0aC5oIgorI2luY2x1ZGUgImNydC5oIgorCisKKy8qIEJpZ251bTogQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSwgZXh0ZW5kcyB0aGUgbWF4aW11bSB0cmFuc2Zvcm0gbGVuZ3RoLiAqLworCisKKy8qIE11bHRpcGx5IFAxUDIgYnkgdiwgc3RvcmUgcmVzdWx0IGluIHcuICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19jcnRfbXVsUDFQMl8zKG1wZF91aW50X3Qgd1szXSwgbXBkX3VpbnRfdCB2KQoreworICAgIG1wZF91aW50X3QgaGkxLCBoaTIsIGxvOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpMSwgJmxvLCBMSF9QMVAyLCB2KTsKKyAgICB3WzBdID0gbG87CisKKyAgICBfbXBkX211bF93b3JkcygmaGkyLCAmbG8sIFVIX1AxUDIsIHYpOworICAgIGxvID0gaGkxICsgbG87CisgICAgaWYgKGxvIDwgaGkxKSBoaTIrKzsKKworICAgIHdbMV0gPSBsbzsKKyAgICB3WzJdID0gaGkyOworfQorCisvKiBBZGQgMyB3b3JkcyBmcm9tIHYgdG8gdy4gVGhlIHJlc3VsdCBpcyBrbm93biB0byBmaXQgaW4gdy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX2NydF9hZGQzKG1wZF91aW50X3Qgd1szXSwgbXBkX3VpbnRfdCB2WzNdKQoreworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3VpbnRfdCBzOworCisgICAgcyA9IHdbMF0gKyB2WzBdOworICAgIGNhcnJ5ID0gKHMgPCB3WzBdKTsKKyAgICB3WzBdID0gczsKKworICAgIHMgPSB3WzFdICsgKHZbMV0gKyBjYXJyeSk7CisgICAgY2FycnkgPSAocyA8IHdbMV0pOworICAgIHdbMV0gPSBzOworCisgICAgd1syXSA9IHdbMl0gKyAodlsyXSArIGNhcnJ5KTsKK30KKworLyogRGl2aWRlIDMgd29yZHMgaW4gdSBieSB2LCBzdG9yZSByZXN1bHQgaW4gdywgcmV0dXJuIHJlbWFpbmRlci4gKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorX2NydF9kaXYzKG1wZF91aW50X3QgKncsIGNvbnN0IG1wZF91aW50X3QgKnUsIG1wZF91aW50X3QgdikKK3sKKyAgICBtcGRfdWludF90IHIxID0gdVsyXTsKKyAgICBtcGRfdWludF90IHIyOworCisgICAgaWYgKHIxIDwgdikgeworICAgICAgICB3WzJdID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfZGl2X3dvcmQoJndbMl0sICZyMSwgdVsyXSwgdik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICBfbXBkX2Rpdl93b3Jkcygmd1sxXSwgJnIyLCByMSwgdVsxXSwgdik7CisgICAgX21wZF9kaXZfd29yZHMoJndbMF0sICZyMSwgcjIsIHVbMF0sIHYpOworCisgICAgcmV0dXJuIHIxOworfQorCisKKy8qCisgKiBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtOgorICogQWxnb3JpdGhtIGZyb20gSm9lcmcgQXJuZHQsICJNYXR0ZXJzIENvbXB1dGF0aW9uYWwiLAorICogQ2hhcHRlciAzNy40LjEgW2h0dHA6Ly93d3cuampqLmRlL2Z4dC9dCisgKgorICogU2VlIGFsc28gS251dGgsIFRBT0NQLCBWb2x1bWUgMiwgNC4zLjIsIGV4ZXJjaXNlIDcuCisgKi8KKworLyoKKyAqIENSVCB3aXRoIGNhcnJ5OiB4MSwgeDIsIHgzIGNvbnRhaW4gbnVtYmVycyBtb2R1bG8gcDEsIHAyLCBwMy4gRm9yIGVhY2gKKyAqIHRyaXBsZSBvZiBtZW1iZXJzIG9mIHRoZSBhcnJheXMsIGZpbmQgdGhlIHVuaXF1ZSB6IG1vZHVsbyBwMSpwMipwMywgd2l0aAorICogem1heCA9IHAxKnAyKnAzIC0gMS4KKyAqCisgKiBJbiBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcCwgc3BsaXQgeiBpbnRvIHJlc3VsdFtpXSA9IHogJSBNUERfUkFESVgKKyAqIGFuZCBjYXJyeSA9IHogLyBNUERfUkFESVguIExldCBOIGJlIHRoZSBzaXplIG9mIGNhcnJ5W10gYW5kIGNtYXggdGhlCisgKiBtYXhpbXVtIGNhcnJ5LgorICoKKyAqIExpbWl0cyBmb3IgdGhlIDMyLWJpdCBidWlsZDoKKyAqCisgKiAgIE4gICAgPSAyKio5NgorICogICBjbWF4ID0gNzcxMTQzNTU5MTMxMjM4MDI3NAorICoKKyAqIExpbWl0cyBmb3IgdGhlIDY0IGJpdCBidWlsZDoKKyAqCisgKiAgIE4gICAgPSAyKioxOTIKKyAqICAgY21heCA9IDYyNzcxMDEzNTM5MzQ3NTM4NTkwNDEyNDQwMTIyMDA0NjM3MTcxMAorICoKKyAqIFRoZSBmb2xsb3dpbmcgc3RhdGVtZW50cyBob2xkIGZvciBib3RoIHZlcnNpb25zOgorICoKKyAqICAgMSkgY21heCArIHptYXggPCBOLCBzbyB0aGUgYWRkaXRpb24gZG9lcyBub3Qgb3ZlcmZsb3cuCisgKgorICogICAyKSAoY21heCArIHptYXgpIC8gTVBEX1JBRElYID09IGNtYXguCisgKgorICogICAzKSBJZiBjIDw9IGNtYXgsIHRoZW4gY19uZXh0ID0gKGMgKyB6bWF4KSAvIE1QRF9SQURJWCA8PSBjbWF4LgorICovCit2b2lkCitjcnQzKG1wZF91aW50X3QgKngxLCBtcGRfdWludF90ICp4MiwgbXBkX3VpbnRfdCAqeDMsIG1wZF9zaXplX3QgcnNpemUpCit7CisgICAgbXBkX3VpbnRfdCBwMSA9IG1wZF9tb2R1bGlbUDFdOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgYTEsIGEyLCBhMzsKKyAgICBtcGRfdWludF90IHM7CisgICAgbXBkX3VpbnRfdCB6WzNdLCB0WzNdOworICAgIG1wZF91aW50X3QgY2FycnlbM10gPSB7MCwwLDB9OworICAgIG1wZF91aW50X3QgaGksIGxvOworICAgIG1wZF9zaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCByc2l6ZTsgaSsrKSB7CisKKyAgICAgICAgYTEgPSB4MVtpXTsKKyAgICAgICAgYTIgPSB4MltpXTsKKyAgICAgICAgYTMgPSB4M1tpXTsKKworICAgICAgICBTRVRNT0RVTFVTKFAyKTsKKyAgICAgICAgcyA9IGV4dF9zdWJtb2QoYTIsIGExLCB1bW9kKTsKKyAgICAgICAgcyA9IE1VTE1PRChzLCBJTlZfUDFfTU9EX1AyKTsKKworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgcywgcDEpOworICAgICAgICBsbyA9IGxvICsgYTE7CisgICAgICAgIGlmIChsbyA8IGExKSBoaSsrOworCisgICAgICAgIFNFVE1PRFVMVVMoUDMpOworICAgICAgICBzID0gZHdfc3VibW9kKGEzLCBoaSwgbG8sIHVtb2QpOworICAgICAgICBzID0gTVVMTU9EKHMsIElOVl9QMVAyX01PRF9QMyk7CisKKyAgICAgICAgelswXSA9IGxvOworICAgICAgICB6WzFdID0gaGk7CisgICAgICAgIHpbMl0gPSAwOworCisgICAgICAgIF9jcnRfbXVsUDFQMl8zKHQsIHMpOworICAgICAgICBfY3J0X2FkZDMoeiwgdCk7CisgICAgICAgIF9jcnRfYWRkMyhjYXJyeSwgeik7CisKKyAgICAgICAgeDFbaV0gPSBfY3J0X2RpdjMoY2FycnksIGNhcnJ5LCBNUERfUkFESVgpOworICAgIH0KKworICAgIGFzc2VydChjYXJyeVswXSA9PSAwICYmIGNhcnJ5WzFdID09IDAgJiYgY2FycnlbMl0gPT0gMCk7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9jcnQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwM2U1ZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvY3J0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBDUlRfSAorI2RlZmluZSBDUlRfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKK3ZvaWQgY3J0MyhtcGRfdWludF90ICp4MSwgbXBkX3VpbnRfdCAqeDIsIG1wZF91aW50X3QgKngzLCBtcGRfc2l6ZV90IG5tZW1iKTsKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYmIwYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5jCkBAIC0wLDAgKzEsMTczIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAibnVtYmVydGhlb3J5LmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisjaW5jbHVkZSAiZGlmcmFkaXgyLmgiCisKKworLyogQmlnbnVtOiBUaGUgYWN0dWFsIHRyYW5zZm9ybSByb3V0aW5lIChkZWNpbWF0aW9uIGluIGZyZXF1ZW5jeSkuICovCisKKworLyoKKyAqIEdlbmVyYXRlIGluZGV4IHBhaXJzICh4LCBiaXRyZXZlcnNlKHgpKSBhbmQgY2Fycnkgb3V0IHRoZSBwZXJtdXRhdGlvbi4KKyAqIG4gbXVzdCBiZSBhIHBvd2VyIG9mIHR3by4KKyAqIEFsZ29yaXRobSBkdWUgdG8gQnJlbnQvTGVobWFubiwgc2VlIEpvZXJnIEFybmR0LCAiTWF0dGVycyBDb21wdXRhdGlvbmFsIiwKKyAqIENoYXB0ZXIgMS4xNC40LiBbaHR0cDovL3d3dy5qamouZGUvZnh0L10KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitiaXRyZXZlcnNlX3Blcm11dGUobXBkX3VpbnRfdCBhW10sIG1wZF9zaXplX3QgbikKK3sKKyAgICBtcGRfc2l6ZV90IHggPSAwOworICAgIG1wZF9zaXplX3QgciA9IDA7CisgICAgbXBkX3VpbnRfdCB0OworCisgICAgZG8geyAvKiBJbnZhcmlhbnQ6IHIgPSBiaXRyZXZlcnNlKHgpICovCisgICAgICAgIGlmIChyID4geCkgeworICAgICAgICAgICAgdCA9IGFbeF07CisgICAgICAgICAgICBhW3hdID0gYVtyXTsKKyAgICAgICAgICAgIGFbcl0gPSB0OworICAgICAgICB9CisgICAgICAgIC8qIEZsaXAgdHJhaWxpbmcgY29uc2VjdXRpdmUgMSBiaXRzIGFuZCB0aGUgZmlyc3QgemVybyBiaXQKKyAgICAgICAgICogdGhhdCBhYnNvcmJzIGEgcG9zc2libGUgY2FycnkuICovCisgICAgICAgIHggKz0gMTsKKyAgICAgICAgLyogTWlycm9yIHRoZSBvcGVyYXRpb24gb24gcjogRmxpcCBuX3RyYWlsaW5nX3plcm9zKHgpKzEKKyAgICAgICAgICAgaGlnaCBiaXRzIG9mIHIuICovCisgICAgICAgIHIgXj0gKG4gLSAobiA+PiAobXBkX2JzZih4KSsxKSkpOworICAgICAgICAvKiBUaGUgbG9vcCBpbnZhcmlhbnQgaXMgcHJlc2VydmVkLiAqLworICAgIH0gd2hpbGUgKHggPCBuKTsKK30KKworCisvKiBGYXN0IE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLCBkZWNpbWF0aW9uIGluIGZyZXF1ZW5jeS4gKi8KK3ZvaWQKK2ZudF9kaWYyKG1wZF91aW50X3QgYVtdLCBtcGRfc2l6ZV90IG4sIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zKQoreworICAgIG1wZF91aW50X3QgKnd0YWJsZSA9IHRwYXJhbXMtPnd0YWJsZTsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IHUwLCB1MSwgdjAsIHYxOworICAgIG1wZF91aW50X3QgdywgdzAsIHcxLCB3c3RlcDsKKyAgICBtcGRfc2l6ZV90IG0sIG1oYWxmOworICAgIG1wZF9zaXplX3QgaiwgcjsKKworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSA0KTsKKworICAgIFNFVE1PRFVMVVModHBhcmFtcy0+bW9kbnVtKTsKKworICAgIC8qIG0gPT0gbiAqLworICAgIG1oYWxmID0gbiAvIDI7CisgICAgZm9yIChqID0gMDsgaiA8IG1oYWxmOyBqICs9IDIpIHsKKworICAgICAgICB3MCA9IHd0YWJsZVtqXTsKKyAgICAgICAgdzEgPSB3dGFibGVbaisxXTsKKworICAgICAgICB1MCA9IGFbal07CisgICAgICAgIHYwID0gYVtqK21oYWxmXTsKKworICAgICAgICB1MSA9IGFbaisxXTsKKyAgICAgICAgdjEgPSBhW2orMSttaGFsZl07CisKKyAgICAgICAgYVtqXSA9IGFkZG1vZCh1MCwgdjAsIHVtb2QpOworICAgICAgICB2MCA9IHN1Ym1vZCh1MCwgdjAsIHVtb2QpOworCisgICAgICAgIGFbaisxXSA9IGFkZG1vZCh1MSwgdjEsIHVtb2QpOworICAgICAgICB2MSA9IHN1Ym1vZCh1MSwgdjEsIHVtb2QpOworCisgICAgICAgIE1VTE1PRDIoJnYwLCB3MCwgJnYxLCB3MSk7CisKKyAgICAgICAgYVtqK21oYWxmXSA9IHYwOworICAgICAgICBhW2orMSttaGFsZl0gPSB2MTsKKworICAgIH0KKworICAgIHdzdGVwID0gMjsKKyAgICBmb3IgKG0gPSBuLzI7IG0gPj0gMjsgbT4+PTEsIHdzdGVwPDw9MSkgeworCisgICAgICAgIG1oYWxmID0gbSAvIDI7CisKKyAgICAgICAgLyogaiA9PSAwICovCisgICAgICAgIGZvciAociA9IDA7IHIgPCBuOyByICs9IDIqbSkgeworCisgICAgICAgICAgICB1MCA9IGFbcl07CisgICAgICAgICAgICB2MCA9IGFbcittaGFsZl07CisKKyAgICAgICAgICAgIHUxID0gYVttK3JdOworICAgICAgICAgICAgdjEgPSBhW20rcittaGFsZl07CisKKyAgICAgICAgICAgIGFbcl0gPSBhZGRtb2QodTAsIHYwLCB1bW9kKTsKKyAgICAgICAgICAgIHYwID0gc3VibW9kKHUwLCB2MCwgdW1vZCk7CisKKyAgICAgICAgICAgIGFbbStyXSA9IGFkZG1vZCh1MSwgdjEsIHVtb2QpOworICAgICAgICAgICAgdjEgPSBzdWJtb2QodTEsIHYxLCB1bW9kKTsKKworICAgICAgICAgICAgYVtyK21oYWxmXSA9IHYwOworICAgICAgICAgICAgYVttK3IrbWhhbGZdID0gdjE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGogPSAxOyBqIDwgbWhhbGY7IGorKykgeworCisgICAgICAgICAgICB3ID0gd3RhYmxlW2oqd3N0ZXBdOworCisgICAgICAgICAgICBmb3IgKHIgPSAwOyByIDwgbjsgciArPSAyKm0pIHsKKworICAgICAgICAgICAgICAgIHUwID0gYVtyK2pdOworICAgICAgICAgICAgICAgIHYwID0gYVtyK2orbWhhbGZdOworCisgICAgICAgICAgICAgICAgdTEgPSBhW20rcitqXTsKKyAgICAgICAgICAgICAgICB2MSA9IGFbbStyK2orbWhhbGZdOworCisgICAgICAgICAgICAgICAgYVtyK2pdID0gYWRkbW9kKHUwLCB2MCwgdW1vZCk7CisgICAgICAgICAgICAgICAgdjAgPSBzdWJtb2QodTAsIHYwLCB1bW9kKTsKKworICAgICAgICAgICAgICAgIGFbbStyK2pdID0gYWRkbW9kKHUxLCB2MSwgdW1vZCk7CisgICAgICAgICAgICAgICAgdjEgPSBzdWJtb2QodTEsIHYxLCB1bW9kKTsKKworICAgICAgICAgICAgICAgIE1VTE1PRDJDKCZ2MCwgJnYxLCB3KTsKKworICAgICAgICAgICAgICAgIGFbcitqK21oYWxmXSA9IHYwOworICAgICAgICAgICAgICAgIGFbbStyK2orbWhhbGZdID0gdjE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorCisgICAgfQorCisgICAgYml0cmV2ZXJzZV9wZXJtdXRlKGEsIG4pOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZGlmcmFkaXgyLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OTQ0MmEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRElGX1JBRElYMl9ICisjZGVmaW5lIERJRl9SQURJWDJfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorCisKK3ZvaWQgZm50X2RpZjIobXBkX3VpbnRfdCBhW10sIG1wZF9zaXplX3Qgbiwgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXMpOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mbnQuYyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxMTY1MwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmMKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImRpZnJhZGl4Mi5oIgorI2luY2x1ZGUgIm51bWJlcnRoZW9yeS5oIgorI2luY2x1ZGUgImZudC5oIgorCisKKy8qIEJpZ251bTogRmFzdCB0cmFuc2Zvcm0gZm9yIG1lZGl1bS1zaXplZCBjb2VmZmljaWVudHMuICovCisKKworLyogZm9yd2FyZCB0cmFuc2Zvcm0sIHNpZ24gPSAtMSAqLworaW50CitzdGRfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKworICAgIGFzc2VydChpc3Bvd2VyMihuKSk7CisgICAgYXNzZXJ0KG4gPj0gNCk7CisgICAgYXNzZXJ0KG4gPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworICAgIGlmICgodHBhcmFtcyA9IF9tcGRfaW5pdF9mbnRfcGFyYW1zKG4sIC0xLCBtb2RudW0pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBmbnRfZGlmMihhLCBuLCB0cGFyYW1zKTsKKworICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgIHJldHVybiAxOworfQorCisvKiByZXZlcnNlIHRyYW5zZm9ybSwgc2lnbiA9IDEgKi8KK2ludAorc3RkX2ludl9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIHN0cnVjdCBmbnRfcGFyYW1zICp0cGFyYW1zOworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSA0KTsKKyAgICBhc3NlcnQobiA8PSAzKk1QRF9NQVhUUkFOU0ZPUk1fMk4pOworCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMobiwgMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm50X2RpZjIoYSwgbiwgdHBhcmFtcyk7CisKKyAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKyAgICByZXR1cm4gMTsKK30KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm50LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkNzAxYjYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZudC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgRk5UX0gKKyNkZWZpbmUgRk5UX0gKKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKworCitpbnQgc3RkX2ZudChtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKK2ludCBzdGRfaW52X2ZudChtcGRfdWludF90IGFbXSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKKworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMzJjMGQKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKyNpbmNsdWRlICJzaXhzdGVwLmgiCisjaW5jbHVkZSAidHJhbnNwb3NlLmgiCisjaW5jbHVkZSAidW1vZGFyaXRoLmgiCisjaW5jbHVkZSAiZm91cnN0ZXAuaCIKKworCisvKiBCaWdudW06IENhY2hlIGVmZmljaWVudCBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gZm9yIGFycmF5cyBvZiB0aGUKKyAgIGZvcm0gMyAqIDIqKm4gKFNlZSBsaXRlcmF0dXJlL21hdHJpeC10cmFuc2Zvcm0udHh0KS4gKi8KKworCisjaWZuZGVmIFBQUk8KK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX3NpemUzX250dChtcGRfdWludF90ICp4MSwgbXBkX3VpbnRfdCAqeDIsIG1wZF91aW50X3QgKngzLAorICAgICAgICAgICAgICBtcGRfdWludF90IHczdGFibGVbM10sIG1wZF91aW50X3QgdW1vZCkKK3sKKyAgICBtcGRfdWludF90IHIxLCByMjsKKyAgICBtcGRfdWludF90IHc7CisgICAgbXBkX3VpbnRfdCBzLCB0bXA7CisKKworICAgIC8qIGsgPSAwIC0+IHcgPSAxICovCisgICAgcyA9ICp4MTsKKyAgICBzID0gYWRkbW9kKHMsICp4MiwgdW1vZCk7CisgICAgcyA9IGFkZG1vZChzLCAqeDMsIHVtb2QpOworCisgICAgcjEgPSBzOworCisgICAgLyogayA9IDEgKi8KKyAgICBzID0gKngxOworCisgICAgdyA9IHczdGFibGVbMV07CisgICAgdG1wID0gTVVMTU9EKCp4Miwgdyk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgdyA9IHczdGFibGVbMl07CisgICAgdG1wID0gTVVMTU9EKCp4Mywgdyk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgcjIgPSBzOworCisgICAgLyogayA9IDIgKi8KKyAgICBzID0gKngxOworCisgICAgdyA9IHczdGFibGVbMl07CisgICAgdG1wID0gTVVMTU9EKCp4Miwgdyk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgdyA9IHczdGFibGVbMV07CisgICAgdG1wID0gTVVMTU9EKCp4Mywgdyk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgKngzID0gczsKKyAgICAqeDIgPSByMjsKKyAgICAqeDEgPSByMTsKK30KKyNlbHNlIC8qIFBQUk8gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcHByb19zaXplM19udHQobXBkX3VpbnRfdCAqeDEsIG1wZF91aW50X3QgKngyLCBtcGRfdWludF90ICp4MywgbXBkX3VpbnRfdCB3M3RhYmxlWzNdLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCB1bW9kLCBkb3VibGUgKmRtb2QsIHVpbnQzMl90IGRpbnZtb2RbM10pCit7CisgICAgbXBkX3VpbnRfdCByMSwgcjI7CisgICAgbXBkX3VpbnRfdCB3OworICAgIG1wZF91aW50X3QgcywgdG1wOworCisKKyAgICAvKiBrID0gMCAtPiB3ID0gMSAqLworICAgIHMgPSAqeDE7CisgICAgcyA9IGFkZG1vZChzLCAqeDIsIHVtb2QpOworICAgIHMgPSBhZGRtb2QocywgKngzLCB1bW9kKTsKKworICAgIHIxID0gczsKKworICAgIC8qIGsgPSAxICovCisgICAgcyA9ICp4MTsKKworICAgIHcgPSB3M3RhYmxlWzFdOworICAgIHRtcCA9IHBwcm9fbXVsbW9kKCp4MiwgdywgZG1vZCwgZGludm1vZCk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgdyA9IHczdGFibGVbMl07CisgICAgdG1wID0gcHByb19tdWxtb2QoKngzLCB3LCBkbW9kLCBkaW52bW9kKTsKKyAgICBzID0gYWRkbW9kKHMsIHRtcCwgdW1vZCk7CisKKyAgICByMiA9IHM7CisKKyAgICAvKiBrID0gMiAqLworICAgIHMgPSAqeDE7CisKKyAgICB3ID0gdzN0YWJsZVsyXTsKKyAgICB0bXAgPSBwcHJvX211bG1vZCgqeDIsIHcsIGRtb2QsIGRpbnZtb2QpOworICAgIHMgPSBhZGRtb2QocywgdG1wLCB1bW9kKTsKKworICAgIHcgPSB3M3RhYmxlWzFdOworICAgIHRtcCA9IHBwcm9fbXVsbW9kKCp4MywgdywgZG1vZCwgZGludm1vZCk7CisgICAgcyA9IGFkZG1vZChzLCB0bXAsIHVtb2QpOworCisgICAgKngzID0gczsKKyAgICAqeDIgPSByMjsKKyAgICAqeDEgPSByMTsKK30KKyNlbmRpZgorCisKKy8qIGZvcndhcmQgdHJhbnNmb3JtLCBzaWduID0gLTE7IHRyYW5zZm9ybSBsZW5ndGggPSAzICogMioqbiAqLworaW50Citmb3VyX3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBtcGRfc2l6ZV90IFIgPSAzOyAvKiBudW1iZXIgb2Ygcm93cyAqLworICAgIG1wZF9zaXplX3QgQyA9IG4gLyAzOyAvKiBudW1iZXIgb2YgY29sdW1ucyAqLworICAgIG1wZF91aW50X3QgdzN0YWJsZVszXTsKKyAgICBtcGRfdWludF90IGtlcm5lbCwgdzAsIHcxLCB3c3RlcDsKKyAgICBtcGRfdWludF90ICpzLCAqcDAsICpwMSwgKnAyOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF9zaXplX3QgaSwgazsKKworCisgICAgYXNzZXJ0KG4gPj0gNDgpOworICAgIGFzc2VydChuIDw9IDMqTVBEX01BWFRSQU5TRk9STV8yTik7CisKKworICAgIC8qIExlbmd0aCBSIHRyYW5zZm9ybSBvbiB0aGUgY29sdW1ucy4gKi8KKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAgX21wZF9pbml0X3czdGFibGUodzN0YWJsZSwgLTEsIG1vZG51bSk7CisgICAgZm9yIChwMD1hLCBwMT1wMCtDLCBwMj1wMCsyKkM7IHAwPGErQzsgcDArKyxwMSsrLHAyKyspIHsKKworICAgICAgICBTSVpFM19OVFQocDAsIHAxLCBwMiwgdzN0YWJsZSk7CisgICAgfQorCisgICAgLyogTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytrKSBieSByKiooaSprKS4gKi8KKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCAtMSwgbW9kbnVtKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUjsgaSsrKSB7CisgICAgICAgIHcwID0gMTsgICAgICAgICAgICAgICAgICAvKiByKiooaSowKTogaW5pdGlhbCB2YWx1ZSBmb3Igaz0wICovCisgICAgICAgIHcxID0gUE9XTU9EKGtlcm5lbCwgaSk7ICAvKiByKiooaSoxKTogaW5pdGlhbCB2YWx1ZSBmb3Igaz0xICovCisgICAgICAgIHdzdGVwID0gTVVMTU9EKHcxLCB3MSk7ICAvKiByKiooMippKSAqLworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgQy0xOyBrICs9IDIpIHsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDAgPSBhW2kqQytrXTsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDEgPSBhW2kqQytrKzFdOworICAgICAgICAgICAgTVVMTU9EMigmeDAsIHcwLCAmeDEsIHcxKTsKKyAgICAgICAgICAgIE1VTE1PRDJDKCZ3MCwgJncxLCB3c3RlcCk7ICAvKiByKiooaSooaysyKSkgPSByKiooaSprKSAqIHIqKigyKmkpICovCisgICAgICAgICAgICBhW2kqQytrXSA9IHgwOworICAgICAgICAgICAgYVtpKkMraysxXSA9IHgxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTGVuZ3RoIEMgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGZvciAocyA9IGE7IHMgPCBhK247IHMgKz0gQykgeworICAgICAgICBpZiAoIXNpeF9zdGVwX2ZudChzLCBDLCBtb2RudW0pKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworI2lmIDAKKyAgICAvKiBBbiB1bm9yZGVyZWQgdHJhbnNmb3JtIGlzIHN1ZmZpY2llbnQgZm9yIGNvbnZvbHV0aW9uLiAqLworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIHRyYW5zcG9zZV8zeHBvdzIoYSwgUiwgQyk7CisjZW5kaWYKKworICAgIHJldHVybiAxOworfQorCisvKiBiYWNrd2FyZCB0cmFuc2Zvcm0sIHNpZ24gPSAxOyB0cmFuc2Zvcm0gbGVuZ3RoID0gMyAqIDIqKm4gKi8KK2ludAoraW52X2ZvdXJfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKQoreworICAgIG1wZF9zaXplX3QgUiA9IDM7IC8qIG51bWJlciBvZiByb3dzICovCisgICAgbXBkX3NpemVfdCBDID0gbiAvIDM7IC8qIG51bWJlciBvZiBjb2x1bW5zICovCisgICAgbXBkX3VpbnRfdCB3M3RhYmxlWzNdOworICAgIG1wZF91aW50X3Qga2VybmVsLCB3MCwgdzEsIHdzdGVwOworICAgIG1wZF91aW50X3QgKnMsICpwMCwgKnAxLCAqcDI7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQobiA+PSA0OCk7CisgICAgYXNzZXJ0KG4gPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXgsIHByb2R1Y2luZyBhbiBSKkMgbWF0cml4LiAqLworICAgIHRyYW5zcG9zZV8zeHBvdzIoYSwgQywgUik7CisjZW5kaWYKKworICAgIC8qIExlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBmb3IgKHMgPSBhOyBzIDwgYStuOyBzICs9IEMpIHsKKyAgICAgICAgaWYgKCFpbnZfc2l4X3N0ZXBfZm50KHMsIEMsIG1vZG51bSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytrKSBieSByKiooaSprKS4gKi8KKyAgICBTRVRNT0RVTFVTKG1vZG51bSk7CisgICAga2VybmVsID0gX21wZF9nZXRrZXJuZWwobiwgMSwgbW9kbnVtKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUjsgaSsrKSB7CisgICAgICAgIHcwID0gMTsKKyAgICAgICAgdzEgPSBQT1dNT0Qoa2VybmVsLCBpKTsKKyAgICAgICAgd3N0ZXAgPSBNVUxNT0QodzEsIHcxKTsKKyAgICAgICAgZm9yIChrID0gMDsgayA8IEM7IGsgKz0gMikgeworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MCA9IGFbaSpDK2tdOworICAgICAgICAgICAgbXBkX3VpbnRfdCB4MSA9IGFbaSpDK2srMV07CisgICAgICAgICAgICBNVUxNT0QyKCZ4MCwgdzAsICZ4MSwgdzEpOworICAgICAgICAgICAgTVVMTU9EMkMoJncwLCAmdzEsIHdzdGVwKTsKKyAgICAgICAgICAgIGFbaSpDK2tdID0geDA7CisgICAgICAgICAgICBhW2kqQytrKzFdID0geDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBMZW5ndGggUiB0cmFuc2Zvcm0gb24gdGhlIGNvbHVtbnMuICovCisgICAgX21wZF9pbml0X3czdGFibGUodzN0YWJsZSwgMSwgbW9kbnVtKTsKKyAgICBmb3IgKHAwPWEsIHAxPXAwK0MsIHAyPXAwKzIqQzsgcDA8YStDOyBwMCsrLHAxKysscDIrKykgeworCisgICAgICAgIFNJWkUzX05UVChwMCwgcDEsIHAyLCB3M3RhYmxlKTsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkOWQ2YQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIEZPVVJfU1RFUF9ICisjZGVmaW5lIEZPVVJfU1RFUF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworaW50IGZvdXJfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKK2ludCBpbnZfZm91cl9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NDgxMzUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmMKQEAgLTAsMCArMSwxNTc1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bG9jYWxlLmg+CisjaW5jbHVkZSAiYml0cy5oIgorI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1lbW9yeS5oIgorI2luY2x1ZGUgInR5cGVhcml0aC5oIgorI2luY2x1ZGUgImlvLmgiCisKKworLyogVGhpcyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgZGVjaW1hbCA8LT4gc3RyaW5nIGNvbnZlcnNpb25zLCBpbmNsdWRpbmcKKyAgIFBFUC0zMTAxIGZvcm1hdHRpbmcgZm9yIG51bWVyaWMgdHlwZXMuICovCisKKworLyoKKyAqIFdvcmsgYXJvdW5kIHRoZSBiZWhhdmlvciBvZiB0b2xvd2VyKCkgYW5kIHN0cmNhc2VjbXAoKSBpbiBjZXJ0YWluCisgKiBsb2NhbGVzLiBGb3IgZXhhbXBsZSwgaW4gdHJfVFIudXRmODoKKyAqCisgKiB0b2xvd2VyKCh1bnNpZ25lZCBjaGFyKSdJJykgPT0gJ0knCisgKgorICogdSBpcyB0aGUgZXhhY3QgdXBwZXJjYXNlIHZlcnNpb24gb2YgbDsgbiBpcyBzdHJsZW4obCkgb3Igc3RybGVuKGwpKzEKKyAqLworc3RhdGljIGlubGluZSBpbnQKK19tcGRfc3RybmVxKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmwsIGNvbnN0IGNoYXIgKnUsIHNpemVfdCBuKQoreworICAgIHdoaWxlICgtLW4gIT0gU0laRV9NQVgpIHsKKyAgICAgICAgaWYgKCpzICE9ICpsICYmICpzICE9ICp1KSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzKys7IHUrKzsgbCsrOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgbXBkX3NzaXplX3QKK3N0cnRvZXhwKGNvbnN0IGNoYXIgKnMpCit7CisgICAgY2hhciAqZW5kOworICAgIG1wZF9zc2l6ZV90IHJldHZhbDsKKworICAgIGVycm5vID0gMDsKKyAgICByZXR2YWwgPSBtcGRfc3RydG9zc2l6ZShzLCAmZW5kLCAxMCk7CisgICAgaWYgKGVycm5vID09IDAgJiYgISgqcyAhPSAnXDAnICYmICplbmQgPT0gJ1wwJykpCisgICAgICAgIGVycm5vID0gRUlOVkFMOworCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFNjYW4gJ2xlbicgd29yZHMuIFRoZSBtb3N0IHNpZ25pZmljYW50IHdvcmQgY29udGFpbnMgJ3InIGRpZ2l0cywKKyAqIHRoZSByZW1haW5pbmcgd29yZHMgYXJlIGZ1bGwgd29yZHMuIFNraXAgZHBvaW50LiBUaGUgc3RyaW5nICdzJyBtdXN0CisgKiBjb25zaXN0IG9mIGRpZ2l0cyBhbmQgYW4gb3B0aW9uYWwgc2luZ2xlIGRlY2ltYWwgcG9pbnQgYXQgJ2Rwb2ludCcuCisgKi8KK3N0YXRpYyB2b2lkCitzdHJpbmdfdG9fY29lZmYobXBkX3VpbnRfdCAqZGF0YSwgY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZHBvaW50LCBpbnQgciwKKyAgICAgICAgICAgICAgICBzaXplX3QgbGVuKQoreworICAgIGludCBqOworCisgICAgaWYgKHIgPiAwKSB7CisgICAgICAgIGRhdGFbLS1sZW5dID0gMDsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHI7IGorKywgcysrKSB7CisgICAgICAgICAgICBpZiAocyA9PSBkcG9pbnQpIHMrKzsKKyAgICAgICAgICAgIGRhdGFbbGVuXSA9IDEwICogZGF0YVtsZW5dICsgKCpzIC0gJzAnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHdoaWxlICgtLWxlbiAhPSBTSVpFX01BWCkgeworICAgICAgICBkYXRhW2xlbl0gPSAwOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgTVBEX1JESUdJVFM7IGorKywgcysrKSB7CisgICAgICAgICAgICBpZiAocyA9PSBkcG9pbnQpIHMrKzsKKyAgICAgICAgICAgIGRhdGFbbGVuXSA9IDEwICogZGF0YVtsZW5dICsgKCpzIC0gJzAnKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLyoKKyAqIFBhcnRpYWxseSB2ZXJpZnkgYSBudW1lcmljIHN0cmluZyBvZiB0aGUgZm9ybToKKyAqCisgKiAgICAgW2NkaWdpdHNdWy5dW2NkaWdpdHNdW2VFXVsrLV1bZWRpZ2l0c10KKyAqCisgKiBJZiBzdWNjZXNzZnVsLCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QKKyAqIHJlbGV2YW50IGNvZWZmaWNpZW50IGRpZ2l0LiBUaGlzIGRpZ2l0IGlzIGVpdGhlciBub24temVybyBvcgorICogcGFydCBvZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBwYXR0ZXJuczoKKyAqCisgKiAgICAgWyIwXHgwMCIsICIwLlx4MDAiLCAiMC5FIiwgIjAuZSIsICIwRSIsICIwZSJdCisgKgorICogVGhlIGxvY2F0aW9ucyBvZiBhIHNpbmdsZSBvcHRpb25hbCBkb3Qgb3IgaW5kaWNhdG9yIGFyZSBzdG9yZWQKKyAqIGluICdkcG9pbnQnIGFuZCAnZXhwJy4KKyAqCisgKiBUaGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgc3RvcmVkIGluICdlbmQnLiBJZiBhbiBpbmRpY2F0b3IgW2VFXQorICogb2NjdXJzIHdpdGhvdXQgdHJhaWxpbmcgW2VkaWdpdHNdLCB0aGUgY29uZGl0aW9uIGlzIGNhdWdodAorICogbGF0ZXIgYnkgc3RydG9leHAoKS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKgorc2Nhbl9kcG9pbnRfZXhwKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKipkcG9pbnQsIGNvbnN0IGNoYXIgKipleHAsCisgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZCkKK3sKKyAgICBjb25zdCBjaGFyICpjb2VmZiA9IE5VTEw7CisKKyAgICAqZHBvaW50ID0gTlVMTDsKKyAgICAqZXhwID0gTlVMTDsKKyAgICBmb3IgKDsgKnMgIT0gJ1wwJzsgcysrKSB7CisgICAgICAgIHN3aXRjaCAoKnMpIHsKKyAgICAgICAgY2FzZSAnLic6CisgICAgICAgICAgICBpZiAoKmRwb2ludCAhPSBOVUxMIHx8ICpleHAgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICpkcG9pbnQgPSBzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ0UnOiBjYXNlICdlJzoKKyAgICAgICAgICAgIGlmICgqZXhwICE9IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAqZXhwID0gczsKKyAgICAgICAgICAgIGlmICgqKHMrMSkgPT0gJysnIHx8ICoocysxKSA9PSAnLScpCisgICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIWlzZGlnaXQoKHVjaGFyKSpzKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGlmIChjb2VmZiA9PSBOVUxMICYmICpleHAgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICgqcyA9PSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCh1Y2hhcikqKHMrMSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKihzKzEpID09ICcuJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNkaWdpdCgodWNoYXIpKihzKzIpKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY29lZmYgPSBzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIH0KKyAgICB9CisKKyAgICAqZW5kID0gczsKKyAgICByZXR1cm4gY29lZmY7Cit9CisKKy8qIHNjYW4gdGhlIHBheWxvYWQgb2YgYSBOYU4gKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3NjYW5fcGF5bG9hZChjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICoqZW5kKQoreworICAgIGNvbnN0IGNoYXIgKmNvZWZmOworCisgICAgd2hpbGUgKCpzID09ICcwJykKKyAgICAgICAgcysrOworICAgIGNvZWZmID0gczsKKworICAgIHdoaWxlIChpc2RpZ2l0KCh1Y2hhcikqcykpCisgICAgICAgIHMrKzsKKyAgICAqZW5kID0gczsKKworICAgIHJldHVybiAoKnMgPT0gJ1wwJykgPyBjb2VmZiA6IE5VTEw7Cit9CisKKy8qIGNvbnZlcnQgYSBjaGFyYWN0ZXIgc3RyaW5nIHRvIGEgZGVjaW1hbCAqLwordm9pZAorbXBkX3FzZXRfc3RyaW5nKG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHEsIHIsIGxlbjsKKyAgICBjb25zdCBjaGFyICpjb2VmZiwgKmVuZDsKKyAgICBjb25zdCBjaGFyICpkcG9pbnQgPSBOVUxMLCAqZXhwID0gTlVMTDsKKyAgICBzaXplX3QgZGlnaXRzOworICAgIHVpbnQ4X3Qgc2lnbiA9IE1QRF9QT1M7CisKKyAgICBtcGRfc2V0X2ZsYWdzKGRlYywgMCk7CisgICAgZGVjLT5sZW4gPSAwOworICAgIGRlYy0+ZXhwID0gMDsKKworICAgIC8qIHNpZ24gKi8KKyAgICBpZiAoKnMgPT0gJysnKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgZWxzZSBpZiAoKnMgPT0gJy0nKSB7CisgICAgICAgIG1wZF9zZXRfbmVnYXRpdmUoZGVjKTsKKyAgICAgICAgc2lnbiA9IE1QRF9ORUc7CisgICAgICAgIHMrKzsKKyAgICB9CisKKyAgICBpZiAoX21wZF9zdHJuZXEocywgIm5hbiIsICJOQU4iLCAzKSkgeyAvKiBOYU4gKi8KKyAgICAgICAgcyArPSAzOworICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIHNpZ24sIE1QRF9OQU4pOworICAgICAgICBpZiAoKnMgPT0gJ1wwJykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLyogdmFsaWRhdGUgcGF5bG9hZDogZGlnaXRzIG9ubHkgKi8KKyAgICAgICAgaWYgKChjb2VmZiA9IHNjYW5fcGF5bG9hZChzLCAmZW5kKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgLyogcGF5bG9hZCBjb25zaXN0cyBlbnRpcmVseSBvZiB6ZXJvcyAqLworICAgICAgICBpZiAoKmNvZWZmID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZ2l0cyA9IGVuZCAtIGNvZWZmOworICAgICAgICAvKiBwcmVjID49IDEsIGNsYW1wIGlzIDAgb3IgMSAqLworICAgICAgICBpZiAoZGlnaXRzID4gKHNpemVfdCkoY3R4LT5wcmVjLWN0eC0+Y2xhbXApKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgIH0gLyogc05hTiAqLworICAgIGVsc2UgaWYgKF9tcGRfc3RybmVxKHMsICJzbmFuIiwgIlNOQU4iLCA0KSkgeworICAgICAgICBzICs9IDQ7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgc2lnbiwgTVBEX1NOQU4pOworICAgICAgICBpZiAoKnMgPT0gJ1wwJykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLyogdmFsaWRhdGUgcGF5bG9hZDogZGlnaXRzIG9ubHkgKi8KKyAgICAgICAgaWYgKChjb2VmZiA9IHNjYW5fcGF5bG9hZChzLCAmZW5kKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgLyogcGF5bG9hZCBjb25zaXN0cyBlbnRpcmVseSBvZiB6ZXJvcyAqLworICAgICAgICBpZiAoKmNvZWZmID09ICdcMCcpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRpZ2l0cyA9IGVuZCAtIGNvZWZmOworICAgICAgICBpZiAoZGlnaXRzID4gKHNpemVfdCkoY3R4LT5wcmVjLWN0eC0+Y2xhbXApKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChfbXBkX3N0cm5lcShzLCAiaW5mIiwgIklORiIsIDMpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgaWYgKCpzID09ICdcMCcgfHwgX21wZF9zdHJuZXEocywgImluaXR5IiwgIklOSVRZIiwgNikpIHsKKyAgICAgICAgICAgIC8qIG51bWVyaWMtdmFsdWU6IGluZmluaXR5ICovCisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChkZWMsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHNjYW4gZm9yIHN0YXJ0IG9mIGNvZWZmaWNpZW50LCBkZWNpbWFsIHBvaW50LCBpbmRpY2F0b3IsIGVuZCAqLworICAgICAgICBpZiAoKGNvZWZmID0gc2Nhbl9kcG9pbnRfZXhwKHMsICZkcG9pbnQsICZleHAsICZlbmQpKSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworCisgICAgICAgIC8qIG51bWVyaWMtdmFsdWU6IFtleHBvbmVudC1wYXJ0XSAqLworICAgICAgICBpZiAoZXhwKSB7CisgICAgICAgICAgICAvKiBleHBvbmVudC1wYXJ0ICovCisgICAgICAgICAgICBlbmQgPSBleHA7IGV4cCsrOworICAgICAgICAgICAgZGVjLT5leHAgPSBzdHJ0b2V4cChleHApOworICAgICAgICAgICAgaWYgKGVycm5vKSB7CisgICAgICAgICAgICAgICAgaWYgKCEoZXJybm8gPT0gRVJBTkdFICYmCisgICAgICAgICAgICAgICAgICAgICAoZGVjLT5leHAgPT0gTVBEX1NTSVpFX01BWCB8fAorICAgICAgICAgICAgICAgICAgICAgIGRlYy0+ZXhwID09IE1QRF9TU0laRV9NSU4pKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgICAgIGRpZ2l0cyA9IGVuZCAtIGNvZWZmOworICAgICAgICBpZiAoZHBvaW50KSB7CisgICAgICAgICAgICBzaXplX3QgZnJhY2RpZ2l0cyA9IGVuZC1kcG9pbnQtMTsKKyAgICAgICAgICAgIGlmIChkcG9pbnQgPiBjb2VmZikgZGlnaXRzLS07CisKKyAgICAgICAgICAgIGlmIChmcmFjZGlnaXRzID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRlYy0+ZXhwIDwgTVBEX1NTSVpFX01JTisobXBkX3NzaXplX3QpZnJhY2RpZ2l0cykgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwID0gTVBEX1NTSVpFX01JTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwIC09IChtcGRfc3NpemVfdClmcmFjZGlnaXRzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChkaWdpdHMgPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgICAgIGdvdG8gY29udmVyc2lvbl9lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjLT5leHAgPiBNUERfRVhQX0lORikgeworICAgICAgICAgICAgZGVjLT5leHAgPSBNUERfRVhQX0lORjsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVjLT5leHAgPT0gTVBEX1NTSVpFX01JTikgeworICAgICAgICAgICAgZGVjLT5leHAgPSBNUERfU1NJWkVfTUlOKzE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBfbXBkX2lkaXZfd29yZCgmcSwgJnIsIChtcGRfc3NpemVfdClkaWdpdHMsIE1QRF9SRElHSVRTKTsKKworICAgIGxlbiA9IChyID09IDApID8gcSA6IHErMTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgZ290byBjb252ZXJzaW9uX2Vycm9yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmICghbXBkX3FyZXNpemUoZGVjLCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKGRlYywgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWMtPmxlbiA9IGxlbjsKKworICAgIHN0cmluZ190b19jb2VmZihkZWMtPmRhdGEsIGNvZWZmLCBkcG9pbnQsIChpbnQpciwgbGVuKTsKKworICAgIG1wZF9zZXRkaWdpdHMoZGVjKTsKKyAgICBtcGRfcWZpbmFsaXplKGRlYywgY3R4LCBzdGF0dXMpOworICAgIHJldHVybjsKKworY29udmVyc2lvbl9lcnJvcjoKKyAgICAvKiBzdGFuZGFyZCB3YW50cyBhIHBvc2l0aXZlIE5hTiAqLworICAgIG1wZF9zZXRlcnJvcihkZWMsIE1QRF9Db252ZXJzaW9uX3N5bnRheCwgc3RhdHVzKTsKK30KKworLyogUHJpbnQgd29yZCB4IHdpdGggbiBkZWNpbWFsIGRpZ2l0cyB0byBzdHJpbmcgcy4gZG90IGlzIGVpdGhlciBOVUxMCisgICBvciB0aGUgbG9jYXRpb24gb2YgYSBkZWNpbWFsIHBvaW50LiAqLworI2RlZmluZSBFWFRSQUNUX0RJR0lUKHMsIHgsIGQsIGRvdCkgXAorICAgICAgICBpZiAocyA9PSBkb3QpICpzKysgPSAnLic7ICpzKysgPSAnMCcgKyAoY2hhcikoeCAvIGQpOyB4ICU9IGQKK3N0YXRpYyBpbmxpbmUgY2hhciAqCit3b3JkX3RvX3N0cmluZyhjaGFyICpzLCBtcGRfdWludF90IHgsIGludCBuLCBjaGFyICpkb3QpCit7CisgICAgc3dpdGNoKG4pIHsKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBjYXNlIDIwOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgY2FzZSAxOTogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTg6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTc6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxNjogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTU6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTQ6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwMDBVTEwsIGRvdCk7CisgICAgY2FzZSAxMzogRVhUUkFDVF9ESUdJVChzLCB4LCAxMDAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTI6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDAwVUxMLCBkb3QpOworICAgIGNhc2UgMTE6IEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDAwMDBVTEwsIGRvdCk7CisjZW5kaWYKKyAgICBjYXNlIDEwOiBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDk6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgODogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDc6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDY6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDAwMFVMLCBkb3QpOworICAgIGNhc2UgNTogIEVYVFJBQ1RfRElHSVQocywgeCwgMTAwMDBVTCwgZG90KTsKKyAgICBjYXNlIDQ6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMDBVTCwgZG90KTsKKyAgICBjYXNlIDM6ICBFWFRSQUNUX0RJR0lUKHMsIHgsIDEwMFVMLCBkb3QpOworICAgIGNhc2UgMjogIEVYVFJBQ1RfRElHSVQocywgeCwgMTBVTCwgZG90KTsKKyAgICBkZWZhdWx0OiBpZiAocyA9PSBkb3QpICpzKysgPSAnLic7ICpzKysgPSAnMCcgKyAoY2hhcil4OworICAgIH0KKyAKKyAgICAqcyA9ICdcMCc7CisgICAgcmV0dXJuIHM7Cit9CisKKy8qIFByaW50IGV4cG9uZW50IHggdG8gc3RyaW5nIHMuIFVuZGVmaW5lZCBmb3IgTVBEX1NTSVpFX01JTi4gKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitleHBfdG9fc3RyaW5nKGNoYXIgKnMsIG1wZF9zc2l6ZV90IHgpCit7CisgICAgY2hhciBzaWduID0gJysnOworCisgICAgaWYgKHggPCAwKSB7CisgICAgICAgIHNpZ24gPSAnLSc7CisgICAgICAgIHggPSAteDsKKyAgICB9CisgICAgKnMrKyA9IHNpZ247CisKKyAgICByZXR1cm4gd29yZF90b19zdHJpbmcocywgeCwgbXBkX3dvcmRfZGlnaXRzKHgpLCBOVUxMKTsKK30KKworLyogUHJpbnQgdGhlIGNvZWZmaWNpZW50IG9mIGRlYyB0byBzdHJpbmcgcy4gbGVuKGRlYykgPiAwLiAqLworc3RhdGljIGlubGluZSBjaGFyICoKK2NvZWZmX3RvX3N0cmluZyhjaGFyICpzLCBjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3QgeDsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgLyogbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisgICAgeCA9IG1wZF9tc3dvcmQoZGVjKTsKKyAgICBzID0gd29yZF90b19zdHJpbmcocywgeCwgbXBkX3dvcmRfZGlnaXRzKHgpLCBOVUxMKTsKKworICAgIC8qIHJlbWFpbmluZyBmdWxsIHdvcmRzICovCisgICAgZm9yIChpPWRlYy0+bGVuLTI7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIHggPSBkZWMtPmRhdGFbaV07CisgICAgICAgIHMgPSB3b3JkX3RvX3N0cmluZyhzLCB4LCBNUERfUkRJR0lUUywgTlVMTCk7CisgICAgfQorCisgICAgcmV0dXJuIHM7Cit9CisKKy8qIFByaW50IHRoZSBjb2VmZmljaWVudCBvZiBkZWMgdG8gc3RyaW5nIHMuIGxlbihkZWMpID4gMC4gZG90IGlzIGVpdGhlcgorICAgTlVMTCBvciBhIHBvaW50ZXIgdG8gdGhlIGxvY2F0aW9uIG9mIGEgZGVjaW1hbCBwb2ludC4gKi8KK3N0YXRpYyBpbmxpbmUgY2hhciAqCitjb2VmZl90b19zdHJpbmdfZG90KGNoYXIgKnMsIGNoYXIgKmRvdCwgY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBtcGRfdWludF90IHg7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCAqLworICAgIHggPSBtcGRfbXN3b3JkKGRlYyk7CisgICAgcyA9IHdvcmRfdG9fc3RyaW5nKHMsIHgsIG1wZF93b3JkX2RpZ2l0cyh4KSwgZG90KTsKKworICAgIC8qIHJlbWFpbmluZyBmdWxsIHdvcmRzICovCisgICAgZm9yIChpPWRlYy0+bGVuLTI7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIHggPSBkZWMtPmRhdGFbaV07CisgICAgICAgIHMgPSB3b3JkX3RvX3N0cmluZyhzLCB4LCBNUERfUkRJR0lUUywgZG90KTsKKyAgICB9CisKKyAgICByZXR1cm4gczsKK30KKworLyogRm9ybWF0IHR5cGUgKi8KKyNkZWZpbmUgTVBEX0ZNVF9MT1dFUiAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgTVBEX0ZNVF9VUFBFUiAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTVBEX0ZNVF9UT1NDSSAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgTVBEX0ZNVF9UT0VORyAgICAgIDB4MDAwMDAwMDQKKyNkZWZpbmUgTVBEX0ZNVF9FWFAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgTVBEX0ZNVF9GSVhFRCAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgTVBEX0ZNVF9QRVJDRU5UICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgTVBEX0ZNVF9TSUdOX1NQQUNFIDB4MDAwMDAwNDAKKyNkZWZpbmUgTVBEX0ZNVF9TSUdOX1BMVVMgIDB4MDAwMDAwODAKKworLyogRGVmYXVsdCBwbGFjZSBvZiB0aGUgZGVjaW1hbCBwb2ludCBmb3IgTVBEX0ZNVF9UT1NDSSwgTVBEX0ZNVF9FWFAgKi8KKyNkZWZpbmUgTVBEX0RFRkFVTFRfRE9UUExBQ0UgMQorCisvKgorICogU2V0ICpyZXN1bHQgdG8gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGRlY2ltYWwuIFJldHVybiB0aGUgbGVuZ3RoCisgKiBvZiAqcmVzdWx0LCBub3QgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGNoYXJhY3Rlci4KKyAqCisgKiBGb3JtYXR0aW5nIGlzIGRvbmUgYWNjb3JkaW5nIHRvICdmbGFncycuIEEgcmV0dXJuIHZhbHVlIG9mIC0xIHdpdGggKnJlc3VsdAorICogc2V0IHRvIE5VTEwgaW5kaWNhdGVzIE1QRF9NYWxsb2NfZXJyb3IuCisgKgorICogJ2RwbGFjZScgaXMgdGhlIGRlZmF1bHQgcGxhY2Ugb2YgdGhlIGRlY2ltYWwgcG9pbnQuIEl0IGlzIGFsd2F5cyBzZXQgdG8KKyAqIE1QRF9ERUZBVUxUX0RPVFBMQUNFIGV4Y2VwdCBmb3IgemVyb3MgaW4gY29tYmluYXRpb24gd2l0aCBNUERfRk1UX0VYUC4KKyAqLworc3RhdGljIG1wZF9zc2l6ZV90CitfbXBkX3RvX3N0cmluZyhjaGFyICoqcmVzdWx0LCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZmxhZ3MsIG1wZF9zc2l6ZV90IGRwbGFjZSkKK3sKKyAgICBjaGFyICpkZWNzdHJpbmcgPSBOVUxMLCAqY3AgPSBOVUxMOworICAgIG1wZF9zc2l6ZV90IGxkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgbWVtID0gMCwgazsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHsKKworICAgICAgICBtZW0gPSBzaXplb2YgIi1JbmZpbml0eSI7CisgICAgICAgIGlmIChtcGRfaXNuYW4oZGVjKSAmJiBkZWMtPmxlbiA+IDApIHsKKyAgICAgICAgICAgIC8qIGRpYWdub3N0aWMgY29kZSAqLworICAgICAgICAgICAgbWVtICs9IGRlYy0+ZGlnaXRzOworICAgICAgICB9CisgICAgICAgIGNwID0gZGVjc3RyaW5nID0gbXBkX2FsbG9jKG1lbSwgc2l6ZW9mICpkZWNzdHJpbmcpOworICAgICAgICBpZiAoY3AgPT0gTlVMTCkgeworICAgICAgICAgICAgKnJlc3VsdCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZGVjKSkgeworICAgICAgICAgICAgKmNwKysgPSAnLSc7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9TSUdOX1NQQUNFKSB7CisgICAgICAgICAgICAqY3ArKyA9ICcgJzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX1NJR05fUExVUykgeworICAgICAgICAgICAgKmNwKysgPSAnKyc7CisgICAgICAgIH0KKworICAgICAgICBpZiAobXBkX2lzbmFuKGRlYykpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXNxbmFuKGRlYykpIHsKKyAgICAgICAgICAgICAgICBzdHJjcHkoY3AsICJOYU4iKTsKKyAgICAgICAgICAgICAgICBjcCArPSAzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3RyY3B5KGNwLCAic05hTiIpOworICAgICAgICAgICAgICAgIGNwICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGVjLT5sZW4gPiAwKSB7IC8qIGRpYWdub3N0aWMgY29kZSAqLworICAgICAgICAgICAgICAgIGNwID0gY29lZmZfdG9fc3RyaW5nKGNwLCBkZWMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc2luZmluaXRlKGRlYykpIHsKKyAgICAgICAgICAgIHN0cmNweShjcCwgIkluZmluaXR5Iik7CisgICAgICAgICAgICBjcCArPSA4OworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvKiBkZWJ1ZyAqLworICAgICAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoZGVjLT5sZW4gPiAwKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBGb3IgZWFzaWVyIG1hbmlwdWxhdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCdzIGxvY2F0aW9uCisgICAgICAgICAqIGFuZCB0aGUgZXhwb25lbnQgdGhhdCBpcyBmaW5hbGx5IHByaW50ZWQsIHRoZSBudW1iZXIgaXMKKyAgICAgICAgICogcmVzY2FsZWQgdG8gYSB2aXJ0dWFsIHJlcHJlc2VudGF0aW9uIHdpdGggZXhwID0gMC4gSGVyZQorICAgICAgICAgKiBsZGlnaXRzIGRlbm90ZXMgdGhlIG51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cyB0byB0aGUgbGVmdAorICAgICAgICAgKiBvZiB0aGUgZGVjaW1hbCBwb2ludCBhbmQgcmVtYWlucyBjb25zdGFudCBvbmNlIGluaXRpYWxpemVkLgorICAgICAgICAgKgorICAgICAgICAgKiBkcGxhY2UgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBkZWNpbWFsIHBvaW50IHJlbGF0aXZlIHRvCisgICAgICAgICAqIHRoZSBzdGFydCBvZiB0aGUgY29lZmZpY2llbnQuIE5vdGUgdGhhdCAzKSBhbHdheXMgaG9sZHMKKyAgICAgICAgICogd2hlbiBkcGxhY2UgaXMgc2hpZnRlZC4KKyAgICAgICAgICoKKyAgICAgICAgICogICAxKSBsZGlnaXRzIDo9IGRlYy0+ZGlnaXRzIC0gZGVjLT5leHAKKyAgICAgICAgICogICAyKSBkcGxhY2UgIDo9IGxkaWdpdHMgICAgICAgICAgICAoaW5pdGlhbGx5KQorICAgICAgICAgKiAgIDMpIGV4cCAgICAgOj0gbGRpZ2l0cyAtIGRwbGFjZSAgIChpbml0aWFsbHkgZXhwID0gMCkKKyAgICAgICAgICoKKyAgICAgICAgICogICAwLjAwMDAwXy5fX19fLl9fX19fMDAwMDAwLgorICAgICAgICAgKiAgICBeICAgICAgXiAgICBeICAgICAgICAgICBeCisgICAgICAgICAqICAgIHwgICAgICB8ICAgIHwgICAgICAgICAgIHwKKyAgICAgICAgICogICAgfCAgICAgIHwgICAgfCAgICAgICAgICAgYC0gZHBsYWNlID49IGRpZ2l0cworICAgICAgICAgKiAgICB8ICAgICAgfCAgICBgLSBkcGxhY2UgaW4gdGhlIG1pZGRsZSBvZiB0aGUgY29lZmZpY2llbnQKKyAgICAgICAgICogICAgfCAgICAgIGAgZHBsYWNlID0gMSAoYWZ0ZXIgdGhlIGZpcnN0IGNvZWZmaWNpZW50IGRpZ2l0KQorICAgICAgICAgKiAgICBgLSBkcGxhY2UgPD0gMAorICAgICAgICAgKi8KKworICAgICAgICBsZGlnaXRzID0gZGVjLT5kaWdpdHMgKyBkZWMtPmV4cDsKKworICAgICAgICBpZiAoZmxhZ3MmTVBEX0ZNVF9FWFApIHsKKyAgICAgICAgICAgIDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmbGFncyZNUERfRk1UX0ZJWEVEIHx8IChkZWMtPmV4cCA8PSAwICYmIGxkaWdpdHMgPiAtNikpIHsKKyAgICAgICAgICAgIC8qIE1QRF9GTVRfRklYRUQ6IGFsd2F5cyB1c2UgZml4ZWQgcG9pbnQgbm90YXRpb24uCisgICAgICAgICAgICAgKiBNUERfRk1UX1RPU0NJLCBNUERfRk1UX1RPRU5HOiBmb3IgYSBjZXJ0YWluIHJhbmdlLAorICAgICAgICAgICAgICogb3ZlcnJpZGUgZXhwb25lbnQgbm90YXRpb24uICovCisgICAgICAgICAgICBkcGxhY2UgPSBsZGlnaXRzOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfVE9FTkcpIHsKKyAgICAgICAgICAgIGlmIChtcGRfaXN6ZXJvKGRlYykpIHsKKyAgICAgICAgICAgICAgICAvKiBJZiB0aGUgZXhwb25lbnQgaXMgZGl2aXNpYmxlIGJ5IHRocmVlLAorICAgICAgICAgICAgICAgICAqIGRwbGFjZSA9IDEuIE90aGVyd2lzZSwgbW92ZSBkcGxhY2Ugb25lCisgICAgICAgICAgICAgICAgICogb3IgdHdvIHBsYWNlcyB0byB0aGUgbGVmdC4gKi8KKyAgICAgICAgICAgICAgICBkcGxhY2UgPSAtMSArIG1vZF9tcGRfc3NpemVfdChkZWMtPmV4cCsyLCAzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeyAvKiBsZGlnaXRzLTEgaXMgdGhlIGFkanVzdGVkIGV4cG9uZW50LCB3aGljaAorICAgICAgICAgICAgICAgICogc2hvdWxkIGJlIGRpdmlzaWJsZSBieSB0aHJlZS4gSWYgbm90LCBtb3ZlCisgICAgICAgICAgICAgICAgKiBkcGxhY2Ugb25lIG9yIHR3byBwbGFjZXMgdG8gdGhlIHJpZ2h0LiAqLworICAgICAgICAgICAgICAgIGRwbGFjZSArPSBtb2RfbXBkX3NzaXplX3QobGRpZ2l0cy0xLCAzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIEJhc2ljIHNwYWNlIHJlcXVpcmVtZW50czoKKyAgICAgICAgICoKKyAgICAgICAgICogWy1dWy5dW2NvZWZmZGlnaXRzXVtFXVstXVtleHBkaWdpdHMrMV1bJV1bJ1wwJ10KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgdGhlIGRlY2ltYWwgcG9pbnQgbGllcyBvdXRzaWRlIG9mIHRoZSBjb2VmZmljaWVudCBkaWdpdHMsCisgICAgICAgICAqIHNwYWNlIGlzIGFkanVzdGVkIGFjY29yZGluZ2x5LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGRwbGFjZSA8PSAwKSB7CisgICAgICAgICAgICBtZW0gPSAtZHBsYWNlICsgZGVjLT5kaWdpdHMgKyAyOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRwbGFjZSA+PSBkZWMtPmRpZ2l0cykgeworICAgICAgICAgICAgbWVtID0gZHBsYWNlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtID0gZGVjLT5kaWdpdHM7CisgICAgICAgIH0KKyAgICAgICAgbWVtICs9IChNUERfRVhQRElHSVRTKzErNik7CisKKyAgICAgICAgY3AgPSBkZWNzdHJpbmcgPSBtcGRfYWxsb2MobWVtLCBzaXplb2YgKmRlY3N0cmluZyk7CisgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisKKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGRlYykpIHsKKyAgICAgICAgICAgICpjcCsrID0gJy0nOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZsYWdzJk1QRF9GTVRfU0lHTl9TUEFDRSkgeworICAgICAgICAgICAgKmNwKysgPSAnICc7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZmxhZ3MmTVBEX0ZNVF9TSUdOX1BMVVMpIHsKKyAgICAgICAgICAgICpjcCsrID0gJysnOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRwbGFjZSA8PSAwKSB7CisgICAgICAgICAgICAvKiBzcGFjZTogLWRwbGFjZStkZWMtPmRpZ2l0cysyICovCisgICAgICAgICAgICAqY3ArKyA9ICcwJzsKKyAgICAgICAgICAgICpjcCsrID0gJy4nOworICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IC1kcGxhY2U7IGsrKykgeworICAgICAgICAgICAgICAgICpjcCsrID0gJzAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3AgPSBjb2VmZl90b19zdHJpbmcoY3AsIGRlYyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZHBsYWNlID49IGRlYy0+ZGlnaXRzKSB7CisgICAgICAgICAgICAvKiBzcGFjZTogZHBsYWNlICovCisgICAgICAgICAgICBjcCA9IGNvZWZmX3RvX3N0cmluZyhjcCwgZGVjKTsKKyAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBkcGxhY2UtZGVjLT5kaWdpdHM7IGsrKykgeworICAgICAgICAgICAgICAgICpjcCsrID0gJzAnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogc3BhY2U6IGRlYy0+ZGlnaXRzKzEgKi8KKyAgICAgICAgICAgIGNwID0gY29lZmZfdG9fc3RyaW5nX2RvdChjcCwgY3ArZHBsYWNlLCBkZWMpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29uZGl0aW9ucyBmb3IgcHJpbnRpbmcgYW4gZXhwb25lbnQ6CisgICAgICAgICAqCisgICAgICAgICAqICAgTVBEX0ZNVF9UT1NDSSwgTVBEX0ZNVF9UT0VORzogb25seSBpZiBsZGlnaXRzICE9IGRwbGFjZQorICAgICAgICAgKiAgIE1QRF9GTVRfRklYRUQ6ICAgICAgICAgICAgICAgIG5ldmVyIChsZGlnaXRzID09IGRwbGFjZSkKKyAgICAgICAgICogICBNUERfRk1UX0VYUDogICAgICAgICAgICAgICAgICBhbHdheXMKKyAgICAgICAgICovCisgICAgICAgIGlmIChsZGlnaXRzICE9IGRwbGFjZSB8fCBmbGFncyZNUERfRk1UX0VYUCkgeworICAgICAgICAgICAgLyogc3BhY2U6IGV4cGRpZ2l0cysyICovCisgICAgICAgICAgICAqY3ArKyA9IChmbGFncyZNUERfRk1UX1VQUEVSKSA/ICdFJyA6ICdlJzsKKyAgICAgICAgICAgIGNwID0gZXhwX3RvX3N0cmluZyhjcCwgbGRpZ2l0cy1kcGxhY2UpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsYWdzJk1QRF9GTVRfUEVSQ0VOVCkgeworICAgICAgICAgICAgKmNwKysgPSAnJSc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoY3AgPCBkZWNzdHJpbmcrbWVtKTsKKyAgICBhc3NlcnQoY3AtZGVjc3RyaW5nIDwgTVBEX1NTSVpFX01BWCk7CisKKyAgICAqY3AgPSAnXDAnOworICAgICpyZXN1bHQgPSBkZWNzdHJpbmc7CisgICAgcmV0dXJuIChtcGRfc3NpemVfdCkoY3AtZGVjc3RyaW5nKTsKK30KKworY2hhciAqCittcGRfdG9fc2NpKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpCit7CisgICAgY2hhciAqcmVzOworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9TQ0k7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICAodm9pZClfbXBkX3RvX3N0cmluZygmcmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7CisgICAgcmV0dXJuIHJlczsKK30KKworY2hhciAqCittcGRfdG9fZW5nKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpCit7CisgICAgY2hhciAqcmVzOworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9FTkc7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICAodm9pZClfbXBkX3RvX3N0cmluZygmcmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7CisgICAgcmV0dXJuIHJlczsKK30KKworbXBkX3NzaXplX3QKK21wZF90b19zY2lfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KQoreworICAgIGludCBmbGFncyA9IE1QRF9GTVRfVE9TQ0k7CisKKyAgICBmbGFncyB8PSBmbXQgPyBNUERfRk1UX1VQUEVSIDogTVBEX0ZNVF9MT1dFUjsKKyAgICByZXR1cm4gX21wZF90b19zdHJpbmcocmVzLCBkZWMsIGZsYWdzLCBNUERfREVGQVVMVF9ET1RQTEFDRSk7Cit9CisKK21wZF9zc2l6ZV90CittcGRfdG9fZW5nX3NpemUoY2hhciAqKnJlcywgY29uc3QgbXBkX3QgKmRlYywgaW50IGZtdCkKK3sKKyAgICBpbnQgZmxhZ3MgPSBNUERfRk1UX1RPRU5HOworCisgICAgZmxhZ3MgfD0gZm10ID8gTVBEX0ZNVF9VUFBFUiA6IE1QRF9GTVRfTE9XRVI7CisgICAgcmV0dXJuIF9tcGRfdG9fc3RyaW5nKHJlcywgZGVjLCBmbGFncywgTVBEX0RFRkFVTFRfRE9UUExBQ0UpOworfQorCisvKiBDb3B5IGEgc2luZ2xlIFVURi04IGNoYXIgdG8gZGVzdC4gU2VlOiBUaGUgVW5pY29kZSBTdGFuZGFyZCwgdmVyc2lvbiA1LjIsCisgICBjaGFwdGVyIDMuOTogV2VsbC1mb3JtZWQgVVRGLTggYnl0ZSBzZXF1ZW5jZXMuICovCitzdGF0aWMgaW50CitfbXBkX2NvcHlfdXRmOChjaGFyIGRlc3RbNV0sIGNvbnN0IGNoYXIgKnMpCit7CisgICAgY29uc3QgdWNoYXIgKmNwID0gKGNvbnN0IHVjaGFyICopczsKKyAgICB1Y2hhciBsYiwgdWI7CisgICAgaW50IGNvdW50LCBpOworCisKKyAgICBpZiAoKmNwID09IDApIHsKKyAgICAgICAgLyogZW1wdHkgc3RyaW5nICovCisgICAgICAgIGRlc3RbMF0gPSAnXDAnOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoKmNwIDw9IDB4N2YpIHsKKyAgICAgICAgLyogYXNjaWkgKi8KKyAgICAgICAgZGVzdFswXSA9ICpjcDsKKyAgICAgICAgZGVzdFsxXSA9ICdcMCc7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIGlmICgweGMyIDw9ICpjcCAmJiAqY3AgPD0gMHhkZikgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAyOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhlMCkgeworICAgICAgICBsYiA9IDB4YTA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHhlYykgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhlZCkgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHg5ZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHhlZikgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSAzOworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhmMCkgeworICAgICAgICBsYiA9IDB4OTA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSA0OworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPD0gMHhmMykgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHhiZjsKKyAgICAgICAgY291bnQgPSA0OworICAgIH0KKyAgICBlbHNlIGlmICgqY3AgPT0gMHhmNCkgeworICAgICAgICBsYiA9IDB4ODA7IHViID0gMHg4ZjsKKyAgICAgICAgY291bnQgPSA0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogaW52YWxpZCAqLworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGRlc3RbMF0gPSAqY3ArKzsKKyAgICBpZiAoKmNwIDwgbGIgfHwgdWIgPCAqY3ApIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZGVzdFsxXSA9ICpjcCsrOworICAgIGZvciAoaSA9IDI7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIGlmICgqY3AgPCAweDgwIHx8IDB4YmYgPCAqY3ApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZGVzdFtpXSA9ICpjcCsrOworICAgIH0KKyAgICBkZXN0W2ldID0gJ1wwJzsKKworICAgIHJldHVybiBjb3VudDsKKworZXJyb3I6CisgICAgZGVzdFswXSA9ICdcMCc7CisgICAgcmV0dXJuIC0xOworfQorCitpbnQKK21wZF92YWxpZGF0ZV9sY29udihtcGRfc3BlY190ICpzcGVjKQoreworICAgIHNpemVfdCBuOworI2lmIENIQVJfTUFYID09IFNDSEFSX01BWAorICAgIGNvbnN0IGNoYXIgKmNwID0gc3BlYy0+Z3JvdXBpbmc7CisgICAgd2hpbGUgKCpjcCAhPSAnXDAnKSB7CisgICAgICAgIGlmICgqY3ArKyA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorICAgIG4gPSBzdHJsZW4oc3BlYy0+ZG90KTsKKyAgICBpZiAobiA9PSAwIHx8IG4gPiA0KSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0cmxlbihzcGVjLT5zZXApID4gNCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbXBkX3BhcnNlX2ZtdF9zdHIobXBkX3NwZWNfdCAqc3BlYywgY29uc3QgY2hhciAqZm10LCBpbnQgY2FwcykKK3sKKyAgICBjaGFyICpjcCA9IChjaGFyICopZm10OworICAgIGludCBoYXZlX2FsaWduID0gMCwgbjsKKworICAgIC8qIGRlZmF1bHRzICovCisgICAgc3BlYy0+bWluX3dpZHRoID0gMDsKKyAgICBzcGVjLT5wcmVjID0gLTE7CisgICAgc3BlYy0+dHlwZSA9IGNhcHMgPyAnRycgOiAnZyc7CisgICAgc3BlYy0+YWxpZ24gPSAnPic7CisgICAgc3BlYy0+c2lnbiA9ICctJzsKKyAgICBzcGVjLT5kb3QgPSAiIjsKKyAgICBzcGVjLT5zZXAgPSAiIjsKKyAgICBzcGVjLT5ncm91cGluZyA9ICIiOworCisKKyAgICAvKiBwcmVzdW1lIHRoYXQgdGhlIGZpcnN0IGNoYXJhY3RlciBpcyBhIFVURi04IGZpbGwgY2hhcmFjdGVyICovCisgICAgaWYgKChuID0gX21wZF9jb3B5X3V0Zjgoc3BlYy0+ZmlsbCwgY3ApKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogYWxpZ25tZW50IGRpcmVjdGl2ZSwgcHJlZml4ZWQgYnkgYSBmaWxsIGNoYXJhY3RlciAqLworICAgIGlmICgqY3AgJiYgKCooY3ArbikgPT0gJzwnIHx8ICooY3ArbikgPT0gJz4nIHx8CisgICAgICAgICAgICAgICAgKihjcCtuKSA9PSAnPScgfHwgKihjcCtuKSA9PSAnXicpKSB7CisgICAgICAgIGNwICs9IG47CisgICAgICAgIHNwZWMtPmFsaWduID0gKmNwKys7CisgICAgICAgIGhhdmVfYWxpZ24gPSAxOworICAgIH0gLyogYWxpZ25tZW50IGRpcmVjdGl2ZSAqLworICAgIGVsc2UgeworICAgICAgICAvKiBkZWZhdWx0IGZpbGwgY2hhcmFjdGVyICovCisgICAgICAgIHNwZWMtPmZpbGxbMF0gPSAnICc7CisgICAgICAgIHNwZWMtPmZpbGxbMV0gPSAnXDAnOworICAgICAgICBpZiAoKmNwID09ICc8JyB8fCAqY3AgPT0gJz4nIHx8CisgICAgICAgICAgICAqY3AgPT0gJz0nIHx8ICpjcCA9PSAnXicpIHsKKyAgICAgICAgICAgIHNwZWMtPmFsaWduID0gKmNwKys7CisgICAgICAgICAgICBoYXZlX2FsaWduID0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHNpZ24gZm9ybWF0dGluZyAqLworICAgIGlmICgqY3AgPT0gJysnIHx8ICpjcCA9PSAnLScgfHwgKmNwID09ICcgJykgeworICAgICAgICBzcGVjLT5zaWduID0gKmNwKys7CisgICAgfQorCisgICAgLyogemVybyBwYWRkaW5nICovCisgICAgaWYgKCpjcCA9PSAnMCcpIHsKKyAgICAgICAgLyogemVybyBwYWRkaW5nIGltcGxpZXMgYWxpZ25tZW50LCB3aGljaCBzaG91bGQgbm90IGJlCisgICAgICAgICAqIHNwZWNpZmllZCB0d2ljZS4gKi8KKyAgICAgICAgaWYgKGhhdmVfYWxpZ24pIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHNwZWMtPmFsaWduID0gJ3onOworICAgICAgICBzcGVjLT5maWxsWzBdID0gKmNwKys7CisgICAgICAgIHNwZWMtPmZpbGxbMV0gPSAnXDAnOworICAgIH0KKworICAgIC8qIG1pbmltdW0gd2lkdGggKi8KKyAgICBpZiAoaXNkaWdpdCgodWNoYXIpKmNwKSkgeworICAgICAgICBpZiAoKmNwID09ICcwJykgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZXJybm8gPSAwOworICAgICAgICBzcGVjLT5taW5fd2lkdGggPSBtcGRfc3RydG9zc2l6ZShjcCwgJmNwLCAxMCk7CisgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UgfHwgZXJybm8gPT0gRUlOVkFMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHRob3VzYW5kcyBzZXBhcmF0b3IgKi8KKyAgICBpZiAoKmNwID09ICcsJykgeworICAgICAgICBzcGVjLT5kb3QgPSAiLiI7CisgICAgICAgIHNwZWMtPnNlcCA9ICIsIjsKKyAgICAgICAgc3BlYy0+Z3JvdXBpbmcgPSAiXDAwM1wwMDMiOworICAgICAgICBjcCsrOworICAgIH0KKworICAgIC8qIGZyYWN0aW9uIGRpZ2l0cyBvciBzaWduaWZpY2FudCBkaWdpdHMgKi8KKyAgICBpZiAoKmNwID09ICcuJykgeworICAgICAgICBjcCsrOworICAgICAgICBpZiAoIWlzZGlnaXQoKHVjaGFyKSpjcCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgc3BlYy0+cHJlYyA9IG1wZF9zdHJ0b3NzaXplKGNwLCAmY3AsIDEwKTsKKyAgICAgICAgaWYgKGVycm5vID09IEVSQU5HRSB8fCBlcnJubyA9PSBFSU5WQUwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyogdHlwZSAqLworICAgIGlmICgqY3AgPT0gJ0UnIHx8ICpjcCA9PSAnZScgfHwgKmNwID09ICdGJyB8fCAqY3AgPT0gJ2YnIHx8CisgICAgICAgICpjcCA9PSAnRycgfHwgKmNwID09ICdnJyB8fCAqY3AgPT0gJyUnKSB7CisgICAgICAgIHNwZWMtPnR5cGUgPSAqY3ArKzsKKyAgICB9CisgICAgZWxzZSBpZiAoKmNwID09ICdOJyB8fCAqY3AgPT0gJ24nKSB7CisgICAgICAgIC8qIGxvY2FsZSBzcGVjaWZpYyBjb252ZXJzaW9uICovCisgICAgICAgIHN0cnVjdCBsY29udiAqbGM7CisgICAgICAgIC8qIHNlcGFyYXRvciBoYXMgYWxyZWFkeSBiZWVuIHNwZWNpZmllZCAqLworICAgICAgICBpZiAoKnNwZWMtPnNlcCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3BlYy0+dHlwZSA9ICpjcCsrOworICAgICAgICBzcGVjLT50eXBlID0gKHNwZWMtPnR5cGUgPT0gJ04nKSA/ICdHJyA6ICdnJzsKKyAgICAgICAgbGMgPSBsb2NhbGVjb252KCk7CisgICAgICAgIHNwZWMtPmRvdCA9IGxjLT5kZWNpbWFsX3BvaW50OworICAgICAgICBzcGVjLT5zZXAgPSBsYy0+dGhvdXNhbmRzX3NlcDsKKyAgICAgICAgc3BlYy0+Z3JvdXBpbmcgPSBsYy0+Z3JvdXBpbmc7CisgICAgICAgIGlmIChtcGRfdmFsaWRhdGVfbGNvbnYoc3BlYykgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gMDsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisgICAgfQorCisgICAgLyogY2hlY2sgY29ycmVjdG5lc3MgKi8KKyAgICBpZiAoKmNwICE9ICdcMCcpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCBzcGVjLT5taW5fd2lkdGggPD0gTVBEX01BWF9QUkVDLCB3aGljaAorICogaXMgbWFkZSBzdXJlIGluIG1wZF9xZm9ybWF0X3NwZWMuIFRoZW4sIGV2ZW4gd2l0aCBhIHNwZWMgdGhhdCBpbnNlcnRzIGEKKyAqIGZvdXItYnl0ZSBzZXBhcmF0b3IgYWZ0ZXIgZWFjaCBkaWdpdCwgbmJ5dGVzIGluIHRoZSBmb2xsb3dpbmcgc3RydWN0CisgKiBjYW5ub3Qgb3ZlcmZsb3cuCisgKi8KKworLyogTXVsdGlieXRlIHN0cmluZyAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIG1wZF9zc2l6ZV90IG5ieXRlczsgLyogbGVuZ3RoIGluIGJ5dGVzICovCisgICAgbXBkX3NzaXplX3QgbmNoYXJzOyAvKiBsZW5ndGggaW4gY2hhcnMgKi8KKyAgICBtcGRfc3NpemVfdCBjdXI7ICAgIC8qIGN1cnJlbnQgd3JpdGUgaW5kZXggKi8KKyAgICBjaGFyICpkYXRhOworfSBtcGRfbWJzdHJfdDsKKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Jjb3B5KGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYywgbXBkX3NzaXplX3QgbikKK3sKKyAgICB3aGlsZSAoLS1uID49IDApIHsKKyAgICAgICAgZGVzdFtuXSA9IHNyY1tuXTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21ic3RyX2NvcHlfY2hhcihtcGRfbWJzdHJfdCAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBtcGRfc3NpemVfdCBuKQoreworICAgIGRlc3QtPm5ieXRlcyArPSBuOworICAgIGRlc3QtPm5jaGFycyArPSAobiA+IDAgPyAxIDogMCk7CisgICAgZGVzdC0+Y3VyIC09IG47CisKKyAgICBpZiAoZGVzdC0+ZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIF9tcGRfYmNvcHkoZGVzdC0+ZGF0YStkZXN0LT5jdXIsIHNyYywgbik7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tYnN0cl9jb3B5X2FzY2lpKG1wZF9tYnN0cl90ICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgZGVzdC0+bmJ5dGVzICs9IG47CisgICAgZGVzdC0+bmNoYXJzICs9IG47CisgICAgZGVzdC0+Y3VyIC09IG47CisKKyAgICBpZiAoZGVzdC0+ZGF0YSAhPSBOVUxMKSB7CisgICAgICAgIF9tcGRfYmNvcHkoZGVzdC0+ZGF0YStkZXN0LT5jdXIsIHNyYywgbik7CisgICAgfQorfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tYnN0cl9jb3B5X3BhZChtcGRfbWJzdHJfdCAqZGVzdCwgbXBkX3NzaXplX3QgbikKK3sKKyAgICBkZXN0LT5uYnl0ZXMgKz0gbjsKKyAgICBkZXN0LT5uY2hhcnMgKz0gbjsKKyAgICBkZXN0LT5jdXIgLT0gbjsKKworICAgIGlmIChkZXN0LT5kYXRhICE9IE5VTEwpIHsKKyAgICAgICAgY2hhciAqY3AgPSBkZXN0LT5kYXRhICsgZGVzdC0+Y3VyOworICAgICAgICB3aGlsZSAoLS1uID49IDApIHsKKyAgICAgICAgICAgIGNwW25dID0gJzAnOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogQ29weSBhIG51bWVyaWMgc3RyaW5nIHRvIGRlc3QtPmRhdGEsIGFkZGluZyBzZXBhcmF0b3JzIGluIHRoZSBpbnRlZ2VyCisgKiBwYXJ0IGFjY29yZGluZyB0byBzcGVjLT5ncm91cGluZy4gSWYgbGVhZGluZyB6ZXJvIHBhZGRpbmcgaXMgZW5hYmxlZAorICogYW5kIHRoZSByZXN1bHQgaXMgc21hbGxlciB0aGFuIHNwZWMtPm1pbl93aWR0aCwgY29udGludWUgYWRkaW5nIHplcm9zCisgKiBhbmQgc2VwYXJhdG9ycyB1bnRpbCB0aGUgbWluaW11bSB3aWR0aCBpcyByZWFjaGVkLgorICoKKyAqIFRoZSBmaW5hbCBsZW5ndGggb2YgZGVzdC0+ZGF0YSBpcyBzdG9yZWQgaW4gZGVzdC0+bmJ5dGVzLiBUaGUgbnVtYmVyCisgKiBvZiBVVEYtOCBjaGFyYWN0ZXJzIGlzIHN0b3JlZCBpbiBkZXN0LT5uY2hhcnMuCisgKgorICogRmlyc3QgcnVuIChkZXN0LT5kYXRhID09IE5VTEwpOiBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgcmVzdWx0CisgKiBzdHJpbmcgYW5kIHN0b3JlIGl0IGluIGRlc3QtPm5ieXRlcy4KKyAqCisgKiBTZWNvbmQgcnVuICh3cml0ZSB0byBkZXN0LT5kYXRhKTogZGF0YSBpcyB3cml0dGVuIGluIGNodW5rcyBhbmQgaW4KKyAqIHJldmVyc2Ugb3JkZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG51bWVyaWMgc3RyaW5nLgorICovCitzdGF0aWMgdm9pZAorX21wZF9hZGRfc2VwX2RvdChtcGRfbWJzdHJfdCAqZGVzdCwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc2lnbiwgLyogbG9jYXRpb24gb2Ygb3B0aW9uYWwgc2lnbiAqLworICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsIG1wZF9zc2l6ZV90IG5fc3JjLCAvKiBpbnRlZ2VyIHBhcnQgYW5kIGxlbmd0aCAqLworICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkb3QsIC8qIGxvY2F0aW9uIG9mIG9wdGlvbmFsIGRlY2ltYWwgcG9pbnQgKi8KKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVzdCwgbXBkX3NzaXplX3Qgbl9yZXN0LCAvKiByZW1haW5pbmcgcGFydCBhbmQgbGVuZ3RoICovCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMpCit7CisgICAgbXBkX3NzaXplX3Qgbl9zZXAsIG5fc2lnbiwgY29uc3VtZTsKKyAgICBjb25zdCBjaGFyICpnOworICAgIGludCBwYWQgPSAwOworCisgICAgbl9zaWduID0gc2lnbiA/IDEgOiAwOworICAgIG5fc2VwID0gKG1wZF9zc2l6ZV90KXN0cmxlbihzcGVjLT5zZXApOworICAgIC8qIEluaXRpYWwgd3JpdGUgaW5kZXg6IHNldCB0byBsb2NhdGlvbiBvZiAnXDAnIGluIHRoZSBvdXRwdXQgc3RyaW5nLgorICAgICAqIElycmVsZXZhbnQgZm9yIHRoZSBmaXJzdCBydW4uICovCisgICAgZGVzdC0+Y3VyID0gZGVzdC0+bmJ5dGVzOworICAgIGRlc3QtPm5ieXRlcyA9IGRlc3QtPm5jaGFycyA9IDA7CisKKyAgICBfbWJzdHJfY29weV9hc2NpaShkZXN0LCByZXN0LCBuX3Jlc3QpOworCisgICAgaWYgKGRvdCkgeworICAgICAgICBfbWJzdHJfY29weV9jaGFyKGRlc3QsIGRvdCwgKG1wZF9zc2l6ZV90KXN0cmxlbihkb3QpKTsKKyAgICB9CisKKyAgICBnID0gc3BlYy0+Z3JvdXBpbmc7CisgICAgY29uc3VtZSA9ICpnOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIElmIHRoZSBncm91cCBsZW5ndGggaXMgMCBvciBDSEFSX01BWCBvciBncmVhdGVyIHRoYW4gdGhlCisgICAgICAgICAqIG51bWJlciBvZiBzb3VyY2UgYnl0ZXMsIGNvbnN1bWUgYWxsIHJlbWFpbmluZyBieXRlcy4gKi8KKyAgICAgICAgaWYgKCpnID09IDAgfHwgKmcgPT0gQ0hBUl9NQVggfHwgY29uc3VtZSA+IG5fc3JjKSB7CisgICAgICAgICAgICBjb25zdW1lID0gbl9zcmM7CisgICAgICAgIH0KKyAgICAgICAgbl9zcmMgLT0gY29uc3VtZTsKKyAgICAgICAgaWYgKHBhZCkgeworICAgICAgICAgICAgX21ic3RyX2NvcHlfcGFkKGRlc3QsIGNvbnN1bWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX21ic3RyX2NvcHlfYXNjaWkoZGVzdCwgc3JjK25fc3JjLCBjb25zdW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChuX3NyYyA9PSAwKSB7CisgICAgICAgICAgICAvKiBFaXRoZXIgdGhlIHJlYWwgc291cmNlIG9mIGludHBhcnQgZGlnaXRzIG9yIHRoZSB2aXJ0dWFsCisgICAgICAgICAgICAgKiBzb3VyY2Ugb2YgcGFkZGluZyB6ZXJvcyBpcyBleGhhdXN0ZWQuICovCisgICAgICAgICAgICBpZiAoc3BlYy0+YWxpZ24gPT0gJ3onICYmCisgICAgICAgICAgICAgICAgZGVzdC0+bmNoYXJzICsgbl9zaWduIDwgc3BlYy0+bWluX3dpZHRoKSB7CisgICAgICAgICAgICAgICAgLyogWmVybyBwYWRkaW5nIGlzIHNldCBhbmQgbGVuZ3RoIDwgbWluX3dpZHRoOgorICAgICAgICAgICAgICAgICAqIEdlbmVyYXRlIG5fc3JjIGFkZGl0aW9uYWwgY2hhcmFjdGVycy4gKi8KKyAgICAgICAgICAgICAgICBuX3NyYyA9IHNwZWMtPm1pbl93aWR0aCAtIChkZXN0LT5uY2hhcnMgKyBuX3NpZ24pOworICAgICAgICAgICAgICAgIC8qIE5leHQgaXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAqICAgY2FzZSAqZyA9PSAwIHx8ICpnID09IENIQVJfTUFYOgorICAgICAgICAgICAgICAgICAqICAgICAgY29uc3VtZSBhbGwgcGFkZGluZyBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICogICBjYXNlIGNvbnN1bWUgPCBnKjoKKyAgICAgICAgICAgICAgICAgKiAgICAgIGZpbGwgcmVtYWluZGVyIG9mIGN1cnJlbnQgZ3JvdXAKKyAgICAgICAgICAgICAgICAgKiAgIGNhc2UgY29uc3VtZSA9PSBnKgorICAgICAgICAgICAgICAgICAqICAgICAgY29weWluZyBpcyBhIG5vLW9wICovCisgICAgICAgICAgICAgICAgY29uc3VtZSA9ICpnIC0gY29uc3VtZTsKKyAgICAgICAgICAgICAgICAvKiBTd2l0Y2ggb24gdmlydHVhbCBzb3VyY2Ugb2YgemVyb3MuICovCisgICAgICAgICAgICAgICAgcGFkID0gMTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5fc2VwID4gMCkgeworICAgICAgICAgICAgLyogSWYgcGFkZGluZyBpcyBzd2l0Y2hlZCBvbiwgc2VwYXJhdG9ycyBhcmUgY291bnRlZAorICAgICAgICAgICAgICogYXMgcGFkZGluZyBjaGFyYWN0ZXJzLiBUaGlzIHJ1bGUgZG9lcyBub3QgYXBwbHkgaWYKKyAgICAgICAgICAgICAqIHRoZSBzZXBhcmF0b3Igd291bGQgYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUKKyAgICAgICAgICAgICAqIHJlc3VsdCBzdHJpbmcuICovCisgICAgICAgICAgICBpZiAocGFkICYmIG5fc3JjID4gMSkgbl9zcmMgLT0gMTsKKyAgICAgICAgICAgIF9tYnN0cl9jb3B5X2NoYXIoZGVzdCwgc3BlYy0+c2VwLCBuX3NlcCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBJZiBub24tTlVMLCB1c2UgdGhlIG5leHQgdmFsdWUgZm9yIGdyb3VwaW5nLiAqLworICAgICAgICBpZiAoKmcgJiYgKihnKzEpKSBnKys7CisgICAgICAgIGNvbnN1bWUgPSAqZzsKKyAgICB9CisKKyAgICBpZiAoc2lnbikgeworICAgICAgICBfbWJzdHJfY29weV9hc2NpaShkZXN0LCBzaWduLCAxKTsKKyAgICB9CisKKyAgICBpZiAoZGVzdC0+ZGF0YSkgeworICAgICAgICBkZXN0LT5kYXRhW2Rlc3QtPm5ieXRlc10gPSAnXDAnOworICAgIH0KK30KKworLyoKKyAqIENvbnZlcnQgYSBudW1lcmljLXN0cmluZyB0byBpdHMgbG9jYWxlLXNwZWNpZmljIGFwcGVhcmFuY2UuCisgKiBUaGUgc3RyaW5nIG11c3QgaGF2ZSBvbmUgb2YgdGhlc2UgZm9ybXM6CisgKgorICogICAgIDEpIFtzaWduXSBkaWdpdHMgW2V4cG9uZW50LXBhcnRdCisgKiAgICAgMikgW3NpZ25dIGRpZ2l0cyAnLicgW2RpZ2l0c10gW2V4cG9uZW50LXBhcnRdCisgKgorICogTm90IGFsbG93ZWQsIHNpbmNlIF9tcGRfdG9fc3RyaW5nKCkgbmV2ZXIgcmV0dXJucyB0aGlzIGZvcm06CisgKgorICogICAgIDMpIFtzaWduXSAnLicgZGlnaXRzIFtleHBvbmVudC1wYXJ0XQorICogCisgKiBJbnB1dDogcmVzdWx0LT5kYXRhIDo9IG9yaWdpbmFsIG51bWVyaWMgc3RyaW5nIChBU0NJSSkKKyAqICAgICAgICByZXN1bHQtPmJ5dGVzIDo9IHN0cmxlbihyZXN1bHQtPmRhdGEpCisgKiAgICAgICAgcmVzdWx0LT5uY2hhcnMgOj0gc3RybGVuKHJlc3VsdC0+ZGF0YSkKKyAqCisgKiBPdXRwdXQ6IHJlc3VsdC0+ZGF0YSA6PSBtb2RpZmllZCBvciBvcmlnaW5hbCBzdHJpbmcKKyAqICAgICAgICAgcmVzdWx0LT5ieXRlcyA6PSBzdHJsZW4ocmVzdWx0LT5kYXRhKQorICogICAgICAgICByZXN1bHQtPm5jaGFycyA6PSBudW1iZXIgb2YgY2hhcmFjdGVycyAocG9zc2libHkgVVRGLTgpCisgKi8KK3N0YXRpYyBpbnQKK19tcGRfYXBwbHlfbGNvbnYobXBkX21ic3RyX3QgKnJlc3VsdCwgY29uc3QgbXBkX3NwZWNfdCAqc3BlYywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBjb25zdCBjaGFyICpzaWduID0gTlVMTCwgKmludHBhcnQgPSBOVUxMLCAqZG90ID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICpyZXN0LCAqZHA7CisgICAgY2hhciAqZGVjc3RyaW5nOworICAgIG1wZF9zc2l6ZV90IG5faW50LCBuX3Jlc3Q7CisKKyAgICAvKiBvcmlnaW5hbCBudW1lcmljIHN0cmluZyAqLworICAgIGRwID0gcmVzdWx0LT5kYXRhOworCisgICAgLyogc2lnbiAqLworICAgIGlmICgqZHAgPT0gJysnIHx8ICpkcCA9PSAnLScgfHwgKmRwID09ICcgJykgeworICAgICAgICBzaWduID0gZHArKzsKKyAgICB9CisgICAgLyogaW50ZWdlciBwYXJ0ICovCisgICAgYXNzZXJ0KGlzZGlnaXQoKHVjaGFyKSpkcCkpOworICAgIGludHBhcnQgPSBkcCsrOworICAgIHdoaWxlIChpc2RpZ2l0KCh1Y2hhcikqZHApKSB7CisgICAgICAgIGRwKys7CisgICAgfQorICAgIG5faW50ID0gKG1wZF9zc2l6ZV90KShkcC1pbnRwYXJ0KTsKKyAgICAvKiBkZWNpbWFsIHBvaW50ICovCisgICAgaWYgKCpkcCA9PSAnLicpIHsKKyAgICAgICAgZHArKzsgZG90ID0gc3BlYy0+ZG90OworICAgIH0KKyAgICAvKiByZXN0ICovCisgICAgcmVzdCA9IGRwOworICAgIG5fcmVzdCA9IHJlc3VsdC0+bmJ5dGVzIC0gKG1wZF9zc2l6ZV90KShkcC1yZXN1bHQtPmRhdGEpOworCisgICAgaWYgKGRvdCA9PSBOVUxMICYmICgqc3BlYy0+c2VwID09ICdcMCcgfHwgKnNwZWMtPmdyb3VwaW5nID09ICdcMCcpKSB7CisgICAgICAgIC8qIF9tcGRfYWRkX3NlcF9kb3QoKSB3b3VsZCBub3QgY2hhbmdlIGFueXRoaW5nICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgbmV3IGRlY2ltYWwgc3RyaW5nIGFmdGVyIGluc2VydGluZyB0aGUKKyAgICAgKiBkZWNpbWFsIHBvaW50LCBvcHRpb25hbCBzZXBhcmF0b3JzIGFuZCBvcHRpb25hbCBwYWRkaW5nLiAqLworICAgIGRlY3N0cmluZyA9IHJlc3VsdC0+ZGF0YTsKKyAgICByZXN1bHQtPmRhdGEgPSBOVUxMOworICAgIF9tcGRfYWRkX3NlcF9kb3QocmVzdWx0LCBzaWduLCBpbnRwYXJ0LCBuX2ludCwgZG90LAorICAgICAgICAgICAgICAgICAgICAgcmVzdCwgbl9yZXN0LCBzcGVjKTsKKworICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9hbGxvYyhyZXN1bHQtPm5ieXRlcysxLCAxKTsKKyAgICBpZiAocmVzdWx0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBQZXJmb3JtIGFjdHVhbCB3cml0ZXMuICovCisgICAgX21wZF9hZGRfc2VwX2RvdChyZXN1bHQsIHNpZ24sIGludHBhcnQsIG5faW50LCBkb3QsCisgICAgICAgICAgICAgICAgICAgICByZXN0LCBuX3Jlc3QsIHNwZWMpOworCisgICAgbXBkX2ZyZWUoZGVjc3RyaW5nKTsKKyAgICByZXR1cm4gMTsKK30KKworLyogQWRkIHBhZGRpbmcgdG8gdGhlIGZvcm1hdHRlZCBzdHJpbmcgaWYgbmVjZXNzYXJ5LiAqLworc3RhdGljIGludAorX21wZF9hZGRfcGFkKG1wZF9tYnN0cl90ICpyZXN1bHQsIGNvbnN0IG1wZF9zcGVjX3QgKnNwZWMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKHJlc3VsdC0+bmNoYXJzIDwgc3BlYy0+bWluX3dpZHRoKSB7CisgICAgICAgIG1wZF9zc2l6ZV90IGFkZF9jaGFycywgYWRkX2J5dGVzOworICAgICAgICBzaXplX3QgbHBhZCA9IDAsIHJwYWQgPSAwOworICAgICAgICBzaXplX3Qgbl9maWxsLCBsZW4sIGksIGo7CisgICAgICAgIGNoYXIgYWxpZ24gPSBzcGVjLT5hbGlnbjsKKyAgICAgICAgdWludDhfdCBlcnIgPSAwOworICAgICAgICBjaGFyICpjcDsKKworICAgICAgICBuX2ZpbGwgPSBzdHJsZW4oc3BlYy0+ZmlsbCk7CisgICAgICAgIGFkZF9jaGFycyA9IChzcGVjLT5taW5fd2lkdGggLSByZXN1bHQtPm5jaGFycyk7CisgICAgICAgIC8qIG1heCB2YWx1ZTogTVBEX01BWF9QUkVDICogNCAqLworICAgICAgICBhZGRfYnl0ZXMgPSBhZGRfY2hhcnMgKiAobXBkX3NzaXplX3Qpbl9maWxsOworCisgICAgICAgIGNwID0gcmVzdWx0LT5kYXRhID0gbXBkX3JlYWxsb2MocmVzdWx0LT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+bmJ5dGVzK2FkZF9ieXRlcysxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAqcmVzdWx0LT5kYXRhLCAmZXJyKTsKKyAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICAgICAgbXBkX2ZyZWUocmVzdWx0LT5kYXRhKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFsaWduID09ICd6JykgeworICAgICAgICAgICAgYWxpZ24gPSAnPSc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWxpZ24gPT0gJzwnKSB7CisgICAgICAgICAgICBycGFkID0gYWRkX2NoYXJzOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFsaWduID09ICc+JyB8fCBhbGlnbiA9PSAnPScpIHsKKyAgICAgICAgICAgIGxwYWQgPSBhZGRfY2hhcnM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7IC8qIGFsaWduID09ICdeJyAqLworICAgICAgICAgICAgbHBhZCA9IGFkZF9jaGFycy8yOworICAgICAgICAgICAgcnBhZCA9IGFkZF9jaGFycy1scGFkOworICAgICAgICB9CisKKyAgICAgICAgbGVuID0gcmVzdWx0LT5uYnl0ZXM7CisgICAgICAgIGlmIChhbGlnbiA9PSAnPScgJiYgKCpjcCA9PSAnLScgfHwgKmNwID09ICcrJyB8fCAqY3AgPT0gJyAnKSkgeworICAgICAgICAgICAgLyogbGVhdmUgc2lnbiBpbiB0aGUgbGVhZGluZyBwb3NpdGlvbiAqLworICAgICAgICAgICAgY3ArKzsgbGVuLS07CisgICAgICAgIH0KKworICAgICAgICBtZW1tb3ZlKGNwK25fZmlsbCpscGFkLCBjcCwgbGVuKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGxwYWQ7IGkrKykgeworICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fZmlsbDsgaisrKSB7CisgICAgICAgICAgICAgICAgY3BbaSpuX2ZpbGwral0gPSBzcGVjLT5maWxsW2pdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNwICs9IChuX2ZpbGwqbHBhZCArIGxlbik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBycGFkOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX2ZpbGw7IGorKykgeworICAgICAgICAgICAgICAgIGNwW2kqbl9maWxsK2pdID0gc3BlYy0+ZmlsbFtqXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC0+bmJ5dGVzICs9IGFkZF9ieXRlczsKKyAgICAgICAgcmVzdWx0LT5uY2hhcnMgKz0gYWRkX2NoYXJzOworICAgICAgICByZXN1bHQtPmRhdGFbcmVzdWx0LT5uYnl0ZXNdID0gJ1wwJzsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworLyogUm91bmQgYSBudW1iZXIgdG8gcHJlYyBkaWdpdHMuIFRoZSBhZGp1c3RlZCBleHBvbmVudCBzdGF5cyB0aGUgc2FtZQorICAgb3IgaW5jcmVhc2VzIGJ5IG9uZSBpZiByb3VuZGluZyB1cCBjcm9zc2VzIGEgcG93ZXIgb2YgdGVuIGJvdW5kYXJ5LgorICAgSWYgcmVzdWx0LT5kaWdpdHMgd291bGQgZXhjZWVkIE1QRF9NQVhfUFJFQysxLCBNUERfSW52YWxpZF9vcGVyYXRpb24KKyAgIGlzIHNldCBhbmQgdGhlIHJlc3VsdCBpcyBOYU4uICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcm91bmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IHByZWMsCisgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBleHAgPSBhLT5leHAgKyBhLT5kaWdpdHMgLSBwcmVjOworCisgICAgaWYgKHByZWMgPD0gMCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgcmV0dXJuOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICByZXR1cm47IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9CisKKyAgICBtcGRfcXJlc2NhbGVfZm10KHJlc3VsdCwgYSwgZXhwLCBjdHgsIHN0YXR1cyk7CisgICAgaWYgKHJlc3VsdC0+ZGlnaXRzID4gcHJlYykgeworICAgICAgICBtcGRfcXJlc2NhbGVfZm10KHJlc3VsdCwgcmVzdWx0LCBleHArMSwgY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG1wZF90LCBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvICdzcGVjJy4KKyAqIFRoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyBhc3N1bWVkIHRvIGJlIHZhbGlkLiBNZW1vcnkgZXJyb3JzIGFyZSBpbmRpY2F0ZWQKKyAqIGFzIHVzdWFsLiBUaGlzIGZ1bmN0aW9uIGlzIHF1aWV0LgorICovCitjaGFyICoKK21wZF9xZm9ybWF0X3NwZWMoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgbXBkX3NwZWNfdCAqc3BlYywKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgZHRbTVBEX01JTkFMTE9DX01BWF07CisgICAgbXBkX3QgdG1wID0ge01QRF9TVEFUSUN8TVBEX1NUQVRJQ19EQVRBLDAsMCwwLE1QRF9NSU5BTExPQ19NQVgsZHR9OworICAgIG1wZF9zc2l6ZV90IGRwbGFjZSA9IE1QRF9ERUZBVUxUX0RPVFBMQUNFOworICAgIG1wZF9tYnN0cl90IHJlc3VsdDsKKyAgICBtcGRfc3BlY190IHN0YWNrc3BlYzsKKyAgICBjaGFyIHR5cGUgPSBzcGVjLT50eXBlOworICAgIGludCBmbGFncyA9IDA7CisKKworICAgIGlmIChzcGVjLT5taW5fd2lkdGggPiBNUERfTUFYX1BSRUMpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChpc3VwcGVyKCh1Y2hhcil0eXBlKSkgeworICAgICAgICB0eXBlID0gdG9sb3dlcigodWNoYXIpdHlwZSk7CisgICAgICAgIGZsYWdzIHw9IE1QRF9GTVRfVVBQRVI7CisgICAgfQorICAgIGlmIChzcGVjLT5zaWduID09ICcgJykgeworICAgICAgICBmbGFncyB8PSBNUERfRk1UX1NJR05fU1BBQ0U7CisgICAgfQorICAgIGVsc2UgaWYgKHNwZWMtPnNpZ24gPT0gJysnKSB7CisgICAgICAgIGZsYWdzIHw9IE1QRF9GTVRfU0lHTl9QTFVTOworICAgIH0KKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGRlYykpIHsKKyAgICAgICAgaWYgKHNwZWMtPmFsaWduID09ICd6JykgeworICAgICAgICAgICAgc3RhY2tzcGVjID0gKnNwZWM7CisgICAgICAgICAgICBzdGFja3NwZWMuZmlsbFswXSA9ICcgJzsKKyAgICAgICAgICAgIHN0YWNrc3BlYy5maWxsWzFdID0gJ1wwJzsKKyAgICAgICAgICAgIHN0YWNrc3BlYy5hbGlnbiA9ICc+JzsKKyAgICAgICAgICAgIHNwZWMgPSAmc3RhY2tzcGVjOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICAgICAgbXBkX3NzaXplX3QgcHJlYzsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSAnZyc6IGZsYWdzIHw9IE1QRF9GTVRfVE9TQ0k7IGJyZWFrOworICAgICAgICBjYXNlICdlJzogZmxhZ3MgfD0gTVBEX0ZNVF9FWFA7IGJyZWFrOworICAgICAgICBjYXNlICclJzogZmxhZ3MgfD0gTVBEX0ZNVF9QRVJDRU5UOworICAgICAgICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkoJnRtcCwgZGVjLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB0bXAuZXhwICs9IDI7CisgICAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgICAgICAgdHlwZSA9ICdmJzsgLyogZmFsbCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgJ2YnOiBmbGFncyB8PSBNUERfRk1UX0ZJWEVEOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDogYWJvcnQoKTsgLyogZGVidWc6IEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzcGVjLT5wcmVjID49IDApIHsKKyAgICAgICAgICAgIGlmIChzcGVjLT5wcmVjID4gTVBEX01BWF9QUkVDKSB7CisgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlICdnJzoKKyAgICAgICAgICAgICAgICBwcmVjID0gKHNwZWMtPnByZWMgPT0gMCkgPyAxIDogc3BlYy0+cHJlYzsKKyAgICAgICAgICAgICAgICBpZiAoZGVjLT5kaWdpdHMgPiBwcmVjKSB7CisgICAgICAgICAgICAgICAgICAgIF9tcGRfcm91bmQoJnRtcCwgZGVjLCBwcmVjLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICAgICAgICAgIGlmIChtcGRfaXN6ZXJvKGRlYykpIHsKKyAgICAgICAgICAgICAgICAgICAgZHBsYWNlID0gMS1zcGVjLT5wcmVjOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgX21wZF9yb3VuZCgmdG1wLCBkZWMsIHNwZWMtPnByZWMrMSwgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjID0gJnRtcDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgICAgICBtcGRfcXJlc2NhbGUoJnRtcCwgZGVjLCAtc3BlYy0+cHJlYywgY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAgICAgZGVjID0gJnRtcDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlID09ICdmJykgeworICAgICAgICAgICAgaWYgKG1wZF9pc3plcm8oZGVjKSAmJiBkZWMtPmV4cCA+IDApIHsKKyAgICAgICAgICAgICAgICBtcGRfcXJlc2NhbGUoJnRtcCwgZGVjLCAwLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBkZWMgPSAmdG1wOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKHdvcmtzdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgKnN0YXR1cyB8PSAod29ya3N0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIEF0IHRoaXMgcG9pbnQsIGZvciBhbGwgc2NhbGVkIG9yIG5vbi1zY2FsZWQgZGVjaW1hbHM6CisgICAgICogICAxKSAxIDw9IGRpZ2l0cyA8PSBNQVhfUFJFQysxCisgICAgICogICAyKSBhZGpleHAoc2NhbGVkKSA9IGFkamV4cChvcmlnKSBbKzFdCisgICAgICogICAzKSAgIGNhc2UgJ2cnOiBNSU5fRVRJTlkgPD0gZXhwIDw9IE1BWF9FTUFYKzEKKyAgICAgKiAgICAgICAgY2FzZSAnZSc6IE1JTl9FVElOWS1NQVhfUFJFQyA8PSBleHAgPD0gTUFYX0VNQVgrMQorICAgICAqICAgICAgICBjYXNlICdmJzogTUlOX0VUSU5ZIDw9IGV4cCA8PSBNQVhfRU1BWCsxCisgICAgICogICA0KSBtYXggbWVtb3J5IGFsbG9jIGluIF9tcGRfdG9fc3RyaW5nOgorICAgICAqICAgICAgICBjYXNlICdnJzogTUFYX1BSRUMrMzYKKyAgICAgKiAgICAgICAgY2FzZSAnZSc6IE1BWF9QUkVDKzM2CisgICAgICogICAgICAgIGNhc2UgJ2YnOiAyKk1QRF9NQVhfUFJFQyszMAorICAgICAqLworICAgIHJlc3VsdC5uYnl0ZXMgPSBfbXBkX3RvX3N0cmluZygmcmVzdWx0LmRhdGEsIGRlYywgZmxhZ3MsIGRwbGFjZSk7CisgICAgcmVzdWx0Lm5jaGFycyA9IHJlc3VsdC5uYnl0ZXM7CisgICAgaWYgKHJlc3VsdC5uYnl0ZXMgPCAwKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKnNwZWMtPmRvdCAhPSAnXDAnICYmICFtcGRfaXNzcGVjaWFsKGRlYykpIHsKKyAgICAgICAgaWYgKHJlc3VsdC5uY2hhcnMgPiBNUERfTUFYX1BSRUMrMzYpIHsKKyAgICAgICAgICAgIC8qIFNpbmNlIGEgZ3JvdXAgbGVuZ3RoIG9mIG9uZSBpcyBub3QgZXhwbGljaXRseQorICAgICAgICAgICAgICogZGlzYWxsb3dlZCwgZW5zdXJlIHRoYXQgaXQgaXMgYWx3YXlzIHBvc3NpYmxlIHRvCisgICAgICAgICAgICAgKiBpbnNlcnQgYSBmb3VyIGJ5dGUgc2VwYXJhdG9yIGFmdGVyIGVhY2ggZGlnaXQuICovCisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIG1wZF9mcmVlKHJlc3VsdC5kYXRhKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFfbXBkX2FwcGx5X2xjb252KCZyZXN1bHQsIHNwZWMsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BlYy0+bWluX3dpZHRoKSB7CisgICAgICAgIGlmICghX21wZF9hZGRfcGFkKCZyZXN1bHQsIHNwZWMsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIHJldHVybiByZXN1bHQuZGF0YTsKKworZXJyb3I6CisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworY2hhciAqCittcGRfcWZvcm1hdChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBjaGFyICpmbXQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NwZWNfdCBzcGVjOworCisgICAgaWYgKCFtcGRfcGFyc2VfZm10X3N0cigmc3BlYywgZm10LCAxKSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9xZm9ybWF0X3NwZWMoZGVjLCAmc3BlYywgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogVGhlIHNwZWNpZmljYXRpb24gaGFzIGEgKmNvbmRpdGlvbiogY2FsbGVkIEludmFsaWRfb3BlcmF0aW9uIGFuZCBhbgorICogSUVFRSAqc2lnbmFsKiBjYWxsZWQgSW52YWxpZF9vcGVyYXRpb24uIFRoZSBmb3JtZXIgY29ycmVzcG9uZHMgdG8KKyAqIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgdGhlIGxhdHRlciB0byBNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbi4KKyAqIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIGNvbXByaXNlcyB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogW01QRF9Db252ZXJzaW9uX3N5bnRheCwgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsCisgKiAgTVBEX0ZwdV9lcnJvciwgTVBEX0ludmFsaWRfY29udGV4dCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLAorICogIE1QRF9NYWxsb2NfZXJyb3JdCisgKgorICogSW4gdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMsICdmbGFnJyBkZW5vdGVzIHRoZSBjb25kaXRpb24sICdzaWduYWwnCisgKiBkZW5vdGVzIHRoZSBJRUVFIHNpZ25hbC4KKyAqLworCitzdGF0aWMgY29uc3QgY2hhciAqbXBkX2ZsYWdfc3RyaW5nW01QRF9OVU1fRkxBR1NdID0geworICAgICJDbGFtcGVkIiwKKyAgICAiQ29udmVyc2lvbl9zeW50YXgiLAorICAgICJEaXZpc2lvbl9ieV96ZXJvIiwKKyAgICAiRGl2aXNpb25faW1wb3NzaWJsZSIsCisgICAgIkRpdmlzaW9uX3VuZGVmaW5lZCIsCisgICAgIkZwdV9lcnJvciIsCisgICAgIkluZXhhY3QiLAorICAgICJJbnZhbGlkX2NvbnRleHQiLAorICAgICJJbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIk1hbGxvY19lcnJvciIsCisgICAgIk5vdF9pbXBsZW1lbnRlZCIsCisgICAgIk92ZXJmbG93IiwKKyAgICAiUm91bmRlZCIsCisgICAgIlN1Ym5vcm1hbCIsCisgICAgIlVuZGVyZmxvdyIsCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqbXBkX3NpZ25hbF9zdHJpbmdbTVBEX05VTV9GTEFHU10gPSB7CisgICAgIkNsYW1wZWQiLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiRGl2aXNpb25fYnlfemVybyIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIkluZXhhY3QiLAorICAgICJJRUVFX0ludmFsaWRfb3BlcmF0aW9uIiwKKyAgICAiSUVFRV9JbnZhbGlkX29wZXJhdGlvbiIsCisgICAgIklFRUVfSW52YWxpZF9vcGVyYXRpb24iLAorICAgICJOb3RfaW1wbGVtZW50ZWQiLAorICAgICJPdmVyZmxvdyIsCisgICAgIlJvdW5kZWQiLAorICAgICJTdWJub3JtYWwiLAorICAgICJVbmRlcmZsb3ciLAorfTsKKworLyogcHJpbnQgY29uZGl0aW9ucyB0byBidWZmZXIsIHNlcGFyYXRlZCBieSBzcGFjZXMgKi8KK2ludAorbXBkX3NucHJpbnRfZmxhZ3MoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBjaGFyICpjcDsKKyAgICBpbnQgbiwgajsKKworICAgIGFzc2VydChubWVtYiA+PSBNUERfTUFYX0ZMQUdfU1RSSU5HKTsKKworICAgICpkZXN0ID0gJ1wwJzsgY3AgPSBkZXN0OworICAgIGZvciAoaiA9IDA7IGogPCBNUERfTlVNX0ZMQUdTOyBqKyspIHsKKyAgICAgICAgaWYgKGZsYWdzICYgKDFVPDxqKSkgeworICAgICAgICAgICAgbiA9IHNucHJpbnRmKGNwLCBubWVtYiwgIiVzICIsIG1wZF9mbGFnX3N0cmluZ1tqXSk7CisgICAgICAgICAgICBpZiAobiA8IDAgfHwgbiA+PSBubWVtYikgcmV0dXJuIC0xOworICAgICAgICAgICAgY3AgKz0gbjsgbm1lbWIgLT0gbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjcCAhPSBkZXN0KSB7CisgICAgICAgICooLS1jcCkgPSAnXDAnOworICAgIH0KKworICAgIHJldHVybiAoaW50KShjcC1kZXN0KTsKK30KKworLyogcHJpbnQgY29uZGl0aW9ucyB0byBidWZmZXIsIGluIGxpc3QgZm9ybSAqLworaW50CittcGRfbHNucHJpbnRfZmxhZ3MoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncywgY29uc3QgY2hhciAqZmxhZ19zdHJpbmdbXSkKK3sKKyAgICBjaGFyICpjcDsKKyAgICBpbnQgbiwgajsKKworICAgIGFzc2VydChubWVtYiA+PSBNUERfTUFYX0ZMQUdfTElTVCk7CisgICAgaWYgKGZsYWdfc3RyaW5nID09IE5VTEwpIHsKKyAgICAgICAgZmxhZ19zdHJpbmcgPSBtcGRfZmxhZ19zdHJpbmc7CisgICAgfQorCisgICAgKmRlc3QgPSAnWyc7CisgICAgKihkZXN0KzEpID0gJ1wwJzsKKyAgICBjcCA9IGRlc3QrMTsKKyAgICAtLW5tZW1iOworCisgICAgZm9yIChqID0gMDsgaiA8IE1QRF9OVU1fRkxBR1M7IGorKykgeworICAgICAgICBpZiAoZmxhZ3MgJiAoMVU8PGopKSB7CisgICAgICAgICAgICBuID0gc25wcmludGYoY3AsIG5tZW1iLCAiJXMsICIsIGZsYWdfc3RyaW5nW2pdKTsKKyAgICAgICAgICAgIGlmIChuIDwgMCB8fCBuID49IG5tZW1iKSByZXR1cm4gLTE7CisgICAgICAgICAgICBjcCArPSBuOyBubWVtYiAtPSBuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogZXJhc2UgdGhlIGxhc3QgIiwgIiAqLworICAgIGlmIChjcCAhPSBkZXN0KzEpIHsKKyAgICAgICAgY3AgLT0gMjsKKyAgICB9CisKKyAgICAqY3ArKyA9ICddJzsKKyAgICAqY3AgPSAnXDAnOworCisgICAgcmV0dXJuIChpbnQpKGNwLWRlc3QpOyAvKiBzdHJsZW4sIHdpdGhvdXQgTlVMIHRlcm1pbmF0b3IgKi8KK30KKworLyogcHJpbnQgc2lnbmFscyB0byBidWZmZXIsIGluIGxpc3QgZm9ybSAqLworaW50CittcGRfbHNucHJpbnRfc2lnbmFscyhjaGFyICpkZXN0LCBpbnQgbm1lbWIsIHVpbnQzMl90IGZsYWdzLCBjb25zdCBjaGFyICpzaWduYWxfc3RyaW5nW10pCit7CisgICAgY2hhciAqY3A7CisgICAgaW50IG4sIGo7CisgICAgaW50IGllZWVfaW52YWxpZF9kb25lID0gMDsKKworICAgIGFzc2VydChubWVtYiA+PSBNUERfTUFYX1NJR05BTF9MSVNUKTsKKyAgICBpZiAoc2lnbmFsX3N0cmluZyA9PSBOVUxMKSB7CisgICAgICAgIHNpZ25hbF9zdHJpbmcgPSBtcGRfc2lnbmFsX3N0cmluZzsKKyAgICB9CisKKyAgICAqZGVzdCA9ICdbJzsKKyAgICAqKGRlc3QrMSkgPSAnXDAnOworICAgIGNwID0gZGVzdCsxOworICAgIC0tbm1lbWI7CisKKyAgICBmb3IgKGogPSAwOyBqIDwgTVBEX05VTV9GTEFHUzsgaisrKSB7CisgICAgICAgIHVpbnQzMl90IGYgPSBmbGFncyAmICgxVTw8aik7CisgICAgICAgIGlmIChmKSB7CisgICAgICAgICAgICBpZiAoZiZNUERfSUVFRV9JbnZhbGlkX29wZXJhdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChpZWVlX2ludmFsaWRfZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWVlZV9pbnZhbGlkX2RvbmUgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbiA9IHNucHJpbnRmKGNwLCBubWVtYiwgIiVzLCAiLCBzaWduYWxfc3RyaW5nW2pdKTsKKyAgICAgICAgICAgIGlmIChuIDwgMCB8fCBuID49IG5tZW1iKSByZXR1cm4gLTE7CisgICAgICAgICAgICBjcCArPSBuOyBubWVtYiAtPSBuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogZXJhc2UgdGhlIGxhc3QgIiwgIiAqLworICAgIGlmIChjcCAhPSBkZXN0KzEpIHsKKyAgICAgICAgY3AgLT0gMjsKKyAgICB9CisKKyAgICAqY3ArKyA9ICddJzsKKyAgICAqY3AgPSAnXDAnOworCisgICAgcmV0dXJuIChpbnQpKGNwLWRlc3QpOyAvKiBzdHJsZW4sIHdpdGhvdXQgTlVMIHRlcm1pbmF0b3IgKi8KK30KKworLyogVGhlIGZvbGxvd2luZyB0d28gZnVuY3Rpb25zIGFyZSBtYWlubHkgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZy4gKi8KK3ZvaWQKK21wZF9mcHJpbnQoRklMRSAqZmlsZSwgY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBjaGFyICpkZWNzdHJpbmc7CisKKyAgICBkZWNzdHJpbmcgPSBtcGRfdG9fc2NpKGRlYywgMSk7CisgICAgaWYgKGRlY3N0cmluZyAhPSBOVUxMKSB7CisgICAgICAgIGZwcmludGYoZmlsZSwgIiVzXG4iLCBkZWNzdHJpbmcpOworICAgICAgICBtcGRfZnJlZShkZWNzdHJpbmcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnB1dHMoIm1wZF9mcHJpbnQ6IG91dHB1dCBlcnJvclxuIiwgZmlsZSk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9Cit9CisKK3ZvaWQKK21wZF9wcmludChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGNoYXIgKmRlY3N0cmluZzsKKworICAgIGRlY3N0cmluZyA9IG1wZF90b19zY2koZGVjLCAxKTsKKyAgICBpZiAoZGVjc3RyaW5nICE9IE5VTEwpIHsKKyAgICAgICAgcHJpbnRmKCIlc1xuIiwgZGVjc3RyaW5nKTsKKyAgICAgICAgbXBkX2ZyZWUoZGVjc3RyaW5nKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZwdXRzKCJtcGRfZnByaW50OiBvdXRwdXQgZXJyb3JcbiIsIHN0ZGVycik7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9pby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZmNlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2lvLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBJT19ICisjZGVmaW5lIElPX0gKKworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKworCisjaWYgU0laRV9NQVggPT0gTVBEX1NJWkVfTUFYCisgICNkZWZpbmUgbXBkX3N0cnRvc3NpemUgX21wZF9zdHJ0b3NzaXplCisjZWxzZQorc3RhdGljIGlubGluZSBtcGRfc3NpemVfdAorbXBkX3N0cnRvc3NpemUoY29uc3QgY2hhciAqcywgY2hhciAqKmVuZCwgaW50IGJhc2UpCit7CisgICAgaW50NjRfdCByZXR2YWw7CisKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dmFsID0gX21wZF9zdHJ0b3NzaXplKHMsIGVuZCwgYmFzZSk7CisgICAgaWYgKGVycm5vID09IDAgJiYgKHJldHZhbCA+IE1QRF9TU0laRV9NQVggfHwgcmV0dmFsIDwgTVBEX1NTSVpFX01JTikpIHsKKyAgICAgICAgZXJybm8gPSBFUkFOR0U7CisgICAgfQorICAgIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKKyAgICAgICAgcmV0dXJuIChyZXR2YWwgPCAwKSA/IE1QRF9TU0laRV9NSU4gOiBNUERfU1NJWkVfTUFYOworICAgIH0KKworICAgIHJldHVybiAobXBkX3NzaXplX3QpcmV0dmFsOworfQorI2VuZGlmCisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvUkVGRVJFTkNFUy50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvUkVGRVJFTkNFUy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVkNTc4MgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9SRUZFUkVOQ0VTLnR4dApAQCAtMCwwICsxLDUxIEBACisKKworVGhpcyBkb2N1bWVudCBjb250YWlucyBsaW5rcyB0byB0aGUgbGl0ZXJhdHVyZSB1c2VkIGluIHRoZSBwcm9jZXNzIG9mCitjcmVhdGluZyB0aGUgbGlicmFyeS4gVGhlIGxpc3QgaXMgcHJvYmFibHkgbm90IGNvbXBsZXRlLgorCisKK01pa2UgQ293bGlzaGF3OiBHZW5lcmFsIERlY2ltYWwgQXJpdGhtZXRpYyBTcGVjaWZpY2F0aW9uCitodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGVjYXJpdGguaHRtbAorCisKK0plYW4tTWljaGVsIE11bGxlcjogT24gdGhlIGRlZmluaXRpb24gb2YgdWxwICh4KQorbGFyYS5pbmlzdC5mci9iaXRzdHJlYW0vMjMzMi81MTgvMS9MSVAtUlIyMDA1LTA5LnBkZgorCisKK1QuIEUuIEh1bGwsIEEuIEFicmhhbTogUHJvcGVybHkgcm91bmRlZCB2YXJpYWJsZSBwcmVjaXNpb24gc3F1YXJlIHJvb3QKK2h0dHA6Ly9wb3J0YWwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/aWQ9MjE0NDEzCisKKworVC4gRS4gSHVsbCwgQS4gQWJyaGFtOiBWYXJpYWJsZSBwcmVjaXNpb24gZXhwb25lbnRpYWwgZnVuY3Rpb24KK2h0dHA6Ly9wb3J0YWwuYWNtLm9yZy9jaXRhdGlvbi5jZm0/aWQ9NjQ5OAorCisKK1JvbWFuIEUuIE1hZWRlcjogU3RvcmFnZSBhbGxvY2F0aW9uIGZvciB0aGUgS2FyYXRzdWJhIGludGVnZXIgbXVsdGlwbGljYXRpb24KK2FsZ29yaXRobS4gIGh0dHA6Ly93d3cuc3ByaW5nZXJsaW5rLmNvbS9jb250ZW50L3cxNTA1OG1qNnY1OXQ1NjUvCisKKworSi4gTS4gUG9sbGFyZDogVGhlIGZhc3QgRm91cmllciB0cmFuc2Zvcm0gaW4gYSBmaW5pdGUgZmllbGQKK2h0dHA6Ly93d3cuYW1zLm9yZy9qb3VybmFscy9tY29tLzE5NzEtMjUtMTE0L1MwMDI1LTU3MTgtMTk3MS0wMzAxOTY2LTAvaG9tZS5odG1sCisKKworRGF2aWQgSC4gQmFpbGV5OiBGRlRzIGluIEV4dGVybmFsIG9yIEhpZXJhcmNoaWNhbCBNZW1vcnkKK2h0dHA6Ly9jcmQubGJsLmdvdi9+ZGhiYWlsZXkvZGhicGFwZXJzLworCisKK1cuIE1vcnZlbiBHZW50bGVtYW46IE1hdHJpeCBNdWx0aXBsaWNhdGlvbiBhbmQgRmFzdCBGb3VyaWVyIFRyYW5zZm9ybXMKK2h0dHA6Ly93d3cuYWxjYXRlbC1sdWNlbnQuY29tL2JzdGovdm9sNDctMTk2OC9hcnRpY2xlcy9ic3RqNDctNi0xMDk5LnBkZgorCisKK01pa2tvIFRvbW1pbGE6IEFwZmxvYXQgZG9jdW1lbnRhdGlvbgoraHR0cDovL3d3dy5hcGZsb2F0Lm9yZy9hcGZsb2F0LzIuNDEvYXBmbG9hdC5wZGYKKworCitKb2VyZyBBcm5kdDogIk1hdHRlcnMgQ29tcHV0YXRpb25hbCIKK2h0dHA6Ly93d3cuampqLmRlL2Z4dC8KKworCitLYXJsIEhhc3NlbHN0cm9tOiBGYXN0IERpdmlzaW9uIG9mIExhcmdlIEludGVnZXJzCit3d3cudHJlc2thbC5jb20va2FsbGUvZXhqb2JiL29yaWdpbmFsLXJlcG9ydC5wZGYKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9iaWdudW0udHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2JpZ251bS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4NzMxZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9iaWdudW0udHh0CkBAIC0wLDAgKzEsODMgQEAKKworCitCaWdudW0gc3VwcG9ydCAoRmFzdCBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybSBvciBGTlQpOgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQmlnbnVtIGFyaXRobWV0aWMgaW4gbGlibXBkZWMgdXNlcyB0aGUgc2NoZW1lIGZvciBmYXN0IGNvbnZvbHV0aW9uCitvZiBpbnRlZ2VyIHNlcXVlbmNlcyBmcm9tOgorCitKLiBNLiBQb2xsYXJkOiBUaGUgZmFzdCBGb3VyaWVyIHRyYW5zZm9ybSBpbiBhIGZpbml0ZSBmaWVsZAoraHR0cDovL3d3dy5hbXMub3JnL2pvdXJuYWxzL21jb20vMTk3MS0yNS0xMTQvUzAwMjUtNTcxOC0xOTcxLTAzMDE5NjYtMC9ob21lLmh0bWwKKworCitUaGUgdHJhbnNmb3JtIGluIGEgZmluaXRlIGZpZWxkIGNhbiBiZSB1c2VkIGZvciBjb252b2x1dGlvbiBpbiB0aGUgc2FtZQord2F5IGFzIHRoZSBGb3VyaWVyIFRyYW5zZm9ybS4gVGhlIG1haW4gYWR2YW50YWdlcyBvZiB0aGUgTnVtYmVyIFRoZW9yZXRpYworVHJhbnNmb3JtIGFyZSB0aGF0IGl0IGlzIGJvdGggZXhhY3QgYW5kIHZlcnkgbWVtb3J5IGVmZmljaWVudC4KKworCitDb252b2x1dGlvbiBpbiBwc2V1ZG8tY29kZToKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgIGZudF9jb252b2x1dGUoYSwgYik6CisgICAgeCA9IGZudChhKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3J3YXJkIHRyYW5zZm9ybSBvZiBhCisgICAgeSA9IGZudChiKSAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3J3YXJkIHRyYW5zZm9ybSBvZiBiCisgICAgeiA9IHBhaXJ3aXNlIG11bHRpcGx5IHhbaV0gYW5kIHlbaV0KKyAgICByZXN1bHQgPSBpbnZfZm50KHopICAgICAgICAgICAgICAgICAjIGJhY2t3YXJkIHRyYW5zZm9ybSBvZiB6LgorIAorCitFeHRlbmRpbmcgdGhlIG1heGltdW0gdHJhbnNmb3JtIGxlbmd0aCAoQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBtYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGggaXMgcXVpdGUgbGltaXRlZCB3aGVuIHVzaW5nIGEgc2luZ2xlCitwcmltZSBmaWVsZC4gSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gdXNlIG11bHRpcGxlIHByaW1lcyBhbmQKK3JlY292ZXIgdGhlIHJlc3VsdCB1c2luZyB0aGUgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbS4KKworCitNdWx0aXBsaWNhdGlvbiBpbiBwc2V1ZG8tY29kZToKK35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgIF9tcGRfZm50bXVsKHUsIHYpOgorICAgIGMxID0gZm50X2NvbnZvbHV0ZSh1LCB2LCBQMSkgICMgY29udm9sdXRlIG1vZHVsbyBwcmltZTEKKyAgICBjMiA9IGZudF9jb252b2x1dGUodSwgdiwgUDIpICAjIGNvbnZvbHV0ZSBtb2R1bG8gcHJpbWUyCisgICAgYzMgPSBmbnRfY29udm9sdXRlKHUsIHYsIFAzKSAgIyBjb252b2x1dGUgbW9kdWxvIHByaW1lMworICAgIHJlc3VsdCA9IGNydDMoYzEsIGMyLCBjMykgICAgICMgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbQorCisKK09wdGltaXplZCB0cmFuc2Zvcm0gZnVuY3Rpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZXJlIGFyZSB0aHJlZSBkaWZmZXJlbnQgZm50KCkgZnVuY3Rpb25zOgorCisgICBzdGRfZm50OiAic3RhbmRhcmQiIGRlY2ltYXRpb24gaW4gZnJlcXVlbmN5IHRyYW5zZm9ybSBmb3IgYXJyYXkgbGVuZ3RocworICAgICAgICAgICAgb2YgMioqbi4gUGVyZm9ybXMgd2VsbCB1cCB0byAxMDI0IHdvcmRzLgorCisgICBzaXhzdGVwOiBDYWNoZS1mcmllbmRseSBhbGdvcml0aG0gZm9yIGFycmF5IGxlbmd0aHMgb2YgMioqbi4gT3V0cGVyZm9ybXMKKyAgICAgICAgICAgIHN0ZF9mbnQgZm9yIGxhcmdlIGFycmF5cy4KKworICAgZm91cnN0ZXA6IEFsZ29yaXRobSBmb3IgYXJyYXkgbGVuZ3RocyBvZiAzICogMioqbi4gQWxzbyBjYWNoZSBmcmllbmRseQorICAgICAgICAgICAgIGluIGxhcmdlIHBhcnRzLgorCisKK0xpc3Qgb2YgYmlnbnVtLW9ubHkgZmlsZXM6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitGdW5jdGlvbnMgZnJvbSB0aGVzZSBmaWxlcyBhcmUgb25seSB1c2VkIGluIF9tcGRfZm50bXVsKCkuCisKKyAgdW1vZGFyaXRoLmggICAgLT4gZmFzdCBsb3cgbGV2ZWwgcm91dGluZXMgZm9yIHVuc2lnbmVkIG1vZHVsYXIgYXJpdGhtZXRpYworICBudW1iZXJ0aGVvcnkuYyAtPiByb3V0aW5lcyBmb3Igc2V0dGluZyB1cCB0aGUgRk5UCisgIGRpZnJhZGl4Mi5jICAgIC0+IGRlY2ltYXRpb24gaW4gZnJlcXVlbmN5IHRyYW5zZm9ybSwgdXNlZCBhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgImJhc2UgY2FzZSIgYnkgdGhlIGZvbGxvd2luZyB0aHJlZSBmaWxlczoKKworICAgICAgZm50LmMgICAgICAgICAgLT4gc3RhbmRhcmQgdHJhbnNmb3JtIGZvciBzbWFsbGVyIGFycmF5cworICAgICAgc2l4c3RlcC5jICAgICAgLT4gdHJhbnNmb3JtIGxhcmdlIGFycmF5cyBvZiBsZW5ndGggMioqbgorICAgICAgZm91cnN0ZXAuYyAgICAgLT4gdHJhbnNmb3JtIGFycmF5cyBvZiBsZW5ndGggMyAqIDIqKm4KKworICBjb252b2x1dGUuYyAgICAtPiBkbyB0aGUgYWN0dWFsIGZhc3QgY29udm9sdXRpb24sIHVzaW5nIG9uZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgdGhyZWUgdHJhbnNmb3JtIGZ1bmN0aW9ucy4KKyAgdHJhbnNwb3NlLmMgICAgLT4gdHJhbnNwb3NpdGlvbnMgbmVlZGVkIGZvciB0aGUgc2l4c3RlcCBhbGdvcml0aG0uCisgIGNydC5jICAgICAgICAgIC0+IENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW06IHVzZSBpbmZvcm1hdGlvbiBmcm9tIHRocmVlCisgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMgbW9kdWxvIHRocmVlIGRpZmZlcmVudCBwcmltZXMgdG8gZ2V0IHRoZQorICAgICAgICAgICAgICAgICAgICBmaW5hbCByZXN1bHQuCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvZm50LnB5IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2ZudC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjkzNzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL2ZudC5weQpAQCAtMCwwICsxLDIwOCBAQAorIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgVGhpcyBmaWxlIGxpc3RzIGFuZCBjaGVja3Mgc29tZSBvZiB0aGUgY29uc3RhbnRzIGFuZCBsaW1pdHMgdXNlZCAgIworIyAgaW4gbGlibXBkZWMncyBOdW1iZXIgVGhlb3JldGljIFRyYW5zZm9ybS4gQXQgdGhlIGVuZCBvZiB0aGUgZmlsZSAgIworIyAgdGhlcmUgaXMgYW4gZXhhbXBsZSBmdW5jdGlvbiBmb3IgdGhlIHBsYWluIERGVCB0cmFuc2Zvcm0uICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKKyMKKyMgTnVtYmVyIHRoZW9yZXRpYyB0cmFuc2Zvcm1zIGFyZSBkb25lIGluIHN1YmZpZWxkcyBvZiBGKHApLiBQW2ldCisjIGFyZSB0aGUgcHJpbWVzLCBEW2ldID0gUFtpXSAtIDEgYXJlIGhpZ2hseSBjb21wb3NpdGUgYW5kIHdbaV0KKyMgYXJlIHRoZSByZXNwZWN0aXZlIHByaW1pdGl2ZSByb290cyBvZiBGKHApLgorIworIyBUaGUgc3RyYXRlZ3kgaXMgdG8gY29udm9sdXRlIHR3byBjb2VmZmljaWVudHMgbW9kdWxvIGFsbCB0aHJlZQorIyBwcmltZXMsIHRoZW4gdXNlIHRoZSBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtIG9uIHRoZSB0aHJlZQorIyByZXN1bHQgYXJyYXlzIHRvIHJlY292ZXIgdGhlIHJlc3VsdCBpbiB0aGUgdXN1YWwgYmFzZSBSQURJWAorIyBmb3JtLgorIworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmltaXRpdmUgcm9vdHMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjCisjIFZlcmlmeSBwcmltaXRpdmUgcm9vdHM6CisjCisjIEZvciBhIHByaW1lIGZpZWxkLCByIGlzIGEgcHJpbWl0aXZlIHJvb3QgaWYgYW5kIG9ubHkgaWYgZm9yIGFsbCBwcmltZQorIyBmYWN0b3JzIGYgb2YgcC0xLCByKiooKHAtMSkvZikgPS89IDEgIChtb2QgcCkuCisjCitkZWYgcHJvZChGLCBFKToKKyAgICAiIiJDaGVjayB0aGF0IHRoZSBmYWN0b3JpemF0aW9uIG9mIFAtMSBpcyBjb3JyZWN0LiBGIGlzIHRoZSBsaXN0IG9mCisgICAgICAgZmFjdG9ycyBvZiBQLTEsIEUgbGlzdHMgdGhlIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiBlYWNoIGZhY3Rvci4iIiIKKyAgICB4ID0gMQorICAgIGZvciB5LCB6IGluIHppcChGLCBFKToKKyAgICAgICAgeCAqPSB5Kip6CisgICAgcmV0dXJuIHgKKworZGVmIGlzX3ByaW1pdGl2ZV9yb290KHIsIHAsIGZhY3RvcnMsIGV4cG9uZW50cyk6CisgICAgIiIiQ2hlY2sgaWYgciBpcyBhIHByaW1pdGl2ZSByb290IG9mIEYocCkuIiIiCisgICAgaWYgcCAhPSBwcm9kKGZhY3RvcnMsIGV4cG9uZW50cykgKyAxOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBmb3IgZiBpbiBmYWN0b3JzOgorICAgICAgICBxLCBjb250cm9sID0gZGl2bW9kKHAtMSwgZikKKyAgICAgICAgaWYgY29udHJvbCAhPSAwOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHBvdyhyLCBxLCBwKSA9PSAxOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIFRydWUKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgIENvbnN0YW50cyBhbmQgbGltaXRzIGZvciB0aGUgNjQtYml0IHZlcnNpb24KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUkFESVggPSAxMCoqMTkKKworIyBQcmltZXMgUDEsIFAyIGFuZCBQMzoKK1AgPSBbMioqNjQtMioqMzIrMSwgMioqNjQtMioqMzQrMSwgMioqNjQtMioqNDArMV0KKworIyBQLTEsIGhpZ2hseSBjb21wb3NpdGUuIFRoZSB0cmFuc2Zvcm0gbGVuZ3RoIGQgaXMgdmFyaWFibGUgYW5kCisjIG11c3QgZGl2aWRlIEQgPSBQLTEuIFNpbmNlIGFsbCBEIGFyZSBkaXZpc2libGUgYnkgMyAqIDIqKjMyLAorIyB0cmFuc2Zvcm0gbGVuZ3RocyBjYW4gYmUgMioqbiBvciAzICogMioqbiAod2hlcmUgbiA8PSAzMikuCitEID0gWzIqKjMyICogMyAgICAqICg1ICogMTcgKiAyNTcgKiA2NTUzNyksCisgICAgIDIqKjM0ICogMyoqMiAqICg3ICogMTEgKiAzMSAqIDE1MSAqIDMzMSksCisgICAgIDIqKjQwICogMyoqMiAqICg1ICogNyAqIDEzICogMTcgKiAyNDEpXQorCisjIFByaW1lIGZhY3RvcnMgb2YgUC0xIGFuZCB0aGVpciBleHBvbmVudHM6CitGID0gWygyLDMsNSwxNywyNTcsNjU1MzcpLCAoMiwzLDcsMTEsMzEsMTUxLDMzMSksICgyLDMsNSw3LDEzLDE3LDI0MSldCitFID0gWygzMiwxLDEsMSwxLDEpLCAoMzQsMiwxLDEsMSwxLDEpLCAoNDAsMiwxLDEsMSwxLDEpXQorCisjIE1heGltdW0gdHJhbnNmb3JtIGxlbmd0aCBmb3IgMioqbi4gQWJvdmUgdGhhdCBvbmx5IDMgKiAyKiozMQorIyBvciAzICogMioqMzIgYXJlIHBvc3NpYmxlLgorTVBEX01BWFRSQU5TRk9STV8yTiA9IDIqKjMyCisKKworIyBMaW1pdHMgaW4gdGhlIHRlcm1pbm9sb2d5IG9mIFBvbGxhcmQncyBwYXBlcjoKK20yID0gKE1QRF9NQVhUUkFOU0ZPUk1fMk4gKiAzKSAvLyAyICMgTWF4aW11bSBsZW5ndGggb2YgdGhlIHNtYWxsZXIgYXJyYXkuCitNMSA9IE0yID0gUkFESVgtMSAgICAgICAgICAgICAgICAgICAjIE1heGltdW0gdmFsdWUgcGVyIHNpbmdsZSB3b3JkLgorTCA9IG0yICogTTEgKiBNMgorUFswXSAqIFBbMV0gKiBQWzJdID4gMiAqIEwKKworCisjIFByaW1pdGl2ZSByb290cyBvZiBGKFAxKSwgRihQMikgYW5kIEYoUDMpOgordyA9IFs3LCAxMCwgMTldCisKKyMgVGhlIHByaW1pdGl2ZSByb290cyBhcmUgY29ycmVjdDoKK2ZvciBpIGluIHJhbmdlKDMpOgorICAgIGlmIG5vdCBpc19wcmltaXRpdmVfcm9vdCh3W2ldLCBQW2ldLCBGW2ldLCBFW2ldKToKKyAgICAgICAgcHJpbnQoIkZBSUwiKQorCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgQ29uc3RhbnRzIGFuZCBsaW1pdHMgZm9yIHRoZSAzMi1iaXQgdmVyc2lvbgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitSQURJWCA9IDEwKio5CisKKyMgUHJpbWVzIFAxLCBQMiBhbmQgUDM6CitQID0gWzIxMTM5MjkyMTcsIDIwMTMyNjU5MjEsIDE4MTE5MzkzMjldCisKKyMgUC0xLCBoaWdobHkgY29tcG9zaXRlLiBBbGwgRCA9IFAtMSBhcmUgZGl2aXNpYmxlIGJ5IDMgKiAyKioyNSwKKyMgYWxsb3dpbmcgZm9yIHRyYW5zZm9ybSBsZW5ndGhzIHVwIHRvIDMgKiAyKioyNSB3b3Jkcy4KK0QgPSBbMioqMjUgKiAzKioyICogNywKKyAgICAgMioqMjcgKiAzICAgICogNSwKKyAgICAgMioqMjYgKiAzKiozXQorCisjIFByaW1lIGZhY3RvcnMgb2YgUC0xIGFuZCB0aGVpciBleHBvbmVudHM6CitGID0gWygyLDMsNyksICgyLDMsNSksICgyLDMpXQorRSA9IFsoMjUsMiwxKSwgKDI3LDEsMSksICgyNiwzKV0KKworIyBNYXhpbXVtIHRyYW5zZm9ybSBsZW5ndGggZm9yIDIqKm4uIEFib3ZlIHRoYXQgb25seSAzICogMioqMjQgb3IKKyMgMyAqIDIqKjI1IGFyZSBwb3NzaWJsZS4KK01QRF9NQVhUUkFOU0ZPUk1fMk4gPSAyKioyNQorCisKKyMgTGltaXRzIGluIHRoZSB0ZXJtaW5vbG9neSBvZiBQb2xsYXJkJ3MgcGFwZXI6CittMiA9IChNUERfTUFYVFJBTlNGT1JNXzJOICogMykgLy8gMiAjIE1heGltdW0gbGVuZ3RoIG9mIHRoZSBzbWFsbGVyIGFycmF5LgorTTEgPSBNMiA9IFJBRElYLTEgICAgICAgICAgICAgICAgICAgIyBNYXhpbXVtIHZhbHVlIHBlciBzaW5nbGUgd29yZC4KK0wgPSBtMiAqIE0xICogTTIKK1BbMF0gKiBQWzFdICogUFsyXSA+IDIgKiBMCisKKworIyBQcmltaXRpdmUgcm9vdHMgb2YgRihQMSksIEYoUDIpIGFuZCBGKFAzKToKK3cgPSBbNSwgMzEsIDEzXQorCisjIFRoZSBwcmltaXRpdmUgcm9vdHMgYXJlIGNvcnJlY3Q6Citmb3IgaSBpbiByYW5nZSgzKToKKyAgICBpZiBub3QgaXNfcHJpbWl0aXZlX3Jvb3Qod1tpXSwgUFtpXSwgRltpXSwgRVtpXSk6CisgICAgICAgIHByaW50KCJGQUlMIikKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgIEV4YW1wbGUgdHJhbnNmb3JtIHVzaW5nIGEgc2luZ2xlIHByaW1lCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIG50dChsc3QsIGRpcik6CisgICAgIiIiUGVyZm9ybSBhIHRyYW5zZm9ybSBvbiB0aGUgZWxlbWVudHMgb2YgbHN0LiBsZW4obHN0KSBtdXN0CisgICAgICAgYmUgMioqbiBvciAzICogMioqbiwgd2hlcmUgbiA8PSAyNS4gVGhpcyBpcyB0aGUgc2xvdyBERlQuIiIiCisgICAgcCA9IDIxMTM5MjkyMTcgICAgICAgICAgICAgIyBwcmltZQorICAgIGQgPSBsZW4obHN0KSAgICAgICAgICAgICAgICMgdHJhbnNmb3JtIGxlbmd0aAorICAgIGRfcHJpbWUgPSBwb3coZCwgKHAtMiksIHApICMgaW52ZXJzZSBvZiBkCisgICAgeGkgPSAocC0xKS8vZAorICAgIHcgPSA1ICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJpbWl0aXZlIHJvb3Qgb2YgRihwKQorICAgIHIgPSBwb3codywgeGksIHApICAgICAgICAgICAgICMgcHJpbWl0aXZlIHJvb3Qgb2YgdGhlIHN1YmZpZWxkCisgICAgcl9wcmltZSA9IHBvdyh3LCAocC0xLXhpKSwgcCkgIyBpbnZlcnNlIG9mIHIKKyAgICBpZiBkaXIgPT0gMTogICAgICAjIGZvcndhcmQgdHJhbnNmb3JtCisgICAgICAgIGEgPSBsc3QgICAgICAgIyBpbnB1dCBhcnJheQorICAgICAgICBBID0gWzBdICogZCAgICMgdHJhbnNmb3JtZWQgdmFsdWVzCisgICAgICAgIGZvciBpIGluIHJhbmdlKGQpOgorICAgICAgICAgICAgcyA9IDAKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKGQpOgorICAgICAgICAgICAgICAgIHMgKz0gYVtqXSAqIHBvdyhyLCBpKmosIHApCisgICAgICAgICAgICBBW2ldID0gcyAlIHAKKyAgICAgICAgcmV0dXJuIEEKKyAgICBlbGlmIGRpciA9PSAtMTogIyBiYWNrd2FyZCB0cmFuc2Zvcm0KKyAgICAgICAgQSA9IGxzdCAgICAgIyBpbnB1dCBhcnJheQorICAgICAgICBhID0gWzBdICogZCAjIHRyYW5zZm9ybWVkIHZhbHVlcworICAgICAgICBmb3IgaiBpbiByYW5nZShkKToKKyAgICAgICAgICAgIHMgPSAwCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShkKToKKyAgICAgICAgICAgICAgICBzICs9IEFbaV0gKiBwb3cocl9wcmltZSwgaSpqLCBwKQorICAgICAgICAgICAgYVtqXSA9IChkX3ByaW1lICogcykgJSBwCisgICAgICAgIHJldHVybiBhCisKK2RlZiBudHRfY29udm9sdXRlKGEsIGIpOgorICAgICIiImNvbnZvbHV0ZSBhcnJheXMgYSBhbmQgYi4iIiIKKyAgICBhc3NlcnQobGVuKGEpID09IGxlbihiKSkKKyAgICB4ID0gbnR0KGEsIDEpCisgICAgeSA9IG50dChiLCAxKQorICAgIGZvciBpIGluIHJhbmdlKGxlbihhKSk6CisgICAgICAgIHlbaV0gPSB5W2ldICogeFtpXQorICAgIHIgPSBudHQoeSwgLTEpCisgICAgcmV0dXJuIHIKKworCisjIEV4YW1wbGU6IFR3byBhcnJheXMgcmVwcmVzZW50aW5nIDIxIGFuZCA4MSBpbiBsaXR0bGUtZW5kaWFuOgorYSA9IFsxLCAyLCAwLCAwXQorYiA9IFsxLCA4LCAwLCAwXQorCithc3NlcnQobnR0X2NvbnZvbHV0ZShhLCBiKSA9PSBbMSwgICAgICAgIDEwLCAgICAgICAgMTYsICAgICAgICAwXSkKK2Fzc2VydCgyMSAqIDgxICAgICAgICAgICAgID09ICgxKjEwKiowICsgMTAqMTAqKjEgKyAxNioxMCoqMiArIDAqMTAqKjMpKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL21hdHJpeC10cmFuc2Zvcm0udHh0IGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9saXRlcmF0dXJlL21hdHJpeC10cmFuc2Zvcm0udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNjIxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbWF0cml4LXRyYW5zZm9ybS50eHQKQEAgLTAsMCArMSwyNTYgQEAKKworCisoKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuICopCisKKworVGhlIE1hdHJpeCBGb3VyaWVyIFRyYW5zZm9ybToKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0luIGxpYm1wZGVjLCB0aGUgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIFsxXSBpcyBjYWxsZWQgZm91ci1zdGVwIHRyYW5zZm9ybQorYWZ0ZXIgYSB2YXJpYW50IHRoYXQgYXBwZWFycyBpbiBbMl0uIFRoZSBhbGdvcml0aG0gcmVxdWlyZXMgdGhhdCB0aGUgaW5wdXQKK2FycmF5IGNhbiBiZSB2aWV3ZWQgYXMgYW4gUipDIG1hdHJpeC4KKworQWxsIG9wZXJhdGlvbnMgYXJlIGRvbmUgbW9kdWxvIHAuIEZvciByZWFkYWJpbGl0eSwgdGhlIHByb29mcyBkcm9wIGFsbAoraW5zdGFuY2VzIG9mIChtb2QgcCkuCisKKworQWxnb3JpdGhtIGZvdXItc3RlcCAoZm9yd2FyZCB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIGEgOj0gaW5wdXQgYXJyYXkKKyAgZCA6PSBsZW4oYSkgPSBSICogQworICBwIDo9IHByaW1lCisgIHcgOj0gcHJpbWl0aXZlIHJvb3Qgb2YgdW5pdHkgb2YgdGhlIHByaW1lIGZpZWxkCisgIHIgOj0gdyoqKChwLTEpL2QpCisgIEEgOj0gb3V0cHV0IGFycmF5CisKKyAgMSkgQXBwbHkgYSBsZW5ndGggUiBGTlQgdG8gZWFjaCBjb2x1bW4uCisKKyAgMikgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGoqQyttKSBieSByKiooaiptKS4KKworICAzKSBBcHBseSBhIGxlbmd0aCBDIEZOVCB0byBlYWNoIHJvdy4KKworICA0KSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworCitQcm9vZiAoZm9yd2FyZCB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgYWxnb3JpdGhtIGNhbiBiZSBkZXJpdmVkIHN0YXJ0aW5nIGZyb20gdGhlIHJlZ3VsYXIgZGVmaW5pdGlvbiBvZgorICB0aGUgZmluaXRlLWZpZWxkIHRyYW5zZm9ybSBvZiBsZW5ndGggZDoKKworICAgICAgICAgICAgZC0xCisgICAgICAgICAgICwtLS0tCisgICAgICAgICAgIFwKKyAgICBBW2tdID0gIHwgIGFbbF0gICogcioqKGsgKiBsKQorICAgICAgICAgICAvCisgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgIGwgPSAwCisKKworICBUaGUgc3VtIGNhbiBiZSByZWFycmFuZ2VkIGludG8gdGhlIHN1bSBvZiB0aGUgc3VtcyBvZiBjb2x1bW5zOgorCisgICAgICAgICAgICBDLTEgICAgIFItMQorICAgICAgICAgICAsLS0tLSAgICwtLS0tCisgICAgICAgICAgIFwgICAgICAgXAorICAgICAgICAgPSAgfCAgICAgICB8ICBhW2kgKiBDICsgal0gKiByKiooayAqIChpICogQyArIGopKQorICAgICAgICAgICAvICAgICAgIC8KKyAgICAgICAgICAgYC0tLS0gICBgLS0tLQorICAgICAgICAgICBqID0gMCAgIGkgPSAwCisKKworICBFeHRyYWN0aW5nIGEgY29uc3RhbnQgZnJvbSB0aGUgaW5uZXIgc3VtOgorCisgICAgICAgICAgICBDLTEgICAgICAgICAgIFItMQorICAgICAgICAgICAsLS0tLSAgICAgICAgICwtLS0tCisgICAgICAgICAgIFwgICAgICAgICAgICAgXAorICAgICAgICAgPSAgfCAgcioqaypqICAqICB8ICBhW2kgKiBDICsgal0gKiByKiooayAqIGkgKiBDKQorICAgICAgICAgICAvICAgICAgICAgICAgIC8KKyAgICAgICAgICAgYC0tLS0gICAgICAgICBgLS0tLQorICAgICAgICAgICBqID0gMCAgICAgICAgIGkgPSAwCisKKworICBXaXRob3V0IGFueSBsb3NzIG9mIGdlbmVyYWxpdHksIGxldCBrID0gbiAqIFIgKyBtLAorICB3aGVyZSBuIDwgQyBhbmQgbSA8IFI6CisKKyAgICAgICAgICAgICAgICBDLTEgICAgICAgICAgICAgICAgICAgICAgICAgIFItMQorICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVtuKlIrbV0gPSAgfCAgcioqKFIqbipqKSAqIHIqKihtKmopICAqICB8ICBhW2kqQytqXSAqIHIqKihSKkMqbippKSAqIHIqKihDKm0qaSkKKyAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgLworICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgICAgICAgICBgLS0tLQorICAgICAgICAgICAgICAgaiA9IDAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMAorCisKKyAgU2luY2UgciA9IHcgKiogKChwLTEpIC8gKFIqQykpOgorCisgICAgIGEpIHIqKihSKkMqbippKSA9IHcqKigocC0xKSpuKmkpID0gMQorCisgICAgIGIpIHIqKihDKm0qaSkgPSB3KiooKHAtMSkgLyBSKSAqKiAobSppKSA9IHJfUiAqKiAobSppKQorCisgICAgIGMpIHIqKihSKm4qaikgPSB3KiooKHAtMSkgLyBDKSAqKiAobipqKSA9IHJfQyAqKiAobipqKQorCisgICAgIHJfUiA6PSByb290IG9mIHRoZSBzdWJmaWVsZCBvZiBsZW5ndGggUi4KKyAgICAgcl9DIDo9IHJvb3Qgb2YgdGhlIHN1YmZpZWxkIG9mIGxlbmd0aCBDLgorCisKKyAgICAgICAgICAgICAgICBDLTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFItMQorICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVtuKlIrbV0gPSAgfCAgcl9DKioobipqKSAqIFsgcioqKG0qaikgICogICB8ICBhW2kqQytqXSAqIHJfUioqKG0qaSkgXQorICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAvCisgICAgICAgICAgICAgICBgLS0tLSAgICAgICAgICAgICAgICAgfCAgICAgICAgIGAtLS0tICAgIDEpIHRyYW5zZm9ybSB0aGUgY29sdW1ucworICAgICAgICAgICAgICAgaiA9IDAgICAgICAgICAgICAgICAgIHwgICAgICAgICBpID0gMAorICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBgLS0gMikgbXVsdGlwbHkKKyAgICAgICAgICAgICAgICAgfAorICAgICAgICAgICAgICAgICBgLS0gMykgdHJhbnNmb3JtIHRoZSByb3dzCisKKworICAgTm90ZSB0aGF0IHRoZSBlbnRpcmUgUkhTIGlzIGEgZnVuY3Rpb24gb2YgbiBhbmQgbSBhbmQgdGhhdCB0aGUgcmVzdWx0cworICAgZm9yIGVhY2ggcGFpciAobiwgbSkgYXJlIHN0b3JlZCBpbiBGb3J0cmFuIG9yZGVyLgorCisgICBMZXQgdGhlIHRlcm0gaW4gc3F1YXJlIGJyYWNrZXRzIGJlIGYobSwgaikuIFN0ZXAgMSkgYW5kIDIpIHByZWNhbGN1bGF0ZQorICAgdGhlIHRlcm0gZm9yIGFsbCAobSwgaikuIEFmdGVyIHRoYXQsIHRoZSBvcmlnaW5hbCBtYXRyaXggaXMgbm93IGEgbG9va3VwCisgICB0YWJsZSB3aXRoIHRoZSBtdGggZWxlbWVudCBpbiB0aGUganRoIGNvbHVtbiBhdCBsb2NhdGlvbiBtICogQyArIGouCisKKyAgIExldCB0aGUgY29tcGxldGUgUkhTIGJlIGcobSwgbikuIFN0ZXAgMykgZG9lcyBhbiBpbi1wbGFjZSB0cmFuc2Zvcm0gb2YKKyAgIGxlbmd0aCBuIG9uIGFsbCByb3dzLiBBZnRlciB0aGF0LCB0aGUgb3JpZ2luYWwgbWF0cml4IGlzIG5vdyBhIGxvb2t1cAorICAgdGFibGUgd2l0aCB0aGUgbXRoIGVsZW1lbnQgaW4gdGhlIG50aCBjb2x1bW4gYXQgbG9jYXRpb24gbSAqIEMgKyBuLgorCisgICBCdXQgZWFjaCAobSwgbikgcGFpciBzaG91bGQgYmUgd3JpdHRlbiB0byBsb2NhdGlvbiBuICogUiArIG0uIFRoZXJlZm9yZSwKKyAgIHN0ZXAgNCkgdHJhbnNwb3NlcyB0aGUgcmVzdWx0IG9mIHN0ZXAgMykuCisKKworCitBbGdvcml0aG0gZm91ci1zdGVwIChpbnZlcnNlIHRyYW5zZm9ybSk6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQSAgOj0gaW5wdXQgYXJyYXkKKyAgZCAgOj0gbGVuKEEpID0gUiAqIEMKKyAgcCAgOj0gcHJpbWUKKyAgZCcgOj0gZCoqKHAtMikgICAgICAgICAgICAgIyBpbnZlcnNlIG9mIGQKKyAgdyAgOj0gcHJpbWl0aXZlIHJvb3Qgb2YgdW5pdHkgb2YgdGhlIHByaW1lIGZpZWxkCisgIHIgIDo9IHcqKigocC0xKS9kKSAgICAgICAgICMgcm9vdCBvZiB0aGUgc3ViZmllbGQKKyAgcicgOj0gdyoqKChwLTEpIC0gKHAtMSkvZCkgIyBpbnZlcnNlIG9mIHIKKyAgYSAgOj0gb3V0cHV0IGFycmF5CisKKyAgMCkgVmlldyB0aGUgbWF0cml4IGFzIGEgQypSIG1hdHJpeC4KKworICAxKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguCisKKyAgMikgQXBwbHkgYSBsZW5ndGggQyBGTlQgdG8gZWFjaCByb3cuCisKKyAgMykgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytuKSBieSByKiooaSpuKS4KKworICA0KSBBcHBseSBhIGxlbmd0aCBSIEZOVCB0byBlYWNoIGNvbHVtbi4KKworCitQcm9vZiAoaW52ZXJzZSB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgYWxnb3JpdGhtIGNhbiBiZSBkZXJpdmVkIHN0YXJ0aW5nIGZyb20gdGhlIHJlZ3VsYXIgZGVmaW5pdGlvbiBvZgorICB0aGUgZmluaXRlLWZpZWxkIGludmVyc2UgdHJhbnNmb3JtIG9mIGxlbmd0aCBkOgorCisgICAgICAgICAgICAgICAgICBkLTEKKyAgICAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgICAgXAorICAgIGFba10gPSAgZCcgKiAgfCAgQVtsXSAgKiByJyAqKiAoayAqIGwpCisgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgYC0tLS0KKyAgICAgICAgICAgICAgICAgbCA9IDAKKworCisgIFRoZSBzdW0gY2FuIGJlIHJlYXJyYW5nZWQgaW50byB0aGUgc3VtIG9mIHRoZSBzdW1zIG9mIGNvbHVtbnMuIE5vdGUKKyAgdGhhdCBhdCB0aGlzIHN0YWdlIHdlIHN0aWxsIGhhdmUgYSBDKlIgbWF0cml4LCBzbyBDIGRlbm90ZXMgdGhlIG51bWJlcgorICBvZiByb3dzOgorCisgICAgICAgICAgICAgICAgICBSLTEgICAgIEMtMQorICAgICAgICAgICAgICAgICAsLS0tLSAgICwtLS0tCisgICAgICAgICAgICAgICAgIFwgICAgICAgXAorICAgICAgICAgPSAgZCcgKiAgfCAgICAgICB8ICBhW2ogKiBSICsgaV0gKiByJyAqKiAoayAqIChqICogUiArIGkpKQorICAgICAgICAgICAgICAgICAvICAgICAgIC8KKyAgICAgICAgICAgICAgICAgYC0tLS0gICBgLS0tLQorICAgICAgICAgICAgICAgICBpID0gMCAgIGogPSAwCisKKworICBFeHRyYWN0aW5nIGEgY29uc3RhbnQgZnJvbSB0aGUgaW5uZXIgc3VtOgorCisgICAgICAgICAgICAgICAgICBSLTEgICAgICAgICAgICAgICAgQy0xCisgICAgICAgICAgICAgICAgICwtLS0tICAgICAgICAgICAgICAsLS0tLQorICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgPSAgZCcgKiAgfCAgcicgKiogKGsqaSkgICogIHwgIGFbaiAqIFIgKyBpXSAqIHInICoqIChrICogaiAqIFIpCisgICAgICAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAvCisgICAgICAgICAgICAgICAgIGAtLS0tICAgICAgICAgICAgICBgLS0tLQorICAgICAgICAgICAgICAgICBpID0gMCAgICAgICAgICAgICAgaiA9IDAKKworCisgIFdpdGhvdXQgYW55IGxvc3Mgb2YgZ2VuZXJhbGl0eSwgbGV0IGsgPSBtICogQyArIG4sCisgIHdoZXJlIG0gPCBSIGFuZCBuIDwgQzoKKworICAgICAgICAgICAgICAgICAgICAgUi0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEMtMQorICAgICAgICAgICAgICAgICAgICAsLS0tLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLC0tLS0KKyAgICAgICAgICAgICAgICAgICAgXCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBW20qQytuXSA9IGQnICogIHwgIHInICoqIChDKm0qaSkgKiAgcicgKiogKG4qaSkgICAqICB8ICBhW2oqUitpXSAqIHInICoqIChSKkMqbSpqKSAqIHInICoqIChSKm4qaikKKyAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8KKyAgICAgICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAtLS0tCisgICAgICAgICAgICAgICAgICAgIGkgPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMAorCisKKyAgU2luY2UgcicgPSB3KiooKHAtMSkgLSAocC0xKS9kKSBhbmQgZCA9IFIqQzoKKworICAgICBhKSByJyAqKiAoUipDKm0qaikgPSB3KiooKHAtMSkqUipDKm0qaiAtIChwLTEpKm0qaikgPSAxCisKKyAgICAgYikgcicgKiogKEMqbSppKSA9IHcqKigocC0xKSpDIC0gKHAtMSkvUikgKiogKG0qaSkgPSByX1InICoqIChtKmkpCisKKyAgICAgYykgcicgKiogKFIqbipqKSA9IHJfQycgKiogKG4qaikKKworICAgICBkKSBkJyA9IGQqKihwLTIpID0gKFIqQykgKiogKHAtMikgPSBSKioocC0yKSAqIEMqKihwLTIpID0gUicgKiBDJworCisgICAgIHJfUicgOj0gaW52ZXJzZSBvZiB0aGUgcm9vdCBvZiB0aGUgc3ViZmllbGQgb2YgbGVuZ3RoIFIuCisgICAgIHJfQycgOj0gaW52ZXJzZSBvZiB0aGUgcm9vdCBvZiB0aGUgc3ViZmllbGQgb2YgbGVuZ3RoIEMuCisgICAgIFInICAgOj0gaW52ZXJzZSBvZiBSCisgICAgIEMnICAgOj0gaW52ZXJzZSBvZiBDCisKKworICAgICAgICAgICAgICAgICAgICAgUi0xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDLTEKKyAgICAgICAgICAgICAgICAgICAgLC0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsLS0tLSAgMikgdHJhbnNmb3JtIHRoZSByb3dzIG9mIGFeVAorICAgICAgICAgICAgICAgICAgICBcICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBW20qQytuXSA9IFInICogIHwgIHJfUicgKiogKG0qaSkgKiBbIHInICoqIChuKmkpICogQycgKiAgfCAgYVtqKlIraV0gKiByX0MnICoqIChuKmopIF0KKyAgICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgICAvICAgICAgIF4KKyAgICAgICAgICAgICAgICAgICAgYC0tLS0gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBgLS0tLSAgIHwKKyAgICAgICAgICAgICAgICAgICAgaSA9IDAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICBqID0gMCAgIHwKKyAgICAgICAgICAgICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIGAtLSAxKSBUcmFuc3Bvc2UgaW5wdXQgbWF0cml4CisgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICBgLS0gMykgbXVsdGlwbHkgICAgICAgICAgICAgdG8gYWRkcmVzcyBlbGVtZW50cyBieQorICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKiBDICsgagorICAgICAgICAgICAgICAgICAgICAgIGAtLSAzKSB0cmFuc2Zvcm0gdGhlIGNvbHVtbnMKKworCisKKyAgIE5vdGUgdGhhdCB0aGUgZW50aXJlIFJIUyBpcyBhIGZ1bmN0aW9uIG9mIG0gYW5kIG4gYW5kIHRoYXQgdGhlIHJlc3VsdHMKKyAgIGZvciBlYWNoIHBhaXIgKG0sIG4pIGFyZSBzdG9yZWQgaW4gQyBvcmRlci4KKworICAgTGV0IHRoZSB0ZXJtIGluIHNxdWFyZSBicmFja2V0cyBiZSBmKG4sIGkpLiBXaXRob3V0IHN0ZXAgMSksIHRoZSBzdW0KKyAgIHdvdWxkIHBlcmZvcm0gYSBsZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIGNvbHVtbnMgb2YgdGhlIGlucHV0IG1hdHJpeC4KKyAgIFRoaXMgaXMgYSkgaW5lZmZpY2llbnQgYW5kIGIpIHRoZSByZXN1bHRzIGFyZSBuZWVkZWQgaW4gQyBvcmRlciwgc28KKyAgIHN0ZXAgMSkgZXhjaGFuZ2VzIHJvd3MgYW5kIGNvbHVtbnMuCisKKyAgIFN0ZXAgMikgYW5kIDMpIHByZWNhbGN1bGF0ZSBmKG4sIGkpIGZvciBhbGwgKG4sIGkpLiBBZnRlciB0aGF0LCB0aGUKKyAgIG9yaWdpbmFsIG1hdHJpeCBpcyBub3cgYSBsb29rdXAgdGFibGUgd2l0aCB0aGUgaXRoIGVsZW1lbnQgaW4gdGhlIG50aAorICAgY29sdW1uIGF0IGxvY2F0aW9uIGkgKiBDICsgbi4KKworICAgTGV0IHRoZSBjb21wbGV0ZSBSSFMgYmUgZyhtLCBuKS4gU3RlcCA0KSBkb2VzIGFuIGluLXBsYWNlIHRyYW5zZm9ybSBvZgorICAgbGVuZ3RoIG0gb24gYWxsIGNvbHVtbnMuIEFmdGVyIHRoYXQsIHRoZSBvcmlnaW5hbCBtYXRyaXggaXMgbm93IGEgbG9va3VwCisgICB0YWJsZSB3aXRoIHRoZSBtdGggZWxlbWVudCBpbiB0aGUgbnRoIGNvbHVtbiBhdCBsb2NhdGlvbiBtICogQyArIG4sCisgICB3aGljaCBtZWFucyB0aGF0IGFsbCBBW2tdID0gQVttICogQyArIG5dIGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlci4KKworCistLSAKKworICBbMV0gSm9lcmcgQXJuZHQ6ICJNYXR0ZXJzIENvbXB1dGF0aW9uYWwiCisgICAgICBodHRwOi8vd3d3Lmpqai5kZS9meHQvCisgIFsyXSBEYXZpZCBILiBCYWlsZXk6IEZGVHMgaW4gRXh0ZXJuYWwgb3IgSGllcmFyY2hpY2FsIE1lbW9yeQorICAgICAgaHR0cDovL2NyZC5sYmwuZ292L35kaGJhaWxleS9kaGJwYXBlcnMvCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLTY0LnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtNjQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYmYyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLTY0LnR4dApAQCAtMCwwICsxLDEyNyBAQAorCisKKygqIENvcHlyaWdodCAoYykgMjAxMSBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKikKKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgICAgIENhbGN1bGF0ZSAoYSAqIGIpICUgcCB1c2luZyBzcGVjaWFsIHByaW1lcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQSBkZXNjcmlwdGlvbiBvZiB0aGUgYWxnb3JpdGhtIGNhbiBiZSBmb3VuZCBpbiB0aGUgYXBmbG9hdCBtYW51YWwgYnkKK1RvbW1pbGEgWzFdLgorCisKK0RlZmluaXRpb25zOgorLS0tLS0tLS0tLS0tCisKK0luIHRoZSB3aG9sZSBkb2N1bWVudCwgIj09IiBzdGFuZHMgZm9yICJpcyBjb25ncnVlbnQgd2l0aCIuCisKK1Jlc3VsdCBvZiBhICogYiBpbiB0ZXJtcyBvZiBoaWdoL2xvdyB3b3JkczoKKworICAgKDEpIGhpICogMioqNjQgKyBsbyA9IGEgKiBiCisKK1NwZWNpYWwgcHJpbWVzOgorCisgICAoMikgcCA9IDIqKjY0IC0geiArIDEsIHdoZXJlIHogPSAyKipuCisKK1NpbmdsZSBzdGVwIG1vZHVsYXIgcmVkdWN0aW9uOgorCisgICAoMykgUihoaSwgbG8pID0gaGkgKiB6IC0gaGkgKyBsbworCisKK1N0cmF0ZWd5OgorLS0tLS0tLS0tCisKKyAgIGEpIFNldCAoaGksIGxvKSB0byB0aGUgcmVzdWx0IG9mIGEgKiBiLgorCisgICBiKSBTZXQgKGhpJywgbG8nKSB0byB0aGUgcmVzdWx0IG9mIFIoaGksIGxvKS4KKworICAgYykgUmVwZWF0IHN0ZXAgYikgdW50aWwgMCA8PSBoaScgKiAyKio2NCArIGxvJyA8IDIqcC4KKworICAgZCkgSWYgdGhlIHJlc3VsdCBpcyBsZXNzIHRoYW4gcCwgcmV0dXJuIGxvJy4gT3RoZXJ3aXNlIHJldHVybiBsbycgLSBwLgorCisKK1RoZSByZWR1Y3Rpb24gc3RlcCBiKSBwcmVzZXJ2ZXMgY29uZ3J1ZW5jZToKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGhpICogMioqNjQgKyBsbyA9PSBoaSAqIHogLSBoaSArIGxvICAgKG1vZCBwKQorCisgICAgUHJvb2Y6CisgICAgfn5+fn5+CisKKyAgICAgICBoaSAqIDIqKjY0ICsgbG8gPSAoMioqNjQgLSB6ICsgMSkgKiBoaSArIHogKiBoaSAtIGhpICsgbG8KKworICAgICAgICAgICAgICAgICAgICAgICA9IHAgKiBoaSAgICAgICAgICAgICAgICsgeiAqIGhpIC0gaGkgKyBsbworCisgICAgICAgICAgICAgICAgICAgICAgID09IHogKiBoaSAtIGhpICsgbG8gICAobW9kIHApCisKKworTWF4aW11bSBudW1iZXJzIG9mIHN0ZXAgYik6CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworIyBUbyBhdm9pZCB1bm5lY2Nlc3NhcnkgZm9ybWFsaXNtLCBkZWZpbmU6CisKK2RlZiBSKGhpLCBsbywgeik6CisgICAgIHJldHVybiBkaXZtb2QoaGkgKiB6IC0gaGkgKyBsbywgMioqNjQpCisKKyMgRm9yIHNpbXBsaWNpdHksIGFzc3VtZSBoaT0yKio2NC0xLCBsbz0yKio2NC0xIGFmdGVyIHRoZQorIyBpbml0aWFsIG11bHRpcGxpY2F0aW9uIGEgKiBiLiBUaGlzIGlzIG9mIGNvdXJzZSBpbXBvc3NpYmxlCisjIGJ1dCBjZXJ0YWlubHkgY292ZXJzIGFsbCBjYXNlcy4KKworIyBUaGVuLCBmb3IgcDE6CitoaT0yKio2NC0xOyBsbz0yKio2NC0xOyB6PTIqKjMyCitwMSA9IDIqKjY0IC0geiArIDEKKworaGksIGxvID0gUihoaSwgbG8sIHopICAgICMgRmlyc3QgcmVkdWN0aW9uCitoaSwgbG8gPSBSKGhpLCBsbywgeikgICAgIyBTZWNvbmQgcmVkdWN0aW9uCitoaSAqIDIqKjY0ICsgbG8gPCAyICogcDEgIyBUcnVlCisKKyMgRm9yIHAyOgoraGk9MioqNjQtMTsgbG89MioqNjQtMTsgej0yKiozNAorcDIgPSAyKio2NCAtIHogKyAxCisKK2hpLCBsbyA9IFIoaGksIGxvLCB6KSAgICAjIEZpcnN0IHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgU2Vjb25kIHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgVGhpcmQgcmVkdWN0aW9uCitoaSAqIDIqKjY0ICsgbG8gPCAyICogcDIgIyBUcnVlCisKKyMgRm9yIHAzOgoraGk9MioqNjQtMTsgbG89MioqNjQtMTsgej0yKio0MAorcDMgPSAyKio2NCAtIHogKyAxCisKK2hpLCBsbyA9IFIoaGksIGxvLCB6KSAgICAjIEZpcnN0IHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgU2Vjb25kIHJlZHVjdGlvbgoraGksIGxvID0gUihoaSwgbG8sIHopICAgICMgVGhpcmQgcmVkdWN0aW9uCitoaSAqIDIqKjY0ICsgbG8gPCAyICogcDMgIyBUcnVlCisKKworU3RlcCBkKSBwcmVzZXJ2ZXMgY29uZ3J1ZW5jZSBhbmQgeWllbGRzIGEgcmVzdWx0IDwgcDoKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgIENhc2UgaGkgPSAwOgorCisgICAgICAgQ2FzZSBsbyA8IHA6IHRyaXZpYWwuCisKKyAgICAgICBDYXNlIGxvID49IHA6CisKKyAgICAgICAgICBsbyA9PSBsbyAtIHAgICAobW9kIHApICAgICAgICAgICAgICMgcmVzdWx0IGlzIGNvbmdydWVudAorCisgICAgICAgICAgcCA8PSBsbyA8IDIqcCAgLT4gIDAgPD0gbG8gLSBwIDwgcCAjIHJlc3VsdCBpcyBpbiB0aGUgY29ycmVjdCByYW5nZQorCisgICBDYXNlIGhpID0gMToKKworICAgICAgIHAgPCAyKio2NCAvXCAyKio2NCArIGxvIDwgMipwICAtPiAgbG8gPCBwICAjIGxvIGlzIGFsd2F5cyBsZXNzIHRoYW4gcAorCisgICAgICAgMioqNjQgKyBsbyA9PSAyKio2NCArIChsbyAtIHApICAgKG1vZCBwKSAgICMgcmVzdWx0IGlzIGNvbmdydWVudAorCisgICAgICAgICAgICAgICAgICA9IGxvIC0gcCAgICMgZXhhY3RseSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgcHJldmlvdXMgUkhTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gdWludDY0X3QgYXJpdGhtZXRpYy4KKworICAgICAgIHAgPCAyKio2NCArIGxvIDwgMipwICAtPiAgMCA8IDIqKjY0ICsgKGxvIC0gcCkgPCBwICAjIGNvcnJlY3QgcmFuZ2UKKworCisKK1sxXSAgaHR0cDovL3d3dy5hcGZsb2F0Lm9yZy9hcGZsb2F0LzIuNDAvYXBmbG9hdC5wZGYKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLXBwcm8udHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZTZlNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvbXVsbW9kLXBwcm8udHh0CkBAIC0wLDAgKzEsMjY5IEBACisKKworKCogQ29weXJpZ2h0IChjKSAyMDExIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAqKQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAgICAgIENhbGN1bGF0ZSAoYSAqIGIpICUgcCB1c2luZyB0aGUgODAtYml0IHg4NyBGUFUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBIGRlc2NyaXB0aW9uIG9mIHRoZSBhbGdvcml0aG0gY2FuIGJlIGZvdW5kIGluIHRoZSBhcGZsb2F0IG1hbnVhbCBieQorVG9tbWlsYSBbMV0uCisKK1RoZSBwcm9vZiBmb2xsb3dzIGFuIGFyZ3VtZW50IG1hZGUgYnkgR3Jhbmx1bmQvTW9udGdvbWVyeSBpbiBbMl0uCisKKworRGVmaW5pdGlvbnMgYW5kIGFzc3VtcHRpb25zOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgODAtYml0IGV4dGVuZGVkIHByZWNpc2lvbiBmb3JtYXQgdXNlcyA2NCBiaXRzIGZvciB0aGUgc2lnbmlmaWNhbmQ6CisKKyAgKDEpIEYgPSA2NAorCitUaGUgbW9kdWx1cyBpcyBwcmltZSBhbmQgbGVzcyB0aGFuIDIqKjMxOgorCisgICgyKSAyIDw9IHAgPCAyKiozMQorCitUaGUgZmFjdG9ycyBhcmUgbGVzcyB0aGFuIHA6CisKKyAgKDMpIDAgPD0gYSA8IHAKKyAgKDQpIDAgPD0gYiA8IHAKKworVGhlIHByb2R1Y3QgYSAqIGIgaXMgbGVzcyB0aGFuIDIqKjYyIGFuZCBpcyB0aHVzIGV4YWN0IGluIDY0IGJpdHM6CisKKyAgKDUpIG4gPSBhICogYgorCitUaGUgcHJvZHVjdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW4gdGVybXMgb2YgcXVvdGllbnQgYW5kIHJlbWFpbmRlcjoKKworICAoNikgbiA9IHEgKiBwICsgcgorCitVc2luZyAoMyksICg0KSBhbmQgdGhlIGZhY3QgdGhhdCBwIGlzIHByaW1lLCB0aGUgcmVtYWluZGVyIGlzIGFsd2F5cworZ3JlYXRlciB0aGFuIHplcm86CisKKyAgKDcpIDAgPD0gcSA8IHAgIC9cICAxIDw9IHIgPCBwCisKKworU3RyYXRlZ3k6CistLS0tLS0tLS0KKworUHJlY2FsY3VsYXRlIHRoZSA4MC1iaXQgbG9uZyBkb3VibGUgaW52ZXJzZSBvZiBwLCB3aXRoIGEgbWF4aW11bQorcmVsYXRpdmUgZXJyb3Igb2YgMioqKDEtRik6CisKKyAgKDgpIHBpbnYgPSAobG9uZyBkb3VibGUpMS4wIC8gcAorCitDYWxjdWxhdGUgYW4gZXN0aW1hdGUgZm9yIHEgPSBmbG9vcihuL3ApLiBUaGUgbXVsdGlwbGljYXRpb24gaGFzIGFub3RoZXIKK21heGltdW0gcmVsYXRpdmUgZXJyb3Igb2YgMioqKDEtRik6CisKKyAgKDkpIHFlc3QgPSBuICogcGludgorCitJZiB3ZSBjYW4gc2hvdyB0aGF0IHEgPCBxZXN0IDwgcSsxLCB0aGVuIHRydW5jKHFlc3QpID0gcS4gSXQgaXMgdGhlbgorZWFzeSB0byByZWNvdmVyIHRoZSByZW1haW5kZXIgci4gVGhlIGNvbXBsZXRlIGFsZ29yaXRobSBpczoKKworICBhKSBTZXQgdGhlIGNvbnRyb2wgd29yZCB0byA2NC1iaXQgcHJlY2lzaW9uIGFuZCB0cnVuY2F0aW9uIG1vZGUuCisKKyAgYikgbiA9IGEgKiBiICAgICAgICAgICAgICAjIENhbGN1bGF0ZSBleGFjdCBwcm9kdWN0LgorCisgIGMpIHFlc3QgPSBuICogcGludiAgICAgICAgIyBDYWxjdWxhdGUgZXN0aW1hdGUgZm9yIHRoZSBxdW90aWVudC4KKworICBkKSBxID0gKHFlc3QrMioqNjMpLTIqKjYzICMgVHJ1bmNhdGUgcWVzdCB0byB0aGUgZXhhY3QgcXVvdGllbnQuCisKKyAgZikgciA9IG4gLSBxICogcCAgICAgICAgICAjIENhbGN1bGF0ZSByZW1haW5kZXIuCisKKworUHJvb2YgZm9yIHEgPCBxZXN0IDwgcSsxOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitVc2luZyB0aGUgY3VtdWxhdGl2ZSBlcnJvciwgdGhlIGVycm9yIGJvdW5kcyBmb3IgcWVzdCBhcmU6CisKKyAgICAgICAgICAgICAgICBuICAgICAgICAgICAgICAgICAgICAgICBuICogKDEgKyAyKiooMS1GKSkqKjIKKyAgKDkpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSA8PSBxZXN0IDw9ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIHAgKiAoMSArIDIqKigxLUYpKSoqMiAgICAgICAgICAgICAgICAgICAgICAgcAorCisKKyAgTGVtbWEgMToKKyAgLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgbiAgICAgICAgICAgICAgICAgICBxICogcCArIHIKKyAgICAoMTApIHEgPCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gPSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICBwICogKDEgKyAyKiooMS1GKSkqKjIgICBwICogKDEgKyAyKiooMS1GKSkqKjIKKworCisgICAgUHJvb2Y6CisgICAgfn5+fn5+CisKKyAgICAoSSkgICAgIHEgKiBwICogKDEgKyAyKiooMS1GKSkqKjIgPCBxICogcCArIHIKKworICAgIChJSSkgICAgcSAqIHAgKiAyKiooMi1GKSArIHEgKiBwICogMioqKDItMipGKSA8IHIKKworICAgIFVzaW5nICgxKSBhbmQgKDcpLCBpdCBpcyBzdWZmaWNpZW50IHRvIHNob3cgdGhhdDoKKworICAgIChJSUkpICAgcSAqIHAgKiAyKiooLTYyKSArIHEgKiBwICogMioqKC0xMjYpIDwgMSA8PSByCisKKyAgICAoSUlJKSBjYW4gZWFzaWx5IGJlIHZlcmlmaWVkIGJ5IHN1YnN0aXR1dGluZyB0aGUgbGFyZ2VzdCBwb3NzaWJsZQorICAgIHZhbHVlcyBwID0gMioqMzEtMSBhbmQgcSA9IDIqKjMxLTIuCisKKyAgICBUaGUgY3JpdGljYWwgY2FzZXMgb2NjdXIgd2hlbiByID0gMSwgbiA9IG0gKiBwICsgMS4gVGhlc2UgY2FzZXMKKyAgICBjYW4gYmUgZXhoYXVzdGl2ZWx5IHZlcmlmaWVkIHdpdGggYSB0ZXN0IHByb2dyYW0uCisKKworICBMZW1tYSAyOgorICAtLS0tLS0tLQorCisgICAgICAgICAgIG4gKiAoMSArIDIqKigxLUYpKSoqMiAgICAgKHEgKiBwICsgcikgKiAoMSArIDIqKigxLUYpKSoqMgorICAgICgxMSkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0gID0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIDwgIHEgKyAxCisgICAgICAgICAgICAgICAgICAgICBwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcAorCisgICAgUHJvb2Y6CisgICAgfn5+fn5+CisKKyAgICAoSSkgIChxICogcCArIHIpICsgKHEgKiBwICsgcikgKiAyKiooMi1GKSArIChxICogcCArIHIpICogMioqKDItMipGKSA8IHEgKiBwICsgcAorCisgICAgKElJKSAgKHEgKiBwICsgcikgKiAyKiooMi1GKSArIChxICogcCArIHIpICogMioqKDItMipGKSA8IHAgLSByCisKKyAgICBVc2luZyAoMSkgYW5kICg3KSwgaXQgaXMgc3VmZmljaWVudCB0byBzaG93IHRoYXQ6CisKKyAgICAoSUlJKSAocSAqIHAgKyByKSAqIDIqKigtNjIpICsgKHEgKiBwICsgcikgKiAyKiooLTEyNikgPCAxIDw9IHAgLSByCisKKyAgICAoSUlJKSBjYW4gZWFzaWx5IGJlIHZlcmlmaWVkIGJ5IHN1YnN0aXR1dGluZyB0aGUgbGFyZ2VzdCBwb3NzaWJsZQorICAgIHZhbHVlcyBwID0gMioqMzEtMSwgcSA9IDIqKjMxLTIgYW5kIHIgPSAyKiozMS0yLgorCisgICAgVGhlIGNyaXRpY2FsIGNhc2VzIG9jY3VyIHdoZW4gciA9IChwIC0gMSksIG4gPSBtICogcCAtIDEuIFRoZXNlIGNhc2VzCisgICAgY2FuIGJlIGV4aGF1c3RpdmVseSB2ZXJpZmllZCB3aXRoIGEgdGVzdCBwcm9ncmFtLgorCisKK1sxXSAgaHR0cDovL3d3dy5hcGZsb2F0Lm9yZy9hcGZsb2F0LzIuNDAvYXBmbG9hdC5wZGYKK1syXSAgaHR0cDovL2dtcGxpYi5vcmcvfnRlZ2UvZGl2Y25zdC1wbGRpOTQucGRmCisgICAgIFtTZWN0aW9uIDc6ICJVc2Ugb2YgZmxvYXRpbmcgcG9pbnQiXQorCisKKworKCogQ29xIHByb29mIGZvciAoMTApIGFuZCAoMTEpICopCisKK1JlcXVpcmUgSW1wb3J0IFpBcml0aC4KK1JlcXVpcmUgSW1wb3J0IFFBcml0aC4KK1JlcXVpcmUgSW1wb3J0IFFwb3dlci4KK1JlcXVpcmUgSW1wb3J0IFFhYnMuCitSZXF1aXJlIEltcG9ydCBQc2F0ei4KKworT3BlbiBTY29wZSBRX3Njb3BlLgorCisKK0x0YWMgcXJlZHVjZSBUIDo9CisgIHJld3JpdGUgPC0gKFFyZWRfY29ycmVjdCAoVCkpOyBzaW1wbCAoUXJlZCAoVCkpLgorCitUaGVvcmVtIFFsdF9tb3ZlX3JpZ2h0IDoKKyAgZm9yYWxsIHggeSB6OlEsIHggKyB6IDwgeSA8LT4geCA8IHkgLSB6LgorUHJvb2YuCisgIGludHJvcy4KKyAgc3BsaXQuCisgICAgaW50cm9zLgorICAgIHBzYXR6bCBRLgorICAgIGludHJvcy4KKyAgICBwc2F0emwgUS4KK1FlZC4KKworVGhlb3JlbSBRbHRfbXVsdF9ieV96IDoKKyAgZm9yYWxsIHggeSB6OlEsIDAgPCB6IC0+ICh4IDwgeSA8LT4geCAqIHogPCB5ICogeikuCitQcm9vZi4KKyAgaW50cm9zLgorICBzcGxpdC4KKyAgICBpbnRyb3MuCisgICAgYXBwbHkgUW11bHRfbHRfY29tcGF0X3IuIHRyaXZpYWwuIHRyaXZpYWwuCisgICAgaW50cm9zLgorICAgIHJld3JpdGUgPC0gKFFkaXZfbXVsdF9sIHggeikuIHJld3JpdGUgPC0gKFFkaXZfbXVsdF9sIHkgeikuCisgICAgYXBwbHkgUW11bHRfbHRfY29tcGF0X3IuCisgICAgYXBwbHkgUWx0X3NoaWZ0X2ludl9sLgorICAgIHRyaXZpYWwuIHBzYXR6bCBRLiB0cml2aWFsLiBwc2F0emwgUS4gcHNhdHpsIFEuCitRZWQuCisKK1RoZW9yZW0gUWxlX211bHRfcXVhZCA6CisgIGZvcmFsbCAoYSBiIGMgZDpRKSwKKyAgICAwIDw9IGEgLT4gYSA8PSBjIC0+CisgICAgMCA8PSBiIC0+IGIgPD0gZCAtPgorICAgICAgYSAqIGIgPD0gYyAqIGQuCisgIGludHJvcy4KKyAgcHNhdHogUS4KK1FlZC4KKworCitUaGVvcmVtIHFfbHRfcWVzdDoKKyAgZm9yYWxsIChwIHEgcjpRKSwKKyAgICAoMCA8IHApIC0+IChwIDw9ICgyIzEpXjMxIC0gMSkgLT4KKyAgICAoMCA8PSBxKSAtPiAocSA8PSBwIC0gMSkgLT4KKyAgICAoMSA8PSByKSAtPiAociA8PSBwIC0gMSkgLT4KKyAgICAgIHEgPCAocSAqIHAgKyByKSAvIChwICogKDEgKyAoMiMxKV4oLTYzKSleMikuCitQcm9vZi4KKyAgaW50cm9zLgorICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSAocCAqICgxICsgKDIjMSleKC02MykpXjIpKS4KKworICB1bmZvbGQgUWRpdi4KKyAgcmV3cml0ZSA8LSBRbXVsdF9hc3NvYy4KKyAgcmV3cml0ZSAoUW11bHRfY29tbSAoLyAocCAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpKSAocCAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIpKS4KKyAgcmV3cml0ZSBRbXVsdF9pbnZfci4KKyAgcmV3cml0ZSBRbXVsdF8xX3IuCisKKyAgYXNzZXJ0IChxICogKHAgKiAoMSArICgyICMgMSkgXiAoLTYzKSkgXiAyKSA9PSBxICogcCArIChxICogcCkgKiAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkpLgorICBxcmVkdWNlICgoMSArICgyICMgMSkgXiAoLTYzKSkgXiAyKS4KKyAgcXJlZHVjZSAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkuCisgIHJpbmdfc2ltcGxpZnkuCisgIHJlZmxleGl2aXR5LgorICByZXdyaXRlIEg1LgorCisgIHJld3JpdGUgUXBsdXNfY29tbS4KKyAgcmV3cml0ZSBRbHRfbW92ZV9yaWdodC4KKyAgcmluZ19zaW1wbGlmeSAocSAqIHAgKyByIC0gcSAqIHApLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKworICBhcHBseSBRbHRfbGVfdHJhbnMgd2l0aCAoeSA6PSAxKS4KKyAgcmV3cml0ZSBRbHRfbXVsdF9ieV96IHdpdGggKHogOj0gODUwNzA1OTE3MzAyMzQ2MTU4NjU4NDM2NTE4NTc5NDIwNTI4NjQgIyAxODQ0Njc0NDA3MzcwOTU1MTYxNykuCisgIHJpbmdfc2ltcGxpZnkuCisKKyAgYXBwbHkgUWxlX2x0X3RyYW5zIHdpdGggKHkgOj0gKCgyICMgMSkgXiAzMSAtICgyIzEpKSAqICgoMiAjIDEpIF4gMzEgLSAxKSkuCisgIGFwcGx5IFFsZV9tdWx0X3F1YWQuCisgIGFzc3VtcHRpb24uIHBzYXR6bCBRLiBwc2F0emwgUS4gcHNhdHpsIFEuIHBzYXR6bCBRLiBwc2F0emwgUS4gYXNzdW1wdGlvbi4gcHNhdHpsIFEuIHBzYXR6bCBRLgorUWVkLgorCitUaGVvcmVtIHFlc3RfbHRfcXBsdXMxOgorICBmb3JhbGwgKHAgcSByOlEpLAorICAgICgwIDwgcCkgLT4gKHAgPD0gKDIjMSleMzEgLSAxKSAtPgorICAgICgwIDw9IHEpIC0+IChxIDw9IHAgLSAxKSAtPgorICAgICgxIDw9IHIpIC0+IChyIDw9IHAgLSAxKSAtPgorICAgICAgKChxICogcCArIHIpICogKDEgKyAoMiMxKV4oLTYzKSleMikgLyBwIDwgcSArIDEuCitQcm9vZi4KKyAgaW50cm9zLgorICByZXdyaXRlIFFsdF9tdWx0X2J5X3ogd2l0aCAoeiA6PSBwKS4KKworICB1bmZvbGQgUWRpdi4KKyAgcmV3cml0ZSA8LSBRbXVsdF9hc3NvYy4KKyAgcmV3cml0ZSAoUW11bHRfY29tbSAoLyBwKSBwKS4KKyAgcmV3cml0ZSBRbXVsdF9pbnZfci4KKyAgcmV3cml0ZSBRbXVsdF8xX3IuCisKKyAgYXNzZXJ0ICgocSAqIHAgKyByKSAqICgxICsgKDIgIyAxKSBeICgtNjMpKSBeIDIgPT0gcSAqIHAgKyByICsgKHEgKiBwICsgcikgKiAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkpLgorICBxcmVkdWNlICgoMSArICgyICMgMSkgXiAoLTYzKSkgXiAyKS4KKyAgcXJlZHVjZSAoKDIgIyAxKSBeICgtNjIpICsgKDIgIyAxKSBeICgtMTI2KSkuCisgIHJpbmdfc2ltcGxpZnkuIHJlZmxleGl2aXR5LgorICByZXdyaXRlIEg1LgorCisgIHJld3JpdGUgPC0gUXBsdXNfYXNzb2MuIHJld3JpdGUgPC0gUXBsdXNfY29tbS4gcmV3cml0ZSBRbHRfbW92ZV9yaWdodC4KKyAgcmluZ19zaW1wbGlmeSAoKHEgKyAxKSAqIHAgLSBxICogcCkuCisKKyAgcmV3cml0ZSA8LSBRcGx1c19jb21tLiByZXdyaXRlIFFsdF9tb3ZlX3JpZ2h0LgorCisgIGFwcGx5IFFsdF9sZV90cmFucyB3aXRoICh5IDo9IDEpLgorICBxcmVkdWNlICgoMiAjIDEpIF4gKC02MikgKyAoMiAjIDEpIF4gKC0xMjYpKS4KKyAgCisgIHJld3JpdGUgUWx0X211bHRfYnlfeiB3aXRoICh6IDo9IDg1MDcwNTkxNzMwMjM0NjE1ODY1ODQzNjUxODU3OTQyMDUyODY0ICMgMTg0NDY3NDQwNzM3MDk1NTE2MTcpLgorICByaW5nX3NpbXBsaWZ5LgorCisgIHJpbmdfc2ltcGxpZnkgaW4gSDAuCisgIGFwcGx5IFFsZV9sdF90cmFucyB3aXRoICh5IDo9ICgyMTQ3NDgzNjQ2ICMgMSkgKiAoMjE0NzQ4MzY0NyAjIDEpICsgKDIxNDc0ODM2NDYgIyAxKSkuCisKKyAgYXBwbHkgUXBsdXNfbGVfY29tcGF0LgorICBhcHBseSBRbGVfbXVsdF9xdWFkLgorICBhc3N1bXB0aW9uLiBwc2F0emwgUS4gYXV0byB3aXRoIHFhcml0aC4gYXNzdW1wdGlvbi4gcHNhdHpsIFEuCisgIGF1dG8gd2l0aCBxYXJpdGguIGF1dG8gd2l0aCBxYXJpdGguCisgIHBzYXR6bCBRLiBwc2F0emwgUS4gYXNzdW1wdGlvbi4KK1FlZC4KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS9zaXgtc3RlcC50eHQgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvc2l4LXN0ZXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OTE0N2YKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvc2l4LXN0ZXAudHh0CkBAIC0wLDAgKzEsNjMgQEAKKworCisoKiBDb3B5cmlnaHQgKGMpIDIwMTEgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuICopCisKKworVGhlIFNpeCBTdGVwIFRyYW5zZm9ybToKKz09PT09PT09PT09PT09PT09PT09PT09CisKK0luIGxpYm1wZGVjLCB0aGUgc2l4LXN0ZXAgdHJhbnNmb3JtIGlzIHRoZSBNYXRyaXggRm91cmllciBUcmFuc2Zvcm0gKFNlZQorbWF0cml4LXRyYW5zZm9ybS50eHQpIGluIGRpc2d1aXNlLiBJdCBpcyBjYWxsZWQgc2l4LXN0ZXAgdHJhbnNmb3JtIGFmdGVyCithIHZhcmlhbnQgdGhhdCBhcHBlYXJzIGluIFsxXS4gVGhlIGFsZ29yaXRobSByZXF1aXJlcyB0aGF0IHRoZSBpbnB1dAorYXJyYXkgY2FuIGJlIHZpZXdlZCBhcyBhbiBSKkMgbWF0cml4LgorCisKK0FsZ29yaXRobSBzaXgtc3RlcCAoZm9yd2FyZCB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgMWEpIFRyYW5zcG9zZSB0aGUgbWF0cml4LgorCisgIDFiKSBBcHBseSBhIGxlbmd0aCBSIEZOVCB0byBlYWNoIHJvdy4KKworICAxYykgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKKyAgMikgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGoqQyttKSBieSByKiooaiptKS4KKworICAzKSBBcHBseSBhIGxlbmd0aCBDIEZOVCB0byBlYWNoIHJvdy4KKworICA0KSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworTm90ZSB0aGF0IHN0ZXBzIDFhKSAtIDFjKSBhcmUgZXhhY3RseSBlcXVpdmFsZW50IHRvIHN0ZXAgMSkgb2YgdGhlIE1hdHJpeAorRm91cmllciBUcmFuc2Zvcm0uIEZvciBsYXJnZSBSLCBpdCBpcyBmYXN0ZXIgdG8gdHJhbnNwb3NlIHR3aWNlIGFuZCBkbworYSB0cmFuc2Zvcm0gb24gdGhlIHJvd3MgdGhhbiB0byBwZXJmb3JtIGEgY29sdW1uIHRyYW5zcG9zZSBkaXJlY3RseS4KKworCisKK0FsZ29yaXRobSBzaXgtc3RlcCAoaW52ZXJzZSB0cmFuc2Zvcm0pOgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgMCkgVmlldyB0aGUgbWF0cml4IGFzIGEgQypSIG1hdHJpeC4KKworICAxKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeCwgcHJvZHVjaW5nIGFuIFIqQyBtYXRyaXguCisKKyAgMikgQXBwbHkgYSBsZW5ndGggQyBGTlQgdG8gZWFjaCByb3cuCisKKyAgMykgTXVsdGlwbHkgZWFjaCBtYXRyaXggZWxlbWVudCAoYWRkcmVzc2VkIGJ5IGkqQytuKSBieSByKiooaSpuKS4KKworICA0YSkgVHJhbnNwb3NlIHRoZSBtYXRyaXguCisKKyAgNGIpIEFwcGx5IGEgbGVuZ3RoIFIgRk5UIHRvIGVhY2ggcm93LgorCisgIDRjKSBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4KKworQWdhaW4sIHN0ZXBzIDRhKSAtIDRjKSBhcmUgZXF1aXZhbGVudCB0byBzdGVwIDQpIG9mIHRoZSBNYXRyaXggRm91cmllcgorVHJhbnNmb3JtLgorCisKKworLS0gCisKKyAgWzFdIERhdmlkIEguIEJhaWxleTogRkZUcyBpbiBFeHRlcm5hbCBvciBIaWVyYXJjaGljYWwgTWVtb3J5CisgICAgICBodHRwOi8vY3JkLmxibC5nb3YvfmRoYmFpbGV5L2RoYnBhcGVycy8KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvdW1vZGFyaXRoLmxpc3AgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL2xpdGVyYXR1cmUvdW1vZGFyaXRoLmxpc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBhMTRhNAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbGl0ZXJhdHVyZS91bW9kYXJpdGgubGlzcApAQCAtMCwwICsxLDY5MiBAQAorOworOyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKzsKKzsgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cis7IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworOyBhcmUgbWV0OgorOworOyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorOyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCis7Cis7IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cis7ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKzsgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzsKKzsgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKzsgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCis7IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCis7IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCis7IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCis7IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCis7IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorOyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorOyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCis7IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKzsgU1VDSCBEQU1BR0UuCis7CisKKworKGluLXBhY2thZ2UgIkFDTDIiKQorCisoaW5jbHVkZS1ib29rICJhcml0aG1ldGljL3RvcC13aXRoLW1ldGEiIDpkaXIgOnN5c3RlbSkKKyhpbmNsdWRlLWJvb2sgImFyaXRobWV0aWMtMi9mbG9vci1tb2QvZmxvb3ItbW9kIiA6ZGlyIDpzeXN0ZW0pCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgIFByb29mcyBmb3Igc2V2ZXJhbCBmdW5jdGlvbnMgaW4gdW1vZGFyaXRoLmgKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis7OyAgICAgICAgICAgICAgICAgICAgICAgICAgSGVscGVyIHRoZW9yZW1zCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnRobSBlbGltLW1vZC1tPHg8MiptCisgIChpbXBsaWVzIChhbmQgKDw9IG0geCkKKyAgICAgICAgICAgICAgICAoPCB4ICgqIDIgbSkpCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCB4IG0pCisgICAgICAgICAgICAgICAgICAoKyB4ICgtIG0pKSkpKQorCisoZGVmdGhtIG1vZGF1eC0xYQorICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgMCB4KSAoPCAwIG0pCisgICAgICAgICAgICAgICAgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoLSB4KSBtKQorICAgICAgICAgICAgICAgICAgKCsgKC0geCkgbSkpKSkKKworKGRlZnRobSBtb2RhdXgtMWIKKyAgKGltcGxpZXMgKGFuZCAoPCAoLSB4KSBtKSAoPCB4IDApICg8IDAgbSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIHgpIChyYXRpb25hbHAgbSkpCisgICAgICAgICAgIChlcXVhbCAobW9kIHggbSkKKyAgICAgICAgICAgICAgICAgICgrIHggbSkpKQorICA6aGludHMgKCgiR29hbCIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKC0geCkpKSkpKSkKKworKGRlZnRobSBtb2RhdXgtMWMKKyAgKGltcGxpZXMgKGFuZCAoPCB4IG0pICg8IDAgeCkgKDwgMCBtKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeCkgKHJhdGlvbmFscCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgeCBtKQorICAgICAgICAgICAgICAgICAgeCkpKQorCisoZGVmdGhtIG1vZGF1eC0yYQorICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgKG1vZCAoKyBiIHgpIG0pIGIpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyAoLSBtKSBiIHgpIG0pCisgICAgICAgICAgICAgICAgICAoKyAoLSBtKSBiIChtb2QgeCBtKSkpKSkKKworKGRlZnRobSBtb2RhdXgtMmIKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGIpICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8IChtb2QgKCsgYiB4KSBtKSBiKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiB4KSBtKQorICAgICAgICAgICAgICAgICAgKCsgKC0gbSkgYiAobW9kIHggbSkpKSkKKyAgOmhpbnRzICgoIkdvYWwiIDp1c2UgKG1vZGF1eC0yYSkpKSkKKworKGRlZnRobSBsaW5lYXItbW9kLTEKKyAgKGltcGxpZXMgKGFuZCAoPCB4IG0pICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgbSkpCisgICAgICAgICAoZXF1YWwgKDwgeCAobW9kICgrICgtIGIpIHgpIG0pKQorICAgICAgICAgICAgICAgICg8IHggYikpKQorICA6aGludHMgKCgiR29hbCIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMWEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYiAoLSB4KSkpKSkpKSkKKworKGRlZnRobSBsaW5lYXItbW9kLTIKKyAgKGltcGxpZXMgKGFuZCAoPCAwIGIpICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKQorICAgICAgICAgICAgICAgIChuYXRwIG0pKQorICAgICAgICAgICAoZXF1YWwgKDwgKG1vZCB4IG0pCisgICAgICAgICAgICAgICAgICAgICAobW9kICgrICgtIGIpIHgpIG0pKQorICAgICAgICAgICAgICAgICAgKDwgKG1vZCB4IG0pIGIpKSkpCisKKyhkZWZ0aG0gbGluZWFyLW1vZC0zCisgIChpbXBsaWVzIChhbmQgKDwgeCBtKSAoPCBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKG5hdHAgYikKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKDw9IGIgKG1vZCAoKyBiIHgpIG0pKQorICAgICAgICAgICAgICAgICAgKDwgKCsgYiB4KSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6dXNlICgoOmluc3RhbmNlIGVsaW0tbW9kLW08eDwyKm0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYiB4KSkpKSkpKQorCisoZGVmdGhtIG1vZGF1eC0yYworICAoaW1wbGllcyAoYW5kICg8IDAgYikgKDwgYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIHgpIChuYXRwIGIpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDw9IGIgKG1vZCAoKyBiIHgpIG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgYiB4KSBtKQorICAgICAgICAgICAgICAgICAgKCsgYiAobW9kIHggbSkpKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgKjEvOCcnIiA6dXNlIChsaW5lYXItbW9kLTMpKSkpCisKKyhkZWZ0aG1kIG1vZGF1eC0yZAorICAoaW1wbGllcyAoYW5kICg8IHggbSkgKDwgMCB4KSAoPCAwIG0pCisgICAgICAgICAgICAgICAgKDwgKC0gbSkgYikgKDwgYiAwKSAocmF0aW9uYWxwIG0pCisgICAgICAgICAgICAgICAgKDw9IHggKG1vZCAoKyBiIHgpIG0pKQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeCkgKHJhdGlvbmFscCBiKSkKKyAgICAgICAgICAgKGVxdWFsICgrICgtIG0pIChtb2QgKCsgYiB4KSBtKSkKKyAgICAgICAgICAgICAgICAgICgrIGIgeCkpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPD0gMCAoKyBiIHgpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDInIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIGIgeCkpKSkpKSkKKworKGRlZnRobSBtb2QtbS1iCisgIChpbXBsaWVzIChhbmQgKDwgMCB4KSAoPCAwIGIpICg8IDAgbSkKKyAgICAgICAgICAgICAgICAoPCB4IGIpICg8IGIgbSkKKyAgICAgICAgICAgICAgICAobmF0cCB4KSAobmF0cCBiKSAobmF0cCBtKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKCsgKG1vZCAoLSB4KSBtKSBiKSBtKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSB4KSBiKSkpKQorCisKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZG1vZCwgc3VibW9kCis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGFkZG1vZCAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChzIChtb2QgKCsgYSBiKSBiYXNlKSkKKyAgICAgICAgIChzIChpZiAoPCBzIGEpIChtb2QgKC0gcyBtKSBiYXNlKSBzKSkKKyAgICAgICAgIChzIChpZiAoPj0gcyBtKSAobW9kICgtIHMgbSkgYmFzZSkgcykpKQorICAgICAgICBzKSkKKworKGRlZnRobWQgYWRkbW9kLWNvcnJlY3QKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKwkJKDwgYSBtKSAoPD0gYiBtKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYSkgKG5hdHAgYikpCisgICAgICAgICAgIChlcXVhbCAoYWRkbW9kIGEgYiBtIGJhc2UpCisgICAgICAgICAgICAgICAgICAobW9kICgrIGEgYikgbSkpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPD0gYmFzZSAoKyBhIGIpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDIuMSciIDp1c2UgKCg6aW5zdGFuY2UgZWxpbS1tb2QtbTx4PDIqbQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIGEgYikpKSkpKSkKKworKGRlZnVuIHN1Ym1vZCAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChkIChtb2QgKC0gYSBiKSBiYXNlKSkKKyAgICAgICAgIChkIChpZiAoPCBhIGQpIChtb2QgKCsgZCBtKSBiYXNlKSBkKSkpCisgICAgICAgIGQpKQorCisoZGVmdGhtZCBzdWJtb2QtYXV4MQorICAoaW1wbGllcyAoYW5kICg8IGEgKG1vZCAoKyBhICgtIGIpKSBiYXNlKSkKKyAgICAgICAgICAgICAgICAoPCAwIGJhc2UpICg8IGEgYmFzZSkgKDw9IGIgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBiYXNlKSAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKDwgYSBiKSkKKyAgOnJ1bGUtY2xhc3NlcyA6Zm9yd2FyZC1jaGFpbmluZykKKworKGRlZnRobWQgc3VibW9kLWF1eDIKKyAgKGltcGxpZXMgKGFuZCAoPD0gKG1vZCAoKyBhICgtIGIpKSBiYXNlKSBhKQorICAgICAgICAgICAgICAgICg8IDAgYmFzZSkgKDwgYSBiYXNlKSAoPCBiIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYmFzZSkgKG5hdHAgYSkgKG5hdHAgYikpCisgICAgICAgICAgICg8PSBiIGEpKQorICA6cnVsZS1jbGFzc2VzIDpmb3J3YXJkLWNoYWluaW5nKQorCisoZGVmdGhtZCBzdWJtb2QtY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhIG0pICg8PSBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChzdWJtb2QgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKC0gYSBiKSBtKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8PSBiYXNlICgrIGEgYikpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMi4yIiA6dXNlICgoOmluc3RhbmNlIHN1Ym1vZC1hdXgxKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDIuMicnJyIgOmNhc2VzICgoYW5kICg8IDAgKCsgYSAoLSBiKSBtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKCsgYSAoLSBiKSBtKSBtKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAyLjEiIDp1c2UgKCg6aW5zdGFuY2Ugc3VibW9kLWF1eDIpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yIiA6dXNlICgoOmluc3RhbmNlIHN1Ym1vZC1hdXgxKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMSIgOnVzZSAoKDppbnN0YW5jZSBzdWJtb2QtYXV4MikpKSkpCisKKworKGRlZnVuIHN1Ym1vZC0yIChhIGIgbSBiYXNlKQorICAobGV0KiAoKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgYikgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKyhkZWZ0aG0gc3VibW9kLTItY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhIG0pICg8PSBiIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChzdWJtb2QtMiBhIGIgbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIGIpIG0pKSkKKyAgOmhpbnRzICgoIlN1YmdvYWwgMiciIDpjYXNlcyAoKGFuZCAoPCAwICgrIGEgKC0gYikgbSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDwgKCsgYSAoLSBiKSBtKSBtKSkpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgZXh0LXN1Ym1vZCBpcyBjb3JyZWN0Cis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKzsgYSA8IDIqbSwgYiA8IDIqbQorKGRlZnVuIGV4dC1zdWJtb2QgKGEgYiBtIGJhc2UpCisgIChsZXQqICgoYSAoaWYgKD49IGEgbSkgKC0gYSBtKSBhKSkKKyAgICAgICAgIChiIChpZiAoPj0gYiBtKSAoLSBiIG0pIGIpKQorICAgICAgICAgKGQgKG1vZCAoLSBhIGIpIGJhc2UpKQorICAgICAgICAgKGQgKGlmICg8IGEgYikgKG1vZCAoKyBkIG0pIGJhc2UpIGQpKSkKKyAgICAgICAgZCkpCisKKzsgYSA8IDIqbSwgYiA8IDIqbQorKGRlZnVuIGV4dC1zdWJtb2QtMiAoYSBiIG0gYmFzZSkKKyAgKGxldCogKChhIChtb2QgYSBtKSkKKyAgICAgICAgIChiIChtb2QgYiBtKSkKKyAgICAgICAgIChkIChtb2QgKC0gYSBiKSBiYXNlKSkKKyAgICAgICAgIChkIChpZiAoPCBhIGIpIChtb2QgKCsgZCBtKSBiYXNlKSBkKSkpCisgICAgICAgIGQpKQorCisoZGVmdGhtZCBleHQtc3VibW9kLWV4dC1zdWJtb2QtMi1lcXVhbAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBhICgqIDIgbSkpICg8IGIgKCogMiBtKSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGEpIChuYXRwIGIpKQorICAgICAgICAgICAoZXF1YWwgKGV4dC1zdWJtb2QgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChleHQtc3VibW9kLTIgYSBiIG0gYmFzZSkpKSkKKworKGRlZnRobWQgZXh0LXN1Ym1vZC0yLWNvcnJlY3QKKyAgKGltcGxpZXMgKGFuZCAoPCAwIG0pICg8IG0gYmFzZSkKKwkJKDwgYSAoKiAyIG0pKSAoPCBiICgqIDIgbSkpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBhKSAobmF0cCBiKSkKKyAgICAgICAgICAgKGVxdWFsIChleHQtc3VibW9kLTIgYSBiIG0gYmFzZSkKKyAgICAgICAgICAgICAgICAgIChtb2QgKC0gYSBiKSBtKSkpKQorCisKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR3LXJlZHVjZSBpcyBjb3JyZWN0Cis7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyhkZWZ1biBkdy1yZWR1Y2UgKGhpIGxvIG0gYmFzZSkKKyAgKGxldCogKChyMSAobW9kIGhpIG0pKQorICAgICAgICAgKHIyIChtb2QgKCsgKCogcjEgYmFzZSkgbG8pIG0pKSkKKyAgICAgICAgcjIpKQorCisoZGVmdGhtZCBkdy1yZWR1Y2UtY29ycmVjdAorICAoaW1wbGllcyAoYW5kICg8IDAgbSkgKDwgbSBiYXNlKQorCQkoPCBoaSBiYXNlKSAoPCBsbyBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIG0pIChuYXRwIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChkdy1yZWR1Y2UgaGkgbG8gbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoKyAoKiBoaSBiYXNlKSBsbykgbSkpKSkKKworKGRlZnRobWQgPD0tbXVsdGlwbHktYm90aC1zaWRlcy1ieS16CisgIChpbXBsaWVzIChhbmQgKHJhdGlvbmFscCB4KSAocmF0aW9uYWxwIHkpCisgICAgICAgICAgICAgICAgKDwgMCB6KSAocmF0aW9uYWxwIHopKQorICAgICAgICAgICAoZXF1YWwgKDw9IHggeSkKKyAgICAgICAgICAgICAgICAgICg8PSAoKiB6IHgpICgqIHogeSkpKSkpCisKKyhkZWZ0aG1kIGR3LXJlZHVjZS1hdXgxCisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgbSkgKG5hdHAgYmFzZSkKKyAgICAgICAgICAgICAgICAoPCBsbyBiYXNlKSAobmF0cCBsbykKKyAgICAgICAgICAgICAgICAoPCB4IG0pIChuYXRwIHgpKQorICAgICAgICAgICAoPCAoKyBsbyAoKiBiYXNlIHgpKSAoKiBiYXNlIG0pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDw9ICgrIHggMSkgbSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxJyciIDpjYXNlcyAoKDw9ICgqIGJhc2UgKCsgeCAxKSkgKCogYmFzZSBtKSkpKQorICAgICAgICAgICgic3ViZ29hbCAxLjIiIDp1c2UgKCg6aW5zdGFuY2UgPD0tbXVsdGlwbHktYm90aC1zaWRlcy1ieS16CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyAxIHgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHkgbSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh6IGJhc2UpKSkpKSkKKworKGRlZnRobSBkdy1yZWR1Y2UtYXV4MgorICAoaW1wbGllcyAoYW5kICg8IHggKCogYmFzZSBtKSkKKyAgICAgICAgICAgICAgICAoPCAwIG0pICg8IG0gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKSAobmF0cCB4KSkKKyAgICAgICAgICAgKDwgKGZsb29yIHggbSkgYmFzZSkpKQorCis7OyBUaGlzIGlzIHRoZSBuZWNlc3NhcnkgY29uZGl0aW9uIGZvciB1c2luZyBfbXBkX2Rpdl93b3JkcygpLgorKGRlZnRobWQgZHctcmVkdWNlLXNlY29uZC1xdW90aWVudC1maXRzLWluLXNpbmdsZS13b3JkCisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisgICAgICAgICAgICAgICAgKDwgaGkgYmFzZSkgKDwgbG8gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykKKyAgICAgICAgICAgICAgICAoZXF1YWwgcjEgKG1vZCBoaSBtKSkpCisgICAgICAgICAgICg8IChmbG9vciAoKyAoKiByMSBiYXNlKSBsbykgbSkKKyAgICAgICAgICAgICAgYmFzZSkpCisgIDpoaW50cyAoKCJHb2FsIiA6Y2FzZXMgKCg8IHIxIG0pKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMScnIiA6Y2FzZXMgKCg8ICgrIGxvICgqIGJhc2UgKG1vZCBoaSBtKSkpICgqIGJhc2UgbSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yIiA6dXNlICgoOmluc3RhbmNlIGR3LXJlZHVjZS1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAobW9kIGhpIG0pKSkpKSkpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHctc3VibW9kIGlzIGNvcnJlY3QKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKGRlZnVuIGR3LXN1Ym1vZCAoYSBoaSBsbyBtIGJhc2UpCisgIChsZXQqICgociAoZHctcmVkdWNlIGhpIGxvIG0gYmFzZSkpCisgICAgICAgICAoZCAobW9kICgtIGEgcikgYmFzZSkpCisgICAgICAgICAoZCAoaWYgKDwgYSByKSAobW9kICgrIGQgbSkgYmFzZSkgZCkpKQorICAgICAgICBkKSkKKworKGRlZnRobWQgZHctc3VibW9kLWF1eDEKKyAgKGltcGxpZXMgKGFuZCAobmF0cCBhKSAoPCAwIG0pIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKG5hdHAgeCkgKGVxdWFsIHIgKG1vZCB4IG0pKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKC0gYSB4KSBtKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhIHIpIG0pKSkpCisKKyhkZWZ0aG1kIGR3LXN1Ym1vZC1jb3JyZWN0CisgIChpbXBsaWVzIChhbmQgKDwgMCBtKSAoPCBtIGJhc2UpCisgICAgICAgICAgICAgICAgKG5hdHAgYSkgKDwgYSBtKSAKKwkJKDwgaGkgYmFzZSkgKDwgbG8gYmFzZSkKKyAgICAgICAgICAgICAgICAobmF0cCBtKSAobmF0cCBiYXNlKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgIChlcXVhbCAoZHctc3VibW9kIGEgaGkgbG8gbSBiYXNlKQorICAgICAgICAgICAgICAgICAgKG1vZCAoLSBhICgrICgqIGJhc2UgaGkpIGxvKSkgbSkpKQorICA6aGludHMgKCgiR29hbCIgOmluLXRoZW9yeSAoZGlzYWJsZSBkdy1yZWR1Y2UpCisgICAgICAgICAgICAgICAgICA6dXNlICgoOmluc3RhbmNlIGR3LXN1Ym1vZC1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ICgrIGxvICgqIGJhc2UgaGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHIgKGR3LXJlZHVjZSBoaSBsbyBtIGJhc2UpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICg6aW5zdGFuY2UgZHctcmVkdWNlLWNvcnJlY3QpKSkpKQorCisKKzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgICAgICAgICAgIEFOU0kgQyBhcml0aG1ldGljIGZvciB1aW50NjRfdAorOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisoZGVmdW4gYWRkIChhIGIpCisgIChtb2QgKCsgYSBiKQorICAgICAgIChleHB0IDIgNjQpKSkKKworKGRlZnVuIHN1YiAoYSBiKQorICAobW9kICgtIGEgYikKKyAgICAgICAoZXhwdCAyIDY0KSkpCisKKyhkZWZ1biA8PCAodyBuKQorICAobW9kICgqIHcgKGV4cHQgMiBuKSkKKyAgICAgICAoZXhwdCAyIDY0KSkpCisKKyhkZWZ1biA+PiAodyBuKQorICAoZmxvb3IgdyAoZXhwdCAyIG4pKSkKKworOzsgam9pbiB1cHBlciBhbmQgbG93ZXIgaGFsZiBvZiBhIGRvdWJsZSB3b3JkLCB5aWVsZGluZyBhIDEyOCBiaXQgbnVtYmVyCisoZGVmdW4gam9pbiAoaGkgbG8pCisgICgrICgqIChleHB0IDIgNjQpIGhpKSBsbykpCisKKworOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFzdCBtb2R1bGFyIHJlZHVjdGlvbgorOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOzsgVGhlc2UgYXJlIHRoZSB0aHJlZSBwcmltZXMgdXNlZCBpbiB0aGUgTnVtYmVyIFRoZW9yZXRpYyBUcmFuc2Zvcm0uCis7OyBBIGZhc3QgbW9kdWxhciByZWR1Y3Rpb24gc2NoZW1lIGV4aXN0cyBmb3IgYWxsIG9mIHRoZW0uCisoZGVmbWFjcm8gcDEgKCkKKyAgKCsgKGV4cHQgMiA2NCkgKC0gKGV4cHQgMiAzMikpIDEpKQorCisoZGVmbWFjcm8gcDIgKCkKKyAgKCsgKGV4cHQgMiA2NCkgKC0gKGV4cHQgMiAzNCkpIDEpKQorCisoZGVmbWFjcm8gcDMgKCkKKyAgKCsgKGV4cHQgMiA2NCkgKC0gKGV4cHQgMiA0MCkpIDEpKQorCisKKzs7IHJlZHVjZSB0aGUgZG91YmxlIHdvcmQgbnVtYmVyIGhpKjIqKjY0ICsgbG8gKG1vZCBwMSkKKyhkZWZ1biBzaW1wbGUtbW9kLXJlZHVjZS1wMSAoaGkgbG8pCisgICgrICgqIChleHB0IDIgMzIpIGhpKSAoLSBoaSkgbG8pKQorCis7OyByZWR1Y2UgdGhlIGRvdWJsZSB3b3JkIG51bWJlciBoaSoyKio2NCArIGxvIChtb2QgcDIpCisoZGVmdW4gc2ltcGxlLW1vZC1yZWR1Y2UtcDIgKGhpIGxvKQorICAoKyAoKiAoZXhwdCAyIDM0KSBoaSkgKC0gaGkpIGxvKSkKKworOzsgcmVkdWNlIHRoZSBkb3VibGUgd29yZCBudW1iZXIgaGkqMioqNjQgKyBsbyAobW9kIHAzKQorKGRlZnVuIHNpbXBsZS1tb2QtcmVkdWNlLXAzIChoaSBsbykKKyAgKCsgKCogKGV4cHQgMiA0MCkgaGkpICgtIGhpKSBsbykpCisKKworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICAgICAgVGhlIG1vZHVsYXIgcmVkdWN0aW9ucyBnaXZlbiBhYm92ZSBhcmUgY29ycmVjdAorOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhkZWZ0aG1kIGNvbmdydWVuY2UtcDEtYXV4CisgIChlcXVhbCAoKiAoZXhwdCAyIDY0KSBoaSkKKyAgICAgICAgICgrICgqIChwMSkgaGkpCisgICAgICAgICAgICAoKiAoZXhwdCAyIDMyKSBoaSkKKyAgICAgICAgICAgICgtIGhpKSkpKQorCisoZGVmdGhtZCBjb25ncnVlbmNlLXAyLWF1eAorICAoZXF1YWwgKCogKGV4cHQgMiA2NCkgaGkpCisgICAgICAgICAoKyAoKiAocDIpIGhpKQorICAgICAgICAgICAgKCogKGV4cHQgMiAzNCkgaGkpCisgICAgICAgICAgICAoLSBoaSkpKSkKKworKGRlZnRobWQgY29uZ3J1ZW5jZS1wMy1hdXgKKyAgKGVxdWFsICgqIChleHB0IDIgNjQpIGhpKQorICAgICAgICAgKCsgKCogKHAzKSBoaSkKKyAgICAgICAgICAgICgqIChleHB0IDIgNDApIGhpKQorICAgICAgICAgICAgKC0gaGkpKSkpCisKKyhkZWZ0aG1kIG1vZC1hdWdtZW50CisgIChpbXBsaWVzIChhbmQgKHJhdGlvbmFscCB4KQorICAgICAgICAgICAgICAgIChyYXRpb25hbHAgeSkKKyAgICAgICAgICAgICAgICAocmF0aW9uYWxwIG0pKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyB4IHkpIG0pCisgICAgICAgICAgICAgICAgICAobW9kICgrIHggKG1vZCB5IG0pKSBtKSkpKQorCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMS1jb25ncnVlbnQKKyAgKGltcGxpZXMgKGFuZCAoaW50ZWdlcnAgaGkpCisgICAgICAgICAgICAgICAgKGludGVnZXJwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKHNpbXBsZS1tb2QtcmVkdWNlLXAxIGhpIGxvKSAocDEpKQorICAgICAgICAgICAgICAgICAgKG1vZCAoam9pbiBoaSBsbykgKHAxKSkpKQorICA6aGludHMgKCgiR29hbCcnIiA6dXNlICgoOmluc3RhbmNlIGNvbmdydWVuY2UtcDEtYXV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoOmluc3RhbmNlIG1vZC1hdWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKHAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyAoLSBoaSkgbG8gKCogKGV4cHQgMiAzMikgaGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeSAoKiAocDEpIGhpKSkpKSkpKQorCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMi1jb25ncnVlbnQKKyAgKGltcGxpZXMgKGFuZCAoaW50ZWdlcnAgaGkpCisgICAgICAgICAgICAgICAgKGludGVnZXJwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKSAocDIpKQorICAgICAgICAgICAgICAgICAgKG1vZCAoam9pbiBoaSBsbykgKHAyKSkpKQorICA6aGludHMgKCgiR29hbCcnIiA6dXNlICgoOmluc3RhbmNlIGNvbmdydWVuY2UtcDItYXV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoOmluc3RhbmNlIG1vZC1hdWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKHAyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyAoLSBoaSkgbG8gKCogKGV4cHQgMiAzNCkgaGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeSAoKiAocDIpIGhpKSkpKSkpKQorCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMy1jb25ncnVlbnQKKyAgKGltcGxpZXMgKGFuZCAoaW50ZWdlcnAgaGkpCisgICAgICAgICAgICAgICAgKGludGVnZXJwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QgKHNpbXBsZS1tb2QtcmVkdWNlLXAzIGhpIGxvKSAocDMpKQorICAgICAgICAgICAgICAgICAgKG1vZCAoam9pbiBoaSBsbykgKHAzKSkpKQorICA6aGludHMgKCgiR29hbCcnIiA6dXNlICgoOmluc3RhbmNlIGNvbmdydWVuY2UtcDMtYXV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAoOmluc3RhbmNlIG1vZC1hdWdtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKHAzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCAoKyAoLSBoaSkgbG8gKCogKGV4cHQgMiA0MCkgaGkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeSAoKiAocDMpIGhpKSkpKSkpKQorCisKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis7ICBXZSBuZWVkIGEgbnVtYmVyIGxlc3MgdGhhbiAyKnAsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgdHJpY2sgZnJvbQorOyAgZWxpbS1tb2QtbTx4PDIqbSBmb3IgdGhlIGZpbmFsIHJlZHVjdGlvbi4KKzsgIEZvciBwMSwgdHdvIG1vZHVsYXIgcmVkdWN0aW9ucyBhcmUgc3VmZmljaWVudCwgZm9yIHAyIGFuZCBwMyB0aHJlZS4KKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKzs7IHAxOiB0aGUgZmlyc3QgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKio5NgorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDEtPC0yKio5NgorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMSBoaSBsbykKKyAgICAgICAgICAgICAgKGV4cHQgMiA5NikpKSkKKworOzsgcDE6IHRoZSBzZWNvbmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKnAxCisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMS08LTIqcDEKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiA5NikpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAxIGhpIGxvKQorICAgICAgICAgICAgICAoKiAyIChwMSkpKSkpCisKKworOzsgcDI6IHRoZSBmaXJzdCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjk4CisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMi08LTIqKjk4CisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKQorICAgICAgICAgICAgICAoZXhwdCAyIDk4KSkpKQorCis7OyBwMjogdGhlIHNlY29uZCByZWR1Y3Rpb24gaXMgbGVzcyB0aGFuIDIqKjY5CisoZGVmdGhtZCBzaW1wbGUtbW9kLXJlZHVjZS1wMi08LTIqNjkKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCAoam9pbiBoaSBsbykgKGV4cHQgMiA5OCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAyIGhpIGxvKQorICAgICAgICAgICAgICAoZXhwdCAyIDY5KSkpKQorCis7OyBwMzogdGhlIHRoaXJkIHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMipwMgorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDItPC0yKnAyCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgKGpvaW4gaGkgbG8pIChleHB0IDIgNjkpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMiBoaSBsbykKKyAgICAgICAgICAgICAgKCogMiAocDIpKSkpKQorCisKKzs7IHAzOiB0aGUgZmlyc3QgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKioxMDQKKyhkZWZ0aG1kIHNpbXBsZS1tb2QtcmVkdWNlLXAzLTwtMioqMTA0CisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAzIGhpIGxvKQorICAgICAgICAgICAgICAoZXhwdCAyIDEwNCkpKSkKKworOzsgcDM6IHRoZSBzZWNvbmQgcmVkdWN0aW9uIGlzIGxlc3MgdGhhbiAyKio4MQorKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDMtPC0yKio4MQorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IChqb2luIGhpIGxvKSAoZXhwdCAyIDEwNCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKDwgKHNpbXBsZS1tb2QtcmVkdWNlLXAzIGhpIGxvKQorICAgICAgICAgICAgICAoZXhwdCAyIDgxKSkpKQorCis7OyBwMzogdGhlIHRoaXJkIHJlZHVjdGlvbiBpcyBsZXNzIHRoYW4gMipwMworKGRlZnRobWQgc2ltcGxlLW1vZC1yZWR1Y2UtcDMtPC0yKnAzCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgKGpvaW4gaGkgbG8pIChleHB0IDIgODEpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgICg8IChzaW1wbGUtbW9kLXJlZHVjZS1wMyBoaSBsbykKKyAgICAgICAgICAgICAgKCogMiAocDMpKSkpKQorCisKKzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorOyAgICAgIFRoZSBzaW1wbGUgbW9kdWxhciByZWR1Y3Rpb25zLCBhZGFwdGVkIGZvciBjb21waWxlciBmcmllbmRseSBDCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworKGRlZnVuIG1vZC1yZWR1Y2UtcDEgKGhpIGxvKQorICAobGV0KiAoKHkgaGkpCisgICAgICAgICAoeCB5KQorICAgICAgICAgKGhpICg+PiBoaSAzMikpCisgICAgICAgICAoeCAoc3ViIGxvIHgpKQorICAgICAgICAgKGhpIChpZiAoPiB4IGxvKSAoKyBoaSAtMSkgaGkpKQorICAgICAgICAgKHkgKDw8IHkgMzIpKQorICAgICAgICAgKGxvIChhZGQgeSB4KSkKKyAgICAgICAgIChoaSAoaWYgKDwgbG8geSkgKCsgaGkgMSkgaGkpKSkKKyAgICAgICAgKCsgKCogaGkgKGV4cHQgMiA2NCkpIGxvKSkpCisKKyhkZWZ1biBtb2QtcmVkdWNlLXAyIChoaSBsbykKKyAgKGxldCogKCh5IGhpKQorICAgICAgICAgKHggeSkKKyAgICAgICAgIChoaSAoPj4gaGkgMzApKQorICAgICAgICAgKHggKHN1YiBsbyB4KSkKKyAgICAgICAgIChoaSAoaWYgKD4geCBsbykgKCsgaGkgLTEpIGhpKSkKKyAgICAgICAgICh5ICg8PCB5IDM0KSkKKyAgICAgICAgIChsbyAoYWRkIHkgeCkpCisgICAgICAgICAoaGkgKGlmICg8IGxvIHkpICgrIGhpIDEpIGhpKSkpCisgICAgICAgICgrICgqIGhpIChleHB0IDIgNjQpKSBsbykpKQorCisoZGVmdW4gbW9kLXJlZHVjZS1wMyAoaGkgbG8pCisgIChsZXQqICgoeSBoaSkKKyAgICAgICAgICh4IHkpCisgICAgICAgICAoaGkgKD4+IGhpIDI0KSkKKyAgICAgICAgICh4IChzdWIgbG8geCkpCisgICAgICAgICAoaGkgKGlmICg+IHggbG8pICgrIGhpIC0xKSBoaSkpCisgICAgICAgICAoeSAoPDwgeSA0MCkpCisgICAgICAgICAobG8gKGFkZCB5IHgpKQorICAgICAgICAgKGhpIChpZiAoPCBsbyB5KSAoKyBoaSAxKSBoaSkpKQorICAgICAgICAoKyAoKiBoaSAoZXhwdCAyIDY0KSkgbG8pKSkKKworCis7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzsgICAgIFRoZSBjb21waWxlciBmcmllbmRseSB2ZXJzaW9ucyBhcmUgZXF1YWwgdG8gdGhlIHNpbXBsZSB2ZXJzaW9ucworOyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1hdXgxCisgIChpbXBsaWVzIChhbmQgKDw9IDAgYSkgKG5hdHAgYSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCAoLSBtKSBiKSAoPD0gYiAwKQorICAgICAgICAgICAgICAgIChpbnRlZ2VycCBiKQorICAgICAgICAgICAgICAgICg8IChtb2QgKCsgYiBhKSBtKQorICAgICAgICAgICAgICAgICAgIChtb2QgYSBtKSkpCisgICAgICAgICAgIChlcXVhbCAobW9kICgrIGIgYSkgbSkKKyAgICAgICAgICAgICAgICAgICgrIGIgKG1vZCBhIG0pKSkpCisgIDpoaW50cyAoKCJTdWJnb2FsIDIiIDp1c2UgKCg6aW5zdGFuY2UgbW9kYXV4LTFiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKCsgYSBiKSkpKSkpKQorCisoZGVmdGhtIG1vZC1yZWR1Y2UtYXV4MgorICAoaW1wbGllcyAoYW5kICg8PSAwIGEpIChuYXRwIGEpIChuYXRwIG0pCisgICAgICAgICAgICAgICAgKDwgYiBtKSAobmF0cCBiKQorICAgICAgICAgICAgICAgICg8IChtb2QgKCsgYiBhKSBtKQorICAgICAgICAgICAgICAgICAgIChtb2QgYSBtKSkpCisgICAgICAgICAgIChlcXVhbCAoKyBtIChtb2QgKCsgYiBhKSBtKSkKKyAgICAgICAgICAgICAgICAgICgrIGIgKG1vZCBhIG0pKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1hdXgzCisgIChpbXBsaWVzIChhbmQgKDwgMCBhKSAobmF0cCBhKSAobmF0cCBtKQorICAgICAgICAgICAgICAgICg8ICgtIG0pIGIpICg8IGIgMCkKKyAgICAgICAgICAgICAgICAoaW50ZWdlcnAgYikKKyAgICAgICAgICAgICAgICAoPD0gKG1vZCBhIG0pCisgICAgICAgICAgICAgICAgICAgIChtb2QgKCsgYiBhKSBtKSkpCisgICAgICAgICAgIChlcXVhbCAoKyAoLSBtKSAobW9kICgrIGIgYSkgbSkpCisgICAgICAgICAgICAgICAgICAoKyBiIChtb2QgYSBtKSkpKQorICA6aGludHMgKCgiU3ViZ29hbCAxLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZGF1eC0xYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IGIpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEnJyIgOnVzZSAoKDppbnN0YW5jZSBtb2RhdXgtMmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4IEkpKSkpKSkKKworCisoZGVmdGhtIG1vZC1yZWR1Y2UtYXV4NAorICAoaW1wbGllcyAoYW5kICg8IDAgYSkgKG5hdHAgYSkgKG5hdHAgbSkKKyAgICAgICAgICAgICAgICAoPCBiIG0pIChuYXRwIGIpCisgICAgICAgICAgICAgICAgKDw9IChtb2QgYSBtKQorICAgICAgICAgICAgICAgICAgICAobW9kICgrIGIgYSkgbSkpKQorICAgICAgICAgICAoZXF1YWwgKG1vZCAoKyBiIGEpIG0pCisgICAgICAgICAgICAgICAgICAoKyBiIChtb2QgYSBtKSkpKSkKKworCisoZGVmdGhtIG1vZC1yZWR1Y2UtcDE9PXNpbXBsZS1tb2QtcmVkdWNlLXAxCisgIChpbXBsaWVzIChhbmQgKDwgaGkgKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKDwgbG8gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgKG5hdHAgaGkpIChuYXRwIGxvKSkKKyAgICAgICAgICAgKGVxdWFsIChtb2QtcmVkdWNlLXAxIGhpIGxvKQorICAgICAgICAgICAgICAgICAgKHNpbXBsZS1tb2QtcmVkdWNlLXAxIGhpIGxvKSkpCisgIDpoaW50cyAoKCJHb2FsIiA6aW4tdGhlb3J5IChkaXNhYmxlIGV4cHQpCisgICAgICAgICAgICAgICAgICA6Y2FzZXMgKCg8IDAgaGkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzMikgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDMyKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzIpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4NAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzMikgaGkpKSkpKSkpCisKKworKGRlZnRobSBtb2QtcmVkdWNlLXAyPT1zaW1wbGUtbW9kLXJlZHVjZS1wMgorICAoaW1wbGllcyAoYW5kICg8IGhpIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICg8IGxvIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgIChuYXRwIGhpKSAobmF0cCBsbykpCisgICAgICAgICAgIChlcXVhbCAobW9kLXJlZHVjZS1wMiBoaSBsbykKKyAgICAgICAgICAgICAgICAgIChzaW1wbGUtbW9kLXJlZHVjZS1wMiBoaSBsbykpKQorICA6aGludHMgKCgiR29hbCIgOmNhc2VzICgoPCAwIGhpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4yJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzQpIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4yLjEnIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiAzNCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDM0KSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMS4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgMzQpIGhpKSkpKSkpKQorCisKKyhkZWZ0aG0gbW9kLXJlZHVjZS1wMz09c2ltcGxlLW1vZC1yZWR1Y2UtcDMKKyAgKGltcGxpZXMgKGFuZCAoPCBoaSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAoPCBsbyAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAobmF0cCBoaSkgKG5hdHAgbG8pKQorICAgICAgICAgICAoZXF1YWwgKG1vZC1yZWR1Y2UtcDMgaGkgbG8pCisgICAgICAgICAgICAgICAgICAoc2ltcGxlLW1vZC1yZWR1Y2UtcDMgaGkgbG8pKSkKKyAgOmhpbnRzICgoIkdvYWwiIDpjYXNlcyAoKDwgMCBoaSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjIuMiciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXgxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDQwKSBoaSkpKSkpCisgICAgICAgICAgKCJTdWJnb2FsIDEuMi4xJyIgOnVzZSAoKDppbnN0YW5jZSBtb2QtcmVkdWNlLWF1eDMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtIChleHB0IDIgNjQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGIgKCsgKC0gSEkpIExPKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhICgqIChleHB0IDIgNDApIGhpKSkpKSkKKyAgICAgICAgICAoIlN1YmdvYWwgMS4xLjInIiA6dXNlICgoOmluc3RhbmNlIG1vZC1yZWR1Y2UtYXV4MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG0gKGV4cHQgMiA2NCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYiAoKyAoLSBISSkgTE8pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgKCogKGV4cHQgMiA0MCkgaGkpKSkpKQorICAgICAgICAgICgiU3ViZ29hbCAxLjEuMSciIDp1c2UgKCg6aW5zdGFuY2UgbW9kLXJlZHVjZS1hdXg0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobSAoZXhwdCAyIDY0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChiICgrICgtIEhJKSBMTykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSAoKiAoZXhwdCAyIDQwKSBoaSkpKSkpKSkKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNjM1MGYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5jCkBAIC0wLDAgKzEsMjkyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJtZW1vcnkuaCIKKworCisvKiBHdWFyYW50ZWVkIG1pbmltdW0gYWxsb2NhdGlvbiBmb3IgYSBjb2VmZmljaWVudC4gTWF5IGJlIGNoYW5nZWQgb25jZQorICAgYXQgcHJvZ3JhbSBzdGFydCB1c2luZyBtcGRfc2V0bWluYWxsb2MoKS4gKi8KK21wZF9zc2l6ZV90IE1QRF9NSU5BTExPQyA9IE1QRF9NSU5BTExPQ19NSU47CisKKy8qIEN1c3RvbSBhbGxvY2F0aW9uIGFuZCBmcmVlIGZ1bmN0aW9ucyAqLwordm9pZCAqKCogbXBkX21hbGxvY2Z1bmMpKHNpemVfdCBzaXplKSA9IG1hbGxvYzsKK3ZvaWQgKigqIG1wZF9yZWFsbG9jZnVuYykodm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkgPSByZWFsbG9jOwordm9pZCAqKCogbXBkX2NhbGxvY2Z1bmMpKHNpemVfdCBubWVtYiwgc2l6ZV90IHNpemUpID0gY2FsbG9jOwordm9pZCAoKiBtcGRfZnJlZSkodm9pZCAqcHRyKSA9IGZyZWU7CisKKworLyogZW11bGF0ZSBjYWxsb2MgaWYgaXQgaXMgbm90IGF2YWlsYWJsZSAqLwordm9pZCAqCittcGRfY2FsbG9jZnVuY19lbShzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKQoreworICAgIHZvaWQgKnB0cjsKKyAgICBzaXplX3QgcmVxOworICAgIG1wZF9zaXplX3Qgb3ZlcmZsb3c7CisKKyNpZiBNUERfU0laRV9NQVggPCBTSVpFX01BWAorICAgIC8qIGZ1bGxfY292ZXJhZ2UgdGVzdCBvbmx5ICovCisgICAgaWYgKG5tZW1iID4gTVBEX1NJWkVfTUFYIHx8IHNpemUgPiBNUERfU0laRV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2VuZGlmCisKKyAgICByZXEgPSBtdWxfc2l6ZV90X292ZXJmbG93KChtcGRfc2l6ZV90KW5tZW1iLCAobXBkX3NpemVfdClzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gbXBkX21hbGxvY2Z1bmMocmVxKTsKKyAgICBpZiAocHRyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIC8qIHVzZWQgb24gdWludDMyX3Qgb3IgdWludDY0X3QgKi8KKyAgICBtZW1zZXQocHRyLCAwLCByZXEpOworCisgICAgcmV0dXJuIHB0cjsKK30KKworCisvKiBtYWxsb2Mgd2l0aCBvdmVyZmxvdyBjaGVja2luZyAqLwordm9pZCAqCittcGRfYWxsb2MobXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplKQoreworICAgIG1wZF9zaXplX3QgcmVxLCBvdmVyZmxvdzsKKworICAgIHJlcSA9IG11bF9zaXplX3Rfb3ZlcmZsb3cobm1lbWIsIHNpemUsICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBtcGRfbWFsbG9jZnVuYyhyZXEpOworfQorCisvKiBjYWxsb2Mgd2l0aCBvdmVyZmxvdyBjaGVja2luZyAqLwordm9pZCAqCittcGRfY2FsbG9jKG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSkKK3sKKyAgICBtcGRfc2l6ZV90IG92ZXJmbG93OworCisgICAgKHZvaWQpbXVsX3NpemVfdF9vdmVyZmxvdyhubWVtYiwgc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG1wZF9jYWxsb2NmdW5jKG5tZW1iLCBzaXplKTsKK30KKworLyogcmVhbGxvYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nICovCit2b2lkICoKK21wZF9yZWFsbG9jKHZvaWQgKnB0ciwgbXBkX3NpemVfdCBubWVtYiwgbXBkX3NpemVfdCBzaXplLCB1aW50OF90ICplcnIpCit7CisgICAgdm9pZCAqbmV3OworICAgIG1wZF9zaXplX3QgcmVxLCBvdmVyZmxvdzsKKworICAgIHJlcSA9IG11bF9zaXplX3Rfb3ZlcmZsb3cobm1lbWIsIHNpemUsICZvdmVyZmxvdyk7CisgICAgaWYgKG92ZXJmbG93KSB7CisgICAgICAgICplcnIgPSAxOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIG5ldyA9IG1wZF9yZWFsbG9jZnVuYyhwdHIsIHJlcSk7CisgICAgaWYgKG5ldyA9PSBOVUxMKSB7CisgICAgICAgICplcnIgPSAxOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIHJldHVybiBuZXc7Cit9CisKKy8qIHN0cnVjdCBoYWNrIG1hbGxvYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nICovCit2b2lkICoKK21wZF9zaF9hbGxvYyhtcGRfc2l6ZV90IHN0cnVjdF9zaXplLCBtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUpCit7CisgICAgbXBkX3NpemVfdCByZXEsIG92ZXJmbG93OworCisgICAgcmVxID0gbXVsX3NpemVfdF9vdmVyZmxvdyhubWVtYiwgc2l6ZSwgJm92ZXJmbG93KTsKKyAgICBpZiAob3ZlcmZsb3cpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVxID0gYWRkX3NpemVfdF9vdmVyZmxvdyhyZXEsIHN0cnVjdF9zaXplLCAmb3ZlcmZsb3cpOworICAgIGlmIChvdmVyZmxvdykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbXBkX21hbGxvY2Z1bmMocmVxKTsKK30KKworCisvKiBBbGxvY2F0ZSBhIG5ldyBkZWNpbWFsIHdpdGggYSBjb2VmZmljaWVudCBvZiBsZW5ndGggJ253b3JkcycuIEluIGNhc2UKKyAgIG9mIGFuIGVycm9yIHRoZSByZXR1cm4gdmFsdWUgaXMgTlVMTC4gKi8KK21wZF90ICoKK21wZF9xbmV3X3NpemUobXBkX3NzaXplX3QgbndvcmRzKQoreworICAgIG1wZF90ICpyZXN1bHQ7CisKKyAgICBud29yZHMgPSAobndvcmRzIDwgTVBEX01JTkFMTE9DKSA/IE1QRF9NSU5BTExPQyA6IG53b3JkczsKKworICAgIHJlc3VsdCA9IG1wZF9hbGxvYygxLCBzaXplb2YgKnJlc3VsdCk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9hbGxvYyhud29yZHMsIHNpemVvZiAqcmVzdWx0LT5kYXRhKTsKKyAgICBpZiAocmVzdWx0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0LT5mbGFncyA9IDA7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+ZGlnaXRzID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IDA7CisgICAgcmVzdWx0LT5hbGxvYyA9IG53b3JkczsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qIEFsbG9jYXRlIGEgbmV3IGRlY2ltYWwgd2l0aCBhIGNvZWZmaWNpZW50IG9mIGxlbmd0aCBNUERfTUlOQUxMT0MuCisgICBJbiBjYXNlIG9mIGFuIGVycm9yIHRoZSByZXR1cm4gdmFsdWUgaXMgTlVMTC4gKi8KK21wZF90ICoKK21wZF9xbmV3KHZvaWQpCit7CisgICAgcmV0dXJuIG1wZF9xbmV3X3NpemUoTVBEX01JTkFMTE9DKTsKK30KKworLyogQWxsb2NhdGUgbmV3IGRlY2ltYWwuIENhbGxlciBjYW4gY2hlY2sgZm9yIE5VTEwgb3IgTVBEX01hbGxvY19lcnJvci4KKyAgIFJhaXNlcyBvbiBlcnJvci4gKi8KK21wZF90ICoKK21wZF9uZXcobXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIG1wZF90ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBtcGRfcW5ldygpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBtcGRfYWRkc3RhdHVzX3JhaXNlKGN0eCwgTVBEX01hbGxvY19lcnJvcik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qCisgKiBJbnB1dDogJ3Jlc3VsdCcgaXMgYSBzdGF0aWMgbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudC4KKyAqIEFzc3VtcHRpb246ICdud29yZHMnID49IHJlc3VsdC0+YWxsb2MuCisgKgorICogUmVzaXplIHRoZSBzdGF0aWMgY29lZmZpY2llbnQgdG8gYSBsYXJnZXIgZHluYW1pYyBvbmUgYW5kIGNvcHkgdGhlCisgKiBleGlzdGluZyBkYXRhLiBJZiBzdWNjZXNzZnVsLCB0aGUgdmFsdWUgb2YgJ3Jlc3VsdCcgaXMgdW5jaGFuZ2VkLgorICogT3RoZXJ3aXNlLCBzZXQgJ3Jlc3VsdCcgdG8gTmFOIGFuZCB1cGRhdGUgJ3N0YXR1cycgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9zd2l0Y2hfdG9fZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90ICpwID0gcmVzdWx0LT5kYXRhOworCisgICAgYXNzZXJ0KG53b3JkcyA+PSByZXN1bHQtPmFsbG9jKTsKKworICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9hbGxvYyhud29yZHMsIHNpemVvZiAqcmVzdWx0LT5kYXRhKTsKKyAgICBpZiAocmVzdWx0LT5kYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0LT5kYXRhID0gcDsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0LT5leHAgPSByZXN1bHQtPmRpZ2l0cyA9IHJlc3VsdC0+bGVuID0gMDsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtZW1jcHkocmVzdWx0LT5kYXRhLCBwLCByZXN1bHQtPmFsbG9jICogKHNpemVvZiAqcmVzdWx0LT5kYXRhKSk7CisgICAgcmVzdWx0LT5hbGxvYyA9IG53b3JkczsKKyAgICBtcGRfc2V0X2R5bmFtaWNfZGF0YShyZXN1bHQpOworICAgIHJldHVybiAxOworfQorCisvKgorICogSW5wdXQ6ICdyZXN1bHQnIGlzIGEgc3RhdGljIG1wZF90IHdpdGggYSBzdGF0aWMgY29lZmZpY2llbnQuCisgKgorICogQ29udmVydCB0aGUgY29lZmZpY2llbnQgdG8gYSBkeW5hbWljIG9uZSB0aGF0IGlzIGluaXRpYWxpemVkIHRvIHplcm8uIElmCisgKiBtYWxsb2MgZmFpbHMsIHNldCAncmVzdWx0JyB0byBOYU4gYW5kIHVwZGF0ZSAnc3RhdHVzJyB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3N3aXRjaF90b19keW5femVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCAqcCA9IHJlc3VsdC0+ZGF0YTsKKworICAgIHJlc3VsdC0+ZGF0YSA9IG1wZF9jYWxsb2MobndvcmRzLCBzaXplb2YgKnJlc3VsdC0+ZGF0YSk7CisgICAgaWYgKHJlc3VsdC0+ZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YSA9IHA7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBtcGRfc2V0X3Bvc2l0aXZlKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdC0+ZXhwID0gcmVzdWx0LT5kaWdpdHMgPSByZXN1bHQtPmxlbiA9IDA7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX01hbGxvY19lcnJvcjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmVzdWx0LT5hbGxvYyA9IG53b3JkczsKKyAgICBtcGRfc2V0X2R5bmFtaWNfZGF0YShyZXN1bHQpOworCisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBJbnB1dDogJ3Jlc3VsdCcgaXMgYSBzdGF0aWMgb3IgYSBkeW5hbWljIG1wZF90IHdpdGggYSBkeW5hbWljIGNvZWZmaWNpZW50LgorICogUmVzaXplIHRoZSBjb2VmZmljaWVudCB0byBsZW5ndGggJ253b3Jkcyc6CisgKiAgIENhc2UgbndvcmRzID4gcmVzdWx0LT5hbGxvYzoKKyAqICAgICBJZiByZWFsbG9jIGlzIHN1Y2Nlc3NmdWw6CisgKiAgICAgICAncmVzdWx0JyBoYXMgYSBsYXJnZXIgY29lZmZpY2llbnQgYnV0IHRoZSBzYW1lIHZhbHVlLiBSZXR1cm4gMS4KKyAqICAgICBPdGhlcndpc2U6CisgKiAgICAgICBTZXQgJ3Jlc3VsdCcgdG8gTmFOLCB1cGRhdGUgc3RhdHVzIHdpdGggTVBEX01hbGxvY19lcnJvciBhbmQgcmV0dXJuIDAuCisgKiAgIENhc2UgbndvcmRzIDwgcmVzdWx0LT5hbGxvYzoKKyAqICAgICBJZiByZWFsbG9jIGlzIHN1Y2Nlc3NmdWw6CisgKiAgICAgICAncmVzdWx0JyBoYXMgYSBzbWFsbGVyIGNvZWZmaWNpZW50LiByZXN1bHQtPmxlbiBpcyB1bmRlZmluZWQuIFJldHVybiAxLgorICogICAgIE90aGVyd2lzZSAodW5saWtlbHkpOgorICogICAgICAgJ3Jlc3VsdCcgaXMgdW5jaGFuZ2VkLiBSZXVzZSB0aGUgbm93IG92ZXJzaXplZCBjb2VmZmljaWVudC4gUmV0dXJuIDEuCisgKi8KK2ludAorbXBkX3JlYWxsb2NfZHluKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50OF90IGVyciA9IDA7CisKKyAgICByZXN1bHQtPmRhdGEgPSBtcGRfcmVhbGxvYyhyZXN1bHQtPmRhdGEsIG53b3Jkcywgc2l6ZW9mICpyZXN1bHQtPmRhdGEsICZlcnIpOworICAgIGlmICghZXJyKSB7CisgICAgICAgIHJlc3VsdC0+YWxsb2MgPSBud29yZHM7CisgICAgfQorICAgIGVsc2UgaWYgKG53b3JkcyA+IHJlc3VsdC0+YWxsb2MpIHsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0LT5leHAgPSByZXN1bHQtPmRpZ2l0cyA9IHJlc3VsdC0+bGVuID0gMDsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gMTsKK30KKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2E0YTU2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIE1FTU9SWV9ICisjZGVmaW5lIE1FTU9SWV9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKK2ludCBtcGRfc3dpdGNoX3RvX2R5bihtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfc3dpdGNoX3RvX2R5bl96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHNpemUsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9yZWFsbG9jX2R5bihtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKKworCisjZW5kaWYKKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1Zjc2MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL21wZGVjaW1hbC5jCkBAIC0wLDAgKzEsODE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8bWF0aC5oPgorI2luY2x1ZGUgImJhc2Vhcml0aC5oIgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJjb252b2x1dGUuaCIKKyNpbmNsdWRlICJjcnQuaCIKKyNpbmNsdWRlICJtZW1vcnkuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKworI2lmZGVmIFBQUk8KKyAgI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICAgI2luY2x1ZGUgPGZsb2F0Lmg+CisgICAgI3ByYWdtYSBmZW52X2FjY2VzcyhvbikKKyAgI2VsaWYgIWRlZmluZWQoX19PcGVuQlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pCisgICAgLyogQzk5ICovCisgICAgI2luY2x1ZGUgPGZlbnYuaD4KKyAgICAjcHJhZ21hIFNUREMgRkVOVl9BQ0NFU1MgT04KKyAgI2VuZGlmCisjZW5kaWYKKworCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgI2RlZmluZSBBTFdBWVNfSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyNlbGlmIGRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorICAjZGVmaW5lIEFMV0FZU19JTkxJTkUKKyAgI3VuZGVmIGlubGluZQorICAjZGVmaW5lIGlubGluZQorI2Vsc2UKKyAgI2lmZGVmIFRFU1RfQ09WRVJBR0UKKyAgICAjZGVmaW5lIEFMV0FZU19JTkxJTkUKKyAgI2Vsc2UKKyAgICAjZGVmaW5lIEFMV0FZU19JTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKyAgI2VuZGlmCisjZW5kaWYKKworCisjZGVmaW5lIE1QRF9ORVdUT05ESVZfQ1VUT0ZGIDEwMjRMCisKKyNkZWZpbmUgTVBEX05FV19TVEFUSUMobmFtZSwgZmxhZ3MsIGV4cCwgZGlnaXRzLCBsZW4pIFwKKyAgICAgICAgbXBkX3VpbnRfdCBuYW1lIyNfZGF0YVtNUERfTUlOQUxMT0NfTUFYXTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbXBkX3QgbmFtZSA9IHtmbGFnc3xNUERfU1RBVElDfE1QRF9TVEFUSUNfREFUQSwgZXhwLCBkaWdpdHMsIFwKKyAgICAgICAgICAgICAgICAgICAgICBsZW4sIE1QRF9NSU5BTExPQ19NQVgsIG5hbWUjI19kYXRhfQorCisjZGVmaW5lIE1QRF9ORVdfQ09OU1QobmFtZSwgZmxhZ3MsIGV4cCwgZGlnaXRzLCBsZW4sIGFsbG9jLCBpbml0dmFsKSBcCisgICAgICAgIG1wZF91aW50X3QgbmFtZSMjX2RhdGFbYWxsb2NdID0ge2luaXR2YWx9OyAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1wZF90IG5hbWUgPSB7ZmxhZ3N8TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgZXhwLCBkaWdpdHMsICBcCisgICAgICAgICAgICAgICAgICAgICAgbGVuLCBhbGxvYywgbmFtZSMjX2RhdGF9CisKKyNkZWZpbmUgTVBEX05FV19TSEFSRUQobmFtZSwgYSkgXAorICAgICAgICBtcGRfdCBuYW1lID0geyhhLT5mbGFncyZ+TVBEX0RBVEFGTEFHUyl8TVBEX1NUQVRJQ3xNUERfU0hBUkVEX0RBVEEsIFwKKyAgICAgICAgICAgICAgICAgICAgICBhLT5leHAsIGEtPmRpZ2l0cywgYS0+bGVuLCBhLT5hbGxvYywgYS0+ZGF0YX0KKworCitzdGF0aWMgbXBkX3VpbnRfdCBkYXRhX29uZVsxXSA9IHsxfTsKK3N0YXRpYyBtcGRfdWludF90IGRhdGFfemVyb1sxXSA9IHswfTsKK3N0YXRpYyBjb25zdCBtcGRfdCBvbmUgPSB7TVBEX1NUQVRJQ3xNUERfQ09OU1RfREFUQSwgMCwgMSwgMSwgMSwgZGF0YV9vbmV9Oworc3RhdGljIGNvbnN0IG1wZF90IG1pbnVzX29uZSA9IHtNUERfTkVHfE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfb25lfTsKK3N0YXRpYyBjb25zdCBtcGRfdCB6ZXJvID0ge01QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIDAsIDEsIDEsIDEsIGRhdGFfemVyb307CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBfbXBkX2NoZWNrX2V4cChtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cyk7CitzdGF0aWMgdm9pZCBfc2V0dHJpcGxlKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3Qgc2lnbiwgbXBkX3VpbnRfdCBhLAorICAgICAgICAgICAgICAgICAgICAgICBtcGRfc3NpemVfdCBleHApOworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdCBfbXBkX3JlYWxfc2l6ZShtcGRfdWludF90ICpkYXRhLCBtcGRfc3NpemVfdCBzaXplKTsKKworc3RhdGljIHZvaWQgX21wZF9xYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworc3RhdGljIGlubGluZSB2b2lkIF9tcGRfcW11bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitzdGF0aWMgdm9pZCBfbXBkX2Jhc2VfbmRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpOworc3RhdGljIGlubGluZSB2b2lkIF9tcGRfcXBvd191aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgZXhwLCB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworbXBkX3VpbnRfdCBtcGRfcXNzaGlmdHIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4pOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgIFBlcmZvcm1hbmNlIGNyaXRpY2FsIGlubGluZSBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIENPTkZJR182NAorLyogRGlnaXRzIGluIGEgd29yZCwgcHJpbWFyaWx5IHVzZWZ1bCBmb3IgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZC4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfd29yZF9kaWdpdHMobXBkX3VpbnRfdCB3b3JkKQoreworICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzldKSB7CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzRdKSB7CisgICAgICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsyXSkgeworICAgICAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxXSkgPyAxIDogMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFszXSkgPyAzIDogNDsKKyAgICAgICAgfQorICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs2XSkgeworICAgICAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzVdKSA/IDUgOiA2OworICAgICAgICB9CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzhdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbN10pID8gNyA6IDg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDk7CisgICAgfQorICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzE0XSkgeworICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsxMV0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxMF0pID8gMTAgOiAxMTsKKyAgICAgICAgfQorICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsxM10pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxMl0pID8gMTIgOiAxMzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTQ7CisgICAgfQorICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzE4XSkgeworICAgICAgICBpZiAod29yZCA8IG1wZF9wb3cxMFsxNl0pIHsKKyAgICAgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFsxNV0pID8gMTUgOiAxNjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMTddKSA/IDE3IDogMTg7CisgICAgfQorCisgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzE5XSkgPyAxOSA6IDIwOworfQorI2Vsc2UKK0FMV0FZU19JTkxJTkUgaW50CittcGRfd29yZF9kaWdpdHMobXBkX3VpbnRfdCB3b3JkKQoreworICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzRdKSB7CisgICAgICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzJdKSB7CisgICAgICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbMV0pID8gMSA6IDI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICh3b3JkIDwgbXBkX3BvdzEwWzNdKSA/IDMgOiA0OworICAgIH0KKyAgICBpZiAod29yZCA8IG1wZF9wb3cxMFs2XSkgeworICAgICAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbNV0pID8gNSA6IDY7CisgICAgfQorICAgIGlmICh3b3JkIDwgbXBkX3BvdzEwWzhdKSB7CisgICAgICAgIHJldHVybiAod29yZCA8IG1wZF9wb3cxMFs3XSkgPyA3IDogODsKKyAgICB9CisKKyAgICByZXR1cm4gKHdvcmQgPCBtcGRfcG93MTBbOV0pID8gOSA6IDEwOworfQorI2VuZGlmCisKKworLyogQWRqdXN0ZWQgZXhwb25lbnQgKi8KK0FMV0FZU19JTkxJTkUgbXBkX3NzaXplX3QKK21wZF9hZGpleHAoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gKGRlYy0+ZXhwICsgZGVjLT5kaWdpdHMpIC0gMTsKK30KKworLyogRXRpbnkgKi8KK0FMV0FZU19JTkxJTkUgbXBkX3NzaXplX3QKK21wZF9ldGlueShjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgcmV0dXJuIGN0eC0+ZW1pbiAtIChjdHgtPnByZWMgLSAxKTsKK30KKworLyogRXRvcDogdXNlZCBmb3IgZm9sZGluZyBkb3duIGluIElFRUUgY2xhbXBpbmcgKi8KK0FMV0FZU19JTkxJTkUgbXBkX3NzaXplX3QKK21wZF9ldG9wKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICByZXR1cm4gY3R4LT5lbWF4IC0gKGN0eC0+cHJlYyAtIDEpOworfQorCisvKiBNb3N0IHNpZ25pZmljYW50IHdvcmQgKi8KK0FMV0FZU19JTkxJTkUgbXBkX3VpbnRfdAorbXBkX21zd29yZChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIGFzc2VydChkZWMtPmxlbiA+IDApOworICAgIHJldHVybiBkZWMtPmRhdGFbZGVjLT5sZW4tMV07Cit9CisKKy8qIE1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQgb2YgYSB3b3JkICovCitpbmxpbmUgbXBkX3VpbnRfdAorbXBkX21zZChtcGRfdWludF90IHdvcmQpCit7CisgICAgaW50IG47CisKKyAgICBuID0gbXBkX3dvcmRfZGlnaXRzKHdvcmQpOworICAgIHJldHVybiB3b3JkIC8gbXBkX3BvdzEwW24tMV07Cit9CisKKy8qIExlYXN0IHNpZ25pZmljYW50IGRpZ2l0IG9mIGEgd29yZCAqLworQUxXQVlTX0lOTElORSBtcGRfdWludF90CittcGRfbHNkKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICByZXR1cm4gd29yZCAlIDEwOworfQorCisvKiBDb2VmZmljaWVudCBzaXplIG5lZWRlZCB0byBzdG9yZSAnZGlnaXRzJyAqLworQUxXQVlTX0lOTElORSBtcGRfc3NpemVfdAorbXBkX2RpZ2l0c190b19zaXplKG1wZF9zc2l6ZV90IGRpZ2l0cykKK3sKKyAgICBtcGRfc3NpemVfdCBxLCByOworCisgICAgX21wZF9pZGl2X3dvcmQoJnEsICZyLCBkaWdpdHMsIE1QRF9SRElHSVRTKTsKKyAgICByZXR1cm4gKHIgPT0gMCkgPyBxIDogcSsxOworfQorCisvKiBOdW1iZXIgb2YgZGlnaXRzIGluIHRoZSBleHBvbmVudC4gTm90IGRlZmluZWQgZm9yIE1QRF9TU0laRV9NSU4uICovCitpbmxpbmUgaW50CittcGRfZXhwX2RpZ2l0cyhtcGRfc3NpemVfdCBleHApCit7CisgICAgZXhwID0gKGV4cCA8IDApID8gLWV4cCA6IGV4cDsKKyAgICByZXR1cm4gbXBkX3dvcmRfZGlnaXRzKGV4cCk7Cit9CisKKy8qIENhbm9uaWNhbCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc2Nhbm9uaWNhbChjb25zdCBtcGRfdCAqZGVjIFVOVVNFRCkKK3sKKyAgICByZXR1cm4gMTsKK30KKworLyogRmluaXRlICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICEoZGVjLT5mbGFncyAmIE1QRF9TUEVDSUFMKTsKK30KKworLyogSW5maW5pdGUgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNpbmZpbml0ZShjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX0lORjsKK30KKworLyogTmFOICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzbmFuKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiAoTVBEX05BTnxNUERfU05BTik7Cit9CisKKy8qIE5lZ2F0aXZlICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzbmVnYXRpdmUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9ORUc7Cit9CisKKy8qIFBvc2l0aXZlICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzcG9zaXRpdmUoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIShkZWMtPmZsYWdzICYgTVBEX05FRyk7Cit9CisKKy8qIHFOYU4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNxbmFuKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfTkFOOworfQorCisvKiBTaWduZWQgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzaWduZWQoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9ORUc7Cit9CisKKy8qIHNOYU4gKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzbmFuKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIGRlYy0+ZmxhZ3MgJiBNUERfU05BTjsKK30KKworLyogU3BlY2lhbCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3NwZWNpYWwoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9TUEVDSUFMOworfQorCisvKiBaZXJvICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzemVybyhjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhbXBkX2lzc3BlY2lhbChkZWMpICYmIG1wZF9tc3dvcmQoZGVjKSA9PSAwOworfQorCisvKiBUZXN0IGZvciB6ZXJvIHdoZW4gc3BlY2lhbHMgaGF2ZSBiZWVuIHJ1bGVkIG91dCBhbHJlYWR5ICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzemVyb2NvZWZmKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIG1wZF9tc3dvcmQoZGVjKSA9PSAwOworfQorCisvKiBOb3JtYWwgKi8KK2lubGluZSBpbnQKK21wZF9pc25vcm1hbChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgcmV0dXJuIDA7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSByZXR1cm4gMDsKKworICAgIHJldHVybiBtcGRfYWRqZXhwKGRlYykgPj0gY3R4LT5lbWluOworfQorCisvKiBTdWJub3JtYWwgKi8KK2lubGluZSBpbnQKK21wZF9pc3N1Ym5vcm1hbChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgcmV0dXJuIDA7CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSByZXR1cm4gMDsKKworICAgIHJldHVybiBtcGRfYWRqZXhwKGRlYykgPCBjdHgtPmVtaW47Cit9CisKKy8qIE9kZCB3b3JkICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzb2Rkd29yZChtcGRfdWludF90IHdvcmQpCit7CisgICAgcmV0dXJuIHdvcmQgJiAxOworfQorCisvKiBPZGQgY29lZmZpY2llbnQgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNvZGRjb2VmZihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBtcGRfaXNvZGR3b3JkKGRlYy0+ZGF0YVswXSk7Cit9CisKKy8qIDAgaWYgZGVjIGlzIHBvc2l0aXZlLCAxIGlmIGRlYyBpcyBuZWdhdGl2ZSAqLworQUxXQVlTX0lOTElORSB1aW50OF90CittcGRfc2lnbihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX05FRzsKK30KKworLyogMSBpZiBkZWMgaXMgcG9zaXRpdmUsIC0xIGlmIGRlYyBpcyBuZWdhdGl2ZSAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9hcml0aF9zaWduKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuIDEgLSAyICogbXBkX2lzbmVnYXRpdmUoZGVjKTsKK30KKworLyogUmFkaXggKi8KK0FMV0FZU19JTkxJTkUgbG9uZworbXBkX3JhZGl4KHZvaWQpCit7CisgICAgcmV0dXJuIDEwOworfQorCisvKiBEeW5hbWljIGRlY2ltYWwgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNkeW5hbWljKG1wZF90ICpkZWMpCit7CisgICAgcmV0dXJuICEoZGVjLT5mbGFncyAmIE1QRF9TVEFUSUMpOworfQorCisvKiBTdGF0aWMgZGVjaW1hbCAqLworQUxXQVlTX0lOTElORSBpbnQKK21wZF9pc3N0YXRpYyhtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NUQVRJQzsKK30KKworLyogRGF0YSBvZiBkZWNpbWFsIGlzIGR5bmFtaWMgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNkeW5hbWljX2RhdGEobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gIShkZWMtPmZsYWdzICYgTVBEX0RBVEFGTEFHUyk7Cit9CisKKy8qIERhdGEgb2YgZGVjaW1hbCBpcyBzdGF0aWMgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfaXNzdGF0aWNfZGF0YShtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX1NUQVRJQ19EQVRBOworfQorCisvKiBEYXRhIG9mIGRlY2ltYWwgaXMgc2hhcmVkICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzc2hhcmVkX2RhdGEobXBkX3QgKmRlYykKK3sKKyAgICByZXR1cm4gZGVjLT5mbGFncyAmIE1QRF9TSEFSRURfREFUQTsKK30KKworLyogRGF0YSBvZiBkZWNpbWFsIGlzIGNvbnN0ICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX2lzY29uc3RfZGF0YShtcGRfdCAqZGVjKQoreworICAgIHJldHVybiBkZWMtPmZsYWdzICYgTVBEX0NPTlNUX0RBVEE7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIElubGluZSBtZW1vcnkgaGFuZGxpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBGaWxsIGRlc3RpbmF0aW9uIHdpdGggemVyb3MgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3VpbnRfemVybyhtcGRfdWludF90ICpkZXN0LCBtcGRfc2l6ZV90IGxlbikKK3sKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgZGVzdFtpXSA9IDA7CisgICAgfQorfQorCisvKiBGcmVlIGEgZGVjaW1hbCAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfZGVsKG1wZF90ICpkZWMpCit7CisgICAgaWYgKG1wZF9pc2R5bmFtaWNfZGF0YShkZWMpKSB7CisgICAgICAgIG1wZF9mcmVlKGRlYy0+ZGF0YSk7CisgICAgfQorICAgIGlmIChtcGRfaXNkeW5hbWljKGRlYykpIHsKKyAgICAgICAgbXBkX2ZyZWUoZGVjKTsKKyAgICB9Cit9CisKKy8qCisgKiBSZXNpemUgdGhlIGNvZWZmaWNpZW50LiBFeGlzdGluZyBkYXRhIHVwIHRvICdud29yZHMnIGlzIGxlZnQgdW50b3VjaGVkLgorICogUmV0dXJuIDEgb24gc3VjY2VzcywgMCBvdGhlcndpc2UuCisgKgorICogSW5wdXQgaW52YXJpYW50OiBNUERfTUlOQUxMT0MgPD0gcmVzdWx0LT5hbGxvYy4KKyAqCisgKiBDYXNlIG53b3JkcyA9PSByZXN1bHQtPmFsbG9jOgorICogICAgICdyZXN1bHQnIGlzIHVuY2hhbmdlZC4gUmV0dXJuIDEuCisgKgorICogQ2FzZSBud29yZHMgPiByZXN1bHQtPmFsbG9jOgorICogICBDYXNlIHJlYWxsb2Mgc3VjY2VzczoKKyAqICAgICBUaGUgdmFsdWUgb2YgJ3Jlc3VsdCcgZG9lcyBub3QgY2hhbmdlLiBSZXR1cm4gMS4KKyAqICAgQ2FzZSByZWFsbG9jIGZhaWx1cmU6CisgKiAgICAgJ3Jlc3VsdCcgaXMgTmFOLCBzdGF0dXMgaXMgdXBkYXRlZCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuIFJldHVybiAwLgorICoKKyAqIENhc2UgbndvcmRzIDwgcmVzdWx0LT5hbGxvYzoKKyAqICAgQ2FzZSBpc19zdGF0aWNfZGF0YSBvciByZWFsbG9jIGZhaWx1cmUgWzFdOgorICogICAgICdyZXN1bHQnIGlzIHVuY2hhbmdlZC4gUmV0dXJuIDEuCisgKiAgIENhc2UgcmVhbGxvYyBzdWNjZXNzOgorICogICAgIFRoZSB2YWx1ZSBvZiByZXN1bHQgaXMgdW5kZWZpbmVkIChleHBlY3RlZCkuIFJldHVybiAxLgorICoKKyAqCisgKiBbMV0gSW4gdGhhdCBjYXNlIHRoZSBvbGQgKG5vdyBvdmVyc2l6ZWQpIGFyZWEgaXMgc3RpbGwgdmFsaWQuCisgKi8KK0FMV0FZU19JTkxJTkUgaW50CittcGRfcXJlc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgYXNzZXJ0KCFtcGRfaXNjb25zdF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBjb25zdCAqLworICAgIGFzc2VydCghbXBkX2lzc2hhcmVkX2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIHNoYXJlZCAqLworICAgIGFzc2VydChNUERfTUlOQUxMT0MgPD0gcmVzdWx0LT5hbGxvYyk7CisKKyAgICBud29yZHMgPSAobndvcmRzIDw9IE1QRF9NSU5BTExPQykgPyBNUERfTUlOQUxMT0MgOiBud29yZHM7CisgICAgaWYgKG53b3JkcyA9PSByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAobXBkX2lzc3RhdGljX2RhdGEocmVzdWx0KSkgeworICAgICAgICBpZiAobndvcmRzID4gcmVzdWx0LT5hbGxvYykgeworICAgICAgICAgICAgcmV0dXJuIG1wZF9zd2l0Y2hfdG9fZHluKHJlc3VsdCwgbndvcmRzLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIHJldHVybiBtcGRfcmVhbGxvY19keW4ocmVzdWx0LCBud29yZHMsIHN0YXR1cyk7Cit9CisKKy8qIFNhbWUgYXMgbXBkX3FyZXNpemUsIGJ1dCB0aGUgY29tcGxldGUgY29lZmZpY2llbnQgKGluY2x1ZGluZyB0aGUgb2xkCisgKiBtZW1vcnkgYXJlYSEpIGlzIGluaXRpYWxpemVkIHRvIHplcm8uICovCitBTFdBWVNfSU5MSU5FIGludAorbXBkX3FyZXNpemVfemVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgYXNzZXJ0KCFtcGRfaXNjb25zdF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBjb25zdCAqLworICAgIGFzc2VydCghbXBkX2lzc2hhcmVkX2RhdGEocmVzdWx0KSk7IC8qIGlsbGVnYWwgb3BlcmF0aW9uIGZvciBhIHNoYXJlZCAqLworICAgIGFzc2VydChNUERfTUlOQUxMT0MgPD0gcmVzdWx0LT5hbGxvYyk7CisKKyAgICBud29yZHMgPSAobndvcmRzIDw9IE1QRF9NSU5BTExPQykgPyBNUERfTUlOQUxMT0MgOiBud29yZHM7CisgICAgaWYgKG53b3JkcyAhPSByZXN1bHQtPmFsbG9jKSB7CisgICAgICAgIGlmIChtcGRfaXNzdGF0aWNfZGF0YShyZXN1bHQpKSB7CisgICAgICAgICAgICBpZiAobndvcmRzID4gcmVzdWx0LT5hbGxvYykgeworICAgICAgICAgICAgICAgIHJldHVybiBtcGRfc3dpdGNoX3RvX2R5bl96ZXJvKHJlc3VsdCwgbndvcmRzLCBzdGF0dXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFtcGRfcmVhbGxvY19keW4ocmVzdWx0LCBud29yZHMsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3VpbnRfemVybyhyZXN1bHQtPmRhdGEsIG53b3Jkcyk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBSZWR1Y2UgbWVtb3J5IHNpemUgZm9yIHRoZSBjb2VmZmljaWVudCB0byBNUERfTUlOQUxMT0MuIEluIHRoZW9yeSwKKyAqIHJlYWxsb2MgbWF5IGZhaWwgZXZlbiB3aGVuIHJlZHVjaW5nIHRoZSBtZW1vcnkgc2l6ZS4gQnV0IGluIHRoYXQgY2FzZQorICogdGhlIG9sZCBtZW1vcnkgYXJlYSBpcyBhbHdheXMgYmlnIGVub3VnaCwgc28gY2hlY2tpbmcgZm9yIE1QRF9NYWxsb2NfZXJyb3IKKyAqIGlzIG5vdCBpbXBlcmF0aXZlLgorICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9taW5hbGxvYyhtcGRfdCAqcmVzdWx0KQoreworICAgIGFzc2VydCghbXBkX2lzY29uc3RfZGF0YShyZXN1bHQpKTsgLyogaWxsZWdhbCBvcGVyYXRpb24gZm9yIGEgY29uc3QgKi8KKyAgICBhc3NlcnQoIW1wZF9pc3NoYXJlZF9kYXRhKHJlc3VsdCkpOyAvKiBpbGxlZ2FsIG9wZXJhdGlvbiBmb3IgYSBzaGFyZWQgKi8KKworICAgIGlmICghbXBkX2lzc3RhdGljX2RhdGEocmVzdWx0KSAmJiByZXN1bHQtPmFsbG9jID4gTVBEX01JTkFMTE9DKSB7CisgICAgICAgIHVpbnQ4X3QgZXJyID0gMDsKKyAgICAgICAgcmVzdWx0LT5kYXRhID0gbXBkX3JlYWxsb2MocmVzdWx0LT5kYXRhLCBNUERfTUlOQUxMT0MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAqcmVzdWx0LT5kYXRhLCAmZXJyKTsKKyAgICAgICAgaWYgKCFlcnIpIHsKKyAgICAgICAgICAgIHJlc3VsdC0+YWxsb2MgPSBNUERfTUlOQUxMT0M7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2ludAorbXBkX3Jlc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBud29yZHMsIG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICB1aW50MzJfdCBzdGF0dXMgPSAwOworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBud29yZHMsICZzdGF0dXMpKSB7CisgICAgICAgIG1wZF9hZGRzdGF0dXNfcmFpc2UoY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorbXBkX3Jlc2l6ZV96ZXJvKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG53b3JkcywgbXBkX2NvbnRleHRfdCAqY3R4KQoreworICAgIHVpbnQzMl90IHN0YXR1cyA9IDA7CisgICAgaWYgKCFtcGRfcXJlc2l6ZV96ZXJvKHJlc3VsdCwgbndvcmRzLCAmc3RhdHVzKSkgeworICAgICAgICBtcGRfYWRkc3RhdHVzX3JhaXNlKGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgU2V0IGF0dHJpYnV0ZXMgb2YgYSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogU2V0IGRpZ2l0cy4gQXNzdW1wdGlvbjogcmVzdWx0LT5sZW4gaXMgaW5pdGlhbGl6ZWQgYW5kID4gMC4gKi8KK2lubGluZSB2b2lkCittcGRfc2V0ZGlnaXRzKG1wZF90ICpyZXN1bHQpCit7CisgICAgbXBkX3NzaXplX3Qgd2RpZ2l0cyA9IG1wZF93b3JkX2RpZ2l0cyhtcGRfbXN3b3JkKHJlc3VsdCkpOworICAgIHJlc3VsdC0+ZGlnaXRzID0gd2RpZ2l0cyArIChyZXN1bHQtPmxlbi0xKSAqIE1QRF9SRElHSVRTOworfQorCisvKiBTZXQgc2lnbiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3NpZ24obXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduKQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9ORUc7CisgICAgcmVzdWx0LT5mbGFncyB8PSBzaWduOworfQorCisvKiBDb3B5IHNpZ24gZnJvbSBhbm90aGVyIGRlY2ltYWwgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NpZ25jcHkobXBkX3QgKnJlc3VsdCwgbXBkX3QgKmEpCit7CisgICAgdWludDhfdCBzaWduID0gYS0+ZmxhZ3MmTVBEX05FRzsKKworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9ORUc7CisgICAgcmVzdWx0LT5mbGFncyB8PSBzaWduOworfQorCisvKiBTZXQgaW5maW5pdHkgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9pbmZpbml0eShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9TUEVDSUFMOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX0lORjsKK30KKworLyogU2V0IHFOYU4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9xbmFuKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX1NQRUNJQUw7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfTkFOOworfQorCisvKiBTZXQgc05hTiAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X3NuYW4obXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfU1BFQ0lBTDsKKyAgICByZXN1bHQtPmZsYWdzIHw9IE1QRF9TTkFOOworfQorCisvKiBTZXQgdG8gbmVnYXRpdmUgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9uZWdhdGl2ZShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX05FRzsKK30KKworLyogU2V0IHRvIHBvc2l0aXZlICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfcG9zaXRpdmUobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfTkVHOworfQorCisvKiBTZXQgdG8gZHluYW1pYyAqLworQUxXQVlTX0lOTElORSB2b2lkCittcGRfc2V0X2R5bmFtaWMobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfU1RBVElDOworfQorCisvKiBTZXQgdG8gc3RhdGljICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc3RhdGljKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfU1RBVElDOworfQorCisvKiBTZXQgZGF0YSB0byBkeW5hbWljICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfZHluYW1pY19kYXRhKG1wZF90ICpyZXN1bHQpCit7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+TVBEX0RBVEFGTEFHUzsKK30KKworLyogU2V0IGRhdGEgdG8gc3RhdGljICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfc3RhdGljX2RhdGEobXBkX3QgKnJlc3VsdCkKK3sKKyAgICByZXN1bHQtPmZsYWdzICY9IH5NUERfREFUQUZMQUdTOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gTVBEX1NUQVRJQ19EQVRBOworfQorCisvKiBTZXQgZGF0YSB0byBzaGFyZWQgKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9zaGFyZWRfZGF0YShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9EQVRBRkxBR1M7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfU0hBUkVEX0RBVEE7Cit9CisKKy8qIFNldCBkYXRhIHRvIGNvbnN0ICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9zZXRfY29uc3RfZGF0YShtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gfk1QRF9EQVRBRkxBR1M7CisgICAgcmVzdWx0LT5mbGFncyB8PSBNUERfQ09OU1RfREFUQTsKK30KKworLyogQ2xlYXIgZmxhZ3MsIHByZXNlcnZpbmcgbWVtb3J5IGF0dHJpYnV0ZXMuICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9jbGVhcl9mbGFncyhtcGRfdCAqcmVzdWx0KQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gKE1QRF9TVEFUSUN8TVBEX0RBVEFGTEFHUyk7Cit9CisKKy8qIFNldCBmbGFncywgcHJlc2VydmluZyBtZW1vcnkgYXR0cmlidXRlcy4gKi8KK0FMV0FZU19JTkxJTkUgdm9pZAorbXBkX3NldF9mbGFncyhtcGRfdCAqcmVzdWx0LCB1aW50OF90IGZsYWdzKQoreworICAgIHJlc3VsdC0+ZmxhZ3MgJj0gKE1QRF9TVEFUSUN8TVBEX0RBVEFGTEFHUyk7CisgICAgcmVzdWx0LT5mbGFncyB8PSBmbGFnczsKK30KKworLyogQ29weSBmbGFncywgcHJlc2VydmluZyBtZW1vcnkgYXR0cmlidXRlcyBvZiByZXN1bHQuICovCitBTFdBWVNfSU5MSU5FIHZvaWQKK21wZF9jb3B5X2ZsYWdzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphKQoreworICAgIHVpbnQ4X3QgYWZsYWdzID0gYS0+ZmxhZ3M7CisgICAgcmVzdWx0LT5mbGFncyAmPSAoTVBEX1NUQVRJQ3xNUERfREFUQUZMQUdTKTsKKyAgICByZXN1bHQtPmZsYWdzIHw9IChhZmxhZ3MgJiB+KE1QRF9TVEFUSUN8TVBEX0RBVEFGTEFHUykpOworfQorCisvKiBJbml0aWFsaXplIGEgd29ya2NvbnRleHQgZnJvbSBjdHguIFNldCB0cmFwcywgZmxhZ3MgYW5kIG5ld3RyYXAgdG8gMC4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorbXBkX3dvcmtjb250ZXh0KG1wZF9jb250ZXh0X3QgKndvcmtjdHgsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICB3b3JrY3R4LT5wcmVjID0gY3R4LT5wcmVjOworICAgIHdvcmtjdHgtPmVtYXggPSBjdHgtPmVtYXg7CisgICAgd29ya2N0eC0+ZW1pbiA9IGN0eC0+ZW1pbjsKKyAgICB3b3JrY3R4LT5yb3VuZCA9IGN0eC0+cm91bmQ7CisgICAgd29ya2N0eC0+dHJhcHMgPSAwOworICAgIHdvcmtjdHgtPnN0YXR1cyA9IDA7CisgICAgd29ya2N0eC0+bmV3dHJhcCA9IDA7CisgICAgd29ya2N0eC0+Y2xhbXAgPSBjdHgtPmNsYW1wOworICAgIHdvcmtjdHgtPmFsbGNyID0gY3R4LT5hbGxjcjsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICBHZXR0aW5nIGFuZCBzZXR0aW5nIHBhcnRzIG9mIGRlY2ltYWxzICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEZsaXAgdGhlIHNpZ24gb2YgYSBkZWNpbWFsICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbmVnYXRlKG1wZF90ICpkZWMpCit7CisgICAgZGVjLT5mbGFncyBePSBNUERfTkVHOworfQorCisvKiBTZXQgY29lZmZpY2llbnQgdG8gemVybyAqLwordm9pZAorbXBkX3plcm9jb2VmZihtcGRfdCAqcmVzdWx0KQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZGlnaXRzID0gMTsKKyAgICByZXN1bHQtPmxlbiA9IDE7CisgICAgcmVzdWx0LT5kYXRhWzBdID0gMDsKK30KKworLyogU2V0IHRoZSBjb2VmZmljaWVudCB0byBhbGwgbmluZXMuICovCit2b2lkCittcGRfcW1heGNvZWZmKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBsZW4sIHI7CisKKyAgICBfbXBkX2lkaXZfd29yZCgmbGVuLCAmciwgY3R4LT5wcmVjLCBNUERfUkRJR0lUUyk7CisgICAgbGVuID0gKHIgPT0gMCkgPyBsZW4gOiBsZW4rMTsKKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlc3VsdC0+bGVuID0gbGVuOworICAgIHJlc3VsdC0+ZGlnaXRzID0gY3R4LT5wcmVjOworCisgICAgLS1sZW47CisgICAgaWYgKHIgPiAwKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YVtsZW4tLV0gPSBtcGRfcG93MTBbcl0tMTsKKyAgICB9CisgICAgZm9yICg7IGxlbiA+PSAwOyAtLWxlbikgeworICAgICAgICByZXN1bHQtPmRhdGFbbGVuXSA9IE1QRF9SQURJWC0xOworICAgIH0KK30KKworLyoKKyAqIEN1dCBvZmYgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRzIHNvIHRoYXQgdGhlIHJlc3QgZml0cyBpbiBjdHgtPnByZWMuCisgKiBDYW5ub3QgZmFpbC4KKyAqLworc3RhdGljIHZvaWQKK19tcGRfY2FwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICB1aW50MzJfdCBkdW1teTsKKyAgICBtcGRfc3NpemVfdCBsZW4sIHI7CisKKyAgICBpZiAocmVzdWx0LT5sZW4gPiAwICYmIHJlc3VsdC0+ZGlnaXRzID4gY3R4LT5wcmVjKSB7CisgICAgICAgIF9tcGRfaWRpdl93b3JkKCZsZW4sICZyLCBjdHgtPnByZWMsIE1QRF9SRElHSVRTKTsKKyAgICAgICAgbGVuID0gKHIgPT0gMCkgPyBsZW4gOiBsZW4rMTsKKworICAgICAgICBpZiAociAhPSAwKSB7CisgICAgICAgICAgICByZXN1bHQtPmRhdGFbbGVuLTFdICU9IG1wZF9wb3cxMFtyXTsKKyAgICAgICAgfQorCisgICAgICAgIGxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgbGVuKTsKKyAgICAgICAgLyogcmVzaXplIHRvIGZld2VyIHdvcmRzIGNhbm5vdCBmYWlsICovCisgICAgICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgbGVuLCAmZHVtbXkpOworICAgICAgICByZXN1bHQtPmxlbiA9IGxlbjsKKyAgICAgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgIH0KKyAgICBpZiAobXBkX2lzemVybyhyZXN1bHQpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihyZXN1bHQpLCAwLCByZXN1bHQtPmV4cCk7CisgICAgfQorfQorCisvKgorICogQ3V0IG9mZiB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdHMgb2YgYSBOYU4gcGF5bG9hZCBzbyB0aGF0IHRoZSByZXN0CisgKiBmaXRzIGluIGN0eC0+cHJlYyAtIGN0eC0+Y2xhbXAuIENhbm5vdCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorX21wZF9maXhfbmFuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICB1aW50MzJfdCBkdW1teTsKKyAgICBtcGRfc3NpemVfdCBwcmVjOworICAgIG1wZF9zc2l6ZV90IGxlbiwgcjsKKworICAgIHByZWMgPSBjdHgtPnByZWMgLSBjdHgtPmNsYW1wOworICAgIGlmIChyZXN1bHQtPmxlbiA+IDAgJiYgcmVzdWx0LT5kaWdpdHMgPiBwcmVjKSB7CisgICAgICAgIGlmIChwcmVjID09IDApIHsKKyAgICAgICAgICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgICAgICAgICAgcmVzdWx0LT5sZW4gPSByZXN1bHQtPmRpZ2l0cyA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfbXBkX2lkaXZfd29yZCgmbGVuLCAmciwgcHJlYywgTVBEX1JESUdJVFMpOworICAgICAgICAgICAgbGVuID0gKHIgPT0gMCkgPyBsZW4gOiBsZW4rMTsKKworICAgICAgICAgICAgaWYgKHIgIT0gMCkgeworICAgICAgICAgICAgICAgICByZXN1bHQtPmRhdGFbbGVuLTFdICU9IG1wZF9wb3cxMFtyXTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBsZW4pOworICAgICAgICAgICAgLyogcmVzaXplIHRvIGZld2VyIHdvcmRzIGNhbm5vdCBmYWlsICovCisgICAgICAgICAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIGxlbiwgJmR1bW15KTsKKyAgICAgICAgICAgIHJlc3VsdC0+bGVuID0gbGVuOworICAgICAgICAgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgICAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihyZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgLyogTmFOMCBpcyBub3QgYSB2YWxpZCByZXByZXNlbnRhdGlvbiAqLworICAgICAgICAgICAgICAgIHJlc3VsdC0+bGVuID0gcmVzdWx0LT5kaWdpdHMgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvKgorICogR2V0IG4gbW9zdCBzaWduaWZpY2FudCBkaWdpdHMgZnJvbSBhIGRlY2ltYWwsIHdoZXJlIDAgPCBuIDw9IE1QRF9VSU5UX0RJR0lUUy4KKyAqIEFzc3VtZXMgTVBEX1VJTlRfRElHSVRTID09IE1QRF9SRElHSVRTKzEsIHdoaWNoIGlzIHRydWUgZm9yIDMyIGFuZCA2NCBiaXQKKyAqIG1hY2hpbmVzLgorICoKKyAqIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiB3aWxsIGJlIGluIGxvLiBJZiB0aGUgb3BlcmF0aW9uIGlzIGltcG9zc2libGUsCisgKiBoaSB3aWxsIGJlIG5vbnplcm8uIFRoaXMgaXMgdXNlZCB0byBpbmRpY2F0ZSBhbiBlcnJvci4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2dldF9tc2RpZ2l0cyhtcGRfdWludF90ICpoaSwgbXBkX3VpbnRfdCAqbG8sIGNvbnN0IG1wZF90ICpkZWMsCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbikKK3sKKyAgICBtcGRfdWludF90IHIsIHRtcDsKKworICAgIGFzc2VydCgwIDwgbiAmJiBuIDw9IE1QRF9SRElHSVRTKzEpOworCisgICAgX21wZF9kaXZfd29yZCgmdG1wLCAmciwgZGVjLT5kaWdpdHMsIE1QRF9SRElHSVRTKTsKKyAgICByID0gKHIgPT0gMCkgPyBNUERfUkRJR0lUUyA6IHI7IC8qIGRpZ2l0cyBpbiB0aGUgbW9zdCBzaWduaWZpY2FudCB3b3JkICovCisKKyAgICAqaGkgPSAwOworICAgICpsbyA9IGRlYy0+ZGF0YVtkZWMtPmxlbi0xXTsKKyAgICBpZiAobiA8PSByKSB7CisgICAgICAgICpsbyAvPSBtcGRfcG93MTBbci1uXTsKKyAgICB9CisgICAgZWxzZSBpZiAoZGVjLT5sZW4gPiAxKSB7CisgICAgICAgIC8qIGF0IHRoaXMgcG9pbnQgMSA8PSByIDwgbiA8PSBNUERfUkRJR0lUUysxICovCisgICAgICAgIF9tcGRfbXVsX3dvcmRzKGhpLCBsbywgKmxvLCBtcGRfcG93MTBbbi1yXSk7CisgICAgICAgIHRtcCA9IGRlYy0+ZGF0YVtkZWMtPmxlbi0yXSAvIG1wZF9wb3cxMFtNUERfUkRJR0lUUy0obi1yKV07CisgICAgICAgICpsbyA9ICpsbyArIHRtcDsKKyAgICAgICAgaWYgKCpsbyA8IHRtcCkgKCpoaSkrKzsKKyAgICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgIEdhdGhlcmluZyBpbmZvcm1hdGlvbiBhYm91dCBhIGRlY2ltYWwgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBUaGUgcmVhbCBzaXplIG9mIHRoZSBjb2VmZmljaWVudCB3aXRob3V0IGxlYWRpbmcgemVybyB3b3Jkcy4gKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3NzaXplX3QKK19tcGRfcmVhbF9zaXplKG1wZF91aW50X3QgKmRhdGEsIG1wZF9zc2l6ZV90IHNpemUpCit7CisgICAgd2hpbGUgKHNpemUgPiAxICYmIGRhdGFbc2l6ZS0xXSA9PSAwKSB7CisgICAgICAgIHNpemUtLTsKKyAgICB9CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKworLyogUmV0dXJuIG51bWJlciBvZiB0cmFpbGluZyB6ZXJvcy4gTm8gZXJyb3JzIGFyZSBwb3NzaWJsZS4gKi8KK21wZF9zc2l6ZV90CittcGRfdHJhaWxfemVyb3MoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBtcGRfdWludF90IHdvcmQ7CisgICAgbXBkX3NzaXplX3QgaSwgdHogPSAwOworCisgICAgZm9yIChpPTA7IGkgPCBkZWMtPmxlbjsgKytpKSB7CisgICAgICAgIGlmIChkZWMtPmRhdGFbaV0gIT0gMCkgeworICAgICAgICAgICAgd29yZCA9IGRlYy0+ZGF0YVtpXTsKKyAgICAgICAgICAgIHR6ID0gaSAqIE1QRF9SRElHSVRTOworICAgICAgICAgICAgd2hpbGUgKHdvcmQgJSAxMCA9PSAwKSB7CisgICAgICAgICAgICAgICAgd29yZCAvPSAxMDsKKyAgICAgICAgICAgICAgICB0eisrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHo7Cit9CisKKy8qIEludGVnZXI6IFVuZGVmaW5lZCBmb3Igc3BlY2lhbHMgKi8KK3N0YXRpYyBpbnQKK19tcGRfaXNpbnQoY29uc3QgbXBkX3QgKmRlYykKK3sKKyAgICBtcGRfc3NpemVfdCB0ejsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZGVjKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICB0eiA9IG1wZF90cmFpbF96ZXJvcyhkZWMpOworICAgIHJldHVybiAoZGVjLT5leHAgKyB0eiA+PSAwKTsKK30KKworLyogSW50ZWdlciAqLworaW50CittcGRfaXNpbnRlZ2VyKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoZGVjKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIF9tcGRfaXNpbnQoZGVjKTsKK30KKworLyogV29yZCBpcyBhIHBvd2VyIG9mIDEwICovCitzdGF0aWMgaW50CittcGRfd29yZF9pc3BvdzEwKG1wZF91aW50X3Qgd29yZCkKK3sKKyAgICBpbnQgbjsKKworICAgIG4gPSBtcGRfd29yZF9kaWdpdHMod29yZCk7CisgICAgaWYgKHdvcmQgPT0gbXBkX3BvdzEwW24tMV0pIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvZWZmaWNpZW50IGlzIGEgcG93ZXIgb2YgMTAgKi8KK3N0YXRpYyBpbnQKK21wZF9jb2VmZl9pc3BvdzEwKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgaWYgKG1wZF93b3JkX2lzcG93MTAobXBkX21zd29yZChkZWMpKSkgeworICAgICAgICBpZiAoX21wZF9pc2FsbHplcm8oZGVjLT5kYXRhLCBkZWMtPmxlbi0xKSkgeworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQWxsIGRpZ2l0cyBvZiBhIHdvcmQgYXJlIG5pbmVzICovCitzdGF0aWMgaW50CittcGRfd29yZF9pc2FsbG5pbmUobXBkX3VpbnRfdCB3b3JkKQoreworICAgIGludCBuOworCisgICAgbiA9IG1wZF93b3JkX2RpZ2l0cyh3b3JkKTsKKyAgICBpZiAod29yZCA9PSBtcGRfcG93MTBbbl0tMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQWxsIGRpZ2l0cyBvZiB0aGUgY29lZmZpY2llbnQgYXJlIG5pbmVzICovCitzdGF0aWMgaW50CittcGRfY29lZmZfaXNhbGxuaW5lKGNvbnN0IG1wZF90ICpkZWMpCit7CisgICAgaWYgKG1wZF93b3JkX2lzYWxsbmluZShtcGRfbXN3b3JkKGRlYykpKSB7CisgICAgICAgIGlmIChfbXBkX2lzYWxsbmluZShkZWMtPmRhdGEsIGRlYy0+bGVuLTEpKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBPZGQgZGVjaW1hbDogVW5kZWZpbmVkIGZvciBub24taW50ZWdlcnMhICovCitpbnQKK21wZF9pc29kZChjb25zdCBtcGRfdCAqZGVjKQoreworICAgIG1wZF91aW50X3QgcSwgcjsKKyAgICBhc3NlcnQobXBkX2lzaW50ZWdlcihkZWMpKTsKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHJldHVybiAwOworICAgIGlmIChkZWMtPmV4cCA8IDApIHsKKyAgICAgICAgX21wZF9kaXZfd29yZCgmcSwgJnIsIC1kZWMtPmV4cCwgTVBEX1JESUdJVFMpOworICAgICAgICBxID0gZGVjLT5kYXRhW3FdIC8gbXBkX3BvdzEwW3JdOworICAgICAgICByZXR1cm4gbXBkX2lzb2Rkd29yZChxKTsKKyAgICB9CisgICAgcmV0dXJuIGRlYy0+ZXhwID09IDAgJiYgbXBkX2lzb2Rkd29yZChkZWMtPmRhdGFbMF0pOworfQorCisvKiBFdmVuOiBVbmRlZmluZWQgZm9yIG5vbi1pbnRlZ2VycyEgKi8KK2ludAorbXBkX2lzZXZlbihjb25zdCBtcGRfdCAqZGVjKQoreworICAgIHJldHVybiAhbXBkX2lzb2RkKGRlYyk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICBHZXR0aW5nIGFuZCBzZXR0aW5nIGRlY2ltYWxzICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogSW50ZXJuYWwgZnVuY3Rpb246IFNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYSB0cmlwbGUsIG5vIGVycm9yIGNoZWNraW5nLiAqLworc3RhdGljIHZvaWQKK19zc2V0dHJpcGxlKG1wZF90ICpyZXN1bHQsIHVpbnQ4X3Qgc2lnbiwgbXBkX3VpbnRfdCBhLCBtcGRfc3NpemVfdCBleHApCit7CisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNpZ24pOworICAgIHJlc3VsdC0+ZXhwID0gZXhwOworICAgIF9tcGRfZGl2X3dvcmQoJnJlc3VsdC0+ZGF0YVsxXSwgJnJlc3VsdC0+ZGF0YVswXSwgYSwgTVBEX1JBRElYKTsKKyAgICByZXN1bHQtPmxlbiA9IChyZXN1bHQtPmRhdGFbMV0gPT0gMCkgPyAxIDogMjsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7Cit9CisKKy8qIEludGVybmFsIGZ1bmN0aW9uOiBTZXQgYSBkZWNpbWFsIGZyb20gYSB0cmlwbGUsIG5vIGVycm9yIGNoZWNraW5nLiAqLworc3RhdGljIHZvaWQKK19zZXR0cmlwbGUobXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduLCBtcGRfdWludF90IGEsIG1wZF9zc2l6ZV90IGV4cCkKK3sKKyAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgX21wZF9kaXZfd29yZCgmcmVzdWx0LT5kYXRhWzFdLCAmcmVzdWx0LT5kYXRhWzBdLCBhLCBNUERfUkFESVgpOworICAgIHJlc3VsdC0+bGVuID0gKHJlc3VsdC0+ZGF0YVsxXSA9PSAwKSA/IDEgOiAyOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKK30KKworLyogU2V0IGEgc3BlY2lhbCBudW1iZXIgZnJvbSBhIHRyaXBsZSAqLwordm9pZAorbXBkX3NldHNwZWNpYWwobXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduLCB1aW50OF90IHR5cGUpCit7CisgICAgbXBkX21pbmFsbG9jKHJlc3VsdCk7CisgICAgcmVzdWx0LT5mbGFncyAmPSB+KE1QRF9ORUd8TVBEX1NQRUNJQUwpOworICAgIHJlc3VsdC0+ZmxhZ3MgfD0gKHNpZ258dHlwZSk7CisgICAgcmVzdWx0LT5leHAgPSByZXN1bHQtPmRpZ2l0cyA9IHJlc3VsdC0+bGVuID0gMDsKK30KKworLyogU2V0IHJlc3VsdCBvZiBOYU4gd2l0aCBhbiBlcnJvciBzdGF0dXMgKi8KK3ZvaWQKK21wZF9zZXRlcnJvcihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBmbGFncywgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfbWluYWxsb2MocmVzdWx0KTsKKyAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKHJlc3VsdCk7CisgICAgcmVzdWx0LT5leHAgPSByZXN1bHQtPmRpZ2l0cyA9IHJlc3VsdC0+bGVuID0gMDsKKyAgICAqc3RhdHVzIHw9IGZsYWdzOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYW4gbXBkX3NzaXplX3QgKi8KK3ZvaWQKK21wZF9xc3NldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHU7CisgICAgdWludDhfdCBzaWduID0gTVBEX1BPUzsKKworICAgIGlmIChhIDwgMCkgeworICAgICAgICBpZiAoYSA9PSBNUERfU1NJWkVfTUlOKSB7CisgICAgICAgICAgICB1ID0gKG1wZF91aW50X3QpTVBEX1NTSVpFX01BWCArCisgICAgICAgICAgICAgICAgKC0oTVBEX1NTSVpFX01JTitNUERfU1NJWkVfTUFYKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB1ID0gLWE7CisgICAgICAgIH0KKyAgICAgICAgc2lnbiA9IE1QRF9ORUc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB1ID0gYTsKKyAgICB9CisgICAgX3NzZXR0cmlwbGUocmVzdWx0LCBzaWduLCB1LCAwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYW4gbXBkX3VpbnRfdCAqLwordm9pZAorbXBkX3Fzc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9zc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgYSwgMCk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGFuIGludDMyX3QgKi8KK3ZvaWQKK21wZF9xc3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3Fzc2V0X3NzaXplKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IHNldCBhIHN0YXRpYyBkZWNpbWFsIGZyb20gYSB1aW50MzJfdCAqLwordm9pZAorbXBkX3Fzc2V0X3UzMihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3Fzc2V0X3VpbnQocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIHF1aWV0bHkgc2V0IGEgc3RhdGljIGRlY2ltYWwgZnJvbSBhbiBpbnQ2NF90ICovCit2b2lkCittcGRfcXNzZXRfaTY0KG1wZF90ICpyZXN1bHQsIGludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3NldF9zc2l6ZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBzdGF0aWMgZGVjaW1hbCBmcm9tIGEgdWludDY0X3QgKi8KK3ZvaWQKK21wZF9xc3NldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xc3NldF91aW50KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmCisKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGFuIG1wZF9zc2l6ZV90ICovCit2b2lkCittcGRfcXNldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9taW5hbGxvYyhyZXN1bHQpOworICAgIG1wZF9xc3NldF9zc2l6ZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYW4gbXBkX3VpbnRfdCAqLwordm9pZAorbXBkX3FzZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgYSwgMCk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBzZXQgYSBkZWNpbWFsIGZyb20gYW4gaW50MzJfdCAqLwordm9pZAorbXBkX3FzZXRfaTMyKG1wZF90ICpyZXN1bHQsIGludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FzZXRfc3NpemUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHF1aWV0bHkgc2V0IGEgZGVjaW1hbCBmcm9tIGEgdWludDMyX3QgKi8KK3ZvaWQKK21wZF9xc2V0X3UzMihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcXNldF91aW50KHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCisjaWYgZGVmaW5lZChDT05GSUdfMzIpICYmICFkZWZpbmVkKExFR0FDWV9DT01QSUxFUikKKy8qIHNldCBhIGRlY2ltYWwgZnJvbSBhIHVpbnQ2NF90ICovCitzdGF0aWMgdm9pZAorX2MzMnNldHU2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCB1LCB1aW50OF90IHNpZ24sIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCB3WzNdOworICAgIHVpbnQ2NF90IHE7CisgICAgaW50IGksIGxlbjsKKworICAgIGxlbiA9IDA7CisgICAgZG8geworICAgICAgICBxID0gdSAvIE1QRF9SQURJWDsKKyAgICAgICAgd1tsZW5dID0gKG1wZF91aW50X3QpKHUgLSBxICogTVBEX1JBRElYKTsKKyAgICAgICAgdSA9IHE7IGxlbisrOworICAgIH0gd2hpbGUgKHUgIT0gMCk7CisKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgbGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHdbaV07CisgICAgfQorCisgICAgbXBkX3NldF9zaWduKHJlc3VsdCwgc2lnbik7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gbGVuOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKK30KKworc3RhdGljIHZvaWQKK19jMzJfcXNldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9jMzJzZXR1NjQocmVzdWx0LCBhLCBNUERfUE9TLCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIHNldCBhIGRlY2ltYWwgZnJvbSBhbiBpbnQ2NF90ICovCitzdGF0aWMgdm9pZAorX2MzMl9xc2V0X2k2NChtcGRfdCAqcmVzdWx0LCBpbnQ2NF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50NjRfdCB1OworICAgIHVpbnQ4X3Qgc2lnbiA9IE1QRF9QT1M7CisKKyAgICBpZiAoYSA8IDApIHsKKyAgICAgICAgaWYgKGEgPT0gSU5UNjRfTUlOKSB7CisgICAgICAgICAgICB1ID0gKHVpbnQ2NF90KUlOVDY0X01BWCArICgtKElOVDY0X01JTitJTlQ2NF9NQVgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHUgPSAtYTsKKyAgICAgICAgfQorICAgICAgICBzaWduID0gTVBEX05FRzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHUgPSBhOworICAgIH0KKyAgICBfYzMyc2V0dTY0KHJlc3VsdCwgdSwgc2lnbiwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorI2VuZGlmIC8qIENPTkZJR18zMiAmJiAhTEVHQUNZX0NPTVBJTEVSICovCisKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhbiBpbnQ2NF90ICovCit2b2lkCittcGRfcXNldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBtcGRfcXNldF9zc2l6ZShyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyNlbHNlCisgICAgX2MzMl9xc2V0X2k2NChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyNlbmRpZgorfQorCisvKiBxdWlldGx5IHNldCBhIGRlY2ltYWwgZnJvbSBhIHVpbnQ2NF90ICovCit2b2lkCittcGRfcXNldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisjaWZkZWYgQ09ORklHXzY0CisgICAgbXBkX3FzZXRfdWludChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyNlbHNlCisgICAgX2MzMl9xc2V0X3U2NChyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyNlbmRpZgorfQorI2VuZGlmIC8qICFMRUdBQ1lfQ09NUElMRVIgKi8KKworCisvKgorICogUXVpZXRseSBnZXQgYW4gbXBkX3VpbnRfdCBmcm9tIGEgZGVjaW1hbC4gQXNzdW1lcworICogTVBEX1VJTlRfRElHSVRTID09IE1QRF9SRElHSVRTKzEsIHdoaWNoIGlzIHRydWUgZm9yCisgKiAzMiBhbmQgNjQgYml0IG1hY2hpbmVzLgorICoKKyAqIElmIHRoZSBvcGVyYXRpb24gaXMgaW1wb3NzaWJsZSwgTVBEX0ludmFsaWRfb3BlcmF0aW9uIGlzIHNldC4KKyAqLworc3RhdGljIG1wZF91aW50X3QKK19tcGRfcWdldF91aW50KGludCB1c2Vfc2lnbiwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3QgdG1wOworICAgIG1wZF91aW50X3QgdG1wX2RhdGFbMl07CisgICAgbXBkX3VpbnRfdCBsbywgaGk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICh1c2Vfc2lnbiAmJiBtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICB9CisKKyAgICBpZiAoYS0+ZGlnaXRzK2EtPmV4cCA+IE1QRF9SRElHSVRTKzEpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgfQorCisgICAgaWYgKGEtPmV4cCA8IDApIHsKKyAgICAgICAgaWYgKCFfbXBkX2lzaW50KGEpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCBhLT5kaWdpdHMrYS0+ZXhwIDw9IE1QRF9SRElHSVRTKzEsCisgICAgICAgICAqIHNvIHRoZSBzaGlmdCBmaXRzLiAqLworICAgICAgICB0bXAuZGF0YSA9IHRtcF9kYXRhOworICAgICAgICB0bXAuZmxhZ3MgPSBNUERfU1RBVElDfE1QRF9TVEFUSUNfREFUQTsKKyAgICAgICAgdG1wLmFsbG9jID0gMjsKKyAgICAgICAgbXBkX3Fzc2hpZnRyKCZ0bXAsIGEsIC1hLT5leHApOworICAgICAgICB0bXAuZXhwID0gMDsKKyAgICAgICAgYSA9ICZ0bXA7CisgICAgfQorCisgICAgX21wZF9nZXRfbXNkaWdpdHMoJmhpLCAmbG8sIGEsIE1QRF9SRElHSVRTKzEpOworICAgIGlmIChoaSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIE1QRF9VSU5UX01BWDsKKyAgICB9CisKKyAgICBpZiAoYS0+ZXhwID4gMCkgeworICAgICAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgbG8sIG1wZF9wb3cxMFthLT5leHBdKTsKKyAgICAgICAgaWYgKGhpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbG87Cit9CisKKy8qCisgKiBTZXRzIEludmFsaWRfb3BlcmF0aW9uIGZvcjoKKyAqICAgLSBzcGVjaWFscworICogICAtIG5lZ2F0aXZlIG51bWJlcnMgKGV4Y2VwdCBuZWdhdGl2ZSB6ZXJvKQorICogICAtIG5vbi1pbnRlZ2VycworICogICAtIG92ZXJmbG93CisgKi8KK21wZF91aW50X3QKK21wZF9xZ2V0X3VpbnQoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIF9tcGRfcWdldF91aW50KDEsIGEsIHN0YXR1cyk7Cit9CisKKy8qIFNhbWUgYXMgYWJvdmUsIGJ1dCBnZXRzIHRoZSBhYnNvbHV0ZSB2YWx1ZSwgaS5lLiB0aGUgc2lnbiBpcyBpZ25vcmVkLiAqLworbXBkX3VpbnRfdAorbXBkX3FhYnNfdWludChjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gX21wZF9xZ2V0X3VpbnQoMCwgYSwgc3RhdHVzKTsKK30KKworLyogcXVpZXRseSBnZXQgYW4gbXBkX3NzaXplX3QgZnJvbSBhIGRlY2ltYWwgKi8KK21wZF9zc2l6ZV90CittcGRfcWdldF9zc2l6ZShjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHU7CisgICAgaW50IGlzbmVnOworCisgICAgdSA9IG1wZF9xYWJzX3VpbnQoYSwgc3RhdHVzKTsKKyAgICBpZiAoKnN0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgcmV0dXJuIE1QRF9TU0laRV9NQVg7CisgICAgfQorCisgICAgaXNuZWcgPSBtcGRfaXNuZWdhdGl2ZShhKTsKKyAgICBpZiAodSA8PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIHJldHVybiBpc25lZyA/IC0oKG1wZF9zc2l6ZV90KXUpIDogKG1wZF9zc2l6ZV90KXU7CisgICAgfQorICAgIGVsc2UgaWYgKGlzbmVnICYmIHUrKE1QRF9TU0laRV9NSU4rTVBEX1NTSVpFX01BWCkgPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICByZXR1cm4gTVBEX1NTSVpFX01JTjsKKyAgICB9CisKKyAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICByZXR1cm4gTVBEX1NTSVpFX01BWDsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogcXVpZXRseSBnZXQgYSB1aW50NjRfdCBmcm9tIGEgZGVjaW1hbCAqLwordWludDY0X3QKK21wZF9xZ2V0X3U2NChjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gbXBkX3FnZXRfdWludChhLCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IGdldCBhbiBpbnQ2NF90IGZyb20gYSBkZWNpbWFsICovCitpbnQ2NF90CittcGRfcWdldF9pNjQoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIG1wZF9xZ2V0X3NzaXplKGEsIHN0YXR1cyk7Cit9CisjZWxzZQorLyogcXVpZXRseSBnZXQgYSB1aW50MzJfdCBmcm9tIGEgZGVjaW1hbCAqLwordWludDMyX3QKK21wZF9xZ2V0X3UzMihjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICByZXR1cm4gbXBkX3FnZXRfdWludChhLCBzdGF0dXMpOworfQorCisvKiBxdWlldGx5IGdldCBhbiBpbnQzMl90IGZyb20gYSBkZWNpbWFsICovCitpbnQzMl90CittcGRfcWdldF9pMzIoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgcmV0dXJuIG1wZF9xZ2V0X3NzaXplKGEsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICBGaWx0ZXJpbmcgaW5wdXQgb2YgZnVuY3Rpb25zLCBmaW5hbGl6aW5nIG91dHB1dCBvZiBmdW5jdGlvbnMgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBDaGVjayBpZiB0aGUgb3BlcmFuZCBpcyBOYU4sIGNvcHkgdG8gcmVzdWx0IGFuZCByZXR1cm4gMSBpZiB0aGlzIGlzCisgKiB0aGUgY2FzZS4gQ29weWluZyBjYW4gZmFpbCBzaW5jZSBOYU5zIGFyZSBhbGxvd2VkIHRvIGhhdmUgYSBwYXlsb2FkIHRoYXQKKyAqIGRvZXMgbm90IGZpdCBpbiBNUERfTUlOQUxMT0MuCisgKi8KK2ludAorbXBkX3FjaGVja19uYW4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc25hbihhKSkgeworICAgICAgICAqc3RhdHVzIHw9IG1wZF9pc3NuYW4oYSkgPyBNUERfSW52YWxpZF9vcGVyYXRpb24gOiAwOworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICBtcGRfc2V0X3FuYW4ocmVzdWx0KTsKKyAgICAgICAgX21wZF9maXhfbmFuKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKgorICogQ2hlY2sgaWYgZWl0aGVyIG9wZXJhbmQgaXMgTmFOLCBjb3B5IHRvIHJlc3VsdCBhbmQgcmV0dXJuIDEgaWYgdGhpcworICogaXMgdGhlIGNhc2UuIENvcHlpbmcgY2FuIGZhaWwgc2luY2UgTmFOcyBhcmUgYWxsb3dlZCB0byBoYXZlIGEgcGF5bG9hZAorICogdGhhdCBkb2VzIG5vdCBmaXQgaW4gTVBEX01JTkFMTE9DLgorICovCitpbnQKK21wZF9xY2hlY2tfbmFucyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmICgoYS0+ZmxhZ3N8Yi0+ZmxhZ3MpJihNUERfTkFOfE1QRF9TTkFOKSkgeworICAgICAgICBjb25zdCBtcGRfdCAqY2hvaWNlID0gYjsKKyAgICAgICAgaWYgKG1wZF9pc3NuYW4oYSkpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGE7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNzbmFuKGIpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGEpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBhOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGNob2ljZSwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3NldF9xbmFuKHJlc3VsdCk7CisgICAgICAgIF9tcGRfZml4X25hbihyZXN1bHQsIGN0eCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIENoZWNrIGlmIG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgTmFOLCBjb3B5IHRvIHJlc3VsdCBhbmQgcmV0dXJuIDEgaWYgdGhpcworICogaXMgdGhlIGNhc2UuIENvcHlpbmcgY2FuIGZhaWwgc2luY2UgTmFOcyBhcmUgYWxsb3dlZCB0byBoYXZlIGEgcGF5bG9hZAorICogdGhhdCBkb2VzIG5vdCBmaXQgaW4gTVBEX01JTkFMTE9DLgorICovCitzdGF0aWMgaW50CittcGRfcWNoZWNrXzNuYW5zKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX3QgKmMsCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoKGEtPmZsYWdzfGItPmZsYWdzfGMtPmZsYWdzKSYoTVBEX05BTnxNUERfU05BTikpIHsKKyAgICAgICAgY29uc3QgbXBkX3QgKmNob2ljZSA9IGM7CisgICAgICAgIGlmIChtcGRfaXNzbmFuKGEpKSB7CisgICAgICAgICAgICBjaG9pY2UgPSBhOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzc25hbihiKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYjsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3NuYW4oYykpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYSkpIHsKKyAgICAgICAgICAgIGNob2ljZSA9IGE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSkgeworICAgICAgICAgICAgY2hvaWNlID0gYjsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBjaG9pY2UsIHN0YXR1cyk7CisgICAgICAgIG1wZF9zZXRfcW5hbihyZXN1bHQpOworICAgICAgICBfbXBkX2ZpeF9uYW4ocmVzdWx0LCBjdHgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENoZWNrIGlmIHJvdW5kaW5nIGRpZ2l0ICdybmQnIGxlYWRzIHRvIGFuIGluY3JlbWVudC4gKi8KK3N0YXRpYyBpbmxpbmUgaW50CitfbXBkX3JuZF9pbmNyKGNvbnN0IG1wZF90ICpkZWMsIG1wZF91aW50X3Qgcm5kLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpCit7CisgICAgaW50IGxkOworCisgICAgc3dpdGNoIChjdHgtPnJvdW5kKSB7CisgICAgY2FzZSBNUERfUk9VTkRfRE9XTjogY2FzZSBNUERfUk9VTkRfVFJVTkM6CisgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgTVBEX1JPVU5EX0hBTEZfVVA6CisgICAgICAgIHJldHVybiAocm5kID49IDUpOworICAgIGNhc2UgTVBEX1JPVU5EX0hBTEZfRVZFTjoKKyAgICAgICAgcmV0dXJuIChybmQgPiA1KSB8fCAoKHJuZCA9PSA1KSAmJiBtcGRfaXNvZGRjb2VmZihkZWMpKTsKKyAgICBjYXNlIE1QRF9ST1VORF9DRUlMSU5HOgorICAgICAgICByZXR1cm4gIShybmQgPT0gMCB8fCBtcGRfaXNuZWdhdGl2ZShkZWMpKTsKKyAgICBjYXNlIE1QRF9ST1VORF9GTE9PUjoKKyAgICAgICAgcmV0dXJuICEocm5kID09IDAgfHwgbXBkX2lzcG9zaXRpdmUoZGVjKSk7CisgICAgY2FzZSBNUERfUk9VTkRfSEFMRl9ET1dOOgorICAgICAgICByZXR1cm4gKHJuZCA+IDUpOworICAgIGNhc2UgTVBEX1JPVU5EX1VQOgorICAgICAgICByZXR1cm4gIShybmQgPT0gMCk7CisgICAgY2FzZSBNUERfUk9VTkRfMDVVUDoKKyAgICAgICAgbGQgPSAoaW50KW1wZF9sc2QoZGVjLT5kYXRhWzBdKTsKKyAgICAgICAgcmV0dXJuICghKHJuZCA9PSAwKSAmJiAobGQgPT0gMCB8fCBsZCA9PSA1KSk7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogV2l0aG91dCBhIHZhbGlkIGNvbnRleHQsIGZ1cnRoZXIgcmVzdWx0cyB3aWxsIGJlIHVuZGVmaW5lZC4gKi8KKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICB9Cit9CisKKy8qCisgKiBBcHBseSByb3VuZGluZyB0byBhIGRlY2ltYWwgdGhhdCBoYXMgYmVlbiByaWdodC1zaGlmdGVkIGludG8gYSBmdWxsCisgKiBwcmVjaXNpb24gZGVjaW1hbC4gSWYgYW4gaW5jcmVtZW50IGxlYWRzIHRvIGFuIG92ZXJmbG93IG9mIHRoZSBwcmVjaXNpb24sCisgKiBhZGp1c3QgdGhlIGNvZWZmaWNpZW50IGFuZCB0aGUgZXhwb25lbnQgYW5kIGNoZWNrIHRoZSBuZXcgZXhwb25lbnQgZm9yCisgKiBvdmVyZmxvdy4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2FwcGx5X3JvdW5kKG1wZF90ICpkZWMsIG1wZF91aW50X3Qgcm5kLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKF9tcGRfcm5kX2luY3IoZGVjLCBybmQsIGN0eCkpIHsKKyAgICAgICAgLyogV2UgaGF2ZSBhIG51bWJlciB3aXRoIGV4YWN0bHkgY3R4LT5wcmVjIGRpZ2l0cy4gVGhlIGluY3JlbWVudAorICAgICAgICAgKiBjYW4gb25seSBsZWFkIHRvIGFuIG92ZXJmbG93IGlmIHRoZSBkZWNpbWFsIGlzIGFsbCBuaW5lcy4gSW4KKyAgICAgICAgICogdGhhdCBjYXNlLCB0aGUgcmVzdWx0IGlzIGEgcG93ZXIgb2YgdGVuIHdpdGggcHJlYysxIGRpZ2l0cy4KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgdGhlIHByZWNpc2lvbiBpcyBhIG11bHRpcGxlIG9mIE1QRF9SRElHSVRTLCB0aGlzIHNpdHVhdGlvbiBpcworICAgICAgICAgKiBkZXRlY3RlZCBieSBfbXBkX2Jhc2VpbmNyIHJldHVybmluZyBhIGNhcnJ5LgorICAgICAgICAgKiBJZiB0aGUgcHJlY2lzaW9uIGlzIG5vdCBhIG11bHRpcGxlIG9mIE1QRF9SRElHSVRTLCB3ZSBoYXZlIHRvCisgICAgICAgICAqIGNoZWNrIGlmIHRoZSByZXN1bHQgaGFzIG9uZSBkaWdpdCB0b28gbWFueS4KKyAgICAgICAgICovCisgICAgICAgIG1wZF91aW50X3QgY2FycnkgPSBfbXBkX2Jhc2VpbmNyKGRlYy0+ZGF0YSwgZGVjLT5sZW4pOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGRlYy0+ZGF0YVtkZWMtPmxlbi0xXSA9IG1wZF9wb3cxMFtNUERfUkRJR0lUUy0xXTsKKyAgICAgICAgICAgIGRlYy0+ZXhwICs9IDE7CisgICAgICAgICAgICBfbXBkX2NoZWNrX2V4cChkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZGlnaXRzKGRlYyk7CisgICAgICAgIGlmIChkZWMtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICAgICAgbXBkX3FzaGlmdHJfaW5wbGFjZShkZWMsIDEpOworICAgICAgICAgICAgZGVjLT5leHAgKz0gMTsKKyAgICAgICAgICAgIGRlYy0+ZGlnaXRzID0gY3R4LT5wcmVjOworICAgICAgICAgICAgX21wZF9jaGVja19leHAoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qCisgKiBBcHBseSByb3VuZGluZyB0byBhIGRlY2ltYWwuIEFsbG93IG92ZXJmbG93IG9mIHRoZSBwcmVjaXNpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9hcHBseV9yb3VuZF9leGNlc3MobXBkX3QgKmRlYywgbXBkX3VpbnRfdCBybmQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKF9tcGRfcm5kX2luY3IoZGVjLCBybmQsIGN0eCkpIHsKKyAgICAgICAgbXBkX3VpbnRfdCBjYXJyeSA9IF9tcGRfYmFzZWluY3IoZGVjLT5kYXRhLCBkZWMtPmxlbik7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShkZWMsIGRlYy0+bGVuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWMtPmRhdGFbZGVjLT5sZW5dID0gMTsKKyAgICAgICAgICAgIGRlYy0+bGVuICs9IDE7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldGRpZ2l0cyhkZWMpOworICAgIH0KK30KKworLyoKKyAqIEFwcGx5IHJvdW5kaW5nIHRvIGEgZGVjaW1hbCB0aGF0IGhhcyBiZWVuIHJpZ2h0LXNoaWZ0ZWQgaW50byBhIGRlY2ltYWwKKyAqIHdpdGggZnVsbCBwcmVjaXNpb24gb3IgbGVzcy4gUmV0dXJuIGZhaWx1cmUgaWYgYW4gaW5jcmVtZW50IHdvdWxkCisgKiBvdmVyZmxvdyB0aGUgcHJlY2lzaW9uLgorICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9hcHBseV9yb3VuZF9maXQobXBkX3QgKmRlYywgbXBkX3VpbnRfdCBybmQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKF9tcGRfcm5kX2luY3IoZGVjLCBybmQsIGN0eCkpIHsKKyAgICAgICAgbXBkX3VpbnRfdCBjYXJyeSA9IF9tcGRfYmFzZWluY3IoZGVjLT5kYXRhLCBkZWMtPmxlbik7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShkZWMsIGRlYy0+bGVuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlYy0+ZGF0YVtkZWMtPmxlbl0gPSAxOworICAgICAgICAgICAgZGVjLT5sZW4gKz0gMTsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZGlnaXRzKGRlYyk7CisgICAgICAgIGlmIChkZWMtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKGRlYywgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIENoZWNrIGEgbm9ybWFsIG51bWJlciBmb3Igb3ZlcmZsb3csIHVuZGVyZmxvdywgY2xhbXBpbmcuIElmIHRoZSBvcGVyYW5kCisgICBpcyBtb2RpZmllZCwgaXQgd2lsbCBiZSB6ZXJvLCBzcGVjaWFsIG9yIChzdWIpbm9ybWFsIHdpdGggYSBjb2VmZmljaWVudAorICAgdGhhdCBmaXRzIGludG8gdGhlIGN1cnJlbnQgY29udGV4dCBwcmVjaXNpb24uICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfY2hlY2tfZXhwKG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBhZGpleHAsIGV0aW55LCBzaGlmdDsKKyAgICBpbnQgcm5kOworCisgICAgYWRqZXhwID0gbXBkX2FkamV4cChkZWMpOworICAgIGlmIChhZGpleHAgPiBjdHgtPmVtYXgpIHsKKworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGRlYykpIHsKKyAgICAgICAgICAgIGRlYy0+ZXhwID0gY3R4LT5lbWF4OworICAgICAgICAgICAgaWYgKGN0eC0+Y2xhbXApIHsKKyAgICAgICAgICAgICAgICBkZWMtPmV4cCAtPSAoY3R4LT5wcmVjLTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3plcm9jb2VmZihkZWMpOworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoY3R4LT5yb3VuZCkgeworICAgICAgICBjYXNlIE1QRF9ST1VORF9IQUxGX1VQOiBjYXNlIE1QRF9ST1VORF9IQUxGX0VWRU46CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX0hBTEZfRE9XTjogY2FzZSBNUERfUk9VTkRfVVA6CisgICAgICAgIGNhc2UgTVBEX1JPVU5EX1RSVU5DOgorICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBtcGRfc2lnbihkZWMpLCBNUERfSU5GKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9ST1VORF9ET1dOOiBjYXNlIE1QRF9ST1VORF8wNVVQOgorICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihkZWMsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIGRlYy0+ZXhwID0gY3R4LT5lbWF4IC0gY3R4LT5wcmVjICsgMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1QRF9ST1VORF9DRUlMSU5HOgorICAgICAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGRlYykpIHsKKyAgICAgICAgICAgICAgICBtcGRfcW1heGNvZWZmKGRlYywgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGRlYy0+ZXhwID0gY3R4LT5lbWF4IC0gY3R4LT5wcmVjICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKGRlYywgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNUERfUk9VTkRfRkxPT1I6CisgICAgICAgICAgICBpZiAobXBkX2lzcG9zaXRpdmUoZGVjKSkgeworICAgICAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYoZGVjLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZGVjLT5leHAgPSBjdHgtPmVtYXggLSBjdHgtPnByZWMgKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwoZGVjLCBNUERfTkVHLCBNUERfSU5GKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OiAvKiBkZWJ1ZyAqLworICAgICAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICB9CisKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfT3ZlcmZsb3d8TVBEX0luZXhhY3R8TVBEX1JvdW5kZWQ7CisKKyAgICB9IC8qIGZvbGQgZG93biAqLworICAgIGVsc2UgaWYgKGN0eC0+Y2xhbXAgJiYgZGVjLT5leHAgPiBtcGRfZXRvcChjdHgpKSB7CisgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgYWRqZXhwPWV4cCtkaWdpdHMtMSA8PSBlbWF4IGFuZCBleHAgPiBldG9wPWVtYXgtcHJlYysxOgorICAgICAgICAgKiAgICgxKSBzaGlmdCA9IGV4cCAtZW1heCtwcmVjLTEgPiAwCisgICAgICAgICAqICAgKDIpIGRpZ2l0cytzaGlmdCA9IGV4cCtkaWdpdHMtMSAtIGVtYXggKyBwcmVjIDw9IHByZWMgKi8KKyAgICAgICAgc2hpZnQgPSBkZWMtPmV4cCAtIG1wZF9ldG9wKGN0eCk7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoZGVjLCBkZWMsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGVjLT5leHAgLT0gc2hpZnQ7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7CisgICAgICAgIGlmICghbXBkX2lzemVyb2NvZWZmKGRlYykgJiYgYWRqZXhwIDwgY3R4LT5lbWluKSB7CisgICAgICAgICAgICAvKiBVbmRlcmZsb3cgaXMgaW1wb3NzaWJsZSwgc2luY2UgZXhwIDwgZXRpbnk9ZW1pbi1wcmVjKzEKKyAgICAgICAgICAgICAqIGFuZCBleHAgPiBldG9wPWVtYXgtcHJlYysxIHdvdWxkIGltcGx5IGVtYXggPCBlbWluLiAqLworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfU3Vibm9ybWFsOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGFkamV4cCA8IGN0eC0+ZW1pbikgeworCisgICAgICAgIGV0aW55ID0gbXBkX2V0aW55KGN0eCk7CisKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSB7CisgICAgICAgICAgICBpZiAoZGVjLT5leHAgPCBldGlueSkgeworICAgICAgICAgICAgICAgIGRlYy0+ZXhwID0gZXRpbnk7CisgICAgICAgICAgICAgICAgbXBkX3plcm9jb2VmZihkZWMpOworICAgICAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAqc3RhdHVzIHw9IE1QRF9TdWJub3JtYWw7CisgICAgICAgIGlmIChkZWMtPmV4cCA8IGV0aW55KSB7CisgICAgICAgICAgICAvKiBBdCB0aGlzIHBvaW50IGFkamV4cD1leHArZGlnaXRzLTEgPCBlbWluIGFuZCBleHAgPCBldGlueT1lbWluLXByZWMrMToKKyAgICAgICAgICAgICAqICAgKDEpIHNoaWZ0ID0gZW1pbi1wcmVjKzEgLSBleHAgPiAwCisgICAgICAgICAgICAgKiAgICgyKSBkaWdpdHMtc2hpZnQgPSBleHArZGlnaXRzLTEgLSBlbWluICsgcHJlYyA8IHByZWMgKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gZXRpbnkgLSBkZWMtPmV4cDsKKyAgICAgICAgICAgIHJuZCA9IChpbnQpbXBkX3FzaGlmdHJfaW5wbGFjZShkZWMsIHNoaWZ0KTsKKyAgICAgICAgICAgIGRlYy0+ZXhwID0gZXRpbnk7CisgICAgICAgICAgICAvKiBXZSBhbHdheXMgaGF2ZSBhIHNwYXJlIGRpZ2l0IGluIGNhc2Ugb2YgYW4gaW5jcmVtZW50LiAqLworICAgICAgICAgICAgX21wZF9hcHBseV9yb3VuZF9leGNlc3MoZGVjLCBybmQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1VuZGVyZmxvdyk7CisgICAgICAgICAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihkZWMpKSB7CisgICAgICAgICAgICAgICAgICAgIG1wZF96ZXJvY29lZmYoZGVjKTsKKyAgICAgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLyogQ2FzZSBleHAgPj0gZXRpbnk9ZW1pbi1wcmVjKzE6CisgICAgICAgICAqICAgKDEpIGFkamV4cD1leHArZGlnaXRzLTEgPCBlbWluCisgICAgICAgICAqICAgKDIpIGRpZ2l0cyA8IGVtaW4tZXhwKzEgPD0gcHJlYyAqLworICAgIH0KK30KKworLyogVHJhbnNjZW5kZW50YWwgZnVuY3Rpb25zIGRvIG5vdCBhbHdheXMgc2V0IFVuZGVyZmxvdyByZWxpYWJseSwKKyAqIHNpbmNlIHRoZXkgb25seSB1c2UgYXMgbXVjaCBwcmVjaXNpb24gYXMgaXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0CisgKiByb3VuZGluZy4gSWYgYSByZXN1bHQgbGlrZSAxLjAwMDAwMDAwMDBlLTEwMSBpcyBmaW5hbGl6ZWQsIHRoZXJlCisgKiBpcyBubyByb3VuZGluZyBkaWdpdCB0aGF0IHdvdWxkIHRyaWdnZXIgVW5kZXJmbG93LiBCdXQgd2UgY2FuCisgKiBhc3N1bWUgSW5leGFjdCwgc28gYSBzaG9ydCBjaGVjayBzdWZmaWNlcy4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorbXBkX2NoZWNrX3VuZGVyZmxvdyhtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9hZGpleHAoZGVjKSA8IGN0eC0+ZW1pbiAmJiAhbXBkX2lzemVybyhkZWMpICYmCisgICAgICAgIGRlYy0+ZXhwIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfVW5kZXJmbG93OworICAgIH0KK30KKworLyogQ2hlY2sgaWYgYSBub3JtYWwgbnVtYmVyIG11c3QgYmUgcm91bmRlZCBhZnRlciB0aGUgZXhwb25lbnQgaGFzIGJlZW4gY2hlY2tlZC4gKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9jaGVja19yb3VuZChtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2hpZnQ7CisKKyAgICAvKiBtdXN0IGhhbmRsZSBzcGVjaWFsczogX21wZF9jaGVja19leHAoKSBjYW4gcHJvZHVjZSBpbmZpbml0aWVzIG9yIE5hTnMgKi8KKyAgICBpZiAobXBkX2lzc3BlY2lhbChkZWMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZGVjLT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgc2hpZnQgPSBkZWMtPmRpZ2l0cyAtIGN0eC0+cHJlYzsKKyAgICAgICAgcm5kID0gbXBkX3FzaGlmdHJfaW5wbGFjZShkZWMsIHNoaWZ0KTsKKyAgICAgICAgZGVjLT5leHAgKz0gc2hpZnQ7CisgICAgICAgIF9tcGRfYXBwbHlfcm91bmQoZGVjLCBybmQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgaWYgKHJuZCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW5leGFjdDsKKyAgICAgICAgfQorICAgIH0KK30KKworLyogRmluYWxpemUgYWxsIG9wZXJhdGlvbnMuICovCit2b2lkCittcGRfcWZpbmFsaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4ocmVzdWx0KSkgeworICAgICAgICAgICAgX21wZF9maXhfbmFuKHJlc3VsdCwgY3R4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9jaGVja19leHAocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgX21wZF9jaGVja19yb3VuZChyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3B5aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEludGVybmFsIGZ1bmN0aW9uOiBDb3B5IGEgZGVjaW1hbCwgc2hhcmUgZGF0YSB3aXRoIHNyYzogVVNFIFdJVEggQ0FSRSEgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9jb3B5X3NoYXJlZChtcGRfdCAqZGVzdCwgY29uc3QgbXBkX3QgKnNyYykKK3sKKyAgICBkZXN0LT5mbGFncyA9IHNyYy0+ZmxhZ3M7CisgICAgZGVzdC0+ZXhwID0gc3JjLT5leHA7CisgICAgZGVzdC0+ZGlnaXRzID0gc3JjLT5kaWdpdHM7CisgICAgZGVzdC0+bGVuID0gc3JjLT5sZW47CisgICAgZGVzdC0+YWxsb2MgPSBzcmMtPmFsbG9jOworICAgIGRlc3QtPmRhdGEgPSBzcmMtPmRhdGE7CisKKyAgICBtcGRfc2V0X3NoYXJlZF9kYXRhKGRlc3QpOworfQorCisvKgorICogQ29weSBhIGRlY2ltYWwuIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHN0YXR1cyBpcyBzZXQgdG8gTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcWNvcHkobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKHJlc3VsdCA9PSBhKSByZXR1cm4gMTsKKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBhLT5sZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0czsKKyAgICByZXN1bHQtPmxlbiA9IGEtPmxlbjsKKyAgICBtZW1jcHkocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4gKiAoc2l6ZW9mICpyZXN1bHQtPmRhdGEpKTsKKworICAgIHJldHVybiAxOworfQorCisvKgorICogQ29weSB0byBhIGRlY2ltYWwgd2l0aCBhIHN0YXRpYyBidWZmZXIuIFRoZSBjYWxsZXIgaGFzIHRvIG1ha2Ugc3VyZSB0aGF0CisgKiB0aGUgYnVmZmVyIGlzIGJpZyBlbm91Z2guIENhbm5vdCBmYWlsLgorICovCitzdGF0aWMgdm9pZAorbXBkX3Fjb3B5X3N0YXRpYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSkKK3sKKyAgICBpZiAocmVzdWx0ID09IGEpIHJldHVybjsKKworICAgIG1lbWNweShyZXN1bHQtPmRhdGEsIGEtPmRhdGEsIGEtPmxlbiAqIChzaXplb2YgKnJlc3VsdC0+ZGF0YSkpOworCisgICAgbXBkX2NvcHlfZmxhZ3MocmVzdWx0LCBhKTsKKyAgICByZXN1bHQtPmV4cCA9IGEtPmV4cDsKKyAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0czsKKyAgICByZXN1bHQtPmxlbiA9IGEtPmxlbjsKK30KKworLyoKKyAqIFJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCBjb3B5IG9mIHRoZSBvcGVyYW5kLiBJbiBjYXNlIG9mIGFuIGVycm9yLAorICogc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yIGFuZCB0aGUgcmV0dXJuIHZhbHVlIGlzIE5VTEwuCisgKi8KK21wZF90ICoKK21wZF9xbmNvcHkoY29uc3QgbXBkX3QgKmEpCit7CisgICAgbXBkX3QgKnJlc3VsdDsKKworICAgIGlmICgocmVzdWx0ID0gbXBkX3FuZXdfc2l6ZShhLT5sZW4pKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBtZW1jcHkocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4gKiAoc2l6ZW9mICpyZXN1bHQtPmRhdGEpKTsKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworICAgIHJlc3VsdC0+ZGlnaXRzID0gYS0+ZGlnaXRzOworICAgIHJlc3VsdC0+bGVuID0gYS0+bGVuOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIENvcHkgYSBkZWNpbWFsIGFuZCBzZXQgdGhlIHNpZ24gdG8gcG9zaXRpdmUuIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHRoZQorICogc3RhdHVzIGlzIHNldCB0byBNUERfTWFsbG9jX2Vycm9yLgorICovCitpbnQKK21wZF9xY29weV9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBtcGRfc2V0X3Bvc2l0aXZlKHJlc3VsdCk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qCisgKiBDb3B5IGEgZGVjaW1hbCBhbmQgbmVnYXRlIHRoZSBzaWduLiBJbiBjYXNlIG9mIGFuIGVycm9yLCB0aGUKKyAqIHN0YXR1cyBpcyBzZXQgdG8gTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcWNvcHlfbmVnYXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgX21wZF9uZWdhdGUocmVzdWx0KTsKKyAgICByZXR1cm4gMTsKK30KKworLyoKKyAqIENvcHkgYSBkZWNpbWFsLCBzZXR0aW5nIHRoZSBzaWduIG9mIHRoZSBmaXJzdCBvcGVyYW5kIHRvIHRoZSBzaWduIG9mIHRoZQorICogc2Vjb25kIG9wZXJhbmQuIEluIGNhc2Ugb2YgYW4gZXJyb3IsIHRoZSBzdGF0dXMgaXMgc2V0IHRvIE1QRF9NYWxsb2NfZXJyb3IuCisgKi8KK2ludAorbXBkX3Fjb3B5X3NpZ24obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ4X3Qgc2lnbl9iID0gbXBkX3NpZ24oYik7IC8qIHJlc3VsdCBtYXkgZXF1YWwgYiEgKi8KKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgbXBkX3NldF9zaWduKHJlc3VsdCwgc2lnbl9iKTsKKyAgICByZXR1cm4gMTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmlzb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBGb3IgYWxsIGZ1bmN0aW9ucyB0aGF0IGNvbXBhcmUgdHdvIG9wZXJhbmRzIGFuZCByZXR1cm4gYW4gaW50IHRoZSB1c3VhbAorICogY29udmVudGlvbiBhcHBsaWVzIHRvIHRoZSByZXR1cm4gdmFsdWU6CisgKgorICogLTEgaWYgb3AxIDwgb3AyCisgKiAgMCBpZiBvcDEgPT0gb3AyCisgKiAgMSBpZiBvcDEgPiBvcDIKKyAqCisgKiAgSU5UX01BWCBmb3IgZXJyb3IKKyAqLworCisKKy8qIENvbnZlbmllbmNlIG1hY3JvLiBJZiBhIGFuZCBiIGFyZSBub3QgZXF1YWwsIHJldHVybiBmcm9tIHRoZSBjYWxsaW5nCisgKiBmdW5jdGlvbiB3aXRoIHRoZSBjb3JyZWN0IGNvbXBhcmlzb24gdmFsdWUuICovCisjZGVmaW5lIENNUF9FUVVBTF9PUl9SRVRVUk4oYSwgYikgIFwKKyAgICAgICAgaWYgKGEgIT0gYikgeyAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChhIDwgYikgeyAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7IFwKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHJldHVybiAxOyAgICAgICAgICBcCisgICAgICAgIH0KKworLyoKKyAqIENvbXBhcmUgdGhlIGRhdGEgb2YgYmlnIGFuZCBzbWFsbC4gVGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBlcXVpdmFsZW50CisgKiBvZiBmaXJzdCBzaGlmdGluZyBzbWFsbCB0byB0aGUgbGVmdCBhbmQgdGhlbiBjb21wYXJpbmcgdGhlIGRhdGEgb2YKKyAqIGJpZyBhbmQgc21hbGwsIGV4Y2VwdCB0aGF0IG5vIGFsbG9jYXRpb24gZm9yIHRoZSBsZWZ0IHNoaWZ0IGlzIG5lZWRlZC4KKyAqLworc3RhdGljIGludAorX21wZF9iYXNlY21wKG1wZF91aW50X3QgKmJpZywgbXBkX3VpbnRfdCAqc21hbGwsIG1wZF9zaXplX3QgbiwgbXBkX3NpemVfdCBtLAorICAgICAgICAgICAgIG1wZF9zaXplX3Qgc2hpZnQpCit7CisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikgJiYgIWRlZmluZWQoX19jbGFuZ19fKQorICAgIC8qIHNwdXJpb3VzIHVuaW5pdGlhbGl6ZWQgd2FybmluZ3MgKi8KKyAgICBtcGRfdWludF90IGw9bCwgbHByZXY9bHByZXYsIGg9aDsKKyNlbHNlCisgICAgbXBkX3VpbnRfdCBsLCBscHJldiwgaDsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgcSwgcjsKKyAgICBtcGRfdWludF90IHBoLCB4OworCisgICAgYXNzZXJ0KG0gPiAwICYmIG4gPj0gbSAmJiBzaGlmdCA+IDApOworCisgICAgX21wZF9kaXZfd29yZCgmcSwgJnIsIChtcGRfdWludF90KXNoaWZ0LCBNUERfUkRJR0lUUyk7CisKKyAgICBpZiAociAhPSAwKSB7CisKKyAgICAgICAgcGggPSBtcGRfcG93MTBbcl07CisKKyAgICAgICAgLS1tOyAtLW47CisgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZoLCAmbHByZXYsIHNtYWxsW20tLV0sIE1QRF9SRElHSVRTLXIpOworICAgICAgICBpZiAoaCAhPSAwKSB7CisgICAgICAgICAgICBDTVBfRVFVQUxfT1JfUkVUVVJOKGJpZ1tuXSwgaCkKKyAgICAgICAgICAgIC0tbjsKKyAgICAgICAgfQorICAgICAgICBmb3IgKDsgbSAhPSBNUERfU0laRV9NQVg7IG0tLSxuLS0pIHsKKyAgICAgICAgICAgIF9tcGRfZGl2bW9kX3BvdzEwKCZoLCAmbCwgc21hbGxbbV0sIE1QRF9SRElHSVRTLXIpOworICAgICAgICAgICAgeCA9IHBoICogbHByZXYgKyBoOworICAgICAgICAgICAgQ01QX0VRVUFMX09SX1JFVFVSTihiaWdbbl0sIHgpCisgICAgICAgICAgICBscHJldiA9IGw7CisgICAgICAgIH0KKyAgICAgICAgeCA9IHBoICogbHByZXY7CisgICAgICAgIENNUF9FUVVBTF9PUl9SRVRVUk4oYmlnW3FdLCB4KQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2hpbGUgKC0tbSAhPSBNUERfU0laRV9NQVgpIHsKKyAgICAgICAgICAgIENNUF9FUVVBTF9PUl9SRVRVUk4oYmlnW20rcV0sIHNtYWxsW21dKQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuICFfbXBkX2lzYWxsemVybyhiaWcsIHEpOworfQorCisvKiBDb21wYXJlIHR3byBkZWNpbWFscyB3aXRoIHRoZSBzYW1lIGFkanVzdGVkIGV4cG9uZW50LiAqLworc3RhdGljIGludAorX21wZF9jbXBfc2FtZV9hZGpleHAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIG1wZF9zc2l6ZV90IHNoaWZ0LCBpOworCisgICAgaWYgKGEtPmV4cCAhPSBiLT5leHApIHsKKyAgICAgICAgLyogQ2Fubm90IHdyYXA6IGEtPmV4cCArIGEtPmRpZ2l0cyA9IGItPmV4cCArIGItPmRpZ2l0cywgc28KKyAgICAgICAgICogYS0+ZXhwIC0gYi0+ZXhwID0gYi0+ZGlnaXRzIC0gYS0+ZGlnaXRzLiAqLworICAgICAgICBzaGlmdCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICAgICAgaWYgKHNoaWZ0ID4gMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xICogX21wZF9iYXNlY21wKGItPmRhdGEsIGEtPmRhdGEsIGItPmxlbiwgYS0+bGVuLCBzaGlmdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gX21wZF9iYXNlY21wKGEtPmRhdGEsIGItPmRhdGEsIGEtPmxlbiwgYi0+bGVuLCAtc2hpZnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBBdCB0aGlzIHBvaW50IGFkamV4cChhKSA9PSBhZGpleHAoYikgYW5kIGEtPmV4cCA9PSBiLT5leHAsCisgICAgICogc28gYS0+ZGlnaXRzID09IGItPmRpZ2l0cywgdGhlcmVmb3JlIGEtPmxlbiA9PSBiLT5sZW4uCisgICAgICovCisgICAgZm9yIChpID0gYS0+bGVuLTE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgIENNUF9FUVVBTF9PUl9SRVRVUk4oYS0+ZGF0YVtpXSwgYi0+ZGF0YVtpXSkKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyogQ29tcGFyZSB0d28gbnVtZXJpY2FsIHZhbHVlcy4gKi8KK3N0YXRpYyBpbnQKK19tcGRfY21wKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfc3NpemVfdCBhZGpleHBfYSwgYWRqZXhwX2I7CisKKyAgICAvKiBlcXVhbCBwb2ludGVycyAqLworICAgIGlmIChhID09IGIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogaW5maW5pdGllcyAqLworICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIHJldHVybiBtcGRfaXNuZWdhdGl2ZShiKSAtIG1wZF9pc25lZ2F0aXZlKGEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtcGRfYXJpdGhfc2lnbihhKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIHJldHVybiAtbXBkX2FyaXRoX3NpZ24oYik7CisgICAgfQorCisgICAgLyogemVyb3MgKi8KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtbXBkX2FyaXRoX3NpZ24oYik7CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgcmV0dXJuIG1wZF9hcml0aF9zaWduKGEpOworICAgIH0KKworICAgIC8qIGRpZmZlcmVudCBzaWducyAqLworICAgIGlmIChtcGRfc2lnbihhKSAhPSBtcGRfc2lnbihiKSkgeworICAgICAgICByZXR1cm4gbXBkX3NpZ24oYikgLSBtcGRfc2lnbihhKTsKKyAgICB9CisKKyAgICAvKiBkaWZmZXJlbnQgYWRqdXN0ZWQgZXhwb25lbnRzICovCisgICAgYWRqZXhwX2EgPSBtcGRfYWRqZXhwKGEpOworICAgIGFkamV4cF9iID0gbXBkX2FkamV4cChiKTsKKyAgICBpZiAoYWRqZXhwX2EgIT0gYWRqZXhwX2IpIHsKKyAgICAgICAgaWYgKGFkamV4cF9hIDwgYWRqZXhwX2IpIHsKKyAgICAgICAgICAgIHJldHVybiAtMSAqIG1wZF9hcml0aF9zaWduKGEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtcGRfYXJpdGhfc2lnbihhKTsKKyAgICB9CisKKyAgICAvKiBzYW1lIGFkanVzdGVkIGV4cG9uZW50cyAqLworICAgIHJldHVybiBfbXBkX2NtcF9zYW1lX2FkamV4cChhLCBiKSAqIG1wZF9hcml0aF9zaWduKGEpOworfQorCisvKiBDb21wYXJlIHRoZSBhYnNvbHV0ZXMgb2YgdHdvIG51bWVyaWNhbCB2YWx1ZXMuICovCitzdGF0aWMgaW50CitfbXBkX2NtcF9hYnMoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIG1wZF9zc2l6ZV90IGFkamV4cF9hLCBhZGpleHBfYjsKKworICAgIC8qIGVxdWFsIHBvaW50ZXJzICovCisgICAgaWYgKGEgPT0gYikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBpbmZpbml0aWVzICovCisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogemVyb3MgKi8KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihiKSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBkaWZmZXJlbnQgYWRqdXN0ZWQgZXhwb25lbnRzICovCisgICAgYWRqZXhwX2EgPSBtcGRfYWRqZXhwKGEpOworICAgIGFkamV4cF9iID0gbXBkX2FkamV4cChiKTsKKyAgICBpZiAoYWRqZXhwX2EgIT0gYWRqZXhwX2IpIHsKKyAgICAgICAgaWYgKGFkamV4cF9hIDwgYWRqZXhwX2IpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBzYW1lIGFkanVzdGVkIGV4cG9uZW50cyAqLworICAgIHJldHVybiBfbXBkX2NtcF9zYW1lX2FkamV4cChhLCBiKTsKK30KKworLyogQ29tcGFyZSB0d28gdmFsdWVzIGFuZCByZXR1cm4gYW4gaW50ZWdlciByZXN1bHQuICovCitpbnQKK21wZF9xY21wKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfaXNuYW4oYSkgfHwgbXBkX2lzbmFuKGIpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBJTlRfTUFYOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIF9tcGRfY21wKGEsIGIpOworfQorCisvKgorICogQ29tcGFyZSBhIGFuZCBiLCBjb252ZXJ0IHRoZSB0aGUgdXN1YWwgaW50ZWdlciByZXN1bHQgdG8gYSBkZWNpbWFsIGFuZAorICogc3RvcmUgaXQgaW4gJ3Jlc3VsdCcuIEZvciBjb252ZW5pZW5jZSwgdGhlIGludGVnZXIgcmVzdWx0IG9mIHRoZSBjb21wYXJpc29uCisgKiBpcyByZXR1cm5lZC4gQ29tcGFyaXNvbnMgaW52b2x2aW5nIE5hTnMgcmV0dXJuIE5hTi9JTlRfTUFYLgorICovCitpbnQKK21wZF9xY29tcGFyZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm4gSU5UX01BWDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGMgPSBfbXBkX2NtcChhLCBiKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGMgPCAwKSwgKGMgIT0gMCksIDApOworICAgIHJldHVybiBjOworfQorCisvKiBTYW1lIGFzIG1wZF9jb21wYXJlKCksIGJ1dCBzaWduYWwgZm9yIGFsbCBOYU5zLCBpLmUuIGFsc28gZm9yIHF1aWV0IE5hTnMuICovCitpbnQKK21wZF9xY29tcGFyZV9zaWduYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIElOVF9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjID0gX21wZF9jbXAoYSwgYik7CisgICAgX3NldHRyaXBsZShyZXN1bHQsIChjIDwgMCksIChjICE9IDApLCAwKTsKKyAgICByZXR1cm4gYzsKK30KKworLyogQ29tcGFyZSB0aGUgb3BlcmFuZHMgdXNpbmcgYSB0b3RhbCBvcmRlci4gKi8KK2ludAorbXBkX2NtcF90b3RhbChjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgbXBkX3QgYWEsIGJiOworICAgIGludCBuYW5fYSwgbmFuX2I7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX3NpZ24oYSkgIT0gbXBkX3NpZ24oYikpIHsKKyAgICAgICAgcmV0dXJuIG1wZF9zaWduKGIpIC0gbXBkX3NpZ24oYSk7CisgICAgfQorCisKKyAgICBpZiAobXBkX2lzbmFuKGEpKSB7CisgICAgICAgIGMgPSAxOworICAgICAgICBpZiAobXBkX2lzbmFuKGIpKSB7CisgICAgICAgICAgICBuYW5fYSA9IChtcGRfaXNxbmFuKGEpKSA/IDEgOiAwOworICAgICAgICAgICAgbmFuX2IgPSAobXBkX2lzcW5hbihiKSkgPyAxIDogMDsKKyAgICAgICAgICAgIGlmIChuYW5fYiA9PSBuYW5fYSkgeworICAgICAgICAgICAgICAgIGlmIChhLT5sZW4gPiAwICYmIGItPmxlbiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgX21wZF9jb3B5X3NoYXJlZCgmYWEsIGEpOworICAgICAgICAgICAgICAgICAgICBfbXBkX2NvcHlfc2hhcmVkKCZiYiwgYik7CisgICAgICAgICAgICAgICAgICAgIGFhLmV4cCA9IGJiLmV4cCA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8qIGNvbXBhcmUgcGF5bG9hZCAqLworICAgICAgICAgICAgICAgICAgICBjID0gX21wZF9jbXBfYWJzKCZhYSwgJmJiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSAoYS0+bGVuID4gMCkgLSAoYi0+bGVuID4gMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYyA9IG5hbl9hIC0gbmFuX2I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzbmFuKGIpKSB7CisgICAgICAgIGMgPSAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcF9hYnMoYSwgYik7CisgICAgICAgIGlmIChjID09IDAgJiYgYS0+ZXhwICE9IGItPmV4cCkgeworICAgICAgICAgICAgYyA9IChhLT5leHAgPCBiLT5leHApID8gLTEgOiAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGMgKiBtcGRfYXJpdGhfc2lnbihhKTsKK30KKworLyoKKyAqIENvbXBhcmUgYSBhbmQgYiBhY2NvcmRpbmcgdG8gYSB0b3RhbCBvcmRlciwgY29udmVydCB0aGUgdXN1YWwgaW50ZWdlciByZXN1bHQKKyAqIHRvIGEgZGVjaW1hbCBhbmQgc3RvcmUgaXQgaW4gJ3Jlc3VsdCcuIEZvciBjb252ZW5pZW5jZSwgdGhlIGludGVnZXIgcmVzdWx0CisgKiBvZiB0aGUgY29tcGFyaXNvbiBpcyByZXR1cm5lZC4KKyAqLworaW50CittcGRfY29tcGFyZV90b3RhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpCit7CisgICAgaW50IGM7CisKKyAgICBjID0gbXBkX2NtcF90b3RhbChhLCBiKTsKKyAgICBfc2V0dHJpcGxlKHJlc3VsdCwgKGMgPCAwKSwgKGMgIT0gMCksIDApOworICAgIHJldHVybiBjOworfQorCisvKiBDb21wYXJlIHRoZSBtYWduaXR1ZGUgb2YgdGhlIG9wZXJhbmRzIHVzaW5nIGEgdG90YWwgb3JkZXIuICovCitpbnQKK21wZF9jbXBfdG90YWxfbWFnKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBtcGRfdCBhYSwgYmI7CisKKyAgICBfbXBkX2NvcHlfc2hhcmVkKCZhYSwgYSk7CisgICAgX21wZF9jb3B5X3NoYXJlZCgmYmIsIGIpOworCisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYWEpOworICAgIG1wZF9zZXRfcG9zaXRpdmUoJmJiKTsKKworICAgIHJldHVybiBtcGRfY21wX3RvdGFsKCZhYSwgJmJiKTsKK30KKworLyoKKyAqIENvbXBhcmUgdGhlIG1hZ25pdHVkZSBvZiBhIGFuZCBiIGFjY29yZGluZyB0byBhIHRvdGFsIG9yZGVyLCBjb252ZXJ0IHRoZQorICogdGhlIHVzdWFsIGludGVnZXIgcmVzdWx0IHRvIGEgZGVjaW1hbCBhbmQgc3RvcmUgaXQgaW4gJ3Jlc3VsdCcuCisgKiBGb3IgY29udmVuaWVuY2UsIHRoZSBpbnRlZ2VyIHJlc3VsdCBvZiB0aGUgY29tcGFyaXNvbiBpcyByZXR1cm5lZC4KKyAqLworaW50CittcGRfY29tcGFyZV90b3RhbF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIGludCBjOworCisgICAgYyA9IG1wZF9jbXBfdG90YWxfbWFnKGEsIGIpOworICAgIF9zZXR0cmlwbGUocmVzdWx0LCAoYyA8IDApLCAoYyAhPSAwKSwgMCk7CisgICAgcmV0dXJuIGM7Cit9CisKKy8qIERldGVybWluZSBhbiBvcmRlcmluZyBmb3Igb3BlcmFuZHMgdGhhdCBhcmUgbnVtZXJpY2FsbHkgZXF1YWwuICovCitzdGF0aWMgaW5saW5lIGludAorX21wZF9jbXBfbnVtZXF1YWwoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKQoreworICAgIGludCBzaWduX2EsIHNpZ25fYjsKKyAgICBpbnQgYzsKKworICAgIHNpZ25fYSA9IG1wZF9zaWduKGEpOworICAgIHNpZ25fYiA9IG1wZF9zaWduKGIpOworICAgIGlmIChzaWduX2EgIT0gc2lnbl9iKSB7CisgICAgICAgIGMgPSBzaWduX2IgLSBzaWduX2E7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gKGEtPmV4cCA8IGItPmV4cCkgPyAtMSA6IDE7CisgICAgICAgIGMgKj0gbXBkX2FyaXRoX3NpZ24oYSk7CisgICAgfQorCisgICAgcmV0dXJuIGM7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIFNoaWZ0aW5nIHRoZSBjb2VmZmljaWVudCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogU2hpZnQgdGhlIGNvZWZmaWNpZW50IG9mIHRoZSBvcGVyYW5kIHRvIHRoZSBsZWZ0LCBubyBjaGVjayBmb3Igc3BlY2lhbHMuCisgKiBCb3RoIG9wZXJhbmRzIG1heSBiZSB0aGUgc2FtZSBwb2ludGVyLiBJZiB0aGUgcmVzdWx0IGxlbmd0aCBoYXMgdG8gYmUKKyAqIGluY3JlYXNlZCwgbXBkX3FyZXNpemUoKSBtaWdodCBmYWlsIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqLworaW50CittcGRfcXNoaWZ0bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBzaXplOworCisgICAgYXNzZXJ0KCFtcGRfaXNzcGVjaWFsKGEpKTsKKyAgICBhc3NlcnQobiA+PSAwKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkgfHwgbiA9PSAwKSB7CisgICAgICAgIHJldHVybiBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKworICAgIHNpemUgPSBtcGRfZGlnaXRzX3RvX3NpemUoYS0+ZGlnaXRzK24pOworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBzaXplLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybiAwOyAvKiByZXN1bHQgaXMgTmFOICovCisgICAgfQorCisgICAgX21wZF9iYXNlc2hpZnRsKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgc2l6ZSwgYS0+bGVuLCBuKTsKKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHMrbjsKKyAgICByZXN1bHQtPmxlbiA9IHNpemU7CisKKyAgICByZXR1cm4gMTsKK30KKworLyogRGV0ZXJtaW5lIHRoZSByb3VuZGluZyBpbmRpY2F0b3IgaWYgYWxsIGRpZ2l0cyBvZiB0aGUgY29lZmZpY2llbnQgYXJlIHNoaWZ0ZWQKKyAqIG91dCBvZiB0aGUgcGljdHVyZS4gKi8KK3N0YXRpYyBtcGRfdWludF90CitfbXBkX2dldF9ybmQoY29uc3QgbXBkX3VpbnRfdCAqZGF0YSwgbXBkX3NzaXplX3QgbGVuLCBpbnQgdXNlX21zZCkKK3sKKyAgICBtcGRfdWludF90IHJuZCA9IDAsIHJlc3QgPSAwLCB3b3JkOworCisgICAgd29yZCA9IGRhdGFbbGVuLTFdOworICAgIC8qIHNwZWNpYWwgdHJlYXRtZW50IGZvciB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCBpZiBzaGlmdCA9PSBkaWdpdHMgKi8KKyAgICBpZiAodXNlX21zZCkgeworICAgICAgICBfbXBkX2Rpdm1vZF9wb3cxMCgmcm5kLCAmcmVzdCwgd29yZCwgbXBkX3dvcmRfZGlnaXRzKHdvcmQpLTEpOworICAgICAgICBpZiAobGVuID4gMSAmJiByZXN0ID09IDApIHsKKyAgICAgICAgICAgICByZXN0ID0gIV9tcGRfaXNhbGx6ZXJvKGRhdGEsIGxlbi0xKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdCA9ICFfbXBkX2lzYWxsemVybyhkYXRhLCBsZW4pOworICAgIH0KKworICAgIHJldHVybiAocm5kID09IDAgfHwgcm5kID09IDUpID8gcm5kICsgISFyZXN0IDogcm5kOworfQorCisvKgorICogU2FtZSBhcyBtcGRfcXNoaWZ0cigpLCBidXQgJ3Jlc3VsdCcgaXMgYW4gbXBkX3Qgd2l0aCBhIHN0YXRpYyBjb2VmZmljaWVudC4KKyAqIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhhdCB0aGUgY29lZmZpY2llbnQgaXMgYmlnCisgKiBlbm91Z2guIFRoZSBmdW5jdGlvbiBjYW5ub3QgZmFpbC4KKyAqLworbXBkX3VpbnRfdAorbXBkX3Fzc2hpZnRyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuKQoreworICAgIG1wZF91aW50X3Qgcm5kOworICAgIG1wZF9zc2l6ZV90IHNpemU7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkpOworICAgIGFzc2VydChuID49IDApOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSB8fCBuID09IDApIHsKKyAgICAgICAgbXBkX3Fjb3B5X3N0YXRpYyhyZXN1bHQsIGEpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAobiA+PSBhLT5kaWdpdHMpIHsKKyAgICAgICAgcm5kID0gX21wZF9nZXRfcm5kKGEtPmRhdGEsIGEtPmxlbiwgKG49PWEtPmRpZ2l0cykpOworICAgICAgICBtcGRfemVyb2NvZWZmKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQtPmRpZ2l0cyA9IGEtPmRpZ2l0cy1uOworICAgICAgICBzaXplID0gbXBkX2RpZ2l0c190b19zaXplKHJlc3VsdC0+ZGlnaXRzKTsKKyAgICAgICAgcm5kID0gX21wZF9iYXNlc2hpZnRyKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBuKTsKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBzaXplOworICAgIH0KKworICAgIG1wZF9jb3B5X2ZsYWdzKHJlc3VsdCwgYSk7CisgICAgcmVzdWx0LT5leHAgPSBhLT5leHA7CisKKyAgICByZXR1cm4gcm5kOworfQorCisvKgorICogSW5wbGFjZSBzaGlmdCBvZiB0aGUgY29lZmZpY2llbnQgdG8gdGhlIHJpZ2h0LCBubyBjaGVjayBmb3Igc3BlY2lhbHMuCisgKiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmRpY2F0b3IgZm9yIG1wZF9ybmRfaW5jcigpLgorICogVGhlIGZ1bmN0aW9uIGNhbm5vdCBmYWlsLgorICovCittcGRfdWludF90CittcGRfcXNoaWZ0cl9pbnBsYWNlKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IG4pCit7CisgICAgdWludDMyX3QgZHVtbXk7CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChyZXN1bHQpKTsKKyAgICBhc3NlcnQobiA+PSAwKTsKKworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSB8fCBuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG4gPj0gcmVzdWx0LT5kaWdpdHMpIHsKKyAgICAgICAgcm5kID0gX21wZF9nZXRfcm5kKHJlc3VsdC0+ZGF0YSwgcmVzdWx0LT5sZW4sIChuPT1yZXN1bHQtPmRpZ2l0cykpOworICAgICAgICBtcGRfemVyb2NvZWZmKHJlc3VsdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBybmQgPSBfbXBkX2Jhc2VzaGlmdHIocmVzdWx0LT5kYXRhLCByZXN1bHQtPmRhdGEsIHJlc3VsdC0+bGVuLCBuKTsKKyAgICAgICAgcmVzdWx0LT5kaWdpdHMgLT0gbjsKKyAgICAgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShyZXN1bHQtPmRpZ2l0cyk7CisgICAgICAgIC8qIHJlZHVjaW5nIHRoZSBzaXplIGNhbm5vdCBmYWlsICovCisgICAgICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgc2l6ZSwgJmR1bW15KTsKKyAgICAgICAgcmVzdWx0LT5sZW4gPSBzaXplOworICAgIH0KKworICAgIHJldHVybiBybmQ7Cit9CisKKy8qCisgKiBTaGlmdCB0aGUgY29lZmZpY2llbnQgb2YgdGhlIG9wZXJhbmQgdG8gdGhlIHJpZ2h0LCBubyBjaGVjayBmb3Igc3BlY2lhbHMuCisgKiBCb3RoIG9wZXJhbmRzIG1heSBiZSB0aGUgc2FtZSBwb2ludGVyLiBSZXR1cm5zIHRoZSByb3VuZGluZyBpbmRpY2F0b3IgdG8KKyAqIGJlIHVzZWQgYnkgbXBkX3JuZF9pbmNyKCkuIElmIHRoZSByZXN1bHQgbGVuZ3RoIGhhcyB0byBiZSBpbmNyZWFzZWQsCisgKiBtcGRfcWNvcHkoKSBvciBtcGRfcXJlc2l6ZSgpIG1pZ2h0IGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLiBJbiB0aG9zZQorICogY2FzZXMsIE1QRF9VSU5UX01BWCBpcyByZXR1cm5lZC4KKyAqLworbXBkX3VpbnRfdAorbXBkX3FzaGlmdHIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3VpbnRfdCBybmQ7CisgICAgbXBkX3NzaXplX3Qgc2l6ZTsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChhKSk7CisgICAgYXNzZXJ0KG4gPj0gMCk7CisKKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpIHx8IG4gPT0gMCkgeworICAgICAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKG4gPj0gYS0+ZGlnaXRzKSB7CisgICAgICAgIHJuZCA9IF9tcGRfZ2V0X3JuZChhLT5kYXRhLCBhLT5sZW4sIChuPT1hLT5kaWdpdHMpKTsKKyAgICAgICAgbXBkX3plcm9jb2VmZihyZXN1bHQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0LT5kaWdpdHMgPSBhLT5kaWdpdHMtbjsKKyAgICAgICAgc2l6ZSA9IG1wZF9kaWdpdHNfdG9fc2l6ZShyZXN1bHQtPmRpZ2l0cyk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICAgICAgcm5kID0gX21wZF9iYXNlc2hpZnRyKHJlc3VsdC0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBuKTsKKyAgICAgICAgICAgIC8qIHJlZHVjaW5nIHRoZSBzaXplIGNhbm5vdCBmYWlsICovCisgICAgICAgICAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHNpemUsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgc2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBNUERfVUlOVF9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBybmQgPSBfbXBkX2Jhc2VzaGlmdHIocmVzdWx0LT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIG4pOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+bGVuID0gc2l6ZTsKKyAgICB9CisKKyAgICBtcGRfY29weV9mbGFncyhyZXN1bHQsIGEpOworICAgIHJlc3VsdC0+ZXhwID0gYS0+ZXhwOworCisgICAgcmV0dXJuIHJuZDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgTWlzY2VsbGFuZW91cyBvcGVyYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIExvZ2ljYWwgQW5kICovCit2b2lkCittcGRfcWFuZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgY29uc3QgbXBkX3QgKmJpZyA9IGEsICpzbWFsbCA9IGI7CisgICAgbXBkX3VpbnRfdCB4LCB5LCB6LCB4Yml0LCB5Yml0OworICAgIGludCBrLCBtc3dkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikgfHwKKyAgICAgICAgbXBkX2lzbmVnYXRpdmUoYSkgfHwgbXBkX2lzbmVnYXRpdmUoYikgfHwKKyAgICAgICAgYS0+ZXhwICE9IDAgfHwgYi0+ZXhwICE9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChiLT5kaWdpdHMgPiBhLT5kaWdpdHMpIHsKKyAgICAgICAgYmlnID0gYjsKKyAgICAgICAgc21hbGwgPSBhOworICAgIH0KKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgYmlnLT5sZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLyogZnVsbCB3b3JkcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBzbWFsbC0+bGVuLTE7IGkrKykgeworICAgICAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICB6ICs9ICh4Yml0JnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB6OworICAgIH0KKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgb2Ygc21hbGwgKi8KKyAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB6ID0gMDsKKyAgICBtc3dkaWdpdHMgPSBtcGRfd29yZF9kaWdpdHMoeCk7CisgICAgZm9yIChrID0gMDsgayA8IG1zd2RpZ2l0czsgaysrKSB7CisgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgIHggLz0gMTA7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9ICh4Yml0JnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICB9CisgICAgcmVzdWx0LT5kYXRhW2krK10gPSB6OworCisgICAgLyogc2NhbiB0aGUgcmVzdCBvZiB5IGZvciBkaWdpdHMgPiAxICovCisgICAgZm9yICg7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBzY2FuIHRoZSByZXN0IG9mIGJpZyBmb3IgZGlnaXRzID4gMSAqLworICAgIGZvciAoOyBpIDwgYmlnLT5sZW47IGkrKykgeworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbXBkX2NsZWFyX2ZsYWdzKHJlc3VsdCk7CisgICAgcmVzdWx0LT5leHAgPSAwOworICAgIHJlc3VsdC0+bGVuID0gX21wZF9yZWFsX3NpemUocmVzdWx0LT5kYXRhLCBzbWFsbC0+bGVuKTsKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgcmV0dXJuOworCitpbnZhbGlkX29wZXJhdGlvbjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7Cit9CisKKy8qIENsYXNzIG9mIGFuIG9wZXJhbmQuIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjb25zdGFudCBuYW1lLiAqLworY29uc3QgY2hhciAqCittcGRfY2xhc3MoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCkKK3sKKyAgICBpZiAobXBkX2lzbmFuKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNxbmFuKGEpKQorICAgICAgICAgICAgcmV0dXJuICJOYU4iOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gInNOYU4iOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNwb3NpdGl2ZShhKSkgeworICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpCisgICAgICAgICAgICByZXR1cm4gIitJbmZpbml0eSI7CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3plcm8oYSkpCisgICAgICAgICAgICByZXR1cm4gIitaZXJvIjsKKyAgICAgICAgZWxzZSBpZiAobXBkX2lzbm9ybWFsKGEsIGN0eCkpCisgICAgICAgICAgICByZXR1cm4gIitOb3JtYWwiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gIitTdWJub3JtYWwiOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKQorICAgICAgICAgICAgcmV0dXJuICItSW5maW5pdHkiOworICAgICAgICBlbHNlIGlmIChtcGRfaXN6ZXJvKGEpKQorICAgICAgICAgICAgcmV0dXJuICItWmVybyI7CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25vcm1hbChhLCBjdHgpKQorICAgICAgICAgICAgcmV0dXJuICItTm9ybWFsIjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuICItU3Vibm9ybWFsIjsKKyAgICB9Cit9CisKKy8qIExvZ2ljYWwgWG9yICovCit2b2lkCittcGRfcWludmVydChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHgsIHosIHhiaXQ7CisgICAgbXBkX3NzaXplX3QgaSwgZGlnaXRzLCBsZW47CisgICAgbXBkX3NzaXplX3QgcSwgcjsKKyAgICBpbnQgazsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc25lZ2F0aXZlKGEpIHx8IGEtPmV4cCAhPSAwKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRpZ2l0cyA9IChhLT5kaWdpdHMgPCBjdHgtPnByZWMpID8gY3R4LT5wcmVjIDogYS0+ZGlnaXRzOworICAgIF9tcGRfaWRpdl93b3JkKCZxLCAmciwgZGlnaXRzLCBNUERfUkRJR0lUUyk7CisgICAgbGVuID0gKHIgPT0gMCkgPyBxIDogcSsxOworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICB4ID0gKGkgPCBhLT5sZW4pID8gYS0+ZGF0YVtpXSA6IDA7CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICBpZiAoeGJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgeiArPSAheGJpdCA/IG1wZF9wb3cxMFtrXSA6IDA7CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gejsKKyAgICB9CisKKyAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGxlbik7CisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7CisgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIHJldHVybjsKKworaW52YWxpZF9vcGVyYXRpb246CisgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworfQorCisvKiBFeHBvbmVudCBvZiB0aGUgbWFnbml0dWRlIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHRoZSBvcGVyYW5kLiAqLwordm9pZAorbXBkX3Fsb2diKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfTkVHLCBNUERfSU5GKTsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25fYnlfemVybzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xc2V0X3NzaXplKHJlc3VsdCwgbXBkX2FkamV4cChhKSwgY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyogTG9naWNhbCBPciAqLwordm9pZAorbXBkX3FvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBjb25zdCBtcGRfdCAqYmlnID0gYSwgKnNtYWxsID0gYjsKKyAgICBtcGRfdWludF90IHgsIHksIHosIHhiaXQsIHliaXQ7CisgICAgaW50IGssIG1zd2RpZ2l0czsKKyAgICBtcGRfc3NpemVfdCBpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSB8fAorICAgICAgICBtcGRfaXNuZWdhdGl2ZShhKSB8fCBtcGRfaXNuZWdhdGl2ZShiKSB8fAorICAgICAgICBhLT5leHAgIT0gMCB8fCBiLT5leHAgIT0gMCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGItPmRpZ2l0cyA+IGEtPmRpZ2l0cykgeworICAgICAgICBiaWcgPSBiOworICAgICAgICBzbWFsbCA9IGE7CisgICAgfQorICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBiaWctPmxlbiwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICAvKiBmdWxsIHdvcmRzICovCisgICAgZm9yIChpID0gMDsgaSA8IHNtYWxsLT5sZW4tMTsgaSsrKSB7CisgICAgICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICAgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICAgICAgeiA9IDA7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB4Yml0ID0geCAlIDEwOworICAgICAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgICAgICB5IC89IDEwOworICAgICAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHogKz0gKHhiaXR8eWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IHo7CisgICAgfQorICAgIC8qIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiBzbWFsbCAqLworICAgIHggPSBzbWFsbC0+ZGF0YVtpXTsKKyAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgIHogPSAwOworICAgIG1zd2RpZ2l0cyA9IG1wZF93b3JkX2RpZ2l0cyh4KTsKKyAgICBmb3IgKGsgPSAwOyBrIDwgbXN3ZGlnaXRzOyBrKyspIHsKKyAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgeCAvPSAxMDsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHhiaXQgPiAxIHx8IHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0gKHhiaXR8eWJpdCkgPyBtcGRfcG93MTBba10gOiAwOworICAgIH0KKworICAgIC8qIHNjYW4gZm9yIGRpZ2l0cyA+IDEgYW5kIGNvcHkgdGhlIHJlc3Qgb2YgeSAqLworICAgIGZvciAoOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICB5IC89IDEwOworICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgIH0KKyAgICAgICAgeiArPSB5Yml0Km1wZF9wb3cxMFtrXTsKKyAgICB9CisgICAgcmVzdWx0LT5kYXRhW2krK10gPSB6OworICAgIC8qIHNjYW4gZm9yIGRpZ2l0cyA+IDEgYW5kIGNvcHkgdGhlIHJlc3Qgb2YgYmlnICovCisgICAgZm9yICg7IGkgPCBiaWctPmxlbjsgaSsrKSB7CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBNUERfUkRJR0lUUzsgaysrKSB7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5kYXRhW2ldID0gYmlnLT5kYXRhW2ldOworICAgIH0KKworICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgYmlnLT5sZW4pOworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworICAgIF9tcGRfY2FwKHJlc3VsdCwgY3R4KTsKKyAgICByZXR1cm47CisKK2ludmFsaWRfb3BlcmF0aW9uOgorICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKK30KKworLyoKKyAqIFJvdGF0ZSB0aGUgY29lZmZpY2llbnQgb2YgJ2EnIGJ5ICdiJyBkaWdpdHMuICdiJyBtdXN0IGJlIGFuIGludGVnZXIgd2l0aAorICogZXhwb25lbnQgMC4KKyAqLwordm9pZAorbXBkX3Fyb3RhdGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIE1QRF9ORVdfU1RBVElDKHRtcCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhiaWcsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMoc21hbGwsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3QgbiwgbHNoaWZ0LCByc2hpZnQ7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYi0+ZXhwICE9IDAgfHwgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbiA9IG1wZF9xZ2V0X3NzaXplKGIsICZ3b3Jrc3RhdHVzKTsKKyAgICBpZiAod29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChuID4gY3R4LT5wcmVjIHx8IG4gPCAtY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuID49IDApIHsKKyAgICAgICAgbHNoaWZ0ID0gbjsKKyAgICAgICAgcnNoaWZ0ID0gY3R4LT5wcmVjLW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsc2hpZnQgPSBjdHgtPnByZWMrbjsKKyAgICAgICAgcnNoaWZ0ID0gLW47CisgICAgfQorCisgICAgaWYgKGEtPmRpZ2l0cyA+IGN0eC0+cHJlYykgeworICAgICAgICBpZiAoIW1wZF9xY29weSgmdG1wLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgX21wZF9jYXAoJnRtcCwgY3R4KTsKKyAgICAgICAgYSA9ICZ0bXA7CisgICAgfQorCisgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYmlnLCBhLCBsc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIF9tcGRfY2FwKCZiaWcsIGN0eCk7CisKKyAgICBpZiAobXBkX3FzaGlmdHIoJnNtYWxsLCBhLCByc2hpZnQsIHN0YXR1cykgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBfbXBkX3FhZGQocmVzdWx0LCAmYmlnLCAmc21hbGwsIGN0eCwgc3RhdHVzKTsKKworCitmaW5pc2g6CisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICBtcGRfZGVsKCZiaWcpOworICAgIG1wZF9kZWwoJnNtYWxsKTsKK30KKworLyoKKyAqIGIgbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggZXhwb25lbnQgMCBhbmQgaW4gdGhlIHJhbmdlICstMiooZW1heCArIHByZWMpLgorICogWFhYOiBJbiBteSBvcGluaW9uICstKDIqZW1heCArIHByZWMpIHdvdWxkIGJlIG1vcmUgc2Vuc2libGUuCisgKiBUaGUgcmVzdWx0IGlzIGEgd2l0aCB0aGUgdmFsdWUgb2YgYiBhZGRlZCB0byBpdHMgZXhwb25lbnQuCisgKi8KK3ZvaWQKK21wZF9xc2NhbGViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfdWludF90IG4sIG1heGp1bXA7CisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgorICAgIGludDY0X3QgZXhwOworI2Vsc2UKKyAgICBtcGRfdWludF90IHg7CisgICAgaW50IHhfc2lnbiwgbl9zaWduOworICAgIG1wZF9zc2l6ZV90IGV4cDsKKyNlbmRpZgorCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGItPmV4cCAhPSAwIHx8IG1wZF9pc2luZmluaXRlKGIpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG4gPSBtcGRfcWFic191aW50KGIsICZ3b3Jrc3RhdHVzKTsKKyAgICAvKiB0aGUgc3BlYyBkZW1hbmRzIHRoaXMgKi8KKyAgICBtYXhqdW1wID0gMiAqIChtcGRfdWludF90KShjdHgtPmVtYXggKyBjdHgtPnByZWMpOworCisgICAgaWYgKG4gPiBtYXhqdW1wIHx8IHdvcmtzdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKKyAgICBleHAgPSBhLT5leHAgKyAoaW50NjRfdCluICogbXBkX2FyaXRoX3NpZ24oYik7CisgICAgZXhwID0gKGV4cCA+IE1QRF9FWFBfSU5GKSA/IE1QRF9FWFBfSU5GIDogZXhwOworICAgIGV4cCA9IChleHAgPCBNUERfRVhQX0NMQU1QKSA/IE1QRF9FWFBfQ0xBTVAgOiBleHA7CisjZWxzZQorICAgIHggPSAoYS0+ZXhwIDwgMCkgPyAtYS0+ZXhwIDogYS0+ZXhwOworICAgIHhfc2lnbiA9IChhLT5leHAgPCAwKSA/IDEgOiAwOworICAgIG5fc2lnbiA9IG1wZF9pc25lZ2F0aXZlKGIpID8gMSA6IDA7CisKKyAgICBpZiAoeF9zaWduID09IG5fc2lnbikgeworICAgICAgICB4ID0geCArIG47CisgICAgICAgIGlmICh4IDwgbikgeCA9IE1QRF9VSU5UX01BWDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHhfc2lnbiA9ICh4ID49IG4pID8geF9zaWduIDogbl9zaWduOworICAgICAgICB4ID0gKHggPj0gbikgPyB4IC0gbiA6IG4gLSB4OworICAgIH0KKyAgICBpZiAoIXhfc2lnbiAmJiB4ID4gTVBEX0VYUF9JTkYpIHggPSBNUERfRVhQX0lORjsKKyAgICBpZiAoeF9zaWduICYmIHggPiAtTVBEX0VYUF9DTEFNUCkgeCA9IC1NUERfRVhQX0NMQU1QOworICAgIGV4cCA9IHhfc2lnbiA/IC0oKG1wZF9zc2l6ZV90KXgpIDogKG1wZF9zc2l6ZV90KXg7CisjZW5kaWYKKworICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgcmVzdWx0LT5leHAgPSAobXBkX3NzaXplX3QpZXhwOworCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIFNoaWZ0IHRoZSBjb2VmZmljaWVudCBieSBuIGRpZ2l0cywgcG9zaXRpdmUgbiBpcyBhIGxlZnQgc2hpZnQuIEluIHRoZSBjYXNlCisgKiBvZiBhIGxlZnQgc2hpZnQsIHRoZSByZXN1bHQgaXMgZGVjYXBpdGF0ZWQgdG8gZml0IHRoZSBjb250ZXh0IHByZWNpc2lvbi4gSWYKKyAqIHlvdSBkb24ndCB3YW50IHRoYXQsIHVzZSBtcGRfc2hpZnRsKCkuCisgKi8KK3ZvaWQKK21wZF9xc2hpZnRuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBuLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAobiA+PSAwICYmIG4gPD0gY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9xc2hpZnRsKHJlc3VsdCwgYSwgbiwgc3RhdHVzKTsKKyAgICAgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgIH0KKyAgICBlbHNlIGlmIChuIDwgMCAmJiBuID49IC1jdHgtPnByZWMpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9jYXAocmVzdWx0LCBjdHgpOworICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgLW4pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIFNhbWUgYXMgbXBkX3NoaWZ0bigpLCBidXQgdGhlIHNoaWZ0IGlzIHNwZWNpZmllZCBieSB0aGUgZGVjaW1hbCBiLCB3aGljaAorICogbXVzdCBiZSBhbiBpbnRlZ2VyIHdpdGggYSB6ZXJvIGV4cG9uZW50LiBJbmZpbml0aWVzIHJlbWFpbiBpbmZpbml0aWVzLgorICovCit2b2lkCittcGRfcXNoaWZ0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9zc2l6ZV90IG47CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoYi0+ZXhwICE9IDAgfHwgbXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbiA9IG1wZF9xZ2V0X3NzaXplKGIsICZ3b3Jrc3RhdHVzKTsKKyAgICBpZiAod29ya3N0YXR1cyZNUERfSW52YWxpZF9vcGVyYXRpb24pIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChuID4gY3R4LT5wcmVjIHx8IG4gPCAtY3R4LT5wcmVjKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChuID49IDApIHsKKyAgICAgICAgbXBkX3FzaGlmdGwocmVzdWx0LCBhLCBuLCBzdGF0dXMpOworICAgICAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgICAgIG1wZF9xc2hpZnRyX2lucGxhY2UocmVzdWx0LCAtbik7CisgICAgfQorfQorCisvKiBMb2dpY2FsIFhvciAqLwordm9pZAorbXBkX3F4b3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgY29uc3QgbXBkX3QgKmJpZyA9IGEsICpzbWFsbCA9IGI7CisgICAgbXBkX3VpbnRfdCB4LCB5LCB6LCB4Yml0LCB5Yml0OworICAgIGludCBrLCBtc3dkaWdpdHM7CisgICAgbXBkX3NzaXplX3QgaTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikgfHwKKyAgICAgICAgbXBkX2lzbmVnYXRpdmUoYSkgfHwgbXBkX2lzbmVnYXRpdmUoYikgfHwKKyAgICAgICAgYS0+ZXhwICE9IDAgfHwgYi0+ZXhwICE9IDApIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChiLT5kaWdpdHMgPiBhLT5kaWdpdHMpIHsKKyAgICAgICAgYmlnID0gYjsKKyAgICAgICAgc21hbGwgPSBhOworICAgIH0KKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgYmlnLT5sZW4sIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgLyogZnVsbCB3b3JkcyAqLworICAgIGZvciAoaSA9IDA7IGkgPCBzbWFsbC0+bGVuLTE7IGkrKykgeworICAgICAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgICAgIHkgPSBiaWctPmRhdGFbaV07CisgICAgICAgIHogPSAwOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeGJpdCA9IHggJSAxMDsKKyAgICAgICAgICAgIHggLz0gMTA7CisgICAgICAgICAgICB5Yml0ID0geSAlIDEwOworICAgICAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgICAgIGdvdG8gaW52YWxpZF9vcGVyYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICB6ICs9ICh4Yml0XnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSB6OworICAgIH0KKyAgICAvKiBtb3N0IHNpZ25pZmljYW50IHdvcmQgb2Ygc21hbGwgKi8KKyAgICB4ID0gc21hbGwtPmRhdGFbaV07CisgICAgeSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB6ID0gMDsKKyAgICBtc3dkaWdpdHMgPSBtcGRfd29yZF9kaWdpdHMoeCk7CisgICAgZm9yIChrID0gMDsgayA8IG1zd2RpZ2l0czsgaysrKSB7CisgICAgICAgIHhiaXQgPSB4ICUgMTA7CisgICAgICAgIHggLz0gMTA7CisgICAgICAgIHliaXQgPSB5ICUgMTA7CisgICAgICAgIHkgLz0gMTA7CisgICAgICAgIGlmICh4Yml0ID4gMSB8fCB5Yml0ID4gMSkgeworICAgICAgICAgICAgZ290byBpbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgfQorICAgICAgICB6ICs9ICh4Yml0XnliaXQpID8gbXBkX3BvdzEwW2tdIDogMDsKKyAgICB9CisKKyAgICAvKiBzY2FuIGZvciBkaWdpdHMgPiAxIGFuZCBjb3B5IHRoZSByZXN0IG9mIHkgKi8KKyAgICBmb3IgKDsgayA8IE1QRF9SRElHSVRTOyBrKyspIHsKKyAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgeSAvPSAxMDsKKyAgICAgICAgaWYgKHliaXQgPiAxKSB7CisgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICB9CisgICAgICAgIHogKz0geWJpdCptcGRfcG93MTBba107CisgICAgfQorICAgIHJlc3VsdC0+ZGF0YVtpKytdID0gejsKKyAgICAvKiBzY2FuIGZvciBkaWdpdHMgPiAxIGFuZCBjb3B5IHRoZSByZXN0IG9mIGJpZyAqLworICAgIGZvciAoOyBpIDwgYmlnLT5sZW47IGkrKykgeworICAgICAgICB5ID0gYmlnLT5kYXRhW2ldOworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgTVBEX1JESUdJVFM7IGsrKykgeworICAgICAgICAgICAgeWJpdCA9IHkgJSAxMDsKKyAgICAgICAgICAgIHkgLz0gMTA7CisgICAgICAgICAgICBpZiAoeWJpdCA+IDEpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZGF0YVtpXSA9IGJpZy0+ZGF0YVtpXTsKKyAgICB9CisKKyAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGJpZy0+bGVuKTsKKyAgICBtcGRfcXJlc2l6ZShyZXN1bHQsIHJlc3VsdC0+bGVuLCBzdGF0dXMpOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKyAgICBfbXBkX2NhcChyZXN1bHQsIGN0eCk7CisgICAgcmV0dXJuOworCitpbnZhbGlkX29wZXJhdGlvbjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgIEFyaXRobWV0aWMgb3BlcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogVGhlIGFic29sdXRlIHZhbHVlIG9mIGEuIElmIGEgaXMgbmVnYXRpdmUsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKKyAqIGFzIHRoZSByZXN1bHQgb2YgdGhlIG1pbnVzIG9wZXJhdGlvbi4gT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IGlzIHRoZQorICogcmVzdWx0IG9mIHRoZSBwbHVzIG9wZXJhdGlvbi4KKyAqLwordm9pZAorbXBkX3FhYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3FtaW51cyhyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xcGx1cyhyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9wdHJzd2FwKG1wZF90ICoqYSwgbXBkX3QgKipiKQoreworICAgIG1wZF90ICp0ID0gKmE7CisgICAgKmEgPSAqYjsKKyAgICAqYiA9IHQ7Cit9CisKKy8qIEFkZCBvciBzdWJ0cmFjdCBpbmZpbml0aWVzLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWFkZHN1Yl9pbmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCB1aW50OF90IHNpZ25fYiwKKyAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9zaWduKGEpICE9IHNpZ25fYiAmJiBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKSwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYikpOworICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgc2lnbl9iLCBNUERfSU5GKTsKK30KKworLyogQWRkIG9yIHN1YnRyYWN0IG5vbi1zcGVjaWFsIG51bWJlcnMuICovCitzdGF0aWMgdm9pZAorX21wZF9xYWRkc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDhfdCBzaWduX2IsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF90ICpiaWcsICpzbWFsbDsKKyAgICBNUERfTkVXX1NUQVRJQyhiaWdfYWxpZ25lZCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHRpbnksMCwwLDEsMSwxLDEpOworICAgIG1wZF91aW50X3QgY2Fycnk7CisgICAgbXBkX3NzaXplX3QgbmV3c2l6ZSwgc2hpZnQ7CisgICAgbXBkX3NzaXplX3QgZXhwLCBpOworICAgIGludCBzd2FwID0gMDsKKworCisgICAgLyogY29tcGFyZSBleHBvbmVudHMgKi8KKyAgICBiaWcgPSAobXBkX3QgKilhOyBzbWFsbCA9IChtcGRfdCAqKWI7CisgICAgaWYgKGJpZy0+ZXhwICE9IHNtYWxsLT5leHApIHsKKyAgICAgICAgaWYgKHNtYWxsLT5leHAgPiBiaWctPmV4cCkgeworICAgICAgICAgICAgX21wZF9wdHJzd2FwKCZiaWcsICZzbWFsbCk7CisgICAgICAgICAgICBzd2FwKys7CisgICAgICAgIH0KKyAgICAgICAgLyogYWxpZ24gdGhlIGNvZWZmaWNpZW50cyAqLworICAgICAgICBpZiAoIW1wZF9pc3plcm9jb2VmZihiaWcpKSB7CisgICAgICAgICAgICBleHAgPSBiaWctPmV4cCAtIDE7CisgICAgICAgICAgICBleHAgKz0gKGJpZy0+ZGlnaXRzID4gY3R4LT5wcmVjKSA/IDAgOiBiaWctPmRpZ2l0cy1jdHgtPnByZWMtMTsKKyAgICAgICAgICAgIGlmIChtcGRfYWRqZXhwKHNtYWxsKSA8IGV4cCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQXZvaWQgaHVnZSBzaGlmdHMgYnkgc3Vic3RpdHV0aW5nIGEgdmFsdWUgZm9yIHNtYWxsIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgKiBndWFyYW50ZWVkIHRvIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0cy4KKyAgICAgICAgICAgICAgICAgKgorICAgICAgICAgICAgICAgICAqIGFkamV4cChzbWFsbCkgPCBleHAgaWYgYW5kIG9ubHkgaWY6CisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgIGJkaWdpdHMgPD0gcHJlYyBBTkQKKyAgICAgICAgICAgICAgICAgKiAgIGJkaWdpdHMrc2hpZnQgPj0gcHJlYysyK3NkaWdpdHMgQU5ECisgICAgICAgICAgICAgICAgICogICBleHAgPSBiZXhwK2JkaWdpdHMtcHJlYy0yCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgICAgMTIzNDU2NzAwMDAwMDAwMCAgLT4gIGJkaWdpdHMgKyBzaGlmdAorICAgICAgICAgICAgICAgICAqICAgICAtLS0tLS0tLS0tWFgxMjM0ICAtPiAgc2RpZ2l0cworICAgICAgICAgICAgICAgICAqICAgICAtLS0tLS0tLS0tWDEgICAgICAtPiAgdGlueS1kaWdpdHMKKyAgICAgICAgICAgICAgICAgKiAgICAgfC0gcHJlYyAtfAorICAgICAgICAgICAgICAgICAqICAgICAKKyAgICAgICAgICAgICAgICAgKiAgICAgIE9SCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgIGJkaWdpdHMgPiBwcmVjIEFORAorICAgICAgICAgICAgICAgICAqICAgc2hpZnQgPiBzZGlnaXRzIEFORAorICAgICAgICAgICAgICAgICAqICAgZXhwID0gYmV4cC0xCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiAgICAgMTIzNDU2Nzg5MjEwMDAwMCAgLT4gIGJkaWdpdHMgKyBzaGlmdAorICAgICAgICAgICAgICAgICAqICAgICAtLS0tLS0tLS0tWFgxMjM0ICAtPiAgc2RpZ2l0cworICAgICAgICAgICAgICAgICAqICAgICAtLS0tLS0tLS0tWDEgICAgICAtPiAgdGlueS1kaWdpdHMKKyAgICAgICAgICAgICAgICAgKiAgICAgfC0gcHJlYyAtfAorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogSWYgdGlueSBpcyB6ZXJvLCBhZGRpbmcgb3Igc3VidHJhY3RpbmcgaXMgYSBuby1vcC4KKyAgICAgICAgICAgICAgICAgKiBPdGhlcndpc2UsIGFkZGluZyB0aW55IGdlbmVyYXRlcyBhIG5vbi16ZXJvIGRpZ2l0IGVpdGhlcgorICAgICAgICAgICAgICAgICAqIGJlbG93IHRoZSByb3VuZGluZyBkaWdpdCBvciB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQKKyAgICAgICAgICAgICAgICAgKiBvZiBiaWcuIFdoZW4gc3VidHJhY3RpbmcsIHRpbnkgaXMgaW4gdGhlIHNhbWUgcG9zaXRpb24gYXMKKyAgICAgICAgICAgICAgICAgKiB0aGUgY2FycnkgdGhhdCB3b3VsZCBiZSBnZW5lcmF0ZWQgYnkgc3VidHJhY3Rpbmcgc2RpZ2l0cy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBtcGRfY29weV9mbGFncygmdGlueSwgc21hbGwpOworICAgICAgICAgICAgICAgIHRpbnkuZXhwID0gZXhwOworICAgICAgICAgICAgICAgIHRpbnkuZGlnaXRzID0gMTsKKyAgICAgICAgICAgICAgICB0aW55LmxlbiA9IDE7CisgICAgICAgICAgICAgICAgdGlueS5kYXRhWzBdID0gbXBkX2lzemVyb2NvZWZmKHNtYWxsKSA/IDAgOiAxOworICAgICAgICAgICAgICAgIHNtYWxsID0gJnRpbnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBUaGlzIGNhbm5vdCB3cmFwOiB0aGUgZGlmZmVyZW5jZSBpcyBwb3NpdGl2ZSBhbmQgPD0gbWF4cHJlYyAqLworICAgICAgICAgICAgc2hpZnQgPSBiaWctPmV4cCAtIHNtYWxsLT5leHA7CisgICAgICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZiaWdfYWxpZ25lZCwgYmlnLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiaWcgPSAmYmlnX2FsaWduZWQ7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0LT5leHAgPSBzbWFsbC0+ZXhwOworCisKKyAgICAvKiBjb21wYXJlIGxlbmd0aCBvZiBjb2VmZmljaWVudHMgKi8KKyAgICBpZiAoYmlnLT5sZW4gPCBzbWFsbC0+bGVuKSB7CisgICAgICAgIF9tcGRfcHRyc3dhcCgmYmlnLCAmc21hbGwpOworICAgICAgICBzd2FwKys7CisgICAgfQorCisgICAgbmV3c2l6ZSA9IGJpZy0+bGVuOworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBuZXdzaXplLCBzdGF0dXMpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIGlmIChtcGRfc2lnbihhKSA9PSBzaWduX2IpIHsKKworICAgICAgICBjYXJyeSA9IF9tcGRfYmFzZWFkZChyZXN1bHQtPmRhdGEsIGJpZy0+ZGF0YSwgc21hbGwtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZy0+bGVuLCBzbWFsbC0+bGVuKTsKKworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIG5ld3NpemUgPSBiaWctPmxlbiArIDE7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgbmV3c2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0LT5kYXRhW25ld3NpemUtMV0gPSBjYXJyeTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC0+bGVuID0gbmV3c2l6ZTsKKyAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNpZ25fYik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoYmlnLT5sZW4gPT0gc21hbGwtPmxlbikgeworICAgICAgICAgICAgZm9yIChpPWJpZy0+bGVuLTE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICAgICAgaWYgKGJpZy0+ZGF0YVtpXSAhPSBzbWFsbC0+ZGF0YVtpXSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYmlnLT5kYXRhW2ldIDwgc21hbGwtPmRhdGFbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIF9tcGRfcHRyc3dhcCgmYmlnLCAmc21hbGwpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dhcCsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIF9tcGRfYmFzZXN1YihyZXN1bHQtPmRhdGEsIGJpZy0+ZGF0YSwgc21hbGwtPmRhdGEsCisgICAgICAgICAgICAgICAgICAgICBiaWctPmxlbiwgc21hbGwtPmxlbik7CisgICAgICAgIG5ld3NpemUgPSBfbXBkX3JlYWxfc2l6ZShyZXN1bHQtPmRhdGEsIGJpZy0+bGVuKTsKKyAgICAgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICAgICAgKHZvaWQpbXBkX3FyZXNpemUocmVzdWx0LCBuZXdzaXplLCBzdGF0dXMpOworCisgICAgICAgIHJlc3VsdC0+bGVuID0gbmV3c2l6ZTsKKyAgICAgICAgc2lnbl9iID0gKHN3YXAgJiAxKSA/IHNpZ25fYiA6IG1wZF9zaWduKGEpOworICAgICAgICBtcGRfc2V0X2ZsYWdzKHJlc3VsdCwgc2lnbl9iKTsKKworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRfcG9zaXRpdmUocmVzdWx0KTsKKyAgICAgICAgICAgIGlmIChjdHgtPnJvdW5kID09IE1QRF9ST1VORF9GTE9PUikgeworICAgICAgICAgICAgICAgIG1wZF9zZXRfbmVnYXRpdmUocmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKworZmluaXNoOgorICAgIG1wZF9kZWwoJmJpZ19hbGlnbmVkKTsKK30KKworLyogQWRkIGEgYW5kIGIuIE5vIHNwZWNpYWxzLCBubyBmaW5hbGl6aW5nLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWFkZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIF9tcGRfcWFkZHN1YihyZXN1bHQsIGEsIGIsIG1wZF9zaWduKGIpLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFN1YnRyYWN0IGIgZnJvbSBhLiBObyBzcGVjaWFscywgbm8gZmluYWxpemluZy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FzdWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICAgX21wZF9xYWRkc3ViKHJlc3VsdCwgYSwgYiwgIW1wZF9zaWduKGIpLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIEFkZCBhIGFuZCBiLiAqLwordm9pZAorbXBkX3FhZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfcWFkZHN1Yl9pbmYocmVzdWx0LCBhLCBiLCBtcGRfc2lnbihiKSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF9tcGRfcWFkZHN1YihyZXN1bHQsIGEsIGIsIG1wZF9zaWduKGIpLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogQWRkIGEgYW5kIGIuIFNldCBOYU4vSW52YWxpZF9vcGVyYXRpb24gaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0LiAqLworc3RhdGljIHZvaWQKK19tcGRfcWFkZF9leGFjdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworCisgICAgbXBkX3FhZGQocmVzdWx0LCBhLCBiLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgaWYgKHdvcmtzdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX0NsYW1wZWQpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qIFN1YnRyYWN0IGIgZnJvbSBhLiAqLwordm9pZAorbXBkX3FzdWIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9tcGRfcWFkZHN1Yl9pbmYocmVzdWx0LCBhLCBiLCAhbXBkX3NpZ24oYiksIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FhZGRzdWIocmVzdWx0LCBhLCBiLCAhbXBkX3NpZ24oYiksIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBTdWJ0cmFjdCBiIGZyb20gYS4gU2V0IE5hTi9JbnZhbGlkX29wZXJhdGlvbiBpZiB0aGUgcmVzdWx0IGlzIGluZXhhY3QuICovCitzdGF0aWMgdm9pZAorX21wZF9xc3ViX2V4YWN0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisKKyAgICBtcGRfcXN1YihyZXN1bHQsIGEsIGIsIGN0eCwgJndvcmtzdGF0dXMpOworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICBpZiAod29ya3N0YXR1cyAmIChNUERfSW5leGFjdHxNUERfUm91bmRlZHxNUERfQ2xhbXBlZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgIH0KK30KKworLyogQWRkIGRlY2ltYWwgYW5kIG1wZF9zc2l6ZV90LiAqLwordm9pZAorbXBkX3FhZGRfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsCisgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF9zc2l6ZSgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xYWRkKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBBZGQgZGVjaW1hbCBhbmQgbXBkX3VpbnRfdC4gKi8KK3ZvaWQKK21wZF9xYWRkX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyhiYiwwLDAsMCwwKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKyAgICBtcGRfcXNzZXRfdWludCgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xYWRkKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBTdWJ0cmFjdCBtcGRfc3NpemVfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYmIsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX3Fzc2V0X3NzaXplKCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FzdWIocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIFN1YnRyYWN0IG1wZF91aW50X3QgZnJvbSBkZWNpbWFsLiAqLwordm9pZAorbXBkX3FzdWJfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF91aW50KCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FzdWIocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIEFkZCBkZWNpbWFsIGFuZCBpbnQzMl90LiAqLwordm9pZAorbXBkX3FhZGRfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xYWRkX3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBBZGQgZGVjaW1hbCBhbmQgdWludDMyX3QuICovCit2b2lkCittcGRfcWFkZF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xYWRkX3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKy8qIEFkZCBkZWNpbWFsIGFuZCBpbnQ2NF90LiAqLwordm9pZAorbXBkX3FhZGRfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xYWRkX3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBBZGQgZGVjaW1hbCBhbmQgdWludDY0X3QuICovCit2b2lkCittcGRfcWFkZF91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xYWRkX3VpbnQocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisjZW5kaWYKKworLyogU3VidHJhY3QgaW50MzJfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FzdWJfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFN1YnRyYWN0IHVpbnQzMl90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FzdWJfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKworI2lmZGVmIENPTkZJR182NAorLyogU3VidHJhY3QgaW50NjRfdCBmcm9tIGRlY2ltYWwuICovCit2b2lkCittcGRfcXN1Yl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FzdWJfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIFN1YnRyYWN0IHVpbnQ2NF90IGZyb20gZGVjaW1hbC4gKi8KK3ZvaWQKK21wZF9xc3ViX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FzdWJfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisKKy8qIERpdmlkZSBpbmZpbml0aWVzLiAqLworc3RhdGljIHZvaWQKK19tcGRfcWRpdl9pbmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYiksIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChtcGRfaXNpbmZpbml0ZShiKSk7CisgICAgX3NldHRyaXBsZShyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpLCAwLCBtcGRfZXRpbnkoY3R4KSk7CisgICAgKnN0YXR1cyB8PSBNUERfQ2xhbXBlZDsKK30KKworZW51bSB7Tk9fSURFQUxfRVhQLCBTRVRfSURFQUxfRVhQfTsKKy8qIERpdmlkZSBhIGJ5IGIuICovCitzdGF0aWMgdm9pZAorX21wZF9xZGl2KGludCBhY3Rpb24sIG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKGFsaWduZWQsMCwwLDAsMCk7CisgICAgbXBkX3VpbnRfdCBsZDsKKyAgICBtcGRfc3NpemVfdCBzaGlmdCwgZXhwLCB0ejsKKyAgICBtcGRfc3NpemVfdCBuZXdzaXplOworICAgIG1wZF9zc2l6ZV90IGlkZWFsX2V4cDsKKyAgICBtcGRfdWludF90IHJlbTsKKyAgICB1aW50OF90IHNpZ25fYSA9IG1wZF9zaWduKGEpOworICAgIHVpbnQ4X3Qgc2lnbl9iID0gbXBkX3NpZ24oYik7CisKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhxLCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FkaXZfaW5mKHEsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfRGl2aXNpb25fdW5kZWZpbmVkLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgc2lnbl9hXnNpZ25fYiwgTVBEX0lORik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9ieV96ZXJvOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBleHAgPSBhLT5leHAgLSBiLT5leHA7CisgICAgICAgIF9zZXR0cmlwbGUocSwgc2lnbl9hXnNpZ25fYiwgMCwgZXhwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShxLCBjdHgsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaGlmdCA9IChiLT5kaWdpdHMgLSBhLT5kaWdpdHMpICsgY3R4LT5wcmVjICsgMTsKKyAgICBpZGVhbF9leHAgPSBhLT5leHAgLSBiLT5leHA7CisgICAgZXhwID0gaWRlYWxfZXhwIC0gc2hpZnQ7CisgICAgaWYgKHNoaWZ0ID4gMCkgeworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZhbGlnbmVkLCBhLCBzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgICAgICBhID0gJmFsaWduZWQ7CisgICAgfQorICAgIGVsc2UgaWYgKHNoaWZ0IDwgMCkgeworICAgICAgICBzaGlmdCA9IC1zaGlmdDsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYWxpZ25lZCwgYiwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihxLCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgYiA9ICZhbGlnbmVkOworICAgIH0KKworCisgICAgbmV3c2l6ZSA9IGEtPmxlbiAtIGItPmxlbiArIDE7CisgICAgaWYgKChxICE9IGIgJiYgcSAhPSBhKSB8fCAocSA9PSBiICYmIG5ld3NpemUgPiBiLT5sZW4pKSB7CisgICAgICAgIGlmICghbXBkX3FyZXNpemUocSwgbmV3c2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgaWYgKGItPmxlbiA9PSAxKSB7CisgICAgICAgIHJlbSA9IF9tcGRfc2hvcnRkaXYocS0+ZGF0YSwgYS0+ZGF0YSwgYS0+bGVuLCBiLT5kYXRhWzBdKTsKKyAgICB9CisgICAgZWxzZSBpZiAoYi0+bGVuIDw9IE1QRF9ORVdUT05ESVZfQ1VUT0ZGKSB7CisgICAgICAgIGludCByZXQgPSBfbXBkX2Jhc2VkaXZtb2QocS0+ZGF0YSwgTlVMTCwgYS0+ZGF0YSwgYi0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLT5sZW4sIGItPmxlbik7CisgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIHJlbSA9IHJldDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHIsMCwwLDAsMCk7CisgICAgICAgIF9tcGRfYmFzZV9uZGl2bW9kKHEsICZyLCBhLCBiLCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChxKSB8fCBtcGRfaXNzcGVjaWFsKCZyKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocSwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICBtcGRfZGVsKCZyKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgICAgIHJlbSA9ICFtcGRfaXN6ZXJvY29lZmYoJnIpOworICAgICAgICBtcGRfZGVsKCZyKTsKKyAgICAgICAgbmV3c2l6ZSA9IHEtPmxlbjsKKyAgICB9CisKKyAgICBuZXdzaXplID0gX21wZF9yZWFsX3NpemUocS0+ZGF0YSwgbmV3c2l6ZSk7CisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcXJlc2l6ZShxLCBuZXdzaXplLCBzdGF0dXMpOworICAgIG1wZF9zZXRfZmxhZ3MocSwgc2lnbl9hXnNpZ25fYik7CisgICAgcS0+bGVuID0gbmV3c2l6ZTsKKyAgICBtcGRfc2V0ZGlnaXRzKHEpOworCisgICAgc2hpZnQgPSBpZGVhbF9leHAgLSBleHA7CisgICAgaWYgKHJlbSkgeworICAgICAgICBsZCA9IG1wZF9sc2QocS0+ZGF0YVswXSk7CisgICAgICAgIGlmIChsZCA9PSAwIHx8IGxkID09IDUpIHsKKyAgICAgICAgICAgIHEtPmRhdGFbMF0gKz0gMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChhY3Rpb24gPT0gU0VUX0lERUFMX0VYUCAmJiBzaGlmdCA+IDApIHsKKyAgICAgICAgdHogPSBtcGRfdHJhaWxfemVyb3MocSk7CisgICAgICAgIHNoaWZ0ID0gKHR6ID4gc2hpZnQpID8gc2hpZnQgOiB0ejsKKyAgICAgICAgbXBkX3FzaGlmdHJfaW5wbGFjZShxLCBzaGlmdCk7CisgICAgICAgIGV4cCArPSBzaGlmdDsKKyAgICB9CisKKyAgICBxLT5leHAgPSBleHA7CisKKworZmluaXNoOgorICAgIG1wZF9kZWwoJmFsaWduZWQpOworICAgIG1wZF9xZmluYWxpemUocSwgY3R4LCBzdGF0dXMpOworfQorCisvKiBEaXZpZGUgYSBieSBiLiAqLwordm9pZAorbXBkX3FkaXYobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBfbXBkX3FkaXYoU0VUX0lERUFMX0VYUCwgcSwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBJbnRlcm5hbCBmdW5jdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FkaXZtb2QobXBkX3QgKnEsIG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKGFsaWduZWQsMCwwLDAsMCk7CisgICAgbXBkX3NzaXplX3QgcXNpemUsIHJzaXplOworICAgIG1wZF9zc2l6ZV90IGlkZWFsX2V4cCwgZXhwZGlmZiwgc2hpZnQ7CisgICAgdWludDhfdCBzaWduX2EgPSBtcGRfc2lnbihhKTsKKyAgICB1aW50OF90IHNpZ25fYWIgPSBtcGRfc2lnbihhKV5tcGRfc2lnbihiKTsKKworCisgICAgaWRlYWxfZXhwID0gKGEtPmV4cCA+IGItPmV4cCkgPyAgYi0+ZXhwIDogYS0+ZXhwOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkociwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgICAgICByLT5leHAgPSBpZGVhbF9leHA7CisgICAgICAgIF9zZXR0cmlwbGUocSwgc2lnbl9hYiwgMCwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBleHBkaWZmID0gbXBkX2FkamV4cChhKSAtIG1wZF9hZGpleHAoYik7CisgICAgaWYgKGV4cGRpZmYgPCAwKSB7CisgICAgICAgIGlmIChhLT5leHAgPiBiLT5leHApIHsKKyAgICAgICAgICAgIC8qIHBvc2l0aXZlIGFuZCBsZXNzIHRoYW4gYi0+ZGlnaXRzIC0gYS0+ZGlnaXRzICovCisgICAgICAgICAgICBzaGlmdCA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICAgICAgICAgIGlmICghbXBkX3FzaGlmdGwociwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHItPmV4cCA9IGlkZWFsX2V4cDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfc2V0dHJpcGxlKHEsIHNpZ25fYWIsIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChleHBkaWZmID4gY3R4LT5wcmVjKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2ltcG9zc2libGU7CisgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgIH0KKworCisgICAgLyoKKyAgICAgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmU6CisgICAgICogICAoMSkgMCA8PSBhLT5leHAgKyBhLT5kaWdpdHMgLSBiLT5leHAgLSBiLT5kaWdpdHMgPD0gcHJlYworICAgICAqICAgKDIpIGEtPmV4cCAtIGItPmV4cCA+PSBiLT5kaWdpdHMgLSBhLT5kaWdpdHMKKyAgICAgKiAgICgzKSBhLT5leHAgLSBiLT5leHAgPD0gcHJlYyArIGItPmRpZ2l0cyAtIGEtPmRpZ2l0cworICAgICAqLworICAgIGlmIChhLT5leHAgIT0gYi0+ZXhwKSB7CisgICAgICAgIHNoaWZ0ID0gYS0+ZXhwIC0gYi0+ZXhwOworICAgICAgICBpZiAoc2hpZnQgPiAwKSB7CisgICAgICAgICAgICAvKiBieSAoMyksIGFmdGVyIHRoZSBzaGlmdCBhLT5kaWdpdHMgPD0gcHJlYyArIGItPmRpZ2l0cyAqLworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bCgmYWxpZ25lZCwgYSwgc2hpZnQsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGEgPSAmYWxpZ25lZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlICB7CisgICAgICAgICAgICBzaGlmdCA9IC1zaGlmdDsKKyAgICAgICAgICAgIC8qIGJ5ICgyKSwgYWZ0ZXIgdGhlIHNoaWZ0IGItPmRpZ2l0cyA8PSBhLT5kaWdpdHMgKi8KKyAgICAgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmFsaWduZWQsIGIsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiID0gJmFsaWduZWQ7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHFzaXplID0gYS0+bGVuIC0gYi0+bGVuICsgMTsKKyAgICBpZiAoIShxID09IGEgJiYgcXNpemUgPCBhLT5sZW4pICYmICEocSA9PSBiICYmIHFzaXplIDwgYi0+bGVuKSkgeworICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHEsIHFzaXplLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJzaXplID0gYi0+bGVuOworICAgIGlmICghKHIgPT0gYSAmJiByc2l6ZSA8IGEtPmxlbikpIHsKKyAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZShyLCByc2l6ZSwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoYi0+bGVuID09IDEpIHsKKyAgICAgICAgaWYgKGEtPmxlbiA9PSAxKSB7CisgICAgICAgICAgICBfbXBkX2Rpdl93b3JkKCZxLT5kYXRhWzBdLCAmci0+ZGF0YVswXSwgYS0+ZGF0YVswXSwgYi0+ZGF0YVswXSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByLT5kYXRhWzBdID0gX21wZF9zaG9ydGRpdihxLT5kYXRhLCBhLT5kYXRhLCBhLT5sZW4sIGItPmRhdGFbMF0pOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKGItPmxlbiA8PSBNUERfTkVXVE9ORElWX0NVVE9GRikgeworICAgICAgICBpbnQgcmV0OworICAgICAgICByZXQgPSBfbXBkX2Jhc2VkaXZtb2QocS0+ZGF0YSwgci0+ZGF0YSwgYS0+ZGF0YSwgYi0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtPmxlbiwgYi0+bGVuKTsKKyAgICAgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9tcGRfYmFzZV9uZGl2bW9kKHEsIHIsIGEsIGIsIHN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHEpIHx8IG1wZF9pc3NwZWNpYWwocikpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OworICAgICAgICB9CisgICAgICAgIHFzaXplID0gcS0+bGVuOworICAgICAgICByc2l6ZSA9IHItPmxlbjsKKyAgICB9CisKKyAgICBxc2l6ZSA9IF9tcGRfcmVhbF9zaXplKHEtPmRhdGEsIHFzaXplKTsKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xcmVzaXplKHEsIHFzaXplLCBzdGF0dXMpOworICAgIHEtPmxlbiA9IHFzaXplOworICAgIG1wZF9zZXRkaWdpdHMocSk7CisgICAgbXBkX3NldF9mbGFncyhxLCBzaWduX2FiKTsKKyAgICBxLT5leHAgPSAwOworICAgIGlmIChxLT5kaWdpdHMgPiBjdHgtPnByZWMpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfRGl2aXNpb25faW1wb3NzaWJsZTsKKyAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgfQorCisgICAgcnNpemUgPSBfbXBkX3JlYWxfc2l6ZShyLT5kYXRhLCByc2l6ZSk7CisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcXJlc2l6ZShyLCByc2l6ZSwgc3RhdHVzKTsKKyAgICByLT5sZW4gPSByc2l6ZTsKKyAgICBtcGRfc2V0ZGlnaXRzKHIpOworICAgIG1wZF9zZXRfZmxhZ3Mociwgc2lnbl9hKTsKKyAgICByLT5leHAgPSBpZGVhbF9leHA7CisKK291dDoKKyAgICBtcGRfZGVsKCZhbGlnbmVkKTsKKyAgICByZXR1cm47CisKK25hbnJlc3VsdDoKKyAgICBtcGRfc2V0c3BlY2lhbChxLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICBtcGRfc2V0c3BlY2lhbChyLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICBnb3RvIG91dDsKK30KKworLyogSW50ZWdlciBkaXZpc2lvbiB3aXRoIHJlbWFpbmRlci4gKi8KK3ZvaWQKK21wZF9xZGl2bW9kKG1wZF90ICpxLCBtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQ4X3Qgc2lnbiA9IG1wZF9zaWduKGEpXm1wZF9zaWduKGIpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHEsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHIsIHEsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocSwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocSwgc2lnbiwgMCwgMCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogZGVidWcgKi8KKyAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwociwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl91bmRlZmluZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBzaWduLCBNUERfSU5GKTsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHIsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgICAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0RpdmlzaW9uX2J5X3plcm98TVBEX0ludmFsaWRfb3BlcmF0aW9uKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9xZGl2bW9kKHEsIHIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHEsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FkaXZpbnQobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBNUERfTkVXX1NUQVRJQyhyLDAsMCwwLDApOworICAgIHVpbnQ4X3Qgc2lnbiA9IG1wZF9zaWduKGEpXm1wZF9zaWduKGIpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHEsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSAmJiBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHEsIHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgX3NldHRyaXBsZShxLCBzaWduLCAwLCAwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHEsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChxLCBzaWduLCBNUERfSU5GKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2J5X3plcm87CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgX21wZF9xZGl2bW9kKHEsICZyLCBhLCBiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmcik7CisgICAgbXBkX3FmaW5hbGl6ZShxLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IG1wZF9zc2l6ZV90LiAqLwordm9pZAorbXBkX3FkaXZfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsCisgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF9zc2l6ZSgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xZGl2KHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBEaXZpZGUgZGVjaW1hbCBieSBtcGRfdWludF90LiAqLwordm9pZAorbXBkX3FkaXZfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF91aW50KCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FkaXYocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IGludDMyX3QuICovCit2b2lkCittcGRfcWRpdl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FkaXZfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIERpdmlkZSBkZWNpbWFsIGJ5IHVpbnQzMl90LiAqLwordm9pZAorbXBkX3FkaXZfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcWRpdl91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0CisvKiBEaXZpZGUgZGVjaW1hbCBieSBpbnQ2NF90LiAqLwordm9pZAorbXBkX3FkaXZfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9xZGl2X3NzaXplKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisvKiBEaXZpZGUgZGVjaW1hbCBieSB1aW50NjRfdC4gKi8KK3ZvaWQKK21wZF9xZGl2X3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FkaXZfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisvKiBQYWQgdGhlIHJlc3VsdCB3aXRoIHRyYWlsaW5nIHplcm9zIGlmIGl0IGhhcyBmZXdlciBkaWdpdHMgdGhhbiBwcmVjLiAqLworc3RhdGljIHZvaWQKK19tcGRfemVyb3BhZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKCFtcGRfaXNzcGVjaWFsKHJlc3VsdCkgJiYgIW1wZF9pc3plcm8ocmVzdWx0KSAmJgorICAgICAgICByZXN1bHQtPmRpZ2l0cyA8IGN0eC0+cHJlYykgeworICAgICAgIG1wZF9zc2l6ZV90IHNoaWZ0ID0gY3R4LT5wcmVjIC0gcmVzdWx0LT5kaWdpdHM7CisgICAgICAgbXBkX3FzaGlmdGwocmVzdWx0LCByZXN1bHQsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgIHJlc3VsdC0+ZXhwIC09IHNoaWZ0OworICAgIH0KK30KKworLyogQ2hlY2sgaWYgdGhlIHJlc3VsdCBpcyBndWFyYW50ZWVkIHRvIGJlIG9uZS4gKi8KK3N0YXRpYyBpbnQKK19tcGRfcWV4cF9jaGVja19vbmUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBNUERfTkVXX0NPTlNUKGxpbSwwLC0oY3R4LT5wcmVjKzEpLDEsMSwxLDkpOworICAgIE1QRF9ORVdfU0hBUkVEKGFhLCBhKTsKKworICAgIG1wZF9zZXRfcG9zaXRpdmUoJmFhKTsKKworICAgIC8qIGFicyhhKSA8PSA5ICogMTAqKigtcHJlYy0xKSAqLworICAgIGlmIChfbXBkX2NtcCgmYWEsICZsaW0pIDw9IDApIHsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIDAsIDEsIDApOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkfE1QRF9JbmV4YWN0OworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIEdldCB0aGUgbnVtYmVyIG9mIGl0ZXJhdGlvbnMgZm9yIHRoZSBIb3JuZXIgc2NoZW1lIGluIF9tcGRfcWV4cCgpLgorICovCitzdGF0aWMgaW5saW5lIG1wZF9zc2l6ZV90CitfbXBkX2dldF9leHBfaXRlcmF0aW9ucyhjb25zdCBtcGRfdCAqciwgbXBkX3NzaXplX3QgcCkKK3sKKyAgICBtcGRfc3NpemVfdCBsb2cxMHBieXI7IC8qIGxvd2VyIGJvdW5kIGZvciBsb2cxMChwIC8gYWJzKHIpKSAqLworICAgIG1wZF9zc2l6ZV90IG47CisKKyAgICBhc3NlcnQocCA+PSAxMCk7CisgICAgYXNzZXJ0KCFtcGRfaXN6ZXJvKHIpKTsKKyAgICBhc3NlcnQoLXAgPCBtcGRfYWRqZXhwKHIpICYmIG1wZF9hZGpleHAocikgPD0gLTEpOworCisjaWZkZWYgQ09ORklHXzY0CisgICAgaWYgKHAgPiAobXBkX3NzaXplX3QpKDFVTEw8PDUyKSkgeworICAgICAgICByZXR1cm4gTVBEX1NTSVpFX01BWDsKKyAgICB9CisjZW5kaWYKKworICAgIC8qCisgICAgICogTG93ZXIgYm91bmQgZm9yIGxvZzEwKHAgLyBhYnMocikpOiBhZGpleHAocCkgLSAoYWRqZXhwKHIpICsgMSkKKyAgICAgKiBBdCB0aGlzIHBvaW50IChmb3IgQ09ORklHXzY0LCBDT05GSUdfMzIgaXMgbm90IHByb2JsZW1hdGljKToKKyAgICAgKiAgICAxKSAxMCA8PSBwIDw9IDIqKjUyCisgICAgICogICAgMikgLXAgPCBhZGpleHAocikgPD0gLTEKKyAgICAgKiAgICAzKSAxIDw9IGxvZzEwcGJ5ciA8PSAyKio1MiArIDE0CisgICAgICovCisgICAgbG9nMTBwYnlyID0gKG1wZF93b3JkX2RpZ2l0cyhwKS0xKSAtIChtcGRfYWRqZXhwKHIpKzEpOworCisgICAgLyoKKyAgICAgKiBUaGUgbnVtZXJhdG9yIGluIHRoZSBwYXBlciBpcyAxLjQzNSAqIHAgLSAxLjE4MiwgY2FsY3VsYXRlZAorICAgICAqIGV4YWN0bHkuIFdlIGNvbXBlbnNhdGUgZm9yIHJvdW5kaW5nIGVycm9ycyBieSB1c2luZyAxLjQzNTAzLgorICAgICAqIEFDTDIgcHJvb2ZzOgorICAgICAqICAgIDEpIGV4cC1pdGVyLWFwcHJveC1sb3dlci1ib3VuZDogVGhlIHRlcm0gYmVsb3cgZXZhbHVhdGVkCisgICAgICogICAgICAgaW4gNTMtYml0IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgaXMgZ3JlYXRlciB0aGFuIG9yCisgICAgICogICAgICAgZXF1YWwgdG8gdGhlIGV4YWN0IHRlcm0gdXNlZCBpbiB0aGUgcGFwZXIuCisgICAgICogICAgMikgZXhwLWl0ZXItYXBwcm94LXVwcGVyLWJvdW5kOiBUaGUgdGVybSBiZWxvdyBpcyBsZXNzIHRoYW4KKyAgICAgKiAgICAgICBvciBlcXVhbCB0byAzLzIgKiBwIDw9IDMvMiAqIDIqKjUyLgorICAgICAqLworICAgIG4gPSAobXBkX3NzaXplX3QpY2VpbCgoMS40MzUwMyooZG91YmxlKXAgLSAxLjE4MikgLyAoZG91YmxlKWxvZzEwcGJ5cik7CisgICAgcmV0dXJuIG4gPj0gMyA/IG4gOiAzOworfQorCisvKgorICogSW50ZXJuYWwgZnVuY3Rpb24sIHNwZWNpYWxzIGhhdmUgYmVlbiBkZWFsdCB3aXRoLiBBcGFydCBmcm9tIE92ZXJmbG93CisgKiBhbmQgVW5kZXJmbG93LCB0d28gY2FzZXMgbXVzdCBiZSBjb25zaWRlcmVkIGZvciB0aGUgZXJyb3Igb2YgdGhlIHJlc3VsdDoKKyAqCisgKiAgIDEpIGFicyhhKSA8PSA5ICogMTAqKigtcHJlYy0xKSAgPT0+ICByZXN1bHQgPT0gMQorICoKKyAqICAgICAgQWJzb2x1dGUgZXJyb3I6IGFicygxIC0gZSoqeCkgPCAxMCoqKC1wcmVjKQorICogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogICAyKSBhYnMoYSkgPiA5ICogMTAqKigtcHJlYy0xKQorICoKKyAqICAgICAgUmVsYXRpdmUgZXJyb3I6IGFicyhyZXN1bHQgLSBlKip4KSA8IDAuNSAqIDEwKiooLXByZWMpICogZSoqeAorICogICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogVGhlIGFsZ29yaXRobSBpcyBmcm9tIEh1bGwmQWJyaGFtLCBWYXJpYWJsZSBQcmVjaXNpb24gRXhwb25lbnRpYWwgRnVuY3Rpb24sCisgKiBBQ00gVHJhbnNhY3Rpb25zIG9uIE1hdGhlbWF0aWNhbCBTb2Z0d2FyZSwgVm9sLiAxMiwgTm8uIDIsIEp1bmUgMTk4Ni4KKyAqCisgKiBNYWluIGRpZmZlcmVuY2VzOgorICoKKyAqICAtIFRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBmb3IgdGhlIEhvcm5lciBzY2hlbWUgaXMgY2FsY3VsYXRlZCB1c2luZworICogICAgNTMtYml0IGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMuCisgKgorICogIC0gSW4gdGhlIGVycm9yIGFuYWx5c2lzIGZvciBFUiAocmVsYXRpdmUgZXJyb3IgYWNjdW11bGF0ZWQgaW4gdGhlCisgKiAgICBldmFsdWF0aW9uIG9mIHRoZSB0cnVuY2F0ZWQgc2VyaWVzKSB0aGUgcmVkdWNlZCBvcGVyYW5kIHIgbWF5CisgKiAgICBoYXZlIGFueSBudW1iZXIgb2YgZGlnaXRzLgorICogICAgQUNMMiBwcm9vZjogZXhwb25lbnQtcmVsYXRpdmUtZXJyb3IKKyAqCisgKiAgLSBUaGUgYW5hbHlzaXMgZm9yIGVhcmx5IGFib3J0aW9uIGhhcyBiZWVuIGFkYXB0ZWQgZm9yIHRoZSBtcGRfdAorICogICAgcmFuZ2VzLgorICovCitzdGF0aWMgdm9pZAorX21wZF9xZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUModG1wLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHN1bSwwLDAsMCwwKTsKKyAgICBNUERfTkVXX0NPTlNUKHdvcmQsMCwwLDEsMSwxLDEpOworICAgIG1wZF9zc2l6ZV90IGosIG4sIHQ7CisKKyAgICBhc3NlcnQoIW1wZF9pc3NwZWNpYWwoYSkpOworCisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgTVBEX1BPUywgMSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdlIGFyZSBjYWxjdWxhdGluZyBlXnggPSBlXihyKjEwXnQpID0gKGVecileKDEwXnQpLCB3aGVyZSBhYnMocikgPCAxIGFuZCB0ID49IDAuCisgICAgICoKKyAgICAgKiBJZiB0ID4gMCwgd2UgaGF2ZToKKyAgICAgKgorICAgICAqICAgKDEpIDAuMSA8PSByIDwgMSwgc28gZV4wLjEgPD0gZV5yLiBJZiB0ID4gTUFYX1QsIG92ZXJmbG93IG9jY3VyczoKKyAgICAgKgorICAgICAqICAgICBNQVgtRU1BWCsxIDwgbG9nMTAoZV4oMC4xKjEwKnQpKSA8PSBsb2cxMChlXihyKjEwXnQpKSA8IGFkamV4cChlXihyKjEwXnQpKSsxCisgICAgICoKKyAgICAgKiAgICgyKSAtMSA8IHIgPD0gLTAuMSwgc28gZV5yIDw9IGVeLTAuMS4gSWYgdCA+IE1BWF9ULCB1bmRlcmZsb3cgb2NjdXJzOgorICAgICAqCisgICAgICogICAgIGFkamV4cChlXihyKjEwXnQpKSA8PSBsb2cxMChlXihyKjEwXnQpKSA8PSBsb2cxMChlXigtMC4xKjEwXnQpKSA8IE1JTi1FVElOWQorICAgICAqLworI2lmIGRlZmluZWQoQ09ORklHXzY0KQorICAgICNkZWZpbmUgTVBEX0VYUF9NQVhfVCAxOQorI2VsaWYgZGVmaW5lZChDT05GSUdfMzIpCisgICAgI2RlZmluZSBNUERfRVhQX01BWF9UIDEwCisjZW5kaWYKKyAgICB0ID0gYS0+ZGlnaXRzICsgYS0+ZXhwOworICAgIHQgPSAodCA+IDApID8gdCA6IDA7CisgICAgaWYgKHQgPiBNUERfRVhQX01BWF9UKSB7CisgICAgICAgIGlmIChtcGRfaXNwb3NpdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX092ZXJmbG93fE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIE1QRF9QT1MsIDAsIG1wZF9ldGlueShjdHgpKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkfE1QRF9TdWJub3JtYWx8CisgICAgICAgICAgICAgICAgICAgICAgICBNUERfVW5kZXJmbG93fE1QRF9DbGFtcGVkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogYWJzKGEpIDw9IDkgKiAxMCoqKC1wcmVjLTEpICovCisgICAgaWYgKF9tcGRfcWV4cF9jaGVja19vbmUocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWMgKyB0ICsgMjsKKyAgICB3b3JrY3R4LnByZWMgPSAod29ya2N0eC5wcmVjIDwgMTApID8gMTAgOiB3b3JrY3R4LnByZWM7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9IQUxGX0VWRU47CisKKyAgICBpZiAoIW1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXN1bHQtPmV4cCAtPSB0OworCisgICAgLyoKKyAgICAgKiBBdCB0aGlzIHBvaW50OgorICAgICAqICAgIDEpIDkgKiAxMCoqKC1wcmVjLTEpIDwgYWJzKGEpCisgICAgICogICAgMikgOSAqIDEwKiooLXByZWMtdC0xKSA8IGFicyhyKQorICAgICAqICAgIDMpIGxvZzEwKDkpIC0gcHJlYyAtIHQgLSAxIDwgbG9nMTAoYWJzKHIpKSA8IGFkamV4cChhYnMocikpICsgMQorICAgICAqICAgIDQpIC0gcHJlYyAtIHQgLSAyIDwgYWRqZXhwKGFicyhyKSkgPD0gLTEKKyAgICAgKi8KKyAgICBuID0gX21wZF9nZXRfZXhwX2l0ZXJhdGlvbnMocmVzdWx0LCB3b3JrY3R4LnByZWMpOworICAgIGlmIChuID09IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgIHJldHVybjsgLyogR0NPVl9VTkxJS0VMWSAqLworICAgIH0KKworICAgIF9zZXR0cmlwbGUoJnN1bSwgTVBEX1BPUywgMSwgMCk7CisKKyAgICBmb3IgKGogPSBuLTE7IGogPj0gMTsgai0tKSB7CisgICAgICAgIHdvcmQuZGF0YVswXSA9IGo7CisgICAgICAgIG1wZF9zZXRkaWdpdHMoJndvcmQpOworICAgICAgICBtcGRfcWRpdigmdG1wLCByZXN1bHQsICZ3b3JkLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgbXBkX3FmbWEoJnN1bSwgJnN1bSwgJnRtcCwgJm9uZSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgfQorCisjaWZkZWYgQ09ORklHXzY0CisgICAgX21wZF9xcG93X3VpbnQocmVzdWx0LCAmc3VtLCBtcGRfcG93MTBbdF0sIE1QRF9QT1MsICZ3b3JrY3R4LCBzdGF0dXMpOworI2Vsc2UKKyAgICBpZiAodCA8PSBNUERfTUFYX1BPVzEwKSB7CisgICAgICAgIF9tcGRfcXBvd191aW50KHJlc3VsdCwgJnN1bSwgbXBkX3BvdzEwW3RdLCBNUERfUE9TLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHQgLT0gTVBEX01BWF9QT1cxMDsKKyAgICAgICAgX21wZF9xcG93X3VpbnQoJnRtcCwgJnN1bSwgbXBkX3BvdzEwW01QRF9NQVhfUE9XMTBdLCBNUERfUE9TLAorICAgICAgICAgICAgICAgICAgICAgICAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgX21wZF9xcG93X3VpbnQocmVzdWx0LCAmdG1wLCBtcGRfcG93MTBbdF0sIE1QRF9QT1MsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKyNlbmRpZgorCisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICBtcGRfZGVsKCZzdW0pOworICAgICpzdGF0dXMgfD0gKHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKK30KKworLyogZXhwKGEpICovCit2b2lkCittcGRfcWV4cChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAwLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtjdHggPSAqY3R4OworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworCisgICAgaWYgKGN0eC0+YWxsY3IpIHsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDEsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MiwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHVscCwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKGFhLCAwLDAsMCwwKTsKKyAgICAgICAgbXBkX3NzaXplX3QgcHJlYzsKKyAgICAgICAgbXBkX3NzaXplX3QgdWxwZXhwOworICAgICAgICB1aW50MzJfdCB3b3Jrc3RhdHVzOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkoJmFhLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhID0gJmFhOworICAgICAgICB9CisKKyAgICAgICAgd29ya2N0eC5jbGFtcCA9IDA7CisgICAgICAgIHByZWMgPSBjdHgtPnByZWMgKyAzOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gcHJlYzsKKyAgICAgICAgICAgIHdvcmtzdGF0dXMgPSAwOworCisgICAgICAgICAgICBfbXBkX3FleHAocmVzdWx0LCBhLCAmd29ya2N0eCwgJndvcmtzdGF0dXMpOworICAgICAgICAgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworCisgICAgICAgICAgICB1bHBleHAgPSByZXN1bHQtPmV4cCArIHJlc3VsdC0+ZGlnaXRzIC0gd29ya2N0eC5wcmVjOworICAgICAgICAgICAgaWYgKHdvcmtzdGF0dXMgJiBNUERfVW5kZXJmbG93KSB7CisgICAgICAgICAgICAgICAgLyogVGhlIGVmZmVjdGl2ZSB3b3JrIHByZWNpc2lvbiBpcyByZXN1bHQtPmRpZ2l0cy4gKi8KKyAgICAgICAgICAgICAgICB1bHBleHAgPSByZXN1bHQtPmV4cDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9zc2V0dHJpcGxlKCZ1bHAsIE1QRF9QT1MsIDEsIHVscGV4cCk7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBBdCB0aGlzIHBvaW50IFsxXToKKyAgICAgICAgICAgICAqICAgMSkgYWJzKHJlc3VsdCAtIGUqKngpIDwgMC41ICogMTAqKigtcHJlYykgKiBlKip4CisgICAgICAgICAgICAgKiAgIDIpIHJlc3VsdCAtIHVscCA8IGUqKnggPCByZXN1bHQgKyB1bHAKKyAgICAgICAgICAgICAqICAgMykgcmVzdWx0IC0gdWxwIDwgcmVzdWx0IDwgcmVzdWx0ICsgdWxwCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogSWYgcm91bmQocmVzdWx0LXVscCk9PXJvdW5kKHJlc3VsdCt1bHApLCB0aGVuCisgICAgICAgICAgICAgKiByb3VuZChyZXN1bHQpPT1yb3VuZChlKip4KS4gVGhlcmVmb3JlIHRoZSByZXN1bHQKKyAgICAgICAgICAgICAqIGlzIGNvcnJlY3RseSByb3VuZGVkLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFsxXSBJZiBhYnMoYSkgPD0gOSAqIDEwKiooLXByZWMtMSksIHVzZSB0aGUgYWJzb2x1dGUKKyAgICAgICAgICAgICAqICAgICBlcnJvciBmb3IgYSBzaW1pbGFyIGFyZ3VtZW50LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWM7CisgICAgICAgICAgICBtcGRfcWFkZCgmdDEsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXN1YigmdDIsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8IG1wZF9pc3plcm9jb2VmZihyZXN1bHQpIHx8CisgICAgICAgICAgICAgICAgbXBkX3FjbXAoJnQxLCAmdDIsIHN0YXR1cykgPT0gMCkgeworICAgICAgICAgICAgICAgIHdvcmtjdHguY2xhbXAgPSBjdHgtPmNsYW1wOworICAgICAgICAgICAgICAgIF9tcGRfemVyb3BhZChyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmVjICs9IE1QRF9SRElHSVRTOworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwoJnQxKTsKKyAgICAgICAgbXBkX2RlbCgmdDIpOworICAgICAgICBtcGRfZGVsKCZ1bHApOworICAgICAgICBtcGRfZGVsKCZhYSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3FleHAocmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgX21wZF96ZXJvcGFkKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyogRnVzZWQgbXVsdGlwbHktYWRkOiAoYSAqIGIpICsgYywgd2l0aCBhIHNpbmdsZSBmaW5hbCByb3VuZGluZy4gKi8KK3ZvaWQKK21wZF9xZm1hKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX3QgKmMsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgdWludDMyX3Qgd29ya3N0YXR1cyA9IDA7CisgICAgbXBkX3QgKmNjID0gKG1wZF90ICopYzsKKworICAgIGlmIChyZXN1bHQgPT0gYykgeworICAgICAgICBpZiAoKGNjID0gbXBkX3FuY29weShjKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9tcGRfcW11bChyZXN1bHQsIGEsIGIsIGN0eCwgJndvcmtzdGF0dXMpOworICAgIGlmICghKHdvcmtzdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSkgeworICAgICAgICBtcGRfcWFkZChyZXN1bHQsIHJlc3VsdCwgY2MsIGN0eCwgJndvcmtzdGF0dXMpOworICAgIH0KKworICAgIGlmIChjYyAhPSBjKSBtcGRfZGVsKGNjKTsKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7Cit9CisKKy8qCisgKiBTY2hlZHVsZSB0aGUgb3B0aW1hbCBwcmVjaXNpb24gaW5jcmVhc2UgZm9yIHRoZSBOZXd0b24gaXRlcmF0aW9uLgorICogICB2IDo9IGlucHV0IG9wZXJhbmQKKyAqICAgel8wIDo9IGluaXRpYWwgYXBwcm94aW1hdGlvbgorICogICBpbml0cHJlYyA6PSBuYXR1cmFsIG51bWJlciBzdWNoIHRoYXQgYWJzKGxvZyh2KSAtIHpfMCkgPCAxMCoqLWluaXRwcmVjCisgKiAgIG1heHByZWMgOj0gdGFyZ2V0IHByZWNpc2lvbgorICoKKyAqIEZvciBjb252ZW5pZW5jZSB0aGUgb3V0cHV0IGtsaXN0IGNvbnRhaW5zIHRoZSBlbGVtZW50cyBpbiByZXZlcnNlIG9yZGVyOgorICogICBrbGlzdCA6PSBba19uLTEsIC4uLiwga18wXSwgd2hlcmUKKyAqICAgICAxKSBrXzAgPD0gaW5pdHByZWMgYW5kCisgKiAgICAgMikgYWJzKGxvZyh2KSAtIHJlc3VsdCkgPCAxMCoqKC0yKmtfbi0xICsgMSkgPD0gMTAqKi1tYXhwcmVjLgorICovCitzdGF0aWMgaW5saW5lIGludAorbG5fc2NoZWR1bGVfcHJlYyhtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl0sIG1wZF9zc2l6ZV90IG1heHByZWMsCisgICAgICAgICAgICAgICAgIG1wZF9zc2l6ZV90IGluaXRwcmVjKQoreworICAgIG1wZF9zc2l6ZV90IGs7CisgICAgaW50IGk7CisKKyAgICBhc3NlcnQobWF4cHJlYyA+PSAyICYmIGluaXRwcmVjID49IDIpOworICAgIGlmIChtYXhwcmVjIDw9IGluaXRwcmVjKSByZXR1cm4gLTE7CisKKyAgICBpID0gMDsgayA9IG1heHByZWM7CisgICAgZG8geworICAgICAgICBrID0gKGsrMikgLyAyOworICAgICAgICBrbGlzdFtpKytdID0gazsKKyAgICB9IHdoaWxlIChrID4gaW5pdHByZWMpOworCisgICAgcmV0dXJuIGktMTsKK30KKworLyogVGhlIGNvbnN0YW50cyBoYXZlIGJlZW4gdmVyaWZpZWQgd2l0aCBib3RoIGRlY2ltYWwucHkgYW5kIG1wZnIuICovCisjaWZkZWYgQ09ORklHXzY0CisjaWYgTVBEX1JESUdJVFMgIT0gMTkKKyAgI2Vycm9yICJtcGRlY2ltYWwuYzogTVBEX1JESUdJVFMgbXVzdCBiZSAxOS4iCisjZW5kaWYKK3N0YXRpYyBjb25zdCBtcGRfdWludF90IG1wZF9sbjEwX2RhdGFbTVBEX01JTkFMTE9DX01BWF0gPSB7CisgIDY5ODM3MTYzMjg5ODIxNzQ0MDdVTEwsIDkwODk3MDQyODE5NzYzMzY1ODNVTEwsIDE1MTU5NjExMzU2NDg0NjU0NjFVTEwsCisgIDQ0MTY4MTYzMzU3Mjc1NTU3MDNVTEwsIDI5MDA5ODgwMzkxOTQxNzAyNjVVTEwsIDIzMDc5MjUwMzc0NzI5ODY1MDlVTEwsCisgICAxMDc1OTg0MzgzMTkxOTEyOTJVTEwsIDM0NjY2MjQxMDcxODQ2NjkyMzFVTEwsIDQ0NTAwOTk3ODEzMTE0NjkxNTlVTEwsCisgIDk4MDc4MjgwNTk3NTExOTM4NTRVTEwsIDc3MTM0NTY4NjIwOTE2NzA1ODRVTEwsIDE0OTIxOTg4NDk5Nzg3NDg4NzNVTEwsCisgIDY1Mjg3Mjg2OTY1MTEwODYyNTdVTEwsIDIzODUzOTIwNTE0NDYzNDE5NzJVTEwsIDg2OTIxODAyMDUxODkzMzk1MDdVTEwsCisgIDY1MTg3Njk3NTEwMzc0OTcwODhVTEwsIDIzNzUyNTM1NzcwOTc1MDUzOTVVTEwsIDkwOTU2MTAyOTkyOTE4MjQzMThVTEwsCisgICA5ODI3NDgyMzg1MDQ1NjQ4MDFVTEwsIDU0Mzg2MzU5MTc3ODExNzA1NDNVTEwsIDc1NDczMzE1NDE0MjE4MDg0MjdVTEwsCisgICA3NTIzNzEwMzMzMTAxMTk3ODVVTEwsIDMxNzE2NDMwOTUwNTk5NTA4NzhVTEwsIDk3ODUyNjUzODMyMDc2MDY3MjZVTEwsCisgIDI5MzIyNTgyNzk4NTAyNTg1NTBVTEwsIDU0OTczNDc3MjY2MjQyNTcwOTRVTEwsIDI5NzY5Nzk1MjIxMTA3MTgyNjRVTEwsCisgIDkyMjE0Nzc2NTY3NjM2OTM4NjZVTEwsIDE5Nzk2NTAwNDcxNDk1MTA1MDRVTEwsIDY2NzQxODM0ODU3MDQ0MjI1MDdVTEwsCisgIDk3MDI3NjY4NjA1OTUyNDk2NzFVTEwsIDkyNzgwOTY3NjI3MTI3NTc3NTNVTEwsIDkzMTQ4NDg1MjQ5NDg2NDQ4NzFVTEwsCisgIDY4MjY5MjgyODA4NDgxMTg0MjhVTEwsICA3NTQ0MDM3MDg0NzQ2OTk0MDFVTEwsICAyMzAxMDU3MDMwODk2MzQ1NzJVTEwsCisgIDE5MjkyMDMzMzc2NTg3MTQxNjZVTEwsIDc1ODk0MDI1Njc3NjMxMTM1NjlVTEwsIDQyMDgyNDEzMTQ2OTU2ODkwMTZVTEwsCisgIDI5MjI0NTU0NDA1NzU4OTI1NzJVTEwsIDkzNTY3MzQyMDY3MDU4MTEzNjRVTEwsIDI2ODQ5MTY3NDY1NTA1ODY4NTZVTEwsCisgICA2NDQ1MDcwNjQ4MDAwMjc3NTBVTEwsIDk0NzY4MzQ2MzYxNjc5MjEwMThVTEwsIDU2NTkxMjEzNzM0NTA3NDc4NTZVTEwsCisgIDI4MzU1MjIwMTE0ODA0NjYzNzFVTEwsIDY0NzA4MDY4NTU2Nzc0MzIxNjJVTEwsIDcxNDE3NDgwMDM2ODgwODQwMTJVTEwsCisgIDk2MTk0MDQ0MDAyMjIxMDUxMDFVTEwsIDU1MDQ4OTM0MzE0OTM5MzkxNDdVTEwsIDY2NzQ3NDQwNDI0MzI3NDM2NTFVTEwsCisgIDIyODc2OTgyMTk4ODY3NDY1NDNVTEwsIDc3NzMyNjI4ODQ2MTYzMzY2MjJVTEwsIDE5ODUyODM5MzUwNTMwODk2NTNVTEwsCisgIDQ2ODA4NDM3OTk4OTQ4MjYyMzNVTEwsIDgxNjg5NDgyOTA3MjA4MzI1NTVVTEwsIDgwNjc1NjY2NjI4NzM2OTA5ODdVTEwsCisgIDYyNDg2MzM0MDk1MjU0NjUwODJVTEwsIDk4Mjk4MzQxOTY3Nzg0MDQyMjhVTEwsIDM1MjQ4MDIzNTk5NzIwNTA4OTVVTEwsCisgIDMzMjc5MDA5Njc1NzI2MDk2NzdVTEwsICAxMTAxNDg4NjI4NzcyOTc2MDNVTEwsICAxNzk5MTQ1NDY4NDM2NDIwNzZVTEwsCisgIDIzMDI1ODUwOTI5OTQwNDU2ODRVTEwKK307CisjZWxzZQorI2lmIE1QRF9SRElHSVRTICE9IDkKKyAgI2Vycm9yICJtcGRlY2ltYWwuYzogTVBEX1JESUdJVFMgbXVzdCBiZSA5LiIKKyNlbmRpZgorc3RhdGljIGNvbnN0IG1wZF91aW50X3QgbXBkX2xuMTBfZGF0YVtNUERfTUlOQUxMT0NfTUFYXSA9IHsKKyAgNDAxNjgyNjkyVUwsIDcwODQ3NDY5OVVMLCA3MjA3NTQ0MDNVTCwgIDMwODk2MzQ1VUwsIDYwMjMwMTA1N1VMLCA3NjU4NzE0MTZVTCwKKyAgMTkyOTIwMzMzVUwsIDc2MzExMzU2OVVMLCA1ODk0MDI1NjdVTCwgOTU2ODkwMTY3VUwsICA4MjQxMzE0NlVMLCA1ODkyNTcyNDJVTCwKKyAgMjQ1NTQ0MDU3VUwsIDgxMTM2NDI5MlVMLCA3MzQyMDY3MDVVTCwgODY4NTY5MzU2VUwsIDE2NzQ2NTUwNVVMLCA3NzUwMjY4NDlVTCwKKyAgNzA2NDgwMDAyVUwsICAxODA2NDQ1MFVMLCA2MzYxNjc5MjFVTCwgNTY5NDc2ODM0VUwsIDczNDUwNzQ3OFVMLCAxNTY1OTEyMTNVTCwKKyAgMTQ4MDQ2NjM3VUwsIDI4MzU1MjIwMVVMLCA2Nzc0MzIxNjJVTCwgNDcwODA2ODU1VUwsIDg4MDg0MDEyNlVMLCA0MTc0ODAwMzZVTCwKKyAgMjEwNTEwMTcxVUwsIDk0MDQ0MDAyMlVMLCA5MzkxNDc5NjFVTCwgODkzNDMxNDkzVUwsIDQzNjUxNTUwNFVMLCA0NDA0MjQzMjdVTCwKKyAgNjU0MzY2NzQ3VUwsIDgyMTk4ODY3NFVMLCA2MjIyMjg3NjlVTCwgODg0NjE2MzM2VUwsIDUzNzc3MzI2MlVMLCAzNTA1MzA4OTZVTCwKKyAgMzE5ODUyODM5VUwsIDk4OTQ4MjYyM1VMLCA0NjgwODQzNzlVTCwgNzIwODMyNTU1VUwsIDE2ODk0ODI5MFVMLCA3MzY5MDk4NzhVTCwKKyAgNjc1NjY2NjI4VUwsIDU0NjUwODI4MFVMLCA4NjMzNDA5NTJVTCwgNDA0MjI4NjI0VUwsIDgzNDE5Njc3OFVMLCA1MDg5NTk4MjlVTCwKKyAgIDIzNTk5NzIwVUwsIDk2NzczNTI0OFVMLCAgOTY3NTcyNjBVTCwgNjAzMzMyNzkwVUwsIDg2Mjg3NzI5N1VMLCA3NjAxMTAxNDhVTCwKKyAgNDY4NDM2NDIwVUwsIDQwMTc5OTE0NVVMLCAyOTk0MDQ1NjhVTCwgMjMwMjU4NTA5VUwKK307CisjZW5kaWYKKy8qIF9tcGRfbG4xMCBpcyB1c2VkIGRpcmVjdGx5IGZvciBwcmVjaXNpb25zIHNtYWxsZXIgdGhhbiBNSU5BTExPQ19NQVgqUkRJR0lUUy4KKyAgIE90aGVyd2lzZSwgaXQgc2VydmVzIGFzIHRoZSBpbml0aWFsIGFwcHJveGltYXRpb24gZm9yIGNhbGN1bGF0aW5nIGxuKDEwKS4gKi8KK3N0YXRpYyBjb25zdCBtcGRfdCBfbXBkX2xuMTAgPSB7CisgIE1QRF9TVEFUSUN8TVBEX0NPTlNUX0RBVEEsIC0oTVBEX01JTkFMTE9DX01BWCpNUERfUkRJR0lUUy0xKSwKKyAgTVBEX01JTkFMTE9DX01BWCpNUERfUkRJR0lUUywgTVBEX01JTkFMTE9DX01BWCwgTVBEX01JTkFMTE9DX01BWCwKKyAgKG1wZF91aW50X3QgKiltcGRfbG4xMF9kYXRhCit9OworCisvKgorICogU2V0ICdyZXN1bHQnIHRvIGxvZygxMCkuCisgKiAgIFVscCBlcnJvcjogYWJzKHJlc3VsdCAtIGxvZygxMCkpIDwgdWxwKGxvZygxMCkpCisgKiAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nKDEwKSkgPCA1ICogMTAqKi1wcmVjICogbG9nKDEwKQorICoKKyAqIE5PVEU6IFRoZSByZWxhdGl2ZSBlcnJvciBpcyBub3QgZGVyaXZlZCBmcm9tIHRoZSB1bHAgZXJyb3IsIGJ1dAorICogY2FsY3VsYXRlZCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBmYWN0IHRoYXQgMjMvMTAgPCBsb2coMTApIDwgMjQvMTAuCisgKi8KK3ZvaWQKK21wZF9xbG4xMChtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBwcmVjLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgdmFyY29udGV4dCwgbWF4Y29udGV4dDsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsIDAsMCwwLDApOworICAgIE1QRF9ORVdfQ09OU1Qoc3RhdGljMTAsIDAsMCwyLDEsMSwxMCk7CisgICAgbXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdOworICAgIG1wZF91aW50X3Qgcm5kOworICAgIG1wZF9zc2l6ZV90IHNoaWZ0OworICAgIGludCBpOworCisgICAgYXNzZXJ0KHByZWMgPj0gMSk7CisKKyAgICBzaGlmdCA9IE1QRF9NSU5BTExPQ19NQVgqTVBEX1JESUdJVFMtcHJlYzsKKyAgICBzaGlmdCA9IHNoaWZ0IDwgMCA/IDAgOiBzaGlmdDsKKworICAgIHJuZCA9IG1wZF9xc2hpZnRyKHJlc3VsdCwgJl9tcGRfbG4xMCwgc2hpZnQsIHN0YXR1cyk7CisgICAgaWYgKHJuZCA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZXN1bHQtPmV4cCA9IC0ocmVzdWx0LT5kaWdpdHMtMSk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgaWYgKHByZWMgPCBNUERfTUlOQUxMT0NfTUFYKk1QRF9SRElHSVRTKSB7CisgICAgICAgIG1heGNvbnRleHQucHJlYyA9IHByZWM7CisgICAgICAgIF9tcGRfYXBwbHlfcm91bmRfZXhjZXNzKHJlc3VsdCwgcm5kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJnZhcmNvbnRleHQpOworICAgIHZhcmNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfVFJVTkM7CisKKyAgICBpID0gbG5fc2NoZWR1bGVfcHJlYyhrbGlzdCwgcHJlYysyLCAtcmVzdWx0LT5leHApOworICAgIGZvciAoOyBpID49IDA7IGktLSkgeworICAgICAgICB2YXJjb250ZXh0LnByZWMgPSAyKmtsaXN0W2ldKzM7CisgICAgICAgIHJlc3VsdC0+ZmxhZ3MgXj0gTVBEX05FRzsKKyAgICAgICAgX21wZF9xZXhwKCZ0bXAsIHJlc3VsdCwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIHJlc3VsdC0+ZmxhZ3MgXj0gTVBEX05FRzsKKyAgICAgICAgbXBkX3FtdWwoJnRtcCwgJnN0YXRpYzEwLCAmdG1wLCAmdmFyY29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FzdWIoJnRtcCwgJnRtcCwgJm9uZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xYWRkKHJlc3VsdCwgcmVzdWx0LCAmdG1wLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfZGVsKCZ0bXApOworICAgIG1heGNvbnRleHQucHJlYyA9IHByZWM7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZtYXhjb250ZXh0LCBzdGF0dXMpOworfQorCisvKgorICogSW5pdGlhbCBhcHByb3hpbWF0aW9ucyBmb3IgdGhlIGxuKCkgaXRlcmF0aW9uLiBUaGUgdmFsdWVzIGhhdmUgdGhlCisgKiBmb2xsb3dpbmcgcHJvcGVydGllcyAoZXN0YWJsaXNoZWQgd2l0aCBib3RoIGRlY2ltYWwucHkgYW5kIG1wZnIpOgorICoKKyAqIEluZGV4IDAgLSA0MDAsIGxvZ2FyaXRobXMgb2YgeCBpbiBbMS4wMCwgNS4wMF06CisgKiAgIGFicyhsbmFwcHJveFtpXSAqIDEwKiotMyAtIGxvZygoaSsxMDApLzEwMCkpIDwgMTAqKi0yCisgKiAgIGFicyhsbmFwcHJveFtpXSAqIDEwKiotMyAtIGxvZygoaSsxKzEwMCkvMTAwKSkgPCAxMCoqLTIKKyAqCisgKiBJbmRleCA0MDEgLSA4OTksIGxvZ2FyaXRobXMgb2YgeCBpbiAoMC41MDAsIDAuOTk5XToKKyAqICAgYWJzKC1sbmFwcHJveFtpXSAqIDEwKiotMyAtIGxvZygoaSsxMDApLzEwMDApKSA8IDEwKiotMgorICogICBhYnMoLWxuYXBwcm94W2ldICogMTAqKi0zIC0gbG9nKChpKzErMTAwKS8xMDAwKSkgPCAxMCoqLTIKKyAqLworc3RhdGljIGNvbnN0IHVpbnQxNl90IGxuYXBwcm94WzkwMF0gPSB7CisgIC8qIGluZGV4IDAgLSA0MDA6IGxvZygoaSsxMDApLzEwMCkgKiAxMDAwICovCisgIDAsIDEwLCAyMCwgMzAsIDM5LCA0OSwgNTgsIDY4LCA3NywgODYsIDk1LCAxMDQsIDExMywgMTIyLCAxMzEsIDE0MCwgMTQ4LCAxNTcsCisgIDE2NiwgMTc0LCAxODIsIDE5MSwgMTk5LCAyMDcsIDIxNSwgMjIzLCAyMzEsIDIzOSwgMjQ3LCAyNTUsIDI2MiwgMjcwLCAyNzgsCisgIDI4NSwgMjkzLCAzMDAsIDMwOCwgMzE1LCAzMjIsIDMyOSwgMzM2LCAzNDQsIDM1MSwgMzU4LCAzNjUsIDM3MiwgMzc4LCAzODUsCisgIDM5MiwgMzk5LCA0MDYsIDQxMiwgNDE5LCA0MjUsIDQzMiwgNDM4LCA0NDUsIDQ1MSwgNDU3LCA0NjQsIDQ3MCwgNDc2LCA0ODIsCisgIDQ4OSwgNDk1LCA1MDEsIDUwNywgNTEzLCA1MTksIDUyNSwgNTMxLCA1MzYsIDU0MiwgNTQ4LCA1NTQsIDU2MCwgNTY1LCA1NzEsCisgIDU3NywgNTgyLCA1ODgsIDU5MywgNTk5LCA2MDQsIDYxMCwgNjE1LCA2MjEsIDYyNiwgNjMxLCA2MzcsIDY0MiwgNjQ3LCA2NTIsCisgIDY1OCwgNjYzLCA2NjgsIDY3MywgNjc4LCA2ODMsIDY4OCwgNjkzLCA2OTgsIDcwMywgNzA4LCA3MTMsIDcxOCwgNzIzLCA3MjgsCisgIDczMiwgNzM3LCA3NDIsIDc0NywgNzUxLCA3NTYsIDc2MSwgNzY2LCA3NzAsIDc3NSwgNzc5LCA3ODQsIDc4OCwgNzkzLCA3OTgsCisgIDgwMiwgODA2LCA4MTEsIDgxNSwgODIwLCA4MjQsIDgyOSwgODMzLCA4MzcsIDg0MiwgODQ2LCA4NTAsIDg1NCwgODU5LCA4NjMsCisgIDg2NywgODcxLCA4NzYsIDg4MCwgODg0LCA4ODgsIDg5MiwgODk2LCA5MDAsIDkwNCwgOTA4LCA5MTIsIDkxNiwgOTIwLCA5MjQsCisgIDkyOCwgOTMyLCA5MzYsIDk0MCwgOTQ0LCA5NDgsIDk1MiwgOTU2LCA5NTksIDk2MywgOTY3LCA5NzEsIDk3NSwgOTc4LCA5ODIsCisgIDk4NiwgOTkwLCA5OTMsIDk5NywgMTAwMSwgMTAwNCwgMTAwOCwgMTAxMiwgMTAxNSwgMTAxOSwgMTAyMiwgMTAyNiwgMTAzMCwKKyAgMTAzMywgMTAzNywgMTA0MCwgMTA0NCwgMTA0NywgMTA1MSwgMTA1NCwgMTA1OCwgMTA2MSwgMTA2NSwgMTA2OCwgMTA3MiwgMTA3NSwKKyAgMTA3OCwgMTA4MiwgMTA4NSwgMTA4OSwgMTA5MiwgMTA5NSwgMTA5OSwgMTEwMiwgMTEwNSwgMTEwOSwgMTExMiwgMTExNSwgMTExOCwKKyAgMTEyMiwgMTEyNSwgMTEyOCwgMTEzMSwgMTEzNSwgMTEzOCwgMTE0MSwgMTE0NCwgMTE0NywgMTE1MSwgMTE1NCwgMTE1NywgMTE2MCwKKyAgMTE2MywgMTE2NiwgMTE2OSwgMTE3MiwgMTE3NiwgMTE3OSwgMTE4MiwgMTE4NSwgMTE4OCwgMTE5MSwgMTE5NCwgMTE5NywgMTIwMCwKKyAgMTIwMywgMTIwNiwgMTIwOSwgMTIxMiwgMTIxNSwgMTIxOCwgMTIyMSwgMTIyNCwgMTIyNywgMTIzMCwgMTIzMywgMTIzNSwgMTIzOCwKKyAgMTI0MSwgMTI0NCwgMTI0NywgMTI1MCwgMTI1MywgMTI1NiwgMTI1OCwgMTI2MSwgMTI2NCwgMTI2NywgMTI3MCwgMTI3MywgMTI3NSwKKyAgMTI3OCwgMTI4MSwgMTI4NCwgMTI4NiwgMTI4OSwgMTI5MiwgMTI5NSwgMTI5NywgMTMwMCwgMTMwMywgMTMwNiwgMTMwOCwgMTMxMSwKKyAgMTMxNCwgMTMxNiwgMTMxOSwgMTMyMiwgMTMyNCwgMTMyNywgMTMzMCwgMTMzMiwgMTMzNSwgMTMzOCwgMTM0MCwgMTM0MywgMTM0NSwKKyAgMTM0OCwgMTM1MSwgMTM1MywgMTM1NiwgMTM1OCwgMTM2MSwgMTM2NCwgMTM2NiwgMTM2OSwgMTM3MSwgMTM3NCwgMTM3NiwgMTM3OSwKKyAgMTM4MSwgMTM4NCwgMTM4NiwgMTM4OSwgMTM5MSwgMTM5NCwgMTM5NiwgMTM5OSwgMTQwMSwgMTQwNCwgMTQwNiwgMTQwOSwgMTQxMSwKKyAgMTQxMywgMTQxNiwgMTQxOCwgMTQyMSwgMTQyMywgMTQyNiwgMTQyOCwgMTQzMCwgMTQzMywgMTQzNSwgMTQzNywgMTQ0MCwgMTQ0MiwKKyAgMTQ0NSwgMTQ0NywgMTQ0OSwgMTQ1MiwgMTQ1NCwgMTQ1NiwgMTQ1OSwgMTQ2MSwgMTQ2MywgMTQ2NiwgMTQ2OCwgMTQ3MCwgMTQ3MiwKKyAgMTQ3NSwgMTQ3NywgMTQ3OSwgMTQ4MiwgMTQ4NCwgMTQ4NiwgMTQ4OCwgMTQ5MSwgMTQ5MywgMTQ5NSwgMTQ5NywgMTUwMCwgMTUwMiwKKyAgMTUwNCwgMTUwNiwgMTUwOSwgMTUxMSwgMTUxMywgMTUxNSwgMTUxNywgMTUyMCwgMTUyMiwgMTUyNCwgMTUyNiwgMTUyOCwgMTUzMCwKKyAgMTUzMywgMTUzNSwgMTUzNywgMTUzOSwgMTU0MSwgMTU0MywgMTU0NSwgMTU0OCwgMTU1MCwgMTU1MiwgMTU1NCwgMTU1NiwgMTU1OCwKKyAgMTU2MCwgMTU2MiwgMTU2NCwgMTU2NywgMTU2OSwgMTU3MSwgMTU3MywgMTU3NSwgMTU3NywgMTU3OSwgMTU4MSwgMTU4MywgMTU4NSwKKyAgMTU4NywgMTU4OSwgMTU5MSwgMTU5MywgMTU5NSwgMTU5NywgMTU5OSwgMTYwMSwgMTYwMywgMTYwNSwgMTYwNywgMTYwOSwKKyAgLyogaW5kZXggNDAxIC0gODk5OiAtbG9nKChpKzEwMCkvMTAwMCkgKiAxMDAwICovCisgIDY5MSwgNjg5LCA2ODcsIDY4NSwgNjgzLCA2ODEsIDY3OSwgNjc3LCA2NzUsIDY3MywgNjcxLCA2NjksIDY2OCwgNjY2LCA2NjQsCisgIDY2MiwgNjYwLCA2NTgsIDY1NiwgNjU0LCA2NTIsIDY1MCwgNjQ4LCA2NDYsIDY0NCwgNjQyLCA2NDEsIDYzOSwgNjM3LCA2MzUsCisgIDYzMywgNjMxLCA2MjksIDYyNywgNjI2LCA2MjQsIDYyMiwgNjIwLCA2MTgsIDYxNiwgNjE0LCA2MTIsIDYxMSwgNjA5LCA2MDcsCisgIDYwNSwgNjAzLCA2MDIsIDYwMCwgNTk4LCA1OTYsIDU5NCwgNTkyLCA1OTEsIDU4OSwgNTg3LCA1ODUsIDU4MywgNTgyLCA1ODAsCisgIDU3OCwgNTc2LCA1NzQsIDU3MywgNTcxLCA1NjksIDU2NywgNTY2LCA1NjQsIDU2MiwgNTYwLCA1NTksIDU1NywgNTU1LCA1NTMsCisgIDU1MiwgNTUwLCA1NDgsIDU0NiwgNTQ1LCA1NDMsIDU0MSwgNTQwLCA1MzgsIDUzNiwgNTM0LCA1MzMsIDUzMSwgNTI5LCA1MjgsCisgIDUyNiwgNTI0LCA1MjMsIDUyMSwgNTE5LCA1MTgsIDUxNiwgNTE0LCA1MTIsIDUxMSwgNTA5LCA1MDgsIDUwNiwgNTA0LCA1MDIsCisgIDUwMSwgNDk5LCA0OTgsIDQ5NiwgNDk0LCA0OTMsIDQ5MSwgNDg5LCA0ODgsIDQ4NiwgNDg0LCA0ODMsIDQ4MSwgNDgwLCA0NzgsCisgIDQ3NiwgNDc1LCA0NzMsIDQ3MiwgNDcwLCA0NjgsIDQ2NywgNDY1LCA0NjQsIDQ2MiwgNDYwLCA0NTksIDQ1NywgNDU2LCA0NTQsCisgIDQ1MywgNDUxLCA0NDksIDQ0OCwgNDQ2LCA0NDUsIDQ0MywgNDQyLCA0NDAsIDQzOCwgNDM3LCA0MzUsIDQzNCwgNDMyLCA0MzEsCisgIDQyOSwgNDI4LCA0MjYsIDQyNSwgNDIzLCA0MjIsIDQyMCwgNDE5LCA0MTcsIDQxNiwgNDE0LCA0MTIsIDQxMSwgNDEwLCA0MDgsCisgIDQwNiwgNDA1LCA0MDQsIDQwMiwgNDAwLCAzOTksIDM5OCwgMzk2LCAzOTQsIDM5MywgMzkyLCAzOTAsIDM4OSwgMzg3LCAzODYsCisgIDM4NCwgMzgzLCAzODEsIDM4MCwgMzc4LCAzNzcsIDM3NSwgMzc0LCAzNzIsIDM3MSwgMzcwLCAzNjgsIDM2NywgMzY1LCAzNjQsCisgIDM2MiwgMzYxLCAzNjAsIDM1OCwgMzU3LCAzNTUsIDM1NCwgMzUyLCAzNTEsIDM1MCwgMzQ4LCAzNDcsIDM0NSwgMzQ0LCAzNDIsCisgIDM0MSwgMzQwLCAzMzgsIDMzNywgMzM2LCAzMzQsIDMzMywgMzMxLCAzMzAsIDMyOCwgMzI3LCAzMjYsIDMyNCwgMzIzLCAzMjIsCisgIDMyMCwgMzE5LCAzMTgsIDMxNiwgMzE1LCAzMTMsIDMxMiwgMzExLCAzMDksIDMwOCwgMzA2LCAzMDUsIDMwNCwgMzAyLCAzMDEsCisgIDMwMCwgMjk4LCAyOTcsIDI5NiwgMjk0LCAyOTMsIDI5MiwgMjkwLCAyODksIDI4OCwgMjg2LCAyODUsIDI4NCwgMjgyLCAyODEsCisgIDI4MCwgMjc4LCAyNzcsIDI3NiwgMjc0LCAyNzMsIDI3MiwgMjcwLCAyNjksIDI2OCwgMjY3LCAyNjUsIDI2NCwgMjYzLCAyNjEsCisgIDI2MCwgMjU5LCAyNTgsIDI1NiwgMjU1LCAyNTQsIDI1MiwgMjUxLCAyNTAsIDI0OCwgMjQ3LCAyNDYsIDI0NSwgMjQzLCAyNDIsCisgIDI0MSwgMjQwLCAyMzgsIDIzNywgMjM2LCAyMzQsIDIzMywgMjMyLCAyMzEsIDIyOSwgMjI4LCAyMjcsIDIyNiwgMjI0LCAyMjMsCisgIDIyMiwgMjIxLCAyMTksIDIxOCwgMjE3LCAyMTYsIDIxNCwgMjEzLCAyMTIsIDIxMSwgMjEwLCAyMDgsIDIwNywgMjA2LCAyMDUsCisgIDIwMywgMjAyLCAyMDEsIDIwMCwgMTk4LCAxOTcsIDE5NiwgMTk1LCAxOTQsIDE5MiwgMTkxLCAxOTAsIDE4OSwgMTg4LCAxODYsCisgIDE4NSwgMTg0LCAxODMsIDE4MiwgMTgwLCAxNzksIDE3OCwgMTc3LCAxNzYsIDE3NCwgMTczLCAxNzIsIDE3MSwgMTcwLCAxNjgsCisgIDE2NywgMTY2LCAxNjUsIDE2NCwgMTYyLCAxNjEsIDE2MCwgMTU5LCAxNTgsIDE1NywgMTU2LCAxNTQsIDE1MywgMTUyLCAxNTEsCisgIDE1MCwgMTQ4LCAxNDcsIDE0NiwgMTQ1LCAxNDQsIDE0MywgMTQyLCAxNDAsIDEzOSwgMTM4LCAxMzcsIDEzNiwgMTM1LCAxMzQsCisgIDEzMiwgMTMxLCAxMzAsIDEyOSwgMTI4LCAxMjcsIDEyNiwgMTI0LCAxMjMsIDEyMiwgMTIxLCAxMjAsIDExOSwgMTE4LCAxMTYsCisgIDExNSwgMTE0LCAxMTMsIDExMiwgMTExLCAxMTAsIDEwOSwgMTA4LCAxMDYsIDEwNSwgMTA0LCAxMDMsIDEwMiwgMTAxLCAxMDAsCisgIDk5LCA5OCwgOTcsIDk1LCA5NCwgOTMsIDkyLCA5MSwgOTAsIDg5LCA4OCwgODcsIDg2LCA4NCwgODMsIDgyLCA4MSwgODAsIDc5LAorICA3OCwgNzcsIDc2LCA3NSwgNzQsIDczLCA3MiwgNzAsIDY5LCA2OCwgNjcsIDY2LCA2NSwgNjQsIDYzLCA2MiwgNjEsIDYwLCA1OSwKKyAgNTgsIDU3LCA1NiwgNTQsIDUzLCA1MiwgNTEsIDUwLCA0OSwgNDgsIDQ3LCA0NiwgNDUsIDQ0LCA0MywgNDIsIDQxLCA0MCwgMzksCisgIDM4LCAzNywgMzYsIDM1LCAzNCwgMzMsIDMxLCAzMCwgMjksIDI4LCAyNywgMjYsIDI1LCAyNCwgMjMsIDIyLCAyMSwgMjAsIDE5LAorICAxOCwgMTcsIDE2LCAxNSwgMTQsIDEzLCAxMiwgMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxCit9OworCisvKgorICogSW50ZXJuYWwgbG4oKSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IGNoZWNrIGZvciBzcGVjaWFscywgemVybyBvciBvbmUuCisgKiBSZWxhdGl2ZSBlcnJvcjogYWJzKHJlc3VsdCAtIGxvZyhhKSkgPCAwLjEgKiAxMCoqLXByZWMgKiBhYnMobG9nKGEpKQorICovCitzdGF0aWMgdm9pZAorX21wZF9xbG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB2YXJjb250ZXh0LCBtYXhjb250ZXh0OworICAgIG1wZF90ICp6ID0gKG1wZF90ICopIHJlc3VsdDsKKyAgICBNUERfTkVXX1NUQVRJQyh2LDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHZ0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModG1wLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXTsKKyAgICBtcGRfc3NpemVfdCBtYXhwcmVjLCBzaGlmdCwgdDsKKyAgICBtcGRfc3NpemVfdCBhX2RpZ2l0cywgYV9leHA7CisgICAgbXBkX3VpbnRfdCBkdW1teSwgeDsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydCghbXBkX2lzc3BlY2lhbChhKSAmJiAhbXBkX2lzemVyb2NvZWZmKGEpKTsKKworICAgIC8qCisgICAgICogV2UgYXJlIGNhbGN1bGF0aW5nIGxuKGEpID0gbG4odiAqIDEwXnQpID0gbG4odikgKyB0KmxuKDEwKSwKKyAgICAgKiB3aGVyZSAwLjUgPCB2IDw9IDUuCisgICAgICovCisgICAgaWYgKCFtcGRfcWNvcHkoJnYsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorCisgICAgLyogSW5pdGlhbCBhcHByb3hpbWF0aW9uOiB3ZSBoYXZlIGF0IGxlYXN0IG9uZSBub24temVybyBkaWdpdCAqLworICAgIF9tcGRfZ2V0X21zZGlnaXRzKCZkdW1teSwgJngsICZ2LCAzKTsKKyAgICBpZiAoeCA8IDEwKSB4ICo9IDEwOworICAgIGlmICh4IDwgMTAwKSB4ICo9IDEwOworICAgIHggLT0gMTAwOworCisgICAgLyogYSBtYXkgZXF1YWwgeiAqLworICAgIGFfZGlnaXRzID0gYS0+ZGlnaXRzOworICAgIGFfZXhwID0gYS0+ZXhwOworCisgICAgbXBkX21pbmFsbG9jKHopOworICAgIG1wZF9jbGVhcl9mbGFncyh6KTsKKyAgICB6LT5kYXRhWzBdID0gbG5hcHByb3hbeF07CisgICAgei0+bGVuID0gMTsKKyAgICB6LT5leHAgPSAtMzsKKyAgICBtcGRfc2V0ZGlnaXRzKHopOworCisgICAgaWYgKHggPD0gNDAwKSB7CisgICAgICAgIC8qIFJlZHVjZSB0aGUgaW5wdXQgb3BlcmFuZCB0byAxLjAwIDw9IHYgPD0gNS4wMC4gTGV0IHkgPSB4ICsgMTAwLAorICAgICAgICAgKiBzbyAxMDAgPD0geSA8PSA1MDAuIFNpbmNlIHkgY29udGFpbnMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgICAgICAqIG9mIHYsIHkvMTAwIDw9IHYgPCAoeSsxKS8xMDAgYW5kIGFicyh6IC0gbG9nKHYpKSA8IDEwKiotMi4gKi8KKyAgICAgICAgdi5leHAgPSAtKGFfZGlnaXRzIC0gMSk7CisgICAgICAgIHQgPSBhX2V4cCArIGFfZGlnaXRzIC0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFJlZHVjZSB0aGUgaW5wdXQgb3BlcmFuZCB0byAwLjUwMCA8IHYgPD0gMC45OTkuIExldCB5ID0geCArIDEwMCwKKyAgICAgICAgICogc28gNTAwIDwgeSA8PSA5OTkuIFNpbmNlIHkgY29udGFpbnMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgICAgICAqIG9mIHYsIHkvMTAwMCA8PSB2IDwgKHkrMSkvMTAwMCBhbmQgYWJzKHogLSBsb2codikpIDwgMTAqKi0yLiAqLworICAgICAgICB2LmV4cCA9IC1hX2RpZ2l0czsKKyAgICAgICAgdCA9IGFfZXhwICsgYV9kaWdpdHM7CisgICAgICAgIG1wZF9zZXRfbmVnYXRpdmUoeik7CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9tYXhjb250ZXh0KCZ2YXJjb250ZXh0KTsKKyAgICB2YXJjb250ZXh0LnJvdW5kID0gTVBEX1JPVU5EX1RSVU5DOworCisgICAgbWF4cHJlYyA9IGN0eC0+cHJlYyArIDI7CisgICAgaWYgKHQgPT0gMCAmJiAoeCA8PSAxNSB8fCB4ID49IDgwMCkpIHsKKyAgICAgICAgLyogMC45MDAgPD0gdiA8PSAxLjE1OiBFc3RpbWF0ZSB0aGUgbWFnbml0dWRlIG9mIHRoZSBsb2dhcml0aG0uCisgICAgICAgICAqIElmIGxuKHYpIHdpbGwgdW5kZXJmbG93LCBza2lwIHRoZSBsb29wLiBPdGhlcndpc2UsIGFkanVzdCB0aGUKKyAgICAgICAgICogcHJlY2lzaW9uIHVwd2FyZHMgaW4gb3JkZXIgdG8gb2J0YWluIGEgc3VmZmljaWVudCBudW1iZXIgb2YKKyAgICAgICAgICogc2lnbmlmaWNhbnQgZGlnaXRzLgorICAgICAgICAgKgorICAgICAgICAgKiAgIENhc2UgdiA+IDE6CisgICAgICAgICAqICAgICAgYWJzKCh2LTEpLzEwKSA8IGFicygodi0xKS92KSA8IGFicyhsbih2KSkgPCBhYnModi0xKQorICAgICAgICAgKiAgIENhc2UgdiA8IDE6CisgICAgICAgICAqICAgICAgYWJzKHYtMSkgPCBhYnMobG4odikpIDwgYWJzKCh2LTEpL3YpIDwgYWJzKCh2LTEpKjEwKQorICAgICAgICAgKi8KKyAgICAgICAgaW50IGNtcCA9IF9tcGRfY21wKCZ2LCAmb25lKTsKKworICAgICAgICAvKiBVcHBlciBib3VuZCAoYXNzdW1lIHYgPiAxKTogYWJzKHYtMSksIHVucm91bmRlZCAqLworICAgICAgICBfbXBkX3FzdWIoJnRtcCwgJnYsICZvbmUsICZtYXhjb250ZXh0LCAmbWF4Y29udGV4dC5zdGF0dXMpOworICAgICAgICBpZiAobWF4Y29udGV4dC5zdGF0dXMgJiBNUERfRXJyb3JzKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY21wIDwgMCkgeworICAgICAgICAgICAgLyogdiA8IDE6IGFicygodi0xKSoxMCkgKi8KKyAgICAgICAgICAgIHRtcC5leHAgKz0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2FkamV4cCgmdG1wKSA8IG1wZF9ldGlueShjdHgpKSB7CisgICAgICAgICAgICAvKiBUaGUgdXBwZXIgYm91bmQgaXMgbGVzcyB0aGFuIGV0aW55OiBVbmRlcmZsb3cgdG8gemVybyAqLworICAgICAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIChjbXA8MCksIDEsIG1wZF9ldGlueShjdHgpLTEpOworICAgICAgICAgICAgZ290byBmaW5pc2g7CisgICAgICAgIH0KKyAgICAgICAgLyogTG93ZXIgYm91bmQ6IGFicygodi0xKS8xMCkgb3IgYWJzKHYtMSkgKi8KKyAgICAgICAgdG1wLmV4cCAtPSAxOworICAgICAgICBpZiAobXBkX2FkamV4cCgmdG1wKSA8IDApIHsKKyAgICAgICAgICAgIC8qIEFic29sdXRlIGVycm9yIG9mIHRoZSBsb29wOiBhYnMoeiAtIGxvZyh2KSkgPCAxMCoqLXAuIElmCisgICAgICAgICAgICAgKiBwID0gY3R4LT5wcmVjKzItYWRqZXhwKGxvd2VyKSwgdGhlbiB0aGUgcmVsYXRpdmUgZXJyb3Igb2YKKyAgICAgICAgICAgICAqIHRoZSByZXN1bHQgaXMgKHVzaW5nIDEwKiphZGpleHAoeCkgPD0gYWJzKHgpKToKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiAgIGFicyh6IC0gbG9nKHYpKSAvIGFicyhsb2codikpIDwgMTAqKi1wIC8gYWJzKGxvZyh2KSkKKyAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0gMTAqKigtY3R4LT5wcmVjLTIpCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1heHByZWMgPSBtYXhwcmVjIC0gbXBkX2FkamV4cCgmdG1wKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGkgPSBsbl9zY2hlZHVsZV9wcmVjKGtsaXN0LCBtYXhwcmVjLCAyKTsKKyAgICBmb3IgKDsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgdmFyY29udGV4dC5wcmVjID0gMiprbGlzdFtpXSszOworICAgICAgICB6LT5mbGFncyBePSBNUERfTkVHOworICAgICAgICBfbXBkX3FleHAoJnRtcCwgeiwgJnZhcmNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIHotPmZsYWdzIF49IE1QRF9ORUc7CisKKyAgICAgICAgaWYgKHYuZGlnaXRzID4gdmFyY29udGV4dC5wcmVjKSB7CisgICAgICAgICAgICBzaGlmdCA9IHYuZGlnaXRzIC0gdmFyY29udGV4dC5wcmVjOworICAgICAgICAgICAgbXBkX3FzaGlmdHIoJnZ0bXAsICZ2LCBzaGlmdCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHZ0bXAuZXhwICs9IHNoaWZ0OworICAgICAgICAgICAgbXBkX3FtdWwoJnRtcCwgJnZ0bXAsICZ0bXAsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3FtdWwoJnRtcCwgJnYsICZ0bXAsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisKKyAgICAgICAgbXBkX3FzdWIoJnRtcCwgJnRtcCwgJm9uZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xYWRkKHosIHosICZ0bXAsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICBpZiAobXBkX2lzc3BlY2lhbCh6KSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIENhc2UgdCA9PSAwOgorICAgICAqICAgIHQgKiBsb2coMTApID09IDAsIHRoZSByZXN1bHQgZG9lcyBub3QgY2hhbmdlIGFuZCB0aGUgYW5hbHlzaXMKKyAgICAgKiAgICBhYm92ZSBhcHBsaWVzLiBJZiB2IDwgMC45MDAgb3IgdiA+IDEuMTUsIHRoZSByZWxhdGl2ZSBlcnJvciBpcworICAgICAqICAgIGxlc3MgdGhhbiAxMCoqKC1jdHgucHJlYy0xKS4KKyAgICAgKiBDYXNlIHQgIT0gMDoKKyAgICAgKiAgICAgIHogOj0gYXBwcm94KGxvZyh2KSkKKyAgICAgKiAgICAgIHkgOj0gYXBwcm94KGxvZygxMCkpCisgICAgICogICAgICBwIDo9IG1heHByZWMgPSBjdHgtPnByZWMgKyAyCisgICAgICogICBBYnNvbHV0ZSBlcnJvcnM6CisgICAgICogICAgICAxKSBhYnMoeiAtIGxvZyh2KSkgPCAxMCoqLXAKKyAgICAgKiAgICAgIDIpIGFicyh5IC0gbG9nKDEwKSkgPCAxMCoqLXAKKyAgICAgKiAgIFRoZSBtdWx0aXBsaWNhdGlvbiBpcyBleGFjdCwgc286CisgICAgICogICAgICAzKSBhYnModCp5IC0gdCpsb2coMTApKSA8IHQqMTAqKi1wCisgICAgICogICBUaGUgc3VtIGlzIGV4YWN0LCBzbzoKKyAgICAgKiAgICAgIDQpIGFicygoeiArIHQqeSkgLSAobG9nKHYpICsgdCpsb2coMTApKSkgPCAoYWJzKHQpICsgMSkgKiAxMCoqLXAKKyAgICAgKiAgIEJvdW5kcyBmb3IgbG9nKHYpIGFuZCBsb2coMTApOgorICAgICAqICAgICAgNSkgLTcvMTAgPCBsb2codikgPCAxNy8xMAorICAgICAqICAgICAgNikgMjMvMTAgPCBsb2coMTApIDwgMjQvMTAKKyAgICAgKiAgIFVzaW5nIDQpLCA1KSwgNikgYW5kIHQgIT0gMCwgdGhlIHJlbGF0aXZlIGVycm9yIGlzOgorICAgICAqCisgICAgICogICAgICA3KSByZWxlcnIgPCAoKGFicyh0KSArIDEpKjEwKiotcCkgLyBhYnMobG9nKHYpICsgdCpsb2coMTApKQorICAgICAqICAgICAgICAgICAgICAgIDwgMC41ICogMTAqKigtcCArIDEpID0gMC41ICogMTAqKigtY3R4LT5wcmVjLTEpCisgICAgICovCisgICAgbXBkX3FsbjEwKCZ2LCBtYXhwcmVjKzEsIHN0YXR1cyk7CisgICAgbXBkX3FtdWxfc3NpemUoJnRtcCwgJnYsIHQsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xYWRkKHJlc3VsdCwgJnRtcCwgeiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisKKworZmluaXNoOgorICAgICpzdGF0dXMgfD0gKE1QRF9JbmV4YWN0fE1QRF9Sb3VuZGVkKTsKKyAgICBtcGRfZGVsKCZ2KTsKKyAgICBtcGRfZGVsKCZ2dG1wKTsKKyAgICBtcGRfZGVsKCZ0bXApOworfQorCisvKiBsbihhKSAqLwordm9pZAorbXBkX3FsbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBtcGRfc3NpemVfdCBhZGpleHAsIHQ7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfTkVHLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChfbXBkX2NtcChhLCAmb25lKSA9PSAwKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvKgorICAgICAqIENoZWNrIGlmIHRoZSByZXN1bHQgd2lsbCBvdmVyZmxvdyAoMCA8IHgsIHggIT0gMSk6CisgICAgICogICAxKSBsb2cxMCh4KSA8IDAgaWZmIGFkamV4cCh4KSA8IDAKKyAgICAgKiAgIDIpIDAgPCB4IC9cIHggPD0geSA9PT4gYWRqZXhwKHgpIDw9IGFkamV4cCh5KQorICAgICAqICAgMykgMCA8IHggL1wgeCAhPSAxID09PiAyICogYWJzKGxvZzEwKHgpKSA8IGFicyhsb2coeCkpCisgICAgICogICA0KSBhZGpleHAoeCkgPD0gbG9nMTAoeCkgPCBhZGpleHAoeCkgKyAxCisgICAgICoKKyAgICAgKiBDYXNlIGFkamV4cCh4KSA+PSAwOgorICAgICAqICAgNSkgMiAqIGFkamV4cCh4KSA8IGFicyhsb2coeCkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA+IDA6CisgICAgICogICAgIDYpIGFkamV4cCgyICogYWRqZXhwKHgpKSA8PSBhZGpleHAoYWJzKGxvZyh4KSkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA9PSAwOgorICAgICAqICAgICBtcGRfZXhwX2RpZ2l0cyh0KS0xID09IDAgPD0gZW1heCAodGhlIHNob3J0Y3V0IGlzIG5vdCB0cmlnZ2VyZWQpCisgICAgICoKKyAgICAgKiBDYXNlIGFkamV4cCh4KSA8IDA6CisgICAgICogICA3KSAyICogKC1hZGpleHAoeCkgLSAxKSA8IGFicyhsb2coeCkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA8IC0xOgorICAgICAqICAgICA4KSBhZGpleHAoMiAqICgtYWRqZXhwKHgpIC0gMSkpIDw9IGFkamV4cChhYnMobG9nKHgpKSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID09IC0xOgorICAgICAqICAgICBtcGRfZXhwX2RpZ2l0cyh0KS0xID09IDAgPD0gZW1heCAodGhlIHNob3J0Y3V0IGlzIG5vdCB0cmlnZ2VyZWQpCisgICAgICovCisgICAgYWRqZXhwID0gbXBkX2FkamV4cChhKTsKKyAgICB0ID0gKGFkamV4cCA8IDApID8gLWFkamV4cC0xIDogYWRqZXhwOworICAgIHQgKj0gMjsKKyAgICBpZiAobXBkX2V4cF9kaWdpdHModCktMSA+IGN0eC0+ZW1heCkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9PdmVyZmxvd3xNUERfSW5leGFjdHxNUERfUm91bmRlZDsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCAoYWRqZXhwPDApLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtjdHggPSAqY3R4OworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworCisgICAgaWYgKGN0eC0+YWxsY3IpIHsKKyAgICAgICAgTVBEX05FV19TVEFUSUModDEsIDAsMCwwLDApOworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MiwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHVscCwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKGFhLCAwLDAsMCwwKTsKKyAgICAgICAgbXBkX3NzaXplX3QgcHJlYzsKKworICAgICAgICBpZiAocmVzdWx0ID09IGEpIHsKKyAgICAgICAgICAgIGlmICghbXBkX3Fjb3B5KCZhYSwgYSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9NYWxsb2NfZXJyb3IsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYSA9ICZhYTsKKyAgICAgICAgfQorCisgICAgICAgIHdvcmtjdHguY2xhbXAgPSAwOworICAgICAgICBwcmVjID0gY3R4LT5wcmVjICsgMzsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIHdvcmtjdHgucHJlYyA9IHByZWM7CisgICAgICAgICAgICBfbXBkX3FsbihyZXN1bHQsIGEsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgX3NzZXR0cmlwbGUoJnVscCwgTVBEX1BPUywgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC0+ZXhwICsgcmVzdWx0LT5kaWdpdHMtd29ya2N0eC5wcmVjKTsKKworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gY3R4LT5wcmVjOworICAgICAgICAgICAgbXBkX3FhZGQoJnQxLCByZXN1bHQsICZ1bHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgbXBkX3FzdWIoJnQyLCByZXN1bHQsICZ1bHAsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwocmVzdWx0KSB8fCBtcGRfaXN6ZXJvY29lZmYocmVzdWx0KSB8fAorICAgICAgICAgICAgICAgIG1wZF9xY21wKCZ0MSwgJnQyLCBzdGF0dXMpID09IDApIHsKKyAgICAgICAgICAgICAgICB3b3JrY3R4LmNsYW1wID0gY3R4LT5jbGFtcDsKKyAgICAgICAgICAgICAgICBtcGRfY2hlY2tfdW5kZXJmbG93KHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJlYyArPSBNUERfUkRJR0lUUzsKKyAgICAgICAgfQorICAgICAgICBtcGRfZGVsKCZ0MSk7CisgICAgICAgIG1wZF9kZWwoJnQyKTsKKyAgICAgICAgbXBkX2RlbCgmdWxwKTsKKyAgICAgICAgbXBkX2RlbCgmYWEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xbG4ocmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgfQorfQorCisvKgorICogSW50ZXJuYWwgbG9nMTAoKSBmdW5jdGlvbiB0aGF0IGRvZXMgbm90IGNoZWNrIGZvciBzcGVjaWFscywgemVybyBvciBvbmUuCisgKiBDYXNlIFNLSVBfRklOQUxJWkU6CisgKiAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nMTAoYSkpIDwgMC4xICogMTAqKi1wcmVjICogYWJzKGxvZzEwKGEpKQorICogQ2FzZSBET19GSU5BTElaRToKKyAqICAgVWxwIGVycm9yOiBhYnMocmVzdWx0IC0gbG9nMTAoYSkpIDwgdWxwKGxvZzEwKGEpKQorICovCitlbnVtIHtTS0lQX0ZJTkFMSVpFLCBET19GSU5BTElaRX07CitzdGF0aWMgdm9pZAorX21wZF9xbG9nMTAoaW50IGFjdGlvbiwgbXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfU1RBVElDKGxuMTAsMCwwLDAsMCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmd29ya2N0eCk7CisgICAgd29ya2N0eC5wcmVjID0gY3R4LT5wcmVjICsgMzsKKyAgICAvKiByZWxhdGl2ZSBlcnJvcjogMC4xICogMTAqKigtcC0zKS4gVGhlIHNwZWNpZmljIHVuZGVyZmxvdyBzaG9ydGN1dAorICAgICAqIGluIF9tcGRfcWxuKCkgZG9lcyBub3QgY2hhbmdlIHRoZSBmaW5hbCByZXN1bHQuICovCisgICAgX21wZF9xbG4ocmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAvKiByZWxhdGl2ZSBlcnJvcjogNSAqIDEwKiooLXAtMykgKi8KKyAgICBtcGRfcWxuMTAoJmxuMTAsIHdvcmtjdHgucHJlYywgc3RhdHVzKTsKKworICAgIGlmIChhY3Rpb24gPT0gRE9fRklOQUxJWkUpIHsKKyAgICAgICAgd29ya2N0eCA9ICpjdHg7CisgICAgICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworICAgIH0KKyAgICAvKiBTS0lQX0ZJTkFMSVpFOiByZWxhdGl2ZSBlcnJvcjogNSAqIDEwKiooLXAtMykgKi8KKyAgICBfbXBkX3FkaXYoTk9fSURFQUxfRVhQLCByZXN1bHQsIHJlc3VsdCwgJmxuMTAsICZ3b3JrY3R4LCBzdGF0dXMpOworCisgICAgbXBkX2RlbCgmbG4xMCk7Cit9CisKKy8qIGxvZzEwKGEpICovCit2b2lkCittcGRfcWxvZzEwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIG1wZF9zc2l6ZV90IGFkamV4cCwgdDsKKworICAgIHdvcmtjdHggPSAqY3R4OworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfSU5GKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGEpKSB7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX05FRywgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2NvZWZmX2lzcG93MTAoYSkpIHsKKyAgICAgICAgdWludDhfdCBzaWduID0gMDsKKyAgICAgICAgYWRqZXhwID0gbXBkX2FkamV4cChhKTsKKyAgICAgICAgaWYgKGFkamV4cCA8IDApIHsKKyAgICAgICAgICAgIHNpZ24gPSAxOworICAgICAgICAgICAgYWRqZXhwID0gLWFkamV4cDsKKyAgICAgICAgfQorICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgc2lnbiwgYWRqZXhwLCAwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8qCisgICAgICogQ2hlY2sgaWYgdGhlIHJlc3VsdCB3aWxsIG92ZXJmbG93ICgwIDwgeCwgeCAhPSAxKToKKyAgICAgKiAgIDEpIGxvZzEwKHgpIDwgMCBpZmYgYWRqZXhwKHgpIDwgMAorICAgICAqICAgMikgMCA8IHggL1wgeCA8PSB5ID09PiBhZGpleHAoeCkgPD0gYWRqZXhwKHkpCisgICAgICogICAzKSBhZGpleHAoeCkgPD0gbG9nMTAoeCkgPCBhZGpleHAoeCkgKyAxCisgICAgICoKKyAgICAgKiBDYXNlIGFkamV4cCh4KSA+PSAwOgorICAgICAqICAgNCkgYWRqZXhwKHgpIDw9IGFicyhsb2cxMCh4KSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpID4gMDoKKyAgICAgKiAgICAgNSkgYWRqZXhwKGFkamV4cCh4KSkgPD0gYWRqZXhwKGFicyhsb2cxMCh4KSkpCisgICAgICogICBDYXNlIGFkamV4cCh4KSA9PSAwOgorICAgICAqICAgICBtcGRfZXhwX2RpZ2l0cyh0KS0xID09IDAgPD0gZW1heCAodGhlIHNob3J0Y3V0IGlzIG5vdCB0cmlnZ2VyZWQpCisgICAgICoKKyAgICAgKiBDYXNlIGFkamV4cCh4KSA8IDA6CisgICAgICogICA2KSAtYWRqZXhwKHgpIC0gMSA8IGFicyhsb2cxMCh4KSkKKyAgICAgKiAgIENhc2UgYWRqZXhwKHgpIDwgLTE6CisgICAgICogICAgIDcpIGFkamV4cCgtYWRqZXhwKHgpIC0gMSkgPD0gYWRqZXhwKGFicyhsb2coeCkpKQorICAgICAqICAgQ2FzZSBhZGpleHAoeCkgPT0gLTE6CisgICAgICogICAgIG1wZF9leHBfZGlnaXRzKHQpLTEgPT0gMCA8PSBlbWF4ICh0aGUgc2hvcnRjdXQgaXMgbm90IHRyaWdnZXJlZCkKKyAgICAgKi8KKyAgICBhZGpleHAgPSBtcGRfYWRqZXhwKGEpOworICAgIHQgPSAoYWRqZXhwIDwgMCkgPyAtYWRqZXhwLTEgOiBhZGpleHA7CisgICAgaWYgKG1wZF9leHBfZGlnaXRzKHQpLTEgPiBjdHgtPmVtYXgpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfT3ZlcmZsb3d8TVBEX0luZXhhY3R8TVBEX1JvdW5kZWQ7CisgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgKGFkamV4cDwwKSwgTVBEX0lORik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY3R4LT5hbGxjcikgeworICAgICAgICBNUERfTkVXX1NUQVRJQyh0MSwgMCwwLDAsMCk7CisgICAgICAgIE1QRF9ORVdfU1RBVElDKHQyLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUModWxwLCAwLDAsMCwwKTsKKyAgICAgICAgTVBEX05FV19TVEFUSUMoYWEsIDAsMCwwLDApOworICAgICAgICBtcGRfc3NpemVfdCBwcmVjOworCisgICAgICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICAgICAgaWYgKCFtcGRfcWNvcHkoJmFhLCBhLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhID0gJmFhOworICAgICAgICB9CisKKyAgICAgICAgd29ya2N0eC5jbGFtcCA9IDA7CisgICAgICAgIHByZWMgPSBjdHgtPnByZWMgKyAzOworICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgd29ya2N0eC5wcmVjID0gcHJlYzsKKyAgICAgICAgICAgIF9tcGRfcWxvZzEwKFNLSVBfRklOQUxJWkUsIHJlc3VsdCwgYSwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBfc3NldHRyaXBsZSgmdWxwLCBNUERfUE9TLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LT5leHAgKyByZXN1bHQtPmRpZ2l0cy13b3JrY3R4LnByZWMpOworCisgICAgICAgICAgICB3b3JrY3R4LnByZWMgPSBjdHgtPnByZWM7CisgICAgICAgICAgICBtcGRfcWFkZCgmdDEsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXN1YigmdDIsIHJlc3VsdCwgJnVscCwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8IG1wZF9pc3plcm9jb2VmZihyZXN1bHQpIHx8CisgICAgICAgICAgICAgICAgbXBkX3FjbXAoJnQxLCAmdDIsIHN0YXR1cykgPT0gMCkgeworICAgICAgICAgICAgICAgIHdvcmtjdHguY2xhbXAgPSBjdHgtPmNsYW1wOworICAgICAgICAgICAgICAgIG1wZF9jaGVja191bmRlcmZsb3cocmVzdWx0LCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmVjICs9IE1QRF9SRElHSVRTOworICAgICAgICB9CisgICAgICAgIG1wZF9kZWwoJnQxKTsKKyAgICAgICAgbXBkX2RlbCgmdDIpOworICAgICAgICBtcGRfZGVsKCZ1bHApOworICAgICAgICBtcGRfZGVsKCZhYSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBfbXBkX3Fsb2cxMChET19GSU5BTElaRSwgcmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX2NoZWNrX3VuZGVyZmxvdyhyZXN1bHQsICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KK30KKworLyoKKyAqIE1heGltdW0gb2YgdGhlIHR3byBvcGVyYW5kcy4gQXR0ZW50aW9uOiBJZiBvbmUgb3BlcmFuZCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlCisgKiBvdGhlciBpcyBudW1lcmljLCB0aGUgbnVtZXJpYyBvcGVyYW5kIGlzIHJldHVybmVkLiBUaGlzIG1heSBub3QgYmUgd2hhdCBvbmUKKyAqIGV4cGVjdHMuCisgKi8KK3ZvaWQKK21wZF9xbWF4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpbnQgYzsKKworICAgIGlmIChtcGRfaXNxbmFuKGEpICYmICFtcGRfaXNuYW4oYikpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX2lzcW5hbihiKSAmJiAhbXBkX2lzbmFuKGEpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjID0gX21wZF9jbXAoYSwgYik7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9udW1lcXVhbChhLCBiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKgorICogTWF4aW11bSBtYWduaXR1ZGU6IFNhbWUgYXMgbXBkX21heCgpLCBidXQgY29tcGFyZXMgdGhlIG9wZXJhbmRzIHdpdGggdGhlaXIKKyAqIHNpZ24gaWdub3JlZC4KKyAqLwordm9pZAorbXBkX3FtYXhfbWFnKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzcW5hbihhKSAmJiAhbXBkX2lzbmFuKGIpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYikgJiYgIW1wZF9pc25hbihhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wX2FicyhhLCBiKTsKKyAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgYyA9IF9tcGRfY21wX251bWVxdWFsKGEsIGIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGMgPCAwKSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBNaW5pbXVtIG9mIHRoZSB0d28gb3BlcmFuZHMuIEF0dGVudGlvbjogSWYgb25lIG9wZXJhbmQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZQorICogb3RoZXIgaXMgbnVtZXJpYywgdGhlIG51bWVyaWMgb3BlcmFuZCBpcyByZXR1cm5lZC4gVGhpcyBtYXkgbm90IGJlIHdoYXQgb25lCisgKiBleHBlY3RzLgorICovCit2b2lkCittcGRfcW1pbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaW50IGM7CisKKyAgICBpZiAobXBkX2lzcW5hbihhKSAmJiAhbXBkX2lzbmFuKGIpKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9pc3FuYW4oYikgJiYgIW1wZF9pc25hbihhKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfcWNoZWNrX25hbnMocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IF9tcGRfY21wKGEsIGIpOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBjID0gX21wZF9jbXBfbnVtZXF1YWwoYSwgYik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYyA8IDApIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyoKKyAqIE1pbmltdW0gbWFnbml0dWRlOiBTYW1lIGFzIG1wZF9taW4oKSwgYnV0IGNvbXBhcmVzIHRoZSBvcGVyYW5kcyB3aXRoIHRoZWlyCisgKiBzaWduIGlnbm9yZWQuCisgKi8KK3ZvaWQKK21wZF9xbWluX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9pc3FuYW4oYSkgJiYgIW1wZF9pc25hbihiKSkgeworICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBiLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIGlmIChtcGRfaXNxbmFuKGIpICYmICFtcGRfaXNuYW4oYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGMgPSBfbXBkX2NtcF9hYnMoYSwgYik7CisgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgIGMgPSBfbXBkX2NtcF9udW1lcXVhbChhLCBiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjIDwgMCkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGIsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBNaW5pbXVtIHNwYWNlIG5lZWRlZCBmb3IgdGhlIHJlc3VsdCBhcnJheSBpbiBfa2FyYXRzdWJhX3JlYygpLiAqLworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90Citfa211bF9yZXN1bHRzaXplKG1wZF9zaXplX3QgbGEsIG1wZF9zaXplX3QgbGIpCit7CisgICAgbXBkX3NpemVfdCBuLCBtOworCisgICAgbiA9IGFkZF9zaXplX3QobGEsIGxiKTsKKyAgICBuID0gYWRkX3NpemVfdChuLCAxKTsKKworICAgIG0gPSAobGErMSkvMiArIDE7CisgICAgbSA9IG11bF9zaXplX3QobSwgMyk7CisKKyAgICByZXR1cm4gKG0gPiBuKSA/IG0gOiBuOworfQorCisvKiBXb3JrIHNwYWNlIG5lZWRlZCBpbiBfa2FyYXRzdWJhX3JlYygpLiBsaW0gPj0gNCAqLworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90Citfa211bF93b3Jrc2l6ZShtcGRfc2l6ZV90IG4sIG1wZF9zaXplX3QgbGltKQoreworICAgIG1wZF9zaXplX3QgbTsKKworICAgIGlmIChuIDw9IGxpbSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBtID0gKG4rMSkvMiArIDE7CisKKyAgICByZXR1cm4gYWRkX3NpemVfdChtdWxfc2l6ZV90KG0sIDIpLCBfa211bF93b3Jrc2l6ZShtLCBsaW0pKTsKK30KKworCisjZGVmaW5lIE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UgMTYgIC8qIG11c3QgYmUgPj0gNCAqLworCisvKgorICogQWRkIHRoZSBwcm9kdWN0IG9mIGEgYW5kIGIgdG8gYy4KKyAqIGMgbXVzdCBiZSBfa211bF9yZXN1bHRzaXplKGxhLCBsYikgaW4gc2l6ZS4KKyAqIHcgaXMgdXNlZCBhcyBhIHdvcmsgYXJyYXkgYW5kIG11c3QgYmUgX2ttdWxfd29ya3NpemUoYSwgbGltKSBpbiBzaXplLgorICogUm9tYW4gRS4gTWFlZGVyLCBTdG9yYWdlIEFsbG9jYXRpb24gZm9yIHRoZSBLYXJhdHN1YmEgSW50ZWdlciBNdWx0aXBsaWNhdGlvbgorICogQWxnb3JpdGhtLiBJbiAiRGVzaWduIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBzeW1ib2xpYyBjb21wdXRhdGlvbiBzeXN0ZW1zIiwKKyAqIFNwcmluZ2VyLCAxOTkzLCBJU0JOIDM1NDA1NzIzNVgsIDk3ODM1NDA1NzIzNTAuCisgKi8KK3N0YXRpYyB2b2lkCitfa2FyYXRzdWJhX3JlYyhtcGRfdWludF90ICpjLCBjb25zdCBtcGRfdWludF90ICphLCBjb25zdCBtcGRfdWludF90ICpiLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCAqdywgbXBkX3NpemVfdCBsYSwgbXBkX3NpemVfdCBsYikKK3sKKyAgICBtcGRfc2l6ZV90IG0sIGx0OworCisgICAgYXNzZXJ0KGxhID49IGxiICYmIGxiID4gMCk7CisgICAgYXNzZXJ0KGxhIDw9IE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UgfHwgdyAhPSBOVUxMKTsKKworICAgIGlmIChsYSA8PSBNUERfS0FSQVRTVUJBX0JBU0VDQVNFKSB7CisgICAgICAgIF9tcGRfYmFzZW11bChjLCBhLCBiLCBsYSwgbGIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbSA9IChsYSsxKS8yOyAgLyogY2VpbChsYS8yKSAqLworCisgICAgLyogbGIgPD0gbSA8IGxhICovCisgICAgaWYgKGxiIDw9IG0pIHsKKworICAgICAgICAvKiBsYiBjYW4gbm93IGJlIGxhcmdlciB0aGFuIGxhLW0gKi8KKyAgICAgICAgaWYgKGxiID4gbGEtbSkgeworICAgICAgICAgICAgbHQgPSBsYiArIGxiICsgMTsgICAgICAgLyogc3BhY2UgbmVlZGVkIGZvciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgIC8qIGNsZWFyIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgX2thcmF0c3ViYV9yZWModywgYiwgYSttLCB3K2x0LCBsYiwgbGEtbSk7IC8qIGIqYWggKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsgIC8qIHNwYWNlIG5lZWRlZCBmb3IgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsgICAgICAvKiBjbGVhciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIF9rYXJhdHN1YmFfcmVjKHcsIGErbSwgYiwgdytsdCwgbGEtbSwgbGIpOyAvKiBhaCpiICovCisgICAgICAgIH0KKyAgICAgICAgX21wZF9iYXNlYWRkdG8oYyttLCB3LCAobGEtbSkrbGIpOyAgICAgIC8qIGFkZCBhaCpiKkIqKm0gKi8KKworICAgICAgICBsdCA9IG0gKyBtICsgMTsgICAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHRoZSByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgIF9rYXJhdHN1YmFfcmVjKHcsIGEsIGIsIHcrbHQsIG0sIGxiKTsgIC8qIGFsKmIgKi8KKyAgICAgICAgX21wZF9iYXNlYWRkdG8oYywgdywgbStsYik7ICAgIC8qIGFkZCBhbCpiICovCisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIGxhID49IGxiID4gbSAqLworICAgIG1lbWNweSh3LCBhLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3LCBhK20sIGxhLW0pOworCisgICAgbWVtY3B5KHcrKG0rMSksIGIsIG0gKiBzaXplb2YgKncpOworICAgIHdbbSsxK21dID0gMDsKKyAgICBfbXBkX2Jhc2VhZGR0byh3KyhtKzEpLCBiK20sIGxiLW0pOworCisgICAgX2thcmF0c3ViYV9yZWMoYyttLCB3LCB3KyhtKzEpLCB3KzIqKG0rMSksIG0rMSwgbSsxKTsKKworICAgIGx0ID0gKGxhLW0pICsgKGxhLW0pICsgMTsKKyAgICBtcGRfdWludF96ZXJvKHcsIGx0KTsKKworICAgIF9rYXJhdHN1YmFfcmVjKHcsIGErbSwgYittLCB3K2x0LCBsYS1tLCBsYi1tKTsKKworICAgIF9tcGRfYmFzZWFkZHRvKGMrMiptLCB3LCAobGEtbSkgKyAobGItbSkpOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCAobGEtbSkgKyAobGItbSkpOworCisgICAgbHQgPSBtICsgbSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBfa2FyYXRzdWJhX3JlYyh3LCBhLCBiLCB3K2x0LCBtLCBtKTsKKyAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK20pOworICAgIF9tcGRfYmFzZXN1YmZyb20oYyttLCB3LCBtK20pOworCisgICAgcmV0dXJuOworfQorCisvKgorICogTXVsdGlwbHkgdSBhbmQgdiwgdXNpbmcgS2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uLiBSZXR1cm5zIGEgcG9pbnRlcgorICogdG8gdGhlIHJlc3VsdCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZSAobWFsbG9jIGVycm9yKS4KKyAqIENvbmRpdGlvbnM6IHVsZW4gPj0gdmxlbiwgdWxlbiA+PSA0CisgKi8KK21wZF91aW50X3QgKgorX21wZF9rbXVsKGNvbnN0IG1wZF91aW50X3QgKnUsIGNvbnN0IG1wZF91aW50X3QgKnYsCisgICAgICAgICAgbXBkX3NpemVfdCB1bGVuLCBtcGRfc2l6ZV90IHZsZW4sCisgICAgICAgICAgbXBkX3NpemVfdCAqcnNpemUpCit7CisgICAgbXBkX3VpbnRfdCAqcmVzdWx0ID0gTlVMTCwgKncgPSBOVUxMOworICAgIG1wZF9zaXplX3QgbTsKKworICAgIGFzc2VydCh1bGVuID49IDQpOworICAgIGFzc2VydCh1bGVuID49IHZsZW4pOworCisgICAgKnJzaXplID0gX2ttdWxfcmVzdWx0c2l6ZSh1bGVuLCB2bGVuKTsKKyAgICBpZiAoKHJlc3VsdCA9IG1wZF9jYWxsb2MoKnJzaXplLCBzaXplb2YgKnJlc3VsdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbSA9IF9rbXVsX3dvcmtzaXplKHVsZW4sIE1QRF9LQVJBVFNVQkFfQkFTRUNBU0UpOworICAgIGlmIChtICYmICgodyA9IG1wZF9jYWxsb2MobSwgc2l6ZW9mICp3KSkgPT0gTlVMTCkpIHsKKyAgICAgICAgbXBkX2ZyZWUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgX2thcmF0c3ViYV9yZWMocmVzdWx0LCB1LCB2LCB3LCB1bGVuLCB2bGVuKTsKKworCisgICAgaWYgKHcpIG1wZF9mcmVlKHcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyoKKyAqIERldGVybWluZSB0aGUgbWluaW11bSBsZW5ndGggZm9yIHRoZSBudW1iZXIgdGhlb3JldGljIHRyYW5zZm9ybS4gVmFsaWQKKyAqIHRyYW5zZm9ybSBsZW5ndGhzIGFyZSAyKipuIG9yIDMqMioqbiwgd2hlcmUgMioqbiA8PSBNUERfTUFYVFJBTlNGT1JNXzJOLgorICogVGhlIGZ1bmN0aW9uIGZpbmRzIHRoZSBzaG9ydGVzdCBsZW5ndGggbSBzdWNoIHRoYXQgcnNpemUgPD0gbS4KKyAqLworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CitfbXBkX2dldF90cmFuc2Zvcm1fbGVuKG1wZF9zaXplX3QgcnNpemUpCit7CisgICAgbXBkX3NpemVfdCBsb2cycnNpemU7CisgICAgbXBkX3NpemVfdCB4LCBzdGVwOworCisgICAgYXNzZXJ0KHJzaXplID49IDQpOworICAgIGxvZzJyc2l6ZSA9IG1wZF9ic3IocnNpemUpOworCisgICAgaWYgKHJzaXplIDw9IDEwMjQpIHsKKyAgICAgICAgLyogMioqbiBpcyBmYXN0ZXIgaW4gdGhpcyByYW5nZS4gKi8KKyAgICAgICAgeCA9ICgobXBkX3NpemVfdCkxKTw8bG9nMnJzaXplOworICAgICAgICByZXR1cm4gKHJzaXplID09IHgpID8geCA6IHg8PDE7CisgICAgfQorICAgIGVsc2UgaWYgKHJzaXplIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4pIHsKKyAgICAgICAgeCA9ICgobXBkX3NpemVfdCkxKTw8bG9nMnJzaXplOworICAgICAgICBpZiAocnNpemUgPT0geCkgcmV0dXJuIHg7CisgICAgICAgIHN0ZXAgPSB4Pj4xOworICAgICAgICB4ICs9IHN0ZXA7CisgICAgICAgIHJldHVybiAocnNpemUgPD0geCkgPyB4IDogeCArIHN0ZXA7CisgICAgfQorICAgIGVsc2UgaWYgKHJzaXplIDw9IE1QRF9NQVhUUkFOU0ZPUk1fMk4rTVBEX01BWFRSQU5TRk9STV8yTi8yKSB7CisgICAgICAgIHJldHVybiBNUERfTUFYVFJBTlNGT1JNXzJOK01QRF9NQVhUUkFOU0ZPUk1fMk4vMjsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKSB7CisgICAgICAgIHJldHVybiAzKk1QRF9NQVhUUkFOU0ZPUk1fMk47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gTVBEX1NJWkVfTUFYOworICAgIH0KK30KKworI2lmZGVmIFBQUk8KKyNpZm5kZWYgX01TQ19WRVIKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgc2hvcnQKK19tcGRfZ2V0X2NvbnRyb2w4Nyh2b2lkKQoreworICAgIHVuc2lnbmVkIHNob3J0IGN3OworCisgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJmbnN0Y3cgJTAiIDogIj1tIiAoY3cpKTsKKyAgICByZXR1cm4gY3c7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9zZXRfY29udHJvbDg3KHVuc2lnbmVkIHNob3J0IGN3KQoreworICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgiZmxkY3cgJTAiIDogOiAibSIgKGN3KSk7Cit9CisjZW5kaWYKKwordW5zaWduZWQgaW50CittcGRfc2V0X2ZlbnYodm9pZCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgY3c7CisjaWZkZWYgX01TQ19WRVIKKyAgICB1bnNpZ25lZCBpbnQgZmxhZ3MgPQorICAgICAgICBfRU1fSU5WQUxJRHxfRU1fREVOT1JNQUx8X0VNX1pFUk9ESVZJREV8X0VNX09WRVJGTE9XfAorICAgICAgICBfRU1fVU5ERVJGTE9XfF9FTV9JTkVYQUNUfF9SQ19DSE9QfF9QQ182NDsKKyAgICB1bnNpZ25lZCBpbnQgbWFzayA9IF9NQ1dfRU18X01DV19SQ3xfTUNXX1BDOworICAgIHVuc2lnbmVkIGludCBkdW1teTsKKworICAgIF9fY29udHJvbDg3XzIoMCwgMCwgJmN3LCBOVUxMKTsKKyAgICBfX2NvbnRyb2w4N18yKGZsYWdzLCBtYXNrLCAmZHVtbXksIE5VTEwpOworI2Vsc2UKKyAgICBjdyA9IF9tcGRfZ2V0X2NvbnRyb2w4NygpOworICAgIF9tcGRfc2V0X2NvbnRyb2w4Nyhjd3wweEYzRik7CisjZW5kaWYKKyAgICByZXR1cm4gY3c7Cit9CisKK3ZvaWQKK21wZF9yZXN0b3JlX2ZlbnYodW5zaWduZWQgaW50IGN3KQoreworI2lmZGVmIF9NU0NfVkVSCisgICAgdW5zaWduZWQgaW50IG1hc2sgPSBfTUNXX0VNfF9NQ1dfUkN8X01DV19QQzsKKyAgICB1bnNpZ25lZCBpbnQgZHVtbXk7CisKKyAgICBfX2NvbnRyb2w4N18yKGN3LCBtYXNrLCAmZHVtbXksIE5VTEwpOworI2Vsc2UKKyAgICBfbXBkX3NldF9jb250cm9sODcoKHVuc2lnbmVkIHNob3J0KWN3KTsKKyNlbmRpZgorfQorI2VuZGlmIC8qIFBQUk8gKi8KKworLyoKKyAqIE11bHRpcGx5IHUgYW5kIHYsIHVzaW5nIHRoZSBmYXN0IG51bWJlciB0aGVvcmV0aWMgdHJhbnNmb3JtLiBSZXR1cm5zCisgKiBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZSAobWFsbG9jIGVycm9yKS4KKyAqLworbXBkX3VpbnRfdCAqCitfbXBkX2ZudG11bChjb25zdCBtcGRfdWludF90ICp1LCBjb25zdCBtcGRfdWludF90ICp2LAorICAgICAgICAgICAgbXBkX3NpemVfdCB1bGVuLCBtcGRfc2l6ZV90IHZsZW4sCisgICAgICAgICAgICBtcGRfc2l6ZV90ICpyc2l6ZSkKK3sKKyAgICBtcGRfdWludF90ICpjMSA9IE5VTEwsICpjMiA9IE5VTEwsICpjMyA9IE5VTEwsICp2dG1wID0gTlVMTDsKKyAgICBtcGRfc2l6ZV90IG47CisKKyNpZmRlZiBQUFJPCisgICAgdW5zaWduZWQgaW50IGN3OworICAgIGN3ID0gbXBkX3NldF9mZW52KCk7CisjZW5kaWYKKworICAgICpyc2l6ZSA9IGFkZF9zaXplX3QodWxlbiwgdmxlbik7CisgICAgaWYgKChuID0gX21wZF9nZXRfdHJhbnNmb3JtX2xlbigqcnNpemUpKSA9PSBNUERfU0laRV9NQVgpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorCisgICAgaWYgKChjMSA9IG1wZF9jYWxsb2Mobiwgc2l6ZW9mICpjMSkpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIGlmICgoYzIgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqYzIpKSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgIH0KKyAgICBpZiAoKGMzID0gbXBkX2NhbGxvYyhuLCBzaXplb2YgKmMzKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKyAgICBtZW1jcHkoYzEsIHUsIHVsZW4gKiAoc2l6ZW9mICpjMSkpOworICAgIG1lbWNweShjMiwgdSwgdWxlbiAqIChzaXplb2YgKmMyKSk7CisgICAgbWVtY3B5KGMzLCB1LCB1bGVuICogKHNpemVvZiAqYzMpKTsKKworICAgIGlmICh1ID09IHYpIHsKKyAgICAgICAgaWYgKCFmbnRfYXV0b2NvbnZvbHV0ZShjMSwgbiwgUDEpIHx8CisgICAgICAgICAgICAhZm50X2F1dG9jb252b2x1dGUoYzIsIG4sIFAyKSB8fAorICAgICAgICAgICAgIWZudF9hdXRvY29udm9sdXRlKGMzLCBuLCBQMykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoKHZ0bXAgPSBtcGRfY2FsbG9jKG4sIHNpemVvZiAqdnRtcCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIGlmICghZm50X2NvbnZvbHV0ZShjMSwgdnRtcCwgbiwgUDEpKSB7CisgICAgICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KHZ0bXAsIHYsIHZsZW4gKiAoc2l6ZW9mICp2dG1wKSk7CisgICAgICAgIG1wZF91aW50X3plcm8odnRtcCt2bGVuLCBuLXZsZW4pOworICAgICAgICBpZiAoIWZudF9jb252b2x1dGUoYzIsIHZ0bXAsIG4sIFAyKSkgeworICAgICAgICAgICAgbXBkX2ZyZWUodnRtcCk7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSh2dG1wLCB2LCB2bGVuICogKHNpemVvZiAqdnRtcCkpOworICAgICAgICBtcGRfdWludF96ZXJvKHZ0bXArdmxlbiwgbi12bGVuKTsKKyAgICAgICAgaWYgKCFmbnRfY29udm9sdXRlKGMzLCB2dG1wLCBuLCBQMykpIHsKKyAgICAgICAgICAgIG1wZF9mcmVlKHZ0bXApOworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBtcGRfZnJlZSh2dG1wKTsKKyAgICB9CisKKyAgICBjcnQzKGMxLCBjMiwgYzMsICpyc2l6ZSk7CisKK291dDoKKyNpZmRlZiBQUFJPCisgICAgbXBkX3Jlc3RvcmVfZmVudihjdyk7CisjZW5kaWYKKyAgICBpZiAoYzIpIG1wZF9mcmVlKGMyKTsKKyAgICBpZiAoYzMpIG1wZF9mcmVlKGMzKTsKKyAgICByZXR1cm4gYzE7CisKK21hbGxvY19lcnJvcjoKKyAgICBpZiAoYzEpIG1wZF9mcmVlKGMxKTsKKyAgICBjMSA9IE5VTEw7CisgICAgZ290byBvdXQ7Cit9CisKKworLyoKKyAqIEthcmF0c3ViYSBtdWx0aXBsaWNhdGlvbiB3aXRoIEZOVC9iYXNlbXVsIGFzIHRoZSBiYXNlIGNhc2UuCisgKi8KK3N0YXRpYyBpbnQKK19rYXJhdHN1YmFfcmVjX2ZudChtcGRfdWludF90ICpjLCBjb25zdCBtcGRfdWludF90ICphLCBjb25zdCBtcGRfdWludF90ICpiLAorICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKncsIG1wZF9zaXplX3QgbGEsIG1wZF9zaXplX3QgbGIpCit7CisgICAgbXBkX3NpemVfdCBtLCBsdDsKKworICAgIGFzc2VydChsYSA+PSBsYiAmJiBsYiA+IDApOworICAgIGFzc2VydChsYSA8PSAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpIHx8IHcgIT0gTlVMTCk7CisKKyAgICBpZiAobGEgPD0gMyooTVBEX01BWFRSQU5TRk9STV8yTi8yKSkgeworCisgICAgICAgIGlmIChsYiA8PSAxOTIpIHsKKyAgICAgICAgICAgIF9tcGRfYmFzZW11bChjLCBiLCBhLCBsYiwgbGEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbXBkX3VpbnRfdCAqcmVzdWx0OworICAgICAgICAgICAgbXBkX3NpemVfdCBkdW1teTsKKworICAgICAgICAgICAgaWYgKChyZXN1bHQgPSBfbXBkX2ZudG11bChhLCBiLCBsYSwgbGIsICZkdW1teSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShjLCByZXN1bHQsIChsYStsYikgKiAoc2l6ZW9mICpyZXN1bHQpKTsKKyAgICAgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgbSA9IChsYSsxKS8yOyAgLyogY2VpbChsYS8yKSAqLworCisgICAgLyogbGIgPD0gbSA8IGxhICovCisgICAgaWYgKGxiIDw9IG0pIHsKKworICAgICAgICAvKiBsYiBjYW4gbm93IGJlIGxhcmdlciB0aGFuIGxhLW0gKi8KKyAgICAgICAgaWYgKGxiID4gbGEtbSkgeworICAgICAgICAgICAgbHQgPSBsYiArIGxiICsgMTsgICAgICAgLyogc3BhY2UgbmVlZGVkIGZvciByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgICAgIG1wZF91aW50X3plcm8odywgbHQpOyAgIC8qIGNsZWFyIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYiwgYSttLCB3K2x0LCBsYiwgbGEtbSkpIHsgLyogYiphaCAqLworICAgICAgICAgICAgICAgIHJldHVybiAwOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsdCA9IChsYS1tKSArIChsYS1tKSArIDE7ICAvKiBzcGFjZSBuZWVkZWQgZm9yIHJlc3VsdCBhcnJheSAqLworICAgICAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgICAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhK20sIGIsIHcrbHQsIGxhLW0sIGxiKSkgeyAvKiBhaCpiICovCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjK20sIHcsIChsYS1tKStsYik7IC8qIGFkZCBhaCpiKkIqKm0gKi8KKworICAgICAgICBsdCA9IG0gKyBtICsgMTsgICAgICAgICAvKiBzcGFjZSBuZWVkZWQgZm9yIHRoZSByZXN1bHQgYXJyYXkgKi8KKyAgICAgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7ICAgLyogY2xlYXIgcmVzdWx0IGFycmF5ICovCisgICAgICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KHcsIGEsIGIsIHcrbHQsIG0sIGxiKSkgeyAgLyogYWwqYiAqLworICAgICAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgfQorICAgICAgICBfbXBkX2Jhc2VhZGR0byhjLCB3LCBtK2xiKTsgICAgICAgLyogYWRkIGFsKmIgKi8KKworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKiBsYSA+PSBsYiA+IG0gKi8KKyAgICBtZW1jcHkodywgYSwgbSAqIHNpemVvZiAqdyk7CisgICAgd1ttXSA9IDA7CisgICAgX21wZF9iYXNlYWRkdG8odywgYSttLCBsYS1tKTsKKworICAgIG1lbWNweSh3KyhtKzEpLCBiLCBtICogc2l6ZW9mICp3KTsKKyAgICB3W20rMSttXSA9IDA7CisgICAgX21wZF9iYXNlYWRkdG8odysobSsxKSwgYittLCBsYi1tKTsKKworICAgIGlmICghX2thcmF0c3ViYV9yZWNfZm50KGMrbSwgdywgdysobSsxKSwgdysyKihtKzEpLCBtKzEsIG0rMSkpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBsdCA9IChsYS1tKSArIChsYS1tKSArIDE7CisgICAgbXBkX3VpbnRfemVybyh3LCBsdCk7CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudCh3LCBhK20sIGIrbSwgdytsdCwgbGEtbSwgbGItbSkpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBfbXBkX2Jhc2VhZGR0byhjKzIqbSwgdywgKGxhLW0pICsgKGxiLW0pKTsKKyAgICBfbXBkX2Jhc2VzdWJmcm9tKGMrbSwgdywgKGxhLW0pICsgKGxiLW0pKTsKKworICAgIGx0ID0gbSArIG0gKyAxOworICAgIG1wZF91aW50X3plcm8odywgbHQpOworCisgICAgaWYgKCFfa2FyYXRzdWJhX3JlY19mbnQodywgYSwgYiwgdytsdCwgbSwgbSkpIHsKKyAgICAgICAgcmV0dXJuIDA7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisgICAgX21wZF9iYXNlYWRkdG8oYywgdywgbSttKTsKKyAgICBfbXBkX2Jhc2VzdWJmcm9tKGMrbSwgdywgbSttKTsKKworICAgIHJldHVybiAxOworfQorCisvKgorICogTXVsdGlwbHkgdSBhbmQgdiwgdXNpbmcgS2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHdpdGggdGhlIEZOVCBhcyB0aGUKKyAqIGJhc2UgY2FzZS4gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIHJlc3VsdCBvciBOVUxMIGluIGNhc2Ugb2YgZmFpbHVyZQorICogKG1hbGxvYyBlcnJvcikuIENvbmRpdGlvbnM6IHVsZW4gPj0gdmxlbiwgdWxlbiA+PSA0LgorICovCittcGRfdWludF90ICoKK19tcGRfa211bF9mbnQoY29uc3QgbXBkX3VpbnRfdCAqdSwgY29uc3QgbXBkX3VpbnRfdCAqdiwKKyAgICAgICAgICAgICAgbXBkX3NpemVfdCB1bGVuLCBtcGRfc2l6ZV90IHZsZW4sCisgICAgICAgICAgICAgIG1wZF9zaXplX3QgKnJzaXplKQoreworICAgIG1wZF91aW50X3QgKnJlc3VsdCA9IE5VTEwsICp3ID0gTlVMTDsKKyAgICBtcGRfc2l6ZV90IG07CisKKyAgICBhc3NlcnQodWxlbiA+PSA0KTsKKyAgICBhc3NlcnQodWxlbiA+PSB2bGVuKTsKKworICAgICpyc2l6ZSA9IF9rbXVsX3Jlc3VsdHNpemUodWxlbiwgdmxlbik7CisgICAgaWYgKChyZXN1bHQgPSBtcGRfY2FsbG9jKCpyc2l6ZSwgc2l6ZW9mICpyZXN1bHQpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG0gPSBfa211bF93b3Jrc2l6ZSh1bGVuLCAzKihNUERfTUFYVFJBTlNGT1JNXzJOLzIpKTsKKyAgICBpZiAobSAmJiAoKHcgPSBtcGRfY2FsbG9jKG0sIHNpemVvZiAqdykpID09IE5VTEwpKSB7CisgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICBpZiAoIV9rYXJhdHN1YmFfcmVjX2ZudChyZXN1bHQsIHUsIHYsIHcsIHVsZW4sIHZsZW4pKSB7CisgICAgICAgIG1wZF9mcmVlKHJlc3VsdCk7CisgICAgICAgIHJlc3VsdCA9IE5VTEw7CisgICAgfQorCisKKyAgICBpZiAodykgbXBkX2ZyZWUodyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisvKiBEZWFsIHdpdGggdGhlIHNwZWNpYWwgY2FzZXMgb2YgbXVsdGlwbHlpbmcgaW5maW5pdGllcy4gKi8KK3N0YXRpYyB2b2lkCitfbXBkX3FtdWxfaW5mKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzaW5maW5pdGUoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8oYikpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgbXBkX3NpZ24oYSlebXBkX3NpZ24oYiksIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYXNzZXJ0KG1wZF9pc2luZmluaXRlKGIpKTsKKyAgICBpZiAobXBkX2lzemVybyhhKSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpLCBNUERfSU5GKTsKKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbjogTXVsdGlwbHkgYSBhbmQgYi4gX21wZF9xbXVsIGRlYWxzIHdpdGggc3BlY2lhbHMgYnV0CisgKiBkb2VzIE5PVCBmaW5hbGl6ZSB0aGUgcmVzdWx0LiBUaGlzIGlzIGZvciB1c2UgaW4gbXBkX2ZtYSgpLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcW11bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF90ICpiaWcgPSAobXBkX3QgKilhLCAqc21hbGwgPSAobXBkX3QgKiliOworICAgIG1wZF91aW50X3QgKnJkYXRhID0gTlVMTDsKKyAgICBtcGRfdWludF90IHJidWZbTVBEX01JTkFMTE9DX01BWF07CisgICAgbXBkX3NpemVfdCByc2l6ZSwgaTsKKworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xbXVsX2luZihyZXN1bHQsIGEsIGIsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoc21hbGwtPmxlbiA+IGJpZy0+bGVuKSB7CisgICAgICAgIF9tcGRfcHRyc3dhcCgmYmlnLCAmc21hbGwpOworICAgIH0KKworICAgIHJzaXplID0gYmlnLT5sZW4gKyBzbWFsbC0+bGVuOworCisgICAgaWYgKGJpZy0+bGVuID09IDEpIHsKKyAgICAgICAgX21wZF9zaW5nbGVtdWwocmVzdWx0LT5kYXRhLCBiaWctPmRhdGFbMF0sIHNtYWxsLT5kYXRhWzBdKTsKKyAgICAgICAgZ290byBmaW5pc2g7CisgICAgfQorICAgIGlmIChyc2l6ZSA8PSAobXBkX3NpemVfdClNUERfTUlOQUxMT0NfTUFYKSB7CisgICAgICAgIGlmIChiaWctPmxlbiA9PSAyKSB7CisgICAgICAgICAgICBfbXBkX211bF8yX2xlMihyYnVmLCBiaWctPmRhdGEsIHNtYWxsLT5kYXRhLCBzbWFsbC0+bGVuKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF91aW50X3plcm8ocmJ1ZiwgcnNpemUpOworICAgICAgICAgICAgaWYgKHNtYWxsLT5sZW4gPT0gMSkgeworICAgICAgICAgICAgICAgIF9tcGRfc2hvcnRtdWwocmJ1ZiwgYmlnLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmRhdGFbMF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX21wZF9iYXNlbXVsKHJidWYsIHNtYWxsLT5kYXRhLCBiaWctPmRhdGEsIHNtYWxsLT5sZW4sIGJpZy0+bGVuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgcnNpemUsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmb3IoaSA9IDA7IGkgPCByc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQtPmRhdGFbaV0gPSByYnVmW2ldOworICAgICAgICB9CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworCisgICAgaWYgKHNtYWxsLT5sZW4gPD0gMjU2KSB7CisgICAgICAgIHJkYXRhID0gbXBkX2NhbGxvYyhyc2l6ZSwgc2l6ZW9mICpyZGF0YSk7CisgICAgICAgIGlmIChyZGF0YSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoc21hbGwtPmxlbiA9PSAxKSB7CisgICAgICAgICAgICAgICAgX21wZF9zaG9ydG11bChyZGF0YSwgYmlnLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmRhdGFbMF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX21wZF9iYXNlbXVsKHJkYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5kYXRhLCBzbWFsbC0+bGVuLCBiaWctPmxlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gMTAyNCkgeworICAgICAgICByZGF0YSA9IF9tcGRfa211bChiaWctPmRhdGEsIHNtYWxsLT5kYXRhLCBiaWctPmxlbiwgc21hbGwtPmxlbiwgJnJzaXplKTsKKyAgICB9CisgICAgZWxzZSBpZiAocnNpemUgPD0gMypNUERfTUFYVFJBTlNGT1JNXzJOKSB7CisgICAgICAgIHJkYXRhID0gX21wZF9mbnRtdWwoYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5sZW4sICZyc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZGF0YSA9IF9tcGRfa211bF9mbnQoYmlnLT5kYXRhLCBzbWFsbC0+ZGF0YSwgYmlnLT5sZW4sIHNtYWxsLT5sZW4sICZyc2l6ZSk7CisgICAgfQorCisgICAgaWYgKHJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcGRfaXNkeW5hbWljX2RhdGEocmVzdWx0KSkgeworICAgICAgICBtcGRfZnJlZShyZXN1bHQtPmRhdGEpOworICAgIH0KKyAgICByZXN1bHQtPmRhdGEgPSByZGF0YTsKKyAgICByZXN1bHQtPmFsbG9jID0gcnNpemU7CisgICAgbXBkX3NldF9keW5hbWljX2RhdGEocmVzdWx0KTsKKworCitmaW5pc2g6CisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIG1wZF9zaWduKGEpXm1wZF9zaWduKGIpKTsKKyAgICByZXN1bHQtPmV4cCA9IGJpZy0+ZXhwICsgc21hbGwtPmV4cDsKKyAgICByZXN1bHQtPmxlbiA9IF9tcGRfcmVhbF9zaXplKHJlc3VsdC0+ZGF0YSwgcnNpemUpOworICAgIC8qIHJlc2l6ZSB0byBzbWFsbGVyIGNhbm5vdCBmYWlsICovCisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfc2V0ZGlnaXRzKHJlc3VsdCk7Cit9CisKKy8qIE11bHRpcGx5IGEgYW5kIGIuICovCit2b2lkCittcGRfcW11bChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgX21wZF9xbXVsKHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qIE11bHRpcGx5IGEgYW5kIGIuIFNldCBOYU4vSW52YWxpZF9vcGVyYXRpb24gaWYgdGhlIHJlc3VsdCBpcyBpbmV4YWN0LiAqLworc3RhdGljIHZvaWQKK19tcGRfcW11bF9leGFjdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworCisgICAgbXBkX3FtdWwocmVzdWx0LCBhLCBiLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9IHdvcmtzdGF0dXM7CisgICAgaWYgKHdvcmtzdGF0dXMgJiAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWR8TVBEX0NsYW1wZWQpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qIE11bHRpcGx5IGRlY2ltYWwgYW5kIG1wZF9zc2l6ZV90LiAqLwordm9pZAorbXBkX3FtdWxfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsCisgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF9zc2l6ZSgmYmIsIGIsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgIG1wZF9xbXVsKHJlc3VsdCwgYSwgJmJiLCBjdHgsIHN0YXR1cyk7CisgICAgbXBkX2RlbCgmYmIpOworfQorCisvKiBNdWx0aXBseSBkZWNpbWFsIGFuZCBtcGRfdWludF90LiAqLwordm9pZAorbXBkX3FtdWxfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKGJiLDAsMCwwLDApOworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIG1wZF9xc3NldF91aW50KCZiYiwgYiwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FtdWwocmVzdWx0LCBhLCAmYmIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZiYik7Cit9CisKK3ZvaWQKK21wZF9xbXVsX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcW11bF9zc2l6ZShyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FtdWxfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfcW11bF91aW50KHJlc3VsdCwgYSwgYiwgY3R4LCBzdGF0dXMpOworfQorCisjaWZkZWYgQ09ORklHXzY0Cit2b2lkCittcGRfcW11bF9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FtdWxfc3NpemUocmVzdWx0LCBhLCBiLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xbXVsX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwKKyAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3FtdWxfdWludChyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKTsKK30KKyNlbmRpZgorCisvKiBMaWtlIHRoZSBtaW51cyBvcGVyYXRvci4gKi8KK3ZvaWQKK21wZF9xbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpICYmIGN0eC0+cm91bmQgIT0gTVBEX1JPVU5EX0ZMT09SKSB7CisgICAgICAgIG1wZF9xY29weV9hYnMocmVzdWx0LCBhLCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3Fjb3B5X25lZ2F0ZShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogTGlrZSB0aGUgcGx1cyBvcGVyYXRvci4gKi8KK3ZvaWQKK21wZF9xcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhhKSAmJiBjdHgtPnJvdW5kICE9IE1QRF9ST1VORF9GTE9PUikgeworICAgICAgICBtcGRfcWNvcHlfYWJzKHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKK30KKworLyogVGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG9wZXJhbmQuICovCit2b2lkCittcGRfcW5leHRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX0NPTlNUKHRpbnksTVBEX1BPUyxtcGRfZXRpbnkoY3R4KS0xLDEsMSwxLDEpOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFuKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBhc3NlcnQobXBkX2lzaW5maW5pdGUoYSkpOworICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfY2xlYXJfZmxhZ3MocmVzdWx0KTsKKyAgICAgICAgICAgIG1wZF9xbWF4Y29lZmYocmVzdWx0LCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICBpZiAobXBkX2lzbmFuKHJlc3VsdCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQtPmV4cCA9IG1wZF9ldG9wKGN0eCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfd29ya2NvbnRleHQoJndvcmtjdHgsIGN0eCk7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9GTE9PUjsKKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIGlmICh3b3JrY3R4LnN0YXR1cyYoTVBEX0luZXhhY3R8TVBEX0Vycm9ycykpIHsKKyAgICAgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3b3JrY3R4LnN0YXR1cyA9IDA7CisgICAgbXBkX3FzdWIocmVzdWx0LCBhLCAmdGlueSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7Cit9CisKKy8qIFRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciB0aGF0IGlzIGxhcmdlciB0aGFuIHRoZSBvcGVyYW5kLiAqLwordm9pZAorbXBkX3FuZXh0X3BsdXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfQ09OU1QodGlueSxNUERfUE9TLG1wZF9ldGlueShjdHgpLTEsMSwxLDEsMSk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGFzc2VydChtcGRfaXNpbmZpbml0ZShhKSk7CisgICAgICAgIGlmIChtcGRfaXNwb3NpdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9jbGVhcl9mbGFncyhyZXN1bHQpOworICAgICAgICAgICAgbXBkX3FtYXhjb2VmZihyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChtcGRfaXNuYW4ocmVzdWx0KSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBNUERfTkVHKTsKKyAgICAgICAgICAgIHJlc3VsdC0+ZXhwID0gbXBkX2V0b3AoY3R4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3dvcmtjb250ZXh0KCZ3b3JrY3R4LCBjdHgpOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfQ0VJTElORzsKKworICAgIGlmICghbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIGlmICh3b3JrY3R4LnN0YXR1cyAmIChNUERfSW5leGFjdHxNUERfRXJyb3JzKSkgeworICAgICAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtjdHguc3RhdHVzID0gMDsKKyAgICBtcGRfcWFkZChyZXN1bHQsIGEsICZ0aW55LCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKK30KKworLyoKKyAqIFRoZSBudW1iZXIgY2xvc2VzdCB0byB0aGUgZmlyc3Qgb3BlcmFuZCB0aGF0IGlzIGluIHRoZSBkaXJlY3Rpb24gdG93YXJkcworICogdGhlIHNlY29uZCBvcGVyYW5kLgorICovCit2b2lkCittcGRfcW5leHRfdG93YXJkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwKKyAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIGludCBjOworCisgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYyA9IF9tcGRfY21wKGEsIGIpOworICAgIGlmIChjID09IDApIHsKKyAgICAgICAgbXBkX3Fjb3B5X3NpZ24ocmVzdWx0LCBhLCBiLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGMgPCAwKSB7CisgICAgICAgIG1wZF9xbmV4dF9wbHVzKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbXBkX3FuZXh0X21pbnVzKHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtcGRfaXNpbmZpbml0ZShyZXN1bHQpKSB7CisgICAgICAgICpzdGF0dXMgfD0gKE1QRF9PdmVyZmxvd3xNUERfUm91bmRlZHxNUERfSW5leGFjdCk7CisgICAgfQorICAgIGVsc2UgaWYgKG1wZF9hZGpleHAocmVzdWx0KSA8IGN0eC0+ZW1pbikgeworICAgICAgICAqc3RhdHVzIHw9IChNUERfVW5kZXJmbG93fE1QRF9TdWJub3JtYWx8TVBEX1JvdW5kZWR8TVBEX0luZXhhY3QpOworICAgICAgICBpZiAobXBkX2lzemVybyhyZXN1bHQpKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9DbGFtcGVkOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogSW50ZXJuYWwgZnVuY3Rpb246IEludGVnZXIgcG93ZXIgd2l0aCBtcGRfdWludF90IGV4cG9uZW50LiBUaGUgZnVuY3Rpb24KKyAqIGNhbiBmYWlsIHdpdGggTVBEX01hbGxvY19lcnJvci4KKyAqCisgKiBUaGUgZXJyb3IgaXMgZXF1YWwgdG8gdGhlIGVycm9yIGluY3VycmVkIGluIGstMSBtdWx0aXBsaWNhdGlvbnMuIEFzc3VtaW5nCisgKiB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSByZWxhdGl2ZSBlcnJvciBpbiBlYWNoIG9wZXJhdGlvbjoKKyAqCisgKiAgIGFicyhlcnIpID0gNSAqIDEwKiotcHJlYworICogICByZXN1bHQgPSB4KiprICogKDEgKyBlcnIpKiooay0xKQorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcXBvd191aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBtcGRfdWludF90IGV4cCwKKyAgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF91aW50X3QgbjsKKworICAgIGlmIChleHAgPT0gMCkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgMCk7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgcmV0dXJuOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBiYXNlLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBuID0gbXBkX2JpdHNbbXBkX2JzcihleHApXTsKKyAgICB3aGlsZSAobiA+Pj0gMSkgeworICAgICAgICBtcGRfcW11bChyZXN1bHQsIHJlc3VsdCwgcmVzdWx0LCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgaWYgKGV4cCAmIG4pIHsKKyAgICAgICAgICAgIG1wZF9xbXVsKHJlc3VsdCwgcmVzdWx0LCBiYXNlLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpIHx8CisgICAgICAgICAgICAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgJiYgKHdvcmtzdGF0dXMgJiBNUERfQ2xhbXBlZCkpKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCByZXN1bHRzaWduKTsKK30KKworLyoKKyAqIEludGVybmFsIGZ1bmN0aW9uOiBJbnRlZ2VyIHBvd2VyIHdpdGggbXBkX3QgZXhwb25lbnQsIHRiYXNlIGFuZCB0ZXhwCisgKiBhcmUgbW9kaWZpZWQhISBGdW5jdGlvbiBjYW4gZmFpbCB3aXRoIE1QRF9NYWxsb2NfZXJyb3IuCisgKgorICogVGhlIGVycm9yIGlzIGVxdWFsIHRvIHRoZSBlcnJvciBpbmN1cnJlZCBpbiBrIG11bHRpcGxpY2F0aW9ucy4gQXNzdW1pbmcKKyAqIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlIHJlbGF0aXZlIGVycm9yIGluIGVhY2ggb3BlcmF0aW9uOgorICoKKyAqICAgYWJzKGVycikgPSA1ICogMTAqKi1wcmVjCisgKiAgIHJlc3VsdCA9IHgqKmsgKiAoMSArIGVycikqKmsKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX3Fwb3dfbXBkKG1wZF90ICpyZXN1bHQsIG1wZF90ICp0YmFzZSwgbXBkX3QgKnRleHAsIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9jb250ZXh0X3QgbWF4Y3R4OworICAgIE1QRF9ORVdfQ09OU1QodHdvLDAsMCwxLDEsMSwyKTsKKworCisgICAgbXBkX21heGNvbnRleHQoJm1heGN0eCk7CisKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xY29weShyZXN1bHQsICZvbmUsIHN0YXR1cyk7CisKKyAgICB3aGlsZSAoIW1wZF9pc3plcm8odGV4cCkpIHsKKyAgICAgICAgaWYgKG1wZF9pc29kZCh0ZXhwKSkgeworICAgICAgICAgICAgbXBkX3FtdWwocmVzdWx0LCByZXN1bHQsIHRiYXNlLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gd29ya3N0YXR1czsKKyAgICAgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwKKyAgICAgICAgICAgICAgICAobXBkX2lzemVyb2NvZWZmKHJlc3VsdCkgJiYgKHdvcmtzdGF0dXMgJiBNUERfQ2xhbXBlZCkpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbXBkX3FtdWwodGJhc2UsIHRiYXNlLCB0YmFzZSwgY3R4LCAmd29ya3N0YXR1cyk7CisgICAgICAgIG1wZF9xZGl2aW50KHRleHAsIHRleHAsICZ0d28sICZtYXhjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc25hbih0YmFzZSkgfHwgbXBkX2lzbmFuKHRleHApKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCB3b3Jrc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgbXBkX3NldF9zaWduKHJlc3VsdCwgcmVzdWx0c2lnbik7Cit9CisKKy8qCisgKiBUaGUgcG93ZXIgZnVuY3Rpb24gZm9yIGludGVnZXIgZXhwb25lbnRzLiBSZWxhdGl2ZSBlcnJvciBfYmVmb3JlXyB0aGUKKyAqIGZpbmFsIHJvdW5kaW5nIHRvIHByZWM6CisgKiAgIGFicyhyZXN1bHQgLSBiYXNlKipleHApIDwgMC4xICogMTAqKi1wcmVjICogYWJzKGJhc2UqKmV4cCkKKyAqLworc3RhdGljIHZvaWQKK19tcGRfcXBvd19pbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsCisgICAgICAgICAgICAgIHVpbnQ4X3QgcmVzdWx0c2lnbiwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBNUERfTkVXX1NUQVRJQyh0YmFzZSwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0ZXhwLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IG47CisKKworICAgIG1wZF93b3JrY29udGV4dCgmd29ya2N0eCwgY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgKz0gKGV4cC0+ZGlnaXRzICsgZXhwLT5leHAgKyAyKTsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICB3b3JrY3R4LmNsYW1wID0gMDsKKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoZXhwKSkgeworICAgICAgICB3b3JrY3R4LnByZWMgKz0gMTsKKyAgICAgICAgbXBkX3FkaXYoJnRiYXNlLCAmb25lLCBiYXNlLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKCpzdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoIW1wZF9xY29weSgmdGJhc2UsIGJhc2UsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX05BTik7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG4gPSBtcGRfcWFic191aW50KGV4cCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBpZiAod29ya2N0eC5zdGF0dXMmTVBEX0ludmFsaWRfb3BlcmF0aW9uKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KCZ0ZXhwLCBleHAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgTVBEX1BPUywgTVBEX05BTik7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgICAgIGdvdG8gZmluaXNoOyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgIH0KKyAgICAgICAgX21wZF9xcG93X21wZChyZXN1bHQsICZ0YmFzZSwgJnRleHAsIHJlc3VsdHNpZ24sICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xcG93X3VpbnQocmVzdWx0LCAmdGJhc2UsIG4sIHJlc3VsdHNpZ24sICZ3b3JrY3R4LCBzdGF0dXMpOworICAgIH0KKworICAgIGlmIChtcGRfaXNpbmZpbml0ZShyZXN1bHQpKSB7CisgICAgICAgIC8qIGZvciBST1VORF9ET1dOLCBST1VORF9GTE9PUiwgZXRjLiAqLworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgTVBEX0VYUF9JTkYpOworICAgIH0KKworZmluaXNoOgorICAgIG1wZF9kZWwoJnRiYXNlKTsKKyAgICBtcGRfZGVsKCZ0ZXhwKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisvKiAKKyAqIElmIHRoZSBleHBvbmVudCBpcyBpbmZpbml0ZSBhbmQgYmFzZSBlcXVhbHMgb25lLCB0aGUgcmVzdWx0IGlzIG9uZQorICogd2l0aCBhIGNvZWZmaWNpZW50IG9mIGxlbmd0aCBwcmVjLiBPdGhlcndpc2UsIHJlc3VsdCBpcyB1bmRlZmluZWQuCisgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBjb21wYXJpc29uIGFnYWluc3Qgb25lLgorICovCitzdGF0aWMgaW50CitfcWNoZWNrX3Bvd19vbmVfaW5mKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBzaGlmdDsKKyAgICBpbnQgY21wOworCisgICAgaWYgKChjbXAgPSBfbXBkX2NtcChiYXNlLCAmb25lKSkgPT0gMCkgeworICAgICAgICBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICBtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICByZXN1bHQtPmV4cCA9IC1zaGlmdDsKKyAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHJlc3VsdHNpZ24pOworICAgICAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7CisgICAgfQorCisgICAgcmV0dXJuIGNtcDsKK30KKworLyoKKyAqIElmIGFicyhiYXNlKSBlcXVhbHMgb25lLCBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgcG93ZXIgb2Ygb25lIHJlc3VsdC4KKyAqIE90aGVyd2lzZSwgcmVzdWx0IGlzIHVuZGVmaW5lZC4gUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgY29tcGFyaXNvbgorICogYWdhaW5zdCAxLgorICoKKyAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdCBjaGVjayBmb3Igc3BlY2lhbHMuCisgKi8KK3N0YXRpYyBpbnQKK19xY2hlY2tfcG93X29uZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgICB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHVpbnQzMl90IHdvcmtzdGF0dXMgPSAwOworICAgIG1wZF9zc2l6ZV90IHNoaWZ0OworICAgIGludCBjbXA7CisKKyAgICBpZiAoKGNtcCA9IF9tcGRfY21wX2FicyhiYXNlLCAmb25lKSkgPT0gMCkgeworICAgICAgICBpZiAoX21wZF9pc2ludChleHApKSB7CisgICAgICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoZXhwKSkgeworICAgICAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIDEuMDAwKiozID0gMS4wMDAwMDAwMDAgKi8KKyAgICAgICAgICAgIG1wZF9xbXVsX3NzaXplKHJlc3VsdCwgZXhwLCAtYmFzZS0+ZXhwLCBjdHgsICZ3b3Jrc3RhdHVzKTsKKyAgICAgICAgICAgIGlmICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpIHsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9ICh3b3Jrc3RhdHVzJk1QRF9FcnJvcnMpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogZGlnaXRzLTEgYWZ0ZXIgZXhwb25lbnRpYXRpb24gKi8KKyAgICAgICAgICAgIHNoaWZ0ID0gbXBkX3FnZXRfc3NpemUocmVzdWx0LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICAvKiBzaGlmdCBpcyBNUERfU1NJWkVfTUFYIGlmIHJlc3VsdCBpcyB0b28gbGFyZ2UgKi8KKyAgICAgICAgICAgIGlmIChzaGlmdCA+IGN0eC0+cHJlYy0xKSB7CisgICAgICAgICAgICAgICAgc2hpZnQgPSBjdHgtPnByZWMtMTsKKyAgICAgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc3Bvc2l0aXZlKGJhc2UpKSB7CisgICAgICAgICAgICBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICAgICAgKnN0YXR1cyB8PSAoTVBEX0luZXhhY3R8TVBEX1JvdW5kZWQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIC0yOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQtPmV4cCA9IC1zaGlmdDsKKyAgICAgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHJlc3VsdHNpZ24pOworICAgIH0KKworICAgIHJldHVybiBjbXA7Cit9CisKKy8qCisgKiBEZXRlY3QgY2VydGFpbiBvdmVyL3VuZGVyZmxvdyBvZiB4Kip5LgorICogQUNMMiBwcm9vZjogcG93LWJvdW5kcy5saXNwLgorICoKKyAqICAgU3ltYm9sczoKKyAqCisgKiAgICAgZTogRVhQX0lORiBvciBFWFBfQ0xBTVAKKyAqICAgICB4OiBiYXNlCisgKiAgICAgeTogZXhwb25lbnQKKyAqCisgKiAgICAgb21lZ2EoZSkgPSBsb2cxMChhYnMoZSkpCisgKiAgICAgemV0YSh4KSAgPSBsb2cxMChhYnMobG9nMTAoeCkpKQorICogICAgIHRoZXRhKHkpID0gbG9nMTAoYWJzKHkpKQorICoKKyAqICAgVXBwZXIgYW5kIGxvd2VyIGJvdW5kczoKKyAqCisgKiAgICAgdWJfb21lZ2EoZSkgPSBjZWlsKGxvZzEwKGFicyhlKSkpCisgKiAgICAgbGJfdGhldGEoeSkgPSBmbG9vcihsb2cxMChhYnMoeSkpKQorICoKKyAqICAgICAgICAgICAgICAgICAgfCBmbG9vcihsb2cxMChmbG9vcihhYnMobG9nMTAoeCkpKSkpIGlmIHggPCAxLzEwIG9yIHggPj0gMTAKKyAqICAgICBsYl96ZXRhKHgpID0gfCBmbG9vcihsb2cxMChhYnMoeC0xKS8xMCkpIGlmIDEvMTAgPD0geCA8IDEKKyAqICAgICAgICAgICAgICAgICAgfCBmbG9vcihsb2cxMChhYnMoKHgtMSkvMTAwKSkpIGlmIDEgPCB4IDwgMTAKKyAqCisgKiAgIHViX29tZWdhKGUpIGFuZCBsYl90aGV0YSh5KSBhcmUgb2J2aW91c2x5IHVwcGVyIGFuZCBsb3dlciBib3VuZHMKKyAqICAgZm9yIG9tZWdhKGUpIGFuZCB0aGV0YSh5KS4KKyAqCisgKiAgIGxiX3pldGEgaXMgYSBsb3dlciBib3VuZCBmb3IgemV0YSh4KToKKyAqCisgKiAgICAgeCA8IDEvMTAgb3IgeCA+PSAxMDoKKyAqCisgKiAgICAgICBhYnMobG9nMTAoeCkpID49IDEsIHNvIHRoZSBvdXRlciBsb2cxMCBpcyB3ZWxsIGRlZmluZWQuIFNpbmNlIGxvZzEwCisgKiAgICAgICBpcyBzdHJpY3RseSBpbmNyZWFzaW5nLCB0aGUgZW5kIHJlc3VsdCBpcyBhIGxvd2VyIGJvdW5kLgorICoKKyAqICAgICAxLzEwIDw9IHggPCAxOgorICoKKyAqICAgICAgIFdlIHVzZTogbG9nMTAoeCkgPD0gKHgtMSkvbG9nKDEwKQorICogICAgICAgICAgICAgICBhYnMobG9nMTAoeCkpID49IGFicyh4LTEpL2xvZygxMCkKKyAqICAgICAgICAgICAgICAgYWJzKGxvZzEwKHgpKSA+PSBhYnMoeC0xKS8xMAorICoKKyAqICAgICAxIDwgeCA8IDEwOgorICoKKyAqICAgICAgIFdlIHVzZTogKHgtMSkvKHgqbG9nKDEwKSkgPCBsb2cxMCh4KQorICogICAgICAgICAgICAgICBhYnMoKHgtMSkvMTAwKSA8IGFicyhsb2cxMCh4KSkKKyAqCisgKiAgICAgICBYWFg6IGFicygoeC0xKS8xMCkgd291bGQgd29yaywgbmVlZCBBQ0wyIHByb29mLgorICoKKyAqCisgKiAgIExldCAoMCA8IHggPCAxIGFuZCB5IDwgMCkgb3IgKHggPiAxIGFuZCB5ID4gMCkuICAgICAgICAgICAgICAgICAgKEgxKQorICogICBMZXQgdWJfb21lZ2EoZXhwX2luZikgPCBsYl96ZXRhKHgpICsgbGJfdGhldGEoeSkgICAgICAgICAgICAgICAgIChIMikKKyAqCisgKiAgIFRoZW46CisgKiAgICAgICBsb2cxMChhYnMoZXhwX2luZikpIDwgbG9nMTAoYWJzKGxvZzEwKHgpKSkgKyBsb2cxMChhYnMoeSkpLiAgICgxKQorICogICAgICAgICAgICAgICAgICAgZXhwX2luZiA8IGxvZzEwKHgpICogeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMikKKyAqICAgICAgICAgICAgICAgMTAqKmV4cF9pbmYgPCB4Kip5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDMpCisgKgorICogICBMZXQgKDAgPCB4IDwgMSBhbmQgeSA+IDApIG9yICh4ID4gMSBhbmQgeSA8IDApLiAgICAgICAgICAgICAgICAgIChIMykKKyAqICAgTGV0IHViX29tZWdhKGV4cF9jbGFtcCkgPCBsYl96ZXRhKHgpICsgbGJfdGhldGEoeSkgICAgICAgICAgICAgICAoSDQpCisgKgorICogICBUaGVuOgorICogICAgIGxvZzEwKGFicyhleHBfY2xhbXApKSA8IGxvZzEwKGFicyhsb2cxMCh4KSkpICsgbG9nMTAoYWJzKHkpKS4gICAoNCkKKyAqICAgICAgICAgICAgICBsb2cxMCh4KSAqIHkgPCBleHBfY2xhbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUpCisgKiAgICAgICAgICAgICAgICAgICAgICB4Kip5IDwgMTAqKmV4cF9jbGFtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICg2KQorICoKKyAqLworc3RhdGljIG1wZF9zc2l6ZV90CitfbG93ZXJfYm91bmRfemV0YShjb25zdCBtcGRfdCAqeCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGN0eDsKKyAgICBNUERfTkVXX1NUQVRJQyhzY3JhdGNoLDAsMCwwLDApOworICAgIG1wZF9zc2l6ZV90IHQsIHU7CisKKyAgICB0ID0gbXBkX2FkamV4cCh4KTsKKyAgICBpZiAodCA+IDApIHsKKyAgICAgICAgLyogeCA+PSAxMCAtPiBmbG9vcihsb2cxMChmbG9vcihhYnMobG9nMTAoeCkpKSkpICovCisgICAgICAgIHJldHVybiBtcGRfZXhwX2RpZ2l0cyh0KSAtIDE7CisgICAgfQorICAgIGVsc2UgaWYgKHQgPCAtMSkgeworICAgICAgICAvKiB4IDwgMS8xMCAtPiBmbG9vcihsb2cxMChmbG9vcihhYnMobG9nMTAoeCkpKSkpICovCisgICAgICAgIHJldHVybiBtcGRfZXhwX2RpZ2l0cyh0KzEpIC0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjdHgpOworICAgICAgICBtcGRfcXN1Yigmc2NyYXRjaCwgeCwgJm9uZSwgJm1heGN0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnNjcmF0Y2gpKSB7CisgICAgICAgICAgICBtcGRfZGVsKCZzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiBNUERfU1NJWkVfTUFYOworICAgICAgICB9CisgICAgICAgIHUgPSBtcGRfYWRqZXhwKCZzY3JhdGNoKTsKKyAgICAgICAgbXBkX2RlbCgmc2NyYXRjaCk7CisKKyAgICAgICAgLyogdCA9PSAtMSwgMS8xMCA8PSB4IDwgMSAtPiBmbG9vcihsb2cxMChhYnMoeC0xKS8xMCkpCisgICAgICAgICAqIHQgPT0gMCwgIDEgPCB4IDwgMTAgICAgLT4gZmxvb3IobG9nMTAoYWJzKHgtMSkvMTAwKSkgKi8KKyAgICAgICAgcmV0dXJuICh0ID09IDApID8gdS0yIDogdS0xOworICAgIH0KK30KKworLyoKKyAqIERldGVjdCBjYXNlcyBvZiBjZXJ0YWluIG92ZXJmbG93L3VuZGVyZmxvdyBpbiB0aGUgcG93ZXIgZnVuY3Rpb24uCisgKiBBc3N1bXB0aW9uczogeCAhPSAxLCB5ICE9IDAuIFRoZSBwcm9vZiBhYm92ZSBpcyBmb3IgcG9zaXRpdmUgeC4KKyAqIElmIHggaXMgbmVnYXRpdmUgYW5kIHkgaXMgYW4gb2RkIGludGVnZXIsIHgqKnkgPT0gLShhYnMoeCkqKnkpLAorICogc28gdGhlIGFuYWx5c2lzIGRvZXMgbm90IGNoYW5nZS4KKyAqLworc3RhdGljIGludAorX3FjaGVja19wb3dfYm91bmRzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICp4LCBjb25zdCBtcGRfdCAqeSwKKyAgICAgICAgICAgICAgICAgICB1aW50OF90IHJlc3VsdHNpZ24sCisgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU0hBUkVEKGFic194LCB4KTsKKyAgICBtcGRfc3NpemVfdCB1Yl9vbWVnYSwgbGJfemV0YSwgbGJfdGhldGE7CisgICAgdWludDhfdCBzaWduOworCisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYWJzX3gpOworCisgICAgbGJfdGhldGEgPSBtcGRfYWRqZXhwKHkpOworICAgIGxiX3pldGEgPSBfbG93ZXJfYm91bmRfemV0YSgmYWJzX3gsIHN0YXR1cyk7CisgICAgaWYgKGxiX3pldGEgPT0gTVBEX1NTSVpFX01BWCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBzaWduID0gKG1wZF9hZGpleHAoJmFic194KSA8IDApIF4gbXBkX3NpZ24oeSk7CisgICAgaWYgKHNpZ24gPT0gMCkgeworICAgICAgICAvKiAoMCA8IHx4fCA8IDEgYW5kIHkgPCAwKSBvciAofHh8ID4gMSBhbmQgeSA+IDApICovCisgICAgICAgIHViX29tZWdhID0gbXBkX2V4cF9kaWdpdHMoY3R4LT5lbWF4KTsKKyAgICAgICAgaWYgKHViX29tZWdhIDwgbGJfemV0YSArIGxiX3RoZXRhKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgTVBEX0VYUF9JTkYpOworICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiAoMCA8IHx4fCA8IDEgYW5kIHkgPiAwKSBvciAofHh8ID4gMSBhbmQgeSA8IDApLiAqLworICAgICAgICB1Yl9vbWVnYSA9IG1wZF9leHBfZGlnaXRzKG1wZF9ldGlueShjdHgpKTsKKyAgICAgICAgaWYgKHViX29tZWdhIDwgbGJfemV0YSArIGxiX3RoZXRhKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgbXBkX2V0aW55KGN0eCktMSk7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFRPRE86IEltcGxlbWVudCBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBleGFjdCBwb3dlcnMgZnJvbSBkZWNpbWFsLnB5LgorICogSW4gb3JkZXIgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wcywgdGhpcyBoYXMgdG8gYmUgY2FsbGVkIGJlZm9yZQorICogdXNpbmcgWml2J3Mgc3RyYXRlZ3kgZm9yIGNvcnJlY3Qgcm91bmRpbmcuCisgKi8KKy8qCitzdGF0aWMgaW50CitfbXBkX3Fwb3dfZXhhY3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHJldHVybiAwOworfQorKi8KKworLyoKKyAqIFRoZSBwb3dlciBmdW5jdGlvbiBmb3IgcmVhbCBleHBvbmVudHMuCisgKiAgIFJlbGF0aXZlIGVycm9yOiBhYnMocmVzdWx0IC0gZSoqeSkgPCBlKip5ICogMS81ICogMTAqKigtcHJlYyAtIDEpCisgKi8KK3N0YXRpYyB2b2lkCitfbXBkX3Fwb3dfcmVhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHg7CisgICAgTVBEX05FV19TVEFUSUModGV4cCwwLDAsMCwwKTsKKworICAgIGlmICghbXBkX3Fjb3B5KCZ0ZXhwLCBleHAsIHN0YXR1cykpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICB3b3JrY3R4LnByZWMgPSAoYmFzZS0+ZGlnaXRzID4gY3R4LT5wcmVjKSA/IGJhc2UtPmRpZ2l0cyA6IGN0eC0+cHJlYzsKKyAgICB3b3JrY3R4LnByZWMgKz0gKDQgKyBNUERfRVhQRElHSVRTKTsKKyAgICB3b3JrY3R4LnJvdW5kID0gTVBEX1JPVU5EX0hBTEZfRVZFTjsKKyAgICB3b3JrY3R4LmFsbGNyID0gY3R4LT5hbGxjcjsKKworICAgIC8qCisgICAgICogZXh0cmEgOj0gTVBEX0VYUERJR0lUUyA9IE1QRF9FWFBfTUFYX1QKKyAgICAgKiB3cCA6PSBwcmVjICsgNCArIGV4dHJhCisgICAgICogYWJzKGVycikgPCA1ICogMTAqKi13cAorICAgICAqIHkgOj0gbG9nKGJhc2UpICogZXhwCisgICAgICogQ2FsY3VsYXRlOgorICAgICAqICAgMSkgICBlKiooeSAqICgxICsgZXJyKSoqMikgKiAoMSArIGVycikKKyAgICAgKiAgICAgID0gZSoqeSAqIGUqKih5ICogKDIqZXJyICsgZXJyKioyKSkgKiAoMSArIGVycikKKyAgICAgKiAgICAgICAgXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKyAgICAgKiBSZWxhdGl2ZSBlcnJvciBvZiB0aGUgdW5kZXJsaW5lZCB0ZXJtOgorICAgICAqICAgMikgYWJzKGUqKih5ICogKDIqZXJyICsgZXJyKioyKSkgLSAxKQorICAgICAqIENhc2UgYWJzKHkpID49IDEwKipleHRyYToKKyAgICAgKiAgIDMpIGFkamV4cCh5KSsxID4gbG9nMTAoYWJzKHkpKSA+PSBleHRyYQorICAgICAqICAgVGhpcyB0cmlnZ2VycyB0aGUgT3ZlcmZsb3cvVW5kZXJmbG93IHNob3J0Y3V0IGluIF9tcGRfcWV4cCgpLAorICAgICAqICAgc28gbm8gZnVydGhlciBhbmFseXNpcyBpcyBuZWNlc3NhcnkuCisgICAgICogQ2FzZSBhYnMoeSkgPCAxMCoqZXh0cmE6CisgICAgICogICA0KSBhYnMoeSAqICgyKmVyciArIGVycioqMikpIDwgMS81ICogMTAqKigtcHJlYyAtIDIpCisgICAgICogICBVc2UgKHNlZSBfbXBkX3FleHApOgorICAgICAqICAgICA1KSBhYnMoeCkgPD0gOS8xMCAqIDEwKiotcCA9PT4gYWJzKGUqKnggLSAxKSA8IDEwKiotcAorICAgICAqICAgV2l0aCAyKSwgNCkgYW5kIDUpOgorICAgICAqICAgICA2KSBhYnMoZSoqKHkgKiAoMiplcnIgKyBlcnIqKjIpKSAtIDEpIDwgMTAqKigtcHJlYyAtIDIpCisgICAgICogICBUaGUgY29tcGxldGUgcmVsYXRpdmUgZXJyb3Igb2YgMSkgaXM6CisgICAgICogICAgIDcpIGFicyhyZXN1bHQgLSBlKip5KSA8IGUqKnkgKiAxLzUgKiAxMCoqKC1wcmVjIC0gMSkKKyAgICAgKi8KKyAgICBtcGRfcWxuKHJlc3VsdCwgYmFzZSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgbXBkX3FtdWwocmVzdWx0LCByZXN1bHQsICZ0ZXhwLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICBtcGRfcWV4cChyZXN1bHQsIHJlc3VsdCwgJndvcmtjdHgsIHN0YXR1cyk7CisKKyAgICBtcGRfZGVsKCZ0ZXhwKTsKKyAgICAqc3RhdHVzIHw9ICh3b3JrY3R4LnN0YXR1cyZNUERfRXJyb3JzKTsKKyAgICAqc3RhdHVzIHw9IChNUERfSW5leGFjdHxNUERfUm91bmRlZCk7Cit9CisKKy8qIFRoZSBwb3dlciBmdW5jdGlvbjogYmFzZSoqZXhwICovCit2b2lkCittcGRfcXBvdyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50OF90IHJlc3VsdHNpZ24gPSAwOworICAgIGludCBpbnRleHAgPSAwOworICAgIGludCBjbXA7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChiYXNlKSB8fCBtcGRfaXNzcGVjaWFsKGV4cCkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGJhc2UsIGV4cCwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1wZF9pc2ludGVnZXIoZXhwKSkgeworICAgICAgICBpbnRleHAgPSAxOworICAgICAgICByZXN1bHRzaWduID0gbXBkX2lzbmVnYXRpdmUoYmFzZSkgJiYgbXBkX2lzb2RkKGV4cCk7CisgICAgfQorCisgICAgaWYgKG1wZF9pc3plcm8oYmFzZSkpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm8oZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1wZF9pc25lZ2F0aXZlKGV4cCkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRzcGVjaWFsKHJlc3VsdCwgcmVzdWx0c2lnbiwgTVBEX0lORik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYmFzZSkpIHsKKyAgICAgICAgaWYgKCFpbnRleHAgfHwgbXBkX2lzaW5maW5pdGUoZXhwKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmIChtcGRfaXNpbmZpbml0ZShleHApKSB7CisgICAgICAgIC8qIHBvd2VyIG9mIG9uZSAqLworICAgICAgICBjbXAgPSBfcWNoZWNrX3Bvd19vbmVfaW5mKHJlc3VsdCwgYmFzZSwgcmVzdWx0c2lnbiwgY3R4LCBzdGF0dXMpOworICAgICAgICBpZiAoY21wID09IDApIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNtcCAqPSBtcGRfYXJpdGhfc2lnbihleHApOworICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIHJlc3VsdHNpZ24sIE1QRF9JTkYpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc2luZmluaXRlKGJhc2UpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvKGV4cCkpIHsKKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCByZXN1bHRzaWduLCAxLCAwKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIHJlc3VsdHNpZ24sIE1QRF9JTkYpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8oZXhwKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgcmVzdWx0c2lnbiwgMSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKF9xY2hlY2tfcG93X29uZShyZXN1bHQsIGJhc2UsIGV4cCwgcmVzdWx0c2lnbiwgY3R4LCBzdGF0dXMpID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoX3FjaGVja19wb3dfYm91bmRzKHJlc3VsdCwgYmFzZSwgZXhwLCByZXN1bHRzaWduLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChpbnRleHApIHsKKyAgICAgICAgX21wZF9xcG93X2ludChyZXN1bHQsIGJhc2UsIGV4cCwgcmVzdWx0c2lnbiwgY3R4LCBzdGF0dXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgX21wZF9xcG93X3JlYWwocmVzdWx0LCBiYXNlLCBleHAsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKCFtcGRfaXNzcGVjaWFsKHJlc3VsdCkgJiYgX21wZF9jbXAocmVzdWx0LCAmb25lKSA9PSAwKSB7CisgICAgICAgICAgICBtcGRfc3NpemVfdCBzaGlmdCA9IGN0eC0+cHJlYy0xOworICAgICAgICAgICAgbXBkX3FzaGlmdGwocmVzdWx0LCAmb25lLCBzaGlmdCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJlc3VsdC0+ZXhwID0gLXNoaWZ0OworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShyZXN1bHQpKSB7CisgICAgICAgICAgICAvKiBmb3IgUk9VTkRfRE9XTiwgUk9VTkRfRkxPT1IsIGV0Yy4gKi8KKyAgICAgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAxLCBNUERfRVhQX0lORik7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICB9Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbjogSW50ZWdlciBwb3dtb2Qgd2l0aCBtcGRfdWludF90IGV4cG9uZW50LCBiYXNlIGlzIG1vZGlmaWVkIQorICogRnVuY3Rpb24gY2FuIGZhaWwgd2l0aCBNUERfTWFsbG9jX2Vycm9yLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfcXBvd21vZF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF90ICpiYXNlLCBtcGRfdWludF90IGV4cCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF90ICptb2QsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworCisgICAgLyogcmVzaXplIHRvIHNtYWxsZXIgY2Fubm90IGZhaWwgKi8KKyAgICBtcGRfcWNvcHkocmVzdWx0LCAmb25lLCBzdGF0dXMpOworCisgICAgd2hpbGUgKGV4cCA+IDApIHsKKyAgICAgICAgaWYgKGV4cCAmIDEpIHsKKyAgICAgICAgICAgIF9tcGRfcW11bF9leGFjdChyZXN1bHQsIHJlc3VsdCwgYmFzZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXJlbShyZXN1bHQsIHJlc3VsdCwgbW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FtdWxfZXhhY3QoYmFzZSwgYmFzZSwgYmFzZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIG1wZF9xcmVtKGJhc2UsIGJhc2UsIG1vZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9Cit9CisKKy8qIFRoZSBwb3dtb2QgZnVuY3Rpb246IChiYXNlKipleHApICUgbW9kICovCit2b2lkCittcGRfcXBvd21vZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwKKyAgICAgICAgICAgIGNvbnN0IG1wZF90ICptb2QsCisgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCBtYXhjb250ZXh0OworICAgIE1QRF9ORVdfU1RBVElDKHRiYXNlLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHRleHAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUModG1vZCwwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyh0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVCh0d28sMCwwLDEsMSwxLDIpOworICAgIG1wZF9zc2l6ZV90IHRiYXNlX2V4cCwgdGV4cF9leHA7CisgICAgbXBkX3NzaXplX3QgaTsKKyAgICBtcGRfdCB0OworICAgIG1wZF91aW50X3QgcjsKKyAgICB1aW50OF90IHNpZ247CisKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGJhc2UpIHx8IG1wZF9pc3NwZWNpYWwoZXhwKSB8fCBtcGRfaXNzcGVjaWFsKG1vZCkpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfM25hbnMocmVzdWx0LCBiYXNlLCBleHAsIG1vZCwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisKKyAgICBpZiAoIV9tcGRfaXNpbnQoYmFzZSkgfHwgIV9tcGRfaXNpbnQoZXhwKSB8fCAhX21wZF9pc2ludChtb2QpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKG1vZCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtb2QtPmRpZ2l0cyttb2QtPmV4cCA+IGN0eC0+cHJlYykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaWduID0gKG1wZF9pc25lZ2F0aXZlKGJhc2UpKSAmJiAobXBkX2lzb2RkKGV4cCkpOworICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoZXhwKSkgeworICAgICAgICBpZiAobXBkX2lzemVyb2NvZWZmKGJhc2UpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgciA9IChfbXBkX2NtcF9hYnMobW9kLCAmb25lKT09MCkgPyAwIDogMTsKKyAgICAgICAgX3NldHRyaXBsZShyZXN1bHQsIHNpZ24sIHIsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXNuZWdhdGl2ZShleHApKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGJhc2UpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBzaWduLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1wZF9tYXhjb250ZXh0KCZtYXhjb250ZXh0KTsKKworICAgIG1wZF9xcmVzY2FsZSgmdG1vZCwgbW9kLCAwLCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICBpZiAobWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBtYXhjb250ZXh0LnN0YXR1cyZNUERfRXJyb3JzLCBzdGF0dXMpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgbWF4Y29udGV4dC5zdGF0dXMgPSAwOworICAgIG1wZF9zZXRfcG9zaXRpdmUoJnRtb2QpOworCisgICAgbXBkX3Fyb3VuZF90b19pbnQoJnRiYXNlLCBiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZ0YmFzZSk7CisgICAgdGJhc2VfZXhwID0gdGJhc2UuZXhwOworICAgIHRiYXNlLmV4cCA9IDA7CisKKyAgICBtcGRfcXJvdW5kX3RvX2ludCgmdGV4cCwgZXhwLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICB0ZXhwX2V4cCA9IHRleHAuZXhwOworICAgIHRleHAuZXhwID0gMDsKKworICAgIC8qIGJhc2UgPSAoYmFzZS5pbnQgJSBtb2R1bG8gKiBwb3coMTAsIGJhc2UuZXhwLCBtb2R1bG8pKSAlIG1vZHVsbyAqLworICAgIG1wZF9xcmVtKCZ0YmFzZSwgJnRiYXNlLCAmdG1vZCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FzaGlmdGwocmVzdWx0LCAmb25lLCB0YmFzZV9leHAsIHN0YXR1cyk7CisgICAgbXBkX3FyZW0ocmVzdWx0LCByZXN1bHQsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBfbXBkX3FtdWxfZXhhY3QoJnRiYXNlLCAmdGJhc2UsIHJlc3VsdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgbXBkX3FyZW0oJnRiYXNlLCAmdGJhc2UsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICBpZiAobXBkX2lzc3BlY2lhbCgmdGJhc2UpIHx8CisgICAgICAgIG1wZF9pc3NwZWNpYWwoJnRleHApIHx8CisgICAgICAgIG1wZF9pc3NwZWNpYWwoJnRtb2QpKSB7CisgICAgICAgIGdvdG8gbXBkX2Vycm9yczsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgdGV4cF9leHA7IGkrKykgeworICAgICAgICBfbXBkX3Fwb3dtb2RfdWludCgmdG1wLCAmdGJhc2UsIDEwLCAmdG1vZCwgc3RhdHVzKTsKKyAgICAgICAgdCA9IHRtcDsKKyAgICAgICAgdG1wID0gdGJhc2U7CisgICAgICAgIHRiYXNlID0gdDsKKyAgICB9CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnRiYXNlKSkgeworICAgICAgICBnb3RvIG1wZF9lcnJvcnM7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICB9CisKKyAgICAvKiByZXNpemUgdG8gc21hbGxlciBjYW5ub3QgZmFpbCAqLworICAgIG1wZF9xY29weShyZXN1bHQsICZvbmUsIHN0YXR1cyk7CisgICAgd2hpbGUgKG1wZF9pc2Zpbml0ZSgmdGV4cCkgJiYgIW1wZF9pc3plcm8oJnRleHApKSB7CisgICAgICAgIGlmIChtcGRfaXNvZGQoJnRleHApKSB7CisgICAgICAgICAgICBfbXBkX3FtdWxfZXhhY3QocmVzdWx0LCByZXN1bHQsICZ0YmFzZSwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcXJlbShyZXN1bHQsIHJlc3VsdCwgJnRtb2QsICZtYXhjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIF9tcGRfcW11bF9leGFjdCgmdGJhc2UsICZ0YmFzZSwgJnRiYXNlLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FyZW0oJnRiYXNlLCAmdGJhc2UsICZ0bW9kLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgbXBkX3FkaXZpbnQoJnRleHAsICZ0ZXhwLCAmdHdvLCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICB9CisgICAgaWYgKG1wZF9pc3NwZWNpYWwoJnRleHApIHx8IG1wZF9pc3NwZWNpYWwoJnRiYXNlKSB8fAorICAgICAgICBtcGRfaXNzcGVjaWFsKCZ0bW9kKSB8fCBtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgLyogTVBEX01hbGxvY19lcnJvciAqLworICAgICAgICBnb3RvIG1wZF9lcnJvcnM7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtcGRfc2V0X3NpZ24ocmVzdWx0LCBzaWduKTsKKyAgICB9CisKK291dDoKKyAgICBtcGRfZGVsKCZ0YmFzZSk7CisgICAgbXBkX2RlbCgmdGV4cCk7CisgICAgbXBkX2RlbCgmdG1vZCk7CisgICAgbXBkX2RlbCgmdG1wKTsKKyAgICByZXR1cm47CisKK21wZF9lcnJvcnM6CisgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBNUERfUE9TLCBNUERfTkFOKTsKKyAgICBnb3RvIG91dDsKK30KKwordm9pZAorbXBkX3FxdWFudGl6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfc3NpemVfdCBiX2V4cCA9IGItPmV4cDsKKyAgICBtcGRfc3NpemVfdCBleHBkaWZmLCBzaGlmdDsKKyAgICBtcGRfdWludF90IHJuZDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpIHx8IG1wZF9pc3NwZWNpYWwoYikpIHsKKyAgICAgICAgaWYgKG1wZF9xY2hlY2tfbmFucyhyZXN1bHQsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSAmJiBtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoYi0+ZXhwID4gY3R4LT5lbWF4IHx8IGItPmV4cCA8IG1wZF9ldGlueShjdHgpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgYi0+ZXhwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworCisgICAgZXhwZGlmZiA9IGEtPmV4cCAtIGItPmV4cDsKKyAgICBpZiAoYS0+ZGlnaXRzICsgZXhwZGlmZiA+IGN0eC0+cHJlYykgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZXhwZGlmZiA+PSAwKSB7CisgICAgICAgIHNoaWZ0ID0gZXhwZGlmZjsKKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBiX2V4cDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgZXhwZGlmZiA8IDAgYW5kIGEtPmRpZ2l0cytleHBkaWZmIDw9IHByZWMsCisgICAgICAgICAqIHNvIHRoZSBzaGlmdCBiZWZvcmUgYW4gaW5jcmVtZW50IHdpbGwgZml0IGluIHByZWMuICovCisgICAgICAgIHNoaWZ0ID0gLWV4cGRpZmY7CisgICAgICAgIHJuZCA9IG1wZF9xc2hpZnRyKHJlc3VsdCwgYSwgc2hpZnQsIHN0YXR1cyk7CisgICAgICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBiX2V4cDsKKyAgICAgICAgaWYgKCFfbXBkX2FwcGx5X3JvdW5kX2ZpdChyZXN1bHQsIHJuZCwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgd29ya3N0YXR1cyB8PSBNUERfUm91bmRlZDsKKyAgICAgICAgaWYgKHJuZCkgeworICAgICAgICAgICAgd29ya3N0YXR1cyB8PSBNUERfSW5leGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtcGRfYWRqZXhwKHJlc3VsdCkgPiBjdHgtPmVtYXggfHwKKyAgICAgICAgbXBkX2FkamV4cChyZXN1bHQpIDwgbXBkX2V0aW55KGN0eCkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKnN0YXR1cyB8PSB3b3Jrc3RhdHVzOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xcmVkdWNlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IHNoaWZ0LCBtYXhleHAsIG1heHNoaWZ0OworICAgIHVpbnQ4X3Qgc2lnbl9hID0gbXBkX3NpZ24oYSk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFtcGRfcWNvcHkocmVzdWx0LCBhLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICBpZiAobXBkX2lzc3BlY2lhbChyZXN1bHQpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8ocmVzdWx0KSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgc2lnbl9hLCAwLCAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNoaWZ0ID0gbXBkX3RyYWlsX3plcm9zKHJlc3VsdCk7CisgICAgbWF4ZXhwID0gKGN0eC0+Y2xhbXApID8gbXBkX2V0b3AoY3R4KSA6IGN0eC0+ZW1heDsKKyAgICAvKiBBZnRlciB0aGUgZmluYWxpemluZyBhYm92ZSByZXN1bHQtPmV4cCA8PSBtYXhleHAuICovCisgICAgbWF4c2hpZnQgPSBtYXhleHAgLSByZXN1bHQtPmV4cDsKKyAgICBzaGlmdCA9IChzaGlmdCA+IG1heHNoaWZ0KSA/IG1heHNoaWZ0IDogc2hpZnQ7CisKKyAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgc2hpZnQpOworICAgIHJlc3VsdC0+ZXhwICs9IHNoaWZ0OworfQorCit2b2lkCittcGRfcXJlbShtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKHEsMCwwLDAsMCk7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbnMociwgYSwgYiwgY3R4LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1wZF9pc2luZmluaXRlKGEpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShiKSkgeworICAgICAgICAgICAgbXBkX3Fjb3B5KHIsIGEsIHN0YXR1cyk7CisgICAgICAgICAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvKiBkZWJ1ZyAqLworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYikpIHsKKyAgICAgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIE1QRF9EaXZpc2lvbl91bmRlZmluZWQsIHN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FkaXZtb2QoJnEsIHIsIGEsIGIsIGN0eCwgc3RhdHVzKTsKKyAgICBtcGRfZGVsKCZxKTsKKyAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3FyZW1fbmVhcihtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLAorICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX2NvbnRleHRfdCB3b3JrY3R4OworICAgIE1QRF9ORVdfU1RBVElDKGJ0bXAsMCwwLDAsMCk7CisgICAgTVBEX05FV19TVEFUSUMocSwwLDAsMCwwKTsKKyAgICBtcGRfc3NpemVfdCBleHBkaWZmLCBxZGlnaXRzOworICAgIGludCBjbXAsIGlzb2RkLCBhbGxuaW5lOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkgfHwgbXBkX2lzc3BlY2lhbChiKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW5zKHIsIGEsIGIsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNpbmZpbml0ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzaW5maW5pdGUoYikpIHsKKyAgICAgICAgICAgIG1wZF9xY29weShyLCBhLCBzdGF0dXMpOworICAgICAgICAgICAgbXBkX3FmaW5hbGl6ZShyLCBjdHgsIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogZGVidWcgKi8KKyAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKGIpKSB7CisgICAgICAgIGlmIChtcGRfaXN6ZXJvY29lZmYoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCAgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCwgc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyLCAgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAociA9PSBiKSB7CisgICAgICAgIGlmICghbXBkX3Fjb3B5KCZidG1wLCBiLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IociwgTVBEX01hbGxvY19lcnJvciwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBiID0gJmJ0bXA7CisgICAgfQorCisgICAgX21wZF9xZGl2bW9kKCZxLCByLCBhLCBiLCBjdHgsIHN0YXR1cyk7CisgICAgaWYgKG1wZF9pc25hbigmcSkgfHwgbXBkX2lzbmFuKHIpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKyAgICBpZiAobXBkX2lzemVyb2NvZWZmKHIpKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIGV4cGRpZmYgPSBtcGRfYWRqZXhwKGIpIC0gbXBkX2FkamV4cChyKTsKKyAgICBpZiAoLTEgPD0gZXhwZGlmZiAmJiBleHBkaWZmIDw9IDEpIHsKKworICAgICAgICBhbGxuaW5lID0gbXBkX2NvZWZmX2lzYWxsbmluZSgmcSk7CisgICAgICAgIHFkaWdpdHMgPSBxLmRpZ2l0czsKKyAgICAgICAgaXNvZGQgPSBtcGRfaXNvZGQoJnEpOworCisgICAgICAgIG1wZF9tYXhjb250ZXh0KCZ3b3JrY3R4KTsKKyAgICAgICAgaWYgKG1wZF9zaWduKGEpID09IG1wZF9zaWduKGIpKSB7CisgICAgICAgICAgICAvKiBzaWduKHIpID09IHNpZ24oYikgKi8KKyAgICAgICAgICAgIF9tcGRfcXN1YigmcSwgciwgYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBzaWduKHIpICE9IHNpZ24oYikgKi8KKyAgICAgICAgICAgIF9tcGRfcWFkZCgmcSwgciwgYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycykgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIHdvcmtjdHguc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICAgICAgfQorCisgICAgICAgIGNtcCA9IF9tcGRfY21wX2FicygmcSwgcik7CisgICAgICAgIGlmIChjbXAgPCAwIHx8IChjbXAgPT0gMCAmJiBpc29kZCkpIHsKKyAgICAgICAgICAgIC8qIGFicyhyKSA+IGFicyhiKS8yIG9yIGFicyhyKSA9PSBhYnMoYikvMiBhbmQgaXNvZGQocXVvdGllbnQpICovCisgICAgICAgICAgICBpZiAoYWxsbmluZSAmJiBxZGlnaXRzID09IGN0eC0+cHJlYykgeworICAgICAgICAgICAgICAgIC8qIGFicyhxdW90aWVudCkgKyAxID09IDEwKipwcmVjICovCisgICAgICAgICAgICAgICAgbXBkX3NldGVycm9yKHIsIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlLCBzdGF0dXMpOworICAgICAgICAgICAgICAgIGdvdG8gZmluaXNoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbXBkX3Fjb3B5KHIsICZxLCBzdGF0dXMpOworICAgICAgICB9CisgICAgfQorCisKK2ZpbmlzaDoKKyAgICBtcGRfZGVsKCZidG1wKTsKKyAgICBtcGRfZGVsKCZxKTsKKyAgICBtcGRfcWZpbmFsaXplKHIsIGN0eCwgc3RhdHVzKTsKK30KKworc3RhdGljIHZvaWQKK19tcGRfcXJlc2NhbGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwKKyAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IGV4cGRpZmYsIHNoaWZ0OworICAgIG1wZF91aW50X3Qgcm5kOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoYSkpIHsKKyAgICAgICAgbXBkX3Fjb3B5KHJlc3VsdCwgYSwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgZXhwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGV4cGRpZmYgPSBhLT5leHAgLSBleHA7CisgICAgaWYgKGV4cGRpZmYgPj0gMCkgeworICAgICAgICBzaGlmdCA9IGV4cGRpZmY7CisgICAgICAgIGlmIChhLT5kaWdpdHMgKyBzaGlmdCA+IE1QRF9NQVhfUFJFQysxKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsIGEsIHNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LT5leHAgPSBleHA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzaGlmdCA9IC1leHBkaWZmOworICAgICAgICBybmQgPSBtcGRfcXNoaWZ0cihyZXN1bHQsIGEsIHNoaWZ0LCBzdGF0dXMpOworICAgICAgICBpZiAocm5kID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHJlc3VsdC0+ZXhwID0gZXhwOworICAgICAgICBfbXBkX2FwcGx5X3JvdW5kX2V4Y2VzcyhyZXN1bHQsIHJuZCwgY3R4LCBzdGF0dXMpOworICAgICAgICAqc3RhdHVzIHw9IE1QRF9Sb3VuZGVkOworICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbmV4YWN0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKG1wZF9pc3N1Ym5vcm1hbChyZXN1bHQsIGN0eCkpIHsKKyAgICAgICAgKnN0YXR1cyB8PSBNUERfU3Vibm9ybWFsOworICAgIH0KK30KKworLyoKKyAqIFJlc2NhbGUgYSBudW1iZXIgc28gdGhhdCBpdCBoYXMgZXhwb25lbnQgJ2V4cCcuIERvZXMgbm90IHJlZ2FyZCBjb250ZXh0CisgKiBwcmVjaXNpb24sIGVtYXgsIGVtaW4sIGJ1dCB1c2VzIHRoZSByb3VuZGluZyBtb2RlLiBTcGVjaWFsIG51bWJlcnMgYXJlCisgKiBxdWlldGx5IGNvcGllZC4gUmVzdHJpY3Rpb25zOgorICoKKyAqICAgICBNUERfTUlOX0VUSU5ZIDw9IGV4cCA8PSBNUERfTUFYX0VNQVgrMQorICogICAgIHJlc3VsdC0+ZGlnaXRzIDw9IE1QRF9NQVhfUFJFQysxCisgKi8KK3ZvaWQKK21wZF9xcmVzY2FsZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLAorICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoZXhwID4gTVBEX01BWF9FTUFYKzEgfHwgZXhwIDwgTVBEX01JTl9FVElOWSkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfSW52YWxpZF9vcGVyYXRpb24sIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBfbXBkX3FyZXNjYWxlKHJlc3VsdCwgYSwgZXhwLCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBTYW1lIGFzIG1wZF9xcmVzY2FsZSwgYnV0IHdpdGggcmVsYXhlZCByZXN0cmljdGlvbnMuIFRoZSByZXN1bHQgb2YgdGhpcworICogZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgZm9ybWF0dGluZyBhIG51bWJlciBhbmQgbmV2ZXIgYXMgaW5wdXQKKyAqIGZvciBvdGhlciBvcGVyYXRpb25zLgorICoKKyAqICAgICBNUERfTUlOX0VUSU5ZLU1QRF9NQVhfUFJFQyA8PSBleHAgPD0gTVBEX01BWF9FTUFYKzEKKyAqICAgICByZXN1bHQtPmRpZ2l0cyA8PSBNUERfTUFYX1BSRUMrMQorICovCit2b2lkCittcGRfcXJlc2NhbGVfZm10KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBleHAsCisgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBpZiAoZXhwID4gTVBEX01BWF9FTUFYKzEgfHwgZXhwIDwgTVBEX01JTl9FVElOWS1NUERfTUFYX1BSRUMpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX21wZF9xcmVzY2FsZShyZXN1bHQsIGEsIGV4cCwgY3R4LCBzdGF0dXMpOworfQorCisvKiBSb3VuZCB0byBhbiBpbnRlZ2VyIGFjY29yZGluZyB0byAnYWN0aW9uJyBhbmQgY3R4LT5yb3VuZC4gKi8KK2VudW0ge1RPX0lOVF9FWEFDVCwgVE9fSU5UX1NJTEVOVCwgVE9fSU5UX1RSVU5DfTsKK3N0YXRpYyB2b2lkCitfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChpbnQgYWN0aW9uLCBtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfdWludF90IHJuZDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGEtPmV4cCA+PSAwKSB7CisgICAgICAgIG1wZF9xY29weShyZXN1bHQsIGEsIHN0YXR1cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm9jb2VmZihhKSkgeworICAgICAgICBfc2V0dHJpcGxlKHJlc3VsdCwgbXBkX3NpZ24oYSksIDAsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcm5kID0gbXBkX3FzaGlmdHIocmVzdWx0LCBhLCAtYS0+ZXhwLCBzdGF0dXMpOworICAgIGlmIChybmQgPT0gTVBEX1VJTlRfTUFYKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVzdWx0LT5leHAgPSAwOworCisgICAgaWYgKGFjdGlvbiA9PSBUT19JTlRfRVhBQ1QgfHwgYWN0aW9uID09IFRPX0lOVF9TSUxFTlQpIHsKKyAgICAgICAgX21wZF9hcHBseV9yb3VuZF9leGNlc3MocmVzdWx0LCBybmQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgaWYgKGFjdGlvbiA9PSBUT19JTlRfRVhBQ1QpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX1JvdW5kZWQ7CisgICAgICAgICAgICBpZiAocm5kKSB7CisgICAgICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW5leGFjdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZAorbXBkX3Fyb3VuZF90b19pbnR4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICAodm9pZClfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChUT19JTlRfRVhBQ1QsIHJlc3VsdCwgYSwgY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcXJvdW5kX3RvX2ludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICAodm9pZClfbXBkX3Fyb3VuZF90b19pbnRlZ3JhbChUT19JTlRfU0lMRU5ULCByZXN1bHQsIGEsIGN0eCwgc3RhdHVzKTsKK30KKwordm9pZAorbXBkX3F0cnVuYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9UUlVOQywgcmVzdWx0LCBhLCBjdHgsIHN0YXR1cyk7Cit9CisKK3ZvaWQKK21wZF9xZmxvb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IHdvcmtjdHggPSAqY3R4OworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfRkxPT1I7CisgICAgKHZvaWQpX21wZF9xcm91bmRfdG9faW50ZWdyYWwoVE9fSU5UX1NJTEVOVCwgcmVzdWx0LCBhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3b3JrY3R4LCBzdGF0dXMpOworfQorCit2b2lkCittcGRfcWNlaWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eCA9ICpjdHg7CisgICAgd29ya2N0eC5yb3VuZCA9IE1QRF9ST1VORF9DRUlMSU5HOworICAgICh2b2lkKV9tcGRfcXJvdW5kX3RvX2ludGVncmFsKFRPX0lOVF9TSUxFTlQsIHJlc3VsdCwgYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd29ya2N0eCwgc3RhdHVzKTsKK30KKworaW50CittcGRfc2FtZV9xdWFudHVtKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYikKK3sKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSB8fCBtcGRfaXNzcGVjaWFsKGIpKSB7CisgICAgICAgIHJldHVybiAoKG1wZF9pc25hbihhKSAmJiBtcGRfaXNuYW4oYikpIHx8CisgICAgICAgICAgICAgICAgKG1wZF9pc2luZmluaXRlKGEpICYmIG1wZF9pc2luZmluaXRlKGIpKSk7CisgICAgfQorCisgICAgcmV0dXJuIGEtPmV4cCA9PSBiLT5leHA7Cit9CisKKy8qIFNjaGVkdWxlIHRoZSBpbmNyZWFzZSBpbiBwcmVjaXNpb24gZm9yIHRoZSBOZXd0b24gaXRlcmF0aW9uLiAqLworc3RhdGljIGlubGluZSBpbnQKK3JlY3ByX3NjaGVkdWxlX3ByZWMobXBkX3NzaXplX3Qga2xpc3RbTVBEX01BWF9QUkVDX0xPRzJdLAorICAgICAgICAgICAgICAgICAgICBtcGRfc3NpemVfdCBtYXhwcmVjLCBtcGRfc3NpemVfdCBpbml0cHJlYykKK3sKKyAgICBtcGRfc3NpemVfdCBrOworICAgIGludCBpOworCisgICAgYXNzZXJ0KG1heHByZWMgPiAwICYmIGluaXRwcmVjID4gMCk7CisgICAgaWYgKG1heHByZWMgPD0gaW5pdHByZWMpIHJldHVybiAtMTsKKworICAgIGkgPSAwOyBrID0gbWF4cHJlYzsKKyAgICBkbyB7CisgICAgICAgIGsgPSAoaysxKSAvIDI7CisgICAgICAgIGtsaXN0W2krK10gPSBrOworICAgIH0gd2hpbGUgKGsgPiBpbml0cHJlYyk7CisKKyAgICByZXR1cm4gaS0xOworfQorCisvKgorICogSW5pdGlhbCBhcHByb3hpbWF0aW9uIGZvciB0aGUgcmVjaXByb2NhbDoKKyAqICAgIGtfMCA6PSBNUERfUkRJR0lUUy0yCisgKiAgICB6XzAgOj0gMTAqKigta18wKSAqIGZsb29yKDEwKiooMiprXzAgKyAyKSAvIGZsb29yKHYgKiAxMCoqKGtfMCArIDIpKSkKKyAqIEFic29sdXRlIGVycm9yOgorICogICAgfDEvdiAtIHpfMHwgPCAxMCoqKC1rXzApCisgKiBBQ0wyIHByb29mOiBtYXhlcnJvci1pbnZlcnNlLWFwcHJveAorICovCitzdGF0aWMgdm9pZAorX21wZF9xcmVjaXByb2NhbF9hcHByb3gobXBkX3QgKnosIGNvbnN0IG1wZF90ICp2LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgcDEwZGF0YVsyXSA9IHswLCBtcGRfcG93MTBbTVBEX1JESUdJVFMtMl19OworICAgIG1wZF91aW50X3QgZHVtbXksIHdvcmQ7CisgICAgaW50IG47CisKKyAgICBhc3NlcnQodi0+ZXhwID09IC12LT5kaWdpdHMpOworCisgICAgX21wZF9nZXRfbXNkaWdpdHMoJmR1bW15LCAmd29yZCwgdiwgTVBEX1JESUdJVFMpOworICAgIG4gPSBtcGRfd29yZF9kaWdpdHMod29yZCk7CisgICAgd29yZCAqPSBtcGRfcG93MTBbTVBEX1JESUdJVFMtbl07CisKKyAgICBtcGRfcXJlc2l6ZSh6LCAyLCBzdGF0dXMpOworICAgICh2b2lkKV9tcGRfc2hvcnRkaXYoei0+ZGF0YSwgcDEwZGF0YSwgMiwgd29yZCk7CisKKyAgICBtcGRfY2xlYXJfZmxhZ3Moeik7CisgICAgei0+ZXhwID0gLShNUERfUkRJR0lUUy0yKTsKKyAgICB6LT5sZW4gPSAoei0+ZGF0YVsxXSA9PSAwKSA/IDEgOiAyOworICAgIG1wZF9zZXRkaWdpdHMoeik7Cit9CisKKy8qCisgKiBSZWNpcHJvY2FsLCBjYWxjdWxhdGVkIHdpdGggTmV3dG9uJ3MgTWV0aG9kLiBBc3N1bXB0aW9uOiByZXN1bHQgIT0gYS4KKyAqIE5PVEU6IFRoZSBjb21tZW50cyBpbiB0aGUgZnVuY3Rpb24gc2hvdyB0aGF0IGNlcnRhaW4gb3BlcmF0aW9ucyBhcmUKKyAqIGV4YWN0LiBUaGUgcHJvb2YgZm9yIHRoZSBtYXhpbXVtIGVycm9yIGlzIHRvbyBsb25nIHRvIGZpdCBpbiBoZXJlLgorICogQUNMMiBwcm9vZjogbWF4ZXJyb3ItaW52ZXJzZS1jb21wbGV0ZQorICovCitzdGF0aWMgdm9pZAorX21wZF9xcmVjaXByb2NhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LAorICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3QgdmFyY29udGV4dCwgbWF4Y29udGV4dDsKKyAgICBtcGRfdCAqeiA9IHJlc3VsdDsgICAgICAgICAvKiBjdXJyZW50IGFwcHJveGltYXRpb24gKi8KKyAgICBtcGRfdCAqdjsgICAgICAgICAgICAgICAgICAvKiBhLCBub3JtYWxpemVkIHRvIGEgbnVtYmVyIGJldHdlZW4gMC4xIGFuZCAxICovCisgICAgTVBEX05FV19TSEFSRUQodnRtcCwgYSk7ICAgLyogdiBzaGFyZXMgZGF0YSB3aXRoIGEgKi8KKyAgICBNUERfTkVXX1NUQVRJQyhzLDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX1NUQVRJQyh0LDAsMCwwLDApOyAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgKi8KKyAgICBNUERfTkVXX0NPTlNUKHR3bywwLDAsMSwxLDEsMik7IC8qIGNvbnN0IDIgKi8KKyAgICBtcGRfc3NpemVfdCBrbGlzdFtNUERfTUFYX1BSRUNfTE9HMl07CisgICAgbXBkX3NzaXplX3QgYWRqLCBtYXhwcmVjLCBpbml0cHJlYzsKKyAgICB1aW50OF90IHNpZ24gPSBtcGRfc2lnbihhKTsKKyAgICBpbnQgaTsKKworICAgIGFzc2VydChyZXN1bHQgIT0gYSk7CisKKyAgICB2ID0gJnZ0bXA7CisgICAgbXBkX2NsZWFyX2ZsYWdzKHYpOworICAgIGFkaiA9IHYtPmRpZ2l0cyArIHYtPmV4cDsKKyAgICB2LT5leHAgPSAtdi0+ZGlnaXRzOworCisgICAgLyogSW5pdGlhbCBhcHByb3hpbWF0aW9uICovCisgICAgX21wZF9xcmVjaXByb2NhbF9hcHByb3goeiwgdiwgc3RhdHVzKTsKKworICAgIG1wZF9tYXhjb250ZXh0KCZ2YXJjb250ZXh0KTsKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgdmFyY29udGV4dC5yb3VuZCA9IG1heGNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfVFJVTkM7CisgICAgdmFyY29udGV4dC5lbWF4ID0gbWF4Y29udGV4dC5lbWF4ID0gTVBEX01BWF9FTUFYICsgMTAwOworICAgIHZhcmNvbnRleHQuZW1pbiA9IG1heGNvbnRleHQuZW1pbiA9IE1QRF9NSU5fRU1JTiAtIDEwMDsKKyAgICBtYXhjb250ZXh0LnByZWMgPSBNUERfTUFYX1BSRUMgKyAxMDA7CisKKyAgICBtYXhwcmVjID0gY3R4LT5wcmVjOworICAgIG1heHByZWMgKz0gMjsKKyAgICBpbml0cHJlYyA9IE1QRF9SRElHSVRTLTM7CisKKyAgICBpID0gcmVjcHJfc2NoZWR1bGVfcHJlYyhrbGlzdCwgbWF4cHJlYywgaW5pdHByZWMpOworICAgIGZvciAoOyBpID49IDA7IGktLSkgeworICAgICAgICAgLyogTG9vcCBpbnZhcmlhbnQ6IHotPmRpZ2l0cyA8PSBrbGlzdFtpXSs3ICovCisgICAgICAgICAvKiBMZXQgcyA6PSB6KioyLCBleGFjdCByZXN1bHQgKi8KKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZzLCB6LCB6LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICAgICAgdmFyY29udGV4dC5wcmVjID0gMiprbGlzdFtpXSArIDU7CisgICAgICAgIGlmICh2LT5kaWdpdHMgPiB2YXJjb250ZXh0LnByZWMpIHsKKyAgICAgICAgICAgIC8qIExldCB0IDo9IHYsIHRydW5jYXRlZCB0byBuID49IDIqays1IGZyYWN0aW9uIGRpZ2l0cyAqLworICAgICAgICAgICAgbXBkX3FzaGlmdHIoJnQsIHYsIHYtPmRpZ2l0cy12YXJjb250ZXh0LnByZWMsIHN0YXR1cyk7CisgICAgICAgICAgICB0LmV4cCA9IC12YXJjb250ZXh0LnByZWM7CisgICAgICAgICAgICAvKiBMZXQgdCA6PSB0cnVuYyh2KSpzLCB0cnVuY2F0ZWQgdG8gbiA+PSAyKmsrMSBmcmFjdGlvbiBkaWdpdHMgKi8KKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCAmdCwgJnMsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvKiB2LT5kaWdpdHMgPD0gMiprKzUgKi8KKyAgICAgICAgICAgIC8qIExldCB0IDo9IHYqcywgdHJ1bmNhdGVkIHRvIG4gPj0gMiprKzEgZnJhY3Rpb24gZGlnaXRzICovCisgICAgICAgICAgICBtcGRfcW11bCgmdCwgdiwgJnMsICZ2YXJjb250ZXh0LCBzdGF0dXMpOworICAgICAgICB9CisgICAgICAgIC8qIExldCBzIDo9IDIqeiwgZXhhY3QgcmVzdWx0ICovCisgICAgICAgIF9tcGRfcW11bF9leGFjdCgmcywgeiwgJnR3bywgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgICAgIC8qIHMuZGlnaXRzIDwgdC5kaWdpdHMgPD0gMiprKzUsIHxhZGpleHAocyktYWRqZXhwKHQpfCA8PSAxLAorICAgICAgICAgKiBzbyB0aGUgc3VidHJhY3Rpb24gZ2VuZXJhdGVzIGF0IG1vc3QgMiprKzYgPD0ga2xpc3RbaSsxXSs3CisgICAgICAgICAqIGRpZ2l0cy4gVGhlIGxvb3AgaW52YXJpYW50IGlzIHByZXNlcnZlZC4gKi8KKyAgICAgICAgX21wZF9xc3ViX2V4YWN0KHosICZzLCAmdCwgJm1heGNvbnRleHQsIHN0YXR1cyk7CisgICAgfQorCisgICAgaWYgKCFtcGRfaXNzcGVjaWFsKHopKSB7CisgICAgICAgIHotPmV4cCAtPSBhZGo7CisgICAgICAgIG1wZF9zZXRfZmxhZ3Moeiwgc2lnbik7CisgICAgfQorCisgICAgbXBkX2RlbCgmcyk7CisgICAgbXBkX2RlbCgmdCk7CisgICAgbXBkX3FmaW5hbGl6ZSh6LCBjdHgsIHN0YXR1cyk7Cit9CisKKy8qCisgKiBJbnRlcm5hbCBmdW5jdGlvbiBmb3IgbGFyZ2UgbnVtYmVyczoKKyAqCisgKiAgICAgcSwgciA9IGRpdm1vZChjb2VmZihhKSwgY29lZmYoYikpCisgKgorICogU3RyYXRlZ3k6IE11bHRpcGx5IHRoZSBkaXZpZGVuZCBieSB0aGUgcmVjaXByb2NhbCBvZiB0aGUgZGl2aXNvci4gVGhlCisgKiBpbmV4YWN0IHJlc3VsdCBpcyBmaXhlZCBieSBhIHNtYWxsIGxvb3AsIHVzaW5nIGF0IG1vc3Qgb25lIGl0ZXJhdGlvbi4KKyAqCisgKiBBQ0wyIHByb29mczoKKyAqIC0tLS0tLS0tLS0tLQorICogICAgMSkgcSBpcyBhIG5hdHVyYWwgbnVtYmVyLiAgKG5kaXZtb2QtcXVvdGllbnQtbmF0cCkKKyAqICAgIDIpIHIgaXMgYSBuYXR1cmFsIG51bWJlci4gIChuZGl2bW9kLXJlbWFpbmRlci1uYXRwKQorICogICAgMykgYSA9IHEgKiBiICsgciAgICAgICAgICAgKG5kaXZtb2QtcSpiK3I9PWEpCisgKiAgICA0KSByIDwgYiAgICAgICAgICAgICAgICAgICAobmRpdm1vZC1yZW1haW5kZXItPC1iKQorICovCitzdGF0aWMgdm9pZAorX21wZF9iYXNlX25kaXZtb2QobXBkX3QgKnEsIG1wZF90ICpyLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsCisgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKyAgICBtcGRfdCAqcXEgPSBxLCAqcnIgPSByOworICAgIG1wZF90IGFhLCBiYjsKKyAgICBpbnQgazsKKworICAgIF9tcGRfY29weV9zaGFyZWQoJmFhLCBhKTsKKyAgICBfbXBkX2NvcHlfc2hhcmVkKCZiYiwgYik7CisKKyAgICBtcGRfc2V0X3Bvc2l0aXZlKCZhYSk7CisgICAgbXBkX3NldF9wb3NpdGl2ZSgmYmIpOworICAgIGFhLmV4cCA9IDA7CisgICAgYmIuZXhwID0gMDsKKworICAgIGlmIChxID09IGEgfHwgcSA9PSBiKSB7CisgICAgICAgIGlmICgocXEgPSBtcGRfcW5ldygpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAociA9PSBhIHx8IHIgPT0gYikgeworICAgICAgICBpZiAoKHJyID0gbXBkX3FuZXcoKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfTWFsbG9jX2Vycm9yOworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtcGRfbWF4Y29udGV4dCgmd29ya2N0eCk7CisKKyAgICAvKiBMZXQgcHJlYyA6PSBhZGlnaXRzIC0gYmRpZ2l0cyArIDQgKi8KKyAgICB3b3JrY3R4LnByZWMgPSBhLT5kaWdpdHMgLSBiLT5kaWdpdHMgKyAxICsgMzsKKyAgICBpZiAoYS0+ZGlnaXRzID4gTVBEX01BWF9QUkVDIHx8IHdvcmtjdHgucHJlYyA+IE1QRF9NQVhfUFJFQykgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlOworICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBMZXQgeCA6PSBfbXBkX3FyZWNpcHJvY2FsKGIsIHByZWMpIAorICAgICAqIFRoZW4geCBpcyBib3VuZGVkIGJ5OgorICAgICAqICAgIDEpIDEvYiAtIDEwKiooLXByZWMgLSBiZGlnaXRzKSA8IHggPCAxL2IgKyAxMCoqKC1wcmVjIC0gYmRpZ2l0cykKKyAgICAgKiAgICAyKSAxL2IgLSAxMCoqKC1hZGlnaXRzIC0gNCkgPCB4IDwgMS9iICsgMTAqKigtYWRpZ2l0cyAtIDQpCisgICAgICovCisgICAgX21wZF9xcmVjaXByb2NhbChyciwgJmJiLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKworICAgIC8qIEdldCBhbiBlc3RpbWF0ZSBmb3IgdGhlIHF1b3RpZW50LiBMZXQgcSA6PSBhICogeAorICAgICAqIFRoZW4gcSBpcyBib3VuZGVkIGJ5OgorICAgICAqICAgIDMpIGEvYiAtIDEwKiotNCA8IHEgPCBhL2IgKyAxMCoqLTQKKyAgICAgKi8KKyAgICBfbXBkX3FtdWwocXEsICZhYSwgcnIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIC8qIFRydW5jYXRlIHEgdG8gYW4gaW50ZWdlcjoKKyAgICAgKiAgICA0KSBhL2IgLSAyIDwgdHJ1bmMocSkgPCBhL2IgKyAxCisgICAgICovCisgICAgbXBkX3F0cnVuYyhxcSwgcXEsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworCisgICAgd29ya2N0eC5wcmVjID0gYWEuZGlnaXRzICsgMzsKKyAgICB3b3JrY3R4LmVtYXggPSBNUERfTUFYX0VNQVggKyAzOworICAgIHdvcmtjdHguZW1pbiA9IE1QRF9NSU5fRU1JTiAtIDM7CisgICAgLyogTXVsdGlwbHkgdGhlIGVzdGltYXRlIGZvciBxIGJ5IGI6CisgICAgICogICAgNSkgYSAtIDIgKiBiIDwgdHJ1bmMocSkgKiBiIDwgYSArIGIKKyAgICAgKi8KKyAgICBfbXBkX3FtdWwocnIsICZiYiwgcXEsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgIC8qIEdldCB0aGUgZXN0aW1hdGUgZm9yIHIgc3VjaCB0aGF0IGEgPSBxICogYiArIHIuICovCisgICAgX21wZF9xc3ViX2V4YWN0KHJyLCAmYWEsIHJyLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKworICAgIC8qIEZpeCB0aGUgcmVzdWx0LiBBdCB0aGlzIHBvaW50IC1iIDwgciA8IDIqYiwgc28gdGhlIGNvcnJlY3Rpb24gbG9vcAorICAgICAgIHRha2VzIGF0IG1vc3Qgb25lIGl0ZXJhdGlvbi4gKi8KKyAgICBmb3IgKGsgPSAwOzsgaysrKSB7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHFxKSB8fCBtcGRfaXNzcGVjaWFsKHJyKSkgeworICAgICAgICAgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBpZiAoayA+IDIpIHsgLyogQWxsb3cgdHdvIGl0ZXJhdGlvbnMgZGVzcGl0ZSB0aGUgcHJvb2YuICovCisgICAgICAgICAgICBtcGRfZXJyX3dhcm4oImxpYm1wZGVjOiBpbnRlcm5hbCBlcnJvciBpbiAiICAgICAgIC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAiX21wZF9iYXNlX25kaXZtb2Q6IHBsZWFzZSByZXBvcnQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgICAgICAgICAgKnN0YXR1cyB8PSBNUERfSW52YWxpZF9vcGVyYXRpb247ICAgICAgICAgICAgICAgICAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgICAgICBnb3RvIG5hbnJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgfQorICAgICAgICAvKiByIDwgMCAqLworICAgICAgICBlbHNlIGlmIChfbXBkX2NtcCgmemVybywgcnIpID09IDEpIHsKKyAgICAgICAgICAgIF9tcGRfcWFkZF9leGFjdChyciwgcnIsICZiYiwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgICAgICBfbXBkX3FhZGRfZXhhY3QocXEsIHFxLCAmbWludXNfb25lLCAmd29ya2N0eCwgJndvcmtjdHguc3RhdHVzKTsKKyAgICAgICAgfQorICAgICAgICAvKiAwIDw9IHIgPCBiICovCisgICAgICAgIGVsc2UgaWYgKF9tcGRfY21wKHJyLCAmYmIpID09IC0xKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvKiByID49IGIgKi8KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfbXBkX3FzdWJfZXhhY3QocnIsIHJyLCAmYmIsICZ3b3JrY3R4LCAmd29ya2N0eC5zdGF0dXMpOworICAgICAgICAgICAgX21wZF9xYWRkX2V4YWN0KHFxLCBxcSwgJm9uZSwgJndvcmtjdHgsICZ3b3JrY3R4LnN0YXR1cyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAocXEgIT0gcSkgeworICAgICAgICBpZiAoIW1wZF9xY29weShxLCBxcSwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBuYW5yZXN1bHQ7IC8qIEdDT1ZfVU5MSUtFTFkgKi8KKyAgICAgICAgfQorICAgICAgICBtcGRfZGVsKHFxKTsKKyAgICB9CisgICAgaWYgKHJyICE9IHIpIHsKKyAgICAgICAgaWYgKCFtcGRfcWNvcHkociwgcnIsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbmFucmVzdWx0OyAvKiBHQ09WX1VOTElLRUxZICovCisgICAgICAgIH0KKyAgICAgICAgbXBkX2RlbChycik7CisgICAgfQorCisgICAgKnN0YXR1cyB8PSAod29ya2N0eC5zdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgcmV0dXJuOworCisKK25hbnJlc3VsdDoKKyAgICBpZiAocXEgJiYgcXEgIT0gcSkgbXBkX2RlbChxcSk7CisgICAgaWYgKHJyICYmIHJyICE9IHIpIG1wZF9kZWwocnIpOworICAgIG1wZF9zZXRzcGVjaWFsKHEsIE1QRF9QT1MsIE1QRF9OQU4pOworICAgIG1wZF9zZXRzcGVjaWFsKHIsIE1QRF9QT1MsIE1QRF9OQU4pOworfQorCisvKiBMSUJNUERFQ19PTkxZICovCisvKgorICogU2NoZWR1bGUgdGhlIG9wdGltYWwgcHJlY2lzaW9uIGluY3JlYXNlIGZvciB0aGUgTmV3dG9uIGl0ZXJhdGlvbi4KKyAqICAgdiA6PSBpbnB1dCBvcGVyYW5kCisgKiAgIHpfMCA6PSBpbml0aWFsIGFwcHJveGltYXRpb24KKyAqICAgaW5pdHByZWMgOj0gbmF0dXJhbCBudW1iZXIgc3VjaCB0aGF0IGFicyhzcXJ0KHYpIC0gel8wKSA8IDEwKiotaW5pdHByZWMKKyAqICAgbWF4cHJlYyA6PSB0YXJnZXQgcHJlY2lzaW9uCisgKgorICogRm9yIGNvbnZlbmllbmNlIHRoZSBvdXRwdXQga2xpc3QgY29udGFpbnMgdGhlIGVsZW1lbnRzIGluIHJldmVyc2Ugb3JkZXI6CisgKiAgIGtsaXN0IDo9IFtrX24tMSwgLi4uLCBrXzBdLCB3aGVyZQorICogICAgIDEpIGtfMCA8PSBpbml0cHJlYyBhbmQKKyAqICAgICAyKSBhYnMoc3FydCh2KSAtIHJlc3VsdCkgPCAxMCoqKC0yKmtfbi0xICsgMikgPD0gMTAqKi1tYXhwcmVjLgorICovCitzdGF0aWMgaW5saW5lIGludAoraW52cm9vdF9zY2hlZHVsZV9wcmVjKG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXSwKKyAgICAgICAgICAgICAgICAgICAgICBtcGRfc3NpemVfdCBtYXhwcmVjLCBtcGRfc3NpemVfdCBpbml0cHJlYykKK3sKKyAgICBtcGRfc3NpemVfdCBrOworICAgIGludCBpOworCisgICAgYXNzZXJ0KG1heHByZWMgPj0gMyAmJiBpbml0cHJlYyA+PSAzKTsKKyAgICBpZiAobWF4cHJlYyA8PSBpbml0cHJlYykgcmV0dXJuIC0xOworCisgICAgaSA9IDA7IGsgPSBtYXhwcmVjOworICAgIGRvIHsKKyAgICAgICAgayA9IChrKzMpIC8gMjsKKyAgICAgICAga2xpc3RbaSsrXSA9IGs7CisgICAgfSB3aGlsZSAoayA+IGluaXRwcmVjKTsKKworICAgIHJldHVybiBpLTE7Cit9CisKKy8qCisgKiBJbml0aWFsIGFwcHJveGltYXRpb24gZm9yIHRoZSBpbnZlcnNlIHNxdWFyZSByb290IGZ1bmN0aW9uLgorICogICBJbnB1dDoKKyAqICAgICB2IDo9IHJhdGlvbmFsIG51bWJlciwgd2l0aCAxIDw9IHYgPCAxMDAKKyAqICAgICB2aGF0IDo9IGZsb29yKHYgKiAxMCoqNikKKyAqICAgT3V0cHV0OgorICogICAgIHogOj0gYXBwcm94aW1hdGlvbiB0byAxL3NxcnQodiksIHN1Y2ggdGhhdCBhYnMoeiAtIDEvc3FydCh2KSkgPCAxMCoqLTMuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorX2ludnJvb3RfaW5pdF9hcHByb3gobXBkX3QgKnosIG1wZF91aW50X3QgdmhhdCkKK3sKKyAgICBtcGRfdWludF90IGxvID0gMTAwMDsKKyAgICBtcGRfdWludF90IGhpID0gMTAwMDA7CisgICAgbXBkX3VpbnRfdCBhLCBzcTsKKworICAgIGFzc2VydChsbypsbyA8PSB2aGF0ICYmIHZoYXQgPCAoaGkrMSkqKGhpKzEpKTsKKworICAgIGZvcig7OykgeworICAgICAgICBhID0gKGxvICsgaGkpIC8gMjsKKyAgICAgICAgc3EgPSBhICogYTsKKyAgICAgICAgaWYgKHZoYXQgPj0gc3EpIHsKKyAgICAgICAgICAgIGlmICh2aGF0IDwgc3EgKyAyKmEgKyAxKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsbyA9IGEgKyAxOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaGkgPSBhIC0gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogQWZ0ZXIgdGhlIGJpbmFyeSBzZWFyY2ggd2UgaGF2ZToKKyAgICAgKiAgMSkgYSoqMiA8PSBmbG9vcih2ICogMTAqKjYpIDwgKGEgKyAxKSoqMgorICAgICAqIFRoaXMgaW1wbGllczoKKyAgICAgKiAgMikgYSoqMiA8PSB2ICogMTAqKjYgPCAoYSArIDEpKioyCisgICAgICogIDMpIGEgPD0gc3FydCh2KSAqIDEwKiozIDwgYSArIDEKKyAgICAgKiBTaW5jZSAxMCoqMyA8PSBhOgorICAgICAqICA0KSAwIDw9IDEwKipwcmVjL2EgLSAxL3NxcnQodikgPCAxMCoqLXByZWMKKyAgICAgKiBXZSBoYXZlOgorICAgICAqICA1KSAxMCoqMy9hIC0gMTAqKi0zIDwgZmxvb3IoMTAqKjkvYSkgKiAxMCoqLTYgPD0gMTAqKjMvYQorICAgICAqIE1lcmdpbmcgNCkgYW5kIDUpOgorICAgICAqICA2KSBhYnMoZmxvb3IoMTAqKjkvYSkgKiAxMCoqLTYgLSAxL3NxcnQodikpIDwgMTAqKi0zCisgICAgICovCisgICAgbXBkX21pbmFsbG9jKHopOworICAgIG1wZF9jbGVhcl9mbGFncyh6KTsKKyAgICB6LT5kYXRhWzBdID0gMTAwMDAwMDAwMFVMIC8gYTsKKyAgICB6LT5sZW4gPSAxOworICAgIHotPmV4cCA9IC02OworICAgIG1wZF9zZXRkaWdpdHMoeik7Cit9CisKKy8qCisgKiBTZXQgJ3Jlc3VsdCcgdG8gMS9zcXJ0KGEpLgorICogICBSZWxhdGl2ZSBlcnJvcjogYWJzKHJlc3VsdCAtIDEvc3FydChhKSkgPCAxMCoqLXByZWMgKiAxL3NxcnQoYSkKKyAqLworc3RhdGljIHZvaWQKK19tcGRfcWludnJvb3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICB1aW50MzJfdCB3b3Jrc3RhdHVzID0gMDsKKyAgICBtcGRfY29udGV4dF90IHZhcmNvbnRleHQsIG1heGNvbnRleHQ7CisgICAgbXBkX3QgKnogPSByZXN1bHQ7ICAgICAgICAgLyogY3VycmVudCBhcHByb3hpbWF0aW9uICovCisgICAgbXBkX3QgKnY7ICAgICAgICAgICAgICAgICAgLyogYSwgbm9ybWFsaXplZCB0byBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDEwMCAqLworICAgIE1QRF9ORVdfU0hBUkVEKHZ0bXAsIGEpOyAgIC8qIGJ5IGRlZmF1bHQgdiB3aWxsIHNoYXJlIGRhdGEgd2l0aCBhICovCisgICAgTVBEX05FV19TVEFUSUMocywwLDAsMCwwKTsgLyogdGVtcG9yYXJ5IHZhcmlhYmxlICovCisgICAgTVBEX05FV19TVEFUSUModCwwLDAsMCwwKTsgLyogdGVtcG9yYXJ5IHZhcmlhYmxlICovCisgICAgTVBEX05FV19DT05TVChvbmVfaGFsZiwwLC0xLDEsMSwxLDUpOworICAgIE1QRF9ORVdfQ09OU1QodGhyZWUsMCwwLDEsMSwxLDMpOworICAgIG1wZF9zc2l6ZV90IGtsaXN0W01QRF9NQVhfUFJFQ19MT0cyXTsKKyAgICBtcGRfc3NpemVfdCBpZGVhbF9leHAsIHNoaWZ0OworICAgIG1wZF9zc2l6ZV90IGFkaiwgdHo7CisgICAgbXBkX3NzaXplX3QgbWF4cHJlYywgZnJhY2RpZ2l0czsKKyAgICBtcGRfdWludF90IHZoYXQsIGR1bW15OworICAgIGludCBpLCBuOworCisKKyAgICBpZGVhbF9leHAgPSAtKGEtPmV4cCAtIChhLT5leHAgJiAxKSkgLyAyOworCisgICAgdiA9ICZ2dG1wOworICAgIGlmIChyZXN1bHQgPT0gYSkgeworICAgICAgICBpZiAoKHYgPSBtcGRfcW5jb3B5KGEpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLyogbm9ybWFsaXplIGEgdG8gMSA8PSB2IDwgMTAwICovCisgICAgaWYgKCh2LT5kaWdpdHMrdi0+ZXhwKSAmIDEpIHsKKyAgICAgICAgZnJhY2RpZ2l0cyA9IHYtPmRpZ2l0cyAtIDE7CisgICAgICAgIHYtPmV4cCA9IC1mcmFjZGlnaXRzOworICAgICAgICBuID0gKHYtPmRpZ2l0cyA+IDcpID8gNyA6IChpbnQpdi0+ZGlnaXRzOworICAgICAgICAvKiBMZXQgdmhhdCA6PSBmbG9vcih2ICogMTAqKigyKmluaXRwcmVjKSkgKi8KKyAgICAgICAgX21wZF9nZXRfbXNkaWdpdHMoJmR1bW15LCAmdmhhdCwgdiwgbik7CisgICAgICAgIGlmIChuIDwgNykgeworICAgICAgICAgICAgdmhhdCAqPSBtcGRfcG93MTBbNy1uXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnJhY2RpZ2l0cyA9IHYtPmRpZ2l0cyAtIDI7CisgICAgICAgIHYtPmV4cCA9IC1mcmFjZGlnaXRzOworICAgICAgICBuID0gKHYtPmRpZ2l0cyA+IDgpID8gOCA6IChpbnQpdi0+ZGlnaXRzOworICAgICAgICAvKiBMZXQgdmhhdCA6PSBmbG9vcih2ICogMTAqKigyKmluaXRwcmVjKSkgKi8KKyAgICAgICAgX21wZF9nZXRfbXNkaWdpdHMoJmR1bW15LCAmdmhhdCwgdiwgbik7CisgICAgICAgIGlmIChuIDwgOCkgeworICAgICAgICAgICAgdmhhdCAqPSBtcGRfcG93MTBbOC1uXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhZGogPSAoYS0+ZXhwLXYtPmV4cCkgLyAyOworCisgICAgLyogaW5pdGlhbCBhcHByb3hpbWF0aW9uICovCisgICAgX2ludnJvb3RfaW5pdF9hcHByb3goeiwgdmhhdCk7CisKKyAgICBtcGRfbWF4Y29udGV4dCgmbWF4Y29udGV4dCk7CisgICAgbXBkX21heGNvbnRleHQoJnZhcmNvbnRleHQpOworICAgIHZhcmNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfVFJVTkM7CisgICAgbWF4cHJlYyA9IGN0eC0+cHJlYyArIDE7CisKKyAgICAvKiBpbml0cHJlYyA9PSAzICovCisgICAgaSA9IGludnJvb3Rfc2NoZWR1bGVfcHJlYyhrbGlzdCwgbWF4cHJlYywgMyk7CisgICAgZm9yICg7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgIHZhcmNvbnRleHQucHJlYyA9IDIqa2xpc3RbaV0rMjsKKyAgICAgICAgbXBkX3FtdWwoJnMsIHosIHosICZtYXhjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgICAgIGlmICh2LT5kaWdpdHMgPiB2YXJjb250ZXh0LnByZWMpIHsKKyAgICAgICAgICAgIHNoaWZ0ID0gdi0+ZGlnaXRzIC0gdmFyY29udGV4dC5wcmVjOworICAgICAgICAgICAgbXBkX3FzaGlmdHIoJnQsIHYsIHNoaWZ0LCAmd29ya3N0YXR1cyk7CisgICAgICAgICAgICB0LmV4cCArPSBzaGlmdDsKKyAgICAgICAgICAgIG1wZF9xbXVsKCZ0LCAmdCwgJnMsICZ2YXJjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtcGRfcW11bCgmdCwgdiwgJnMsICZ2YXJjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgICAgIH0KKyAgICAgICAgbXBkX3FzdWIoJnQsICZ0aHJlZSwgJnQsICZtYXhjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgICAgIG1wZF9xbXVsKHosIHosICZ0LCAmdmFyY29udGV4dCwgJndvcmtzdGF0dXMpOworICAgICAgICBtcGRfcW11bCh6LCB6LCAmb25lX2hhbGYsICZtYXhjb250ZXh0LCAmd29ya3N0YXR1cyk7CisgICAgfQorCisgICAgei0+ZXhwIC09IGFkajsKKworICAgIHR6ID0gbXBkX3RyYWlsX3plcm9zKHJlc3VsdCk7CisgICAgc2hpZnQgPSBpZGVhbF9leHAgLSByZXN1bHQtPmV4cDsKKyAgICBzaGlmdCA9ICh0eiA+IHNoaWZ0KSA/IHNoaWZ0IDogdHo7CisgICAgaWYgKHNoaWZ0ID4gMCkgeworICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgc2hpZnQpOworICAgICAgICByZXN1bHQtPmV4cCArPSBzaGlmdDsKKyAgICB9CisKKworICAgIG1wZF9kZWwoJnMpOworICAgIG1wZF9kZWwoJnQpOworICAgIGlmICh2ICE9ICZ2dG1wKSBtcGRfZGVsKHYpOworICAgICpzdGF0dXMgfD0gKHdvcmtzdGF0dXMmTVBEX0Vycm9ycyk7CisgICAgKnN0YXR1cyB8PSAoTVBEX1JvdW5kZWR8TVBEX0luZXhhY3QpOworfQorCit2b2lkCittcGRfcWludnJvb3QobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwKKyAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9jb250ZXh0X3Qgd29ya2N0eDsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKGEpKSB7CisgICAgICAgIGlmIChtcGRfcWNoZWNrX25hbihyZXN1bHQsIGEsIGN0eCwgc3RhdHVzKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChtcGRfaXNuZWdhdGl2ZShhKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIC8qIHBvc2l0aXZlIGluZmluaXR5ICovCisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBNUERfUE9TLCAwLCBtcGRfZXRpbnkoY3R4KSk7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0NsYW1wZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgbXBkX3NldHNwZWNpYWwocmVzdWx0LCBtcGRfc2lnbihhKSwgTVBEX0lORik7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0RpdmlzaW9uX2J5X3plcm87CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1wZF9pc25lZ2F0aXZlKGEpKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdvcmtjdHggPSAqY3R4OworICAgIHdvcmtjdHgucHJlYyArPSAyOworICAgIHdvcmtjdHgucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworICAgIF9tcGRfcWludnJvb3QocmVzdWx0LCBhLCAmd29ya2N0eCwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorLyogRU5EIExJQk1QREVDX09OTFkgKi8KKworLyogQWxnb3JpdGhtIGZyb20gZGVjaW1hbC5weSAqLwordm9pZAorbXBkX3FzcXJ0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsCisgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfY29udGV4dF90IG1heGNvbnRleHQ7CisgICAgTVBEX05FV19TVEFUSUMoYywwLDAsMCwwKTsKKyAgICBNUERfTkVXX1NUQVRJQyhxLDAsMCwwLDApOworICAgIE1QRF9ORVdfU1RBVElDKHIsMCwwLDAsMCk7CisgICAgTVBEX05FV19DT05TVCh0d28sMCwwLDEsMSwxLDIpOworICAgIG1wZF9zc2l6ZV90IHByZWMsIGlkZWFsX2V4cDsKKyAgICBtcGRfc3NpemVfdCBsLCBzaGlmdDsKKyAgICBpbnQgZXhhY3QgPSAwOworCisKKyAgICBpZGVhbF9leHAgPSAoYS0+ZXhwIC0gKGEtPmV4cCAmIDEpKSAvIDI7CisKKyAgICBpZiAobXBkX2lzc3BlY2lhbChhKSkgeworICAgICAgICBpZiAobXBkX3FjaGVja19uYW4ocmVzdWx0LCBhLCBjdHgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtcGRfc2V0c3BlY2lhbChyZXN1bHQsIE1QRF9QT1MsIE1QRF9JTkYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChtcGRfaXN6ZXJvKGEpKSB7CisgICAgICAgIF9zZXR0cmlwbGUocmVzdWx0LCBtcGRfc2lnbihhKSwgMCwgaWRlYWxfZXhwKTsKKyAgICAgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobXBkX2lzbmVnYXRpdmUoYSkpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX21heGNvbnRleHQoJm1heGNvbnRleHQpOworICAgIHByZWMgPSBjdHgtPnByZWMgKyAxOworCisgICAgaWYgKCFtcGRfcWNvcHkoJmMsIGEsIHN0YXR1cykpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorICAgIGMuZXhwID0gMDsKKworICAgIGlmIChhLT5leHAgJiAxKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJmMsICZjLCAxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBsID0gKGEtPmRpZ2l0cyA+PiAxKSArIDE7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBsID0gKGEtPmRpZ2l0cyArIDEpID4+IDE7CisgICAgfQorCisgICAgc2hpZnQgPSBwcmVjIC0gbDsKKyAgICBpZiAoc2hpZnQgPj0gMCkgeworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZjLCAmYywgMipzaGlmdCwgc3RhdHVzKSkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZXhhY3QgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXhhY3QgPSAhbXBkX3FzaGlmdHJfaW5wbGFjZSgmYywgLTIqc2hpZnQpOworICAgIH0KKworICAgIGlkZWFsX2V4cCAtPSBzaGlmdDsKKworICAgIC8qIGZpbmQgcmVzdWx0ID0gZmxvb3Ioc3FydChjKSkgdXNpbmcgTmV3dG9uJ3MgbWV0aG9kICovCisgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsICZvbmUsIHByZWMsIHN0YXR1cykpIHsKKyAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgfQorCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgX21wZF9xZGl2bW9kKCZxLCAmciwgJmMsIHJlc3VsdCwgJm1heGNvbnRleHQsICZtYXhjb250ZXh0LnN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkgfHwgbXBkX2lzc3BlY2lhbCgmcSkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIG1heGNvbnRleHQuc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoX21wZF9jbXAocmVzdWx0LCAmcSkgPD0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgX21wZF9xYWRkX2V4YWN0KHJlc3VsdCwgcmVzdWx0LCAmcSwgJm1heGNvbnRleHQsICZtYXhjb250ZXh0LnN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKHJlc3VsdCkpIHsKKyAgICAgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIG1heGNvbnRleHQuc3RhdHVzJk1QRF9FcnJvcnMsIHN0YXR1cyk7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBfbXBkX3FkaXZtb2QocmVzdWx0LCAmciwgcmVzdWx0LCAmdHdvLCAmbWF4Y29udGV4dCwgJm1heGNvbnRleHQuc3RhdHVzKTsKKyAgICB9CisKKyAgICBpZiAoZXhhY3QpIHsKKyAgICAgICAgX21wZF9xbXVsX2V4YWN0KCZyLCByZXN1bHQsIHJlc3VsdCwgJm1heGNvbnRleHQsICZtYXhjb250ZXh0LnN0YXR1cyk7CisgICAgICAgIGlmIChtcGRfaXNzcGVjaWFsKCZyKSkgeworICAgICAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgbWF4Y29udGV4dC5zdGF0dXMmTVBEX0Vycm9ycywgc3RhdHVzKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIGV4YWN0ID0gKF9tcGRfY21wKCZyLCAmYykgPT0gMCk7CisgICAgfQorCisgICAgaWYgKGV4YWN0KSB7CisgICAgICAgIGlmIChzaGlmdCA+PSAwKSB7CisgICAgICAgICAgICBtcGRfcXNoaWZ0cl9pbnBsYWNlKHJlc3VsdCwgc2hpZnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFtcGRfcXNoaWZ0bChyZXN1bHQsIHJlc3VsdCwgLXNoaWZ0LCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWRlYWxfZXhwICs9IHNoaWZ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGxzZCA9IChpbnQpbXBkX2xzZChyZXN1bHQtPmRhdGFbMF0pOworICAgICAgICBpZiAobHNkID09IDAgfHwgbHNkID09IDUpIHsKKyAgICAgICAgICAgIHJlc3VsdC0+ZGF0YVswXSArPSAxOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0LT5leHAgPSBpZGVhbF9leHA7CisKKworb3V0OgorICAgIG1wZF9kZWwoJmMpOworICAgIG1wZF9kZWwoJnEpOworICAgIG1wZF9kZWwoJnIpOworICAgIG1heGNvbnRleHQgPSAqY3R4OworICAgIG1heGNvbnRleHQucm91bmQgPSBNUERfUk9VTkRfSEFMRl9FVkVOOworICAgIG1wZF9xZmluYWxpemUocmVzdWx0LCAmbWF4Y29udGV4dCwgc3RhdHVzKTsKKyAgICByZXR1cm47CisKK21hbGxvY19lcnJvcjoKKyAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgIGdvdG8gb3V0OworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2UgY29udmVyc2lvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogU3BhY2UgbmVlZGVkIHRvIHJlcHJlc2VudCBhbiBpbnRlZ2VyIG1wZF90IGluIGJhc2UgJ2Jhc2UnLiAqLworc2l6ZV90CittcGRfc2l6ZWluYmFzZShjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYmFzZSkKK3sKKyAgICBkb3VibGUgeDsKKyAgICBzaXplX3QgZGlnaXRzOworCisgICAgYXNzZXJ0KG1wZF9pc2ludGVnZXIoYSkpOworICAgIGFzc2VydChiYXNlID49IDIpOworCisgICAgaWYgKG1wZF9pc3plcm8oYSkpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZGlnaXRzID0gYS0+ZGlnaXRzK2EtPmV4cDsKKyAgICBhc3NlcnQoZGlnaXRzID4gMCk7CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICAvKiBjZWlsKDI3MTE0MzcxNTI1OTkyOTQgLyBsb2cxMCgyKSkgKyA0ID09IDIqKjUzICovCisgICAgaWYgKGRpZ2l0cyA+IDI3MTE0MzcxNTI1OTkyOTRVTEwpIHsKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgIH0KKyNlbmRpZgorCisgICAgeCA9IChkb3VibGUpZGlnaXRzIC8gbG9nMTAoYmFzZSk7CisgICAgcmV0dXJuICh4ID4gU0laRV9NQVgtMSkgPyBTSVpFX01BWCA6IChzaXplX3QpeCArIDE7Cit9CisKKy8qIFNwYWNlIG5lZWRlZCB0byBpbXBvcnQgYSBiYXNlICdiYXNlJyBpbnRlZ2VyIG9mIGxlbmd0aCAnc3JjbGVuJy4gKi8KK3N0YXRpYyBtcGRfc3NpemVfdAorX21wZF9pbXBvcnRzaXplKHNpemVfdCBzcmNsZW4sIHVpbnQzMl90IGJhc2UpCit7CisgICAgZG91YmxlIHg7CisKKyAgICBhc3NlcnQoc3JjbGVuID4gMCk7CisgICAgYXNzZXJ0KGJhc2UgPj0gMik7CisKKyNpZiBTSVpFX01BWCA9PSBVSU5UNjRfTUFYCisgICAgaWYgKHNyY2xlbiA+ICgxVUxMPDw1MykpIHsKKyAgICAgICAgcmV0dXJuIE1QRF9TU0laRV9NQVg7CisgICAgfQorI2VuZGlmCisKKyAgICB4ID0gKGRvdWJsZSlzcmNsZW4gKiAobG9nMTAoYmFzZSkvTVBEX1JESUdJVFMpOworICAgIHJldHVybiAoeCA+PSBNUERfTUFYSU1QT1JUKSA/IE1QRF9TU0laRV9NQVggOiAobXBkX3NzaXplX3QpeCArIDE7Cit9CisKK3N0YXRpYyB1aW50OF90CittcGRfcmVzaXplX3UxNih1aW50MTZfdCAqKncsIHNpemVfdCBubWVtYikKK3sKKyAgICB1aW50OF90IGVyciA9IDA7CisgICAgKncgPSBtcGRfcmVhbGxvYygqdywgbm1lbWIsIHNpemVvZiAqKncsICZlcnIpOworICAgIHJldHVybiAhZXJyOworfQorCitzdGF0aWMgdWludDhfdAorbXBkX3Jlc2l6ZV91MzIodWludDMyX3QgKip3LCBzaXplX3Qgbm1lbWIpCit7CisgICAgdWludDhfdCBlcnIgPSAwOworICAgICp3ID0gbXBkX3JlYWxsb2MoKncsIG5tZW1iLCBzaXplb2YgKip3LCAmZXJyKTsKKyAgICByZXR1cm4gIWVycjsKK30KKworc3RhdGljIHNpemVfdAorX2Jhc2Vjb252X3RvX3UxNih1aW50MTZfdCAqKncsIHNpemVfdCB3bGVuLCBtcGRfdWludF90IHdiYXNlLAorICAgICAgICAgICAgICAgICBtcGRfdWludF90ICp1LCBtcGRfc3NpemVfdCB1bGVuKQoreworICAgIHNpemVfdCBuID0gMDsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHdiYXNlIDw9ICgxVTw8MTYpKTsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgaWYgKCFtcGRfcmVzaXplX3UxNih3LCBuKzEpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgfQorICAgICAgICAoKncpW24rK10gPSAodWludDE2X3QpX21wZF9zaG9ydGRpdih1LCB1LCB1bGVuLCB3YmFzZSk7CisgICAgICAgIC8qIHVsZW4gaXMgYXQgbGVhc3QgMS4gdVt1bGVuLTFdIGNhbiBvbmx5IGJlIHplcm8gaWYgdWxlbiA9PSAxLiAqLworICAgICAgICB1bGVuID0gX21wZF9yZWFsX3NpemUodSwgdWxlbik7CisKKyAgICB9IHdoaWxlICh1W3VsZW4tMV0gIT0gMCk7CisKKyAgICByZXR1cm4gbjsKK30KKworc3RhdGljIHNpemVfdAorX2NvZWZmX2Zyb21fdTE2KG1wZF90ICp3LCBtcGRfc3NpemVfdCB3bGVuLAorICAgICAgICAgICAgICAgIGNvbnN0IG1wZF91aW50X3QgKnUsIHNpemVfdCB1bGVuLCB1aW50MzJfdCB1YmFzZSwKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF9zc2l6ZV90IG4gPSAwOworICAgIG1wZF91aW50X3QgY2Fycnk7CisKKyAgICBhc3NlcnQod2xlbiA+IDAgJiYgdWxlbiA+IDApOworICAgIGFzc2VydCh1YmFzZSA8PSAoMVU8PDE2KSk7CisKKyAgICB3LT5kYXRhW24rK10gPSB1Wy0tdWxlbl07CisgICAgd2hpbGUgKC0tdWxlbiAhPSBTSVpFX01BWCkgeworICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRtdWxfYyh3LT5kYXRhLCB3LT5kYXRhLCBuLCB1YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHctPmRhdGFbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgICAgIGNhcnJ5ID0gX21wZF9zaG9ydGFkZCh3LT5kYXRhLCBuLCB1W3VsZW5dKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcXJlc2l6ZSh3LCBuKzEsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdy0+ZGF0YVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworLyogdGFyZ2V0IGJhc2Ugd2Jhc2UgPCBzb3VyY2UgYmFzZSB1YmFzZSAqLworc3RhdGljIHNpemVfdAorX2Jhc2Vjb252X3RvX3NtYWxsZXIodWludDMyX3QgKip3LCBzaXplX3Qgd2xlbiwgdWludDMyX3Qgd2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBtcGRfdWludF90ICp1LCBtcGRfc3NpemVfdCB1bGVuLCBtcGRfdWludF90IHViYXNlKQoreworICAgIHNpemVfdCBuID0gMDsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHdiYXNlIDwgdWJhc2UpOworCisgICAgZG8geworICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTMyKHcsIG4rMSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICB9CisgICAgICAgICgqdylbbisrXSA9ICh1aW50MzJfdClfbXBkX3Nob3J0ZGl2X2IodSwgdSwgdWxlbiwgd2Jhc2UsIHViYXNlKTsKKyAgICAgICAgLyogdWxlbiBpcyBhdCBsZWFzdCAxLiB1W3VsZW4tMV0gY2FuIG9ubHkgYmUgemVybyBpZiB1bGVuID09IDEuICovCisgICAgICAgIHVsZW4gPSBfbXBkX3JlYWxfc2l6ZSh1LCB1bGVuKTsKKworICAgIH0gd2hpbGUgKHVbdWxlbi0xXSAhPSAwKTsKKworICAgIHJldHVybiBuOworfQorCisjaWZkZWYgQ09ORklHXzMyCisvKiB0YXJnZXQgYmFzZSAnd2Jhc2UnID09IHNvdXJjZSBiYXNlICd1YmFzZScgKi8KK3N0YXRpYyBzaXplX3QKK19jb3B5X2VxdWFsX2Jhc2UodWludDMyX3QgKip3LCBzaXplX3Qgd2xlbiwKKyAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3QgKnUsIHNpemVfdCB1bGVuKQoreworICAgIGlmICh3bGVuIDwgdWxlbikgeworICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTMyKHcsIHVsZW4pKSB7CisgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtZW1jcHkoKncsIHUsIHVsZW4gKiAoc2l6ZW9mICoqdykpOworICAgIHJldHVybiB1bGVuOworfQorCisvKiB0YXJnZXQgYmFzZSAnd2Jhc2UnID4gc291cmNlIGJhc2UgJ3ViYXNlJyAqLworc3RhdGljIHNpemVfdAorX2Jhc2Vjb252X3RvX2xhcmdlcih1aW50MzJfdCAqKncsIHNpemVfdCB3bGVuLCBtcGRfdWludF90IHdiYXNlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdWludF90ICp1LCBzaXplX3QgdWxlbiwgbXBkX3VpbnRfdCB1YmFzZSkKK3sKKyAgICBzaXplX3QgbiA9IDA7CisgICAgbXBkX3VpbnRfdCBjYXJyeTsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHViYXNlIDwgd2Jhc2UpOworCisgICAgKCp3KVtuKytdID0gdVstLXVsZW5dOworICAgIHdoaWxlICgtLXVsZW4gIT0gU0laRV9NQVgpIHsKKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0bXVsX2IoKncsICp3LCBuLCB1YmFzZSwgd2Jhc2UpOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9yZXNpemVfdTMyKHcsIG4rMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3bGVuID0gbisxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKCp3KVtuKytdID0gY2Fycnk7CisgICAgICAgIH0KKyAgICAgICAgY2FycnkgPSBfbXBkX3Nob3J0YWRkX2IoKncsIG4sIHVbdWxlbl0sIHdiYXNlKTsKKyAgICAgICAgaWYgKGNhcnJ5KSB7CisgICAgICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtcGRfcmVzaXplX3UzMih3LCBuKzEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICgqdylbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKKy8qIHRhcmdldCBiYXNlIHdiYXNlIDwgc291cmNlIGJhc2UgdWJhc2UgKi8KK3N0YXRpYyBzaXplX3QKK19jb2VmZl9mcm9tX2xhcmdlcl9iYXNlKG1wZF90ICp3LCBzaXplX3Qgd2xlbiwgbXBkX3VpbnRfdCB3YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgKnUsIG1wZF9zc2l6ZV90IHVsZW4sIG1wZF91aW50X3QgdWJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIHNpemVfdCBuID0gMDsKKworICAgIGFzc2VydCh3bGVuID4gMCAmJiB1bGVuID4gMCk7CisgICAgYXNzZXJ0KHdiYXNlIDwgdWJhc2UpOworCisgICAgZG8geworICAgICAgICBpZiAobiA+PSB3bGVuKSB7CisgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHcsIG4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgIH0KKyAgICAgICAgdy0+ZGF0YVtuKytdID0gKHVpbnQzMl90KV9tcGRfc2hvcnRkaXZfYih1LCB1LCB1bGVuLCB3YmFzZSwgdWJhc2UpOworICAgICAgICAvKiB1bGVuIGlzIGF0IGxlYXN0IDEuIHVbdWxlbi0xXSBjYW4gb25seSBiZSB6ZXJvIGlmIHVsZW4gPT0gMS4gKi8KKyAgICAgICAgdWxlbiA9IF9tcGRfcmVhbF9zaXplKHUsIHVsZW4pOworCisgICAgfSB3aGlsZSAodVt1bGVuLTFdICE9IDApOworCisgICAgcmV0dXJuIG47Cit9CisjZW5kaWYKKworLyogdGFyZ2V0IGJhc2UgJ3diYXNlJyA+IHNvdXJjZSBiYXNlICd1YmFzZScgKi8KK3N0YXRpYyBzaXplX3QKK19jb2VmZl9mcm9tX3NtYWxsZXJfYmFzZShtcGRfdCAqdywgbXBkX3NzaXplX3Qgd2xlbiwgbXBkX3VpbnRfdCB3YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCAqdSwgc2l6ZV90IHVsZW4sIG1wZF91aW50X3QgdWJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgKnN0YXR1cykKK3sKKyAgICBtcGRfc3NpemVfdCBuID0gMDsKKyAgICBtcGRfdWludF90IGNhcnJ5OworCisgICAgYXNzZXJ0KHdsZW4gPiAwICYmIHVsZW4gPiAwKTsKKyAgICBhc3NlcnQod2Jhc2UgPiB1YmFzZSk7CisKKyAgICB3LT5kYXRhW24rK10gPSB1Wy0tdWxlbl07CisgICAgd2hpbGUgKC0tdWxlbiAhPSBTSVpFX01BWCkgeworICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRtdWxfYih3LT5kYXRhLCB3LT5kYXRhLCBuLCB1YmFzZSwgd2Jhc2UpOworICAgICAgICBpZiAoY2FycnkpIHsKKyAgICAgICAgICAgIGlmIChuID49IHdsZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1wZF9xcmVzaXplKHcsIG4rMSwgc3RhdHVzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdsZW4gPSBuKzE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3LT5kYXRhW24rK10gPSBjYXJyeTsKKyAgICAgICAgfQorICAgICAgICBjYXJyeSA9IF9tcGRfc2hvcnRhZGRfYih3LT5kYXRhLCBuLCB1W3VsZW5dLCB3YmFzZSk7CisgICAgICAgIGlmIChjYXJyeSkgeworICAgICAgICAgICAgaWYgKG4gPj0gd2xlbikgeworICAgICAgICAgICAgICAgIGlmICghbXBkX3FyZXNpemUodywgbisxLCBzdGF0dXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2xlbiA9IG4rMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHctPmRhdGFbbisrXSA9IGNhcnJ5OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG47Cit9CisKKy8qCisgKiBDb252ZXJ0IGFuIGludGVnZXIgbXBkX3QgdG8gYSBtdWx0aXByZWNpc2lvbiBpbnRlZ2VyIHdpdGggYmFzZSA8PSAyKioxNi4KKyAqIFRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkIG9mIHRoZSByZXN1bHQgaXMgKCpyZGF0YSlbMF0uCisgKgorICogSWYgcmRhdGEgaXMgTlVMTCwgc3BhY2UgaXMgYWxsb2NhdGVkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgcmxlbiBpcyBpcnJlbGV2YW50LgorICogSW4gY2FzZSBvZiBhbiBlcnJvciBhbnkgYWxsb2NhdGVkIHN0b3JhZ2UgaXMgZnJlZWQgYW5kIHJkYXRhIGlzIHNldCBiYWNrIHRvCisgKiBOVUxMLgorICoKKyAqIElmIHJkYXRhIGlzIG5vbi1OVUxMLCBpdCBNVVNUIGJlIGFsbG9jYXRlZCBieSBvbmUgb2YgbGlibXBkZWMncyBhbGxvY2F0aW9uCisgKiBmdW5jdGlvbnMgYW5kIHJsZW4gTVVTVCBiZSBjb3JyZWN0LiBJZiBuZWNlc3NhcnksIHRoZSBmdW5jdGlvbiB3aWxsIHJlc2l6ZQorICogcmRhdGEuIEluIGNhc2Ugb2YgYW4gZXJyb3IgdGhlIGNhbGxlciBtdXN0IGZyZWUgcmRhdGEuCisgKgorICogUmV0dXJuIHZhbHVlOiBJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBleGFjdCBsZW5ndGggb2YgcmRhdGEsIFNJWkVfTUFYCisgKiBvdGhlcndpc2UuCisgKi8KK3NpemVfdAorbXBkX3FleHBvcnRfdTE2KHVpbnQxNl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCByYmFzZSwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqc3JjLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKHRzcmMsMCwwLDAsMCk7CisgICAgaW50IGFsbG9jID0gMDsgLyogcmRhdGEgPT0gTlVMTCAqLworICAgIHNpemVfdCBuOworCisgICAgYXNzZXJ0KHJiYXNlIDw9ICgxVTw8MTYpKTsKKworICAgIGlmIChtcGRfaXNzcGVjaWFsKHNyYykgfHwgIV9tcGRfaXNpbnQoc3JjKSkgeworICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgIH0KKworICAgIGlmICgqcmRhdGEgPT0gTlVMTCkgeworICAgICAgICBybGVuID0gbXBkX3NpemVpbmJhc2Uoc3JjLCByYmFzZSk7CisgICAgICAgIGlmIChybGVuID09IFNJWkVfTUFYKSB7CisgICAgICAgICAgICAqc3RhdHVzIHw9IE1QRF9JbnZhbGlkX29wZXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBTSVpFX01BWDsKKyAgICAgICAgfQorICAgICAgICAqcmRhdGEgPSBtcGRfYWxsb2Mocmxlbiwgc2l6ZW9mICoqcmRhdGEpOworICAgICAgICBpZiAoKnJkYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgICAgIGFsbG9jID0gMTsKKyAgICB9CisKKyAgICBpZiAobXBkX2lzemVybyhzcmMpKSB7CisgICAgICAgICoqcmRhdGEgPSAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAoc3JjLT5leHAgPj0gMCkgeworICAgICAgICBpZiAoIW1wZF9xc2hpZnRsKCZ0c3JjLCBzcmMsIHNyYy0+ZXhwLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1wZF9xc2hpZnRyKCZ0c3JjLCBzcmMsIC1zcmMtPmV4cCwgc3RhdHVzKSA9PSBNUERfVUlOVF9NQVgpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorCisgICAgbiA9IF9iYXNlY29udl90b191MTYocmRhdGEsIHJsZW4sIHJiYXNlLCB0c3JjLmRhdGEsIHRzcmMubGVuKTsKKyAgICBpZiAobiA9PSBTSVpFX01BWCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKworb3V0OgorICAgIG1wZF9kZWwoJnRzcmMpOworICAgIHJldHVybiBuOworCittYWxsb2NfZXJyb3I6CisgICAgaWYgKGFsbG9jKSB7CisgICAgICAgIG1wZF9mcmVlKCpyZGF0YSk7CisgICAgICAgICpyZGF0YSA9IE5VTEw7CisgICAgfQorICAgIG4gPSBTSVpFX01BWDsKKyAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgZ290byBvdXQ7Cit9CisKKy8qCisgKiBDb252ZXJ0IGFuIGludGVnZXIgbXBkX3QgdG8gYSBtdWx0aXByZWNpc2lvbiBpbnRlZ2VyIHdpdGggYmFzZTw9VUlOVDMyX01BWC4KKyAqIFRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkIG9mIHRoZSByZXN1bHQgaXMgKCpyZGF0YSlbMF0uCisgKgorICogSWYgcmRhdGEgaXMgTlVMTCwgc3BhY2UgaXMgYWxsb2NhdGVkIGJ5IHRoZSBmdW5jdGlvbiBhbmQgcmxlbiBpcyBpcnJlbGV2YW50LgorICogSW4gY2FzZSBvZiBhbiBlcnJvciBhbnkgYWxsb2NhdGVkIHN0b3JhZ2UgaXMgZnJlZWQgYW5kIHJkYXRhIGlzIHNldCBiYWNrIHRvCisgKiBOVUxMLgorICoKKyAqIElmIHJkYXRhIGlzIG5vbi1OVUxMLCBpdCBNVVNUIGJlIGFsbG9jYXRlZCBieSBvbmUgb2YgbGlibXBkZWMncyBhbGxvY2F0aW9uCisgKiBmdW5jdGlvbnMgYW5kIHJsZW4gTVVTVCBiZSBjb3JyZWN0LiBJZiBuZWNlc3NhcnksIHRoZSBmdW5jdGlvbiB3aWxsIHJlc2l6ZQorICogcmRhdGEuIEluIGNhc2Ugb2YgYW4gZXJyb3IgdGhlIGNhbGxlciBtdXN0IGZyZWUgcmRhdGEuCisgKgorICogUmV0dXJuIHZhbHVlOiBJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBleGFjdCBsZW5ndGggb2YgcmRhdGEsIFNJWkVfTUFYCisgKiBvdGhlcndpc2UuCisgKi8KK3NpemVfdAorbXBkX3FleHBvcnRfdTMyKHVpbnQzMl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCByYmFzZSwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqc3JjLCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIE1QRF9ORVdfU1RBVElDKHRzcmMsMCwwLDAsMCk7CisgICAgaW50IGFsbG9jID0gMDsgLyogcmRhdGEgPT0gTlVMTCAqLworICAgIHNpemVfdCBuOworCisgICAgaWYgKG1wZF9pc3NwZWNpYWwoc3JjKSB8fCAhX21wZF9pc2ludChzcmMpKSB7CisgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICByZXR1cm4gU0laRV9NQVg7CisgICAgfQorCisgICAgaWYgKCpyZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIHJsZW4gPSBtcGRfc2l6ZWluYmFzZShzcmMsIHJiYXNlKTsKKyAgICAgICAgaWYgKHJsZW4gPT0gU0laRV9NQVgpIHsKKyAgICAgICAgICAgICpzdGF0dXMgfD0gTVBEX0ludmFsaWRfb3BlcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIFNJWkVfTUFYOworICAgICAgICB9CisgICAgICAgICpyZGF0YSA9IG1wZF9hbGxvYyhybGVuLCBzaXplb2YgKipyZGF0YSk7CisgICAgICAgIGlmICgqcmRhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgYWxsb2MgPSAxOworICAgIH0KKworICAgIGlmIChtcGRfaXN6ZXJvKHNyYykpIHsKKyAgICAgICAgKipyZGF0YSA9IDA7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmIChzcmMtPmV4cCA+PSAwKSB7CisgICAgICAgIGlmICghbXBkX3FzaGlmdGwoJnRzcmMsIHNyYywgc3JjLT5leHAsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIGdvdG8gbWFsbG9jX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAobXBkX3FzaGlmdHIoJnRzcmMsIHNyYywgLXNyYy0+ZXhwLCBzdGF0dXMpID09IE1QRF9VSU5UX01BWCkgeworICAgICAgICAgICAgZ290byBtYWxsb2NfZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBuID0gX2Jhc2Vjb252X3RvX3NtYWxsZXIocmRhdGEsIHJsZW4sIHJiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0c3JjLmRhdGEsIHRzcmMubGVuLCBNUERfUkFESVgpOworI2Vsc2UKKyAgICBpZiAocmJhc2UgPT0gTVBEX1JBRElYKSB7CisgICAgICAgIG4gPSBfY29weV9lcXVhbF9iYXNlKHJkYXRhLCBybGVuLCB0c3JjLmRhdGEsIHRzcmMubGVuKTsKKyAgICB9CisgICAgZWxzZSBpZiAocmJhc2UgPCBNUERfUkFESVgpIHsKKyAgICAgICAgbiA9IF9iYXNlY29udl90b19zbWFsbGVyKHJkYXRhLCBybGVuLCByYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzcmMuZGF0YSwgdHNyYy5sZW4sIE1QRF9SQURJWCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuID0gX2Jhc2Vjb252X3RvX2xhcmdlcihyZGF0YSwgcmxlbiwgcmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRzcmMuZGF0YSwgdHNyYy5sZW4sIE1QRF9SQURJWCk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobiA9PSBTSVpFX01BWCkgeworICAgICAgICBnb3RvIG1hbGxvY19lcnJvcjsKKyAgICB9CisKKworb3V0OgorICAgIG1wZF9kZWwoJnRzcmMpOworICAgIHJldHVybiBuOworCittYWxsb2NfZXJyb3I6CisgICAgaWYgKGFsbG9jKSB7CisgICAgICAgIG1wZF9mcmVlKCpyZGF0YSk7CisgICAgICAgICpyZGF0YSA9IE5VTEw7CisgICAgfQorICAgIG4gPSBTSVpFX01BWDsKKyAgICAqc3RhdHVzIHw9IE1QRF9NYWxsb2NfZXJyb3I7CisgICAgZ290byBvdXQ7Cit9CisKKworLyoKKyAqIENvbnZlcnRzIGEgbXVsdGlwcmVjaXNpb24gaW50ZWdlciB3aXRoIGJhc2UgPD0gVUlOVDE2X01BWCsxIHRvIGFuIG1wZF90LgorICogVGhlIGxlYXN0IHNpZ25pZmljYW50IHdvcmQgb2YgdGhlIHNvdXJjZSBpcyBzcmNkYXRhWzBdLgorICovCit2b2lkCittcGRfcWltcG9ydF91MTYobXBkX3QgKnJlc3VsdCwKKyAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc3JjZGF0YSwgc2l6ZV90IHNyY2xlbiwKKyAgICAgICAgICAgICAgICB1aW50OF90IHNyY3NpZ24sIHVpbnQzMl90IHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKQoreworICAgIG1wZF91aW50X3QgKnVzcmM7IC8qIHVpbnQxNl90IHNyYyBjb3BpZWQgdG8gYW4gbXBkX3VpbnRfdCBhcnJheSAqLworICAgIG1wZF9zc2l6ZV90IHJsZW47IC8qIGxlbmd0aCBvZiB0aGUgcmVzdWx0ICovCisgICAgc2l6ZV90IG47CisKKyAgICBhc3NlcnQoc3JjbGVuID4gMCk7CisgICAgYXNzZXJ0KHNyY2Jhc2UgPD0gKDFVPDwxNikpOworCisgICAgcmxlbiA9IF9tcGRfaW1wb3J0c2l6ZShzcmNsZW4sIHNyY2Jhc2UpOworICAgIGlmIChybGVuID09IE1QRF9TU0laRV9NQVgpIHsKKyAgICAgICAgbXBkX3NldGVycm9yKHJlc3VsdCwgTVBEX0ludmFsaWRfb3BlcmF0aW9uLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdXNyYyA9IG1wZF9hbGxvYygobXBkX3NpemVfdClzcmNsZW4sIHNpemVvZiAqdXNyYyk7CisgICAgaWYgKHVzcmMgPT0gTlVMTCkgeworICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGZvciAobiA9IDA7IG4gPCBzcmNsZW47IG4rKykgeworICAgICAgICB1c3JjW25dID0gc3JjZGF0YVtuXTsKKyAgICB9CisKKyAgICBpZiAoIW1wZF9xcmVzaXplKHJlc3VsdCwgcmxlbiwgc3RhdHVzKSkgeworICAgICAgICBnb3RvIGZpbmlzaDsKKyAgICB9CisKKyAgICBuID0gX2NvZWZmX2Zyb21fdTE2KHJlc3VsdCwgcmxlbiwgdXNyYywgc3JjbGVuLCBzcmNiYXNlLCBzdGF0dXMpOworICAgIGlmIChuID09IFNJWkVfTUFYKSB7CisgICAgICAgIGdvdG8gZmluaXNoOworICAgIH0KKworICAgIG1wZF9zZXRfZmxhZ3MocmVzdWx0LCBzcmNzaWduKTsKKyAgICByZXN1bHQtPmV4cCA9IDA7CisgICAgcmVzdWx0LT5sZW4gPSBuOworICAgIG1wZF9zZXRkaWdpdHMocmVzdWx0KTsKKworICAgIG1wZF9xcmVzaXplKHJlc3VsdCwgcmVzdWx0LT5sZW4sIHN0YXR1cyk7CisgICAgbXBkX3FmaW5hbGl6ZShyZXN1bHQsIGN0eCwgc3RhdHVzKTsKKworCitmaW5pc2g6CisgICAgbXBkX2ZyZWUodXNyYyk7Cit9CisKKy8qCisgKiBDb252ZXJ0cyBhIG11bHRpcHJlY2lzaW9uIGludGVnZXIgd2l0aCBiYXNlIDw9IFVJTlQzMl9NQVggdG8gYW4gbXBkX3QuCisgKiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgd29yZCBvZiB0aGUgc291cmNlIGlzIHNyY2RhdGFbMF0uCisgKi8KK3ZvaWQKK21wZF9xaW1wb3J0X3UzMihtcGRfdCAqcmVzdWx0LAorICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90ICpzcmNkYXRhLCBzaXplX3Qgc3JjbGVuLAorICAgICAgICAgICAgICAgIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3Qgc3JjYmFzZSwKKyAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpCit7CisgICAgbXBkX3NzaXplX3QgcmxlbjsgLyogbGVuZ3RoIG9mIHRoZSByZXN1bHQgKi8KKyAgICBzaXplX3QgbjsKKworICAgIGFzc2VydChzcmNsZW4gPiAwKTsKKworICAgIHJsZW4gPSBfbXBkX2ltcG9ydHNpemUoc3JjbGVuLCBzcmNiYXNlKTsKKyAgICBpZiAocmxlbiA9PSBNUERfU1NJWkVfTUFYKSB7CisgICAgICAgIG1wZF9zZXRlcnJvcihyZXN1bHQsIE1QRF9JbnZhbGlkX29wZXJhdGlvbiwgc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBybGVuLCBzdGF0dXMpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZmRlZiBDT05GSUdfNjQKKyAgICBuID0gX2NvZWZmX2Zyb21fc21hbGxlcl9iYXNlKHJlc3VsdCwgcmxlbiwgTVBEX1JBRElYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjZGF0YSwgc3JjbGVuLCBzcmNiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzKTsKKyNlbHNlCisgICAgaWYgKHNyY2Jhc2UgPT0gTVBEX1JBRElYKSB7CisgICAgICAgIGlmICghbXBkX3FyZXNpemUocmVzdWx0LCBzcmNsZW4sIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkocmVzdWx0LT5kYXRhLCBzcmNkYXRhLCBzcmNsZW4gKiAoc2l6ZW9mICpzcmNkYXRhKSk7CisgICAgICAgIG4gPSBzcmNsZW47CisgICAgfQorICAgIGVsc2UgaWYgKHNyY2Jhc2UgPCBNUERfUkFESVgpIHsKKyAgICAgICAgbiA9IF9jb2VmZl9mcm9tX3NtYWxsZXJfYmFzZShyZXN1bHQsIHJsZW4sIE1QRF9SQURJWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNkYXRhLCBzcmNsZW4sIHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG1wZF91aW50X3QgKnVzcmMgPSBtcGRfYWxsb2MoKG1wZF9zaXplX3Qpc3JjbGVuLCBzaXplb2YgKnVzcmMpOworICAgICAgICBpZiAodXNyYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBtcGRfc2V0ZXJyb3IocmVzdWx0LCBNUERfTWFsbG9jX2Vycm9yLCBzdGF0dXMpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZvciAobiA9IDA7IG4gPCBzcmNsZW47IG4rKykgeworICAgICAgICAgICAgdXNyY1tuXSA9IHNyY2RhdGFbbl07CisgICAgICAgIH0KKworICAgICAgICBuID0gX2NvZWZmX2Zyb21fbGFyZ2VyX2Jhc2UocmVzdWx0LCBybGVuLCBNUERfUkFESVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3JjLCAobXBkX3NzaXplX3Qpc3JjbGVuLCBzcmNiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzKTsKKyAgICAgICAgbXBkX2ZyZWUodXNyYyk7CisgICAgfQorI2VuZGlmCisKKyAgICBpZiAobiA9PSBTSVpFX01BWCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbXBkX3NldF9mbGFncyhyZXN1bHQsIHNyY3NpZ24pOworICAgIHJlc3VsdC0+ZXhwID0gMDsKKyAgICByZXN1bHQtPmxlbiA9IG47CisgICAgbXBkX3NldGRpZ2l0cyhyZXN1bHQpOworCisgICAgbXBkX3FyZXNpemUocmVzdWx0LCByZXN1bHQtPmxlbiwgc3RhdHVzKTsKKyAgICBtcGRfcWZpbmFsaXplKHJlc3VsdCwgY3R4LCBzdGF0dXMpOworfQorCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzMWM3MQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgKQEAgLTAsMCArMSw4MDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgTVBERUNJTUFMX0gKKyNkZWZpbmUgTVBERUNJTUFMX0gKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2RlZmluZSBfX1NURENfTElNSVRfTUFDUk9TCisjZW5kaWYKKworCisjaWZuZGVmIF9NU0NfVkVSCisgICNpbmNsdWRlICJweWNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCisjaWZkZWYgX01TQ19WRVIKKyAgI2luY2x1ZGUgInZjY29tcGF0LmgiCisgICNpZm5kZWYgVU5VU0VECisgICAgI2RlZmluZSBVTlVTRUQKKyAgI2VuZGlmCisgICNkZWZpbmUgRVhUSU5MSU5FIGV4dGVybiBpbmxpbmUKKyNlbHNlCisgICNpZmRlZiBIQVZFX1NURElOVF9ICisgICAgI2luY2x1ZGUgPHN0ZGludC5oPgorICAjZW5kaWYKKyAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorICAgICNpbmNsdWRlIDxpbnR0eXBlcy5oPgorICAjZW5kaWYKKyAgI2lmbmRlZiBfX0dOVUNfU1REQ19JTkxJTkVfXworICAgICNkZWZpbmUgX19HTlVDX1NURENfSU5MSU5FX18KKyAgI2VuZGlmCisgICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQorICAgICNkZWZpbmUgVU5VU0VEIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCisgICNlbHNlCisgICAgI2RlZmluZSBVTlVTRUQKKyAgI2VuZGlmCisgICNkZWZpbmUgRVhUSU5MSU5FCisjZW5kaWYKKworCisjaWYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorICAjaWYgIWRlZmluZWQoVUlOVDY0X01BWCkKKyAgICAvKiBUaGUgZm9sbG93aW5nICNlcnJvciBpcyBqdXN0IGEgd2FybmluZy4gSWYgdGhlIGNvbXBpbGVyIGluZGVlZCBkb2VzCisgICAgICogbm90IGhhdmUgdWludDY0X3QsIGl0IGlzIHBlcmZlY3RseSBzYWZlIHRvIGNvbW1lbnQgb3V0IHRoZSAjZXJyb3IuICovCisgICAgI2Vycm9yICJXYXJuaW5nOiBDb21waWxlciB3aXRob3V0IHVpbnQ2NF90LiBDb21tZW50IG91dCB0aGlzIGxpbmUuIgorICAgICNkZWZpbmUgTEVHQUNZX0NPTVBJTEVSCisgICNlbmRpZgorI2VuZGlmCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWYgZGVmaW5lZChVTklWRVJTQUwpCisgICNpZiBkZWZpbmVkKENPTkZJR182NCkgfHwgZGVmaW5lZChDT05GSUdfMzIpCisgICAgI2Vycm9yICJjYW5ub3QgdXNlIENPTkZJR182NCBvciBDT05GSUdfMzIgd2l0aCBVTklWRVJTQUwuIgorICAjZW5kaWYKKyAgI2lmIGRlZmluZWQoX19wcGNfXykKKyAgICAjZGVmaW5lIENPTkZJR18zMgorICAgICNkZWZpbmUgQU5TSQorICAjZWxpZiBkZWZpbmVkKF9fcHBjNjRfXykKKyAgICAjZGVmaW5lIENPTkZJR182NAorICAgICNkZWZpbmUgQU5TSQorICAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICNkZWZpbmUgQ09ORklHXzMyCisgICAgI2RlZmluZSBBTlNJCisgICNlbGlmIGRlZmluZWQoX194ODZfNjRfXykKKyAgICAjZGVmaW5lIENPTkZJR182NAorICAgICNkZWZpbmUgQVNNCisgICNlbHNlCisgICAgI2Vycm9yICJ1bmtub3duIGFyY2hpdGVjdHVyZSBmb3IgdW5pdmVyc2FsIGJ1aWxkLiIKKyAgI2VuZGlmCisjZW5kaWYKKworCisvKiBCRUdJTiBDT05GSUdfNjQgKi8KKyNpZiBkZWZpbmVkKENPTkZJR182NCkKKy8qIHR5cGVzIGZvciBtb2R1bGFyIGFuZCBiYXNlIGFyaXRobWV0aWMgKi8KKyNkZWZpbmUgTVBEX1VJTlRfTUFYIFVJTlQ2NF9NQVgKKyNkZWZpbmUgTVBEX0JJVFNfUEVSX1VJTlQgNjQKK3R5cGVkZWYgdWludDY0X3QgbXBkX3VpbnRfdDsgIC8qIHVuc2lnbmVkIG1vZCB0eXBlICovCisKKyNkZWZpbmUgTVBEX1NJWkVfTUFYIFNJWkVfTUFYCit0eXBlZGVmIHNpemVfdCBtcGRfc2l6ZV90OyAvKiB1bnNpZ25lZCBzaXplIHR5cGUgKi8KKworLyogdHlwZSBmb3IgZXhwLCBkaWdpdHMsIGxlbiwgcHJlYyAqLworI2RlZmluZSBNUERfU1NJWkVfTUFYIElOVDY0X01BWAorI2RlZmluZSBNUERfU1NJWkVfTUlOIElOVDY0X01JTgordHlwZWRlZiBpbnQ2NF90IG1wZF9zc2l6ZV90OworI2RlZmluZSBfbXBkX3N0cnRvc3NpemUgc3RydG9sbAorCisvKiBkZWNpbWFsIGFyaXRobWV0aWMgKi8KKyNkZWZpbmUgTVBEX1JBRElYIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMICAvKiAxMCoqMTkgKi8KKyNkZWZpbmUgTVBEX1JESUdJVFMgMTkKKyNkZWZpbmUgTVBEX01BWF9QT1cxMCAxOQorI2RlZmluZSBNUERfRVhQRElHSVRTIDE5ICAvKiBNUERfRVhQRElHSVRTIDw9IE1QRF9SRElHSVRTKzEgKi8KKworI2RlZmluZSBNUERfTUFYVFJBTlNGT1JNXzJOIDQyOTQ5NjcyOTZVTEwgICAgICAvKiAyKiozMiAqLworI2RlZmluZSBNUERfTUFYX1BSRUMgOTk5OTk5OTk5OTk5OTk5OTk5TEwKKyNkZWZpbmUgTVBEX01BWF9QUkVDX0xPRzIgNjQKKyNkZWZpbmUgTVBEX0VMSU1JVCAgMTAwMDAwMDAwMDAwMDAwMDAwMExMCisjZGVmaW5lIE1QRF9NQVhfRU1BWCAgIDk5OTk5OTk5OTk5OTk5OTk5OUxMICAgIC8qIEVMSU1JVC0xICovCisjZGVmaW5lIE1QRF9NSU5fRU1JTiAgKC05OTk5OTk5OTk5OTk5OTk5OTlMTCkgIC8qIC1FTUFYICovCisjZGVmaW5lIE1QRF9NSU5fRVRJTlkgKE1QRF9NSU5fRU1JTi0oTVBEX01BWF9QUkVDLTEpKQorI2RlZmluZSBNUERfRVhQX0lORiAyMDAwMDAwMDAwMDAwMDAwMDAxTEwKKyNkZWZpbmUgTVBEX0VYUF9DTEFNUCAoLTQwMDAwMDAwMDAwMDAwMDAwMDFMTCkKKyNkZWZpbmUgTVBEX01BWElNUE9SVCAxMDUyNjMxNTc4OTQ3MzY4NDJMIC8qIGNlaWwoKDIqTVBEX01BWF9QUkVDKS9NUERfUkRJR0lUUykgKi8KKworLyogY29udmVyc2lvbiBzcGVjaWZpZXJzICovCisjZGVmaW5lIFBSSV9tcGRfdWludF90IFBSSXU2NAorI2RlZmluZSBQUklfbXBkX3NzaXplX3QgUFJJaTY0CisvKiBFTkQgQ09ORklHXzY0ICovCisKKworLyogQkVHSU4gQ09ORklHXzMyICovCisjZWxpZiBkZWZpbmVkKENPTkZJR18zMikKKy8qIHR5cGVzIGZvciBtb2R1bGFyIGFuZCBiYXNlIGFyaXRobWV0aWMgKi8KKyNkZWZpbmUgTVBEX1VJTlRfTUFYIFVJTlQzMl9NQVgKKyNkZWZpbmUgTVBEX0JJVFNfUEVSX1VJTlQgMzIKK3R5cGVkZWYgdWludDMyX3QgbXBkX3VpbnRfdDsgIC8qIHVuc2lnbmVkIG1vZCB0eXBlICovCisKKyNpZm5kZWYgTEVHQUNZX0NPTVBJTEVSCisjZGVmaW5lIE1QRF9VVUlOVF9NQVggVUlOVDY0X01BWAordHlwZWRlZiB1aW50NjRfdCBtcGRfdXVpbnRfdDsgLyogZG91YmxlIHdpZHRoIHVuc2lnbmVkIG1vZCB0eXBlICovCisjZW5kaWYKKworI2RlZmluZSBNUERfU0laRV9NQVggU0laRV9NQVgKK3R5cGVkZWYgc2l6ZV90IG1wZF9zaXplX3Q7IC8qIHVuc2lnbmVkIHNpemUgdHlwZSAqLworCisvKiB0eXBlIGZvciBkZWMtPmxlbiwgZGVjLT5leHAsIGN0eC0+cHJlYyAqLworI2RlZmluZSBNUERfU1NJWkVfTUFYIElOVDMyX01BWAorI2RlZmluZSBNUERfU1NJWkVfTUlOIElOVDMyX01JTgordHlwZWRlZiBpbnQzMl90IG1wZF9zc2l6ZV90OworI2RlZmluZSBfbXBkX3N0cnRvc3NpemUgc3RydG9sCisKKy8qIGRlY2ltYWwgYXJpdGhtZXRpYyAqLworI2RlZmluZSBNUERfUkFESVggMTAwMDAwMDAwMFVMICAvKiAxMCoqOSAqLworI2RlZmluZSBNUERfUkRJR0lUUyA5CisjZGVmaW5lIE1QRF9NQVhfUE9XMTAgOQorI2RlZmluZSBNUERfRVhQRElHSVRTIDEwIC8qIE1QRF9FWFBESUdJVFMgPD0gTVBEX1JESUdJVFMrMSAqLworCisjZGVmaW5lIE1QRF9NQVhUUkFOU0ZPUk1fMk4gMzM1NTQ0MzJVTCAvKiAyKioyNSAqLworI2RlZmluZSBNUERfTUFYX1BSRUMgNDI1MDAwMDAwTAorI2RlZmluZSBNUERfTUFYX1BSRUNfTE9HMiAzMgorI2RlZmluZSBNUERfRUxJTUlUIDQyNTAwMDAwMUwKKyNkZWZpbmUgTVBEX01BWF9FTUFYIDQyNTAwMDAwMEwgICAgICAgIC8qIEVMSU1JVC0xICovCisjZGVmaW5lIE1QRF9NSU5fRU1JTiAoLTQyNTAwMDAwMEwpICAgICAvKiAtRU1BWCAqLworI2RlZmluZSBNUERfTUlOX0VUSU5ZIChNUERfTUlOX0VNSU4tKE1QRF9NQVhfUFJFQy0xKSkKKyNkZWZpbmUgTVBEX0VYUF9JTkYgMTAwMDAwMDAwMUwgICAgICAvKiBhbGxvd3MgZm9yIGVtYXg9OTk5OTk5OTk5IGluIHRoZSB0ZXN0cyAqLworI2RlZmluZSBNUERfRVhQX0NMQU1QICgtMjAwMDAwMDAwMUwpIC8qIGFsbG93cyBmb3IgZW1pbj0tOTk5OTk5OTk5IGluIHRoZSB0ZXN0cyAqLworI2RlZmluZSBNUERfTUFYSU1QT1JUIDk0NDQ0NDQ1TCAgICAgIC8qIGNlaWwoKDIqTVBEX01BWF9QUkVDKS9NUERfUkRJR0lUUykgKi8KKworLyogY29udmVyc2lvbiBzcGVjaWZpZXJzICovCisjZGVmaW5lIFBSSV9tcGRfdWludF90IFBSSXUzMgorI2RlZmluZSBQUklfbXBkX3NzaXplX3QgUFJJaTMyCisvKiBFTkQgQ09ORklHXzMyICovCisKKyNlbHNlCisgICNlcnJvciAiZGVmaW5lIENPTkZJR182NCBvciBDT05GSUdfMzIiCisjZW5kaWYKKy8qIEVORCBDT05GSUcgKi8KKworCisjaWYgTVBEX1NJWkVfTUFYICE9IE1QRF9VSU5UX01BWAorICAjZXJyb3IgInVuc3VwcG9ydGVkIHBsYXRmb3JtOiBuZWVkIG1wZF9zaXplX3QgPT0gbXBkX3VpbnRfdCIKKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworZW51bSB7CisgICAgTVBEX1JPVU5EX1VQLCAgICAgICAgICAvKiByb3VuZCBhd2F5IGZyb20gMCAgICAgICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0RPV04sICAgICAgICAvKiByb3VuZCB0b3dhcmQgMCAodHJ1bmNhdGUpICAgICAgICovCisgICAgTVBEX1JPVU5EX0NFSUxJTkcsICAgICAvKiByb3VuZCB0b3dhcmQgK2luZmluaXR5ICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0ZMT09SLCAgICAgICAvKiByb3VuZCB0b3dhcmQgLWluZmluaXR5ICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0hBTEZfVVAsICAgICAvKiAwLjUgaXMgcm91bmRlZCB1cCAgICAgICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0hBTEZfRE9XTiwgICAvKiAwLjUgaXMgcm91bmRlZCBkb3duICAgICAgICAgICAgICovCisgICAgTVBEX1JPVU5EX0hBTEZfRVZFTiwgICAvKiAwLjUgaXMgcm91bmRlZCB0byBldmVuICAgICAgICAgICovCisgICAgTVBEX1JPVU5EXzA1VVAsICAgICAgICAvKiByb3VuZCB6ZXJvIG9yIGZpdmUgYXdheSBmcm9tIDAgICovCisgICAgTVBEX1JPVU5EX1RSVU5DLCAgICAgICAvKiB0cnVuY2F0ZSwgYnV0IHNldCBpbmZpbml0eSAgICAgICovCisgICAgTVBEX1JPVU5EX0dVQVJECit9OworCitlbnVtIHsgTVBEX0NMQU1QX0RFRkFVTFQsIE1QRF9DTEFNUF9JRUVFXzc1NCwgTVBEX0NMQU1QX0dVQVJEIH07CisKK2V4dGVybiBjb25zdCBjaGFyICptcGRfcm91bmRfc3RyaW5nW01QRF9ST1VORF9HVUFSRF07CitleHRlcm4gY29uc3QgY2hhciAqbXBkX2NsYW1wX3N0cmluZ1tNUERfQ0xBTVBfR1VBUkRdOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBtcGRfc3NpemVfdCBwcmVjOyAgIC8qIHByZWNpc2lvbiAqLworICAgIG1wZF9zc2l6ZV90IGVtYXg7ICAgLyogbWF4IHBvc2l0aXZlIGV4cCAqLworICAgIG1wZF9zc2l6ZV90IGVtaW47ICAgLyogbWluIG5lZ2F0aXZlIGV4cCAqLworICAgIHVpbnQzMl90IHRyYXBzOyAgICAgLyogc3RhdHVzIGV2ZW50cyB0aGF0IHNob3VsZCBiZSB0cmFwcGVkICovCisgICAgdWludDMyX3Qgc3RhdHVzOyAgICAvKiBzdGF0dXMgZmxhZ3MgKi8KKyAgICB1aW50MzJfdCBuZXd0cmFwOyAgIC8qIHNldCBieSBtcGRfYWRkc3RhdHVzX3JhaXNlKCkgKi8KKyAgICBpbnQgICAgICByb3VuZDsgICAgIC8qIHJvdW5kaW5nIG1vZGUgKi8KKyAgICBpbnQgICAgICBjbGFtcDsgICAgIC8qIGNsYW1wIG1vZGUgKi8KKyAgICBpbnQgICAgICBhbGxjcjsgICAgIC8qIGFsbCBmdW5jdGlvbnMgY29ycmVjdGx5IHJvdW5kZWQgKi8KK30gbXBkX2NvbnRleHRfdDsKKworCisvKiBTdGF0dXMgZmxhZ3MgKi8KKyNkZWZpbmUgTVBEX0NsYW1wZWQgICAgICAgICAgICAgMHgwMDAwMDAwMVUKKyNkZWZpbmUgTVBEX0NvbnZlcnNpb25fc3ludGF4ICAgMHgwMDAwMDAwMlUKKyNkZWZpbmUgTVBEX0RpdmlzaW9uX2J5X3plcm8gICAgMHgwMDAwMDAwNFUKKyNkZWZpbmUgTVBEX0RpdmlzaW9uX2ltcG9zc2libGUgMHgwMDAwMDAwOFUKKyNkZWZpbmUgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCAgMHgwMDAwMDAxMFUKKyNkZWZpbmUgTVBEX0ZwdV9lcnJvciAgICAgICAgICAgMHgwMDAwMDAyMFUKKyNkZWZpbmUgTVBEX0luZXhhY3QgICAgICAgICAgICAgMHgwMDAwMDA0MFUKKyNkZWZpbmUgTVBEX0ludmFsaWRfY29udGV4dCAgICAgMHgwMDAwMDA4MFUKKyNkZWZpbmUgTVBEX0ludmFsaWRfb3BlcmF0aW9uICAgMHgwMDAwMDEwMFUKKyNkZWZpbmUgTVBEX01hbGxvY19lcnJvciAgICAgICAgMHgwMDAwMDIwMFUKKyNkZWZpbmUgTVBEX05vdF9pbXBsZW1lbnRlZCAgICAgMHgwMDAwMDQwMFUKKyNkZWZpbmUgTVBEX092ZXJmbG93ICAgICAgICAgICAgMHgwMDAwMDgwMFUKKyNkZWZpbmUgTVBEX1JvdW5kZWQgICAgICAgICAgICAgMHgwMDAwMTAwMFUKKyNkZWZpbmUgTVBEX1N1Ym5vcm1hbCAgICAgICAgICAgMHgwMDAwMjAwMFUKKyNkZWZpbmUgTVBEX1VuZGVyZmxvdyAgICAgICAgICAgMHgwMDAwNDAwMFUKKyNkZWZpbmUgTVBEX01heF9zdGF0dXMgICAgICAgICAoMHgwMDAwODAwMFUtMVUpCisKKy8qIENvbmRpdGlvbnMgdGhhdCByZXN1bHQgaW4gYW4gSUVFRSA3NTQgZXhjZXB0aW9uICovCisjZGVmaW5lIE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIChNUERfQ29udmVyc2lvbl9zeW50YXggfCAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9EaXZpc2lvbl9pbXBvc3NpYmxlIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0RpdmlzaW9uX3VuZGVmaW5lZCB8ICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfRnB1X2Vycm9yIHwgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1QRF9JbnZhbGlkX2NvbnRleHQgfCAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBEX0ludmFsaWRfb3BlcmF0aW9uIHwgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUERfTWFsbG9jX2Vycm9yKSAgICAgICAgIFwKKworLyogRXJyb3JzIHRoYXQgcmVxdWlyZSB0aGUgcmVzdWx0IG9mIGFuIG9wZXJhdGlvbiB0byBiZSBzZXQgdG8gTmFOICovCisjZGVmaW5lIE1QRF9FcnJvcnMgKE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIHwgXAorICAgICAgICAgICAgICAgICAgICBNUERfRGl2aXNpb25fYnlfemVybykKKworLyogRGVmYXVsdCB0cmFwcyAqLworI2RlZmluZSBNUERfVHJhcHMgKE1QRF9JRUVFX0ludmFsaWRfb3BlcmF0aW9uIHwgXAorICAgICAgICAgICAgICAgICAgIE1QRF9EaXZpc2lvbl9ieV96ZXJvIHwgICAgICAgXAorICAgICAgICAgICAgICAgICAgIE1QRF9PdmVyZmxvdyB8ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgIE1QRF9VbmRlcmZsb3cpCisKKy8qIE9mZmljaWFsIG5hbWUgKi8KKyNkZWZpbmUgTVBEX0luc3VmZmljaWVudF9zdG9yYWdlIE1QRF9NYWxsb2NfZXJyb3IKKworLyogSUVFRSA3NTQgaW50ZXJjaGFuZ2UgZm9ybWF0IGNvbnRleHRzICovCisjZGVmaW5lIE1QRF9JRUVFX0NPTlRFWFRfTUFYX0JJVFMgNTEyIC8qIDE2Kihsb2cyKE1QRF9NQVhfRU1BWCAvIDMpLTMpICovCisjZGVmaW5lIE1QRF9ERUNJTUFMMzIgMzIKKyNkZWZpbmUgTVBEX0RFQ0lNQUw2NCA2NAorI2RlZmluZSBNUERfREVDSU1BTDEyOCAxMjgKKworCisjZGVmaW5lIE1QRF9NSU5BTExPQ19NSU4gMgorI2RlZmluZSBNUERfTUlOQUxMT0NfTUFYIDY0CitleHRlcm4gbXBkX3NzaXplX3QgTVBEX01JTkFMTE9DOworZXh0ZXJuIHZvaWQgKCogbXBkX3RyYXBoYW5kbGVyKShtcGRfY29udGV4dF90ICopOwordm9pZCBtcGRfZGZsdF90cmFwaGFuZGxlcihtcGRfY29udGV4dF90ICopOworCit2b2lkIG1wZF9zZXRtaW5hbGxvYyhtcGRfc3NpemVfdCBuKTsKK3ZvaWQgbXBkX2luaXQobXBkX2NvbnRleHRfdCAqY3R4LCBtcGRfc3NpemVfdCBwcmVjKTsKKwordm9pZCBtcGRfbWF4Y29udGV4dChtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGVmYXVsdGNvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Jhc2ljY29udGV4dChtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9pZWVlX2NvbnRleHQobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYml0cyk7CisKK21wZF9zc2l6ZV90IG1wZF9nZXRwcmVjKGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfc3NpemVfdCBtcGRfZ2V0ZW1heChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworbXBkX3NzaXplX3QgbXBkX2dldGVtaW4oY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfZ2V0cm91bmQoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3VpbnQzMl90IG1wZF9nZXR0cmFwcyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOwordWludDMyX3QgbXBkX2dldHN0YXR1cyhjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9nZXRjbGFtcChjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9nZXRjcihjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworCitpbnQgbXBkX3FzZXRwcmVjKG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgcHJlYyk7CitpbnQgbXBkX3FzZXRlbWF4KG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgZW1heCk7CitpbnQgbXBkX3FzZXRlbWluKG1wZF9jb250ZXh0X3QgKmN0eCwgbXBkX3NzaXplX3QgZW1pbik7CitpbnQgbXBkX3FzZXRyb3VuZChtcGRfY29udGV4dF90ICpjdHgsIGludCBuZXdyb3VuZCk7CitpbnQgbXBkX3FzZXR0cmFwcyhtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBtcGRfcXNldHN0YXR1cyhtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90IGZsYWdzKTsKK2ludCBtcGRfcXNldGNsYW1wKG1wZF9jb250ZXh0X3QgKmN0eCwgaW50IGMpOworaW50IG1wZF9xc2V0Y3IobXBkX2NvbnRleHRfdCAqY3R4LCBpbnQgYyk7Cit2b2lkIG1wZF9hZGRzdGF0dXNfcmFpc2UobXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCBmbGFncyk7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbCBBcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBtcGRfdCBmbGFncyAqLworI2RlZmluZSBNUERfUE9TICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpMCkKKyNkZWZpbmUgTVBEX05FRyAgICAgICAgICAgICAgICAgKCh1aW50OF90KTEpCisjZGVmaW5lIE1QRF9JTkYgICAgICAgICAgICAgICAgICgodWludDhfdCkyKQorI2RlZmluZSBNUERfTkFOICAgICAgICAgICAgICAgICAoKHVpbnQ4X3QpNCkKKyNkZWZpbmUgTVBEX1NOQU4gICAgICAgICAgICAgICAgKCh1aW50OF90KTgpCisjZGVmaW5lIE1QRF9TUEVDSUFMIChNUERfSU5GfE1QRF9OQU58TVBEX1NOQU4pCisjZGVmaW5lIE1QRF9TVEFUSUMgICAgICAgICAgICAgICgodWludDhfdCkxNikKKyNkZWZpbmUgTVBEX1NUQVRJQ19EQVRBICAgICAgICAgKCh1aW50OF90KTMyKQorI2RlZmluZSBNUERfU0hBUkVEX0RBVEEgICAgICAgICAoKHVpbnQ4X3QpNjQpCisjZGVmaW5lIE1QRF9DT05TVF9EQVRBICAgICAgICAgICgodWludDhfdCkxMjgpCisjZGVmaW5lIE1QRF9EQVRBRkxBR1MgKE1QRF9TVEFUSUNfREFUQXxNUERfU0hBUkVEX0RBVEF8TVBEX0NPTlNUX0RBVEEpCisKKy8qIG1wZF90ICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdWludDhfdCBmbGFnczsKKyAgICBtcGRfc3NpemVfdCBleHA7CisgICAgbXBkX3NzaXplX3QgZGlnaXRzOworICAgIG1wZF9zc2l6ZV90IGxlbjsKKyAgICBtcGRfc3NpemVfdCBhbGxvYzsKKyAgICBtcGRfdWludF90ICpkYXRhOworfSBtcGRfdDsKKworCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWNoYXI7CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICBRdWlldCwgdGhyZWFkLXNhZmUgZnVuY3Rpb25zICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBmb3JtYXQgc3BlY2lmaWNhdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIG1wZF9zc2l6ZV90IG1pbl93aWR0aDsgLyogbWluaW11bSBmaWVsZCB3aWR0aCAqLworICAgIG1wZF9zc2l6ZV90IHByZWM7ICAgICAgLyogZnJhY3Rpb24gZGlnaXRzIG9yIHNpZ25pZmljYW50IGRpZ2l0cyAqLworICAgIGNoYXIgdHlwZTsgICAgICAgICAgICAgLyogY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KKyAgICBjaGFyIGFsaWduOyAgICAgICAgICAgIC8qIGFsaWdubWVudCAqLworICAgIGNoYXIgc2lnbjsgICAgICAgICAgICAgLyogc2lnbiBwcmludGluZy9hbGlnbm1lbnQgKi8KKyAgICBjaGFyIGZpbGxbNV07ICAgICAgICAgIC8qIGZpbGwgY2hhcmFjdGVyICovCisgICAgY29uc3QgY2hhciAqZG90OyAgICAgICAvKiBkZWNpbWFsIHBvaW50ICovCisgICAgY29uc3QgY2hhciAqc2VwOyAgICAgICAvKiB0aG91c2FuZHMgc2VwYXJhdG9yICovCisgICAgY29uc3QgY2hhciAqZ3JvdXBpbmc7ICAvKiBncm91cGluZyBvZiBkaWdpdHMgKi8KK30gbXBkX3NwZWNfdDsKKworLyogb3V0cHV0IHRvIGEgc3RyaW5nICovCitjaGFyICptcGRfdG9fc2NpKGNvbnN0IG1wZF90ICpkZWMsIGludCBmbXQpOworY2hhciAqbXBkX3RvX2VuZyhjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KTsKK21wZF9zc2l6ZV90IG1wZF90b19zY2lfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KTsKK21wZF9zc2l6ZV90IG1wZF90b19lbmdfc2l6ZShjaGFyICoqcmVzLCBjb25zdCBtcGRfdCAqZGVjLCBpbnQgZm10KTsKK2ludCBtcGRfdmFsaWRhdGVfbGNvbnYobXBkX3NwZWNfdCAqc3BlYyk7CitpbnQgbXBkX3BhcnNlX2ZtdF9zdHIobXBkX3NwZWNfdCAqc3BlYywgY29uc3QgY2hhciAqZm10LCBpbnQgY2Fwcyk7CitjaGFyICogbXBkX3Fmb3JtYXRfc3BlYyhjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfc3BlY190ICpzcGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworY2hhciAqbXBkX3Fmb3JtYXQoY29uc3QgbXBkX3QgKmRlYywgY29uc3QgY2hhciAqZm10LCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworCisjZGVmaW5lIE1QRF9OVU1fRkxBR1MgMTUKKyNkZWZpbmUgTVBEX01BWF9GTEFHX1NUUklORyAyMDgKKyNkZWZpbmUgTVBEX01BWF9GTEFHX0xJU1QgKE1QRF9NQVhfRkxBR19TVFJJTkcrMTgpCisjZGVmaW5lIE1QRF9NQVhfU0lHTkFMX0xJU1QgMTIxCitpbnQgbXBkX3NucHJpbnRfZmxhZ3MoY2hhciAqZGVzdCwgaW50IG5tZW1iLCB1aW50MzJfdCBmbGFncyk7CitpbnQgbXBkX2xzbnByaW50X2ZsYWdzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKmZsYWdfc3RyaW5nW10pOworaW50IG1wZF9sc25wcmludF9zaWduYWxzKGNoYXIgKmRlc3QsIGludCBubWVtYiwgdWludDMyX3QgZmxhZ3MsIGNvbnN0IGNoYXIgKnNpZ25hbF9zdHJpbmdbXSk7CisKKy8qIG91dHB1dCB0byBhIGZpbGUgKi8KK3ZvaWQgbXBkX2ZwcmludChGSUxFICpmaWxlLCBjb25zdCBtcGRfdCAqZGVjKTsKK3ZvaWQgbXBkX3ByaW50KGNvbnN0IG1wZF90ICpkZWMpOworCisvKiBhc3NpZ25tZW50IGZyb20gYSBzdHJpbmcgKi8KK3ZvaWQgbXBkX3FzZXRfc3RyaW5nKG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKnMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKKy8qIHNldCB0byBOYU4gd2l0aCBlcnJvciBmbGFncyAqLwordm9pZCBtcGRfc2V0ZXJyb3IobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90ICpzdGF0dXMpOworLyogc2V0IGEgc3BlY2lhbCB3aXRoIHNpZ24gYW5kIHR5cGUgKi8KK3ZvaWQgbXBkX3NldHNwZWNpYWwobXBkX3QgKmRlYywgdWludDhfdCBzaWduLCB1aW50OF90IHR5cGUpOworLyogc2V0IGNvZWZmaWNpZW50IHRvIHplcm8gb3IgYWxsIG5pbmVzICovCit2b2lkIG1wZF96ZXJvY29lZmYobXBkX3QgKnJlc3VsdCk7Cit2b2lkIG1wZF9xbWF4Y29lZmYobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworLyogcXVpZXRseSBhc3NpZ24gYSBDIGludGVnZXIgdHlwZSB0byBhbiBtcGRfdCAqLwordm9pZCBtcGRfcXNldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisjaWZuZGVmIExFR0FDWV9DT01QSUxFUgordm9pZCBtcGRfcXNldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKyNlbmRpZgorCisvKiBxdWlldGx5IGFzc2lnbiBhIEMgaW50ZWdlciB0eXBlIHRvIGFuIG1wZF90IHdpdGggYSBzdGF0aWMgY29lZmZpY2llbnQgKi8KK3ZvaWQgbXBkX3Fzc2V0X3NzaXplKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNzZXRfdWludChtcGRfdCAqcmVzdWx0LCBtcGRfdWludF90IGEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3NldF91MzIobXBkX3QgKnJlc3VsdCwgdWludDMyX3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworLyogcXVpZXRseSBnZXQgYSBDIGludGVnZXIgdHlwZSBmcm9tIGFuIG1wZF90ICovCittcGRfc3NpemVfdCBtcGRfcWdldF9zc2l6ZShjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF91aW50X3QgbXBkX3FnZXRfdWludChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF91aW50X3QgbXBkX3FhYnNfdWludChjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKKworCisvKiBxdWlldCBmdW5jdGlvbnMgKi8KK2ludCBtcGRfcWNoZWNrX25hbihtcGRfdCAqbmFucmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNoZWNrX25hbnMobXBkX3QgKm5hbnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWZpbmFsaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CisKK2NvbnN0IGNoYXIgKiBtcGRfY2xhc3MoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CisKK2ludCBtcGRfcWNvcHkobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsICB1aW50MzJfdCAqc3RhdHVzKTsKK21wZF90ICptcGRfcW5jb3B5KGNvbnN0IG1wZF90ICphKTsKK2ludCBtcGRfcWNvcHlfYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvcHlfbmVnYXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvcHlfc2lnbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIHVpbnQzMl90ICpzdGF0dXMpOworCit2b2lkIG1wZF9xYW5kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FpbnZlcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbG9nYihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FvcihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc2NhbGViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3F4b3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50IG1wZF9zYW1lX3F1YW50dW0oY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKTsKKwordm9pZCBtcGRfcXJvdGF0ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3FzaGlmdGwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIHVpbnQzMl90ICpzdGF0dXMpOworbXBkX3VpbnRfdCBtcGRfcXNoaWZ0cihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgdWludDMyX3QgKnN0YXR1cyk7CittcGRfdWludF90IG1wZF9xc2hpZnRyX2lucGxhY2UobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgbik7Cit2b2lkIG1wZF9xc2hpZnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNoaWZ0bihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgbiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworaW50IG1wZF9xY21wKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3Fjb21wYXJlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfcWNvbXBhcmVfc2lnbmFsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludCBtcGRfY21wX3RvdGFsKGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYik7CitpbnQgbXBkX2NtcF90b3RhbF9tYWcoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiKTsKK2ludCBtcGRfY29tcGFyZV90b3RhbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworaW50IG1wZF9jb21wYXJlX3RvdGFsX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIpOworCit2b2lkIG1wZF9xcm91bmRfdG9faW50eChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fyb3VuZF90b19pbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xdHJ1bmMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZmxvb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xY2VpbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKwordm9pZCBtcGRfcWFicyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtYXgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW1heF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW1pbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWluX21hZyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FuZXh0X21pbnVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW5leHRfcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FuZXh0X3Rvd2FyZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcXVhbnRpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlc2NhbGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FyZXNjYWxlX2ZtdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgZXhwLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXJlZHVjZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWFkZF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xYWRkX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FhZGRfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1YihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXN1Yl91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcW11bF91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FmbWEobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfdCAqYywgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXYobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZpbnQobXBkX3QgKnEsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FyZW0obXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FyZW1fbmVhcihtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWRpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fwb3cobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmJhc2UsIGNvbnN0IG1wZF90ICpleHAsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xcG93bW9kKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICpiYXNlLCBjb25zdCBtcGRfdCAqZXhwLCBjb25zdCBtcGRfdCAqbW9kLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWV4cChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FsbjEwKG1wZF90ICpyZXN1bHQsIG1wZF9zc2l6ZV90IHByZWMsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWxuKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWxvZzEwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcXNxcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xaW52cm9vdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKworCitzaXplX3QgbXBkX3NpemVpbmJhc2UoY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGJhc2UpOwordm9pZCBtcGRfcWltcG9ydF91MTYobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDE2X3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHNyY3NpZ24sIHVpbnQzMl90IHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOwordm9pZCBtcGRfcWltcG9ydF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDMyX3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sCisgICAgICAgICAgICAgICAgICAgICB1aW50OF90IHNyY3NpZ24sIHVpbnQzMl90IHNyY2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworc2l6ZV90IG1wZF9xZXhwb3J0X3UxNih1aW50MTZfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbXBkX3QgKnNyYywgdWludDMyX3QgKnN0YXR1cyk7CitzaXplX3QgbXBkX3FleHBvcnRfdTMyKHVpbnQzMl90ICoqcmRhdGEsIHNpemVfdCBybGVuLCB1aW50MzJfdCBiYXNlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtcGRfdCAqc3JjLCB1aW50MzJfdCAqc3RhdHVzKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYWxsaW5nIGZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2NoYXIgKiBtcGRfZm9ybWF0KGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IGNoYXIgKmZtdCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ltcG9ydF91MTYobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDE2X3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3QgYmFzZSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ltcG9ydF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgdWludDMyX3QgKnNyY2RhdGEsIHNpemVfdCBzcmNsZW4sIHVpbnQ4X3Qgc3Jjc2lnbiwgdWludDMyX3QgYmFzZSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3NpemVfdCBtcGRfZXhwb3J0X3UxNih1aW50MTZfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgYmFzZSwgY29uc3QgbXBkX3QgKnNyYywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3NpemVfdCBtcGRfZXhwb3J0X3UzMih1aW50MzJfdCAqKnJkYXRhLCBzaXplX3QgcmxlbiwgdWludDMyX3QgYmFzZSwgY29uc3QgbXBkX3QgKnNyYywgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2ZpbmFsaXplKG1wZF90ICpyZXN1bHQsIG1wZF9jb250ZXh0X3QgKmN0eCk7CitpbnQgbXBkX2NoZWNrX25hbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfY2hlY2tfbmFucyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfc3RyaW5nKG1wZF90ICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tYXhjb2VmZihtcGRfdCAqcmVzdWx0LCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF91aW50KG1wZF90ICpyZXN1bHQsIG1wZF91aW50X3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NzZXRfdTMyKG1wZF90ICpyZXN1bHQsIHVpbnQzMl90IGEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zZXRfc3NpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NldF9pMzIobXBkX3QgKnJlc3VsdCwgaW50MzJfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X3VpbnQobXBkX3QgKnJlc3VsdCwgbXBkX3VpbnRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X3UzMihtcGRfdCAqcmVzdWx0LCB1aW50MzJfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOworI2lmbmRlZiBMRUdBQ1lfQ09NUElMRVIKK3ZvaWQgbXBkX3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOworI2VuZGlmCittcGRfc3NpemVfdCBtcGRfZ2V0X3NzaXplKGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworbXBkX3VpbnRfdCBtcGRfZ2V0X3VpbnQoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdWludF90IG1wZF9hYnNfdWludChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FuZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jb3B5KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY2Fub25pY2FsKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY29weV9hYnMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9jb3B5X25lZ2F0ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2NvcHlfc2lnbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9pbnZlcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9sb2diKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfb3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcm90YXRlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NjYWxlYihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zaGlmdGwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIG1wZF9jb250ZXh0X3QgKmN0eCk7CittcGRfdWludF90IG1wZF9zaGlmdHIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zaGlmdG4obXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IG4sIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zaGlmdChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF94b3IobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWJzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jbXAoY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9jb21wYXJlKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludCBtcGRfY29tcGFyZV9zaWduYWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2FkZF91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9hZGRfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3ViKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl9zc2l6ZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3NzaXplX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl9pMzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl91aW50KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfdWludF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9zdWJfdTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2KG1wZF90ICpxLCBjb25zdCBtcGRfdCAqYSwgY29uc3QgbXBkX3QgKmIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfc3NpemUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfaTMyKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfdWludChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX3VpbnRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZGl2X3UzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDMyX3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Rpdm1vZChtcGRfdCAqcSwgbXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2RpdmludChtcGRfdCAqcSwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZXhwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfZm1hKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgY29uc3QgbXBkX3QgKmMsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9sbihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2xvZzEwKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWF4KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX21heF9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWluKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX21pbl9tYWcobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbWludXMobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9tdWwobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3NzaXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfc3NpemVfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX2kzMihtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50MzJfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3VpbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF91aW50X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX211bF91MzIobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQzMl90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9uZXh0X21pbnVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbmV4dF9wbHVzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbmV4dF90b3dhcmQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcGx1cyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3BvdyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3Bvd21vZChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYmFzZSwgY29uc3QgbXBkX3QgKmV4cCwgY29uc3QgbXBkX3QgKm1vZCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3F1YW50aXplKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3Jlc2NhbGUobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9zc2l6ZV90IGV4cCwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JlZHVjZShtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JlbShtcGRfdCAqciwgY29uc3QgbXBkX3QgKmEsIGNvbnN0IG1wZF90ICpiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfcmVtX25lYXIobXBkX3QgKnIsIGNvbnN0IG1wZF90ICphLCBjb25zdCBtcGRfdCAqYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3JvdW5kX3RvX2ludHgobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9yb3VuZF90b19pbnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF90cnVuYyhtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX2Zsb29yKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfY2VpbChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3NxcnQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9pbnZyb290KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBtcGRfY29udGV4dF90ICpjdHgpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBzcGVjaWZpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmZGVmIENPTkZJR182NAordm9pZCBtcGRfcXNzZXRfaTY0KG1wZF90ICpyZXN1bHQsIGludDY0X3QgYSwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3Fzc2V0X3U2NChtcGRfdCAqcmVzdWx0LCB1aW50NjRfdCBhLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgsIHVpbnQzMl90ICpzdGF0dXMpOworaW50NjRfdCBtcGRfcWdldF9pNjQoY29uc3QgbXBkX3QgKmRlYywgdWludDMyX3QgKnN0YXR1cyk7Cit1aW50NjRfdCBtcGRfcWdldF91NjQoY29uc3QgbXBkX3QgKmRlYywgdWludDMyX3QgKnN0YXR1cyk7CisKK3ZvaWQgbXBkX3FhZGRfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xYWRkX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FzdWJfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xc3ViX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FtdWxfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xbXVsX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX3FkaXZfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCwgdWludDMyX3QgKnN0YXR1cyk7Cit2b2lkIG1wZF9xZGl2X3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4LCB1aW50MzJfdCAqc3RhdHVzKTsKKwordm9pZCBtcGRfc3NldF9pNjQobXBkX3QgKnJlc3VsdCwgaW50NjRfdCBhLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfc3NldF91NjQobXBkX3QgKnJlc3VsdCwgdWludDY0X3QgYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK2ludDY0X3QgbXBkX2dldF9pNjQoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit1aW50NjRfdCBtcGRfZ2V0X3U2NChjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKKwordm9pZCBtcGRfYWRkX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfYWRkX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl9pNjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIGludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKK3ZvaWQgbXBkX3N1Yl91NjQobXBkX3QgKnJlc3VsdCwgY29uc3QgbXBkX3QgKmEsIHVpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfaTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCBpbnQ2NF90IGIsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit2b2lkIG1wZF9kaXZfdTY0KG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphLCB1aW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX2k2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgaW50NjRfdCBiLCBtcGRfY29udGV4dF90ICpjdHgpOwordm9pZCBtcGRfbXVsX3U2NChtcGRfdCAqcmVzdWx0LCBjb25zdCBtcGRfdCAqYSwgdWludDY0X3QgYiwgbXBkX2NvbnRleHRfdCAqY3R4KTsKKyNlbHNlCitpbnQzMl90IG1wZF9xZ2V0X2kzMihjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK3VpbnQzMl90IG1wZF9xZ2V0X3UzMihjb25zdCBtcGRfdCAqZGVjLCB1aW50MzJfdCAqc3RhdHVzKTsKK2ludDMyX3QgbXBkX2dldF9pMzIoY29uc3QgbXBkX3QgKmEsIG1wZF9jb250ZXh0X3QgKmN0eCk7Cit1aW50MzJfdCBtcGRfZ2V0X3UzMihjb25zdCBtcGRfdCAqYSwgbXBkX2NvbnRleHRfdCAqY3R4KTsKKyNlbmRpZgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgR2V0IGF0dHJpYnV0ZXMgb2YgYSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworRVhUSU5MSU5FIG1wZF9zc2l6ZV90IG1wZF9hZGpleHAoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX2V0aW55KGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX2V0b3AoY29uc3QgbXBkX2NvbnRleHRfdCAqY3R4KTsKK0VYVElOTElORSBtcGRfdWludF90IG1wZF9tc3dvcmQoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF93b3JkX2RpZ2l0cyhtcGRfdWludF90IHdvcmQpOworLyogbW9zdCBzaWduaWZpY2FudCBkaWdpdCBvZiBhIHdvcmQgKi8KK0VYVElOTElORSBtcGRfdWludF90IG1wZF9tc2QobXBkX3VpbnRfdCB3b3JkKTsKKy8qIGxlYXN0IHNpZ25pZmljYW50IGRpZ2l0IG9mIGEgd29yZCAqLworRVhUSU5MSU5FIG1wZF91aW50X3QgbXBkX2xzZChtcGRfdWludF90IHdvcmQpOworLyogY29lZmZpY2llbnQgc2l6ZSBuZWVkZWQgdG8gc3RvcmUgJ2RpZ2l0cycgKi8KK0VYVElOTElORSBtcGRfc3NpemVfdCBtcGRfZGlnaXRzX3RvX3NpemUobXBkX3NzaXplX3QgZGlnaXRzKTsKKy8qIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGV4cG9uZW50LCB1bmRlZmluZWQgZm9yIE1QRF9TU0laRV9NSU4gKi8KK0VYVElOTElORSBpbnQgbXBkX2V4cF9kaWdpdHMobXBkX3NzaXplX3QgZXhwKTsKK0VYVElOTElORSBpbnQgbXBkX2lzY2Fub25pY2FsKGNvbnN0IG1wZF90ICpkZWMgVU5VU0VEKTsKK0VYVElOTElORSBpbnQgbXBkX2lzZmluaXRlKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNpbmZpbml0ZShjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzaW50ZWdlcihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzbmFuKGNvbnN0IG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNuZWdhdGl2ZShjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzcG9zaXRpdmUoY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3FuYW4oY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3NpZ25lZChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc25hbihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc3BlY2lhbChjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzemVybyhjb25zdCBtcGRfdCAqZGVjKTsKKy8qIHVuZGVmaW5lZCBmb3Igc3BlY2lhbCBudW1iZXJzICovCitFWFRJTkxJTkUgaW50IG1wZF9pc3plcm9jb2VmZihjb25zdCBtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzbm9ybWFsKGNvbnN0IG1wZF90ICpkZWMsIGNvbnN0IG1wZF9jb250ZXh0X3QgKmN0eCk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3N1Ym5vcm1hbChjb25zdCBtcGRfdCAqZGVjLCBjb25zdCBtcGRfY29udGV4dF90ICpjdHgpOworLyogb2RkIHdvcmQgKi8KK0VYVElOTElORSBpbnQgbXBkX2lzb2Rkd29yZChtcGRfdWludF90IHdvcmQpOworLyogb2RkIGNvZWZmaWNpZW50ICovCitFWFRJTkxJTkUgaW50IG1wZF9pc29kZGNvZWZmKGNvbnN0IG1wZF90ICpkZWMpOworLyogb2RkIGRlY2ltYWwsIG9ubHkgZGVmaW5lZCBmb3IgaW50ZWdlcnMgKi8KK2ludCBtcGRfaXNvZGQoY29uc3QgbXBkX3QgKmRlYyk7CisvKiBldmVuIGRlY2ltYWwsIG9ubHkgZGVmaW5lZCBmb3IgaW50ZWdlcnMgKi8KK2ludCBtcGRfaXNldmVuKGNvbnN0IG1wZF90ICpkZWMpOworLyogMCBpZiBkZWMgaXMgcG9zaXRpdmUsIDEgaWYgZGVjIGlzIG5lZ2F0aXZlICovCitFWFRJTkxJTkUgdWludDhfdCBtcGRfc2lnbihjb25zdCBtcGRfdCAqZGVjKTsKKy8qIDEgaWYgZGVjIGlzIHBvc2l0aXZlLCAtMSBpZiBkZWMgaXMgbmVnYXRpdmUgKi8KK0VYVElOTElORSBpbnQgbXBkX2FyaXRoX3NpZ24oY29uc3QgbXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgbG9uZyBtcGRfcmFkaXgodm9pZCk7CitFWFRJTkxJTkUgaW50IG1wZF9pc2R5bmFtaWMobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc3N0YXRpYyhtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzZHluYW1pY19kYXRhKG1wZF90ICpkZWMpOworRVhUSU5MSU5FIGludCBtcGRfaXNzdGF0aWNfZGF0YShtcGRfdCAqZGVjKTsKK0VYVElOTElORSBpbnQgbXBkX2lzc2hhcmVkX2RhdGEobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgaW50IG1wZF9pc2NvbnN0X2RhdGEobXBkX3QgKmRlYyk7CitFWFRJTkxJTkUgbXBkX3NzaXplX3QgbXBkX3RyYWlsX3plcm9zKGNvbnN0IG1wZF90ICpkZWMpOworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgU2V0IGF0dHJpYnV0ZXMgb2YgYSBkZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogc2V0IG51bWJlciBvZiBkZWNpbWFsIGRpZ2l0cyBpbiB0aGUgY29lZmZpY2llbnQgKi8KK0VYVElOTElORSB2b2lkIG1wZF9zZXRkaWdpdHMobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3NpZ24obXBkX3QgKnJlc3VsdCwgdWludDhfdCBzaWduKTsKKy8qIGNvcHkgc2lnbiBmcm9tIGFub3RoZXIgZGVjaW1hbCAqLworRVhUSU5MSU5FIHZvaWQgbXBkX3NpZ25jcHkobXBkX3QgKnJlc3VsdCwgbXBkX3QgKmEpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9pbmZpbml0eShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfcW5hbihtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc25hbihtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfbmVnYXRpdmUobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3Bvc2l0aXZlKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9keW5hbWljKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9zdGF0aWMobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X2R5bmFtaWNfZGF0YShtcGRfdCAqcmVzdWx0KTsKK0VYVElOTElORSB2b2lkIG1wZF9zZXRfc3RhdGljX2RhdGEobXBkX3QgKnJlc3VsdCk7CitFWFRJTkxJTkUgdm9pZCBtcGRfc2V0X3NoYXJlZF9kYXRhKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9jb25zdF9kYXRhKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX2NsZWFyX2ZsYWdzKG1wZF90ICpyZXN1bHQpOworRVhUSU5MSU5FIHZvaWQgbXBkX3NldF9mbGFncyhtcGRfdCAqcmVzdWx0LCB1aW50OF90IGZsYWdzKTsKK0VYVElOTElORSB2b2lkIG1wZF9jb3B5X2ZsYWdzKG1wZF90ICpyZXN1bHQsIGNvbnN0IG1wZF90ICphKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciBNYWNyb3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNkZWZpbmUgbXBkX2Vycl9mYXRhbCguLi4pIFwKKyAgICBkbyB7ZnByaW50ZihzdGRlcnIsICIlczolZDogZXJyb3I6ICIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgZnByaW50ZihzdGRlcnIsIF9fVkFfQVJHU19fKTsgIGZwdXRjKCdcbicsIHN0ZGVycik7ICAgIFwKKyAgICAgICAgYWJvcnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlICgwKQorI2RlZmluZSBtcGRfZXJyX3dhcm4oLi4uKSBcCisgICAgZG8ge2ZwcmludGYoc3RkZXJyLCAiJXM6JWQ6IHdhcm5pbmc6ICIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgZnByaW50ZihzdGRlcnIsIF9fVkFfQVJHU19fKTsgZnB1dGMoJ1xuJywgc3RkZXJyKTsgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBoYW5kbGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitleHRlcm4gdm9pZCAqKCogbXBkX21hbGxvY2Z1bmMpKHNpemVfdCBzaXplKTsKK2V4dGVybiB2b2lkICooKiBtcGRfY2FsbG9jZnVuYykoc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSk7CitleHRlcm4gdm9pZCAqKCogbXBkX3JlYWxsb2NmdW5jKSh2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKK2V4dGVybiB2b2lkICgqIG1wZF9mcmVlKSh2b2lkICpwdHIpOworCit2b2lkICptcGRfY2FsbG9jZnVuY19lbShzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplKTsKKwordm9pZCAqbXBkX2FsbG9jKG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSk7Cit2b2lkICptcGRfY2FsbG9jKG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSk7Cit2b2lkICptcGRfcmVhbGxvYyh2b2lkICpwdHIsIG1wZF9zaXplX3Qgbm1lbWIsIG1wZF9zaXplX3Qgc2l6ZSwgdWludDhfdCAqZXJyKTsKK3ZvaWQgKm1wZF9zaF9hbGxvYyhtcGRfc2l6ZV90IHN0cnVjdF9zaXplLCBtcGRfc2l6ZV90IG5tZW1iLCBtcGRfc2l6ZV90IHNpemUpOworCittcGRfdCAqbXBkX3FuZXcodm9pZCk7CittcGRfdCAqbXBkX25ldyhtcGRfY29udGV4dF90ICpjdHgpOworbXBkX3QgKm1wZF9xbmV3X3NpemUobXBkX3NzaXplX3Qgc2l6ZSk7Cit2b2lkIG1wZF9kZWwobXBkX3QgKmRlYyk7CisKK3ZvaWQgbXBkX3VpbnRfemVybyhtcGRfdWludF90ICpkZXN0LCBtcGRfc2l6ZV90IGxlbik7CitpbnQgbXBkX3FyZXNpemUobXBkX3QgKnJlc3VsdCwgbXBkX3NzaXplX3Qgc2l6ZSwgdWludDMyX3QgKnN0YXR1cyk7CitpbnQgbXBkX3FyZXNpemVfemVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCB1aW50MzJfdCAqc3RhdHVzKTsKK3ZvaWQgbXBkX21pbmFsbG9jKG1wZF90ICpyZXN1bHQpOworCitpbnQgbXBkX3Jlc2l6ZShtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCBtcGRfY29udGV4dF90ICpjdHgpOworaW50IG1wZF9yZXNpemVfemVybyhtcGRfdCAqcmVzdWx0LCBtcGRfc3NpemVfdCBzaXplLCBtcGRfY29udGV4dF90ICpjdHgpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfSAvKiBFTkQgZXh0ZXJuICJDIiAqLworI2VuZGlmCisKKworI2VuZGlmIC8qIE1QREVDSU1BTF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL251bWJlcnRoZW9yeS5jIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGNlNmRjCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuYwpAQCAtMCwwICsxLDEzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKworCisvKiBCaWdudW06IEluaXRpYWxpemUgdGhlIE51bWJlciBUaGVvcmV0aWMgVHJhbnNmb3JtLiAqLworCisKKy8qCisgKiBSZXR1cm4gdGhlIG50aCByb290IG9mIHVuaXR5IGluIEYocCkuIFRoaXMgY29ycmVzcG9uZHMgdG8gZSoqKCgyKnBpKmkpL24pCisgKiBpbiB0aGUgRm91cmllciB0cmFuc2Zvcm0uIFdlIGhhdmUgdyoqbiA9PSAxIChtb2QgcCkuCisgKiAgICBuIDo9IHRyYW5zZm9ybSBsZW5ndGguCisgKiAgICBzaWduIDo9IC0xIGZvciBmb3J3YXJkIHRyYW5zZm9ybSwgMSBmb3IgYmFja3dhcmQgdHJhbnNmb3JtLgorICogICAgbW9kbnVtIDo9IG9uZSBvZiB7UDEsIFAyLCBQM30uCisgKi8KK21wZF91aW50X3QKK19tcGRfZ2V0a2VybmVsKG1wZF91aW50X3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pCit7CisgICAgbXBkX3VpbnRfdCB1bW9kLCBwLCByLCB4aTsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIHIgPSBtcGRfcm9vdHNbbW9kbnVtXTsgLyogcHJpbWl0aXZlIHJvb3Qgb2YgRihwKSAqLworICAgIHAgPSB1bW9kOworICAgIHhpID0gKHAtMSkgLyBuOworCisgICAgaWYgKHNpZ24gPT0gLTEpCisgICAgICAgIHJldHVybiBQT1dNT0QociwgKHAtMS14aSkpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFBPV01PRChyLCB4aSk7Cit9CisKKy8qCisgKiBJbml0aWFsaXplIGFuZCByZXR1cm4gdHJhbnNmb3JtIHBhcmFtZXRlcnMuCisgKiAgICBuIDo9IHRyYW5zZm9ybSBsZW5ndGguCisgKiAgICBzaWduIDo9IC0xIGZvciBmb3J3YXJkIHRyYW5zZm9ybSwgMSBmb3IgYmFja3dhcmQgdHJhbnNmb3JtLgorICogICAgbW9kbnVtIDo9IG9uZSBvZiB7UDEsIFAyLCBQM30uCisgKi8KK3N0cnVjdCBmbnRfcGFyYW1zICoKK19tcGRfaW5pdF9mbnRfcGFyYW1zKG1wZF9zaXplX3QgbiwgaW50IHNpZ24sIGludCBtb2RudW0pCit7CisgICAgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXM7CisgICAgbXBkX3VpbnRfdCB1bW9kOworI2lmZGVmIFBQUk8KKyAgICBkb3VibGUgZG1vZDsKKyAgICB1aW50MzJfdCBkaW52bW9kWzNdOworI2VuZGlmCisgICAgbXBkX3VpbnRfdCBrZXJuZWwsIHc7CisgICAgbXBkX3VpbnRfdCBpOworICAgIG1wZF9zaXplX3QgbmhhbGY7CisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChzaWduID09IC0xIHx8IHNpZ24gPT0gMSk7CisgICAgYXNzZXJ0KFAxIDw9IG1vZG51bSAmJiBtb2RudW0gPD0gUDMpOworCisgICAgbmhhbGYgPSBuLzI7CisgICAgdHBhcmFtcyA9IG1wZF9zaF9hbGxvYyhzaXplb2YgKnRwYXJhbXMsIG5oYWxmLCBzaXplb2YgKG1wZF91aW50X3QpKTsKKyAgICBpZiAodHBhcmFtcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCBzaWduLCBtb2RudW0pOworCisgICAgdHBhcmFtcy0+bW9kbnVtID0gbW9kbnVtOworICAgIHRwYXJhbXMtPm1vZHVsdXMgPSB1bW9kOworICAgIHRwYXJhbXMtPmtlcm5lbCA9IGtlcm5lbDsKKworICAgIC8qIHd0YWJsZVtdIDo9IHcqKjAsIHcqKjEsIC4uLiwgdyoqKG5oYWxmLTEpICovCisgICAgdyA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IG5oYWxmOyBpKyspIHsKKyAgICAgICAgdHBhcmFtcy0+d3RhYmxlW2ldID0gdzsKKyAgICAgICAgdyA9IE1VTE1PRCh3LCBrZXJuZWwpOworICAgIH0KKworICAgIHJldHVybiB0cGFyYW1zOworfQorCisvKiBJbml0aWFsaXplIHd0YWJsZSBvZiBzaXplIHRocmVlLiAqLwordm9pZAorX21wZF9pbml0X3czdGFibGUobXBkX3VpbnRfdCB3M3RhYmxlWzNdLCBpbnQgc2lnbiwgaW50IG1vZG51bSkKK3sKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90IGtlcm5lbDsKKworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbCgzLCBzaWduLCBtb2RudW0pOworCisgICAgdzN0YWJsZVswXSA9IDE7CisgICAgdzN0YWJsZVsxXSA9IGtlcm5lbDsKKyAgICB3M3RhYmxlWzJdID0gUE9XTU9EKGtlcm5lbCwgMik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU0ZDExZAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBOVU1CRVJfVEhFT1JZX0gKKyNkZWZpbmUgTlVNQkVSX1RIRU9SWV9ICisKKworI2luY2x1ZGUgImNvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKy8qIHRyYW5zZm9ybSBwYXJhbWV0ZXJzICovCitzdHJ1Y3QgZm50X3BhcmFtcyB7CisgICAgaW50IG1vZG51bTsKKyAgICBtcGRfdWludF90IG1vZHVsdXM7CisgICAgbXBkX3VpbnRfdCBrZXJuZWw7CisgICAgbXBkX3VpbnRfdCB3dGFibGVbXTsKK307CisKKworbXBkX3VpbnRfdCBfbXBkX2dldGtlcm5lbChtcGRfdWludF90IG4sIGludCBzaWduLCBpbnQgbW9kbnVtKTsKK3N0cnVjdCBmbnRfcGFyYW1zICpfbXBkX2luaXRfZm50X3BhcmFtcyhtcGRfc2l6ZV90IG4sIGludCBzaWduLCBpbnQgbW9kbnVtKTsKK3ZvaWQgX21wZF9pbml0X3czdGFibGUobXBkX3VpbnRfdCB3M3RhYmxlWzNdLCBpbnQgc2lnbiwgaW50IG1vZG51bSk7CisKKworI2lmZGVmIFBQUk8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcHByb19zZXRtb2R1bHVzKGludCBtb2RudW0sIG1wZF91aW50X3QgKnVtb2QsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgZGludm1vZFszXSkKK3sKKyAgICAqZG1vZCA9ICp1bW9kID0gIG1wZF9tb2R1bGlbbW9kbnVtXTsKKyAgICBkaW52bW9kWzBdID0gbXBkX2ludm1vZHVsaVttb2RudW1dWzBdOworICAgIGRpbnZtb2RbMV0gPSBtcGRfaW52bW9kdWxpW21vZG51bV1bMV07CisgICAgZGludm1vZFsyXSA9IG1wZF9pbnZtb2R1bGlbbW9kbnVtXVsyXTsKK30KKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQKK3N0ZF9zZXRtb2R1bHVzKGludCBtb2RudW0sIG1wZF91aW50X3QgKnVtb2QpCit7CisgICAgKnVtb2QgPSAgbXBkX21vZHVsaVttb2RudW1dOworfQorI2VuZGlmCisKKworI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3NpeHN0ZXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDA1NDJkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmMKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgImJpdHMuaCIKKyNpbmNsdWRlICJkaWZyYWRpeDIuaCIKKyNpbmNsdWRlICJudW1iZXJ0aGVvcnkuaCIKKyNpbmNsdWRlICJ0cmFuc3Bvc2UuaCIKKyNpbmNsdWRlICJ1bW9kYXJpdGguaCIKKyNpbmNsdWRlICJzaXhzdGVwLmgiCisKKworLyogQmlnbnVtOiBDYWNoZSBlZmZpY2llbnQgTWF0cml4IEZvdXJpZXIgVHJhbnNmb3JtIGZvciBhcnJheXMgb2YgdGhlCisgICBmb3JtIDIqKm4gKFNlZSBsaXRlcmF0dXJlL3NpeC1zdGVwLnR4dCkuICovCisKKworLyogZm9yd2FyZCB0cmFuc2Zvcm0gd2l0aCBzaWduID0gLTEgKi8KK2ludAorc2l4X3N0ZXBfZm50KG1wZF91aW50X3QgKmEsIG1wZF9zaXplX3QgbiwgaW50IG1vZG51bSkKK3sKKyAgICBzdHJ1Y3QgZm50X3BhcmFtcyAqdHBhcmFtczsKKyAgICBtcGRfc2l6ZV90IGxvZzJuLCBDLCBSOworICAgIG1wZF91aW50X3Qga2VybmVsOworICAgIG1wZF91aW50X3QgdW1vZDsKKyNpZmRlZiBQUFJPCisgICAgZG91YmxlIGRtb2Q7CisgICAgdWludDMyX3QgZGludm1vZFszXTsKKyNlbmRpZgorICAgIG1wZF91aW50X3QgKngsIHcwLCB3MSwgd3N0ZXA7CisgICAgbXBkX3NpemVfdCBpLCBrOworCisKKyAgICBhc3NlcnQoaXNwb3dlcjIobikpOworICAgIGFzc2VydChuID49IDE2KTsKKyAgICBhc3NlcnQobiA8PSBNUERfTUFYVFJBTlNGT1JNXzJOKTsKKworICAgIGxvZzJuID0gbXBkX2JzcihuKTsKKyAgICBDID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAvIDIpOyAgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBSID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAtIChsb2cybiAvIDIpKTsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKworCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBSLCBDKSkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBMZW5ndGggUiB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMoUiwgLTEsIG1vZG51bSkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoeCA9IGE7IHggPCBhK247IHggKz0gUikgeworICAgICAgICBmbnRfZGlmMih4LCBSLCB0cGFyYW1zKTsKKyAgICB9CisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIEMsIFIpKSB7CisgICAgICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBNdWx0aXBseSBlYWNoIG1hdHJpeCBlbGVtZW50IChhZGRyZXNzZWQgYnkgaSpDK2spIGJ5IHIqKihpKmspLiAqLworICAgIFNFVE1PRFVMVVMobW9kbnVtKTsKKyAgICBrZXJuZWwgPSBfbXBkX2dldGtlcm5lbChuLCAtMSwgbW9kbnVtKTsKKyAgICBmb3IgKGkgPSAxOyBpIDwgUjsgaSsrKSB7CisgICAgICAgIHcwID0gMTsgICAgICAgICAgICAgICAgICAvKiByKiooaSowKTogaW5pdGlhbCB2YWx1ZSBmb3Igaz0wICovCisgICAgICAgIHcxID0gUE9XTU9EKGtlcm5lbCwgaSk7ICAvKiByKiooaSoxKTogaW5pdGlhbCB2YWx1ZSBmb3Igaz0xICovCisgICAgICAgIHdzdGVwID0gTVVMTU9EKHcxLCB3MSk7ICAvKiByKiooMippKSAqLworICAgICAgICBmb3IgKGsgPSAwOyBrIDwgQzsgayArPSAyKSB7CisgICAgICAgICAgICBtcGRfdWludF90IHgwID0gYVtpKkMra107CisgICAgICAgICAgICBtcGRfdWludF90IHgxID0gYVtpKkMraysxXTsKKyAgICAgICAgICAgIE1VTE1PRDIoJngwLCB3MCwgJngxLCB3MSk7CisgICAgICAgICAgICBNVUxNT0QyQygmdzAsICZ3MSwgd3N0ZXApOyAgLyogcioqKGkqKGsrMikpID0gcioqKGkqaykgKiByKiooMippKSAqLworICAgICAgICAgICAgYVtpKkMra10gPSB4MDsKKyAgICAgICAgICAgIGFbaSpDK2srMV0gPSB4MTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIExlbmd0aCBDIHRyYW5zZm9ybSBvbiB0aGUgcm93cy4gKi8KKyAgICBpZiAoQyAhPSBSKSB7CisgICAgICAgIG1wZF9mcmVlKHRwYXJhbXMpOworICAgICAgICBpZiAoKHRwYXJhbXMgPSBfbXBkX2luaXRfZm50X3BhcmFtcyhDLCAtMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBDKSB7CisgICAgICAgIGZudF9kaWYyKHgsIEMsIHRwYXJhbXMpOworICAgIH0KKyAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKworI2lmIDAKKyAgICAvKiBBbiB1bm9yZGVyZWQgdHJhbnNmb3JtIGlzIHN1ZmZpY2llbnQgZm9yIGNvbnZvbHV0aW9uLiAqLworICAgIC8qIFRyYW5zcG9zZSB0aGUgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgUiwgQykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gMTsKK30KKworCisvKiByZXZlcnNlIHRyYW5zZm9ybSwgc2lnbiA9IDEgKi8KK2ludAoraW52X3NpeF9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pCit7CisgICAgc3RydWN0IGZudF9wYXJhbXMgKnRwYXJhbXM7CisgICAgbXBkX3NpemVfdCBsb2cybiwgQywgUjsKKyAgICBtcGRfdWludF90IGtlcm5lbDsKKyAgICBtcGRfdWludF90IHVtb2Q7CisjaWZkZWYgUFBSTworICAgIGRvdWJsZSBkbW9kOworICAgIHVpbnQzMl90IGRpbnZtb2RbM107CisjZW5kaWYKKyAgICBtcGRfdWludF90ICp4LCB3MCwgdzEsIHdzdGVwOworICAgIG1wZF9zaXplX3QgaSwgazsKKworCisgICAgYXNzZXJ0KGlzcG93ZXIyKG4pKTsKKyAgICBhc3NlcnQobiA+PSAxNik7CisgICAgYXNzZXJ0KG4gPD0gTVBEX01BWFRSQU5TRk9STV8yTik7CisKKyAgICBsb2cybiA9IG1wZF9ic3Iobik7CisgICAgQyA9ICgobXBkX3NpemVfdCkxKSA8PCAobG9nMm4gLyAyKTsgLyogbnVtYmVyIG9mIGNvbHVtbnMgKi8KKyAgICBSID0gKChtcGRfc2l6ZV90KTEpIDw8IChsb2cybiAtIChsb2cybiAvIDIpKTsgLyogbnVtYmVyIG9mIHJvd3MgKi8KKworCisjaWYgMAorICAgIC8qIEFuIHVub3JkZXJlZCB0cmFuc2Zvcm0gaXMgc3VmZmljaWVudCBmb3IgY29udm9sdXRpb24uICovCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXgsIHByb2R1Y2luZyBhbiBSKkMgbWF0cml4LiAqLworICAgIGlmICghdHJhbnNwb3NlX3BvdzIoYSwgQywgUikpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICAvKiBMZW5ndGggQyB0cmFuc2Zvcm0gb24gdGhlIHJvd3MuICovCisgICAgaWYgKCh0cGFyYW1zID0gX21wZF9pbml0X2ZudF9wYXJhbXMoQywgMSwgbW9kbnVtKSkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZm9yICh4ID0gYTsgeCA8IGErbjsgeCArPSBDKSB7CisgICAgICAgIGZudF9kaWYyKHgsIEMsIHRwYXJhbXMpOworICAgIH0KKworICAgIC8qIE11bHRpcGx5IGVhY2ggbWF0cml4IGVsZW1lbnQgKGFkZHJlc3NlZCBieSBpKkMraykgYnkgcioqKGkqaykuICovCisgICAgU0VUTU9EVUxVUyhtb2RudW0pOworICAgIGtlcm5lbCA9IF9tcGRfZ2V0a2VybmVsKG4sIDEsIG1vZG51bSk7CisgICAgZm9yIChpID0gMTsgaSA8IFI7IGkrKykgeworICAgICAgICB3MCA9IDE7CisgICAgICAgIHcxID0gUE9XTU9EKGtlcm5lbCwgaSk7CisgICAgICAgIHdzdGVwID0gTVVMTU9EKHcxLCB3MSk7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBDOyBrICs9IDIpIHsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDAgPSBhW2kqQytrXTsKKyAgICAgICAgICAgIG1wZF91aW50X3QgeDEgPSBhW2kqQytrKzFdOworICAgICAgICAgICAgTVVMTU9EMigmeDAsIHcwLCAmeDEsIHcxKTsKKyAgICAgICAgICAgIE1VTE1PRDJDKCZ3MCwgJncxLCB3c3RlcCk7CisgICAgICAgICAgICBhW2kqQytrXSA9IHgwOworICAgICAgICAgICAgYVtpKkMraysxXSA9IHgxOworICAgICAgICB9CisgICAgfQorCisgICAgLyogVHJhbnNwb3NlIHRoZSBtYXRyaXguICovCisgICAgaWYgKCF0cmFuc3Bvc2VfcG93MihhLCBSLCBDKSkgeworICAgICAgICBtcGRfZnJlZSh0cGFyYW1zKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogTGVuZ3RoIFIgdHJhbnNmb3JtIG9uIHRoZSByb3dzLiAqLworICAgIGlmIChSICE9IEMpIHsKKyAgICAgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisgICAgICAgIGlmICgodHBhcmFtcyA9IF9tcGRfaW5pdF9mbnRfcGFyYW1zKFIsIDEsIG1vZG51bSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoeCA9IGE7IHggPCBhK247IHggKz0gUikgeworICAgICAgICBmbnRfZGlmMih4LCBSLCB0cGFyYW1zKTsKKyAgICB9CisgICAgbXBkX2ZyZWUodHBhcmFtcyk7CisKKyAgICAvKiBUcmFuc3Bvc2UgdGhlIG1hdHJpeC4gKi8KKyAgICBpZiAoIXRyYW5zcG9zZV9wb3cyKGEsIEMsIFIpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyNTFkZgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgU0lYX1NURVBfSAorI2RlZmluZSBTSVhfU1RFUF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKworaW50IHNpeF9zdGVwX2ZudChtcGRfdWludF90ICphLCBtcGRfc2l6ZV90IG4sIGludCBtb2RudW0pOworaW50IGludl9zaXhfc3RlcF9mbnQobXBkX3VpbnRfdCAqYSwgbXBkX3NpemVfdCBuLCBpbnQgbW9kbnVtKTsKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmMgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNWQ0YjYKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5jCkBAIC0wLDAgKzEsMjc2IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW5jbHVkZSAibXBkZWNpbWFsLmgiCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlICJiaXRzLmgiCisjaW5jbHVkZSAiY29uc3RhbnRzLmgiCisjaW5jbHVkZSAidHlwZWFyaXRoLmgiCisjaW5jbHVkZSAidHJhbnNwb3NlLmgiCisKKworI2RlZmluZSBCVUZTSVpFIDQwOTYKKyNkZWZpbmUgU0lERSAxMjgKKworCisvKiBCaWdudW06IFRoZSB0cmFuc3Bvc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGZvciB2ZXJ5IGxhcmdlIHRyYW5zZm9ybXMKKyAgIGluIHNpeHN0ZXAuYyBhbmQgZm91cnN0ZXAuYy4gKi8KKworCisvKiBEZWZpbml0aW9uIG9mIHRoZSBtYXRyaXggdHJhbnNwb3NlICovCit2b2lkCitzdGRfdHJhbnMobXBkX3VpbnRfdCBkZXN0W10sIG1wZF91aW50X3Qgc3JjW10sIG1wZF9zaXplX3Qgcm93cywgbXBkX3NpemVfdCBjb2xzKQoreworICAgIG1wZF9zaXplX3QgaWRlc3QsIGlzcmM7CisgICAgbXBkX3NpemVfdCByLCBjOworCisgICAgZm9yIChyID0gMDsgciA8IHJvd3M7IHIrKykgeworICAgICAgICBpc3JjID0gciAqIGNvbHM7CisgICAgICAgIGlkZXN0ID0gcjsKKyAgICAgICAgZm9yIChjID0gMDsgYyA8IGNvbHM7IGMrKykgeworICAgICAgICAgICAgZGVzdFtpZGVzdF0gPSBzcmNbaXNyY107CisgICAgICAgICAgICBpc3JjICs9IDE7CisgICAgICAgICAgICBpZGVzdCArPSByb3dzOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogU3dhcCBoYWxmLXJvd3Mgb2YgMl5uICogKDIqMl5uKSBtYXRyaXguCisgKiBGT1JXQVJEX0NZQ0xFOiBldmVuL29kZCBwZXJtdXRhdGlvbiBvZiB0aGUgaGFsZnJvd3MuCisgKiBCQUNLV0FSRF9DWUNMRTogcmV2ZXJzZSB0aGUgZXZlbi9vZGQgcGVybXV0YXRpb24uCisgKi8KK3N0YXRpYyBpbnQKK3N3YXBfaGFsZnJvd3NfcG93MihtcGRfdWludF90ICptYXRyaXgsIG1wZF9zaXplX3Qgcm93cywgbXBkX3NpemVfdCBjb2xzLCBpbnQgZGlyKQoreworICAgIG1wZF91aW50X3QgYnVmMVtCVUZTSVpFXTsKKyAgICBtcGRfdWludF90IGJ1ZjJbQlVGU0laRV07CisgICAgbXBkX3VpbnRfdCAqcmVhZGJ1ZiwgKndyaXRlYnVmLCAqaHA7CisgICAgbXBkX3NpemVfdCAqZG9uZSwgZGJpdHM7CisgICAgbXBkX3NpemVfdCBiID0gQlVGU0laRSwgc3RyaWRlOworICAgIG1wZF9zaXplX3QgaG4sIGhtYXg7IC8qIGhhbGZyb3cgbnVtYmVyICovCisgICAgbXBkX3NpemVfdCBtLCByPTA7CisgICAgbXBkX3NpemVfdCBvZmZzZXQ7CisgICAgbXBkX3NpemVfdCBuZXh0OworCisKKyAgICBhc3NlcnQoY29scyA9PSBtdWxfc2l6ZV90KDIsIHJvd3MpKTsKKworICAgIGlmIChkaXIgPT0gRk9SV0FSRF9DWUNMRSkgeworICAgICAgICByID0gcm93czsKKyAgICB9CisgICAgZWxzZSBpZiAoZGlyID09IEJBQ0tXQVJEX0NZQ0xFKSB7CisgICAgICAgIHIgPSAyOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYWJvcnQoKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKworICAgIG0gPSBjb2xzIC0gMTsKKyAgICBobWF4ID0gcm93czsgLyogY3ljbGVzIHN0YXJ0IGF0IG9kZCBoYWxmcm93cyAqLworICAgIGRiaXRzID0gOCAqIHNpemVvZiAqZG9uZTsKKyAgICBpZiAoKGRvbmUgPSBtcGRfY2FsbG9jKGhtYXgvKHNpemVvZiAqZG9uZSkgKyAxLCBzaXplb2YgKmRvbmUpKSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGZvciAoaG4gPSAxOyBobiA8PSBobWF4OyBobiArPSAyKSB7CisKKyAgICAgICAgaWYgKGRvbmVbaG4vZGJpdHNdICYgbXBkX2JpdHNbaG4lZGJpdHNdKSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJlYWRidWYgPSBidWYxOyB3cml0ZWJ1ZiA9IGJ1ZjI7CisKKyAgICAgICAgZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBjb2xzLzI7IG9mZnNldCArPSBiKSB7CisKKyAgICAgICAgICAgIHN0cmlkZSA9IChvZmZzZXQgKyBiIDwgY29scy8yKSA/IGIgOiBjb2xzLzItb2Zmc2V0OworCisgICAgICAgICAgICBocCA9IG1hdHJpeCArIGhuKmNvbHMvMjsKKyAgICAgICAgICAgIG1lbWNweShyZWFkYnVmLCBocCtvZmZzZXQsIHN0cmlkZSooc2l6ZW9mICpyZWFkYnVmKSk7CisgICAgICAgICAgICBwb2ludGVyc3dhcCgmcmVhZGJ1ZiwgJndyaXRlYnVmKTsKKworICAgICAgICAgICAgbmV4dCA9IG11bG1vZF9zaXplX3QoaG4sIHIsIG0pOworICAgICAgICAgICAgaHAgPSBtYXRyaXggKyBuZXh0KmNvbHMvMjsKKworICAgICAgICAgICAgd2hpbGUgKG5leHQgIT0gaG4pIHsKKworICAgICAgICAgICAgICAgIG1lbWNweShyZWFkYnVmLCBocCtvZmZzZXQsIHN0cmlkZSooc2l6ZW9mICpyZWFkYnVmKSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KGhwK29mZnNldCwgd3JpdGVidWYsIHN0cmlkZSooc2l6ZW9mICp3cml0ZWJ1ZikpOworICAgICAgICAgICAgICAgIHBvaW50ZXJzd2FwKCZyZWFkYnVmLCAmd3JpdGVidWYpOworCisgICAgICAgICAgICAgICAgZG9uZVtuZXh0L2RiaXRzXSB8PSBtcGRfYml0c1tuZXh0JWRiaXRzXTsKKworICAgICAgICAgICAgICAgIG5leHQgPSBtdWxtb2Rfc2l6ZV90KG5leHQsIHIsIG0pOworICAgICAgICAgICAgICAgICAgICBocCA9IG1hdHJpeCArIG5leHQqY29scy8yOworCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lbWNweShocCtvZmZzZXQsIHdyaXRlYnVmLCBzdHJpZGUqKHNpemVvZiAqd3JpdGVidWYpKTsKKworICAgICAgICAgICAgZG9uZVtobi9kYml0c10gfD0gbXBkX2JpdHNbaG4lZGJpdHNdOworICAgICAgICB9CisgICAgfQorCisgICAgbXBkX2ZyZWUoZG9uZSk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIEluLXBsYWNlIHRyYW5zcG9zZSBvZiBhIHNxdWFyZSBtYXRyaXggKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorc3F1YXJldHJhbnMobXBkX3VpbnRfdCAqYnVmLCBtcGRfc2l6ZV90IGNvbHMpCit7CisgICAgbXBkX3VpbnRfdCB0bXA7CisgICAgbXBkX3NpemVfdCBpZGVzdCwgaXNyYzsKKyAgICBtcGRfc2l6ZV90IHIsIGM7CisKKyAgICBmb3IgKHIgPSAwOyByIDwgY29sczsgcisrKSB7CisgICAgICAgIGMgPSByKzE7CisgICAgICAgIGlzcmMgPSByKmNvbHMgKyBjOworICAgICAgICBpZGVzdCA9IGMqY29scyArIHI7CisgICAgICAgIGZvciAoYyA9IHIrMTsgYyA8IGNvbHM7IGMrKykgeworICAgICAgICAgICAgdG1wID0gYnVmW2lzcmNdOworICAgICAgICAgICAgYnVmW2lzcmNdID0gYnVmW2lkZXN0XTsKKyAgICAgICAgICAgIGJ1ZltpZGVzdF0gPSB0bXA7CisgICAgICAgICAgICBpc3JjICs9IDE7CisgICAgICAgICAgICBpZGVzdCArPSBjb2xzOworICAgICAgICB9CisgICAgfQorfQorCisvKgorICogVHJhbnNwb3NlIDJebiAqIDJebiBtYXRyaXguIEZvciBjYWNoZSBlZmZpY2llbmN5LCB0aGUgbWF0cml4IGlzIHNwbGl0IGludG8KKyAqIHNxdWFyZSBibG9ja3Mgd2l0aCBzaWRlIGxlbmd0aCAnU0lERScuIEZpcnN0LCB0aGUgYmxvY2tzIGFyZSB0cmFuc3Bvc2VkLAorICogdGhlbiBhIHNxdWFyZSB0cmFucG9zaXRpb24gaXMgZG9uZSBvbiBlYWNoIGluZGl2aWR1YWwgYmxvY2suCisgKi8KK3N0YXRpYyB2b2lkCitzcXVhcmV0cmFuc19wb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCBzaXplKQoreworICAgIG1wZF91aW50X3QgYnVmMVtTSURFKlNJREVdOworICAgIG1wZF91aW50X3QgYnVmMltTSURFKlNJREVdOworICAgIG1wZF91aW50X3QgKnRvLCAqZnJvbTsKKyAgICBtcGRfc2l6ZV90IGIgPSBzaXplOworICAgIG1wZF9zaXplX3QgciwgYzsKKyAgICBtcGRfc2l6ZV90IGk7CisKKyAgICB3aGlsZSAoYiA+IFNJREUpIGIgPj49IDE7CisKKyAgICBmb3IgKHIgPSAwOyByIDwgc2l6ZTsgciArPSBiKSB7CisKKyAgICAgICAgZm9yIChjID0gcjsgYyA8IHNpemU7IGMgKz0gYikgeworCisgICAgICAgICAgICBmcm9tID0gbWF0cml4ICsgcipzaXplICsgYzsKKyAgICAgICAgICAgIHRvID0gYnVmMTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIHsKKyAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICBmcm9tICs9IHNpemU7CisgICAgICAgICAgICAgICAgdG8gKz0gYjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNxdWFyZXRyYW5zKGJ1ZjEsIGIpOworCisgICAgICAgICAgICBpZiAociA9PSBjKSB7CisgICAgICAgICAgICAgICAgdG8gPSBtYXRyaXggKyByKnNpemUgKyBjOworICAgICAgICAgICAgICAgIGZyb20gPSBidWYxOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBiKihzaXplb2YgKnRvKSk7CisgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gYjsKKyAgICAgICAgICAgICAgICAgICAgdG8gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmcm9tID0gbWF0cml4ICsgYypzaXplICsgcjsKKyAgICAgICAgICAgICAgICB0byA9IGJ1ZjI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodG8sIGZyb20sIGIqKHNpemVvZiAqdG8pKTsKKyAgICAgICAgICAgICAgICAgICAgZnJvbSArPSBzaXplOworICAgICAgICAgICAgICAgICAgICB0byArPSBiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzcXVhcmV0cmFucyhidWYyLCBiKTsKKworICAgICAgICAgICAgICAgIHRvID0gbWF0cml4ICsgYypzaXplICsgcjsKKyAgICAgICAgICAgICAgICBmcm9tID0gYnVmMTsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweSh0bywgZnJvbSwgYiooc2l6ZW9mICp0bykpOworICAgICAgICAgICAgICAgICAgICBmcm9tICs9IGI7CisgICAgICAgICAgICAgICAgICAgIHRvICs9IHNpemU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdG8gPSBtYXRyaXggKyByKnNpemUgKyBjOworICAgICAgICAgICAgICAgIGZyb20gPSBidWYyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBiOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRvLCBmcm9tLCBiKihzaXplb2YgKnRvKSk7CisgICAgICAgICAgICAgICAgICAgIGZyb20gKz0gYjsKKyAgICAgICAgICAgICAgICAgICAgdG8gKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKK30KKworLyoKKyAqIEluLXBsYWNlIHRyYW5zcG9zaXRpb24gb2YgYSAyXm4geCAyXm4gb3IgYSAyXm4geCAoMioyXm4pCisgKiBvciBhICgyKjJebikgeCAyXm4gbWF0cml4LgorICovCitpbnQKK3RyYW5zcG9zZV9wb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpCit7CisgICAgbXBkX3NpemVfdCBzaXplID0gbXVsX3NpemVfdChyb3dzLCBjb2xzKTsKKworICAgIGFzc2VydChpc3Bvd2VyMihyb3dzKSk7CisgICAgYXNzZXJ0KGlzcG93ZXIyKGNvbHMpKTsKKworICAgIGlmIChjb2xzID09IHJvd3MpIHsKKyAgICAgICAgc3F1YXJldHJhbnNfcG93MihtYXRyaXgsIHJvd3MpOworICAgIH0KKyAgICBlbHNlIGlmIChjb2xzID09IG11bF9zaXplX3QoMiwgcm93cykpIHsKKyAgICAgICAgaWYgKCFzd2FwX2hhbGZyb3dzX3BvdzIobWF0cml4LCByb3dzLCBjb2xzLCBGT1JXQVJEX0NZQ0xFKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3F1YXJldHJhbnNfcG93MihtYXRyaXgsIHJvd3MpOworICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCsoc2l6ZS8yKSwgcm93cyk7CisgICAgfQorICAgIGVsc2UgaWYgKHJvd3MgPT0gbXVsX3NpemVfdCgyLCBjb2xzKSkgeworICAgICAgICBzcXVhcmV0cmFuc19wb3cyKG1hdHJpeCwgY29scyk7CisgICAgICAgIHNxdWFyZXRyYW5zX3BvdzIobWF0cml4KyhzaXplLzIpLCBjb2xzKTsKKyAgICAgICAgaWYgKCFzd2FwX2hhbGZyb3dzX3BvdzIobWF0cml4LCBjb2xzLCByb3dzLCBCQUNLV0FSRF9DWUNMRSkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhYm9ydCgpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy90cmFuc3Bvc2UuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQwYWVjNgotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBUUkFOU1BPU0VfSAorI2RlZmluZSBUUkFOU1BPU0VfSAorCisKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorCisKK2VudW0ge0ZPUldBUkRfQ1lDTEUsIEJBQ0tXQVJEX0NZQ0xFfTsKKworCit2b2lkIHN0ZF90cmFucyhtcGRfdWludF90IGRlc3RbXSwgbXBkX3VpbnRfdCBzcmNbXSwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpOworaW50IHRyYW5zcG9zZV9wb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpOwordm9pZCB0cmFuc3Bvc2VfM3hwb3cyKG1wZF91aW50X3QgKm1hdHJpeCwgbXBkX3NpemVfdCByb3dzLCBtcGRfc2l6ZV90IGNvbHMpOworCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBwb2ludGVyc3dhcChtcGRfdWludF90ICoqYSwgbXBkX3VpbnRfdCAqKmIpCit7CisgICAgbXBkX3VpbnRfdCAqdG1wOworCisgICAgdG1wID0gKmI7CisgICAgKmIgPSAqYTsKKyAgICAqYSA9IHRtcDsKK30KKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdHlwZWFyaXRoLmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3R5cGVhcml0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNDgxMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3R5cGVhcml0aC5oCkBAIC0wLDAgKzEsNjY5IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFRZUEVBUklUSF9ICisjZGVmaW5lIFRZUEVBUklUSF9ICisKKworI2luY2x1ZGUgIm1wZGVjaW1hbC5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICBMb3cgbGV2ZWwgbmF0aXZlIGFyaXRobWV0aWMgb24gYmFzaWMgdHlwZXMgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisvKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiogICAgICAgICAgIERvdWJsZSB3aWR0aCBtdWx0aXBsaWNhdGlvbiBhbmQgZGl2aXNpb24KKyAqKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWYgZGVmaW5lZChDT05GSUdfNjQpCisjaWYgZGVmaW5lZChBTlNJKQorI2lmIGRlZmluZWQoSEFWRV9VSU5UMTI4X1QpCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgX191aW50MTI4X3QgaGw7CisKKyAgICBobCA9IChfX3VpbnQxMjhfdClhICogYjsKKworICAgICpoaSA9IGhsID4+IDY0OworICAgICpsbyA9IChtcGRfdWludF90KWhsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgX191aW50MTI4X3QgaGw7CisKKyAgICBobCA9ICgoX191aW50MTI4X3QpaGk8PDY0KSArIGxvOworICAgICpxID0gKG1wZF91aW50X3QpKGhsIC8gZCk7IC8qIHF1b3RpZW50IGlzIGtub3duIHRvIGZpdCAqLworICAgICpyID0gKG1wZF91aW50X3QpKGhsIC0gKF9fdWludDEyOF90KSgqcSkgKiBkKTsKK30KKyNlbHNlCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgdWludDMyX3Qgd1s0XSwgY2Fycnk7CisgICAgdWludDMyX3QgYWgsIGFsLCBiaCwgYmw7CisgICAgdWludDY0X3QgaGw7CisKKyAgICBhaCA9ICh1aW50MzJfdCkoYT4+MzIpOyBhbCA9ICh1aW50MzJfdClhOworICAgIGJoID0gKHVpbnQzMl90KShiPj4zMik7IGJsID0gKHVpbnQzMl90KWI7CisKKyAgICBobCA9ICh1aW50NjRfdClhbCAqIGJsOworICAgIHdbMF0gPSAodWludDMyX3QpaGw7CisgICAgY2FycnkgPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICBobCA9ICh1aW50NjRfdClhaCAqIGJsICsgY2Fycnk7CisgICAgd1sxXSA9ICh1aW50MzJfdClobDsKKyAgICB3WzJdID0gKHVpbnQzMl90KShobD4+MzIpOworCisgICAgaGwgPSAodWludDY0X3QpYWwgKiBiaCArIHdbMV07CisgICAgd1sxXSA9ICh1aW50MzJfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MzJfdCkoaGw+PjMyKTsKKworICAgIGhsID0gKCh1aW50NjRfdClhaCAqIGJoICsgd1syXSkgKyBjYXJyeTsKKyAgICB3WzJdID0gKHVpbnQzMl90KWhsOworICAgIHdbM10gPSAodWludDMyX3QpKGhsPj4zMik7CisKKyAgICAqaGkgPSAoKHVpbnQ2NF90KXdbM108PDMyKSArIHdbMl07CisgICAgKmxvID0gKCh1aW50NjRfdCl3WzFdPDwzMikgKyB3WzBdOworfQorCisvKgorICogQnkgSGVucnkgUy4gV2FycmVuOiBodHRwOi8vd3d3LmhhY2tlcnNkZWxpZ2h0Lm9yZy9IRGNvZGUvZGl2bHUuYy50eHQKKyAqIGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL3Blcm1pc3Npb25zLmh0bToKKyAqICJZb3UgYXJlIGZyZWUgdG8gdXNlLCBjb3B5LCBhbmQgZGlzdHJpYnV0ZSBhbnkgb2YgdGhlIGNvZGUgb24gdGhpcyB3ZWIKKyAqICBzaXRlLCB3aGV0aGVyIG1vZGlmaWVkIGJ5IHlvdSBvciBub3QuIFlvdSBuZWVkIG5vdCBnaXZlIGF0dHJpYnV0aW9uLiIKKyAqCisgKiBTbGlnaHRseSBtb2RpZmllZCwgY29tbWVudHMgYXJlIG1pbmUuCisgKi8KK3N0YXRpYyBpbmxpbmUgaW50CitubHoodWludDY0X3QgeCkKK3sKKyAgICBpbnQgbjsKKworICAgIGlmICh4ID09IDApIHJldHVybig2NCk7CisKKyAgICBuID0gMDsKKyAgICBpZiAoeCA8PSAweDAwMDAwMDAwRkZGRkZGRkYpIHtuID0gbiArMzI7IHggPSB4IDw8MzI7fQorICAgIGlmICh4IDw9IDB4MDAwMEZGRkZGRkZGRkZGRikge24gPSBuICsxNjsgeCA9IHggPDwxNjt9CisgICAgaWYgKHggPD0gMHgwMEZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyA4OyB4ID0geCA8PCA4O30KKyAgICBpZiAoeCA8PSAweDBGRkZGRkZGRkZGRkZGRkYpIHtuID0gbiArIDQ7IHggPSB4IDw8IDQ7fQorICAgIGlmICh4IDw9IDB4M0ZGRkZGRkZGRkZGRkZGRikge24gPSBuICsgMjsgeCA9IHggPDwgMjt9CisgICAgaWYgKHggPD0gMHg3RkZGRkZGRkZGRkZGRkZGKSB7biA9IG4gKyAxO30KKworICAgIHJldHVybiBuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgdTEsIG1wZF91aW50X3QgdTAsCisgICAgICAgICAgICAgICBtcGRfdWludF90IHYpCit7CisgICAgY29uc3QgbXBkX3VpbnRfdCBiID0gNDI5NDk2NzI5NjsKKyAgICBtcGRfdWludF90IHVuMSwgdW4wLAorICAgICAgICAgICAgICAgdm4xLCB2bjAsCisgICAgICAgICAgICAgICBxMSwgcTAsCisgICAgICAgICAgICAgICB1bjMyLCB1bjIxLCB1bjEwLAorICAgICAgICAgICAgICAgcmhhdCwgdDsKKyAgICBpbnQgczsKKworICAgIGFzc2VydCh1MSA8IHYpOworCisgICAgcyA9IG5seih2KTsKKyAgICB2ID0gdiA8PCBzOworICAgIHZuMSA9IHYgPj4gMzI7CisgICAgdm4wID0gdiAmIDB4RkZGRkZGRkY7CisKKyAgICB0ID0gKHMgPT0gMCkgPyAwIDogdTAgPj4gKDY0IC0gcyk7CisgICAgdW4zMiA9ICh1MSA8PCBzKSB8IHQ7CisgICAgdW4xMCA9IHUwIDw8IHM7CisKKyAgICB1bjEgPSB1bjEwID4+IDMyOworICAgIHVuMCA9IHVuMTAgJiAweEZGRkZGRkZGOworCisgICAgcTEgPSB1bjMyIC8gdm4xOworICAgIHJoYXQgPSB1bjMyIC0gcTEqdm4xOworYWdhaW4xOgorICAgIGlmIChxMSA+PSBiIHx8IHExKnZuMCA+IGIqcmhhdCArIHVuMSkgeworICAgICAgICBxMSA9IHExIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgQmVmb3JlIGFnYWluMSB3ZSBoYWQ6CisgICAgICogICAgICAoMSkgcTEqdm4xICAgKyByaGF0ICAgICAgICAgPSB1bjMyCisgICAgICogICAgICAoMikgcTEqdm4xKmIgKyByaGF0KmIgKyB1bjEgPSB1bjMyKmIgKyB1bjEKKyAgICAgKgorICAgICAqICBUaGUgc3RhdGVtZW50cyBpbnNpZGUgdGhlIGlmLWNsYXVzZSBkbyBub3QgY2hhbmdlIHRoZSB2YWx1ZQorICAgICAqICBvZiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgKDIpLCBhbmQgdGhlIGxvb3AgaXMgb25seSBleGl0ZWQKKyAgICAgKiAgaWYgcTEqdm4wIDw9IHJoYXQqYiArIHVuMSwgc286CisgICAgICoKKyAgICAgKiAgICAgICgzKSBxMSp2bjEqYiArIHExKnZuMCA8PSB1bjMyKmIgKyB1bjEKKyAgICAgKiAgICAgICg0KSAgICAgICAgICAgICAgcTEqdiA8PSB1bjMyKmIgKyB1bjEKKyAgICAgKiAgICAgICg1KSAgICAgICAgICAgICAgICAgMCA8PSB1bjMyKmIgKyB1bjEgLSBxMSp2CisgICAgICoKKyAgICAgKiAgQnkgKDUpIHdlIGFyZSBjZXJ0YWluIHRoYXQgdGhlIHBvc3NpYmxlIGFkZC1iYWNrIHN0ZXAgZnJvbQorICAgICAqICBLbnV0aCdzIGFsZ29yaXRobSBEIGlzIG5ldmVyIHJlcXVpcmVkLgorICAgICAqCisgICAgICogIFNpbmNlIHRoZSBmaW5hbCBxdW90aWVudCBpcyBsZXNzIHRoYW4gMioqNjQsIHRoZSBmb2xsb3dpbmcKKyAgICAgKiAgbXVzdCBiZSB0cnVlOgorICAgICAqCisgICAgICogICAgICAoNikgdW4zMipiICsgdW4xIC0gcTEqdiA8PSBVSU5UNjRfTUFYCisgICAgICoKKyAgICAgKiAgVGhpcyBtZWFucyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgbGluZSwgdGhlIGhpZ2ggd29yZHMKKyAgICAgKiAgb2YgdW4zMipiIGFuZCBxMSp2IGNhbiBiZSBkaXNjYXJkZWQgd2l0aG91dCBhbnkgZWZmZWN0CisgICAgICogIG9uIHRoZSByZXN1bHQuCisgICAgICovCisgICAgdW4yMSA9IHVuMzIqYiArIHVuMSAtIHExKnY7CisKKyAgICBxMCA9IHVuMjEgLyB2bjE7CisgICAgcmhhdCA9IHVuMjEgLSBxMCp2bjE7CithZ2FpbjI6CisgICAgaWYgKHEwID49IGIgfHwgcTAqdm4wID4gYipyaGF0ICsgdW4wKSB7CisgICAgICAgIHEwID0gcTAgLSAxOworICAgICAgICByaGF0ID0gcmhhdCArIHZuMTsKKyAgICAgICAgaWYgKHJoYXQgPCBiKSBnb3RvIGFnYWluMjsKKyAgICB9CisKKyAgICAqcSA9IHExKmIgKyBxMDsKKyAgICAqciA9ICh1bjIxKmIgKyB1bjAgLSBxMCp2KSA+PiBzOworfQorI2VuZGlmCisKKy8qIEVORCBBTlNJICovCisjZWxpZiBkZWZpbmVkKEFTTSkKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGgsIGw7CisKKyAgICBfX2FzbV9fICggIm11bHEgJTNcblx0IgorICAgICAgICAgICAgICA6ICI9ZCIgKGgpLCAiPWEiIChsKQorICAgICAgICAgICAgICA6ICIlYSIgKGEpLCAicm0iIChiKQorICAgICAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKmhpID0gaDsKKyAgICAqbG8gPSBsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICBtcGRfdWludF90IGQpCit7CisgICAgbXBkX3VpbnRfdCBxcSwgcnI7CisKKyAgICBfX2FzbV9fICggImRpdnEgJTRcblx0IgorICAgICAgICAgICAgICA6ICI9YSIgKHFxKSwgIj1kIiAocnIpCisgICAgICAgICAgICAgIDogImEiIChsbyksICJkIiAoaGkpLCAicm0iIChkKQorICAgICAgICAgICAgICA6ICJjYyIKKyAgICApOworCisgICAgKnEgPSBxcTsKKyAgICAqciA9IHJyOworfQorLyogRU5EIEdDQyBBU00gKi8KKyNlbGlmIGRlZmluZWQoTUFTTSkKKyNpbmNsdWRlIDxpbnRyaW4uaD4KKyNwcmFnbWEgaW50cmluc2ljKF91bXVsMTI4KQorCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgKmxvID0gX3VtdWwxMjgoYSwgYiwgaGkpOworfQorCit2b2lkIF9tcGRfZGl2X3dvcmRzKG1wZF91aW50X3QgKnEsIG1wZF91aW50X3QgKnIsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sCisgICAgICAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCk7CisKKy8qIEVORCBNQVNNIChfTVNDX1ZFUikgKi8KKyNlbHNlCisgICNlcnJvciAibmVlZCBwbGF0Zm9ybSBzcGVjaWZpYyAxMjggYml0IG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiIKKyNlbmRpZgorCisjZGVmaW5lIERJVk1PRChxLCByLCB2LCBkKSAqcSA9IHYgLyBkOyAqciA9IHYgLSAqcSAqIGQKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZtb2RfcG93MTAobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGV4cCkKK3sKKyAgICBhc3NlcnQoZXhwIDw9IDE5KTsKKworICAgIGlmIChleHAgPD0gOSkgeworICAgICAgICBpZiAoZXhwIDw9IDQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDA6ICpxID0gdjsgKnIgPSAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTogRElWTU9EKHEsIHIsIHYsIDEwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjogRElWTU9EKHEsIHIsIHYsIDEwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM6IERJVk1PRChxLCByLCB2LCAxMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgNDogRElWTU9EKHEsIHIsIHYsIDEwMDAwVUwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDU6IERJVk1PRChxLCByLCB2LCAxMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA2OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDg6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSA5OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChleHAgPD0gMTQpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDEwOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTE6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDEzOiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMDAwMDAwMDBVTEwpOyBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgICAgICBjYXNlIDE1OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxNjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE3OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE4OiBESVZNT0QocSwgciwgdiwgMTAwMDAwMDAwMDAwMDAwMDAwMFVMTCk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSAxOTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDAwMDAwMDAwMDAwVUxMKTsgYnJlYWs7IC8qIEdDT1ZfTk9UX1JFQUNIRUQgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLyogRU5EIENPTkZJR182NCAqLworI2VsaWYgZGVmaW5lZChDT05GSUdfMzIpCisjaWYgZGVmaW5lZChBTlNJKQorI2lmICFkZWZpbmVkKExFR0FDWV9DT01QSUxFUikKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdXVpbnRfdCBobDsKKworICAgIGhsID0gKG1wZF91dWludF90KWEgKiBiOworCisgICAgKmhpID0gaGwgPj4gMzI7CisgICAgKmxvID0gKG1wZF91aW50X3QpaGw7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdXVpbnRfdCBobDsKKworICAgIGhsID0gKChtcGRfdXVpbnRfdCloaTw8MzIpICsgbG87CisgICAgKnEgPSAobXBkX3VpbnRfdCkoaGwgLyBkKTsgLyogcXVvdGllbnQgaXMga25vd24gdG8gZml0ICovCisgICAgKnIgPSAobXBkX3VpbnRfdCkoaGwgLSAobXBkX3V1aW50X3QpKCpxKSAqIGQpOworfQorLyogRU5EIEFOU0kgKyB1aW50NjRfdCAqLworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICB1aW50MTZfdCB3WzRdLCBjYXJyeTsKKyAgICB1aW50MTZfdCBhaCwgYWwsIGJoLCBibDsKKyAgICB1aW50MzJfdCBobDsKKworICAgIGFoID0gKHVpbnQxNl90KShhPj4xNik7IGFsID0gKHVpbnQxNl90KWE7CisgICAgYmggPSAodWludDE2X3QpKGI+PjE2KTsgYmwgPSAodWludDE2X3QpYjsKKworICAgIGhsID0gKHVpbnQzMl90KWFsICogYmw7CisgICAgd1swXSA9ICh1aW50MTZfdClobDsKKyAgICBjYXJyeSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgIGhsID0gKHVpbnQzMl90KWFoICogYmwgKyBjYXJyeTsKKyAgICB3WzFdID0gKHVpbnQxNl90KWhsOworICAgIHdbMl0gPSAodWludDE2X3QpKGhsPj4xNik7CisKKyAgICBobCA9ICh1aW50MzJfdClhbCAqIGJoICsgd1sxXTsKKyAgICB3WzFdID0gKHVpbnQxNl90KWhsOworICAgIGNhcnJ5ID0gKHVpbnQxNl90KShobD4+MTYpOworCisgICAgaGwgPSAoKHVpbnQzMl90KWFoICogYmggKyB3WzJdKSArIGNhcnJ5OworICAgIHdbMl0gPSAodWludDE2X3QpaGw7CisgICAgd1szXSA9ICh1aW50MTZfdCkoaGw+PjE2KTsKKworICAgICpoaSA9ICgodWludDMyX3Qpd1szXTw8MTYpICsgd1syXTsKKyAgICAqbG8gPSAoKHVpbnQzMl90KXdbMV08PDE2KSArIHdbMF07Cit9CisKKy8qCisgKiBCeSBIZW5yeSBTLiBXYXJyZW46IGh0dHA6Ly93d3cuaGFja2Vyc2RlbGlnaHQub3JnL0hEY29kZS9kaXZsdS5jLnR4dAorICogaHR0cDovL3d3dy5oYWNrZXJzZGVsaWdodC5vcmcvcGVybWlzc2lvbnMuaHRtOgorICogIllvdSBhcmUgZnJlZSB0byB1c2UsIGNvcHksIGFuZCBkaXN0cmlidXRlIGFueSBvZiB0aGUgY29kZSBvbiB0aGlzIHdlYgorICogIHNpdGUsIHdoZXRoZXIgbW9kaWZpZWQgYnkgeW91IG9yIG5vdC4gWW91IG5lZWQgbm90IGdpdmUgYXR0cmlidXRpb24uIgorICoKKyAqIFNsaWdodGx5IG1vZGlmaWVkLCBjb21tZW50cyBhcmUgbWluZS4KKyAqLworc3RhdGljIGlubGluZSBpbnQKK25seih1aW50MzJfdCB4KQoreworICAgIGludCBuOworCisgICAgaWYgKHggPT0gMCkgcmV0dXJuKDMyKTsKKworICAgIG4gPSAwOworICAgIGlmICh4IDw9IDB4MDAwMEZGRkYpIHtuID0gbiArMTY7IHggPSB4IDw8MTY7fQorICAgIGlmICh4IDw9IDB4MDBGRkZGRkYpIHtuID0gbiArIDg7IHggPSB4IDw8IDg7fQorICAgIGlmICh4IDw9IDB4MEZGRkZGRkYpIHtuID0gbiArIDQ7IHggPSB4IDw8IDQ7fQorICAgIGlmICh4IDw9IDB4M0ZGRkZGRkYpIHtuID0gbiArIDI7IHggPSB4IDw8IDI7fQorICAgIGlmICh4IDw9IDB4N0ZGRkZGRkYpIHtuID0gbiArIDE7fQorCisgICAgcmV0dXJuIG47Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB1MSwgbXBkX3VpbnRfdCB1MCwKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgdikKK3sKKyAgICBjb25zdCBtcGRfdWludF90IGIgPSA2NTUzNjsKKyAgICBtcGRfdWludF90IHVuMSwgdW4wLAorICAgICAgICAgICAgICAgdm4xLCB2bjAsCisgICAgICAgICAgICAgICBxMSwgcTAsCisgICAgICAgICAgICAgICB1bjMyLCB1bjIxLCB1bjEwLAorICAgICAgICAgICAgICAgcmhhdCwgdDsKKyAgICBpbnQgczsKKworICAgIGFzc2VydCh1MSA8IHYpOworCisgICAgcyA9IG5seih2KTsKKyAgICB2ID0gdiA8PCBzOworICAgIHZuMSA9IHYgPj4gMTY7CisgICAgdm4wID0gdiAmIDB4RkZGRjsKKworICAgIHQgPSAocyA9PSAwKSA/IDAgOiB1MCA+PiAoMzIgLSBzKTsKKyAgICB1bjMyID0gKHUxIDw8IHMpIHwgdDsKKyAgICB1bjEwID0gdTAgPDwgczsKKworICAgIHVuMSA9IHVuMTAgPj4gMTY7CisgICAgdW4wID0gdW4xMCAmIDB4RkZGRjsKKworICAgIHExID0gdW4zMiAvIHZuMTsKKyAgICByaGF0ID0gdW4zMiAtIHExKnZuMTsKK2FnYWluMToKKyAgICBpZiAocTEgPj0gYiB8fCBxMSp2bjAgPiBiKnJoYXQgKyB1bjEpIHsKKyAgICAgICAgcTEgPSBxMSAtIDE7CisgICAgICAgIHJoYXQgPSByaGF0ICsgdm4xOworICAgICAgICBpZiAocmhhdCA8IGIpIGdvdG8gYWdhaW4xOworICAgIH0KKworICAgIC8qCisgICAgICogIEJlZm9yZSBhZ2FpbjEgd2UgaGFkOgorICAgICAqICAgICAgKDEpIHExKnZuMSAgICsgcmhhdCAgICAgICAgID0gdW4zMgorICAgICAqICAgICAgKDIpIHExKnZuMSpiICsgcmhhdCpiICsgdW4xID0gdW4zMipiICsgdW4xCisgICAgICoKKyAgICAgKiAgVGhlIHN0YXRlbWVudHMgaW5zaWRlIHRoZSBpZi1jbGF1c2UgZG8gbm90IGNoYW5nZSB0aGUgdmFsdWUKKyAgICAgKiAgb2YgdGhlIGxlZnQtaGFuZCBzaWRlIG9mICgyKSwgYW5kIHRoZSBsb29wIGlzIG9ubHkgZXhpdGVkCisgICAgICogIGlmIHExKnZuMCA8PSByaGF0KmIgKyB1bjEsIHNvOgorICAgICAqCisgICAgICogICAgICAoMykgcTEqdm4xKmIgKyBxMSp2bjAgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNCkgICAgICAgICAgICAgIHExKnYgPD0gdW4zMipiICsgdW4xCisgICAgICogICAgICAoNSkgICAgICAgICAgICAgICAgIDAgPD0gdW4zMipiICsgdW4xIC0gcTEqdgorICAgICAqCisgICAgICogIEJ5ICg1KSB3ZSBhcmUgY2VydGFpbiB0aGF0IHRoZSBwb3NzaWJsZSBhZGQtYmFjayBzdGVwIGZyb20KKyAgICAgKiAgS251dGgncyBhbGdvcml0aG0gRCBpcyBuZXZlciByZXF1aXJlZC4KKyAgICAgKgorICAgICAqICBTaW5jZSB0aGUgZmluYWwgcXVvdGllbnQgaXMgbGVzcyB0aGFuIDIqKjMyLCB0aGUgZm9sbG93aW5nCisgICAgICogIG11c3QgYmUgdHJ1ZToKKyAgICAgKgorICAgICAqICAgICAgKDYpIHVuMzIqYiArIHVuMSAtIHExKnYgPD0gVUlOVDMyX01BWAorICAgICAqCisgICAgICogIFRoaXMgbWVhbnMgdGhhdCBpbiB0aGUgZm9sbG93aW5nIGxpbmUsIHRoZSBoaWdoIHdvcmRzCisgICAgICogIG9mIHVuMzIqYiBhbmQgcTEqdiBjYW4gYmUgZGlzY2FyZGVkIHdpdGhvdXQgYW55IGVmZmVjdAorICAgICAqICBvbiB0aGUgcmVzdWx0LgorICAgICAqLworICAgIHVuMjEgPSB1bjMyKmIgKyB1bjEgLSBxMSp2OworCisgICAgcTAgPSB1bjIxIC8gdm4xOworICAgIHJoYXQgPSB1bjIxIC0gcTAqdm4xOworYWdhaW4yOgorICAgIGlmIChxMCA+PSBiIHx8IHEwKnZuMCA+IGIqcmhhdCArIHVuMCkgeworICAgICAgICBxMCA9IHEwIC0gMTsKKyAgICAgICAgcmhhdCA9IHJoYXQgKyB2bjE7CisgICAgICAgIGlmIChyaGF0IDwgYikgZ290byBhZ2FpbjI7CisgICAgfQorCisgICAgKnEgPSBxMSpiICsgcTA7CisgICAgKnIgPSAodW4yMSpiICsgdW4wIC0gcTAqdikgPj4gczsKK30KKyNlbmRpZiAvKiBFTkQgQU5TSSArIExFR0FDWV9DT01QSUxFUiAqLworCisvKiBFTkQgQU5TSSAqLworI2VsaWYgZGVmaW5lZChBU00pCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfbXVsX3dvcmRzKG1wZF91aW50X3QgKmhpLCBtcGRfdWludF90ICpsbywgbXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIpCit7CisgICAgbXBkX3VpbnRfdCBoLCBsOworCisgICAgX19hc21fXyAoICJtdWxsICUzXG5cdCIKKyAgICAgICAgICAgICAgOiAiPWQiIChoKSwgIj1hIiAobCkKKyAgICAgICAgICAgICAgOiAiJWEiIChhKSwgInJtIiAoYikKKyAgICAgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpoaSA9IGg7CisgICAgKmxvID0gbDsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitfbXBkX2Rpdl93b3JkcyhtcGRfdWludF90ICpxLCBtcGRfdWludF90ICpyLCBtcGRfdWludF90IGhpLCBtcGRfdWludF90IGxvLAorICAgICAgICAgICAgICAgbXBkX3VpbnRfdCBkKQoreworICAgIG1wZF91aW50X3QgcXEsIHJyOworCisgICAgX19hc21fXyAoICJkaXZsICU0XG5cdCIKKyAgICAgICAgICAgICAgOiAiPWEiIChxcSksICI9ZCIgKHJyKQorICAgICAgICAgICAgICA6ICJhIiAobG8pLCAiZCIgKGhpKSwgInJtIiAoZCkKKyAgICAgICAgICAgICAgOiAiY2MiCisgICAgKTsKKworICAgICpxID0gcXE7CisgICAgKnIgPSBycjsKK30KKy8qIEVORCBHQ0MgQVNNICovCisjZWxpZiBkZWZpbmVkKE1BU00pCitzdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbAorX21wZF9tdWxfd29yZHMobXBkX3VpbnRfdCAqaGksIG1wZF91aW50X3QgKmxvLCBtcGRfdWludF90IGEsIG1wZF91aW50X3QgYikKK3sKKyAgICBtcGRfdWludF90IGgsIGw7CisKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiBlYXgsIGEKKyAgICAgICAgbXVsIGIKKyAgICAgICAgbW92IGgsIGVkeAorICAgICAgICBtb3YgbCwgZWF4CisgICAgfQorCisgICAgKmhpID0gaDsKKyAgICAqbG8gPSBsOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbAorX21wZF9kaXZfd29yZHMobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywKKyAgICAgICAgICAgICAgIG1wZF91aW50X3QgZCkKK3sKKyAgICBtcGRfdWludF90IHFxLCBycjsKKworICAgIF9fYXNtIHsKKyAgICAgICAgbW92IGVheCwgbG8KKyAgICAgICAgbW92IGVkeCwgaGkKKyAgICAgICAgZGl2IGQKKyAgICAgICAgbW92IHFxLCBlYXgKKyAgICAgICAgbW92IHJyLCBlZHgKKyAgICB9CisKKyAgICAqcSA9IHFxOworICAgICpyID0gcnI7Cit9CisvKiBFTkQgTUFTTSAoX01TQ19WRVIpICovCisjZWxzZQorICAjZXJyb3IgIm5lZWQgcGxhdGZvcm0gc3BlY2lmaWMgNjQgYml0IG11bHRpcGxpY2F0aW9uIGFuZCBkaXZpc2lvbiIKKyNlbmRpZgorCisjZGVmaW5lIERJVk1PRChxLCByLCB2LCBkKSAqcSA9IHYgLyBkOyAqciA9IHYgLSAqcSAqIGQKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9kaXZtb2RfcG93MTAobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGV4cCkKK3sKKyAgICBhc3NlcnQoZXhwIDw9IDkpOworCisgICAgaWYgKGV4cCA8PSA0KSB7CisgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgIGNhc2UgMDogKnEgPSB2OyAqciA9IDA7IGJyZWFrOworICAgICAgICBjYXNlIDE6IERJVk1PRChxLCByLCB2LCAxMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgMjogRElWTU9EKHEsIHIsIHYsIDEwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgMzogRElWTU9EKHEsIHIsIHYsIDEwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDQ6IERJVk1PRChxLCByLCB2LCAxMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoZXhwKSB7CisgICAgICAgIGNhc2UgNTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNjogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDBVTCk7IGJyZWFrOworICAgICAgICBjYXNlIDc6IERJVk1PRChxLCByLCB2LCAxMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgODogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMFVMKTsgYnJlYWs7CisgICAgICAgIGNhc2UgOTogRElWTU9EKHEsIHIsIHYsIDEwMDAwMDAwMDBVTCk7IGJyZWFrOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgICAgIH0KKyAgICB9Cit9CisvKiBFTkQgQ09ORklHXzMyICovCisKKy8qIE5PIENPTkZJRyAqLworI2Vsc2UKKyAgI2Vycm9yICJkZWZpbmUgQ09ORklHXzY0IG9yIENPTkZJR18zMiIKKyNlbmRpZiAvKiBDT05GSUcgKi8KKworCitzdGF0aWMgaW5saW5lIHZvaWQKK19tcGRfZGl2X3dvcmQobXBkX3VpbnRfdCAqcSwgbXBkX3VpbnRfdCAqciwgbXBkX3VpbnRfdCB2LCBtcGRfdWludF90IGQpCit7CisgICAgKnEgPSB2IC8gZDsKKyAgICAqciA9IHYgLSAqcSAqIGQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorX21wZF9pZGl2X3dvcmQobXBkX3NzaXplX3QgKnEsIG1wZF9zc2l6ZV90ICpyLCBtcGRfc3NpemVfdCB2LCBtcGRfc3NpemVfdCBkKQoreworICAgICpxID0gdiAvIGQ7CisgICAgKnIgPSB2IC0gKnEgKiBkOworfQorCisKKy8qKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqKiAgICAgICAgICAgICAgQXJpdGhtZXRpYyB3aXRoIG92ZXJmbG93IGNoZWNraW5nCisgKiogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogVGhlIGZvbGxvd2luZyBtYWNyb3MgZG8gY2FsbCBleGl0KCkgaW4gY2FzZSBvZiBhbiBvdmVyZmxvdy4KKyAgIElmIHRoZSBsaWJyYXJ5IGlzIHVzZWQgY29ycmVjdGx5IChpLmUuIHdpdGggdmFsaWQgY29udGV4dAorICAgcGFyYW1ldGVycyksIHN1Y2ggb3ZlcmZsb3dzIGNhbm5vdCBvY2N1ci4gVGhlIG1hY3JvcyBhcmUgdXNlZAorICAgYXMgc2FuaXR5IGNoZWNrcyBpbiBhIGNvdXBsZSBvZiBzdHJhdGVnaWMgcGxhY2VzIGFuZCBzaG91bGQKKyAgIGJlIHZpZXdlZCBhcyBhIGhhbmR3cml0dGVuIHZlcnNpb24gb2YgZ2NjJ3MgLWZ0cmFwdiBvcHRpb24uICovCisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorYWRkX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYikKK3sKKyAgICBpZiAoYSA+IE1QRF9TSVpFX01BWCAtIGIpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgiYWRkX3NpemVfdCgpOiBvdmVyZmxvdzogY2hlY2sgdGhlIGNvbnRleHQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICByZXR1cm4gYSArIGI7Cit9CisKK3N0YXRpYyBpbmxpbmUgbXBkX3NpemVfdAorc3ViX3NpemVfdChtcGRfc2l6ZV90IGEsIG1wZF9zaXplX3QgYikKK3sKKyAgICBpZiAoYiA+IGEpIHsKKyAgICAgICAgbXBkX2Vycl9mYXRhbCgic3ViX3NpemVfdCgpOiBvdmVyZmxvdzogY2hlY2sgdGhlIGNvbnRleHQiKTsgLyogR0NPVl9OT1RfUkVBQ0hFRCAqLworICAgIH0KKyAgICByZXR1cm4gYSAtIGI7Cit9CisKKyNpZiBNUERfU0laRV9NQVggIT0gTVBEX1VJTlRfTUFYCisgICNlcnJvciAiYWRhcHQgbXVsX3NpemVfdCgpIGFuZCBtdWxtb2Rfc2l6ZV90KCkiCisjZW5kaWYKKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CittdWxfc2l6ZV90KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiKQoreworICAgIG1wZF91aW50X3QgaGksIGxvOworCisgICAgX21wZF9tdWxfd29yZHMoJmhpLCAmbG8sIChtcGRfdWludF90KWEsIChtcGRfdWludF90KWIpOworICAgIGlmIChoaSkgeworICAgICAgICBtcGRfZXJyX2ZhdGFsKCJtdWxfc2l6ZV90KCk6IG92ZXJmbG93OiBjaGVjayB0aGUgY29udGV4dCIpOyAvKiBHQ09WX05PVF9SRUFDSEVEICovCisgICAgfQorICAgIHJldHVybiBsbzsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CithZGRfc2l6ZV90X292ZXJmbG93KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiLCBtcGRfc2l6ZV90ICpvdmVyZmxvdykKK3sKKyAgICBtcGRfc2l6ZV90IHJldDsKKworICAgICpvdmVyZmxvdyA9IDA7CisgICAgcmV0ID0gYSArIGI7CisgICAgaWYgKHJldCA8IGEpICpvdmVyZmxvdyA9IDE7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGlubGluZSBtcGRfc2l6ZV90CittdWxfc2l6ZV90X292ZXJmbG93KG1wZF9zaXplX3QgYSwgbXBkX3NpemVfdCBiLCBtcGRfc2l6ZV90ICpvdmVyZmxvdykKK3sKKyAgICBtcGRfdWludF90IGxvOworCisgICAgX21wZF9tdWxfd29yZHMoKG1wZF91aW50X3QgKilvdmVyZmxvdywgJmxvLCAobXBkX3VpbnRfdClhLAorICAgICAgICAgICAgICAgICAgIChtcGRfdWludF90KWIpOworICAgIHJldHVybiBsbzsKK30KKworc3RhdGljIGlubGluZSBtcGRfc3NpemVfdAorbW9kX21wZF9zc2l6ZV90KG1wZF9zc2l6ZV90IGEsIG1wZF9zc2l6ZV90IG0pCit7CisgICAgbXBkX3NzaXplX3QgciA9IGEgJSBtOworICAgIHJldHVybiAociA8IDApID8gciArIG0gOiByOworfQorCitzdGF0aWMgaW5saW5lIG1wZF9zaXplX3QKK211bG1vZF9zaXplX3QobXBkX3NpemVfdCBhLCBtcGRfc2l6ZV90IGIsIG1wZF9zaXplX3QgbSkKK3sKKyAgICBtcGRfdWludF90IGhpLCBsbzsKKyAgICBtcGRfdWludF90IHEsIHI7CisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgKG1wZF91aW50X3QpYSwgKG1wZF91aW50X3QpYik7CisgICAgX21wZF9kaXZfd29yZHMoJnEsICZyLCBoaSwgbG8sIChtcGRfdWludF90KW0pOworCisgICAgcmV0dXJuIHI7Cit9CisKKworI2VuZGlmIC8qIFRZUEVBUklUSF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3Vtb2Rhcml0aC5oIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy91bW9kYXJpdGguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmFlY2ViCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy91bW9kYXJpdGguaApAQCAtMCwwICsxLDY1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBVTU9EQVJJVEhfSAorI2RlZmluZSBVTU9EQVJJVEhfSAorCisKKyNpbmNsdWRlICJjb25zdGFudHMuaCIKKyNpbmNsdWRlICJtcGRlY2ltYWwuaCIKKyNpbmNsdWRlICJ0eXBlYXJpdGguaCIKKworCisvKiBCaWdudW06IExvdyBsZXZlbCByb3V0aW5lcyBmb3IgdW5zaWduZWQgbW9kdWxhciBhcml0aG1ldGljLiBUaGVzZSBhcmUKKyAgIHVzZWQgaW4gdGhlIGZhc3QgY29udm9sdXRpb24gZnVuY3Rpb25zIGZvciB2ZXJ5IGxhcmdlIGNvZWZmaWNpZW50cy4gKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIEFOU0kgbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoKKyAqIFJlc3RyaWN0aW9uczogYSA8IG0gYW5kIGIgPCBtCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogYWRkbW9kLWNvcnJlY3QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CithZGRtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IHM7CisKKyAgICBzID0gYSArIGI7CisgICAgcyA9IChzIDwgYSkgPyBzIC0gbSA6IHM7CisgICAgcyA9IChzID49IG0pID8gcyAtIG0gOiBzOworCisgICAgcmV0dXJuIHM7Cit9CisKKy8qCisgKiBSZXN0cmljdGlvbnM6IGEgPCBtIGFuZCBiIDwgbQorICogQUNMMiBwcm9vZjogdW1vZGFyaXRoLmxpc3A6IHN1Ym1vZC0yLWNvcnJlY3QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdWJtb2QobXBkX3VpbnRfdCBhLCBtcGRfdWludF90IGIsIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGQ7CisKKyAgICBkID0gYSAtIGI7CisgICAgZCA9IChhIDwgYikgPyBkICsgbSA6IGQ7CisKKyAgICByZXR1cm4gZDsKK30KKworLyoKKyAqIFJlc3RyaWN0aW9uczogYSA8IDJtIGFuZCBiIDwgMm0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uIGV4dC1zdWJtb2QKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitleHRfc3VibW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgbXBkX3VpbnRfdCBkOworCisgICAgYSA9IChhID49IG0pID8gYSAtIG0gOiBhOworICAgIGIgPSAoYiA+PSBtKSA/IGIgLSBtIDogYjsKKworICAgIGQgPSBhIC0gYjsKKyAgICBkID0gKGEgPCBiKSA/IGQgKyBtIDogZDsKKworICAgIHJldHVybiBkOworfQorCisvKiAKKyAqIFJlZHVjZSBkb3VibGUgd29yZCBtb2R1bG8gbS4KKyAqIFJlc3RyaWN0aW9uczogbSAhPSAwCisgKiBBQ0wyIHByb29mOiB1bW9kYXJpdGgubGlzcDogc2VjdGlvbiBkdy1yZWR1Y2UKKyAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90Citkd19yZWR1Y2UobXBkX3VpbnRfdCBoaSwgbXBkX3VpbnRfdCBsbywgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgcjEsIHIyLCB3OworCisgICAgX21wZF9kaXZfd29yZCgmdywgJnIxLCBoaSwgbSk7CisgICAgX21wZF9kaXZfd29yZHMoJncsICZyMiwgcjEsIGxvLCBtKTsKKworICAgIHJldHVybiByMjsKK30KKworLyoKKyAqIFN1YnRyYWN0IGRvdWJsZSB3b3JkIGZyb20gYS4KKyAqIFJlc3RyaWN0aW9uczogYSA8IG0KKyAqIEFDTDIgcHJvb2Y6IHVtb2Rhcml0aC5saXNwOiBzZWN0aW9uIGR3LXN1Ym1vZAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK2R3X3N1Ym1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgaGksIG1wZF91aW50X3QgbG8sIG1wZF91aW50X3QgbSkKK3sKKyAgICBtcGRfdWludF90IGQsIHI7CisKKyAgICByID0gZHdfcmVkdWNlKGhpLCBsbywgbSk7CisgICAgZCA9IGEgLSByOworICAgIGQgPSAoYSA8IHIpID8gZCArIG0gOiBkOworCisgICAgcmV0dXJuIGQ7Cit9CisKKyNpZmRlZiBDT05GSUdfNjQKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICA2NC1iaXQgbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogQSBwcm9vZiBvZiB0aGUgYWxnb3JpdGhtIGlzIGluIGxpdGVyYXR1cmUvbXVsbW9kLTY0LnR4dC4gQW4gQUNMMgorICogcHJvb2YgaXMgaW4gdW1vZGFyaXRoLmxpc3A6IHNlY3Rpb24gIkZhc3QgbW9kdWxhciByZWR1Y3Rpb24iLgorICoKKyAqIEFsZ29yaXRobTogY2FsY3VsYXRlIChhICogYikgJSBwOgorICoKKyAqICAgYSkgaGksIGxvIDwtIGEgKiBiICAgICAgICMgQ2FsY3VsYXRlIGEgKiBiLgorICoKKyAqICAgYikgaGksIGxvIDwtICBSKGhpLCBsbykgICMgUmVkdWNlIG1vZHVsbyBwLgorICoKKyAqICAgYykgUmVwZWF0IHN0ZXAgYikgdW50aWwgMCA8PSBoaSAqIDIqKjY0ICsgbG8gPCAyKnAuCisgKgorICogICBkKSBJZiB0aGUgcmVzdWx0IGlzIGxlc3MgdGhhbiBwLCByZXR1cm4gbG8uIE90aGVyd2lzZSByZXR1cm4gbG8gLSBwLgorICovCisKK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAoreDY0X211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgaGksIGxvLCB4LCB5OworCisKKyAgICBfbXBkX211bF93b3JkcygmaGksICZsbywgYSwgYik7CisKKyAgICBpZiAobSAmICgxVUxMPDwzMikpIHsgLyogUDEgKi8KKworICAgICAgICAvKiBmaXJzdCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMyOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzI7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogc2Vjb25kIHJlZHVjdGlvbiAqLworICAgICAgICB4ID0geSA9IGhpOworICAgICAgICBoaSA+Pj0gMzI7CisKKyAgICAgICAgeCA9IGxvIC0geDsKKyAgICAgICAgaWYgKHggPiBsbykgaGktLTsKKworICAgICAgICB5IDw8PSAzMjsKKyAgICAgICAgbG8gPSB5ICsgeDsKKyAgICAgICAgaWYgKGxvIDwgeSkgaGkrKzsKKworICAgICAgICByZXR1cm4gKGhpIHx8IGxvID49IG0gPyBsbyAtIG0gOiBsbyk7CisgICAgfQorICAgIGVsc2UgaWYgKG0gJiAoMVVMTDw8MzQpKSB7IC8qIFAyICovCisKKyAgICAgICAgLyogZmlyc3QgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDM0OworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHNlY29uZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDMwOworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gMzQ7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogdGhpcmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAzMDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDM0OworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIHJldHVybiAoaGkgfHwgbG8gPj0gbSA/IGxvIC0gbSA6IGxvKTsKKyAgICB9CisgICAgZWxzZSB7IC8qIFAzICovCisKKyAgICAgICAgLyogZmlyc3QgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAyNDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDQwOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIC8qIHNlY29uZCByZWR1Y3Rpb24gKi8KKyAgICAgICAgeCA9IHkgPSBoaTsKKyAgICAgICAgaGkgPj49IDI0OworCisgICAgICAgIHggPSBsbyAtIHg7CisgICAgICAgIGlmICh4ID4gbG8pIGhpLS07CisKKyAgICAgICAgeSA8PD0gNDA7CisgICAgICAgIGxvID0geSArIHg7CisgICAgICAgIGlmIChsbyA8IHkpIGhpKys7CisKKyAgICAgICAgLyogdGhpcmQgcmVkdWN0aW9uICovCisgICAgICAgIHggPSB5ID0gaGk7CisgICAgICAgIGhpID4+PSAyNDsKKworICAgICAgICB4ID0gbG8gLSB4OworICAgICAgICBpZiAoeCA+IGxvKSBoaS0tOworCisgICAgICAgIHkgPDw9IDQwOworICAgICAgICBsbyA9IHkgKyB4OworICAgICAgICBpZiAobG8gPCB5KSBoaSsrOworCisgICAgICAgIHJldHVybiAoaGkgfHwgbG8gPj0gbSA/IGxvIC0gbSA6IGxvKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAoreDY0X211bG1vZDJjKG1wZF91aW50X3QgKmEsIG1wZF91aW50X3QgKmIsIG1wZF91aW50X3QgdywgbXBkX3VpbnRfdCBtKQoreworICAgICphID0geDY0X211bG1vZCgqYSwgdywgbSk7CisgICAgKmIgPSB4NjRfbXVsbW9kKCpiLCB3LCBtKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCit4NjRfbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICBtcGRfdWludF90IG0pCit7CisgICAgKmEwID0geDY0X211bG1vZCgqYTAsIGIwLCBtKTsKKyAgICAqYTEgPSB4NjRfbXVsbW9kKCphMSwgYjEsIG0pOworfQorCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3g2NF9wb3dtb2QobXBkX3VpbnRfdCBiYXNlLCBtcGRfdWludF90IGV4cCwgbXBkX3VpbnRfdCB1bW9kKQoreworICAgIG1wZF91aW50X3QgciA9IDE7CisKKyAgICB3aGlsZSAoZXhwID4gMCkgeworICAgICAgICBpZiAoZXhwICYgMSkKKyAgICAgICAgICAgIHIgPSB4NjRfbXVsbW9kKHIsIGJhc2UsIHVtb2QpOworICAgICAgICBiYXNlID0geDY0X211bG1vZChiYXNlLCBiYXNlLCB1bW9kKTsKKyAgICAgICAgZXhwID4+PSAxOworICAgIH0KKworICAgIHJldHVybiByOworfQorCisvKiBFTkQgQ09ORklHXzY0ICovCisjZWxzZSAvKiBDT05GSUdfMzIgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgIDMyLWJpdCBtb2R1bGFyIGFyaXRobWV0aWMgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZiBkZWZpbmVkKEFOU0kpCisjaWYgIWRlZmluZWQoTEVHQUNZX0NPTVBJTEVSKQorLyogSEFWRV9VSU5UNjRfVCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitzdGRfbXVsbW9kKG1wZF91aW50X3QgYSwgbXBkX3VpbnRfdCBiLCBtcGRfdWludF90IG0pCit7CisgICAgcmV0dXJuICgobXBkX3V1aW50X3QpIGEgKiBiKSAlIG07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX211bG1vZDJjKG1wZF91aW50X3QgKmEsIG1wZF91aW50X3QgKmIsIG1wZF91aW50X3QgdywgbXBkX3VpbnRfdCBtKQoreworICAgICphID0gKChtcGRfdXVpbnRfdCkgKmEgKiB3KSAlIG07CisgICAgKmIgPSAoKG1wZF91dWludF90KSAqYiAqIHcpICUgbTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICBtcGRfdWludF90IG0pCit7CisgICAgKmEwID0gKChtcGRfdXVpbnRfdCkgKmEwICogYjApICUgbTsKKyAgICAqYTEgPSAoKG1wZF91dWludF90KSAqYTEgKiBiMSkgJSBtOworfQorLyogRU5EIEhBVkVfVUlOVDY0X1QgKi8KKyNlbHNlCisvKiBMRUdBQ1lfQ09NUElMRVIgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3RkX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgbXBkX3VpbnRfdCBtKQoreworICAgIG1wZF91aW50X3QgaGksIGxvLCBxLCByOworICAgIF9tcGRfbXVsX3dvcmRzKCZoaSwgJmxvLCBhLCBiKTsKKyAgICBfbXBkX2Rpdl93b3JkcygmcSwgJnIsIGhpLCBsbywgbSk7CisgICAgcmV0dXJuIHI7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorc3RkX211bG1vZDJjKG1wZF91aW50X3QgKmEsIG1wZF91aW50X3QgKmIsIG1wZF91aW50X3QgdywgbXBkX3VpbnRfdCBtKQoreworICAgICphID0gc3RkX211bG1vZCgqYSwgdywgbSk7CisgICAgKmIgPSBzdGRfbXVsbW9kKCpiLCB3LCBtKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkCitzdGRfbXVsbW9kMihtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCBiMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgYjEsCisgICAgICAgICAgICBtcGRfdWludF90IG0pCit7CisgICAgKmEwID0gc3RkX211bG1vZCgqYTAsIGIwLCBtKTsKKyAgICAqYTEgPSBzdGRfbXVsbW9kKCphMSwgYjEsIG0pOworfQorLyogRU5EIExFR0FDWV9DT01QSUxFUiAqLworI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdAorc3RkX3Bvd21vZChtcGRfdWludF90IGJhc2UsIG1wZF91aW50X3QgZXhwLCBtcGRfdWludF90IHVtb2QpCit7CisgICAgbXBkX3VpbnRfdCByID0gMTsKKworICAgIHdoaWxlIChleHAgPiAwKSB7CisgICAgICAgIGlmIChleHAgJiAxKQorICAgICAgICAgICAgciA9IHN0ZF9tdWxtb2QociwgYmFzZSwgdW1vZCk7CisgICAgICAgIGJhc2UgPSBzdGRfbXVsbW9kKGJhc2UsIGJhc2UsIHVtb2QpOworICAgICAgICBleHAgPj49IDE7CisgICAgfQorCisgICAgcmV0dXJuIHI7Cit9CisjZW5kaWYgLyogQU5TSSBDT05GSUdfMzIgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgUGVudGl1bSBQcm8gbW9kdWxhciBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBBIHByb29mIG9mIHRoZSBhbGdvcml0aG0gaXMgaW4gbGl0ZXJhdHVyZS9tdWxtb2QtcHByby50eHQuIFRoZSBGUFUKKyAqIGNvbnRyb2wgd29yZCBtdXN0IGJlIHNldCB0byA2NC1iaXQgcHJlY2lzaW9uIGFuZCB0cnVuY2F0aW9uIG1vZGUKKyAqIHByaW9yIHRvIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucy4KKyAqCisgKiBBbGdvcml0aG06IGNhbGN1bGF0ZSAoYSAqIGIpICUgcDoKKyAqCisgKiAgIHAgICAgOj0gcHJpbWUgPCAyKiozMQorICogICBwaW52IDo9IChsb25nIGRvdWJsZSkxLjAgLyBwIChwcmVjYWxjdWxhdGVkKQorICoKKyAqICAgYSkgbiA9IGEgKiBiICAgICAgICAgICAgICAjIENhbGN1bGF0ZSBleGFjdCBwcm9kdWN0LgorICogICBiKSBxZXN0ID0gbiAqIHBpbnYgICAgICAgICMgQ2FsY3VsYXRlIGVzdGltYXRlIGZvciBxID0gbiAvIHAuCisgKiAgIGMpIHEgPSAocWVzdCsyKio2MyktMioqNjMgIyBUcnVuY2F0ZSBxZXN0IHRvIHRoZSBleGFjdCBxdW90aWVudC4KKyAqICAgZCkgciA9IG4gLSBxICogcCAgICAgICAgICAjIENhbGN1bGF0ZSByZW1haW5kZXIuCisgKgorICogUmVtYXJrczoKKyAqCisgKiAgIC0gcCA9IGRtb2QgYW5kIHBpbnYgPSBkaW52bW9kLgorICogICAtIGRpbnZtb2QgcG9pbnRzIHRvIGFuIGFycmF5IG9mIHRocmVlIHVpbnQzMl90LCB3aGljaCBpcyBpbnRlcnByZXRlZAorICogICAgIGFzIGFuIDgwIGJpdCBsb25nIGRvdWJsZSBieSBmbGR0LgorICogICAtIEludGVsIGNvbXBpbGVycyBwcmlvciB0byB2ZXJzaW9uIDExIGRvIG5vdCBzZWVtIHRvIGhhbmRsZSB0aGUKKyAqICAgICBfX0dOVUNfXyBpbmxpbmUgYXNzZW1ibHkgY29ycmVjdGx5LgorICogICAtIHJhbmRvbSB0ZXN0cyBhcmUgcHJvdmlkZWQgaW4gdGVzdHMvZXh0ZW5kZWQvcHByb19tdWxtb2QuYworICovCisKKyNpZiBkZWZpbmVkKFBQUk8pCisjaWYgZGVmaW5lZChBU00pCisKKy8qIFJldHVybiAoYSAqIGIpICUgZG1vZCAqLworc3RhdGljIGlubGluZSBtcGRfdWludF90CitwcHJvX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBtcGRfdWludF90IHJldHZhbDsKKworICAgIF9fYXNtX18gKAorICAgICAgICAgICAgImZpbGRsICAlMlxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICUxXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmxkdCAgICglNClcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmbGRzICAgJTVcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmxkbCAgICglMylcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZmlzdHBsICUwXG5cdCIKKyAgICAgICAgICAgIDogIj1tIiAocmV0dmFsKQorICAgICAgICAgICAgOiAibSIgKGEpLCAibSIgKGIpLCAiciIgKGRtb2QpLCAiciIgKGRpbnZtb2QpLCAibSIgKE1QRF9UV082MykKKyAgICAgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworCisgICAgcmV0dXJuIHJldHZhbDsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIHcpICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogdykgJSBkbW9kCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorcHByb19tdWxtb2QyYyhtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgdywKKyAgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbV9fICgKKyAgICAgICAgICAgICJmaWxkbCAgJTJcblx0IgorICAgICAgICAgICAgImZpbGRsICAoJTEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpbGRsICAoJTApXG5cdCIKKyAgICAgICAgICAgICJmbXVscCAgJSVzdCwgJSVzdCgxKSBcblx0IgorICAgICAgICAgICAgImZsZHQgICAoJTQpXG5cdCIKKyAgICAgICAgICAgICJmbGRzICAgJTVcblx0IgorICAgICAgICAgICAgImZsZCAgICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmbXVsICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZmFkZCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZzdWIgICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbXVsbCAgKCUzKVxuXHQiCisgICAgICAgICAgICAiZnN1YnJwICUlc3QsICUlc3QoMylcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgKCUwKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmc3VicCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bGwgICglMylcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgKCUxKVxuXHQiCisgICAgICAgICAgICA6IDogInIiIChhMCksICJyIiAoYTEpLCAibSIgKHcpLAorICAgICAgICAgICAgICAgICJyIiAoZG1vZCksICJyIiAoZGludm1vZCksCisgICAgICAgICAgICAgICAgIm0iIChNUERfVFdPNjMpCisgICAgICAgICAgICA6ICJzdCIsICJtZW1vcnkiCisgICAgKTsKK30KKworLyoKKyAqIFR3byBtb2R1bGFyIG11bHRpcGxpY2F0aW9ucyBpbiBwYXJhbGxlbDoKKyAqICAgICAgKmEwID0gKCphMCAqIGIwKSAlIGRtb2QKKyAqICAgICAgKmExID0gKCphMSAqIGIxKSAlIGRtb2QKKyAqLworc3RhdGljIGlubGluZSB2b2lkCitwcHJvX211bG1vZDIobXBkX3VpbnRfdCAqYTAsIG1wZF91aW50X3QgYjAsIG1wZF91aW50X3QgKmExLCBtcGRfdWludF90IGIxLAorICAgICAgICAgICAgIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgX19hc21fXyAoCisgICAgICAgICAgICAiZmlsZGwgICUzXG5cdCIKKyAgICAgICAgICAgICJmaWxkbCAgKCUyKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpbGRsICAlMVxuXHQiCisgICAgICAgICAgICAiZmlsZGwgICglMClcblx0IgorICAgICAgICAgICAgImZtdWxwICAlJXN0LCAlJXN0KDEpXG5cdCIKKyAgICAgICAgICAgICJmbGR0ICAgKCU1KVxuXHQiCisgICAgICAgICAgICAiZmxkICAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bCAgICUlc3QoMiksICUlc3Rcblx0IgorICAgICAgICAgICAgImZsZHMgICAlNlxuXHQiCisgICAgICAgICAgICAiZmxkbCAgICglNClcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDMpXG5cdCIKKyAgICAgICAgICAgICJmYWRkICAgJSVzdCgxKSwgJSVzdFxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZhZGQgICAlJXN0KDEpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgyKVxuXHQiCisgICAgICAgICAgICAiZnN1YiAgICUlc3QoMSksICUlc3Rcblx0IgorICAgICAgICAgICAgImZ4Y2ggICAlJXN0KDIpXG5cdCIKKyAgICAgICAgICAgICJmc3VicCAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZtdWwgICAlJXN0KDIpLCAlJXN0XG5cdCIKKyAgICAgICAgICAgICJmeGNoICAgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZm11bHAgICUlc3QsICUlc3QoMilcblx0IgorICAgICAgICAgICAgImZzdWJycCAlJXN0LCAlJXN0KDMpXG5cdCIKKyAgICAgICAgICAgICJmc3VicnAgJSVzdCwgJSVzdCgxKVxuXHQiCisgICAgICAgICAgICAiZnhjaCAgICUlc3QoMSlcblx0IgorICAgICAgICAgICAgImZpc3RwbCAoJTIpXG5cdCIKKyAgICAgICAgICAgICJmaXN0cGwgKCUwKVxuXHQiCisgICAgICAgICAgICA6IDogInIiIChhMCksICJtIiAoYjApLCAiciIgKGExKSwgIm0iIChiMSksCisgICAgICAgICAgICAgICAgInIiIChkbW9kKSwgInIiIChkaW52bW9kKSwKKyAgICAgICAgICAgICAgICAibSIgKE1QRF9UV082MykKKyAgICAgICAgICAgIDogInN0IiwgIm1lbW9yeSIKKyAgICApOworfQorLyogRU5EIFBQUk8gR0NDIEFTTSAqLworI2VsaWYgZGVmaW5lZChNQVNNKQorCisvKiBSZXR1cm4gKGEgKiBiKSAlIGRtb2QgKi8KK3N0YXRpYyBpbmxpbmUgbXBkX3VpbnRfdCBfX2NkZWNsCitwcHJvX211bG1vZChtcGRfdWludF90IGEsIG1wZF91aW50X3QgYiwgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBtcGRfdWludF90IHJldHZhbDsKKworICAgIF9fYXNtIHsKKyAgICAgICAgbW92ICAgICBlYXgsIGRpbnZtb2QKKyAgICAgICAgbW92ICAgICBlZHgsIGRtb2QKKyAgICAgICAgZmlsZCAgICBiCisgICAgICAgIGZpbGQgICAgYQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFRCWVRFIFBUUiBbZWF4XQorICAgICAgICBmbXVsICAgIHN0LCBzdCgxKQorICAgICAgICBmbGQgICAgIE1QRF9UV082MworICAgICAgICBmYWRkICAgIHN0KDEpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmbGQgICAgIFFXT1JEIFBUUiBbZWR4XQorICAgICAgICBmbXVscCAgIHN0KDEpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmaXN0cCAgIHJldHZhbAorICAgIH0KKworICAgIHJldHVybiByZXR2YWw7Cit9CisKKy8qCisgKiBUd28gbW9kdWxhciBtdWx0aXBsaWNhdGlvbnMgaW4gcGFyYWxsZWw6CisgKiAgICAgICphMCA9ICgqYTAgKiB3KSAlIGRtb2QKKyAqICAgICAgKmExID0gKCphMSAqIHcpICUgZG1vZAorICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QgX19jZGVjbAorcHByb19tdWxtb2QyYyhtcGRfdWludF90ICphMCwgbXBkX3VpbnRfdCAqYTEsIG1wZF91aW50X3QgdywKKyAgICAgICAgICAgICAgZG91YmxlICpkbW9kLCB1aW50MzJfdCAqZGludm1vZCkKK3sKKyAgICBfX2FzbSB7CisgICAgICAgIG1vdiAgICAgZWN4LCBkbW9kCisgICAgICAgIG1vdiAgICAgZWR4LCBhMQorICAgICAgICBtb3YgICAgIGVieCwgZGludm1vZAorICAgICAgICBtb3YgICAgIGVheCwgYTAKKyAgICAgICAgZmlsZCAgICB3CisgICAgICAgIGZpbGQgICAgRFdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VheF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmxkICAgICBUQllURSBQVFIgW2VieF0KKyAgICAgICAgZmxkICAgICBNUERfVFdPNjMKKyAgICAgICAgZmxkICAgICBzdCgyKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgyKQorICAgICAgICBmYWRkICAgIHN0LCBzdCgxKQorICAgICAgICBmc3ViICAgIHN0LCBzdCgxKQorICAgICAgICBmbXVsICAgIFFXT1JEIFBUUiBbZWN4XQorICAgICAgICBmc3VicCAgIHN0KDMpLCBzdAorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlYXhdCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZzdWJycCAgc3QoMSksIHN0CisgICAgICAgIGZtdWwgICAgUVdPUkQgUFRSIFtlY3hdCisgICAgICAgIGZzdWJwICAgc3QoMSksIHN0CisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlZHhdCisgICAgfQorfQorCisvKgorICogVHdvIG1vZHVsYXIgbXVsdGlwbGljYXRpb25zIGluIHBhcmFsbGVsOgorICogICAgICAqYTAgPSAoKmEwICogYjApICUgZG1vZAorICogICAgICAqYTEgPSAoKmExICogYjEpICUgZG1vZAorICovCitzdGF0aWMgaW5saW5lIHZvaWQgX19jZGVjbAorcHByb19tdWxtb2QyKG1wZF91aW50X3QgKmEwLCBtcGRfdWludF90IGIwLCBtcGRfdWludF90ICphMSwgbXBkX3VpbnRfdCBiMSwKKyAgICAgICAgICAgICBkb3VibGUgKmRtb2QsIHVpbnQzMl90ICpkaW52bW9kKQoreworICAgIF9fYXNtIHsKKyAgICAgICAgbW92ICAgICBlY3gsIGRtb2QKKyAgICAgICAgbW92ICAgICBlZHgsIGExCisgICAgICAgIG1vdiAgICAgZWJ4LCBkaW52bW9kCisgICAgICAgIG1vdiAgICAgZWF4LCBhMAorICAgICAgICBmaWxkICAgIGIxCisgICAgICAgIGZpbGQgICAgRFdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZtdWxwICAgc3QoMSksIHN0CisgICAgICAgIGZpbGQgICAgYjAKKyAgICAgICAgZmlsZCAgICBEV09SRCBQVFIgW2VheF0KKyAgICAgICAgZm11bHAgICBzdCgxKSwgc3QKKyAgICAgICAgZmxkICAgICBUQllURSBQVFIgW2VieF0KKyAgICAgICAgZmxkICAgICBzdCgyKQorICAgICAgICBmbXVsICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZtdWwgICAgc3QsIHN0KDIpCisgICAgICAgIGZsZCAgICAgRFdPUkQgUFRSIE1QRF9UV082MworICAgICAgICBmbGQgICAgIFFXT1JEIFBUUiBbZWN4XQorICAgICAgICBmeGNoICAgIHN0KDMpCisgICAgICAgIGZhZGQgICAgc3QsIHN0KDEpCisgICAgICAgIGZ4Y2ggICAgc3QoMikKKyAgICAgICAgZmFkZCAgICBzdCwgc3QoMSkKKyAgICAgICAgZnhjaCAgICBzdCgyKQorICAgICAgICBmc3ViICAgIHN0LCBzdCgxKQorICAgICAgICBmeGNoICAgIHN0KDIpCisgICAgICAgIGZzdWJycCAgc3QoMSksIHN0CisgICAgICAgIGZ4Y2ggICAgc3QoMSkKKyAgICAgICAgZm11bCAgICBzdCwgc3QoMikKKyAgICAgICAgZnhjaCAgICBzdCgxKQorICAgICAgICBmbXVscCAgIHN0KDIpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDMpLCBzdAorICAgICAgICBmc3VicCAgIHN0KDEpLCBzdAorICAgICAgICBmeGNoICAgIHN0KDEpCisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlZHhdCisgICAgICAgIGZpc3RwICAgRFdPUkQgUFRSIFtlYXhdCisgICAgfQorfQorI2VuZGlmIC8qIFBQUk8gTUFTTSAoX01TQ19WRVIpICovCisKKworLyogUmV0dXJuIChiYXNlICoqIGV4cCkgJSBkbW9kICovCitzdGF0aWMgaW5saW5lIG1wZF91aW50X3QKK3Bwcm9fcG93bW9kKG1wZF91aW50X3QgYmFzZSwgbXBkX3VpbnRfdCBleHAsIGRvdWJsZSAqZG1vZCwgdWludDMyX3QgKmRpbnZtb2QpCit7CisgICAgbXBkX3VpbnRfdCByID0gMTsKKworICAgIHdoaWxlIChleHAgPiAwKSB7CisgICAgICAgIGlmIChleHAgJiAxKQorICAgICAgICAgICAgciA9IHBwcm9fbXVsbW9kKHIsIGJhc2UsIGRtb2QsIGRpbnZtb2QpOworICAgICAgICBiYXNlID0gcHByb19tdWxtb2QoYmFzZSwgYmFzZSwgZG1vZCwgZGludm1vZCk7CisgICAgICAgIGV4cCA+Pj0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gcjsKK30KKyNlbmRpZiAvKiBQUFJPICovCisjZW5kaWYgLyogQ09ORklHXzMyICovCisKKworI2VuZGlmIC8qIFVNT0RBUklUSF9IICovCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmggYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjY29tcGF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc2ZTAzNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNjb21wYXQuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFZDQ09NUEFUX0gKKyNkZWZpbmUgVkNDT01QQVRfSAorCisKKy8qIFZpc3VhbCBDIGZpeGVzOiBubyBzdGRpbnQuaCwgbm8gc25wcmludGYgLi4uICovCisjaWZkZWYgX01TQ19WRVIKKyAgI2luY2x1ZGUgInZjc3RkaW50LmgiCisgICN1bmRlZiBpbmxpbmUKKyAgI2RlZmluZSBpbmxpbmUgX19pbmxpbmUKKyAgI3VuZGVmIHJhbmRvbQorICAjZGVmaW5lIHJhbmRvbSByYW5kCisgICN1bmRlZiBzcmFuZG9tCisgICNkZWZpbmUgc3JhbmRvbSBzcmFuZAorICAjdW5kZWYgc25wcmludGYKKyAgI2RlZmluZSBzbnByaW50ZiBzcHJpbnRmX3MKKyAgI2RlZmluZSBIQVZFX1NOUFJJTlRGCisgICN1bmRlZiBzdHJuY2FzZWNtcAorICAjZGVmaW5lIHN0cm5jYXNlY21wIF9zdHJuaWNtcAorICAjdW5kZWYgc3RyY2FzZWNtcAorICAjZGVmaW5lIHN0cmNhc2VjbXAgX3N0cmljbXAKKyAgI3VuZGVmIHN0cnRvbGwKKyAgI2RlZmluZSBzdHJ0b2xsIF9zdHJ0b2k2NAorICAjZGVmaW5lIHN0cmR1cCBfc3RyZHVwCisgICNkZWZpbmUgUFJJaTY0ICJJNjRpIgorICAjZGVmaW5lIFBSSXU2NCAiSTY0dSIKKyAgI2RlZmluZSBQUklpMzIgIkkzMmkiCisgICNkZWZpbmUgUFJJdTMyICJJMzJ1IgorI2VuZGlmCisKKworI2VuZGlmIC8qIFZDQ09NUEFUX0ggKi8KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNkaXY2NC5hc20gYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjZGl2NjQuYXNtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYmJhMDgKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjL3ZjZGl2NjQuYXNtCkBAIC0wLDAgKzEsNDggQEAKKzsKKzsgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCis7Cis7IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorOyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKzsgYXJlIG1ldDoKKzsKKzsgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKzsgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorOworOyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorOyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCis7ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCis7Cis7IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECis7IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorOyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorOyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorOyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorOyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworOyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKzsgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKzsgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorOyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCis7IFNVQ0ggREFNQUdFLgorOworCisKK1BVQkxJQyAgICBfbXBkX2Rpdl93b3JkcworX1RFWFQgICAgU0VHTUVOVAorcSQgPSA4CityJCA9IDE2CitoaSQgPSAyNAorbG8kID0gMzIKK2QkID0gNDAKK19tcGRfZGl2X3dvcmRzIFBST0MKKyAgICBtb3YgICAgcjEwLCByZHgKKyAgICBtb3YgICAgcmR4LCByOAorICAgIG1vdiAgICByYXgsIHI5CisgICAgZGl2ICAgIFFXT1JEIFBUUiBkJFtyc3BdCisgICAgbW92ICAgIFFXT1JEIFBUUiBbcjEwXSwgcmR4CisgICAgbW92ICAgIFFXT1JEIFBUUiBbcmN4XSwgcmF4CisgICAgcmV0ICAgIDAKK19tcGRfZGl2X3dvcmRzIEVORFAKK19URVhUICAgIEVORFMKK0VORAorCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNzdGRpbnQuaCBiL01vZHVsZXMvX2RlY2ltYWwvbGlibXBkZWMvdmNzdGRpbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDMyZmYxCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC9saWJtcGRlYy92Y3N0ZGludC5oCkBAIC0wLDAgKzEsMjMyIEBACisvLyBJU08gQzl4ICBjb21wbGlhbnQgc3RkaW50LmggZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCisvLyBCYXNlZCBvbiBJU08vSUVDIDk4OTk6VEMyIENvbW1pdHRlZSBkcmFmdCAoTWF5IDYsIDIwMDUpIFdHMTQvTjExMjQgCisvLyAKKy8vICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCBBbGV4YW5kZXIgQ2hlbWVyaXMKKy8vIAorLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vIAorLy8gICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisvLyAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAKKy8vICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8gCisvLyAgIDMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisvLyAgICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8gCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECisvLyBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgorLy8gTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8KKy8vIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOworLy8gT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAorLy8gV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKKy8vIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKKy8vIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorLy8gCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyNpZm5kZWYgX01TQ19WRVIgLy8gWworI2Vycm9yICJVc2UgdGhpcyBoZWFkZXIgb25seSB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysrIGNvbXBpbGVycyEiCisjZW5kaWYgLy8gX01TQ19WRVIgXQorCisjaWZuZGVmIF9NU0NfU1RESU5UX0hfIC8vIFsKKyNkZWZpbmUgX01TQ19TVERJTlRfSF8KKworI2lmIF9NU0NfVkVSID4gMTAwMAorI3ByYWdtYSBvbmNlCisjZW5kaWYKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCisvLyBGb3IgVmlzdWFsIFN0dWRpbyA2IGluIEMrKyBtb2RlIHdyYXAgPHdjaGFyLmg+IGluY2x1ZGUgd2l0aCAnZXh0ZXJuICJDKysiIHt9JworLy8gb3IgY29tcGlsZXIgZ2l2ZSBtYW55IGVycm9ycyBsaWtlIHRoaXM6CisvLyAgIGVycm9yIEMyNzMzOiBzZWNvbmQgQyBsaW5rYWdlIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ3dtZW1jaHInIG5vdCBhbGxvd2VkCisjaWYgKF9NU0NfVkVSIDwgMTMwMCkgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyAgIGV4dGVybiAiQysrIiB7CisjZW5kaWYgCisjICAgICBpbmNsdWRlIDx3Y2hhci5oPgorI2lmIChfTVNDX1ZFUiA8IDEzMDApICYmIGRlZmluZWQoX19jcGx1c3BsdXMpCisgICB9CisjZW5kaWYKKworLy8gRGVmaW5lIF9XNjQgbWFjcm9zIHRvIG1hcmsgdHlwZXMgY2hhbmdpbmcgdGhlaXIgc2l6ZSwgbGlrZSBpbnRwdHJfdC4KKyNpZm5kZWYgX1c2NAorIyAgaWYgIWRlZmluZWQoX19taWRsKSAmJiAoZGVmaW5lZChfWDg2XykgfHwgZGVmaW5lZChfTV9JWDg2KSkgJiYgX01TQ19WRVIgPj0gMTMwMAorIyAgICAgZGVmaW5lIF9XNjQgX193NjQKKyMgIGVsc2UKKyMgICAgIGRlZmluZSBfVzY0CisjICBlbmRpZgorI2VuZGlmCisKKworLy8gNy4xOC4xIEludGVnZXIgdHlwZXMKKworLy8gNy4xOC4xLjEgRXhhY3Qtd2lkdGggaW50ZWdlciB0eXBlcwordHlwZWRlZiBfX2ludDggICAgICAgICAgICBpbnQ4X3Q7Cit0eXBlZGVmIF9faW50MTYgICAgICAgICAgIGludDE2X3Q7Cit0eXBlZGVmIF9faW50MzIgICAgICAgICAgIGludDMyX3Q7Cit0eXBlZGVmIF9faW50NjQgICAgICAgICAgIGludDY0X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgIHVpbnQ4X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgIHVpbnQxNl90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1aW50MzJfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgdWludDY0X3Q7CisKKy8vIDcuMTguMS4yIE1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcwordHlwZWRlZiBpbnQ4X3QgICAgaW50X2xlYXN0OF90OwordHlwZWRlZiBpbnQxNl90ICAgaW50X2xlYXN0MTZfdDsKK3R5cGVkZWYgaW50MzJfdCAgIGludF9sZWFzdDMyX3Q7Cit0eXBlZGVmIGludDY0X3QgICBpbnRfbGVhc3Q2NF90OwordHlwZWRlZiB1aW50OF90ICAgdWludF9sZWFzdDhfdDsKK3R5cGVkZWYgdWludDE2X3QgIHVpbnRfbGVhc3QxNl90OwordHlwZWRlZiB1aW50MzJfdCAgdWludF9sZWFzdDMyX3Q7Cit0eXBlZGVmIHVpbnQ2NF90ICB1aW50X2xlYXN0NjRfdDsKKworLy8gNy4xOC4xLjMgRmFzdGVzdCBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50OF90ICAgIGludF9mYXN0OF90OwordHlwZWRlZiBpbnQxNl90ICAgaW50X2Zhc3QxNl90OwordHlwZWRlZiBpbnQzMl90ICAgaW50X2Zhc3QzMl90OwordHlwZWRlZiBpbnQ2NF90ICAgaW50X2Zhc3Q2NF90OwordHlwZWRlZiB1aW50OF90ICAgdWludF9mYXN0OF90OwordHlwZWRlZiB1aW50MTZfdCAgdWludF9mYXN0MTZfdDsKK3R5cGVkZWYgdWludDMyX3QgIHVpbnRfZmFzdDMyX3Q7Cit0eXBlZGVmIHVpbnQ2NF90ICB1aW50X2Zhc3Q2NF90OworCisvLyA3LjE4LjEuNCBJbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2YgaG9sZGluZyBvYmplY3QgcG9pbnRlcnMKKyNpZmRlZiBfV0lONjQgLy8gWworICAgdHlwZWRlZiBfX2ludDY0ICAgICAgICAgICBpbnRwdHJfdDsKKyAgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgdWludHB0cl90OworI2Vsc2UgLy8gX1dJTjY0IF1bCisgICB0eXBlZGVmIF9XNjQgaW50ICAgICAgICAgICAgICAgaW50cHRyX3Q7CisgICB0eXBlZGVmIF9XNjQgdW5zaWduZWQgaW50ICAgICAgdWludHB0cl90OworI2VuZGlmIC8vIF9XSU42NCBdCisKKy8vIDcuMTguMS41IEdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKK3R5cGVkZWYgaW50NjRfdCAgIGludG1heF90OwordHlwZWRlZiB1aW50NjRfdCAgdWludG1heF90OworCisKKy8vIDcuMTguMiBMaW1pdHMgb2Ygc3BlY2lmaWVkLXdpZHRoIGludGVnZXIgdHlwZXMKKworI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKF9fU1REQ19MSU1JVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5vdGUgMjIwIGF0IHBhZ2UgMjU3IGFuZCBmb290bm90ZSAyMjEgYXQgcGFnZSAyNTkKKworLy8gNy4xOC4yLjEgTGltaXRzIG9mIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UOF9NSU4gICAgICgoaW50OF90KV9JOF9NSU4pCisjZGVmaW5lIElOVDhfTUFYICAgICBfSThfTUFYCisjZGVmaW5lIElOVDE2X01JTiAgICAoKGludDE2X3QpX0kxNl9NSU4pCisjZGVmaW5lIElOVDE2X01BWCAgICBfSTE2X01BWAorI2RlZmluZSBJTlQzMl9NSU4gICAgKChpbnQzMl90KV9JMzJfTUlOKQorI2RlZmluZSBJTlQzMl9NQVggICAgX0kzMl9NQVgKKyNkZWZpbmUgSU5UNjRfTUlOICAgICgoaW50NjRfdClfSTY0X01JTikKKyNkZWZpbmUgSU5UNjRfTUFYICAgIF9JNjRfTUFYCisjZGVmaW5lIFVJTlQ4X01BWCAgICBfVUk4X01BWAorI2RlZmluZSBVSU5UMTZfTUFYICAgX1VJMTZfTUFYCisjZGVmaW5lIFVJTlQzMl9NQVggICBfVUkzMl9NQVgKKyNkZWZpbmUgVUlOVDY0X01BWCAgIF9VSTY0X01BWAorCisvLyA3LjE4LjIuMiBMaW1pdHMgb2YgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCisjZGVmaW5lIElOVF9MRUFTVDhfTUlOICAgIElOVDhfTUlOCisjZGVmaW5lIElOVF9MRUFTVDhfTUFYICAgIElOVDhfTUFYCisjZGVmaW5lIElOVF9MRUFTVDE2X01JTiAgIElOVDE2X01JTgorI2RlZmluZSBJTlRfTEVBU1QxNl9NQVggICBJTlQxNl9NQVgKKyNkZWZpbmUgSU5UX0xFQVNUMzJfTUlOICAgSU5UMzJfTUlOCisjZGVmaW5lIElOVF9MRUFTVDMyX01BWCAgIElOVDMyX01BWAorI2RlZmluZSBJTlRfTEVBU1Q2NF9NSU4gICBJTlQ2NF9NSU4KKyNkZWZpbmUgSU5UX0xFQVNUNjRfTUFYICAgSU5UNjRfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1Q4X01BWCAgIFVJTlQ4X01BWAorI2RlZmluZSBVSU5UX0xFQVNUMTZfTUFYICBVSU5UMTZfTUFYCisjZGVmaW5lIFVJTlRfTEVBU1QzMl9NQVggIFVJTlQzMl9NQVgKKyNkZWZpbmUgVUlOVF9MRUFTVDY0X01BWCAgVUlOVDY0X01BWAorCisvLyA3LjE4LjIuMyBMaW1pdHMgb2YgZmFzdGVzdCBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKKyNkZWZpbmUgSU5UX0ZBU1Q4X01JTiAgICBJTlQ4X01JTgorI2RlZmluZSBJTlRfRkFTVDhfTUFYICAgIElOVDhfTUFYCisjZGVmaW5lIElOVF9GQVNUMTZfTUlOICAgSU5UMTZfTUlOCisjZGVmaW5lIElOVF9GQVNUMTZfTUFYICAgSU5UMTZfTUFYCisjZGVmaW5lIElOVF9GQVNUMzJfTUlOICAgSU5UMzJfTUlOCisjZGVmaW5lIElOVF9GQVNUMzJfTUFYICAgSU5UMzJfTUFYCisjZGVmaW5lIElOVF9GQVNUNjRfTUlOICAgSU5UNjRfTUlOCisjZGVmaW5lIElOVF9GQVNUNjRfTUFYICAgSU5UNjRfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDhfTUFYICAgVUlOVDhfTUFYCisjZGVmaW5lIFVJTlRfRkFTVDE2X01BWCAgVUlOVDE2X01BWAorI2RlZmluZSBVSU5UX0ZBU1QzMl9NQVggIFVJTlQzMl9NQVgKKyNkZWZpbmUgVUlOVF9GQVNUNjRfTUFYICBVSU5UNjRfTUFYCisKKy8vIDcuMTguMi40IExpbWl0cyBvZiBpbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2YgaG9sZGluZyBvYmplY3QgcG9pbnRlcnMKKyNpZmRlZiBfV0lONjQgLy8gWworIyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQ2NF9NSU4KKyMgIGRlZmluZSBJTlRQVFJfTUFYICAgSU5UNjRfTUFYCisjICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQ2NF9NQVgKKyNlbHNlIC8vIF9XSU42NCBdWworIyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQzMl9NSU4KKyMgIGRlZmluZSBJTlRQVFJfTUFYICAgSU5UMzJfTUFYCisjICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQzMl9NQVgKKyNlbmRpZiAvLyBfV0lONjQgXQorCisvLyA3LjE4LjIuNSBMaW1pdHMgb2YgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciB0eXBlcworI2RlZmluZSBJTlRNQVhfTUlOICAgSU5UNjRfTUlOCisjZGVmaW5lIElOVE1BWF9NQVggICBJTlQ2NF9NQVgKKyNkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQ2NF9NQVgKKworLy8gNy4xOC4zIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCisKKyNpZmRlZiBfV0lONjQgLy8gWworIyAgZGVmaW5lIFBUUkRJRkZfTUlOICBfSTY0X01JTgorIyAgZGVmaW5lIFBUUkRJRkZfTUFYICBfSTY0X01BWAorI2Vsc2UgIC8vIF9XSU42NCBdWworIyAgZGVmaW5lIFBUUkRJRkZfTUlOICBfSTMyX01JTgorIyAgZGVmaW5lIFBUUkRJRkZfTUFYICBfSTMyX01BWAorI2VuZGlmICAvLyBfV0lONjQgXQorCisjZGVmaW5lIFNJR19BVE9NSUNfTUlOICBJTlRfTUlOCisjZGVmaW5lIFNJR19BVE9NSUNfTUFYICBJTlRfTUFYCisKKyNpZm5kZWYgU0laRV9NQVggLy8gWworIyAgaWZkZWYgX1dJTjY0IC8vIFsKKyMgICAgIGRlZmluZSBTSVpFX01BWCAgX1VJNjRfTUFYCisjICBlbHNlIC8vIF9XSU42NCBdWworIyAgICAgZGVmaW5lIFNJWkVfTUFYICBfVUkzMl9NQVgKKyMgIGVuZGlmIC8vIF9XSU42NCBdCisjZW5kaWYgLy8gU0laRV9NQVggXQorCisvLyBXQ0hBUl9NSU4gYW5kIFdDSEFSX01BWCBhcmUgYWxzbyBkZWZpbmVkIGluIDx3Y2hhci5oPgorI2lmbmRlZiBXQ0hBUl9NSU4gLy8gWworIyAgZGVmaW5lIFdDSEFSX01JTiAgMAorI2VuZGlmICAvLyBXQ0hBUl9NSU4gXQorI2lmbmRlZiBXQ0hBUl9NQVggLy8gWworIyAgZGVmaW5lIFdDSEFSX01BWCAgX1VJMTZfTUFYCisjZW5kaWYgIC8vIFdDSEFSX01BWCBdCisKKyNkZWZpbmUgV0lOVF9NSU4gIDAKKyNkZWZpbmUgV0lOVF9NQVggIF9VSTE2X01BWAorCisjZW5kaWYgLy8gX19TVERDX0xJTUlUX01BQ1JPUyBdCisKKworLy8gNy4xOC40IExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCisKKyNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChfX1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyNCBhdCBwYWdlIDI2MAorCisvLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1pbmltdW0td2lkdGggaW50ZWdlciBjb25zdGFudHMKKworI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFsIyNpOAorI2RlZmluZSBJTlQxNl9DKHZhbCkgdmFsIyNpMTYKKyNkZWZpbmUgSU5UMzJfQyh2YWwpIHZhbCMjaTMyCisjZGVmaW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAorCisjZGVmaW5lIFVJTlQ4X0ModmFsKSAgdmFsIyN1aTgKKyNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKKyNkZWZpbmUgVUlOVDMyX0ModmFsKSB2YWwjI3VpMzIKKyNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3VpNjQKKworLy8gNy4xOC40LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cworI2RlZmluZSBJTlRNQVhfQyAgIElOVDY0X0MKKyNkZWZpbmUgVUlOVE1BWF9DICBVSU5UNjRfQworCisjZW5kaWYgLy8gX19TVERDX0NPTlNUQU5UX01BQ1JPUyBdCisKKworI2VuZGlmIC8vIF9NU0NfU1RESU5UX0hfIF0KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvUkVBRE1FLnR4dCBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvUkVBRE1FLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2I2ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMTUgQEAKKworCitUaGlzIGRpcmVjdG9yeSBjb250YWlucyBleHRlbmRlZCB0ZXN0cyBhbmQgYSBiZW5jaG1hcmsgYWdhaW5zdCBkZWNpbWFsLnB5OgorCisgIGJlbmNoLnB5ICAtPiAgQmVuY2htYXJrIGZvciBzbWFsbCBhbmQgbGFyZ2UgcHJlY2lzaW9ucy4KKyAgVXNhZ2U6IC4uLy4uLy4uL3B5dGhvbiBiZW5jaC5weQorCisgIGZvcm1hdGhlbHBlci5weSAgIC0+CisgIHJhbmRkZWMucHkgICAgICAgIC0+ICBHZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciBkZWNjaGVjay5weS4KKyAgcmFuZGZsb2F0LnB5ICAgICAgLT4KKworICBkZWNjaGVjay5weSAgLT4gIFJ1biBleHRlbmRlZCB0ZXN0cy4KKyAgVXNhZ2U6IC4uLy4uLy4uL3B5dGhvbiBkZWNjaGVjay5weSBbLS1zaG9ydHwtLW1lZGl1bXwtLWxvbmd8LS1hbGxdCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9iZW5jaC5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmVuY2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U0YTIxMAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmVuY2gucHkKQEAgLTAsMCArMSwxMzUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorCisjCisjIENvcHlyaWdodCAoQykgMjAwMS0yMDEyIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBNb2RpZmllZCBhbmQgZXh0ZW5kZWQgYnkgU3RlZmFuIEtyYWguCisjCisKKyMgVXNhZ2U6IC4uLy4uLy4uL3B5dGhvbiBiZW5jaC5weQorCisKK2ltcG9ydCB0aW1lCitmcm9tIG1hdGggaW1wb3J0IGxvZywgY2VpbAordHJ5OgorICAgIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQorCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCisKKyMKKyMgTk9URTogVGhpcyBpcyB0aGUgcGkgZnVuY3Rpb24gZnJvbSB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBtb2RpZmllZAorIyBmb3IgYmVuY2htYXJraW5nIHB1cnBvc2VzLiBTaW5jZSBmbG9hdHMgZG8gbm90IGhhdmUgYSBjb250ZXh0LCB0aGUgaGlnaGVyCisjIGludGVybWVkaWF0ZSBwcmVjaXNpb24gZnJvbSB0aGUgb3JpZ2luYWwgaXMgTk9UIHVzZWQsIHNvIHRoZSBtb2RpZmllZAorIyBhbGdvcml0aG0gb25seSBnaXZlcyBhbiBhcHByb3hpbWF0aW9uIHRvIHRoZSBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHQuCisjIEZvciBzZXJpb3VzIHVzZSwgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gb3IgdGhlIGFwcHJvcHJpYXRlIGxpdGVyYXR1cmUuCisjCitkZWYgcGlfZmxvYXQoKToKKyAgICAiIiJuYXRpdmUgZmxvYXQiIiIKKyAgICBsYXN0cywgdCwgcywgbiwgbmEsIGQsIGRhID0gMCwgMy4wLCAzLCAxLCAwLCAwLCAyNAorICAgIHdoaWxlIHMgIT0gbGFzdHM6CisgICAgICAgIGxhc3RzID0gcworICAgICAgICBuLCBuYSA9IG4rbmEsIG5hKzgKKyAgICAgICAgZCwgZGEgPSBkK2RhLCBkYSszMgorICAgICAgICB0ID0gKHQgKiBuKSAvIGQKKyAgICAgICAgcyArPSB0CisgICAgcmV0dXJuIHMKKworZGVmIHBpX2NkZWNpbWFsKCk6CisgICAgIiIiY2RlY2ltYWwiIiIKKyAgICBEID0gQy5EZWNpbWFsCisgICAgbGFzdHMsIHQsIHMsIG4sIG5hLCBkLCBkYSA9IEQoMCksIEQoMyksIEQoMyksIEQoMSksIEQoMCksIEQoMCksIEQoMjQpCisgICAgd2hpbGUgcyAhPSBsYXN0czoKKyAgICAgICAgbGFzdHMgPSBzCisgICAgICAgIG4sIG5hID0gbituYSwgbmErOAorICAgICAgICBkLCBkYSA9IGQrZGEsIGRhKzMyCisgICAgICAgIHQgPSAodCAqIG4pIC8gZAorICAgICAgICBzICs9IHQKKyAgICByZXR1cm4gcworCitkZWYgcGlfZGVjaW1hbCgpOgorICAgICIiImRlY2ltYWwiIiIKKyAgICBEID0gUC5EZWNpbWFsCisgICAgbGFzdHMsIHQsIHMsIG4sIG5hLCBkLCBkYSA9IEQoMCksIEQoMyksIEQoMyksIEQoMSksIEQoMCksIEQoMCksIEQoMjQpCisgICAgd2hpbGUgcyAhPSBsYXN0czoKKyAgICAgICAgbGFzdHMgPSBzCisgICAgICAgIG4sIG5hID0gbituYSwgbmErOAorICAgICAgICBkLCBkYSA9IGQrZGEsIGRhKzMyCisgICAgICAgIHQgPSAodCAqIG4pIC8gZAorICAgICAgICBzICs9IHQKKyAgICByZXR1cm4gcworCitkZWYgZmFjdG9yaWFsKG4sIG0pOgorICAgIGlmIChuID4gbSk6CisgICAgICAgIHJldHVybiBmYWN0b3JpYWwobSwgbikKKyAgICBlbGlmIG0gPT0gMDoKKyAgICAgICAgcmV0dXJuIDEKKyAgICBlbGlmIG4gPT0gbToKKyAgICAgICAgcmV0dXJuIG4KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZmFjdG9yaWFsKG4sIChuK20pLy8yKSAqIGZhY3RvcmlhbCgobittKS8vMiArIDEsIG0pCisKKworcHJpbnQoIlxuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikKK3ByaW50KCIjICAgICAgICAgICAgICAgICAgIENhbGN1bGF0aW5nIHBpLCAxMDAwMCBpdGVyYXRpb25zIikKK3ByaW50KCIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpCisKK3RvX2JlbmNobWFyayA9IFtwaV9mbG9hdCwgcGlfZGVjaW1hbF0KK2lmIEMgaXMgbm90IE5vbmU6CisgICAgdG9fYmVuY2htYXJrLmluc2VydCgxLCBwaV9jZGVjaW1hbCkKKworZm9yIHByZWMgaW4gWzksIDE5XToKKyAgICBwcmludCgiXG5QcmVjaXNpb246ICVkIGRlY2ltYWwgZGlnaXRzXG4iICUgcHJlYykKKyAgICBmb3IgZnVuYyBpbiB0b19iZW5jaG1hcms6CisgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgaWYgQyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIEMuZ2V0Y29udGV4dCgpLnByZWMgPSBwcmVjCisgICAgICAgIFAuZ2V0Y29udGV4dCgpLnByZWMgPSBwcmVjCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDAwKToKKyAgICAgICAgICAgIHggPSBmdW5jKCkKKyAgICAgICAgcHJpbnQoIiVzOiIgJSBmdW5jLl9fbmFtZV9fLnJlcGxhY2UoInBpXyIsICIiKSkKKyAgICAgICAgcHJpbnQoInJlc3VsdDogJXMiICUgc3RyKHgpKQorICAgICAgICBwcmludCgidGltZTogJWZzXG4iICUgKHRpbWUudGltZSgpLXN0YXJ0KSkKKworCitwcmludCgiXG4jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQorcHJpbnQoIiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFjdG9yaWFsIikKK3ByaW50KCIjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpCisKK2lmIEMgaXMgbm90IE5vbmU6CisgICAgYyA9IEMuZ2V0Y29udGV4dCgpCisgICAgYy5wcmVjID0gQy5NQVhfUFJFQworICAgIGMuRW1heCA9IEMuTUFYX0VNQVgKKyAgICBjLkVtaW4gPSBDLk1JTl9FTUlOCisKK2ZvciBuIGluIFsxMDAwMDAsIDEwMDAwMDBdOgorCisgICAgcHJpbnQoIm4gPSAlZFxuIiAlIG4pCisKKyAgICBpZiBDIGlzIG5vdCBOb25lOgorICAgICAgICAjIEMgdmVyc2lvbiBvZiBkZWNpbWFsCisgICAgICAgIHN0YXJ0X2NhbGMgPSB0aW1lLnRpbWUoKQorICAgICAgICB4ID0gZmFjdG9yaWFsKEMuRGVjaW1hbChuKSwgMCkKKyAgICAgICAgZW5kX2NhbGMgPSB0aW1lLnRpbWUoKQorICAgICAgICBzdGFydF9jb252ID0gdGltZS50aW1lKCkKKyAgICAgICAgc3ggPSBzdHIoeCkKKyAgICAgICAgZW5kX2NvbnYgPSB0aW1lLnRpbWUoKQorICAgICAgICBwcmludCgiY2RlY2ltYWw6IikKKyAgICAgICAgcHJpbnQoImNhbGN1bGF0aW9uIHRpbWU6ICVmcyIgJSAoZW5kX2NhbGMtc3RhcnRfY2FsYykpCisgICAgICAgIHByaW50KCJjb252ZXJzaW9uIHRpbWU6ICVmc1xuIiAlIChlbmRfY29udi1zdGFydF9jb252KSkKKworICAgICMgUHl0aG9uIGludGVnZXJzCisgICAgc3RhcnRfY2FsYyA9IHRpbWUudGltZSgpCisgICAgeSA9IGZhY3RvcmlhbChuLCAwKQorICAgIGVuZF9jYWxjID0gdGltZS50aW1lKCkKKyAgICBzdGFydF9jb252ID0gdGltZS50aW1lKCkKKyAgICBzeSA9IHN0cih5KQorICAgIGVuZF9jb252ID0gIHRpbWUudGltZSgpCisKKyAgICBwcmludCgiaW50OiIpCisgICAgcHJpbnQoImNhbGN1bGF0aW9uIHRpbWU6ICVmcyIgJSAoZW5kX2NhbGMtc3RhcnRfY2FsYykpCisgICAgcHJpbnQoImNvbnZlcnNpb24gdGltZTogJWZzXG5cbiIgJSAoZW5kX2NvbnYtc3RhcnRfY29udikpCisKKyAgICBpZiBDIGlzIG5vdCBOb25lOgorICAgICAgICBhc3NlcnQoc3ggPT0gc3kpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JpZ251bS5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvYmlnbnVtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2N2UxNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2JpZ251bS5weQpAQCAtMCwwICsxLDQyIEBACisjCisjIFRoZXNlIHRlc3RzIHJlcXVpcmUgZ21weSBhbmQgdGVzdCB0aGUgbGltaXRzIG9mIHRoZSAzMi1iaXQgYnVpbGQuIFRoZQorIyBsaW1pdHMgb2YgdGhlIDY0LWJpdCBidWlsZCBhcmUgc28gbGFyZ2UgdGhhdCB0aGV5IGNhbm5vdCBiZSB0ZXN0ZWQKKyMgb24gYWNjZXNzaWJsZSBoYXJkd2FyZS4KKyMKKworaW1wb3J0IHN5cworZnJvbSBkZWNpbWFsIGltcG9ydCAqCitmcm9tIGdtcHkgaW1wb3J0IG1wegorCisKK19QeUhBU0hfTU9EVUxVUyA9IHN5cy5oYXNoX2luZm8ubW9kdWx1cworIyBoYXNoIHZhbHVlcyB0byB1c2UgZm9yIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBpbmZpbml0aWVzLCBhbmQgbmFucworX1B5SEFTSF9JTkYgPSBzeXMuaGFzaF9pbmZvLmluZgorX1B5SEFTSF9OQU4gPSBzeXMuaGFzaF9pbmZvLm5hbgorCisjIF9QeUhBU0hfMTBJTlYgaXMgdGhlIGludmVyc2Ugb2YgMTAgbW9kdWxvIHRoZSBwcmltZSBfUHlIQVNIX01PRFVMVVMKK19QeUhBU0hfMTBJTlYgPSBwb3coMTAsIF9QeUhBU0hfTU9EVUxVUyAtIDIsIF9QeUhBU0hfTU9EVUxVUykKKworZGVmIHhoYXNoKGNvZWZmLCBleHApOgorICAgIHNpZ24gPSAxCisgICAgaWYgY29lZmYgPCAwOgorICAgICAgICBzaWduID0gLTEKKyAgICAgICAgY29lZmYgPSAtY29lZmYKKyAgICBpZiBleHAgPj0gMDoKKyAgICAgICAgZXhwX2hhc2ggPSBwb3coMTAsIGV4cCwgX1B5SEFTSF9NT0RVTFVTKQorICAgIGVsc2U6CisgICAgICAgIGV4cF9oYXNoID0gcG93KF9QeUhBU0hfMTBJTlYsIC1leHAsIF9QeUhBU0hfTU9EVUxVUykKKyAgICBoYXNoXyA9IGNvZWZmICogZXhwX2hhc2ggJSBfUHlIQVNIX01PRFVMVVMKKyAgICBhbnMgPSBoYXNoXyBpZiBzaWduID09IDEgZWxzZSAtaGFzaF8KKyAgICByZXR1cm4gLTIgaWYgYW5zID09IC0xIGVsc2UgYW5zCisKKworeCA9IG1weigxMCkgKiogNDI1MDAwMDAwIC0gMQorY29lZmYgPSBpbnQoeCkKKworZCA9IERlY2ltYWwoJzknICogNDI1MDAwMDAwICsgJ2UtODQ5OTk5OTk5JykKKworaDEgPSB4aGFzaChjb2VmZiwgLTg0OTk5OTk5OSkKK2gyID0gaGFzaChkKQorCithc3NlcnQgaDIgPT0gaDEKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4ZGE0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CkBAIC0wLDAgKzEsMTA3NSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgU3RlZmFuIEtyYWguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIworIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorIyBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorIyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworIyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyMgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyMgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorIyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisjIFNVQ0ggREFNQUdFLgorIworCisjCisjIFVzYWdlOiBweXRob24gZGVjY2hlY2sucHkgWy0tc2hvcnR8LS1tZWRpdW18LS1sb25nfC0tYWxsXQorIworCitpbXBvcnQgc3lzLCByYW5kb20KK2Zyb20gY29weSBpbXBvcnQgY29weQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBpbXBvcnRfZnJlc2hfbW9kdWxlCitmcm9tIHJhbmRkZWMgaW1wb3J0IHJhbmRmbG9hdCwgYWxsX3VuYXJ5LCBhbGxfYmluYXJ5LCBhbGxfdGVybmFyeQorZnJvbSBmb3JtYXRoZWxwZXIgaW1wb3J0IHJhbmRfZm9ybWF0LCByYW5kX2xvY2FsZQorCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCitFWElUX1NUQVRVUyA9IDAKKworCisjIENvbnRhaW5zIGFsbCBjYXRlZ29yaWVzIG9mIERlY2ltYWwgbWV0aG9kcy4KK0Z1bmN0aW9ucyA9IHsKKyAgICAjIFBsYWluIHVuYXJ5OgorICAgICd1bmFyeSc6ICgKKyAgICAgICAgJ19fYWJzX18nLCAnX19ib29sX18nLCAnX19jZWlsX18nLCAnX19jb21wbGV4X18nLCAnX19jb3B5X18nLAorICAgICAgICAnX19mbG9vcl9fJywgJ19fZmxvYXRfXycsICdfX2hhc2hfXycsICdfX2ludF9fJywgJ19fbmVnX18nLAorICAgICAgICAnX19wb3NfXycsICdfX3JlZHVjZV9fJywgJ19fcmVwcl9fJywgJ19fc3RyX18nLCAnX190cnVuY19fJywKKyAgICAgICAgJ2FkanVzdGVkJywgJ2FzX3R1cGxlJywgJ2Nhbm9uaWNhbCcsICdjb25qdWdhdGUnLCAnY29weV9hYnMnLAorICAgICAgICAnY29weV9uZWdhdGUnLCAnaXNfY2Fub25pY2FsJywgJ2lzX2Zpbml0ZScsICdpc19pbmZpbml0ZScsCisgICAgICAgICdpc19uYW4nLCAnaXNfcW5hbicsICdpc19zaWduZWQnLCAnaXNfc25hbicsICdpc196ZXJvJywgJ3JhZGl4JworICAgICksCisgICAgIyBVbmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CisgICAgJ3VuYXJ5X2N0eCc6ICgKKyAgICAgICAgJ2V4cCcsICdpc19ub3JtYWwnLCAnaXNfc3Vibm9ybWFsJywgJ2xuJywgJ2xvZzEwJywgJ2xvZ2InLAorICAgICAgICAnbG9naWNhbF9pbnZlcnQnLCAnbmV4dF9taW51cycsICduZXh0X3BsdXMnLCAnbm9ybWFsaXplJywKKyAgICAgICAgJ251bWJlcl9jbGFzcycsICdzcXJ0JywgJ3RvX2VuZ19zdHJpbmcnCisgICAgKSwKKyAgICAjIFVuYXJ5IHdpdGggb3B0aW9uYWwgcm91bmRpbmcgbW9kZSBhbmQgY29udGV4dDoKKyAgICAndW5hcnlfcm5kX2N0eCc6ICgndG9faW50ZWdyYWwnLCAndG9faW50ZWdyYWxfZXhhY3QnLCAndG9faW50ZWdyYWxfdmFsdWUnKSwKKyAgICAjIFBsYWluIGJpbmFyeToKKyAgICAnYmluYXJ5JzogKAorICAgICAgICAnX19hZGRfXycsICdfX2Rpdm1vZF9fJywgJ19fZXFfXycsICdfX2Zsb29yZGl2X18nLCAnX19nZV9fJywgJ19fZ3RfXycsCisgICAgICAgICdfX2xlX18nLCAnX19sdF9fJywgJ19fbW9kX18nLCAnX19tdWxfXycsICdfX25lX18nLCAnX19wb3dfXycsCisgICAgICAgICdfX3JhZGRfXycsICdfX3JkaXZtb2RfXycsICdfX3JmbG9vcmRpdl9fJywgJ19fcm1vZF9fJywgJ19fcm11bF9fJywKKyAgICAgICAgJ19fcnBvd19fJywgJ19fcnN1Yl9fJywgJ19fcnRydWVkaXZfXycsICdfX3N1Yl9fJywgJ19fdHJ1ZWRpdl9fJywKKyAgICAgICAgJ2NvbXBhcmVfdG90YWwnLCAnY29tcGFyZV90b3RhbF9tYWcnLCAnY29weV9zaWduJywgJ3F1YW50aXplJywKKyAgICAgICAgJ3NhbWVfcXVhbnR1bScKKyAgICApLAorICAgICMgQmluYXJ5IHdpdGggb3B0aW9uYWwgY29udGV4dDoKKyAgICAnYmluYXJ5X2N0eCc6ICgKKyAgICAgICAgJ2NvbXBhcmUnLCAnY29tcGFyZV9zaWduYWwnLCAnbG9naWNhbF9hbmQnLCAnbG9naWNhbF9vcicsICdsb2dpY2FsX3hvcicsCisgICAgICAgICdtYXgnLCAnbWF4X21hZycsICdtaW4nLCAnbWluX21hZycsICduZXh0X3Rvd2FyZCcsICdyZW1haW5kZXJfbmVhcicsCisgICAgICAgICdyb3RhdGUnLCAnc2NhbGViJywgJ3NoaWZ0JworICAgICksCisgICAgIyBQbGFpbiB0ZXJuYXJ5OgorICAgICd0ZXJuYXJ5JzogKCdfX3Bvd19fJywpLAorICAgICMgVGVybmFyeSB3aXRoIG9wdGlvbmFsIGNvbnRleHQ6CisgICAgJ3Rlcm5hcnlfY3R4JzogKCdmbWEnLCksCisgICAgIyBTcGVjaWFsOgorICAgICdzcGVjaWFsJzogKCdfX2Zvcm1hdF9fJywgJ19fcmVkdWNlX2V4X18nLCAnX19yb3VuZF9fJywgJ2Zyb21fZmxvYXQnLAorICAgICAgICAgICAgICAgICdxdWFudGl6ZScpLAorICAgICMgUHJvcGVydGllczoKKyAgICAncHJvcGVydHknOiAoJ3JlYWwnLCAnaW1hZycpCit9CisKKyMgQ29udGFpbnMgYWxsIGNhdGVnb3JpZXMgb2YgQ29udGV4dCBtZXRob2RzLiBUaGUgbi1hcnkgY2xhc3NpZmljYXRpb24KKyMgYXBwbGllcyB0byB0aGUgbnVtYmVyIG9mIERlY2ltYWwgYXJndW1lbnRzLgorQ29udGV4dEZ1bmN0aW9ucyA9IHsKKyAgICAjIFBsYWluIG51bGxhcnk6CisgICAgJ251bGxhcnknOiAoJ2NvbnRleHQuX19oYXNoX18nLCAnY29udGV4dC5fX3JlZHVjZV9fJywgJ2NvbnRleHQucmFkaXgnKSwKKyAgICAjIFBsYWluIHVuYXJ5OgorICAgICd1bmFyeSc6ICgnY29udGV4dC5hYnMnLCAnY29udGV4dC5jYW5vbmljYWwnLCAnY29udGV4dC5jb3B5X2FicycsCisgICAgICAgICAgICAgICdjb250ZXh0LmNvcHlfZGVjaW1hbCcsICdjb250ZXh0LmNvcHlfbmVnYXRlJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQuY3JlYXRlX2RlY2ltYWwnLCAnY29udGV4dC5leHAnLCAnY29udGV4dC5pc19jYW5vbmljYWwnLAorICAgICAgICAgICAgICAnY29udGV4dC5pc19maW5pdGUnLCAnY29udGV4dC5pc19pbmZpbml0ZScsICdjb250ZXh0LmlzX25hbicsCisgICAgICAgICAgICAgICdjb250ZXh0LmlzX25vcm1hbCcsICdjb250ZXh0LmlzX3FuYW4nLCAnY29udGV4dC5pc19zaWduZWQnLAorICAgICAgICAgICAgICAnY29udGV4dC5pc19zbmFuJywgJ2NvbnRleHQuaXNfc3Vibm9ybWFsJywgJ2NvbnRleHQuaXNfemVybycsCisgICAgICAgICAgICAgICdjb250ZXh0LmxuJywgJ2NvbnRleHQubG9nMTAnLCAnY29udGV4dC5sb2diJywKKyAgICAgICAgICAgICAgJ2NvbnRleHQubG9naWNhbF9pbnZlcnQnLCAnY29udGV4dC5taW51cycsICdjb250ZXh0Lm5leHRfbWludXMnLAorICAgICAgICAgICAgICAnY29udGV4dC5uZXh0X3BsdXMnLCAnY29udGV4dC5ub3JtYWxpemUnLCAnY29udGV4dC5udW1iZXJfY2xhc3MnLAorICAgICAgICAgICAgICAnY29udGV4dC5wbHVzJywgJ2NvbnRleHQuc3FydCcsICdjb250ZXh0LnRvX2VuZ19zdHJpbmcnLAorICAgICAgICAgICAgICAnY29udGV4dC50b19pbnRlZ3JhbCcsICdjb250ZXh0LnRvX2ludGVncmFsX2V4YWN0JywKKyAgICAgICAgICAgICAgJ2NvbnRleHQudG9faW50ZWdyYWxfdmFsdWUnLCAnY29udGV4dC50b19zY2lfc3RyaW5nJworICAgICksCisgICAgIyBQbGFpbiBiaW5hcnk6CisgICAgJ2JpbmFyeSc6ICgnY29udGV4dC5hZGQnLCAnY29udGV4dC5jb21wYXJlJywgJ2NvbnRleHQuY29tcGFyZV9zaWduYWwnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuY29tcGFyZV90b3RhbCcsICdjb250ZXh0LmNvbXBhcmVfdG90YWxfbWFnJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmNvcHlfc2lnbicsICdjb250ZXh0LmRpdmlkZScsICdjb250ZXh0LmRpdmlkZV9pbnQnLAorICAgICAgICAgICAgICAgJ2NvbnRleHQuZGl2bW9kJywgJ2NvbnRleHQubG9naWNhbF9hbmQnLCAnY29udGV4dC5sb2dpY2FsX29yJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LmxvZ2ljYWxfeG9yJywgJ2NvbnRleHQubWF4JywgJ2NvbnRleHQubWF4X21hZycsCisgICAgICAgICAgICAgICAnY29udGV4dC5taW4nLCAnY29udGV4dC5taW5fbWFnJywgJ2NvbnRleHQubXVsdGlwbHknLAorICAgICAgICAgICAgICAgJ2NvbnRleHQubmV4dF90b3dhcmQnLCAnY29udGV4dC5wb3dlcicsICdjb250ZXh0LnF1YW50aXplJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LnJlbWFpbmRlcicsICdjb250ZXh0LnJlbWFpbmRlcl9uZWFyJywgJ2NvbnRleHQucm90YXRlJywKKyAgICAgICAgICAgICAgICdjb250ZXh0LnNhbWVfcXVhbnR1bScsICdjb250ZXh0LnNjYWxlYicsICdjb250ZXh0LnNoaWZ0JywKKyAgICAgICAgICAgICAgICdjb250ZXh0LnN1YnRyYWN0JworICAgICksCisgICAgIyBQbGFpbiB0ZXJuYXJ5OgorICAgICd0ZXJuYXJ5JzogKCdjb250ZXh0LmZtYScsICdjb250ZXh0LnBvd2VyJyksCisgICAgIyBTcGVjaWFsOgorICAgICdzcGVjaWFsJzogKCdjb250ZXh0Ll9fcmVkdWNlX2V4X18nLCAnY29udGV4dC5jcmVhdGVfZGVjaW1hbF9mcm9tX2Zsb2F0JykKK30KKworIyBGdW5jdGlvbnMgdGhhdCByZXF1aXJlIGEgcmVzdHJpY3RlZCBleHBvbmVudCByYW5nZSBmb3IgcmVhc29uYWJsZSBydW50aW1lcy4KK1VuYXJ5UmVzdHJpY3RlZCA9IFsKKyAgJ19fY2VpbF9fJywgJ19fZmxvb3JfXycsICdfX2ludF9fJywgJ19fbG9uZ19fJywgJ19fdHJ1bmNfXycsCisgICd0b19pbnRlZ3JhbCcsICd0b19pbnRlZ3JhbF92YWx1ZScKK10KKworQmluYXJ5UmVzdHJpY3RlZCA9IFsnX19yb3VuZF9fJ10KKworVGVybmFyeVJlc3RyaWN0ZWQgPSBbJ19fcG93X18nLCAnY29udGV4dC5wb3dlciddCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWZpZWQgQ29udGV4dAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgVHJhbnNsYXRlIHN5bWJvbHMuCitDb25kTWFwID0geworICAgICAgICBDLkNsYW1wZWQ6ICAgICAgICAgICAgIFAuQ2xhbXBlZCwKKyAgICAgICAgQy5Db252ZXJzaW9uU3ludGF4OiAgICBQLkNvbnZlcnNpb25TeW50YXgsCisgICAgICAgIEMuRGl2aXNpb25CeVplcm86ICAgICAgUC5EaXZpc2lvbkJ5WmVybywKKyAgICAgICAgQy5EaXZpc2lvbkltcG9zc2libGU6ICBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgIEMuRGl2aXNpb25VbmRlZmluZWQ6ICAgUC5EaXZpc2lvblVuZGVmaW5lZCwKKyAgICAgICAgQy5JbmV4YWN0OiAgICAgICAgICAgICBQLkluZXhhY3QsCisgICAgICAgIEMuSW52YWxpZENvbnRleHQ6ICAgICAgUC5JbnZhbGlkQ29udGV4dCwKKyAgICAgICAgQy5JbnZhbGlkT3BlcmF0aW9uOiAgICBQLkludmFsaWRPcGVyYXRpb24sCisgICAgICAgIEMuT3ZlcmZsb3c6ICAgICAgICAgICAgUC5PdmVyZmxvdywKKyAgICAgICAgQy5Sb3VuZGVkOiAgICAgICAgICAgICBQLlJvdW5kZWQsCisgICAgICAgIEMuU3Vibm9ybWFsOiAgICAgICAgICAgUC5TdWJub3JtYWwsCisgICAgICAgIEMuVW5kZXJmbG93OiAgICAgICAgICAgUC5VbmRlcmZsb3csCisgICAgICAgIEMuRmxvYXRPcGVyYXRpb246ICAgICAgUC5GbG9hdE9wZXJhdGlvbiwKK30KKworUm91bmRNYXAgPSB7CisgICAgICAgIEMuUk9VTkRfVVA6ICAgICAgICAgICBQLlJPVU5EX1VQLAorICAgICAgICBDLlJPVU5EX0RPV046ICAgICAgICAgUC5ST1VORF9ET1dOLAorICAgICAgICBDLlJPVU5EX0NFSUxJTkc6ICAgICAgUC5ST1VORF9DRUlMSU5HLAorICAgICAgICBDLlJPVU5EX0ZMT09SOiAgICAgICAgUC5ST1VORF9GTE9PUiwKKyAgICAgICAgQy5ST1VORF9IQUxGX1VQOiAgICAgIFAuUk9VTkRfSEFMRl9VUCwKKyAgICAgICAgQy5ST1VORF9IQUxGX0RPV046ICAgIFAuUk9VTkRfSEFMRl9ET1dOLAorICAgICAgICBDLlJPVU5EX0hBTEZfRVZFTjogICAgUC5ST1VORF9IQUxGX0VWRU4sCisgICAgICAgIEMuUk9VTkRfMDVVUDogICAgICAgICBQLlJPVU5EXzA1VVAKK30KK1JvdW5kTW9kZXMgPSBSb3VuZE1hcC5pdGVtcygpCisKKworY2xhc3MgQ29udGV4dChvYmplY3QpOgorICAgICIiIlByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgb2Ygc3luY2luZyB0aGUgQyBhbmQgUCBjb250ZXh0cyIiIgorCisgICAgX19zbG90c19fID0gWydjJywgJ3AnXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNfY3R4PU5vbmUsIHBfY3R4PU5vbmUpOgorICAgICAgICAiIiJJbml0aWFsaXphdGlvbiBpcyBmcm9tIHRoZSBDIGNvbnRleHQiIiIKKyAgICAgICAgc2VsZi5jID0gQy5nZXRjb250ZXh0KCkgaWYgY19jdHggaXMgTm9uZSBlbHNlIGNfY3R4CisgICAgICAgIHNlbGYucCA9IFAuZ2V0Y29udGV4dCgpIGlmIHBfY3R4IGlzIE5vbmUgZWxzZSBwX2N0eAorICAgICAgICBzZWxmLnAucHJlYyA9IHNlbGYuYy5wcmVjCisgICAgICAgIHNlbGYucC5FbWluID0gc2VsZi5jLkVtaW4KKyAgICAgICAgc2VsZi5wLkVtYXggPSBzZWxmLmMuRW1heAorICAgICAgICBzZWxmLnAucm91bmRpbmcgPSBSb3VuZE1hcFtzZWxmLmMucm91bmRpbmddCisgICAgICAgIHNlbGYucC5jYXBpdGFscyA9IHNlbGYuYy5jYXBpdGFscworICAgICAgICBzZWxmLnNldHRyYXBzKFtzaWcgZm9yIHNpZyBpbiBzZWxmLmMudHJhcHMgaWYgc2VsZi5jLnRyYXBzW3NpZ11dKQorICAgICAgICBzZWxmLnNldHN0YXR1cyhbc2lnIGZvciBzaWcgaW4gc2VsZi5jLmZsYWdzIGlmIHNlbGYuYy5mbGFnc1tzaWddXSkKKyAgICAgICAgc2VsZi5wLmNsYW1wID0gc2VsZi5jLmNsYW1wCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLmMpICsgJ1xuJyArIHN0cihzZWxmLnApCisKKyAgICBkZWYgZ2V0cHJlYyhzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5wcmVjID09IHNlbGYucC5wcmVjKQorICAgICAgICByZXR1cm4gc2VsZi5jLnByZWMKKworICAgIGRlZiBzZXRwcmVjKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5wcmVjID0gdmFsCisgICAgICAgIHNlbGYucC5wcmVjID0gdmFsCisKKyAgICBkZWYgZ2V0ZW1pbihzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5FbWluID09IHNlbGYucC5FbWluKQorICAgICAgICByZXR1cm4gc2VsZi5jLkVtaW4KKworICAgIGRlZiBzZXRlbWluKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5FbWluID0gdmFsCisgICAgICAgIHNlbGYucC5FbWluID0gdmFsCisKKyAgICBkZWYgZ2V0ZW1heChzZWxmKToKKyAgICAgICAgYXNzZXJ0KHNlbGYuYy5FbWF4ID09IHNlbGYucC5FbWF4KQorICAgICAgICByZXR1cm4gc2VsZi5jLkVtYXgKKworICAgIGRlZiBzZXRlbWF4KHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5FbWF4ID0gdmFsCisgICAgICAgIHNlbGYucC5FbWF4ID0gdmFsCisKKyAgICBkZWYgZ2V0cm91bmQoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMucm91bmRpbmcgPT0gUm91bmRNYXBbc2VsZi5wLnJvdW5kaW5nXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5yb3VuZGluZworCisgICAgZGVmIHNldHJvdW5kKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5yb3VuZGluZyA9IHZhbAorICAgICAgICBzZWxmLnAucm91bmRpbmcgPSBSb3VuZE1hcFt2YWxdCisKKyAgICBkZWYgZ2V0Y2FwaXRhbHMoc2VsZik6CisgICAgICAgIGFzc2VydChzZWxmLmMuY2FwaXRhbHMgPT0gc2VsZi5wLmNhcGl0YWxzKQorICAgICAgICByZXR1cm4gc2VsZi5jLmNhcGl0YWxzCisKKyAgICBkZWYgc2V0Y2FwaXRhbHMoc2VsZiwgdmFsKToKKyAgICAgICAgc2VsZi5jLmNhcGl0YWxzID0gdmFsCisgICAgICAgIHNlbGYucC5jYXBpdGFscyA9IHZhbAorCisgICAgZGVmIGdldGNsYW1wKHNlbGYpOgorICAgICAgICBhc3NlcnQoc2VsZi5jLmNsYW1wID09IHNlbGYucC5jbGFtcCkKKyAgICAgICAgcmV0dXJuIHNlbGYuYy5jbGFtcAorCisgICAgZGVmIHNldGNsYW1wKHNlbGYsIHZhbCk6CisgICAgICAgIHNlbGYuYy5jbGFtcCA9IHZhbAorICAgICAgICBzZWxmLnAuY2xhbXAgPSB2YWwKKworICAgIHByZWMgPSBwcm9wZXJ0eShnZXRwcmVjLCBzZXRwcmVjKQorICAgIEVtaW4gPSBwcm9wZXJ0eShnZXRlbWluLCBzZXRlbWluKQorICAgIEVtYXggPSBwcm9wZXJ0eShnZXRlbWF4LCBzZXRlbWF4KQorICAgIHJvdW5kaW5nID0gcHJvcGVydHkoZ2V0cm91bmQsIHNldHJvdW5kKQorICAgIGNsYW1wID0gcHJvcGVydHkoZ2V0Y2xhbXAsIHNldGNsYW1wKQorICAgIGNhcGl0YWxzID0gcHJvcGVydHkoZ2V0Y2FwaXRhbHMsIHNldGNhcGl0YWxzKQorCisgICAgZGVmIGNsZWFyX3RyYXBzKHNlbGYpOgorICAgICAgICBzZWxmLmMuY2xlYXJfdHJhcHMoKQorICAgICAgICBmb3IgdHJhcCBpbiBzZWxmLnAudHJhcHM6CisgICAgICAgICAgICBzZWxmLnAudHJhcHNbdHJhcF0gPSBGYWxzZQorCisgICAgZGVmIGNsZWFyX3N0YXR1cyhzZWxmKToKKyAgICAgICAgc2VsZi5jLmNsZWFyX2ZsYWdzKCkKKyAgICAgICAgc2VsZi5wLmNsZWFyX2ZsYWdzKCkKKworICAgIGRlZiBzZXR0cmFwcyhzZWxmLCBsc3QpOgorICAgICAgICAiIiJsc3Q6IEMgc2lnbmFsIGxpc3QiIiIKKyAgICAgICAgc2VsZi5jbGVhcl90cmFwcygpCisgICAgICAgIGZvciBzaWduYWwgaW4gbHN0OgorICAgICAgICAgICAgc2VsZi5jLnRyYXBzW3NpZ25hbF0gPSBUcnVlCisgICAgICAgICAgICBzZWxmLnAudHJhcHNbQ29uZE1hcFtzaWduYWxdXSA9IFRydWUKKworICAgIGRlZiBzZXRzdGF0dXMoc2VsZiwgbHN0KToKKyAgICAgICAgIiIibHN0OiBDIHNpZ25hbCBsaXN0IiIiCisgICAgICAgIHNlbGYuY2xlYXJfc3RhdHVzKCkKKyAgICAgICAgZm9yIHNpZ25hbCBpbiBsc3Q6CisgICAgICAgICAgICBzZWxmLmMuZmxhZ3Nbc2lnbmFsXSA9IFRydWUKKyAgICAgICAgICAgIHNlbGYucC5mbGFnc1tDb25kTWFwW3NpZ25hbF1dID0gVHJ1ZQorCisgICAgZGVmIGFzc2VydF9lcV9zdGF0dXMoc2VsZik6CisgICAgICAgICIiImFzc2VydCBlcXVhbGl0eSBvZiBDIGFuZCBQIHN0YXR1cyIiIgorICAgICAgICBmb3Igc2lnbmFsIGluIHNlbGYuYy5mbGFnczoKKyAgICAgICAgICAgIGlmIHNlbGYuYy5mbGFnc1tzaWduYWxdID09IChub3Qgc2VsZi5wLmZsYWdzW0NvbmRNYXBbc2lnbmFsXV0pOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gVHJ1ZQorCisKKyMgV2UgZG9uJ3Qgd2FudCBleGNlcHRpb25zIHNvIHRoYXQgd2UgY2FuIGNvbXBhcmUgdGhlIHN0YXR1cyBmbGFncy4KK2NvbnRleHQgPSBDb250ZXh0KCkKK2NvbnRleHQuRW1pbiA9IEMuTUlOX0VNSU4KK2NvbnRleHQuRW1heCA9IEMuTUFYX0VNQVgKK2NvbnRleHQuY2xlYXJfdHJhcHMoKQorCisjIFdoZW4gY3JlYXRpbmcgZGVjaW1hbHMsIF9kZWNpbWFsIGlzIHVsdGltYXRlbHkgbGltaXRlZCBieSB0aGUgbWF4aW11bQorIyBjb250ZXh0IHZhbHVlcy4gV2UgZW11bGF0ZSB0aGlzIHJlc3RyaWN0aW9uIGZvciBkZWNpbWFsLnB5LgorbWF4Y29udGV4dCA9IFAuQ29udGV4dCgKKyAgICBwcmVjPUMuTUFYX1BSRUMsCisgICAgRW1pbj1DLk1JTl9FTUlOLAorICAgIEVtYXg9Qy5NQVhfRU1BWCwKKyAgICByb3VuZGluZz1QLlJPVU5EX0hBTEZfVVAsCisgICAgY2FwaXRhbHM9MQorKQorbWF4Y29udGV4dC5jbGFtcCA9IDAKKworZGVmIFJlc3RyaWN0ZWREZWNpbWFsKHZhbHVlKToKKyAgICBtYXhjb250ZXh0LnRyYXBzID0gY29weShjb250ZXh0LnAudHJhcHMpCisgICAgbWF4Y29udGV4dC5jbGVhcl9mbGFncygpCisgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCisgICAgZGVjID0gbWF4Y29udGV4dC5jcmVhdGVfZGVjaW1hbCh2YWx1ZSkKKyAgICBpZiBtYXhjb250ZXh0LmZsYWdzW1AuSW5leGFjdF0gb3IgXAorICAgICAgIG1heGNvbnRleHQuZmxhZ3NbUC5Sb3VuZGVkXSBvciBcCisgICAgICAgbWF4Y29udGV4dC5mbGFnc1tQLkNsYW1wZWRdIG9yIFwKKyAgICAgICBtYXhjb250ZXh0LmZsYWdzW1AuSW52YWxpZE9wZXJhdGlvbl06CisgICAgICAgIHJldHVybiBjb250ZXh0LnAuX3JhaXNlX2Vycm9yKFAuSW52YWxpZE9wZXJhdGlvbikKKyAgICBpZiBtYXhjb250ZXh0LmZsYWdzW1AuRmxvYXRPcGVyYXRpb25dOgorICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5GbG9hdE9wZXJhdGlvbl0gPSBUcnVlCisgICAgcmV0dXJuIGRlYworCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyAgICAgIFRlc3RTZXQ6IE9yZ2FuaXplIGRhdGEgYW5kIGV2ZW50cyBkdXJpbmcgYSBzaW5nbGUgdGVzdCBjYXNlCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworY2xhc3MgUmVzdHJpY3RlZExpc3QobGlzdCk6CisgICAgIiIiTGlzdCB0aGF0IGNhbiBvbmx5IGJlIG1vZGlmaWVkIGJ5IGFwcGVuZGluZyBpdGVtcy4iIiIKKyAgICBkZWYgX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbmFtZSAhPSAnYXBwZW5kJzoKKyAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCJ1bnN1cHBvcnRlZCBvcGVyYXRpb24iKQorICAgICAgICByZXR1cm4gbGlzdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCisgICAgZGVmIHVuc3VwcG9ydGVkKHNlbGYsICpfKToKKyAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoInVuc3VwcG9ydGVkIG9wZXJhdGlvbiIpCisgICAgX19hZGRfXyA9IF9fZGVsYXR0cl9fID0gX19kZWxpdGVtX18gPSBfX2lhZGRfXyA9IF9faW11bF9fID0gdW5zdXBwb3J0ZWQKKyAgICBfX211bF9fID0gX19yZXZlcnNlZF9fID0gX19ybXVsX18gPSBfX3NldGF0dHJfXyA9IF9fc2V0aXRlbV9fID0gdW5zdXBwb3J0ZWQKKworY2xhc3MgVGVzdFNldChvYmplY3QpOgorICAgICIiIkEgVGVzdFNldCBjb250YWlucyB0aGUgb3JpZ2luYWwgaW5wdXQgb3BlcmFuZHMsIGNvbnZlcnRlZCBvcGVyYW5kcywKKyAgICAgICBQeXRob24gZXhjZXB0aW9ucyB0aGF0IG9jY3VycmVkIGVpdGhlciBkdXJpbmcgY29udmVyc2lvbiBvciBkdXJpbmcKKyAgICAgICBleGVjdXRpb24gb2YgdGhlIGFjdHVhbCBmdW5jdGlvbiwgYW5kIHRoZSBmaW5hbCByZXN1bHRzLgorCisgICAgICAgRm9yIHNhZmV0eSwgbW9zdCBhdHRyaWJ1dGVzIGFyZSBsaXN0cyB0aGF0IG9ubHkgc3VwcG9ydCB0aGUgYXBwZW5kCisgICAgICAgb3BlcmF0aW9uLgorCisgICAgICAgSWYgYSBmdW5jdGlvbiBuYW1lIGlzIHByZWZpeGVkIHdpdGggJ2NvbnRleHQuJywgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgICBjb250ZXh0IG1ldGhvZCBpcyBjYWxsZWQuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmNuYW1lLCBvcGVyYW5kcyk6CisgICAgICAgIGlmIGZ1bmNuYW1lLnN0YXJ0c3dpdGgoImNvbnRleHQuIik6CisgICAgICAgICAgICBzZWxmLmZ1bmNuYW1lID0gZnVuY25hbWUucmVwbGFjZSgiY29udGV4dC4iLCAiIikKKyAgICAgICAgICAgIHNlbGYuY29udGV4dGZ1bmMgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZ1bmNuYW1lID0gZnVuY25hbWUKKyAgICAgICAgICAgIHNlbGYuY29udGV4dGZ1bmMgPSBGYWxzZQorICAgICAgICBzZWxmLm9wID0gb3BlcmFuZHMgICAgICAgICAgICAgICAjIHJhdyBvcGVyYW5kIHR1cGxlCisgICAgICAgIHNlbGYuY29udGV4dCA9IGNvbnRleHQgICAgICAgICAgICMgY29udGV4dCB1c2VkIGZvciB0aGUgb3BlcmF0aW9uCisgICAgICAgIHNlbGYuY29wID0gUmVzdHJpY3RlZExpc3QoKSAgICAgICMgY29udmVydGVkIEMuRGVjaW1hbCBvcGVyYW5kcworICAgICAgICBzZWxmLmNleCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIFB5dGhvbiBleGNlcHRpb25zIGZvciBDLkRlY2ltYWwKKyAgICAgICAgc2VsZi5jcmVzdWx0cyA9IFJlc3RyaWN0ZWRMaXN0KCkgIyBDLkRlY2ltYWwgcmVzdWx0cworICAgICAgICBzZWxmLnBvcCA9IFJlc3RyaWN0ZWRMaXN0KCkgICAgICAjIGNvbnZlcnRlZCBQLkRlY2ltYWwgb3BlcmFuZHMKKyAgICAgICAgc2VsZi5wZXggPSBSZXN0cmljdGVkTGlzdCgpICAgICAgIyBQeXRob24gZXhjZXB0aW9ucyBmb3IgUC5EZWNpbWFsCisgICAgICAgIHNlbGYucHJlc3VsdHMgPSBSZXN0cmljdGVkTGlzdCgpICMgUC5EZWNpbWFsIHJlc3VsdHMKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgU2tpcEhhbmRsZXI6IHNraXAga25vd24gZGlzY3JlcGFuY2llcworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFNraXBIYW5kbGVyOgorICAgICIiIkhhbmRsZSBrbm93biBkaXNjcmVwYW5jaWVzIGJldHdlZW4gZGVjaW1hbC5weSBhbmQgX2RlY2ltYWwuc28uCisgICAgICAgVGhlc2UgYXJlIGVpdGhlciBVTFAgZGlmZmVyZW5jZXMgaW4gdGhlIHBvd2VyIGZ1bmN0aW9uIG9yCisgICAgICAgZXh0cmVtZWx5IG1pbm9yIGlzc3Vlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi51bHBkaWZmID0gMAorICAgICAgICBzZWxmLnBvd21vZF96ZXJvcyA9IDAKKyAgICAgICAgc2VsZi5tYXhjdHggPSBQLkNvbnRleHQoRW1heD0xMCoqMTgsIEVtaW49LTEwKioxOCkKKworICAgIGRlZiBkZWZhdWx0KHNlbGYsIHQpOgorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBfX2dlX18gPSAgX19ndF9fID0gX19sZV9fID0gX19sdF9fID0gX19uZV9fID0gX19lcV9fID0gZGVmYXVsdAorICAgIF9fcmVkdWNlX18gPSBfX2Zvcm1hdF9fID0gX19yZXByX18gPSBfX3N0cl9fID0gZGVmYXVsdAorCisgICAgZGVmIGhhcnJpc29uX3VscChzZWxmLCBkZWMpOgorICAgICAgICAiIiJmdHA6Ly9mdHAuaW5yaWEuZnIvSU5SSUEvcHVibGljYXRpb24vcHVibGktcGRmL1JSL1JSLTU1MDQucGRmIiIiCisgICAgICAgIGEgPSBkZWMubmV4dF9wbHVzKCkKKyAgICAgICAgYiA9IGRlYy5uZXh0X21pbnVzKCkKKyAgICAgICAgcmV0dXJuIGFicyhhIC0gYikKKworICAgIGRlZiBzdGFuZGFyZF91bHAoc2VsZiwgZGVjLCBwcmVjKToKKyAgICAgICAgcmV0dXJuIFAuX2RlY19mcm9tX3RyaXBsZSgwLCAnMScsIGRlYy5fZXhwK2xlbihkZWMuX2ludCktcHJlYykKKworICAgIGRlZiByb3VuZGluZ19kaXJlY3Rpb24oc2VsZiwgeCwgbW9kZSk6CisgICAgICAgICIiIkRldGVybWluZSB0aGUgZWZmZWN0aXZlIGRpcmVjdGlvbiBvZiB0aGUgcm91bmRpbmcgd2hlbgorICAgICAgICAgICB0aGUgZXhhY3QgcmVzdWx0IHggaXMgcm91bmRlZCBhY2NvcmRpbmcgdG8gbW9kZS4KKyAgICAgICAgICAgUmV0dXJuIC0xIGZvciBkb3dud2FyZHMsIDAgZm9yIHVuZGlyZWN0ZWQsIDEgZm9yIHVwd2FyZHMsCisgICAgICAgICAgIDIgZm9yIFJPVU5EXzA1VVAuIiIiCisgICAgICAgIGNtcCA9IDEgaWYgeC5jb21wYXJlX3RvdGFsKFAuRGVjaW1hbCgiKzAiKSkgPj0gMCBlbHNlIC0xCisKKyAgICAgICAgaWYgbW9kZSBpbiAoUC5ST1VORF9IQUxGX0VWRU4sIFAuUk9VTkRfSEFMRl9VUCwgUC5ST1VORF9IQUxGX0RPV04pOgorICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfQ0VJTElORzoKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX0ZMT09SOgorICAgICAgICAgICAgcmV0dXJuIC0xCisgICAgICAgIGVsaWYgbW9kZSA9PSBQLlJPVU5EX1VQOgorICAgICAgICAgICAgcmV0dXJuIGNtcAorICAgICAgICBlbGlmIG1vZGUgPT0gUC5ST1VORF9ET1dOOgorICAgICAgICAgICAgcmV0dXJuIC1jbXAKKyAgICAgICAgZWxpZiBtb2RlID09IFAuUk9VTkRfMDVVUDoKKyAgICAgICAgICAgIHJldHVybiAyCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmV4cGVjdGVkIHJvdW5kaW5nIG1vZGU6ICVzIiAlIG1vZGUpCisKKyAgICBkZWYgY2hlY2tfdWxwZGlmZihzZWxmLCBleGFjdCwgcm91bmRlZCk6CisgICAgICAgICMgY3VycmVudCBwcmVjaXNpb24KKyAgICAgICAgcCA9IGNvbnRleHQucC5wcmVjCisKKyAgICAgICAgIyBDb252ZXJ0IGluZmluaXRpZXMgdG8gdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgKyAxLgorICAgICAgICB4ID0gZXhhY3QKKyAgICAgICAgaWYgZXhhY3QuaXNfaW5maW5pdGUoKToKKyAgICAgICAgICAgIHggPSBQLl9kZWNfZnJvbV90cmlwbGUoZXhhY3QuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQorICAgICAgICB5ID0gcm91bmRlZAorICAgICAgICBpZiByb3VuZGVkLmlzX2luZmluaXRlKCk6CisgICAgICAgICAgICB5ID0gUC5fZGVjX2Zyb21fdHJpcGxlKHJvdW5kZWQuX3NpZ24sICcxMCcsIGNvbnRleHQucC5FbWF4KQorCisgICAgICAgICMgZXJyID0gKHJvdW5kZWQgLSBleGFjdCkgLyB1bHAocm91bmRlZCkKKyAgICAgICAgc2VsZi5tYXhjdHgucHJlYyA9IHAgKiAyCisgICAgICAgIHQgPSBzZWxmLm1heGN0eC5zdWJ0cmFjdCh5LCB4KQorICAgICAgICBpZiBjb250ZXh0LmMuZmxhZ3NbQy5DbGFtcGVkXSBvciBcCisgICAgICAgICAgIGNvbnRleHQuYy5mbGFnc1tDLlVuZGVyZmxvd106CisgICAgICAgICAgICAjIFRoZSBzdGFuZGFyZCB1bHAgZG9lcyBub3Qgd29yayBpbiBVbmRlcmZsb3cgdGVycml0b3J5LgorICAgICAgICAgICAgdWxwID0gc2VsZi5oYXJyaXNvbl91bHAoeSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVscCA9IHNlbGYuc3RhbmRhcmRfdWxwKHksIHApCisgICAgICAgICMgRXJyb3IgaW4gdWxwcy4KKyAgICAgICAgZXJyID0gc2VsZi5tYXhjdHguZGl2aWRlKHQsIHVscCkKKworICAgICAgICBkaXIgPSBzZWxmLnJvdW5kaW5nX2RpcmVjdGlvbih4LCBjb250ZXh0LnAucm91bmRpbmcpCisgICAgICAgIGlmIGRpciA9PSAwOgorICAgICAgICAgICAgaWYgUC5EZWNpbWFsKCItMC42IikgPCBlcnIgPCBQLkRlY2ltYWwoIjAuNiIpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGVsaWYgZGlyID09IDE6ICMgZGlyZWN0ZWQsIHVwd2FyZHMKKyAgICAgICAgICAgIGlmIFAuRGVjaW1hbCgiLTAuMSIpIDwgZXJyIDwgUC5EZWNpbWFsKCIxLjEiKToKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbGlmIGRpciA9PSAtMTogIyBkaXJlY3RlZCwgZG93bndhcmRzCisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0xLjEiKSA8IGVyciA8IFAuRGVjaW1hbCgiMC4xIik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZTogIyBST1VORF8wNVVQCisgICAgICAgICAgICBpZiBQLkRlY2ltYWwoIi0xLjEiKSA8IGVyciA8IFAuRGVjaW1hbCgiMS4xIik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBwcmludCgidWxwOiAlcyAgZXJyb3I6ICVzICBleGFjdDogJXMgIGNfcm91bmRlZDogJXMiCisgICAgICAgICAgICAgICUgKHVscCwgZXJyLCBleGFjdCwgcm91bmRlZCkpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGJpbl9yZXNvbHZlX3VscChzZWxmLCB0KToKKyAgICAgICAgIiIiQ2hlY2sgaWYgcmVzdWx0cyBvZiBfZGVjaW1hbCdzIHBvd2VyIGZ1bmN0aW9uIGFyZSB3aXRoaW4gdGhlCisgICAgICAgICAgIGFsbG93ZWQgdWxwIHJhbmdlcy4iIiIKKyAgICAgICAgIyBOYU5zIGFyZSBiZXlvbmQgcmVwYWlyLgorICAgICAgICBpZiB0LnJjLmlzX25hbigpIG9yIHQucnAuaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAjICJleGFjdCIgcmVzdWx0LCBkb3VibGUgcHJlY2lzaW9uLCBoYWxmX2V2ZW4KKyAgICAgICAgc2VsZi5tYXhjdHgucHJlYyA9IGNvbnRleHQucC5wcmVjICogMgorCisgICAgICAgIG9wMSwgb3AyID0gdC5wb3BbMF0sIHQucG9wWzFdCisgICAgICAgIGlmIHQuY29udGV4dGZ1bmM6CisgICAgICAgICAgICBleGFjdCA9IGdldGF0dHIoc2VsZi5tYXhjdHgsIHQuZnVuY25hbWUpKG9wMSwgb3AyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhhY3QgPSBnZXRhdHRyKG9wMSwgdC5mdW5jbmFtZSkob3AyLCBjb250ZXh0PXNlbGYubWF4Y3R4KQorCisgICAgICAgICMgX2RlY2ltYWwncyByb3VuZGVkIHJlc3VsdAorICAgICAgICByb3VuZGVkID0gUC5EZWNpbWFsKHQuY3Jlc3VsdHNbMF0pCisKKyAgICAgICAgc2VsZi51bHBkaWZmICs9IDEKKyAgICAgICAgcmV0dXJuIHNlbGYuY2hlY2tfdWxwZGlmZihleGFjdCwgcm91bmRlZCkKKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ29ycmVjdCByb3VuZGluZyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiByZXNvbHZlX3VuZGVyZmxvdyhzZWxmLCB0KToKKyAgICAgICAgIiIiSW4gZXh0cmVtZWx5IHJhcmUgY2FzZXMgd2hlcmUgdGhlIGluZmluaXRlIHByZWNpc2lvbiByZXN1bHQgaXMganVzdAorICAgICAgICAgICBiZWxvdyBldGlueSwgY2RlY2ltYWwgZG9lcyBub3Qgc2V0IFN1Ym5vcm1hbC9VbmRlcmZsb3cuIEV4YW1wbGU6CisKKyAgICAgICAgICAgc2V0Y29udGV4dChDb250ZXh0KHByZWM9MjEsIHJvdW5kaW5nPVJPVU5EX1VQLCBFbWluPS01NSwgRW1heD04NSkpCisgICAgICAgICAgIERlY2ltYWwoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCisgICAgICAgICAgICAgICAgICAgIjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCisgICAgICAgICAgICAgICAgICAgIjAwMDAwMDAwMDAwMDAwMjUiKS5sbigpCisgICAgICAgICIiIgorICAgICAgICBpZiB0LmNyZXN1bHRzICE9IHQucHJlc3VsdHM6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UgIyBSZXN1bHRzIG11c3QgYmUgaWRlbnRpY2FsLgorICAgICAgICBpZiBjb250ZXh0LmMuZmxhZ3NbQy5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LmMuZmxhZ3NbQy5JbmV4YWN0XSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5JbmV4YWN0XToKKyAgICAgICAgICAgIHJldHVybiBUcnVlICMgU3Vibm9ybWFsL1VuZGVyZmxvdyBtYXkgYmUgbWlzc2luZy4KKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgZXhwKHNlbGYsIHQpOgorICAgICAgICAiIiJSZXNvbHZlIFVuZGVyZmxvdyBvciBVTFAgZGlmZmVyZW5jZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYucmVzb2x2ZV91bmRlcmZsb3codCkKKworICAgIGRlZiBsb2cxMChzZWxmLCB0KToKKyAgICAgICAgIiIiUmVzb2x2ZSBVbmRlcmZsb3cgb3IgVUxQIGRpZmZlcmVuY2UuIiIiCisgICAgICAgIHJldHVybiBzZWxmLnJlc29sdmVfdW5kZXJmbG93KHQpCisKKyAgICBkZWYgbG4oc2VsZiwgdCk6CisgICAgICAgICIiIlJlc29sdmUgVW5kZXJmbG93IG9yIFVMUCBkaWZmZXJlbmNlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5yZXNvbHZlX3VuZGVyZmxvdyh0KQorCisgICAgZGVmIF9fcG93X18oc2VsZiwgdCk6CisgICAgICAgICIiIkFsd2F5cyBjYWxscyB0aGUgcmVzb2x2ZSBmdW5jdGlvbi4gQy5EZWNpbWFsIGRvZXMgbm90IGhhdmUgY29ycmVjdAorICAgICAgICAgICByb3VuZGluZyBmb3IgdGhlIHBvd2VyIGZ1bmN0aW9uLiIiIgorICAgICAgICBpZiBjb250ZXh0LmMuZmxhZ3NbQy5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LmMuZmxhZ3NbQy5JbmV4YWN0XSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5Sb3VuZGVkXSBhbmQgXAorICAgICAgICAgICBjb250ZXh0LnAuZmxhZ3NbUC5JbmV4YWN0XToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmJpbl9yZXNvbHZlX3VscCh0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcG93ZXIgPSBfX3Jwb3dfXyA9IF9fcG93X18KKworICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBUZWNobmljYWxpdGllcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIGRlZiBfX2Zsb2F0X18oc2VsZiwgdCk6CisgICAgICAgICIiIk5hTiBjb21wYXJpc29uIGluIHRoZSB2ZXJpZnkoKSBmdW5jdGlvbiBvYnZpb3VzbHkgZ2l2ZXMgYW4KKyAgICAgICAgICAgaW5jb3JyZWN0IGFuc3dlcjogIG5hbiA9PSBuYW4gLT4gRmFsc2UiIiIKKyAgICAgICAgaWYgdC5jb3BbMF0uaXNfbmFuKCkgYW5kIHQucG9wWzBdLmlzX25hbigpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgX19jb21wbGV4X18gPSBfX2Zsb2F0X18KKworICAgIGRlZiBfX3JhZGRfXyhzZWxmLCB0KToKKyAgICAgICAgIiIiZGVjaW1hbC5weSBnaXZlcyBwcmVjZWRlbmNlIHRvIHRoZSBmaXJzdCBOYU47IHRoaXMgaXMKKyAgICAgICAgICAgbm90IGltcG9ydGFudCwgYXMgX19yYWRkX18gd2lsbCBub3QgYmUgY2FsbGVkIGZvcgorICAgICAgICAgICB0d28gZGVjaW1hbCBhcmd1bWVudHMuIiIiCisgICAgICAgIGlmIHQucmMuaXNfbmFuKCkgYW5kIHQucnAuaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBfX3JtdWxfXyA9IF9fcmFkZF9fCisKKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBWYXJpb3VzICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkZWYgX19yb3VuZF9fKHNlbGYsIHQpOgorICAgICAgICAiIiJFeGNlcHRpb246IERlY2ltYWwoJzEnKS5fX3JvdW5kX18oLTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCkKKyAgICAgICAgICAgU2hvdWxkIGl0IHJlYWxseSBiZSBJbnZhbGlkT3BlcmF0aW9uPyIiIgorICAgICAgICBpZiB0LnJjIGlzIE5vbmUgYW5kIHQucnAuaXNfbmFuKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworc2hhbmRsZXIgPSBTa2lwSGFuZGxlcigpCitkZWYgc2tpcF9lcnJvcih0KToKKyAgICByZXR1cm4gZ2V0YXR0cihzaGFuZGxlciwgdC5mdW5jbmFtZSwgc2hhbmRsZXIuZGVmYXVsdCkodCkKKworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgICAgICAgICAgICAgICAgICAgICAgSGFuZGxpbmcgdmVyaWZpY2F0aW9uIGVycm9ycworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2NsYXNzIFZlcmlmeUVycm9yKEV4Y2VwdGlvbik6CisgICAgIiIiVmVyaWZpY2F0aW9uIGZhaWxlZC4iIiIKKyAgICBwYXNzCisKK2RlZiBmdW5jdGlvbl9hc19zdHJpbmcodCk6CisgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgY2FyZ3MgPSB0LmNvcAorICAgICAgICBwYXJncyA9IHQucG9wCisgICAgICAgIGNmdW5jID0gImNfZnVuYzogJXMoIiAlIHQuZnVuY25hbWUKKyAgICAgICAgcGZ1bmMgPSAicF9mdW5jOiAlcygiICUgdC5mdW5jbmFtZQorICAgIGVsc2U6CisgICAgICAgIGNzZWxmLCBjYXJncyA9IHQuY29wWzBdLCB0LmNvcFsxOl0KKyAgICAgICAgcHNlbGYsIHBhcmdzID0gdC5wb3BbMF0sIHQucG9wWzE6XQorICAgICAgICBjZnVuYyA9ICJjX2Z1bmM6ICVzLiVzKCIgJSAocmVwcihjc2VsZiksIHQuZnVuY25hbWUpCisgICAgICAgIHBmdW5jID0gInBfZnVuYzogJXMuJXMoIiAlIChyZXByKHBzZWxmKSwgdC5mdW5jbmFtZSkKKworICAgIGVyciA9IGNmdW5jCisgICAgZm9yIGFyZyBpbiBjYXJnczoKKyAgICAgICAgZXJyICs9ICIlcywgIiAlIHJlcHIoYXJnKQorICAgIGVyciA9IGVyci5yc3RyaXAoIiwgIikKKyAgICBlcnIgKz0gIilcbiIKKworICAgIGVyciArPSBwZnVuYworICAgIGZvciBhcmcgaW4gcGFyZ3M6CisgICAgICAgIGVyciArPSAiJXMsICIgJSByZXByKGFyZykKKyAgICBlcnIgPSBlcnIucnN0cmlwKCIsICIpCisgICAgZXJyICs9ICIpIgorCisgICAgcmV0dXJuIGVycgorCitkZWYgcmFpc2VfZXJyb3IodCk6CisgICAgZ2xvYmFsIEVYSVRfU1RBVFVTCisKKyAgICBpZiBza2lwX2Vycm9yKHQpOgorICAgICAgICByZXR1cm4KKyAgICBFWElUX1NUQVRVUyA9IDEKKworICAgIGVyciA9ICJFcnJvciBpbiAlczpcblxuIiAlIHQuZnVuY25hbWUKKyAgICBlcnIgKz0gImlucHV0IG9wZXJhbmRzOiAlc1xuXG4iICUgKHQub3AsKQorICAgIGVyciArPSBmdW5jdGlvbl9hc19zdHJpbmcodCkKKyAgICBlcnIgKz0gIlxuXG5jX3Jlc3VsdDogJXNcbnBfcmVzdWx0OiAlc1xuXG4iICUgKHQuY3Jlc3VsdHMsIHQucHJlc3VsdHMpCisgICAgZXJyICs9ICJjX2V4Y2VwdGlvbnM6ICVzXG5wX2V4Y2VwdGlvbnM6ICVzXG5cbiIgJSAodC5jZXgsIHQucGV4KQorICAgIGVyciArPSAiJXNcblxuIiAlIHN0cih0LmNvbnRleHQpCisKKyAgICByYWlzZSBWZXJpZnlFcnJvcihlcnIpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgTWFpbiB0ZXN0aW5nIGZ1bmN0aW9ucworIworIyAgVGhlIHByb2NlZHVyZSBpcyBhbHdheXMgKHQgaXMgdGhlIFRlc3RTZXQpOgorIworIyAgIGNvbnZlcnQodCkgLT4gSW5pdGlhbGl6ZSB0aGUgVGVzdFNldCBhcyBuZWNlc3NhcnkuCisjCisjICAgICAgICAgICAgICAgICBSZXR1cm4gMCBmb3IgZWFybHkgYWJvcnRpb24gKGUuZy4gaWYgYSBUeXBlRXJyb3IKKyMgICAgICAgICAgICAgICAgIG9jY3VycyBkdXJpbmcgY29udmVyc2lvbiwgdGhlcmUgaXMgbm90aGluZyB0byB0ZXN0KS4KKyMKKyMgICAgICAgICAgICAgICAgIFJldHVybiAxIGZvciBjb250aW51aW5nIHdpdGggdGhlIHRlc3QgY2FzZS4KKyMKKyMgICBjYWxsZnVuY3ModCkgLT4gQ2FsbCB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gZm9yIGVhY2ggaW1wbGVtZW50YXRpb24KKyMgICAgICAgICAgICAgICAgICAgYW5kIHJlY29yZCB0aGUgcmVzdWx0cyBpbiB0aGUgVGVzdFNldC4KKyMKKyMgICB2ZXJpZnkodCkgLT4gVmVyaWZ5IHRoZSByZXN1bHRzLiBJZiB2ZXJpZmljYXRpb24gZmFpbHMsIGRldGFpbHMKKyMgICAgICAgICAgICAgICAgYXJlIHByaW50ZWQgdG8gc3Rkb3V0LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2RlZiBjb252ZXJ0KHQsIGNvbnZzdHI9VHJ1ZSk6CisgICAgIiIiIHQgaXMgdGhlIHRlc3RzZXQuIEF0IHRoaXMgc3RhZ2UgdGhlIHRlc3RzZXQgY29udGFpbnMgYSB0dXBsZSBvZgorICAgICAgICBvcGVyYW5kcyB0Lm9wIG9mIHZhcmlvdXMgdHlwZXMuIEZvciBkZWNpbWFsIG1ldGhvZHMgdGhlIGZpcnN0CisgICAgICAgIG9wZXJhbmQgKHNlbGYpIGlzIGFsd2F5cyBjb252ZXJ0ZWQgdG8gRGVjaW1hbC4gSWYgJ2NvbnZzdHInIGlzCisgICAgICAgIHRydWUsIHN0cmluZyBvcGVyYW5kcyBhcmUgY29udmVydGVkIGFzIHdlbGwuCisKKyAgICAgICAgQ29udGV4dCBvcGVyYW5kcyBhcmUgb2YgdHlwZSBkZWNjaGVjay5Db250ZXh0LCByb3VuZGluZyBtb2RlCisgICAgICAgIG9wZXJhbmRzIGFyZSBnaXZlbiBhcyBhIHR1cGxlIChDLnJvdW5kaW5nLCBQLnJvdW5kaW5nKS4KKworICAgICAgICBPdGhlciB0eXBlcyAoZmxvYXQsIGludCwgZXRjLikgYXJlIGxlZnQgdW5jaGFuZ2VkLgorICAgICIiIgorICAgIGZvciBpLCBvcCBpbiBlbnVtZXJhdGUodC5vcCk6CisKKyAgICAgICAgY29udGV4dC5jbGVhcl9zdGF0dXMoKQorCisgICAgICAgIGlmIG5vdCB0LmNvbnRleHRmdW5jIGFuZCBpID09IDAgb3IgXAorICAgICAgICAgICBjb252c3RyIGFuZCBpc2luc3RhbmNlKG9wLCBzdHIpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGMgPSBDLkRlY2ltYWwob3ApCisgICAgICAgICAgICAgICAgY2V4ID0gTm9uZQorICAgICAgICAgICAgZXhjZXB0IChUeXBlRXJyb3IsIFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgYyA9IE5vbmUKKyAgICAgICAgICAgICAgICBjZXggPSBlLl9fY2xhc3NfXworCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcCA9IFJlc3RyaWN0ZWREZWNpbWFsKG9wKQorICAgICAgICAgICAgICAgIHBleCA9IE5vbmUKKyAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgIHAgPSBOb25lCisgICAgICAgICAgICAgICAgcGV4ID0gZS5fX2NsYXNzX18KKworICAgICAgICAgICAgdC5jb3AuYXBwZW5kKGMpCisgICAgICAgICAgICB0LmNleC5hcHBlbmQoY2V4KQorICAgICAgICAgICAgdC5wb3AuYXBwZW5kKHApCisgICAgICAgICAgICB0LnBleC5hcHBlbmQocGV4KQorCisgICAgICAgICAgICBpZiBjZXggaXMgcGV4OgorICAgICAgICAgICAgICAgIGlmIHN0cihjKSAhPSBzdHIocCkgb3Igbm90IGNvbnRleHQuYXNzZXJ0X2VxX3N0YXR1cygpOgorICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICAgICAgICAgICAgIGlmIGNleCBhbmQgcGV4OgorICAgICAgICAgICAgICAgICAgICAjIG5vdGhpbmcgdG8gdGVzdAorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZV9lcnJvcih0KQorCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvcCwgQ29udGV4dCk6CisgICAgICAgICAgICB0LmNvbnRleHQgPSBvcAorICAgICAgICAgICAgdC5jb3AuYXBwZW5kKG9wLmMpCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQob3AucCkKKworICAgICAgICBlbGlmIG9wIGluIFJvdW5kTW9kZXM6CisgICAgICAgICAgICB0LmNvcC5hcHBlbmQob3BbMF0pCisgICAgICAgICAgICB0LnBvcC5hcHBlbmQob3BbMV0pCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHQuY29wLmFwcGVuZChvcCkKKyAgICAgICAgICAgIHQucG9wLmFwcGVuZChvcCkKKworICAgIHJldHVybiAxCisKK2RlZiBjYWxsZnVuY3ModCk6CisgICAgIiIiIHQgaXMgdGhlIHRlc3RzZXQuIEF0IHRoaXMgc3RhZ2UgdGhlIHRlc3RzZXQgY29udGFpbnMgb3BlcmFuZCBsaXN0cworICAgICAgICB0LmNvcCBhbmQgdC5wb3AgZm9yIHRoZSBDIGFuZCBQeXRob24gdmVyc2lvbnMgb2YgZGVjaW1hbC4KKyAgICAgICAgRm9yIERlY2ltYWwgbWV0aG9kcywgdGhlIGZpcnN0IG9wZXJhbmRzIGFyZSBvZiB0eXBlIEMuRGVjaW1hbCBhbmQKKyAgICAgICAgUC5EZWNpbWFsIHJlc3BlY3RpdmVseS4gVGhlIHJlbWFpbmluZyBvcGVyYW5kcyBjYW4gaGF2ZSB2YXJpb3VzIHR5cGVzLgorICAgICAgICBGb3IgQ29udGV4dCBtZXRob2RzLCBhbGwgb3BlcmFuZHMgY2FuIGhhdmUgYW55IHR5cGUuCisKKyAgICAgICAgdC5yYyBhbmQgdC5ycCBhcmUgdGhlIHJlc3VsdHMgb2YgdGhlIG9wZXJhdGlvbi4KKyAgICAiIiIKKyAgICBjb250ZXh0LmNsZWFyX3N0YXR1cygpCisKKyAgICB0cnk6CisgICAgICAgIGlmIHQuY29udGV4dGZ1bmM6CisgICAgICAgICAgICBjYXJncyA9IHQuY29wCisgICAgICAgICAgICB0LnJjID0gZ2V0YXR0cihjb250ZXh0LmMsIHQuZnVuY25hbWUpKCpjYXJncykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNzZWxmID0gdC5jb3BbMF0KKyAgICAgICAgICAgIGNhcmdzID0gdC5jb3BbMTpdCisgICAgICAgICAgICB0LnJjID0gZ2V0YXR0cihjc2VsZiwgdC5mdW5jbmFtZSkoKmNhcmdzKQorICAgICAgICB0LmNleC5hcHBlbmQoTm9uZSkKKyAgICBleGNlcHQgKFR5cGVFcnJvciwgVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgTWVtb3J5RXJyb3IpIGFzIGU6CisgICAgICAgIHQucmMgPSBOb25lCisgICAgICAgIHQuY2V4LmFwcGVuZChlLl9fY2xhc3NfXykKKworICAgIHRyeToKKyAgICAgICAgaWYgdC5jb250ZXh0ZnVuYzoKKyAgICAgICAgICAgIHBhcmdzID0gdC5wb3AKKyAgICAgICAgICAgIHQucnAgPSBnZXRhdHRyKGNvbnRleHQucCwgdC5mdW5jbmFtZSkoKnBhcmdzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHNlbGYgPSB0LnBvcFswXQorICAgICAgICAgICAgcGFyZ3MgPSB0LnBvcFsxOl0KKyAgICAgICAgICAgIHQucnAgPSBnZXRhdHRyKHBzZWxmLCB0LmZ1bmNuYW1lKSgqcGFyZ3MpCisgICAgICAgIHQucGV4LmFwcGVuZChOb25lKQorICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBNZW1vcnlFcnJvcikgYXMgZToKKyAgICAgICAgdC5ycCA9IE5vbmUKKyAgICAgICAgdC5wZXguYXBwZW5kKGUuX19jbGFzc19fKQorCitkZWYgdmVyaWZ5KHQsIHN0YXQpOgorICAgICIiIiB0IGlzIHRoZSB0ZXN0c2V0LiBBdCB0aGlzIHN0YWdlIHRoZSB0ZXN0c2V0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgdHVwbGVzOgorCisgICAgICAgICAgICB0Lm9wOiBvcmlnaW5hbCBvcGVyYW5kcworICAgICAgICAgICAgdC5jb3A6IEMuRGVjaW1hbCBvcGVyYW5kcyAoc2VlIGNvbnZlcnQgZm9yIGRldGFpbHMpCisgICAgICAgICAgICB0LnBvcDogUC5EZWNpbWFsIG9wZXJhbmRzIChzZWUgY29udmVydCBmb3IgZGV0YWlscykKKyAgICAgICAgICAgIHQucmM6IEMgcmVzdWx0CisgICAgICAgICAgICB0LnJwOiBQeXRob24gcmVzdWx0CisKKyAgICAgICAgdC5yYyBhbmQgdC5ycCBjYW4gaGF2ZSB2YXJpb3VzIHR5cGVzLgorICAgICIiIgorICAgIHQuY3Jlc3VsdHMuYXBwZW5kKHN0cih0LnJjKSkKKyAgICB0LnByZXN1bHRzLmFwcGVuZChzdHIodC5ycCkpCisgICAgaWYgaXNpbnN0YW5jZSh0LnJjLCBDLkRlY2ltYWwpIGFuZCBpc2luc3RhbmNlKHQucnAsIFAuRGVjaW1hbCk6CisgICAgICAgICMgR2VuZXJhbCBjYXNlOiBib3RoIHJlc3VsdHMgYXJlIERlY2ltYWxzLgorICAgICAgICB0LmNyZXN1bHRzLmFwcGVuZCh0LnJjLnRvX2VuZ19zdHJpbmcoKSkKKyAgICAgICAgdC5jcmVzdWx0cy5hcHBlbmQodC5yYy5hc190dXBsZSgpKQorICAgICAgICB0LmNyZXN1bHRzLmFwcGVuZChzdHIodC5yYy5pbWFnKSkKKyAgICAgICAgdC5jcmVzdWx0cy5hcHBlbmQoc3RyKHQucmMucmVhbCkpCisgICAgICAgIHQucHJlc3VsdHMuYXBwZW5kKHQucnAudG9fZW5nX3N0cmluZygpKQorICAgICAgICB0LnByZXN1bHRzLmFwcGVuZCh0LnJwLmFzX3R1cGxlKCkpCisgICAgICAgIHQucHJlc3VsdHMuYXBwZW5kKHN0cih0LnJwLmltYWcpKQorICAgICAgICB0LnByZXN1bHRzLmFwcGVuZChzdHIodC5ycC5yZWFsKSkKKworICAgICAgICBuYyA9IHQucmMubnVtYmVyX2NsYXNzKCkubHN0cmlwKCcrLXMnKQorICAgICAgICBzdGF0W25jXSArPSAxCisgICAgZWxzZToKKyAgICAgICAgIyBSZXN1bHRzIGZyb20gZS5nLiBfX2Rpdm1vZF9fIGNhbiBvbmx5IGJlIGNvbXBhcmVkIGFzIHN0cmluZ3MuCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHQucmMsIHR1cGxlKSBhbmQgbm90IGlzaW5zdGFuY2UodC5ycCwgdHVwbGUpOgorICAgICAgICAgICAgaWYgdC5yYyAhPSB0LnJwOgorICAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHQpCisgICAgICAgIHN0YXRbdHlwZSh0LnJjKS5fX25hbWVfX10gKz0gMQorCisgICAgIyBUaGUgcmV0dXJuIHZhbHVlIGxpc3RzIG11c3QgYmUgZXF1YWwuCisgICAgaWYgdC5jcmVzdWx0cyAhPSB0LnByZXN1bHRzOgorICAgICAgICByYWlzZV9lcnJvcih0KQorICAgICMgVGhlIFB5dGhvbiBleGNlcHRpb24gbGlzdHMgKFR5cGVFcnJvciwgZXRjLikgbXVzdCBiZSBlcXVhbC4KKyAgICBpZiB0LmNleCAhPSB0LnBleDoKKyAgICAgICAgcmFpc2VfZXJyb3IodCkKKyAgICAjIFRoZSBjb250ZXh0IGZsYWdzIG11c3QgYmUgZXF1YWwuCisgICAgaWYgbm90IHQuY29udGV4dC5hc3NlcnRfZXFfc3RhdHVzKCk6CisgICAgICAgIHJhaXNlX2Vycm9yKHQpCisKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbiB0ZXN0IGxvb3BzCisjCisjICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdGZ1bmMpIC0+CisjCisjICAgICBMb29wIHRocm91Z2ggdmFyaW91cyBjb250ZXh0IHNldHRpbmdzLiBUaGUgZGVncmVlIG9mCisjICAgICB0aG9yb3VnaG5lc3MgaXMgZGV0ZXJtaW5lZCBieSAndGVzdHNwZWMnLiBGb3IgZWFjaAorIyAgICAgc2V0dGluZywgY2FsbCAndGVzdGZ1bmMnLiBHZW5lcmFsbHksICd0ZXN0ZnVuYycgaXRzZWxmCisjICAgICBhIGxvb3AsIGl0ZXJhdGluZyB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcyBnZW5lcmF0ZWQKKyMgICAgIGJ5IHRoZSBmdW5jdGlvbnMgaW4gcmFuZGRlYy5weS4KKyMKKyMgIHRlc3Rfbi1hcnkobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCkgLT4KKyMKKyMgICAgICd0ZXN0X3VuYXJ5JywgJ3Rlc3RfYmluYXJ5JyBhbmQgJ3Rlc3RfdGVybmFyeScgYXJlIHRoZQorIyAgICAgbWFpbiB0ZXN0IGZ1bmN0aW9ucyBwYXNzZWQgdG8gJ3Rlc3RfbWV0aG9kJy4gVGhleSBkZWFsCisjICAgICB3aXRoIHRoZSByZWd1bGFyIGNhc2VzLiBUaGUgdGhvcm91Z2huZXNzIG9mIHRlc3RpbmcgaXMKKyMgICAgIGRldGVybWluZWQgYnkgJ2l0cicuCisjCisjICAgICAncHJlYycsICdleHBfcmFuZ2UnIGFuZCAncmVzdHJpY3RlZF9yYW5nZScgYXJlIHBhc3NlZAorIyAgICAgdG8gdGhlIHRlc3QtZ2VuZXJhdGluZyBmdW5jdGlvbnMgYW5kIGxpbWl0IHRoZSBnZW5lcmF0ZWQKKyMgICAgIHZhbHVlcy4gSW4gc29tZSBjYXNlcywgZm9yIHJlYXNvbmFibGUgcnVuIHRpbWVzIGEKKyMgICAgIG1heGltdW0gZXhwb25lbnQgb2YgOTk5OSBpcyByZXF1aXJlZC4KKyMKKyMgICAgIFRoZSAnc3RhdCcgcGFyYW1ldGVyIGlzIHBhc3NlZCBkb3duIHRvIHRoZSAndmVyaWZ5JworIyAgICAgZnVuY3Rpb24sIHdoaWNoIHJlY29yZHMgc3RhdGlzdGljcyBmb3IgdGhlIHJlc3VsdCB2YWx1ZXMuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZGVmIGxvZyhmbXQsIGFyZ3M9Tm9uZSk6CisgICAgaWYgYXJnczoKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnJy5qb2luKChmbXQsICdcbicpKSAlIGFyZ3MpCisgICAgZWxzZToKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnJy5qb2luKChzdHIoZm10KSwgJ1xuJykpKQorICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCitkZWYgdGVzdF9tZXRob2QobWV0aG9kLCB0ZXN0c3BlY3MsIHRlc3RmdW5jKToKKyAgICAiIiJJdGVyYXRlIGEgdGVzdCBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgY29udGV4dCBzZXR0aW5ncy4iIiIKKyAgICBsb2coInRlc3RpbmcgJXMgLi4uIiwgbWV0aG9kKQorICAgIHN0YXQgPSBkZWZhdWx0ZGljdChpbnQpCisgICAgZm9yIHNwZWMgaW4gdGVzdHNwZWNzOgorICAgICAgICBpZiAnc2FtcGxlcycgaW4gc3BlYzoKKyAgICAgICAgICAgIHNwZWNbJ3ByZWMnXSA9IHNvcnRlZChyYW5kb20uc2FtcGxlKHJhbmdlKDEsIDEwMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY1snc2FtcGxlcyddKSkKKyAgICAgICAgZm9yIHByZWMgaW4gc3BlY1sncHJlYyddOgorICAgICAgICAgICAgY29udGV4dC5wcmVjID0gcHJlYworICAgICAgICAgICAgZm9yIGV4cHRzIGluIHNwZWNbJ2V4cHRzJ106CisgICAgICAgICAgICAgICAgZW1pbiwgZW1heCA9IGV4cHRzCisgICAgICAgICAgICAgICAgaWYgZW1pbiA9PSAncmFuZCc6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1pbiA9IHJhbmRvbS5yYW5kcmFuZ2UoLTEwMDAsIDApCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuRW1heCA9IHJhbmRvbS5yYW5kcmFuZ2UocHJlYywgMTAwMCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkVtaW4sIGNvbnRleHQuRW1heCA9IGVtaW4sIGVtYXgKKyAgICAgICAgICAgICAgICBpZiBwcmVjID4gY29udGV4dC5FbWF4OiBjb250aW51ZQorICAgICAgICAgICAgICAgIGxvZygiICAgIHByZWM6ICVkICBlbWluOiAlZCAgZW1heDogJWQiLAorICAgICAgICAgICAgICAgICAgICAoY29udGV4dC5wcmVjLCBjb250ZXh0LkVtaW4sIGNvbnRleHQuRW1heCkpCisgICAgICAgICAgICAgICAgcmVzdHJfcmFuZ2UgPSA5OTk5IGlmIGNvbnRleHQuRW1heCA+IDk5OTkgZWxzZSBjb250ZXh0LkVtYXgrOTkKKyAgICAgICAgICAgICAgICBmb3Igcm91bmRpbmcgaW4gc29ydGVkKFJvdW5kTWFwKToKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5yb3VuZGluZyA9IHJvdW5kaW5nCisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2FwaXRhbHMgPSByYW5kb20ucmFuZHJhbmdlKDIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNwZWNbJ2NsYW1wJ10gPT0gJ3JhbmQnOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jbGFtcCA9IHJhbmRvbS5yYW5kcmFuZ2UoMikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY2xhbXAgPSBzcGVjWydjbGFtcCddCisgICAgICAgICAgICAgICAgICAgIGV4cHJhbmdlID0gY29udGV4dC5jLkVtYXgKKyAgICAgICAgICAgICAgICAgICAgdGVzdGZ1bmMobWV0aG9kLCBwcmVjLCBleHByYW5nZSwgcmVzdHJfcmFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNbJ2l0ZXInXSwgc3RhdCkKKyAgICBsb2coIiAgICByZXN1bHQgdHlwZXM6ICVzIiAlIHNvcnRlZChbdCBmb3IgdCBpbiBzdGF0Lml0ZW1zKCldKSkKKworZGVmIHRlc3RfdW5hcnkobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSBhIHVuYXJ5IGZ1bmN0aW9uIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGlmIG1ldGhvZCBpbiBVbmFyeVJlc3RyaWN0ZWQ6CisgICAgICAgIGV4cF9yYW5nZSA9IHJlc3RyaWN0ZWRfcmFuZ2UKKyAgICBmb3Igb3AgaW4gYWxsX3VuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF9iaW5hcnkobWV0aG9kLCBwcmVjLCBleHBfcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSBhIGJpbmFyeSBmdW5jdGlvbiB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBpZiBtZXRob2QgaW4gQmluYXJ5UmVzdHJpY3RlZDoKKyAgICAgICAgZXhwX3JhbmdlID0gcmVzdHJpY3RlZF9yYW5nZQorICAgIGZvciBvcCBpbiBhbGxfYmluYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICAgICAgdCA9IFRlc3RTZXQobWV0aG9kLCBvcCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgIGV4Y2VwdCBWZXJpZnlFcnJvciBhcyBlcnI6CisgICAgICAgICAgICBsb2coZXJyKQorCitkZWYgdGVzdF90ZXJuYXJ5KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgYSB0ZXJuYXJ5IGZ1bmN0aW9uIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGlmIG1ldGhvZCBpbiBUZXJuYXJ5UmVzdHJpY3RlZDoKKyAgICAgICAgZXhwX3JhbmdlID0gcmVzdHJpY3RlZF9yYW5nZQorICAgIGZvciBvcCBpbiBhbGxfdGVybmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3RfZm9ybWF0KG1ldGhvZCwgcHJlYywgZXhwX3JhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgdGhlIF9fZm9ybWF0X18gbWV0aG9kIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLiIiIgorICAgIGZvciBvcCBpbiBhbGxfdW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICBmbXQxID0gcmFuZF9mb3JtYXQoY2hyKHJhbmRvbS5yYW5kcmFuZ2UoMzIsIDEyOCkpLCAnRWVHZ24nKQorICAgICAgICBmbXQyID0gcmFuZF9sb2NhbGUoKQorICAgICAgICBmb3IgZm10IGluIChmbXQxLCBmbXQyKToKKyAgICAgICAgICAgIGZtdG9wID0gKG9wWzBdLCBmbXQpCisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIGZtdG9wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQsIGNvbnZzdHI9RmFsc2UpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNhbGxmdW5jcyh0KQorICAgICAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICAgICAgZXhjZXB0IFZlcmlmeUVycm9yIGFzIGVycjoKKyAgICAgICAgICAgICAgICBsb2coZXJyKQorICAgIGZvciBvcCBpbiBhbGxfdW5hcnkocHJlYywgOTk5OSwgaXRyKToKKyAgICAgICAgZm10MSA9IHJhbmRfZm9ybWF0KGNocihyYW5kb20ucmFuZHJhbmdlKDMyLCAxMjgpKSwgJ0ZmJScpCisgICAgICAgIGZtdDIgPSByYW5kX2xvY2FsZSgpCisgICAgICAgIGZvciBmbXQgaW4gKGZtdDEsIGZtdDIpOgorICAgICAgICAgICAgZm10b3AgPSAob3BbMF0sIGZtdCkKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgZm10b3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCwgY29udnN0cj1GYWxzZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiB0ZXN0X3JvdW5kKG1ldGhvZCwgcHJlYywgZXhwcmFuZ2UsIHJlc3RyaWN0ZWRfcmFuZ2UsIGl0ciwgc3RhdCk6CisgICAgIiIiSXRlcmF0ZSB0aGUgX19yb3VuZF9fIG1ldGhvZCB0aHJvdWdoIG1hbnkgdGVzdCBjYXNlcy4iIiIKKyAgICBmb3Igb3AgaW4gYWxsX3VuYXJ5KHByZWMsIDk5OTksIGl0cik6CisgICAgICAgIG4gPSByYW5kb20ucmFuZHJhbmdlKDEwKQorICAgICAgICByb3VuZG9wID0gKG9wWzBdLCBuKQorICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIHJvdW5kb3ApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIG5vdCBjb252ZXJ0KHQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjYWxsZnVuY3ModCkKKyAgICAgICAgICAgIHZlcmlmeSh0LCBzdGF0KQorICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgbG9nKGVycikKKworZGVmIHRlc3RfZnJvbV9mbG9hdChtZXRob2QsIHByZWMsIGV4cHJhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgdGhlIF9fZmxvYXRfXyBtZXRob2QgdGhyb3VnaCBtYW55IHRlc3QgY2FzZXMuIiIiCisgICAgZm9yIHJvdW5kaW5nIGluIHNvcnRlZChSb3VuZE1hcCk6CisgICAgICAgIGNvbnRleHQucm91bmRpbmcgPSByb3VuZGluZworICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgICAgIGYgPSByYW5kZmxvYXQoKQorICAgICAgICAgICAgb3AgPSAoZiwpIGlmIG1ldGhvZC5zdGFydHN3aXRoKCJjb250ZXh0LiIpIGVsc2UgKCJzTmFOIiwgZikKKyAgICAgICAgICAgIHQgPSBUZXN0U2V0KG1ldGhvZCwgb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGxvZyhlcnIpCisKK2RlZiByYW5kY29udGV4dChleHByYW5nZSk6CisgICAgYyA9IENvbnRleHQoQy5Db250ZXh0KCksIFAuQ29udGV4dCgpKQorICAgIGMuRW1heCA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgZXhwcmFuZ2UrMSkKKyAgICBjLkVtaW4gPSByYW5kb20ucmFuZHJhbmdlKC1leHByYW5nZSwgMCkKKyAgICBtYXhwcmVjID0gMTAwIGlmIGMuRW1heCA+PSAxMDAgZWxzZSBjLkVtYXgKKyAgICBjLnByZWMgPSByYW5kb20ucmFuZHJhbmdlKDEsIG1heHByZWMrMSkKKyAgICBjLmNsYW1wID0gcmFuZG9tLnJhbmRyYW5nZSgyKQorICAgIGMuY2xlYXJfdHJhcHMoKQorICAgIHJldHVybiBjCisKK2RlZiB0ZXN0X3F1YW50aXplX2FwaShtZXRob2QsIHByZWMsIGV4cHJhbmdlLCByZXN0cmljdGVkX3JhbmdlLCBpdHIsIHN0YXQpOgorICAgICIiIkl0ZXJhdGUgdGhlICdxdWFudGl6ZScgbWV0aG9kIHRocm91Z2ggbWFueSB0ZXN0IGNhc2VzLCB1c2luZworICAgICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudHMuIiIiCisgICAgZm9yIG9wIGluIGFsbF9iaW5hcnkocHJlYywgcmVzdHJpY3RlZF9yYW5nZSwgaXRyKToKKyAgICAgICAgZm9yIHJvdW5kaW5nIGluIFJvdW5kTW9kZXM6CisgICAgICAgICAgICBjID0gcmFuZGNvbnRleHQoZXhwcmFuZ2UpCisgICAgICAgICAgICBxdWFudGl6ZW9wID0gKG9wWzBdLCBvcFsxXSwgcm91bmRpbmcsIGMpCisgICAgICAgICAgICB0ID0gVGVzdFNldChtZXRob2QsIHF1YW50aXplb3ApCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNvbnZlcnQodCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGZ1bmNzKHQpCisgICAgICAgICAgICAgICAgdmVyaWZ5KHQsIHN0YXQpCisgICAgICAgICAgICBleGNlcHQgVmVyaWZ5RXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgIGxvZyhlcnIpCisKKworZGVmIGNoZWNrX3VudGVzdGVkKGZ1bmNkaWN0LCBjX2NscywgcF9jbHMpOgorICAgICIiIkRldGVybWluZSB1bnRlc3RlZCwgQy1vbmx5IGFuZCBQeXRob24tb25seSBhdHRyaWJ1dGVzLgorICAgICAgIFVuY29tbWVudCBwcmludCBsaW5lcyBmb3IgZGVidWdnaW5nLiIiIgorICAgIGNfYXR0ciA9IHNldChkaXIoY19jbHMpKQorICAgIHBfYXR0ciA9IHNldChkaXIocF9jbHMpKQorICAgIGludGVyc2VjdCA9IGNfYXR0ciAmIHBfYXR0cgorCisgICAgZnVuY2RpY3RbJ2Nfb25seSddID0gdHVwbGUoc29ydGVkKGNfYXR0ci1pbnRlcnNlY3QpKQorICAgIGZ1bmNkaWN0WydwX29ubHknXSA9IHR1cGxlKHNvcnRlZChwX2F0dHItaW50ZXJzZWN0KSkKKworICAgIHRlc3RlZCA9IHNldCgpCisgICAgZm9yIGxzdCBpbiBmdW5jZGljdC52YWx1ZXMoKToKKyAgICAgICAgZm9yIHYgaW4gbHN0OgorICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgiY29udGV4dC4iLCAiIikgaWYgY19jbHMgPT0gQy5Db250ZXh0IGVsc2UgdgorICAgICAgICAgICAgdGVzdGVkLmFkZCh2KQorCisgICAgZnVuY2RpY3RbJ3VudGVzdGVkJ10gPSB0dXBsZShzb3J0ZWQoaW50ZXJzZWN0LXRlc3RlZCkpCisKKyAgICAjZm9yIGtleSBpbiAoJ3VudGVzdGVkJywgJ2Nfb25seScsICdwX29ubHknKToKKyAgICAjICAgIHMgPSAnQ29udGV4dCcgaWYgY19jbHMgPT0gQy5Db250ZXh0IGVsc2UgJ0RlY2ltYWwnCisgICAgIyAgICBwcmludCgiXG4lcyAlczpcbiVzIiAlIChzLCBrZXksIGZ1bmNkaWN0W2tleV0pKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisKKyAgICBpbXBvcnQgdGltZQorCisgICAgcmFuZHNlZWQgPSBpbnQodGltZS50aW1lKCkpCisgICAgcmFuZG9tLnNlZWQocmFuZHNlZWQpCisKKyAgICAjIFNldCB1cCB0aGUgdGVzdHNwZWNzIGxpc3QuIEEgdGVzdHNwZWMgaXMgc2ltcGx5IGEgZGljdGlvbmFyeQorICAgICMgdGhhdCBkZXRlcm1pbmVzIHRoZSBhbW91bnQgb2YgZGlmZmVyZW50IGNvbnRleHRzIHRoYXQgJ3Rlc3RfbWV0aG9kJworICAgICMgd2lsbCBnZW5lcmF0ZS4KKyAgICBiYXNlX2V4cHRzID0gWyhDLk1JTl9FTUlOLCBDLk1BWF9FTUFYKV0KKyAgICBpZiBDLk1BWF9FTUFYID09IDk5OTk5OTk5OTk5OTk5OTk5OToKKyAgICAgICAgYmFzZV9leHB0cy5hcHBlbmQoKC05OTk5OTk5OTksIDk5OTk5OTk5OSkpCisKKyAgICAjIEJhc2ljIGNvbnRleHRzLgorICAgIGJhc2UgPSB7CisgICAgICAgICdleHB0cyc6IGJhc2VfZXhwdHMsCisgICAgICAgICdwcmVjJzogW10sCisgICAgICAgICdjbGFtcCc6ICdyYW5kJywKKyAgICAgICAgJ2l0ZXInOiBOb25lLAorICAgICAgICAnc2FtcGxlcyc6IE5vbmUsCisgICAgfQorICAgICMgQ29udGV4dHMgd2l0aCBzbWFsbCB2YWx1ZXMgZm9yIHByZWMsIGVtaW4sIGVtYXguCisgICAgc21hbGwgPSB7CisgICAgICAgICdwcmVjJzogWzEsIDIsIDMsIDQsIDVdLAorICAgICAgICAnZXhwdHMnOiBbKC0xLCAxKSwgKC0yLCAyKSwgKC0zLCAzKSwgKC00LCA0KSwgKC01LCA1KV0sCisgICAgICAgICdjbGFtcCc6ICdyYW5kJywKKyAgICAgICAgJ2l0ZXInOiBOb25lCisgICAgfQorICAgICMgSUVFRSBpbnRlcmNoYW5nZSBmb3JtYXQuCisgICAgaWVlZSA9IFsKKyAgICAgICAgIyBERUNJTUFMMzIKKyAgICAgICAgeydwcmVjJzogWzddLCAnZXhwdHMnOiBbKC05NSwgOTYpXSwgJ2NsYW1wJzogMSwgJ2l0ZXInOiBOb25lfSwKKyAgICAgICAgIyBERUNJTUFMNjQKKyAgICAgICAgeydwcmVjJzogWzE2XSwgJ2V4cHRzJzogWygtMzgzLCAzODQpXSwgJ2NsYW1wJzogMSwgJ2l0ZXInOiBOb25lfSwKKyAgICAgICAgIyBERUNJTUFMMTI4CisgICAgICAgIHsncHJlYyc6IFszNF0sICdleHB0cyc6IFsoLTYxNDMsIDYxNDQpXSwgJ2NsYW1wJzogMSwgJ2l0ZXInOiBOb25lfQorICAgIF0KKworICAgIGlmICctLW1lZGl1bScgaW4gc3lzLmFyZ3Y6CisgICAgICAgIGJhc2VbJ2V4cHRzJ10uYXBwZW5kKCgncmFuZCcsICdyYW5kJykpCisgICAgICAgICMgNSByYW5kb20gcHJlY2lzaW9ucworICAgICAgICBiYXNlWydzYW1wbGVzJ10gPSA1CisgICAgICAgIHRlc3RzcGVjcyA9IFtzbWFsbF0gKyBpZWVlICsgW2Jhc2VdCisgICAgaWYgJy0tbG9uZycgaW4gc3lzLmFyZ3Y6CisgICAgICAgIGJhc2VbJ2V4cHRzJ10uYXBwZW5kKCgncmFuZCcsICdyYW5kJykpCisgICAgICAgICMgMTAgcmFuZG9tIHByZWNpc2lvbnMKKyAgICAgICAgYmFzZVsnc2FtcGxlcyddID0gMTAKKyAgICAgICAgdGVzdHNwZWNzID0gW3NtYWxsXSArIGllZWUgKyBbYmFzZV0KKyAgICBlbGlmICctLWFsbCcgaW4gc3lzLmFyZ3Y6CisgICAgICAgIGJhc2VbJ2V4cHRzJ10uYXBwZW5kKCgncmFuZCcsICdyYW5kJykpCisgICAgICAgICMgQWxsIHByZWNpc2lvbnMgaW4gWzEsIDEwMF0KKyAgICAgICAgYmFzZVsnc2FtcGxlcyddID0gMTAwCisgICAgICAgIHRlc3RzcGVjcyA9IFtzbWFsbF0gKyBpZWVlICsgW2Jhc2VdCisgICAgZWxzZTogIyAtLXNob3J0CisgICAgICAgIHJhbmRfaWVlZSA9IHJhbmRvbS5jaG9pY2UoaWVlZSkKKyAgICAgICAgYmFzZVsnaXRlciddID0gc21hbGxbJ2l0ZXInXSA9IHJhbmRfaWVlZVsnaXRlciddID0gMQorICAgICAgICAjIDEgcmFuZG9tIHByZWNpc2lvbiBhbmQgZXhwb25lbnQgcGFpcgorICAgICAgICBiYXNlWydzYW1wbGVzJ10gPSAxCisgICAgICAgIGJhc2VbJ2V4cHRzJ10gPSBbcmFuZG9tLmNob2ljZShiYXNlX2V4cHRzKV0KKyAgICAgICAgIyAxIHJhbmRvbSBwcmVjaXNpb24gYW5kIGV4cG9uZW50IHBhaXIKKyAgICAgICAgcHJlYyA9IHJhbmRvbS5yYW5kcmFuZ2UoMSwgNikKKyAgICAgICAgc21hbGxbJ3ByZWMnXSA9IFtwcmVjXQorICAgICAgICBzbWFsbFsnZXhwdHMnXSA9IFsoLXByZWMsIHByZWMpXQorICAgICAgICB0ZXN0c3BlY3MgPSBbc21hbGwsIHJhbmRfaWVlZSwgYmFzZV0KKworICAgIGNoZWNrX3VudGVzdGVkKEZ1bmN0aW9ucywgQy5EZWNpbWFsLCBQLkRlY2ltYWwpCisgICAgY2hlY2tfdW50ZXN0ZWQoQ29udGV4dEZ1bmN0aW9ucywgQy5Db250ZXh0LCBQLkNvbnRleHQpCisKKworICAgIGxvZygiXG5cblJhbmRvbSBzZWVkOiAlZFxuXG4iLCByYW5kc2VlZCkKKworICAgICMgRGVjaW1hbCBtZXRob2RzOgorICAgIGZvciBtZXRob2QgaW4gRnVuY3Rpb25zWyd1bmFyeSddICsgRnVuY3Rpb25zWyd1bmFyeV9jdHgnXSArIFwKKyAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uc1sndW5hcnlfcm5kX2N0eCddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF91bmFyeSkKKworICAgIGZvciBtZXRob2QgaW4gRnVuY3Rpb25zWydiaW5hcnknXSArIEZ1bmN0aW9uc1snYmluYXJ5X2N0eCddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF9iaW5hcnkpCisKKyAgICBmb3IgbWV0aG9kIGluIEZ1bmN0aW9uc1sndGVybmFyeSddICsgRnVuY3Rpb25zWyd0ZXJuYXJ5X2N0eCddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF90ZXJuYXJ5KQorCisgICAgdGVzdF9tZXRob2QoJ19fZm9ybWF0X18nLCB0ZXN0c3BlY3MsIHRlc3RfZm9ybWF0KQorICAgIHRlc3RfbWV0aG9kKCdfX3JvdW5kX18nLCB0ZXN0c3BlY3MsIHRlc3Rfcm91bmQpCisgICAgdGVzdF9tZXRob2QoJ2Zyb21fZmxvYXQnLCB0ZXN0c3BlY3MsIHRlc3RfZnJvbV9mbG9hdCkKKyAgICB0ZXN0X21ldGhvZCgncXVhbnRpemUnLCB0ZXN0c3BlY3MsIHRlc3RfcXVhbnRpemVfYXBpKQorCisgICAgIyBDb250ZXh0IG1ldGhvZHM6CisgICAgZm9yIG1ldGhvZCBpbiBDb250ZXh0RnVuY3Rpb25zWyd1bmFyeSddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF91bmFyeSkKKworICAgIGZvciBtZXRob2QgaW4gQ29udGV4dEZ1bmN0aW9uc1snYmluYXJ5J106CisgICAgICAgIHRlc3RfbWV0aG9kKG1ldGhvZCwgdGVzdHNwZWNzLCB0ZXN0X2JpbmFyeSkKKworICAgIGZvciBtZXRob2QgaW4gQ29udGV4dEZ1bmN0aW9uc1sndGVybmFyeSddOgorICAgICAgICB0ZXN0X21ldGhvZChtZXRob2QsIHRlc3RzcGVjcywgdGVzdF90ZXJuYXJ5KQorCisgICAgdGVzdF9tZXRob2QoJ2NvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCcsIHRlc3RzcGVjcywgdGVzdF9mcm9tX2Zsb2F0KQorCisKKyAgICBzeXMuZXhpdChFWElUX1NUQVRVUykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZm9ybWF0aGVscGVyLnB5IGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9mb3JtYXRoZWxwZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRhMmIzNwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZm9ybWF0aGVscGVyLnB5CkBAIC0wLDAgKzEsMzQ0IEBACisjCisjIENvcHlyaWdodCAoYykgMjAwOC0yMDEyIFN0ZWZhbiBLcmFoLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjCisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMKKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORAorIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyMgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyMgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyMgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisjIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisjIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyMgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorIyBTVUNIIERBTUFHRS4KKyMKKworCisjIEdlbmVyYXRlIFBFUC0zMTAxIGZvcm1hdCBzdHJpbmdzLgorCisKK2ltcG9ydCBvcywgc3lzLCBsb2NhbGUsIHJhbmRvbQoraW1wb3J0IHBsYXRmb3JtLCBzdWJwcm9jZXNzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgaW1wb3J0X2ZyZXNoX21vZHVsZQorZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQorCitDID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnZGVjaW1hbCcsIGZyZXNoPVsnX2RlY2ltYWwnXSkKK1AgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdkZWNpbWFsJywgYmxvY2tlZD1bJ19kZWNpbWFsJ10pCisKKword2luZG93c19sYW5nX3N0cmluZ3MgPSBbCisgICJjaGluZXNlIiwgImNoaW5lc2Utc2ltcGxpZmllZCIsICJjaGluZXNlLXRyYWRpdGlvbmFsIiwgImN6ZWNoIiwgImRhbmlzaCIsCisgICJkdXRjaCIsICJiZWxnaWFuIiwgImVuZ2xpc2giLCAiYXVzdHJhbGlhbiIsICJjYW5hZGlhbiIsICJlbmdsaXNoLW56IiwKKyAgImVuZ2xpc2gtdWsiLCAiZW5nbGlzaC11cyIsICJmaW5uaXNoIiwgImZyZW5jaCIsICJmcmVuY2gtYmVsZ2lhbiIsCisgICJmcmVuY2gtY2FuYWRpYW4iLCAiZnJlbmNoLXN3aXNzIiwgImdlcm1hbiIsICJnZXJtYW4tYXVzdHJpYW4iLAorICAiZ2VybWFuLXN3aXNzIiwgImdyZWVrIiwgImh1bmdhcmlhbiIsICJpY2VsYW5kaWMiLCAiaXRhbGlhbiIsICJpdGFsaWFuLXN3aXNzIiwKKyAgImphcGFuZXNlIiwgImtvcmVhbiIsICJub3J3ZWdpYW4iLCAibm9yd2VnaWFuLWJva21hbCIsICJub3J3ZWdpYW4tbnlub3JzayIsCisgICJwb2xpc2giLCAicG9ydHVndWVzZSIsICJwb3J0dWd1ZXNlLWJyYXppbCIsICJydXNzaWFuIiwgInNsb3ZhayIsICJzcGFuaXNoIiwKKyAgInNwYW5pc2gtbWV4aWNhbiIsICJzcGFuaXNoLW1vZGVybiIsICJzd2VkaXNoIiwgInR1cmtpc2giLAorXQorCitwcmVmZXJyZWRfZW5jb2RpbmcgPSB7CisgICdjc19DWic6ICdJU084ODU5LTInLAorICAnY3NfQ1ouaXNvODg1OTInOiAnSVNPODg1OS0yJywKKyAgJ2N6ZWNoJzogJ0lTTzg4NTktMicsCisgICdlZXN0aSc6ICdJU084ODU5LTEnLAorICAnZXN0b25pYW4nOiAnSVNPODg1OS0xJywKKyAgJ2V0X0VFJzogJ0lTTzg4NTktMTUnLAorICAnZXRfRUUuSVNPLTg4NTktMTUnOiAnSVNPODg1OS0xNScsCisgICdldF9FRS5pc284ODU5MTUnOiAnSVNPODg1OS0xNScsCisgICdldF9FRS5pc284ODU5MSc6ICdJU084ODU5LTEnLAorICAnZmlfRkkuaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ2ZpX0ZJJzogJ0lTTzg4NTktMTUnLAorICAnZmlfRklAZXVybyc6ICdJU084ODU5LTE1JywKKyAgJ2ZpX0ZJLmlzbzg4NTkxNUBldXJvJzogJ0lTTzg4NTktMTUnLAorICAnZmlubmlzaCc6ICdJU084ODU5LTEnLAorICAnbHZfTFYnOiAnSVNPODg1OS0xMycsCisgICdsdl9MVi5pc284ODU5MTMnOiAnSVNPODg1OS0xMycsCisgICduYl9OTyc6ICdJU084ODU5LTEnLAorICAnbmJfTk8uaXNvODg1OTEnOiAnSVNPODg1OS0xJywKKyAgJ2Jva21hbCc6ICdJU084ODU5LTEnLAorICAnbm5fTk8nOiAnSVNPODg1OS0xJywKKyAgJ25uX05PLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdub19OTyc6ICdJU084ODU5LTEnLAorICAnbm9yd2VnaWFuJzogJ0lTTzg4NTktMScsCisgICdueW5vcnNrJzogJ0lTTzg4NTktMScsCisgICdydV9SVSc6ICdJU084ODU5LTUnLAorICAncnVfUlUuaXNvODg1OTUnOiAnSVNPODg1OS01JywKKyAgJ3J1c3NpYW4nOiAnSVNPODg1OS01JywKKyAgJ3J1X1JVLktPSTgtUic6ICdLT0k4LVInLAorICAncnVfUlUua29pOHInOiAnS09JOC1SJywKKyAgJ3J1X1JVLkNQMTI1MSc6ICdDUDEyNTEnLAorICAncnVfUlUuY3AxMjUxJzogJ0NQMTI1MScsCisgICdza19TSyc6ICdJU084ODU5LTInLAorICAnc2tfU0suaXNvODg1OTInOiAnSVNPODg1OS0yJywKKyAgJ3Nsb3Zhayc6ICdJU084ODU5LTInLAorICAnc3ZfRkknOiAnSVNPODg1OS0xJywKKyAgJ3N2X0ZJLmlzbzg4NTkxJzogJ0lTTzg4NTktMScsCisgICdzdl9GSUBldXJvJzogJ0lTTzg4NTktMTUnLAorICAnc3ZfRkkuaXNvODg1OTE1QGV1cm8nOiAnSVNPODg1OS0xNScsCisgICd1a19VQSc6ICdLT0k4LVUnLAorICAndWtfVUEua29pOHUnOiAnS09JOC1VJworfQorCitpbnRlZ2VycyA9IFsKKyAgIiIsCisgICIxIiwKKyAgIjEyIiwKKyAgIjEyMyIsCisgICIxMjM0IiwKKyAgIjEyMzQ1IiwKKyAgIjEyMzQ1NiIsCisgICIxMjM0NTY3IiwKKyAgIjEyMzQ1Njc4IiwKKyAgIjEyMzQ1Njc4OSIsCisgICIxMjM0NTY3ODkwIiwKKyAgIjEyMzQ1Njc4OTAxIiwKKyAgIjEyMzQ1Njc4OTAxMiIsCisgICIxMjM0NTY3ODkwMTIzIiwKKyAgIjEyMzQ1Njc4OTAxMjM0IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NSIsCisgICIxMjM0NTY3ODkwMTIzNDU2IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3OCIsCisgICIxMjM0NTY3ODkwMTIzNDU2Nzg5IiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwIiwKKyAgIjEyMzQ1Njc4OTAxMjM0NTY3ODkwMSIsCisgICIxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyIiwKK10KKworbnVtYmVycyA9IFsKKyAgIjAiLCAiLTAiLCAiKzAiLAorICAiMC4wIiwgIi0wLjAiLCAiKzAuMCIsCisgICIwZTAiLCAiLTBlMCIsICIrMGUwIiwKKyAgIi4wIiwgIi0uMCIsCisgICIuMSIsICItLjEiLAorICAiMS4xIiwgIi0xLjEiLAorICAiMWUxIiwgIi0xZTEiCitdCisKKyMgR2V0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBsb2NhbGVzLgoraWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gJ1dpbmRvd3MnOgorICAgIGxvY2FsZV9saXN0ID0gd2luZG93c19sYW5nX3N0cmluZ3MKK2Vsc2U6CisgICAgbG9jYWxlX2xpc3QgPSBbJ0MnXQorICAgIGlmIG9zLnBhdGguaXNmaWxlKCIvdmFyL2xpYi9sb2NhbGVzL3N1cHBvcnRlZC5kL2xvY2FsIik6CisgICAgICAgICMgT24gVWJ1bnR1LCBgbG9jYWxlIC1hYCBnaXZlcyB0aGUgd3JvbmcgY2FzZSBmb3Igc29tZSBsb2NhbGVzLAorICAgICAgICAjIHNvIHdlIGdldCB0aGUgY29ycmVjdCBuYW1lcyBkaXJlY3RseToKKyAgICAgICAgd2l0aCBvcGVuKCIvdmFyL2xpYi9sb2NhbGVzL3N1cHBvcnRlZC5kL2xvY2FsIikgYXMgZjoKKyAgICAgICAgICAgIGxvY2FsZV9saXN0ID0gW2xvYy5zcGxpdCgpWzBdIGZvciBsb2MgaW4gZi5yZWFkbGluZXMoKSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgbG9jLnN0YXJ0c3dpdGgoJyMnKV0KKyAgICBlbGlmIGZpbmRfZXhlY3V0YWJsZSgnbG9jYWxlJyk6CisgICAgICAgIGxvY2FsZV9saXN0ID0gc3VicHJvY2Vzcy5Qb3BlbihbImxvY2FsZSIsICItYSJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKS5jb21tdW5pY2F0ZSgpWzBdCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvY2FsZV9saXN0ID0gbG9jYWxlX2xpc3QuZGVjb2RlKCkKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICMgU29tZSBkaXN0cmlidXRpb25zIGluc2lzdCBvbiB1c2luZyBsYXRpbi0xIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICMgaW4gdGhlaXIgbG9jYWxlIG5hbWVzLgorICAgICAgICAgICAgbG9jYWxlX2xpc3QgPSBsb2NhbGVfbGlzdC5kZWNvZGUoJ2xhdGluLTEnKQorICAgICAgICBsb2NhbGVfbGlzdCA9IGxvY2FsZV9saXN0LnNwbGl0KCdcbicpCit0cnk6CisgICAgbG9jYWxlX2xpc3QucmVtb3ZlKCcnKQorZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgcGFzcworCisjIERlYmlhbgoraWYgb3MucGF0aC5pc2ZpbGUoIi9ldGMvbG9jYWxlLmFsaWFzIik6CisgICAgd2l0aCBvcGVuKCIvZXRjL2xvY2FsZS5hbGlhcyIpIGFzIGY6CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbGluZSA9PSAiIjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHggPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgICAgIGlmIGxlbih4KSA9PSAyOgorICAgICAgICAgICAgICAgIGlmIHhbMF0gaW4gbG9jYWxlX2xpc3Q6CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9saXN0LnJlbW92ZSh4WzBdKQorCisjIEZyZWVCU0QKK2lmIHBsYXRmb3JtLnN5c3RlbSgpID09ICdGcmVlQlNEJzoKKyAgICAjIGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL3F1ZXJ5LXByLmNnaT9wcj0xNDIxNzMKKyAgICAjIGVuX0dCLlVTLUFTQ0lJIGhhcyAxNjMgYXMgdGhlIGN1cnJlbmN5IHN5bWJvbC4KKyAgICBmb3IgbG9jIGluIFsnaXRfQ0guSVNPODg1OS0xJywgJ2l0X0NILklTTzg4NTktMTUnLCAnaXRfQ0guVVRGLTgnLAorICAgICAgICAgICAgICAgICdpdF9JVC5JU084ODU5LTEnLCAnaXRfSVQuSVNPODg1OS0xNScsICdpdF9JVC5VVEYtOCcsCisgICAgICAgICAgICAgICAgJ3NsX1NJLklTTzg4NTktMicsICdzbF9TSS5VVEYtOCcsCisgICAgICAgICAgICAgICAgJ2VuX0dCLlVTLUFTQ0lJJ106CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxvY2FsZV9saXN0LnJlbW92ZShsb2MpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworCisjIFByaW50IGEgdGVzdGNhc2UgaW4gdGhlIGZvcm1hdCBvZiB0aGUgSUJNIHRlc3RzIChmb3IgcnVudGVzdC5jKToKK2RlZiBnZXRfcHJlZmVycmVkX2VuY29kaW5nKCk6CisgICAgbG9jID0gbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUpCisgICAgaWYgbG9jIGluIHByZWZlcnJlZF9lbmNvZGluZzoKKyAgICAgICAgcmV0dXJuIHByZWZlcnJlZF9lbmNvZGluZ1tsb2NdCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpCisKK2RlZiBwcmludGl0KHRlc3RubywgcywgZm10LCBlbmNvZGluZz1Ob25lKToKKyAgICBpZiBub3QgZW5jb2Rpbmc6CisgICAgICAgIGVuY29kaW5nID0gZ2V0X3ByZWZlcnJlZF9lbmNvZGluZygpCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBmb3JtYXQoUC5EZWNpbWFsKHMpLCBmbXQpCisgICAgICAgIGZtdCA9IHN0cihmbXQuZW5jb2RlKGVuY29kaW5nKSlbMjotMV0KKyAgICAgICAgcmVzdWx0ID0gc3RyKHJlc3VsdC5lbmNvZGUoZW5jb2RpbmcpKVsyOi0xXQorICAgICAgICBpZiAiJyIgaW4gcmVzdWx0OgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgieGZtdCVkICBmb3JtYXQgICVzICAnJXMnICAtPiAgXCIlc1wiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHRlc3RubywgcywgZm10LCByZXN1bHQpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgieGZtdCVkICBmb3JtYXQgICVzICAnJXMnICAtPiAgJyVzJ1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh0ZXN0bm8sIHMsIGZtdCwgcmVzdWx0KSkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGVycjoKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiJXMgICVzICAlc1xuIiAlIChlcnIsIHMsIGZtdCkpCisKKworIyBDaGVjayBpZiBhbiBpbnRlZ2VyIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYSB2YWxpZCBmaWxsIGNoYXJhY3Rlci4KK2RlZiBjaGVja19maWxsY2hhcihpKToKKyAgICB0cnk6CisgICAgICAgIGMgPSBjaHIoaSkKKyAgICAgICAgYy5lbmNvZGUoJ3V0Zi04JykuZGVjb2RlKCkKKyAgICAgICAgZm9ybWF0KFAuRGVjaW1hbCgwKSwgYyArICc8MTlnJykKKyAgICAgICAgaWYgYyBpbiAoIiciLCAnIicsICdcXCcpOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIGMKKyAgICBleGNlcHQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyMgR2VuZXJhdGUgYWxsIHVuaWNvZGUgY2hhcmFjdGVycyB0aGF0IGFyZSBhY2NlcHRlZCBhcworIyBmaWxsIGNoYXJhY3RlcnMgYnkgZGVjaW1hbC5weS4KK2RlZiBhbGxfZmlsbGNoYXJzKCk6CisgICAgZm9yIGkgaW4gcmFuZ2UoMzIsIDB4MTEwMDAyKToKKyAgICAgICAgYyA9IGNoZWNrX2ZpbGxjaGFyKGkpCisgICAgICAgIGlmIGM6IHlpZWxkIGMKKworIyBSZXR1cm4gcmFuZG9tIGZpbGwgY2hhcmFjdGVyLgorZGVmIHJhbmRfZmlsbGNoYXIoKToKKyAgICB3aGlsZSAxOgorICAgICAgICBpID0gcmFuZG9tLnJhbmRyYW5nZSgzMiwgMHgxMTAwMDIpCisgICAgICAgIGMgPSBjaGVja19maWxsY2hhcihpKQorICAgICAgICBpZiBjOiByZXR1cm4gYworCisjIEdlbmVyYXRlIHJhbmRvbSBmb3JtYXQgc3RyaW5ncworIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIHJhbmRfZm9ybWF0KGZpbGwsIHR5cGVzcGVjPSdFZUdnRmZuJScpOgorICAgIGFjdGl2ZSA9IHNvcnRlZChyYW5kb20uc2FtcGxlKHJhbmdlKDcpLCByYW5kb20ucmFuZHJhbmdlKDgpKSkKKyAgICBoYXZlX2FsaWduID0gMAorICAgIHMgPSAnJworICAgIGZvciBlbGVtIGluIGFjdGl2ZToKKyAgICAgICAgaWYgZWxlbSA9PSAwOiAjIGZpbGwrYWxpZ24KKyAgICAgICAgICAgIHMgKz0gZmlsbAorICAgICAgICAgICAgcyArPSByYW5kb20uY2hvaWNlKCc8Pj1eJykKKyAgICAgICAgICAgIGhhdmVfYWxpZ24gPSAxCisgICAgICAgIGVsaWYgZWxlbSA9PSAxOiAjIHNpZ24KKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnKy0gJykKKyAgICAgICAgZWxpZiBlbGVtID09IDIgYW5kIG5vdCBoYXZlX2FsaWduOiAjIHplcm9wYWQKKyAgICAgICAgICAgIHMgKz0gJzAnCisgICAgICAgIGVsaWYgZWxlbSA9PSAzOiAjIHdpZHRoCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEsIDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSA0OiAjIHRob3VzYW5kcyBzZXBhcmF0b3IKKyAgICAgICAgICAgIHMgKz0gJywnCisgICAgICAgIGVsaWYgZWxlbSA9PSA1OiAjIHByZWMKKyAgICAgICAgICAgIHMgKz0gJy4nCisgICAgICAgICAgICBzICs9IHN0cihyYW5kb20ucmFuZHJhbmdlKDEwMCkpCisgICAgICAgIGVsaWYgZWxlbSA9PSA2OgorICAgICAgICAgICAgaWYgNCBpbiBhY3RpdmU6IGMgPSB0eXBlc3BlYy5yZXBsYWNlKCduJywgJycpCisgICAgICAgICAgICBlbHNlOiBjID0gdHlwZXNwZWMKKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZShjKQorICAgIHJldHVybiBzCisKKyMgUGFydGlhbGx5IGJydXRlIGZvcmNlIGFsbCBwb3NzaWJsZSBmb3JtYXQgc3RyaW5ncyBjb250YWluaW5nIGEgdGhvdXNhbmRzCisjIHNlcGFyYXRvci4gRmFsbCBiYWNrIHRvIHJhbmRvbSB3aGVyZSB0aGUgcnVudGltZSB3b3VsZCBiZWNvbWUgZXhjZXNzaXZlLgorIyBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXQorZGVmIGFsbF9mb3JtYXRfc2VwKCk6CisgICAgZm9yIGFsaWduIGluICgnJywgJzwnLCAnPicsICc9JywgJ14nKToKKyAgICAgICAgZm9yIGZpbGwgaW4gKCcnLCAneCcpOgorICAgICAgICAgICAgaWYgYWxpZ24gPT0gJyc6IGZpbGwgPSAnJworICAgICAgICAgICAgZm9yIHNpZ24gaW4gKCcnLCAnKycsICctJywgJyAnKToKKyAgICAgICAgICAgICAgICBmb3IgemVyb3BhZCBpbiAoJycsICcwJyk6CisgICAgICAgICAgICAgICAgICAgIGlmIGFsaWduICE9ICcnOiB6ZXJvcGFkID0gJycKKyAgICAgICAgICAgICAgICAgICAgZm9yIHdpZHRoIGluIFsnJ10rW3N0cih5KSBmb3IgeSBpbiByYW5nZSgxLCAxNSldK1snMTAxJ106CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcHJlYyBpbiBbJyddK1snLicrc3RyKHkpIGZvciB5IGluIHJhbmdlKDE1KV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmb3IgdHlwZSBpbiAoJycsICdFJywgJ2UnLCAnRycsICdnJywgJ0YnLCAnZicsICclJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHJhbmRvbS5jaG9pY2UoKCcnLCAnRScsICdlJywgJ0cnLCAnZycsICdGJywgJ2YnLCAnJScpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkICcnLmpvaW4oKGZpbGwsIGFsaWduLCBzaWduLCB6ZXJvcGFkLCB3aWR0aCwgJywnLCBwcmVjLCB0eXBlKSkKKworIyBQYXJ0aWFsbHkgYnJ1dGUgZm9yY2UgYWxsIHBvc3NpYmxlIGZvcm1hdCBzdHJpbmdzIHdpdGggYW4gJ24nIHNwZWNpZmllci4KKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiBhbGxfZm9ybWF0X2xvYygpOgorICAgIGZvciBhbGlnbiBpbiAoJycsICc8JywgJz4nLCAnPScsICdeJyk6CisgICAgICAgIGZvciBmaWxsIGluICgnJywgJ3gnKToKKyAgICAgICAgICAgIGlmIGFsaWduID09ICcnOiBmaWxsID0gJycKKyAgICAgICAgICAgIGZvciBzaWduIGluICgnJywgJysnLCAnLScsICcgJyk6CisgICAgICAgICAgICAgICAgZm9yIHplcm9wYWQgaW4gKCcnLCAnMCcpOgorICAgICAgICAgICAgICAgICAgICBpZiBhbGlnbiAhPSAnJzogemVyb3BhZCA9ICcnCisgICAgICAgICAgICAgICAgICAgIGZvciB3aWR0aCBpbiBbJyddK1tzdHIoeSkgZm9yIHkgaW4gcmFuZ2UoMSwgMjApXStbJzEwMSddOgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHByZWMgaW4gWycnXStbJy4nK3N0cih5KSBmb3IgeSBpbiByYW5nZSgxLCAyMCldOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkICcnLmpvaW4oKGZpbGwsIGFsaWduLCBzaWduLCB6ZXJvcGFkLCB3aWR0aCwgcHJlYywgJ24nKSkKKworIyBHZW5lcmF0ZSByYW5kb20gZm9ybWF0IHN0cmluZ3Mgd2l0aCBhIHVuaWNvZGUgZmlsbCBjaGFyYWN0ZXIKKyMgW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV0KK2RlZiByYW5kZmlsbChmaWxsKToKKyAgICBhY3RpdmUgPSBzb3J0ZWQocmFuZG9tLnNhbXBsZShyYW5nZSg1KSwgcmFuZG9tLnJhbmRyYW5nZSg2KSkpCisgICAgcyA9ICcnCisgICAgcyArPSBzdHIoZmlsbCkKKyAgICBzICs9IHJhbmRvbS5jaG9pY2UoJzw+PV4nKQorICAgIGZvciBlbGVtIGluIGFjdGl2ZToKKyAgICAgICAgaWYgZWxlbSA9PSAwOiAjIHNpZ24KKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnKy0gJykKKyAgICAgICAgZWxpZiBlbGVtID09IDE6ICMgd2lkdGgKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMSwgMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDI6ICMgdGhvdXNhbmRzIHNlcGFyYXRvcgorICAgICAgICAgICAgcyArPSAnLCcKKyAgICAgICAgZWxpZiBlbGVtID09IDM6ICMgcHJlYworICAgICAgICAgICAgcyArPSAnLicKKyAgICAgICAgICAgIHMgKz0gc3RyKHJhbmRvbS5yYW5kcmFuZ2UoMTAwKSkKKyAgICAgICAgZWxpZiBlbGVtID09IDQ6CisgICAgICAgICAgICBpZiAyIGluIGFjdGl2ZTogYyA9ICdFZUdnRmYlJworICAgICAgICAgICAgZWxzZTogYyA9ICdFZUdnRmZuJScKKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZShjKQorICAgIHJldHVybiBzCisKKyMgR2VuZXJhdGUgcmFuZG9tIGZvcm1hdCBzdHJpbmdzIHdpdGggcmFuZG9tIGxvY2FsZSBzZXR0aW5nCisjIFtbZmlsbF1hbGlnbl1bc2lnbl1bI11bMF1bd2lkdGhdWyxdWy5wcmVjaXNpb25dW3R5cGVdCitkZWYgcmFuZF9sb2NhbGUoKToKKyAgICB0cnk6CisgICAgICAgIGxvYyA9IHJhbmRvbS5jaG9pY2UobG9jYWxlX2xpc3QpCisgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUobG9jYWxlLkxDX0FMTCwgbG9jKQorICAgIGV4Y2VwdCBsb2NhbGUuRXJyb3IgYXMgZXJyOgorICAgICAgICBwYXNzCisgICAgYWN0aXZlID0gc29ydGVkKHJhbmRvbS5zYW1wbGUocmFuZ2UoNSksIHJhbmRvbS5yYW5kcmFuZ2UoNikpKQorICAgIHMgPSAnJworICAgIGhhdmVfYWxpZ24gPSAwCisgICAgZm9yIGVsZW0gaW4gYWN0aXZlOgorICAgICAgICBpZiBlbGVtID09IDA6ICMgZmlsbCthbGlnbgorICAgICAgICAgICAgcyArPSBjaHIocmFuZG9tLnJhbmRyYW5nZSgzMiwgMTI4KSkKKyAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZSgnPD49XicpCisgICAgICAgICAgICBoYXZlX2FsaWduID0gMQorICAgICAgICBlbGlmIGVsZW0gPT0gMTogIyBzaWduCisgICAgICAgICAgICBzICs9IHJhbmRvbS5jaG9pY2UoJystICcpCisgICAgICAgIGVsaWYgZWxlbSA9PSAyIGFuZCBub3QgaGF2ZV9hbGlnbjogIyB6ZXJvcGFkCisgICAgICAgICAgICBzICs9ICcwJworICAgICAgICBlbGlmIGVsZW0gPT0gMzogIyB3aWR0aAorICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxLCAxMDApKQorICAgICAgICBlbGlmIGVsZW0gPT0gNDogIyBwcmVjCisgICAgICAgICAgICBzICs9ICcuJworICAgICAgICAgICAgcyArPSBzdHIocmFuZG9tLnJhbmRyYW5nZSgxMDApKQorICAgIHMgKz0gJ24nCisgICAgcmV0dXJuIHMKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGRlYy5weSBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcmFuZGRlYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDg1OGJmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZGVjLnB5CkBAIC0wLDAgKzEsNTU5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKworIworIyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMiBTdGVmYW4gS3JhaC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisjIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisjIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisjIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisjIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorIyBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorIyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisjIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyMgU1VDSCBEQU1BR0UuCisjCisKKworIyBHZW5lcmF0ZSB0ZXN0IGNhc2VzIGZvciBkZWNjaGVjay5weS4KKworCisjCisjIEdyYW1tYXIgZnJvbSBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvZGFjb252cy5odG1sCisjCisjIHNpZ24gICAgICAgICAgIDo6PSAgJysnIHwgJy0nCisjIGRpZ2l0ICAgICAgICAgIDo6PSAgJzAnIHwgJzEnIHwgJzInIHwgJzMnIHwgJzQnIHwgJzUnIHwgJzYnIHwgJzcnIHwKKyMgICAgICAgICAgICAgICAgICAgICAnOCcgfCAnOScKKyMgaW5kaWNhdG9yICAgICAgOjo9ICAnZScgfCAnRScKKyMgZGlnaXRzICAgICAgICAgOjo9ICBkaWdpdCBbZGlnaXRdLi4uCisjIGRlY2ltYWwtcGFydCAgIDo6PSAgZGlnaXRzICcuJyBbZGlnaXRzXSB8IFsnLiddIGRpZ2l0cworIyBleHBvbmVudC1wYXJ0ICA6Oj0gIGluZGljYXRvciBbc2lnbl0gZGlnaXRzCisjIGluZmluaXR5ICAgICAgIDo6PSAgJ0luZmluaXR5JyB8ICdJbmYnCisjIG5hbiAgICAgICAgICAgIDo6PSAgJ05hTicgW2RpZ2l0c10gfCAnc05hTicgW2RpZ2l0c10KKyMgbnVtZXJpYy12YWx1ZSAgOjo9ICBkZWNpbWFsLXBhcnQgW2V4cG9uZW50LXBhcnRdIHwgaW5maW5pdHkKKyMgbnVtZXJpYy1zdHJpbmcgOjo9ICBbc2lnbl0gbnVtZXJpYy12YWx1ZSB8IFtzaWduXSBuYW4KKyMKKworCitmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzYW1wbGUKK2Zyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgorZnJvbSByYW5kZmxvYXQgaW1wb3J0IHVuX3JhbmRmbG9hdCwgYmluX3JhbmRmbG9hdCwgdGVybl9yYW5kZmxvYXQKKworCitkZWYgc2lnbigpOgorICAgIGlmIHJhbmRyYW5nZSgyKToKKyAgICAgICAgaWYgcmFuZHJhbmdlKDIpOiByZXR1cm4gJysnCisgICAgICAgIHJldHVybiAnJworICAgIHJldHVybiAnLScKKworZGVmIGluZGljYXRvcigpOgorICAgIHJldHVybiAiZUUiW3JhbmRyYW5nZSgyKV0KKworZGVmIGRpZ2l0cyhtYXhwcmVjKToKKyAgICBpZiBtYXhwcmVjID09IDA6IHJldHVybiAnJworICAgIHJldHVybiBzdHIocmFuZHJhbmdlKDEwKiptYXhwcmVjKSkKKworZGVmIGRvdCgpOgorICAgIGlmIHJhbmRyYW5nZSgyKTogcmV0dXJuICcuJworICAgIHJldHVybiAnJworCitkZWYgZGVjaW1hbF9wYXJ0KG1heHByZWMpOgorICAgIGlmIHJhbmRyYW5nZSgxMDApID4gNjA6ICMgaW50ZWdlcnMKKyAgICAgICAgcmV0dXJuIGRpZ2l0cyhtYXhwcmVjKQorICAgIGlmIHJhbmRyYW5nZSgyKToKKyAgICAgICAgaW50bGVuID0gcmFuZHJhbmdlKDEsIG1heHByZWMrMSkKKyAgICAgICAgZnJhY2xlbiA9IG1heHByZWMtaW50bGVuCisgICAgICAgIGludHBhcnQgPSBkaWdpdHMoaW50bGVuKQorICAgICAgICBmcmFjcGFydCA9IGRpZ2l0cyhmcmFjbGVuKQorICAgICAgICByZXR1cm4gJycuam9pbigoaW50cGFydCwgJy4nLCBmcmFjcGFydCkpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKGRvdCgpLCBkaWdpdHMobWF4cHJlYykpKQorCitkZWYgZXhwZGlnaXRzKG1heGV4cCk6CisgICAgcmV0dXJuIHN0cihyYW5kcmFuZ2UobWF4ZXhwKSkKKworZGVmIGV4cG9uZW50X3BhcnQobWF4ZXhwKToKKyAgICByZXR1cm4gJycuam9pbigoaW5kaWNhdG9yKCksIHNpZ24oKSwgZXhwZGlnaXRzKG1heGV4cCkpKQorCitkZWYgaW5maW5pdHkoKToKKyAgICBpZiByYW5kcmFuZ2UoMik6IHJldHVybiAnSW5maW5pdHknCisgICAgcmV0dXJuICdJbmYnCisKK2RlZiBuYW4oKToKKyAgICBkID0gJycKKyAgICBpZiByYW5kcmFuZ2UoMik6CisgICAgICAgIGQgPSBkaWdpdHMocmFuZHJhbmdlKDk5KSkKKyAgICBpZiByYW5kcmFuZ2UoMik6CisgICAgICAgIHJldHVybiAnJy5qb2luKCgnTmFOJywgZCkpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oKCdzTmFOJywgZCkpCisKK2RlZiBudW1lcmljX3ZhbHVlKG1heHByZWMsIG1heGV4cCk6CisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiA5MDoKKyAgICAgICAgcmV0dXJuIGluZmluaXR5KCkKKyAgICBleHBfcGFydCA9ICcnCisgICAgaWYgcmFuZHJhbmdlKDEwMCkgPiA2MDoKKyAgICAgICAgZXhwX3BhcnQgPSBleHBvbmVudF9wYXJ0KG1heGV4cCkKKyAgICByZXR1cm4gJycuam9pbigoZGVjaW1hbF9wYXJ0KG1heHByZWMpLCBleHBfcGFydCkpCisKK2RlZiBudW1lcmljX3N0cmluZyhtYXhwcmVjLCBtYXhleHApOgorICAgIGlmIHJhbmRyYW5nZSgxMDApID4gOTU6CisgICAgICAgIHJldHVybiAnJy5qb2luKChzaWduKCksIG5hbigpKSkKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycuam9pbigoc2lnbigpLCBudW1lcmljX3ZhbHVlKG1heHByZWMsIG1heGV4cCkpKQorCitkZWYgcmFuZGRlYyhtYXhwcmVjLCBtYXhleHApOgorICAgIHJldHVybiBudW1lcmljX3N0cmluZyhtYXhwcmVjLCBtYXhleHApCisKK2RlZiByYW5kX2FkamV4cChtYXhwcmVjLCBtYXhhZGpleHApOgorICAgIGQgPSBkaWdpdHMobWF4cHJlYykKKyAgICBtYXhleHAgPSBtYXhhZGpleHAtbGVuKGQpKzEKKyAgICBpZiBtYXhleHAgPT0gMDogbWF4ZXhwID0gMQorICAgIGV4cCA9IHN0cihyYW5kcmFuZ2UobWF4ZXhwLTIqKGFicyhtYXhleHApKSwgbWF4ZXhwKSkKKyAgICByZXR1cm4gJycuam9pbigoc2lnbigpLCBkLCAnRScsIGV4cCkpCisKKworZGVmIG5kaWdpdHMobik6CisgICAgaWYgbiA8IDE6IHJldHVybiAwCisgICAgcmV0dXJuIHJhbmRyYW5nZSgxMCoqKG4tMSksIDEwKipuKQorCitkZWYgcmFuZHR1cGxlKG1heHByZWMsIG1heGV4cCk6CisgICAgbiA9IHJhbmRyYW5nZSgxMDApCisgICAgc2lnbiA9IHJhbmRyYW5nZSgyKQorICAgIGNvZWZmID0gbmRpZ2l0cyhtYXhwcmVjKQorICAgIGlmIG4gPj0gOTU6CisgICAgICAgIGNvZWZmID0gKCkKKyAgICAgICAgZXhwID0gJ0YnCisgICAgZWxpZiBuID49IDg1OgorICAgICAgICBjb2VmZiA9IHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG1heHByZWMpKSkpCisgICAgICAgIGV4cCA9ICJuTiJbcmFuZHJhbmdlKDIpXQorICAgIGVsc2U6CisgICAgICAgIGNvZWZmID0gdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobWF4cHJlYykpKSkKKyAgICAgICAgZXhwID0gcmFuZHJhbmdlKC1tYXhleHAsIG1heGV4cCkKKyAgICByZXR1cm4gKHNpZ24sIGNvZWZmLCBleHApCisKK2RlZiBmcm9tX3RyaXBsZShzaWduLCBjb2VmZiwgZXhwKToKKyAgICByZXR1cm4gJycuam9pbigoc3RyKHNpZ24qY29lZmYpLCBpbmRpY2F0b3IoKSwgc3RyKGV4cCkpKQorCisKKyMgQ2xvc2UgdG8gMTAqKm4KK2RlZiB1bl9jbG9zZV90b19wb3cxMChwcmVjLCBtYXhleHAsIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgbHN0ID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBuaW5lcyA9IFsxMCoqbiAtIDEgZm9yIG4gaW4gbHN0XQorICAgIHBvdzEwID0gWzEwKipuIGZvciBuIGluIGxzdF0KKyAgICBmb3IgY29lZmYgaW4gbmluZXM6CisgICAgICAgIHlpZWxkIGNvZWZmCisgICAgICAgIHlpZWxkIC1jb2VmZgorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBjb2VmZiwgcmFuZHJhbmdlKDIqbWF4ZXhwKSkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoLTEsIGNvZWZmLCByYW5kcmFuZ2UoMiptYXhleHApKQorICAgIGZvciBjb2VmZiBpbiBwb3cxMDoKKyAgICAgICAgeWllbGQgY29lZmYKKyAgICAgICAgeWllbGQgLWNvZWZmCisKKyMgQ2xvc2UgdG8gMTAqKm4KK2RlZiBiaW5fY2xvc2VfdG9fcG93MTAocHJlYywgbWF4ZXhwLCBpdHI9Tm9uZSk6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdCA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0ID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgbmluZXMgPSBbMTAqKm4gLSAxIGZvciBuIGluIGxzdF0KKyAgICBwb3cxMCA9IFsxMCoqbiBmb3IgbiBpbiBsc3RdCisgICAgZm9yIGNvZWZmIGluIG5pbmVzOgorICAgICAgICB5aWVsZCBjb2VmZiwgMQorICAgICAgICB5aWVsZCAtY29lZmYsIC0xCisgICAgICAgIHlpZWxkIDEsIGNvZWZmCisgICAgICAgIHlpZWxkIC0xLCAtY29lZmYKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgY29lZmYsIHJhbmRyYW5nZSgyKm1heGV4cCkpLCAxCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBjb2VmZiwgcmFuZHJhbmdlKDIqbWF4ZXhwKSksIC0xCisgICAgICAgIHlpZWxkIDEsIGZyb21fdHJpcGxlKDEsIGNvZWZmLCAtcmFuZHJhbmdlKDIqbWF4ZXhwKSkKKyAgICAgICAgeWllbGQgLTEsIGZyb21fdHJpcGxlKC0xLCBjb2VmZiwgLXJhbmRyYW5nZSgyKm1heGV4cCkpCisgICAgZm9yIGNvZWZmIGluIHBvdzEwOgorICAgICAgICB5aWVsZCBjb2VmZiwgLTEKKyAgICAgICAgeWllbGQgLWNvZWZmLCAxCisgICAgICAgIHlpZWxkIDEsIC1jb2VmZgorICAgICAgICB5aWVsZCAtY29lZmYsIDEKKworIyBDbG9zZSB0byAxOgorZGVmIGNsb3NlX3RvX29uZV9ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSkpKQorCitkZWYgY2xvc2VfdG9fb25lX2xlc3MocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMC45IiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSkpKQorCisjIENsb3NlIHRvIDA6CitkZWYgY2xvc2VfdG9femVyb19ncmVhdGVyKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjAuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSkpKQorCitkZWYgY2xvc2VfdG9femVyb19sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIi0wLiIsICcwJypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpKSkKKworIyBDbG9zZSB0byBlbWF4OgorZGVmIGNsb3NlX3RvX2VtYXhfbGVzcyhwcmVjLCBlbWF4LCBlbWluKToKKyAgICBycHJlYyA9IDEwKipwcmVjCisgICAgcmV0dXJuICcnLmpvaW4oKCI5LiIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihlbWF4KSkpCisKK2RlZiBjbG9zZV90b19lbWF4X2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZW1heCsxKSkpCisKKyMgQ2xvc2UgdG8gZW1pbjoKK2RlZiBjbG9zZV90b19lbWluX2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZW1pbikpKQorCitkZWYgY2xvc2VfdG9fZW1pbl9sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICByZXR1cm4gJycuam9pbigoIjkuIiwgJzknKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGVtaW4tMSkpKQorCisjIENsb3NlIHRvIGV0aW55OgorZGVmIGNsb3NlX3RvX2V0aW55X2dyZWF0ZXIocHJlYywgZW1heCwgZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIGV0aW55ID0gZW1pbiAtIChwcmVjIC0gMSkKKyAgICByZXR1cm4gJycuam9pbigoIjEuIiwgJzAnKnJhbmRyYW5nZShwcmVjKSwKKyAgICAgICAgICAgICAgICAgICBzdHIocmFuZHJhbmdlKHJwcmVjKSksICJFIiwgc3RyKGV0aW55KSkpCisKK2RlZiBjbG9zZV90b19ldGlueV9sZXNzKHByZWMsIGVtYXgsIGVtaW4pOgorICAgIHJwcmVjID0gMTAqKnByZWMKKyAgICBldGlueSA9IGVtaW4gLSAocHJlYyAtIDEpCisgICAgcmV0dXJuICcnLmpvaW4oKCI5LiIsICc5JypyYW5kcmFuZ2UocHJlYyksCisgICAgICAgICAgICAgICAgICAgc3RyKHJhbmRyYW5nZShycHJlYykpLCAiRSIsIHN0cihldGlueS0xKSkpCisKKworZGVmIGNsb3NlX3RvX21pbl9ldGlueV9ncmVhdGVyKHByZWMsIG1heF9wcmVjLCBtaW5fZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIGV0aW55ID0gbWluX2VtaW4gLSAobWF4X3ByZWMgLSAxKQorICAgIHJldHVybiAnJy5qb2luKCgiMS4iLCAnMCcqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZXRpbnkpKSkKKworZGVmIGNsb3NlX3RvX21pbl9ldGlueV9sZXNzKHByZWMsIG1heF9wcmVjLCBtaW5fZW1pbik6CisgICAgcnByZWMgPSAxMCoqcHJlYworICAgIGV0aW55ID0gbWluX2VtaW4gLSAobWF4X3ByZWMgLSAxKQorICAgIHJldHVybiAnJy5qb2luKCgiOS4iLCAnOScqcmFuZHJhbmdlKHByZWMpLAorICAgICAgICAgICAgICAgICAgIHN0cihyYW5kcmFuZ2UocnByZWMpKSwgIkUiLCBzdHIoZXRpbnktMSkpKQorCisKK2Nsb3NlX2Z1bmNzID0gWworICBjbG9zZV90b19vbmVfZ3JlYXRlciwgY2xvc2VfdG9fb25lX2xlc3MsIGNsb3NlX3RvX3plcm9fZ3JlYXRlciwKKyAgY2xvc2VfdG9femVyb19sZXNzLCBjbG9zZV90b19lbWF4X2xlc3MsIGNsb3NlX3RvX2VtYXhfZ3JlYXRlciwKKyAgY2xvc2VfdG9fZW1pbl9ncmVhdGVyLCBjbG9zZV90b19lbWluX2xlc3MsIGNsb3NlX3RvX2V0aW55X2dyZWF0ZXIsCisgIGNsb3NlX3RvX2V0aW55X2xlc3MsIGNsb3NlX3RvX21pbl9ldGlueV9ncmVhdGVyLCBjbG9zZV90b19taW5fZXRpbnlfbGVzcworXQorCisKK2RlZiB1bl9jbG9zZV9udW1iZXJzKHByZWMsIGVtYXgsIGVtaW4sIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgZnVuYyhwcmVjLCBlbWF4LCBlbWluKQorCitkZWYgYmluX2Nsb3NlX251bWJlcnMocHJlYywgZW1heCwgZW1pbiwgaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMxIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgZm9yIGZ1bmMyIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgICAgIHlpZWxkIGZ1bmMxKHByZWMsIGVtYXgsIGVtaW4pLCBmdW5jMihwcmVjLCBlbWF4LCBlbWluKQorICAgICAgICBmb3IgZnVuYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMocHJlYywgZW1heCwgZW1pbikKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMocHJlYywgZW1heCwgZW1pbiksIHJhbmRkZWMocHJlYywgZW1heCkKKworZGVmIHRlcm5fY2xvc2VfbnVtYmVycyhwcmVjLCBlbWF4LCBlbWluLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMxIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgZm9yIGZ1bmMyIGluIGNsb3NlX2Z1bmNzOgorICAgICAgICAgICAgICAgIGZvciBmdW5jMyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgKGZ1bmMxKHByZWMsIGVtYXgsIGVtaW4pLCBmdW5jMihwcmVjLCBlbWF4LCBlbWluKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMzKHByZWMsIGVtYXgsIGVtaW4pKQorICAgICAgICBmb3IgZnVuYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIChyYW5kZGVjKHByZWMsIGVtYXgpLCBmdW5jKHByZWMsIGVtYXgsIGVtaW4pLAorICAgICAgICAgICAgICAgICAgIGZ1bmMocHJlYywgZW1heCwgZW1pbikpCisgICAgICAgICAgICB5aWVsZCAoZnVuYyhwcmVjLCBlbWF4LCBlbWluKSwgcmFuZGRlYyhwcmVjLCBlbWF4KSwKKyAgICAgICAgICAgICAgICAgICBmdW5jKHByZWMsIGVtYXgsIGVtaW4pKQorICAgICAgICAgICAgeWllbGQgKGZ1bmMocHJlYywgZW1heCwgZW1pbiksIGZ1bmMocHJlYywgZW1heCwgZW1pbiksCisgICAgICAgICAgICAgICAgICAgcmFuZGRlYyhwcmVjLCBlbWF4KSkKKyAgICAgICAgZm9yIGZ1bmMgaW4gY2xvc2VfZnVuY3M6CisgICAgICAgICAgICB5aWVsZCAocmFuZGRlYyhwcmVjLCBlbWF4KSwgcmFuZGRlYyhwcmVjLCBlbWF4KSwKKyAgICAgICAgICAgICAgICAgICBmdW5jKHByZWMsIGVtYXgsIGVtaW4pKQorICAgICAgICAgICAgeWllbGQgKHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMocHJlYywgZW1heCwgZW1pbiksCisgICAgICAgICAgICAgICAgICAgcmFuZGRlYyhwcmVjLCBlbWF4KSkKKyAgICAgICAgICAgIHlpZWxkIChmdW5jKHByZWMsIGVtYXgsIGVtaW4pLCByYW5kZGVjKHByZWMsIGVtYXgpLAorICAgICAgICAgICAgICAgICAgIHJhbmRkZWMocHJlYywgZW1heCkpCisKKworIyBJZiBpdHIgPT0gTm9uZSwgdGVzdCBhbGwgZGlnaXQgbGVuZ3RocyB1cCB0byBwcmVjICsgMzAKK2RlZiB1bl9pbmNyX2RpZ2l0cyhwcmVjLCBtYXhleHAsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdCA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0ID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0OgorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKworIyBJZiBpdHIgPT0gTm9uZSwgdGVzdCBhbGwgZGlnaXQgbGVuZ3RocyB1cCB0byBwcmVjICsgMzAKKyMgQWxzbyBvdXRwdXQgZGVjaW1hbHMgaW0gdHVwbGUgZm9ybS4KK2RlZiB1bl9pbmNyX2RpZ2l0c190dXBsZShwcmVjLCBtYXhleHAsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdCA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0ID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0OgorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG0pLCAwKQorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgIHlpZWxkIGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG0pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgIyB0ZXN0IGZyb20gdHVwbGUKKyAgICAgICAgeWllbGQgKDAsIHR1cGxlKG1hcChpbnQsIHN0cihuZGlnaXRzKG0pKSkpLCAwKQorICAgICAgICB5aWVsZCAoMSwgdHVwbGUobWFwKGludCwgc3RyKG5kaWdpdHMobSkpKSksIDApCisgICAgICAgIHlpZWxkICgwLCB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtKSkpKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgIHlpZWxkICgxLCB0dXBsZShtYXAoaW50LCBzdHIobmRpZ2l0cyhtKSkpKSwgcmFuZHJhbmdlKG1heGV4cCkpCisKKyMgSWYgaXRyID09IE5vbmUsIHRlc3QgYWxsIGNvbWJpbmF0aW9ucyBvZiBkaWdpdCBsZW5ndGhzIHVwIHRvIHByZWMgKyAzMAorZGVmIGJpbl9pbmNyX2RpZ2l0cyhwcmVjLCBtYXhleHAsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdDEgPSByYW5nZShwcmVjKzMwKQorICAgICAgICBsc3QyID0gcmFuZ2UocHJlYyszMCkKKyAgICBlbHNlOgorICAgICAgICBsc3QxID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgICAgIGxzdDIgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgeCwgeAorICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICB5aWVsZCB4LCB4CisgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgIHlpZWxkIHgsIHgKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICBmb3IgbiBpbiBsc3QyOgorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgIHkgPSBmcm9tX3RyaXBsZSgxLCBuZGlnaXRzKG4pLCAwKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIDApCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobiksIDApCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoMSwgbmRpZ2l0cyhuKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5aWVsZCB4LCB5CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobiksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeWllbGQgeCwgeQorICAgICAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIG5kaWdpdHMobSksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKC0xLCBuZGlnaXRzKG4pLCByYW5kcmFuZ2UobWF4ZXhwKSkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKyAgICAgICAgICAgIHggPSBmcm9tX3RyaXBsZSgtMSwgbmRpZ2l0cyhtKSwgcmFuZHJhbmdlKG1heGV4cCkpCisgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUoLTEsIG5kaWdpdHMobiksIHJhbmRyYW5nZShtYXhleHApKQorICAgICAgICAgICAgeWllbGQgeCwgeQorCisKK2RlZiByYW5kc2lnbigpOgorICAgIHJldHVybiAoMSwgLTEpW3JhbmRyYW5nZSgyKV0KKworIyBJZiBpdHIgPT0gTm9uZSwgdGVzdCBhbGwgY29tYmluYXRpb25zIG9mIGRpZ2l0IGxlbmd0aHMgdXAgdG8gcHJlYyArIDMwCitkZWYgdGVybl9pbmNyX2RpZ2l0cyhwcmVjLCBtYXhleHAsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdDEgPSByYW5nZShwcmVjKzMwKQorICAgICAgICBsc3QyID0gcmFuZ2UocHJlYyszMCkKKyAgICAgICAgbHN0MyA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0MSA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgICAgICBsc3QyID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgICAgIGxzdDMgPSBzYW1wbGUocmFuZ2UocHJlYyszMCksIGl0cikKKyAgICBmb3IgbSBpbiBsc3QxOgorICAgICAgICBmb3IgbiBpbiBsc3QyOgorICAgICAgICAgICAgZm9yIHAgaW4gbHN0MzoKKyAgICAgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUocmFuZHNpZ24oKSwgbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgICAgICAgICB5ID0gZnJvbV90cmlwbGUocmFuZHNpZ24oKSwgbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgICAgICB6ID0gZnJvbV90cmlwbGUocmFuZHNpZ24oKSwgbmRpZ2l0cyhwKSwgMCkKKyAgICAgICAgICAgICAgICB5aWVsZCB4LCB5LCB6CisKKworIyBUZXN0cyBmb3IgdGhlICdsb2dpY2FsJyBmdW5jdGlvbnMKK2RlZiBiaW5kaWdpdHMocHJlYyk6CisgICAgeiA9IDAKKyAgICBmb3IgaSBpbiByYW5nZShwcmVjKToKKyAgICAgICAgeiArPSByYW5kcmFuZ2UoMikgKiAxMCoqaQorICAgIHJldHVybiB6CisKK2RlZiBsb2dpY2FsX3VuX2luY3JfZGlnaXRzKHByZWMsIGl0cik6CisgICAgaWYgaXRyIGlzIE5vbmU6CisgICAgICAgIGxzdCA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0ID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0OgorICAgICAgICB5aWVsZCBmcm9tX3RyaXBsZSgxLCBiaW5kaWdpdHMobSksIDApCisKK2RlZiBsb2dpY2FsX2Jpbl9pbmNyX2RpZ2l0cyhwcmVjLCBpdHIpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBsc3QxID0gcmFuZ2UocHJlYyszMCkKKyAgICAgICAgbHN0MiA9IHJhbmdlKHByZWMrMzApCisgICAgZWxzZToKKyAgICAgICAgbHN0MSA9IHNhbXBsZShyYW5nZShwcmVjKzMwKSwgaXRyKQorICAgICAgICBsc3QyID0gc2FtcGxlKHJhbmdlKHByZWMrMzApLCBpdHIpCisgICAgZm9yIG0gaW4gbHN0MToKKyAgICAgICAgeCA9IGZyb21fdHJpcGxlKDEsIGJpbmRpZ2l0cyhtKSwgMCkKKyAgICAgICAgeWllbGQgeCwgeAorICAgIGZvciBtIGluIGxzdDE6CisgICAgICAgIGZvciBuIGluIGxzdDI6CisgICAgICAgICAgICB4ID0gZnJvbV90cmlwbGUoMSwgYmluZGlnaXRzKG0pLCAwKQorICAgICAgICAgICAgeSA9IGZyb21fdHJpcGxlKDEsIGJpbmRpZ2l0cyhuKSwgMCkKKyAgICAgICAgICAgIHlpZWxkIHgsIHkKKworCitkZWYgcmFuZGludCgpOgorICAgIHAgPSByYW5kcmFuZ2UoMSwgMTAwKQorICAgIHJldHVybiBuZGlnaXRzKHApICogKDEsLTEpW3JhbmRyYW5nZSgyKV0KKworZGVmIHJhbmRmbG9hdCgpOgorICAgIHAgPSByYW5kcmFuZ2UoMSwgMTAwKQorICAgIHMgPSBudW1lcmljX3ZhbHVlKHAsIDM4MykKKyAgICB0cnk6CisgICAgICAgIGYgPSBmbG9hdChudW1lcmljX3ZhbHVlKHAsIDM4MykpCisgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgIGYgPSAwLjAKKyAgICByZXR1cm4gZgorCitkZWYgcmFuZGNvbXBsZXgoKToKKyAgICByZWFsID0gcmFuZGZsb2F0KCkKKyAgICBpZiByYW5kcmFuZ2UoMTAwKSA+IDMwOgorICAgICAgICBpbWFnID0gMC4wCisgICAgZWxzZToKKyAgICAgICAgaW1hZyA9IHJhbmRmbG9hdCgpCisgICAgcmV0dXJuIGNvbXBsZXgocmVhbCwgaW1hZykKKworZGVmIHJhbmRmcmFjdGlvbigpOgorICAgIG51bSA9IHJhbmRpbnQoKQorICAgIGRlbm9tID0gcmFuZGludCgpCisgICAgaWYgZGVub20gPT0gMDoKKyAgICAgICAgZGVub20gPSAxCisgICAgcmV0dXJuIEZyYWN0aW9uKG51bSwgZGVub20pCisKK251bWJlcl9mdW5jcyA9IFtyYW5kaW50LCByYW5kZmxvYXQsIHJhbmRjb21wbGV4LCByYW5kZnJhY3Rpb25dCisKK2RlZiB1bl9yYW5kb21fbWl4ZWRfb3AoaXRyPU5vbmUpOgorICAgIGlmIGl0ciBpcyBOb25lOgorICAgICAgICBpdHIgPSAxMDAwCisgICAgZm9yIF8gaW4gcmFuZ2UoaXRyKToKKyAgICAgICAgZm9yIGZ1bmMgaW4gbnVtYmVyX2Z1bmNzOgorICAgICAgICAgICAgeWllbGQgZnVuYygpCisgICAgIyBUZXN0IGdhcmJhZ2UgaW5wdXQKKyAgICBmb3IgeCBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICB5aWVsZCB4CisKK2RlZiBiaW5fcmFuZG9tX21peGVkX29wKHByZWMsIGVtYXgsIGVtaW4sIGl0cj1Ob25lKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jIGluIG51bWJlcl9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMoKQorICAgICAgICAgICAgeWllbGQgZnVuYygpLCByYW5kZGVjKHByZWMsIGVtYXgpCisgICAgICAgIGZvciBudW1iZXIgaW4gbnVtYmVyX2Z1bmNzOgorICAgICAgICAgICAgZm9yIGRlYyBpbiBjbG9zZV9mdW5jczoKKyAgICAgICAgICAgICAgICB5aWVsZCBkZWMocHJlYywgZW1heCwgZW1pbiksIG51bWJlcigpCisgICAgIyBUZXN0IGdhcmJhZ2UgaW5wdXQKKyAgICBmb3IgeCBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICBmb3IgeSBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICAgICAgeWllbGQgeCwgeQorCitkZWYgdGVybl9yYW5kb21fbWl4ZWRfb3AocHJlYywgZW1heCwgZW1pbiwgaXRyKToKKyAgICBpZiBpdHIgaXMgTm9uZToKKyAgICAgICAgaXRyID0gMTAwMAorICAgIGZvciBfIGluIHJhbmdlKGl0cik6CisgICAgICAgIGZvciBmdW5jIGluIG51bWJlcl9mdW5jczoKKyAgICAgICAgICAgIHlpZWxkIHJhbmRkZWMocHJlYywgZW1heCksIHJhbmRkZWMocHJlYywgZW1heCksIGZ1bmMoKQorICAgICAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBlbWF4KSwgZnVuYygpLCBmdW5jKCkKKyAgICAgICAgICAgIHlpZWxkIGZ1bmMoKSwgZnVuYygpLCBmdW5jKCkKKyAgICAjIFRlc3QgZ2FyYmFnZSBpbnB1dAorICAgIGZvciB4IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgIGZvciB5IGluIChbJ3gnXSwgKCd5JywpLCB7J3onfSwgezE6J3onfSk6CisgICAgICAgICAgICBmb3IgeiBpbiAoWyd4J10sICgneScsKSwgeyd6J30sIHsxOid6J30pOgorICAgICAgICAgICAgICAgIHlpZWxkIHgsIHksIHoKKworZGVmIGFsbF91bmFyeShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgZm9yIGEgaW4gdW5fY2xvc2VfdG9fcG93MTAocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gdW5fY2xvc2VfbnVtYmVycyhwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiB1bl9pbmNyX2RpZ2l0c190dXBsZShwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIChhLCkKKyAgICBmb3IgYSBpbiB1bl9yYW5kZmxvYXQoKToKKyAgICAgICAgeWllbGQgKGEsKQorICAgIGZvciBhIGluIHVuX3JhbmRvbV9taXhlZF9vcChpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIGEgaW4gbG9naWNhbF91bl9pbmNyX2RpZ2l0cyhwcmVjLCBpdHIpOgorICAgICAgICB5aWVsZCAoYSwpCisgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgeWllbGQgKHJhbmRkZWMocHJlYywgZXhwX3JhbmdlKSwpCisgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgeWllbGQgKHJhbmR0dXBsZShwcmVjLCBleHBfcmFuZ2UpLCkKKworZGVmIGFsbF9iaW5hcnkocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgIGZvciBhLCBiIGluIGJpbl9jbG9zZV90b19wb3cxMChwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBiaW5fY2xvc2VfbnVtYmVycyhwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBiaW5faW5jcl9kaWdpdHMocHJlYywgZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX3JhbmRmbG9hdCgpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIGEsIGIgaW4gYmluX3JhbmRvbV9taXhlZF9vcChwcmVjLCBleHBfcmFuZ2UsIC1leHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIKKyAgICBmb3IgYSwgYiBpbiBsb2dpY2FsX2Jpbl9pbmNyX2RpZ2l0cyhwcmVjLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiCisgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgeWllbGQgcmFuZGRlYyhwcmVjLCBleHBfcmFuZ2UpLCByYW5kZGVjKHByZWMsIGV4cF9yYW5nZSkKKworZGVmIGFsbF90ZXJuYXJ5KHByZWMsIGV4cF9yYW5nZSwgaXRyKToKKyAgICBmb3IgYSwgYiwgYyBpbiB0ZXJuX2Nsb3NlX251bWJlcnMocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiLCBjCisgICAgZm9yIGEsIGIsIGMgaW4gdGVybl9pbmNyX2RpZ2l0cyhwcmVjLCBleHBfcmFuZ2UsIGl0cik6CisgICAgICAgIHlpZWxkIGEsIGIsIGMKKyAgICBmb3IgYSwgYiwgYyBpbiB0ZXJuX3JhbmRmbG9hdCgpOgorICAgICAgICB5aWVsZCBhLCBiLCBjCisgICAgZm9yIGEsIGIsIGMgaW4gdGVybl9yYW5kb21fbWl4ZWRfb3AocHJlYywgZXhwX3JhbmdlLCAtZXhwX3JhbmdlLCBpdHIpOgorICAgICAgICB5aWVsZCBhLCBiLCBjCisgICAgZm9yIF8gaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgYSA9IHJhbmRkZWMocHJlYywgMipleHBfcmFuZ2UpCisgICAgICAgIGIgPSByYW5kZGVjKHByZWMsIDIqZXhwX3JhbmdlKQorICAgICAgICBjID0gcmFuZGRlYyhwcmVjLCAyKmV4cF9yYW5nZSkKKyAgICAgICAgeWllbGQgYSwgYiwgYwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZmxvYXQucHkgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3JhbmRmbG9hdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjg3MzAzCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9yYW5kZmxvYXQucHkKQEAgLTAsMCArMSwyNTAgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEwIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIyBBZGFwdGVkIGZyb20gUHl0aG9uJ3MgTGliL3Rlc3QvdGVzdF9zdHJ0b2QucHkgKGJ5IE1hcmsgRGlja2luc29uKQorCisjIE1vcmUgdGVzdCBjYXNlcyBmb3IgZGVjY2hlY2sucHkuCisKK2ltcG9ydCByYW5kb20KKworVEVTVF9TSVpFID0gMgorCisKK2RlZiB0ZXN0X3Nob3J0X2hhbGZ3YXlfY2FzZXMoKToKKyAgICAjIGV4YWN0IGhhbGZ3YXkgY2FzZXMgd2l0aCBhIHNtYWxsIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMKKyAgICBmb3IgayBpbiAwLCA1LCAxMCwgMTUsIDIwOgorICAgICAgICAjIHVwcGVyID0gc21hbGxlc3QgaW50ZWdlciA+PSAyKio1NC81KiprCisgICAgICAgIHVwcGVyID0gLSgtMioqNTQvLzUqKmspCisgICAgICAgICMgbG93ZXIgPSBzbWFsbGVzdCBvZGQgbnVtYmVyID49IDIqKjUzLzUqKmsKKyAgICAgICAgbG93ZXIgPSAtKC0yKio1My8vNSoqaykKKyAgICAgICAgaWYgbG93ZXIgJSAyID09IDA6CisgICAgICAgICAgICBsb3dlciArPSAxCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwICogVEVTVF9TSVpFKToKKyAgICAgICAgICAgICMgU2VsZWN0IGEgcmFuZG9tIG9kZCBuIGluIFsyKio1My81KiprLAorICAgICAgICAgICAgIyAyKio1NC81KiprKS4gVGhlbiBuICogMTAqKmsgZ2l2ZXMgYSBoYWxmd2F5IGNhc2UKKyAgICAgICAgICAgICMgd2l0aCBzbWFsbCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzLgorICAgICAgICAgICAgbiwgZSA9IHJhbmRvbS5yYW5kcmFuZ2UobG93ZXIsIHVwcGVyLCAyKSwgaworCisgICAgICAgICAgICAjIFJlbW92ZSBhbnkgYWRkaXRpb25hbCBwb3dlcnMgb2YgNS4KKyAgICAgICAgICAgIHdoaWxlIG4gJSA1ID09IDA6CisgICAgICAgICAgICAgICAgbiwgZSA9IG4gLy8gNSwgZSArIDEKKyAgICAgICAgICAgIGFzc2VydCBuICUgMTAgaW4gKDEsIDMsIDcsIDkpCisKKyAgICAgICAgICAgICMgVHJ5IG51bWJlcnMgb2YgdGhlIGZvcm0gbiAqIDIqKnAyICogMTAqKmUsIHAyID49IDAsCisgICAgICAgICAgICAjIHVudGlsIG4gKiAyKipwMiBoYXMgbW9yZSB0aGFuIDIwIHNpZ25pZmljYW50IGRpZ2l0cy4KKyAgICAgICAgICAgIGRpZ2l0cywgZXhwb25lbnQgPSBuLCBlCisgICAgICAgICAgICB3aGlsZSBkaWdpdHMgPCAxMCoqMjA6CisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICAgICAgeWllbGQgcworICAgICAgICAgICAgICAgICMgU2FtZSBhZ2FpbiwgYnV0IHdpdGggZXh0cmEgdHJhaWxpbmcgemVyb3MuCisgICAgICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cyAqIDEwKio0MCwgZXhwb25lbnQgLSA0MCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICAgICAgZGlnaXRzICo9IDIKKworICAgICAgICAgICAgIyBUcnkgbnVtYmVycyBvZiB0aGUgZm9ybSBuICogNSoqcDIgKiAxMCoqKGUgLSBwNSksIHA1CisgICAgICAgICAgICAjID49IDAsIHdpdGggbiAqIDUqKnA1IDwgMTAqKjIwLgorICAgICAgICAgICAgZGlnaXRzLCBleHBvbmVudCA9IG4sIGUKKyAgICAgICAgICAgIHdoaWxlIGRpZ2l0cyA8IDEwKioyMDoKKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisgICAgICAgICAgICAgICAgIyBTYW1lIGFnYWluLCBidXQgd2l0aCBleHRyYSB0cmFpbGluZyB6ZXJvcy4KKyAgICAgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzICogMTAqKjQwLCBleHBvbmVudCAtIDQwKQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgICAgICBkaWdpdHMgKj0gNQorICAgICAgICAgICAgICAgIGV4cG9uZW50IC09IDEKKworZGVmIHRlc3RfaGFsZndheV9jYXNlcygpOgorICAgICMgdGVzdCBoYWxmd2F5IGNhc2VzIGZvciB0aGUgcm91bmQtaGFsZi10by1ldmVuIHJ1bGUKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoVEVTVF9TSVpFKToKKyAgICAgICAgICAgICMgYml0IHBhdHRlcm4gZm9yIGEgcmFuZG9tIGZpbml0ZSBwb3NpdGl2ZSAob3IgKzAuMCkgZmxvYXQKKyAgICAgICAgICAgIGJpdHMgPSByYW5kb20ucmFuZHJhbmdlKDIwNDcqMioqNTIpCisKKyAgICAgICAgICAgICMgY29udmVydCBiaXQgcGF0dGVybiB0byBhIG51bWJlciBvZiB0aGUgZm9ybSBtICogMioqZQorICAgICAgICAgICAgZSwgbSA9IGRpdm1vZChiaXRzLCAyKio1MikKKyAgICAgICAgICAgIGlmIGU6CisgICAgICAgICAgICAgICAgbSwgZSA9IG0gKyAyKio1MiwgZSAtIDEKKyAgICAgICAgICAgIGUgLT0gMTA3NAorCisgICAgICAgICAgICAjIGFkZCAwLjUgdWxwcworICAgICAgICAgICAgbSwgZSA9IDIqbSArIDEsIGUgLSAxCisKKyAgICAgICAgICAgICMgY29udmVydCB0byBhIGRlY2ltYWwgc3RyaW5nCisgICAgICAgICAgICBpZiBlID49IDA6CisgICAgICAgICAgICAgICAgZGlnaXRzID0gbSA8PCBlCisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAwCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgbSAqIDIqKmUgPSAobSAqIDUqKi1lKSAqIDEwKiplCisgICAgICAgICAgICAgICAgZGlnaXRzID0gbSAqIDUqKi1lCisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBlCisgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgIHlpZWxkIHMKKworZGVmIHRlc3RfYm91bmRhcmllcygpOgorICAgICMgYm91bmRhcmllcyBleHByZXNzZWQgYXMgdHJpcGxlcyAobiwgZSwgdSksIHdoZXJlCisgICAgIyBuKjEwKiplIGlzIGFuIGFwcHJveGltYXRpb24gdG8gdGhlIGJvdW5kYXJ5IHZhbHVlIGFuZAorICAgICMgdSoxMCoqZSBpcyAxdWxwCisgICAgYm91bmRhcmllcyA9IFsKKyAgICAgICAgKDEwMDAwMDAwMDAwMDAwMDAwMDAwLCAtMTksIDExMTApLCAgICMgYSBwb3dlciBvZiAyIGJvdW5kYXJ5ICgxLjApCisgICAgICAgICgxNzk3NjkzMTM0ODYyMzE1OTA3NywgMjg5LCAxOTk1KSwgICAjIG92ZXJmbG93IGJvdW5kYXJ5ICgyLioqMTAyNCkKKyAgICAgICAgKDIyMjUwNzM4NTg1MDcyMDEzODMxLCAtMzI3LCA0OTQxKSwgICMgbm9ybWFsL3N1Ym5vcm1hbCAoMi4qKi0xMDIyKQorICAgICAgICAoMCwgLTMyNywgNDk0MSksICAgICAgICAgICAgICAgICAgICAgIyB6ZXJvCisgICAgICAgIF0KKyAgICBmb3IgbiwgZSwgdSBpbiBib3VuZGFyaWVzOgorICAgICAgICBmb3IgaiBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKFRFU1RfU0laRSk6CisgICAgICAgICAgICAgICAgZGlnaXRzID0gbiArIHJhbmRvbS5yYW5kcmFuZ2UoLTMqdSwgMyp1KQorICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gZQorICAgICAgICAgICAgICAgIHMgPSAne31le30nLmZvcm1hdChkaWdpdHMsIGV4cG9uZW50KQorICAgICAgICAgICAgICAgIHlpZWxkIHMKKyAgICAgICAgICAgIG4gKj0gMTAKKyAgICAgICAgICAgIHUgKj0gMTAKKyAgICAgICAgICAgIGUgLT0gMQorCitkZWYgdGVzdF91bmRlcmZsb3dfYm91bmRhcnkoKToKKyAgICAjIHRlc3QgdmFsdWVzIGNsb3NlIHRvIDIqKi0xMDc1LCB0aGUgdW5kZXJmbG93IGJvdW5kYXJ5OyBzaW1pbGFyCisgICAgIyB0byBib3VuZGFyeV90ZXN0cywgZXhjZXB0IHRoYXQgdGhlIHJhbmRvbSBlcnJvciBkb2Vzbid0IHNjYWxlCisgICAgIyB3aXRoIG4KKyAgICBmb3IgZXhwb25lbnQgaW4gcmFuZ2UoLTQwMCwgLTMyMCk6CisgICAgICAgIGJhc2UgPSAxMCoqLWV4cG9uZW50IC8vIDIqKjEwNzUKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoVEVTVF9TSVpFKToKKyAgICAgICAgICAgIGRpZ2l0cyA9IGJhc2UgKyByYW5kb20ucmFuZHJhbmdlKC0xMDAwLCAxMDAwKQorICAgICAgICAgICAgcyA9ICd7fWV7fScuZm9ybWF0KGRpZ2l0cywgZXhwb25lbnQpCisgICAgICAgICAgICB5aWVsZCBzCisKK2RlZiB0ZXN0X2JpZ2NvbXAoKToKKyAgICBmb3IgbmRpZ3MgaW4gNSwgMTAsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksIDIwLCA0MCwgNDEsIDUwOgorICAgICAgICBkaWcxMCA9IDEwKipuZGlncworICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAgKiBURVNUX1NJWkUpOgorICAgICAgICAgICAgZGlnaXRzID0gcmFuZG9tLnJhbmRyYW5nZShkaWcxMCkKKyAgICAgICAgICAgIGV4cG9uZW50ID0gcmFuZG9tLnJhbmRyYW5nZSgtNDAwLCA0MDApCisgICAgICAgICAgICBzID0gJ3t9ZXt9Jy5mb3JtYXQoZGlnaXRzLCBleHBvbmVudCkKKyAgICAgICAgICAgIHlpZWxkIHMKKworZGVmIHRlc3RfcGFyc2luZygpOgorICAgICMgbWFrZSAnMCcgbW9yZSBsaWtlbHkgdG8gYmUgY2hvc2VuIHRoYW4gb3RoZXIgZGlnaXRzCisgICAgZGlnaXRzID0gJzAwMDAwMDEyMzQ1Njc4OScKKyAgICBzaWducyA9ICgnKycsICctJywgJycpCisKKyAgICAjIHB1dCB0b2dldGhlciByYW5kb20gc2hvcnQgdmFsaWQgc3RyaW5ncworICAgICMgXGQqWy5cZCpdP2UKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgZm9yIGogaW4gcmFuZ2UoVEVTVF9TSVpFKToKKyAgICAgICAgICAgIHMgPSByYW5kb20uY2hvaWNlKHNpZ25zKQorICAgICAgICAgICAgaW50cGFydF9sZW4gPSByYW5kb20ucmFuZHJhbmdlKDUpCisgICAgICAgICAgICBzICs9ICcnLmpvaW4ocmFuZG9tLmNob2ljZShkaWdpdHMpIGZvciBfIGluIHJhbmdlKGludHBhcnRfbGVuKSkKKyAgICAgICAgICAgIGlmIHJhbmRvbS5jaG9pY2UoW1RydWUsIEZhbHNlXSk6CisgICAgICAgICAgICAgICAgcyArPSAnLicKKyAgICAgICAgICAgICAgICBmcmFjcGFydF9sZW4gPSByYW5kb20ucmFuZHJhbmdlKDUpCisgICAgICAgICAgICAgICAgcyArPSAnJy5qb2luKHJhbmRvbS5jaG9pY2UoZGlnaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShmcmFjcGFydF9sZW4pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmcmFjcGFydF9sZW4gPSAwCisgICAgICAgICAgICBpZiByYW5kb20uY2hvaWNlKFtUcnVlLCBGYWxzZV0pOgorICAgICAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZShbJ2UnLCAnRSddKQorICAgICAgICAgICAgICAgIHMgKz0gcmFuZG9tLmNob2ljZShzaWducykKKyAgICAgICAgICAgICAgICBleHBvbmVudF9sZW4gPSByYW5kb20ucmFuZHJhbmdlKDEsIDQpCisgICAgICAgICAgICAgICAgcyArPSAnJy5qb2luKHJhbmRvbS5jaG9pY2UoZGlnaXRzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgXyBpbiByYW5nZShleHBvbmVudF9sZW4pKQorCisgICAgICAgICAgICBpZiBpbnRwYXJ0X2xlbiArIGZyYWNwYXJ0X2xlbjoKKyAgICAgICAgICAgICAgICB5aWVsZCBzCisKK3Rlc3RfcGFydGljdWxhciA9IFsKKyAgICAgIyBzcXVhcmVzCisgICAgJzEuMDAwMDAwMDAxMDAwMDAwMDAwMjUnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMjUnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyNScsCisgICAgJzEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDI1JywKKyAgICAnMC45OTk5OTk5OTkwMDAwMDAwMDAyNScsCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDI1JywKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDI1JywKKworICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDUnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDI1MDAwMDAwMDAwMDAwMDAwMjAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDEnLAorICAgICcxLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDI0OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OScgIy4uLgorICAgICc5OTk5OTk5OTk5OTk5Nzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMScsCisKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAyNDk5OTk5OTk5OTk5OTk5OTgwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAxJywKKyAgICAnMC45OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcwMDAwMDAwMDAwMDAwMDAwMDAyNTAwMDAwMDE5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTknICMuLi4KKyAgICAnOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTkwMDAwMDAwMDAwMDAwMDAwJyAjLi4uCisgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgIy4uLgorICAgICcxJywKKworICAgICMgdG91Z2ggY2FzZXMgZm9yIGxuIGV0Yy4KKyAgICAnMS4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICMuLi4KKyAgICAnMDAwMScsCisgICAgJzAuOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5ODk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5JyAjLi4uCisgICAgJzk5OTknCisgICAgXQorCisKK1RFU1RDQVNFUyA9IFsKKyAgICAgIFt4IGZvciB4IGluIHRlc3Rfc2hvcnRfaGFsZndheV9jYXNlcygpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfaGFsZndheV9jYXNlcygpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfYm91bmRhcmllcygpXSwKKyAgICAgIFt4IGZvciB4IGluIHRlc3RfdW5kZXJmbG93X2JvdW5kYXJ5KCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF9iaWdjb21wKCldLAorICAgICAgW3ggZm9yIHggaW4gdGVzdF9wYXJzaW5nKCldLAorICAgICAgdGVzdF9wYXJ0aWN1bGFyCitdCisKK2RlZiB1bl9yYW5kZmxvYXQoKToKKyAgICBmb3IgaSBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgbCA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTWzo2XSkKKyAgICAgICAgeWllbGQgcmFuZG9tLmNob2ljZShsKQorICAgIGZvciB2IGluIHRlc3RfcGFydGljdWxhcjoKKyAgICAgICAgeWllbGQgdgorCitkZWYgYmluX3JhbmRmbG9hdCgpOgorICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICBsMSA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICBsMiA9IHJhbmRvbS5jaG9pY2UoVEVTVENBU0VTKQorICAgICAgICB5aWVsZCByYW5kb20uY2hvaWNlKGwxKSwgcmFuZG9tLmNob2ljZShsMikKKworZGVmIHRlcm5fcmFuZGZsb2F0KCk6CisgICAgZm9yIGkgaW4gcmFuZ2UoMTAwMCk6CisgICAgICAgIGwxID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIGwyID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIGwzID0gcmFuZG9tLmNob2ljZShURVNUQ0FTRVMpCisgICAgICAgIHlpZWxkIHJhbmRvbS5jaG9pY2UobDEpLCByYW5kb20uY2hvaWNlKGwyKSwgcmFuZG9tLmNob2ljZShsMykKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLW1lbW9yeWRlYnVnZ2VyLnNoIGIvTW9kdWxlcy9fZGVjaW1hbC90ZXN0cy9ydW5hbGwtbWVtb3J5ZGVidWdnZXIuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDRmZjNiMwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLW1lbW9yeWRlYnVnZ2VyLnNoCkBAIC0wLDAgKzEsMTc1IEBACisjIS9iaW4vc2gKKworIworIyBQdXJwb3NlOiB0ZXN0IHdpdGggYW5kIHdpdGhvdXQgdGhyZWFkcywgYWxsIG1hY2hpbmUgY29uZmlndXJhdGlvbnMsIHB5ZGVidWcsCisjICAgICAgICAgIHJlZmxlYWtzLCByZWxlYXNlIGJ1aWxkIGFuZCByZWxlYXNlIGJ1aWxkIHdpdGggdmFsZ3JpbmQuCisjCisjIFN5bm9wc2lzOiAuL3J1bmFsbC1tZW1vcnlkZWJ1Z2dlci5zaCBbLS1hbGwtY29uZmlnczY0IHwgLS1hbGwtY29uZmlnczMyXQorIworIyBSZXF1aXJlbWVudHM6IHZhbGdyaW5kCisjCisKKyMgU2V0IGFkZGl0aW9uYWwgQ0ZMQUdTIGZvciAuL2NvbmZpZ3VyZQorQUREX0NGTEFHUz0KKworCitDT05GSUdTXzY0PSJ4NjQgdWludDEyOCBhbnNpNjQgdW5pdmVyc2FsIgorQ09ORklHU18zMj0icHBybyBhbnNpMzIgYW5zaS1sZWdhY3kgdW5pdmVyc2FsIgorCitWQUxHUklORD0idmFsZ3JpbmQgLS10b29sPW1lbWNoZWNrIC0tbGVhay1yZXNvbHV0aW9uPWhpZ2ggXAorICAgICAgICAgIC0tZGItYXR0YWNoPXllcyAtLXN1cHByZXNzaW9ucz1NaXNjL3ZhbGdyaW5kLXB5dGhvbi5zdXBwIgorCisjIEdldCBhcmdzCitjYXNlICRAIGluCisgICAgICotLWFsbC1jb25maWdzNjQqKQorICAgICAgICAgQ09ORklHUz0kQ09ORklHU182NAorICAgICAgICAgOzsKKyAgICAgKi0tYWxsLWNvbmZpZ3MzMiopCisgICAgICAgICBDT05GSUdTPSRDT05GSUdTXzMyCisgICAgICAgICA7OworICAgICAqKQorICAgICAgICAgQ09ORklHUz0iYXV0byIKKyAgICAgICAgIDs7Citlc2FjCisKKyMgZ21ha2UgcmVxdWlyZWQKK0dNQUtFPWB3aGljaCBnbWFrZWAKK2lmIFsgWCIkR01BS0UiID0gWCIiIF07IHRoZW4KKyAgICBHTUFLRT1tYWtlCitmaQorCisjIFByZXR0eSBwcmludCBjb25maWd1cmF0aW9ucworcHJpbnRfY29uZmlnICgpCit7CisgICAgbGVuPWBlY2hvICRAIHwgd2MgLWNgCisgICAgbWFyZ2luPSIjJSJgZXhwciBcKCA3NCAtICRsZW4gXCkgLyAyYCJzIgorCisgICAgZWNobyAiIgorICAgIGVjaG8gIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorICAgIHByaW50ZiAkbWFyZ2luICIiCisgICAgZWNobyAkQAorICAgIGVjaG8gIiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgorICAgIGVjaG8gIiIKK30KKworCitjZCAuLgorCisjIHRlc3RfZGVjaW1hbDogcmVmbGVhaywgcmVndWxhciBhbmQgVmFsZ3JpbmQgdGVzdHMKK2ZvciBhcmdzIGluICItLXdpdGhvdXQtdGhyZWFkcyIgIiI7IGRvCisgICAgZm9yIGNvbmZpZyBpbiAkQ09ORklHUzsgZG8KKworICAgICAgICB1bnNldCBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkUKKyAgICAgICAgbGlibXBkZWNfY29uZmlnPSRjb25maWcKKyAgICAgICAgaWYgWyBYIiRjb25maWciICE9IFgiYXV0byIgXTsgdGhlbgorICAgICAgICAgICAgUFlUSE9OX0RFQ0lNQUxfV0lUSF9NQUNISU5FPSRjb25maWcKKyAgICAgICAgICAgIGV4cG9ydCBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkUKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGlibXBkZWNfY29uZmlnPSIiCisgICAgICAgIGZpCisKKyAgICAgICAgIyMjIyMjIyMjIyMjIHJlZmxlYWsgdGVzdHMgIyMjIyMjIyMjIyMKKyAgICAgICAgcHJpbnRfY29uZmlnICJyZWZsZWFrIHRlc3RzOiBjb25maWc9JGNvbmZpZyIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorCisgICAgICAgIGNkIC4uLy4uLworICAgICAgICAkR01BS0UgZGlzdGNsZWFuID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSIkQUREX0NGTEFHUyIgLS13aXRoLXB5ZGVidWcgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gcmVmbGVhayB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAuL3B5dGhvbiAtbSB0ZXN0IC11YWxsIC1SIDI6MiB0ZXN0X2RlY2ltYWwKKworCisgICAgICAgICMjIyMjIyMjIyMjIyByZWd1bGFyIHRlc3RzICMjIyMjIyMjIyMjCisgICAgICAgIHByaW50X2NvbmZpZyAicmVndWxhciB0ZXN0czogY29uZmlnPSRjb25maWciICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKworICAgICAgICAkR01BS0UgZGlzdGNsZWFuID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSIkQUREX0NGTEFHUyIgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gcmVndWxhciB0ZXN0cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAuL3B5dGhvbiAtbSB0ZXN0IC11YWxsIHRlc3RfZGVjaW1hbAorCisKKyAgICAgICAgIyMjIyMjIyMjIyMgdmFsZ3JpbmQgdGVzdHMgIyMjIyMjIyMjIyMKKyAgICAgICAgdmFsZ3JpbmQ9JFZBTEdSSU5ECisgICAgICAgIGNhc2UgIiRjb25maWciIGluCisgICAgICAgICAgICAjIFZhbGdyaW5kIGhhcyBubyBzdXBwb3J0IGZvciA4MCBiaXQgbG9uZyBkb3VibGUgYXJpdGhtZXRpYy4KKyAgICAgICAgICAgIHBwcm8pIHZhbGdyaW5kPSA7OworICAgICAgICAgICAgYXV0bykgY2FzZSBgdW5hbWUgLW1gIGluCisgICAgICAgICAgICAgICAgICAgICAgaTM4NnxpNDg2fGk1ODZ8aTY4NikgdmFsZ3JpbmQ9IDs7CisgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgIGVzYWMKKworICAgICAgICBwcmludF9jb25maWcgInZhbGdyaW5kIHRlc3RzOiBjb25maWc9JGNvbmZpZyIgJGFyZ3MKKyAgICAgICAgcHJpbnRmICJcbmJ1aWxkaW5nIHB5dGhvbiAuLi5cblxuIgorICAgICAgICAkR01BS0UgZGlzdGNsZWFuID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSIkQUREX0NGTEFHUyIgLS13aXRob3V0LXB5bWFsbG9jICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHZhbGdyaW5kIHRlc3RzID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iCisgICAgICAgICR2YWxncmluZCAuL3B5dGhvbiAtbSB0ZXN0IC11YWxsIHRlc3RfZGVjaW1hbAorCisgICAgICAgIGNkIE1vZHVsZXMvX2RlY2ltYWwKKyAgICBkb25lCitkb25lCisKKyMgZGVjY2hlY2sKK2NkIC4uLy4uLworZm9yIGNvbmZpZyBpbiAkQ09ORklHUzsgZG8KKyAgICBmb3IgYXJncyBpbiAiLS13aXRob3V0LXRocmVhZHMiICIiOyBkbworCisgICAgICAgIHVuc2V0IFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORQorICAgICAgICBpZiBbIFgiJGNvbmZpZyIgIT0gWCJhdXRvIiBdOyB0aGVuCisgICAgICAgICAgICBQWVRIT05fREVDSU1BTF9XSVRIX01BQ0hJTkU9JGNvbmZpZworICAgICAgICAgICAgZXhwb3J0IFBZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORQorICAgICAgICBmaQorCisgICAgICAgICMjIyMjIyMjIyMjIyBkZWJ1ZyAjIyMjIyMjIyMjIyMKKyAgICAgICAgcHJpbnRfY29uZmlnICJkZWNjaGVjazogY29uZmlnPSRjb25maWcgLS13aXRoLXB5ZGVidWciICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKworICAgICAgICAkR01BS0UgZGlzdGNsZWFuID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSIkQUREX0NGTEFHUyIgLS13aXRoLXB5ZGVidWcgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT09PSBkZWJ1ZyA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAuL3B5dGhvbiBNb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CisKKyAgICAgICAgIyMjIyMjIyMjIyMgcmVndWxhciAjIyMjIyMjIyMjIworICAgICAgICBwcmludF9jb25maWcgImRlY2NoZWNrOiBjb25maWc9JGNvbmZpZyAiICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKworICAgICAgICAkR01BS0UgZGlzdGNsZWFuID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSIkQUREX0NGTEFHUyIgJGFyZ3MgPiAvZGV2L251bGwgMj4mMQorICAgICAgICAkR01BS0UgfCBncmVwIF9kZWNpbWFsCisKKyAgICAgICAgcHJpbnRmICJcblxuIyA9PT09PT09PT09PT09PT09PT09PT09PT0gcmVndWxhciA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIgorICAgICAgICAuL3B5dGhvbiBNb2R1bGVzL19kZWNpbWFsL3Rlc3RzL2RlY2NoZWNrLnB5CisKKyAgICAgICAgIyMjIyMjIyMjIyMgdmFsZ3JpbmQgIyMjIyMjIyMjIyMKKyAgICAgICAgdmFsZ3JpbmQ9JFZBTEdSSU5ECisgICAgICAgIGNhc2UgIiRjb25maWciIGluCisgICAgICAgICAgICAjIFZhbGdyaW5kIGhhcyBubyBzdXBwb3J0IGZvciA4MCBiaXQgbG9uZyBkb3VibGUgYXJpdGhtZXRpYy4KKyAgICAgICAgICAgIHBwcm8pIHZhbGdyaW5kPSA7OworICAgICAgICAgICAgYXV0bykgY2FzZSBgdW5hbWUgLW1gIGluCisgICAgICAgICAgICAgICAgICAgICAgaTM4NnxpNDg2fGk1ODZ8aTY4NikgdmFsZ3JpbmQ9IDs7CisgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgIGVzYWMKKworICAgICAgICBwcmludF9jb25maWcgInZhbGdyaW5kIGRlY2NoZWNrOiBjb25maWc9JGNvbmZpZyAiICRhcmdzCisgICAgICAgIHByaW50ZiAiXG5idWlsZGluZyBweXRob24gLi4uXG5cbiIKKworICAgICAgICAkR01BS0UgZGlzdGNsZWFuID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgLi9jb25maWd1cmUgQ0ZMQUdTPSIkQUREX0NGTEFHUyIgLS13aXRob3V0LXB5bWFsbG9jICRhcmdzID4gL2Rldi9udWxsIDI+JjEKKyAgICAgICAgJEdNQUtFIHwgZ3JlcCBfZGVjaW1hbAorCisgICAgICAgIHByaW50ZiAiXG5cbiMgPT09PT09PT09PT09PT09PT09PT09PT09IHZhbGdyaW5kID09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiIKKyAgICAgICAgJHZhbGdyaW5kIC4vcHl0aG9uIE1vZHVsZXMvX2RlY2ltYWwvdGVzdHMvZGVjY2hlY2sucHkKKyAgICBkb25lCitkb25lCisKKworCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC5iYXQgYi9Nb2R1bGVzL19kZWNpbWFsL3Rlc3RzL3J1bmFsbC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWJjODcyYQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2RlY2ltYWwvdGVzdHMvcnVuYWxsLmJhdApAQCAtMCwwICsxLDExMSBAQAorQEVDSE8gT0ZGCisKK3JlbSBUZXN0IGFsbCBtYWNoaW5lIGNvbmZpZ3VyYXRpb25zLCBweWRlYnVnLCByZWZsZWFrcywgcmVsZWFzZSBidWlsZC4KKworY2QgLi5cLi5cLi5cCisKKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGRpbmcgUHl0aG9uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4NjQKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciAvdGFyZ2V0OmNsZWFuIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIC90YXJnZXQ6Y2xlYW4gUENidWlsZFxwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPXg2NAorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT14NjQKKworY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODYKK21zYnVpbGQgL25vY29uc29sZWxvZ2dlciBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMgorbXNidWlsZCAvbm9jb25zb2xlbG9nZ2VyIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT1XaW4zMgorZWNoby4KK2VjaG8uCisKK2VjaG8uCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNobyAjICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2RlY2ltYWw6IHBsYXRmb3JtPXg2NAorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2NkIFBDYnVpbGRcYW1kNjQKKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZmxlYWsgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLW0gdGVzdCAtdWFsbCAtUiAyOjIgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworY2QgLi4KKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfZGVjaW1hbDogcGxhdGZvcm09eDg2CitlY2hvICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZmxlYWsgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLW0gdGVzdCAtdWFsbCAtUiAyOjIgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT09IHJlZ3VsYXIgdGVzdHMgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob24uZXhlIC1tIHRlc3QgLXVhbGwgdGVzdF9kZWNpbWFsCitlY2hvLgorZWNoby4KKworY2QgYW1kNjQKKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgZGVjY2hlY2s6IHBsYXRmb3JtPXg2NAorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PSBkZWJ1ZyBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbl9kLmV4ZSAuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworZWNobyAjID09PT09PT09PT09PT09PT09PT0gcmVsZWFzZSBidWlsZCA9PT09PT09PT09PT09PT09PT09PT09CitlY2hvLgorcHl0aG9uLmV4ZSAuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXHRlc3RzXGRlY2NoZWNrLnB5CitlY2hvLgorZWNoby4KKworY2QgLi4KKworZWNoby4KK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitlY2hvICMgICAgICAgICAgICAgICAgICAgICAgICAgZGVjY2hlY2s6IHBsYXRmb3JtPXg4NgorZWNobyAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitlY2hvLgorCitlY2hvICMgPT09PT09PT09PT09PT09PT09PT0gZGVidWcgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PT0KK2VjaG8uCitweXRob25fZC5leGUgLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKK2VjaG8gIyA9PT09PT09PT09PT09PT09PT09IHJlbGVhc2UgYnVpbGQgPT09PT09PT09PT09PT09PT09PT09PQorZWNoby4KK3B5dGhvbi5leGUgLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0c1xkZWNjaGVjay5weQorZWNoby4KK2VjaG8uCisKKworY2QgLi5cTW9kdWxlc1xfZGVjaW1hbFx0ZXN0cworCisKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKaW5kZXggYzM2YWY1ZC4uMGM4YWJjZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZWxlbWVudHRyZWUuYworKysgYi9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCkBAIC00OCw2ICs0OCw3IEBACiAvKiBTZWUgaHR0cDovL3d3dy5weXRob24ub3JnL3BzZi9saWNlbnNlIGZvciBsaWNlbnNpbmcgZGV0YWlscy4gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiAjZGVmaW5lIFZFUlNJT04gIjEuMC42IgogCkBAIC01Nyw5ICs1OCw2IEBACiAvKiBMZWF2ZSBkZWZpbmVkIHRvIGluY2x1ZGUgdGhlIGV4cGF0LWJhc2VkIFhNTFBhcnNlciB0eXBlICovCiAjZGVmaW5lIFVTRV9FWFBBVAogCi0vKiBEZWZpbmUgdG8gZG8gYWxsIGV4cGF0IGNhbGxzIHZpYSBweWV4cGF0J3MgZW1iZWRkZWQgZXhwYXQgbGlicmFyeSAqLwotLyogI2RlZmluZSBVU0VfUFlFWFBBVF9DQVBJICovCi0KIC8qIEFuIGVsZW1lbnQgY2FuIGhvbGQgdGhpcyBtYW55IGNoaWxkcmVuIHdpdGhvdXQgZXh0cmEgbWVtb3J5CiAgICBhbGxvY2F0aW9ucy4gKi8KICNkZWZpbmUgU1RBVElDX0NISUxEUkVOIDQKQEAgLTcwLDcgKzY4LDcgQEAKICAgIGhlbHBzIGlmIHlvdSBoYXZlIGxvdHMgb2YgbGVhZiBub2RlcyB3aXRoIGF0dHJpYnV0ZXMpLiAqLwogCiAvKiBBbHNvIG5vdGUgdGhhdCBweW1hbGxvYyBhbHdheXMgYWxsb2NhdGVzIGJsb2NrcyBpbiBtdWx0aXBsZXMgb2YKLSAgIGVpZ2h0IGJ5dGVzLiAgRm9yIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgY0VsZW1lbnRUcmVlLCB0aGlzIG1lYW5zCisgICBlaWdodCBieXRlcy4gIEZvciB0aGUgY3VycmVudCBDIHZlcnNpb24gb2YgRWxlbWVudFRyZWUsIHRoaXMgbWVhbnMKICAgIHRoYXQgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBzaG91bGQgYmUgYW4gZXZlbiBudW1iZXIsIGF0IGxlYXN0IG9uCiAgICAzMi1iaXQgcGxhdGZvcm1zLiAqLwogCkBAIC05NCwzOSArOTIsMTcgQEAKICNkZWZpbmUgTE9DQUwodHlwZSkgc3RhdGljIHR5cGUKICNlbmRpZgogCi0vKiBjb21wYXRpYmlsaXR5IG1hY3JvcyAqLwotI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNjAwMDApCi0jZGVmaW5lIFB5X1JFRkNOVChvYikgKCgoUHlPYmplY3QqKShvYikpLT5vYl9yZWZjbnQpCi0jZGVmaW5lIFB5X1RZUEUob2IpICgoKFB5T2JqZWN0Kikob2IpKS0+b2JfdHlwZSkKLSNlbmRpZgotCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLXR5cGVkZWYgaW50IFB5X3NzaXplX3Q7Ci0jZGVmaW5lIGxlbmZ1bmMgaW5xdWlyeQotI2VuZGlmCi0KLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDQwMDAwKQotI2RlZmluZSBQeURpY3RfQ2hlY2tFeGFjdCBQeURpY3RfQ2hlY2sKLQotI2lmICFkZWZpbmVkKFB5X1JFVFVSTl9OT05FKQotI2RlZmluZSBQeV9SRVRVUk5fTk9ORSByZXR1cm4gUHlfSU5DUkVGKFB5X05vbmUpLCBQeV9Ob25lCi0jZW5kaWYKLSNlbmRpZgotCiAvKiBtYWNyb3MgdXNlZCB0byBzdG9yZSAnam9pbicgZmxhZ3MgaW4gc3RyaW5nIG9iamVjdCBwb2ludGVycy4gIG5vdGUKICAgIHRoYXQgYWxsIHVzZSBvZiB0ZXh0IGFuZCB0YWlsIGFzIG9iamVjdCBwb2ludGVycyBtdXN0IGJlIHdyYXBwZWQgaW4KICAgIEpPSU5fT0JKLiAgc2VlIGNvbW1lbnRzIGluIHRoZSBFbGVtZW50T2JqZWN0IGRlZmluaXRpb24gZm9yIG1vcmUKICAgIGluZm8uICovCiAjZGVmaW5lIEpPSU5fR0VUKHApICgoUHlfdWludHB0cl90KSAocCkgJiAxKQogI2RlZmluZSBKT0lOX1NFVChwLCBmbGFnKSAoKHZvaWQqKSAoKFB5X3VpbnRwdHJfdCkgKEpPSU5fT0JKKHApKSB8IChmbGFnKSkpCi0jZGVmaW5lIEpPSU5fT0JKKHApICgoUHlPYmplY3QqKSAoKFB5X3VpbnRwdHJfdCkgKHApICYgfjEpKQorI2RlZmluZSBKT0lOX09CSihwKSAoKFB5T2JqZWN0KikgKChQeV91aW50cHRyX3QpIChwKSAmIH4oUHlfdWludHB0cl90KTEpKQogCiAvKiBnbHVlIGZ1bmN0aW9ucyAoc2VlIHRoZSBpbml0IGZ1bmN0aW9uIGZvciBkZXRhaWxzKSAqLwogc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iajsKLXN0YXRpYyBQeU9iamVjdCogZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqOwogc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9kZWVwY29weV9vYmo7Ci1zdGF0aWMgUHlPYmplY3QqIGVsZW1lbnR0cmVlX2l0ZXJfb2JqOwotc3RhdGljIFB5T2JqZWN0KiBlbGVtZW50dHJlZV9pdGVydGV4dF9vYmo7CiBzdGF0aWMgUHlPYmplY3QqIGVsZW1lbnRwYXRoX29iajsKIAogLyogaGVscGVycyAqLwpAQCAtMTQ3LDE3ICsxMjMsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgYXJncyA9IFB5VHVwbGVfTmV3KDIpOworICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgb2JqZWN0LCBtZW1vKTsKICAgICBpZiAoIWFyZ3MpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKG9iamVjdCk7IFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgKFB5T2JqZWN0Kikgb2JqZWN0KTsKLSAgICBQeV9JTkNSRUYobWVtbyk7ICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCAoUHlPYmplY3QqKSBtZW1vKTsKLQogICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxPYmplY3QoZWxlbWVudHRyZWVfZGVlcGNvcHlfb2JqLCBhcmdzKTsKLQogICAgIFB5X0RFQ1JFRihhcmdzKTsKLQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE2NSw1MyArMTM1LDMwIEBACiBsaXN0X2pvaW4oUHlPYmplY3QqIGxpc3QpCiB7CiAgICAgLyogam9pbiBsaXN0IGVsZW1lbnRzIChkZXN0cm95aW5nIHRoZSBsaXN0IGluIHRoZSBwcm9jZXNzKSAqLwotCiAgICAgUHlPYmplY3QqIGpvaW5lcjsKLSAgICBQeU9iamVjdCogZnVuY3Rpb247Ci0gICAgUHlPYmplY3QqIGFyZ3M7CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKIAotICAgIHN3aXRjaCAoUHlMaXN0X0dFVF9TSVpFKGxpc3QpKSB7Ci0gICAgY2FzZSAwOgotICAgICAgICBQeV9ERUNSRUYobGlzdCk7Ci0gICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmcoIiIpOwotICAgIGNhc2UgMToKLSAgICAgICAgcmVzdWx0ID0gUHlMaXN0X0dFVF9JVEVNKGxpc3QsIDApOwotICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlfREVDUkVGKGxpc3QpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8qIHR3byBvciBtb3JlIGVsZW1lbnRzOiBzbGljZSBvdXQgYSBzdWl0YWJsZSBzZXBhcmF0b3IgZnJvbSB0aGUKLSAgICAgICBmaXJzdCBtZW1iZXIsIGFuZCB1c2UgdGhhdCB0byBqb2luIHRoZSBlbnRpcmUgbGlzdCAqLwotCi0gICAgam9pbmVyID0gUHlTZXF1ZW5jZV9HZXRTbGljZShQeUxpc3RfR0VUX0lURU0obGlzdCwgMCksIDAsIDApOworICAgIGpvaW5lciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CiAgICAgaWYgKCFqb2luZXIpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZnVuY3Rpb24gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGpvaW5lciwgImpvaW4iKTsKLSAgICBpZiAoIWZ1bmN0aW9uKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihqb2luZXIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKCFhcmdzKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbGlzdCk7Ci0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGZ1bmN0aW9uLCBhcmdzKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsgLyogYWxzbyByZW1vdmVzIGxpc3QgKi8KLSAgICBQeV9ERUNSRUYoZnVuY3Rpb24pOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Kb2luKGpvaW5lciwgbGlzdCk7CiAgICAgUHlfREVDUkVGKGpvaW5lcik7Ci0KKyAgICBpZiAocmVzdWx0KQorICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorLyogSXMgdGhlIGdpdmVuIG9iamVjdCBhbiBlbXB0eSBkaWN0aW9uYXJ5PworKi8KK3N0YXRpYyBpbnQKK2lzX2VtcHR5X2RpY3QoUHlPYmplY3QgKm9iaikKK3sKKyAgICByZXR1cm4gUHlEaWN0X0NoZWNrRXhhY3Qob2JqKSAmJiBQeURpY3RfU2l6ZShvYmopID09IDA7Cit9CisKKwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIHRoZSBlbGVtZW50IHR5cGUgKi8KKy8qIHRoZSBFbGVtZW50IHR5cGUgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgewogCkBAIC0yMjYsNyArMTczLDcgQEAKICAgICBQeU9iamVjdCogKmNoaWxkcmVuOwogCiAgICAgUHlPYmplY3QqIF9jaGlsZHJlbltTVEFUSUNfQ0hJTERSRU5dOwotICAgIAorCiB9IEVsZW1lbnRPYmplY3RFeHRyYTsKIAogdHlwZWRlZiBzdHJ1Y3QgewpAQCAtMjQ5LDYgKzE5Niw4IEBACiAKICAgICBFbGVtZW50T2JqZWN0RXh0cmEqIGV4dHJhOwogCisgICAgUHlPYmplY3QgKndlYWtyZWZsaXN0OyAvKiBGb3IgdHBfd2Vha2xpc3RvZmZzZXQgKi8KKwogfSBFbGVtZW50T2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEVsZW1lbnRfVHlwZTsKQEAgLTI1NiwxMCArMjA1LDEwIEBACiAjZGVmaW5lIEVsZW1lbnRfQ2hlY2tFeGFjdChvcCkgKFB5X1RZUEUob3ApID09ICZFbGVtZW50X1R5cGUpCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBlbGVtZW50IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCisvKiBFbGVtZW50IGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvciAqLwogCiBMT0NBTChpbnQpCi1lbGVtZW50X25ld19leHRyYShFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXR0cmliKQorY3JlYXRlX2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhdHRyaWIpCiB7CiAgICAgc2VsZi0+ZXh0cmEgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKEVsZW1lbnRPYmplY3RFeHRyYSkpOwogICAgIGlmICghc2VsZi0+ZXh0cmEpCkBAIC0yNzksNDcgKzIyOCw0OCBAQAogfQogCiBMT0NBTCh2b2lkKQotZWxlbWVudF9kZWFsbG9jX2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYpCitkZWFsbG9jX2V4dHJhKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7CisgICAgRWxlbWVudE9iamVjdEV4dHJhICpteWV4dHJhOwogICAgIGludCBpOwogCi0gICAgUHlfREVDUkVGKHNlbGYtPmV4dHJhLT5hdHRyaWIpOworICAgIGlmICghc2VsZi0+ZXh0cmEpCisgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpKyspCi0gICAgICAgIFB5X0RFQ1JFRihzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV0pOworICAgIC8qIEF2b2lkIERFQ1JFRnMgY2FsbGluZyBpbnRvIHRoaXMgY29kZSBhZ2FpbiAoY3ljbGVzLCBldGMuKQorICAgICovCisgICAgbXlleHRyYSA9IHNlbGYtPmV4dHJhOworICAgIHNlbGYtPmV4dHJhID0gTlVMTDsKIAotICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW4gIT0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbikKLSAgICAgICAgUHlPYmplY3RfRnJlZShzZWxmLT5leHRyYS0+Y2hpbGRyZW4pOworICAgIFB5X0RFQ1JFRihteWV4dHJhLT5hdHRyaWIpOwogCi0gICAgUHlPYmplY3RfRnJlZShzZWxmLT5leHRyYSk7CisgICAgZm9yIChpID0gMDsgaSA8IG15ZXh0cmEtPmxlbmd0aDsgaSsrKQorICAgICAgICBQeV9ERUNSRUYobXlleHRyYS0+Y2hpbGRyZW5baV0pOworCisgICAgaWYgKG15ZXh0cmEtPmNoaWxkcmVuICE9IG15ZXh0cmEtPl9jaGlsZHJlbikKKyAgICAgICAgUHlPYmplY3RfRnJlZShteWV4dHJhLT5jaGlsZHJlbik7CisKKyAgICBQeU9iamVjdF9GcmVlKG15ZXh0cmEpOwogfQogCisvKiBDb252ZW5pZW5jZSBpbnRlcm5hbCBmdW5jdGlvbiB0byBjcmVhdGUgbmV3IEVsZW1lbnQgb2JqZWN0cyB3aXRoIHRoZSBnaXZlbgorICogdGFnIGFuZCBhdHRyaWJ1dGVzLgorKi8KIExPQ0FMKFB5T2JqZWN0KikKLWVsZW1lbnRfbmV3KFB5T2JqZWN0KiB0YWcsIFB5T2JqZWN0KiBhdHRyaWIpCitjcmVhdGVfbmV3X2VsZW1lbnQoUHlPYmplY3QqIHRhZywgUHlPYmplY3QqIGF0dHJpYikKIHsKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmOwogCi0gICAgc2VsZiA9IFB5T2JqZWN0X05ldyhFbGVtZW50T2JqZWN0LCAmRWxlbWVudF9UeXBlKTsKKyAgICBzZWxmID0gUHlPYmplY3RfR0NfTmV3KEVsZW1lbnRPYmplY3QsICZFbGVtZW50X1R5cGUpOwogICAgIGlmIChzZWxmID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogdXNlIE5vbmUgZm9yIGVtcHR5IGRpY3Rpb25hcmllcyAqLwotICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChhdHRyaWIpICYmICFQeURpY3RfU2l6ZShhdHRyaWIpKQotICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwotCiAgICAgc2VsZi0+ZXh0cmEgPSBOVUxMOwogCi0gICAgaWYgKGF0dHJpYiAhPSBQeV9Ob25lKSB7Ci0KLSAgICAgICAgaWYgKGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIGF0dHJpYikgPCAwKSB7CisgICAgaWYgKGF0dHJpYiAhPSBQeV9Ob25lICYmICFpc19lbXB0eV9kaWN0KGF0dHJpYikpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9leHRyYShzZWxmLCBhdHRyaWIpIDwgMCkgewogICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLQotICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoID0gMDsKLSAgICAgICAgc2VsZi0+ZXh0cmEtPmFsbG9jYXRlZCA9IFNUQVRJQ19DSElMRFJFTjsKLSAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuID0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbjsKLQogICAgIH0KIAogICAgIFB5X0lOQ1JFRih0YWcpOwpAQCAtMzMxLDExICsyODEsMTI4IEBACiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHNlbGYtPnRhaWwgPSBQeV9Ob25lOwogCi0gICAgQUxMT0Moc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAiY3JlYXRlIGVsZW1lbnQiKTsKKyAgICBzZWxmLT53ZWFrcmVmbGlzdCA9IE5VTEw7CiAKKyAgICBBTExPQyhzaXplb2YoRWxlbWVudE9iamVjdCksICJjcmVhdGUgZWxlbWVudCIpOworICAgIFB5T2JqZWN0X0dDX1RyYWNrKHNlbGYpOwogICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgRWxlbWVudE9iamVjdCAqZSA9IChFbGVtZW50T2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKGUgIT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGUtPnRhZyA9IFB5X05vbmU7CisKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBlLT50ZXh0ID0gUHlfTm9uZTsKKworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIGUtPnRhaWwgPSBQeV9Ob25lOworCisgICAgICAgIGUtPmV4dHJhID0gTlVMTDsKKyAgICAgICAgZS0+d2Vha3JlZmxpc3QgPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopZTsKK30KKworLyogSGVscGVyIGZ1bmN0aW9uIGZvciBleHRyYWN0aW5nIHRoZSBhdHRyaWIgZGljdGlvbmFyeSBmcm9tIGEga2V5d29yZHMgZGljdC4KKyAqIFRoaXMgaXMgcmVxdWlyZWQgYnkgc29tZSBjb25zdHJ1Y3RvcnMvZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHRoYXQgY2FuCisgKiBlaXRoZXIgYWNjZXB0IGF0dHJpYiBhcyBhIGtleXdvcmQgYXJndW1lbnQgb3IgYWxsIGF0dHJpYnV0ZXMgc3BsYXNoZWQgCisgKiBkaXJlY3RseSBpbnRvICprd2RzLgorICogSWYgdGhlcmUgaXMgbm8gJ2F0dHJpYicga2V5d29yZCwgcmV0dXJuIGFuIGVtcHR5IGRpY3QuCisgKi8KK3N0YXRpYyBQeU9iamVjdCoKK2dldF9hdHRyaWJfZnJvbV9rZXl3b3JkcyhQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqYXR0cmliX3N0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJhdHRyaWIiKTsKKyAgICBQeU9iamVjdCAqYXR0cmliID0gUHlEaWN0X0dldEl0ZW0oa3dkcywgYXR0cmliX3N0cik7CisKKyAgICBpZiAoYXR0cmliKSB7CisgICAgICAgIC8qIElmIGF0dHJpYiB3YXMgZm91bmQgaW4ga3dkcywgY29weSBpdHMgdmFsdWUgYW5kIHJlbW92ZSBpdCBmcm9tCisgICAgICAgICAqIGt3ZHMKKyAgICAgICAgICovCisgICAgICAgIGlmICghUHlEaWN0X0NoZWNrKGF0dHJpYikpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWJfc3RyKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJhdHRyaWIgbXVzdCBiZSBkaWN0LCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGF0dHJpYiktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKKyAgICAgICAgUHlEaWN0X0RlbEl0ZW0oa3dkcywgYXR0cmliX3N0cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOworICAgIH0KKworICAgIFB5X0RFQ1JFRihhdHRyaWJfc3RyKTsKKworICAgIGlmIChhdHRyaWIpCisgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKTsKKyAgICByZXR1cm4gYXR0cmliOworfQorCitzdGF0aWMgaW50CitlbGVtZW50X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqdGFnOworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgUHlPYmplY3QgKmF0dHJpYiA9IE5VTEw7CisgICAgRWxlbWVudE9iamVjdCAqc2VsZl9lbGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8hOkVsZW1lbnQiLCAmdGFnLCAmUHlEaWN0X1R5cGUsICZhdHRyaWIpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoYXR0cmliKSB7CisgICAgICAgIC8qIGF0dHJpYiBwYXNzZWQgYXMgcG9zaXRpb25hbCBhcmcgKi8KKyAgICAgICAgYXR0cmliID0gUHlEaWN0X0NvcHkoYXR0cmliKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChrd2RzKSB7CisgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShhdHRyaWIsIGt3ZHMpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa3dkcykgeworICAgICAgICAvKiBoYXZlIGtleXdvcmRzIGFyZ3MgKi8KKyAgICAgICAgYXR0cmliID0gZ2V0X2F0dHJpYl9mcm9tX2tleXdvcmRzKGt3ZHMpOworICAgICAgICBpZiAoIWF0dHJpYikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmX2VsZW0gPSAoRWxlbWVudE9iamVjdCAqKXNlbGY7CisKKyAgICBpZiAoYXR0cmliICE9IE5VTEwgJiYgIWlzX2VtcHR5X2RpY3QoYXR0cmliKSkgeworICAgICAgICBpZiAoY3JlYXRlX2V4dHJhKHNlbGZfZWxlbSwgYXR0cmliKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgLyogV2Ugb3duIGEgcmVmZXJlbmNlIHRvIGF0dHJpYiBoZXJlIGFuZCBpdCdzIG5vIGxvbmdlciBuZWVkZWQuICovCisgICAgUHlfWERFQ1JFRihhdHRyaWIpOworCisgICAgLyogUmVwbGFjZSB0aGUgb2JqZWN0cyBhbHJlYWR5IHBvaW50ZWQgdG8gYnkgdGFnLCB0ZXh0IGFuZCB0YWlsLiAqLworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFnOworICAgIFB5X0lOQ1JFRih0YWcpOworICAgIHNlbGZfZWxlbS0+dGFnID0gdGFnOworICAgIFB5X0RFQ1JFRih0bXApOworCisgICAgdG1wID0gc2VsZl9lbGVtLT50ZXh0OworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICBzZWxmX2VsZW0tPnRleHQgPSBQeV9Ob25lOworICAgIFB5X0RFQ1JFRihKT0lOX09CSih0bXApKTsKKworICAgIHRtcCA9IHNlbGZfZWxlbS0+dGFpbDsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgc2VsZl9lbGVtLT50YWlsID0gUHlfTm9uZTsKKyAgICBQeV9ERUNSRUYoSk9JTl9PQkoodG1wKSk7CisKKyAgICByZXR1cm4gMDsKK30KKwogTE9DQUwoaW50KQogZWxlbWVudF9yZXNpemUoRWxlbWVudE9iamVjdCogc2VsZiwgaW50IGV4dHJhKQogewpAQCAtMzQ2LDcgKzQxMyw3IEBACiAgICAgICAgZWxlbWVudHMuICBzZXQgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgaWYgYWxsb2NhdGlvbiBmYWlsZWQgKi8KIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBzaXplID0gc2VsZi0+ZXh0cmEtPmxlbmd0aCArIGV4dHJhOwogCkBAIC0zNTQsMTQgKzQyMSwxNCBAQAogICAgICAgICAvKiB1c2UgUHl0aG9uIDIuNCdzIGxpc3QgZ3Jvd3RoIHN0cmF0ZWd5ICovCiAgICAgICAgIHNpemUgPSAoc2l6ZSA+PiAzKSArIChzaXplIDwgOSA/IDMgOiA2KSArIHNpemU7CiAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyICJjaGlsZHJlbiIKLSAgICAgICAgICogd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4gCi0gICAgICAgICAqIEFsdGhvdWdoIGl0J3MgYSBmYWxzZSBhbGFybSBhbHdheXMgYXNzdW1lIGF0IGxlYXN0IG9uZSBjaGlsZCB0byAKKyAgICAgICAgICogd2hpY2ggbmVlZHMgYXQgbGVhc3QgNCBieXRlcy4KKyAgICAgICAgICogQWx0aG91Z2ggaXQncyBhIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvCiAgICAgICAgICAqIGJlIHNhZmUuCiAgICAgICAgICAqLwogICAgICAgICBzaXplID0gc2l6ZSA/IHNpemUgOiAxOwogICAgICAgICBpZiAoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICE9IHNlbGYtPmV4dHJhLT5fY2hpbGRyZW4pIHsKICAgICAgICAgICAgIC8qIENvdmVyaXR5IENJRCAjMTgyIHNpemVfZXJyb3I6IEFsbG9jYXRpbmcgMSBieXRlcyB0byBwb2ludGVyCi0gICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEgCisgICAgICAgICAgICAgKiAiY2hpbGRyZW4iLCB3aGljaCBuZWVkcyBhdCBsZWFzdCA0IGJ5dGVzLiBBbHRob3VnaCBpdCdzIGEKICAgICAgICAgICAgICAqIGZhbHNlIGFsYXJtIGFsd2F5cyBhc3N1bWUgYXQgbGVhc3Qgb25lIGNoaWxkIHRvIGJlIHNhZmUuCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNoaWxkcmVuID0gUHlPYmplY3RfUmVhbGxvYyhzZWxmLT5leHRyYS0+Y2hpbGRyZW4sCkBAIC00MTIsMTEgKzQ3OSwxMSBAQAogICAgIFB5T2JqZWN0KiByZXMgPSBzZWxmLT5leHRyYS0+YXR0cmliOwogCiAgICAgaWYgKHJlcyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAvKiBjcmVhdGUgbWlzc2luZyBkaWN0aW9uYXJ5ICovCiAgICAgICAgIHJlcyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKCFyZXMpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKFB5X05vbmUpOwogICAgICAgICBzZWxmLT5leHRyYS0+YXR0cmliID0gcmVzOwogICAgIH0KIApAQCAtNDY0LDM2ICs1MzEsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQotewotICAgIFB5T2JqZWN0KiBlbGVtOwotCi0gICAgUHlPYmplY3QqIHRhZzsKLSAgICBQeU9iamVjdCogYXR0cmliID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98TyE6RWxlbWVudCIsICZ0YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJmF0dHJpYikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGF0dHJpYiB8fCBrdykgewotICAgICAgICBhdHRyaWIgPSAoYXR0cmliKSA/IFB5RGljdF9Db3B5KGF0dHJpYikgOiBQeURpY3RfTmV3KCk7Ci0gICAgICAgIGlmICghYXR0cmliKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChrdykKLSAgICAgICAgICAgIFB5RGljdF9VcGRhdGUoYXR0cmliLCBrdyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwotICAgIH0KLQotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7Ci0KLSAgICBQeV9ERUNSRUYoYXR0cmliKTsKLQotICAgIHJldHVybiBlbGVtOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1zdWJlbGVtZW50KFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQorc3ViZWxlbWVudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0KiBlbGVtOwogCkBAIC01MDUsMTggKzU0MywyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZhdHRyaWIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChhdHRyaWIgfHwga3cpIHsKLSAgICAgICAgYXR0cmliID0gKGF0dHJpYikgPyBQeURpY3RfQ29weShhdHRyaWIpIDogUHlEaWN0X05ldygpOworICAgIGlmIChhdHRyaWIpIHsKKyAgICAgICAgLyogYXR0cmliIHBhc3NlZCBhcyBwb3NpdGlvbmFsIGFyZyAqLworICAgICAgICBhdHRyaWIgPSBQeURpY3RfQ29weShhdHRyaWIpOwogICAgICAgICBpZiAoIWF0dHJpYikKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoa3cpCi0gICAgICAgICAgICBQeURpY3RfVXBkYXRlKGF0dHJpYiwga3cpOworICAgICAgICBpZiAoa3dkcykgeworICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoYXR0cmliLCBrd2RzKSA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa3dkcykgeworICAgICAgICAvKiBoYXZlIGtleXdvcmQgYXJncyAqLworICAgICAgICBhdHRyaWIgPSBnZXRfYXR0cmliX2Zyb21fa2V5d29yZHMoa3dkcyk7CisgICAgICAgIGlmICghYXR0cmliKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbm8gYXR0cmliIGFyZywgbm8ga3dkcywgc28gbm8gYXR0cmlidXRlICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKICAgICB9CiAKLSAgICBlbGVtID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOworICAgIGVsZW0gPSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKQEAgLTUyOCwyMCArNTc2LDY1IEBACiAgICAgcmV0dXJuIGVsZW07CiB9CiAKK3N0YXRpYyBpbnQKK2VsZW1lbnRfZ2NfdHJhdmVyc2UoRWxlbWVudE9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+dGFnKTsKKyAgICBQeV9WSVNJVChKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgUHlfVklTSVQoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworCisgICAgaWYgKHNlbGYtPmV4dHJhKSB7CisgICAgICAgIGludCBpOworICAgICAgICBQeV9WSVNJVChzZWxmLT5leHRyYS0+YXR0cmliKTsKKworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2VsZi0+ZXh0cmEtPmxlbmd0aDsgKytpKQorICAgICAgICAgICAgUHlfVklTSVQoc2VsZi0+ZXh0cmEtPmNoaWxkcmVuW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2VsZW1lbnRfZ2NfY2xlYXIoRWxlbWVudE9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT50YWcpOworCisgICAgLyogVGhlIGZvbGxvd2luZyBpcyBsaWtlIFB5X0NMRUFSIGZvciBzZWxmLT50ZXh0IGFuZCBzZWxmLT50YWlsLCBidXQKKyAgICAgKiB3cml0dGVuIGV4cGxpY2l0aWx5IGJlY2F1c2UgdGhlIHJlYWwgcG9pbnRlcnMgaGlkZSBiZWhpbmQgYWNjZXNzCisgICAgICogbWFjcm9zLgorICAgICovCisgICAgaWYgKHNlbGYtPnRleHQpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IEpPSU5fT0JKKHNlbGYtPnRleHQpOworICAgICAgICBzZWxmLT50ZXh0ID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgaWYgKHNlbGYtPnRhaWwpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IEpPSU5fT0JKKHNlbGYtPnRhaWwpOworICAgICAgICBzZWxmLT50YWlsID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgfQorCisgICAgLyogQWZ0ZXIgZHJvcHBpbmcgYWxsIHJlZmVyZW5jZXMgZnJvbSBleHRyYSwgaXQncyBubyBsb25nZXIgdmFsaWQgYW55d2F5LAorICAgICAqIHNvIGZ1bGx5IGRlYWxsb2NhdGUgaXQuCisgICAgKi8KKyAgICBkZWFsbG9jX2V4dHJhKHNlbGYpOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZAogZWxlbWVudF9kZWFsbG9jKEVsZW1lbnRPYmplY3QqIHNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X2RlYWxsb2NfZXh0cmEoc2VsZik7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKIAotICAgIC8qIGRpc2NhcmQgYXR0cmlidXRlcyAqLwotICAgIFB5X0RFQ1JFRihzZWxmLT50YWcpOwotICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisKKyAgICAvKiBlbGVtZW50X2djX2NsZWFyIGNsZWFycyBhbGwgcmVmZXJlbmNlcyBhbmQgZGVhbGxvY2F0ZXMgZXh0cmEKKyAgICAqLworICAgIGVsZW1lbnRfZ2NfY2xlYXIoc2VsZik7CiAKICAgICBSRUxFQVNFKHNpemVvZihFbGVtZW50T2JqZWN0KSwgImRlc3Ryb3kgZWxlbWVudCIpOwotCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC01NjEsMTUgKzY1NCwxMiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2NsZWFyKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9jbGVhcm1ldGhvZChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpjbGVhciIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICBlbGVtZW50X2RlYWxsb2NfZXh0cmEoc2VsZik7Ci0gICAgICAgIHNlbGYtPmV4dHJhID0gTlVMTDsKLSAgICB9CisgICAgZGVhbGxvY19leHRyYShzZWxmKTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+dGV4dCkpOwpAQCAtNTkxLDcgKzY4MSw3IEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6X19jb3B5X18iKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBlbGVtZW50X25ldygKKyAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQoCiAgICAgICAgIHNlbGYtPnRhZywgKHNlbGYtPmV4dHJhKSA/IHNlbGYtPmV4dHJhLT5hdHRyaWIgOiBQeV9Ob25lCiAgICAgICAgICk7CiAgICAgaWYgKCFlbGVtZW50KQpAQCAtNjA2LDcgKzY5Niw3IEBACiAgICAgUHlfSU5DUkVGKEpPSU5fT0JKKGVsZW1lbnQtPnRhaWwpKTsKIAogICAgIGlmIChzZWxmLT5leHRyYSkgewotICAgICAgICAKKwogICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoZWxlbWVudCwgc2VsZi0+ZXh0cmEtPmxlbmd0aCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYxOCw3ICs3MDgsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC0+ZXh0cmEtPmxlbmd0aCA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7Ci0gICAgICAgIAorCiAgICAgfQogCiAgICAgcmV0dXJuIChQeU9iamVjdCopIGVsZW1lbnQ7CkBAIC02NTQsMTQgKzc0NCwxNCBAQAogICAgICAgICBhdHRyaWIgPSBQeV9Ob25lOwogICAgIH0KIAotICAgIGVsZW1lbnQgPSAoRWxlbWVudE9iamVjdCopIGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKKyAgICBlbGVtZW50ID0gKEVsZW1lbnRPYmplY3QqKSBjcmVhdGVfbmV3X2VsZW1lbnQodGFnLCBhdHRyaWIpOwogCiAgICAgUHlfREVDUkVGKHRhZyk7CiAgICAgUHlfREVDUkVGKGF0dHJpYik7CiAKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIAorCiAgICAgdGV4dCA9IGRlZXBjb3B5KEpPSU5fT0JKKHNlbGYtPnRleHQpLCBtZW1vKTsKICAgICBpZiAoIXRleHQpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC02NzUsNyArNzY1LDcgQEAKICAgICBlbGVtZW50LT50YWlsID0gSk9JTl9TRVQodGFpbCwgSk9JTl9HRVQoc2VsZi0+dGFpbCkpOwogCiAgICAgaWYgKHNlbGYtPmV4dHJhKSB7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChlbGVtZW50X3Jlc2l6ZShlbGVtZW50LCBzZWxmLT5leHRyYS0+bGVuZ3RoKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC02ODksMTEgKzc3OSwxMSBAQAogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC0+ZXh0cmEtPmxlbmd0aCA9IHNlbGYtPmV4dHJhLT5sZW5ndGg7Ci0gICAgICAgIAorCiAgICAgfQogCiAgICAgLyogYWRkIG9iamVjdCB0byBtZW1vIGRpY3Rpb25hcnkgKHNvIGRlZXBjb3B5IHdvbid0IHZpc2l0IGl0IGFnYWluKSAqLwotICAgIGlkID0gUHlMb25nX0Zyb21Mb25nKChQeV91aW50cHRyX3QpIHNlbGYpOworICAgIGlkID0gUHlMb25nX0Zyb21Tc2l6ZV90KChQeV91aW50cHRyX3QpIHNlbGYpOwogICAgIGlmICghaWQpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTcxMSw2ICs4MDEsMTkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorZWxlbWVudF9zaXplb2YoUHlPYmplY3QqIF9zZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBFbGVtZW50T2JqZWN0ICpzZWxmID0gKEVsZW1lbnRPYmplY3QqKV9zZWxmOworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gc2l6ZW9mKEVsZW1lbnRPYmplY3QpOworICAgIGlmIChzZWxmLT5leHRyYSkgeworICAgICAgICByZXN1bHQgKz0gc2l6ZW9mKEVsZW1lbnRPYmplY3RFeHRyYSk7CisgICAgICAgIGlmIChzZWxmLT5leHRyYS0+Y2hpbGRyZW4gIT0gc2VsZi0+ZXh0cmEtPl9jaGlsZHJlbikKKyAgICAgICAgICAgIHJlc3VsdCArPSBzaXplb2YoUHlPYmplY3QqKSAqIHNlbGYtPmV4dHJhLT5hbGxvY2F0ZWQ7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKK30KKwogTE9DQUwoaW50KQogY2hlY2twYXRoKFB5T2JqZWN0KiB0YWcpCiB7CkBAIC03MjMsMTMgKzgyNiwxNiBAQAogICAgIChjaCA9PSAnLycgfHwgY2ggPT0gJyonIHx8IGNoID09ICdbJyB8fCBjaCA9PSAnQCcgfHwgY2ggPT0gJy4nKQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0YWcpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0YWcpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlVbmljb2RlX0dFVF9TSVpFKHRhZyk7IGkrKykgewotICAgICAgICAgICAgaWYgKHBbaV0gPT0gJ3snKQorICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRhZyk7CisgICAgICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh0YWcpOworICAgICAgICB1bnNpZ25lZCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHRhZyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgaWYgKGNoID09ICd7JykKICAgICAgICAgICAgICAgICBjaGVjayA9IDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChwW2ldID09ICd9JykKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICd9JykKICAgICAgICAgICAgICAgICBjaGVjayA9IDE7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaGVjayAmJiBQQVRIQ0hBUihwW2ldKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoZWNrICYmIFBBVEhDSEFSKGNoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTc3Miw2ICs4NzgsMTUgQEAKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX1NpemUoc2VxKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgc2VxbGVuOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGVsZW1lbnQgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeU9iamVjdF9Jc0luc3RhbmNlKGVsZW1lbnQsIChQeU9iamVjdCAqKSZFbGVtZW50X1R5cGUpKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIEVsZW1lbnQsIG5vdCBcIiUuMjAwc1wiIiwKKyAgICAgICAgICAgICAgICBQeV9UWVBFKGVsZW1lbnQpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKICAgICAgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoc2VsZiwgZWxlbWVudCkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VxKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzg0LDIzICs4OTksMjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIG5hbWVzcGFjZXMgPSBQeV9Ob25lOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOmZpbmQiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgIm5hbWVzcGFjZXMiLCAwfTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE86ZmluZCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmbmFtZXNwYWNlcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICJmaW5kIiwgIk9PTyIsIHNlbGYsIHRhZywgbmFtZXNwYWNlcworICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZmluZCk7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAmUHlJZF9maW5kLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOworICAgIH0KIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwotICAgICAgICAKKwogICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5leHRyYS0+bGVuZ3RoOyBpKyspIHsKICAgICAgICAgUHlPYmplY3QqIGl0ZW0gPSBzZWxmLT5leHRyYS0+Y2hpbGRyZW5baV07CiAgICAgICAgIGlmIChFbGVtZW50X0NoZWNrRXhhY3QoaXRlbSkgJiYKQEAgLTgxNCwxOSArOTMzLDIyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfZmluZHRleHQoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2ZpbmR0ZXh0KEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKLQogICAgIFB5T2JqZWN0KiB0YWc7CiAgICAgUHlPYmplY3QqIGRlZmF1bHRfdmFsdWUgPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0KiBuYW1lc3BhY2VzID0gUHlfTm9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T086ZmluZHRleHQiLCAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQorICAgIF9QeV9JREVOVElGSUVSKGZpbmR0ZXh0KTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAiZGVmYXVsdCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPTzpmaW5kdGV4dCIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFnLCAmZGVmYXVsdF92YWx1ZSwgJm5hbWVzcGFjZXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChjaGVja3BhdGgodGFnKSB8fCBuYW1lc3BhY2VzICE9IFB5X05vbmUpCi0gICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiZmluZHRleHQiLCAiT09PTyIsIHNlbGYsIHRhZywgZGVmYXVsdF92YWx1ZSwgbmFtZXNwYWNlcworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfZmluZHRleHQsICJPT09PIiwgc2VsZiwgdGFnLCBkZWZhdWx0X3ZhbHVlLCBuYW1lc3BhY2VzCiAgICAgICAgICAgICApOwogCiAgICAgaWYgKCFzZWxmLT5leHRyYSkgewpAQCAtODUxLDIwICs5NzMsMjQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0KgotZWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9maW5kYWxsKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCogb3V0OwotCiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86ZmluZGFsbCIsICZ0YWcsICZuYW1lc3BhY2VzKSkKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCAibmFtZXNwYWNlcyIsIDB9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpmaW5kYWxsIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoY2hlY2twYXRoKHRhZykgfHwgbmFtZXNwYWNlcyAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgImZpbmRhbGwiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgaWYgKGNoZWNrcGF0aCh0YWcpIHx8IG5hbWVzcGFjZXMgIT0gUHlfTm9uZSkgeworICAgICAgICBfUHlfSURFTlRJRklFUihmaW5kYWxsKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgICAgICBlbGVtZW50cGF0aF9vYmosICZQeUlkX2ZpbmRhbGwsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgICAgICk7CisgICAgfQogCiAgICAgb3V0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAoIW91dCkKQEAgLTg4OCwxNSArMTAxNCwxOSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXJmaW5kKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQorZWxlbWVudF9pdGVyZmluZChFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QqIHRhZzsKICAgICBQeU9iamVjdCogbmFtZXNwYWNlcyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE86aXRlcmZpbmQiLCAmdGFnLCAmbmFtZXNwYWNlcykpCisgICAgX1B5X0lERU5USUZJRVIoaXRlcmZpbmQpOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsicGF0aCIsICJuYW1lc3BhY2VzIiwgMH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOml0ZXJmaW5kIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YWcsICZuYW1lc3BhY2VzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgZWxlbWVudHBhdGhfb2JqLCAiaXRlcmZpbmQiLCAiT09PIiwgc2VsZiwgdGFnLCBuYW1lc3BhY2VzCisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoCisgICAgICAgIGVsZW1lbnRwYXRoX29iaiwgJlB5SWRfaXRlcmZpbmQsICJPT08iLCBzZWxmLCB0YWcsIG5hbWVzcGFjZXMKICAgICAgICAgKTsKIH0KIApAQCAtOTQ5LDY3ICsxMDc5LDMyIEBACiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKKworc3RhdGljIFB5T2JqZWN0ICoKK2NyZWF0ZV9lbGVtZW50aXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFnLCBpbnQgZ2V0dGV4dCk7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2VsZW1lbnRfaXRlcihFbGVtZW50T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCogcmVzdWx0OwotICAgIAogICAgIFB5T2JqZWN0KiB0YWcgPSBQeV9Ob25lOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86aXRlciIsICZ0YWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghZWxlbWVudHRyZWVfaXRlcl9vYmopIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgIml0ZXIgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygyKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKHNlbGYpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIHNlbGYpOwotICAgIFB5X0lOQ1JFRih0YWcpOyAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCAoUHlPYmplY3QqKSB0YWcpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9pdGVyX29iaiwgYXJncyk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBjcmVhdGVfZWxlbWVudGl0ZXIoc2VsZiwgdGFnLCAwKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewotICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6aXRlcnRleHQiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIWVsZW1lbnR0cmVlX2l0ZXJ0ZXh0X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiaXRlcnRleHQgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICBpZiAoIWFyZ3MpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfSU5DUkVGKHNlbGYpOyBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCopIHNlbGYpOwotCi0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChlbGVtZW50dHJlZV9pdGVydGV4dF9vYmosIGFyZ3MpOwotCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gY3JlYXRlX2VsZW1lbnRpdGVyKHNlbGYsIFB5X05vbmUsIDEpOwogfQogCisKIHN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfZ2V0aXRlbShQeU9iamVjdCogc2VsZl8sIFB5X3NzaXplX3QgaW5kZXgpCiB7CkBAIC0xMDM5LDcgKzExMzQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghc2VsZi0+ZXh0cmEpCi0gICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAKICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgIGluZGV4ICs9IHNlbGYtPmV4dHJhLT5sZW5ndGg7CkBAIC0xMTEwLDcgKzEyMDUsNyBAQAogICAgIGlmICghYXR0cmliKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGVsZW0gPSBlbGVtZW50X25ldyh0YWcsIGF0dHJpYik7CisgICAgZWxlbSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CiAKICAgICBQeV9ERUNSRUYoYXR0cmliKTsKIApAQCAtMTExOCwzMSArMTIxMyw2IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLWVsZW1lbnRfcmVkdWNlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOl9fcmVkdWNlX18iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBIYWNrIGFsZXJ0OiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIHdvcmsgYXJvdW5kIGEgX19jb3B5X18KLSAgICAgICBwcm9ibGVtIG9uIGNlcnRhaW4gMi4zIGFuZCAyLjQgdmVyc2lvbnMuICBUbyBzYXZlIHRpbWUgYW5kCi0gICAgICAgc2ltcGxpZnkgdGhlIGNvZGUsIHdlIGNyZWF0ZSB0aGUgY29weSBpbiBoZXJlLCBhbmQgdXNlIGEgZHVtbXkKLSAgICAgICBjb3B5ZWxlbWVudCBoZWxwZXIgdG8gdHJpY2sgdGhlIGNvcHkgbW9kdWxlIGludG8gZG9pbmcgdGhlCi0gICAgICAgcmlnaHQgdGhpbmcuICovCi0KLSAgICBpZiAoIWVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAiY29weWVsZW1lbnQgaGVscGVyIG5vdCBmb3VuZCIKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAotICAgICAgICAiTyhOKSIsIGVsZW1lbnR0cmVlX2NvcHllbGVtZW50X29iaiwgZWxlbWVudF9jb3B5KHNlbGYsIGFyZ3MpCi0gICAgICAgICk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKIGVsZW1lbnRfcmVtb3ZlKEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIGludCBpOwpAQCAtMTE4OSw3ICsxMjU5LDEwIEBACiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X3JlcHIoRWxlbWVudE9iamVjdCogc2VsZikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxFbGVtZW50ICVSIGF0ICVwPiIsIHNlbGYtPnRhZywgc2VsZik7CisgICAgaWYgKHNlbGYtPnRhZykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCAlUiBhdCAlcD4iLCBzZWxmLT50YWcsIHNlbGYpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8RWxlbWVudCBhdCAlcD4iLCBzZWxmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTIwMyw3ICsxMjc2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKKyAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgYXR0cmliID0gZWxlbWVudF9nZXRfYXR0cmliKHNlbGYpOwogICAgIGlmICghYXR0cmliKQpAQCAtMTI1MCwxMyArMTMyMyw4IEBACiB7CiAgICAgRWxlbWVudE9iamVjdCogc2VsZiA9IChFbGVtZW50T2JqZWN0Kikgc2VsZl87CiAKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgIGlmIChQeUludF9DaGVjayhpdGVtKSB8fCBQeUxvbmdfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgbG9uZyBpID0gUHlJbnRfQXNMb25nKGl0ZW0pOwotI2Vsc2UKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7Ci0jZW5kaWYKIAogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMDcsMTMgKzEzNzUsOCBAQAogewogICAgIEVsZW1lbnRPYmplY3QqIHNlbGYgPSAoRWxlbWVudE9iamVjdCopIHNlbGZfOwogCi0jaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA1MDAwMCkKLSAgICBpZiAoUHlJbnRfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgIGxvbmcgaSA9IFB5SW50X0FzTG9uZyhpdGVtKTsKLSNlbHNlCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwotI2VuZGlmCiAKICAgICAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTMyOSw3ICsxMzkyLDcgQEAKICAgICAgICAgUHlPYmplY3QqIHNlcSA9IE5VTEw7CiAKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogCiAgICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChpdGVtLAogICAgICAgICAgICAgICAgIHNlbGYtPmV4dHJhLT5sZW5ndGgsCkBAIC0xMzM3LDkgKzE0MDAsNzQgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgbmV3bGVuID0gMDsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIERlbGV0ZSBzbGljZSAqLworICAgICAgICAgICAgc2l6ZV90IGN1cjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKworICAgICAgICAgICAgaWYgKHNsaWNlbGVuIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIC8qIFNpbmNlIHdlJ3JlIGRlbGV0aW5nLCB0aGUgZGlyZWN0aW9uIG9mIHRoZSByYW5nZSBkb2Vzbid0IG1hdHRlciwKKyAgICAgICAgICAgICAqIHNvIGZvciBzaW1wbGljaXR5IG1ha2UgaXQgYWx3YXlzIGFzY2VuZGluZy4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoc3RlcCA8IDApIHsKKyAgICAgICAgICAgICAgICBzdG9wID0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gc3RvcCArIHN0ZXAgKiAoc2xpY2VsZW4gLSAxKSAtIDE7CisgICAgICAgICAgICAgICAgc3RlcCA9IC1zdGVwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhc3NlcnQoKHNpemVfdClzbGljZWxlbiA8PSBQWV9TSVpFX01BWCAvIHNpemVvZihQeU9iamVjdCAqKSk7CisKKyAgICAgICAgICAgIC8qIHJlY3ljbGUgaXMgYSBsaXN0IHRoYXQgd2lsbCBjb250YWluIGFsbCB0aGUgY2hpbGRyZW4KKyAgICAgICAgICAgICAqIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIShyZWN5Y2xlID0gUHlMaXN0X05ldyhzbGljZWxlbikpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFRoaXMgbG9vcCB3YWxrcyBvdmVyIGFsbCB0aGUgY2hpbGRyZW4gdGhhdCBoYXZlIHRvIGJlIGRlbGV0ZWQsCisgICAgICAgICAgICAgKiB3aXRoIGN1ciBwb2ludGluZyBhdCB0aGVtLiBudW1fbW92ZWQgaXMgdGhlIGFtb3VudCBvZiBjaGlsZHJlbgorICAgICAgICAgICAgICogdW50aWwgdGhlIG5leHQgZGVsZXRlZCBjaGlsZCB0aGF0IGhhdmUgdG8gYmUgInNoaWZ0ZWQgZG93biIgdG8KKyAgICAgICAgICAgICAqIG9jY3VweSB0aGUgZGVsZXRlZCdzIHBsYWNlcy4KKyAgICAgICAgICAgICAqIE5vdGUgdGhhdCBpbiB0aGUgaXRoIGl0ZXJhdGlvbiwgc2hpZnRpbmcgaXMgZG9uZSBpK2kgcGxhY2VzIGRvd24KKyAgICAgICAgICAgICAqIGJlY2F1c2UgaSBjaGlsZHJlbiB3ZXJlIGFscmVhZHkgcmVtb3ZlZC4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgY3VyIDwgKHNpemVfdClzdG9wOyBjdXIgKz0gc3RlcCwgKytpKSB7CisgICAgICAgICAgICAgICAgLyogQ29tcHV0ZSBob3cgbWFueSBjaGlsZHJlbiBoYXZlIHRvIGJlIG1vdmVkLCBjbGlwcGluZyBhdCB0aGUKKyAgICAgICAgICAgICAgICAgKiBsaXN0IGVuZC4KKyAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbnVtX21vdmVkID0gc3RlcCAtIDE7CisgICAgICAgICAgICAgICAgaWYgKGN1ciArIHN0ZXAgPj0gKHNpemVfdClzZWxmLT5leHRyYS0+bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIG51bV9tb3ZlZCA9IHNlbGYtPmV4dHJhLT5sZW5ndGggLSBjdXIgLSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShyZWN5Y2xlLCBpLCBzZWxmLT5leHRyYS0+Y2hpbGRyZW5bY3VyXSk7CisKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgLSBpLAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgKyAxLAorICAgICAgICAgICAgICAgICAgICBudW1fbW92ZWQgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBMZWZ0b3ZlciAidGFpbCIgYWZ0ZXIgdGhlIGxhc3QgcmVtb3ZlZCBjaGlsZCAqLworICAgICAgICAgICAgY3VyID0gc3RhcnQgKyAoc2l6ZV90KXNsaWNlbGVuICogc3RlcDsKKyAgICAgICAgICAgIGlmIChjdXIgPCAoc2l6ZV90KXNlbGYtPmV4dHJhLT5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+Y2hpbGRyZW4gKyBjdXIgLSBzbGljZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZXh0cmEtPmNoaWxkcmVuICsgY3VyLAorICAgICAgICAgICAgICAgICAgICAoc2VsZi0+ZXh0cmEtPmxlbmd0aCAtIGN1cikgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoIC09IHNsaWNlbGVuOworCisgICAgICAgICAgICAvKiBEaXNjYXJkIHRoZSByZWN5Y2xlIGxpc3Qgd2l0aCBhbGwgdGhlIGRlbGV0ZWQgc3ViLWVsZW1lbnRzICovCisgICAgICAgICAgICBQeV9YREVDUkVGKHJlY3ljbGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBBIG5ldyBzbGljZSBpcyBhY3R1YWxseSBiZWluZyBhc3NpZ25lZCAqLwogICAgICAgICAgICAgc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHZhbHVlLCAiIik7CiAgICAgICAgICAgICBpZiAoIXNlcSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKQEAgLTEzNTQsMTkgKzE0ODIsMTMgQEAKICAgICAgICAgaWYgKHN0ZXAgIT0gIDEgJiYgbmV3bGVuICE9IHNsaWNlbGVuKQogICAgICAgICB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSNpZiAoUFlfVkVSU0lPTl9IRVggPCAweDAyMDUwMDAwKQotICAgICAgICAgICAgICAgICJhdHRlbXB0IHRvIGFzc2lnbiBzZXF1ZW5jZSBvZiBzaXplICVkICIKLSAgICAgICAgICAgICAgICAidG8gZXh0ZW5kZWQgc2xpY2Ugb2Ygc2l6ZSAlZCIsCi0jZWxzZQogICAgICAgICAgICAgICAgICJhdHRlbXB0IHRvIGFzc2lnbiBzZXF1ZW5jZSBvZiBzaXplICV6ZCAiCiAgICAgICAgICAgICAgICAgInRvIGV4dGVuZGVkIHNsaWNlIG9mIHNpemUgJXpkIiwKLSNlbmRpZgogICAgICAgICAgICAgICAgIG5ld2xlbiwgc2xpY2VsZW4KICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLQogICAgICAgICAvKiBSZXNpemUgYmVmb3JlIGNyZWF0aW5nIHRoZSByZWN5Y2xlIGJpbiwgdG8gcHJldmVudCByZWZsZWFrcy4gKi8KICAgICAgICAgaWYgKG5ld2xlbiA+IHNsaWNlbGVuKSB7CiAgICAgICAgICAgICBpZiAoZWxlbWVudF9yZXNpemUoc2VsZiwgbmV3bGVuIC0gc2xpY2VsZW4pIDwgMCkgewpAQCAtMTQzMSwxNCArMTU1MywxNCBAQAogCiBzdGF0aWMgUHlNZXRob2REZWYgZWxlbWVudF9tZXRob2RzW10gPSB7CiAKLSAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2NsZWFyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiY2xlYXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfY2xlYXJtZXRob2QsIE1FVEhfVkFSQVJHU30sCiAKICAgICB7ImdldCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzZXQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfc2V0LCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmQsIE1FVEhfVkFSQVJHU30sCi0gICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7ImZpbmRhbGwiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZGFsbCwgTUVUSF9WQVJBUkdTfSwKKyAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZmluZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCisgICAgeyJmaW5kdGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9maW5kdGV4dCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCisgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2ZpbmRhbGwsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFN9LAogCiAgICAgeyJhcHBlbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfYXBwZW5kLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiZXh0ZW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2V4dGVuZCwgTUVUSF9WQVJBUkdTfSwKQEAgLTE0NDcsNyArMTU2OSw3IEBACiAKICAgICB7Iml0ZXIiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlciwgTUVUSF9WQVJBUkdTfSwKICAgICB7Iml0ZXJ0ZXh0IiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJ0ZXh0LCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiaXRlcmZpbmQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlcmZpbmQsIE1FVEhfVkFSQVJHU30sCisgICAgeyJpdGVyZmluZCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyZmluZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEU30sCiAKICAgICB7ImdldGl0ZXJhdG9yIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXIsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9WQVJBUkdTfSwKQEAgLTE0NTksMTggKzE1ODEsNyBAQAogCiAgICAgeyJfX2NvcHlfXyIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9jb3B5LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiX19kZWVwY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2RlZXBjb3B5LCBNRVRIX1ZBUkFSR1N9LAotCi0gICAgLyogU29tZSAyLjMgYW5kIDIuNCB2ZXJzaW9ucyBkbyBub3QgaGFuZGxlIHRoZSBfX2NvcHlfXyBtZXRob2Qgb24KLSAgICAgICBDIG9iamVjdHMgY29ycmVjdGx5LCBzbyB3ZSBoYXZlIHRvIGZha2UgaXQgdXNpbmcgYSBfX3JlZHVjZV9fLQotICAgICAgIGJhc2VkIGhhY2sgKHNlZSB0aGUgZWxlbWVudF9yZWR1Y2UgaW1wbGVtZW50YXRpb24gYWJvdmUgZm9yCi0gICAgICAgZGV0YWlscykuICovCi0KLSAgICAvKiBUaGUgYmVoYXZpb3VyIGhhcyBiZWVuIGNoYW5nZWQgaW4gMi4zLjUgYW5kIDIuNC4xLCBzbyB3ZSdyZQotICAgICAgIHVzaW5nIGEgcnVudGltZSB0ZXN0IHRvIGZpZ3VyZSBvdXQgaWYgd2UgbmVlZCB0byBmYWtlIHRoaW5ncwotICAgICAgIG9yIG5vdyAoc2VlIHRoZSBpbml0IGNvZGUgYmVsb3cpLiAgVGhlIGZvbGxvd2luZyBlbnRyeSBpcwotICAgICAgIGVuYWJsZWQgb25seSBpZiB0aGUgaGFjayBpcyBuZWVkZWQuICovCi0KLSAgICB7IiFfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X3JlZHVjZSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7Il9fc2l6ZW9mX18iLCBlbGVtZW50X3NpemVvZiwgTUVUSF9OT0FSR1N9LAogCiAgICAge05VTEwsIE5VTEx9CiB9OwpAQCAtMTQ4Myw3ICsxNTk0LDcgQEAKIAogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCiAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWVvYmopOwotICAgIAorCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE1MTAsNyArMTYyMSw3IEBACiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgImF0dHJpYiIpID09IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgaWYgKCFzZWxmLT5leHRyYSkKLSAgICAgICAgICAgIGVsZW1lbnRfbmV3X2V4dHJhKHNlbGYsIE5VTEwpOworICAgICAgICAgICAgY3JlYXRlX2V4dHJhKHNlbGYsIE5VTEwpOwogICAgICAgICByZXMgPSBlbGVtZW50X2dldF9hdHRyaWIoc2VsZik7CiAgICAgfQogCkBAIC0xNTIxLDE2ICsxNjMyLDE1IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotc3RhdGljIGludAotZWxlbWVudF9zZXRhdHRyKEVsZW1lbnRPYmplY3QqIHNlbGYsIGNvbnN0IGNoYXIqIG5hbWUsIFB5T2JqZWN0KiB2YWx1ZSkKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfc2V0YXR0cm8oRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmosIFB5T2JqZWN0KiB2YWx1ZSkKIHsKLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19BdHRyaWJ1dGVFcnJvciwKLSAgICAgICAgICAgICJjYW4ndCBkZWxldGUgZWxlbWVudCBhdHRyaWJ1dGVzIgotICAgICAgICAgICAgKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KKyAgICBjaGFyICpuYW1lID0gIiI7CisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKKyAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7CisKKyAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzdHJjbXAobmFtZSwgInRhZyIpID09IDApIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnRhZyk7CkBAIC0xNTQ2LDE2ICsxNjU2LDE2IEBACiAgICAgICAgIFB5X0lOQ1JFRihzZWxmLT50YWlsKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiYXR0cmliIikgPT0gMCkgewogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQotICAgICAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CisgICAgICAgICAgICBjcmVhdGVfZXh0cmEoc2VsZiwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmLT5leHRyYS0+YXR0cmliKTsKICAgICAgICAgc2VsZi0+ZXh0cmEtPmF0dHJpYiA9IHZhbHVlOwogICAgICAgICBQeV9JTkNSRUYoc2VsZi0+ZXh0cmEtPmF0dHJpYik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIGVsZW1lbnRfYXNfc2VxdWVuY2UgPSB7CkBAIC0xNTc4LDU2ICsxNjg4LDMzMSBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJFbGVtZW50Iiwgc2l6ZW9mKEVsZW1lbnRPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3RvcillbGVtZW50X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAoc2V0YXR0cmZ1bmMpZWxlbWVudF9zZXRhdHRyLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgJmVsZW1lbnRfYXNfbWFwcGluZywgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAvKiB0cF9jYWxsICovCi0gICAgMCwgLyogdHBfc3RyICovCi0gICAgKGdldGF0dHJvZnVuYyllbGVtZW50X2dldGF0dHJvLCAvKiB0cF9nZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX3NldGF0dHJvICovCi0gICAgMCwgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKiB0cF9mbGFncyAqLwotICAgIDAsIC8qIHRwX2RvYyAqLwotICAgIDAsIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwgLyogdHBfaXRlciAqLwotICAgIDAsIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgZWxlbWVudF9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKWVsZW1lbnRfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAocmVwcmZ1bmMpZWxlbWVudF9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgJmVsZW1lbnRfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmZWxlbWVudF9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKWVsZW1lbnRfZ2V0YXR0cm8sICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIChzZXRhdHRyb2Z1bmMpZWxlbWVudF9zZXRhdHRybywgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpZWxlbWVudF9nY190cmF2ZXJzZSwgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpZWxlbWVudF9nY19jbGVhciwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIG9mZnNldG9mKEVsZW1lbnRPYmplY3QsIHdlYWtyZWZsaXN0KSwgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgZWxlbWVudF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpZWxlbWVudF9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBlbGVtZW50X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBFbGVtZW50IGl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEVsZW1lbnRJdGVyT2JqZWN0IHJlcHJlc2VudHMgdGhlIGl0ZXJhdGlvbiBzdGF0ZSBvdmVyIGFuIFhNTCBlbGVtZW50IGluCisgKiBwcmUtb3JkZXIgdHJhdmVyc2FsLiBUbyBrZWVwIHRyYWNrIG9mIHdoaWNoIHN1Yi1lbGVtZW50IHNob3VsZCBiZSByZXR1cm5lZAorICogbmV4dCwgYSBzdGFjayBvZiBwYXJlbnRzIGlzIG1haW50YWluZWQuIFRoaXMgaXMgYSBzdGFuZGFyZCBzdGFjay1iYXNlZAorICogaXRlcmF0aXZlIHByZS1vcmRlciB0cmF2ZXJzYWwgb2YgYSB0cmVlLgorICogVGhlIHN0YWNrIGlzIG1hbmFnZWQgdXNpbmcgYSBzaW5nbGUtbGlua2VkIGxpc3Qgc3RhcnRpbmcgYXQgcGFyZW50X3N0YWNrLgorICogRWFjaCBzdGFjayBub2RlIGNvbnRhaW5zIHRoZSBzYXZlZCBwYXJlbnQgdG8gd2hpY2ggd2Ugc2hvdWxkIHJldHVybiBhZnRlcgorICogdGhlIGN1cnJlbnQgb25lIGlzIGV4aGF1c3RlZCwgYW5kIHRoZSBuZXh0IGNoaWxkIHRvIGV4YW1pbmUgaW4gdGhhdCBwYXJlbnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmVudExvY2F0b3JfdCB7CisgICAgRWxlbWVudE9iamVjdCAqcGFyZW50OworICAgIFB5X3NzaXplX3QgY2hpbGRfaW5kZXg7CisgICAgc3RydWN0IFBhcmVudExvY2F0b3JfdCAqbmV4dDsKK30gUGFyZW50TG9jYXRvcjsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQYXJlbnRMb2NhdG9yICpwYXJlbnRfc3RhY2s7CisgICAgRWxlbWVudE9iamVjdCAqcm9vdF9lbGVtZW50OworICAgIFB5T2JqZWN0ICpzb3VnaHRfdGFnOworICAgIGludCByb290X2RvbmU7CisgICAgaW50IGdldHRleHQ7Cit9IEVsZW1lbnRJdGVyT2JqZWN0OworCisKK3N0YXRpYyB2b2lkCitlbGVtZW50aXRlcl9kZWFsbG9jKEVsZW1lbnRJdGVyT2JqZWN0ICppdCkKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICB3aGlsZSAocCkgeworICAgICAgICBQYXJlbnRMb2NhdG9yICp0ZW1wID0gcDsKKyAgICAgICAgUHlfWERFQ1JFRihwLT5wYXJlbnQpOworICAgICAgICBwID0gcC0+bmV4dDsKKyAgICAgICAgUHlPYmplY3RfRnJlZSh0ZW1wKTsKKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGl0LT5zb3VnaHRfdGFnKTsKKyAgICBQeV9YREVDUkVGKGl0LT5yb290X2VsZW1lbnQpOworCisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhpdCk7CisgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKK30KKworc3RhdGljIGludAorZWxlbWVudGl0ZXJfdHJhdmVyc2UoRWxlbWVudEl0ZXJPYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpwID0gaXQtPnBhcmVudF9zdGFjazsKKyAgICB3aGlsZSAocCkgeworICAgICAgICBQeV9WSVNJVChwLT5wYXJlbnQpOworICAgICAgICBwID0gcC0+bmV4dDsKKyAgICB9CisKKyAgICBQeV9WSVNJVChpdC0+cm9vdF9lbGVtZW50KTsKKyAgICBQeV9WSVNJVChpdC0+c291Z2h0X3RhZyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZWxlbWVudGl0ZXJfbmV4dC4gQWRkIGEgbmV3IHBhcmVudCB0byB0aGUgcGFyZW50IHN0YWNrLgorICovCitzdGF0aWMgUGFyZW50TG9jYXRvciAqCitwYXJlbnRfc3RhY2tfcHVzaF9uZXcoUGFyZW50TG9jYXRvciAqc3RhY2ssIEVsZW1lbnRPYmplY3QgKnBhcmVudCkKK3sKKyAgICBQYXJlbnRMb2NhdG9yICpuZXdfbm9kZSA9IFB5T2JqZWN0X01hbGxvYyhzaXplb2YoUGFyZW50TG9jYXRvcikpOworICAgIGlmIChuZXdfbm9kZSkgeworICAgICAgICBuZXdfbm9kZS0+cGFyZW50ID0gcGFyZW50OworICAgICAgICBQeV9JTkNSRUYocGFyZW50KTsKKyAgICAgICAgbmV3X25vZGUtPmNoaWxkX2luZGV4ID0gMDsKKyAgICAgICAgbmV3X25vZGUtPm5leHQgPSBzdGFjazsKKyAgICB9CisgICAgcmV0dXJuIG5ld19ub2RlOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZWxlbWVudGl0ZXJfbmV4dChFbGVtZW50SXRlck9iamVjdCAqaXQpCit7CisgICAgLyogU3ViLWVsZW1lbnQgaXRlcmF0b3IuCisgICAgICogCisgICAgICogQSBzaG9ydCBub3RlIG9uIGdldHRleHQ6IHRoaXMgZnVuY3Rpb24gc2VydmVzIGJvdGggdGhlIGl0ZXIoKSBhbmQKKyAgICAgKiBpdGVydGV4dCgpIG1ldGhvZHMgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4gSG93ZXZlciwgdGhlcmUgYXJlIGEgZmV3CisgICAgICogc21hbGwgZGlmZmVyZW5jZXMgaW4gdGhlIHdheSB0aGVzZSBpdGVyYXRpb25zIHdvcmsuIE5hbWVseToKKyAgICAgKiAgIC0gaXRlcnRleHQoKSBvbmx5IHlpZWxkcyB0ZXh0IGZyb20gbm9kZXMgdGhhdCBoYXZlIGl0LCBhbmQgY29udGludWVzCisgICAgICogICAgIGl0ZXJhdGluZyB3aGVuIGEgbm9kZSBkb2Vzbid0IGhhdmUgdGV4dCAoc28gaXQgZG9lc24ndCByZXR1cm4gYW55CisgICAgICogICAgIG5vZGUgbGlrZSBpdGVyKCkpCisgICAgICogICAtIGl0ZXJ0ZXh0KCkgYWxzbyBoYXMgdG8gaGFuZGxlIHRhaWwsIGFmdGVyIGZpbmlzaGluZyB3aXRoIGFsbCB0aGUKKyAgICAgKiAgICAgY2hpbGRyZW4gb2YgYSBub2RlLgorICAgICAqLworICAgIEVsZW1lbnRPYmplY3QgKmN1cl9wYXJlbnQ7CisgICAgUHlfc3NpemVfdCBjaGlsZF9pbmRleDsKKworICAgIHdoaWxlICgxKSB7CisgICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSByZWFjaGVkIGluIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCBvZiBpdGVyYXRpb24sIHdoZXJlCisgICAgICAgICAqIHRoZSBwYXJlbnQgc3RhY2sgaXMgZW1wdHkuIFRoZSByb290X2RvbmUgZmxhZyBnaXZlcyB1cyBpbmRpY2F0aW9uCisgICAgICAgICAqIHdoZXRoZXIgd2UndmUganVzdCBzdGFydGVkIGl0ZXJhdGluZyAoc28gcm9vdF9kb25lIGlzIDApLCBpbiB3aGljaAorICAgICAgICAgKiBjYXNlIHRoZSByb290IGlzIHJldHVybmVkLiBJZiByb290X2RvbmUgaXMgMSBhbmQgd2UncmUgaGVyZSwgdGhlCisgICAgICAgICAqIGl0ZXJhdG9yIGlzIGV4aGF1c3RlZC4KKyAgICAgICAgICovCisgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjay0+cGFyZW50KSB7CisgICAgICAgICAgICBpZiAoaXQtPnJvb3RfZG9uZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBwYXJlbnRfc3RhY2tfcHVzaF9uZXcoaXQtPnBhcmVudF9zdGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5yb290X2VsZW1lbnQpOworICAgICAgICAgICAgICAgIGlmICghaXQtPnBhcmVudF9zdGFjaykgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpdC0+cm9vdF9kb25lID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoaXQtPnNvdWdodF90YWcgPT0gUHlfTm9uZSB8fAorICAgICAgICAgICAgICAgICAgICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woaXQtPnJvb3RfZWxlbWVudC0+dGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPnNvdWdodF90YWcsIFB5X0VRKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdC0+Z2V0dGV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnRleHQgPSBKT0lOX09CSihpdC0+cm9vdF9lbGVtZW50LT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9Jc1RydWUodGV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYodGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaXQtPnJvb3RfZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQtPnJvb3RfZWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qIFNlZSBpZiB0aGVyZSBhcmUgY2hpbGRyZW4gbGVmdCB0byB0cmF2ZXJzZSBpbiB0aGUgY3VycmVudCBwYXJlbnQuIElmCisgICAgICAgICAqIHllcywgdmlzaXQgdGhlIG5leHQgY2hpbGQuIElmIG5vdCwgcG9wIHRoZSBzdGFjayBhbmQgdHJ5IGFnYWluLgorICAgICAgICAgKi8KKyAgICAgICAgY3VyX3BhcmVudCA9IGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudDsKKyAgICAgICAgY2hpbGRfaW5kZXggPSBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleDsKKyAgICAgICAgaWYgKGN1cl9wYXJlbnQtPmV4dHJhICYmIGNoaWxkX2luZGV4IDwgY3VyX3BhcmVudC0+ZXh0cmEtPmxlbmd0aCkgeworICAgICAgICAgICAgRWxlbWVudE9iamVjdCAqY2hpbGQgPSAoRWxlbWVudE9iamVjdCAqKQorICAgICAgICAgICAgICAgIGN1cl9wYXJlbnQtPmV4dHJhLT5jaGlsZHJlbltjaGlsZF9pbmRleF07CisgICAgICAgICAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCsrOworICAgICAgICAgICAgaXQtPnBhcmVudF9zdGFjayA9IHBhcmVudF9zdGFja19wdXNoX25ldyhpdC0+cGFyZW50X3N0YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZCk7CisgICAgICAgICAgICBpZiAoIWl0LT5wYXJlbnRfc3RhY2spIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXQtPmdldHRleHQpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGV4dCA9IEpPSU5fT0JKKGNoaWxkLT50ZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSXNUcnVlKHRleHQpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChpdC0+c291Z2h0X3RhZyA9PSBQeV9Ob25lIHx8CisgICAgICAgICAgICAgICAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGNoaWxkLT50YWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zb3VnaHRfdGFnLCBQeV9FUSkgPT0gMSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihjaGlsZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKWNoaWxkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlPYmplY3QgKnRhaWwgPSBpdC0+Z2V0dGV4dCA/IEpPSU5fT0JKKGN1cl9wYXJlbnQtPnRhaWwpIDogUHlfTm9uZTsgICAgICAgICAgICAKKyAgICAgICAgICAgIFBhcmVudExvY2F0b3IgKm5leHQgPSBpdC0+cGFyZW50X3N0YWNrLT5uZXh0OworICAgICAgICAgICAgUHlfWERFQ1JFRihpdC0+cGFyZW50X3N0YWNrLT5wYXJlbnQpOworICAgICAgICAgICAgUHlPYmplY3RfRnJlZShpdC0+cGFyZW50X3N0YWNrKTsKKyAgICAgICAgICAgIGl0LT5wYXJlbnRfc3RhY2sgPSBuZXh0OworCisgICAgICAgICAgICAvKiBOb3RlIHRoYXQgZXh0cmEgY29uZGl0aW9uIG9uIGl0LT5wYXJlbnRfc3RhY2stPnBhcmVudCBoZXJlOworICAgICAgICAgICAgICogdGhpcyBpcyBiZWNhdXNlIGl0ZXJ0ZXh0KCkgaXMgc3VwcG9zZWQgdG8gb25seSByZXR1cm4gKmlubmVyKgorICAgICAgICAgICAgICogdGV4dCwgbm90IHRleHQgZm9sbG93aW5nIHRoZSBlbGVtZW50IGl0IGJlZ2FuIGl0ZXJhdGlvbiB3aXRoLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ICYmIFB5T2JqZWN0X0lzVHJ1ZSh0YWlsKSkgeworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih0YWlsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGFpbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgRWxlbWVudEl0ZXJfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiX2VsZW1lbnR0cmVlLl9lbGVtZW50X2l0ZXJhdG9yIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoRWxlbWVudEl0ZXJPYmplY3QpLCAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3IpZWxlbWVudGl0ZXJfZGVhbGxvYywgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWVsZW1lbnRpdGVyX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYyllbGVtZW50aXRlcl9uZXh0LCAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgUHlPYmplY3QgKgorY3JlYXRlX2VsZW1lbnRpdGVyKEVsZW1lbnRPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWcsIGludCBnZXR0ZXh0KQoreworICAgIEVsZW1lbnRJdGVyT2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqc3RhciA9IE5VTEw7CisKKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhFbGVtZW50SXRlck9iamVjdCwgJkVsZW1lbnRJdGVyX1R5cGUpOworICAgIGlmICghaXQpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghKGl0LT5wYXJlbnRfc3RhY2sgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFBhcmVudExvY2F0b3IpKSkpIHsKKyAgICAgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaXQtPnBhcmVudF9zdGFjay0+cGFyZW50ID0gTlVMTDsKKyAgICBpdC0+cGFyZW50X3N0YWNrLT5jaGlsZF9pbmRleCA9IDA7CisgICAgaXQtPnBhcmVudF9zdGFjay0+bmV4dCA9IE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHRhZykpCisgICAgICAgIHN0YXIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiKiIpOworICAgIGVsc2UgaWYgKFB5Qnl0ZXNfQ2hlY2sodGFnKSkKKyAgICAgICAgc3RhciA9IFB5Qnl0ZXNfRnJvbVN0cmluZygiKiIpOworCisgICAgaWYgKHN0YXIgJiYgUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHRhZywgc3RhciwgUHlfRVEpID09IDEpCisgICAgICAgIHRhZyA9IFB5X05vbmU7CisKKyAgICBQeV9YREVDUkVGKHN0YXIpOworICAgIGl0LT5zb3VnaHRfdGFnID0gdGFnOworICAgIGl0LT5yb290X2RvbmUgPSAwOworICAgIGl0LT5nZXR0ZXh0ID0gZ2V0dGV4dDsKKyAgICBpdC0+cm9vdF9lbGVtZW50ID0gc2VsZjsKKworICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBQeV9JTkNSRUYodGFnKTsKKworICAgIFB5T2JqZWN0X0dDX1RyYWNrKGl0KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7Cit9CisKKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIC8qIHRoZSB0cmVlIGJ1aWxkZXIgdHlwZSAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogCi0gICAgUHlPYmplY3QqIHJvb3Q7IC8qIHJvb3Qgbm9kZSAoZmlyc3QgY3JlYXRlZCBub2RlKSAqLworICAgIFB5T2JqZWN0ICpyb290OyAvKiByb290IG5vZGUgKGZpcnN0IGNyZWF0ZWQgbm9kZSkgKi8KIAotICAgIEVsZW1lbnRPYmplY3QqIHRoaXM7IC8qIGN1cnJlbnQgbm9kZSAqLwotICAgIEVsZW1lbnRPYmplY3QqIGxhc3Q7IC8qIG1vc3QgcmVjZW50bHkgY3JlYXRlZCBub2RlICovCisgICAgUHlPYmplY3QgKnRoaXM7IC8qIGN1cnJlbnQgbm9kZSAqLworICAgIFB5T2JqZWN0ICpsYXN0OyAvKiBtb3N0IHJlY2VudGx5IGNyZWF0ZWQgbm9kZSAqLwogCi0gICAgUHlPYmplY3QqIGRhdGE7IC8qIGRhdGEgY29sbGVjdG9yIChzdHJpbmcgb3IgbGlzdCksIG9yIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZGF0YTsgLyogZGF0YSBjb2xsZWN0b3IgKHN0cmluZyBvciBsaXN0KSwgb3IgTlVMTCAqLwogCi0gICAgUHlPYmplY3QqIHN0YWNrOyAvKiBlbGVtZW50IHN0YWNrICovCi0gICAgUHlfc3NpemVfdCBpbmRleDsgLyogY3VycmVudCBzdGFjayBzaXplICgwPWVtcHR5KSAqLworICAgIFB5T2JqZWN0ICpzdGFjazsgLyogZWxlbWVudCBzdGFjayAqLworICAgIFB5X3NzaXplX3QgaW5kZXg7IC8qIGN1cnJlbnQgc3RhY2sgc2l6ZSAoMCBtZWFucyBlbXB0eSkgKi8KKworICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3Rvcnk7CiAKICAgICAvKiBlbGVtZW50IHRyYWNpbmcgKi8KLSAgICBQeU9iamVjdCogZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLwotICAgIFB5T2JqZWN0KiBzdGFydF9ldmVudF9vYmo7IC8qIGV2ZW50IG9iamVjdHMgKE5VTEwgdG8gaWdub3JlKSAqLwotICAgIFB5T2JqZWN0KiBlbmRfZXZlbnRfb2JqOwotICAgIFB5T2JqZWN0KiBzdGFydF9uc19ldmVudF9vYmo7Ci0gICAgUHlPYmplY3QqIGVuZF9uc19ldmVudF9vYmo7Ci0KKyAgICBQeU9iamVjdCAqZXZlbnRzOyAvKiBsaXN0IG9mIGV2ZW50cywgb3IgTlVMTCBpZiBub3QgY29sbGVjdGluZyAqLworICAgIFB5T2JqZWN0ICpzdGFydF9ldmVudF9vYmo7IC8qIGV2ZW50IG9iamVjdHMgKE5VTEwgdG8gaWdub3JlKSAqLworICAgIFB5T2JqZWN0ICplbmRfZXZlbnRfb2JqOworICAgIFB5T2JqZWN0ICpzdGFydF9uc19ldmVudF9vYmo7CisgICAgUHlPYmplY3QgKmVuZF9uc19ldmVudF9vYmo7CiB9IFRyZWVCdWlsZGVyT2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFRyZWVCdWlsZGVyX1R5cGU7CkBAIC0xNjM3LDc2ICsyMDIyLDE1OCBAQAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCiAKLUxPQ0FMKFB5T2JqZWN0KikKLXRyZWVidWlsZGVyX25ldyh2b2lkKQorc3RhdGljIFB5T2JqZWN0ICoKK3RyZWVidWlsZGVyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBUcmVlQnVpbGRlck9iamVjdCogc2VsZjsKKyAgICBUcmVlQnVpbGRlck9iamVjdCAqdCA9IChUcmVlQnVpbGRlck9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmICh0ICE9IE5VTEwpIHsKKyAgICAgICAgdC0+cm9vdCA9IE5VTEw7CiAKLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KFRyZWVCdWlsZGVyT2JqZWN0LCAmVHJlZUJ1aWxkZXJfVHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdC0+dGhpcyA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgdC0+bGFzdCA9IFB5X05vbmU7CiAKLSAgICBzZWxmLT5yb290ID0gTlVMTDsKKyAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CisgICAgICAgIHQtPmVsZW1lbnRfZmFjdG9yeSA9IE5VTEw7CisgICAgICAgIHQtPnN0YWNrID0gUHlMaXN0X05ldygyMCk7CisgICAgICAgIGlmICghdC0+c3RhY2spIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0LT50aGlzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0LT5sYXN0KTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRigoUHlPYmplY3QgKikgdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0LT5pbmRleCA9IDA7CiAKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgc2VsZi0+dGhpcyA9IChFbGVtZW50T2JqZWN0KikgUHlfTm9uZTsKLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICBzZWxmLT5sYXN0ID0gKEVsZW1lbnRPYmplY3QqKSBQeV9Ob25lOwotCi0gICAgc2VsZi0+ZGF0YSA9IE5VTEw7Ci0KLSAgICBzZWxmLT5zdGFjayA9IFB5TGlzdF9OZXcoMjApOwotICAgIHNlbGYtPmluZGV4ID0gMDsKLQotICAgIHNlbGYtPmV2ZW50cyA9IE5VTEw7Ci0gICAgc2VsZi0+c3RhcnRfZXZlbnRfb2JqID0gc2VsZi0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7Ci0gICAgc2VsZi0+c3RhcnRfbnNfZXZlbnRfb2JqID0gc2VsZi0+ZW5kX25zX2V2ZW50X29iaiA9IE5VTEw7Ci0KLSAgICBBTExPQyhzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAiY3JlYXRlIHRyZWVidWlsZGVyIik7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKKyAgICAgICAgdC0+ZXZlbnRzID0gTlVMTDsKKyAgICAgICAgdC0+c3RhcnRfZXZlbnRfb2JqID0gdC0+ZW5kX2V2ZW50X29iaiA9IE5VTEw7CisgICAgICAgIHQtPnN0YXJ0X25zX2V2ZW50X29iaiA9IHQtPmVuZF9uc19ldmVudF9vYmogPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopdDsKIH0KIAotc3RhdGljIFB5T2JqZWN0KgotdHJlZWJ1aWxkZXIoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncykKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpUcmVlQnVpbGRlciIpKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImVsZW1lbnRfZmFjdG9yeSIsIDB9OworICAgIFB5T2JqZWN0ICplbGVtZW50X2ZhY3RvcnkgPSBOVUxMOworICAgIFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmX3RiID0gKFRyZWVCdWlsZGVyT2JqZWN0ICopc2VsZjsKKyAgICBQeU9iamVjdCAqdG1wOwogCi0gICAgcmV0dXJuIHRyZWVidWlsZGVyX25ldygpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8TzpUcmVlQnVpbGRlciIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZWxlbWVudF9mYWN0b3J5KSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGVsZW1lbnRfZmFjdG9yeSkgeworICAgICAgICBQeV9JTkNSRUYoZWxlbWVudF9mYWN0b3J5KTsKKyAgICAgICAgdG1wID0gc2VsZl90Yi0+ZWxlbWVudF9mYWN0b3J5OworICAgICAgICBzZWxmX3RiLT5lbGVtZW50X2ZhY3RvcnkgPSBlbGVtZW50X2ZhY3Rvcnk7CisgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfZ2NfdHJhdmVyc2UoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPnJvb3QpOworICAgIFB5X1ZJU0lUKHNlbGYtPnRoaXMpOworICAgIFB5X1ZJU0lUKHNlbGYtPmxhc3QpOworICAgIFB5X1ZJU0lUKHNlbGYtPmRhdGEpOworICAgIFB5X1ZJU0lUKHNlbGYtPnN0YWNrKTsKKyAgICBQeV9WSVNJVChzZWxmLT5lbGVtZW50X2ZhY3RvcnkpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9nY19jbGVhcihUcmVlQnVpbGRlck9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5lbmRfbnNfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHNlbGYtPmVuZF9ldmVudF9vYmopOworICAgIFB5X0NMRUFSKHNlbGYtPnN0YXJ0X2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZXZlbnRzKTsKKyAgICBQeV9DTEVBUihzZWxmLT5zdGFjayk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGF0YSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+bGFzdCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+dGhpcyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KTsKKyAgICBQeV9DTEVBUihzZWxmLT5yb290KTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQKLXRyZWVidWlsZGVyX2RlYWxsb2MoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYpCit0cmVlYnVpbGRlcl9kZWFsbG9jKFRyZWVCdWlsZGVyT2JqZWN0ICpzZWxmKQogewotICAgIFB5X1hERUNSRUYoc2VsZi0+ZW5kX25zX2V2ZW50X29iaik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5zdGFydF9uc19ldmVudF9vYmopOwotICAgIFB5X1hERUNSRUYoc2VsZi0+ZW5kX2V2ZW50X29iaik7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5zdGFydF9ldmVudF9vYmopOwotICAgIFB5X1hERUNSRUYoc2VsZi0+ZXZlbnRzKTsKLSAgICBQeV9ERUNSRUYoc2VsZi0+c3RhY2spOwotICAgIFB5X1hERUNSRUYoc2VsZi0+ZGF0YSk7Ci0gICAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwotICAgIFB5X0RFQ1JFRihzZWxmLT50aGlzKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPnJvb3QpOworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgdHJlZWJ1aWxkZXJfZ2NfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KIAotICAgIFJFTEVBU0Uoc2l6ZW9mKFRyZWVCdWlsZGVyT2JqZWN0KSwgImRlc3Ryb3kgdHJlZWJ1aWxkZXIiKTsKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBoZWxwZXJzIGZvciBoYW5kbGluZyBvZiBhcmJpdHJhcnkgZWxlbWVudC1saWtlIG9iamVjdHMgKi8KIAotICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHRfb3JfdGFpbChQeU9iamVjdCAqZWxlbWVudCwgUHlPYmplY3QgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipkZXN0LCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBpZiAoRWxlbWVudF9DaGVja0V4YWN0KGVsZW1lbnQpKSB7CisgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSigqZGVzdCkpOworICAgICAgICAqZGVzdCA9IEpPSU5fU0VUKGRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KGRhdGEpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqam9pbmVkID0gbGlzdF9qb2luKGRhdGEpOworICAgICAgICBpbnQgcjsKKyAgICAgICAgaWYgKGpvaW5lZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByID0gX1B5T2JqZWN0X1NldEF0dHJJZChlbGVtZW50LCBuYW1lLCBqb2luZWQpOworICAgICAgICBQeV9ERUNSRUYoam9pbmVkKTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorfQorCisvKiBUaGVzZSB0d28gZnVuY3Rpb25zIHN0ZWFsIGEgcmVmZXJlbmNlIHRvIGRhdGEgKi8KK3N0YXRpYyBpbnQKK3RyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHQoUHlPYmplY3QgKmVsZW1lbnQsIFB5T2JqZWN0ICpkYXRhKQoreworICAgIF9QeV9JREVOVElGSUVSKHRleHQpOworICAgIHJldHVybiB0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0X29yX3RhaWwoCisgICAgICAgIGVsZW1lbnQsIGRhdGEsICYoKEVsZW1lbnRPYmplY3QgKikgZWxlbWVudCktPnRleHQsICZQeUlkX3RleHQpOworfQorCitzdGF0aWMgaW50Cit0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90YWlsKFB5T2JqZWN0ICplbGVtZW50LCBQeU9iamVjdCAqZGF0YSkKK3sKKyAgICBfUHlfSURFTlRJRklFUih0YWlsKTsKKyAgICByZXR1cm4gdHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGV4dF9vcl90YWlsKAorICAgICAgICBlbGVtZW50LCBkYXRhLCAmKChFbGVtZW50T2JqZWN0ICopIGVsZW1lbnQpLT50YWlsLCAmUHlJZF90YWlsKTsKK30KKworc3RhdGljIGludAordHJlZWJ1aWxkZXJfYWRkX3N1YmVsZW1lbnQoUHlPYmplY3QgKmVsZW1lbnQsIFB5T2JqZWN0ICpjaGlsZCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihhcHBlbmQpOworICAgIGlmIChFbGVtZW50X0NoZWNrRXhhY3QoZWxlbWVudCkpIHsKKyAgICAgICAgRWxlbWVudE9iamVjdCAqZWxlbSA9IChFbGVtZW50T2JqZWN0ICopIGVsZW1lbnQ7CisgICAgICAgIHJldHVybiBlbGVtZW50X2FkZF9zdWJlbGVtZW50KGVsZW0sIGNoaWxkKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZWxlbWVudCwgJlB5SWRfYXBwZW5kLCAiTyIsIGNoaWxkKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogaGFuZGxlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQotdHJlZWJ1aWxkZXJfaGFuZGxlX3htbChUcmVlQnVpbGRlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogc3RhbmRhbG9uZSkKLXsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotTE9DQUwoUHlPYmplY3QqKQogdHJlZWJ1aWxkZXJfaGFuZGxlX3N0YXJ0KFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogdGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0KiBhdHRyaWIpCiB7CkBAIC0xNzE1LDI3ICsyMTgyLDI5IEBACiAKICAgICBpZiAoc2VsZi0+ZGF0YSkgewogICAgICAgICBpZiAoc2VsZi0+dGhpcyA9PSBzZWxmLT5sYXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGV4dCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGV4dCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50YWlsKSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50YWlsID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHQoc2VsZi0+bGFzdCwgc2VsZi0+ZGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAodHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGFpbChzZWxmLT5sYXN0LCBzZWxmLT5kYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CiAKLSAgICBub2RlID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOwotICAgIGlmICghbm9kZSkKKyAgICBpZiAoc2VsZi0+ZWxlbWVudF9mYWN0b3J5KSB7CisgICAgICAgIG5vZGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+ZWxlbWVudF9mYWN0b3J5LCAiT08iLCB0YWcsIGF0dHJpYik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbm9kZSA9IGNyZWF0ZV9uZXdfZWxlbWVudCh0YWcsIGF0dHJpYik7CisgICAgfQorICAgIGlmICghbm9kZSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICB0aGlzID0gKFB5T2JqZWN0Kikgc2VsZi0+dGhpczsKKyAgICB0aGlzID0gc2VsZi0+dGhpczsKIAogICAgIGlmICh0aGlzICE9IFB5X05vbmUpIHsKLSAgICAgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQoKEVsZW1lbnRPYmplY3QqKSB0aGlzLCBub2RlKSA8IDApCisgICAgICAgIGlmICh0cmVlYnVpbGRlcl9hZGRfc3ViZWxlbWVudCh0aGlzLCBub2RlKSA8IDApCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChzZWxmLT5yb290KSB7CkBAIC0xNzYxLDE5ICsyMjMwLDE3IEBACiAKICAgICBQeV9ERUNSRUYodGhpcyk7CiAgICAgUHlfSU5DUkVGKG5vZGUpOwotICAgIHNlbGYtPnRoaXMgPSAoRWxlbWVudE9iamVjdCopIG5vZGU7CisgICAgc2VsZi0+dGhpcyA9IG5vZGU7CiAKICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CiAgICAgUHlfSU5DUkVGKG5vZGUpOwotICAgIHNlbGYtPmxhc3QgPSAoRWxlbWVudE9iamVjdCopIG5vZGU7CisgICAgc2VsZi0+bGFzdCA9IG5vZGU7CiAKICAgICBpZiAoc2VsZi0+c3RhcnRfZXZlbnRfb2JqKSB7CiAgICAgICAgIFB5T2JqZWN0KiByZXM7CiAgICAgICAgIFB5T2JqZWN0KiBhY3Rpb24gPSBzZWxmLT5zdGFydF9ldmVudF9vYmo7Ci0gICAgICAgIHJlcyA9IFB5VHVwbGVfTmV3KDIpOworICAgICAgICByZXMgPSBQeVR1cGxlX1BhY2soMiwgYWN0aW9uLCBub2RlKTsKICAgICAgICAgaWYgKHJlcykgewotICAgICAgICAgICAgUHlfSU5DUkVGKGFjdGlvbik7IFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCAoUHlPYmplY3QqKSBhY3Rpb24pOwotICAgICAgICAgICAgUHlfSU5DUkVGKG5vZGUpOyAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAxLCAoUHlPYmplY3QqKSBub2RlKTsKICAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQoc2VsZi0+ZXZlbnRzLCByZXMpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTc5MSw3ICsyMjU4LDcgQEAKIHRyZWVidWlsZGVyX2hhbmRsZV9kYXRhKFRyZWVCdWlsZGVyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogZGF0YSkKIHsKICAgICBpZiAoIXNlbGYtPmRhdGEpIHsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gKEVsZW1lbnRPYmplY3QqKSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIGlnbm9yZSBjYWxscyB0byBkYXRhIGJlZm9yZSB0aGUgZmlyc3QgY2FsbCB0byBzdGFydCAqLwogICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAgICAgICAgIH0KQEAgLTE4MDEsNiArMjI2OCw3IEBACiAgICAgICAgIC8qIG1vcmUgdGhhbiBvbmUgaXRlbTsgdXNlIGEgbGlzdCB0byBjb2xsZWN0IGl0ZW1zICovCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkgJiYgUHlfUkVGQ05UKHNlbGYtPmRhdGEpID09IDEgJiYKICAgICAgICAgICAgIFB5Qnl0ZXNfQ2hlY2tFeGFjdChkYXRhKSAmJiBQeUJ5dGVzX0dFVF9TSVpFKGRhdGEpID09IDEpIHsKKyAgICAgICAgICAgIC8qIFhYWCB0aGlzIGNvZGUgcGF0aCB1bnVzZWQgaW4gUHl0aG9uIDM/ICovCiAgICAgICAgICAgICAvKiBleHBhdCBvZnRlbiBnZW5lcmF0ZXMgc2luZ2xlIGNoYXJhY3RlciBkYXRhIHNlY3Rpb25zOyBoYW5kbGUKICAgICAgICAgICAgICAgIHRoZSBtb3N0IGNvbW1vbiBjYXNlIGJ5IHJlc2l6aW5nIHRoZSBleGlzdGluZyBzdHJpbmcuLi4gKi8KICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZi0+ZGF0YSk7CkBAIC0xODMwLDE1ICsyMjk4LDExIEBACiAKICAgICBpZiAoc2VsZi0+ZGF0YSkgewogICAgICAgICBpZiAoc2VsZi0+dGhpcyA9PSBzZWxmLT5sYXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGV4dCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGV4dCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGlmICh0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0KHNlbGYtPmxhc3QsIHNlbGYtPmRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPmxhc3QtPnRhaWwpKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3QtPnRhaWwgPSBKT0lOX1NFVCgKLSAgICAgICAgICAgICAgICBzZWxmLT5kYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKQotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAodHJlZWJ1aWxkZXJfc2V0X2VsZW1lbnRfdGFpbChzZWxmLT5sYXN0LCBzZWxmLT5kYXRhKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5kYXRhID0gTlVMTDsKICAgICB9CkBAIC0xODU4LDE3ICsyMzIyLDE1IEBACiAKICAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CiAKLSAgICBzZWxmLT5sYXN0ID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmLT50aGlzOwotICAgIHNlbGYtPnRoaXMgPSAoRWxlbWVudE9iamVjdCopIGl0ZW07CisgICAgc2VsZi0+bGFzdCA9IHNlbGYtPnRoaXM7CisgICAgc2VsZi0+dGhpcyA9IGl0ZW07CiAKICAgICBpZiAoc2VsZi0+ZW5kX2V2ZW50X29iaikgewogICAgICAgICBQeU9iamVjdCogcmVzOwogICAgICAgICBQeU9iamVjdCogYWN0aW9uID0gc2VsZi0+ZW5kX2V2ZW50X29iajsKICAgICAgICAgUHlPYmplY3QqIG5vZGUgPSAoUHlPYmplY3QqKSBzZWxmLT5sYXN0OwotICAgICAgICByZXMgPSBQeVR1cGxlX05ldygyKTsKKyAgICAgICAgcmVzID0gUHlUdXBsZV9QYWNrKDIsIGFjdGlvbiwgbm9kZSk7CiAgICAgICAgIGlmIChyZXMpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhY3Rpb24pOyBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMCwgKFB5T2JqZWN0KikgYWN0aW9uKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihub2RlKTsgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgKFB5T2JqZWN0Kikgbm9kZSk7CiAgICAgICAgICAgICBQeUxpc3RfQXBwZW5kKHNlbGYtPmV2ZW50cywgcmVzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICB9IGVsc2UKQEAgLTE5MTQsOCArMjM3NiwxMiBAQAogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgcGFyY2VsKTsKICAgICAgICAgUHlMaXN0X0FwcGVuZChzZWxmLT5ldmVudHMsIHJlcyk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgIH0gZWxzZQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfREVDUkVGKGFjdGlvbik7CisgICAgICAgIFB5X0RFQ1JFRihwYXJjZWwpOwogICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yICovCisgICAgfQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTk3NywyMiArMjQ0MywxMCBAQAogICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfc3RhcnQoc2VsZiwgdGFnLCBhdHRyaWIpOwogfQogCi1zdGF0aWMgUHlPYmplY3QqCi10cmVlYnVpbGRlcl94bWwoVHJlZUJ1aWxkZXJPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIFB5T2JqZWN0KiBlbmNvZGluZzsKLSAgICBQeU9iamVjdCogc3RhbmRhbG9uZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnhtbCIsICZlbmNvZGluZywgJnN0YW5kYWxvbmUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiB0cmVlYnVpbGRlcl9oYW5kbGVfeG1sKHNlbGYsIGVuY29kaW5nLCBzdGFuZGFsb25lKTsKLX0KLQogc3RhdGljIFB5TWV0aG9kRGVmIHRyZWVidWlsZGVyX21ldGhvZHNbXSA9IHsKICAgICB7ImRhdGEiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2RhdGEsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzdGFydCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfc3RhcnQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJlbmQiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2VuZCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7InhtbCIsIChQeUNGdW5jdGlvbikgdHJlZWJ1aWxkZXJfeG1sLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pIHRyZWVidWlsZGVyX2Nsb3NlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCBOVUxMfQogfTsKQEAgLTIwMDEsMzEgKzI0NTUsNDIgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcil0cmVlYnVpbGRlcl9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgLyogdHBfcHJpbnQgKi8KLSAgICAwLCAvKiB0cF9nZXRhdHRyICovCi0gICAgMCwgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsIC8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwgLyogdHBfcmVwciAqLwotICAgIDAsIC8qIHRwX2FzX251bWJlciAqLwotICAgIDAsIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsIC8qIHRwX2hhc2ggKi8KLSAgICAwLCAvKiB0cF9jYWxsICovCi0gICAgMCwgLyogdHBfc3RyICovCi0gICAgMCwgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIHRyZWVidWlsZGVyX21ldGhvZHMsIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAvKiB0cF9tZW1iZXJzICovCisgICAgKGRlc3RydWN0b3IpdHJlZWJ1aWxkZXJfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyl0cmVlYnVpbGRlcl9nY190cmF2ZXJzZSwgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSl0cmVlYnVpbGRlcl9nY19jbGVhciwgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICB0cmVlYnVpbGRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyl0cmVlYnVpbGRlcl9pbml0LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHRyZWVidWlsZGVyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkBAIC0yMDM0LDQwICsyNDk5LDM5IEBACiAjaWYgZGVmaW5lZChVU0VfRVhQQVQpCiAKICNpbmNsdWRlICJleHBhdC5oIgotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQogI2luY2x1ZGUgInB5ZXhwYXQuaCIKLXN0YXRpYyBzdHJ1Y3QgUHlFeHBhdF9DQVBJKiBleHBhdF9jYXBpOworc3RhdGljIHN0cnVjdCBQeUV4cGF0X0NBUEkgKmV4cGF0X2NhcGk7CiAjZGVmaW5lIEVYUEFUKGZ1bmMpIChleHBhdF9jYXBpLT5mdW5jKQotI2Vsc2UKLSNkZWZpbmUgRVhQQVQoZnVuYykgKFhNTF8jI2Z1bmMpCi0jZW5kaWYKKworc3RhdGljIFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgRXhwYXRNZW1vcnlIYW5kbGVyID0geworICAgIFB5T2JqZWN0X01hbGxvYywgUHlPYmplY3RfUmVhbGxvYywgUHlPYmplY3RfRnJlZX07CiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAKICAgICBYTUxfUGFyc2VyIHBhcnNlcjsKIAotICAgIFB5T2JqZWN0KiB0YXJnZXQ7Ci0gICAgUHlPYmplY3QqIGVudGl0eTsKKyAgICBQeU9iamVjdCAqdGFyZ2V0OworICAgIFB5T2JqZWN0ICplbnRpdHk7CiAKLSAgICBQeU9iamVjdCogbmFtZXM7CisgICAgUHlPYmplY3QgKm5hbWVzOwogCi0gICAgUHlPYmplY3QqIGhhbmRsZV94bWw7CisgICAgUHlPYmplY3QgKmhhbmRsZV9zdGFydDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2RhdGE7CisgICAgUHlPYmplY3QgKmhhbmRsZV9lbmQ7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX3N0YXJ0OwotICAgIFB5T2JqZWN0KiBoYW5kbGVfZGF0YTsKLSAgICBQeU9iamVjdCogaGFuZGxlX2VuZDsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2NvbW1lbnQ7CisgICAgUHlPYmplY3QgKmhhbmRsZV9waTsKKyAgICBQeU9iamVjdCAqaGFuZGxlX2RvY3R5cGU7CiAKLSAgICBQeU9iamVjdCogaGFuZGxlX2NvbW1lbnQ7Ci0gICAgUHlPYmplY3QqIGhhbmRsZV9waTsKLQotICAgIFB5T2JqZWN0KiBoYW5kbGVfY2xvc2U7CisgICAgUHlPYmplY3QgKmhhbmRsZV9jbG9zZTsKIAogfSBYTUxQYXJzZXJPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgWE1MUGFyc2VyX1R5cGU7CiAKKyNkZWZpbmUgWE1MUGFyc2VyX0NoZWNrRXhhY3Qob3ApIChQeV9UWVBFKG9wKSA9PSAmWE1MUGFyc2VyX1R5cGUpCisKIC8qIGhlbHBlcnMgKi8KIAogTE9DQUwoUHlPYmplY3QqKQpAQCAtMjA3Niw3ICsyNTQwLDcgQEAKICAgICAvKiBjb252ZXJ0IGEgVVRGLTggdGFnL2F0dHJpYnV0ZSBuYW1lIGZyb20gdGhlIGV4cGF0IHBhcnNlcgogICAgICAgIHRvIGEgdW5pdmVyc2FsIG5hbWUgc3RyaW5nICovCiAKLSAgICBpbnQgc2l6ZSA9IHN0cmxlbihzdHJpbmcpOworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IChQeV9zc2l6ZV90KSBzdHJsZW4oc3RyaW5nKTsKICAgICBQeU9iamVjdCoga2V5OwogICAgIFB5T2JqZWN0KiB2YWx1ZTsKIApAQCAtMjA5NSw3ICsyNTU5LDcgQEAKIAogICAgICAgICBQeU9iamVjdCogdGFnOwogICAgICAgICBjaGFyKiBwOwotICAgICAgICBpbnQgaTsKKyAgICAgICAgUHlfc3NpemVfdCBpOwogCiAgICAgICAgIC8qIGxvb2sgZm9yIG5hbWVzcGFjZSBzZXBhcmF0b3IgKi8KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKQEAgLTIxMTMsNyArMjU3Nyw3IEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIHRhZyA9IGtleTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICAvKiBkZWNvZGUgdW5pdmVyc2FsIG5hbWUgKi8KICAgICAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRhZyk7CiAgICAgICAgIHZhbHVlID0gUHlVbmljb2RlX0RlY29kZVVURjgocCwgc2l6ZSwgInN0cmljdCIpOwpAQCAtMjEzNSwyMCArMjU5OSwzOSBAQAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorLyogU2V0IHRoZSBQYXJzZUVycm9yIGV4Y2VwdGlvbiB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLgorICogSWYgbWVzc2FnZSBpcyBub3QgTlVMTCwgaXQncyB1c2VkIGFzIHRoZSBlcnJvciBzdHJpbmcuIE90aGVyd2lzZSwgdGhlCisgKiBtZXNzYWdlIHN0cmluZyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlIGdpdmVuIGVycm9yX2NvZGUuCisqLwogc3RhdGljIHZvaWQKLWV4cGF0X3NldF9lcnJvcihjb25zdCBjaGFyKiBtZXNzYWdlLCBpbnQgbGluZSwgaW50IGNvbHVtbikKK2V4cGF0X3NldF9lcnJvcihlbnVtIFhNTF9FcnJvciBlcnJvcl9jb2RlLCBpbnQgbGluZSwgaW50IGNvbHVtbiwgY2hhciAqbWVzc2FnZSkKIHsKLSAgICBQeU9iamVjdCAqZXJyb3I7Ci0gICAgUHlPYmplY3QgKnBvc2l0aW9uOwotICAgIGNoYXIgYnVmZmVyWzI1Nl07CisgICAgUHlPYmplY3QgKmVycm1zZywgKmVycm9yLCAqcG9zaXRpb24sICpjb2RlOwogCi0gICAgc3ByaW50ZihidWZmZXIsICIlLjEwMHM6IGxpbmUgJWQsIGNvbHVtbiAlZCIsIG1lc3NhZ2UsIGxpbmUsIGNvbHVtbik7CisgICAgZXJybXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzOiBsaW5lICVkLCBjb2x1bW4gJWQiLAorICAgICAgICAgICAgICAgIG1lc3NhZ2UgPyBtZXNzYWdlIDogRVhQQVQoRXJyb3JTdHJpbmcpKGVycm9yX2NvZGUpLAorICAgICAgICAgICAgICAgIGxpbmUsIGNvbHVtbik7CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CiAKLSAgICBlcnJvciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaiwgInMiLCBidWZmZXIpOworICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqLCAiTyIsIGVycm1zZyk7CisgICAgUHlfREVDUkVGKGVycm1zZyk7CiAgICAgaWYgKCFlcnJvcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLyogYWRkIHBvc2l0aW9uIGF0dHJpYnV0ZSAqLworICAgIC8qIEFkZCBjb2RlIGFuZCBwb3NpdGlvbiBhdHRyaWJ1dGVzICovCisgICAgY29kZSA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyllcnJvcl9jb2RlKTsKKyAgICBpZiAoIWNvZGUpIHsKKyAgICAgICAgUHlfREVDUkVGKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhlcnJvciwgImNvZGUiLCBjb2RlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgICAgICBQeV9ERUNSRUYoY29kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUHlfREVDUkVGKGNvZGUpOworCiAgICAgcG9zaXRpb24gPSBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgbGluZSwgY29sdW1uKTsKICAgICBpZiAoIXBvc2l0aW9uKSB7CiAgICAgICAgIFB5X0RFQ1JFRihlcnJvcik7CkBAIC0yMjAwLDkgKzI2ODMsMTAgQEAKICAgICAgICAgY2hhciBtZXNzYWdlWzEyOF0gPSAidW5kZWZpbmVkIGVudGl0eSAiOwogICAgICAgICBzdHJuY2F0KG1lc3NhZ2UsIGRhdGFfaW4sIGRhdGFfbGVuIDwgMTAwP2RhdGFfbGVuOjEwMCk7CiAgICAgICAgIGV4cGF0X3NldF9lcnJvcigKLSAgICAgICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgICBYTUxfRVJST1JfVU5ERUZJTkVEX0VOVElUWSwKICAgICAgICAgICAgIEVYUEFUKEdldEVycm9yTGluZU51bWJlcikoc2VsZi0+cGFyc2VyKSwKLSAgICAgICAgICAgIEVYUEFUKEdldEVycm9yQ29sdW1uTnVtYmVyKShzZWxmLT5wYXJzZXIpCisgICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKSwKKyAgICAgICAgICAgIG1lc3NhZ2UKICAgICAgICAgICAgICk7CiAgICAgfQogCkBAIC0yMjQ3LDIxICsyNzMxLDE4IEBACiAgICAgICAgICAgICBhdHRyaWJfaW4gKz0gMjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgYXR0cmliID0gUHlfTm9uZTsKKyAgICAgICAgLyogUGFzcyBhbiBlbXB0eSBkaWN0aW9uYXJ5IG9uICovCisgICAgICAgIGF0dHJpYiA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKCFhdHRyaWIpCisgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFRyZWVCdWlsZGVyX0NoZWNrRXhhY3Qoc2VsZi0+dGFyZ2V0KSkKKyAgICBpZiAoVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIC8qIHNob3J0Y3V0ICovCiAgICAgICAgIHJlcyA9IHRyZWVidWlsZGVyX2hhbmRsZV9zdGFydCgoVHJlZUJ1aWxkZXJPYmplY3QqKSBzZWxmLT50YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWcsIGF0dHJpYik7CisgICAgfQogICAgIGVsc2UgaWYgKHNlbGYtPmhhbmRsZV9zdGFydCkgewotICAgICAgICBpZiAoYXR0cmliID09IFB5X05vbmUpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyaWIpOwotICAgICAgICAgICAgYXR0cmliID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKCFhdHRyaWIpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihzZWxmLT5oYW5kbGVfc3RhcnQsICJPTyIsIHRhZywgYXR0cmliKTsKICAgICB9IGVsc2UKICAgICAgICAgcmVzID0gTlVMTDsKQEAgLTIzNzEsNiArMjg1Miw3OCBAQAogICAgIH0KIH0KIAorc3RhdGljIHZvaWQgCitleHBhdF9zdGFydF9kb2N0eXBlX2hhbmRsZXIoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpkb2N0eXBlX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnN5c2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpwdWJpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGFzX2ludGVybmFsX3N1YnNldCkKK3sKKyAgICBQeU9iamVjdCAqc2VsZl9weW9iaiA9IChQeU9iamVjdCAqKXNlbGY7CisgICAgUHlPYmplY3QgKmRvY3R5cGVfbmFtZV9vYmosICpzeXNpZF9vYmosICpwdWJpZF9vYmo7CisgICAgUHlPYmplY3QgKnBhcnNlcl9kb2N0eXBlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGRvY3R5cGVfbmFtZV9vYmogPSBtYWtldW5pdmVyc2FsKHNlbGYsIGRvY3R5cGVfbmFtZSk7CisgICAgaWYgKCFkb2N0eXBlX25hbWVfb2JqKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoc3lzaWQpIHsKKyAgICAgICAgc3lzaWRfb2JqID0gbWFrZXVuaXZlcnNhbChzZWxmLCBzeXNpZCk7CisgICAgICAgIGlmICghc3lzaWRfb2JqKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZG9jdHlwZV9uYW1lX29iaik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHN5c2lkX29iaiA9IFB5X05vbmU7CisgICAgfQorCisgICAgaWYgKHB1YmlkKSB7CisgICAgICAgIHB1YmlkX29iaiA9IG1ha2V1bml2ZXJzYWwoc2VsZiwgcHViaWQpOworICAgICAgICBpZiAoIXB1YmlkX29iaikgeworICAgICAgICAgICAgUHlfREVDUkVGKGRvY3R5cGVfbmFtZV9vYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHN5c2lkX29iaik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIHB1YmlkX29iaiA9IFB5X05vbmU7CisgICAgfQorCisgICAgLyogSWYgdGhlIHRhcmdldCBoYXMgYSBoYW5kbGVyIGZvciBkb2N0eXBlLCBjYWxsIGl0LiAqLworICAgIGlmIChzZWxmLT5oYW5kbGVfZG9jdHlwZSkgeworICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oc2VsZi0+aGFuZGxlX2RvY3R5cGUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdHlwZV9uYW1lX29iaiwgcHViaWRfb2JqLCBzeXNpZF9vYmopOworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIC8qIE5vdyBzZWUgaWYgdGhlIHBhcnNlciBpdHNlbGYgaGFzIGEgZG9jdHlwZSBtZXRob2QuIElmIHllcyBhbmQgaXQncworICAgICAqIGEgc3ViY2xhc3MsIGNhbGwgaXQgYnV0IHdhcm4gYWJvdXQgZGVwcmVjYXRpb24uIElmIGl0J3Mgbm90IGEgc3ViY2xhc3MKKyAgICAgKiAoaS5lLiB2YW5pbGxhIFhNTFBhcnNlciksIGRvIG5vdGhpbmcuCisgICAgICovCisgICAgcGFyc2VyX2RvY3R5cGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGZfcHlvYmosICJkb2N0eXBlIik7CisgICAgaWYgKHBhcnNlcl9kb2N0eXBlKSB7CisgICAgICAgIGlmICghWE1MUGFyc2VyX0NoZWNrRXhhY3Qoc2VsZl9weW9iaikpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1ldGhvZCBvZiBYTUxQYXJzZXIgaXMgZGVwcmVjYXRlZC4gIERlZmluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGRvY3R5cGUoKSBtZXRob2Qgb24gdGhlIFRyZWVCdWlsZGVyIHRhcmdldC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkgeworICAgICAgICAgICAgICAgIGdvdG8gY2xlYXI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24ocGFyc2VyX2RvY3R5cGUsICJPT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3R5cGVfbmFtZV9vYmosIHB1YmlkX29iaiwgc3lzaWRfb2JqKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgIH0KKyAgICB9CisKK2NsZWFyOgorICAgIFB5X1hERUNSRUYocGFyc2VyX2RvY3R5cGUpOworICAgIFB5X0RFQ1JFRihkb2N0eXBlX25hbWVfb2JqKTsKKyAgICBQeV9ERUNSRUYocHViaWRfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3lzaWRfb2JqKTsKK30KKwogc3RhdGljIHZvaWQKIGV4cGF0X3BpX2hhbmRsZXIoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBjb25zdCBYTUxfQ2hhciogdGFyZ2V0X2luLAogICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciogZGF0YV9pbikKQEAgLTIzOTksMjkgKzI5NTIsMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW5jb2RpbmcgKmluZm8pCiB7CiAgICAgUHlPYmplY3QqIHU7Ci0gICAgUHlfVU5JQ09ERSogcDsKICAgICB1bnNpZ25lZCBjaGFyIHNbMjU2XTsKICAgICBpbnQgaTsKKyAgICB2b2lkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBraW5kOwogCiAgICAgbWVtc2V0KGluZm8sIDAsIHNpemVvZihYTUxfRW5jb2RpbmcpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgc1tpXSA9IGk7Ci0gICAgCisKICAgICB1ID0gUHlVbmljb2RlX0RlY29kZSgoY2hhciopIHMsIDI1NiwgbmFtZSwgInJlcGxhY2UiKTsKICAgICBpZiAoIXUpCiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodSkpCisgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1KSAhPSAyNTYpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodSkgIT0gMjU2KSB7CiAgICAgICAgIFB5X0RFQ1JFRih1KTsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgICAgfQogCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHUpOwotCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKLSAgICAgICAgaWYgKHBbaV0gIT0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVIpCi0gICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSBwW2ldOworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCAhPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKKyAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IGNoOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBpbmZvLT5tYXBbaV0gPSAtMTsKICAgICB9CkBAIC0yNDMyLDE0NSArMjk4OSwxNTcgQEAKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yICovCiAKLXN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcihQeU9iamVjdCogc2VsZl8sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCitzdGF0aWMgUHlPYmplY3QgKgoreG1scGFyc2VyX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBYTUxQYXJzZXJPYmplY3QqIHNlbGY7Ci0gICAgLyogRklYTUU6IGRvZXMgdGhpcyBuZWVkIHRvIGJlIHN0YXRpYz8gKi8KLSAgICBzdGF0aWMgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSBtZW1vcnlfaGFuZGxlcjsKLQotICAgIFB5T2JqZWN0KiB0YXJnZXQgPSBOVUxMOwotICAgIGNoYXIqIGVuY29kaW5nID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhcioga3dsaXN0W10gPSB7ICJ0YXJnZXQiLCAiZW5jb2RpbmciLCBOVUxMIH07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJ8T3o6WE1MUGFyc2VyIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXQsICZlbmNvZGluZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0jaWYgZGVmaW5lZChVU0VfUFlFWFBBVF9DQVBJKQotICAgIGlmICghZXhwYXRfY2FwaSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBQeUV4Y19SdW50aW1lRXJyb3IsICJjYW5ub3QgbG9hZCBkaXNwYXRjaCB0YWJsZSBmcm9tIHB5ZXhwYXQiCi0gICAgICAgICAgICApOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGYgPSAoWE1MUGFyc2VyT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYpIHsKKyAgICAgICAgc2VsZi0+cGFyc2VyID0gTlVMTDsKKyAgICAgICAgc2VsZi0+dGFyZ2V0ID0gc2VsZi0+ZW50aXR5ID0gc2VsZi0+bmFtZXMgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBzZWxmLT5oYW5kbGVfZGF0YSA9IHNlbGYtPmhhbmRsZV9lbmQgPSBOVUxMOworICAgICAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IHNlbGYtPmhhbmRsZV9waSA9IHNlbGYtPmhhbmRsZV9jbG9zZSA9IE5VTEw7CisgICAgICAgIHNlbGYtPmhhbmRsZV9kb2N0eXBlID0gTlVMTDsKICAgICB9Ci0jZW5kaWYKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKK30KIAotICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoWE1MUGFyc2VyT2JqZWN0LCAmWE1MUGFyc2VyX1R5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworc3RhdGljIGludAoreG1scGFyc2VyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBYTUxQYXJzZXJPYmplY3QgKnNlbGZfeHAgPSAoWE1MUGFyc2VyT2JqZWN0ICopc2VsZjsKKyAgICBQeU9iamVjdCAqdGFyZ2V0ID0gTlVMTCwgKmh0bWwgPSBOVUxMOworICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Imh0bWwiLCAidGFyZ2V0IiwgImVuY29kaW5nIiwgMH07CiAKLSAgICBzZWxmLT5lbnRpdHkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKCFzZWxmLT5lbnRpdHkpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgIAotICAgIHNlbGYtPm5hbWVzID0gUHlEaWN0X05ldygpOwotICAgIGlmICghc2VsZi0+bmFtZXMpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT3o6WE1MUGFyc2VyIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZodG1sLCAmdGFyZ2V0LCAmZW5jb2RpbmcpKSB7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBtZW1vcnlfaGFuZGxlci5tYWxsb2NfZmNuID0gUHlPYmplY3RfTWFsbG9jOwotICAgIG1lbW9yeV9oYW5kbGVyLnJlYWxsb2NfZmNuID0gUHlPYmplY3RfUmVhbGxvYzsKLSAgICBtZW1vcnlfaGFuZGxlci5mcmVlX2ZjbiA9IFB5T2JqZWN0X0ZyZWU7CisgICAgc2VsZl94cC0+ZW50aXR5ID0gUHlEaWN0X05ldygpOworICAgIGlmICghc2VsZl94cC0+ZW50aXR5KQorICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBzZWxmLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmbWVtb3J5X2hhbmRsZXIsICJ9Iik7Ci0gICAgaWYgKCFzZWxmLT5wYXJzZXIpIHsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPm5hbWVzKTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICBzZWxmX3hwLT5uYW1lcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIXNlbGZfeHAtPm5hbWVzKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBzZWxmX3hwLT5wYXJzZXIgPSBFWFBBVChQYXJzZXJDcmVhdGVfTU0pKGVuY29kaW5nLCAmRXhwYXRNZW1vcnlIYW5kbGVyLCAifSIpOworICAgIGlmICghc2VsZl94cC0+cGFyc2VyKSB7CisgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPmVudGl0eSk7CisgICAgICAgIFB5X0NMRUFSKHNlbGZfeHAtPm5hbWVzKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICAvKiBzZXR1cCB0YXJnZXQgaGFuZGxlcnMgKi8KLSAgICBpZiAoIXRhcmdldCkgewotICAgICAgICB0YXJnZXQgPSB0cmVlYnVpbGRlcl9uZXcoKTsKLSAgICAgICAgaWYgKCF0YXJnZXQpIHsKLSAgICAgICAgICAgIEVYUEFUKFBhcnNlckZyZWUpKHNlbGYtPnBhcnNlcik7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+bmFtZXMpOwotICAgICAgICAgICAgUHlPYmplY3RfRGVsKHNlbGYtPmVudGl0eSk7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0gZWxzZQorICAgIGlmICh0YXJnZXQpIHsKICAgICAgICAgUHlfSU5DUkVGKHRhcmdldCk7Ci0gICAgc2VsZi0+dGFyZ2V0ID0gdGFyZ2V0OworICAgIH0gZWxzZSB7CisgICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygmVHJlZUJ1aWxkZXJfVHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgICAgICBQeV9DTEVBUihzZWxmX3hwLT5lbnRpdHkpOworICAgICAgICAgICAgUHlfQ0xFQVIoc2VsZl94cC0+bmFtZXMpOworICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZl94cC0+cGFyc2VyKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBzZWxmX3hwLT50YXJnZXQgPSB0YXJnZXQ7CiAKLSAgICBzZWxmLT5oYW5kbGVfeG1sID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJ4bWwiKTsKLSAgICBzZWxmLT5oYW5kbGVfc3RhcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInN0YXJ0Iik7Ci0gICAgc2VsZi0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKLSAgICBzZWxmLT5oYW5kbGVfZW5kID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJlbmQiKTsKLSAgICBzZWxmLT5oYW5kbGVfY29tbWVudCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiY29tbWVudCIpOwotICAgIHNlbGYtPmhhbmRsZV9waSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAicGkiKTsKLSAgICBzZWxmLT5oYW5kbGVfY2xvc2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNsb3NlIik7CisgICAgc2VsZl94cC0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9kYXRhID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkYXRhIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKKyAgICBzZWxmX3hwLT5oYW5kbGVfcGkgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgInBpIik7CisgICAgc2VsZl94cC0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOworICAgIHNlbGZfeHAtPmhhbmRsZV9kb2N0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJkb2N0eXBlIik7CiAKICAgICBQeUVycl9DbGVhcigpOwotCisgICAgCiAgICAgLyogY29uZmlndXJlIHBhcnNlciAqLwotICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmLT5wYXJzZXIsIHNlbGYpOworICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmX3hwLT5wYXJzZXIsIHNlbGZfeHApOwogICAgIEVYUEFUKFNldEVsZW1lbnRIYW5kbGVyKSgKLSAgICAgICAgc2VsZi0+cGFyc2VyLAorICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgIChYTUxfU3RhcnRFbGVtZW50SGFuZGxlcikgZXhwYXRfc3RhcnRfaGFuZGxlciwKICAgICAgICAgKFhNTF9FbmRFbGVtZW50SGFuZGxlcikgZXhwYXRfZW5kX2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXREZWZhdWx0SGFuZGxlckV4cGFuZCkoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX0RlZmF1bHRIYW5kbGVyKSBleHBhdF9kZWZhdWx0X2hhbmRsZXIKICAgICAgICAgKTsKICAgICBFWFBBVChTZXRDaGFyYWN0ZXJEYXRhSGFuZGxlcikoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyKSBleHBhdF9kYXRhX2hhbmRsZXIKICAgICAgICAgKTsKLSAgICBpZiAoc2VsZi0+aGFuZGxlX2NvbW1lbnQpCisgICAgaWYgKHNlbGZfeHAtPmhhbmRsZV9jb21tZW50KQogICAgICAgICBFWFBBVChTZXRDb21tZW50SGFuZGxlcikoCi0gICAgICAgICAgICBzZWxmLT5wYXJzZXIsCisgICAgICAgICAgICBzZWxmX3hwLT5wYXJzZXIsCiAgICAgICAgICAgICAoWE1MX0NvbW1lbnRIYW5kbGVyKSBleHBhdF9jb21tZW50X2hhbmRsZXIKICAgICAgICAgICAgICk7Ci0gICAgaWYgKHNlbGYtPmhhbmRsZV9waSkKKyAgICBpZiAoc2VsZl94cC0+aGFuZGxlX3BpKQogICAgICAgICBFWFBBVChTZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKSgKLSAgICAgICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKICAgICAgICAgICAgIChYTUxfUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikgZXhwYXRfcGlfaGFuZGxlcgogICAgICAgICAgICAgKTsKKyAgICBFWFBBVChTZXRTdGFydERvY3R5cGVEZWNsSGFuZGxlcikoCisgICAgICAgIHNlbGZfeHAtPnBhcnNlciwKKyAgICAgICAgKFhNTF9TdGFydERvY3R5cGVEZWNsSGFuZGxlcikgZXhwYXRfc3RhcnRfZG9jdHlwZV9oYW5kbGVyCisgICAgICAgICk7CiAgICAgRVhQQVQoU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlcikoCi0gICAgICAgIHNlbGYtPnBhcnNlciwKKyAgICAgICAgc2VsZl94cC0+cGFyc2VyLAogICAgICAgICAoWE1MX1Vua25vd25FbmNvZGluZ0hhbmRsZXIpIGV4cGF0X3Vua25vd25fZW5jb2RpbmdfaGFuZGxlciwgTlVMTAogICAgICAgICApOwogCi0gICAgQUxMT0Moc2l6ZW9mKFhNTFBhcnNlck9iamVjdCksICJjcmVhdGUgZXhwYXRwYXJzZXIiKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOworc3RhdGljIGludAoreG1scGFyc2VyX2djX3RyYXZlcnNlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfcGkpOworICAgIFB5X1ZJU0lUKHNlbGYtPmhhbmRsZV9jb21tZW50KTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfZW5kKTsKKyAgICBQeV9WSVNJVChzZWxmLT5oYW5kbGVfZGF0YSk7CisgICAgUHlfVklTSVQoc2VsZi0+aGFuZGxlX3N0YXJ0KTsKKworICAgIFB5X1ZJU0lUKHNlbGYtPnRhcmdldCk7CisgICAgUHlfVklTSVQoc2VsZi0+ZW50aXR5KTsKKyAgICBQeV9WSVNJVChzZWxmLT5uYW1lcyk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoreG1scGFyc2VyX2djX2NsZWFyKFhNTFBhcnNlck9iamVjdCAqc2VsZikKK3sKKyAgICBFWFBBVChQYXJzZXJGcmVlKShzZWxmLT5wYXJzZXIpOworCisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfcGkpOworICAgIFB5X0NMRUFSKHNlbGYtPmhhbmRsZV9jb21tZW50KTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfZW5kKTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfZGF0YSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+aGFuZGxlX3N0YXJ0KTsKKyAgICBQeV9DTEVBUihzZWxmLT5oYW5kbGVfZG9jdHlwZSk7CisKKyAgICBQeV9DTEVBUihzZWxmLT50YXJnZXQpOworICAgIFB5X0NMRUFSKHNlbGYtPmVudGl0eSk7CisgICAgUHlfQ0xFQVIoc2VsZi0+bmFtZXMpOworCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkCiB4bWxwYXJzZXJfZGVhbGxvYyhYTUxQYXJzZXJPYmplY3QqIHNlbGYpCiB7Ci0gICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKLQotICAgIFB5X1hERUNSRUYoc2VsZi0+aGFuZGxlX2Nsb3NlKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9waSk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfY29tbWVudCk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfZW5kKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9kYXRhKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmhhbmRsZV9zdGFydCk7Ci0gICAgUHlfWERFQ1JFRihzZWxmLT5oYW5kbGVfeG1sKTsKLQotICAgIFB5X0RFQ1JFRihzZWxmLT50YXJnZXQpOwotICAgIFB5X0RFQ1JFRihzZWxmLT5lbnRpdHkpOwotICAgIFB5X0RFQ1JFRihzZWxmLT5uYW1lcyk7Ci0KLSAgICBSRUxFQVNFKHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAiZGVzdHJveSBleHBhdHBhcnNlciIpOwotCi0gICAgUHlPYmplY3RfRGVsKHNlbGYpOworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CisgICAgeG1scGFyc2VyX2djX2NsZWFyKHNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBtZXRob2RzIChpbiBhbHBoYWJldGljYWwgb3JkZXIpICovCi0KIExPQ0FMKFB5T2JqZWN0KikKIGV4cGF0X3BhcnNlKFhNTFBhcnNlck9iamVjdCogc2VsZiwgY2hhciogZGF0YSwgaW50IGRhdGFfbGVuLCBpbnQgZmluYWwpCiB7CkBAIC0yNTgzLDkgKzMxNTIsMTAgQEAKIAogICAgIGlmICghb2spIHsKICAgICAgICAgZXhwYXRfc2V0X2Vycm9yKAotICAgICAgICAgICAgRVhQQVQoRXJyb3JTdHJpbmcpKEVYUEFUKEdldEVycm9yQ29kZSkoc2VsZi0+cGFyc2VyKSksCisgICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvZGUpKHNlbGYtPnBhcnNlciksCiAgICAgICAgICAgICBFWFBBVChHZXRFcnJvckxpbmVOdW1iZXIpKHNlbGYtPnBhcnNlciksCi0gICAgICAgICAgICBFWFBBVChHZXRFcnJvckNvbHVtbk51bWJlcikoc2VsZi0+cGFyc2VyKQorICAgICAgICAgICAgRVhQQVQoR2V0RXJyb3JDb2x1bW5OdW1iZXIpKHNlbGYtPnBhcnNlciksCisgICAgICAgICAgICBOVUxMCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yNjM2LDYgKzMyMDYsNyBAQAogCiAgICAgUHlPYmplY3QqIHJlYWRlcjsKICAgICBQeU9iamVjdCogYnVmZmVyOworICAgIFB5T2JqZWN0KiB0ZW1wOwogICAgIFB5T2JqZWN0KiByZXM7CiAKICAgICBQeU9iamVjdCogZmlsZW9iajsKQEAgLTI2NDUsNyArMzIxNiw3IEBACiAgICAgcmVhZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlb2JqLCAicmVhZCIpOwogICAgIGlmICghcmVhZGVyKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKKwogICAgIC8qIHJlYWQgZnJvbSBvcGVuIGZpbGUgb2JqZWN0ICovCiAgICAgZm9yICg7OykgewogCkBAIC0yNjU3LDcgKzMyMjgsMjIgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYnVmZmVyKSB8fCBQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoYnVmZmVyKSkgeworICAgICAgICAgICAgLyogQSB1bmljb2RlIG9iamVjdCBpcyBlbmNvZGVkIGludG8gYnl0ZXMgdXNpbmcgVVRGLTggKi8KKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoYnVmZmVyKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZW1wID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhidWZmZXIsICJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIik7CisgICAgICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGVtcCkgeworICAgICAgICAgICAgICAgIC8qIFByb3BhZ2F0ZSBleGNlcHRpb24gZnJvbSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlYWRlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIgPSB0ZW1wOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYnVmZmVyKSB8fCBQeUJ5dGVzX0dFVF9TSVpFKGJ1ZmZlcikgPT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjY4OSw3ICszMjc1LDEzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKLXhtbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3htbHBhcnNlcl9kb2N0eXBlKFhNTFBhcnNlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK3htbHBhcnNlcl9zZXRldmVudHMoWE1MUGFyc2VyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICAvKiBhY3RpdmF0ZSBlbGVtZW50IGV2ZW50IHJlcG9ydGluZyAqLwogCkBAIC0yNzA1LDcgKzMyOTcsNyBAQAogICAgIGlmICghVHJlZUJ1aWxkZXJfQ2hlY2tFeGFjdChzZWxmLT50YXJnZXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZygKICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJldmVudCBoYW5kbGluZyBvbmx5IHN1cHBvcnRlZCBmb3IgY0VsZW1lbnRUcmVlLlRyZWVidWlsZGVyICIKKyAgICAgICAgICAgICJldmVudCBoYW5kbGluZyBvbmx5IHN1cHBvcnRlZCBmb3IgRWxlbWVudFRyZWUuVHJlZUJ1aWxkZXIgIgogICAgICAgICAgICAgInRhcmdldHMiCiAgICAgICAgICAgICApOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3MTgsMTAgKzMzMTAsMTAgQEAKICAgICB0YXJnZXQtPmV2ZW50cyA9IGV2ZW50czsKIAogICAgIC8qIGNsZWFyIG91dCBleGlzdGluZyBldmVudHMgKi8KLSAgICBQeV9YREVDUkVGKHRhcmdldC0+c3RhcnRfZXZlbnRfb2JqKTsgdGFyZ2V0LT5zdGFydF9ldmVudF9vYmogPSBOVUxMOwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5lbmRfZXZlbnRfb2JqKTsgdGFyZ2V0LT5lbmRfZXZlbnRfb2JqID0gTlVMTDsKLSAgICBQeV9YREVDUkVGKHRhcmdldC0+c3RhcnRfbnNfZXZlbnRfb2JqKTsgdGFyZ2V0LT5zdGFydF9uc19ldmVudF9vYmogPSBOVUxMOwotICAgIFB5X1hERUNSRUYodGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqKTsgdGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqID0gTlVMTDsKKyAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIodGFyZ2V0LT5lbmRfZXZlbnRfb2JqKTsKKyAgICBQeV9DTEVBUih0YXJnZXQtPnN0YXJ0X25zX2V2ZW50X29iaik7CisgICAgUHlfQ0xFQVIodGFyZ2V0LT5lbmRfbnNfZXZlbnRfb2JqKTsKIAogICAgIGlmIChldmVudF9zZXQgPT0gUHlfTm9uZSkgewogICAgICAgICAvKiBkZWZhdWx0IGlzICJlbmQiIG9ubHkgKi8KQEAgLTI3OTMsMTAgKzMzODUsMTEgQEAKICAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfY2xvc2UsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJfcGFyc2UiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9wYXJzZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7Il9zZXRldmVudHMiLCAoUHlDRnVuY3Rpb24pIHhtbHBhcnNlcl9zZXRldmVudHMsIE1FVEhfVkFSQVJHU30sCisgICAgeyJkb2N0eXBlIiwgKFB5Q0Z1bmN0aW9uKSB4bWxwYXJzZXJfZG9jdHlwZSwgTUVUSF9WQVJBUkdTfSwKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKLXN0YXRpYyBQeU9iamVjdCogIAorc3RhdGljIFB5T2JqZWN0KgogeG1scGFyc2VyX2dldGF0dHJvKFhNTFBhcnNlck9iamVjdCogc2VsZiwgUHlPYmplY3QqIG5hbWVvYmopCiB7CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkgewpAQCAtMjgyNCwzMSArMzQxNyw0MiBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJYTUxQYXJzZXIiLCBzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgMCwKICAgICAvKiBtZXRob2RzICovCi0gICAgKGRlc3RydWN0b3IpeG1scGFyc2VyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KLSAgICAwLCAvKiB0cF9wcmludCAqLwotICAgIDAsIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRyICovCi0gICAgMCwgLyogdHBfcmVzZXJ2ZWQgKi8KLSAgICAwLCAvKiB0cF9yZXByICovCi0gICAgMCwgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgLyogdHBfYXNfc2VxdWVuY2UgKi8KLSAgICAwLCAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgLyogdHBfaGFzaCAqLwotICAgIDAsIC8qIHRwX2NhbGwgKi8KLSAgICAwLCAvKiB0cF9zdHIgKi8KLSAgICAoZ2V0YXR0cm9mdW5jKXhtbHBhcnNlcl9nZXRhdHRybywgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsIC8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyogdHBfZmxhZ3MgKi8KLSAgICAwLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsIC8qIHRwX2NsZWFyICovCi0gICAgMCwgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsIC8qIHRwX2l0ZXIgKi8KLSAgICAwLCAvKiB0cF9pdGVybmV4dCAqLwotICAgIHhtbHBhcnNlcl9tZXRob2RzLCAvKiB0cF9tZXRob2RzICovCi0gICAgMCwgLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKXhtbHBhcnNlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAoZ2V0YXR0cm9mdW5jKXhtbHBhcnNlcl9nZXRhdHRybywgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8IFB5X1RQRkxBR1NfSEFWRV9HQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpeG1scGFyc2VyX2djX3RyYXZlcnNlLCAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpeG1scGFyc2VyX2djX2NsZWFyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgeG1scGFyc2VyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpeG1scGFyc2VyX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICB4bWxwYXJzZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAjZW5kaWYKQEAgLTI4NTcsMTMgKzM0NjEsNyBAQAogLyogcHl0aG9uIG1vZHVsZSBpbnRlcmZhY2UgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7IkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7IlN1YkVsZW1lbnQiLCAoUHlDRnVuY3Rpb24pIHN1YmVsZW1lbnQsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKLSAgICB7IlRyZWVCdWlsZGVyIiwgKFB5Q0Z1bmN0aW9uKSB0cmVlYnVpbGRlciwgTUVUSF9WQVJBUkdTfSwKLSNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKLSAgICB7IlhNTFBhcnNlciIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0gICAgeyJYTUxUcmVlQnVpbGRlciIsIChQeUNGdW5jdGlvbikgeG1scGFyc2VyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCi0jZW5kaWYKICAgICB7TlVMTCwgTlVMTH0KIH07CiAKQEAgLTI4ODMsOSArMzQ4MSw3IEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19lbGVtZW50dHJlZSh2b2lkKQogewotICAgIFB5T2JqZWN0KiBtOwotICAgIFB5T2JqZWN0KiBnOwotICAgIGNoYXIqIGJvb3RzdHJhcDsKKyAgICBQeU9iamVjdCAqbSwgKnRlbXA7CiAKICAgICAvKiBJbml0aWFsaXplIG9iamVjdCB0eXBlcyAqLwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlRyZWVCdWlsZGVyX1R5cGUpIDwgMCkKQEAgLTI5MDEsMjEyICszNDk3LDE1IEBACiAgICAgaWYgKCFtKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIFRoZSBjb2RlIGJlbG93IHJlcXVpcmVzIHRoYXQgdGhlIG1vZHVsZSBnZXRzIGFscmVhZHkgYWRkZWQKLSAgICAgICB0byBzeXMubW9kdWxlcy4gKi8KLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgX2VsZW1lbnR0cmVlbW9kdWxlLm1fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtKTsKKyAgICBpZiAoISh0ZW1wID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJjb3B5IikpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbGVtZW50dHJlZV9kZWVwY29weV9vYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJkZWVwY29weSIpOworICAgIFB5X1hERUNSRUYodGVtcCk7CiAKLSAgICAvKiBweXRob24gZ2x1ZSBjb2RlICovCi0KLSAgICBnID0gUHlEaWN0X05ldygpOwotICAgIGlmICghZykKKyAgICBpZiAoIShlbGVtZW50cGF0aF9vYmogPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoInhtbC5ldHJlZS5FbGVtZW50UGF0aCIpKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhnLCAiX19idWlsdGluc19fIiwgUHlFdmFsX0dldEJ1aWx0aW5zKCkpOwotCi0gICAgYm9vdHN0cmFwID0gKAotCi0gICAgICAgICJmcm9tIGNvcHkgaW1wb3J0IGNvcHksIGRlZXBjb3B5XG4iCi0KLSAgICAgICAgInRyeTpcbiIKLSAgICAgICAgIiAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlXG4iCi0gICAgICAgICJleGNlcHQgSW1wb3J0RXJyb3I6XG4iCi0gICAgICAgICIgIGltcG9ydCBFbGVtZW50VHJlZVxuIgotICAgICAgICAiRVQgPSBFbGVtZW50VHJlZVxuIgotICAgICAgICAiZGVsIEVsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgImltcG9ydCBfZWxlbWVudHRyZWUgYXMgY0VsZW1lbnRUcmVlXG4iCi0KLSAgICAgICAgInRyeTpcbiIgLyogY2hlY2sgaWYgY29weSB3b3JrcyBhcyBpcyAqLwotICAgICAgICAiICBjb3B5KGNFbGVtZW50VHJlZS5FbGVtZW50KCd4JykpXG4iCi0gICAgICAgICJleGNlcHQ6XG4iCi0gICAgICAgICIgIGRlZiBjb3B5ZWxlbWVudChlbGVtKTpcbiIKLSAgICAgICAgIiAgICByZXR1cm4gZWxlbVxuIgotCi0gICAgICAgICJjbGFzcyBDb21tZW50UHJveHk6XG4iCi0gICAgICAgICIgZGVmIF9fY2FsbF9fKHNlbGYsIHRleHQ9Tm9uZSk6XG4iCi0gICAgICAgICIgIGVsZW1lbnQgPSBjRWxlbWVudFRyZWUuRWxlbWVudChFVC5Db21tZW50KVxuIgotICAgICAgICAiICBlbGVtZW50LnRleHQgPSB0ZXh0XG4iCi0gICAgICAgICIgIHJldHVybiBlbGVtZW50XG4iCi0gICAgICAgICIgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6XG4iCi0gICAgICAgICIgIHJldHVybiBFVC5Db21tZW50ID09IG90aGVyXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuQ29tbWVudCA9IENvbW1lbnRQcm94eSgpXG4iCi0KLSAgICAgICAgImNsYXNzIEVsZW1lbnRUcmVlKEVULkVsZW1lbnRUcmVlKTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIGRlZiBwYXJzZShzZWxmLCBzb3VyY2UsIHBhcnNlcj1Ob25lKTpcbiIKLSAgICAgICAgIiAgICBjbG9zZV9zb3VyY2UgPSBGYWxzZVxuIgotICAgICAgICAiICAgIGlmIG5vdCBoYXNhdHRyKHNvdXJjZSwgJ3JlYWQnKTpcbiIKLSAgICAgICAgIiAgICAgIHNvdXJjZSA9IG9wZW4oc291cmNlLCAncmInKVxuIgotICAgICAgICAiICAgICAgY2xvc2Vfc291cmNlID0gVHJ1ZVxuIgotICAgICAgICAiICAgIHRyeTpcbiIKLSAgICAgICAgIiAgICAgIGlmIHBhcnNlciBpcyBub3QgTm9uZTpcbiIKLSAgICAgICAgIiAgICAgICAgd2hpbGUgMTpcbiIKLSAgICAgICAgIiAgICAgICAgICBkYXRhID0gc291cmNlLnJlYWQoNjU1MzYpXG4iCi0gICAgICAgICIgICAgICAgICAgaWYgbm90IGRhdGE6XG4iCi0gICAgICAgICIgICAgICAgICAgICBicmVha1xuIgotICAgICAgICAiICAgICAgICAgIHBhcnNlci5mZWVkKGRhdGEpXG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX3Jvb3QgPSBwYXJzZXIuY2xvc2UoKVxuIgotICAgICAgICAiICAgICAgZWxzZTpcbiIgCi0gICAgICAgICIgICAgICAgIHBhcnNlciA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoKVxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9yb290ID0gcGFyc2VyLl9wYXJzZShzb3VyY2UpXG4iCi0gICAgICAgICIgICAgICByZXR1cm4gc2VsZi5fcm9vdFxuIgotICAgICAgICAiICAgIGZpbmFsbHk6XG4iCi0gICAgICAgICIgICAgICBpZiBjbG9zZV9zb3VyY2U6XG4iCi0gICAgICAgICIgICAgICAgIHNvdXJjZS5jbG9zZSgpXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUuRWxlbWVudFRyZWUgPSBFbGVtZW50VHJlZVxuIgotCi0gICAgICAgICJkZWYgaXRlcihub2RlLCB0YWc9Tm9uZSk6XG4iIC8qIGhlbHBlciAqLwotICAgICAgICAiICBpZiB0YWcgPT0gJyonOlxuIgotICAgICAgICAiICAgIHRhZyA9IE5vbmVcbiIKLSAgICAgICAgIiAgaWYgdGFnIGlzIE5vbmUgb3Igbm9kZS50YWcgPT0gdGFnOlxuIgotICAgICAgICAiICAgIHlpZWxkIG5vZGVcbiIKLSAgICAgICAgIiAgZm9yIG5vZGUgaW4gbm9kZTpcbiIKLSAgICAgICAgIiAgICBmb3Igbm9kZSBpbiBpdGVyKG5vZGUsIHRhZyk6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBub2RlXG4iCi0KLSAgICAgICAgImRlZiBpdGVydGV4dChub2RlKTpcbiIgLyogaGVscGVyICovCi0gICAgICAgICIgIGlmIG5vZGUudGV4dDpcbiIKLSAgICAgICAgIiAgICB5aWVsZCBub2RlLnRleHRcbiIKLSAgICAgICAgIiAgZm9yIGUgaW4gbm9kZTpcbiIKLSAgICAgICAgIiAgICBmb3IgcyBpbiBlLml0ZXJ0ZXh0KCk6XG4iCi0gICAgICAgICIgICAgICB5aWVsZCBzXG4iCi0gICAgICAgICIgICAgaWYgZS50YWlsOlxuIgotICAgICAgICAiICAgICAgeWllbGQgZS50YWlsXG4iCi0KLSAgICAgICAgImRlZiBwYXJzZShzb3VyY2UsIHBhcnNlcj1Ob25lKTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHRyZWUgPSBFbGVtZW50VHJlZSgpXG4iCi0gICAgICAgICIgIHRyZWUucGFyc2Uoc291cmNlLCBwYXJzZXIpXG4iCi0gICAgICAgICIgIHJldHVybiB0cmVlXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUucGFyc2UgPSBwYXJzZVxuIgotCi0gICAgICAgICJjbGFzcyBpdGVycGFyc2U6XG4iCi0gICAgICAgICIgcm9vdCA9IE5vbmVcbiIKLSAgICAgICAgIiBkZWYgX19pbml0X18oc2VsZiwgZmlsZSwgZXZlbnRzPU5vbmUpOlxuIgotICAgICAgICAiICBzZWxmLl9jbG9zZV9maWxlID0gRmFsc2VcbiIKLSAgICAgICAgIiAgaWYgbm90IGhhc2F0dHIoZmlsZSwgJ3JlYWQnKTpcbiIKLSAgICAgICAgIiAgICBmaWxlID0gb3BlbihmaWxlLCAncmInKVxuIgotICAgICAgICAiICAgIHNlbGYuX2Nsb3NlX2ZpbGUgPSBUcnVlXG4iCi0gICAgICAgICIgIHNlbGYuX2ZpbGUgPSBmaWxlXG4iCi0gICAgICAgICIgIHNlbGYuX2V2ZW50cyA9IFtdXG4iCi0gICAgICAgICIgIHNlbGYuX2luZGV4ID0gMFxuIgotICAgICAgICAiICBzZWxmLl9lcnJvciA9IE5vbmVcbiIKLSAgICAgICAgIiAgc2VsZi5yb290ID0gc2VsZi5fcm9vdCA9IE5vbmVcbiIKLSAgICAgICAgIiAgYiA9IGNFbGVtZW50VHJlZS5UcmVlQnVpbGRlcigpXG4iCi0gICAgICAgICIgIHNlbGYuX3BhcnNlciA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoYilcbiIKLSAgICAgICAgIiAgc2VsZi5fcGFyc2VyLl9zZXRldmVudHMoc2VsZi5fZXZlbnRzLCBldmVudHMpXG4iCi0gICAgICAgICIgZGVmIF9fbmV4dF9fKHNlbGYpOlxuIgotICAgICAgICAiICB3aGlsZSAxOlxuIgotICAgICAgICAiICAgIHRyeTpcbiIKLSAgICAgICAgIiAgICAgIGl0ZW0gPSBzZWxmLl9ldmVudHNbc2VsZi5faW5kZXhdXG4iCi0gICAgICAgICIgICAgICBzZWxmLl9pbmRleCArPSAxXG4iCi0gICAgICAgICIgICAgICByZXR1cm4gaXRlbVxuIgotICAgICAgICAiICAgIGV4Y2VwdCBJbmRleEVycm9yOlxuIgotICAgICAgICAiICAgICAgcGFzc1xuIgotICAgICAgICAiICAgIGlmIHNlbGYuX2Vycm9yOlxuIgotICAgICAgICAiICAgICAgZSA9IHNlbGYuX2Vycm9yXG4iCi0gICAgICAgICIgICAgICBzZWxmLl9lcnJvciA9IE5vbmVcbiIKLSAgICAgICAgIiAgICAgIHJhaXNlIGVcbiIKLSAgICAgICAgIiAgICBpZiBzZWxmLl9wYXJzZXIgaXMgTm9uZTpcbiIKLSAgICAgICAgIiAgICAgIHNlbGYucm9vdCA9IHNlbGYuX3Jvb3RcbiIKLSAgICAgICAgIiAgICAgIGlmIHNlbGYuX2Nsb3NlX2ZpbGU6XG4iCi0gICAgICAgICIgICAgICAgIHNlbGYuX2ZpbGUuY2xvc2UoKVxuIgotICAgICAgICAiICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvblxuIgotICAgICAgICAiICAgICMgbG9hZCBldmVudCBidWZmZXJcbiIKLSAgICAgICAgIiAgICBkZWwgc2VsZi5fZXZlbnRzWzpdXG4iCi0gICAgICAgICIgICAgc2VsZi5faW5kZXggPSAwXG4iCi0gICAgICAgICIgICAgZGF0YSA9IHNlbGYuX2ZpbGUucmVhZCgxNjM4NClcbiIKLSAgICAgICAgIiAgICBpZiBkYXRhOlxuIgotICAgICAgICAiICAgICAgdHJ5OlxuIgotICAgICAgICAiICAgICAgICBzZWxmLl9wYXJzZXIuZmVlZChkYXRhKVxuIgotICAgICAgICAiICAgICAgZXhjZXB0IFN5bnRheEVycm9yIGFzIGV4YzpcbiIKLSAgICAgICAgIiAgICAgICAgc2VsZi5fZXJyb3IgPSBleGNcbiIKLSAgICAgICAgIiAgICBlbHNlOlxuIgotICAgICAgICAiICAgICAgc2VsZi5fcm9vdCA9IHNlbGYuX3BhcnNlci5jbG9zZSgpXG4iCi0gICAgICAgICIgICAgICBzZWxmLl9wYXJzZXIgPSBOb25lXG4iCi0gICAgICAgICIgZGVmIF9faXRlcl9fKHNlbGYpOlxuIgotICAgICAgICAiICByZXR1cm4gc2VsZlxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLml0ZXJwYXJzZSA9IGl0ZXJwYXJzZVxuIgotCi0gICAgICAgICJjbGFzcyBQSVByb3h5OlxuIgotICAgICAgICAiIGRlZiBfX2NhbGxfXyhzZWxmLCB0YXJnZXQsIHRleHQ9Tm9uZSk6XG4iCi0gICAgICAgICIgIGVsZW1lbnQgPSBjRWxlbWVudFRyZWUuRWxlbWVudChFVC5QSSlcbiIKLSAgICAgICAgIiAgZWxlbWVudC50ZXh0ID0gdGFyZ2V0XG4iCi0gICAgICAgICIgIGlmIHRleHQ6XG4iCi0gICAgICAgICIgICAgZWxlbWVudC50ZXh0ID0gZWxlbWVudC50ZXh0ICsgJyAnICsgdGV4dFxuIgotICAgICAgICAiICByZXR1cm4gZWxlbWVudFxuIgotICAgICAgICAiIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOlxuIgotICAgICAgICAiICByZXR1cm4gRVQuUEkgPT0gb3RoZXJcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5QSSA9IGNFbGVtZW50VHJlZS5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gPSBQSVByb3h5KClcbiIKLQotICAgICAgICAiZGVmIFhNTCh0ZXh0KTpcbiIgLyogcHVibGljICovCi0gICAgICAgICIgIHBhcnNlciA9IGNFbGVtZW50VHJlZS5YTUxQYXJzZXIoKVxuIgotICAgICAgICAiICBwYXJzZXIuZmVlZCh0ZXh0KVxuIgotICAgICAgICAiICByZXR1cm4gcGFyc2VyLmNsb3NlKClcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5YTUwgPSBjRWxlbWVudFRyZWUuZnJvbXN0cmluZyA9IFhNTFxuIgotCi0gICAgICAgICJkZWYgWE1MSUQodGV4dCk6XG4iIC8qIHB1YmxpYyAqLwotICAgICAgICAiICB0cmVlID0gWE1MKHRleHQpXG4iCi0gICAgICAgICIgIGlkcyA9IHt9XG4iCi0gICAgICAgICIgIGZvciBlbGVtIGluIHRyZWUuaXRlcigpOlxuIgotICAgICAgICAiICAgIGlkID0gZWxlbS5nZXQoJ2lkJylcbiIKLSAgICAgICAgIiAgICBpZiBpZDpcbiIKLSAgICAgICAgIiAgICAgIGlkc1tpZF0gPSBlbGVtXG4iCi0gICAgICAgICIgIHJldHVybiB0cmVlLCBpZHNcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5YTUxJRCA9IFhNTElEXG4iCi0KLSAgICAgICAgInRyeTpcbiIKLSAgICAgICAgIiByZWdpc3Rlcl9uYW1lc3BhY2UgPSBFVC5yZWdpc3Rlcl9uYW1lc3BhY2VcbiIKLSAgICAgICAgImV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjpcbiIKLSAgICAgICAgIiBkZWYgcmVnaXN0ZXJfbmFtZXNwYWNlKHByZWZpeCwgdXJpKTpcbiIKLSAgICAgICAgIiAgRVQuX25hbWVzcGFjZV9tYXBbdXJpXSA9IHByZWZpeFxuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLnJlZ2lzdGVyX25hbWVzcGFjZSA9IHJlZ2lzdGVyX25hbWVzcGFjZVxuIgotCi0gICAgICAgICJjRWxlbWVudFRyZWUuZHVtcCA9IEVULmR1bXBcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEVsZW1lbnRQYXRoID0gRVQuRWxlbWVudFBhdGhcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5pc2VsZW1lbnQgPSBFVC5pc2VsZW1lbnRcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5RTmFtZSA9IEVULlFOYW1lXG4iCi0gICAgICAgICJjRWxlbWVudFRyZWUudG9zdHJpbmcgPSBFVC50b3N0cmluZ1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLmZyb21zdHJpbmdsaXN0ID0gRVQuZnJvbXN0cmluZ2xpc3RcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS50b3N0cmluZ2xpc3QgPSBFVC50b3N0cmluZ2xpc3RcbiIKLSAgICAgICAgImNFbGVtZW50VHJlZS5WRVJTSU9OID0gJyIgVkVSU0lPTiAiJ1xuIgotICAgICAgICAiY0VsZW1lbnRUcmVlLl9fdmVyc2lvbl9fID0gJyIgVkVSU0lPTiAiJ1xuIgotCi0gICAgICAgKTsKLQotICAgIGlmICghUHlSdW5fU3RyaW5nKGJvb3RzdHJhcCwgUHlfZmlsZV9pbnB1dCwgZywgTlVMTCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZWxlbWVudHBhdGhfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIkVsZW1lbnRQYXRoIik7Ci0KLSAgICBlbGVtZW50dHJlZV9jb3B5ZWxlbWVudF9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiY29weWVsZW1lbnQiKTsKLSAgICBpZiAoZWxlbWVudHRyZWVfY29weWVsZW1lbnRfb2JqKSB7Ci0gICAgICAgIC8qIHJlZHVjZSBoYWNrIG5lZWRlZDsgZW5hYmxlIHJlZHVjZSBtZXRob2QgKi8KLSAgICAgICAgUHlNZXRob2REZWYqIG1wOwotICAgICAgICBmb3IgKG1wID0gZWxlbWVudF9tZXRob2RzOyBtcC0+bWxfbmFtZTsgbXArKykKLSAgICAgICAgICAgIGlmIChtcC0+bWxfbWV0aCA9PSAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfcmVkdWNlKSB7Ci0gICAgICAgICAgICAgICAgbXAtPm1sX25hbWUgPSAiX19yZWR1Y2VfXyI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0KLSAgICBlbGVtZW50dHJlZV9kZWVwY29weV9vYmogPSBQeURpY3RfR2V0SXRlbVN0cmluZyhnLCAiZGVlcGNvcHkiKTsKLSAgICBlbGVtZW50dHJlZV9pdGVyX29iaiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGcsICJpdGVyIik7Ci0gICAgZWxlbWVudHRyZWVfaXRlcnRleHRfb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZywgIml0ZXJ0ZXh0Iik7Ci0KLSNpZiBkZWZpbmVkKFVTRV9QWUVYUEFUX0NBUEkpCi0gICAgLyogbGluayBhZ2FpbnN0IHB5ZXhwYXQsIGlmIHBvc3NpYmxlICovCisgICAgLyogbGluayBhZ2FpbnN0IHB5ZXhwYXQgKi8KICAgICBleHBhdF9jYXBpID0gUHlDYXBzdWxlX0ltcG9ydChQeUV4cGF0X0NBUFNVTEVfTkFNRSwgMCk7CiAgICAgaWYgKGV4cGF0X2NhcGkpIHsKICAgICAgICAgLyogY2hlY2sgdGhhdCBpdCdzIHVzYWJsZSAqLwpAQCAtMzEyMiwxMyArMzUyMSwyMyBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSNlbmRpZgogCiAgICAgZWxlbWVudHRyZWVfcGFyc2VlcnJvcl9vYmogPSBQeUVycl9OZXdFeGNlcHRpb24oCi0gICAgICAgICJjRWxlbWVudFRyZWUuUGFyc2VFcnJvciIsIFB5RXhjX1N5bnRheEVycm9yLCBOVUxMCisgICAgICAgICJ4bWwuZXRyZWUuRWxlbWVudFRyZWUuUGFyc2VFcnJvciIsIFB5RXhjX1N5bnRheEVycm9yLCBOVUxMCiAgICAgICAgICk7CiAgICAgUHlfSU5DUkVGKGVsZW1lbnR0cmVlX3BhcnNlZXJyb3Jfb2JqKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlBhcnNlRXJyb3IiLCBlbGVtZW50dHJlZV9wYXJzZWVycm9yX29iaik7CiAKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJFbGVtZW50IiwgKFB5T2JqZWN0ICopJkVsZW1lbnRfVHlwZSk7CisKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJlRyZWVCdWlsZGVyX1R5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiVHJlZUJ1aWxkZXIiLCAoUHlPYmplY3QgKikmVHJlZUJ1aWxkZXJfVHlwZSk7CisKKyNpZiBkZWZpbmVkKFVTRV9FWFBBVCkKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0ICopJlhNTFBhcnNlcl9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlhNTFBhcnNlciIsIChQeU9iamVjdCAqKSZYTUxQYXJzZXJfVHlwZSk7CisjZW5kaWYKKwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jIGIvTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YjI5ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19mcmVlemVfaW1wb3J0bGliLmMKQEAgLTAsMCArMSwxNDIgQEAKKy8qIFRoaXMgaXMgYnVpbHQgYXMgYSBzdGFuZC1hbG9uZSBleGVjdXRhYmxlIGJ5IHRoZSBNYWtlZmlsZSwgYW5kIGhlbHBzIHR1cm4KKyAgIExpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBpbnRvIGEgZnJvemVuIG1vZHVsZSBpbiBQeXRob24vaW1wb3J0bGliLmgKKyovCisKKyNpbmNsdWRlIDxQeXRob24uaD4KKyNpbmNsdWRlIDxtYXJzaGFsLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaWZuZGVmIE1TX1dJTkRPV1MKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisKKy8qIFRvIGF2b2lkIGEgY2lyY3VsYXIgZGVwZW5kZW5jeSBvbiBmcm96ZW4ubywgd2UgY3JlYXRlIG91ciBvd24gc3RydWN0dXJlCisgICBvZiBmcm96ZW4gbW9kdWxlcyBpbnN0ZWFkLCBsZWZ0IGRlbGliZXJhdGVseSBibGFuayBzbyBhcyB0byBhdm9pZAorICAgdW5pbnRlbnRpb25hbCBpbXBvcnQgb2YgYSBzdGFsZSB2ZXJzaW9uIG9mIF9mcm96ZW5faW1wb3J0bGliLiAqLworCitzdGF0aWMgc3RydWN0IF9mcm96ZW4gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXNbXSA9IHsKKyAgICB7MCwgMCwgMH0gLyogc2VudGluZWwgKi8KK307CisKKyNpZm5kZWYgTVNfV0lORE9XUworLyogT24gV2luZG93cywgdGhpcyBsaW5rcyB3aXRoIHRoZSByZWd1bGFyIHB5dGhvblhZLmRsbCwgc28gdGhpcyB2YXJpYWJsZSBjb21lcworICAgZnJvbSBmcm96ZW4ub2JqLiBJbiB0aGUgTWFrZWZpbGUsIGZyb3plbi5vIGlzIG5vdCBsaW5rZWQgaW50byB0aGlzIGV4ZWN1dGFibGUsCisgICBzbyB3ZSBkZWZpbmUgdGhlIHZhcmlhYmxlIGhlcmUuICovCitzdHJ1Y3QgX2Zyb3plbiAqUHlJbXBvcnRfRnJvemVuTW9kdWxlczsKKyNlbmRpZgorCitjb25zdCBjaGFyIGhlYWRlcltdID0gIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IE1vZHVsZXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLyI7CisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGNoYXIgKmlucGF0aCwgKm91dHBhdGg7CisgICAgRklMRSAqaW5maWxlLCAqb3V0ZmlsZSA9IE5VTEw7CisgICAgc3RydWN0IHN0YXQgc3Q7CisgICAgc2l6ZV90IHRleHRfc2l6ZSwgZGF0YV9zaXplLCBuOworICAgIGNoYXIgKnRleHQ7CisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBQeU9iamVjdCAqY29kZSwgKm1hcnNoYWxsZWQ7CisKKyAgICBQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzID0gX1B5SW1wb3J0X0Zyb3plbk1vZHVsZXM7CisKKyAgICBpZiAoYXJnYyAhPSAzKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibmVlZCB0byBzcGVjaWZ5IGlucHV0IGFuZCBvdXRwdXQgcGF0aHNcbiIpOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAgaW5wYXRoID0gYXJndlsxXTsKKyAgICBvdXRwYXRoID0gYXJndlsyXTsKKyAgICBpbmZpbGUgPSBmb3BlbihpbnBhdGgsICJyYiIpOworICAgIGlmIChpbmZpbGUgPT0gTlVMTCkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNhbm5vdCBvcGVuICclcycgZm9yIHJlYWRpbmdcbiIsIGlucGF0aCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoZnN0YXQoZmlsZW5vKGluZmlsZSksICZzdCkpIHsKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICB0ZXh0X3NpemUgPSBzdC5zdF9zaXplOworICAgIHRleHQgPSAoY2hhciAqKSBtYWxsb2ModGV4dF9zaXplICsgMSk7CisgICAgaWYgKHRleHQgPT0gTlVMTCkgeworICAgICAgICBmY2xvc2UoaW5maWxlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjb3VsZCBub3QgYWxsb2NhdGUgJWxkIGJ5dGVzXG4iLCAobG9uZykgdGV4dF9zaXplKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIG4gPSBmcmVhZCh0ZXh0LCAxLCB0ZXh0X3NpemUsIGluZmlsZSk7CisgICAgZmNsb3NlKGluZmlsZSk7CisgICAgaW5maWxlID0gTlVMTDsKKyAgICBpZiAobiA8IHRleHRfc2l6ZSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInJlYWQgdG9vIHNob3J0OiBnb3QgJWxkIGluc3RlYWQgb2YgJWxkIGJ5dGVzXG4iLAorICAgICAgICAgICAgICAgIChsb25nKSBuLCAobG9uZykgdGV4dF9zaXplKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHRleHRbdGV4dF9zaXplXSA9ICdcMCc7CisKKyAgICBQeV9Ob1VzZXJTaXRlRGlyZWN0b3J5Kys7CisgICAgUHlfTm9TaXRlRmxhZysrOworICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZysrOworCisgICAgUHlfU2V0UHJvZ3JhbU5hbWUoTCIuL19mcmVlemVfaW1wb3J0bGliIik7CisgICAgLyogRG9uJ3QgaW5zdGFsbCBpbXBvcnRsaWIsIHNpbmNlIGl0IGNvdWxkIGV4ZWN1dGUgb3V0ZGF0ZWQgYnl0ZWNvZGUuICovCisgICAgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKDEsIDApOworCisgICAgY29kZSA9IFB5X0NvbXBpbGVTdHJpbmdFeEZsYWdzKHRleHQsICI8ZnJvemVuIGltcG9ydGxpYi5fYm9vdHN0cmFwPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2ZpbGVfaW5wdXQsIE5VTEwsIDApOworICAgIGlmIChjb2RlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgbWFyc2hhbGxlZCA9IFB5TWFyc2hhbF9Xcml0ZU9iamVjdFRvU3RyaW5nKGNvZGUsIFB5X01BUlNIQUxfVkVSU0lPTik7CisgICAgUHlfREVDUkVGKGNvZGUpOworICAgIGlmIChtYXJzaGFsbGVkID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KG1hcnNoYWxsZWQpKTsKKyAgICBkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgUHlCeXRlc19BU19TVFJJTkcobWFyc2hhbGxlZCk7CisgICAgZGF0YV9zaXplID0gUHlCeXRlc19HRVRfU0laRShtYXJzaGFsbGVkKTsKKworICAgIC8qIE9wZW4gdGhlIGZpbGUgaW4gdGV4dCBtb2RlLiBUaGUgaGcgY2hlY2tvdXQgc2hvdWxkIGJlIHVzaW5nIHRoZSBlb2wgZXh0ZW5zaW9uLAorICAgICAgIHdoaWNoIGluIHR1cm4gc2hvdWxkIGNhdXNlIHRoZSBFT0wgc3R5bGUgbWF0Y2ggdGhlIEMgbGlicmFyeSdzIHRleHQgbW9kZSAqLworICAgIG91dGZpbGUgPSBmb3BlbihvdXRwYXRoLCAidyIpOworICAgIGlmIChvdXRmaWxlID09IE5VTEwpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJjYW5ub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nXG4iLCBvdXRwYXRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGZwcmludGYob3V0ZmlsZSwgIiVzXG4iLCBoZWFkZXIpOworICAgIGZwcmludGYob3V0ZmlsZSwgInVuc2lnbmVkIGNoYXIgX1B5X01fX2ltcG9ydGxpYltdID0ge1xuIik7CisgICAgZm9yIChuID0gMDsgbiA8IGRhdGFfc2l6ZTsgbiArPSAxNikgeworICAgICAgICBzaXplX3QgaSwgZW5kID0gUHlfTUlOKG4gKyAxNiwgZGF0YV9zaXplKTsKKyAgICAgICAgZnByaW50ZihvdXRmaWxlLCAiICAgICIpOworICAgICAgICBmb3IgKGkgPSBuOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIiVkLCIsICh1bnNpZ25lZCBpbnQpIGRhdGFbaV0pOworICAgICAgICB9CisgICAgICAgIGZwcmludGYob3V0ZmlsZSwgIlxuIik7CisgICAgfQorICAgIGZwcmludGYob3V0ZmlsZSwgIn07XG4iKTsKKworICAgIFB5X0RFQ1JFRihtYXJzaGFsbGVkKTsKKworICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKGluZmlsZSkKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgaWYgKG91dGZpbGUpIHsKKyAgICAgICAgaWYgKGZlcnJvcihvdXRmaWxlKSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlcnJvciB3aGVuIHdyaXRpbmcgdG8gJyVzJ1xuIiwgb3V0cGF0aCk7CisgICAgICAgICAgICBmY2xvc2Uob3V0ZmlsZSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBmY2xvc2Uob3V0ZmlsZSk7CisgICAgfQorICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeUVycl9QcmludCgpOworICAgIFB5X0ZpbmFsaXplKCk7CisgICAgaWYgKGluZmlsZSkKKyAgICAgICAgZmNsb3NlKGluZmlsZSk7CisgICAgaWYgKG91dGZpbGUpCisgICAgICAgIGZjbG9zZShvdXRmaWxlKTsKKyAgICByZXR1cm4gMTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKaW5kZXggZDhhMjgzYi4uM2ZmMDdiYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fZnVuY3Rvb2xzbW9kdWxlLmMKQEAgLTE1NSw0NCArMTU1LDggQEAKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKgotcGFydGlhbF9nZXRfZGljdChwYXJ0aWFsb2JqZWN0ICpwdG8pCi17Ci0gICAgaWYgKHB0by0+ZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIHB0by0+ZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgaWYgKHB0by0+ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihwdG8tPmRpY3QpOwotICAgIHJldHVybiBwdG8tPmRpY3Q7Ci19Ci0KLXN0YXRpYyBpbnQKLXBhcnRpYWxfc2V0X2RpY3QocGFydGlhbG9iamVjdCAqcHRvLCBQeU9iamVjdCAqdmFsdWUpCi17Ci0gICAgUHlPYmplY3QgKnRtcDsKLQotICAgIC8qIEl0IGlzIGlsbGVnYWwgdG8gZGVsIHAuX19kaWN0X18gKi8KLSAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImEgcGFydGlhbCBvYmplY3QncyBkaWN0aW9uYXJ5IG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIENhbiBvbmx5IHNldCBfX2RpY3RfXyB0byBhIGRpY3Rpb25hcnkgKi8KLSAgICBpZiAoIVB5RGljdF9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIHBhcnRpYWwgb2JqZWN0J3MgZGljdGlvbmFyeSB0byBhIG5vbi1kaWN0Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgdG1wID0gcHRvLT5kaWN0OwotICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgcHRvLT5kaWN0ID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgUHlHZXRTZXREZWYgcGFydGlhbF9nZXRzZXRsaXN0W10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIChnZXR0ZXIpcGFydGlhbF9nZXRfZGljdCwgKHNldHRlcilwYXJ0aWFsX3NldF9kaWN0fSwKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKICAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTMzMCw2ICsyOTQsMTc2IEBACiB9OwogCiAKKy8qIGNtcF90b19rZXkgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpjbXA7CisgICAgUHlPYmplY3QgKm9iamVjdDsKK30ga2V5b2JqZWN0OworCitzdGF0aWMgdm9pZAora2V5b2JqZWN0X2RlYWxsb2Moa2V5b2JqZWN0ICprbykKK3sKKyAgICBQeV9ERUNSRUYoa28tPmNtcCk7CisgICAgUHlfWERFQ1JFRihrby0+b2JqZWN0KTsKKyAgICBQeU9iamVjdF9GUkVFKGtvKTsKK30KKworc3RhdGljIGludAora2V5b2JqZWN0X3RyYXZlcnNlKGtleW9iamVjdCAqa28sIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGtvLT5jbXApOworICAgIGlmIChrby0+b2JqZWN0KQorICAgICAgICBQeV9WSVNJVChrby0+b2JqZWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAora2V5b2JqZWN0X2NsZWFyKGtleW9iamVjdCAqa28pCit7CisgICAgUHlfQ0xFQVIoa28tPmNtcCk7CisgICAgaWYgKGtvLT5vYmplY3QpCisgICAgICAgIFB5X0NMRUFSKGtvLT5vYmplY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYga2V5b2JqZWN0X21lbWJlcnNbXSA9IHsKKyAgICB7Im9iaiIsIFRfT0JKRUNULAorICAgICBvZmZzZXRvZihrZXlvYmplY3QsIG9iamVjdCksIDAsCisgICAgIFB5RG9jX1NUUigiVmFsdWUgd3JhcHBlZCBieSBhIGtleSBmdW5jdGlvbi4iKX0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X2NhbGwoa2V5b2JqZWN0ICprbywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2tleW9iamVjdF9yaWNoY29tcGFyZShQeU9iamVjdCAqa28sIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBrZXlvYmplY3RfdHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICJmdW5jdG9vbHMuS2V5V3JhcHBlciIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2Yoa2V5b2JqZWN0KSwgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIC8qIG1ldGhvZHMgKi8KKyAgICAoZGVzdHJ1Y3RvcilrZXlvYmplY3RfZGVhbGxvYywgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAodGVybmFyeWZ1bmMpa2V5b2JqZWN0X2NhbGwsICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYylrZXlvYmplY3RfdHJhdmVyc2UsICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlrZXlvYmplY3RfY2xlYXIsICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIGtleW9iamVjdF9yaWNoY29tcGFyZSwgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAga2V5b2JqZWN0X21lbWJlcnMsICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2tleW9iamVjdF9jYWxsKGtleW9iamVjdCAqa28sIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIGtleW9iamVjdCAqcmVzdWx0OworICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsib2JqIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzpLIiwga3dhcmdzLCAmb2JqZWN0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlPYmplY3RfTmV3KGtleW9iamVjdCwgJmtleW9iamVjdF90eXBlKTsKKyAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKGtvLT5jbXApOworICAgIHJlc3VsdC0+Y21wID0ga28tPmNtcDsKKyAgICBQeV9JTkNSRUYob2JqZWN0KTsKKyAgICByZXN1bHQtPm9iamVjdCA9IG9iamVjdDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgora2V5b2JqZWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICprbywgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqeDsKKyAgICBQeU9iamVjdCAqeTsKKyAgICBQeU9iamVjdCAqY29tcGFyZTsKKyAgICBQeU9iamVjdCAqYW5zd2VyOworICAgIHN0YXRpYyBQeU9iamVjdCAqemVybzsKKworICAgIGlmICh6ZXJvID09IE5VTEwpIHsKKyAgICAgICAgemVybyA9IFB5TG9uZ19Gcm9tTG9uZygwKTsKKyAgICAgICAgaWYgKCF6ZXJvKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5X1RZUEUob3RoZXIpICE9ICZrZXlvYmplY3RfdHlwZSl7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJvdGhlciBhcmd1bWVudCBtdXN0IGJlIEsgaW5zdGFuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNvbXBhcmUgPSAoKGtleW9iamVjdCAqKSBrbyktPmNtcDsKKyAgICBhc3NlcnQoY29tcGFyZSAhPSBOVUxMKTsKKyAgICB4ID0gKChrZXlvYmplY3QgKikga28pLT5vYmplY3Q7CisgICAgeSA9ICgoa2V5b2JqZWN0ICopIG90aGVyKS0+b2JqZWN0OworICAgIGlmICgheCB8fCAheSl7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgIm9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBDYWxsIHRoZSB1c2VyJ3MgY29tcGFyaXNvbiBmdW5jdGlvbiBhbmQgdHJhbnNsYXRlIHRoZSAzLXdheQorICAgICAqIHJlc3VsdCBpbnRvIHRydWUgb3IgZmFsc2UgKG9yIGVycm9yKS4KKyAgICAgKi8KKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMik7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKHgpOworICAgIFB5X0lOQ1JFRih5KTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIHgpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMSwgeSk7CisgICAgcmVzID0gUHlPYmplY3RfQ2FsbChjb21wYXJlLCBhcmdzLCBOVUxMKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhbnN3ZXIgPSBQeU9iamVjdF9SaWNoQ29tcGFyZShyZXMsIHplcm8sIG9wKTsKKyAgICBQeV9ERUNSRUYocmVzKTsKKyAgICByZXR1cm4gYW5zd2VyOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorZnVuY3Rvb2xzX2NtcF90b19rZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqY21wOworICAgIHN0YXRpYyBjaGFyICprd2FyZ3NbXSA9IHsibXljbXAiLCBOVUxMfTsKKyAgICBrZXlvYmplY3QgKm9iamVjdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPOmNtcF90b19rZXkiLCBrd2FyZ3MsICZjbXApKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBvYmplY3QgPSBQeU9iamVjdF9OZXcoa2V5b2JqZWN0LCAma2V5b2JqZWN0X3R5cGUpOworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoY21wKTsKKyAgICBvYmplY3QtPmNtcCA9IGNtcDsKKyAgICBvYmplY3QtPm9iamVjdCA9IE5VTEw7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW9iamVjdDsKK30KKworUHlEb2NfU1RSVkFSKGZ1bmN0b29sc19jbXBfdG9fa2V5X2RvYywKKyJDb252ZXJ0IGEgY21wPSBmdW5jdGlvbiBpbnRvIGEga2V5PSBmdW5jdGlvbi4iKTsKKwogLyogcmVkdWNlICh1c2VkIHRvIGJlIGEgYnVpbHRpbikgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC00MTMsNiArNTQ3LDggQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CiAgICAgeyJyZWR1Y2UiLCAgICAgICAgICBmdW5jdG9vbHNfcmVkdWNlLCAgICAgTUVUSF9WQVJBUkdTLCBmdW5jdG9vbHNfcmVkdWNlX2RvY30sCisgICAgeyJjbXBfdG9fa2V5IiwgICAgICAoUHlDRnVuY3Rpb24pZnVuY3Rvb2xzX2NtcF90b19rZXksCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIGZ1bmN0b29sc19jbXBfdG9fa2V5X2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2dlc3RhbHQuYyBiL01vZHVsZXMvX2dlc3RhbHQuYwppbmRleCBhNDU3ODBmLi5jZDMwNjgzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19nZXN0YWx0LmMKKysrIGIvTW9kdWxlcy9fZ2VzdGFsdC5jCkBAIC0zMyw3ICszMyw3IEBACiBjb252ZXJ0X3RvX09TVHlwZShQeU9iamVjdCAqdiwgT1NUeXBlICpwcikKIHsKICAgICB1aW50MzJfdCB0bXA7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodikgfHwgUHlVbmljb2RlX0dldFNpemUodikgIT0gNCkgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpIHx8IFB5VW5pY29kZV9HZXRMZW5ndGgodikgIT0gNCkgewogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJPU1R5cGUgYXJnIG11c3QgYmUgc3RyaW5nIG9mIDQgY2hhcnMiKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCmluZGV4IGRkNDMxN2YuLmQzNzY4OWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKKysrIGIvTW9kdWxlcy9faGFzaG9wZW5zc2wuYwpAQCAtMjAxLDEzICsyMDEsMTEgQEAKIAogICAgIC8qIE1ha2UgaGV4IHZlcnNpb24gb2YgdGhlIGRpZ2VzdCAqLwogICAgIGZvcihpPWo9MDsgaTxkaWdlc3Rfc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQogICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShoZXhfZGlnZXN0LCBkaWdlc3Rfc2l6ZSAqIDIpOwogICAgIFB5TWVtX0ZyZWUoaGV4X2RpZ2VzdCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9faW9tb2R1bGUuYyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCmluZGV4IGUxOGFlYzYuLmQzYTg3ZTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2lvL19pb21vZHVsZS5jCkBAIC0xLDkgKzEsOSBAQAogLyoKICAgICBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEkvTyBsaWIgYXMgZGVmaW5lZCBieSBQRVAgMzExNiAtICJOZXcgSS9PIgotICAgIAorCiAgICAgQ2xhc3NlcyBkZWZpbmVkIGhlcmU6IFVuc3VwcG9ydGVkT3BlcmF0aW9uLCBCbG9ja2luZ0lPRXJyb3IuCiAgICAgRnVuY3Rpb25zIGRlZmluZWQgaGVyZTogb3BlbigpLgotICAgIAorCiAgICAgTW9zdGx5IHdyaXR0ZW4gYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMKICovCiAKQEAgLTM2LDYgKzM2LDcgQEAKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDE7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhYmxlOworUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkYWxsOwogUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkaW50bzsKIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZGxpbmU7CiBQeU9iamVjdCAqX1B5SU9fc3RyX3Jlc2V0OwpAQCAtOTAsOTQgKzkxLDExIEBACiAMCiAKIC8qCi0gKiBCbG9ja2luZ0lPRXJyb3IgZXh0ZW5kcyBJT0Vycm9yCi0gKi8KLQotc3RhdGljIGludAotYmxvY2tpbmdpb2Vycm9yX2luaXQoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgUHlPYmplY3QgKm15ZXJybm8gPSBOVUxMLCAqc3RyZXJyb3IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpiYXNlYXJncyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCB3cml0dGVuID0gMDsKLQotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLQotICAgIHNlbGYtPndyaXR0ZW4gPSAwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098bjpCbG9ja2luZ0lPRXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbXllcnJubywgJnN0cmVycm9yLCAmd3JpdHRlbikpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGJhc2VhcmdzID0gUHlUdXBsZV9QYWNrKDIsIG15ZXJybm8sIHN0cmVycm9yKTsKLSAgICBpZiAoYmFzZWFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIC8qIFRoaXMgd2lsbCB0YWtlIGNhcmUgb2YgaW5pdGlhbGl6aW5nIG9mIG15ZXJybm8gYW5kIHN0cmVycm9yIG1lbWJlcnMgKi8KLSAgICBpZiAoKChQeVR5cGVPYmplY3QgKilQeUV4Y19JT0Vycm9yKS0+dHBfaW5pdCgKLSAgICAgICAgICAgICAgICAoUHlPYmplY3QgKilzZWxmLCBiYXNlYXJncywga3dkcykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGJhc2VhcmdzKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBQeV9ERUNSRUYoYmFzZWFyZ3MpOwotCi0gICAgc2VsZi0+d3JpdHRlbiA9IHdyaXR0ZW47Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBQeU1lbWJlckRlZiBibG9ja2luZ2lvZXJyb3JfbWVtYmVyc1tdID0gewotICAgIHsiY2hhcmFjdGVyc193cml0dGVuIiwgVF9QWVNTSVpFVCwgb2Zmc2V0b2YoUHlCbG9ja2luZ0lPRXJyb3JPYmplY3QsIHdyaXR0ZW4pLCAwfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y19CbG9ja2luZ0lPRXJyb3IgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIkJsb2NraW5nSU9FcnJvciIsIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0KSwgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBQeURvY19TVFIoIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBJL08gd291bGQgYmxvY2sgIgotICAgICAgICAgICAgICAib24gYSBub24tYmxvY2tpbmcgSS9PIHN0cmVhbSIpLCAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCi0gICAgYmxvY2tpbmdpb2Vycm9yX21lbWJlcnMsICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAoaW5pdHByb2MpYmxvY2tpbmdpb2Vycm9yX2luaXQsIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi19OwotUHlPYmplY3QgKlB5RXhjX0Jsb2NraW5nSU9FcnJvciA9IChQeU9iamVjdCAqKSZfUHlFeGNfQmxvY2tpbmdJT0Vycm9yOwotDAotCi0vKgogICogVGhlIG1haW4gb3BlbigpIGZ1bmN0aW9uCiAgKi8KIFB5RG9jX1NUUlZBUihvcGVuX2RvYywKICJvcGVuKGZpbGUsIG1vZGU9J3InLCBidWZmZXJpbmc9LTEsIGVuY29kaW5nPU5vbmUsXG4iCi0iICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUpIC0+IGZpbGUgb2JqZWN0XG4iCisiICAgICBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lLCBjbG9zZWZkPVRydWUsIG9wZW5lcj1Ob25lKSAtPiBmaWxlIG9iamVjdFxuIgogIlxuIgogIk9wZW4gZmlsZSBhbmQgcmV0dXJuIGEgc3RyZWFtLiAgUmFpc2UgSU9FcnJvciB1cG9uIGZhaWx1cmUuXG4iCiAiXG4iCkBAIC0xOTAsMTggKzEwOCwyMCBAQAogIm1vZGUgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIHRoZSBtb2RlIGluIHdoaWNoIHRoZSBmaWxlXG4iCiAiaXMgb3BlbmVkLiBJdCBkZWZhdWx0cyB0byAncicgd2hpY2ggbWVhbnMgb3BlbiBmb3IgcmVhZGluZyBpbiB0ZXh0XG4iCiAibW9kZS4gIE90aGVyIGNvbW1vbiB2YWx1ZXMgYXJlICd3JyBmb3Igd3JpdGluZyAodHJ1bmNhdGluZyB0aGUgZmlsZSBpZlxuIgotIml0IGFscmVhZHkgZXhpc3RzKSwgYW5kICdhJyBmb3IgYXBwZW5kaW5nICh3aGljaCBvbiBzb21lIFVuaXggc3lzdGVtcyxcbiIKLSJtZWFucyB0aGF0IGFsbCB3cml0ZXMgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGZpbGUgcmVnYXJkbGVzcyBvZiB0aGVcbiIKLSJjdXJyZW50IHNlZWsgcG9zaXRpb24pLiBJbiB0ZXh0IG1vZGUsIGlmIGVuY29kaW5nIGlzIG5vdCBzcGVjaWZpZWQgdGhlXG4iCi0iZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuIChGb3IgcmVhZGluZyBhbmQgd3JpdGluZyByYXdcbiIKLSJieXRlcyB1c2UgYmluYXJ5IG1vZGUgYW5kIGxlYXZlIGVuY29kaW5nIHVuc3BlY2lmaWVkLikgVGhlIGF2YWlsYWJsZVxuIgotIm1vZGVzIGFyZTpcbiIKKyJpdCBhbHJlYWR5IGV4aXN0cyksICd4JyBmb3IgY3JlYXRpbmcgYW5kIHdyaXRpbmcgdG8gYSBuZXcgZmlsZSwgYW5kXG4iCisiJ2EnIGZvciBhcHBlbmRpbmcgKHdoaWNoIG9uIHNvbWUgVW5peCBzeXN0ZW1zLCBtZWFucyB0aGF0IGFsbCB3cml0ZXNcbiIKKyJhcHBlbmQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHNlZWsgcG9zaXRpb24pLlxuIgorIkluIHRleHQgbW9kZSwgaWYgZW5jb2RpbmcgaXMgbm90IHNwZWNpZmllZCB0aGUgZW5jb2RpbmcgdXNlZCBpcyBwbGF0Zm9ybVxuIgorImRlcGVuZGVudDogbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBpcyBjYWxsZWQgdG8gZ2V0IHRoZVxuIgorImN1cnJlbnQgbG9jYWxlIGVuY29kaW5nLiAoRm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmF3IGJ5dGVzIHVzZSBiaW5hcnlcbiIKKyJtb2RlIGFuZCBsZWF2ZSBlbmNvZGluZyB1bnNwZWNpZmllZC4pIFRoZSBhdmFpbGFibGUgbW9kZXMgYXJlOlxuIgogIlxuIgogIj09PT09PT09PSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIKICJDaGFyYWN0ZXIgTWVhbmluZ1xuIgogIi0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIKICIncicgICAgICAgb3BlbiBmb3IgcmVhZGluZyAoZGVmYXVsdClcbiIKICIndycgICAgICAgb3BlbiBmb3Igd3JpdGluZywgdHJ1bmNhdGluZyB0aGUgZmlsZSBmaXJzdFxuIgorIid4JyAgICAgICBjcmVhdGUgYSBuZXcgZmlsZSBhbmQgb3BlbiBpdCBmb3Igd3JpdGluZ1xuIgogIidhJyAgICAgICBvcGVuIGZvciB3cml0aW5nLCBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZSBpZiBpdCBleGlzdHNcbiIKICInYicgICAgICAgYmluYXJ5IG1vZGVcbiIKICIndCcgICAgICAgdGV4dCBtb2RlIChkZWZhdWx0KVxuIgpAQCAtMjEyLDcgKzEzMiw4IEBACiAiXG4iCiAiVGhlIGRlZmF1bHQgbW9kZSBpcyAncnQnIChvcGVuIGZvciByZWFkaW5nIHRleHQpLiBGb3IgYmluYXJ5IHJhbmRvbVxuIgogImFjY2VzcywgdGhlIG1vZGUgJ3crYicgb3BlbnMgYW5kIHRydW5jYXRlcyB0aGUgZmlsZSB0byAwIGJ5dGVzLCB3aGlsZVxuIgotIidyK2InIG9wZW5zIHRoZSBmaWxlIHdpdGhvdXQgdHJ1bmNhdGlvbi5cbiIKKyIncitiJyBvcGVucyB0aGUgZmlsZSB3aXRob3V0IHRydW5jYXRpb24uIFRoZSAneCcgbW9kZSBpbXBsaWVzICd3JyBhbmRcbiIKKyJyYWlzZXMgYW4gYEZpbGVFeGlzdHNFcnJvcmAgaWYgdGhlIGZpbGUgYWxyZWFkeSBleGlzdHMuXG4iCiAiXG4iCiAiUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBmaWxlcyBvcGVuZWQgaW4gYmluYXJ5IGFuZCB0ZXh0IG1vZGVzLFxuIgogImV2ZW4gd2hlbiB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXNuJ3QuIEZpbGVzIG9wZW5lZCBpblxuIgpAQCAtMjcyLDYgKzE5MywxMiBAQAogIndoZW4gdGhlIGZpbGUgaXMgY2xvc2VkLiBUaGlzIGRvZXMgbm90IHdvcmsgd2hlbiBhIGZpbGUgbmFtZSBpcyBnaXZlblxuIgogImFuZCBtdXN0IGJlIFRydWUgaW4gdGhhdCBjYXNlLlxuIgogIlxuIgorIkEgY3VzdG9tIG9wZW5lciBjYW4gYmUgdXNlZCBieSBwYXNzaW5nIGEgY2FsbGFibGUgYXMgKm9wZW5lciouIFRoZVxuIgorInVuZGVybHlpbmcgZmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgZmlsZSBvYmplY3QgaXMgdGhlbiBvYnRhaW5lZCBieVxuIgorImNhbGxpbmcgKm9wZW5lciogd2l0aCAoKmZpbGUqLCAqZmxhZ3MqKS4gKm9wZW5lciogbXVzdCByZXR1cm4gYW4gb3BlblxuIgorImZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqIHJlc3VsdHMgaW4gZnVuY3Rpb25hbGl0eVxuIgorInNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS5cbiIKKyJcbiIKICJvcGVuKCkgcmV0dXJucyBhIGZpbGUgb2JqZWN0IHdob3NlIHR5cGUgZGVwZW5kcyBvbiB0aGUgbW9kZSwgYW5kXG4iCiAidGhyb3VnaCB3aGljaCB0aGUgc3RhbmRhcmQgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgcmVhZGluZyBhbmQgd3JpdGluZ1xuIgogImFyZSBwZXJmb3JtZWQuIFdoZW4gb3BlbigpIGlzIHVzZWQgdG8gb3BlbiBhIGZpbGUgaW4gYSB0ZXh0IG1vZGUgKCd3JyxcbiIKQEAgLTI5MiwyNSArMjE5LDI5IEBACiB7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJidWZmZXJpbmciLAogICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyIsICJlcnJvcnMiLCAibmV3bGluZSIsCi0gICAgICAgICAgICAgICAgICAgICAgImNsb3NlZmQiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqZmlsZTsKKyAgICAgICAgICAgICAgICAgICAgICAiY2xvc2VmZCIsICJvcGVuZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSwgKm9wZW5lciA9IFB5X05vbmU7CiAgICAgY2hhciAqbW9kZSA9ICJyIjsKICAgICBpbnQgYnVmZmVyaW5nID0gLTEsIGNsb3NlZmQgPSAxOwogICAgIGNoYXIgKmVuY29kaW5nID0gTlVMTCwgKmVycm9ycyA9IE5VTEwsICpuZXdsaW5lID0gTlVMTDsKICAgICB1bnNpZ25lZCBpOwogCi0gICAgaW50IHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOworICAgIGludCBjcmVhdGluZyA9IDAsIHJlYWRpbmcgPSAwLCB3cml0aW5nID0gMCwgYXBwZW5kaW5nID0gMCwgdXBkYXRpbmcgPSAwOwogICAgIGludCB0ZXh0ID0gMCwgYmluYXJ5ID0gMCwgdW5pdmVyc2FsID0gMDsKIAotICAgIGNoYXIgcmF3bW9kZVs1XSwgKm07CisgICAgY2hhciByYXdtb2RlWzZdLCAqbTsKICAgICBpbnQgbGluZV9idWZmZXJpbmcsIGlzYXR0eTsKIAogICAgIFB5T2JqZWN0ICpyYXcsICptb2Rlb2JqID0gTlVMTCwgKmJ1ZmZlciA9IE5VTEwsICp3cmFwcGVyID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpenp6aTpvcGVuIiwga3dsaXN0LAorICAgIF9QeV9JREVOVElGSUVSKGlzYXR0eSk7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKKyAgICBfUHlfSURFTlRJRklFUihtb2RlKTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpenp6aU86b3BlbiIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlsZSwgJm1vZGUsICZidWZmZXJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kaW5nLCAmZXJyb3JzLCAmbmV3bGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xvc2VmZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2xvc2VmZCwgJm9wZW5lcikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0zMjYsNiArMjU3LDkgQEAKICAgICAgICAgY2hhciBjID0gbW9kZVtpXTsKIAogICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBjcmVhdGluZyA9IDE7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICByZWFkaW5nID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzYyLDYgKzI5Niw3IEBACiAgICAgfQogCiAgICAgbSA9IHJhd21vZGU7CisgICAgaWYgKGNyZWF0aW5nKSAgKihtKyspID0gJ3gnOwogICAgIGlmIChyZWFkaW5nKSAgICoobSsrKSA9ICdyJzsKICAgICBpZiAod3JpdGluZykgICAqKG0rKykgPSAndyc7CiAgICAgaWYgKGFwcGVuZGluZykgKihtKyspID0gJ2EnOwpAQCAtMzg0LDkgKzMxOSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChyZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKKyAgICBpZiAoY3JlYXRpbmcgKyByZWFkaW5nICsgd3JpdGluZyArIGFwcGVuZGluZyA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIHJlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgY3JlYXRlL3JlYWQvd3JpdGUvYXBwZW5kIG1vZGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC00MTAsNyArMzQ1LDcgQEAKIAogICAgIC8qIENyZWF0ZSB0aGUgUmF3IGZpbGUgc3RyZWFtICovCiAgICAgcmF3ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKSZQeUZpbGVJT19UeXBlLAotCQkJCSJPc2kiLCBmaWxlLCByYXdtb2RlLCBjbG9zZWZkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9zaU8iLCBmaWxlLCByYXdtb2RlLCBjbG9zZWZkLCBvcGVuZXIpOwogICAgIGlmIChyYXcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQyMCw3ICszNTUsNyBAQAogCiAgICAgLyogYnVmZmVyaW5nICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyYXcsICJpc2F0dHkiLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksIE5VTEwpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBpc2F0dHkgPSBQeUxvbmdfQXNMb25nKHJlcyk7CkBAIC00NDIsNyArMzc3LDcgQEAKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CiAgICAgICAgICAgICBsb25nIGZpbGVubzsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJhdywgImZpbGVubyIsIE5VTEwpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKQEAgLTQ4MCw3ICs0MTUsNyBAQAogCiAgICAgICAgIGlmICh1cGRhdGluZykKICAgICAgICAgICAgIEJ1ZmZlcmVkX2NsYXNzID0gKFB5T2JqZWN0ICopJlB5QnVmZmVyZWRSYW5kb21fVHlwZTsKLSAgICAgICAgZWxzZSBpZiAod3JpdGluZyB8fCBhcHBlbmRpbmcpCisgICAgICAgIGVsc2UgaWYgKGNyZWF0aW5nIHx8IHdyaXRpbmcgfHwgYXBwZW5kaW5nKQogICAgICAgICAgICAgQnVmZmVyZWRfY2xhc3MgPSAoUHlPYmplY3QgKikmUHlCdWZmZXJlZFdyaXRlcl9UeXBlOwogICAgICAgICBlbHNlIGlmIChyZWFkaW5nKQogICAgICAgICAgICAgQnVmZmVyZWRfY2xhc3MgPSAoUHlPYmplY3QgKikmUHlCdWZmZXJlZFJlYWRlcl9UeXBlOwpAQCAtNTEzLDcgKzQ0OCw3IEBACiAgICAgaWYgKHdyYXBwZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHdyYXBwZXIsICJtb2RlIiwgbW9kZW9iaikgPCAwKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHdyYXBwZXIsICZQeUlkX21vZGUsIG1vZGVvYmopIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBQeV9ERUNSRUYobW9kZW9iaik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC01NzYsNyArNTExLDcgQEAKIAogCiAvKiBCYXNpY2FsbHkgdGhlICJuIiBmb3JtYXQgY29kZSB3aXRoIHRoZSBhYmlsaXR5IHRvIHR1cm4gTm9uZSBpbnRvIC0xLiAqLwotaW50IAoraW50CiBfUHlJT19Db252ZXJ0U3NpemVfdChQeU9iamVjdCAqb2JqLCB2b2lkICpyZXN1bHQpIHsKICAgICBQeV9zc2l6ZV90IGxpbWl0OwogICAgIGlmIChvYmogPT0gUHlfTm9uZSkgewpAQCAtNjAzLDcgKzUzOCw2IEBACiAgICAgX1B5SU9fU3RhdGUgKnN0YXRlID0gSU9fTU9EX1NUQVRFKG1vZCk7CiAgICAgaWYgKCFzdGF0ZS0+aW5pdGlhbGl6ZWQpCiAgICAgICAgIHJldHVybiAwOwotICAgIFB5X1ZJU0lUKHN0YXRlLT5vc19tb2R1bGUpOwogICAgIGlmIChzdGF0ZS0+bG9jYWxlX21vZHVsZSAhPSBOVUxMKSB7CiAgICAgICAgIFB5X1ZJU0lUKHN0YXRlLT5sb2NhbGVfbW9kdWxlKTsKICAgICB9CkBAIC02MTcsNyArNTUxLDYgQEAKICAgICBfUHlJT19TdGF0ZSAqc3RhdGUgPSBJT19NT0RfU1RBVEUobW9kKTsKICAgICBpZiAoIXN0YXRlLT5pbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUHlfQ0xFQVIoc3RhdGUtPm9zX21vZHVsZSk7CiAgICAgaWYgKHN0YXRlLT5sb2NhbGVfbW9kdWxlICE9IE5VTEwpCiAgICAgICAgIFB5X0NMRUFSKHN0YXRlLT5sb2NhbGVfbW9kdWxlKTsKICAgICBQeV9DTEVBUihzdGF0ZS0+dW5zdXBwb3J0ZWRfb3BlcmF0aW9uKTsKQEAgLTY2MSwxMSArNTk0LDYgQEAKICAgICBzdGF0ZSA9IElPX01PRF9TVEFURShtKTsKICAgICBzdGF0ZS0+aW5pdGlhbGl6ZWQgPSAwOwogCi0gICAgLyogcHV0IG9zIGluIHRoZSBtb2R1bGUgc3RhdGUgKi8KLSAgICBzdGF0ZS0+b3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJvcyIpOwotICAgIGlmIChzdGF0ZS0+b3NfbW9kdWxlID09IE5VTEwpCi0gICAgICAgIGdvdG8gZmFpbDsKLQogI2RlZmluZSBBRERfVFlQRSh0eXBlLCBuYW1lKSBcCiAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApIFwKICAgICAgICAgZ290byBmYWlsOyBcCkBAIC02OTAsOSArNjE4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+dW5zdXBwb3J0ZWRfb3BlcmF0aW9uKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKIAotICAgIC8qIEJsb2NraW5nSU9FcnJvciAqLwotICAgIF9QeUV4Y19CbG9ja2luZ0lPRXJyb3IudHBfYmFzZSA9IChQeVR5cGVPYmplY3QgKikgUHlFeGNfSU9FcnJvcjsKLSAgICBBRERfVFlQRSgmX1B5RXhjX0Jsb2NraW5nSU9FcnJvciwgIkJsb2NraW5nSU9FcnJvciIpOworICAgIC8qIEJsb2NraW5nSU9FcnJvciwgZm9yIGNvbXBhdGliaWxpdHkgKi8KKyAgICBQeV9JTkNSRUYoUHlFeGNfQmxvY2tpbmdJT0Vycm9yKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCbG9ja2luZ0lPRXJyb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopIFB5RXhjX0Jsb2NraW5nSU9FcnJvcikgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CiAKICAgICAvKiBDb25jcmV0ZSBiYXNlIHR5cGVzIG9mIHRoZSBJTyBBQkNzLgogICAgICAgICh0aGUgQUJDcyB0aGVtc2VsdmVzIGFyZSBkZWNsYXJlZCB0aHJvdWdoIGluaGVyaXRhbmNlIGluIGlvLnB5KQpAQCAtNzU4LDYgKzY4OCw3IEBACiAgICAgQUREX0lOVEVSTkVEKHJlYWQpCiAgICAgQUREX0lOVEVSTkVEKHJlYWQxKQogICAgIEFERF9JTlRFUk5FRChyZWFkYWJsZSkKKyAgICBBRERfSU5URVJORUQocmVhZGFsbCkKICAgICBBRERfSU5URVJORUQocmVhZGludG8pCiAgICAgQUREX0lOVEVSTkVEKHJlYWRsaW5lKQogICAgIEFERF9JTlRFUk5FRChyZXNldCkKQEAgLTc4OCw3ICs3MTksNiBAQAogICAgIHJldHVybiBtOwogCiAgIGZhaWw6Ci0gICAgUHlfWERFQ1JFRihzdGF0ZS0+b3NfbW9kdWxlKTsKICAgICBQeV9YREVDUkVGKHN0YXRlLT51bnN1cHBvcnRlZF9vcGVyYXRpb24pOwogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL19pb21vZHVsZS5oIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKaW5kZXggYWE4YmZkNi4uMGZlOTBhMyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9faW8vX2lvbW9kdWxlLmgKQEAgLTUwLDEyICs1MCwxMiBAQAogICAgYCpjb25zdW1lZGAuCiAgICBJZiBub3QgZm91bmQsIHJldHVybnMgLTEgYW5kIHNldHMgYCpjb25zdW1lZGAgdG8gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzCiAgICB3aGljaCBjYW4gYmUgc2FmZWx5IHB1dCBhc2lkZSB1bnRpbCBhbm90aGVyIHNlYXJjaC4KLSAgIAotICAgTk9URTogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIGBlbmRgIG11c3QgcG9pbnQgdG8gYSBOVUwgY2hhcmFjdGVyICgnXDAnKS4gCisKKyAgIE5PVEU6IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBgZW5kYCBtdXN0IHBvaW50IHRvIGEgTlVMIGNoYXJhY3RlciAoJ1wwJykuCiAgICBPdGhlcndpc2UsIHRoZSBmdW5jdGlvbiB3aWxsIHNjYW4gZnVydGhlciBhbmQgcmV0dXJuIGdhcmJhZ2UuICovCiBleHRlcm4gUHlfc3NpemVfdCBfUHlJT19maW5kX2xpbmVfZW5kaW5nKAogICAgIGludCB0cmFuc2xhdGVkLCBpbnQgdW5pdmVyc2FsLCBQeU9iamVjdCAqcmVhZG5sLAotICAgIFB5X1VOSUNPREUgKnN0YXJ0LCBQeV9VTklDT0RFICplbmQsIFB5X3NzaXplX3QgKmNvbnN1bWVkKTsKKyAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpOwogCiAvKiBSZXR1cm4gMSBpZiBhbiBFbnZpcm9ubWVudEVycm9yIHdpdGggZXJybm8gPT0gRUlOVFIgaXMgc2V0IChhbmQgdGhlbgogICAgY2xlYXJzIHRoZSBlcnJvciBpbmRpY2F0b3IpLCAwIG90aGVyd2lzZS4KQEAgLTY1LDE1ICs2NSw2IEBACiAKICNkZWZpbmUgREVGQVVMVF9CVUZGRVJfU0laRSAoOCAqIDEwMjQpICAvKiBieXRlcyAqLwogCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlFeGNlcHRpb25fSEVBRAotICAgIFB5T2JqZWN0ICpteWVycm5vOwotICAgIFB5T2JqZWN0ICpzdHJlcnJvcjsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7IC8qIE5vdCB1c2VkLCBidXQgcGFydCBvZiB0aGUgSU9FcnJvciBvYmplY3QgKi8KLSAgICBQeV9zc2l6ZV90IHdyaXR0ZW47Ci19IFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0OwotZXh0ZXJuIFB5T2JqZWN0ICpQeUV4Y19CbG9ja2luZ0lPRXJyb3I7Ci0KIC8qCiAgKiBPZmZzZXQgdHlwZSBmb3IgcG9zaXRpb25pbmcuCiAgKi8KQEAgLTEzOCw3ICsxMjksNiBAQAogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgaW50IGluaXRpYWxpemVkOwotICAgIFB5T2JqZWN0ICpvc19tb2R1bGU7CiAgICAgUHlPYmplY3QgKmxvY2FsZV9tb2R1bGU7CiAKICAgICBQeU9iamVjdCAqdW5zdXBwb3J0ZWRfb3BlcmF0aW9uOwpAQCAtMTYwLDYgKzE1MCw3IEBACiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVhZDE7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkYWJsZTsKK2V4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRhbGw7CiBleHRlcm4gUHlPYmplY3QgKl9QeUlPX3N0cl9yZWFkaW50bzsKIGV4dGVybiBQeU9iamVjdCAqX1B5SU9fc3RyX3JlYWRsaW5lOwogZXh0ZXJuIFB5T2JqZWN0ICpfUHlJT19zdHJfcmVzZXQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMgYi9Nb2R1bGVzL19pby9idWZmZXJlZGlvLmMKaW5kZXggYmI3N2FjYy4uMzM0NzM0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vYnVmZmVyZWRpby5jCisrKyBiL01vZHVsZXMvX2lvL2J1ZmZlcmVkaW8uYwpAQCAtMSw5ICsxLDkgQEAKIC8qCiAgICAgQW4gaW1wbGVtZW50YXRpb24gb2YgQnVmZmVyZWQgSS9PIGFzIGRlZmluZWQgYnkgUEVQIDMxMTYgLSAiTmV3IEkvTyIKLSAgICAKKwogICAgIENsYXNzZXMgZGVmaW5lZCBoZXJlOiBCdWZmZXJlZElPQmFzZSwgQnVmZmVyZWRSZWFkZXIsIEJ1ZmZlcmVkV3JpdGVyLAogICAgIEJ1ZmZlcmVkUmFuZG9tLgotICAgIAorCiAgICAgV3JpdHRlbiBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYyBhbmQgQW50b2luZSBQaXRyb3UKICovCiAKQEAgLTEzLDYgKzEzLDIwIEBACiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorX1B5X0lERU5USUZJRVIoY2xvc2UpOworX1B5X0lERU5USUZJRVIoX2RlYWxsb2Nfd2Fybik7CitfUHlfSURFTlRJRklFUihmbHVzaCk7CitfUHlfSURFTlRJRklFUihpc2F0dHkpOworX1B5X0lERU5USUZJRVIobW9kZSk7CitfUHlfSURFTlRJRklFUihuYW1lKTsKK19QeV9JREVOVElGSUVSKHBlZWspOworX1B5X0lERU5USUZJRVIocmVhZCk7CitfUHlfSURFTlRJRklFUihyZWFkMSk7CitfUHlfSURFTlRJRklFUihyZWFkYWJsZSk7CitfUHlfSURFTlRJRklFUihyZWFkaW50byk7CitfUHlfSURFTlRJRklFUih3cml0YWJsZSk7CitfUHlfSURFTlRJRklFUih3cml0ZSk7CisKIC8qCiAgKiBCdWZmZXJlZElPQmFzZSBjbGFzcywgaW5oZXJpdHMgZnJvbSBJT0Jhc2UuCiAgKi8KQEAgLTM4LDEyICs1MiwxMyBAQAogICAgIFB5X2J1ZmZlciBidWY7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKmRhdGE7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqOnJlYWRpbnRvIiwgJmJ1ZikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWQiLCAibiIsIGJ1Zi5sZW4pOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3JlYWQsICJuIiwgYnVmLmxlbik7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTk4LDcgKzIxMyw3IEBACiAgICAgaW50IHJlYWRhYmxlOwogICAgIGludCB3cml0YWJsZTsKICAgICBpbnQgZGVhbGxvY2F0aW5nOwotICAgIAorCiAgICAgLyogVHJ1ZSBpZiB0aGlzIGlzIGEgdmFuaWxsYSBCdWZmZXJlZCBvYmplY3QgKHJhdGhlciB0aGFuIGEgdXNlciBkZXJpdmVkCiAgICAgICAgY2xhc3MpICphbmQqIHRoZSByYXcgc3RyZWFtIGlzIGEgdmFuaWxsYSBGaWxlSU8gb2JqZWN0LiAqLwogICAgIGludCBmYXN0X2Nsb3NlZF9jaGVja3M7CkBAIC0yMzcsNyArMjUyLDcgQEAKIAogLyoKICAgICBJbXBsZW1lbnRhdGlvbiBub3RlczoKLSAgICAKKwogICAgICogQnVmZmVyZWRSZWFkZXIsIEJ1ZmZlcmVkV3JpdGVyIGFuZCBCdWZmZXJlZFJhbmRvbSB0cnkgdG8gc2hhcmUgbW9zdAogICAgICAgbWV0aG9kcyAodGhpcyBpcyBoZWxwZWQgYnkgdGhlIG1lbWJlcnMgYHJlYWRhYmxlYCBhbmQgYHdyaXRhYmxlYCwgd2hpY2gKICAgICAgIGFyZSBpbml0aWFsaXplZCBpbiB0aGUgcmVzcGVjdGl2ZSBjb25zdHJ1Y3RvcnMpCkBAIC0yNTUsNyArMjcwLDcgQEAKICAgICBOT1RFOiB3ZSBzaG91bGQgdHJ5IHRvIG1haW50YWluIGJsb2NrIGFsaWdubWVudCBvZiByZWFkcyBhbmQgd3JpdGVzIHRvIHRoZQogICAgIHJhdyBzdHJlYW0gKGFjY29yZGluZyB0byB0aGUgYnVmZmVyIHNpemUpLCBidXQgZm9yIG5vdyBpdCBpcyBvbmx5IGRvbmUKICAgICBpbiByZWFkKCkgYW5kIGZyaWVuZHMuCi0gICAgCisKICovCiAKIC8qIFRoZXNlIG1hY3JvcyBwcm90ZWN0IHRoZSBidWZmZXJlZCBvYmplY3QgYWdhaW5zdCBjb25jdXJyZW50IG9wZXJhdGlvbnMuICovCkBAIC00MjEsNyArNDM2LDcgQEAKIHsKICAgICBpZiAoc2VsZi0+b2sgJiYgc2VsZi0+cmF3KSB7CiAgICAgICAgIFB5T2JqZWN0ICpyOwotICAgICAgICByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5yYXcsICJfZGVhbGxvY193YXJuIiwgIk8iLCBzb3VyY2UpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5yYXcsICZQeUlkX19kZWFsbG9jX3dhcm4sICJPIiwgc291cmNlKTsKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7CiAgICAgICAgIGVsc2UKQEAgLTU1NCwxNCArNTY5LDE0IEBACiBidWZmZXJlZF9uYW1lX2dldChidWZmZXJlZCAqc2VsZiwgdm9pZCAqY29udGV4dCkKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKQotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYtPnJhdywgIm5hbWUiKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLT5yYXcsICZQeUlkX25hbWUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVmZmVyZWRfbW9kZV9nZXQoYnVmZmVyZWQgKnNlbGYsIHZvaWQgKmNvbnRleHQpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZikKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLT5yYXcsICJtb2RlIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZi0+cmF3LCAmUHlJZF9tb2RlKTsKIH0KIAogLyogTG93ZXItbGV2ZWwgQVBJcyAqLwpAQCAtNjAwLDE0ICs2MTUsMTUgQEAKIHN0YXRpYyB2b2lkCiBfYnVmZmVyZWR3cml0ZXJfcmVzZXRfYnVmKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCi1fYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZiwgUHlfc3NpemVfdCk7CitfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZik7CiBzdGF0aWMgUHlPYmplY3QgKgogX2J1ZmZlcmVkcmVhZGVyX3JlYWRfYWxsKGJ1ZmZlcmVkICpzZWxmKTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9mYXN0KGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKIHN0YXRpYyBQeU9iamVjdCAqCiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9nZW5lcmljKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90KTsKLQorc3RhdGljIFB5X3NzaXplX3QKK19idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChidWZmZXJlZCAqc2VsZiwgY2hhciAqc3RhcnQsIFB5X3NzaXplX3QgbGVuKTsKIAogLyoKICAqIEhlbHBlcnMKQEAgLTYzMSwxNCArNjQ3LDE0IEBACiBfYnVmZmVyZWRfY2hlY2tfYmxvY2tpbmdfZXJyb3Iodm9pZCkKIHsKICAgICBQeU9iamVjdCAqdCwgKnYsICp0YjsKLSAgICBQeUJsb2NraW5nSU9FcnJvck9iamVjdCAqZXJyOworICAgIFB5T1NFcnJvck9iamVjdCAqZXJyOwogCiAgICAgUHlFcnJfRmV0Y2goJnQsICZ2LCAmdGIpOwogICAgIGlmICh2ID09IE5VTEwgfHwgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyh2LCBQeUV4Y19CbG9ja2luZ0lPRXJyb3IpKSB7CiAgICAgICAgIFB5RXJyX1Jlc3RvcmUodCwgdiwgdGIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXJyID0gKFB5QmxvY2tpbmdJT0Vycm9yT2JqZWN0ICopIHY7CisgICAgZXJyID0gKFB5T1NFcnJvck9iamVjdCAqKSB2OwogICAgIC8qIFRPRE86IHNhbml0eSBjaGVjayAoZXJyLT53cml0dGVuID49IDApICovCiAgICAgUHlFcnJfUmVzdG9yZSh0LCB2LCB0Yik7CiAgICAgcmV0dXJuICZlcnItPndyaXR0ZW47CkBAIC02NTgsNyArNjc0LDcgQEAKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlJhdyBzdHJlYW0gcmV0dXJuZWQgaW52YWxpZCBwb3NpdGlvbiAlIiBQWV9QUklkT0ZGLAotCQkJIChQWV9PRkZfVF9DT01QQVQpbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX09GRl9UX0NPTVBBVCluKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzZWxmLT5hYnNfcG9zID0gbjsKQEAgLTY5MSw3ICs3MDcsNyBAQAogICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSU9FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiUmF3IHN0cmVhbSByZXR1cm5lZCBpbnZhbGlkIHBvc2l0aW9uICUiIFBZX1BSSWRPRkYsCi0JCQkgKFBZX09GRl9UX0NPTVBBVCluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoUFlfT0ZGX1RfQ09NUEFUKW4pOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNlbGYtPmFic19wb3MgPSBuOwpAQCAtODMyLDcgKzg0OCw3IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgUHlfQ0xFQVIocmVzKTsKICAgICB9Ci0gICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoc2VsZiwgbik7CisgICAgcmVzID0gX2J1ZmZlcmVkcmVhZGVyX3BlZWtfdW5sb2NrZWQoc2VsZik7CiAKIGVuZDoKICAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQpAQCAtODk2LDYxICs5MTIsMTEyIEBACiAgICAgaWYgKG4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CiAKLSAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAKICAgICAvKiBSZXR1cm4gdXAgdG8gbiBieXRlcy4gIElmIGF0IGxlYXN0IG9uZSBieXRlIGlzIGJ1ZmZlcmVkLCB3ZQogICAgICAgIG9ubHkgcmV0dXJuIGJ1ZmZlcmVkIGJ5dGVzLiAgT3RoZXJ3aXNlLCB3ZSBkbyBvbmUgcmF3IHJlYWQuICovCiAKLSAgICAvKiBYWFg6IHRoaXMgbWltaWNrcyB0aGUgaW8ucHkgaW1wbGVtZW50YXRpb24gYnV0IGlzIHByb2JhYmx5IHdyb25nLgotICAgICAgIElmIHdlIG5lZWQgdG8gcmVhZCBmcm9tIHRoZSByYXcgc3RyZWFtLCB0aGVuIHdlIGNvdWxkIGFjdHVhbGx5IHJlYWQKLSAgICAgICBhbGwgYG5gIGJ5dGVzIGFza2VkIGJ5IHRoZSBjYWxsZXIgKGFuZCBwb3NzaWJseSBtb3JlLCBzbyBhcyB0byBmaWxsCi0gICAgICAgb3VyIGJ1ZmZlciBmb3IgdGhlIG5leHQgcmVhZHMpLiAqLwotCiAgICAgaGF2ZSA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CiAgICAgaWYgKGhhdmUgPiAwKSB7Ci0gICAgICAgIGlmIChuID4gaGF2ZSkKLSAgICAgICAgICAgIG4gPSBoYXZlOwotICAgICAgICByZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZW5kOwotICAgICAgICBzZWxmLT5wb3MgKz0gbjsKLSAgICAgICAgZ290byBlbmQ7CisgICAgICAgIG4gPSBQeV9NSU4oaGF2ZSwgbik7CisgICAgICAgIHJlcyA9IF9idWZmZXJlZHJlYWRlcl9yZWFkX2Zhc3Qoc2VsZiwgbik7CisgICAgICAgIGFzc2VydChyZXMgIT0gUHlfTm9uZSk7CisgICAgICAgIHJldHVybiByZXM7CiAgICAgfQotCi0gICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7Ci0gICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7Ci0gICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZW5kOworICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUVOVEVSX0JVRkZFUkVEKHNlbGYpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICAvKiBGaWxsIHRoZSBidWZmZXIgZnJvbSB0aGUgcmF3IHN0cmVhbSwgYW5kIGNvcHkgaXQgdG8gdGhlIHJlc3VsdC4gKi8KICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOwotICAgIHIgPSBfYnVmZmVyZWRyZWFkZXJfZmlsbF9idWZmZXIoc2VsZik7Ci0gICAgaWYgKHIgPT0gLTEpCi0gICAgICAgIGdvdG8gZW5kOworICAgIHIgPSBfYnVmZmVyZWRyZWFkZXJfcmF3X3JlYWQoc2VsZiwgUHlCeXRlc19BU19TVFJJTkcocmVzKSwgbik7CisgICAgTEVBVkVfQlVGRkVSRUQoc2VsZikKKyAgICBpZiAociA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChyID09IC0yKQogICAgICAgICByID0gMDsKICAgICBpZiAobiA+IHIpCi0gICAgICAgIG4gPSByOwotICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+YnVmZmVyLCBuKTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZW5kOwotICAgIHNlbGYtPnBvcyA9IG47Ci0KLWVuZDoKLSAgICBMRUFWRV9CVUZGRVJFRChzZWxmKQorICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlcywgcik7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkX3JlYWRpbnRvKGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBQeV9idWZmZXIgYnVmOworICAgIFB5X3NzaXplX3Qgbiwgd3JpdHRlbiA9IDAsIHJlbWFpbmluZzsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKwogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpCi0gICAgCi0gICAgLyogVE9ETzogdXNlIHJhdy5yZWFkaW50bygpIChvciBhIGRpcmVjdCBjb3B5IGZyb20gb3VyIGJ1ZmZlcikgaW5zdGVhZCEgKi8KLSAgICByZXR1cm4gYnVmZmVyZWRpb2Jhc2VfcmVhZGludG8oKFB5T2JqZWN0ICopc2VsZiwgYXJncyk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIncqOnJlYWRpbnRvIiwgJmJ1ZikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbiA9IFB5X1NBRkVfRE9XTkNBU1QoUkVBREFIRUFEKHNlbGYpLCBQeV9vZmZfdCwgUHlfc3NpemVfdCk7CisgICAgaWYgKG4gPiAwKSB7CisgICAgICAgIGlmIChuID49IGJ1Zi5sZW4pIHsKKyAgICAgICAgICAgIG1lbWNweShidWYuYnVmLCBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIGJ1Zi5sZW4pOworICAgICAgICAgICAgc2VsZi0+cG9zICs9IGJ1Zi5sZW47CisgICAgICAgICAgICByZXMgPSBQeUxvbmdfRnJvbVNzaXplX3QoYnVmLmxlbik7CisgICAgICAgICAgICBnb3RvIGVuZF91bmxvY2tlZDsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoYnVmLmJ1Ziwgc2VsZi0+YnVmZmVyICsgc2VsZi0+cG9zLCBuKTsKKyAgICAgICAgc2VsZi0+cG9zICs9IG47CisgICAgICAgIHdyaXR0ZW4gPSBuOworICAgIH0KKworICAgIGlmICghRU5URVJfQlVGRkVSRUQoc2VsZikpCisgICAgICAgIGdvdG8gZW5kX3VubG9ja2VkOworCisgICAgaWYgKHNlbGYtPndyaXRhYmxlKSB7CisgICAgICAgIHJlcyA9IGJ1ZmZlcmVkX2ZsdXNoX2FuZF9yZXdpbmRfdW5sb2NrZWQoc2VsZik7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBQeV9DTEVBUihyZXMpOworICAgIH0KKworICAgIF9idWZmZXJlZHJlYWRlcl9yZXNldF9idWYoc2VsZik7CisgICAgc2VsZi0+cG9zID0gMDsKKworICAgIGZvciAocmVtYWluaW5nID0gYnVmLmxlbiAtIHdyaXR0ZW47CisgICAgICAgICByZW1haW5pbmcgPiAwOworICAgICAgICAgd3JpdHRlbiArPSBuLCByZW1haW5pbmcgLT0gbikgeworICAgICAgICAvKiBJZiByZW1haW5pbmcgYnl0ZXMgaXMgbGFyZ2VyIHRoYW4gaW50ZXJuYWwgYnVmZmVyIHNpemUsIGNvcHkKKyAgICAgICAgICogZGlyZWN0bHkgaW50byBjYWxsZXIncyBidWZmZXIuICovCisgICAgICAgIGlmIChyZW1haW5pbmcgPiBzZWxmLT5idWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgbiA9IF9idWZmZXJlZHJlYWRlcl9yYXdfcmVhZChzZWxmLCAoY2hhciAqKSBidWYuYnVmICsgd3JpdHRlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG4gPSBfYnVmZmVyZWRyZWFkZXJfZmlsbF9idWZmZXIoc2VsZik7CisgICAgICAgICAgICBpZiAobiA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAobiA+IHJlbWFpbmluZykKKyAgICAgICAgICAgICAgICAgICAgbiA9IHJlbWFpbmluZzsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKGNoYXIgKikgYnVmLmJ1ZiArIHdyaXR0ZW4sCisgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJ1ZmZlciArIHNlbGYtPnBvcywgbik7CisgICAgICAgICAgICAgICAgc2VsZi0+cG9zICs9IG47CisgICAgICAgICAgICAgICAgY29udGludWU7IC8qIHNob3J0IGNpcmN1aXQgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobiA9PSAwIHx8IChuID09IC0yICYmIHdyaXR0ZW4gPiAwKSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIGlmIChuID09IC0yKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICAgICAgICAgIHJlcyA9IFB5X05vbmU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXMgPSBQeUxvbmdfRnJvbVNzaXplX3Qod3JpdHRlbik7CisKK2VuZDoKKyAgICBMRUFWRV9CVUZGRVJFRChzZWxmKTsKK2VuZF91bmxvY2tlZDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWYpOworICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMTAxLDkgKzExNjgsMjAgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwgJnRhcmdldG9iaiwgJndoZW5jZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmICh3aGVuY2UgPCAwIHx8IHdoZW5jZSA+IDIpIHsKKworICAgIC8qIERvIHNvbWUgZXJyb3IgY2hlY2tpbmcgaW5zdGVhZCBvZiB0cnVzdGluZyBPUyAnc2VlaygpJworICAgICoqIGVycm9yIGRldGVjdGlvbiwganVzdCBpbiBjYXNlLgorICAgICovCisgICAgaWYgKCh3aGVuY2UgPCAwIHx8IHdoZW5jZSA+MikKKyNpZmRlZiBTRUVLX0hPTEUKKyAgICAgICAgJiYgKHdoZW5jZSAhPSBTRUVLX0hPTEUpCisjZW5kaWYKKyNpZmRlZiBTRUVLX0RBVEEKKyAgICAgICAgJiYgKHdoZW5jZSAhPSBTRUVLX0RBVEEpCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIndoZW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMiwgbm90ICVkIiwgd2hlbmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICJ3aGVuY2UgdmFsdWUgJWQgdW5zdXBwb3J0ZWQiLCB3aGVuY2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTExMTYsNyArMTE5NCwxMSBAQAogICAgIGlmICh0YXJnZXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAod2hlbmNlICE9IDIgJiYgc2VsZi0+cmVhZGFibGUpIHsKKyAgICAvKiBTRUVLX1NFVCBhbmQgU0VFS19DVVIgYXJlIHNwZWNpYWwgYmVjYXVzZSB3ZSBjb3VsZCBzZWVrIGluc2lkZSB0aGUKKyAgICAgICBidWZmZXIuIE90aGVyIHdoZW5jZSB2YWx1ZXMgbXVzdCBiZSBtYW5hZ2VkIHdpdGhvdXQgdGhpcyBvcHRpbWl6YXRpb24uCisgICAgICAgU29tZSBPcGVyYXRpbmcgU3lzdGVtcyBjYW4gcHJvdmlkZSBhZGRpdGlvbmFsIHZhbHVlcywgbGlrZQorICAgICAgIFNFRUtfSE9MRS9TRUVLX0RBVEEuICovCisgICAgaWYgKCgod2hlbmNlID09IDApIHx8ICh3aGVuY2UgPT0gMSkpICYmIHNlbGYtPnJlYWRhYmxlKSB7CiAgICAgICAgIFB5X29mZl90IGN1cnJlbnQsIGF2YWlsOwogICAgICAgICAvKiBDaGVjayBpZiBzZWVraW5nIGxlYXZlcyB1cyBpbnNpZGUgdGhlIGN1cnJlbnQgYnVmZmVyLAogICAgICAgICAgICBzbyBhcyB0byByZXR1cm4gcXVpY2tseSBpZiBwb3NzaWJsZS4gQWxzbywgd2UgbmVlZG4ndCB0YWtlIHRoZQpAQCAtMTI0Miw3ICsxMzI0LDcgQEAKIHsKICAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnJlczsKIAotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xMzY4LDMzICsxNDUwLDYwIEBACiBfYnVmZmVyZWRyZWFkZXJfcmVhZF9hbGwoYnVmZmVyZWQgKnNlbGYpCiB7CiAgICAgUHlfc3NpemVfdCBjdXJyZW50X3NpemU7Ci0gICAgUHlPYmplY3QgKnJlcywgKmRhdGEgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpjaHVua3MgPSBQeUxpc3RfTmV3KDApOwotCi0gICAgaWYgKGNodW5rcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzLCAqZGF0YSA9IE5VTEwsICpjaHVuaywgKmNodW5rczsKIAogICAgIC8qIEZpcnN0IGNvcHkgd2hhdCB3ZSBoYXZlIGluIHRoZSBjdXJyZW50IGJ1ZmZlci4gKi8KICAgICBjdXJyZW50X3NpemUgPSBQeV9TQUZFX0RPV05DQVNUKFJFQURBSEVBRChzZWxmKSwgUHlfb2ZmX3QsIFB5X3NzaXplX3QpOwogICAgIGlmIChjdXJyZW50X3NpemUpIHsKICAgICAgICAgZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoCiAgICAgICAgICAgICBzZWxmLT5idWZmZXIgKyBzZWxmLT5wb3MsIGN1cnJlbnRfc2l6ZSk7Ci0gICAgICAgIGlmIChkYXRhID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVua3MpOworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICAgICAgc2VsZi0+cG9zICs9IGN1cnJlbnRfc2l6ZTsKICAgICB9CiAgICAgLyogV2UncmUgZ29pbmcgcGFzdCB0aGUgYnVmZmVyJ3MgYm91bmRzLCBmbHVzaCBpdCAqLwogICAgIGlmIChzZWxmLT53cml0YWJsZSkgewogICAgICAgICByZXMgPSBidWZmZXJlZF9mbHVzaF9hbmRfcmV3aW5kX3VubG9ja2VkKHNlbGYpOwotICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVua3MpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICBQeV9DTEVBUihyZXMpOwogICAgIH0KICAgICBfYnVmZmVyZWRyZWFkZXJfcmVzZXRfYnVmKHNlbGYpOworCisgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHIoc2VsZi0+cmF3LCBfUHlJT19zdHJfcmVhZGFsbCkpIHsKKyAgICAgICAgY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5yYXcsIF9QeUlPX3N0cl9yZWFkYWxsLCBOVUxMKTsKKyAgICAgICAgaWYgKGNodW5rID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKGNodW5rICE9IFB5X05vbmUgJiYgIVB5Qnl0ZXNfQ2hlY2soY2h1bmspKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKGRhdGEpOworICAgICAgICAgICAgUHlfREVDUkVGKGNodW5rKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkYWxsKCkgc2hvdWxkIHJldHVybiBieXRlcyIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNodW5rID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgIGlmIChjdXJyZW50X3NpemUgPT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gY2h1bms7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2h1bmspOworICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRfc2l6ZSkgeworICAgICAgICAgICAgUHlCeXRlc19Db25jYXQoJmRhdGEsIGNodW5rKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihjaHVuayk7CisgICAgICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGNodW5rOworICAgIH0KKworICAgIGNodW5rcyA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKGNodW5rcyA9PSBOVUxMKSB7CisgICAgICAgIFB5X1hERUNSRUYoZGF0YSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChjaHVua3MsIGRhdGEpIDwgMCkgewpAQCAtMTU1Niw3ICsxNjY1LDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9idWZmZXJlZHJlYWRlcl9wZWVrX3VubG9ja2VkKGJ1ZmZlcmVkICpzZWxmLCBQeV9zc2l6ZV90IG4pCitfYnVmZmVyZWRyZWFkZXJfcGVla191bmxvY2tlZChidWZmZXJlZCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGhhdmUsIHI7CiAKQEAgLTE1OTgsNiArMTcwNyw3IEBACiAgICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWQsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJwZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3BlZWssIE1FVEhfVkFSQVJHU30sCiAgICAgeyJyZWFkMSIsIChQeUNGdW5jdGlvbilidWZmZXJlZF9yZWFkMSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7InJlYWRpbnRvIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3JlYWRpbnRvLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicmVhZGxpbmUiLCAoUHlDRnVuY3Rpb24pYnVmZmVyZWRfcmVhZGxpbmUsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzZWVrIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3NlZWssIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKWJ1ZmZlcmVkX3RlbGwsIE1FVEhfTk9BUkdTfSwKQEAgLTE2NjMsMTUgKzE3NzMsNiBAQAogDAogCiAKLXN0YXRpYyBpbnQKLWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSh2b2lkKQotewotICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgIm1heF9idWZmZXJfc2l6ZSBpcyBkZXByZWNhdGVkIiwgMSkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gMTsKLX0KLQogLyoKICAqIGNsYXNzIEJ1ZmZlcmVkV3JpdGVyCiAgKi8KQEAgLTE2ODAsNyArMTc4MSw3IEBACiAgICAgIlxuIgogICAgICJUaGUgY29uc3RydWN0b3IgY3JlYXRlcyBhIEJ1ZmZlcmVkV3JpdGVyIGZvciB0aGUgZ2l2ZW4gd3JpdGVhYmxlIHJhd1xuIgogICAgICJzdHJlYW0uIElmIHRoZSBidWZmZXJfc2l6ZSBpcyBub3QgZ2l2ZW4sIGl0IGRlZmF1bHRzIHRvXG4iCi0gICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuIG1heF9idWZmZXJfc2l6ZSBpc24ndCB1c2VkIGFueW1vcmUuXG4iCisgICAgIkRFRkFVTFRfQlVGRkVSX1NJWkUuXG4iCiAgICAgKTsKIAogc3RhdGljIHZvaWQKQEAgLTE2OTMsMjMgKzE3OTQsMTggQEAKIHN0YXRpYyBpbnQKIGJ1ZmZlcmVkd3JpdGVyX2luaXQoYnVmZmVyZWQgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICAvKiBUT0RPOiBwcm9wZXJseSBkZXByZWNhdGUgbWF4X2J1ZmZlcl9zaXplICovCi0gICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsICJtYXhfYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlfc3NpemVfdCBtYXhfYnVmZmVyX3NpemUgPSAtMjM0OwogICAgIFB5T2JqZWN0ICpyYXc7CiAKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bm46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKG1heF9idWZmZXJfc2l6ZSAhPSAtMjM0ICYmICFjb21wbGFpbl9hYm91dF9tYXhfYnVmZmVyX3NpemUoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja193cml0YWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKIApAQCAtMjA5MSwxNiArMjE4NywxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZWFkZXIsICp3cml0ZXI7CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlfc3NpemVfdCBtYXhfYnVmZmVyX3NpemUgPSAtMjM0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xubjpCdWZmZXJlZFJXUGFpciIsICZyZWFkZXIsICZ3cml0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZidWZmZXJfc2l6ZSwgJm1heF9idWZmZXJfc2l6ZSkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46QnVmZmVyZWRSV1BhaXIiLCAmcmVhZGVyLCAmd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyX3NpemUpKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAobWF4X2J1ZmZlcl9zaXplICE9IC0yMzQgJiYgIWNvbXBsYWluX2Fib3V0X21heF9idWZmZXJfc2l6ZSgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJlYWRlciwgUHlfVHJ1ZSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlJT0Jhc2VfY2hlY2tfd3JpdGFibGUod3JpdGVyLCBQeV9UcnVlKSA9PSBOVUxMKQpAQCAtMjE0OCwxMyArMjI0MCwxMyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX2ZvcndhcmRfY2FsbChidWZmZXJlZCAqc2VsZiwgY29uc3QgY2hhciAqbmFtZSwgUHlPYmplY3QgKmFyZ3MpCitfZm9yd2FyZF9jYWxsKGJ1ZmZlcmVkICpzZWxmLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsIG5hbWUpOworICAgIFB5T2JqZWN0ICpmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLCBuYW1lKTsKICAgICBQeU9iamVjdCAqcmV0OwogCiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUtPnN0cmluZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMjE2Niw2NiArMjI1OCw2NiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWQocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJyZWFkIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9yZWFkLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3BlZWsocndwYWlyICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICJwZWVrIiwgYXJncyk7CisgICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAmUHlJZF9wZWVrLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWQxKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZDEiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWQxLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWRpbnRvKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZGludG8iLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRpbnRvLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3dyaXRlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAid3JpdGUiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX3dyaXRlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX2ZsdXNoKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiZmx1c2giLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX2ZsdXNoLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3JlYWRhYmxlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAicmVhZGFibGUiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX3JlYWRhYmxlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX3dyaXRhYmxlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAid3JpdGFibGUiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX3dyaXRhYmxlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX2Nsb3NlKHJ3cGFpciAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnJldCA9IF9mb3J3YXJkX2NhbGwoc2VsZi0+d3JpdGVyLCAiY2xvc2UiLCBhcmdzKTsKKyAgICBQeU9iamVjdCAqcmV0ID0gX2ZvcndhcmRfY2FsbChzZWxmLT53cml0ZXIsICZQeUlkX2Nsb3NlLCBhcmdzKTsKICAgICBpZiAocmV0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0RFQ1JFRihyZXQpOwogCi0gICAgcmV0dXJuIF9mb3J3YXJkX2NhbGwoc2VsZi0+cmVhZGVyLCAiY2xvc2UiLCBhcmdzKTsKKyAgICByZXR1cm4gX2ZvcndhcmRfY2FsbChzZWxmLT5yZWFkZXIsICZQeUlkX2Nsb3NlLCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcmVkcndwYWlyX2lzYXR0eShyd3BhaXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgImlzYXR0eSIsIGFyZ3MpOworICAgIFB5T2JqZWN0ICpyZXQgPSBfZm9yd2FyZF9jYWxsKHNlbGYtPndyaXRlciwgJlB5SWRfaXNhdHR5LCBhcmdzKTsKIAogICAgIGlmIChyZXQgIT0gUHlfRmFsc2UpIHsKICAgICAgICAgLyogZWl0aGVyIFRydWUgb3IgZXhjZXB0aW9uICovCkBAIC0yMjMzLDcgKzIzMjUsNyBAQAogICAgIH0KICAgICBQeV9ERUNSRUYocmV0KTsKIAotICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgImlzYXR0eSIsIGFyZ3MpOworICAgIHJldHVybiBfZm9yd2FyZF9jYWxsKHNlbGYtPnJlYWRlciwgJlB5SWRfaXNhdHR5LCBhcmdzKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzMjUsMjggKzI0MTcsMjQgQEAKICAgICAiXG4iCiAgICAgIlRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgcmVhZGVyIGFuZCB3cml0ZXIgZm9yIGEgc2Vla2FibGUgc3RyZWFtLFxuIgogICAgICJyYXcsIGdpdmVuIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gSWYgdGhlIGJ1ZmZlcl9zaXplIGlzIG9taXR0ZWQgaXRcbiIKLSAgICAiZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS4gbWF4X2J1ZmZlcl9zaXplIGlzbid0IHVzZWQgYW55bW9yZS5cbiIKKyAgICAiZGVmYXVsdHMgdG8gREVGQVVMVF9CVUZGRVJfU0laRS5cbiIKICAgICApOwogCiBzdGF0aWMgaW50CiBidWZmZXJlZHJhbmRvbV9pbml0KGJ1ZmZlcmVkICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7InJhdyIsICJidWZmZXJfc2l6ZSIsICJtYXhfYnVmZmVyX3NpemUiLCBOVUxMfTsKKyAgICBjaGFyICprd2xpc3RbXSA9IHsicmF3IiwgImJ1ZmZlcl9zaXplIiwgTlVMTH07CiAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IERFRkFVTFRfQlVGRkVSX1NJWkU7Ci0gICAgUHlfc3NpemVfdCBtYXhfYnVmZmVyX3NpemUgPSAtMjM0OwogICAgIFB5T2JqZWN0ICpyYXc7CiAKICAgICBzZWxmLT5vayA9IDA7CiAgICAgc2VsZi0+ZGV0YWNoZWQgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98bm46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplLCAmbWF4X2J1ZmZlcl9zaXplKSkgeworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfG46QnVmZmVyZWRSZWFkZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJhdywgJmJ1ZmZlcl9zaXplKSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKG1heF9idWZmZXJfc2l6ZSAhPSAtMjM0ICYmICFjb21wbGFpbl9hYm91dF9tYXhfYnVmZmVyX3NpemUoKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKF9QeUlPQmFzZV9jaGVja19zZWVrYWJsZShyYXcsIFB5X1RydWUpID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoX1B5SU9CYXNlX2NoZWNrX3JlYWRhYmxlKHJhdywgUHlfVHJ1ZSkgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYyBiL01vZHVsZXMvX2lvL2J5dGVzaW8uYwppbmRleCA0MTY0NTMzLi41NDg0MGJiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9ieXRlc2lvLmMKKysrIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCkBAIC05NjIsMTMgKzk2MiwxMSBAQAogYnl0ZXNpb2J1Zl9nZXRidWZmZXIoYnl0ZXNpb2J1ZiAqb2JqLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKIHsKICAgICBpbnQgcmV0OwotICAgIHZvaWQgKnB0cjsKICAgICBieXRlc2lvICpiID0gKGJ5dGVzaW8gKikgb2JqLT5zb3VyY2U7CiAgICAgaWYgKHZpZXcgPT0gTlVMTCkgewogICAgICAgICBiLT5leHBvcnRzKys7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwdHIgPSAodm9pZCAqKSBvYmo7CiAgICAgcmV0ID0gUHlCdWZmZXJfRmlsbEluZm8odmlldywgKFB5T2JqZWN0KilvYmosIGItPmJ1ZiwgYi0+c3RyaW5nX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgZmxhZ3MpOwogICAgIGlmIChyZXQgPj0gMCkgewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vZmlsZWlvLmMgYi9Nb2R1bGVzL19pby9maWxlaW8uYwppbmRleCA2MDVhZDUxLi42ZTBiYmVlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby9maWxlaW8uYworKysgYi9Nb2R1bGVzL19pby9maWxlaW8uYwpAQCAtNDYsNiArNDYsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBpbnQgZmQ7CisgICAgdW5zaWduZWQgaW50IGNyZWF0ZWQgOiAxOwogICAgIHVuc2lnbmVkIGludCByZWFkYWJsZSA6IDE7CiAgICAgdW5zaWduZWQgaW50IHdyaXRhYmxlIDogMTsKICAgICBzaWduZWQgaW50IHNlZWthYmxlIDogMjsgLyogLTEgbWVhbnMgdW5rbm93biAqLwpAQCAtMTIyLDYgKzEyMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZmlsZWlvX2Nsb3NlKGZpbGVpbyAqc2VsZikKIHsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAgICAgaWYgKCFzZWxmLT5jbG9zZWZkKSB7CiAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTM3LDggKzEzOSw4IEBACiAgICAgaWYgKGVycm5vIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QqKSZQeVJhd0lPQmFzZV9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9zZSIsICJPIiwgc2VsZik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KikmUHlSYXdJT0Jhc2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9jbG9zZSwgIk8iLCBzZWxmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1MSw2ICsxNTMsNyBAQAogICAgIHNlbGYgPSAoZmlsZWlvICopIHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+ZmQgPSAtMTsKKyAgICAgICAgc2VsZi0+Y3JlYXRlZCA9IDA7CiAgICAgICAgIHNlbGYtPnJlYWRhYmxlID0gMDsKICAgICAgICAgc2VsZi0+d3JpdGFibGUgPSAwOwogICAgICAgICBzZWxmLT5zZWVrYWJsZSA9IC0xOwpAQCAtMjA0LDkgKzIwNyw5IEBACiBmaWxlaW9faW5pdChQeU9iamVjdCAqb3NlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBmaWxlaW8gKnNlbGYgPSAoZmlsZWlvICopIG9zZWxmOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlsZSIsICJtb2RlIiwgImNsb3NlZmQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAibW9kZSIsICJjbG9zZWZkIiwgIm9wZW5lciIsIE5VTEx9OwogICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqc3RyaW5nb2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnN0cmluZ29iaiA9IE5VTEwsICpvcGVuZXIgPSBQeV9Ob25lOwogICAgIGNoYXIgKm1vZGUgPSAiciI7CiAgICAgY2hhciAqczsKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0yMzAsOCArMjMzLDkgQEAKICAgICAgICAgICAgIHNlbGYtPmZkID0gLTE7CiAgICAgfQogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98c2k6ZmlsZWlvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZuYW1lb2JqLCAmbW9kZSwgJmNsb3NlZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfHNpTzpmaWxlaW8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWVvYmosICZtb2RlLCAmY2xvc2VmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BlbmVyKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sobmFtZW9iaikpIHsKQEAgLTI1OCw5ICsyNjIsMTAgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIHdpZGVuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaik7Ci0gICAgfQotICAgIGlmICh3aWRlbmFtZSA9PSBOVUxMKQorICAgICAgICB3aWRlbmFtZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmFtZW9iaik7CisgICAgICAgIGlmICh3aWRlbmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZQogI2VuZGlmCiAgICAgaWYgKGZkIDwgMCkKICAgICB7CkBAIC0yNzMsMTUgKzI3OCwyMyBAQAogICAgIHMgPSBtb2RlOwogICAgIHdoaWxlICgqcykgewogICAgICAgICBzd2l0Y2ggKCpzKyspIHsKLSAgICAgICAgY2FzZSAncic6CisgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgaWYgKHJ3YSkgewogICAgICAgICAgICAgYmFkX21vZGU6CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdXN0IGhhdmUgZXhhY3RseSBvbmUgb2YgcmVhZC93cml0ZS9hcHBlbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBoYXZlIGV4YWN0bHkgb25lIG9mIGNyZWF0ZS9yZWFkL3dyaXRlL2FwcGVuZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2RlIGFuZCBhdCBtb3N0IG9uZSBwbHVzIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJ3YSA9IDE7CisgICAgICAgICAgICBzZWxmLT5jcmVhdGVkID0gMTsKKyAgICAgICAgICAgIHNlbGYtPndyaXRhYmxlID0gMTsKKyAgICAgICAgICAgIGZsYWdzIHw9IE9fRVhDTCB8IE9fQ1JFQVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICBpZiAocndhKQorICAgICAgICAgICAgICAgIGdvdG8gYmFkX21vZGU7CisgICAgICAgICAgICByd2EgPSAxOwogICAgICAgICAgICAgc2VsZi0+cmVhZGFibGUgPSAxOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ3cnOgpAQCAtMzQ3LDIwICszNjAsNDAgQEAKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgaWYgKG9wZW5lciA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgICAgICBpZiAod2lkZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICh3aWRlbmFtZSAhPSBOVUxMKQorICAgICAgICAgICAgICAgIHNlbGYtPmZkID0gX3dvcGVuKHdpZGVuYW1lLCBmbGFncywgMDY2Nik7CisgICAgICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIHNlbGYtPmZkID0gb3BlbihuYW1lLCBmbGFncywgMDY2Nik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgICAgICAgICAgc2VsZi0+ZmQgPSBvcGVuKG5hbWUsIGZsYWdzLCAwNjY2KTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZmRvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbmVyLCAiT2kiLCBuYW1lb2JqLCBmbGFncyk7CisgICAgICAgICAgICBpZiAoZmRvYmogPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2soZmRvYmopKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGZkb2JqKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGludGVnZXIgZnJvbSBvcGVuZXIiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZWxmLT5mZCA9IFB5TG9uZ19Bc0xvbmcoZmRvYmopOworICAgICAgICAgICAgUHlfREVDUkVGKGZkb2JqKTsKKyAgICAgICAgICAgIGlmIChzZWxmLT5mZCA9PSAtMSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBmZF9pc19vd24gPSAxOwogICAgICAgICBpZiAoc2VsZi0+ZmQgPCAwKSB7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgICAgICAgICAgaWYgKHdpZGVuYW1lICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aFVuaWNvZGVGaWxlbmFtZShQeUV4Y19JT0Vycm9yLCB3aWRlbmFtZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOwogICAgICAgICAgICAgZWxzZQogI2VuZGlmCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsIG5hbWUpOwpAQCAtNTI5LDM2ICs1NjIsNTMgQEAKIH0KIAogc3RhdGljIHNpemVfdAotbmV3X2J1ZmZlcnNpemUoZmlsZWlvICpzZWxmLCBzaXplX3QgY3VycmVudHNpemUpCi17CituZXdfYnVmZmVyc2l6ZShmaWxlaW8gKnNlbGYsIHNpemVfdCBjdXJyZW50c2l6ZQogI2lmZGVmIEhBVkVfRlNUQVQKLSAgICBvZmZfdCBwb3MsIGVuZDsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBpZiAoZnN0YXQoc2VsZi0+ZmQsICZzdCkgPT0gMCkgewotICAgICAgICBlbmQgPSBzdC5zdF9zaXplOwotICAgICAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKKyAgICAgICAgICAgICAgICwgUHlfb2ZmX3QgcG9zLCBQeV9vZmZfdCBlbmQKKyNlbmRpZgorICAgICAgICAgICAgICAgKQoreworICAgIHNpemVfdCBhZGRlbmQ7CisjaWZkZWYgSEFWRV9GU1RBVAorICAgIGlmIChlbmQgIT0gKFB5X29mZl90KS0xKSB7CiAgICAgICAgIC8qIEZpbGVzIGNsYWltaW5nIGEgc2l6ZSBzbWFsbGVyIHRoYW4gU01BTExDSFVOSyBtYXkKICAgICAgICAgICAgYWN0dWFsbHkgYmUgc3RyZWFtaW5nIHBzZXVkby1maWxlcy4gSW4gdGhpcyBjYXNlLCB3ZQogICAgICAgICAgICBhcHBseSB0aGUgbW9yZSBhZ2dyZXNzaXZlIGFsZ29yaXRobSBiZWxvdy4KICAgICAgICAgKi8KICAgICAgICAgaWYgKGVuZCA+PSBTTUFMTENIVU5LICYmIGVuZCA+PSBwb3MgJiYgcG9zID49IDApIHsKICAgICAgICAgICAgIC8qIEFkZCAxIHNvIGlmIHRoZSBmaWxlIHdlcmUgdG8gZ3JvdyB3ZSdkIG5vdGljZS4gKi8KLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7CisgICAgICAgICAgICBQeV9vZmZfdCBidWZzaXplID0gY3VycmVudHNpemUgKyBlbmQgLSBwb3MgKyAxOworICAgICAgICAgICAgaWYgKGJ1ZnNpemUgPCBQWV9TU0laRV9UX01BWCkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHNpemVfdClidWZzaXplOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBQWV9TU0laRV9UX01BWDsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgogICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKLSAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCi0gICAgICAgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KLSAgICByZXR1cm4gY3VycmVudHNpemUgKyAoY3VycmVudHNpemUgPj4gMykgKyA2OworICAgICAgIGdpdmluZyB1cyBhbW9ydGl6ZWQgbGluZWFyLXRpbWUgYmVoYXZpb3IuICBGb3IgYmlnZ2VyIHNpemVzLCB1c2UgYQorICAgICAgIGxlc3MtdGhhbi1kb3VibGUgZ3Jvd3RoIGZhY3RvciB0byBhdm9pZCBleGNlc3NpdmUgYWxsb2NhdGlvbi4gKi8KKyAgICBpZiAoY3VycmVudHNpemUgPiA2NTUzNikKKyAgICAgICAgYWRkZW5kID0gY3VycmVudHNpemUgPj4gMzsKKyAgICBlbHNlCisgICAgICAgIGFkZGVuZCA9IDI1NiArIGN1cnJlbnRzaXplOworICAgIGlmIChhZGRlbmQgPCBTTUFMTENIVU5LKQorICAgICAgICAvKiBBdm9pZCB0aW55IHJlYWQoKSBjYWxscy4gKi8KKyAgICAgICAgYWRkZW5kID0gU01BTExDSFVOSzsKKyAgICByZXR1cm4gYWRkZW5kICsgY3VycmVudHNpemU7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaWxlaW9fcmVhZGFsbChmaWxlaW8gKnNlbGYpCiB7CisjaWZkZWYgSEFWRV9GU1RBVAorICAgIHN0cnVjdCBzdGF0IHN0OworICAgIFB5X29mZl90IHBvcywgZW5kOworI2VuZGlmCiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IHRvdGFsID0gMDsKICAgICBpbnQgbjsKKyAgICBzaXplX3QgbmV3c2l6ZTsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBlcnJfY2xvc2VkKCk7CkBAIC01NjksOCArNjE5LDIzIEBACiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorI2lmZGVmIEhBVkVfRlNUQVQKKyNpZiBkZWZpbmVkKE1TX1dJTjY0KSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgcG9zID0gX2xzZWVraTY0KHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworI2Vsc2UKKyAgICBwb3MgPSBsc2VlayhzZWxmLT5mZCwgMEwsIFNFRUtfQ1VSKTsKKyNlbmRpZgorICAgIGlmIChmc3RhdChzZWxmLT5mZCwgJnN0KSA9PSAwKQorICAgICAgICBlbmQgPSBzdC5zdF9zaXplOworICAgIGVsc2UKKyAgICAgICAgZW5kID0gKFB5X29mZl90KS0xOworI2VuZGlmCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgc2l6ZV90IG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCB0b3RhbCk7CisjaWZkZWYgSEFWRV9GU1RBVAorICAgICAgICBuZXdzaXplID0gbmV3X2J1ZmZlcnNpemUoc2VsZiwgdG90YWwsIHBvcywgZW5kKTsKKyNlbHNlCisgICAgICAgIG5ld3NpemUgPSBuZXdfYnVmZmVyc2l6ZShzZWxmLCB0b3RhbCk7CisjZW5kaWYKICAgICAgICAgaWYgKG5ld3NpemUgPiBQWV9TU0laRV9UX01BWCB8fCBuZXdzaXplIDw9IDApIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICJ1bmJvdW5kZWQgcmVhZCByZXR1cm5lZCBtb3JlIGJ5dGVzICIKQEAgLTYxNiw2ICs2ODEsOSBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgdG90YWwgKz0gbjsKKyNpZmRlZiBIQVZFX0ZTVEFUCisgICAgICAgIHBvcyArPSBuOworI2VuZGlmCiAgICAgfQogCiAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KSA+IHRvdGFsKSB7CkBAIC05MjksNiArOTk3LDEyIEBACiBzdGF0aWMgY2hhciAqCiBtb2RlX3N0cmluZyhmaWxlaW8gKnNlbGYpCiB7CisgICAgaWYgKHNlbGYtPmNyZWF0ZWQpIHsKKyAgICAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKQorICAgICAgICAgICAgcmV0dXJuICJ4YisiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gInhiIjsKKyAgICB9CiAgICAgaWYgKHNlbGYtPnJlYWRhYmxlKSB7CiAgICAgICAgIGlmIChzZWxmLT53cml0YWJsZSkKICAgICAgICAgICAgIHJldHVybiAicmIrIjsKQEAgLTk0MiwxMiArMTAxNiwxMyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGZpbGVpb19yZXByKGZpbGVpbyAqc2VsZikKIHsKKyAgICBfUHlfSURFTlRJRklFUihuYW1lKTsKICAgICBQeU9iamVjdCAqbmFtZW9iaiwgKnJlczsKIAogICAgIGlmIChzZWxmLT5mZCA8IDApCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPF9pby5GaWxlSU8gW2Nsb3NlZF0+Iik7CiAKLSAgICBuYW1lb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKikgc2VsZiwgIm5hbWUiKTsKKyAgICBuYW1lb2JqID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKikgc2VsZiwgJlB5SWRfbmFtZSk7CiAgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtOTg3LDEzICsxMDYyLDE5IEBACiAKIAogUHlEb2NfU1RSVkFSKGZpbGVpb19kb2MsCi0iZmlsZShuYW1lOiBzdHJbLCBtb2RlOiBzdHJdKSAtPiBmaWxlIElPIG9iamVjdFxuIgorImZpbGUobmFtZTogc3RyWywgbW9kZTogc3RyXVssIG9wZW5lcjogTm9uZV0pIC0+IGZpbGUgSU8gb2JqZWN0XG4iCiAiXG4iCi0iT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InLCAndycgb3IgJ2EnIGZvciByZWFkaW5nIChkZWZhdWx0KSxcbiIKLSJ3cml0aW5nIG9yIGFwcGVuZGluZy4gIFRoZSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4iCi0id2hlbiBvcGVuZWQgZm9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOyBpdCB3aWxsIGJlIHRydW5jYXRlZCB3aGVuXG4iCi0ib3BlbmVkIGZvciB3cml0aW5nLiAgQWRkIGEgJysnIHRvIHRoZSBtb2RlIHRvIGFsbG93IHNpbXVsdGFuZW91c1xuIgotInJlYWRpbmcgYW5kIHdyaXRpbmcuIik7CisiT3BlbiBhIGZpbGUuICBUaGUgbW9kZSBjYW4gYmUgJ3InLCAndycsICd4JyBvciAnYScgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLFxuIgorIndyaXRpbmcsIGV4Y2x1c2l2ZSBjcmVhdGlvbiBvciBhcHBlbmRpbmcuICBUaGUgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaWYgaXRcbiIKKyJkb2Vzbid0IGV4aXN0IHdoZW4gb3BlbmVkIGZvciB3cml0aW5nIG9yIGFwcGVuZGluZzsgaXQgd2lsbCBiZSB0cnVuY2F0ZWRcbiIKKyJ3aGVuIG9wZW5lZCBmb3Igd3JpdGluZy4gIEEgYEZpbGVFeGlzdHNFcnJvcmAgd2lsbCBiZSByYWlzZWQgaWYgaXQgYWxyZWFkeVxuIgorImV4aXN0cyB3aGVuIG9wZW5lZCBmb3IgY3JlYXRpbmcuIE9wZW5pbmcgYSBmaWxlIGZvciBjcmVhdGluZyBpbXBsaWVzXG4iCisid3JpdGluZyBzbyB0aGlzIG1vZGUgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICd3Jy5BZGQgYSAnKycgdG8gdGhlIG1vZGVcbiIKKyJ0byBhbGxvdyBzaW11bHRhbmVvdXMgcmVhZGluZyBhbmQgd3JpdGluZy4gQSBjdXN0b20gb3BlbmVyIGNhbiBiZSB1c2VkIGJ5XG4iCisicGFzc2luZyBhIGNhbGxhYmxlIGFzICpvcGVuZXIqLiBUaGUgdW5kZXJseWluZyBmaWxlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaWxlXG4iCisib2JqZWN0IGlzIHRoZW4gb2J0YWluZWQgYnkgY2FsbGluZyBvcGVuZXIgd2l0aCAoKm5hbWUqLCAqZmxhZ3MqKS5cbiIKKyIqb3BlbmVyKiBtdXN0IHJldHVybiBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciAocGFzc2luZyBvcy5vcGVuIGFzICpvcGVuZXIqXG4iCisicmVzdWx0cyBpbiBmdW5jdGlvbmFsaXR5IHNpbWlsYXIgdG8gcGFzc2luZyBOb25lKS4iKTsKIAogUHlEb2NfU1RSVkFSKHJlYWRfZG9jLAogInJlYWQoc2l6ZTogaW50KSAtPiBieXRlcy4gIHJlYWQgYXQgbW9zdCBzaXplIGJ5dGVzLCByZXR1cm5lZCBhcyBieXRlcy5cbiIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2lvYmFzZS5jIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKaW5kZXggYmE4NjE0Ni4uYmFiYjAxOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vaW9iYXNlLmMKKysrIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKQEAgLTU5LDggKzU5LDkgQEAKICAgIG9mIHRoZSBJT0Jhc2Ugb2JqZWN0IHJhdGhlciB0aGFuIHRoZSB2aXJ0dWFsIGBjbG9zZWRgIGF0dHJpYnV0ZSBhcyByZXR1cm5lZAogICAgYnkgd2hhdGV2ZXIgc3ViY2xhc3MuICovCiAKK19QeV9JREVOVElGSUVSKF9fSU9CYXNlX2Nsb3NlZCk7CiAjZGVmaW5lIElTX0NMT1NFRChzZWxmKSBcCi0gICAgUHlPYmplY3RfSGFzQXR0clN0cmluZyhzZWxmLCAiX19JT0Jhc2VfY2xvc2VkIikKKyAgICBfUHlPYmplY3RfSGFzQXR0cklkKHNlbGYsICZQeUlkX19fSU9CYXNlX2Nsb3NlZCkKIAogLyogSW50ZXJuYWwgbWV0aG9kcyAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTk3LDcgKzk4LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpb2Jhc2VfdGVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInNlZWsiLCAiaWkiLCAwLCAxKTsKKyAgICBfUHlfSURFTlRJRklFUihzZWVrKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3NlZWssICJpaSIsIDAsIDEpOwogfQogCiBQeURvY19TVFJWQVIoaW9iYXNlX3RydW5jYXRlX2RvYywKQEAgLTE1NiwxOSArMTU5LDYgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKElTX0NMT1NFRChzZWxmKSk7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pb2Jhc2VfZ2V0X2RpY3QoUHlPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIoc2VsZik7Ci0gICAgUHlPYmplY3QgKmRpY3Q7Ci0gICAgYXNzZXJ0KGRpY3RwdHIpOwotICAgIGRpY3QgPSAqZGljdHB0cjsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICBkaWN0ID0gKmRpY3RwdHIgPSBQeURpY3RfTmV3KCk7Ci0gICAgUHlfWElOQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gZGljdDsKLX0KLQogUHlPYmplY3QgKgogX1B5SU9CYXNlX2NoZWNrX2Nsb3NlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0xOTAsMTIgKzE4MCwxMyBAQAogaW9iYXNlX2Nsb3NlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fSU9CYXNlX2Nsb3NlZCk7CiAKICAgICBpZiAoSVNfQ0xPU0VEKHNlbGYpKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYsIF9QeUlPX3N0cl9mbHVzaCwgTlVMTCk7Ci0gICAgUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiX19JT0Jhc2VfY2xvc2VkIiwgUHlfVHJ1ZSk7CisgICAgX1B5T2JqZWN0X1NldEF0dHJJZChzZWxmLCAmUHlJZF9fX0lPQmFzZV9jbG9zZWQsIFB5X1RydWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC00NjQsMTIgKzQ1NSwxNCBAQAogICAgIGludCBoYXNfcGVlayA9IDA7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciwgKnJlc3VsdDsKICAgICBQeV9zc2l6ZV90IG9sZF9zaXplID0gLTE7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CisgICAgX1B5X0lERU5USUZJRVIocGVlayk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpyZWFkbGluZSIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJmxpbWl0KSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhzZWxmLCAicGVlayIpKQorICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKHNlbGYsICZQeUlkX3BlZWspKQogICAgICAgICBoYXNfcGVlayA9IDE7CiAKICAgICBidWZmZXIgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKQEAgLTQ4MSw3ICs0NzQsNyBAQAogICAgICAgICBQeU9iamVjdCAqYjsKIAogICAgICAgICBpZiAoaGFzX3BlZWspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZWFkYWhlYWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJwZWVrIiwgImkiLCAxKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWFkYWhlYWQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX3BlZWssICJpIiwgMSk7CiAgICAgICAgICAgICBpZiAocmVhZGFoZWFkID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtNTIxLDcgKzUxNCw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYocmVhZGFoZWFkKTsKICAgICAgICAgfQogCi0gICAgICAgIGIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJyZWFkIiwgIm4iLCBucmVhZGFoZWFkKTsKKyAgICAgICAgYiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwgIm4iLCBucmVhZGFoZWFkKTsKICAgICAgICAgaWYgKGIgPT0gTlVMTCkgewogICAgICAgICAgICAgLyogTk9URTogUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FsbHMgUHlFcnJfQ2hlY2tTaWduYWxzKCkKICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtNjEzLDcgKzYwNiw5IEBACiAgICAgICAgIC8qIFhYWCBzcGVjaWFsLWNhc2luZyB0aGlzIG1hZGUgc2Vuc2UgaW4gdGhlIFB5dGhvbiB2ZXJzaW9uIGluIG9yZGVyCiAgICAgICAgICAgIHRvIHJlbW92ZSB0aGUgYnl0ZWNvZGUgaW50ZXJwcmV0YXRpb24gb3ZlcmhlYWQsIGJ1dCBpdCBjb3VsZAogICAgICAgICAgICBwcm9iYWJseSBiZSByZW1vdmVkIGhlcmUuICovCi0gICAgICAgIFB5T2JqZWN0ICpyZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImV4dGVuZCIsICJPIiwgc2VsZik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGV4dGVuZCk7CisgICAgICAgIFB5T2JqZWN0ICpyZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfZXh0ZW5kLCAiTyIsIHNlbGYpOworCiAgICAgICAgIGlmIChyZXQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTcxNiw3ICs3MTEsNyBAQAogfTsKIAogc3RhdGljIFB5R2V0U2V0RGVmIGlvYmFzZV9nZXRzZXRbXSA9IHsKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilpb2Jhc2VfZ2V0X2RpY3QsIE5VTEwsIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgTlVMTCwgTlVMTH0sCiAgICAgeyJjbG9zZWQiLCAoZ2V0dGVyKWlvYmFzZV9jbG9zZWRfZ2V0LCBOVUxMLCBOVUxMfSwKICAgICB7TlVMTH0KIH07CkBAIC03OTMsOCArNzg4LDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZiwgInJlYWRhbGwiLCBOVUxMKTsKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGFsbCk7CisKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZGFsbCwgTlVMTCk7CisgICAgfQogCiAgICAgLyogVE9ETzogYWxsb2NhdGUgYSBieXRlcyBvYmplY3QgZGlyZWN0bHkgaW5zdGVhZCBhbmQgbWFudWFsbHkgY29uc3RydWN0CiAgICAgICAgYSB3cml0YWJsZSBtZW1vcnl2aWV3IHBvaW50aW5nIHRvIGl0LiAqLwpAQCAtODM1LDggKzgzMyw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgd2hpbGUgKDEpIHsKLSAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJyZWFkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpIiwgREVGQVVMVF9CVUZGRVJfU0laRSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworICAgICAgICBQeU9iamVjdCAqZGF0YSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZiwgJlB5SWRfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpIiwgREVGQVVMVF9CVUZGRVJfU0laRSk7CiAgICAgICAgIGlmICghZGF0YSkgewogICAgICAgICAgICAgLyogTk9URTogUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FsbHMgUHlFcnJfQ2hlY2tTaWduYWxzKCkKICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYyBiL01vZHVsZXMvX2lvL3N0cmluZ2lvLmMKaW5kZXggMWYxZmE0MC4uOWQ3Mzg4NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vc3RyaW5naW8uYworKysgYi9Nb2R1bGVzL19pby9zdHJpbmdpby5jCkBAIC0xLDE5ICsxLDMyIEBACiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKyNpbmNsdWRlICJhY2N1LmgiCiAjaW5jbHVkZSAiX2lvbW9kdWxlLmgiCiAKIC8qIEltcGxlbWVudGF0aW9uIG5vdGU6IHRoZSBidWZmZXIgaXMgYWx3YXlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgbG9uZ2VyCiAgICB0aGFuIHRoZSBlbmNsb3NlZCBzdHJpbmcsIGZvciBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgX1B5SU9fZmluZF9saW5lX2VuZGluZy4KICovCiAKKyNkZWZpbmUgU1RBVEVfUkVBTElaRUQgMQorI2RlZmluZSBTVEFURV9BQ0NVTVVMQVRJTkcgMgorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5X1VOSUNPREUgKmJ1ZjsKKyAgICBQeV9VQ1M0ICpidWY7CiAgICAgUHlfc3NpemVfdCBwb3M7CiAgICAgUHlfc3NpemVfdCBzdHJpbmdfc2l6ZTsKICAgICBzaXplX3QgYnVmX3NpemU7CiAKKyAgICAvKiBUaGUgc3RyaW5naW8gb2JqZWN0IGNhbiBiZSBpbiB0d28gc3RhdGVzOiBhY2N1bXVsYXRpbmcgb3IgcmVhbGl6ZWQuCisgICAgICAgSW4gYWNjdW11bGF0aW5nIHN0YXRlLCB0aGUgaW50ZXJuYWwgYnVmZmVyIGNvbnRhaW5zIG5vdGhpbmcgYW5kCisgICAgICAgdGhlIGNvbnRlbnRzIGFyZSBnaXZlbiBieSB0aGUgZW1iZWRkZWQgX1B5QWNjdSBzdHJ1Y3R1cmUuCisgICAgICAgSW4gcmVhbGl6ZWQgc3RhdGUsIHRoZSBpbnRlcm5hbCBidWZmZXIgaXMgbWVhbmluZ2Z1bCBhbmQgdGhlCisgICAgICAgX1B5QWNjdSBpcyBkZXN0cm95ZWQuCisgICAgKi8KKyAgICBpbnQgc3RhdGU7CisgICAgX1B5QWNjdSBhY2N1OworCiAgICAgY2hhciBvazsgLyogaW5pdGlhbGl6ZWQ/ICovCiAgICAgY2hhciBjbG9zZWQ7CiAgICAgY2hhciByZWFkdW5pdmVyc2FsOwpAQCAtMjEsNyArMzQsNyBAQAogICAgIFB5T2JqZWN0ICpkZWNvZGVyOwogICAgIFB5T2JqZWN0ICpyZWFkbmw7CiAgICAgUHlPYmplY3QgKndyaXRlbmw7Ci0gICAgCisKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IHN0cmluZ2lvOwpAQCAtNDAsNiArNTMsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7IFwKICAgICB9CiAKKyNkZWZpbmUgRU5TVVJFX1JFQUxJWkVEKHNlbGYpIFwKKyAgICBpZiAocmVhbGl6ZShzZWxmKSA8IDApIHsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0KKwogUHlEb2NfU1RSVkFSKHN0cmluZ2lvX2RvYywKICAgICAiVGV4dCBJL08gaW1wbGVtZW50YXRpb24gdXNpbmcgYW4gaW4tbWVtb3J5IGJ1ZmZlci5cbiIKICAgICAiXG4iCkBAIC01Niw3ICs3NCw3IEBACiAgICAgLyogSGVyZSwgdW5zaWduZWQgdHlwZXMgYXJlIHVzZWQgdG8gYXZvaWQgZGVhbGluZyB3aXRoIHNpZ25lZCBpbnRlZ2VyCiAgICAgICAgb3ZlcmZsb3csIHdoaWNoIGlzIHVuZGVmaW5lZCBpbiBDLiAqLwogICAgIHNpemVfdCBhbGxvYyA9IHNlbGYtPmJ1Zl9zaXplOwotICAgIFB5X1VOSUNPREUgKm5ld19idWYgPSBOVUxMOworICAgIFB5X1VDUzQgKm5ld19idWYgPSBOVUxMOwogCiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKIApAQCAtODQsMTAgKzEwMiw5IEBACiAgICAgICAgIGFsbG9jID0gc2l6ZSArIDE7CiAgICAgfQogCi0gICAgaWYgKGFsbG9jID4gKChzaXplX3QpLTEpIC8gc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgIGlmIChhbGxvYyA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKFB5X1VDUzQpKQogICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgIG5ld19idWYgPSAoUHlfVU5JQ09ERSAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+YnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2MgKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgIG5ld19idWYgPSAoUHlfVUNTNCAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+YnVmLCBhbGxvYyAqIHNpemVvZihQeV9VQ1M0KSk7CiAgICAgaWYgKG5ld19idWYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xMDMsMTQgKzEyMCw2MiBAQAogICAgIHJldHVybiAtMTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21ha2VfaW50ZXJtZWRpYXRlKHN0cmluZ2lvICpzZWxmKQoreworICAgIFB5T2JqZWN0ICppbnRlcm1lZGlhdGUgPSBfUHlBY2N1X0ZpbmlzaCgmc2VsZi0+YWNjdSk7CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9SRUFMSVpFRDsKKyAgICBpZiAoaW50ZXJtZWRpYXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfUHlBY2N1X0luaXQoJnNlbGYtPmFjY3UpIHx8CisgICAgICAgIF9QeUFjY3VfQWNjdW11bGF0ZSgmc2VsZi0+YWNjdSwgaW50ZXJtZWRpYXRlKSkgeworICAgICAgICBQeV9ERUNSRUYoaW50ZXJtZWRpYXRlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNlbGYtPnN0YXRlID0gU1RBVEVfQUNDVU1VTEFUSU5HOworICAgIHJldHVybiBpbnRlcm1lZGlhdGU7Cit9CisKK3N0YXRpYyBpbnQKK3JlYWxpemUoc3RyaW5naW8gKnNlbGYpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKmludGVybWVkaWF0ZTsKKworICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBTVEFURV9SRUFMSVpFRCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgYXNzZXJ0KHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORyk7CisgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9SRUFMSVpFRDsKKworICAgIGludGVybWVkaWF0ZSA9IF9QeUFjY3VfRmluaXNoKCZzZWxmLT5hY2N1KTsKKyAgICBpZiAoaW50ZXJtZWRpYXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIEFwcGVuZCB0aGUgaW50ZXJtZWRpYXRlIHN0cmluZyB0byB0aGUgaW50ZXJuYWwgYnVmZmVyLgorICAgICAgIFRoZSBsZW5ndGggc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBjdXJyZW50IGN1cnNvciBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnRlcm1lZGlhdGUpOworICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIGxlbikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUHlVbmljb2RlX0FzVUNTNChpbnRlcm1lZGlhdGUsIHNlbGYtPmJ1ZiwgbGVuLCAwKSkgeworICAgICAgICBQeV9ERUNSRUYoaW50ZXJtZWRpYXRlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0RFQ1JFRihpbnRlcm1lZGlhdGUpOworICAgIHJldHVybiAwOworfQorCiAvKiBJbnRlcm5hbCByb3V0aW5lIGZvciB3cml0aW5nIGEgd2hvbGUgUHlVbmljb2RlIG9iamVjdCB0byB0aGUgYnVmZmVyIG9mIGEKICAgIFN0cmluZ0lPIG9iamVjdC4gUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIC0xIG9uIGVycm9yLiAqLwogc3RhdGljIFB5X3NzaXplX3QKIHdyaXRlX3N0cihzdHJpbmdpbyAqc2VsZiwgUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeV9VTklDT0RFICpzdHI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBOVUxMOworCiAgICAgYXNzZXJ0KHNlbGYtPmJ1ZiAhPSBOVUxMKTsKICAgICBhc3NlcnQoc2VsZi0+cG9zID49IDApOwogCkBAIC0xMzIsOSArMTk3LDExIEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soZGVjb2RlZCkpOwotICAgIHN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKGRlY29kZWQpOwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShkZWNvZGVkKTsKLQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZGVjb2RlZCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGRlY29kZWQpOwogICAgIGFzc2VydChsZW4gPj0gMCk7CiAKICAgICAvKiBUaGlzIG92ZXJmbG93IGNoZWNrIGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkuIEhvd2V2ZXIsIGl0IGF2b2lkcyB1cyB0bwpAQCAtMTQ1LDYgKzIxMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm5ldyBwb3NpdGlvbiB0b28gbGFyZ2UiKTsKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KKworICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBTVEFURV9BQ0NVTVVMQVRJTkcpIHsKKyAgICAgICAgaWYgKHNlbGYtPnN0cmluZ19zaXplID09IHNlbGYtPnBvcykgeworICAgICAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZSgmc2VsZi0+YWNjdSwgZGVjb2RlZCkpCisgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgZ290byBzdWNjZXNzOworICAgICAgICB9CisgICAgICAgIGlmIChyZWFsaXplKHNlbGYpKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KKwogICAgIGlmIChzZWxmLT5wb3MgKyBsZW4gPiBzZWxmLT5zdHJpbmdfc2l6ZSkgewogICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBzZWxmLT5wb3MgKyBsZW4pIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTE2MSwxOCArMjM5LDIyIEBACiAKICAgICAgICAgKi8KICAgICAgICAgbWVtc2V0KHNlbGYtPmJ1ZiArIHNlbGYtPnN0cmluZ19zaXplLCAnXDAnLAotICAgICAgICAgICAgICAgKHNlbGYtPnBvcyAtIHNlbGYtPnN0cmluZ19zaXplKSAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgICAgICAgICAoc2VsZi0+cG9zIC0gc2VsZi0+c3RyaW5nX3NpemUpICogc2l6ZW9mKFB5X1VDUzQpKTsKICAgICB9CiAKICAgICAvKiBDb3B5IHRoZSBkYXRhIHRvIHRoZSBpbnRlcm5hbCBidWZmZXIsIG92ZXJ3cml0aW5nIHNvbWUgb2YgdGhlCiAgICAgICAgZXhpc3RpbmcgZGF0YSBpZiBzZWxmLT5wb3MgPCBzZWxmLT5zdHJpbmdfc2l6ZS4gKi8KLSAgICBtZW1jcHkoc2VsZi0+YnVmICsgc2VsZi0+cG9zLCBzdHIsIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgc2VsZi0+cG9zICs9IGxlbjsKKyAgICBpZiAoIVB5VW5pY29kZV9Bc1VDUzQoZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YnVmICsgc2VsZi0+cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5idWZfc2l6ZSAtIHNlbGYtPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgMCkpCisgICAgICAgIGdvdG8gZmFpbDsKIAorc3VjY2VzczoKICAgICAvKiBTZXQgdGhlIG5ldyBsZW5ndGggb2YgdGhlIGludGVybmFsIHN0cmluZyBpZiBpdCBoYXMgY2hhbmdlZC4gKi8KLSAgICBpZiAoc2VsZi0+c3RyaW5nX3NpemUgPCBzZWxmLT5wb3MpIHsKKyAgICBzZWxmLT5wb3MgKz0gbGVuOworICAgIGlmIChzZWxmLT5zdHJpbmdfc2l6ZSA8IHNlbGYtPnBvcykKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBzZWxmLT5wb3M7Ci0gICAgfQogCiAgICAgUHlfREVDUkVGKGRlY29kZWQpOwogICAgIHJldHVybiAwOwpAQCAtMTkwLDcgKzI3MiwxMCBAQAogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNlbGYtPmJ1Ziwgc2VsZi0+c3RyaW5nX3NpemUpOworICAgIGlmIChzZWxmLT5zdGF0ZSA9PSBTVEFURV9BQ0NVTVVMQVRJTkcpCisgICAgICAgIHJldHVybiBtYWtlX2ludGVybWVkaWF0ZShzZWxmKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgc2VsZi0+YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplKTsKIH0KIAogUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3RlbGxfZG9jLApAQCAtMjE0LDcgKzI5OSw3IEBACiBzdHJpbmdpb19yZWFkKHN0cmluZ2lvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHNpemUsIG47Ci0gICAgUHlfVU5JQ09ERSAqb3V0cHV0OworICAgIFB5X1VDUzQgKm91dHB1dDsKICAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwpAQCAtMjQ1LDIxICszMzAsMjkgQEAKICAgICAgICAgICAgIHNpemUgPSAwOwogICAgIH0KIAorICAgIC8qIE9wdGltaXphdGlvbiBmb3Igc2VlaygwKTsgcmVhZCgpICovCisgICAgaWYgKHNlbGYtPnN0YXRlID09IFNUQVRFX0FDQ1VNVUxBVElORyAmJiBzZWxmLT5wb3MgPT0gMCAmJiBzaXplID09IG4pIHsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IG1ha2VfaW50ZXJtZWRpYXRlKHNlbGYpOworICAgICAgICBzZWxmLT5wb3MgPSBzZWxmLT5zdHJpbmdfc2l6ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBFTlNVUkVfUkVBTElaRUQoc2VsZik7CiAgICAgb3V0cHV0ID0gc2VsZi0+YnVmICsgc2VsZi0+cG9zOwogICAgIHNlbGYtPnBvcyArPSBzaXplOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUob3V0cHV0LCBzaXplKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgb3V0cHV0LCBzaXplKTsKIH0KIAogLyogSW50ZXJuYWwgaGVscGVyLCB1c2VkIGJ5IHN0cmluZ2lvX3JlYWRsaW5lIGFuZCBzdHJpbmdpb19pdGVybmV4dCAqLwogc3RhdGljIFB5T2JqZWN0ICoKIF9zdHJpbmdpb19yZWFkbGluZShzdHJpbmdpbyAqc2VsZiwgUHlfc3NpemVfdCBsaW1pdCkKIHsKLSAgICBQeV9VTklDT0RFICpzdGFydCwgKmVuZCwgb2xkX2NoYXI7CisgICAgUHlfVUNTNCAqc3RhcnQsICplbmQsIG9sZF9jaGFyOwogICAgIFB5X3NzaXplX3QgbGVuLCBjb25zdW1lZDsKIAogICAgIC8qIEluIGNhc2Ugb2Ygb3ZlcnNlZWssIHJldHVybiB0aGUgZW1wdHkgc3RyaW5nICovCiAgICAgaWYgKHNlbGYtPnBvcyA+PSBzZWxmLT5zdHJpbmdfc2l6ZSkKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAKICAgICBzdGFydCA9IHNlbGYtPmJ1ZiArIHNlbGYtPnBvczsKICAgICBpZiAobGltaXQgPCAwIHx8IGxpbWl0ID4gc2VsZi0+c3RyaW5nX3NpemUgLSBzZWxmLT5wb3MpCkBAIC0yNzAsMTQgKzM2MywxNCBAQAogICAgICplbmQgPSAnXDAnOwogICAgIGxlbiA9IF9QeUlPX2ZpbmRfbGluZV9lbmRpbmcoCiAgICAgICAgIHNlbGYtPnJlYWR0cmFuc2xhdGUsIHNlbGYtPnJlYWR1bml2ZXJzYWwsIHNlbGYtPnJlYWRubCwKLSAgICAgICAgc3RhcnQsIGVuZCwgJmNvbnN1bWVkKTsKKyAgICAgICAgUHlVbmljb2RlXzRCWVRFX0tJTkQsIChjaGFyKilzdGFydCwgKGNoYXIqKWVuZCwgJmNvbnN1bWVkKTsKICAgICAqZW5kID0gb2xkX2NoYXI7CiAgICAgLyogSWYgd2UgaGF2ZW4ndCBmb3VuZCBhbnkgbGluZSBlbmRpbmcsIHdlIGp1c3QgcmV0dXJuIGV2ZXJ5dGhpbmcKICAgICAgICAoYGNvbnN1bWVkYCBpcyBpZ25vcmVkKS4gKi8KICAgICBpZiAobGVuIDwgMCkKICAgICAgICAgbGVuID0gbGltaXQ7CiAgICAgc2VsZi0+cG9zICs9IGxlbjsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0YXJ0LCBsZW4pOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKFB5VW5pY29kZV80QllURV9LSU5ELCBzdGFydCwgbGVuKTsKIH0KIAogUHlEb2NfU1RSVkFSKHN0cmluZ2lvX3JlYWRsaW5lX2RvYywKQEAgLTI5NSw2ICszODgsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cmVhZGxpbmUiLCAmYXJnKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOworICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKIAogICAgIGlmIChQeU51bWJlcl9DaGVjayhhcmcpKSB7CiAgICAgICAgIGxpbWl0ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CkBAIC0zMTYsNiArNDEwLDcgQEAKIAogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKKyAgICBFTlNVUkVfUkVBTElaRUQoc2VsZik7CiAKICAgICBpZiAoUHlfVFlQRShzZWxmKSA9PSAmUHlTdHJpbmdJT19UeXBlKSB7CiAgICAgICAgIC8qIFNraXAgbWV0aG9kIGNhbGwgb3ZlcmhlYWQgZm9yIHNwZWVkICovCkBAIC0zMzcsNyArNDMyLDcgQEAKICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUobGluZSkgPT0gMCkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lKSA9PSAwKSB7CiAgICAgICAgIC8qIFJlYWNoZWQgRU9GICovCiAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zODYsNiArNDgxLDcgQEAKICAgICB9CiAKICAgICBpZiAoc2l6ZSA8IHNlbGYtPnN0cmluZ19zaXplKSB7CisgICAgICAgIEVOU1VSRV9SRUFMSVpFRChzZWxmKTsKICAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgc2l6ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHNlbGYtPnN0cmluZ19zaXplID0gc2l6ZTsKQEAgLTQ2Miw4ICs1NTgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAKICAgICBpZiAoc2l6ZSA+IDAgJiYgd3JpdGVfc3RyKHNlbGYsIG9iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ4NCw2ICs1ODIsNyBAQAogICAgIC8qIEZyZWUgdXAgc29tZSBtZW1vcnkgKi8KICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCAwKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeUFjY3VfRGVzdHJveSgmc2VsZi0+YWNjdSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZG5sKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZW5sKTsKICAgICBQeV9DTEVBUihzZWxmLT5kZWNvZGVyKTsKQEAgLTUxMyw2ICs2MTIsNyBAQAogICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1Zik7CiAgICAgICAgIHNlbGYtPmJ1ZiA9IE5VTEw7CiAgICAgfQorICAgIF9QeUFjY3VfRGVzdHJveSgmc2VsZi0+YWNjdSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZG5sKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZW5sKTsKICAgICBQeV9DTEVBUihzZWxmLT5kZWNvZGVyKTsKQEAgLTUzNSw3ICs2MzUsNyBAQAogICAgIC8qIHRwX2FsbG9jIGluaXRpYWxpemVzIGFsbCB0aGUgZmllbGRzIHRvIHplcm8uIFNvIHdlIGRvbid0IGhhdmUgdG8KICAgICAgICBpbml0aWFsaXplIHRoZW0gaGVyZS4gKi8KIAotICAgIHNlbGYtPmJ1ZiA9IChQeV9VTklDT0RFICopUHlNZW1fTWFsbG9jKDApOworICAgIHNlbGYtPmJ1ZiA9IChQeV9VQ1M0ICopUHlNZW1fTWFsbG9jKDApOwogICAgIGlmIChzZWxmLT5idWYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtNTUxLDYgKzY1MSw3IEBACiAgICAgUHlPYmplY3QgKnZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmV3bGluZV9vYmogPSBOVUxMOwogICAgIGNoYXIgKm5ld2xpbmUgPSAiXG4iOworICAgIFB5X3NzaXplX3QgdmFsdWVfbGVuOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPTzpfX2luaXRfXyIsIGt3bGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUsICZuZXdsaW5lX29iaikpCkBAIC01OTIsNiArNjkzLDcgQEAKIAogICAgIHNlbGYtPm9rID0gMDsKIAorICAgIF9QeUFjY3VfRGVzdHJveSgmc2VsZi0+YWNjdSk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+cmVhZG5sKTsKICAgICBQeV9DTEVBUihzZWxmLT53cml0ZW5sKTsKICAgICBQeV9DTEVBUihzZWxmLT5kZWNvZGVyKTsKQEAgLTYyOCwxOSArNzMwLDI3IEBACiAgICAgLyogTm93IGV2ZXJ5dGhpbmcgaXMgc2V0IHVwLCByZXNpemUgYnVmZmVyIHRvIHNpemUgb2YgaW5pdGlhbCB2YWx1ZSwKICAgICAgICBhbmQgY29weSBpdCAqLwogICAgIHNlbGYtPnN0cmluZ19zaXplID0gMDsKLSAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT0gUHlfTm9uZSkgewotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKHZhbHVlKTsKKyAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT0gUHlfTm9uZSkKKyAgICAgICAgdmFsdWVfbGVuID0gUHlVbmljb2RlX0dldExlbmd0aCh2YWx1ZSk7CisgICAgZWxzZQorICAgICAgICB2YWx1ZV9sZW4gPSAwOworICAgIGlmICh2YWx1ZV9sZW4gPiAwKSB7CiAgICAgICAgIC8qIFRoaXMgaXMgYSBoZXVyaXN0aWMsIGZvciBuZXdsaW5lIHRyYW5zbGF0aW9uIG1pZ2h0IGNoYW5nZQogICAgICAgICAgICB0aGUgc3RyaW5nIGxlbmd0aC4gKi8KLSAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgbGVuKSA8IDApCisgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc2VsZi0+c3RhdGUgPSBTVEFURV9SRUFMSVpFRDsKICAgICAgICAgc2VsZi0+cG9zID0gMDsKICAgICAgICAgaWYgKHdyaXRlX3N0cihzZWxmLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgLyogRW1wdHkgc3RyaW5naW8gb2JqZWN0LCB3ZSBjYW4gc3RhcnQgYnkgYWNjdW11bGF0aW5nICovCiAgICAgICAgIGlmIChyZXNpemVfYnVmZmVyKHNlbGYsIDApIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKF9QeUFjY3VfSW5pdCgmc2VsZi0+YWNjdSkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHNlbGYtPnN0YXRlID0gU1RBVEVfQUNDVU1VTEFUSU5HOwogICAgIH0KICAgICBzZWxmLT5wb3MgPSAwOwogCkBAIC03NjAsMTEgKzg3MCwyMiBAQAogICAgICAgIG9uY2UgYnkgX19pbml0X18uIFNvIHdlIGRvIG5vdCB0YWtlIGFueSBjaGFuY2UgYW5kIHJlcGxhY2Ugb2JqZWN0J3MKICAgICAgICBidWZmZXIgY29tcGxldGVseS4gKi8KICAgICB7Ci0gICAgICAgIFB5X1VOSUNPREUgKmJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApKTsKLSAgICAgICAgUHlfc3NpemVfdCBidWZzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApKTsKLSAgICAgICAgaWYgKHJlc2l6ZV9idWZmZXIoc2VsZiwgYnVmc2l6ZSkgPCAwKQorICAgICAgICBQeU9iamVjdCAqaXRlbTsKKyAgICAgICAgUHlfVUNTNCAqYnVmOworICAgICAgICBQeV9zc2l6ZV90IGJ1ZnNpemU7CisKKyAgICAgICAgaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oc3RhdGUsIDApOworICAgICAgICBidWYgPSBQeVVuaWNvZGVfQXNVQ1M0Q29weShpdGVtKTsKKyAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG1lbWNweShzZWxmLT5idWYsIGJ1ZiwgYnVmc2l6ZSAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIGJ1ZnNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKKworICAgICAgICBpZiAocmVzaXplX2J1ZmZlcihzZWxmLCBidWZzaXplKSA8IDApIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG1lbWNweShzZWxmLT5idWYsIGJ1ZiwgYnVmc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKICAgICAgICAgc2VsZi0+c3RyaW5nX3NpemUgPSBidWZzaXplOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCAyZmJiOGYzLi45NjQzNGE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtMTEsNiArMTEsMjcgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJfaW9tb2R1bGUuaCIKIAorX1B5X0lERU5USUZJRVIoY2xvc2UpOworX1B5X0lERU5USUZJRVIoX2RlYWxsb2Nfd2Fybik7CitfUHlfSURFTlRJRklFUihkZWNvZGUpOworX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKK19QeV9JREVOVElGSUVSKGZsdXNoKTsKK19QeV9JREVOVElGSUVSKGdldHByZWZlcnJlZGVuY29kaW5nKTsKK19QeV9JREVOVElGSUVSKGlzYXR0eSk7CitfUHlfSURFTlRJRklFUihtb2RlKTsKK19QeV9JREVOVElGSUVSKG5hbWUpOworX1B5X0lERU5USUZJRVIocmF3KTsKK19QeV9JREVOVElGSUVSKHJlYWQpOworX1B5X0lERU5USUZJRVIocmVhZDEpOworX1B5X0lERU5USUZJRVIocmVhZGFibGUpOworX1B5X0lERU5USUZJRVIocmVwbGFjZSk7CitfUHlfSURFTlRJRklFUihyZXNldCk7CitfUHlfSURFTlRJRklFUihzZWVrKTsKK19QeV9JREVOVElGSUVSKHNlZWthYmxlKTsKK19QeV9JREVOVElGSUVSKHNldHN0YXRlKTsKK19QeV9JREVOVElGSUVSKHRlbGwpOworX1B5X0lERU5USUZJRVIod3JpdGFibGUpOworCiAvKiBUZXh0SU9CYXNlICovCiAKIFB5RG9jX1NUUlZBUih0ZXh0aW9iYXNlX2RvYywKQEAgLTI3NCwxOCArMjk1LDI2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgb3V0cHV0X2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShvdXRwdXQpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob3V0cHV0KSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIG91dHB1dF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvdXRwdXQpOwogICAgIGlmIChzZWxmLT5wZW5kaW5nY3IgJiYgKGZpbmFsIHx8IG91dHB1dF9sZW4gPiAwKSkgewotICAgICAgICBQeV9VTklDT0RFICpvdXQ7Ci0gICAgICAgIFB5T2JqZWN0ICptb2RpZmllZCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBvdXRwdXRfbGVuICsgMSk7CisgICAgICAgIC8qIFByZWZpeCBvdXRwdXQgd2l0aCBDUiAqLworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkOworICAgICAgICBjaGFyICpvdXQ7CisKKyAgICAgICAgbW9kaWZpZWQgPSBQeVVuaWNvZGVfTmV3KG91dHB1dF9sZW4gKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG91dHB1dCkpOwogICAgICAgICBpZiAobW9kaWZpZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG1vZGlmaWVkKTsKLSAgICAgICAgb3V0WzBdID0gJ1xyJzsKLSAgICAgICAgbWVtY3B5KG91dCArIDEsIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCksCi0gICAgICAgICAgICAgICBvdXRwdXRfbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG1vZGlmaWVkKTsKKyAgICAgICAgb3V0ID0gUHlVbmljb2RlX0RBVEEobW9kaWZpZWQpOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgUHlVbmljb2RlX0RBVEEobW9kaWZpZWQpLCAwLCAnXHInKTsKKyAgICAgICAgbWVtY3B5KG91dCArIGtpbmQsIFB5VW5pY29kZV9EQVRBKG91dHB1dCksIGtpbmQgKiBvdXRwdXRfbGVuKTsKICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgIG91dHB1dCA9IG1vZGlmaWVkOworICAgICAgICBvdXRwdXQgPSBtb2RpZmllZDsgLyogb3V0cHV0IHJlbWFpbnMgcmVhZHkgKi8KICAgICAgICAgc2VsZi0+cGVuZGluZ2NyID0gMDsKICAgICAgICAgb3V0cHV0X2xlbisrOwogICAgIH0KQEAgLTI5NSwyMSArMzI0LDEzIEBACiAgICAgICovCiAgICAgaWYgKCFmaW5hbCkgewogICAgICAgICBpZiAob3V0cHV0X2xlbiA+IDAKLSAgICAgICAgICAgICYmIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dClbb3V0cHV0X2xlbiAtIDFdID09ICdccicpIHsKLQotICAgICAgICAgICAgaWYgKFB5X1JFRkNOVChvdXRwdXQpID09IDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmb3V0cHV0LCBvdXRwdXRfbGVuIC0gMSkgPCAwKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKm1vZGlmaWVkID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXRwdXQpLAotICAgICAgICAgICAgICAgICAgICBvdXRwdXRfbGVuIC0gMSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVkID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gbW9kaWZpZWQ7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAmJiBQeVVuaWNvZGVfUkVBRF9DSEFSKG91dHB1dCwgb3V0cHV0X2xlbiAtIDEpID09ICdccicpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICptb2RpZmllZCA9IFB5VW5pY29kZV9TdWJzdHJpbmcob3V0cHV0LCAwLCBvdXRwdXRfbGVuIC0xKTsKKyAgICAgICAgICAgIGlmIChtb2RpZmllZCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKKyAgICAgICAgICAgIG91dHB1dCA9IG1vZGlmaWVkOwogICAgICAgICAgICAgc2VsZi0+cGVuZGluZ2NyID0gMTsKICAgICAgICAgfQogICAgIH0KQEAgLTMxNywxMyArMzM4LDE1IEBACiAgICAgLyogUmVjb3JkIHdoaWNoIG5ld2xpbmVzIGFyZSByZWFkIGFuZCBkbyBuZXdsaW5lIHRyYW5zbGF0aW9uIGlmIGRlc2lyZWQsCiAgICAgICAgYWxsIGluIG9uZSBwYXNzLiAqLwogICAgIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqaW5fc3RyOworICAgICAgICB2b2lkICppbl9zdHI7CiAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICBpbnQgc2Vlbm5sID0gc2VsZi0+c2Vlbm5sOwogICAgICAgICBpbnQgb25seV9sZiA9IDA7CisgICAgICAgIGludCBraW5kOwogCi0gICAgICAgIGluX3N0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCk7Ci0gICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShvdXRwdXQpOworICAgICAgICBpbl9zdHIgPSBQeVVuaWNvZGVfREFUQShvdXRwdXQpOworICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvdXRwdXQpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQob3V0cHV0KTsKIAogICAgICAgICBpZiAobGVuID09IDApCiAgICAgICAgICAgICByZXR1cm4gb3V0cHV0OwpAQCAtMzMyLDcgKzM1NSw3IEBACiAgICAgICAgICAgIGZvciB0aGUgXHIgKmJ5dGUqIHdpdGggdGhlIGxpYmMncyBvcHRpbWl6ZWQgbWVtY2hyLgogICAgICAgICAgICAqLwogICAgICAgICBpZiAoc2Vlbm5sID09IFNFRU5fTEYgfHwgc2Vlbm5sID09IDApIHsKLSAgICAgICAgICAgIG9ubHlfbGYgPSAobWVtY2hyKGluX3N0ciwgJ1xyJywgbGVuICogc2l6ZW9mKFB5X1VOSUNPREUpKSA9PSBOVUxMKTsKKyAgICAgICAgICAgIG9ubHlfbGYgPSAobWVtY2hyKGluX3N0ciwgJ1xyJywga2luZCAqIGxlbikgPT0gTlVMTCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAob25seV9sZikgewpAQCAtMzQwLDUxICszNjMsNTEgQEAKICAgICAgICAgICAgICAgICh0aGVyZSdzIG5vdGhpbmcgZWxzZSB0byBiZSBkb25lLCBldmVuIHdoZW4gaW4gdHJhbnNsYXRpb24gbW9kZSkKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoc2Vlbm5sID09IDAgJiYKLSAgICAgICAgICAgICAgICBtZW1jaHIoaW5fc3RyLCAnXG4nLCBsZW4gKiBzaXplb2YoUHlfVU5JQ09ERSkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpzLCAqZW5kOwotICAgICAgICAgICAgICAgIHMgPSBpbl9zdHI7Ci0gICAgICAgICAgICAgICAgZW5kID0gaW5fc3RyICsgbGVuOwotICAgICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOwotICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCpzID4gJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpzKys7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5ubCB8PSBTRUVOX0xGOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgbWVtY2hyKGluX3N0ciwgJ1xuJywga2luZCAqIGxlbikgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9MRjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjOworICAgICAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBsb29wIGZvciBub24tY29udHJvbCBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgaW5fc3RyLCBpKSA+ICdcbicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaSsrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9MRjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAocyA+IGVuZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIEZpbmlzaGVkOiB3ZSBoYXZlIHNjYW5uZWQgZm9yIG5ld2xpbmVzLCBhbmQgbm9uZSBvZiB0aGVtCiAgICAgICAgICAgICAgICBuZWVkIHRyYW5zbGF0aW5nICovCiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIXNlbGYtPnRyYW5zbGF0ZSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcywgKmVuZDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7CiAgICAgICAgICAgICAvKiBXZSBoYXZlIGFscmVhZHkgc2VlbiBhbGwgbmV3bGluZSB0eXBlcywgbm8gbmVlZCB0byBzY2FuIGFnYWluICovCiAgICAgICAgICAgICBpZiAoc2Vlbm5sID09IFNFRU5fQUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZW5kc2NhbjsKLSAgICAgICAgICAgIHMgPSBpbl9zdHI7Ci0gICAgICAgICAgICBlbmQgPSBpbl9zdHIgKyBsZW47CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzsKICAgICAgICAgICAgICAgICAvKiBGYXN0IGxvb3AgZm9yIG5vbi1jb250cm9sIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoKnMgPiAnXHInKQotICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgYyA9ICpzKys7CisgICAgICAgICAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaSkgPiAnXHInKQorICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaSsrKTsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXG4nKQogICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9MRjsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdccicpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCpzID09ICdcbicpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGluX3N0ciwgaSkgPT0gJ1xuJykgewogICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbm5sIHw9IFNFRU5fQ1JMRjsKLSAgICAgICAgICAgICAgICAgICAgICAgIHMrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHMgPiBlbmQpCisgICAgICAgICAgICAgICAgaWYgKGkgPj0gbGVuKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpZiAoc2Vlbm5sID09IFNFRU5fQUxMKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTM5Myw2MSArNDE2LDUxIEBACiAgICAgICAgICAgICA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdHJhbnNsYXRlZCA9IE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICpvdXRfc3RyOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqaW4sICpvdXQsICplbmQ7Ci0gICAgICAgICAgICBpZiAoUHlfUkVGQ05UKG91dHB1dCkgIT0gMSkgewotICAgICAgICAgICAgICAgIC8qIFdlIGNvdWxkIHRyeSB0byBvcHRpbWl6ZSB0aGlzIHNvIHRoYXQgd2Ugb25seSBkbyBhIGNvcHkKLSAgICAgICAgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIHNvbWV0aGluZyB0byB0cmFuc2xhdGUuIE9uIHRoZSBvdGhlciBoYW5kLAotICAgICAgICAgICAgICAgICAgIG1vc3QgZGVjb2RlcnMgc2hvdWxkIG9ubHkgb3V0cHV0IG5vbi1zaGFyZWQgc3RyaW5ncywgaS5lLgotICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uIGlzIGRvbmUgaW4gcGxhY2UuICovCi0gICAgICAgICAgICAgICAgdHJhbnNsYXRlZCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBsZW4pOwotICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KFB5X1JFRkNOVCh0cmFuc2xhdGVkKSA9PSAxKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoUHlVbmljb2RlX0FTX1VOSUNPREUodHJhbnNsYXRlZCksCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG91dHB1dCksCi0gICAgICAgICAgICAgICAgICAgICAgIGxlbiAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgICAgICB2b2lkICp0cmFuc2xhdGVkOworICAgICAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChvdXRwdXQpOworICAgICAgICAgICAgdm9pZCAqaW5fc3RyID0gUHlVbmljb2RlX0RBVEEob3V0cHV0KTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaW4sIG91dDsKKyAgICAgICAgICAgIC8qIFhYWDogUHJldmlvdXMgaW4tcGxhY2UgdHJhbnNsYXRpb24gaGVyZSBpcyBkaXNhYmxlZCBhcworICAgICAgICAgICAgICAgcmVzaXppbmcgaXMgbm90IHBvc3NpYmxlIGFueW1vcmUgKi8KKyAgICAgICAgICAgIC8qIFdlIGNvdWxkIHRyeSB0byBvcHRpbWl6ZSB0aGlzIHNvIHRoYXQgd2Ugb25seSBkbyBhIGNvcHkKKyAgICAgICAgICAgICAgIHdoZW4gdGhlcmUgaXMgc29tZXRoaW5nIHRvIHRyYW5zbGF0ZS4gT24gdGhlIG90aGVyIGhhbmQsCisgICAgICAgICAgICAgICB3ZSBhbHJlYWR5IGtub3cgdGhlcmUgaXMgYSBcciBieXRlLCBzbyBjaGFuY2VzIGFyZSBoaWdoCisgICAgICAgICAgICAgICB0aGF0IHNvbWV0aGluZyBuZWVkcyB0byBiZSBkb25lLiAqLworICAgICAgICAgICAgdHJhbnNsYXRlZCA9IFB5TWVtX01hbGxvYyhraW5kICogbGVuKTsKKyAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0cmFuc2xhdGVkID0gb3V0cHV0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0X3N0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHRyYW5zbGF0ZWQpOwotICAgICAgICAgICAgaW4gPSBpbl9zdHI7Ci0gICAgICAgICAgICBvdXQgPSBvdXRfc3RyOwotICAgICAgICAgICAgZW5kID0gaW5fc3RyICsgbGVuOworICAgICAgICAgICAgaW4gPSBvdXQgPSAwOwogICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgYzsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGM7CiAgICAgICAgICAgICAgICAgLyogRmFzdCBsb29wIGZvciBub24tY29udHJvbCBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKChjID0gKmluKyspID4gJ1xyJykKLSAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gYzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoKGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbl9zdHIsIGluKyspKSA+ICdccicpCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCB0cmFuc2xhdGVkLCBvdXQrKywgYyk7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykgewotICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSBjOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgdHJhbnNsYXRlZCwgb3V0KyssIGMpOwogICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9MRjsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChjID09ICdccicpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCppbiA9PSAnXG4nKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBpbl9zdHIsIGluKSA9PSAnXG4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbisrOwogICAgICAgICAgICAgICAgICAgICAgICAgc2Vlbm5sIHw9IFNFRU5fQ1JMRjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWVubmwgfD0gU0VFTl9DUjsKLSAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gJ1xuJzsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIHRyYW5zbGF0ZWQsIG91dCsrLCAnXG4nKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpbiA+IGVuZCkKKyAgICAgICAgICAgICAgICBpZiAoaW4gPiBsZW4pCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICpvdXQrKyA9IGM7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIHRyYW5zbGF0ZWQsIG91dCsrLCBjKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkICE9IG91dHB1dCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOwotICAgICAgICAgICAgICAgIG91dHB1dCA9IHRyYW5zbGF0ZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAob3V0IC0gb3V0X3N0ciAhPSBsZW4pIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmb3V0cHV0LCBvdXQgLSBvdXRfc3RyKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKKyAgICAgICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoa2luZCwgdHJhbnNsYXRlZCwgb3V0KTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUodHJhbnNsYXRlZCk7CisgICAgICAgICAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBzZWxmLT5zZWVubmwgfD0gc2Vlbm5sOwogICAgIH0KQEAgLTUxNCw4ICs1MjcsOCBAQAogICAgIGZsYWcgPj49IDE7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlciAhPSBQeV9Ob25lKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2V0c3RhdGUiLCAiKChPSykpIiwgYnVmZmVyLCBmbGFnKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfc2V0c3RhdGUsICIoKE9LKSkiLCBidWZmZXIsIGZsYWcpOwogICAgIGVsc2UKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiB9CkBAIC02MTcsNyArNjMwLDcgQEAKICAgICAiQ2hhcmFjdGVyIGFuZCBsaW5lIGJhc2VkIGxheWVyIG92ZXIgYSBCdWZmZXJlZElPQmFzZSBvYmplY3QsIGJ1ZmZlci5cbiIKICAgICAiXG4iCiAgICAgImVuY29kaW5nIGdpdmVzIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB0aGF0IHRoZSBzdHJlYW0gd2lsbCBiZVxuIgotICAgICJkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nLlxuIgorICAgICJkZWNvZGVkIG9yIGVuY29kZWQgd2l0aC4gSXQgZGVmYXVsdHMgdG8gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKS5cbiIKICAgICAiXG4iCiAgICAgImVycm9ycyBkZXRlcm1pbmVzIHRoZSBzdHJpY3RuZXNzIG9mIGVuY29kaW5nIGFuZCBkZWNvZGluZyAoc2VlIHRoZVxuIgogICAgICJjb2RlY3MucmVnaXN0ZXIpIGFuZCBkZWZhdWx0cyB0byBcInN0cmljdFwiLlxuIgpAQCAtNjg3LDEyICs3MDAsMTYgQEAKICAgICBQeU9iamVjdCAqcGVuZGluZ19ieXRlczsgICAgICAgLyogbGlzdCBvZiBieXRlcyBvYmplY3RzIHdhaXRpbmcgdG8gYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdHRlbiwgb3IgTlVMTCAqLwogICAgIFB5X3NzaXplX3QgcGVuZGluZ19ieXRlc19jb3VudDsKLSAgICBQeU9iamVjdCAqc25hcHNob3Q7CisKICAgICAvKiBzbmFwc2hvdCBpcyBlaXRoZXIgTm9uZSwgb3IgYSB0dXBsZSAoZGVjX2ZsYWdzLCBuZXh0X2lucHV0KSB3aGVyZQogICAgICAqIGRlY19mbGFncyBpcyB0aGUgc2Vjb25kIChpbnRlZ2VyKSBpdGVtIG9mIHRoZSBkZWNvZGVyIHN0YXRlIGFuZAogICAgICAqIG5leHRfaW5wdXQgaXMgdGhlIGNodW5rIG9mIGlucHV0IGJ5dGVzIHRoYXQgY29tZXMgbmV4dCBhZnRlciB0aGUKICAgICAgKiBzbmFwc2hvdCBwb2ludC4gIFdlIHVzZSB0aGlzIHRvIHJlY29uc3RydWN0IGRlY29kZXIgc3RhdGVzIGluIHRlbGwoKS4KICAgICAgKi8KKyAgICBQeU9iamVjdCAqc25hcHNob3Q7CisgICAgLyogQnl0ZXMtdG8tY2hhcmFjdGVycyByYXRpbyBmb3IgdGhlIGN1cnJlbnQgY2h1bmsuIFNlcnZlcyBhcyBpbnB1dCBmb3IKKyAgICAgICB0aGUgaGV1cmlzdGljIGluIHRlbGwoKS4gKi8KKyAgICBkb3VibGUgYjJjcmF0aW87CiAKICAgICAvKiBDYWNoZSByYXcgb2JqZWN0IGlmIGl0J3MgYSBGaWxlSU8gb2JqZWN0ICovCiAgICAgUHlPYmplY3QgKnJhdzsKQEAgLTcwOCwyNSArNzI1LDIxIEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXNjaWlfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVBU0NJSShQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycykpOworICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodGV4dCwgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1dGYxNmJlX2VuY29kZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICp0ZXh0KQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAxKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmMTZsZV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjE2KFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgLTEpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzQwLDI1ICs3NTMsMjIgQEAKICAgICAgICAgcmV0dXJuIHV0ZjE2bGVfZW5jb2RlKHNlbGYsIHRleHQpOwogI2VuZGlmCiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlVVRGMTYoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIDApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdXRmMzJiZV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAxKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHV0ZjMybGVfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIC0xKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycyksIC0xKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTc3MiwyNSArNzgyLDIwIEBACiAgICAgICAgIHJldHVybiB1dGYzMmxlX2VuY29kZShzZWxmLCB0ZXh0KTsKICNlbmRpZgogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjMyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSwgMCk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfRW5jb2RlVVRGMzIodGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpLCAwKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHV0ZjhfZW5jb2RlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKnRleHQpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYtPmVycm9ycykpOworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh0ZXh0LCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmLT5lcnJvcnMpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIGxhdGluMV9lbmNvZGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqdGV4dCkKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUxhdGluMShQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZXh0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodGV4dCwgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+ZXJyb3JzKSk7CiB9CiAKIC8qIE1hcCBub3JtYWxpemVkIGVuY29kaW5nIG5hbWVzIG9udG8gdGhlIHNwZWNpYWxpemVkIGVuY29kaW5nIGZ1bmNzICovCkBAIC04NTksMTEgKzg2NCwxMiBAQAogICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9IDA7CiAgICAgc2VsZi0+cGVuZGluZ19ieXRlc19jb3VudCA9IDA7CiAgICAgc2VsZi0+ZW5jb2RlZnVuYyA9IE5VTEw7CisgICAgc2VsZi0+YjJjcmF0aW8gPSAwLjA7CiAKICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewogICAgICAgICAvKiBUcnkgb3MuZGV2aWNlX2VuY29kaW5nKGZpbGVubykgKi8KICAgICAgICAgUHlPYmplY3QgKmZpbGVubzsKLSAgICAgICAgZmlsZW5vID0gUHlPYmplY3RfQ2FsbE1ldGhvZChidWZmZXIsICJmaWxlbm8iLCBOVUxMKTsKKyAgICAgICAgZmlsZW5vID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgICAgIC8qIElnbm9yZSBvbmx5IEF0dHJpYnV0ZUVycm9yIGFuZCBVbnN1cHBvcnRlZE9wZXJhdGlvbiAqLwogICAgICAgICBpZiAoZmlsZW5vID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSB8fApAQCAtODc1LDkgKzg4MSwxMyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHN0YXRlLT5vc19tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRldmljZV9lbmNvZGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk4iLCBmaWxlbm8pOworICAgICAgICAgICAgaW50IGZkID0gKGludCkgUHlMb25nX0FzTG9uZyhmaWxlbm8pOworICAgICAgICAgICAgUHlfREVDUkVGKGZpbGVubyk7CisgICAgICAgICAgICBpZiAoZmQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNlbGYtPmVuY29kaW5nID0gX1B5X2RldmljZV9lbmNvZGluZyhmZCk7CiAgICAgICAgICAgICBpZiAoc2VsZi0+ZW5jb2RpbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgZWxzZSBpZiAoIVB5VW5pY29kZV9DaGVjayhzZWxmLT5lbmNvZGluZykpCkBAIC04OTQsOCArOTA0LDggQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICB1c2VfbG9jYWxlOgotICAgICAgICAgICAgc2VsZi0+ZW5jb2RpbmcgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgICAgIHN0YXRlLT5sb2NhbGVfbW9kdWxlLCAiZ2V0cHJlZmVycmVkZW5jb2RpbmciLCBOVUxMKTsKKyAgICAgICAgICAgIHNlbGYtPmVuY29kaW5nID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bG9jYWxlX21vZHVsZSwgJlB5SWRfZ2V0cHJlZmVycmVkZW5jb2RpbmcsICJPIiwgUHlfRmFsc2UpOwogICAgICAgICAgICAgaWYgKHNlbGYtPmVuY29kaW5nID09IE5VTEwpIHsKICAgICAgICAgICAgICAgY2F0Y2hfSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgLyoKQEAgLTk2MCw3ICs5NzAsNyBAQAogI2VuZGlmCiAKICAgICAvKiBCdWlsZCB0aGUgZGVjb2RlciBvYmplY3QgKi8KLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgInJlYWRhYmxlIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3JlYWRhYmxlLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtOTg1LDcgKzk5NSw3IEBACiAgICAgfQogCiAgICAgLyogQnVpbGQgdGhlIGVuY29kZXIgb2JqZWN0ICovCi0gICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZChidWZmZXIsICJ3cml0YWJsZSIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYnVmZmVyLCAmUHlJZF93cml0YWJsZSwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIHIgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTEwMDIsNyArMTAxMiw3IEBACiAgICAgICAgIGNpID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKICAgICAgICAgaWYgKGNpID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICByZXMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNpLCAibmFtZSIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNpLCAmUHlJZF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKGNpKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCkBAIC0xMDI5LDcgKzEwMzksNyBAQAogICAgIGlmIChQeV9UWVBFKGJ1ZmZlcikgPT0gJlB5QnVmZmVyZWRSZWFkZXJfVHlwZSB8fAogICAgICAgICBQeV9UWVBFKGJ1ZmZlcikgPT0gJlB5QnVmZmVyZWRXcml0ZXJfVHlwZSB8fAogICAgICAgICBQeV9UWVBFKGJ1ZmZlcikgPT0gJlB5QnVmZmVyZWRSYW5kb21fVHlwZSkgewotICAgICAgICByYXcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGJ1ZmZlciwgInJhdyIpOworICAgICAgICByYXcgPSBfUHlPYmplY3RfR2V0QXR0cklkKGJ1ZmZlciwgJlB5SWRfcmF3KTsKICAgICAgICAgLyogQ2FjaGUgdGhlIHJhdyBGaWxlSU8gb2JqZWN0IHRvIHNwZWVkIHVwICdjbG9zZWQnIGNoZWNrcyAqLwogICAgICAgICBpZiAocmF3ID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTEwNDMsNyArMTA1Myw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYocmF3KTsKICAgICB9CiAKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGJ1ZmZlciwgInNlZWthYmxlIiwgTlVMTCk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3NlZWthYmxlLCBOVUxMKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgciA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtMTA1Miw3ICsxMDYyLDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICBzZWxmLT5zZWVrYWJsZSA9IHNlbGYtPnRlbGxpbmcgPSByOwogCi0gICAgc2VsZi0+aGFzX3JlYWQxID0gUHlPYmplY3RfSGFzQXR0clN0cmluZyhidWZmZXIsICJyZWFkMSIpOworICAgIHNlbGYtPmhhc19yZWFkMSA9IF9QeU9iamVjdF9IYXNBdHRySWQoYnVmZmVyLCAmUHlJZF9yZWFkMSk7CiAKICAgICBzZWxmLT5lbmNvZGluZ19zdGFydF9vZl9zdHJlYW0gPSAwOwogICAgIGlmIChzZWxmLT5zZWVrYWJsZSAmJiBzZWxmLT5lbmNvZGVyKSB7CkBAIC0xMjE4LDE4ICsxMjI4LDYgQEAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgUHlfVU5JQ09ERSAqKQotZmluZGNoYXIoY29uc3QgUHlfVU5JQ09ERSAqcywgUHlfc3NpemVfdCBzaXplLCBQeV9VTklDT0RFIGNoKQotewotICAgIC8qIGxpa2Ugd2NzY2hyLCBidXQgZG9lc24ndCBzdG9wIGF0IE5VTEwgY2hhcmFjdGVycyAqLwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIGlmICgqcyA9PSBjaCkKLSAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICBzKys7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCiAvKiBGbHVzaCB0aGUgaW50ZXJuYWwgd3JpdGUgYnVmZmVyLiBUaGlzIGRvZXNuJ3QgZXhwbGljaXRseSBmbHVzaCB0aGUKICAgIHVuZGVybHlpbmcgYnVmZmVyZWQgb2JqZWN0LCB0aG91Z2guICovCiBzdGF0aWMgaW50CkBAIC0xMjc0LDYgKzEyNzIsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHRleHQpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIENIRUNLX0NMT1NFRChzZWxmKTsKIAogICAgIGlmIChzZWxmLT5lbmNvZGVyID09IE5VTEwpCkBAIC0xMjgxLDE2ICsxMjgyLDE1IEBACiAKICAgICBQeV9JTkNSRUYodGV4dCk7CiAKLSAgICB0ZXh0bGVuID0gUHlVbmljb2RlX0dldFNpemUodGV4dCk7CisgICAgdGV4dGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRleHQpOwogCiAgICAgaWYgKChzZWxmLT53cml0ZXRyYW5zbGF0ZSAmJiBzZWxmLT53cml0ZW5sICE9IE5VTEwpIHx8IHNlbGYtPmxpbmVfYnVmZmVyaW5nKQotICAgICAgICBpZiAoZmluZGNoYXIoUHlVbmljb2RlX0FTX1VOSUNPREUodGV4dCksCi0gICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodGV4dCksICdcbicpKQorICAgICAgICBpZiAoUHlVbmljb2RlX0ZpbmRDaGFyKHRleHQsICdcbicsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRleHQpLCAxKSAhPSAtMSkKICAgICAgICAgICAgIGhhc2xmID0gMTsKIAogICAgIGlmIChoYXNsZiAmJiBzZWxmLT53cml0ZXRyYW5zbGF0ZSAmJiBzZWxmLT53cml0ZW5sICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm5ld3RleHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgdGV4dCwgInJlcGxhY2UiLCAic3MiLCAiXG4iLCBzZWxmLT53cml0ZW5sKTsKKyAgICAgICAgUHlPYmplY3QgKm5ld3RleHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgdGV4dCwgJlB5SWRfcmVwbGFjZSwgInNzIiwgIlxuIiwgc2VsZi0+d3JpdGVubCk7CiAgICAgICAgIFB5X0RFQ1JFRih0ZXh0KTsKICAgICAgICAgaWYgKG5ld3RleHQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTMwMSw4ICsxMzAxLDcgQEAKICAgICAgICAgbmVlZGZsdXNoID0gMTsKICAgICBlbHNlIGlmIChzZWxmLT5saW5lX2J1ZmZlcmluZyAmJgogICAgICAgICAoaGFzbGYgfHwKLSAgICAgICAgIGZpbmRjaGFyKFB5VW5pY29kZV9BU19VTklDT0RFKHRleHQpLAotICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHRleHQpLCAnXHInKSkpCisgICAgICAgICBQeVVuaWNvZGVfRmluZENoYXIodGV4dCwgJ1xyJywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgodGV4dCksIDEpICE9IC0xKSkKICAgICAgICAgbmVlZGZsdXNoID0gMTsKIAogICAgIC8qIFhYWCBXaGF0IGlmIHdlIHdlcmUganVzdCByZWFkaW5nPyAqLwpAQCAtMTM0Niw3ICsxMzQ1LDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5zbmFwc2hvdCk7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlcikgewotICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsICJyZXNldCIsIE5VTEwpOworICAgICAgICByZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3Jlc2V0LCBOVUxMKTsKICAgICAgICAgaWYgKHJldCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwpAQCAtMTM3NCw3ICsxMzczLDggQEAKICAgICBpZiAoc2VsZi0+ZGVjb2RlZF9jaGFycyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgYXZhaWwgPSAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYtPmRlY29kZWRfY2hhcnMpCisgICAgLyogZGVjb2RlZF9jaGFycyBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIuICovCisgICAgYXZhaWwgPSAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZi0+ZGVjb2RlZF9jaGFycykKICAgICAgICAgICAgICAtIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCk7CiAKICAgICBhc3NlcnQoYXZhaWwgPj0gMCk7CkBAIC0xMzgzLDkgKzEzODMsOSBAQAogICAgICAgICBuID0gYXZhaWw7CiAKICAgICBpZiAoc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkID4gMCB8fCBuIDwgYXZhaWwpIHsKLSAgICAgICAgY2hhcnMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmLT5kZWNvZGVkX2NoYXJzKQotICAgICAgICAgICAgKyBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQsIG4pOworICAgICAgICBjaGFycyA9IFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZi0+ZGVjb2RlZF9jaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCArIG4pOwogICAgICAgICBpZiAoY2hhcnMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE0MDEsMTIgKzE0MDEsMTMgQEAKIC8qIFJlYWQgYW5kIGRlY29kZSB0aGUgbmV4dCBjaHVuayBvZiBkYXRhIGZyb20gdGhlIEJ1ZmZlcmVkUmVhZGVyLgogICovCiBzdGF0aWMgaW50Ci10ZXh0aW93cmFwcGVyX3JlYWRfY2h1bmsodGV4dGlvICpzZWxmKQordGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHRleHRpbyAqc2VsZiwgUHlfc3NpemVfdCBzaXplX2hpbnQpCiB7CiAgICAgUHlPYmplY3QgKmRlY19idWZmZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkZWNfZmxhZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICppbnB1dF9jaHVuayA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRlY29kZWRfY2hhcnMsICpjaHVua19zaXplOworICAgIFB5X3NzaXplX3QgbmJ5dGVzLCBuY2hhcnM7CiAgICAgaW50IGVvZjsKIAogICAgIC8qIFRoZSByZXR1cm4gdmFsdWUgaXMgVHJ1ZSB1bmxlc3MgRU9GIHdhcyByZWFjaGVkLiAgVGhlIGRlY29kZWQgc3RyaW5nIGlzCkBAIC0xNDQyLDcgKzE0NDMsMTAgQEAKICAgICB9CiAKICAgICAvKiBSZWFkIGEgY2h1bmssIGRlY29kZSBpdCwgYW5kIHB1dCB0aGUgcmVzdWx0IGluIHNlbGYuX2RlY29kZWRfY2hhcnMuICovCi0gICAgY2h1bmtfc2l6ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT5jaHVua19zaXplKTsKKyAgICBpZiAoc2l6ZV9oaW50ID4gMCkgeworICAgICAgICBzaXplX2hpbnQgPSAoUHlfc3NpemVfdCkoUHlfTUFYKHNlbGYtPmIyY3JhdGlvLCAxLjApICogc2l6ZV9oaW50KTsKKyAgICB9CisgICAgY2h1bmtfc2l6ZSA9IFB5TG9uZ19Gcm9tU3NpemVfdChQeV9NQVgoc2VsZi0+Y2h1bmtfc2l6ZSwgc2l6ZV9oaW50KSk7CiAgICAgaWYgKGNodW5rX3NpemUgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogICAgIGlucHV0X2NodW5rID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+YnVmZmVyLApAQCAtMTQ1Myw3ICsxNDU3LDggQEAKICAgICAgICAgZ290byBmYWlsOwogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGlucHV0X2NodW5rKSk7CiAKLSAgICBlb2YgPSAoUHlCeXRlc19TaXplKGlucHV0X2NodW5rKSA9PSAwKTsKKyAgICBuYnl0ZXMgPSBQeUJ5dGVzX1NpemUoaW5wdXRfY2h1bmspOworICAgIGVvZiA9IChuYnl0ZXMgPT0gMCk7CiAKICAgICBpZiAoUHlfVFlQRShzZWxmLT5kZWNvZGVyKSA9PSAmUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX1R5cGUpIHsKICAgICAgICAgZGVjb2RlZF9jaGFycyA9IF9QeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfZGVjb2RlKApAQCAtMTQ2Nyw4ICsxNDcyLDE1IEBACiAgICAgLyogVE9ETyBzYW5pdHkgY2hlY2s6IGlzaW5zdGFuY2UoZGVjb2RlZF9jaGFycywgdW5pY29kZSkgKi8KICAgICBpZiAoZGVjb2RlZF9jaGFycyA9PSBOVUxMKQogICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShkZWNvZGVkX2NoYXJzKSA9PSAtMSkKKyAgICAgICAgZ290byBmYWlsOwogICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgZGVjb2RlZF9jaGFycyk7Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShkZWNvZGVkX2NoYXJzKSA+IDApCisgICAgbmNoYXJzID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoZGVjb2RlZF9jaGFycyk7CisgICAgaWYgKG5jaGFycyA+IDApCisgICAgICAgIHNlbGYtPmIyY3JhdGlvID0gKGRvdWJsZSkgbmJ5dGVzIC8gbmNoYXJzOworICAgIGVsc2UKKyAgICAgICAgc2VsZi0+YjJjcmF0aW8gPSAwLjA7CisgICAgaWYgKG5jaGFycyA+IDApCiAgICAgICAgIGVvZiA9IDA7CiAKICAgICBpZiAoc2VsZi0+dGVsbGluZykgewpAQCAtMTUxNSwxMiArMTUyNywxNyBAQAogCiAgICAgaWYgKG4gPCAwKSB7CiAgICAgICAgIC8qIFJlYWQgZXZlcnl0aGluZyAqLwotICAgICAgICBQeU9iamVjdCAqYnl0ZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgInJlYWQiLCBOVUxMKTsKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3JlYWQsIE5VTEwpOwogICAgICAgICBQeU9iamVjdCAqZGVjb2RlZDsKICAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGRlY29kZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzZWxmLT5kZWNvZGVyLCBfUHlJT19zdHJfZGVjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXMsIFB5X1RydWUsIE5VTEwpOworCisgICAgICAgIGlmIChQeV9UWVBFKHNlbGYtPmRlY29kZXIpID09ICZQeUluY3JlbWVudGFsTmV3bGluZURlY29kZXJfVHlwZSkKKyAgICAgICAgICAgIGRlY29kZWQgPSBfUHlJbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyX2RlY29kZShzZWxmLT5kZWNvZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLCAxKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVjb2RlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKAorICAgICAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsIF9QeUlPX3N0cl9kZWNvZGUsIGJ5dGVzLCBQeV9UcnVlLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICAgICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTE1NDYsMTEgKzE1NjMsMTMgQEAKICAgICAgICAgcmVzdWx0ID0gdGV4dGlvd3JhcHBlcl9nZXRfZGVjb2RlZF9jaGFycyhzZWxmLCBuKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVzdWx0KSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmVtYWluaW5nIC09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAKICAgICAgICAgLyogS2VlcCByZWFkaW5nIGNodW5rcyB1bnRpbCB3ZSBoYXZlIG4gY2hhcmFjdGVycyB0byByZXR1cm4gKi8KICAgICAgICAgd2hpbGUgKHJlbWFpbmluZyA+IDApIHsKLSAgICAgICAgICAgIHJlcyA9IHRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayhzZWxmKTsKKyAgICAgICAgICAgIHJlcyA9IHRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayhzZWxmLCByZW1haW5pbmcpOwogICAgICAgICAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtMTU2NiwxMyArMTU4NSwxNCBAQAogICAgICAgICAgICAgICAgIGlmIChjaHVua3MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpID4gMCAmJgorICAgICAgICAgICAgICAgIFB5TGlzdF9BcHBlbmQoY2h1bmtzLCByZXN1bHQpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJlc3VsdCA9IHRleHRpb3dyYXBwZXJfZ2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgcmVtYWluaW5nKTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCk7CisgICAgICAgICAgICByZW1haW5pbmcgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKICAgICAgICAgfQogICAgICAgICBpZiAoY2h1bmtzICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBQeUxpc3RfQXBwZW5kKGNodW5rcywgcmVzdWx0KSA8IDApCkBAIC0xNTkyLDM2ICsxNjEyLDM5IEBACiB9CiAKIAotLyogTk9URTogYGVuZGAgbXVzdCBwb2ludCB0byB0aGUgcmVhbCBlbmQgb2YgdGhlIFB5X1VOSUNPREUgc3RvcmFnZSwKKy8qIE5PVEU6IGBlbmRgIG11c3QgcG9pbnQgdG8gdGhlIHJlYWwgZW5kIG9mIHRoZSBQeV9VQ1M0IHN0b3JhZ2UsCiAgICB0aGF0IGlzIHRvIHRoZSBOVUwgY2hhcmFjdGVyLiBPdGhlcndpc2UgdGhlIGZ1bmN0aW9uIHdpbGwgcHJvZHVjZQogICAgaW5jb3JyZWN0IHJlc3VsdHMuICovCi1zdGF0aWMgUHlfVU5JQ09ERSAqCi1maW5kX2NvbnRyb2xfY2hhcihQeV9VTklDT0RFICpzdGFydCwgUHlfVU5JQ09ERSAqZW5kLCBQeV9VTklDT0RFIGNoKQorc3RhdGljIGNoYXIgKgorZmluZF9jb250cm9sX2NoYXIoaW50IGtpbmQsIGNoYXIgKnMsIGNoYXIgKmVuZCwgUHlfVUNTNCBjaCkKIHsKLSAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgYXNzZXJ0KGNoIDwgMjU2KTsKKyAgICAgICAgcmV0dXJuIChjaGFyICopIG1lbWNocigodm9pZCAqKSBzLCAoY2hhcikgY2gsIGVuZCAtIHMpOworICAgIH0KICAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHdoaWxlICgqcyA+IGNoKQotICAgICAgICAgICAgcysrOwotICAgICAgICBpZiAoKnMgPT0gY2gpCisgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKSA+IGNoKQorICAgICAgICAgICAgcyArPSBraW5kOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPT0gY2gpCiAgICAgICAgICAgICByZXR1cm4gczsKICAgICAgICAgaWYgKHMgPT0gZW5kKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHMrKzsKKyAgICAgICAgcyArPSBraW5kOwogICAgIH0KIH0KIAogUHlfc3NpemVfdAogX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICBpbnQgdHJhbnNsYXRlZCwgaW50IHVuaXZlcnNhbCwgUHlPYmplY3QgKnJlYWRubCwKLSAgICBQeV9VTklDT0RFICpzdGFydCwgUHlfVU5JQ09ERSAqZW5kLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKyAgICBpbnQga2luZCwgY2hhciAqc3RhcnQsIGNoYXIgKmVuZCwgUHlfc3NpemVfdCAqY29uc3VtZWQpCiB7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBlbmQgLSBzdGFydDsKKyAgICBQeV9zc2l6ZV90IGxlbiA9ICgoY2hhciopZW5kIC0gKGNoYXIqKXN0YXJ0KS9raW5kOwogCiAgICAgaWYgKHRyYW5zbGF0ZWQpIHsKICAgICAgICAgLyogTmV3bGluZXMgYXJlIGFscmVhZHkgdHJhbnNsYXRlZCwgb25seSBzZWFyY2ggZm9yIFxuICovCi0gICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHN0YXJ0LCBlbmQsICdcbicpOworICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzdGFydCwgZW5kLCAnXG4nKTsKICAgICAgICAgaWYgKHBvcyAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIHBvcyAtIHN0YXJ0ICsgMTsKKyAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2MzEsNjMgKzE2NTQsNjYgQEAKICAgICAgICAgLyogVW5pdmVyc2FsIG5ld2xpbmUgc2VhcmNoLiBGaW5kIGFueSBvZiBcciwgXHJcbiwgXG4KICAgICAgICAgICogVGhlIGRlY29kZXIgZW5zdXJlcyB0aGF0IFxyXG4gYXJlIG5vdCBzcGxpdCBpbiB0d28gcGllY2VzCiAgICAgICAgICAqLwotICAgICAgICBQeV9VTklDT0RFICpzID0gc3RhcnQ7CisgICAgICAgIGNoYXIgKnMgPSBzdGFydDsKICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDsKKyAgICAgICAgICAgIFB5X1VDUzQgY2g7CiAgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIG5vbi1jb250cm9sIGNoYXJzLiBUaGUgbG9vcCBhbHdheXMgZW5kcwotICAgICAgICAgICAgICAgc2luY2UgdGhlIFB5X1VOSUNPREUgc3RvcmFnZSBpcyBOVUwtdGVybWluYXRlZC4gKi8KLSAgICAgICAgICAgIHdoaWxlICgqcyA+ICdccicpCi0gICAgICAgICAgICAgICAgcysrOworICAgICAgICAgICAgICAgc2luY2UgdGhlIFVuaWNvZGUgc3RyaW5nIGlzIE5VTC10ZXJtaW5hdGVkLiAqLworICAgICAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHMsIDApID4gJ1xyJykKKyAgICAgICAgICAgICAgICBzICs9IGtpbmQ7CiAgICAgICAgICAgICBpZiAocyA+PSBlbmQpIHsKICAgICAgICAgICAgICAgICAqY29uc3VtZWQgPSBsZW47CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAqcysrOworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBzLCAwKTsKKyAgICAgICAgICAgIHMgKz0ga2luZDsKICAgICAgICAgICAgIGlmIChjaCA9PSAnXG4nKQotICAgICAgICAgICAgICAgIHJldHVybiBzIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIChzIC0gc3RhcnQpL2tpbmQ7CiAgICAgICAgICAgICBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgICAgIGlmICgqcyA9PSAnXG4nKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyAtIHN0YXJ0ICsgMTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgcywgMCkgPT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzIC0gc3RhcnQpL2tpbmQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIE5vbi11bml2ZXJzYWwgbW9kZS4gKi8KLSAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlYWRubCk7Ci0gICAgICAgIFB5X1VOSUNPREUgKm5sID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVhZG5sKTsKKyAgICAgICAgUHlfc3NpemVfdCByZWFkbmxfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVhZG5sKTsKKyAgICAgICAgY2hhciAqbmwgPSBQeVVuaWNvZGVfREFUQShyZWFkbmwpOworICAgICAgICAvKiBBc3N1bWUgdGhhdCByZWFkbmwgaXMgYW4gQVNDSUkgY2hhcmFjdGVyLiAqLworICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQocmVhZG5sKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CiAgICAgICAgIGlmIChyZWFkbmxfbGVuID09IDEpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKHN0YXJ0LCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIGNoYXIgKnBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIHN0YXJ0LCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgIGlmIChwb3MgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4gcG9zIC0gc3RhcnQgKyAxOworICAgICAgICAgICAgICAgIHJldHVybiAocG9zIC0gc3RhcnQpL2tpbmQgKyAxOwogICAgICAgICAgICAgKmNvbnN1bWVkID0gbGVuOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcyA9IHN0YXJ0OwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqZSA9IGVuZCAtIHJlYWRubF9sZW4gKyAxOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqcG9zOworICAgICAgICAgICAgY2hhciAqcyA9IHN0YXJ0OworICAgICAgICAgICAgY2hhciAqZSA9IGVuZCAtIChyZWFkbmxfbGVuIC0gMSkqa2luZDsKKyAgICAgICAgICAgIGNoYXIgKnBvczsKICAgICAgICAgICAgIGlmIChlIDwgcykKICAgICAgICAgICAgICAgICBlID0gczsKICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgewogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihzLCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgICAgICBjaGFyICpwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihraW5kLCBzLCBlbmQsIG5sWzBdKTsKICAgICAgICAgICAgICAgICBpZiAocG9zID09IE5VTEwgfHwgcG9zID49IGUpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCByZWFkbmxfbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHBvc1tpXSAhPSBubFtpXSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHBvcywgaSkgIT0gbmxbaV0pCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGkgPT0gcmVhZG5sX2xlbikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcyAtIHN0YXJ0ICsgcmVhZG5sX2xlbjsKLSAgICAgICAgICAgICAgICBzID0gcG9zICsgMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChwb3MgLSBzdGFydCkva2luZCArIHJlYWRubF9sZW47CisgICAgICAgICAgICAgICAgcyA9IHBvcyArIGtpbmQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb3MgPSBmaW5kX2NvbnRyb2xfY2hhcihlLCBlbmQsIG5sWzBdKTsKKyAgICAgICAgICAgIHBvcyA9IGZpbmRfY29udHJvbF9jaGFyKGtpbmQsIGUsIGVuZCwgbmxbMF0pOwogICAgICAgICAgICAgaWYgKHBvcyA9PSBOVUxMKQogICAgICAgICAgICAgICAgICpjb25zdW1lZCA9IGxlbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqY29uc3VtZWQgPSBwb3MgLSBzdGFydDsKKyAgICAgICAgICAgICAgICAqY29uc3VtZWQgPSAocG9zIC0gc3RhcnQpL2tpbmQ7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNzA4LDE1ICsxNzM0LDE2IEBACiAgICAgY2h1bmtlZCA9IDA7CiAKICAgICB3aGlsZSAoMSkgewotICAgICAgICBQeV9VTklDT0RFICpwdHI7CisgICAgICAgIGNoYXIgKnB0cjsKICAgICAgICAgUHlfc3NpemVfdCBsaW5lX2xlbjsKKyAgICAgICAgaW50IGtpbmQ7CiAgICAgICAgIFB5X3NzaXplX3QgY29uc3VtZWQgPSAwOwogCiAgICAgICAgIC8qIEZpcnN0LCBnZXQgc29tZSBkYXRhIGlmIG5lY2Vzc2FyeSAqLwogICAgICAgICByZXMgPSAxOwogICAgICAgICB3aGlsZSAoIXNlbGYtPmRlY29kZWRfY2hhcnMgfHwKLSAgICAgICAgICAgICAgICFQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+ZGVjb2RlZF9jaGFycykpIHsKLSAgICAgICAgICAgIHJlcyA9IHRleHRpb3dyYXBwZXJfcmVhZF9jaHVuayhzZWxmKTsKKyAgICAgICAgICAgICAgICFQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5kZWNvZGVkX2NoYXJzKSkgeworICAgICAgICAgICAgcmVzID0gdGV4dGlvd3JhcHBlcl9yZWFkX2NodW5rKHNlbGYsIDApOwogICAgICAgICAgICAgaWYgKHJlcyA8IDApIHsKICAgICAgICAgICAgICAgICAvKiBOT1RFOiBQeUVycl9TZXRGcm9tRXJybm8oKSBjYWxscyBQeUVycl9DaGVja1NpZ25hbHMoKQogICAgICAgICAgICAgICAgICAgIHdoZW4gRUlOVFIgb2NjdXJzIHNvIHdlIG5lZWRuJ3QgZG8gaXQgb3Vyc2VsdmVzLiAqLwpAQCAtMTc0NiwxOCArMTc3MywyNCBAQAogICAgICAgICAgICAgYXNzZXJ0KHNlbGYtPmRlY29kZWRfY2hhcnNfdXNlZCA9PSAwKTsKICAgICAgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfQ29uY2F0KHJlbWFpbmluZywgc2VsZi0+ZGVjb2RlZF9jaGFycyk7CiAgICAgICAgICAgICBzdGFydCA9IDA7Ci0gICAgICAgICAgICBvZmZzZXRfdG9fYnVmZmVyID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlbWFpbmluZyk7CisgICAgICAgICAgICBvZmZzZXRfdG9fYnVmZmVyID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVtYWluaW5nKTsKICAgICAgICAgICAgIFB5X0NMRUFSKHJlbWFpbmluZyk7CiAgICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGxpbmUpID09IC0xKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAotICAgICAgICBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaW5lKTsKLSAgICAgICAgbGluZV9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobGluZSk7CisgICAgICAgIHB0ciA9IFB5VW5pY29kZV9EQVRBKGxpbmUpOworICAgICAgICBsaW5lX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobGluZSk7CiAKICAgICAgICAgZW5kcG9zID0gX1B5SU9fZmluZF9saW5lX2VuZGluZygKICAgICAgICAgICAgIHNlbGYtPnJlYWR0cmFuc2xhdGUsIHNlbGYtPnJlYWR1bml2ZXJzYWwsIHNlbGYtPnJlYWRubCwKLSAgICAgICAgICAgIHB0ciArIHN0YXJ0LCBwdHIgKyBsaW5lX2xlbiwgJmNvbnN1bWVkKTsKKyAgICAgICAgICAgIGtpbmQsCisgICAgICAgICAgICBwdHIgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICBwdHIgKyBraW5kICogbGluZV9sZW4sCisgICAgICAgICAgICAmY29uc3VtZWQpOwogICAgICAgICBpZiAoZW5kcG9zID49IDApIHsKICAgICAgICAgICAgIGVuZHBvcyArPSBzdGFydDsKICAgICAgICAgICAgIGlmIChsaW1pdCA+PSAwICYmIChlbmRwb3MgLSBzdGFydCkgKyBjaHVua2VkID49IGxpbWl0KQpAQCAtMTc4MSwyMSArMTgxNCwyMCBAQAogICAgICAgICAgICAgICAgIGlmIChjaHVua3MgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocHRyICsgc3RhcnQsIGVuZHBvcyAtIHN0YXJ0KTsKKyAgICAgICAgICAgIHMgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmUsIHN0YXJ0LCBlbmRwb3MpOwogICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY2h1bmtzLCBzKSA8IDApIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNodW5rZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKHMpOworICAgICAgICAgICAgY2h1bmtlZCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgfQogICAgICAgICAvKiBUaGVyZSBtYXkgYmUgc29tZSByZW1haW5pbmcgYnl0ZXMgd2UnbGwgaGF2ZSB0byBwcmVwZW5kIHRvIHRoZQogICAgICAgICAgICBuZXh0IGNodW5rIG9mIGRhdGEgKi8KICAgICAgICAgaWYgKGVuZHBvcyA8IGxpbmVfbGVuKSB7Ci0gICAgICAgICAgICByZW1haW5pbmcgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgICAgIHB0ciArIGVuZHBvcywgbGluZV9sZW4gLSBlbmRwb3MpOworICAgICAgICAgICAgcmVtYWluaW5nID0gUHlVbmljb2RlX1N1YnN0cmluZyhsaW5lLCBlbmRwb3MsIGxpbmVfbGVuKTsKICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CkBAIC0xODA3LDE5ICsxODM5LDEyIEBACiAgICAgaWYgKGxpbmUgIT0gTlVMTCkgewogICAgICAgICAvKiBPdXIgbGluZSBlbmRzIGluIHRoZSBjdXJyZW50IGJ1ZmZlciAqLwogICAgICAgICBzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQgPSBlbmRwb3MgLSBvZmZzZXRfdG9fYnVmZmVyOwotICAgICAgICBpZiAoc3RhcnQgPiAwIHx8IGVuZHBvcyA8IFB5VW5pY29kZV9HRVRfU0laRShsaW5lKSkgewotICAgICAgICAgICAgaWYgKHN0YXJ0ID09IDAgJiYgUHlfUkVGQ05UKGxpbmUpID09IDEpIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmbGluZSwgZW5kcG9zKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGxpbmUpICsgc3RhcnQsIGVuZHBvcyAtIHN0YXJ0KTsKLSAgICAgICAgICAgICAgICBQeV9DTEVBUihsaW5lKTsKLSAgICAgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGxpbmUgPSBzOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPiAwIHx8IGVuZHBvcyA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmUpKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcyA9IFB5VW5pY29kZV9TdWJzdHJpbmcobGluZSwgc3RhcnQsIGVuZHBvcyk7CisgICAgICAgICAgICBQeV9DTEVBUihsaW5lKTsKKyAgICAgICAgICAgIGlmIChzID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGxpbmUgPSBzOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChyZW1haW5pbmcgIT0gTlVMTCkgewpAQCAtMTgzMywxNiArMTg1OCwyMCBAQAogICAgICAgICBQeV9DTEVBUihyZW1haW5pbmcpOwogICAgIH0KICAgICBpZiAoY2h1bmtzICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKGxpbmUgIT0gTlVMTCAmJiBQeUxpc3RfQXBwZW5kKGNodW5rcywgbGluZSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgUHlfQ0xFQVIobGluZSk7CisgICAgICAgIGlmIChsaW5lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGNodW5rcywgbGluZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgICAgIH0KICAgICAgICAgbGluZSA9IFB5VW5pY29kZV9Kb2luKF9QeUlPX2VtcHR5X3N0ciwgY2h1bmtzKTsKICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIFB5X0RFQ1JFRihjaHVua3MpOworICAgICAgICBQeV9DTEVBUihjaHVua3MpOwogICAgIH0KLSAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOworICAgIGlmIChsaW5lID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKF9QeUlPX2VtcHR5X3N0cik7CisgICAgICAgIGxpbmUgPSBfUHlJT19lbXB0eV9zdHI7CisgICAgfQogCiAgICAgcmV0dXJuIGxpbmU7CiAKQEAgLTE5NjUsOCArMTk5NCw4IEBACiAgICAgaWYgKGNvb2tpZS0+c3RhcnRfcG9zID09IDAgJiYgY29va2llLT5kZWNfZmxhZ3MgPT0gMCkKICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwgX1B5SU9fc3RyX3Jlc2V0LCBOVUxMKTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCh5aSkpIiwgIiIsIGNvb2tpZS0+ZGVjX2ZsYWdzKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCh5aSkpIiwgIiIsIGNvb2tpZS0+ZGVjX2ZsYWdzKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKQEAgLTIwMzAsMTMgKzIwNTksMTIgQEAKICAgICAgICAgICogc3luYyB0aGUgdW5kZXJseWluZyBidWZmZXIgd2l0aCB0aGUgY3VycmVudCBwb3NpdGlvbi4KICAgICAgICAgICovCiAgICAgICAgIFB5X0RFQ1JFRihjb29raWVPYmopOwotICAgICAgICBjb29raWVPYmogPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJ0ZWxsIiwgTlVMTCk7CisgICAgICAgIGNvb2tpZU9iaiA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfdGVsbCwgTlVMTCk7CiAgICAgICAgIGlmIChjb29raWVPYmogPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgZWxzZSBpZiAod2hlbmNlID09IDIpIHsKICAgICAgICAgLyogc2VlayByZWxhdGl2ZSB0byBlbmQgb2YgZmlsZSAqLwotCiAgICAgICAgIGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChjb29raWVPYmosIF9QeUlPX3plcm8sIFB5X0VRKTsKICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICBnb3RvIGZhaWw7CkBAIC0yMDQ2LDcgKzIwNzQsNyBAQAogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CiAKLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiZmx1c2giLCBOVUxMKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0yMDU0LDEzICsyMDgyLDEzIEBACiAgICAgICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgTlVMTCk7CiAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKICAgICAgICAgaWYgKHNlbGYtPmRlY29kZXIpIHsKLSAgICAgICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInJlc2V0IiwgTlVMTCk7CisgICAgICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmRlY29kZXIsICZQeUlkX3Jlc2V0LCBOVUxMKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAic2VlayIsICJpaSIsIDAsIDIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfc2VlaywgImlpIiwgMCwgMik7CiAgICAgICAgIFB5X1hERUNSRUYoY29va2llT2JqKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CkBAIC0yMTEzLDggKzIxNDEsOCBAQAogCiAgICAgaWYgKGNvb2tpZS5jaGFyc190b19za2lwKSB7CiAgICAgICAgIC8qIEp1c3QgbGlrZSBfcmVhZF9jaHVuaywgZmVlZCB0aGUgZGVjb2RlciBhbmQgc2F2ZSBhIHNuYXBzaG90LiAqLwotICAgICAgICBQeU9iamVjdCAqaW5wdXRfY2h1bmsgPSBQeU9iamVjdF9DYWxsTWV0aG9kKAotICAgICAgICAgICAgc2VsZi0+YnVmZmVyLCAicmVhZCIsICJpIiwgY29va2llLmJ5dGVzX3RvX2ZlZWQpOworICAgICAgICBQeU9iamVjdCAqaW5wdXRfY2h1bmsgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgc2VsZi0+YnVmZmVyLCAmUHlJZF9yZWFkLCAiaSIsIGNvb2tpZS5ieXRlc190b19mZWVkKTsKICAgICAgICAgUHlPYmplY3QgKmRlY29kZWQ7CiAKICAgICAgICAgaWYgKGlucHV0X2NodW5rID09IE5VTEwpCkBAIC0yMTI4LDE2ICsyMTU2LDIwIEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KIAotICAgICAgICBkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5kZWNvZGVyLCAiZGVjb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9pIiwgaW5wdXRfY2h1bmssIChpbnQpY29va2llLm5lZWRfZW9mKTsKKyAgICAgICAgZGVjb2RlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfZGVjb2RlLAorICAgICAgICAgICAgIk9pIiwgaW5wdXRfY2h1bmssIChpbnQpY29va2llLm5lZWRfZW9mKTsKIAogICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGRlY29kZWQpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KIAogICAgICAgICB0ZXh0aW93cmFwcGVyX3NldF9kZWNvZGVkX2NoYXJzKHNlbGYsIGRlY29kZWQpOwogCiAgICAgICAgIC8qIFNraXAgY2hhcnNfdG9fc2tpcCBvZiB0aGUgZGVjb2RlZCBjaGFyYWN0ZXJzLiAqLwotICAgICAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoc2VsZi0+ZGVjb2RlZF9jaGFycykgPCBjb29raWUuY2hhcnNfdG9fc2tpcCkgeworICAgICAgICBpZiAoUHlVbmljb2RlX0dldExlbmd0aChzZWxmLT5kZWNvZGVkX2NoYXJzKSA8IGNvb2tpZS5jaGFyc190b19za2lwKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImNhbid0IHJlc3RvcmUgbG9naWNhbCBmaWxlIHBvc2l0aW9uIik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KQEAgLTIxNjksOCArMjIwMSwxMiBAQAogICAgIGNvb2tpZV90eXBlIGNvb2tpZSA9IHswLDAsMCwwLDB9OwogICAgIFB5T2JqZWN0ICpuZXh0X2lucHV0OwogICAgIFB5X3NzaXplX3QgY2hhcnNfdG9fc2tpcCwgY2hhcnNfZGVjb2RlZDsKKyAgICBQeV9zc2l6ZV90IHNraXBfYnl0ZXMsIHNraXBfYmFjazsKICAgICBQeU9iamVjdCAqc2F2ZWRfc3RhdGUgPSBOVUxMOwogICAgIGNoYXIgKmlucHV0LCAqaW5wdXRfZW5kOworICAgIGNoYXIgKmRlY19idWZmZXI7CisgICAgUHlfc3NpemVfdCBkZWNfYnVmZmVyX2xlbjsKKyAgICBpbnQgZGVjX2ZsYWdzOwogCiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7CiAgICAgQ0hFQ0tfQ0xPU0VEKHNlbGYpOwpAQCAtMjE4NywxNyArMjIyMywxNyBAQAogCiAgICAgaWYgKF90ZXh0aW93cmFwcGVyX3dyaXRlZmx1c2goc2VsZikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKChQeU9iamVjdCAqKXNlbGYsICJmbHVzaCIsIE5VTEwpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogICAgIFB5X0RFQ1JFRihyZXMpOwogCi0gICAgcG9zb2JqID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJ0ZWxsIiwgTlVMTCk7CisgICAgcG9zb2JqID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3RlbGwsIE5VTEwpOwogICAgIGlmIChwb3NvYmogPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIgPT0gTlVMTCB8fCBzZWxmLT5zbmFwc2hvdCA9PSBOVUxMKSB7Ci0gICAgICAgIGFzc2VydCAoc2VsZi0+ZGVjb2RlZF9jaGFycyA9PSBOVUxMIHx8IFB5VW5pY29kZV9HZXRTaXplKHNlbGYtPmRlY29kZWRfY2hhcnMpID09IDApOworICAgICAgICBhc3NlcnQgKHNlbGYtPmRlY29kZWRfY2hhcnMgPT0gTlVMTCB8fCBQeVVuaWNvZGVfR2V0TGVuZ3RoKHNlbGYtPmRlY29kZWRfY2hhcnMpID09IDApOwogICAgICAgICByZXR1cm4gcG9zb2JqOwogICAgIH0KIApAQCAtMjIwNiw2ICsyMjQyLDcgQEAKICNlbHNlCiAgICAgY29va2llLnN0YXJ0X3BvcyA9IFB5TG9uZ19Bc0xvbmcocG9zb2JqKTsKICNlbmRpZgorICAgIFB5X0RFQ1JFRihwb3NvYmopOwogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGZhaWw7CiAKQEAgLTIyMjAsNTcgKzIyNTcsOTkgQEAKICAgICAvKiBIb3cgbWFueSBkZWNvZGVkIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIHVzZWQgdXAgc2luY2UgdGhlIHNuYXBzaG90PyAqLwogICAgIGlmIChzZWxmLT5kZWNvZGVkX2NoYXJzX3VzZWQgPT0gMCkgIHsKICAgICAgICAgLyogV2UgaGF2ZW4ndCBtb3ZlZCBmcm9tIHRoZSBzbmFwc2hvdCBwb2ludC4gKi8KLSAgICAgICAgUHlfREVDUkVGKHBvc29iaik7CiAgICAgICAgIHJldHVybiB0ZXh0aW93cmFwcGVyX2J1aWxkX2Nvb2tpZSgmY29va2llKTsKICAgICB9CiAKICAgICBjaGFyc190b19za2lwID0gc2VsZi0+ZGVjb2RlZF9jaGFyc191c2VkOwogCi0gICAgLyogU3RhcnRpbmcgZnJvbSB0aGUgc25hcHNob3QgcG9zaXRpb24sIHdlIHdpbGwgd2FsayB0aGUgZGVjb2RlcgotICAgICAqIGZvcndhcmQgdW50aWwgaXQgZ2l2ZXMgdXMgZW5vdWdoIGRlY29kZWQgY2hhcmFjdGVycy4KLSAgICAgKi8KKyAgICAvKiBEZWNvZGVyIHN0YXRlIHdpbGwgYmUgcmVzdG9yZWQgYXQgdGhlIGVuZCAqLwogICAgIHNhdmVkX3N0YXRlID0gUHlPYmplY3RfQ2FsbE1ldGhvZE9iakFyZ3Moc2VsZi0+ZGVjb2RlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUlPX3N0cl9nZXRzdGF0ZSwgTlVMTCk7CiAgICAgaWYgKHNhdmVkX3N0YXRlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbDsKIAotICAgIC8qIE5vdGUgb3VyIGluaXRpYWwgc3RhcnQgcG9pbnQuICovCi0gICAgaWYgKF90ZXh0aW93cmFwcGVyX2RlY29kZXJfc2V0c3RhdGUoc2VsZiwgJmNvb2tpZSkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7CisjZGVmaW5lIERFQ09ERVJfR0VUU1RBVEUoKSBkbyB7IFwKKyAgICAgICAgUHlPYmplY3QgKl9zdGF0ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsIFwKKyAgICAgICAgICAgIF9QeUlPX3N0cl9nZXRzdGF0ZSwgTlVMTCk7IFwKKyAgICAgICAgaWYgKF9zdGF0ZSA9PSBOVUxMKSBcCisgICAgICAgICAgICBnb3RvIGZhaWw7IFwKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShfc3RhdGUsICIoeSNpKSIsICZkZWNfYnVmZmVyLCAmZGVjX2J1ZmZlcl9sZW4sICZkZWNfZmxhZ3MpKSB7IFwKKyAgICAgICAgICAgIFB5X0RFQ1JFRihfc3RhdGUpOyBcCisgICAgICAgICAgICBnb3RvIGZhaWw7IFwKKyAgICAgICAgfSBcCisgICAgICAgIFB5X0RFQ1JFRihfc3RhdGUpOyBcCisgICAgfSB3aGlsZSAoMCkKIAotICAgIC8qIEZlZWQgdGhlIGRlY29kZXIgb25lIGJ5dGUgYXQgYSB0aW1lLiAgQXMgd2UgZ28sIG5vdGUgdGhlCi0gICAgICogbmVhcmVzdCAic2FmZSBzdGFydCBwb2ludCIgYmVmb3JlIHRoZSBjdXJyZW50IGxvY2F0aW9uCi0gICAgICogKGEgcG9pbnQgd2hlcmUgdGhlIGRlY29kZXIgaGFzIG5vdGhpbmcgYnVmZmVyZWQsIHNvIHNlZWsoKQorICAgIC8qIFRPRE86IHJlcGxhY2UgYXNzZXJ0IHdpdGggZXhjZXB0aW9uICovCisjZGVmaW5lIERFQ09ERVJfREVDT0RFKHN0YXJ0LCBsZW4sIHJlcykgZG8geyBcCisgICAgICAgIFB5T2JqZWN0ICpfZGVjb2RlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoIFwKKyAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsICZQeUlkX2RlY29kZSwgInkjIiwgc3RhcnQsIGxlbik7IFwKKyAgICAgICAgaWYgKF9kZWNvZGVkID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZmFpbDsgXAorICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayhfZGVjb2RlZCkpOyBcCisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKF9kZWNvZGVkKTsgXAorICAgICAgICBQeV9ERUNSRUYoX2RlY29kZWQpOyBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIC8qIEZhc3Qgc2VhcmNoIGZvciBhbiBhY2NlcHRhYmxlIHN0YXJ0IHBvaW50LCBjbG9zZSB0byBvdXIKKyAgICAgICBjdXJyZW50IHBvcyAqLworICAgIHNraXBfYnl0ZXMgPSAoUHlfc3NpemVfdCkgKHNlbGYtPmIyY3JhdGlvICogY2hhcnNfdG9fc2tpcCk7CisgICAgc2tpcF9iYWNrID0gMTsKKyAgICBhc3NlcnQoc2tpcF9iYWNrIDw9IFB5Qnl0ZXNfR0VUX1NJWkUobmV4dF9pbnB1dCkpOworICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcobmV4dF9pbnB1dCk7CisgICAgd2hpbGUgKHNraXBfYnl0ZXMgPiAwKSB7CisgICAgICAgIC8qIERlY29kZSB1cCB0byB0ZW1wdGF0aXZlIHN0YXJ0IHBvaW50ICovCisgICAgICAgIGlmIChfdGV4dGlvd3JhcHBlcl9kZWNvZGVyX3NldHN0YXRlKHNlbGYsICZjb29raWUpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgREVDT0RFUl9ERUNPREUoaW5wdXQsIHNraXBfYnl0ZXMsIGNoYXJzX2RlY29kZWQpOworICAgICAgICBpZiAoY2hhcnNfZGVjb2RlZCA8PSBjaGFyc190b19za2lwKSB7CisgICAgICAgICAgICBERUNPREVSX0dFVFNUQVRFKCk7CisgICAgICAgICAgICBpZiAoZGVjX2J1ZmZlcl9sZW4gPT0gMCkgeworICAgICAgICAgICAgICAgIC8qIEJlZm9yZSBwb3MgYW5kIG5vIGJ5dGVzIGJ1ZmZlcmVkIGluIGRlY29kZXIgPT4gT0sgKi8KKyAgICAgICAgICAgICAgICBjb29raWUuZGVjX2ZsYWdzID0gZGVjX2ZsYWdzOworICAgICAgICAgICAgICAgIGNoYXJzX3RvX3NraXAgLT0gY2hhcnNfZGVjb2RlZDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFNraXAgYmFjayBieSBidWZmZXJlZCBhbW91bnQgYW5kIHJlc2V0IGhldXJpc3RpYyAqLworICAgICAgICAgICAgc2tpcF9ieXRlcyAtPSBkZWNfYnVmZmVyX2xlbjsKKyAgICAgICAgICAgIHNraXBfYmFjayA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBXZSdyZSB0b28gZmFyIGFoZWFkLCBza2lwIGJhY2sgYSBiaXQgKi8KKyAgICAgICAgICAgIHNraXBfYnl0ZXMgLT0gc2tpcF9iYWNrOworICAgICAgICAgICAgc2tpcF9iYWNrICo9IDI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHNraXBfYnl0ZXMgPD0gMCkgeworICAgICAgICBza2lwX2J5dGVzID0gMDsKKyAgICAgICAgaWYgKF90ZXh0aW93cmFwcGVyX2RlY29kZXJfc2V0c3RhdGUoc2VsZiwgJmNvb2tpZSkgPCAwKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIC8qIE5vdGUgb3VyIGluaXRpYWwgc3RhcnQgcG9pbnQuICovCisgICAgY29va2llLnN0YXJ0X3BvcyArPSBza2lwX2J5dGVzOworICAgIGNvb2tpZS5jaGFyc190b19za2lwID0gY2hhcnNfdG9fc2tpcDsKKyAgICBpZiAoY2hhcnNfdG9fc2tpcCA9PSAwKQorICAgICAgICBnb3RvIGZpbmFsbHk7CisKKyAgICAvKiBXZSBzaG91bGQgYmUgY2xvc2UgdG8gdGhlIGRlc2lyZWQgcG9zaXRpb24uICBOb3cgZmVlZCB0aGUgZGVjb2RlciBvbmUKKyAgICAgKiBieXRlIGF0IGEgdGltZSB1bnRpbCB3ZSByZWFjaCB0aGUgYGNoYXJzX3RvX3NraXBgIHRhcmdldC4KKyAgICAgKiBBcyB3ZSBnbywgbm90ZSB0aGUgbmVhcmVzdCAic2FmZSBzdGFydCBwb2ludCIgYmVmb3JlIHRoZSBjdXJyZW50CisgICAgICogbG9jYXRpb24gKGEgcG9pbnQgd2hlcmUgdGhlIGRlY29kZXIgaGFzIG5vdGhpbmcgYnVmZmVyZWQsIHNvIHNlZWsoKQogICAgICAqIGNhbiBzYWZlbHkgc3RhcnQgZnJvbSB0aGVyZSBhbmQgYWR2YW5jZSB0byB0aGlzIGxvY2F0aW9uKS4KICAgICAgKi8KICAgICBjaGFyc19kZWNvZGVkID0gMDsKICAgICBpbnB1dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG5leHRfaW5wdXQpOwogICAgIGlucHV0X2VuZCA9IGlucHV0ICsgUHlCeXRlc19HRVRfU0laRShuZXh0X2lucHV0KTsKKyAgICBpbnB1dCArPSBza2lwX2J5dGVzOwogICAgIHdoaWxlIChpbnB1dCA8IGlucHV0X2VuZCkgewotICAgICAgICBQeU9iamVjdCAqc3RhdGU7Ci0gICAgICAgIGNoYXIgKmRlY19idWZmZXI7Ci0gICAgICAgIFB5X3NzaXplX3QgZGVjX2J1ZmZlcl9sZW47Ci0gICAgICAgIGludCBkZWNfZmxhZ3M7CisgICAgICAgIFB5X3NzaXplX3QgbjsKIAotICAgICAgICBQeU9iamVjdCAqZGVjb2RlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoCi0gICAgICAgICAgICBzZWxmLT5kZWNvZGVyLCAiZGVjb2RlIiwgInkjIiwgaW5wdXQsIDEpOwotICAgICAgICBpZiAoZGVjb2RlZCA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayhkZWNvZGVkKSk7Ci0gICAgICAgIGNoYXJzX2RlY29kZWQgKz0gUHlVbmljb2RlX0dFVF9TSVpFKGRlY29kZWQpOwotICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7Ci0KKyAgICAgICAgREVDT0RFUl9ERUNPREUoaW5wdXQsIDEsIG4pOworICAgICAgICAvKiBXZSBnb3QgbiBjaGFycyBmb3IgMSBieXRlICovCisgICAgICAgIGNoYXJzX2RlY29kZWQgKz0gbjsKICAgICAgICAgY29va2llLmJ5dGVzX3RvX2ZlZWQgKz0gMTsKLQotICAgICAgICBzdGF0ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYtPmRlY29kZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5SU9fc3RyX2dldHN0YXRlLCBOVUxMKTsKLSAgICAgICAgaWYgKHN0YXRlID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2Uoc3RhdGUsICIoeSNpKSIsICZkZWNfYnVmZmVyLCAmZGVjX2J1ZmZlcl9sZW4sICZkZWNfZmxhZ3MpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihzdGF0ZSk7CisgICAgICAgIERFQ09ERVJfR0VUU1RBVEUoKTsKIAogICAgICAgICBpZiAoZGVjX2J1ZmZlcl9sZW4gPT0gMCAmJiBjaGFyc19kZWNvZGVkIDw9IGNoYXJzX3RvX3NraXApIHsKICAgICAgICAgICAgIC8qIERlY29kZXIgYnVmZmVyIGlzIGVtcHR5LCBzbyB0aGlzIGlzIGEgc2FmZSBzdGFydCBwb2ludC4gKi8KQEAgLTIyODYsMTIgKzIzNjUsMTIgQEAKICAgICB9CiAgICAgaWYgKGlucHV0ID09IGlucHV0X2VuZCkgewogICAgICAgICAvKiBXZSBkaWRuJ3QgZ2V0IGVub3VnaCBkZWNvZGVkIGRhdGE7IHNpZ25hbCBFT0YgdG8gZ2V0IG1vcmUuICovCi0gICAgICAgIFB5T2JqZWN0ICpkZWNvZGVkID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgKLSAgICAgICAgICAgIHNlbGYtPmRlY29kZXIsICJkZWNvZGUiLCAieWkiLCAiIiwgLyogZmluYWwgPSAqLyAxKTsKKyAgICAgICAgUHlPYmplY3QgKmRlY29kZWQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKAorICAgICAgICAgICAgc2VsZi0+ZGVjb2RlciwgJlB5SWRfZGVjb2RlLCAieWkiLCAiIiwgLyogZmluYWwgPSAqLyAxKTsKICAgICAgICAgaWYgKGRlY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYXNzZXJ0IChQeVVuaWNvZGVfQ2hlY2soZGVjb2RlZCkpOwotICAgICAgICBjaGFyc19kZWNvZGVkICs9IFB5VW5pY29kZV9HRVRfU0laRShkZWNvZGVkKTsKKyAgICAgICAgY2hhcnNfZGVjb2RlZCArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChkZWNvZGVkKTsKICAgICAgICAgUHlfREVDUkVGKGRlY29kZWQpOwogICAgICAgICBjb29raWUubmVlZF9lb2YgPSAxOwogCkBAIC0yMzAyLDkgKzIzODEsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogZmluYWxseSAqLwotICAgIFB5X1hERUNSRUYocG9zb2JqKTsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmRlY29kZXIsICJzZXRzdGF0ZSIsICIoTykiLCBzYXZlZF9zdGF0ZSk7CitmaW5hbGx5OgorICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+ZGVjb2RlciwgJlB5SWRfc2V0c3RhdGUsICIoTykiLCBzYXZlZF9zdGF0ZSk7CiAgICAgUHlfREVDUkVGKHNhdmVkX3N0YXRlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMxNCwxMyArMjM5MiwxMiBAQAogICAgIGNvb2tpZS5jaGFyc190b19za2lwID0gUHlfU0FGRV9ET1dOQ0FTVChjaGFyc190b19za2lwLCBQeV9zc2l6ZV90LCBpbnQpOwogICAgIHJldHVybiB0ZXh0aW93cmFwcGVyX2J1aWxkX2Nvb2tpZSgmY29va2llKTsKIAotICBmYWlsOgotICAgIFB5X1hERUNSRUYocG9zb2JqKTsKK2ZhaWw6CiAgICAgaWYgKHNhdmVkX3N0YXRlKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0cmFjZWJhY2s7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZ0eXBlLCAmdmFsdWUsICZ0cmFjZWJhY2spOwogCi0gICAgICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+ZGVjb2RlciwgInNldHN0YXRlIiwgIihPKSIsIHNhdmVkX3N0YXRlKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5kZWNvZGVyLCAmUHlJZF9zZXRzdGF0ZSwgIihPKSIsIHNhdmVkX3N0YXRlKTsKICAgICAgICAgUHlfREVDUkVGKHNhdmVkX3N0YXRlKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzYwLDcgKzI0MzcsNyBAQAogICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8X2lvLlRleHRJT1dyYXBwZXIiKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG5hbWVvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKSBzZWxmLCAibmFtZSIpOworICAgIG5hbWVvYmogPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKSBzZWxmLCAmUHlJZF9uYW1lKTsKICAgICBpZiAobmFtZW9iaiA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yMzc2LDcgKzI0NTMsNyBAQAogICAgICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbW9kZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopIHNlbGYsICJtb2RlIik7CisgICAgbW9kZW9iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopIHNlbGYsICZQeUlkX21vZGUpOwogICAgIGlmIChtb2Rlb2JqID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI0MDgsMzUgKzI0ODUsMzUgQEAKIHRleHRpb3dyYXBwZXJfZmlsZW5vKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiZmlsZW5vIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9maWxlbm8sIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGV4dGlvd3JhcHBlcl9zZWVrYWJsZSh0ZXh0aW8gKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIENIRUNLX0lOSVRJQUxJWkVEKHNlbGYpOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgInNlZWthYmxlIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9zZWVrYWJsZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0ZXh0aW93cmFwcGVyX3JlYWRhYmxlKHRleHRpbyAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgQ0hFQ0tfSU5JVElBTElaRUQoc2VsZik7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAicmVhZGFibGUiLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX3JlYWRhYmxlLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRleHRpb3dyYXBwZXJfd3JpdGFibGUodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJ3cml0YWJsZSIsIE5VTEwpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPmJ1ZmZlciwgJlB5SWRfd3JpdGFibGUsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogdGV4dGlvd3JhcHBlcl9pc2F0dHkodGV4dGlvICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLT5idWZmZXIsICJpc2F0dHkiLCBOVUxMKTsKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX2lzYXR0eSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDU1LDcgKzI1MzIsNyBAQAogICAgIHNlbGYtPnRlbGxpbmcgPSBzZWxmLT5zZWVrYWJsZTsKICAgICBpZiAoX3RleHRpb3dyYXBwZXJfd3JpdGVmbHVzaChzZWxmKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgImZsdXNoIiwgTlVMTCk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNDc4LDIwICsyNTU1LDIwIEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoc2VsZi0+ZGVhbGxvY2F0aW5nKSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYtPmJ1ZmZlciwgIl9kZWFsbG9jX3dhcm4iLCAiTyIsIHNlbGYpOworICAgICAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLT5idWZmZXIsICZQeUlkX19kZWFsbG9jX3dhcm4sICJPIiwgc2VsZik7CiAgICAgICAgICAgICBpZiAocmVzKQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbE1ldGhvZCgoUHlPYmplY3QgKilzZWxmLCAiZmx1c2giLCBOVUxMKTsKKyAgICAgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAKLSAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+YnVmZmVyLCAiY2xvc2UiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9jbG9zZSwgTlVMTCk7CiAgICAgfQogfQogCkBAIC0yNTE5LDEwICsyNTk2LDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobGluZSA9PSBOVUxMKQorICAgIGlmIChsaW5lID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKGxpbmUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUobGluZSkgPT0gMCkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChsaW5lKSA9PSAwKSB7CiAgICAgICAgIC8qIFJlYWNoZWQgRU9GIG9yIHdvdWxkIGhhdmUgYmxvY2tlZCAqLwogICAgICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgICAgIFB5X0NMRUFSKHNlbGYtPnNuYXBzaG90KTsKQEAgLTI1MzcsNyArMjYxNCw3IEBACiB0ZXh0aW93cmFwcGVyX25hbWVfZ2V0KHRleHRpbyAqc2VsZiwgdm9pZCAqY29udGV4dCkKIHsKICAgICBDSEVDS19JTklUSUFMSVpFRChzZWxmKTsKLSAgICByZXR1cm4gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzZWxmLT5idWZmZXIsICJuYW1lIik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZi0+YnVmZmVyLCAmUHlJZF9uYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2pzb24uYyBiL01vZHVsZXMvX2pzb24uYwppbmRleCAyYTcxYjlmLi5mYjhiZDU5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19qc29uLmMKKysrIGIvTW9kdWxlcy9fanNvbi5jCkBAIC0xLDUgKzEsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorI2luY2x1ZGUgImFjY3UuaCIKKwogI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMjA2MDAwMCAmJiAhZGVmaW5lZChQeV9UWVBFKQogI2RlZmluZSBQeV9UWVBFKG9iKSAgICAgKCgoUHlPYmplY3QqKShvYikpLT5vYl90eXBlKQogI2VuZGlmCkBAIC03Niw2ICs3OCwyMSBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK2pvaW5fbGlzdF91bmljb2RlKFB5T2JqZWN0ICpsc3QpCit7CisgICAgLyogcmV0dXJuIHUnJy5qb2luKGxzdCkgKi8KKyAgICBzdGF0aWMgUHlPYmplY3QgKnNlcCA9IE5VTEw7CisgICAgaWYgKHNlcCA9PSBOVUxMKSB7CisgICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CisgICAgICAgIGlmIChzZXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlVbmljb2RlX0pvaW4oc2VwLCBsc3QpOworfQorCisvKiBGb3J3YXJkIGRlY2xzICovCisKK3N0YXRpYyBQeU9iamVjdCAqCiBhc2NpaV9lc2NhcGVfdW5pY29kZShQeU9iamVjdCAqcHlzdHIpOwogc3RhdGljIFB5T2JqZWN0ICoKIHB5X2VuY29kZV9iYXNlc3RyaW5nX2FzY2lpKFB5T2JqZWN0KiBzZWxmIFVOVVNFRCwgUHlPYmplY3QgKnB5c3RyKTsKQEAgLTEwMSwxMSArMTE4LDExIEBACiBzdGF0aWMgaW50CiBlbmNvZGVyX2NsZWFyKFB5T2JqZWN0ICpzZWxmKTsKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9saXN0KFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKK2VuY29kZXJfbGlzdGVuY29kZV9saXN0KFB5RW5jb2Rlck9iamVjdCAqcywgX1B5QWNjdSAqYWNjLCBQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCk7CiBzdGF0aWMgaW50Ci1lbmNvZGVyX2xpc3RlbmNvZGVfb2JqKFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKK2VuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9kaWN0KFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKTsKK2VuY29kZXJfbGlzdGVuY29kZV9kaWN0KFB5RW5jb2Rlck9iamVjdCAqcywgX1B5QWNjdSAqYWNjLCBQeU9iamVjdCAqZGN0LCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCk7CiBzdGF0aWMgUHlPYmplY3QgKgogX2VuY29kZWRfY29uc3QoUHlPYmplY3QgKm9iaik7CiBzdGF0aWMgdm9pZApAQCAtMTIyLDEzICsxMzksNiBAQAogI2RlZmluZSBTX0NIQVIoYykgKGMgPj0gJyAnICYmIGMgPD0gJ34nICYmIGMgIT0gJ1xcJyAmJiBjICE9ICciJykKICNkZWZpbmUgSVNfV0hJVEVTUEFDRShjKSAoKChjKSA9PSAnICcpIHx8ICgoYykgPT0gJ1x0JykgfHwgKChjKSA9PSAnXG4nKSB8fCAoKGMpID09ICdccicpKQogCi0jZGVmaW5lIE1JTl9FWFBBTlNJT04gNgotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotI2RlZmluZSBNQVhfRVhQQU5TSU9OICgyICogTUlOX0VYUEFOU0lPTikKLSNlbHNlCi0jZGVmaW5lIE1BWF9FWFBBTlNJT04gTUlOX0VYUEFOU0lPTgotI2VuZGlmCi0KIHN0YXRpYyBpbnQKIF9jb252ZXJ0UHlJbnRfQXNTc2l6ZV90KFB5T2JqZWN0ICpvLCBQeV9zc2l6ZV90ICpzaXplX3B0cikKIHsKQEAgLTE0Nyw3ICsxNTcsNyBAQAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAotYXNjaWlfZXNjYXBlX3VuaWNoYXIoUHlfVU5JQ09ERSBjLCBQeV9VTklDT0RFICpvdXRwdXQsIFB5X3NzaXplX3QgY2hhcnMpCithc2NpaV9lc2NhcGVfdW5pY2hhcihQeV9VQ1M0IGMsIHVuc2lnbmVkIGNoYXIgKm91dHB1dCwgUHlfc3NpemVfdCBjaGFycykKIHsKICAgICAvKiBFc2NhcGUgdW5pY29kZSBjb2RlIHBvaW50IGMgdG8gQVNDSUkgZXNjYXBlIHNlcXVlbmNlcwogICAgIGluIGNoYXIgKm91dHB1dC4gb3V0cHV0IG11c3QgaGF2ZSBhdCBsZWFzdCAxMiBieXRlcyB1bnVzZWQgdG8KQEAgLTE2MiwyNSArMTcyLDIzIEBACiAgICAgICAgIGNhc2UgJ1xyJzogb3V0cHV0W2NoYXJzKytdID0gJ3InOyBicmVhazsKICAgICAgICAgY2FzZSAnXHQnOiBvdXRwdXRbY2hhcnMrK10gPSAndCc7IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAgICAgaWYgKGMgPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIC8qIFVURi0xNiBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgdiA9IGMgLSAweDEwMDAwOworICAgICAgICAgICAgICAgIFB5X1VDUzQgdiA9IGMgLSAweDEwMDAwOwogICAgICAgICAgICAgICAgIGMgPSAweGQ4MDAgfCAoKHYgPj4gMTApICYgMHgzZmYpOwogICAgICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICd1JzsKLSAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gIDgpICYgMHhmXTsKLSAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gIDQpICYgMHhmXTsKLSAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgICAgICApICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gIDgpICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gIDQpICYgMHhmXTsKKyAgICAgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgICAgICApICYgMHhmXTsKICAgICAgICAgICAgICAgICBjID0gMHhkYzAwIHwgKHYgJiAweDNmZik7CiAgICAgICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ1xcJzsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gJ3UnOwotICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gIjAxMjM0NTY3ODlhYmNkZWYiWyhjID4+IDEyKSAmIDB4Zl07Ci0gICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSAiMDEyMzQ1Njc4OWFiY2RlZiJbKGMgPj4gIDgpICYgMHhmXTsKLSAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9ICIwMTIzNDU2Nzg5YWJjZGVmIlsoYyA+PiAgNCkgJiAweGZdOwotICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gIjAxMjM0NTY3ODlhYmNkZWYiWyhjICAgICAgKSAmIDB4Zl07CisgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IFB5X2hleGRpZ2l0c1soYyA+PiAgOCkgJiAweGZdOworICAgICAgICAgICAgb3V0cHV0W2NoYXJzKytdID0gUHlfaGV4ZGlnaXRzWyhjID4+ICA0KSAmIDB4Zl07CisgICAgICAgICAgICBvdXRwdXRbY2hhcnMrK10gPSBQeV9oZXhkaWdpdHNbKGMgICAgICApICYgMHhmXTsKICAgICB9CiAgICAgcmV0dXJuIGNoYXJzOwogfQpAQCAtMTkyLDU0ICsyMDAsNTMgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfc3NpemVfdCBpbnB1dF9jaGFyczsKICAgICBQeV9zc2l6ZV90IG91dHB1dF9zaXplOwotICAgIFB5X3NzaXplX3QgbWF4X291dHB1dF9zaXplOwogICAgIFB5X3NzaXplX3QgY2hhcnM7CiAgICAgUHlPYmplY3QgKnJ2YWw7Ci0gICAgUHlfVU5JQ09ERSAqb3V0cHV0OwotICAgIFB5X1VOSUNPREUgKmlucHV0X3VuaWNvZGU7CisgICAgdm9pZCAqaW5wdXQ7CisgICAgdW5zaWduZWQgY2hhciAqb3V0cHV0OworICAgIGludCBraW5kOwogCi0gICAgaW5wdXRfY2hhcnMgPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpOwotICAgIGlucHV0X3VuaWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogT25lIGNoYXIgaW5wdXQgY2FuIGJlIHVwIHRvIDYgY2hhcnMgb3V0cHV0LCBlc3RpbWF0ZSA0IG9mIHRoZXNlICovCi0gICAgb3V0cHV0X3NpemUgPSAyICsgKE1JTl9FWFBBTlNJT04gKiA0KSArIGlucHV0X2NoYXJzOwotICAgIG1heF9vdXRwdXRfc2l6ZSA9IDIgKyAoaW5wdXRfY2hhcnMgKiBNQVhfRVhQQU5TSU9OKTsKLSAgICBydmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHB1dF9zaXplKTsKKyAgICBpbnB1dF9jaGFycyA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHB5c3RyKTsKKyAgICBpbnB1dCA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworCisgICAgLyogQ29tcHV0ZSB0aGUgb3V0cHV0IHNpemUgKi8KKyAgICBmb3IgKGkgPSAwLCBvdXRwdXRfc2l6ZSA9IDI7IGkgPCBpbnB1dF9jaGFyczsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGlucHV0LCBpKTsKKyAgICAgICAgaWYgKFNfQ0hBUihjKSkKKyAgICAgICAgICAgIG91dHB1dF9zaXplKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc3dpdGNoKGMpIHsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnIic6IGNhc2UgJ1xiJzogY2FzZSAnXGYnOgorICAgICAgICAgICAgY2FzZSAnXG4nOiBjYXNlICdccic6IGNhc2UgJ1x0JzoKKyAgICAgICAgICAgICAgICBvdXRwdXRfc2l6ZSArPSAyOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgb3V0cHV0X3NpemUgKz0gYyA+PSAweDEwMDAwID8gMTIgOiA2OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcnZhbCA9IFB5VW5pY29kZV9OZXcob3V0cHV0X3NpemUsIDEyNyk7CiAgICAgaWYgKHJ2YWwgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgb3V0cHV0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocnZhbCk7CisgICAgb3V0cHV0ID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocnZhbCk7CiAgICAgY2hhcnMgPSAwOwogICAgIG91dHB1dFtjaGFycysrXSA9ICciJzsKICAgICBmb3IgKGkgPSAwOyBpIDwgaW5wdXRfY2hhcnM7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGMgPSBpbnB1dF91bmljb2RlW2ldOworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbnB1dCwgaSk7CiAgICAgICAgIGlmIChTX0NIQVIoYykpIHsKICAgICAgICAgICAgIG91dHB1dFtjaGFycysrXSA9IGM7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjaGFycyA9IGFzY2lpX2VzY2FwZV91bmljaGFyKGMsIG91dHB1dCwgY2hhcnMpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChvdXRwdXRfc2l6ZSAtIGNoYXJzIDwgKDEgKyBNQVhfRVhQQU5TSU9OKSkgewotICAgICAgICAgICAgLyogVGhlcmUncyBtb3JlIHRoYW4gZm91ciwgc28gbGV0J3MgcmVzaXplIGJ5IGEgbG90ICovCi0gICAgICAgICAgICBQeV9zc2l6ZV90IG5ld19vdXRwdXRfc2l6ZSA9IG91dHB1dF9zaXplICogMjsKLSAgICAgICAgICAgIC8qIFRoaXMgaXMgYW4gdXBwZXIgYm91bmQgKi8KLSAgICAgICAgICAgIGlmIChuZXdfb3V0cHV0X3NpemUgPiBtYXhfb3V0cHV0X3NpemUpIHsKLSAgICAgICAgICAgICAgICBuZXdfb3V0cHV0X3NpemUgPSBtYXhfb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUgb3V0cHV0IHNpemUgY2hhbmdlZCBiZWZvcmUgcmVzaXppbmcgKi8KLSAgICAgICAgICAgIGlmIChuZXdfb3V0cHV0X3NpemUgIT0gb3V0cHV0X3NpemUpIHsKLSAgICAgICAgICAgICAgICBvdXRwdXRfc2l6ZSA9IG5ld19vdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcnZhbCwgb3V0cHV0X3NpemUpID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShydmFsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KICAgICBvdXRwdXRbY2hhcnMrK10gPSAnIic7Ci0gICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnJ2YWwsIGNoYXJzKSA9PSAtMSkgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShydmFsLCAxKSk7CiAgICAgcmV0dXJuIHJ2YWw7CiB9CiAKQEAgLTI2NywxOSArMjc0LDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWpvaW5fbGlzdF91bmljb2RlKFB5T2JqZWN0ICpsc3QpCi17Ci0gICAgLyogcmV0dXJuIHUnJy5qb2luKGxzdCkgKi8KLSAgICBzdGF0aWMgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0gICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0pvaW4oc2VwLCBsc3QpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogX2J1aWxkX3J2YWxfaW5kZXhfdHVwbGUoUHlPYmplY3QgKnJ2YWwsIFB5X3NzaXplX3QgaWR4KSB7CiAgICAgLyogcmV0dXJuIChydmFsLCBpZHgpIHR1cGxlLCBzdGVhbGluZyByZWZlcmVuY2UgdG8gcnZhbCAqLwogICAgIFB5T2JqZWN0ICp0cGw7CkBAIC0zMzMsMjIgKzMyNywzMCBAQAogICAgIFJldHVybiB2YWx1ZSBpcyBhIG5ldyBQeVVuaWNvZGUKICAgICAqLwogICAgIFB5T2JqZWN0ICpydmFsID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cik7CisgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlfc3NpemVfdCBiZWdpbiA9IGVuZCAtIDE7Ci0gICAgUHlfc3NpemVfdCBuZXh0ID0gYmVnaW47Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOworICAgIFB5X3NzaXplX3QgbmV4dCAvKiA9IGJlZ2luICovOworICAgIGNvbnN0IHZvaWQgKmJ1ZjsKKyAgICBpbnQga2luZDsKICAgICBQeU9iamVjdCAqY2h1bmtzID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2h1bmsgPSBOVUxMOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShweXN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworCisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpOworICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworCiAgICAgaWYgKGVuZCA8IDAgfHwgbGVuIDw9IGVuZCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVuZCBpcyBvdXQgb2YgYm91bmRzIik7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgLyogRmluZCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgb3IgdGhlIG5leHQgZXNjYXBlICovCi0gICAgICAgIFB5X1VOSUNPREUgYyA9IDA7CisgICAgICAgIFB5X1VDUzQgYyA9IDA7CiAgICAgICAgIGZvciAobmV4dCA9IGVuZDsgbmV4dCA8IGxlbjsgbmV4dCsrKSB7Ci0gICAgICAgICAgICBjID0gYnVmW25leHRdOworICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXFwnKSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zNjQsNyArMzY2LDEwIEBACiAgICAgICAgIC8qIFBpY2sgdXAgdGhpcyBjaHVuayBpZiBpdCdzIG5vdCB6ZXJvIGxlbmd0aCAqLwogICAgICAgICBpZiAobmV4dCAhPSBlbmQpIHsKICAgICAgICAgICAgIEFQUEVORF9PTERfQ0hVTksKLSAgICAgICAgICAgIGNodW5rID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZidWZbZW5kXSwgbmV4dCAtIGVuZCk7CisgICAgICAgICAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbUtpbmRBbmREYXRhKAorICAgICAgICAgICAgICAgICAgICBraW5kLAorICAgICAgICAgICAgICAgICAgICAoY2hhciopYnVmICsga2luZCAqIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgbmV4dCAtIGVuZCk7CiAgICAgICAgICAgICBpZiAoY2h1bmsgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTM3OCw3ICszODMsNyBAQAogICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnRlcm1pbmF0ZWQgc3RyaW5nIHN0YXJ0aW5nIGF0IiwgcHlzdHIsIGJlZ2luKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotICAgICAgICBjID0gYnVmW25leHRdOworICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgYnVmLCBuZXh0KTsKICAgICAgICAgaWYgKGMgIT0gJ3UnKSB7CiAgICAgICAgICAgICAvKiBOb24tdW5pY29kZSBiYWNrc2xhc2ggZXNjYXBlcyAqLwogICAgICAgICAgICAgZW5kID0gbmV4dCArIDE7CkBAIC00MDgsNyArNDEzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8qIERlY29kZSA0IGhleCBkaWdpdHMgKi8KICAgICAgICAgICAgIGZvciAoOyBuZXh0IDwgZW5kOyBuZXh0KyspIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGRpZ2l0ID0gYnVmW25leHRdOworICAgICAgICAgICAgICAgIFB5X1VDUzQgZGlnaXQgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQpOwogICAgICAgICAgICAgICAgIGMgPDw9IDQ7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChkaWdpdCkgewogICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CkBAIC00MjUsMjIgKzQzMCwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKICAgICAgICAgICAgIC8qIFN1cnJvZ2F0ZSBwYWlyICovCiAgICAgICAgICAgICBpZiAoKGMgJiAweGZjMDApID09IDB4ZDgwMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgYzIgPSAwOworICAgICAgICAgICAgICAgIFB5X1VDUzQgYzIgPSAwOwogICAgICAgICAgICAgICAgIGlmIChlbmQgKyA2ID49IGxlbikgewogICAgICAgICAgICAgICAgICAgICByYWlzZV9lcnJtc2coIlVucGFpcmVkIGhpZ2ggc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChidWZbbmV4dCsrXSAhPSAnXFwnIHx8IGJ1ZltuZXh0KytdICE9ICd1JykgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQrKykgIT0gJ1xcJyB8fAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBidWYsIG5leHQrKykgIT0gJ3UnKSB7CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiVW5wYWlyZWQgaGlnaCBzdXJyb2dhdGUiLCBweXN0ciwgZW5kIC0gNSk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZW5kICs9IDY7CiAgICAgICAgICAgICAgICAgLyogRGVjb2RlIDQgaGV4IGRpZ2l0cyAqLwogICAgICAgICAgICAgICAgIGZvciAoOyBuZXh0IDwgZW5kOyBuZXh0KyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBkaWdpdCA9IGJ1ZltuZXh0XTsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBkaWdpdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGJ1ZiwgbmV4dCk7CiAgICAgICAgICAgICAgICAgICAgIGMyIDw8PSA0OwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGRpZ2l0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CkBAIC00NjcsMTAgKzQ3Miw5IEBACiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJVbnBhaXJlZCBsb3cgc3Vycm9nYXRlIiwgcHlzdHIsIGVuZCAtIDUpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIEFQUEVORF9PTERfQ0hVTksKLSAgICAgICAgY2h1bmsgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJmMsIDEpOworICAgICAgICBjaHVuayA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsICZjLCAxKTsKICAgICAgICAgaWYgKGNodW5rID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQpAQCAtNjA4LDggKzYxMiw5IEBACiAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0ICh1c3VhbGx5IGEgZGljdCwgYnV0IG9iamVjdF9ob29rIGNhbiBjaGFuZ2UgdGhhdCkKICAgICAqLwotICAgIFB5X1VOSUNPREUgKnN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHB5c3RyKTsKLSAgICBQeV9zc2l6ZV90IGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpIC0gMTsKKyAgICB2b2lkICpzdHI7CisgICAgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBlbmRfaWR4OwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpydmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqa2V5ID0gTlVMTDsKQEAgLTYxNyw2ICs2MjIsMTMgQEAKICAgICBpbnQgaGFzX3BhaXJzX2hvb2sgPSAocy0+b2JqZWN0X3BhaXJzX2hvb2sgIT0gUHlfTm9uZSk7CiAgICAgUHlfc3NpemVfdCBuZXh0X2lkeDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGVuZF9pZHggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChweXN0cikgLSAxOworCiAgICAgaWYgKGhhc19wYWlyc19ob29rKQogICAgICAgICBydmFsID0gUHlMaXN0X05ldygwKTsKICAgICBlbHNlCkBAIC02MjUsMTUgKzYzNywxNSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciB7ICovCi0gICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgLyogb25seSBsb29wIGlmIHRoZSBvYmplY3QgaXMgbm9uLWVtcHR5ICovCi0gICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdICE9ICd9JykgeworICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7CiAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgewogICAgICAgICAgICAgUHlPYmplY3QgKm1lbW9rZXk7CiAKICAgICAgICAgICAgIC8qIHJlYWQga2V5ICovCi0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gIT0gJyInKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICciJykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIHByb3BlcnR5IG5hbWUgZW5jbG9zZWQgaW4gZG91YmxlIHF1b3RlcyIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KQEAgLTY1MywxMyArNjY1LDEzIEBACiAgICAgICAgICAgICBpZHggPSBuZXh0X2lkeDsKIAogICAgICAgICAgICAgLyogc2tpcCB3aGl0ZXNwYWNlIGJldHdlZW4ga2V5IGFuZCA6IGRlbGltaXRlciwgcmVhZCA6LCBza2lwIHdoaXRlc3BhY2UgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7Ci0gICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBzdHJbaWR4XSAhPSAnOicpIHsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOworICAgICAgICAgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICc6JykgewogICAgICAgICAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nICc6JyBkZWxpbWl0ZXIiLCBweXN0ciwgaWR4KTsKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZHgrKzsKLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogcmVhZCBhbnkgSlNPTiB0ZXJtICovCiAgICAgICAgICAgICB2YWwgPSBzY2FuX29uY2VfdW5pY29kZShzLCBweXN0ciwgaWR4LCAmbmV4dF9pZHgpOwpAQCAtNjg3LDI2ICs2OTksMjYgQEAKICAgICAgICAgICAgIGlkeCA9IG5leHRfaWR4OwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYmVmb3JlIH0gb3IgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBiYWlsIGlmIHRoZSBvYmplY3QgaXMgY2xvc2VkIG9yIHdlIGRpZG4ndCBnZXQgdGhlICwgZGVsaW1pdGVyICovCiAgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gPT0gJ30nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICd9JykgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2lkeF0gIT0gJywnKSB7CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJywnKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYWZ0ZXIgLCBkZWxpbWl0ZXIgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qIHZlcmlmeSB0aGF0IGlkeCA8IGVuZF9pZHgsIHN0cltpZHhdIHNob3VsZCBiZSAnfScgKi8KLSAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBzdHJbaWR4XSAhPSAnfScpIHsKKyAgICBpZiAoaWR4ID4gZW5kX2lkeCB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ30nKSB7CiAgICAgICAgIHJhaXNlX2Vycm1zZygiRXhwZWN0aW5nIG9iamVjdCIsIHB5c3RyLCBlbmRfaWR4KTsKICAgICAgICAgZ290byBiYWlsOwogICAgIH0KQEAgLTc0MiwxOSArNzU0LDI3IEBACiAKICAgICBSZXR1cm5zIGEgbmV3IFB5TGlzdAogICAgICovCi0gICAgUHlfVU5JQ09ERSAqc3RyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocHlzdHIpOwotICAgIFB5X3NzaXplX3QgZW5kX2lkeCA9IFB5VW5pY29kZV9HRVRfU0laRShweXN0cikgLSAxOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGVuZF9pZHg7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJ2YWwgPSBQeUxpc3RfTmV3KDApOwogICAgIFB5X3NzaXplX3QgbmV4dF9pZHg7CiAgICAgaWYgKHJ2YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKyAgICBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpIC0gMTsKKwogICAgIC8qIHNraXAgd2hpdGVzcGFjZSBhZnRlciBbICovCi0gICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgIC8qIG9ubHkgbG9vcCBpZiB0aGUgYXJyYXkgaXMgbm9uLWVtcHR5ICovCi0gICAgaWYgKGlkeCA8PSBlbmRfaWR4ICYmIHN0cltpZHhdICE9ICddJykgeworICAgIGlmIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJ10nKSB7CiAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCkgewogCiAgICAgICAgICAgICAvKiByZWFkIGFueSBKU09OIHRlcm0gICovCkBAIC03NjksMjYgKzc4OSwyNiBAQAogICAgICAgICAgICAgaWR4ID0gbmV4dF9pZHg7CiAKICAgICAgICAgICAgIC8qIHNraXAgd2hpdGVzcGFjZSBiZXR3ZWVuIHRlcm0gYW5kICwgKi8KLSAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKHN0cltpZHhdKSkgaWR4Kys7CisgICAgICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgSVNfV0hJVEVTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkpKSBpZHgrKzsKIAogICAgICAgICAgICAgLyogYmFpbCBpZiB0aGUgYXJyYXkgaXMgY2xvc2VkIG9yIHdlIGRpZG4ndCBnZXQgdGhlICwgZGVsaW1pdGVyICovCiAgICAgICAgICAgICBpZiAoaWR4ID4gZW5kX2lkeCkgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoc3RyW2lkeF0gPT0gJ10nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICddJykgewogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2lkeF0gIT0gJywnKSB7CisgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgIT0gJywnKSB7CiAgICAgICAgICAgICAgICAgcmFpc2VfZXJybXNnKCJFeHBlY3RpbmcgJywnIGRlbGltaXRlciIsIHB5c3RyLCBpZHgpOwogICAgICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlkeCsrOwogCiAgICAgICAgICAgICAvKiBza2lwIHdoaXRlc3BhY2UgYWZ0ZXIgLCAqLwotICAgICAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIElTX1dISVRFU1BBQ0Uoc3RyW2lkeF0pKSBpZHgrKzsKKyAgICAgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBJU19XSElURVNQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkpIGlkeCsrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogdmVyaWZ5IHRoYXQgaWR4IDwgZW5kX2lkeCwgc3RyW2lkeF0gc2hvdWxkIGJlICddJyAqLwotICAgIGlmIChpZHggPiBlbmRfaWR4IHx8IHN0cltpZHhdICE9ICddJykgeworICAgIC8qIHZlcmlmeSB0aGF0IGlkeCA8IGVuZF9pZHgsIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSBzaG91bGQgYmUgJ10nICovCisgICAgaWYgKGlkeCA+IGVuZF9pZHggfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpICE9ICddJykgewogICAgICAgICByYWlzZV9lcnJtc2coIkV4cGVjdGluZyBvYmplY3QiLCBweXN0ciwgZW5kX2lkeCk7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CkBAIC04MjAsNyArODQwLDcgQEAKIAogICAgIC8qIHJ2YWwgPSBwYXJzZV9jb25zdGFudChjb25zdGFudCkgKi8KICAgICBydmFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzLT5wYXJzZV9jb25zdGFudCwgY3N0ciwgTlVMTCk7Ci0gICAgaWR4ICs9IFB5VW5pY29kZV9HRVRfU0laRShjc3RyKTsKKyAgICBpZHggKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3N0cik7CiAgICAgUHlfREVDUkVGKGNzdHIpOwogICAgICpuZXh0X2lkeF9wdHIgPSBpZHg7CiAgICAgcmV0dXJuIHJ2YWw7CkBAIC04MzcsMTUgKzg1NywyNCBAQAogICAgICAgICBQeUludCwgUHlMb25nLCBvciBQeUZsb2F0LgogICAgICAgICBNYXkgcmV0dXJuIG90aGVyIHR5cGVzIGlmIHBhcnNlX2ludCBvciBwYXJzZV9mbG9hdCBhcmUgc2V0CiAgICAgKi8KLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9TSVpFKHB5c3RyKSAtIDE7CisgICAgdm9pZCAqc3RyOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgZW5kX2lkeDsKICAgICBQeV9zc2l6ZV90IGlkeCA9IHN0YXJ0OwogICAgIGludCBpc19mbG9hdCA9IDA7CiAgICAgUHlPYmplY3QgKnJ2YWw7Ci0gICAgUHlPYmplY3QgKm51bXN0cjsKKyAgICBQeU9iamVjdCAqbnVtc3RyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqY3VzdG9tX2Z1bmM7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHB5c3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzdHIgPSBQeVVuaWNvZGVfREFUQShweXN0cik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHB5c3RyKTsKKyAgICBlbmRfaWR4ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHlzdHIpIC0gMTsKIAogICAgIC8qIHJlYWQgYSBzaWduIGlmIGl0J3MgdGhlcmUsIG1ha2Ugc3VyZSBpdCdzIG5vdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgKi8KLSAgICBpZiAoc3RyW2lkeF0gPT0gJy0nKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnLScpIHsKICAgICAgICAgaWR4Kys7CiAgICAgICAgIGlmIChpZHggPiBlbmRfaWR4KSB7CiAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOwpAQCAtODU0LDEyICs4ODMsMTIgQEAKICAgICB9CiAKICAgICAvKiByZWFkIGFzIG1hbnkgaW50ZWdlciBkaWdpdHMgYXMgd2UgZmluZCBhcyBsb25nIGFzIGl0IGRvZXNuJ3Qgc3RhcnQgd2l0aCAwICovCi0gICAgaWYgKHN0cltpZHhdID49ICcxJyAmJiBzdHJbaWR4XSA8PSAnOScpIHsKKyAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID49ICcxJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPD0gJzknKSB7CiAgICAgICAgIGlkeCsrOwotICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gPj0gJzAnICYmIHN0cltpZHhdIDw9ICc5JykgaWR4Kys7CisgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIGlkeCsrOwogICAgIH0KICAgICAvKiBpZiBpdCBzdGFydHMgd2l0aCAwIHdlIG9ubHkgZXhwZWN0IG9uZSBpbnRlZ2VyIGRpZ2l0ICovCi0gICAgZWxzZSBpZiAoc3RyW2lkeF0gPT0gJzAnKSB7CisgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICcwJykgewogICAgICAgICBpZHgrKzsKICAgICB9CiAgICAgLyogbm8gaW50ZWdlciBkaWdpdHMsIGVycm9yICovCkBAIC04NjksMjUgKzg5OCwyNSBAQAogICAgIH0KIAogICAgIC8qIGlmIHRoZSBuZXh0IGNoYXIgaXMgJy4nIGZvbGxvd2VkIGJ5IGEgZGlnaXQgdGhlbiByZWFkIGFsbCBmbG9hdCBkaWdpdHMgKi8KLSAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiBzdHJbaWR4XSA9PSAnLicgJiYgc3RyW2lkeCArIDFdID49ICcwJyAmJiBzdHJbaWR4ICsgMV0gPD0gJzknKSB7CisgICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICcuJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID49ICcwJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpIDw9ICc5JykgewogICAgICAgICBpc19mbG9hdCA9IDE7CiAgICAgICAgIGlkeCArPSAyOwotICAgICAgICB3aGlsZSAoaWR4IDw9IGVuZF9pZHggJiYgc3RyW2lkeF0gPj0gJzAnICYmIHN0cltpZHhdIDw9ICc5JykgaWR4Kys7CisgICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA8PSAnOScpIGlkeCsrOwogICAgIH0KIAogICAgIC8qIGlmIHRoZSBuZXh0IGNoYXIgaXMgJ2UnIG9yICdFJyB0aGVuIG1heWJlIHJlYWQgdGhlIGV4cG9uZW50IChvciBiYWNrdHJhY2spICovCi0gICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgKHN0cltpZHhdID09ICdlJyB8fCBzdHJbaWR4XSA9PSAnRScpKSB7CisgICAgaWYgKGlkeCA8IGVuZF9pZHggJiYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA9PSAnZScgfHwgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICdFJykpIHsKICAgICAgICAgUHlfc3NpemVfdCBlX3N0YXJ0ID0gaWR4OwogICAgICAgICBpZHgrKzsKIAogICAgICAgICAvKiByZWFkIGFuIGV4cG9uZW50IHNpZ24gaWYgcHJlc2VudCAqLwotICAgICAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoc3RyW2lkeF0gPT0gJy0nIHx8IHN0cltpZHhdID09ICcrJykpIGlkeCsrOworICAgICAgICBpZiAoaWR4IDwgZW5kX2lkeCAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpID09ICctJyB8fCBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCkgPT0gJysnKSkgaWR4Kys7CiAKICAgICAgICAgLyogcmVhZCBhbGwgZGlnaXRzICovCi0gICAgICAgIHdoaWxlIChpZHggPD0gZW5kX2lkeCAmJiBzdHJbaWR4XSA+PSAnMCcgJiYgc3RyW2lkeF0gPD0gJzknKSBpZHgrKzsKKyAgICAgICAgd2hpbGUgKGlkeCA8PSBlbmRfaWR4ICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSA+PSAnMCcgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHgpIDw9ICc5JykgaWR4Kys7CiAKICAgICAgICAgLyogaWYgd2UgZ290IGEgZGlnaXQsIHRoZW4gcGFyc2UgYXMgZmxvYXQuIGlmIG5vdCwgYmFja3RyYWNrICovCi0gICAgICAgIGlmIChzdHJbaWR4IC0gMV0gPj0gJzAnICYmIHN0cltpZHggLSAxXSA8PSAnOScpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4IC0gMSkgPj0gJzAnICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4IC0gMSkgPD0gJzknKSB7CiAgICAgICAgICAgICBpc19mbG9hdCA9IDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC04OTUsMjIgKzkyNCwzOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogY29weSB0aGUgc2VjdGlvbiB3ZSBkZXRlcm1pbmVkIHRvIGJlIGEgbnVtYmVyICovCi0gICAgbnVtc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZzdHJbc3RhcnRdLCBpZHggLSBzdGFydCk7Ci0gICAgaWYgKG51bXN0ciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoaXNfZmxvYXQpIHsKLSAgICAgICAgLyogcGFyc2UgYXMgYSBmbG9hdCB1c2luZyBhIGZhc3QgcGF0aCBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBjYWxsIHVzZXIgZGVmaW5lZCBtZXRob2QgKi8KLSAgICAgICAgaWYgKHMtPnBhcnNlX2Zsb2F0ICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUpIHsKLSAgICAgICAgICAgIHJ2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHMtPnBhcnNlX2Zsb2F0LCBudW1zdHIsIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcnZhbCA9IFB5RmxvYXRfRnJvbVN0cmluZyhudW1zdHIpOwotICAgICAgICB9CisgICAgaWYgKGlzX2Zsb2F0ICYmIHMtPnBhcnNlX2Zsb2F0ICE9IChQeU9iamVjdCAqKSZQeUZsb2F0X1R5cGUpCisgICAgICAgIGN1c3RvbV9mdW5jID0gcy0+cGFyc2VfZmxvYXQ7CisgICAgZWxzZSBpZiAoIWlzX2Zsb2F0ICYmIHMtPnBhcnNlX2ludCAhPSAoUHlPYmplY3QgKikgJlB5TG9uZ19UeXBlKQorICAgICAgICBjdXN0b21fZnVuYyA9IHMtPnBhcnNlX2ludDsKKyAgICBlbHNlCisgICAgICAgIGN1c3RvbV9mdW5jID0gTlVMTDsKKworICAgIGlmIChjdXN0b21fZnVuYykgeworICAgICAgICAvKiBjb3B5IHRoZSBzZWN0aW9uIHdlIGRldGVybWluZWQgdG8gYmUgYSBudW1iZXIgKi8KKyAgICAgICAgbnVtc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilzdHIgKyBraW5kICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWR4IC0gc3RhcnQpOworICAgICAgICBpZiAobnVtc3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY3VzdG9tX2Z1bmMsIG51bXN0ciwgTlVMTCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICAvKiBubyBmYXN0IHBhdGggZm9yIHVuaWNvZGUgLT4gaW50LCBqdXN0IGNhbGwgKi8KLSAgICAgICAgcnZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mocy0+cGFyc2VfaW50LCBudW1zdHIsIE5VTEwpOworICAgICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgICAgIGNoYXIgKmJ1ZjsKKyAgICAgICAgLyogU3RyYWlnaHQgY29udmVyc2lvbiB0byBBU0NJSSwgdG8gYXZvaWQgY29zdGx5IGNvbnZlcnNpb24gb2YKKyAgICAgICAgICAgZGVjaW1hbCB1bmljb2RlIGRpZ2l0cyAod2hpY2ggY2Fubm90IGFwcGVhciBoZXJlKSAqLworICAgICAgICBuID0gaWR4IC0gc3RhcnQ7CisgICAgICAgIG51bXN0ciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7CisgICAgICAgIGlmIChudW1zdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhudW1zdHIpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBidWZbaV0gPSAoY2hhcikgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpICsgc3RhcnQpOworICAgICAgICB9CisgICAgICAgIGlmIChpc19mbG9hdCkKKyAgICAgICAgICAgIHJ2YWwgPSBQeUZsb2F0X0Zyb21TdHJpbmcobnVtc3RyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcnZhbCA9IFB5TG9uZ19Gcm9tU3RyaW5nKGJ1ZiwgTlVMTCwgMTApOwogICAgIH0KICAgICBQeV9ERUNSRUYobnVtc3RyKTsKICAgICAqbmV4dF9pZHhfcHRyID0gaWR4OwpAQCAtOTI4LDEzICs5NzQsMjMgQEAKICAgICBSZXR1cm5zIGEgbmV3IFB5T2JqZWN0IHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0ZXJtLgogICAgICovCiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeV9VTklDT0RFICpzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShweXN0cik7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX1NJWkUocHlzdHIpOworICAgIHZvaWQgKnN0cjsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocHlzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN0ciA9IFB5VW5pY29kZV9EQVRBKHB5c3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocHlzdHIpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHB5c3RyKTsKKwogICAgIGlmIChpZHggPj0gbGVuZ3RoKSB7CiAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBzd2l0Y2ggKHN0cltpZHhdKSB7CisKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4KSkgewogICAgICAgICBjYXNlICciJzoKICAgICAgICAgICAgIC8qIHN0cmluZyAqLwogICAgICAgICAgICAgcmV0dXJuIHNjYW5zdHJpbmdfdW5pY29kZShweXN0ciwgaWR4ICsgMSwKQEAgLTk1OCw3ICsxMDE0LDcgQEAKICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgLyogbnVsbCAqLwotICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ3UnICYmIHN0cltpZHggKyAyXSA9PSAnbCcgJiYgc3RyW2lkeCArIDNdID09ICdsJykgeworICAgICAgICAgICAgaWYgKChpZHggKyAzIDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICd1JyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDIpID09ICdsJyAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdsJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgICAgICAgICAqbmV4dF9pZHhfcHRyID0gaWR4ICsgNDsKICAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTk2Niw3ICsxMDIyLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgIC8qIHRydWUgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgMyA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdyJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ3UnICYmIHN0cltpZHggKyAzXSA9PSAnZScpIHsKKyAgICAgICAgICAgIGlmICgoaWR4ICsgMyA8IGxlbmd0aCkgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAxKSA9PSAncicgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAndScgJiYgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAzKSA9PSAnZScpIHsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfVHJ1ZSk7CiAgICAgICAgICAgICAgICAgKm5leHRfaWR4X3B0ciA9IGlkeCArIDQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X1RydWU7CkBAIC05NzQsNyArMTAzMCwxMCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgLyogZmFsc2UgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgNCA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdhJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ2wnICYmIHN0cltpZHggKyAzXSA9PSAncycgJiYgc3RyW2lkeCArIDRdID09ICdlJykgeworICAgICAgICAgICAgaWYgKChpZHggKyA0IDwgbGVuZ3RoKSAmJiBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDEpID09ICdhJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMikgPT0gJ2wnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAzKSA9PSAncycgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDQpID09ICdlJykgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CiAgICAgICAgICAgICAgICAgKm5leHRfaWR4X3B0ciA9IGlkeCArIDU7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X0ZhbHNlOwpAQCAtOTgyLDE5ICsxMDQxLDMzIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnTic6CiAgICAgICAgICAgICAvKiBOYU4gKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgMiA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdhJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ04nKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDIgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ2EnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnTicpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICJOYU4iLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnSSc6CiAgICAgICAgICAgICAvKiBJbmZpbml0eSAqLwotICAgICAgICAgICAgaWYgKChpZHggKyA3IDwgbGVuZ3RoKSAmJiBzdHJbaWR4ICsgMV0gPT0gJ24nICYmIHN0cltpZHggKyAyXSA9PSAnZicgJiYgc3RyW2lkeCArIDNdID09ICdpJyAmJiBzdHJbaWR4ICsgNF0gPT0gJ24nICYmIHN0cltpZHggKyA1XSA9PSAnaScgJiYgc3RyW2lkeCArIDZdID09ICd0JyAmJiBzdHJbaWR4ICsgN10gPT0gJ3knKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDcgPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ24nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnZicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ24nICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA1KSA9PSAnaScgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDYpID09ICd0JyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNykgPT0gJ3knKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIF9wYXJzZV9jb25zdGFudChzLCAiSW5maW5pdHkiLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAnLSc6CiAgICAgICAgICAgICAvKiAtSW5maW5pdHkgKi8KLSAgICAgICAgICAgIGlmICgoaWR4ICsgOCA8IGxlbmd0aCkgJiYgc3RyW2lkeCArIDFdID09ICdJJyAmJiBzdHJbaWR4ICsgMl0gPT0gJ24nICYmIHN0cltpZHggKyAzXSA9PSAnZicgJiYgc3RyW2lkeCArIDRdID09ICdpJyAmJiBzdHJbaWR4ICsgNV0gPT0gJ24nICYmIHN0cltpZHggKyA2XSA9PSAnaScgJiYgc3RyW2lkeCArIDddID09ICd0JyAmJiBzdHJbaWR4ICsgOF0gPT0gJ3knKSB7CisgICAgICAgICAgICBpZiAoKGlkeCArIDggPCBsZW5ndGgpICYmIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgMSkgPT0gJ0knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyAyKSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDMpID09ICdmJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNCkgPT0gJ2knICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA1KSA9PSAnbicgJiYKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBzdHIsIGlkeCArIDYpID09ICdpJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIHN0ciwgaWR4ICsgNykgPT0gJ3QnICYmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgc3RyLCBpZHggKyA4KSA9PSAneScpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX3BhcnNlX2NvbnN0YW50KHMsICItSW5maW5pdHkiLCBpZHgsIG5leHRfaWR4X3B0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyMTAsMjIgKzEyODMsMjIgQEAKICAgICAvKiBQeXRob24gY2FsbGFibGUgaW50ZXJmYWNlIHRvIGVuY29kZV9saXN0ZW5jb2RlX29iaiAqLwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqIiwgIl9jdXJyZW50X2luZGVudF9sZXZlbCIsIE5VTEx9OwogICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgUHlPYmplY3QgKnJ2YWw7CiAgICAgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWw7CiAgICAgUHlFbmNvZGVyT2JqZWN0ICpzOworICAgIF9QeUFjY3UgYWNjOworCiAgICAgYXNzZXJ0KFB5RW5jb2Rlcl9DaGVjayhzZWxmKSk7CiAgICAgcyA9IChQeUVuY29kZXJPYmplY3QgKilzZWxmOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPTyY6X2l0ZXJlbmNvZGUiLCBrd2xpc3QsCiAgICAgICAgICZvYmosIF9jb252ZXJ0UHlJbnRfQXNTc2l6ZV90LCAmaW5kZW50X2xldmVsKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcnZhbCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgaWYgKHJ2YWwgPT0gTlVMTCkKKyAgICBpZiAoX1B5QWNjdV9Jbml0KCZhY2MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBvYmosIGluZGVudF9sZXZlbCkpIHsKLSAgICAgICAgUHlfREVDUkVGKHJ2YWwpOworICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsICZhY2MsIG9iaiwgaW5kZW50X2xldmVsKSkgeworICAgICAgICBfUHlBY2N1X0Rlc3Ryb3koJmFjYyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gcnZhbDsKKyAgICByZXR1cm4gX1B5QWNjdV9GaW5pc2hBc0xpc3QoJmFjYyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xMjk3LDE4ICsxMzcwLDE5IEBACiB9CiAKIHN0YXRpYyBpbnQKLV9zdGVhbF9saXN0X2FwcGVuZChQeU9iamVjdCAqbHN0LCBQeU9iamVjdCAqc3RvbGVuKQorX3N0ZWFsX2FjY3VtdWxhdGUoX1B5QWNjdSAqYWNjLCBQeU9iamVjdCAqc3RvbGVuKQogewogICAgIC8qIEFwcGVuZCBzdG9sZW4gYW5kIHRoZW4gZGVjcmVtZW50IGl0cyByZWZlcmVuY2UgY291bnQgKi8KLSAgICBpbnQgcnZhbCA9IFB5TGlzdF9BcHBlbmQobHN0LCBzdG9sZW4pOworICAgIGludCBydmFsID0gX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgc3RvbGVuKTsKICAgICBQeV9ERUNSRUYoc3RvbGVuKTsKICAgICByZXR1cm4gcnZhbDsKIH0KIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihQeUVuY29kZXJPYmplY3QgKnMsIFB5T2JqZWN0ICpydmFsLCBQeU9iamVjdCAqb2JqLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKK2VuY29kZXJfbGlzdGVuY29kZV9vYmooUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsCisgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gb2JqZWN0IG9iaiB0byBhIEpTT04gdGVybSwgcnZhbCBpcyBhIFB5TGlzdCAqLworICAgIC8qIEVuY29kZSBQeXRob24gb2JqZWN0IG9iaiB0byBhIEpTT04gdGVybSAqLwogICAgIFB5T2JqZWN0ICpuZXdvYmo7CiAgICAgaW50IHJ2OwogCkBAIC0xMzE2LDM4ICsxMzkwLDM4IEBACiAgICAgICAgIFB5T2JqZWN0ICpjc3RyID0gX2VuY29kZWRfY29uc3Qob2JqKTsKICAgICAgICAgaWYgKGNzdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBjc3RyKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgY3N0cik7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhvYmopKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBlbmNvZGVyX2VuY29kZV9zdHJpbmcocywgb2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgcmV0dXJuIF9zdGVhbF9saXN0X2FwcGVuZChydmFsLCBlbmNvZGVkKTsKKyAgICAgICAgcmV0dXJuIF9zdGVhbF9hY2N1bXVsYXRlKGFjYywgZW5jb2RlZCk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhvYmopKSB7CiAgICAgICAgIFB5T2JqZWN0ICplbmNvZGVkID0gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiBfc3RlYWxfbGlzdF9hcHBlbmQocnZhbCwgZW5jb2RlZCk7CisgICAgICAgIHJldHVybiBfc3RlYWxfYWNjdW11bGF0ZShhY2MsIGVuY29kZWQpOwogICAgIH0KICAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBlbmNvZGVyX2VuY29kZV9mbG9hdChzLCBvYmopOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGVuY29kZWQpOworICAgICAgICByZXR1cm4gX3N0ZWFsX2FjY3VtdWxhdGUoYWNjLCBlbmNvZGVkKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlMaXN0X0NoZWNrKG9iaikgfHwgUHlUdXBsZV9DaGVjayhvYmopKSB7CiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QocywgcnZhbCwgb2JqLCBpbmRlbnRfbGV2ZWwpOworICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9saXN0KHMsIGFjYywgb2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgcmV0dXJuIHJ2OwogICAgIH0KICAgICBlbHNlIGlmIChQeURpY3RfQ2hlY2sob2JqKSkgewogICAgICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgZW5jb2RpbmcgYSBKU09OIG9iamVjdCIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9kaWN0KHMsIHJ2YWwsIG9iaiwgaW5kZW50X2xldmVsKTsKKyAgICAgICAgcnYgPSBlbmNvZGVyX2xpc3RlbmNvZGVfZGljdChzLCBhY2MsIG9iaiwgaW5kZW50X2xldmVsKTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgICAgIHJldHVybiBydjsKICAgICB9CkBAIC0xMzc4LDcgKzE0NTIsNyBAQAogCiAgICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBlbmNvZGluZyBhIEpTT04gb2JqZWN0IikpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBydmFsLCBuZXdvYmosIGluZGVudF9sZXZlbCk7CisgICAgICAgIHJ2ID0gZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBhY2MsIG5ld29iaiwgaW5kZW50X2xldmVsKTsKICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAKICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CkBAIC0xMzk4LDkgKzE0NzIsMTAgQEAKIH0KIAogc3RhdGljIGludAotZW5jb2Rlcl9saXN0ZW5jb2RlX2RpY3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBQeU9iamVjdCAqcnZhbCwgUHlPYmplY3QgKmRjdCwgUHlfc3NpemVfdCBpbmRlbnRfbGV2ZWwpCitlbmNvZGVyX2xpc3RlbmNvZGVfZGljdChQeUVuY29kZXJPYmplY3QgKnMsIF9QeUFjY3UgKmFjYywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkY3QsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQogewotICAgIC8qIEVuY29kZSBQeXRob24gZGljdCBkY3QgYSBKU09OIHRlcm0sIHJ2YWwgaXMgYSBQeUxpc3QgKi8KKyAgICAvKiBFbmNvZGUgUHl0aG9uIGRpY3QgZGN0IGEgSlNPTiB0ZXJtICovCiAgICAgc3RhdGljIFB5T2JqZWN0ICpvcGVuX2RpY3QgPSBOVUxMOwogICAgIHN0YXRpYyBQeU9iamVjdCAqY2xvc2VfZGljdCA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICplbXB0eV9kaWN0ID0gTlVMTDsKQEAgLTE0MjAsNyArMTQ5NSw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChQeV9TSVpFKGRjdCkgPT0gMCkKLSAgICAgICAgcmV0dXJuIFB5TGlzdF9BcHBlbmQocnZhbCwgZW1wdHlfZGljdCk7CisgICAgICAgIHJldHVybiBfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBlbXB0eV9kaWN0KTsKIAogICAgIGlmIChzLT5tYXJrZXJzICE9IFB5X05vbmUpIHsKICAgICAgICAgaW50IGhhc19rZXk7CkBAIC0xNDM4LDcgKzE1MTMsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgb3Blbl9kaWN0KSkKKyAgICBpZiAoX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgb3Blbl9kaWN0KSkKICAgICAgICAgZ290byBiYWlsOwogCiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7CkBAIC0xNTI1LDcgKzE2MDAsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlkeCkgewotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgcy0+aXRlbV9zZXBhcmF0b3IpKQorICAgICAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPml0ZW1fc2VwYXJhdG9yKSkKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KIApAQCAtMTUzMywxNiArMTYwOCwxNiBAQAogICAgICAgICBQeV9DTEVBUihrc3RyKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKLSAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgZW5jb2RlZCkpIHsKKyAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGVuY29kZWQpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KICAgICAgICAgUHlfREVDUkVGKGVuY29kZWQpOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChydmFsLCBzLT5rZXlfc2VwYXJhdG9yKSkKKyAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPmtleV9zZXBhcmF0b3IpKQogICAgICAgICAgICAgZ290byBiYWlsOwogCiAgICAgICAgIHZhbHVlID0gUHlUdXBsZV9HRVRfSVRFTShpdGVtLCAxKTsKLSAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgcnZhbCwgdmFsdWUsIGluZGVudF9sZXZlbCkpCisgICAgICAgIGlmIChlbmNvZGVyX2xpc3RlbmNvZGVfb2JqKHMsIGFjYywgdmFsdWUsIGluZGVudF9sZXZlbCkpCiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIGlkeCArPSAxOwogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CkBAIC0xNTU2LDE0ICsxNjMxLDEzIEBACiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIFB5X0NMRUFSKGlkZW50KTsKICAgICB9CisgICAgLyogVE9ETyBET0VTIE5PVCBSVU47IGRlYWQgY29kZQogICAgIGlmIChzLT5pbmRlbnQgIT0gUHlfTm9uZSkgewotICAgICAgICAvKiBUT0RPOiBET0VTIE5PVCBSVU4gKi8KICAgICAgICAgaW5kZW50X2xldmVsIC09IDE7Ci0gICAgICAgIC8qCi0gICAgICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKLSAgICAgICAgKi8KLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgY2xvc2VfZGljdCkpCisKKyAgICAgICAgeWllbGQgJ1xuJyArICgnICcgKiAoX2luZGVudCAqIF9jdXJyZW50X2luZGVudF9sZXZlbCkpCisgICAgfSovCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIGNsb3NlX2RpY3QpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgcmV0dXJuIDA7CiAKQEAgLTE1NzcsOSArMTY1MSwxMCBAQAogCiAKIHN0YXRpYyBpbnQKLWVuY29kZXJfbGlzdGVuY29kZV9saXN0KFB5RW5jb2Rlck9iamVjdCAqcywgUHlPYmplY3QgKnJ2YWwsIFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgaW5kZW50X2xldmVsKQorZW5jb2Rlcl9saXN0ZW5jb2RlX2xpc3QoUHlFbmNvZGVyT2JqZWN0ICpzLCBfUHlBY2N1ICphY2MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IGluZGVudF9sZXZlbCkKIHsKLSAgICAvKiBFbmNvZGUgUHl0aG9uIGxpc3Qgc2VxIHRvIGEgSlNPTiB0ZXJtLCBydmFsIGlzIGEgUHlMaXN0ICovCisgICAgLyogRW5jb2RlIFB5dGhvbiBsaXN0IHNlcSB0byBhIEpTT04gdGVybSAqLwogICAgIHN0YXRpYyBQeU9iamVjdCAqb3Blbl9hcnJheSA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjbG9zZV9hcnJheSA9IE5VTEw7CiAgICAgc3RhdGljIFB5T2JqZWN0ICplbXB0eV9hcnJheSA9IE5VTEw7CkBAIC0xNjAzLDcgKzE2NzgsNyBAQAogICAgIG51bV9pdGVtcyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzX2Zhc3QpOwogICAgIGlmIChudW1faXRlbXMgPT0gMCkgewogICAgICAgICBQeV9ERUNSRUYoc19mYXN0KTsKLSAgICAgICAgcmV0dXJuIFB5TGlzdF9BcHBlbmQocnZhbCwgZW1wdHlfYXJyYXkpOworICAgICAgICByZXR1cm4gX1B5QWNjdV9BY2N1bXVsYXRlKGFjYywgZW1wdHlfYXJyYXkpOwogICAgIH0KIAogICAgIGlmIChzLT5tYXJrZXJzICE9IFB5X05vbmUpIHsKQEAgLTE2MjMsNyArMTY5OCw3IEBACiAgICAgfQogCiAgICAgc2VxX2l0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKHNfZmFzdCk7Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgb3Blbl9hcnJheSkpCisgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIG9wZW5fYXJyYXkpKQogICAgICAgICBnb3RvIGJhaWw7CiAgICAgaWYgKHMtPmluZGVudCAhPSBQeV9Ob25lKSB7CiAgICAgICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTiAqLwpAQCAtMTYzNywxMCArMTcxMiwxMCBAQAogICAgIGZvciAoaSA9IDA7IGkgPCBudW1faXRlbXM7IGkrKykgewogICAgICAgICBQeU9iamVjdCAqb2JqID0gc2VxX2l0ZW1zW2ldOwogICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgcy0+aXRlbV9zZXBhcmF0b3IpKQorICAgICAgICAgICAgaWYgKF9QeUFjY3VfQWNjdW11bGF0ZShhY2MsIHMtPml0ZW1fc2VwYXJhdG9yKSkKICAgICAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgcnZhbCwgb2JqLCBpbmRlbnRfbGV2ZWwpKQorICAgICAgICBpZiAoZW5jb2Rlcl9saXN0ZW5jb2RlX29iaihzLCBhY2MsIG9iaiwgaW5kZW50X2xldmVsKSkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAgICAgaWYgKGlkZW50ICE9IE5VTEwpIHsKQEAgLTE2NDgsMTQgKzE3MjMsMTQgQEAKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgUHlfQ0xFQVIoaWRlbnQpOwogICAgIH0KKworICAgIC8qIFRPRE86IERPRVMgTk9UIFJVTgogICAgIGlmIChzLT5pbmRlbnQgIT0gUHlfTm9uZSkgewotICAgICAgICAvKiBUT0RPOiBET0VTIE5PVCBSVU4gKi8KICAgICAgICAgaW5kZW50X2xldmVsIC09IDE7Ci0gICAgICAgIC8qCi0gICAgICAgICAgICB5aWVsZCAnXG4nICsgKCcgJyAqIChfaW5kZW50ICogX2N1cnJlbnRfaW5kZW50X2xldmVsKSkKLSAgICAgICAgKi8KLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQocnZhbCwgY2xvc2VfYXJyYXkpKQorCisgICAgICAgIHlpZWxkICdcbicgKyAoJyAnICogKF9pbmRlbnQgKiBfY3VycmVudF9pbmRlbnRfbGV2ZWwpKQorICAgIH0qLworICAgIGlmIChfUHlBY2N1X0FjY3VtdWxhdGUoYWNjLCBjbG9zZV9hcnJheSkpCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICBQeV9ERUNSRUYoc19mYXN0KTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xvY2FsZW1vZHVsZS5jIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKaW5kZXggMTAwMWRkMi4uY2M2ODhiYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fbG9jYWxlbW9kdWxlLmMKQEAgLTQyLDQzICs0Miw2IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqRXJyb3I7CiAKLS8qIENvbnZlcnQgYSBjaGFyKiB0byBhIFVuaWNvZGUgb2JqZWN0IGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgKi8KLXN0YXRpYyBQeU9iamVjdCoKLXN0cjJ1bmkoY29uc3QgY2hhciogcykKLXsKLSNpZmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUwotICAgIHNpemVfdCBuZWVkZWQgPSBzdHJsZW4ocyk7Ci0jZWxzZQotICAgIHNpemVfdCBuZWVkZWQgPSBtYnN0b3djcyhOVUxMLCBzLCAwKTsKLSNlbmRpZgotICAgIHNpemVfdCByZXMxOwotICAgIHdjaGFyX3Qgc21hbGxidWZbMzBdOwotICAgIHdjaGFyX3QgKmRlc3Q7Ci0gICAgUHlPYmplY3QgKnJlczI7Ci0gICAgaWYgKG5lZWRlZCA9PSAoc2l6ZV90KS0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgYnl0ZSB0byBzdHJpbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChuZWVkZWQqc2l6ZW9mKHdjaGFyX3QpIDwgc2l6ZW9mKHNtYWxsYnVmKSkKLSAgICAgICAgZGVzdCA9IHNtYWxsYnVmOwotICAgIGVsc2UgewotICAgICAgICBkZXN0ID0gUHlNZW1fTWFsbG9jKChuZWVkZWQrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKLSAgICAgICAgaWYgKCFkZXN0KQotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIC8qIFRoaXMgc2hvdWxkbid0IGZhaWwgbm93ICovCi0gICAgcmVzMSA9IG1ic3Rvd2NzKGRlc3QsIHMsIG5lZWRlZCsxKTsKLSNpZmRlZiBIQVZFX0JST0tFTl9NQlNUT1dDUwotICAgIGFzc2VydChyZXMxICE9IChzaXplX3QpLTEpOwotI2Vsc2UKLSAgICBhc3NlcnQocmVzMSA9PSBuZWVkZWQpOwotI2VuZGlmCi0gICAgcmVzMiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZGVzdCwgcmVzMSk7Ci0gICAgaWYgKGRlc3QgIT0gc21hbGxidWYpCi0gICAgICAgIFB5TWVtX0ZyZWUoZGVzdCk7Ci0gICAgcmV0dXJuIHJlczI7Ci19Ci0KIC8qIHN1cHBvcnQgZnVuY3Rpb25zIGZvciBmb3JtYXR0aW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgKi8KIAogUHlEb2NfU1RSVkFSKHNldGxvY2FsZV9fZG9jX18sCkBAIC0xNDksNyArMTEyLDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgInVuc3VwcG9ydGVkIGxvY2FsZSBzZXR0aW5nIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXN1bHRfb2JqZWN0ID0gc3RyMnVuaShyZXN1bHQpOworICAgICAgICByZXN1bHRfb2JqZWN0ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShyZXN1bHQsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdF9vYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9IGVsc2UgewpAQCAtMTU5LDcgKzEyMiw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJsb2NhbGUgcXVlcnkgZmFpbGVkIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXN1bHRfb2JqZWN0ID0gc3RyMnVuaShyZXN1bHQpOworICAgICAgICByZXN1bHRfb2JqZWN0ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZShyZXN1bHQsIE5VTEwpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0X29iamVjdDsKIH0KQEAgLTE4NSw3ICsxNDgsNyBAQAogICAgICAgIGludm9sdmVkIGhlcmVpbiAqLwogCiAjZGVmaW5lIFJFU1VMVF9TVFJJTkcocylcCi0gICAgeCA9IHN0cjJ1bmkobC0+cyk7ICAgXAorICAgIHggPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGwtPnMsIE5VTEwpOyAgIFwKICAgICBpZiAoIXgpIGdvdG8gZmFpbGVkO1wKICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhyZXN1bHQsICNzLCB4KTtcCiAgICAgUHlfWERFQ1JFRih4KQpAQCAtMjcxLDUxICsyMzQsNDMgQEAKIHN0YXRpYyBQeU9iamVjdCoKIFB5TG9jYWxlX3N0cnhmcm0oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewotICAgIFB5X1VOSUNPREUgKnMwOwotICAgIFB5X3NzaXplX3QgbjA7Ci0gICAgd2NoYXJfdCAqcywgKmJ1ZiA9IE5VTEw7Ci0gICAgc2l6ZV90IG4xLCBuMjsKKyAgICBQeU9iamVjdCAqc3RyOworICAgIFB5X3NzaXplX3QgbjE7CisgICAgd2NoYXJfdCAqcyA9IE5VTEwsICpidWYgPSBOVUxMOworICAgIHNpemVfdCBuMjsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSNpZiBQeV9VTklDT0RFX1NJWkUgIT0gU0laRU9GX1dDSEFSX1QKLSAgICBQeV9zc2l6ZV90IGk7Ci0jZW5kaWYKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSM6c3RyeGZybSIsICZzMCwgJm4wKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6c3RyeGZybSIsICZzdHIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgIHMgPSAod2NoYXJfdCAqKSBzMDsKLSNlbHNlCi0gICAgcyA9IFB5TWVtX01hbGxvYygobjArMSkqc2l6ZW9mKHdjaGFyX3QpKTsKLSAgICBpZiAoIXMpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIGZvciAoaT0wOyBpPD1uMDsgaSsrKQotICAgICAgICBzW2ldID0gczBbaV07Ci0jZW5kaWYKKyAgICBzID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoc3RyLCAmbjEpOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXhpdDsKIAogICAgIC8qIGFzc3VtZSBubyBjaGFuZ2UgaW4gc2l6ZSwgZmlyc3QgKi8KLSAgICBuMSA9IHdjc2xlbihzKSArIDE7Ci0gICAgYnVmID0gUHlNZW1fTWFsbG9jKG4xKnNpemVvZih3Y2hhcl90KSk7CisgICAgbjEgPSBuMSArIDE7CisgICAgYnVmID0gUHlNZW1fTWFsbG9jKG4xICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZiAoIWJ1ZikgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogICAgIG4yID0gd2NzeGZybShidWYsIHMsIG4xKTsKLSAgICBpZiAobjIgPj0gbjEpIHsKKyAgICBpZiAobjIgPj0gKHNpemVfdCluMSkgewogICAgICAgICAvKiBtb3JlIHNwYWNlIG5lZWRlZCAqLwotICAgICAgICBidWYgPSBQeU1lbV9SZWFsbG9jKGJ1ZiwgKG4yKzEpKnNpemVvZih3Y2hhcl90KSk7Ci0gICAgICAgIGlmICghYnVmKSB7CisgICAgICAgIHdjaGFyX3QgKiBuZXdfYnVmID0gUHlNZW1fUmVhbGxvYyhidWYsIChuMisxKSpzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoIW5ld19idWYpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CiAgICAgICAgIH0KKyAgICAgICAgYnVmID0gbmV3X2J1ZjsKICAgICAgICAgbjIgPSB3Y3N4ZnJtKGJ1ZiwgcywgbjIrMSk7CiAgICAgfQogICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoYnVmLCBuMik7Ci0gZXhpdDoKLSAgICBpZiAoYnVmKSBQeU1lbV9GcmVlKGJ1Zik7Ci0jaWYgUHlfVU5JQ09ERV9TSVpFICE9IFNJWkVPRl9XQ0hBUl9UCi0gICAgUHlNZW1fRnJlZShzKTsKLSNlbmRpZgorZXhpdDoKKyAgICBpZiAoYnVmKQorICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgaWYgKHMpCisgICAgICAgIFB5TWVtX0ZyZWUocyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KICNlbmRpZgpAQCAtNDg1LDcgKzQ0MCw3IEBACiAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIGFuIGVtcHR5IHN0cmluZyBmb3IgbmxfbGFuZ2luZm8oRVJBKS4gICovCiAgICAgICAgICAgICBjb25zdCBjaGFyICpyZXN1bHQgPSBubF9sYW5naW5mbyhpdGVtKTsKICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAhPSBOVUxMID8gcmVzdWx0IDogIiI7Ci0gICAgICAgICAgICByZXR1cm4gc3RyMnVuaShyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGUocmVzdWx0LCBOVUxMKTsKICAgICAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5zdXBwb3J0ZWQgbGFuZ2luZm8gY29uc3RhbnQiKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTUwNCw3ICs0NTksNyBAQAogICAgIGNoYXIgKmluOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIsICZpbikpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHIydW5pKGdldHRleHQoaW4pKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShnZXR0ZXh0KGluKSwgTlVMTCk7CiB9CiAKIFB5RG9jX1NUUlZBUihkZ2V0dGV4dF9fZG9jX18sCkBAIC01MTcsNyArNDcyLDcgQEAKICAgICBjaGFyICpkb21haW4sICppbjsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInpzIiwgJmRvbWFpbiwgJmluKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIHN0cjJ1bmkoZGdldHRleHQoZG9tYWluLCBpbikpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGRnZXR0ZXh0KGRvbWFpbiwgaW4pLCBOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKGRjZ2V0dGV4dF9fZG9jX18sCkBAIC01MzEsNyArNDg2LDcgQEAKICAgICBpbnQgY2F0ZWdvcnk7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ6c2kiLCAmZG9tYWluLCAmbXNnaWQsICZjYXRlZ29yeSkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBzdHIydW5pKGRjZ2V0dGV4dChkb21haW4sbXNnaWQsY2F0ZWdvcnkpKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShkY2dldHRleHQoZG9tYWluLG1zZ2lkLGNhdGVnb3J5KSwgTlVMTCk7CiB9CiAKIFB5RG9jX1NUUlZBUih0ZXh0ZG9tYWluX19kb2NfXywKQEAgLTU0OSw3ICs1MDQsNyBAQAogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gc3RyMnVuaShkb21haW4pOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGRvbWFpbiwgTlVMTCk7CiB9CiAKIFB5RG9jX1NUUlZBUihiaW5kdGV4dGRvbWFpbl9fZG9jX18sCkBAIC01ODEsNyArNTM2LDcgQEAKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0ID0gc3RyMnVuaShjdXJyZW50X2Rpcm5hbWUpOworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoY3VycmVudF9kaXJuYW1lLCBOVUxMKTsKICAgICBQeV9YREVDUkVGKGRpcm5hbWVfYnl0ZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01OTksNyArNTU0LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgY29kZXNldCA9IGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KGRvbWFpbiwgY29kZXNldCk7CiAgICAgaWYgKGNvZGVzZXQpCi0gICAgICAgIHJldHVybiBzdHIydW5pKGNvZGVzZXQpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShjb2Rlc2V0LCBOVUxMKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbHNwcm9mLmMgYi9Nb2R1bGVzL19sc3Byb2YuYwppbmRleCBjYzQxMmJmLi5iMGEyMjZiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19sc3Byb2YuYworKysgYi9Nb2R1bGVzL19sc3Byb2YuYwpAQCAtMTc2LDM2ICsxNzYsMjkgQEAKICAgICBpZiAoZm4tPm1fc2VsZiA9PSBOVUxMKSB7CiAgICAgICAgIC8qIGJ1aWx0LWluIGZ1bmN0aW9uOiBsb29rIHVwIHRoZSBtb2R1bGUgbmFtZSAqLwogICAgICAgICBQeU9iamVjdCAqbW9kID0gZm4tPm1fbW9kdWxlOwotICAgICAgICBjb25zdCBjaGFyICptb2RuYW1lOwotICAgICAgICBpZiAobW9kICYmIFB5VW5pY29kZV9DaGVjayhtb2QpKSB7Ci0gICAgICAgICAgICAvKiBYWFg6IFRoZSBmb2xsb3dpbmcgd2lsbCB0cnVuY2F0ZSBtb2R1bGUgbmFtZXMgd2l0aCBlbWJlZGRlZAotICAgICAgICAgICAgICogbnVsbC1jaGFyYWN0ZXJzLiAgSXQgaXMgdW5saWtlbHkgdGhhdCB0aGlzIGNhbiBoYXBwZW4gaW4KLSAgICAgICAgICAgICAqIHByYWN0aWNlIGFuZCB0aGUgY29uY2VxdWVuY2VzIGFyZSBub3Qgc2VyaW91cyBlbm91Z2ggdG8KLSAgICAgICAgICAgICAqIGludHJvZHVjZSBleHRyYSBjaGVja3MgaGVyZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgbW9kbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobW9kKTsKLSAgICAgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBtb2RuYW1lID0gIjxlbmNvZGluZyBlcnJvcj4iOwotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIFB5T2JqZWN0ICptb2RuYW1lID0gTlVMTDsKKyAgICAgICAgaWYgKG1vZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG1vZCkpIHsKKyAgICAgICAgICAgICAgICBtb2RuYW1lID0gbW9kOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2RuYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5TW9kdWxlX0NoZWNrKG1vZCkpIHsKKyAgICAgICAgICAgICAgICBtb2RuYW1lID0gUHlNb2R1bGVfR2V0TmFtZU9iamVjdChtb2QpOworICAgICAgICAgICAgICAgIGlmIChtb2RuYW1lID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobW9kICYmIFB5TW9kdWxlX0NoZWNrKG1vZCkpIHsKLSAgICAgICAgICAgIG1vZG5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKG1vZCk7Ci0gICAgICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBtb2RuYW1lID0gImJ1aWx0aW5zIjsKKyAgICAgICAgaWYgKG1vZG5hbWUgIT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG1vZG5hbWUsICJidWlsdGlucyIpICE9IDApIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JVUuJXM+IiwgbW9kbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbi0+bV9tbC0+bWxfbmFtZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1vZG5hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtb2RuYW1lID0gImJ1aWx0aW5zIjsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3RyY21wKG1vZG5hbWUsICJidWlsdGlucyIpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcy4lcz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm4tPm1fbWwtPm1sX25hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjwlcz4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZuLT5tX21sLT5tbF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JXM+IiwgZm4tPm1fbWwtPm1sX25hbWUpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogYnVpbHQtaW4gbWV0aG9kOiB0cnkgdG8gcmV0dXJuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19sem1hbW9kdWxlLmMgYi9Nb2R1bGVzL19sem1hbW9kdWxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4MmE3NwotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2x6bWFtb2R1bGUuYwpAQCAtMCwwICsxLDEyODYgQEAKKy8qIF9sem1hIC0gTG93LWxldmVsIFB5dGhvbiBpbnRlcmZhY2UgdG8gbGlibHptYS4KKworICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiBieSBQZXIgw5h5dmluZCBLYXJsc2VuLgorICAgUmV3cml0dGVuIGJ5IE5hZGVlbSBWYXdkYS4KKworKi8KKworI2RlZmluZSBQWV9TU0laRV9UX0NMRUFOCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKyNpZmRlZiBXSVRIX1RIUkVBRAorI2luY2x1ZGUgInB5dGhyZWFkLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSA8bHptYS5oPgorCisKKyNpZm5kZWYgUFlfTE9OR19MT05HCisjZXJyb3IgIlRoaXMgbW9kdWxlIHJlcXVpcmVzIFBZX0xPTkdfTE9ORyB0byBiZSBkZWZpbmVkIgorI2VuZGlmCisKKworI2lmZGVmIFdJVEhfVEhSRUFECisjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAorICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKChvYmopLT5sb2NrLCAwKSkgeyBcCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMgXAorICAgICAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2soKG9iaiktPmxvY2ssIDEpOyBcCisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTIFwKKyAgICB9IH0gd2hpbGUgKDApCisjZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopIFB5VGhyZWFkX3JlbGVhc2VfbG9jaygob2JqKS0+bG9jaykKKyNlbHNlCisjZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopCisjZGVmaW5lIFJFTEVBU0VfTE9DSyhvYmopCisjZW5kaWYKKworCisvKiBDb250YWluZXIgZm9ybWF0czogKi8KK2VudW0geworICAgIEZPUk1BVF9BVVRPLAorICAgIEZPUk1BVF9YWiwKKyAgICBGT1JNQVRfQUxPTkUsCisgICAgRk9STUFUX1JBVywKK307CisKKyNkZWZpbmUgTFpNQV9DSEVDS19VTktOT1dOIChMWk1BX0NIRUNLX0lEX01BWCArIDEpCisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBsem1hX3N0cmVhbSBsenM7CisgICAgaW50IGZsdXNoZWQ7CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9jazsKKyNlbmRpZgorfSBDb21wcmVzc29yOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGx6bWFfc3RyZWFtIGx6czsKKyAgICBpbnQgY2hlY2s7CisgICAgY2hhciBlb2Y7CisgICAgUHlPYmplY3QgKnVudXNlZF9kYXRhOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7CisjZW5kaWYKK30gRGVjb21wcmVzc29yOworCisvKiBMWk1BRXJyb3IgY2xhc3Mgb2JqZWN0LiAqLworc3RhdGljIFB5T2JqZWN0ICpFcnJvcjsKKworLyogQW4gZW1wdHkgdHVwbGUsIHVzZWQgYnkgdGhlIGZpbHRlciBzcGVjaWZpZXIgcGFyc2luZyBjb2RlLiAqLworc3RhdGljIFB5T2JqZWN0ICplbXB0eV90dXBsZTsKKworCisvKiBIZWxwZXIgZnVuY3Rpb25zLiAqLworCitzdGF0aWMgaW50CitjYXRjaF9sem1hX2Vycm9yKGx6bWFfcmV0IGx6cmV0KQoreworICAgIHN3aXRjaCAobHpyZXQpIHsKKyAgICAgICAgY2FzZSBMWk1BX09LOgorICAgICAgICBjYXNlIExaTUFfR0VUX0NIRUNLOgorICAgICAgICBjYXNlIExaTUFfTk9fQ0hFQ0s6CisgICAgICAgIGNhc2UgTFpNQV9TVFJFQU1fRU5EOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTFpNQV9VTlNVUFBPUlRFRF9DSEVDSzoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIlVuc3VwcG9ydGVkIGludGVncml0eSBjaGVjayIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9NRU1fRVJST1I6CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9NRU1MSU1JVF9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIk1lbW9yeSB1c2FnZSBsaW1pdCBleGNlZWRlZCIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9GT1JNQVRfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbnB1dCBmb3JtYXQgbm90IHN1cHBvcnRlZCBieSBkZWNvZGVyIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX09QVElPTlNfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbnZhbGlkIG9yIHVuc3VwcG9ydGVkIG9wdGlvbnMiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIExaTUFfREFUQV9FUlJPUjoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhFcnJvciwgIkNvcnJ1cHQgaW5wdXQgZGF0YSIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTFpNQV9CVUZfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbnN1ZmZpY2llbnQgYnVmZmVyIHNwYWNlIik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBMWk1BX1BST0dfRVJST1I6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoRXJyb3IsICJJbnRlcm5hbCBlcnJvciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoRXJyb3IsICJVbnJlY29nbml6ZWQgZXJyb3IgZnJvbSBsaWJsem1hOiAlZCIsIGx6cmV0KTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKworI2lmIEJVRlNJWiA8IDgxOTIKKyNkZWZpbmUgSU5JVElBTF9CVUZGRVJfU0laRSA4MTkyCisjZWxzZQorI2RlZmluZSBJTklUSUFMX0JVRkZFUl9TSVpFIEJVRlNJWgorI2VuZGlmCisKK3N0YXRpYyBpbnQKK2dyb3dfYnVmZmVyKFB5T2JqZWN0ICoqYnVmKQoreworICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1Ziwgc2l6ZSArIChzaXplID4+IDMpICsgNik7Cit9CisKKworLyogU29tZSBjdXN0b20gdHlwZSBjb252ZXJzaW9ucyBmb3IgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCksCisgICBzaW5jZSB0aGUgcHJlZGVmaW5lZCBjb252ZXJzaW9uIHNwZWNpZmllcnMgZG8gbm90IHN1aXQgb3VyIG5lZWRzOgorCisgICAgICB1aW50MzJfdCAtIHRoZSAiSSIgKHVuc2lnbmVkIGludCkgc3BlY2lmaWVyIGlzIHRoZSByaWdodCBzaXplLCBidXQKKyAgICAgIHNpbGVudGx5IGlnbm9yZXMgb3ZlcmZsb3dzIG9uIGNvbnZlcnNpb24uCisKKyAgICAgIGx6bWFfdmxpIC0gdGhlICJLIiAodW5zaWduZWQgUFlfTE9OR19MT05HKSBzcGVjaWZpZXIgaXMgdGhlIHJpZ2h0CisgICAgICBzaXplLCBidXQgbGlrZSAiSSIgaXQgc2lsZW50bHkgaWdub3JlcyBvdmVyZmxvd3Mgb24gY29udmVyc2lvbi4KKworICAgICAgbHptYV9tb2RlIGFuZCBsem1hX21hdGNoX2ZpbmRlciAtIHRoZXNlIGFyZSBlbnVtZXJhdGlvbiB0eXBlcywgYW5kCisgICAgICBzbyB0aGUgc2l6ZSBvZiBlYWNoIGlzIGltcGxlbWVudGF0aW9uLWRlZmluZWQuIFdvcnNlLCBkaWZmZXJlbnQKKyAgICAgIGVudW0gdHlwZXMgY2FuIGJlIG9mIGRpZmZlcmVudCBzaXplcyB3aXRoaW4gdGhlIHNhbWUgcHJvZ3JhbSwgc28KKyAgICAgIHRvIGJlIHN0cmljdGx5IGNvcnJlY3QsIHdlIG5lZWQgdG8gZGVmaW5lIHR3byBzZXBhcmF0ZSBjb252ZXJ0ZXJzLgorICovCisKKyNkZWZpbmUgSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMoVFlQRSwgRlVOQ05BTUUpIFwKKyAgICBzdGF0aWMgaW50IFwKKyAgICBGVU5DTkFNRShQeU9iamVjdCAqb2JqLCB2b2lkICpwdHIpIFwKKyAgICB7IFwKKyAgICAgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHZhbDsgXAorICAgICAgICBcCisgICAgICAgIHZhbCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcob2JqKTsgXAorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgXAorICAgICAgICAgICAgcmV0dXJuIDA7IFwKKyAgICAgICAgaWYgKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpKFRZUEUpdmFsICE9IHZhbCkgeyBcCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWx1ZSB0b28gbGFyZ2UgZm9yICIgI1RZUEUgIiB0eXBlIik7IFwKKyAgICAgICAgICAgIHJldHVybiAwOyBcCisgICAgICAgIH0gXAorICAgICAgICAqKFRZUEUgKilwdHIgPSAoVFlQRSl2YWw7IFwKKyAgICAgICAgcmV0dXJuIDE7IFwKKyAgICB9CisKK0lOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKHVpbnQzMl90LCB1aW50MzJfY29udmVydGVyKQorSU5UX1RZUEVfQ09OVkVSVEVSX0ZVTkMobHptYV92bGksIGx6bWFfdmxpX2NvbnZlcnRlcikKK0lOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKGx6bWFfbW9kZSwgbHptYV9tb2RlX2NvbnZlcnRlcikKK0lOVF9UWVBFX0NPTlZFUlRFUl9GVU5DKGx6bWFfbWF0Y2hfZmluZGVyLCBsem1hX21mX2NvbnZlcnRlcikKKworI3VuZGVmIElOVF9UWVBFX0NPTlZFUlRFUl9GVU5DCisKKworLyogRmlsdGVyIHNwZWNpZmllciBwYXJzaW5nLgorCisgICBUaGlzIGNvZGUgaGFuZGxlcyBjb252ZXJ0aW5nIGZpbHRlciBzcGVjaWZpZXJzIChQeXRob24gZGljdHMpIGludG8KKyAgIHRoZSBDIGx6bWFfZmlsdGVyIHN0cnVjdHMgZXhwZWN0ZWQgYnkgbGlibHptYS4gKi8KKworc3RhdGljIHZvaWQgKgorcGFyc2VfZmlsdGVyX3NwZWNfbHptYShQeU9iamVjdCAqc3BlYykKK3sKKyAgICBzdGF0aWMgY2hhciAqb3B0bmFtZXNbXSA9IHsiaWQiLCAicHJlc2V0IiwgImRpY3Rfc2l6ZSIsICJsYyIsICJscCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBiIiwgIm1vZGUiLCAibmljZV9sZW4iLCAibWYiLCAiZGVwdGgiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaWQ7CisgICAgUHlPYmplY3QgKnByZXNldF9vYmo7CisgICAgdWludDMyX3QgcHJlc2V0ID0gTFpNQV9QUkVTRVRfREVGQVVMVDsKKyAgICBsem1hX29wdGlvbnNfbHptYSAqb3B0aW9uczsKKworICAgIC8qIEZpcnN0LCBmaWxsIGluIGRlZmF1bHQgdmFsdWVzIGZvciBhbGwgdGhlIG9wdGlvbnMgdXNpbmcgYSBwcmVzZXQuCisgICAgICAgVGhlbiwgb3ZlcnJpZGUgdGhlIGRlZmF1bHRzIHdpdGggYW55IHZhbHVlcyBnaXZlbiBieSB0aGUgY2FsbGVyLiAqLworCisgICAgcHJlc2V0X29iaiA9IFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nKHNwZWMsICJwcmVzZXQiKTsKKyAgICBpZiAocHJlc2V0X29iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIGludCBvayA9IHVpbnQzMl9jb252ZXJ0ZXIocHJlc2V0X29iaiwgJnByZXNldCk7CisgICAgICAgIFB5X0RFQ1JFRihwcmVzZXRfb2JqKTsKKyAgICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9wdGlvbnMgPSAobHptYV9vcHRpb25zX2x6bWEgKilQeU1lbV9NYWxsb2Moc2l6ZW9mICpvcHRpb25zKTsKKyAgICBpZiAob3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1zZXQob3B0aW9ucywgMCwgc2l6ZW9mICpvcHRpb25zKTsKKworICAgIGlmIChsem1hX2x6bWFfcHJlc2V0KG9wdGlvbnMsIHByZXNldCkpIHsKKyAgICAgICAgUHlNZW1fRnJlZShvcHRpb25zKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KEVycm9yLCAiSW52YWxpZCBjb21wcmVzc2lvbiBwcmVzZXQ6ICVkIiwgcHJlc2V0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZW1wdHlfdHVwbGUsIHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxPT08mTyZPJk8mTyZPJk8mTyYiLCBvcHRuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWQsICZwcmVzZXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5kaWN0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPmxjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl9jb252ZXJ0ZXIsICZvcHRpb25zLT5scCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfY29udmVydGVyLCAmb3B0aW9ucy0+cGIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHptYV9tb2RlX2NvbnZlcnRlciwgJm9wdGlvbnMtPm1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPm5pY2VfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6bWFfbWZfY29udmVydGVyLCAmb3B0aW9ucy0+bWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX2NvbnZlcnRlciwgJm9wdGlvbnMtPmRlcHRoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGZpbHRlciBzcGVjaWZpZXIgZm9yIExaTUEgZmlsdGVyIik7CisgICAgICAgIFB5TWVtX0ZyZWUob3B0aW9ucyk7CisgICAgICAgIG9wdGlvbnMgPSBOVUxMOworICAgIH0KKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIHZvaWQgKgorcGFyc2VfZmlsdGVyX3NwZWNfZGVsdGEoUHlPYmplY3QgKnNwZWMpCit7CisgICAgc3RhdGljIGNoYXIgKm9wdG5hbWVzW10gPSB7ImlkIiwgImRpc3QiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqaWQ7CisgICAgdWludDMyX3QgZGlzdCA9IDE7CisgICAgbHptYV9vcHRpb25zX2RlbHRhICpvcHRpb25zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoZW1wdHlfdHVwbGUsIHNwZWMsICJ8T08mIiwgb3B0bmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlkLCB1aW50MzJfY29udmVydGVyLCAmZGlzdCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWx0ZXIgc3BlY2lmaWVyIGZvciBkZWx0YSBmaWx0ZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb3B0aW9ucyA9IChsem1hX29wdGlvbnNfZGVsdGEgKilQeU1lbV9NYWxsb2Moc2l6ZW9mICpvcHRpb25zKTsKKyAgICBpZiAob3B0aW9ucyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBtZW1zZXQob3B0aW9ucywgMCwgc2l6ZW9mICpvcHRpb25zKTsKKyAgICBvcHRpb25zLT50eXBlID0gTFpNQV9ERUxUQV9UWVBFX0JZVEU7CisgICAgb3B0aW9ucy0+ZGlzdCA9IGRpc3Q7CisgICAgcmV0dXJuIG9wdGlvbnM7Cit9CisKK3N0YXRpYyB2b2lkICoKK3BhcnNlX2ZpbHRlcl9zcGVjX2JjaihQeU9iamVjdCAqc3BlYykKK3sKKyAgICBzdGF0aWMgY2hhciAqb3B0bmFtZXNbXSA9IHsiaWQiLCAic3RhcnRfb2Zmc2V0IiwgTlVMTH07CisgICAgUHlPYmplY3QgKmlkOworICAgIHVpbnQzMl90IHN0YXJ0X29mZnNldCA9IDA7CisgICAgbHptYV9vcHRpb25zX2JjaiAqb3B0aW9uczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGVtcHR5X3R1cGxlLCBzcGVjLCAifE9PJiIsIG9wdG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZCwgdWludDMyX2NvbnZlcnRlciwgJnN0YXJ0X29mZnNldCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWx0ZXIgc3BlY2lmaWVyIGZvciBCQ0ogZmlsdGVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9wdGlvbnMgPSAobHptYV9vcHRpb25zX2JjaiAqKVB5TWVtX01hbGxvYyhzaXplb2YgKm9wdGlvbnMpOworICAgIGlmIChvcHRpb25zID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG1lbXNldChvcHRpb25zLCAwLCBzaXplb2YgKm9wdGlvbnMpOworICAgIG9wdGlvbnMtPnN0YXJ0X29mZnNldCA9IHN0YXJ0X29mZnNldDsKKyAgICByZXR1cm4gb3B0aW9uczsKK30KKworc3RhdGljIHZvaWQgKgorcGFyc2VfZmlsdGVyX3NwZWMobHptYV9maWx0ZXIgKmYsIFB5T2JqZWN0ICpzcGVjKQoreworICAgIFB5T2JqZWN0ICppZF9vYmo7CisKKyAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhzcGVjKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkZpbHRlciBzcGVjaWZpZXIgbXVzdCBiZSBhIGRpY3Qgb3IgZGljdC1saWtlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWRfb2JqID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcoc3BlYywgImlkIik7CisgICAgaWYgKGlkX29iaiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaWx0ZXIgc3BlY2lmaWVyIG11c3QgaGF2ZSBhbiBcImlkXCIgZW50cnkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGYtPmlkID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhpZF9vYmopOworICAgIFB5X0RFQ1JFRihpZF9vYmopOworICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHN3aXRjaCAoZi0+aWQpIHsKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9MWk1BMToKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9MWk1BMjoKKyAgICAgICAgICAgIGYtPm9wdGlvbnMgPSBwYXJzZV9maWx0ZXJfc3BlY19sem1hKHNwZWMpOworICAgICAgICAgICAgcmV0dXJuIGYtPm9wdGlvbnM7CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfREVMVEE6CisgICAgICAgICAgICBmLT5vcHRpb25zID0gcGFyc2VfZmlsdGVyX3NwZWNfZGVsdGEoc3BlYyk7CisgICAgICAgICAgICByZXR1cm4gZi0+b3B0aW9uczsKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9YODY6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfUE9XRVJQQzoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9JQTY0OgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX0FSTToKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9BUk1USFVNQjoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9TUEFSQzoKKyAgICAgICAgICAgIGYtPm9wdGlvbnMgPSBwYXJzZV9maWx0ZXJfc3BlY19iY2ooc3BlYyk7CisgICAgICAgICAgICByZXR1cm4gZi0+b3B0aW9uczsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBmaWx0ZXIgSUQ6ICVsbHUiLCBmLT5pZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2ZpbHRlcl9jaGFpbihsem1hX2ZpbHRlciBmaWx0ZXJzW10pCit7CisgICAgaW50IGk7CisKKyAgICBmb3IgKGkgPSAwOyBmaWx0ZXJzW2ldLmlkICE9IExaTUFfVkxJX1VOS05PV047IGkrKykKKyAgICAgICAgUHlNZW1fRnJlZShmaWx0ZXJzW2ldLm9wdGlvbnMpOworfQorCitzdGF0aWMgaW50CitwYXJzZV9maWx0ZXJfY2hhaW5fc3BlYyhsem1hX2ZpbHRlciBmaWx0ZXJzW10sIFB5T2JqZWN0ICpmaWx0ZXJzcGVjcykKK3sKKyAgICBQeV9zc2l6ZV90IGksIG51bV9maWx0ZXJzOworCisgICAgbnVtX2ZpbHRlcnMgPSBQeVNlcXVlbmNlX0xlbmd0aChmaWx0ZXJzcGVjcyk7CisgICAgaWYgKG51bV9maWx0ZXJzID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKG51bV9maWx0ZXJzID4gTFpNQV9GSUxURVJTX01BWCkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBmaWx0ZXJzIC0gbGlibHptYSBzdXBwb3J0cyBhIG1heGltdW0gb2YgJWQiLAorICAgICAgICAgICAgICAgICAgICAgTFpNQV9GSUxURVJTX01BWCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2ZpbHRlcnM7IGkrKykgeworICAgICAgICBpbnQgb2sgPSAxOworICAgICAgICBQeU9iamVjdCAqc3BlYyA9IFB5U2VxdWVuY2VfR2V0SXRlbShmaWx0ZXJzcGVjcywgaSk7CisgICAgICAgIGlmIChzcGVjID09IE5VTEwgfHwgcGFyc2VfZmlsdGVyX3NwZWMoJmZpbHRlcnNbaV0sIHNwZWMpID09IE5VTEwpCisgICAgICAgICAgICBvayA9IDA7CisgICAgICAgIFB5X1hERUNSRUYoc3BlYyk7CisgICAgICAgIGlmICghb2spIHsKKyAgICAgICAgICAgIGZpbHRlcnNbaV0uaWQgPSBMWk1BX1ZMSV9VTktOT1dOOworICAgICAgICAgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZmlsdGVyc1tudW1fZmlsdGVyc10uaWQgPSBMWk1BX1ZMSV9VTktOT1dOOworICAgIHJldHVybiAwOworfQorCisKKy8qIEZpbHRlciBzcGVjaWZpZXIgY29uc3RydWN0aW9uLgorCisgICBUaGlzIGNvZGUgaGFuZGxlcyBjb252ZXJ0aW5nIEMgbHptYV9maWx0ZXIgc3RydWN0cyBpbnRvCisgICBQeXRob24tbGV2ZWwgZmlsdGVyIHNwZWNpZmllcnMgKHJlcHJlc2VudGVkIGFzIGRpY3RzKS4gKi8KKworc3RhdGljIGludAorc3BlY19hZGRfZmllbGQoUHlPYmplY3QgKnNwZWMsIF9QeV9JZGVudGlmaWVyICprZXksIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2YWx1ZSkKK3sKKyAgICBpbnQgc3RhdHVzOworICAgIFB5T2JqZWN0ICp2YWx1ZV9vYmplY3Q7CisKKyAgICB2YWx1ZV9vYmplY3QgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodmFsdWUpOworICAgIGlmICh2YWx1ZV9vYmplY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3RhdHVzID0gX1B5RGljdF9TZXRJdGVtSWQoc3BlYywga2V5LCB2YWx1ZV9vYmplY3QpOworICAgIFB5X0RFQ1JFRih2YWx1ZV9vYmplY3QpOworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitidWlsZF9maWx0ZXJfc3BlYyhjb25zdCBsem1hX2ZpbHRlciAqZikKK3sKKyAgICBQeU9iamVjdCAqc3BlYzsKKworICAgIHNwZWMgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKHNwZWMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNkZWZpbmUgQUREX0ZJRUxEKFNPVVJDRSwgRklFTEQpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgX1B5X0lERU5USUZJRVIoRklFTEQpOyBcCisgICAgICAgIGlmIChzcGVjX2FkZF9maWVsZChzcGVjLCAmUHlJZF8jI0ZJRUxELCBTT1VSQ0UtPkZJRUxEKSA9PSAtMSkgXAorICAgICAgICAgICAgZ290byBlcnJvcjtcCisgICAgfSB3aGlsZSAoMCkKKworICAgIEFERF9GSUVMRChmLCBpZCk7CisKKyAgICBzd2l0Y2ggKGYtPmlkKSB7CisgICAgICAgIC8qIEZvciBMWk1BMSBmaWx0ZXJzLCBsem1hX3Byb3BlcnRpZXNfe2VuY29kZSxkZWNvZGV9KCkgb25seSBsb29rIGF0IHRoZQorICAgICAgICAgICBsYywgbHAsIHBiLCBhbmQgZGljdF9zaXplIGZpZWxkcy4gRm9yIExaTUEyIGZpbHRlcnMsIG9ubHkgdGhlCisgICAgICAgICAgIGRpY3Rfc2l6ZSBmaWVsZCBpcyB1c2VkLiAqLworICAgICAgICBjYXNlIExaTUFfRklMVEVSX0xaTUExOiB7CisgICAgICAgICAgICBsem1hX29wdGlvbnNfbHptYSAqb3B0aW9ucyA9IGYtPm9wdGlvbnM7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgbGMpOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIGxwKTsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBwYik7CisgICAgICAgICAgICBBRERfRklFTEQob3B0aW9ucywgZGljdF9zaXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfTFpNQTI6IHsKKyAgICAgICAgICAgIGx6bWFfb3B0aW9uc19sem1hICpvcHRpb25zID0gZi0+b3B0aW9uczsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBkaWN0X3NpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9ERUxUQTogeworICAgICAgICAgICAgbHptYV9vcHRpb25zX2RlbHRhICpvcHRpb25zID0gZi0+b3B0aW9uczsKKyAgICAgICAgICAgIEFERF9GSUVMRChvcHRpb25zLCBkaXN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfWDg2OgorICAgICAgICBjYXNlIExaTUFfRklMVEVSX1BPV0VSUEM6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfSUE2NDoKKyAgICAgICAgY2FzZSBMWk1BX0ZJTFRFUl9BUk06CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfQVJNVEhVTUI6CisgICAgICAgIGNhc2UgTFpNQV9GSUxURVJfU1BBUkM6IHsKKyAgICAgICAgICAgIGx6bWFfb3B0aW9uc19iY2ogKm9wdGlvbnMgPSBmLT5vcHRpb25zOworICAgICAgICAgICAgQUREX0ZJRUxEKG9wdGlvbnMsIHN0YXJ0X29mZnNldCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGZpbHRlciBJRDogJWxsdSIsIGYtPmlkKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisjdW5kZWYgQUREX0ZJRUxECisKKyAgICByZXR1cm4gc3BlYzsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKHNwZWMpOworICAgIHJldHVybiBOVUxMOworfQorCisKKy8qIExaTUFDb21wcmVzc29yIGNsYXNzLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorY29tcHJlc3MoQ29tcHJlc3NvciAqYywgdWludDhfdCAqZGF0YSwgc2l6ZV90IGxlbiwgbHptYV9hY3Rpb24gYWN0aW9uKQoreworICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYy0+bHpzLm5leHRfaW4gPSBkYXRhOworICAgIGMtPmx6cy5hdmFpbF9pbiA9IGxlbjsKKyAgICBjLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgYy0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgbHpyZXQgPSBsem1hX2NvZGUoJmMtPmx6cywgYWN0aW9uKTsKKyAgICAgICAgZGF0YV9zaXplID0gKGNoYXIgKiljLT5senMubmV4dF9vdXQgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoKGFjdGlvbiA9PSBMWk1BX1JVTiAmJiBjLT5senMuYXZhaWxfaW4gPT0gMCkgfHwKKyAgICAgICAgICAgIChhY3Rpb24gPT0gTFpNQV9GSU5JU0ggJiYgbHpyZXQgPT0gTFpNQV9TVFJFQU1fRU5EKSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoYy0+bHpzLmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGMtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGMtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoQ29tcHJlc3Nvcl9jb21wcmVzc19kb2MsCisiY29tcHJlc3MoZGF0YSkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJQcm92aWRlIGRhdGEgdG8gdGhlIGNvbXByZXNzb3Igb2JqZWN0LiBSZXR1cm5zIGEgY2h1bmsgb2ZcbiIKKyJjb21wcmVzc2VkIGRhdGEgaWYgcG9zc2libGUsIG9yIGJcIlwiIG90aGVyd2lzZS5cbiIKKyJcbiIKKyJXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIHByb3ZpZGluZyBkYXRhIHRvIHRoZSBjb21wcmVzc29yLCBjYWxsIHRoZVxuIgorImZsdXNoKCkgbWV0aG9kIHRvIGZpbmlzaCB0aGUgY29udmVyc2lvbiBwcm9jZXNzLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitDb21wcmVzc29yX2NvbXByZXNzKENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBidWZmZXI7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmNvbXByZXNzIiwgJmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5mbHVzaGVkKQorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNvbXByZXNzb3IgaGFzIGJlZW4gZmx1c2hlZCIpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gY29tcHJlc3Moc2VsZiwgYnVmZmVyLmJ1ZiwgYnVmZmVyLmxlbiwgTFpNQV9SVU4pOworICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5RG9jX1NUUlZBUihDb21wcmVzc29yX2ZsdXNoX2RvYywKKyJmbHVzaCgpIC0+IGJ5dGVzXG4iCisiXG4iCisiRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzLiBSZXR1cm5zIHRoZSBjb21wcmVzc2VkIGRhdGEgbGVmdFxuIgorImluIGludGVybmFsIGJ1ZmZlcnMuXG4iCisiXG4iCisiVGhlIGNvbXByZXNzb3Igb2JqZWN0IGNhbm5vdCBiZSB1c2VkIGFmdGVyIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorQ29tcHJlc3Nvcl9mbHVzaChDb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgQUNRVUlSRV9MT0NLKHNlbGYpOworICAgIGlmIChzZWxmLT5mbHVzaGVkKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiUmVwZWF0ZWQgY2FsbCB0byBmbHVzaCgpIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc2VsZi0+Zmx1c2hlZCA9IDE7CisgICAgICAgIHJlc3VsdCA9IGNvbXByZXNzKHNlbGYsIE5VTEwsIDAsIExaTUFfRklOSVNIKTsKKyAgICB9CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0NvbXByZXNzb3JfaW5pdF94eihsem1hX3N0cmVhbSAqbHpzLCBpbnQgY2hlY2ssIHVpbnQzMl90IHByZXNldCwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAoZmlsdGVyc3BlY3MgPT0gUHlfTm9uZSkgeworICAgICAgICBsenJldCA9IGx6bWFfZWFzeV9lbmNvZGVyKGx6cywgcHJlc2V0LCBjaGVjayk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbHptYV9maWx0ZXIgZmlsdGVyc1tMWk1BX0ZJTFRFUlNfTUFYICsgMV07CisKKyAgICAgICAgaWYgKHBhcnNlX2ZpbHRlcl9jaGFpbl9zcGVjKGZpbHRlcnMsIGZpbHRlcnNwZWNzKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgbHpyZXQgPSBsem1hX3N0cmVhbV9lbmNvZGVyKGx6cywgZmlsdGVycywgY2hlY2spOworICAgICAgICBmcmVlX2ZpbHRlcl9jaGFpbihmaWx0ZXJzKTsKKyAgICB9CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorQ29tcHJlc3Nvcl9pbml0X2Fsb25lKGx6bWFfc3RyZWFtICpsenMsIHVpbnQzMl90IHByZXNldCwgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKGZpbHRlcnNwZWNzID09IFB5X05vbmUpIHsKKyAgICAgICAgbHptYV9vcHRpb25zX2x6bWEgb3B0aW9uczsKKworICAgICAgICBpZiAobHptYV9sem1hX3ByZXNldCgmb3B0aW9ucywgcHJlc2V0KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KEVycm9yLCAiSW52YWxpZCBjb21wcmVzc2lvbiBwcmVzZXQ6ICVkIiwgcHJlc2V0KTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBsenJldCA9IGx6bWFfYWxvbmVfZW5jb2RlcihsenMsICZvcHRpb25zKTsKKyAgICB9IGVsc2UgeworICAgICAgICBsem1hX2ZpbHRlciBmaWx0ZXJzW0xaTUFfRklMVEVSU19NQVggKyAxXTsKKworICAgICAgICBpZiAocGFyc2VfZmlsdGVyX2NoYWluX3NwZWMoZmlsdGVycywgZmlsdGVyc3BlY3MpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZmlsdGVyc1swXS5pZCA9PSBMWk1BX0ZJTFRFUl9MWk1BMSAmJgorICAgICAgICAgICAgZmlsdGVyc1sxXS5pZCA9PSBMWk1BX1ZMSV9VTktOT1dOKSB7CisgICAgICAgICAgICBsenJldCA9IGx6bWFfYWxvbmVfZW5jb2RlcihsenMsIGZpbHRlcnNbMF0ub3B0aW9ucyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmaWx0ZXIgY2hhaW4gZm9yIEZPUk1BVF9BTE9ORSAtICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIHNpbmdsZSBMWk1BMSBmaWx0ZXIiKTsKKyAgICAgICAgICAgIGx6cmV0ID0gTFpNQV9QUk9HX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGZyZWVfZmlsdGVyX2NoYWluKGZpbHRlcnMpOworICAgIH0KKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSB8fCBjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0NvbXByZXNzb3JfaW5pdF9yYXcobHptYV9zdHJlYW0gKmx6cywgUHlPYmplY3QgKmZpbHRlcnNwZWNzKQoreworICAgIGx6bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKGZpbHRlcnNwZWNzID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBzcGVjaWZ5IGZpbHRlcnMgZm9yIEZPUk1BVF9SQVciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocGFyc2VfZmlsdGVyX2NoYWluX3NwZWMoZmlsdGVycywgZmlsdGVyc3BlY3MpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbHpyZXQgPSBsem1hX3Jhd19lbmNvZGVyKGx6cywgZmlsdGVycyk7CisgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorQ29tcHJlc3Nvcl9pbml0KENvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICphcmdfbmFtZXNbXSA9IHsiZm9ybWF0IiwgImNoZWNrIiwgInByZXNldCIsICJmaWx0ZXJzIiwgTlVMTH07CisgICAgaW50IGZvcm1hdCA9IEZPUk1BVF9YWjsKKyAgICBpbnQgY2hlY2sgPSAtMTsKKyAgICB1aW50MzJfdCBwcmVzZXQgPSBMWk1BX1BSRVNFVF9ERUZBVUxUOworICAgIFB5T2JqZWN0ICpwcmVzZXRfb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZmlsdGVyc3BlY3MgPSBQeV9Ob25lOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8aWlPTzpMWk1BQ29tcHJlc3NvciIsIGFyZ19uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAmY2hlY2ssICZwcmVzZXRfb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWx0ZXJzcGVjcykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChmb3JtYXQgIT0gRk9STUFUX1haICYmIGNoZWNrICE9IC0xICYmIGNoZWNrICE9IExaTUFfQ0hFQ0tfTk9ORSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlZ3JpdHkgY2hlY2tzIGFyZSBvbmx5IHN1cHBvcnRlZCBieSBGT1JNQVRfWFoiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChwcmVzZXRfb2JqICE9IFB5X05vbmUgJiYgZmlsdGVyc3BlY3MgIT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSBib3RoIHByZXNldCBhbmQgZmlsdGVyIGNoYWluIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocHJlc2V0X29iaiAhPSBQeV9Ob25lKQorICAgICAgICBpZiAoIXVpbnQzMl9jb252ZXJ0ZXIocHJlc2V0X29iaiwgJnByZXNldCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgaWYgKHNlbGYtPmxvY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJVbmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisKKyAgICBzZWxmLT5mbHVzaGVkID0gMDsKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICBjYXNlIEZPUk1BVF9YWjoKKyAgICAgICAgICAgIGlmIChjaGVjayA9PSAtMSkKKyAgICAgICAgICAgICAgICBjaGVjayA9IExaTUFfQ0hFQ0tfQ1JDNjQ7CisgICAgICAgICAgICBpZiAoQ29tcHJlc3Nvcl9pbml0X3h6KCZzZWxmLT5senMsIGNoZWNrLCBwcmVzZXQsIGZpbHRlcnNwZWNzKSAhPSAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgY2FzZSBGT1JNQVRfQUxPTkU6CisgICAgICAgICAgICBpZiAoQ29tcHJlc3Nvcl9pbml0X2Fsb25lKCZzZWxmLT5senMsIHByZXNldCwgZmlsdGVyc3BlY3MpICE9IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9SQVc6CisgICAgICAgICAgICBpZiAoQ29tcHJlc3Nvcl9pbml0X3Jhdygmc2VsZi0+bHpzLCBmaWx0ZXJzcGVjcykgIT0gMCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBjb250YWluZXIgZm9ybWF0OiAlZCIsIGZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyAgICBzZWxmLT5sb2NrID0gTlVMTDsKKyNlbmRpZgorICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIHZvaWQKK0NvbXByZXNzb3JfZGVhbGxvYyhDb21wcmVzc29yICpzZWxmKQoreworICAgIGx6bWFfZW5kKCZzZWxmLT5senMpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKHNlbGYtPmxvY2sgIT0gTlVMTCkKKyAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworI2VuZGlmCisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIENvbXByZXNzb3JfbWV0aG9kc1tdID0geworICAgIHsiY29tcHJlc3MiLCAoUHlDRnVuY3Rpb24pQ29tcHJlc3Nvcl9jb21wcmVzcywgTUVUSF9WQVJBUkdTLAorICAgICBDb21wcmVzc29yX2NvbXByZXNzX2RvY30sCisgICAgeyJmbHVzaCIsIChQeUNGdW5jdGlvbilDb21wcmVzc29yX2ZsdXNoLCBNRVRIX05PQVJHUywKKyAgICAgQ29tcHJlc3Nvcl9mbHVzaF9kb2N9LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKENvbXByZXNzb3JfZG9jLAorIkxaTUFDb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfWFosIGNoZWNrPS0xLCBwcmVzZXQ9Tm9uZSwgZmlsdGVycz1Ob25lKVxuIgorIlxuIgorIkNyZWF0ZSBhIGNvbXByZXNzb3Igb2JqZWN0IGZvciBjb21wcmVzc2luZyBkYXRhIGluY3JlbWVudGFsbHkuXG4iCisiXG4iCisiZm9ybWF0IHNwZWNpZmllcyB0aGUgY29udGFpbmVyIGZvcm1hdCB0byB1c2UgZm9yIHRoZSBvdXRwdXQuIFRoaXMgY2FuXG4iCisiYmUgRk9STUFUX1haIChkZWZhdWx0KSwgRk9STUFUX0FMT05FLCBvciBGT1JNQVRfUkFXLlxuIgorIlxuIgorImNoZWNrIHNwZWNpZmllcyB0aGUgaW50ZWdyaXR5IGNoZWNrIHRvIHVzZS4gRm9yIEZPUk1BVF9YWiwgdGhlIGRlZmF1bHRcbiIKKyJpcyBDSEVDS19DUkM2NC4gRk9STUFUX0FMT05FIGFuZCBGT1JNQVRfUkFXIGRvIG5vdCBzdXBvcnQgaW50ZWdyaXR5XG4iCisiY2hlY2tzOyBmb3IgdGhlc2UgZm9ybWF0cywgY2hlY2sgbXVzdCBiZSBvbWl0dGVkLCBvciBiZSBDSEVDS19OT05FLlxuIgorIlxuIgorIlRoZSBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBjb21wcmVzc29yIGNhbiBiZSBzcGVjaWZpZWQgZWl0aGVyIGFzIGFcbiIKKyJwcmVzZXQgY29tcHJlc3Npb24gbGV2ZWwgKHdpdGggdGhlICdwcmVzZXQnIGFyZ3VtZW50KSwgb3IgaW4gZGV0YWlsXG4iCisiYXMgYSBjdXN0b20gZmlsdGVyIGNoYWluICh3aXRoIHRoZSAnZmlsdGVycycgYXJndW1lbnQpLiBGb3IgRk9STUFUX1haXG4iCisiYW5kIEZPUk1BVF9BTE9ORSwgdGhlIGRlZmF1bHQgaXMgdG8gdXNlIHRoZSBQUkVTRVRfREVGQVVMVCBwcmVzZXRcbiIKKyJsZXZlbC4gRm9yIEZPUk1BVF9SQVcsIHRoZSBjYWxsZXIgbXVzdCBhbHdheXMgc3BlY2lmeSBhIGZpbHRlciBjaGFpbjtcbiIKKyJ0aGUgcmF3IGNvbXByZXNzb3IgZG9lcyBub3Qgc3VwcG9ydCBwcmVzZXQgY29tcHJlc3Npb24gbGV2ZWxzLlxuIgorIlxuIgorInByZXNldCAoaWYgcHJvdmlkZWQpIHNob3VsZCBiZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwLTksIG9wdGlvbmFsbHlcbiIKKyJPUi1lZCB3aXRoIHRoZSBjb25zdGFudCBQUkVTRVRfRVhUUkVNRS5cbiIKKyJcbiIKKyJmaWx0ZXJzIChpZiBwcm92aWRlZCkgc2hvdWxkIGJlIGEgc2VxdWVuY2Ugb2YgZGljdHMuIEVhY2ggZGljdCBzaG91bGRcbiIKKyJoYXZlIGFuIGVudHJ5IGZvciBcImlkXCIgaW5kaWNhdGluZyB0aGUgSUQgb2YgdGhlIGZpbHRlciwgcGx1c1xuIgorImFkZGl0aW9uYWwgZW50cmllcyBmb3Igb3B0aW9ucyB0byB0aGUgZmlsdGVyLlxuIgorIlxuIgorIkZvciBvbmUtc2hvdCBjb21wcmVzc2lvbiwgdXNlIHRoZSBjb21wcmVzcygpIGZ1bmN0aW9uIGluc3RlYWQuXG4iKTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBDb21wcmVzc29yX3R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIl9sem1hLkxaTUFDb21wcmVzc29yIiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihDb21wcmVzc29yKSwgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpQ29tcHJlc3Nvcl9kZWFsbG9jLCAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIENvbXByZXNzb3JfZG9jLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgQ29tcHJlc3Nvcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAoaW5pdHByb2MpQ29tcHJlc3Nvcl9pbml0LCAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKworLyogTFpNQURlY29tcHJlc3NvciBjbGFzcy4gKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2RlY29tcHJlc3MoRGVjb21wcmVzc29yICpkLCB1aW50OF90ICpkYXRhLCBzaXplX3QgbGVuKQoreworICAgIHNpemVfdCBkYXRhX3NpemUgPSAwOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIElOSVRJQUxfQlVGRkVSX1NJWkUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZC0+bHpzLm5leHRfaW4gPSBkYXRhOworICAgIGQtPmx6cy5hdmFpbF9pbiA9IGxlbjsKKyAgICBkLT5senMubmV4dF9vdXQgPSAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgZC0+bHpzLmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgbHpyZXQgPSBsem1hX2NvZGUoJmQtPmx6cywgTFpNQV9SVU4pOworICAgICAgICBkYXRhX3NpemUgPSAoY2hhciAqKWQtPmx6cy5uZXh0X291dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChsenJldCA9PSBMWk1BX0dFVF9DSEVDSyB8fCBsenJldCA9PSBMWk1BX05PX0NIRUNLKQorICAgICAgICAgICAgZC0+Y2hlY2sgPSBsem1hX2dldF9jaGVjaygmZC0+bHpzKTsKKyAgICAgICAgaWYgKGx6cmV0ID09IExaTUFfU1RSRUFNX0VORCkgeworICAgICAgICAgICAgZC0+ZW9mID0gMTsKKyAgICAgICAgICAgIGlmIChkLT5senMuYXZhaWxfaW4gPiAwKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIoZC0+dW51c2VkX2RhdGEpOworICAgICAgICAgICAgICAgIGQtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopZC0+bHpzLm5leHRfaW4sIGQtPmx6cy5hdmFpbF9pbik7CisgICAgICAgICAgICAgICAgaWYgKGQtPnVudXNlZF9kYXRhID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSBlbHNlIGlmIChkLT5senMuYXZhaWxfaW4gPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSBpZiAoZC0+bHpzLmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBpZiAoZ3Jvd19idWZmZXIoJnJlc3VsdCkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGQtPmx6cy5uZXh0X291dCA9ICh1aW50OF90ICopUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIGRhdGFfc2l6ZTsKKyAgICAgICAgICAgIGQtPmx6cy5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkgLSBkYXRhX3NpemU7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRhdGFfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpCisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgZGF0YV9zaXplKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihyZXN1bHQpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2RlY29tcHJlc3NfZG9jLAorImRlY29tcHJlc3MoZGF0YSkgLT4gYnl0ZXNcbiIKKyJcbiIKKyJQcm92aWRlIGRhdGEgdG8gdGhlIGRlY29tcHJlc3NvciBvYmplY3QuIFJldHVybnMgYSBjaHVuayBvZlxuIgorImRlY29tcHJlc3NlZCBkYXRhIGlmIHBvc3NpYmxlLCBvciBiXCJcIiBvdGhlcndpc2UuXG4iCisiXG4iCisiQXR0ZW1wdGluZyB0byBkZWNvbXByZXNzIGRhdGEgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgc3RyZWFtIGlzXG4iCisicmVhY2hlZCByYWlzZXMgYW4gRU9GRXJyb3IuIEFueSBkYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlXG4iCisic3RyZWFtIGlzIGlnbm9yZWQsIGFuZCBzYXZlZCBpbiB0aGUgdW51c2VkX2RhdGEgYXR0cmlidXRlLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitEZWNvbXByZXNzb3JfZGVjb21wcmVzcyhEZWNvbXByZXNzb3IgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBidWZmZXI7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmRlY29tcHJlc3MiLCAmYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgaWYgKHNlbGYtPmVvZikKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLCAiQWxyZWFkeSBhdCBlbmQgb2Ygc3RyZWFtIik7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzKHNlbGYsIGJ1ZmZlci5idWYsIGJ1ZmZlci5sZW4pOworICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZidWZmZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbnQKK0RlY29tcHJlc3Nvcl9pbml0X3Jhdyhsem1hX3N0cmVhbSAqbHpzLCBQeU9iamVjdCAqZmlsdGVyc3BlY3MpCit7CisgICAgbHptYV9maWx0ZXIgZmlsdGVyc1tMWk1BX0ZJTFRFUlNfTUFYICsgMV07CisgICAgbHptYV9yZXQgbHpyZXQ7CisKKyAgICBpZiAocGFyc2VfZmlsdGVyX2NoYWluX3NwZWMoZmlsdGVycywgZmlsdGVyc3BlY3MpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgbHpyZXQgPSBsem1hX3Jhd19kZWNvZGVyKGx6cywgZmlsdGVycyk7CisgICAgZnJlZV9maWx0ZXJfY2hhaW4oZmlsdGVycyk7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorRGVjb21wcmVzc29yX2luaXQoRGVjb21wcmVzc29yICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqYXJnX25hbWVzW10gPSB7ImZvcm1hdCIsICJtZW1saW1pdCIsICJmaWx0ZXJzIiwgTlVMTH07CisgICAgY29uc3QgdWludDMyX3QgZGVjb2Rlcl9mbGFncyA9IExaTUFfVEVMTF9BTllfQ0hFQ0sgfCBMWk1BX1RFTExfTk9fQ0hFQ0s7CisgICAgaW50IGZvcm1hdCA9IEZPUk1BVF9BVVRPOworICAgIHVpbnQ2NF90IG1lbWxpbWl0ID0gVUlOVDY0X01BWDsKKyAgICBQeU9iamVjdCAqbWVtbGltaXRfb2JqID0gUHlfTm9uZTsKKyAgICBQeU9iamVjdCAqZmlsdGVyc3BlY3MgPSBQeV9Ob25lOworICAgIGx6bWFfcmV0IGx6cmV0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ8aU9POkxaTUFEZWNvbXByZXNzb3IiLCBhcmdfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJm1lbWxpbWl0X29iaiwgJmZpbHRlcnNwZWNzKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKG1lbWxpbWl0X29iaiAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChmb3JtYXQgPT0gRk9STUFUX1JBVykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBzcGVjaWZ5IG1lbW9yeSBsaW1pdCB3aXRoIEZPUk1BVF9SQVciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBtZW1saW1pdCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcobWVtbGltaXRfb2JqKTsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGZvcm1hdCA9PSBGT1JNQVRfUkFXICYmIGZpbHRlcnNwZWNzID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiTXVzdCBzcGVjaWZ5IGZpbHRlcnMgZm9yIEZPUk1BVF9SQVciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAoZm9ybWF0ICE9IEZPUk1BVF9SQVcgJiYgZmlsdGVyc3BlY3MgIT0gUHlfTm9uZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSBmaWx0ZXJzIGV4Y2VwdCB3aXRoIEZPUk1BVF9SQVciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKKyAgICBpZiAoc2VsZi0+bG9jayA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgIlVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKworICAgIHNlbGYtPmNoZWNrID0gTFpNQV9DSEVDS19VTktOT1dOOworICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgICAgIGNhc2UgRk9STUFUX0FVVE86CisgICAgICAgICAgICBsenJldCA9IGx6bWFfYXV0b19kZWNvZGVyKCZzZWxmLT5senMsIG1lbWxpbWl0LCBkZWNvZGVyX2ZsYWdzKTsKKyAgICAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX1haOgorICAgICAgICAgICAgbHpyZXQgPSBsem1hX3N0cmVhbV9kZWNvZGVyKCZzZWxmLT5senMsIG1lbWxpbWl0LCBkZWNvZGVyX2ZsYWdzKTsKKyAgICAgICAgICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGNhc2UgRk9STUFUX0FMT05FOgorICAgICAgICAgICAgc2VsZi0+Y2hlY2sgPSBMWk1BX0NIRUNLX05PTkU7CisgICAgICAgICAgICBsenJldCA9IGx6bWFfYWxvbmVfZGVjb2Rlcigmc2VsZi0+bHpzLCBtZW1saW1pdCk7CisgICAgICAgICAgICBpZiAoY2F0Y2hfbHptYV9lcnJvcihsenJldCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBjYXNlIEZPUk1BVF9SQVc6CisgICAgICAgICAgICBzZWxmLT5jaGVjayA9IExaTUFfQ0hFQ0tfTk9ORTsKKyAgICAgICAgICAgIGlmIChEZWNvbXByZXNzb3JfaW5pdF9yYXcoJnNlbGYtPmx6cywgZmlsdGVyc3BlY3MpID09IC0xKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGNvbnRhaW5lciBmb3JtYXQ6ICVkIiwgZm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworZXJyb3I6CisgICAgUHlfQ0xFQVIoc2VsZi0+dW51c2VkX2RhdGEpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOworICAgIHNlbGYtPmxvY2sgPSBOVUxMOworI2VuZGlmCisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgdm9pZAorRGVjb21wcmVzc29yX2RlYWxsb2MoRGVjb21wcmVzc29yICpzZWxmKQoreworICAgIGx6bWFfZW5kKCZzZWxmLT5senMpOworICAgIFB5X0NMRUFSKHNlbGYtPnVudXNlZF9kYXRhKTsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGlmIChzZWxmLT5sb2NrICE9IE5VTEwpCisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKKyNlbmRpZgorICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBEZWNvbXByZXNzb3JfbWV0aG9kc1tdID0geworICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilEZWNvbXByZXNzb3JfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAorICAgICBEZWNvbXByZXNzb3JfZGVjb21wcmVzc19kb2N9LAorICAgIHtOVUxMfQorfTsKKworUHlEb2NfU1RSVkFSKERlY29tcHJlc3Nvcl9jaGVja19kb2MsCisiSUQgb2YgdGhlIGludGVncml0eSBjaGVjayB1c2VkIGJ5IHRoZSBpbnB1dCBzdHJlYW0uIik7CisKK1B5RG9jX1NUUlZBUihEZWNvbXByZXNzb3JfZW9mX2RvYywKKyJUcnVlIGlmIHRoZSBlbmQtb2Ytc3RyZWFtIG1hcmtlciBoYXMgYmVlbiByZWFjaGVkLiIpOworCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX2RvYywKKyJEYXRhIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLiIpOworCitzdGF0aWMgUHlNZW1iZXJEZWYgRGVjb21wcmVzc29yX21lbWJlcnNbXSA9IHsKKyAgICB7ImNoZWNrIiwgVF9JTlQsIG9mZnNldG9mKERlY29tcHJlc3NvciwgY2hlY2spLCBSRUFET05MWSwKKyAgICAgRGVjb21wcmVzc29yX2NoZWNrX2RvY30sCisgICAgeyJlb2YiLCBUX0JPT0wsIG9mZnNldG9mKERlY29tcHJlc3NvciwgZW9mKSwgUkVBRE9OTFksCisgICAgIERlY29tcHJlc3Nvcl9lb2ZfZG9jfSwKKyAgICB7InVudXNlZF9kYXRhIiwgVF9PQkpFQ1RfRVgsIG9mZnNldG9mKERlY29tcHJlc3NvciwgdW51c2VkX2RhdGEpLCBSRUFET05MWSwKKyAgICAgRGVjb21wcmVzc29yX3VudXNlZF9kYXRhX2RvY30sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIoRGVjb21wcmVzc29yX2RvYywKKyJMWk1BRGVjb21wcmVzc29yKGZvcm1hdD1GT1JNQVRfQVVUTywgbWVtbGltaXQ9Tm9uZSwgZmlsdGVycz1Ob25lKVxuIgorIlxuIgorIkNyZWF0ZSBhIGRlY29tcHJlc3NvciBvYmplY3QgZm9yIGRlY29tcHJlc3NpbmcgZGF0YSBpbmNyZW1lbnRhbGx5LlxuIgorIlxuIgorImZvcm1hdCBzcGVjaWZpZXMgdGhlIGNvbnRhaW5lciBmb3JtYXQgb2YgdGhlIGlucHV0IHN0cmVhbS4gSWYgdGhpcyBpc1xuIgorIkZPUk1BVF9BVVRPICh0aGUgZGVmYXVsdCksIHRoZSBkZWNvbXByZXNzb3Igd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdFxuIgorIndoZXRoZXIgdGhlIGlucHV0IGlzIEZPUk1BVF9YWiBvciBGT1JNQVRfQUxPTkUuIFN0cmVhbXMgY3JlYXRlZCB3aXRoXG4iCisiRk9STUFUX1JBVyBjYW5ub3QgYmUgYXV0b2RldGVjdGVkLlxuIgorIlxuIgorIm1lbWxpbWl0IGNhbiBiZSBzcGVjaWZpZWQgdG8gbGltaXQgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGVcbiIKKyJkZWNvbXByZXNzb3IuIFRoaXMgd2lsbCBjYXVzZSBkZWNvbXByZXNzaW9uIHRvIGZhaWwgaWYgdGhlIGlucHV0XG4iCisiY2Fubm90IGJlIGRlY29tcHJlc3NlZCB3aXRoaW4gdGhlIGdpdmVuIGxpbWl0LlxuIgorIlxuIgorImZpbHRlcnMgc3BlY2lmaWVzIGEgY3VzdG9tIGZpbHRlciBjaGFpbi4gVGhpcyBhcmd1bWVudCBpcyByZXF1aXJlZCBmb3JcbiIKKyJGT1JNQVRfUkFXLCBhbmQgbm90IGFjY2VwdGVkIHdpdGggYW55IG90aGVyIGZvcm1hdC4gV2hlbiBwcm92aWRlZCxcbiIKKyJ0aGlzIHNob3VsZCBiZSBhIHNlcXVlbmNlIG9mIGRpY3RzLCBlYWNoIGluZGljYXRpbmcgdGhlIElEIGFuZCBvcHRpb25zXG4iCisiZm9yIGEgc2luZ2xlIGZpbHRlci5cbiIKKyJcbiIKKyJGb3Igb25lLXNob3QgZGVjb21wcmVzc2lvbiwgdXNlIHRoZSBkZWNvbXByZXNzKCkgZnVuY3Rpb24gaW5zdGVhZC5cbiIpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IERlY29tcHJlc3Nvcl90eXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfbHptYS5MWk1BRGVjb21wcmVzc29yIiwgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoRGVjb21wcmVzc29yKSwgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKURlY29tcHJlc3Nvcl9kZWFsbG9jLCAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBEZWNvbXByZXNzb3JfZG9jLCAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIERlY29tcHJlc3Nvcl9tZXRob2RzLCAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBEZWNvbXByZXNzb3JfbWVtYmVycywgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgKGluaXRwcm9jKURlY29tcHJlc3Nvcl9pbml0LCAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCit9OworCisKKy8qIE1vZHVsZS1sZXZlbCBmdW5jdGlvbnMuICovCisKK1B5RG9jX1NUUlZBUihpc19jaGVja19zdXBwb3J0ZWRfZG9jLAorImlzX2NoZWNrX3N1cHBvcnRlZChjaGVja19pZCkgLT4gYm9vbFxuIgorIlxuIgorIlRlc3Qgd2hldGhlciB0aGUgZ2l2ZW4gaW50ZWdyaXR5IGNoZWNrIGlzIHN1cHBvcnRlZC5cbiIKKyJcbiIKKyJBbHdheXMgcmV0dXJucyBUcnVlIGZvciBDSEVDS19OT05FIGFuZCBDSEVDS19DUkMzMi5cbiIpOworCitzdGF0aWMgUHlPYmplY3QgKgoraXNfY2hlY2tfc3VwcG9ydGVkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgY2hlY2tfaWQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6aXNfY2hlY2tfc3VwcG9ydGVkIiwgJmNoZWNrX2lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGx6bWFfY2hlY2tfaXNfc3VwcG9ydGVkKGNoZWNrX2lkKSk7Cit9CisKKworUHlEb2NfU1RSVkFSKF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfZG9jLAorIl9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoZmlsdGVyKSAtPiBieXRlc1xuIgorIlxuIgorIlJldHVybiBhIGJ5dGVzIG9iamVjdCBlbmNvZGluZyB0aGUgb3B0aW9ucyAocHJvcGVydGllcykgb2YgdGhlIGZpbHRlclxuIgorInNwZWNpZmllZCBieSAqZmlsdGVyKiAoYSBkaWN0KS5cbiIKKyJcbiIKKyJUaGUgcmVzdWx0IGRvZXMgbm90IGluY2x1ZGUgdGhlIGZpbHRlciBJRCBpdHNlbGYsIG9ubHkgdGhlIG9wdGlvbnMuXG4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK19lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpmaWx0ZXJzcGVjOworICAgIGx6bWFfZmlsdGVyIGZpbHRlcjsKKyAgICBsem1hX3JldCBsenJldDsKKyAgICB1aW50MzJfdCBlbmNvZGVkX3NpemU7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86X2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsICZmaWx0ZXJzcGVjKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAocGFyc2VfZmlsdGVyX3NwZWMoJmZpbHRlciwgZmlsdGVyc3BlYykgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBsenJldCA9IGx6bWFfcHJvcGVydGllc19zaXplKCZlbmNvZGVkX3NpemUsICZmaWx0ZXIpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZW5jb2RlZF9zaXplKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBsenJldCA9IGx6bWFfcHJvcGVydGllc19lbmNvZGUoCisgICAgICAgICAgICAmZmlsdGVyLCAodWludDhfdCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkpOworICAgIGlmIChjYXRjaF9sem1hX2Vycm9yKGx6cmV0KSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIFB5TWVtX0ZyZWUoZmlsdGVyLm9wdGlvbnMpOworICAgIHJldHVybiByZXN1bHQ7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocmVzdWx0KTsKKyAgICBQeU1lbV9GcmVlKGZpbHRlci5vcHRpb25zKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworCitQeURvY19TVFJWQVIoX2RlY29kZV9maWx0ZXJfcHJvcGVydGllc19kb2MsCisiX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyhmaWx0ZXJfaWQsIGVuY29kZWRfcHJvcHMpIC0+IGRpY3RcbiIKKyJcbiIKKyJSZXR1cm4gYSBkaWN0IGRlc2NyaWJpbmcgYSBmaWx0ZXIgd2l0aCBJRCAqZmlsdGVyX2lkKiwgYW5kIG9wdGlvbnNcbiIKKyIocHJvcGVydGllcykgZGVjb2RlZCBmcm9tIHRoZSBieXRlcyBvYmplY3QgKmVuY29kZWRfcHJvcHMqLlxuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9idWZmZXIgZW5jb2RlZF9wcm9wczsKKyAgICBsem1hX2ZpbHRlciBmaWx0ZXI7CisgICAgbHptYV9yZXQgbHpyZXQ7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8meSo6X2RlY29kZV9maWx0ZXJfcHJvcGVydGllcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGx6bWFfdmxpX2NvbnZlcnRlciwgJmZpbHRlci5pZCwgJmVuY29kZWRfcHJvcHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGx6cmV0ID0gbHptYV9wcm9wZXJ0aWVzX2RlY29kZSgKKyAgICAgICAgICAgICZmaWx0ZXIsIE5VTEwsIGVuY29kZWRfcHJvcHMuYnVmLCBlbmNvZGVkX3Byb3BzLmxlbik7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmZW5jb2RlZF9wcm9wcyk7CisgICAgaWYgKGNhdGNoX2x6bWFfZXJyb3IobHpyZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGJ1aWxkX2ZpbHRlcl9zcGVjKCZmaWx0ZXIpOworCisgICAgLyogV2UgdXNlIHZhbmlsbGEgZnJlZSgpIGhlcmUgaW5zdGVhZCBvZiBQeU1lbV9GcmVlKCkgLSBmaWx0ZXIub3B0aW9ucyB3YXMKKyAgICAgICBhbGxvY2F0ZWQgYnkgbHptYV9wcm9wZXJ0aWVzX2RlY29kZSgpIHVzaW5nIHRoZSBkZWZhdWx0IGFsbG9jYXRvci4gKi8KKyAgICBmcmVlKGZpbHRlci5vcHRpb25zKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKKy8qIE1vZHVsZSBpbml0aWFsaXphdGlvbi4gKi8KKworc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7CisgICAgeyJpc19jaGVja19zdXBwb3J0ZWQiLCAoUHlDRnVuY3Rpb24paXNfY2hlY2tfc3VwcG9ydGVkLAorICAgICBNRVRIX1ZBUkFSR1MsIGlzX2NoZWNrX3N1cHBvcnRlZF9kb2N9LAorICAgIHsiX2VuY29kZV9maWx0ZXJfcHJvcGVydGllcyIsIChQeUNGdW5jdGlvbilfZW5jb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzLAorICAgICBNRVRIX1ZBUkFSR1MsIF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXNfZG9jfSwKKyAgICB7Il9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMiLCAoUHlDRnVuY3Rpb24pX2RlY29kZV9maWx0ZXJfcHJvcGVydGllcywKKyAgICAgTUVUSF9WQVJBUkdTLCBfZGVjb2RlX2ZpbHRlcl9wcm9wZXJ0aWVzX2RvY30sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlNb2R1bGVEZWYgX2x6bWFtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfbHptYSIsCisgICAgTlVMTCwKKyAgICAtMSwKKyAgICBtb2R1bGVfbWV0aG9kcywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMLAorfTsKKworLyogU29tZSBvZiBvdXIgY29uc3RhbnRzIGFyZSBtb3JlIHRoYW4gMzIgYml0cyB3aWRlLCBzbyBQeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICAgd291bGQgbm90IHdvcmsgY29ycmVjdGx5IG9uIHBsYXRmb3JtcyB3aXRoIDMyLWJpdCBsb25ncy4gKi8KK3N0YXRpYyBpbnQKK21vZHVsZV9hZGRfaW50X2NvbnN0YW50KFB5T2JqZWN0ICptLCBjb25zdCBjaGFyICpuYW1lLCBQWV9MT05HX0xPTkcgdmFsdWUpCit7CisgICAgUHlPYmplY3QgKm8gPSBQeUxvbmdfRnJvbUxvbmdMb25nKHZhbHVlKTsKKyAgICBpZiAobyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCBuYW1lLCBvKSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBQeV9ERUNSRUYobyk7CisgICAgcmV0dXJuIC0xOworfQorCisjZGVmaW5lIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIG1hY3JvKSBcCisgICAgbW9kdWxlX2FkZF9pbnRfY29uc3RhbnQobSwgI21hY3JvLCBMWk1BXyAjIyBtYWNybykKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fbHptYSh2b2lkKQoreworICAgIFB5T2JqZWN0ICptOworCisgICAgZW1wdHlfdHVwbGUgPSBQeVR1cGxlX05ldygwKTsKKyAgICBpZiAoZW1wdHlfdHVwbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfbHptYW1vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRk9STUFUX0FVVE8pID09IC0xIHx8CisgICAgICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEZPUk1BVF9YWikgPT0gLTEgfHwKKyAgICAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgRk9STUFUX0FMT05FKSA9PSAtMSB8fAorICAgICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBGT1JNQVRfUkFXKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19OT05FKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19DUkMzMikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfQ1JDNjQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIENIRUNLX1NIQTI1NikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgQ0hFQ0tfSURfTUFYKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBDSEVDS19VTktOT1dOKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfTFpNQTEpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9MWk1BMikgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0RFTFRBKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfWDg2KSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfSUE2NCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0FSTSkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgRklMVEVSX0FSTVRIVU1CKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBGSUxURVJfU1BBUkMpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIEZJTFRFUl9QT1dFUlBDKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9IQzMpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0hDNCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTUZfQlQyKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNRl9CVDMpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIE1GX0JUNCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgTU9ERV9GQVNUKSA9PSAtMSB8fAorICAgICAgICBBRERfSU5UX1BSRUZJWF9NQUNSTyhtLCBNT0RFX05PUk1BTCkgPT0gLTEgfHwKKyAgICAgICAgQUREX0lOVF9QUkVGSVhfTUFDUk8obSwgUFJFU0VUX0RFRkFVTFQpID09IC0xIHx8CisgICAgICAgIEFERF9JTlRfUFJFRklYX01BQ1JPKG0sIFBSRVNFVF9FWFRSRU1FKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICAgICAiX2x6bWEuTFpNQUVycm9yIiwgIkNhbGwgdG8gbGlibHptYSBmYWlsZWQuIiwgTlVMTCwgTlVMTCk7CisgICAgaWYgKEVycm9yID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihFcnJvcik7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTFpNQUVycm9yIiwgRXJyb3IpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJkNvbXByZXNzb3JfdHlwZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmQ29tcHJlc3Nvcl90eXBlKTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJMWk1BQ29tcHJlc3NvciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKikmQ29tcHJlc3Nvcl90eXBlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZEZWNvbXByZXNzb3JfdHlwZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRigmRGVjb21wcmVzc29yX3R5cGUpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIkxaTUFEZWNvbXByZXNzb3IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJkRlY29tcHJlc3Nvcl90eXBlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLmggYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDJkNWFhLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MjcgKzAsMCBAQAotLyoKLSAqIERlZmluaXRpb24gb2YgYSBgQ29ubmVjdGlvbmAgdHlwZS4KLSAqIFVzZWQgYnkgYHNvY2tldF9jb25uZWN0aW9uLmNgIGFuZCBgcGlwZV9jb25uZWN0aW9uLmNgLgotICoKLSAqIGNvbm5lY3Rpb24uaAotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpZm5kZWYgQ09OTkVDVElPTl9ICi0jZGVmaW5lIENPTk5FQ1RJT05fSAotCi0vKgotICogUmVhZC93cml0ZSBmbGFncwotICovCi0KLSNkZWZpbmUgUkVBREFCTEUgMQotI2RlZmluZSBXUklUQUJMRSAyCi0KLSNkZWZpbmUgQ0hFQ0tfUkVBREFCTEUoc2VsZikgXAotICAgIGlmICghKHNlbGYtPmZsYWdzICYgUkVBREFCTEUpKSB7IFwKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImNvbm5lY3Rpb24gaXMgd3JpdGUtb25seSIpOyBcCi0gICAgcmV0dXJuIE5VTEw7IFwKLSAgICB9Ci0KLSNkZWZpbmUgQ0hFQ0tfV1JJVEFCTEUoc2VsZikgXAotICAgIGlmICghKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpKSB7IFwKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImNvbm5lY3Rpb24gaXMgcmVhZC1vbmx5Iik7IFwKLSAgICByZXR1cm4gTlVMTDsgXAotICAgIH0KLQotLyoKLSAqIEFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbgotICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICBDb25uZWN0aW9uT2JqZWN0ICpzZWxmOwotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgQk9PTCByZWFkYWJsZSA9IFRSVUUsIHdyaXRhYmxlID0gVFJVRTsKLQotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgInJlYWRhYmxlIiwgIndyaXRhYmxlIiwgTlVMTH07Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCBGX0hBTkRMRSAifGlpIiwga3dsaXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZyZWFkYWJsZSwgJndyaXRhYmxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFIHx8IChQeV9zc2l6ZV90KWhhbmRsZSA8IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsICJpbnZhbGlkIGhhbmRsZSAlemQiLAotICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpaGFuZGxlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKCFyZWFkYWJsZSAmJiAhd3JpdGFibGUpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIHJlYWRhYmxlIG9yIHdyaXRhYmxlIG11c3QgYmUgdHJ1ZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBzZWxmID0gUHlPYmplY3RfTmV3KENvbm5lY3Rpb25PYmplY3QsIHR5cGUpOwotICAgIGlmIChzZWxmID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc2VsZi0+d2Vha3JlZmxpc3QgPSBOVUxMOwotICAgIHNlbGYtPmhhbmRsZSA9IGhhbmRsZTsKLSAgICBzZWxmLT5mbGFncyA9IDA7Ci0KLSAgICBpZiAocmVhZGFibGUpCi0gICAgICAgIHNlbGYtPmZsYWdzIHw9IFJFQURBQkxFOwotICAgIGlmICh3cml0YWJsZSkKLSAgICAgICAgc2VsZi0+ZmxhZ3MgfD0gV1JJVEFCTEU7Ci0gICAgYXNzZXJ0KHNlbGYtPmZsYWdzID49IDEgJiYgc2VsZi0+ZmxhZ3MgPD0gMyk7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOwotfQotCi1zdGF0aWMgdm9pZAotY29ubmVjdGlvbl9kZWFsbG9jKENvbm5lY3Rpb25PYmplY3QqIHNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPndlYWtyZWZsaXN0ICE9IE5VTEwpCi0gICAgICAgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnMoKFB5T2JqZWN0KilzZWxmKTsKLQotICAgIGlmIChzZWxmLT5oYW5kbGUgIT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0KLSAgICBQeU9iamVjdF9EZWwoc2VsZik7Ci19Ci0KLS8qCi0gKiBGdW5jdGlvbnMgZm9yIHRyYW5zZmVycmluZyBidWZmZXJzCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fc2VuZGJ5dGVzKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwYnVmZmVyOwotICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aCwgb2Zmc2V0PTAsIHNpemU9UFlfU1NJWkVfVF9NSU47Ci0gICAgaW50IHJlczsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX1JCVUZGRVIgIip8IiBGX1BZX1NTSVpFX1QgRl9QWV9TU0laRV9ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGJ1ZmZlciwgJm9mZnNldCwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWZmZXIgPSBwYnVmZmVyLmJ1ZjsKLSAgICBsZW5ndGggPSBwYnVmZmVyLmxlbjsKLQotICAgIENIRUNLX1dSSVRBQkxFKHNlbGYpOyAvKiBYWFggcmVsZWFzZSBidWZmZXIgaW4gY2FzZSBvZiBmYWlsdXJlICovCi0KLSAgICBpZiAob2Zmc2V0IDwgMCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgaXMgbmVnYXRpdmUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChsZW5ndGggPCBvZmZzZXQpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnVmZmVyIGxlbmd0aCA8IG9mZnNldCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoc2l6ZSA9PSBQWV9TU0laRV9UX01JTikgewotICAgICAgICBzaXplID0gbGVuZ3RoIC0gb2Zmc2V0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChzaXplIDwgMCkgewotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGJ1ZmZlcik7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInNpemUgaXMgbmVnYXRpdmUiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChvZmZzZXQgKyBzaXplID4gbGVuZ3RoKSB7Ci0gICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidWZmZXIgbGVuZ3RoIDwgb2Zmc2V0ICsgc2l6ZSIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXMgPSBjb25uX3NlbmRfc3RyaW5nKHNlbGYsIGJ1ZmZlciArIG9mZnNldCwgc2l6ZSk7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmZmVyKTsKLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVjdmJ5dGVzKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKmZyZWVtZSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCByZXMsIG1heGxlbmd0aCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8IiBGX1BZX1NTSVpFX1QsICZtYXhsZW5ndGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIENIRUNLX1JFQURBQkxFKHNlbGYpOwotCi0gICAgaWYgKG1heGxlbmd0aCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtYXhsZW5ndGggPCAwIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJlcyA9IGNvbm5fcmVjdl9zdHJpbmcoc2VsZiwgc2VsZi0+YnVmZmVyLCBDT05ORUNUSU9OX0JVRkZFUl9TSVpFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVtZSwgbWF4bGVuZ3RoKTsKLQotICAgIGlmIChyZXMgPCAwKSB7Ci0gICAgICAgIGlmIChyZXMgPT0gTVBfQkFEX01FU1NBR0VfTEVOR1RIKSB7Ci0gICAgICAgICAgICBpZiAoKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpID09IDApIHsKLSAgICAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIHNlbGYtPmhhbmRsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLT5mbGFncyA9IFdSSVRBQkxFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1wX1NldEVycm9yKFB5RXhjX0lPRXJyb3IsIHJlcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZyZWVtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPmJ1ZmZlciwgcmVzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZnJlZW1lLCByZXMpOwotICAgICAgICAgICAgUHlNZW1fRnJlZShmcmVlbWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVjdmJ5dGVzX2ludG8oQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqZnJlZW1lID0gTlVMTCwgKmJ1ZmZlciA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCByZXMsIGxlbmd0aCwgb2Zmc2V0ID0gMDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeV9idWZmZXIgcGJ1ZjsKLQotICAgIENIRUNLX1JFQURBQkxFKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ3KnwiIEZfUFlfU1NJWkVfVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnBidWYsICZvZmZzZXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ1ZmZlciA9IHBidWYuYnVmOwotICAgIGxlbmd0aCA9IHBidWYubGVuOwotCi0gICAgaWYgKG9mZnNldCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBvZmZzZXQiKTsKLSAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgfQotCi0gICAgaWYgKG9mZnNldCA+IGxlbmd0aCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm9mZnNldCB0b28gbGFyZ2UiKTsKLSAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgfQotCi0gICAgcmVzID0gY29ubl9yZWN2X3N0cmluZyhzZWxmLCBidWZmZXIrb2Zmc2V0LCBsZW5ndGgtb2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVtZSwgUFlfU1NJWkVfVF9NQVgpOwotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgaWYgKHJlcyA9PSBNUF9CQURfTUVTU0FHRV9MRU5HVEgpIHsKLSAgICAgICAgICAgIGlmICgoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkgPT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNlbGYtPmZsYWdzID0gV1JJVEFCTEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnJlZW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5SW50X0Zyb21Tc2l6ZV90KHJlcyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oQnVmZmVyVG9vU2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRl9SQlVGRkVSICIjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlbWUsIHJlcyk7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKGZyZWVtZSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KEJ1ZmZlclRvb1Nob3J0LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0KLV9jbGVhbnVwOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIHJldHVybiByZXN1bHQ7Ci0KLV9lcnJvcjoKLSAgICByZXN1bHQgPSBOVUxMOwotICAgIGdvdG8gX2NsZWFudXA7Ci19Ci0KLS8qCi0gKiBGdW5jdGlvbnMgZm9yIHRyYW5zZmVycmluZyBvYmplY3RzCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fc2VuZF9vYmooQ29ubmVjdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm9iaikKLXsKLSAgICBjaGFyICpidWZmZXI7Ci0gICAgaW50IHJlczsKLSAgICBQeV9zc2l6ZV90IGxlbmd0aDsKLSAgICBQeU9iamVjdCAqcGlja2xlZF9zdHJpbmcgPSBOVUxMOwotCi0gICAgQ0hFQ0tfV1JJVEFCTEUoc2VsZik7Ci0KLSAgICBwaWNrbGVkX3N0cmluZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MocGlja2xlX2R1bXBzLCBvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZV9wcm90b2NvbCwgTlVMTCk7Ci0gICAgaWYgKCFwaWNrbGVkX3N0cmluZykKLSAgICAgICAgZ290byBmYWlsdXJlOwotCi0gICAgaWYgKFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplKHBpY2tsZWRfc3RyaW5nLCAmYnVmZmVyLCAmbGVuZ3RoKSA8IDApCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKLQotICAgIHJlcyA9IGNvbm5fc2VuZF9zdHJpbmcoc2VsZiwgYnVmZmVyLCAoaW50KWxlbmd0aCk7Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0gICAgfQotCi0gICAgUHlfWERFQ1JFRihwaWNrbGVkX3N0cmluZyk7Ci0gICAgUHlfUkVUVVJOX05PTkU7Ci0KLSAgZmFpbHVyZToKLSAgICBQeV9YREVDUkVGKHBpY2tsZWRfc3RyaW5nKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fcmVjdl9vYmooQ29ubmVjdGlvbk9iamVjdCAqc2VsZikKLXsKLSAgICBjaGFyICpmcmVlbWUgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgcmVzOwotICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICBDSEVDS19SRUFEQUJMRShzZWxmKTsKLQotICAgIHJlcyA9IGNvbm5fcmVjdl9zdHJpbmcoc2VsZiwgc2VsZi0+YnVmZmVyLCBDT05ORUNUSU9OX0JVRkZFUl9TSVpFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVtZSwgUFlfU1NJWkVfVF9NQVgpOwotCi0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgaWYgKHJlcyA9PSBNUF9CQURfTUVTU0FHRV9MRU5HVEgpIHsKLSAgICAgICAgICAgIGlmICgoc2VsZi0+ZmxhZ3MgJiBXUklUQUJMRSkgPT0gMCkgewotICAgICAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgICAgICAgICBDTE9TRShzZWxmLT5oYW5kbGUpOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNlbGYtPmZsYWdzID0gV1JJVEFCTEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgbXBfU2V0RXJyb3IoUHlFeGNfSU9FcnJvciwgcmVzKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZnJlZW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHRlbXAgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPmJ1ZmZlciwgcmVzKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRlbXAgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGZyZWVtZSwgcmVzKTsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoZnJlZW1lKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh0ZW1wKQotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHBpY2tsZV9sb2FkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLCBOVUxMKTsKLSAgICBQeV9YREVDUkVGKHRlbXApOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qCi0gKiBPdGhlciBmdW5jdGlvbnMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl9wb2xsKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICp0aW1lb3V0X29iaiA9IE5VTEw7Ci0gICAgZG91YmxlIHRpbWVvdXQgPSAwLjA7Ci0gICAgaW50IHJlczsKLQotICAgIENIRUNLX1JFQURBQkxFKHNlbGYpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TyIsICZ0aW1lb3V0X29iaikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHRpbWVvdXRfb2JqID09IE5VTEwpIHsKLSAgICAgICAgdGltZW91dCA9IDAuMDsKLSAgICB9IGVsc2UgaWYgKHRpbWVvdXRfb2JqID09IFB5X05vbmUpIHsKLSAgICAgICAgdGltZW91dCA9IC0xLjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYmxvY2sgZm9yZXZlciAqLwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRpbWVvdXQgPSBQeUZsb2F0X0FzRG91YmxlKHRpbWVvdXRfb2JqKTsKLSAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKHRpbWVvdXQgPCAwLjApCi0gICAgICAgICAgICB0aW1lb3V0ID0gMC4wOwotICAgIH0KLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBjb25uX3BvbGwoc2VsZiwgdGltZW91dCwgX3NhdmUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBzd2l0Y2ggKHJlcykgewotICAgIGNhc2UgVFJVRToKLSAgICAgICAgUHlfUkVUVVJOX1RSVUU7Ci0gICAgY2FzZSBGQUxTRToKLSAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBtcF9TZXRFcnJvcihQeUV4Y19JT0Vycm9yLCByZXMpOwotICAgIH0KLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fZmlsZW5vKENvbm5lY3Rpb25PYmplY3QqIHNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImhhbmRsZSBpcyBpbnZhbGlkIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcoKGxvbmcpc2VsZi0+aGFuZGxlKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fY2xvc2UoQ29ubmVjdGlvbk9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgQ0xPU0Uoc2VsZi0+aGFuZGxlKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0gICAgfQotCi0gICAgUHlfUkVUVVJOX05PTkU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlcHIoQ29ubmVjdGlvbk9iamVjdCAqc2VsZikKLXsKLSAgICBzdGF0aWMgY2hhciAqY29ubl90eXBlW10gPSB7InJlYWQtb25seSIsICJ3cml0ZS1vbmx5IiwgInJlYWQtd3JpdGUifTsKLQotICAgIGFzc2VydChzZWxmLT5mbGFncyA+PSAxICYmIHNlbGYtPmZsYWdzIDw9IDMpOwotICAgIHJldHVybiBGUk9NX0ZPUk1BVCgiPCVzICVzLCBoYW5kbGUgJXpkPiIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbm5fdHlwZVtzZWxmLT5mbGFncyAtIDFdLAotICAgICAgICAgICAgICAgICAgICAgICBDT05ORUNUSU9OX05BTUUsIChQeV9zc2l6ZV90KXNlbGYtPmhhbmRsZSk7Ci19Ci0KLS8qCi0gKiBHZXR0ZXJzIGFuZCBzZXR0ZXJzCi0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWNvbm5lY3Rpb25fY2xvc2VkKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi17Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykoc2VsZi0+aGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1jb25uZWN0aW9uX3JlYWRhYmxlKENvbm5lY3Rpb25PYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi17Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykoc2VsZi0+ZmxhZ3MgJiBSRUFEQUJMRSkpOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotY29ubmVjdGlvbl93cml0YWJsZShDb25uZWN0aW9uT2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQotewotICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKGxvbmcpKHNlbGYtPmZsYWdzICYgV1JJVEFCTEUpKTsKLX0KLQotLyoKLSAqIFRhYmxlcwotICovCi0KLXN0YXRpYyBQeU1ldGhvZERlZiBjb25uZWN0aW9uX21ldGhvZHNbXSA9IHsKLSAgICB7InNlbmRfYnl0ZXMiLCAoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9zZW5kYnl0ZXMsIE1FVEhfVkFSQVJHUywKLSAgICAgInNlbmQgdGhlIGJ5dGUgZGF0YSBmcm9tIGEgcmVhZGFibGUgYnVmZmVyLWxpa2Ugb2JqZWN0In0sCi0gICAgeyJyZWN2X2J5dGVzIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fcmVjdmJ5dGVzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJyZWNlaXZlIGJ5dGUgZGF0YSBhcyBhIHN0cmluZyJ9LAotICAgIHsicmVjdl9ieXRlc19pbnRvIiwoUHlDRnVuY3Rpb24pY29ubmVjdGlvbl9yZWN2Ynl0ZXNfaW50byxNRVRIX1ZBUkFSR1MsCi0gICAgICJyZWNlaXZlIGJ5dGUgZGF0YSBpbnRvIGEgd3JpdGVhYmxlIGJ1ZmZlci1saWtlIG9iamVjdFxuIgotICAgICAicmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQifSwKLQotICAgIHsic2VuZCIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX3NlbmRfb2JqLCBNRVRIX08sCi0gICAgICJzZW5kIGEgKHBpY2tsYWJsZSkgb2JqZWN0In0sCi0gICAgeyJyZWN2IiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fcmVjdl9vYmosIE1FVEhfTk9BUkdTLAotICAgICAicmVjZWl2ZSBhIChwaWNrbGFibGUpIG9iamVjdCJ9LAotCi0gICAgeyJwb2xsIiwgKFB5Q0Z1bmN0aW9uKWNvbm5lY3Rpb25fcG9sbCwgTUVUSF9WQVJBUkdTLAotICAgICAid2hldGhlciB0aGVyZSBpcyBhbnkgaW5wdXQgYXZhaWxhYmxlIHRvIGJlIHJlYWQifSwKLSAgICB7ImZpbGVubyIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX2ZpbGVubywgTUVUSF9OT0FSR1MsCi0gICAgICJmaWxlIGRlc2NyaXB0b3Igb3IgaGFuZGxlIG9mIHRoZSBjb25uZWN0aW9uIn0sCi0gICAgeyJjbG9zZSIsIChQeUNGdW5jdGlvbiljb25uZWN0aW9uX2Nsb3NlLCBNRVRIX05PQVJHUywKLSAgICAgImNsb3NlIHRoZSBjb25uZWN0aW9uIn0sCi0KLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi1zdGF0aWMgUHlHZXRTZXREZWYgY29ubmVjdGlvbl9nZXRzZXRbXSA9IHsKLSAgICB7ImNsb3NlZCIsIChnZXR0ZXIpY29ubmVjdGlvbl9jbG9zZWQsIE5VTEwsCi0gICAgICJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIGNsb3NlZCIsIE5VTEx9LAotICAgIHsicmVhZGFibGUiLCAoZ2V0dGVyKWNvbm5lY3Rpb25fcmVhZGFibGUsIE5VTEwsCi0gICAgICJUcnVlIGlmIHRoZSBjb25uZWN0aW9uIGlzIHJlYWRhYmxlIiwgTlVMTH0sCi0gICAgeyJ3cml0YWJsZSIsIChnZXR0ZXIpY29ubmVjdGlvbl93cml0YWJsZSwgTlVMTCwKLSAgICAgIlRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgd3JpdGFibGUiLCBOVUxMfSwKLSAgICB7TlVMTH0KLX07Ci0KLS8qCi0gKiBDb25uZWN0aW9uIHR5cGUKLSAqLwotCi1QeURvY19TVFJWQVIoY29ubmVjdGlvbl9kb2MsCi0gICAgICAgICAgICAgIkNvbm5lY3Rpb24gdHlwZSB3aG9zZSBjb25zdHJ1Y3RvciBzaWduYXR1cmUgaXNcblxuIgotICAgICAgICAgICAgICIgICAgQ29ubmVjdGlvbihoYW5kbGUsIHJlYWRhYmxlPVRydWUsIHdyaXRhYmxlPVRydWUpLlxuXG4iCi0gICAgICAgICAgICAgIlRoZSBjb25zdHJ1Y3RvciBkb2VzICpub3QqIGR1cGxpY2F0ZSB0aGUgaGFuZGxlLiIpOwotCi1QeVR5cGVPYmplY3QgQ09OTkVDVElPTl9UWVBFID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgIC8qIHRwX25hbWUgICAgICAgICAgICovICJfbXVsdGlwcm9jZXNzaW5nLiIgQ09OTkVDVElPTl9OQU1FLAotICAgIC8qIHRwX2Jhc2ljc2l6ZSAgICAgICovIHNpemVvZihDb25uZWN0aW9uT2JqZWN0KSwKLSAgICAvKiB0cF9pdGVtc2l6ZSAgICAgICAqLyAwLAotICAgIC8qIHRwX2RlYWxsb2MgICAgICAgICovIChkZXN0cnVjdG9yKWNvbm5lY3Rpb25fZGVhbGxvYywKLSAgICAvKiB0cF9wcmludCAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2dldGF0dHIgICAgICAgICovIDAsCi0gICAgLyogdHBfc2V0YXR0ciAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9yZXNlcnZlZCAgICAgICAqLyAwLAotICAgIC8qIHRwX3JlcHIgICAgICAgICAgICovIChyZXByZnVuYyljb25uZWN0aW9uX3JlcHIsCi0gICAgLyogdHBfYXNfbnVtYmVyICAgICAgKi8gMCwKLSAgICAvKiB0cF9hc19zZXF1ZW5jZSAgICAqLyAwLAotICAgIC8qIHRwX2FzX21hcHBpbmcgICAgICovIDAsCi0gICAgLyogdHBfaGFzaCAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9jYWxsICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX3N0ciAgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfZ2V0YXR0cm8gICAgICAgKi8gMCwKLSAgICAvKiB0cF9zZXRhdHRybyAgICAgICAqLyAwLAotICAgIC8qIHRwX2FzX2J1ZmZlciAgICAgICovIDAsCi0gICAgLyogdHBfZmxhZ3MgICAgICAgICAgKi8gUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFBGTEFHU19IQVZFX1dFQUtSRUZTLAotICAgIC8qIHRwX2RvYyAgICAgICAgICAgICovIGNvbm5lY3Rpb25fZG9jLAotICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICovIDAsCi0gICAgLyogdHBfY2xlYXIgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAqLyAwLAotICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovIG9mZnNldG9mKENvbm5lY3Rpb25PYmplY3QsIHdlYWtyZWZsaXN0KSwKLSAgICAvKiB0cF9pdGVyICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2l0ZXJuZXh0ICAgICAgICovIDAsCi0gICAgLyogdHBfbWV0aG9kcyAgICAgICAgKi8gY29ubmVjdGlvbl9tZXRob2RzLAotICAgIC8qIHRwX21lbWJlcnMgICAgICAgICovIDAsCi0gICAgLyogdHBfZ2V0c2V0ICAgICAgICAgKi8gY29ubmVjdGlvbl9nZXRzZXQsCi0gICAgLyogdHBfYmFzZSAgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9kaWN0ICAgICAgICAgICAqLyAwLAotICAgIC8qIHRwX2Rlc2NyX2dldCAgICAgICovIDAsCi0gICAgLyogdHBfZGVzY3Jfc2V0ICAgICAgKi8gMCwKLSAgICAvKiB0cF9kaWN0b2Zmc2V0ICAgICAqLyAwLAotICAgIC8qIHRwX2luaXQgICAgICAgICAgICovIDAsCi0gICAgLyogdHBfYWxsb2MgICAgICAgICAgKi8gMCwKLSAgICAvKiB0cF9uZXcgICAgICAgICAgICAqLyBjb25uZWN0aW9uX25ldywKLX07Ci0KLSNlbmRpZiAvKiBDT05ORUNUSU9OX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYwppbmRleCBlZTI1MGUwLi5lYjA1YzYyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5jCkBAIC0zLDIwICszLDEzIEBACiAgKgogICogbXVsdGlwcm9jZXNzaW5nLmMKICAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKKyAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsKKyAqIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KICAqLwogCiAjaW5jbHVkZSAibXVsdGlwcm9jZXNzaW5nLmgiCiAKLSNpZiAoZGVmaW5lZChDTVNHX0xFTikgJiYgZGVmaW5lZChTQ01fUklHSFRTKSkKLSAgICAjZGVmaW5lIEhBVkVfRkRfVFJBTlNGRVIgMQotI2Vsc2UKLSAgICAjZGVmaW5lIEhBVkVfRkRfVFJBTlNGRVIgMAotI2VuZGlmCiAKLVB5T2JqZWN0ICpjcmVhdGVfd2luMzJfbmFtZXNwYWNlKHZvaWQpOwotCi1QeU9iamVjdCAqcGlja2xlX2R1bXBzLCAqcGlja2xlX2xvYWRzLCAqcGlja2xlX3Byb3RvY29sOwogUHlPYmplY3QgKlByb2Nlc3NFcnJvciwgKkJ1ZmZlclRvb1Nob3J0OwogCiAvKgpAQCAtNDksMTYgKzQyLDYgQEAKICAgICBjYXNlIE1QX01FTU9SWV9FUlJPUjoKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNUF9FTkRfT0ZfRklMRToKLSAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19FT0ZFcnJvcik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTVBfRUFSTFlfRU5EX09GX0ZJTEU6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImdvdCBlbmQgb2YgZmlsZSBkdXJpbmcgbWVzc2FnZSIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1QX0JBRF9NRVNTQUdFX0xFTkdUSDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJiYWQgbWVzc2FnZSBsZW5ndGgiKTsKLSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUOgogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtNjgsMTcwICs1MSw4MiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0KLS8qCi0gKiBXaW5kb3dzIG9ubHkKLSAqLwotCiAjaWZkZWYgTVNfV0lORE9XUwotCi0vKiBPbiBXaW5kb3dzIHdlIHNldCBhbiBldmVudCB0byBzaWduYWwgQ3RybC1DOyBjb21wYXJlIHdpdGggdGltZW1vZHVsZS5jICovCi0KLUhBTkRMRSBzaWdpbnRfZXZlbnQgPSBOVUxMOwotCi1zdGF0aWMgQk9PTCBXSU5BUEkKLVByb2Nlc3NpbmdDdHJsSGFuZGxlcihEV09SRCBkd0N0cmxUeXBlKQotewotICAgIFNldEV2ZW50KHNpZ2ludF9ldmVudCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotfQotCi0vKgotICogVW5peCBvbmx5Ci0gKi8KLQotI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KLQotI2lmIEhBVkVfRkRfVFJBTlNGRVIKLQotLyogRnVuY3Rpb25zIGZvciB0cmFuc2ZlcnJpbmcgZmlsZSBkZXNjcmlwdG9ycyBiZXR3ZWVuIHByb2Nlc3Nlcy4KLSAgIFJlaW1wbGVtZW50cyBzb21lIG9mIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBmZGNyZWQKLSAgIG1vZHVsZSBhdCBodHRwOi8vd3d3Lm1jYS1sdGQuY29tL3Jlc291cmNlcy9mZGNyZWRfMS50Z3ouICovCi0vKiBCYXNlZCBpbiBodHRwOi8vcmVzaW4uY3NvZnQubmV0L2NnaS1iaW4vbWFuLmNnaT9zZWN0aW9uPTMmdG9waWM9Q01TR19EQVRBICovCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1tdWx0aXByb2Nlc3Npbmdfc2VuZGZkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK211bHRpcHJvY2Vzc2luZ19jbG9zZXNvY2tldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgaW50IGNvbm4sIGZkLCByZXM7Ci0gICAgc3RydWN0IGlvdmVjIGR1bW15X2lvdjsKLSAgICBjaGFyIGR1bW15X2NoYXI7Ci0gICAgc3RydWN0IG1zZ2hkciBtc2c7Ci0gICAgc3RydWN0IGNtc2doZHIgKmNtc2c7Ci0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgY21zZ2hkciBoZHI7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYnVmW0NNU0dfU1BBQ0Uoc2l6ZW9mKGludCkpXTsKLSAgICB9IGNtc2didWY7CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBpbnQgcmV0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZjb25uLCAmZmQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOmNsb3Nlc29ja2V0IiAsICZoYW5kbGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGR1bW15X2lvdi5pb3ZfYmFzZSA9ICZkdW1teV9jaGFyOwotICAgIGR1bW15X2lvdi5pb3ZfbGVuID0gMTsKLQotICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7Ci0gICAgbXNnLm1zZ19jb250cm9sID0gJmNtc2didWYuYnVmOwotICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjbXNnYnVmLmJ1Zik7Ci0gICAgbXNnLm1zZ19pb3YgPSAmZHVtbXlfaW92OwotICAgIG1zZy5tc2dfaW92bGVuID0gMTsKLQotICAgIGNtc2cgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOwotICAgIGNtc2ctPmNtc2dfbGVuID0gQ01TR19MRU4oc2l6ZW9mKGludCkpOwotICAgIGNtc2ctPmNtc2dfbGV2ZWwgPSBTT0xfU09DS0VUOwotICAgIGNtc2ctPmNtc2dfdHlwZSA9IFNDTV9SSUdIVFM7Ci0gICAgKiAoaW50ICopIENNU0dfREFUQShjbXNnKSA9IGZkOwotCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IHNlbmRtc2coY29ubiwgJm1zZywgMCk7CisgICAgcmV0ID0gY2xvc2Vzb2NrZXQoKFNPQ0tFVCkgaGFuZGxlKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgaWYgKHJldCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW11bHRpcHJvY2Vzc2luZ19yZWN2ZmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorbXVsdGlwcm9jZXNzaW5nX3JlY3YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGludCBjb25uLCBmZCwgcmVzOwotICAgIGNoYXIgZHVtbXlfY2hhcjsKLSAgICBzdHJ1Y3QgaW92ZWMgZHVtbXlfaW92OwotICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OwotICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnOwotICAgIHVuaW9uIHsKLSAgICAgICAgc3RydWN0IGNtc2doZHIgaGRyOwotICAgICAgICB1bnNpZ25lZCBjaGFyIGJ1ZltDTVNHX1NQQUNFKHNpemVvZihpbnQpKV07Ci0gICAgfSBjbXNnYnVmOworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgaW50IHNpemUsIG5yZWFkOworICAgIFB5T2JqZWN0ICpidWY7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmY29ubikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJpOnJlY3YiICwgJmhhbmRsZSwgJnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGR1bW15X2lvdi5pb3ZfYmFzZSA9ICZkdW1teV9jaGFyOwotICAgIGR1bW15X2lvdi5pb3ZfbGVuID0gMTsKLQotICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7Ci0gICAgbXNnLm1zZ19jb250cm9sID0gJmNtc2didWYuYnVmOwotICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjbXNnYnVmLmJ1Zik7Ci0gICAgbXNnLm1zZ19pb3YgPSAmZHVtbXlfaW92OwotICAgIG1zZy5tc2dfaW92bGVuID0gMTsKLQotICAgIGNtc2cgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOwotICAgIGNtc2ctPmNtc2dfbGV2ZWwgPSBTT0xfU09DS0VUOwotICAgIGNtc2ctPmNtc2dfdHlwZSA9IFNDTV9SSUdIVFM7Ci0gICAgY21zZy0+Y21zZ19sZW4gPSBDTVNHX0xFTihzaXplb2YoaW50KSk7Ci0gICAgbXNnLm1zZ19jb250cm9sbGVuID0gY21zZy0+Y21zZ19sZW47CisgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoIWJ1ZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gcmVjdm1zZyhjb25uLCAmbXNnLCAwKTsKKyAgICBucmVhZCA9IHJlY3YoKFNPQ0tFVCkgaGFuZGxlLCBQeUJ5dGVzX0FTX1NUUklORyhidWYpLCBzaXplLCAwKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0KLSAgICBpZiAobXNnLm1zZ19jb250cm9sbGVuIDwgQ01TR19MRU4oc2l6ZW9mKGludCkpIHx8Ci0gICAgICAgIChjbXNnID0gQ01TR19GSVJTVEhEUigmbXNnKSkgPT0gTlVMTCB8fAotICAgICAgICBjbXNnLT5jbXNnX2xldmVsICE9IFNPTF9TT0NLRVQgfHwKLSAgICAgICAgY21zZy0+Y21zZ190eXBlICE9IFNDTV9SSUdIVFMgfHwKLSAgICAgICAgY21zZy0+Y21zZ19sZW4gPCBDTVNHX0xFTihzaXplb2YoaW50KSkpIHsKLSAgICAgICAgLyogSWYgYXQgbGVhc3Qgb25lIGNvbnRyb2wgbWVzc2FnZSBpcyBwcmVzZW50LCB0aGVyZSBzaG91bGQgYmUKLSAgICAgICAgICAgbm8gcm9vbSBmb3IgYW55IGZ1cnRoZXIgZGF0YSBpbiB0aGUgYnVmZmVyLiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiTm8gZmlsZSBkZXNjcmlwdG9yIHJlY2VpdmVkIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChucmVhZCA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGJ1Zik7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CiAgICAgfQotCi0gICAgZmQgPSAqIChpbnQgKikgQ01TR19EQVRBKGNtc2cpOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgZmQpOworICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmLCBucmVhZCk7CisgICAgcmV0dXJuIGJ1ZjsKIH0KIAotI2VuZGlmIC8qIEhBVkVfRkRfVFJBTlNGRVIgKi8KLQotI2VuZGlmIC8qICFNU19XSU5ET1dTICovCi0KLQotLyoKLSAqIEFsbCBwbGF0Zm9ybXMKLSAqLwotCi1zdGF0aWMgUHlPYmplY3QqCi1tdWx0aXByb2Nlc3NpbmdfYWRkcmVzc19vZl9idWZmZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCitzdGF0aWMgUHlPYmplY3QgKgorbXVsdGlwcm9jZXNzaW5nX3NlbmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIHZvaWQgKmJ1ZmZlcjsKLSAgICBQeV9zc2l6ZV90IGJ1ZmZlcl9sZW47CisgICAgSEFORExFIGhhbmRsZTsKKyAgICBQeV9idWZmZXIgYnVmOworICAgIGludCByZXQ7CiAKLSAgICBpZiAoUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcihvYmosICZidWZmZXIsICZidWZmZXJfbGVuKSA8IDApCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJ5KjpzZW5kIiAsICZoYW5kbGUsICZidWYpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOIiBGX1BZX1NTSVpFX1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlMb25nX0Zyb21Wb2lkUHRyKGJ1ZmZlciksIGJ1ZmZlcl9sZW4pOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBzZW5kKChTT0NLRVQpIGhhbmRsZSwgYnVmLmJ1ZiwgYnVmLmxlbiwgMCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCBXU0FHZXRMYXN0RXJyb3IoKSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyZXQpOwogfQogCisjZW5kaWYKIAogLyoKICAqIEZ1bmN0aW9uIHRhYmxlCiAgKi8KIAogc3RhdGljIFB5TWV0aG9kRGVmIG1vZHVsZV9tZXRob2RzW10gPSB7Ci0gICAgeyJhZGRyZXNzX29mX2J1ZmZlciIsIG11bHRpcHJvY2Vzc2luZ19hZGRyZXNzX29mX2J1ZmZlciwgTUVUSF9PLAotICAgICAiYWRkcmVzc19vZl9idWZmZXIob2JqKSAtPiBpbnRcbiIKLSAgICAgIlJldHVybiBhZGRyZXNzIG9mIG9iaiBhc3N1bWluZyBvYmogc3VwcG9ydHMgYnVmZmVyIGludGVmYWNlIn0sCi0jaWYgSEFWRV9GRF9UUkFOU0ZFUgotICAgIHsic2VuZGZkIiwgbXVsdGlwcm9jZXNzaW5nX3NlbmRmZCwgTUVUSF9WQVJBUkdTLAotICAgICAic2VuZGZkKHNvY2tmZCwgZmQpIC0+IE5vbmVcbiIKLSAgICAgIlNlbmQgZmlsZSBkZXNjcmlwdG9yIGdpdmVuIGJ5IGZkIG92ZXIgdGhlIHVuaXggZG9tYWluIHNvY2tldFxuIgotICAgICAid2hvc2UgZmlsZSBkZWNyaXB0b3IgaXMgc29ja2ZkIn0sCi0gICAgeyJyZWN2ZmQiLCBtdWx0aXByb2Nlc3NpbmdfcmVjdmZkLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJyZWN2ZmQoc29ja2ZkKSAtPiBmZFxuIgotICAgICAiUmVjZWl2ZSBhIGZpbGUgZGVzY3JpcHRvciBvdmVyIGEgdW5peCBkb21haW4gc29ja2V0XG4iCi0gICAgICJ3aG9zZSBmaWxlIGRlY3JpcHRvciBpcyBzb2NrZmQifSwKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgeyJjbG9zZXNvY2tldCIsIG11bHRpcHJvY2Vzc2luZ19jbG9zZXNvY2tldCwgTUVUSF9WQVJBUkdTLCAiIn0sCisgICAgeyJyZWN2IiwgbXVsdGlwcm9jZXNzaW5nX3JlY3YsIE1FVEhfVkFSQVJHUywgIiJ9LAorICAgIHsic2VuZCIsIG11bHRpcHJvY2Vzc2luZ19zZW5kLCBNRVRIX1ZBUkFSR1MsICIifSwKICNlbmRpZgogICAgIHtOVUxMfQogfTsKQEAgLTI1NywyMiArMTUyLDEzIEBACiBQeU1PRElOSVRfRlVOQwogUHlJbml0X19tdWx0aXByb2Nlc3Npbmcodm9pZCkKIHsKLSAgICBQeU9iamVjdCAqbW9kdWxlLCAqdGVtcCwgKnZhbHVlOworICAgIFB5T2JqZWN0ICptb2R1bGUsICp0ZW1wLCAqdmFsdWUgPSBOVUxMOwogCiAgICAgLyogSW5pdGlhbGl6ZSBtb2R1bGUgKi8KICAgICBtb2R1bGUgPSBQeU1vZHVsZV9DcmVhdGUoJm11bHRpcHJvY2Vzc2luZ19tb2R1bGUpOwogICAgIGlmICghbW9kdWxlKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIC8qIEdldCBjb3B5IG9mIG9iamVjdHMgZnJvbSBwaWNrbGUgKi8KLSAgICB0ZW1wID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKFBJQ0tMRV9NT0RVTEUpOwotICAgIGlmICghdGVtcCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGlja2xlX2R1bXBzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0ZW1wLCAiZHVtcHMiKTsKLSAgICBwaWNrbGVfbG9hZHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJsb2FkcyIpOwotICAgIHBpY2tsZV9wcm90b2NvbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGVtcCwgIkhJR0hFU1RfUFJPVE9DT0wiKTsKLSAgICBQeV9YREVDUkVGKHRlbXApOwotCiAgICAgLyogR2V0IGNvcHkgb2YgQnVmZmVyVG9vU2hvcnQgKi8KICAgICB0ZW1wID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJtdWx0aXByb2Nlc3NpbmciKTsKICAgICBpZiAoIXRlbXApCkBAIC0yODAsMTIgKzE2Niw2IEBACiAgICAgQnVmZmVyVG9vU2hvcnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRlbXAsICJCdWZmZXJUb29TaG9ydCIpOwogICAgIFB5X1hERUNSRUYodGVtcCk7CiAKLSAgICAvKiBBZGQgY29ubmVjdGlvbiB0eXBlIHRvIG1vZHVsZSAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkoJkNvbm5lY3Rpb25UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRigmQ29ubmVjdGlvblR5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtb2R1bGUsICJDb25uZWN0aW9uIiwgKFB5T2JqZWN0KikmQ29ubmVjdGlvblR5cGUpOwotCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgIChkZWZpbmVkKEhBVkVfU0VNX09QRU4pICYmICFkZWZpbmVkKFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQpKQogICAgIC8qIEFkZCBTZW1Mb2NrIHR5cGUgdG8gbW9kdWxlICovCkBAIC0zMDgsMzIgKzE4OCw2IEBACiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG1vZHVsZSwgIlNlbUxvY2siLCAoUHlPYmplY3QqKSZTZW1Mb2NrVHlwZSk7CiAjZW5kaWYKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICAvKiBBZGQgUGlwZUNvbm5lY3Rpb24gdG8gbW9kdWxlICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUGlwZUNvbm5lY3Rpb25UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0lOQ1JFRigmUGlwZUNvbm5lY3Rpb25UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAiUGlwZUNvbm5lY3Rpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSZQaXBlQ29ubmVjdGlvblR5cGUpOwotCi0gICAgLyogSW5pdGlhbGl6ZSB3aW4zMiBjbGFzcyBhbmQgYWRkIHRvIG11bHRpcHJvY2Vzc2luZyAqLwotICAgIHRlbXAgPSBjcmVhdGVfd2luMzJfbmFtZXNwYWNlKCk7Ci0gICAgaWYgKCF0ZW1wKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobW9kdWxlLCAid2luMzIiLCB0ZW1wKTsKLQotICAgIC8qIEluaXRpYWxpemUgdGhlIGV2ZW50IGhhbmRsZSB1c2VkIHRvIHNpZ25hbCBDdHJsLUMgKi8KLSAgICBzaWdpbnRfZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgTlVMTCk7Ci0gICAgaWYgKCFzaWdpbnRfZXZlbnQpIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoIVNldENvbnNvbGVDdHJsSGFuZGxlcihQcm9jZXNzaW5nQ3RybEhhbmRsZXIsIFRSVUUpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0jZW5kaWYKLQogICAgIC8qIEFkZCBjb25maWd1cmF0aW9uIG1hY3JvcyAqLwogICAgIHRlbXAgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKCF0ZW1wKQpAQCAtMzQzLDcgKzE5Nyw3IEBACiAgICAgdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJpIiwgbmFtZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsgUHlfREVDUkVGKHRlbXApOyByZXR1cm4gTlVMTDsgfSAgICAgICAgICBcCiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKHRlbXAsICNuYW1lLCB2YWx1ZSkgPCAwKSB7ICAgICAgICAgICBcCi0gICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsgUHlfREVDUkVGKHZhbHVlKTsgcmV0dXJuIE5VTEw7IH0gICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfREVDUkVGKHRlbXApOyBQeV9ERUNSRUYodmFsdWUpOyByZXR1cm4gTlVMTDsgfSAgICAgICAgIFwKICAgICBQeV9ERUNSRUYodmFsdWUpCiAKICNpZiBkZWZpbmVkKEhBVkVfU0VNX09QRU4pICYmICFkZWZpbmVkKFBPU0lYX1NFTUFQSE9SRVNfTk9UX0VOQUJMRUQpCkBAIC0zNTIsOSArMjA2LDYgQEAKICNpZmRlZiBIQVZFX1NFTV9USU1FRFdBSVQKICAgICBBRERfRkxBRyhIQVZFX1NFTV9USU1FRFdBSVQpOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9GRF9UUkFOU0ZFUgotICAgIEFERF9GTEFHKEhBVkVfRkRfVFJBTlNGRVIpOwotI2VuZGlmCiAjaWZkZWYgSEFWRV9CUk9LRU5fU0VNX0dFVFZBTFVFCiAgICAgQUREX0ZMQUcoSEFWRV9CUk9LRU5fU0VNX0dFVFZBTFVFKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL211bHRpcHJvY2Vzc2luZy5oCmluZGV4IDE0NDI1ZGUuLmUzZGU5YmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuaAorKysgYi9Nb2R1bGVzL19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmgKQEAgLTMsMTIgKzMsNiBAQAogCiAjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KIAotI2lmZGVmIF9fc3VuCi0vKiBUaGUgY29udHJvbCBtZXNzYWdlIEFQSSBpcyBvbmx5IGF2YWlsYWJsZSBvbiBTb2xhcmlzIAotICAgaWYgWFBHIDQuMiBvciBsYXRlciBpcyByZXF1ZXN0ZWQuICovCi0jZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNTAwCi0jZW5kaWYKLQogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgInB5dGhyZWFkLmgiCkBAIC0yOSwxMCArMjMsNiBAQAogIyAgZGVmaW5lIFNFTV9WQUxVRV9NQVggTE9OR19NQVgKICNlbHNlCiAjICBpbmNsdWRlIDxmY250bC5oPiAgICAgICAgICAgICAgICAgLyogT19DUkVBVCBhbmQgT19FWENMICovCi0jICBpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jICBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jICBpbmNsdWRlIDxzeXMvdWlvLmg+Ci0jICBpbmNsdWRlIDxhcnBhL2luZXQuaD4gICAgICAgICAgICAgLyogaHRvbmwoKSBhbmQgbnRvaGwoKSAqLwogIyAgaWYgZGVmaW5lZChIQVZFX1NFTV9PUEVOKSAmJiAhZGVmaW5lZChQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEKQogIyAgICBpbmNsdWRlIDxzZW1hcGhvcmUuaD4KICAgICAgdHlwZWRlZiBzZW1fdCAqU0VNX0hBTkRMRTsKQEAgLTY0LDIwICs1NCw2IEBACiAKIAogLyoKLSAqIE1ha2Ugc3VyZSBQeV9zc2l6ZV90IGF2YWlsYWJsZQotICovCi0KLSNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDAgJiYgIWRlZmluZWQoUFlfU1NJWkVfVF9NSU4pCi0gICB0eXBlZGVmIGludCBQeV9zc2l6ZV90OwotIyAgZGVmaW5lIFBZX1NTSVpFX1RfTUFYIElOVF9NQVgKLSMgIGRlZmluZSBQWV9TU0laRV9UX01JTiBJTlRfTUlOCi0jICBkZWZpbmUgRl9QWV9TU0laRV9UICJpIgotIyAgZGVmaW5lIFB5SW50X0Zyb21Tc2l6ZV90KG4pIFB5SW50X0Zyb21Mb25nKChsb25nKW4pCi0jZWxzZQotIyAgZGVmaW5lIEZfUFlfU1NJWkVfVCAibiIKLSNlbmRpZgotCi0vKgogICogRm9ybWF0IGNvZGVzCiAgKi8KIApAQCAtMTA1LDEyICs4MSw2IEBACiAjICBkZWZpbmUgVF9TRU1fSEFORExFIFRfUE9JTlRFUgogI2VuZGlmCiAKLSNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAzMDAwMDAwCi0jICBkZWZpbmUgRl9SQlVGRkVSICJ5IgotI2Vsc2UKLSMgIGRlZmluZSBGX1JCVUZGRVIgInMiCi0jZW5kaWYKLQogLyoKICAqIEVycm9yIGNvZGVzIHdoaWNoIGNhbiBiZSByZXR1cm5lZCBieSBmdW5jdGlvbnMgY2FsbGVkIHdpdGhvdXQgR0lMCiAgKi8KQEAgLTExOCwxMSArODgsOCBAQAogI2RlZmluZSBNUF9TVUNDRVNTICgwKQogI2RlZmluZSBNUF9TVEFOREFSRF9FUlJPUiAoLTEpCiAjZGVmaW5lIE1QX01FTU9SWV9FUlJPUiAoLTEwMDEpCi0jZGVmaW5lIE1QX0VORF9PRl9GSUxFICgtMTAwMikKLSNkZWZpbmUgTVBfRUFSTFlfRU5EX09GX0ZJTEUgKC0xMDAzKQotI2RlZmluZSBNUF9CQURfTUVTU0FHRV9MRU5HVEggKC0xMDA0KQotI2RlZmluZSBNUF9TT0NLRVRfRVJST1IgKC0xMDA1KQotI2RlZmluZSBNUF9FWENFUFRJT05fSEFTX0JFRU5fU0VUICgtMTAwNikKKyNkZWZpbmUgTVBfU09DS0VUX0VSUk9SICgtMTAwMikKKyNkZWZpbmUgTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVCAoLTEwMDMpCiAKIFB5T2JqZWN0ICptcF9TZXRFcnJvcihQeU9iamVjdCAqVHlwZSwgaW50IG51bSk7CiAKQEAgLTEzMCw1NyArOTcsMTQgQEAKICAqIEV4dGVybnMgLSBub3QgYWxsIHdpbGwgcmVhbGx5IGV4aXN0IG9uIGFsbCBwbGF0Zm9ybXMKICAqLwogCi1leHRlcm4gUHlPYmplY3QgKnBpY2tsZV9kdW1wczsKLWV4dGVybiBQeU9iamVjdCAqcGlja2xlX2xvYWRzOwotZXh0ZXJuIFB5T2JqZWN0ICpwaWNrbGVfcHJvdG9jb2w7CiBleHRlcm4gUHlPYmplY3QgKkJ1ZmZlclRvb1Nob3J0OwogZXh0ZXJuIFB5VHlwZU9iamVjdCBTZW1Mb2NrVHlwZTsKLWV4dGVybiBQeVR5cGVPYmplY3QgQ29ubmVjdGlvblR5cGU7CiBleHRlcm4gUHlUeXBlT2JqZWN0IFBpcGVDb25uZWN0aW9uVHlwZTsKLWV4dGVybiBIQU5ETEUgc2lnaW50X2V2ZW50OwotCi0vKgotICogUHkzayBjb21wYXRpYmlsaXR5Ci0gKi8KLQotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKLSMgIGRlZmluZSBQSUNLTEVfTU9EVUxFICJwaWNrbGUiCi0jICBkZWZpbmUgRlJPTV9GT1JNQVQgUHlVbmljb2RlX0Zyb21Gb3JtYXQKLSMgIGRlZmluZSBQeUludF9Gcm9tTG9uZyBQeUxvbmdfRnJvbUxvbmcKLSMgIGRlZmluZSBQeUludF9Gcm9tU3NpemVfdCBQeUxvbmdfRnJvbVNzaXplX3QKLSNlbHNlCi0jICBkZWZpbmUgUElDS0xFX01PRFVMRSAiY1BpY2tsZSIKLSMgIGRlZmluZSBGUk9NX0ZPUk1BVCBQeVN0cmluZ19Gcm9tRm9ybWF0Ci0jZW5kaWYKLQotI2lmbmRlZiBQeVZhck9iamVjdF9IRUFEX0lOSVQKLSMgIGRlZmluZSBQeVZhck9iamVjdF9IRUFEX0lOSVQodHlwZSwgc2l6ZSkgUHlPYmplY3RfSEVBRF9JTklUKHR5cGUpIHNpemUsCi0jZW5kaWYKLQotI2lmbmRlZiBQeV9UUEZMQUdTX0hBVkVfV0VBS1JFRlMKLSMgIGRlZmluZSBQeV9UUEZMQUdTX0hBVkVfV0VBS1JFRlMgMAotI2VuZGlmCi0KLS8qCi0gKiBDb25uZWN0aW9uIGRlZmluaXRpb24KLSAqLwotCi0jZGVmaW5lIENPTk5FQ1RJT05fQlVGRkVSX1NJWkUgMTAyNAotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgaW50IGZsYWdzOwotICAgIFB5T2JqZWN0ICp3ZWFrcmVmbGlzdDsKLSAgICBjaGFyIGJ1ZmZlcltDT05ORUNUSU9OX0JVRkZFUl9TSVpFXTsKLX0gQ29ubmVjdGlvbk9iamVjdDsKIAogLyoKICAqIE1pc2NlbGxhbmVvdXMKICAqLwogCi0jZGVmaW5lIE1BWF9NRVNTQUdFX0xFTkdUSCAweDdmZmZmZmZmCi0KICNpZm5kZWYgTUlOCiAjICBkZWZpbmUgTUlOKHgsIHkpICgoeCkgPCAoeSkgPyB4IDogeSkKICMgIGRlZmluZSBNQVgoeCwgeSkgKCh4KSA+ICh5KSA/IHggOiB5KQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3BpcGVfY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3BpcGVfY29ubmVjdGlvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWRkZTBjLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9waXBlX2Nvbm5lY3Rpb24uYworKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vKgotICogQSB0eXBlIHdoaWNoIHdyYXBzIGEgcGlwZSBoYW5kbGUgaW4gbWVzc2FnZSBvcmllbnRlZCBtb2RlCi0gKgotICogcGlwZV9jb25uZWN0aW9uLmMKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrIC0tLSBzZWUgQ09QWUlORy50eHQKLSAqLwotCi0jaW5jbHVkZSAibXVsdGlwcm9jZXNzaW5nLmgiCi0KLSNkZWZpbmUgQ0xPU0UoaCkgQ2xvc2VIYW5kbGUoaCkKLQotLyoKLSAqIFNlbmQgc3RyaW5nIHRvIHRoZSBwaXBlOyBhc3N1bWVzIGluIG1lc3NhZ2Ugb3JpZW50ZWQgbW9kZQotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1jb25uX3NlbmRfc3RyaW5nKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBEV09SRCBhbW91bnRfd3JpdHRlbjsKLSAgICBCT09MIHJldDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXQgPSBXcml0ZUZpbGUoY29ubi0+aGFuZGxlLCBzdHJpbmcsIGxlbmd0aCwgJmFtb3VudF93cml0dGVuLCBOVUxMKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHJldCA9PSAwICYmIEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1NZU1RFTV9SRVNPVVJDRVMpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJDYW5ubm90IHNlbmQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBieXRlcyBvdmVyIGNvbm5lY3Rpb24iLCBsZW5ndGgpOwotICAgICAgICByZXR1cm4gTVBfU1RBTkRBUkRfRVJST1I7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJldCA/IE1QX1NVQ0NFU1MgOiBNUF9TVEFOREFSRF9FUlJPUjsKLX0KLQotLyoKLSAqIEF0dGVtcHRzIHRvIHJlYWQgaW50byBidWZmZXIsIG9yIGlmIGJ1ZmZlciB0b28gc21hbGwgaW50byAqbmV3YnVmZmVyLgotICoKLSAqIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBBc3N1bWVzIGluIG1lc3NhZ2Ugb3JpZW50ZWQgbW9kZS4KLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9yZWN2X3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpidWZmZXIsCi0gICAgICAgICAgICAgICAgIHNpemVfdCBidWZsZW5ndGgsIGNoYXIgKipuZXdidWZmZXIsIHNpemVfdCBtYXhsZW5ndGgpCi17Ci0gICAgRFdPUkQgbGVmdCwgbGVuZ3RoLCBmdWxsX2xlbmd0aCwgZXJyOwotICAgIEJPT0wgcmV0OwotICAgICpuZXdidWZmZXIgPSBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IFJlYWRGaWxlKGNvbm4tPmhhbmRsZSwgYnVmZmVyLCBNSU4oYnVmbGVuZ3RoLCBtYXhsZW5ndGgpLAotICAgICAgICAgICAgICAgICAgJmxlbmd0aCwgTlVMTCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmV0KQotICAgICAgICByZXR1cm4gbGVuZ3RoOwotCi0gICAgZXJyID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgaWYgKGVyciAhPSBFUlJPUl9NT1JFX0RBVEEpIHsKLSAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9CUk9LRU5fUElQRSkKLSAgICAgICAgICAgIHJldHVybiBNUF9FTkRfT0ZfRklMRTsKLSAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotICAgIH0KLQotICAgIGlmICghUGVla05hbWVkUGlwZShjb25uLT5oYW5kbGUsIE5VTEwsIDAsIE5VTEwsIE5VTEwsICZsZWZ0KSkKLSAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotCi0gICAgZnVsbF9sZW5ndGggPSBsZW5ndGggKyBsZWZ0OwotICAgIGlmIChmdWxsX2xlbmd0aCA+IG1heGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIE1QX0JBRF9NRVNTQUdFX0xFTkdUSDsKLQotICAgICpuZXdidWZmZXIgPSBQeU1lbV9NYWxsb2MoZnVsbF9sZW5ndGgpOwotICAgIGlmICgqbmV3YnVmZmVyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBNUF9NRU1PUllfRVJST1I7Ci0KLSAgICBtZW1jcHkoKm5ld2J1ZmZlciwgYnVmZmVyLCBsZW5ndGgpOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJldCA9IFJlYWRGaWxlKGNvbm4tPmhhbmRsZSwgKm5ld2J1ZmZlcitsZW5ndGgsIGxlZnQsICZsZW5ndGgsIE5VTEwpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJldCkgewotICAgICAgICBhc3NlcnQobGVuZ3RoID09IGxlZnQpOwotICAgICAgICByZXR1cm4gZnVsbF9sZW5ndGg7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlNZW1fRnJlZSgqbmV3YnVmZmVyKTsKLSAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotICAgIH0KLX0KLQotLyoKLSAqIENoZWNrIHdoZXRoZXIgYW55IGRhdGEgaXMgYXZhaWxhYmxlIGZvciByZWFkaW5nCi0gKi8KLQotc3RhdGljIGludAotY29ubl9wb2xsKENvbm5lY3Rpb25PYmplY3QgKmNvbm4sIGRvdWJsZSB0aW1lb3V0LCBQeVRocmVhZFN0YXRlICpfc2F2ZSkKLXsKLSAgICBEV09SRCBieXRlcywgZGVhZGxpbmUsIGRlbGF5OwotICAgIGludCBkaWZmZXJlbmNlLCByZXM7Ci0gICAgQk9PTCBibG9jayA9IEZBTFNFOwotCi0gICAgaWYgKCFQZWVrTmFtZWRQaXBlKGNvbm4tPmhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgJmJ5dGVzLCBOVUxMKSkKLSAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotCi0gICAgaWYgKHRpbWVvdXQgPT0gMC4wKQotICAgICAgICByZXR1cm4gYnl0ZXMgPiAwOwotCi0gICAgaWYgKHRpbWVvdXQgPCAwLjApCi0gICAgICAgIGJsb2NrID0gVFJVRTsKLSAgICBlbHNlCi0gICAgICAgIC8qIFhYWCBkb2VzIG5vdCBjaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAgICAgZGVhZGxpbmUgPSBHZXRUaWNrQ291bnQoKSArIChEV09SRCkoMTAwMCAqIHRpbWVvdXQgKyAwLjUpOwotCi0gICAgU2xlZXAoMCk7Ci0KLSAgICBmb3IgKGRlbGF5ID0gMSA7IDsgZGVsYXkgKz0gMSkgewotICAgICAgICBpZiAoIVBlZWtOYW1lZFBpcGUoY29ubi0+aGFuZGxlLCBOVUxMLCAwLCBOVUxMLCAmYnl0ZXMsIE5VTEwpKQotICAgICAgICAgICAgcmV0dXJuIE1QX1NUQU5EQVJEX0VSUk9SOwotICAgICAgICBlbHNlIGlmIChieXRlcyA+IDApCi0gICAgICAgICAgICByZXR1cm4gVFJVRTsKLQotICAgICAgICBpZiAoIWJsb2NrKSB7Ci0gICAgICAgICAgICBkaWZmZXJlbmNlID0gZGVhZGxpbmUgLSBHZXRUaWNrQ291bnQoKTsKLSAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgICAgICBpZiAoKGludClkZWxheSA+IGRpZmZlcmVuY2UpCi0gICAgICAgICAgICAgICAgZGVsYXkgPSBkaWZmZXJlbmNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRlbGF5ID4gMjApCi0gICAgICAgICAgICBkZWxheSA9IDIwOwotCi0gICAgICAgIFNsZWVwKGRlbGF5KTsKLQotICAgICAgICAvKiBjaGVjayBmb3Igc2lnbmFscyAqLwotICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgIHJlcyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOwotICAgICAgICBQeV9VTkJMT0NLX1RIUkVBRFMKLQotICAgICAgICBpZiAocmVzKQotICAgICAgICAgICAgcmV0dXJuIE1QX0VYQ0VQVElPTl9IQVNfQkVFTl9TRVQ7Ci0gICAgfQotfQotCi0vKgotICogImNvbm5lY3Rpb24uaCIgZGVmaW5lcyB0aGUgUGlwZUNvbm5lY3Rpb24gdHlwZSB1c2luZyB0aGUgZGVmaW5pdGlvbnMgYWJvdmUKLSAqLwotCi0jZGVmaW5lIENPTk5FQ1RJT05fTkFNRSAiUGlwZUNvbm5lY3Rpb24iCi0jZGVmaW5lIENPTk5FQ1RJT05fVFlQRSBQaXBlQ29ubmVjdGlvblR5cGUKLQotI2luY2x1ZGUgImNvbm5lY3Rpb24uaCIKZGlmZiAtLWdpdCBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zZW1hcGhvcmUuYwppbmRleCAxZjM3ZDZhLi44ZWE5MmYyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMKKysrIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3NlbWFwaG9yZS5jCkBAIC0zLDcgKzMsOCBAQAogICoKICAqIHNlbWFwaG9yZS5jCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0CisgKiBDb3B5cmlnaHQgKGMpIDIwMDYtMjAwOCwgUiBPdWRrZXJrCisgKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuCiAgKi8KIAogI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgpAQCAtNjIsNyArNjMsOCBAQAogICAgIGludCBibG9ja2luZyA9IDE7CiAgICAgZG91YmxlIHRpbWVvdXQ7CiAgICAgUHlPYmplY3QgKnRpbWVvdXRfb2JqID0gUHlfTm9uZTsKLSAgICBEV09SRCByZXMsIGZ1bGxfbXNlY3MsIG1zZWNzLCBzdGFydCwgdGlja3M7CisgICAgRFdPUkQgcmVzLCBmdWxsX21zZWNzLCBuaGFuZGxlczsKKyAgICBIQU5ETEUgaGFuZGxlc1syXSwgc2lnaW50X2V2ZW50OwogCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJibG9jayIsICJ0aW1lb3V0IiwgTlVMTH07CiAKQEAgLTk2LDUzICs5OCw0MCBAQAogICAgICAgICBQeV9SRVRVUk5fVFJVRTsKICAgICB9CiAKLSAgICAvKiBjaGVjayB3aGV0aGVyIHdlIGNhbiBhY3F1aXJlIHdpdGhvdXQgYmxvY2tpbmcgKi8KKyAgICAvKiBjaGVjayB3aGV0aGVyIHdlIGNhbiBhY3F1aXJlIHdpdGhvdXQgcmVsZWFzaW5nIHRoZSBHSUwgYW5kIGJsb2NraW5nICovCiAgICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3Qoc2VsZi0+aGFuZGxlLCAwKSA9PSBXQUlUX09CSkVDVF8wKSB7CiAgICAgICAgIHNlbGYtPmxhc3RfdGlkID0gR2V0Q3VycmVudFRocmVhZElkKCk7CiAgICAgICAgICsrc2VsZi0+Y291bnQ7CiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwogICAgIH0KIAotICAgIG1zZWNzID0gZnVsbF9tc2VjczsKLSAgICBzdGFydCA9IEdldFRpY2tDb3VudCgpOwotCi0gICAgZm9yICggOyA7ICkgewotICAgICAgICBIQU5ETEUgaGFuZGxlc1syXSA9IHtzZWxmLT5oYW5kbGUsIHNpZ2ludF9ldmVudH07Ci0KLSAgICAgICAgLyogZG8gdGhlIHdhaXQgKi8KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBSZXNldEV2ZW50KHNpZ2ludF9ldmVudCk7Ci0gICAgICAgIHJlcyA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoMiwgaGFuZGxlcywgRkFMU0UsIG1zZWNzKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICAvKiBoYW5kbGUgcmVzdWx0ICovCi0gICAgICAgIGlmIChyZXMgIT0gV0FJVF9PQkpFQ1RfMCArIDEpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAvKiBnb3QgU0lHSU5UIHNvIGdpdmUgc2lnbmFsIGhhbmRsZXIgYSBjaGFuY2UgdG8gcnVuICovCi0gICAgICAgIFNsZWVwKDEpOwotCi0gICAgICAgIC8qIGlmIHRoaXMgaXMgbWFpbiB0aHJlYWQgbGV0IEtleWJvYXJkSW50ZXJydXB0IGJlIHJhaXNlZCAqLwotICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAvKiByZWNhbGN1bGF0ZSB0aW1lb3V0ICovCi0gICAgICAgIGlmIChtc2VjcyAhPSBJTkZJTklURSkgewotICAgICAgICAgICAgdGlja3MgPSBHZXRUaWNrQ291bnQoKTsKLSAgICAgICAgICAgIGlmICgoRFdPUkQpKHRpY2tzIC0gc3RhcnQpID49IGZ1bGxfbXNlY3MpCi0gICAgICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgICAgICAgICAgbXNlY3MgPSBmdWxsX21zZWNzIC0gKHRpY2tzIC0gc3RhcnQpOwotICAgICAgICB9CisgICAgLyogcHJlcGFyZSBsaXN0IG9mIGhhbmRsZXMgKi8KKyAgICBuaGFuZGxlcyA9IDA7CisgICAgaGFuZGxlc1tuaGFuZGxlcysrXSA9IHNlbGYtPmhhbmRsZTsKKyAgICBpZiAoX1B5T1NfSXNNYWluVGhyZWFkKCkpIHsKKyAgICAgICAgc2lnaW50X2V2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgYXNzZXJ0KHNpZ2ludF9ldmVudCAhPSBOVUxMKTsKKyAgICAgICAgaGFuZGxlc1tuaGFuZGxlcysrXSA9IHNpZ2ludF9ldmVudDsKICAgICB9CiAKKyAgICAvKiBkbyB0aGUgd2FpdCAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoc2lnaW50X2V2ZW50ICE9IE5VTEwpCisgICAgICAgIFJlc2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKKyAgICByZXMgPSBXYWl0Rm9yTXVsdGlwbGVPYmplY3RzKG5oYW5kbGVzLCBoYW5kbGVzLCBGQUxTRSwgZnVsbF9tc2Vjcyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKwogICAgIC8qIGhhbmRsZSByZXN1bHQgKi8KICAgICBzd2l0Y2ggKHJlcykgewogICAgIGNhc2UgV0FJVF9USU1FT1VUOgogICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgY2FzZSBXQUlUX09CSkVDVF8wOgorICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCArIDA6CiAgICAgICAgIHNlbGYtPmxhc3RfdGlkID0gR2V0Q3VycmVudFRocmVhZElkKCk7CiAgICAgICAgICsrc2VsZi0+Y291bnQ7CiAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIGNhc2UgV0FJVF9PQkpFQ1RfMCArIDE6CisgICAgICAgIGVycm5vID0gRUlOVFI7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgY2FzZSBXQUlUX0ZBSUxFRDoKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgIGRlZmF1bHQ6CkBAIC00ODMsNyArNDcyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZW1sb2NrX2NvdW50KFNlbUxvY2tPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKChsb25nKXNlbGYtPmNvdW50KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXNlbGYtPmNvdW50KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUwNyw3ICs0OTYsNyBAQAogICAgICAgIHRoZSBudW1iZXIgb2Ygd2FpdGluZyB0aHJlYWRzICovCiAgICAgaWYgKHN2YWwgPCAwKQogICAgICAgICBzdmFsID0gMDsKLSAgICByZXR1cm4gUHlJbnRfRnJvbUxvbmcoKGxvbmcpc3ZhbCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylzdmFsKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19tdWx0aXByb2Nlc3Npbmcvc29ja2V0X2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zb2NrZXRfY29ubmVjdGlvbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTY5YzBhLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy9zb2NrZXRfY29ubmVjdGlvbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qCi0gKiBBIHR5cGUgd2hpY2ggd3JhcHMgYSBzb2NrZXQKLSAqCi0gKiBzb2NrZXRfY29ubmVjdGlvbi5jCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA2LTIwMDgsIFIgT3Vka2VyayAtLS0gc2VlIENPUFlJTkcudHh0Ci0gKi8KLQotI2luY2x1ZGUgIm11bHRpcHJvY2Vzc2luZy5oIgotCi0jaWZkZWYgTVNfV0lORE9XUwotIyAgZGVmaW5lIFdSSVRFKGgsIGJ1ZmZlciwgbGVuZ3RoKSBzZW5kKChTT0NLRVQpaCwgYnVmZmVyLCBsZW5ndGgsIDApCi0jICBkZWZpbmUgUkVBRChoLCBidWZmZXIsIGxlbmd0aCkgcmVjdigoU09DS0VUKWgsIGJ1ZmZlciwgbGVuZ3RoLCAwKQotIyAgZGVmaW5lIENMT1NFKGgpIGNsb3Nlc29ja2V0KChTT0NLRVQpaCkKLSNlbHNlCi0jICBkZWZpbmUgV1JJVEUoaCwgYnVmZmVyLCBsZW5ndGgpIHdyaXRlKGgsIGJ1ZmZlciwgbGVuZ3RoKQotIyAgZGVmaW5lIFJFQUQoaCwgYnVmZmVyLCBsZW5ndGgpIHJlYWQoaCwgYnVmZmVyLCBsZW5ndGgpCi0jICBkZWZpbmUgQ0xPU0UoaCkgY2xvc2UoaCkKLSNlbmRpZgotCi0vKgotICogU2VuZCBzdHJpbmcgdG8gZmlsZSBkZXNjcmlwdG9yCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLV9jb25uX3NlbmRhbGwoSEFORExFIGgsIGNoYXIgKnN0cmluZywgc2l6ZV90IGxlbmd0aCkKLXsKLSAgICBjaGFyICpwID0gc3RyaW5nOwotICAgIFB5X3NzaXplX3QgcmVzOwotCi0gICAgd2hpbGUgKGxlbmd0aCA+IDApIHsKLSAgICAgICAgcmVzID0gV1JJVEUoaCwgcCwgbGVuZ3RoKTsKLSAgICAgICAgaWYgKHJlcyA8IDApCi0gICAgICAgICAgICByZXR1cm4gTVBfU09DS0VUX0VSUk9SOwotICAgICAgICBsZW5ndGggLT0gcmVzOwotICAgICAgICBwICs9IHJlczsKLSAgICB9Ci0KLSAgICByZXR1cm4gTVBfU1VDQ0VTUzsKLX0KLQotLyoKLSAqIFJlY2VpdmUgc3RyaW5nIG9mIGV4YWN0IGxlbmd0aCBmcm9tIGZpbGUgZGVzY3JpcHRvcgotICovCi0KLXN0YXRpYyBQeV9zc2l6ZV90Ci1fY29ubl9yZWN2YWxsKEhBTkRMRSBoLCBjaGFyICpidWZmZXIsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgc2l6ZV90IHJlbWFpbmluZyA9IGxlbmd0aDsKLSAgICBQeV9zc2l6ZV90IHRlbXA7Ci0gICAgY2hhciAqcCA9IGJ1ZmZlcjsKLQotICAgIHdoaWxlIChyZW1haW5pbmcgPiAwKSB7Ci0gICAgICAgIHRlbXAgPSBSRUFEKGgsIHAsIHJlbWFpbmluZyk7Ci0gICAgICAgIGlmICh0ZW1wIDw9IDApIHsKLSAgICAgICAgICAgIGlmICh0ZW1wID09IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbWFpbmluZyA9PSBsZW5ndGggPwotICAgICAgICAgICAgICAgICAgICBNUF9FTkRfT0ZfRklMRSA6IE1QX0VBUkxZX0VORF9PRl9GSUxFOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wOwotICAgICAgICB9Ci0gICAgICAgIHJlbWFpbmluZyAtPSB0ZW1wOwotICAgICAgICBwICs9IHRlbXA7Ci0gICAgfQotCi0gICAgcmV0dXJuIE1QX1NVQ0NFU1M7Ci19Ci0KLS8qCi0gKiBTZW5kIGEgc3RyaW5nIHByZXBlbmRlZCBieSB0aGUgc3RyaW5nIGxlbmd0aCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIKLSAqLwotCi1zdGF0aWMgUHlfc3NpemVfdAotY29ubl9zZW5kX3N0cmluZyhDb25uZWN0aW9uT2JqZWN0ICpjb25uLCBjaGFyICpzdHJpbmcsIHNpemVfdCBsZW5ndGgpCi17Ci0gICAgUHlfc3NpemVfdCByZXM7Ci0gICAgLyogVGhlICJoZWFkZXIiIG9mIHRoZSBtZXNzYWdlIGlzIGEgMzIgYml0IHVuc2lnbmVkIG51bWJlciAoaW4KLSAgICAgICBuZXR3b3JrIG9yZGVyKSB3aGljaCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBvZiB0aGUgImJvZHkiLiAgSWYKLSAgICAgICB0aGUgbWVzc2FnZSBpcyBzaG9ydGVyIHRoYW4gYWJvdXQgMTZrYiB0aGVuIGl0IGlzIHF1aWNrZXIgdG8KLSAgICAgICBjb21iaW5lIHRoZSAiaGVhZGVyIiBhbmQgdGhlICJib2R5IiBvZiB0aGUgbWVzc2FnZSBhbmQgc2VuZAotICAgICAgIHRoZW0gYXQgb25jZS4gKi8KLSAgICBpZiAobGVuZ3RoIDwgKDE2KjEwMjQpKSB7Ci0gICAgICAgIGNoYXIgKm1lc3NhZ2U7Ci0KLSAgICAgICAgbWVzc2FnZSA9IFB5TWVtX01hbGxvYyhsZW5ndGgrNCk7Ci0gICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTVBfTUVNT1JZX0VSUk9SOwotCi0gICAgICAgICooVUlOVDMyKiltZXNzYWdlID0gaHRvbmwoKFVJTlQzMilsZW5ndGgpOwotICAgICAgICBtZW1jcHkobWVzc2FnZSs0LCBzdHJpbmcsIGxlbmd0aCk7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gX2Nvbm5fc2VuZGFsbChjb25uLT5oYW5kbGUsIG1lc3NhZ2UsIGxlbmd0aCs0KTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgUHlNZW1fRnJlZShtZXNzYWdlKTsKLSAgICB9IGVsc2UgewotICAgICAgICBVSU5UMzIgbGVuYnVmZjsKLQotICAgICAgICBpZiAobGVuZ3RoID4gTUFYX01FU1NBR0VfTEVOR1RIKQotICAgICAgICAgICAgcmV0dXJuIE1QX0JBRF9NRVNTQUdFX0xFTkdUSDsKLQotICAgICAgICBsZW5idWZmID0gaHRvbmwoKFVJTlQzMilsZW5ndGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlcyA9IF9jb25uX3NlbmRhbGwoY29ubi0+aGFuZGxlLCAoY2hhciopJmxlbmJ1ZmYsIDQpIHx8Ci0gICAgICAgICAgICBfY29ubl9zZW5kYWxsKGNvbm4tPmhhbmRsZSwgc3RyaW5nLCBsZW5ndGgpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vKgotICogQXR0ZW1wdHMgdG8gcmVhZCBpbnRvIGJ1ZmZlciwgb3IgZmFpbGluZyB0aGF0IGludG8gKm5ld2J1ZmZlcgotICoKLSAqIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuCi0gKi8KLQotc3RhdGljIFB5X3NzaXplX3QKLWNvbm5fcmVjdl9zdHJpbmcoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgY2hhciAqYnVmZmVyLAotICAgICAgICAgICAgICAgICBzaXplX3QgYnVmbGVuZ3RoLCBjaGFyICoqbmV3YnVmZmVyLCBzaXplX3QgbWF4bGVuZ3RoKQotewotICAgIFB5X3NzaXplX3QgcmVzOwotICAgIFVJTlQzMiB1bGVuZ3RoOwotCi0gICAgKm5ld2J1ZmZlciA9IE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gX2Nvbm5fcmVjdmFsbChjb25uLT5oYW5kbGUsIChjaGFyKikmdWxlbmd0aCwgNCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHJlczsKLQotICAgIHVsZW5ndGggPSBudG9obCh1bGVuZ3RoKTsKLSAgICBpZiAodWxlbmd0aCA+IG1heGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIE1QX0JBRF9NRVNTQUdFX0xFTkdUSDsKLQotICAgIGlmICh1bGVuZ3RoID4gYnVmbGVuZ3RoKSB7Ci0gICAgICAgICpuZXdidWZmZXIgPSBidWZmZXIgPSBQeU1lbV9NYWxsb2MoKHNpemVfdCl1bGVuZ3RoKTsKLSAgICAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE1QX01FTU9SWV9FUlJPUjsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gX2Nvbm5fcmVjdmFsbChjb25uLT5oYW5kbGUsIGJ1ZmZlciwgKHNpemVfdCl1bGVuZ3RoKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHJlcyA+PSAwKSB7Ci0gICAgICAgIHJlcyA9IChQeV9zc2l6ZV90KXVsZW5ndGg7Ci0gICAgfSBlbHNlIGlmICgqbmV3YnVmZmVyICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZSgqbmV3YnVmZmVyKTsKLSAgICAgICAgKm5ld2J1ZmZlciA9IE5VTEw7Ci0gICAgfQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8qCi0gKiBDaGVjayB3aGV0aGVyIGFueSBkYXRhIGlzIGF2YWlsYWJsZSBmb3IgcmVhZGluZyAtLSBuZWcgdGltZW91dCBibG9ja3MKLSAqLwotCi1zdGF0aWMgaW50Ci1jb25uX3BvbGwoQ29ubmVjdGlvbk9iamVjdCAqY29ubiwgZG91YmxlIHRpbWVvdXQsIFB5VGhyZWFkU3RhdGUgKl9zYXZlKQotewotICAgIGludCByZXM7Ci0gICAgZmRfc2V0IHJmZHM7Ci0KLSAgICAvKgotICAgICAqIFZlcmlmeSB0aGUgaGFuZGxlLCBpc3N1ZSAzMzIxLiBOb3QgcmVxdWlyZWQgZm9yIHdpbmRvd3MuCi0gICAgICovCi0gICAgI2lmbmRlZiBNU19XSU5ET1dTCi0gICAgICAgIGlmICgoKGludCljb25uLT5oYW5kbGUpIDwgMCB8fCAoKGludCljb25uLT5oYW5kbGUpID49IEZEX1NFVFNJWkUpIHsKLSAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLCAiaGFuZGxlIG91dCBvZiByYW5nZSBpbiBzZWxlY3QoKSIpOwotICAgICAgICAgICAgUHlfVU5CTE9DS19USFJFQURTCi0gICAgICAgICAgICByZXR1cm4gTVBfRVhDRVBUSU9OX0hBU19CRUVOX1NFVDsKLSAgICAgICAgfQotICAgICNlbmRpZgotCi0gICAgRkRfWkVSTygmcmZkcyk7Ci0gICAgRkRfU0VUKChTT0NLRVQpY29ubi0+aGFuZGxlLCAmcmZkcyk7Ci0KLSAgICBpZiAodGltZW91dCA8IDAuMCkgewotICAgICAgICByZXMgPSBzZWxlY3QoKGludCljb25uLT5oYW5kbGUrMSwgJnJmZHMsIE5VTEwsIE5VTEwsIE5VTEwpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2OwotICAgICAgICB0di50dl9zZWMgPSAobG9uZyl0aW1lb3V0OwotICAgICAgICB0di50dl91c2VjID0gKGxvbmcpKCh0aW1lb3V0IC0gdHYudHZfc2VjKSAqIDFlNiArIDAuNSk7Ci0gICAgICAgIHJlcyA9IHNlbGVjdCgoaW50KWNvbm4tPmhhbmRsZSsxLCAmcmZkcywgTlVMTCwgTlVMTCwgJnR2KTsKLSAgICB9Ci0KLSAgICBpZiAocmVzIDwgMCkgewotICAgICAgICByZXR1cm4gTVBfU09DS0VUX0VSUk9SOwotICAgIH0gZWxzZSBpZiAoRkRfSVNTRVQoY29ubi0+aGFuZGxlLCAmcmZkcykpIHsKLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYXNzZXJ0KHJlcyA9PSAwKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLX0KLQotLyoKLSAqICJjb25uZWN0aW9uLmgiIGRlZmluZXMgdGhlIENvbm5lY3Rpb24gdHlwZSB1c2luZyBkZWZzIGFib3ZlCi0gKi8KLQotI2RlZmluZSBDT05ORUNUSU9OX05BTUUgIkNvbm5lY3Rpb24iCi0jZGVmaW5lIENPTk5FQ1RJT05fVFlQRSBDb25uZWN0aW9uVHlwZQotCi0jaW5jbHVkZSAiY29ubmVjdGlvbi5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jIGIvTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTM0OGM0Li4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYworKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0vKgotICogV2luMzIgZnVuY3Rpb25zIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIHBhY2thZ2UKLSAqCi0gKiB3aW4zMl9mdW5jdGlvbnMuYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA4LCBSIE91ZGtlcmsgLS0tIHNlZSBDT1BZSU5HLnR4dAotICovCi0KLSNpbmNsdWRlICJtdWx0aXByb2Nlc3NpbmcuaCIKLQotCi0jZGVmaW5lIFdJTjMyX0ZVTkNUSU9OKGZ1bmMpIFwKLSAgICB7I2Z1bmMsIChQeUNGdW5jdGlvbil3aW4zMl8gIyMgZnVuYywgTUVUSF9WQVJBUkdTIHwgTUVUSF9TVEFUSUMsICIifQotCi0jZGVmaW5lIFdJTjMyX0NPTlNUQU5UKGZtdCwgY29uKSBcCi0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoV2luMzJUeXBlLnRwX2RpY3QsICNjb24sIFB5X0J1aWxkVmFsdWUoZm10LCBjb24pKQotCi0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhPYmplY3Q7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFLCAmaE9iamVjdCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLXdpbjMyX0Nvbm5lY3ROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIEhBTkRMRSBoTmFtZWRQaXBlOwotICAgIExQT1ZFUkxBUFBFRCBscE92ZXJsYXBwZWQ7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFIEZfUE9JTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZscE92ZXJsYXBwZWQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gQ29ubmVjdE5hbWVkUGlwZShoTmFtZWRQaXBlLCBscE92ZXJsYXBwZWQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoIXN1Y2Nlc3MpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfQ3JlYXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscEZpbGVOYW1lOwotICAgIERXT1JEIGR3RGVzaXJlZEFjY2VzczsKLSAgICBEV09SRCBkd1NoYXJlTW9kZTsKLSAgICBMUFNFQ1VSSVRZX0FUVFJJQlVURVMgbHBTZWN1cml0eUF0dHJpYnV0ZXM7Ci0gICAgRFdPUkQgZHdDcmVhdGlvbkRpc3Bvc2l0aW9uOwotICAgIERXT1JEIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzOwotICAgIEhBTkRMRSBoVGVtcGxhdGVGaWxlOwotICAgIEhBTkRMRSBoYW5kbGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRl9EV09SRCBGX0RXT1JEIEZfSEFORExFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBGaWxlTmFtZSwgJmR3RGVzaXJlZEFjY2VzcywgJmR3U2hhcmVNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbHBTZWN1cml0eUF0dHJpYnV0ZXMsICZkd0NyZWF0aW9uRGlzcG9zaXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZkd0ZsYWdzQW5kQXR0cmlidXRlcywgJmhUZW1wbGF0ZUZpbGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBoYW5kbGUgPSBDcmVhdGVGaWxlKGxwRmlsZU5hbWUsIGR3RGVzaXJlZEFjY2VzcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3U2hhcmVNb2RlLCBscFNlY3VyaXR5QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3Q3JlYXRpb25EaXNwb3NpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGR3RmxhZ3NBbmRBdHRyaWJ1dGVzLCBoVGVtcGxhdGVGaWxlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9DcmVhdGVOYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIExQQ1RTVFIgbHBOYW1lOwotICAgIERXT1JEIGR3T3Blbk1vZGU7Ci0gICAgRFdPUkQgZHdQaXBlTW9kZTsKLSAgICBEV09SRCBuTWF4SW5zdGFuY2VzOwotICAgIERXT1JEIG5PdXRCdWZmZXJTaXplOwotICAgIERXT1JEIG5JbkJ1ZmZlclNpemU7Ci0gICAgRFdPUkQgbkRlZmF1bHRUaW1lT3V0OwotICAgIExQU0VDVVJJVFlfQVRUUklCVVRFUyBscFNlY3VyaXR5QXR0cmlidXRlczsKLSAgICBIQU5ETEUgaGFuZGxlOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRAotICAgICAgICAgICAgICAgICAgICAgICAgICBGX0RXT1JEIEZfRFdPUkQgRl9EV09SRCBGX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscE5hbWUsICZkd09wZW5Nb2RlLCAmZHdQaXBlTW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5NYXhJbnN0YW5jZXMsICZuT3V0QnVmZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5JbkJ1ZmZlclNpemUsICZuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZscFNlY3VyaXR5QXR0cmlidXRlcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IENyZWF0ZU5hbWVkUGlwZShscE5hbWUsIGR3T3Blbk1vZGUsIGR3UGlwZU1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5NYXhJbnN0YW5jZXMsIG5PdXRCdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuSW5CdWZmZXJTaXplLCBuRGVmYXVsdFRpbWVPdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxwU2VjdXJpdHlBdHRyaWJ1dGVzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKGhhbmRsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9FeGl0UHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgVUlOVCB1RXhpdENvZGU7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIkkiLCAmdUV4aXRDb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAjaWYgZGVmaW5lZChQeV9ERUJVRykKLSAgICAgICAgU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlN8U0VNX05PQUxJR05NRU5URkFVTFRFWENFUFR8U0VNX05PR1BGQVVMVEVSUk9SQk9YfFNFTV9OT09QRU5GSUxFRVJST1JCT1gpOwotICAgICAgICBfQ3J0U2V0UmVwb3J0TW9kZShfQ1JUX0FTU0VSVCwgX0NSVERCR19NT0RFX0RFQlVHKTsKLSAgICAjZW5kaWYKLQotCi0gICAgRXhpdFByb2Nlc3ModUV4aXRDb2RlKTsKLQotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9PcGVuUHJvY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgRFdPUkQgZHdEZXNpcmVkQWNjZXNzOwotICAgIEJPT0wgYkluaGVyaXRIYW5kbGU7Ci0gICAgRFdPUkQgZHdQcm9jZXNzSWQ7Ci0gICAgSEFORExFIGhhbmRsZTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0RXT1JEICJpIiBGX0RXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdEZXNpcmVkQWNjZXNzLCAmYkluaGVyaXRIYW5kbGUsICZkd1Byb2Nlc3NJZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGFuZGxlID0gT3BlblByb2Nlc3MoZHdEZXNpcmVkQWNjZXNzLCBiSW5oZXJpdEhhbmRsZSwgZHdQcm9jZXNzSWQpOwotICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoRl9IQU5ETEUsIGhhbmRsZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi13aW4zMl9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgSEFORExFIGhOYW1lZFBpcGU7Ci0gICAgUHlPYmplY3QgKm9BcmdzWzNdOwotICAgIERXT1JEIGR3QXJnc1szXSwgKnBBcmdzWzNdID0ge05VTEwsIE5VTEwsIE5VTEx9OwotICAgIGludCBpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICJPT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmaE5hbWVkUGlwZSwgJm9BcmdzWzBdLCAmb0FyZ3NbMV0sICZvQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGZvciAoaSA9IDAgOyBpIDwgMyA7IGkrKykgewotICAgICAgICBpZiAob0FyZ3NbaV0gIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgZHdBcmdzW2ldID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhvQXJnc1tpXSk7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIHBBcmdzW2ldID0gJmR3QXJnc1tpXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUoaE5hbWVkUGlwZSwgcEFyZ3NbMF0sIHBBcmdzWzFdLCBwQXJnc1syXSkpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKLQotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfV2FpdE5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgTFBDVFNUUiBscE5hbWVkUGlwZU5hbWU7Ci0gICAgRFdPUkQgblRpbWVPdXQ7Ci0gICAgQk9PTCBzdWNjZXNzOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JELCAmbHBOYW1lZFBpcGVOYW1lLCAmblRpbWVPdXQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBzdWNjZXNzID0gV2FpdE5hbWVkUGlwZShscE5hbWVkUGlwZU5hbWUsIG5UaW1lT3V0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKCFzdWNjZXNzKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0KLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIHdpbjMyX21ldGhvZHNbXSA9IHsKLSAgICBXSU4zMl9GVU5DVElPTihDbG9zZUhhbmRsZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oR2V0TGFzdEVycm9yKSwKLSAgICBXSU4zMl9GVU5DVElPTihPcGVuUHJvY2VzcyksCi0gICAgV0lOMzJfRlVOQ1RJT04oRXhpdFByb2Nlc3MpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENvbm5lY3ROYW1lZFBpcGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENyZWF0ZUZpbGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKENyZWF0ZU5hbWVkUGlwZSksCi0gICAgV0lOMzJfRlVOQ1RJT04oU2V0TmFtZWRQaXBlSGFuZGxlU3RhdGUpLAotICAgIFdJTjMyX0ZVTkNUSU9OKFdhaXROYW1lZFBpcGUpLAotICAgIHtOVUxMfQotfTsKLQotCi1QeVR5cGVPYmplY3QgV2luMzJUeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotfTsKLQotCi1QeU9iamVjdCAqCi1jcmVhdGVfd2luMzJfbmFtZXNwYWNlKHZvaWQpCi17Ci0gICAgV2luMzJUeXBlLnRwX25hbWUgPSAiX211bHRpcHJvY2Vzc2luZy53aW4zMiI7Ci0gICAgV2luMzJUeXBlLnRwX21ldGhvZHMgPSB3aW4zMl9tZXRob2RzOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJldpbjMyVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYoJldpbjMyVHlwZSk7Ci0KLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9BTFJFQURZX0VYSVNUUyk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fREFUQSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9CVVNZKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9QSVBFX0NPTk5FQ1RFRCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfU0VNX1RJTUVPVVQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfUkVBRCk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgR0VORVJJQ19XUklURSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgSU5GSU5JVEUpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIE5NUFdBSVRfV0FJVF9GT1JFVkVSKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBPUEVOX0VYSVNUSU5HKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQSVBFX0FDQ0VTU19EVVBMRVgpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0lOQk9VTkQpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfUkVBRE1PREVfTUVTU0FHRSk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9UWVBFX01FU1NBR0UpOwotICAgIFdJTjMyX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUyk7Ci0gICAgV0lOMzJfQ09OU1RBTlQoRl9EV09SRCwgUElQRV9XQUlUKTsKLSAgICBXSU4zMl9DT05TVEFOVChGX0RXT1JELCBQUk9DRVNTX0FMTF9BQ0NFU1MpOwotCi0gICAgV0lOMzJfQ09OU1RBTlQoImkiLCBOVUxMKTsKLQotICAgIHJldHVybiAoUHlPYmplY3QqKSZXaW4zMlR5cGU7Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19waWNrbGUuYyBiL01vZHVsZXMvX3BpY2tsZS5jCmluZGV4IGZjNWY4NzEuLjViYTU1OTkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3BpY2tsZS5jCisrKyBiL01vZHVsZXMvX3BpY2tsZS5jCkBAIC0zMTksNiArMzE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0cyB0byBzdXBwb3J0IHNlbGYtcmVmZXJlbnRpYWwgb2JqZWN0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGluZy4gKi8KICAgICBQeU9iamVjdCAqcGVyc19mdW5jOyAgICAgICAgLyogcGVyc2lzdGVudF9pZCgpIG1ldGhvZCwgY2FuIGJlIE5VTEwgKi8KKyAgICBQeU9iamVjdCAqZGlzcGF0Y2hfdGFibGU7ICAgLyogcHJpdmF0ZSBkaXNwYXRjaF90YWJsZSwgY2FuIGJlIE5VTEwgKi8KICAgICBQeU9iamVjdCAqYXJnOwogCiAgICAgUHlPYmplY3QgKndyaXRlOyAgICAgICAgICAgIC8qIHdyaXRlKCkgbWV0aG9kIG9mIHRoZSBvdXRwdXQgc3RyZWFtLiAqLwpAQCAtNjA1LDcgKzYwNiw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogLyogSGVscGVycyBmb3IgY3JlYXRpbmcgdGhlIGFyZ3VtZW50IHR1cGxlIHBhc3NlZCB0byBmdW5jdGlvbnMuIFRoaXMgaGFzIHRoZQotICAgcGVyZm9ybWFuY2UgYWR2YW50YWdlIG9mIGNhbGxpbmcgUHlUdXBsZV9OZXcoKSBvbmx5IG9uY2UuIAorICAgcGVyZm9ybWFuY2UgYWR2YW50YWdlIG9mIGNhbGxpbmcgUHlUdXBsZV9OZXcoKSBvbmx5IG9uY2UuCiAKICAgIFhYWChhdmFzc2Fsb3R0aSk6IElubGluZSBkaXJlY3RseSBpbiBfUGlja2xlcl9GYXN0Q2FsbCgpIGFuZAogICAgX1VucGlja2xlcl9GYXN0Q2FsbCgpLiAqLwpAQCAtNzY0LDYgKzc2NSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc2VsZi0+cGVyc19mdW5jID0gTlVMTDsKKyAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IE5VTEw7CiAgICAgc2VsZi0+YXJnID0gTlVMTDsKICAgICBzZWxmLT53cml0ZSA9IE5VTEw7CiAgICAgc2VsZi0+cHJvdG8gPSAwOwpAQCAtODEzLDcgKzgxNSw3IEBACiAgICAgZml4X2ltcG9ydHMgPSBQeU9iamVjdF9Jc1RydWUoZml4X2ltcG9ydHNfb2JqKTsKICAgICBpZiAoZml4X2ltcG9ydHMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICAKKwogICAgIHNlbGYtPnByb3RvID0gcHJvdG87CiAgICAgc2VsZi0+YmluID0gcHJvdG8gPiAwOwogICAgIHNlbGYtPmZpeF9pbXBvcnRzID0gZml4X2ltcG9ydHMgJiYgcHJvdG8gPCAzOwpAQCAtODI2LDggKzgyOCw5IEBACiBzdGF0aWMgaW50CiBfUGlja2xlcl9TZXRPdXRwdXRTdHJlYW0oUGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmZpbGUpCiB7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogICAgIGFzc2VydChmaWxlICE9IE5VTEwpOwotICAgIHNlbGYtPndyaXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAid3JpdGUiKTsKKyAgICBzZWxmLT53cml0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmIChzZWxmLT53cml0ZSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCkBAIC05MDksNyArOTEyLDcgQEAKICAgICBQeV9zc2l6ZV90IHJlYWRfc2l6ZSwgcHJlZmV0Y2hlZF9zaXplID0gMDsKIAogICAgIGFzc2VydChzZWxmLT5yZWFkICE9IE5VTEwpOwotICAgIAorCiAgICAgaWYgKF9VbnBpY2tsZXJfU2tpcENvbnN1bWVkKHNlbGYpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC0xMDM3LDcgKzEwNDAsNyBAQAogICAgICAgICBzZWxmLT5uZXh0X3JlYWRfaWR4ID0gbnVtX3JlYWQ7CiAgICAgICAgIHJldHVybiBfVW5waWNrbGVyX0NvcHlMaW5lKHNlbGYsIHNlbGYtPmlucHV0X2J1ZmZlciwgbnVtX3JlYWQsIHJlc3VsdCk7CiAgICAgfQotIAorCiAgICAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlJ3ZlIHJ1biBvZmYgdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBSZXR1cm4gdGhlCiAgICAgICAgcmVtYWluaW5nIHN0cmluZyBhbmQgbGV0IHRoZSBjYWxsZXIgZmlndXJlIGl0IG91dC4gKi8KICAgICAqcmVzdWx0ID0gc2VsZi0+aW5wdXRfYnVmZmVyICsgc2VsZi0+bmV4dF9yZWFkX2lkeDsKQEAgLTExNzMsMTUgKzExNzYsMTkgQEAKIHN0YXRpYyBpbnQKIF9VbnBpY2tsZXJfU2V0SW5wdXRTdHJlYW0oVW5waWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZmlsZSkKIHsKLSAgICBzZWxmLT5wZWVrID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicGVlayIpOworICAgIF9QeV9JREVOVElGSUVSKHBlZWspOworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworICAgIF9QeV9JREVOVElGSUVSKHJlYWRsaW5lKTsKKworICAgIHNlbGYtPnBlZWsgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZpbGUsICZQeUlkX3BlZWspOwogICAgIGlmIChzZWxmLT5wZWVrID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBzZWxmLT5yZWFkID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicmVhZCIpOwotICAgIHNlbGYtPnJlYWRsaW5lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaWxlLCAicmVhZGxpbmUiKTsKKyAgICBzZWxmLT5yZWFkID0gX1B5T2JqZWN0X0dldEF0dHJJZChmaWxlLCAmUHlJZF9yZWFkKTsKKyAgICBzZWxmLT5yZWFkbGluZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfcmVhZGxpbmUpOwogICAgIGlmIChzZWxmLT5yZWFkbGluZSA9PSBOVUxMIHx8IHNlbGYtPnJlYWQgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMTU0Myw3ICsxNTUwLDEwIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHNhdmVfaW50KHNlbGYsIHZhbCk7CisjaWYgU0laRU9GX0xPTkcgPiA0CisgICAgICAgIGlmICh2YWwgPD0gMHg3ZmZmZmZmZkwgJiYgdmFsID49IC0weDgwMDAwMDAwTCkKKyNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIHNhdmVfaW50KHNlbGYsIHZhbCk7CiAKICAgICBpZiAoc2VsZi0+cHJvdG8gPj0gMikgewogICAgICAgICAvKiBMaW5lYXItdGltZSBwaWNrbGluZy4gKi8KQEAgLTE1OTgsNyArMTYwOCw3IEBACiAgICAgICAgICAqIGJpdHMuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoc2lnbiA8IDAgJiYKLSAgICAgICAgICAgIG5ieXRlcyA+IDEgJiYgCisgICAgICAgICAgICBuYnl0ZXMgPiAxICYmCiAgICAgICAgICAgICBwZGF0YVtuYnl0ZXMgLSAxXSA9PSAweGZmICYmCiAgICAgICAgICAgICAocGRhdGFbbmJ5dGVzIC0gMl0gJiAweDgwKSAhPSAwKSB7CiAgICAgICAgICAgICBuYnl0ZXMtLTsKQEAgLTE2NjQsNyArMTY3NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChfUGlja2xlcl9Xcml0ZShzZWxmLCBwZGF0YSwgOSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgfSAKKyAgIH0KICAgICBlbHNlIHsKICAgICAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgICAgICBjaGFyICpidWYgPSBOVUxMOwpAQCAtMTc5OCw5MCArMTgwOCw2NSBAQAogLyogQSBjb3B5IG9mIFB5VW5pY29kZV9FbmNvZGVSYXdVbmljb2RlRXNjYXBlKCkgdGhhdCBhbHNvIHRyYW5zbGF0ZXMKICAgIGJhY2tzbGFzaCBhbmQgbmV3bGluZSBjaGFyYWN0ZXJzIHRvIFx1WFhYWCBlc2NhcGVzLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXJhd191bmljb2RlX2VzY2FwZShjb25zdCBQeV9VTklDT0RFICpzLCBQeV9zc2l6ZV90IHNpemUpCityYXdfdW5pY29kZV9lc2NhcGUoUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqcmVwciwgKnJlc3VsdDsKICAgICBjaGFyICpwOwotICAgIGNoYXIgKnE7CisgICAgUHlfc3NpemVfdCBpLCBzaXplLCBleHBhbmRzaXplOworICAgIHZvaWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgotICAgIAorICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChvYmopOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKQorICAgICAgICBleHBhbmRzaXplID0gMTA7CisgICAgZWxzZQorICAgICAgICBleHBhbmRzaXplID0gNjsKKwogICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAKICAgICByZXByID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIHNpemUpOwogICAgIGlmIChyZXByID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIGdvdG8gZG9uZTsKIAotICAgIHAgPSBxID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlcHIpOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgIHAgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVwcik7CisgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICAvKiBNYXAgMzItYml0IGNoYXJhY3RlcnMgdG8gJ1xVeHh4eHh4eHgnICovCiAgICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAxNV07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotI2Vsc2UKLSAgICAgICAgICAgIC8qIE1hcCBVVEYtMTYgc3Vycm9nYXRlIHBhaXJzIHRvICdcVTAweHh4eHh4JyAqLwotICAgICAgICAgICAgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REMwMCkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyOwotICAgICAgICAgICAgICAgIFB5X1VDUzQgdWNzOwotCi0gICAgICAgICAgICAgICAgY2gyID0gKnMrKzsKLSAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgaWYgKGNoMiA+PSAweERDMDAgJiYgY2gyIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxNikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoOiBpc29sYXRlZCBzdXJyb2dhdGVzIGFyZSBjb3BpZWQgYXMtaXMgKi8KLSAgICAgICAgICAgICAgICBzLS07Ci0gICAgICAgICAgICAgICAgc2l6ZSsrOwotICAgICAgICAgICAgfQotI2VuZGlmCiAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMjU2IHx8IGNoID09ICdcXCcgfHwgY2ggPT0gJ1xuJykgeworICAgICAgICBlbHNlIGlmIChjaCA+PSAyNTYgfHwgY2ggPT0gJ1xcJyB8fCBjaCA9PSAnXG4nKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9CiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gcTsKKyAgICBzaXplID0gcCAtIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKTsKIAotICBkb25lOgorZG9uZToKICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXByKSwgc2l6ZSk7CiAgICAgUHlfREVDUkVGKHJlcHIpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xODk2LDkgKzE4ODEsNyBAQAogICAgIGlmIChzZWxmLT5iaW4pIHsKICAgICAgICAgY2hhciBwZGF0YVs1XTsKIAotICAgICAgICBlbmNvZGVkID0gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShvYmopLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgZW5jb2RlZCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqLCAidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpOwogICAgICAgICBpZiAoZW5jb2RlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTkyNCw4ICsxOTA3LDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgY29uc3QgY2hhciB1bmljb2RlX29wID0gVU5JQ09ERTsKIAotICAgICAgICBlbmNvZGVkID0gcmF3X3VuaWNvZGVfZXNjYXBlKFB5VW5pY29kZV9BU19VTklDT0RFKG9iaiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpOworICAgICAgICBlbmNvZGVkID0gcmF3X3VuaWNvZGVfZXNjYXBlKG9iaik7CiAgICAgICAgIGlmIChlbmNvZGVkID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCkBAIC0yNTQ0LDcgKzI1MjYsOSBAQAogICAgICAgICAgICAgc3RhdHVzID0gYmF0Y2hfZGljdF9leGFjdChzZWxmLCBvYmopOwogICAgICAgICAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiaXRlbXMiLCAiKCkiKTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKKworICAgICAgICAgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG9iaiwgJlB5SWRfaXRlbXMsICIoKSIpOwogICAgICAgICAgICAgaWYgKGl0ZW1zID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIGl0ZXIgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTI4MjgsNiArMjgxMiwzMCBAQAogfQogCiBzdGF0aWMgaW50CitzYXZlX2VsbGlwc2lzKFBpY2tsZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCit7CisgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFbGxpcHNpcyIpOworICAgIGludCByZXM7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmVzID0gc2F2ZV9nbG9iYWwoc2VsZiwgUHlfRWxsaXBzaXMsIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludAorc2F2ZV9ub3RpbXBsZW1lbnRlZChQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqKQoreworICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiTm90SW1wbGVtZW50ZWQiKTsKKyAgICBpbnQgcmVzOworICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlcyA9IHNhdmVfZ2xvYmFsKHNlbGYsIFB5X05vdEltcGxlbWVudGVkLCBzdHIpOworICAgIFB5X0RFQ1JFRihzdHIpOworICAgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbnQKIHNhdmVfcGVycyhQaWNrbGVyT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqZnVuYykKIHsKICAgICBQeU9iamVjdCAqcGlkID0gTlVMTDsKQEAgLTI4ODEsNiArMjg4OSwyOCBAQAogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY2xhc3MoUHlPYmplY3QgKm9iaikKK3sKKyAgICBQeU9iamVjdCAqY2xzOworICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX2NsYXNzOworCisgICAgaWYgKHN0cl9jbGFzcyA9PSBOVUxMKSB7CisgICAgICAgIHN0cl9jbGFzcyA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKKyAgICAgICAgaWYgKHN0cl9jbGFzcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNscyA9IFB5T2JqZWN0X0dldEF0dHIob2JqLCBzdHJfY2xhc3MpOworICAgIGlmIChjbHMgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShvYmopOworICAgICAgICAgICAgUHlfSU5DUkVGKGNscyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNsczsKK30KKwogLyogV2UncmUgc2F2aW5nIG9iaiwgYW5kIGFyZ3MgaXMgdGhlIDItdGhydS01IHR1cGxlIHJldHVybmVkIGJ5IHRoZQogICogYXBwcm9wcmlhdGUgX19yZWR1Y2VfXyBtZXRob2QgZm9yIG9iai4KICAqLwpAQCAtMjk0NiwxNyArMjk3NiwxOCBAQAogICAgIC8qIFByb3RvY29sIDIgc3BlY2lhbCBjYXNlOiBpZiBjYWxsYWJsZSdzIG5hbWUgaXMgX19uZXdvYmpfXywgdXNlCiAgICAgICAgTkVXT0JKLiAqLwogICAgIGlmICh1c2VfbmV3b2JqKSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqbmV3b2JqX3N0ciA9IE5VTEw7Ci0gICAgICAgIFB5T2JqZWN0ICpuYW1lX3N0cjsKKyAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpuZXdvYmpfc3RyID0gTlVMTCwgKm5hbWVfc3RyID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKm5hbWU7CiAKICAgICAgICAgaWYgKG5ld29ial9zdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV3b2JqX3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX25ld29ial9fIik7Ci0gICAgICAgICAgICBpZiAobmV3b2JqX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKKyAgICAgICAgICAgIGlmIChuZXdvYmpfc3RyID09IE5VTEwgfHwgbmFtZV9zdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBuYW1lX3N0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2FsbGFibGUsICJfX25hbWVfXyIpOwotICAgICAgICBpZiAobmFtZV9zdHIgPT0gTlVMTCkgeworICAgICAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0cihjYWxsYWJsZSwgbmFtZV9zdHIpOworICAgICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTI5NjQsOSArMjk5NSw5IEBACiAgICAgICAgICAgICB1c2VfbmV3b2JqID0gMDsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZV9zdHIpICYmIAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlKG5hbWVfc3RyLCBuZXdvYmpfc3RyKSA9PSAwOwotICAgICAgICAgICAgUHlfREVDUkVGKG5hbWVfc3RyKTsKKyAgICAgICAgICAgIHVzZV9uZXdvYmogPSBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZShuYW1lLCBuZXdvYmpfc3RyKSA9PSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICh1c2VfbmV3b2JqKSB7CkBAIC0yOTgyLDIwICszMDEzLDE0IEBACiAgICAgICAgIH0KIAogICAgICAgICBjbHMgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3R1cCwgMCk7Ci0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyhjbHMsICJfX25ld19fIikpIHsKKyAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2soY2xzKSkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFBpY2tsaW5nRXJyb3IsICJhcmdzWzBdIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX25ld29ial9fIGFyZ3MgaGFzIG5vIF9fbmV3X18iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uZXdvYmpfXyBhcmdzIGlzIG5vdCBhIHR5cGUiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChvYmogIT0gTlVMTCkgewotICAgICAgICAgICAgb2JqX2NsYXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2NsYXNzX18iKTsKLSAgICAgICAgICAgIGlmIChvYmpfY2xhc3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9ial9jbGFzcyA9IGdldF9jbGFzcyhvYmopOwogICAgICAgICAgICAgcCA9IG9ial9jbGFzcyAhPSBjbHM7ICAgIC8qIHRydWUgaWZmIGEgcHJvYmxlbSAqLwogICAgICAgICAgICAgUHlfREVDUkVGKG9ial9jbGFzcyk7CiAgICAgICAgICAgICBpZiAocCkgewpAQCAtMzA2OSw3ICszMDk0LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKHN0YXRlKSB7Ci0gICAgICAgIGlmIChzYXZlKHNlbGYsIHN0YXRlLCAwKSA8IDAgfHwgCisgICAgICAgIGlmIChzYXZlKHNlbGYsIHN0YXRlLCAwKSA8IDAgfHwKICAgICAgICAgICAgIF9QaWNrbGVyX1dyaXRlKHNlbGYsICZidWlsZF9vcCwgMSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMTMsNiArMzEzOCwxNCBAQAogICAgICAgICBzdGF0dXMgPSBzYXZlX25vbmUoc2VsZiwgb2JqKTsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KKyAgICBlbHNlIGlmIChvYmogPT0gUHlfRWxsaXBzaXMpIHsKKyAgICAgICAgc3RhdHVzID0gc2F2ZV9lbGxpcHNpcyhzZWxmLCBvYmopOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorICAgIGVsc2UgaWYgKG9iaiA9PSBQeV9Ob3RJbXBsZW1lbnRlZCkgeworICAgICAgICBzdGF0dXMgPSBzYXZlX25vdGltcGxlbWVudGVkKHNlbGYsIG9iaik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CiAgICAgZWxzZSBpZiAob2JqID09IFB5X0ZhbHNlIHx8IG9iaiA9PSBQeV9UcnVlKSB7CiAgICAgICAgIHN0YXR1cyA9IHNhdmVfYm9vbChzZWxmLCBvYmopOwogICAgICAgICBnb3RvIGRvbmU7CkBAIC0zMTc3LDE3ICszMjEwLDI0IEBACiAgICAgLyogWFhYOiBUaGlzIHBhcnQgbmVlZHMgc29tZSB1bml0IHRlc3RzLiAqLwogCiAgICAgLyogR2V0IGEgcmVkdWN0aW9uIGNhbGxhYmxlLCBhbmQgY2FsbCBpdC4gIFRoaXMgbWF5IGNvbWUgZnJvbQotICAgICAqIGNvcHlyZWcuZGlzcGF0Y2hfdGFibGUsIHRoZSBvYmplY3QncyBfX3JlZHVjZV9leF9fIG1ldGhvZCwKLSAgICAgKiBvciB0aGUgb2JqZWN0J3MgX19yZWR1Y2VfXyBtZXRob2QuCisgICAgICogc2VsZi5kaXNwYXRjaF90YWJsZSwgY29weXJlZy5kaXNwYXRjaF90YWJsZSwgdGhlIG9iamVjdCdzCisgICAgICogX19yZWR1Y2VfZXhfXyBtZXRob2QsIG9yIHRoZSBvYmplY3QncyBfX3JlZHVjZV9fIG1ldGhvZC4KICAgICAgKi8KLSAgICByZWR1Y2VfZnVuYyA9IFB5RGljdF9HZXRJdGVtKGRpc3BhdGNoX3RhYmxlLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICBpZiAoc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPT0gTlVMTCkgeworICAgICAgICByZWR1Y2VfZnVuYyA9IFB5RGljdF9HZXRJdGVtKGRpc3BhdGNoX3RhYmxlLCAoUHlPYmplY3QgKil0eXBlKTsKKyAgICAgICAgLyogUHlEaWN0X0dldEl0ZW0oKSB1bmxpa2UgUHlPYmplY3RfR2V0SXRlbSgpIGFuZAorICAgICAgICAgICBQeU9iamVjdF9HZXRBdHRyKCkgcmV0dXJucyBhIGJvcnJvd2VkIHJlZiAqLworICAgICAgICBQeV9YSU5DUkVGKHJlZHVjZV9mdW5jKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZWR1Y2VfZnVuYyA9IFB5T2JqZWN0X0dldEl0ZW0oc2VsZi0+ZGlzcGF0Y2hfdGFibGUsIChQeU9iamVjdCAqKXR5cGUpOworICAgICAgICBpZiAocmVkdWNlX2Z1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAocmVkdWNlX2Z1bmMgIT0gTlVMTCkgewotICAgICAgICAvKiBIZXJlLCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSByZWR1Y2VfZnVuYyBvYmplY3QgcmV0dXJuZWQgYnkKLSAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0gbmVlZHMgdG8gYmUgaW5jcmVhc2VkIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgb25lCi0gICAgICAgICAgIHJldHVybmVkIGJ5IFB5T2JqZWN0X0dldEF0dHIuIFRoaXMgaXMgYWxsb3cgdXMgdG8gYmxpbmRseSBERUNSRUYKLSAgICAgICAgICAgcmVkdWNlX2Z1bmMgYXQgdGhlIGVuZCBvZiB0aGUgc2F2ZSgpIHJvdXRpbmUuCi0gICAgICAgICovCi0gICAgICAgIFB5X0lOQ1JFRihyZWR1Y2VfZnVuYyk7CiAgICAgICAgIFB5X0lOQ1JFRihvYmopOwogICAgICAgICByZWR1Y2VfdmFsdWUgPSBfUGlja2xlcl9GYXN0Q2FsbChzZWxmLCByZWR1Y2VfZnVuYywgb2JqKTsKICAgICB9CkBAIC0zMzIzLDcgKzMzNjMsNyBAQAogICAgICAgIERldmVsb3BlcnMgb2Z0ZW4gZm9yZ2V0IHRvIGNhbGwgX19pbml0X18oKSBpbiB0aGVpciBzdWJjbGFzc2VzLCB3aGljaAogICAgICAgIHdvdWxkIHRyaWdnZXIgYSBzZWdmYXVsdCB3aXRob3V0IHRoaXMgY2hlY2suICovCiAgICAgaWYgKHNlbGYtPndyaXRlID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9Gb3JtYXQoUGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJQaWNrbGVyLl9faW5pdF9fKCkgd2FzIG5vdCBjYWxsZWQgYnkgJXMuX19pbml0X18oKSIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzYwLDYgKzM0MDAsNyBAQAogICAgIFB5X1hERUNSRUYoc2VsZi0+b3V0cHV0X2J1ZmZlcik7CiAgICAgUHlfWERFQ1JFRihzZWxmLT53cml0ZSk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5wZXJzX2Z1bmMpOworICAgIFB5X1hERUNSRUYoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+YXJnKTsKICAgICBQeV9YREVDUkVGKHNlbGYtPmZhc3RfbWVtbyk7CiAKQEAgLTMzNzMsNiArMzQxNCw3IEBACiB7CiAgICAgUHlfVklTSVQoc2VsZi0+d3JpdGUpOwogICAgIFB5X1ZJU0lUKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfVklTSVQoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X1ZJU0lUKHNlbGYtPmFyZyk7CiAgICAgUHlfVklTSVQoc2VsZi0+ZmFzdF9tZW1vKTsKICAgICByZXR1cm4gMDsKQEAgLTMzODQsNiArMzQyNiw3IEBACiAgICAgUHlfQ0xFQVIoc2VsZi0+b3V0cHV0X2J1ZmZlcik7CiAgICAgUHlfQ0xFQVIoc2VsZi0+d3JpdGUpOwogICAgIFB5X0NMRUFSKHNlbGYtPnBlcnNfZnVuYyk7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGlzcGF0Y2hfdGFibGUpOwogICAgIFB5X0NMRUFSKHNlbGYtPmFyZyk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+ZmFzdF9tZW1vKTsKIApAQCAtMzQyNyw2ICszNDcwLDggQEAKICAgICBQeU9iamVjdCAqZmlsZTsKICAgICBQeU9iamVjdCAqcHJvdG9fb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZml4X2ltcG9ydHMgPSBQeV9UcnVlOworICAgIF9QeV9JREVOVElGSUVSKHBlcnNpc3RlbnRfaWQpOworICAgIF9QeV9JREVOVElGSUVSKGRpc3BhdGNoX3RhYmxlKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJPfE9POlBpY2tsZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmZpbGUsICZwcm90b19vYmosICZmaXhfaW1wb3J0cykpCkBAIC0zNDYyLDEyICszNTA3LDE5IEBACiAgICAgc2VsZi0+ZmFzdF9uZXN0aW5nID0gMDsKICAgICBzZWxmLT5mYXN0X21lbW8gPSBOVUxMOwogICAgIHNlbGYtPnBlcnNfZnVuYyA9IE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgInBlcnNpc3RlbnRfaWQiKSkgewotICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnRfaWQiKTsKKyAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9wZXJzaXN0ZW50X2lkKSkgeworICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfcGVyc2lzdGVudF9pZCk7CiAgICAgICAgIGlmIChzZWxmLT5wZXJzX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgc2VsZi0+ZGlzcGF0Y2hfdGFibGUgPSBOVUxMOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX2Rpc3BhdGNoX3RhYmxlKSkgeworICAgICAgICBzZWxmLT5kaXNwYXRjaF90YWJsZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX2Rpc3BhdGNoX3RhYmxlKTsKKyAgICAgICAgaWYgKHNlbGYtPmRpc3BhdGNoX3RhYmxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogICAgIHJldHVybiAwOwogfQogCkBAIC0zNzQ5LDYgKzM4MDEsNyBAQAogc3RhdGljIFB5TWVtYmVyRGVmIFBpY2tsZXJfbWVtYmVyc1tdID0gewogICAgIHsiYmluIiwgVF9JTlQsIG9mZnNldG9mKFBpY2tsZXJPYmplY3QsIGJpbil9LAogICAgIHsiZmFzdCIsIFRfSU5ULCBvZmZzZXRvZihQaWNrbGVyT2JqZWN0LCBmYXN0KX0sCisgICAgeyJkaXNwYXRjaF90YWJsZSIsIFRfT0JKRUNUX0VYLCBvZmZzZXRvZihQaWNrbGVyT2JqZWN0LCBkaXNwYXRjaF90YWJsZSl9LAogICAgIHtOVUxMfQogfTsKIApAQCAtMzgwMyw3ICszODU2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KIH07CiAKLS8qIFRlbXBvcmFyeSBoZWxwZXIgZm9yIGNhbGxpbmcgc2VsZi5maW5kX2NsYXNzKCkuIAorLyogVGVtcG9yYXJ5IGhlbHBlciBmb3IgY2FsbGluZyBzZWxmLmZpbmRfY2xhc3MoKS4KIAogICAgWFhYOiBJdCB3b3VsZCBiZSBuaWNlIHRvIGFibGUgdG8gYXZvaWQgUHl0aG9uIGZ1bmN0aW9uIGNhbGwgb3ZlcmhlYWQsIGJ5CiAgICB1c2luZyBkaXJlY3RseSB0aGUgQyB2ZXJzaW9uIG9mIGZpbmRfY2xhc3MoKSwgd2hlbiBmaW5kX2NsYXNzKCkgaXMgbm90CkBAIC0zODEzLDggKzM4NjYsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaW5kX2NsYXNzKFVucGlja2xlck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm1vZHVsZV9uYW1lLCBQeU9iamVjdCAqZ2xvYmFsX25hbWUpCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopc2VsZiwgImZpbmRfY2xhc3MiLCAiT08iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CisgICAgX1B5X0lERU5USUZJRVIoZmluZF9jbGFzcyk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgoUHlPYmplY3QgKilzZWxmLCAmUHlJZF9maW5kX2NsYXNzLCAiT08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBnbG9iYWxfbmFtZSk7CiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC0zODU2LDcgKzM5MTEsNyBAQAogICAgICAgICByZXR1cm4gYmFkX3JlYWRsaW5lKCk7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgLyogWFhYOiBTaG91bGQgdGhlIGJhc2UgYXJndW1lbnQgb2Ygc3RydG9sKCkgYmUgZXhwbGljaXRseSBzZXQgdG8gMTA/IAorICAgIC8qIFhYWDogU2hvdWxkIHRoZSBiYXNlIGFyZ3VtZW50IG9mIHN0cnRvbCgpIGJlIGV4cGxpY2l0bHkgc2V0IHRvIDEwPwogICAgICAgIFhYWChhdmFzc2Fsb3R0aSk6IFNob3VsZCB0aGlzIHVzZXMgUHlPU19zdHJ0b2woKT8gKi8KICAgICB4ID0gc3RydG9sKHMsICZlbmRwdHIsIDApOwogCkBAIC00MjIxLDcgKzQyNzYsNyBAQAogCiAgICAgeCA9IGNhbGNfYmluaW50KHMsIDQpOwogICAgIGlmICh4IDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFVucGlja2xpbmdFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJCSU5TVFJJTkcgcGlja2xlIGhhcyBuZWdhdGl2ZSBieXRlIGNvdW50Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NDE4LDE2ICs0NDczLDE5IEBACiBpbnN0YW50aWF0ZShQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2dldGluaXRhcmdzX18pOwogICAgIC8qIENhbGxlciBtdXN0IGFzc3VyZSBhcmdzIGFyZSBhIHR1cGxlLiAgTm9ybWFsbHksIGFyZ3MgY29tZSBmcm9tCiAgICAgICAgUGRhdGFfcG9wdHVwbGUgd2hpY2ggcGFja3Mgb2JqZWN0cyBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrCiAgICAgICAgaW50byBhIG5ld2x5IGNyZWF0ZWQgdHVwbGUuICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwogICAgIGlmIChQeV9TSVpFKGFyZ3MpID4gMCB8fCAhUHlUeXBlX0NoZWNrKGNscykgfHwKLSAgICAgICAgUHlPYmplY3RfSGFzQXR0clN0cmluZyhjbHMsICJfX2dldGluaXRhcmdzX18iKSkgeworICAgICAgICBfUHlPYmplY3RfSGFzQXR0cklkKGNscywgJlB5SWRfX19nZXRpbml0YXJnc19fKSkgewogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGNscywgYXJncyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNscywgIl9fbmV3X18iLCAiTyIsIGNscyk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3X18pOworCisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoY2xzLCAmUHlJZF9fX25ld19fLCAiTyIsIGNscyk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC00OTY4LDggKzUwMjYsOSBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKmFwcGVuZF9mdW5jOworICAgICAgICBfUHlfSURFTlRJRklFUihhcHBlbmQpOwogCi0gICAgICAgIGFwcGVuZF9mdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhsaXN0LCAiYXBwZW5kIik7CisgICAgICAgIGFwcGVuZF9mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChsaXN0LCAmUHlJZF9hcHBlbmQpOwogICAgICAgICBpZiAoYXBwZW5kX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgZm9yIChpID0geDsgaSA8IGxlbjsgaSsrKSB7CkBAIC01MDE1LDcgKzUwNzQsNyBAQAogICAgICAgICByZXR1cm4gc3RhY2tfdW5kZXJmbG93KCk7CiAgICAgaWYgKGxlbiA9PSB4KSAgLyogbm90aGluZyB0byBkbyAqLwogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoKGxlbiAtIHgpICUgMiAhPSAwKSB7IAorICAgIGlmICgobGVuIC0geCkgJSAyICE9IDApIHsKICAgICAgICAgLyogQ3VycnVwdCBvciBob3N0aWxlIHBpY2tsZSAtLSB3ZSBuZXZlciB3cml0ZSBvbmUgbGlrZSB0aGlzLiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAib2RkIG51bWJlciBvZiBpdGVtcyBmb3IgU0VUSVRFTVMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTA1Niw2ICs1MTE1LDcgQEAKICAgICBQeU9iamVjdCAqc3RhdGUsICppbnN0LCAqc2xvdHN0YXRlOwogICAgIFB5T2JqZWN0ICpzZXRzdGF0ZTsKICAgICBpbnQgc3RhdHVzID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldHN0YXRlX18pOwogCiAgICAgLyogU3RhY2sgaXMgLi4uIGluc3RhbmNlLCBzdGF0ZS4gIFdlIHdhbnQgdG8gbGVhdmUgaW5zdGFuY2UgYXQKICAgICAgKiB0aGUgc3RhY2sgdG9wLCBwb3NzaWJseSBtdXRhdGVkIHZpYSBpbnN0YW5jZS5fX3NldHN0YXRlX18oc3RhdGUpLgpAQCAtNTA2OSw3ICs1MTI5LDcgQEAKIAogICAgIGluc3QgPSBzZWxmLT5zdGFjay0+ZGF0YVtQeV9TSVpFKHNlbGYtPnN0YWNrKSAtIDFdOwogCi0gICAgc2V0c3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGluc3QsICJfX3NldHN0YXRlX18iKTsKKyAgICBzZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19zZXRzdGF0ZV9fKTsKICAgICBpZiAoc2V0c3RhdGUgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNTExMiwxMiArNTE3MiwxMyBAQAogICAgICAgICBQeU9iamVjdCAqZGljdDsKICAgICAgICAgUHlPYmplY3QgKmRfa2V5LCAqZF92YWx1ZTsKICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CiAKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2soc3RhdGUpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoVW5waWNrbGluZ0Vycm9yLCAic3RhdGUgaXMgbm90IGEgZGljdGlvbmFyeSIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnN0LCAiX19kaWN0X18iKTsKKyAgICAgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19kaWN0X18pOwogICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtNTM3Miw3ICs1NDMzLDcgQEAKICAgICAgICBub3QgY2FsbCBVbnBpY2tsZXIuX19pbml0X18oKS4gSGVyZSwgd2Ugc2ltcGx5IGVuc3VyZSB0aGF0IHNlbGYtPnJlYWQKICAgICAgICBpcyBub3QgTlVMTC4gKi8KICAgICBpZiAoc2VsZi0+cmVhZCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChVbnBpY2tsaW5nRXJyb3IsIAorICAgICAgICBQeUVycl9Gb3JtYXQoVW5waWNrbGluZ0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgIlVucGlja2xlci5fX2luaXRfXygpIHdhcyBub3QgY2FsbGVkIGJ5ICVzLl9faW5pdF9fKCkiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTQ3NCw3ICs1NTM1LDcgQEAKICAgICAgICAgZ2xvYmFsID0gUHlPYmplY3RfR2V0QXR0cihtb2R1bGUsIGdsb2JhbF9uYW1lKTsKICAgICAgICAgUHlfREVDUkVGKG1vZHVsZSk7CiAgICAgfQotICAgIGVsc2UgeyAKKyAgICBlbHNlIHsKICAgICAgICAgZ2xvYmFsID0gUHlPYmplY3RfR2V0QXR0cihtb2R1bGUsIGdsb2JhbF9uYW1lKTsKICAgICB9CiAgICAgcmV0dXJuIGdsb2JhbDsKQEAgLTU1ODIsNiArNTY0Myw3IEBACiAgICAgUHlPYmplY3QgKmZpeF9pbXBvcnRzID0gUHlfVHJ1ZTsKICAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY2hhciAqZXJyb3JzID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihwZXJzaXN0ZW50X2xvYWQpOwogCiAgICAgLyogWFhYOiBUaGF0IGlzIGFuIGhvcnJpYmxlIGVycm9yIG1lc3NhZ2UuIEJ1dCwgSSBkb24ndCBrbm93IGhvdyB0byBkbwogICAgICAgIGJldHRlci4uLiAqLwpAQCAtNTYxNiw5ICs1Njc4LDkgQEAKICAgICBpZiAoc2VsZi0+Zml4X2ltcG9ydHMgPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsICJwZXJzaXN0ZW50X2xvYWQiKSkgewotICAgICAgICBzZWxmLT5wZXJzX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBlcnNpc3RlbnRfbG9hZCIpOworICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKChQeU9iamVjdCAqKXNlbGYsICZQeUlkX3BlcnNpc3RlbnRfbG9hZCkpIHsKKyAgICAgICAgc2VsZi0+cGVyc19mdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QgKilzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX3BlcnNpc3RlbnRfbG9hZCk7CiAgICAgICAgIGlmIChzZWxmLT5wZXJzX2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC01NjUxLDcgKzU3MTMsNyBAQAogICogaW50ZW50aW9uYWwsIGFzIHRoZXNlIHNob3VsZCBiZSB0cmVhdGVkIGFzIGJsYWNrLWJveCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLgogICoKICAqIFdlIGRvLCBob3dldmVyLCBoYXZlIHRvIGltcGxlbWVudCBwaWNrbGluZy91bnBpY2tsaW5nIHN1cHBvcnQgYmVjYXVzZSBvZgotICogcmVhbC13b3JsZCBjb2RlIGxpa2UgY3ZzMnN2bi4gCisgKiByZWFsLXdvcmxkIGNvZGUgbGlrZSBjdnMyc3ZuLgogICovCiAKIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Bvc2l4c3VicHJvY2Vzcy5jIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKaW5kZXggMTljYTMxZi4uYjdiMTIwYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKKysrIGIvTW9kdWxlcy9fcG9zaXhzdWJwcm9jZXNzLmMKQEAgLTQ3LDcgKzQ3LDkgQEAKIF9lbmFibGVfZ2MoUHlPYmplY3QgKmdjX21vZHVsZSkKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZ2NfbW9kdWxlLCAiZW5hYmxlIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoZW5hYmxlKTsKKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9lbmFibGUsIE5VTEwpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC03OCw3ICs4MCw3IEBACiAgKiB0aGF0IHByb3Blcmx5IHN1cHBvcnRzIC9kZXYvZmQuCiAgKi8KIHN0YXRpYyBpbnQKLV9pc19mZGVzY2ZzX21vdW50ZWRfb25fZGV2X2ZkKCkKK19pc19mZGVzY2ZzX21vdW50ZWRfb25fZGV2X2ZkKHZvaWQpCiB7CiAgICAgc3RydWN0IHN0YXQgZGV2X3N0YXQ7CiAgICAgc3RydWN0IHN0YXQgZGV2X2ZkX3N0YXQ7CkBAIC01MDYsNyArNTA4LDcgQEAKIHN1YnByb2Nlc3NfZm9ya19leGVjKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqZ2NfbW9kdWxlID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZXhlY3V0YWJsZV9saXN0LCAqcHlfY2xvc2VfZmRzLCAqcHlfZmRzX3RvX2tlZXA7CisgICAgUHlPYmplY3QgKmV4ZWN1dGFibGVfbGlzdCwgKnB5X2Zkc190b19rZWVwOwogICAgIFB5T2JqZWN0ICplbnZfbGlzdCwgKnByZWV4ZWNfZm47CiAgICAgUHlPYmplY3QgKnByb2Nlc3NfYXJncywgKmNvbnZlcnRlZF9hcmdzID0gTlVMTCwgKmZhc3RfYXJncyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnByZWV4ZWNfZm5fYXJnc190dXBsZSA9IE5VTEw7CkBAIC01MjEsMTcgKzUyMywxNCBAQAogICAgIFB5X3NzaXplX3QgYXJnX251bTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSgKLSAgICAgICAgICAgIGFyZ3MsICJPT09PT09paWlpaWlpaWlpTzpmb3JrX2V4ZWMiLAotICAgICAgICAgICAgJnByb2Nlc3NfYXJncywgJmV4ZWN1dGFibGVfbGlzdCwgJnB5X2Nsb3NlX2ZkcywgJnB5X2Zkc190b19rZWVwLAorICAgICAgICAgICAgYXJncywgIk9PcE9PT2lpaWlpaWlpaWlPOmZvcmtfZXhlYyIsCisgICAgICAgICAgICAmcHJvY2Vzc19hcmdzLCAmZXhlY3V0YWJsZV9saXN0LCAmY2xvc2VfZmRzLCAmcHlfZmRzX3RvX2tlZXAsCiAgICAgICAgICAgICAmY3dkX29iaiwgJmVudl9saXN0LAogICAgICAgICAgICAgJnAyY3JlYWQsICZwMmN3cml0ZSwgJmMycHJlYWQsICZjMnB3cml0ZSwKICAgICAgICAgICAgICZlcnJyZWFkLCAmZXJyd3JpdGUsICZlcnJwaXBlX3JlYWQsICZlcnJwaXBlX3dyaXRlLAogICAgICAgICAgICAgJnJlc3RvcmVfc2lnbmFscywgJmNhbGxfc2V0c2lkLCAmcHJlZXhlY19mbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgY2xvc2VfZmRzID0gUHlPYmplY3RfSXNUcnVlKHB5X2Nsb3NlX2Zkcyk7Ci0gICAgaWYgKGNsb3NlX2ZkcyA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChjbG9zZV9mZHMgJiYgZXJycGlwZV93cml0ZSA8IDMpIHsgIC8qIHByZWNvbmRpdGlvbiAqLwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImVycnBpcGVfd3JpdGUgbXVzdCBiZSA+PSAzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTQ4LDEwICs1NDcsMTMgQEAKICAgICAvKiBXZSBuZWVkIHRvIGNhbGwgZ2MuZGlzYWJsZSgpIHdoZW4gd2UnbGwgYmUgY2FsbGluZyBwcmVleGVjX2ZuICovCiAgICAgaWYgKHByZWV4ZWNfZm4gIT0gUHlfTm9uZSkgewogICAgICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgICAgICBfUHlfSURFTlRJRklFUihpc2VuYWJsZWQpOworICAgICAgICBfUHlfSURFTlRJRklFUihkaXNhYmxlKTsKKyAgICAgICAgCiAgICAgICAgIGdjX21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZ2MiKTsKICAgICAgICAgaWYgKGdjX21vZHVsZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZ2NfbW9kdWxlLCAiaXNlbmFibGVkIiwgTlVMTCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9pc2VuYWJsZWQsIE5VTEwpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NjIsNyArNTY0LDcgQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihnY19tb2R1bGUpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChnY19tb2R1bGUsICJkaXNhYmxlIiwgTlVMTCk7CisgICAgICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZ2NfbW9kdWxlLCAmUHlJZF9kaXNhYmxlLCBOVUxMKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZ2NfbW9kdWxlKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fcmFuZG9tbW9kdWxlLmMgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwppbmRleCBiYzliMDRhLi42NTQwYWI5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYworKysgYi9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYwpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgUHlPYmplY3QgKm1hc2tsb3dlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnRoaXJ0eXR3byA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm4gPSBOVUxMOwotICAgIHVuc2lnbmVkIGxvbmcgKmtleSA9IE5VTEw7CisgICAgdW5zaWduZWQgbG9uZyAqbmV3X2tleSwgKmtleSA9IE5VTEw7CiAgICAgdW5zaWduZWQgbG9uZyBrZXltYXg7ICAgICAgICAgICAgICAgLyogIyBvZiBhbGxvY2F0ZWQgc2xvdHMgaW4ga2V5ICovCiAgICAgdW5zaWduZWQgbG9uZyBrZXl1c2VkOyAgICAgICAgICAgICAgLyogIyBvZiB1c2VkIHNsb3RzIGluIGtleSAqLwogICAgIGludCBlcnI7CkBAIC0yMjgsMTYgKzIyOCwxNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICAvKiBJZiB0aGUgYXJnIGlzIGFuIGludCBvciBsb25nLCB1c2UgaXRzIGFic29sdXRlIHZhbHVlOyBlbHNlIHVzZQotICAgICAqIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBpdHMgaGFzaCBjb2RlLgorICAgIC8qIFRoaXMgYWxnb3JpdGhtIHJlbGllcyBvbiB0aGUgbnVtYmVyIGJlaW5nIHVuc2lnbmVkLgorICAgICAqIFNvOiBpZiB0aGUgYXJnIGlzIGEgUHlMb25nLCB1c2UgaXRzIGFic29sdXRlIHZhbHVlLgorICAgICAqIE90aGVyd2lzZSB1c2UgaXRzIGhhc2ggdmFsdWUsIGNhc3QgdG8gdW5zaWduZWQuCiAgICAgICovCiAgICAgaWYgKFB5TG9uZ19DaGVjayhhcmcpKQogICAgICAgICBuID0gUHlOdW1iZXJfQWJzb2x1dGUoYXJnKTsKICAgICBlbHNlIHsKLSAgICAgICAgbG9uZyBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOworICAgICAgICBQeV9oYXNoX3QgaGFzaCA9IFB5T2JqZWN0X0hhc2goYXJnKTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICBnb3RvIERvbmU7Ci0gICAgICAgIG4gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgbG9uZyloYXNoKTsKKyAgICAgICAgbiA9IFB5TG9uZ19Gcm9tU2l6ZV90KChzaXplX3QpaGFzaCk7CiAgICAgfQogICAgIGlmIChuID09IE5VTEwpCiAgICAgICAgIGdvdG8gRG9uZTsKQEAgLTI4MywxNCArMjg0LDE2IEBACiAgICAgICAgIG4gPSBuZXduOwogICAgICAgICBpZiAoa2V5dXNlZCA+PSBrZXltYXgpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgYmlnZ2VyID0ga2V5bWF4IDw8IDE7Ci0gICAgICAgICAgICBpZiAoKGJpZ2dlciA+PiAxKSAhPSBrZXltYXgpIHsKKyAgICAgICAgICAgIGlmICgoYmlnZ2VyID4+IDEpICE9IGtleW1heCB8fAorICAgICAgICAgICAgICAgIGJpZ2dlciA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKCprZXkpKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBrZXkgPSAodW5zaWduZWQgbG9uZyAqKVB5TWVtX1JlYWxsb2Moa2V5LAorICAgICAgICAgICAgbmV3X2tleSA9ICh1bnNpZ25lZCBsb25nICopUHlNZW1fUmVhbGxvYyhrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWdnZXIgKiBzaXplb2YoKmtleSkpOwotICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKG5ld19rZXkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIERvbmU7CisgICAgICAgICAgICBrZXkgPSBuZXdfa2V5OwogICAgICAgICAgICAga2V5bWF4ID0gYmlnZ2VyOwogICAgICAgICB9CiAgICAgICAgIGFzc2VydChrZXl1c2VkIDwga2V5bWF4KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9jYWNoZS5jIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKaW5kZXggNzM1YTI0Mi4uMzY5MzM2MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL2NhY2hlLmMKQEAgLTIxNyw4ICsyMTcsNiBAQAogICAgIHB5c3FsaXRlX05vZGUqIHB0cjsKICAgICBQeU9iamVjdCogcHJldmtleTsKICAgICBQeU9iamVjdCogbmV4dGtleTsKLSAgICBQeU9iamVjdCogZm10X2FyZ3M7Ci0gICAgUHlPYmplY3QqIHRlbXBsYXRlOwogICAgIFB5T2JqZWN0KiBkaXNwbGF5X3N0cjsKIAogICAgIHB0ciA9IHNlbGYtPmZpcnN0OwpAQCAtMjI5LDM2ICsyMjcsMjEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHByZXZrZXkgPSBQeV9Ob25lOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihwcmV2a2V5KTsKIAogICAgICAgICBpZiAocHRyLT5uZXh0KSB7CiAgICAgICAgICAgICBuZXh0a2V5ID0gcHRyLT5uZXh0LT5rZXk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBuZXh0a2V5ID0gUHlfTm9uZTsKICAgICAgICAgfQotICAgICAgICBQeV9JTkNSRUYobmV4dGtleSk7CiAKLSAgICAgICAgZm10X2FyZ3MgPSBQeV9CdWlsZFZhbHVlKCJPT08iLCBwcmV2a2V5LCBwdHItPmtleSwgbmV4dGtleSk7Ci0gICAgICAgIGlmICghZm10X2FyZ3MpIHsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHRlbXBsYXRlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiVzIDwtICVzIC0+JXNcbiIpOwotICAgICAgICBpZiAoIXRlbXBsYXRlKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZm10X2FyZ3MpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgZGlzcGxheV9zdHIgPSBQeVVuaWNvZGVfRm9ybWF0KHRlbXBsYXRlLCBmbXRfYXJncyk7Ci0gICAgICAgIFB5X0RFQ1JFRih0ZW1wbGF0ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihmbXRfYXJncyk7CisgICAgICAgIGRpc3BsYXlfc3RyID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTIDwtICVTIC0+ICVTXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZrZXksIHB0ci0+a2V5LCBuZXh0a2V5KTsKICAgICAgICAgaWYgKCFkaXNwbGF5X3N0cikgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgUHlPYmplY3RfUHJpbnQoZGlzcGxheV9zdHIsIHN0ZG91dCwgUHlfUFJJTlRfUkFXKTsKICAgICAgICAgUHlfREVDUkVGKGRpc3BsYXlfc3RyKTsKIAotICAgICAgICBQeV9ERUNSRUYocHJldmtleSk7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXh0a2V5KTsKLQogICAgICAgICBwdHIgPSBwdHItPm5leHQ7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYwppbmRleCA5ZDRjNzJmLi5iYzRjZTUwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKQEAgLTY3MSw3ICs2NzEsNyBAQAogewogICAgIFB5T2JqZWN0KiBmdW5jdGlvbl9yZXN1bHQgPSBOVUxMOwogICAgIFB5T2JqZWN0KiogYWdncmVnYXRlX2luc3RhbmNlOwotICAgIFB5T2JqZWN0KiBhZ2dyZWdhdGVfY2xhc3M7CisgICAgX1B5X0lERU5USUZJRVIoZmluYWxpemUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICBQeUdJTFN0YXRlX1NUQVRFIHRocmVhZHN0YXRlOwpAQCAtNjc5LDggKzY3OSw2IEBACiAgICAgdGhyZWFkc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSgpOwogI2VuZGlmCiAKLSAgICBhZ2dyZWdhdGVfY2xhc3MgPSAoUHlPYmplY3QqKXNxbGl0ZTNfdXNlcl9kYXRhKGNvbnRleHQpOwotCiAgICAgYWdncmVnYXRlX2luc3RhbmNlID0gKFB5T2JqZWN0Kiopc3FsaXRlM19hZ2dyZWdhdGVfY29udGV4dChjb250ZXh0LCBzaXplb2YoUHlPYmplY3QqKSk7CiAgICAgaWYgKCEqYWdncmVnYXRlX2luc3RhbmNlKSB7CiAgICAgICAgIC8qIHRoaXMgYnJhbmNoIGlzIGV4ZWN1dGVkIGlmIHRoZXJlIHdhcyBhbiBleGNlcHRpb24gaW4gdGhlIGFnZ3JlZ2F0ZSdzCkBAIC02ODksNyArNjg3LDcgQEAKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBmdW5jdGlvbl9yZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKCphZ2dyZWdhdGVfaW5zdGFuY2UsICJmaW5hbGl6ZSIsICIiKTsKKyAgICBmdW5jdGlvbl9yZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKCphZ2dyZWdhdGVfaW5zdGFuY2UsICZQeUlkX2ZpbmFsaXplLCAiIik7CiAgICAgaWYgKCFmdW5jdGlvbl9yZXN1bHQpIHsKICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewogICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKQEAgLTkwNSw2ICs5MDMsMzggQEAKICAgICByZXR1cm4gcmM7CiB9CiAKK3N0YXRpYyB2b2lkIF90cmFjZV9jYWxsYmFjayh2b2lkKiB1c2VyX2FyZywgY29uc3QgY2hhciogc3RhdGVtZW50X3N0cmluZykKK3sKKyAgICBQeU9iamVjdCAqcHlfc3RhdGVtZW50ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgUHlHSUxTdGF0ZV9TVEFURSBnaWxzdGF0ZTsKKworICAgIGdpbHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUoKTsKKyNlbmRpZgorICAgIHB5X3N0YXRlbWVudCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHN0YXRlbWVudF9zdHJpbmcsCisgICAgICAgICAgICBzdHJsZW4oc3RhdGVtZW50X3N0cmluZyksICJyZXBsYWNlIik7CisgICAgaWYgKHB5X3N0YXRlbWVudCkgeworICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKChQeU9iamVjdCopdXNlcl9hcmcsIHB5X3N0YXRlbWVudCwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihweV9zdGF0ZW1lbnQpOworICAgIH0KKworICAgIGlmIChyZXQpIHsKKyAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgeworICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIFB5R0lMU3RhdGVfUmVsZWFzZShnaWxzdGF0ZSk7CisjZW5kaWYKK30KKwogc3RhdGljIFB5T2JqZWN0KiBweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9hdXRob3JpemVyKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewogICAgIFB5T2JqZWN0KiBhdXRob3JpemVyX2NiOwpAQCAtOTY0LDYgKzk5NCwzNCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCitzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2Nvbm5lY3Rpb25fc2V0X3RyYWNlX2NhbGxiYWNrKHB5c3FsaXRlX0Nvbm5lY3Rpb24qIHNlbGYsIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3dhcmdzKQoreworICAgIFB5T2JqZWN0KiB0cmFjZV9jYWxsYmFjazsKKworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsgInRyYWNlX2NhbGxiYWNrIiwgTlVMTCB9OworCisgICAgaWYgKCFweXNxbGl0ZV9jaGVja190aHJlYWQoc2VsZikgfHwgIXB5c3FsaXRlX2NoZWNrX2Nvbm5lY3Rpb24oc2VsZikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzZXRfdHJhY2VfY2FsbGJhY2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ0cmFjZV9jYWxsYmFjaykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHRyYWNlX2NhbGxiYWNrID09IFB5X05vbmUpIHsKKyAgICAgICAgLyogTm9uZSBjbGVhcnMgdGhlIHRyYWNlIGNhbGxiYWNrIHByZXZpb3VzbHkgc2V0ICovCisgICAgICAgIHNxbGl0ZTNfdHJhY2Uoc2VsZi0+ZGIsIDAsICh2b2lkKikwKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oc2VsZi0+ZnVuY3Rpb25fcGluYm9hcmQsIHRyYWNlX2NhbGxiYWNrLCBQeV9Ob25lKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBzcWxpdGUzX3RyYWNlKHNlbGYtPmRiLCBfdHJhY2VfY2FsbGJhY2ssIHRyYWNlX2NhbGxiYWNrKTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuIFB5X05vbmU7Cit9CisKICNpZmRlZiBIQVZFX0xPQURfRVhURU5TSU9OCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX2VuYWJsZV9sb2FkX2V4dGVuc2lvbihweXNxbGl0ZV9Db25uZWN0aW9uKiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKQEAgLTExNjksOCArMTIyNyw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTExOTgsOCArMTI1Nyw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEyMjcsOCArMTI4Nyw5IEBACiAgICAgUHlPYmplY3QqIGN1cnNvciA9IDA7CiAgICAgUHlPYmplY3QqIHJlc3VsdCA9IDA7CiAgICAgUHlPYmplY3QqIG1ldGhvZCA9IDA7CisgICAgX1B5X0lERU5USUZJRVIoY3Vyc29yKTsKIAotICAgIGN1cnNvciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0KilzZWxmLCAiY3Vyc29yIiwgIiIpOworICAgIGN1cnNvciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoKFB5T2JqZWN0KilzZWxmLCAmUHlJZF9jdXJzb3IsICIiKTsKICAgICBpZiAoIWN1cnNvcikgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTEzNzUsMTAgKzE0MzYsMTIgQEAKICAgICBQeU9iamVjdCogdXBwZXJjYXNlX25hbWUgPSAwOwogICAgIFB5T2JqZWN0KiBuYW1lOwogICAgIFB5T2JqZWN0KiByZXR2YWw7Ci0gICAgUHlfVU5JQ09ERSogY2hrOwogICAgIFB5X3NzaXplX3QgaSwgbGVuOworICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKICAgICBjaGFyICp1cHBlcmNhc2VfbmFtZV9zdHI7CiAgICAgaW50IHJjOworICAgIHVuc2lnbmVkIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX3RocmVhZChzZWxmKSB8fCAhcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmKSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC0xMzg4LDE3ICsxNDUxLDIxIEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICB1cHBlcmNhc2VfbmFtZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QobmFtZSwgInVwcGVyIiwgIiIpOworICAgIHVwcGVyY2FzZV9uYW1lID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChuYW1lLCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghdXBwZXJjYXNlX25hbWUpIHsKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIH0KIAotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh1cHBlcmNhc2VfbmFtZSk7Ci0gICAgY2hrID0gUHlVbmljb2RlX0FTX1VOSUNPREUodXBwZXJjYXNlX25hbWUpOwotICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrLCBjaGsrKykgewotICAgICAgICBpZiAoKCpjaGsgPj0gJzAnICYmICpjaGsgPD0gJzknKQotICAgICAgICAgfHwgKCpjaGsgPj0gJ0EnICYmICpjaGsgPD0gJ1onKQotICAgICAgICAgfHwgKCpjaGsgPT0gJ18nKSkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVwcGVyY2FzZV9uYW1lKSkKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVwcGVyY2FzZV9uYW1lKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodXBwZXJjYXNlX25hbWUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1cHBlcmNhc2VfbmFtZSk7CisgICAgZm9yIChpPTA7IGk8bGVuOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoKGNoID49ICcwJyAmJiBjaCA8PSAnOScpCisgICAgICAgICB8fCAoY2ggPj0gJ0EnICYmIGNoIDw9ICdaJykKKyAgICAgICAgIHx8IChjaCA9PSAnXycpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTE1MTcsNiArMTU4NCw4IEBACiAgICAgI2VuZGlmCiAgICAgeyJzZXRfcHJvZ3Jlc3NfaGFuZGxlciIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX3NldF9wcm9ncmVzc19oYW5kbGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgICAgUHlEb2NfU1RSKCJTZXRzIHByb2dyZXNzIGhhbmRsZXIgY2FsbGJhY2suIE5vbi1zdGFuZGFyZC4iKX0sCisgICAgeyJzZXRfdHJhY2VfY2FsbGJhY2siLCAoUHlDRnVuY3Rpb24pcHlzcWxpdGVfY29ubmVjdGlvbl9zZXRfdHJhY2VfY2FsbGJhY2ssIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICAgICBQeURvY19TVFIoIlNldHMgYSB0cmFjZSBjYWxsYmFjayBjYWxsZWQgZm9yIGVhY2ggU1FMIHN0YXRlbWVudCAocGFzc2VkIGFzIHVuaWNvZGUpLiBOb24tc3RhbmRhcmQuIil9LAogICAgIHsiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX2V4ZWN1dGUsIE1FVEhfVkFSQVJHUywKICAgICAgICAgUHlEb2NfU1RSKCJFeGVjdXRlcyBhIFNRTCBzdGF0ZW1lbnQuIE5vbi1zdGFuZGFyZC4iKX0sCiAgICAgeyJleGVjdXRlbWFueSIsIChQeUNGdW5jdGlvbilweXNxbGl0ZV9jb25uZWN0aW9uX2V4ZWN1dGVtYW55LCBNRVRIX1ZBUkFSR1MsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oIGIvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uaAppbmRleCBjOGUyZjdjLi4wYzk3MzRjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmgKQEAgLTgzLDggKzgzLDcgQEAKIAogICAgIC8qIERldGVybWluZXMgaG93IGJ5dGVzdHJpbmdzIGZyb20gU1FMaXRlIGFyZSBjb252ZXJ0ZWQgdG8gUHl0aG9uIG9iamVjdHM6CiAgICAgICogLSBQeVVuaWNvZGVfVHlwZTogICAgICAgIFB5dGhvbiBVbmljb2RlIG9iamVjdHMgYXJlIGNvbnN0cnVjdGVkIGZyb20gVVRGLTggYnl0ZXN0cmluZ3MKLSAgICAgKiAtIE9wdGltaXplZFVuaWNvZGU6ICAgICAgTGlrZSBiZWZvcmUsIGJ1dCBmb3IgQVNDSUkgZGF0YSwgb25seSBQeVN0cmluZ3MgYXJlIGNyZWF0ZWQuCi0gICAgICogLSBQeUJ5dGVzX1R5cGU6ICAgICAgICAgUHlTdHJpbmdzIGFyZSBjcmVhdGVkIGFzLWlzLgorICAgICAqIC0gUHlCeXRlc19UeXBlOiAgICAgICAgICBUaGUgYnl0ZXN0cmluZ3MgYXJlIHJldHVybmVkIGFzLWlzLgogICAgICAqIC0gQW55IGN1c3RvbSBjYWxsYWJsZTogICBBbnkgb2JqZWN0IHJldHVybmVkIGZyb20gdGhlIGNhbGxhYmxlIGNhbGxlZCB3aXRoIHRoZSBieXRlc3RyaW5nCiAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHNpbmdsZSBwYXJhbWV0ZXIuCiAgICAgICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggODZmYmQ0ZS4uOGE1NmQzYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtMTI2LDExICsxMjYsOSBAQAogCiBzdGF0aWMgdm9pZCBweXNxbGl0ZV9jdXJzb3JfZGVhbGxvYyhweXNxbGl0ZV9DdXJzb3IqIHNlbGYpCiB7Ci0gICAgaW50IHJjOwotCiAgICAgLyogUmVzZXQgdGhlIHN0YXRlbWVudCBpZiB0aGUgdXNlciBoYXMgbm90IGNsb3NlZCB0aGUgY3Vyc29yICovCiAgICAgaWYgKHNlbGYtPnN0YXRlbWVudCkgewotICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnN0YXRlbWVudCk7CiAgICAgfQogCkBAIC0xNTIsOCArMTUwLDkgQEAKIHsKICAgICBQeU9iamVjdCogdXBjYXNlX2tleTsKICAgICBQeU9iamVjdCogcmV0dmFsOworICAgIF9QeV9JREVOVElGSUVSKHVwcGVyKTsKIAotICAgIHVwY2FzZV9rZXkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGtleSwgInVwcGVyIiwgIiIpOworICAgIHVwY2FzZV9rZXkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGtleSwgJlB5SWRfdXBwZXIsICIiKTsKICAgICBpZiAoIXVwY2FzZV9rZXkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjY4LDExICsyNjcsNiBAQAogICAgIH0KIH0KIAotUHlPYmplY3QqIHB5c3FsaXRlX3VuaWNvZGVfZnJvbV9zdHJpbmcoY29uc3QgY2hhciogdmFsX3N0ciwgUHlfc3NpemVfdCBzaXplLCBpbnQgb3B0aW1pemUpCi17Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSh2YWxfc3RyLCBzaXplKTsKLX0KLQogLyoKICAqIFJldHVybnMgYSByb3cgZnJvbSB0aGUgY3VycmVudGx5IGFjdGl2ZSBTUUxpdGUgc3RhdGVtZW50CiAgKgpAQCAtMzU2LDEyICszNTAsOCBAQAogICAgICAgICAgICAgfSBlbHNlIGlmIChjb2x0eXBlID09IFNRTElURV9URVhUKSB7CiAgICAgICAgICAgICAgICAgdmFsX3N0ciA9IChjb25zdCBjaGFyKilzcWxpdGUzX2NvbHVtbl90ZXh0KHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwogICAgICAgICAgICAgICAgIG5ieXRlcyA9IHNxbGl0ZTNfY29sdW1uX2J5dGVzKHNlbGYtPnN0YXRlbWVudC0+c3QsIGkpOwotICAgICAgICAgICAgICAgIGlmICgoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ID09IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKQotICAgICAgICAgICAgICAgICAgICB8fCAoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ID09IHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gcHlzcWxpdGVfdW5pY29kZV9mcm9tX3N0cmluZyh2YWxfc3RyLCBuYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gcHlzcWxpdGVfT3B0aW1pemVkVW5pY29kZSA/IDEgOiAwKTsKLQorICAgICAgICAgICAgICAgIGlmIChzZWxmLT5jb25uZWN0aW9uLT50ZXh0X2ZhY3RvcnkgPT0gKFB5T2JqZWN0KikmUHlVbmljb2RlX1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udmVydGVkID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHZhbF9zdHIsIG5ieXRlcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghY29udmVydGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjb2xuYW1lID0gc3FsaXRlM19jb2x1bW5fbmFtZShzZWxmLT5zdGF0ZW1lbnQtPnN0LCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29sbmFtZSkgewpAQCAtNDYwLDcgKzQ1MCw2IEBACiAgICAgaW50IHN0YXRlbWVudF90eXBlOwogICAgIFB5T2JqZWN0KiBkZXNjcmlwdG9yOwogICAgIFB5T2JqZWN0KiBzZWNvbmRfYXJndW1lbnQgPSBOVUxMOwotICAgIGludCBhbGxvd184Yml0X2NoYXJzOwogCiAgICAgaWYgKCFjaGVja19jdXJzb3Ioc2VsZikpIHsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTQ2OSwxMCArNDU4LDYgQEAKICAgICBzZWxmLT5sb2NrZWQgPSAxOwogICAgIHNlbGYtPnJlc2V0ID0gMDsKIAotICAgIC8qIE1ha2Ugc2hvb3RpbmcgeW91cnNlbGYgaW4gdGhlIGZvb3Qgd2l0aCBub3QgdXRmLTggZGVjb2RhYmxlIDgtYml0LXN0cmluZ3MgaGFyZGVyICovCi0gICAgYWxsb3dfOGJpdF9jaGFycyA9ICgoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ICE9IChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKSAmJgotICAgICAgICAoc2VsZi0+Y29ubmVjdGlvbi0+dGV4dF9mYWN0b3J5ICE9IHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUpKTsKLQogICAgIFB5X1hERUNSRUYoc2VsZi0+bmV4dF9yb3cpOwogICAgIHNlbGYtPm5leHRfcm93ID0gTlVMTDsKIApAQCAtNTM2LDcgKzUyMSw3IEBACiAKICAgICBpZiAoc2VsZi0+c3RhdGVtZW50ICE9IE5VTEwpIHsKICAgICAgICAgLyogVGhlcmUgaXMgYW4gYWN0aXZlIHN0YXRlbWVudCAqLwotICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVzZXQoc2VsZi0+c3RhdGVtZW50KTsKICAgICB9CiAKICAgICBvcGVyYXRpb25fY3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmdBbmRTaXplKG9wZXJhdGlvbiwgJm9wZXJhdGlvbl9sZW4pOwpAQCAtNjMxLDcgKzYxNiw3IEBACiAKICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X21hcmtfZGlydHkoc2VsZi0+c3RhdGVtZW50KTsKIAotICAgICAgICBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXJzKHNlbGYtPnN0YXRlbWVudCwgcGFyYW1ldGVycywgYWxsb3dfOGJpdF9jaGFycyk7CisgICAgICAgIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMoc2VsZi0+c3RhdGVtZW50LCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KQEAgLTc0MSw3ICs3MjYsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG11bHRpcGxlKSB7Ci0gICAgICAgICAgICByYyA9IHB5c3FsaXRlX3N0YXRlbWVudF9yZXNldChzZWxmLT5zdGF0ZW1lbnQpOworICAgICAgICAgICAgcHlzcWxpdGVfc3RhdGVtZW50X3Jlc2V0KHNlbGYtPnN0YXRlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihwYXJhbWV0ZXJzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbWljcm9wcm90b2NvbHMuYyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCmluZGV4IGM3MzBhZmEuLjIyNjFiODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9taWNyb3Byb3RvY29scy5jCkBAIC05NSw3ICs5NSw5IEBACiAKICAgICAvKiB0cnkgdG8gaGF2ZSB0aGUgcHJvdG9jb2wgYWRhcHQgdGhpcyBvYmplY3QqLwogICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHByb3RvLCAiX19hZGFwdF9fIikpIHsKLSAgICAgICAgUHlPYmplY3QgKmFkYXB0ZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHByb3RvLCAiX19hZGFwdF9fIiwgIk8iLCBvYmopOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2FkYXB0X18pOworICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHJvdG8sICZQeUlkX19fYWRhcHRfXywgIk8iLCBvYmopOworCiAgICAgICAgIGlmIChhZGFwdGVkKSB7CiAgICAgICAgICAgICBpZiAoYWRhcHRlZCAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZWQ7CkBAIC0xMTAsNyArMTEyLDkgQEAKIAogICAgIC8qIGFuZCBmaW5hbGx5IHRyeSB0byBoYXZlIHRoZSBvYmplY3QgYWRhcHQgaXRzZWxmICovCiAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiX19jb25mb3JtX18iKSkgewotICAgICAgICBQeU9iamVjdCAqYWRhcHRlZCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAiX19jb25mb3JtX18iLCJPIiwgcHJvdG8pOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2NvbmZvcm1fXyk7CisgICAgICAgIFB5T2JqZWN0ICphZGFwdGVkID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX19fY29uZm9ybV9fLCJPIiwgcHJvdG8pOworCiAgICAgICAgIGlmIChhZGFwdGVkKSB7CiAgICAgICAgICAgICBpZiAoYWRhcHRlZCAhPSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGFkYXB0ZWQ7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKaW5kZXggY2JjM2I4ZS4uYmVhNmQ2YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwpAQCAtMzcsNyArMzcsNyBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfRXJyb3IsICpweXNxbGl0ZV9XYXJuaW5nLCAqcHlzcWxpdGVfSW50ZXJmYWNlRXJyb3IsICpweXNxbGl0ZV9EYXRhYmFzZUVycm9yLAogICAgICpweXNxbGl0ZV9JbnRlcm5hbEVycm9yLCAqcHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgKnB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsCi0gICAgKnB5c3FsaXRlX0ludGVncml0eUVycm9yLCAqcHlzcWxpdGVfRGF0YUVycm9yLCAqcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3IsICpweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlOworICAgICpweXNxbGl0ZV9JbnRlZ3JpdHlFcnJvciwgKnB5c3FsaXRlX0RhdGFFcnJvciwgKnB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yOwogCiBQeU9iamVjdCogY29udmVydGVyczsKIGludCBfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3M7CkBAIC0xNzksMTMgKzE3OSwxNCBAQAogICAgIFB5T2JqZWN0KiBuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCogY2FsbGFibGU7CiAgICAgUHlPYmplY3QqIHJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIodXBwZXIpOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyIsICZvcmlnX25hbWUsICZjYWxsYWJsZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogY29udmVydCB0aGUgbmFtZSB0byB1cHBlciBjYXNlICovCi0gICAgbmFtZSA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob3JpZ19uYW1lLCAidXBwZXIiLCAiIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob3JpZ19uYW1lLCAmUHlJZF91cHBlciwgIiIpOwogICAgIGlmICghbmFtZSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTQwNiwxMyArNDA3LDEzIEBACiAgICAgfQogICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJOb3RTdXBwb3J0ZWRFcnJvciIsIHB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yKTsKIAotICAgIC8qIFdlIGp1c3QgbmVlZCAic29tZXRoaW5nIiB1bmlxdWUgZm9yIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGUuIEl0IGRvZXMgbm90IHJlYWxseQotICAgICAqIG5lZWQgdG8gYmUgYSBzdHJpbmcgc3ViY2xhc3MuIEp1c3QgYW55dGhpbmcgdGhhdCBjYW4gYWN0IGFzIGEgc3BlY2lhbAotICAgICAqIG1hcmtlciBmb3IgdXMuIFNvIEkgcHVsbGVkIFB5Q2VsbF9UeXBlIG91dCBvZiBteSBtYWdpYyBoYXQuCi0gICAgICovCi0gICAgUHlfSU5DUkVGKChQeU9iamVjdCopJlB5Q2VsbF9UeXBlKTsKLSAgICBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlID0gKFB5T2JqZWN0KikmUHlDZWxsX1R5cGU7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIk9wdGltaXplZFVuaWNvZGUiLCBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlKTsKKyAgICAvKiBJbiBQeXRob24gMi54LCBzZXR0aW5nIENvbm5lY3Rpb24udGV4dF9mYWN0b3J5IHRvCisgICAgICAgT3B0aW1pemVkVW5pY29kZSBjYXVzZWQgVW5pY29kZSBvYmplY3RzIHRvIGJlIHJldHVybmVkIGZvcgorICAgICAgIG5vbi1BU0NJSSBkYXRhIGFuZCBieXRlc3RyaW5ncyB0byBiZSByZXR1cm5lZCBmb3IgQVNDSUkgZGF0YS4KKyAgICAgICBOb3cgT3B0aW1pemVkVW5pY29kZSBpcyBhbiBhbGlhcyBmb3Igc3RyLCBzbyBpdCBoYXMgbm8KKyAgICAgICBlZmZlY3QuICovCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiT3B0aW1pemVkVW5pY29kZSIsIChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKIAogICAgIC8qIFNldCBpbnRlZ2VyIGNvbnN0YW50cyAqLwogICAgIGZvciAoaSA9IDA7IF9pbnRfY29uc3RhbnRzW2ldLmNvbnN0YW50X25hbWUgIT0gMDsgaSsrKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmggYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKaW5kZXggMGVkZGI2Ny4uYjUxNzI0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaApAQCAtMzgsOCArMzgsNiBAQAogZXh0ZXJuIFB5T2JqZWN0KiBweXNxbGl0ZV9EYXRhRXJyb3I7CiBleHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX05vdFN1cHBvcnRlZEVycm9yOwogCi1leHRlcm4gUHlPYmplY3QqIHB5c3FsaXRlX09wdGltaXplZFVuaWNvZGU7Ci0KIC8qIHRoZSBmdW5jdGlvbnMgdGltZS50aW1lKCkgYW5kIHRpbWUuc2xlZXAoKSAqLwogZXh0ZXJuIFB5T2JqZWN0KiB0aW1lX3RpbWU7CiBleHRlcm4gUHlPYmplY3QqIHRpbWVfc2xlZXA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvcm93LmMgYi9Nb2R1bGVzL19zcWxpdGUvcm93LmMKaW5kZXggM2Q0NDA5NC4uYjUwNjU4YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3Jvdy5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9yb3cuYwpAQCAtMTczLDEwICsxNzMsOSBAQAogCiBzdGF0aWMgUHlPYmplY3QqIHB5c3FsaXRlX3Jvd19yaWNoY29tcGFyZShweXNxbGl0ZV9Sb3cgKnNlbGYsIFB5T2JqZWN0ICpfb3RoZXIsIGludCBvcGlkKQogewotICAgIGlmIChvcGlkICE9IFB5X0VRICYmIG9waWQgIT0gUHlfTkUpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAob3BpZCAhPSBQeV9FUSAmJiBvcGlkICE9IFB5X05FKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoUHlUeXBlX0lzU3VidHlwZShQeV9UWVBFKF9vdGhlciksICZweXNxbGl0ZV9Sb3dUeXBlKSkgewogICAgICAgICBweXNxbGl0ZV9Sb3cgKm90aGVyID0gKHB5c3FsaXRlX1JvdyAqKV9vdGhlcjsKICAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5T2JqZWN0X1JpY2hDb21wYXJlKHNlbGYtPmRlc2NyaXB0aW9uLCBvdGhlci0+ZGVzY3JpcHRpb24sIG9waWQpOwpAQCAtMTg2LDggKzE4NSw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUoc2VsZi0+ZGF0YSwgb3RoZXItPmRhdGEsIG9waWQpOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogUHlNYXBwaW5nTWV0aG9kcyBweXNxbGl0ZV9yb3dfYXNfbWFwcGluZyA9IHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYwppbmRleCA4MGJjYzM4Li45ODg0ODYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKKysrIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlciwgaW50IGFsbG93XzhiaXRfY2hhcnMpCitpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlcikKIHsKICAgICBpbnQgcmMgPSBTUUxJVEVfT0s7CiAgICAgUFlfTE9OR19MT05HIGxvbmdsb25ndmFsOwpAQCAtMTY2LDcgKzE2Niw3IEBACiAgICAgfQogfQogCi12b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycywgaW50IGFsbG93XzhiaXRfY2hhcnMpCit2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycykKIHsKICAgICBQeU9iamVjdCogY3VycmVudF9wYXJhbTsKICAgICBQeU9iamVjdCogYWRhcHRlZDsKQEAgLTIyMCw3ICsyMjAsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSArIDEsIGFkYXB0ZWQsIGFsbG93XzhiaXRfY2hhcnMpOworICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSArIDEsIGFkYXB0ZWQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGFkYXB0ZWQpOwogCiAgICAgICAgICAgICBpZiAocmMgIT0gU1FMSVRFX09LKSB7CkBAIC0yNjUsNyArMjY1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJjID0gcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHNlbGYsIGksIGFkYXB0ZWQsIGFsbG93XzhiaXRfY2hhcnMpOworICAgICAgICAgICAgcmMgPSBweXNxbGl0ZV9zdGF0ZW1lbnRfYmluZF9wYXJhbWV0ZXIoc2VsZiwgaSwgYWRhcHRlZCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYoYWRhcHRlZCk7CiAKICAgICAgICAgICAgIGlmIChyYyAhPSBTUUxJVEVfT0spIHsKQEAgLTM2OSwxMSArMzY5LDkgQEAKIAogdm9pZCBweXNxbGl0ZV9zdGF0ZW1lbnRfZGVhbGxvYyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpCiB7Ci0gICAgaW50IHJjOwotCiAgICAgaWYgKHNlbGYtPnN0KSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmMgPSBzcWxpdGUzX2ZpbmFsaXplKHNlbGYtPnN0KTsKKyAgICAgICAgc3FsaXRlM19maW5hbGl6ZShzZWxmLT5zdCk7CiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmggYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmgKaW5kZXggZTVkYTQyZS4uNDY4MTQ0MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5oCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuaApAQCAtNDYsOCArNDYsOCBAQAogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9jcmVhdGUocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBweXNxbGl0ZV9Db25uZWN0aW9uKiBjb25uZWN0aW9uLCBQeU9iamVjdCogc3FsKTsKIHZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2RlYWxsb2MocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmKTsKIAotaW50IHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcihweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIGludCBwb3MsIFB5T2JqZWN0KiBwYXJhbWV0ZXIsIGludCBhbGxvd184Yml0X2NoYXJzKTsKLXZvaWQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVycyhweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYsIFB5T2JqZWN0KiBwYXJhbWV0ZXJzLCBpbnQgYWxsb3dfOGJpdF9jaGFycyk7CitpbnQgcHlzcWxpdGVfc3RhdGVtZW50X2JpbmRfcGFyYW1ldGVyKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgaW50IHBvcywgUHlPYmplY3QqIHBhcmFtZXRlcik7Cit2b2lkIHB5c3FsaXRlX3N0YXRlbWVudF9iaW5kX3BhcmFtZXRlcnMocHlzcWxpdGVfU3RhdGVtZW50KiBzZWxmLCBQeU9iamVjdCogcGFyYW1ldGVycyk7CiAKIGludCBweXNxbGl0ZV9zdGF0ZW1lbnRfcmVjb21waWxlKHB5c3FsaXRlX1N0YXRlbWVudCogc2VsZiwgUHlPYmplY3QqIHBhcmFtZXRlcnMpOwogaW50IHB5c3FsaXRlX3N0YXRlbWVudF9maW5hbGl6ZShweXNxbGl0ZV9TdGF0ZW1lbnQqIHNlbGYpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3JlLmMgYi9Nb2R1bGVzL19zcmUuYwppbmRleCA0NzJiNWEzLi5jYjFmNzkxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcmUuYworKysgYi9Nb2R1bGVzL19zcmUuYwpAQCAtMTYzLDIxICsxNjMsMTcgQEAKIAogLyogdW5pY29kZS1zcGVjaWZpYyBjaGFyYWN0ZXIgcHJlZGljYXRlcyAqLwogCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0KLSNkZWZpbmUgU1JFX1VOSV9JU19ESUdJVChjaCkgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoKFB5X1VOSUNPREUpKGNoKSkKLSNkZWZpbmUgU1JFX1VOSV9JU19TUEFDRShjaCkgUHlfVU5JQ09ERV9JU1NQQUNFKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfTElORUJSRUFLKGNoKSBQeV9VTklDT0RFX0lTTElORUJSRUFLKChQeV9VTklDT0RFKShjaCkpCi0jZGVmaW5lIFNSRV9VTklfSVNfQUxOVU0oY2gpIFB5X1VOSUNPREVfSVNBTE5VTSgoUHlfVU5JQ09ERSkoY2gpKQotI2RlZmluZSBTUkVfVU5JX0lTX1dPUkQoY2gpIChTUkVfVU5JX0lTX0FMTlVNKChjaCkpIHx8IChjaCkgPT0gJ18nKQorI2RlZmluZSBTUkVfVU5JX0lTX0RJR0lUKGNoKSBQeV9VTklDT0RFX0lTREVDSU1BTChjaCkKKyNkZWZpbmUgU1JFX1VOSV9JU19TUEFDRShjaCkgUHlfVU5JQ09ERV9JU1NQQUNFKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX0xJTkVCUkVBSyhjaCkgUHlfVU5JQ09ERV9JU0xJTkVCUkVBSyhjaCkKKyNkZWZpbmUgU1JFX1VOSV9JU19BTE5VTShjaCkgUHlfVU5JQ09ERV9JU0FMTlVNKGNoKQorI2RlZmluZSBTUkVfVU5JX0lTX1dPUkQoY2gpIChTUkVfVU5JX0lTX0FMTlVNKGNoKSB8fCAoY2gpID09ICdfJykKIAogc3RhdGljIHVuc2lnbmVkIGludCBzcmVfbG93ZXJfdW5pY29kZSh1bnNpZ25lZCBpbnQgY2gpCiB7Ci0gICAgcmV0dXJuICh1bnNpZ25lZCBpbnQpIFB5X1VOSUNPREVfVE9MT1dFUigoUHlfVU5JQ09ERSkoY2gpKTsKKyAgICByZXR1cm4gKHVuc2lnbmVkIGludCkgUHlfVU5JQ09ERV9UT0xPV0VSKGNoKTsKIH0KIAotI2VuZGlmCi0KIExPQ0FMKGludCkKIHNyZV9jYXRlZ29yeShTUkVfQ09ERSBjYXRlZ29yeSwgdW5zaWduZWQgaW50IGNoKQogewpAQCAtMjA1LDcgKzIwMSw2IEBACiAgICAgY2FzZSBTUkVfQ0FURUdPUllfTE9DX05PVF9XT1JEOgogICAgICAgICByZXR1cm4gIVNSRV9MT0NfSVNfV09SRChjaCk7CiAKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfRElHSVQ6CiAgICAgICAgIHJldHVybiBTUkVfVU5JX0lTX0RJR0lUKGNoKTsKICAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0RJR0lUOgpAQCAtMjIyLDI0ICsyMTcsNiBAQAogICAgICAgICByZXR1cm4gU1JFX1VOSV9JU19MSU5FQlJFQUsoY2gpOwogICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfTElORUJSRUFLOgogICAgICAgICByZXR1cm4gIVNSRV9VTklfSVNfTElORUJSRUFLKGNoKTsKLSNlbHNlCi0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX0RJR0lUOgotICAgICAgICByZXR1cm4gU1JFX0lTX0RJR0lUKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0RJR0lUOgotICAgICAgICByZXR1cm4gIVNSRV9JU19ESUdJVChjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX1NQQUNFOgotICAgICAgICByZXR1cm4gU1JFX0lTX1NQQUNFKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX1NQQUNFOgotICAgICAgICByZXR1cm4gIVNSRV9JU19TUEFDRShjaCk7Ci0gICAgY2FzZSBTUkVfQ0FURUdPUllfVU5JX1dPUkQ6Ci0gICAgICAgIHJldHVybiBTUkVfTE9DX0lTX1dPUkQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9OT1RfV09SRDoKLSAgICAgICAgcmV0dXJuICFTUkVfTE9DX0lTX1dPUkQoY2gpOwotICAgIGNhc2UgU1JFX0NBVEVHT1JZX1VOSV9MSU5FQlJFQUs6Ci0gICAgICAgIHJldHVybiBTUkVfSVNfTElORUJSRUFLKGNoKTsKLSAgICBjYXNlIFNSRV9DQVRFR09SWV9VTklfTk9UX0xJTkVCUkVBSzoKLSAgICAgICAgcmV0dXJuICFTUkVfSVNfTElORUJSRUFLKGNoKTsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTI4MCw2ICsyNTcsNyBAQAogLyogZ2VuZXJhdGUgOC1iaXQgdmVyc2lvbiAqLwogCiAjZGVmaW5lIFNSRV9DSEFSIHVuc2lnbmVkIGNoYXIKKyNkZWZpbmUgU1JFX0NIQVJHRVQoc3RhdGUsIGJ1ZiwgaW5kZXgpICgodW5zaWduZWQgY2hhciopYnVmKVtpbmRleF0KICNkZWZpbmUgU1JFX0FUIHNyZV9hdAogI2RlZmluZSBTUkVfQ09VTlQgc3JlX2NvdW50CiAjZGVmaW5lIFNSRV9DSEFSU0VUIHNyZV9jaGFyc2V0CkBAIC0yODcsMTUgKzI2NSwxMSBAQAogI2RlZmluZSBTUkVfTUFUQ0ggc3JlX21hdGNoCiAjZGVmaW5lIFNSRV9NQVRDSF9DT05URVhUIHNyZV9tYXRjaF9jb250ZXh0CiAjZGVmaW5lIFNSRV9TRUFSQ0ggc3JlX3NlYXJjaAotI2RlZmluZSBTUkVfTElURVJBTF9URU1QTEFURSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZQotCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAKICNkZWZpbmUgU1JFX1JFQ1VSU0lWRQogI2luY2x1ZGUgIl9zcmUuYyIKICN1bmRlZiBTUkVfUkVDVVJTSVZFCiAKLSN1bmRlZiBTUkVfTElURVJBTF9URU1QTEFURQogI3VuZGVmIFNSRV9TRUFSQ0gKICN1bmRlZiBTUkVfTUFUQ0gKICN1bmRlZiBTUkVfTUFUQ0hfQ09OVEVYVApAQCAtMzA0LDEwICsyNzgsMTUgQEAKICN1bmRlZiBTUkVfQ09VTlQKICN1bmRlZiBTUkVfQVQKICN1bmRlZiBTUkVfQ0hBUgorI3VuZGVmIFNSRV9DSEFSR0VUCiAKLS8qIGdlbmVyYXRlIDE2LWJpdCB1bmljb2RlIHZlcnNpb24gKi8KKy8qIGdlbmVyYXRlIDgvMTYvMzItYml0IHVuaWNvZGUgdmVyc2lvbiAqLwogCi0jZGVmaW5lIFNSRV9DSEFSIFB5X1VOSUNPREUKKyNkZWZpbmUgU1JFX0NIQVIgdm9pZAorI2RlZmluZSBTUkVfQ0hBUkdFVChzdGF0ZSwgYnVmLCBpbmRleCkgXAorICAgICgoc3RhdGUtPmNoYXJzaXplPT0xKSA/ICgoUHlfVUNTMSopYnVmKVtpbmRleF0gOiBcCisgICAgIChzdGF0ZS0+Y2hhcnNpemU9PTIpID8gKChQeV9VQ1MyKilidWYpW2luZGV4XSA6IFwKKyAgICAgKChQeV9VQ1M0KilidWYpW2luZGV4XSkKICNkZWZpbmUgU1JFX0FUIHNyZV91YXQKICNkZWZpbmUgU1JFX0NPVU5UIHNyZV91Y291bnQKICNkZWZpbmUgU1JFX0NIQVJTRVQgc3JlX3VjaGFyc2V0CkBAIC0zMTUsOCArMjk0LDYgQEAKICNkZWZpbmUgU1JFX01BVENIIHNyZV91bWF0Y2gKICNkZWZpbmUgU1JFX01BVENIX0NPTlRFWFQgc3JlX3VtYXRjaF9jb250ZXh0CiAjZGVmaW5lIFNSRV9TRUFSQ0ggc3JlX3VzZWFyY2gKLSNkZWZpbmUgU1JFX0xJVEVSQUxfVEVNUExBVEUgc3JlX3VsaXRlcmFsX3RlbXBsYXRlCi0jZW5kaWYKIAogI2VuZGlmIC8qIFNSRV9SRUNVUlNJVkUgKi8KIApAQCAtMzI3LDcgKzMwNCw3IEBACiAgICBzZXR0aW5ncyAqLwogCiBMT0NBTChpbnQpCi1TUkVfQVQoU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NIQVIqIHB0ciwgU1JFX0NPREUgYXQpCitTUkVfQVQoU1JFX1NUQVRFKiBzdGF0ZSwgY2hhciogcHRyLCBTUkVfQ09ERSBhdCkKIHsKICAgICAvKiBjaGVjayBpZiBwb2ludGVyIGlzIGF0IGdpdmVuIHBvc2l0aW9uICovCiAKQEAgLTM0MSwxNiArMzE4LDE2IEBACiAKICAgICBjYXNlIFNSRV9BVF9CRUdJTk5JTkdfTElORToKICAgICAgICAgcmV0dXJuICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+YmVnaW5uaW5nIHx8Ci0gICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbLTFdKSk7CisgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpKTsKIAogICAgIGNhc2UgU1JFX0FUX0VORDoKLSAgICAgICAgcmV0dXJuICgoKHZvaWQqKSAocHRyKzEpID09IHN0YXRlLT5lbmQgJiYKLSAgICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbMF0pKSB8fAorICAgICAgICByZXR1cm4gKCgodm9pZCopIChwdHIrc3RhdGUtPmNoYXJzaXplKSA9PSBzdGF0ZS0+ZW5kICYmCisgICAgICAgICAgICAgICAgIFNSRV9JU19MSU5FQlJFQUsoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpKSB8fAogICAgICAgICAgICAgICAgICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+ZW5kKSk7CiAKICAgICBjYXNlIFNSRV9BVF9FTkRfTElORToKICAgICAgICAgcmV0dXJuICgodm9pZCopIHB0ciA9PSBzdGF0ZS0+ZW5kIHx8Ci0gICAgICAgICAgICAgICAgU1JFX0lTX0xJTkVCUkVBSygoaW50KSBwdHJbMF0pKTsKKyAgICAgICAgICAgICAgICBTUkVfSVNfTElORUJSRUFLKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSk7CiAKICAgICBjYXNlIFNSRV9BVF9FTkRfU1RSSU5HOgogICAgICAgICByZXR1cm4gKCh2b2lkKikgcHRyID09IHN0YXRlLT5lbmQpOwpAQCAtMzU5LDU3ICszMzYsNTUgQEAKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwICE9IHRoYXRwOwogCiAgICAgY2FzZSBTUkVfQVRfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgPT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9MT0NfQk9VTkRBUlk6CiAgICAgICAgIGlmIChzdGF0ZS0+YmVnaW5uaW5nID09IHN0YXRlLT5lbmQpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgdGhhdHAgPSAoKHZvaWQqKSBwdHIgPiBzdGF0ZS0+YmVnaW5uaW5nKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWy0xXSkgOiAwOworICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIC0xKSkgOiAwOwogICAgICAgICB0aGlzcCA9ICgodm9pZCopIHB0ciA8IHN0YXRlLT5lbmQpID8KLSAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBwdHJbMF0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgOiAwOwogICAgICAgICByZXR1cm4gdGhpc3AgIT0gdGhhdHA7CiAKICAgICBjYXNlIFNSRV9BVF9MT0NfTk9OX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX0xPQ19JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9MT0NfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfTE9DX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwID09IHRoYXRwOwogCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgY2FzZSBTUkVfQVRfVU5JX0JPVU5EQVJZOgogICAgICAgICBpZiAoc3RhdGUtPmJlZ2lubmluZyA9PSBzdGF0ZS0+ZW5kKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHRoYXRwID0gKCh2b2lkKikgcHRyID4gc3RhdGUtPmJlZ2lubmluZykgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clstMV0pIDogMDsKKyAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAtMSkpIDogMDsKICAgICAgICAgdGhpc3AgPSAoKHZvaWQqKSBwdHIgPCBzdGF0ZS0+ZW5kKSA/Ci0gICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgcHRyWzBdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkpIDogMDsKICAgICAgICAgcmV0dXJuIHRoaXNwICE9IHRoYXRwOwogCiAgICAgY2FzZSBTUkVfQVRfVU5JX05PTl9CT1VOREFSWToKICAgICAgICAgaWYgKHN0YXRlLT5iZWdpbm5pbmcgPT0gc3RhdGUtPmVuZCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB0aGF0cCA9ICgodm9pZCopIHB0ciA+IHN0YXRlLT5iZWdpbm5pbmcpID8KLSAgICAgICAgICAgIFNSRV9VTklfSVNfV09SRCgoaW50KSBwdHJbLTFdKSA6IDA7CisgICAgICAgICAgICBTUkVfVU5JX0lTX1dPUkQoKGludCkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgLTEpKSA6IDA7CiAgICAgICAgIHRoaXNwID0gKCh2b2lkKikgcHRyIDwgc3RhdGUtPmVuZCkgPwotICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIHB0clswXSkgOiAwOworICAgICAgICAgICAgU1JFX1VOSV9JU19XT1JEKChpbnQpIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSA6IDA7CiAgICAgICAgIHJldHVybiB0aGlzcCA9PSB0aGF0cDsKLSNlbmRpZgogCiAgICAgfQogCkBAIC00NzYsNyArNDUxLDcgQEAKICAgICAgICAgICAgIGNvdW50ID0gKihzZXQrKyk7CiAKICAgICAgICAgICAgIGlmIChzaXplb2YoU1JFX0NPREUpID09IDIpIHsKLSAgICAgICAgICAgICAgICBibG9jayA9ICgodW5zaWduZWQgY2hhciopc2V0KVtjaCA+PiA4XTsKKyAgICAgICAgICAgICAgICBibG9jayA9ICgoY2hhciopc2V0KVtjaCA+PiA4XTsKICAgICAgICAgICAgICAgICBzZXQgKz0gMTI4OwogICAgICAgICAgICAgICAgIGlmIChzZXRbYmxvY2sqMTYgKyAoKGNoICYgMjU1KT4+NCldICYgKDEgPDwgKGNoICYgMTUpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9rOwpAQCAtNDg2LDcgKzQ2MSw3IEBACiAgICAgICAgICAgICAgICAgLyogIShjICYgfk4pID09IChjIDwgTisxKSBmb3IgYW55IHVuc2lnbmVkIGMsIHRoaXMgYXZvaWRzCiAgICAgICAgICAgICAgICAgICogd2FybmluZ3Mgd2hlbiBjJ3MgdHlwZSBzdXBwb3J0cyBvbmx5IG51bWJlcnMgPCBOKzEgKi8KICAgICAgICAgICAgICAgICBpZiAoIShjaCAmIH42NTUzNSkpCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gKCh1bnNpZ25lZCBjaGFyKilzZXQpW2NoID4+IDhdOworICAgICAgICAgICAgICAgICAgICBibG9jayA9ICgoY2hhciopc2V0KVtjaCA+PiA4XTsKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gLTE7CiAgICAgICAgICAgICAgICAgc2V0ICs9IDY0OwpAQCAtNTEyLDI4ICs0ODcsMjkgQEAKIFNSRV9DT1VOVChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybiwgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKICAgICBTUkVfQ09ERSBjaHI7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IChTUkVfQ0hBUiAqKXN0YXRlLT5wdHI7Ci0gICAgU1JFX0NIQVIqIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgY2hhciogcHRyID0gKGNoYXIgKilzdGF0ZS0+cHRyOworICAgIGNoYXIqIGVuZCA9IChjaGFyICopc3RhdGUtPmVuZDsKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICAvKiBhZGp1c3QgZW5kICovCiAgICAgaWYgKG1heGNvdW50IDwgZW5kIC0gcHRyICYmIG1heGNvdW50ICE9IDY1NTM1KQotICAgICAgICBlbmQgPSBwdHIgKyBtYXhjb3VudDsKKyAgICAgICAgZW5kID0gcHRyICsgbWF4Y291bnQqc3RhdGUtPmNoYXJzaXplOwogCiAgICAgc3dpdGNoIChwYXR0ZXJuWzBdKSB7CiAKICAgICBjYXNlIFNSRV9PUF9JTjoKICAgICAgICAgLyogcmVwZWF0ZWQgc2V0ICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIElOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiBTUkVfQ0hBUlNFVChwYXR0ZXJuICsgMiwgKnB0cikpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJgorICAgICAgICAgICAgICAgU1JFX0NIQVJTRVQocGF0dGVybiArIDIsIFNSRV9DSEFSR0VUKHN0YXRlLCBwdHIsIDApKSkKKyAgICAgICAgICAgIHB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTUkVfT1BfQU5ZOgogICAgICAgICAvKiByZXBlYXRlZCBkb3Qgd2lsZGNhcmQuICovCiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIEFOWVxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9JU19MSU5FQlJFQUsoKnB0cikpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAhU1JFX0lTX0xJTkVCUkVBSyhTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpCisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU1JFX09QX0FOWV9BTEw6CkBAIC01NDcsMzggKzUyMywzOCBAQAogICAgICAgICAvKiByZXBlYXRlZCBsaXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIExJVEVSQUwgJWRcbiIsIHBhdHRlcm4sIHB0ciwgY2hyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSAqcHRyID09IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkgPT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9MSVRFUkFMX0lHTk9SRToKICAgICAgICAgLyogcmVwZWF0ZWQgbGl0ZXJhbCAqLwogICAgICAgICBjaHIgPSBwYXR0ZXJuWzFdOwogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCBMSVRFUkFMX0lHTk9SRSAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcigqcHRyKSA9PSBjaHIpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgPT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9OT1RfTElURVJBTDoKICAgICAgICAgLyogcmVwZWF0ZWQgbm9uLWxpdGVyYWwgKi8KICAgICAgICAgY2hyID0gcGF0dGVyblsxXTsKICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgTk9UX0xJVEVSQUwgJWRcbiIsIHBhdHRlcm4sIHB0ciwgY2hyKSk7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSAqcHRyICE9IGNocikKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgMCkgIT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNSRV9PUF9OT1RfTElURVJBTF9JR05PUkU6CiAgICAgICAgIC8qIHJlcGVhdGVkIG5vbi1saXRlcmFsICovCiAgICAgICAgIGNociA9IHBhdHRlcm5bMV07CiAgICAgICAgIFRSQUNFKCgifCVwfCVwfENPVU5UIE5PVF9MSVRFUkFMX0lHTk9SRSAlZFxuIiwgcGF0dGVybiwgcHRyLCBjaHIpKTsKLSAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcigqcHRyKSAhPSBjaHIpCi0gICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCAmJiAoU1JFX0NPREUpIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkgIT0gY2hyKQorICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgogICAgICAgICAvKiByZXBlYXRlZCBzaW5nbGUgY2hhcmFjdGVyIHBhdHRlcm4gKi8KICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgU1VCUEFUVEVSTlxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgIHdoaWxlICgoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyIDwgZW5kKSB7CisgICAgICAgIHdoaWxlICgoY2hhciopIHN0YXRlLT5wdHIgPCBlbmQpIHsKICAgICAgICAgICAgIGkgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4pOwogICAgICAgICAgICAgaWYgKGkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBpOwpAQCAtNTg2LDEyICs1NjIsMTIgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCAlZFxuIiwgcGF0dGVybiwgcHRyLAotICAgICAgICAgICAgICAgKFNSRV9DSEFSKikgc3RhdGUtPnB0ciAtIHB0cikpOwotICAgICAgICByZXR1cm4gKFNSRV9DSEFSKikgc3RhdGUtPnB0ciAtIHB0cjsKKyAgICAgICAgICAgICAgICgoY2hhciopc3RhdGUtPnB0ciAtIHB0cikvc3RhdGUtPmNoYXJzaXplKSk7CisgICAgICAgIHJldHVybiAoKGNoYXIqKXN0YXRlLT5wdHIgLSBwdHIpL3N0YXRlLT5jaGFyc2l6ZTsKICAgICB9CiAKLSAgICBUUkFDRSgoInwlcHwlcHxDT1VOVCAlZFxuIiwgcGF0dGVybiwgcHRyLCBwdHIgLSAoU1JFX0NIQVIqKSBzdGF0ZS0+cHRyKSk7Ci0gICAgcmV0dXJuIHB0ciAtIChTUkVfQ0hBUiopIHN0YXRlLT5wdHI7CisgICAgVFJBQ0UoKCJ8JXB8JXB8Q09VTlQgJWRcbiIsIHBhdHRlcm4sIHB0ciwgKHB0ciAtIChjaGFyKikgc3RhdGUtPnB0cikvc3RhdGUtPmNoYXJzaXplKSk7CisgICAgcmV0dXJuIChwdHIgLSAoY2hhciopIHN0YXRlLT5wdHIpL3N0YXRlLT5jaGFyc2l6ZTsKIH0KIAogI2lmIDAgLyogbm90IHVzZWQgaW4gdGhpcyByZWxlYXNlICovCkBAIC02MDIsOCArNTc4LDggQEAKICAgICAgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgU1JFX0NPREUgb2JqZWN0cyB0byBza2lwIGlmIHN1Y2Nlc3NmdWwsIDAKICAgICAgICBpZiBubyBtYXRjaCAqLwogCi0gICAgU1JFX0NIQVIqIGVuZCA9IHN0YXRlLT5lbmQ7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IHN0YXRlLT5wdHI7CisgICAgY2hhciogZW5kID0gc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBwdHIgPSBzdGF0ZS0+cHRyOwogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIC8qIGNoZWNrIG1pbmltYWwgbGVuZ3RoICovCkBAIC02MTQsNyArNTkwLDcgQEAKICAgICBpZiAocGF0dGVyblsyXSAmIFNSRV9JTkZPX1BSRUZJWCAmJiBwYXR0ZXJuWzVdID4gMSkgewogICAgICAgICAvKiA8bGVuZ3RoPiA8c2tpcD4gPHByZWZpeCBkYXRhPiA8b3ZlcmxhcCBkYXRhPiAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcGF0dGVybls1XTsgaSsrKQotICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgcHRyW2ldICE9IHBhdHRlcm5bNyArIGldKQorICAgICAgICAgICAgaWYgKChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIHB0ciwgaSkgIT0gcGF0dGVybls3ICsgaV0pCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBwYXR0ZXJuWzBdICsgMiAqIHBhdHRlcm5bNl07CiAgICAgfQpAQCAtNzgzLDcgKzc1OSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlfc3NpemVfdCBsYXN0X2N0eF9wb3M7CiAgICAgUHlfc3NpemVfdCBqdW1wOwotICAgIFNSRV9DSEFSKiBwdHI7CisgICAgY2hhciogcHRyOwogICAgIFNSRV9DT0RFKiBwYXR0ZXJuOwogICAgIFB5X3NzaXplX3QgY291bnQ7CiAgICAgUHlfc3NpemVfdCBsYXN0bWFyazsKQEAgLTc5OSw3ICs3NzUsNyBAQAogTE9DQUwoUHlfc3NpemVfdCkKIFNSRV9NQVRDSChTUkVfU1RBVEUqIHN0YXRlLCBTUkVfQ09ERSogcGF0dGVybikKIHsKLSAgICBTUkVfQ0hBUiogZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBlbmQgPSAoY2hhciopc3RhdGUtPmVuZDsKICAgICBQeV9zc2l6ZV90IGFsbG9jX3BvcywgY3R4X3BvcyA9IC0xOwogICAgIFB5X3NzaXplX3QgaSwgcmV0ID0gMDsKICAgICBQeV9zc2l6ZV90IGp1bXA7CkBAIC04MTgsMTIgKzc5NCwxMiBAQAogCiBlbnRyYW5jZToKIAotICAgIGN0eC0+cHRyID0gKFNSRV9DSEFSICopc3RhdGUtPnB0cjsKKyAgICBjdHgtPnB0ciA9IChjaGFyICopc3RhdGUtPnB0cjsKIAogICAgIGlmIChjdHgtPnBhdHRlcm5bMF0gPT0gU1JFX09QX0lORk8pIHsKICAgICAgICAgLyogb3B0aW1pemF0aW9uIGluZm8gYmxvY2sgKi8KICAgICAgICAgLyogPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IC4uLiAqLwotICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKKyAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoZW5kIC0gY3R4LT5wdHIpL3N0YXRlLT5jaGFyc2l6ZSA8IGN0eC0+cGF0dGVyblszXSkgewogICAgICAgICAgICAgVFJBQ0UoKCJyZWplY3QgKGdvdCAlZCBjaGFycywgbmVlZCAlZClcbiIsCiAgICAgICAgICAgICAgICAgICAgKGVuZCAtIGN0eC0+cHRyKSwgY3R4LT5wYXR0ZXJuWzNdKSk7CiAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKQEAgLTg2NSwxMCArODQxLDEwIEBACiAgICAgICAgICAgICAvKiA8TElURVJBTD4gPGNvZGU+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxMSVRFUkFMICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsICpjdHgtPnBhdHRlcm4pKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKFNSRV9DT0RFKSBjdHgtPnB0clswXSAhPSBjdHgtPnBhdHRlcm5bMF0pCisgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSAhPSBjdHgtPnBhdHRlcm5bMF0pCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9OT1RfTElURVJBTDoKQEAgLTg3NiwxMCArODUyLDEwIEBACiAgICAgICAgICAgICAvKiA8Tk9UX0xJVEVSQUw+IDxjb2RlPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8Tk9UX0xJVEVSQUwgJWRcbiIsIGN0eC0+cGF0dGVybiwKICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAoU1JFX0NPREUpIGN0eC0+cHRyWzBdID09IGN0eC0+cGF0dGVyblswXSkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApID09IGN0eC0+cGF0dGVyblswXSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybisrOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX1NVQ0NFU1M6CkBAIC05MDIsMTkgKzg3OCwxOSBAQAogICAgICAgICAgICAgLyogPENBVEVHT1JZPiA8Y29kZT4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfENBVEVHT1JZICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsICpjdHgtPnBhdHRlcm4pKTsKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIXNyZV9jYXRlZ29yeShjdHgtPnBhdHRlcm5bMF0sIGN0eC0+cHRyWzBdKSkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgIXNyZV9jYXRlZ29yeShjdHgtPnBhdHRlcm5bMF0sIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfQU5ZOgogICAgICAgICAgICAgLyogbWF0Y2ggYW55dGhpbmcgKGV4Y2VwdCBhIG5ld2xpbmUpICovCiAgICAgICAgICAgICAvKiA8QU5ZPiAqLwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8QU5ZXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7Ci0gICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IFNSRV9JU19MSU5FQlJFQUsoY3R4LT5wdHJbMF0pKQotICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8IFNSRV9JU19MSU5FQlJFQUsoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpCisgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfQU5ZX0FMTDoKQEAgLTkyMyw0NyArODk5LDQ3IEBACiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBTllfQUxMXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX0lOOgogICAgICAgICAgICAgLyogbWF0Y2ggc2V0IG1lbWJlciAob3Igbm9uX21lbWJlcikgKi8KICAgICAgICAgICAgIC8qIDxJTj4gPHNraXA+IDxzZXQ+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxJTlxuIiwgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0cikpOwotICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fCAhU1JFX0NIQVJTRVQoY3R4LT5wYXR0ZXJuICsgMSwgKmN0eC0+cHRyKSkKLSAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKKyAgICAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8ICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4gKyAxLCBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSkKKyAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4gKz0gY3R4LT5wYXR0ZXJuWzBdOwotICAgICAgICAgICAgY3R4LT5wdHIrKzsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1JFX09QX0xJVEVSQUxfSUdOT1JFOgogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8TElURVJBTF9JR05PUkUgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0ciwgY3R4LT5wYXR0ZXJuWzBdKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikgIT0gc3RhdGUtPmxvd2VyKCpjdHgtPnBhdHRlcm4pKQorICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcihTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApKSAhPSBzdGF0ZS0+bG93ZXIoKmN0eC0+cGF0dGVybikpCiAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICBjdHgtPnBhdHRlcm4rKzsKLSAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNSRV9PUF9OT1RfTElURVJBTF9JR05PUkU6CiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxOT1RfTElURVJBTF9JR05PUkUgJWRcbiIsCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wYXR0ZXJuLCBjdHgtPnB0ciwgKmN0eC0+cGF0dGVybikpOwogICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcigqY3R4LT5wdHIpID09IHN0YXRlLT5sb3dlcigqY3R4LT5wYXR0ZXJuKSkKKyAgICAgICAgICAgICAgICBzdGF0ZS0+bG93ZXIoU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkgPT0gc3RhdGUtPmxvd2VyKCpjdHgtPnBhdHRlcm4pKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgY3R4LT5wYXR0ZXJuKys7Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfSU5fSUdOT1JFOgogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8SU5fSUdOT1JFXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyKSk7CiAgICAgICAgICAgICBpZiAoY3R4LT5wdHIgPj0gZW5kCiAgICAgICAgICAgICAgICAgfHwgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybisxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpc3RhdGUtPmxvd2VyKCpjdHgtPnB0cikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpKSkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIGN0eC0+cGF0dGVybiArPSBjdHgtPnBhdHRlcm5bMF07Ci0gICAgICAgICAgICBjdHgtPnB0cisrOworICAgICAgICAgICAgY3R4LT5wdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTUkVfT1BfSlVNUDoKQEAgLTk4NiwxMSArOTYyLDExIEBACiAgICAgICAgICAgICBmb3IgKDsgY3R4LT5wYXR0ZXJuWzBdOyBjdHgtPnBhdHRlcm4gKz0gY3R4LT5wYXR0ZXJuWzBdKSB7CiAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cGF0dGVyblsxXSA9PSBTUkVfT1BfTElURVJBTCAmJgogICAgICAgICAgICAgICAgICAgICAoY3R4LT5wdHIgPj0gZW5kIHx8Ci0gICAgICAgICAgICAgICAgICAgICAoU1JFX0NPREUpICpjdHgtPnB0ciAhPSBjdHgtPnBhdHRlcm5bMl0pKQorICAgICAgICAgICAgICAgICAgICAgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgY3R4LT5wdHIsIDApICE9IGN0eC0+cGF0dGVyblsyXSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bMV0gPT0gU1JFX09QX0lOICYmCiAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwKLSAgICAgICAgICAgICAgICAgICAgICFTUkVfQ0hBUlNFVChjdHgtPnBhdHRlcm4gKyAzLCAoU1JFX0NPREUpICpjdHgtPnB0cikpKQorICAgICAgICAgICAgICAgICAgICAgIVNSRV9DSEFSU0VUKGN0eC0+cGF0dGVybiArIDMsIChTUkVfQ09ERSkgU1JFX0NIQVJHRVQoc3RhdGUsIGN0eC0+cHRyLCAwKSkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBzdGF0ZS0+cHRyID0gY3R4LT5wdHI7CiAgICAgICAgICAgICAgICAgRE9fSlVNUChKVU1QX0JSQU5DSCwganVtcF9icmFuY2gsIGN0eC0+cGF0dGVybisxKTsKQEAgLTEwMjEsNyArOTk3LDcgQEAKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFJFUEVBVF9PTkUgJWQgJWRcbiIsIGN0eC0+cGF0dGVybiwgY3R4LT5wdHIsCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wYXR0ZXJuWzFdLCBjdHgtPnBhdHRlcm5bMl0pKTsKIAotICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQorICAgICAgICAgICAgaWYgKGN0eC0+cHRyICsgc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdID4gZW5kKQogICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOyAvKiBjYW5ub3QgbWF0Y2ggKi8KIAogICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyOwpAQCAtMTAzMCw3ICsxMDA2LDcgQEAKICAgICAgICAgICAgIFJFVFVSTl9PTl9FUlJPUihyZXQpOwogICAgICAgICAgICAgREFUQV9MT09LVVBfQVQoU1JFX01BVENIX0NPTlRFWFQsIGN0eCwgY3R4X3Bvcyk7CiAgICAgICAgICAgICBjdHgtPmNvdW50ID0gcmV0OwotICAgICAgICAgICAgY3R4LT5wdHIgKz0gY3R4LT5jb3VudDsKKyAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+Y291bnQ7CiAKICAgICAgICAgICAgIC8qIHdoZW4gd2UgYXJyaXZlIGhlcmUsIGNvdW50IGNvbnRhaW5zIHRoZSBudW1iZXIgb2YKICAgICAgICAgICAgICAgIG1hdGNoZXMsIGFuZCBjdHgtPnB0ciBwb2ludHMgdG8gdGhlIHRhaWwgb2YgdGhlIHRhcmdldApAQCAtMTA1NCw4ICsxMDMwLDkgQEAKICAgICAgICAgICAgICAgICBjdHgtPnUuY2hyID0gY3R4LT5wYXR0ZXJuW2N0eC0+cGF0dGVyblswXSsxXTsKICAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChjdHgtPmNvdW50ID49IChQeV9zc2l6ZV90KSBjdHgtPnBhdHRlcm5bMV0gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdHgtPnB0ciA+PSBlbmQgfHwgKmN0eC0+cHRyICE9IGN0eC0+dS5jaHIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ci0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN0eC0+cHRyID49IGVuZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgIT0gY3R4LT51LmNocikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyIC09IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y291bnQtLTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAoY3R4LT5jb3VudCA8IChQeV9zc2l6ZV90KSBjdHgtPnBhdHRlcm5bMV0pCkBAIC0xMDcwLDcgKzEwNDcsNyBAQAogCiAgICAgICAgICAgICAgICAgICAgIExBU1RNQVJLX1JFU1RPUkUoKTsKIAotICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ci0tOworICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciAtPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgIGN0eC0+Y291bnQtLTsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTEwODQsNyArMTA2MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBSRVRVUk5fT05fRVJST1IocmV0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9TVUNDRVNTOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLS07CisgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyIC09IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudC0tOwogICAgICAgICAgICAgICAgICAgICBMQVNUTUFSS19SRVNUT1JFKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTEwNCw3ICsxMDgxLDcgQEAKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfE1JTl9SRVBFQVRfT05FICVkICVkXG4iLCBjdHgtPnBhdHRlcm4sIGN0eC0+cHRyLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cGF0dGVyblsxXSwgY3R4LT5wYXR0ZXJuWzJdKSk7CiAKLSAgICAgICAgICAgIGlmIChjdHgtPnB0ciArIGN0eC0+cGF0dGVyblsxXSA+IGVuZCkKKyAgICAgICAgICAgIGlmIChjdHgtPnB0ciArIHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+cGF0dGVyblsxXSA+IGVuZCkKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsgLyogY2Fubm90IG1hdGNoICovCiAKICAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0cjsKQEAgLTExMjEsNyArMTA5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgIC8qIGFkdmFuY2UgcGFzdCBtaW5pbXVtIG1hdGNoZXMgb2YgcmVwZWF0ICovCiAgICAgICAgICAgICAgICAgY3R4LT5jb3VudCA9IHJldDsKLSAgICAgICAgICAgICAgICBjdHgtPnB0ciArPSBjdHgtPmNvdW50OworICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+Y291bnQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjdHgtPnBhdHRlcm5bY3R4LT5wYXR0ZXJuWzBdXSA9PSBTUkVfT1BfU1VDQ0VTUykgewpAQCAtMTE0OCw3ICsxMTI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChyZXQgPT0gMSk7Ci0gICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyKys7CisgICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgY3R4LT5jb3VudCsrOwogICAgICAgICAgICAgICAgICAgICBMQVNUTUFSS19SRVNUT1JFKCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMyMCwxNCArMTI5NywxNiBAQAogICAgICAgICAgICAgICAgIGlmIChncm91cHJlZiA+PSBzdGF0ZS0+bGFzdG1hcmspIHsKICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVIqIHAgPSAoU1JFX0NIQVIqKSBzdGF0ZS0+bWFya1tncm91cHJlZl07Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSKiBlID0gKFNSRV9DSEFSKikgc3RhdGUtPm1hcmtbZ3JvdXByZWYrMV07CisgICAgICAgICAgICAgICAgICAgIGNoYXIqIHAgPSAoY2hhciopIHN0YXRlLT5tYXJrW2dyb3VwcmVmXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogZSA9IChjaGFyKikgc3RhdGUtPm1hcmtbZ3JvdXByZWYrMV07CiAgICAgICAgICAgICAgICAgICAgIGlmICghcCB8fCAhZSB8fCBlIDwgcCkKICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwogICAgICAgICAgICAgICAgICAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdHgtPnB0ciA+PSBlbmQgfHwgKmN0eC0+cHRyICE9ICpwKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkgIT0gU1JFX0NIQVJHRVQoc3RhdGUsIHAsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9GQUlMVVJFOwotICAgICAgICAgICAgICAgICAgICAgICAgcCsrOyBjdHgtPnB0cisrOworICAgICAgICAgICAgICAgICAgICAgICAgcCArPSBzdGF0ZS0+Y2hhcnNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMzQ0LDE1ICsxMzIzLDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKGdyb3VwcmVmID49IHN0YXRlLT5sYXN0bWFyaykgewogICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBTUkVfQ0hBUiogcCA9IChTUkVfQ0hBUiopIHN0YXRlLT5tYXJrW2dyb3VwcmVmXTsKLSAgICAgICAgICAgICAgICAgICAgU1JFX0NIQVIqIGUgPSAoU1JFX0NIQVIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciogcCA9IChjaGFyKikgc3RhdGUtPm1hcmtbZ3JvdXByZWZdOworICAgICAgICAgICAgICAgICAgICBjaGFyKiBlID0gKGNoYXIqKSBzdGF0ZS0+bWFya1tncm91cHJlZisxXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFwIHx8ICFlIHx8IGUgPCBwKQogICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN0eC0+cHRyID49IGVuZCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sb3dlcigqY3R4LT5wdHIpICE9IHN0YXRlLT5sb3dlcigqcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxvd2VyKFNSRV9DSEFSR0VUKHN0YXRlLCBjdHgtPnB0ciwgMCkpICE9IHN0YXRlLT5sb3dlcigqcCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVUVVJOX0ZBSUxVUkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwKys7IGN0eC0+cHRyKys7CisgICAgICAgICAgICAgICAgICAgICAgICBwKys7CisgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnB0ciArPSBzdGF0ZS0+Y2hhcnNpemU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xMzg2LDcgKzEzNjYsNyBAQAogICAgICAgICAgICAgLyogPEFTU0VSVD4gPHNraXA+IDxiYWNrPiA8cGF0dGVybj4gKi8KICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfEFTU0VSVCAlZFxuIiwgY3R4LT5wYXR0ZXJuLAogICAgICAgICAgICAgICAgICAgIGN0eC0+cHRyLCBjdHgtPnBhdHRlcm5bMV0pKTsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0ciAtIGN0eC0+cGF0dGVyblsxXTsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBjdHgtPnB0ciAtIHN0YXRlLT5jaGFyc2l6ZSAqIGN0eC0+cGF0dGVyblsxXTsKICAgICAgICAgICAgIGlmIChzdGF0ZS0+cHRyIDwgc3RhdGUtPmJlZ2lubmluZykKICAgICAgICAgICAgICAgICBSRVRVUk5fRkFJTFVSRTsKICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9BU1NFUlQsIGp1bXBfYXNzZXJ0LCBjdHgtPnBhdHRlcm4rMik7CkBAIC0xMzk5LDcgKzEzNzksNyBAQAogICAgICAgICAgICAgLyogPEFTU0VSVF9OT1Q+IDxza2lwPiA8YmFjaz4gPHBhdHRlcm4+ICovCiAgICAgICAgICAgICBUUkFDRSgoInwlcHwlcHxBU1NFUlRfTk9UICVkXG4iLCBjdHgtPnBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgY3R4LT5wdHIsIGN0eC0+cGF0dGVyblsxXSkpOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gY3R4LT5wYXR0ZXJuWzFdOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IGN0eC0+cHRyIC0gc3RhdGUtPmNoYXJzaXplICogY3R4LT5wYXR0ZXJuWzFdOwogICAgICAgICAgICAgaWYgKHN0YXRlLT5wdHIgPj0gc3RhdGUtPmJlZ2lubmluZykgewogICAgICAgICAgICAgICAgIERPX0pVTVAoSlVNUF9BU1NFUlRfTk9ULCBqdW1wX2Fzc2VydF9ub3QsIGN0eC0+cGF0dGVybisyKTsKICAgICAgICAgICAgICAgICBpZiAocmV0KSB7CkBAIC0xNDgxLDggKzE0NjEsOCBAQAogTE9DQUwoUHlfc3NpemVfdCkKIFNSRV9TRUFSQ0goU1JFX1NUQVRFKiBzdGF0ZSwgU1JFX0NPREUqIHBhdHRlcm4pCiB7Ci0gICAgU1JFX0NIQVIqIHB0ciA9IChTUkVfQ0hBUiAqKXN0YXRlLT5zdGFydDsKLSAgICBTUkVfQ0hBUiogZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICBjaGFyKiBwdHIgPSAoY2hhciopc3RhdGUtPnN0YXJ0OworICAgIGNoYXIqIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgIFB5X3NzaXplX3Qgc3RhdHVzID0gMDsKICAgICBQeV9zc2l6ZV90IHByZWZpeF9sZW4gPSAwOwogICAgIFB5X3NzaXplX3QgcHJlZml4X3NraXAgPSAwOwpAQCAtMTUwMCw5ICsxNDgwLDkgQEAKICAgICAgICAgaWYgKHBhdHRlcm5bM10gPiAxKSB7CiAgICAgICAgICAgICAvKiBhZGp1c3QgZW5kIHBvaW50IChidXQgbWFrZSBzdXJlIHdlIGxlYXZlIGF0IGxlYXN0IG9uZQogICAgICAgICAgICAgICAgY2hhcmFjdGVyIGluIHRoZXJlLCBzbyBsaXRlcmFsIHNlYXJjaCB3aWxsIHdvcmspICovCi0gICAgICAgICAgICBlbmQgLT0gcGF0dGVyblszXS0xOworICAgICAgICAgICAgZW5kIC09IChwYXR0ZXJuWzNdLTEpICogc3RhdGUtPmNoYXJzaXplOwogICAgICAgICAgICAgaWYgKGVuZCA8PSBwdHIpCi0gICAgICAgICAgICAgICAgZW5kID0gcHRyKzE7CisgICAgICAgICAgICAgICAgZW5kID0gcHRyICsgc3RhdGUtPmNoYXJzaXplOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fUFJFRklYKSB7CkBAIC0xNTI4LDEwICsxNTA4LDEwIEBACiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBrbm93biBwcmVmaXguICB1c2UgdGhlIG92ZXJsYXAKICAgICAgICAgICAgdGFibGUgdG8gc2tpcCBmb3J3YXJkIGFzIGZhc3QgYXMgd2UgcG9zc2libHkgY2FuICovCiAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7Ci0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIGVuZCA9IChjaGFyICopc3RhdGUtPmVuZDsKICAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgewogICAgICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgICAgIGlmICgoU1JFX0NPREUpIHB0clswXSAhPSBwcmVmaXhbaV0pIHsKKyAgICAgICAgICAgICAgICBpZiAoKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSAhPSBwcmVmaXhbaV0pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTE1NDAsOCArMTUyMCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgrK2kgPT0gcHJlZml4X2xlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogZm91bmQgYSBwb3RlbnRpYWwgbWF0Y2ggKi8KICAgICAgICAgICAgICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBTQ0FOXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0ciArIDEgLSBwcmVmaXhfbGVuOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciArIDEgLSBwcmVmaXhfbGVuICsgcHJlZml4X3NraXA7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBwdHIgLSAocHJlZml4X2xlbiAtIDEpICogc3RhdGUtPmNoYXJzaXplOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciAtIChwcmVmaXhfbGVuIC0gcHJlZml4X3NraXAgLSAxKSAqIHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybiArIDIqcHJlZml4X3NraXApOwpAQCAtMTU1Myw3ICsxNTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICBwdHIgKz0gc3RhdGUtPmNoYXJzaXplOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE1NjMsMTUgKzE1NDMsMTYgQEAKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyLiAgdGhpcyBpcyB1c2VkCiAgICAgICAgICAgIGZvciBzaG9ydCBwcmVmaXhlcywgYW5kIGlmIGZhc3Qgc2VhcmNoIGlzIGRpc2FibGVkICovCiAgICAgICAgIFNSRV9DT0RFIGNociA9IHBhdHRlcm5bMV07Ci0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7CisgICAgICAgIGVuZCA9IChjaGFyKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmIChTUkVfQ09ERSkgcHRyWzBdICE9IGNocikKLSAgICAgICAgICAgICAgICBwdHIrKzsKKyAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgKFNSRV9DT0RFKSBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSAhPSBjaHIpCisgICAgICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGlmIChwdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOwogICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOwotICAgICAgICAgICAgc3RhdGUtPnB0ciA9ICsrcHRyOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKKyAgICAgICAgICAgIHN0YXRlLT5wdHIgPSBwdHI7CiAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBTUkVfSU5GT19MSVRFUkFMKQogICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiB3ZSBnb3QgYWxsIG9mIGl0ICovCiAgICAgICAgICAgICBzdGF0dXMgPSBTUkVfTUFUQ0goc3RhdGUsIHBhdHRlcm4gKyAyKTsKQEAgLTE1ODAsMTAgKzE1NjEsMTAgQEAKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoY2hhcnNldCkgewogICAgICAgICAvKiBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgY2hhcmFjdGVyIGZyb20gYSBrbm93biBzZXQgKi8KLSAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgZW5kID0gKGNoYXIqKXN0YXRlLT5lbmQ7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIHdoaWxlIChwdHIgPCBlbmQgJiYgIVNSRV9DSEFSU0VUKGNoYXJzZXQsIHB0clswXSkpCi0gICAgICAgICAgICAgICAgcHRyKys7CisgICAgICAgICAgICB3aGlsZSAocHRyIDwgZW5kICYmICFTUkVfQ0hBUlNFVChjaGFyc2V0LCBTUkVfQ0hBUkdFVChzdGF0ZSwgcHRyLCAwKSkpCisgICAgICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIGlmIChwdHIgPj0gZW5kKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIENIQVJTRVRcbiIsIHBhdHRlcm4sIHB0cikpOwpAQCAtMTU5MiwxMyArMTU3MywxNCBAQAogICAgICAgICAgICAgc3RhdHVzID0gU1JFX01BVENIKHN0YXRlLCBwYXR0ZXJuKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIHB0cisrOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICAvKiBnZW5lcmFsIGNhc2UgKi8KICAgICAgICAgd2hpbGUgKHB0ciA8PSBlbmQpIHsKICAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSFxuIiwgcGF0dGVybiwgcHRyKSk7Ci0gICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBzdGF0ZS0+cHRyID0gcHRyKys7CisgICAgICAgICAgICBzdGF0ZS0+c3RhcnQgPSBzdGF0ZS0+cHRyID0gcHRyOworICAgICAgICAgICAgcHRyICs9IHN0YXRlLT5jaGFyc2l6ZTsKICAgICAgICAgICAgIHN0YXR1cyA9IFNSRV9NQVRDSChzdGF0ZSwgcGF0dGVybik7CiAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjA3LDE2ICsxNTg5LDYgQEAKICAgICByZXR1cm4gc3RhdHVzOwogfQogCi1MT0NBTChpbnQpCi1TUkVfTElURVJBTF9URU1QTEFURShTUkVfQ0hBUiogcHRyLCBQeV9zc2l6ZV90IGxlbikKLXsKLSAgICAvKiBjaGVjayBpZiBnaXZlbiBzdHJpbmcgaXMgYSBsaXRlcmFsIHRlbXBsYXRlIChpLmUuIG5vIGVzY2FwZXMpICovCi0gICAgd2hpbGUgKGxlbi0tID4gMCkKLSAgICAgICAgaWYgKCpwdHIrKyA9PSAnXFwnKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KICNpZiAhZGVmaW5lZChTUkVfUkVDVVJTSVZFKQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwpAQCAtMTYyNCw3ICsxNTk2LDI0IEBACiAKIC8qIHNlZSBzcmUuaCBmb3Igb2JqZWN0IGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fbmV3X21hdGNoKFBhdHRlcm5PYmplY3QqLCBTUkVfU1RBVEUqLCBpbnQpOwotc3RhdGljIFB5T2JqZWN0KnBhdHRlcm5fc2Nhbm5lcihQYXR0ZXJuT2JqZWN0KiwgUHlPYmplY3QqKTsKK3N0YXRpYyBQeU9iamVjdCpwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCosIFB5T2JqZWN0KiwgUHlPYmplY3QqIGt3KTsKKworc3RhdGljIGludAorc3JlX2xpdGVyYWxfdGVtcGxhdGUoaW50IGNoYXJzaXplLCBjaGFyKiBwdHIsIFB5X3NzaXplX3QgbGVuKQoreworICAgIC8qIGNoZWNrIGlmIGdpdmVuIHN0cmluZyBpcyBhIGxpdGVyYWwgdGVtcGxhdGUgKGkuZS4gbm8gZXNjYXBlcykgKi8KKyAgICBzdHJ1Y3QgeworICAgICAgICBpbnQgY2hhcnNpemU7CisgICAgfSBzdGF0ZSA9IHsKKyAgICAgICAgY2hhcnNpemUKKyAgICB9OworICAgIHdoaWxlIChsZW4tLSA+IDApIHsKKyAgICAgICAgaWYgKFNSRV9DSEFSR0VUKCgmc3RhdGUpLCBwdHIsIDApID09ICdcXCcpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcHRyICs9IGNoYXJzaXplOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNyZV9jb2Rlc2l6ZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKQEAgLTE2NDEsMTEgKzE2MzAsNyBAQAogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0xPQ0FMRSkKICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzcmVfbG93ZXJfbG9jYWxlKGNoYXJhY3RlcikpOwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpCi0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpIiwgc3JlX2xvd2VyX3VuaWNvZGUoY2hhcmFjdGVyKSk7Ci0jZWxzZQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcl9sb2NhbGUoY2hhcmFjdGVyKSk7Ci0jZW5kaWYKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNyZV9sb3dlcihjaGFyYWN0ZXIpKTsKIH0KIApAQCAtMTY2NCw3ICsxNjQ5LDkgQEAKIH0KIAogc3RhdGljIHZvaWQqCi1nZXRzdHJpbmcoUHlPYmplY3QqIHN0cmluZywgUHlfc3NpemVfdCogcF9sZW5ndGgsIGludCogcF9jaGFyc2l6ZSwgUHlfYnVmZmVyICp2aWV3KQorZ2V0c3RyaW5nKFB5T2JqZWN0KiBzdHJpbmcsIFB5X3NzaXplX3QqIHBfbGVuZ3RoLAorICAgICAgICAgIGludCogcF9sb2dpY2FsX2NoYXJzaXplLCBpbnQqIHBfY2hhcnNpemUsCisgICAgICAgICAgUHlfYnVmZmVyICp2aWV3KQogewogICAgIC8qIGdpdmVuIGEgcHl0aG9uIG9iamVjdCwgcmV0dXJuIGEgZGF0YSBwb2ludGVyLCBhIGxlbmd0aCAoaW4KICAgICAgICBjaGFyYWN0ZXJzKSwgYW5kIGEgY2hhcmFjdGVyIHNpemUuICByZXR1cm4gTlVMTCBpZiB0aGUgb2JqZWN0CkBAIC0xNjc4LDEzICsxNjY1LDE2IEBACiAgICAgLyogVW5pY29kZSBvYmplY3RzIGRvIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgQVBJLiBTbywgZ2V0IHRoZSBkYXRhCiAgICAgICAgZGlyZWN0bHkgaW5zdGVhZC4gKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpIHsKLSAgICAgICAgcHRyID0gKHZvaWQgKilQeVVuaWNvZGVfQVNfREFUQShzdHJpbmcpOwotICAgICAgICAqcF9sZW5ndGggPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyaW5nKTsKLSAgICAgICAgKnBfY2hhcnNpemUgPSBzaXplb2YoUHlfVU5JQ09ERSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBwdHIgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgICAgICAqcF9sZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOworICAgICAgICAqcF9jaGFyc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7CisgICAgICAgICpwX2xvZ2ljYWxfY2hhcnNpemUgPSA0OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAotICAgIC8qIGdldCBwb2ludGVyIHRvIHN0cmluZyBidWZmZXIgKi8KKyAgICAvKiBnZXQgcG9pbnRlciB0byBieXRlIHN0cmluZyBidWZmZXIgKi8KICAgICB2aWV3LT5sZW4gPSAtMTsKICAgICBidWZmZXIgPSBQeV9UWVBFKHN0cmluZyktPnRwX2FzX2J1ZmZlcjsKICAgICBpZiAoIWJ1ZmZlciB8fCAhYnVmZmVyLT5iZl9nZXRidWZmZXIgfHwKQEAgLTE3MDcsMTAgKzE2OTcsNiBAQAogCiAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3RyaW5nKSB8fCBieXRlcyA9PSBzaXplKQogICAgICAgICBjaGFyc2l6ZSA9IDE7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCi0gICAgZWxzZSBpZiAoYnl0ZXMgPT0gKFB5X3NzaXplX3QpIChzaXplICogc2l6ZW9mKFB5X1VOSUNPREUpKSkKLSAgICAgICAgY2hhcnNpemUgPSBzaXplb2YoUHlfVU5JQ09ERSk7Ci0jZW5kaWYKICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ1ZmZlciBzaXplIG1pc21hdGNoIik7CiAgICAgICAgIGdvdG8gZXJyOwpAQCAtMTcxOCw2ICsxNzA0LDcgQEAKIAogICAgICpwX2xlbmd0aCA9IHNpemU7CiAgICAgKnBfY2hhcnNpemUgPSBjaGFyc2l6ZTsKKyAgICAqcF9sb2dpY2FsX2NoYXJzaXplID0gY2hhcnNpemU7CiAKICAgICBpZiAocHRyID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLApAQCAtMTczOCw3ICsxNzI1LDcgQEAKICAgICAvKiBwcmVwYXJlIHN0YXRlIG9iamVjdCAqLwogCiAgICAgUHlfc3NpemVfdCBsZW5ndGg7Ci0gICAgaW50IGNoYXJzaXplOworICAgIGludCBsb2dpY2FsX2NoYXJzaXplLCBjaGFyc2l6ZTsKICAgICB2b2lkKiBwdHI7CiAKICAgICBtZW1zZXQoc3RhdGUsIDAsIHNpemVvZihTUkVfU1RBVEUpKTsKQEAgLTE3NDcsMTggKzE3MzQsMTggQEAKICAgICBzdGF0ZS0+bGFzdGluZGV4ID0gLTE7CiAKICAgICBzdGF0ZS0+YnVmZmVyLmJ1ZiA9IE5VTEw7Ci0gICAgcHRyID0gZ2V0c3RyaW5nKHN0cmluZywgJmxlbmd0aCwgJmNoYXJzaXplLCAmc3RhdGUtPmJ1ZmZlcik7CisgICAgcHRyID0gZ2V0c3RyaW5nKHN0cmluZywgJmxlbmd0aCwgJmxvZ2ljYWxfY2hhcnNpemUsICZjaGFyc2l6ZSwgJnN0YXRlLT5idWZmZXIpOwogICAgIGlmICghcHRyKQogICAgICAgICBnb3RvIGVycjsKIAotICAgIGlmIChjaGFyc2l6ZSA9PSAxICYmIHBhdHRlcm4tPmNoYXJzaXplID4gMSkgeworICAgIGlmIChsb2dpY2FsX2NoYXJzaXplID09IDEgJiYgcGF0dGVybi0+bG9naWNhbF9jaGFyc2l6ZSA+IDEpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLQkJCSJjYW4ndCB1c2UgYSBzdHJpbmcgcGF0dGVybiBvbiBhIGJ5dGVzLWxpa2Ugb2JqZWN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdCIpOwogICAgICAgICBnb3RvIGVycjsKICAgICB9Ci0gICAgaWYgKGNoYXJzaXplID4gMSAmJiBwYXR0ZXJuLT5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKGxvZ2ljYWxfY2hhcnNpemUgPiAxICYmIHBhdHRlcm4tPmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotCQkJImNhbid0IHVzZSBhIGJ5dGVzIHBhdHRlcm4gb24gYSBzdHJpbmctbGlrZSBvYmplY3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgYSBieXRlcyBwYXR0ZXJuIG9uIGEgc3RyaW5nLWxpa2Ugb2JqZWN0Iik7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIApAQCAtMTc3Myw2ICsxNzYwLDcgQEAKICAgICBlbHNlIGlmIChlbmQgPiBsZW5ndGgpCiAgICAgICAgIGVuZCA9IGxlbmd0aDsKIAorICAgIHN0YXRlLT5sb2dpY2FsX2NoYXJzaXplID0gbG9naWNhbF9jaGFyc2l6ZTsKICAgICBzdGF0ZS0+Y2hhcnNpemUgPSBjaGFyc2l6ZTsKIAogICAgIHN0YXRlLT5iZWdpbm5pbmcgPSBwdHI7CkBAIC0xNzg4LDExICsxNzc2LDcgQEAKICAgICBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUpCiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl9sb2NhbGU7CiAgICAgZWxzZSBpZiAocGF0dGVybi0+ZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKQotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0ZS0+bG93ZXIgPSBzcmVfbG93ZXJfdW5pY29kZTsKLSNlbHNlCi0gICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcl9sb2NhbGU7Ci0jZW5kaWYKICAgICBlbHNlCiAgICAgICAgIHN0YXRlLT5sb3dlciA9IHNyZV9sb3dlcjsKIApAQCAtMTg5OSwxMiArMTg4MywxMCBAQAogCiAgICAgVFJBQ0UoKCJ8JXB8JXB8TUFUQ0hcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CiAKLSAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgc3RhdHVzID0gc3JlX21hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdW1hdGNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgIH0KIAogICAgIFRSQUNFKCgifCVwfCVwfEVORFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKQEAgLTE5MzYsMTIgKzE5MTgsMTAgQEAKIAogICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSFxuIiwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpLCBzdGF0ZS5wdHIpKTsKIAotICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICB9CiAKICAgICBUUkFDRSgoInwlcHwlcHxFTkRcbiIsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSwgc3RhdGUucHRyKSk7CkBAIC0yMDgzLDE2ICsyMDYzLDE0IEBACiAKICAgICAgICAgc3RhdGUucHRyID0gc3RhdGUuc3RhcnQ7CiAKLSAgICAgICAgaWYgKHN0YXRlLmNoYXJzaXplID09IDEpIHsKKyAgICAgICAgaWYgKHN0YXRlLmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3NlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfdXNlYXJjaCgmc3RhdGUsIFBhdHRlcm5PYmplY3RfR2V0Q29kZShzZWxmKSk7Ci0jZW5kaWYKICAgICAgICAgfQogCi0JaWYgKFB5RXJyX09jY3VycmVkKCkpCi0JICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICBpZiAoc3RhdHVzIDw9IDApIHsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gMCkKQEAgLTIxNTQsMTMgKzIxMzIsMTMgQEAKIAogI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDIwMjAwMDAKIHN0YXRpYyBQeU9iamVjdCoKLXBhdHRlcm5fZmluZGl0ZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MpCitwYXR0ZXJuX2ZpbmRpdGVyKFBhdHRlcm5PYmplY3QqIHBhdHRlcm4sIFB5T2JqZWN0KiBhcmdzLCBQeU9iamVjdCoga3cpCiB7CiAgICAgUHlPYmplY3QqIHNjYW5uZXI7CiAgICAgUHlPYmplY3QqIHNlYXJjaDsKICAgICBQeU9iamVjdCogaXRlcmF0b3I7CiAKLSAgICBzY2FubmVyID0gcGF0dGVybl9zY2FubmVyKHBhdHRlcm4sIGFyZ3MpOworICAgIHNjYW5uZXIgPSBwYXR0ZXJuX3NjYW5uZXIocGF0dGVybiwgYXJncywga3cpOwogICAgIGlmICghc2Nhbm5lcikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTIyMTMsMTYgKzIxOTEsMTQgQEAKIAogICAgICAgICBzdGF0ZS5wdHIgPSBzdGF0ZS5zdGFydDsKIAotICAgICAgICBpZiAoc3RhdGUuY2hhcnNpemUgPT0gMSkgeworICAgICAgICBpZiAoc3RhdGUubG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBkZWZpbmVkKEhBVkVfVU5JQ09ERSkKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKCZzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYpKTsKLSNlbmRpZgogICAgICAgICB9CiAKLQlpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLQkgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGlmIChzdGF0dXMgPD0gMCkgewogICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSAwKQpAQCAtMjMwMyw3ICsyMjc5LDcgQEAKICAgICBpbnQgc3RhdHVzOwogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeV9zc2l6ZV90IGksIGIsIGU7Ci0gICAgaW50IGJpbnQ7CisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemUsIGNoYXJzaXplOwogICAgIGludCBmaWx0ZXJfaXNfY2FsbGFibGU7CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAKQEAgLTIzMTYsMTYgKzIyOTIsMTAgQEAKICAgICAgICAgLyogaWYgbm90IGNhbGxhYmxlLCBjaGVjayBpZiBpdCdzIGEgbGl0ZXJhbCBzdHJpbmcgKi8KICAgICAgICAgaW50IGxpdGVyYWw7CiAgICAgICAgIHZpZXcuYnVmID0gTlVMTDsKLSAgICAgICAgcHRyID0gZ2V0c3RyaW5nKHB0ZW1wbGF0ZSwgJm4sICZiaW50LCAmdmlldyk7Ci0gICAgICAgIGIgPSBiaW50OworICAgICAgICBwdHIgPSBnZXRzdHJpbmcocHRlbXBsYXRlLCAmbiwgJmxvZ2ljYWxfY2hhcnNpemUsICZjaGFyc2l6ZSwgJnZpZXcpOworICAgICAgICBiID0gY2hhcnNpemU7CiAgICAgICAgIGlmIChwdHIpIHsKLSAgICAgICAgICAgIGlmIChiID09IDEpIHsKLQkJICAgIGxpdGVyYWwgPSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZSgodW5zaWduZWQgY2hhciAqKXB0ciwgbik7Ci0gICAgICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQotCQkgICAgbGl0ZXJhbCA9IHNyZV91bGl0ZXJhbF90ZW1wbGF0ZSgoUHlfVU5JQ09ERSAqKXB0ciwgbik7Ci0jZW5kaWYKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpdGVyYWwgPSBzcmVfbGl0ZXJhbF90ZW1wbGF0ZShiLCBwdHIsIG4pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIGxpdGVyYWwgPSAwOwpAQCAtMjM2OSwxNiArMjMzOSwxNCBAQAogCiAgICAgICAgIHN0YXRlLnB0ciA9IHN0YXRlLnN0YXJ0OwogCi0gICAgICAgIGlmIChzdGF0ZS5jaGFyc2l6ZSA9PSAxKSB7CisgICAgICAgIGlmIChzdGF0ZS5sb2dpY2FsX2NoYXJzaXplID09IDEpIHsKICAgICAgICAgICAgIHN0YXR1cyA9IHNyZV9zZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwogICAgICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICAgICAgc3RhdHVzID0gc3JlX3VzZWFyY2goJnN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZikpOwotI2VuZGlmCiAgICAgICAgIH0KIAotCWlmIChQeUVycl9PY2N1cnJlZCgpKQotCSAgICBnb3RvIGVycm9yOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgICAgaWYgKHN0YXR1cyA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoc3RhdHVzID09IDApCkBAIC0yNTk2LDIyICsyNTY0LDIyIEBACiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwYXR0ZXJuX21ldGhvZHNbXSA9IHsKICAgICB7Im1hdGNoIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX21hdGNoLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX21hdGNoX2RvY30sCisgICAgICAgIHBhdHRlcm5fbWF0Y2hfZG9jfSwKICAgICB7InNlYXJjaCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zZWFyY2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fc2VhcmNoX2RvY30sCisgICAgICAgIHBhdHRlcm5fc2VhcmNoX2RvY30sCiAgICAgeyJzdWIiLCAoUHlDRnVuY3Rpb24pIHBhdHRlcm5fc3ViLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3N1Yl9kb2N9LAorICAgICAgICBwYXR0ZXJuX3N1Yl9kb2N9LAogICAgIHsic3VibiIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zdWJuLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLQlwYXR0ZXJuX3N1Ym5fZG9jfSwKKyAgICAgICAgcGF0dGVybl9zdWJuX2RvY30sCiAgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCi0JcGF0dGVybl9zcGxpdF9kb2N9LAorICAgICAgICBwYXR0ZXJuX3NwbGl0X2RvY30sCiAgICAgeyJmaW5kYWxsIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRhbGwsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAotCXBhdHRlcm5fZmluZGFsbF9kb2N9LAorICAgICAgICBwYXR0ZXJuX2ZpbmRhbGxfZG9jfSwKICNpZiBQWV9WRVJTSU9OX0hFWCA+PSAweDAyMDIwMDAwCi0gICAgeyJmaW5kaXRlciIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9maW5kaXRlciwgTUVUSF9WQVJBUkdTLAotCXBhdHRlcm5fZmluZGl0ZXJfZG9jfSwKKyAgICB7ImZpbmRpdGVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2ZpbmRpdGVyLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgICAgcGF0dGVybl9maW5kaXRlcl9kb2N9LAogI2VuZGlmCi0gICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU30sCisgICAgeyJzY2FubmVyIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX3NjYW5uZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7Il9fY29weV9fIiwgKFB5Q0Z1bmN0aW9uKSBwYXR0ZXJuX2NvcHksIE1FVEhfTk9BUkdTfSwKICAgICB7Il9fZGVlcGNvcHlfXyIsIChQeUNGdW5jdGlvbikgcGF0dGVybl9kZWVwY29weSwgTUVUSF9PfSwKICAgICB7TlVMTCwgTlVMTH0KQEAgLTI2MzAsMzEgKzI1OTgsMzEgQEAKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKICAgICBzaXplb2YoUGF0dGVybk9iamVjdCksIHNpemVvZihTUkVfQ09ERSksCi0gICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLAkvKiB0cF9kZWFsbG9jICovCi0gICAgMCwJCQkJCS8qIHRwX3ByaW50ICovCi0gICAgMCwJCQkJCS8qIHRwX2dldGF0dHIgKi8KLSAgICAwLAkJCQkJLyogdHBfc2V0YXR0ciAqLwotICAgIDAsCQkJCQkvKiB0cF9yZXNlcnZlZCAqLwotICAgIDAsCQkJCQkvKiB0cF9yZXByICovCi0gICAgMCwJCQkJCS8qIHRwX2FzX251bWJlciAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsCQkJCQkvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwJCQkJCS8qIHRwX2hhc2ggKi8KLSAgICAwLAkJCQkJLyogdHBfY2FsbCAqLwotICAgIDAsCQkJCQkvKiB0cF9zdHIgKi8KLSAgICAwLAkJCQkJLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLAkJCQkJLyogdHBfc2V0YXR0cm8gKi8KLSAgICAwLAkJCQkJLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULAkJCS8qIHRwX2ZsYWdzICovCi0gICAgcGF0dGVybl9kb2MsCQkJLyogdHBfZG9jICovCi0gICAgMCwJCQkJCS8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCQkJCS8qIHRwX2NsZWFyICovCi0gICAgMCwJCQkJCS8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgb2Zmc2V0b2YoUGF0dGVybk9iamVjdCwgd2Vha3JlZmxpc3QpLAkvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkJCQkvKiB0cF9pdGVyICovCi0gICAgMCwJCQkJCS8qIHRwX2l0ZXJuZXh0ICovCi0gICAgcGF0dGVybl9tZXRob2RzLAkJCS8qIHRwX21ldGhvZHMgKi8KLSAgICBwYXR0ZXJuX21lbWJlcnMsCQkJLyogdHBfbWVtYmVycyAqLworICAgIChkZXN0cnVjdG9yKXBhdHRlcm5fZGVhbGxvYywgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICBwYXR0ZXJuX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICBvZmZzZXRvZihQYXR0ZXJuT2JqZWN0LCB3ZWFrcmVmbGlzdCksICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgcGF0dGVybl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHBhdHRlcm5fbWVtYmVycywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KIH07CiAKIHN0YXRpYyBpbnQgX3ZhbGlkYXRlKFBhdHRlcm5PYmplY3QgKnNlbGYpOyAvKiBGb3J3YXJkICovCkBAIC0yNzA4LDExICsyNjc2LDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChwYXR0ZXJuID09IFB5X05vbmUpCisgICAgaWYgKHBhdHRlcm4gPT0gUHlfTm9uZSkgeworICAgICAgICBzZWxmLT5sb2dpY2FsX2NoYXJzaXplID0gLTE7CiAgICAgICAgIHNlbGYtPmNoYXJzaXplID0gLTE7CisgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9zc2l6ZV90IHBfbGVuZ3RoOwotICAgICAgICBpZiAoIWdldHN0cmluZyhwYXR0ZXJuLCAmcF9sZW5ndGgsICZzZWxmLT5jaGFyc2l6ZSwgJnNlbGYtPnZpZXcpKSB7CisgICAgICAgIGlmICghZ2V0c3RyaW5nKHBhdHRlcm4sICZwX2xlbmd0aCwgJnNlbGYtPmxvZ2ljYWxfY2hhcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5jaGFyc2l6ZSwgJnNlbGYtPnZpZXcpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtMjk3NywxMyArMjk0OCwxMyBAQAogICAgICAgICAgICAgICAgICAgIDxJTkZPPiA8MT1za2lwPiA8Mj1mbGFncz4gPDM9bWluPiA8ND1tYXg+OwogICAgICAgICAgICAgICAgICAgIElmIFNSRV9JTkZPX1BSRUZJWCBvciBTUkVfSU5GT19DSEFSU0VUIGlzIGluIHRoZSBmbGFncywKICAgICAgICAgICAgICAgICAgICBtb3JlIGZvbGxvd3MuICovCi0gICAgICAgICAgICAgICAgU1JFX0NPREUgZmxhZ3MsIG1pbiwgbWF4LCBpOworICAgICAgICAgICAgICAgIFNSRV9DT0RFIGZsYWdzLCBpOwogICAgICAgICAgICAgICAgIFNSRV9DT0RFICpuZXdjb2RlOwogICAgICAgICAgICAgICAgIEdFVF9TS0lQOwogICAgICAgICAgICAgICAgIG5ld2NvZGUgPSBjb2RlK3NraXAtMTsKICAgICAgICAgICAgICAgICBHRVRfQVJHOyBmbGFncyA9IGFyZzsKLSAgICAgICAgICAgICAgICBHRVRfQVJHOyBtaW4gPSBhcmc7Ci0gICAgICAgICAgICAgICAgR0VUX0FSRzsgbWF4ID0gYXJnOworICAgICAgICAgICAgICAgIEdFVF9BUkc7CisgICAgICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgICAgICAvKiBDaGVjayB0aGF0IG9ubHkgdmFsaWQgZmxhZ3MgYXJlIHByZXNlbnQgKi8KICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgfihTUkVfSU5GT19QUkVGSVggfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNSRV9JTkZPX0xJVEVSQUwgfApAQCAtMjk5OSw5ICsyOTcwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAvKiBWYWxpZGF0ZSB0aGUgcHJlZml4ICovCiAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fUFJFRklYKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNSRV9DT0RFIHByZWZpeF9sZW4sIHByZWZpeF9za2lwOworICAgICAgICAgICAgICAgICAgICBTUkVfQ09ERSBwcmVmaXhfbGVuOwogICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfbGVuID0gYXJnOwotICAgICAgICAgICAgICAgICAgICBHRVRfQVJHOyBwcmVmaXhfc2tpcCA9IGFyZzsKKyAgICAgICAgICAgICAgICAgICAgR0VUX0FSRzsKICAgICAgICAgICAgICAgICAgICAgLyogSGVyZSBjb21lcyB0aGUgcHJlZml4IHN0cmluZyAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoY29kZStwcmVmaXhfbGVuIDwgY29kZSB8fCBjb2RlK3ByZWZpeF9sZW4gPiBuZXdjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKQEAgLTMwNjUsMTAgKzMwMzYsOCBAQAogICAgICAgICAgICAgICAgIEdFVF9BUkc7IG1heCA9IGFyZzsKICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQogICAgICAgICAgICAgICAgICAgICBGQUlMOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAgICAgICAgIGlmIChtYXggPiA2NTUzNSkKICAgICAgICAgICAgICAgICAgICAgRkFJTDsKLSNlbmRpZgogICAgICAgICAgICAgICAgIGlmICghX3ZhbGlkYXRlX2lubmVyKGNvZGUsIGNvZGUrc2tpcC00LCBncm91cHMpKQogICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgIGNvZGUgKz0gc2tpcC00OwpAQCAtMzA4NiwxMCArMzA1NSw4IEBACiAgICAgICAgICAgICAgICAgR0VUX0FSRzsgbWF4ID0gYXJnOwogICAgICAgICAgICAgICAgIGlmIChtaW4gPiBtYXgpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCiAgICAgICAgICAgICAgICAgaWYgKG1heCA+IDY1NTM1KQogICAgICAgICAgICAgICAgICAgICBGQUlMOwotI2VuZGlmCiAgICAgICAgICAgICAgICAgaWYgKCFfdmFsaWRhdGVfaW5uZXIoY29kZSwgY29kZStza2lwLTMsIGdyb3VwcykpCiAgICAgICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICAgICAgY29kZSArPSBza2lwLTM7CkBAIC0zMjUyLDggKzMyMTksOCBAQAogICAgIFB5X3NzaXplX3QgaTsKIAogICAgIGlmIChpbmRleCA9PSBOVUxMKQotCS8qIERlZmF1bHQgdmFsdWUgKi8KLQlyZXR1cm4gMDsKKyAgICAgICAgLyogRGVmYXVsdCB2YWx1ZSAqLworICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2soaW5kZXgpKQogICAgICAgICByZXR1cm4gUHlMb25nX0FzU3NpemVfdChpbmRleCk7CkBAIC0zNTkzLDcgKzM1NjAsNyBAQAogbWF0Y2hfbGFzdGluZGV4X2dldChNYXRjaE9iamVjdCAqc2VsZikKIHsKICAgICBpZiAoc2VsZi0+bGFzdGluZGV4ID49IDApCi0JcmV0dXJuIFB5X0J1aWxkVmFsdWUoImkiLCBzZWxmLT5sYXN0aW5kZXgpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaSIsIHNlbGYtPmxhc3RpbmRleCk7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwogfQpAQCAtMzY0NiwzMiArMzYxMywzMiBAQAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLDApCiAgICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfTWF0Y2giLAogICAgIHNpemVvZihNYXRjaE9iamVjdCksIHNpemVvZihQeV9zc2l6ZV90KSwKLSAgICAoZGVzdHJ1Y3RvciltYXRjaF9kZWFsbG9jLAkvKiB0cF9kZWFsbG9jICovCi0gICAgMCwJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfc2V0YXR0ciAqLwotICAgIDAsCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJLyogdHBfcmVwciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX251bWJlciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsCQkJCS8qIHRwX2hhc2ggKi8KLSAgICAwLAkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJLyogdHBfc3RyICovCi0gICAgMCwJCQkJLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwJCS8qIHRwX2ZsYWdzICovCi0gICAgMCwJCQkJLyogdHBfZG9jICovCi0gICAgMCwJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkvKiB0cF9jbGVhciAqLwotICAgIDAsCQkJCS8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCQkJLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVyICovCi0gICAgMCwJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBtYXRjaF9tZXRob2RzLAkJLyogdHBfbWV0aG9kcyAqLwotICAgIG1hdGNoX21lbWJlcnMsCQkvKiB0cF9tZW1iZXJzICovCi0gICAgbWF0Y2hfZ2V0c2V0LCAgCSAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgKGRlc3RydWN0b3IpbWF0Y2hfZGVhbGxvYywgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBtYXRjaF9tZXRob2RzLCAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG1hdGNoX21lbWJlcnMsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgbWF0Y2hfZ2V0c2V0LCAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMzc2MCwxMiArMzcyNywxMCBAQAogCiAgICAgc3RhdGUtPnB0ciA9IHN0YXRlLT5zdGFydDsKIAotICAgIGlmIChzdGF0ZS0+Y2hhcnNpemUgPT0gMSkgeworICAgIGlmIChzdGF0ZS0+bG9naWNhbF9jaGFyc2l6ZSA9PSAxKSB7CiAgICAgICAgIHN0YXR1cyA9IHNyZV9tYXRjaChzdGF0ZSwgUGF0dGVybk9iamVjdF9HZXRDb2RlKHNlbGYtPnBhdHRlcm4pKTsKICAgICB9IGVsc2UgewotI2lmIGRlZmluZWQoSEFWRV9VTklDT0RFKQogICAgICAgICBzdGF0dXMgPSBzcmVfdW1hdGNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwotI2VuZGlmCiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM3OTMsMTIgKzM3NTgsMTAgQEAKIAogICAgIHN0YXRlLT5wdHIgPSBzdGF0ZS0+c3RhcnQ7CiAKLSAgICBpZiAoc3RhdGUtPmNoYXJzaXplID09IDEpIHsKKyAgICBpZiAoc3RhdGUtPmxvZ2ljYWxfY2hhcnNpemUgPT0gMSkgewogICAgICAgICBzdGF0dXMgPSBzcmVfc2VhcmNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwogICAgIH0gZWxzZSB7Ci0jaWYgZGVmaW5lZChIQVZFX1VOSUNPREUpCiAgICAgICAgIHN0YXR1cyA9IHNyZV91c2VhcmNoKHN0YXRlLCBQYXR0ZXJuT2JqZWN0X0dldENvZGUoc2VsZi0+cGF0dGVybikpOwotI2VuZGlmCiAgICAgfQogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM4MjIsNyArMzc4NSw3IEBACiAKICNkZWZpbmUgU0NBTl9PRkYoeCkgb2Zmc2V0b2YoU2Nhbm5lck9iamVjdCwgeCkKIHN0YXRpYyBQeU1lbWJlckRlZiBzY2FubmVyX21lbWJlcnNbXSA9IHsKLSAgICB7InBhdHRlcm4iLAlUX09CSkVDVCwJU0NBTl9PRkYocGF0dGVybiksCVJFQURPTkxZfSwKKyAgICB7InBhdHRlcm4iLCBUX09CSkVDVCwgU0NBTl9PRkYocGF0dGVybiksIFJFQURPTkxZfSwKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC0zODMxLDM1ICszNzk0LDM1IEBACiAgICAgIl8iIFNSRV9NT0RVTEUgIi5TUkVfU2Nhbm5lciIsCiAgICAgc2l6ZW9mKFNjYW5uZXJPYmplY3QpLCAwLAogICAgIChkZXN0cnVjdG9yKXNjYW5uZXJfZGVhbGxvYywvKiB0cF9kZWFsbG9jICovCi0gICAgMCwJCQkJLyogdHBfcHJpbnQgKi8KLSAgICAwLAkJCQkvKiB0cF9nZXRhdHRyICovCi0gICAgMCwJCQkJLyogdHBfc2V0YXR0ciAqLwotICAgIDAsCQkJCS8qIHRwX3Jlc2VydmVkICovCi0gICAgMCwJCQkJLyogdHBfcmVwciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX251bWJlciAqLwotICAgIDAsCQkJCS8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwJCQkJLyogdHBfYXNfbWFwcGluZyAqLwotICAgIDAsCQkJCS8qIHRwX2hhc2ggKi8KLSAgICAwLAkJCQkvKiB0cF9jYWxsICovCi0gICAgMCwJCQkJLyogdHBfc3RyICovCi0gICAgMCwJCQkJLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLAkJCQkvKiB0cF9zZXRhdHRybyAqLwotICAgIDAsCQkJCS8qIHRwX2FzX2J1ZmZlciAqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwJCS8qIHRwX2ZsYWdzICovCi0gICAgMCwJCQkJLyogdHBfZG9jICovCi0gICAgMCwJCQkJLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJCQkvKiB0cF9jbGVhciAqLwotICAgIDAsCQkJCS8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCQkJLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJCQkvKiB0cF9pdGVyICovCi0gICAgMCwJCQkJLyogdHBfaXRlcm5leHQgKi8KLSAgICBzY2FubmVyX21ldGhvZHMsCQkvKiB0cF9tZXRob2RzICovCi0gICAgc2Nhbm5lcl9tZW1iZXJzLAkJLyogdHBfbWVtYmVycyAqLwotICAgIDAsCQkJCS8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHNjYW5uZXJfbWV0aG9kcywgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgc2Nhbm5lcl9tZW1iZXJzLCAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCi1wYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MpCitwYXR0ZXJuX3NjYW5uZXIoUGF0dGVybk9iamVjdCogcGF0dGVybiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KiBrdykKIHsKICAgICAvKiBjcmVhdGUgc2VhcmNoIHN0YXRlIG9iamVjdCAqLwogCkBAIC0zODY4LDcgKzM4MzEsOSBAQAogICAgIFB5T2JqZWN0KiBzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydCA9IDA7CiAgICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98bm46c2Nhbm5lciIsICZzdHJpbmcsICZzdGFydCwgJmVuZCkpCisgICAgc3RhdGljIGNoYXIqIGt3bGlzdFtdID0geyAic291cmNlIiwgInBvcyIsICJlbmRwb3MiLCBOVUxMIH07CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3csICJPfG5uOnNjYW5uZXIiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBjcmVhdGUgc2Nhbm5lciBvYmplY3QgKi8KQEAgLTM4OTcsMTUgKzM4NjIsMTUgQEAKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc3JlbW9kdWxlID0gewotCVB5TW9kdWxlRGVmX0hFQURfSU5JVCwKLQkiXyIgU1JFX01PRFVMRSwKLQlOVUxMLAotCS0xLAotCV9mdW5jdGlvbnMsCi0JTlVMTCwKLQlOVUxMLAotCU5VTEwsCi0JTlVMTAorICAgICAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgICAgICJfIiBTUkVfTU9EVUxFLAorICAgICAgICBOVUxMLAorICAgICAgICAtMSwKKyAgICAgICAgX2Z1bmN0aW9ucywKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTCwKKyAgICAgICAgTlVMTAogfTsKIAogUHlNT0RJTklUX0ZVTkMgUHlJbml0X19zcmUodm9pZCkKQEAgLTM5MjEsNyArMzg4Niw3IEBACiAKICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZzcmVtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCi0gICAgCXJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKIAogICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU1JFX01BR0lDKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKaW5kZXggZTlkZThjYS4uYWQyMmM1MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrIGIvTW9kdWxlcy9fc3NsLmMKQEAgLTE4LDE2ICsxOCwyMSBAQAogCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgorI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1Moc2F2ZSkgXAorICAgIGRvIHsgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCkgeyAoc2F2ZSkgPSBQeUV2YWxfU2F2ZVRocmVhZCgpOyB9IH0gd2hpbGUgKDApCisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTX1Moc2F2ZSkgXAorICAgIGRvIHsgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCkgeyBQeUV2YWxfUmVzdG9yZVRocmVhZChzYXZlKTsgfSB9IHdoaWxlICgwKQogI2RlZmluZSBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTIHsgXAogICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqX3NhdmUgPSBOVUxMOyAgXAotICAgICAgICAgICAgaWYgKF9zc2xfbG9ja3NfY291bnQ+MCkge19zYXZlID0gUHlFdmFsX1NhdmVUaHJlYWQoKTt9Ci0jZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMgICAgIGlmIChfc3NsX2xvY2tzX2NvdW50PjApe1B5RXZhbF9SZXN0b3JlVGhyZWFkKF9zYXZlKX07Ci0jZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUyAgIGlmIChfc3NsX2xvY2tzX2NvdW50PjApe19zYXZlID0gUHlFdmFsX1NhdmVUaHJlYWQoKX07Ci0jZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTIGlmIChfc3NsX2xvY2tzX2NvdW50PjApe1B5RXZhbF9SZXN0b3JlVGhyZWFkKF9zYXZlKTt9IFwKLSAgICAgICAgIH0KKyAgICAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFNfUyhfc2F2ZSk7CisjZGVmaW5lIFB5U1NMX0JMT0NLX1RIUkVBRFMgICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTX1MoX3NhdmUpOworI2RlZmluZSBQeVNTTF9VTkJMT0NLX1RIUkVBRFMgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MoX3NhdmUpOworI2RlZmluZSBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUyBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKF9zYXZlKTsgfQogCiAjZWxzZSAgIC8qIG5vIFdJVEhfVEhSRUFEICovCiAKKyNkZWZpbmUgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHNhdmUpCisjZGVmaW5lIFB5U1NMX0VORF9BTExPV19USFJFQURTX1Moc2F2ZSkKICNkZWZpbmUgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogI2RlZmluZSBQeVNTTF9CTE9DS19USFJFQURTCiAjZGVmaW5lIFB5U1NMX1VOQkxPQ0tfVEhSRUFEUwpAQCAtNzEsNiArNzYsMTYgQEAKICAgICBQWV9TU0xfVkVSU0lPTl9UTFMxCiB9OwogCitzdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgeworICAgIGNvbnN0IGNoYXIgKm1uZW1vbmljOworICAgIGludCBsaWJyYXJ5LCByZWFzb247Cit9OworCitzdHJ1Y3QgcHlfc3NsX2xpYnJhcnlfY29kZSB7CisgICAgY29uc3QgY2hhciAqbGlicmFyeTsKKyAgICBpbnQgY29kZTsKK307CisKIC8qIEluY2x1ZGUgc3ltYm9scyBmcm9tIF9zb2NrZXQgbW9kdWxlICovCiAjaW5jbHVkZSAic29ja2V0bW9kdWxlLmgiCiAKQEAgLTkyLDggKzEwNywyMSBAQAogI2luY2x1ZGUgIm9wZW5zc2wvZXJyLmgiCiAjaW5jbHVkZSAib3BlbnNzbC9yYW5kLmgiCiAKKy8qIEluY2x1ZGUgZ2VuZXJhdGVkIGRhdGEgKGVycm9yIGNvZGVzKSAqLworI2luY2x1ZGUgIl9zc2xfZGF0YS5oIgorCiAvKiBTU0wgZXJyb3Igb2JqZWN0ICovCiBzdGF0aWMgUHlPYmplY3QgKlB5U1NMRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMWmVyb1JldHVybkVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3Q7CitzdGF0aWMgUHlPYmplY3QgKlB5U1NMU3lzY2FsbEVycm9yT2JqZWN0Oworc3RhdGljIFB5T2JqZWN0ICpQeVNTTEVPRkVycm9yT2JqZWN0OworCisvKiBFcnJvciBtYXBwaW5ncyAqLworc3RhdGljIFB5T2JqZWN0ICplcnJfY29kZXNfdG9fbmFtZXM7CitzdGF0aWMgUHlPYmplY3QgKmVycl9uYW1lc190b19jb2RlczsKK3N0YXRpYyBQeU9iamVjdCAqbGliX2NvZGVzX3RvX25hbWVzOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKIApAQCAtMTI0LDkgKzE1MiwzNSBAQAogIyB1bmRlZiBIQVZFX1NTTF9DVFhfQ0xFQVJfT1BUSU9OUwogI2VuZGlmCiAKKy8qIEluIGNhc2Ugb2YgJ3Rscy11bmlxdWUnIGl0IHdpbGwgYmUgMTIgYnl0ZXMgZm9yIFRMUywgMzYgYnl0ZXMgZm9yCisgKiBvbGRlciBTU0wsIGJ1dCBsZXQncyBiZSBzYWZlICovCisjZGVmaW5lIFB5U1NMX0NCX01BWExFTiAxMjgKKworLyogU1NMX2dldF9maW5pc2hlZCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuNSAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgwMDkwNTAwZkwKKyMgZGVmaW5lIEhBVkVfT1BFTlNTTF9GSU5JU0hFRCAxCisjZWxzZQorIyBkZWZpbmUgSEFWRV9PUEVOU1NMX0ZJTklTSEVEIDAKKyNlbmRpZgorCisvKiBFQ0RIIHN1cHBvcnQgZ290IGFkZGVkIHRvIE9wZW5TU0wgaW4gMC45LjggKi8KKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAwZkwgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19FQ0RIKQorIyBkZWZpbmUgT1BFTlNTTF9OT19FQ0RICisjZW5kaWYKKworLyogY29tcHJlc3Npb24gc3VwcG9ydCBnb3QgYWRkZWQgdG8gT3BlblNTTCBpbiAwLjkuOCAqLworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAweDAwOTA4MDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX0NPTVApCisjIGRlZmluZSBPUEVOU1NMX05PX0NPTVAKKyNlbmRpZgorCisKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgU1NMX0NUWCAqY3R4OworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICBjaGFyICpucG5fcHJvdG9jb2xzOworICAgIGludCBucG5fcHJvdG9jb2xzX2xlbjsKKyNlbmRpZgogfSBQeVNTTENvbnRleHQ7CiAKIHR5cGVkZWYgc3RydWN0IHsKQEAgLTEzNSw2ICsxODksNyBAQAogICAgIFNTTCAqc3NsOwogICAgIFg1MDkgKnBlZXJfY2VydDsKICAgICBpbnQgc2h1dGRvd25fc2Vlbl96ZXJvOworICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGU7CiB9IFB5U1NMU29ja2V0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5U1NMQ29udGV4dF9UeXBlOwpAQCAtMTY1LDM2ICsyMjAsMTUyIEBACiAjZGVmaW5lIEVSUlNUUjEoeCx5LHopICh4ICI6IiB5ICI6ICIgeikKICNkZWZpbmUgRVJSU1RSKHgpIEVSUlNUUjEoIl9zc2wuYyIsIFNUUklOR0lGWTIoX19MSU5FX18pLCB4KQogCi0vKiBYWFggSXQgbWlnaHQgYmUgaGVscGZ1bCB0byBhdWdtZW50IHRoZSBlcnJvciBtZXNzYWdlIGdlbmVyYXRlZAotICAgYmVsb3cgd2l0aCB0aGUgbmFtZSBvZiB0aGUgU1NMIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGVkIHRoZSBlcnJvci4KLSAgIEkgZXhwZWN0IGl0J3Mgb2J2aW91cyBtb3N0IG9mIHRoZSB0aW1lLgotKi8KKworLyoKKyAqIFNTTCBlcnJvcnMuCisgKi8KKworUHlEb2NfU1RSVkFSKFNTTEVycm9yX2RvYywKKyJBbiBlcnJvciBvY2N1cnJlZCBpbiB0aGUgU1NMIGltcGxlbWVudGF0aW9uLiIpOworCitQeURvY19TVFJWQVIoU1NMWmVyb1JldHVybkVycm9yX2RvYywKKyJTU0wvVExTIHNlc3Npb24gY2xvc2VkIGNsZWFubHkuIik7CisKK1B5RG9jX1NUUlZBUihTU0xXYW50UmVhZEVycm9yX2RvYywKKyJOb24tYmxvY2tpbmcgU1NMIHNvY2tldCBuZWVkcyB0byByZWFkIG1vcmUgZGF0YVxuIgorImJlZm9yZSB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbiBjYW4gYmUgY29tcGxldGVkLiIpOworCitQeURvY19TVFJWQVIoU1NMV2FudFdyaXRlRXJyb3JfZG9jLAorIk5vbi1ibG9ja2luZyBTU0wgc29ja2V0IG5lZWRzIHRvIHdyaXRlIG1vcmUgZGF0YVxuIgorImJlZm9yZSB0aGUgcmVxdWVzdGVkIG9wZXJhdGlvbiBjYW4gYmUgY29tcGxldGVkLiIpOworCitQeURvY19TVFJWQVIoU1NMU3lzY2FsbEVycm9yX2RvYywKKyJTeXN0ZW0gZXJyb3Igd2hlbiBhdHRlbXB0aW5nIFNTTCBvcGVyYXRpb24uIik7CisKK1B5RG9jX1NUUlZBUihTU0xFT0ZFcnJvcl9kb2MsCisiU1NML1RMUyBjb25uZWN0aW9uIHRlcm1pbmF0ZWQgYWJydXB0bHkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitTU0xFcnJvcl9zdHIoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5zdHJlcnJvciAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhzZWxmLT5zdHJlcnJvcikpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnN0cmVycm9yKTsKKyAgICAgICAgcmV0dXJuIHNlbGYtPnN0cmVycm9yOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeU9iamVjdF9TdHIoc2VsZi0+YXJncyk7Cit9CisKK3N0YXRpYyBQeVR5cGVfU2xvdCBzc2xlcnJvcl90eXBlX3Nsb3RzW10gPSB7CisgICAge1B5X3RwX2Jhc2UsIE5VTEx9LCAgLyogRmlsbGVkIG91dCBpbiBtb2R1bGUgaW5pdCBhcyBpdCdzIG5vdCBhIGNvbnN0YW50ICovCisgICAge1B5X3RwX2RvYywgU1NMRXJyb3JfZG9jfSwKKyAgICB7UHlfdHBfc3RyLCBTU0xFcnJvcl9zdHJ9LAorICAgIHswLCAwfSwKK307CisKK3N0YXRpYyBQeVR5cGVfU3BlYyBzc2xlcnJvcl90eXBlX3NwZWMgPSB7CisgICAgInNzbC5TU0xFcnJvciIsCisgICAgc2l6ZW9mKFB5T1NFcnJvck9iamVjdCksCisgICAgMCwKKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLAorICAgIHNzbGVycm9yX3R5cGVfc2xvdHMKK307CisKK3N0YXRpYyB2b2lkCitmaWxsX2FuZF9zZXRfc3NsZXJyb3IoUHlPYmplY3QgKnR5cGUsIGludCBzc2xfZXJybm8sIGNvbnN0IGNoYXIgKmVycnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZW5vLCB1bnNpZ25lZCBsb25nIGVycmNvZGUpCit7CisgICAgUHlPYmplY3QgKmVycl92YWx1ZSA9IE5VTEwsICpyZWFzb25fb2JqID0gTlVMTCwgKmxpYl9vYmogPSBOVUxMOworICAgIFB5T2JqZWN0ICppbml0X3ZhbHVlLCAqbXNnLCAqa2V5OworICAgIF9QeV9JREVOVElGSUVSKHJlYXNvbik7CisgICAgX1B5X0lERU5USUZJRVIobGlicmFyeSk7CisKKyAgICBpZiAoZXJyY29kZSAhPSAwKSB7CisgICAgICAgIGludCBsaWIsIHJlYXNvbjsKKworICAgICAgICBsaWIgPSBFUlJfR0VUX0xJQihlcnJjb2RlKTsKKyAgICAgICAgcmVhc29uID0gRVJSX0dFVF9SRUFTT04oZXJyY29kZSk7CisgICAgICAgIGtleSA9IFB5X0J1aWxkVmFsdWUoImlpIiwgbGliLCByZWFzb24pOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHJlYXNvbl9vYmogPSBQeURpY3RfR2V0SXRlbShlcnJfY29kZXNfdG9fbmFtZXMsIGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBpZiAocmVhc29uX29iaiA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBYWFggaWYgcmVhc29uIDwgMTAwLCBpdCBtaWdodCByZWZsZWN0IGEgbGlicmFyeSBudW1iZXIgKCEhKSAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcobGliKTsKKyAgICAgICAgaWYgKGtleSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBsaWJfb2JqID0gUHlEaWN0X0dldEl0ZW0obGliX2NvZGVzX3RvX25hbWVzLCBrZXkpOworICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgaWYgKGxpYl9vYmogPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJyc3RyID09IE5VTEwpCisgICAgICAgICAgICBlcnJzdHIgPSBFUlJfcmVhc29uX2Vycm9yX3N0cmluZyhlcnJjb2RlKTsKKyAgICB9CisgICAgaWYgKGVycnN0ciA9PSBOVUxMKQorICAgICAgICBlcnJzdHIgPSAidW5rbm93biBlcnJvciI7CisKKyAgICBpZiAocmVhc29uX29iaiAmJiBsaWJfb2JqKQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiWyVTOiAlU10gJXMgKF9zc2wuYzolZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfb2JqLCByZWFzb25fb2JqLCBlcnJzdHIsIGxpbmVubyk7CisgICAgZWxzZSBpZiAobGliX29iaikKKyAgICAgICAgbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIlslU10gJXMgKF9zc2wuYzolZCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJfb2JqLCBlcnJzdHIsIGxpbmVubyk7CisgICAgZWxzZQorICAgICAgICBtc2cgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMgKF9zc2wuYzolZCkiLCBlcnJzdHIsIGxpbmVubyk7CisKKyAgICBpZiAobXNnID09IE5VTEwpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpbml0X3ZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiaU4iLCBzc2xfZXJybm8sIG1zZyk7CisgICAgZXJyX3ZhbHVlID0gUHlPYmplY3RfQ2FsbE9iamVjdCh0eXBlLCBpbml0X3ZhbHVlKTsKKyAgICBQeV9ERUNSRUYoaW5pdF92YWx1ZSk7CisgICAgaWYgKGVycl92YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKHJlYXNvbl9vYmogPT0gTlVMTCkKKyAgICAgICAgcmVhc29uX29iaiA9IFB5X05vbmU7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoZXJyX3ZhbHVlLCAmUHlJZF9yZWFzb24sIHJlYXNvbl9vYmopKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgaWYgKGxpYl9vYmogPT0gTlVMTCkKKyAgICAgICAgbGliX29iaiA9IFB5X05vbmU7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQoZXJyX3ZhbHVlLCAmUHlJZF9saWJyYXJ5LCBsaWJfb2JqKSkKKyAgICAgICAgZ290byBmYWlsOworICAgIFB5RXJyX1NldE9iamVjdCh0eXBlLCBlcnJfdmFsdWUpOworZmFpbDoKKyAgICBQeV9YREVDUkVGKGVycl92YWx1ZSk7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeVNTTF9TZXRFcnJvcihQeVNTTFNvY2tldCAqb2JqLCBpbnQgcmV0LCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKLSAgICBQeU9iamVjdCAqdjsKLSAgICBjaGFyIGJ1ZlsyMDQ4XTsKLSAgICBjaGFyICplcnJzdHI7CisgICAgUHlPYmplY3QgKnR5cGUgPSBQeVNTTEVycm9yT2JqZWN0OworICAgIGNoYXIgKmVycnN0ciA9IE5VTEw7CiAgICAgaW50IGVycjsKICAgICBlbnVtIHB5X3NzbF9lcnJvciBwID0gUFlfU1NMX0VSUk9SX05PTkU7CisgICAgdW5zaWduZWQgbG9uZyBlID0gMDsKIAogICAgIGFzc2VydChyZXQgPD0gMCk7CisgICAgZSA9IEVSUl9wZWVrX2xhc3RfZXJyb3IoKTsKIAogICAgIGlmIChvYmotPnNzbCAhPSBOVUxMKSB7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Iob2JqLT5zc2wsIHJldCk7CiAKICAgICAgICAgc3dpdGNoIChlcnIpIHsKICAgICAgICAgY2FzZSBTU0xfRVJST1JfWkVST19SRVRVUk46Ci0gICAgICAgICAgICBlcnJzdHIgPSAiVExTL1NTTCBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCI7CisgICAgICAgICAgICBlcnJzdHIgPSAiVExTL1NTTCBjb25uZWN0aW9uIGhhcyBiZWVuIGNsb3NlZCAoRU9GKSI7CisgICAgICAgICAgICB0eXBlID0gUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1pFUk9fUkVUVVJOOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfUkVBRDoKICAgICAgICAgICAgIGVycnN0ciA9ICJUaGUgb3BlcmF0aW9uIGRpZCBub3QgY29tcGxldGUgKHJlYWQpIjsKKyAgICAgICAgICAgIHR5cGUgPSBQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1dBTlRfUkVBRDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1dSSVRFOgogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9XQU5UX1dSSVRFOworICAgICAgICAgICAgdHlwZSA9IFB5U1NMV2FudFdyaXRlRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICBlcnJzdHIgPSAiVGhlIG9wZXJhdGlvbiBkaWQgbm90IGNvbXBsZXRlICh3cml0ZSkiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1dBTlRfWDUwOV9MT09LVVA6CkBAIC0yMDcsODAgKzM3OCw2NCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZSA9IEVSUl9nZXRfZXJyb3IoKTsKICAgICAgICAgICAgIGlmIChlID09IDApIHsKICAgICAgICAgICAgICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnMKICAgICAgICAgICAgICAgICAgID0gKFB5U29ja2V0U29ja09iamVjdCAqKSBQeVdlYWtyZWZfR2V0T2JqZWN0KG9iai0+U29ja2V0KTsKICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDAgfHwgKCgoUHlPYmplY3QgKilzKSA9PSBQeV9Ob25lKSkgewogICAgICAgICAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX0VPRjsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5U1NMRU9GRXJyb3JPYmplY3Q7CiAgICAgICAgICAgICAgICAgICAgIGVycnN0ciA9ICJFT0Ygb2NjdXJyZWQgaW4gdmlvbGF0aW9uIG9mIHByb3RvY29sIjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldCA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAvKiB1bmRlcmx5aW5nIEJJTyByZXBvcnRlZCBhbiBJL08gZXJyb3IgKi8KICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHMpOwogICAgICAgICAgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSAgICAgICAgICAgICAgICAgICAgdiA9IHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICAgICAgICAgICAgICBzLT5lcnJvcmhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsgLyogcG9zc2libGU/ICovCiAgICAgICAgICAgICAgICAgICAgIHAgPSBQWV9TU0xfRVJST1JfU1lTQ0FMTDsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFB5U1NMU3lzY2FsbEVycm9yT2JqZWN0OwogICAgICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiU29tZSBJL08gZXJyb3Igb2NjdXJyZWQiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9TWVNDQUxMOwotICAgICAgICAgICAgICAgIC8qIFhYWCBQcm90ZWN0ZWQgYnkgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgKi8KLSAgICAgICAgICAgICAgICBlcnJzdHIgPSBFUlJfZXJyb3Jfc3RyaW5nKGUsIE5VTEwpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBTU0xfRVJST1JfU1NMOgogICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIGUgPSBFUlJfZ2V0X2Vycm9yKCk7CiAgICAgICAgICAgICBwID0gUFlfU1NMX0VSUk9SX1NTTDsKLSAgICAgICAgICAgIGlmIChlICE9IDApCi0gICAgICAgICAgICAgICAgLyogWFhYIFByb3RlY3RlZCBieSBnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jayAqLwotICAgICAgICAgICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoZSwgTlVMTCk7Ci0gICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgIC8qIHBvc3NpYmxlPyAqLworICAgICAgICAgICAgaWYgKGUgPT0gMCkKKyAgICAgICAgICAgICAgICAvKiBwb3NzaWJsZT8gKi8KICAgICAgICAgICAgICAgICBlcnJzdHIgPSAiQSBmYWlsdXJlIGluIHRoZSBTU0wgbGlicmFyeSBvY2N1cnJlZCI7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcCA9IFBZX1NTTF9FUlJPUl9JTlZBTElEX0VSUk9SX0NPREU7CiAgICAgICAgICAgICBlcnJzdHIgPSAiSW52YWxpZCBlcnJvciBjb2RlIjsKICAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVycnN0ciA9IEVSUl9lcnJvcl9zdHJpbmcoRVJSX3BlZWtfbGFzdF9lcnJvcigpLCBOVUxMKTsKICAgICB9Ci0gICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX3NzbC5jOiVkOiAlcyIsIGxpbmVubywgZXJyc3RyKTsKKyAgICBmaWxsX2FuZF9zZXRfc3NsZXJyb3IodHlwZSwgcCwgZXJyc3RyLCBsaW5lbm8sIGUpOwogICAgIEVSUl9jbGVhcl9lcnJvcigpOwotICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaXMpIiwgcCwgYnVmKTsKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChQeVNTTEVycm9yT2JqZWN0LCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotICAgIH0KICAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIF9zZXRTU0xFcnJvciAoY2hhciAqZXJyc3RyLCBpbnQgZXJyY29kZSwgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8pIHsKIAotICAgIGNoYXIgYnVmWzIwNDhdOwotICAgIFB5T2JqZWN0ICp2OwotCi0gICAgaWYgKGVycnN0ciA9PSBOVUxMKSB7CisgICAgaWYgKGVycnN0ciA9PSBOVUxMKQogICAgICAgICBlcnJjb2RlID0gRVJSX3BlZWtfbGFzdF9lcnJvcigpOwotICAgICAgICBlcnJzdHIgPSBFUlJfZXJyb3Jfc3RyaW5nKGVycmNvZGUsIE5VTEwpOwotICAgIH0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJfc3NsLmM6JWQ6ICVzIiwgbGluZW5vLCBlcnJzdHIpOworICAgIGVsc2UKKyAgICAgICAgZXJyY29kZSA9IDA7CisgICAgZmlsbF9hbmRfc2V0X3NzbGVycm9yKFB5U1NMRXJyb3JPYmplY3QsIGVycmNvZGUsIGVycnN0ciwgbGluZW5vLCBlcnJjb2RlKTsKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKLSAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlzKSIsIGVycmNvZGUsIGJ1Zik7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlTU0xFcnJvck9iamVjdCwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBTU0wgb2JqZWN0cworICovCisKIHN0YXRpYyBQeVNTTFNvY2tldCAqCiBuZXdQeVNTTFNvY2tldChTU0xfQ1RYICpjdHgsIFB5U29ja2V0U29ja09iamVjdCAqc29jaywKICAgICAgICAgICAgICAgIGVudW0gcHlfc3NsX3NlcnZlcl9vcl9jbGllbnQgc29ja2V0X3R5cGUsCkBAIC0zMjgsNiArNDgzLDcgQEAKICAgICAgICAgU1NMX3NldF9hY2NlcHRfc3RhdGUoc2VsZi0+c3NsKTsKICAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUwogCisgICAgc2VsZi0+c29ja2V0X3R5cGUgPSBzb2NrZXRfdHlwZTsKICAgICBzZWxmLT5Tb2NrZXQgPSBQeVdlYWtyZWZfTmV3UmVmKChQeU9iamVjdCAqKSBzb2NrLCBOVUxMKTsKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTM1Niw3ICs1MTIsNiBAQAogCiAgICAgLyogQWN0dWFsbHkgbmVnb3RpYXRlIFNTTCBjb25uZWN0aW9uICovCiAgICAgLyogWFhYIElmIFNTTF9kb19oYW5kc2hha2UoKSByZXR1cm5zIDAsIGl0J3MgYWxzbyBhIGZhaWx1cmUuICovCi0gICAgc29ja3N0YXRlID0gMDsKICAgICBkbyB7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgcmV0ID0gU1NMX2RvX2hhbmRzaGFrZShzZWxmLT5zc2wpOwpAQCAtODgyLDE5ICsxMDM3LDE1IEBACiAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CiAgICAgaW50IGxlbjsKICAgICBpbnQgdmVyaWZpY2F0aW9uOwotICAgIFB5T2JqZWN0ICpiaW5hcnlfbW9kZSA9IFB5X05vbmU7Ci0gICAgaW50IGI7CisgICAgaW50IGJpbmFyeV9tb2RlID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE86cGVlcl9jZXJ0aWZpY2F0ZSIsICZiaW5hcnlfbW9kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpwZWVyX2NlcnRpZmljYXRlIiwgJmJpbmFyeV9tb2RlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBpZiAoIXNlbGYtPnBlZXJfY2VydCkKICAgICAgICAgUHlfUkVUVVJOX05PTkU7CiAKLSAgICBiID0gUHlPYmplY3RfSXNUcnVlKGJpbmFyeV9tb2RlKTsKLSAgICBpZiAoYiA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChiKSB7CisgICAgaWYgKGJpbmFyeV9tb2RlKSB7CiAgICAgICAgIC8qIHJldHVybiBjZXJ0IGluIERFUi1lbmNvZGVkIGZvcm1hdCAqLwogCiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ5dGVzX2J1ZiA9IE5VTEw7CkBAIC05ODAsNiArMTEzMSwzOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9zZWxlY3RlZF9ucG5fcHJvdG9jb2woUHlTU0xTb2NrZXQgKnNlbGYpIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvdXQ7CisgICAgdW5zaWduZWQgaW50IG91dGxlbjsKKworICAgIFNTTF9nZXQwX25leHRfcHJvdG9fbmVnb3RpYXRlZChzZWxmLT5zc2wsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0LCAmb3V0bGVuKTsKKworICAgIGlmIChvdXQgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKSBvdXQsIG91dGxlbik7Cit9CisjZW5kaWYKKworc3RhdGljIFB5T2JqZWN0ICpQeVNTTF9jb21wcmVzc2lvbihQeVNTTFNvY2tldCAqc2VsZikgeworI2lmZGVmIE9QRU5TU0xfTk9fQ09NUAorICAgIFB5X1JFVFVSTl9OT05FOworI2Vsc2UKKyAgICBjb25zdCBDT01QX01FVEhPRCAqY29tcF9tZXRob2Q7CisgICAgY29uc3QgY2hhciAqc2hvcnRfbmFtZTsKKworICAgIGlmIChzZWxmLT5zc2wgPT0gTlVMTCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgY29tcF9tZXRob2QgPSBTU0xfZ2V0X2N1cnJlbnRfY29tcHJlc3Npb24oc2VsZi0+c3NsKTsKKyAgICBpZiAoY29tcF9tZXRob2QgPT0gTlVMTCB8fCBjb21wX21ldGhvZC0+dHlwZSA9PSBOSURfdW5kZWYpCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIHNob3J0X25hbWUgPSBPQkpfbmlkMnNuKGNvbXBfbWV0aG9kLT50eXBlKTsKKyAgICBpZiAoc2hvcnRfbmFtZSA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChzaG9ydF9uYW1lKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgdm9pZCBQeVNTTF9kZWFsbG9jKFB5U1NMU29ja2V0ICpzZWxmKQogewogICAgIGlmIChzZWxmLT5wZWVyX2NlcnQpICAgICAgICAvKiBQb3NzaWJsZSBub3QgdG8gaGF2ZSBvbmU/ICovCkBAIC0xMTAwLDcgKzEyODQsNiBAQAogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBkbyB7Ci0gICAgICAgIGVyciA9IDA7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgbGVuID0gU1NMX3dyaXRlKHNlbGYtPnNzbCwgYnVmLmJ1ZiwgYnVmLmxlbik7CiAgICAgICAgIGVyciA9IFNTTF9nZXRfZXJyb3Ioc2VsZi0+c3NsLCBsZW4pOwpAQCAtMTIzNiw3ICsxNDE5LDYgQEAKICAgICAgICAgfQogICAgIH0KICAgICBkbyB7Ci0gICAgICAgIGVyciA9IDA7CiAgICAgICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICAgICAgY291bnQgPSBTU0xfcmVhZChzZWxmLT5zc2wsIG1lbSwgbGVuKTsKICAgICAgICAgZXJyID0gU1NMX2dldF9lcnJvcihzZWxmLT5zc2wsIGNvdW50KTsKQEAgLTEzODgsNiArMTU3MCw0MSBAQAogRG9lcyB0aGUgU1NMIHNodXRkb3duIGhhbmRzaGFrZSB3aXRoIHRoZSByZW1vdGUgZW5kLCBhbmQgcmV0dXJuc1xuXAogdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4iKTsKIAorI2lmIEhBVkVfT1BFTlNTTF9GSU5JU0hFRAorc3RhdGljIFB5T2JqZWN0ICoKK1B5U1NMX3Rsc191bmlxdWVfY2IoUHlTU0xTb2NrZXQgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisgICAgY2hhciBidWZbUHlTU0xfQ0JfTUFYTEVOXTsKKyAgICBpbnQgbGVuOworCisgICAgaWYgKFNTTF9zZXNzaW9uX3JldXNlZChzZWxmLT5zc2wpIF4gIXNlbGYtPnNvY2tldF90eXBlKSB7CisgICAgICAgIC8qIGlmIHNlc3Npb24gaXMgcmVzdW1lZCBYT1Igd2UgYXJlIHRoZSBjbGllbnQgKi8KKyAgICAgICAgbGVuID0gU1NMX2dldF9maW5pc2hlZChzZWxmLT5zc2wsIGJ1ZiwgUHlTU0xfQ0JfTUFYTEVOKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGlmIGEgbmV3IHNlc3Npb24gWE9SIHdlIGFyZSB0aGUgc2VydmVyICovCisgICAgICAgIGxlbiA9IFNTTF9nZXRfcGVlcl9maW5pc2hlZChzZWxmLT5zc2wsIGJ1ZiwgUHlTU0xfQ0JfTUFYTEVOKTsKKyAgICB9CisKKyAgICAvKiBJdCBjYW5ub3QgYmUgbmVnYXRpdmUgaW4gY3VycmVudCBPcGVuU1NMIHZlcnNpb24gYXMgb2YgSnVseSAyMDExICovCisgICAgYXNzZXJ0KGxlbiA+PSAwKTsKKyAgICBpZiAobGVuID09IDApCisgICAgICAgIFB5X1JFVFVSTl9OT05FOworCisgICAgcmV0dmFsID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShidWYsIGxlbik7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoUHlTU0xfdGxzX3VuaXF1ZV9jYl9kb2MsCisidGxzX3VuaXF1ZV9jYigpIC0+IGJ5dGVzXG5cCitcblwKK1JldHVybnMgdGhlICd0bHMtdW5pcXVlJyBjaGFubmVsIGJpbmRpbmcgZGF0YSwgYXMgZGVmaW5lZCBieSBSRkMgNTkyOS5cblwKK1xuXAorSWYgdGhlIFRMUyBoYW5kc2hha2UgaXMgbm90IHlldCBjb21wbGV0ZSwgTm9uZSBpcyByZXR1cm5lZCIpOworCisjZW5kaWYgLyogSEFWRV9PUEVOU1NMX0ZJTklTSEVEICovCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBQeVNTTE1ldGhvZHNbXSA9IHsKICAgICB7ImRvX2hhbmRzaGFrZSIsIChQeUNGdW5jdGlvbilQeVNTTF9TU0xkb19oYW5kc2hha2UsIE1FVEhfTk9BUkdTfSwKQEAgLTE0MDAsOCArMTYxNywxNiBAQAogICAgIHsicGVlcl9jZXJ0aWZpY2F0ZSIsIChQeUNGdW5jdGlvbilQeVNTTF9wZWVyY2VydCwgTUVUSF9WQVJBUkdTLAogICAgICBQeVNTTF9wZWVyY2VydF9kb2N9LAogICAgIHsiY2lwaGVyIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX2NpcGhlciwgTUVUSF9OT0FSR1N9LAorI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICB7InNlbGVjdGVkX25wbl9wcm90b2NvbCIsIChQeUNGdW5jdGlvbilQeVNTTF9zZWxlY3RlZF9ucG5fcHJvdG9jb2wsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgorICAgIHsiY29tcHJlc3Npb24iLCAoUHlDRnVuY3Rpb24pUHlTU0xfY29tcHJlc3Npb24sIE1FVEhfTk9BUkdTfSwKICAgICB7InNodXRkb3duIiwgKFB5Q0Z1bmN0aW9uKVB5U1NMX1NTTHNodXRkb3duLCBNRVRIX05PQVJHUywKICAgICAgUHlTU0xfU1NMc2h1dGRvd25fZG9jfSwKKyNpZiBIQVZFX09QRU5TU0xfRklOSVNIRUQKKyAgICB7InRsc191bmlxdWVfY2IiLCAoUHlDRnVuY3Rpb24pUHlTU0xfdGxzX3VuaXF1ZV9jYiwgTUVUSF9OT0FSR1MsCisgICAgIFB5U1NMX3Rsc191bmlxdWVfY2JfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCBOVUxMfQogfTsKIApAQCAtMTQ4OCw2ICsxNzEzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHNlbGYtPmN0eCA9IGN0eDsKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgc2VsZi0+bnBuX3Byb3RvY29scyA9IE5VTEw7CisjZW5kaWYKICAgICAvKiBEZWZhdWx0cyAqLwogICAgIFNTTF9DVFhfc2V0X3ZlcmlmeShzZWxmLT5jdHgsIFNTTF9WRVJJRllfTk9ORSwgTlVMTCk7CiAgICAgU1NMX0NUWF9zZXRfb3B0aW9ucyhzZWxmLT5jdHgsCkBAIC0xNTA1LDYgKzE3MzMsOSBAQAogY29udGV4dF9kZWFsbG9jKFB5U1NMQ29udGV4dCAqc2VsZikKIHsKICAgICBTU0xfQ1RYX2ZyZWUoc2VsZi0+Y3R4KTsKKyNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisgICAgUHlNZW1fRnJlZShzZWxmLT5ucG5fcHJvdG9jb2xzKTsKKyNlbmRpZgogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CiAKQEAgLTE1MjksNiArMTc2MCw5MSBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorLyogdGhpcyBjYWxsYmFjayBnZXRzIHBhc3NlZCB0byBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VfY2IgKi8KK3N0YXRpYyBpbnQKK19hZHZlcnRpc2VOUE5fY2IoU1NMICpzLCAKKyAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKmRhdGEsIHVuc2lnbmVkIGludCAqbGVuLCAKKyAgICAgICAgICAgICAgICAgdm9pZCAqYXJncykKK3sKKyAgICBQeVNTTENvbnRleHQgKnNzbF9jdHggPSAoUHlTU0xDb250ZXh0ICopIGFyZ3M7CisKKyAgICBpZiAoc3NsX2N0eC0+bnBuX3Byb3RvY29scyA9PSBOVUxMKSB7CisgICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7CisgICAgICAgICpsZW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgICpkYXRhID0gKHVuc2lnbmVkIGNoYXIgKikgc3NsX2N0eC0+bnBuX3Byb3RvY29sczsKKyAgICAgICAgKmxlbiA9IHNzbF9jdHgtPm5wbl9wcm90b2NvbHNfbGVuOworICAgIH0KKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKy8qIHRoaXMgY2FsbGJhY2sgZ2V0cyBwYXNzZWQgdG8gU1NMX0NUWF9zZXRfbmV4dF9wcm90b19zZWxlY3RfY2IgKi8KK3N0YXRpYyBpbnQKK19zZWxlY3ROUE5fY2IoU1NMICpzLCAKKyAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLAorICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzZXJ2ZXIsIHVuc2lnbmVkIGludCBzZXJ2ZXJfbGVuLAorICAgICAgICAgICAgICB2b2lkICphcmdzKQoreworICAgIFB5U1NMQ29udGV4dCAqc3NsX2N0eCA9IChQeVNTTENvbnRleHQgKikgYXJnczsKKworICAgIHVuc2lnbmVkIGNoYXIgKmNsaWVudCA9ICh1bnNpZ25lZCBjaGFyICopIHNzbF9jdHgtPm5wbl9wcm90b2NvbHM7CisgICAgaW50IGNsaWVudF9sZW47CisKKyAgICBpZiAoY2xpZW50ID09IE5VTEwpIHsKKyAgICAgICAgY2xpZW50ID0gKHVuc2lnbmVkIGNoYXIgKikgIiI7CisgICAgICAgIGNsaWVudF9sZW4gPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGNsaWVudF9sZW4gPSBzc2xfY3R4LT5ucG5fcHJvdG9jb2xzX2xlbjsKKyAgICB9CisKKyAgICBTU0xfc2VsZWN0X25leHRfcHJvdG8ob3V0LCBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlciwgc2VydmVyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBjbGllbnRfbGVuKTsKKworICAgIHJldHVybiBTU0xfVExTRVhUX0VSUl9PSzsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorX3NldF9ucG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgT1BFTlNTTF9OUE5fTkVHT1RJQVRFRAorICAgIFB5X2J1ZmZlciBwcm90b3M7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPm5wbl9wcm90b2NvbHMpOworICAgIH0KKworICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBQeU1lbV9NYWxsb2MocHJvdG9zLmxlbik7CisgICAgaWYgKHNlbGYtPm5wbl9wcm90b2NvbHMgPT0gTlVMTCkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwcm90b3MpOworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CisgICAgbWVtY3B5KHNlbGYtPm5wbl9wcm90b2NvbHMsIHByb3Rvcy5idWYsIHByb3Rvcy5sZW4pOworICAgIHNlbGYtPm5wbl9wcm90b2NvbHNfbGVuID0gKGludCkgcHJvdG9zLmxlbjsKKworICAgIC8qIHNldCBib3RoIHNlcnZlciBhbmQgY2xpZW50IGNhbGxiYWNrcywgYmVjYXVzZSB0aGUgY29udGV4dCBjYW4KKyAgICAgKiBiZSB1c2VkIHRvIGNyZWF0ZSBib3RoIHR5cGVzIG9mIHNvY2tldHMgKi8KKyAgICBTU0xfQ1RYX3NldF9uZXh0X3Byb3Rvc19hZHZlcnRpc2VkX2NiKHNlbGYtPmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9hZHZlcnRpc2VOUE5fY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKKyAgICBTU0xfQ1RYX3NldF9uZXh0X3Byb3RvX3NlbGVjdF9jYihzZWxmLT5jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbGVjdE5QTl9jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmKTsKKworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnByb3Rvcyk7CisgICAgUHlfUkVUVVJOX05PTkU7CisjZWxzZQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgICAgICAgICAiVGhlIE5QTiBleHRlbnNpb24gcmVxdWlyZXMgT3BlblNTTCAxLjAuMSBvciBsYXRlci4iKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X3ZlcmlmeV9tb2RlKFB5U1NMQ29udGV4dCAqc2VsZiwgdm9pZCAqYykKIHsKQEAgLTE1OTUsMTkgKzE5MTEsMTE4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeVRocmVhZFN0YXRlICp0aHJlYWRfc3RhdGU7CisgICAgUHlPYmplY3QgKmNhbGxhYmxlOworICAgIGNoYXIgKnBhc3N3b3JkOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBpbnQgZXJyb3I7Cit9IF9QeVNTTFBhc3N3b3JkSW5mbzsKKworc3RhdGljIGludAorX3B3aW5mb19zZXQoX1B5U1NMUGFzc3dvcmRJbmZvICpwd19pbmZvLCBQeU9iamVjdCogcGFzc3dvcmQsCisgICAgICAgICAgICBjb25zdCBjaGFyICpiYWRfdHlwZV9lcnJvcikKK3sKKyAgICAvKiBTZXQgdGhlIHBhc3N3b3JkIGFuZCBzaXplIGZpZWxkcyBvZiBhIF9QeVNTTFBhc3N3b3JkSW5mbyBzdHJ1Y3QKKyAgICAgICBmcm9tIGEgdW5pY29kZSwgYnl0ZXMsIG9yIGJ5dGUgYXJyYXkgb2JqZWN0LgorICAgICAgIFRoZSBwYXNzd29yZCBmaWVsZCB3aWxsIGJlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgbXVzdCBiZSBmcmVlZAorICAgICAgIGJ5IHRoZSBjYWxsZXIgKi8KKyAgICBQeU9iamVjdCAqcGFzc3dvcmRfYnl0ZXMgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmRhdGEgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2socGFzc3dvcmQpKSB7CisgICAgICAgIHBhc3N3b3JkX2J5dGVzID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhwYXNzd29yZCwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcGFzc3dvcmRfYnl0ZXMpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhc3N3b3JkX2J5dGVzKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocGFzc3dvcmRfYnl0ZXMpOworICAgIH0gZWxzZSBpZiAoUHlCeXRlc19DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgZGF0YSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhc3N3b3JkKTsKKyAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocGFzc3dvcmQpOworICAgIH0gZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2socGFzc3dvcmQpKSB7CisgICAgICAgIGRhdGEgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocGFzc3dvcmQpOworICAgICAgICBzaXplID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUocGFzc3dvcmQpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIGJhZF90eXBlX2Vycm9yKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBmcmVlKHB3X2luZm8tPnBhc3N3b3JkKTsKKyAgICBwd19pbmZvLT5wYXNzd29yZCA9IG1hbGxvYyhzaXplKTsKKyAgICBpZiAoIXB3X2luZm8tPnBhc3N3b3JkKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gYWxsb2NhdGUgcGFzc3dvcmQgYnVmZmVyIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG1lbWNweShwd19pbmZvLT5wYXNzd29yZCwgZGF0YSwgc2l6ZSk7CisgICAgcHdfaW5mby0+c2l6ZSA9IHNpemU7CisKKyAgICBQeV9YREVDUkVGKHBhc3N3b3JkX2J5dGVzKTsKKyAgICByZXR1cm4gMTsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihwYXNzd29yZF9ieXRlcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19wYXNzd29yZF9jYWxsYmFjayhjaGFyICpidWYsIGludCBzaXplLCBpbnQgcndmbGFnLCB2b2lkICp1c2VyZGF0YSkKK3sKKyAgICBfUHlTU0xQYXNzd29yZEluZm8gKnB3X2luZm8gPSAoX1B5U1NMUGFzc3dvcmRJbmZvKikgdXNlcmRhdGE7CisgICAgUHlPYmplY3QgKmZuX3JldCA9IE5VTEw7CisKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8tPnRocmVhZF9zdGF0ZSk7CisKKyAgICBpZiAocHdfaW5mby0+Y2FsbGFibGUpIHsKKyAgICAgICAgZm5fcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhwd19pbmZvLT5jYWxsYWJsZSwgTlVMTCk7CisgICAgICAgIGlmICghZm5fcmV0KSB7CisgICAgICAgICAgICAvKiBUT0RPOiBJdCB3b3VsZCBiZSBuaWNlIHRvIG1vdmUgX2N0eXBlc19hZGRfdHJhY2ViYWNrKCkgaW50byB0aGUKKyAgICAgICAgICAgICAgIGNvcmUgcHl0aG9uIEFQSSwgc28gd2UgY291bGQgdXNlIGl0IHRvIGFkZCBhIGZyYW1lIGhlcmUgKi8KKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIV9wd2luZm9fc2V0KHB3X2luZm8sIGZuX3JldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgY2FsbGJhY2sgbXVzdCByZXR1cm4gYSBzdHJpbmciKSkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeV9DTEVBUihmbl9yZXQpOworICAgIH0KKworICAgIGlmIChwd19pbmZvLT5zaXplID4gc2l6ZSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJwYXNzd29yZCBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJWQgYnl0ZXMiLCBzaXplKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKyAgICBtZW1jcHkoYnVmLCBwd19pbmZvLT5wYXNzd29yZCwgcHdfaW5mby0+c2l6ZSk7CisgICAgcmV0dXJuIHB3X2luZm8tPnNpemU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZm5fcmV0KTsKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby0+dGhyZWFkX3N0YXRlKTsKKyAgICBwd19pbmZvLT5lcnJvciA9IDE7CisgICAgcmV0dXJuIC0xOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogbG9hZF9jZXJ0X2NoYWluKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIGNoYXIgKmt3bGlzdFtdID0geyJjZXJ0ZmlsZSIsICJrZXlmaWxlIiwgTlVMTH07Ci0gICAgUHlPYmplY3QgKmNlcnRmaWxlLCAqa2V5ZmlsZSA9IE5VTEw7CisgICAgY2hhciAqa3dsaXN0W10gPSB7ImNlcnRmaWxlIiwgImtleWZpbGUiLCAicGFzc3dvcmQiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqY2VydGZpbGUsICprZXlmaWxlID0gTlVMTCwgKnBhc3N3b3JkID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2VydGZpbGVfYnl0ZXMgPSBOVUxMLCAqa2V5ZmlsZV9ieXRlcyA9IE5VTEw7CisgICAgcGVtX3Bhc3N3b3JkX2NiICpvcmlnX3Bhc3N3ZF9jYiA9IHNlbGYtPmN0eC0+ZGVmYXVsdF9wYXNzd2RfY2FsbGJhY2s7CisgICAgdm9pZCAqb3JpZ19wYXNzd2RfdXNlcmRhdGEgPSBzZWxmLT5jdHgtPmRlZmF1bHRfcGFzc3dkX2NhbGxiYWNrX3VzZXJkYXRhOworICAgIF9QeVNTTFBhc3N3b3JkSW5mbyBwd19pbmZvID0geyBOVUxMLCBOVUxMLCBOVUxMLCAwLCAwIH07CiAgICAgaW50IHI7CiAKICAgICBlcnJubyA9IDA7CiAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKLSAgICAgICAgIk98Tzpsb2FkX2NlcnRfY2hhaW4iLCBrd2xpc3QsCi0gICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUpKQorICAgICAgICAiT3xPTzpsb2FkX2NlcnRfY2hhaW4iLCBrd2xpc3QsCisgICAgICAgICZjZXJ0ZmlsZSwgJmtleWZpbGUsICZwYXNzd29yZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChrZXlmaWxlID09IFB5X05vbmUpCiAgICAgICAgIGtleWZpbGUgPSBOVUxMOwpAQCAtMTYyMSwxMiArMjAzNiwyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImtleWZpbGUgc2hvdWxkIGJlIGEgdmFsaWQgZmlsZXN5c3RlbSBwYXRoIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGFzc3dvcmQgJiYgcGFzc3dvcmQgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoUHlDYWxsYWJsZV9DaGVjayhwYXNzd29yZCkpIHsKKyAgICAgICAgICAgIHB3X2luZm8uY2FsbGFibGUgPSBwYXNzd29yZDsKKyAgICAgICAgfSBlbHNlIGlmICghX3B3aW5mb19zZXQoJnB3X2luZm8sIHBhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc3dvcmQgc2hvdWxkIGJlIGEgc3RyaW5nIG9yIGNhbGxhYmxlIikpIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2Ioc2VsZi0+Y3R4LCBfcGFzc3dvcmRfY2FsbGJhY2spOworICAgICAgICBTU0xfQ1RYX3NldF9kZWZhdWx0X3Bhc3N3ZF9jYl91c2VyZGF0YShzZWxmLT5jdHgsICZwd19pbmZvKTsKKyAgICB9CisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICByID0gU1NMX0NUWF91c2VfY2VydGlmaWNhdGVfY2hhaW5fZmlsZShzZWxmLT5jdHgsCiAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGNlcnRmaWxlX2J5dGVzKSk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICBpZiAociAhPSAxKSB7Ci0gICAgICAgIGlmIChlcnJubyAhPSAwKSB7CisgICAgICAgIGlmIChwd19pbmZvLmVycm9yKSB7CisgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgIC8qIHRoZSBwYXNzd29yZCBjYWxsYmFjayBoYXMgYWxyZWFkeSBzZXQgdGhlIGVycm9yIGluZm9ybWF0aW9uICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXJybm8gIT0gMCkgewogICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIH0KQEAgLTE2MzUsMzMgKzIwNjQsNDMgQEAKICAgICAgICAgfQogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KLSAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICByID0gU1NMX0NUWF91c2VfUHJpdmF0ZUtleV9maWxlKHNlbGYtPmN0eCwKICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoa2V5ZmlsZSA/IGtleWZpbGVfYnl0ZXMgOiBjZXJ0ZmlsZV9ieXRlcyksCiAgICAgICAgIFNTTF9GSUxFVFlQRV9QRU0pOwotICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCi0gICAgUHlfWERFQ1JFRihrZXlmaWxlX2J5dGVzKTsKLSAgICBQeV9YREVDUkVGKGNlcnRmaWxlX2J5dGVzKTsKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKKyAgICBQeV9DTEVBUihrZXlmaWxlX2J5dGVzKTsKKyAgICBQeV9DTEVBUihjZXJ0ZmlsZV9ieXRlcyk7CiAgICAgaWYgKHIgIT0gMSkgewotICAgICAgICBpZiAoZXJybm8gIT0gMCkgeworICAgICAgICBpZiAocHdfaW5mby5lcnJvcikgeworICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgICAgICAvKiB0aGUgcGFzc3dvcmQgY2FsbGJhY2sgaGFzIGFscmVhZHkgc2V0IHRoZSBlcnJvciBpbmZvcm1hdGlvbiAqLworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGVycm5vICE9IDApIHsKICAgICAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTX1MocHdfaW5mby50aHJlYWRfc3RhdGUpOwogICAgIHIgPSBTU0xfQ1RYX2NoZWNrX3ByaXZhdGVfa2V5KHNlbGYtPmN0eCk7Ci0gICAgUHlTU0xfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEU19TKHB3X2luZm8udGhyZWFkX3N0YXRlKTsKICAgICBpZiAociAhPSAxKSB7CiAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2Ioc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF9jYik7CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGEoc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF91c2VyZGF0YSk7CisgICAgZnJlZShwd19pbmZvLnBhc3N3b3JkKTsKICAgICBQeV9SRVRVUk5fTk9ORTsKIAogZXJyb3I6CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2Ioc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF9jYik7CisgICAgU1NMX0NUWF9zZXRfZGVmYXVsdF9wYXNzd2RfY2JfdXNlcmRhdGEoc2VsZi0+Y3R4LCBvcmlnX3Bhc3N3ZF91c2VyZGF0YSk7CisgICAgZnJlZShwd19pbmZvLnBhc3N3b3JkKTsKICAgICBQeV9YREVDUkVGKGtleWZpbGVfYnl0ZXMpOwogICAgIFB5X1hERUNSRUYoY2VydGZpbGVfYnl0ZXMpOwogICAgIHJldHVybiBOVUxMOwpAQCAtMTcyNCw2ICsyMTYzLDM4IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitsb2FkX2RoX3BhcmFtcyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpmaWxlcGF0aCkKK3sKKyAgICBGSUxFICpmOworICAgIERIICpkaDsKKworICAgIGYgPSBfUHlfZm9wZW4oZmlsZXBhdGgsICJyYiIpOworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX09TRXJyb3IsIGZpbGVwYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVycm5vID0gMDsKKyAgICBQeVNTTF9CRUdJTl9BTExPV19USFJFQURTCisgICAgZGggPSBQRU1fcmVhZF9ESHBhcmFtcyhmLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICBQeVNTTF9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChkaCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChlcnJubyAhPSAwKSB7CisgICAgICAgICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdChQeUV4Y19PU0Vycm9yLCBmaWxlcGF0aCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFNTTF9DVFhfc2V0X3RtcF9kaChzZWxmLT5jdHgsIGRoKSA9PSAwKQorICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKKyAgICBESF9mcmVlKGRoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGNvbnRleHRfd3JhcF9zb2NrZXQoUHlTU0xDb250ZXh0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgY2hhciAqa3dsaXN0W10gPSB7InNvY2siLCAic2VydmVyX3NpZGUiLCAic2VydmVyX2hvc3RuYW1lIiwgTlVMTH07CkBAIC0xODA4LDYgKzIyNzksMzUgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAorI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKK3N0YXRpYyBQeU9iamVjdCAqCitzZXRfZWNkaF9jdXJ2ZShQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lX2J5dGVzOworICAgIGludCBuaWQ7CisgICAgRUNfS0VZICprZXk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9GU0NvbnZlcnRlcihuYW1lLCAmbmFtZV9ieXRlcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG5hbWVfYnl0ZXMpKTsKKyAgICBuaWQgPSBPQkpfc24ybmlkKFB5Qnl0ZXNfQVNfU1RSSU5HKG5hbWVfYnl0ZXMpKTsKKyAgICBQeV9ERUNSRUYobmFtZV9ieXRlcyk7CisgICAgaWYgKG5pZCA9PSAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInVua25vd24gZWxsaXB0aWMgY3VydmUgbmFtZSAlUiIsIG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAga2V5ID0gRUNfS0VZX25ld19ieV9jdXJ2ZV9uYW1lKG5pZCk7CisgICAgaWYgKGtleSA9PSBOVUxMKSB7CisgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgU1NMX0NUWF9zZXRfdG1wX2VjZGgoc2VsZi0+Y3R4LCBrZXkpOworICAgIEVDX0tFWV9mcmVlKGtleSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogc3RhdGljIFB5R2V0U2V0RGVmIGNvbnRleHRfZ2V0c2V0bGlzdFtdID0gewogICAgIHsib3B0aW9ucyIsIChnZXR0ZXIpIGdldF9vcHRpb25zLAogICAgICAgICAgICAgICAgIChzZXR0ZXIpIHNldF9vcHRpb25zLCBOVUxMfSwKQEAgLTE4MjEsMTQgKzIzMjEsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgTlVMTH0sCiAgICAgeyJzZXRfY2lwaGVycyIsIChQeUNGdW5jdGlvbikgc2V0X2NpcGhlcnMsCiAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJfc2V0X25wbl9wcm90b2NvbHMiLCAoUHlDRnVuY3Rpb24pIF9zZXRfbnBuX3Byb3RvY29scywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUywgTlVMTH0sCiAgICAgeyJsb2FkX2NlcnRfY2hhaW4iLCAoUHlDRnVuY3Rpb24pIGxvYWRfY2VydF9jaGFpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIE5VTEx9LAorICAgIHsibG9hZF9kaF9wYXJhbXMiLCAoUHlDRnVuY3Rpb24pIGxvYWRfZGhfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAogICAgIHsibG9hZF92ZXJpZnlfbG9jYXRpb25zIiwgKFB5Q0Z1bmN0aW9uKSBsb2FkX3ZlcmlmeV9sb2NhdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBOVUxMfSwKICAgICB7InNlc3Npb25fc3RhdHMiLCAoUHlDRnVuY3Rpb24pIHNlc3Npb25fc3RhdHMsCiAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9OT0FSR1MsIE5VTEx9LAogICAgIHsic2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzIiwgKFB5Q0Z1bmN0aW9uKSBzZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX05PQVJHUywgTlVMTH0sCisjaWZuZGVmIE9QRU5TU0xfTk9fRUNESAorICAgIHsic2V0X2VjZGhfY3VydmUiLCAoUHlDRnVuY3Rpb24pIHNldF9lY2RoX2N1cnZlLAorICAgICAgICAgICAgICAgICAgICAgICBNRVRIX08sIE5VTEx9LAorI2VuZGlmCiAgICAge05VTEwsIE5VTEx9ICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTg5OSw2ICsyNDA3LDY5IEBACiBib3VuZCBvbiB0aGUgZW50cm9weSBjb250YWluZWQgaW4gc3RyaW5nLiAgU2VlIFJGQyAxNzUwLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgorUHlTU0xfUkFORChpbnQgbGVuLCBpbnQgcHNldWRvKQoreworICAgIGludCBvazsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBlcnI7CisgICAgY29uc3QgY2hhciAqZXJyc3RyOworICAgIFB5T2JqZWN0ICp2OworCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGxlbik7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChwc2V1ZG8pIHsKKyAgICAgICAgb2sgPSBSQU5EX3BzZXVkb19ieXRlcygodW5zaWduZWQgY2hhciopUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpLCBsZW4pOworICAgICAgICBpZiAob2sgPT0gMCB8fCBvayA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5PIiwgYnl0ZXMsIG9rID09IDEgPyBQeV9UcnVlIDogUHlfRmFsc2UpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb2sgPSBSQU5EX2J5dGVzKCh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIGxlbik7CisgICAgICAgIGlmIChvayA9PSAxKQorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzOworICAgIH0KKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworCisgICAgZXJyID0gRVJSX2dldF9lcnJvcigpOworICAgIGVycnN0ciA9IEVSUl9yZWFzb25fZXJyb3Jfc3RyaW5nKGVycik7CisgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihrcykiLCBlcnIsIGVycnN0cik7CisgICAgaWYgKHYgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlTU0xFcnJvck9iamVjdCwgdik7CisgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9SQU5EX2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpSQU5EX2J5dGVzIiwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeVNTTF9SQU5EKGxlbiwgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihQeVNTTF9SQU5EX2J5dGVzX2RvYywKKyJSQU5EX2J5dGVzKG4pIC0+IGJ5dGVzXG5cCitcblwKK0dlbmVyYXRlIG4gY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nIHBzZXVkby1yYW5kb20gYnl0ZXMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitQeVNTTF9SQU5EX3BzZXVkb19ieXRlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGxlbjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6UkFORF9wc2V1ZG9fYnl0ZXMiLCAmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5U1NMX1JBTkQobGVuLCAxKTsKK30KKworUHlEb2NfU1RSVkFSKFB5U1NMX1JBTkRfcHNldWRvX2J5dGVzX2RvYywKKyJSQU5EX3BzZXVkb19ieXRlcyhuKSAtPiAoYnl0ZXMsIGlzX2NyeXB0b2dyYXBoaWMpXG5cCitcblwKK0dlbmVyYXRlIG4gcHNldWRvLXJhbmRvbSBieXRlcy4gaXNfY3J5cHRvZ3JhcGhpYyBpcyBUcnVlIGlmIHRoZSBieXRlc1wKK2dlbmVyYXRlZCBhcmUgY3J5cHRvZ3JhcGhpY2FsbHkgc3Ryb25nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgogUHlTU0xfUkFORF9zdGF0dXMoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhSQU5EX3N0YXR1cygpKTsKQEAgLTE5NTEsNiArMjUyMiwxMCBAQAogI2lmZGVmIEhBVkVfT1BFTlNTTF9SQU5ECiAgICAgeyJSQU5EX2FkZCIsICAgICAgICAgICAgUHlTU0xfUkFORF9hZGQsIE1FVEhfVkFSQVJHUywKICAgICAgUHlTU0xfUkFORF9hZGRfZG9jfSwKKyAgICB7IlJBTkRfYnl0ZXMiLCAgICAgICAgICBQeVNTTF9SQU5EX2J5dGVzLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5U1NMX1JBTkRfYnl0ZXNfZG9jfSwKKyAgICB7IlJBTkRfcHNldWRvX2J5dGVzIiwgICBQeVNTTF9SQU5EX3BzZXVkb19ieXRlcywgTUVUSF9WQVJBUkdTLAorICAgICBQeVNTTF9SQU5EX3BzZXVkb19ieXRlc19kb2N9LAogICAgIHsiUkFORF9lZ2QiLCAgICAgICAgICAgIFB5U1NMX1JBTkRfZWdkLCBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5U1NMX1JBTkRfZWdkX2RvY30sCiAgICAgeyJSQU5EX3N0YXR1cyIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5U1NMX1JBTkRfc3RhdHVzLCBNRVRIX05PQVJHUywKQEAgLTIwNzEsNiArMjY0Niw4IEBACiAgICAgdW5zaWduZWQgbG9uZyBsaWJ2ZXI7CiAgICAgdW5zaWduZWQgaW50IG1ham9yLCBtaW5vciwgZml4LCBwYXRjaCwgc3RhdHVzOwogICAgIFB5U29ja2V0TW9kdWxlX0FQSU9iamVjdCAqc29ja2V0X2FwaTsKKyAgICBzdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgKmVycmNvZGU7CisgICAgc3RydWN0IHB5X3NzbF9saWJyYXJ5X2NvZGUgKmxpYmNvZGU7CiAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNTTENvbnRleHRfVHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIxMDAsMTIgKzI2NzcsMzggQEAKICAgICBPcGVuU1NMX2FkZF9hbGxfYWxnb3JpdGhtcygpOwogCiAgICAgLyogQWRkIHN5bWJvbHMgdG8gbW9kdWxlIGRpY3QgKi8KLSAgICBQeVNTTEVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzc2wuU1NMRXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTb2NrZXRNb2R1bGUuZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBzc2xlcnJvcl90eXBlX3Nsb3RzWzBdLnBmdW5jID0gUHlFeGNfT1NFcnJvcjsKKyAgICBQeVNTTEVycm9yT2JqZWN0ID0gUHlUeXBlX0Zyb21TcGVjKCZzc2xlcnJvcl90eXBlX3NwZWMpOwogICAgIGlmIChQeVNTTEVycm9yT2JqZWN0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMRXJyb3IiLCBQeVNTTEVycm9yT2JqZWN0KSAhPSAwKQorCisgICAgUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFplcm9SZXR1cm5FcnJvciIsIFNTTFplcm9SZXR1cm5FcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMV2FudFJlYWRFcnJvck9iamVjdCA9IFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MoCisgICAgICAgICJzc2wuU1NMV2FudFJlYWRFcnJvciIsIFNTTFdhbnRSZWFkRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBQeVNTTFdhbnRXcml0ZUVycm9yT2JqZWN0ID0gUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygKKyAgICAgICAgInNzbC5TU0xXYW50V3JpdGVFcnJvciIsIFNTTFdhbnRXcml0ZUVycm9yX2RvYywKKyAgICAgICAgUHlTU0xFcnJvck9iamVjdCwgTlVMTCk7CisgICAgUHlTU0xTeXNjYWxsRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTFN5c2NhbGxFcnJvciIsIFNTTFN5c2NhbGxFcnJvcl9kb2MsCisgICAgICAgIFB5U1NMRXJyb3JPYmplY3QsIE5VTEwpOworICAgIFB5U1NMRU9GRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKAorICAgICAgICAic3NsLlNTTEVPRkVycm9yIiwgU1NMRU9GRXJyb3JfZG9jLAorICAgICAgICBQeVNTTEVycm9yT2JqZWN0LCBOVUxMKTsKKyAgICBpZiAoUHlTU0xaZXJvUmV0dXJuRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTFdhbnRSZWFkRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTFdhbnRXcml0ZUVycm9yT2JqZWN0ID09IE5VTEwKKyAgICAgICAgfHwgUHlTU0xTeXNjYWxsRXJyb3JPYmplY3QgPT0gTlVMTAorICAgICAgICB8fCBQeVNTTEVPRkVycm9yT2JqZWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMRXJyb3IiLCBQeVNTTEVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xaZXJvUmV0dXJuRXJyb3IiLCBQeVNTTFplcm9SZXR1cm5FcnJvck9iamVjdCkgIT0gMAorICAgICAgICB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMV2FudFJlYWRFcnJvciIsIFB5U1NMV2FudFJlYWRFcnJvck9iamVjdCkgIT0gMAorICAgICAgICB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMV2FudFdyaXRlRXJyb3IiLCBQeVNTTFdhbnRXcml0ZUVycm9yT2JqZWN0KSAhPSAwCisgICAgICAgIHx8IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTU0xTeXNjYWxsRXJyb3IiLCBQeVNTTFN5c2NhbGxFcnJvck9iamVjdCkgIT0gMAorICAgICAgICB8fCBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU1NMRU9GRXJyb3IiLCBQeVNTTEVPRkVycm9yT2JqZWN0KSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9TU0xDb250ZXh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopJlB5U1NMQ29udGV4dF9UeXBlKSAhPSAwKQpAQCAtMjE1OCw2ICsyNzYxLDE2IEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1NTTHYyIiwgU1NMX09QX05PX1NTTHYyKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fU1NMdjMiLCBTU0xfT1BfTk9fU1NMdjMpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19UTFN2MSIsIFNTTF9PUF9OT19UTFN2MSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9ESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0RIX1VTRSk7CisjaWZkZWYgU1NMX09QX1NJTkdMRV9FQ0RIX1VTRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9TSU5HTEVfRUNESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0VDREhfVVNFKTsKKyNlbmRpZgorI2lmZGVmIFNTTF9PUF9OT19DT01QUkVTU0lPTgorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19DT01QUkVTU0lPTiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX05PX0NPTVBSRVNTSU9OKTsKKyNlbmRpZgogCiAjaWZkZWYgU1NMX0NUUkxfU0VUX1RMU0VYVF9IT1NUTkFNRQogICAgIHIgPSBQeV9UcnVlOwpAQCAtMjE2Nyw2ICsyNzgwLDc0IEBACiAgICAgUHlfSU5DUkVGKHIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX1NOSSIsIHIpOwogCisjaWYgSEFWRV9PUEVOU1NMX0ZJTklTSEVECisgICAgciA9IFB5X1RydWU7CisjZWxzZQorICAgIHIgPSBQeV9GYWxzZTsKKyNlbmRpZgorICAgIFB5X0lOQ1JFRihyKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19UTFNfVU5JUVVFIiwgcik7CisKKyNpZmRlZiBPUEVOU1NMX05PX0VDREgKKyAgICByID0gUHlfRmFsc2U7CisjZWxzZQorICAgIHIgPSBQeV9UcnVlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX0VDREgiLCByKTsKKworI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyAgICByID0gUHlfVHJ1ZTsKKyNlbHNlCisgICAgciA9IFB5X0ZhbHNlOworI2VuZGlmCisgICAgUHlfSU5DUkVGKHIpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX05QTiIsIHIpOworCisgICAgLyogTWFwcGluZ3MgZm9yIGVycm9yIGNvZGVzICovCisgICAgZXJyX2NvZGVzX3RvX25hbWVzID0gUHlEaWN0X05ldygpOworICAgIGVycl9uYW1lc190b19jb2RlcyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoZXJyX2NvZGVzX3RvX25hbWVzID09IE5VTEwgfHwgZXJyX25hbWVzX3RvX2NvZGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVycmNvZGUgPSBlcnJvcl9jb2RlczsKKyAgICB3aGlsZSAoZXJyY29kZS0+bW5lbW9uaWMgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbW5lbW8sICprZXk7CisgICAgICAgIG1uZW1vID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZXJyY29kZS0+bW5lbW9uaWMpOworICAgICAgICBrZXkgPSBQeV9CdWlsZFZhbHVlKCJpaSIsIGVycmNvZGUtPmxpYnJhcnksIGVycmNvZGUtPnJlYXNvbik7CisgICAgICAgIGlmIChtbmVtbyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShlcnJfY29kZXNfdG9fbmFtZXMsIGtleSwgbW5lbW8pKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShlcnJfbmFtZXNfdG9fY29kZXMsIG1uZW1vLCBrZXkpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBQeV9ERUNSRUYobW5lbW8pOworICAgICAgICBlcnJjb2RlKys7CisgICAgfQorICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycl9jb2Rlc190b19uYW1lcyIsIGVycl9jb2Rlc190b19uYW1lcykpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycl9uYW1lc190b19jb2RlcyIsIGVycl9uYW1lc190b19jb2RlcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGliX2NvZGVzX3RvX25hbWVzID0gUHlEaWN0X05ldygpOworICAgIGlmIChsaWJfY29kZXNfdG9fbmFtZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGliY29kZSA9IGxpYnJhcnlfY29kZXM7CisgICAgd2hpbGUgKGxpYmNvZGUtPmxpYnJhcnkgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbW5lbW8sICprZXk7CisgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhsaWJjb2RlLT5jb2RlKTsKKyAgICAgICAgbW5lbW8gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhsaWJjb2RlLT5saWJyYXJ5KTsKKyAgICAgICAgaWYgKGtleSA9PSBOVUxMIHx8IG1uZW1vID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGxpYl9jb2Rlc190b19uYW1lcywga2V5LCBtbmVtbykpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihtbmVtbyk7CisgICAgICAgIGxpYmNvZGUrKzsKKyAgICB9CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAibGliX2NvZGVzX3RvX25hbWVzIiwgbGliX2NvZGVzX3RvX25hbWVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgCiAgICAgLyogT3BlblNTTCB2ZXJzaW9uICovCiAgICAgLyogU1NMZWF5KCkgZ2l2ZXMgdXMgdGhlIHZlcnNpb24gb2YgdGhlIGxpYnJhcnkgbGlua2VkIGFnYWluc3QsCiAgICAgICAgd2hpY2ggY291bGQgYmUgZGlmZmVyZW50IGZyb20gdGhlIGhlYWRlcnMgdmVyc2lvbi4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbF9kYXRhLmggYi9Nb2R1bGVzL19zc2xfZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYThkN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19zc2xfZGF0YS5oCkBAIC0wLDAgKzEsMTY1MyBAQAorLyogRmlsZSBnZW5lcmF0ZWQgYnkgVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkgKi8KKy8qIEdlbmVyYXRlZCBvbiAyMDEyLTA1LTE2VDIzOjU2OjQwLjk4MTM4MiAqLworCitzdGF0aWMgc3RydWN0IHB5X3NzbF9saWJyYXJ5X2NvZGUgbGlicmFyeV9jb2Rlc1tdID0geworICAgIHsiUEVNIiwgRVJSX0xJQl9QRU19LAorICAgIHsiU1NMIiwgRVJSX0xJQl9TU0x9LAorICAgIHsiWDUwOSIsIEVSUl9MSUJfWDUwOX0sCisgICAgeyBOVUxMIH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgcHlfc3NsX2Vycm9yX2NvZGUgZXJyb3JfY29kZXNbXSA9IHsKKyAgI2lmZGVmIFBFTV9SX0JBRF9CQVNFNjRfREVDT0RFCisgICAgeyJCQURfQkFTRTY0X0RFQ09ERSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfQkFTRTY0X0RFQ09ERX0sCisgICNlbHNlCisgICAgeyJCQURfQkFTRTY0X0RFQ09ERSIsIEVSUl9MSUJfUEVNLCAxMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9ERUNSWVBUCisgICAgeyJCQURfREVDUllQVCIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfREVDUllQVH0sCisgICNlbHNlCisgICAgeyJCQURfREVDUllQVCIsIEVSUl9MSUJfUEVNLCAxMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0JBRF9FTkRfTElORQorICAgIHsiQkFEX0VORF9MSU5FIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JBRF9FTkRfTElORX0sCisgICNlbHNlCisgICAgeyJCQURfRU5EX0xJTkUiLCBFUlJfTElCX1BFTSwgMTAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfSVZfQ0hBUlMKKyAgICB7IkJBRF9JVl9DSEFSUyIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfSVZfQ0hBUlN9LAorICAjZWxzZQorICAgIHsiQkFEX0lWX0NIQVJTIiwgRVJSX0xJQl9QRU0sIDEwM30sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQkFEX01BR0lDX05VTUJFUgorICAgIHsiQkFEX01BR0lDX05VTUJFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfTUFHSUNfTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9NQUdJQ19OVU1CRVIiLCBFUlJfTElCX1BFTSwgMTE2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfUEFTU1dPUkRfUkVBRAorICAgIHsiQkFEX1BBU1NXT1JEX1JFQUQiLCBFUlJfTElCX1BFTSwgUEVNX1JfQkFEX1BBU1NXT1JEX1JFQUR9LAorICAjZWxzZQorICAgIHsiQkFEX1BBU1NXT1JEX1JFQUQiLCBFUlJfTElCX1BFTSwgMTA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9CQURfVkVSU0lPTl9OVU1CRVIKKyAgICB7IkJBRF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfUEVNLCBQRU1fUl9CQURfVkVSU0lPTl9OVU1CRVJ9LAorICAjZWxzZQorICAgIHsiQkFEX1ZFUlNJT05fTlVNQkVSIiwgRVJSX0xJQl9QRU0sIDExN30sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQklPX1dSSVRFX0ZBSUxVUkUKKyAgICB7IkJJT19XUklURV9GQUlMVVJFIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0JJT19XUklURV9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJJT19XUklURV9GQUlMVVJFIiwgRVJSX0xJQl9QRU0sIDExOH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfQ0lQSEVSX0lTX05VTEwKKyAgICB7IkNJUEhFUl9JU19OVUxMIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0NJUEhFUl9JU19OVUxMfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9JU19OVUxMIiwgRVJSX0xJQl9QRU0sIDEyN30sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWQorICAgIHsiRVJST1JfQ09OVkVSVElOR19QUklWQVRFX0tFWSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9FUlJPUl9DT05WRVJUSU5HX1BSSVZBVEVfS0VZfSwKKyAgI2Vsc2UKKyAgICB7IkVSUk9SX0NPTlZFUlRJTkdfUFJJVkFURV9LRVkiLCBFUlJfTElCX1BFTSwgMTE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9FWFBFQ1RJTkdfUFJJVkFURV9LRVlfQkxPQgorICAgIHsiRVhQRUNUSU5HX1BSSVZBVEVfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgUEVNX1JfRVhQRUNUSU5HX1BSSVZBVEVfS0VZX0JMT0J9LAorICAjZWxzZQorICAgIHsiRVhQRUNUSU5HX1BSSVZBVEVfS0VZX0JMT0IiLCBFUlJfTElCX1BFTSwgMTE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9FWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CCisgICAgeyJFWFBFQ1RJTkdfUFVCTElDX0tFWV9CTE9CIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0VYUEVDVElOR19QVUJMSUNfS0VZX0JMT0J9LAorICAjZWxzZQorICAgIHsiRVhQRUNUSU5HX1BVQkxJQ19LRVlfQkxPQiIsIEVSUl9MSUJfUEVNLCAxMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX0lOQ09OU0lTVEVOVF9IRUFERVIKKyAgICB7IklOQ09OU0lTVEVOVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfSU5DT05TSVNURU5UX0hFQURFUn0sCisgICNlbHNlCisgICAgeyJJTkNPTlNJU1RFTlRfSEVBREVSIiwgRVJSX0xJQl9QRU0sIDEyMX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfS0VZQkxPQl9IRUFERVJfUEFSU0VfRVJST1IKKyAgICB7IktFWUJMT0JfSEVBREVSX1BBUlNFX0VSUk9SIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0tFWUJMT0JfSEVBREVSX1BBUlNFX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IktFWUJMT0JfSEVBREVSX1BBUlNFX0VSUk9SIiwgRVJSX0xJQl9QRU0sIDEyMn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfS0VZQkxPQl9UT09fU0hPUlQKKyAgICB7IktFWUJMT0JfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIFBFTV9SX0tFWUJMT0JfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IktFWUJMT0JfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIDEyM30sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9UX0RFS19JTkZPCisgICAgeyJOT1RfREVLX0lORk8iLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9UX0RFS19JTkZPfSwKKyAgI2Vsc2UKKyAgICB7Ik5PVF9ERUtfSU5GTyIsIEVSUl9MSUJfUEVNLCAxMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX05PVF9FTkNSWVBURUQKKyAgICB7Ik5PVF9FTkNSWVBURUQiLCBFUlJfTElCX1BFTSwgUEVNX1JfTk9UX0VOQ1JZUFRFRH0sCisgICNlbHNlCisgICAgeyJOT1RfRU5DUllQVEVEIiwgRVJSX0xJQl9QRU0sIDEwNn0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfTk9UX1BST0NfVFlQRQorICAgIHsiTk9UX1BST0NfVFlQRSIsIEVSUl9MSUJfUEVNLCBQRU1fUl9OT1RfUFJPQ19UWVBFfSwKKyAgI2Vsc2UKKyAgICB7Ik5PVF9QUk9DX1RZUEUiLCBFUlJfTElCX1BFTSwgMTA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9OT19TVEFSVF9MSU5FCisgICAgeyJOT19TVEFSVF9MSU5FIiwgRVJSX0xJQl9QRU0sIFBFTV9SX05PX1NUQVJUX0xJTkV9LAorICAjZWxzZQorICAgIHsiTk9fU1RBUlRfTElORSIsIEVSUl9MSUJfUEVNLCAxMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1BST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkQKKyAgICB7IlBST0JMRU1TX0dFVFRJTkdfUEFTU1dPUkQiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFJPQkxFTVNfR0VUVElOR19QQVNTV09SRH0sCisgICNlbHNlCisgICAgeyJQUk9CTEVNU19HRVRUSU5HX1BBU1NXT1JEIiwgRVJSX0xJQl9QRU0sIDEwOX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFVCTElDX0tFWV9OT19SU0EKKyAgICB7IlBVQkxJQ19LRVlfTk9fUlNBIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1BVQkxJQ19LRVlfTk9fUlNBfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfTk9fUlNBIiwgRVJSX0xJQl9QRU0sIDExMH0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUFZLX0RBVEFfVE9PX1NIT1JUCisgICAgeyJQVktfREFUQV9UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFZLX0RBVEFfVE9PX1NIT1JUfSwKKyAgI2Vsc2UKKyAgICB7IlBWS19EQVRBX1RPT19TSE9SVCIsIEVSUl9MSUJfUEVNLCAxMjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1BWS19UT09fU0hPUlQKKyAgICB7IlBWS19UT09fU0hPUlQiLCBFUlJfTElCX1BFTSwgUEVNX1JfUFZLX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJQVktfVE9PX1NIT1JUIiwgRVJSX0xJQl9QRU0sIDEyNX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfUkVBRF9LRVkKKyAgICB7IlJFQURfS0VZIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1JFQURfS0VZfSwKKyAgI2Vsc2UKKyAgICB7IlJFQURfS0VZIiwgRVJSX0xJQl9QRU0sIDExMX0sCisgICNlbmRpZgorICAjaWZkZWYgUEVNX1JfU0hPUlRfSEVBREVSCisgICAgeyJTSE9SVF9IRUFERVIiLCBFUlJfTElCX1BFTSwgUEVNX1JfU0hPUlRfSEVBREVSfSwKKyAgI2Vsc2UKKyAgICB7IlNIT1JUX0hFQURFUiIsIEVSUl9MSUJfUEVNLCAxMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1VOU1VQUE9SVEVEX0NJUEhFUgorICAgIHsiVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1VOU1VQUE9SVEVEX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1BFTSwgMTEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBQRU1fUl9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OCisgICAgeyJVTlNVUFBPUlRFRF9FTkNSWVBUSU9OIiwgRVJSX0xJQl9QRU0sIFBFTV9SX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT059LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfRU5DUllQVElPTiIsIEVSUl9MSUJfUEVNLCAxMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFBFTV9SX1VOU1VQUE9SVEVEX0tFWV9DT01QT05FTlRTCisgICAgeyJVTlNVUFBPUlRFRF9LRVlfQ09NUE9ORU5UUyIsIEVSUl9MSUJfUEVNLCBQRU1fUl9VTlNVUFBPUlRFRF9LRVlfQ09NUE9ORU5UU30sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9LRVlfQ09NUE9ORU5UUyIsIEVSUl9MSUJfUEVNLCAxMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0FQUF9EQVRBX0lOX0hBTkRTSEFLRQorICAgIHsiQVBQX0RBVEFfSU5fSEFORFNIQUtFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0FQUF9EQVRBX0lOX0hBTkRTSEFLRX0sCisgICNlbHNlCisgICAgeyJBUFBfREFUQV9JTl9IQU5EU0hBS0UiLCBFUlJfTElCX1NTTCwgMTAwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9BVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFQKKyAgICB7IkFUVEVNUFRfVE9fUkVVU0VfU0VTU0lPTl9JTl9ESUZGRVJFTlRfQ09OVEVYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9BVFRFTVBUX1RPX1JFVVNFX1NFU1NJT05fSU5fRElGRkVSRU5UX0NPTlRFWFR9LAorICAjZWxzZQorICAgIHsiQVRURU1QVF9UT19SRVVTRV9TRVNTSU9OX0lOX0RJRkZFUkVOVF9DT05URVhUIiwgRVJSX0xJQl9TU0wsIDI3Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0FMRVJUX1JFQ09SRAorICAgIHsiQkFEX0FMRVJUX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfQUxFUlRfUkVDT1JEfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9BTEVSVF9SRUNPUkQiLCBFUlJfTElCX1NTTCwgMTAxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQVVUSEVOVElDQVRJT05fVFlQRQorICAgIHsiQkFEX0FVVEhFTlRJQ0FUSU9OX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0FVVEhFTlRJQ0FUSU9OX1RZUEV9LAorICAjZWxzZQorICAgIHsiQkFEX0FVVEhFTlRJQ0FUSU9OX1RZUEUiLCBFUlJfTElCX1NTTCwgMTAyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfQ0hBTkdFX0NJUEhFUl9TUEVDCisgICAgeyJCQURfQ0hBTkdFX0NJUEhFUl9TUEVDIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9DSEFOR0VfQ0lQSEVSX1NQRUN9LAorICAjZWxzZQorICAgIHsiQkFEX0NIQU5HRV9DSVBIRVJfU1BFQyIsIEVSUl9MSUJfU1NMLCAxMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9DSEVDS1NVTQorICAgIHsiQkFEX0NIRUNLU1VNIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9DSEVDS1NVTX0sCisgICNlbHNlCisgICAgeyJCQURfQ0hFQ0tTVU0iLCBFUlJfTElCX1NTTCwgMTA0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREFUQV9SRVRVUk5FRF9CWV9DQUxMQkFDSworICAgIHsiQkFEX0RBVEFfUkVUVVJORURfQllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RBVEFfUkVUVVJORURfQllfQ0FMTEJBQ0t9LAorICAjZWxzZQorICAgIHsiQkFEX0RBVEFfUkVUVVJORURfQllfQ0FMTEJBQ0siLCBFUlJfTElCX1NTTCwgMTA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREVDT01QUkVTU0lPTgorICAgIHsiQkFEX0RFQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RFQ09NUFJFU1NJT059LAorICAjZWxzZQorICAgIHsiQkFEX0RFQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgMTA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfREhfR19MRU5HVEgKKyAgICB7IkJBRF9ESF9HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfREhfR19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RIX0dfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDEwOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0RIX1BVQl9LRVlfTEVOR1RICisgICAgeyJCQURfREhfUFVCX0tFWV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RIX1BVQl9LRVlfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9ESF9QVUJfS0VZX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9ESF9QX0xFTkdUSAorICAgIHsiQkFEX0RIX1BfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9ESF9QX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfREhfUF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRElHRVNUX0xFTkdUSAorICAgIHsiQkFEX0RJR0VTVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RJR0VTVF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0RJR0VTVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRFNBX1NJR05BVFVSRQorICAgIHsiQkFEX0RTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0RTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiQkFEX0RTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRUNDX0NFUlQKKyAgICB7IkJBRF9FQ0NfQ0VSVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRUNDX0NFUlR9LAorICAjZWxzZQorICAgIHsiQkFEX0VDQ19DRVJUIiwgRVJSX0xJQl9TU0wsIDMwNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX0VDRFNBX1NJR05BVFVSRQorICAgIHsiQkFEX0VDRFNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfRUNEU0FfU0lHTkFUVVJFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9FQ0RTQV9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgMzA1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfRUNQT0lOVAorICAgIHsiQkFEX0VDUE9JTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0VDUE9JTlR9LAorICAjZWxzZQorICAgIHsiQkFEX0VDUE9JTlQiLCBFUlJfTElCX1NTTCwgMzA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfSEFORFNIQUtFX0xFTkdUSAorICAgIHsiQkFEX0hBTkRTSEFLRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0hBTkRTSEFLRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0hBTkRTSEFLRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzMyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfSEVMTE9fUkVRVUVTVAorICAgIHsiQkFEX0hFTExPX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX0hFTExPX1JFUVVFU1R9LAorICAjZWxzZQorICAgIHsiQkFEX0hFTExPX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgMTA1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfTEVOR1RICisgICAgeyJCQURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAyNzF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9NQUNfREVDT0RFCisgICAgeyJCQURfTUFDX0RFQ09ERSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTUFDX0RFQ09ERX0sCisgICNlbHNlCisgICAgeyJCQURfTUFDX0RFQ09ERSIsIEVSUl9MSUJfU1NMLCAxMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9NQUNfTEVOR1RICisgICAgeyJCQURfTUFDX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfTUFDX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfTUFDX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAzMzN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9NRVNTQUdFX1RZUEUKKyAgICB7IkJBRF9NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX01FU1NBR0VfVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfTUVTU0FHRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDExNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1BBQ0tFVF9MRU5HVEgKKyAgICB7IkJBRF9QQUNLRVRfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9QQUNLRVRfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QQUNLRVRfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDExNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSCisgICAgeyJCQURfUFJPVE9DT0xfVkVSU0lPTl9OVU1CRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1BST1RPQ09MX1ZFUlNJT05fTlVNQkVSfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9QUk9UT0NPTF9WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCAxMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEgKKyAgICB7IkJBRF9QU0tfSURFTlRJVFlfSElOVF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1BTS19JREVOVElUWV9ISU5UX0xFTkdUSH0sCisgICNlbHNlCisgICAgeyJCQURfUFNLX0lERU5USVRZX0hJTlRfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDMxNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JFU1BPTlNFX0FSR1VNRU5UCisgICAgeyJCQURfUkVTUE9OU0VfQVJHVU1FTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1JFU1BPTlNFX0FSR1VNRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SRVNQT05TRV9BUkdVTUVOVCIsIEVSUl9MSUJfU1NMLCAxMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfREVDUllQVAorICAgIHsiQkFEX1JTQV9ERUNSWVBUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfREVDUllQVH0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX0RFQ1JZUFQiLCBFUlJfTElCX1NTTCwgMTE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX0VOQ1JZUFQKKyAgICB7IkJBRF9SU0FfRU5DUllQVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUlNBX0VOQ1JZUFR9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9FTkNSWVBUIiwgRVJSX0xJQl9TU0wsIDExOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1JTQV9FX0xFTkdUSAorICAgIHsiQkFEX1JTQV9FX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUlNBX0VfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9SU0FfRV9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMTIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfUlNBX01PRFVMVVNfTEVOR1RICisgICAgeyJCQURfUlNBX01PRFVMVVNfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9SU0FfTU9EVUxVU19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1JTQV9NT0RVTFVTX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMjF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9SU0FfU0lHTkFUVVJFCisgICAgeyJCQURfUlNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfUlNBX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfUlNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAxMjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TSUdOQVRVUkUKKyAgICB7IkJBRF9TSUdOQVRVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQkFEX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJCQURfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIDEyM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkFEX1NTTF9GSUxFVFlQRQorICAgIHsiQkFEX1NTTF9GSUxFVFlQRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfU1NMX0ZJTEVUWVBFfSwKKyAgI2Vsc2UKKyAgICB7IkJBRF9TU0xfRklMRVRZUEUiLCBFUlJfTElCX1NTTCwgMTI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfU1NMX1NFU1NJT05fSURfTEVOR1RICisgICAgeyJCQURfU1NMX1NFU1NJT05fSURfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TU0xfU0VTU0lPTl9JRF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiQkFEX1NTTF9TRVNTSU9OX0lEX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0JBRF9TVEFURQorICAgIHsiQkFEX1NUQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JBRF9TVEFURX0sCisgICNlbHNlCisgICAgeyJCQURfU1RBVEUiLCBFUlJfTElCX1NTTCwgMTI2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CQURfV1JJVEVfUkVUUlkKKyAgICB7IkJBRF9XUklURV9SRVRSWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CQURfV1JJVEVfUkVUUll9LAorICAjZWxzZQorICAgIHsiQkFEX1dSSVRFX1JFVFJZIiwgRVJSX0xJQl9TU0wsIDEyN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQklPX05PVF9TRVQKKyAgICB7IkJJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0JJT19OT1RfU0VUfSwKKyAgI2Vsc2UKKyAgICB7IkJJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDEyOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORworICAgIHsiQkxPQ0tfQ0lQSEVSX1BBRF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CTE9DS19DSVBIRVJfUEFEX0lTX1dST05HfSwKKyAgI2Vsc2UKKyAgICB7IkJMT0NLX0NJUEhFUl9QQURfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgMTI5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9CTl9MSUIKKyAgICB7IkJOX0xJQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9CTl9MSUJ9LAorICAjZWxzZQorICAgIHsiQk5fTElCIiwgRVJSX0xJQl9TU0wsIDEzMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0FfRE5fTEVOR1RIX01JU01BVENICisgICAgeyJDQV9ETl9MRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0FfRE5fTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkNBX0ROX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAxMzF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NBX0ROX1RPT19MT05HCisgICAgeyJDQV9ETl9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DQV9ETl9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJDQV9ETl9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxMzJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NDU19SRUNFSVZFRF9FQVJMWQorICAgIHsiQ0NTX1JFQ0VJVkVEX0VBUkxZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NDU19SRUNFSVZFRF9FQVJMWX0sCisgICNlbHNlCisgICAgeyJDQ1NfUkVDRUlWRURfRUFSTFkiLCBFUlJfTElCX1NTTCwgMTMzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9DRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVECisgICAgeyJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NFUlRJRklDQVRFX1ZFUklGWV9GQUlMRUR9LAorICAjZWxzZQorICAgIHsiQ0VSVElGSUNBVEVfVkVSSUZZX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxMzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NFUlRfTEVOR1RIX01JU01BVENICisgICAgeyJDRVJUX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DRVJUX0xFTkdUSF9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJDRVJUX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAxMzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NIQUxMRU5HRV9JU19ESUZGRVJFTlQKKyAgICB7IkNIQUxMRU5HRV9JU19ESUZGRVJFTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0hBTExFTkdFX0lTX0RJRkZFUkVOVH0sCisgICNlbHNlCisgICAgeyJDSEFMTEVOR0VfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIDEzNn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RICisgICAgeyJDSVBIRVJfQ09ERV9XUk9OR19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0lQSEVSX0NPREVfV1JPTkdfTEVOR1RIfSwKKyAgI2Vsc2UKKyAgICB7IkNJUEhFUl9DT0RFX1dST05HX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAxMzd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NJUEhFUl9PUl9IQVNIX1VOQVZBSUxBQkxFCisgICAgeyJDSVBIRVJfT1JfSEFTSF9VTkFWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DSVBIRVJfT1JfSEFTSF9VTkFWQUlMQUJMRX0sCisgICNlbHNlCisgICAgeyJDSVBIRVJfT1JfSEFTSF9VTkFWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCAxMzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NJUEhFUl9UQUJMRV9TUkNfRVJST1IKKyAgICB7IkNJUEhFUl9UQUJMRV9TUkNfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0lQSEVSX1RBQkxFX1NSQ19FUlJPUn0sCisgICNlbHNlCisgICAgeyJDSVBIRVJfVEFCTEVfU1JDX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDEzOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ0xJRU5USEVMTE9fVExTRVhUCisgICAgeyJDTElFTlRIRUxMT19UTFNFWFQiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ0xJRU5USEVMTE9fVExTRVhUfSwKKyAgI2Vsc2UKKyAgICB7IkNMSUVOVEhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCAyMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTVBSRVNTRURfTEVOR1RIX1RPT19MT05HCisgICAgeyJDT01QUkVTU0VEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0VEX0xFTkdUSF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJDT01QUkVTU0VEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxNDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTVBSRVNTSU9OX0RJU0FCTEVECisgICAgeyJDT01QUkVTU0lPTl9ESVNBQkxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9DT01QUkVTU0lPTl9ESVNBQkxFRH0sCisgICNlbHNlCisgICAgeyJDT01QUkVTU0lPTl9ESVNBQkxFRCIsIEVSUl9MSUJfU1NMLCAzNDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTVBSRVNTSU9OX0ZBSUxVUkUKKyAgICB7IkNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09NUFJFU1NJT05fRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJDT01QUkVTU0lPTl9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIDE0MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFCisgICAgeyJDT01QUkVTU0lPTl9JRF9OT1RfV0lUSElOX1BSSVZBVEVfUkFOR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09NUFJFU1NJT05fSURfTk9UX1dJVEhJTl9QUklWQVRFX1JBTkdFfSwKKyAgI2Vsc2UKKyAgICB7IkNPTVBSRVNTSU9OX0lEX05PVF9XSVRISU5fUFJJVkFURV9SQU5HRSIsIEVSUl9MSUJfU1NMLCAzMDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0NPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IKKyAgICB7IkNPTVBSRVNTSU9OX0xJQlJBUllfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09NUFJFU1NJT05fTElCUkFSWV9FUlJPUn0sCisgICNlbHNlCisgICAgeyJDT01QUkVTU0lPTl9MSUJSQVJZX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDE0Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09OTkVDVElPTl9JRF9JU19ESUZGRVJFTlQKKyAgICB7IkNPTk5FQ1RJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTk5FQ1RJT05fSURfSVNfRElGRkVSRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkNPTk5FQ1RJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIDE0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09OTkVDVElPTl9UWVBFX05PVF9TRVQKKyAgICB7IkNPTk5FQ1RJT05fVFlQRV9OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0NPTk5FQ1RJT05fVFlQRV9OT1RfU0VUfSwKKyAgI2Vsc2UKKyAgICB7IkNPTk5FQ1RJT05fVFlQRV9OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIDE0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfQ09PS0lFX01JU01BVENICisgICAgeyJDT09LSUVfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfQ09PS0lFX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IkNPT0tJRV9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCAzMDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RBVEFfQkVUV0VFTl9DQ1NfQU5EX0ZJTklTSEVECisgICAgeyJEQVRBX0JFVFdFRU5fQ0NTX0FORF9GSU5JU0hFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EQVRBX0JFVFdFRU5fQ0NTX0FORF9GSU5JU0hFRH0sCisgICNlbHNlCisgICAgeyJEQVRBX0JFVFdFRU5fQ0NTX0FORF9GSU5JU0hFRCIsIEVSUl9MSUJfU1NMLCAxNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RBVEFfTEVOR1RIX1RPT19MT05HCisgICAgeyJEQVRBX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EQVRBX0xFTkdUSF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJEQVRBX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAxNDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVECisgICAgeyJERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRH0sCisgICNlbHNlCisgICAgeyJERUNSWVBUSU9OX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCAxNDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RFQ1JZUFRJT05fRkFJTEVEX09SX0JBRF9SRUNPUkRfTUFDCisgICAgeyJERUNSWVBUSU9OX0ZBSUxFRF9PUl9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ERUNSWVBUSU9OX0ZBSUxFRF9PUl9CQURfUkVDT1JEX01BQ30sCisgICNlbHNlCisgICAgeyJERUNSWVBUSU9OX0ZBSUxFRF9PUl9CQURfUkVDT1JEX01BQyIsIEVSUl9MSUJfU1NMLCAyODF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0RIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkcKKyAgICB7IkRIX1BVQkxJQ19WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfREhfUFVCTElDX1ZBTFVFX0xFTkdUSF9JU19XUk9OR30sCisgICNlbHNlCisgICAgeyJESF9QVUJMSUNfVkFMVUVfTEVOR1RIX0lTX1dST05HIiwgRVJSX0xJQl9TU0wsIDE0OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRElHRVNUX0NIRUNLX0ZBSUxFRAorICAgIHsiRElHRVNUX0NIRUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9ESUdFU1RfQ0hFQ0tfRkFJTEVEfSwKKyAgI2Vsc2UKKyAgICB7IkRJR0VTVF9DSEVDS19GQUlMRUQiLCBFUlJfTElCX1NTTCwgMTQ5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9EVExTX01FU1NBR0VfVE9PX0JJRworICAgIHsiRFRMU19NRVNTQUdFX1RPT19CSUciLCBFUlJfTElCX1NTTCwgU1NMX1JfRFRMU19NRVNTQUdFX1RPT19CSUd9LAorICAjZWxzZQorICAgIHsiRFRMU19NRVNTQUdFX1RPT19CSUciLCBFUlJfTElCX1NTTCwgMzM0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9EVVBMSUNBVEVfQ09NUFJFU1NJT05fSUQKKyAgICB7IkRVUExJQ0FURV9DT01QUkVTU0lPTl9JRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9EVVBMSUNBVEVfQ09NUFJFU1NJT05fSUR9LAorICAjZWxzZQorICAgIHsiRFVQTElDQVRFX0NPTVBSRVNTSU9OX0lEIiwgRVJSX0xJQl9TU0wsIDMwOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX0tFWV9BR1JFRU1FTlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNDX0NFUlRfTk9UX0ZPUl9LRVlfQUdSRUVNRU5UfSwKKyAgI2Vsc2UKKyAgICB7IkVDQ19DRVJUX05PVF9GT1JfS0VZX0FHUkVFTUVOVCIsIEVSUl9MSUJfU1NMLCAzMTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX05PVF9GT1JfU0lHTklORworICAgIHsiRUNDX0NFUlRfTk9UX0ZPUl9TSUdOSU5HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX05PVF9GT1JfU0lHTklOR30sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9OT1RfRk9SX1NJR05JTkciLCBFUlJfTElCX1NTTCwgMzE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9SU0FfU0lHTkFUVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1JTQV9TSUdOQVRVUkV9LAorICAjZWxzZQorICAgIHsiRUNDX0NFUlRfU0hPVUxEX0hBVkVfUlNBX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAzMjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDQ19DRVJUX1NIT1VMRF9IQVZFX1NIQTFfU0lHTkFUVVJFCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9TSEExX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FQ0NfQ0VSVF9TSE9VTERfSEFWRV9TSEExX1NJR05BVFVSRX0sCisgICNlbHNlCisgICAgeyJFQ0NfQ0VSVF9TSE9VTERfSEFWRV9TSEExX1NJR05BVFVSRSIsIEVSUl9MSUJfU1NMLCAzMjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVIKKyAgICB7IkVDR1JPVVBfVE9PX0xBUkdFX0ZPUl9DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfRUNHUk9VUF9UT09fTEFSR0VfRk9SX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJFQ0dST1VQX1RPT19MQVJHRV9GT1JfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDMxMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORworICAgIHsiRU5DUllQVEVEX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FTkNSWVBURURfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IkVOQ1JZUFRFRF9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMTUwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9FUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZCisgICAgeyJFUlJPUl9HRU5FUkFUSU5HX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0VSUk9SX0dFTkVSQVRJTkdfVE1QX1JTQV9LRVl9LAorICAjZWxzZQorICAgIHsiRVJST1JfR0VORVJBVElOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCAyODJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VSUk9SX0lOX1JFQ0VJVkVEX0NJUEhFUl9MSVNUCisgICAgeyJFUlJPUl9JTl9SRUNFSVZFRF9DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9FUlJPUl9JTl9SRUNFSVZFRF9DSVBIRVJfTElTVH0sCisgICNlbHNlCisgICAgeyJFUlJPUl9JTl9SRUNFSVZFRF9DSVBIRVJfTElTVCIsIEVSUl9MSUJfU1NMLCAxNTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0VYQ0VTU0lWRV9NRVNTQUdFX1NJWkUKKyAgICB7IkVYQ0VTU0lWRV9NRVNTQUdFX1NJWkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVhDRVNTSVZFX01FU1NBR0VfU0laRX0sCisgICNlbHNlCisgICAgeyJFWENFU1NJVkVfTUVTU0FHRV9TSVpFIiwgRVJSX0xJQl9TU0wsIDE1Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfRVhUUkFfREFUQV9JTl9NRVNTQUdFCisgICAgeyJFWFRSQV9EQVRBX0lOX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfRVhUUkFfREFUQV9JTl9NRVNTQUdFfSwKKyAgI2Vsc2UKKyAgICB7IkVYVFJBX0RBVEFfSU5fTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCAxNTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0dPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MKKyAgICB7IkdPVF9BX0ZJTl9CRUZPUkVfQV9DQ1MiLCBFUlJfTElCX1NTTCwgU1NMX1JfR09UX0FfRklOX0JFRk9SRV9BX0NDU30sCisgICNlbHNlCisgICAgeyJHT1RfQV9GSU5fQkVGT1JFX0FfQ0NTIiwgRVJSX0xJQl9TU0wsIDE1NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSFRUUFNfUFJPWFlfUkVRVUVTVAorICAgIHsiSFRUUFNfUFJPWFlfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9IVFRQU19QUk9YWV9SRVFVRVNUfSwKKyAgI2Vsc2UKKyAgICB7IkhUVFBTX1BST1hZX1JFUVVFU1QiLCBFUlJfTElCX1NTTCwgMTU1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9IVFRQX1JFUVVFU1QKKyAgICB7IkhUVFBfUkVRVUVTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9IVFRQX1JFUVVFU1R9LAorICAjZWxzZQorICAgIHsiSFRUUF9SRVFVRVNUIiwgRVJSX0xJQl9TU0wsIDE1Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSUxMRUdBTF9QQURESU5HCisgICAgeyJJTExFR0FMX1BBRERJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfSUxMRUdBTF9QQURESU5HfSwKKyAgI2Vsc2UKKyAgICB7IklMTEVHQUxfUEFERElORyIsIEVSUl9MSUJfU1NMLCAyODN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOQ09OU0lTVEVOVF9DT01QUkVTU0lPTgorICAgIHsiSU5DT05TSVNURU5UX0NPTVBSRVNTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOQ09OU0lTVEVOVF9DT01QUkVTU0lPTn0sCisgICNlbHNlCisgICAgeyJJTkNPTlNJU1RFTlRfQ09NUFJFU1NJT04iLCBFUlJfTElCX1NTTCwgMzQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX0NIQUxMRU5HRV9MRU5HVEgKKyAgICB7IklOVkFMSURfQ0hBTExFTkdFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX0NIQUxMRU5HRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9DSEFMTEVOR0VfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIDE1OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfSU5WQUxJRF9DT01NQU5ECisgICAgeyJJTlZBTElEX0NPTU1BTkQiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9DT01NQU5EfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfQ09NTUFORCIsIEVSUl9MSUJfU1NMLCAyODB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfQ09NUFJFU1NJT05fQUxHT1JJVEhNCisgICAgeyJJTlZBTElEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9JTlZBTElEX0NPTVBSRVNTSU9OX0FMR09SSVRITX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0NPTVBSRVNTSU9OX0FMR09SSVRITSIsIEVSUl9MSUJfU1NMLCAzNDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0lOVkFMSURfUFVSUE9TRQorICAgIHsiSU5WQUxJRF9QVVJQT1NFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfUFVSUE9TRX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX1BVUlBPU0UiLCBFUlJfTElCX1NTTCwgMjc4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX1NUQVRVU19SRVNQT05TRQorICAgIHsiSU5WQUxJRF9TVEFUVVNfUkVTUE9OU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9TVEFUVVNfUkVTUE9OU0V9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9TVEFUVVNfUkVTUE9OU0UiLCBFUlJfTElCX1NTTCwgMzI4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX1RJQ0tFVF9LRVlTX0xFTkdUSAorICAgIHsiSU5WQUxJRF9USUNLRVRfS0VZU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfSU5WQUxJRF9USUNLRVRfS0VZU19MRU5HVEh9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9USUNLRVRfS0VZU19MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9JTlZBTElEX1RSVVNUCisgICAgeyJJTlZBTElEX1RSVVNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0lOVkFMSURfVFJVU1R9LAorICAjZWxzZQorICAgIHsiSU5WQUxJRF9UUlVTVCIsIEVSUl9MSUJfU1NMLCAyNzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tFWV9BUkdfVE9PX0xPTkcKKyAgICB7IktFWV9BUkdfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfS0VZX0FSR19UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJLRVlfQVJHX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDI4NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNQorICAgIHsiS1JCNSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1fSwKKyAgI2Vsc2UKKyAgICB7IktSQjUiLCBFUlJfTElCX1NTTCwgMjg1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X0NfQ0NfUFJJTkMKKyAgICB7IktSQjVfQ19DQ19QUklOQyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfQ0NfUFJJTkN9LAorICAjZWxzZQorICAgIHsiS1JCNV9DX0NDX1BSSU5DIiwgRVJSX0xJQl9TU0wsIDI4Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9DX0dFVF9DUkVECisgICAgeyJLUkI1X0NfR0VUX0NSRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9DX0dFVF9DUkVEfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfQ19HRVRfQ1JFRCIsIEVSUl9MSUJfU1NMLCAyODd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19JTklUCisgICAgeyJLUkI1X0NfSU5JVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X0NfSU5JVH0sCisgICNlbHNlCisgICAgeyJLUkI1X0NfSU5JVCIsIEVSUl9MSUJfU1NMLCAyODh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0tSQjVfQ19NS19SRVEKKyAgICB7IktSQjVfQ19NS19SRVEiLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9DX01LX1JFUX0sCisgICNlbHNlCisgICAgeyJLUkI1X0NfTUtfUkVRIiwgRVJSX0xJQl9TU0wsIDI4OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9TX0JBRF9USUNLRVQKKyAgICB7IktSQjVfU19CQURfVElDS0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19CQURfVElDS0VUfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfU19CQURfVElDS0VUIiwgRVJSX0xJQl9TU0wsIDI5MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9TX0lOSVQKKyAgICB7IktSQjVfU19JTklUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19JTklUfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfU19JTklUIiwgRVJSX0xJQl9TU0wsIDI5MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9TX1JEX1JFUQorICAgIHsiS1JCNV9TX1JEX1JFUSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfUkRfUkVRfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfU19SRF9SRVEiLCBFUlJfTElCX1NTTCwgMjkyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9LUkI1X1NfVEtUX0VYUElSRUQKKyAgICB7IktSQjVfU19US1RfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9LUkI1X1NfVEtUX0VYUElSRUR9LAorICAjZWxzZQorICAgIHsiS1JCNV9TX1RLVF9FWFBJUkVEIiwgRVJSX0xJQl9TU0wsIDI5M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9TX1RLVF9OWVYKKyAgICB7IktSQjVfU19US1RfTllWIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0tSQjVfU19US1RfTllWfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfU19US1RfTllWIiwgRVJSX0xJQl9TU0wsIDI5NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfS1JCNV9TX1RLVF9TS0VXCisgICAgeyJLUkI1X1NfVEtUX1NLRVciLCBFUlJfTElCX1NTTCwgU1NMX1JfS1JCNV9TX1RLVF9TS0VXfSwKKyAgI2Vsc2UKKyAgICB7IktSQjVfU19US1RfU0tFVyIsIEVSUl9MSUJfU1NMLCAyOTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xFTkdUSF9NSVNNQVRDSAorICAgIHsiTEVOR1RIX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xFTkdUSF9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJMRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMTU5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9MRU5HVEhfVE9PX1NIT1JUCisgICAgeyJMRU5HVEhfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX0xFTkdUSF9UT09fU0hPUlR9LAorICAjZWxzZQorICAgIHsiTEVOR1RIX1RPT19TSE9SVCIsIEVSUl9MSUJfU1NMLCAxNjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xJQlJBUllfQlVHCisgICAgeyJMSUJSQVJZX0JVRyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9MSUJSQVJZX0JVR30sCisgICNlbHNlCisgICAgeyJMSUJSQVJZX0JVRyIsIEVSUl9MSUJfU1NMLCAyNzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX0xJQlJBUllfSEFTX05PX0NJUEhFUlMKKyAgICB7IkxJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfTElCUkFSWV9IQVNfTk9fQ0lQSEVSU30sCisgICNlbHNlCisgICAgeyJMSUJSQVJZX0hBU19OT19DSVBIRVJTIiwgRVJSX0xJQl9TU0wsIDE2MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUVTU0FHRV9UT09fTE9ORworICAgIHsiTUVTU0FHRV9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NRVNTQUdFX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7Ik1FU1NBR0VfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjk2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX0RIX0RTQV9DRVJUCisgICAgeyJNSVNTSU5HX0RIX0RTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfREhfRFNBX0NFUlR9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19ESF9EU0FfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfREhfS0VZCisgICAgeyJNSVNTSU5HX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCAxNjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfREhfUlNBX0NFUlQKKyAgICB7Ik1JU1NJTkdfREhfUlNBX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19ESF9SU0FfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0RIX1JTQV9DRVJUIiwgRVJSX0xJQl9TU0wsIDE2NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19EU0FfU0lHTklOR19DRVJUCisgICAgeyJNSVNTSU5HX0RTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19EU0FfU0lHTklOR19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfRFNBX1NJR05JTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVkKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9ESF9LRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX0RIX0tFWX0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX0VYUE9SVF9UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIDE2Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19FWFBPUlRfVE1QX1JTQV9LRVkKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfRVhQT1JUX1RNUF9SU0FfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfRVhQT1JUX1RNUF9SU0FfS0VZIiwgRVJSX0xJQl9TU0wsIDE2N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19SU0FfQ0VSVElGSUNBVEUKKyAgICB7Ik1JU1NJTkdfUlNBX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfUlNBX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfUlNBX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDE2OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUCisgICAgeyJNSVNTSU5HX1JTQV9FTkNSWVBUSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19SU0FfRU5DUllQVElOR19DRVJUfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfUlNBX0VOQ1JZUFRJTkdfQ0VSVCIsIEVSUl9MSUJfU1NMLCAxNjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX01JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVAorICAgIHsiTUlTU0lOR19SU0FfU0lHTklOR19DRVJUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfUlNBX1NJR05JTkdfQ0VSVH0sCisgICNlbHNlCisgICAgeyJNSVNTSU5HX1JTQV9TSUdOSU5HX0NFUlQiLCBFUlJfTElCX1NTTCwgMTcwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9ESF9LRVkKKyAgICB7Ik1JU1NJTkdfVE1QX0RIX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9ESF9LRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfREhfS0VZIiwgRVJSX0xJQl9TU0wsIDE3MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19UTVBfRUNESF9LRVkKKyAgICB7Ik1JU1NJTkdfVE1QX0VDREhfS0VZIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVE1QX0VDREhfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfVE1QX0VDREhfS0VZIiwgRVJSX0xJQl9TU0wsIDMxMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTUlTU0lOR19UTVBfUlNBX0tFWQorICAgIHsiTUlTU0lOR19UTVBfUlNBX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfS0VZfSwKKyAgI2Vsc2UKKyAgICB7Ik1JU1NJTkdfVE1QX1JTQV9LRVkiLCBFUlJfTElCX1NTTCwgMTcyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1RNUF9SU0FfUEtFWQorICAgIHsiTUlTU0lOR19UTVBfUlNBX1BLRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTUlTU0lOR19UTVBfUlNBX1BLRVl9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19UTVBfUlNBX1BLRVkiLCBFUlJfTElCX1NTTCwgMTczfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9NSVNTSU5HX1ZFUklGWV9NRVNTQUdFCisgICAgeyJNSVNTSU5HX1ZFUklGWV9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX01JU1NJTkdfVkVSSUZZX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiTUlTU0lOR19WRVJJRllfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCAxNzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVAorICAgIHsiTk9OX1NTTFYyX0lOSVRJQUxfUEFDS0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PTl9TU0xWMl9JTklUSUFMX1BBQ0tFVH0sCisgICNlbHNlCisgICAgeyJOT05fU1NMVjJfSU5JVElBTF9QQUNLRVQiLCBFUlJfTElCX1NTTCwgMTc1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DRVJUSUZJQ0FURVNfUkVUVVJORUQKKyAgICB7Ik5PX0NFUlRJRklDQVRFU19SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DRVJUSUZJQ0FURVNfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVElGSUNBVEVTX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDE3Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfQVNTSUdORUQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX0FTU0lHTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFX0FTU0lHTkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX0FTU0lHTkVEIiwgRVJSX0xJQl9TU0wsIDE3N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfUkVUVVJORUQKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFX1JFVFVSTkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDE3OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU0VUCisgICAgeyJOT19DRVJUSUZJQ0FURV9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0VSVElGSUNBVEVfU0VUfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NFUlRJRklDQVRFX1NFVCIsIEVSUl9MSUJfU1NMLCAxNzl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NFUlRJRklDQVRFX1NQRUNJRklFRAorICAgIHsiTk9fQ0VSVElGSUNBVEVfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NFUlRJRklDQVRFX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19DRVJUSUZJQ0FURV9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgMTgwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DSVBIRVJTX0FWQUlMQUJMRQorICAgIHsiTk9fQ0lQSEVSU19BVkFJTEFCTEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0lQSEVSU19BVkFJTEFCTEV9LAorICAjZWxzZQorICAgIHsiTk9fQ0lQSEVSU19BVkFJTEFCTEUiLCBFUlJfTElCX1NTTCwgMTgxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DSVBIRVJTX1BBU1NFRAorICAgIHsiTk9fQ0lQSEVSU19QQVNTRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0lQSEVSU19QQVNTRUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0lQSEVSU19QQVNTRUQiLCBFUlJfTElCX1NTTCwgMTgyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DSVBIRVJTX1NQRUNJRklFRAorICAgIHsiTk9fQ0lQSEVSU19TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0lQSEVSU19TUEVDSUZJRUR9LAorICAjZWxzZQorICAgIHsiTk9fQ0lQSEVSU19TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgMTgzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DSVBIRVJfTElTVAorICAgIHsiTk9fQ0lQSEVSX0xJU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0lQSEVSX0xJU1R9LAorICAjZWxzZQorICAgIHsiTk9fQ0lQSEVSX0xJU1QiLCBFUlJfTElCX1NTTCwgMTg0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19DSVBIRVJfTUFUQ0gKKyAgICB7Ik5PX0NJUEhFUl9NQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DSVBIRVJfTUFUQ0h9LAorICAjZWxzZQorICAgIHsiTk9fQ0lQSEVSX01BVENIIiwgRVJSX0xJQl9TU0wsIDE4NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfTUVUSE9ECisgICAgeyJOT19DTElFTlRfQ0VSVF9NRVRIT0QiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fQ0xJRU5UX0NFUlRfTUVUSE9EfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX0NMSUVOVF9DRVJUX01FVEhPRCIsIEVSUl9MSUJfU1NMLCAzMzF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NMSUVOVF9DRVJUX1JFQ0VJVkVECisgICAgeyJOT19DTElFTlRfQ0VSVF9SRUNFSVZFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19DTElFTlRfQ0VSVF9SRUNFSVZFRH0sCisgICNlbHNlCisgICAgeyJOT19DTElFTlRfQ0VSVF9SRUNFSVZFRCIsIEVSUl9MSUJfU1NMLCAxODZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX0NPTVBSRVNTSU9OX1NQRUNJRklFRAorICAgIHsiTk9fQ09NUFJFU1NJT05fU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX0NPTVBSRVNTSU9OX1NQRUNJRklFRH0sCisgICNlbHNlCisgICAgeyJOT19DT01QUkVTU0lPTl9TUEVDSUZJRUQiLCBFUlJfTElCX1NTTCwgMTg3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19HT1NUX0NFUlRJRklDQVRFX1NFTlRfQllfUEVFUgorICAgIHsiTk9fR09TVF9DRVJUSUZJQ0FURV9TRU5UX0JZX1BFRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fR09TVF9DRVJUSUZJQ0FURV9TRU5UX0JZX1BFRVJ9LAorICAjZWxzZQorICAgIHsiTk9fR09TVF9DRVJUSUZJQ0FURV9TRU5UX0JZX1BFRVIiLCBFUlJfTElCX1NTTCwgMzMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19NRVRIT0RfU1BFQ0lGSUVECisgICAgeyJOT19NRVRIT0RfU1BFQ0lGSUVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX01FVEhPRF9TUEVDSUZJRUR9LAorICAjZWxzZQorICAgIHsiTk9fTUVUSE9EX1NQRUNJRklFRCIsIEVSUl9MSUJfU1NMLCAxODh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05PX1BSSVZBVEVLRVkKKyAgICB7Ik5PX1BSSVZBVEVLRVkiLCBFUlJfTElCX1NTTCwgU1NMX1JfTk9fUFJJVkFURUtFWX0sCisgICNlbHNlCisgICAgeyJOT19QUklWQVRFS0VZIiwgRVJSX0xJQl9TU0wsIDE4OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFJJVkFURV9LRVlfQVNTSUdORUQKKyAgICB7Ik5PX1BSSVZBVEVfS0VZX0FTU0lHTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX05PX1BSSVZBVEVfS0VZX0FTU0lHTkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BSSVZBVEVfS0VZX0FTU0lHTkVEIiwgRVJSX0xJQl9TU0wsIDE5MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUFJPVE9DT0xTX0FWQUlMQUJMRQorICAgIHsiTk9fUFJPVE9DT0xTX0FWQUlMQUJMRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QUk9UT0NPTFNfQVZBSUxBQkxFfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1BST1RPQ09MU19BVkFJTEFCTEUiLCBFUlJfTElCX1NTTCwgMTkxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19QVUJMSUNLRVkKKyAgICB7Ik5PX1BVQkxJQ0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19QVUJMSUNLRVl9LAorICAjZWxzZQorICAgIHsiTk9fUFVCTElDS0VZIiwgRVJSX0xJQl9TU0wsIDE5Mn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fUkVORUdPVElBVElPTgorICAgIHsiTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19SRU5FR09USUFUSU9OfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1JFTkVHT1RJQVRJT04iLCBFUlJfTElCX1NTTCwgMzM5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19SRVFVSVJFRF9ESUdFU1QKKyAgICB7Ik5PX1JFUVVJUkVEX0RJR0VTVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19SRVFVSVJFRF9ESUdFU1R9LAorICAjZWxzZQorICAgIHsiTk9fUkVRVUlSRURfRElHRVNUIiwgRVJSX0xJQl9TU0wsIDMyNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTk9fU0hBUkVEX0NJUEhFUgorICAgIHsiTk9fU0hBUkVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19TSEFSRURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7Ik5PX1NIQVJFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgMTkzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9OT19WRVJJRllfQ0FMTEJBQ0sKKyAgICB7Ik5PX1ZFUklGWV9DQUxMQkFDSyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9OT19WRVJJRllfQ0FMTEJBQ0t9LAorICAjZWxzZQorICAgIHsiTk9fVkVSSUZZX0NBTExCQUNLIiwgRVJSX0xJQl9TU0wsIDE5NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfTlVMTF9TU0xfQ1RYCisgICAgeyJOVUxMX1NTTF9DVFgiLCBFUlJfTElCX1NTTCwgU1NMX1JfTlVMTF9TU0xfQ1RYfSwKKyAgI2Vsc2UKKyAgICB7Ik5VTExfU1NMX0NUWCIsIEVSUl9MSUJfU1NMLCAxOTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX05VTExfU1NMX01FVEhPRF9QQVNTRUQKKyAgICB7Ik5VTExfU1NMX01FVEhPRF9QQVNTRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfTlVMTF9TU0xfTUVUSE9EX1BBU1NFRH0sCisgICNlbHNlCisgICAgeyJOVUxMX1NTTF9NRVRIT0RfUEFTU0VEIiwgRVJSX0xJQl9TU0wsIDE5Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRAorICAgIHsiT0xEX1NFU1NJT05fQ0lQSEVSX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PTERfU0VTU0lPTl9DSVBIRVJfTk9UX1JFVFVSTkVEfSwKKyAgI2Vsc2UKKyAgICB7Ik9MRF9TRVNTSU9OX0NJUEhFUl9OT1RfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMTk3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9PTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVECisgICAgeyJPTERfU0VTU0lPTl9DT01QUkVTU0lPTl9BTEdPUklUSE1fTk9UX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX09MRF9TRVNTSU9OX0NPTVBSRVNTSU9OX0FMR09SSVRITV9OT1RfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiT0xEX1NFU1NJT05fQ09NUFJFU1NJT05fQUxHT1JJVEhNX05PVF9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCAzNDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09OTFlfVExTX0FMTE9XRURfSU5fRklQU19NT0RFCisgICAgeyJPTkxZX1RMU19BTExPV0VEX0lOX0ZJUFNfTU9ERSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9PTkxZX1RMU19BTExPV0VEX0lOX0ZJUFNfTU9ERX0sCisgICNlbHNlCisgICAgeyJPTkxZX1RMU19BTExPV0VEX0lOX0ZJUFNfTU9ERSIsIEVSUl9MSUJfU1NMLCAyOTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX09QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkcKKyAgICB7Ik9QQVFVRV9QUkZfSU5QVVRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfT1BBUVVFX1BSRl9JTlBVVF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJPUEFRVUVfUFJGX0lOUFVUX1RPT19MT05HIiwgRVJSX0xJQl9TU0wsIDMyN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEFDS0VUX0xFTkdUSF9UT09fTE9ORworICAgIHsiUEFDS0VUX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QQUNLRVRfTEVOR1RIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlBBQ0tFVF9MRU5HVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMTk4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QQVJTRV9UTFNFWFQKKyAgICB7IlBBUlNFX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QQVJTRV9UTFNFWFR9LAorICAjZWxzZQorICAgIHsiUEFSU0VfVExTRVhUIiwgRVJSX0xJQl9TU0wsIDIyN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEFUSF9UT09fTE9ORworICAgIHsiUEFUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QQVRIX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlBBVEhfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjcwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEUKKyAgICB7IlBFRVJfRElEX05PVF9SRVRVUk5fQV9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0RJRF9OT1RfUkVUVVJOX0FfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9ESURfTk9UX1JFVFVSTl9BX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDE5OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUgorICAgIHsiUEVFUl9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QRUVSX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1IiLCBFUlJfTElCX1NTTCwgMjAwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QRUVSX0VSUk9SX0NFUlRJRklDQVRFCisgICAgeyJQRUVSX0VSUk9SX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1JfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiUEVFUl9FUlJPUl9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAyMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEUKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9OT19DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJQRUVSX0VSUk9SX05PX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIDIwMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9OT19DSVBIRVIKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BFRVJfRVJST1JfTk9fQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfTk9fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDIwM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFCisgICAgeyJQRUVSX0VSUk9SX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUEVFUl9FUlJPUl9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlBFRVJfRVJST1JfVU5TVVBQT1JURURfQ0VSVElGSUNBVEVfVFlQRSIsIEVSUl9MSUJfU1NMLCAyMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BSRV9NQUNfTEVOR1RIX1RPT19MT05HCisgICAgeyJQUkVfTUFDX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QUkVfTUFDX0xFTkdUSF9UT09fTE9OR30sCisgICNlbHNlCisgICAgeyJQUkVfTUFDX0xFTkdUSF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyMDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OUworICAgIHsiUFJPQkxFTVNfTUFQUElOR19DSVBIRVJfRlVOQ1RJT05TIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BST0JMRU1TX01BUFBJTkdfQ0lQSEVSX0ZVTkNUSU9OU30sCisgICNlbHNlCisgICAgeyJQUk9CTEVNU19NQVBQSU5HX0NJUEhFUl9GVU5DVElPTlMiLCBFUlJfTElCX1NTTCwgMjA2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QUk9UT0NPTF9JU19TSFVURE9XTgorICAgIHsiUFJPVE9DT0xfSVNfU0hVVERPV04iLCBFUlJfTElCX1NTTCwgU1NMX1JfUFJPVE9DT0xfSVNfU0hVVERPV059LAorICAjZWxzZQorICAgIHsiUFJPVE9DT0xfSVNfU0hVVERPV04iLCBFUlJfTElCX1NTTCwgMjA3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QU0tfSURFTlRJVFlfTk9UX0ZPVU5ECisgICAgeyJQU0tfSURFTlRJVFlfTk9UX0ZPVU5EIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BTS19JREVOVElUWV9OT1RfRk9VTkR9LAorICAjZWxzZQorICAgIHsiUFNLX0lERU5USVRZX05PVF9GT1VORCIsIEVSUl9MSUJfU1NMLCAyMjN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BTS19OT19DTElFTlRfQ0IKKyAgICB7IlBTS19OT19DTElFTlRfQ0IiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFNLX05PX0NMSUVOVF9DQn0sCisgICNlbHNlCisgICAgeyJQU0tfTk9fQ0xJRU5UX0NCIiwgRVJSX0xJQl9TU0wsIDIyNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFNLX05PX1NFUlZFUl9DQgorICAgIHsiUFNLX05PX1NFUlZFUl9DQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QU0tfTk9fU0VSVkVSX0NCfSwKKyAgI2Vsc2UKKyAgICB7IlBTS19OT19TRVJWRVJfQ0IiLCBFUlJfTElCX1NTTCwgMjI1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9QVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1IKKyAgICB7IlBVQkxJQ19LRVlfRU5DUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9QVUJMSUNfS0VZX0VOQ1JZUFRfRVJST1J9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9FTkNSWVBUX0VSUk9SIiwgRVJSX0xJQl9TU0wsIDIwOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUFVCTElDX0tFWV9JU19OT1RfUlNBCisgICAgeyJQVUJMSUNfS0VZX0lTX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgU1NMX1JfUFVCTElDX0tFWV9JU19OT1RfUlNBfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfSVNfTk9UX1JTQSIsIEVSUl9MSUJfU1NMLCAyMDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1BVQkxJQ19LRVlfTk9UX1JTQQorICAgIHsiUFVCTElDX0tFWV9OT1RfUlNBIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1BVQkxJQ19LRVlfTk9UX1JTQX0sCisgICNlbHNlCisgICAgeyJQVUJMSUNfS0VZX05PVF9SU0EiLCBFUlJfTElCX1NTTCwgMjEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUFEX0JJT19OT1RfU0VUCisgICAgeyJSRUFEX0JJT19OT1RfU0VUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQURfQklPX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiUkVBRF9CSU9fTk9UX1NFVCIsIEVSUl9MSUJfU1NMLCAyMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQURfVElNRU9VVF9FWFBJUkVECisgICAgeyJSRUFEX1RJTUVPVVRfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUFEX1RJTUVPVVRfRVhQSVJFRH0sCisgICNlbHNlCisgICAgeyJSRUFEX1RJTUVPVVRfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCAzMTJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQURfV1JPTkdfUEFDS0VUX1RZUEUKKyAgICB7IlJFQURfV1JPTkdfUEFDS0VUX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVBRF9XUk9OR19QQUNLRVRfVFlQRX0sCisgICNlbHNlCisgICAgeyJSRUFEX1dST05HX1BBQ0tFVF9UWVBFIiwgRVJSX0xJQl9TU0wsIDIxMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVDT1JEX0xFTkdUSF9NSVNNQVRDSAorICAgIHsiUkVDT1JEX0xFTkdUSF9NSVNNQVRDSCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRUNPUkRfTEVOR1RIX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IlJFQ09SRF9MRU5HVEhfTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgMjEzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRUNPUkRfVE9PX0xBUkdFCisgICAgeyJSRUNPUkRfVE9PX0xBUkdFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFQ09SRF9UT09fTEFSR0V9LAorICAjZWxzZQorICAgIHsiUkVDT1JEX1RPT19MQVJHRSIsIEVSUl9MSUJfU1NMLCAyMTR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFQ09SRF9UT09fU01BTEwKKyAgICB7IlJFQ09SRF9UT09fU01BTEwiLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVDT1JEX1RPT19TTUFMTH0sCisgICNlbHNlCisgICAgeyJSRUNPUkRfVE9PX1NNQUxMIiwgRVJSX0xJQl9TU0wsIDI5OH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVORUdPVElBVEVfRVhUX1RPT19MT05HCisgICAgeyJSRU5FR09USUFURV9FWFRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVORUdPVElBVEVfRVhUX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlJFTkVHT1RJQVRFX0VYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAzMzV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFTkVHT1RJQVRJT05fRU5DT0RJTkdfRVJSCisgICAgeyJSRU5FR09USUFUSU9OX0VOQ09ESU5HX0VSUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRU5FR09USUFUSU9OX0VOQ09ESU5HX0VSUn0sCisgICNlbHNlCisgICAgeyJSRU5FR09USUFUSU9OX0VOQ09ESU5HX0VSUiIsIEVSUl9MSUJfU1NMLCAzMzZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFTkVHT1RJQVRJT05fTUlTTUFUQ0gKKyAgICB7IlJFTkVHT1RJQVRJT05fTUlTTUFUQ0giLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVORUdPVElBVElPTl9NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJSRU5FR09USUFUSU9OX01JU01BVENIIiwgRVJSX0xJQl9TU0wsIDMzN30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVRVUlSRURfQ0lQSEVSX01JU1NJTkcKKyAgICB7IlJFUVVJUkVEX0NJUEhFUl9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFUVVJUkVEX0NJUEhFUl9NSVNTSU5HfSwKKyAgI2Vsc2UKKyAgICB7IlJFUVVJUkVEX0NJUEhFUl9NSVNTSU5HIiwgRVJSX0xJQl9TU0wsIDIxNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HCisgICAgeyJSRVFVSVJFRF9DT01QUkVTU1NJT05fQUxHT1JJVEhNX01JU1NJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVRVUlSRURfQ09NUFJFU1NTSU9OX0FMR09SSVRITV9NSVNTSU5HfSwKKyAgI2Vsc2UKKyAgICB7IlJFUVVJUkVEX0NPTVBSRVNTU0lPTl9BTEdPUklUSE1fTUlTU0lORyIsIEVSUl9MSUJfU1NMLCAzNDJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFVVNFX0NFUlRfTEVOR1RIX05PVF9aRVJPCisgICAgeyJSRVVTRV9DRVJUX0xFTkdUSF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9SRVVTRV9DRVJUX0xFTkdUSF9OT1RfWkVST30sCisgICNlbHNlCisgICAgeyJSRVVTRV9DRVJUX0xFTkdUSF9OT1RfWkVSTyIsIEVSUl9MSUJfU1NMLCAyMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1JFVVNFX0NFUlRfVFlQRV9OT1RfWkVSTworICAgIHsiUkVVU0VfQ0VSVF9UWVBFX05PVF9aRVJPIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1JFVVNFX0NFUlRfVFlQRV9OT1RfWkVST30sCisgICNlbHNlCisgICAgeyJSRVVTRV9DRVJUX1RZUEVfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgMjE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9SRVVTRV9DSVBIRVJfTElTVF9OT1RfWkVSTworICAgIHsiUkVVU0VfQ0lQSEVSX0xJU1RfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgU1NMX1JfUkVVU0VfQ0lQSEVSX0xJU1RfTk9UX1pFUk99LAorICAjZWxzZQorICAgIHsiUkVVU0VfQ0lQSEVSX0xJU1RfTk9UX1pFUk8iLCBFUlJfTElCX1NTTCwgMjE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TQ1NWX1JFQ0VJVkVEX1dIRU5fUkVORUdPVElBVElORworICAgIHsiU0NTVl9SRUNFSVZFRF9XSEVOX1JFTkVHT1RJQVRJTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfU0NTVl9SRUNFSVZFRF9XSEVOX1JFTkVHT1RJQVRJTkd9LAorICAjZWxzZQorICAgIHsiU0NTVl9SRUNFSVZFRF9XSEVOX1JFTkVHT1RJQVRJTkciLCBFUlJfTElCX1NTTCwgMzQ1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TRVJWRVJIRUxMT19UTFNFWFQKKyAgICB7IlNFUlZFUkhFTExPX1RMU0VYVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TRVJWRVJIRUxMT19UTFNFWFR9LAorICAjZWxzZQorICAgIHsiU0VSVkVSSEVMTE9fVExTRVhUIiwgRVJSX0xJQl9TU0wsIDI3NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU0VTU0lPTl9JRF9DT05URVhUX1VOSU5JVElBTElaRUQKKyAgICB7IlNFU1NJT05fSURfQ09OVEVYVF9VTklOSVRJQUxJWkVEIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NFU1NJT05fSURfQ09OVEVYVF9VTklOSVRJQUxJWkVEfSwKKyAgI2Vsc2UKKyAgICB7IlNFU1NJT05fSURfQ09OVEVYVF9VTklOSVRJQUxJWkVEIiwgRVJSX0xJQl9TU0wsIDI3N30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU0hPUlRfUkVBRAorICAgIHsiU0hPUlRfUkVBRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TSE9SVF9SRUFEfSwKKyAgI2Vsc2UKKyAgICB7IlNIT1JUX1JFQUQiLCBFUlJfTElCX1NTTCwgMjE5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFCisgICAgeyJTSUdOQVRVUkVfRk9SX05PTl9TSUdOSU5HX0NFUlRJRklDQVRFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NJR05BVFVSRV9GT1JfTk9OX1NJR05JTkdfQ0VSVElGSUNBVEV9LAorICAjZWxzZQorICAgIHsiU0lHTkFUVVJFX0ZPUl9OT05fU0lHTklOR19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAyMjB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0UKKyAgICB7IlNTTDIzX0RPSU5HX1NFU1NJT05fSURfUkVVU0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMMjNfRE9JTkdfU0VTU0lPTl9JRF9SRVVTRX0sCisgICNlbHNlCisgICAgeyJTU0wyM19ET0lOR19TRVNTSU9OX0lEX1JFVVNFIiwgRVJSX0xJQl9TU0wsIDIyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HCisgICAgeyJTU0wyX0NPTk5FQ1RJT05fSURfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMMl9DT05ORUNUSU9OX0lEX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDJfQ09OTkVDVElPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAyOTl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVAorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9FQ1BPSU5URk9STUFUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfRUNQT0lOVEZPUk1BVH0sCisgICNlbHNlCisgICAgeyJTU0wzX0VYVF9JTlZBTElEX0VDUE9JTlRGT1JNQVQiLCBFUlJfTElCX1NTTCwgMzIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUUKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0wzX0VYVF9JTlZBTElEX1NFUlZFUk5BTUV9LAorICAjZWxzZQorICAgIHsiU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FIiwgRVJSX0xJQl9TU0wsIDMxOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19FWFRfSU5WQUxJRF9TRVJWRVJOQU1FX1RZUEUKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfRVhUX0lOVkFMSURfU0VSVkVSTkFNRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDMyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19MT05HCisgICAgeyJTU0wzX1NFU1NJT05fSURfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCAzMDB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlQKKyAgICB7IlNTTDNfU0VTU0lPTl9JRF9UT09fU0hPUlQiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMM19TRVNTSU9OX0lEX1RPT19TSE9SVH0sCisgICNlbHNlCisgICAgeyJTU0wzX1NFU1NJT05fSURfVE9PX1NIT1JUIiwgRVJSX0xJQl9TU0wsIDIyMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFCisgICAgeyJTU0xWM19BTEVSVF9CQURfQ0VSVElGSUNBVEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfQkFEX0NFUlRJRklDQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0JBRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAxMDQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9CQURfUkVDT1JEX01BQworICAgIHsiU1NMVjNfQUxFUlRfQkFEX1JFQ09SRF9NQUMiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfQkFEX1JFQ09SRF9NQUN9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfQkFEX1JFQ09SRF9NQUMiLCBFUlJfTElCX1NTTCwgMTAyMH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRAorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfRVhQSVJFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9FWFBJUkVEfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX0VYUElSRUQiLCBFUlJfTElCX1NTTCwgMTA0NX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRAorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfUkVWT0tFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9SRVZPS0VEfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1JFVk9LRUQiLCBFUlJfTElCX1NTTCwgMTA0NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTgorICAgIHsiU1NMVjNfQUxFUlRfQ0VSVElGSUNBVEVfVU5LTk9XTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9DRVJUSUZJQ0FURV9VTktOT1dOfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0NFUlRJRklDQVRFX1VOS05PV04iLCBFUlJfTElCX1NTTCwgMTA0Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFCisgICAgeyJTU0xWM19BTEVSVF9ERUNPTVBSRVNTSU9OX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfREVDT01QUkVTU0lPTl9GQUlMVVJFfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0RFQ09NUFJFU1NJT05fRkFJTFVSRSIsIEVSUl9MSUJfU1NMLCAxMDMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9IQU5EU0hBS0VfRkFJTFVSRQorICAgIHsiU1NMVjNfQUxFUlRfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMVjNfQUxFUlRfSEFORFNIQUtFX0ZBSUxVUkV9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMTA0MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMVjNfQUxFUlRfSUxMRUdBTF9QQVJBTUVURVIKKyAgICB7IlNTTFYzX0FMRVJUX0lMTEVHQUxfUEFSQU1FVEVSIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTFYzX0FMRVJUX0lMTEVHQUxfUEFSQU1FVEVSfSwKKyAgI2Vsc2UKKyAgICB7IlNTTFYzX0FMRVJUX0lMTEVHQUxfUEFSQU1FVEVSIiwgRVJSX0xJQl9TU0wsIDEwNDd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX05PX0NFUlRJRklDQVRFCisgICAgeyJTU0xWM19BTEVSVF9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9OT19DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9OT19DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAxMDQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0UKKyAgICB7IlNTTFYzX0FMRVJUX1VORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9VTkVYUEVDVEVEX01FU1NBR0V9LAorICAjZWxzZQorICAgIHsiU1NMVjNfQUxFUlRfVU5FWFBFQ1RFRF9NRVNTQUdFIiwgRVJSX0xJQl9TU0wsIDEwMTB9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTFYzX0FMRVJUX1VOU1VQUE9SVEVEX0NFUlRJRklDQVRFCisgICAgeyJTU0xWM19BTEVSVF9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xWM19BTEVSVF9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURX0sCisgICNlbHNlCisgICAgeyJTU0xWM19BTEVSVF9VTlNVUFBPUlRFRF9DRVJUSUZJQ0FURSIsIEVSUl9MSUJfU1NMLCAxMDQzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OCisgICAgeyJTU0xfQ1RYX0hBU19OT19ERUZBVUxUX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9DVFhfSEFTX05PX0RFRkFVTFRfU1NMX1ZFUlNJT059LAorICAjZWxzZQorICAgIHsiU1NMX0NUWF9IQVNfTk9fREVGQVVMVF9TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyMjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1NTTF9IQU5EU0hBS0VfRkFJTFVSRQorICAgIHsiU1NMX0hBTkRTSEFLRV9GQUlMVVJFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9IQU5EU0hBS0VfRkFJTFVSRX0sCisgICNlbHNlCisgICAgeyJTU0xfSEFORFNIQUtFX0ZBSUxVUkUiLCBFUlJfTElCX1NTTCwgMjI5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfTElCUkFSWV9IQVNfTk9fQ0lQSEVSUworICAgIHsiU1NMX0xJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX0xJQlJBUllfSEFTX05PX0NJUEhFUlN9LAorICAjZWxzZQorICAgIHsiU1NMX0xJQlJBUllfSEFTX05PX0NJUEhFUlMiLCBFUlJfTElCX1NTTCwgMjMwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUQKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0NBTExCQUNLX0ZBSUxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DQUxMQkFDS19GQUlMRUR9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfQ0FMTEJBQ0tfRkFJTEVEIiwgRVJSX0xJQl9TU0wsIDMwMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09ORkxJQ1QKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0NPTkZMSUNUIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1NTTF9TRVNTSU9OX0lEX0NPTkZMSUNUfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0NPTkZMSUNUIiwgRVJSX0xJQl9TU0wsIDMwMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORworICAgIHsiU1NMX1NFU1NJT05fSURfQ09OVEVYVF9UT09fTE9ORyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9DT05URVhUX1RPT19MT05HfSwKKyAgI2Vsc2UKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0NPTlRFWFRfVE9PX0xPTkciLCBFUlJfTElCX1NTTCwgMjczfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9IQVNfQkFEX0xFTkdUSAorICAgIHsiU1NMX1NFU1NJT05fSURfSEFTX0JBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgU1NMX1JfU1NMX1NFU1NJT05fSURfSEFTX0JBRF9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfSEFTX0JBRF9MRU5HVEgiLCBFUlJfTElCX1NTTCwgMzAzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9TU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlQKKyAgICB7IlNTTF9TRVNTSU9OX0lEX0lTX0RJRkZFUkVOVCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9TU0xfU0VTU0lPTl9JRF9JU19ESUZGRVJFTlR9LAorICAjZWxzZQorICAgIHsiU1NMX1NFU1NJT05fSURfSVNfRElGRkVSRU5UIiwgRVJSX0xJQl9TU0wsIDIzMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRAorICAgIHsiVExTVjFfQUxFUlRfQUNDRVNTX0RFTklFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9BQ0NFU1NfREVOSUVEfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0FDQ0VTU19ERU5JRUQiLCBFUlJfTElCX1NTTCwgMTA0OX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SCisgICAgeyJUTFNWMV9BTEVSVF9ERUNPREVfRVJST1IiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfREVDT0RFX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMDUwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUSU9OX0ZBSUxFRAorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVElPTl9GQUlMRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfREVDUllQVElPTl9GQUlMRUR9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVElPTl9GQUlMRUQiLCBFUlJfTElCX1NTTCwgMTAyMX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUgorICAgIHsiVExTVjFfQUxFUlRfREVDUllQVF9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9ERUNSWVBUX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0RFQ1JZUFRfRVJST1IiLCBFUlJfTElCX1NTTCwgMTA1MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OCisgICAgeyJUTFNWMV9BTEVSVF9FWFBPUlRfUkVTVFJJQ1RJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfRVhQT1JUX1JFU1RSSUNUSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0FMRVJUX0VYUE9SVF9SRVNUUklDVElPTiIsIEVSUl9MSUJfU1NMLCAxMDYwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFkKKyAgICB7IlRMU1YxX0FMRVJUX0lOU1VGRklDSUVOVF9TRUNVUklUWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9JTlNVRkZJQ0lFTlRfU0VDVVJJVFl9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfSU5TVUZGSUNJRU5UX1NFQ1VSSVRZIiwgRVJSX0xJQl9TU0wsIDEwNzF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX0lOVEVSTkFMX0VSUk9SCisgICAgeyJUTFNWMV9BTEVSVF9JTlRFUk5BTF9FUlJPUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9JTlRFUk5BTF9FUlJPUn0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9JTlRFUk5BTF9FUlJPUiIsIEVSUl9MSUJfU1NMLCAxMDgwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OCisgICAgeyJUTFNWMV9BTEVSVF9OT19SRU5FR09USUFUSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX05PX1JFTkVHT1RJQVRJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfTk9fUkVORUdPVElBVElPTiIsIEVSUl9MSUJfU1NMLCAxMTAwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OCisgICAgeyJUTFNWMV9BTEVSVF9QUk9UT0NPTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1RMU1YxX0FMRVJUX1BST1RPQ09MX1ZFUlNJT059LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfUFJPVE9DT0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAxMDcwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1cKKyAgICB7IlRMU1YxX0FMRVJUX1JFQ09SRF9PVkVSRkxPVyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9SRUNPUkRfT1ZFUkZMT1d9LAorICAjZWxzZQorICAgIHsiVExTVjFfQUxFUlRfUkVDT1JEX09WRVJGTE9XIiwgRVJSX0xJQl9TU0wsIDEwMjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1VOS05PV05fQ0EKKyAgICB7IlRMU1YxX0FMRVJUX1VOS05PV05fQ0EiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQUxFUlRfVU5LTk9XTl9DQX0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9VTktOT1dOX0NBIiwgRVJSX0xJQl9TU0wsIDEwNDh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU1YxX0FMRVJUX1VTRVJfQ0FOQ0VMTEVECisgICAgeyJUTFNWMV9BTEVSVF9VU0VSX0NBTkNFTExFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9BTEVSVF9VU0VSX0NBTkNFTExFRH0sCisgICNlbHNlCisgICAgeyJUTFNWMV9BTEVSVF9VU0VSX0NBTkNFTExFRCIsIEVSUl9MSUJfU1NMLCAxMDkwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfSEFTSF9WQUxVRQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX0hBU0hfVkFMVUUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQkFEX0NFUlRJRklDQVRFX0hBU0hfVkFMVUV9LAorICAjZWxzZQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX0hBU0hfVkFMVUUiLCBFUlJfTElCX1NTTCwgMTExNH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRQorICAgIHsiVExTVjFfQkFEX0NFUlRJRklDQVRFX1NUQVRVU19SRVNQT05TRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNWMV9CQURfQ0VSVElGSUNBVEVfU1RBVFVTX1JFU1BPTlNFfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0JBRF9DRVJUSUZJQ0FURV9TVEFUVVNfUkVTUE9OU0UiLCBFUlJfTElCX1NTTCwgMTExM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFCisgICAgeyJUTFNWMV9DRVJUSUZJQ0FURV9VTk9CVEFJTkFCTEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfQ0VSVElGSUNBVEVfVU5PQlRBSU5BQkxFfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX0NFUlRJRklDQVRFX1VOT0JUQUlOQUJMRSIsIEVSUl9MSUJfU1NMLCAxMTExfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNWMV9VTlJFQ09HTklaRURfTkFNRQorICAgIHsiVExTVjFfVU5SRUNPR05JWkVEX05BTUUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfVU5SRUNPR05JWkVEX05BTUV9LAorICAjZWxzZQorICAgIHsiVExTVjFfVU5SRUNPR05JWkVEX05BTUUiLCBFUlJfTElCX1NTTCwgMTExMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OCisgICAgeyJUTFNWMV9VTlNVUFBPUlRFRF9FWFRFTlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTVjFfVU5TVVBQT1JURURfRVhURU5TSU9OfSwKKyAgI2Vsc2UKKyAgICB7IlRMU1YxX1VOU1VQUE9SVEVEX0VYVEVOU0lPTiIsIEVSUl9MSUJfU1NMLCAxMTEwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9UTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVIKKyAgICB7IlRMU19DTElFTlRfQ0VSVF9SRVFfV0lUSF9BTk9OX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9UTFNfQ0xJRU5UX0NFUlRfUkVRX1dJVEhfQU5PTl9DSVBIRVJ9LAorICAjZWxzZQorICAgIHsiVExTX0NMSUVOVF9DRVJUX1JFUV9XSVRIX0FOT05fQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDIzMn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUCisgICAgeyJUTFNfSU5WQUxJRF9FQ1BPSU5URk9STUFUX0xJU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTX0lOVkFMSURfRUNQT0lOVEZPUk1BVF9MSVNUfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19JTlZBTElEX0VDUE9JTlRGT1JNQVRfTElTVCIsIEVSUl9MSUJfU1NMLCAxNTd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QKKyAgICB7IlRMU19QRUVSX0RJRF9OT1RfUkVTUE9ORF9XSVRIX0NFUlRJRklDQVRFX0xJU1QiLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTX1BFRVJfRElEX05PVF9SRVNQT05EX1dJVEhfQ0VSVElGSUNBVEVfTElTVH0sCisgICNlbHNlCisgICAgeyJUTFNfUEVFUl9ESURfTk9UX1JFU1BPTkRfV0lUSF9DRVJUSUZJQ0FURV9MSVNUIiwgRVJSX0xJQl9TU0wsIDIzM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HCisgICAgeyJUTFNfUlNBX0VOQ1JZUFRFRF9WQUxVRV9MRU5HVEhfSVNfV1JPTkciLCBFUlJfTElCX1NTTCwgU1NMX1JfVExTX1JTQV9FTkNSWVBURURfVkFMVUVfTEVOR1RIX0lTX1dST05HfSwKKyAgI2Vsc2UKKyAgICB7IlRMU19SU0FfRU5DUllQVEVEX1ZBTFVFX0xFTkdUSF9JU19XUk9ORyIsIEVSUl9MSUJfU1NMLCAyMzR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1RSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVIKKyAgICB7IlRSSUVEX1RPX1VTRV9VTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfVFJJRURfVE9fVVNFX1VOU1VQUE9SVEVEX0NJUEhFUn0sCisgICNlbHNlCisgICAgeyJUUklFRF9UT19VU0VfVU5TVVBQT1JURURfQ0lQSEVSIiwgRVJSX0xJQl9TU0wsIDIzNX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUUworICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9ESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0RIX0NFUlRTfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19ERUNPREVfREhfQ0VSVFMiLCBFUlJfTElCX1NTTCwgMjM2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFMKKyAgICB7IlVOQUJMRV9UT19ERUNPREVfRUNESF9DRVJUUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fREVDT0RFX0VDREhfQ0VSVFN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0RFQ09ERV9FQ0RIX0NFUlRTIiwgRVJSX0xJQl9TU0wsIDMxM30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWQorICAgIHsiVU5BQkxFX1RPX0VYVFJBQ1RfUFVCTElDX0tFWSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fRVhUUkFDVF9QVUJMSUNfS0VZfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19FWFRSQUNUX1BVQkxJQ19LRVkiLCBFUlJfTElCX1NTTCwgMjM3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTCisgICAgeyJVTkFCTEVfVE9fRklORF9ESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX0RIX1BBUkFNRVRFUlN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfREhfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCAyMzh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSUworICAgIHsiVU5BQkxFX1RPX0ZJTkRfRUNESF9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOQUJMRV9UT19GSU5EX0VDREhfUEFSQU1FVEVSU30sCisgICNlbHNlCisgICAgeyJVTkFCTEVfVE9fRklORF9FQ0RIX1BBUkFNRVRFUlMiLCBFUlJfTElCX1NTTCwgMzE0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlMKKyAgICB7IlVOQUJMRV9UT19GSU5EX1BVQkxJQ19LRVlfUEFSQU1FVEVSUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fRklORF9QVUJMSUNfS0VZX1BBUkFNRVRFUlN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0ZJTkRfUFVCTElDX0tFWV9QQVJBTUVURVJTIiwgRVJSX0xJQl9TU0wsIDIzOX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRAorICAgIHsiVU5BQkxFX1RPX0ZJTkRfU1NMX01FVEhPRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fRklORF9TU0xfTUVUSE9EfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX1NTTF9NRVRIT0QiLCBFUlJfTElCX1NTTCwgMjQwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wyX01ENV9ST1VUSU5FUworICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMMl9NRDVfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0xPQURfU1NMMl9NRDVfUk9VVElORVN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMMl9NRDVfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgMjQxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX01ENV9ST1VUSU5FUworICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19NRDVfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5BQkxFX1RPX0xPQURfU1NMM19NRDVfUk9VVElORVN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19NRDVfUk9VVElORVMiLCBFUlJfTElCX1NTTCwgMjQyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVMKKyAgICB7IlVOQUJMRV9UT19MT0FEX1NTTDNfU0hBMV9ST1VUSU5FUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkFCTEVfVE9fTE9BRF9TU0wzX1NIQTFfUk9VVElORVN9LAorICAjZWxzZQorICAgIHsiVU5BQkxFX1RPX0xPQURfU1NMM19TSEExX1JPVVRJTkVTIiwgRVJSX0xJQl9TU0wsIDI0M30sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5FWFBFQ1RFRF9NRVNTQUdFCisgICAgeyJVTkVYUEVDVEVEX01FU1NBR0UiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5FWFBFQ1RFRF9NRVNTQUdFfSwKKyAgI2Vsc2UKKyAgICB7IlVORVhQRUNURURfTUVTU0FHRSIsIEVSUl9MSUJfU1NMLCAyNDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VORVhQRUNURURfUkVDT1JECisgICAgeyJVTkVYUEVDVEVEX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTkVYUEVDVEVEX1JFQ09SRH0sCisgICNlbHNlCisgICAgeyJVTkVYUEVDVEVEX1JFQ09SRCIsIEVSUl9MSUJfU1NMLCAyNDV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOSU5JVElBTElaRUQKKyAgICB7IlVOSU5JVElBTElaRUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5JTklUSUFMSVpFRH0sCisgICNlbHNlCisgICAgeyJVTklOSVRJQUxJWkVEIiwgRVJSX0xJQl9TU0wsIDI3Nn0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9BTEVSVF9UWVBFCisgICAgeyJVTktOT1dOX0FMRVJUX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9BTEVSVF9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fQUxFUlRfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNDZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fQ0VSVElGSUNBVEVfVFlQRQorICAgIHsiVU5LTk9XTl9DRVJUSUZJQ0FURV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fQ0VSVElGSUNBVEVfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0NFUlRJRklDQVRFX1RZUEUiLCBFUlJfTElCX1NTTCwgMjQ3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0NJUEhFUl9SRVRVUk5FRAorICAgIHsiVU5LTk9XTl9DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9DSVBIRVJfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9DSVBIRVJfUkVUVVJORUQiLCBFUlJfTElCX1NTTCwgMjQ4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX0NJUEhFUl9UWVBFCisgICAgeyJVTktOT1dOX0NJUEhFUl9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fQ0lQSEVSX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9DSVBIRVJfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNDl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEUKKyAgICB7IlVOS05PV05fS0VZX0VYQ0hBTkdFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9LRVlfRVhDSEFOR0VfVFlQRX0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX0tFWV9FWENIQU5HRV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI1MH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9QS0VZX1RZUEUKKyAgICB7IlVOS05PV05fUEtFWV9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fUEtFWV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fUEtFWV9UWVBFIiwgRVJSX0xJQl9TU0wsIDI1MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9QUk9UT0NPTAorICAgIHsiVU5LTk9XTl9QUk9UT0NPTCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1BST1RPQ09MfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fUFJPVE9DT0wiLCBFUlJfTElCX1NTTCwgMjUyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFCisgICAgeyJVTktOT1dOX1JFTU9URV9FUlJPUl9UWVBFIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOS05PV05fUkVNT1RFX0VSUk9SX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9SRU1PVEVfRVJST1JfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOS05PV05fU1NMX1ZFUlNJT04KKyAgICB7IlVOS05PV05fU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5LTk9XTl9TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJVTktOT1dOX1NTTF9WRVJTSU9OIiwgRVJSX0xJQl9TU0wsIDI1NH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5LTk9XTl9TVEFURQorICAgIHsiVU5LTk9XTl9TVEFURSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTktOT1dOX1NUQVRFfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fU1RBVEUiLCBFUlJfTElCX1NTTCwgMjU1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUQKKyAgICB7IlVOU0FGRV9MRUdBQ1lfUkVORUdPVElBVElPTl9ESVNBQkxFRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05fRElTQUJMRUR9LAorICAjZWxzZQorICAgIHsiVU5TQUZFX0xFR0FDWV9SRU5FR09USUFUSU9OX0RJU0FCTEVEIiwgRVJSX0xJQl9TU0wsIDMzOH0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfVU5TVVBQT1JURURfQ0lQSEVSCisgICAgeyJVTlNVUFBPUlRFRF9DSVBIRVIiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfQ0lQSEVSfSwKKyAgI2Vsc2UKKyAgICB7IlVOU1VQUE9SVEVEX0NJUEhFUiIsIEVSUl9MSUJfU1NMLCAyNTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1VOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITQorICAgIHsiVU5TVVBQT1JURURfQ09NUFJFU1NJT05fQUxHT1JJVEhNIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1VOU1VQUE9SVEVEX0NPTVBSRVNTSU9OX0FMR09SSVRITX0sCisgICNlbHNlCisgICAgeyJVTlNVUFBPUlRFRF9DT01QUkVTU0lPTl9BTEdPUklUSE0iLCBFUlJfTElCX1NTTCwgMjU3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9ESUdFU1RfVFlQRQorICAgIHsiVU5TVVBQT1JURURfRElHRVNUX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfRElHRVNUX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfRElHRVNUX1RZUEUiLCBFUlJfTElCX1NTTCwgMzI2fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9FTExJUFRJQ19DVVJWRQorICAgIHsiVU5TVVBQT1JURURfRUxMSVBUSUNfQ1VSVkUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfRUxMSVBUSUNfQ1VSVkV9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfRUxMSVBUSUNfQ1VSVkUiLCBFUlJfTElCX1NTTCwgMzE1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9QUk9UT0NPTAorICAgIHsiVU5TVVBQT1JURURfUFJPVE9DT0wiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfUFJPVE9DT0x9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfUFJPVE9DT0wiLCBFUlJfTElCX1NTTCwgMjU4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9TU0xfVkVSU0lPTgorICAgIHsiVU5TVVBQT1JURURfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfU1NMX1ZFUlNJT059LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfU1NMX1ZFUlNJT04iLCBFUlJfTElCX1NTTCwgMjU5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9VTlNVUFBPUlRFRF9TVEFUVVNfVFlQRQorICAgIHsiVU5TVVBQT1JURURfU1RBVFVTX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfVU5TVVBQT1JURURfU1RBVFVTX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfU1RBVFVTX1RZUEUiLCBFUlJfTElCX1NTTCwgMzI5fSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUklURV9CSU9fTk9UX1NFVAorICAgIHsiV1JJVEVfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JJVEVfQklPX05PVF9TRVR9LAorICAjZWxzZQorICAgIHsiV1JJVEVfQklPX05PVF9TRVQiLCBFUlJfTElCX1NTTCwgMjYwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19DSVBIRVJfUkVUVVJORUQKKyAgICB7IldST05HX0NJUEhFUl9SRVRVUk5FRCIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19DSVBIRVJfUkVUVVJORUR9LAorICAjZWxzZQorICAgIHsiV1JPTkdfQ0lQSEVSX1JFVFVSTkVEIiwgRVJSX0xJQl9TU0wsIDI2MX0sCisgICNlbmRpZgorICAjaWZkZWYgU1NMX1JfV1JPTkdfTUVTU0FHRV9UWVBFCisgICAgeyJXUk9OR19NRVNTQUdFX1RZUEUiLCBFUlJfTElCX1NTTCwgU1NMX1JfV1JPTkdfTUVTU0FHRV9UWVBFfSwKKyAgI2Vsc2UKKyAgICB7IldST05HX01FU1NBR0VfVFlQRSIsIEVSUl9MSUJfU1NMLCAyNjJ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX05VTUJFUl9PRl9LRVlfQklUUworICAgIHsiV1JPTkdfTlVNQkVSX09GX0tFWV9CSVRTIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX05VTUJFUl9PRl9LRVlfQklUU30sCisgICNlbHNlCisgICAgeyJXUk9OR19OVU1CRVJfT0ZfS0VZX0JJVFMiLCBFUlJfTElCX1NTTCwgMjYzfSwKKyAgI2VuZGlmCisgICNpZmRlZiBTU0xfUl9XUk9OR19TSUdOQVRVUkVfTEVOR1RICisgICAgeyJXUk9OR19TSUdOQVRVUkVfTEVOR1RIIiwgRVJSX0xJQl9TU0wsIFNTTF9SX1dST05HX1NJR05BVFVSRV9MRU5HVEh9LAorICAjZWxzZQorICAgIHsiV1JPTkdfU0lHTkFUVVJFX0xFTkdUSCIsIEVSUl9MSUJfU1NMLCAyNjR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1NJR05BVFVSRV9TSVpFCisgICAgeyJXUk9OR19TSUdOQVRVUkVfU0laRSIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19TSUdOQVRVUkVfU0laRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19TSUdOQVRVUkVfU0laRSIsIEVSUl9MSUJfU1NMLCAyNjV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1NTTF9WRVJTSU9OCisgICAgeyJXUk9OR19TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19TU0xfVkVSU0lPTn0sCisgICNlbHNlCisgICAgeyJXUk9OR19TU0xfVkVSU0lPTiIsIEVSUl9MSUJfU1NMLCAyNjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1dST05HX1ZFUlNJT05fTlVNQkVSCisgICAgeyJXUk9OR19WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9XUk9OR19WRVJTSU9OX05VTUJFUn0sCisgICNlbHNlCisgICAgeyJXUk9OR19WRVJTSU9OX05VTUJFUiIsIEVSUl9MSUJfU1NMLCAyNjd9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1g1MDlfTElCCisgICAgeyJYNTA5X0xJQiIsIEVSUl9MSUJfU1NMLCBTU0xfUl9YNTA5X0xJQn0sCisgICNlbHNlCisgICAgeyJYNTA5X0xJQiIsIEVSUl9MSUJfU1NMLCAyNjh9LAorICAjZW5kaWYKKyAgI2lmZGVmIFNTTF9SX1g1MDlfVkVSSUZJQ0FUSU9OX1NFVFVQX1BST0JMRU1TCisgICAgeyJYNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNUyIsIEVSUl9MSUJfU1NMLCBTU0xfUl9YNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNU30sCisgICNlbHNlCisgICAgeyJYNTA5X1ZFUklGSUNBVElPTl9TRVRVUF9QUk9CTEVNUyIsIEVSUl9MSUJfU1NMLCAyNjl9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9CQURfWDUwOV9GSUxFVFlQRQorICAgIHsiQkFEX1g1MDlfRklMRVRZUEUiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9CQURfWDUwOV9GSUxFVFlQRX0sCisgICNlbHNlCisgICAgeyJCQURfWDUwOV9GSUxFVFlQRSIsIEVSUl9MSUJfWDUwOSwgMTAwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQkFTRTY0X0RFQ09ERV9FUlJPUgorICAgIHsiQkFTRTY0X0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0JBU0U2NF9ERUNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiQkFTRTY0X0RFQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgMTE4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfQ0FOVF9DSEVDS19ESF9LRVkKKyAgICB7IkNBTlRfQ0hFQ0tfREhfS0VZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfQ0FOVF9DSEVDS19ESF9LRVl9LAorICAjZWxzZQorICAgIHsiQ0FOVF9DSEVDS19ESF9LRVkiLCBFUlJfTElCX1g1MDksIDExNH0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0NFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFCisgICAgeyJDRVJUX0FMUkVBRFlfSU5fSEFTSF9UQUJMRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0NFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFfSwKKyAgI2Vsc2UKKyAgICB7IkNFUlRfQUxSRUFEWV9JTl9IQVNIX1RBQkxFIiwgRVJSX0xJQl9YNTA5LCAxMDF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9FUlJfQVNOMV9MSUIKKyAgICB7IkVSUl9BU04xX0xJQiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0VSUl9BU04xX0xJQn0sCisgICNlbHNlCisgICAgeyJFUlJfQVNOMV9MSUIiLCBFUlJfTElCX1g1MDksIDEwMn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0lOVkFMSURfRElSRUNUT1JZCisgICAgeyJJTlZBTElEX0RJUkVDVE9SWSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0lOVkFMSURfRElSRUNUT1JZfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfRElSRUNUT1JZIiwgRVJSX0xJQl9YNTA5LCAxMTN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9JTlZBTElEX0ZJRUxEX05BTUUKKyAgICB7IklOVkFMSURfRklFTERfTkFNRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0lOVkFMSURfRklFTERfTkFNRX0sCisgICNlbHNlCisgICAgeyJJTlZBTElEX0ZJRUxEX05BTUUiLCBFUlJfTElCX1g1MDksIDExOX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0lOVkFMSURfVFJVU1QKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9JTlZBTElEX1RSVVNUfSwKKyAgI2Vsc2UKKyAgICB7IklOVkFMSURfVFJVU1QiLCBFUlJfTElCX1g1MDksIDEyM30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX0tFWV9UWVBFX01JU01BVENICisgICAgeyJLRVlfVFlQRV9NSVNNQVRDSCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX0tFWV9UWVBFX01JU01BVENIfSwKKyAgI2Vsc2UKKyAgICB7IktFWV9UWVBFX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCAxMTV9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9LRVlfVkFMVUVTX01JU01BVENICisgICAgeyJLRVlfVkFMVUVTX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfS0VZX1ZBTFVFU19NSVNNQVRDSH0sCisgICNlbHNlCisgICAgeyJLRVlfVkFMVUVTX01JU01BVENIIiwgRVJSX0xJQl9YNTA5LCAxMTZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9MT0FESU5HX0NFUlRfRElSCisgICAgeyJMT0FESU5HX0NFUlRfRElSIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTE9BRElOR19DRVJUX0RJUn0sCisgICNlbHNlCisgICAgeyJMT0FESU5HX0NFUlRfRElSIiwgRVJSX0xJQl9YNTA5LCAxMDN9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9MT0FESU5HX0RFRkFVTFRTCisgICAgeyJMT0FESU5HX0RFRkFVTFRTIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfTE9BRElOR19ERUZBVUxUU30sCisgICNlbHNlCisgICAgeyJMT0FESU5HX0RFRkFVTFRTIiwgRVJSX0xJQl9YNTA5LCAxMDR9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9NRVRIT0RfTk9UX1NVUFBPUlRFRAorICAgIHsiTUVUSE9EX05PVF9TVVBQT1JURUQiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9NRVRIT0RfTk9UX1NVUFBPUlRFRH0sCisgICNlbHNlCisgICAgeyJNRVRIT0RfTk9UX1NVUFBPUlRFRCIsIEVSUl9MSUJfWDUwOSwgMTI0fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWQorICAgIHsiTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX05PX0NFUlRfU0VUX0ZPUl9VU19UT19WRVJJRll9LAorICAjZWxzZQorICAgIHsiTk9fQ0VSVF9TRVRfRk9SX1VTX1RPX1ZFUklGWSIsIEVSUl9MSUJfWDUwOSwgMTA1fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfUFVCTElDX0tFWV9ERUNPREVfRVJST1IKKyAgICB7IlBVQkxJQ19LRVlfREVDT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfUFVCTElDX0tFWV9ERUNPREVfRVJST1J9LAorICAjZWxzZQorICAgIHsiUFVCTElDX0tFWV9ERUNPREVfRVJST1IiLCBFUlJfTElCX1g1MDksIDEyNX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1BVQkxJQ19LRVlfRU5DT0RFX0VSUk9SCisgICAgeyJQVUJMSUNfS0VZX0VOQ09ERV9FUlJPUiIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1BVQkxJQ19LRVlfRU5DT0RFX0VSUk9SfSwKKyAgI2Vsc2UKKyAgICB7IlBVQkxJQ19LRVlfRU5DT0RFX0VSUk9SIiwgRVJSX0xJQl9YNTA5LCAxMjZ9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9TSE9VTERfUkVUUlkKKyAgICB7IlNIT1VMRF9SRVRSWSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1NIT1VMRF9SRVRSWX0sCisgICNlbHNlCisgICAgeyJTSE9VTERfUkVUUlkiLCBFUlJfTElCX1g1MDksIDEwNn0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU4KKyAgICB7IlVOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU4iLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTkFCTEVfVE9fRklORF9QQVJBTUVURVJTX0lOX0NIQUlOfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19GSU5EX1BBUkFNRVRFUlNfSU5fQ0hBSU4iLCBFUlJfTElCX1g1MDksIDEwN30sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOQUJMRV9UT19HRVRfQ0VSVFNfUFVCTElDX0tFWQorICAgIHsiVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5BQkxFX1RPX0dFVF9DRVJUU19QVUJMSUNfS0VZfSwKKyAgI2Vsc2UKKyAgICB7IlVOQUJMRV9UT19HRVRfQ0VSVFNfUFVCTElDX0tFWSIsIEVSUl9MSUJfWDUwOSwgMTA4fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9LRVlfVFlQRQorICAgIHsiVU5LTk9XTl9LRVlfVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOS05PV05fS0VZX1RZUEV9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9LRVlfVFlQRSIsIEVSUl9MSUJfWDUwOSwgMTE3fSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9OSUQKKyAgICB7IlVOS05PV05fTklEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9OSUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9OSUQiLCBFUlJfTElCX1g1MDksIDEwOX0sCisgICNlbmRpZgorICAjaWZkZWYgWDUwOV9SX1VOS05PV05fUFVSUE9TRV9JRAorICAgIHsiVU5LTk9XTl9QVVJQT1NFX0lEIiwgRVJSX0xJQl9YNTA5LCBYNTA5X1JfVU5LTk9XTl9QVVJQT1NFX0lEfSwKKyAgI2Vsc2UKKyAgICB7IlVOS05PV05fUFVSUE9TRV9JRCIsIEVSUl9MSUJfWDUwOSwgMTIxfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5LTk9XTl9UUlVTVF9JRAorICAgIHsiVU5LTk9XTl9UUlVTVF9JRCIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1VOS05PV05fVFJVU1RfSUR9LAorICAjZWxzZQorICAgIHsiVU5LTk9XTl9UUlVTVF9JRCIsIEVSUl9MSUJfWDUwOSwgMTIwfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfVU5TVVBQT1JURURfQUxHT1JJVEhNCisgICAgeyJVTlNVUFBPUlRFRF9BTEdPUklUSE0iLCBFUlJfTElCX1g1MDksIFg1MDlfUl9VTlNVUFBPUlRFRF9BTEdPUklUSE19LAorICAjZWxzZQorICAgIHsiVU5TVVBQT1JURURfQUxHT1JJVEhNIiwgRVJSX0xJQl9YNTA5LCAxMTF9LAorICAjZW5kaWYKKyAgI2lmZGVmIFg1MDlfUl9XUk9OR19MT09LVVBfVFlQRQorICAgIHsiV1JPTkdfTE9PS1VQX1RZUEUiLCBFUlJfTElCX1g1MDksIFg1MDlfUl9XUk9OR19MT09LVVBfVFlQRX0sCisgICNlbHNlCisgICAgeyJXUk9OR19MT09LVVBfVFlQRSIsIEVSUl9MSUJfWDUwOSwgMTEyfSwKKyAgI2VuZGlmCisgICNpZmRlZiBYNTA5X1JfV1JPTkdfVFlQRQorICAgIHsiV1JPTkdfVFlQRSIsIEVSUl9MSUJfWDUwOSwgWDUwOV9SX1dST05HX1RZUEV9LAorICAjZWxzZQorICAgIHsiV1JPTkdfVFlQRSIsIEVSUl9MSUJfWDUwOSwgMTIyfSwKKyAgI2VuZGlmCisgICAgeyBOVUxMIH0KK307CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zdHJ1Y3QuYyBiL01vZHVsZXMvX3N0cnVjdC5jCmluZGV4IDU1OGQyNGIuLjBiMjBlMjYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3N0cnVjdC5jCisrKyBiL01vZHVsZXMvX3N0cnVjdC5jCkBAIC01OCw2ICs1OCw3IEBACiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgZmxvYXQgeDsgfSBzdF9mbG9hdDsKIHR5cGVkZWYgc3RydWN0IHsgY2hhciBjOyBkb3VibGUgeDsgfSBzdF9kb3VibGU7CiB0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgdm9pZCAqeDsgfSBzdF92b2lkX3A7Cit0eXBlZGVmIHN0cnVjdCB7IGNoYXIgYzsgc2l6ZV90IHg7IH0gc3Rfc2l6ZV90OwogCiAjZGVmaW5lIFNIT1JUX0FMSUdOIChzaXplb2Yoc3Rfc2hvcnQpIC0gc2l6ZW9mKHNob3J0KSkKICNkZWZpbmUgSU5UX0FMSUdOIChzaXplb2Yoc3RfaW50KSAtIHNpemVvZihpbnQpKQpAQCAtNjUsNiArNjYsNyBAQAogI2RlZmluZSBGTE9BVF9BTElHTiAoc2l6ZW9mKHN0X2Zsb2F0KSAtIHNpemVvZihmbG9hdCkpCiAjZGVmaW5lIERPVUJMRV9BTElHTiAoc2l6ZW9mKHN0X2RvdWJsZSkgLSBzaXplb2YoZG91YmxlKSkKICNkZWZpbmUgVk9JRF9QX0FMSUdOIChzaXplb2Yoc3Rfdm9pZF9wKSAtIHNpemVvZih2b2lkICopKQorI2RlZmluZSBTSVpFX1RfQUxJR04gKHNpemVvZihzdF9zaXplX3QpIC0gc2l6ZW9mKHNpemVfdCkpCiAKIC8qIFdlIGNhbid0IHN1cHBvcnQgcSBhbmQgUSBpbiBuYXRpdmUgbW9kZSB1bmxlc3MgdGhlIGNvbXBpbGVyIGRvZXM7CiAgICBpbiBzdGQgbW9kZSwgdGhleSdyZSA4IGJ5dGVzIG9uIGFsbCBwbGF0Zm9ybXMuICovCkBAIC0yMTMsNiArMjE1LDUyIEBACiAKICNlbmRpZgogCisvKiBTYW1lLCBidXQgaGFuZGxpbmcgUHlfc3NpemVfdCAqLworCitzdGF0aWMgaW50CitnZXRfc3NpemVfdChQeU9iamVjdCAqdiwgUHlfc3NpemVfdCAqcCkKK3sKKyAgICBQeV9zc2l6ZV90IHg7CisKKyAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CisgICAgeCA9IFB5TG9uZ19Bc1NzaXplX3Qodik7CisgICAgUHlfREVDUkVGKHYpOworICAgIGlmICh4ID09IChQeV9zc2l6ZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoU3RydWN0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgICpwID0geDsKKyAgICByZXR1cm4gMDsKK30KKworLyogU2FtZSwgYnV0IGhhbmRsaW5nIHNpemVfdCAqLworCitzdGF0aWMgaW50CitnZXRfc2l6ZV90KFB5T2JqZWN0ICp2LCBzaXplX3QgKnApCit7CisgICAgc2l6ZV90IHg7CisKKyAgICB2ID0gZ2V0X3B5bG9uZyh2KTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2KSk7CisgICAgeCA9IFB5TG9uZ19Bc1NpemVfdCh2KTsKKyAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKHggPT0gKHNpemVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFN0cnVjdEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAqcCA9IHg7CisgICAgcmV0dXJuIDA7Cit9CisKIAogI2RlZmluZSBSQU5HRV9FUlJPUih4LCBmLCBmbGFnLCBtYXNrKSByZXR1cm4gX3JhbmdlX2Vycm9yKGYsIGZsYWcpCiAKQEAgLTM2OSw2ICs0MTcsMjMgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoeCk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitudV9zc2l6ZV90KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICBQeV9zc2l6ZV90IHg7CisgICAgbWVtY3B5KChjaGFyICopJngsIHAsIHNpemVvZiB4KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbnVfc2l6ZV90KGNvbnN0IGNoYXIgKnAsIGNvbnN0IGZvcm1hdGRlZiAqZikKK3sKKyAgICBzaXplX3QgeDsKKyAgICBtZW1jcHkoKGNoYXIgKikmeCwgcCwgc2l6ZW9mIHgpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdCh4KTsKK30KKworCiAvKiBOYXRpdmUgbW9kZSBkb2Vzbid0IHN1cHBvcnQgcSBvciBRIHVubGVzcyB0aGUgcGxhdGZvcm0gQyBzdXBwb3J0cwogICAgbG9uZyBsb25nIChvciwgb24gV2luZG93cywgX19pbnQ2NCkuICovCiAKQEAgLTU1OCw2ICs2MjMsMjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAorbnBfc3NpemVfdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIFB5X3NzaXplX3QgeDsKKyAgICBpZiAoZ2V0X3NzaXplX3QodiwgJngpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShwLCAoY2hhciAqKSZ4LCBzaXplb2YgeCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK25wX3NpemVfdChjaGFyICpwLCBQeU9iamVjdCAqdiwgY29uc3QgZm9ybWF0ZGVmICpmKQoreworICAgIHNpemVfdCB4OworICAgIGlmIChnZXRfc2l6ZV90KHYsICZ4KSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBtZW1jcHkocCwgKGNoYXIgKikmeCwgc2l6ZW9mIHgpOworICAgIHJldHVybiAwOworfQorCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKIAogc3RhdGljIGludApAQCAtNjUxLDYgKzczNiw4IEBACiAgICAgeydJJywgICAgICAgc2l6ZW9mKGludCksICAgIElOVF9BTElHTiwgICAgICBudV91aW50LCAgICAgICAgbnBfdWludH0sCiAgICAgeydsJywgICAgICAgc2l6ZW9mKGxvbmcpLCAgIExPTkdfQUxJR04sICAgICBudV9sb25nLCAgICAgICAgbnBfbG9uZ30sCiAgICAgeydMJywgICAgICAgc2l6ZW9mKGxvbmcpLCAgIExPTkdfQUxJR04sICAgICBudV91bG9uZywgICAgICAgbnBfdWxvbmd9LAorICAgIHsnbicsICAgICAgIHNpemVvZihzaXplX3QpLCBTSVpFX1RfQUxJR04sICAgbnVfc3NpemVfdCwgICAgIG5wX3NzaXplX3R9LAorICAgIHsnTicsICAgICAgIHNpemVvZihzaXplX3QpLCBTSVpFX1RfQUxJR04sICAgbnVfc2l6ZV90LCAgICAgIG5wX3NpemVfdH0sCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7J3EnLCAgICAgICBzaXplb2YoUFlfTE9OR19MT05HKSwgTE9OR19MT05HX0FMSUdOLCBudV9sb25nbG9uZywgbnBfbG9uZ2xvbmd9LAogICAgIHsnUScsICAgICAgIHNpemVvZihQWV9MT05HX0xPTkcpLCBMT05HX0xPTkdfQUxJR04sIG51X3Vsb25nbG9uZyxucF91bG9uZ2xvbmd9LApAQCAtMTk2NCw3ICsyMDUxLDggQEAKICAgbDpsb25nOyBMOnVuc2lnbmVkIGxvbmc7IGY6ZmxvYXQ7IGQ6ZG91YmxlLlxuXAogU3BlY2lhbCBjYXNlcyAocHJlY2VkaW5nIGRlY2ltYWwgY291bnQgaW5kaWNhdGVzIGxlbmd0aCk6XG5cCiAgIHM6c3RyaW5nIChhcnJheSBvZiBjaGFyKTsgcDogcGFzY2FsIHN0cmluZyAod2l0aCBjb3VudCBieXRlKS5cblwKLVNwZWNpYWwgY2FzZSAob25seSBhdmFpbGFibGUgaW4gbmF0aXZlIGZvcm1hdCk6XG5cCitTcGVjaWFsIGNhc2VzIChvbmx5IGF2YWlsYWJsZSBpbiBuYXRpdmUgZm9ybWF0KTpcblwKKyAgbjpzc2l6ZV90OyBOOnNpemVfdDtcblwKICAgUDphbiBpbnRlZ2VyIHR5cGUgdGhhdCBpcyB3aWRlIGVub3VnaCB0byBob2xkIGEgcG9pbnRlci5cblwKIFNwZWNpYWwgY2FzZSAobm90IGluIG5hdGl2ZSBtb2RlIHVubGVzcyAnbG9uZyBsb25nJyBpbiBwbGF0Zm9ybSBDKTpcblwKICAgcTpsb25nIGxvbmc7IFE6dW5zaWduZWQgbG9uZyBsb25nXG5cCmRpZmYgLS1naXQgYS9Nb2R1bGVzL190ZXN0YnVmZmVyLmMgYi9Nb2R1bGVzL190ZXN0YnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE2NjY2ZQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX3Rlc3RidWZmZXIuYwpAQCAtMCwwICsxLDI4NzUgQEAKKy8qIEMgRXh0ZW5zaW9uIG1vZHVsZSB0byB0ZXN0IGFsbCBhc3BlY3RzIG9mIFBFUC0zMTE4LgorICAgV3JpdHRlbiBieSBTdGVmYW4gS3JhaC4gKi8KKworCisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorCisKKy8qIHN0cnVjdCBtb2R1bGUgKi8KK1B5T2JqZWN0ICpzdHJ1Y3Rtb2R1bGUgPSBOVUxMOworUHlPYmplY3QgKlN0cnVjdCA9IE5VTEw7CitQeU9iamVjdCAqY2FsY3NpemUgPSBOVUxMOworCisvKiBjYWNoZSBzaW1wbGUgZm9ybWF0IHN0cmluZyAqLworc3RhdGljIGNvbnN0IGNoYXIgKnNpbXBsZV9mbXQgPSAiQiI7CitQeU9iamVjdCAqc2ltcGxlX2Zvcm1hdCA9IE5VTEw7CisjZGVmaW5lIFNJTVBMRV9GT1JNQVQoZm10KSAoZm10ID09IE5VTEwgfHwgc3RyY21wKGZtdCwgIkIiKSA9PSAwKQorI2RlZmluZSBGSVhfRk9STUFUKGZtdCkgKGZtdCA9PSBOVUxMID8gIkIiIDogZm10KQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOREFycmF5IE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5VHlwZU9iamVjdCBOREFycmF5X1R5cGU7CisjZGVmaW5lIE5EQXJyYXlfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gJk5EQXJyYXlfVHlwZSkKKworI2RlZmluZSBDSEVDS19MSVNUX09SX1RVUExFKHYpIFwKKyAgICBpZiAoIVB5TGlzdF9DaGVjayh2KSAmJiAhUHlUdXBsZV9DaGVjayh2KSkgeyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgICAgICAgXAorICAgICAgICAgICAgI3YgIiBtdXN0IGJlIGEgbGlzdCBvciBhIHR1cGxlIik7ICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCisjZGVmaW5lIFB5TWVtX1hGcmVlKHYpIFwKKyAgICBkbyB7IGlmICh2KSBQeU1lbV9GcmVlKHYpOyB9IHdoaWxlICgwKQorCisvKiBNYXhpbXVtIG51bWJlciBvZiBkaW1lbnNpb25zLiAqLworI2RlZmluZSBORF9NQVhfTkRJTSAoMiAqIFB5QlVGX01BWF9ORElNKQorCisvKiBDaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIHN1Ym9mZnNldHMgaW4gdGhlIGZpcnN0IGRpbWVuc2lvbi4gKi8KKyNkZWZpbmUgSEFWRV9QVFIoc3Vib2Zmc2V0cykgKHN1Ym9mZnNldHMgJiYgc3Vib2Zmc2V0c1swXSA+PSAwKQorLyogQWRqdXN0IHB0ciBpZiBzdWJvZmZzZXRzIGFyZSBwcmVzZW50LiAqLworI2RlZmluZSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cykgXAorICAgIChIQVZFX1BUUihzdWJvZmZzZXRzKSA/ICooKGNoYXIqKilwdHIpICsgc3Vib2Zmc2V0c1swXSA6IHB0cikKKworLyogRGVmYXVsdDogTnVtUHkgc3R5bGUgKHN0cmlkZXMpLCByZWFkLW9ubHksIG5vIHZhci1leHBvcnQsIEMtc3R5bGUgbGF5b3V0ICovCisjZGVmaW5lIE5EX0RFRkFVTFQgICAgICAgICAgMHgwMDAKKy8qIFVzZXIgY29uZmlndXJhYmxlIGZsYWdzIGZvciB0aGUgbmRhcnJheSAqLworI2RlZmluZSBORF9WQVJFWFBPUlQgICAgICAgIDB4MDAxICAgLyogY2hhbmdlIGxheW91dCB3aGlsZSBidWZmZXJzIGFyZSBleHBvcnRlZCAqLworLyogVXNlciBjb25maWd1cmFibGUgZmxhZ3MgZm9yIGVhY2ggYmFzZSBidWZmZXIgKi8KKyNkZWZpbmUgTkRfV1JJVEFCTEUgICAgICAgICAweDAwMiAgIC8qIG1hcmsgYmFzZSBidWZmZXIgYXMgd3JpdGFibGUgKi8KKyNkZWZpbmUgTkRfRk9SVFJBTiAgICAgICAgICAweDAwNCAgIC8qIEZvcnRyYW4gY29udGlndW91cyBsYXlvdXQgKi8KKyNkZWZpbmUgTkRfU0NBTEFSICAgICAgICAgICAweDAwOCAgIC8qIHNjYWxhcjogbmRpbSA9IDAgKi8KKyNkZWZpbmUgTkRfUElMICAgICAgICAgICAgICAweDAxMCAgIC8qIGNvbnZlcnQgdG8gUElMLXN0eWxlIGFycmF5IChzdWJvZmZzZXRzKSAqLworI2RlZmluZSBORF9SRURJUkVDVCAgICAgICAgIDB4MDIwICAgLyogcmVkaXJlY3QgYnVmZmVyIHJlcXVlc3RzICovCisjZGVmaW5lIE5EX0dFVEJVRl9GQUlMICAgICAgMHgwNDAgICAvKiB0cmlnZ2VyIGdldGJ1ZmZlciBmYWlsdXJlICovCisjZGVmaW5lIE5EX0dFVEJVRl9VTkRFRklORUQgMHgwODAgICAvKiB1bmRlZmluZWQgdmlldy5vYmogKi8KKy8qIEludGVybmFsIGZsYWdzIGZvciB0aGUgYmFzZSBidWZmZXIgKi8KKyNkZWZpbmUgTkRfQyAgICAgICAgICAgICAgICAweDEwMCAgIC8qIEMgY29udGlndW91cyBsYXlvdXQgKGRlZmF1bHQpICovCisjZGVmaW5lIE5EX09XTl9BUlJBWVMgICAgICAgMHgyMDAgICAvKiBjb25zdW1lciBvd25zIGFycmF5cyAqLworCisvKiBuZGFycmF5IHByb3BlcnRpZXMgKi8KKyNkZWZpbmUgTkRfSVNfQ09OU1VNRVIobmQpIFwKKyAgICAoKChOREFycmF5T2JqZWN0ICopbmQpLT5oZWFkID09ICYoKE5EQXJyYXlPYmplY3QgKiluZCktPnN0YXRpY2J1ZikKKworLyogbmRidWYtPmZsYWdzIHByb3BlcnRpZXMgKi8KKyNkZWZpbmUgTkRfQ19DT05USUdVT1VTKGZsYWdzKSAoISEoZmxhZ3MmKE5EX1NDQUxBUnxORF9DKSkpCisjZGVmaW5lIE5EX0ZPUlRSQU5fQ09OVElHVU9VUyhmbGFncykgKCEhKGZsYWdzJihORF9TQ0FMQVJ8TkRfRk9SVFJBTikpKQorI2RlZmluZSBORF9BTllfQ09OVElHVU9VUyhmbGFncykgKCEhKGZsYWdzJihORF9TQ0FMQVJ8TkRfQ3xORF9GT1JUUkFOKSkpCisKKy8qIGdldGJ1ZmZlcigpIHJlcXVlc3RzICovCisjZGVmaW5lIFJFUV9JTkRJUkVDVChmbGFncykgKChmbGFncyZQeUJVRl9JTkRJUkVDVCkgPT0gUHlCVUZfSU5ESVJFQ1QpCisjZGVmaW5lIFJFUV9DX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfQ19DT05USUdVT1VTKSA9PSBQeUJVRl9DX0NPTlRJR1VPVVMpCisjZGVmaW5lIFJFUV9GX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfRl9DT05USUdVT1VTKSA9PSBQeUJVRl9GX0NPTlRJR1VPVVMpCisjZGVmaW5lIFJFUV9BTllfQ09OVElHVU9VUyhmbGFncykgKChmbGFncyZQeUJVRl9BTllfQ09OVElHVU9VUykgPT0gUHlCVUZfQU5ZX0NPTlRJR1VPVVMpCisjZGVmaW5lIFJFUV9TVFJJREVTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX1NUUklERVMpID09IFB5QlVGX1NUUklERVMpCisjZGVmaW5lIFJFUV9TSEFQRShmbGFncykgKChmbGFncyZQeUJVRl9ORCkgPT0gUHlCVUZfTkQpCisjZGVmaW5lIFJFUV9XUklUQUJMRShmbGFncykgKGZsYWdzJlB5QlVGX1dSSVRBQkxFKQorI2RlZmluZSBSRVFfRk9STUFUKGZsYWdzKSAoZmxhZ3MmUHlCVUZfRk9STUFUKQorCisKKy8qIFNpbmdsZSBub2RlIG9mIGEgbGlzdCBvZiBiYXNlIGJ1ZmZlcnMuIFRoZSBsaXN0IGlzIG5lZWRlZCB0byBpbXBsZW1lbnQKKyAgIGNoYW5nZXMgaW4gbWVtb3J5IGxheW91dCB3aGlsZSBleHBvcnRlZCBidWZmZXJzIGFyZSBhY3RpdmUuICovCitzdGF0aWMgUHlUeXBlT2JqZWN0IE5EQXJyYXlfVHlwZTsKKworc3RydWN0IG5kYnVmOwordHlwZWRlZiBzdHJ1Y3QgbmRidWYgeworICAgIHN0cnVjdCBuZGJ1ZiAqbmV4dDsKKyAgICBzdHJ1Y3QgbmRidWYgKnByZXY7CisgICAgUHlfc3NpemVfdCBsZW47ICAgICAvKiBsZW5ndGggb2YgZGF0YSAqLworICAgIFB5X3NzaXplX3Qgb2Zmc2V0OyAgLyogc3RhcnQgb2YgdGhlIGFycmF5IHJlbGF0aXZlIHRvIGRhdGEgKi8KKyAgICBjaGFyICpkYXRhOyAgICAgICAgIC8qIHJhdyBkYXRhICovCisgICAgaW50IGZsYWdzOyAgICAgICAgICAvKiBjYXBhYmlsaXRpZXMgb2YgdGhlIGJhc2UgYnVmZmVyICovCisgICAgUHlfc3NpemVfdCBleHBvcnRzOyAvKiBudW1iZXIgb2YgZXhwb3J0cyAqLworICAgIFB5X2J1ZmZlciBiYXNlOyAgICAgLyogYmFzZSBidWZmZXIgKi8KK30gbmRidWZfdDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBpbnQgZmxhZ3M7ICAgICAgICAgIC8qIG5kYXJyYXkgZmxhZ3MgKi8KKyAgICBuZGJ1Zl90IHN0YXRpY2J1ZjsgIC8qIHN0YXRpYyBidWZmZXIgZm9yIHJlLWV4cG9ydGluZyBtb2RlICovCisgICAgbmRidWZfdCAqaGVhZDsgICAgICAvKiBjdXJyZW50bHkgYWN0aXZlIGJhc2UgYnVmZmVyICovCit9IE5EQXJyYXlPYmplY3Q7CisKKworc3RhdGljIG5kYnVmX3QgKgorbmRidWZfbmV3KFB5X3NzaXplX3Qgbml0ZW1zLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBQeV9zc2l6ZV90IG9mZnNldCwgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmOworICAgIFB5X2J1ZmZlciAqYmFzZTsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGxlbiA9IG5pdGVtcyAqIGl0ZW1zaXplOworICAgIGlmIChvZmZzZXQgJSBpdGVtc2l6ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJvZmZzZXQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIGl0ZW1zaXplIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQraXRlbXNpemUgPiBsZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJvZmZzZXQgb3V0IG9mIGJvdW5kcyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1ZiA9IFB5TWVtX01hbGxvYyhzaXplb2YgKm5kYnVmKTsKKyAgICBpZiAobmRidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1Zi0+bmV4dCA9IE5VTEw7CisgICAgbmRidWYtPnByZXYgPSBOVUxMOworICAgIG5kYnVmLT5sZW4gPSBsZW47CisgICAgbmRidWYtPm9mZnNldD0gb2Zmc2V0OworCisgICAgbmRidWYtPmRhdGEgPSBQeU1lbV9NYWxsb2MobGVuKTsKKyAgICBpZiAobmRidWYtPmRhdGEgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBQeU1lbV9GcmVlKG5kYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbmRidWYtPmZsYWdzID0gZmxhZ3M7CisgICAgbmRidWYtPmV4cG9ydHMgPSAwOworCisgICAgYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBiYXNlLT5vYmogPSBOVUxMOworICAgIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhOworICAgIGJhc2UtPmxlbiA9IGxlbjsKKyAgICBiYXNlLT5pdGVtc2l6ZSA9IDE7CisgICAgYmFzZS0+cmVhZG9ubHkgPSAwOworICAgIGJhc2UtPmZvcm1hdCA9IE5VTEw7CisgICAgYmFzZS0+bmRpbSA9IDE7CisgICAgYmFzZS0+c2hhcGUgPSBOVUxMOworICAgIGJhc2UtPnN0cmlkZXMgPSBOVUxMOworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBOVUxMOworICAgIGJhc2UtPmludGVybmFsID0gbmRidWY7CisKKyAgICByZXR1cm4gbmRidWY7Cit9CisKK3N0YXRpYyB2b2lkCituZGJ1Zl9mcmVlKG5kYnVmX3QgKm5kYnVmKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKworICAgIFB5TWVtX1hGcmVlKG5kYnVmLT5kYXRhKTsKKyAgICBQeU1lbV9YRnJlZShiYXNlLT5mb3JtYXQpOworICAgIFB5TWVtX1hGcmVlKGJhc2UtPnNoYXBlKTsKKyAgICBQeU1lbV9YRnJlZShiYXNlLT5zdHJpZGVzKTsKKyAgICBQeU1lbV9YRnJlZShiYXNlLT5zdWJvZmZzZXRzKTsKKworICAgIFB5TWVtX0ZyZWUobmRidWYpOworfQorCitzdGF0aWMgdm9pZAorbmRidWZfcHVzaChOREFycmF5T2JqZWN0ICpuZCwgbmRidWZfdCAqZWx0KQoreworICAgIGVsdC0+bmV4dCA9IG5kLT5oZWFkOworICAgIGlmIChuZC0+aGVhZCkgbmQtPmhlYWQtPnByZXYgPSBlbHQ7CisgICAgbmQtPmhlYWQgPSBlbHQ7CisgICAgZWx0LT5wcmV2ID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK25kYnVmX2RlbGV0ZShOREFycmF5T2JqZWN0ICpuZCwgbmRidWZfdCAqZWx0KQoreworICAgIGlmIChlbHQtPnByZXYpCisgICAgICAgIGVsdC0+cHJldi0+bmV4dCA9IGVsdC0+bmV4dDsKKyAgICBlbHNlCisgICAgICAgIG5kLT5oZWFkID0gZWx0LT5uZXh0OworICAgIAorICAgIGlmIChlbHQtPm5leHQpCisgICAgICAgIGVsdC0+bmV4dC0+cHJldiA9IGVsdC0+cHJldjsKKworICAgIG5kYnVmX2ZyZWUoZWx0KTsKK30KKworc3RhdGljIHZvaWQKK25kYnVmX3BvcChOREFycmF5T2JqZWN0ICpuZCkKK3sKKyAgICBuZGJ1Zl9kZWxldGUobmQsIG5kLT5oZWFkKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQ7CisKKyAgICBuZCA9IFB5T2JqZWN0X05ldyhOREFycmF5T2JqZWN0LCAmTkRBcnJheV9UeXBlKTsKKyAgICBpZiAobmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuZC0+ZmxhZ3MgPSAwOworICAgIG5kLT5oZWFkID0gTlVMTDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmQ7Cit9CisKK3N0YXRpYyB2b2lkCituZGFycmF5X2RlYWxsb2MoTkRBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+aGVhZCkgeworICAgICAgICBpZiAoTkRfSVNfQ09OU1VNRVIoc2VsZikpIHsKKyAgICAgICAgICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgICAgICAgICAgaWYgKHNlbGYtPmhlYWQtPmZsYWdzICYgTkRfT1dOX0FSUkFZUykgeworICAgICAgICAgICAgICAgIFB5TWVtX1hGcmVlKGJhc2UtPnNoYXBlKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9YRnJlZShiYXNlLT5zdHJpZGVzKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9YRnJlZShiYXNlLT5zdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoYmFzZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB3aGlsZSAoc2VsZi0+aGVhZCkKKyAgICAgICAgICAgICAgICBuZGJ1Zl9wb3Aoc2VsZik7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCitzdGF0aWMgaW50CituZGFycmF5X2luaXRfc3RhdGljYnVmKFB5T2JqZWN0ICpleHBvcnRlciwgTkRBcnJheU9iamVjdCAqbmQsIGludCBmbGFncykKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmQtPnN0YXRpY2J1Zi5iYXNlOworCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihleHBvcnRlciwgYmFzZSwgZmxhZ3MpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbmQtPmhlYWQgPSAmbmQtPnN0YXRpY2J1ZjsKKworICAgIG5kLT5oZWFkLT5uZXh0ID0gTlVMTDsKKyAgICBuZC0+aGVhZC0+cHJldiA9IE5VTEw7CisgICAgbmQtPmhlYWQtPmxlbiA9IC0xOworICAgIG5kLT5oZWFkLT5vZmZzZXQgPSAtMTsKKyAgICBuZC0+aGVhZC0+ZGF0YSA9IE5VTEw7CisKKyAgICBuZC0+aGVhZC0+ZmxhZ3MgPSBiYXNlLT5yZWFkb25seSA/IDAgOiBORF9XUklUQUJMRTsKKyAgICBuZC0+aGVhZC0+ZXhwb3J0cyA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2luaXRfZmxhZ3MobmRidWZfdCAqbmRidWYpCit7CisgICAgaWYgKG5kYnVmLT5iYXNlLm5kaW0gPT0gMCkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX1NDQUxBUjsKKyAgICBpZiAobmRidWYtPmJhc2Uuc3Vib2Zmc2V0cykKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX1BJTDsKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZGJ1Zi0+YmFzZSwgJ0MnKSkKKyAgICAgICAgbmRidWYtPmZsYWdzIHw9IE5EX0M7CisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cygmbmRidWYtPmJhc2UsICdGJykpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9GT1JUUkFOOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci9MaXN0IGNvbnZlcnNpb25zICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5X3NzaXplX3QgKnN0cmlkZXNfZnJvbV9zaGFwZShjb25zdCBuZGJ1Zl90ICosIGludCBmbGFncyk7CisKKy8qIEdldCBudW1iZXIgb2YgbWVtYmVycyBpbiBhIHN0cnVjdDogc2VlIGlzc3VlICMxMjc0MCAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeV9zc2l6ZV90IHNfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IHNfbGVuOworfSBQeVBhcnRpYWxTdHJ1Y3RPYmplY3Q7CisKK3N0YXRpYyBQeV9zc2l6ZV90CitnZXRfbm1lbWIoUHlPYmplY3QgKnMpCit7CisgICAgcmV0dXJuICgoUHlQYXJ0aWFsU3RydWN0T2JqZWN0ICopcyktPnNfbGVuOworfQorCisvKiBQYWNrIGFsbCBpdGVtcyBpbnRvIHRoZSBidWZmZXIgb2YgJ29iaicuIFRoZSAnZm9ybWF0JyBwYXJhbWV0ZXIgbXVzdCBiZQorICAgaW4gc3RydWN0IG1vZHVsZSBzeW50YXguIEZvciBzdGFuZGFyZCBDIHR5cGVzLCBhIHNpbmdsZSBpdGVtIGlzIGFuIGludGVnZXIuCisgICBGb3IgY29tcG91bmQgdHlwZXMsIGEgc2luZ2xlIGl0ZW0gaXMgYSB0dXBsZSBvZiBpbnRlZ2Vycy4gKi8KK3N0YXRpYyBpbnQKK3BhY2tfZnJvbV9saXN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICppdGVtcywgUHlPYmplY3QgKmZvcm1hdCwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKnN0cnVjdG9iaiwgKnBhY2tfaW50bzsKKyAgICBQeU9iamVjdCAqYXJncywgKm9mZnNldDsKKyAgICBQeU9iamVjdCAqaXRlbSwgKnRtcDsKKyAgICBQeV9zc2l6ZV90IG5pdGVtczsgLyogbnVtYmVyIG9mIGl0ZW1zICovCisgICAgUHlfc3NpemVfdCBubWVtYjsgIC8qIG51bWJlciBvZiBtZW1iZXJzIGluIGEgc2luZ2xlIGl0ZW0gKi8KKyAgICBQeV9zc2l6ZV90IGksIGo7CisgICAgaW50IHJldCA9IDA7CisKKyAgICBhc3NlcnQoUHlPYmplY3RfQ2hlY2tCdWZmZXIob2JqKSk7CisgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhpdGVtcykgfHwgUHlUdXBsZV9DaGVjayhpdGVtcykpOworCisgICAgc3RydWN0b2JqID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhTdHJ1Y3QsIGZvcm1hdCwgTlVMTCk7CisgICAgaWYgKHN0cnVjdG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoaXRlbXMpOworICAgIG5tZW1iID0gZ2V0X25tZW1iKHN0cnVjdG9iaik7CisgICAgYXNzZXJ0KG5tZW1iID49IDEpOworCisgICAgcGFja19pbnRvID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3RvYmosICJwYWNrX2ludG8iKTsKKyAgICBpZiAocGFja19pbnRvID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHN0cnVjdG9iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBubWVtYiA+PSAxICovCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KDIgKyBubWVtYik7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYocGFja19pbnRvKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cnVjdG9iaik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBvZmZzZXQgPSBOVUxMOworICAgIGZvciAoaSA9IDA7IGkgPCBuaXRlbXM7IGkrKykgeworICAgICAgICAvKiBMb29wIGludmFyaWFudDogYXJnc1tqXSBhcmUgYm9ycm93ZWQgcmVmZXJlbmNlcyBvciBOVUxMLiAqLworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG9iaik7CisgICAgICAgIGZvciAoaiA9IDE7IGogPCAyK25tZW1iOyBqKyspCisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIGosIE5VTEwpOworCisgICAgICAgIFB5X1hERUNSRUYob2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGkqaXRlbXNpemUpOworICAgICAgICBpZiAob2Zmc2V0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAxLCBvZmZzZXQpOworCisgICAgICAgIGl0ZW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oaXRlbXMsIGkpOworICAgICAgICBpZiAoKFB5Qnl0ZXNfQ2hlY2soaXRlbSkgfHwgUHlMb25nX0NoZWNrKGl0ZW0pIHx8CisgICAgICAgICAgICAgUHlGbG9hdF9DaGVjayhpdGVtKSkgJiYgbm1lbWIgPT0gMSkgeworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAyLCBpdGVtKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgoUHlMaXN0X0NoZWNrKGl0ZW0pIHx8IFB5VHVwbGVfQ2hlY2soaXRlbSkpICYmCisgICAgICAgICAgICAgICAgIFB5U2VxdWVuY2VfTGVuZ3RoKGl0ZW0pID09IG5tZW1iKSB7CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbm1lbWI7IGorKykgeworICAgICAgICAgICAgICAgIHRtcCA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShpdGVtLCBqKTsKKyAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDIraiwgdG1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtaXNtYXRjaCBiZXR3ZWVuIGluaXRpYWxpemVyIGVsZW1lbnQgYW5kIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldCA9IC0xOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0bXAgPSBQeU9iamVjdF9DYWxsT2JqZWN0KHBhY2tfaW50bywgYXJncyk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYob2JqKTsgLyogYXJnc1swXSAqLworICAgIC8qIGFyZ3NbMV06IG9mZnNldCBpcyBlaXRoZXIgTlVMTCBvciBzaG91bGQgYmUgZGVhbGxvYydkICovCisgICAgZm9yIChpID0gMjsgaSA8IDIrbm1lbWI7IGkrKykgeworICAgICAgICB0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICBQeV9YSU5DUkVGKHRtcCk7CisgICAgfQorICAgIFB5X0RFQ1JFRihhcmdzKTsKKworICAgIFB5X0RFQ1JFRihwYWNrX2ludG8pOworICAgIFB5X0RFQ1JFRihzdHJ1Y3RvYmopOworICAgIHJldHVybiByZXQ7CisKK30KKworLyogUGFjayBzaW5nbGUgZWxlbWVudCAqLworc3RhdGljIGludAorcGFja19zaW5nbGUoY2hhciAqcHRyLCBQeU9iamVjdCAqaXRlbSwgY29uc3QgY2hhciAqZm10LCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICpzdHJ1Y3RvYmogPSBOVUxMLCAqcGFja19pbnRvID0gTlVMTCwgKmFyZ3MgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmb3JtYXQgPSBOVUxMLCAqbXZpZXcgPSBOVUxMLCAqemVybyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpLCBubWVtYjsKKyAgICBpbnQgcmV0ID0gLTE7CisgICAgUHlPYmplY3QgKng7CisKKyAgICBpZiAoZm10ID09IE5VTEwpIGZtdCA9ICJCIjsKKworICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZtdCk7CisgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHN0cnVjdG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoU3RydWN0LCBmb3JtYXQsIE5VTEwpOworICAgIGlmIChzdHJ1Y3RvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBubWVtYiA9IGdldF9ubWVtYihzdHJ1Y3RvYmopOworICAgIGFzc2VydChubWVtYiA+PSAxKTsKKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkocHRyLCBpdGVtc2l6ZSwgUHlCVUZfV1JJVEUpOworICAgIGlmIChtdmlldyA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHplcm8gPSBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAgaWYgKHplcm8gPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBwYWNrX2ludG8gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG9iaiwgInBhY2tfaW50byIpOworICAgIGlmIChwYWNrX2ludG8gPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMitubWVtYik7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIG12aWV3KTsKKyAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHplcm8pOworCisgICAgaWYgKChQeUJ5dGVzX0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSB8fAorICAgICAgICAgUHlGbG9hdF9DaGVjayhpdGVtKSkgJiYgbm1lbWIgPT0gMSkgeworICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAyLCBpdGVtKTsKKyAgICB9CisgICAgZWxzZSBpZiAoKFB5TGlzdF9DaGVjayhpdGVtKSB8fCBQeVR1cGxlX0NoZWNrKGl0ZW0pKSAmJgorICAgICAgICAgICAgIFB5U2VxdWVuY2VfTGVuZ3RoKGl0ZW0pID09IG5tZW1iKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBubWVtYjsgaSsrKSB7CisgICAgICAgICAgICB4ID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGl0ZW0sIGkpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAyK2ksIHgpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJtaXNtYXRjaCBiZXR3ZWVuIGluaXRpYWxpemVyIGVsZW1lbnQgYW5kIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgZ290byBhcmdzX291dDsKKyAgICB9CisKKyAgICB4ID0gUHlPYmplY3RfQ2FsbE9iamVjdChwYWNrX2ludG8sIGFyZ3MpOworICAgIGlmICh4ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICByZXQgPSAwOworICAgIH0KKworCithcmdzX291dDoKKyAgICBmb3IgKGkgPSAwOyBpIDwgMitubWVtYjsgaSsrKQorICAgICAgICBQeV9YSU5DUkVGKFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSkpOworICAgIFB5X1hERUNSRUYoYXJncyk7CitvdXQ6CisgICAgUHlfWERFQ1JFRihwYWNrX2ludG8pOworICAgIFB5X1hERUNSRUYoemVybyk7CisgICAgUHlfWERFQ1JFRihtdmlldyk7CisgICAgUHlfWERFQ1JFRihzdHJ1Y3RvYmopOworICAgIFB5X1hERUNSRUYoZm9ybWF0KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorY29weV9yZWMoY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgbmRpbSwgUHlfc3NpemVfdCBpdGVtc2l6ZSwKKyAgICAgICAgIGNoYXIgKmRwdHIsIGNvbnN0IFB5X3NzaXplX3QgKmRzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpkc3Vib2Zmc2V0cywKKyAgICAgICAgIGNoYXIgKnNwdHIsIGNvbnN0IFB5X3NzaXplX3QgKnNzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzc3Vib2Zmc2V0cywKKyAgICAgICAgIGNoYXIgKm1lbSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQobmRpbSA+PSAxKTsKKworICAgIGlmIChuZGltID09IDEpIHsKKyAgICAgICAgaWYgKCFIQVZFX1BUUihkc3Vib2Zmc2V0cykgJiYgIUhBVkVfUFRSKHNzdWJvZmZzZXRzKSAmJgorICAgICAgICAgICAgZHN0cmlkZXNbMF0gPT0gaXRlbXNpemUgJiYgc3N0cmlkZXNbMF0gPT0gaXRlbXNpemUpIHsKKyAgICAgICAgICAgIG1lbW1vdmUoZHB0ciwgc3B0ciwgc2hhcGVbMF0gKiBpdGVtc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaGFyICpwOworICAgICAgICAgICAgYXNzZXJ0KG1lbSAhPSBOVUxMKTsKKyAgICAgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaTxzaGFwZVswXTsgcCs9aXRlbXNpemUsIHNwdHIrPXNzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworICAgICAgICAgICAgICAgIG1lbWNweShwLCB4c3B0ciwgaXRlbXNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpPTAsIHA9bWVtOyBpPHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgZHB0cis9ZHN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgICAgIGNoYXIgKnhkcHRyID0gQURKVVNUX1BUUihkcHRyLCBkc3Vib2Zmc2V0cyk7CisgICAgICAgICAgICAgICAgbWVtY3B5KHhkcHRyLCBwLCBpdGVtc2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgZHB0cis9ZHN0cmlkZXNbMF0sIHNwdHIrPXNzdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKworICAgICAgICBjb3B5X3JlYyhzaGFwZSsxLCBuZGltLTEsIGl0ZW1zaXplLAorICAgICAgICAgICAgICAgICB4ZHB0ciwgZHN0cmlkZXMrMSwgZHN1Ym9mZnNldHMgPyBkc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgeHNwdHIsIHNzdHJpZGVzKzEsIHNzdWJvZmZzZXRzID8gc3N1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgIG1lbSk7CisgICAgfQorfQorCitzdGF0aWMgaW50CitjbXBfc3RydWN0dXJlKFB5X2J1ZmZlciAqZGVzdCwgUHlfYnVmZmVyICpzcmMpCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKHN0cmNtcChGSVhfRk9STUFUKGRlc3QtPmZvcm1hdCksIEZJWF9GT1JNQVQoc3JjLT5mb3JtYXQpKSAhPSAwIHx8CisgICAgICAgIGRlc3QtPml0ZW1zaXplICE9IHNyYy0+aXRlbXNpemUgfHwKKyAgICAgICAgZGVzdC0+bmRpbSAhPSBzcmMtPm5kaW0pCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBkZXN0LT5uZGltOyBpKyspIHsKKyAgICAgICAgaWYgKGRlc3QtPnNoYXBlW2ldICE9IHNyYy0+c2hhcGVbaV0pCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvcHkgc3JjIHRvIGRlc3QuIEJvdGggYnVmZmVycyBtdXN0IGhhdmUgdGhlIHNhbWUgZm9ybWF0LCBpdGVtc2l6ZSwKKyAgIG5kaW0gYW5kIHNoYXBlLiBDb3B5aW5nIGlzIGF0b21pYywgdGhlIGZ1bmN0aW9uIG5ldmVyIGZhaWxzIHdpdGgKKyAgIGEgcGFydGlhbCBjb3B5LiAqLworc3RhdGljIGludAorY29weV9idWZmZXIoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBjaGFyICptZW0gPSBOVUxMOworCisgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwKTsKKworICAgIGlmIChjbXBfc3RydWN0dXJlKGRlc3QsIHNyYykgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgYXNzaWdubWVudDogbHZhbHVlIGFuZCBydmFsdWUgaGF2ZSBkaWZmZXJlbnQgc3RydWN0dXJlcyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKChkZXN0LT5zdWJvZmZzZXRzICYmIGRlc3QtPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKSB8fAorICAgICAgICAoc3JjLT5zdWJvZmZzZXRzICYmIHNyYy0+c3Vib2Zmc2V0c1tzcmMtPm5kaW0tMV0gPj0gMCkgfHwKKyAgICAgICAgZGVzdC0+c3RyaWRlc1tkZXN0LT5uZGltLTFdICE9IGRlc3QtPml0ZW1zaXplIHx8CisgICAgICAgIHNyYy0+c3RyaWRlc1tzcmMtPm5kaW0tMV0gIT0gc3JjLT5pdGVtc2l6ZSkgeworICAgICAgICBtZW0gPSBQeU1lbV9NYWxsb2MoZGVzdC0+c2hhcGVbZGVzdC0+bmRpbS0xXSAqIGRlc3QtPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY29weV9yZWMoZGVzdC0+c2hhcGUsIGRlc3QtPm5kaW0sIGRlc3QtPml0ZW1zaXplLAorICAgICAgICAgICAgIGRlc3QtPmJ1ZiwgZGVzdC0+c3RyaWRlcywgZGVzdC0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBzcmMtPmJ1Ziwgc3JjLT5zdHJpZGVzLCBzcmMtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgbWVtKTsKKworICAgIFB5TWVtX1hGcmVlKG1lbSk7CisgICAgcmV0dXJuIDA7Cit9CisKKworLyogVW5wYWNrIHNpbmdsZSBlbGVtZW50ICovCitzdGF0aWMgUHlPYmplY3QgKgordW5wYWNrX3NpbmdsZShjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmZtdCwgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqeCwgKnVucGFja19mcm9tLCAqbXZpZXc7CisKKyAgICBpZiAoZm10ID09IE5VTEwpIHsKKyAgICAgICAgZm10ID0gIkIiOworICAgICAgICBpdGVtc2l6ZSA9IDE7CisgICAgfQorCisgICAgdW5wYWNrX2Zyb20gPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG1vZHVsZSwgInVucGFja19mcm9tIik7CisgICAgaWYgKHVucGFja19mcm9tID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbXZpZXcgPSBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeShwdHIsIGl0ZW1zaXplLCBQeUJVRl9SRUFEKTsKKyAgICBpZiAobXZpZXcgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodW5wYWNrX2Zyb20pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICB4ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKHVucGFja19mcm9tLCAic08iLCBmbXQsIG12aWV3KTsKKyAgICBQeV9ERUNSRUYodW5wYWNrX2Zyb20pOworICAgIFB5X0RFQ1JFRihtdmlldyk7CisgICAgaWYgKHggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlUdXBsZV9HRVRfU0laRSh4KSA9PSAxKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVR1cGxlX0dFVF9JVEVNKHgsIDApOworICAgICAgICBQeV9JTkNSRUYodG1wKTsKKyAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICByZXR1cm4gdG1wOworICAgIH0KKworICAgIHJldHVybiB4OworfQorCisvKiBVbnBhY2sgYSBtdWx0aS1kaW1lbnNpb25hbCBtYXRyaXggaW50byBhIG5lc3RlZCBsaXN0LiBSZXR1cm4gYSBzY2FsYXIKKyAgIGZvciBuZGltID0gMC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCit1bnBhY2tfcmVjKFB5T2JqZWN0ICp1bnBhY2tfZnJvbSwgY2hhciAqcHRyLCBQeU9iamVjdCAqbXZpZXcsIGNoYXIgKml0ZW0sCisgICAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLAorICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLCBQeV9zc2l6ZV90IG5kaW0sIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlPYmplY3QgKmxzdCwgKng7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMCk7CisgICAgYXNzZXJ0KHNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzdHJpZGVzICE9IE5VTEwpOworCisgICAgaWYgKG5kaW0gPT0gMCkgeworICAgICAgICBtZW1jcHkoaXRlbSwgcHRyLCBpdGVtc2l6ZSk7CisgICAgICAgIHggPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHVucGFja19mcm9tLCBtdmlldywgTlVMTCk7CisgICAgICAgIGlmICh4ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoeCkgPT0gMSkgeworICAgICAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0oeCwgMCk7CisgICAgICAgICAgICBQeV9JTkNSRUYodG1wKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih4KTsKKyAgICAgICAgICAgIHJldHVybiB0bXA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgbHN0ID0gUHlMaXN0X05ldyhzaGFwZVswXSk7CisgICAgaWYgKGxzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaGFwZVswXTsgcHRyKz1zdHJpZGVzWzBdLCBpKyspIHsKKyAgICAgICAgY2hhciAqbmV4dHB0ciA9IEFESlVTVF9QVFIocHRyLCBzdWJvZmZzZXRzKTsKKworICAgICAgICB4ID0gdW5wYWNrX3JlYyh1bnBhY2tfZnJvbSwgbmV4dHB0ciwgbXZpZXcsIGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgIHNoYXBlKzEsIHN0cmlkZXMrMSwgc3Vib2Zmc2V0cyA/IHN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgIG5kaW0tMSwgaXRlbXNpemUpOworICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobHN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxzdCwgaSwgeCk7CisgICAgfQorCisgICAgcmV0dXJuIGxzdDsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9hc19saXN0KE5EQXJyYXlPYmplY3QgKm5kKQoreworICAgIFB5T2JqZWN0ICpzdHJ1Y3RvYmogPSBOVUxMLCAqdW5wYWNrX2Zyb20gPSBOVUxMOworICAgIFB5T2JqZWN0ICpsc3QgPSBOVUxMLCAqbXZpZXcgPSBOVUxMOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBQeV9zc2l6ZV90ICpzaGFwZSA9IGJhc2UtPnNoYXBlOworICAgIFB5X3NzaXplX3QgKnN0cmlkZXMgPSBiYXNlLT5zdHJpZGVzOworICAgIFB5X3NzaXplX3Qgc2ltcGxlX3NoYXBlWzFdOworICAgIFB5X3NzaXplX3Qgc2ltcGxlX3N0cmlkZXNbMV07CisgICAgY2hhciAqaXRlbSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZvcm1hdDsKKyAgICBjaGFyICpmbXQgPSBiYXNlLT5mb3JtYXQ7CisKKyAgICBiYXNlID0gJm5kLT5oZWFkLT5iYXNlOworCisgICAgaWYgKGZtdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXk6IHRvbGlzdCgpIGRvZXMgbm90IHN1cHBvcnQgZm9ybWF0PU5VTEwsIHVzZSAiCisgICAgICAgICAgICAidG9ieXRlcygpIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc2hhcGUgPT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoTkRfQ19DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpOworICAgICAgICBhc3NlcnQoYmFzZS0+c3RyaWRlcyA9PSBOVUxMKTsKKyAgICAgICAgYXNzZXJ0KGJhc2UtPm5kaW0gPD0gMSk7CisgICAgICAgIHNoYXBlID0gc2ltcGxlX3NoYXBlOworICAgICAgICBzaGFwZVswXSA9IGJhc2UtPmxlbjsKKyAgICAgICAgc3RyaWRlcyA9IHNpbXBsZV9zdHJpZGVzOworICAgICAgICBzdHJpZGVzWzBdID0gYmFzZS0+aXRlbXNpemU7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmlkZXMgPT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoTkRfQ19DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpOworICAgICAgICBzdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kLT5oZWFkLCAwKTsKKyAgICAgICAgaWYgKHN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGZtdCk7CisgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQorICAgICAgICBnb3RvIG91dDsKKworICAgIHN0cnVjdG9iaiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoU3RydWN0LCBmb3JtYXQsIE5VTEwpOworICAgIFB5X0RFQ1JFRihmb3JtYXQpOworICAgIGlmIChzdHJ1Y3RvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICB1bnBhY2tfZnJvbSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAidW5wYWNrX2Zyb20iKTsKKyAgICBpZiAodW5wYWNrX2Zyb20gPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBpdGVtID0gUHlNZW1fTWFsbG9jKGJhc2UtPml0ZW1zaXplKTsKKyAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIG12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoaXRlbSwgYmFzZS0+aXRlbXNpemUsIFB5QlVGX1dSSVRFKTsKKyAgICBpZiAobXZpZXcgPT0gTlVMTCkKKyAgICAgICAgZ290byBvdXQ7CisKKyAgICBsc3QgPSB1bnBhY2tfcmVjKHVucGFja19mcm9tLCBiYXNlLT5idWYsIG12aWV3LCBpdGVtLAorICAgICAgICAgICAgICAgICAgICAgc2hhcGUsIHN0cmlkZXMsIGJhc2UtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICBiYXNlLT5uZGltLCBiYXNlLT5pdGVtc2l6ZSk7CisKK291dDoKKyAgICBQeV9YREVDUkVGKG12aWV3KTsKKyAgICBQeU1lbV9YRnJlZShpdGVtKTsKKyAgICBQeV9YREVDUkVGKHVucGFja19mcm9tKTsKKyAgICBQeV9YREVDUkVGKHN0cnVjdG9iaik7CisgICAgaWYgKHN0cmlkZXMgIT0gYmFzZS0+c3RyaWRlcyAmJiBzdHJpZGVzICE9IHNpbXBsZV9zdHJpZGVzKQorICAgICAgICBQeU1lbV9YRnJlZShzdHJpZGVzKTsKKworICAgIHJldHVybiBsc3Q7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplIG5kYnVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICAgU3RhdGUgb2YgYSBuZXcgbmRidWYgZHVyaW5nIGluaXRpYWxpemF0aW9uLiAnT0snIG1lYW5zIHRoYXQgaW5pdGlhbGl6YXRpb24KKyAgIGlzIGNvbXBsZXRlLiAnUFRSJyBtZWFucyB0aGF0IGEgcG9pbnRlciBoYXMgYmVlbiBpbml0aWFsaXplZCwgYnV0IHRoZQorICAgc3RhdGUgb2YgdGhlIG1lbW9yeSBpcyBzdGlsbCB1bmRlZmluZWQgYW5kIG5kYnVmLT5vZmZzZXQgaXMgZGlzcmVnYXJkZWQuCisKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCAgICAgICAgICAgICAgICAgfCBuZGJ1Zl9uZXcgfCBpbml0X3NpbXBsZSB8IGluaXRfc3RydWN0dXJlIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBuZXh0ICAgICAgICAgICAgfCBPSyAoTlVMTCkgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBwcmV2ICAgICAgICAgICAgfCBPSyAoTlVMTCkgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBsZW4gICAgICAgICAgICAgfCAgICBPSyAgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBvZmZzZXQgICAgICAgICAgfCAgICBPSyAgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBkYXRhICAgICAgICAgICAgfCAgICBQVFIgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBmbGFncyAgICAgICAgICAgfCAgICB1c2VyICAgfCAgICB1c2VyICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBleHBvcnRzICAgICAgICAgfCAgIE9LICgwKSAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLm9iaiAgICAgICAgfCBPSyAoTlVMTCkgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLmJ1ZiAgICAgICAgfCAgICBQVFIgICAgfCAgICAgUFRSICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLmxlbiAgICAgICAgfCBsZW4oZGF0YSkgfCAgbGVuKGRhdGEpICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLml0ZW1zaXplICAgfCAgICAgMSAgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLnJlYWRvbmx5ICAgfCAgICAgMCAgICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCBiYXNlLmZvcm1hdCAgICAgfCAgICBOVUxMICAgfCAgICAgT0sgICAgICB8ICAgICAgIE9LICAgICAgIHwgIAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UubmRpbSAgICAgICB8ICAgICAxICAgICB8ICAgICAgMSAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2Uuc2hhcGUgICAgICB8ICAgIE5VTEwgICB8ICAgIE5VTEwgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2Uuc3RyaWRlcyAgICB8ICAgIE5VTEwgICB8ICAgIE5VTEwgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2Uuc3Vib2Zmc2V0cyB8ICAgIE5VTEwgICB8ICAgIE5VTEwgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICB8IGJhc2UuaW50ZXJuYWwgICB8ICAgIE9LICAgICB8ICAgIE9LICAgICAgIHwgICAgICAgT0sgICAgICAgfAorICArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworCisqLworCitzdGF0aWMgUHlfc3NpemVfdAorZ2V0X2l0ZW1zaXplKFB5T2JqZWN0ICpmb3JtYXQpCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICBQeV9zc2l6ZV90IGl0ZW1zaXplOworCisgICAgdG1wID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhjYWxjc2l6ZSwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpdGVtc2l6ZSA9IFB5TG9uZ19Bc1NzaXplX3QodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKworICAgIHJldHVybiBpdGVtc2l6ZTsKK30KKworc3RhdGljIGNoYXIgKgorZ2V0X2Zvcm1hdChQeU9iamVjdCAqZm9ybWF0KQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgY2hhciAqZm10OworCisgICAgdG1wID0gUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcoZm9ybWF0KTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZtdCA9IFB5TWVtX01hbGxvYyhQeUJ5dGVzX0dFVF9TSVpFKHRtcCkrMSk7CisgICAgaWYgKGZtdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc3RyY3B5KGZtdCwgUHlCeXRlc19BU19TVFJJTkcodG1wKSk7CisgICAgUHlfREVDUkVGKHRtcCk7CisKKyAgICByZXR1cm4gZm10OworfQorCitzdGF0aWMgaW50Citpbml0X3NpbXBsZShuZGJ1Zl90ICpuZGJ1ZiwgUHlPYmplY3QgKml0ZW1zLCBQeU9iamVjdCAqZm9ybWF0LAorICAgICAgICAgICAgUHlfc3NpemVfdCBpdGVtc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqbXZpZXc7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJm5kYnVmLT5iYXNlOworICAgIGludCByZXQ7CisKKyAgICBtdmlldyA9IFB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKGJhc2UpOworICAgIGlmIChtdmlldyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXQgPSBwYWNrX2Zyb21fbGlzdChtdmlldywgaXRlbXMsIGZvcm1hdCwgaXRlbXNpemUpOworICAgIFB5X0RFQ1JFRihtdmlldyk7CisgICAgaWYgKHJldCA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGJhc2UtPnJlYWRvbmx5ID0gIShuZGJ1Zi0+ZmxhZ3MgJiBORF9XUklUQUJMRSk7CisgICAgYmFzZS0+aXRlbXNpemUgPSBpdGVtc2l6ZTsKKyAgICBiYXNlLT5mb3JtYXQgPSBnZXRfZm9ybWF0KGZvcm1hdCk7CisgICAgaWYgKGJhc2UtPmZvcm1hdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5X3NzaXplX3QgKgorc2VxX2FzX3NzaXplX2FycmF5KFB5T2JqZWN0ICpzZXEsIFB5X3NzaXplX3QgbGVuLCBpbnQgaXNfc2hhcGUpCit7CisgICAgUHlfc3NpemVfdCAqZGVzdDsKKyAgICBQeV9zc2l6ZV90IHgsIGk7CisKKyAgICBkZXN0ID0gUHlNZW1fTWFsbG9jKGxlbiAqIChzaXplb2YgKmRlc3QpKTsKKyAgICBpZiAoZGVzdCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHNlcSwgaSk7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJlbGVtZW50cyBvZiAlcyBtdXN0IGJlIGludGVnZXJzIiwKKyAgICAgICAgICAgICAgICBpc19zaGFwZSA/ICJzaGFwZSIgOiAic3RyaWRlcyIpOworICAgICAgICAgICAgUHlNZW1fRnJlZShkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHggPSBQeUxvbmdfQXNTc2l6ZV90KHRtcCk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzX3NoYXBlICYmIHggPCAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZWxlbWVudHMgb2Ygc2hhcGUgbXVzdCBiZSBpbnRlZ2VycyA+PSAwIik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZGVzdFtpXSA9IHg7CisgICAgfQorCisgICAgcmV0dXJuIGRlc3Q7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90ICoKK3N0cmlkZXNfZnJvbV9zaGFwZShjb25zdCBuZGJ1Zl90ICpuZGJ1ZiwgaW50IGZsYWdzKQoreworICAgIGNvbnN0IFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBQeV9zc2l6ZV90ICpzLCBpOworCisgICAgcyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqcykpOworICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZsYWdzICYgTkRfRk9SVFJBTikgeworICAgICAgICBzWzBdID0gYmFzZS0+aXRlbXNpemU7CisgICAgICAgIGZvciAoaSA9IDE7IGkgPCBiYXNlLT5uZGltOyBpKyspCisgICAgICAgICAgICBzW2ldID0gc1tpLTFdICogYmFzZS0+c2hhcGVbaS0xXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNbYmFzZS0+bmRpbS0xXSA9IGJhc2UtPml0ZW1zaXplOworICAgICAgICBmb3IgKGkgPSBiYXNlLT5uZGltLTI7IGkgPj0gMDsgaS0tKQorICAgICAgICAgICAgc1tpXSA9IHNbaSsxXSAqIGJhc2UtPnNoYXBlW2krMV07CisgICAgfQorCisgICAgcmV0dXJuIHM7Cit9CisKKy8qIEJvdW5kcyBjaGVjazoKKworICAgICBsZW4gOj0gY29tcGxldGUgbGVuZ3RoIG9mIGFsbG9jYXRlZCBtZW1vcnkKKyAgICAgb2Zmc2V0IDo9IHN0YXJ0IG9mIHRoZSBhcnJheQorCisgICAgIEEgc2luZ2xlIGFycmF5IGVsZW1lbnQgaXMgaW5kZXhlZCBieToKKworICAgICAgIGkgPSBpbmRpY2VzWzBdICogc3RyaWRlc1swXSArIGluZGljZXNbMV0gKiBzdHJpZGVzWzFdICsgLi4uCisKKyAgICAgaW1pbiBpcyByZWFjaGVkIHdoZW4gYWxsIGluZGljZXNbbl0gY29tYmluZWQgd2l0aCBwb3NpdGl2ZSBzdHJpZGVzIGFyZSAwCisgICAgIGFuZCBhbGwgaW5kaWNlcyBjb21iaW5lZCB3aXRoIG5lZ2F0aXZlIHN0cmlkZXMgYXJlIHNoYXBlW25dLTEsIHdoaWNoIGlzCisgICAgIHRoZSBtYXhpbXVtIGluZGV4IGZvciB0aGUgbnRoIGRpbWVuc2lvbi4KKworICAgICBpbWF4IGlzIHJlYWNoZWQgd2hlbiBhbGwgaW5kaWNlc1tuXSBjb21iaW5lZCB3aXRoIG5lZ2F0aXZlIHN0cmlkZXMgYXJlIDAKKyAgICAgYW5kIGFsbCBpbmRpY2VzIGNvbWJpbmVkIHdpdGggcG9zaXRpdmUgc3RyaWRlcyBhcmUgc2hhcGVbbl0tMS4KKyovCitzdGF0aWMgaW50Cit2ZXJpZnlfc3RydWN0dXJlKFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IGl0ZW1zaXplLCBQeV9zc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIGNvbnN0IFB5X3NzaXplX3QgKnN0cmlkZXMsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmRpbSkKK3sKKyAgICBQeV9zc2l6ZV90IGltaW4sIGltYXg7CisgICAgUHlfc3NpemVfdCBuOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMCk7CisKKyAgICBpZiAobmRpbSA9PSAwICYmIChvZmZzZXQgPCAwIHx8IG9mZnNldCtpdGVtc2l6ZSA+IGxlbikpCisgICAgICAgIGdvdG8gaW52YWxpZF9jb21iaW5hdGlvbjsKKworICAgIGZvciAobiA9IDA7IG4gPCBuZGltOyBuKyspCisgICAgICAgIGlmIChzdHJpZGVzW25dICUgaXRlbXNpemUpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInN0cmlkZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIGl0ZW1zaXplIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgIGZvciAobiA9IDA7IG4gPCBuZGltOyBuKyspCisgICAgICAgIGlmIChzaGFwZVtuXSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbWluID0gaW1heCA9IDA7CisgICAgZm9yIChuID0gMDsgbiA8IG5kaW07IG4rKykKKyAgICAgICAgaWYgKHN0cmlkZXNbbl0gPD0gMCkKKyAgICAgICAgICAgIGltaW4gKz0gKHNoYXBlW25dLTEpICogc3RyaWRlc1tuXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaW1heCArPSAoc2hhcGVbbl0tMSkgKiBzdHJpZGVzW25dOworCisgICAgaWYgKGltaW4gKyBvZmZzZXQgPCAwIHx8IGltYXggKyBvZmZzZXQgKyBpdGVtc2l6ZSA+IGxlbikKKyAgICAgICAgZ290byBpbnZhbGlkX2NvbWJpbmF0aW9uOworCisgICAgcmV0dXJuIDA7CisKKworaW52YWxpZF9jb21iaW5hdGlvbjoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgImludmFsaWQgY29tYmluYXRpb24gb2YgYnVmZmVyLCBzaGFwZSBhbmQgc3RyaWRlcyIpOworICAgIHJldHVybiAtMTsKK30KKworLyoKKyAgIENvbnZlcnQgYSBOdW1QeS1zdHlsZSBhcnJheSB0byBhbiBhcnJheSB1c2luZyBzdWJvZmZzZXRzIHRvIHN0cmlkZSBpbgorICAgdGhlIGZpcnN0IGRpbWVuc2lvbi4gUmVxdWlyZW1lbnRzOiBuZGltID4gMC4KKworICAgQ29udGlndW91cyBleGFtcGxlCisgICA9PT09PT09PT09PT09PT09PT0KKworICAgICBJbnB1dDoKKyAgICAgLS0tLS0tCisgICAgICAgc2hhcGUgICAgICA9IHsyLCAyLCAzfTsKKyAgICAgICBzdHJpZGVzICAgID0gezYsIDMsIDF9OworICAgICAgIHN1Ym9mZnNldHMgPSBOVUxMOworICAgICAgIGRhdGEgICAgICAgPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExfTsKKyAgICAgICBidWYgICAgICAgID0gJmRhdGFbMF0KKworICAgICBPdXRwdXQ6CisgICAgIC0tLS0tLS0KKyAgICAgICBzaGFwZSAgICAgID0gezIsIDIsIDN9OworICAgICAgIHN0cmlkZXMgICAgPSB7c2l6ZW9mKGNoYXIgKiksIDMsIDF9OworICAgICAgIHN1Ym9mZnNldHMgPSB7MCwgLTEsIC0xfTsKKyAgICAgICBkYXRhICAgICAgID0ge3AxLCBwMiwgMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExfTsKKyAgICAgICAgICAgICAgICAgICAgIHwgICB8ICAgXiAgICAgICAgICAgICAgICAgXgorICAgICAgICAgICAgICAgICAgICAgYC0tLSctLS0nICAgICAgICAgICAgICAgICB8CisgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICBgLS0tLS0tLS0tLS0tLS0tLS0tLS0tJworICAgICAgIGJ1ZiAgICAgICAgPSAmZGF0YVswXQorCisgICAgIFNvLCBpbiB0aGUgZXhhbXBsZSB0aGUgaW5wdXQgcmVzZW1ibGVzIHRoZSB0aHJlZS1kaW1lbnNpb25hbCBhcnJheQorICAgICBjaGFyIHZbMl1bMl1bM10sIHdoaWxlIHRoZSBvdXRwdXQgcmVzZW1ibGVzIGFuIGFycmF5IG9mIHR3byBwb2ludGVycworICAgICB0byB0d28tZGltZW5zaW9uYWwgYXJyYXlzOiBjaGFyICgqdlsyXSlbMl1bM10uCisKKworICAgTm9uLWNvbnRpZ3VvdXMgZXhhbXBsZToKKyAgID09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgSW5wdXQgKHdpdGggb2Zmc2V0IGFuZCBuZWdhdGl2ZSBzdHJpZGVzKToKKyAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICBzaGFwZSAgICAgID0gezIsIDIsIDN9OworICAgICAgIHN0cmlkZXMgICAgPSB7LTYsIDMsIC0xfTsKKyAgICAgICBvZmZzZXQgICAgID0gOAorICAgICAgIHN1Ym9mZnNldHMgPSBOVUxMOworICAgICAgIGRhdGEgICAgICAgPSB7MCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExfTsKKworICAgICBPdXRwdXQ6CisgICAgIC0tLS0tLS0KKyAgICAgICBzaGFwZSAgICAgID0gezIsIDIsIDN9OworICAgICAgIHN0cmlkZXMgICAgPSB7LXNpemVvZihjaGFyICopLCAzLCAtMX07CisgICAgICAgc3Vib2Zmc2V0cyA9IHsyLCAtMSwgLTF9OworICAgICAgIG5ld2RhdGEgICAgPSB7cDEsIHAyLCAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTF9OworICAgICAgICAgICAgICAgICAgICAgfCAgIHwgICBeICAgICBeICAgICAgICAgICBeICAgICBeCisgICAgICAgICAgICAgICAgICAgICBgLS0tJy0tLScgICAgIHwgICAgICAgICAgIHwgICAgIGAtIHAyK3N1Ym9mZnNldHNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgYC0tLS0tLS0tLS0tfC0tLSBwMStzdWJvZmZzZXRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgYC0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgICAgICBidWYgICAgICAgID0gJm5ld2RhdGFbMV0gICMgc3RyaWRpbmcgYmFja3dhcmRzIG92ZXIgdGhlIHBvaW50ZXJzLgorCisgICAgIHN1Ym9mZnNldHNbMF0gaXMgdGhlIHNhbWUgYXMgdGhlIG9mZnNldCB0aGF0IG9uZSB3b3VsZCBzcGVjaWZ5IGlmCisgICAgIHRoZSB0d28gezIsIDN9IHN1YmFycmF5cyB3ZXJlIGNyZWF0ZWQgZGlyZWN0bHksIGhlbmNlIHRoZSBuYW1lLgorKi8KK3N0YXRpYyBpbnQKK2luaXRfc3Vib2Zmc2V0cyhuZGJ1Zl90ICpuZGJ1ZikKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgUHlfc3NpemVfdCBzdGFydCwgc3RlcDsKKyAgICBQeV9zc2l6ZV90IGltaW4sIHN1Ym9mZnNldDA7CisgICAgUHlfc3NpemVfdCBhZGRzaXplOworICAgIFB5X3NzaXplX3QgbjsKKyAgICBjaGFyICpkYXRhOworCisgICAgYXNzZXJ0KGJhc2UtPm5kaW0gPiAwKTsKKyAgICBhc3NlcnQoYmFzZS0+c3Vib2Zmc2V0cyA9PSBOVUxMKTsKKworICAgIC8qIEFsbG9jYXRlIG5ldyBkYXRhIHdpdGggYWRkaXRpb25hbCBzcGFjZSBmb3Igc2hhcGVbMF0gcG9pbnRlcnMuICovCisgICAgYWRkc2l6ZSA9IGJhc2UtPnNoYXBlWzBdICogKHNpemVvZiAoY2hhciAqKSk7CisKKyAgICAvKiBBbGlnbiBhcnJheSBzdGFydCB0byBhIG11bHRpcGxlIG9mIDguICovCisgICAgYWRkc2l6ZSA9IDggKiAoKGFkZHNpemUgKyA3KSAvIDgpOworCisgICAgZGF0YSA9IFB5TWVtX01hbGxvYyhuZGJ1Zi0+bGVuICsgYWRkc2l6ZSk7CisgICAgaWYgKGRhdGEgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtY3B5KGRhdGEgKyBhZGRzaXplLCBuZGJ1Zi0+ZGF0YSwgbmRidWYtPmxlbik7CisKKyAgICBQeU1lbV9GcmVlKG5kYnVmLT5kYXRhKTsKKyAgICBuZGJ1Zi0+ZGF0YSA9IGRhdGE7CisgICAgbmRidWYtPmxlbiArPSBhZGRzaXplOworICAgIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhOworCisgICAgLyogaW1pbjogbWluaW11bSBpbmRleCBvZiB0aGUgaW5wdXQgYXJyYXkgcmVsYXRpdmUgdG8gbmRidWYtPm9mZnNldC4KKyAgICAgICBzdWJvZmZzZXQwOiBvZmZzZXQgZm9yIGVhY2ggc3ViLWFycmF5IG9mIHRoZSBvdXRwdXQuIFRoaXMgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgc2FtZSBhcyBjYWxjdWxhdGluZyAtaW1pbicgZm9yIGEgc3ViLWFycmF5IG9mIG5kaW0tMS4gKi8KKyAgICBpbWluID0gc3Vib2Zmc2V0MCA9IDA7CisgICAgZm9yIChuID0gMDsgbiA8IGJhc2UtPm5kaW07IG4rKykgeworICAgICAgICBpZiAoYmFzZS0+c2hhcGVbbl0gPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoYmFzZS0+c3RyaWRlc1tuXSA8PSAwKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHggPSAoYmFzZS0+c2hhcGVbbl0tMSkgKiBiYXNlLT5zdHJpZGVzW25dOworICAgICAgICAgICAgaW1pbiArPSB4OworICAgICAgICAgICAgc3Vib2Zmc2V0MCArPSAobiA+PSAxKSA/IC14IDogMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgdGhlIGFycmF5IG9mIHBvaW50ZXJzIHRvIHRoZSBzdWItYXJyYXlzLiAqLworICAgIHN0YXJ0ID0gYWRkc2l6ZSArIG5kYnVmLT5vZmZzZXQgKyBpbWluOworICAgIHN0ZXAgPSBiYXNlLT5zdHJpZGVzWzBdIDwgMCA/IC1iYXNlLT5zdHJpZGVzWzBdIDogYmFzZS0+c3RyaWRlc1swXTsKKworICAgIGZvciAobiA9IDA7IG4gPCBiYXNlLT5zaGFwZVswXTsgbisrKQorICAgICAgICAoKGNoYXIgKiopYmFzZS0+YnVmKVtuXSA9IChjaGFyICopYmFzZS0+YnVmICsgc3RhcnQgKyBuKnN0ZXA7CisKKyAgICAvKiBJbml0aWFsaXplIHN1Ym9mZnNldHMuICovCisgICAgYmFzZS0+c3Vib2Zmc2V0cyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqYmFzZS0+c3Vib2Zmc2V0cykpOworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBiYXNlLT5zdWJvZmZzZXRzWzBdID0gc3Vib2Zmc2V0MDsKKyAgICBmb3IgKG4gPSAxOyBuIDwgYmFzZS0+bmRpbTsgbisrKQorICAgICAgICBiYXNlLT5zdWJvZmZzZXRzW25dID0gLTE7CisKKyAgICAvKiBBZGp1c3Qgc3RyaWRlcyBmb3IgdGhlIGZpcnN0ICh6ZXJvdGgpIGRpbWVuc2lvbi4gKi8KKyAgICBpZiAoYmFzZS0+c3RyaWRlc1swXSA+PSAwKSB7CisgICAgICAgIGJhc2UtPnN0cmlkZXNbMF0gPSBzaXplb2YoY2hhciAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFN0cmlkaW5nIGJhY2t3YXJkcy4gKi8KKyAgICAgICAgYmFzZS0+c3RyaWRlc1swXSA9IC0oUHlfc3NpemVfdClzaXplb2YoY2hhciAqKTsKKyAgICAgICAgaWYgKGJhc2UtPnNoYXBlWzBdID4gMCkKKyAgICAgICAgICAgIGJhc2UtPmJ1ZiA9IChjaGFyICopYmFzZS0+YnVmICsgKGJhc2UtPnNoYXBlWzBdLTEpICogc2l6ZW9mKGNoYXIgKik7CisgICAgfQorCisgICAgbmRidWYtPmZsYWdzICY9IH4oTkRfQ3xORF9GT1JUUkFOKTsKKyAgICBuZGJ1Zi0+b2Zmc2V0ID0gMDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2luaXRfbGVuKFB5X2J1ZmZlciAqYmFzZSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBiYXNlLT5sZW4gPSAxOworICAgIGZvciAoaSA9IDA7IGkgPCBiYXNlLT5uZGltOyBpKyspCisgICAgICAgIGJhc2UtPmxlbiAqPSBiYXNlLT5zaGFwZVtpXTsKKyAgICBiYXNlLT5sZW4gKj0gYmFzZS0+aXRlbXNpemU7Cit9CisKK3N0YXRpYyBpbnQKK2luaXRfc3RydWN0dXJlKG5kYnVmX3QgKm5kYnVmLCBQeU9iamVjdCAqc2hhcGUsIFB5T2JqZWN0ICpzdHJpZGVzLAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZGltKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKworICAgIGJhc2UtPm5kaW0gPSAoaW50KW5kaW07CisgICAgaWYgKG5kaW0gPT0gMCkgeworICAgICAgICBpZiAobmRidWYtPmZsYWdzICYgTkRfUElMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJuZGltID0gMCBjYW5ub3QgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIE5EX1BJTCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG5kYnVmLT5mbGFncyB8PSAoTkRfU0NBTEFSfE5EX0N8TkRfRk9SVFJBTik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHNoYXBlICovCisgICAgYmFzZS0+c2hhcGUgPSBzZXFfYXNfc3NpemVfYXJyYXkoc2hhcGUsIG5kaW0sIDEpOworICAgIGlmIChiYXNlLT5zaGFwZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBzdHJpZGVzICovCisgICAgaWYgKHN0cmlkZXMpIHsKKyAgICAgICAgYmFzZS0+c3RyaWRlcyA9IHNlcV9hc19zc2l6ZV9hcnJheShzdHJpZGVzLCBuZGltLCAwKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGJhc2UtPnN0cmlkZXMgPSBzdHJpZGVzX2Zyb21fc2hhcGUobmRidWYsIG5kYnVmLT5mbGFncyk7CisgICAgfQorICAgIGlmIChiYXNlLT5zdHJpZGVzID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodmVyaWZ5X3N0cnVjdHVyZShiYXNlLT5sZW4sIGJhc2UtPml0ZW1zaXplLCBuZGJ1Zi0+b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnNoYXBlLCBiYXNlLT5zdHJpZGVzLCBuZGltKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIGJ1ZiAqLworICAgIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhICsgbmRidWYtPm9mZnNldDsKKworICAgIC8qIGxlbiAqLworICAgIGluaXRfbGVuKGJhc2UpOworCisgICAgLyogbmRidWYtPmZsYWdzICovCisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyhiYXNlLCAnQycpKQorICAgICAgICBuZGJ1Zi0+ZmxhZ3MgfD0gTkRfQzsKKyAgICBpZiAoUHlCdWZmZXJfSXNDb250aWd1b3VzKGJhc2UsICdGJykpCisgICAgICAgIG5kYnVmLT5mbGFncyB8PSBORF9GT1JUUkFOOworCisKKyAgICAvKiBjb252ZXJ0IG51bXB5IGFycmF5IHRvIHN1Ym9mZnNldCByZXByZXNlbnRhdGlvbiAqLworICAgIGlmIChuZGJ1Zi0+ZmxhZ3MgJiBORF9QSUwpIHsKKyAgICAgICAgLyogbW9kaWZpZXMgYmFzZS0+YnVmLCBiYXNlLT5zdHJpZGVzIGFuZCBiYXNlLT5zdWJvZmZzZXRzICoqLworICAgICAgICByZXR1cm4gaW5pdF9zdWJvZmZzZXRzKG5kYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIG5kYnVmX3QgKgoraW5pdF9uZGJ1ZihQeU9iamVjdCAqaXRlbXMsIFB5T2JqZWN0ICpzaGFwZSwgUHlPYmplY3QgKnN0cmlkZXMsCisgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0LCBQeU9iamVjdCAqZm9ybWF0LCBpbnQgZmxhZ3MpCit7CisgICAgbmRidWZfdCAqbmRidWY7CisgICAgUHlfc3NpemVfdCBuZGltOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOworICAgIFB5X3NzaXplX3QgaXRlbXNpemU7CisKKyAgICAvKiBuZGltID0gbGVuKHNoYXBlKSAqLworICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc2hhcGUpCisgICAgbmRpbSA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzaGFwZSk7CisgICAgaWYgKG5kaW0gPiBORF9NQVhfTkRJTSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJuZGltIG11c3Qgbm90IGV4Y2VlZCAlZCIsIE5EX01BWF9ORElNKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogbGVuKHN0cmlkZXMpID0gbGVuKHNoYXBlKSAqLworICAgIGlmIChzdHJpZGVzKSB7CisgICAgICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc3RyaWRlcykKKyAgICAgICAgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzdHJpZGVzKSA9PSAwKQorICAgICAgICAgICAgc3RyaWRlcyA9IE5VTEw7CisgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTkRfRk9SVFJBTikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiTkRfRk9SVFJBTiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciB3aXRoIHN0cmlkZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShzdHJpZGVzKSAhPSBuZGltKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibGVuKHNoYXBlKSAhPSBsZW4oc3RyaWRlcykiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogaXRlbXNpemUgKi8KKyAgICBpdGVtc2l6ZSA9IGdldF9pdGVtc2l6ZShmb3JtYXQpOworICAgIGlmIChpdGVtc2l6ZSA8PSAwKSB7CisgICAgICAgIGlmIChpdGVtc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiaXRlbXNpemUgbXVzdCBub3QgYmUgemVybyIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGNvbnZlcnQgc2NhbGFyIHRvIGxpc3QgKi8KKyAgICBpZiAobmRpbSA9PSAwKSB7CisgICAgICAgIGl0ZW1zID0gUHlfQnVpbGRWYWx1ZSgiKE8pIiwgaXRlbXMpOworICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgQ0hFQ0tfTElTVF9PUl9UVVBMRShpdGVtcykKKyAgICAgICAgUHlfSU5DUkVGKGl0ZW1zKTsKKyAgICB9CisKKyAgICAvKiBudW1iZXIgb2YgaXRlbXMgKi8KKyAgICBuaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoaXRlbXMpOworICAgIGlmIChuaXRlbXMgPT0gMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbml0aWFsaXplciBsaXN0IG9yIHR1cGxlIG11c3Qgbm90IGJlIGVtcHR5Iik7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG5kYnVmID0gbmRidWZfbmV3KG5pdGVtcywgaXRlbXNpemUsIG9mZnNldCwgZmxhZ3MpOworICAgIGlmIChuZGJ1ZiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworCisgICAgaWYgKGluaXRfc2ltcGxlKG5kYnVmLCBpdGVtcywgZm9ybWF0LCBpdGVtc2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChpbml0X3N0cnVjdHVyZShuZGJ1Ziwgc2hhcGUsIHN0cmlkZXMsIG5kaW0pIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIFB5X0RFQ1JFRihpdGVtcyk7CisgICAgcmV0dXJuIG5kYnVmOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoaXRlbXMpOworICAgIG5kYnVmX2ZyZWUobmRidWYpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBpbml0aWFsaXplIGFuZCBwdXNoIGEgbmV3IGJhc2Ugb250byB0aGUgbGlua2VkIGxpc3QgKi8KK3N0YXRpYyBpbnQKK25kYXJyYXlfcHVzaF9iYXNlKE5EQXJyYXlPYmplY3QgKm5kLCBQeU9iamVjdCAqaXRlbXMsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2hhcGUsIFB5T2JqZWN0ICpzdHJpZGVzLAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQsIFB5T2JqZWN0ICpmb3JtYXQsIGludCBmbGFncykKK3sKKyAgICBuZGJ1Zl90ICpuZGJ1ZjsKKworICAgIG5kYnVmID0gaW5pdF9uZGJ1ZihpdGVtcywgc2hhcGUsIHN0cmlkZXMsIG9mZnNldCwgZm9ybWF0LCBmbGFncyk7CisgICAgaWYgKG5kYnVmID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG5kYnVmX3B1c2gobmQsIG5kYnVmKTsKKyAgICByZXR1cm4gMDsKK30KKworI2RlZmluZSBQeUJVRl9VTlVTRUQgMHgxMDAwMAorc3RhdGljIGludAorbmRhcnJheV9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgICAib2JqIiwgInNoYXBlIiwgInN0cmlkZXMiLCAib2Zmc2V0IiwgImZvcm1hdCIsICJmbGFncyIsICJnZXRidWYiLCBOVUxMCisgICAgfTsKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7ICAvKiBpbml0aWFsaXplcjogc2NhbGFyLCBsaXN0LCB0dXBsZSBvciBiYXNlIG9iamVjdCAqLworICAgIFB5T2JqZWN0ICpzaGFwZSA9IE5VTEw7ICAgLyogc2l6ZSBvZiBlYWNoIGRpbWVuc2lvbiAqLworICAgIFB5T2JqZWN0ICpzdHJpZGVzID0gTlVMTDsgLyogbnVtYmVyIG9mIGJ5dGVzIHRvIHRoZSBuZXh0IGVsdCBpbiBlYWNoIGRpbSAqLworICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBidWZmZXIgb2Zmc2V0ICovCisgICAgUHlPYmplY3QgKmZvcm1hdCA9IHNpbXBsZV9mb3JtYXQ7IC8qIHN0cnVjdCBtb2R1bGUgc3BlY2lmaWVyOiAiQiIgKi8KKyAgICBpbnQgZmxhZ3MgPSBORF9ERUZBVUxUOyAgICAgICAgICAgLyogYmFzZSBidWZmZXIgYW5kIG5kYXJyYXkgZmxhZ3MgKi8KKworICAgIGludCBnZXRidWYgPSBQeUJVRl9VTlVTRUQ7IC8qIHJlLWV4cG9ydGVyOiBnZXRidWZmZXIgcmVxdWVzdCBmbGFncyAqLworCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPT25PaWkiLCBrd2xpc3QsCisgICAgICAgICAgICAmdiwgJnNoYXBlLCAmc3RyaWRlcywgJm9mZnNldCwgJmZvcm1hdCwgJmZsYWdzLCAmZ2V0YnVmKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogTkRBcnJheU9iamVjdCBpcyByZS1leHBvcnRlciAqLworICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih2KSAmJiBzaGFwZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChzdHJpZGVzIHx8IG9mZnNldCB8fCBmb3JtYXQgIT0gc2ltcGxlX2Zvcm1hdCB8fAorICAgICAgICAgICAgIShmbGFncyA9PSBORF9ERUZBVUxUIHx8IGZsYWdzID09IE5EX1JFRElSRUNUKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJjb25zdHJ1Y3Rpb24gZnJvbSBleHBvcnRlciBvYmplY3Qgb25seSB0YWtlcyAnb2JqJywgJ2dldGJ1ZicgIgorICAgICAgICAgICAgICAgImFuZCAnZmxhZ3MnIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgZ2V0YnVmID0gKGdldGJ1ZiA9PSBQeUJVRl9VTlVTRUQpID8gUHlCVUZfRlVMTF9STyA6IGdldGJ1ZjsKKworICAgICAgICBpZiAobmRhcnJheV9pbml0X3N0YXRpY2J1Zih2LCBuZCwgZ2V0YnVmKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaW5pdF9mbGFncyhuZC0+aGVhZCk7CisgICAgICAgIG5kLT5oZWFkLT5mbGFncyB8PSBmbGFnczsKKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBOREFycmF5T2JqZWN0IGlzIHRoZSBvcmlnaW5hbCBiYXNlIG9iamVjdC4gKi8KKyAgICBpZiAoZ2V0YnVmICE9IFB5QlVGX1VOVVNFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImdldGJ1ZiBhcmd1bWVudCBvbmx5IHZhbGlkIGZvciBjb25zdHJ1Y3Rpb24gZnJvbSBleHBvcnRlciAiCisgICAgICAgICAgICAib2JqZWN0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHNoYXBlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJzaGFwZSBpcyBhIHJlcXVpcmVkIGFyZ3VtZW50IHdoZW4gY29uc3RydWN0aW5nIGZyb20gIgorICAgICAgICAgICAgImxpc3QsIHR1cGxlIG9yIHNjYWxhciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGZsYWdzICYgTkRfVkFSRVhQT1JUKSB7CisgICAgICAgIG5kLT5mbGFncyB8PSBORF9WQVJFWFBPUlQ7CisgICAgICAgIGZsYWdzICY9IH5ORF9WQVJFWFBPUlQ7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSBhbmQgcHVzaCB0aGUgZmlyc3QgYmFzZSBidWZmZXIgb250byB0aGUgbGlua2VkIGxpc3QuICovCisgICAgcmV0dXJuIG5kYXJyYXlfcHVzaF9iYXNlKG5kLCB2LCBzaGFwZSwgc3RyaWRlcywgb2Zmc2V0LCBmb3JtYXQsIGZsYWdzKTsKK30KKworLyogUHVzaCBhbiBhZGRpdGlvbmFsIGJhc2Ugb250byB0aGUgbGlua2VkIGxpc3QuICovCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9wdXNoKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geworICAgICAgICAiaXRlbXMiLCAic2hhcGUiLCAic3RyaWRlcyIsICJvZmZzZXQiLCAiZm9ybWF0IiwgImZsYWdzIiwgTlVMTAorICAgIH07CisgICAgUHlPYmplY3QgKml0ZW1zID0gTlVMTDsgICAvKiBpbml0aWFsaXplcjogc2NhbGFyLCBsaXN0IG9yIHR1cGxlICovCisgICAgUHlPYmplY3QgKnNoYXBlID0gTlVMTDsgICAvKiBzaXplIG9mIGVhY2ggZGltZW5zaW9uICovCisgICAgUHlPYmplY3QgKnN0cmlkZXMgPSBOVUxMOyAvKiBudW1iZXIgb2YgYnl0ZXMgdG8gdGhlIG5leHQgZWx0IGluIGVhY2ggZGltICovCisgICAgUHlPYmplY3QgKmZvcm1hdCA9IHNpbXBsZV9mb3JtYXQ7ICAvKiBzdHJ1Y3QgbW9kdWxlIHNwZWNpZmllcjogIkIiICovCisgICAgUHlfc3NpemVfdCBvZmZzZXQgPSAwOyAgICAgICAgICAgICAvKiBidWZmZXIgb2Zmc2V0ICovCisgICAgaW50IGZsYWdzID0gTkRfREVGQVVMVDsgICAgICAgICAgICAvKiBiYXNlIGJ1ZmZlciBmbGFncyAqLworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PfE9uT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAmaXRlbXMsICZzaGFwZSwgJnN0cmlkZXMsICZvZmZzZXQsICZmb3JtYXQsICZmbGFncykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZsYWdzICYgTkRfVkFSRVhQT1JUKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgIk5EX1ZBUkVYUE9SVCBmbGFnIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIG9iamVjdCBjcmVhdGlvbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKE5EX0lTX0NPTlNVTUVSKG5kKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAic3RydWN0dXJlIG9mIHJlLWV4cG9ydGluZyBvYmplY3QgaXMgaW1tdXRhYmxlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIShuZC0+ZmxhZ3MmTkRfVkFSRVhQT1JUKSAmJiBuZC0+aGVhZC0+ZXhwb3J0cyA+IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBjaGFuZ2Ugc3RydWN0dXJlOiAlemQgZXhwb3J0ZWQgYnVmZmVyJXMiLAorICAgICAgICAgICAgbmQtPmhlYWQtPmV4cG9ydHMsIG5kLT5oZWFkLT5leHBvcnRzPT0xID8gIiIgOiAicyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAobmRhcnJheV9wdXNoX2Jhc2UobmQsIGl0ZW1zLCBzaGFwZSwgc3RyaWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBmb3JtYXQsIGZsYWdzKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKiBQb3AgYSBiYXNlIGZyb20gdGhlIGxpbmtlZCBsaXN0IChpZiBwb3NzaWJsZSkuICovCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9wb3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBpZiAoTkRfSVNfQ09OU1VNRVIobmQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJzdHJ1Y3R1cmUgb2YgcmUtZXhwb3J0aW5nIG9iamVjdCBpcyBpbW11dGFibGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChuZC0+aGVhZC0+ZXhwb3J0cyA+IDApIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImNhbm5vdCBjaGFuZ2Ugc3RydWN0dXJlOiAlemQgZXhwb3J0ZWQgYnVmZmVyJXMiLAorICAgICAgICAgICAgbmQtPmhlYWQtPmV4cG9ydHMsIG5kLT5oZWFkLT5leHBvcnRzPT0xID8gIiIgOiAicyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG5kLT5oZWFkLT5uZXh0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgImxpc3Qgb25seSBoYXMgYSBzaW5nbGUgYmFzZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBuZGJ1Zl9wb3AobmQpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK25kYXJyYXlfZ2V0YnVmKE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqdmlldywgaW50IGZsYWdzKQoreworICAgIG5kYnVmX3QgKm5kYnVmID0gc2VsZi0+aGVhZDsKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgaW50IGJhc2VmbGFncyA9IG5kYnVmLT5mbGFnczsKKworICAgIC8qIHJlZGlyZWN0IG1vZGUgKi8KKyAgICBpZiAoYmFzZS0+b2JqICE9IE5VTEwgJiYgKGJhc2VmbGFncyZORF9SRURJUkVDVCkpIHsKKyAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0dldEJ1ZmZlcihiYXNlLT5vYmosIHZpZXcsIGZsYWdzKTsKKyAgICB9CisKKyAgICAvKiBzdGFydCB3aXRoIGNvbXBsZXRlIGluZm9ybWF0aW9uICovCisgICAgKnZpZXcgPSAqYmFzZTsKKyAgICB2aWV3LT5vYmogPSBOVUxMOworCisgICAgLyogcmVjb25zdHJ1Y3QgZm9ybWF0ICovCisgICAgaWYgKHZpZXctPmZvcm1hdCA9PSBOVUxMKQorICAgICAgICB2aWV3LT5mb3JtYXQgPSAiQiI7CisKKyAgICBpZiAoYmFzZS0+bmRpbSAhPSAwICYmCisgICAgICAgICgoUkVRX1NIQVBFKGZsYWdzKSAmJiBiYXNlLT5zaGFwZSA9PSBOVUxMKSB8fAorICAgICAgICAgKFJFUV9TVFJJREVTKGZsYWdzKSAmJiBiYXNlLT5zdHJpZGVzID09IE5VTEwpKSkgeworICAgICAgICAvKiBUaGUgbmRhcnJheSBpcyBhIHJlLWV4cG9ydGVyIHRoYXQgaGFzIGJlZW4gY3JlYXRlZCB3aXRob3V0IGZ1bGwKKyAgICAgICAgICAgaW5mb3JtYXRpb24gZm9yIHRlc3RpbmcgcHVycG9zZXMuIEluIHRoaXMgcGFydGljdWxhciBjYXNlIHRoZQorICAgICAgICAgICBuZGFycmF5IGlzIG5vdCBhIFBFUC0zMTE4IGNvbXBsaWFudCBidWZmZXIgcHJvdmlkZXIuICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJyZS1leHBvcnRlciBkb2VzIG5vdCBwcm92aWRlIGZvcm1hdCwgc2hhcGUgb3Igc3RyaWRlcyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGJhc2VmbGFncyAmIE5EX0dFVEJVRl9GQUlMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJORF9HRVRCVUZfRkFJTDogZm9yY2VkIHRlc3QgZXhjZXB0aW9uIik7CisgICAgICAgIGlmIChiYXNlZmxhZ3MgJiBORF9HRVRCVUZfVU5ERUZJTkVEKQorICAgICAgICAgICAgdmlldy0+b2JqID0gKFB5T2JqZWN0ICopMHgxOyAvKiB3cm9uZyBidXQgcGVybWl0dGVkIGluIDw9IDMuMiAqLworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFJFUV9XUklUQUJMRShmbGFncykgJiYgYmFzZS0+cmVhZG9ubHkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IHdyaXRhYmxlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKCFSRVFfRk9STUFUKGZsYWdzKSkgeworICAgICAgICAvKiBOVUxMIGluZGljYXRlcyB0aGF0IHRoZSBidWZmZXIncyBkYXRhIHR5cGUgaGFzIGJlZW4gY2FzdCB0byAnQicuCisgICAgICAgICAgIHZpZXctPml0ZW1zaXplIGlzIHRoZSBfcHJldmlvdXNfIGl0ZW1zaXplLiBJZiBzaGFwZSBpcyBwcmVzZW50LAorICAgICAgICAgICB0aGUgZXF1YWxpdHkgcHJvZHVjdChzaGFwZSkgKiBpdGVtc2l6ZSA9IGxlbiBzdGlsbCBob2xkcyBhdCB0aGlzCisgICAgICAgICAgIHBvaW50LiBUaGUgZXF1YWxpdHkgY2FsY3NpemUoZm9ybWF0KSA9IGl0ZW1zaXplIGRvZXMgX25vdF8gaG9sZAorICAgICAgICAgICBmcm9tIGhlcmUgb24hICovCisgICAgICAgIHZpZXctPmZvcm1hdCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKFJFUV9DX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFORF9DX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3QgQy1jb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFJFUV9GX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFORF9GT1JUUkFOX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBpcyBub3QgRm9ydHJhbiBjb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFJFUV9BTllfQ09OVElHVU9VUyhmbGFncykgJiYgIU5EX0FOWV9DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgaXMgbm90IGNvbnRpZ3VvdXMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9JTkRJUkVDVChmbGFncykgJiYgKGJhc2VmbGFncyAmIE5EX1BJTCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgIm5kYXJyYXkgY2Fubm90IGJlIHJlcHJlc2VudGVkIHdpdGhvdXQgc3Vib2Zmc2V0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX1NUUklERVMoZmxhZ3MpKSB7CisgICAgICAgIGlmICghTkRfQ19DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAibmRhcnJheSBpcyBub3QgQy1jb250aWd1b3VzIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgdmlldy0+c3RyaWRlcyA9IE5VTEw7CisgICAgfQorICAgIGlmICghUkVRX1NIQVBFKGZsYWdzKSkgeworICAgICAgICAvKiBQeUJVRl9TSU1QTEUgb3IgUHlCVUZfV1JJVEFCTEU6IGF0IHRoaXMgcG9pbnQgYnVmIGlzIEMtY29udGlndW91cywKKyAgICAgICAgICAgc28gYmFzZS0+YnVmID0gbmRidWYtPmRhdGEuICovCisgICAgICAgIGlmICh2aWV3LT5mb3JtYXQgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogUHlCVUZfU0lNUExFfFB5QlVGX0ZPUk1BVCBhbmQgUHlCVUZfV1JJVEFCTEV8UHlCVUZfRk9STUFUIGRvCisgICAgICAgICAgICAgICBub3QgbWFrZSBzZW5zZS4gKi8KKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAibmRhcnJheTogY2Fubm90IGNhc3QgdG8gdW5zaWduZWQgYnl0ZXMgaWYgdGhlIGZvcm1hdCBmbGFnICIKKyAgICAgICAgICAgICAgICAiaXMgcHJlc2VudCIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIC8qIHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgPSBsZW4gYW5kIGNhbGNzaXplKGZvcm1hdCkgPSBpdGVtc2l6ZQorICAgICAgICAgICBkbyBfbm90XyBob2xkIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+bmRpbSA9IDE7CisgICAgICAgIHZpZXctPnNoYXBlID0gTlVMTDsKKyAgICB9CisKKyAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKilzZWxmOworICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIHNlbGYtPmhlYWQtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CituZGFycmF5X3JlbGVhc2VidWYoTkRBcnJheU9iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3KQoreworICAgIGlmICghTkRfSVNfQ09OU1VNRVIoc2VsZikpIHsKKyAgICAgICAgbmRidWZfdCAqbmRidWYgPSB2aWV3LT5pbnRlcm5hbDsKKyAgICAgICAgaWYgKC0tbmRidWYtPmV4cG9ydHMgPT0gMCAmJiBuZGJ1ZiAhPSBzZWxmLT5oZWFkKQorICAgICAgICAgICAgbmRidWZfZGVsZXRlKHNlbGYsIG5kYnVmKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5QnVmZmVyUHJvY3MgbmRhcnJheV9hc19idWZmZXIgPSB7CisgICAgKGdldGJ1ZmZlcnByb2MpbmRhcnJheV9nZXRidWYsICAgICAgICAvKiBiZl9nZXRidWZmZXIgKi8KKyAgICAocmVsZWFzZWJ1ZmZlcnByb2MpbmRhcnJheV9yZWxlYXNlYnVmIC8qIGJmX3JlbGVhc2VidWZmZXIgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleGluZy9zbGljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgY2hhciAqCitwdHJfZnJvbV9pbmRleChQeV9idWZmZXIgKmJhc2UsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgY2hhciAqcHRyOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uICovCisKKyAgICBpZiAoYmFzZS0+c2hhcGUpCisgICAgICAgIG5pdGVtcyA9IGJhc2UtPnNoYXBlWzBdOworICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoYmFzZS0+bmRpbSA9PSAxICYmIFNJTVBMRV9GT1JNQVQoYmFzZS0+Zm9ybWF0KSk7CisgICAgICAgIG5pdGVtcyA9IGJhc2UtPmxlbjsKKyAgICB9CisKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIGluZGV4ICs9IG5pdGVtczsKKyAgICB9CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBuaXRlbXMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJpbmRleCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHB0ciA9IChjaGFyICopYmFzZS0+YnVmOworCisgICAgaWYgKGJhc2UtPnN0cmlkZXMgPT0gTlVMTCkKKyAgICAgICAgIHB0ciArPSBiYXNlLT5pdGVtc2l6ZSAqIGluZGV4OworICAgIGVsc2UKKyAgICAgICAgIHB0ciArPSBiYXNlLT5zdHJpZGVzWzBdICogaW5kZXg7CisKKyAgICBwdHIgPSBBREpVU1RfUFRSKHB0ciwgYmFzZS0+c3Vib2Zmc2V0cyk7CisKKyAgICByZXR1cm4gcHRyOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9pdGVtKE5EQXJyYXlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgbmRidWZfdCAqbmRidWYgPSBzZWxmLT5oZWFkOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBjaGFyICpwdHI7CisKKyAgICBpZiAoYmFzZS0+bmRpbSA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIHNjYWxhciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBwdHIgPSBwdHJfZnJvbV9pbmRleChiYXNlLCBpbmRleCk7CisgICAgaWYgKHB0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChiYXNlLT5uZGltID09IDEpIHsKKyAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUocHRyLCBiYXNlLT5mb3JtYXQsIGJhc2UtPml0ZW1zaXplKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIE5EQXJyYXlPYmplY3QgKm5kOworICAgICAgICBQeV9idWZmZXIgKnN1YnZpZXc7CisKKyAgICAgICAgbmQgPSAoTkRBcnJheU9iamVjdCAqKW5kYXJyYXlfbmV3KCZOREFycmF5X1R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBpZiAobmQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmIChuZGFycmF5X2luaXRfc3RhdGljYnVmKChQeU9iamVjdCAqKXNlbGYsIG5kLCBQeUJVRl9GVUxMX1JPKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHN1YnZpZXcgPSAmbmQtPnN0YXRpY2J1Zi5iYXNlOworCisgICAgICAgIHN1YnZpZXctPmJ1ZiA9IHB0cjsKKyAgICAgICAgc3Vidmlldy0+bGVuIC89IHN1YnZpZXctPnNoYXBlWzBdOworCisgICAgICAgIHN1YnZpZXctPm5kaW0tLTsKKyAgICAgICAgc3Vidmlldy0+c2hhcGUrKzsKKyAgICAgICAgaWYgKHN1YnZpZXctPnN0cmlkZXMpIHN1YnZpZXctPnN0cmlkZXMrKzsKKyAgICAgICAgaWYgKHN1YnZpZXctPnN1Ym9mZnNldHMpIHN1YnZpZXctPnN1Ym9mZnNldHMrKzsKKworICAgICAgICBpbml0X2ZsYWdzKCZuZC0+c3RhdGljYnVmKTsKKworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopbmQ7CisgICAgfQorfQorCisvKgorICBGb3IgZWFjaCBkaW1lbnNpb24sIHdlIGdldCB2YWxpZCAoc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoKSBxdWFkcnVwbGVzCisgIGZyb20gUHlTbGljZV9HZXRJbmRpY2VzRXgoKS4KKworICBTbGljaW5nIE51bVB5IGFycmF5cworICA9PT09PT09PT09PT09PT09PT09PQorCisgICAgQSBwb2ludGVyIHRvIGFuIGVsZW1lbnQgaW4gYSBOdW1QeSBhcnJheSBpcyBkZWZpbmVkIGJ5OgorCisgICAgICBwdHIgPSAoY2hhciAqKWJ1ZiArIGluZGljZXNbMF0gKiBzdHJpZGVzWzBdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tuZGltLTFdICogc3RyaWRlc1tuZGltLTFdCisKKyAgICBBZGp1c3QgYnVmOgorICAgIC0tLS0tLS0tLS0tCisgICAgICBBZGRpbmcgc3RhcnRbbl0gZm9yIGVhY2ggZGltZW5zaW9uIGVmZmVjdGl2ZWx5IGFkZHMgdGhlIGNvbnN0YW50OgorCisgICAgICAgIGMgPSBzdGFydFswXSAqIHN0cmlkZXNbMF0gKyAuLi4gKyBzdGFydFtuZGltLTFdICogc3RyaWRlc1tuZGltLTFdCisKKyAgICAgIFRoZXJlZm9yZSBpbml0X3NsaWNlKCkgYWRkcyBhbGwgc3RhcnRbbl0gZGlyZWN0bHkgdG8gYnVmLgorCisgICAgQWRqdXN0IHNoYXBlOgorICAgIC0tLS0tLS0tLS0tLS0KKyAgICAgIE9idmlvdXNseSBzaGFwZVtuXSA9IHNsaWNlbGVuZ3RoW25dCisKKyAgICBBZGp1c3Qgc3RyaWRlczoKKyAgICAtLS0tLS0tLS0tLS0tLS0KKyAgICAgIEluIHRoZSBvcmlnaW5hbCBhcnJheSwgdGhlIG5leHQgZWxlbWVudCBpbiBhIGRpbWVuc2lvbiBpcyByZWFjaGVkCisgICAgICBieSBhZGRpbmcgc3RyaWRlc1tuXSB0byB0aGUgcG9pbnRlci4gSW4gdGhlIHNsaWNlZCBhcnJheSwgZWxlbWVudHMKKyAgICAgIG1heSBiZSBza2lwcGVkLCBzbyB0aGUgbmV4dCBlbGVtZW50IGlzIHJlYWNoZWQgYnkgYWRkaW5nOgorCisgICAgICAgIHN0cmlkZXNbbl0gKiBzdGVwW25dCisKKyAgU2xpY2luZyBQSUwgYXJyYXlzCisgID09PT09PT09PT09PT09PT09PQorCisgICAgTGF5b3V0OgorICAgIC0tLS0tLS0KKyAgICAgIEluIHRoZSBmaXJzdCAoemVyb3RoKSBkaW1lbnNpb24sIFBJTCBhcnJheXMgaGF2ZSBhbiBhcnJheSBvZiBwb2ludGVycworICAgICAgdG8gc3ViLWFycmF5cyBvZiBuZGltLTEuIFN0cmlkaW5nIGluIHRoZSBmaXJzdCBkaW1lbnNpb24gaXMgZG9uZSBieQorICAgICAgZ2V0dGluZyB0aGUgaW5kZXggb2YgdGhlIG50aCBwb2ludGVyLCBkZXJlZmVyZW5jZSBpdCBhbmQgdGhlbiBhZGQgYQorICAgICAgc3Vib2Zmc2V0IHRvIGl0LiBUaGUgYXJyYXlzIHBvaW50ZWQgdG8gY2FuIGJlc3QgYmUgc2VlbiBhIHJlZ3VsYXIKKyAgICAgIE51bVB5IGFycmF5cy4KKworICAgIEFkanVzdCBidWY6CisgICAgLS0tLS0tLS0tLS0KKyAgICAgIEluIHRoZSBvcmlnaW5hbCBhcnJheSwgYnVmIHBvaW50cyB0byBhIGxvY2F0aW9uICh1c3VhbGx5IHRoZSBzdGFydCkKKyAgICAgIGluIHRoZSBhcnJheSBvZiBwb2ludGVycy4gRm9yIHRoZSBzbGljZWQgYXJyYXksIHN0YXJ0WzBdIGNhbiBiZQorICAgICAgYWRkZWQgdG8gYnVmIGluIHRoZSBzYW1lIG1hbm5lciBhcyBmb3IgTnVtUHkgYXJyYXlzLgorCisgICAgQWRqdXN0IHN1Ym9mZnNldHM6CisgICAgLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICBEdWUgdG8gdGhlIGRlcmVmZXJlbmNpbmcgc3RlcCBpbiB0aGUgYWRkcmVzc2luZyBzY2hlbWUsIGl0IGlzIG5vdAorICAgICAgcG9zc2libGUgdG8gYWRqdXN0IGJ1ZiBmb3IgaGlnaGVyIGRpbWVuc2lvbnMuIFJlY2FsbCB0aGF0IHRoZQorICAgICAgc3ViLWFycmF5cyBwb2ludGVkIHRvIGFyZSByZWd1bGFyIE51bVB5IGFycmF5cywgc28gZm9yIGVhY2ggb2YKKyAgICAgIHRob3NlIGFycmF5cyBhZGRpbmcgc3RhcnRbbl0gZWZmZWN0aXZlbHkgYWRkcyB0aGUgY29uc3RhbnQ6CisKKyAgICAgICAgYyA9IHN0YXJ0WzFdICogc3RyaWRlc1sxXSArIC4uLiArIHN0YXJ0W25kaW0tMV0gKiBzdHJpZGVzW25kaW0tMV0KKworICAgICAgVGhpcyBjb25zdGFudCBpcyBhZGRlZCB0byBzdWJvZmZzZXRzWzBdLiBzdWJvZmZzZXRzWzBdIGluIHR1cm4gaXMKKyAgICAgIGFkZGVkIHRvIGVhY2ggcG9pbnRlciByaWdodCBhZnRlciBkZXJlZmVyZW5jaW5nLgorCisgICAgQWRqdXN0IHNoYXBlIGFuZCBzdHJpZGVzOgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIFNoYXBlIGFuZCBzdHJpZGVzIGFyZSBub3QgaW5mbHVlbmNlZCBieSB0aGUgZGVyZWZlcmVuY2luZyBzdGVwLCBzbworICAgICAgdGhleSBhcmUgYWRqdXN0ZWQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGZvciBOdW1QeSBhcnJheXMuCisKKyAgTXVsdGlwbGUgbGV2ZWxzIG9mIHN1Ym9mZnNldHMKKyAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAgRm9yIGEgY29uc3RydWN0IGxpa2UgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gYXJyYXkgb2YgcG9pbnRlcnMgdG8KKyAgICAgIHN1Yi1hcnJheXMgb2YgbmRpbS0yOgorCisgICAgICAgIHN1Ym9mZnNldHNbMF0gPSBzdGFydFsxXSAqIHN0cmlkZXNbMV0KKyAgICAgICAgc3Vib2Zmc2V0c1sxXSA9IHN0YXJ0WzJdICogc3RyaWRlc1syXSArIC4uLgorKi8KK3N0YXRpYyBpbnQKK2luaXRfc2xpY2UoUHlfYnVmZmVyICpiYXNlLCBQeU9iamVjdCAqa2V5LCBpbnQgZGltKQoreworICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOworCisgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgYmFzZS0+c2hhcGVbZGltXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKworICAgIGlmIChiYXNlLT5zdWJvZmZzZXRzID09IE5VTEwgfHwgZGltID09IDApIHsKKyAgICBhZGp1c3RfYnVmOgorICAgICAgICBiYXNlLT5idWYgPSAoY2hhciAqKWJhc2UtPmJ1ZiArIGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0YXJ0OworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfc3NpemVfdCBuID0gZGltLTE7CisgICAgICAgIHdoaWxlIChuID49IDAgJiYgYmFzZS0+c3Vib2Zmc2V0c1tuXSA8IDApCisgICAgICAgICAgICBuLS07CisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIGdvdG8gYWRqdXN0X2J1ZjsgLyogYWxsIHN1Ym9mZnNldHMgYXJlIG5lZ2F0aXZlICovCisgICAgICAgIGJhc2UtPnN1Ym9mZnNldHNbbl0gPSBiYXNlLT5zdWJvZmZzZXRzW25dICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGJhc2UtPnNoYXBlW2RpbV0gPSBzbGljZWxlbmd0aDsKKyAgICBiYXNlLT5zdHJpZGVzW2RpbV0gPSBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGVwOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NvcHlfc3RydWN0dXJlKFB5X2J1ZmZlciAqYmFzZSkKK3sKKyAgICBQeV9zc2l6ZV90ICpzaGFwZSA9IE5VTEwsICpzdHJpZGVzID0gTlVMTCwgKnN1Ym9mZnNldHMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIHNoYXBlID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpzaGFwZSkpOworICAgIHN0cmlkZXMgPSBQeU1lbV9NYWxsb2MoYmFzZS0+bmRpbSAqIChzaXplb2YgKnN0cmlkZXMpKTsKKyAgICBpZiAoc2hhcGUgPT0gTlVMTCB8fCBzdHJpZGVzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX25vbWVtOworCisgICAgc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMpIHsKKyAgICAgICAgc3Vib2Zmc2V0cyA9IFB5TWVtX01hbGxvYyhiYXNlLT5uZGltICogKHNpemVvZiAqc3Vib2Zmc2V0cykpOworICAgICAgICBpZiAoc3Vib2Zmc2V0cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJfbm9tZW07CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IGJhc2UtPm5kaW07IGkrKykgeworICAgICAgICBzaGFwZVtpXSA9IGJhc2UtPnNoYXBlW2ldOworICAgICAgICBzdHJpZGVzW2ldID0gYmFzZS0+c3RyaWRlc1tpXTsKKyAgICAgICAgaWYgKHN1Ym9mZnNldHMpCisgICAgICAgICAgICBzdWJvZmZzZXRzW2ldID0gYmFzZS0+c3Vib2Zmc2V0c1tpXTsKKyAgICB9CisKKyAgICBiYXNlLT5zaGFwZSA9IHNoYXBlOworICAgIGJhc2UtPnN0cmlkZXMgPSBzdHJpZGVzOworICAgIGJhc2UtPnN1Ym9mZnNldHMgPSBzdWJvZmZzZXRzOworCisgICAgcmV0dXJuIDA7CisKK2Vycl9ub21lbToKKyAgICBQeUVycl9Ob01lbW9yeSgpOworICAgIFB5TWVtX1hGcmVlKHNoYXBlKTsKKyAgICBQeU1lbV9YRnJlZShzdHJpZGVzKTsKKyAgICBQeU1lbV9YRnJlZShzdWJvZmZzZXRzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X3N1YnNjcmlwdChOREFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kOworICAgIG5kYnVmX3QgKm5kYnVmOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworCisgICAgaWYgKGJhc2UtPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShiYXNlLT5idWYsIGJhc2UtPmZvcm1hdCwgYmFzZS0+aXRlbXNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSBQeV9FbGxpcHNpcykgeworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBpbmRleGluZyBvZiBzY2FsYXIiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoa2V5KTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIG5kYXJyYXlfaXRlbShzZWxmLCBpbmRleCk7CisgICAgfQorCisgICAgbmQgPSAoTkRBcnJheU9iamVjdCAqKW5kYXJyYXlfbmV3KCZOREFycmF5X1R5cGUsIE5VTEwsIE5VTEwpOworICAgIGlmIChuZCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIG5ldyBuZGFycmF5IGlzIGEgY29uc3VtZXIgKi8KKyAgICBpZiAobmRhcnJheV9pbml0X3N0YXRpY2J1ZigoUHlPYmplY3QgKilzZWxmLCBuZCwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihuZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGNvcHkgc2hhcGUsIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgKi8KKyAgICBuZGJ1ZiA9IG5kLT5oZWFkOworICAgIGJhc2UgPSAmbmRidWYtPmJhc2U7CisgICAgaWYgKGNvcHlfc3RydWN0dXJlKGJhc2UpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYobmQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmRidWYtPmZsYWdzIHw9IE5EX09XTl9BUlJBWVM7CisKKyAgICBpZiAoUHlTbGljZV9DaGVjayhrZXkpKSB7CisgICAgICAgIC8qIG9uZS1kaW1lbnNpb25hbCBzbGljZSAqLworICAgICAgICBpZiAoaW5pdF9zbGljZShiYXNlLCBrZXksIDApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgIH0KKyAgICBlbHNlIGlmIFB5VHVwbGVfQ2hlY2soa2V5KSB7CisgICAgICAgIC8qIG11bHRpLWRpbWVuc2lvbmFsIHNsaWNlICovCisgICAgICAgIFB5T2JqZWN0ICp0dXBsZSA9IGtleTsKKyAgICAgICAgUHlfc3NpemVfdCBpLCBuOworCisgICAgICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKHR1cGxlKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAga2V5ID0gUHlUdXBsZV9HRVRfSVRFTSh0dXBsZSwgaSk7CisgICAgICAgICAgICBpZiAoIVB5U2xpY2VfQ2hlY2soa2V5KSkKKyAgICAgICAgICAgICAgICBnb3RvIHR5cGVfZXJyb3I7CisgICAgICAgICAgICBpZiAoaW5pdF9zbGljZShiYXNlLCBrZXksIChpbnQpaSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBnb3RvIHR5cGVfZXJyb3I7CisgICAgfQorCisgICAgaW5pdF9sZW4oYmFzZSk7CisgICAgaW5pdF9mbGFncyhuZGJ1Zik7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmQ7CisKKwordHlwZV9lcnJvcjoKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAiY2Fubm90IGluZGV4IG1lbW9yeSB1c2luZyBcIiUuMjAwc1wiIiwKKyAgICAgICAga2V5LT5vYl90eXBlLT50cF9uYW1lKTsKK2Vycl9vY2N1cnJlZDoKKyAgICBQeV9ERUNSRUYobmQpOworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBpbnQKK25kYXJyYXlfYXNzX3N1YnNjcmlwdChOREFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgTkRBcnJheU9iamVjdCAqbmQ7CisgICAgUHlfYnVmZmVyICpkZXN0ID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgUHlfYnVmZmVyIHNyYzsKKyAgICBjaGFyICpwdHI7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBpZiAoZGVzdC0+cmVhZG9ubHkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5kYXJyYXkgaXMgbm90IHdyaXRhYmxlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm5kYXJyYXkgZGF0YSBjYW5ub3QgYmUgZGVsZXRlZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChkZXN0LT5uZGltID09IDApIHsKKyAgICAgICAgaWYgKGtleSA9PSBQeV9FbGxpcHNpcyB8fAorICAgICAgICAgICAgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSkgPT0gMCkpIHsKKyAgICAgICAgICAgIHB0ciA9IChjaGFyICopZGVzdC0+YnVmOworICAgICAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGRlc3QtPmZvcm1hdCwgZGVzdC0+aXRlbXNpemUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImludmFsaWQgaW5kZXhpbmcgb2Ygc2NhbGFyIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRlc3QtPm5kaW0gPT0gMSAmJiBQeUluZGV4X0NoZWNrKGtleSkpIHsKKyAgICAgICAgLyogcnZhbHVlIG11c3QgYmUgYSBzaW5nbGUgaXRlbSAqLworICAgICAgICBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoa2V5KTsKKyAgICAgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgoZGVzdCwgaW5kZXgpOworICAgICAgICAgICAgaWYgKHB0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcGFja19zaW5nbGUocHRyLCB2YWx1ZSwgZGVzdC0+Zm9ybWF0LCBkZXN0LT5pdGVtc2l6ZSk7CisgICAgfQorCisgICAgLyogcnZhbHVlIG11c3QgYmUgYW4gZXhwb3J0ZXIgKi8KKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHZhbHVlLCAmc3JjLCBQeUJVRl9GVUxMX1JPKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbmQgPSAoTkRBcnJheU9iamVjdCAqKW5kYXJyYXlfc3Vic2NyaXB0KHNlbGYsIGtleSk7CisgICAgaWYgKG5kICE9IE5VTEwpIHsKKyAgICAgICAgZGVzdCA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICAgICAgcmV0ID0gY29weV9idWZmZXIoZGVzdCwgJnNyYyk7CisgICAgICAgIFB5X0RFQ1JFRihuZCk7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3JjKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc2xpY2VfaW5kaWNlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJldCwgKmtleSwgKnRtcDsKKyAgICBQeV9zc2l6ZV90IHNbNF07IC8qIHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aCAqLworICAgIFB5X3NzaXplX3QgaSwgbGVuOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPbiIsICZrZXksICZsZW4pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5U2xpY2VfQ2hlY2soa2V5KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzbGljZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChrZXksIGxlbiwgJnNbMF0sICZzWzFdLCAmc1syXSwgJnNbM10pIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXQgPSBQeVR1cGxlX05ldyg0KTsKKyAgICBpZiAocmV0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IDQ7IGkrKykgeworICAgICAgICB0bXAgPSBQeUxvbmdfRnJvbVNzaXplX3Qoc1tpXSk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmV0LCBpLCB0bXApOworICAgIH0KKworICAgIHJldHVybiByZXQ7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihyZXQpOworICAgIHJldHVybiBOVUxMOworfQorCisKK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG5kYXJyYXlfYXNfbWFwcGluZyA9IHsKKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLworICAgIChiaW5hcnlmdW5jKW5kYXJyYXlfc3Vic2NyaXB0LCAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCisgICAgKG9iam9iamFyZ3Byb2MpbmRhcnJheV9hc3Nfc3Vic2NyaXB0ICAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCit9OworCitzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbmRhcnJheV9hc19zZXF1ZW5jZSA9IHsKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2xlbmd0aCAqLworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KKyAgICAgICAgKHNzaXplYXJnZnVuYyluZGFycmF5X2l0ZW0sICAgICAgIC8qIHNxX2l0ZW0gKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlPYmplY3QgKgorc3NpemVfYXJyYXlfYXNfdHVwbGUoUHlfc3NpemVfdCAqYXJyYXksIFB5X3NzaXplX3QgbGVuKQoreworICAgIFB5T2JqZWN0ICp0dXBsZSwgKng7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgaWYgKGFycmF5ID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeVR1cGxlX05ldygwKTsKKworICAgIHR1cGxlID0gUHlUdXBsZV9OZXcobGVuKTsKKyAgICBpZiAodHVwbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgeCA9IFB5TG9uZ19Gcm9tU3NpemVfdChhcnJheVtpXSk7CisgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCBpLCB4KTsKKyAgICB9CisKKyAgICByZXR1cm4gdHVwbGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9mbGFncyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+aGVhZC0+ZmxhZ3MpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfb2Zmc2V0KE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgbmRidWZfdCAqbmRidWYgPSBzZWxmLT5oZWFkOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobmRidWYtPm9mZnNldCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9vYmooTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKworICAgIGlmIChiYXNlLT5vYmogPT0gTlVMTCkgeyAKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihiYXNlLT5vYmopOworICAgIHJldHVybiBiYXNlLT5vYmo7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9uYnl0ZXMoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGJhc2UtPmxlbik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9yZWFkb25seShOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoYmFzZS0+cmVhZG9ubHkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfaXRlbXNpemUoTkRBcnJheU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBQeV9idWZmZXIgKmJhc2UgPSAmc2VsZi0+aGVhZC0+YmFzZTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KGJhc2UtPml0ZW1zaXplKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfZ2V0X2Zvcm1hdChOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIGNoYXIgKmZtdCA9IGJhc2UtPmZvcm1hdCA/IGJhc2UtPmZvcm1hdCA6ICIiOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhmbXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfbmRpbShOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9zaGFwZShOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBzc2l6ZV9hcnJheV9hc190dXBsZShiYXNlLT5zaGFwZSwgYmFzZS0+bmRpbSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2dldF9zdHJpZGVzKE5EQXJyYXlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPmhlYWQtPmJhc2U7CisgICAgcmV0dXJuIHNzaXplX2FycmF5X2FzX3R1cGxlKGJhc2UtPnN0cmlkZXMsIGJhc2UtPm5kaW0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9nZXRfc3Vib2Zmc2V0cyhOREFycmF5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZzZWxmLT5oZWFkLT5iYXNlOworICAgIHJldHVybiBzc2l6ZV9hcnJheV9hc190dXBsZShiYXNlLT5zdWJvZmZzZXRzLCBiYXNlLT5uZGltKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfY19jb250aWcoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBpbnQgcmV0ID0gUHlCdWZmZXJfSXNDb250aWd1b3VzKCZuZC0+aGVhZC0+YmFzZSwgJ0MnKTsKKworICAgIGlmIChyZXQgIT0gTkRfQ19DT05USUdVT1VTKG5kLT5oZWFkLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICJyZXN1bHRzIGZyb20gUHlCdWZmZXJfSXNDb250aWd1b3VzKCkgYW5kIGZsYWdzIGRpZmZlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9mb3J0cmFuX2NvbnRpZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGludCByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kLT5oZWFkLT5iYXNlLCAnRicpOworCisgICAgaWYgKHJldCAhPSBORF9GT1JUUkFOX0NPTlRJR1VPVVMobmQtPmhlYWQtPmZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgInJlc3VsdHMgZnJvbSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoKSBhbmQgZmxhZ3MgZGlmZmVyIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJldCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X2NvbnRpZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIGludCByZXQgPSBQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJm5kLT5oZWFkLT5iYXNlLCAnQScpOworCisgICAgaWYgKHJldCAhPSBORF9BTllfQ09OVElHVU9VUyhuZC0+aGVhZC0+ZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAicmVzdWx0cyBmcm9tIFB5QnVmZmVyX0lzQ29udGlndW91cygpIGFuZCBmbGFncyBkaWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmV0KTsKK30KKworCitzdGF0aWMgUHlHZXRTZXREZWYgbmRhcnJheV9nZXRzZXQgW10gPQoreworICAvKiBuZGJ1ZiAqLworICB7ICJmbGFncyIsICAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X2ZsYWdzLCAgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICB7ICJvZmZzZXQiLCAgICAgICAoZ2V0dGVyKW5kYXJyYXlfZ2V0X29mZnNldCwgICAgIE5VTEwsIE5VTEwsIE5VTEx9LAorICAvKiBuZGJ1Zi5iYXNlICovCisgIHsgIm9iaiIsICAgICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfb2JqLCAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgIm5ieXRlcyIsICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfbmJ5dGVzLCAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgInJlYWRvbmx5IiwgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfcmVhZG9ubHksICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgIml0ZW1zaXplIiwgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfaXRlbXNpemUsICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgImZvcm1hdCIsICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfZm9ybWF0LCAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgIm5kaW0iLCAgICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfbmRpbSwgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgInNoYXBlIiwgICAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfc2hhcGUsICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgInN0cmlkZXMiLCAgICAgIChnZXR0ZXIpbmRhcnJheV9nZXRfc3RyaWRlcywgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgInN1Ym9mZnNldHMiLCAgIChnZXR0ZXIpbmRhcnJheV9nZXRfc3Vib2Zmc2V0cywgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgImNfY29udGlndW91cyIsIChnZXR0ZXIpbmRhcnJheV9jX2NvbnRpZywgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgImZfY29udGlndW91cyIsIChnZXR0ZXIpbmRhcnJheV9mb3J0cmFuX2NvbnRpZywgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHsgImNvbnRpZ3VvdXMiLCAgIChnZXR0ZXIpbmRhcnJheV9jb250aWcsICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTH0sCisgIHtOVUxMfQorfTsKKworc3RhdGljIFB5T2JqZWN0ICoKK25kYXJyYXlfdG9saXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgcmV0dXJuIG5kYXJyYXlfYXNfbGlzdCgoTkRBcnJheU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV90b2J5dGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgbmRidWZfdCAqbmRidWYgPSAoKE5EQXJyYXlPYmplY3QgKilzZWxmKS0+aGVhZDsKKyAgICBQeV9idWZmZXIgKnNyYyA9ICZuZGJ1Zi0+YmFzZTsKKyAgICBQeV9idWZmZXIgZGVzdDsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKyAgICBjaGFyICptZW07CisKKyAgICBpZiAoTkRfQ19DT05USUdVT1VTKG5kYnVmLT5mbGFncykpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHNyYy0+YnVmLCBzcmMtPmxlbik7CisKKyAgICBhc3NlcnQoc3JjLT5zaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3JjLT5zdHJpZGVzICE9IE5VTEwpOworICAgIGFzc2VydChzcmMtPm5kaW0gPiAwKTsKKworICAgIG1lbSA9IFB5TWVtX01hbGxvYyhzcmMtPmxlbik7CisgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGRlc3QgPSAqc3JjOworICAgIGRlc3QuYnVmID0gbWVtOworICAgIGRlc3Quc3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgZGVzdC5zdHJpZGVzID0gc3RyaWRlc19mcm9tX3NoYXBlKG5kYnVmLCAwKTsKKyAgICBpZiAoZGVzdC5zdHJpZGVzID09IE5VTEwpCisgICAgICAgIGdvdG8gb3V0OworICAgIGlmIChjb3B5X2J1ZmZlcigmZGVzdCwgc3JjKSA8IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShtZW0sIHNyYy0+bGVuKTsKKworb3V0OgorICAgIFB5TWVtX1hGcmVlKGRlc3Quc3RyaWRlcyk7CisgICAgUHlNZW1fRnJlZShtZW0pOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIGFkZCByZWR1bmRhbnQgKG5lZ2F0aXZlKSBzdWJvZmZzZXRzIGZvciB0ZXN0aW5nICovCitzdGF0aWMgUHlPYmplY3QgKgorbmRhcnJheV9hZGRfc3Vib2Zmc2V0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIE5EQXJyYXlPYmplY3QgKm5kID0gKE5EQXJyYXlPYmplY3QgKilzZWxmOworICAgIFB5X2J1ZmZlciAqYmFzZSA9ICZuZC0+aGVhZC0+YmFzZTsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoYmFzZS0+c3Vib2Zmc2V0cyAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY2Fubm90IGFkZCBzdWJvZmZzZXRzIHRvIFBJTC1zdHlsZSBhcnJheSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChiYXNlLT5zdHJpZGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjYW5ub3QgYWRkIHN1Ym9mZnNldHMgdG8gYXJyYXkgd2l0aG91dCBzdHJpZGVzIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBiYXNlLT5zdWJvZmZzZXRzID0gUHlNZW1fTWFsbG9jKGJhc2UtPm5kaW0gKiAoc2l6ZW9mICpiYXNlLT5zdWJvZmZzZXRzKSk7CisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYmFzZS0+bmRpbTsgaSsrKQorICAgICAgICBiYXNlLT5zdWJvZmZzZXRzW2ldID0gLTE7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworLyogVGVzdCBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigpOiByZXR1cm4gYSBtZW1vcnl2aWV3IGZyb20gYSBzdGF0aWMgYnVmZmVyLgorICAgT2J2aW91c2x5IHRoaXMgaXMgZnJhZ2lsZSBhbmQgb25seSBvbmUgc3VjaCB2aWV3IG1heSBiZSBhY3RpdmUgYXQgYW55CisgICB0aW1lLiBOZXZlciB1c2UgYW55dGhpbmcgbGlrZSB0aGlzIGluIHJlYWwgY29kZSEgKi8KK3N0YXRpYyBjaGFyICppbmZvYnVmID0gTlVMTDsKK3N0YXRpYyBQeU9iamVjdCAqCituZGFycmF5X21lbW9yeXZpZXdfZnJvbV9idWZmZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpkdW1teSkKK3sKKyAgICBjb25zdCBOREFycmF5T2JqZWN0ICpuZCA9IChOREFycmF5T2JqZWN0ICopc2VsZjsKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmbmQtPmhlYWQtPmJhc2U7CisgICAgY29uc3QgbmRidWZfdCAqbmRidWY7CisgICAgc3RhdGljIGNoYXIgZm9ybWF0W05EX01BWF9ORElNKzFdOworICAgIHN0YXRpYyBQeV9zc2l6ZV90IHNoYXBlW05EX01BWF9ORElNXTsKKyAgICBzdGF0aWMgUHlfc3NpemVfdCBzdHJpZGVzW05EX01BWF9ORElNXTsKKyAgICBzdGF0aWMgUHlfc3NpemVfdCBzdWJvZmZzZXRzW05EX01BWF9ORElNXTsKKyAgICBzdGF0aWMgUHlfYnVmZmVyIGluZm87CisgICAgY2hhciAqcDsKKworICAgIGlmICghTkRfSVNfQ09OU1VNRVIobmQpKQorICAgICAgICBuZGJ1ZiA9IG5kLT5oZWFkOyAvKiBzZWxmIGlzIG5kYXJyYXkvb3JpZ2luYWwgZXhwb3J0ZXIgKi8KKyAgICBlbHNlIGlmIChOREFycmF5X0NoZWNrKHZpZXctPm9iaikgJiYgIU5EX0lTX0NPTlNVTUVSKHZpZXctPm9iaikpCisgICAgICAgIC8qIHNlbGYgaXMgbmRhcnJheSBhbmQgY29uc3VtZXIgZnJvbSBuZGFycmF5L29yaWdpbmFsIGV4cG9ydGVyICovCisgICAgICAgIG5kYnVmID0gKChOREFycmF5T2JqZWN0ICopdmlldy0+b2JqKS0+aGVhZDsKKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXIoKTogbmRhcnJheSBtdXN0IGJlIG9yaWdpbmFsIGV4cG9ydGVyIG9yICIKKyAgICAgICAgImNvbnN1bWVyIGZyb20gbmRhcnJheS9vcmlnaW5hbCBleHBvcnRlciIpOworICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaW5mbyA9ICp2aWV3OworICAgIHAgPSBQeU1lbV9SZWFsbG9jKGluZm9idWYsIG5kYnVmLT5sZW4pOworICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShpbmZvYnVmKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgaW5mb2J1ZiA9IE5VTEw7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW5mb2J1ZiA9IHA7CisgICAgfQorICAgIC8qIGNvcHkgdGhlIGNvbXBsZXRlIHJhdyBkYXRhICovCisgICAgbWVtY3B5KGluZm9idWYsIG5kYnVmLT5kYXRhLCBuZGJ1Zi0+bGVuKTsKKyAgICBpbmZvLmJ1ZiA9IGluZm9idWYgKyAoKGNoYXIgKil2aWV3LT5idWYgLSBuZGJ1Zi0+ZGF0YSk7CisKKyAgICBpZiAodmlldy0+Zm9ybWF0KSB7CisgICAgICAgIGlmIChzdHJsZW4odmlldy0+Zm9ybWF0KSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3X2Zyb21fYnVmZmVyOiBmb3JtYXQgaXMgbGltaXRlZCB0byAlZCBjaGFyYWN0ZXJzIiwKKyAgICAgICAgICAgICAgICBORF9NQVhfTkRJTSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KGZvcm1hdCwgdmlldy0+Zm9ybWF0KTsKKyAgICAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7CisgICAgfQorICAgIGlmICh2aWV3LT5uZGltID4gTkRfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3X2Zyb21fYnVmZmVyOiBuZGltIGlzIGxpbWl0ZWQgdG8gJWQiLCBORF9NQVhfTkRJTSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHZpZXctPnNoYXBlKSB7CisgICAgICAgIG1lbWNweShzaGFwZSwgdmlldy0+c2hhcGUsIHZpZXctPm5kaW0gKiBzaXplb2YoUHlfc3NpemVfdCkpOworICAgICAgICBpbmZvLnNoYXBlID0gc2hhcGU7CisgICAgfQorICAgIGlmICh2aWV3LT5zdHJpZGVzKSB7CisgICAgICAgIG1lbWNweShzdHJpZGVzLCB2aWV3LT5zdHJpZGVzLCB2aWV3LT5uZGltICogc2l6ZW9mKFB5X3NzaXplX3QpKTsKKyAgICAgICAgaW5mby5zdHJpZGVzID0gc3RyaWRlczsKKyAgICB9CisgICAgaWYgKHZpZXctPnN1Ym9mZnNldHMpIHsKKyAgICAgICAgbWVtY3B5KHN1Ym9mZnNldHMsIHZpZXctPnN1Ym9mZnNldHMsIHZpZXctPm5kaW0gKiBzaXplb2YoUHlfc3NpemVfdCkpOworICAgICAgICBpbmZvLnN1Ym9mZnNldHMgPSBzdWJvZmZzZXRzOworICAgIH0KKworICAgIHJldHVybiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcigmaW5mbyk7Cit9CisKKy8qIEdldCBhIHNpbmdsZSBpdGVtIGZyb20gYnVmb2JqIGF0IHRoZSBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgc2VxLgorICAgc2VxIGlzIGEgbGlzdCBvciB0dXBsZSBvZiBpbmRpY2VzLiBUaGUgcHVycG9zZSBvZiB0aGlzIGZ1bmN0aW9uCisgICBpcyB0byBjaGVjayBvdGhlciBmdW5jdGlvbnMgYWdhaW5zdCBQeUJ1ZmZlcl9HZXRQb2ludGVyKCkuICovCitzdGF0aWMgUHlPYmplY3QgKgorZ2V0X3BvaW50ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMLCAqYnVmb2JqLCAqc2VxOworICAgIFB5X2J1ZmZlciB2aWV3OworICAgIFB5X3NzaXplX3QgaW5kaWNlc1tORF9NQVhfTkRJTV07CisgICAgUHlfc3NpemVfdCBpOworICAgIHZvaWQgKnB0cjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmYnVmb2JqLCAmc2VxKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBDSEVDS19MSVNUX09SX1RVUExFKHNlcSk7CisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihidWZvYmosICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHZpZXcubmRpbSA+IE5EX01BWF9ORElNKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgImdldF9wb2ludGVyKCk6IG5kaW0gPiAlZCIsIE5EX01BWF9ORElNKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIGlmIChQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc2VxKSAhPSB2aWV3Lm5kaW0pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiZ2V0X3BvaW50ZXIoKTogbGVuKGluZGljZXMpICE9IG5kaW0iKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHZpZXcubmRpbTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKHNlcSwgaSk7CisgICAgICAgIGluZGljZXNbaV0gPSBQeUxvbmdfQXNTc2l6ZV90KHgpOworICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB2aWV3LnNoYXBlW2ldKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAiZ2V0X3BvaW50ZXIoKTogaW52YWxpZCBpbmRleCAlemQgYXQgcG9zaXRpb24gJXpkIiwKKyAgICAgICAgICAgICAgICBpbmRpY2VzW2ldLCBpKTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfQorCisgICAgcHRyID0gUHlCdWZmZXJfR2V0UG9pbnRlcigmdmlldywgaW5kaWNlcyk7CisgICAgcmV0ID0gdW5wYWNrX3NpbmdsZShwdHIsIHZpZXcuZm9ybWF0LCB2aWV3Lml0ZW1zaXplKTsKKworb3V0OgorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfc2l6ZW9mX3ZvaWRfcChQeU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3Qoc2l6ZW9mKHZvaWQgKikpOworfQorCitzdGF0aWMgY2hhcgorZ2V0X2FzY2lpX29yZGVyKFB5T2JqZWN0ICpvcmRlcikKK3sKKyAgICBQeU9iamVjdCAqYXNjaWlfb3JkZXI7CisgICAgY2hhciBvcmQ7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvcmRlcikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJvcmRlciBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiBDSEFSX01BWDsKKyAgICB9CisKKyAgICBhc2NpaV9vcmRlciA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKG9yZGVyKTsKKyAgICBpZiAoYXNjaWlfb3JkZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gQ0hBUl9NQVg7CisgICAgfQorCisgICAgb3JkID0gUHlCeXRlc19BU19TVFJJTkcoYXNjaWlfb3JkZXIpWzBdOworICAgIFB5X0RFQ1JFRihhc2NpaV9vcmRlcik7CisKKyAgICBpZiAob3JkICE9ICdDJyAmJiBvcmQgIT0gJ0YnICYmIG9yZCAhPSAnQScpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiaW52YWxpZCBvcmRlciwgbXVzdCBiZSBDLCBGIG9yIEEiKTsKKyAgICAgICAgcmV0dXJuIENIQVJfTUFYOworICAgIH0KKworICAgIHJldHVybiBvcmQ7Cit9CisKKy8qIEdldCBhIGNvbnRpZ3VvdXMgbWVtb3J5dmlldy4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfY29udGlndW91cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBQeU9iamVjdCAqYnVmZmVydHlwZTsKKyAgICBQeU9iamVjdCAqb3JkZXI7CisgICAgbG9uZyB0eXBlOworICAgIGNoYXIgb3JkOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT08iLCAmb2JqLCAmYnVmZmVydHlwZSwgJm9yZGVyKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIVB5TG9uZ19DaGVjayhidWZmZXJ0eXBlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImJ1ZmZlcnR5cGUgbXVzdCBiZSBQeUJVRl9SRUFEIG9yIFB5QlVGX1dSSVRFIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHR5cGUgPSBQeUxvbmdfQXNMb25nKGJ1ZmZlcnR5cGUpOworICAgIGlmICh0eXBlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICh0eXBlICE9IFB5QlVGX1JFQUQgJiYgdHlwZSAhPSBQeUJVRl9XUklURSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJpbnZhbGlkIGJ1ZmZlciB0eXBlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7CisgICAgaWYgKG9yZCA9PSBDSEFSX01BWCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMob2JqLCAoaW50KXR5cGUsIG9yZCk7Cit9CisKKy8qIFB5QnVmZmVyX1RvQ29udGlndW91cygpICovCitzdGF0aWMgUHlPYmplY3QgKgorcHlfYnVmZmVyX3RvX2NvbnRpZ3VvdXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlPYmplY3QgKm9yZGVyOworICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOworICAgIGludCBmbGFnczsKKyAgICBjaGFyIG9yZDsKKyAgICBQeV9idWZmZXIgdmlldzsKKyAgICBjaGFyICpidWYgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT2kiLCAmb2JqLCAmb3JkZXIsICZmbGFncykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihvYmosICZ2aWV3LCBmbGFncykgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG9yZCA9IGdldF9hc2NpaV9vcmRlcihvcmRlcik7CisgICAgaWYgKG9yZCA9PSBDSEFSX01BWCkgeworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBidWYgPSBQeU1lbV9NYWxsb2Modmlldy5sZW4pOworICAgIGlmIChidWYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKGJ1ZiwgJnZpZXcsIHZpZXcubGVuLCBvcmQpIDwgMCkgeworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1Ziwgdmlldy5sZW4pOworCitvdXQ6CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgUHlNZW1fWEZyZWUoYnVmKTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50CitmbXRjbXAoY29uc3QgY2hhciAqZm10MSwgY29uc3QgY2hhciAqZm10MikKK3sKKyAgICBpZiAoZm10MSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBmbXQyID09IE5VTEwgfHwgc3RyY21wKGZtdDIsICJCIikgPT0gMDsKKyAgICB9CisgICAgaWYgKGZtdDIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gZm10MSA9PSBOVUxMIHx8IHN0cmNtcChmbXQxLCAiQiIpID09IDA7CisgICAgfQorICAgIHJldHVybiBzdHJjbXAoZm10MSwgZm10MikgPT0gMDsKK30KKworc3RhdGljIGludAorYXJyYXljbXAoY29uc3QgUHlfc3NpemVfdCAqYTEsIGNvbnN0IFB5X3NzaXplX3QgKmEyLCBjb25zdCBQeV9zc2l6ZV90ICpzaGFwZSwKKyAgICAgICAgIFB5X3NzaXplX3QgbmRpbSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAobmRpbSA9PSAxICYmIHNoYXBlICYmIHNoYXBlWzBdID09IDEpIHsKKyAgICAgICAgLyogVGhpcyBpcyBmb3IgY29tcGFyaW5nIHN0cmlkZXM6IEZvciBleGFtcGxlLCB0aGUgYXJyYXkKKyAgICAgICAgICAgWzE3NV0sIHNoYXBlPVsxXSwgc3RyaWRlcz1bLTVdIGlzIGNvbnNpZGVyZWQgY29udGlndW91cy4gKi8KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykgeworICAgICAgICBpZiAoYTFbaV0gIT0gYTJbaV0pIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIENvbXBhcmUgdHdvIGNvbnRpZ3VvdXMgYnVmZmVycyBmb3IgcGh5c2ljYWwgZXF1YWxpdHkuICovCitzdGF0aWMgUHlPYmplY3QgKgorY21wX2NvbnRpZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmIxLCAqYjI7IC8qIGJ1ZmZlciBvYmplY3RzICovCisgICAgUHlfYnVmZmVyIHYxLCB2MjsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIGludCBlcXVhbCA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PIiwgJmIxLCAmYjIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYjEsICZ2MSwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiY21wX2NvbnRpZzogZmlyc3QgYXJndW1lbnQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBidWZmZXIgIgorICAgICAgICAgICAgInByb3RvY29sIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIyLCAmdjIsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgImNtcF9jb250aWc6IHNlY29uZCBhcmd1bWVudCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIGJ1ZmZlciAiCisgICAgICAgICAgICAicHJvdG9jb2wiKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjEpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIShQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnYxLCAnQycpJiZQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoJnYyLCAnQycpKSAmJgorICAgICAgICAhKFB5QnVmZmVyX0lzQ29udGlndW91cygmdjEsICdGJykmJlB5QnVmZmVyX0lzQ29udGlndW91cygmdjIsICdGJykpKSB7CisgICAgICAgIGdvdG8gcmVzdWx0OworICAgIH0KKworICAgIC8qIHJlYWRvbmx5IG1heSBkaWZmZXIgaWYgY3JlYXRlZCBmcm9tIG5vbi1jb250aWd1b3VzICovCisgICAgaWYgKHYxLmxlbiAhPSB2Mi5sZW4gfHwKKyAgICAgICAgdjEuaXRlbXNpemUgIT0gdjIuaXRlbXNpemUgfHwKKyAgICAgICAgdjEubmRpbSAhPSB2Mi5uZGltIHx8CisgICAgICAgICFmbXRjbXAodjEuZm9ybWF0LCB2Mi5mb3JtYXQpIHx8CisgICAgICAgICEhdjEuc2hhcGUgIT0gISF2Mi5zaGFwZSB8fAorICAgICAgICAhIXYxLnN0cmlkZXMgIT0gISF2Mi5zdHJpZGVzIHx8CisgICAgICAgICEhdjEuc3Vib2Zmc2V0cyAhPSAhIXYyLnN1Ym9mZnNldHMpIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKCh2MS5zaGFwZSAmJiAhYXJyYXljbXAodjEuc2hhcGUsIHYyLnNoYXBlLCBOVUxMLCB2MS5uZGltKSkgfHwKKyAgICAgICAgKHYxLnN0cmlkZXMgJiYgIWFycmF5Y21wKHYxLnN0cmlkZXMsIHYyLnN0cmlkZXMsIHYxLnNoYXBlLCB2MS5uZGltKSkgfHwKKyAgICAgICAgKHYxLnN1Ym9mZnNldHMgJiYgIWFycmF5Y21wKHYxLnN1Ym9mZnNldHMsIHYyLnN1Ym9mZnNldHMsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2MS5uZGltKSkpIHsKKyAgICAgICAgZ290byByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKG1lbWNtcCgoY2hhciAqKXYxLmJ1ZiwgKGNoYXIgKil2Mi5idWYsIHYxLmxlbikgIT0gMCkgeworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICBlcXVhbCA9IDE7CisKK3Jlc3VsdDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2MSk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdjIpOworCisgICAgcmV0ID0gZXF1YWwgPyBQeV9UcnVlIDogUHlfRmFsc2U7IAorICAgIFB5X0lOQ1JFRihyZXQpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitpc19jb250aWd1b3VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb2JqOworICAgIFB5T2JqZWN0ICpvcmRlcjsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKyAgICBQeV9idWZmZXIgdmlldzsKKyAgICBjaGFyIG9yZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT08iLCAmb2JqLCAmb3JkZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCAmdmlldywgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAiaXNfY29udGlndW91czogb2JqZWN0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgYnVmZmVyICIKKyAgICAgICAgICAgICJwcm90b2NvbCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBvcmQgPSBnZXRfYXNjaWlfb3JkZXIob3JkZXIpOworICAgIGlmIChvcmQgPT0gQ0hBUl9NQVgpIHsKKyAgICAgICAgZ290byByZWxlYXNlOworICAgIH0KKworICAgIHJldCA9IFB5QnVmZmVyX0lzQ29udGlndW91cygmdmlldywgb3JkKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICBQeV9JTkNSRUYocmV0KTsKKworcmVsZWFzZToKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlfaGFzaF90CituZGFycmF5X2hhc2goUHlPYmplY3QgKnNlbGYpCit7CisgICAgY29uc3QgTkRBcnJheU9iamVjdCAqbmQgPSAoTkRBcnJheU9iamVjdCAqKXNlbGY7CisgICAgY29uc3QgUHlfYnVmZmVyICp2aWV3ID0gJm5kLT5oZWFkLT5iYXNlOworICAgIFB5T2JqZWN0ICpieXRlczsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKworICAgIGlmICghdmlldy0+cmVhZG9ubHkpIHsKKyAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICJjYW5ub3QgaGFzaCB3cml0YWJsZSBuZGFycmF5IG9iamVjdCIpOworICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmlldy0+b2JqICE9IE5VTEwgJiYgUHlPYmplY3RfSGFzaCh2aWV3LT5vYmopID09IC0xKSB7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgYnl0ZXMgPSBuZGFycmF5X3RvYnl0ZXMoc2VsZiwgTlVMTCk7CisgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGJ5dGVzKTsKKyAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgIHJldHVybiBoYXNoOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZiBuZGFycmF5X21ldGhvZHMgW10gPQoreworICAgIHsgInRvbGlzdCIsIG5kYXJyYXlfdG9saXN0LCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHsgInRvYnl0ZXMiLCBuZGFycmF5X3RvYnl0ZXMsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAicHVzaCIsIChQeUNGdW5jdGlvbiluZGFycmF5X3B1c2gsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBOVUxMIH0sCisgICAgeyAicG9wIiwgbmRhcnJheV9wb3AsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAgeyAiYWRkX3N1Ym9mZnNldHMiLCBuZGFycmF5X2FkZF9zdWJvZmZzZXRzLCBNRVRIX05PQVJHUywgTlVMTCB9LAorICAgIHsgIm1lbW9yeXZpZXdfZnJvbV9idWZmZXIiLCBuZGFycmF5X21lbW9yeXZpZXdfZnJvbV9idWZmZXIsIE1FVEhfTk9BUkdTLCBOVUxMIH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IE5EQXJyYXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAibmRhcnJheSIsICAgICAgICAgICAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCisgICAgc2l6ZW9mKE5EQXJyYXlPYmplY3QpLCAgICAgICAvKiBCYXNpYyBvYmplY3Qgc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSXRlbSBzaXplIGZvciB2YXJvYmplY3QgKi8KKyAgICAoZGVzdHJ1Y3RvciluZGFycmF5X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAmbmRhcnJheV9hc19zZXF1ZW5jZSwgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJm5kYXJyYXlfYXNfbWFwcGluZywgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgKGhhc2hmdW5jKW5kYXJyYXlfaGFzaCwgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgICZuZGFycmF5X2FzX2J1ZmZlciwgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBuZGFycmF5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICBuZGFycmF5X2dldHNldCwgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBuZGFycmF5X2luaXQsICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgbmRhcnJheV9uZXcsICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0aWNBcnJheSBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFB5VHlwZU9iamVjdCBTdGF0aWNBcnJheV9UeXBlOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIGludCBsZWdhY3lfbW9kZTsgLyogaWYgdHJ1ZSwgdXNlIHRoZSB2aWV3Lm9iaj09TlVMTCBoYWNrICovCit9IFN0YXRpY0FycmF5T2JqZWN0OworCitzdGF0aWMgY2hhciBzdGF0aWNfbWVtWzEyXSA9IHswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExfTsKK3N0YXRpYyBQeV9zc2l6ZV90IHN0YXRpY19zaGFwZVsxXSA9IHsxMn07CitzdGF0aWMgUHlfc3NpemVfdCBzdGF0aWNfc3RyaWRlc1sxXSA9IHsxfTsKK3N0YXRpYyBQeV9idWZmZXIgc3RhdGljX2J1ZmZlciA9IHsKKyAgICBzdGF0aWNfbWVtLCAgICAgLyogYnVmICovCisgICAgTlVMTCwgICAgICAgICAgIC8qIG9iaiAqLworICAgIDEyLCAgICAgICAgICAgICAvKiBsZW4gKi8KKyAgICAxLCAgICAgICAgICAgICAgLyogaXRlbXNpemUgKi8KKyAgICAxLCAgICAgICAgICAgICAgLyogcmVhZG9ubHkgKi8KKyAgICAxLCAgICAgICAgICAgICAgLyogbmRpbSAqLworICAgICJCIiwgICAgICAgICAgICAvKiBmb3JtYXQgKi8KKyAgICBzdGF0aWNfc2hhcGUsICAgLyogc2hhcGUgKi8KKyAgICBzdGF0aWNfc3RyaWRlcywgLyogc3RyaWRlcyAqLworICAgIE5VTEwsICAgICAgICAgICAvKiBzdWJvZmZzZXRzICovCisgICAgTlVMTCAgICAgICAgICAgIC8qIGludGVybmFsICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorc3RhdGljYXJyYXlfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHJldHVybiAoUHlPYmplY3QgKilQeU9iamVjdF9OZXcoU3RhdGljQXJyYXlPYmplY3QsICZTdGF0aWNBcnJheV9UeXBlKTsKK30KKworc3RhdGljIGludAorc3RhdGljYXJyYXlfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFN0YXRpY0FycmF5T2JqZWN0ICphID0gKFN0YXRpY0FycmF5T2JqZWN0ICopc2VsZjsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7CisgICAgICAgICJsZWdhY3lfbW9kZSIsIE5VTEwKKyAgICB9OworICAgIFB5T2JqZWN0ICpsZWdhY3lfbW9kZSA9IFB5X0ZhbHNlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPIiwga3dsaXN0LCAmbGVnYWN5X21vZGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBhLT5sZWdhY3lfbW9kZSA9IChsZWdhY3lfbW9kZSAhPSBQeV9GYWxzZSk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitzdGF0aWNhcnJheV9kZWFsbG9jKFN0YXRpY0FycmF5T2JqZWN0ICpzZWxmKQoreworICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKK30KKworLyogUmV0dXJuIGEgYnVmZmVyIGZvciBhIFB5QlVGX0ZVTExfUk8gcmVxdWVzdC4gRmxhZ3MgYXJlIG5vdCBjaGVja2VkLAorICAgd2hpY2ggbWFrZXMgdGhpcyBvYmplY3QgYSBub24tY29tcGxpYW50IGV4cG9ydGVyISAqLworc3RhdGljIGludAorc3RhdGljYXJyYXlfZ2V0YnVmKFN0YXRpY0FycmF5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK3sKKyAgICAqdmlldyA9IHN0YXRpY19idWZmZXI7CisKKyAgICBpZiAoc2VsZi0+bGVnYWN5X21vZGUpIHsKKyAgICAgICAgdmlldy0+b2JqID0gTlVMTDsgLyogRG9uJ3QgdXNlIHRoaXMgaW4gbmV3IGNvZGUuICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICBQeV9JTkNSRUYodmlldy0+b2JqKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5QnVmZmVyUHJvY3Mgc3RhdGljYXJyYXlfYXNfYnVmZmVyID0geworICAgIChnZXRidWZmZXJwcm9jKXN0YXRpY2FycmF5X2dldGJ1ZiwgLyogYmZfZ2V0YnVmZmVyICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBiZl9yZWxlYXNlYnVmZmVyICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFN0YXRpY0FycmF5X1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgInN0YXRpY2FycmF5IiwgICAgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KKyAgICBzaXplb2YoU3RhdGljQXJyYXlPYmplY3QpLCAgICAgICAvKiBCYXNpYyBvYmplY3Qgc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0ZW0gc2l6ZSBmb3IgdmFyb2JqZWN0ICovCisgICAgKGRlc3RydWN0b3Ipc3RhdGljYXJyYXlfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgICZzdGF0aWNhcnJheV9hc19idWZmZXIsICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIHN0YXRpY2FycmF5X2luaXQsICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIHN0YXRpY2FycmF5X25ldywgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworfTsKKworCitzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIF90ZXN0YnVmZmVyX2Z1bmN0aW9uc1tdID0geworICAgIHsic2xpY2VfaW5kaWNlcyIsIHNsaWNlX2luZGljZXMsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJnZXRfcG9pbnRlciIsIGdldF9wb2ludGVyLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiZ2V0X3NpemVvZl92b2lkX3AiLCAoUHlDRnVuY3Rpb24pZ2V0X3NpemVvZl92b2lkX3AsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7ImdldF9jb250aWd1b3VzIiwgZ2V0X2NvbnRpZ3VvdXMsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJweV9idWZmZXJfdG9fY29udGlndW91cyIsIHB5X2J1ZmZlcl90b19jb250aWd1b3VzLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHsiaXNfY29udGlndW91cyIsIGlzX2NvbnRpZ3VvdXMsIE1FVEhfVkFSQVJHUywgTlVMTH0sCisgICAgeyJjbXBfY29udGlnIiwgY21wX2NvbnRpZywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX3Rlc3RidWZmZXJtb2R1bGUgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJfdGVzdGJ1ZmZlciIsCisgICAgTlVMTCwKKyAgICAtMSwKKyAgICBfdGVzdGJ1ZmZlcl9mdW5jdGlvbnMsCisgICAgTlVMTCwKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworCitQeU1PRElOSVRfRlVOQworUHlJbml0X190ZXN0YnVmZmVyKHZvaWQpCit7CisgICAgUHlPYmplY3QgKm07CisKKyAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfdGVzdGJ1ZmZlcm1vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9UWVBFKCZOREFycmF5X1R5cGUpID0gJlB5VHlwZV9UeXBlOworICAgIFB5X0lOQ1JFRigmTkRBcnJheV9UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIm5kYXJyYXkiLCAoUHlPYmplY3QgKikmTkRBcnJheV9UeXBlKTsKKworICAgIFB5X1RZUEUoJlN0YXRpY0FycmF5X1R5cGUpID0gJlB5VHlwZV9UeXBlOworICAgIFB5X0lOQ1JFRigmU3RhdGljQXJyYXlfVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdGF0aWNhcnJheSIsIChQeU9iamVjdCAqKSZTdGF0aWNBcnJheV9UeXBlKTsKKworICAgIHN0cnVjdG1vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgic3RydWN0Iik7CisgICAgaWYgKHN0cnVjdG1vZHVsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFN0cnVjdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0bW9kdWxlLCAiU3RydWN0Iik7CisgICAgY2FsY3NpemUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHN0cnVjdG1vZHVsZSwgImNhbGNzaXplIik7CisgICAgaWYgKFN0cnVjdCA9PSBOVUxMIHx8IGNhbGNzaXplID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2ltcGxlX2Zvcm1hdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNpbXBsZV9mbXQpOworICAgIGlmIChzaW1wbGVfZm9ybWF0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk5EX01BWF9ORElNIiwgTkRfTUFYX05ESU0pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9WQVJFWFBPUlQiLCBORF9WQVJFWFBPUlQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9XUklUQUJMRSIsIE5EX1dSSVRBQkxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfRk9SVFJBTiIsIE5EX0ZPUlRSQU4pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9TQ0FMQVIiLCBORF9TQ0FMQVIpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9QSUwiLCBORF9QSUwpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9HRVRCVUZfRkFJTCIsIE5EX0dFVEJVRl9GQUlMKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTkRfR0VUQlVGX1VOREVGSU5FRCIsIE5EX0dFVEJVRl9VTkRFRklORUQpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJORF9SRURJUkVDVCIsIE5EX1JFRElSRUNUKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9TSU1QTEUiLCBQeUJVRl9TSU1QTEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9XUklUQUJMRSIsIFB5QlVGX1dSSVRBQkxFKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfRk9STUFUIiwgUHlCVUZfRk9STUFUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfTkQiLCBQeUJVRl9ORCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NUUklERVMiLCBQeUJVRl9TVFJJREVTKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfSU5ESVJFQ1QiLCBQeUJVRl9JTkRJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0NfQ09OVElHVU9VUyIsIFB5QlVGX0NfQ09OVElHVU9VUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZfQ09OVElHVU9VUyIsIFB5QlVGX0ZfQ09OVElHVU9VUyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0FOWV9DT05USUdVT1VTIiwgUHlCVUZfQU5ZX0NPTlRJR1VPVVMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9GVUxMIiwgUHlCVUZfRlVMTCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX0ZVTExfUk8iLCBQeUJVRl9GVUxMX1JPKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfUkVDT1JEUyIsIFB5QlVGX1JFQ09SRFMpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9SRUNPUkRTX1JPIiwgUHlCVUZfUkVDT1JEU19STyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1NUUklERUQiLCBQeUJVRl9TVFJJREVEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfU1RSSURFRF9STyIsIFB5QlVGX1NUUklERURfUk8pOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9DT05USUciLCBQeUJVRl9DT05USUcpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUJVRl9DT05USUdfUk8iLCBQeUJVRl9DT05USUdfUk8pOworCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5QlVGX1JFQUQiLCBQeUJVRl9SRUFEKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUHlCVUZfV1JJVEUiLCBQeUJVRl9XUklURSk7CisKKyAgICByZXR1cm4gbTsKK30KKworCisKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCmluZGV4IDk0YjZlNjcuLmFiMTFmNTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYwpAQCAtMjIsMTQgKzIyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiByYWlzZVRlc3RFcnJvcihjb25zdCBjaGFyKiB0ZXN0X25hbWUsIGNvbnN0IGNoYXIqIG1zZykKIHsKLSAgICBjaGFyIGJ1ZlsyMDQ4XTsKLQotICAgIGlmIChzdHJsZW4odGVzdF9uYW1lKSArIHN0cmxlbihtc2cpID4gc2l6ZW9mKGJ1ZikgLSA1MCkKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFRlc3RFcnJvciwgImludGVybmFsIGVycm9yIG1zZyB0b28gbGFyZ2UiKTsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJXM6ICVzIiwgdGVzdF9uYW1lLCBtc2cpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoVGVzdEVycm9yLCBidWYpOwotICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoVGVzdEVycm9yLCAiJXM6ICVzIiwgdGVzdF9uYW1lLCBtc2cpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC00MywxMSArMzYsOSBAQAogc2l6ZW9mX2Vycm9yKGNvbnN0IGNoYXIqIGZhdG5hbWUsIGNvbnN0IGNoYXIqIHR5cG5hbWUsCiAgICAgaW50IGV4cGVjdGVkLCBpbnQgZ290KQogewotICAgIGNoYXIgYnVmWzEwMjRdOwotICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgIiUuMjAwcyAjZGVmaW5lID09ICVkIGJ1dCBzaXplb2YoJS4yMDBzKSA9PSAlZCIsCisgICAgUHlFcnJfRm9ybWF0KFRlc3RFcnJvciwKKyAgICAgICAgIiVzICNkZWZpbmUgPT0gJWQgYnV0IHNpemVvZiglcykgPT0gJWQiLAogICAgICAgICBmYXRuYW1lLCBleHBlY3RlZCwgdHlwbmFtZSwgZ290KTsKLSAgICBQeUVycl9TZXRTdHJpbmcoVGVzdEVycm9yLCBidWYpOwogICAgIHJldHVybiAoUHlPYmplY3QqKU5VTEw7CiB9CiAKQEAgLTI4NCw5NSArMjc1LDYgQEAKIH0KIAogCi0vKiBJc3N1ZSAjNzM4NTogQ2hlY2sgdGhhdCBtZW1vcnl2aWV3KCkgZG9lcyBub3QgY3Jhc2gKLSAqICAgd2hlbiBiZl9nZXRidWZmZXIgcmV0dXJucyBhbiBlcnJvcgotICovCi0KLXN0YXRpYyBpbnQKLWJyb2tlbl9idWZmZXJfZ2V0YnVmZmVyKFB5T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKLXsKLSAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgIFRlc3RFcnJvciwKLSAgICAgICAgInRlc3RfYnJva2VuX21lbW9yeXZpZXc6IGV4cGVjdGVkIGVycm9yIGluIGJmX2dldGJ1ZmZlciIpOwotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIFB5QnVmZmVyUHJvY3MgbWVtb3J5dmlld3Rlc3Rlcl9hc19idWZmZXIgPSB7Ci0gICAgKGdldGJ1ZmZlcnByb2MpYnJva2VuX2J1ZmZlcl9nZXRidWZmZXIsICAgICAvKiBiZl9nZXRidWZmZXIgKi8KLSAgICAwLCAgICAgICAgICAvKiBiZl9yZWxlYXNlYnVmZmVyICovCi19OwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IF9NZW1vcnlWaWV3VGVzdGVyX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIm1lbW9yeXZpZXd0ZXN0ZXIiLCAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCi0gICAgc2l6ZW9mKFB5T2JqZWN0KSwgICAgICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0ZW0gc2l6ZSBmb3IgdmFyb2JqZWN0ICovCi0gICAgKGRlc3RydWN0b3IpUHlPYmplY3RfRGVsLCAvKiB0cF9kZWFsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgLyogdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KLSAgICAmbWVtb3J5dmlld3Rlc3Rlcl9hc19idWZmZXIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgIC8qIHRwX2ZsYWdzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCi19OwotCi1zdGF0aWMgUHlPYmplY3QqCi10ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3KFB5T2JqZWN0KiBzZWxmKQotewotICAgIFB5T2JqZWN0ICpvYmogPSBQeU9iamVjdF9OZXcoUHlPYmplY3QsICZfTWVtb3J5Vmlld1Rlc3Rlcl9UeXBlKTsKLSAgICBQeU9iamVjdCAqcmVzOwotCi0gICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFRlc3RFcnJvciwKLSAgICAgICAgICAgICJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3OiBmYWlsZWQgdG8gY3JlYXRlIG9iamVjdCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXMgPSBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdChvYmopOwotICAgIGlmIChyZXMgfHwgIVB5RXJyX09jY3VycmVkKCkpewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoCi0gICAgICAgICAgICBUZXN0RXJyb3IsCi0gICAgICAgICAgICAidGVzdF9icm9rZW5fbWVtb3J5dmlldzogbWVtb3J5dmlldygpIGRpZG4ndCByYWlzZSBhbiBFeGNlcHRpb24iKTsKLSAgICAgICAgUHlfWERFQ1JFRihyZXMpOwotICAgICAgICBQeV9ERUNSRUYob2JqKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBQeV9ERUNSRUYob2JqKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQotCiAvKiBUZXN0cyBvZiBQeUxvbmdfe0FzLCBGcm9tfXtVbnNpZ25lZCx9TG9uZygpLCBhbmQgKCNpZmRlZiBIQVZFX0xPTkdfTE9ORykKICAgIFB5TG9uZ197QXMsIEZyb219e1Vuc2lnbmVkLH1Mb25nTG9uZygpLgogCkBAIC03NzgsNiArNjgwLDY4IEBACiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CiAKKy8qIFRlc3QgdGhlIFB5TG9uZ19Bc3tTaXplLFNzaXplfV90IEFQSS4gQXQgcHJlc2VudCB0aGlzIGp1c3QgdGVzdHMgdGhhdAorICAgbm9uLWludGVnZXIgYXJndW1lbnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4gSXQgc2hvdWxkIGJlIGV4dGVuZGVkIHRvCisgICB0ZXN0IG92ZXJmbG93IGhhbmRsaW5nLgorICovCisKK3N0YXRpYyBQeU9iamVjdCAqCit0ZXN0X2xvbmdfYXNfc2l6ZV90KFB5T2JqZWN0ICpzZWxmKQoreworICAgIHNpemVfdCBvdXRfdTsKKyAgICBQeV9zc2l6ZV90IG91dF9zOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCisgICAgb3V0X3UgPSBQeUxvbmdfQXNTaXplX3QoUHlfTm9uZSk7CisgICAgaWYgKG91dF91ICE9IChzaXplX3QpLTEgfHwgIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU2l6ZV90KE5vbmUpIGRpZG4ndCBjb21wbGFpbiIpOworICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19zaXplX3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc1NpemVfdChOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICBvdXRfcyA9IFB5TG9uZ19Bc1NzaXplX3QoUHlfTm9uZSk7CisgICAgaWYgKG91dF9zICE9IChQeV9zc2l6ZV90KS0xIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfbG9uZ19hc19zaXplX3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5TG9uZ19Bc1NzaXplX3QoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX3NpemVfdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzU3NpemVfdChOb25lKSByYWlzZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aGluZyBvdGhlciB0aGFuIFR5cGVFcnJvciIpOworICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAvKiBQeV9JTkNSRUYoUHlfTm9uZSkgb21pdHRlZCAtIHdlIGFscmVhZHkgaGF2ZSBhIHJlZmVyZW5jZSB0byBpdC4gKi8KKyAgICByZXR1cm4gUHlfTm9uZTsKK30KKworLyogVGVzdCB0aGUgUHlMb25nX0FzRG91YmxlIEFQSS4gQXQgcHJlc2VudCB0aGlzIGp1c3QgdGVzdHMgdGhhdAorICAgbm9uLWludGVnZXIgYXJndW1lbnRzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KKyAqLworCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9sb25nX2FzX2RvdWJsZShQeU9iamVjdCAqc2VsZikKK3sKKyAgICBkb3VibGUgb3V0OworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCisgICAgb3V0ID0gUHlMb25nX0FzRG91YmxlKFB5X05vbmUpOworICAgIGlmIChvdXQgIT0gLTEuMCB8fCAhUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2xvbmdfYXNfZG91YmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQeUxvbmdfQXNEb3VibGUoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9sb25nX2FzX2RvdWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlMb25nX0FzRG91YmxlKE5vbmUpIHJhaXNlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgUHlFcnJfQ2xlYXIoKTsKKworICAgIC8qIFB5X0lOQ1JFRihQeV9Ob25lKSBvbWl0dGVkIC0gd2UgYWxyZWFkeSBoYXZlIGEgcmVmZXJlbmNlIHRvIGl0LiAqLworICAgIHJldHVybiBQeV9Ob25lOworfQorCiAvKiBUZXN0IHRoZSBMIGNvZGUgZm9yIFB5QXJnX1BhcnNlVHVwbGUuICBUaGlzIHNob3VsZCBkZWxpdmVyIGEgUFlfTE9OR19MT05HCiAgICBmb3IgYm90aCBsb25nIGFuZCBpbnQgYXJndW1lbnRzLiAgVGhlIHRlc3QgbWF5IGxlYWsgYSBsaXR0bGUgbWVtb3J5IGlmCiAgICBpdCBmYWlscy4KQEAgLTgzNyw3ICs4MDEsOCBAQAogfQogCiAvKiB0ZXN0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyAqLwotc3RhdGljIFB5T2JqZWN0ICpnZXRhcmdzX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX2tleXdvcmRzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiYXJnMSIsImFyZzIiLCJhcmczIiwiYXJnNCIsImFyZzUiLCBOVUxMfTsKICAgICBzdGF0aWMgY2hhciAqZm10PSIoaWkpaXwoaShpaSkpKGlpaSlpIjsKQEAgLTg1Miw2ICs4MTcsMjEgQEAKICAgICAgICAgaW50X2FyZ3NbNV0sIGludF9hcmdzWzZdLCBpbnRfYXJnc1s3XSwgaW50X2FyZ3NbOF0sIGludF9hcmdzWzldKTsKIH0KIAorLyogdGVzdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMga2V5d29yZC1vbmx5IGFyZ3VtZW50cyAqLworc3RhdGljIFB5T2JqZWN0ICoKK2dldGFyZ3Nfa2V5d29yZF9vbmx5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicmVxdWlyZWQiLCAib3B0aW9uYWwiLCAia2V5d29yZF9vbmx5IiwgTlVMTH07CisgICAgaW50IHJlcXVpcmVkID0gLTE7CisgICAgaW50IG9wdGlvbmFsID0gLTE7CisgICAgaW50IGtleXdvcmRfb25seSA9IC0xOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiaXxpJGkiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVxdWlyZWQsICZvcHRpb25hbCwgJmtleXdvcmRfb25seSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJpaWkiLCByZXF1aXJlZCwgb3B0aW9uYWwsIGtleXdvcmRfb25seSk7Cit9CisKIC8qIEZ1bmN0aW9ucyB0byBjYWxsIFB5QXJnX1BhcnNlVHVwbGUgd2l0aCBpbnRlZ2VyIGZvcm1hdCBjb2RlcywKICAgIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICovCkBAIC05MzYsNiArOTE2LDE1IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCh2YWx1ZSk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRhcmdzX3AoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCB2YWx1ZTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInAiLCAmdmFsdWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHZhbHVlKTsKK30KKwogI2lmZGVmIEhBVkVfTE9OR19MT05HCiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0YXJnc19MKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTEwMTIsNiArMTAwMSwxNSBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgorZ2V0YXJnc19jKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyIGM7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJjIiwgJmMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgmYywgMSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBnZXRhcmdzX3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGNoYXIgKnN0cjsKQEAgLTExOTcsNTEgKzExOTUsNzMgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXRlc3RfYnVnXzc0MTQoUHlPYmplY3QgKnNlbGYpCitwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIC8qIElzc3VlICM3NDE0OiBmb3IgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzLCAnQycgY29kZSB3YXNuJ3QgYmVpbmcKLSAgICAgICBza2lwcGVkIHByb3Blcmx5IGluIHNraXBpdGVtKCkgKi8KLSAgICBpbnQgYSA9IDAsIGIgPSAwLCByZXN1bHQ7Ci0gICAgY2hhciAqa3dsaXN0W10gPSB7ImEiLCAiYiIsIE5VTEx9OwotICAgIFB5T2JqZWN0ICp0dXBsZSA9IE5VTEwsICpkaWN0ID0gTlVMTCwgKmJfc3RyOworICAgIFB5T2JqZWN0ICpzdWJfYXJnczsKKyAgICBQeU9iamVjdCAqc3ViX2t3YXJnczsKKyAgICBjaGFyICpzdWJfZm9ybWF0OworICAgIFB5T2JqZWN0ICpzdWJfa2V5d29yZHM7CiAKLSAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KDApOwotICAgIGlmICh0dXBsZSA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0gICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0gICAgYl9zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiYiIpOwotICAgIGlmIChiX3N0ciA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWx1cmU7Ci0gICAgcmVzdWx0ID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImIiLCBiX3N0cik7Ci0gICAgUHlfREVDUkVGKGJfc3RyKTsKLSAgICBpZiAocmVzdWx0IDwgMCkKLSAgICAgICAgZ290byBmYWlsdXJlOworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBjaGFyICprZXl3b3Jkc1s4ICsgMV07IC8qIHNwYWNlIGZvciBOVUxMIGF0IGVuZCAqLworICAgIFB5T2JqZWN0ICpvOworICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRbOF07CiAKLSAgICByZXN1bHQgPSBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHModHVwbGUsIGRpY3QsICJ8Q0MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZhLCAmYik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGdvdG8gZmFpbHVyZTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogCi0gICAgaWYgKGEgIT0gMCkKLSAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X2J1Z183NDE0IiwKLSAgICAgICAgICAgICJDIGZvcm1hdCBjb2RlIG5vdCBza2lwcGVkIHByb3Blcmx5Iik7Ci0gICAgaWYgKGIgIT0gJ2InKQotICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfYnVnXzc0MTQiLAotICAgICAgICAgICAgIkMgZm9ybWF0IGNvZGUgcmV0dXJuZWQgd3JvbmcgdmFsdWUiKTsKKyAgICBkb3VibGUgYnVmZmVyc1s4XVs0XTsgLyogZG91YmxlIGVuc3VyZXMgYWxpZ25tZW50IHdoZXJlIG5lY2Vzc2FyeSAqLwogCi0gICAgUHlfREVDUkVGKGRpY3QpOwotICAgIFB5X0RFQ1JFRih0dXBsZSk7Ci0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3lPOnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyIsCisgICAgICAgICZzdWJfYXJncywgJnN1Yl9rd2FyZ3MsCisgICAgICAgICZzdWJfZm9ybWF0LCAmc3ViX2tleXdvcmRzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgZmFpbHVyZToKLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIFB5X1hERUNSRUYodHVwbGUpOwotICAgIHJldHVybiBOVUxMOworICAgIGlmICghKFB5TGlzdF9DaGVja0V4YWN0KHN1Yl9rZXl3b3JkcykgfHwgUHlUdXBsZV9DaGVja0V4YWN0KHN1Yl9rZXl3b3JkcykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInBhcnNlX3R1cGxlX2FuZF9rZXl3b3Jkczogc3ViX2tleXdvcmRzIG11c3QgYmUgZWl0aGVyIGxpc3Qgb3IgdHVwbGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KGJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7CisgICAgbWVtc2V0KGNvbnZlcnRlZCwgMCwgc2l6ZW9mKGNvbnZlcnRlZCkpOworICAgIG1lbXNldChrZXl3b3JkcywgMCwgc2l6ZW9mKGtleXdvcmRzKSk7CisKKyAgICBzaXplID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHN1Yl9rZXl3b3Jkcyk7CisgICAgaWYgKHNpemUgPiA4KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkczogdG9vIG1hbnkga2V5d29yZHMgaW4gc3ViX2tleXdvcmRzIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIG8gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc3ViX2tleXdvcmRzLCBpKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIobywgKHZvaWQgKikoY29udmVydGVkICsgaSkpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiBjb3VsZCBub3QgY29udmVydCBrZXl3b3Jkc1slemRdIHRvIG5hcnJvdyBzdHJpbmciLCBpKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBrZXl3b3Jkc1tpXSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGNvbnZlcnRlZFtpXSk7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHN1Yl9hcmdzLCBzdWJfa3dhcmdzLAorICAgICAgICBzdWJfZm9ybWF0LCBrZXl3b3JkcywKKyAgICAgICAgYnVmZmVycyArIDAsIGJ1ZmZlcnMgKyAxLCBidWZmZXJzICsgMiwgYnVmZmVycyArIDMsCisgICAgICAgIGJ1ZmZlcnMgKyA0LCBidWZmZXJzICsgNSwgYnVmZmVycyArIDYsIGJ1ZmZlcnMgKyA3KTsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIH0KKworZXhpdDoKKyAgICBzaXplID0gc2l6ZW9mKGNvbnZlcnRlZCkgLyBzaXplb2YoY29udmVydGVkWzBdKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X1hERUNSRUYoY29udmVydGVkW2ldKTsKKyAgICB9CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAotCiBzdGF0aWMgdm9sYXRpbGUgaW50IHg7CiAKIC8qIFRlc3QgdGhlIHUgYW5kIHUjIGNvZGVzIGZvciBQeUFyZ19QYXJzZVR1cGxlLiBNYXkgbGVhayBtZW1vcnkgaW4gY2FzZQpAQCAtMTI5Myw3ICsxMzEzLDcgQEAKIHRlc3RfWl9jb2RlKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0dXBsZSwgKm9iajsKLSAgICBQeV9VTklDT0RFICp2YWx1ZTEsICp2YWx1ZTI7CisgICAgY29uc3QgUHlfVU5JQ09ERSAqdmFsdWUxLCAqdmFsdWUyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHR1cGxlID0gUHlUdXBsZV9OZXcoMik7CkBAIC0xMzQ3LDYgKzEzNjcsNyBAQAogI2lmIGRlZmluZWQoU0laRU9GX1dDSEFSX1QpICYmIChTSVpFT0ZfV0NIQVJfVCA9PSA0KQogICAgIGNvbnN0IHdjaGFyX3Qgd3RleHRbMl0gPSB7KHdjaGFyX3QpMHgxMEFCQ0R1fTsKICAgICBzaXplX3Qgd3RleHRsZW4gPSAxOworICAgIGNvbnN0IHdjaGFyX3QgaW52YWxpZFsxXSA9IHsod2NoYXJfdCkweDExMDAwMHV9OwogI2Vsc2UKICAgICBjb25zdCB3Y2hhcl90IHd0ZXh0WzNdID0geyh3Y2hhcl90KTB4REJFQXUsICh3Y2hhcl90KTB4REZDRHV9OwogICAgIHNpemVfdCB3dGV4dGxlbiA9IDI7CkBAIC0xMzYzLDcgKzEzODQsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHdpZGUpICE9IFB5VW5pY29kZV9HRVRfU0laRSh1dGY4KSkgeworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3aWRlKSAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1dGY4KSkgewogICAgICAgICBQeV9ERUNSRUYod2lkZSk7CiAgICAgICAgIFB5X0RFQ1JFRih1dGY4KTsKICAgICAgICAgcmV0dXJuIHJhaXNlVGVzdEVycm9yKCJ0ZXN0X3dpZGVjaGFyIiwKQEAgLTEzODIsNiArMTQwMywyMyBAQAogCiAgICAgUHlfREVDUkVGKHdpZGUpOwogICAgIFB5X0RFQ1JFRih1dGY4KTsKKworI2lmIGRlZmluZWQoU0laRU9GX1dDSEFSX1QpICYmIChTSVpFT0ZfV0NIQVJfVCA9PSA0KQorICAgIHdpZGUgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGludmFsaWQsIDEpOworICAgIGlmICh3aWRlID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3Rfd2lkZWNoYXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoTFwiXFxVMDAxMTAwMDBcIiwgMSkgZGlkbid0IGZhaWwiKTsKKworICAgIHdpZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoaW52YWxpZCwgMSk7CisgICAgaWYgKHdpZGUgPT0gTlVMTCkKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF93aWRlY2hhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21Vbmljb2RlKExcIlxcVTAwMTEwMDAwXCIsIDEpIGRpZG4ndCBmYWlsIik7CisjZW5kaWYKKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCkBAIC0xNTc2LDcgKzE2MTQsNyBAQAogICAgICAgICAgICAgIHstMHhmZmZmZmZmTCwgMjgsIC0xfX07CiAgICAgaW50IGk7CiAKLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHRlc3RjYXNlcykgLyBzaXplb2Yoc3RydWN0IHRyaXBsZSk7ICsraSkgeworICAgIGZvciAoaSA9IDA7IGkgPCBQeV9BUlJBWV9MRU5HVEgodGVzdGNhc2VzKTsgKytpKSB7CiAgICAgICAgIFB5T2JqZWN0ICpwbG9uZyA9IFB5TG9uZ19Gcm9tTG9uZyh0ZXN0Y2FzZXNbaV0uaW5wdXQpOwogICAgICAgICBzaXplX3QgbmJpdHMgPSBfUHlMb25nX051bUJpdHMocGxvbmcpOwogICAgICAgICBpbnQgc2lnbiA9IF9QeUxvbmdfU2lnbihwbG9uZyk7CkBAIC0xNjMyLDYgKzE2NzAsMjkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3Rfc2V0X2V4Y19pbmZvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb3JpZ19leGM7CisgICAgUHlPYmplY3QgKm5ld190eXBlLCAqbmV3X3ZhbHVlLCAqbmV3X3RiOworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0YjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PTzp0ZXN0X3NldF9leGNfaW5mbyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdHlwZSwgJm5ld192YWx1ZSwgJm5ld190YikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlFcnJfR2V0RXhjSW5mbygmdHlwZSwgJnZhbHVlLCAmdGIpOworCisgICAgUHlfSU5DUkVGKG5ld190eXBlKTsKKyAgICBQeV9JTkNSRUYobmV3X3ZhbHVlKTsKKyAgICBQeV9JTkNSRUYobmV3X3RiKTsKKyAgICBQeUVycl9TZXRFeGNJbmZvKG5ld190eXBlLCBuZXdfdmFsdWUsIG5ld190Yik7CisKKyAgICBvcmlnX2V4YyA9IFB5VHVwbGVfUGFjaygzLCB0eXBlID8gdHlwZSA6IFB5X05vbmUsIHZhbHVlID8gdmFsdWUgOiBQeV9Ob25lLCB0YiA/IHRiIDogUHlfTm9uZSk7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKyAgICByZXR1cm4gb3JpZ19leGM7Cit9CiAKIHN0YXRpYyBpbnQgdGVzdF9ydW5fY291bnRlciA9IDA7CiAKQEAgLTE3ODYsMTMgKzE4NDcsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGNoYXIgKm1zZzsKLSAgICBzdGF0aWMgY29uc3QgUHlfVU5JQ09ERSBvbmVbXSA9IHsnMScsIDB9OwogCiAjZGVmaW5lIENIRUNLXzFfRk9STUFUKEZPUk1BVCwgVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChGT1JNQVQsIChUWVBFKTEpOyAgICAgICAgICAgICAgICAgXAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoUHlfVU5JQ09ERV9zdHJjbXAoUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSwgb25lKSkgeyAgICAgXAorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhyZXN1bHQsICIxIikpIHsgICAgIFwKICAgICAgICAgbXNnID0gRk9STUFUICIgZmFpbGVkIGF0IDEiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBnb3RvIEZhaWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTIzMTcsNiArMjM3NywxNCBAQAogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKIAogICAgIHN1YnN0YXRlID0gUHlfTmV3SW50ZXJwcmV0ZXIoKTsKKyAgICBpZiAoc3Vic3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBTaW5jZSBubyBuZXcgdGhyZWFkIHN0YXRlIHdhcyBjcmVhdGVkLCB0aGVyZSBpcyBubyBleGNlcHRpb24gdG8KKyAgICAgICAgICAgcHJvcGFnYXRlOyByYWlzZSBhIGZyZXNoIG9uZSBhZnRlciBzd2FwcGluZyBpbiB0aGUgb2xkIHRocmVhZAorICAgICAgICAgICBzdGF0ZS4gKi8KKyAgICAgICAgUHlUaHJlYWRTdGF0ZV9Td2FwKG1haW5zdGF0ZSk7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJzdWItaW50ZXJwcmV0ZXIgY3JlYXRpb24gZmFpbGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByID0gUHlSdW5fU2ltcGxlU3RyaW5nKGNvZGUpOwogICAgIFB5X0VuZEludGVycHJldGVyKHN1YnN0YXRlKTsKIApAQCAtMjMyNSw2ICsyMzkzLDQ0IEBACiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhyKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1lX3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1lX3QiLCAmb2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob2JqLCAmc2VjKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgdGltZV90IHNlYzsKKyAgICBsb25nIHVzZWM7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnB5dGltZV9vYmplY3RfdG9fdGltZXZhbCIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwob2JqLCAmc2VjLCAmdXNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJObCIsIF9QeUxvbmdfRnJvbVRpbWVfdChzZWMpLCB1c2VjKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rlc3RfcHl0aW1lX29iamVjdF90b190aW1lc3BlYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICB0aW1lX3Qgc2VjOworICAgIGxvbmcgbnNlYzsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk86cHl0aW1lX29iamVjdF90b190aW1lc3BlYyIsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKG9iaiwgJnNlYywgJm5zZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTmwiLCBfUHlMb25nX0Zyb21UaW1lX3Qoc2VjKSwgbnNlYyk7Cit9CisKIAogc3RhdGljIFB5TWV0aG9kRGVmIFRlc3RNZXRob2RzW10gPSB7CiAgICAgeyJyYWlzZV9leGNlcHRpb24iLCAgICAgICAgIHJhaXNlX2V4Y2VwdGlvbiwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yMzM0LDE0ICsyNDQwLDE1IEBACiAgICAgeyJ0ZXN0X2xpc3RfYXBpIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xpc3RfYXBpLCAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfZGljdF9pdGVyYXRpb24iLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfZGljdF9pdGVyYXRpb24sTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sYXp5X2hhc2hfaW5oZXJpdGFuY2UiLCAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xhenlfaGFzaF9pbmhlcml0YW5jZSxNRVRIX05PQVJHU30sCi0gICAgeyJ0ZXN0X2Jyb2tlbl9tZW1vcnl2aWV3IiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfYnJva2VuX21lbW9yeXZpZXcsTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9sb25nX2FwaSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FwaSwgICAgICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfYW5kX292ZXJmbG93IiwgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hbmRfb3ZlcmZsb3csCiAgICAgIE1FVEhfTk9BUkdTfSwKKyAgICB7InRlc3RfbG9uZ19hc19kb3VibGUiLCAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbG9uZ19hc19kb3VibGUsTUVUSF9OT0FSR1N9LAorICAgIHsidGVzdF9sb25nX2FzX3NpemVfdCIsICAgICAoUHlDRnVuY3Rpb24pdGVzdF9sb25nX2FzX3NpemVfdCxNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X2xvbmdfbnVtYml0cyIsICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbnVtYml0cywgIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfa19jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3Rfa19jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9lbXB0eV9hcmdwYXJzZSIsIChQeUNGdW5jdGlvbil0ZXN0X2VtcHR5X2FyZ3BhcnNlLE1FVEhfTk9BUkdTfSwKLSAgICB7InRlc3RfYnVnXzc0MTQiLCAoUHlDRnVuY3Rpb24pdGVzdF9idWdfNzQxNCwgTUVUSF9OT0FSR1N9LAorICAgIHsicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwgcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidGVzdF9udWxsX3N0cmluZ3MiLCAgICAgICAoUHlDRnVuY3Rpb24pdGVzdF9udWxsX3N0cmluZ3MsICBNRVRIX05PQVJHU30sCiAgICAgeyJ0ZXN0X3N0cmluZ19mcm9tX2Zvcm1hdCIsIChQeUNGdW5jdGlvbil0ZXN0X3N0cmluZ19mcm9tX2Zvcm1hdCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF93aXRoX2RvY3N0cmluZyIsIChQeUNGdW5jdGlvbil0ZXN0X3dpdGhfZG9jc3RyaW5nLCBNRVRIX05PQVJHUywKQEAgLTIzNTIsNiArMjQ1OSw4IEBACiAgICAgeyJnZXRhcmdzX3R1cGxlIiwgICAgICAgICAgIGdldGFyZ3NfdHVwbGUsICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2tleXdvcmRzIiwgKFB5Q0Z1bmN0aW9uKWdldGFyZ3Nfa2V5d29yZHMsCiAgICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCisgICAgeyJnZXRhcmdzX2tleXdvcmRfb25seSIsIChQeUNGdW5jdGlvbilnZXRhcmdzX2tleXdvcmRfb25seSwKKyAgICAgIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTfSwKICAgICB7ImdldGFyZ3NfYiIsICAgICAgICAgICAgICAgZ2V0YXJnc19iLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfQiIsICAgICAgICAgICAgICAgZ2V0YXJnc19CLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfaCIsICAgICAgICAgICAgICAgZ2V0YXJnc19oLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzNjEsNiArMjQ3MCw3IEBACiAgICAgeyJnZXRhcmdzX2kiLCAgICAgICAgICAgICAgIGdldGFyZ3NfaSwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX2wiLCAgICAgICAgICAgICAgIGdldGFyZ3NfbCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX24iLCAgICAgICAgICAgICAgIGdldGFyZ3NfbiwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJnZXRhcmdzX3AiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcCwgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICB7ImdldGFyZ3NfTCIsICAgICAgICAgICAgICAgZ2V0YXJnc19MLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKICAgICB7ImdldGFyZ3NfSyIsICAgICAgICAgICAgICAgZ2V0YXJnc19LLCAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTIzNjksNiArMjQ3OSw3IEBACiAgICAgICAgIChQeUNGdW5jdGlvbil0ZXN0X2xvbmdfbG9uZ19hbmRfb3ZlcmZsb3csIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3RfTF9jb2RlIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfTF9jb2RlLCAgICAgICAgTUVUSF9OT0FSR1N9LAogI2VuZGlmCisgICAgeyJnZXRhcmdzX2MiLCAgICAgICAgICAgICAgIGdldGFyZ3NfYywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3MiLCAgICAgICAgICAgICAgIGdldGFyZ3NfcywgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3Nfc3RhciIsICAgICAgICAgIGdldGFyZ3Nfc19zdGFyLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRhcmdzX3NfaGFzaCIsICAgICAgICAgIGdldGFyZ3Nfc19oYXNoLCAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCkBAIC0yNDA0LDYgKzI1MTUsNyBAQAogI2VuZGlmCiAgICAgeyJ0cmFjZWJhY2tfcHJpbnQiLCAgICAgICAgIHRyYWNlYmFja19wcmludCwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJleGNlcHRpb25fcHJpbnQiLCAgICAgICAgIGV4Y2VwdGlvbl9wcmludCwgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJzZXRfZXhjX2luZm8iLCAgICAgICAgICAgIHRlc3Rfc2V0X2V4Y19pbmZvLCAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJhcmdwYXJzaW5nIiwgICAgICAgICAgICAgIGFyZ3BhcnNpbmcsICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJjb2RlX25ld2VtcHR5IiwgICAgICAgICAgIGNvZGVfbmV3ZW1wdHksICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJtYWtlX2V4Y2VwdGlvbl93aXRoX2RvYyIsIChQeUNGdW5jdGlvbiltYWtlX2V4Y2VwdGlvbl93aXRoX2RvYywKQEAgLTI0MTIsNiArMjUyNCw5IEBACiAgICAgIE1FVEhfTk9BUkdTfSwKICAgICB7ImNyYXNoX25vX2N1cnJlbnRfdGhyZWFkIiwgKFB5Q0Z1bmN0aW9uKWNyYXNoX25vX2N1cnJlbnRfdGhyZWFkLCBNRVRIX05PQVJHU30sCiAgICAgeyJydW5faW5fc3ViaW50ZXJwIiwgICAgICAgIHJ1bl9pbl9zdWJpbnRlcnAsICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHU30sCisgICAgeyJweXRpbWVfb2JqZWN0X3RvX3RpbWVfdCIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1lX3QsICBNRVRIX1ZBUkFSR1N9LAorICAgIHsicHl0aW1lX29iamVjdF90b190aW1ldmFsIiwgdGVzdF9weXRpbWVfb2JqZWN0X3RvX3RpbWV2YWwsICBNRVRIX1ZBUkFSR1N9LAorICAgIHsicHl0aW1lX29iamVjdF90b190aW1lc3BlYyIsIHRlc3RfcHl0aW1lX29iamVjdF90b190aW1lc3BlYywgIE1FVEhfVkFSQVJHU30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0yNTk0LDcgKzI3MDksNiBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIFB5X1RZUEUoJl9IYXNoSW5oZXJpdGFuY2VUZXN0ZXJfVHlwZSk9JlB5VHlwZV9UeXBlOwotICAgIFB5X1RZUEUoJl9NZW1vcnlWaWV3VGVzdGVyX1R5cGUpPSZQeVR5cGVfVHlwZTsKIAogICAgIFB5X1RZUEUoJnRlc3Rfc3RydWN0bWVtYmVyc1R5cGUpPSZQeVR5cGVfVHlwZTsKICAgICBQeV9JTkNSRUYoJnRlc3Rfc3RydWN0bWVtYmVyc1R5cGUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGhyZWFkbW9kdWxlLmMgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwppbmRleCA1Zjc2YTdiLi42M2VmZGMzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYworKysgYi9Nb2R1bGVzL190aHJlYWRtb2R1bGUuYwpAQCAtMjMsNiArMjMsNyBAQAogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeVRocmVhZF90eXBlX2xvY2sgbG9ja19sb2NrOwogICAgIFB5T2JqZWN0ICppbl93ZWFrcmVmbGlzdDsKKyAgICBjaGFyIGxvY2tlZDsgLyogZm9yIHNhbml0eSBjaGVja2luZyAqLwogfSBsb2Nrb2JqZWN0OwogCiBzdGF0aWMgdm9pZApAQCAtMzIsOSArMzMsOCBAQAogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBzZWxmKTsKICAgICBpZiAoc2VsZi0+bG9ja19sb2NrICE9IE5VTEwpIHsKICAgICAgICAgLyogVW5sb2NrIHRoZSBsb2NrIHNvIGl0J3Mgc2FmZSB0byBmcmVlIGl0ICovCi0gICAgICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrX2xvY2ssIDApOwotICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKLQorICAgICAgICBpZiAoc2VsZi0+bG9ja2VkKQorICAgICAgICAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKHNlbGYtPmxvY2tfbG9jayk7CiAgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrX2xvY2spOwogICAgIH0KICAgICBQeU9iamVjdF9EZWwoc2VsZik7CkBAIC01Myw2ICs1Myw3IEBACiAgICAgX1B5VGltZV90aW1ldmFsIGN1cnRpbWU7CiAgICAgX1B5VGltZV90aW1ldmFsIGVuZHRpbWU7CiAKKwogICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7CiAgICAgICAgIF9QeVRpbWVfZ2V0dGltZW9mZGF5KCZlbmR0aW1lKTsKICAgICAgICAgZW5kdGltZS50dl9zZWMgKz0gbWljcm9zZWNvbmRzIC8gKDEwMDAgKiAxMDAwKTsKQEAgLTYxLDkgKzYyLDEzIEBACiAKIAogICAgIGRvIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIG1pY3Jvc2Vjb25kcywgMSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIC8qIGZpcnN0IGEgc2ltcGxlIG5vbi1ibG9ja2luZyB0cnkgd2l0aG91dCByZWxlYXNpbmcgdGhlIEdJTCAqLworICAgICAgICByID0gUHlUaHJlYWRfYWNxdWlyZV9sb2NrX3RpbWVkKGxvY2ssIDAsIDApOworICAgICAgICBpZiAociA9PSBQWV9MT0NLX0ZBSUxVUkUgJiYgbWljcm9zZWNvbmRzICE9IDApIHsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIHIgPSBQeVRocmVhZF9hY3F1aXJlX2xvY2tfdGltZWQobG9jaywgbWljcm9zZWNvbmRzLCAxKTsKKyAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgICAgIH0gCiAKICAgICAgICAgaWYgKHIgPT0gUFlfTE9DS19JTlRSKSB7CiAgICAgICAgICAgICAvKiBSdW4gc2lnbmFsIGhhbmRsZXJzIGlmIHdlIHdlcmUgaW50ZXJydXB0ZWQuICBQcm9wYWdhdGUKQEAgLTc1LDcgKzgwLDcgQEAKIAogICAgICAgICAgICAgLyogSWYgd2UncmUgdXNpbmcgYSB0aW1lb3V0LCByZWNvbXB1dGUgdGhlIHRpbWVvdXQgYWZ0ZXIgcHJvY2Vzc2luZwogICAgICAgICAgICAgICogc2lnbmFscywgc2luY2UgdGhvc2UgY2FuIHRha2UgdGltZS4gICovCi0gICAgICAgICAgICBpZiAobWljcm9zZWNvbmRzID49IDApIHsKKyAgICAgICAgICAgIGlmIChtaWNyb3NlY29uZHMgPiAwKSB7CiAgICAgICAgICAgICAgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXkoJmN1cnRpbWUpOwogICAgICAgICAgICAgICAgIG1pY3Jvc2Vjb25kcyA9ICgoZW5kdGltZS50dl9zZWMgLSBjdXJ0aW1lLnR2X3NlYykgKiAxMDAwMDAwICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZHRpbWUudHZfdXNlYyAtIGN1cnRpbWUudHZfdXNlYykpOwpAQCAtMTM0LDYgKzEzOSw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChyID09IFBZX0xPQ0tfQUNRVUlSRUQpCisgICAgICAgIHNlbGYtPmxvY2tlZCA9IDE7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyID09IFBZX0xPQ0tfQUNRVUlSRUQpOwogfQogCkBAIC0xNTIsMTMgKzE1OSwxMyBAQAogbG9ja19QeVRocmVhZF9yZWxlYXNlX2xvY2sobG9ja29iamVjdCAqc2VsZikKIHsKICAgICAvKiBTYW5pdHkgY2hlY2s6IHRoZSBsb2NrIG11c3QgYmUgbG9ja2VkICovCi0gICAgaWYgKFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrX2xvY2ssIDApKSB7Ci0gICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOworICAgIGlmICghc2VsZi0+bG9ja2VkKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhUaHJlYWRFcnJvciwgInJlbGVhc2UgdW5sb2NrZWQgbG9jayIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2soc2VsZi0+bG9ja19sb2NrKTsKKyAgICBzZWxmLT5sb2NrZWQgPSAwOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KQEAgLTE3NCwxMSArMTgxLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBsb2NrX2xvY2tlZF9sb2NrKGxvY2tvYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKFB5VGhyZWFkX2FjcXVpcmVfbG9jayhzZWxmLT5sb2NrX2xvY2ssIDApKSB7Ci0gICAgICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhzZWxmLT5sb2NrX2xvY2spOwotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDBMKTsKLSAgICB9Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxTCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZylzZWxmLT5sb2NrZWQpOwogfQogCiBQeURvY19TVFJWQVIobG9ja2VkX2RvYywKQEAgLTMxMiwxNCArMzE1LDcgQEAKICAgICAgICAgc2VsZi0+cmxvY2tfY291bnQgPSBjb3VudDsKICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgfQotCi0gICAgaWYgKHNlbGYtPnJsb2NrX2NvdW50ID4gMCB8fAotICAgICAgICAhUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHNlbGYtPnJsb2NrX2xvY2ssIDApKSB7Ci0gICAgICAgIGlmIChtaWNyb3NlY29uZHMgPT0gMCkgewotICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwotICAgICAgICB9Ci0gICAgICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPnJsb2NrX2xvY2ssIG1pY3Jvc2Vjb25kcyk7Ci0gICAgfQorICAgIHIgPSBhY3F1aXJlX3RpbWVkKHNlbGYtPnJsb2NrX2xvY2ssIG1pY3Jvc2Vjb25kcyk7CiAgICAgaWYgKHIgPT0gUFlfTE9DS19BQ1FVSVJFRCkgewogICAgICAgICBhc3NlcnQoc2VsZi0+cmxvY2tfY291bnQgPT0gMCk7CiAgICAgICAgIHNlbGYtPnJsb2NrX293bmVyID0gdGlkOwpAQCAtNDEzLDYgKzQwOSwxMiBAQAogICAgIGxvbmcgb3duZXI7CiAgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKIAorICAgIGlmIChzZWxmLT5ybG9ja19jb3VudCA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IHJlbGVhc2UgdW4tYWNxdWlyZWQgbG9jayIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBvd25lciA9IHNlbGYtPnJsb2NrX293bmVyOwogICAgIGNvdW50ID0gc2VsZi0+cmxvY2tfY291bnQ7CiAgICAgc2VsZi0+cmxvY2tfY291bnQgPSAwOwpAQCAtNTQxLDYgKzU0Myw3IEBACiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgc2VsZi0+bG9ja19sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIHNlbGYtPmxvY2tlZCA9IDA7CiAgICAgc2VsZi0+aW5fd2Vha3JlZmxpc3QgPSBOVUxMOwogICAgIGlmIChzZWxmLT5sb2NrX2xvY2sgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CkBAIC0xMjI1LDExICsxMjI4LDkgQEAKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRocmVhZF9tZXRob2RzW10gPSB7CiAgICAgeyJzdGFydF9uZXdfdGhyZWFkIiwgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X2RvY30sCisgICAgIE1FVEhfVkFSQVJHUywgc3RhcnRfbmV3X2RvY30sCiAgICAgeyJzdGFydF9uZXciLCAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbmV3X2RvY30sCisgICAgIE1FVEhfVkFSQVJHUywgc3RhcnRfbmV3X2RvY30sCiAgICAgeyJhbGxvY2F0ZV9sb2NrIiwgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfYWxsb2NhdGVfbG9jaywKICAgICAgTUVUSF9OT0FSR1MsIGFsbG9jYXRlX2RvY30sCiAgICAgeyJhbGxvY2F0ZSIsICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfUHlUaHJlYWRfYWxsb2NhdGVfbG9jaywKQEAgLTEyNDUsOCArMTI0Niw3IEBACiAgICAgeyJfY291bnQiLCAgICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfX2NvdW50LAogICAgICBNRVRIX05PQVJHUywgX2NvdW50X2RvY30sCiAgICAgeyJzdGFja19zaXplIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbil0aHJlYWRfc3RhY2tfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tfc2l6ZV9kb2N9LAorICAgICBNRVRIX1ZBUkFSR1MsIHN0YWNrX3NpemVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMzEwLDcgKzEzMTAsOSBAQAogCiAgICAgLyogQWRkIGEgc3ltYm9saWMgY29uc3RhbnQgKi8KICAgICBkID0gUHlNb2R1bGVfR2V0RGljdChtKTsKLSAgICBUaHJlYWRFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3RocmVhZC5lcnJvciIsIE5VTEwsIE5VTEwpOworICAgIFRocmVhZEVycm9yID0gUHlFeGNfUnVudGltZUVycm9yOworICAgIFB5X0lOQ1JFRihUaHJlYWRFcnJvcik7CisKICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiZXJyb3IiLCBUaHJlYWRFcnJvcik7CiAgICAgTG9ja3R5cGUudHBfZG9jID0gbG9ja19kb2M7CiAgICAgUHlfSU5DUkVGKCZMb2NrdHlwZSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190aW1lLmMgYi9Nb2R1bGVzL190aW1lLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwY2M4ZTEuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9fdGltZS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotI2luY2x1ZGUgIlB5dGhvbi5oIgotI2luY2x1ZGUgIl90aW1lLmgiCi0KLS8qIEV4cG9zZWQgaW4gdGltZWZ1bmNzLmguICovCi10aW1lX3QKLV9QeVRpbWVfRG91YmxlVG9UaW1ldChkb3VibGUgeCkKLXsKLSAgICB0aW1lX3QgcmVzdWx0OwotICAgIGRvdWJsZSBkaWZmOwotCi0gICAgcmVzdWx0ID0gKHRpbWVfdCl4OwotICAgIC8qIEhvdyBtdWNoIGluZm8gZGlkIHdlIGxvc2U/ICB0aW1lX3QgbWF5IGJlIGFuIGludGVncmFsIG9yCi0gICAgICogZmxvYXRpbmcgdHlwZSwgYW5kIHdlIGRvbid0IGtub3cgd2hpY2guICBJZiBpdCdzIGludGVncmFsLAotICAgICAqIHdlIGRvbid0IGtub3cgd2hldGhlciBDIHRydW5jYXRlcywgcm91bmRzLCByZXR1cm5zIHRoZSBmbG9vciwKLSAgICAgKiBldGMuICBJZiB3ZSBsb3N0IGEgc2Vjb25kIG9yIG1vcmUsIHRoZSBDIHJvdW5kaW5nIGlzCi0gICAgICogdW5yZWFzb25hYmxlLCBvciB0aGUgaW5wdXQganVzdCBkb2Vzbid0IGZpdCBpbiBhIHRpbWVfdDsKLSAgICAgKiBjYWxsIGl0IGFuIGVycm9yIHJlZ2FyZGxlc3MuICBOb3RlIHRoYXQgdGhlIG9yaWdpbmFsIGNhc3QgdG8KLSAgICAgKiB0aW1lX3QgY2FuIGNhdXNlIGEgQyBlcnJvciB0b28sIGJ1dCBub3RoaW5nIHdlIGNhbiBkbyB0bwotICAgICAqIHdvcmsgYXJvdW5kIHRoYXQuCi0gICAgICovCi0gICAgZGlmZiA9IHggLSAoZG91YmxlKXJlc3VsdDsKLSAgICBpZiAoZGlmZiA8PSAtMS4wIHx8IGRpZmYgPj0gMS4wKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIHBsYXRmb3JtIHRpbWVfdCIpOwotICAgICAgICByZXN1bHQgPSAodGltZV90KS0xOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGltZS5oIGIvTW9kdWxlcy9fdGltZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTY1OTNiLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvX3RpbWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotLyogWFhYOiBJdCBpcyBwcm9iYWJseSBiZXN0IHRvIG1vdmUgdGltZWZ1bmNzLmggY29udGVudCBpbiBoZXJlLCBhbmQKLSAgIHJlbW92ZSBpdCBidXQgdXNlciBjb2RlIG1heSByZWx5IG9uIGl0LiAqLwotI2luY2x1ZGUgInRpbWVmdW5jcy5oIgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGtpbnRlci5jIGIvTW9kdWxlcy9fdGtpbnRlci5jCmluZGV4IDIzOTA2ZGUuLjcwZjQ3MDMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3RraW50ZXIuYworKysgYi9Nb2R1bGVzL190a2ludGVyLmMKQEAgLTgwLDE4ICs4MCw2IEBACiAjZXJyb3IgIlRrIG9sZGVyIHRoYW4gOC4zLjEgbm90IHN1cHBvcnRlZCIKICNlbmRpZgogCi0vKiBVbmljb2RlIGNvbnZlcnNpb24gYXNzdW1lcyB0aGF0IFRjbF9VbmlDaGFyIGlzIHR3byBieXRlcy4KLSAgIFdlIGNhbm5vdCB0ZXN0IHRoaXMgZGlyZWN0bHksIHNvIHdlIHRlc3QgVVRGLTggc2l6ZSBpbnN0ZWFkLAotICAgZXhwZWN0aW5nIHRoYXQgVENMX1VURl9NQVggaXMgY2hhbmdlZCBpZiBUY2wgZXZlciBzdXBwb3J0cwotICAgZWl0aGVyIFVURi0xNiBvciBVQ1MtNC4KLSAgIFJlZGhhdCA4IHNldHMgVENMX1VURl9NQVggdG8gNiwgYW5kIHVzZXMgd2NoYXJfdCBmb3IKLSAgIFRjbF9VbmljaGFyLiBUaGlzIGlzIGFsc28gb2sgYXMgbG9uZyBhcyBQeXRob24gdXNlcyBVQ1MtNCwKLSAgIGFzIHdlbGwuCi0qLwotI2lmIFRDTF9VVEZfTUFYICE9IDMgJiYgIShkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkgJiYgVENMX1VURl9NQVg9PTYpCi0jZXJyb3IgInVuc3VwcG9ydGVkIFRjbCBjb25maWd1cmF0aW9uIgotI2VuZGlmCi0KICNpZiAhKGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSkKICNkZWZpbmUgSEFWRV9DUkVBVEVGSUxFSEFORExFUgogI2VuZGlmCkBAIC05NzUsNDAgKzk2Myw0NiBAQAogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKmluYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpOwotICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUodmFsdWUpOwotICAgICAgICAvKiBUaGlzICNpZmRlZiBhc3N1bWVzIHRoYXQgVGNsIHVzZXMgVUNTLTIuCi0gICAgICAgICAgIFNlZSBUQ0xfVVRGX01BWCB0ZXN0IGFib3ZlLiAqLwotI2lmIGRlZmluZWQoUHlfVU5JQ09ERV9XSURFKSAmJiBUQ0xfVVRGX01BWCA9PSAzCisgICAgICAgIHZvaWQgKmluYnVmOworICAgICAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgICAgIGludCBraW5kOwogICAgICAgICBUY2xfVW5pQ2hhciAqb3V0YnVmID0gTlVMTDsKICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBzaXplX3QgYWxsb2NzaXplID0gKChzaXplX3Qpc2l6ZSkgKiBzaXplb2YoVGNsX1VuaUNoYXIpOwotICAgICAgICBpZiAoYWxsb2NzaXplID49IHNpemUpCi0gICAgICAgICAgICBvdXRidWYgPSAoVGNsX1VuaUNoYXIqKWNrYWxsb2MoYWxsb2NzaXplKTsKKyAgICAgICAgc2l6ZV90IGFsbG9jc2l6ZTsKKworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGluYnVmID0gUHlVbmljb2RlX0RBVEEodmFsdWUpOworICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodmFsdWUpOworICAgICAgICBhbGxvY3NpemUgPSAoKHNpemVfdClzaXplKSAqIHNpemVvZihUY2xfVW5pQ2hhcik7CisgICAgICAgIG91dGJ1ZiA9IChUY2xfVW5pQ2hhciopY2thbGxvYyhhbGxvY3NpemUpOwogICAgICAgICAvKiBFbHNlIG92ZXJmbG93IG9jY3VycmVkLCBhbmQgd2UgdGFrZSB0aGUgbmV4dCBleGl0ICovCiAgICAgICAgIGlmICghb3V0YnVmKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgaWYgKGluYnVmW2ldID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBpbmJ1ZiwgaSk7CisgICAgICAgICAgICAvKiBXZSBjYW5ub3QgdGVzdCBmb3Igc2l6ZW9mKFRjbF9VbmlDaGFyKSBkaXJlY3RseSwKKyAgICAgICAgICAgICAgIHNvIHdlIHRlc3QgZm9yIFVURi04IHNpemUgaW5zdGVhZC4gKi8KKyNpZiBUQ0xfVVRGX01BWCA9PSAzCisgICAgICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewogICAgICAgICAgICAgICAgIC8qIFRjbCBkb2Vzbid0IGRvIFVURi0xNiwgeWV0LiAqLwogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIFUrJXggaXMgYWJvdmUgdGhlIHJhbmdlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihVKzAwMDAtVStGRkZGKSBhbGxvd2VkIGJ5IFRjbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluYnVmW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gpOwogICAgICAgICAgICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvdXRidWYpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0YnVmW2ldID0gaW5idWZbaV07CisjZW5kaWYKKyAgICAgICAgICAgIG91dGJ1ZltpXSA9IGNoOwogICAgICAgICB9CiAgICAgICAgIHJlc3VsdCA9IFRjbF9OZXdVbmljb2RlT2JqKG91dGJ1Ziwgc2l6ZSk7CiAgICAgICAgIGNrZnJlZShGUkVFQ0FTVCBvdXRidWYpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIFRjbF9OZXdVbmljb2RlT2JqKGluYnVmLCBzaXplKTsKLSNlbmRpZgotCiAgICAgfQogICAgIGVsc2UgaWYoUHlUY2xPYmplY3RfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFRjbF9PYmogKnYgPSAoKFB5VGNsT2JqZWN0Kil2YWx1ZSktPnZhbHVlOwpAQCAtMTA5MCwyNCArMTA4NCwxNCBAQAogICAgIH0KIAogICAgIGlmICh2YWx1ZS0+dHlwZVB0ciA9PSBhcHAtPlN0cmluZ1R5cGUpIHsKLSNpZiBkZWZpbmVkKFB5X1VOSUNPREVfV0lERSkgJiYgVENMX1VURl9NQVg9PTMKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICAgICAgaW50IHNpemU7Ci0gICAgICAgIFRjbF9VbmlDaGFyICppbnB1dDsKLSAgICAgICAgUHlfVU5JQ09ERSAqb3V0cHV0OwotCi0gICAgICAgIHNpemUgPSBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSk7Ci0gICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKTsKLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaW5wdXQgPSBUY2xfR2V0VW5pY29kZSh2YWx1ZSk7Ci0gICAgICAgIG91dHB1dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgICAgIHdoaWxlIChzaXplLS0pCi0gICAgICAgICAgICAqb3V0cHV0KysgPSAqaW5wdXQrKzsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyNpZiBUQ0xfVVRGX01BWD09MworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YSgKKyAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9LSU5ELCBUY2xfR2V0VW5pY29kZSh2YWx1ZSksCisgICAgICAgICAgICBUY2xfR2V0Q2hhckxlbmd0aCh2YWx1ZSkpOwogI2Vsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShUY2xfR2V0VW5pY29kZSh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGNsX0dldENoYXJMZW5ndGgodmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoCisgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfS0lORCwgVGNsX0dldFVuaWNvZGUodmFsdWUpLAorICAgICAgICAgICAgVGNsX0dldENoYXJMZW5ndGgodmFsdWUpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTM1OSw2ICsxMzQzLDExIEBACiAgICAgY2hhciAqY21kOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCisgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAiZ2xvYmFsY2FsbCBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBDSEVDS19UQ0xfQVBQQVJUTUVOVDsKIAogICAgIGNtZCAgPSBNZXJnZShhcmdzKTsKQEAgLTE0MDgsNiArMTM5NywxMSBAQAogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIGludCBlcnI7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJnbG9iYWxldmFsIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjQiLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpnbG9iYWxldmFsIiwgJnNjcmlwdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xOTcwLDkgKzE5NjQsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBUa2FwcF9NZXJnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqcyA9IE1lcmdlKGFyZ3MpOworICAgIGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7CiAKKyAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJtZXJnZSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gMy40IiwKKyAgICAgICAgICAgICAgICAgICAgIDEpIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzID0gTWVyZ2UoYXJncyk7CisKICAgICBpZiAocykgewogICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzKTsKICAgICAgICAgY2tmcmVlKHMpOwpAQCAtMjAwNyw3ICsyMDA4LDcgQEAKIFB5dGhvbkNtZChDbGllbnREYXRhIGNsaWVudERhdGEsIFRjbF9JbnRlcnAgKmludGVycCwgaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBQeXRob25DbWRfQ2xpZW50RGF0YSAqZGF0YSA9IChQeXRob25DbWRfQ2xpZW50RGF0YSAqKWNsaWVudERhdGE7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqYXJnLCAqcmVzOworICAgIFB5T2JqZWN0ICpmdW5jLCAqYXJnLCAqcmVzOwogICAgIGludCBpLCBydjsKICAgICBUY2xfT2JqICpvYmpfcmVzOwogCkBAIC0yMDE2LDcgKzIwMTcsNiBAQAogICAgIC8qIFRCRDogbm8gZXJyb3IgY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBrbm93LCB2aWEgdGhlCiAgICAgICogVGthcHBfQ3JlYXRlQ29tbWFuZCgpIHRoYXQgdGhlIGNsaWVudCBkYXRhIGlzIGEgdHdvLXR1cGxlCiAgICAgICovCi0gICAgc2VsZiA9IGRhdGEtPnNlbGY7CiAgICAgZnVuYyA9IGRhdGEtPmZ1bmM7CiAKICAgICAvKiBDcmVhdGUgYXJndW1lbnQgbGlzdCAoYXJndjEsIC4uLiwgYXJndk4pICovCkBAIC0yNDE1LDExICsyNDE1LDkgQEAKIFRrdHRfUmVwcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBUa3R0T2JqZWN0ICp2ID0gKFRrdHRPYmplY3QgKilzZWxmOwotICAgIGNoYXIgYnVmWzEwMF07Ci0KLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICI8dGt0aW1lcnRva2VuIGF0ICVwJXM+IiwgdiwKLSAgICAgICAgICAgICAgICAgICAgdi0+ZnVuYyA9PSBOVUxMID8gIiwgaGFuZGxlciBkZWxldGVkIiA6ICIiKTsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjx0a3RpbWVydG9rZW4gYXQgJXAlcz4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LT5mdW5jID09IE5VTEwgPyAiLCBoYW5kbGVyIGRlbGV0ZWQiIDogIiIpOwogfQogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFRrdHRfVHlwZSA9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL193aW5hcGkuYyBiL01vZHVsZXMvX3dpbmFwaS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNzQ4OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL193aW5hcGkuYwpAQCAtMCwwICsxLDEzMjggQEAKKy8qCisgKiBTdXBwb3J0IHJvdXRpbmVzIGZyb20gdGhlIFdpbmRvd3MgQVBJCisgKgorICogVGhpcyBtb2R1bGUgd2FzIG9yaWdpbmFsbHkgY3JlYXRlZCBieSBtZXJnaW5nIFBDL19zdWJwcm9jZXNzLmMgd2l0aAorICogTW9kdWxlcy9fbXVsdGlwcm9jZXNzaW5nL3dpbjMyX2Z1bmN0aW9ucy5jLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwNCBieSBGcmVkcmlrIEx1bmRoIDxmcmVkcmlrQHB5dGhvbndhcmUuY29tPgorICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IFNlY3JldCBMYWJzIEFCLCBodHRwOi8vd3d3LnB5dGhvbndhcmUuY29tCisgKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgUGV0ZXIgQXN0cmFuZCA8YXN0cmFuZEBseXNhdG9yLmxpdS5zZT4KKyAqCisgKiBCeSBvYnRhaW5pbmcsIHVzaW5nLCBhbmQvb3IgY29weWluZyB0aGlzIHNvZnR3YXJlIGFuZC9vciBpdHMKKyAqIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiwgeW91IGFncmVlIHRoYXQgeW91IGhhdmUgcmVhZCwgdW5kZXJzdG9vZCwKKyAqIGFuZCB3aWxsIGNvbXBseSB3aXRoIHRoZSBmb2xsb3dpbmcgdGVybXMgYW5kIGNvbmRpdGlvbnM6CisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBhbmQKKyAqIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGFuZCB3aXRob3V0IGZlZSBpcworICogaGVyZWJ5IGdyYW50ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFycyBpbgorICogYWxsIGNvcGllcywgYW5kIHRoYXQgYm90aCB0aGF0IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbgorICogbm90aWNlIGFwcGVhciBpbiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIHRoZQorICogYXV0aG9ycyBub3QgYmUgdXNlZCBpbiBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0bworICogZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yCisgKiBwZXJtaXNzaW9uLgorICoKKyAqIFRIRSBBVVRIT1JTIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAorICogSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLgorICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgSU5ESVJFQ1QgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MKKyAqIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKKyAqIE5FR0xJR0VOQ0UgT1IgT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisgKiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKyAqCisgKi8KKworLyogTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LiAqLworLyogU2VlIGh0dHA6Ly93d3cucHl0aG9uLm9yZy8yLjQvbGljZW5zZSBmb3IgbGljZW5zaW5nIGRldGFpbHMuICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKKworI2RlZmluZSBXSU5ET1dTX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlICJ3aW5kb3dzLmgiCisjaW5jbHVkZSA8Y3J0ZGJnLmg+CisKKyNpZiBkZWZpbmVkKE1TX1dJTjMyKSAmJiAhZGVmaW5lZChNU19XSU42NCkKKyNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgXAorICAgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKSBoYW5kbGUpCisjZGVmaW5lIFBZTlVNX1RPX0hBTkRMRShvYmopICgoSEFORExFKVB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhvYmopKQorI2RlZmluZSBGX1BPSU5URVIgImsiCisjZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HCisjZWxzZQorI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBcCisgICAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCh1bnNpZ25lZCBsb25nIGxvbmcpIGhhbmRsZSkKKyNkZWZpbmUgUFlOVU1fVE9fSEFORExFKG9iaikgKChIQU5ETEUpUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyhvYmopKQorI2RlZmluZSBGX1BPSU5URVIgIksiCisjZGVmaW5lIFRfUE9JTlRFUiBUX1VMT05HTE9ORworI2VuZGlmCisKKyNkZWZpbmUgRl9IQU5ETEUgRl9QT0lOVEVSCisjZGVmaW5lIEZfRFdPUkQgImsiCisjZGVmaW5lIEZfQk9PTCAiaSIKKyNkZWZpbmUgRl9VSU5UICJJIgorCisjZGVmaW5lIFRfSEFORExFIFRfUE9JTlRFUgorCisvKiBHcmFiIENhbmNlbElvRXggZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLworc3RhdGljIGludCBoYXNfQ2FuY2VsSW9FeCA9IC0xOworc3RhdGljIEJPT0wgKENBTExCQUNLICpQeV9DYW5jZWxJb0V4KShIQU5ETEUsIExQT1ZFUkxBUFBFRCk7CisKK3N0YXRpYyBpbnQKK2NoZWNrX0NhbmNlbElvRXgoKQoreworICAgIGlmIChoYXNfQ2FuY2VsSW9FeCA9PSAtMSkKKyAgICB7CisgICAgICAgIEhJTlNUQU5DRSBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyIik7CisgICAgICAgICogKEZBUlBST0MgKikgJlB5X0NhbmNlbElvRXggPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuY2VsSW9FeCIpOworICAgICAgICBoYXNfQ2FuY2VsSW9FeCA9IChQeV9DYW5jZWxJb0V4ICE9IE5VTEwpOworICAgIH0KKyAgICByZXR1cm4gaGFzX0NhbmNlbElvRXg7Cit9CisKKworLyoKKyAqIEEgUHl0aG9uIG9iamVjdCB3cmFwcGluZyBhbiBPVkVSTEFQUEVEIHN0cnVjdHVyZSBhbmQgb3RoZXIgdXNlZnVsIGRhdGEKKyAqIGZvciBvdmVybGFwcGVkIEkvTworICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgT1ZFUkxBUFBFRCBvdmVybGFwcGVkOworICAgIC8qIEZvciBjb252ZW5pZW5jZSwgd2Ugc3RvcmUgdGhlIGZpbGUgaGFuZGxlIHRvbyAqLworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgLyogV2hldGhlciB0aGVyZSdzIEkvTyBpbiBmbGlnaHQgKi8KKyAgICBpbnQgcGVuZGluZzsKKyAgICAvKiBXaGV0aGVyIEkvTyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5ICovCisgICAgaW50IGNvbXBsZXRlZDsKKyAgICAvKiBCdWZmZXIgdXNlZCBmb3IgcmVhZGluZyAob3B0aW9uYWwpICovCisgICAgUHlPYmplY3QgKnJlYWRfYnVmZmVyOworICAgIC8qIEJ1ZmZlciB1c2VkIGZvciB3cml0aW5nIChvcHRpb25hbCkgKi8KKyAgICBQeV9idWZmZXIgd3JpdGVfYnVmZmVyOworfSBPdmVybGFwcGVkT2JqZWN0OworCitzdGF0aWMgdm9pZAorb3ZlcmxhcHBlZF9kZWFsbG9jKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCit7CisgICAgRFdPUkQgYnl0ZXM7CisgICAgaW50IGVyciA9IEdldExhc3RFcnJvcigpOworICAgIGlmIChzZWxmLT5wZW5kaW5nKSB7CisgICAgICAgIC8qIG1ha2UgaXQgYSBwcm9ncmFtbWluZyBlcnJvciB0byBkZWFsbG9jYXRlIHdoaWxlIG9wZXJhdGlvbgorICAgICAgICAgICBpcyBwZW5kaW5nLCBldmVuIGlmIHdlIGNhbiBzYWZlbHkgY2FuY2VsIGl0ICovCisgICAgICAgIGlmIChjaGVja19DYW5jZWxJb0V4KCkgJiYKKyAgICAgICAgICAgICAgICBQeV9DYW5jZWxJb0V4KHNlbGYtPmhhbmRsZSwgJnNlbGYtPm92ZXJsYXBwZWQpKQorICAgICAgICAgICAgR2V0T3ZlcmxhcHBlZFJlc3VsdChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkLCAmYnl0ZXMsIFRSVUUpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb25zIHN0aWxsIGluIGZsaWdodCB3aGlsZSBkZXN0cm95aW5nICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJPdmVybGFwcGVkIG9iamVjdCwgdGhlIHByb2Nlc3MgbWF5IGNyYXNoIik7CisgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShOVUxMKTsKKyAgICB9CisgICAgQ2xvc2VIYW5kbGUoc2VsZi0+b3ZlcmxhcHBlZC5oRXZlbnQpOworICAgIFNldExhc3RFcnJvcihlcnIpOworICAgIGlmIChzZWxmLT53cml0ZV9idWZmZXIub2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzZWxmLT53cml0ZV9idWZmZXIpOworICAgIFB5X0NMRUFSKHNlbGYtPnJlYWRfYnVmZmVyKTsKKyAgICBQeU9iamVjdF9EZWwoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitvdmVybGFwcGVkX0dldE92ZXJsYXBwZWRSZXN1bHQoT3ZlcmxhcHBlZE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKndhaXRvYmopCit7CisgICAgaW50IHdhaXQ7CisgICAgQk9PTCByZXM7CisgICAgRFdPUkQgdHJhbnNmZXJyZWQgPSAwOworICAgIERXT1JEIGVycjsKKworICAgIHdhaXQgPSBQeU9iamVjdF9Jc1RydWUod2FpdG9iaik7CisgICAgaWYgKHdhaXQgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gR2V0T3ZlcmxhcHBlZFJlc3VsdChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkLCAmdHJhbnNmZXJyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YWl0ICE9IDApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBlcnIgPSByZXMgPyBFUlJPUl9TVUNDRVNTIDogR2V0TGFzdEVycm9yKCk7CisgICAgc3dpdGNoIChlcnIpIHsKKyAgICAgICAgY2FzZSBFUlJPUl9TVUNDRVNTOgorICAgICAgICBjYXNlIEVSUk9SX01PUkVfREFUQToKKyAgICAgICAgY2FzZSBFUlJPUl9PUEVSQVRJT05fQUJPUlRFRDoKKyAgICAgICAgICAgIHNlbGYtPmNvbXBsZXRlZCA9IDE7CisgICAgICAgICAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVSUk9SX0lPX0lOQ09NUExFVEU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIGVycik7CisgICAgfQorICAgIGlmIChzZWxmLT5jb21wbGV0ZWQgJiYgc2VsZi0+cmVhZF9idWZmZXIgIT0gTlVMTCkgeworICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVja0V4YWN0KHNlbGYtPnJlYWRfYnVmZmVyKSk7CisgICAgICAgIGlmICh0cmFuc2ZlcnJlZCAhPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYtPnJlYWRfYnVmZmVyKSAmJgorICAgICAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZzZWxmLT5yZWFkX2J1ZmZlciwgdHJhbnNmZXJyZWQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJJSSIsICh1bnNpZ25lZCkgdHJhbnNmZXJyZWQsICh1bnNpZ25lZCkgZXJyKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK292ZXJsYXBwZWRfZ2V0YnVmZmVyKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBpZiAoIXNlbGYtPmNvbXBsZXRlZCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBnZXQgcmVhZCBidWZmZXIgYmVmb3JlIEdldE92ZXJsYXBwZWRSZXN1bHQoKSAiCisgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFscyB0aGUgb3BlcmF0aW9uIGNvbXBsZXRlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzID0gc2VsZi0+cmVhZF9idWZmZXIgPyBzZWxmLT5yZWFkX2J1ZmZlciA6IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK292ZXJsYXBwZWRfY2FuY2VsKE92ZXJsYXBwZWRPYmplY3QgKnNlbGYpCit7CisgICAgQk9PTCByZXMgPSBUUlVFOworCisgICAgaWYgKHNlbGYtPnBlbmRpbmcpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAoY2hlY2tfQ2FuY2VsSW9FeCgpKQorICAgICAgICAgICAgcmVzID0gUHlfQ2FuY2VsSW9FeChzZWxmLT5oYW5kbGUsICZzZWxmLT5vdmVybGFwcGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gQ2FuY2VsSW8oc2VsZi0+aGFuZGxlKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICAvKiBDYW5jZWxJb0V4IHJldHVybnMgRVJST1JfTk9UX0ZPVU5EIGlmIHRoZSBJL08gY29tcGxldGVkIGluLWJldHdlZW4gKi8KKyAgICBpZiAoIXJlcyAmJiBHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT1RfRk9VTkQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICBzZWxmLT5wZW5kaW5nID0gMDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIG92ZXJsYXBwZWRfbWV0aG9kc1tdID0geworICAgIHsiR2V0T3ZlcmxhcHBlZFJlc3VsdCIsIChQeUNGdW5jdGlvbikgb3ZlcmxhcHBlZF9HZXRPdmVybGFwcGVkUmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfTywgTlVMTH0sCisgICAgeyJnZXRidWZmZXIiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfZ2V0YnVmZmVyLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJjYW5jZWwiLCAoUHlDRnVuY3Rpb24pIG92ZXJsYXBwZWRfY2FuY2VsLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAge05VTEx9Cit9OworCitzdGF0aWMgUHlNZW1iZXJEZWYgb3ZlcmxhcHBlZF9tZW1iZXJzW10gPSB7CisgICAgeyJldmVudCIsIFRfSEFORExFLAorICAgICBvZmZzZXRvZihPdmVybGFwcGVkT2JqZWN0LCBvdmVybGFwcGVkKSArIG9mZnNldG9mKE9WRVJMQVBQRUQsIGhFdmVudCksCisgICAgIFJFQURPTkxZLCAib3ZlcmxhcHBlZCBldmVudCBoYW5kbGUifSwKKyAgICB7TlVMTH0KK307CisKK1B5VHlwZU9iamVjdCBPdmVybGFwcGVkVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAvKiB0cF9uYW1lICAgICAgICAgICAqLyAiX3dpbmFwaS5PdmVybGFwcGVkIiwKKyAgICAvKiB0cF9iYXNpY3NpemUgICAgICAqLyBzaXplb2YoT3ZlcmxhcHBlZE9iamVjdCksCisgICAgLyogdHBfaXRlbXNpemUgICAgICAgKi8gMCwKKyAgICAvKiB0cF9kZWFsbG9jICAgICAgICAqLyAoZGVzdHJ1Y3Rvcikgb3ZlcmxhcHBlZF9kZWFsbG9jLAorICAgIC8qIHRwX3ByaW50ICAgICAgICAgICovIDAsCisgICAgLyogdHBfZ2V0YXR0ciAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9zZXRhdHRyICAgICAgICAqLyAwLAorICAgIC8qIHRwX3Jlc2VydmVkICAgICAgICovIDAsCisgICAgLyogdHBfcmVwciAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9hc19udW1iZXIgICAgICAqLyAwLAorICAgIC8qIHRwX2FzX3NlcXVlbmNlICAgICovIDAsCisgICAgLyogdHBfYXNfbWFwcGluZyAgICAgKi8gMCwKKyAgICAvKiB0cF9oYXNoICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2NhbGwgICAgICAgICAgICovIDAsCisgICAgLyogdHBfc3RyICAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9nZXRhdHRybyAgICAgICAqLyAwLAorICAgIC8qIHRwX3NldGF0dHJvICAgICAgICovIDAsCisgICAgLyogdHBfYXNfYnVmZmVyICAgICAgKi8gMCwKKyAgICAvKiB0cF9mbGFncyAgICAgICAgICAqLyBQeV9UUEZMQUdTX0RFRkFVTFQsCisgICAgLyogdHBfZG9jICAgICAgICAgICAgKi8gIk9WRVJMQVBQRUQgc3RydWN0dXJlIHdyYXBwZXIiLAorICAgIC8qIHRwX3RyYXZlcnNlICAgICAgICovIDAsCisgICAgLyogdHBfY2xlYXIgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9yaWNoY29tcGFyZSAgICAqLyAwLAorICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovIDAsCisgICAgLyogdHBfaXRlciAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9pdGVybmV4dCAgICAgICAqLyAwLAorICAgIC8qIHRwX21ldGhvZHMgICAgICAgICovIG92ZXJsYXBwZWRfbWV0aG9kcywKKyAgICAvKiB0cF9tZW1iZXJzICAgICAgICAqLyBvdmVybGFwcGVkX21lbWJlcnMsCisgICAgLyogdHBfZ2V0c2V0ICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9iYXNlICAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX2RpY3QgICAgICAgICAgICovIDAsCisgICAgLyogdHBfZGVzY3JfZ2V0ICAgICAgKi8gMCwKKyAgICAvKiB0cF9kZXNjcl9zZXQgICAgICAqLyAwLAorICAgIC8qIHRwX2RpY3RvZmZzZXQgICAgICovIDAsCisgICAgLyogdHBfaW5pdCAgICAgICAgICAgKi8gMCwKKyAgICAvKiB0cF9hbGxvYyAgICAgICAgICAqLyAwLAorICAgIC8qIHRwX25ldyAgICAgICAgICAgICovIDAsCit9OworCitzdGF0aWMgT3ZlcmxhcHBlZE9iamVjdCAqCituZXdfb3ZlcmxhcHBlZChIQU5ETEUgaGFuZGxlKQoreworICAgIE92ZXJsYXBwZWRPYmplY3QgKnNlbGY7CisKKyAgICBzZWxmID0gUHlPYmplY3RfTmV3KE92ZXJsYXBwZWRPYmplY3QsICZPdmVybGFwcGVkVHlwZSk7CisgICAgaWYgKCFzZWxmKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzZWxmLT5oYW5kbGUgPSBoYW5kbGU7CisgICAgc2VsZi0+cmVhZF9idWZmZXIgPSBOVUxMOworICAgIHNlbGYtPnBlbmRpbmcgPSAwOworICAgIHNlbGYtPmNvbXBsZXRlZCA9IDA7CisgICAgbWVtc2V0KCZzZWxmLT5vdmVybGFwcGVkLCAwLCBzaXplb2YoT1ZFUkxBUFBFRCkpOworICAgIG1lbXNldCgmc2VsZi0+d3JpdGVfYnVmZmVyLCAwLCBzaXplb2YoUHlfYnVmZmVyKSk7CisgICAgLyogTWFudWFsIHJlc2V0LCBpbml0aWFsbHkgbm9uLXNpZ25hbGxlZCAqLworICAgIHNlbGYtPm92ZXJsYXBwZWQuaEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOworICAgIHJldHVybiBzZWxmOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogd2luZG93cyBBUEkgZnVuY3Rpb25zICovCisKK1B5RG9jX1NUUlZBUihDbG9zZUhhbmRsZV9kb2MsCisiQ2xvc2VIYW5kbGUoaGFuZGxlKSAtPiBOb25lXG5cCitcblwKK0Nsb3NlIGhhbmRsZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DbG9zZUhhbmRsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgSEFORExFIGhPYmplY3Q7CisgICAgQk9PTCBzdWNjZXNzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfSEFORExFICI6Q2xvc2VIYW5kbGUiLCAmaE9iamVjdCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN1Y2Nlc3MgPSBDbG9zZUhhbmRsZShoT2JqZWN0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9Db25uZWN0TmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgSEFORExFIGhOYW1lZFBpcGU7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKyAgICBCT09MIHN1Y2Nlc3M7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAib3ZlcmxhcHBlZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGX0hBTkRMRSAifCIgRl9CT09MLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhOYW1lZFBpcGUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZV9vdmVybGFwcGVkKSB7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoTmFtZWRQaXBlKTsKKyAgICAgICAgaWYgKCFvdmVybGFwcGVkKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN1Y2Nlc3MgPSBDb25uZWN0TmFtZWRQaXBlKGhOYW1lZFBpcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHBlZCA/ICZvdmVybGFwcGVkLT5vdmVybGFwcGVkIDogTlVMTCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChvdmVybGFwcGVkKSB7CisgICAgICAgIGludCBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgLyogT3ZlcmxhcHBlZCBDb25uZWN0TmFtZWRQaXBlIG5ldmVyIHJldHVybnMgYSBzdWNjZXNzIGNvZGUgKi8KKyAgICAgICAgYXNzZXJ0KHN1Y2Nlc3MgPT0gMCk7CisgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU9fUEVORElORykKKyAgICAgICAgICAgIG92ZXJsYXBwZWQtPnBlbmRpbmcgPSAxOworICAgICAgICBlbHNlIGlmIChlcnIgPT0gRVJST1JfUElQRV9DT05ORUNURUQpCisgICAgICAgICAgICBTZXRFdmVudChvdmVybGFwcGVkLT5vdmVybGFwcGVkLmhFdmVudCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKG92ZXJsYXBwZWQpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKGVycik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvdmVybGFwcGVkOworICAgIH0KKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZUZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIExQQ1RTVFIgbHBGaWxlTmFtZTsKKyAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7CisgICAgRFdPUkQgZHdTaGFyZU1vZGU7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOworICAgIERXT1JEIGR3Q3JlYXRpb25EaXNwb3NpdGlvbjsKKyAgICBEV09SRCBkd0ZsYWdzQW5kQXR0cmlidXRlczsKKyAgICBIQU5ETEUgaFRlbXBsYXRlRmlsZTsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzIiBGX0RXT1JEIEZfRFdPUkQgRl9QT0lOVEVSCisgICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0hBTkRMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwRmlsZU5hbWUsICZkd0Rlc2lyZWRBY2Nlc3MsICZkd1NoYXJlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzLCAmZHdDcmVhdGlvbkRpc3Bvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZHdGbGFnc0FuZEF0dHJpYnV0ZXMsICZoVGVtcGxhdGVGaWxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaGFuZGxlID0gQ3JlYXRlRmlsZShscEZpbGVOYW1lLCBkd0Rlc2lyZWRBY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBkd1NoYXJlTW9kZSwgbHBTZWN1cml0eUF0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBkd0NyZWF0aW9uRGlzcG9zaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBkd0ZsYWdzQW5kQXR0cmlidXRlcywgaFRlbXBsYXRlRmlsZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKEZfSEFORExFLCBoYW5kbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZU5hbWVkUGlwZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgTFBDVFNUUiBscE5hbWU7CisgICAgRFdPUkQgZHdPcGVuTW9kZTsKKyAgICBEV09SRCBkd1BpcGVNb2RlOworICAgIERXT1JEIG5NYXhJbnN0YW5jZXM7CisgICAgRFdPUkQgbk91dEJ1ZmZlclNpemU7CisgICAgRFdPUkQgbkluQnVmZmVyU2l6ZTsKKyAgICBEV09SRCBuRGVmYXVsdFRpbWVPdXQ7CisgICAgTFBTRUNVUklUWV9BVFRSSUJVVEVTIGxwU2VjdXJpdHlBdHRyaWJ1dGVzOworICAgIEhBTkRMRSBoYW5kbGU7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMiIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JECisgICAgICAgICAgICAgICAgICAgICAgICAgIEZfRFdPUkQgRl9EV09SRCBGX0RXT1JEIEZfUE9JTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwTmFtZSwgJmR3T3Blbk1vZGUsICZkd1BpcGVNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbk1heEluc3RhbmNlcywgJm5PdXRCdWZmZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbkluQnVmZmVyU2l6ZSwgJm5EZWZhdWx0VGltZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwU2VjdXJpdHlBdHRyaWJ1dGVzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaGFuZGxlID0gQ3JlYXRlTmFtZWRQaXBlKGxwTmFtZSwgZHdPcGVuTW9kZSwgZHdQaXBlTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbk1heEluc3RhbmNlcywgbk91dEJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5JbkJ1ZmZlclNpemUsIG5EZWZhdWx0VGltZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHBTZWN1cml0eUF0dHJpYnV0ZXMpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKK30KKworUHlEb2NfU1RSVkFSKENyZWF0ZVBpcGVfZG9jLAorIkNyZWF0ZVBpcGUocGlwZV9hdHRycywgc2l6ZSkgLT4gKHJlYWRfaGFuZGxlLCB3cml0ZV9oYW5kbGUpXG5cCitcblwKK0NyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZSwgYW5kIHJldHVybiBoYW5kbGVzIHRvIHRoZSByZWFkIGFuZFxuXAord3JpdGUgZW5kcyBvZiB0aGUgcGlwZS5cblwKK1xuXAorcGlwZV9hdHRycyBpcyBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0NyZWF0ZVBpcGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEhBTkRMRSByZWFkX3BpcGU7CisgICAgSEFORExFIHdyaXRlX3BpcGU7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBQeU9iamVjdCogcGlwZV9hdHRyaWJ1dGVzOyAvKiBpZ25vcmVkICovCisgICAgRFdPUkQgc2l6ZTsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8iIEZfRFdPUkQgIjpDcmVhdGVQaXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlX2F0dHJpYnV0ZXMsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gQ3JlYXRlUGlwZSgmcmVhZF9waXBlLCAmd3JpdGVfcGlwZSwgTlVMTCwgc2l6ZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghIHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKAorICAgICAgICAiTk4iLCBIQU5ETEVfVE9fUFlOVU0ocmVhZF9waXBlKSwgSEFORExFX1RPX1BZTlVNKHdyaXRlX3BpcGUpKTsKK30KKworLyogaGVscGVycyBmb3IgY3JlYXRlcHJvY2VzcyAqLworCitzdGF0aWMgdW5zaWduZWQgbG9uZworZ2V0dWxvbmcoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKK3sKKyAgICBQeU9iamVjdCogdmFsdWU7CisgICAgdW5zaWduZWQgbG9uZyByZXQ7CisKKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCBuYW1lKTsKKyAgICBpZiAoISB2YWx1ZSkgeworICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBGSVhNRTogcHJvcGFnYXRlIGVycm9yPyAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0ID0gUHlMb25nX0FzVW5zaWduZWRMb25nKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBIQU5ETEUKK2dldGhhbmRsZShQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQoreworICAgIFB5T2JqZWN0KiB2YWx1ZTsKKyAgICBIQU5ETEUgcmV0OworCisgICAgdmFsdWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgbmFtZSk7CisgICAgaWYgKCEgdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsgLyogRklYTUU6IHByb3BhZ2F0ZSBlcnJvcj8gKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQorICAgICAgICByZXQgPSBOVUxMOworICAgIGVsc2UKKyAgICAgICAgcmV0ID0gUFlOVU1fVE9fSEFORExFKHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2dldGVudmlyb25tZW50KFB5T2JqZWN0KiBlbnZpcm9ubWVudCkKK3sKKyAgICBQeV9zc2l6ZV90IGksIGVudnNpemUsIHRvdGFsc2l6ZTsKKyAgICBQeV9VQ1M0ICpidWZmZXIgPSBOVUxMLCAqcCwgKmVuZDsKKyAgICBQeU9iamVjdCAqa2V5cywgKnZhbHVlcywgKnJlczsKKworICAgIC8qIGNvbnZlcnQgZW52aXJvbm1lbnQgZGljdGlvbmFyeSB0byB3aW5kb3dzIGVudmlyb21lbnQgc3RyaW5nICovCisgICAgaWYgKCEgUHlNYXBwaW5nX0NoZWNrKGVudmlyb25tZW50KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsICJlbnZpcm9ubWVudCBtdXN0IGJlIGRpY3Rpb25hcnkgb3IgTm9uZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBlbnZzaXplID0gUHlNYXBwaW5nX0xlbmd0aChlbnZpcm9ubWVudCk7CisKKyAgICBrZXlzID0gUHlNYXBwaW5nX0tleXMoZW52aXJvbm1lbnQpOworICAgIHZhbHVlcyA9IFB5TWFwcGluZ19WYWx1ZXMoZW52aXJvbm1lbnQpOworICAgIGlmICgha2V5cyB8fCAhdmFsdWVzKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgdG90YWxzaXplID0gMTsgLyogdHJhaWxpbmcgbnVsbCBjaGFyYWN0ZXIgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgZW52c2l6ZTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBrZXkgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7CisgICAgICAgIFB5T2JqZWN0KiB2YWx1ZSA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZXMsIGkpOworCisgICAgICAgIGlmICghIFB5VW5pY29kZV9DaGVjayhrZXkpIHx8ICEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnQgY2FuIG9ubHkgY29udGFpbiBzdHJpbmdzIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHRvdGFsc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChrZXkpICsgMTsgICAgLyogKzEgZm9yICc9JyAqLworICAgICAgICB0b3RhbHNpemUgKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgodmFsdWUpICsgMTsgIC8qICsxIGZvciAnXDAnICovCisgICAgfQorCisgICAgYnVmZmVyID0gUHlNZW1fTWFsbG9jKHRvdGFsc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgaWYgKCEgYnVmZmVyKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHAgPSBidWZmZXI7CisgICAgZW5kID0gYnVmZmVyICsgdG90YWxzaXplOworCisgICAgZm9yIChpID0gMDsgaSA8IGVudnNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCoga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOworICAgICAgICBQeU9iamVjdCogdmFsdWUgPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KGtleSwgcCwgZW5kIC0gcCwgMCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGtleSk7CisgICAgICAgICpwKysgPSAnPSc7CisgICAgICAgIGlmICghUHlVbmljb2RlX0FzVUNTNCh2YWx1ZSwgcCwgZW5kIC0gcCwgMCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKTsKKyAgICAgICAgKnArKyA9ICdcMCc7CisgICAgfQorCisgICAgLyogYWRkIHRyYWlsaW5nIG51bGwgYnl0ZSAqLworICAgICpwKysgPSAnXDAnOworICAgIGFzc2VydChwID09IGVuZCk7CisKKyAgICBQeV9YREVDUkVGKGtleXMpOworICAgIFB5X1hERUNSRUYodmFsdWVzKTsKKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsIGJ1ZmZlciwgcCAtIGJ1ZmZlcik7CisgICAgUHlNZW1fRnJlZShidWZmZXIpOworICAgIHJldHVybiByZXM7CisKKyBlcnJvcjoKKyAgICBQeU1lbV9GcmVlKGJ1ZmZlcik7CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlcyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihDcmVhdGVQcm9jZXNzX2RvYywKKyJDcmVhdGVQcm9jZXNzKGFwcF9uYW1lLCBjbWRfbGluZSwgcHJvY19hdHRycywgdGhyZWFkX2F0dHJzLFxuXAorICAgICAgICAgICAgICAgaW5oZXJpdCwgZmxhZ3MsIGVudl9tYXBwaW5nLCBjdXJkaXIsXG5cCisgICAgICAgICAgICAgICBzdGFydHVwX2luZm8pIC0+IChwcm9jX2hhbmRsZSwgdGhyZWFkX2hhbmRsZSxcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgdGlkKVxuXAorXG5cCitDcmVhdGUgYSBuZXcgcHJvY2VzcyBhbmQgaXRzIHByaW1hcnkgdGhyZWFkLiBUaGUgcmV0dXJuXG5cCit2YWx1ZSBpcyBhIHR1cGxlIG9mIHRoZSBwcm9jZXNzIGhhbmRsZSwgdGhyZWFkIGhhbmRsZSxcblwKK3Byb2Nlc3MgSUQsIGFuZCB0aHJlYWQgSUQuXG5cCitcblwKK3Byb2NfYXR0cnMgYW5kIHRocmVhZF9hdHRycyBhcmUgaWdub3JlZCBpbnRlcm5hbGx5IGFuZCBjYW4gYmUgTm9uZS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9DcmVhdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBCT09MIHJlc3VsdDsKKyAgICBQUk9DRVNTX0lORk9STUFUSU9OIHBpOworICAgIFNUQVJUVVBJTkZPVyBzaTsKKyAgICBQeU9iamVjdCogZW52aXJvbm1lbnQ7CisgICAgd2NoYXJfdCAqd2Vudmlyb25tZW50OworCisgICAgd2NoYXJfdCogYXBwbGljYXRpb25fbmFtZTsKKyAgICB3Y2hhcl90KiBjb21tYW5kX2xpbmU7CisgICAgUHlPYmplY3QqIHByb2Nlc3NfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLworICAgIFB5T2JqZWN0KiB0aHJlYWRfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLworICAgIEJPT0wgaW5oZXJpdF9oYW5kbGVzOworICAgIERXT1JEIGNyZWF0aW9uX2ZsYWdzOworICAgIFB5T2JqZWN0KiBlbnZfbWFwcGluZzsKKyAgICB3Y2hhcl90KiBjdXJyZW50X2RpcmVjdG9yeTsKKyAgICBQeU9iamVjdCogc3RhcnR1cF9pbmZvOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWlpPTyIgRl9CT09MIEZfRFdPUkQgIk9aTzpDcmVhdGVQcm9jZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcHBsaWNhdGlvbl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbW1hbmRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzX2F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhyZWFkX2F0dHJpYnV0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNyZWF0aW9uX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVudl9tYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0dXBfaW5mbykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgWmVyb01lbW9yeSgmc2ksIHNpemVvZihzaSkpOworICAgIHNpLmNiID0gc2l6ZW9mKHNpKTsKKworICAgIC8qIG5vdGU6IHdlIG9ubHkgc3VwcG9ydCBhIHNtYWxsIHN1YnNldCBvZiBhbGwgU0kgYXR0cmlidXRlcyAqLworICAgIHNpLmR3RmxhZ3MgPSBnZXR1bG9uZyhzdGFydHVwX2luZm8sICJkd0ZsYWdzIik7CisgICAgc2kud1Nob3dXaW5kb3cgPSAoV09SRClnZXR1bG9uZyhzdGFydHVwX2luZm8sICJ3U2hvd1dpbmRvdyIpOworICAgIHNpLmhTdGRJbnB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkSW5wdXQiKTsKKyAgICBzaS5oU3RkT3V0cHV0ID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRPdXRwdXQiKTsKKyAgICBzaS5oU3RkRXJyb3IgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZEVycm9yIik7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGVudl9tYXBwaW5nICE9IFB5X05vbmUpIHsKKyAgICAgICAgZW52aXJvbm1lbnQgPSBnZXRlbnZpcm9ubWVudChlbnZfbWFwcGluZyk7CisgICAgICAgIGlmICghIGVudmlyb25tZW50KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHdlbnZpcm9ubWVudCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoZW52aXJvbm1lbnQpOworICAgICAgICBpZiAod2Vudmlyb25tZW50ID09IE5VTEwpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYoZW52aXJvbm1lbnQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVudmlyb25tZW50ID0gTlVMTDsKKyAgICAgICAgd2Vudmlyb25tZW50ID0gTlVMTDsKKyAgICB9CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gQ3JlYXRlUHJvY2Vzc1coYXBwbGljYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRfbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdF9oYW5kbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb25fZmxhZ3MgfCBDUkVBVEVfVU5JQ09ERV9FTlZJUk9OTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlbnZpcm9ubWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyZWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBpKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgUHlfWERFQ1JFRihlbnZpcm9ubWVudCk7CisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTk5rayIsCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX1RPX1BZTlVNKHBpLmhQcm9jZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfVE9fUFlOVU0ocGkuaFRocmVhZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcGkuZHdQcm9jZXNzSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGkuZHdUaHJlYWRJZCk7Cit9CisKK1B5RG9jX1NUUlZBUihEdXBsaWNhdGVIYW5kbGVfZG9jLAorIkR1cGxpY2F0ZUhhbmRsZShzb3VyY2VfcHJvY19oYW5kbGUsIHNvdXJjZV9oYW5kbGUsXG5cCisgICAgICAgICAgICAgICAgIHRhcmdldF9wcm9jX2hhbmRsZSwgdGFyZ2V0X2hhbmRsZSwgYWNjZXNzLFxuXAorICAgICAgICAgICAgICAgICBpbmhlcml0Wywgb3B0aW9uc10pIC0+IGhhbmRsZVxuXAorXG5cCitSZXR1cm4gYSBkdXBsaWNhdGUgaGFuZGxlIG9iamVjdC5cblwKK1xuXAorVGhlIGR1cGxpY2F0ZSBoYW5kbGUgcmVmZXJzIHRvIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUgb3JpZ2luYWxcblwKK2hhbmRsZS4gVGhlcmVmb3JlLCBhbnkgY2hhbmdlcyB0byB0aGUgb2JqZWN0IGFyZSByZWZsZWN0ZWRcblwKK3Rocm91Z2ggYm90aCBoYW5kbGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0R1cGxpY2F0ZUhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgSEFORExFIHRhcmdldF9oYW5kbGU7CisgICAgQk9PTCByZXN1bHQ7CisKKyAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOworICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOworICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7CisgICAgRFdPUkQgZGVzaXJlZF9hY2Nlc3M7CisgICAgQk9PTCBpbmhlcml0X2hhbmRsZTsKKyAgICBEV09SRCBvcHRpb25zID0gMDsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFIEZfSEFORExFIEZfSEFORExFIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICI6RHVwbGljYXRlSGFuZGxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9ucykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlc3VsdCA9IER1cGxpY2F0ZUhhbmRsZSgKKyAgICAgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlLAorICAgICAgICBzb3VyY2VfaGFuZGxlLAorICAgICAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCisgICAgICAgICZ0YXJnZXRfaGFuZGxlLAorICAgICAgICBkZXNpcmVkX2FjY2VzcywKKyAgICAgICAgaW5oZXJpdF9oYW5kbGUsCisgICAgICAgIG9wdGlvbnMKKyAgICApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoISByZXN1bHQpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7CisKKyAgICByZXR1cm4gSEFORExFX1RPX1BZTlVNKHRhcmdldF9oYW5kbGUpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX0V4aXRQcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBVSU5UIHVFeGl0Q29kZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX1VJTlQsICZ1RXhpdENvZGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICNpZiBkZWZpbmVkKFB5X0RFQlVHKQorICAgICAgICBTZXRFcnJvck1vZGUoU0VNX0ZBSUxDUklUSUNBTEVSUk9SU3xTRU1fTk9BTElHTk1FTlRGQVVMVEVYQ0VQVHwKKyAgICAgICAgICAgICAgICAgICAgIFNFTV9OT0dQRkFVTFRFUlJPUkJPWHxTRU1fTk9PUEVORklMRUVSUk9SQk9YKTsKKyAgICAgICAgX0NydFNldFJlcG9ydE1vZGUoX0NSVF9BU1NFUlQsIF9DUlREQkdfTU9ERV9ERUJVRyk7CisgICAgI2VuZGlmCisKKyAgICBFeGl0UHJvY2Vzcyh1RXhpdENvZGUpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRDdXJyZW50UHJvY2Vzc19kb2MsCisiR2V0Q3VycmVudFByb2Nlc3MoKSAtPiBoYW5kbGVcblwKK1xuXAorUmV0dXJuIGEgaGFuZGxlIG9iamVjdCBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRDdXJyZW50UHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkdldEN1cnJlbnRQcm9jZXNzIikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShHZXRDdXJyZW50UHJvY2VzcygpKTsKK30KKworUHlEb2NfU1RSVkFSKEdldEV4aXRDb2RlUHJvY2Vzc19kb2MsCisiR2V0RXhpdENvZGVQcm9jZXNzKGhhbmRsZSkgLT4gRXhpdCBjb2RlXG5cCitcblwKK1JldHVybiB0aGUgdGVybWluYXRpb24gc3RhdHVzIG9mIHRoZSBzcGVjaWZpZWQgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRFeGl0Q29kZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIERXT1JEIGV4aXRfY29kZTsKKyAgICBCT09MIHJlc3VsdDsKKworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIjpHZXRFeGl0Q29kZVByb2Nlc3MiLCAmcHJvY2VzcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gR2V0RXhpdENvZGVQcm9jZXNzKHByb2Nlc3MsICZleGl0X2NvZGUpOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKGV4aXRfY29kZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfR2V0TGFzdEVycm9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0RXT1JELCBHZXRMYXN0RXJyb3IoKSk7Cit9CisKK1B5RG9jX1NUUlZBUihHZXRNb2R1bGVGaWxlTmFtZV9kb2MsCisiR2V0TW9kdWxlRmlsZU5hbWUobW9kdWxlKSAtPiBwYXRoXG5cCitcblwKK1JldHVybiB0aGUgZnVsbHktcXVhbGlmaWVkIHBhdGggZm9yIHRoZSBmaWxlIHRoYXQgY29udGFpbnNcblwKK3RoZSBzcGVjaWZpZWQgbW9kdWxlLiBUaGUgbW9kdWxlIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBieSB0aGVcblwKK2N1cnJlbnQgcHJvY2Vzcy5cblwKK1xuXAorVGhlIG1vZHVsZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGEgaGFuZGxlIHRvIHRoZSBsb2FkZWQgbW9kdWxlXG5cCit3aG9zZSBwYXRoIGlzIGJlaW5nIHJlcXVlc3RlZC4gSWYgdGhpcyBwYXJhbWV0ZXIgaXMgMCwgXG5cCitHZXRNb2R1bGVGaWxlTmFtZSByZXRyaWV2ZXMgdGhlIHBhdGggb2YgdGhlIGV4ZWN1dGFibGUgZmlsZVxuXAorb2YgdGhlIGN1cnJlbnQgcHJvY2Vzcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgQk9PTCByZXN1bHQ7CisgICAgSE1PRFVMRSBtb2R1bGU7CisgICAgV0NIQVIgZmlsZW5hbWVbTUFYX1BBVEhdOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAiOkdldE1vZHVsZUZpbGVOYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtb2R1bGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IEdldE1vZHVsZUZpbGVOYW1lVyhtb2R1bGUsIGZpbGVuYW1lLCBNQVhfUEFUSCk7CisgICAgZmlsZW5hbWVbTUFYX1BBVEgtMV0gPSAnXDAnOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoZmlsZW5hbWUsIHdjc2xlbihmaWxlbmFtZSkpOworfQorCitQeURvY19TVFJWQVIoR2V0U3RkSGFuZGxlX2RvYywKKyJHZXRTdGRIYW5kbGUoaGFuZGxlKSAtPiBpbnRlZ2VyXG5cCitcblwKK1JldHVybiBhIGhhbmRsZSB0byB0aGUgc3BlY2lmaWVkIHN0YW5kYXJkIGRldmljZVxuXAorKFNURF9JTlBVVF9IQU5ETEUsIFNURF9PVVRQVVRfSEFORExFLCBTVERfRVJST1JfSEFORExFKS5cblwKK1RoZSBpbnRlZ2VyIGFzc29jaWF0ZWQgd2l0aCB0aGUgaGFuZGxlIG9iamVjdCBpcyByZXR1cm5lZC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRTdGRIYW5kbGUoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgRFdPUkQgc3RkX2hhbmRsZTsKKworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9EV09SRCAiOkdldFN0ZEhhbmRsZSIsICZzdGRfaGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgaGFuZGxlID0gR2V0U3RkSGFuZGxlKHN0ZF9oYW5kbGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgaWYgKCEgaGFuZGxlKSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgfQorCisgICAgLyogbm90ZTogcmV0dXJucyBpbnRlZ2VyLCBub3QgaGFuZGxlIG9iamVjdCAqLworICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKTsKK30KKworUHlEb2NfU1RSVkFSKEdldFZlcnNpb25fZG9jLAorIkdldFZlcnNpb24oKSAtPiB2ZXJzaW9uXG5cCitcblwKK1JldHVybiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9HZXRWZXJzaW9uKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6R2V0VmVyc2lvbiIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhHZXRWZXJzaW9uKCkpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX09wZW5Qcm9jZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBEV09SRCBkd0Rlc2lyZWRBY2Nlc3M7CisgICAgQk9PTCBiSW5oZXJpdEhhbmRsZTsKKyAgICBEV09SRCBkd1Byb2Nlc3NJZDsKKyAgICBIQU5ETEUgaGFuZGxlOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIEZfRFdPUkQgRl9CT09MIEZfRFdPUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkd0Rlc2lyZWRBY2Nlc3MsICZiSW5oZXJpdEhhbmRsZSwgJmR3UHJvY2Vzc0lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBoYW5kbGUgPSBPcGVuUHJvY2Vzcyhkd0Rlc2lyZWRBY2Nlc3MsIGJJbmhlcml0SGFuZGxlLCBkd1Byb2Nlc3NJZCk7CisgICAgaWYgKGhhbmRsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZShGX0hBTkRMRSwgaGFuZGxlKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9QZWVrTmFtZWRQaXBlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplID0gMDsKKyAgICBQeU9iamVjdCAqYnVmID0gTlVMTDsKKyAgICBEV09SRCBucmVhZCwgbmF2YWlsLCBubGVmdDsKKyAgICBCT09MIHJldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBGX0hBTkRMRSAifGk6UGVla05hbWVkUGlwZSIgLCAmaGFuZGxlLCAmc2l6ZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgc2l6ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSkgeworICAgICAgICBidWYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgICAgICBpZiAoIWJ1ZikKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IFBlZWtOYW1lZFBpcGUoaGFuZGxlLCBQeUJ5dGVzX0FTX1NUUklORyhidWYpLCBzaXplLCAmbnJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hdmFpbCwgJm5sZWZ0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmJ1ZiwgbnJlYWQpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOaWkiLCBidWYsIG5hdmFpbCwgbmxlZnQpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICByZXQgPSBQZWVrTmFtZWRQaXBlKGhhbmRsZSwgTlVMTCwgMCwgTlVMTCwgJm5hdmFpbCwgJm5sZWZ0KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRFeGNGcm9tV2luZG93c0VycihQeUV4Y19JT0Vycm9yLCAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaWkiLCBuYXZhaWwsIG5sZWZ0KTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfUmVhZEZpbGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBIQU5ETEUgaGFuZGxlOworICAgIGludCBzaXplOworICAgIERXT1JEIG5yZWFkOworICAgIFB5T2JqZWN0ICpidWY7CisgICAgQk9PTCByZXQ7CisgICAgaW50IHVzZV9vdmVybGFwcGVkID0gMDsKKyAgICBEV09SRCBlcnI7CisgICAgT3ZlcmxhcHBlZE9iamVjdCAqb3ZlcmxhcHBlZCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJoYW5kbGUiLCAic2l6ZSIsICJvdmVybGFwcGVkIiwgTlVMTH07CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJpfGk6UmVhZEZpbGUiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwgJnNpemUsICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzaXplKTsKKyAgICBpZiAoIWJ1ZikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHVzZV9vdmVybGFwcGVkKSB7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoYW5kbGUpOworICAgICAgICBpZiAoIW92ZXJsYXBwZWQpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWYpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgLyogU3RlYWxzIHJlZmVyZW5jZSB0byBidWYgKi8KKyAgICAgICAgb3ZlcmxhcHBlZC0+cmVhZF9idWZmZXIgPSBidWY7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJldCA9IFJlYWRGaWxlKGhhbmRsZSwgUHlCeXRlc19BU19TVFJJTkcoYnVmKSwgc2l6ZSwgJm5yZWFkLAorICAgICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQgPyAmb3ZlcmxhcHBlZC0+b3ZlcmxhcHBlZCA6IE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBlcnIgPSByZXQgPyAwIDogR2V0TGFzdEVycm9yKCk7CisKKyAgICBpZiAob3ZlcmxhcHBlZCkgeworICAgICAgICBpZiAoIXJldCkgeworICAgICAgICAgICAgaWYgKGVyciA9PSBFUlJPUl9JT19QRU5ESU5HKQorICAgICAgICAgICAgICAgIG92ZXJsYXBwZWQtPnBlbmRpbmcgPSAxOworICAgICAgICAgICAgZWxzZSBpZiAoZXJyICE9IEVSUk9SX01PUkVfREFUQSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgKFB5T2JqZWN0ICopIG92ZXJsYXBwZWQsIGVycik7CisgICAgfQorCisgICAgaWYgKCFyZXQgJiYgZXJyICE9IEVSUk9SX01PUkVfREFUQSkgeworICAgICAgICBQeV9ERUNSRUYoYnVmKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIH0KKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZidWYsIG5yZWFkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgYnVmLCBlcnIpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1NldE5hbWVkUGlwZUhhbmRsZVN0YXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBIQU5ETEUgaE5hbWVkUGlwZTsKKyAgICBQeU9iamVjdCAqb0FyZ3NbM107CisgICAgRFdPUkQgZHdBcmdzWzNdLCAqcEFyZ3NbM10gPSB7TlVMTCwgTlVMTCwgTlVMTH07CisgICAgaW50IGk7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgIk9PTyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZoTmFtZWRQaXBlLCAmb0FyZ3NbMF0sICZvQXJnc1sxXSwgJm9BcmdzWzJdKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeUVycl9DbGVhcigpOworCisgICAgZm9yIChpID0gMCA7IGkgPCAzIDsgaSsrKSB7CisgICAgICAgIGlmIChvQXJnc1tpXSAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBkd0FyZ3NbaV0gPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrKG9BcmdzW2ldKTsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcEFyZ3NbaV0gPSAmZHdBcmdzW2ldOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZShoTmFtZWRQaXBlLCBwQXJnc1swXSwgcEFyZ3NbMV0sIHBBcmdzWzJdKSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihUZXJtaW5hdGVQcm9jZXNzX2RvYywKKyJUZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgZXhpdF9jb2RlKSAtPiBOb25lXG5cCitcblwKK1Rlcm1pbmF0ZSB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgYW5kIGFsbCBvZiBpdHMgdGhyZWFkcy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3dpbmFwaV9UZXJtaW5hdGVQcm9jZXNzKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKK3sKKyAgICBCT09MIHJlc3VsdDsKKworICAgIEhBTkRMRSBwcm9jZXNzOworICAgIFVJTlQgZXhpdF9jb2RlOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9VSU5UICI6VGVybWluYXRlUHJvY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvY2VzcywgJmV4aXRfY29kZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gVGVybWluYXRlUHJvY2Vzcyhwcm9jZXNzLCBleGl0X2NvZGUpOworCisgICAgaWYgKCEgcmVzdWx0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOworCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybiBQeV9Ob25lOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dhaXROYW1lZFBpcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIExQQ1RTVFIgbHBOYW1lZFBpcGVOYW1lOworICAgIERXT1JEIG5UaW1lT3V0OworICAgIEJPT0wgc3VjY2VzczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyIgRl9EV09SRCwgJmxwTmFtZWRQaXBlTmFtZSwgJm5UaW1lT3V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgc3VjY2VzcyA9IFdhaXROYW1lZFBpcGUobHBOYW1lZFBpcGVOYW1lLCBuVGltZU91dCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgRFdPUkQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpoYW5kbGVfc2VxOworICAgIEhBTkRMRSBoYW5kbGVzW01BWElNVU1fV0FJVF9PQkpFQ1RTXTsKKyAgICBIQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG5oYW5kbGVzLCBpOworICAgIEJPT0wgd2FpdF9mbGFnOworICAgIERXT1JEIG1pbGxpc2Vjb25kcyA9IElORklOSVRFOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPIiBGX0JPT0wgInwiIEZfRFdPUkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIjpXYWl0Rm9yTXVsdGlwbGVPYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZV9zZXEsICZ3YWl0X2ZsYWcsICZtaWxsaXNlY29uZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhoYW5kbGVfc2VxKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInNlcXVlbmNlIHR5cGUgZXhwZWN0ZWQsIGdvdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaGFuZGxlX3NlcSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmhhbmRsZXMgPSBQeVNlcXVlbmNlX0xlbmd0aChoYW5kbGVfc2VxKTsKKyAgICBpZiAobmhhbmRsZXMgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChuaGFuZGxlcyA8IDAgfHwgbmhhbmRsZXMgPj0gTUFYSU1VTV9XQUlUX09CSkVDVFMgLSAxKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm5lZWQgYXQgbW9zdCAlemQgaGFuZGxlcywgZ290IGEgc2VxdWVuY2Ugb2YgbGVuZ3RoICV6ZCIsCisgICAgICAgICAgICAgICAgICAgICBNQVhJTVVNX1dBSVRfT0JKRUNUUyAtIDEsIG5oYW5kbGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBuaGFuZGxlczsgaSsrKSB7CisgICAgICAgIEhBTkRMRSBoOworICAgICAgICBQeU9iamVjdCAqdiA9IFB5U2VxdWVuY2VfR2V0SXRlbShoYW5kbGVfc2VxLCBpKTsKKyAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsIEZfSEFORExFLCAmaCkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGhhbmRsZXNbaV0gPSBoOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgfQorICAgIC8qIElmIHRoaXMgaXMgdGhlIG1haW4gdGhyZWFkIHRoZW4gbWFrZSB0aGUgd2FpdCBpbnRlcnJ1cHRpYmxlCisgICAgICAgYnkgQ3RybC1DIHVubGVzcyB3ZSBhcmUgd2FpdGluZyBmb3IgKmFsbCogaGFuZGxlcyAqLworICAgIGlmICghd2FpdF9mbGFnICYmIF9QeU9TX0lzTWFpblRocmVhZCgpKSB7CisgICAgICAgIHNpZ2ludF9ldmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CisgICAgICAgIGFzc2VydChzaWdpbnRfZXZlbnQgIT0gTlVMTCk7CisgICAgICAgIGhhbmRsZXNbbmhhbmRsZXMrK10gPSBzaWdpbnRfZXZlbnQ7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChzaWdpbnRfZXZlbnQgIT0gTlVMTCkKKyAgICAgICAgUmVzZXRFdmVudChzaWdpbnRfZXZlbnQpOworICAgIHJlc3VsdCA9IFdhaXRGb3JNdWx0aXBsZU9iamVjdHMoKERXT1JEKSBuaGFuZGxlcywgaGFuZGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRfZmxhZywgbWlsbGlzZWNvbmRzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX0lPRXJyb3IsIDApOworICAgIGVsc2UgaWYgKHNpZ2ludF9ldmVudCAhPSBOVUxMICYmIHJlc3VsdCA9PSBXQUlUX09CSkVDVF8wICsgbmhhbmRsZXMgLSAxKSB7CisgICAgICAgIGVycm5vID0gRUlOVFI7CisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSByZXN1bHQpOworfQorCitQeURvY19TVFJWQVIoV2FpdEZvclNpbmdsZU9iamVjdF9kb2MsCisiV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIHRpbWVvdXQpIC0+IHJlc3VsdFxuXAorXG5cCitXYWl0IHVudGlsIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGluIHRoZSBzaWduYWxlZCBzdGF0ZSBvclxuXAordGhlIHRpbWUtb3V0IGludGVydmFsIGVsYXBzZXMuIFRoZSB0aW1lb3V0IHZhbHVlIGlzIHNwZWNpZmllZFxuXAoraW4gbWlsbGlzZWNvbmRzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQoreworICAgIERXT1JEIHJlc3VsdDsKKworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgRFdPUkQgbWlsbGlzZWNvbmRzOworICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgRl9IQU5ETEUgRl9EV09SRCAiOldhaXRGb3JTaW5nbGVPYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtaWxsaXNlY29uZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGhhbmRsZSwgbWlsbGlzZWNvbmRzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKKworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZXN1bHQpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgord2luYXBpX1dyaXRlRmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIEhBTkRMRSBoYW5kbGU7CisgICAgUHlfYnVmZmVyIF9idWYsICpidWY7CisgICAgUHlPYmplY3QgKmJ1Zm9iajsKKyAgICBEV09SRCB3cml0dGVuOworICAgIEJPT0wgcmV0OworICAgIGludCB1c2Vfb3ZlcmxhcHBlZCA9IDA7CisgICAgRFdPUkQgZXJyOworICAgIE92ZXJsYXBwZWRPYmplY3QgKm92ZXJsYXBwZWQgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaGFuZGxlIiwgImJ1ZmZlciIsICJvdmVybGFwcGVkIiwgTlVMTH07CisKKyAgICAvKiBGaXJzdCBnZXQgaGFuZGxlIGFuZCB1c2Vfb3ZlcmxhcHBlZCB0byBrbm93IHdoaWNoIFB5X2J1ZmZlciB0byB1c2UgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZfSEFORExFICJPfGk6V3JpdGVGaWxlIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsICZidWZvYmosICZ1c2Vfb3ZlcmxhcHBlZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZV9vdmVybGFwcGVkKSB7CisgICAgICAgIG92ZXJsYXBwZWQgPSBuZXdfb3ZlcmxhcHBlZChoYW5kbGUpOworICAgICAgICBpZiAoIW92ZXJsYXBwZWQpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgYnVmID0gJm92ZXJsYXBwZWQtPndyaXRlX2J1ZmZlcjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBidWYgPSAmX2J1ZjsKKworICAgIGlmICghUHlBcmdfUGFyc2UoYnVmb2JqLCAieSoiLCBidWYpKSB7CisgICAgICAgIFB5X1hERUNSRUYob3ZlcmxhcHBlZCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBXcml0ZUZpbGUoaGFuZGxlLCBidWYtPmJ1ZiwgYnVmLT5sZW4sICZ3cml0dGVuLAorICAgICAgICAgICAgICAgICAgICBvdmVybGFwcGVkID8gJm92ZXJsYXBwZWQtPm92ZXJsYXBwZWQgOiBOVUxMKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgZXJyID0gcmV0ID8gMCA6IEdldExhc3RFcnJvcigpOworCisgICAgaWYgKG92ZXJsYXBwZWQpIHsKKyAgICAgICAgaWYgKCFyZXQpIHsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gRVJST1JfSU9fUEVORElORykKKyAgICAgICAgICAgICAgICBvdmVybGFwcGVkLT5wZW5kaW5nID0gMTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvdmVybGFwcGVkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5JIiwgKFB5T2JqZWN0ICopIG92ZXJsYXBwZWQsIGVycik7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOworICAgIGlmICghcmV0KQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfSU9FcnJvciwgMCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIklJIiwgd3JpdHRlbiwgZXJyKTsKK30KKworCitzdGF0aWMgUHlNZXRob2REZWYgd2luYXBpX2Z1bmN0aW9uc1tdID0geworICAgIHsiQ2xvc2VIYW5kbGUiLCB3aW5hcGlfQ2xvc2VIYW5kbGUsIE1FVEhfVkFSQVJHUywKKyAgICAgQ2xvc2VIYW5kbGVfZG9jfSwKKyAgICB7IkNvbm5lY3ROYW1lZFBpcGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX0Nvbm5lY3ROYW1lZFBpcGUsCisgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsICIifSwKKyAgICB7IkNyZWF0ZUZpbGUiLCB3aW5hcGlfQ3JlYXRlRmlsZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJDcmVhdGVOYW1lZFBpcGUiLCB3aW5hcGlfQ3JlYXRlTmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IkNyZWF0ZVBpcGUiLCB3aW5hcGlfQ3JlYXRlUGlwZSwgTUVUSF9WQVJBUkdTLAorICAgICBDcmVhdGVQaXBlX2RvY30sCisgICAgeyJDcmVhdGVQcm9jZXNzIiwgd2luYXBpX0NyZWF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgQ3JlYXRlUHJvY2Vzc19kb2N9LAorICAgIHsiRHVwbGljYXRlSGFuZGxlIiwgd2luYXBpX0R1cGxpY2F0ZUhhbmRsZSwgTUVUSF9WQVJBUkdTLAorICAgICBEdXBsaWNhdGVIYW5kbGVfZG9jfSwKKyAgICB7IkV4aXRQcm9jZXNzIiwgd2luYXBpX0V4aXRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgd2luYXBpX0dldEN1cnJlbnRQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCisgICAgeyJHZXRFeGl0Q29kZVByb2Nlc3MiLCB3aW5hcGlfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCisgICAgIEdldEV4aXRDb2RlUHJvY2Vzc19kb2N9LAorICAgIHsiR2V0TGFzdEVycm9yIiwgd2luYXBpX0dldExhc3RFcnJvciwgTUVUSF9OT0FSR1MsCisgICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCisgICAgeyJHZXRNb2R1bGVGaWxlTmFtZSIsIHdpbmFwaV9HZXRNb2R1bGVGaWxlTmFtZSwgTUVUSF9WQVJBUkdTLAorICAgICBHZXRNb2R1bGVGaWxlTmFtZV9kb2N9LAorICAgIHsiR2V0U3RkSGFuZGxlIiwgd2luYXBpX0dldFN0ZEhhbmRsZSwgTUVUSF9WQVJBUkdTLAorICAgICBHZXRTdGRIYW5kbGVfZG9jfSwKKyAgICB7IkdldFZlcnNpb24iLCB3aW5hcGlfR2V0VmVyc2lvbiwgTUVUSF9WQVJBUkdTLAorICAgICBHZXRWZXJzaW9uX2RvY30sCisgICAgeyJPcGVuUHJvY2VzcyIsIHdpbmFwaV9PcGVuUHJvY2VzcywgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJQZWVrTmFtZWRQaXBlIiwgd2luYXBpX1BlZWtOYW1lZFBpcGUsIE1FVEhfVkFSQVJHUywKKyAgICAgIiJ9LAorICAgIHsiUmVhZEZpbGUiLCAoUHlDRnVuY3Rpb24pd2luYXBpX1JlYWRGaWxlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAiIn0sCisgICAgeyJTZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSIsIHdpbmFwaV9TZXROYW1lZFBpcGVIYW5kbGVTdGF0ZSwgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgd2luYXBpX1Rlcm1pbmF0ZVByb2Nlc3MsIE1FVEhfVkFSQVJHUywKKyAgICAgVGVybWluYXRlUHJvY2Vzc19kb2N9LAorICAgIHsiV2FpdE5hbWVkUGlwZSIsIHdpbmFwaV9XYWl0TmFtZWRQaXBlLCBNRVRIX1ZBUkFSR1MsCisgICAgICIifSwKKyAgICB7IldhaXRGb3JNdWx0aXBsZU9iamVjdHMiLCB3aW5hcGlfV2FpdEZvck11bHRpcGxlT2JqZWN0cywgTUVUSF9WQVJBUkdTLAorICAgICAiIn0sCisgICAgeyJXYWl0Rm9yU2luZ2xlT2JqZWN0Iiwgd2luYXBpX1dhaXRGb3JTaW5nbGVPYmplY3QsIE1FVEhfVkFSQVJHUywKKyAgICAgV2FpdEZvclNpbmdsZU9iamVjdF9kb2N9LAorICAgIHsiV3JpdGVGaWxlIiwgKFB5Q0Z1bmN0aW9uKXdpbmFwaV9Xcml0ZUZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICIifSwKKyAgICB7TlVMTCwgTlVMTH0KK307CisKK3N0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgd2luYXBpX21vZHVsZSA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCisgICAgIl93aW5hcGkiLAorICAgIE5VTEwsCisgICAgLTEsCisgICAgd2luYXBpX2Z1bmN0aW9ucywKKyAgICBOVUxMLAorICAgIE5VTEwsCisgICAgTlVMTCwKKyAgICBOVUxMCit9OworCisjZGVmaW5lIFdJTkFQSV9DT05TVEFOVChmbXQsIGNvbikgXAorICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICNjb24sIFB5X0J1aWxkVmFsdWUoZm10LCBjb24pKQorCitQeU1PRElOSVRfRlVOQworUHlJbml0X193aW5hcGkodm9pZCkKK3sKKyAgICBQeU9iamVjdCAqZDsKKyAgICBQeU9iamVjdCAqbTsKKworICAgIGlmIChQeVR5cGVfUmVhZHkoJk92ZXJsYXBwZWRUeXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmd2luYXBpX21vZHVsZSk7CisgICAgaWYgKG0gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7CisKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiT3ZlcmxhcHBlZCIsIChQeU9iamVjdCAqKSAmT3ZlcmxhcHBlZFR5cGUpOworCisgICAgLyogY29uc3RhbnRzICovCisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIENSRUFURV9ORVdfQ09OU09MRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIENSRUFURV9ORVdfUFJPQ0VTU19HUk9VUCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIERVUExJQ0FURV9DTE9TRV9TT1VSQ0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9BTFJFQURZX0VYSVNUUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX0JST0tFTl9QSVBFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfSU9fUEVORElORyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX01PUkVfREFUQSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05FVE5BTUVfREVMRVRFRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX05PX1NZU1RFTV9SRVNPVVJDRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9NT1JFX0RBVEEpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9ORVROQU1FX0RFTEVURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9OT19EQVRBKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfTk9fU1lTVEVNX1JFU09VUkNFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9CVVNZKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRVJST1JfUElQRV9DT05ORUNURUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBFUlJPUl9TRU1fVElNRU9VVCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfRkxBR19GSVJTVF9QSVBFX0lOU1RBTkNFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgRklMRV9GTEFHX09WRVJMQVBQRUQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBGSUxFX0dFTkVSSUNfUkVBRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEZJTEVfR0VORVJJQ19XUklURSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfUkVBRCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIEdFTkVSSUNfV1JJVEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBJTkZJTklURSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIE5NUFdBSVRfV0FJVF9GT1JFVkVSKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgT1BFTl9FWElTVElORyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0RVUExFWCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfQUNDRVNTX0lOQk9VTkQpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1JFQURNT0RFX01FU1NBR0UpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBQSVBFX1RZUEVfTUVTU0FHRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfVU5MSU1JVEVEX0lOU1RBTkNFUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBJUEVfV0FJVCk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBST0NFU1NfQUxMX0FDQ0VTUyk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFBST0NFU1NfRFVQX0hBTkRMRSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFNUQVJURl9VU0VTSE9XV0lORE9XKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1RBUlRGX1VTRVNUREhBTkRMRVMpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVERfSU5QVVRfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1REX09VVFBVVF9IQU5ETEUpOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBTVERfRVJST1JfSEFORExFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1RJTExfQUNUSVZFKTsKKyAgICBXSU5BUElfQ09OU1RBTlQoRl9EV09SRCwgU1dfSElERSk7CisgICAgV0lOQVBJX0NPTlNUQU5UKEZfRFdPUkQsIFdBSVRfT0JKRUNUXzApOworICAgIFdJTkFQSV9DT05TVEFOVChGX0RXT1JELCBXQUlUX1RJTUVPVVQpOworCisgICAgV0lOQVBJX0NPTlNUQU5UKCJpIiwgTlVMTCk7CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvYXJyYXltb2R1bGUuYyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwppbmRleCAyZDRlZTcyLi4zZjVhYThiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hcnJheW1vZHVsZS5jCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBmdW5jdGlvbnMgYXJlbid0IHZpc2libGUgeWV0LgogICovCiBzdHJ1Y3QgYXJyYXlkZXNjciB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIGludCBpdGVtc2l6ZTsKICAgICBQeU9iamVjdCAqICgqZ2V0aXRlbSkoc3RydWN0IGFycmF5b2JqZWN0ICosIFB5X3NzaXplX3QpOwogICAgIGludCAoKnNldGl0ZW0pKHN0cnVjdCBhcnJheW9iamVjdCAqLCBQeV9zc2l6ZV90LCBQeU9iamVjdCAqKTsKQEAgLTM1Niw2ICszNTYsNTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisKK3N0YXRpYyBQeU9iamVjdCAqCitxX2dldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGkpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKChQWV9MT05HX0xPTkcgKilhcC0+b2JfaXRlbSlbaV0pOworfQorCitzdGF0aWMgaW50CitxX3NldGl0ZW0oYXJyYXlvYmplY3QgKmFwLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICp2KQoreworICAgIFBZX0xPTkdfTE9ORyB4OworICAgIGlmICghUHlBcmdfUGFyc2UodiwgIkw7YXJyYXkgaXRlbSBtdXN0IGJlIGludGVnZXIiLCAmeCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoaSA+PSAwKQorICAgICAgICAoKFBZX0xPTkdfTE9ORyAqKWFwLT5vYl9pdGVtKVtpXSA9IHg7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitRUV9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQoreworICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoCisgICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldKTsKK30KKworc3RhdGljIGludAorUVFfc2V0aXRlbShhcnJheW9iamVjdCAqYXAsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKnYpCit7CisgICAgdW5zaWduZWQgUFlfTE9OR19MT05HIHg7CisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICB4ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh2KTsKKyAgICAgICAgaWYgKHggPT0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORykgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFBZX0xPTkdfTE9ORyB5OworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKHYsICJMO2FycmF5IGl0ZW0gbXVzdCBiZSBpbnRlZ2VyIiwgJnkpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoeSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICJ1bnNpZ25lZCBsb25nIGxvbmcgaXMgbGVzcyB0aGFuIG1pbmltdW0iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB4ID0gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyl5OworICAgIH0KKworICAgIGlmIChpID49IDApCisgICAgICAgICgodW5zaWduZWQgUFlfTE9OR19MT05HICopYXAtPm9iX2l0ZW0pW2ldID0geDsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBzdGF0aWMgUHlPYmplY3QgKgogZl9nZXRpdGVtKGFycmF5b2JqZWN0ICphcCwgUHlfc3NpemVfdCBpKQogewpAQCAtNDA2LDYgKzQ1OSwxMCBAQAogICAgIHsnSScsIHNpemVvZihpbnQpLCBJSV9nZXRpdGVtLCBJSV9zZXRpdGVtLCAiSSIsIDEsIDB9LAogICAgIHsnbCcsIHNpemVvZihsb25nKSwgbF9nZXRpdGVtLCBsX3NldGl0ZW0sICJsIiwgMSwgMX0sCiAgICAgeydMJywgc2l6ZW9mKGxvbmcpLCBMTF9nZXRpdGVtLCBMTF9zZXRpdGVtLCAiTCIsIDEsIDB9LAorI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgeydxJywgc2l6ZW9mKFBZX0xPTkdfTE9ORyksIHFfZ2V0aXRlbSwgcV9zZXRpdGVtLCAicSIsIDEsIDF9LAorICAgIHsnUScsIHNpemVvZihQWV9MT05HX0xPTkcpLCBRUV9nZXRpdGVtLCBRUV9zZXRpdGVtLCAiUSIsIDEsIDB9LAorI2VuZGlmCiAgICAgeydmJywgc2l6ZW9mKGZsb2F0KSwgZl9nZXRpdGVtLCBmX3NldGl0ZW0sICJmIiwgMCwgMH0sCiAgICAgeydkJywgc2l6ZW9mKGRvdWJsZSksIGRfZ2V0aXRlbSwgZF9zZXRpdGVtLCAiZCIsIDAsIDB9LAogICAgIHsnXDAnLCAwLCAwLCAwLCAwLCAwLCAwfSAvKiBTZW50aW5lbCAqLwpAQCAtNDI2LDExICs0ODMsMTEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgbmJ5dGVzID0gc2l6ZSAqIGRlc2NyLT5pdGVtc2l6ZTsKICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICBpZiAobmJ5dGVzIC8gZGVzY3ItPml0ZW1zaXplICE9IChzaXplX3Qpc2l6ZSkgeworICAgIGlmIChzaXplID4gUFlfU1NJWkVfVF9NQVggLyBkZXNjci0+aXRlbXNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgfQorICAgIG5ieXRlcyA9IHNpemUgKiBkZXNjci0+aXRlbXNpemU7CiAgICAgb3AgPSAoYXJyYXlvYmplY3QgKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKG9wID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01MTQsMTAgKzU3MSw4IEBACiAgICAgUHlfc3NpemVfdCBpLCBrOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKLSAgICBpZiAoIWFycmF5X0NoZWNrKHYpIHx8ICFhcnJheV9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghYXJyYXlfQ2hlY2sodikgfHwgIWFycmF5X0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICB2YSA9IChhcnJheW9iamVjdCAqKXY7CiAgICAgd2EgPSAoYXJyYXlvYmplY3QgKil3OwpAQCAtODc2LDcgKzkzMSw2IEBACiAgICAgaWYgKFB5X1NJWkUoc2VsZikgPiAwKSB7CiAgICAgICAgIGlmIChuIDwgMCkKICAgICAgICAgICAgIG4gPSAwOwotICAgICAgICBpdGVtcyA9IHNlbGYtPm9iX2l0ZW07CiAgICAgICAgIGlmICgoc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplICE9IDApICYmCiAgICAgICAgICAgICAoUHlfU0laRShzZWxmKSA+IFBZX1NTSVpFX1RfTUFYIC8gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplKSkgewogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CkBAIC0xMTkxLDE4ICsxMjQ1LDIzIEBACiAgICAgUHlPYmplY3QgKmYsICpiLCAqcmVzOwogICAgIFB5X3NzaXplX3QgaXRlbXNpemUgPSBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAgICAgUHlfc3NpemVfdCBuLCBuYnl0ZXM7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAgICAgaW50IG5vdF9lbm91Z2hfYnl0ZXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9uOmZyb21maWxlIiwgJmYsICZuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBuYnl0ZXMgPSBuICogaXRlbXNpemU7Ci0gICAgaWYgKG5ieXRlcyA8IDAgfHwgbmJ5dGVzL2l0ZW1zaXplICE9IG4pIHsKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBjb3VudCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG4gPiBQWV9TU0laRV9UX01BWCAvIGl0ZW1zaXplKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBuYnl0ZXMgPSBuICogaXRlbXNpemU7CiAKLSAgICBiID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAicmVhZCIsICJuIiwgbmJ5dGVzKTsKKyAgICBiID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9yZWFkLCAibiIsIG5ieXRlcyk7CiAgICAgaWYgKGIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyNTksMTIgKzEzMTgsMTQgQEAKICAgICAgICAgY2hhciogcHRyID0gc2VsZi0+b2JfaXRlbSArIGkqQkxPQ0tTSVpFOwogICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBCTE9DS1NJWkU7CiAgICAgICAgIFB5T2JqZWN0ICpieXRlcywgKnJlczsKKyAgICAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgICAgIGlmIChpKkJMT0NLU0laRSArIHNpemUgPiBuYnl0ZXMpCiAgICAgICAgICAgICBzaXplID0gbmJ5dGVzIC0gaSpCTE9DS1NJWkU7CiAgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwdHIsIHNpemUpOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJ3cml0ZSIsICJPIiwgYnl0ZXMpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3dyaXRlLCAiTyIsIGJ5dGVzKTsKICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNDU2LDcgKzE1MTcsNyBAQAogewogICAgIFB5X1VOSUNPREUgKnVzdHI7CiAgICAgUHlfc3NpemVfdCBuOwotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgY2hhciB0eXBlY29kZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSM6ZnJvbXVuaWNvZGUiLCAmdXN0ciwgJm4pKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0OTEsNyArMTU1Miw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlfdG91bmljb2RlKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgY2hhciB0eXBlY29kZTsKICAgICB0eXBlY29kZSA9IHNlbGYtPm9iX2Rlc2NyLT50eXBlY29kZTsKICAgICBpZiAoKHR5cGVjb2RlICE9ICd1JykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCkBAIC0xNjAxLDcgKzE2NjIsNyBAQAogICogYmUgZm91bmQuCiAgKi8KIHN0YXRpYyBlbnVtIG1hY2hpbmVfZm9ybWF0X2NvZGUKLXR5cGVjb2RlX3RvX21mb3JtYXRfY29kZShpbnQgdHlwZWNvZGUpCit0eXBlY29kZV90b19tZm9ybWF0X2NvZGUoY2hhciB0eXBlY29kZSkKIHsKICNpZmRlZiBXT1JEU19CSUdFTkRJQU4KICAgICBjb25zdCBpbnQgaXNfYmlnX2VuZGlhbiA9IDE7CkBAIC0xNjcxLDYgKzE3MzIsMTYgQEAKICAgICAgICAgaW50c2l6ZSA9IHNpemVvZihsb25nKTsKICAgICAgICAgaXNfc2lnbmVkID0gMDsKICAgICAgICAgYnJlYWs7CisjaWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzoKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpc19zaWduZWQgPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdRJzoKKyAgICAgICAgaW50c2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOworICAgICAgICBpc19zaWduZWQgPSAwOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBVTktOT1dOX0ZPUk1BVDsKICAgICB9CkBAIC0xNzAxLDcgKzE3NzIsNyBAQAogICogTlVMTCBpcyByZXR1cm5lZCB0byBpbmRpY2F0ZSBhIGZhaWx1cmUuCiAgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1tYWtlX2FycmF5KFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlLCBQeV9VTklDT0RFIHR5cGVjb2RlLCBQeU9iamVjdCAqaXRlbXMpCittYWtlX2FycmF5KFB5VHlwZU9iamVjdCAqYXJyYXl0eXBlLCBjaGFyIHR5cGVjb2RlLCBQeU9iamVjdCAqaXRlbXMpCiB7CiAgICAgUHlPYmplY3QgKm5ld19hcmdzOwogICAgIFB5T2JqZWN0ICphcnJheV9vYmo7CkBAIC0xNzEwLDcgKzE3ODEsNyBAQAogICAgIGFzc2VydChhcnJheXR5cGUgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGl0ZW1zICE9IE5VTEwpOwogCi0gICAgdHlwZWNvZGVfb2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZ0eXBlY29kZSwgMSk7CisgICAgdHlwZWNvZGVfb2JqID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKHR5cGVjb2RlKTsKICAgICBpZiAodHlwZWNvZGVfb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzQwLDE3ICsxODExLDE0IEBACiAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICpjb252ZXJ0ZWRfaXRlbXM7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpbnQgdHlwZWNvZGVfaW50OwotICAgIFB5X1VOSUNPREUgdHlwZWNvZGU7CisgICAgaW50IHR5cGVjb2RlOwogICAgIGVudW0gbWFjaGluZV9mb3JtYXRfY29kZSBtZm9ybWF0X2NvZGU7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPQ2lPOmFycmF5Ll9hcnJheV9yZWNvbnN0cnVjdG9yIiwKLSAgICAgICAgICAgICAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlX2ludCwgJm1mb3JtYXRfY29kZSwgJml0ZW1zKSkKKyAgICAgICAgICAgICAgICAgICAgJmFycmF5dHlwZSwgJnR5cGVjb2RlLCAmbWZvcm1hdF9jb2RlLCAmaXRlbXMpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHR5cGVjb2RlID0gKFB5X1VOSUNPREUpdHlwZWNvZGVfaW50OwotCiAgICAgaWYgKCFQeVR5cGVfQ2hlY2soYXJyYXl0eXBlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgImZpcnN0IGFyZ3VtZW50IG11c3QgYSB0eXBlIG9iamVjdCwgbm90ICUuMjAwcyIsCkBAIC0xNzY0LDcgKzE4MzIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZm9yIChkZXNjciA9IGRlc2NyaXB0b3JzOyBkZXNjci0+dHlwZWNvZGUgIT0gJ1wwJzsgZGVzY3IrKykgewotICAgICAgICBpZiAoZGVzY3ItPnR5cGVjb2RlID09IHR5cGVjb2RlKQorICAgICAgICBpZiAoKGludClkZXNjci0+dHlwZWNvZGUgPT0gdHlwZWNvZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKGRlc2NyLT50eXBlY29kZSA9PSAnXDAnKSB7CkBAIC0xNzg2LDkgKzE4NTQsOSBAQAogICAgIH0KIAogICAgIC8qIEZhc3QgcGF0aDogTm8gZGVjb2RpbmcgaGFzIHRvIGJlIGRvbmUuICovCi0gICAgaWYgKG1mb3JtYXRfY29kZSA9PSB0eXBlY29kZV90b19tZm9ybWF0X2NvZGUodHlwZWNvZGUpIHx8CisgICAgaWYgKG1mb3JtYXRfY29kZSA9PSB0eXBlY29kZV90b19tZm9ybWF0X2NvZGUoKGNoYXIpdHlwZWNvZGUpIHx8CiAgICAgICAgIG1mb3JtYXRfY29kZSA9PSBVTktOT1dOX0ZPUk1BVCkgewotICAgICAgICByZXR1cm4gbWFrZV9hcnJheShhcnJheXR5cGUsIHR5cGVjb2RlLCBpdGVtcyk7CisgICAgICAgIHJldHVybiBtYWtlX2FycmF5KGFycmF5dHlwZSwgKGNoYXIpdHlwZWNvZGUsIGl0ZW1zKTsKICAgICB9CiAKICAgICAvKiBTbG93IHBhdGg6IERlY29kZSB0aGUgYnl0ZSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBtYWNoaW5lCkBAIC0xOTM0LDcgKzIwMDIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICByZXN1bHQgPSBtYWtlX2FycmF5KGFycmF5dHlwZSwgdHlwZWNvZGUsIGNvbnZlcnRlZF9pdGVtcyk7CisgICAgcmVzdWx0ID0gbWFrZV9hcnJheShhcnJheXR5cGUsIChjaGFyKXR5cGVjb2RlLCBjb252ZXJ0ZWRfaXRlbXMpOwogICAgIFB5X0RFQ1JFRihjb252ZXJ0ZWRfaXRlbXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xOTQ5LDE0ICsyMDE3LDE2IEBACiAgICAgaW50IG1mb3JtYXRfY29kZTsKICAgICBzdGF0aWMgUHlPYmplY3QgKmFycmF5X3JlY29uc3RydWN0b3IgPSBOVUxMOwogICAgIGxvbmcgcHJvdG9jb2w7CisgICAgX1B5X0lERU5USUZJRVIoX2FycmF5X3JlY29uc3RydWN0b3IpOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKIAogICAgIGlmIChhcnJheV9yZWNvbnN0cnVjdG9yID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmFycmF5X21vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYXJyYXkiKTsKICAgICAgICAgaWYgKGFycmF5X21vZHVsZSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFycmF5X3JlY29uc3RydWN0b3IgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKAorICAgICAgICBhcnJheV9yZWNvbnN0cnVjdG9yID0gX1B5T2JqZWN0X0dldEF0dHJJZCgKICAgICAgICAgICAgIGFycmF5X21vZHVsZSwKLSAgICAgICAgICAgICJfYXJyYXlfcmVjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgJlB5SWRfX2FycmF5X3JlY29uc3RydWN0b3IpOwogICAgICAgICBQeV9ERUNSRUYoYXJyYXlfbW9kdWxlKTsKICAgICAgICAgaWYgKGFycmF5X3JlY29uc3RydWN0b3IgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTk3MSw3ICsyMDQxLDcgQEAKICAgICBpZiAocHJvdG9jb2wgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QgKilhcnJheSwgIl9fZGljdF9fIik7CisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopYXJyYXksICZQeUlkX19fZGljdF9fKTsKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTIwMjMsOCArMjA5Myw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYXJyYXlfZ2V0X3R5cGVjb2RlKGFycmF5b2JqZWN0ICphLCB2b2lkICpjbG9zdXJlKQogewotICAgIFB5X1VOSUNPREUgdGMgPSBhLT5vYl9kZXNjci0+dHlwZWNvZGU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgmdGMsIDEpOworICAgIGNoYXIgdHlwZWNvZGUgPSBhLT5vYl9kZXNjci0+dHlwZWNvZGU7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh0eXBlY29kZSk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yMDk4LDcgKzIxNjgsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X3JlcHIoYXJyYXlvYmplY3QgKmEpCiB7Ci0gICAgUHlfVU5JQ09ERSB0eXBlY29kZTsKKyAgICBjaGFyIHR5cGVjb2RlOwogICAgIFB5T2JqZWN0ICpzLCAqdiA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKQEAgLTIxMDcsNyArMjE3Nyw3IEBACiAgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiYXJyYXkoJyVjJykiLCAoaW50KXR5cGVjb2RlKTsKICAgICB9Ci0gICAgaWYgKCh0eXBlY29kZSA9PSAndScpKQorICAgIGlmICh0eXBlY29kZSA9PSAndScpCiAgICAgICAgIHYgPSBhcnJheV90b3VuaWNvZGUoYSwgTlVMTCk7CiAgICAgZWxzZQogICAgICAgICB2ID0gYXJyYXlfdG9saXN0KGEsIE5VTEwpOwpAQCAtMjMwMiw3ICsyMzcyLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgKGN1ciArIDEpICogaXRlbXNpemUsCiAgICAgICAgICAgICAgICAgbGltICogaXRlbXNpemUpOwogICAgICAgICB9Ci0gICAgICAgIGN1ciA9IHN0YXJ0ICsgc2xpY2VsZW5ndGggKiBzdGVwOworICAgICAgICBjdXIgPSBzdGFydCArIChzaXplX3Qpc2xpY2VsZW5ndGggKiBzdGVwOwogICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClQeV9TSVpFKHNlbGYpKSB7CiAgICAgICAgICAgICBtZW1tb3ZlKHNlbGYtPm9iX2l0ZW0gKyAoY3VyLXNsaWNlbGVuZ3RoKSAqIGl0ZW1zaXplLAogICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyBjdXIgKiBpdGVtc2l6ZSwKQEAgLTI0ODYsNyArMjU1NiwxNyBAQAogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKGluaXRpYWwgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soaW5pdGlhbCkpICB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuID0gUHlVbmljb2RlX0dFVF9EQVRBX1NJWkUoaW5pdGlhbCk7CisgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqdXN0cjsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG47CisKKyAgICAgICAgICAgICAgICB1c3RyID0gUHlVbmljb2RlX0FzVW5pY29kZShpbml0aWFsKTsKKyAgICAgICAgICAgICAgICBpZiAodXN0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbiA9IFB5VW5pY29kZV9HRVRfREFUQV9TSVpFKGluaXRpYWwpOwogICAgICAgICAgICAgICAgIGlmIChuID4gMCkgewogICAgICAgICAgICAgICAgICAgICBhcnJheW9iamVjdCAqc2VsZiA9IChhcnJheW9iamVjdCAqKWE7CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKml0ZW0gPSBzZWxmLT5vYl9pdGVtOwpAQCAtMjQ5OCw3ICsyNTc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtID0gaXRlbTsKICAgICAgICAgICAgICAgICAgICAgUHlfU0laRShzZWxmKSA9IG4gLyBzaXplb2YoUHlfVU5JQ09ERSk7Ci0gICAgICAgICAgICAgICAgICAgIG1lbWNweShpdGVtLCBQeVVuaWNvZGVfQVNfREFUQShpbml0aWFsKSwgbik7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShpdGVtLCB1c3RyLCBuKTsKICAgICAgICAgICAgICAgICAgICAgc2VsZi0+YWxsb2NhdGVkID0gUHlfU0laRShzZWxmKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yNTE5LDcgKzI1OTksMTEgQEAKICAgICAgICAgfQogICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICAiYmFkIHR5cGVjb2RlIChtdXN0IGJlIGIsIEIsIHUsIGgsIEgsIGksIEksIGwsIEwsIHEsIFEsIGYgb3IgZCkiKTsKKyNlbHNlCiAgICAgICAgICJiYWQgdHlwZWNvZGUgKG11c3QgYmUgYiwgQiwgdSwgaCwgSCwgaSwgSSwgbCwgTCwgZiBvciBkKSIpOworI2VuZGlmCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTI1NDIsMTIgKzI2MjYsMTggQEAKICAgICAnSScgICAgICAgICB1bnNpZ25lZCBpbnRlZ2VyICAgMiBcblwKICAgICAnbCcgICAgICAgICBzaWduZWQgaW50ZWdlciAgICAgNCBcblwKICAgICAnTCcgICAgICAgICB1bnNpZ25lZCBpbnRlZ2VyICAgNCBcblwKKyAgICAncScgICAgICAgICBzaWduZWQgaW50ZWdlciAgICAgOCAoc2VlIG5vdGUpIFxuXAorICAgICdRJyAgICAgICAgIHVuc2lnbmVkIGludGVnZXIgICA4IChzZWUgbm90ZSkgXG5cCiAgICAgJ2YnICAgICAgICAgZmxvYXRpbmcgcG9pbnQgICAgIDQgXG5cCiAgICAgJ2QnICAgICAgICAgZmxvYXRpbmcgcG9pbnQgICAgIDggXG5cCiBcblwKIE5PVEU6IFRoZSAndScgdHlwZWNvZGUgY29ycmVzcG9uZHMgdG8gUHl0aG9uJ3MgdW5pY29kZSBjaGFyYWN0ZXIuIE9uIFxuXAogbmFycm93IGJ1aWxkcyB0aGlzIGlzIDItYnl0ZXMgb24gd2lkZSBidWlsZHMgdGhpcyBpcyA0LWJ5dGVzLlxuXAogXG5cCitOT1RFOiBUaGUgJ3EnIGFuZCAnUScgdHlwZSBjb2RlcyBhcmUgb25seSBhdmFpbGFibGUgaWYgdGhlIHBsYXRmb3JtIFxuXAorQyBjb21waWxlciB1c2VkIHRvIGJ1aWxkIFB5dGhvbiBzdXBwb3J0cyAnbG9uZyBsb25nJywgb3IsIG9uIFdpbmRvd3MsIFxuXAorJ19faW50NjQnLlxuXAorXG5cCiBUaGUgY29uc3RydWN0b3IgaXM6XG5cCiBcblwKIGFycmF5KHR5cGVjb2RlIFssIGluaXRpYWxpemVyXSkgLS0gY3JlYXRlIGEgbmV3IGFycmF5XG5cCkBAIC0yNjkyLDYgKzI3ODIsMzQgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5aXRlcl9yZWR1Y2UoYXJyYXlpdGVyb2JqZWN0ICppdCkKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKW4iLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5hbywgaXQtPmluZGV4KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2FycmF5aXRlcl9zZXRzdGF0ZShhcnJheWl0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICBpbmRleCA9IDA7CisgICAgaXQtPmluZGV4ID0gaW5kZXg7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CitzdGF0aWMgUHlNZXRob2REZWYgYXJyYXlpdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilhcnJheWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pYXJyYXlpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5QXJyYXlJdGVyX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgImFycmF5aXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KQEAgLTI3MjEsNyArMjgzOSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylhcnJheWl0ZXJfbmV4dCwgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGFycmF5aXRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiB9OwogCiAKQEAgLTI3NTEsOSArMjg2OSw5IEBACiBQeUluaXRfYXJyYXkodm9pZCkKIHsKICAgICBQeU9iamVjdCAqbTsKKyAgICBjaGFyIGJ1ZmZlcltQeV9BUlJBWV9MRU5HVEgoZGVzY3JpcHRvcnMpXSwgKnA7CiAgICAgUHlPYmplY3QgKnR5cGVjb2RlczsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAwOwotICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnA7CiAgICAgc3RydWN0IGFycmF5ZGVzY3IgKmRlc2NyOwogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmQXJyYXl0eXBlKSA8IDApCkBAIC0yNzcyLDEzICsyODkwLDEzIEBACiAgICAgICAgIHNpemUrKzsKICAgICB9CiAKLSAgICB0eXBlY29kZXMgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHR5cGVjb2Rlcyk7CisgICAgcCA9IGJ1ZmZlcjsKICAgICBmb3IgKGRlc2NyID0gZGVzY3JpcHRvcnM7IGRlc2NyLT50eXBlY29kZSAhPSAnXDAnOyBkZXNjcisrKSB7CiAgICAgICAgICpwKysgPSAoY2hhcilkZXNjci0+dHlwZWNvZGU7CiAgICAgfQorICAgIHR5cGVjb2RlcyA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShidWZmZXIsIHAgLSBidWZmZXIsIE5VTEwpOwogCi0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0eXBlY29kZXMiLCAoUHlPYmplY3QgKil0eXBlY29kZXMpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHlwZWNvZGVzIiwgdHlwZWNvZGVzKTsKIAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihtKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYXRleGl0bW9kdWxlLmMgYi9Nb2R1bGVzL2F0ZXhpdG1vZHVsZS5jCmluZGV4IDFlZTdlYWQuLmY2OGQ4MDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXRleGl0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9hdGV4aXRtb2R1bGUuYwpAQCAtMjExLDYgKzIxMSwxNCBAQAogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCitzdGF0aWMgdm9pZAorYXRleGl0X2ZyZWUoUHlPYmplY3QgKm0pCit7CisgICAgYXRleGl0bW9kdWxlX3N0YXRlICptb2RzdGF0ZTsKKyAgICBtb2RzdGF0ZSA9IEdFVF9BVEVYSVRfU1RBVEUobSk7CisgICAgUHlNZW1fRnJlZShtb2RzdGF0ZS0+YXRleGl0X2NhbGxiYWNrcyk7Cit9CisKIFB5RG9jX1NUUlZBUihhdGV4aXRfdW5yZWdpc3Rlcl9fZG9jX18sCiAidW5yZWdpc3RlcihmdW5jKSAtPiBOb25lXG5cCiBcblwKQEAgLTI3NSw3ICsyODMsNyBAQAogCU5VTEwsCiAJTlVMTCwKIAlOVUxMLAotCU5VTEwKKwkoZnJlZWZ1bmMpYXRleGl0X2ZyZWUKIH07CiAKIFB5TU9ESU5JVF9GVU5DCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F1ZGlvb3AuYyBiL01vZHVsZXMvYXVkaW9vcC5jCmluZGV4IDlhYjQ4MzQuLjJiY2EzOTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXVkaW9vcC5jCisrKyBiL01vZHVsZXMvYXVkaW9vcC5jCkBAIC01MTMsNyArNTEzLDYgQEAKIAogICAgIGJlc3RfcmVzdWx0ID0gcmVzdWx0OwogICAgIGJlc3RfaiA9IDA7Ci0gICAgaiA9IDA7CiAKICAgICBmb3IgKCBqPTE7IGo8PWxlbjEtbGVuMjsgaisrKSB7CiAgICAgICAgIGFqX20xID0gKGRvdWJsZSljcDFbai0xXTsKQEAgLTU5OSw3ICs1OTgsNiBAQAogCiAgICAgYmVzdF9yZXN1bHQgPSByZXN1bHQ7CiAgICAgYmVzdF9qID0gMDsKLSAgICBqID0gMDsKIAogICAgIGZvciAoIGo9MTsgajw9bGVuMS1sZW4yOyBqKyspIHsKICAgICAgICAgYWpfbTEgPSAoZG91YmxlKWNwMVtqLTFdOwpAQCAtMTExMCw4ICsxMTA4LDcgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKEF1ZGlvb3BFcnJvciwgIiMgb2YgY2hhbm5lbHMgc2hvdWxkIGJlID49IDEiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGJ5dGVzX3Blcl9mcmFtZSA9IHNpemUgKiBuY2hhbm5lbHM7Ci0gICAgaWYgKGJ5dGVzX3Blcl9mcmFtZSAvIG5jaGFubmVscyAhPSBzaXplKSB7CisgICAgaWYgKHNpemUgPiBJTlRfTUFYIC8gbmNoYW5uZWxzKSB7CiAgICAgICAgIC8qIFRoaXMgb3ZlcmZsb3cgdGVzdCBpcyByaWdvcm91c2x5IGNvcnJlY3QgYmVjYXVzZQogICAgICAgICAgICBib3RoIG11bHRpcGxpY2FuZHMgYXJlID49IDEuICBVc2UgdGhlIGFyZ3VtZW50IG5hbWVzCiAgICAgICAgICAgIGZyb20gdGhlIGRvY3MgZm9yIHRoZSBlcnJvciBtc2cuICovCkBAIC0xMTE5LDYgKzExMTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoICogbmNoYW5uZWxzIHRvbyBiaWcgZm9yIGEgQyBpbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGJ5dGVzX3Blcl9mcmFtZSA9IHNpemUgKiBuY2hhbm5lbHM7CiAgICAgaWYgKHdlaWdodEEgPCAxIHx8IHdlaWdodEIgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhBdWRpb29wRXJyb3IsCiAgICAgICAgICAgICAid2VpZ2h0QSBzaG91bGQgYmUgPj0gMSwgd2VpZ2h0QiBzaG91bGQgYmUgPj0gMCIpOwpAQCAtMTQzMyw3ICsxNDMxLDYgQEAKICAgICBpZiAoIHN0YXRlID09IFB5X05vbmUgKSB7CiAgICAgICAgIC8qIEZpcnN0IHRpbWUsIGl0IHNlZW1zLiBTZXQgZGVmYXVsdHMgKi8KICAgICAgICAgdmFscHJlZCA9IDA7Ci0gICAgICAgIHN0ZXAgPSA3OwogICAgICAgICBpbmRleCA9IDA7CiAgICAgfSBlbHNlIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJpaSIsICZ2YWxwcmVkLCAmaW5kZXgpICkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNTM0LDcgKzE1MzEsNiBAQAogICAgIGlmICggc3RhdGUgPT0gUHlfTm9uZSApIHsKICAgICAgICAgLyogRmlyc3QgdGltZSwgaXQgc2VlbXMuIFNldCBkZWZhdWx0cyAqLwogICAgICAgICB2YWxwcmVkID0gMDsKLSAgICAgICAgc3RlcCA9IDc7CiAgICAgICAgIGluZGV4ID0gMDsKICAgICB9IGVsc2UgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgImlpIiwgJnZhbHByZWQsICZpbmRleCkgKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYmluYXNjaWkuYyBiL01vZHVsZXMvYmluYXNjaWkuYwppbmRleCAxOTY4MWI0Li5hZDVlMWIxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2JpbmFzY2lpLmMKKysrIGIvTW9kdWxlcy9iaW5hc2NpaS5jCkBAIC0xODMsNiArMTgzLDQ0IEBACiAgICAgMHg2ZTE3LCAweDdlMzYsIDB4NGU1NSwgMHg1ZTc0LCAweDJlOTMsIDB4M2ViMiwgMHgwZWQxLCAweDFlZjAsCiB9OwogCitzdGF0aWMgaW50Cithc2NpaV9idWZmZXJfY29udmVydGVyKFB5T2JqZWN0ICphcmcsIFB5X2J1ZmZlciAqYnVmKQoreworICAgIGlmIChhcmcgPT0gTlVMTCkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShhcmcpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGFyZ3VtZW50IHNob3VsZCBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVycyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKGFyZykgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICBidWYtPmJ1ZiA9ICh2b2lkICopIFB5VW5pY29kZV8xQllURV9EQVRBKGFyZyk7CisgICAgICAgIGJ1Zi0+bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYXJnKTsKKyAgICAgICAgYnVmLT5vYmogPSBOVUxMOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsIGJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGJ5dGVzLCBidWZmZXIgb3IgQVNDSUkgc3RyaW5nLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICVSIiwgUHlfVFlQRShhcmcpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghUHlCdWZmZXJfSXNDb250aWd1b3VzKGJ1ZiwgJ0MnKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIGNvbnRpZ3VvdXMgYnVmZmVyLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICVSIiwgUHlfVFlQRShhcmcpKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZShidWYpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworfQorCisKIFB5RG9jX1NUUlZBUihkb2NfYTJiX3V1LCAiKGFzY2lpKSAtPiBiaW4uIERlY29kZSBhIGxpbmUgb2YgdXVlbmNvZGVkIGRhdGEiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5Niw3ICsyMzQsNyBAQAogICAgIFB5T2JqZWN0ICpydjsKICAgICBQeV9zc2l6ZV90IGFzY2lpX2xlbiwgYmluX2xlbjsKIAotICAgIGlmICggIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmEyYl91dSIsICZwYXNjaWkpICkKKyAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjphMmJfdXUiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFzY2lpKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzY2lpX2RhdGEgPSBwYXNjaWkuYnVmOwogICAgIGFzY2lpX2xlbiA9IHBhc2NpaS5sZW47CkBAIC0zNzAsNyArNDA4LDcgQEAKICAgICBQeV9zc2l6ZV90IGFzY2lpX2xlbiwgYmluX2xlbjsKICAgICBpbnQgcXVhZF9wb3MgPSAwOwogCi0gICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6YTJiX2Jhc2U2NCIsICZwYXNjaWkpICkKKyAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjphMmJfYmFzZTY0IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBhc2NpaSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc2NpaV9kYXRhID0gcGFzY2lpLmJ1ZjsKICAgICBhc2NpaV9sZW4gPSBwYXNjaWkubGVuOwpAQCAtNTQ2LDcgKzU4NCw3IEBACiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgaW50IGRvbmUgPSAwOwogCi0gICAgaWYgKCAhUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6YTJiX2hxeCIsICZwYXNjaWkpICkKKyAgICBpZiAoICFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjphMmJfaHF4IiwgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBhc2NpaSkgKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc2NpaV9kYXRhID0gcGFzY2lpLmJ1ZjsKICAgICBsZW4gPSBwYXNjaWkubGVuOwpAQCAtMTA3OCwxMyArMTExNiwxMSBAQAogCiAgICAgLyogbWFrZSBoZXggdmVyc2lvbiBvZiBzdHJpbmcsIHRha2VuIGZyb20gc2hhbW9kdWxlLmMgKi8KICAgICBmb3IgKGk9aj0wOyBpIDwgYXJnbGVuOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoYXJnYnVmW2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIHJldGJ1ZltqKytdID0gYzsKKyAgICAgICAgcmV0YnVmW2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSBhcmdidWZbaV0gJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgcmV0YnVmW2orK10gPSBjOworICAgICAgICByZXRidWZbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGFyZyk7CiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTExMjEsNyArMTE1Nyw3IEBACiAgICAgY2hhciogcmV0YnVmOwogICAgIFB5X3NzaXplX3QgaSwgajsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6YTJiX2hleCIsICZwYXJnKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmEyYl9oZXgiLCBhc2NpaV9idWZmZXJfY29udmVydGVyLCAmcGFyZykpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFyZ2J1ZiA9IHBhcmcuYnVmOwogICAgIGFyZ2xlbiA9IHBhcmcubGVuOwpAQCAtMTE5OSw4ICsxMjM1LDggQEAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImRhdGEiLCAiaGVhZGVyIiwgTlVMTH07CiAgICAgaW50IGhlYWRlciA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ5KnxpIiwga3dsaXN0LCAmcGRhdGEsCi0gICAgICAgICAgJmhlYWRlcikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aTphMmJfcXAiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNjaWlfYnVmZmVyX2NvbnZlcnRlciwgJnBkYXRhLCAmaGVhZGVyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZGF0YSA9IHBkYXRhLmJ1ZjsKICAgICBkYXRhbGVuID0gcGRhdGEubGVuOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iejJtb2R1bGUuYyBiL01vZHVsZXMvYnoybW9kdWxlLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OTU5NjUuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9iejJtb2R1bGUuYworKysgL2Rldi9udWxsCkBAIC0xLDIxOTMgKzAsMCBAQAotLyoKLQotcHl0aG9uLWJ6MiAtIHB5dGhvbiBiejIgbGlicmFyeSBpbnRlcmZhY2UKLQotQ29weXJpZ2h0IChjKSAyMDAyICBHdXN0YXZvIE5pZW1leWVyIDxuaWVtZXllckBjb25lY3RpdmEuY29tPgotQ29weXJpZ2h0IChjKSAyMDAyICBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjsgQWxsIFJpZ2h0cyBSZXNlcnZlZAotCi0qLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxiemxpYi5oPgotI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSNpbmNsdWRlICJweXRocmVhZC5oIgotI2VuZGlmCi0KLXN0YXRpYyBjaGFyIF9fYXV0aG9yX19bXSA9Ci0iVGhlIGJ6MiBweXRob24gbW9kdWxlIHdhcyB3cml0dGVuIGJ5OlxuXAotXG5cCi0gICAgR3VzdGF2byBOaWVtZXllciA8bmllbWV5ZXJAY29uZWN0aXZhLmNvbT5cblwKLSI7Ci0KLS8qIE91ciB2ZXJ5IG93biBvZmZfdC1saWtlIHR5cGUsIDY0LWJpdCBpZiBwb3NzaWJsZSAqLwotLyogY29waWVkIGZyb20gT2JqZWN0cy9maWxlb2JqZWN0LmMgKi8KLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotdHlwZWRlZiBvZmZfdCBQeV9vZmZfdDsKLSNlbGlmIFNJWkVPRl9PRkZfVCA+PSA4Ci10eXBlZGVmIG9mZl90IFB5X29mZl90OwotI2VsaWYgU0laRU9GX0ZQT1NfVCA+PSA4Ci10eXBlZGVmIGZwb3NfdCBQeV9vZmZfdDsKLSNlbHNlCi0jZXJyb3IgIkxhcmdlIGZpbGUgc3VwcG9ydCwgYnV0IG5laXRoZXIgb2ZmX3Qgbm9yIGZwb3NfdCBpcyBsYXJnZSBlbm91Z2guIgotI2VuZGlmCi0KLSNkZWZpbmUgQlVGKHYpIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpCi0KLSNkZWZpbmUgTU9ERV9DTE9TRUQgICAwCi0jZGVmaW5lIE1PREVfUkVBRCAgICAgMQotI2RlZmluZSBNT0RFX1JFQURfRU9GIDIKLSNkZWZpbmUgTU9ERV9XUklURSAgICAzCi0KLQotI2lmbmRlZiBCWl9DT05GSUdfRVJST1IKLQotI2RlZmluZSBCWjJfYnpSZWFkIGJ6UmVhZAotI2RlZmluZSBCWjJfYnpSZWFkT3BlbiBielJlYWRPcGVuCi0jZGVmaW5lIEJaMl9ielJlYWRDbG9zZSBielJlYWRDbG9zZQotI2RlZmluZSBCWjJfYnpXcml0ZSBieldyaXRlCi0jZGVmaW5lIEJaMl9ieldyaXRlT3BlbiBieldyaXRlT3BlbgotI2RlZmluZSBCWjJfYnpXcml0ZUNsb3NlIGJ6V3JpdGVDbG9zZQotI2RlZmluZSBCWjJfYnpDb21wcmVzcyBiekNvbXByZXNzCi0jZGVmaW5lIEJaMl9iekNvbXByZXNzSW5pdCBiekNvbXByZXNzSW5pdAotI2RlZmluZSBCWjJfYnpDb21wcmVzc0VuZCBiekNvbXByZXNzRW5kCi0jZGVmaW5lIEJaMl9iekRlY29tcHJlc3MgYnpEZWNvbXByZXNzCi0jZGVmaW5lIEJaMl9iekRlY29tcHJlc3NJbml0IGJ6RGVjb21wcmVzc0luaXQKLSNkZWZpbmUgQloyX2J6RGVjb21wcmVzc0VuZCBiekRlY29tcHJlc3NFbmQKLQotI2VuZGlmIC8qICEgQlpfQ09ORklHX0VSUk9SICovCi0KLQotI2lmZGVmIFdJVEhfVEhSRUFECi0jZGVmaW5lIEFDUVVJUkVfTE9DSyhvYmopIGRvIHsgXAotICAgIGlmICghUHlUaHJlYWRfYWNxdWlyZV9sb2NrKG9iai0+bG9jaywgMCkpIHsgXAotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTIFwKLSAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKG9iai0+bG9jaywgMSk7IFwKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMgXAotICAgIH0gfSB3aGlsZSgwKQotI2RlZmluZSBSRUxFQVNFX0xPQ0sob2JqKSBQeVRocmVhZF9yZWxlYXNlX2xvY2sob2JqLT5sb2NrKQotI2Vsc2UKLSNkZWZpbmUgQUNRVUlSRV9MT0NLKG9iaikKLSNkZWZpbmUgUkVMRUFTRV9MT0NLKG9iaikKLSNlbmRpZgotCi0jZGVmaW5lIE1JTihYLCBZKSAoKChYKSA8IChZKSkgPyAoWCkgOiAoWSkpCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU3RydWN0dXJlIGRlZmluaXRpb25zLiAqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlPYmplY3RfSEVBRAotICAgIEZJTEUgKnJhd2ZwOwotCi0gICAgY2hhciogZl9idWY7ICAgICAgICAgICAgICAgIC8qIEFsbG9jYXRlZCByZWFkYWhlYWQgYnVmZmVyICovCi0gICAgY2hhciogZl9idWZlbmQ7ICAgICAgICAgICAgIC8qIFBvaW50cyBhZnRlciBsYXN0IG9jY3VwaWVkIHBvc2l0aW9uICovCi0gICAgY2hhciogZl9idWZwdHI7ICAgICAgICAgICAgIC8qIEN1cnJlbnQgYnVmZmVyIHBvc2l0aW9uICovCi0KLSAgICBCWkZJTEUgKmZwOwotICAgIGludCBtb2RlOwotICAgIFB5X29mZl90IHBvczsKLSAgICBQeV9vZmZfdCBzaXplOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7Ci0jZW5kaWYKLX0gQloyRmlsZU9iamVjdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBiel9zdHJlYW0gYnpzOwotICAgIGludCBydW5uaW5nOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2s7Ci0jZW5kaWYKLX0gQloyQ29tcE9iamVjdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotICAgIFB5T2JqZWN0X0hFQUQKLSAgICBiel9zdHJlYW0gYnpzOwotICAgIGludCBydW5uaW5nOwotICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwotI2VuZGlmCi19IEJaMkRlY29tcE9iamVjdDsKLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBVdGlsaXR5IGZ1bmN0aW9ucy4gKi8KLQotLyogUmVmdXNlIHJlZ3VsYXIgSS9PIGlmIHRoZXJlJ3MgZGF0YSBpbiB0aGUgaXRlcmF0aW9uLWJ1ZmZlci4KLSAqIE1peGluZyB0aGVtIHdvdWxkIGNhdXNlIGRhdGEgdG8gYXJyaXZlIG91dCBvZiBvcmRlciwgYXMgdGhlIHJlYWQqCi0gKiBtZXRob2RzIGRvbid0IHVzZSB0aGUgaXRlcmF0aW9uIGJ1ZmZlci4gKi8KLXN0YXRpYyBpbnQKLWNoZWNrX2l0ZXJidWZmZXJlZChCWjJGaWxlT2JqZWN0ICpmKQotewotICAgIGlmIChmLT5mX2J1ZiAhPSBOVUxMICYmCi0gICAgICAgIChmLT5mX2J1ZmVuZCAtIGYtPmZfYnVmcHRyKSA+IDAgJiYKLSAgICAgICAgZi0+Zl9idWZbMF0gIT0gJ1wwJykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJNaXhpbmcgaXRlcmF0aW9uIGFuZCByZWFkIG1ldGhvZHMgd291bGQgbG9zZSBkYXRhIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLVV0aWxfQ2F0Y2hCWjJFcnJvcihpbnQgYnplcnJvcikKLXsKLSAgICBpbnQgcmV0ID0gMDsKLSAgICBzd2l0Y2goYnplcnJvcikgewotICAgICAgICBjYXNlIEJaX09LOgotICAgICAgICBjYXNlIEJaX1NUUkVBTV9FTkQ6Ci0gICAgICAgICAgICBicmVhazsKLQotI2lmZGVmIEJaX0NPTkZJR19FUlJPUgotICAgICAgICBjYXNlIEJaX0NPTkZJR19FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGJ6MiBsaWJyYXJ5IHdhcyBub3QgY29tcGlsZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3JyZWN0bHkiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgICAgIGNhc2UgQlpfUEFSQU1fRVJST1I6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIGJ6MiBsaWJyYXJ5IGhhcyByZWNlaXZlZCB3cm9uZyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX01FTV9FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9EQVRBX0VSUk9SOgotICAgICAgICBjYXNlIEJaX0RBVEFfRVJST1JfTUFHSUM6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwgImludmFsaWQgZGF0YSBzdHJlYW0iKTsKLSAgICAgICAgICAgIHJldCA9IDE7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEJaX0lPX0VSUk9SOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsICJ1bmtub3duIElPIGVycm9yIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9VTkVYUEVDVEVEX0VPRjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19FT0ZFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2dpY2FsIGVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkIik7Ci0gICAgICAgICAgICByZXQgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBCWl9TRVFVRU5DRV9FUlJPUjoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nIHNlcXVlbmNlIG9mIGJ6MiBsaWJyYXJ5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZHMgdXNlZCIpOwotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi0jaWYgQlVGU0laIDwgODE5MgotI2RlZmluZSBTTUFMTENIVU5LIDgxOTIKLSNlbHNlCi0jZGVmaW5lIFNNQUxMQ0hVTksgQlVGU0laCi0jZW5kaWYKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpuZXdfYnVmZmVyc2l6ZSgpLiAqLwotc3RhdGljIHNpemVfdAotVXRpbF9OZXdCdWZmZXJTaXplKHNpemVfdCBjdXJyZW50c2l6ZSkKLXsKLSAgICAvKiBFeHBhbmQgdGhlIGJ1ZmZlciBieSBhbiBhbW91bnQgcHJvcG9ydGlvbmFsIHRvIHRoZSBjdXJyZW50IHNpemUsCi0gICAgICAgZ2l2aW5nIHVzIGFtb3J0aXplZCBsaW5lYXItdGltZSBiZWhhdmlvci4gVXNlIGEgbGVzcy10aGFuLWRvdWJsZQotICAgICAgIGdyb3d0aCBmYWN0b3IgdG8gYXZvaWQgZXhjZXNzaXZlIGFsbG9jYXRpb24uICovCi0gICAgcmV0dXJuIGN1cnJlbnRzaXplICsgKGN1cnJlbnRzaXplID4+IDMpICsgNjsKLX0KLQotc3RhdGljIGludAotVXRpbF9Hcm93QnVmZmVyKFB5T2JqZWN0ICoqYnVmKQotewotICAgIHNpemVfdCBzaXplID0gUHlCeXRlc19HRVRfU0laRSgqYnVmKTsKLSAgICBzaXplX3QgbmV3X3NpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoc2l6ZSk7Ci0gICAgaWYgKG5ld19zaXplID4gc2l6ZSkgewotICAgICAgICByZXR1cm4gX1B5Qnl0ZXNfUmVzaXplKGJ1ZiwgbmV3X3NpemUpOwotICAgIH0gZWxzZSB7ICAvKiBvdmVyZmxvdyAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gYWxsb2NhdGUgYnVmZmVyIC0gb3V0cHV0IHRvbyBsYXJnZSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmdldF9saW5lKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotVXRpbF9HZXRMaW5lKEJaMkZpbGVPYmplY3QgKmYsIGludCBuKQotewotICAgIGNoYXIgYzsKLSAgICBjaGFyICpidWYsICplbmQ7Ci0gICAgc2l6ZV90IHRvdGFsX3Zfc2l6ZTsgICAgICAgIC8qIHRvdGFsICMgb2Ygc2xvdHMgaW4gYnVmZmVyICovCi0gICAgc2l6ZV90IHVzZWRfdl9zaXplOyAgICAgICAgIC8qICMgdXNlZCBzbG90cyBpbiBidWZmZXIgKi8KLSAgICBzaXplX3QgaW5jcmVtZW50OyAgICAgICAvKiBhbW91bnQgdG8gaW5jcmVtZW50IHRoZSBidWZmZXIgKi8KLSAgICBQeU9iamVjdCAqdjsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBpbnQgYnl0ZXNfcmVhZDsKLQotICAgIHRvdGFsX3Zfc2l6ZSA9IG4gPiAwID8gbiA6IDEwMDsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHRvdGFsX3Zfc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBidWYgPSBCVUYodik7Ci0gICAgZW5kID0gYnVmICsgdG90YWxfdl9zaXplOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGJ5dGVzX3JlYWQgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBmLT5mcCwgJmMsIDEpOwotICAgICAgICAgICAgZi0+cG9zKys7Ci0gICAgICAgICAgICBpZiAoYnl0ZXNfcmVhZCA9PSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKmJ1ZisrID0gYzsKLSAgICAgICAgfSB3aGlsZSAoYnplcnJvciA9PSBCWl9PSyAmJiBjICE9ICdcbicgJiYgYnVmICE9IGVuZCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGYtPnNpemUgPSBmLT5wb3M7Ci0gICAgICAgICAgICBmLT5tb2RlID0gTU9ERV9SRUFEX0VPRjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjID09ICdcbicpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLyogTXVzdCBiZSBiZWNhdXNlIGJ1ZiA9PSBlbmQgKi8KLSAgICAgICAgaWYgKG4gPiAwKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHVzZWRfdl9zaXplID0gdG90YWxfdl9zaXplOwotICAgICAgICBpbmNyZW1lbnQgPSB0b3RhbF92X3NpemUgPj4gMjsgLyogbWlsZCBleHBvbmVudGlhbCBncm93dGggKi8KLSAgICAgICAgdG90YWxfdl9zaXplICs9IGluY3JlbWVudDsKLSAgICAgICAgaWYgKHRvdGFsX3Zfc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICJsaW5lIGlzIGxvbmdlciB0aGFuIGEgUHl0aG9uIHN0cmluZyBjYW4gaG9sZCIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmdiwgdG90YWxfdl9zaXplKSA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZiA9IEJVRih2KSArIHVzZWRfdl9zaXplOwotICAgICAgICBlbmQgPSBCVUYodikgKyB0b3RhbF92X3NpemU7Ci0gICAgfQotCi0gICAgdXNlZF92X3NpemUgPSBidWYgLSBCVUYodik7Ci0gICAgaWYgKHVzZWRfdl9zaXplICE9IHRvdGFsX3Zfc2l6ZSkgewotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ2LCB1c2VkX3Zfc2l6ZSkgPCAwKSB7Ci0gICAgICAgICAgICB2ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gdjsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpkcm9wX3JlYWRhaGVhZCgpLiAqLwotc3RhdGljIHZvaWQKLVV0aWxfRHJvcFJlYWRBaGVhZChCWjJGaWxlT2JqZWN0ICpmKQotewotICAgIGlmIChmLT5mX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5TWVtX0ZyZWUoZi0+Zl9idWYpOwotICAgICAgICBmLT5mX2J1ZiA9IE5VTEw7Ci0gICAgfQotfQotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOnJlYWRhaGVhZCgpLiAqLwotc3RhdGljIGludAotVXRpbF9SZWFkQWhlYWQoQloyRmlsZU9iamVjdCAqZiwgaW50IGJ1ZnNpemUpCi17Ci0gICAgaW50IGNodW5rc2l6ZTsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmIChmLT5mX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgIGlmKChmLT5mX2J1ZmVuZCAtIGYtPmZfYnVmcHRyKSA+PSAxKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFV0aWxfRHJvcFJlYWRBaGVhZChmKTsKLSAgICB9Ci0gICAgaWYgKGYtPm1vZGUgPT0gTU9ERV9SRUFEX0VPRikgewotICAgICAgICBmLT5mX2J1ZnB0ciA9IGYtPmZfYnVmOwotICAgICAgICBmLT5mX2J1ZmVuZCA9IGYtPmZfYnVmOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKChmLT5mX2J1ZiA9IFB5TWVtX01hbGxvYyhidWZzaXplKSkgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBjaHVua3NpemUgPSBCWjJfYnpSZWFkKCZiemVycm9yLCBmLT5mcCwgZi0+Zl9idWYsIGJ1ZnNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgZi0+cG9zICs9IGNodW5rc2l6ZTsKLSAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgIGYtPnNpemUgPSBmLT5wb3M7Ci0gICAgICAgIGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIFV0aWxfRHJvcFJlYWRBaGVhZChmKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBmLT5mX2J1ZnB0ciA9IGYtPmZfYnVmOwotICAgIGYtPmZfYnVmZW5kID0gZi0+Zl9idWYgKyBjaHVua3NpemU7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8qIFRoaXMgaXMgYSBoYWNrZWQgdmVyc2lvbiBvZiBQeXRob24ncwotICogZmlsZW9iamVjdC5jOnJlYWRhaGVhZF9nZXRfbGluZV9za2lwKCkuICovCi1zdGF0aWMgUHlCeXRlc09iamVjdCAqCi1VdGlsX1JlYWRBaGVhZEdldExpbmVTa2lwKEJaMkZpbGVPYmplY3QgKmYsIGludCBza2lwLCBpbnQgYnVmc2l6ZSkKLXsKLSAgICBQeUJ5dGVzT2JqZWN0KiBzOwotICAgIGNoYXIgKmJ1ZnB0cjsKLSAgICBjaGFyICpidWY7Ci0gICAgaW50IGxlbjsKLQotICAgIGlmIChmLT5mX2J1ZiA9PSBOVUxMKQotICAgICAgICBpZiAoVXRpbF9SZWFkQWhlYWQoZiwgYnVmc2l6ZSkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBsZW4gPSBmLT5mX2J1ZmVuZCAtIGYtPmZfYnVmcHRyOwotICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNraXApOwotICAgIGJ1ZnB0ciA9IG1lbWNocihmLT5mX2J1ZnB0ciwgJ1xuJywgbGVuKTsKLSAgICBpZiAoYnVmcHRyICE9IE5VTEwpIHsKLSAgICAgICAgYnVmcHRyKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvdW50IHRoZSAnXG4nICovCi0gICAgICAgIGxlbiA9IGJ1ZnB0ciAtIGYtPmZfYnVmcHRyOwotICAgICAgICBzID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2tpcCtsZW4pOwotICAgICAgICBpZiAocyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhzKStza2lwLCBmLT5mX2J1ZnB0ciwgbGVuKTsKLSAgICAgICAgZi0+Zl9idWZwdHIgPSBidWZwdHI7Ci0gICAgICAgIGlmIChidWZwdHIgPT0gZi0+Zl9idWZlbmQpCi0gICAgICAgICAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoZik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYnVmcHRyID0gZi0+Zl9idWZwdHI7Ci0gICAgICAgIGJ1ZiA9IGYtPmZfYnVmOwotICAgICAgICBmLT5mX2J1ZiA9IE5VTEw7ICAgICAgICAgICAgICAgIC8qIEZvcmNlIG5ldyByZWFkYWhlYWQgYnVmZmVyICovCi0gICAgICAgIHMgPSBVdGlsX1JlYWRBaGVhZEdldExpbmVTa2lwKGYsIHNraXArbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZzaXplICsgKGJ1ZnNpemU+PjIpKTsKLSAgICAgICAgaWYgKHMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlNZW1fRnJlZShidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KFB5Qnl0ZXNfQVNfU1RSSU5HKHMpK3NraXAsIGJ1ZnB0ciwgbGVuKTsKLSAgICAgICAgUHlNZW1fRnJlZShidWYpOwotICAgIH0KLSAgICByZXR1cm4gczsKLX0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNZXRob2RzIG9mIEJaMkZpbGUuICovCi0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3JlYWRfX2RvY19fLAotInJlYWQoW3NpemVdKSAtPiBzdHJpbmdcblwKLVxuXAotUmVhZCBhdCBtb3N0IHNpemUgdW5jb21wcmVzc2VkIGJ5dGVzLCByZXR1cm5lZCBhcyBhIHN0cmluZy4gSWYgdGhlIHNpemVcblwKLWFyZ3VtZW50IGlzIG5lZ2F0aXZlIG9yIG9taXR0ZWQsIHJlYWQgdW50aWwgRU9GIGlzIHJlYWNoZWQuXG5cCi0iKTsKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX3JlYWQoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3JlYWQoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgbG9uZyBieXRlc3JlcXVlc3RlZCA9IC0xOwotICAgIHNpemVfdCBieXRlc3JlYWQsIGJ1ZmZlcnNpemUsIGNodW5rc2l6ZTsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGw6cmVhZCIsICZieXRlc3JlcXVlc3RlZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIHN3aXRjaCAoc2VsZi0+bW9kZSkgewotICAgICAgICBjYXNlIE1PREVfUkVBRDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgY2FzZSBNT0RFX0NMT1NFRDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICAvKiByZWZ1c2UgdG8gbWl4IHdpdGggZi5uZXh0KCkgKi8KLSAgICBpZiAoY2hlY2tfaXRlcmJ1ZmZlcmVkKHNlbGYpKQotICAgICAgICBnb3RvIGNsZWFudXA7Ci0KLSAgICBpZiAoYnl0ZXNyZXF1ZXN0ZWQgPCAwKQotICAgICAgICBidWZmZXJzaXplID0gVXRpbF9OZXdCdWZmZXJTaXplKChzaXplX3QpMCk7Ci0gICAgZWxzZQotICAgICAgICBidWZmZXJzaXplID0gYnl0ZXNyZXF1ZXN0ZWQ7Ci0gICAgaWYgKGJ1ZmZlcnNpemUgPiBJTlRfTUFYKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVlc3RlZCBudW1iZXIgb2YgYnl0ZXMgaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgIm1vcmUgdGhhbiBhIFB5dGhvbiBzdHJpbmcgY2FuIGhvbGQiKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgYnVmZmVyc2l6ZSk7Ci0gICAgaWYgKHJldCA9PSBOVUxMIHx8IGJ1ZmZlcnNpemUgPT0gMCkKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIGJ5dGVzcmVhZCA9IDA7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2h1bmtzaXplID0gQloyX2J6UmVhZCgmYnplcnJvciwgc2VsZi0+ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVGKHJldCkrYnl0ZXNyZWFkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnNpemUtYnl0ZXNyZWFkKTsKLSAgICAgICAgc2VsZi0+cG9zICs9IGNodW5rc2l6ZTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgYnl0ZXNyZWFkICs9IGNodW5rc2l6ZTsKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgc2VsZi0+c2l6ZSA9IHNlbGYtPnBvczsKLSAgICAgICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICByZXQgPSBOVUxMOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc3JlcXVlc3RlZCA8IDApIHsKLSAgICAgICAgICAgIGJ1ZmZlcnNpemUgPSBVdGlsX05ld0J1ZmZlclNpemUoYnVmZmVyc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIGJ1ZmZlcnNpemUpIDwgMCkgewotICAgICAgICAgICAgICAgIHJldCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGJ5dGVzcmVhZCAhPSBidWZmZXJzaXplKSB7Ci0gICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJldCwgYnl0ZXNyZWFkKSA8IDApIHsKLSAgICAgICAgICAgIHJldCA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLWNsZWFudXA6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLVB5RG9jX1NUUlZBUihCWjJGaWxlX3JlYWRsaW5lX19kb2NfXywKLSJyZWFkbGluZShbc2l6ZV0pIC0+IHN0cmluZ1xuXAotXG5cCi1SZXR1cm4gdGhlIG5leHQgbGluZSBmcm9tIHRoZSBmaWxlLCBhcyBhIHN0cmluZywgcmV0YWluaW5nIG5ld2xpbmUuXG5cCi1BIG5vbi1uZWdhdGl2ZSBzaXplIGFyZ3VtZW50IHdpbGwgbGltaXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvXG5cCi1yZXR1cm4gKGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQgdGhlbikuIFJldHVybiBhbiBlbXB0eVxuXAotc3RyaW5nIGF0IEVPRi5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9yZWFkbGluZShCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBpbnQgc2l6ZWhpbnQgPSAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6cmVhZGxpbmUiLCAmc2l6ZWhpbnQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNT0RFX1JFQURfRU9GOgotICAgICAgICAgICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciByZWFkaW5nIik7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgfQotCi0gICAgLyogcmVmdXNlIHRvIG1peCB3aXRoIGYubmV4dCgpICovCi0gICAgaWYgKGNoZWNrX2l0ZXJidWZmZXJlZChzZWxmKSkKLSAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgaWYgKHNpemVoaW50ID09IDApCi0gICAgICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwotICAgIGVsc2UKLSAgICAgICAgcmV0ID0gVXRpbF9HZXRMaW5lKHNlbGYsIChzaXplaGludCA8IDApID8gMCA6IHNpemVoaW50KTsKLQotY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfcmVhZGxpbmVzX19kb2NfXywKLSJyZWFkbGluZXMoW3NpemVdKSAtPiBsaXN0XG5cCi1cblwKLUNhbGwgcmVhZGxpbmUoKSByZXBlYXRlZGx5IGFuZCByZXR1cm4gYSBsaXN0IG9mIGxpbmVzIHJlYWQuXG5cCi1UaGUgb3B0aW9uYWwgc2l6ZSBhcmd1bWVudCwgaWYgZ2l2ZW4sIGlzIGFuIGFwcHJveGltYXRlIGJvdW5kIG9uIHRoZVxuXAotdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBsaW5lcyByZXR1cm5lZC5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfcmVhZGxpbmVzKCkuICovCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9yZWFkbGluZXMoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgbG9uZyBzaXplaGludCA9IDA7Ci0gICAgUHlPYmplY3QgKmxpc3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpsaW5lOwotICAgIGNoYXIgc21hbGxfYnVmZmVyW1NNQUxMQ0hVTktdOwotICAgIGNoYXIgKmJ1ZmZlciA9IHNtYWxsX2J1ZmZlcjsKLSAgICBzaXplX3QgYnVmZmVyc2l6ZSA9IFNNQUxMQ0hVTks7Ci0gICAgUHlPYmplY3QgKmJpZ19idWZmZXIgPSBOVUxMOwotICAgIHNpemVfdCBuZmlsbGVkID0gMDsKLSAgICBzaXplX3QgbnJlYWQ7Ci0gICAgc2l6ZV90IHRvdGFscmVhZCA9IDA7Ci0gICAgY2hhciAqcCwgKnEsICplbmQ7Ci0gICAgaW50IGVycjsKLSAgICBpbnQgc2hvcnRyZWFkID0gMDsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGw6cmVhZGxpbmVzIiwgJnNpemVoaW50KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICBjYXNlIE1PREVfQ0xPU0VEOgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlIGlzIG5vdCByZWFkeSBmb3IgcmVhZGluZyIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIC8qIHJlZnVzZSB0byBtaXggd2l0aCBmLm5leHQoKSAqLwotICAgIGlmIChjaGVja19pdGVyYnVmZmVyZWQoc2VsZikpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBucmVhZCA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyK25maWxsZWQsIGJ1ZmZlcnNpemUtbmZpbGxlZCk7Ci0gICAgICAgIHNlbGYtPnBvcyArPSBucmVhZDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgc2VsZi0+c2l6ZSA9IHNlbGYtPnBvczsKLSAgICAgICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgaWYgKG5yZWFkID09IDApIHsKLSAgICAgICAgICAgICAgICBzaXplaGludCA9IDA7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaG9ydHJlYWQgPSAxOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICBlcnJvcjoKLSAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgIGxpc3QgPSBOVUxMOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIHRvdGFscmVhZCArPSBucmVhZDsKLSAgICAgICAgcCA9IG1lbWNocihidWZmZXIrbmZpbGxlZCwgJ1xuJywgbnJlYWQpOwotICAgICAgICBpZiAoIXNob3J0cmVhZCAmJiBwID09IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIE5lZWQgYSBsYXJnZXIgYnVmZmVyIHRvIGZpdCB0aGlzIGxpbmUgKi8KLSAgICAgICAgICAgIG5maWxsZWQgKz0gbnJlYWQ7Ci0gICAgICAgICAgICBidWZmZXJzaXplICo9IDI7Ci0gICAgICAgICAgICBpZiAoYnVmZmVyc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAibGluZSBpcyBsb25nZXIgdGhhbiBhIFB5dGhvbiBzdHJpbmcgY2FuIGhvbGQiKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGJpZ19idWZmZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIC8qIENyZWF0ZSB0aGUgYmlnIGJ1ZmZlciAqLwotICAgICAgICAgICAgICAgIGJpZ19idWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAotICAgICAgICAgICAgICAgICAgICBOVUxMLCBidWZmZXJzaXplKTsKLSAgICAgICAgICAgICAgICBpZiAoYmlnX2J1ZmZlciA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJpZ19idWZmZXIpOwotICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHNtYWxsX2J1ZmZlciwgbmZpbGxlZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBHcm93IHRoZSBiaWcgYnVmZmVyICovCi0gICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYmlnX2J1ZmZlciwgYnVmZmVyc2l6ZSkgPCAwKXsKLSAgICAgICAgICAgICAgICAgICAgYmlnX2J1ZmZlciA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGJpZ19idWZmZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgZW5kID0gYnVmZmVyK25maWxsZWQrbnJlYWQ7Ci0gICAgICAgIHEgPSBidWZmZXI7Ci0gICAgICAgIHdoaWxlIChwICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIFByb2Nlc3MgY29tcGxldGUgbGluZXMgKi8KLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgIGxpbmUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHEsIHAtcSk7Ci0gICAgICAgICAgICBpZiAobGluZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kKGxpc3QsIGxpbmUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwotICAgICAgICAgICAgaWYgKGVyciAhPSAwKQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBxID0gcDsKLSAgICAgICAgICAgIHAgPSBtZW1jaHIocSwgJ1xuJywgZW5kLXEpOwotICAgICAgICB9Ci0gICAgICAgIC8qIE1vdmUgdGhlIHJlbWFpbmluZyBpbmNvbXBsZXRlIGxpbmUgdG8gdGhlIHN0YXJ0ICovCi0gICAgICAgIG5maWxsZWQgPSBlbmQtcTsKLSAgICAgICAgbWVtbW92ZShidWZmZXIsIHEsIG5maWxsZWQpOwotICAgICAgICBpZiAoc2l6ZWhpbnQgPiAwKQotICAgICAgICAgICAgaWYgKHRvdGFscmVhZCA+PSAoc2l6ZV90KXNpemVoaW50KQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpZiAoc2hvcnRyZWFkKSB7Ci0gICAgICAgICAgICBzaXplaGludCA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobmZpbGxlZCAhPSAwKSB7Ci0gICAgICAgIC8qIFBhcnRpYWwgbGFzdCBsaW5lICovCi0gICAgICAgIGxpbmUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGJ1ZmZlciwgbmZpbGxlZCk7Ci0gICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBpZiAoc2l6ZWhpbnQgPiAwKSB7Ci0gICAgICAgICAgICAvKiBOZWVkIHRvIGNvbXBsZXRlIHRoZSBsYXN0IGxpbmUgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN0ID0gVXRpbF9HZXRMaW5lKHNlbGYsIDApOwotICAgICAgICAgICAgaWYgKHJlc3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlCeXRlc19Db25jYXQoJmxpbmUsIHJlc3QpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3QpOwotICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQobGlzdCwgbGluZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKLSAgICAgICAgaWYgKGVyciAhPSAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgY2xlYW51cDoKLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgaWYgKGJpZ19idWZmZXIpIHsKLSAgICAgICAgUHlfREVDUkVGKGJpZ19idWZmZXIpOwotICAgIH0KLSAgICByZXR1cm4gbGlzdDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfd3JpdGVfX2RvY19fLAotIndyaXRlKGRhdGEpIC0+IE5vbmVcblwKLVxuXAotV3JpdGUgdGhlICdkYXRhJyBzdHJpbmcgdG8gZmlsZS4gTm90ZSB0aGF0IGR1ZSB0byBidWZmZXJpbmcsIGNsb3NlKCkgbWF5XG5cCi1iZSBuZWVkZWQgYmVmb3JlIHRoZSBmaWxlIG9uIGRpc2sgcmVmbGVjdHMgdGhlIGRhdGEgd3JpdHRlbi5cblwKLSIpOwotCi0vKiBUaGlzIGlzIGEgaGFja2VkIHZlcnNpb24gb2YgUHl0aG9uJ3MgZmlsZW9iamVjdC5jOmZpbGVfd3JpdGUoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3dyaXRlKEJaMkZpbGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIFB5X2J1ZmZlciBwYnVmOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBpbnQgbGVuOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Kjp3cml0ZSIsICZwYnVmKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmID0gcGJ1Zi5idWY7Ci0gICAgbGVuID0gcGJ1Zi5sZW47Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSBpcyBub3QgcmVhZHkgZm9yIHdyaXRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgQloyX2J6V3JpdGUgKCZiemVycm9yLCBzZWxmLT5mcCwgYnVmLCBsZW4pOwotICAgIHNlbGYtPnBvcyArPSBsZW47Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgZ290byBjbGVhbnVwOwotICAgIH0KLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXQgPSBQeV9Ob25lOwotCi1jbGVhbnVwOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOwotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV93cml0ZWxpbmVzX19kb2NfXywKLSJ3cml0ZWxpbmVzKHNlcXVlbmNlX29mX3N0cmluZ3MpIC0+IE5vbmVcblwKLVxuXAotV3JpdGUgdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgdG8gdGhlIGZpbGUuIE5vdGUgdGhhdCBuZXdsaW5lcyBhcmUgbm90XG5cCi1hZGRlZC4gVGhlIHNlcXVlbmNlIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZyBzdHJpbmdzLiBUaGlzIGlzXG5cCi1lcXVpdmFsZW50IHRvIGNhbGxpbmcgd3JpdGUoKSBmb3IgZWFjaCBzdHJpbmcuXG5cCi0iKTsKLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX3dyaXRlbGluZXMoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3dyaXRlbGluZXMoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcSkKLXsKLSNkZWZpbmUgQ0hVTktTSVpFIDEwMDAKLSAgICBQeU9iamVjdCAqbGlzdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKml0ZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpsaW5lOwotICAgIGludCBpLCBqLCBpbmRleCwgbGVuLCBpc2xpc3Q7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUgaXMgbm90IHJlYWR5IGZvciB3cml0aW5nIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIGlzbGlzdCA9IFB5TGlzdF9DaGVjayhzZXEpOwotICAgIGlmICAoIWlzbGlzdCkgewotICAgICAgICBpdGVyID0gUHlPYmplY3RfR2V0SXRlcihzZXEpOwotICAgICAgICBpZiAoaXRlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICJ3cml0ZWxpbmVzKCkgcmVxdWlyZXMgYW4gaXRlcmFibGUgYXJndW1lbnQiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgbGlzdCA9IFB5TGlzdF9OZXcoQ0hVTktTSVpFKTsKLSAgICAgICAgaWYgKGxpc3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgLyogU3RyYXRlZ3k6IHNsdXJwIENIVU5LU0laRSBsaW5lcyBpbnRvIGEgcHJpdmF0ZSBsaXN0LAotICAgICAgIGNoZWNraW5nIHRoYXQgdGhleSBhcmUgYWxsIHN0cmluZ3MsIHRoZW4gd3JpdGUgdGhhdCBsaXN0Ci0gICAgICAgd2l0aG91dCBob2xkaW5nIHRoZSBpbnRlcnByZXRlciBsb2NrLCB0aGVuIGNvbWUgYmFjayBmb3IgbW9yZS4gKi8KLSAgICBmb3IgKGluZGV4ID0gMDsgOyBpbmRleCArPSBDSFVOS1NJWkUpIHsKLSAgICAgICAgaWYgKGlzbGlzdCkgewotICAgICAgICAgICAgUHlfWERFQ1JFRihsaXN0KTsKLSAgICAgICAgICAgIGxpc3QgPSBQeUxpc3RfR2V0U2xpY2Uoc2VxLCBpbmRleCwgaW5kZXgrQ0hVTktTSVpFKTsKLSAgICAgICAgICAgIGlmIChsaXN0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGogPSBQeUxpc3RfR0VUX1NJWkUobGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgQ0hVTktTSVpFOyBqKyspIHsKLSAgICAgICAgICAgICAgICBsaW5lID0gUHlJdGVyX05leHQoaXRlcik7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeUxpc3RfU2V0SXRlbShsaXN0LCBqLCBsaW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoaiA9PSAwKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyogQ2hlY2sgdGhhdCBhbGwgZW50cmllcyBhcmUgaW5kZWVkIGJ5dGUgc3RyaW5ncy4gSWYgbm90LAotICAgICAgICAgICBhcHBseSB0aGUgc2FtZSBydWxlcyBhcyBmb3IgZmlsZS53cml0ZSgpIGFuZAotICAgICAgICAgICBjb252ZXJ0IHRoZSByZXRzIHRvIHN0cmluZ3MuIFRoaXMgaXMgc2xvdywgYnV0Ci0gICAgICAgICAgIHNlZW1zIHRvIGJlIHRoZSBvbmx5IHdheSBzaW5jZSBhbGwgY29udmVyc2lvbiBBUElzCi0gICAgICAgICAgIGNvdWxkIHBvdGVudGlhbGx5IGV4ZWN1dGUgUHl0aG9uIGNvZGUuICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBqOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpOwotICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciAqYnVmZmVyOwotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIodiwgJmJ1ZmZlciwgJmxlbikpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cml0ZWxpbmVzKCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgYmUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImEgc2VxdWVuY2Ugb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG9iamVjdHMiKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbGluZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4pOwotICAgICAgICAgICAgICAgIGlmIChsaW5lID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsaXN0LCBpLCBsaW5lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNpbmNlIHdlIGFyZSByZWxlYXNpbmcgdGhlIGdsb2JhbCBsb2NrLCB0aGUKLSAgICAgICAgICAgZm9sbG93aW5nIGNvZGUgbWF5ICpub3QqIGV4ZWN1dGUgUHl0aG9uIGNvZGUuICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGo7IGkrKykgewotICAgICAgICAgICAgbGluZSA9IFB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKTsKLSAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUobGluZSk7Ci0gICAgICAgICAgICBCWjJfYnpXcml0ZSAoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGxpbmUpLCBsZW4pOwotICAgICAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgICAgICBQeV9CTE9DS19USFJFQURTCi0gICAgICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoaiA8IENIVU5LU0laRSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXQgPSBQeV9Ob25lOwotCi0gIGVycm9yOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeV9YREVDUkVGKGxpc3QpOwotICAgIFB5X1hERUNSRUYoaXRlcik7Ci0gICAgcmV0dXJuIHJldDsKLSN1bmRlZiBDSFVOS1NJWkUKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfc2Vla19fZG9jX18sCi0ic2VlayhvZmZzZXQgWywgd2hlbmNlXSkgLT4gTm9uZVxuXAotXG5cCi1Nb3ZlIHRvIG5ldyBmaWxlIHBvc2l0aW9uLiBBcmd1bWVudCBvZmZzZXQgaXMgYSBieXRlIGNvdW50LiBPcHRpb25hbFxuXAotYXJndW1lbnQgd2hlbmNlIGRlZmF1bHRzIHRvIDAgKG9mZnNldCBmcm9tIHN0YXJ0IG9mIGZpbGUsIG9mZnNldFxuXAotc2hvdWxkIGJlID49IDApOyBvdGhlciB2YWx1ZXMgYXJlIDEgKG1vdmUgcmVsYXRpdmUgdG8gY3VycmVudCBwb3NpdGlvbixcblwKLXBvc2l0aXZlIG9yIG5lZ2F0aXZlKSwgYW5kIDIgKG1vdmUgcmVsYXRpdmUgdG8gZW5kIG9mIGZpbGUsIHVzdWFsbHlcblwKLW5lZ2F0aXZlLCBhbHRob3VnaCBtYW55IHBsYXRmb3JtcyBhbGxvdyBzZWVraW5nIGJleW9uZCB0aGUgZW5kIG9mIGEgZmlsZSkuXG5cCi1cblwKLU5vdGUgdGhhdCBzZWVraW5nIG9mIGJ6MiBmaWxlcyBpcyBlbXVsYXRlZCwgYW5kIGRlcGVuZGluZyBvbiB0aGUgcGFyYW1ldGVyc1xuXAotdGhlIG9wZXJhdGlvbiBtYXkgYmUgZXh0cmVtZWx5IHNsb3cuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLUJaMkZpbGVfc2VlayhCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgd2hlcmUgPSAwOwotICAgIFB5T2JqZWN0ICpvZmZvYmo7Ci0gICAgUHlfb2ZmX3Qgb2Zmc2V0OwotICAgIGNoYXIgc21hbGxfYnVmZmVyW1NNQUxMQ0hVTktdOwotICAgIGNoYXIgKmJ1ZmZlciA9IHNtYWxsX2J1ZmZlcjsKLSAgICBzaXplX3QgYnVmZmVyc2l6ZSA9IFNNQUxMQ0hVTks7Ci0gICAgUHlfb2ZmX3QgYnl0ZXNyZWFkID0gMDsKLSAgICBzaXplX3QgcmVhZHNpemU7Ci0gICAgaW50IGNodW5rc2l6ZTsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xpOnNlZWsiLCAmb2Zmb2JqLCAmd2hlcmUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIG9mZnNldCA9IFB5TG9uZ19Bc0xvbmcob2Zmb2JqKTsKLSNlbHNlCi0gICAgb2Zmc2V0ID0gUHlMb25nX0NoZWNrKG9mZm9iaikgPwotICAgICAgICBQeUxvbmdfQXNMb25nTG9uZyhvZmZvYmopIDogUHlMb25nX0FzTG9uZyhvZmZvYmopOwotI2VuZGlmCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIFV0aWxfRHJvcFJlYWRBaGVhZChzZWxmKTsKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgTU9ERV9DTE9TRUQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSU9FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VlayB3b3JrcyBvbmx5IHdoaWxlIHJlYWRpbmciKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSAgICBpZiAod2hlcmUgPT0gMikgewotICAgICAgICBpZiAoc2VsZi0+c2l6ZSA9PSAtMSkgewotICAgICAgICAgICAgYXNzZXJ0KHNlbGYtPm1vZGUgIT0gTU9ERV9SRUFEX0VPRik7Ci0gICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBidWZmZXJzaXplKTsKLSAgICAgICAgICAgICAgICBzZWxmLT5wb3MgKz0gY2h1bmtzaXplOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgICAgICAgICBieXRlc3JlYWQgKz0gY2h1bmtzaXplOwotICAgICAgICAgICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgc2VsZi0+c2l6ZSA9IHNlbGYtPnBvczsKLSAgICAgICAgICAgIGJ5dGVzcmVhZCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgb2Zmc2V0ID0gc2VsZi0+c2l6ZSArIG9mZnNldDsKLSAgICB9IGVsc2UgaWYgKHdoZXJlID09IDEpIHsKLSAgICAgICAgb2Zmc2V0ID0gc2VsZi0+cG9zICsgb2Zmc2V0OwotICAgIH0KLQotICAgIC8qIEJlZm9yZSBnZXR0aW5nIGhlcmUsIG9mZnNldCBtdXN0IGJlIHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiB0aGUgZmlsZQotICAgICAqIHBvaW50ZXIgc2hvdWxkIGJlIHNldCB0by4gKi8KLQotICAgIGlmIChvZmZzZXQgPj0gc2VsZi0+cG9zKSB7Ci0gICAgICAgIC8qIHdlIGNhbiBtb3ZlIGZvcndhcmQgKi8KLSAgICAgICAgb2Zmc2V0IC09IHNlbGYtPnBvczsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiB3ZSBjYW5ub3QgbW92ZSBiYWNrLCBzbyByZXdpbmQgdGhlIHN0cmVhbSAqLwotICAgICAgICBCWjJfYnpSZWFkQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwKTsKLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICByZXdpbmQoc2VsZi0+cmF3ZnApOwotICAgICAgICBzZWxmLT5wb3MgPSAwOwotICAgICAgICBzZWxmLT5mcCA9IEJaMl9ielJlYWRPcGVuKCZiemVycm9yLCBzZWxmLT5yYXdmcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCBOVUxMLCAwKTsKLSAgICAgICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgfQotICAgICAgICBzZWxmLT5tb2RlID0gTU9ERV9SRUFEOwotICAgIH0KLQotICAgIGlmIChvZmZzZXQgPD0gMCB8fCBzZWxmLT5tb2RlID09IE1PREVfUkVBRF9FT0YpCi0gICAgICAgIGdvdG8gZXhpdDsKLQotICAgIC8qIEJlZm9yZSBnZXR0aW5nIGhlcmUsIG9mZnNldCBtdXN0IGJlIHNldCB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICAgICogdG8gd2FsayBmb3J3YXJkLiAqLwotICAgIGZvciAoOzspIHsKLSAgICAgICAgaWYgKG9mZnNldC1ieXRlc3JlYWQgPiBidWZmZXJzaXplKQotICAgICAgICAgICAgcmVhZHNpemUgPSBidWZmZXJzaXplOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAvKiBvZmZzZXQgbWlnaHQgYmUgd2lkZXIgdGhhdCByZWFkc2l6ZSwgYnV0IHRoZSByZXN1bHQKLSAgICAgICAgICAgICAqIG9mIHRoZSBzdWJ0cmFjdGlvbiBpcyBib3VuZCBieSBidWZmZXJzaXplIChzZWUgdGhlCi0gICAgICAgICAgICAgKiBjb25kaXRpb24gYWJvdmUpLiBidWZmZXJzaXplIGlzIDgxOTIuICovCi0gICAgICAgICAgICByZWFkc2l6ZSA9IChzaXplX3QpKG9mZnNldC1ieXRlc3JlYWQpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGNodW5rc2l6ZSA9IEJaMl9ielJlYWQoJmJ6ZXJyb3IsIHNlbGYtPmZwLCBidWZmZXIsIHJlYWRzaXplKTsKLSAgICAgICAgc2VsZi0+cG9zICs9IGNodW5rc2l6ZTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgYnl0ZXNyZWFkICs9IGNodW5rc2l6ZTsKLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgc2VsZi0+c2l6ZSA9IHNlbGYtPnBvczsKLSAgICAgICAgICAgIHNlbGYtPm1vZGUgPSBNT0RFX1JFQURfRU9GOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChieXRlc3JlYWQgPT0gb2Zmc2V0KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotCi1leGl0OgotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXQgPSBQeV9Ob25lOwotCi1jbGVhbnVwOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV90ZWxsX19kb2NfXywKLSJ0ZWxsKCkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uLCBhbiBpbnRlZ2VyIChtYXkgYmUgYSBsb25nIGludGVnZXIpLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX3RlbGwoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IE5VTEw7Ci0KLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQotICAgIHJldCA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5wb3MpOwotI2Vsc2UKLSAgICByZXQgPSBQeUxvbmdfRnJvbUxvbmdMb25nKHNlbGYtPnBvcyk7Ci0jZW5kaWYKLQotY2xlYW51cDoKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoQloyRmlsZV9jbG9zZV9fZG9jX18sCi0iY2xvc2UoKSAtPiBOb25lIG9yIChwZXJoYXBzKSBhbiBpbnRlZ2VyXG5cCi1cblwKLUNsb3NlIHRoZSBmaWxlLiBTZXRzIGRhdGEgYXR0cmlidXRlIC5jbG9zZWQgdG8gdHJ1ZS4gQSBjbG9zZWQgZmlsZVxuXAotY2Fubm90IGJlIHVzZWQgZm9yIGZ1cnRoZXIgSS9PIG9wZXJhdGlvbnMuIGNsb3NlKCkgbWF5IGJlIGNhbGxlZCBtb3JlXG5cCi10aGFuIG9uY2Ugd2l0aG91dCBlcnJvci5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9jbG9zZShCWjJGaWxlT2JqZWN0ICpzZWxmKQotewotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGludCBiemVycm9yID0gQlpfT0s7Ci0KLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEOgotICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6Ci0gICAgICAgICAgICBCWjJfYnpSZWFkQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1PREVfV1JJVEU6Ci0gICAgICAgICAgICBCWjJfYnpXcml0ZUNsb3NlKCZiemVycm9yLCBzZWxmLT5mcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgc2VsZi0+bW9kZSA9IE1PREVfQ0xPU0VEOwotICAgIGZjbG9zZShzZWxmLT5yYXdmcCk7Ci0gICAgc2VsZi0+cmF3ZnAgPSBOVUxMOwotICAgIGlmIChiemVycm9yID09IEJaX09LKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0ID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICB9Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfZW50ZXJfZG9jLAotIl9fZW50ZXJfXygpIC0+IHNlbGYuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2VudGVyKEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPm1vZGUgPT0gTU9ERV9DTE9TRUQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAiSS9PIG9wZXJhdGlvbiBvbiBjbG9zZWQgZmlsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKLX0KLQotUHlEb2NfU1RSVkFSKEJaMkZpbGVfZXhpdF9kb2MsCi0iX19leGl0X18oKmV4Y2luZm8pIC0+IE5vbmUuICBDbG9zZXMgdGhlIGZpbGUuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2V4aXQoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKnJldCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoKFB5T2JqZWN0ICopIHNlbGYsICJjbG9zZSIsIE5VTEwpOwotICAgIGlmICghcmV0KQotICAgICAgICAvKiBJZiBlcnJvciBvY2N1cnJlZCwgcGFzcyB0aHJvdWdoICovCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0RFQ1JFRihyZXQpOwotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi0KLXN0YXRpYyBQeU9iamVjdCAqQloyRmlsZV9nZXRpdGVyKEJaMkZpbGVPYmplY3QgKnNlbGYpOwotCi1zdGF0aWMgUHlNZXRob2REZWYgQloyRmlsZV9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWFkIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfcmVhZCwgTUVUSF9WQVJBUkdTLCBCWjJGaWxlX3JlYWRfX2RvY19ffSwKLSAgICB7InJlYWRsaW5lIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfcmVhZGxpbmUsIE1FVEhfVkFSQVJHUywgQloyRmlsZV9yZWFkbGluZV9fZG9jX199LAotICAgIHsicmVhZGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfcmVhZGxpbmVzLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfcmVhZGxpbmVzX19kb2NfX30sCi0gICAgeyJ3cml0ZSIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3dyaXRlLCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfd3JpdGVfX2RvY19ffSwKLSAgICB7IndyaXRlbGluZXMiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV93cml0ZWxpbmVzLCBNRVRIX08sIEJaMkZpbGVfd3JpdGVsaW5lc19fZG9jX199LAotICAgIHsic2VlayIsIChQeUNGdW5jdGlvbilCWjJGaWxlX3NlZWssIE1FVEhfVkFSQVJHUywgQloyRmlsZV9zZWVrX19kb2NfX30sCi0gICAgeyJ0ZWxsIiwgKFB5Q0Z1bmN0aW9uKUJaMkZpbGVfdGVsbCwgTUVUSF9OT0FSR1MsIEJaMkZpbGVfdGVsbF9fZG9jX199LAotICAgIHsiY2xvc2UiLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9jbG9zZSwgTUVUSF9OT0FSR1MsIEJaMkZpbGVfY2xvc2VfX2RvY19ffSwKLSAgICB7Il9fZW50ZXJfXyIsIChQeUNGdW5jdGlvbilCWjJGaWxlX2VudGVyLCBNRVRIX05PQVJHUywgQloyRmlsZV9lbnRlcl9kb2N9LAotICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pQloyRmlsZV9leGl0LCBNRVRIX1ZBUkFSR1MsIEJaMkZpbGVfZXhpdF9kb2N9LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogR2V0dGVycyBhbmQgc2V0dGVycyBvZiBCWjJGaWxlLiAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyRmlsZV9nZXRfY2xvc2VkKEJaMkZpbGVPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCi17Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5tb2RlID09IE1PREVfQ0xPU0VEKTsKLX0KLQotc3RhdGljIFB5R2V0U2V0RGVmIEJaMkZpbGVfZ2V0c2V0W10gPSB7Ci0gICAgeyJjbG9zZWQiLCAoZ2V0dGVyKUJaMkZpbGVfZ2V0X2Nsb3NlZCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgIlRydWUgaWYgdGhlIGZpbGUgaXMgY2xvc2VkIn0sCi0gICAge05VTEx9ICAgICAgLyogU2VudGluZWwgKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJGaWxlX1R5cGUuICovCi0KLXN0YXRpYyBpbnQKLUJaMkZpbGVfaW5pdChCWjJGaWxlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGVuYW1lIiwgIm1vZGUiLCAiYnVmZmVyaW5nIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwiLCAwfTsKLSAgICBQeU9iamVjdCAqbmFtZV9vYmogPSBOVUxMOwotICAgIGNoYXIgKm5hbWU7Ci0gICAgY2hhciAqbW9kZSA9ICJyIjsKLSAgICBpbnQgYnVmZmVyaW5nID0gLTE7Ci0gICAgaW50IGNvbXByZXNzbGV2ZWwgPSA5OwotICAgIGludCBiemVycm9yOwotICAgIGludCBtb2RlX2NoYXIgPSAwOwotCi0gICAgc2VsZi0+c2l6ZSA9IC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8c2lpOkJaMkZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmbmFtZV9vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUsICZidWZmZXJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXByZXNzbGV2ZWwpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBuYW1lID0gUHlCeXRlc19Bc1N0cmluZyhuYW1lX29iaik7Ci0gICAgaWYgKGNvbXByZXNzbGV2ZWwgPCAxIHx8IGNvbXByZXNzbGV2ZWwgPiA5KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNvbXByZXNzbGV2ZWwgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDkiKTsKLSAgICAgICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgaW50IGVycm9yID0gMDsKLSAgICAgICAgc3dpdGNoICgqbW9kZSkgewotICAgICAgICAgICAgY2FzZSAncic6Ci0gICAgICAgICAgICBjYXNlICd3JzoKLSAgICAgICAgICAgICAgICBpZiAobW9kZV9jaGFyKQotICAgICAgICAgICAgICAgICAgICBlcnJvciA9IDE7Ci0gICAgICAgICAgICAgICAgbW9kZV9jaGFyID0gKm1vZGU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgJ2InOgotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGVycm9yID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1vZGUgY2hhciAlYyIsICptb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgbW9kZSsrOwotICAgICAgICBpZiAoKm1vZGUgPT0gJ1wwJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChtb2RlX2NoYXIgPT0gMCkgewotICAgICAgICBtb2RlX2NoYXIgPSAncic7Ci0gICAgfQotCi0gICAgbW9kZSA9IChtb2RlX2NoYXIgPT0gJ3InKSA/ICJyYiIgOiAid2IiOwotCi0gICAgc2VsZi0+cmF3ZnAgPSBmb3BlbihuYW1lLCBtb2RlKTsKLSAgICBQeV9ERUNSRUYobmFtZV9vYmopOwotICAgIGlmIChzZWxmLT5yYXdmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBYWFggSWdub3JlIGJ1ZmZlcmluZyAqLwotCi0gICAgLyogRnJvbSBub3cgb24sIHdlIGhhdmUgc3R1ZmYgdG8gZGVhbGxvYywgc28ganVtcCB0byBlcnJvciBsYWJlbAotICAgICAqIGluc3RlYWQgb2YgcmV0dXJuaW5nICovCi0KLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7Ci0gICAgaWYgKCFzZWxmLT5sb2NrKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwgInVuYWJsZSB0byBhbGxvY2F0ZSBsb2NrIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAobW9kZV9jaGFyID09ICdyJykKLSAgICAgICAgc2VsZi0+ZnAgPSBCWjJfYnpSZWFkT3BlbigmYnplcnJvciwgc2VsZi0+cmF3ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgTlVMTCwgMCk7Ci0gICAgZWxzZQotICAgICAgICBzZWxmLT5mcCA9IEJaMl9ieldyaXRlT3BlbigmYnplcnJvciwgc2VsZi0+cmF3ZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzbGV2ZWwsIDAsIDApOwotCi0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHNlbGYtPm1vZGUgPSAobW9kZV9jaGFyID09ICdyJykgPyBNT0RFX1JFQUQgOiBNT0RFX1dSSVRFOwotCi0gICAgcmV0dXJuIDA7Ci0KLWVycm9yOgotICAgIGZjbG9zZShzZWxmLT5yYXdmcCk7Ci0gICAgc2VsZi0+cmF3ZnAgPSBOVUxMOwotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotICAgICAgICBzZWxmLT5sb2NrID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1CWjJGaWxlX2RlYWxsb2MoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBpbnQgYnplcnJvcjsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKQotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0jZW5kaWYKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIEJaMl9ieldyaXRlQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoc2VsZik7Ci0gICAgaWYgKHNlbGYtPnJhd2ZwICE9IE5VTEwpCi0gICAgICAgIGZjbG9zZShzZWxmLT5yYXdmcCk7Ci0gICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX2dldGl0ZXIoKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2dldGl0ZXIoQloyRmlsZU9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIG9uIGNsb3NlZCBmaWxlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KilzZWxmKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKLX0KLQotLyogVGhpcyBpcyBhIGhhY2tlZCB2ZXJzaW9uIG9mIFB5dGhvbidzIGZpbGVvYmplY3QuYzpmaWxlX2l0ZXJuZXh0KCkuICovCi0jZGVmaW5lIFJFQURBSEVBRF9CVUZTSVpFIDgxOTIKLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJGaWxlX2l0ZXJuZXh0KEJaMkZpbGVPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlCeXRlc09iamVjdCogcmV0OwotICAgIEFDUVVJUkVfTE9DSyhzZWxmKTsKLSAgICBpZiAoc2VsZi0+bW9kZSA9PSBNT0RFX0NMT1NFRCkgewotICAgICAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldCA9IFV0aWxfUmVhZEFoZWFkR2V0TGluZVNraXAoc2VsZiwgMCwgUkVBREFIRUFEX0JVRlNJWkUpOwotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBpZiAocmV0ID09IE5VTEwgfHwgUHlCeXRlc19HRVRfU0laRShyZXQpID09IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihyZXQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXJldDsKLX0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBCWjJGaWxlX1R5cGUgZGVmaW5pdGlvbi4gKi8KLQotUHlEb2NfVkFSKEJaMkZpbGVfX2RvY19fKSA9Ci1QeURvY19TVFIoCi0iQloyRmlsZShuYW1lIFssIG1vZGU9J3InLCBidWZmZXJpbmc9MCwgY29tcHJlc3NsZXZlbD05XSkgLT4gZmlsZSBvYmplY3RcblwKLVxuXAotT3BlbiBhIGJ6MiBmaWxlLiBUaGUgbW9kZSBjYW4gYmUgJ3InIG9yICd3JywgZm9yIHJlYWRpbmcgKGRlZmF1bHQpIG9yXG5cCi13cml0aW5nLiBXaGVuIG9wZW5lZCBmb3Igd3JpdGluZywgdGhlIGZpbGUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3RcblwKLWV4aXN0LCBhbmQgdHJ1bmNhdGVkIG90aGVyd2lzZS4gSWYgdGhlIGJ1ZmZlcmluZyBhcmd1bWVudCBpcyBnaXZlbiwgMCBtZWFuc1xuXAotdW5idWZmZXJlZCwgYW5kIGxhcmdlciBudW1iZXJzIHNwZWNpZnkgdGhlIGJ1ZmZlciBzaXplLiBJZiBjb21wcmVzc2xldmVsXG5cCi1pcyBnaXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuXG5cCi1EYXRhIHJlYWQgaXMgYWx3YXlzIHJldHVybmVkIGluIGJ5dGVzOyBkYXRhIHdyaXR0ZW4gb3VnaHQgdG8gYmUgYnl0ZXMuXG5cCi0iKTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBCWjJGaWxlX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImJ6Mi5CWjJGaWxlIiwgICAgICAgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKEJaMkZpbGVPYmplY3QpLCAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpQloyRmlsZV9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsLyp0cF9nZXRhdHRybyovCi0gICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBCWjJGaWxlX19kb2NfXywgICAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgKGdldGl0ZXJmdW5jKUJaMkZpbGVfZ2V0aXRlciwgLyp0cF9pdGVyKi8KLSAgICAoaXRlcm5leHRmdW5jKUJaMkZpbGVfaXRlcm5leHQsIC8qdHBfaXRlcm5leHQqLwotICAgIEJaMkZpbGVfbWV0aG9kcywgICAgICAgIC8qdHBfbWV0aG9kcyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCi0gICAgQloyRmlsZV9nZXRzZXQsICAgICAgICAgLyp0cF9nZXRzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKUJaMkZpbGVfaW5pdCwgLyp0cF9pbml0Ki8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAvKnRwX2FsbG9jKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAvKnRwX25ldyovCi0gICAgUHlPYmplY3RfRnJlZSwgICAgICAgICAgLyp0cF9mcmVlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNZXRob2RzIG9mIEJaMkNvbXAuICovCi0KLVB5RG9jX1NUUlZBUihCWjJDb21wX2NvbXByZXNzX19kb2NfXywKLSJjb21wcmVzcyhkYXRhKSAtPiBzdHJpbmdcblwKLVxuXAotUHJvdmlkZSBtb3JlIGRhdGEgdG8gdGhlIGNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3Mgb2ZcblwKLWNvbXByZXNzZWQgZGF0YSB3aGVuZXZlciBwb3NzaWJsZS4gV2hlbiB5b3UndmUgZmluaXNoZWQgcHJvdmlkaW5nIGRhdGFcblwKLXRvIGNvbXByZXNzLCBjYWxsIHRoZSBmbHVzaCgpIG1ldGhvZCB0byBmaW5pc2ggdGhlIGNvbXByZXNzaW9uIHByb2Nlc3MsXG5cCi1hbmQgcmV0dXJuIHdoYXQgaXMgbGVmdCBpbiB0aGUgaW50ZXJuYWwgYnVmZmVycy5cblwKLSIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotQloyQ29tcF9jb21wcmVzcyhCWjJDb21wT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeV9idWZmZXIgcGRhdGE7Ci0gICAgc2l6ZV90IGlucHV0X2xlZnQ7Ci0gICAgc2l6ZV90IG91dHB1dF9zaXplID0gMDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZzZWxmLT5ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqOmNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocGRhdGEubGVuID09IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgfQotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmICghc2VsZi0+cnVubmluZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlzIG9iamVjdCB3YXMgYWxyZWFkeSBmbHVzaGVkIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IHBkYXRhLmJ1ZjsKLSAgICBienMtPmF2YWlsX2luID0gTUlOKHBkYXRhLmxlbiwgVUlOVF9NQVgpOwotICAgIGlucHV0X2xlZnQgPSBwZGF0YS5sZW4gLSBienMtPmF2YWlsX2luOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBjaGFyICpzYXZlZF9uZXh0X291dDsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHNhdmVkX25leHRfb3V0ID0gYnpzLT5uZXh0X291dDsKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzKGJ6cywgQlpfUlVOKTsKLSAgICAgICAgb3V0cHV0X3NpemUgKz0gYnpzLT5uZXh0X291dCAtIHNhdmVkX25leHRfb3V0OwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChiemVycm9yICE9IEJaX1JVTl9PSykgewotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCA9PSAwKQotICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBubyBtb3JlIGlucHV0IGRhdGEgKi8KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4oaW5wdXRfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICAgICAgaW5wdXRfbGVmdCAtPSBienMtPmF2YWlsX2luOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFV0aWxfR3Jvd0J1ZmZlcigmcmV0KSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBSRUxFQVNFX0xPQ0soc2VsZik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgUHlfWERFQ1JFRihyZXQpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1QeURvY19TVFJWQVIoQloyQ29tcF9mbHVzaF9fZG9jX18sCi0iZmx1c2goKSAtPiBzdHJpbmdcblwKLVxuXAotRmluaXNoIHRoZSBjb21wcmVzc2lvbiBwcm9jZXNzIGFuZCByZXR1cm4gd2hhdCBpcyBsZWZ0IGluIGludGVybmFsIGJ1ZmZlcnMuXG5cCi1Zb3UgbXVzdCBub3QgdXNlIHRoZSBjb21wcmVzc29yIG9iamVjdCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJDb21wX2ZsdXNoKEJaMkNvbXBPYmplY3QgKnNlbGYpCi17Ci0gICAgc2l6ZV90IG91dHB1dF9zaXplID0gMDsKLSAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZzZWxmLT5ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBBQ1FVSVJFX0xPQ0soc2VsZik7Ci0gICAgaWYgKCFzZWxmLT5ydW5uaW5nKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAib2JqZWN0IHdhcyBhbHJlYWR5IGZsdXNoZWQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgc2VsZi0+cnVubmluZyA9IDA7Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgZm9yICg7OykgewotICAgICAgICBjaGFyICpzYXZlZF9uZXh0X291dDsKLQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHNhdmVkX25leHRfb3V0ID0gYnpzLT5uZXh0X291dDsKLSAgICAgICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzKGJ6cywgQlpfRklOSVNIKTsKLSAgICAgICAgb3V0cHV0X3NpemUgKz0gYnpzLT5uZXh0X291dCAtIHNhdmVkX25leHRfb3V0OwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChiemVycm9yID09IEJaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGJ6ZXJyb3IgIT0gQlpfRklOSVNIX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX291dCA9PSAwKSB7Ci0gICAgICAgICAgICBzaXplX3QgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIGlmIChidWZmZXJfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFV0aWxfR3Jvd0J1ZmZlcigmcmV0KSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpICsgb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX2xlZnQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkgLSBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJ6cy0+YXZhaWxfb3V0ID0gTUlOKGJ1ZmZlcl9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob3V0cHV0X3NpemUgIT0gUHlCeXRlc19HRVRfU0laRShyZXQpKQotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yOgotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBCWjJDb21wX21ldGhvZHNbXSA9IHsKLSAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKUJaMkNvbXBfY29tcHJlc3MsIE1FVEhfVkFSQVJHUywKLSAgICAgQloyQ29tcF9jb21wcmVzc19fZG9jX199LAotICAgIHsiZmx1c2giLCAoUHlDRnVuY3Rpb24pQloyQ29tcF9mbHVzaCwgTUVUSF9OT0FSR1MsCi0gICAgIEJaMkNvbXBfZmx1c2hfX2RvY19ffSwKLSAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIFNsb3QgZGVmaW5pdGlvbnMgZm9yIEJaMkNvbXBfVHlwZS4gKi8KLQotc3RhdGljIGludAotQloyQ29tcF9pbml0KEJaMkNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQotewotICAgIGludCBjb21wcmVzc2xldmVsID0gOTsKLSAgICBpbnQgYnplcnJvcjsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImNvbXByZXNzbGV2ZWwiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpOkJaMkNvbXByZXNzb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmNvbXByZXNzbGV2ZWwpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoY29tcHJlc3NsZXZlbCA8IDEgfHwgY29tcHJlc3NsZXZlbCA+IDkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIG1lbXNldCgmc2VsZi0+YnpzLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7Ci0gICAgYnplcnJvciA9IEJaMl9iekNvbXByZXNzSW5pdCgmc2VsZi0+YnpzLCBjb21wcmVzc2xldmVsLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgc2VsZi0+cnVubmluZyA9IDE7Ci0KLSAgICByZXR1cm4gMDsKLWVycm9yOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotICAgICAgICBzZWxmLT5sb2NrID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1CWjJDb21wX2RlYWxsb2MoQloyQ29tcE9iamVjdCAqc2VsZikKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGlmIChzZWxmLT5sb2NrKQotICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7Ci0jZW5kaWYKLSAgICBCWjJfYnpDb21wcmVzc0VuZCgmc2VsZi0+YnpzKTsKLSAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwotfQotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogQloyQ29tcF9UeXBlIGRlZmluaXRpb24uICovCi0KLVB5RG9jX1NUUlZBUihCWjJDb21wX19kb2NfXywKLSJCWjJDb21wcmVzc29yKFtjb21wcmVzc2xldmVsPTldKSAtPiBjb21wcmVzc29yIG9iamVjdFxuXAotXG5cCi1DcmVhdGUgYSBuZXcgY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGNvbXByZXNzXG5cCi1kYXRhIHNlcXVlbnRpYWxseS4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdCwgdXNlIHRoZVxuXAotY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLiBUaGUgY29tcHJlc3NsZXZlbCBwYXJhbWV0ZXIsIGlmIGdpdmVuLFxuXAotbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuXG5cCi0iKTsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBCWjJDb21wX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImJ6Mi5CWjJDb21wcmVzc29yIiwgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKEJaMkNvbXBPYmplY3QpLCAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpQloyQ29tcF9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsLyp0cF9nZXRhdHRybyovCi0gICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVHxQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKnRwX2ZsYWdzKi8KLSAgICBCWjJDb21wX19kb2NfXywgICAgICAgICAvKnRwX2RvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0Ki8KLSAgICBCWjJDb21wX21ldGhvZHMsICAgICAgICAvKnRwX21ldGhvZHMqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCovCi0gICAgKGluaXRwcm9jKUJaMkNvbXBfaW5pdCwgLyp0cF9pbml0Ki8KLSAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAvKnRwX2FsbG9jKi8KLSAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAvKnRwX25ldyovCi0gICAgUHlPYmplY3RfRnJlZSwgICAgICAgICAgLyp0cF9mcmVlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2lzX2djKi8KLX07Ci0KLQotLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCi0vKiBNZW1iZXJzIG9mIEJaMkRlY29tcC4gKi8KLQotI3VuZGVmIE9GRgotI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoQloyRGVjb21wT2JqZWN0LCB4KQotCi1zdGF0aWMgUHlNZW1iZXJEZWYgQloyRGVjb21wX21lbWJlcnNbXSA9IHsKLSAgICB7InVudXNlZF9kYXRhIiwgVF9PQkpFQ1QsIE9GRih1bnVzZWRfZGF0YSksIFJFQURPTkxZfSwKLSAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwotfTsKLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIE1ldGhvZHMgb2YgQloyRGVjb21wLiAqLwotCi1QeURvY19TVFJWQVIoQloyRGVjb21wX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoZGF0YSkgLT4gc3RyaW5nXG5cCi1cblwKLVByb3ZpZGUgbW9yZSBkYXRhIHRvIHRoZSBkZWNvbXByZXNzb3Igb2JqZWN0LiBJdCB3aWxsIHJldHVybiBjaHVua3NcblwKLW9mIGRlY29tcHJlc3NlZCBkYXRhIHdoZW5ldmVyIHBvc3NpYmxlLiBJZiB5b3UgdHJ5IHRvIGRlY29tcHJlc3MgZGF0YVxuXAotYWZ0ZXIgdGhlIGVuZCBvZiBzdHJlYW0gaXMgZm91bmQsIEVPRkVycm9yIHdpbGwgYmUgcmFpc2VkLiBJZiBhbnkgZGF0YVxuXAotd2FzIGZvdW5kIGFmdGVyIHRoZSBlbmQgb2Ygc3RyZWFtLCBpdCdsbCBiZSBpZ25vcmVkIGFuZCBzYXZlZCBpblxuXAotdW51c2VkX2RhdGEgYXR0cmlidXRlLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1CWjJEZWNvbXBfZGVjb21wcmVzcyhCWjJEZWNvbXBPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBzaXplX3QgaW5wdXRfbGVmdDsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJnNlbGYtPmJ6czsKLSAgICBpbnQgYnplcnJvcjsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSo6ZGVjb21wcmVzcyIsICZwZGF0YSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgQUNRVUlSRV9MT0NLKHNlbGYpOwotICAgIGlmICghc2VsZi0+cnVubmluZykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfRU9GRXJyb3IsICJlbmQgb2Ygc3RyZWFtIHdhcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFscmVhZHkgZm91bmQiKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0KLSAgICByZXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFNNQUxMQ0hVTkspOwotICAgIGlmICghcmV0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgYnpzLT5uZXh0X2luID0gcGRhdGEuYnVmOwotICAgIGJ6cy0+YXZhaWxfaW4gPSBNSU4ocGRhdGEubGVuLCBVSU5UX01BWCk7Ci0gICAgaW5wdXRfbGVmdCA9IHBkYXRhLmxlbiAtIGJ6cy0+YXZhaWxfaW47Ci0KLSAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCk7Ci0gICAgYnpzLT5hdmFpbF9vdXQgPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCk7Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcyhienMpOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgc2VsZi0+cnVubmluZyA9IDA7Ci0gICAgICAgICAgICBpbnB1dF9sZWZ0ICs9IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKLSAgICAgICAgICAgICAgICBzZWxmLT51bnVzZWRfZGF0YSA9Ci0gICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnpzLT5uZXh0X2luLCBpbnB1dF9sZWZ0KTsKLSAgICAgICAgICAgICAgICBpZiAoc2VsZi0+dW51c2VkX2RhdGEgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGlmIChiemVycm9yICE9IEJaX09LKSB7Ci0gICAgICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGlmIChienMtPmF2YWlsX2luID09IDApIHsKLSAgICAgICAgICAgIGlmIChpbnB1dF9sZWZ0ID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vIG1vcmUgaW5wdXQgZGF0YSAqLwotICAgICAgICAgICAgYnpzLT5hdmFpbF9pbiA9IE1JTihpbnB1dF9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIG91dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG91dHB1dF9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSkKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBvdXRwdXRfc2l6ZSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgIFJFTEVBU0VfTE9DSyhzZWxmKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLQotZXJyb3I6Ci0gICAgUkVMRUFTRV9MT0NLKHNlbGYpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICBQeV9YREVDUkVGKHJldCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBCWjJEZWNvbXBfbWV0aG9kc1tdID0gewotICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilCWjJEZWNvbXBfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLCBCWjJEZWNvbXBfZGVjb21wcmVzc19fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogU2xvdCBkZWZpbml0aW9ucyBmb3IgQloyRGVjb21wX1R5cGUuICovCi0KLXN0YXRpYyBpbnQKLUJaMkRlY29tcF9pbml0KEJaMkRlY29tcE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgaW50IGJ6ZXJyb3I7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpCWjJEZWNvbXByZXNzb3IiKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICBzZWxmLT5sb2NrID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOwotICAgIGlmICghc2VsZi0+bG9jaykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbmRpZgotCi0gICAgc2VsZi0+dW51c2VkX2RhdGEgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKLSAgICBpZiAoIXNlbGYtPnVudXNlZF9kYXRhKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgbWVtc2V0KCZzZWxmLT5ienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLSAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzc0luaXQoJnNlbGYtPmJ6cywgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLQotICAgIHNlbGYtPnJ1bm5pbmcgPSAxOwotCi0gICAgcmV0dXJuIDA7Ci0KLWVycm9yOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlUaHJlYWRfZnJlZV9sb2NrKHNlbGYtPmxvY2spOwotICAgICAgICBzZWxmLT5sb2NrID0gTlVMTDsKLSAgICB9Ci0jZW5kaWYKLSAgICBQeV9DTEVBUihzZWxmLT51bnVzZWRfZGF0YSk7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1zdGF0aWMgdm9pZAotQloyRGVjb21wX2RlYWxsb2MoQloyRGVjb21wT2JqZWN0ICpzZWxmKQotewotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKHNlbGYtPmxvY2spCi0gICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhzZWxmLT5sb2NrKTsKLSNlbmRpZgotICAgIFB5X1hERUNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwotICAgIEJaMl9iekRlY29tcHJlc3NFbmQoJnNlbGYtPmJ6cyk7Ci0gICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKLX0KLQotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEJaMkRlY29tcF9UeXBlIGRlZmluaXRpb24uICovCi0KLVB5RG9jX1NUUlZBUihCWjJEZWNvbXBfX2RvY19fLAotIkJaMkRlY29tcHJlc3NvcigpIC0+IGRlY29tcHJlc3NvciBvYmplY3RcblwKLVxuXAotQ3JlYXRlIGEgbmV3IGRlY29tcHJlc3NvciBvYmplY3QuIFRoaXMgb2JqZWN0IG1heSBiZSB1c2VkIHRvIGRlY29tcHJlc3NcblwKLWRhdGEgc2VxdWVudGlhbGx5LiBJZiB5b3Ugd2FudCB0byBkZWNvbXByZXNzIGRhdGEgaW4gb25lIHNob3QsIHVzZSB0aGVcblwKLWRlY29tcHJlc3MoKSBmdW5jdGlvbiBpbnN0ZWFkLlxuXAotIik7Ci0KLXN0YXRpYyBQeVR5cGVPYmplY3QgQloyRGVjb21wX1R5cGUgPSB7Ci0gICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgImJ6Mi5CWjJEZWNvbXByZXNzb3IiLCAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKEJaMkRlY29tcE9iamVjdCksIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpQloyRGVjb21wX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwvKnRwX2dldGF0dHJvKi8KLSAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwotICAgIEJaMkRlY29tcF9fZG9jX18sICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIEJaMkRlY29tcF9tZXRob2RzLCAgICAgIC8qdHBfbWV0aG9kcyovCi0gICAgQloyRGVjb21wX21lbWJlcnMsICAgICAgLyp0cF9tZW1iZXJzKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldHNldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9iYXNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RpY3QqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3JfZ2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX3NldCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0b2Zmc2V0Ki8KLSAgICAoaW5pdHByb2MpQloyRGVjb21wX2luaXQsIC8qdHBfaW5pdCovCi0gICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgLyp0cF9hbGxvYyovCi0gICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgLyp0cF9uZXcqLwotICAgIFB5T2JqZWN0X0ZyZWUsICAgICAgICAgIC8qdHBfZnJlZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pc19nYyovCi19OwotCi0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotLyogTW9kdWxlIGZ1bmN0aW9ucy4gKi8KLQotUHlEb2NfU1RSVkFSKGJ6Ml9jb21wcmVzc19fZG9jX18sCi0iY29tcHJlc3MoZGF0YSBbLCBjb21wcmVzc2xldmVsPTldKSAtPiBzdHJpbmdcblwKLVxuXAotQ29tcHJlc3MgZGF0YSBpbiBvbmUgc2hvdC4gSWYgeW91IHdhbnQgdG8gY29tcHJlc3MgZGF0YSBzZXF1ZW50aWFsbHksXG5cCi11c2UgYW4gaW5zdGFuY2Ugb2YgQloyQ29tcHJlc3NvciBpbnN0ZWFkLiBUaGUgY29tcHJlc3NsZXZlbCBwYXJhbWV0ZXIsIGlmXG5cCi1naXZlbiwgbXVzdCBiZSBhIG51bWJlciBiZXR3ZWVuIDEgYW5kIDkuXG5cCi0iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWJ6Ml9jb21wcmVzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCi17Ci0gICAgaW50IGNvbXByZXNzbGV2ZWw9OTsKLSAgICBpbnQgYWN0aW9uOwotICAgIFB5X2J1ZmZlciBwZGF0YTsKLSAgICBzaXplX3QgaW5wdXRfbGVmdDsKLSAgICBzaXplX3Qgb3V0cHV0X3NpemUgPSAwOwotICAgIFB5T2JqZWN0ICpyZXQgPSBOVUxMOwotICAgIGJ6X3N0cmVhbSBfYnpzOwotICAgIGJ6X3N0cmVhbSAqYnpzID0gJl9ienM7Ci0gICAgaW50IGJ6ZXJyb3I7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJkYXRhIiwgImNvbXByZXNzbGV2ZWwiLCAwfTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInkqfGkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnBkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wcmVzc2xldmVsKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoY29tcHJlc3NsZXZlbCA8IDEgfHwgY29tcHJlc3NsZXZlbCA+IDkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY29tcHJlc3NsZXZlbCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgOSIpOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgU01BTExDSFVOSyk7Ci0gICAgaWYgKCFyZXQpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBtZW1zZXQoYnpzLCAwLCBzaXplb2YoYnpfc3RyZWFtKSk7Ci0KLSAgICBienMtPm5leHRfaW4gPSBwZGF0YS5idWY7Ci0gICAgYnpzLT5hdmFpbF9pbiA9IE1JTihwZGF0YS5sZW4sIFVJTlRfTUFYKTsKLSAgICBpbnB1dF9sZWZ0ID0gcGRhdGEubGVuIC0gYnpzLT5hdmFpbF9pbjsKLQotICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KTsKLSAgICBienMtPmF2YWlsX291dCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KTsKLQotICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzc0luaXQoYnpzLCBjb21wcmVzc2xldmVsLCAwLCAwKTsKLSAgICBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICBVdGlsX0NhdGNoQloyRXJyb3IoYnplcnJvcik7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFjdGlvbiA9IEJaX1JVTjsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgY2hhciAqc2F2ZWRfbmV4dF9vdXQ7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBzYXZlZF9uZXh0X291dCA9IGJ6cy0+bmV4dF9vdXQ7Ci0gICAgICAgIGJ6ZXJyb3IgPSBCWjJfYnpDb21wcmVzcyhienMsIGFjdGlvbik7Ci0gICAgICAgIG91dHB1dF9zaXplICs9IGJ6cy0+bmV4dF9vdXQgLSBzYXZlZF9uZXh0X291dDsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgICAgICBpZiAoYnplcnJvciA9PSBCWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfSBlbHNlIGlmIChiemVycm9yICE9IEJaX1JVTl9PSyAmJiBiemVycm9yICE9IEJaX0ZJTklTSF9PSykgewotICAgICAgICAgICAgQloyX2J6Q29tcHJlc3NFbmQoYnpzKTsKLSAgICAgICAgICAgIFV0aWxfQ2F0Y2hCWjJFcnJvcihiemVycm9yKTsKLSAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFjdGlvbiA9PSBCWl9SVU4gJiYgYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgYWN0aW9uID0gQlpfRklOSVNIOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBienMtPmF2YWlsX2luID0gTUlOKGlucHV0X2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBienMtPm5leHRfb3V0ID0gQlVGKHJldCkgKyBvdXRwdXRfc2l6ZTsKLSAgICAgICAgICAgICAgICBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9vdXQgPSBNSU4oYnVmZmVyX2xlZnQsIFVJTlRfTUFYKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChvdXRwdXRfc2l6ZSAhPSBQeUJ5dGVzX0dFVF9TSVpFKHJldCkpCi0gICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmV0LCBvdXRwdXRfc2l6ZSk7ICAvKiBTZXRzIHJldCB0byBOVUxMIG9uIGZhaWx1cmUuICovCi0KLSAgICBCWjJfYnpDb21wcmVzc0VuZChienMpOwotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1QeURvY19TVFJWQVIoYnoyX2RlY29tcHJlc3NfX2RvY19fLAotImRlY29tcHJlc3MoZGF0YSkgLT4gZGVjb21wcmVzc2VkIGRhdGFcblwKLVxuXAotRGVjb21wcmVzcyBkYXRhIGluIG9uZSBzaG90LiBJZiB5b3Ugd2FudCB0byBkZWNvbXByZXNzIGRhdGEgc2VxdWVudGlhbGx5LFxuXAotdXNlIGFuIGluc3RhbmNlIG9mIEJaMkRlY29tcHJlc3NvciBpbnN0ZWFkLlxuXAotIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1iejJfZGVjb21wcmVzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfYnVmZmVyIHBkYXRhOwotICAgIHNpemVfdCBpbnB1dF9sZWZ0OwotICAgIHNpemVfdCBvdXRwdXRfc2l6ZSA9IDA7Ci0gICAgUHlPYmplY3QgKnJldDsKLSAgICBiel9zdHJlYW0gX2J6czsKLSAgICBiel9zdHJlYW0gKmJ6cyA9ICZfYnpzOwotICAgIGludCBiemVycm9yOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5KjpkZWNvbXByZXNzIiwgJnBkYXRhKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocGRhdGEubGVuID09IDApIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7Ci0gICAgfQotCi0gICAgcmV0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTTUFMTENIVU5LKTsKLSAgICBpZiAoIXJldCkgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIG1lbXNldChienMsIDAsIHNpemVvZihiel9zdHJlYW0pKTsKLQotICAgIGJ6cy0+bmV4dF9pbiA9IHBkYXRhLmJ1ZjsKLSAgICBienMtPmF2YWlsX2luID0gTUlOKHBkYXRhLmxlbiwgVUlOVF9NQVgpOwotICAgIGlucHV0X2xlZnQgPSBwZGF0YS5sZW4gLSBienMtPmF2YWlsX2luOwotCi0gICAgYnpzLT5uZXh0X291dCA9IEJVRihyZXQpOwotICAgIGJ6cy0+YXZhaWxfb3V0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpOwotCi0gICAgYnplcnJvciA9IEJaMl9iekRlY29tcHJlc3NJbml0KGJ6cywgMCwgMCk7Ci0gICAgaWYgKGJ6ZXJyb3IgIT0gQlpfT0spIHsKLSAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICBQeV9ERUNSRUYocmV0KTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIGNoYXIgKnNhdmVkX25leHRfb3V0OwotCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgc2F2ZWRfbmV4dF9vdXQgPSBienMtPm5leHRfb3V0OwotICAgICAgICBiemVycm9yID0gQloyX2J6RGVjb21wcmVzcyhienMpOwotICAgICAgICBvdXRwdXRfc2l6ZSArPSBienMtPm5leHRfb3V0IC0gc2F2ZWRfbmV4dF9vdXQ7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKGJ6ZXJyb3IgPT0gQlpfU1RSRUFNX0VORCkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoYnplcnJvciAhPSBCWl9PSykgewotICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgVXRpbF9DYXRjaEJaMkVycm9yKGJ6ZXJyb3IpOwotICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoYnpzLT5hdmFpbF9pbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoaW5wdXRfbGVmdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgQloyX2J6RGVjb21wcmVzc0VuZChienMpOwotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgZmluZCBlbmQgb2Ygc3RyZWFtIik7Ci0gICAgICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnpzLT5hdmFpbF9pbiA9IE1JTihpbnB1dF9sZWZ0LCBVSU5UX01BWCk7Ci0gICAgICAgICAgICBpbnB1dF9sZWZ0IC09IGJ6cy0+YXZhaWxfaW47Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ6cy0+YXZhaWxfb3V0ID09IDApIHsKLSAgICAgICAgICAgIHNpemVfdCBidWZmZXJfbGVmdCA9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSAtIG91dHB1dF9zaXplOwotICAgICAgICAgICAgaWYgKGJ1ZmZlcl9sZWZ0ID09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoVXRpbF9Hcm93QnVmZmVyKCZyZXQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBCWjJfYnpEZWNvbXByZXNzRW5kKGJ6cyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJ6cy0+bmV4dF9vdXQgPSBCVUYocmV0KSArIG91dHB1dF9zaXplOwotICAgICAgICAgICAgICAgIGJ1ZmZlcl9sZWZ0ID0gUHlCeXRlc19HRVRfU0laRShyZXQpIC0gb3V0cHV0X3NpemU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBienMtPmF2YWlsX291dCA9IE1JTihidWZmZXJfbGVmdCwgVUlOVF9NQVgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG91dHB1dF9zaXplICE9IFB5Qnl0ZXNfR0VUX1NJWkUocmV0KSkKLSAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXQsIG91dHB1dF9zaXplKTsgIC8qIFNldHMgcmV0IHRvIE5VTEwgb24gZmFpbHVyZS4gKi8KLQotICAgIEJaMl9iekRlY29tcHJlc3NFbmQoYnpzKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwZGF0YSk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIFB5TWV0aG9kRGVmIGJ6Ml9tZXRob2RzW10gPSB7Ci0gICAgeyJjb21wcmVzcyIsIChQeUNGdW5jdGlvbikgYnoyX2NvbXByZXNzLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKLSAgICAgICAgYnoyX2NvbXByZXNzX19kb2NfX30sCi0gICAgeyJkZWNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKSBiejJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAotICAgICAgICBiejJfZGVjb21wcmVzc19fZG9jX199LAotICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLS8qIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLiAqLwotCi1QeURvY19TVFJWQVIoYnoyX19kb2NfXywKLSJUaGUgcHl0aG9uIGJ6MiBtb2R1bGUgcHJvdmlkZXMgYSBjb21wcmVoZW5zaXZlIGludGVyZmFjZSBmb3JcblwKLXRoZSBiejIgY29tcHJlc3Npb24gbGlicmFyeS4gSXQgaW1wbGVtZW50cyBhIGNvbXBsZXRlIGZpbGVcblwKLWludGVyZmFjZSwgb25lIHNob3QgKGRlKWNvbXByZXNzaW9uIGZ1bmN0aW9ucywgYW5kIHR5cGVzIGZvclxuXAotc2VxdWVudGlhbCAoZGUpY29tcHJlc3Npb24uXG5cCi0iKTsKLQotCi1zdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIGJ6Mm1vZHVsZSA9IHsKLSAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsCi0gICAgImJ6MiIsCi0gICAgYnoyX19kb2NfXywKLSAgICAtMSwKLSAgICBiejJfbWV0aG9kcywKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMCi19OwotCi1QeU1PRElOSVRfRlVOQwotUHlJbml0X2J6Mih2b2lkKQotewotICAgIFB5T2JqZWN0ICptOwotCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmQloyRmlsZV9UeXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJkJaMkNvbXBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUeXBlX1JlYWR5KCZCWjJEZWNvbXBfVHlwZSkgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIG0gPSBQeU1vZHVsZV9DcmVhdGUoJmJ6Mm1vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fYXV0aG9yX18iLCBQeVVuaWNvZGVfRnJvbVN0cmluZyhfX2F1dGhvcl9fKSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkZpbGVfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJGaWxlIiwgKFB5T2JqZWN0ICopJkJaMkZpbGVfVHlwZSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkNvbXBfVHlwZSk7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJCWjJDb21wcmVzc29yIiwgKFB5T2JqZWN0ICopJkJaMkNvbXBfVHlwZSk7Ci0KLSAgICBQeV9JTkNSRUYoJkJaMkRlY29tcF9UeXBlKTsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkJaMkRlY29tcHJlc3NvciIsIChQeU9iamVjdCAqKSZCWjJEZWNvbXBfVHlwZSk7Ci0gICAgcmV0dXJuIG07Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKaW5kZXggYWI0ZTY1OS4uOWU5ZTk2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYwpAQCAtODUsNyArODUsNyBAQAogICAgICAgICBUUllNQVBfREVDKGdiMjMxMiwgKipvdXRidWYsIGMgXiAweDgwLCBJTjIgXiAweDgwKSB7CiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAKICAgICAgICAgR0JLX0RFQ09ERShjLCBJTjIsICoqb3V0YnVmKQotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgICAgIGMzID0gSU4zOwogICAgICAgICAgICAgYzQgPSBJTjQ7CiAgICAgICAgICAgICBpZiAoYyA8IDB4ODEgfHwgYzMgPCAweDgxIHx8IGM0IDwgMHgzMCB8fCBjNCA+IDB4MzkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICBjIC09IDB4ODE7ICBjMiAtPSAweDMwOwogICAgICAgICAgICAgYzMgLT0gMHg4MTsgYzQgLT0gMHgzMDsKIApAQCAtMjkyLDEyICsyOTIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogCiAgICAgICAgIEdCS19ERUNPREUoYywgYzIsICoqb3V0YnVmKQogICAgICAgICBlbHNlIFRSWU1BUF9ERUMoZ2IxODAzMGV4dCwgKipvdXRidWYsIGMsIGMyKTsKLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtNDAwLDcgKzQwMCw3IEBACiAgICAgICAgICAgICBlbHNlIGlmIChjMiA9PSAnXG4nKQogICAgICAgICAgICAgICAgIDsgLyogbGluZS1jb250aW51YXRpb24gKi8KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMiwgMCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtNDE5LDcgKzQxOSw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2hrLmMKaW5kZXggNTU4YTQyZi4uZDNhZDA0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19oay5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfaGsuYwpAQCAtMTYxLDcgKzE2MSw3IEBACiAgICAgICAgIGNhc2UgMHg4ODY0OiBXUklURTIoMHgwMGNhLCAweDAzMGMpOyBicmVhazsKICAgICAgICAgY2FzZSAweDg4YTM6IFdSSVRFMigweDAwZWEsIDB4MDMwNCk7IGJyZWFrOwogICAgICAgICBjYXNlIDB4ODhhNTogV1JJVEUyKDB4MDBlYSwgMHgwMzBjKTsgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IHJldHVybiAyOworICAgICAgICBkZWZhdWx0OiByZXR1cm4gMTsKICAgICAgICAgfQogCiAgICAgICAgIE5FWFQoMiwgMikgLyogYWxsIGRlY29kZWQgY29kZXBvaW50cyBhcmUgcGFpcnMsIGFib3ZlLiAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19pc28yMDIyLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYwppbmRleCAyNWMxYTM2Li5jYmMxNTQyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2lzbzIwMjIuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiAKIENPREVDX0lOSVQoaXNvMjAyMikKIHsKLSAgICBjb25zdCBzdHJ1Y3QgaXNvMjAyMl9kZXNpZ25hdGlvbiAqZGVzaWcgPSBDT05GSUdfREVTSUdOQVRJT05TOworICAgIGNvbnN0IHN0cnVjdCBpc28yMDIyX2Rlc2lnbmF0aW9uICpkZXNpZzsKICAgICBmb3IgKGRlc2lnID0gQ09ORklHX0RFU0lHTkFUSU9OUzsgZGVzaWctPm1hcms7IGRlc2lnKyspCiAgICAgICAgIGlmIChkZXNpZy0+aW5pdGlhbGl6ZXIgIT0gTlVMTCAmJiBkZXNpZy0+aW5pdGlhbGl6ZXIoKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19qcC5jCmluZGV4IGEwNWUwMWIuLmE1MDA2OTYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfanAuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2pwLmMKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgICAgICBUUllNQVBfREVDKGNwOTMyZXh0LCAqKm91dGJ1ZiwgYywgYzIpOwogICAgICAgICBlbHNlIGlmICgoYyA+PSAweDgxICYmIGMgPD0gMHg5ZikgfHwgKGMgPj0gMHhlMCAmJiBjIDw9IDB4ZWEpKXsKICAgICAgICAgICAgIGlmIChjMiA8IDB4NDAgfHwgKGMyID4gMHg3ZSAmJiBjMiA8IDB4ODApIHx8IGMyID4gMHhmYykKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgYyA9IChjIDwgMHhlMCA/IGMgLSAweDgxIDogYyAtIDB4YzEpOwogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDgwID8gYzIgLSAweDQwIDogYzIgLSAweDQxKTsKQEAgLTEyMCw3ICsxMjAsNyBAQAogICAgICAgICAgICAgYzIgPSAoYzIgPCAweDVlID8gYzIgOiBjMiAtIDB4NWUpICsgMHgyMTsKIAogICAgICAgICAgICAgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsIGMsIGMyKTsKLSAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgICAgICBlbHNlIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGMgPj0gMHhmMCAmJiBjIDw9IDB4ZjkpIHsKICAgICAgICAgICAgIGlmICgoYzIgPj0gMHg0MCAmJiBjMiA8PSAweDdlKSB8fApAQCAtMTI4LDEwICsxMjgsMTAgQEAKICAgICAgICAgICAgICAgICBPVVQxKDB4ZTAwMCArIDE4OCAqIChjIC0gMHhmMCkgKwogICAgICAgICAgICAgICAgICAgICAgKGMyIDwgMHg4MCA/IGMyIC0gMHg0MCA6IGMyIC0gMHg0MSkpCiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGMgPT0gMHg4ZikgewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMiwgYzM7CkBAIC0yNzQsNyArMjc0LDcgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgVFJZTUFQX0RFQyhqaXN4MDIxMiwgKipvdXRidWYsIGMyLCBjMykgOwotICAgICAgICAgICAgZWxzZSByZXR1cm4gMzsKKyAgICAgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgICAgICAgICBORVhUKDMsIDEpCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0zMDAsNyArMzAwLDcgQEAKICAgICAgICAgICAgICAgICBORVhUKDIsIDIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQogICAgIH0KQEAgLTM4OCw3ICszODgsNyBAQAogICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjID09IDB4OGYpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzIsIGMzOwpAQCAtNDAxLDcgKzQwMSw3IEBACiAgICAgICAgICAgICAgICAgTkVYVCgzLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjMjsKQEAgLTQxNyw3ICs0MTcsNyBAQAogI2VuZGlmCiAgICAgICAgICAgICAgICAgVFJZTUFQX0RFQyhqaXN4MDIwOCwgKipvdXRidWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjIF4gMHg4MCwgYzIgXiAweDgwKSA7Ci0gICAgICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgIE5FWFQoMiwgMSkKICAgICAgICAgfQogICAgIH0KQEAgLTUwMiw3ICs1MDIsNyBAQAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogICAgICAgICAgICAgYzIgPSBJTjI7CiAgICAgICAgICAgICBpZiAoYzIgPCAweDQwIHx8IChjMiA+IDB4N2UgJiYgYzIgPCAweDgwKSB8fCBjMiA+IDB4ZmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIGMxID0gKGMgPCAweGUwID8gYyAtIDB4ODEgOiBjIC0gMHhjMSk7CiAgICAgICAgICAgICBjMiA9IChjMiA8IDB4ODAgPyBjMiAtIDB4NDAgOiBjMiAtIDB4NDEpOwpAQCAtNTIyLDEwICs1MjIsMTAgQEAKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMSwgMSkgLyogSklTIFggMDIwMSAqLwogICAgIH0KQEAgLTY0NSw3ICs2NDUsNyBAQAogICAgICAgICAgICAgUkVRVUlSRV9JTkJVRigyKQogICAgICAgICAgICAgYzIgPSBJTjI7CiAgICAgICAgICAgICBpZiAoYzIgPCAweDQwIHx8IChjMiA+IDB4N2UgJiYgYzIgPCAweDgwKSB8fCBjMiA+IDB4ZmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIGMxID0gKGMgPCAweGUwID8gYyAtIDB4ODEgOiBjIC0gMHhjMSk7CiAgICAgICAgICAgICBjMiA9IChjMiA8IDB4ODAgPyBjMiAtIDB4NDAgOiBjMiAtIDB4NDEpOwpAQCAtNjcxLDcgKzY3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIE5FWFRfT1VUKDIpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIE5FWFRfSU4oMikKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgeyAvKiBQbGFuZSAyICovCkBAIC02ODksMTMgKzY4OSwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDEsIDEpIC8qIEpJUyBYIDAyMDEgKi8KICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2tyLmMKaW5kZXggOTI3MmUzNi4uZjU2OTdkZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19rci5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3Nfa3IuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiAgICAgICAgICAgICBpZiAoKCppbmJ1ZilbMl0gIT0gRVVDS1JfSkFNT19GSVJTVEJZVEUgfHwKICAgICAgICAgICAgICAgICAoKmluYnVmKVs0XSAhPSBFVUNLUl9KQU1PX0ZJUlNUQllURSB8fAogICAgICAgICAgICAgICAgICgqaW5idWYpWzZdICE9IEVVQ0tSX0pBTU9fRklSU1RCWVRFKQotICAgICAgICAgICAgICAgIHJldHVybiA4OworICAgICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgICAgICBjID0gKCppbmJ1ZilbM107CiAgICAgICAgICAgICBpZiAoMHhhMSA8PSBjICYmIGMgPD0gMHhiZSkKQEAgLTE0Myw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgIGpvbmcgPSBOT05FOwogCiAgICAgICAgICAgICBpZiAoY2hvID09IE5PTkUgfHwganVuZyA9PSBOT05FIHx8IGpvbmcgPT0gTk9ORSkKLSAgICAgICAgICAgICAgICByZXR1cm4gODsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICAgICAgT1VUMSgweGFjMDAgKyBjaG8qNTg4ICsganVuZyoyOCArIGpvbmcpOwogICAgICAgICAgICAgTkVYVCg4LCAxKQpAQCAtMTUyLDcgKzE1Miw3IEBACiAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTIwOCw3ICsyMDgsNyBAQAogICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCiAgICAgICAgIFRSWU1BUF9ERUMoa3N4MTAwMSwgKipvdXRidWYsIGMgXiAweDgwLCBJTjIgXiAweDgwKTsKICAgICAgICAgZWxzZSBUUllNQVBfREVDKGNwOTQ5ZXh0LCAqKm91dGJ1ZiwgYywgSU4yKTsKLSAgICAgICAgZWxzZSByZXR1cm4gMjsKKyAgICAgICAgZWxzZSByZXR1cm4gMTsKIAogICAgICAgICBORVhUKDIsIDEpCiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBACiAgICAgICAgICAgICBpX2pvbmcgPSBqb2hhYmlkeF9qb25nc2VvbmdbY19qb25nXTsKIAogICAgICAgICAgICAgaWYgKGlfY2hvID09IE5PTkUgfHwgaV9qdW5nID09IE5PTkUgfHwgaV9qb25nID09IE5PTkUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAKICAgICAgICAgICAgIC8qIHdlIGRvbid0IHVzZSBVKzExMDAgaGFuZ3VsIGphbW8geWV0LiAqLwogICAgICAgICAgICAgaWYgKGlfY2hvID09IEZJTEwpIHsKQEAgLTM5MSw3ICszOTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgT1VUMSgweDMxMDAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICBqb2hhYmphbW9fanVuZ3Nlb25nW2NfanVuZ10pCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoaV9qdW5nID09IEZJTEwpIHsKQEAgLTM5OSw3ICszOTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgT1VUMSgweDMxMDAgfAogICAgICAgICAgICAgICAgICAgICAgICAgICBqb2hhYmphbW9fY2hvc2VvbmdbY19jaG9dKQogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIE9VVDEoMHhhYzAwICsKQEAgLTQxNCw3ICs0MTQsNyBAQAogICAgICAgICAgICAgICAgIGMyIDwgMHgzMSB8fCAoYzIgPj0gMHg4MCAmJiBjMiA8IDB4OTEpIHx8CiAgICAgICAgICAgICAgICAgKGMyICYgMHg3ZikgPT0gMHg3ZiB8fAogICAgICAgICAgICAgICAgIChjID09IDB4ZGEgJiYgKGMyID49IDB4YTEgJiYgYzIgPD0gMHhkMykpKQotICAgICAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciB0MSwgdDI7CiAKQEAgLTQyNSw3ICs0MjUsNyBAQAogICAgICAgICAgICAgICAgIHQyID0gKHQyIDwgMHg1ZSA/IHQyIDogdDIgLSAweDVlKSArIDB4MjE7CiAKICAgICAgICAgICAgICAgICBUUllNQVBfREVDKGtzeDEwMDEsICoqb3V0YnVmLCB0MSwgdDIpOwotICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMTsKICAgICAgICAgICAgICAgICBORVhUKDIsIDEpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfdHcuYwppbmRleCAzOGNmNzIzLi45MTYyOThkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX3R3LmMKKysrIGIvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc190dy5jCkBAIC01NSw3ICs1NSw3IEBACiAgICAgICAgIFRSWU1BUF9ERUMoYmlnNSwgKipvdXRidWYsIGMsIElOMikgewogICAgICAgICAgICAgTkVYVCgyLCAxKQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgcmV0dXJuIDI7CisgICAgICAgIGVsc2UgcmV0dXJuIDE7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xMDksNyArMTA5LDcgQEAKIAogICAgICAgICBUUllNQVBfREVDKGNwOTUwZXh0LCAqKm91dGJ1ZiwgYywgSU4yKTsKICAgICAgICAgZWxzZSBUUllNQVBfREVDKGJpZzUsICoqb3V0YnVmLCBjLCBJTjIpOwotICAgICAgICBlbHNlIHJldHVybiAyOworICAgICAgICBlbHNlIHJldHVybiAxOwogCiAgICAgICAgIE5FWFQoMiwgMSkKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jIGIvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYwppbmRleCA3YjA0ZjAyMC4uYWJhZDI1MSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC00NDMsMTAgKzQ0MywxMiBAQAogICAgICAgICBnb3RvIGVycm9yZXhpdDsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX0FzVW5pY29kZShyZXR1bmkpID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIHJldHVuaXNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmV0dW5pKTsKICAgICBpZiAocmV0dW5pc2l6ZSA+IDApIHsKICAgICAgICAgUkVRVUlSRV9ERUNPREVCVUZGRVIoYnVmLCByZXR1bmlzaXplKTsKLSAgICAgICAgbWVtY3B5KChjaGFyICopYnVmLT5vdXRidWYsIFB5VW5pY29kZV9BU19EQVRBKHJldHVuaSksCisgICAgICAgIG1lbWNweSgoY2hhciAqKWJ1Zi0+b3V0YnVmLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR1bmkpLAogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dW5pc2l6ZSAqIFB5X1VOSUNPREVfU0laRSk7CiAgICAgICAgIGJ1Zi0+b3V0YnVmICs9IHJldHVuaXNpemU7CiAgICAgfQpAQCAtNDgzLDYgKzQ4NSw3IEBACiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCiAgICAgYnVmLmV4Y29iaiA9IE5VTEw7CisgICAgYnVmLm91dG9iaiA9IE5VTEw7CiAgICAgYnVmLmluYnVmID0gYnVmLmluYnVmX3RvcCA9ICpkYXRhOwogICAgIGJ1Zi5pbmJ1Zl9lbmQgPSBidWYuaW5idWZfdG9wICsgZGF0YWxlbjsKIApAQCAtNTczLDggKzU3NiwxMSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZGF0YSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZyk7Ci0gICAgZGF0YWxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShhcmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShhcmcsICZkYXRhbGVuKTsKKyAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgIFB5X1hERUNSRUYodWN2dCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGVycm9yY2IgPSBpbnRlcm5hbF9lcnJvcl9jYWxsYmFjayhlcnJvcnMpOwogICAgIGlmIChlcnJvcmNiID09IE5VTEwpIHsKQEAgLTYyNyw3ICs2MzMsNyBAQAogICAgIGlmIChkYXRhbGVuID09IDApIHsKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcGRhdGEpOwogICAgICAgICBFUlJPUl9ERUNSRUYoZXJyb3JjYik7Ci0gICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCAwKSwgMCk7CisgICAgICAgIHJldHVybiBtYWtlX3R1cGxlKFB5VW5pY29kZV9OZXcoMCwgMCksIDApOwogICAgIH0KIAogICAgIGJ1Zi5leGNvYmogPSBOVUxMOwpAQCAtNjM3LDYgKzY0Myw4IEBACiAgICAgaWYgKGJ1Zi5vdXRvYmogPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcmV4aXQ7CiAgICAgYnVmLm91dGJ1ZiA9IFB5VW5pY29kZV9BU19VTklDT0RFKGJ1Zi5vdXRvYmopOworICAgIGlmIChidWYub3V0YnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIGJ1Zi5vdXRidWZfZW5kID0gYnVmLm91dGJ1ZiArIFB5VW5pY29kZV9HRVRfU0laRShidWYub3V0b2JqKTsKIAogICAgIGlmIChzZWxmLT5jb2RlYy0+ZGVjaW5pdCAhPSBOVUxMICYmCkBAIC03NDIsNiArNzUwLDcgQEAKICAgICBQeU9iamVjdCAqdWN2dCwgKnIgPSBOVUxMOwogICAgIFB5X1VOSUNPREUgKmluYnVmLCAqaW5idWZfZW5kLCAqaW5idWZfdG1wID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGRhdGFsZW4sIG9yaWdwZW5kaW5nOworICAgIHdjaGFyX3QgKmRhdGE7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHVuaXN0cikpCiAgICAgICAgIHVjdnQgPSBOVUxMOwpAQCAtNzU3LDcgKzc2Niw5IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkYXRhbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaXN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaXN0ciwgJmRhdGFsZW4pOworICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3JleGl0OwogICAgIG9yaWdwZW5kaW5nID0gY3R4LT5wZW5kaW5nc2l6ZTsKIAogICAgIGlmIChvcmlncGVuZGluZyA+IDApIHsKQEAgLTg0OCw3ICs4NTksOSBAQAogICAgICAgICBidWYtPm91dG9iaiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKTsKICAgICAgICAgaWYgKGJ1Zi0+b3V0b2JqID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGJ1Zi0+b3V0YnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYnVmLT5vdXRvYmopOworICAgICAgICBidWYtPm91dGJ1ZiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUoYnVmLT5vdXRvYmopOworICAgICAgICBpZiAoYnVmLT5vdXRidWYgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgYnVmLT5vdXRidWZfZW5kID0gYnVmLT5vdXRidWYgKwogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoYnVmLT5vdXRvYmopOwogICAgIH0KQEAgLTkwMCwxMSArOTEzLDE3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWJpZW5jb2Rlcl9yZXNldChNdWx0aWJ5dGVJbmNyZW1lbnRhbEVuY29kZXJPYmplY3QgKnNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmNvZGVjLT5kZWNyZXNldCAhPSBOVUxMICYmCi0gICAgICAgIHNlbGYtPmNvZGVjLT5kZWNyZXNldCgmc2VsZi0+c3RhdGUsIHNlbGYtPmNvZGVjLT5jb25maWcpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIExvbmdlc3Qgb3V0cHV0OiA0IGJ5dGVzIChiJ1x4MEZceDFGKEInKSB3aXRoIElTTyAyMDIyICovCisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbNF0sICpvdXRidWY7CisgICAgUHlfc3NpemVfdCByOworICAgIGlmIChzZWxmLT5jb2RlYy0+ZW5jcmVzZXQgIT0gTlVMTCkgeworICAgICAgICBvdXRidWYgPSBidWZmZXI7CisgICAgICAgIHIgPSBzZWxmLT5jb2RlYy0+ZW5jcmVzZXQoJnNlbGYtPnN0YXRlLCBzZWxmLT5jb2RlYy0+Y29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRidWYsIHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgaWYgKHIgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBzZWxmLT5wZW5kaW5nc2l6ZSA9IDA7Ci0KICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIApAQCAtMTI0Niw3ICsxMjY1LDcgQEAKICAgICBQeV9zc2l6ZV90IHJzaXplLCBmaW5hbHNpemUgPSAwOwogCiAgICAgaWYgKHNpemVoaW50ID09IDApCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOwogCiAgICAgYnVmLm91dG9iaiA9IGJ1Zi5leGNvYmogPSBOVUxMOwogICAgIGNyZXMgPSBOVUxMOwpAQCAtMTU3MiwxMiArMTU5MSwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmlzdHIpCiB7CiAgICAgUHlPYmplY3QgKnN0ciwgKndyOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKIAogICAgIHN0ciA9IGVuY29kZXJfZW5jb2RlX3N0YXRlZnVsKFNUQVRFRlVMX0VDVFgoc2VsZiksIHVuaXN0ciwgMCk7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB3ciA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLCAid3JpdGUiLCAiTyIsIHN0cik7CisgICAgd3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnN0cmVhbSwgJlB5SWRfd3JpdGUsICJPIiwgc3RyKTsKICAgICBQeV9ERUNSRUYoc3RyKTsKICAgICBpZiAod3IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTY0Myw3ICsxNjYzLDkgQEAKICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhwd3J0KSk7CiAgICAgaWYgKFB5Qnl0ZXNfU2l6ZShwd3J0KSA+IDApIHsKICAgICAgICAgUHlPYmplY3QgKndyOwotICAgICAgICB3ciA9IFB5T2JqZWN0X0NhbGxNZXRob2Qoc2VsZi0+c3RyZWFtLCAid3JpdGUiLCAiTyIsIHB3cnQpOworICAgICAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CisKKyAgICAgICAgd3IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYtPnN0cmVhbSwgJlB5SWRfd3JpdGUsICJPIiwgcHdydCk7CiAgICAgICAgIGlmICh3ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocHdydCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvY29uZmlnLmMuaW4gYi9Nb2R1bGVzL2NvbmZpZy5jLmluCmluZGV4IDM0ZDQ0ZDUuLjdhMjRlMmQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvY29uZmlnLmMuaW4KKysrIGIvTW9kdWxlcy9jb25maWcuYy5pbgpAQCAtMzksMTMgKzM5LDEyIEBACiAgICAgeyJtYXJzaGFsIiwgUHlNYXJzaGFsX0luaXR9LAogCiAgICAgLyogVGhpcyBsaXZlcyBpbiBpbXBvcnQuYyAqLwotICAgIHsiaW1wIiwgUHlJbml0X2ltcH0sCisgICAgeyJfaW1wIiwgUHlJbml0X2ltcH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGluIFB5dGhvbi9QeXRob24tYXN0LmMgKi8KICAgICB7Il9hc3QiLCBQeUluaXRfX2FzdH0sCiAKICAgICAvKiBUaGVzZSBlbnRyaWVzIGFyZSBoZXJlIGZvciBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMgKi8KLSAgICB7Il9fbWFpbl9fIiwgTlVMTH0sCiAgICAgeyJidWlsdGlucyIsIE5VTEx9LAogICAgIHsic3lzIiwgTlVMTH0sCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXJybm9tb2R1bGUuYyBiL01vZHVsZXMvZXJybm9tb2R1bGUuYwppbmRleCA4NjcyMGFmLi4wNmVkNTNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2Vycm5vbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9lcnJub21vZHVsZS5jCkBAIC03LDYgKzcsMzMgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3ZXJlIGFkZGVkIHRvIGVycm5vLmggaW4gVlMyMDEwIGJ1dCBoYXZlCisgICBwcmVmZXJyZWQgV1NBIGVxdWl2YWxlbnRzLiAqLworI3VuZGVmIEVBRERSSU5VU0UKKyN1bmRlZiBFQUREUk5PVEFWQUlMCisjdW5kZWYgRUFGTk9TVVBQT1JUCisjdW5kZWYgRUFMUkVBRFkKKyN1bmRlZiBFQ09OTkFCT1JURUQKKyN1bmRlZiBFQ09OTlJFRlVTRUQKKyN1bmRlZiBFQ09OTlJFU0VUCisjdW5kZWYgRURFU1RBRERSUkVRCisjdW5kZWYgRUhPU1RVTlJFQUNICisjdW5kZWYgRUlOUFJPR1JFU1MKKyN1bmRlZiBFSVNDT05OCisjdW5kZWYgRUxPT1AKKyN1bmRlZiBFTVNHU0laRQorI3VuZGVmIEVORVRET1dOCisjdW5kZWYgRU5FVFJFU0VUCisjdW5kZWYgRU5FVFVOUkVBQ0gKKyN1bmRlZiBFTk9CVUZTCisjdW5kZWYgRU5PUFJPVE9PUFQKKyN1bmRlZiBFTk9UQ09OTgorI3VuZGVmIEVOT1RTT0NLCisjdW5kZWYgRU9QTk9UU1VQUAorI3VuZGVmIEVQUk9UT05PU1VQUE9SVAorI3VuZGVmIEVQUk9UT1RZUEUKKyN1bmRlZiBFVElNRURPVVQKKyN1bmRlZiBFV09VTERCTE9DSwogI2VuZGlmCiAKIC8qCkBAIC04NCw2ICsxMTEsOCBAQAogICAgICAqIFRoZSBuYW1lcyBhbmQgY29tbWVudHMgYXJlIGJvcnJvd2VkIGZyb20gbGludXgvaW5jbHVkZS9lcnJuby5oLAogICAgICAqIHdoaWNoIHNob3VsZCBiZSBwcmV0dHkgYWxsLWluY2x1c2l2ZS4gIEhvd2V2ZXIsIHRoZSBTb2xhcmlzIHNwZWNpZmljCiAgICAgICogbmFtZXMgYW5kIGNvbW1lbnRzIGFyZSBib3Jyb3dlZCBmcm9tIHN5cy9lcnJuby5oIGluIFNvbGFyaXMuCisgICAgICogTWFjT1NYIHNwZWNpZmljIG5hbWVzIGFuZCBjb21tZW50cyBhcmUgYm9ycm93ZWQgZnJvbSBzeXMvZXJybm8uaCBpbgorICAgICAqIE1hY09TWC4KICAgICAgKi8KIAogI2lmZGVmIEVOT0RFVgpAQCAtODQ4LDYgKzg3Nyw1OSBAQAogICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRU5PVEFDVElWRSIsIEVOT1RBQ1RJVkUsICJGYWNpbGl0eSBpcyBub3QgYWN0aXZlIik7CiAjZW5kaWYKIAorICAgIC8qIE1hY09TWCBzcGVjaWZpYyBlcnJub3MgKi8KKyNpZmRlZiBFQVVUSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUFVVEgiLCBFQVVUSCwgIkF1dGhlbnRpY2F0aW9uIGVycm9yIik7CisjZW5kaWYKKyNpZmRlZiBFQkFEQVJDSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUJBREFSQ0giLCBFQkFEQVJDSCwgIkJhZCBDUFUgdHlwZSBpbiBleGVjdXRhYmxlIik7CisjZW5kaWYKKyNpZmRlZiBFQkFERVhFQworICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUJBREVYRUMiLCBFQkFERVhFQywgIkJhZCBleGVjdXRhYmxlIChvciBzaGFyZWQgbGlicmFyeSkiKTsKKyNlbmRpZgorI2lmZGVmIEVCQURNQUNITworICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRUJBRE1BQ0hPIiwgRUJBRE1BQ0hPLCAiTWFsZm9ybWVkIE1hY2gtbyBmaWxlIik7CisjZW5kaWYKKyNpZmRlZiBFQkFEUlBDCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFQkFEUlBDIiwgRUJBRFJQQywgIlJQQyBzdHJ1Y3QgaXMgYmFkIik7CisjZW5kaWYKKyNpZmRlZiBFREVWRVJSCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFREVWRVJSIiwgRURFVkVSUiwgIkRldmljZSBlcnJvciIpOworI2VuZGlmCisjaWZkZWYgRUZUWVBFCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFRlRZUEUiLCBFRlRZUEUsICJJbmFwcHJvcHJpYXRlIGZpbGUgdHlwZSBvciBmb3JtYXQiKTsKKyNlbmRpZgorI2lmZGVmIEVORUVEQVVUSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRU5FRURBVVRIIiwgRU5FRURBVVRILCAiTmVlZCBhdXRoZW50aWNhdG9yIik7CisjZW5kaWYKKyNpZmRlZiBFTk9BVFRSCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFTk9BVFRSIiwgRU5PQVRUUiwgIkF0dHJpYnV0ZSBub3QgZm91bmQiKTsKKyNlbmRpZgorI2lmZGVmIEVOT1BPTElDWQorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRU5PUE9MSUNZIiwgRU5PUE9MSUNZLCAiUG9saWN5IG5vdCBmb3VuZCIpOworI2VuZGlmCisjaWZkZWYgRVBST0NMSU0KKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVQUk9DTElNIiwgRVBST0NMSU0sICJUb28gbWFueSBwcm9jZXNzZXMiKTsKKyNlbmRpZgorI2lmZGVmIEVQUk9DVU5BVkFJTAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0NVTkFWQUlMIiwgRVBST0NVTkFWQUlMLCAiQmFkIHByb2NlZHVyZSBmb3IgcHJvZ3JhbSIpOworI2VuZGlmCisjaWZkZWYgRVBST0dNSVNNQVRDSAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0dNSVNNQVRDSCIsIEVQUk9HTUlTTUFUQ0gsICJQcm9ncmFtIHZlcnNpb24gd3JvbmciKTsKKyNlbmRpZgorI2lmZGVmIEVQUk9HVU5BVkFJTAorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBST0dVTkFWQUlMIiwgRVBST0dVTkFWQUlMLCAiUlBDIHByb2cuIG5vdCBhdmFpbCIpOworI2VuZGlmCisjaWZkZWYgRVBXUk9GRgorICAgIGluc2NvZGUoZCwgZHMsIGRlLCAiRVBXUk9GRiIsIEVQV1JPRkYsICJEZXZpY2UgcG93ZXIgaXMgb2ZmIik7CisjZW5kaWYKKyNpZmRlZiBFUlBDTUlTTUFUQ0gKKyAgICBpbnNjb2RlKGQsIGRzLCBkZSwgIkVSUENNSVNNQVRDSCIsIEVSUENNSVNNQVRDSCwgIlJQQyB2ZXJzaW9uIHdyb25nIik7CisjZW5kaWYKKyNpZmRlZiBFU0hMSUJWRVJTCisgICAgaW5zY29kZShkLCBkcywgZGUsICJFU0hMSUJWRVJTIiwgRVNITElCVkVSUywgIlNoYXJlZCBsaWJyYXJ5IHZlcnNpb24gbWlzbWF0Y2giKTsKKyNlbmRpZgorCiAgICAgUHlfREVDUkVGKGRlKTsKICAgICByZXR1cm4gbTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvQ09QWUlORyBiL01vZHVsZXMvZXhwYXQvQ09QWUlORwppbmRleCBmYzk3YjAyLi5kY2I0NTA2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L0NPUFlJTkcKKysrIGIvTW9kdWxlcy9leHBhdC9DT1BZSU5HCkBAIC0xLDUgKzEsNiBAQAogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBDbGFyayBDb29wZXIKK0NvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBFeHBhdCBtYWludGFpbmVycy4KIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvYW1pZ2Fjb25maWcuaCBiL01vZHVsZXMvZXhwYXQvYW1pZ2Fjb25maWcuaAppbmRleCA2NzgxYTcxLi44NmM2MTE1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L2FtaWdhY29uZmlnLmgKKysrIGIvTW9kdWxlcy9leHBhdC9hbWlnYWNvbmZpZy5oCkBAIC0xMCw2NiArMTAsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y2hlY2suaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9DSEVDS19ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9ETEZDTl9ICi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZmNudGwuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfRkNOVExfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfR0VUUEFHRVNJWkUKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9JTlRUWVBFU19IIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1tb3ZlJyBmdW5jdGlvbi4gKi8KICNkZWZpbmUgSEFWRV9NRU1NT1ZFIDEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9NRU1PUllfSAotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSBhIHdvcmtpbmcgYG1tYXAnIHN5c3RlbSBjYWxsLiAqLwotI3VuZGVmIEhBVkVfTU1BUAotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NURExJQl9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmdzLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RyaW5nLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NUUklOR19IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvdHlwZXMuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9VTklTVERfSCAxCiAKLS8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLwotI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiZXhwYXQtYnVnc0BtYWlsLmxpYmV4cGF0Lm9yZyIKLQotLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLwotI2RlZmluZSBQQUNLQUdFX05BTUUgImV4cGF0IgotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJleHBhdCAxLjk1LjgiCi0KLS8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KLSN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKLQotLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OICIxLjk1LjgiCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBBTlNJIEMgaGVhZGVyIGZpbGVzLiAqLwotI2RlZmluZSBTVERDX0hFQURFUlMgMQotCiAvKiB3aGV0aGVyIGJ5dGVvcmRlciBpcyBiaWdlbmRpYW4gKi8KICNkZWZpbmUgV09SRFNfQklHRU5ESUFOCiAKQEAgLTgzLDE0ICsyOSw0IEBACiAvKiBEZWZpbmUgdG8gbWFrZSBYTUwgTmFtZXNwYWNlcyBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZS4gKi8KICNkZWZpbmUgWE1MX05TCiAKLS8qIERlZmluZSB0byBlbXB0eSBpZiBgY29uc3QnIGRvZXMgbm90IGNvbmZvcm0gdG8gQU5TSSBDLiAqLwotI3VuZGVmIGNvbnN0Ci0KLS8qIERlZmluZSB0byBgbG9uZycgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCi0jdW5kZWYgb2ZmX3QKLQotLyogRGVmaW5lIHRvIGB1bnNpZ25lZCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCi0jdW5kZWYgc2l6ZV90Ci0KLQogI2VuZGlmICAvKiBBTUlHQUNPTkZJR19IICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2FzY2lpLmggYi9Nb2R1bGVzL2V4cGF0L2FzY2lpLmgKaW5kZXggMzM3ZTViYi4uZDEwNTMwYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9hc2NpaS5oCisrKyBiL01vZHVsZXMvZXhwYXQvYXNjaWkuaApAQCAtODMsMyArODMsMTAgQEAKICNkZWZpbmUgQVNDSUlfTFNRQiAweDVCCiAjZGVmaW5lIEFTQ0lJX1JTUUIgMHg1RAogI2RlZmluZSBBU0NJSV9VTkRFUlNDT1JFIDB4NUYKKyNkZWZpbmUgQVNDSUlfTFBBUkVOIDB4MjgKKyNkZWZpbmUgQVNDSUlfUlBBUkVOIDB4MjkKKyNkZWZpbmUgQVNDSUlfRkYgMHgwQworI2RlZmluZSBBU0NJSV9TTEFTSCAweDJGCisjZGVmaW5lIEFTQ0lJX0hBU0ggMHgyMworI2RlZmluZSBBU0NJSV9QSVBFIDB4N0MKKyNkZWZpbmUgQVNDSUlfQ09NTUEgMHgyQwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9leHBhdC5oIGIvTW9kdWxlcy9leHBhdC9leHBhdC5oCmluZGV4IDg5NjQ2ZDIuLjA2YjVkZTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvZXhwYXQuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2V4cGF0LmgKQEAgLTc0Miw2ICs3NDIsMjkgQEAKIFhNTFBBUlNFQVBJKGludCkKIFhNTF9HZXRJZEF0dHJpYnV0ZUluZGV4KFhNTF9QYXJzZXIgcGFyc2VyKTsKIAorI2lmZGVmIFhNTF9BVFRSX0lORk8KKy8qIFNvdXJjZSBmaWxlIGJ5dGUgb2Zmc2V0cyBmb3IgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgYXR0cmlidXRlIG5hbWVzIGFuZCB2YWx1ZXMuCisgICBUaGUgdmFsdWUgaW5kaWNlcyBhcmUgZXhjbHVzaXZlIG9mIHN1cnJvdW5kaW5nIHF1b3RlczsgdGh1cyBpbiBhIFVURi04IHNvdXJjZQorICAgZmlsZSBhbiBhdHRyaWJ1dGUgdmFsdWUgb2YgImJsYWgiIHdpbGwgeWllbGQ6CisgICBpbmZvLT52YWx1ZUVuZCAtIGluZm8tPnZhbHVlU3RhcnQgPSA0IGJ5dGVzLgorKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgWE1MX0luZGV4ICBuYW1lU3RhcnQ7ICAvKiBPZmZzZXQgdG8gYmVnaW5uaW5nIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZS4gKi8KKyAgWE1MX0luZGV4ICBuYW1lRW5kOyAgICAvKiBPZmZzZXQgYWZ0ZXIgdGhlIGF0dHJpYnV0ZSBuYW1lJ3MgbGFzdCBieXRlLiAqLworICBYTUxfSW5kZXggIHZhbHVlU3RhcnQ7IC8qIE9mZnNldCB0byBiZWdpbm5pbmcgb2YgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gKi8KKyAgWE1MX0luZGV4ICB2YWx1ZUVuZDsgICAvKiBPZmZzZXQgYWZ0ZXIgdGhlIGF0dHJpYnV0ZSB2YWx1ZSdzIGxhc3QgYnl0ZS4gKi8KK30gWE1MX0F0dHJJbmZvOworCisvKiBSZXR1cm5zIGFuIGFycmF5IG9mIFhNTF9BdHRySW5mbyBzdHJ1Y3R1cmVzIGZvciB0aGUgYXR0cmlidXRlL3ZhbHVlIHBhaXJzCisgICBwYXNzZWQgaW4gbGFzdCBjYWxsIHRvIHRoZSBYTUxfU3RhcnRFbGVtZW50SGFuZGxlciB0aGF0IHdlcmUgc3BlY2lmaWVkCisgICBpbiB0aGUgc3RhcnQtdGFnIHJhdGhlciB0aGFuIGRlZmF1bHRlZC4gRWFjaCBhdHRyaWJ1dGUvdmFsdWUgcGFpciBjb3VudHMKKyAgIGFzIDE7IHRodXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcnJheSBpcworICAgWE1MX0dldFNwZWNpZmllZEF0dHJpYnV0ZUNvdW50KHBhcnNlcikgLyAyLgorKi8KK1hNTFBBUlNFQVBJKGNvbnN0IFhNTF9BdHRySW5mbyAqKQorWE1MX0dldEF0dHJpYnV0ZUluZm8oWE1MX1BhcnNlciBwYXJzZXIpOworI2VuZGlmCisKIC8qIFBhcnNlcyBzb21lIGlucHV0LiBSZXR1cm5zIFhNTF9TVEFUVVNfRVJST1IgaWYgYSBmYXRhbCBlcnJvciBpcwogICAgZGV0ZWN0ZWQuICBUaGUgbGFzdCBjYWxsIHRvIFhNTF9QYXJzZSBtdXN0IGhhdmUgaXNGaW5hbCB0cnVlOyBsZW4KICAgIG1heSBiZSB6ZXJvIGZvciB0aGlzIGNhbGwgKG9yIGFueSBvdGhlcikuCkBAIC05OTQsNyArMTAxNyw5IEBACiAgIFhNTF9GRUFUVVJFX01JTl9TSVpFLAogICBYTUxfRkVBVFVSRV9TSVpFT0ZfWE1MX0NIQVIsCiAgIFhNTF9GRUFUVVJFX1NJWkVPRl9YTUxfTENIQVIsCi0gIFhNTF9GRUFUVVJFX05TCisgIFhNTF9GRUFUVVJFX05TLAorICBYTUxfRkVBVFVSRV9MQVJHRV9TSVpFLAorICBYTUxfRkVBVFVSRV9BVFRSX0lORk8KICAgLyogQWRkaXRpb25hbCBmZWF0dXJlcyBtdXN0IGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhpcyBlbnVtLiAqLwogfTsKIApAQCAtMTAxNCw3ICsxMDM5LDcgQEAKICAgIGNoYW5nZSB0byBtYWpvciBvciBtaW5vciB2ZXJzaW9uLgogKi8KICNkZWZpbmUgWE1MX01BSk9SX1ZFUlNJT04gMgotI2RlZmluZSBYTUxfTUlOT1JfVkVSU0lPTiAwCisjZGVmaW5lIFhNTF9NSU5PUl9WRVJTSU9OIDEKICNkZWZpbmUgWE1MX01JQ1JPX1ZFUlNJT04gMAogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvZXhwYXRfZXh0ZXJuYWwuaCBiL01vZHVsZXMvZXhwYXQvZXhwYXRfZXh0ZXJuYWwuaAppbmRleCAzZjFjMzYzLi4yYzAzMjg0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L2V4cGF0X2V4dGVybmFsLmgKKysrIGIvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oCkBAIC03LDExICs3LDcgQEAKIAogLyogRXh0ZXJuYWwgQVBJIGRlZmluaXRpb25zICovCiAKLS8qIE5hbWVzcGFjZSBleHRlcm5hbCBzeW1ib2xzIHRvIGFsbG93IG11bHRpcGxlIGxpYmV4cGF0IHZlcnNpb24gdG8KLSAgIGNvLWV4aXN0LiAqLwotI2luY2x1ZGUgInB5ZXhwYXRucy5oIgotCi0jaWYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCisjaWYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpICYmICFkZWZpbmVkKF9fQkVPU19fKSAmJiAhZGVmaW5lZChfX0NZR1dJTl9fKQogI2RlZmluZSBYTUxfVVNFX01TQ19FWFRFTlNJT05TIDEKICNlbmRpZgogCkBAIC0zOCw5ICszNCw5IEBACiAgICBzeXN0ZW0gaGVhZGVycyBtYXkgYXNzdW1lIHRoZSBjZGVjbCBjb252ZW50aW9uLgogKi8KICNpZm5kZWYgWE1MQ0FMTAotI2lmIGRlZmluZWQoWE1MX1VTRV9NU0NfRVhURU5TSU9OUykKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQogI2RlZmluZSBYTUxDQUxMIF9fY2RlY2wKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19pMzg2KQorI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODYpICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCiAjZGVmaW5lIFhNTENBTEwgX19hdHRyaWJ1dGVfXygoY2RlY2wpKQogI2Vsc2UKIC8qIEZvciBhbnkgcGxhdGZvcm0gd2hpY2ggdXNlcyB0aGlzIGRlZmluaXRpb24gYW5kIHN1cHBvcnRzIG1vcmUgdGhhbgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9pbnRlcm5hbC5oIGIvTW9kdWxlcy9leHBhdC9pbnRlcm5hbC5oCmluZGV4IGZmMDU2YzYuLmRkNTQ1NDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvaW50ZXJuYWwuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2ludGVybmFsLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgIGFuZCB0aGVyZWZvcmUgc3ViamVjdCB0byBjaGFuZ2UuCiAqLwogCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODZfXykKKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4Nl9fKSAmJiAhZGVmaW5lZChfX01JTkdXMzJfXykKIC8qIFdlJ2xsIHVzZSB0aGlzIHZlcnNpb24gYnkgZGVmYXVsdCBvbmx5IHdoZXJlIHdlIGtub3cgaXQgaGVscHMuCiAKICAgIHJlZ3Bhcm0oKSBnZW5lcmF0ZXMgd2FybmluZ3Mgb24gU29sYXJpcyBib3hlcy4gICBTZWUgU0YgYnVnICM2OTI4NzguCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3dhdGNvbWNvbmZpZy5oIGIvTW9kdWxlcy9leHBhdC93YXRjb21jb25maWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjA1ZTNmCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9leHBhdC93YXRjb21jb25maWcuaApAQCAtMCwwICsxLDQ3IEBACisvKiBleHBhdF9jb25maWcuaCBmb3IgdXNlIHdpdGggT3BlbiBXYXRjb20gMS41IGFuZCBhYm92ZS4gICovCisKKyNpZm5kZWYgV0FUQ09NQ09ORklHX0gKKyNkZWZpbmUgV0FUQ09NQ09ORklHX0gKKworI2lmZGVmIF9fTlRfXworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorI3VuZGVmIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNlbmRpZgorCisvKiAxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTiAqLworI2RlZmluZSBCWVRFT1JERVIgMTIzNAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAqLworI2RlZmluZSBIQVZFX01FTU1PVkUgMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9VTklTVERfSCAxCisKKy8qIERlZmluZSB0byB0aGUgYWRkcmVzcyB3aGVyZSBidWcgcmVwb3J0cyBmb3IgdGhpcyBwYWNrYWdlIHNob3VsZCBiZSBzZW50LiAqLworI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVCAiZXhwYXQtYnVnc0BtYWlsLmxpYmV4cGF0Lm9yZyIKKworLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX05BTUUgImV4cGF0IgorCisvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJleHBhdCAyLjAuMCIKKworLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQorCisvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLworI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjIuMC4wIgorCisvKiBEZWZpbmUgdG8gc3BlY2lmeSBob3cgbXVjaCBjb250ZXh0IHRvIHJldGFpbiBhcm91bmQgdGhlIGN1cnJlbnQgcGFyc2UKKyAgIHBvaW50LiAqLworI2RlZmluZSBYTUxfQ09OVEVYVF9CWVRFUyAxMDI0CisKKy8qIERlZmluZSB0byBtYWtlIHBhcmFtZXRlciBlbnRpdHkgcGFyc2luZyBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZS4gKi8KKyNkZWZpbmUgWE1MX0RURCAxCisKKy8qIERlZmluZSB0byBtYWtlIFhNTCBOYW1lc3BhY2VzIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLworI2RlZmluZSBYTUxfTlMgMQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jIGIvTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jCmluZGV4IDQ2ZjY1MDcuLmYzNWFhMzYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQveG1scGFyc2UuYworKysgYi9Nb2R1bGVzL2V4cGF0L3htbHBhcnNlLmMKQEAgLTIsMjQgKzIsMjcgQEAKICAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCiAqLwogCi0jZGVmaW5lIFhNTF9CVUlMRElOR19FWFBBVCAxCi0KLSNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAotI2luY2x1ZGUgIndpbmNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQotI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX2FtaWdhb3M0X18pCi0jaW5jbHVkZSAiYW1pZ2Fjb25maWcuaCIKLSNlbGlmIGRlZmluZWQoSEFWRV9FWFBBVF9DT05GSUdfSCkKLSNpbmNsdWRlIDxleHBhdF9jb25maWcuaD4KLSNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCi0KICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4gICAgICAgICAgICAgICAgICAgICAvKiBtZW1zZXQoKSwgbWVtY3B5KCkgKi8KICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4gICAgICAgICAgICAgICAgICAgICAvKiBVSU5UX01BWCAqLwogI2luY2x1ZGUgPHRpbWUuaD4gICAgICAgICAgICAgICAgICAgICAgIC8qIHRpbWUoKSAqLwogCisjZGVmaW5lIFhNTF9CVUlMRElOR19FWFBBVCAxCisKKyNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAorI2luY2x1ZGUgIndpbmNvbmZpZy5oIgorI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQorI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgorI2VsaWYgZGVmaW5lZChfX2FtaWdhb3NfXykKKyNpbmNsdWRlICJhbWlnYWNvbmZpZy5oIgorI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykKKyNpbmNsdWRlICJ3YXRjb21jb25maWcuaCIKKyNlbGlmIGRlZmluZWQoSEFWRV9FWFBBVF9DT05GSUdfSCkKKyNpbmNsdWRlIDxleHBhdF9jb25maWcuaD4KKyNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCisKKyNpbmNsdWRlICJhc2NpaS5oIgogI2luY2x1ZGUgImV4cGF0LmgiCiAKICNpZmRlZiBYTUxfVU5JQ09ERQpAQCAtMjgsNyArMzEsOCBAQAogI2RlZmluZSBYbWxHZXRJbnRlcm5hbEVuY29kaW5nIFhtbEdldFV0ZjE2SW50ZXJuYWxFbmNvZGluZwogI2RlZmluZSBYbWxHZXRJbnRlcm5hbEVuY29kaW5nTlMgWG1sR2V0VXRmMTZJbnRlcm5hbEVuY29kaW5nTlMKICNkZWZpbmUgWG1sRW5jb2RlIFhtbFV0ZjE2RW5jb2RlCi0jZGVmaW5lIE1VU1RfQ09OVkVSVChlbmMsIHMpICghKGVuYyktPmlzVXRmMTYgfHwgKCgodW5zaWduZWQgbG9uZylzKSAmIDEpKQorLyogVXNpbmcgcG9pbnRlciBzdWJ0cmFjdGlvbiB0byBjb252ZXJ0IHRvIGludGVnZXIgdHlwZS4gKi8KKyNkZWZpbmUgTVVTVF9DT05WRVJUKGVuYywgcykgKCEoZW5jKS0+aXNVdGYxNiB8fCAoKChjaGFyICopKHMpIC0gKGNoYXIgKilOVUxMKSAmIDEpKQogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBJQ0hBUjsKICNlbHNlCiAjZGVmaW5lIFhNTF9FTkNPREVfTUFYIFhNTF9VVEY4X0VOQ09ERV9NQVgKQEAgLTMyNSwxNSArMzI5LDE1IEBACiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKIGluaXRpYWxpemVFbmNvZGluZyhYTUxfUGFyc2VyIHBhcnNlcik7CiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKLWRvUHJvbG9nKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORyAqZW5jLCBjb25zdCBjaGFyICpzLCAKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgaW50IHRvaywgY29uc3QgY2hhciAqbmV4dCwgY29uc3QgY2hhciAqKm5leHRQdHIsIAorZG9Qcm9sb2coWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICBjb25zdCBjaGFyICplbmQsIGludCB0b2ssIGNvbnN0IGNoYXIgKm5leHQsIGNvbnN0IGNoYXIgKipuZXh0UHRyLAogICAgICAgICAgWE1MX0Jvb2wgaGF2ZU1vcmUpOwogc3RhdGljIGVudW0gWE1MX0Vycm9yCi1wcm9jZXNzSW50ZXJuYWxFbnRpdHkoWE1MX1BhcnNlciBwYXJzZXIsIEVOVElUWSAqZW50aXR5LCAKK3Byb2Nlc3NJbnRlcm5hbEVudGl0eShYTUxfUGFyc2VyIHBhcnNlciwgRU5USVRZICplbnRpdHksCiAgICAgICAgICAgICAgICAgICAgICAgWE1MX0Jvb2wgYmV0d2VlbkRlY2wpOwogc3RhdGljIGVudW0gWE1MX0Vycm9yCiBkb0NvbnRlbnQoWE1MX1BhcnNlciBwYXJzZXIsIGludCBzdGFydFRhZ0xldmVsLCBjb25zdCBFTkNPRElORyAqZW5jLAotICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKiplbmRQdHIsIAorICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKiplbmRQdHIsCiAgICAgICAgICAgWE1MX0Jvb2wgaGF2ZU1vcmUpOwogc3RhdGljIGVudW0gWE1MX0Vycm9yCiBkb0NkYXRhU2VjdGlvbihYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKiwgY29uc3QgY2hhciAqKnN0YXJ0UHRyLApAQCAtMzUxLDcgKzM1NSw3IEBACiBhZGRCaW5kaW5nKFhNTF9QYXJzZXIgcGFyc2VyLCBQUkVGSVggKnByZWZpeCwgY29uc3QgQVRUUklCVVRFX0lEICphdHRJZCwKICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnVyaSwgQklORElORyAqKmJpbmRpbmdzUHRyKTsKIHN0YXRpYyBpbnQKLWRlZmluZUF0dHJpYnV0ZShFTEVNRU5UX1RZUEUgKnR5cGUsIEFUVFJJQlVURV9JRCAqLCBYTUxfQm9vbCBpc0NkYXRhLCAKK2RlZmluZUF0dHJpYnV0ZShFTEVNRU5UX1RZUEUgKnR5cGUsIEFUVFJJQlVURV9JRCAqLCBYTUxfQm9vbCBpc0NkYXRhLAogICAgICAgICAgICAgICAgIFhNTF9Cb29sIGlzSWQsIGNvbnN0IFhNTF9DaGFyICpkZmx0VmFsdWUsIFhNTF9QYXJzZXIgcGFyc2VyKTsKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgogc3RvcmVBdHRyaWJ1dGVWYWx1ZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKiwgWE1MX0Jvb2wgaXNDZGF0YSwKQEAgLTQzNiw2ICs0NDAsNyBAQAogICAgICAgICAgICAgIGNvbnN0IFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgKm1lbXN1aXRlLAogICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpuYW1lU2VwLAogICAgICAgICAgICAgIERURCAqZHRkKTsKKwogc3RhdGljIHZvaWQKIHBhcnNlckluaXQoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IFhNTF9DaGFyICplbmNvZGluZ05hbWUpOwogCkBAIC01MzUsNiArNTQwLDkgQEAKICAgTlNfQVRUICptX25zQXR0czsKICAgdW5zaWduZWQgbG9uZyBtX25zQXR0c1ZlcnNpb247CiAgIHVuc2lnbmVkIGNoYXIgbV9uc0F0dHNQb3dlcjsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgIFhNTF9BdHRySW5mbyAqbV9hdHRJbmZvOworI2VuZGlmCiAgIFBPU0lUSU9OIG1fcG9zaXRpb247CiAgIFNUUklOR19QT09MIG1fdGVtcFBvb2w7CiAgIFNUUklOR19QT09MIG1fdGVtcDJQb29sOwpAQCAtNjQzLDYgKzY1MSw3IEBACiAjZGVmaW5lIG5zQXR0cyAocGFyc2VyLT5tX25zQXR0cykKICNkZWZpbmUgbnNBdHRzVmVyc2lvbiAocGFyc2VyLT5tX25zQXR0c1ZlcnNpb24pCiAjZGVmaW5lIG5zQXR0c1Bvd2VyIChwYXJzZXItPm1fbnNBdHRzUG93ZXIpCisjZGVmaW5lIGF0dEluZm8gKHBhcnNlci0+bV9hdHRJbmZvKQogI2RlZmluZSB0ZW1wUG9vbCAocGFyc2VyLT5tX3RlbXBQb29sKQogI2RlZmluZSB0ZW1wMlBvb2wgKHBhcnNlci0+bV90ZW1wMlBvb2wpCiAjZGVmaW5lIGdyb3VwQ29ubmVjdG9yIChwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3IpCkBAIC02NzMsMTAgKzY4MiwxMiBAQAogfQogCiBzdGF0aWMgY29uc3QgWE1MX0NoYXIgaW1wbGljaXRDb250ZXh0W10gPSB7Ci0gICd4JywgJ20nLCAnbCcsICc9JywgJ2gnLCAndCcsICd0JywgJ3AnLCAnOicsICcvJywgJy8nLAotICAndycsICd3JywgJ3cnLCAnLicsICd3JywgJzMnLCAnLicsICdvJywgJ3InLCAnZycsICcvJywKLSAgJ1gnLCAnTScsICdMJywgJy8nLCAnMScsICc5JywgJzknLCAnOCcsICcvJywKLSAgJ24nLCAnYScsICdtJywgJ2UnLCAncycsICdwJywgJ2EnLCAnYycsICdlJywgJ1wwJworICBBU0NJSV94LCBBU0NJSV9tLCBBU0NJSV9sLCBBU0NJSV9FUVVBTFMsIEFTQ0lJX2gsIEFTQ0lJX3QsIEFTQ0lJX3QsIEFTQ0lJX3AsCisgIEFTQ0lJX0NPTE9OLCBBU0NJSV9TTEFTSCwgQVNDSUlfU0xBU0gsIEFTQ0lJX3csIEFTQ0lJX3csIEFTQ0lJX3csCisgIEFTQ0lJX1BFUklPRCwgQVNDSUlfdywgQVNDSUlfMywgQVNDSUlfUEVSSU9ELCBBU0NJSV9vLCBBU0NJSV9yLCBBU0NJSV9nLAorICBBU0NJSV9TTEFTSCwgQVNDSUlfWCwgQVNDSUlfTSwgQVNDSUlfTCwgQVNDSUlfU0xBU0gsIEFTQ0lJXzEsIEFTQ0lJXzksCisgIEFTQ0lJXzksIEFTQ0lJXzgsIEFTQ0lJX1NMQVNILCBBU0NJSV9uLCBBU0NJSV9hLCBBU0NJSV9tLCBBU0NJSV9lLAorICBBU0NJSV9zLCBBU0NJSV9wLCBBU0NJSV9hLCBBU0NJSV9jLCBBU0NJSV9lLCAnXDAnCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZwpAQCAtNjkwLDIzICs3MDEsMjIgQEAKIHN0YXRpYyBYTUxfQm9vbCAgLyogb25seSB2YWxpZCBmb3Igcm9vdCBwYXJzZXIgKi8KIHN0YXJ0UGFyc2luZyhYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgLyogaGFzaCBmdW5jdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2V0Q29udGV4dCgpIGlzIGNhbGxlZCAqLwotCi0gIGlmIChoYXNoX3NlY3JldF9zYWx0ID09IDApCi0gICAgaGFzaF9zZWNyZXRfc2FsdCA9IGdlbmVyYXRlX2hhc2hfc2VjcmV0X3NhbHQoKTsKLSAgaWYgKG5zKSB7Ci0gICAgLyogaW1wbGljaXQgY29udGV4dCBvbmx5IHNldCBmb3Igcm9vdCBwYXJzZXIsIHNpbmNlIGNoaWxkCi0gICAgICAgcGFyc2VycyAoaS5lLiBleHRlcm5hbCBlbnRpdHkgcGFyc2Vycykgd2lsbCBpbmhlcml0IGl0Ci0gICAgKi8KLSAgICByZXR1cm4gc2V0Q29udGV4dChwYXJzZXIsIGltcGxpY2l0Q29udGV4dCk7Ci0gIH0KLSAgcmV0dXJuIFhNTF9UUlVFOworICAgIC8qIGhhc2ggZnVuY3Rpb25zIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIHNldENvbnRleHQoKSBpcyBjYWxsZWQgKi8KKyAgICBpZiAoaGFzaF9zZWNyZXRfc2FsdCA9PSAwKQorICAgICAgaGFzaF9zZWNyZXRfc2FsdCA9IGdlbmVyYXRlX2hhc2hfc2VjcmV0X3NhbHQoKTsKKyAgICBpZiAobnMpIHsKKyAgICAgIC8qIGltcGxpY2l0IGNvbnRleHQgb25seSBzZXQgZm9yIHJvb3QgcGFyc2VyLCBzaW5jZSBjaGlsZAorICAgICAgICAgcGFyc2VycyAoaS5lLiBleHRlcm5hbCBlbnRpdHkgcGFyc2Vycykgd2lsbCBpbmhlcml0IGl0CisgICAgICAqLworICAgICAgcmV0dXJuIHNldENvbnRleHQocGFyc2VyLCBpbXBsaWNpdENvbnRleHQpOworICAgIH0KKyAgICByZXR1cm4gWE1MX1RSVUU7CiB9CiAKIFhNTF9QYXJzZXIgWE1MQ0FMTAogWE1MX1BhcnNlckNyZWF0ZV9NTShjb25zdCBYTUxfQ2hhciAqZW5jb2RpbmdOYW1lLAotICAgIGNvbnN0IFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgKm1lbXN1aXRlLAotICAgIGNvbnN0IFhNTF9DaGFyICpuYW1lU2VwKQorICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfTWVtb3J5X0hhbmRsaW5nX1N1aXRlICptZW1zdWl0ZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKm5hbWVTZXApCiB7CiAgIHJldHVybiBwYXJzZXJDcmVhdGUoZW5jb2RpbmdOYW1lLCBtZW1zdWl0ZSwgbmFtZVNlcCwgTlVMTCk7CiB9CkBAIC03NTMsOSArNzYzLDIwIEBACiAgICAgRlJFRShwYXJzZXIpOwogICAgIHJldHVybiBOVUxMOwogICB9CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICBhdHRJbmZvID0gKFhNTF9BdHRySW5mbyopTUFMTE9DKGF0dHNTaXplICogc2l6ZW9mKFhNTF9BdHRySW5mbykpOworICBpZiAoYXR0SW5mbyA9PSBOVUxMKSB7CisgICAgRlJFRShhdHRzKTsKKyAgICBGUkVFKHBhcnNlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyNlbmRpZgogICBkYXRhQnVmID0gKFhNTF9DaGFyICopTUFMTE9DKElOSVRfREFUQV9CVUZfU0laRSAqIHNpemVvZihYTUxfQ2hhcikpOwogICBpZiAoZGF0YUJ1ZiA9PSBOVUxMKSB7CiAgICAgRlJFRShhdHRzKTsKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCisgICAgRlJFRShhdHRJbmZvKTsKKyNlbmRpZgogICAgIEZSRUUocGFyc2VyKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQpAQCAtNzY4LDYgKzc4OSw5IEBACiAgICAgaWYgKF9kdGQgPT0gTlVMTCkgewogICAgICAgRlJFRShkYXRhQnVmKTsKICAgICAgIEZSRUUoYXR0cyk7CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgICAgRlJFRShhdHRJbmZvKTsKKyNlbmRpZgogICAgICAgRlJFRShwYXJzZXIpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNzgzLDcgKzgwNyw3IEBACiAgIHVua25vd25FbmNvZGluZ0hhbmRsZXIgPSBOVUxMOwogICB1bmtub3duRW5jb2RpbmdIYW5kbGVyRGF0YSA9IE5VTEw7CiAKLSAgbmFtZXNwYWNlU2VwYXJhdG9yID0gJyEnOworICBuYW1lc3BhY2VTZXBhcmF0b3IgPSBBU0NJSV9FWENMOwogICBucyA9IFhNTF9GQUxTRTsKICAgbnNfdHJpcGxldHMgPSBYTUxfRkFMU0U7CiAKQEAgLTExNTQsNiArMTE3OCw5IEBACiAjZW5kaWYgLyogWE1MX0RURCAqLwogICAgIGR0ZERlc3Ryb3koX2R0ZCwgKFhNTF9Cb29sKSFwYXJlbnRQYXJzZXIsICZwYXJzZXItPm1fbWVtKTsKICAgRlJFRSgodm9pZCAqKWF0dHMpOworI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgRlJFRSgodm9pZCAqKWF0dEluZm8pOworI2VuZGlmCiAgIEZSRUUoZ3JvdXBDb25uZWN0b3IpOwogICBGUkVFKGJ1ZmZlcik7CiAgIEZSRUUoZGF0YUJ1Zik7CkBAIC0xMjM0LDYgKzEyNjEsMTQgQEAKICAgcmV0dXJuIGlkQXR0SW5kZXg7CiB9CiAKKyNpZmRlZiBYTUxfQVRUUl9JTkZPCitjb25zdCBYTUxfQXR0ckluZm8gKiBYTUxDQUxMCitYTUxfR2V0QXR0cmlidXRlSW5mbyhYTUxfUGFyc2VyIHBhcnNlcikKK3sKKyAgcmV0dXJuIGF0dEluZm87Cit9CisjZW5kaWYKKwogdm9pZCBYTUxDQUxMCiBYTUxfU2V0RWxlbWVudEhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIgc3RhcnQsCkBAIC0xNDk5LDcgKzE1MzQsNyBAQAogICAgICAgICBYbWxVcGRhdGVQb3NpdGlvbihlbmNvZGluZywgcG9zaXRpb25QdHIsIGJ1ZmZlclB0ciwgJnBvc2l0aW9uKTsKICAgICAgICAgcG9zaXRpb25QdHIgPSBidWZmZXJQdHI7CiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX1NVU1BFTkRFRDsKLSAgICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOiAKKyAgICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOgogICAgICAgY2FzZSBYTUxfUEFSU0lORzoKICAgICAgICAgcHNfcGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCkBAIC0xNTU1LDE1ICsxNTkwLDExIEBACiAgICAgICAgICAgICAgICAgOiAoY2hhciAqKVJFQUxMT0MoYnVmZmVyLCBsZW4gKiAyKSk7CiAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpIHsKICAgICAgICAgICBlcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZmZlciA9IHRlbXA7Ci0gICAgICAgIGlmICghYnVmZmVyKSB7Ci0gICAgICAgICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICBldmVudFB0ciA9IGV2ZW50RW5kUHRyID0gTlVMTDsKICAgICAgICAgICBwcm9jZXNzb3IgPSBlcnJvclByb2Nlc3NvcjsKICAgICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKICAgICAgICAgfQorICAgICAgICBidWZmZXIgPSB0ZW1wOwogICAgICAgICBidWZmZXJMaW0gPSBidWZmZXIgKyBsZW4gKiAyOwogICAgICAgfQogICAgICAgbWVtY3B5KGJ1ZmZlciwgZW5kLCBuTGVmdE92ZXIpOwpAQCAtMTYyOSw3ICsxNjYwLDcgQEAKICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICByZXN1bHQgPSBYTUxfU1RBVFVTX1NVU1BFTkRFRDsKICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOiAKKyAgICBjYXNlIFhNTF9JTklUSUFMSVpFRDoKICAgICBjYXNlIFhNTF9QQVJTSU5HOgogICAgICAgaWYgKGlzRmluYWwpIHsKICAgICAgICAgcHNfcGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKQEAgLTE3MTksNiArMTc1MCw4IEBACiAgICAgICBidWZmZXJQdHIgPSBidWZmZXIgPSBuZXdCdWY7CiAjZW5kaWYgIC8qIG5vdCBkZWZpbmVkIFhNTF9DT05URVhUX0JZVEVTICovCiAgICAgfQorICAgIGV2ZW50UHRyID0gZXZlbnRFbmRQdHIgPSBOVUxMOworICAgIHBvc2l0aW9uUHRyID0gTlVMTDsKICAgfQogICByZXR1cm4gYnVmZmVyRW5kOwogfQpAQCAtMTc3Niw3ICsxODA5LDcgQEAKICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICByZXN1bHQgPSBYTUxfU1RBVFVTX1NVU1BFTkRFRDsKICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOiAKKyAgICBjYXNlIFhNTF9JTklUSUFMSVpFRDoKICAgICBjYXNlIFhNTF9QQVJTSU5HOgogICAgICAgaWYgKHBzX2ZpbmFsQnVmZmVyKSB7CiAgICAgICAgIHBzX3BhcnNpbmcgPSBYTUxfRklOSVNIRUQ7CkBAIC0yMDAxLDYgKzIwMzQsMTIgQEAKICNpZmRlZiBYTUxfTlMKICAgICB7WE1MX0ZFQVRVUkVfTlMsICAgICAgICAgICAgICAgWE1MX0woIlhNTF9OUyIpLCAwfSwKICNlbmRpZgorI2lmZGVmIFhNTF9MQVJHRV9TSVpFCisgICAge1hNTF9GRUFUVVJFX0xBUkdFX1NJWkUsICAgICAgIFhNTF9MKCJYTUxfTEFSR0VfU0laRSIpLCAwfSwKKyNlbmRpZgorI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgICB7WE1MX0ZFQVRVUkVfQVRUUl9JTkZPLCAgICAgICAgWE1MX0woIlhNTF9BVFRSX0lORk8iKSwgMH0sCisjZW5kaWYKICAgICB7WE1MX0ZFQVRVUkVfRU5ELCAgICAgICAgICAgICAgTlVMTCwgMH0KICAgfTsKIApAQCAtMjA2Myw3ICsyMTAyLDcgQEAKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZW5kUHRyKQogewotICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCAwLCBlbmNvZGluZywgc3RhcnQsIGVuZCwgCisgIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIDAsIGVuY29kaW5nLCBzdGFydCwgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKICAgaWYgKHJlc3VsdCA9PSBYTUxfRVJST1JfTk9ORSkgewogICAgIGlmICghc3RvcmVSYXdOYW1lcyhwYXJzZXIpKQpAQCAtMjE0NSw3ICsyMTg0LDcgQEAKICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDogCisgICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAgICplbmRQdHIgPSBuZXh0OwogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgICBjYXNlIFhNTF9GSU5JU0hFRDoKQEAgLTIxNzksNyArMjIxOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7Ci0gIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIDEsIGVuY29kaW5nLCBzdGFydCwgZW5kLCAKKyAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMSwgZW5jb2RpbmcsIHN0YXJ0LCBlbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7CiAgICAgaWYgKCFzdG9yZVJhd05hbWVzKHBhcnNlcikpCkBAIC0yMTk4LDcgKzIyMzcsNyBAQAogICAgICAgICAgIFhNTF9Cb29sIGhhdmVNb3JlKQogewogICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLwotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgCisgIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7CiAKICAgY29uc3QgY2hhciAqKmV2ZW50UFA7CiAgIGNvbnN0IGNoYXIgKipldmVudEVuZFBQOwpAQCAtMjIyOSw4ICsyMjY4LDggQEAKICAgICAgIH0KICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQogICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBlbmQpOwotICAgICAgLyogV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbmFsIGJ1ZmZlciwgc2hvdWxkIHdlIGNoZWNrIGZvciAKLSAgICAgICAgIFhNTF9TVVNQRU5ERUQsIFhNTF9GSU5JU0hFRD8gCisgICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yCisgICAgICAgICBYTUxfU1VTUEVOREVELCBYTUxfRklOSVNIRUQ/CiAgICAgICAqLwogICAgICAgaWYgKHN0YXJ0VGFnTGV2ZWwgPT0gMCkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19FTEVNRU5UUzsKQEAgLTI1ODEsOCArMjYyMCw4IEBACiAgICAgICB9CiAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgZW5kKTsKLSAgICAgIC8qIFdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBmaW5hbCBidWZmZXIsIHNob3VsZCB3ZSBjaGVjayBmb3IgCi0gICAgICAgICBYTUxfU1VTUEVOREVELCBYTUxfRklOSVNIRUQ/IAorICAgICAgLyogV2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbmFsIGJ1ZmZlciwgc2hvdWxkIHdlIGNoZWNrIGZvcgorICAgICAgICAgWE1MX1NVU1BFTkRFRCwgWE1MX0ZJTklTSEVEPwogICAgICAgKi8KICAgICAgIGlmIChzdGFydFRhZ0xldmVsID09IDApIHsKICAgICAgICAgKmV2ZW50UFAgPSBlbmQ7CkBAIC0yNTk1LDI2ICsyNjM0LDI5IEBACiAgICAgICAqbmV4dFB0ciA9IGVuZDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9UT0tfREFUQV9DSEFSUzoKLSAgICAgIGlmIChjaGFyYWN0ZXJEYXRhSGFuZGxlcikgewotICAgICAgICBpZiAoTVVTVF9DT05WRVJUKGVuYywgcykpIHsKLSAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKWRhdGFCdWY7Ci0gICAgICAgICAgICBYbWxDb252ZXJ0KGVuYywgJnMsIG5leHQsICZkYXRhUHRyLCAoSUNIQVIgKilkYXRhQnVmRW5kKTsKLSAgICAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShkYXRhUHRyIC0gKElDSEFSICopZGF0YUJ1ZikpOwotICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAqZXZlbnRQUCA9IHM7CisgICAgICB7CisgICAgICAgIFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlciBjaGFyRGF0YUhhbmRsZXIgPSBjaGFyYWN0ZXJEYXRhSGFuZGxlcjsKKyAgICAgICAgaWYgKGNoYXJEYXRhSGFuZGxlcikgeworICAgICAgICAgIGlmIChNVVNUX0NPTlZFUlQoZW5jLCBzKSkgeworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKWRhdGFCdWY7CisgICAgICAgICAgICAgIFhtbENvbnZlcnQoZW5jLCAmcywgbmV4dCwgJmRhdGFQdHIsIChJQ0hBUiAqKWRhdGFCdWZFbmQpOworICAgICAgICAgICAgICAqZXZlbnRFbmRQUCA9IHM7CisgICAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKKyAgICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgKmV2ZW50UFAgPSBzOworICAgICAgICAgICAgfQogICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBjaGFyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWE1MX0NoYXIgKilzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKChYTUxfQ2hhciAqKW5leHQgLSAoWE1MX0NoYXIgKilzKSk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFhNTF9DaGFyICopcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoWE1MX0NoYXIgKiluZXh0IC0gKFhNTF9DaGFyICopcykpOworICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQotICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19QSToKICAgICAgIGlmICghcmVwb3J0UHJvY2Vzc2luZ0luc3RydWN0aW9uKHBhcnNlciwgZW5jLCBzLCBuZXh0KSkKQEAgLTI2MzEsNyArMjY3Myw3IEBACiAgICAgfQogICAgICpldmVudFBQID0gcyA9IG5leHQ7CiAgICAgc3dpdGNoIChwc19wYXJzaW5nKSB7Ci0gICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgY2FzZSBYTUxfRklOSVNIRUQ6CkBAIC0yNjkwLDIzICsyNzMyLDQ0IEBACiAgIGlmIChuICsgbkRlZmF1bHRBdHRzID4gYXR0c1NpemUpIHsKICAgICBpbnQgb2xkQXR0c1NpemUgPSBhdHRzU2l6ZTsKICAgICBBVFRSSUJVVEUgKnRlbXA7CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIFhNTF9BdHRySW5mbyAqdGVtcDI7CisjZW5kaWYKICAgICBhdHRzU2l6ZSA9IG4gKyBuRGVmYXVsdEF0dHMgKyBJTklUX0FUVFNfU0laRTsKICAgICB0ZW1wID0gKEFUVFJJQlVURSAqKVJFQUxMT0MoKHZvaWQgKilhdHRzLCBhdHRzU2l6ZSAqIHNpemVvZihBVFRSSUJVVEUpKTsKICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgYXR0cyA9IHRlbXA7CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIHRlbXAyID0gKFhNTF9BdHRySW5mbyAqKVJFQUxMT0MoKHZvaWQgKilhdHRJbmZvLCBhdHRzU2l6ZSAqIHNpemVvZihYTUxfQXR0ckluZm8pKTsKKyAgICBpZiAodGVtcDIgPT0gTlVMTCkKKyAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOworICAgIGF0dEluZm8gPSB0ZW1wMjsKKyNlbmRpZgogICAgIGlmIChuID4gb2xkQXR0c1NpemUpCiAgICAgICBYbWxHZXRBdHRyaWJ1dGVzKGVuYywgYXR0U3RyLCBuLCBhdHRzKTsKICAgfQogCiAgIGFwcEF0dHMgPSAoY29uc3QgWE1MX0NoYXIgKiopYXR0czsKICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIEFUVFJJQlVURSAqY3VyckF0dCA9ICZhdHRzW2ldOworI2lmZGVmIFhNTF9BVFRSX0lORk8KKyAgICBYTUxfQXR0ckluZm8gKmN1cnJBdHRJbmZvID0gJmF0dEluZm9baV07CisjZW5kaWYKICAgICAvKiBhZGQgdGhlIG5hbWUgYW5kIHZhbHVlIHRvIHRoZSBhdHRyaWJ1dGUgbGlzdCAqLwotICAgIEFUVFJJQlVURV9JRCAqYXR0SWQgPSBnZXRBdHRyaWJ1dGVJZChwYXJzZXIsIGVuYywgYXR0c1tpXS5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRzW2ldLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBYbWxOYW1lTGVuZ3RoKGVuYywgYXR0c1tpXS5uYW1lKSk7CisgICAgQVRUUklCVVRFX0lEICphdHRJZCA9IGdldEF0dHJpYnV0ZUlkKHBhcnNlciwgZW5jLCBjdXJyQXR0LT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXR0LT5uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgWG1sTmFtZUxlbmd0aChlbmMsIGN1cnJBdHQtPm5hbWUpKTsKICAgICBpZiAoIWF0dElkKQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CisjaWZkZWYgWE1MX0FUVFJfSU5GTworICAgIGN1cnJBdHRJbmZvLT5uYW1lU3RhcnQgPSBwYXJzZUVuZEJ5dGVJbmRleCAtIChwYXJzZUVuZFB0ciAtIGN1cnJBdHQtPm5hbWUpOworICAgIGN1cnJBdHRJbmZvLT5uYW1lRW5kID0gY3VyckF0dEluZm8tPm5hbWVTdGFydCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBYbWxOYW1lTGVuZ3RoKGVuYywgY3VyckF0dC0+bmFtZSk7CisgICAgY3VyckF0dEluZm8tPnZhbHVlU3RhcnQgPSBwYXJzZUVuZEJ5dGVJbmRleCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnNlRW5kUHRyIC0gY3VyckF0dC0+dmFsdWVQdHIpOworICAgIGN1cnJBdHRJbmZvLT52YWx1ZUVuZCA9IHBhcnNlRW5kQnl0ZUluZGV4IC0gKHBhcnNlRW5kUHRyIC0gY3VyckF0dC0+dmFsdWVFbmQpOworI2VuZGlmCiAgICAgLyogRGV0ZWN0IGR1cGxpY2F0ZSBhdHRyaWJ1dGVzIGJ5IHRoZWlyIFFOYW1lcy4gVGhpcyBkb2VzIG5vdCB3b3JrIHdoZW4KICAgICAgICBuYW1lc3BhY2UgcHJvY2Vzc2luZyBpcyB0dXJuZWQgb24gYW5kIGRpZmZlcmVudCBwcmVmaXhlcyBmb3IgdGhlIHNhbWUKICAgICAgICBuYW1lc3BhY2UgYXJlIHVzZWQuIEZvciB0aGlzIGNhc2Ugd2UgaGF2ZSBhIGNoZWNrIGZ1cnRoZXIgZG93bi4KQEAgLTI4NDgsOCArMjkxMSw2IEBACiAgICAgICAgIHVuc2lnbmVkIGxvbmcgdXJpSGFzaCA9IGhhc2hfc2VjcmV0X3NhbHQ7CiAgICAgICAgICgoWE1MX0NoYXIgKilzKVstMV0gPSAwOyAgLyogY2xlYXIgZmxhZyAqLwogICAgICAgICBpZCA9IChBVFRSSUJVVEVfSUQgKilsb29rdXAocGFyc2VyLCAmZHRkLT5hdHRyaWJ1dGVJZHMsIHMsIDApOwotICAgICAgICBpZiAoIWlkKQotICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBiID0gaWQtPnByZWZpeC0+YmluZGluZzsKICAgICAgICAgaWYgKCFiKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfVU5CT1VORF9QUkVGSVg7CkBAIC0yODYxLDcgKzI5MjIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgICAgdXJpSGFzaCA9IENIQVJfSEFTSCh1cmlIYXNoLCBjKTsKICAgICAgICAgfQotICAgICAgICB3aGlsZSAoKnMrKyAhPSBYTUxfVCgnOicpKQorICAgICAgICB3aGlsZSAoKnMrKyAhPSBYTUxfVChBU0NJSV9DT0xPTikpCiAgICAgICAgICAgOwogICAgICAgICBkbyB7ICAvKiBjb3BpZXMgbnVsbCB0ZXJtaW5hdG9yICovCiAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgYyA9ICpzOwpAQCAtMjkzNSw3ICsyOTk2LDcgQEAKICAgICBpZiAoIWJpbmRpbmcpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX1VOQk9VTkRfUFJFRklYOwogICAgIGxvY2FsUGFydCA9IHRhZ05hbWVQdHItPnN0cjsKLSAgICB3aGlsZSAoKmxvY2FsUGFydCsrICE9IFhNTF9UKCc6JykpCisgICAgd2hpbGUgKCpsb2NhbFBhcnQrKyAhPSBYTUxfVChBU0NJSV9DT0xPTikpCiAgICAgICA7CiAgIH0KICAgZWxzZSBpZiAoZHRkLT5kZWZhdWx0UHJlZml4LmJpbmRpbmcpIHsKQEAgLTI5OTAsMjUgKzMwNTEsMjkgQEAKICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnVyaSwgQklORElORyAqKmJpbmRpbmdzUHRyKQogewogICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgeG1sTmFtZXNwYWNlW10gPSB7Ci0gICAgJ2gnLCAndCcsICd0JywgJ3AnLCAnOicsICcvJywgJy8nLAotICAgICd3JywgJ3cnLCAndycsICcuJywgJ3cnLCAnMycsICcuJywgJ28nLCAncicsICdnJywgJy8nLAotICAgICdYJywgJ00nLCAnTCcsICcvJywgJzEnLCAnOScsICc5JywgJzgnLCAnLycsCi0gICAgJ24nLCAnYScsICdtJywgJ2UnLCAncycsICdwJywgJ2EnLCAnYycsICdlJywgJ1wwJworICAgIEFTQ0lJX2gsIEFTQ0lJX3QsIEFTQ0lJX3QsIEFTQ0lJX3AsIEFTQ0lJX0NPTE9OLCBBU0NJSV9TTEFTSCwgQVNDSUlfU0xBU0gsCisgICAgQVNDSUlfdywgQVNDSUlfdywgQVNDSUlfdywgQVNDSUlfUEVSSU9ELCBBU0NJSV93LCBBU0NJSV8zLCBBU0NJSV9QRVJJT0QsCisgICAgQVNDSUlfbywgQVNDSUlfciwgQVNDSUlfZywgQVNDSUlfU0xBU0gsIEFTQ0lJX1gsIEFTQ0lJX00sIEFTQ0lJX0wsCisgICAgQVNDSUlfU0xBU0gsIEFTQ0lJXzEsIEFTQ0lJXzksIEFTQ0lJXzksIEFTQ0lJXzgsIEFTQ0lJX1NMQVNILAorICAgIEFTQ0lJX24sIEFTQ0lJX2EsIEFTQ0lJX20sIEFTQ0lJX2UsIEFTQ0lJX3MsIEFTQ0lJX3AsIEFTQ0lJX2EsIEFTQ0lJX2MsCisgICAgQVNDSUlfZSwgJ1wwJwogICB9OwotICBzdGF0aWMgY29uc3QgaW50IHhtbExlbiA9IAorICBzdGF0aWMgY29uc3QgaW50IHhtbExlbiA9CiAgICAgKGludClzaXplb2YoeG1sTmFtZXNwYWNlKS9zaXplb2YoWE1MX0NoYXIpIC0gMTsKICAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIHhtbG5zTmFtZXNwYWNlW10gPSB7Ci0gICAgJ2gnLCAndCcsICd0JywgJ3AnLCAnOicsICcvJywgJy8nLAotICAgICd3JywgJ3cnLCAndycsICcuJywgJ3cnLCAnMycsICcuJywgJ28nLCAncicsICdnJywgJy8nLAotICAgICcyJywgJzAnLCAnMCcsICcwJywgJy8nLCAneCcsICdtJywgJ2wnLCAnbicsICdzJywgJy8nLCAnXDAnCisgICAgQVNDSUlfaCwgQVNDSUlfdCwgQVNDSUlfdCwgQVNDSUlfcCwgQVNDSUlfQ09MT04sIEFTQ0lJX1NMQVNILCBBU0NJSV9TTEFTSCwKKyAgICBBU0NJSV93LCBBU0NJSV93LCBBU0NJSV93LCBBU0NJSV9QRVJJT0QsIEFTQ0lJX3csIEFTQ0lJXzMsIEFTQ0lJX1BFUklPRCwKKyAgICBBU0NJSV9vLCBBU0NJSV9yLCBBU0NJSV9nLCBBU0NJSV9TTEFTSCwgQVNDSUlfMiwgQVNDSUlfMCwgQVNDSUlfMCwKKyAgICBBU0NJSV8wLCBBU0NJSV9TTEFTSCwgQVNDSUlfeCwgQVNDSUlfbSwgQVNDSUlfbCwgQVNDSUlfbiwgQVNDSUlfcywKKyAgICBBU0NJSV9TTEFTSCwgJ1wwJwogICB9OwotICBzdGF0aWMgY29uc3QgaW50IHhtbG5zTGVuID0gCisgIHN0YXRpYyBjb25zdCBpbnQgeG1sbnNMZW4gPQogICAgIChpbnQpc2l6ZW9mKHhtbG5zTmFtZXNwYWNlKS9zaXplb2YoWE1MX0NoYXIpIC0gMTsKIAogICBYTUxfQm9vbCBtdXN0QmVYTUwgPSBYTUxfRkFMU0U7CiAgIFhNTF9Cb29sIGlzWE1MID0gWE1MX1RSVUU7CiAgIFhNTF9Cb29sIGlzWE1MTlMgPSBYTUxfVFJVRTsKLSAgCisKICAgQklORElORyAqYjsKICAgaW50IGxlbjsKIApAQCAtMzAxNywxMyArMzA4MiwxMyBAQAogICAgIHJldHVybiBYTUxfRVJST1JfVU5ERUNMQVJJTkdfUFJFRklYOwogCiAgIGlmIChwcmVmaXgtPm5hbWUKLSAgICAgICYmIHByZWZpeC0+bmFtZVswXSA9PSBYTUxfVCgneCcpCi0gICAgICAmJiBwcmVmaXgtPm5hbWVbMV0gPT0gWE1MX1QoJ20nKQotICAgICAgJiYgcHJlZml4LT5uYW1lWzJdID09IFhNTF9UKCdsJykpIHsKKyAgICAgICYmIHByZWZpeC0+bmFtZVswXSA9PSBYTUxfVChBU0NJSV94KQorICAgICAgJiYgcHJlZml4LT5uYW1lWzFdID09IFhNTF9UKEFTQ0lJX20pCisgICAgICAmJiBwcmVmaXgtPm5hbWVbMl0gPT0gWE1MX1QoQVNDSUlfbCkpIHsKIAogICAgIC8qIE5vdCBhbGxvd2VkIHRvIGJpbmQgeG1sbnMgKi8KLSAgICBpZiAocHJlZml4LT5uYW1lWzNdID09IFhNTF9UKCduJykKLSAgICAgICAgJiYgcHJlZml4LT5uYW1lWzRdID09IFhNTF9UKCdzJykKKyAgICBpZiAocHJlZml4LT5uYW1lWzNdID09IFhNTF9UKEFTQ0lJX24pCisgICAgICAgICYmIHByZWZpeC0+bmFtZVs0XSA9PSBYTUxfVChBU0NJSV9zKQogICAgICAgICAmJiBwcmVmaXgtPm5hbWVbNV0gPT0gWE1MX1QoJ1wwJykpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX1JFU0VSVkVEX1BSRUZJWF9YTUxOUzsKIApAQCAtMzAzNSw3ICszMTAwLDcgQEAKICAgICBpZiAoaXNYTUwgJiYgKGxlbiA+IHhtbExlbiB8fCB1cmlbbGVuXSAhPSB4bWxOYW1lc3BhY2VbbGVuXSkpCiAgICAgICBpc1hNTCA9IFhNTF9GQUxTRTsKIAotICAgIGlmICghbXVzdEJlWE1MICYmIGlzWE1MTlMgCisgICAgaWYgKCFtdXN0QmVYTUwgJiYgaXNYTUxOUwogICAgICAgICAmJiAobGVuID4geG1sbnNMZW4gfHwgdXJpW2xlbl0gIT0geG1sbnNOYW1lc3BhY2VbbGVuXSkpCiAgICAgICBpc1hNTE5TID0gWE1MX0ZBTFNFOwogICB9CkBAIC0zMTc3LDI2ICszMjQyLDI5IEBACiAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfVE9LX0RBVEFfQ0hBUlM6Ci0gICAgICBpZiAoY2hhcmFjdGVyRGF0YUhhbmRsZXIpIHsKLSAgICAgICAgaWYgKE1VU1RfQ09OVkVSVChlbmMsIHMpKSB7Ci0gICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgSUNIQVIgKmRhdGFQdHIgPSAoSUNIQVIgKilkYXRhQnVmOwotICAgICAgICAgICAgWG1sQ29udmVydChlbmMsICZzLCBuZXh0LCAmZGF0YVB0ciwgKElDSEFSICopZGF0YUJ1ZkVuZCk7Ci0gICAgICAgICAgICAqZXZlbnRFbmRQUCA9IG5leHQ7Ci0gICAgICAgICAgICBjaGFyYWN0ZXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKLSAgICAgICAgICAgIGlmIChzID09IG5leHQpCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKmV2ZW50UFAgPSBzOworICAgICAgeworICAgICAgICBYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIgY2hhckRhdGFIYW5kbGVyID0gY2hhcmFjdGVyRGF0YUhhbmRsZXI7CisgICAgICAgIGlmIChjaGFyRGF0YUhhbmRsZXIpIHsKKyAgICAgICAgICBpZiAoTVVTVF9DT05WRVJUKGVuYywgcykpIHsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgSUNIQVIgKmRhdGFQdHIgPSAoSUNIQVIgKilkYXRhQnVmOworICAgICAgICAgICAgICBYbWxDb252ZXJ0KGVuYywgJnMsIG5leHQsICZkYXRhUHRyLCAoSUNIQVIgKilkYXRhQnVmRW5kKTsKKyAgICAgICAgICAgICAgKmV2ZW50RW5kUFAgPSBuZXh0OworICAgICAgICAgICAgICBjaGFyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgZGF0YUJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGRhdGFQdHIgLSAoSUNIQVIgKilkYXRhQnVmKSk7CisgICAgICAgICAgICAgIGlmIChzID09IG5leHQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICpldmVudFBQID0gczsKKyAgICAgICAgICAgIH0KICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFhNTF9DaGFyICopcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoWE1MX0NoYXIgKiluZXh0IC0gKFhNTF9DaGFyICopcykpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBjaGFyYWN0ZXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYTUxfQ2hhciAqKXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKFhNTF9DaGFyICopbmV4dCAtIChYTUxfQ2hhciAqKXMpKTsKKyAgICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCisgICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICB9Ci0gICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKLSAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9UT0tfSU5WQUxJRDoKICAgICAgICpldmVudFBQID0gbmV4dDsKQEAgLTMyNDMsNyArMzMxMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZFB0cikKIHsKLSAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9JZ25vcmVTZWN0aW9uKHBhcnNlciwgZW5jb2RpbmcsICZzdGFydCwgZW5kLCAKKyAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9JZ25vcmVTZWN0aW9uKHBhcnNlciwgZW5jb2RpbmcsICZzdGFydCwgZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKICAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzUyNSw3ICszNTkzLDcgQEAKICAgY29uc3QgY2hhciAqbmV4dCA9IHN0YXJ0OwogICBldmVudFB0ciA9IHN0YXJ0OwogCi0gIGZvciAoOzspIHsgIAorICBmb3IgKDs7KSB7CiAgICAgdG9rID0gWG1sUHJvbG9nVG9rKGVuY29kaW5nLCBzdGFydCwgZW5kLCAmbmV4dCk7CiAgICAgZXZlbnRFbmRQdHIgPSBuZXh0OwogICAgIGlmICh0b2sgPD0gMCkgewpAQCAtMzU1Myw3ICszNjIxLDcgQEAKICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKLSAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDogCisgICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAgICpuZXh0UHRyID0gbmV4dDsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgY2FzZSBYTUxfRklOSVNIRUQ6CkBAIC0zNjE4LDcgKzM2ODYsNyBAQAogICB9CiAKICAgcHJvY2Vzc29yID0gcHJvbG9nUHJvY2Vzc29yOwotICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsIAorICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsCiAgICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKIH0KIApAQCAtMzY2OCw3ICszNzM2LDcgQEAKIHsKICAgY29uc3QgY2hhciAqbmV4dCA9IHM7CiAgIGludCB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOwotICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsIAorICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsCiAgICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKIH0KIApAQCAtMzY4MywyNiArMzc1MSwzMCBAQAogICAgICAgICAgWE1MX0Jvb2wgaGF2ZU1vcmUpCiB7CiAjaWZkZWYgWE1MX0RURAotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZXh0ZXJuYWxTdWJzZXROYW1lW10gPSB7ICcjJyAsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGV4dGVybmFsU3Vic2V0TmFtZVtdID0geyBBU0NJSV9IQVNIICwgJ1wwJyB9OwogI2VuZGlmIC8qIFhNTF9EVEQgKi8KLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlQ0RBVEFbXSA9IHsgJ0MnLCAnRCcsICdBJywgJ1QnLCAnQScsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURbXSA9IHsgJ0knLCAnRCcsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURSRUZbXSA9IHsgJ0knLCAnRCcsICdSJywgJ0UnLCAnRicsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURSRUZTW10gPSB7ICdJJywgJ0QnLCAnUicsICdFJywgJ0YnLCAnUycsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlRU5USVRZW10gPSB7ICdFJywgJ04nLCAnVCcsICdJJywgJ1QnLCAnWScsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlRU5USVRJRVNbXSA9Ci0gICAgICB7ICdFJywgJ04nLCAnVCcsICdJJywgJ1QnLCAnSScsICdFJywgJ1MnLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZUNEQVRBW10gPQorICAgICAgeyBBU0NJSV9DLCBBU0NJSV9ELCBBU0NJSV9BLCBBU0NJSV9ULCBBU0NJSV9BLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZUlEW10gPSB7IEFTQ0lJX0ksIEFTQ0lJX0QsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURSRUZbXSA9CisgICAgICB7IEFTQ0lJX0ksIEFTQ0lJX0QsIEFTQ0lJX1IsIEFTQ0lJX0UsIEFTQ0lJX0YsICdcMCcgfTsKKyAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlSURSRUZTW10gPQorICAgICAgeyBBU0NJSV9JLCBBU0NJSV9ELCBBU0NJSV9SLCBBU0NJSV9FLCBBU0NJSV9GLCBBU0NJSV9TLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZUVOVElUWVtdID0KKyAgICAgIHsgQVNDSUlfRSwgQVNDSUlfTiwgQVNDSUlfVCwgQVNDSUlfSSwgQVNDSUlfVCwgQVNDSUlfWSwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVFTlRJVElFU1tdID0geyBBU0NJSV9FLCBBU0NJSV9OLAorICAgICAgQVNDSUlfVCwgQVNDSUlfSSwgQVNDSUlfVCwgQVNDSUlfSSwgQVNDSUlfRSwgQVNDSUlfUywgJ1wwJyB9OwogICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgYXR5cGVOTVRPS0VOW10gPSB7Ci0gICAgICAnTicsICdNJywgJ1QnLCAnTycsICdLJywgJ0UnLCAnTicsICdcMCcgfTsKLSAgc3RhdGljIGNvbnN0IFhNTF9DaGFyIGF0eXBlTk1UT0tFTlNbXSA9IHsKLSAgICAgICdOJywgJ00nLCAnVCcsICdPJywgJ0snLCAnRScsICdOJywgJ1MnLCAnXDAnIH07Ci0gIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBub3RhdGlvblByZWZpeFtdID0gewotICAgICAgJ04nLCAnTycsICdUJywgJ0EnLCAnVCcsICdJJywgJ08nLCAnTicsICcoJywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZW51bVZhbHVlU2VwW10gPSB7ICd8JywgJ1wwJyB9OwotICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZW51bVZhbHVlU3RhcnRbXSA9IHsgJygnLCAnXDAnIH07CisgICAgICBBU0NJSV9OLCBBU0NJSV9NLCBBU0NJSV9ULCBBU0NJSV9PLCBBU0NJSV9LLCBBU0NJSV9FLCBBU0NJSV9OLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBhdHlwZU5NVE9LRU5TW10gPSB7IEFTQ0lJX04sIEFTQ0lJX00sIEFTQ0lJX1QsCisgICAgICBBU0NJSV9PLCBBU0NJSV9LLCBBU0NJSV9FLCBBU0NJSV9OLCBBU0NJSV9TLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBub3RhdGlvblByZWZpeFtdID0geyBBU0NJSV9OLCBBU0NJSV9PLCBBU0NJSV9ULAorICAgICAgQVNDSUlfQSwgQVNDSUlfVCwgQVNDSUlfSSwgQVNDSUlfTywgQVNDSUlfTiwgQVNDSUlfTFBBUkVOLCAnXDAnIH07CisgIHN0YXRpYyBjb25zdCBYTUxfQ2hhciBlbnVtVmFsdWVTZXBbXSA9IHsgQVNDSUlfUElQRSwgJ1wwJyB9OworICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZW51bVZhbHVlU3RhcnRbXSA9IHsgQVNDSUlfTFBBUkVOLCAnXDAnIH07CiAKICAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KLSAgRFREICogY29uc3QgZHRkID0gX2R0ZDsgCisgIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7CiAKICAgY29uc3QgY2hhciAqKmV2ZW50UFA7CiAgIGNvbnN0IGNoYXIgKipldmVudEVuZFBQOwpAQCAtMzgxOCwxNSArMzg5MCwxNyBAQAogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgICAgIGR0ZC0+aGFzUGFyYW1FbnRpdHlSZWZzID0gWE1MX1RSVUU7CiAgICAgICBpZiAoc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIHsKKyAgICAgICAgWE1MX0NoYXIgKnB1YklkOwogICAgICAgICBpZiAoIVhtbElzUHVibGljSWQoZW5jLCBzLCBuZXh0LCBldmVudFBQKSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1BVQkxJQ0lEOwotICAgICAgICBkb2N0eXBlUHViaWQgPSBwb29sU3RvcmVTdHJpbmcoJnRlbXBQb29sLCBlbmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIpOwotICAgICAgICBpZiAoIWRvY3R5cGVQdWJpZCkKKyAgICAgICAgcHViSWQgPSBwb29sU3RvcmVTdHJpbmcoJnRlbXBQb29sLCBlbmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKyBlbmMtPm1pbkJ5dGVzUGVyQ2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCAtIGVuYy0+bWluQnl0ZXNQZXJDaGFyKTsKKyAgICAgICAgaWYgKCFwdWJJZCkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgbm9ybWFsaXplUHVibGljSWQoKFhNTF9DaGFyICopZG9jdHlwZVB1YmlkKTsKKyAgICAgICAgbm9ybWFsaXplUHVibGljSWQocHViSWQpOwogICAgICAgICBwb29sRmluaXNoKCZ0ZW1wUG9vbCk7CisgICAgICAgIGRvY3R5cGVQdWJpZCA9IHB1YklkOwogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgICBnb3RvIGFscmVhZHlDaGVja2VkOwogICAgICAgfQpAQCAtMzg4MSw4ICszOTU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHktPnB1YmxpY0lkKSkKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfRVhURVJOQUxfRU5USVRZX0hBTkRMSU5HOwogICAgICAgICAgIGlmIChkdGQtPnBhcmFtRW50aXR5UmVhZCkgewotICAgICAgICAgICAgaWYgKCFkdGQtPnN0YW5kYWxvbmUgJiYgCi0gICAgICAgICAgICAgICAgbm90U3RhbmRhbG9uZUhhbmRsZXIgJiYgCisgICAgICAgICAgICBpZiAoIWR0ZC0+c3RhbmRhbG9uZSAmJgorICAgICAgICAgICAgICAgIG5vdFN0YW5kYWxvbmVIYW5kbGVyICYmCiAgICAgICAgICAgICAgICAgIW5vdFN0YW5kYWxvbmVIYW5kbGVyKGhhbmRsZXJBcmcpKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PVF9TVEFOREFMT05FOwogICAgICAgICAgIH0KQEAgLTQwMTAsMTEgKzQwODQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcGFyc2VyKSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgaWYgKGF0dGxpc3REZWNsSGFuZGxlciAmJiBkZWNsQXR0cmlidXRlVHlwZSkgewotICAgICAgICAgIGlmICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoJygnKQotICAgICAgICAgICAgICB8fCAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKCdOJykKLSAgICAgICAgICAgICAgICAgICYmIGRlY2xBdHRyaWJ1dGVUeXBlWzFdID09IFhNTF9UKCdPJykpKSB7CisgICAgICAgICAgaWYgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9MUEFSRU4pCisgICAgICAgICAgICAgIHx8ICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoQVNDSUlfTikKKyAgICAgICAgICAgICAgICAgICYmIGRlY2xBdHRyaWJ1dGVUeXBlWzFdID09IFhNTF9UKEFTQ0lJX08pKSkgewogICAgICAgICAgICAgLyogRW51bWVyYXRlZCBvciBOb3RhdGlvbiB0eXBlICovCi0gICAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJyknKSkKKyAgICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVChBU0NJSV9SUEFSRU4pKQogICAgICAgICAgICAgICAgIHx8ICFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKICAgICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IHRlbXBQb29sLnN0YXJ0OwpAQCAtNDA0NywxMSArNDEyMSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsQXR0cmlidXRlSXNDZGF0YSwgWE1MX0ZBTFNFLCBhdHRWYWwsIHBhcnNlcikpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgIGlmIChhdHRsaXN0RGVjbEhhbmRsZXIgJiYgZGVjbEF0dHJpYnV0ZVR5cGUpIHsKLSAgICAgICAgICBpZiAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKCcoJykKLSAgICAgICAgICAgICAgfHwgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVCgnTicpCi0gICAgICAgICAgICAgICAgICAmJiBkZWNsQXR0cmlidXRlVHlwZVsxXSA9PSBYTUxfVCgnTycpKSkgeworICAgICAgICAgIGlmICgqZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoQVNDSUlfTFBBUkVOKQorICAgICAgICAgICAgICB8fCAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX04pCisgICAgICAgICAgICAgICAgICAmJiBkZWNsQXR0cmlidXRlVHlwZVsxXSA9PSBYTUxfVChBU0NJSV9PKSkpIHsKICAgICAgICAgICAgIC8qIEVudW1lcmF0ZWQgb3IgTm90YXRpb24gdHlwZSAqLwotICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCcpJykpCisgICAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoQVNDSUlfUlBBUkVOKSkKICAgICAgICAgICAgICAgICB8fCAhcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVCgnXDAnKSkpCiAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSB0ZW1wUG9vbC5zdGFydDsKQEAgLTQzMjEsNyArNDM5NSw3IEBACiAgICAgICBzd2l0Y2ggKHRvaykgewogICAgICAgY2FzZSBYTUxfVE9LX1BBUkFNX0VOVElUWV9SRUY6CiAgICAgICAgIC8qIFBFIHJlZmVyZW5jZXMgaW4gaW50ZXJuYWwgc3Vic2V0IGFyZQotICAgICAgICAgICBub3QgYWxsb3dlZCB3aXRoaW4gZGVjbGFyYXRpb25zLiAqLyAgCisgICAgICAgICAgIG5vdCBhbGxvd2VkIHdpdGhpbiBkZWNsYXJhdGlvbnMuICovCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfUEFSQU1fRU5USVRZX1JFRjsKICAgICAgIGNhc2UgWE1MX1RPS19YTUxfREVDTDoKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9NSVNQTEFDRURfWE1MX1BJOwpAQCAtNDM3OSwxNCArNDQ1MywxNCBAQAogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9HUk9VUF9TRVFVRU5DRToKLSAgICAgIGlmIChncm91cENvbm5lY3Rvcltwcm9sb2dTdGF0ZS5sZXZlbF0gPT0gJ3wnKQorICAgICAgaWYgKGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9PSBBU0NJSV9QSVBFKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1NZTlRBWDsKLSAgICAgIGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9ICcsJzsKKyAgICAgIGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9IEFTQ0lJX0NPTU1BOwogICAgICAgaWYgKGR0ZC0+aW5fZWxkZWNsICYmIGVsZW1lbnREZWNsSGFuZGxlcikKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfR1JPVVBfQ0hPSUNFOgotICAgICAgaWYgKGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9PSAnLCcpCisgICAgICBpZiAoZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID09IEFTQ0lJX0NPTU1BKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1NZTlRBWDsKICAgICAgIGlmIChkdGQtPmluX2VsZGVjbAogICAgICAgICAgICYmICFncm91cENvbm5lY3Rvcltwcm9sb2dTdGF0ZS5sZXZlbF0KQEAgLTQzOTgsNyArNDQ3Miw3IEBACiAgICAgICAgIGlmIChlbGVtZW50RGVjbEhhbmRsZXIpCiAgICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIH0KLSAgICAgIGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9ICd8JzsKKyAgICAgIGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9IEFTQ0lJX1BJUEU7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX1BBUkFNX0VOVElUWV9SRUY6CiAjaWZkZWYgWE1MX0RURApAQCAtNDQ0Miw3ICs0NTE2LDcgQEAKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1JFQ1VSU0lWRV9FTlRJVFlfUkVGOwogICAgICAgICBpZiAoZW50aXR5LT50ZXh0UHRyKSB7CiAgICAgICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0OwotICAgICAgICAgIFhNTF9Cb29sIGJldHdlZW5EZWNsID0gCisgICAgICAgICAgWE1MX0Jvb2wgYmV0d2VlbkRlY2wgPQogICAgICAgICAgICAgKHJvbGUgPT0gWE1MX1JPTEVfUEFSQU1fRU5USVRZX1JFRiA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFKTsKICAgICAgICAgICByZXN1bHQgPSBwcm9jZXNzSW50ZXJuYWxFbnRpdHkocGFyc2VyLCBlbnRpdHksIGJldHdlZW5EZWNsKTsKICAgICAgICAgICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQpAQCAtNDYzNyw3ICs0NzExLDcgQEAKICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogCiAgICAgc3dpdGNoIChwc19wYXJzaW5nKSB7Ci0gICAgY2FzZSBYTUxfU1VTUEVOREVEOiAKKyAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgY2FzZSBYTUxfRklOSVNIRUQ6CkBAIC00NzA3LDcgKzQ3ODEsNyBAQAogICAgIH0KICAgICBldmVudFB0ciA9IHMgPSBuZXh0OwogICAgIHN3aXRjaCAocHNfcGFyc2luZykgewotICAgIGNhc2UgWE1MX1NVU1BFTkRFRDogCisgICAgY2FzZSBYTUxfU1VTUEVOREVEOgogICAgICAgKm5leHRQdHIgPSBuZXh0OwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgIGNhc2UgWE1MX0ZJTklTSEVEOgpAQCAtNDc1MCwxMiArNDgyNCwxMiBAQAogI2lmZGVmIFhNTF9EVEQKICAgaWYgKGVudGl0eS0+aXNfcGFyYW0pIHsKICAgICBpbnQgdG9rID0gWG1sUHJvbG9nVG9rKGludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwgdGV4dEVuZCwgJm5leHQpOwotICAgIHJlc3VsdCA9IGRvUHJvbG9nKHBhcnNlciwgaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCB0b2ssIAorICAgIHJlc3VsdCA9IGRvUHJvbG9nKHBhcnNlciwgaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCB0b2ssCiAgICAgICAgICAgICAgICAgICAgICAgbmV4dCwgJm5leHQsIFhNTF9GQUxTRSk7CiAgIH0KLSAgZWxzZSAKKyAgZWxzZQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KLSAgICByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCB0YWdMZXZlbCwgaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCAKKyAgICByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCB0YWdMZXZlbCwgaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5kLCAmbmV4dCwgWE1MX0ZBTFNFKTsKIAogICBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7CkBAIC00Nzk1LDEzICs0ODY5LDEzIEBACiAjaWZkZWYgWE1MX0RURAogICBpZiAoZW50aXR5LT5pc19wYXJhbSkgewogICAgIGludCB0b2sgPSBYbWxQcm9sb2dUb2soaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCAmbmV4dCk7Ci0gICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywgCisgICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywKICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCAmbmV4dCwgWE1MX0ZBTFNFKTsKICAgfQogICBlbHNlCiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIG9wZW5FbnRpdHktPnN0YXJ0VGFnTGV2ZWwsIGludGVybmFsRW5jb2RpbmcsIAotICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOyAgCisgICAgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgb3BlbkVudGl0eS0+c3RhcnRUYWdMZXZlbCwgaW50ZXJuYWxFbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgdGV4dFN0YXJ0LCB0ZXh0RW5kLCAmbmV4dCwgWE1MX0ZBTFNFKTsKIAogICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgIHJldHVybiByZXN1bHQ7CkBAIC00ODIyLDcgKzQ4OTYsNyBAQAogICAgIGludCB0b2s7CiAgICAgcHJvY2Vzc29yID0gcHJvbG9nUHJvY2Vzc29yOwogICAgIHRvayA9IFhtbFByb2xvZ1RvayhlbmNvZGluZywgcywgZW5kLCAmbmV4dCk7Ci0gICAgcmV0dXJuIGRvUHJvbG9nKHBhcnNlciwgZW5jb2RpbmcsIHMsIGVuZCwgdG9rLCBuZXh0LCBuZXh0UHRyLCAKKyAgICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsIG5leHRQdHIsCiAgICAgICAgICAgICAgICAgICAgIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOwogICB9CiAgIGVsc2UKQEAgLTQ4MzEsOCArNDkwNSw4IEBACiAgICAgcHJvY2Vzc29yID0gY29udGVudFByb2Nlc3NvcjsKICAgICAvKiBzZWUgZXh0ZXJuYWxFbnRpdHlDb250ZW50UHJvY2Vzc29yIHZzIGNvbnRlbnRQcm9jZXNzb3IgKi8KICAgICByZXR1cm4gZG9Db250ZW50KHBhcnNlciwgcGFyZW50UGFyc2VyID8gMSA6IDAsIGVuY29kaW5nLCBzLCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsgCi0gIH0gIAorICAgICAgICAgICAgICAgICAgICAgbmV4dFB0ciwgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CisgIH0KIH0KIAogc3RhdGljIGVudW0gWE1MX0Vycm9yIFBUUkNBTEwKQEAgLTQ5ODUsNyArNTA1OSw3IEBACiAgICAgICAgIGlmICghZW50aXR5LT50ZXh0UHRyKSB7CiAgICAgICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKICAgICAgICAgICAgIGV2ZW50UHRyID0gcHRyOwotICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX0FUVFJJQlVURV9FWFRFUk5BTF9FTlRJVFlfUkVGOworICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQVRUUklCVVRFX0VYVEVSTkFMX0VOVElUWV9SRUY7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0OwpAQCAtNTMyOCw3ICs1NDAyLDcgQEAKICAgRFREICogY29uc3QgZHRkID0gX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCiAgIGNvbnN0IFhNTF9DaGFyICpuYW1lOwogICBmb3IgKG5hbWUgPSBlbGVtZW50VHlwZS0+bmFtZTsgKm5hbWU7IG5hbWUrKykgewotICAgIGlmICgqbmFtZSA9PSBYTUxfVCgnOicpKSB7CisgICAgaWYgKCpuYW1lID09IFhNTF9UKEFTQ0lJX0NPTE9OKSkgewogICAgICAgUFJFRklYICpwcmVmaXg7CiAgICAgICBjb25zdCBYTUxfQ2hhciAqczsKICAgICAgIGZvciAocyA9IGVsZW1lbnRUeXBlLT5uYW1lOyBzICE9IG5hbWU7IHMrKykgewpAQCAtNTM3NSwxMiArNTQ0OSwxMiBAQAogICAgIHBvb2xGaW5pc2goJmR0ZC0+cG9vbCk7CiAgICAgaWYgKCFucykKICAgICAgIDsKLSAgICBlbHNlIGlmIChuYW1lWzBdID09IFhNTF9UKCd4JykKLSAgICAgICAgJiYgbmFtZVsxXSA9PSBYTUxfVCgnbScpCi0gICAgICAgICYmIG5hbWVbMl0gPT0gWE1MX1QoJ2wnKQotICAgICAgICAmJiBuYW1lWzNdID09IFhNTF9UKCduJykKLSAgICAgICAgJiYgbmFtZVs0XSA9PSBYTUxfVCgncycpCi0gICAgICAgICYmIChuYW1lWzVdID09IFhNTF9UKCdcMCcpIHx8IG5hbWVbNV0gPT0gWE1MX1QoJzonKSkpIHsKKyAgICBlbHNlIGlmIChuYW1lWzBdID09IFhNTF9UKEFTQ0lJX3gpCisgICAgICAgICYmIG5hbWVbMV0gPT0gWE1MX1QoQVNDSUlfbSkKKyAgICAgICAgJiYgbmFtZVsyXSA9PSBYTUxfVChBU0NJSV9sKQorICAgICAgICAmJiBuYW1lWzNdID09IFhNTF9UKEFTQ0lJX24pCisgICAgICAgICYmIG5hbWVbNF0gPT0gWE1MX1QoQVNDSUlfcykKKyAgICAgICAgJiYgKG5hbWVbNV0gPT0gWE1MX1QoJ1wwJykgfHwgbmFtZVs1XSA9PSBYTUxfVChBU0NJSV9DT0xPTikpKSB7CiAgICAgICBpZiAobmFtZVs1XSA9PSBYTUxfVCgnXDAnKSkKICAgICAgICAgaWQtPnByZWZpeCA9ICZkdGQtPmRlZmF1bHRQcmVmaXg7CiAgICAgICBlbHNlCkBAIC01MzkxLDcgKzU0NjUsNyBAQAogICAgICAgaW50IGk7CiAgICAgICBmb3IgKGkgPSAwOyBuYW1lW2ldOyBpKyspIHsKICAgICAgICAgLyogYXR0cmlidXRlcyB3aXRob3V0IHByZWZpeCBhcmUgKm5vdCogaW4gdGhlIGRlZmF1bHQgbmFtZXNwYWNlICovCi0gICAgICAgIGlmIChuYW1lW2ldID09IFhNTF9UKCc6JykpIHsKKyAgICAgICAgaWYgKG5hbWVbaV0gPT0gWE1MX1QoQVNDSUlfQ09MT04pKSB7CiAgICAgICAgICAgaW50IGo7CiAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGk7IGorKykgewogICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmZHRkLT5wb29sLCBuYW1lW2pdKSkKQEAgLTU0MDEsOCArNTQ3NSw2IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICBpZC0+cHJlZml4ID0gKFBSRUZJWCAqKWxvb2t1cChwYXJzZXIsICZkdGQtPnByZWZpeGVzLCBwb29sU3RhcnQoJmR0ZC0+cG9vbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFBSRUZJWCkpOwotICAgICAgICAgIGlmICghaWQtPnByZWZpeCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgIGlmIChpZC0+cHJlZml4LT5uYW1lID09IHBvb2xTdGFydCgmZHRkLT5wb29sKSkKICAgICAgICAgICAgIHBvb2xGaW5pc2goJmR0ZC0+cG9vbCk7CiAgICAgICAgICAgZWxzZQpAQCAtNTQxNSw3ICs1NDg3LDcgQEAKICAgcmV0dXJuIGlkOwogfQogCi0jZGVmaW5lIENPTlRFWFRfU0VQIFhNTF9UKCdcZicpCisjZGVmaW5lIENPTlRFWFRfU0VQIFhNTF9UKEFTQ0lJX0ZGKQogCiBzdGF0aWMgY29uc3QgWE1MX0NoYXIgKgogZ2V0Q29udGV4dChYTUxfUGFyc2VyIHBhcnNlcikKQEAgLTU0MjcsNyArNTQ5OSw3IEBACiAgIGlmIChkdGQtPmRlZmF1bHRQcmVmaXguYmluZGluZykgewogICAgIGludCBpOwogICAgIGludCBsZW47Ci0gICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCc9JykpKQorICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVChBU0NJSV9FUVVBTFMpKSkKICAgICAgIHJldHVybiBOVUxMOwogICAgIGxlbiA9IGR0ZC0+ZGVmYXVsdFByZWZpeC5iaW5kaW5nLT51cmlMZW47CiAgICAgaWYgKG5hbWVzcGFjZVNlcGFyYXRvcikKQEAgLTU0NTMsNyArNTUyNSw3IEBACiAgICAgZm9yIChzID0gcHJlZml4LT5uYW1lOyAqczsgcysrKQogICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsICpzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCc9JykpKQorICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVChBU0NJSV9FUVVBTFMpKSkKICAgICAgIHJldHVybiBOVUxMOwogICAgIGxlbiA9IHByZWZpeC0+YmluZGluZy0+dXJpTGVuOwogICAgIGlmIChuYW1lc3BhY2VTZXBhcmF0b3IpCkBAIC01NTA1LDcgKzU1NzcsNyBAQAogICAgICAgY29udGV4dCA9IHM7CiAgICAgICBwb29sRGlzY2FyZCgmdGVtcFBvb2wpOwogICAgIH0KLSAgICBlbHNlIGlmICgqcyA9PSBYTUxfVCgnPScpKSB7CisgICAgZWxzZSBpZiAoKnMgPT0gWE1MX1QoQVNDSUlfRVFVQUxTKSkgewogICAgICAgUFJFRklYICpwcmVmaXg7CiAgICAgICBpZiAocG9vbExlbmd0aCgmdGVtcFBvb2wpID09IDApCiAgICAgICAgIHByZWZpeCA9ICZkdGQtPmRlZmF1bHRQcmVmaXg7CkBAIC02MTYyLDEyICs2MjM0LDEzIEBACiAgIH0KICAgaWYgKHBvb2wtPmJsb2NrcyAmJiBwb29sLT5zdGFydCA9PSBwb29sLT5ibG9ja3MtPnMpIHsKICAgICBpbnQgYmxvY2tTaXplID0gKGludCkocG9vbC0+ZW5kIC0gcG9vbC0+c3RhcnQpKjI7Ci0gICAgcG9vbC0+YmxvY2tzID0gKEJMT0NLICopCisgICAgQkxPQ0sgKnRlbXAgPSAoQkxPQ0sgKikKICAgICAgIHBvb2wtPm1lbS0+cmVhbGxvY19mY24ocG9vbC0+YmxvY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2Zmc2V0b2YoQkxPQ0ssIHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGJsb2NrU2l6ZSAqIHNpemVvZihYTUxfQ2hhcikpKTsKLSAgICBpZiAocG9vbC0+YmxvY2tzID09IE5VTEwpCisgICAgaWYgKHRlbXAgPT0gTlVMTCkKICAgICAgIHJldHVybiBYTUxfRkFMU0U7CisgICAgcG9vbC0+YmxvY2tzID0gdGVtcDsKICAgICBwb29sLT5ibG9ja3MtPnNpemUgPSBibG9ja1NpemU7CiAgICAgcG9vbC0+cHRyID0gcG9vbC0+YmxvY2tzLT5zICsgKHBvb2wtPnB0ciAtIHBvb2wtPnN0YXJ0KTsKICAgICBwb29sLT5zdGFydCA9IHBvb2wtPmJsb2Nrcy0+czsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1scm9sZS5jIGIvTW9kdWxlcy9leHBhdC94bWxyb2xlLmMKaW5kZXggMTVkNGQ4Zi4uNDQ3NzJlMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC94bWxyb2xlLmMKKysrIGIvTW9kdWxlcy9leHBhdC94bWxyb2xlLmMKQEAgLTIsMjAgKzIsMjIgQEAKICAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCiAqLwogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAogI2luY2x1ZGUgIndpbmNvbmZpZy5oIgogI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQogI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX2FtaWdhb3M0X18pCisjZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQogI2luY2x1ZGUgImFtaWdhY29uZmlnLmgiCisjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQorI2luY2x1ZGUgIndhdGNvbWNvbmZpZy5oIgogI2Vsc2UKICNpZmRlZiBIQVZFX0VYUEFUX0NPTkZJR19ICiAjaW5jbHVkZSA8ZXhwYXRfY29uZmlnLmg+CiAjZW5kaWYKICNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLQogI2luY2x1ZGUgImV4cGF0X2V4dGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKICNpbmNsdWRlICJ4bWxyb2xlLmgiCkBAIC01MywxMiArNTUsMTYgQEAKICAgICBBU0NJSV9JLCBBU0NJSV9ELCBBU0NJSV9SLCBBU0NJSV9FLCBBU0NJSV9GLCAnXDAnIH07CiBzdGF0aWMgY29uc3QgY2hhciBLV19JRFJFRlNbXSA9IHsKICAgICBBU0NJSV9JLCBBU0NJSV9ELCBBU0NJSV9SLCBBU0NJSV9FLCBBU0NJSV9GLCBBU0NJSV9TLCAnXDAnIH07CisjaWZkZWYgWE1MX0RURAogc3RhdGljIGNvbnN0IGNoYXIgS1dfSUdOT1JFW10gPSB7CiAgICAgQVNDSUlfSSwgQVNDSUlfRywgQVNDSUlfTiwgQVNDSUlfTywgQVNDSUlfUiwgQVNDSUlfRSwgJ1wwJyB9OworI2VuZGlmCiBzdGF0aWMgY29uc3QgY2hhciBLV19JTVBMSUVEW10gPSB7CiAgICAgQVNDSUlfSSwgQVNDSUlfTSwgQVNDSUlfUCwgQVNDSUlfTCwgQVNDSUlfSSwgQVNDSUlfRSwgQVNDSUlfRCwgJ1wwJyB9OworI2lmZGVmIFhNTF9EVEQKIHN0YXRpYyBjb25zdCBjaGFyIEtXX0lOQ0xVREVbXSA9IHsKICAgICBBU0NJSV9JLCBBU0NJSV9OLCBBU0NJSV9DLCBBU0NJSV9MLCBBU0NJSV9VLCBBU0NJSV9ELCBBU0NJSV9FLCAnXDAnIH07CisjZW5kaWYKIHN0YXRpYyBjb25zdCBjaGFyIEtXX05EQVRBW10gPSB7CiAgICAgQVNDSUlfTiwgQVNDSUlfRCwgQVNDSUlfQSwgQVNDSUlfVCwgQVNDSUlfQSwgJ1wwJyB9Owogc3RhdGljIGNvbnN0IGNoYXIgS1dfTk1UT0tFTltdID0gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWx0b2suYyBiL01vZHVsZXMvZXhwYXQveG1sdG9rLmMKaW5kZXggZGI5MjI0Ny4uYmYwOWRmYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC94bWx0b2suYworKysgYi9Nb2R1bGVzL2V4cGF0L3htbHRvay5jCkBAIC0yLDIwICsyLDIyIEBACiAgICBTZWUgdGhlIGZpbGUgQ09QWUlORyBmb3IgY29weWluZyBwZXJtaXNzaW9uLgogKi8KIAorI2luY2x1ZGUgPHN0ZGRlZi5oPgorCiAjaWZkZWYgQ09NUElMRURfRlJPTV9EU1AKICNpbmNsdWRlICJ3aW5jb25maWcuaCIKICNlbGlmIGRlZmluZWQoTUFDT1NfQ0xBU1NJQykKICNpbmNsdWRlICJtYWNjb25maWcuaCIKLSNlbGlmIGRlZmluZWQoX19hbWlnYW9zNF9fKQorI2VsaWYgZGVmaW5lZChfX2FtaWdhb3NfXykKICNpbmNsdWRlICJhbWlnYWNvbmZpZy5oIgorI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykKKyNpbmNsdWRlICJ3YXRjb21jb25maWcuaCIKICNlbHNlCiAjaWZkZWYgSEFWRV9FWFBBVF9DT05GSUdfSAogI2luY2x1ZGUgPGV4cGF0X2NvbmZpZy5oPgogI2VuZGlmCiAjZW5kaWYgLyogbmRlZiBDT01QSUxFRF9GUk9NX0RTUCAqLwogCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0KICNpbmNsdWRlICJleHBhdF9leHRlcm5hbC5oIgogI2luY2x1ZGUgImludGVybmFsLmgiCiAjaW5jbHVkZSAieG1sdG9rLmgiCkBAIC0yOTUsNyArMjk3LDkgQEAKICNlbmRpZgogCiAjZGVmaW5lIFBSRUZJWChpZGVudCkgbm9ybWFsXyAjIyBpZGVudAorI2RlZmluZSBYTUxfVE9LX0lNUExfQwogI2luY2x1ZGUgInhtbHRva19pbXBsLmMiCisjdW5kZWYgWE1MX1RPS19JTVBMX0MKIAogI3VuZGVmIE1JTkJQQwogI3VuZGVmIEJZVEVfVFlQRQpAQCAtNjkyLDcgKzY5Niw5IEBACiAjZGVmaW5lIElTX05NU1RSVF9DSEFSKGVuYywgcCwgbikgKDApCiAjZGVmaW5lIElTX05NU1RSVF9DSEFSX01JTkJQQyhlbmMsIHApIExJVFRMRTJfSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkKIAorI2RlZmluZSBYTUxfVE9LX0lNUExfQwogI2luY2x1ZGUgInhtbHRva19pbXBsLmMiCisjdW5kZWYgWE1MX1RPS19JTVBMX0MKIAogI3VuZGVmIE1JTkJQQwogI3VuZGVmIEJZVEVfVFlQRQpAQCAtODMxLDcgKzgzNyw5IEBACiAjZGVmaW5lIElTX05NU1RSVF9DSEFSKGVuYywgcCwgbikgKDApCiAjZGVmaW5lIElTX05NU1RSVF9DSEFSX01JTkJQQyhlbmMsIHApIEJJRzJfSVNfTk1TVFJUX0NIQVJfTUlOQlBDKGVuYywgcCkKIAorI2RlZmluZSBYTUxfVE9LX0lNUExfQwogI2luY2x1ZGUgInhtbHRva19pbXBsLmMiCisjdW5kZWYgWE1MX1RPS19JTVBMX0MKIAogI3VuZGVmIE1JTkJQQwogI3VuZGVmIEJZVEVfVFlQRQpAQCAtMTMzNyw3ICsxMzQ1LDcgQEAKIEVOQ09ESU5HICoKIFhtbEluaXRVbmtub3duRW5jb2Rpbmcodm9pZCAqbWVtLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICBDT05WRVJURVIgY29udmVydCwgCisgICAgICAgICAgICAgICAgICAgICAgIENPTlZFUlRFUiBjb252ZXJ0LAogICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyRGF0YSkKIHsKICAgaW50IGk7CkBAIC0xNjEwLDcgKzE2MTgsOSBAQAogCiAjZGVmaW5lIE5TKHgpIHgKICNkZWZpbmUgbnMoeCkgeAorI2RlZmluZSBYTUxfVE9LX05TX0MKICNpbmNsdWRlICJ4bWx0b2tfbnMuYyIKKyN1bmRlZiBYTUxfVE9LX05TX0MKICN1bmRlZiBOUwogI3VuZGVmIG5zCiAKQEAgLTE2MTksNyArMTYyOSw5IEBACiAjZGVmaW5lIE5TKHgpIHggIyMgTlMKICNkZWZpbmUgbnMoeCkgeCAjIyBfbnMKIAorI2RlZmluZSBYTUxfVE9LX05TX0MKICNpbmNsdWRlICJ4bWx0b2tfbnMuYyIKKyN1bmRlZiBYTUxfVE9LX05TX0MKIAogI3VuZGVmIE5TCiAjdW5kZWYgbnMKQEAgLTE2MjcsNyArMTYzOSw3IEBACiBFTkNPRElORyAqCiBYbWxJbml0VW5rbm93bkVuY29kaW5nTlModm9pZCAqbWVtLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqdGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQ09OVkVSVEVSIGNvbnZlcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIENPTlZFUlRFUiBjb252ZXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJEYXRhKQogewogICBFTkNPRElORyAqZW5jID0gWG1sSW5pdFVua25vd25FbmNvZGluZyhtZW0sIHRhYmxlLCBjb252ZXJ0LCB1c2VyRGF0YSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmMgYi9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmMKaW5kZXggZjc5M2E2Yi4uOWMyODk1YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYwpAQCAtMiw2ICsyLDkgQEAKICAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCiAqLwogCisvKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQhICovCisjaWZkZWYgWE1MX1RPS19JTVBMX0MKKwogI2lmbmRlZiBJU19JTlZBTElEX0NIQVIKICNkZWZpbmUgSVNfSU5WQUxJRF9DSEFSKGVuYywgcHRyLCBuKSAoMCkKICNlbmRpZgpAQCAtODgyLDcgKzg4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipuZXh0VG9rUHRyKQogewogICBpZiAocHRyID09IGVuZCkKLSAgICByZXR1cm4gLVhNTF9UT0tfUEVSQ0VOVDsKKyAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOwogICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgQ0hFQ0tfTk1TVFJUX0NBU0VTKGVuYywgcHRyLCBlbmQsIG5leHRUb2tQdHIpCiAgIGNhc2UgQlRfUzogY2FzZSBCVF9MRjogY2FzZSBCVF9DUjogY2FzZSBCVF9QRVJDTlQ6CkBAIC0xNzc3LDMgKzE3ODAsNCBAQAogI3VuZGVmIENIRUNLX05NU1RSVF9DQVNFCiAjdW5kZWYgQ0hFQ0tfTk1TVFJUX0NBU0VTCiAKKyNlbmRpZiAvKiBYTUxfVE9LX0lNUExfQyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWx0b2tfbnMuYyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX25zLmMKaW5kZXggZDJmODkzOC4uYzNiODhmZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC94bWx0b2tfbnMuYworKysgYi9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jCkBAIC0xLDMgKzEsMTAgQEAKKy8qIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCisqLworCisvKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQhICovCisjaWZkZWYgWE1MX1RPS19OU19DCisKIGNvbnN0IEVOQ09ESU5HICoKIE5TKFhtbEdldFV0ZjhJbnRlcm5hbEVuY29kaW5nKSh2b2lkKQogewpAQCAtMTA0LDMgKzExMSw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYWxvbmUpOwogfQorCisjZW5kaWYgLyogWE1MX1RPS19OU19DICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2ZhdWx0aGFuZGxlci5jIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTM2M2YwCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9mYXVsdGhhbmRsZXIuYwpAQCAtMCwwICsxLDExNTIgQEAKKyNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJweXRocmVhZC5oIgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2luY2x1ZGUgPG9iamVjdC5oPgorI2luY2x1ZGUgPGZyYW1lb2JqZWN0Lmg+CisjaW5jbHVkZSA8c2lnbmFsLmg+CisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfU0lHTUFTSykgJiYgIWRlZmluZWQoSEFWRV9CUk9LRU5fUFRIUkVBRF9TSUdNQVNLKQorI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCisvKiBBbGxvY2F0ZSBhdCBtYXhpbXVtIDEwMCBNQiBvZiB0aGUgc3RhY2sgdG8gcmFpc2UgdGhlIHN0YWNrIG92ZXJmbG93ICovCisjZGVmaW5lIFNUQUNLX09WRVJGTE9XX01BWF9TSVpFICgxMDAqMTAyNCoxMDI0KQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyMgIGRlZmluZSBGQVVMVEhBTkRMRVJfTEFURVIKKyNlbmRpZgorCisjaWZuZGVmIE1TX1dJTkRPV1MKKyAgIC8qIHJlZ2lzdGVyKCkgaXMgdXNlbGVzcyBvbiBXaW5kb3dzLCBiZWNhdXNlIG9ubHkgU0lHU0VHViwgU0lHQUJSVCBhbmQKKyAgICAgIFNJR0lMTCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgcHJvY2VzcywgYW5kIHRoZXNlIHNpZ25hbHMgY2FuIG9ubHkgYmUgdXNlZAorICAgICAgd2l0aCBlbmFibGUoKSwgbm90IHVzaW5nIHJlZ2lzdGVyKCkgKi8KKyMgIGRlZmluZSBGQVVMVEhBTkRMRVJfVVNFUgorI2VuZGlmCisKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSB3cml0ZShmZCwgc3RyLCBzdHJsZW4oc3RyKSkKKworI2lmZGVmIEhBVkVfU0lHQUNUSU9OCit0eXBlZGVmIHN0cnVjdCBzaWdhY3Rpb24gX1B5X3NpZ2hhbmRsZXJfdDsKKyNlbHNlCit0eXBlZGVmIFB5T1Nfc2lnaGFuZGxlcl90IF9QeV9zaWdoYW5kbGVyX3Q7CisjZW5kaWYKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBzaWdudW07CisgICAgaW50IGVuYWJsZWQ7CisgICAgY29uc3QgY2hhciogbmFtZTsKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIGludCBhbGxfdGhyZWFkczsKK30gZmF1bHRfaGFuZGxlcl90OworCitzdGF0aWMgc3RydWN0IHsKKyAgICBpbnQgZW5hYmxlZDsKKyAgICBQeU9iamVjdCAqZmlsZTsKKyAgICBpbnQgZmQ7CisgICAgaW50IGFsbF90aHJlYWRzOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworfSBmYXRhbF9lcnJvciA9IHswLCBOVUxMLCAtMSwgMH07CisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKK3N0YXRpYyBzdHJ1Y3QgeworICAgIFB5T2JqZWN0ICpmaWxlOworICAgIGludCBmZDsKKyAgICBQWV9USU1FT1VUX1QgdGltZW91dF91czsgICAvKiB0aW1lb3V0IGluIG1pY3Jvc2Vjb25kcyAqLworICAgIGludCByZXBlYXQ7CisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CisgICAgaW50IGV4aXQ7CisgICAgY2hhciAqaGVhZGVyOworICAgIHNpemVfdCBoZWFkZXJfbGVuOworICAgIC8qIFRoZSBtYWluIHRocmVhZCBhbHdheXMgaG9sZHMgdGhpcyBsb2NrLiBJdCBpcyBvbmx5IHJlbGVhc2VkIHdoZW4KKyAgICAgICBmYXVsdGhhbmRsZXJfdGhyZWFkKCkgaXMgaW50ZXJydXB0ZWQgYmVmb3JlIHRoaXMgdGhyZWFkIGV4aXRzLCBvciBhdAorICAgICAgIFB5dGhvbiBleGl0LiAqLworICAgIFB5VGhyZWFkX3R5cGVfbG9jayBjYW5jZWxfZXZlbnQ7CisgICAgLyogcmVsZWFzZWQgYnkgY2hpbGQgdGhyZWFkIHdoZW4gam9pbmVkICovCisgICAgUHlUaHJlYWRfdHlwZV9sb2NrIHJ1bm5pbmc7Cit9IHRocmVhZDsKKyNlbmRpZgorCisjaWZkZWYgRkFVTFRIQU5ETEVSX1VTRVIKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQgZW5hYmxlZDsKKyAgICBQeU9iamVjdCAqZmlsZTsKKyAgICBpbnQgZmQ7CisgICAgaW50IGFsbF90aHJlYWRzOworICAgIGludCBjaGFpbjsKKyAgICBfUHlfc2lnaGFuZGxlcl90IHByZXZpb3VzOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworfSB1c2VyX3NpZ25hbF90OworCitzdGF0aWMgdXNlcl9zaWduYWxfdCAqdXNlcl9zaWduYWxzOworCisvKiB0aGUgZm9sbG93aW5nIG1hY3JvcyBjb21lIGZyb20gUHl0aG9uOiBNb2R1bGVzL3NpZ25hbG1vZHVsZS5jICovCisjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgIWRlZmluZWQoUFlDQ19HQ0MpCisjZGVmaW5lIE5TSUcgMTIKKyNlbmRpZgorI2lmbmRlZiBOU0lHCisjIGlmIGRlZmluZWQoX05TSUcpCisjICBkZWZpbmUgTlNJRyBfTlNJRyAgICAgICAgICAgIC8qIEZvciBCU0QvU3lzViAqLworIyBlbGlmIGRlZmluZWQoX1NJR01BWCkKKyMgIGRlZmluZSBOU0lHIChfU0lHTUFYICsgMSkgICAgLyogRm9yIFFOWCAqLworIyBlbGlmIGRlZmluZWQoU0lHTUFYKQorIyAgZGVmaW5lIE5TSUcgKFNJR01BWCArIDEpICAgICAvKiBGb3IgZGpncHAgKi8KKyMgZWxzZQorIyAgZGVmaW5lIE5TSUcgNjQgICAgICAgICAgICAgICAvKiBVc2UgYSByZWFzb25hYmxlIGRlZmF1bHQgdmFsdWUgKi8KKyMgZW5kaWYKKyNlbmRpZgorCitzdGF0aWMgdm9pZCBmYXVsdGhhbmRsZXJfdXNlcihpbnQgc2lnbnVtKTsKKyNlbmRpZiAvKiBGQVVMVEhBTkRMRVJfVVNFUiAqLworCisKK3N0YXRpYyBmYXVsdF9oYW5kbGVyX3QgZmF1bHRoYW5kbGVyX2hhbmRsZXJzW10gPSB7CisjaWZkZWYgU0lHQlVTCisgICAge1NJR0JVUywgMCwgIkJ1cyBlcnJvciIsIH0sCisjZW5kaWYKKyNpZmRlZiBTSUdJTEwKKyAgICB7U0lHSUxMLCAwLCAiSWxsZWdhbCBpbnN0cnVjdGlvbiIsIH0sCisjZW5kaWYKKyAgICB7U0lHRlBFLCAwLCAiRmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9uIiwgfSwKKyAgICB7U0lHQUJSVCwgMCwgIkFib3J0ZWQiLCB9LAorICAgIC8qIGRlZmluZSBTSUdTRUdWIGF0IHRoZSBlbmQgdG8gbWFrZSBpdCB0aGUgZGVmYXVsdCBjaG9pY2UgaWYgc2VhcmNoaW5nIHRoZQorICAgICAgIGhhbmRsZXIgZmFpbHMgaW4gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCkgKi8KKyAgICB7U0lHU0VHViwgMCwgIlNlZ21lbnRhdGlvbiBmYXVsdCIsIH0KK307CitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBmYXVsdGhhbmRsZXJfbnNpZ25hbHMgPSBcCisgICAgUHlfQVJSQVlfTEVOR1RIKGZhdWx0aGFuZGxlcl9oYW5kbGVycyk7CisKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCitzdGF0aWMgc3RhY2tfdCBzdGFjazsKKyNlbmRpZgorCisKKy8qIEdldCB0aGUgZmlsZSBkZXNjcmlwdG9yIG9mIGEgZmlsZSBieSBjYWxsaW5nIGl0cyBmaWxlbm8oKSBtZXRob2QgYW5kIHRoZW4KKyAgIGNhbGwgaXRzIGZsdXNoKCkgbWV0aG9kLgorCisgICBJZiBmaWxlIGlzIE5VTEwgb3IgUHlfTm9uZSwgdXNlIHN5cy5zdGRlcnIgYXMgdGhlIG5ldyBmaWxlLgorCisgICBPbiBzdWNjZXNzLCByZXR1cm4gdGhlIG5ldyBmaWxlIGFuZCB3cml0ZSB0aGUgZmlsZSBkZXNjcmlwdG9yIGludG8gKnBfZmQuCisgICBPbiBlcnJvciwgcmV0dXJuIE5VTEwuICovCisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKFB5T2JqZWN0ICpmaWxlLCBpbnQgKnBfZmQpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihmaWxlbm8pOworICAgIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKKyAgICBsb25nIGZkX2xvbmc7CisgICAgaW50IGZkOworCisgICAgaWYgKGZpbGUgPT0gTlVMTCB8fCBmaWxlID09IFB5X05vbmUpIHsKKyAgICAgICAgZmlsZSA9IFB5U3lzX0dldE9iamVjdCgic3RkZXJyIik7CisgICAgICAgIGlmIChmaWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJ1bmFibGUgdG8gZ2V0IHN5cy5zdGRlcnIiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaWxlLCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmQgPSAtMTsKKyAgICBpZiAoUHlMb25nX0NoZWNrKHJlc3VsdCkpIHsKKyAgICAgICAgZmRfbG9uZyA9IFB5TG9uZ19Bc0xvbmcocmVzdWx0KTsKKyAgICAgICAgaWYgKDAgPD0gZmRfbG9uZyAmJiBmZF9sb25nIDwgSU5UX01BWCkKKyAgICAgICAgICAgIGZkID0gKGludClmZF9sb25nOworICAgIH0KKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKworICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpbGUuZmlsZW5vKCkgaXMgbm90IGEgdmFsaWQgZmlsZSBkZXNjcmlwdG9yIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmlsZSwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICBpZiAocmVzdWx0ICE9IE5VTEwpCisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGVsc2UgeworICAgICAgICAvKiBpZ25vcmUgZmx1c2goKSBlcnJvciAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICAqcF9mZCA9IGZkOworICAgIHJldHVybiBmaWxlOworfQorCisvKiBHZXQgdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZDogb25seSBjYWxsIHRoaXMgZnVuY3Rpb24gaWYgdGhlIGN1cnJlbnQKKyAgIHRocmVhZCBob2xkcyB0aGUgR0lMLiBSYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuICovCitzdGF0aWMgUHlUaHJlYWRTdGF0ZSoKK2dldF90aHJlYWRfc3RhdGUodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBnZXQgdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gdHN0YXRlOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2tfcHkoUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaWxlIiwgImFsbF90aHJlYWRzIiwgTlVMTH07CisgICAgUHlPYmplY3QgKmZpbGUgPSBOVUxMOworICAgIGludCBhbGxfdGhyZWFkcyA9IDE7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGNvbnN0IGNoYXIgKmVycm1zZzsKKyAgICBpbnQgZmQ7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICJ8T2k6ZHVtcF90cmFjZWJhY2siLCBrd2xpc3QsCisgICAgICAgICZmaWxlLCAmYWxsX3RocmVhZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYWxsX3RocmVhZHMpIHsKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCB0c3RhdGUtPmludGVycCwgdHN0YXRlKTsKKyAgICAgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCBlcnJtc2cpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrKGZkLCB0c3RhdGUpOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCisvKiBIYW5kbGVyIGZvciBTSUdTRUdWLCBTSUdGUEUsIFNJR0FCUlQsIFNJR0JVUyBhbmQgU0lHSUxMIHNpZ25hbHMuCisKKyAgIERpc3BsYXkgdGhlIGN1cnJlbnQgUHl0aG9uIHRyYWNlYmFjaywgcmVzdG9yZSB0aGUgcHJldmlvdXMgaGFuZGxlciBhbmQgY2FsbAorICAgdGhlIHByZXZpb3VzIGhhbmRsZXIuCisKKyAgIE9uIFdpbmRvd3MsIGRvbid0IGV4cGxpY2l0bHkgY2FsbCB0aGUgcHJldmlvdXMgaGFuZGxlciwgYmVjYXVzZSB0aGUgV2luZG93cworICAgc2lnbmFsIGhhbmRsZXIgd291bGQgbm90IGJlIGNhbGxlZCAoZm9yIGFuIHVua25vd24gcmVhc29uKS4gVGhlIGV4ZWN1dGlvbiBvZgorICAgdGhlIHByb2dyYW0gY29udGludWVzIGF0IGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpIGV4aXQsIGJ1dCB0aGUgc2FtZQorICAgaW5zdHJ1Y3Rpb24gd2lsbCByYWlzZSB0aGUgc2FtZSBmYXVsdCAoc2lnbmFsKSwgYW5kIHNvIHRoZSBwcmV2aW91cyBoYW5kbGVyCisgICB3aWxsIGJlIGNhbGxlZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwtc2FmZSBhbmQgc2hvdWxkIG9ubHkgY2FsbCBzaWduYWwtc2FmZSBmdW5jdGlvbnMuICovCisKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoaW50IHNpZ251bSkKK3sKKyAgICBjb25zdCBpbnQgZmQgPSBmYXRhbF9lcnJvci5mZDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXIgPSBOVUxMOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBpbnQgc2F2ZV9lcnJubyA9IGVycm5vOworCisgICAgaWYgKCFmYXRhbF9lcnJvci5lbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgIGhhbmRsZXIgPSAmZmF1bHRoYW5kbGVyX2hhbmRsZXJzW2ldOworICAgICAgICBpZiAoaGFuZGxlci0+c2lnbnVtID09IHNpZ251bSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoaGFuZGxlciA9PSBOVUxMKSB7CisgICAgICAgIC8qIGZhdWx0aGFuZGxlcl9uc2lnbmFscyA9PSAwICh1bmxpa2VseSkgKi8KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIHJlc3RvcmUgdGhlIHByZXZpb3VzIGhhbmRsZXIgKi8KKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZoYW5kbGVyLT5wcmV2aW91cywgTlVMTCk7CisjZWxzZQorICAgICh2b2lkKXNpZ25hbChzaWdudW0sIGhhbmRsZXItPnByZXZpb3VzKTsKKyNlbmRpZgorICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworCisgICAgUFVUUyhmZCwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIik7CisgICAgUFVUUyhmZCwgaGFuZGxlci0+bmFtZSk7CisgICAgUFVUUyhmZCwgIlxuXG4iKTsKKworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgLyogU0lHU0VHViwgU0lHRlBFLCBTSUdBQlJULCBTSUdCVVMgYW5kIFNJR0lMTCBhcmUgc3luY2hyb25vdXMgc2lnbmFscyBhbmQKKyAgICAgICBhcmUgdGh1cyBkZWxpdmVyZWQgdG8gdGhlIHRocmVhZCB0aGF0IGNhdXNlZCB0aGUgZmF1bHQuIEdldCB0aGUgUHl0aG9uCisgICAgICAgdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgIFB5VGhyZWFkU3RhdGVfR2V0KCkgZG9lc24ndCBnaXZlIHRoZSBzdGF0ZSBvZiB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZQorICAgICAgIGZhdWx0IGlmIHRoZSB0aHJlYWQgcmVsZWFzZWQgdGhlIEdJTCwgYW5kIHNvIHRoaXMgZnVuY3Rpb24gY2Fubm90IGJlCisgICAgICAgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCisgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyNlbHNlCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyNlbmRpZgorCisgICAgaWYgKGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzKQorICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoZmQsIGZhdGFsX2Vycm9yLmludGVycCwgdHN0YXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQorICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2soZmQsIHRzdGF0ZSk7CisgICAgfQorCisgICAgZXJybm8gPSBzYXZlX2Vycm5vOworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoc2lnbnVtID09IFNJR1NFR1YpIHsKKyAgICAgICAgLyogZG9uJ3QgZXhwbGljaXRseSBjYWxsIHRoZSBwcmV2aW91cyBoYW5kbGVyIGZvciBTSUdTRUdWIGluIHRoaXMgc2lnbmFsCisgICAgICAgICAgIGhhbmRsZXIsIGJlY2F1c2UgdGhlIFdpbmRvd3Mgc2lnbmFsIGhhbmRsZXIgd291bGQgbm90IGJlIGNhbGxlZCAqLworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgLyogY2FsbCB0aGUgcHJldmlvdXMgc2lnbmFsIGhhbmRsZXI6IGl0IGlzIGNhbGxlZCBpbW1lZGlhdGx5IGlmIHdlIHVzZQorICAgICAgIHNpZ2FjdGlvbigpIHRoYW5rcyB0byBTQV9OT0RFRkVSIGZsYWcsIG90aGVyd2lzZSBpdCBpcyBkZWZlcnJlZCAqLworICAgIHJhaXNlKHNpZ251bSk7Cit9CisKKy8qIEluc3RhbGwgdGhlIGhhbmRsZXIgZm9yIGZhdGFsIHNpZ25hbHMsIGZhdWx0aGFuZGxlcl9mYXRhbF9lcnJvcigpLiAqLworCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfZW5hYmxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpbGUiLCAiYWxsX3RocmVhZHMiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7CisgICAgaW50IGFsbF90aHJlYWRzID0gMTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBmYXVsdF9oYW5kbGVyX3QgKmhhbmRsZXI7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdGlvbjsKKyNlbmRpZgorICAgIGludCBlcnI7CisgICAgaW50IGZkOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgInxPaTplbmFibGUiLCBrd2xpc3QsICZmaWxlLCAmYWxsX3RocmVhZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGZpbGUgPSBmYXVsdGhhbmRsZXJfZ2V0X2ZpbGVubyhmaWxlLCAmZmQpOworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9YREVDUkVGKGZhdGFsX2Vycm9yLmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICBmYXRhbF9lcnJvci5maWxlID0gZmlsZTsKKyAgICBmYXRhbF9lcnJvci5mZCA9IGZkOworICAgIGZhdGFsX2Vycm9yLmFsbF90aHJlYWRzID0gYWxsX3RocmVhZHM7CisgICAgZmF0YWxfZXJyb3IuaW50ZXJwID0gdHN0YXRlLT5pbnRlcnA7CisKKyAgICBpZiAoIWZhdGFsX2Vycm9yLmVuYWJsZWQpIHsKKyAgICAgICAgZmF0YWxfZXJyb3IuZW5hYmxlZCA9IDE7CisKKyAgICAgICAgZm9yIChpPTA7IGkgPCBmYXVsdGhhbmRsZXJfbnNpZ25hbHM7IGkrKykgeworICAgICAgICAgICAgaGFuZGxlciA9ICZmYXVsdGhhbmRsZXJfaGFuZGxlcnNbaV07CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAgICAgICAgIGFjdGlvbi5zYV9oYW5kbGVyID0gZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yOworICAgICAgICAgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAgICAgICAgIC8qIERvIG5vdCBwcmV2ZW50IHRoZSBzaWduYWwgZnJvbSBiZWluZyByZWNlaXZlZCBmcm9tIHdpdGhpbgorICAgICAgICAgICAgICAgaXRzIG93biBzaWduYWwgaGFuZGxlciAqLworICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzID0gU0FfTk9ERUZFUjsKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgICAgICAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qIENhbGwgdGhlIHNpZ25hbCBoYW5kbGVyIG9uIGFuIGFsdGVybmF0ZSBzaWduYWwgc3RhY2sKKyAgICAgICAgICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCisgICAgICAgICAgICAgICAgYWN0aW9uLnNhX2ZsYWdzIHw9IFNBX09OU1RBQ0s7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIGVyciA9IHNpZ2FjdGlvbihoYW5kbGVyLT5zaWdudW0sICZhY3Rpb24sICZoYW5kbGVyLT5wcmV2aW91cyk7CisjZWxzZQorICAgICAgICAgICAgaGFuZGxlci0+cHJldmlvdXMgPSBzaWduYWwoaGFuZGxlci0+c2lnbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKTsKKyAgICAgICAgICAgIGVyciA9IChoYW5kbGVyLT5wcmV2aW91cyA9PSBTSUdfRVJSKTsKKyNlbmRpZgorICAgICAgICAgICAgaWYgKGVycikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFuZGxlci0+ZW5hYmxlZCA9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfZGlzYWJsZSh2b2lkKQoreworICAgIHVuc2lnbmVkIGludCBpOworICAgIGZhdWx0X2hhbmRsZXJfdCAqaGFuZGxlcjsKKworICAgIGlmIChmYXRhbF9lcnJvci5lbmFibGVkKSB7CisgICAgICAgIGZhdGFsX2Vycm9yLmVuYWJsZWQgPSAwOworICAgICAgICBmb3IgKGk9MDsgaSA8IGZhdWx0aGFuZGxlcl9uc2lnbmFsczsgaSsrKSB7CisgICAgICAgICAgICBoYW5kbGVyID0gJmZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXTsKKyAgICAgICAgICAgIGlmICghaGFuZGxlci0+ZW5hYmxlZCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgICAgICAgICAgKHZvaWQpc2lnYWN0aW9uKGhhbmRsZXItPnNpZ251bSwgJmhhbmRsZXItPnByZXZpb3VzLCBOVUxMKTsKKyNlbHNlCisgICAgICAgICAgICAodm9pZClzaWduYWwoaGFuZGxlci0+c2lnbnVtLCBoYW5kbGVyLT5wcmV2aW91cyk7CisjZW5kaWYKKyAgICAgICAgICAgIGhhbmRsZXItPmVuYWJsZWQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfQ0xFQVIoZmF0YWxfZXJyb3IuZmlsZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2ZhdWx0aGFuZGxlcl9kaXNhYmxlX3B5KFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmICghZmF0YWxfZXJyb3IuZW5hYmxlZCkgeworICAgICAgICBQeV9JTkNSRUYoUHlfRmFsc2UpOworICAgICAgICByZXR1cm4gUHlfRmFsc2U7CisgICAgfQorICAgIGZhdWx0aGFuZGxlcl9kaXNhYmxlKCk7CisgICAgUHlfSU5DUkVGKFB5X1RydWUpOworICAgIHJldHVybiBQeV9UcnVlOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfaXNfZW5hYmxlZChQeU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKGZhdGFsX2Vycm9yLmVuYWJsZWQpOworfQorCisjaWZkZWYgRkFVTFRIQU5ETEVSX0xBVEVSCisKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfdGhyZWFkKHZvaWQgKnVudXNlZCkKK3sKKyAgICBQeUxvY2tTdGF0dXMgc3Q7CisgICAgY29uc3QgY2hhciogZXJybXNnOworICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnQ7CisgICAgaW50IG9rOworI2lmIGRlZmluZWQoSEFWRV9QVEhSRUFEX1NJR01BU0spICYmICFkZWZpbmVkKEhBVkVfQlJPS0VOX1BUSFJFQURfU0lHTUFTSykKKyAgICBzaWdzZXRfdCBzZXQ7CisKKyAgICAvKiB3ZSBkb24ndCB3YW50IHRvIHJlY2VpdmUgYW55IHNpZ25hbCAqLworICAgIHNpZ2ZpbGxzZXQoJnNldCk7CisgICAgcHRocmVhZF9zaWdtYXNrKFNJR19TRVRNQVNLLCAmc2V0LCBOVUxMKTsKKyNlbmRpZgorCisgICAgZG8geworICAgICAgICBzdCA9IFB5VGhyZWFkX2FjcXVpcmVfbG9ja190aW1lZCh0aHJlYWQuY2FuY2VsX2V2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQudGltZW91dF91cywgMCk7CisgICAgICAgIGlmIChzdCA9PSBQWV9MT0NLX0FDUVVJUkVEKSB7CisgICAgICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLmNhbmNlbF9ldmVudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAvKiBUaW1lb3V0ID0+IGR1bXAgdHJhY2ViYWNrICovCisgICAgICAgIGFzc2VydChzdCA9PSBQWV9MT0NLX0ZBSUxVUkUpOworCisgICAgICAgIC8qIGdldCB0aGUgdGhyZWFkIGhvbGRpbmcgdGhlIEdJTCwgTlVMTCBpZiBubyB0aHJlYWQgaG9sZCB0aGUgR0lMICovCisgICAgICAgIGN1cnJlbnQgPSBfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCk7CisKKyAgICAgICAgd3JpdGUodGhyZWFkLmZkLCB0aHJlYWQuaGVhZGVyLCB0aHJlYWQuaGVhZGVyX2xlbik7CisKKyAgICAgICAgZXJybXNnID0gX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKHRocmVhZC5mZCwgdGhyZWFkLmludGVycCwgY3VycmVudCk7CisgICAgICAgIG9rID0gKGVycm1zZyA9PSBOVUxMKTsKKworICAgICAgICBpZiAodGhyZWFkLmV4aXQpCisgICAgICAgICAgICBfZXhpdCgxKTsKKyAgICB9IHdoaWxlIChvayAmJiB0aHJlYWQucmVwZWF0KTsKKworICAgIC8qIFRoZSBvbmx5IHdheSBvdXQgKi8KKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLnJ1bm5pbmcpOworfQorCitzdGF0aWMgdm9pZAorY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKHZvaWQpCit7CisgICAgLyogTm90aWZ5IGNhbmNlbGxhdGlvbiAqLworICAgIFB5VGhyZWFkX3JlbGVhc2VfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKworICAgIC8qIFdhaXQgZm9yIHRocmVhZCB0byBqb2luICovCisgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKHRocmVhZC5ydW5uaW5nLCAxKTsKKyAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLnJ1bm5pbmcpOworCisgICAgLyogVGhlIG1haW4gdGhyZWFkIHNob3VsZCBhbHdheXMgaG9sZCB0aGUgY2FuY2VsX2V2ZW50IGxvY2sgKi8KKyAgICBQeVRocmVhZF9hY3F1aXJlX2xvY2sodGhyZWFkLmNhbmNlbF9ldmVudCwgMSk7CisKKyAgICBQeV9DTEVBUih0aHJlYWQuZmlsZSk7CisgICAgaWYgKHRocmVhZC5oZWFkZXIpIHsKKyAgICAgICAgZnJlZSh0aHJlYWQuaGVhZGVyKTsKKyAgICAgICAgdGhyZWFkLmhlYWRlciA9IE5VTEw7CisgICAgfQorfQorCitzdGF0aWMgY2hhcioKK2Zvcm1hdF90aW1lb3V0KGRvdWJsZSB0aW1lb3V0KQoreworICAgIHVuc2lnbmVkIGxvbmcgdXMsIHNlYywgbWluLCBob3VyOworICAgIGRvdWJsZSBpbnRwYXJ0LCBmcmFjcGFydDsKKyAgICBjaGFyIGJ1ZmZlclsxMDBdOworCisgICAgZnJhY3BhcnQgPSBtb2RmKHRpbWVvdXQsICZpbnRwYXJ0KTsKKyAgICBzZWMgPSAodW5zaWduZWQgbG9uZylpbnRwYXJ0OworICAgIHVzID0gKHVuc2lnbmVkIGxvbmcpKGZyYWNwYXJ0ICogMWU2KTsKKyAgICBtaW4gPSBzZWMgLyA2MDsKKyAgICBzZWMgJT0gNjA7CisgICAgaG91ciA9IG1pbiAvIDYwOworICAgIG1pbiAlPSA2MDsKKworICAgIGlmICh1cyAhPSAwKQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgKCVsdTolMDJsdTolMDJsdS4lMDZsdSkhXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbiwgc2VjLCB1cyk7CisgICAgZWxzZQorICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgIlRpbWVvdXQgKCVsdTolMDJsdTolMDJsdSkhXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGhvdXIsIG1pbiwgc2VjKTsKKworICAgIHJldHVybiBzdHJkdXAoYnVmZmVyKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2R1bXBfdHJhY2ViYWNrX2xhdGVyKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InRpbWVvdXQiLCAicmVwZWF0IiwgImZpbGUiLCAiZXhpdCIsIE5VTEx9OworICAgIGRvdWJsZSB0aW1lb3V0OworICAgIFBZX1RJTUVPVVRfVCB0aW1lb3V0X3VzOworICAgIGludCByZXBlYXQgPSAwOworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKyAgICBpbnQgZmQ7CisgICAgaW50IGV4aXQgPSAwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBjaGFyICpoZWFkZXI7CisgICAgc2l6ZV90IGhlYWRlcl9sZW47CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsCisgICAgICAgICJkfGlPaTpkdW1wX3RyYWNlYmFja19sYXRlciIsIGt3bGlzdCwKKyAgICAgICAgJnRpbWVvdXQsICZyZXBlYXQsICZmaWxlLCAmZXhpdCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICgodGltZW91dCAqIDFlNikgPj0gKGRvdWJsZSkgUFlfVElNRU9VVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICAidGltZW91dCB2YWx1ZSBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHRpbWVvdXRfdXMgPSAoUFlfVElNRU9VVF9UKSh0aW1lb3V0ICogMWU2KTsKKyAgICBpZiAodGltZW91dF91cyA8PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHRzdGF0ZSA9IGdldF90aHJlYWRfc3RhdGUoKTsKKyAgICBpZiAodHN0YXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZmlsZSA9IGZhdWx0aGFuZGxlcl9nZXRfZmlsZW5vKGZpbGUsICZmZCk7CisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBmb3JtYXQgdGhlIHRpbWVvdXQgKi8KKyAgICBoZWFkZXIgPSBmb3JtYXRfdGltZW91dCh0aW1lb3V0KTsKKyAgICBpZiAoaGVhZGVyID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIGhlYWRlcl9sZW4gPSBzdHJsZW4oaGVhZGVyKTsKKworICAgIC8qIENhbmNlbCBwcmV2aW91cyB0aHJlYWQsIGlmIHJ1bm5pbmcgKi8KKyAgICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKTsKKworICAgIFB5X1hERUNSRUYodGhyZWFkLmZpbGUpOworICAgIFB5X0lOQ1JFRihmaWxlKTsKKyAgICB0aHJlYWQuZmlsZSA9IGZpbGU7CisgICAgdGhyZWFkLmZkID0gZmQ7CisgICAgdGhyZWFkLnRpbWVvdXRfdXMgPSB0aW1lb3V0X3VzOworICAgIHRocmVhZC5yZXBlYXQgPSByZXBlYXQ7CisgICAgdGhyZWFkLmludGVycCA9IHRzdGF0ZS0+aW50ZXJwOworICAgIHRocmVhZC5leGl0ID0gZXhpdDsKKyAgICB0aHJlYWQuaGVhZGVyID0gaGVhZGVyOworICAgIHRocmVhZC5oZWFkZXJfbGVuID0gaGVhZGVyX2xlbjsKKworICAgIC8qIEFybSB0aGVzZSBsb2NrcyB0byBzZXJ2ZSBhcyBldmVudHMgd2hlbiByZWxlYXNlZCAqLworICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQucnVubmluZywgMSk7CisKKyAgICBpZiAoUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZChmYXVsdGhhbmRsZXJfdGhyZWFkLCBOVUxMKSA9PSAtMSkgeworICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLnJ1bm5pbmcpOworICAgICAgICBQeV9DTEVBUih0aHJlYWQuZmlsZSk7CisgICAgICAgIGZyZWUoaGVhZGVyKTsKKyAgICAgICAgdGhyZWFkLmhlYWRlciA9IE5VTEw7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIHN0YXJ0IHdhdGNoZG9nIHRocmVhZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX2NhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcl9weShQeU9iamVjdCAqc2VsZikKK3sKKyAgICBjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAgLyogRkFVTFRIQU5ETEVSX0xBVEVSICovCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorc3RhdGljIGludAorZmF1bHRoYW5kbGVyX3JlZ2lzdGVyKGludCBzaWdudW0sIGludCBjaGFpbiwgX1B5X3NpZ2hhbmRsZXJfdCAqcF9wcmV2aW91cykKK3sKKyNpZmRlZiBIQVZFX1NJR0FDVElPTgorICAgIHN0cnVjdCBzaWdhY3Rpb24gYWN0aW9uOworICAgIGFjdGlvbi5zYV9oYW5kbGVyID0gZmF1bHRoYW5kbGVyX3VzZXI7CisgICAgc2lnZW1wdHlzZXQoJmFjdGlvbi5zYV9tYXNrKTsKKyAgICAvKiBpZiB0aGUgc2lnbmFsIGlzIHJlY2VpdmVkIHdoaWxlIHRoZSBrZXJuZWwgaXMgZXhlY3V0aW5nIGEgc3lzdGVtCisgICAgICAgY2FsbCwgdHJ5IHRvIHJlc3RhcnQgdGhlIHN5c3RlbSBjYWxsIGluc3RlYWQgb2YgaW50ZXJydXB0aW5nIGl0IGFuZAorICAgICAgIHJldHVybiBFSU5UUi4gKi8KKyAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9SRVNUQVJUOworICAgIGlmIChjaGFpbikgeworICAgICAgICAvKiBkbyBub3QgcHJldmVudCB0aGUgc2lnbmFsIGZyb20gYmVpbmcgcmVjZWl2ZWQgZnJvbSB3aXRoaW4gaXRzCisgICAgICAgICAgIG93biBzaWduYWwgaGFuZGxlciAqLworICAgICAgICBhY3Rpb24uc2FfZmxhZ3MgPSBTQV9OT0RFRkVSOworICAgIH0KKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgaWYgKHN0YWNrLnNzX3NwICE9IE5VTEwpIHsKKyAgICAgICAgLyogQ2FsbCB0aGUgc2lnbmFsIGhhbmRsZXIgb24gYW4gYWx0ZXJuYXRlIHNpZ25hbCBzdGFjaworICAgICAgICAgICBwcm92aWRlZCBieSBzaWdhbHRzdGFjaygpICovCisgICAgICAgIGFjdGlvbi5zYV9mbGFncyB8PSBTQV9PTlNUQUNLOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBzaWdhY3Rpb24oc2lnbnVtLCAmYWN0aW9uLCBwX3ByZXZpb3VzKTsKKyNlbHNlCisgICAgX1B5X3NpZ2hhbmRsZXJfdCBwcmV2aW91czsKKyAgICBwcmV2aW91cyA9IHNpZ25hbChzaWdudW0sIGZhdWx0aGFuZGxlcl91c2VyKTsKKyAgICBpZiAocF9wcmV2aW91cyAhPSBOVUxMKQorICAgICAgICAqcF9wcmV2aW91cyA9IHByZXZpb3VzOworICAgIHJldHVybiAocHJldmlvdXMgPT0gU0lHX0VSUik7CisjZW5kaWYKK30KKworLyogSGFuZGxlciBvZiB1c2VyIHNpZ25hbHMgKGUuZy4gU0lHVVNSMSkuCisKKyAgIER1bXAgdGhlIHRyYWNlYmFjayBvZiB0aGUgY3VycmVudCB0aHJlYWQsIG9yIG9mIGFsbCB0aHJlYWRzIGlmCisgICB0aHJlYWQuYWxsX3RocmVhZHMgaXMgdHJ1ZS4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZSBhbmQgc2hvdWxkIG9ubHkgY2FsbCBzaWduYWwgc2FmZSBmdW5jdGlvbnMuICovCisKK3N0YXRpYyB2b2lkCitmYXVsdGhhbmRsZXJfdXNlcihpbnQgc2lnbnVtKQoreworICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87CisKKyAgICB1c2VyID0gJnVzZXJfc2lnbmFsc1tzaWdudW1dOworICAgIGlmICghdXNlci0+ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgdGhyZWFkIGlmCisgICAgICAgdGhlIHRocmVhZCBkb2Vzbid0IGhvbGQgdGhlIEdJTC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykKKyAgICAgICBpbnN0ZWFkOiBjYWxsIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCkuICovCisgICAgdHN0YXRlID0gUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUoKTsKKyNlbHNlCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HZXQoKTsKKyNlbmRpZgorCisgICAgaWYgKHVzZXItPmFsbF90aHJlYWRzKQorICAgICAgICBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHModXNlci0+ZmQsIHVzZXItPmludGVycCwgdHN0YXRlKTsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHRzdGF0ZSAhPSBOVUxMKQorICAgICAgICAgICAgX1B5X0R1bXBUcmFjZWJhY2sodXNlci0+ZmQsIHRzdGF0ZSk7CisgICAgfQorI2lmZGVmIEhBVkVfU0lHQUNUSU9OCisgICAgaWYgKHVzZXItPmNoYWluKSB7CisgICAgICAgICh2b2lkKXNpZ2FjdGlvbihzaWdudW0sICZ1c2VyLT5wcmV2aW91cywgTlVMTCk7CisgICAgICAgIGVycm5vID0gc2F2ZV9lcnJubzsKKworICAgICAgICAvKiBjYWxsIHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlciAqLworICAgICAgICByYWlzZShzaWdudW0pOworCisgICAgICAgIHNhdmVfZXJybm8gPSBlcnJubzsKKyAgICAgICAgKHZvaWQpZmF1bHRoYW5kbGVyX3JlZ2lzdGVyKHNpZ251bSwgdXNlci0+Y2hhaW4sIE5VTEwpOworICAgICAgICBlcnJubyA9IHNhdmVfZXJybm87CisgICAgfQorI2Vsc2UKKyAgICBpZiAodXNlci0+Y2hhaW4pIHsKKyAgICAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworICAgICAgICAvKiBjYWxsIHRoZSBwcmV2aW91cyBzaWduYWwgaGFuZGxlciAqLworICAgICAgICB1c2VyLT5wcmV2aW91cyhzaWdudW0pOworICAgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitjaGVja19zaWdudW0oaW50IHNpZ251bSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAgIGZvciAoaT0wOyBpIDwgZmF1bHRoYW5kbGVyX25zaWduYWxzOyBpKyspIHsKKyAgICAgICAgaWYgKGZhdWx0aGFuZGxlcl9oYW5kbGVyc1tpXS5zaWdudW0gPT0gc2lnbnVtKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgJWkgY2Fubm90IGJlIHJlZ2lzdGVyZWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidXNlIGVuYWJsZSgpIGluc3RlYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ251bSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2lnbnVtIDwgMSB8fCBOU0lHIDw9IHNpZ251bSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInNpZ25hbCBudW1iZXIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorZmF1bHRoYW5kbGVyX3JlZ2lzdGVyX3B5KFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2lnbnVtIiwgImZpbGUiLCAiYWxsX3RocmVhZHMiLCAiY2hhaW4iLCBOVUxMfTsKKyAgICBpbnQgc2lnbnVtOworICAgIFB5T2JqZWN0ICpmaWxlID0gTlVMTDsKKyAgICBpbnQgYWxsX3RocmVhZHMgPSAxOworICAgIGludCBjaGFpbiA9IDA7CisgICAgaW50IGZkOworICAgIHVzZXJfc2lnbmFsX3QgKnVzZXI7CisgICAgX1B5X3NpZ2hhbmRsZXJfdCBwcmV2aW91czsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywKKyAgICAgICAgIml8T2lpOnJlZ2lzdGVyIiwga3dsaXN0LAorICAgICAgICAmc2lnbnVtLCAmZmlsZSwgJmFsbF90aHJlYWRzLCAmY2hhaW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghY2hlY2tfc2lnbnVtKHNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdHN0YXRlID0gZ2V0X3RocmVhZF9zdGF0ZSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmaWxlID0gZmF1bHRoYW5kbGVyX2dldF9maWxlbm8oZmlsZSwgJmZkKTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh1c2VyX3NpZ25hbHMgPT0gTlVMTCkgeworICAgICAgICB1c2VyX3NpZ25hbHMgPSBjYWxsb2MoTlNJRywgc2l6ZW9mKHVzZXJfc2lnbmFsX3QpKTsKKyAgICAgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorICAgIHVzZXIgPSAmdXNlcl9zaWduYWxzW3NpZ251bV07CisKKyAgICBpZiAoIXVzZXItPmVuYWJsZWQpIHsKKyAgICAgICAgZXJyID0gZmF1bHRoYW5kbGVyX3JlZ2lzdGVyKHNpZ251bSwgY2hhaW4sICZwcmV2aW91cyk7CisgICAgICAgIGlmIChlcnIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgUHlfWERFQ1JFRih1c2VyLT5maWxlKTsKKyAgICBQeV9JTkNSRUYoZmlsZSk7CisgICAgdXNlci0+ZmlsZSA9IGZpbGU7CisgICAgdXNlci0+ZmQgPSBmZDsKKyAgICB1c2VyLT5hbGxfdGhyZWFkcyA9IGFsbF90aHJlYWRzOworICAgIHVzZXItPmNoYWluID0gY2hhaW47CisgICAgdXNlci0+cHJldmlvdXMgPSBwcmV2aW91czsKKyAgICB1c2VyLT5pbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKyAgICB1c2VyLT5lbmFibGVkID0gMTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfdW5yZWdpc3Rlcih1c2VyX3NpZ25hbF90ICp1c2VyLCBpbnQgc2lnbnVtKQoreworICAgIGlmICghdXNlci0+ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgdXNlci0+ZW5hYmxlZCA9IDA7CisjaWZkZWYgSEFWRV9TSUdBQ1RJT04KKyAgICAodm9pZClzaWdhY3Rpb24oc2lnbnVtLCAmdXNlci0+cHJldmlvdXMsIE5VTEwpOworI2Vsc2UKKyAgICAodm9pZClzaWduYWwoc2lnbnVtLCB1c2VyLT5wcmV2aW91cyk7CisjZW5kaWYKKyAgICBQeV9DTEVBUih1c2VyLT5maWxlKTsKKyAgICB1c2VyLT5mZCA9IC0xOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlPYmplY3QqCitmYXVsdGhhbmRsZXJfdW5yZWdpc3Rlcl9weShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHNpZ251bTsKKyAgICB1c2VyX3NpZ25hbF90ICp1c2VyOworICAgIGludCBjaGFuZ2U7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6dW5yZWdpc3RlciIsICZzaWdudW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghY2hlY2tfc2lnbnVtKHNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHVzZXJfc2lnbmFscyA9PSBOVUxMKQorICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisKKyAgICB1c2VyID0gJnVzZXJfc2lnbmFsc1tzaWdudW1dOworICAgIGNoYW5nZSA9IGZhdWx0aGFuZGxlcl91bnJlZ2lzdGVyKHVzZXIsIHNpZ251bSk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhjaGFuZ2UpOworfQorI2VuZGlmICAgLyogRkFVTFRIQU5ETEVSX1VTRVIgKi8KKworCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3JlYWRfbnVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdm9sYXRpbGUgaW50ICp4OworICAgIHZvbGF0aWxlIGludCB5OworICAgIGludCByZWxlYXNlX2dpbCA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfcmVhZF9udWxsIiwgJnJlbGVhc2VfZ2lsKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB4ID0gTlVMTDsKKyAgICBpZiAocmVsZWFzZV9naWwpIHsKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICB5ID0gKng7CisgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgfSBlbHNlCisgICAgICAgIHkgPSAqeDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHkpOworCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnc2VndihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIC8qIEZvciBTSUdTRUdWLCBmYXVsdGhhbmRsZXJfZmF0YWxfZXJyb3IoKSByZXN0b3JlcyB0aGUgcHJldmlvdXMgc2lnbmFsCisgICAgICAgaGFuZGxlciBhbmQgdGhlbiBnaXZlcyBiYWNrIHRoZSBleGVjdXRpb24gZmxvdyB0byB0aGUgcHJvZ3JhbSAod2l0aG91dAorICAgICAgIGV4cGxpY2l0bHkgY2FsbGluZyB0aGUgcHJldmlvdXMgZXJyb3IgaGFuZGxlcikuIEluIGEgbm9ybWFsIGNhc2UsIHRoZQorICAgICAgIFNJR1NFR1Ygd2FzIHJhaXNlZCBieSB0aGUga2VybmVsIGJlY2F1c2Ugb2YgYSBmYXVsdCwgYW5kIHNvIGlmIHRoZQorICAgICAgIHByb2dyYW0gcmV0cmllcyB0byBleGVjdXRlIHRoZSBzYW1lIGluc3RydWN0aW9uLCB0aGUgZmF1bHQgd2lsbCBiZQorICAgICAgIHJhaXNlZCBhZ2Fpbi4KKworICAgICAgIEhlcmUgdGhlIGZhdWx0IGlzIHNpbXVsYXRlZCBieSBhIGZha2UgU0lHU0VHViBzaWduYWwgcmFpc2VkIGJ5IHRoZQorICAgICAgIGFwcGxpY2F0aW9uLiBXZSBoYXZlIHRvIHJhaXNlIFNJR1NFR1YgYXQgbGVhc2UgdHdpY2U6IG9uY2UgZm9yCisgICAgICAgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yKCksIGFuZCBvbmUgbW9yZSB0aW1lIGZvciB0aGUgcHJldmlvdXMgc2lnbmFsCisgICAgICAgaGFuZGxlci4gKi8KKyAgICB3aGlsZSgxKQorICAgICAgICByYWlzZShTSUdTRUdWKTsKKyNlbHNlCisgICAgcmFpc2UoU0lHU0VHVik7CisjZW5kaWYKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zaWdmcGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIC8qIERvIGFuIGludGVnZXIgZGl2aXNpb24gYnkgemVybzogcmFpc2UgYSBTSUdGUEUgb24gSW50ZWwgQ1BVLCBidXQgbm90IG9uCisgICAgICAgUG93ZXJQQy4gVXNlIHZvbGF0aWxlIHRvIGRpc2FibGUgY29tcGlsZS10aW1lIG9wdGltaXphdGlvbnMuICovCisgICAgdm9sYXRpbGUgaW50IHggPSAxLCB5ID0gMCwgejsKKyAgICB6ID0geCAvIHk7CisgICAgLyogSWYgdGhlIGRpdmlzaW9uIGJ5IHplcm8gZGlkbid0IHJhaXNlIGEgU0lHRlBFIChlLmcuIG9uIFBvd2VyUEMpLAorICAgICAgIHJhaXNlIGl0IG1hbnVhbGx5LiAqLworICAgIHJhaXNlKFNJR0ZQRSk7CisgICAgLyogVGhpcyBsaW5lIGlzIG5ldmVyIHJlYWNoZWQsIGJ1dCB3ZSBwcmV0ZW5kIHRvIG1ha2Ugc29tZXRoaW5nIHdpdGggegorICAgICAgIHRvIHNpbGVuY2UgYSBjb21waWxlciB3YXJuaW5nLiAqLworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmYXVsdGhhbmRsZXJfc2lnYWJydChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisjaWZkZWYgX01TQ19WRVIKKyAgICAvKiBWaXN1YWwgU3R1ZGlvOiBjb25maWd1cmUgYWJvcnQoKSB0byBub3QgZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlIG5vcgorICAgICAgIG9wZW4gYSBwb3B1cCBhc2tpbmcgdG8gcmVwb3J0IHRoZSBmYXVsdC4gKi8KKyAgICBfc2V0X2Fib3J0X2JlaGF2aW9yKDAsIF9XUklURV9BQk9SVF9NU0cgfCBfQ0FMTF9SRVBPUlRGQVVMVCk7CisjZW5kaWYKKyAgICBhYm9ydCgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWZkZWYgU0lHQlVTCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3NpZ2J1cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmFpc2UoU0lHQlVTKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCisjaWZkZWYgU0lHSUxMCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX3NpZ2lsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmFpc2UoU0lHSUxMKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgorCitzdGF0aWMgUHlPYmplY3QgKgorZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBjaGFyICptZXNzYWdlOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieTpmYXRhbF9lcnJvciIsICZtZXNzYWdlKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfRmF0YWxFcnJvcihtZXNzYWdlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2lmIGRlZmluZWQoSEFWRV9TSUdBTFRTVEFDSykgJiYgZGVmaW5lZChIQVZFX1NJR0FDVElPTikKK3N0YXRpYyB2b2lkKgorc3RhY2tfb3ZlcmZsb3codm9pZCAqbWluX3NwLCB2b2lkICptYXhfc3AsIHNpemVfdCAqZGVwdGgpCit7CisgICAgLyogYWxsb2NhdGUgNDA5NiBieXRlcyBvbiB0aGUgc3RhY2sgYXQgZWFjaCBjYWxsICovCisgICAgdW5zaWduZWQgY2hhciBidWZmZXJbNDA5Nl07CisgICAgdm9pZCAqc3AgPSAmYnVmZmVyOworICAgICpkZXB0aCArPSAxOworICAgIGlmIChzcCA8IG1pbl9zcCB8fCBtYXhfc3AgPCBzcCkKKyAgICAgICAgcmV0dXJuIHNwOworICAgIGJ1ZmZlclswXSA9IDE7CisgICAgYnVmZmVyWzQwOTVdID0gMDsKKyAgICByZXR1cm4gc3RhY2tfb3ZlcmZsb3cobWluX3NwLCBtYXhfc3AsIGRlcHRoKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2ZhdWx0aGFuZGxlcl9zdGFja19vdmVyZmxvdyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBzaXplX3QgZGVwdGgsIHNpemU7CisgICAgY2hhciAqc3AgPSAoY2hhciAqKSZkZXB0aCwgKnN0b3A7CisKKyAgICBkZXB0aCA9IDA7CisgICAgc3RvcCA9IHN0YWNrX292ZXJmbG93KHNwIC0gU1RBQ0tfT1ZFUkZMT1dfTUFYX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNwICsgU1RBQ0tfT1ZFUkZMT1dfTUFYX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZkZXB0aCk7CisgICAgaWYgKHNwIDwgc3RvcCkKKyAgICAgICAgc2l6ZSA9IHN0b3AgLSBzcDsKKyAgICBlbHNlCisgICAgICAgIHNpemUgPSBzcCAtIHN0b3A7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgInVuYWJsZSB0byByYWlzZSBhIHN0YWNrIG92ZXJmbG93IChhbGxvY2F0ZWQgJXp1IGJ5dGVzICIKKyAgICAgICAgIm9uIHRoZSBzdGFjaywgJXp1IHJlY3Vyc2l2ZSBjYWxscykiLAorICAgICAgICBzaXplLCBkZXB0aCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworCitzdGF0aWMgaW50CitmYXVsdGhhbmRsZXJfdHJhdmVyc2UoUHlPYmplY3QgKm1vZHVsZSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisjaWZkZWYgRkFVTFRIQU5ETEVSX1VTRVIKKyAgICB1bnNpZ25lZCBpbnQgc2lnbnVtOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICBQeV9WSVNJVCh0aHJlYWQuZmlsZSk7CisjZW5kaWYKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIGlmICh1c2VyX3NpZ25hbHMgIT0gTlVMTCkgeworICAgICAgICBmb3IgKHNpZ251bT0wOyBzaWdudW0gPCBOU0lHOyBzaWdudW0rKykKKyAgICAgICAgICAgIFB5X1ZJU0lUKHVzZXJfc2lnbmFsc1tzaWdudW1dLmZpbGUpOworICAgIH0KKyNlbmRpZgorICAgIFB5X1ZJU0lUKGZhdGFsX2Vycm9yLmZpbGUpOworICAgIHJldHVybiAwOworfQorCitQeURvY19TVFJWQVIobW9kdWxlX2RvYywKKyJmYXVsdGhhbmRsZXIgbW9kdWxlLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKKyAgICB7ImVuYWJsZSIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZW5hYmxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJlbmFibGUoZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlKTogIgorICAgICAgICAgICAgICAgImVuYWJsZSB0aGUgZmF1bHQgaGFuZGxlciIpfSwKKyAgICB7ImRpc2FibGUiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2Rpc2FibGVfcHksIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoImRpc2FibGUoKTogZGlzYWJsZSB0aGUgZmF1bHQgaGFuZGxlciIpfSwKKyAgICB7ImlzX2VuYWJsZWQiLCAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2lzX2VuYWJsZWQsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoImlzX2VuYWJsZWQoKS0+Ym9vbDogY2hlY2sgaWYgdGhlIGhhbmRsZXIgaXMgZW5hYmxlZCIpfSwKKyAgICB7ImR1bXBfdHJhY2ViYWNrIiwKKyAgICAgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9kdW1wX3RyYWNlYmFja19weSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsCisgICAgIFB5RG9jX1NUUigiZHVtcF90cmFjZWJhY2soZmlsZT1zeXMuc3RkZXJyLCBhbGxfdGhyZWFkcz1UcnVlKTogIgorICAgICAgICAgICAgICAgImR1bXAgdGhlIHRyYWNlYmFjayBvZiB0aGUgY3VycmVudCB0aHJlYWQsIG9yIG9mIGFsbCB0aHJlYWRzICIKKyAgICAgICAgICAgICAgICJpZiBhbGxfdGhyZWFkcyBpcyBUcnVlLCBpbnRvIGZpbGUiKX0sCisjaWZkZWYgRkFVTFRIQU5ETEVSX0xBVEVSCisgICAgeyJkdW1wX3RyYWNlYmFja19sYXRlciIsCisgICAgIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfZHVtcF90cmFjZWJhY2tfbGF0ZXIsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoImR1bXBfdHJhY2ViYWNrX2xhdGVyKHRpbWVvdXQsIHJlcGVhdD1GYWxzZSwgZmlsZT1zeXMuc3RkZXJybiwgZXhpdD1GYWxzZSk6XG4iCisgICAgICAgICAgICAgICAiZHVtcCB0aGUgdHJhY2ViYWNrIG9mIGFsbCB0aHJlYWRzIGluIHRpbWVvdXQgc2Vjb25kcyxcbiIKKyAgICAgICAgICAgICAgICJvciBlYWNoIHRpbWVvdXQgc2Vjb25kcyBpZiByZXBlYXQgaXMgVHJ1ZS4gSWYgZXhpdCBpcyBUcnVlLCAiCisgICAgICAgICAgICAgICAiY2FsbCBfZXhpdCgxKSB3aGljaCBpcyBub3Qgc2FmZS4iKX0sCisgICAgeyJjYW5jZWxfZHVtcF90cmFjZWJhY2tfbGF0ZXIiLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX2NhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcl9weSwgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiY2FuY2VsX2R1bXBfdHJhY2ViYWNrX2xhdGVyKCk6XG5jYW5jZWwgdGhlIHByZXZpb3VzIGNhbGwgIgorICAgICAgICAgICAgICAgInRvIGR1bXBfdHJhY2ViYWNrX2xhdGVyKCkuIil9LAorI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIHsicmVnaXN0ZXIiLAorICAgICAoUHlDRnVuY3Rpb24pZmF1bHRoYW5kbGVyX3JlZ2lzdGVyX3B5LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKKyAgICAgUHlEb2NfU1RSKCJyZWdpc3RlcihzaWdudW0sIGZpbGU9c3lzLnN0ZGVyciwgYWxsX3RocmVhZHM9VHJ1ZSwgY2hhaW49RmFsc2UpOiAiCisgICAgICAgICAgICAgICAicmVnaXN0ZXIgYW4gaGFuZGxlciBmb3IgdGhlIHNpZ25hbCAnc2lnbnVtJzogZHVtcCB0aGUgIgorICAgICAgICAgICAgICAgInRyYWNlYmFjayBvZiB0aGUgY3VycmVudCB0aHJlYWQsIG9yIG9mIGFsbCB0aHJlYWRzIGlmICIKKyAgICAgICAgICAgICAgICJhbGxfdGhyZWFkcyBpcyBUcnVlLCBpbnRvIGZpbGUiKX0sCisgICAgeyJ1bnJlZ2lzdGVyIiwKKyAgICAgZmF1bHRoYW5kbGVyX3VucmVnaXN0ZXJfcHksIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAorICAgICBQeURvY19TVFIoInVucmVnaXN0ZXIoc2lnbnVtKTogdW5yZWdpc3RlciB0aGUgaGFuZGxlciBvZiB0aGUgc2lnbmFsICIKKyAgICAgICAgICAgICAgICAiJ3NpZ251bScgcmVnaXN0ZXJlZCBieSByZWdpc3RlcigpIil9LAorI2VuZGlmCisKKyAgICB7Il9yZWFkX251bGwiLCBmYXVsdGhhbmRsZXJfcmVhZF9udWxsLCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX3JlYWRfbnVsbChyZWxlYXNlX2dpbD1GYWxzZSk6IHJlYWQgZnJvbSBOVUxMLCByYWlzZSAiCisgICAgICAgICAgICAgICAiYSBTSUdTRUdWIG9yIFNJR0JVUyBzaWduYWwgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSIpfSwKKyAgICB7Il9zaWdzZWd2IiwgZmF1bHRoYW5kbGVyX3NpZ3NlZ3YsIE1FVEhfVkFSQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc2lnc2VndigpOiByYWlzZSBhIFNJR1NFR1Ygc2lnbmFsIil9LAorICAgIHsiX3NpZ2FicnQiLCBmYXVsdGhhbmRsZXJfc2lnYWJydCwgTUVUSF9WQVJBUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdhYnJ0KCk6IHJhaXNlIGEgU0lHQUJSVCBzaWduYWwiKX0sCisgICAgeyJfc2lnZnBlIiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zaWdmcGUsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9zaWdmcGUoKTogcmFpc2UgYSBTSUdGUEUgc2lnbmFsIil9LAorI2lmZGVmIFNJR0JVUworICAgIHsiX3NpZ2J1cyIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnYnVzLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc2lnYnVzKCk6IHJhaXNlIGEgU0lHQlVTIHNpZ25hbCIpfSwKKyNlbmRpZgorI2lmZGVmIFNJR0lMTAorICAgIHsiX3NpZ2lsbCIsIChQeUNGdW5jdGlvbilmYXVsdGhhbmRsZXJfc2lnaWxsLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfc2lnaWxsKCk6IHJhaXNlIGEgU0lHSUxMIHNpZ25hbCIpfSwKKyNlbmRpZgorICAgIHsiX2ZhdGFsX2Vycm9yIiwgZmF1bHRoYW5kbGVyX2ZhdGFsX2Vycm9yX3B5LCBNRVRIX1ZBUkFSR1MsCisgICAgIFB5RG9jX1NUUigiX2ZhdGFsX2Vycm9yKG1lc3NhZ2UpOiBjYWxsIFB5X0ZhdGFsRXJyb3IobWVzc2FnZSkiKX0sCisjaWYgZGVmaW5lZChIQVZFX1NJR0FMVFNUQUNLKSAmJiBkZWZpbmVkKEhBVkVfU0lHQUNUSU9OKQorICAgIHsiX3N0YWNrX292ZXJmbG93IiwgKFB5Q0Z1bmN0aW9uKWZhdWx0aGFuZGxlcl9zdGFja19vdmVyZmxvdywgTUVUSF9OT0FSR1MsCisgICAgIFB5RG9jX1NUUigiX3N0YWNrX292ZXJmbG93KCk6IHJlY3Vyc2l2ZSBjYWxsIHRvIHJhaXNlIGEgc3RhY2sgb3ZlcmZsb3ciKX0sCisjZW5kaWYKKyAgICB7TlVMTCwgTlVMTH0gIC8qIHNlbnRpbmVsICovCit9OworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIG1vZHVsZV9kZWYgPSB7CisgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAorICAgICJmYXVsdGhhbmRsZXIiLAorICAgIG1vZHVsZV9kb2MsCisgICAgMCwgLyogbm9uLW5lZ2F0aXZlIHNpemUgdG8gYmUgYWJsZSB0byB1bmxvYWQgdGhlIG1vZHVsZSAqLworICAgIG1vZHVsZV9tZXRob2RzLAorICAgIE5VTEwsCisgICAgZmF1bHRoYW5kbGVyX3RyYXZlcnNlLAorICAgIE5VTEwsCisgICAgTlVMTAorfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9mYXVsdGhhbmRsZXIodm9pZCkKK3sKKyAgICByZXR1cm4gUHlNb2R1bGVfQ3JlYXRlKCZtb2R1bGVfZGVmKTsKK30KKworLyogQ2FsbCBmYXVsdGhhbmRsZXIuZW5hYmxlKCkgaWYgdGhlIFBZVEhPTkZBVUxUSEFORExFUiBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgaXMgZGVmaW5lZCwgb3IgaWYgc3lzLl94b3B0aW9ucyBoYXMgYSAnZmF1bHRoYW5kbGVyJyBrZXkuICovCisKK3N0YXRpYyBpbnQKK2ZhdWx0aGFuZGxlcl9lbnZfb3B0aW9ucyh2b2lkKQoreworICAgIFB5T2JqZWN0ICp4b3B0aW9ucywgKmtleSwgKm1vZHVsZSwgKnJlczsKKyAgICBfUHlfSURFTlRJRklFUihlbmFibGUpOworCisgICAgaWYgKCFQeV9HRVRFTlYoIlBZVEhPTkZBVUxUSEFORExFUiIpKSB7CisgICAgICAgIGludCBoYXNfa2V5OworCisgICAgICAgIHhvcHRpb25zID0gUHlTeXNfR2V0WE9wdGlvbnMoKTsKKyAgICAgICAgaWYgKHhvcHRpb25zID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAga2V5ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImZhdWx0aGFuZGxlciIpOworICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaGFzX2tleSA9IFB5RGljdF9Db250YWlucyh4b3B0aW9ucywga2V5KTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmICghaGFzX2tleSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1vZHVsZSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiZmF1bHRoYW5kbGVyIik7CisgICAgaWYgKG1vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChtb2R1bGUsICZQeUlkX2VuYWJsZSwgIiIpOworICAgIFB5X0RFQ1JFRihtb2R1bGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0RFQ1JFRihyZXMpOworICAgIHJldHVybiAwOworfQorCitpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCkKK3sKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgaW50IGVycjsKKworICAgIC8qIFRyeSB0byBhbGxvY2F0ZSBhbiBhbHRlcm5hdGUgc3RhY2sgZm9yIGZhdWx0aGFuZGxlcigpIHNpZ25hbCBoYW5kbGVyIHRvCisgICAgICogYmUgYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgb24gdGhlIHN0YWNrLCBldmVuIG9uIGEgc3RhY2sgb3ZlcmZsb3cuIElmIGl0CisgICAgICogZmFpbHMsIGlnbm9yZSB0aGUgZXJyb3IuICovCisgICAgc3RhY2suc3NfZmxhZ3MgPSAwOworICAgIHN0YWNrLnNzX3NpemUgPSBTSUdTVEtTWjsKKyAgICBzdGFjay5zc19zcCA9IFB5TWVtX01hbGxvYyhzdGFjay5zc19zaXplKTsKKyAgICBpZiAoc3RhY2suc3Nfc3AgIT0gTlVMTCkgeworICAgICAgICBlcnIgPSBzaWdhbHRzdGFjaygmc3RhY2ssIE5VTEwpOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHN0YWNrLnNzX3NwKTsKKyAgICAgICAgICAgIHN0YWNrLnNzX3NwID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorI2lmZGVmIEZBVUxUSEFORExFUl9MQVRFUgorICAgIHRocmVhZC5maWxlID0gTlVMTDsKKyAgICB0aHJlYWQuY2FuY2VsX2V2ZW50ID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIHRocmVhZC5ydW5uaW5nID0gUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpOworICAgIGlmICghdGhyZWFkLmNhbmNlbF9ldmVudCB8fCAhdGhyZWFkLnJ1bm5pbmcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgYWxsb2NhdGUgbG9ja3MgZm9yIGZhdWx0aGFuZGxlciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIFB5VGhyZWFkX2FjcXVpcmVfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50LCAxKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIGZhdWx0aGFuZGxlcl9lbnZfb3B0aW9ucygpOworfQorCit2b2lkIF9QeUZhdWx0aGFuZGxlcl9GaW5pKHZvaWQpCit7CisjaWZkZWYgRkFVTFRIQU5ETEVSX1VTRVIKKyAgICB1bnNpZ25lZCBpbnQgc2lnbnVtOworI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfTEFURVIKKyAgICAvKiBsYXRlciAqLworICAgIGlmICh0aHJlYWQuY2FuY2VsX2V2ZW50KSB7CisgICAgICAgIGNhbmNlbF9kdW1wX3RyYWNlYmFja19sYXRlcigpOworICAgICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sodGhyZWFkLmNhbmNlbF9ldmVudCk7CisgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayh0aHJlYWQuY2FuY2VsX2V2ZW50KTsKKyAgICAgICAgdGhyZWFkLmNhbmNlbF9ldmVudCA9IE5VTEw7CisgICAgfQorICAgIGlmICh0aHJlYWQucnVubmluZykgeworICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2sodGhyZWFkLnJ1bm5pbmcpOworICAgICAgICB0aHJlYWQucnVubmluZyA9IE5VTEw7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBGQVVMVEhBTkRMRVJfVVNFUgorICAgIC8qIHVzZXIgKi8KKyAgICBpZiAodXNlcl9zaWduYWxzICE9IE5VTEwpIHsKKyAgICAgICAgZm9yIChzaWdudW09MDsgc2lnbnVtIDwgTlNJRzsgc2lnbnVtKyspCisgICAgICAgICAgICBmYXVsdGhhbmRsZXJfdW5yZWdpc3RlcigmdXNlcl9zaWduYWxzW3NpZ251bV0sIHNpZ251bSk7CisgICAgICAgIGZyZWUodXNlcl9zaWduYWxzKTsKKyAgICAgICAgdXNlcl9zaWduYWxzID0gTlVMTDsKKyAgICB9CisjZW5kaWYKKworICAgIC8qIGZhdGFsICovCisgICAgZmF1bHRoYW5kbGVyX2Rpc2FibGUoKTsKKyNpZmRlZiBIQVZFX1NJR0FMVFNUQUNLCisgICAgaWYgKHN0YWNrLnNzX3NwICE9IE5VTEwpIHsKKyAgICAgICAgUHlNZW1fRnJlZShzdGFjay5zc19zcCk7CisgICAgICAgIHN0YWNrLnNzX3NwID0gTlVMTDsKKyAgICB9CisjZW5kaWYKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvZmNudGxtb2R1bGUuYyBiL01vZHVsZXMvZmNudGxtb2R1bGUuYwppbmRleCBiZmM1OTg1Li42YjdlM2ZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2ZjbnRsbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9mY250bG1vZHVsZS5jCkBAIC01NDAsMTAgKzU0MCwxMyBAQAogICAgIGlmIChpbnMoZCwgIkZfU0hMQ0siLCAobG9uZylGX1NITENLKSkgcmV0dXJuIC0xOwogI2VuZGlmCiAKLS8qIE9TIFggKGFuZCBtYXliZSBvdGhlcnMpIGxldCB5b3UgdGVsbCB0aGUgc3RvcmFnZSBkZXZpY2UgdG8gZmx1c2ggdG8gcGh5c2ljYWwgbWVkaWEgKi8KKy8qIE9TIFggc3BlY2lmaWNzICovCiAjaWZkZWYgRl9GVUxMRlNZTkMKICAgICBpZiAoaW5zKGQsICJGX0ZVTExGU1lOQyIsIChsb25nKUZfRlVMTEZTWU5DKSkgcmV0dXJuIC0xOwogI2VuZGlmCisjaWZkZWYgRl9OT0NBQ0hFCisgICAgaWYgKGlucyhkLCAiRl9OT0NBQ0hFIiwgKGxvbmcpRl9OT0NBQ0hFKSkgcmV0dXJuIC0xOworI2VuZGlmCiAKIC8qIEZvciBGX3tHRVR8U0VUfUZMICovCiAjaWZkZWYgRkRfQ0xPRVhFQwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9mcGVjdGxtb2R1bGUuYyBiL01vZHVsZXMvZnBlY3RsbW9kdWxlLmMKaW5kZXggMWJiNTFjZi4uNmFmMmY4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9mcGVjdGxtb2R1bGUuYworKysgYi9Nb2R1bGVzL2ZwZWN0bG1vZHVsZS5jCkBAIC0xNzQsMTcgKzE3NCw2IEBACiAgICAgZnBfZW5hYmxlKFRSUF9JTlZBTElEIHwgVFJQX0RJVl9CWV9aRVJPIHwgVFJQX09WRVJGTE9XKTsKICAgICBQeU9TX3NldHNpZyhTSUdGUEUsIGhhbmRsZXIpOwogCi0vKi0tIERFQyBBTFBIQSBPU0YgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotI2VsaWYgZGVmaW5lZChfX2FscGhhKSAmJiBkZWZpbmVkKF9fb3NmX18pCi0gICAgLyogUmVmZXJlbmNlczogICBleGNlcHRpb25faW50cm8sIGllZWUgbWFuIHBhZ2VzICovCi0gICAgLyogY2MgLWMgLUkvdXNyL2xvY2FsL3B5dGhvbi9pbmNsdWRlIGZwZWN0bG1vZHVsZS5jICovCi0gICAgLyogbGQgLXNoYXJlZCAtbyBmcGVjdGxtb2R1bGUuc28gZnBlY3RsbW9kdWxlLm8gKi8KLSNpbmNsdWRlIDxtYWNoaW5lL2ZwdS5oPgotICAgIHVuc2lnbmVkIGxvbmcgZnBfY29udHJvbCA9Ci0gICAgSUVFRV9UUkFQX0VOQUJMRV9JTlYgfCBJRUVFX1RSQVBfRU5BQkxFX0RaRSB8IElFRUVfVFJBUF9FTkFCTEVfT1ZGOwotICAgIGllZWVfc2V0X2ZwX2NvbnRyb2woZnBfY29udHJvbCk7Ci0gICAgUHlPU19zZXRzaWcoU0lHRlBFLCBoYW5kbGVyKTsKLQogLyotLSBERUMgQUxQSEEgTElOVVggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICNlbGlmIGRlZmluZWQoX19hbHBoYSkgJiYgZGVmaW5lZChsaW51eCkKICNpbmNsdWRlIDxhc20vZnB1Lmg+CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2djX3dlYWtyZWYudHh0IGIvTW9kdWxlcy9nY193ZWFrcmVmLnR4dAppbmRleCBkN2JlNmMzLi4yZjE4NDAyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djX3dlYWtyZWYudHh0CisrKyBiL01vZHVsZXMvZ2Nfd2Vha3JlZi50eHQKQEAgLTE1LDggKzE1LDggQEAKIGhpc3RvcmljYWxseSBjb21tb24gYnVnKSwgdHBfY2xlYXIgZW1wdGllcyBhbiBpbnN0YW5jZSdzIF9fZGljdF9fLCBhbmQKICJpbXBvc3NpYmxlIiBBdHRyaWJ1dGVFcnJvcnMgcmVzdWx0LiAgQXQgd29yc3QsIHRwX2NsZWFyIGxlYXZlcyBiZWhpbmQgYW4KIGluc2FuZSBvYmplY3QgYXQgdGhlIEMgbGV2ZWwsIGFuZCBzZWdmYXVsdHMgcmVzdWx0IChoaXN0b3JpY2FsbHksIG1vc3QKLW9mdGVuIGJ5IHNldHRpbmcgYSBuZXctc3R5bGUgY2xhc3MncyBtcm8gcG9pbnRlciB0byBOVUxMLCBhZnRlciB3aGljaAotYXR0cmlidXRlIGxvb2t1cHMgcGVyZm9ybWVkIGJ5IHRoZSBjbGFzcyBjYW4gc2VnZmF1bHQpLgorb2Z0ZW4gYnkgc2V0dGluZyBhIGNsYXNzJ3MgbXJvIHBvaW50ZXIgdG8gTlVMTCwgYWZ0ZXIgd2hpY2ggYXR0cmlidXRlCitsb29rdXBzIHBlcmZvcm1lZCBieSB0aGUgY2xhc3MgY2FuIHNlZ2ZhdWx0KS4KIAogT1RPSCwgaXQncyBPSyB0byBydW4gUHl0aG9uLWxldmVsIGNvZGUgdGhhdCBjYW4ndCBhY2Nlc3MgdW5yZWFjaGFibGUKIG9iamVjdHMsIGFuZCBzb21ldGltZXMgdGhhdCdzIG5lY2Vzc2FyeS4gIFRoZSBjaGllZiBleGFtcGxlIGlzIHRoZSBjYWxsYmFjawpAQCAtMTE5LDcgKzExOSw3IEBACiBpdCB0b29rIHF1aXRlIGEgd2hpbGUgdG8gZHJlYW0gdXAgZmFpbGluZyB0ZXN0IGNhc2VzLiAgWm9wZTMgc2F3IHNlZ2ZhdWx0cwogZHVyaW5nIHNodXRkb3duLCBkdXJpbmcgdGhlIHNlY29uZCBjYWxsIG9mIGdjIGluIFB5X0ZpbmFsaXplLCBhZnRlciBtb3N0CiBtb2R1bGVzIGhhZCBiZWVuIHRvcm4gZG93bi4gIFRoYXQgY3JlYXRlcyBtYW55IHRyYXNoIGN5Y2xlcyAoZXNwLiB0aG9zZQotaW52b2x2aW5nIG5ldy1zdHlsZSBjbGFzc2VzKSwgbWFraW5nIHRoZSBwcm9ibGVtIG11Y2ggbW9yZSBsaWtlbHkuICBPbmNlIHlvdQoraW52b2x2aW5nIGNsYXNzZXMpLCBtYWtpbmcgdGhlIHByb2JsZW0gbXVjaCBtb3JlIGxpa2VseS4gIE9uY2UgeW91CiBrbm93IHdoYXQncyByZXF1aXJlZCB0byBwcm92b2tlIHRoZSBwcm9ibGVtLCB0aG91Z2gsIGl0J3MgZWFzeSB0byBjcmVhdGUKIHRlc3RzIHRoYXQgc2VnZmF1bHQgYmVmb3JlIHNodXRkb3duLgogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2djbW9kdWxlLmMgYi9Nb2R1bGVzL2djbW9kdWxlLmMKaW5kZXggOGM1MjRmOC4uZjc4MmRkMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nY21vZHVsZS5jCisrKyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwpAQCAtNjUsMTcgKzY1LDE3IEBACiAvKiBQeXRob24gc3RyaW5nIHRvIHVzZSBpZiB1bmhhbmRsZWQgZXhjZXB0aW9uIG9jY3VycyAqLwogc3RhdGljIFB5T2JqZWN0ICpnY19zdHIgPSBOVUxMOwogCi0vKiBQeXRob24gc3RyaW5nIHVzZWQgdG8gbG9vayBmb3IgX19kZWxfXyBhdHRyaWJ1dGUuICovCi1zdGF0aWMgUHlPYmplY3QgKmRlbHN0ciA9IE5VTEw7CisvKiBhIGxpc3Qgb2YgY2FsbGJhY2tzIHRvIGJlIGludm9rZWQgd2hlbiBjb2xsZWN0aW9uIGlzIHBlcmZvcm1lZCAqLworc3RhdGljIFB5T2JqZWN0ICpjYWxsYmFja3MgPSBOVUxMOwogCi0vKiBUaGlzIGlzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyB3aG8gc3Vydml2ZWQgdGhlIGxhc3QgZnVsbCBjb2xsZWN0aW9uLiBJdAorLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIG9iamVjdHMgdGhhdCBzdXJ2aXZlZCB0aGUgbGFzdCBmdWxsIGNvbGxlY3Rpb24uIEl0CiAgICBhcHByb3hpbWF0ZXMgdGhlIG51bWJlciBvZiBsb25nIGxpdmVkIG9iamVjdHMgdHJhY2tlZCBieSB0aGUgR0MuCiAKICAgIChieSAiZnVsbCBjb2xsZWN0aW9uIiwgd2UgbWVhbiBhIGNvbGxlY3Rpb24gb2YgdGhlIG9sZGVzdCBnZW5lcmF0aW9uKS4KICovCiBzdGF0aWMgUHlfc3NpemVfdCBsb25nX2xpdmVkX3RvdGFsID0gMDsKIAotLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIG9iamVjdHMgd2hvIHN1cnZpdmVkIGFsbCAibm9uLWZ1bGwiIGNvbGxlY3Rpb25zLAorLyogVGhpcyBpcyB0aGUgbnVtYmVyIG9mIG9iamVjdHMgdGhhdCBzdXJ2aXZlZCBhbGwgIm5vbi1mdWxsIiBjb2xsZWN0aW9ucywKICAgIGFuZCBhcmUgYXdhaXRpbmcgdG8gdW5kZXJnbyBhIGZ1bGwgY29sbGVjdGlvbiBmb3IgdGhlIGZpcnN0IHRpbWUuCiAKICovCkBAIC03MzEsOCArNzMxLDggQEAKIHN0YXRpYyB2b2lkCiBkZWJ1Z19jeWNsZShjaGFyICptc2csIFB5T2JqZWN0ICpvcCkKIHsKLSAgICBQeVN5c19Xcml0ZVN0ZGVycigiZ2M6ICUuMTAwcyA8JS4xMDBzICVwPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICBtc2csIFB5X1RZUEUob3ApLT50cF9uYW1lLCBvcCk7CisgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJnYzogJXMgPCVzICVwPlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSwgb3ApOwogfQogCiAvKiBIYW5kbGUgdW5jb2xsZWN0YWJsZSBnYXJiYWdlIChjeWNsZXMgd2l0aCBmaW5hbGl6ZXJzLCBhbmQgc3R1ZmYgcmVhY2hhYmxlCkBAIC04MTMsNiArODEzLDkgQEAKICAgICAodm9pZClQeVR1cGxlX0NsZWFyRnJlZUxpc3QoKTsKICAgICAodm9pZClQeVVuaWNvZGVfQ2xlYXJGcmVlTGlzdCgpOwogICAgICh2b2lkKVB5RmxvYXRfQ2xlYXJGcmVlTGlzdCgpOworICAgICh2b2lkKVB5TGlzdF9DbGVhckZyZWVMaXN0KCk7CisgICAgKHZvaWQpUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKKyAgICAodm9pZClQeVNldF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKIHN0YXRpYyBkb3VibGUKQEAgLTgyMCw3ICs4MjMsOSBAQAogewogICAgIGRvdWJsZSByZXN1bHQgPSAwOwogICAgIGlmICh0bW9kICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmYgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHRtb2QsICJ0aW1lIiwgTlVMTCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHRpbWUpOworCisgICAgICAgIFB5T2JqZWN0ICpmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCh0bW9kLCAmUHlJZF90aW1lLCBOVUxMKTsKICAgICAgICAgaWYgKGYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgfQpAQCAtODM2LDcgKzg0MSw3IEBACiAvKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uLiAgUmVhZCB0aGlzIHRvIHVuZGVyc3RhbmQgaG93IHRoZQogICogY29sbGVjdGlvbiBwcm9jZXNzIHdvcmtzLiAqLwogc3RhdGljIFB5X3NzaXplX3QKLWNvbGxlY3QoaW50IGdlbmVyYXRpb24pCitjb2xsZWN0KGludCBnZW5lcmF0aW9uLCBQeV9zc2l6ZV90ICpuX2NvbGxlY3RlZCwgUHlfc3NpemVfdCAqbl91bmNvbGxlY3RhYmxlKQogewogICAgIGludCBpOwogICAgIFB5X3NzaXplX3QgbSA9IDA7IC8qICMgb2JqZWN0cyBjb2xsZWN0ZWQgKi8KQEAgLTg0OCwxMiArODUzLDYgQEAKICAgICBQeUdDX0hlYWQgKmdjOwogICAgIGRvdWJsZSB0MSA9IDAuMDsKIAotICAgIGlmIChkZWxzdHIgPT0gTlVMTCkgewotICAgICAgICBkZWxzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19kZWxfXyIpOwotICAgICAgICBpZiAoZGVsc3RyID09IE5VTEwpCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnYyBjb3VsZG4ndCBhbGxvY2F0ZSBcIl9fZGVsX19cIiIpOwotICAgIH0KLQogICAgIGlmIChkZWJ1ZyAmIERFQlVHX1NUQVRTKSB7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJnYzogY29sbGVjdGluZyBnZW5lcmF0aW9uICVkLi4uXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW9uKTsKQEAgLTk5Myw5ICs5OTIsNjQgQEAKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKGdjX3N0cik7CiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoInVuZXhwZWN0ZWQgZXhjZXB0aW9uIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24iKTsKICAgICB9CisKKyAgICBpZiAobl9jb2xsZWN0ZWQpCisgICAgICAgICpuX2NvbGxlY3RlZCA9IG07CisgICAgaWYgKG5fdW5jb2xsZWN0YWJsZSkKKyAgICAgICAgKm5fdW5jb2xsZWN0YWJsZSA9IG47CiAgICAgcmV0dXJuIG4rbTsKIH0KIAorLyogSW52b2tlIHByb2dyZXNzIGNhbGxiYWNrcyB0byBub3RpZnkgY2xpZW50cyB0aGF0IGdhcmJhZ2UgY29sbGVjdGlvbgorICogaXMgc3RhcnRpbmcgb3Igc3RvcHBpbmcKKyAqLworc3RhdGljIHZvaWQKK2ludm9rZV9nY19jYWxsYmFjayhjb25zdCBjaGFyICpwaGFzZSwgaW50IGdlbmVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZWN0ZWQsIFB5X3NzaXplX3QgdW5jb2xsZWN0YWJsZSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKmluZm8gPSBOVUxMOworCisgICAgLyogd2UgbWF5IGdldCBjYWxsZWQgdmVyeSBlYXJseSAqLworICAgIGlmIChjYWxsYmFja3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIC8qIFRoZSBsb2NhbCB2YXJpYWJsZSBjYW5ub3QgYmUgcmVib3VuZCwgY2hlY2sgaXQgZm9yIHNhbml0eSAqLworICAgIGFzc2VydChjYWxsYmFja3MgIT0gTlVMTCAmJiBQeUxpc3RfQ2hlY2tFeGFjdChjYWxsYmFja3MpKTsKKyAgICBpZiAoUHlMaXN0X0dFVF9TSVpFKGNhbGxiYWNrcykgIT0gMCkgeworICAgICAgICBpbmZvID0gUHlfQnVpbGRWYWx1ZSgie3Npc25zbn0iLAorICAgICAgICAgICAgImdlbmVyYXRpb24iLCBnZW5lcmF0aW9uLAorICAgICAgICAgICAgImNvbGxlY3RlZCIsIGNvbGxlY3RlZCwKKyAgICAgICAgICAgICJ1bmNvbGxlY3RhYmxlIiwgdW5jb2xsZWN0YWJsZSk7CisgICAgICAgIGlmIChpbmZvID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShOVUxMKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBmb3IgKGk9MDsgaTxQeUxpc3RfR0VUX1NJWkUoY2FsbGJhY2tzKTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICpyLCAqY2IgPSBQeUxpc3RfR0VUX0lURU0oY2FsbGJhY2tzLCBpKTsKKyAgICAgICAgUHlfSU5DUkVGKGNiKTsgLyogbWFrZSBzdXJlIGNiIGRvZXNuJ3QgZ28gYXdheSAqLworICAgICAgICByID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKGNiLCAic08iLCBwaGFzZSwgaW5mbyk7CisgICAgICAgIFB5X1hERUNSRUYocik7CisgICAgICAgIGlmIChyID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoY2IpOworICAgICAgICBQeV9ERUNSRUYoY2IpOworICAgIH0KKyAgICBQeV9YREVDUkVGKGluZm8pOworfQorCisvKiBQZXJmb3JtIGdhcmJhZ2UgY29sbGVjdGlvbiBvZiBhIGdlbmVyYXRpb24gYW5kIGludm9rZQorICogcHJvZ3Jlc3MgY2FsbGJhY2tzLgorICovCitzdGF0aWMgUHlfc3NpemVfdAorY29sbGVjdF93aXRoX2NhbGxiYWNrKGludCBnZW5lcmF0aW9uKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0LCBjb2xsZWN0ZWQsIHVuY29sbGVjdGFibGU7CisgICAgaW52b2tlX2djX2NhbGxiYWNrKCJzdGFydCIsIGdlbmVyYXRpb24sIDAsIDApOworICAgIHJlc3VsdCA9IGNvbGxlY3QoZ2VuZXJhdGlvbiwgJmNvbGxlY3RlZCwgJnVuY29sbGVjdGFibGUpOworICAgIGludm9rZV9nY19jYWxsYmFjaygic3RvcCIsIGdlbmVyYXRpb24sIGNvbGxlY3RlZCwgdW5jb2xsZWN0YWJsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5X3NzaXplX3QKIGNvbGxlY3RfZ2VuZXJhdGlvbnModm9pZCkKIHsKQEAgLTEwMTQsNyArMTA2OCw3IEBACiAgICAgICAgICAgICBpZiAoaSA9PSBOVU1fR0VORVJBVElPTlMgLSAxCiAgICAgICAgICAgICAgICAgJiYgbG9uZ19saXZlZF9wZW5kaW5nIDwgbG9uZ19saXZlZF90b3RhbCAvIDQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBuID0gY29sbGVjdChpKTsKKyAgICAgICAgICAgIG4gPSBjb2xsZWN0X3dpdGhfY2FsbGJhY2soaSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTEwODUsNyArMTEzOSw3IEBACiAgICAgICAgIG4gPSAwOyAvKiBhbHJlYWR5IGNvbGxlY3RpbmcsIGRvbid0IGRvIGFueXRoaW5nICovCiAgICAgZWxzZSB7CiAgICAgICAgIGNvbGxlY3RpbmcgPSAxOwotICAgICAgICBuID0gY29sbGVjdChnZW5hcmcpOworICAgICAgICBuID0gY29sbGVjdF93aXRoX2NhbGxiYWNrKGdlbmFyZyk7CiAgICAgICAgIGNvbGxlY3RpbmcgPSAwOwogICAgIH0KIApAQCAtMTM3OCw2ICsxNDMyLDE1IEBACiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZ2FyYmFnZSIsIGdhcmJhZ2UpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgY2FsbGJhY2tzID0gUHlMaXN0X05ldygwKTsKKyAgICAgICAgaWYgKGNhbGxiYWNrcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihjYWxsYmFja3MpOworICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgImNhbGxiYWNrcyIsIGNhbGxiYWNrcykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIEltcG9ydGluZyBjYW4ndCBiZSBkb25lIGluIGNvbGxlY3QoKSBiZWNhdXNlIGNvbGxlY3QoKQogICAgICAqIGNhbiBiZSBjYWxsZWQgdmlhIFB5R0NfQ29sbGVjdCgpIGluIFB5X0ZpbmFsaXplKCkuCiAgICAgICogVGhpcyB3b3VsZG4ndCBiZSBhIHByb2JsZW0sIGV4Y2VwdCB0aGF0IDxpbml0aWFsaXplZD4gaXMKQEAgLTE0MTAsNyArMTQ3Myw3IEBACiAgICAgICAgIG4gPSAwOyAvKiBhbHJlYWR5IGNvbGxlY3RpbmcsIGRvbid0IGRvIGFueXRoaW5nICovCiAgICAgZWxzZSB7CiAgICAgICAgIGNvbGxlY3RpbmcgPSAxOwotICAgICAgICBuID0gY29sbGVjdChOVU1fR0VORVJBVElPTlMgLSAxKTsKKyAgICAgICAgbiA9IGNvbGxlY3Rfd2l0aF9jYWxsYmFjayhOVU1fR0VORVJBVElPTlMgLSAxKTsKICAgICAgICAgY29sbGVjdGluZyA9IDA7CiAgICAgfQogCkBAIC0xNDQ3LDYgKzE1MTAsNyBAQAogICAgICAgICAgICAgUHlfWERFQ1JFRihieXRlcyk7CiAgICAgICAgIH0KICAgICB9CisgICAgUHlfQ0xFQVIoY2FsbGJhY2tzKTsKIH0KIAogLyogZm9yIGRlYnVnZ2luZyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRidWlsZGluZm8uYyBiL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKaW5kZXggNzA2OWI2ZS4uMDk3MWE2NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRidWlsZGluZm8uYworKysgYi9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCkBAIC0yMCwxNCArMjAsNiBAQAogI2VuZGlmCiAjZW5kaWYKIAotLyogb24gdW5peCwgU1ZOVkVSU0lPTiBpcyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KLSAqIG9uIFdpbmRvd3MsIHRoZSBzdHJpbmcgaXMgaW50ZXJwb2xhdGVkIHVzaW5nCi0gKiBzdWJ3Y3Jldi5leGUKLSAqLwotI2lmbmRlZiBTVk5WRVJTSU9OCi0jZGVmaW5lIFNWTlZFUlNJT04gIiRXQ1JBTkdFJCRXQ01PRFM/TTokIgotI2VuZGlmCi0KIC8qIFhYWCBPbmx5IHVuaXggYnVpbGQgcHJvY2VzcyBoYXMgYmVlbiB0ZXN0ZWQgKi8KICNpZm5kZWYgSEdWRVJTSU9OCiAjZGVmaW5lIEhHVkVSU0lPTiAiIgpAQCAtNTcsMTYgKzQ5LDYgQEAKIH0KIAogY29uc3QgY2hhciAqCi1fUHlfc3ZudmVyc2lvbih2b2lkKQotewotICAgIC8qIHRoZSBmb2xsb3dpbmcgc3RyaW5nIGNhbiBiZSBtb2RpZmllZCBieSBzdWJ3Y3Jldi5leGUgKi8KLSAgICBzdGF0aWMgY29uc3QgY2hhciBzdm52ZXJzaW9uW10gPSBTVk5WRVJTSU9OOwotICAgIGlmIChzdm52ZXJzaW9uWzBdICE9ICckJykKLSAgICAgICAgcmV0dXJuIHN2bnZlcnNpb247IC8qIGl0IHdhcyBpbnRlcnBvbGF0ZWQsIG9yIHBhc3NlZCBvbiBjb21tYW5kIGxpbmUgKi8KLSAgICByZXR1cm4gIlVudmVyc2lvbmVkIGRpcmVjdG9yeSI7Ci19Ci0KLWNvbnN0IGNoYXIgKgogX1B5X2hndmVyc2lvbih2b2lkKQogewogICAgIHJldHVybiBIR1ZFUlNJT047CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldHBhdGguYyBiL01vZHVsZXMvZ2V0cGF0aC5jCmluZGV4IGI3Zjk1NzMuLmI5OGM1MjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCisrKyBiL01vZHVsZXMvZ2V0cGF0aC5jCkBAIC0yNjAsNiArMjYwLDU5IEBACiAgICAgd2NzY3B5KHBhdGgsIGJ1ZmZlcik7CiB9CiAKKy8qIHNlYXJjaCBmb3IgYSBwcmVmaXggdmFsdWUgaW4gYW4gZW52aXJvbm1lbnQgZmlsZS4gSWYgZm91bmQsIGNvcHkgaXQKKyAgIHRvIHRoZSBwcm92aWRlZCBidWZmZXIsIHdoaWNoIGlzIGV4cGVjdGVkIHRvIGJlIG5vIG1vcmUgdGhhbiBNQVhQQVRITEVOCisgICBieXRlcyBsb25nLgorKi8KKworc3RhdGljIGludAorZmluZF9lbnZfY29uZmlnX3ZhbHVlKEZJTEUgKiBlbnZfZmlsZSwgY29uc3Qgd2NoYXJfdCAqIGtleSwgd2NoYXJfdCAqIHZhbHVlKQoreworICAgIGludCByZXN1bHQgPSAwOyAvKiBtZWFuaW5nIG5vdCBmb3VuZCAqLworICAgIGNoYXIgYnVmZmVyW01BWFBBVEhMRU4qMisxXTsgIC8qIGFsbG93IGV4dHJhIGZvciBrZXksICc9JywgZXRjLiAqLworCisgICAgZnNlZWsoZW52X2ZpbGUsIDAsIFNFRUtfU0VUKTsKKyAgICB3aGlsZSAoIWZlb2YoZW52X2ZpbGUpKSB7CisgICAgICAgIGNoYXIgKiBwID0gZmdldHMoYnVmZmVyLCBNQVhQQVRITEVOKjIsIGVudl9maWxlKTsKKyAgICAgICAgd2NoYXJfdCB0bXBidWZmZXJbTUFYUEFUSExFTioyKzFdOworICAgICAgICBQeU9iamVjdCAqIGRlY29kZWQ7CisgICAgICAgIGludCBuOworCisgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbiA9IHN0cmxlbihwKTsKKyAgICAgICAgaWYgKHBbbiAtIDFdICE9ICdcbicpIHsKKyAgICAgICAgICAgIC8qIGxpbmUgaGFzIG92ZXJmbG93ZWQgLSBiYWlsICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAocFswXSA9PSAnIycpICAgIC8qIENvbW1lbnQgLSBza2lwICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZGVjb2RlZCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KGJ1ZmZlciwgbiwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICBpZiAoZGVjb2RlZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGs7CisgICAgICAgICAgICB3Y2hhcl90ICogc3RhdGU7CisgICAgICAgICAgICBrID0gUHlVbmljb2RlX0FzV2lkZUNoYXIoZGVjb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBidWZmZXIsIE1BWFBBVEhMRU4gKiAyKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZWNvZGVkKTsKKyAgICAgICAgICAgIGlmIChrID49IDApIHsKKyAgICAgICAgICAgICAgICB3Y2hhcl90ICogdG9rID0gd2NzdG9rKHRtcGJ1ZmZlciwgTCIgXHRcclxuIiwgJnN0YXRlKTsKKyAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywga2V5KSkgeworICAgICAgICAgICAgICAgICAgICB0b2sgPSB3Y3N0b2soTlVMTCwgTCIgXHQiLCAmc3RhdGUpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywgTCI9IikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIlxyXG4iLCAmc3RhdGUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvayAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2NzbmNweSh2YWx1ZSwgdG9rLCBNQVhQQVRITEVOKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qIHNlYXJjaF9mb3JfcHJlZml4IHJlcXVpcmVzIHRoYXQgYXJndjBfcGF0aCBiZSBubyBtb3JlIHRoYW4gTUFYUEFUSExFTgogICAgYnl0ZXMgbG9uZy4KICovCkBAIC00MDYsNyArNDU5LDcgQEAKICAgICBzdGF0aWMgd2NoYXJfdCBkZWxpbWl0ZXJbMl0gPSB7REVMSU0sICdcMCd9OwogICAgIHN0YXRpYyB3Y2hhcl90IHNlcGFyYXRvclsyXSA9IHtTRVAsICdcMCd9OwogICAgIGNoYXIgKl9ydHB5cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOyAvKiBYWFggdXNlIHdpZGUgdmVyc2lvbiBvbiBXaW5kb3dzICovCi0gICAgd2NoYXJfdCBydHB5cGF0aFtNQVhQQVRITEVOKzFdOworICAgIHdjaGFyX3QgKnJ0cHlwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90ICpob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwogICAgIGNoYXIgKl9wYXRoID0gZ2V0ZW52KCJQQVRIIik7CiAgICAgd2NoYXJfdCAqcGF0aF9idWZmZXIgPSBOVUxMOwpAQCAtNDIxLDYgKzQ3NCw3IEBACiAgICAgd2NoYXJfdCAqZGVmcGF0aDsKICNpZmRlZiBXSVRIX05FWFRfRlJBTUVXT1JLCiAgICAgTlNNb2R1bGUgcHl0aG9uTW9kdWxlOworICAgIGNvbnN0IGNoYXIqICAgIG1vZFBhdGg7CiAjZW5kaWYKICNpZmRlZiBfX0FQUExFX18KICNpZiBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEID49IE1BQ19PU19YX1ZFUlNJT05fMTBfNApAQCAtNTE1LDggKzU2OSw4IEBACiAgICAgKi8KICAgICBweXRob25Nb2R1bGUgPSBOU01vZHVsZUZvclN5bWJvbChOU0xvb2t1cEFuZEJpbmRTeW1ib2woIl9QeV9Jbml0aWFsaXplIikpOwogICAgIC8qIFVzZSBkeWxpYiBmdW5jdGlvbnMgdG8gZmluZCBvdXQgd2hlcmUgdGhlIGZyYW1ld29yayB3YXMgbG9hZGVkIGZyb20gKi8KLSAgICBidWYgPSAod2NoYXJfdCAqKU5TTGlicmFyeU5hbWVGb3JNb2R1bGUocHl0aG9uTW9kdWxlKTsKLSAgICBpZiAoYnVmICE9IE5VTEwpIHsKKyAgICBtb2RQYXRoID0gTlNMaWJyYXJ5TmFtZUZvck1vZHVsZShweXRob25Nb2R1bGUpOworICAgIGlmIChtb2RQYXRoICE9IE5VTEwpIHsKICAgICAgICAgLyogV2UncmUgaW4gYSBmcmFtZXdvcmsuICovCiAgICAgICAgIC8qIFNlZSBpZiB3ZSBtaWdodCBiZSBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiBUaGUgZnJhbWV3b3JrIGluIHRoZQogICAgICAgICAqKiBidWlsZCBkaXJlY3RvcnkgaXMgaW5jb21wbGV0ZSwgaXQgb25seSBoYXMgdGhlIC5keWxpYiBhbmQgYSBmZXcKQEAgLTUyNSw3ICs1NzksMTIgQEAKICAgICAgICAgKiogYmUgcnVubmluZyB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSwgc28gd2UgdXNlIHRoZQogICAgICAgICAqKiBidWlsZC1kaXJlY3Rvcnktc3BlY2lmaWMgbG9naWMgdG8gZmluZCBMaWIgYW5kIHN1Y2guCiAgICAgICAgICovCi0gICAgICAgIHdjc25jcHkoYXJndjBfcGF0aCwgYnVmLCBNQVhQQVRITEVOKTsKKyAgICAgICAgd2NoYXJfdCogd2J1ZiA9IF9QeV9jaGFyMndjaGFyKG1vZFBhdGgsIE5VTEwpOworICAgICAgICBpZiAod2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW5ub3QgZGVjb2RlIGZyYW1ld29yayBsb2NhdGlvbiIpOworICAgICAgICB9CisKKyAgICAgICAgd2NzbmNweShhcmd2MF9wYXRoLCB3YnVmLCBNQVhQQVRITEVOKTsKICAgICAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOwogICAgICAgICBqb2lucGF0aChhcmd2MF9wYXRoLCBsaWJfcHl0aG9uKTsKICAgICAgICAgam9pbnBhdGgoYXJndjBfcGF0aCwgTEFORE1BUkspOwpAQCAtNTM2LDggKzU5NSw5IEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBVc2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGFzIHRoZSBwcm9ncGF0aCAqLwotICAgICAgICAgICAgd2NzbmNweShhcmd2MF9wYXRoLCBidWYsIE1BWFBBVEhMRU4pOworICAgICAgICAgICAgd2NzbmNweShhcmd2MF9wYXRoLCB3YnVmLCBNQVhQQVRITEVOKTsKICAgICAgICAgfQorICAgICAgICBQeU1lbV9GcmVlKHdidWYpOwogICAgIH0KICNlbmRpZgogCkBAIC01NjUsNiArNjI1LDQwIEBACiAgICAgICAgTUFYUEFUSExFTiBieXRlcyBsb25nLgogICAgICovCiAKKyAgICAvKiBTZWFyY2ggZm9yIGFuIGVudmlyb25tZW50IGNvbmZpZ3VyYXRpb24gZmlsZSwgZmlyc3QgaW4gdGhlCisgICAgICAgZXhlY3V0YWJsZSdzIGRpcmVjdG9yeSBhbmQgdGhlbiBpbiB0aGUgcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICBJZiBmb3VuZCwgb3BlbiBpdCBmb3IgdXNlIHdoZW4gc2VhcmNoaW5nIGZvciBwcmVmaXhlcy4KKyAgICAqLworCisgICAgeworICAgICAgICB3Y2hhcl90IHRtcGJ1ZmZlcltNQVhQQVRITEVOKzFdOworICAgICAgICB3Y2hhcl90ICplbnZfY2ZnID0gTCJweXZlbnYuY2ZnIjsKKyAgICAgICAgRklMRSAqIGVudl9maWxlID0gTlVMTDsKKworICAgICAgICB3Y3NjcHkodG1wYnVmZmVyLCBhcmd2MF9wYXRoKTsKKworICAgICAgICBqb2lucGF0aCh0bXBidWZmZXIsIGVudl9jZmcpOworICAgICAgICBlbnZfZmlsZSA9IF9QeV93Zm9wZW4odG1wYnVmZmVyLCBMInIiKTsKKyAgICAgICAgaWYgKGVudl9maWxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOworICAgICAgICAgICAgcmVkdWNlKHRtcGJ1ZmZlcik7CisgICAgICAgICAgICBqb2lucGF0aCh0bXBidWZmZXIsIGVudl9jZmcpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLworICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgeworICAgICAgICAgICAgICAgIHdjc2NweShhcmd2MF9wYXRoLCB0bXBidWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmNsb3NlKGVudl9maWxlKTsKKyAgICAgICAgICAgIGVudl9maWxlID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmICghKHBmb3VuZCA9IHNlYXJjaF9mb3JfcHJlZml4KGFyZ3YwX3BhdGgsIGhvbWUsIF9wcmVmaXgpKSkgewogICAgICAgICBpZiAoIVB5X0Zyb3plbkZsYWcpCiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKQEAgLTYwNiwxMiArNzAwLDEyIEBACiAgICAgYnVmc3ogPSAwOwogCiAgICAgaWYgKF9ydHB5cGF0aCkgewotICAgICAgICBzaXplX3QgcyA9IG1ic3Rvd2NzKHJ0cHlwYXRoLCBfcnRweXBhdGgsIHNpemVvZihydHB5cGF0aCkvc2l6ZW9mKHdjaGFyX3QpKTsKLSAgICAgICAgaWYgKHMgPT0gKHNpemVfdCktMSB8fCBzID49c2l6ZW9mKHJ0cHlwYXRoKSkKLSAgICAgICAgICAgIC8qIFhYWCBkZWFsIHdpdGggZXJyb3JzIG1vcmUgZ3JhY2VmdWxseSAqLworICAgICAgICBzaXplX3QgcnRweXBhdGhfbGVuOworICAgICAgICBydHB5cGF0aCA9IF9QeV9jaGFyMndjaGFyKF9ydHB5cGF0aCwgJnJ0cHlwYXRoX2xlbik7CisgICAgICAgIGlmIChydHB5cGF0aCAhPSBOVUxMKQorICAgICAgICAgICAgYnVmc3ogKz0gcnRweXBhdGhfbGVuICsgMTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgX3J0cHlwYXRoID0gTlVMTDsKLSAgICAgICAgaWYgKF9ydHB5cGF0aCkKLSAgICAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihydHB5cGF0aCkgKyAxOwogICAgIH0KIAogICAgIGRlZnBhdGggPSBfcHl0aG9ucGF0aDsKQEAgLTY0NSw3ICs3MzksNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogUnVuLXRpbWUgdmFsdWUgb2YgJFBZVEhPTlBBVEggZ29lcyBmaXJzdCAqLwotICAgICAgICBpZiAoX3J0cHlwYXRoKSB7CisgICAgICAgIGlmIChydHB5cGF0aCkgewogICAgICAgICAgICAgd2NzY3B5KGJ1ZiwgcnRweXBhdGgpOwogICAgICAgICAgICAgd2NzY2F0KGJ1ZiwgZGVsaW1pdGVyKTsKICAgICAgICAgfQpAQCAtNzE5LDYgKzgxMyw4IEBACiAgICAgUHlNZW1fRnJlZShfcHl0aG9ucGF0aCk7CiAgICAgUHlNZW1fRnJlZShfcHJlZml4KTsKICAgICBQeU1lbV9GcmVlKF9leGVjX3ByZWZpeCk7CisgICAgaWYgKHJ0cHlwYXRoICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZyZWUocnRweXBhdGgpOwogfQogCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMgYi9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCmluZGV4IDc3ZTc2ZmUuLjkxMTViNjcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwpAQCAtMTM0LDYgKzEzNCw1MyBAQAogICAgIHJldHVybiByOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZ3JvdXBieV9yZWR1Y2UoZ3JvdXBieW9iamVjdCAqbHopCit7CisgICAgLyogcmVkdWNlIGFzIGEgJ25ldycgY2FsbCB3aXRoIGFuIG9wdGlvbmFsICdzZXRzdGF0ZScgaWYgZ3JvdXBieQorICAgICAqIGhhcyBzdGFydGVkCisgICAgICovCisgICAgUHlPYmplY3QgKnZhbHVlOworICAgIGlmIChsei0+dGd0a2V5ICYmIGx6LT5jdXJya2V5ICYmIGx6LT5jdXJydmFsdWUpCisgICAgICAgIHZhbHVlID0gUHlfQnVpbGRWYWx1ZSgiTyhPTykoT09PKSIsIFB5X1RZUEUobHopLAorICAgICAgICAgICAgbHotPml0LCBsei0+a2V5ZnVuYywgbHotPmN1cnJrZXksIGx6LT5jdXJydmFsdWUsIGx6LT50Z3RrZXkpOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAorICAgICAgICAgICAgbHotPml0LCBsei0+a2V5ZnVuYyk7CisKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2dyb3VwYnlfc2V0c3RhdGUoZ3JvdXBieW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqY3VycmtleSwgKmN1cnJ2YWx1ZSwgKnRndGtleTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoc3RhdGUsICJPT08iLCAmY3VycmtleSwgJmN1cnJ2YWx1ZSwgJnRndGtleSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0NMRUFSKGx6LT5jdXJya2V5KTsKKyAgICBsei0+Y3VycmtleSA9IGN1cnJrZXk7CisgICAgUHlfSU5DUkVGKGx6LT5jdXJya2V5KTsKKyAgICBQeV9DTEVBUihsei0+Y3VycnZhbHVlKTsKKyAgICBsei0+Y3VycnZhbHVlID0gY3VycnZhbHVlOworICAgIFB5X0lOQ1JFRihsei0+Y3VycnZhbHVlKTsKKyAgICBQeV9DTEVBUihsei0+dGd0a2V5KTsKKyAgICBsei0+dGd0a2V5ID0gdGd0a2V5OworICAgIFB5X0lOQ1JFRihsei0+dGd0a2V5KTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKworc3RhdGljIFB5TWV0aG9kRGVmIGdyb3VwYnlfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWdyb3VwYnlfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilncm91cGJ5X3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoZ3JvdXBieV9kb2MsCiAiZ3JvdXBieShpdGVyYWJsZVssIGtleWZ1bmNdKSAtPiBjcmVhdGUgYW4gaXRlcmF0b3Igd2hpY2ggcmV0dXJuc1xuXAogKGtleSwgc3ViLWl0ZXJhdG9yKSBncm91cGVkIGJ5IGVhY2ggdmFsdWUgb2Yga2V5KHZhbHVlKS5cbiIpOwpAQCAtMTY4LDcgKzIxNSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylncm91cGJ5X25leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZ3JvdXBieV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xOTQsNiArMjQxLDE3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9ncm91cGVyX3R5cGU7CiAKIHN0YXRpYyBQeU9iamVjdCAqCitfZ3JvdXBlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnBhcmVudCwgKnRndGtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFPIiwgJmdyb3VwYnlfdHlwZSwgJnBhcmVudCwgJnRndGtleSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIF9ncm91cGVyX2NyZWF0ZSgoZ3JvdXBieW9iamVjdCopIHBhcmVudCwgdGd0a2V5KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIF9ncm91cGVyX2NyZWF0ZShncm91cGJ5b2JqZWN0ICpwYXJlbnQsIFB5T2JqZWN0ICp0Z3RrZXkpCiB7CiAgICAgX2dyb3VwZXJvYmplY3QgKmlnbzsKQEAgLTI2OSw2ICszMjcsMjAgQEAKICAgICByZXR1cm4gcjsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK19ncm91cGVyX3JlZHVjZShfZ3JvdXBlcm9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgICAgICBsei0+cGFyZW50LCBsei0+dGd0a2V5KTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIF9ncm91cGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilfZ3JvdXBlcl9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9ncm91cGVyX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIml0ZXJ0b29scy5fZ3JvdXBlciIsICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwpAQCAtMjk4LDcgKzM3MCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylfZ3JvdXBlcl9uZXh0LCAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgX2dyb3VwZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0zMDgsNyArMzgwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgX2dyb3VwZXJfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIApAQCAtMzQ0LDcgKzQxNiw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRlZWRhdGFvYmplY3RfdHlwZTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXRlZWRhdGFvYmplY3RfbmV3KFB5T2JqZWN0ICppdCkKK3RlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwoUHlPYmplY3QgKml0KQogewogICAgIHRlZWRhdGFvYmplY3QgKnRkbzsKIApAQCAtMzY0LDcgKzQzNiw3IEBACiB0ZWVkYXRhb2JqZWN0X2p1bXBsaW5rKHRlZWRhdGFvYmplY3QgKnRkbykKIHsKICAgICBpZiAodGRvLT5uZXh0bGluayA9PSBOVUxMKQotICAgICAgICB0ZG8tPm5leHRsaW5rID0gdGVlZGF0YW9iamVjdF9uZXcodGRvLT5pdCk7CisgICAgICAgIHRkby0+bmV4dGxpbmsgPSB0ZWVkYXRhb2JqZWN0X25ld2ludGVybmFsKHRkby0+aXQpOwogICAgIFB5X1hJTkNSRUYodGRvLT5uZXh0bGluayk7CiAgICAgcmV0dXJuIHRkby0+bmV4dGxpbms7CiB9CkBAIC00MjAsMTEgKzQ5Miw4MSBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCh0ZG8pOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgordGVlZGF0YW9iamVjdF9yZWR1Y2UodGVlZGF0YW9iamVjdCAqdGRvKQoreworICAgIGludCBpOworICAgIC8qIGNyZWF0ZSBhIHRlbXBvcmFyeSBsaXN0IG9mIGFscmVhZHkgaXRlcmF0ZWQgdmFsdWVzICovCisgICAgUHlPYmplY3QgKnZhbHVlcyA9IFB5TGlzdF9OZXcodGRvLT5udW1yZWFkKTsKKyAgICBpZiAoIXZhbHVlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpPTAgOyBpPHRkby0+bnVtcmVhZCA7IGkrKykgeworICAgICAgICBQeV9JTkNSRUYodGRvLT52YWx1ZXNbaV0pOworICAgICAgICBQeUxpc3RfU0VUX0lURU0odmFsdWVzLCBpLCB0ZG8tPnZhbHVlc1tpXSk7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9OTykiLCBQeV9UWVBFKHRkbyksIHRkby0+aXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRkby0+bmV4dGxpbmsgPyB0ZG8tPm5leHRsaW5rIDogUHlfTm9uZSk7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgdGVlZGF0YW9iamVjdF90eXBlOworCitzdGF0aWMgUHlPYmplY3QgKgordGVlZGF0YW9iamVjdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQoreworICAgIHRlZWRhdGFvYmplY3QgKnRkbzsKKyAgICBQeU9iamVjdCAqaXQsICp2YWx1ZXMsICpuZXh0OworICAgIFB5X3NzaXplX3QgaSwgbGVuOworCisgICAgYXNzZXJ0KHR5cGUgPT0gJnRlZWRhdGFvYmplY3RfdHlwZSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTyFPIiwgJml0LCAmUHlMaXN0X1R5cGUsICZ2YWx1ZXMsICZuZXh0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0ZG8gPSAodGVlZGF0YW9iamVjdCAqKXRlZWRhdGFvYmplY3RfbmV3aW50ZXJuYWwoaXQpOworICAgIGlmICghdGRvKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh2YWx1ZXMpOworICAgIGlmIChsZW4gPiBMSU5LQ0VMTFMpCisgICAgICAgIGdvdG8gZXJyOworICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrKSB7CisgICAgICAgIHRkby0+dmFsdWVzW2ldID0gUHlMaXN0X0dFVF9JVEVNKHZhbHVlcywgaSk7CisgICAgICAgIFB5X0lOQ1JFRih0ZG8tPnZhbHVlc1tpXSk7CisgICAgfQorICAgIC8qIGxlbiA8PSBMSU5LQ0VMTFMgPCBJTlRfTUFYICovCisgICAgdGRvLT5udW1yZWFkID0gUHlfU0FGRV9ET1dOQ0FTVChsZW4sIFB5X3NzaXplX3QsIGludCk7CisKKyAgICBpZiAobGVuID09IExJTktDRUxMUykgeworICAgICAgICBpZiAobmV4dCAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBpZiAoUHlfVFlQRShuZXh0KSAhPSAmdGVlZGF0YW9iamVjdF90eXBlKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICAgICAgYXNzZXJ0KHRkby0+bmV4dGxpbmsgPT0gTlVMTCk7CisgICAgICAgICAgICBQeV9JTkNSRUYobmV4dCk7CisgICAgICAgICAgICB0ZG8tPm5leHRsaW5rID0gbmV4dDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChuZXh0ICE9IFB5X05vbmUpCisgICAgICAgICAgICBnb3RvIGVycjsgLyogc2hvdWxkbid0IGhhdmUgYSBuZXh0IGlmIHdlIGFyZSBub3QgZnVsbCAqLworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0Kil0ZG87CisKK2VycjoKKyAgICBQeV9YREVDUkVGKHRkbyk7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGFyZ3VtZW50cyIpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgdGVlZGF0YW9iamVjdF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdGVlZGF0YW9iamVjdF9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHRlZWRhdGFvYmplY3RfZG9jLCAiRGF0YSBjb250YWluZXIgY29tbW9uIHRvIG11bHRpcGxlIHRlZSBvYmplY3RzLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRlZWRhdGFvYmplY3RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoMCwgMCkgICAgICAgICAvKiBNdXN0IGZpbGwgaW4gdHlwZSB2YWx1ZSBsYXRlciAqLwotICAgICJpdGVydG9vbHMudGVlX2RhdGFvYmplY3QiLCAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgICJpdGVydG9vbHMuX3RlZV9kYXRhb2JqZWN0IiwgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZih0ZWVkYXRhb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KQEAgLTQ1MSw3ICs1OTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgdGVlZGF0YW9iamVjdF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTQ2MSw3ICs2MDMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIHRlZWRhdGFvYmplY3RfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCkBAIC01MjgsNyArNjcwLDcgQEAKICAgICB0byA9IFB5T2JqZWN0X0dDX05ldyh0ZWVvYmplY3QsICZ0ZWVfdHlwZSk7CiAgICAgaWYgKHRvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICB0by0+ZGF0YW9iaiA9ICh0ZWVkYXRhb2JqZWN0ICopdGVlZGF0YW9iamVjdF9uZXcoaXQpOworICAgIHRvLT5kYXRhb2JqID0gKHRlZWRhdGFvYmplY3QgKil0ZWVkYXRhb2JqZWN0X25ld2ludGVybmFsKGl0KTsKICAgICBpZiAoIXRvLT5kYXRhb2JqKSB7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbCh0byk7CiAgICAgICAgIHRvID0gTlVMTDsKQEAgLTU0OCw3ICs2OTAsNyBAQAogewogICAgIFB5T2JqZWN0ICppdGVyYWJsZTsKIAotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInRlZSIsIDEsIDEsICZpdGVyYWJsZSkpCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiX3RlZSIsIDEsIDEsICZpdGVyYWJsZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiB0ZWVfZnJvbWl0ZXJhYmxlKGl0ZXJhYmxlKTsKIH0KQEAgLTU3MCwxNyArNzEyLDQzIEBACiAgICAgUHlPYmplY3RfR0NfRGVsKHRvKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3RlZV9yZWR1Y2UodGVlb2JqZWN0ICp0bykKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKSkoT2kpIiwgUHlfVFlQRSh0byksIHRvLT5kYXRhb2JqLCB0by0+aW5kZXgpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgordGVlX3NldHN0YXRlKHRlZW9iamVjdCAqdG8sIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICB0ZWVkYXRhb2JqZWN0ICp0ZG87CisgICAgaW50IGluZGV4OworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk8haSIsICZ0ZWVkYXRhb2JqZWN0X3R5cGUsICZ0ZG8sICZpbmRleCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBMSU5LQ0VMTFMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0NMRUFSKHRvLT5kYXRhb2JqKTsKKyAgICB0by0+ZGF0YW9iaiA9IHRkbzsKKyAgICBQeV9JTkNSRUYodG8tPmRhdGFvYmopOworICAgIHRvLT5pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiBQeURvY19TVFJWQVIodGVlb2JqZWN0X2RvYywKICJJdGVyYXRvciB3cmFwcGVkIHRvIG1ha2UgaXQgY29weWFibGUiKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIHRlZV9tZXRob2RzW10gPSB7CiAgICAgeyJfX2NvcHlfXyIsICAgICAgICAoUHlDRnVuY3Rpb24pdGVlX2NvcHksICBNRVRIX05PQVJHUywgdGVlY29weV9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRlZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRlZV9zZXRzdGF0ZSwgICAgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IHRlZV90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJpdGVydG9vbHMudGVlIiwgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICAiaXRlcnRvb2xzLl90ZWUiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKHRlZW9iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCkBAIC02MjYsNiArNzk0LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IGksIG49MjsKICAgICBQeU9iamVjdCAqaXQsICppdGVyYWJsZSwgKmNvcHlhYmxlLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9fY29weV9fKTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xuIiwgJml0ZXJhYmxlLCAmbikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjQzLDcgKzgxMiw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKGl0LCAiX19jb3B5X18iKSkgeworICAgIGlmICghX1B5T2JqZWN0X0hhc0F0dHJJZChpdCwgJlB5SWRfX19jb3B5X18pKSB7CiAgICAgICAgIGNvcHlhYmxlID0gdGVlX2Zyb21pdGVyYWJsZShpdCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdCk7CiAgICAgICAgIGlmIChjb3B5YWJsZSA9PSBOVUxMKSB7CkBAIC02NTQsNyArODIzLDggQEAKICAgICAgICAgY29weWFibGUgPSBpdDsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwgY29weWFibGUpOwogICAgIGZvciAoaT0xIDsgaTxuIDsgaSsrKSB7Ci0gICAgICAgIGNvcHlhYmxlID0gUHlPYmplY3RfQ2FsbE1ldGhvZChjb3B5YWJsZSwgIl9fY29weV9fIiwgTlVMTCk7CisKKyAgICAgICAgY29weWFibGUgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGNvcHlhYmxlLCAmUHlJZF9fX2NvcHlfXywgTlVMTCk7CiAgICAgICAgIGlmIChjb3B5YWJsZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzY5LDYgKzkzOSwzOCBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2N5Y2xlX3JlZHVjZShjeWNsZW9iamVjdCAqbHopCit7CisgICAgLyogQ3JlYXRlIGEgbmV3IGN5Y2xlIHdpdGggdGhlIGl0ZXJhdG9yIHR1cGxlLCB0aGVuIHNldAorICAgICAqIHRoZSBzYXZlZCBzdGF0ZSBvbiBpdC4KKyAgICAgKi8KKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPKShPaSkiLCBQeV9UWVBFKGx6KSwgCisgICAgICAgIGx6LT5pdCwgbHotPnNhdmVkLCBsei0+Zmlyc3RwYXNzKTsKKyAgICB9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjeWNsZV9zZXRzdGF0ZShjeWNsZW9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqc2F2ZWQ9TlVMTDsKKyAgICBpbnQgZmlyc3RwYXNzOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk9pIiwgJnNhdmVkLCAmZmlyc3RwYXNzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfQ0xFQVIobHotPnNhdmVkKTsKKyAgICBsei0+c2F2ZWQgPSBzYXZlZDsKKyAgICBQeV9YSU5DUkVGKGx6LT5zYXZlZCk7CisgICAgbHotPmZpcnN0cGFzcyA9IGZpcnN0cGFzcyAhPSAwOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgY3ljbGVfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWN5Y2xlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pY3ljbGVfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihjeWNsZV9kb2MsCiAiY3ljbGUoaXRlcmFibGUpIC0tPiBjeWNsZSBvYmplY3RcblwKIFxuXApAQCAtODA1LDcgKzEwMDcsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY3ljbGVfbmV4dCwgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGN5Y2xlX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtOTEzLDYgKzExMTUsMzEgQEAKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitkcm9wd2hpbGVfcmVkdWNlKGRyb3B3aGlsZW9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLAorICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdGFydCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkcm9wd2hpbGVfc2V0c3RhdGUoZHJvcHdoaWxlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGludCBzdGFydCA9IFB5T2JqZWN0X0lzVHJ1ZShzdGF0ZSk7CisgICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbHotPnN0YXJ0ID0gc3RhcnQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBkcm9wd2hpbGVfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWRyb3B3aGlsZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWRyb3B3aGlsZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGRyb3B3aGlsZV9kb2MsCiAiZHJvcHdoaWxlKHByZWRpY2F0ZSwgaXRlcmFibGUpIC0tPiBkcm9wd2hpbGUgb2JqZWN0XG5cCiBcblwKQEAgLTk0OSw3ICsxMTc2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWRyb3B3aGlsZV9uZXh0LCAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBkcm9wd2hpbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMDQ1LDcgKzEyNzIsNyBAQAogICAgIH0KICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShnb29kKTsKICAgICBQeV9ERUNSRUYoZ29vZCk7Ci0gICAgaWYgKG9rID4gMCkKKyAgICBpZiAob2sgPT0gMSkKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgIGlmIChvayA9PSAwKQpAQCAtMTA1Myw2ICsxMjgwLDMwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0YWtld2hpbGVfcmVkdWNlKHRha2V3aGlsZW9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pbCIsIFB5X1RZUEUobHopLAorICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5mdW5jLCBsei0+aXQsIGx6LT5zdG9wKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Rha2V3aGlsZV9yZWR1Y2Vfc2V0c3RhdGUodGFrZXdoaWxlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIGludCBzdG9wID0gUHlPYmplY3RfSXNUcnVlKHN0YXRlKTsKKyAgICBpZiAoc3RvcCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGx6LT5zdG9wID0gc3RvcDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHRha2V3aGlsZV9yZWR1Y2VfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXRha2V3aGlsZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXRha2V3aGlsZV9yZWR1Y2Vfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CiBQeURvY19TVFJWQVIodGFrZXdoaWxlX2RvYywKICJ0YWtld2hpbGUocHJlZGljYXRlLCBpdGVyYWJsZSkgLS0+IHRha2V3aGlsZSBvYmplY3RcblwKIFxuXApAQCAtMTA4OSw3ICsxMzQwLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKXRha2V3aGlsZV9uZXh0LCAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICB0YWtld2hpbGVfcmVkdWNlX21ldGhvZHMsICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTEyNDUsNiArMTQ5Niw0NCBAQAogICAgIHJldHVybiBpdGVtOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoraXNsaWNlX3JlZHVjZShpc2xpY2VvYmplY3QgKmx6KQoreworICAgIC8qIFdoZW4gdW5waWNrbGVkLCBnZW5lcmF0ZSBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc2FtZSBib3VuZHMsCisgICAgICogdGhlbiAnc2V0c3RhdGUnIHdpdGggdGhlIG5leHQgYW5kIGNvdW50CisgICAgICovCisgICAgUHlPYmplY3QgKnN0b3A7CisgICAgaWYgKGx6LT5zdG9wID09IC0xKSB7CisgICAgICAgIHN0b3AgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYoc3RvcCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RvcCA9IFB5TG9uZ19Gcm9tU3NpemVfdChsei0+c3RvcCk7CisgICAgICAgIGlmIChzdG9wID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT25ObiluIiwgUHlfVFlQRShseiksCisgICAgICAgIGx6LT5pdCwgbHotPm5leHQsIHN0b3AsIGx6LT5zdGVwLAorICAgICAgICBsei0+Y250KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2lzbGljZV9zZXRzdGF0ZShpc2xpY2VvYmplY3QgKmx6LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBjbnQgPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoY250ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGx6LT5jbnQgPSBjbnQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBpc2xpY2VfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWlzbGljZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWlzbGljZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGlzbGljZV9kb2MsCiAiaXNsaWNlKGl0ZXJhYmxlLCBbc3RhcnQsXSBzdG9wIFssIHN0ZXBdKSAtLT4gaXNsaWNlIG9iamVjdFxuXAogXG5cCkBAIC0xMjg1LDcgKzE1NzQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpaXNsaWNlX25leHQsICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGlzbGljZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMTM4MCw2ICsxNjY5LDE5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3N0YXJtYXBfcmVkdWNlKHN0YXJtYXBvYmplY3QgKmx6KQoreworICAgIC8qIEp1c3QgcGlja2xlIHRoZSBpdGVyYXRvciAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0KTsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIHN0YXJtYXBfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXN0YXJtYXBfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihzdGFybWFwX2RvYywKICJzdGFybWFwKGZ1bmN0aW9uLCBzZXF1ZW5jZSkgLS0+IHN0YXJtYXAgb2JqZWN0XG5cCiBcblwKQEAgLTE0MTYsNyArMTcxOCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylzdGFybWFwX25leHQsICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgc3Rhcm1hcF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xNTM1LDYgKzE4MzcsNDEgQEAKICAgICByZXR1cm4gY2hhaW5fbmV4dChseik7ICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY3Vyc2UgYW5kIHVzZSBuZXh0IGFjdGl2ZSAqLwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY2hhaW5fcmVkdWNlKGNoYWlub2JqZWN0ICpseikKK3sKKyAgICBpZiAobHotPnNvdXJjZSkgeworICAgICAgICAvKiB3ZSBjYW4ndCBwaWNrbGUgZnVuY3Rpb24gb2JqZWN0cyAoaXRlcnRvb2xzLmZyb21faXRlcmFibGUpIHNvCisgICAgICAgICAqIHdlIG11c3QgdXNlIHNldHN0YXRlIHRvIHJlcGxhY2UgdGhlIGl0ZXJhYmxlLiAgT25lIGRheSB3ZQorICAgICAgICAgKiB3aWxsIGZpeCBwaWNrbGluZyBvZiBmdW5jdGlvbnMKKyAgICAgICAgICovCisgICAgICAgIGlmIChsei0+YWN0aXZlKSB7CisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygpKE9PKSIsIFB5X1RZUEUobHopLCBsei0+c291cmNlLCBsei0+YWN0aXZlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCkoTykiLCBQeV9UWVBFKGx6KSwgbHotPnNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygpIiwgUHlfVFlQRShseikpOyAvKiBleGhhdXN0ZWQgKi8KKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjaGFpbl9zZXRzdGF0ZShjaGFpbm9iamVjdCAqbHosIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeU9iamVjdCAqc291cmNlLCAqYWN0aXZlPU5VTEw7CisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk98TyIsICZzb3VyY2UsICZhY3RpdmUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0NMRUFSKGx6LT5zb3VyY2UpOworICAgIGx6LT5zb3VyY2UgPSBzb3VyY2U7CisgICAgUHlfSU5DUkVGKGx6LT5zb3VyY2UpOworICAgIFB5X0NMRUFSKGx6LT5hY3RpdmUpOworICAgIGx6LT5hY3RpdmUgPSBhY3RpdmU7CisgICAgUHlfWElOQ1JFRihsei0+YWN0aXZlKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKwogUHlEb2NfU1RSVkFSKGNoYWluX2RvYywKICJjaGFpbigqaXRlcmFibGVzKSAtLT4gY2hhaW4gb2JqZWN0XG5cCiBcblwKQEAgLTE1NTEsNiArMTg4OCwxMCBAQAogc3RhdGljIFB5TWV0aG9kRGVmIGNoYWluX21ldGhvZHNbXSA9IHsKICAgICB7ImZyb21faXRlcmFibGUiLCAoUHlDRnVuY3Rpb24pIGNoYWluX25ld19mcm9tX2l0ZXJhYmxlLCAgICAgICAgICAgIE1FVEhfTyB8IE1FVEhfQ0xBU1MsCiAgICAgICAgIGNoYWluX2Zyb21faXRlcmFibGVfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljaGFpbl9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWNoYWluX3NldHN0YXRlLCAgICBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xNzkxLDYgKzIxMzIsODMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Byb2R1Y3RfcmVkdWNlKHByb2R1Y3RvYmplY3QgKmx6KQoreworICAgIGlmIChsei0+c3RvcHBlZCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTygoKSkiLCBQeV9UWVBFKGx6KSk7CisgICAgfSBlbHNlIGlmIChsei0+cmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9PIiwgUHlfVFlQRShseiksIGx6LT5wb29scyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmluZGljZXM7CisgICAgICAgIFB5X3NzaXplX3QgbiwgaTsKKworICAgICAgICAvKiB3ZSBtdXN0IHBpY2tsZSB0aGUgaW5kaWNlcyB1c2UgdGhlbSBmb3Igc2V0c3RhdGUsIGFuZAorICAgICAgICAgKiBhZGRpdGlvbmFsbHkgaW5kaWNhdGUgdGhhdCB0aGUgaXRlcmF0b3IgaGFzIHN0YXJ0ZWQKKyAgICAgICAgICovCisgICAgICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKGx6LT5wb29scyk7CisgICAgICAgIGluZGljZXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGluZGljZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmb3IgKGk9MDsgaTxuOyBpKyspeworICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW5kaWNlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGluZGljZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiT09OIiwgUHlfVFlQRShseiksIGx6LT5wb29scywgaW5kaWNlcyk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorcHJvZHVjdF9zZXRzdGF0ZShwcm9kdWN0b2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBuLCBpOworCisgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2xzKTsKKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhdGUpIHx8IFB5VHVwbGVfR0VUX1NJWkUoc3RhdGUpICE9IG4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yIChpPTA7IGk8bjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSk7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KGluZGV4T2JqZWN0KTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7IC8qIG5vdCBhbiBpbnRlZ2VyICovCisgICAgICAgIC8qIGNsYW1wIHRoZSBpbmRleCAqLworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4tMSkKKyAgICAgICAgICAgIGluZGV4ID0gbi0xOworICAgICAgICBsei0+aW5kaWNlc1tpXSA9IGluZGV4OworICAgIH0KKworICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KG4pOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnBvb2wgPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5wb29scywgaSk7CisgICAgICAgIFB5T2JqZWN0ICplbGVtZW50ID0gUHlUdXBsZV9HRVRfSVRFTShwb29sLCBsei0+aW5kaWNlc1tpXSk7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW1lbnQpOworICAgIH0KKyAgICBQeV9DTEVBUihsei0+cmVzdWx0KTsKKyAgICBsei0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgcHJvZHVjdF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pcHJvZHVjdF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXByb2R1Y3Rfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihwcm9kdWN0X2RvYywKICJwcm9kdWN0KCppdGVyYWJsZXMpIC0tPiBwcm9kdWN0IG9iamVjdFxuXAogXG5cCkBAIC0xODM1LDcgKzIyNTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpcHJvZHVjdF9uZXh0LCAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHByb2R1Y3RfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjAyMiw2ICsyNDQwLDg2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjb21iaW5hdGlvbnNfcmVkdWNlKGNvbWJpbmF0aW9uc29iamVjdCAqbHopCit7CisgICAgaWYgKGx6LT5yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGx6KSwgbHotPnBvb2wsIGx6LT5yKTsKKyAgICB9IGVsc2UgaWYgKGx6LT5zdG9wcGVkKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpbikiLCBQeV9UWVBFKGx6KSwgbHotPnIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppbmRpY2VzOworICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgLyogd2UgbXVzdCBwaWNrbGUgdGhlIGluZGljZXMgYW5kIHVzZSB0aGVtIGZvciBzZXRzdGF0ZSAqLworICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobHotPnIpOworICAgICAgICBpZiAoIWluZGljZXMpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW5kaWNlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGluZGljZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKU4iLCBQeV9UWVBFKGx6KSwgbHotPnBvb2wsIGx6LT5yLCBpbmRpY2VzKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjb21iaW5hdGlvbnNfc2V0c3RhdGUoY29tYmluYXRpb25zb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3QgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2wpOworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBsei0+cikKKyAgICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKKyAgICB7CisgICAgICAgIFB5X3NzaXplX3QgbWF4OworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICBtYXggPSBpICsgbiAtIGx6LT5yOworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKGJld2FyZSBvZiBuZWdhdGl2ZSBtYXgpICovCisgICAgICAgIGlmIChpbmRleCA+IG1heCkKKyAgICAgICAgICAgIGluZGV4ID0gbWF4OworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBsei0+aW5kaWNlc1tpXSA9IGluZGV4OworICAgIH0KKworICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5wb29sLCBsei0+aW5kaWNlc1tpXSk7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW1lbnQpOworICAgIH0KKworICAgIFB5X0NMRUFSKGx6LT5yZXN1bHQpOworICAgIGx6LT5yZXN1bHQgPSByZXN1bHQ7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjb21iaW5hdGlvbnNfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNvbWJpbmF0aW9uc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKWNvbWJpbmF0aW9uc19zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNvbWJpbmF0aW9uc19kb2MsCiAiY29tYmluYXRpb25zKGl0ZXJhYmxlLCByKSAtLT4gY29tYmluYXRpb25zIG9iamVjdFxuXAogXG5cCkBAIC0yMDMwLDExICsyNTI4LDExIEBACiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgY29tYmluYXRpb25zX3R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCi0gICAgIml0ZXJ0b29scy5jb21iaW5hdGlvbnMiLCAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgIml0ZXJ0b29scy5jb21iaW5hdGlvbnMiLCAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihjb21iaW5hdGlvbnNvYmplY3QpLCAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKWNvbWJpbmF0aW9uc19kZWFsbG9jLCAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWNvbWJpbmF0aW9uc19kZWFsbG9jLCAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC0yMDUxLDE0ICsyNTQ5LDE0IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKICAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAvKiB0cF9mbGFncyAqLwotICAgIGNvbWJpbmF0aW9uc19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgKHRyYXZlcnNlcHJvYyljb21iaW5hdGlvbnNfdHJhdmVyc2UsICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIGNvbWJpbmF0aW9uc19kb2MsICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpY29tYmluYXRpb25zX3RyYXZlcnNlLC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIChpdGVybmV4dGZ1bmMpY29tYmluYXRpb25zX25leHQsICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgKGl0ZXJuZXh0ZnVuYyljb21iaW5hdGlvbnNfbmV4dCwgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBjb21iaW5hdGlvbnNfbWV0aG9kcywgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIwNjgsNyArMjU2Niw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIGNvbWJpbmF0aW9uc19uZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCisgICAgY29tYmluYXRpb25zX25ldywgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIApAQCAtMjI2Nyw2ICsyNzY1LDgyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjd3JfcmVkdWNlKGN3cm9iamVjdCAqbHopCit7CisgICAgaWYgKGx6LT5yZXN1bHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKGx6KSwgbHotPnBvb2wsIGx6LT5yKTsKKyAgICB9IGVsc2UgaWYgKGx6LT5zdG9wcGVkKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKCgpbikiLCBQeV9UWVBFKGx6KSwgbHotPnIpOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICppbmRpY2VzOworICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgLyogd2UgbXVzdCBwaWNrbGUgdGhlIGluZGljZXMgYW5kIHVzZSB0aGVtIGZvciBzZXRzdGF0ZSAqLworICAgICAgICBpbmRpY2VzID0gUHlUdXBsZV9OZXcobHotPnIpOworICAgICAgICBpZiAoIWluZGljZXMpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZm9yIChpPTA7IGk8bHotPnI7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KGx6LT5pbmRpY2VzW2ldKTsKKyAgICAgICAgICAgIGlmICghaW5kZXgpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaW5kaWNlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGluZGljZXMsIGksIGluZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKU4iLCBQeV9UWVBFKGx6KSwgbHotPnBvb2wsIGx6LT5yLCBpbmRpY2VzKTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitjd3Jfc2V0c3RhdGUoY3dyb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBuLCBpOworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSB8fCBQeVR1cGxlX0dFVF9TSVpFKHN0YXRlKSAhPSBsei0+cikKKyAgICB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUobHotPnBvb2wpOworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKTsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3QoaW5kZXhPYmplY3QpOworICAgICAgICBpZiAoaW5kZXggPCAwICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgLyogbm90IGFuIGludGVnZXIgKi8KKyAgICAgICAgLyogY2xhbXAgdGhlIGluZGV4ICovCisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gbi0xKQorICAgICAgICAgICAgaW5kZXggPSBuLTE7CisgICAgICAgIGx6LT5pbmRpY2VzW2ldID0gaW5kZXg7CisgICAgfQorICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KGx6LT5yKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPGx6LT5yOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5wb29sLCBsei0+aW5kaWNlc1tpXSk7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW1lbnQpOworICAgIH0KKyAgICBQeV9DTEVBUihsei0+cmVzdWx0KTsKKyAgICBsei0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgY3dyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljd3JfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbiljd3Jfc2V0c3RhdGUsICAgIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihjd3JfZG9jLAogImNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KGl0ZXJhYmxlLCByKSAtLT4gY29tYmluYXRpb25zX3dpdGhfcmVwbGFjZW1lbnQgb2JqZWN0XG5cCiBcblwKQEAgLTIyNzYsMTEgKzI4NTAsMTEgQEAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBjd3JfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50IiwgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCi0gICAgc2l6ZW9mKGN3cm9iamVjdCksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgIml0ZXJ0b29scy5jb21iaW5hdGlvbnNfd2l0aF9yZXBsYWNlbWVudCIsICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoY3dyb2JqZWN0KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCiAgICAgLyogbWV0aG9kcyAqLwotICAgIChkZXN0cnVjdG9yKWN3cl9kZWFsbG9jLCAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3Rvciljd3JfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KQEAgLTIyOTIsMTkgKzI4NjYsMTkgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8Ci0gICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgLyogdHBfZmxhZ3MgKi8KLSAgICBjd3JfZG9jLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgICh0cmF2ZXJzZXByb2MpY3dyX3RyYXZlcnNlLCAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgY3dyX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpY3dyX3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAoaXRlcm5leHRmdW5jKWN3cl9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYyljd3JfbmV4dCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgY3dyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMjMxNCw4ICsyODg4LDggQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCi0gICAgY3dyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KLSAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgY3dyX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTI1MzksNiArMzExMywxMTUgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK3Blcm11dGF0aW9uc19yZWR1Y2UocGVybXV0YXRpb25zb2JqZWN0ICpwbykKK3sKKyAgICBpZiAocG8tPnJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUocG8pLCBwby0+cG9vbCwgcG8tPnIpOworICAgIH0gZWxzZSBpZiAocG8tPnN0b3BwZWQpIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCluKSIsIFB5X1RZUEUocG8pLCBwby0+cik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmluZGljZXM9TlVMTCwgKmN5Y2xlcz1OVUxMOworICAgICAgICBQeV9zc2l6ZV90IG4sIGk7CisKKyAgICAgICAgLyogd2UgbXVzdCBwaWNrbGUgdGhlIGluZGljZXMgYW5kIGN5Y2xlcyBhbmQgdXNlIHRoZW0gZm9yIHNldHN0YXRlICovCisgICAgICAgIG4gPSBQeVR1cGxlX0dFVF9TSVpFKHBvLT5wb29sKTsKKyAgICAgICAgaW5kaWNlcyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoaW5kaWNlcyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgIGZvciAoaT0wOyBpPG47IGkrKyl7CisgICAgICAgICAgICBQeU9iamVjdCogaW5kZXggPSBQeUxvbmdfRnJvbVNzaXplX3QocG8tPmluZGljZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW5kaWNlcywgaSwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgY3ljbGVzID0gUHlUdXBsZV9OZXcocG8tPnIpOworICAgICAgICBpZiAoY3ljbGVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgZm9yIChpPTA7IGk8cG8tPnI7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgUHlPYmplY3QqIGluZGV4ID0gUHlMb25nX0Zyb21Tc2l6ZV90KHBvLT5jeWNsZXNbaV0pOworICAgICAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY3ljbGVzLCBpLCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT24pKE5OKSIsIFB5X1RZUEUocG8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwby0+cG9vbCwgcG8tPnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMsIGN5Y2xlcyk7CisgICAgZXJyOgorICAgICAgICBQeV9YREVDUkVGKGluZGljZXMpOworICAgICAgICBQeV9YREVDUkVGKGN5Y2xlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Blcm11dGF0aW9uc19zZXRzdGF0ZShwZXJtdXRhdGlvbnNvYmplY3QgKnBvLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlPYmplY3QgKmluZGljZXMsICpjeWNsZXMsICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBuLCBpOworICAgIAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShzdGF0ZSwgIk8hTyEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlUdXBsZV9UeXBlLCAmaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmN5Y2xlcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbiA9IFB5VHVwbGVfR0VUX1NJWkUocG8tPnBvb2wpOworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGluZGljZXMpICE9IG4gfHwKKyAgICAgICAgUHlUdXBsZV9HRVRfU0laRShjeWNsZXMpICE9IHBvLT5yKQorICAgIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxuOyBpKyspCisgICAgeworICAgICAgICBQeU9iamVjdCogaW5kZXhPYmplY3QgPSBQeVR1cGxlX0dFVF9JVEVNKGluZGljZXMsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICAvKiBjbGFtcCB0aGUgaW5kZXggKi8KKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgcG8tPmluZGljZXNbaV0gPSBpbmRleDsKKyAgICB9CisKKyAgICBmb3IgKGk9MDsgaTxwby0+cjsgaSsrKQorICAgIHsKKyAgICAgICAgUHlPYmplY3QqIGluZGV4T2JqZWN0ID0gUHlUdXBsZV9HRVRfSVRFTShjeWNsZXMsIGkpOworICAgICAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChpbmRleE9iamVjdCk7CisgICAgICAgIGlmIChpbmRleCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOyAvKiBub3QgYW4gaW50ZWdlciAqLworICAgICAgICBpZiAoaW5kZXggPCAxKQorICAgICAgICAgICAgaW5kZXggPSAxOworICAgICAgICBlbHNlIGlmIChpbmRleCA+IG4taSkKKyAgICAgICAgICAgIGluZGV4ID0gbi1pOworICAgICAgICBwby0+Y3ljbGVzW2ldID0gaW5kZXg7CisgICAgfQorICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KHBvLT5yKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPHBvLT5yOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBQeVR1cGxlX0dFVF9JVEVNKHBvLT5wb29sLCBwby0+aW5kaWNlc1tpXSk7CisgICAgICAgIFB5X0lOQ1JFRihlbGVtZW50KTsKKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIGVsZW1lbnQpOworICAgIH0KKyAgICBQeV9DTEVBUihwby0+cmVzdWx0KTsKKyAgICBwby0+cmVzdWx0ID0gcmVzdWx0OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgcGVybXVhdGlvbnNfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKXBlcm11dGF0aW9uc19yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXBlcm11dGF0aW9uc19zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHBlcm11dGF0aW9uc19kb2MsCiAicGVybXV0YXRpb25zKGl0ZXJhYmxlWywgcl0pIC0tPiBwZXJtdXRhdGlvbnMgb2JqZWN0XG5cCiBcblwKQEAgLTI1NzUsNyArMzI1OCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylwZXJtdXRhdGlvbnNfbmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBwZXJtdWF0aW9uc19tZXRob2RzLCAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTI1OTUsNiArMzI3OCw3IEBACiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICp0b3RhbDsKICAgICBQeU9iamVjdCAqaXQ7CisgICAgUHlPYmplY3QgKmJpbm9wOwogfSBhY2N1bXVsYXRlb2JqZWN0OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGFjY3VtdWxhdGVfdHlwZTsKQEAgLTI2MDIsMTIgKzMyODYsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBhY2N1bXVsYXRlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dhcmdzW10gPSB7Iml0ZXJhYmxlIiwgTlVMTH07CisgICAgc3RhdGljIGNoYXIgKmt3YXJnc1tdID0geyJpdGVyYWJsZSIsICJmdW5jIiwgTlVMTH07CiAgICAgUHlPYmplY3QgKml0ZXJhYmxlOwogICAgIFB5T2JqZWN0ICppdDsKKyAgICBQeU9iamVjdCAqYmlub3AgPSBQeV9Ob25lOwogICAgIGFjY3VtdWxhdGVvYmplY3QgKmx6OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86YWNjdW11bGF0ZSIsIGt3YXJncywgJml0ZXJhYmxlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPOmFjY3VtdWxhdGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncywgJml0ZXJhYmxlLCAmYmlub3ApKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIEdldCBpdGVyYXRvci4gKi8KQEAgLTI2MjIsNiArMzMwOCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBpZiAoYmlub3AgIT0gUHlfTm9uZSkgeworICAgICAgICBQeV9YSU5DUkVGKGJpbm9wKTsKKyAgICAgICAgbHotPmJpbm9wID0gYmlub3A7CisgICAgfQogICAgIGx6LT50b3RhbCA9IE5VTEw7CiAgICAgbHotPml0ID0gaXQ7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWx6OwpAQCAtMjYzMSw2ICszMzIxLDcgQEAKIGFjY3VtdWxhdGVfZGVhbGxvYyhhY2N1bXVsYXRlb2JqZWN0ICpseikKIHsKICAgICBQeU9iamVjdF9HQ19VblRyYWNrKGx6KTsKKyAgICBQeV9YREVDUkVGKGx6LT5iaW5vcCk7CiAgICAgUHlfWERFQ1JFRihsei0+dG90YWwpOwogICAgIFB5X1hERUNSRUYobHotPml0KTsKICAgICBQeV9UWVBFKGx6KS0+dHBfZnJlZShseik7CkBAIC0yNjM5LDYgKzMzMzAsNyBAQAogc3RhdGljIGludAogYWNjdW11bGF0ZV90cmF2ZXJzZShhY2N1bXVsYXRlb2JqZWN0ICpseiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CisgICAgUHlfVklTSVQobHotPmJpbm9wKTsKICAgICBQeV9WSVNJVChsei0+aXQpOwogICAgIFB5X1ZJU0lUKGx6LT50b3RhbCk7CiAgICAgcmV0dXJuIDA7CkBAIC0yNjU4LDggKzMzNTAsMTEgQEAKICAgICAgICAgbHotPnRvdGFsID0gdmFsOwogICAgICAgICByZXR1cm4gbHotPnRvdGFsOwogICAgIH0KLSAgIAotICAgIG5ld3RvdGFsID0gUHlOdW1iZXJfQWRkKGx6LT50b3RhbCwgdmFsKTsKKworICAgIGlmIChsei0+Ymlub3AgPT0gTlVMTCkgCisgICAgICAgIG5ld3RvdGFsID0gUHlOdW1iZXJfQWRkKGx6LT50b3RhbCwgdmFsKTsKKyAgICBlbHNlCisgICAgICAgIG5ld3RvdGFsID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhsei0+Ymlub3AsIGx6LT50b3RhbCwgdmFsLCBOVUxMKTsKICAgICBQeV9ERUNSRUYodmFsKTsKICAgICBpZiAobmV3dG90YWwgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNjcyLDEwICszMzY3LDM1IEBACiAgICAgcmV0dXJuIG5ld3RvdGFsOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorYWNjdW11bGF0ZV9yZWR1Y2UoYWNjdW11bGF0ZW9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pTyIsIFB5X1RZUEUobHopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT5pdCwgbHotPmJpbm9wP2x6LT5iaW5vcDpQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LT50b3RhbD9sei0+dG90YWw6UHlfTm9uZSk7CisgfQorCitzdGF0aWMgUHlPYmplY3QgKgorYWNjdW11bGF0ZV9zZXRzdGF0ZShhY2N1bXVsYXRlb2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X0NMRUFSKGx6LT50b3RhbCk7CisgICAgbHotPnRvdGFsID0gc3RhdGU7CisgICAgUHlfSU5DUkVGKGx6LT50b3RhbCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBhY2N1bXVsYXRlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilhY2N1bXVsYXRlX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pYWNjdW11bGF0ZV9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGFjY3VtdWxhdGVfZG9jLAotImFjY3VtdWxhdGUoaXRlcmFibGUpIC0tPiBhY2N1bXVsYXRlIG9iamVjdFxuXAorImFjY3VtdWxhdGUoaXRlcmFibGVbLCBmdW5jXSkgLS0+IGFjY3VtdWxhdGUgb2JqZWN0XG5cCiBcblwKLVJldHVybiBzZXJpZXMgb2YgYWNjdW11bGF0ZWQgc3Vtcy4iKTsKK1JldHVybiBzZXJpZXMgb2YgYWNjdW11bGF0ZWQgc3VtcyAob3Igb3RoZXIgYmluYXJ5IGZ1bmN0aW9uIHJlc3VsdHMpLiIpOwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IGFjY3VtdWxhdGVfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKQEAgLTI3MDcsNyArMzQyNyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYylhY2N1bXVsYXRlX25leHQsICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgYWNjdW11bGF0ZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0yODE5LDExICszNTM5LDI0IEBACiAgICAgICAgIGlmIChvayA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIGRhdHVtOwogICAgICAgICBQeV9ERUNSRUYoZGF0dW0pOwotICAgICAgICBpZiAob2sgPT0gLTEpCisgICAgICAgIGlmIChvayA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjb21wcmVzc19yZWR1Y2UoY29tcHJlc3NvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLAorICAgICAgICBsei0+ZGF0YSwgbHotPnNlbGVjdG9ycyk7CisgICAgfQorCitzdGF0aWMgUHlNZXRob2REZWYgY29tcHJlc3NfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgICAgKFB5Q0Z1bmN0aW9uKWNvbXByZXNzX3JlZHVjZSwgICAgICBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoY29tcHJlc3NfZG9jLAogImNvbXByZXNzKGRhdGEsIHNlbGVjdG9ycykgLS0+IGl0ZXJhdG9yIG92ZXIgc2VsZWN0ZWQgZGF0YVxuXAogXG5cCkBAIC0yODYxLDcgKzM1OTQsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpY29tcHJlc3NfbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgY29tcHJlc3NfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTI5NzAsNiArMzcwMywxOSBAQAogICAgIH0KIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2ZpbHRlcmZhbHNlX3JlZHVjZShmaWx0ZXJmYWxzZW9iamVjdCAqbHopCit7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oT08pIiwgUHlfVFlQRShseiksCisgICAgICAgIGx6LT5mdW5jLCBsei0+aXQpOworICAgIH0KKworc3RhdGljIFB5TWV0aG9kRGVmIGZpbHRlcmZhbHNlX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilmaWx0ZXJmYWxzZV9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGZpbHRlcmZhbHNlX2RvYywKICJmaWx0ZXJmYWxzZShmdW5jdGlvbiBvciBOb25lLCBzZXF1ZW5jZSkgLS0+IGZpbHRlcmZhbHNlIG9iamVjdFxuXAogXG5cCkBAIC0zMDA2LDcgKzM3NTIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpZmlsdGVyZmFsc2VfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGZpbHRlcmZhbHNlX21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMzIwMCwxMSArMzk0Niw5IEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8obikiLCBQeV9UWVBFKGx6KSwgbHotPmNudCk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3VudF9yZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKLQogc3RhdGljIFB5TWV0aG9kRGVmIGNvdW50X21ldGhvZHNbXSA9IHsKICAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbiljb3VudF9yZWR1Y2UsICAgICAgTUVUSF9OT0FSR1MsCi0gICAgIGNvdW50X3JlZHVjZV9kb2N9LAorICAgICByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTMzNDUsOCArNDA4OSwyMSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCityZXBlYXRfcmVkdWNlKHJlcGVhdG9iamVjdCAqcm8pCit7CisgICAgLyogdW5waWNrbGUgdGhpcyBzbyB0aGF0IGEgbmV3IHJlcGVhdCBpdGVyYXRvciBpcyBjb25zdHJ1Y3RlZCB3aXRoIGFuCisgICAgICogb2JqZWN0LCB0aGVuIGNhbGwgX19zZXRzdGF0ZV9fIG9uIGl0IHRvIHNldCBjbnQKKyAgICAgKi8KKyAgICBpZiAocm8tPmNudCA+PSAwKQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTyhPbikiLCBQeV9UWVBFKHJvKSwgcm8tPmVsZW1lbnQsIHJvLT5jbnQpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oTykiLCBQeV9UWVBFKHJvKSwgcm8tPmVsZW1lbnQpOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgcmVwZWF0X21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilyZXBlYXRfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilyZXBlYXRfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTM1NzIsNiArNDMyOSw0OSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCit6aXBfbG9uZ2VzdF9yZWR1Y2UoemlwbG9uZ2VzdG9iamVjdCAqbHopCit7CisgICAgCisgICAgLyogQ3JlYXRlIGEgbmV3IHR1cGxlIHdpdGggZW1wdHkgc2VxdWVuY2VzIHdoZXJlIGFwcHJvcHJpYXRlIHRvIHBpY2tsZS4KKyAgICAgKiBUaGVuIHVzZSBzZXRzdGF0ZSB0byBzZXQgdGhlIGZpbGx2YWx1ZQorICAgICAqLworICAgIGludCBpOworICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcoUHlUdXBsZV9HRVRfU0laRShsei0+aXR0dXBsZSkpOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPFB5VHVwbGVfR0VUX1NJWkUobHotPml0dHVwbGUpOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5pdHR1cGxlLCBpKTsKKyAgICAgICAgaWYgKGVsZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgZWxlbSA9IFB5VHVwbGVfTmV3KDApOworICAgICAgICAgICAgaWYgKGVsZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBQeV9JTkNSRUYoZWxlbSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaSwgZWxlbSk7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTk8iLCBQeV9UWVBFKGx6KSwgYXJncywgbHotPmZpbGx2YWx1ZSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit6aXBfbG9uZ2VzdF9zZXRzdGF0ZSh6aXBsb25nZXN0b2JqZWN0ICpseiwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X0NMRUFSKGx6LT5maWxsdmFsdWUpOworICAgIGx6LT5maWxsdmFsdWUgPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYobHotPmZpbGx2YWx1ZSk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB6aXBfbG9uZ2VzdF9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pemlwX2xvbmdlc3RfcmVkdWNlLCAgICAgIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbil6aXBfbG9uZ2VzdF9zZXRzdGF0ZSwgICAgTUVUSF9PLAorICAgICBzZXRzdGF0ZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHppcF9sb25nZXN0X2RvYywKICJ6aXBfbG9uZ2VzdChpdGVyMSBbLGl0ZXIyIFsuLi5dXSwgW2ZpbGx2YWx1ZT1Ob25lXSkgLS0+IHppcF9sb25nZXN0IG9iamVjdFxuXAogXG5cCkBAIC0zNjEzLDcgKzQ0MTMsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIChpdGVybmV4dGZ1bmMpemlwX2xvbmdlc3RfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHppcF9sb25nZXN0X21ldGhvZHMsICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpAQCAtMzYzOCw3ICs0NDM4LDcgQEAKIHJlcGVhdChlbGVtIFssbl0pIC0tPiBlbGVtLCBlbGVtLCBlbGVtLCAuLi4gZW5kbGVzc2x5IG9yIHVwIHRvIG4gdGltZXNcblwKIFxuXAogSXRlcmF0b3JzIHRlcm1pbmF0aW5nIG9uIHRoZSBzaG9ydGVzdCBpbnB1dCBzZXF1ZW5jZTpcblwKLWFjY3VtdWxhdGUocCwgc3RhcnQ9MCkgLS0+IHAwLCBwMCtwMSwgcDArcDErcDJcblwKK2FjY3VtdWxhdGUocFssIGZ1bmNdKSAtLT4gcDAsIHAwK3AxLCBwMCtwMStwMlxuXAogY2hhaW4ocCwgcSwgLi4uKSAtLT4gcDAsIHAxLCAuLi4gcGxhc3QsIHEwLCBxMSwgLi4uIFxuXAogY29tcHJlc3MoZGF0YSwgc2VsZWN0b3JzKSAtLT4gKGRbMF0gaWYgc1swXSksIChkWzFdIGlmIHNbMV0pLCAuLi5cblwKIGRyb3B3aGlsZShwcmVkLCBzZXEpIC0tPiBzZXFbbl0sIHNlcVtuKzFdLCBzdGFydGluZyB3aGVuIHByZWQgZmFpbHNcblwKQEAgLTM3MDEsNiArNDUwMSw5IEBACiAgICAgICAgICZwcm9kdWN0X3R5cGUsCiAgICAgICAgICZyZXBlYXRfdHlwZSwKICAgICAgICAgJmdyb3VwYnlfdHlwZSwKKyAgICAgICAgJl9ncm91cGVyX3R5cGUsCisgICAgICAgICZ0ZWVfdHlwZSwKKyAgICAgICAgJnRlZWRhdGFvYmplY3RfdHlwZSwKICAgICAgICAgTlVMTAogICAgIH07CiAKQEAgLTM3MTgsMTEgKzQ1MjEsNSBAQAogICAgICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgbmFtZSsxLCAoUHlPYmplY3QgKil0eXBlbGlzdFtpXSk7CiAgICAgfQogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmdGVlZGF0YW9iamVjdF90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJnRlZV90eXBlKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR5cGVfUmVhZHkoJl9ncm91cGVyX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCmluZGV4IDVkMWQ4OTYuLmExNmNlNjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWFpbi5jCisrKyBiL01vZHVsZXMvbWFpbi5jCkBAIC02LDYgKzYsNyBAQAogI2luY2x1ZGUgPGxvY2FsZS5oPgogCiAjaWZkZWYgX19WTVMKKyNlcnJvciAiUEVQIDExOiBWTVMgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgogI2luY2x1ZGUgPHVuaXhsaWIuaD4KICNlbmRpZgogCkBAIC03Miw5ICs3Myw2IEBACiAtTyAgICAgOiBvcHRpbWl6ZSBnZW5lcmF0ZWQgYnl0ZWNvZGUgc2xpZ2h0bHk7IGFsc28gUFlUSE9OT1BUSU1JWkU9eFxuXAogLU9PICAgIDogcmVtb3ZlIGRvYy1zdHJpbmdzIGluIGFkZGl0aW9uIHRvIHRoZSAtTyBvcHRpbWl6YXRpb25zXG5cCiAtcSAgICAgOiBkb24ndCBwcmludCB2ZXJzaW9uIGFuZCBjb3B5cmlnaHQgbWVzc2FnZXMgb24gaW50ZXJhY3RpdmUgc3RhcnR1cFxuXAotLVIgICAgIDogdXNlIGEgcHNldWRvLXJhbmRvbSBzYWx0IHRvIG1ha2UgaGFzaCgpIHZhbHVlcyBvZiB2YXJpb3VzIHR5cGVzIGJlXG5cCi0gICAgICAgICB1bnByZWRpY3RhYmxlIGJldHdlZW4gc2VwYXJhdGUgaW52b2NhdGlvbnMgb2YgdGhlIGludGVycHJldGVyLCBhc1xuXAotICAgICAgICAgYSBkZWZlbmNlIGFnYWluc3QgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrc1xuXAogLXMgICAgIDogZG9uJ3QgYWRkIHVzZXIgc2l0ZSBkaXJlY3RvcnkgdG8gc3lzLnBhdGg7IGFsc28gUFlUSE9OTk9VU0VSU0lURVxuXAogLVMgICAgIDogZG9uJ3QgaW1wbHkgJ2ltcG9ydCBzaXRlJyBvbiBpbml0aWFsaXphdGlvblxuXAogIjsKQEAgLTEwMiwxMyArMTAwLDE0IEBACiAiUFlUSE9OSE9NRSAgIDogYWx0ZXJuYXRlIDxwcmVmaXg+IGRpcmVjdG9yeSAob3IgPHByZWZpeD4lYzxleGVjX3ByZWZpeD4pLlxuIgogIiAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IG1vZHVsZSBzZWFyY2ggcGF0aCB1c2VzICVzLlxuIgogIlBZVEhPTkNBU0VPSyA6IGlnbm9yZSBjYXNlIGluICdpbXBvcnQnIHN0YXRlbWVudHMgKFdpbmRvd3MpLlxuIgotIlBZVEhPTklPRU5DT0RJTkc6IEVuY29kaW5nWzplcnJvcnNdIHVzZWQgZm9yIHN0ZGluL3N0ZG91dC9zdGRlcnIuXG5cCisiUFlUSE9OSU9FTkNPRElORzogRW5jb2RpbmdbOmVycm9yc10gdXNlZCBmb3Igc3RkaW4vc3Rkb3V0L3N0ZGVyci5cbiIKKyJQWVRIT05GQVVMVEhBTkRMRVI6IGR1bXAgdGhlIFB5dGhvbiB0cmFjZWJhY2sgb24gZmF0YWwgZXJyb3JzLlxuXAogIjsKIHN0YXRpYyBjaGFyICp1c2FnZV82ID0gIlwKLVBZVEhPTkhBU0hTRUVEOiBpZiB0aGlzIHZhcmlhYmxlIGlzIHNldCB0byAncmFuZG9tJywgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZVxuXAotICAgYXMgc3BlY2lmeWluZyB0aGUgLVIgb3B0aW9uOiBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkIHRvIHNlZWQgdGhlIGhhc2hlcyBvZlxuXAotICAgc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlIHNldCB0byBhbiBpbnRlZ2VyXG5cCi0gICBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYSBwcmVkaWN0YWJsZSBzZWVkLlxuXAorUFlUSE9OSEFTSFNFRUQ6IGlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvICdyYW5kb20nLCBhIHJhbmRvbSB2YWx1ZSBpcyB1c2VkXG5cCisgICB0byBzZWVkIHRoZSBoYXNoZXMgb2Ygc3RyLCBieXRlcyBhbmQgZGF0ZXRpbWUgb2JqZWN0cy4gIEl0IGNhbiBhbHNvIGJlXG5cCisgICBzZXQgdG8gYW4gaW50ZWdlciBpbiB0aGUgcmFuZ2UgWzAsNDI5NDk2NzI5NV0gdG8gZ2V0IGhhc2ggdmFsdWVzIHdpdGggYVxuXAorICAgcHJlZGljdGFibGUgc2VlZC5cblwKICI7CiAKIHN0YXRpYyBpbnQKQEAgLTIyNSw3ICsyMjQsNyBAQAogICAgIGlmIChpbXBvcnRlciA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgaWYgKGltcG9ydGVyLT5vYl90eXBlID09ICZQeU51bGxJbXBvcnRlcl9UeXBlKSB7CisgICAgaWYgKGltcG9ydGVyID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3YwKTsKICAgICAgICAgUHlfREVDUkVGKGltcG9ydGVyKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMzQ1LDIxICszNDQsMTMgQEAKICAgICAgICAgICAgICAgIG5vdCBpbnRlcnByZXRlciBvcHRpb25zLiAqLwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChjKSB7Ci0gICAgICAgIGNhc2UgJ0UnOgorICAgICAgICBpZiAoYyA9PSAnRScpIHsKICAgICAgICAgICAgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZysrOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnKys7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICAvKiBUaGUgdmFyaWFibGUgaXMgb25seSB0ZXN0ZWQgZm9yIGV4aXN0ZW5jZSBoZXJlOyBfUHlSYW5kb21fSW5pdCB3aWxsCi0gICAgICAgY2hlY2sgaXRzIHZhbHVlIGZ1cnRoZXIuICovCi0gICAgaWYgKCFQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgJiYKLSAgICAgICAgKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCi0gICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDE7CiAKKyAgICBQeV9IYXNoUmFuZG9taXphdGlvbkZsYWcgPSAxOwogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKICAgICBQeVN5c19SZXNldFdhcm5PcHRpb25zKCk7CkBAIC00NjYsNyArNDU3LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ1InOgotICAgICAgICAgICAgLyogQWxyZWFkeSBoYW5kbGVkIGFib3ZlICovCisgICAgICAgICAgICAvKiBJZ25vcmVkICovCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAvKiBUaGlzIHNwYWNlIHJlc2VydmVkIGZvciBvdGhlciBvcHRpb25zICovCkBAIC01MzMsMTYgKzUyNCwxMyBAQAogICAgICAgICAgICAgLyogVXNlIHV0Zi04IG9uIE1hYyBPUyBYICovCiAgICAgICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcocCk7CiAjZWxzZQotICAgICAgICAgICAgd2NoYXJfdCAqd2NoYXI7Ci0gICAgICAgICAgICBzaXplX3QgbGVuOwotICAgICAgICAgICAgd2NoYXIgPSBfUHlfY2hhcjJ3Y2hhcihwLCAmbGVuKTsKLSAgICAgICAgICAgIGlmICh3Y2hhciA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod2NoYXIsIGxlbik7Ci0gICAgICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKKyAgICAgICAgICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHAsICJzdXJyb2dhdGVlc2NhcGUiKTsKICNlbmRpZgotICAgICAgICAgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBpZ25vcmUgZXJyb3JzICovCisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlKHVuaWNvZGUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOwogICAgICAgICB9CkBAIC02MTcsNyArNjA1LDYgQEAKICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkVYRUNVVEFCTEUiKSkgJiYgKnAgIT0gJ1wwJykgewogICAgICAgICB3Y2hhcl90KiBidWZmZXI7CiAgICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4ocCkgKyAxOwotICAgICAgICBzaXplX3QgcjsKIAogICAgICAgICBidWZmZXIgPSBtYWxsb2MobGVuICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CkBAIC02MjUsMTEgKzYxMiwzMyBAQAogICAgICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9ORVhFQ1VUQUJMRSIpOwogICAgICAgICB9CiAKLSAgICAgICAgciA9IG1ic3Rvd2NzKGJ1ZmZlciwgcCwgbGVuKTsKKyAgICAgICAgbWJzdG93Y3MoYnVmZmVyLCBwLCBsZW4pOwogICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShidWZmZXIpOwogICAgICAgICAvKiBidWZmZXIgaXMgbm93IGhhbmRlZCBvZmYgLSBkbyBub3QgZnJlZSAqLwogICAgIH0gZWxzZSB7CisjaWZkZWYgV0lUSF9ORVhUX0ZSQU1FV09SSworICAgICAgICBjaGFyKiBweXZlbnZfbGF1bmNoZXIgPSBnZXRlbnYoIl9fUFlWRU5WX0xBVU5DSEVSX18iKTsKKworICAgICAgICBpZiAocHl2ZW52X2xhdW5jaGVyICYmICpweXZlbnZfbGF1bmNoZXIpIHsKKyAgICAgICAgICAgIC8qIFVzZWQgYnkgTWFjL1Rvb2xzL3B5dGhvbncuYyB0byBmb3J3YXJkCisgICAgICAgICAgICAgKiB0aGUgYXJndjAgb2YgdGhlIHN0dWIgZXhlY3V0YWJsZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICB3Y2hhcl90KiB3YnVmID0gX1B5X2NoYXIyd2NoYXIocHl2ZW52X2xhdW5jaGVyLCBOVUxMKTsKKworICAgICAgICAgICAgaWYgKHdidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbm5vdCBkZWNvZGUgX19QWVZFTlZfTEFVTkNIRVJfXyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUod2J1Zik7CisKKyAgICAgICAgICAgIC8qIERvbid0IGZyZWUgd2J1ZiwgdGhlIGFyZ3VtZW50IHRvIFB5X1NldFByb2dyYW1OYW1lCisgICAgICAgICAgICAgKiBtdXN0IHJlbWFpbiB2YWxpZCB1bnRpbCB0aGUgUHlfRmluYWxpemUgaXMgY2FsbGVkLgorICAgICAgICAgICAgICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9TZXRQcm9ncmFtTmFtZShhcmd2WzBdKTsKKyAgICAgICAgfQorI2Vsc2UKICAgICAgICAgUHlfU2V0UHJvZ3JhbU5hbWUoYXJndlswXSk7CisjZW5kaWYKICAgICB9CiAjZWxzZQogICAgIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tYXRobW9kdWxlLmMgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwppbmRleCAxNDJlY2E0Li4zZmE1MmQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21hdGhtb2R1bGUuYworKysgYi9Nb2R1bGVzL21hdGhtb2R1bGUuYwpAQCAtNTUsMTEgKzU1LDYgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJfbWF0aC5oIgogCi0jaWZkZWYgX09TRl9TT1VSQ0UKLS8qIE9TRjEgNS4xIGRvZXNuJ3QgbWFrZSB0aGlzIGF2YWlsYWJsZSB3aXRoIFhPUEVOX1NPVVJDRV9FWFRFTkRFRCBkZWZpbmVkICovCi1leHRlcm4gZG91YmxlIGNvcHlzaWduKGRvdWJsZSwgZG91YmxlKTsKLSNlbmRpZgotCiAvKgogICAgc2luKHBpKngpLCBnaXZpbmcgYWNjdXJhdGUgcmVzdWx0cyBmb3IgYWxsIGZpbml0ZSB4IChlc3BlY2lhbGx5IHgKICAgIGludGVncmFsIG9yIGNsb3NlIHRvIGFuIGludGVnZXIpLiAgVGhpcyBpcyBoZXJlIGZvciB1c2UgaW4gdGhlCkBAIC0yNDQsNyArMjM5LDggQEAKICAgICB9CiAgICAgaWYgKHggPT0gMC4wKSB7CiAgICAgICAgIGVycm5vID0gRURPTTsKLSAgICAgICAgcmV0dXJuIDEuMC94OyAvKiB0Z2FtbWEoKy0wLjApID0gKy1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgICAgIC8qIHRnYW1tYSgrLTAuMCkgPSArLWluZiwgZGl2aWRlLWJ5LXplcm8gKi8KKyAgICAgICAgcmV0dXJuIGNvcHlzaWduKFB5X0hVR0VfVkFMLCB4KTsKICAgICB9CiAKICAgICAvKiBpbnRlZ2VyIGFyZ3VtZW50cyAqLwpAQCAtNTgyLDYgKzU3OCw2MSBAQAogICAgIH0KIH0KIAorLyoKKyAgIGxvZzI6IGxvZyB0byBiYXNlIDIuCisKKyAgIFVzZXMgYW4gYWxnb3JpdGhtIHRoYXQgc2hvdWxkOgorCisgICAgIChhKSBwcm9kdWNlIGV4YWN0IHJlc3VsdHMgZm9yIHBvd2VycyBvZiAyLCBhbmQKKyAgICAgKGIpIGdpdmUgYSBtb25vdG9uaWMgbG9nMiAoZm9yIHBvc2l0aXZlIGZpbml0ZSBmbG9hdHMpLAorICAgICAgICAgYXNzdW1pbmcgdGhhdCB0aGUgc3lzdGVtIGxvZyBpcyBtb25vdG9uaWMuCisqLworCitzdGF0aWMgZG91YmxlCittX2xvZzIoZG91YmxlIHgpCit7CisgICAgaWYgKCFQeV9JU19GSU5JVEUoeCkpIHsKKyAgICAgICAgaWYgKFB5X0lTX05BTih4KSkKKyAgICAgICAgICAgIHJldHVybiB4OyAvKiBsb2cyKG5hbikgPSBuYW4gKi8KKyAgICAgICAgZWxzZSBpZiAoeCA+IDAuMCkKKyAgICAgICAgICAgIHJldHVybiB4OyAvKiBsb2cyKCtpbmYpID0gK2luZiAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgICAgIHJldHVybiBQeV9OQU47IC8qIGxvZzIoLWluZikgPSBuYW4sIGludmFsaWQtb3BlcmF0aW9uICovCisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoeCA+IDAuMCkgeworI2lmZGVmIEhBVkVfTE9HMgorICAgICAgICByZXR1cm4gbG9nMih4KTsKKyNlbHNlCisgICAgICAgIGRvdWJsZSBtOworICAgICAgICBpbnQgZTsKKyAgICAgICAgbSA9IGZyZXhwKHgsICZlKTsKKyAgICAgICAgLyogV2Ugd2FudCBsb2cyKG0gKiAyKiplKSA9PSBsb2cobSkgLyBsb2coMikgKyBlLiAgQ2FyZSBpcyBuZWVkZWQgd2hlbgorICAgICAgICAgKiB4IGlzIGp1c3QgZ3JlYXRlciB0aGFuIDEuMDogaW4gdGhhdCBjYXNlIGUgaXMgMSwgbG9nKG0pIGlzIG5lZ2F0aXZlLAorICAgICAgICAgKiBhbmQgd2UgZ2V0IHNpZ25pZmljYW50IGNhbmNlbGxhdGlvbiBlcnJvciBmcm9tIHRoZSBhZGRpdGlvbiBvZgorICAgICAgICAgKiBsb2cobSkgLyBsb2coMikgdG8gZS4gIFRoZSBzbGlnaHQgcmV3cml0ZSBvZiB0aGUgZXhwcmVzc2lvbiBiZWxvdworICAgICAgICAgKiBhdm9pZHMgdGhpcyBwcm9ibGVtLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHggPj0gMS4wKSB7CisgICAgICAgICAgICByZXR1cm4gbG9nKDIuMCAqIG0pIC8gbG9nKDIuMCkgKyAoZSAtIDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxvZyhtKSAvIGxvZygyLjApICsgZTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gMC4wKSB7CisgICAgICAgIGVycm5vID0gRURPTTsKKyAgICAgICAgcmV0dXJuIC1QeV9IVUdFX1ZBTDsgLyogbG9nMigwKSA9IC1pbmYsIGRpdmlkZS1ieS16ZXJvICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBlcnJubyA9IEVET007CisgICAgICAgIHJldHVybiBQeV9OQU47IC8qIGxvZzIoLWluZikgPSBuYW4sIGludmFsaWQtb3BlcmF0aW9uICovCisgICAgfQorfQorCiBzdGF0aWMgZG91YmxlCiBtX2xvZzEwKGRvdWJsZSB4KQogewpAQCAtODM2LDEwICs4ODcsMTAgQEAKICAgICAgICJhdGFuaCh4KVxuXG5SZXR1cm4gdGhlIGh5cGVyYm9saWMgYXJjIHRhbmdlbnQgKG1lYXN1cmVkIGluIHJhZGlhbnMpIG9mIHguIikKIAogc3RhdGljIFB5T2JqZWN0ICogbWF0aF9jZWlsKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKSB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpjZWlsX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19jZWlsX18pOwogICAgIFB5T2JqZWN0ICptZXRob2QsICpyZXN1bHQ7CiAKLSAgICBtZXRob2QgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChudW1iZXIsICJfX2NlaWxfXyIsICZjZWlsX3N0cik7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX2NlaWxfXyk7CiAgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04NzQsMTAgKzkyNSwxMCBAQAogICAgICAgImZhYnMoeClcblxuUmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgZmxvYXQgeC4iKQogCiBzdGF0aWMgUHlPYmplY3QgKiBtYXRoX2Zsb29yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbnVtYmVyKSB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpmbG9vcl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZmxvb3JfXyk7CiAgICAgUHlPYmplY3QgKm1ldGhvZCwgKnJlc3VsdDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fZmxvb3JfXyIsICZmbG9vcl9zdHIpOworICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgJlB5SWRfX19mbG9vcl9fKTsKICAgICBpZiAobWV0aG9kID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzODMsNyArMTQzNCw3IEBACiAgICAgfQogCiAgICAgLyogdXNlIGxvb2t1cCB0YWJsZSBpZiB4IGlzIHNtYWxsICovCi0gICAgaWYgKHggPCAobG9uZykoc2l6ZW9mKFNtYWxsRmFjdG9yaWFscykvc2l6ZW9mKFNtYWxsRmFjdG9yaWFsc1swXSkpKQorICAgIGlmICh4IDwgKGxvbmcpUHlfQVJSQVlfTEVOR1RIKFNtYWxsRmFjdG9yaWFscykpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhTbWFsbEZhY3RvcmlhbHNbeF0pOwogCiAgICAgLyogZWxzZSBleHByZXNzIGluIHRoZSBmb3JtIG9kZF9wYXJ0ICogMioqdHdvX3ZhbHVhdGlvbiwgYW5kIGNvbXB1dGUgYXMKQEAgLTE0MTAsNyArMTQ2MSw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWF0aF90cnVuYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm51bWJlcikKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnRydW5jX3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX190cnVuY19fKTsKICAgICBQeU9iamVjdCAqdHJ1bmMsICpyZXN1bHQ7CiAKICAgICBpZiAoUHlfVFlQRShudW1iZXIpLT50cF9kaWN0ID09IE5VTEwpIHsKQEAgLTE0MTgsNyArMTQ2OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0cnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG51bWJlciwgIl9fdHJ1bmNfXyIsICZ0cnVuY19zdHIpOworICAgIHRydW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobnVtYmVyLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNjI3LDYgKzE2NzgsMTUgQEAKIElmIHRoZSBiYXNlIG5vdCBzcGVjaWZpZWQsIHJldHVybnMgdGhlIG5hdHVyYWwgbG9nYXJpdGhtIChiYXNlIGUpIG9mIHguIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCittYXRoX2xvZzIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgcmV0dXJuIGxvZ2hlbHBlcihhcmcsIG1fbG9nMiwgImxvZzIiKTsKK30KKworUHlEb2NfU1RSVkFSKG1hdGhfbG9nMl9kb2MsCisibG9nMih4KVxuXG5SZXR1cm4gdGhlIGJhc2UgMiBsb2dhcml0aG0gb2YgeC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKIG1hdGhfbG9nMTAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgcmV0dXJuIGxvZ2hlbHBlcihhcmcsIG1fbG9nMTAsICJsb2cxMCIpOwpAQCAtMTg5OCw2ICsxOTU4LDcgQEAKICAgICB7ImxvZyIsICAgICAgICAgICAgIG1hdGhfbG9nLCAgICAgICBNRVRIX1ZBUkFSR1MsICAgbWF0aF9sb2dfZG9jfSwKICAgICB7ImxvZzFwIiwgICAgICAgICAgIG1hdGhfbG9nMXAsICAgICBNRVRIX08sICAgICAgICAgbWF0aF9sb2cxcF9kb2N9LAogICAgIHsibG9nMTAiLCAgICAgICAgICAgbWF0aF9sb2cxMCwgICAgIE1FVEhfTywgICAgICAgICBtYXRoX2xvZzEwX2RvY30sCisgICAgeyJsb2cyIiwgICAgICAgICAgICBtYXRoX2xvZzIsICAgICAgTUVUSF9PLCAgICAgICAgIG1hdGhfbG9nMl9kb2N9LAogICAgIHsibW9kZiIsICAgICAgICAgICAgbWF0aF9tb2RmLCAgICAgIE1FVEhfTywgICAgICAgICBtYXRoX21vZGZfZG9jfSwKICAgICB7InBvdyIsICAgICAgICAgICAgIG1hdGhfcG93LCAgICAgICBNRVRIX1ZBUkFSR1MsICAgbWF0aF9wb3dfZG9jfSwKICAgICB7InJhZGlhbnMiLCAgICAgICAgIG1hdGhfcmFkaWFucywgICBNRVRIX08sICAgICAgICAgbWF0aF9yYWRpYW5zX2RvY30sCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21kNW1vZHVsZS5jIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwppbmRleCAyMDg5MzBkLi5lMjY4MWE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL21kNW1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWQ1bW9kdWxlLmMKQEAgLTIxMCw3ICsyMTAsOCBAQAogICAgSW5pdGlhbGl6ZSB0aGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIHNoYTEgICBUaGUgaGFzaCBzdGF0ZSB5b3Ugd2lzaCB0byBpbml0aWFsaXplCiAqLwotdm9pZCBtZDVfaW5pdChzdHJ1Y3QgbWQ1X3N0YXRlICptZDUpCitzdGF0aWMgdm9pZAorbWQ1X2luaXQoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1KQogewogICAgIGFzc2VydChtZDUgIT0gTlVMTCk7CiAgICAgbWQ1LT5zdGF0ZVswXSA9IDB4Njc0NTIzMDFVTDsKQEAgLTIyNyw4ICsyMjgsOCBAQAogICAgQHBhcmFtIGluICAgICBUaGUgZGF0YSB0byBoYXNoCiAgICBAcGFyYW0gaW5sZW4gIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgKG9jdGV0cykKICovCi12b2lkIG1kNV9wcm9jZXNzKHN0cnVjdCBtZDVfc3RhdGUgKm1kNSwKLSAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgUHlfc3NpemVfdCBpbmxlbikKK3N0YXRpYyB2b2lkCittZDVfcHJvY2VzcyhzdHJ1Y3QgbWQ1X3N0YXRlICptZDUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmluLCBQeV9zc2l6ZV90IGlubGVuKQogewogICAgIFB5X3NzaXplX3QgbjsKIApAQCAtMjQzLDcgKzI0NCw3IEBACiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IE1ENV9CTE9DS1NJWkU7CiAgICAgICAgICAgIGlubGVuICAgICAgICAgIC09IE1ENV9CTE9DS1NJWkU7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgIG4gPSBNSU4oaW5sZW4sIChNRDVfQkxPQ0tTSVpFIC0gbWQ1LT5jdXJsZW4pKTsKKyAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFB5X3NzaXplX3QpKE1ENV9CTE9DS1NJWkUgLSBtZDUtPmN1cmxlbikpOwogICAgICAgICAgICBtZW1jcHkobWQ1LT5idWYgKyBtZDUtPmN1cmxlbiwgaW4sIChzaXplX3Qpbik7CiAgICAgICAgICAgIG1kNS0+Y3VybGVuICAgICs9IG47CiAgICAgICAgICAgIGluICAgICAgICAgICAgICs9IG47CkBAIC0yNjIsNyArMjYzLDggQEAKICAgIEBwYXJhbSBzaGExICBUaGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIG91dCBbb3V0XSBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGhhc2ggKDE2IGJ5dGVzKQogKi8KLXZvaWQgbWQ1X2RvbmUoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LCB1bnNpZ25lZCBjaGFyICpvdXQpCitzdGF0aWMgdm9pZAorbWQ1X2RvbmUoc3RydWN0IG1kNV9zdGF0ZSAqbWQ1LCB1bnNpZ25lZCBjaGFyICpvdXQpCiB7CiAgICAgaW50IGk7CiAKQEAgLTM3Niw3ICszNzgsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgZGlnZXN0W01ENV9ESUdFU1RTSVpFXTsKICAgICBzdHJ1Y3QgbWQ1X3N0YXRlIHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTM4NCwyNSArMzg2LDIwIEBACiAgICAgbWQ1X2RvbmUoJnRlbXAsIGRpZ2VzdCk7CiAKICAgICAvKiBDcmVhdGUgYSBuZXcgc3RyaW5nICovCi0gICAgcmV0dmFsID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIE1ENV9ESUdFU1RTSVpFICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhNRDVfRElHRVNUU0laRSAqIDIsIDEyNyk7CiAgICAgaWYgKCFyZXR2YWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmV0dmFsKTsKLSAgICBpZiAoIWhleF9kaWdlc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPE1ENV9ESUdFU1RTSVpFOyBpKyspIHsKLSAgICAgICAgY2hhciBjOworICAgICAgICB1bnNpZ25lZCBjaGFyIGM7CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldID4+IDQpICYgMHhmOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gJiAweGYpOwotICAgICAgICBjID0gKGM+OSkgPyBjKydhJy0xMCA6IGMgKyAnMCc7Ci0gICAgICAgIGhleF9kaWdlc3RbaisrXSA9IGM7CisgICAgICAgIGhleF9kaWdlc3RbaisrXSA9IFB5X2hleGRpZ2l0c1tjXTsKICAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXR2YWwsIDEpKTsKICAgICByZXR1cm4gcmV0dmFsOwogfQogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21tYXBtb2R1bGUuYyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCmluZGV4IDMzYzE0M2UuLmQ2NTBlYWUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbW1hcG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbW1hcG1vZHVsZS5jCkBAIC03OCw4ICs3OCw2IEBACiAjICBkZWZpbmUgTUFQX0FOT05ZTU9VUyBNQVBfQU5PTgogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqbW1hcF9tb2R1bGVfZXJyb3I7Ci0KIHR5cGVkZWYgZW51bQogewogICAgIEFDQ0VTU19ERUZBVUxULApAQCAtMjQwLDE1ICsyMzgsMzcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCisvKiBCYXNpY2FsbHkgdGhlICJuIiBmb3JtYXQgY29kZSB3aXRoIHRoZSBhYmlsaXR5IHRvIHR1cm4gTm9uZSBpbnRvIC0xLiAqLworc3RhdGljIGludAorbW1hcF9jb252ZXJ0X3NzaXplX3QoUHlPYmplY3QgKm9iaiwgdm9pZCAqcmVzdWx0KSB7CisgICAgUHlfc3NpemVfdCBsaW1pdDsKKyAgICBpZiAob2JqID09IFB5X05vbmUpIHsKKyAgICAgICAgbGltaXQgPSAtMTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlOdW1iZXJfQ2hlY2sob2JqKSkgeworICAgICAgICBsaW1pdCA9IFB5TnVtYmVyX0FzU3NpemVfdChvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAobGltaXQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbnRlZ2VyIGFyZ3VtZW50IGV4cGVjdGVkLCBnb3QgJyUuMjAwcyciLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICooKFB5X3NzaXplX3QgKilyZXN1bHQpID0gbGltaXQ7CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBtbWFwX3JlYWRfbWV0aG9kKG1tYXBfb2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IG51bV9ieXRlcywgbjsKKyAgICBQeV9zc2l6ZV90IG51bV9ieXRlcyA9IC0xLCBuOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm46cmVhZCIsICZudW1fYnl0ZXMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWQiLCBtbWFwX2NvbnZlcnRfc3NpemVfdCwgJm51bV9ieXRlcykpCiAgICAgICAgIHJldHVybihOVUxMKTsKIAogICAgIC8qIHNpbGVudGx5ICdhZGp1c3QnIG91dC1vZi1yYW5nZSByZXF1ZXN0cyAqLwpAQCAtNDM3LDcgKzQ1Nyw3IEBACiAgICAgewogICAgICAgICBzdHJ1Y3Qgc3RhdCBidWY7CiAgICAgICAgIGlmICgtMSA9PSBmc3RhdChzZWxmLT5mZCwgJmJ1ZikpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2lmZGVmIEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQKQEAgLTUyNyw3ICs1NDcsNyBAQAogICAgICAgICB2b2lkICpuZXdtYXA7CiAKICAgICAgICAgaWYgKGZ0cnVuY2F0ZShzZWxmLT5mZCwgc2VsZi0+b2Zmc2V0ICsgbmV3X3NpemUpID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNTQyLDcgKzU2Miw3IEBACiAjZW5kaWYKICAgICAgICAgaWYgKG5ld21hcCA9PSAodm9pZCAqKS0xKQogICAgICAgICB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgc2VsZi0+ZGF0YSA9IG5ld21hcDsKQEAgLTU4Myw3ICs2MDMsNyBAQAogICAgIC8qIFhYWCBzZW1hbnRpY3Mgb2YgcmV0dXJuIHZhbHVlPyAqLwogICAgIC8qIFhYWCBmbGFncyBmb3IgbXN5bmM/ICovCiAgICAgaWYgKC0xID09IG1zeW5jKHNlbGYtPmRhdGEgKyBvZmZzZXQsIHNpemUsIE1TX1NZTkMpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CkBAIC02NDUsOSArNjY1LDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogYm91bmRzIGNoZWNrIHRoZSB2YWx1ZXMgKi8KLSAgICAgICAgaWYgKGNudCA8IDAgfHwgKGNudCArIGRlc3QpIDwgY250IHx8IChjbnQgKyBzcmMpIDwgY250IHx8Ci0gICAgICAgICAgIHNyYyA8IDAgfHwgc3JjID4gc2VsZi0+c2l6ZSB8fCAoc3JjICsgY250KSA+IHNlbGYtPnNpemUgfHwKLSAgICAgICAgICAgZGVzdCA8IDAgfHwgZGVzdCA+IHNlbGYtPnNpemUgfHwgKGRlc3QgKyBjbnQpID4gc2VsZi0+c2l6ZSkgeworICAgICAgICBpZiAoKGNudCArIGRlc3QpIDwgY250IHx8IChjbnQgKyBzcmMpIDwgY250IHx8CisgICAgICAgICAgIHNyYyA+IHNlbGYtPnNpemUgfHwgKHNyYyArIGNudCkgPiBzZWxmLT5zaXplIHx8CisgICAgICAgICAgIGRlc3QgPiBzZWxmLT5zaXplIHx8IChkZXN0ICsgY250KSA+IHNlbGYtPnNpemUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICJzb3VyY2UsIGRlc3RpbmF0aW9uLCBvciBjb3VudCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjgwLDcgKzcwMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbW1hcF9fZXhpdF9fbWV0aG9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChzZWxmLCAiY2xvc2UiLCBOVUxMKTsKKyAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CisKKyAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzZWxmLCAmUHlJZF9jbG9zZSwgTlVMTCk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgbW1hcF9vYmplY3RfbWV0aG9kc1tdID0gewpAQCAtOTM3LDEzICs5NTksMTMgQEAKIH0KIAogc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1tYXBfYXNfc2VxdWVuY2UgPSB7Ci0gICAgKGxlbmZ1bmMpbW1hcF9sZW5ndGgsICAgICAgICAgICAgICAgICAgICAgIC8qc3FfbGVuZ3RoKi8KLSAgICAoYmluYXJ5ZnVuYyltbWFwX2NvbmNhdCwgICAgICAgICAgICAgICAgICAgLypzcV9jb25jYXQqLwotICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9yZXBlYXQsICAgICAgICAgICAgICAgICAvKnNxX3JlcGVhdCovCi0gICAgKHNzaXplYXJnZnVuYyltbWFwX2l0ZW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9pdGVtKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX3NsaWNlKi8KLSAgICAoc3NpemVvYmphcmdwcm9jKW1tYXBfYXNzX2l0ZW0sICAgICAgICAgICAgLypzcV9hc3NfaXRlbSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9hc3Nfc2xpY2UqLworICAgIChsZW5mdW5jKW1tYXBfbGVuZ3RoLCAgICAgICAgICAgIC8qc3FfbGVuZ3RoKi8KKyAgICAoYmluYXJ5ZnVuYyltbWFwX2NvbmNhdCwgICAgICAgICAvKnNxX2NvbmNhdCovCisgICAgKHNzaXplYXJnZnVuYyltbWFwX3JlcGVhdCwgICAgICAgLypzcV9yZXBlYXQqLworICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9pdGVtLCAgICAgICAgIC8qc3FfaXRlbSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9zbGljZSovCisgICAgKHNzaXplb2JqYXJncHJvYyltbWFwX2Fzc19pdGVtLCAgLypzcV9hc3NfaXRlbSovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9hc3Nfc2xpY2UqLwogfTsKIAogc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbW1hcF9hc19tYXBwaW5nID0gewpAQCAtMTAwNSw3ICsxMDI3LDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCiAgICAgJm1tYXBfYXNfYnVmZmVyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgLyp0cF9mbGFncyovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAvKnRwX2ZsYWdzKi8KICAgICBtbWFwX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtMTAyMSwxMCArMTA0MywxMCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBuZXdfbW1hcF9vYmplY3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCiB9OwogCiAKQEAgLTEwNzUsOCArMTA5Nyw4IEBACiAgICAgaW50IGRldnplcm8gPSAtMTsKICAgICBpbnQgYWNjZXNzID0gKGludClBQ0NFU1NfREVGQVVMVDsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsiZmlsZW5vIiwgImxlbmd0aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgInByb3QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTH07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsYWdzIiwgInByb3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpT3xpaWkiIF9QeV9QQVJTRV9PRkZfVCwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZkLCAmbWFwX3NpemVfb2JqLCAmZmxhZ3MsICZwcm90LApAQCAtMTE4Niw3ICsxMjA4LDcgQEAKICAgICAgICAgZmQgPSBkZXZ6ZXJvID0gb3BlbigiL2Rldi96ZXJvIiwgT19SRFdSKTsKICAgICAgICAgaWYgKGRldnplcm8gPT0gLTEpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtX29iaik7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTE5NCw3ICsxMjE2LDcgQEAKICAgICAgICAgbV9vYmotPmZkID0gZHVwKGZkKTsKICAgICAgICAgaWYgKG1fb2JqLT5mZCA9PSAtMSkgewogICAgICAgICAgICAgUHlfREVDUkVGKG1fb2JqKTsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhtbWFwX21vZHVsZV9lcnJvcik7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMTAsNyArMTIzMiw3IEBACiAgICAgaWYgKG1fb2JqLT5kYXRhID09IChjaGFyICopLTEpIHsKICAgICAgICAgbV9vYmotPmRhdGEgPSBOVUxMOwogICAgICAgICBQeV9ERUNSRUYobV9vYmopOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBtX29iai0+YWNjZXNzID0gKGFjY2Vzc19tb2RlKWFjY2VzczsKQEAgLTEyNDMsOCArMTI2NSw4IEBACiAgICAgaW50IGFjY2VzcyA9IChhY2Nlc3NfbW9kZSlBQ0NFU1NfREVGQVVMVDsKICAgICBEV09SRCBmbFByb3RlY3QsIGR3RGVzaXJlZEFjY2VzczsKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsgImZpbGVubyIsICJsZW5ndGgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFnbmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTCB9OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFnbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nlc3MiLCAib2Zmc2V0IiwgTlVMTCB9OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaU98emlMIiwga2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpbGVubywgJm1hcF9zaXplX29iaiwKQEAgLTEyOTEsMTIgKzEzMTMsMTIgQEAKICAgICBpZiAoZmlsZW5vICE9IC0xICYmIGZpbGVubyAhPSAwKSB7CiAgICAgICAgIC8qIEVuc3VyZSB0aGF0IGZpbGVubyBpcyB3aXRoaW4gdGhlIENSVCdzIHZhbGlkIHJhbmdlICovCiAgICAgICAgIGlmIChfUHlWZXJpZnlfZmQoZmlsZW5vKSA9PSAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8obW1hcF9tb2R1bGVfZXJyb3IpOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZmggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyk7CiAgICAgICAgIGlmIChmaD09KEhBTkRMRSktMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKG1tYXBfbW9kdWxlX2Vycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIC8qIFdpbjl4IGFwcGVhcnMgdG8gbmVlZCB1cyBzZWVrZWQgdG8gemVybyAqLwpAQCAtMTQ1NiwxMSArMTQ3OCw3IEBACiAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kdWxlKTsKICAgICBpZiAoIWRpY3QpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG1tYXBfbW9kdWxlX2Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJtbWFwLmVycm9yIiwKLSAgICAgICAgUHlFeGNfRW52aXJvbm1lbnRFcnJvciAsIE5VTEwpOwotICAgIGlmIChtbWFwX21vZHVsZV9lcnJvciA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiZXJyb3IiLCBtbWFwX21vZHVsZV9lcnJvcik7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIm1tYXAiLCAoUHlPYmplY3QqKSAmbW1hcF9vYmplY3RfdHlwZSk7CiAjaWZkZWYgUFJPVF9FWEVDCiAgICAgc2V0aW50KGRpY3QsICJQUk9UX0VYRUMiLCBQUk9UX0VYRUMpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9uaXNtb2R1bGUuYyBiL01vZHVsZXMvbmlzbW9kdWxlLmMKaW5kZXggYTgxY2E4Yy4uMGFmNDk1ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9uaXNtb2R1bGUuYworKysgYi9Nb2R1bGVzL25pc21vZHVsZS5jCkBAIC00MTEsNyArNDExLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChtYXBzID0gbWFwczsgbWFwczsgbWFwcyA9IG1hcHMtPm5leHQpIHsKKyAgICBmb3IgKDsgbWFwczsgbWFwcyA9IG1hcHMtPm5leHQpIHsKICAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1hcHMtPm1hcCk7CiAgICAgICAgIGlmICghc3RyIHx8IFB5TGlzdF9BcHBlbmQobGlzdCwgc3RyKSA8IDApCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3BlcmF0b3IuYyBiL01vZHVsZXMvb3BlcmF0b3IuYwppbmRleCA4NjZlYzNhLi4xMmZkYWQ1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL29wZXJhdG9yLmMKKysrIGIvTW9kdWxlcy9vcGVyYXRvci5jCkBAIC0xNTksNiArMTU5LDE0MyBAQAogI3VuZGVmIHNwYW0yCiAjdW5kZWYgc3BhbTFvCiAjdW5kZWYgc3BhbTFvCisKKy8qIGNvbXBhcmVfZGlnZXN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiB0aW1pbmcgc2FmZSBjb21wYXJlCisgKgorICogUmV0dXJucyAxIG9mIHRoZSBzdHJpbmdzIGFyZSBlcXVhbC4KKyAqIEluIGNhc2Ugb2YgbGVuKGEpICE9IGxlbihiKSB0aGUgZnVuY3Rpb24gdHJpZXMgdG8ga2VlcCB0aGUgdGltaW5nCisgKiBkZXBlbmRlbnQgb24gdGhlIGxlbmd0aCBvZiBiLiBDUFUgY2FjaGUgbG9jYWxseSBtYXkgc3RpbGwgYWx0ZXIgdGltaW5nCisgKiBhIGJpdC4KKyAqLworc3RhdGljIGludAorX3RzY21wKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmEsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmIsCisgICAgICAgIFB5X3NzaXplX3QgbGVuX2EsIFB5X3NzaXplX3QgbGVuX2IpCit7CisgICAgLyogVGhlIHZvbGF0aWxlIHR5cGUgZGVjbGFyYXRpb25zIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb21waWxlciBoYXMgbm8KKyAgICAgKiBjaGFuY2UgdG8gb3B0aW1pemUgYW5kIGZvbGQgdGhlIGNvZGUgaW4gYW55IHdheSB0aGF0IG1heSBjaGFuZ2UKKyAgICAgKiB0aGUgdGltaW5nLgorICAgICAqLworICAgIHZvbGF0aWxlIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIHZvbGF0aWxlIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmxlZnQ7CisgICAgdm9sYXRpbGUgY29uc3QgdW5zaWduZWQgY2hhciAqcmlnaHQ7CisgICAgUHlfc3NpemVfdCBpOworICAgIHVuc2lnbmVkIGNoYXIgcmVzdWx0OworCisgICAgLyogbG9vcCBjb3VudCBkZXBlbmRzIG9uIGxlbmd0aCBvZiBiICovCisgICAgbGVuZ3RoID0gbGVuX2I7CisgICAgbGVmdCA9IE5VTEw7CisgICAgcmlnaHQgPSBiOworCisgICAgLyogZG9uJ3QgdXNlIGVsc2UgaGVyZSB0byBrZWVwIHRoZSBhbW91bnQgb2YgQ1BVIGluc3RydWN0aW9ucyBjb25zdGFudCwKKyAgICAgKiB2b2xhdGlsZSBmb3JjZXMgcmUtZXZhbHVhdGlvbgorICAgICAqICAqLworICAgIGlmIChsZW5fYSA9PSBsZW5ndGgpIHsKKyAgICAgICAgbGVmdCA9ICooKHZvbGF0aWxlIGNvbnN0IHVuc2lnbmVkIGNoYXIqKikmYSk7CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgfQorICAgIGlmIChsZW5fYSAhPSBsZW5ndGgpIHsKKyAgICAgICAgbGVmdCA9IGI7CisgICAgICAgIHJlc3VsdCA9IDE7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICByZXN1bHQgfD0gKmxlZnQrKyBeICpyaWdodCsrOworICAgIH0KKworICAgIHJldHVybiAocmVzdWx0ID09IDApOworfQorCitQeURvY19TVFJWQVIoY29tcGFyZV9kaWdlc3RfX2RvY19fLAorImNvbXBhcmVfZGlnZXN0KGEsIGIpIC0+IGJvb2xcbiIKKyJcbiIKKyJSZXR1cm4gJ2EgPT0gYicuICBUaGlzIGZ1bmN0aW9uIHVzZXMgYW4gYXBwcm9hY2ggZGVzaWduZWQgdG8gcHJldmVudFxuIgorInRpbWluZyBhbmFseXNpcywgbWFraW5nIGl0IGFwcHJvcHJpYXRlIGZvciBjcnlwdG9ncmFwaHkuXG4iCisiYSBhbmQgYiBtdXN0IGJvdGggYmUgb2YgdGhlIHNhbWUgdHlwZTogZWl0aGVyIHN0ciAoQVNDSUkgb25seSksXG4iCisib3IgYW55IHR5cGUgdGhhdCBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIChlLmcuIGJ5dGVzKS5cbiIKKyJcbiIKKyJOb3RlOiBJZiBhIGFuZCBiIGFyZSBvZiBkaWZmZXJlbnQgbGVuZ3Rocywgb3IgaWYgYW4gZXJyb3Igb2NjdXJzLFxuIgorImEgdGltaW5nIGF0dGFjayBjb3VsZCB0aGVvcmV0aWNhbGx5IHJldmVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGVcbiIKKyJ0eXBlcyBhbmQgbGVuZ3RocyBvZiBhIGFuZCBiLS1idXQgbm90IHRoZWlyIHZhbHVlcy5cbiIpOworCitzdGF0aWMgUHlPYmplY3QqCitjb21wYXJlX2RpZ2VzdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmEsICpiOworICAgIGludCByYzsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086Y29tcGFyZV9kaWdlc3QiLCAmYSwgJmIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIEFTQ0lJIHVuaWNvZGUgc3RyaW5nICovCisgICAgaWYoUHlVbmljb2RlX0NoZWNrKGEpICYmIFB5VW5pY29kZV9DaGVjayhiKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShiKSA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoYSkgfHwgIVB5VW5pY29kZV9JU19BU0NJSShiKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGFyaW5nIHN0cmluZ3Mgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycyBpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgcmMgPSBfdHNjbXAoUHlVbmljb2RlX0RBVEEoYSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKGIpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChhKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYikpOworICAgIH0KKyAgICAvKiBmYWxsYmFjayB0byBidWZmZXIgaW50ZXJmYWNlIGZvciBieXRlcywgYnl0ZXNhcnJheSBhbmQgb3RoZXIgKi8KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfYnVmZmVyIHZpZXdfYTsKKyAgICAgICAgUHlfYnVmZmVyIHZpZXdfYjsKKworICAgICAgICBpZiAoKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGEpID09IDApICYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGIpID09IDApKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBvcGVyYW5kIHR5cGVzKHMpIG9yIGNvbWJpbmF0aW9uIG9mIHR5cGVzOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjEwMHMnIGFuZCAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhKS0+dHBfbmFtZSwgUHlfVFlQRShiKS0+dHBfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYSwgJnZpZXdfYSwgUHlCVUZfU0lNUExFKSA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXdfYS5uZGltID4gMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCdWZmZXIgbXVzdCBiZSBzaW5nbGUgZGltZW5zaW9uIik7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2EpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGIsICZ2aWV3X2IsIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmlld19iLm5kaW0gPiAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1ZmZlciBtdXN0IGJlIHNpbmdsZSBkaW1lbnNpb24iKTsKKyAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3X2IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICByYyA9IF90c2NtcCgoY29uc3QgdW5zaWduZWQgY2hhciopdmlld19hLmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGNoYXIqKXZpZXdfYi5idWYsCisgICAgICAgICAgICAgICAgICAgIHZpZXdfYS5sZW4sCisgICAgICAgICAgICAgICAgICAgIHZpZXdfYi5sZW4pOworCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYSk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXdfYik7CisgICAgfQorCisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyYyk7Cit9CisKKy8qIG9wZXJhdG9yIG1ldGhvZHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogI2RlZmluZSBzcGFtMShPUCxET0MpIHsjT1AsIE9QLCBNRVRIX1ZBUkFSR1MsIFB5RG9jX1NUUihET0MpfSwKICNkZWZpbmUgc3BhbTIoT1AsQUxUT1AsRE9DKSB7I09QLCBvcF8jI09QLCBNRVRIX1ZBUkFSR1MsIFB5RG9jX1NUUihET0MpfSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeyNBTFRPUCwgb3BfIyNPUCwgTUVUSF9WQVJBUkdTLCBQeURvY19TVFIoRE9DKX0sCkBAIC0yMjcsNiArMzY0LDggQEAKIHNwYW0yKGd0LF9fZ3RfXywgImd0KGEsIGIpIC0tIFNhbWUgYXMgYT5iLiIpCiBzcGFtMihnZSxfX2dlX18sICJnZShhLCBiKSAtLSBTYW1lIGFzIGE+PWIuIikKIAorICAgIHsiX2NvbXBhcmVfZGlnZXN0IiwgKFB5Q0Z1bmN0aW9uKWNvbXBhcmVfZGlnZXN0LCBNRVRIX1ZBUkFSR1MsCisgICAgIGNvbXBhcmVfZGlnZXN0X19kb2NfX30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIAogfTsKQEAgLTQwMiw3ICs1NDEsOCBAQAogICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgbmF0dHJzOyArK2lkeCkgewogICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaWR4KTsKICAgICAgICAgUHlfc3NpemVfdCBpdGVtX2xlbjsKLSAgICAgICAgUHlfVU5JQ09ERSAqaXRlbV9idWZmZXI7CisgICAgICAgIHZvaWQgKmRhdGE7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kOwogICAgICAgICBpbnQgZG90X2NvdW50OwogCiAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7CkBAIC00MTEsMTMgKzU1MSwxOCBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGF0dHIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaXRlbV9sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7Ci0gICAgICAgIGl0ZW1fYnVmZmVyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaXRlbSkpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGl0ZW1fbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaXRlbSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChpdGVtKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGl0ZW0pOwogCiAgICAgICAgIC8qIGNoZWNrIHdoZXRoZXJlIHRoZSBzdHJpbmcgaXMgZG90dGVkICovCiAgICAgICAgIGRvdF9jb3VudCA9IDA7CiAgICAgICAgIGZvciAoY2hhcl9pZHggPSAwOyBjaGFyX2lkeCA8IGl0ZW1fbGVuOyArK2NoYXJfaWR4KSB7Ci0gICAgICAgICAgICBpZiAoaXRlbV9idWZmZXJbY2hhcl9pZHhdID09IChQeV9VTklDT0RFKScuJykKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjaGFyX2lkeCkgPT0gJy4nKQogICAgICAgICAgICAgICAgICsrZG90X2NvdW50OwogICAgICAgICB9CiAKQEAgLTQzOCwxMiArNTgzLDEyIEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZvciAoOyBkb3RfY291bnQgPiAwOyAtLWRvdF9jb3VudCkgewotICAgICAgICAgICAgICAgIHdoaWxlIChpdGVtX2J1ZmZlclt1bmlidWZmX3RpbGxdICE9IChQeV9VTklDT0RFKScuJykgeworICAgICAgICAgICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCB1bmlidWZmX3RpbGwpICE9ICcuJykgewogICAgICAgICAgICAgICAgICAgICArK3VuaWJ1ZmZfdGlsbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYXR0cl9jaGFpbl9pdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2J1ZmZlciArIHVuaWJ1ZmZfZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pYnVmZl90aWxsIC0gdW5pYnVmZl9mcm9tKTsKKyAgICAgICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pYnVmZl90aWxsKTsKICAgICAgICAgICAgICAgICBpZiAoYXR0cl9jaGFpbl9pdGVtID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJfY2hhaW4pOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cik7CkBAIC00NTYsOSArNjAxLDggQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogbm93IGFkZCB0aGUgbGFzdCBkb3RsZXNzIG5hbWUgKi8KLSAgICAgICAgICAgIGF0dHJfY2hhaW5faXRlbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2J1ZmZlciArIHVuaWJ1ZmZfZnJvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtX2xlbiAtIHVuaWJ1ZmZfZnJvbSk7CisgICAgICAgICAgICBhdHRyX2NoYWluX2l0ZW0gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGl0ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWJ1ZmZfZnJvbSwgaXRlbV9sZW4pOwogICAgICAgICAgICAgaWYgKGF0dHJfY2hhaW5faXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJfY2hhaW4pOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvb3NzYXVkaW9kZXYuYyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwppbmRleCBiMzhjZTUyLi5hMTdhNjQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKKysrIGIvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCkBAIC0yMTQsNiArMjE0LDIxIEBACiAgKiBIZWxwZXIgZnVuY3Rpb25zCiAgKi8KIAorLyogQ2hlY2sgaWYgYSBnaXZlbiBmaWxlIGRlc2NyaXB0b3IgaXMgdmFsaWQgKGkuZS4gaGFzbid0IGJlZW4gY2xvc2VkKS4KKyAqIElmIHRydWUsIHJldHVybiAxLiBPdGhlcndpc2UsIHJhaXNlIFZhbHVlRXJyb3IgYW5kIHJldHVybiAwLgorICovCitzdGF0aWMgaW50IF9pc19mZF92YWxpZChpbnQgZmQpCit7CisgICAgLyogdGhlIEZEIGlzIHNldCB0byAtMSBpbiBvc3NfY2xvc2UoKS9vc3NfbWl4ZXJfY2xvc2UoKSAqLworICAgIGlmIChmZCA+PSAwKSB7CisgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk9wZXJhdGlvbiBvbiBjbG9zZWQgT1NTIGRldmljZS4iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiAvKiBfZG9faW9jdGxfMSgpIGlzIGEgcHJpdmF0ZSBoZWxwZXIgZnVuY3Rpb24gdXNlZCBmb3IgdGhlIE9TUyBpb2N0bHMgLS0KICAgIFNORENUTF9EU1Bfe1NFVEZNVCxDSEFOTkVMUyxTUEVFRH0gLS0gdGhhdCB0aGF0IGFyZSBjYWxsZWQgZnJvbSBDCiAgICBsaWtlIHRoaXM6CkBAIC0zMDEsNiArMzE2LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3Nfbm9uYmxvY2sob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIEhtbW06IGl0IGRvZXNuJ3QgYXBwZWFyIHRvIGJlIHBvc3NpYmxlIHRvIHJldHVybiB0byBibG9ja2luZwogICAgICAgIG1vZGUgb25jZSB3ZSdyZSBpbiBub24tYmxvY2tpbmcgbW9kZSEgKi8KICAgICBpZiAoaW9jdGwoc2VsZi0+ZmQsIFNORENUTF9EU1BfTk9OQkxPQ0ssIE5VTEwpID09IC0xKQpAQCAtMzEyLDYgKzMzMCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3NldGZtdChvc3NfYXVkaW9fdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMShzZWxmLT5mZCwgYXJncywgInNldGZtdCIsIFNORENUTF9EU1BfU0VURk1UKTsKIH0KIApAQCAtMzE5LDYgKzM0MCwxMCBAQAogb3NzX2dldGZtdHMob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CiAgICAgaW50IG1hc2s7CisKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKGlvY3RsKHNlbGYtPmZkLCBTTkRDVExfRFNQX0dFVEZNVFMsICZtYXNrKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1hc2spOwpAQCAtMzI3LDMwICszNTIsNDUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfY2hhbm5lbHMob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzEoc2VsZi0+ZmQsIGFyZ3MsICJjaGFubmVscyIsIFNORENUTF9EU1BfQ0hBTk5FTFMpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3NwZWVkKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAic3BlZWQiLCBTTkRDVExfRFNQX1NQRUVEKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19zeW5jKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8wKHNlbGYtPmZkLCBhcmdzLCAic3luYyIsIFNORENUTF9EU1BfU1lOQyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfcmVzZXQob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzAoc2VsZi0+ZmQsIGFyZ3MsICJyZXNldCIsIFNORENUTF9EU1BfUkVTRVQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX3Bvc3Qob3NzX2F1ZGlvX3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gX2RvX2lvY3RsXzAoc2VsZi0+ZmQsIGFyZ3MsICJwb3N0IiwgU05EQ1RMX0RTUF9QT1NUKTsKIH0KIApAQCAtMzY1LDYgKzQwNSw5IEBACiAgICAgY2hhciAqY3A7CiAgICAgUHlPYmplY3QgKnJ2OwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpyZWFkIiwgJnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBydiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7CkBAIC0zOTIsNiArNDM1LDkgQEAKICAgICBjaGFyICpjcDsKICAgICBpbnQgcnYsIHNpemU7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ5Izp3cml0ZSIsICZjcCwgJnNpemUpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTQyMyw2ICs0NjksOSBAQAogICAgICAgIG1vZGUsIHRoZSBiZWhhdmlvdXIgb2Ygd3JpdGUoKSBhbmQgd3JpdGVhbGwoKSBmcm9tIFB5dGhvbiBpcwogICAgICAgIGluZGlzdGluZ3Vpc2hhYmxlLiAqLwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSM6d3JpdGUiLCAmY3AsICZzaXplKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQ4MiwxMCArNTMxLDEyIEBACiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqIAorc3RhdGljIFB5T2JqZWN0ICoKIG9zc19leGl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIFB5T2JqZWN0ICpyZXQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHNlbGYsICJjbG9zZSIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKworICAgIFB5T2JqZWN0ICpyZXQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHNlbGYsICZQeUlkX2Nsb3NlLCBOVUxMKTsKICAgICBpZiAoIXJldCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfREVDUkVGKHJldCk7CkBAIC00OTUsNiArNTQ2LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBvc3NfZmlsZW5vKG9zc19hdWRpb190ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogeworICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKHNlbGYtPmZkKTsKIH0KIApAQCAtNTA5LDYgKzU2Myw5IEBACiAgICAgaW50IGZtdCwgY2hhbm5lbHMsIHJhdGU7CiAgICAgUHlPYmplY3QgKiBydjsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiB0dXBsZSAoZm10LCBjaGFubmVscywgcmF0ZSkgKi8KIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaXxpOnNldHBhcmFtZXRlcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmd2FudGVkX2ZtdCwgJndhbnRlZF9jaGFubmVscywgJndhbnRlZF9yYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyaWN0KSkKQEAgLTU5OSw2ICs2NTYsOSBAQAogICAgIGF1ZGlvX2J1Zl9pbmZvIGFpOwogICAgIGludCBuY2hhbm5lbHM9MCwgc3NpemU9MDsKIAorICAgIGlmICghX2lzX2ZkX3ZhbGlkKHNlbGYtPmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAoX3NzaXplKHNlbGYsICZuY2hhbm5lbHMsICZzc2l6ZSkgPCAwIHx8ICFuY2hhbm5lbHMgfHwgIXNzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MTgsNiArNjc4LDkgQEAKICAgICBhdWRpb19idWZfaW5mbyBhaTsKICAgICBpbnQgbmNoYW5uZWxzPTAsIHNzaXplPTA7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKF9zc2l6ZShzZWxmLCAmbmNoYW5uZWxzLCAmc3NpemUpIDwgMCB8fCAhbmNoYW5uZWxzIHx8ICFzc2l6ZSkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjM4LDYgKzcwMSw5IEBACiAgICAgYXVkaW9fYnVmX2luZm8gYWk7CiAgICAgaW50IG5jaGFubmVscz0wLCBzc2l6ZT0wOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChfc3NpemUoc2VsZiwgJm5jaGFubmVscywgJnNzaXplKSA8IDAgfHwgIW5jaGFubmVscyB8fCAhc3NpemUpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTY1NSw2ICs3MjEsOSBAQAogICAgIGNvdW50X2luZm8gaW5mbzsKICAgICBpbnQgcmVxOwogCisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzZWxmLT5tb2RlID09IE9fUkRPTkxZKQogICAgICAgICByZXEgPSBTTkRDVExfRFNQX0dFVElQVFI7CiAgICAgZWxzZQpAQCAtNjg1LDYgKzc1NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb3NzX21peGVyX2ZpbGVubyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZCk7CiB9CiAKQEAgLTY5Myw2ICs3NjUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9jb250cm9scyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgImNvbnRyb2xzIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9ERVZNQVNLKTsKIH0KQEAgLTcwMCw2ICs3NzUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9zdGVyZW9jb250cm9scyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgInN0ZXJlb2NvbnRyb2xzIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9TVEVSRU9ERVZTKTsKIH0KQEAgLTcwNyw2ICs3ODUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9yZWNjb250cm9scyhvc3NfbWl4ZXJfdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgaWYgKCFfaXNfZmRfdmFsaWQoc2VsZi0+ZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHJldHVybiBfZG9faW9jdGxfMV9pbnRlcm5hbChzZWxmLT5mZCwgYXJncywgInJlY2NvbnRyb2xzIiwKICAgICAgICAgU09VTkRfTUlYRVJfUkVBRF9SRUNNQVNLKTsKIH0KQEAgLTcxNiw2ICs3OTcsOSBAQAogewogICAgIGludCBjaGFubmVsLCB2b2x1bWU7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogQ2FuJ3QgdXNlIF9kb19pb2N0bF8xIGJlY2F1c2Ugb2YgZW5jb2RlZCBhcmcgdGhpbmd5LiAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpnZXQiLCAmY2hhbm5lbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzM2LDYgKzgyMCw5IEBACiB7CiAgICAgaW50IGNoYW5uZWwsIHZvbHVtZSwgbGVmdFZvbCwgcmlnaHRWb2w7CiAKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogQ2FuJ3QgdXNlIF9kb19pb2N0bF8xIGJlY2F1c2Ugb2YgZW5jb2RlZCBhcmcgdGhpbmd5LiAqLwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaShpaSk6c2V0IiwgJmNoYW5uZWwsICZsZWZ0Vm9sLCAmcmlnaHRWb2wpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc2MSw2ICs4NDgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9nZXRfcmVjc3JjKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xX2ludGVybmFsKHNlbGYtPmZkLCBhcmdzLCAiZ2V0X3JlY3NyYyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1JFQURfUkVDU1JDKTsKIH0KQEAgLTc2OCw2ICs4NTgsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9zc19taXhlcl9zZXRfcmVjc3JjKG9zc19taXhlcl90ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBpZiAoIV9pc19mZF92YWxpZChzZWxmLT5mZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIF9kb19pb2N0bF8xKHNlbGYtPmZkLCBhcmdzLCAic2V0X3JlY3NyYyIsCiAgICAgICAgIFNPVU5EX01JWEVSX1dSSVRFX1JFQ1NSQyk7CiB9CkBAIC05NzEsOCArMTA2NCw4IEBACiAgICAgaW50IG51bV9jb250cm9sczsKICAgICBpbnQgaTsKIAotICAgIG51bV9jb250cm9scyA9IHNpemVvZihjb250cm9sX2xhYmVscykgLyBzaXplb2YoY29udHJvbF9sYWJlbHNbMF0pOwotICAgIGFzc2VydChudW1fY29udHJvbHMgPT0gc2l6ZW9mKGNvbnRyb2xfbmFtZXMpIC8gc2l6ZW9mKGNvbnRyb2xfbmFtZXNbMF0pKTsKKyAgICBudW1fY29udHJvbHMgPSBQeV9BUlJBWV9MRU5HVEgoY29udHJvbF9sYWJlbHMpOworICAgIGFzc2VydChudW1fY29udHJvbHMgPT0gUHlfQVJSQVlfTEVOR1RIKGNvbnRyb2xfbmFtZXMpKTsKIAogICAgIGxhYmVscyA9IFB5TGlzdF9OZXcobnVtX2NvbnRyb2xzKTsKICAgICBuYW1lcyA9IFB5TGlzdF9OZXcobnVtX2NvbnRyb2xzKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMgYi9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCmluZGV4IGI4NzMyZGMuLmI0NjAyZjUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwpAQCAtMzAwLDI1ICszMDAsMjUgQEAKIAogICAgIC8qIENvbnZlcnQgcmV0dXJuIHZhbHVlIHRvIGEgQm9vbGVhbiAqLwogICAgIHN3aXRjaCAob3ApIHsKLSAgICBjYXNlIFB5X0VROgorICAgICAgY2FzZSBQeV9FUToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPT0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfTkU6CisgICAgICBjYXNlIFB5X05FOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCAhPSAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQeV9MRToKKyAgICAgIGNhc2UgUHlfTEU6CiAgICAgICAgIHYgPSBURVNUX0NPTkQocmVzdWx0IDw9IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0dFOgorICAgICAgY2FzZSBQeV9HRToKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPj0gMCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUHlfTFQ6CisgICAgICBjYXNlIFB5X0xUOgogICAgICAgICB2ID0gVEVTVF9DT05EKHJlc3VsdCA8IDApOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFB5X0dUOgorICAgICAgY2FzZSBQeV9HVDoKICAgICAgICAgdiA9IFRFU1RfQ09ORChyZXN1bHQgPiAwKTsKICAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKKyAgICAgIGRlZmF1bHQ6CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTM4Miw0MCArMzgyLDI4IEBACiBzdGF0aWMgUHlPYmplY3QqCiBwYXJzZXJfc3QydHVwbGUoUHlTVF9PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKmxpbmVfb3B0aW9uID0gMDsKLSAgICBQeU9iamVjdCAqY29sX29wdGlvbiA9IDA7CisgICAgaW50IGxpbmVfaW5mbyA9IDA7CisgICAgaW50IGNvbF9pbmZvID0gMDsKICAgICBQeU9iamVjdCAqcmVzID0gMDsKICAgICBpbnQgb2s7CiAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3QiLCAibGluZV9pbmZvIiwgImNvbF9pbmZvIiwgTlVMTH07CiAKICAgICBpZiAoc2VsZiA9PSBOVUxMIHx8IFB5TW9kdWxlX0NoZWNrKHNlbGYpKSB7Ci0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAiTyF8T086c3QydHVwbGUiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX29wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfHBwOnN0MnR1cGxlIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVNUX1R5cGUsICZzZWxmLCAmbGluZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29sX2luZm8pOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIG9rID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3LCAifE9POnRvdHVwbGUiLCAma2V5d29yZHNbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX29wdGlvbiwgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxwcDp0b3R1cGxlIiwgJmtleXdvcmRzWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGluZV9pbmZvLCAmY29sX2luZm8pOwogICAgIGlmIChvayAhPSAwKSB7Ci0gICAgICAgIGludCBsaW5lbm8gPSAwOwotICAgICAgICBpbnQgY29sX29mZnNldCA9IDA7Ci0gICAgICAgIGlmIChsaW5lX29wdGlvbiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBsaW5lbm8gPSBQeU9iamVjdF9Jc1RydWUobGluZV9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGxpbmVubyA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbF9vcHRpb24gIT0gTlVMTCkgewotICAgICAgICAgICAgY29sX29mZnNldCA9IFB5T2JqZWN0X0lzVHJ1ZShjb2xfb3B0aW9uKTsKLSAgICAgICAgICAgIGlmIChjb2xfb2Zmc2V0IDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICAvKgogICAgICAgICAgKiAgQ29udmVydCBTVCBpbnRvIGEgdHVwbGUgcmVwcmVzZW50YXRpb24uICBVc2UgR3VpZG8ncyBmdW5jdGlvbiwKICAgICAgICAgICogIHNpbmNlIGl0J3Mga25vd24gdG8gd29yayBhbHJlYWR5LgogICAgICAgICAgKi8KICAgICAgICAgcmVzID0gbm9kZTJ0dXBsZSgoKFB5U1RfT2JqZWN0KilzZWxmKS0+c3Rfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX05ldywgUHlUdXBsZV9TZXRJdGVtLCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfTmV3LCBQeVR1cGxlX1NldEl0ZW0sIGxpbmVfaW5mbywgY29sX2luZm8pOwogICAgIH0KICAgICByZXR1cm4gKHJlcyk7CiB9CkBAIC00MzAsMzkgKzQxOCwyNyBAQAogc3RhdGljIFB5T2JqZWN0KgogcGFyc2VyX3N0Mmxpc3QoUHlTVF9PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7Ci0gICAgUHlPYmplY3QgKmxpbmVfb3B0aW9uID0gMDsKLSAgICBQeU9iamVjdCAqY29sX29wdGlvbiA9IDA7CisgICAgaW50IGxpbmVfaW5mbyA9IDA7CisgICAgaW50IGNvbF9pbmZvID0gMDsKICAgICBQeU9iamVjdCAqcmVzID0gMDsKICAgICBpbnQgb2s7CiAKICAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3QiLCAibGluZV9pbmZvIiwgImNvbF9pbmZvIiwgTlVMTH07CiAKICAgICBpZiAoc2VsZiA9PSBOVUxMIHx8IFB5TW9kdWxlX0NoZWNrKHNlbGYpKQotICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfE9POnN0Mmxpc3QiLCBrZXl3b3JkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX29wdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgIk8hfHBwOnN0Mmxpc3QiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5U1RfVHlwZSwgJnNlbGYsICZsaW5lX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb2xfaW5mbyk7CiAgICAgZWxzZQotICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxPTzp0b2xpc3QiLCAma2V5d29yZHNbMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX29wdGlvbiwgJmNvbF9vcHRpb24pOworICAgICAgICBvayA9IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrdywgInxwcDp0b2xpc3QiLCAma2V5d29yZHNbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaW5lX2luZm8sICZjb2xfaW5mbyk7CiAgICAgaWYgKG9rKSB7Ci0gICAgICAgIGludCBsaW5lbm8gPSAwOwotICAgICAgICBpbnQgY29sX29mZnNldCA9IDA7Ci0gICAgICAgIGlmIChsaW5lX29wdGlvbiAhPSAwKSB7Ci0gICAgICAgICAgICBsaW5lbm8gPSBQeU9iamVjdF9Jc1RydWUobGluZV9vcHRpb24pOwotICAgICAgICAgICAgaWYgKGxpbmVubyA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNvbF9vcHRpb24gIT0gMCkgewotICAgICAgICAgICAgY29sX29mZnNldCA9IFB5T2JqZWN0X0lzVHJ1ZShjb2xfb3B0aW9uKTsKLSAgICAgICAgICAgIGlmIChjb2xfb2Zmc2V0IDwgMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQogICAgICAgICAvKgogICAgICAgICAgKiAgQ29udmVydCBTVCBpbnRvIGEgdHVwbGUgcmVwcmVzZW50YXRpb24uICBVc2UgR3VpZG8ncyBmdW5jdGlvbiwKICAgICAgICAgICogIHNpbmNlIGl0J3Mga25vd24gdG8gd29yayBhbHJlYWR5LgogICAgICAgICAgKi8KICAgICAgICAgcmVzID0gbm9kZTJ0dXBsZShzZWxmLT5zdF9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9OZXcsIFB5TGlzdF9TZXRJdGVtLCBsaW5lbm8sIGNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9OZXcsIFB5TGlzdF9TZXRJdGVtLCBsaW5lX2luZm8sIGNvbF9pbmZvKTsKICAgICB9CiAgICAgcmV0dXJuIChyZXMpOwogfQpAQCAtNjAwLDggKzU3NiwxMCBAQAogICAgICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgICAgICAoKFB5U1RfT2JqZWN0ICopcmVzKS0+c3RfZmxhZ3MuY2ZfZmxhZ3MgPSBmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlQYXJzZXJfU2V0RXJyb3IoJmVycik7CisgICAgICAgIH0KKyAgICAgICAgUHlQYXJzZXJfQ2xlYXJFcnJvcigmZXJyKTsKICAgICB9CiAgICAgcmV0dXJuIChyZXMpOwogfQpAQCAtOTk1LDYgKzk3Myw3IEBACiBWQUxJREFURVIodGVzdGxpc3RfY29tcCk7ICAgICAgIFZBTElEQVRFUih5aWVsZF9leHByKTsKIFZBTElEQVRFUihvcl90ZXN0KTsKIFZBTElEQVRFUih0ZXN0X25vY29uZCk7ICAgICAgICAgVkFMSURBVEVSKGxhbWJkZWZfbm9jb25kKTsKK1ZBTElEQVRFUih5aWVsZF9hcmcpOwogCiAjdW5kZWYgVkFMSURBVEVSCiAKQEAgLTE2NTUsMjIgKzE2MzQsNDkgQEAKIH0KIAogCi0vKiB5aWVsZF9leHByOiAneWllbGQnIFt0ZXN0bGlzdF0KKy8qIHlpZWxkX2V4cHI6ICd5aWVsZCcgW3lpZWxkX2FyZ10KICAqLwogc3RhdGljIGludAogdmFsaWRhdGVfeWllbGRfZXhwcihub2RlICp0cmVlKQogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7Ci0gICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCB5aWVsZF9leHByKQotICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX25hbWUoQ0hJTEQodHJlZSwgMCksICJ5aWVsZCIpKTsKLQotICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKLSAgICAgICAgcmVzID0gdmFsaWRhdGVfdGVzdGxpc3QoQ0hJTEQodHJlZSwgMSkpOwotCi0gICAgcmV0dXJuIChyZXMpOworICAgIGlmIChuY2ggPCAxIHx8IG5jaCA+IDIpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfZXhwcikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgInlpZWxkIikpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChuY2ggPT0gMikgeworICAgICAgICBpZiAoIXZhbGlkYXRlX3lpZWxkX2FyZyhDSElMRCh0cmVlLCAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7CiB9CiAKKy8qIHlpZWxkX2FyZzogJ2Zyb20nIHRlc3QgfCB0ZXN0bGlzdAorICovCitzdGF0aWMgaW50Cit2YWxpZGF0ZV95aWVsZF9hcmcobm9kZSAqdHJlZSkKK3sKKyAgICBpbnQgbmNoID0gTkNIKHRyZWUpOworICAgIGlmICghdmFsaWRhdGVfbnR5cGUodHJlZSwgeWllbGRfYXJnKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgc3dpdGNoIChuY2gpIHsKKyAgICAgIGNhc2UgMToKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV90ZXN0bGlzdChDSElMRCh0cmVlLCBuY2ggLSAxKSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIDI6CisgICAgICAgIGlmICghdmFsaWRhdGVfbmFtZShDSElMRCh0cmVlLCAwKSwgImZyb20iKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIXZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMSkpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQogCiAvKiB5aWVsZF9zdG10OiB5aWVsZF9leHByCiAgKi8KQEAgLTIxNjUsMTYgKzIxNzEsMTYgQEAKICAgICAgICAgICovCiAgICAgICAgIHRyZWUgPSBDSElMRCh0cmVlLCAwKTsKICAgICAgICAgc3dpdGNoIChUWVBFKHRyZWUpKSB7Ci0gICAgICAgICAgICBjYXNlIExFU1M6Ci0gICAgICAgICAgICBjYXNlIEdSRUFURVI6Ci0gICAgICAgICAgICBjYXNlIEVRRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIEVRVUFMOgotICAgICAgICAgICAgY2FzZSBMRVNTRVFVQUw6Ci0gICAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKLSAgICAgICAgICAgIGNhc2UgTk9URVFVQUw6CisgICAgICAgICAgY2FzZSBMRVNTOgorICAgICAgICAgIGNhc2UgR1JFQVRFUjoKKyAgICAgICAgICBjYXNlIEVRRVFVQUw6CisgICAgICAgICAgY2FzZSBFUVVBTDoKKyAgICAgICAgICBjYXNlIExFU1NFUVVBTDoKKyAgICAgICAgICBjYXNlIEdSRUFURVJFUVVBTDoKKyAgICAgICAgICBjYXNlIE5PVEVRVUFMOgogICAgICAgICAgICAgICByZXMgPSAxOwogICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTkFNRToKKyAgICAgICAgICBjYXNlIE5BTUU6CiAgICAgICAgICAgICAgIHJlcyA9ICgoc3RyY21wKFNUUih0cmVlKSwgImluIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgIHx8IChzdHJjbXAoU1RSKHRyZWUpLCAiaXMiKSA9PSAwKSk7CiAgICAgICAgICAgICAgIGlmICghcmVzKSB7CkBAIC0yNzE5LDkgKzI3MjUsOSBAQAogewogICAgIGludCBuY2ggPSBOQ0godHJlZSk7CiAgICAgaW50IHJlcyA9ICh2YWxpZGF0ZV9udHlwZSh0cmVlLCBhcmd1bWVudCkKLSAgICAgICAgICAgICAgICYmICgobmNoID09IDEpIHx8IChuY2ggPT0gMikgfHwgKG5jaCA9PSAzKSkKLSAgICAgICAgICAgICAgICYmIHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpKTsKLQorICAgICAgICAgICAgICAgJiYgKChuY2ggPT0gMSkgfHwgKG5jaCA9PSAyKSB8fCAobmNoID09IDMpKSk7CisgICAgaWYgKHJlcykgCisgICAgICAgIHJlcyA9IHZhbGlkYXRlX3Rlc3QoQ0hJTEQodHJlZSwgMCkpOwogICAgIGlmIChyZXMgJiYgKG5jaCA9PSAyKSkKICAgICAgICAgcmVzID0gdmFsaWRhdGVfY29tcF9mb3IoQ0hJTEQodHJlZSwgMSkpOwogICAgIGVsc2UgaWYgKHJlcyAmJiAobmNoID09IDMpKQpAQCAtMzM1NiwxMCArMzM2MiwxMyBAQAogICAgIGNvcHlyZWcgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJjb3B5cmVnIik7CiAgICAgaWYgKGNvcHlyZWcgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZnVuYywgKnBpY2tsZXI7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHBpY2tsZSk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNlcXVlbmNlMnN0KTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX3BpY2tsZXIpOwogCi0gICAgICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGNvcHlyZWcsICJwaWNrbGUiKTsKLSAgICAgICAgcGlja2xlX2NvbnN0cnVjdG9yID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsICJzZXF1ZW5jZTJzdCIpOwotICAgICAgICBwaWNrbGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2R1bGUsICJfcGlja2xlciIpOworICAgICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChjb3B5cmVnLCAmUHlJZF9waWNrbGUpOworICAgICAgICBwaWNrbGVfY29uc3RydWN0b3IgPSBfUHlPYmplY3RfR2V0QXR0cklkKG1vZHVsZSwgJlB5SWRfc2VxdWVuY2Uyc3QpOworICAgICAgICBwaWNrbGVyID0gX1B5T2JqZWN0X0dldEF0dHJJZChtb2R1bGUsICZQeUlkX19waWNrbGVyKTsKICAgICAgICAgUHlfWElOQ1JFRihwaWNrbGVfY29uc3RydWN0b3IpOwogICAgICAgICBpZiAoKGZ1bmMgIT0gTlVMTCkgJiYgKHBpY2tsZV9jb25zdHJ1Y3RvciAhPSBOVUxMKQogICAgICAgICAgICAgJiYgKHBpY2tsZXIgIT0gTlVMTCkpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcG9zaXhtb2R1bGUuYyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwppbmRleCA5ZjU3NjczLi5kNDk4MmYwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAKICNpZiBkZWZpbmVkKF9fVk1TKQorIyAgICBlcnJvciAiUEVQIDExOiBWTVMgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgogIyAgICBpbmNsdWRlIDx1bml4aW8uaD4KICNlbmRpZiAvKiBkZWZpbmVkKF9fVk1TKSAqLwogCkBAIC00Myw2ICs0NCw3IEBACiAKIAogI2lmIGRlZmluZWQoUFlPU19PUzIpCisjZXJyb3IgIlBFUCAxMTogT1MvMiBpcyBub3cgdW5zdXBwb3J0ZWQsIGNvZGUgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjQiCiAjZGVmaW5lICBJTkNMX0RPUwogI2RlZmluZSAgSU5DTF9ET1NFUlJPUlMKICNkZWZpbmUgIElOQ0xfRE9TUFJPQ0VTUwpAQCAtNTcsNiArNTksMTAgQEAKICNpbmNsdWRlICJvc2RlZnMuaCIKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCkBAIC05Myw2ICs5OSw0OCBAQAogI2luY2x1ZGUgPGxhbmdpbmZvLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lTX1NFTkRGSUxFX0gKKyNpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisjaW5jbHVkZSA8c2NoZWQuaD4KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoQ1BVX0FMTE9DKSAmJiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUQUZGSU5JVFkpCisjdW5kZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1hBVFRSX0gpICYmIGRlZmluZWQoX19HTElCQ19fKQorI2RlZmluZSBVU0VfWEFUVFJTCisjZW5kaWYKKworI2lmZGVmIFVTRV9YQVRUUlMKKyNpbmNsdWRlIDxzeXMveGF0dHIuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0RMRkNOX0gKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisjICBkZWZpbmUgVEVSTVNJWkVfVVNFX0NPTklPCisjZWxpZiBkZWZpbmVkKEhBVkVfU1lTX0lPQ1RMX0gpCisjICBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKyMgIGlmIGRlZmluZWQoSEFWRV9URVJNSU9TX0gpCisjICAgIGluY2x1ZGUgPHRlcm1pb3MuaD4KKyMgIGVuZGlmCisjICBpZiBkZWZpbmVkKFRJT0NHV0lOU1opCisjICAgIGRlZmluZSBURVJNU0laRV9VU0VfSU9DVEwKKyMgIGVuZGlmCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLworCiAvKiBWYXJpb3VzIGNvbXBpbGVycyBoYXZlIG9ubHkgY2VydGFpbiBwb3NpeCBmdW5jdGlvbnMgKi8KIC8qIFhYWCBHb3NoIEkgd2lzaCB0aGVzZSB3ZXJlIGFsbCBtb3ZlZCBpbnRvIHB5Y29uZmlnLmggKi8KICNpZiBkZWZpbmVkKFBZQ0NfVkFDUFApICYmIGRlZmluZWQoUFlPU19PUzIpCkBAIC0xNTUsNiArMjAzLDkgQEAKICNlbmRpZiAgLyogISBfX1dBVENPTUNfXyB8fCBfX1FOWF9fICovCiAjZW5kaWYgLyogISBfX0lCTUNfXyAqLwogCisKKworCiAjaWZuZGVmIF9NU0NfVkVSCiAKICNpZiBkZWZpbmVkKF9fc2dpKSYmX0NPTVBJTEVSX1ZFUlNJT04+PTcwMApAQCAtMzI4LDEwICszNzksMTIgQEAKICN1bmRlZiBTVFJVQ1RfU1RBVAogI2lmIGRlZmluZWQoTVNfV0lONjQpIHx8IGRlZmluZWQoTVNfV0lORE9XUykKICMgICAgICAgZGVmaW5lIFNUQVQgd2luMzJfc3RhdAorIyAgICAgICBkZWZpbmUgTFNUQVQgd2luMzJfbHN0YXQKICMgICAgICAgZGVmaW5lIEZTVEFUIHdpbjMyX2ZzdGF0CiAjICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3Qgd2luMzJfc3RhdAogI2Vsc2UKICMgICAgICAgZGVmaW5lIFNUQVQgc3RhdAorIyAgICAgICBkZWZpbmUgTFNUQVQgbHN0YXQKICMgICAgICAgZGVmaW5lIEZTVEFUIGZzdGF0CiAjICAgICAgIGRlZmluZSBTVFJVQ1RfU1RBVCBzdHJ1Y3Qgc3RhdAogI2VuZGlmCkBAIC0zNDcsNiArNDAwLDQwMiBAQAogI2VuZGlmCiAjZW5kaWYKIAorCisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIGludAord2luMzJfd2Fybl9ieXRlc19hcGkoKQoreworICAgIHJldHVybiBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAiVGhlIFdpbmRvd3MgYnl0ZXMgQVBJIGhhcyBiZWVuIGRlcHJlY2F0ZWQsICIKKyAgICAgICAgInVzZSBVbmljb2RlIGZpbGVuYW1lcyBpbnN0ZWFkIiwKKyAgICAgICAgMSk7Cit9CisjZW5kaWYKKworCisjaWZkZWYgQVRfRkRDV0QKKy8qCisgKiBXaHkgdGhlIChpbnQpIGNhc3Q/ICBTb2xhcmlzIDEwIGRlZmluZXMgQVRfRkRDV0QgYXMgMHhmZmQxOTU1MyAoLTMwNDE5NjUpOworICogd2l0aG91dCB0aGUgaW50IGNhc3QsIHRoZSB2YWx1ZSBnZXRzIGludGVycHJldGVkIGFzIHVpbnQgKDQyOTE5MjUzMzEpLAorICogd2hpY2ggZG9lc24ndCBwbGF5IG5pY2VseSB3aXRoIGFsbCB0aGUgaW5pdGlhbGl6ZXIgbGluZXMgaW4gdGhpcyBmaWxlIHRoYXQKKyAqIGxvb2sgbGlrZSB0aGlzOgorICogICAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgKi8KKyNkZWZpbmUgREVGQVVMVF9ESVJfRkQgKGludClBVF9GRENXRAorI2Vsc2UKKyNkZWZpbmUgREVGQVVMVF9ESVJfRkQgKC0xMDApCisjZW5kaWYKKworc3RhdGljIGludAorX2ZkX2NvbnZlcnRlcihQeU9iamVjdCAqbywgaW50ICpwLCBpbnQgZGVmYXVsdF92YWx1ZSkgeworICAgIGxvbmcgbG9uZ192YWx1ZTsKKyAgICBpZiAobyA9PSBQeV9Ob25lKSB7CisgICAgICAgICpwID0gZGVmYXVsdF92YWx1ZTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChQeUZsb2F0X0NoZWNrKG8pKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZWdlciBhcmd1bWVudCBleHBlY3RlZCwgZ290IGZsb2F0IiApOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgbG9uZ192YWx1ZSA9IFB5TG9uZ19Bc0xvbmcobyk7CisgICAgaWYgKGxvbmdfdmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGxvbmdfdmFsdWUgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25lZCBpbnRlZ2VyIGlzIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAobG9uZ192YWx1ZSA8IElOVF9NSU4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmVkIGludGVnZXIgaXMgbGVzcyB0aGFuIG1pbmltdW0iKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgICpwID0gKGludClsb25nX3ZhbHVlOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitkaXJfZmRfY29udmVydGVyKFB5T2JqZWN0ICpvLCB2b2lkICpwKSB7CisgICAgcmV0dXJuIF9mZF9jb252ZXJ0ZXIobywgKGludCAqKXAsIERFRkFVTFRfRElSX0ZEKTsKK30KKworCisKKy8qCisgKiBBIFB5QXJnX1BhcnNlVHVwbGUgImNvbnZlcnRlciIgZnVuY3Rpb24KKyAqIHRoYXQgaGFuZGxlcyBmaWxlc3lzdGVtIHBhdGhzIGluIHRoZSBtYW5uZXIKKyAqIHByZWZlcnJlZCBieSB0aGUgb3MgbW9kdWxlLgorICoKKyAqIHBhdGhfY29udmVydGVyIGFjY2VwdHMgKFVuaWNvZGUpIHN0cmluZ3MgYW5kIHRoZWlyCisgKiBzdWJjbGFzc2VzLCBhbmQgYnl0ZXMgYW5kIHRoZWlyIHN1YmNsYXNzZXMuICBXaGF0CisgKiBpdCBkb2VzIHdpdGggdGhlIGFyZ3VtZW50IGRlcGVuZHMgb24gdGhlIHBsYXRmb3JtOgorICoKKyAqICAgKiBPbiBXaW5kb3dzLCBpZiB3ZSBnZXQgYSAoVW5pY29kZSkgc3RyaW5nIHdlCisgKiAgICAgZXh0cmFjdCB0aGUgd2NoYXJfdCAqIGFuZCByZXR1cm4gaXQ7IGlmIHdlIGdldAorICogICAgIGJ5dGVzIHdlIGV4dHJhY3QgdGhlIGNoYXIgKiBhbmQgcmV0dXJuIHRoYXQuCisgKgorICogICAqIE9uIGFsbCBvdGhlciBwbGF0Zm9ybXMsIHN0cmluZ3MgYXJlIGVuY29kZWQKKyAqICAgICB0byBieXRlcyB1c2luZyBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsIHRoZW4gd2UKKyAqICAgICBleHRyYWN0IHRoZSBjaGFyICogZnJvbSB0aGUgYnl0ZXMgb2JqZWN0IGFuZAorICogICAgIHJldHVybiB0aGF0LgorICoKKyAqIHBhdGhfY29udmVydGVyIGFsc28gb3B0aW9uYWxseSBhY2NlcHRzIHNpZ25lZAorICogaW50ZWdlcnMgKHJlcHJlc2VudGluZyBvcGVuIGZpbGUgZGVzY3JpcHRvcnMpIGluc3RlYWQKKyAqIG9mIHBhdGggc3RyaW5ncy4KKyAqCisgKiBJbnB1dCBmaWVsZHM6CisgKiAgIHBhdGgubnVsbGFibGUKKyAqICAgICBJZiBub256ZXJvLCB0aGUgcGF0aCBpcyBwZXJtaXR0ZWQgdG8gYmUgTm9uZS4KKyAqICAgcGF0aC5hbGxvd19mZAorICogICAgIElmIG5vbnplcm8sIHRoZSBwYXRoIGlzIHBlcm1pdHRlZCB0byBiZSBhIGZpbGUgaGFuZGxlCisgKiAgICAgKGEgc2lnbmVkIGludCkgaW5zdGVhZCBvZiBhIHN0cmluZy4KKyAqICAgcGF0aC5mdW5jdGlvbl9uYW1lCisgKiAgICAgSWYgbm9uLU5VTEwsIHBhdGhfY29udmVydGVyIHdpbGwgdXNlIHRoYXQgYXMgdGhlIG5hbWUKKyAqICAgICBvZiB0aGUgZnVuY3Rpb24gaW4gZXJyb3IgbWVzc2FnZXMuCisgKiAgICAgKElmIHBhdGguYXJndW1lbnRfbmFtZSBpcyBOVUxMIGl0IG9taXRzIHRoZSBmdW5jdGlvbiBuYW1lLikKKyAqICAgcGF0aC5hcmd1bWVudF9uYW1lCisgKiAgICAgSWYgbm9uLU5VTEwsIHBhdGhfY29udmVydGVyIHdpbGwgdXNlIHRoYXQgYXMgdGhlIG5hbWUKKyAqICAgICBvZiB0aGUgcGFyYW1ldGVyIGluIGVycm9yIG1lc3NhZ2VzLgorICogICAgIChJZiBwYXRoLmFyZ3VtZW50X25hbWUgaXMgTlVMTCBpdCB1c2VzICJwYXRoIi4pCisgKgorICogT3V0cHV0IGZpZWxkczoKKyAqICAgcGF0aC53aWRlCisgKiAgICAgUG9pbnRzIHRvIHRoZSBwYXRoIGlmIGl0IHdhcyBleHByZXNzZWQgYXMgVW5pY29kZQorICogICAgIGFuZCB3YXMgbm90IGVuY29kZWQuICAoT25seSB1c2VkIG9uIFdpbmRvd3MuKQorICogICBwYXRoLm5hcnJvdworICogICAgIFBvaW50cyB0byB0aGUgcGF0aCBpZiBpdCB3YXMgZXhwcmVzc2VkIGFzIGJ5dGVzLAorICogICAgIG9yIGl0IHdhcyBVbmljb2RlIGFuZCB3YXMgZW5jb2RlZCB0byBieXRlcy4KKyAqICAgcGF0aC5mZAorICogICAgIENvbnRhaW5zIGEgZmlsZSBkZXNjcmlwdG9yIGlmIHBhdGguYWNjZXB0X2ZkIHdhcyB0cnVlCisgKiAgICAgYW5kIHRoZSBjYWxsZXIgcHJvdmlkZWQgYSBzaWduZWQgaW50ZWdlciBpbnN0ZWFkIG9mIGFueQorICogICAgIHNvcnQgb2Ygc3RyaW5nLgorICoKKyAqICAgICBXQVJOSU5HOiBpZiB5b3VyICJwYXRoIiBwYXJhbWV0ZXIgaXMgb3B0aW9uYWwsIGFuZCBpcworICogICAgIHVuc3BlY2lmaWVkLCBwYXRoX2NvbnZlcnRlciB3aWxsIG5ldmVyIGdldCBjYWxsZWQuCisgKiAgICAgU28gaWYgeW91IHNldCBhbGxvd19mZCwgeW91ICpNVVNUKiBpbml0aWFsaXplIHBhdGguZmQgPSAtMQorICogICAgIHlvdXJzZWxmIQorICogICBwYXRoLmxlbmd0aAorICogICAgIFRoZSBsZW5ndGggb2YgdGhlIHBhdGggaW4gY2hhcmFjdGVycywgaWYgc3BlY2lmaWVkIGFzCisgKiAgICAgYSBzdHJpbmcuCisgKiAgIHBhdGgub2JqZWN0CisgKiAgICAgVGhlIG9yaWdpbmFsIG9iamVjdCBwYXNzZWQgaW4uCisgKiAgIHBhdGguY2xlYW51cAorICogICAgIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIE1heSBwb2ludCB0byBhIHRlbXBvcmFyeSBvYmplY3QuCisgKiAgICAgKFBheSBubyBhdHRlbnRpb24gdG8gdGhlIG1hbiBiZWhpbmQgdGhlIGN1cnRhaW4uKQorICoKKyAqICAgQXQgbW9zdCBvbmUgb2YgcGF0aC53aWRlIG9yIHBhdGgubmFycm93IHdpbGwgYmUgbm9uLU5VTEwuCisgKiAgIElmIHBhdGggd2FzIE5vbmUgYW5kIHBhdGgubnVsbGFibGUgd2FzIHNldCwKKyAqICAgICBvciBpZiBwYXRoIHdhcyBhbiBpbnRlZ2VyIGFuZCBwYXRoLmFsbG93X2ZkIHdhcyBzZXQsCisgKiAgICAgYm90aCBwYXRoLndpZGUgYW5kIHBhdGgubmFycm93IHdpbGwgYmUgTlVMTAorICogICAgIGFuZCBwYXRoLmxlbmd0aCB3aWxsIGJlIDAuCisgKgorICogICBwYXRoX2NvbnZlcnRlciB0YWtlcyBjYXJlIHRvIG5vdCB3cml0ZSB0byB0aGUgcGF0aF90CisgKiAgIHVubGVzcyBpdCdzIHN1Y2Nlc3NmdWwuICBIb3dldmVyIGl0IG11c3QgcmVzZXQgdGhlCisgKiAgICJjbGVhbnVwIiBmaWVsZCBlYWNoIHRpbWUgaXQncyBjYWxsZWQuCisgKgorICogVXNlIGFzIGZvbGxvd3M6CisgKiAgICAgIHBhdGhfdCBwYXRoOworICogICAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgKiAgICAgIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mIiwgcGF0aF9jb252ZXJ0ZXIsICZwYXRoKTsKKyAqICAgICAgLy8gLi4uIHVzZSB2YWx1ZXMgZnJvbSBwYXRoIC4uLgorICogICAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICoKKyAqIChOb3RlIHRoYXQgaWYgUHlBcmdfUGFyc2UgZmFpbHMgeW91IGRvbid0IG5lZWQgdG8gY2FsbAorICogcGF0aF9jbGVhbnVwKCkuICBIb3dldmVyIGl0IGlzIHNhZmUgdG8gZG8gc28uKQorICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgY2hhciAqZnVuY3Rpb25fbmFtZTsKKyAgICBjaGFyICphcmd1bWVudF9uYW1lOworICAgIGludCBudWxsYWJsZTsKKyAgICBpbnQgYWxsb3dfZmQ7CisgICAgd2NoYXJfdCAqd2lkZTsKKyAgICBjaGFyICpuYXJyb3c7CisgICAgaW50IGZkOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICpvYmplY3Q7CisgICAgUHlPYmplY3QgKmNsZWFudXA7Cit9IHBhdGhfdDsKKworc3RhdGljIHZvaWQKK3BhdGhfY2xlYW51cChwYXRoX3QgKnBhdGgpIHsKKyAgICBpZiAocGF0aC0+Y2xlYW51cCkgeworICAgICAgICBQeV9ERUNSRUYocGF0aC0+Y2xlYW51cCk7CisgICAgICAgIHBhdGgtPmNsZWFudXAgPSBOVUxMOworICAgIH0KK30KKworc3RhdGljIGludAorcGF0aF9jb252ZXJ0ZXIoUHlPYmplY3QgKm8sIHZvaWQgKnApIHsKKyAgICBwYXRoX3QgKnBhdGggPSAocGF0aF90ICopcDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSwgKmJ5dGVzOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIGNoYXIgKm5hcnJvdzsKKworI2RlZmluZSBGT1JNQVRfRVhDRVBUSU9OKGV4YywgZm10KSBcCisgICAgUHlFcnJfRm9ybWF0KGV4YywgIiVzJXMiIGZtdCwgXAorICAgICAgICBwYXRoLT5mdW5jdGlvbl9uYW1lID8gcGF0aC0+ZnVuY3Rpb25fbmFtZSA6ICIiLCBcCisgICAgICAgIHBhdGgtPmZ1bmN0aW9uX25hbWUgPyAiOiAiICAgICAgICAgICAgICAgIDogIiIsIFwKKyAgICAgICAgcGF0aC0+YXJndW1lbnRfbmFtZSA/IHBhdGgtPmFyZ3VtZW50X25hbWUgOiAicGF0aCIpCisKKyAgICAvKiBQeV9DTEVBTlVQX1NVUFBPUlRFRCBzdXBwb3J0ICovCisgICAgaWYgKG8gPT0gTlVMTCkgeworICAgICAgICBwYXRoX2NsZWFudXAocGF0aCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIGVuc3VyZSBpdCdzIGFsd2F5cyBzYWZlIHRvIGNhbGwgcGF0aF9jbGVhbnVwKCkgKi8KKyAgICBwYXRoLT5jbGVhbnVwID0gTlVMTDsKKworICAgIGlmIChvID09IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFwYXRoLT5udWxsYWJsZSkgeworICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzcGVjaWZ5IE5vbmUgZm9yICVzIGFyZ3VtZW50Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBwYXRoLT53aWRlID0gTlVMTDsKKyAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKKyAgICAgICAgcGF0aC0+bGVuZ3RoID0gMDsKKyAgICAgICAgcGF0aC0+b2JqZWN0ID0gbzsKKyAgICAgICAgcGF0aC0+ZmQgPSAtMTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG8pOworICAgIGlmICh1bmljb2RlKSB7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB3Y2hhcl90ICp3aWRlOworICAgICAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSk7CisgICAgICAgIGlmIChsZW5ndGggPiAzMjc2NykgeworICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiJXMgdG9vIGxvbmcgZm9yIFdpbmRvd3MiKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgd2lkZSA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pY29kZSk7CisgICAgICAgIGlmICghd2lkZSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwYXRoLT53aWRlID0gd2lkZTsKKyAgICAgICAgcGF0aC0+bmFycm93ID0gTlVMTDsKKyAgICAgICAgcGF0aC0+bGVuZ3RoID0gbGVuZ3RoOworICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICBwYXRoLT5mZCA9IC0xOworICAgICAgICBwYXRoLT5jbGVhbnVwID0gdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworI2Vsc2UKKyAgICAgICAgaW50IGNvbnZlcnRlZCA9IFB5VW5pY29kZV9GU0NvbnZlcnRlcih1bmljb2RlLCAmYnl0ZXMpOworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIGlmICghY29udmVydGVkKQorICAgICAgICAgICAgYnl0ZXMgPSBOVUxMOworI2VuZGlmCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdChvKTsKKyAgICAgICAgaWYgKCFieXRlcykgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChwYXRoLT5hbGxvd19mZCkgeworICAgICAgICAgICAgICAgIGludCBmZDsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG5vdGU6IF9mZF9jb252ZXJ0ZXIgYWx3YXlzIHBlcm1pdHMgTm9uZS4KKyAgICAgICAgICAgICAgICAgKiBidXQgd2UndmUgYWxyZWFkeSBkb25lIG91ciBOb25lIGNoZWNrLgorICAgICAgICAgICAgICAgICAqIHNvIG8gY2Fubm90IGJlIE5vbmUgYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gX2ZkX2NvbnZlcnRlcihvLCAmZmQsIC0xKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhdGgtPndpZGUgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBwYXRoLT5uYXJyb3cgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBwYXRoLT5sZW5ndGggPSAwOworICAgICAgICAgICAgICAgICAgICBwYXRoLT5vYmplY3QgPSBvOworICAgICAgICAgICAgICAgICAgICBwYXRoLT5mZCA9IGZkOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghYnl0ZXMpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19UeXBlRXJyb3IsICJpbGxlZ2FsIHR5cGUgZm9yICVzIHBhcmFtZXRlciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHdpbjMyX3dhcm5fYnl0ZXNfYXBpKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmCisKKyAgICBsZW5ndGggPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGxlbmd0aCA+IE1BWF9QQVRIKSB7CisgICAgICAgIEZPUk1BVF9FWENFUFRJT04oUHlFeGNfVmFsdWVFcnJvciwgIiVzIHRvbyBsb25nIGZvciBXaW5kb3dzIik7CisgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorCisgICAgbmFycm93ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOworICAgIGlmIChsZW5ndGggIT0gc3RybGVuKG5hcnJvdykpIHsKKyAgICAgICAgRk9STUFUX0VYQ0VQVElPTihQeUV4Y19WYWx1ZUVycm9yLCAiZW1iZWRkZWQgTlVMIGNoYXJhY3RlciBpbiAlcyIpOworICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwYXRoLT53aWRlID0gTlVMTDsKKyAgICBwYXRoLT5uYXJyb3cgPSBuYXJyb3c7CisgICAgcGF0aC0+bGVuZ3RoID0gbGVuZ3RoOworICAgIHBhdGgtPm9iamVjdCA9IG87CisgICAgcGF0aC0+ZmQgPSAtMTsKKyAgICBwYXRoLT5jbGVhbnVwID0gYnl0ZXM7CisgICAgcmV0dXJuIFB5X0NMRUFOVVBfU1VQUE9SVEVEOworfQorCitzdGF0aWMgdm9pZAorYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoY2hhciAqZnVuY3Rpb25fbmFtZSwgY2hhciAqYXJndW1lbnRfbmFtZSkgeworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAiJXMlcyVzIHVuYXZhaWxhYmxlIG9uIHRoaXMgcGxhdGZvcm0iLAorICAgICAgICAoZnVuY3Rpb25fbmFtZSAhPSBOVUxMKSA/IGZ1bmN0aW9uX25hbWUgOiAiIiwKKyAgICAgICAgKGZ1bmN0aW9uX25hbWUgIT0gTlVMTCkgPyAiOiAiOiAiIiwKKyAgICAgICAgYXJndW1lbnRfbmFtZSk7Cit9CisKK3N0YXRpYyBpbnQKK2Rpcl9mZF91bmF2YWlsYWJsZShQeU9iamVjdCAqbywgdm9pZCAqcCkgeworICAgIGludCAqZGlyX2ZkID0gKGludCAqKXA7CisgICAgaW50IHJldHVybl92YWx1ZSA9IF9mZF9jb252ZXJ0ZXIobywgZGlyX2ZkLCBERUZBVUxUX0RJUl9GRCk7CisgICAgaWYgKCFyZXR1cm5fdmFsdWUpCisgICAgICAgIHJldHVybiAwOworICAgIGlmICgqZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXR1cm4gMTsKKyAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcihOVUxMLCAiZGlyX2ZkIik7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2ZkX3NwZWNpZmllZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZmQpIHsKKyAgICBpZiAoZmQgPT0gLTEpCisgICAgICAgIHJldHVybiAwOworCisgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgImZkIik7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2ZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGZvbGxvd19zeW1saW5rcykgeworICAgIGlmIChmb2xsb3dfc3ltbGlua3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgImZvbGxvd19zeW1saW5rcyIpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitwYXRoX2FuZF9kaXJfZmRfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgsIGludCBkaXJfZmQpIHsKKyAgICBpZiAoIXBhdGgtPm5hcnJvdyAmJiAhcGF0aC0+d2lkZSAmJiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogY2FuJ3Qgc3BlY2lmeSBkaXJfZmQgd2l0aG91dCBtYXRjaGluZyBwYXRoIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Rpcl9mZF9hbmRfZmRfaW52YWxpZChjaGFyICpmdW5jdGlvbl9uYW1lLCBpbnQgZGlyX2ZkLCBpbnQgZmQpIHsKKyAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgJiYgKGZkICE9IC0xKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogY2FuJ3Qgc3BlY2lmeSBib3RoIGRpcl9mZCBhbmQgZmQiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKGNoYXIgKmZ1bmN0aW9uX25hbWUsIGludCBmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9sbG93X3N5bWxpbmtzKSB7CisgICAgaWYgKChmZCA+IDApICYmICghZm9sbG93X3N5bWxpbmtzKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlczogY2Fubm90IHVzZSBmZCBhbmQgZm9sbG93X3N5bWxpbmtzIHRvZ2V0aGVyIiwKKyAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2Rpcl9mZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoY2hhciAqZnVuY3Rpb25fbmFtZSwgaW50IGRpcl9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvbGxvd19zeW1saW5rcykgeworICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IGNhbm5vdCB1c2UgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgdG9nZXRoZXIiLAorICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fbmFtZSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworLyogQSBoZWxwZXIgdXNlZCBieSBhIG51bWJlciBvZiBQT1NJWC1vbmx5IGZ1bmN0aW9ucyAqLworI2lmbmRlZiBNU19XSU5ET1dTCitzdGF0aWMgaW50CitfcGFyc2Vfb2ZmX3QoUHlPYmplY3QqIGFyZywgdm9pZCogYWRkcikKK3sKKyNpZiAhZGVmaW5lZChIQVZFX0xBUkdFRklMRV9TVVBQT1JUKQorICAgICooKG9mZl90KilhZGRyKSA9IFB5TG9uZ19Bc0xvbmcoYXJnKTsKKyNlbHNlCisgICAgKigob2ZmX3QqKWFkZHIpID0gUHlMb25nX0FzTG9uZ0xvbmcoYXJnKTsKKyNlbmRpZgorICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZgorCiAjaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwCiAvKiBNaWNyb3NvZnQgQ1JUIGluIFZTMjAwNSBhbmQgaGlnaGVyIHdpbGwgdmVyaWZ5IHRoYXQgYSBmaWxlaGFuZGxlIGlzCiAgKiB2YWxpZCBhbmQgdGhyb3cgYW4gYXNzZXJ0aW9uIGlmIGl0IGlzbid0LgpAQCAtNDk4LDYgKzk0Nyw3IEBACiAKICAgICByZXR1cm4gVFJVRTsKIH0KKwogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogUmV0dXJuIGEgZGljdGlvbmFyeSBjb3JyZXNwb25kaW5nIHRvIHRoZSBQT1NJWCBlbnZpcm9ubWVudCB0YWJsZSAqLwpAQCAtNjUzLDcgKzExMDMsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luMzJfZXJyb3JfdW5pY29kZShjaGFyKiBmdW5jdGlvbiwgUHlfVU5JQ09ERSogZmlsZW5hbWUpCit3aW4zMl9lcnJvcl91bmljb2RlKGNoYXIqIGZ1bmN0aW9uLCB3Y2hhcl90KiBmaWxlbmFtZSkKIHsKICAgICAvKiBYWFggLSBzZWUgd2luMzJfZXJyb3IgZm9yIGNvbW1lbnRzIG9uICdmdW5jdGlvbicgKi8KICAgICBlcnJubyA9IEdldExhc3RFcnJvcigpOwpAQCAtNjYzLDI1ICsxMTEzLDQ4IEBACiAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnJubyk7CiB9CiAKLXN0YXRpYyBpbnQKLWNvbnZlcnRfdG9fdW5pY29kZShQeU9iamVjdCAqKnBhcmFtKQorc3RhdGljIFB5T2JqZWN0ICoKK3dpbjMyX2Vycm9yX29iamVjdChjaGFyKiBmdW5jdGlvbiwgUHlPYmplY3QqIGZpbGVuYW1lKQogewotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCgqcGFyYW0pKQotICAgICAgICBQeV9JTkNSRUYoKnBhcmFtKTsKLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soKnBhcmFtKSkKLSAgICAgICAgLyogRm9yIGEgVW5pY29kZSBzdWJ0eXBlIHRoYXQncyBub3QgYSBVbmljb2RlIG9iamVjdCwKLSAgICAgICAgICAgcmV0dXJuIGEgdHJ1ZSBVbmljb2RlIG9iamVjdCB3aXRoIHRoZSBzYW1lIGRhdGEuICovCi0gICAgICAgICpwYXJhbSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERSgqcGFyYW0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKCpwYXJhbSkpOworICAgIC8qIFhYWCAtIHNlZSB3aW4zMl9lcnJvciBmb3IgY29tbWVudHMgb24gJ2Z1bmN0aW9uJyAqLworICAgIGVycm5vID0gR2V0TGFzdEVycm9yKCk7CisgICAgaWYgKGZpbGVuYW1lKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWVPYmplY3QoCisgICAgICAgICAgICAgICAgICAgIFB5RXhjX1dpbmRvd3NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgZXJybm8sCisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lKTsKICAgICBlbHNlCi0gICAgICAgICpwYXJhbSA9IFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgqcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0cmljdCIpOwotICAgIHJldHVybiAoKnBhcmFtKSAhPSBOVUxMOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoZXJybm8pOwogfQogCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCisvKgorICogU29tZSBmdW5jdGlvbnMgcmV0dXJuIFdpbjMyIGVycm9ycywgb3RoZXJzIG9ubHkgZXZlciB1c2UgcG9zaXhfZXJyb3IKKyAqICh0aGlzIGlzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGV4Y2VwdGlvbnMpCisgKi8KK3N0YXRpYyBQeU9iamVjdCAqCitwYXRoX3Bvc2l4X2Vycm9yKGNoYXIgKmZ1bmN0aW9uX25hbWUsIHBhdGhfdCAqcGF0aCkKK3sKKyAgICBpZiAocGF0aC0+bmFycm93KQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoLT5uYXJyb3cpOworICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcGF0aF9lcnJvcihjaGFyICpmdW5jdGlvbl9uYW1lLCBwYXRoX3QgKnBhdGgpCit7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLT5uYXJyb3cpCisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcihmdW5jdGlvbl9uYW1lLCBwYXRoLT5uYXJyb3cpOworICAgIGlmIChwYXRoLT53aWRlKQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZShmdW5jdGlvbl9uYW1lLCBwYXRoLT53aWRlKTsKKyAgICByZXR1cm4gd2luMzJfZXJyb3IoZnVuY3Rpb25fbmFtZSwgTlVMTCk7CisjZWxzZQorICAgIHJldHVybiBwYXRoX3Bvc2l4X2Vycm9yKGZ1bmN0aW9uX25hbWUsIHBhdGgpOworI2VuZGlmCit9CisKICNpZiBkZWZpbmVkKFBZT1NfT1MyKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqICAgICAgICAgSGVscGVyIEZ1bmN0aW9uIHRvIFRyaW0gYW5kIEZvcm1hdCBPUy8yIE1lc3NhZ2VzCkBAIC04MDAsMzIgKzEyNzMsNiBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfMnN0cihQeU9iamVjdCAqYXJncywKLSAgICAgICAgICAgY2hhciAqZm9ybWF0LAotICAgICAgICAgICBpbnQgKCpmdW5jKShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKikpCi17Ci0gICAgUHlPYmplY3QgKm9wYXRoMSA9IE5VTEwsICpvcGF0aDIgPSBOVUxMOwotICAgIGNoYXIgKnBhdGgxLCAqcGF0aDI7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoMikpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHBhdGgxID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aDEpOwotICAgIHBhdGgyID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aDIpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSAoKmZ1bmMpKHBhdGgxLCBwYXRoMik7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgxKTsKLSAgICBQeV9ERUNSRUYob3BhdGgyKTsKLSAgICBpZiAocmVzICE9IDApCi0gICAgICAgIC8qIFhYWCBob3cgdG8gcmVwb3J0IGJvdGggcGF0aDEgYW5kIHBhdGgyPz8/ICovCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKLX0KIAogI2lmZGVmIE1TX1dJTkRPV1MKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTgzNCwyMiArMTI4MSwyOCBAQAogICAgICAgICAgICBjaGFyKiB3Zm9ybWF0LCBCT09MIChfX3N0ZGNhbGwgKmZ1bmNXKShMUFdTVFIpKQogewogICAgIFB5T2JqZWN0ICp1bmk7Ci0gICAgY2hhciAqYW5zaTsKKyAgICBjb25zdCBjaGFyICphbnNpOwogICAgIEJPT0wgcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIHdmb3JtYXQsICZ1bmkpKQotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgeworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIHdmb3JtYXQsICZ1bmkpKQorICAgIHsKKyAgICAgICAgd2NoYXJfdCAqd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pKTsKKyAgICAgICAgaWYgKHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlc3VsdCA9IGZ1bmNXKFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pKSk7CisgICAgICAgIHJlc3VsdCA9IGZ1bmNXKHdzdHIpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKGZ1bmMsIFB5VW5pY29kZV9Bc1VuaWNvZGUodW5pKSk7CisgICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KGZ1bmMsIHVuaSk7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQorICAgIFB5RXJyX0NsZWFyKCk7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LCAmYW5zaSkpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzdWx0ID0gZnVuY0EoYW5zaSk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTEwNjQsMTggKzE1MTcsMTkgQEAKIAogLyogR3JhYiBHZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwogc3RhdGljIGludCBoYXNfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlID0gMDsKLXN0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0dldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEpKEhBTkRMRSwgTFBTVFIsIERXT1JELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQpOwogc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVykoSEFORExFLCBMUFdTVFIsIERXT1JELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQpOwogc3RhdGljIGludAogY2hlY2tfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlKCkKIHsKICAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOworICAgIERXT1JEIChDQUxMQkFDSyAqUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlQSkoSEFORExFLCBMUFNUUiwgRFdPUkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCk7CisKICAgICAvKiBvbmx5IHJlY2hlY2sgKi8KICAgICBpZiAoIWhhc19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUpCiAgICAgewotICAgICAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyIik7CisgICAgICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOwogICAgICAgICAqKEZBUlBST0MqKSZQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVBID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZUEiKTsKICAgICAgICAgKihGQVJQUk9DKikmUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKQEAgLTEzODIsNyArMTgzNiwxMCBAQAogICAgIEhBTkRMRSBoOwogICAgIGludCB0eXBlOwogCi0gICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZV9udW1iZXIpOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZpbGVfbnVtYmVyKSkKKyAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIGVsc2UKKyAgICAgICAgaCA9IChIQU5ETEUpX2dldF9vc2ZoYW5kbGUoZmlsZV9udW1iZXIpOwogCiAgICAgLyogUHJvdG9jb2wgdmlvbGF0aW9uOiB3ZSBleHBsaWNpdGx5IGNsZWFyIGVycm5vLCBpbnN0ZWFkIG9mCiAgICAgICAgc2V0dGluZyBpdCB0byBhIFBPU0lYIGVycm9yLiBDYWxsZXJzIHNob3VsZCB1c2UgR2V0TGFzdEVycm9yLiAqLwpAQCAtMTQyNiw3ICsxODgzLDcgQEAKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKIFB5RG9jX1NUUlZBUihzdGF0X3Jlc3VsdF9fZG9jX18sCi0ic3RhdF9yZXN1bHQ6IFJlc3VsdCBmcm9tIHN0YXQgb3IgbHN0YXQuXG5cblwKKyJzdGF0X3Jlc3VsdDogUmVzdWx0IGZyb20gc3RhdCwgZnN0YXQsIG9yIGxzdGF0LlxuXG5cCiBUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2ZcblwKICAgKG1vZGUsIGlubywgZGV2LCBubGluaywgdWlkLCBnaWQsIHNpemUsIGF0aW1lLCBtdGltZSwgY3RpbWUpXG5cCiBvciB2aWEgdGhlIGF0dHJpYnV0ZXMgc3RfbW9kZSwgc3RfaW5vLCBzdF9kZXYsIHN0X25saW5rLCBzdF91aWQsIGFuZCBzbyBvbi5cblwKQEAgLTE0NTEsNiArMTkwOCw5IEBACiAgICAgeyJzdF9hdGltZSIsICAgInRpbWUgb2YgbGFzdCBhY2Nlc3MifSwKICAgICB7InN0X210aW1lIiwgICAidGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiJ9LAogICAgIHsic3RfY3RpbWUiLCAgICJ0aW1lIG9mIGxhc3QgY2hhbmdlIn0sCisgICAgeyJzdF9hdGltZV9ucyIsICAgInRpbWUgb2YgbGFzdCBhY2Nlc3MgaW4gbmFub3NlY29uZHMifSwKKyAgICB7InN0X210aW1lX25zIiwgICAidGltZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiBpbiBuYW5vc2Vjb25kcyJ9LAorICAgIHsic3RfY3RpbWVfbnMiLCAgICJ0aW1lIG9mIGxhc3QgY2hhbmdlIGluIG5hbm9zZWNvbmRzIn0sCiAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CTEtTSVpFCiAgICAgeyJzdF9ibGtzaXplIiwgImJsb2Nrc2l6ZSBmb3IgZmlsZXN5c3RlbSBJL08ifSwKICNlbmRpZgpAQCAtMTQ3Myw5ICsxOTMzLDkgQEAKIH07CiAKICNpZmRlZiBIQVZFX1NUUlVDVF9TVEFUX1NUX0JMS1NJWkUKLSNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTMKKyNkZWZpbmUgU1RfQkxLU0laRV9JRFggMTYKICNlbHNlCi0jZGVmaW5lIFNUX0JMS1NJWkVfSURYIDEyCisjZGVmaW5lIFNUX0JMS1NJWkVfSURYIDE1CiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRfU1RfQkxPQ0tTCkBAIC0xNTQ0LDkgKzIwMDQsMzkgQEAKICAgICAxMAogfTsKIAorI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKK1B5RG9jX1NUUlZBUih3YWl0aWRfcmVzdWx0X19kb2NfXywKKyJ3YWl0aWRfcmVzdWx0OiBSZXN1bHQgZnJvbSB3YWl0aWQuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorICAoc2lfcGlkLCBzaV91aWQsIHNpX3NpZ25vLCBzaV9zdGF0dXMsIHNpX2NvZGUpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHNpX3BpZCwgc2lfdWlkLCBhbmQgc28gb24uXG5cCitcblwKK1NlZSBvcy53YWl0aWQgZm9yIG1vcmUgaW5mb3JtYXRpb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHdhaXRpZF9yZXN1bHRfZmllbGRzW10gPSB7CisgICAgeyJzaV9waWQiLCAgfSwKKyAgICB7InNpX3VpZCIsIH0sCisgICAgeyJzaV9zaWdubyIsIH0sCisgICAgeyJzaV9zdGF0dXMiLCAgfSwKKyAgICB7InNpX2NvZGUiLCB9LAorICAgIHswfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyB3YWl0aWRfcmVzdWx0X2Rlc2MgPSB7CisgICAgIndhaXRpZF9yZXN1bHQiLCAvKiBuYW1lICovCisgICAgd2FpdGlkX3Jlc3VsdF9fZG9jX18sIC8qIGRvYyAqLworICAgIHdhaXRpZF9yZXN1bHRfZmllbGRzLAorICAgIDUKK307CitzdGF0aWMgUHlUeXBlT2JqZWN0IFdhaXRpZFJlc3VsdFR5cGU7CisjZW5kaWYKKwogc3RhdGljIGludCBpbml0aWFsaXplZDsKIHN0YXRpYyBQeVR5cGVPYmplY3QgU3RhdFJlc3VsdFR5cGU7CiBzdGF0aWMgUHlUeXBlT2JqZWN0IFN0YXRWRlNSZXN1bHRUeXBlOworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKK3N0YXRpYyBQeVR5cGVPYmplY3QgU2NoZWRQYXJhbVR5cGU7CisjZW5kaWYKIHN0YXRpYyBuZXdmdW5jIHN0cnVjdHNlcV9uZXc7CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTg5LDYgKzIwNzksMTAgQEAKICAgICBpbnQgbmV3dmFsID0gLTE7CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpzdGF0X2Zsb2F0X3RpbWVzIiwgJm5ld3ZhbCkpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInN0YXRfZmxvYXRfdGltZXMoKSBpcyBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgIDEpKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobmV3dmFsID09IC0xKQogICAgICAgICAvKiBSZXR1cm4gb2xkIHZhbHVlICovCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoX3N0YXRfZmxvYXRfdGltZXMpOwpAQCAtMTU5NywyNSArMjA5MSw1MCBAQAogICAgIHJldHVybiBQeV9Ob25lOwogfQogCitzdGF0aWMgUHlPYmplY3QgKmJpbGxpb24gPSBOVUxMOworCiBzdGF0aWMgdm9pZAogZmlsbF90aW1lKFB5T2JqZWN0ICp2LCBpbnQgaW5kZXgsIHRpbWVfdCBzZWMsIHVuc2lnbmVkIGxvbmcgbnNlYykKIHsKLSAgICBQeU9iamVjdCAqZnZhbCwqaXZhbDsKLSNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKLSAgICBpdmFsID0gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXNlYyk7Ci0jZWxzZQotICAgIGl2YWwgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpc2VjKTsKLSNlbmRpZgotICAgIGlmICghaXZhbCkKLSAgICAgICAgcmV0dXJuOworICAgIFB5T2JqZWN0ICpzID0gX1B5TG9uZ19Gcm9tVGltZV90KHNlYyk7CisgICAgUHlPYmplY3QgKm5zX2ZyYWN0aW9uYWwgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhuc2VjKTsKKyAgICBQeU9iamVjdCAqc19pbl9ucyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5zX3RvdGFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmxvYXRfcyA9IE5VTEw7CisKKyAgICBpZiAoIShzICYmIG5zX2ZyYWN0aW9uYWwpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBzX2luX25zID0gUHlOdW1iZXJfTXVsdGlwbHkocywgYmlsbGlvbik7CisgICAgaWYgKCFzX2luX25zKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBuc190b3RhbCA9IFB5TnVtYmVyX0FkZChzX2luX25zLCBuc19mcmFjdGlvbmFsKTsKKyAgICBpZiAoIW5zX3RvdGFsKQorICAgICAgICBnb3RvIGV4aXQ7CisKICAgICBpZiAoX3N0YXRfZmxvYXRfdGltZXMpIHsKLSAgICAgICAgZnZhbCA9IFB5RmxvYXRfRnJvbURvdWJsZShzZWMgKyAxZS05Km5zZWMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZ2YWwgPSBpdmFsOwotICAgICAgICBQeV9JTkNSRUYoZnZhbCk7CisgICAgICAgIGZsb2F0X3MgPSBQeUZsb2F0X0Zyb21Eb3VibGUoc2VjICsgMWUtOSpuc2VjKTsKKyAgICAgICAgaWYgKCFmbG9hdF9zKQorICAgICAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIGluZGV4LCBpdmFsKTsKLSAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHYsIGluZGV4KzMsIGZ2YWwpOworICAgIGVsc2UgeworICAgICAgICBmbG9hdF9zID0gczsKKyAgICAgICAgUHlfSU5DUkVGKGZsb2F0X3MpOworICAgIH0KKworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgsIHMpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgaW5kZXgrMywgZmxvYXRfcyk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCBpbmRleCs2LCBuc190b3RhbCk7CisgICAgcyA9IE5VTEw7CisgICAgZmxvYXRfcyA9IE5VTEw7CisgICAgbnNfdG90YWwgPSBOVUxMOworZXhpdDoKKyAgICBQeV9YREVDUkVGKHMpOworICAgIFB5X1hERUNSRUYobnNfZnJhY3Rpb25hbCk7CisgICAgUHlfWERFQ1JFRihzX2luX25zKTsKKyAgICBQeV9YREVDUkVGKG5zX3RvdGFsKTsKKyAgICBQeV9YREVDUkVGKGZsb2F0X3MpOwogfQogCiAvKiBwYWNrIGEgc3lzdGVtIHN0YXQgQyBzdHJ1Y3R1cmUgaW50byB0aGUgUHl0aG9uIHN0YXQgdHVwbGUKQEAgLTE3MTgsMTI2ICsyMjM3LDIzOCBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZG9fc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsCi0gICAgICAgICAgICAgIGNoYXIgKmZvcm1hdCwKLSNpZmRlZiBfX1ZNUwotICAgICAgICAgICAgICBpbnQgKCpzdGF0ZnVuYykoY29uc3QgY2hhciAqLCBTVFJVQ1RfU1RBVCAqLCAuLi4pLAotI2Vsc2UKLSAgICAgICAgICAgICAgaW50ICgqc3RhdGZ1bmMpKGNvbnN0IGNoYXIgKiwgU1RSVUNUX1NUQVQgKiksCi0jZW5kaWYKLSAgICAgICAgICAgICAgY2hhciAqd2Zvcm1hdCwKLSAgICAgICAgICAgICAgaW50ICgqd3N0YXRmdW5jKShjb25zdCBQeV9VTklDT0RFICosIFNUUlVDVF9TVEFUICopKQotewotICAgIFNUUlVDVF9TVEFUIHN0OwotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOwotICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIHdmb3JtYXQsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7Ci0KLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgcmVzdWx0IE9LIHdpdGhvdXQKLSAgICAgICAgICAgICAgIHRocmVhZCBsb2NrIGFzIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICByZXMgPSB3c3RhdGZ1bmMod3BhdGgsICZzdCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICAgICAgaWYgKHJlcyAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInN0YXQiLCB3cGF0aCk7Ci0gICAgICAgIHJldHVybiBfcHlzdGF0X2Zyb21zdHJ1Y3RzdGF0KCZzdCk7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotI2VuZGlmCi0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gKCpzdGF0ZnVuYykocGF0aCwgJnN0KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHJlcyAhPSAwKSB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgICAgICByZXN1bHQgPSB3aW4zMl9lcnJvcigic3RhdCIsIHBhdGgpOwotI2Vsc2UKLSAgICAgICAgcmVzdWx0ID0gcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoKTsKLSNlbmRpZgotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKLQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQogLyogUE9TSVggbWV0aG9kcyAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfYWNjZXNzX19kb2NfXywKLSJhY2Nlc3MocGF0aCwgbW9kZSkgLT4gVHJ1ZSBpZiBncmFudGVkLCBGYWxzZSBvdGhlcndpc2VcblxuXAotVXNlIHRoZSByZWFsIHVpZC9naWQgdG8gdGVzdCBmb3IgYWNjZXNzIHRvIGEgcGF0aC4gIE5vdGUgdGhhdCBtb3N0XG5cCi1vcGVyYXRpb25zIHdpbGwgdXNlIHRoZSBlZmZlY3RpdmUgdWlkL2dpZCwgdGhlcmVmb3JlIHRoaXMgcm91dGluZSBjYW5cblwKLWJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlciBoYXMgdGhlXG5cCi1zcGVjaWZpZWQgYWNjZXNzIHRvIHRoZSBwYXRoLiAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlIEZfT0sgdG8gdGVzdFxuXAotZXhpc3RlbmNlLCBvciB0aGUgaW5jbHVzaXZlLU9SIG9mIFJfT0ssIFdfT0ssIGFuZCBYX09LLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfYWNjZXNzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2RvX3N0YXQoY2hhciAqZnVuY3Rpb25fbmFtZSwgcGF0aF90ICpwYXRoLAorICAgICAgICAgICAgICBpbnQgZGlyX2ZkLCBpbnQgZm9sbG93X3N5bWxpbmtzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aDsKLSAgICBjaGFyICpwYXRoOworICAgIFNUUlVDVF9TVEFUIHN0OworICAgIGludCByZXN1bHQ7CisKKyNpZiAhZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX0ZTVEFUQVQpICYmICFkZWZpbmVkKEhBVkVfTFNUQVQpCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoZnVuY3Rpb25fbmFtZSwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKworICAgIGlmIChwYXRoX2FuZF9kaXJfZmRfaW52YWxpZCgic3RhdCIsIHBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJzdGF0IiwgZGlyX2ZkLCBwYXRoLT5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJzdGF0IiwgcGF0aC0+ZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGlmIChwYXRoLT5mZCAhPSAtMSkKKyAgICAgICAgcmVzdWx0ID0gRlNUQVQocGF0aC0+ZmQsICZzdCk7CisgICAgZWxzZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC0+d2lkZSkgeworICAgICAgICBpZiAoZm9sbG93X3N5bWxpbmtzKQorICAgICAgICAgICAgcmVzdWx0ID0gd2luMzJfc3RhdF93KHBhdGgtPndpZGUsICZzdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IHdpbjMyX2xzdGF0X3cocGF0aC0+d2lkZSwgJnN0KTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX0xTVEFUKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gTFNUQVQocGF0aC0+bmFycm93LCAmc3QpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfRlNUQVRBVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAhZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBmc3RhdGF0KGRpcl9mZCwgcGF0aC0+bmFycm93LCAmc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gMCA6IEFUX1NZTUxJTktfTk9GT0xMT1cpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBTVEFUKHBhdGgtPm5hcnJvdywgJnN0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gcGF0aF9lcnJvcigic3RhdCIsIHBhdGgpOworCisgICAgcmV0dXJuIF9weXN0YXRfZnJvbXN0cnVjdHN0YXQoJnN0KTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXRfX2RvY19fLAorInN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKSAtPiBzdGF0IHJlc3VsdFxuXG5cCitQZXJmb3JtIGEgc3RhdCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYmUgc3BlY2lmaWVkIGFzIGVpdGhlciBhIHN0cmluZyBvciBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKKyAgZGlyX2ZkIG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIHlvdXIgcGxhdGZvcm07IGlmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZ1xuXAorICBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBzdGF0IHdpbGwgZXhhbWluZSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZSB0aGVcblwKKyAgbGluayBwb2ludHMgdG8uXG5cCitJdCBpcyBhbiBlcnJvciB0byB1c2UgZGlyX2ZkIG9yIGZvbGxvd19zeW1saW5rcyB3aGVuIHNwZWNpZnlpbmcgcGF0aCBhc1xuXAorICBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3N0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnwkTyZwOnN0YXQiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorI2lmZGVmIEhBVkVfRlNUQVRBVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAorI2VuZGlmCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9kb19zdGF0KCJzdGF0IiwgJnBhdGgsIGRpcl9mZCwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9sc3RhdF9fZG9jX18sCisibHN0YXQocGF0aCwgKiwgZGlyX2ZkPU5vbmUpIC0+IHN0YXQgcmVzdWx0XG5cblwKK0xpa2Ugc3RhdCgpLCBidXQgZG8gbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy5cblwKK0VxdWl2YWxlbnQgdG8gc3RhdChwYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbHN0YXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpsc3RhdCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2RvX3N0YXQoInN0YXQiLCAmcGF0aCwgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2FjY2Vzc19fZG9jX18sCisiYWNjZXNzKHBhdGgsIG1vZGUsICosIGRpcl9mZD1Ob25lLCBlZmZlY3RpdmVfaWRzPUZhbHNlLFwKKyBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorVXNlIHRoZSByZWFsIHVpZC9naWQgdG8gdGVzdCBmb3IgYWNjZXNzIHRvIGEgcGF0aC4gIFJldHVybnMgVHJ1ZSBpZiBncmFudGVkLFxuXAorRmFsc2Ugb3RoZXJ3aXNlLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZWZmZWN0aXZlX2lkcyBpcyBUcnVlLCBhY2Nlc3Mgd2lsbCB1c2UgdGhlIGVmZmVjdGl2ZSB1aWQvZ2lkIGluc3RlYWQgb2ZcblwKKyAgdGhlIHJlYWwgdWlkL2dpZC5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCBhY2Nlc3Mgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK2Rpcl9mZCwgZWZmZWN0aXZlX2lkcywgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkXG5cCisgIG9uIHlvdXIgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKKyAgTm90SW1wbGVtZW50ZWRFcnJvci5cblwKK1xuXAorTm90ZSB0aGF0IG1vc3Qgb3BlcmF0aW9ucyB3aWxsIHVzZSB0aGUgZWZmZWN0aXZlIHVpZC9naWQsIHRoZXJlZm9yZSB0aGlzXG5cCisgIHJvdXRpbmUgY2FuIGJlIHVzZWQgaW4gYSBzdWlkL3NnaWQgZW52aXJvbm1lbnQgdG8gdGVzdCBpZiB0aGUgaW52b2tpbmcgdXNlclxuXAorICBoYXMgdGhlIHNwZWNpZmllZCBhY2Nlc3MgdG8gdGhlIHBhdGguXG5cCitUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgRl9PSyB0byB0ZXN0IGV4aXN0ZW5jZSwgb3IgdGhlIGluY2x1c2l2ZS1PUlxuXAorICBvZiBSX09LLCBXX09LLCBhbmQgWF9PSy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2FjY2VzcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAibW9kZSIsICJkaXJfZmQiLCAiZWZmZWN0aXZlX2lkcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgbW9kZTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGVmZmVjdGl2ZV9pZHMgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVWk6YWNjZXNzIiwgJnBvLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZCBsb2NrIGFzCi0gICAgICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGdvdG8gZmluaXNoOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTphY2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJm1vZGUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aCk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYob3BhdGgpOwotZmluaXNoOgotICAgIGlmIChhdHRyID09IDB4RkZGRkZGRkYpCi0gICAgICAgIC8qIEZpbGUgZG9lcyBub3QgZXhpc3QsIG9yIGNhbm5vdCByZWFkIGF0dHJpYnV0ZXMgKi8KLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKLSAgICAvKiBBY2Nlc3MgaXMgcG9zc2libGUgaWYgZWl0aGVyIHdyaXRlIGFjY2VzcyB3YXNuJ3QgcmVxdWVzdGVkLCBvcgotICAgICAgIHRoZSBmaWxlIGlzbid0IHJlYWQtb25seSwgb3IgaWYgaXQncyBhIGRpcmVjdG9yeSwgYXMgdGhlcmUgYXJlCi0gICAgICAgbm8gcmVhZC1vbmx5IGRpcmVjdG9yaWVzIG9uIFdpbmRvd3MuICovCi0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyghKG1vZGUgJiAyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgIShhdHRyICYgRklMRV9BVFRSSUJVVEVfUkVBRE9OTFkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoYXR0ciAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpOwogI2Vsc2UKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpOmFjY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gYWNjZXNzKHBhdGgsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlcyA9PSAwKTsKKyAgICBpbnQgcmVzdWx0OwogI2VuZGlmCisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfCRPJnBwOmFjY2VzcyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsICZtb2RlLAorI2lmZGVmIEhBVkVfRkFDQ0VTU0FUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgJmVmZmVjdGl2ZV9pZHMsICZmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmbmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJhY2Nlc3MiLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBpZiAoZWZmZWN0aXZlX2lkcykgeworICAgICAgICBhcmd1bWVudF91bmF2YWlsYWJsZV9lcnJvcigiYWNjZXNzIiwgImVmZmVjdGl2ZV9pZHMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGF0aC53aWRlICE9IE5VTEwpCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlKTsKKyAgICBlbHNlCisgICAgICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICAvKgorICAgICAqIEFjY2VzcyBpcyBwb3NzaWJsZSBpZgorICAgICAqICAgKiB3ZSBkaWRuJ3QgZ2V0IGEgLTEsIGFuZAorICAgICAqICAgICAqIHdyaXRlIGFjY2VzcyB3YXNuJ3QgcmVxdWVzdGVkLAorICAgICAqICAgICAqIG9yIHRoZSBmaWxlIGlzbid0IHJlYWQtb25seSwKKyAgICAgKiAgICAgKiBvciBpdCdzIGEgZGlyZWN0b3J5LgorICAgICAqIChEaXJlY3RvcmllcyBjYW5ub3QgYmUgcmVhZC1vbmx5IG9uIFdpbmRvd3MuKQorICAgICovCisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAoYXR0ciAhPSAweEZGRkZGRkZGKSAmJgorICAgICAgICAgICAgKCEobW9kZSAmIDIpIHx8CisgICAgICAgICAgICAhKGF0dHIgJiBGSUxFX0FUVFJJQlVURV9SRUFET05MWSkgfHwKKyAgICAgICAgICAgIChhdHRyICYgRklMRV9BVFRSSUJVVEVfRElSRUNUT1JZKSkpOworI2Vsc2UKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fAorICAgICAgICBlZmZlY3RpdmVfaWRzIHx8CisgICAgICAgICFmb2xsb3dfc3ltbGlua3MpIHsKKyAgICAgICAgaW50IGZsYWdzID0gMDsKKyAgICAgICAgaWYgKCFmb2xsb3dfc3ltbGlua3MpCisgICAgICAgICAgICBmbGFncyB8PSBBVF9TWU1MSU5LX05PRk9MTE9XOworICAgICAgICBpZiAoZWZmZWN0aXZlX2lkcykKKyAgICAgICAgICAgIGZsYWdzIHw9IEFUX0VBQ0NFU1M7CisgICAgICAgIHJlc3VsdCA9IGZhY2Nlc3NhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlLCBmbGFncyk7CisgICAgfQorICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBhY2Nlc3MocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcmV0dXJuX3ZhbHVlID0gUHlCb29sX0Zyb21Mb25nKCFyZXN1bHQpOworI2VuZGlmCisKKyNpZm5kZWYgSEFWRV9GQUNDRVNTQVQKK2V4aXQ6CisjZW5kaWYKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKICNpZm5kZWYgRl9PSwpAQCAtMTkwOCwyNyArMjUzOSw2NiBAQAogCiBQeURvY19TVFJWQVIocG9zaXhfY2hkaXJfX2RvY19fLAogImNoZGlyKHBhdGgpXG5cblwKLUNoYW5nZSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgc3BlY2lmaWVkIHBhdGguIik7CitDaGFuZ2UgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIHNwZWNpZmllZCBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9jaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9jaGRpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl8xc3RyKGFyZ3MsICJjaGRpciIsICJ5OmNoZGlyIiwgd2luMzJfY2hkaXIsICJVOmNoZGlyIiwgd2luMzJfd2NoZGlyKTsKLSNlbGlmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCi0gICAgcmV0dXJuIHBvc2l4XzFzdHIoYXJncywgIk8mOmNoZGlyIiwgX2NoZGlyMik7Ci0jZWxpZiBkZWZpbmVkKF9fVk1TKQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpjaGRpciIsIChpbnQgKCopKGNvbnN0IGNoYXIgKikpY2hkaXIpOwotI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6Y2hkaXIiLCBjaGRpcik7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkNIRElSCisgICAgcGF0aC5hbGxvd19mZCA9IDE7CiAjZW5kaWYKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJjpjaGRpciIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgIHJlc3VsdCA9IHdpbjMyX3djaGRpcihwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gd2luMzJfY2hkaXIocGF0aC5uYXJyb3cpOworICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIG9uIHVuaXgsIHN1Y2Nlc3MgPSAwLCBvbiB3aW5kb3dzLCBzdWNjZXNzID0gITAgKi8KKyNlbGlmIGRlZmluZWQoUFlPU19PUzIpICYmIGRlZmluZWQoUFlDQ19HQ0MpCisgICAgcmVzdWx0ID0gX2NoZGlyMihwYXRoLm5hcnJvdyk7CisjZWxzZQorI2lmZGVmIEhBVkVfRkNIRElSCisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaGRpcihwYXRoLmZkKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2hkaXIocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigiY2hkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKICNpZmRlZiBIQVZFX0ZDSERJUgogUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaGRpcl9fZG9jX18sCi0iZmNoZGlyKGZpbGRlcylcblxuXAotQ2hhbmdlIHRvIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIGdpdmVuIGZpbGUgZGVzY3JpcHRvci4gIGZpbGRlcyBtdXN0IGJlXG5cCi1vcGVuZWQgb24gYSBkaXJlY3RvcnksIG5vdCBhIGZpbGUuIik7CisiZmNoZGlyKGZkKVxuXG5cCitDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBvZiB0aGUgZ2l2ZW4gZmlsZSBkZXNjcmlwdG9yLiAgZmQgbXVzdCBiZVxuXAorb3BlbmVkIG9uIGEgZGlyZWN0b3J5LCBub3QgYSBmaWxlLiAgRXF1aXZhbGVudCB0byBvcy5jaGRpcihmZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2hkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmZG9iaikKQEAgLTE5MzksODcgKzI2MDksMTU1IEBACiAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2NobW9kX19kb2NfXywKLSJjaG1vZChwYXRoLCBtb2RlKVxuXG5cCi1DaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuIik7CisiY2htb2QocGF0aCwgbW9kZSwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiBhIGZpbGUuXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2htb2Qgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGggYXNcblwKKyAgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpvcGF0aCA9IE5VTEw7Ci0gICAgY2hhciAqcGF0aCA9IE5VTEw7Ci0gICAgaW50IGk7Ci0gICAgaW50IHJlczsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZTsKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGZvbGxvd19zeW1saW5rcyA9IDE7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRpcl9mZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIERXT1JEIGF0dHI7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVWl8OmNobW9kIiwgJnBvLCAmaSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIGlmIChhdHRyICE9IDB4RkZGRkZGRkYpIHsKLSAgICAgICAgICAgIGlmIChpICYgX1NfSVdSSVRFKQotICAgICAgICAgICAgICAgIGF0dHIgJj0gfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGF0dHIgfD0gRklMRV9BVFRSSUJVVEVfUkVBRE9OTFk7Ci0gICAgICAgICAgICByZXMgPSBTZXRGaWxlQXR0cmlidXRlc1coUHlVbmljb2RlX0FTX1VOSUNPREUocG8pLCBhdHRyKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMgPSAwOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJjaG1vZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbykpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKKyNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6Y2htb2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmkpKQorI2lmZGVmIEhBVkVfRkNITU9EQVQKKyAgICBpbnQgZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQgPSAwOworI2VuZGlmCisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICBwYXRoLmFsbG93X2ZkID0gMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8maXwkTyZwOmNobW9kIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgJm1vZGUsCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAorI2VuZGlmCisgICAgICAgICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZiAhKGRlZmluZWQoSEFWRV9GQ0hNT0RBVCkgfHwgZGVmaW5lZChIQVZFX0xDSE1PRCkpCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNobW9kIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGF0dHIgPSBHZXRGaWxlQXR0cmlidXRlc0EocGF0aCk7Ci0gICAgaWYgKGF0dHIgIT0gMHhGRkZGRkZGRikgewotICAgICAgICBpZiAoaSAmIF9TX0lXUklURSkKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNXKHBhdGgud2lkZSk7CisgICAgZWxzZQorICAgICAgICBhdHRyID0gR2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93KTsKKyAgICBpZiAoYXR0ciA9PSAweEZGRkZGRkZGKQorICAgICAgICByZXN1bHQgPSAwOworICAgIGVsc2UgeworICAgICAgICBpZiAobW9kZSAmIF9TX0lXUklURSkKICAgICAgICAgICAgIGF0dHIgJj0gfkZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBhdHRyIHw9IEZJTEVfQVRUUklCVVRFX1JFQURPTkxZOwotICAgICAgICByZXMgPSBTZXRGaWxlQXR0cmlidXRlc0EocGF0aCwgYXR0cik7CisgICAgICAgIGlmIChwYXRoLndpZGUpCisgICAgICAgICAgICByZXN1bHQgPSBTZXRGaWxlQXR0cmlidXRlc1cocGF0aC53aWRlLCBhdHRyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0RmlsZUF0dHJpYnV0ZXNBKHBhdGgubmFycm93LCBhdHRyKTsKKyAgICB9CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHdpbjMyX2Vycm9yX29iamVjdCgiY2htb2QiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZWxzZSAvKiBNU19XSU5ET1dTICovCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRkNITU9ECisgICAgaWYgKHBhdGguZmQgIT0gLTEpCisgICAgICAgIHJlc3VsdCA9IGZjaG1vZChwYXRoLmZkLCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZmRlZiBIQVZFX0xDSE1PRAorICAgIGlmICgoIWZvbGxvd19zeW1saW5rcykgJiYgKGRpcl9mZCA9PSBERUZBVUxUX0RJUl9GRCkpCisgICAgICAgIHJlc3VsdCA9IGxjaG1vZChwYXRoLm5hcnJvdywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAhZm9sbG93X3N5bWxpbmtzKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZjaG1vZGF0KCkgZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBBVF9TWU1MSU5LX05PRk9MTE9XIQorICAgICAgICAgKiBUaGUgZG9jdW1lbnRhdGlvbiBzcGVjaWZpY2FsbHkgc2hvd3MgaG93IHRvIHVzZSBpdCwKKyAgICAgICAgICogYW5kIHRoZW4gc2F5cyBpdCBpc24ndCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAqICh0cnVlIG9uIGxpbnV4IHdpdGggZ2xpYmMgMi4xNSwgYW5kIG9wZW5pbmRpYW5hIDMueCkKKyAgICAgICAgICoKKyAgICAgICAgICogT25jZSBpdCBpcyBzdXBwb3J0ZWQsIG9zLmNobW9kIHdpbGwgYXV0b21hdGljYWxseQorICAgICAgICAgKiBzdXBwb3J0IGRpcl9mZCBhbmQgZm9sbG93X3N5bWxpbmtzPUZhbHNlLiAgKEhvcGVmdWxseS4pCisgICAgICAgICAqIFVudGlsIHRoZW4sIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aGF0IGV4Y2VwdGlvbiB3ZSByYWlzZS4KKyAgICAgICAgICovCisgICAgICAgIHJlc3VsdCA9IGZjaG1vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogQnV0IHdhaXQhICBXZSBjYW4ndCB0aHJvdyB0aGUgZXhjZXB0aW9uIHdpdGhvdXQgYWxsb3dpbmcgdGhyZWFkcywKKyAgICAgICAgICogYW5kIHdlIGNhbid0IGRvIHRoYXQgaW4gdGhpcyBuZXN0ZWQgc2NvcGUuICAoTWFjcm8gdHJpY2tlcnksIHNpZ2guKQorICAgICAgICAgKi8KKyAgICAgICAgZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQgPQorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICgoZXJybm8gPT0gRU5PVFNVUCkgfHwgKGVycm5vID09IEVPUE5PVFNVUFApKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICFmb2xsb3dfc3ltbGlua3M7CiAgICAgfQogICAgIGVsc2UKLSAgICAgICAgcmVzID0gMDsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzKSB7Ci0gICAgICAgIHdpbjMyX2Vycm9yKCJjaG1vZCIsIHBhdGgpOwotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jZWxzZSAvKiBNU19XSU5ET1dTICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmk6Y2htb2QiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmkpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNobW9kKHBhdGgsIGkpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CiAjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gY2htb2QocGF0aC5uYXJyb3csIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisjaWZkZWYgSEFWRV9GQ0hNT0RBVAorICAgICAgICBpZiAoZmNobW9kYXRfbm9mb2xsb3dfdW5zdXBwb3J0ZWQpIHsKKyAgICAgICAgICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgICAgICAgICAgZGlyX2ZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiY2htb2QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX2ZkLCBmb2xsb3dfc3ltbGlua3MpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNobW9kIiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoImNobW9kIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCisKICNpZmRlZiBIQVZFX0ZDSE1PRAogUHlEb2NfU1RSVkFSKHBvc2l4X2ZjaG1vZF9fZG9jX18sCiAiZmNobW9kKGZkLCBtb2RlKVxuXG5cCiBDaGFuZ2UgdGhlIGFjY2VzcyBwZXJtaXNzaW9ucyBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlXG5cCi1kZXNjcmlwdG9yIGZkLiIpOworZGVzY3JpcHRvciBmZC4gIEVxdWl2YWxlbnQgdG8gb3MuY2htb2QoZmQsIG1vZGUpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfZmNobW9kKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTIwNDAsNyArMjc3OCw4IEBACiBQeURvY19TVFJWQVIocG9zaXhfbGNobW9kX19kb2NfXywKICJsY2htb2QocGF0aCwgbW9kZSlcblxuXAogQ2hhbmdlIHRoZSBhY2Nlc3MgcGVybWlzc2lvbnMgb2YgYSBmaWxlLiBJZiBwYXRoIGlzIGEgc3ltbGluaywgdGhpc1xuXAotYWZmZWN0cyB0aGUgbGluayBpdHNlbGYgcmF0aGVyIHRoYW4gdGhlIHRhcmdldC4iKTsKK2FmZmVjdHMgdGhlIGxpbmsgaXRzZWxmIHJhdGhlciB0aGFuIHRoZSB0YXJnZXQuXG5cCitFcXVpdmFsZW50IHRvIGNobW9kKHBhdGgsIG1vZGUsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9sY2htb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjA2NiwyOCArMjgwNSw1NiBAQAogCiAjaWZkZWYgSEFWRV9DSEZMQUdTCiBQeURvY19TVFJWQVIocG9zaXhfY2hmbGFnc19fZG9jX18sCi0iY2hmbGFncyhwYXRoLCBmbGFncylcblxuXAotU2V0IGZpbGUgZmxhZ3MuIik7CisiY2hmbGFncyhwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpXG5cblwKK1NldCBmaWxlIGZsYWdzLlxuXAorXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgY2hmbGFncyB3aWxsIGNoYW5nZSBmbGFncyBvbiB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGVcblwKKyAgZmlsZSB0aGUgbGluayBwb2ludHMgdG8uXG5cCitmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLiAgSWYgaXQgaXNcblwKK3VuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2NoZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfY2hmbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgcGF0aF90IHBhdGg7CiAgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKLSAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZrOmNoZmxhZ3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJmZsYWdzKSkKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZrfCRpOmNoZmxhZ3MiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxhZ3MsICZmb2xsb3dfc3ltbGlua3MpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisKKyNpZm5kZWYgSEFWRV9MQ0hGTEFHUworICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaGZsYWdzIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gY2hmbGFncyhwYXRoLCBmbGFncyk7CisjaWZkZWYgSEFWRV9MQ0hGTEFHUworICAgIGlmICghZm9sbG93X3N5bWxpbmtzKQorICAgICAgICByZXN1bHQgPSBsY2hmbGFncyhwYXRoLm5hcnJvdywgZmxhZ3MpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBjaGZsYWdzKHBhdGgubmFycm93LCBmbGFncyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJjaGZsYWdzIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfQ0hGTEFHUyAqLwogCkBAIC0yMDk1LDcgKzI4NjIsOCBAQAogUHlEb2NfU1RSVkFSKHBvc2l4X2xjaGZsYWdzX19kb2NfXywKICJsY2hmbGFncyhwYXRoLCBmbGFncylcblxuXAogU2V0IGZpbGUgZmxhZ3MuXG5cCi1UaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZvbGxvdyBzeW1ib2xpYyBsaW5rcy4iKTsKK1RoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLlxuXAorRXF1aXZhbGVudCB0byBjaGZsYWdzKHBhdGgsIGZsYWdzLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfbGNoZmxhZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjE0Myw2ICsyOTExLDIxIEBACiB9CiAjZW5kaWYgLyogSEFWRV9GU1lOQyAqLwogCisjaWZkZWYgSEFWRV9TWU5DCitQeURvY19TVFJWQVIocG9zaXhfc3luY19fZG9jX18sCisic3luYygpXG5cblwKK0ZvcmNlIHdyaXRlIG9mIGV2ZXJ5dGhpbmcgdG8gZGlzay4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3N5bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHN5bmMoKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKICNpZmRlZiBIQVZFX0ZEQVRBU1lOQwogCiAjaWZkZWYgX19ocHV4CkBAIC0yMTY0LDI5ICsyOTQ3LDEwNSBAQAogCiAjaWZkZWYgSEFWRV9DSE9XTgogUHlEb2NfU1RSVkFSKHBvc2l4X2Nob3duX19kb2NfXywKLSJjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAotQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC4iKTsKKyJjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiBwYXRoIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLlxuXAorXG5cCitwYXRoIG1heSBhbHdheXMgYmUgc3BlY2lmaWVkIGFzIGEgc3RyaW5nLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBhbiBleGNlcHRpb24uXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGNob3duIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlIHRoZVxuXAorICBsaW5rIHBvaW50cyB0by5cblwKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSBkaXJfZmQgb3IgZm9sbG93X3N5bWxpbmtzIHdoZW4gc3BlY2lmeWluZyBwYXRoIGFzXG5cCisgIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2Nob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2Nob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBsb25nIHVpZCwgZ2lkOwotICAgIGludCByZXM7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJmxsOmNob3duIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZ1aWQsICZnaWQpKQorICAgIHBhdGhfdCBwYXRoOworICAgIGxvbmcgdWlkX2wsIGdpZF9sOworICAgIHVpZF90IHVpZDsKKyAgICBnaWRfdCBnaWQ7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidWlkIiwgImdpZCIsICJkaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZsbHwkTyZwOmNob3duIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1aWRfbCwgJmdpZF9sLAorI2lmZGVmIEhBVkVfRkNIT1dOQVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkLAorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQsCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOworCisjaWYgIShkZWZpbmVkKEhBVkVfTENIT1dOKSB8fCBkZWZpbmVkKEhBVkVfRkNIT1dOQVQpKQorICAgIGlmIChmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCJjaG93biIsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKyNlbmRpZgorICAgIGlmIChkaXJfZmRfYW5kX2ZkX2ludmFsaWQoImNob3duIiwgZGlyX2ZkLCBwYXRoLmZkKSB8fAorICAgICAgICBmZF9hbmRfZm9sbG93X3N5bWxpbmtzX2ludmFsaWQoImNob3duIiwgcGF0aC5mZCwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworCisjaWZkZWYgX19BUFBMRV9fCisgICAgLyoKKyAgICAgKiBUaGlzIGlzIGZvciBNYWMgT1MgWCAxMC4zLCB3aGljaCBkb2Vzbid0IGhhdmUgbGNob3duLgorICAgICAqIChCdXQgd2Ugc3RpbGwgaGF2ZSBhbiBsY2hvd24gc3ltYm9sIGJlY2F1c2Ugb2Ygd2Vhay1saW5raW5nLikKKyAgICAgKiBJdCBkb2Vzbid0IGhhdmUgZmNob3duYXQgZWl0aGVyLiAgU28gdGhlcmUncyBubyBwb3NzaWJpbGl0eQorICAgICAqIG9mIGEgZ3JhY2VmdWwgZmFpbG92ZXIuCisgICAgICovCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAobGNob3duID09IE5VTEwpKSB7CisgICAgICAgIGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoImNob3duIiwgZm9sbG93X3N5bWxpbmtzKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IGNob3duKHBhdGgsICh1aWRfdCkgdWlkLCAoZ2lkX3QpIGdpZCk7CisgICAgdWlkID0gKHVpZF90KXVpZF9sOworICAgIGdpZCA9ICh1aWRfdClnaWRfbDsKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSBmY2hvd24ocGF0aC5mZCwgdWlkLCBnaWQpOworICAgIGVsc2UKKyNlbmRpZgorI2lmZGVmIEhBVkVfTENIT1dOCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gbGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9GQ0hPV05BVAorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSB8fCAoIWZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJlc3VsdCA9IGZjaG93bmF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIHVpZCwgZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfc3ltbGlua3MgPyAwIDogQVRfU1lNTElOS19OT0ZPTExPVyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IGNob3duKHBhdGgubmFycm93LCB1aWQsIGdpZCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICBQeV9ERUNSRUYob3BhdGgpOworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJjaG93biIsICZwYXRoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAKQEAgLTIxOTQsNyArMzA1Myw3IEBACiBQeURvY19TVFJWQVIocG9zaXhfZmNob3duX19kb2NfXywKICJmY2hvd24oZmQsIHVpZCwgZ2lkKVxuXG5cCiBDaGFuZ2UgdGhlIG93bmVyIGFuZCBncm91cCBpZCBvZiB0aGUgZmlsZSBnaXZlbiBieSBmaWxlIGRlc2NyaXB0b3JcblwKLWZkIHRvIHRoZSBudW1lcmljIHVpZCBhbmQgZ2lkLiIpOworZmQgdG8gdGhlIG51bWVyaWMgdWlkIGFuZCBnaWQuICBFcXVpdmFsZW50IHRvIG9zLmNob3duKGZkLCB1aWQsIGdpZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mY2hvd24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjIxNyw3ICszMDc2LDggQEAKIFB5RG9jX1NUUlZBUihwb3NpeF9sY2hvd25fX2RvY19fLAogImxjaG93bihwYXRoLCB1aWQsIGdpZClcblxuXAogQ2hhbmdlIHRoZSBvd25lciBhbmQgZ3JvdXAgaWQgb2YgcGF0aCB0byB0aGUgbnVtZXJpYyB1aWQgYW5kIGdpZC5cblwKLVRoaXMgZnVuY3Rpb24gd2lsbCBub3QgZm9sbG93IHN5bWJvbGljIGxpbmtzLiIpOworVGhpcyBmdW5jdGlvbiB3aWxsIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuXG5cCitFcXVpdmFsZW50IHRvIG9zLmNob3duKHBhdGgsIHVpZCwgZ2lkLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfbGNob3duKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTIyNzksNiArMzEzOSw5IEBACiAgICAgICAgIGlmICh3YnVmMiAhPSB3YnVmKSBmcmVlKHdidWYyKTsKICAgICAgICAgcmV0dXJuIHJlc29iajsKICAgICB9CisKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTIzMTYsMTUwICszMTc5LDIyNiBAQAogfQogI2VuZGlmCiAKKyNpZiAoKCFkZWZpbmVkKEhBVkVfTElOSykpICYmIGRlZmluZWQoTVNfV0lORE9XUykpCisjZGVmaW5lIEhBVkVfTElOSyAxCisjZW5kaWYKIAogI2lmZGVmIEhBVkVfTElOSwogUHlEb2NfU1RSVkFSKHBvc2l4X2xpbmtfX2RvY19fLAotImxpbmsoc3JjLCBkc3QpXG5cblwKLUNyZWF0ZSBhIGhhcmQgbGluayB0byBhIGZpbGUuIik7CisibGluayhzcmMsIGRzdCwgKiwgc3JjX2Rpcl9mZD1Ob25lLCBkc3RfZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitDcmVhdGUgYSBoYXJkIGxpbmsgdG8gYSBmaWxlLlxuXAorXG5cCitJZiBlaXRoZXIgc3JjX2Rpcl9mZCBvciBkc3RfZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlXG5cCisgIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSwgYW5kIHRoZSByZXNwZWN0aXZlIHBhdGggc3RyaW5nIChzcmMgb3IgZHN0KVxuXAorICBzaG91bGQgYmUgcmVsYXRpdmU7IHRoZSBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2Ygc3JjIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgbGluayB3aWxsIGNyZWF0ZSBhIGxpbmsgdG8gdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlXG5cCisgIGZpbGUgdGhlIGxpbmsgcG9pbnRzIHRvLlxuXAorc3JjX2Rpcl9mZCwgZHN0X2Rpcl9mZCwgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXJcblwKKyAgcGxhdGZvcm0uICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGFcblwKKyAgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X2xpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgcmV0dXJuIHBvc2l4XzJzdHIoYXJncywgIk8mTyY6bGluayIsIGxpbmspOwotfQotI2VuZGlmIC8qIEhBVkVfTElOSyAqLwotCisgICAgcGF0aF90IHNyYywgZHN0OworICAgIGludCBzcmNfZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IGRzdF9kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKICNpZmRlZiBNU19XSU5ET1dTCi1QeURvY19TVFJWQVIod2luMzJfbGlua19fZG9jX18sCi0ibGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgaGFyZCBsaW5rIHRvIGEgZmlsZS4iKTsKKyAgICBCT09MIHJlc3VsdDsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgogCi1zdGF0aWMgUHlPYmplY3QgKgotd2luMzJfbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9zcmMsICpvZHN0OwotICAgIGNoYXIgKnNyYywgKmRzdDsKLSAgICBCT09MIHJzbHQ7Ci0KLSAgICBQeVVuaWNvZGVPYmplY3QgKnVzcmMsICp1ZHN0OwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVTpsaW5rIiwgJnVzcmMsICZ1ZHN0KSkgewotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJzbHQgPSBDcmVhdGVIYXJkTGlua1coUHlVbmljb2RlX0FTX1VOSUNPREUodWRzdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodXNyYyksIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgIGlmIChyc2x0ID09IDApCi0gICAgICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoImxpbmsiLCBOVUxMKTsKLQotICAgICAgICBQeV9SRVRVUk5fTk9ORTsKLSAgICB9Ci0KLSAgICAvKiBOYXJyb3cgc3RyaW5ncyBhbHNvIHZhbGlkLiAqLwotICAgIFB5RXJyX0NsZWFyKCk7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTyY6bGluayIsIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9zcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9kc3QpKQorICAgIG1lbXNldCgmc3JjLCAwLCBzaXplb2Yoc3JjKSk7CisgICAgbWVtc2V0KCZkc3QsIDAsIHNpemVvZihkc3QpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfE8mTyZwOmxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkc3RfZGlyX2ZkLAorICAgICAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc3JjID0gUHlCeXRlc19Bc1N0cmluZyhvc3JjKTsKLSAgICBkc3QgPSBQeUJ5dGVzX0FzU3RyaW5nKG9kc3QpOworI2lmbmRlZiBIQVZFX0xJTktBVAorICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpKSB7CisgICAgICAgIGFyZ3VtZW50X3VuYXZhaWxhYmxlX2Vycm9yKCJsaW5rIiwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgogCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibGluazogc3JjIGFuZCBkc3QgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIik7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJzbHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0LCBzcmMsIE5VTEwpOworICAgIGlmIChzcmMud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlSGFyZExpbmtXKGRzdC53aWRlLCBzcmMud2lkZSwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBDcmVhdGVIYXJkTGlua0EoZHN0Lm5hcnJvdywgc3JjLm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIFB5X0RFQ1JFRihvc3JjKTsKLSAgICBQeV9ERUNSRUYob2RzdCk7Ci0gICAgaWYgKHJzbHQgPT0gMCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJsaW5rIiwgTlVMTCk7CisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gd2luMzJfZXJyb3Jfb2JqZWN0KCJsaW5rIiwgZHN0Lm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZWxzZQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0xJTktBVAorICAgIGlmICgoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpIHx8CisgICAgICAgICghZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmVzdWx0ID0gbGlua2F0KHNyY19kaXJfZmQsIHNyYy5uYXJyb3csCisgICAgICAgICAgICBkc3RfZGlyX2ZkLCBkc3QubmFycm93LAorICAgICAgICAgICAgZm9sbG93X3N5bWxpbmtzID8gQVRfU1lNTElOS19GT0xMT1cgOiAwKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbGluayhzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfUkVUVVJOX05PTkU7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKCJsaW5rIiwgJmRzdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmc3JjKTsKKyAgICBwYXRoX2NsZWFudXAoJmRzdCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYKKwogCiAKIFB5RG9jX1NUUlZBUihwb3NpeF9saXN0ZGlyX19kb2NfXywKLSJsaXN0ZGlyKFtwYXRoXSkgLT4gbGlzdF9vZl9zdHJpbmdzXG5cblwKLVJldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeS5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZGlyZWN0b3J5IHRvIGxpc3QgKGRlZmF1bHQ6ICcuJylcblwKLVxuXAorImxpc3RkaXIocGF0aD0nLicpIC0+IGxpc3Rfb2ZfZmlsZW5hbWVzXG5cblwKK1JldHVybiBhIGxpc3QgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkuXG5cCiBUaGUgbGlzdCBpcyBpbiBhcmJpdHJhcnkgb3JkZXIuICBJdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzcGVjaWFsXG5cCi1lbnRyaWVzICcuJyBhbmQgJy4uJyBldmVuIGlmIHRoZXkgYXJlIHByZXNlbnQgaW4gdGhlIGRpcmVjdG9yeS4iKTsKK2VudHJpZXMgJy4nIGFuZCAnLi4nIGV2ZW4gaWYgdGhleSBhcmUgcHJlc2VudCBpbiB0aGUgZGlyZWN0b3J5LlxuXAorXG5cCitwYXRoIGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0ciBvciBieXRlcy4gIElmIHBhdGggaXMgYnl0ZXMsXG5cCisgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIGJ5dGVzOyBpbiBhbGwgb3RoZXIgY2lyY3Vtc3RhbmNlc1xuXAorICB0aGUgZmlsZW5hbWVzIHJldHVybmVkIHdpbGwgYmUgc3RyLlxuXAorT24gc29tZSBwbGF0Zm9ybXMsIHBhdGggbWF5IGFsc28gYmUgc3BlY2lmaWVkIGFzIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yO1xuXAorICB0aGUgZmlsZSBkZXNjcmlwdG9yIG11c3QgcmVmZXIgdG8gYSBkaXJlY3RvcnkuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9saXN0ZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2xpc3RkaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogeworICAgIHBhdGhfdCBwYXRoOworICAgIFB5T2JqZWN0ICpsaXN0ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsIE5VTEx9OworICAgIGludCBmZCA9IC0xOworCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChIQVZFX09QRU5ESVIpCisgICAgUHlPYmplY3QgKnY7CisgICAgSEFORExFIGhGaW5kRmlsZSA9IElOVkFMSURfSEFORExFX1ZBTFVFOworICAgIEJPT0wgcmVzdWx0OworICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKKyAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07IC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLworICAgIGNoYXIgKmJ1ZnB0ciA9IG5hbWVidWY7CisgICAgLyogb25seSBjbGFpbSB0byBoYXZlIHNwYWNlIGZvciBNQVhfUEFUSCAqLworICAgIFB5X3NzaXplX3QgbGVuID0gc2l6ZW9mKG5hbWVidWYpLTU7CisgICAgUHlPYmplY3QgKnBvID0gTlVMTDsKKyAgICB3Y2hhcl90ICp3bmFtZWJ1ZiA9IE5VTEw7CisjZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQorI2lmbmRlZiBNQVhfUEFUSAorI2RlZmluZSBNQVhfUEFUSCAgICBDQ0hNQVhQQVRICisjZW5kaWYKKyAgICBjaGFyICpwdDsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBjaGFyIG5hbWVidWZbTUFYX1BBVEgrNV07CisgICAgSERJUiAgaGRpciA9IDE7CisgICAgVUxPTkcgc3JjaGNudCA9IDE7CisgICAgRklMRUZJTkRCVUYzICAgZXA7CisgICAgQVBJUkVUIHJjOworI2Vsc2UKKyAgICBQeU9iamVjdCAqdjsKKyAgICBESVIgKmRpcnAgPSBOVUxMOworICAgIHN0cnVjdCBkaXJlbnQgKmVwOworICAgIGludCByZXR1cm5fc3RyOyAvKiBpZiBmYWxzZSwgcmV0dXJuIGJ5dGVzICovCisjZW5kaWYKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBwYXRoLm51bGxhYmxlID0gMTsKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIHBhdGguZmQgPSAtMTsKKyNlbmRpZgorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPJjpsaXN0ZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aAorICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIC8qIFhYWCBTaG91bGQgcmVkbyB0aGlzIHB1dHRpbmcgdGhlIChub3cgZm91cikgdmVyc2lvbnMgb2Ygb3BlbmRpcgogICAgICAgIGluIHNlcGFyYXRlIGZpbGVzIGluc3RlYWQgb2YgaGF2aW5nIHRoZW0gYWxsIGhlcmUuLi4gKi8KICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmICFkZWZpbmVkKEhBVkVfT1BFTkRJUikKLQotICAgIFB5T2JqZWN0ICpkLCAqdjsKLSAgICBIQU5ETEUgaEZpbmRGaWxlOwotICAgIEJPT0wgcmVzdWx0OwotICAgIFdJTjMyX0ZJTkRfREFUQSBGaWxlRGF0YTsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciBuYW1lYnVmW01BWF9QQVRIKzVdOyAvKiBPdmVyYWxsb2NhdGUgZm9yIFxcKi4qXDAgKi8KLSAgICBjaGFyICpidWZwdHIgPSBuYW1lYnVmOwotICAgIFB5X3NzaXplX3QgbGVuID0gc2l6ZW9mKG5hbWVidWYpLTU7IC8qIG9ubHkgY2xhaW0gdG8gaGF2ZSBzcGFjZSBmb3IgTUFYX1BBVEggKi8KLQotICAgIFB5T2JqZWN0ICpwbyA9IE5VTEw7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxVOmxpc3RkaXIiLCAmcG8pKSB7CisgICAgaWYgKCFwYXRoLm5hcnJvdykgewogICAgICAgICBXSU4zMl9GSU5EX0RBVEFXIHdGaWxlRGF0YTsKLSAgICAgICAgUHlfVU5JQ09ERSAqd25hbWVidWYsICpwb193Y2hhcnM7CisgICAgICAgIHdjaGFyX3QgKnBvX3djaGFyczsKIAotICAgICAgICBpZiAocG8gPT0gTlVMTCkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCisgICAgICAgIGlmICghcGF0aC53aWRlKSB7IC8qIERlZmF1bHQgYXJnOiAiLiIgKi8KICAgICAgICAgICAgIHBvX3djaGFycyA9IEwiLiI7CiAgICAgICAgICAgICBsZW4gPSAxOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9fd2NoYXJzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocG8pOwotICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHBvKTsKKyAgICAgICAgICAgIHBvX3djaGFycyA9IHBhdGgud2lkZTsKKyAgICAgICAgICAgIGxlbiA9IHdjc2xlbihwYXRoLndpZGUpOwogICAgICAgICB9Ci0gICAgICAgIC8qIE92ZXJhbGxvY2F0ZSBmb3IgXFwqLipcMCAqLworICAgICAgICAvKiBUaGUgKzUgaXMgc28gd2UgY2FuIGFwcGVuZCAiXFwqLipcMCIgKi8KICAgICAgICAgd25hbWVidWYgPSBtYWxsb2MoKGxlbiArIDUpICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgaWYgKCF3bmFtZWJ1ZikgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIHdjc2NweSh3bmFtZWJ1ZiwgcG9fd2NoYXJzKTsKICAgICAgICAgaWYgKGxlbiA+IDApIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgd2NoID0gd25hbWVidWZbbGVuLTFdOworICAgICAgICAgICAgd2NoYXJfdCB3Y2ggPSB3bmFtZWJ1ZltsZW4tMV07CiAgICAgICAgICAgICBpZiAod2NoICE9IEwnLycgJiYgd2NoICE9IEwnXFwnICYmIHdjaCAhPSBMJzonKQogICAgICAgICAgICAgICAgIHduYW1lYnVmW2xlbisrXSA9IEwnXFwnOwogICAgICAgICAgICAgd2NzY3B5KHduYW1lYnVmICsgbGVuLCBMIiouKiIpOwogICAgICAgICB9Ci0gICAgICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIGhGaW5kRmlsZSA9IEZpbmRGaXJzdEZpbGVXKHduYW1lYnVmLCAmd0ZpbGVEYXRhKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICAgICAgaW50IGVycm9yID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IgPT0gRVJST1JfRklMRV9OT1RfRk9VTkQpIHsKLSAgICAgICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgIGlmIChlcnJvciA9PSBFUlJPUl9GSUxFX05PVF9GT1VORCkKKyAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBsaXN0ID0gTlVMTDsKICAgICAgICAgICAgIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmRGaXJzdEZpbGVXIiwgd25hbWVidWYpOwotICAgICAgICAgICAgZnJlZSh3bmFtZWJ1Zik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgICAgICBkbyB7CiAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KICAgICAgICAgICAgIGlmICh3Y3NjbXAod0ZpbGVEYXRhLmNGaWxlTmFtZSwgTCIuIikgIT0gMCAmJgogICAgICAgICAgICAgICAgIHdjc2NtcCh3RmlsZURhdGEuY0ZpbGVOYW1lLCBMIi4uIikgIT0gMCkgewotICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUod0ZpbGVEYXRhLmNGaWxlTmFtZSwgd2NzbGVuKHdGaWxlRGF0YS5jRmlsZU5hbWUpKTsKKyAgICAgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3RmlsZURhdGEuY0ZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc2xlbih3RmlsZURhdGEuY0ZpbGVOYW1lKSk7CiAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgICAgIGQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjQ3MCwzOCArMzQwOSwxNiBAQAogICAgICAgICAgICAgLyogRmluZE5leHRGaWxlIHNldHMgZXJyb3IgdG8gRVJST1JfTk9fTU9SRV9GSUxFUyBpZgogICAgICAgICAgICAgICAgaXQgZ290IHRvIHRoZSBlbmQgb2YgdGhlIGRpcmVjdG9yeS4gKi8KICAgICAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgd2luMzJfZXJyb3JfdW5pY29kZSgiRmluZE5leHRGaWxlVyIsIHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICBGaW5kQ2xvc2UoaEZpbmRGaWxlKTsKLSAgICAgICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX3VuaWNvZGUoIkZpbmROZXh0RmlsZVciLCB3bmFtZWJ1Zik7CisgICAgICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICAgICAgfQogICAgICAgICB9IHdoaWxlIChyZXN1bHQgPT0gVFJVRSk7CiAKLSAgICAgICAgaWYgKEZpbmRDbG9zZShoRmluZEZpbGUpID09IEZBTFNFKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcl91bmljb2RlKCJGaW5kQ2xvc2UiLCB3bmFtZWJ1Zik7Ci0gICAgICAgICAgICBmcmVlKHduYW1lYnVmKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGZyZWUod25hbWVidWYpOwotICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6bGlzdGRpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUob3BhdGgpKzEgPiBNQVhfUEFUSCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cmNweShuYW1lYnVmLCBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKSk7Ci0gICAgbGVuID0gUHlPYmplY3RfU2l6ZShvcGF0aCk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICBzdHJjcHkobmFtZWJ1ZiwgcGF0aC5uYXJyb3cpOworICAgIGxlbiA9IHBhdGgubGVuZ3RoOwogICAgIGlmIChsZW4gPiAwKSB7CiAgICAgICAgIGNoYXIgY2ggPSBuYW1lYnVmW2xlbi0xXTsKICAgICAgICAgaWYgKGNoICE9IFNFUCAmJiBjaCAhPSBBTFRTRVAgJiYgY2ggIT0gJzonKQpAQCAtMjUwOSw3ICszNDI2LDcgQEAKICAgICAgICAgc3RyY3B5KG5hbWVidWYgKyBsZW4sICIqLioiKTsKICAgICB9CiAKLSAgICBpZiAoKGQgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKQorICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtMjUxOCw5ICszNDM1LDEwIEBACiAgICAgaWYgKGhGaW5kRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewogICAgICAgICBpbnQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKICAgICAgICAgaWYgKGVycm9yID09IEVSUk9SX0ZJTEVfTk9UX0ZPVU5EKQotICAgICAgICAgICAgcmV0dXJuIGQ7Ci0gICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJGaW5kRmlyc3RGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yKCJGaW5kRmlyc3RGaWxlIiwgbmFtZWJ1Zik7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAgICAgZG8gewogICAgICAgICAvKiBTa2lwIG92ZXIgLiBhbmQgLi4gKi8KQEAgLTI1MjgsMTQgKzM0NDYsMTQgQEAKICAgICAgICAgICAgIHN0cmNtcChGaWxlRGF0YS5jRmlsZU5hbWUsICIuLiIpICE9IDApIHsKICAgICAgICAgICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoRmlsZURhdGEuY0ZpbGVOYW1lKTsKICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoZCwgdikgIT0gMCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdikgIT0gMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZCk7Ci0gICAgICAgICAgICAgICAgZCA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBOVUxMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfREVDUkVGKHYpOwpAQCAtMjU0Niw0NiArMzQ2NCwzMyBAQAogICAgICAgICAvKiBGaW5kTmV4dEZpbGUgc2V0cyBlcnJvciB0byBFUlJPUl9OT19NT1JFX0ZJTEVTIGlmCiAgICAgICAgICAgIGl0IGdvdCB0byB0aGUgZW5kIG9mIHRoZSBkaXJlY3RvcnkuICovCiAgICAgICAgIGlmICghcmVzdWx0ICYmIEdldExhc3RFcnJvcigpICE9IEVSUk9SX05PX01PUkVfRklMRVMpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgIHdpbjMyX2Vycm9yKCJGaW5kTmV4dEZpbGUiLCBuYW1lYnVmKTsKLSAgICAgICAgICAgIEZpbmRDbG9zZShoRmluZEZpbGUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBsaXN0ID0gd2luMzJfZXJyb3IoIkZpbmROZXh0RmlsZSIsIG5hbWVidWYpOworICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgfSB3aGlsZSAocmVzdWx0ID09IFRSVUUpOwogCi0gICAgaWYgKEZpbmRDbG9zZShoRmluZEZpbGUpID09IEZBTFNFKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJGaW5kQ2xvc2UiLCBuYW1lYnVmKTsKK2V4aXQ6CisgICAgaWYgKGhGaW5kRmlsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBpZiAoRmluZENsb3NlKGhGaW5kRmlsZSkgPT0gRkFMU0UpIHsKKyAgICAgICAgICAgIGlmIChsaXN0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IHdpbjMyX2Vycm9yX29iamVjdCgiRmluZENsb3NlIiwgcGF0aC5vYmplY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorICAgIGlmICh3bmFtZWJ1ZikKKyAgICAgICAgZnJlZSh3bmFtZWJ1Zik7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKIAotICAgIHJldHVybiBkOworICAgIHJldHVybiBsaXN0OwogCiAjZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotCi0jaWZuZGVmIE1BWF9QQVRICi0jZGVmaW5lIE1BWF9QQVRIICAgIENDSE1BWFBBVEgKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICpuYW1lLCAqcHQ7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKmQsICp2OwotICAgIGNoYXIgbmFtZWJ1ZltNQVhfUEFUSCs1XTsKLSAgICBIRElSICBoZGlyID0gMTsKLSAgICBVTE9ORyBzcmNoY250ID0gMTsKLSAgICBGSUxFRklOREJVRjMgICBlcDsKLSAgICBBUElSRVQgcmM7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOmxpc3RkaXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9uYW1lKTsKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9uYW1lKTsKLSAgICBpZiAobGVuID49IE1BWF9QQVRIKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7CisgICAgaWYgKHBhdGgubGVuZ3RoID49IE1BWF9QQVRIKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAicGF0aCB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KLSAgICBzdHJjcHkobmFtZWJ1ZiwgbmFtZSk7CisgICAgc3RyY3B5KG5hbWVidWYsIHBhdGgubmFycm93KTsKICAgICBmb3IgKHB0ID0gbmFtZWJ1ZjsgKnB0OyBwdCsrKQogICAgICAgICBpZiAoKnB0ID09IEFMVFNFUCkKICAgICAgICAgICAgICpwdCA9IFNFUDsKQEAgLTI1OTMsOSArMzQ5OCw4IEBACiAgICAgICAgIG5hbWVidWZbbGVuKytdID0gU0VQOwogICAgIHN0cmNweShuYW1lYnVmICsgbGVuLCAiKi4qIik7CiAKLSAgICBpZiAoKGQgPSBQeUxpc3RfTmV3KDApKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihvbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICgobGlzdCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyAgICAgICAgZ290byBleGl0OwogICAgIH0KIAogICAgIHJjID0gRG9zRmluZEZpcnN0KG5hbWVidWYsICAgICAgICAgLyogV2lsZGNhcmQgUGF0dGVybiB0byBNYXRjaCAqLwpAQCAtMjYwNyw3ICszNTExLDkgQEAKIAogICAgIGlmIChyYyAhPSBOT19FUlJPUikgewogICAgICAgICBlcnJubyA9IEVOT0VOVDsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICBsaXN0ID0gcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoLm5hcnJvdyk7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9CiAKICAgICBpZiAoc3JjaGNudCA+IDApIHsgLyogSWYgRGlyZWN0b3J5IGlzIE5PVCBUb3RhbGx5IEVtcHR5LCAqLwpAQCAtMjYyMyw1NSArMzUyOSw3MCBAQAogCiAgICAgICAgICAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nKG5hbWVidWYpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCB2KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKLSAgICAgICAgICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIH0gd2hpbGUgKERvc0ZpbmROZXh0KGhkaXIsICZlcCwgc2l6ZW9mKGVwKSwgJnNyY2hjbnQpID09IE5PX0VSUk9SICYmIHNyY2hjbnQgPiAwKTsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYob25hbWUpOwotICAgIHJldHVybiBkOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIGxpc3Q7CiAjZWxzZQotICAgIFB5T2JqZWN0ICpvbmFtZTsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpkLCAqdjsKLSAgICBESVIgKmRpcnA7Ci0gICAgc3RydWN0IGRpcmVudCAqZXA7Ci0gICAgaW50IGFyZ19pc191bmljb2RlID0gMTsKIAogICAgIGVycm5vID0gMDsKLSAgICAvKiB2IGlzIG5ldmVyIHJlYWQsIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgeWV0LiAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifFU6bGlzdGRpciIsICZ2KSkgewotICAgICAgICBhcmdfaXNfdW5pY29kZSA9IDA7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotICAgIG9uYW1lID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPJjpsaXN0ZGlyIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb25hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAob25hbWUgPT0gTlVMTCkgeyAvKiBEZWZhdWx0IGFyZzogIi4iICovCi0gICAgICAgIG9uYW1lID0gUHlCeXRlc19Gcm9tU3RyaW5nKCIuIik7Ci0gICAgfQotICAgIG5hbWUgPSBQeUJ5dGVzX0FzU3RyaW5nKG9uYW1lKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgZGlycCA9IG9wZW5kaXIobmFtZSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoZGlycCA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvbmFtZSk7Ci0gICAgfQotICAgIGlmICgoZCA9IFB5TGlzdF9OZXcoMCkpID09IE5VTEwpIHsKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgIGlmIChwYXRoLmZkICE9IC0xKSB7CisgICAgICAgIC8qIGNsb3NlZGlyKCkgY2xvc2VzIHRoZSBGRCwgc28gd2UgZHVwbGljYXRlIGl0ICovCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgY2xvc2VkaXIoZGlycCk7CisgICAgICAgIGZkID0gZHVwKHBhdGguZmQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBQeV9ERUNSRUYob25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoZmQgPT0gLTEpIHsKKyAgICAgICAgICAgIGxpc3QgPSBwb3NpeF9lcnJvcigpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuX3N0ciA9IDE7CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICBkaXJwID0gZmRvcGVuZGlyKGZkKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgeworICAgICAgICBjaGFyICpuYW1lOworICAgICAgICBpZiAocGF0aC5uYXJyb3cpIHsKKyAgICAgICAgICAgIG5hbWUgPSBwYXRoLm5hcnJvdzsKKyAgICAgICAgICAgIC8qIG9ubHkgcmV0dXJuIGJ5dGVzIGlmIHRoZXkgc3BlY2lmaWVkIGEgYnl0ZXMgb2JqZWN0ICovCisgICAgICAgICAgICByZXR1cm5fc3RyID0gIShQeUJ5dGVzX0NoZWNrKHBhdGgub2JqZWN0KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuYW1lID0gIi4iOworICAgICAgICAgICAgcmV0dXJuX3N0ciA9IDE7CisgICAgICAgIH0KKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGRpcnAgPSBvcGVuZGlyKG5hbWUpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIGlmIChkaXJwID09IE5VTEwpIHsKKyAgICAgICAgbGlzdCA9IHBhdGhfZXJyb3IoImxpc3RkaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisgICAgaWYgKChsaXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQogICAgIGZvciAoOzspIHsKICAgICAgICAgZXJybm8gPSAwOwpAQCAtMjY4MiwzOCArMzYwMyw0MyBAQAogICAgICAgICAgICAgaWYgKGVycm5vID09IDApIHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAgICAgICAgIGNsb3NlZGlyKGRpcnApOwotICAgICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvbmFtZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIGxpc3QgPSBwYXRoX2Vycm9yKCJsaXN0ZGlyIiwgJnBhdGgpOworICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoZXAtPmRfbmFtZVswXSA9PSAnLicgJiYKICAgICAgICAgICAgIChOQU1MRU4oZXApID09IDEgfHwKICAgICAgICAgICAgICAoZXAtPmRfbmFtZVsxXSA9PSAnLicgJiYgTkFNTEVOKGVwKSA9PSAyKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGFyZ19pc191bmljb2RlKQorICAgICAgICBpZiAocmV0dXJuX3N0cikKICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShlcC0+ZF9uYW1lLCBOQU1MRU4oZXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoZXAtPmRfbmFtZSwgTkFNTEVOKGVwKSk7CiAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKGQpOworICAgICAgICAgICAgUHlfQ0xFQVIobGlzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChkLCB2KSAhPSAwKSB7CisgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGxpc3QsIHYpICE9IDApIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgIFB5X0NMRUFSKGQpOworICAgICAgICAgICAgUHlfQ0xFQVIobGlzdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfQotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBjbG9zZWRpcihkaXJwKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIFB5X0RFQ1JFRihvbmFtZSk7CiAKLSAgICByZXR1cm4gZDsKK2V4aXQ6CisgICAgaWYgKGRpcnAgIT0gTlVMTCkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGlmIChmZCA+IC0xKQorICAgICAgICAgICAgcmV3aW5kZGlyKGRpcnApOworICAgICAgICBjbG9zZWRpcihkaXJwKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICB9CisKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworCisgICAgcmV0dXJuIGxpc3Q7CiAKICNlbmRpZiAvKiB3aGljaCBPUyAqLwogfSAgLyogZW5kIG9mIHBvc2l4X2xpc3RkaXIgKi8KQEAgLTI3MjMsMzEgKzM2NDksMzUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9fZ2V0ZnVsbHBhdGhuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBjb25zdCBjaGFyICpwYXRoOwogICAgIGNoYXIgb3V0YnVmW01BWF9QQVRIKjJdOwogICAgIGNoYXIgKnRlbXA7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmdWxscGF0aG5hbWUiLCAmcG8pKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKndwYXRoID0gUHlVbmljb2RlX0FTX1VOSUNPREUocG8pOwotICAgICAgICBQeV9VTklDT0RFIHdvdXRidWZbTUFYX1BBVEgqMl0sICp3b3V0YnVmcCA9IHdvdXRidWY7Ci0gICAgICAgIFB5X1VOSUNPREUgKnd0ZW1wOworICAgIFB5T2JqZWN0ICpwbzsKKworICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfDpfZ2V0ZnVsbHBhdGhuYW1lIiwgJnBvKSkKKyAgICB7CisgICAgICAgIHdjaGFyX3QgKndwYXRoOworICAgICAgICB3Y2hhcl90IHdvdXRidWZbTUFYX1BBVEgqMl0sICp3b3V0YnVmcCA9IHdvdXRidWY7CisgICAgICAgIHdjaGFyX3QgKnd0ZW1wOwogICAgICAgICBEV09SRCByZXN1bHQ7CiAgICAgICAgIFB5T2JqZWN0ICp2OworCisgICAgICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIHJlc3VsdCA9IEdldEZ1bGxQYXRoTmFtZVcod3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHdvdXRidWYpL3NpemVvZih3b3V0YnVmWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd291dGJ1ZiwgJnd0ZW1wKTsKLSAgICAgICAgaWYgKHJlc3VsdCA+IHNpemVvZih3b3V0YnVmKS9zaXplb2Yod291dGJ1ZlswXSkpIHsKLSAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIGlmIChyZXN1bHQgPiBQeV9BUlJBWV9MRU5HVEgod291dGJ1ZikpIHsKKyAgICAgICAgICAgIHdvdXRidWZwID0gbWFsbG9jKHJlc3VsdCAqIHNpemVvZih3Y2hhcl90KSk7CiAgICAgICAgICAgICBpZiAoIXdvdXRidWZwKQogICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmVzdWx0ID0gR2V0RnVsbFBhdGhOYW1lVyh3cGF0aCwgcmVzdWx0LCB3b3V0YnVmcCwgJnd0ZW1wKTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CisgICAgICAgICAgICB2ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3b3V0YnVmcCwgd2NzbGVuKHdvdXRidWZwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHYgPSB3aW4zMl9lcnJvcl91bmljb2RlKCJHZXRGdWxsUGF0aE5hbWVXIiwgd3BhdGgpOworICAgICAgICAgICAgdiA9IHdpbjMyX2Vycm9yX29iamVjdCgiR2V0RnVsbFBhdGhOYW1lVyIsIHBvKTsKICAgICAgICAgaWYgKHdvdXRidWZwICE9IHdvdXRidWYpCiAgICAgICAgICAgICBmcmVlKHdvdXRidWZwKTsKICAgICAgICAgcmV0dXJuIHY7CkBAIC0yNzU2LDE4ICszNjg2LDE2IEBACiAgICAgICAgYXJlIGFsc28gdmFsaWQuICovCiAgICAgUHlFcnJfQ2xlYXIoKTsKIAotI2VuZGlmCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiTyY6X2dldGZ1bGxwYXRobmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAieTpfZ2V0ZnVsbHBhdGhuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmICghR2V0RnVsbFBhdGhOYW1lKHBhdGgsIHNpemVvZihvdXRidWYpL3NpemVvZihvdXRidWZbMF0pLAorICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIUdldEZ1bGxQYXRoTmFtZShwYXRoLCBQeV9BUlJBWV9MRU5HVEgob3V0YnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRidWYsICZ0ZW1wKSkgewogICAgICAgICB3aW4zMl9lcnJvcigiR2V0RnVsbFBhdGhOYW1lIiwgcGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9ERUNSRUYob3BhdGgpOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIDApKSkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZShvdXRidWYsIHN0cmxlbihvdXRidWYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLCBOVUxMKTsKQEAgLTI3ODUsMTIgKzM3MTMsMTQgQEAKICAgICBpbnQgYnVmX3NpemU7CiAgICAgd2NoYXJfdCAqdGFyZ2V0X3BhdGg7CiAgICAgaW50IHJlc3VsdF9sZW5ndGg7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CiAgICAgd2NoYXJfdCAqcGF0aDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidXw6X2dldGZpbmFscGF0aG5hbWUiLCAmcGF0aCkpIHsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9nZXRmaW5hbHBhdGhuYW1lIiwgJnBvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIHBhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHBvKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmKCFjaGVja19HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGUoKSkgewogICAgICAgICAvKiBJZiB0aGUgT1MgZG9lc24ndCBoYXZlIEdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSwgcmV0dXJuIGEKQEAgLTI4MDksMTggKzM3MzksMTUgQEAKICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsCiAgICAgICAgIE5VTEwpOwogCi0gICAgaWYoaEZpbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGdldCBhIGhhbmRsZSB0byBmaWxlLiIpOwotICAgIH0KKyAgICBpZihoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKKyAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX29iamVjdCgiQ3JlYXRlRmlsZVciLCBwbyk7CiAKICAgICAvKiBXZSBoYXZlIGEgZ29vZCBoYW5kbGUgdG8gdGhlIHRhcmdldCwgdXNlIGl0IHRvIGRldGVybWluZSB0aGUKICAgICAgICB0YXJnZXQgcGF0aCBuYW1lLiAqLwogICAgIGJ1Zl9zaXplID0gUHlfR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlVyhoRmlsZSwgMCwgMCwgVk9MVU1FX05BTUVfTlQpOwogCiAgICAgaWYoIWJ1Zl9zaXplKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkdldEZpbmFsUGF0aE5hbWVCeUhhbmRsZSIsIHBvKTsKIAogICAgIHRhcmdldF9wYXRoID0gKHdjaGFyX3QgKiltYWxsb2MoKGJ1Zl9zaXplKzEpKnNpemVvZih3Y2hhcl90KSk7CiAgICAgaWYoIXRhcmdldF9wYXRoKQpAQCAtMjgyOSwxMyArMzc1NiwxMyBAQAogICAgIHJlc3VsdF9sZW5ndGggPSBQeV9HZXRGaW5hbFBhdGhOYW1lQnlIYW5kbGVXKGhGaWxlLCB0YXJnZXRfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfc2l6ZSwgVk9MVU1FX05BTUVfRE9TKTsKICAgICBpZighcmVzdWx0X2xlbmd0aCkKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoIkdldEZpbmFsUGF0aE5hbXlCeUhhbmRsZSIsIHBhdGgpOworICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJHZXRGaW5hbFBhdGhOYW15QnlIYW5kbGUiLCBwbyk7CiAKICAgICBpZighQ2xvc2VIYW5kbGUoaEZpbGUpKQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgiR2V0RmluYWxQYXRoTmFtZUJ5SGFuZGxlIiwgcGF0aCk7CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoIkNsb3NlSGFuZGxlIiwgcG8pOwogCiAgICAgdGFyZ2V0X3BhdGhbcmVzdWx0X2xlbmd0aF0gPSAwOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih0YXJnZXRfcGF0aCwgcmVzdWx0X2xlbmd0aCk7CiAgICAgZnJlZSh0YXJnZXRfcGF0aCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIApAQCAtMjg3MiwxMyArMzc5OSwxNCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X19pc2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpwbzsKKyAgICBjb25zdCBjaGFyICpwYXRoOworICAgIFB5T2JqZWN0ICpwbzsKICAgICBEV09SRCBhdHRyaWJ1dGVzOwogCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8Ol9pc2RpciIsICZwbykpIHsKLSAgICAgICAgUHlfVU5JQ09ERSAqd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyk7CisgICAgICAgIHdjaGFyX3QgKndwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzVyh3cGF0aCk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGVzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKQpAQCAtMjg4OSwxMSArMzgxNywxMCBAQAogICAgICAgIGFyZSBhbHNvIHZhbGlkLiAqLwogICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOl9pc2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInk6X2lzZGlyIiwgJnBhdGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKKyAgICBpZiAod2luMzJfd2Fybl9ieXRlc19hcGkoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXR0cmlidXRlcyA9IEdldEZpbGVBdHRyaWJ1dGVzQShwYXRoKTsKICAgICBpZiAoYXR0cmlidXRlcyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykKICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwpAQCAtMjkwNyw2OSArMzgzNCw3MiBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlEb2NfU1RSVkFSKHBvc2l4X21rZGlyX19kb2NfXywKLSJta2RpcihwYXRoIFssIG1vZGU9MDc3N10pXG5cblwKLUNyZWF0ZSBhIGRpcmVjdG9yeS4iKTsKKyJta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorQ3JlYXRlIGEgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLlxuXAorXG5cCitUaGUgbW9kZSBhcmd1bWVudCBpcyBpZ25vcmVkIG9uIFdpbmRvd3MuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ta2RpcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBpbnQgbW9kZSA9IDA3Nzc7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgaW50IHJlc3VsdDsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpJE8mOm1rZGlyIiwga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwgJm1vZGUsCisjaWZkZWYgSEFWRV9NS0RJUkFUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFB5VW5pY29kZU9iamVjdCAqcG87Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8aTpta2RpciIsICZwbywgJm1vZGUpKSB7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQgbG9jayBhcwotICAgICAgICAgICBpdCBpcyBhIHNpbXBsZSBkZXJlZmVyZW5jZS4gKi8KLSAgICAgICAgcmVzID0gQ3JlYXRlRGlyZWN0b3J5VyhQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIE5VTEwpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoIXJlcykKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJta2RpciIsIFB5VW5pY29kZV9BU19VTklDT0RFKHBvKSk7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotICAgIC8qIERyb3AgdGhlIGFyZ3VtZW50IHBhcnNpbmcgZXJyb3IgYXMgbmFycm93IHN0cmluZ3MKLSAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICBQeUVycl9DbGVhcigpOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgLyogUHlVbmljb2RlX0FTX1VOSUNPREUgT0sgd2l0aG91dCB0aHJlYWQgbG9jayBhcwotICAgICAgIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgIHJlcyA9IENyZWF0ZURpcmVjdG9yeUEocGF0aCwgTlVMTCk7CisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5VyhwYXRoLndpZGUsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gQ3JlYXRlRGlyZWN0b3J5QShwYXRoLm5hcnJvdywgTlVMTCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBpZiAoIXJlcykgewotICAgICAgICB3aW4zMl9lcnJvcigibWtkaXIiLCBwYXRoKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotI2Vsc2UKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2RpciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9wYXRoLCAmbW9kZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0jaWYgKCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKFBZQ0NfVkFDUFApICkgJiYgIWRlZmluZWQoX19RTlhfXykKLSAgICByZXMgPSBta2RpcihwYXRoKTsKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoIm1rZGlyIiwgcGF0aC5vYmplY3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogI2Vsc2UKLSAgICByZXMgPSBta2RpcihwYXRoLCBtb2RlKTsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWYgSEFWRV9NS0RJUkFUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gbWtkaXJhdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyNpZiAoIGRlZmluZWQoX19XQVRDT01DX18pIHx8IGRlZmluZWQoUFlDQ19WQUNQUCkgKSAmJiAhZGVmaW5lZChfX1FOWF9fKQorICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdyk7CisjZWxzZQorICAgICAgICByZXN1bHQgPSBta2RpcihwYXRoLm5hcnJvdywgbW9kZSk7CiAjZW5kaWYKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChyZXMgPCAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9hbGxvY2F0ZWRfZmlsZW5hbWUob3BhdGgpOwotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoIm1rZGlyIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogI2VuZGlmCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KIAogCkBAIC0zMDE1LDc5ICszOTQ1LDIyMCBAQAogfQogI2VuZGlmIC8qIEhBVkVfTklDRSAqLwogCi1QeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKLSJyZW5hbWUob2xkLCBuZXcpXG5cblwKLVJlbmFtZSBhIGZpbGUgb3IgZGlyZWN0b3J5LiIpOworCisjaWZkZWYgSEFWRV9HRVRQUklPUklUWQorUHlEb2NfU1RSVkFSKHBvc2l4X2dldHByaW9yaXR5X19kb2NfXywKKyJnZXRwcmlvcml0eSh3aGljaCwgd2hvKSAtPiBjdXJyZW50X3ByaW9yaXR5XG5cblwKK0dldCBwcm9ncmFtIHNjaGVkdWxpbmcgcHJpb3JpdHkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9yZW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfZ2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqbzEsICpvMjsKLSAgICBjaGFyICpwMSwgKnAyOwotICAgIEJPT0wgcmVzdWx0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086cmVuYW1lIiwgJm8xLCAmbzIpKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZvMSkpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgaWYgKCFjb252ZXJ0X3RvX3VuaWNvZGUoJm8yKSkgewotICAgICAgICBQeV9ERUNSRUYobzEpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gTW92ZUZpbGVXKFB5VW5pY29kZV9Bc1VuaWNvZGUobzEpLAotICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVbmljb2RlKG8yKSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYobzEpOwotICAgIFB5X0RFQ1JFRihvMik7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiB3aW4zMl9lcnJvcigicmVuYW1lIiwgTlVMTCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotZXJyb3I6Ci0gICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNzOnJlbmFtZSIsICZwMSwgJnAyKSkKKyAgICBpbnQgd2hpY2gsIHdobywgcmV0dmFsOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaSIsICZ3aGljaCwgJndobykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXN1bHQgPSBNb3ZlRmlsZUEocDEsIHAyKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3IoInJlbmFtZSIsIE5VTEwpOwotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXR1cm4gUHlfTm9uZTsKKyAgICBlcnJubyA9IDA7CisgICAgcmV0dmFsID0gZ2V0cHJpb3JpdHkod2hpY2gsIHdobyk7CisgICAgaWYgKGVycm5vICE9IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpcmV0dmFsKTsKK30KKyNlbmRpZiAvKiBIQVZFX0dFVFBSSU9SSVRZICovCisKKworI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKK1B5RG9jX1NUUlZBUihwb3NpeF9zZXRwcmlvcml0eV9fZG9jX18sCisic2V0cHJpb3JpdHkod2hpY2gsIHdobywgcHJpbykgLT4gTm9uZVxuXG5cCitTZXQgcHJvZ3JhbSBzY2hlZHVsaW5nIHByaW9yaXR5LiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2V0cHJpb3JpdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCB3aGljaCwgd2hvLCBwcmlvLCByZXR2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaSIsICZ3aGljaCwgJndobywgJnByaW8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR2YWwgPSBzZXRwcmlvcml0eSh3aGljaCwgd2hvLCBwcmlvKTsKKyAgICBpZiAocmV0dmFsID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZiAvKiBIQVZFX1NFVFBSSU9SSVRZICovCisKKworc3RhdGljIFB5T2JqZWN0ICoKK2ludGVybmFsX3JlbmFtZShQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywgaW50IGlzX3JlcGxhY2UpCit7CisgICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IGlzX3JlcGxhY2UgPyAicmVwbGFjZSIgOiAicmVuYW1lIjsKKyAgICBwYXRoX3Qgc3JjOworICAgIHBhdGhfdCBkc3Q7CisgICAgaW50IHNyY19kaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgZHN0X2Rpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBkaXJfZmRfc3BlY2lmaWVkOworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIGNoYXIgZm9ybWF0WzI0XTsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsic3JjIiwgImRzdCIsICJzcmNfZGlyX2ZkIiwgImRzdF9kaXJfZmQiLCBOVUxMfTsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBCT09MIHJlc3VsdDsKKyAgICBpbnQgZmxhZ3MgPSBpc19yZXBsYWNlID8gTU9WRUZJTEVfUkVQTEFDRV9FWElTVElORyA6IDA7CiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8yc3RyKGFyZ3MsICJPJk8mOnJlbmFtZSIsIHJlbmFtZSk7CisgICAgaW50IHJlc3VsdDsKICNlbmRpZgorCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBtZW1zZXQoJmRzdCwgMCwgc2l6ZW9mKGRzdCkpOworICAgIHN0cmNweShmb3JtYXQsICJPJk8mfCRPJk8mOiIpOworICAgIHN0cmNhdChmb3JtYXQsIGZ1bmN0aW9uX25hbWUpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgZm9ybWF0LCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZzcmMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmZHN0LAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmc3JjX2Rpcl9mZCwKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRzdF9kaXJfZmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRpcl9mZF9zcGVjaWZpZWQgPSAoc3JjX2Rpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgKGRzdF9kaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpOworI2lmbmRlZiBIQVZFX1JFTkFNRUFUCisgICAgaWYgKGRpcl9mZF9zcGVjaWZpZWQpIHsKKyAgICAgICAgYXJndW1lbnRfdW5hdmFpbGFibGVfZXJyb3IoZnVuY3Rpb25fbmFtZSwgInNyY19kaXJfZmQgYW5kIGRzdF9kaXJfZmQiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgaWYgKChzcmMubmFycm93ICYmIGRzdC53aWRlKSB8fCAoc3JjLndpZGUgJiYgZHN0Lm5hcnJvdykpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJXM6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIsIGZ1bmN0aW9uX25hbWUpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoc3JjLndpZGUpCisgICAgICAgIHJlc3VsdCA9IE1vdmVGaWxlRXhXKHNyYy53aWRlLCBkc3Qud2lkZSwgZmxhZ3MpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gTW92ZUZpbGVFeEEoc3JjLm5hcnJvdywgZHN0Lm5hcnJvdywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoZnVuY3Rpb25fbmFtZSwgZHN0Lm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyNlbHNlCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfUkVOQU1FQVQKKyAgICBpZiAoZGlyX2ZkX3NwZWNpZmllZCkKKyAgICAgICAgcmVzdWx0ID0gcmVuYW1lYXQoc3JjX2Rpcl9mZCwgc3JjLm5hcnJvdywgZHN0X2Rpcl9mZCwgZHN0Lm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IHJlbmFtZShzcmMubmFycm93LCBkc3QubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX2Vycm9yKGZ1bmN0aW9uX25hbWUsICZkc3QpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorI2VuZGlmCisKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCitQeURvY19TVFJWQVIocG9zaXhfcmVuYW1lX19kb2NfXywKKyJyZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKVxuXG5cCitSZW5hbWUgYSBmaWxlIG9yIGRpcmVjdG9yeS5cblwKK1xuXAorSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICByZXR1cm4gaW50ZXJuYWxfcmVuYW1lKGFyZ3MsIGt3YXJncywgMCk7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9yZXBsYWNlX19kb2NfXywKKyJyZXBsYWNlKHNyYywgZHN0LCAqLCBzcmNfZGlyX2ZkPU5vbmUsIGRzdF9kaXJfZmQ9Tm9uZSlcblxuXAorUmVuYW1lIGEgZmlsZSBvciBkaXJlY3RvcnksIG92ZXJ3cml0aW5nIHRoZSBkZXN0aW5hdGlvbi5cblwKK1xuXAorSWYgZWl0aGVyIHNyY19kaXJfZmQgb3IgZHN0X2Rpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZVxuXAorICBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksIGFuZCB0aGUgcmVzcGVjdGl2ZSBwYXRoIHN0cmluZyAoc3JjIG9yIGRzdClcblwKKyAgc2hvdWxkIGJlIHJlbGF0aXZlOyB0aGUgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitzcmNfZGlyX2ZkIGFuZCBkc3RfZGlyX2ZkLCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIHRoZXkgYXJlIHVuYXZhaWxhYmxlLCB1c2luZyB0aGVtIHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVwbGFjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX3JlbmFtZShhcmdzLCBrd2FyZ3MsIDEpOworfQogCiBQeURvY19TVFJWQVIocG9zaXhfcm1kaXJfX2RvY19fLAotInJtZGlyKHBhdGgpXG5cblwKLVJlbW92ZSBhIGRpcmVjdG9yeS4iKTsKKyJybWRpcihwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorUmVtb3ZlIGEgZGlyZWN0b3J5LlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcm1kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gd2luMzJfMXN0cihhcmdzLCAicm1kaXIiLCAieTpybWRpciIsIFJlbW92ZURpcmVjdG9yeUEsICJVOnJtZGlyIiwgUmVtb3ZlRGlyZWN0b3J5Vyk7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8JE8mOnJtZGlyIiwga2V5d29yZHMsCisgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9VTkxJTktBVAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAogI2Vsc2UKLSAgICByZXR1cm4gcG9zaXhfMXN0cihhcmdzLCAiTyY6cm1kaXIiLCBybWRpcik7CisgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKICNlbmRpZgotfQorICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLQotUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXRfX2RvY19fLAotInN0YXQocGF0aCkgLT4gc3RhdCByZXN1bHRcblxuXAotUGVyZm9ybSBhIHN0YXQgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9zdGF0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpzdGF0IiwgU1RBVCwgIlU6c3RhdCIsIHdpbjMyX3N0YXRfdyk7CisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5VyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVtb3ZlRGlyZWN0b3J5QShwYXRoLm5hcnJvdyk7CisgICAgcmVzdWx0ID0gIXJlc3VsdDsgLyogV2luZG93cywgc3VjY2Vzcz0xLCBVTklYLCBzdWNjZXNzPTAgKi8KICNlbHNlCi0gICAgcmV0dXJuIHBvc2l4X2RvX3N0YXQoc2VsZiwgYXJncywgIk8mOnN0YXQiLCBTVEFULCBOVUxMLCBOVUxMKTsKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgaWYgKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkKKyAgICAgICAgcmVzdWx0ID0gdW5saW5rYXQoZGlyX2ZkLCBwYXRoLm5hcnJvdywgQVRfUkVNT1ZFRElSKTsKKyAgICBlbHNlCiAjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gcm1kaXIocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigicm1kaXIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CiAKIApAQCAtMzE3OSwxNjMgKzQyNTAsNDY4IEBACiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfdW5saW5rX19kb2NfXywKLSJ1bmxpbmsocGF0aClcblxuXAotUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUocGF0aCkpLiIpOworInVubGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorUmVtb3ZlIGEgZmlsZSAoc2FtZSBhcyByZW1vdmUoKSkuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitkaXJfZmQgbWF5IG5vdCBiZSBpbXBsZW1lbnRlZCBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiBpdCBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgd2lsbCByYWlzZSBhIE5vdEltcGxlbWVudGVkRXJyb3IuIik7CiAKIFB5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmVfX2RvY19fLAotInJlbW92ZShwYXRoKVxuXG5cCi1SZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluayhwYXRoKSkuIik7CisicmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKVxuXG5cCitSZW1vdmUgYSBmaWxlIChzYW1lIGFzIHVubGluaygpKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3VubGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF91bmxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICByZXR1cm4gd2luMzJfMXN0cihhcmdzLCAicmVtb3ZlIiwgInk6cmVtb3ZlIiwgRGVsZXRlRmlsZUEsCi0gICAgICAgICAgICAgICAgICAgICAgIlU6cmVtb3ZlIiwgUHlfRGVsZXRlRmlsZVcpOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjp1bmxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCiAjZWxzZQotICAgIHJldHVybiBwb3NpeF8xc3RyKGFyZ3MsICJPJjpyZW1vdmUiLCB1bmxpbmspOworICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCiAjZW5kaWYKKyAgICAgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICByZXN1bHQgPSBQeV9EZWxldGVGaWxlVyhwYXRoLndpZGUpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gRGVsZXRlRmlsZUEocGF0aC5uYXJyb3cpOworICAgIHJlc3VsdCA9ICFyZXN1bHQ7IC8qIFdpbmRvd3MsIHN1Y2Nlc3M9MSwgVU5JWCwgc3VjY2Vzcz0wICovCisjZWxzZQorI2lmZGVmIEhBVkVfVU5MSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSB1bmxpbmthdChkaXJfZmQsIHBhdGgubmFycm93LCAwKTsKKyAgICBlbHNlCisjZW5kaWYgLyogSEFWRV9VTkxJTktBVCAqLworICAgICAgICByZXN1bHQgPSB1bmxpbmsocGF0aC5uYXJyb3cpOworI2VuZGlmCisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigidW5saW5rIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogCiAKLSNpZmRlZiBIQVZFX1VOQU1FCiBQeURvY19TVFJWQVIocG9zaXhfdW5hbWVfX2RvY19fLAotInVuYW1lKCkgLT4gKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKVxuXG5cCi1SZXR1cm4gYSB0dXBsZSBpZGVudGlmeWluZyB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLiIpOworInVuYW1lKCkgLT4gdW5hbWVfcmVzdWx0XG5cblwKK1JldHVybiBhbiBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS5cblwKK1RoZSBvYmplY3QgYmVoYXZlcyBsaWtlIGEgbmFtZWQgdHVwbGUgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczpcblwKKyAgKHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBtYWNoaW5lKSIpOwogCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCB1bmFtZV9yZXN1bHRfZmllbGRzW10gPSB7CisgICAgeyJzeXNuYW1lIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gbmFtZSJ9LAorICAgIHsibm9kZW5hbWUiLCAgICJuYW1lIG9mIG1hY2hpbmUgb24gbmV0d29yayAoaW1wbGVtZW50YXRpb24tZGVmaW5lZCkifSwKKyAgICB7InJlbGVhc2UiLCAgICAib3BlcmF0aW5nIHN5c3RlbSByZWxlYXNlIn0sCisgICAgeyJ2ZXJzaW9uIiwgICAgIm9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiJ9LAorICAgIHsibWFjaGluZSIsICAgICJoYXJkd2FyZSBpZGVudGlmaWVyIn0sCisgICAge05VTEx9Cit9OworCitQeURvY19TVFJWQVIodW5hbWVfcmVzdWx0X19kb2NfXywKKyJ1bmFtZV9yZXN1bHQ6IFJlc3VsdCBmcm9tIG9zLnVuYW1lKCkuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorICAoc3lzbmFtZSwgbm9kZW5hbWUsIHJlbGVhc2UsIHZlcnNpb24sIG1hY2hpbmUpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHN5c25hbWUsIG5vZGVuYW1lLCByZWxlYXNlLCB2ZXJzaW9uLCBhbmQgbWFjaGluZS5cblwKK1xuXAorU2VlIG9zLnVuYW1lIGZvciBtb3JlIGluZm9ybWF0aW9uLiIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHVuYW1lX3Jlc3VsdF9kZXNjID0geworICAgICJ1bmFtZV9yZXN1bHQiLCAvKiBuYW1lICovCisgICAgdW5hbWVfcmVzdWx0X19kb2NfXywgLyogZG9jICovCisgICAgdW5hbWVfcmVzdWx0X2ZpZWxkcywKKyAgICA1Cit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFVuYW1lUmVzdWx0VHlwZTsKKworCisjaWZkZWYgSEFWRV9VTkFNRQogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3VuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIHN0cnVjdCB1dHNuYW1lIHU7CiAgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gdW5hbWUoJnUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoc3Nzc3MpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnN5c25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS5ub2RlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1LnJlbGVhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdS52ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIHUubWFjaGluZSk7CisKKyAgICB2YWx1ZSA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZVbmFtZVJlc3VsdFR5cGUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2RlZmluZSBTRVQoaSwgZmllbGQpIFwKKyAgICB7IFwKKyAgICBQeU9iamVjdCAqbyA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShmaWVsZCwgc3RybGVuKGZpZWxkKSwgTlVMTCk7IFwKKyAgICBpZiAoIW8pIHsgXAorICAgICAgICBQeV9ERUNSRUYodmFsdWUpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyBcCisgICAgfSBcCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2YWx1ZSwgaSwgbyk7IFwKKyAgICB9IFwKKworICAgIFNFVCgwLCB1LnN5c25hbWUpOworICAgIFNFVCgxLCB1Lm5vZGVuYW1lKTsKKyAgICBTRVQoMiwgdS5yZWxlYXNlKTsKKyAgICBTRVQoMywgdS52ZXJzaW9uKTsKKyAgICBTRVQoNCwgdS5tYWNoaW5lKTsKKworI3VuZGVmIFNFVAorCisgICAgcmV0dXJuIHZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfVU5BTUUgKi8KIAotc3RhdGljIGludAotZXh0cmFjdF90aW1lKFB5T2JqZWN0ICp0LCB0aW1lX3QqIHNlYywgbG9uZyogdXNlYykKLXsKLSAgICB0aW1lX3QgaW50dmFsOwotICAgIGlmIChQeUZsb2F0X0NoZWNrKHQpKSB7Ci0gICAgICAgIGRvdWJsZSB0dmFsID0gUHlGbG9hdF9Bc0RvdWJsZSh0KTsKLSAgICAgICAgUHlPYmplY3QgKmludG9iaiA9IFB5TnVtYmVyX0xvbmcodCk7Ci0gICAgICAgIGlmICghaW50b2JqKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotI2lmIFNJWkVPRl9USU1FX1QgPiBTSVpFT0ZfTE9ORwotICAgICAgICBpbnR2YWwgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhpbnRvYmopOwotI2Vsc2UKLSAgICAgICAgaW50dmFsID0gUHlMb25nX0FzTG9uZyhpbnRvYmopOwotI2VuZGlmCi0gICAgICAgIFB5X0RFQ1JFRihpbnRvYmopOwotICAgICAgICBpZiAoaW50dmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICpzZWMgPSBpbnR2YWw7Ci0gICAgICAgICp1c2VjID0gKGxvbmcpKCh0dmFsIC0gaW50dmFsKSAqIDFlNik7IC8qIGNhbid0IGV4Y2VlZCAxMDAwMDAwICovCi0gICAgICAgIGlmICgqdXNlYyA8IDApCi0gICAgICAgICAgICAvKiBJZiByb3VuZGluZyBnYXZlIHVzIGEgbmVnYXRpdmUgbnVtYmVyLAotICAgICAgICAgICAgICAgdHJ1bmNhdGUuICAqLwotICAgICAgICAgICAgKnVzZWMgPSAwOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0jaWYgU0laRU9GX1RJTUVfVCA+IFNJWkVPRl9MT05HCi0gICAgaW50dmFsID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sodCk7Ci0jZWxzZQotICAgIGludHZhbCA9IFB5TG9uZ19Bc0xvbmcodCk7Ci0jZW5kaWYKLSAgICBpZiAoaW50dmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICAqc2VjID0gaW50dmFsOwotICAgICp1c2VjID0gMDsKLSAgICByZXR1cm4gMDsKLX0KIAogUHlEb2NfU1RSVkFSKHBvc2l4X3V0aW1lX19kb2NfXywKLSJ1dGltZShwYXRoLCAoYXRpbWUsIG10aW1lKSlcblwKLXV0aW1lKHBhdGgsIE5vbmUpXG5cblwKLVNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHRoZSBmaWxlIHRvIHRoZSBnaXZlbiB2YWx1ZXMuICBJZiB0aGVcblwKLXNlY29uZCBmb3JtIGlzIHVzZWQsIHNldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lcyB0byB0aGUgY3VycmVudCB0aW1lLiIpOworInV0aW1lKHBhdGgsIHRpbWVzPU5vbmUsICosIG5zPU5vbmUsIGRpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblwKK1NldCB0aGUgYWNjZXNzIGFuZCBtb2RpZmllZCB0aW1lIG9mIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGFsd2F5cyBiZSBzcGVjaWZpZWQgYXMgYSBzdHJpbmcuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cblwKK1xuXAorSWYgdGltZXMgaXMgbm90IE5vbmUsIGl0IG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKTtcblwKKyAgICBhdGltZSBhbmQgbXRpbWUgc2hvdWxkIGJlIGV4cHJlc3NlZCBhcyBmbG9hdCBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC5cblwKK0lmIG5zIGlzIG5vdCBOb25lLCBpdCBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lX25zLCBtdGltZV9ucyk7XG5cCisgICAgYXRpbWVfbnMgYW5kIG10aW1lX25zIHNob3VsZCBiZSBleHByZXNzZWQgYXMgaW50ZWdlciBuYW5vc2Vjb25kc1xuXAorICAgIHNpbmNlIHRoZSBlcG9jaC5cblwKK0lmIGJvdGggdGltZXMgYW5kIG5zIGFyZSBOb25lLCB1dGltZSB1c2VzIHRoZSBjdXJyZW50IHRpbWUuXG5cCitTcGVjaWZ5aW5nIHR1cGxlcyBmb3IgYm90aCB0aW1lcyBhbmQgbnMgaXMgYW4gZXJyb3IuXG5cCitcblwKK0lmIGRpcl9mZCBpcyBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW4gdG8gYSBkaXJlY3RvcnksXG5cCisgIGFuZCBwYXRoIHNob3VsZCBiZSByZWxhdGl2ZTsgcGF0aCB3aWxsIHRoZW4gYmUgcmVsYXRpdmUgdG8gdGhhdCBkaXJlY3RvcnkuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgdXRpbWUgd2lsbCBtb2RpZnkgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGUgdGhlXG5cCisgIGxpbmsgcG9pbnRzIHRvLlxuXAorSXQgaXMgYW4gZXJyb3IgdG8gdXNlIGRpcl9mZCBvciBmb2xsb3dfc3ltbGlua3Mgd2hlbiBzcGVjaWZ5aW5nIHBhdGhcblwKKyAgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitkaXJfZmQgYW5kIGZvbGxvd19zeW1saW5rcyBtYXkgbm90IGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLlxuXAorICBJZiB0aGV5IGFyZSB1bmF2YWlsYWJsZSwgdXNpbmcgdGhlbSB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgUHlPYmplY3QgKmFyZzsKLSAgICBQeVVuaWNvZGVPYmplY3QgKm9id3BhdGg7Ci0gICAgd2NoYXJfdCAqd3BhdGggPSBOVUxMOwotICAgIFB5T2JqZWN0ICpvYXBhdGg7Ci0gICAgY2hhciAqYXBhdGg7Ci0gICAgSEFORExFIGhGaWxlOwotICAgIHRpbWVfdCBhdGltZXNlYywgbXRpbWVzZWM7Ci0gICAgbG9uZyBhdXNlYywgbXVzZWM7Ci0gICAgRklMRVRJTUUgYXRpbWUsIG10aW1lOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCAgICBub3c7CisgICAgdGltZV90IGF0aW1lX3M7CisgICAgbG9uZyAgIGF0aW1lX25zOworICAgIHRpbWVfdCBtdGltZV9zOworICAgIGxvbmcgICBtdGltZV9uczsKK30gdXRpbWVfdDsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVT3w6dXRpbWUiLCAmb2J3cGF0aCwgJmFyZykpIHsKLSAgICAgICAgd3BhdGggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYndwYXRoKTsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHdwYXRoLCBGSUxFX1dSSVRFX0FUVFJJQlVURVMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgT1BFTl9FWElTVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFX0ZMQUdfQkFDS1VQX1NFTUFOVElDUywgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgICAgIGlmIChoRmlsZSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkKLSAgICAgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl91bmljb2RlKCJ1dGltZSIsIHdwYXRoKTsKLSAgICB9IGVsc2UKLSAgICAgICAgLyogRHJvcCB0aGUgYXJndW1lbnQgcGFyc2luZyBlcnJvciBhcyBuYXJyb3cgc3RyaW5ncwotICAgICAgICAgICBhcmUgYWxzbyB2YWxpZC4gKi8KLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKy8qCisgKiB0aGVzZSBtYWNyb3MgYXNzdW1lIHRoYXQgInV0aW1lIiBpcyBhIHBvaW50ZXIgdG8gYSB1dGltZV90CisgKiB0aGV5IGFsc28gaW50ZW50aW9uYWxseSBsZWFrIHRoZSBkZWNsYXJhdGlvbiBvZiBhIHBvaW50ZXIgbmFtZWQgInRpbWUiCisgKi8KKyNkZWZpbmUgVVRJTUVfVE9fVElNRVNQRUMgXAorICAgIHN0cnVjdCB0aW1lc3BlYyB0c1syXTsgXAorICAgIHN0cnVjdCB0aW1lc3BlYyAqdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdHNbMF0udHZfc2VjID0gdXRpbWUtPmF0aW1lX3M7IFwKKyAgICAgICAgdHNbMF0udHZfbnNlYyA9IHV0aW1lLT5hdGltZV9uczsgXAorICAgICAgICB0c1sxXS50dl9zZWMgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0c1sxXS50dl9uc2VjID0gdXRpbWUtPm10aW1lX25zOyBcCisgICAgICAgIHRpbWUgPSB0czsgXAorICAgIH0gXAogCi0gICAgaWYgKCF3cGF0aCkgewotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mTzp1dGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvYXBhdGgsICZhcmcpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGFwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvYXBhdGgpOwotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGhGaWxlID0gQ3JlYXRlRmlsZUEoYXBhdGgsIEZJTEVfV1JJVEVfQVRUUklCVVRFUywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBPUEVOX0VYSVNUSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZJTEVfRkxBR19CQUNLVVBfU0VNQU5USUNTLCBOVUxMKTsKLSAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7Ci0gICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBhcGF0aCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob2FwYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihvYXBhdGgpOworI2RlZmluZSBVVElNRV9UT19USU1FVkFMIFwKKyAgICBzdHJ1Y3QgdGltZXZhbCB0dlsyXTsgXAorICAgIHN0cnVjdCB0aW1ldmFsICp0aW1lOyBcCisgICAgaWYgKHV0aW1lLT5ub3cpIFwKKyAgICAgICAgdGltZSA9IE5VTEw7IFwKKyAgICBlbHNlIHsgXAorICAgICAgICB0dlswXS50dl9zZWMgPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0dlswXS50dl91c2VjID0gdXRpbWUtPmF0aW1lX25zIC8gMTAwMDsgXAorICAgICAgICB0dlsxXS50dl9zZWMgPSB1dGltZS0+bXRpbWVfczsgXAorICAgICAgICB0dlsxXS50dl91c2VjID0gdXRpbWUtPm10aW1lX25zIC8gMTAwMDsgXAorICAgICAgICB0aW1lID0gdHY7IFwKKyAgICB9IFwKKworI2RlZmluZSBVVElNRV9UT19VVElNQlVGIFwKKyAgICBzdHJ1Y3QgdXRpbWJ1ZiB1WzJdOyBcCisgICAgc3RydWN0IHV0aW1idWYgKnRpbWU7IFwKKyAgICBpZiAodXRpbWUtPm5vdykgXAorICAgICAgICB0aW1lID0gTlVMTDsgXAorICAgIGVsc2UgeyBcCisgICAgICAgIHUuYWN0aW1lID0gdXRpbWUtPmF0aW1lX3M7IFwKKyAgICAgICAgdS5tb2R0aW1lID0gdXRpbWUtPm10aW1lX3M7IFwKKyAgICAgICAgdGltZSA9IHU7IFwKICAgICB9CiAKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKKyNkZWZpbmUgVVRJTUVfVE9fVElNRV9UIFwKKyAgICB0aW1lX3QgdGltZXRbMl07IFwKKyAgICBzdHJ1Y3QgdGltZXQgdGltZTsgXAorICAgIGlmICh1dGltZS0+bm93KSBcCisgICAgICAgIHRpbWUgPSBOVUxMOyBcCisgICAgZWxzZSB7IFwKKyAgICAgICAgdGltZXRbMF0gPSB1dGltZS0+YXRpbWVfczsgXAorICAgICAgICB0aW1ldFsxXSA9IHV0aW1lLT5tdGltZV9zOyBcCisgICAgICAgIHRpbWUgPSAmdGltZXQ7IFwKKyAgICB9IFwKKworCisjZGVmaW5lIFVUSU1FX0hBVkVfRElSX0ZEIChkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKSB8fCBkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKSkKKworI2lmIFVUSU1FX0hBVkVfRElSX0ZECisKK3N0YXRpYyBpbnQKK3V0aW1lX2Rpcl9mZCh1dGltZV90ICp1dGltZSwgaW50IGRpcl9mZCwgY2hhciAqcGF0aCwgaW50IGZvbGxvd19zeW1saW5rcykKK3sKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgIGludCBmbGFncyA9IGZvbGxvd19zeW1saW5rcyA/IDAgOiBBVF9TWU1MSU5LX05PRk9MTE9XOworICAgIFVUSU1FX1RPX1RJTUVTUEVDOworICAgIHJldHVybiB1dGltZW5zYXQoZGlyX2ZkLCBwYXRoLCB0aW1lLCBmbGFncyk7CisjZWxpZiBkZWZpbmVkKEhBVkVfRlVUSU1FU0FUKQorICAgIFVUSU1FX1RPX1RJTUVWQUw7CisgICAgLyoKKyAgICAgKiBmb2xsb3dfc3ltbGlua3Mgd2lsbCBuZXZlciBiZSBmYWxzZSBoZXJlOworICAgICAqIHdlIG9ubHkgYWxsb3cgIWZvbGxvd19zeW1saW5rcyBhbmQgZGlyX2ZkIHRvZ2V0aGVyCisgICAgICogaWYgd2UgaGF2ZSB1dGltZW5zYXQoKQorICAgICAqLworICAgIGFzc2VydChmb2xsb3dfc3ltbGlua3MpOworICAgIHJldHVybiBmdXRpbWVzYXQoZGlyX2ZkLCBwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworI2RlZmluZSBVVElNRV9IQVZFX0ZEIChkZWZpbmVkKEhBVkVfRlVUSU1FUykgfHwgZGVmaW5lZChIQVZFX0ZVVElNRU5TKSkKKworI2lmIFVUSU1FX0hBVkVfRkQKKworc3RhdGljIGludAordXRpbWVfZmQodXRpbWVfdCAqdXRpbWUsIGludCBmZCkKK3sKKyNpZmRlZiBIQVZFX0ZVVElNRU5TCisgICAgVVRJTUVfVE9fVElNRVNQRUM7CisgICAgcmV0dXJuIGZ1dGltZW5zKGZkLCB0aW1lKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gZnV0aW1lcyhmZCwgdGltZSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKKworI2RlZmluZSBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTIFwKKyAgICAgICAgKGRlZmluZWQoSEFWRV9VVElNRU5TQVQpIHx8IGRlZmluZWQoSEFWRV9MVVRJTUVTKSkKKworI2lmIFVUSU1FX0hBVkVfTk9GT0xMT1dfU1lNTElOS1MKKworc3RhdGljIGludAordXRpbWVfbm9mb2xsb3dfc3ltbGlua3ModXRpbWVfdCAqdXRpbWUsIGNoYXIgKnBhdGgpCit7CisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gdXRpbWVuc2F0KERFRkFVTFRfRElSX0ZELCBwYXRoLCB0aW1lLCBBVF9TWU1MSU5LX05PRk9MTE9XKTsKKyNlbHNlCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gbHV0aW1lcyhwYXRoLCB0aW1lKTsKKyNlbmRpZgorfQorCisjZW5kaWYKKworI2lmbmRlZiBNU19XSU5ET1dTCisKK3N0YXRpYyBpbnQKK3V0aW1lX2RlZmF1bHQodXRpbWVfdCAqdXRpbWUsIGNoYXIgKnBhdGgpCit7CisjaWZkZWYgSEFWRV9VVElNRU5TQVQKKyAgICBVVElNRV9UT19USU1FU1BFQzsKKyAgICByZXR1cm4gdXRpbWVuc2F0KERFRkFVTFRfRElSX0ZELCBwYXRoLCB0aW1lLCAwKTsKKyNlbGlmIGRlZmluZWQoSEFWRV9VVElNRVMpCisgICAgVVRJTUVfVE9fVElNRVZBTDsKKyAgICByZXR1cm4gdXRpbWVzKHBhdGgsIHRpbWUpOworI2VsaWYgZGVmaW5lZChIQVZFX1VUSU1FX0gpCisgICAgVVRJTUVfVE9fVVRJTUJVRjsKKyAgICByZXR1cm4gdXRpbWUocGF0aCwgdGltZSk7CisjZWxzZQorICAgIFVUSU1FX1RPX1RJTUVfVDsKKyAgICByZXR1cm4gdXRpbWUocGF0aCwgdGltZSk7CisjZW5kaWYKK30KKworI2VuZGlmCisKK3N0YXRpYyBpbnQKK3NwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlPYmplY3QgKnB5X2xvbmcsIHRpbWVfdCAqcywgbG9uZyAqbnMpCit7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgUHlPYmplY3QgKmRpdm1vZDsKKyAgICBkaXZtb2QgPSBQeU51bWJlcl9EaXZtb2QocHlfbG9uZywgYmlsbGlvbik7CisgICAgaWYgKCFkaXZtb2QpCisgICAgICAgIGdvdG8gZXhpdDsKKyAgICAqcyA9IF9QeUxvbmdfQXNUaW1lX3QoUHlUdXBsZV9HRVRfSVRFTShkaXZtb2QsIDApKTsKKyAgICBpZiAoKCpzID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisgICAgKm5zID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKGRpdm1vZCwgMSkpOworICAgIGlmICgoKm5zID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICByZXN1bHQgPSAxOworZXhpdDoKKyAgICBQeV9YREVDUkVGKGRpdm1vZCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3V0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBQeU9iamVjdCAqdGltZXMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpucyA9IE5VTEw7CisgICAgaW50IGRpcl9mZCA9IERFRkFVTFRfRElSX0ZEOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAidGltZXMiLCAibnMiLCAiZGlyX2ZkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIHV0aW1lX3QgdXRpbWU7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgSEFORExFIGhGaWxlOworICAgIEZJTEVUSU1FIGF0aW1lLCBtdGltZTsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgorCisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWYgVVRJTUVfSEFWRV9GRAorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLAorICAgICAgICAgICAgIk8mfE8kT08mcDp1dGltZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgJnRpbWVzLCAmbnMsCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKyAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQsCisjZWxzZQorICAgICAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkLAorI2VuZGlmCisgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzCisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkgJiYgbnMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidXRpbWU6IHlvdSBtYXkgc3BlY2lmeSBlaXRoZXIgJ3RpbWVzJyIKKyAgICAgICAgICAgICAgICAgICAgICIgb3IgJ25zJyBidXQgbm90IGJvdGgiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGlmICh0aW1lcyAmJiAodGltZXMgIT0gUHlfTm9uZSkpIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrRXhhY3QodGltZXMpIHx8IChQeVR1cGxlX1NpemUodGltZXMpICE9IDIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZTogJ3RpbWVzJyBtdXN0IGJlIGVpdGhlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiIGEgdHVwbGUgb2YgdHdvIGludHMgb3IgTm9uZSIpOworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgICAgIHV0aW1lLm5vdyA9IDA7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMoUHlUdXBsZV9HRVRfSVRFTSh0aW1lcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnV0aW1lLmF0aW1lX3MsICZ1dGltZS5hdGltZV9ucykgPT0gLTEgfHwKKyAgICAgICAgICAgIF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhQeVR1cGxlX0dFVF9JVEVNKHRpbWVzLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUubXRpbWVfcywgJnV0aW1lLm10aW1lX25zKSA9PSAtMSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgaWYgKG5zKSB7CisgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KG5zKSB8fCAoUHlUdXBsZV9TaXplKG5zKSAhPSAyKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAidXRpbWU6ICducycgbXVzdCBiZSBhIHR1cGxlIG9mIHR3byBpbnRzIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgdXRpbWUubm93ID0gMDsKKyAgICAgICAgaWYgKCFzcGxpdF9weV9sb25nX3RvX3NfYW5kX25zKFB5VHVwbGVfR0VUX0lURU0obnMsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUuYXRpbWVfcywgJnV0aW1lLmF0aW1lX25zKSB8fAorICAgICAgICAgICAgIXNwbGl0X3B5X2xvbmdfdG9fc19hbmRfbnMoUHlUdXBsZV9HRVRfSVRFTShucywgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXRpbWUubXRpbWVfcywgJnV0aW1lLm10aW1lX25zKSkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiB0aW1lcyBhbmQgbnMgYXJlIGJvdGggTm9uZS91bnNwZWNpZmllZC4gdXNlICJub3ciLiAqLworICAgICAgICB1dGltZS5ub3cgPSAxOworICAgIH0KKworI2lmICFVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisgICAgaWYgKGZvbGxvd19zeW1saW5rc19zcGVjaWZpZWQoInV0aW1lIiwgZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgZ290byBleGl0OworI2VuZGlmCisKKyAgICBpZiAocGF0aF9hbmRfZGlyX2ZkX2ludmFsaWQoInV0aW1lIiwgJnBhdGgsIGRpcl9mZCkgfHwKKyAgICAgICAgZGlyX2ZkX2FuZF9mZF9pbnZhbGlkKCJ1dGltZSIsIGRpcl9mZCwgcGF0aC5mZCkgfHwKKyAgICAgICAgZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJ1dGltZSIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworI2lmICFkZWZpbmVkKEhBVkVfVVRJTUVOU0FUKQorICAgIGlmICgoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKSAmJiAoIWZvbGxvd19zeW1saW5rcykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAidXRpbWU6IGNhbm5vdCB1c2UgZGlyX2ZkIGFuZCBmb2xsb3dfc3ltbGlua3MgIgorICAgICAgICAgICAgICAgICAgICAgInRvZ2V0aGVyIG9uIHRoaXMgcGxhdGZvcm0iKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocGF0aC53aWRlKQorICAgICAgICBoRmlsZSA9IENyZWF0ZUZpbGVXKHBhdGgud2lkZSwgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgaEZpbGUgPSBDcmVhdGVGaWxlQShwYXRoLm5hcnJvdywgRklMRV9XUklURV9BVFRSSUJVVEVTLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE9QRU5fRVhJU1RJTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRklMRV9GTEFHX0JBQ0tVUF9TRU1BTlRJQ1MsIE5VTEwpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGhGaWxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgidXRpbWUiLCBwYXRoLm9iamVjdCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBpZiAodXRpbWUubm93KSB7CiAgICAgICAgIFNZU1RFTVRJTUUgbm93OwogICAgICAgICBHZXRTeXN0ZW1UaW1lKCZub3cpOwogICAgICAgICBpZiAoIVN5c3RlbVRpbWVUb0ZpbGVUaW1lKCZub3csICZtdGltZSkgfHwKICAgICAgICAgICAgICFTeXN0ZW1UaW1lVG9GaWxlVGltZSgmbm93LCAmYXRpbWUpKSB7CiAgICAgICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmICghUHlUdXBsZV9DaGVjayhhcmcpIHx8IFB5VHVwbGVfU2l6ZShhcmcpICE9IDIpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1dGltZSgpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSAoYXRpbWUsIG10aW1lKSIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmYXRpbWVzZWMsICZhdXNlYykgPT0gLTEpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIHRpbWVfdF90b19GSUxFX1RJTUUoYXRpbWVzZWMsIDEwMDAqYXVzZWMsICZhdGltZSk7Ci0gICAgICAgIGlmIChleHRyYWN0X3RpbWUoUHlUdXBsZV9HRVRfSVRFTShhcmcsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZtdGltZXNlYywgJm11c2VjKSA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRShtdGltZXNlYywgMTAwMCptdXNlYywgJm10aW1lKTsKKyAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5hdGltZV9zLCB1dGltZS5hdGltZV9ucywgJmF0aW1lKTsKKyAgICAgICAgdGltZV90X3RvX0ZJTEVfVElNRSh1dGltZS5tdGltZV9zLCB1dGltZS5tdGltZV9ucywgJm10aW1lKTsKICAgICB9CiAgICAgaWYgKCFTZXRGaWxlVGltZShoRmlsZSwgTlVMTCwgJmF0aW1lLCAmbXRpbWUpKSB7CiAgICAgICAgIC8qIEF2b2lkIHB1dHRpbmcgdGhlIGZpbGUgbmFtZSBpbnRvIHRoZSBlcnJvciBoZXJlLApAQCAtMzM0Myw5MyArNDcxOSw1MiBAQAogICAgICAgICAgICBzb21ldGhpbmcgaXMgd3Jvbmcgd2l0aCB0aGUgZmlsZSwgd2hlbiBpdCBhbHNvCiAgICAgICAgICAgIGNvdWxkIGJlIHRoZSB0aW1lIHN0YW1wIHRoYXQgZ2l2ZXMgYSBwcm9ibGVtLiAqLwogICAgICAgICB3aW4zMl9lcnJvcigidXRpbWUiLCBOVUxMKTsKLSAgICAgICAgZ290byBkb25lOworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICByZXN1bHQgPSBQeV9Ob25lOwotZG9uZToKLSAgICBDbG9zZUhhbmRsZShoRmlsZSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICB0aW1lX3QgYXRpbWUsIG10aW1lOwotICAgIGxvbmcgYXVzZWMsIG11c2VjOwotICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QqIGFyZzsKKyNpZiBVVElNRV9IQVZFX05PRk9MTE9XX1NZTUxJTktTCisgICAgaWYgKCghZm9sbG93X3N5bWxpbmtzKSAmJiAoZGlyX2ZkID09IERFRkFVTFRfRElSX0ZEKSkKKyAgICAgICAgcmVzdWx0ID0gdXRpbWVfbm9mb2xsb3dfc3ltbGlua3MoJnV0aW1lLCBwYXRoLm5hcnJvdyk7CisgICAgZWxzZQorI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfVVRJTUVTKQotICAgIHN0cnVjdCB0aW1ldmFsIGJ1ZlsyXTsKLSNkZWZpbmUgQVRJTUUgYnVmWzBdLnR2X3NlYwotI2RlZmluZSBNVElNRSBidWZbMV0udHZfc2VjCi0jZWxpZiBkZWZpbmVkKEhBVkVfVVRJTUVfSCkKLS8qIFhYWCBzaG91bGQgZGVmaW5lIHN0cnVjdCB1dGltYnVmIGluc3RlYWQsIGFib3ZlICovCi0gICAgc3RydWN0IHV0aW1idWYgYnVmOwotI2RlZmluZSBBVElNRSBidWYuYWN0aW1lCi0jZGVmaW5lIE1USU1FIGJ1Zi5tb2R0aW1lCi0jZGVmaW5lIFVUSU1FX0FSRyAmYnVmCi0jZWxzZSAvKiBIQVZFX1VUSU1FUyAqLwotICAgIHRpbWVfdCBidWZbMl07Ci0jZGVmaW5lIEFUSU1FIGJ1ZlswXQotI2RlZmluZSBNVElNRSBidWZbMV0KLSNkZWZpbmUgVVRJTUVfQVJHIGJ1ZgotI2VuZGlmIC8qIEhBVkVfVVRJTUVTICovCisjaWYgVVRJTUVfSEFWRV9ESVJfRkQKKyAgICBpZiAoKGRpcl9mZCAhPSBERUZBVUxUX0RJUl9GRCkgfHwgKCFmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICByZXN1bHQgPSB1dGltZV9kaXJfZmQoJnV0aW1lLCBkaXJfZmQsIHBhdGgubmFycm93LCBmb2xsb3dfc3ltbGlua3MpOworICAgIGVsc2UKKyNlbmRpZgogCisjaWYgVVRJTUVfSEFWRV9GRAorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXN1bHQgPSB1dGltZV9mZCgmdXRpbWUsIHBhdGguZmQpOworICAgIGVsc2UKKyNlbmRpZgogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86dXRpbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwgJmFyZykpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICBpZiAoYXJnID09IFB5X05vbmUpIHsKLSAgICAgICAgLyogb3B0aW9uYWwgdGltZSB2YWx1ZXMgbm90IGdpdmVuICovCi0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWUocGF0aCwgTlVMTCk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gdXRpbWVfZGVmYXVsdCgmdXRpbWUsIHBhdGgubmFycm93KTsKKworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAvKiBzZWUgcHJldmlvdXMgY29tbWVudCBhYm91dCBub3QgcHV0dGluZyBmaWxlbmFtZSBpbiBlcnJvciBoZXJlICovCisgICAgICAgIHJldHVybl92YWx1ZSA9IHBvc2l4X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZXhpdDsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSB8fCBQeVR1cGxlX1NpemUoYXJnKSAhPSAyKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAidXRpbWUoKSBhcmcgMiBtdXN0IGJlIGEgdHVwbGUgKGF0aW1lLCBtdGltZSkiKTsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmYXRpbWUsICZhdXNlYykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZXh0cmFjdF90aW1lKFB5VHVwbGVfR0VUX0lURU0oYXJnLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmbXRpbWUsICZtdXNlYykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBBVElNRSA9IGF0aW1lOwotICAgICAgICBNVElNRSA9IG10aW1lOwotI2lmZGVmIEhBVkVfVVRJTUVTCi0gICAgICAgIGJ1ZlswXS50dl91c2VjID0gYXVzZWM7Ci0gICAgICAgIGJ1ZlsxXS50dl91c2VjID0gbXVzZWM7Ci0gICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgcmVzID0gdXRpbWVzKHBhdGgsIGJ1Zik7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZWxzZQotICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIHJlcyA9IHV0aW1lKHBhdGgsIFVUSU1FX0FSRyk7Ci0gICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCi0jZW5kaWYgLyogSEFWRV9VVElNRVMgKi8KLSAgICB9Ci0gICAgaWYgKHJlcyA8IDApIHsKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci0jdW5kZWYgVVRJTUVfQVJHCi0jdW5kZWYgQVRJTUUKLSN1bmRlZiBNVElNRQorCiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwotfQogCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKGhGaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQorICAgICAgICBDbG9zZUhhbmRsZShoRmlsZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQogCiAvKiBQcm9jZXNzIG9wZXJhdGlvbnMgKi8KIApAQCAtMzQ3NCw3OSArNDgwOSw3IEBACiB9CiAjZW5kaWYKIAotCi0jaWZkZWYgSEFWRV9FWEVDVgotUHlEb2NfU1RSVkFSKHBvc2l4X2V4ZWN2X19kb2NfXywKLSJleGVjdihwYXRoLCBhcmdzKVxuXG5cCi1FeGVjdXRlIGFuIGV4ZWN1dGFibGUgcGF0aCB3aXRoIGFyZ3VtZW50cywgcmVwbGFjaW5nIGN1cnJlbnQgcHJvY2Vzcy5cblwKLVxuXAotICAgIHBhdGg6IHBhdGggb2YgZXhlY3V0YWJsZSBmaWxlXG5cCi0gICAgYXJnczogdHVwbGUgb3IgbGlzdCBvZiBzdHJpbmdzIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9leGVjdihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7Ci0gICAgUHlPYmplY3QgKmFyZ3Y7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OwotICAgIFB5X3NzaXplX3QgaSwgYXJnYzsKLSAgICBQeU9iamVjdCAqKCpnZXRpdGVtKShQeU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKLQotICAgIC8qIGV4ZWN2IGhhcyB0d28gYXJndW1lbnRzOiAocGF0aCwgYXJndiksIHdoZXJlCi0gICAgICAgYXJndiBpcyBhIGxpc3Qgb3IgdHVwbGUgb2Ygc3RyaW5ncy4gKi8KLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZPOmV4ZWN2IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmb3BhdGgsICZhcmd2KSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcob3BhdGgpOwotICAgIGlmIChQeUxpc3RfQ2hlY2soYXJndikpIHsKLSAgICAgICAgYXJnYyA9IFB5TGlzdF9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlMaXN0X0dldEl0ZW07Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2soYXJndikpIHsKLSAgICAgICAgYXJnYyA9IFB5VHVwbGVfU2l6ZShhcmd2KTsKLSAgICAgICAgZ2V0aXRlbSA9IFB5VHVwbGVfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoYXJnYyA8IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJleGVjdigpIGFyZyAyIG11c3Qgbm90IGJlIGVtcHR5Iik7Ci0gICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgYXJnYysxKTsKLSAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYob3BhdGgpOwotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykgewotICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoKCpnZXRpdGVtKShhcmd2LCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmd2bGlzdFtpXSkpIHsKLSAgICAgICAgICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBpKTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2KCkgYXJnIDIgbXVzdCBjb250YWluIG9ubHkgc3RyaW5ncyIpOwotICAgICAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIH0KLSAgICB9Ci0gICAgYXJndmxpc3RbYXJnY10gPSBOVUxMOwotCi0gICAgZXhlY3YocGF0aCwgYXJndmxpc3QpOwotCi0gICAgLyogSWYgd2UgZ2V0IGhlcmUgaXQncyBkZWZpbml0ZWx5IGFuIGVycm9yICovCi0KLSAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7Ci0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLX0KLQorI2lmIGRlZmluZWQoSEFWRV9FWEVDVikgfHwgZGVmaW5lZCAoSEFWRV9GRVhFQ1ZFKQogc3RhdGljIGNoYXIqKgogcGFyc2VfZW52bGlzdChQeU9iamVjdCogZW52LCBQeV9zc2l6ZV90ICplbnZjX3B0cikKIHsKQEAgLTM2MjgsODcgKzQ4OTEsMTYyIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBjaGFyKioKK3BhcnNlX2FyZ2xpc3QoUHlPYmplY3QqIGFyZ3YsIFB5X3NzaXplX3QgKmFyZ2MpCit7CisgICAgaW50IGk7CisgICAgY2hhciAqKmFyZ3ZsaXN0ID0gUHlNZW1fTkVXKGNoYXIgKiwgKmFyZ2MrMSk7CisgICAgaWYgKGFyZ3ZsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCAqYXJnYzsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0KiBpdGVtID0gUHlTZXF1ZW5jZV9JVEVNKGFyZ3YsIGkpOworICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpZiAoIWZzY29udmVydF9zdHJkdXAoaXRlbSwgJmFyZ3ZsaXN0W2ldKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICB9CisgICAgYXJndmxpc3RbKmFyZ2NdID0gTlVMTDsKKyAgICByZXR1cm4gYXJndmxpc3Q7CitmYWlsOgorICAgICphcmdjID0gaTsKKyAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgKmFyZ2MpOworICAgIHJldHVybiBOVUxMOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0VYRUNWCitQeURvY19TVFJWQVIocG9zaXhfZXhlY3ZfX2RvY19fLAorImV4ZWN2KHBhdGgsIGFyZ3MpXG5cblwKK0V4ZWN1dGUgYW4gZXhlY3V0YWJsZSBwYXRoIHdpdGggYXJndW1lbnRzLCByZXBsYWNpbmcgY3VycmVudCBwcm9jZXNzLlxuXAorXG5cCisgICAgcGF0aDogcGF0aCBvZiBleGVjdXRhYmxlIGZpbGVcblwKKyAgICBhcmdzOiB0dXBsZSBvciBsaXN0IG9mIHN0cmluZ3MiKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2V4ZWN2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb3BhdGg7CisgICAgY2hhciAqcGF0aDsKKyAgICBQeU9iamVjdCAqYXJndjsKKyAgICBjaGFyICoqYXJndmxpc3Q7CisgICAgUHlfc3NpemVfdCBhcmdjOworCisgICAgLyogZXhlY3YgaGFzIHR3byBhcmd1bWVudHM6IChwYXRoLCBhcmd2KSwgd2hlcmUKKyAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzLiAqLworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk86ZXhlY3YiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvcGF0aCwgJmFyZ3YpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7CisgICAgaWYgKCFQeUxpc3RfQ2hlY2soYXJndikgJiYgIVB5VHVwbGVfQ2hlY2soYXJndikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJleGVjdigpIGFyZyAyIG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBhcmdjID0gUHlTZXF1ZW5jZV9TaXplKGFyZ3YpOworICAgIGlmIChhcmdjIDwgMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImV4ZWN2KCkgYXJnIDIgbXVzdCBub3QgYmUgZW1wdHkiKTsKKyAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKKyAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYob3BhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBleGVjdihwYXRoLCBhcmd2bGlzdCk7CisKKyAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KKworICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBhcmdjKTsKKyAgICBQeV9ERUNSRUYob3BhdGgpOworICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworfQorCiBQeURvY19TVFJWQVIocG9zaXhfZXhlY3ZlX19kb2NfXywKICJleGVjdmUocGF0aCwgYXJncywgZW52KVxuXG5cCiBFeGVjdXRlIGEgcGF0aCB3aXRoIGFyZ3VtZW50cyBhbmQgZW52aXJvbm1lbnQsIHJlcGxhY2luZyBjdXJyZW50IHByb2Nlc3MuXG5cCiBcblwKICAgICBwYXRoOiBwYXRoIG9mIGV4ZWN1dGFibGUgZmlsZVxuXAogICAgIGFyZ3M6IHR1cGxlIG9yIGxpc3Qgb2YgYXJndW1lbnRzXG5cCi0gICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzIik7CisgICAgZW52OiBkaWN0aW9uYXJ5IG9mIHN0cmluZ3MgbWFwcGluZyB0byBzdHJpbmdzXG5cCitcblwKK09uIHNvbWUgcGxhdGZvcm1zLCB5b3UgbWF5IHNwZWNpZnkgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yIHBhdGg7XG5cCisgIGV4ZWN2ZSB3aWxsIGV4ZWN1dGUgdGhlIHByb2dyYW0gdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBvcGVuIHRvLlxuXAorICBJZiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHJhaXNlcyBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfZXhlY3ZlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X2V4ZWN2ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKnBhdGg7CisgICAgcGF0aF90IHBhdGg7CiAgICAgUHlPYmplY3QgKmFyZ3YsICplbnY7Ci0gICAgY2hhciAqKmFyZ3ZsaXN0OworICAgIGNoYXIgKiphcmd2bGlzdCA9IE5VTEw7CiAgICAgY2hhciAqKmVudmxpc3Q7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmdjLCBlbnZjOwotICAgIFB5T2JqZWN0ICooKmdldGl0ZW0pKFB5T2JqZWN0ICosIFB5X3NzaXplX3QpOwotICAgIFB5X3NzaXplX3QgbGFzdGFyZyA9IDA7CisgICAgUHlfc3NpemVfdCBhcmdjLCBlbnZjOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImFyZ3YiLCAiZW52aXJvbm1lbnQiLCBOVUxMfTsKIAogICAgIC8qIGV4ZWN2ZSBoYXMgdGhyZWUgYXJndW1lbnRzOiAocGF0aCwgYXJndiwgZW52KSwgd2hlcmUKICAgICAgICBhcmd2IGlzIGEgbGlzdCBvciB0dXBsZSBvZiBzdHJpbmdzIGFuZCBlbnYgaXMgYSBkaWN0aW9uYXJ5CiAgICAgICAgbGlrZSBwb3NpeC5lbnZpcm9uLiAqLwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJk9POmV4ZWN2ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wYXRoLCAmYXJndiwgJmVudikpCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPTzpleGVjdmUiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJndiwgJmVudgorICAgICAgICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwYXRoID0gUHlCeXRlc19Bc1N0cmluZyhvcGF0aCk7Ci0gICAgaWYgKFB5TGlzdF9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlMaXN0X1NpemUoYXJndik7Ci0gICAgICAgIGdldGl0ZW0gPSBQeUxpc3RfR2V0SXRlbTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayhhcmd2KSkgewotICAgICAgICBhcmdjID0gUHlUdXBsZV9TaXplKGFyZ3YpOwotICAgICAgICBnZXRpdGVtID0gUHlUdXBsZV9HZXRJdGVtOwotICAgIH0KLSAgICBlbHNlIHsKKworICAgIGlmICghUHlMaXN0X0NoZWNrKGFyZ3YpICYmICFQeVR1cGxlX0NoZWNrKGFyZ3YpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlKCkgYXJnIDIgbXVzdCBiZSBhIHR1cGxlIG9yIGxpc3QiKTsKLSAgICAgICAgZ290byBmYWlsXzA7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlOiBhcmd2IG11c3QgYmUgYSB0dXBsZSBvciBsaXN0Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisgICAgYXJnYyA9IFB5U2VxdWVuY2VfU2l6ZShhcmd2KTsKICAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhlbnYpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZXhlY3ZlKCkgYXJnIDMgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7Ci0gICAgICAgIGdvdG8gZmFpbF8wOworICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN2ZTogZW52aXJvbm1lbnQgbXVzdCBiZSBhIG1hcHBpbmcgb2JqZWN0Iik7CisgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAKLSAgICBhcmd2bGlzdCA9IFB5TWVtX05FVyhjaGFyICosIGFyZ2MrMSk7CisgICAgYXJndmxpc3QgPSBwYXJzZV9hcmdsaXN0KGFyZ3YsICZhcmdjKTsKICAgICBpZiAoYXJndmxpc3QgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGZhaWxfMDsKKyAgICAgICAgZ290byBmYWlsOwogICAgIH0KLSAgICBmb3IgKGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7Ci0gICAgICAgIGlmICghZnNjb252ZXJ0X3N0cmR1cCgoKmdldGl0ZW0pKGFyZ3YsIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3ZsaXN0W2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgbGFzdGFyZyA9IGk7Ci0gICAgICAgICAgICBnb3RvIGZhaWxfMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBsYXN0YXJnID0gYXJnYzsKLSAgICBhcmd2bGlzdFthcmdjXSA9IE5VTEw7CiAKICAgICBlbnZsaXN0ID0gcGFyc2VfZW52bGlzdChlbnYsICZlbnZjKTsKICAgICBpZiAoZW52bGlzdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGZhaWxfMTsKKyAgICAgICAgZ290byBmYWlsOwogCi0gICAgZXhlY3ZlKHBhdGgsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyNpZmRlZiBIQVZFX0ZFWEVDVkUKKyAgICBpZiAocGF0aC5mZCA+IC0xKQorICAgICAgICBmZXhlY3ZlKHBhdGguZmQsIGFyZ3ZsaXN0LCBlbnZsaXN0KTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgZXhlY3ZlKHBhdGgubmFycm93LCBhcmd2bGlzdCwgZW52bGlzdCk7CiAKICAgICAvKiBJZiB3ZSBnZXQgaGVyZSBpdCdzIGRlZmluaXRlbHkgYW4gZXJyb3IgKi8KIAotICAgICh2b2lkKSBwb3NpeF9lcnJvcigpOworICAgIHBhdGhfcG9zaXhfZXJyb3IoImV4ZWN2ZSIsICZwYXRoKTsKIAogICAgIHdoaWxlICgtLWVudmMgPj0gMCkKICAgICAgICAgUHlNZW1fREVMKGVudmxpc3RbZW52Y10pOwogICAgIFB5TWVtX0RFTChlbnZsaXN0KTsKLSAgZmFpbF8xOgotICAgIGZyZWVfc3RyaW5nX2FycmF5KGFyZ3ZsaXN0LCBsYXN0YXJnKTsKLSAgZmFpbF8wOgotICAgIFB5X0RFQ1JFRihvcGF0aCk7CisgIGZhaWw6CisgICAgaWYgKGFyZ3ZsaXN0KQorICAgICAgICBmcmVlX3N0cmluZ19hcnJheShhcmd2bGlzdCwgYXJnYyk7CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCkBAIC00MTUzLDYgKzU0OTEsNDA1IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU0NIRURfSAorCisjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4KHBvbGljeSlcblxuXAorR2V0IHRoZSBtYXhpbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvbGljeSwgbWF4OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9tYXgiLCAmcG9saWN5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWF4ID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21heChwb2xpY3kpOworICAgIGlmIChtYXggPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1heCk7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfXywKKyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluKHBvbGljeSlcblxuXAorR2V0IHRoZSBtaW5pbXVtIHNjaGVkdWxpbmcgcHJpb3JpdHkgZm9yICpwb2xpY3kqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHBvbGljeSwgbWluOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNjaGVkX2dldF9wcmlvcml0eV9taW4iLCAmcG9saWN5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWluID0gc2NoZWRfZ2V0X3ByaW9yaXR5X21pbihwb2xpY3kpOworICAgIGlmIChtaW4gPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG1pbik7Cit9CisKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0dFVF9QUklPUklUWV9NQVggKi8KKworI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKK1B5RG9jX1NUUlZBUihwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXJfX2RvY19fLAorInNjaGVkX2dldHNjaGVkdWxlcihwaWQpXG5cblwKK0dldCB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBwcm9jZXNzIHdpdGggYSBQSUQgb2YgKnBpZCouXG5cCitQYXNzaW5nIGEgUElEIG9mIDAgcmV0dXJucyB0aGUgc2NoZWR1bGluZyBwb2xpY3kgZm9yIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9nZXRzY2hlZHVsZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgcG9saWN5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRzY2hlZHVsZXIiLCAmcGlkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcG9saWN5ID0gc2NoZWRfZ2V0c2NoZWR1bGVyKHBpZCk7CisgICAgaWYgKHBvbGljeSA8IDApCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcocG9saWN5KTsKK30KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUUEFSQU0pCisKK3N0YXRpYyBQeU9iamVjdCAqCitzY2hlZF9wYXJhbV9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzLCAqcHJpb3JpdHk7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzY2hlZF9wcmlvcml0eSIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTzpzY2hlZF9wYXJhbSIsIGt3bGlzdCwgJnByaW9yaXR5KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcodHlwZSk7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihwcmlvcml0eSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXMsIDAsIHByaW9yaXR5KTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeURvY19TVFJWQVIoc2NoZWRfcGFyYW1fX2RvY19fLAorInNjaGVkX3BhcmFtKHNjaGVkX3ByaW9yaXR5KTogQSBzY2hlZHVsaW5nIHBhcmFtZXRlci5cblxuXAorQ3VycmVudCBoYXMgb25seSBvbmUgZmllbGQ6IHNjaGVkX3ByaW9yaXR5Iik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHNjaGVkX3BhcmFtX2ZpZWxkc1tdID0geworICAgIHsic2NoZWRfcHJpb3JpdHkiLCAidGhlIHNjaGVkdWxpbmcgcHJpb3JpdHkifSwKKyAgICB7MH0KK307CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc2NoZWRfcGFyYW1fZGVzYyA9IHsKKyAgICAic2NoZWRfcGFyYW0iLCAvKiBuYW1lICovCisgICAgc2NoZWRfcGFyYW1fX2RvY19fLCAvKiBkb2MgKi8KKyAgICBzY2hlZF9wYXJhbV9maWVsZHMsCisgICAgMQorfTsKKworc3RhdGljIGludAorY29udmVydF9zY2hlZF9wYXJhbShQeU9iamVjdCAqcGFyYW0sIHN0cnVjdCBzY2hlZF9wYXJhbSAqcmVzKQoreworICAgIGxvbmcgcHJpb3JpdHk7CisKKyAgICBpZiAoUHlfVFlQRShwYXJhbSkgIT0gJlNjaGVkUGFyYW1UeXBlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJtdXN0IGhhdmUgYSBzY2hlZF9wYXJhbSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHByaW9yaXR5ID0gUHlMb25nX0FzTG9uZyhQeVN0cnVjdFNlcXVlbmNlX0dFVF9JVEVNKHBhcmFtLCAwKSk7CisgICAgaWYgKHByaW9yaXR5ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChwcmlvcml0eSA+IElOVF9NQVggfHwgcHJpb3JpdHkgPCBJTlRfTUlOKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic2NoZWRfcHJpb3JpdHkgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXMtPnNjaGVkX3ByaW9yaXR5ID0gUHlfU0FGRV9ET1dOQ0FTVChwcmlvcml0eSwgbG9uZywgaW50KTsKKyAgICByZXR1cm4gMTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfXywKKyJzY2hlZF9zZXRzY2hlZHVsZXIocGlkLCBwb2xpY3ksIHBhcmFtKVxuXG5cCitTZXQgdGhlIHNjaGVkdWxpbmcgcG9saWN5LCAqcG9saWN5KiwgZm9yICpwaWQqLlxuXAorSWYgKnBpZCogaXMgMCwgdGhlIGNhbGxpbmcgcHJvY2VzcyBpcyBjaGFuZ2VkLlxuXAorKnBhcmFtKiBpcyBhbiBpbnN0YW5jZSBvZiBzY2hlZF9wYXJhbS4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NjaGVkX3NldHNjaGVkdWxlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIGludCBwb2xpY3k7CisgICAgc3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgImlPJjpzY2hlZF9zZXRzY2hlZHVsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmcG9saWN5LCAmY29udmVydF9zY2hlZF9wYXJhbSwgJnBhcmFtKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKgorICAgICoqIHNjaGVkX3NldHNjaGVkdWxlcigpIHJldHVybnMgMCBpbiBMaW51eCwgYnV0IHRoZSBwcmV2aW91cworICAgICoqIHNjaGVkdWxpbmcgcG9saWN5IHVuZGVyIFNvbGFyaXMvSWxsdW1vcywgYW5kIG90aGVycy4KKyAgICAqKiBPbiBlcnJvciwgLTEgaXMgcmV0dXJuZWQgaW4gYWxsIE9wZXJhdGluZyBTeXN0ZW1zLgorICAgICovCisgICAgaWYgKHNjaGVkX3NldHNjaGVkdWxlcihwaWQsIHBvbGljeSwgJnBhcmFtKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRQQVJBTQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0cGFyYW1fX2RvY19fLAorInNjaGVkX2dldHBhcmFtKHBpZCkgLT4gc2NoZWRfcGFyYW1cblxuXAorUmV0dXJucyBzY2hlZHVsaW5nIHBhcmFtZXRlcnMgZm9yIHRoZSBwcm9jZXNzIHdpdGggKnBpZCogYXMgYW4gaW5zdGFuY2Ugb2YgdGhlXG5cCitzY2hlZF9wYXJhbSBjbGFzcy4gQSBQSUQgb2YgMCBtZWFucyB0aGUgY2FsbGluZyBwcm9jZXNzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0cGFyYW0oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gcGFyYW07CisgICAgUHlPYmplY3QgKnJlcywgKnByaW9yaXR5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIjpzY2hlZF9nZXRwYXJhbSIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfZ2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmU2NoZWRQYXJhbVR5cGUpOworICAgIGlmICghcmVzKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwcmlvcml0eSA9IFB5TG9uZ19Gcm9tTG9uZyhwYXJhbS5zY2hlZF9wcmlvcml0eSk7CisgICAgaWYgKCFwcmlvcml0eSkgeworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAwLCBwcmlvcml0eSk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldHBhcmFtX19kb2NfXywKKyJzY2hlZF9zZXRwYXJhbShwaWQsIHBhcmFtKVxuXG5cCitTZXQgc2NoZWR1bGluZyBwYXJhbWV0ZXJzIGZvciBhIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCouXG5cCitBIFBJRCBvZiAwIG1lYW5zIHRoZSBjYWxsaW5nIHByb2Nlc3MuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9zZXRwYXJhbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcGlkX3QgcGlkOworICAgIHN0cnVjdCBzY2hlZF9wYXJhbSBwYXJhbTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICJPJjpzY2hlZF9zZXRwYXJhbSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZwaWQsICZjb252ZXJ0X3NjaGVkX3BhcmFtLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfc2V0cGFyYW0ocGlkLCAmcGFyYW0pKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfcnJfZ2V0X2ludGVydmFsX19kb2NfXywKKyJzY2hlZF9ycl9nZXRfaW50ZXJ2YWwocGlkKSAtPiBmbG9hdFxuXG5cCitSZXR1cm4gdGhlIHJvdW5kLXJvYmluIHF1YW50dW0gZm9yIHRoZSBwcm9jZXNzIHdpdGggUElEICpwaWQqIGluIHNlY29uZHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgaW50ZXJ2YWw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgX1B5X1BBUlNFX1BJRCAiOnNjaGVkX3JyX2dldF9pbnRlcnZhbCIsICZwaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2NoZWRfcnJfZ2V0X2ludGVydmFsKHBpZCwgJmludGVydmFsKSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKWludGVydmFsLnR2X3NlYyArIDFlLTkqaW50ZXJ2YWwudHZfbnNlYyk7Cit9CisKKyNlbmRpZgorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfeWllbGRfX2RvY19fLAorInNjaGVkX3lpZWxkKClcblxuXAorVm9sdW50YXJpbHkgcmVsaW5xdWlzaCB0aGUgQ1BVLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfeWllbGQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgaWYgKHNjaGVkX3lpZWxkKCkpCisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaWZkZWYgSEFWRV9TQ0hFRF9TRVRBRkZJTklUWQorCisvKiBUaGUgbWluaW11bSBudW1iZXIgb2YgQ1BVcyBhbGxvY2F0ZWQgaW4gYSBjcHVfc2V0X3QgKi8KK3N0YXRpYyBjb25zdCBpbnQgTkNQVVNfU1RBUlQgPSBzaXplb2YodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVDsKKworUHlEb2NfU1RSVkFSKHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfXywKKyJzY2hlZF9zZXRhZmZpbml0eShwaWQsIGNwdV9zZXQpXG5cblwKK1NldCB0aGUgYWZmaW5pdHkgb2YgdGhlIHByb2Nlc3Mgd2l0aCBQSUQgKnBpZCogdG8gKmNwdV9zZXQqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfc2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgbmNwdXM7CisgICAgc2l6ZV90IHNldHNpemU7CisgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKKyAgICBQeU9iamVjdCAqaXRlcmFibGUsICppdGVyYXRvciA9IE5VTEwsICppdGVtOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIF9QeV9QQVJTRV9QSUQgIk86c2NoZWRfc2V0YWZmaW5pdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkLCAmaXRlcmFibGUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmNwdXMgPSBOQ1BVU19TVEFSVDsKKyAgICBzZXRzaXplID0gQ1BVX0FMTE9DX1NJWkUobmNwdXMpOworICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOworICAgIGlmIChtYXNrID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgQ1BVX1pFUk9fUyhzZXRzaXplLCBtYXNrKTsKKworICAgIHdoaWxlICgoaXRlbSA9IFB5SXRlcl9OZXh0KGl0ZXJhdG9yKSkpIHsKKyAgICAgICAgbG9uZyBjcHU7CisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKGl0ZW0pKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIGl0ZXJhdG9yIG9mIGludHMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJidXQgaXRlcmF0b3IgeWllbGRlZCAlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGl0ZW0pKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgY3B1ID0gUHlMb25nX0FzTG9uZyhpdGVtKTsKKyAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICBpZiAoY3B1IDwgMCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgQ1BVIG51bWJlciIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3B1ID4gSU5UX01BWCAtIDEpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiQ1BVIG51bWJlciB0b28gbGFyZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNwdSA+PSBuY3B1cykgeworICAgICAgICAgICAgLyogR3JvdyBDUFUgbWFzayB0byBmaXQgdGhlIENQVSBudW1iZXIgKi8KKyAgICAgICAgICAgIGludCBuZXduY3B1cyA9IG5jcHVzOworICAgICAgICAgICAgY3B1X3NldF90ICpuZXdtYXNrOworICAgICAgICAgICAgc2l6ZV90IG5ld3NldHNpemU7CisgICAgICAgICAgICB3aGlsZSAobmV3bmNwdXMgPD0gY3B1KSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld25jcHVzID4gSU5UX01BWCAvIDIpCisgICAgICAgICAgICAgICAgICAgIG5ld25jcHVzID0gY3B1ICsgMTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld25jcHVzID0gbmV3bmNwdXMgKiAyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3bWFzayA9IENQVV9BTExPQyhuZXduY3B1cyk7CisgICAgICAgICAgICBpZiAobmV3bWFzayA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3c2V0c2l6ZSA9IENQVV9BTExPQ19TSVpFKG5ld25jcHVzKTsKKyAgICAgICAgICAgIENQVV9aRVJPX1MobmV3c2V0c2l6ZSwgbmV3bWFzayk7CisgICAgICAgICAgICBtZW1jcHkobmV3bWFzaywgbWFzaywgc2V0c2l6ZSk7CisgICAgICAgICAgICBDUFVfRlJFRShtYXNrKTsKKyAgICAgICAgICAgIHNldHNpemUgPSBuZXdzZXRzaXplOworICAgICAgICAgICAgbWFzayA9IG5ld21hc2s7CisgICAgICAgICAgICBuY3B1cyA9IG5ld25jcHVzOworICAgICAgICB9CisgICAgICAgIENQVV9TRVRfUyhjcHUsIHNldHNpemUsIG1hc2spOworICAgIH0KKyAgICBQeV9DTEVBUihpdGVyYXRvcik7CisKKyAgICBpZiAoc2NoZWRfc2V0YWZmaW5pdHkocGlkLCBzZXRzaXplLCBtYXNrKSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBDUFVfRlJFRShtYXNrKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKKworZXJyb3I6CisgICAgaWYgKG1hc2spCisgICAgICAgIENQVV9GUkVFKG1hc2spOworICAgIFB5X1hERUNSRUYoaXRlcmF0b3IpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHlfX2RvY19fLAorInNjaGVkX2dldGFmZmluaXR5KHBpZCwgbmNwdXMpIC0+IGNwdV9zZXRcblxuXAorUmV0dXJuIHRoZSBhZmZpbml0eSBvZiB0aGUgcHJvY2VzcyB3aXRoIFBJRCAqcGlkKi5cblwKK1RoZSByZXR1cm5lZCBjcHVfc2V0IHdpbGwgYmUgb2Ygc2l6ZSAqbmNwdXMqLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfc2NoZWRfZ2V0YWZmaW5pdHkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHBpZF90IHBpZDsKKyAgICBpbnQgY3B1LCBuY3B1cywgY291bnQ7CisgICAgc2l6ZV90IHNldHNpemU7CisgICAgY3B1X3NldF90ICptYXNrID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBfUHlfUEFSU0VfUElEICI6c2NoZWRfZ2V0YWZmaW5pdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuY3B1cyA9IE5DUFVTX1NUQVJUOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIHNldHNpemUgPSBDUFVfQUxMT0NfU0laRShuY3B1cyk7CisgICAgICAgIG1hc2sgPSBDUFVfQUxMT0MobmNwdXMpOworICAgICAgICBpZiAobWFzayA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGlmIChzY2hlZF9nZXRhZmZpbml0eShwaWQsIHNldHNpemUsIG1hc2spID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgICAgIGlmIChlcnJubyAhPSBFSU5WQUwpCisgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgaWYgKG5jcHVzID4gSU5UX01BWCAvIDIpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiY291bGQgbm90IGFsbG9jYXRlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSBsYXJnZSBlbm91Z2ggQ1BVIHNldCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmNwdXMgPSBuY3B1cyAqIDI7CisgICAgfQorCisgICAgcmVzID0gUHlTZXRfTmV3KE5VTEwpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBmb3IgKGNwdSA9IDAsIGNvdW50ID0gQ1BVX0NPVU5UX1Moc2V0c2l6ZSwgbWFzayk7IGNvdW50OyBjcHUrKykgeworICAgICAgICBpZiAoQ1BVX0lTU0VUX1MoY3B1LCBzZXRzaXplLCBtYXNrKSkgeworICAgICAgICAgICAgUHlPYmplY3QgKmNwdV9udW0gPSBQeUxvbmdfRnJvbUxvbmcoY3B1KTsKKyAgICAgICAgICAgIC0tY291bnQ7CisgICAgICAgICAgICBpZiAoY3B1X251bSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHJlcywgY3B1X251bSkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3B1X251bSk7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihjcHVfbnVtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDUFVfRlJFRShtYXNrKTsKKyAgICByZXR1cm4gcmVzOworCitlcnJvcjoKKyAgICBpZiAobWFzaykKKyAgICAgICAgQ1BVX0ZSRUUobWFzayk7CisgICAgUHlfWERFQ1JFRihyZXMpOworICAgIHJldHVybiBOVUxMOworfQorCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9TRVRBRkZJTklUWSAqLworCisjZW5kaWYgLyogSEFWRV9TQ0hFRF9IICovCisKIC8qIEFJWCB1c2VzIC9kZXYvcHRjIGJ1dCBpcyBvdGhlcndpc2UgdGhlIHNhbWUgYXMgL2Rldi9wdG14ICovCiAvKiBJUklYIGhhcyBib3RoIC9kZXYvcHRjIGFuZCAvZGV2L3B0bXgsIHVzZSBwdG14ICovCiAjaWYgZGVmaW5lZChIQVZFX0RFVl9QVEMpICYmICFkZWZpbmVkKEhBVkVfREVWX1BUTVgpCkBAIC00Mjc5LDYgKzYwMTYsNyBAQAogfQogI2VuZGlmCiAKKwogI2lmZGVmIEhBVkVfR0VURUdJRAogUHlEb2NfU1RSVkFSKHBvc2l4X2dldGVnaWRfX2RvY19fLAogImdldGVnaWQoKSAtPiBlZ2lkXG5cblwKQEAgLTQzMjgsNiArNjA2Niw3MCBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVBpZChnZXRwaWQoKSk7CiB9CiAKKyNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAorUHlEb2NfU1RSVkFSKHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX18sCisiZ2V0Z3JvdXBsaXN0KHVzZXIsIGdyb3VwKSAtPiBsaXN0IG9mIGdyb3VwcyB0byB3aGljaCBhIHVzZXIgYmVsb25nc1xuXG5cCitSZXR1cm5zIGEgbGlzdCBvZiBncm91cHMgdG8gd2hpY2ggYSB1c2VyIGJlbG9uZ3MuXG5cblwKKyAgICB1c2VyOiB1c2VybmFtZSB0byBsb29rdXBcblwKKyAgICBncm91cDogYmFzZSBncm91cCBpZCBvZiB0aGUgdXNlciIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfZ2V0Z3JvdXBsaXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyNpZmRlZiBOR1JPVVBTX01BWAorI2RlZmluZSBNQVhfR1JPVVBTIE5HUk9VUFNfTUFYCisjZWxzZQorICAgIC8qIGRlZmluZWQgdG8gYmUgMTYgb24gU29sYXJpczcsIHNvIHRoaXMgc2hvdWxkIGJlIGEgc21hbGwgbnVtYmVyICovCisjZGVmaW5lIE1BWF9HUk9VUFMgNjQKKyNlbmRpZgorCisgICAgY29uc3QgY2hhciAqdXNlcjsKKyAgICBpbnQgaSwgbmdyb3VwczsKKyAgICBQeU9iamVjdCAqbGlzdDsKKyNpZmRlZiBfX0FQUExFX18KKyAgICBpbnQgKmdyb3VwcywgYmFzZWdpZDsKKyNlbHNlCisgICAgZ2lkX3QgKmdyb3VwcywgYmFzZWdpZDsKKyNlbmRpZgorICAgIG5ncm91cHMgPSBNQVhfR1JPVVBTOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaSIsICZ1c2VyLCAmYmFzZWdpZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgX19BUFBMRV9fCisgICAgZ3JvdXBzID0gUHlNZW1fTWFsbG9jKG5ncm91cHMgKiBzaXplb2YoaW50KSk7CisjZWxzZQorICAgIGdyb3VwcyA9IFB5TWVtX01hbGxvYyhuZ3JvdXBzICogc2l6ZW9mKGdpZF90KSk7CisjZW5kaWYKKyAgICBpZiAoZ3JvdXBzID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworCisgICAgaWYgKGdldGdyb3VwbGlzdCh1c2VyLCBiYXNlZ2lkLCBncm91cHMsICZuZ3JvdXBzKSA9PSAtMSkgeworICAgICAgICBQeU1lbV9EZWwoZ3JvdXBzKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorCisgICAgbGlzdCA9IFB5TGlzdF9OZXcobmdyb3Vwcyk7CisgICAgaWYgKGxpc3QgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9EZWwoZ3JvdXBzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5ncm91cHM7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqbyA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCh1bnNpZ25lZCBsb25nKWdyb3Vwc1tpXSk7CisgICAgICAgIGlmIChvID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgICAgIFB5TWVtX0RlbChncm91cHMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIG8pOworICAgIH0KKworICAgIFB5TWVtX0RlbChncm91cHMpOworCisgICAgcmV0dXJuIGxpc3Q7Cit9CisjZW5kaWYKIAogI2lmZGVmIEhBVkVfR0VUR1JPVVBTCiBQeURvY19TVFJWQVIocG9zaXhfZ2V0Z3JvdXBzX19kb2NfXywKQEAgLTQ1NjUsNyArNjM2Nyw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHdjaGFyX3QgdXNlcl9uYW1lW1VOTEVOICsgMV07Ci0gICAgRFdPUkQgbnVtX2NoYXJzID0gc2l6ZW9mKHVzZXJfbmFtZSkvc2l6ZW9mKHVzZXJfbmFtZVswXSk7CisgICAgRFdPUkQgbnVtX2NoYXJzID0gUHlfQVJSQVlfTEVOR1RIKHVzZXJfbmFtZSk7CiAKICAgICBpZiAoR2V0VXNlck5hbWVXKHVzZXJfbmFtZSwgJm51bV9jaGFycykpIHsKICAgICAgICAgLyogbnVtX2NoYXJzIGlzIHRoZSBudW1iZXIgb2YgdW5pY29kZSBjaGFycyBwbHVzIG51bGwgdGVybWluYXRvciAqLwpAQCAtNDk2NSw2ICs2NzY3LDcgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHN0YXRpYyBQeU9iamVjdCAqc3RydWN0X3J1c2FnZTsKKyAgICBfUHlfSURFTlRJRklFUihzdHJ1Y3RfcnVzYWdlKTsKIAogICAgIGlmIChwaWQgPT0gLTEpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwpAQCAtNDk3Myw3ICs2Nzc2LDcgQEAKICAgICAgICAgUHlPYmplY3QgKm0gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJyZXNvdXJjZSIpOwogICAgICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHN0cnVjdF9ydXNhZ2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG0sICJzdHJ1Y3RfcnVzYWdlIik7CisgICAgICAgIHN0cnVjdF9ydXNhZ2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKG0sICZQeUlkX3N0cnVjdF9ydXNhZ2UpOwogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIGlmIChzdHJ1Y3RfcnVzYWdlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUwNjksNiArNjg3Miw1NSBAQAogfQogI2VuZGlmIC8qIEhBVkVfV0FJVDQgKi8KIAorI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKK1B5RG9jX1NUUlZBUihwb3NpeF93YWl0aWRfX2RvY19fLAorIndhaXRpZChpZHR5cGUsIGlkLCBvcHRpb25zKSAtPiB3YWl0aWRfcmVzdWx0XG5cblwKK1dhaXQgZm9yIHRoZSBjb21wbGV0aW9uIG9mIG9uZSBvciBtb3JlIGNoaWxkIHByb2Nlc3Nlcy5cblxuXAoraWR0eXBlIGNhbiBiZSBQX1BJRCwgUF9QR0lEIG9yIFBfQUxMLlxuXAoraWQgc3BlY2lmaWVzIHRoZSBwaWQgdG8gd2FpdCBvbi5cblwKK29wdGlvbnMgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgT1Jpbmcgb2Ygb25lIG9yIG1vcmUgb2YgV0VYSVRFRCwgV1NUT1BQRURcblwKK29yIFdDT05USU5VRUQgYW5kIGFkZGl0aW9uYWxseSBtYXkgYmUgT1JlZCB3aXRoIFdOT0hBTkcgb3IgV05PV0FJVC5cblwKK1JldHVybnMgZWl0aGVyIHdhaXRpZF9yZXN1bHQgb3IgTm9uZSBpZiBXTk9IQU5HIGlzIHNwZWNpZmllZCBhbmQgdGhlcmUgYXJlXG5cCitubyBjaGlsZHJlbiBpbiBhIHdhaXRhYmxlIHN0YXRlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfd2FpdGlkKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGlkdHlwZV90IGlkdHlwZTsKKyAgICBpZF90IGlkOworICAgIGludCBvcHRpb25zLCByZXM7CisgICAgc2lnaW5mb190IHNpOworICAgIHNpLnNpX3BpZCA9IDA7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiBfUHlfUEFSU0VfUElEICJpOndhaXRpZCIsICZpZHR5cGUsICZpZCwgJm9wdGlvbnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzID0gd2FpdGlkKGlkdHlwZSwgaWQsICZzaSwgb3B0aW9ucyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIGlmIChzaS5zaV9waWQgPT0gMCkKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisKKyAgICByZXN1bHQgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmV2FpdGlkUmVzdWx0VHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDAsIFB5TG9uZ19Gcm9tUGlkKHNpLnNpX3BpZCkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAxLCBQeUxvbmdfRnJvbVBpZChzaS5zaV91aWQpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMiwgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9zaWdubykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMywgUHlMb25nX0Zyb21Mb25nKChsb25nKShzaS5zaV9zdGF0dXMpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDQsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2kuc2lfY29kZSkpKTsKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9XQUlUUElECiBQeURvY19TVFJWQVIocG9zaXhfd2FpdHBpZF9fZG9jX18sCiAid2FpdHBpZChwaWQsIG9wdGlvbnMpIC0+IChwaWQsIHN0YXR1cylcblxuXApAQCAtNTE0MiwxMDYgKzY5OTQsMjI2IEBACiAjZW5kaWYKIAogCi1QeURvY19TVFJWQVIocG9zaXhfbHN0YXRfX2RvY19fLAotImxzdGF0KHBhdGgpIC0+IHN0YXQgcmVzdWx0XG5cblwKLUxpa2Ugc3RhdChwYXRoKSwgYnV0IGRvIG5vdCBmb2xsb3cgc3ltYm9saWMgbGlua3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9sc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0jaWZkZWYgSEFWRV9MU1RBVAotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIGxzdGF0LCBOVUxMLCBOVUxMKTsKLSNlbHNlIC8qICFIQVZFX0xTVEFUICovCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIHdpbjMyX2xzdGF0LCAiVTpsc3RhdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgd2luMzJfbHN0YXRfdyk7Ci0jZWxzZQotICAgIHJldHVybiBwb3NpeF9kb19zdGF0KHNlbGYsIGFyZ3MsICJPJjpsc3RhdCIsIFNUQVQsIE5VTEwsIE5VTEwpOworI2lmIGRlZmluZWQoSEFWRV9SRUFETElOSykgfHwgZGVmaW5lZChNU19XSU5ET1dTKQorUHlEb2NfU1RSVkFSKHJlYWRsaW5rX19kb2NfXywKKyJyZWFkbGluayhwYXRoLCAqLCBkaXJfZmQ9Tm9uZSkgLT4gcGF0aFxuXG5cCitSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKICNlbmRpZgotI2VuZGlmIC8qICFIQVZFX0xTVEFUICovCi19Ci0KIAogI2lmZGVmIEhBVkVfUkVBRExJTksKLVB5RG9jX1NUUlZBUihwb3NpeF9yZWFkbGlua19fZG9jX18sCi0icmVhZGxpbmsocGF0aCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3JlYWRsaW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCogdjsKLSAgICBjaGFyIGJ1ZltNQVhQQVRITEVOXTsKLSAgICBQeU9iamVjdCAqb3BhdGg7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBpbnQgbjsKLSAgICBpbnQgYXJnX2lzX3VuaWNvZGUgPSAwOworICAgIHBhdGhfdCBwYXRoOworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVOXTsKKyAgICBzc2l6ZV90IGxlbmd0aDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJkaXJfZmQiLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6cmVhZGxpbmsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCkpCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mfCRPJjpyZWFkbGluayIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisjaWZkZWYgSEFWRV9SRUFETElOS0FUCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9wYXRoKTsKLSAgICB2ID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGFyZ3MsIDApOwotICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBhcmdfaXNfdW5pY29kZSA9IDE7Ci0gICAgfQotICAgIFB5X0RFQ1JFRih2KTsKIAogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICBuID0gcmVhZGxpbmsocGF0aCwgYnVmLCAoaW50KSBzaXplb2YgYnVmKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChuIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yX3dpdGhfYWxsb2NhdGVkX2ZpbGVuYW1lKG9wYXRoKTsKLQotICAgIFB5X0RFQ1JFRihvcGF0aCk7Ci0gICAgaWYgKGFyZ19pc191bmljb2RlKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoYnVmLCBuKTsKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICBsZW5ndGggPSByZWFkbGlua2F0KGRpcl9mZCwgcGF0aC5uYXJyb3csIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBuKTsKKyNlbmRpZgorICAgICAgICBsZW5ndGggPSByZWFkbGluayhwYXRoLm5hcnJvdywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfcG9zaXhfZXJyb3IoInJlYWRsaW5rIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhwYXRoLm9iamVjdCkpCisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKGJ1ZmZlciwgbGVuZ3RoKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybl92YWx1ZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmZmVyLCBsZW5ndGgpOworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CisKKwogI2VuZGlmIC8qIEhBVkVfUkVBRExJTksgKi8KIAogCi0jaWYgZGVmaW5lZChIQVZFX1NZTUxJTkspICYmICFkZWZpbmVkKE1TX1dJTkRPV1MpCisjaWZkZWYgSEFWRV9TWU1MSU5LCiBQeURvY19TVFJWQVIocG9zaXhfc3ltbGlua19fZG9jX18sCi0ic3ltbGluayhzcmMsIGRzdClcblxuXAotQ3JlYXRlIGEgc3ltYm9saWMgbGluayBwb2ludGluZyB0byBzcmMgbmFtZWQgZHN0LiIpOworInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UsICosIGRpcl9mZD1Ob25lKVxuXG5cCitDcmVhdGUgYSBzeW1ib2xpYyBsaW5rIHBvaW50aW5nIHRvIHNyYyBuYW1lZCBkc3QuXG5cblwKK3RhcmdldF9pc19kaXJlY3RvcnkgaXMgcmVxdWlyZWQgb24gV2luZG93cyBpZiB0aGUgdGFyZ2V0IGlzIHRvIGJlXG5cCisgIGludGVycHJldGVkIGFzIGEgZGlyZWN0b3J5LiAgKE9uIFdpbmRvd3MsIHN5bWxpbmsgcmVxdWlyZXNcblwKKyAgV2luZG93cyA2LjAgb3IgZ3JlYXRlciwgYW5kIHJhaXNlcyBhIE5vdEltcGxlbWVudGVkRXJyb3Igb3RoZXJ3aXNlLilcblwKKyAgdGFyZ2V0X2lzX2RpcmVjdG9yeSBpcyBpZ25vcmVkIG9uIG5vbi1XaW5kb3dzIHBsYXRmb3Jtcy5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworLyogR3JhYiBDcmVhdGVTeW1ib2xpY0xpbmtXIGR5bmFtaWNhbGx5IGZyb20ga2VybmVsMzIgKi8KK3N0YXRpYyBEV09SRCAoQ0FMTEJBQ0sgKlB5X0NyZWF0ZVN5bWJvbGljTGlua1cpKExQV1NUUiwgTFBXU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIERXT1JEIChDQUxMQkFDSyAqUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSkoTFBTVFIsIExQU1RSLCBEV09SRCkgPSBOVUxMOworc3RhdGljIGludAorY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rKCkKK3sKKyAgICBISU5TVEFOQ0UgaEtlcm5lbDMyOworICAgIC8qIG9ubHkgcmVjaGVjayAqLworICAgIGlmIChQeV9DcmVhdGVTeW1ib2xpY0xpbmtXICYmIFB5X0NyZWF0ZVN5bWJvbGljTGlua0EpCisgICAgICAgIHJldHVybiAxOworICAgIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZVcoTCJLRVJORUwzMiIpOworICAgICooRkFSUFJPQyopJlB5X0NyZWF0ZVN5bWJvbGljTGlua1cgPSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDcmVhdGVTeW1ib2xpY0xpbmtXIik7CisgICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua0EiKTsKKyAgICByZXR1cm4gKFB5X0NyZWF0ZVN5bWJvbGljTGlua1cgJiYgUHlfQ3JlYXRlU3ltYm9saWNMaW5rQSk7Cit9CisKKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3ltbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICByZXR1cm4gcG9zaXhfMnN0cihhcmdzLCAiTyZPJjpzeW1saW5rIiwgc3ltbGluayk7CisgICAgcGF0aF90IHNyYzsKKyAgICBwYXRoX3QgZHN0OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InNyYyIsICJkc3QiLCAidGFyZ2V0X2lzX2RpcmVjdG9yeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcl9mZCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWU7CisjaWZkZWYgTVNfV0lORE9XUworICAgIERXT1JEIHJlc3VsdDsKKyNlbHNlCisgICAgaW50IHJlc3VsdDsKKyNlbmRpZgorCisgICAgbWVtc2V0KCZzcmMsIDAsIHNpemVvZihzcmMpKTsKKyAgICBzcmMuYXJndW1lbnRfbmFtZSA9ICJzcmMiOworICAgIG1lbXNldCgmZHN0LCAwLCBzaXplb2YoZHN0KSk7CisgICAgZHN0LmFyZ3VtZW50X25hbWUgPSAiZHN0IjsKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoIWNoZWNrX0NyZWF0ZVN5bWJvbGljTGluaygpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGluayBmdW5jdGlvbnMgbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICBpZiAoIXdpbjMyX2Nhbl9zeW1saW5rKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic3ltYm9saWMgbGluayBwcml2aWxlZ2Ugbm90IGhlbGQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mfGkkTyY6c3ltbGluayIsCisgICAgICAgICAgICBrZXl3b3JkcywKKyAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmc3JjLAorICAgICAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZkc3QsCisgICAgICAgICAgICAmdGFyZ2V0X2lzX2RpcmVjdG9yeSwKKyNpZmRlZiBIQVZFX1NZTUxJTktBVAorICAgICAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICgoc3JjLm5hcnJvdyAmJiBkc3Qud2lkZSkgfHwgKHNyYy53aWRlICYmIGRzdC5uYXJyb3cpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInN5bWxpbms6IHNyYyBhbmQgZHN0IG11c3QgYmUgdGhlIHNhbWUgdHlwZSIpOworICAgICAgICByZXR1cm5fdmFsdWUgPSBOVUxMOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZHN0LndpZGUpCisgICAgICAgIHJlc3VsdCA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coZHN0LndpZGUsIHNyYy53aWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUHlfQ3JlYXRlU3ltYm9saWNMaW5rQShkc3QubmFycm93LCBzcmMubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pc19kaXJlY3RvcnkpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSB3aW4zMl9lcnJvcl9vYmplY3QoInN5bWxpbmsiLCBzcmMub2JqZWN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworI2Vsc2UKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZiBIQVZFX1NZTUxJTktBVAorICAgIGlmIChkaXJfZmQgIT0gREVGQVVMVF9ESVJfRkQpCisgICAgICAgIHJlc3VsdCA9IHN5bWxpbmthdChzcmMubmFycm93LCBkaXJfZmQsIGRzdC5uYXJyb3cpOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBzeW1saW5rKHNyYy5uYXJyb3csIGRzdC5uYXJyb3cpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoInN5bWxpbmsiLCAmZHN0KTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgZ290byBleGl0OyAvKiBzaWxlbmNlICJ1bnVzZWQgbGFiZWwiIHdhcm5pbmcgKi8KK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZzcmMpOworICAgIHBhdGhfY2xlYW51cCgmZHN0KTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQorCiAjZW5kaWYgLyogSEFWRV9TWU1MSU5LICovCiAKKwogI2lmICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykKIAotUHlEb2NfU1RSVkFSKHdpbl9yZWFkbGlua19fZG9jX18sCi0icmVhZGxpbmsocGF0aCkgLT4gcGF0aFxuXG5cCi1SZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXRoIHRvIHdoaWNoIHRoZSBzeW1ib2xpYyBsaW5rIHBvaW50cy4iKTsKLQotLyogV2luZG93cyByZWFkbGluayBpbXBsZW1lbnRhdGlvbiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXdpbl9yZWFkbGluayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit3aW5fcmVhZGxpbmsoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewogICAgIHdjaGFyX3QgKnBhdGg7CiAgICAgRFdPUkQgbl9ieXRlc19yZXR1cm5lZDsKICAgICBEV09SRCBpb19yZXN1bHQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcG8sICpyZXN1bHQ7CisgICAgICAgIGludCBkaXJfZmQ7CiAgICAgSEFORExFIHJlcGFyc2VfcG9pbnRfaGFuZGxlOwogCiAgICAgY2hhciB0YXJnZXRfYnVmZmVyW01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFXTsKICAgICBSRVBBUlNFX0RBVEFfQlVGRkVSICpyZGIgPSAoUkVQQVJTRV9EQVRBX0JVRkZFUiAqKXRhcmdldF9idWZmZXI7CiAgICAgd2NoYXJfdCAqcHJpbnRfbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLAotICAgICAgICAgICAgICAgICAgInU6cmVhZGxpbmsiLAotICAgICAgICAgICAgICAgICAgJnBhdGgpKQorICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImRpcl9mZCIsIE5VTEx9OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiVXwkTyY6cmVhZGxpbmsiLCBrZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnBvLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwbyk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBGaXJzdCBnZXQgYSBoYW5kbGUgdG8gdGhlIHJlcGFyc2UgcG9pbnQgKi8KQEAgLTUyNTcsOSArNzIyOSw3IEBACiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAogICAgIGlmIChyZXBhcnNlX3BvaW50X2hhbmRsZT09SU5WQUxJRF9IQU5ETEVfVkFMVUUpCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgicmVhZGxpbmsiLCBwYXRoKTsKLSAgICB9CisgICAgICAgIHJldHVybiB3aW4zMl9lcnJvcl9vYmplY3QoInJlYWRsaW5rIiwgcG8pOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIC8qIE5ldyBjYWxsIERldmljZUlvQ29udHJvbCB0byByZWFkIHRoZSByZXBhcnNlIHBvaW50ICovCkBAIC01Mjc1LDkgKzcyNDUsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAoaW9fcmVzdWx0PT0wKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yX3VuaWNvZGUoInJlYWRsaW5rIiwgcGF0aCk7Ci0gICAgfQorICAgICAgICByZXR1cm4gd2luMzJfZXJyb3Jfb2JqZWN0KCJyZWFkbGluayIsIHBvKTsKIAogICAgIGlmIChyZGItPlJlcGFyc2VUYWcgIT0gSU9fUkVQQVJTRV9UQUdfU1lNTElOSykKICAgICB7CkBAIC01Mjk1LDgwICs3MjYzLDc2IEBACiAKICNlbmRpZiAvKiAhZGVmaW5lZChIQVZFX1JFQURMSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQogCi0vKiBHcmFiIENyZWF0ZVN5bWJvbGljTGlua1cgZHluYW1pY2FsbHkgZnJvbSBrZXJuZWwzMiAqLwotc3RhdGljIGludCBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IDA7Ci1zdGF0aWMgRFdPUkQgKENBTExCQUNLICpQeV9DcmVhdGVTeW1ib2xpY0xpbmtXKShMUFdTVFIsIExQV1NUUiwgRFdPUkQpOwotc3RhdGljIGludAotY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rVygpCi17Ci0gICAgSElOU1RBTkNFIGhLZXJuZWwzMjsKLSAgICAvKiBvbmx5IHJlY2hlY2sgKi8KLSAgICBpZiAoaGFzX0NyZWF0ZVN5bWJvbGljTGlua1cpCi0gICAgICAgIHJldHVybiBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVzsKLSAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyIik7Ci0gICAgKihGQVJQUk9DKikmUHlfQ3JlYXRlU3ltYm9saWNMaW5rVyA9IEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVN5bWJvbGljTGlua1ciKTsKLSAgICBpZiAoUHlfQ3JlYXRlU3ltYm9saWNMaW5rVykKLSAgICAgICAgaGFzX0NyZWF0ZVN5bWJvbGljTGlua1cgPSAxOwotICAgIHJldHVybiBoYXNfQ3JlYXRlU3ltYm9saWNMaW5rVzsKLX0KK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRpbWVzX3Jlc3VsdF9maWVsZHNbXSA9IHsKKyAgICB7InVzZXIiLCAgICAidXNlciB0aW1lIn0sCisgICAgeyJzeXN0ZW0iLCAgICJzeXN0ZW0gdGltZSJ9LAorICAgIHsiY2hpbGRyZW5fdXNlciIsICAgICJ1c2VyIHRpbWUgb2YgY2hpbGRyZW4ifSwKKyAgICB7ImNoaWxkcmVuX3N5c3RlbSIsICAgICJzeXN0ZW0gdGltZSBvZiBjaGlsZHJlbiJ9LAorICAgIHsiZWxhcHNlZCIsICAgICJlbGFwc2VkIHRpbWUgc2luY2UgYW4gYXJiaXRyYXJ5IHBvaW50IGluIHRoZSBwYXN0In0sCisgICAge05VTEx9Cit9OwogCi1QeURvY19TVFJWQVIod2luX3N5bWxpbmtfX2RvY19fLAotInN5bWxpbmsoc3JjLCBkc3QsIHRhcmdldF9pc19kaXJlY3Rvcnk9RmFsc2UpXG5cblwKLUNyZWF0ZSBhIHN5bWJvbGljIGxpbmsgcG9pbnRpbmcgdG8gc3JjIG5hbWVkIGRzdC5cblwKLXRhcmdldF9pc19kaXJlY3RvcnkgaXMgcmVxdWlyZWQgaWYgdGhlIHRhcmdldCBpcyB0byBiZSBpbnRlcnByZXRlZCBhc1xuXAotYSBkaXJlY3RvcnkuXG5cCi1UaGlzIGZ1bmN0aW9uIHJlcXVpcmVzIFdpbmRvd3MgNi4wIG9yIGdyZWF0ZXIsIGFuZCByYWlzZXMgYVxuXAotTm90SW1wbGVtZW50ZWRFcnJvciBvdGhlcndpc2UuIik7CitQeURvY19TVFJWQVIodGltZXNfcmVzdWx0X19kb2NfXywKKyJ0aW1lc19yZXN1bHQ6IFJlc3VsdCBmcm9tIG9zLnRpbWVzKCkuXG5cblwKK1RoaXMgb2JqZWN0IG1heSBiZSBhY2Nlc3NlZCBlaXRoZXIgYXMgYSB0dXBsZSBvZlxuXAorICAodXNlciwgc3lzdGVtLCBjaGlsZHJlbl91c2VyLCBjaGlsZHJlbl9zeXN0ZW0sIGVsYXBzZWQpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHVzZXIsIHN5c3RlbSwgY2hpbGRyZW5fdXNlciwgY2hpbGRyZW5fc3lzdGVtLFxuXAorYW5kIGVsYXBzZWQuXG5cCitcblwKK1NlZSBvcy50aW1lcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iKTsKIAotc3RhdGljIFB5T2JqZWN0ICoKLXdpbl9zeW1saW5rKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNyYyIsICJkZXN0IiwgInRhcmdldF9pc19kaXJlY3RvcnkiLCBOVUxMfTsKLSAgICBQeU9iamVjdCAqc3JjLCAqZGVzdDsKLSAgICBpbnQgdGFyZ2V0X2lzX2RpcmVjdG9yeSA9IDA7Ci0gICAgRFdPUkQgcmVzOworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyB0aW1lc19yZXN1bHRfZGVzYyA9IHsKKyAgICAidGltZXNfcmVzdWx0IiwgLyogbmFtZSAqLworICAgIHRpbWVzX3Jlc3VsdF9fZG9jX18sIC8qIGRvYyAqLworICAgIHRpbWVzX3Jlc3VsdF9maWVsZHMsCisgICAgNQorfTsKIAotICAgIGlmICghY2hlY2tfQ3JlYXRlU3ltYm9saWNMaW5rVygpKQotICAgIHsKLSAgICAgICAgLyogcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciAqLwotICAgICAgICByZXR1cm4gUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAiQ3JlYXRlU3ltYm9saWNMaW5rVyBub3QgZm91bmQiKTsKLSAgICB9Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098aTpzeW1saW5rIiwKLSAgICAgICAga3dsaXN0LCAmc3JjLCAmZGVzdCwgJnRhcmdldF9pc19kaXJlY3RvcnkpKQotICAgICAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeVR5cGVPYmplY3QgVGltZXNSZXN1bHRUeXBlOwogCi0gICAgaWYgKHdpbjMyX2Nhbl9zeW1saW5rID09IDApCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfT1NFcnJvciwgInN5bWJvbGljIGxpbmsgcHJpdmlsZWdlIG5vdCBoZWxkIik7Ci0KLSAgICBpZiAoIWNvbnZlcnRfdG9fdW5pY29kZSgmc3JjKSkgeyByZXR1cm4gTlVMTDsgfQotICAgIGlmICghY29udmVydF90b191bmljb2RlKCZkZXN0KSkgewotICAgICAgICBQeV9ERUNSRUYoc3JjKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlcyA9IFB5X0NyZWF0ZVN5bWJvbGljTGlua1coCi0gICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUoZGVzdCksCi0gICAgICAgIFB5VW5pY29kZV9Bc1VuaWNvZGUoc3JjKSwKLSAgICAgICAgdGFyZ2V0X2lzX2RpcmVjdG9yeSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICBQeV9ERUNSRUYoc3JjKTsKLSAgICBQeV9ERUNSRUYoZGVzdCk7Ci0gICAgaWYgKCFyZXMpCi0gICAgewotICAgICAgICByZXR1cm4gd2luMzJfZXJyb3JfdW5pY29kZSgic3ltbGluayIsIFB5VW5pY29kZV9Bc1VuaWNvZGUoc3JjKSk7Ci0gICAgfQotCi0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisjaWZkZWYgTVNfV0lORE9XUworI2RlZmluZSBIQVZFX1RJTUVTICAvKiBtYW5kYXRvcnksIGZvciB0aGUgbWV0aG9kIHRhYmxlICovCisjZW5kaWYKIAogI2lmZGVmIEhBVkVfVElNRVMKKworc3RhdGljIFB5T2JqZWN0ICoKK2J1aWxkX3RpbWVzX3Jlc3VsdChkb3VibGUgdXNlciwgZG91YmxlIHN5c3RlbSwKKyAgICBkb3VibGUgY2hpbGRyZW5fdXNlciwgZG91YmxlIGNoaWxkcmVuX3N5c3RlbSwKKyAgICBkb3VibGUgZWxhcHNlZCkKK3sKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGltZXNSZXN1bHRUeXBlKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNkZWZpbmUgU0VUKGksIGZpZWxkKSBcCisgICAgeyBcCisgICAgUHlPYmplY3QgKm8gPSBQeUZsb2F0X0Zyb21Eb3VibGUoZmllbGQpOyBcCisgICAgaWYgKCFvKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsgXAorICAgICAgICByZXR1cm4gTlVMTDsgXAorICAgIH0gXAorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odmFsdWUsIGksIG8pOyBcCisgICAgfSBcCisKKyAgICBTRVQoMCwgdXNlcik7CisgICAgU0VUKDEsIHN5c3RlbSk7CisgICAgU0VUKDIsIGNoaWxkcmVuX3VzZXIpOworICAgIFNFVCgzLCBjaGlsZHJlbl9zeXN0ZW0pOworICAgIFNFVCg0LCBlbGFwc2VkKTsKKworI3VuZGVmIFNFVAorCisgICAgcmV0dXJuIHZhbHVlOworfQorCitQeURvY19TVFJWQVIocG9zaXhfdGltZXNfX2RvY19fLAorInRpbWVzKCkgLT4gdGltZXNfcmVzdWx0XG5cblwKK1JldHVybiBhbiBvYmplY3QgY29udGFpbmluZyBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluZGljYXRpbmcgcHJvY2Vzc1xuXAordGltZXMuICBUaGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIG5hbWVkIHR1cGxlIHdpdGggdGhlc2UgZmllbGRzOlxuXAorICAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKSIpOworCiAjaWYgZGVmaW5lZChQWUNDX1ZBQ1BQKSAmJiBkZWZpbmVkKFBZT1NfT1MyKQogc3RhdGljIGxvbmcKIHN5c3RlbV91cHRpbWUodm9pZCkKQEAgLTUzODYsMzggKzczNTAsMTQgQEAKIHBvc2l4X3RpbWVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQogewogICAgIC8qIEN1cnJlbnRseSBPbmx5IFVwdGltZSBpcyBQcm92aWRlZCAtLSBPdGhlcnMgTGF0ZXIgKi8KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiZGRkZGQiLAorICAgIHJldHVybiBidWlsZF90aW1lc19yZXN1bHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX3V0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX3N0aW1lIC8gSFogKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkwIC8qIHQudG1zX2N1dGltZSAvIEhaICovLAogICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpMCAvKiB0LnRtc19jc3RpbWUgLyBIWiAqLywKICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXN5c3RlbV91cHRpbWUoKSAvIDEwMDApOwogfQotI2Vsc2UgLyogbm90IE9TMiAqLwotI2RlZmluZSBORUVEX1RJQ0tTX1BFUl9TRUNPTkQKLXN0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKLXN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBzdHJ1Y3QgdG1zIHQ7Ci0gICAgY2xvY2tfdCBjOwotICAgIGVycm5vID0gMDsKLSAgICBjID0gdGltZXMoJnQpOwotICAgIGlmIChjID09IChjbG9ja190KSAtMSkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImRkZGRkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2N1dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYyAvIHRpY2tzX3Blcl9zZWNvbmQpOwotfQotI2VuZGlmIC8qIG5vdCBPUzIgKi8KLSNlbmRpZiAvKiBIQVZFX1RJTUVTICovCi0KLQotI2lmZGVmIE1TX1dJTkRPV1MKLSNkZWZpbmUgSEFWRV9USU1FUyAgICAgIC8qIHNvIHRoZSBtZXRob2QgdGFibGUgd2lsbCBwaWNrIGl0IHVwICovCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiBzdGF0aWMgUHlPYmplY3QgKgogcG9zaXhfdGltZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCiB7CkBAIC01NDMwLDggKzczNzAsNyBAQAogICAgICAgIDFlNyBpcyBvbmUgc2Vjb25kIGluIHN1Y2ggdW5pdHM7IDFlLTcgdGhlIGludmVyc2UuCiAgICAgICAgNDI5LjQ5NjcyOTYgaXMgMioqMzIgLyAxZTcgb3IgMioqMzIgKiAxZS03LgogICAgICovCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoCi0gICAgICAgICJkZGRkZCIsCisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKICAgICAgICAgKGRvdWJsZSkodXNlci5kd0hpZ2hEYXRlVGltZSo0MjkuNDk2NzI5NiArCiAgICAgICAgICAgICAgICAgIHVzZXIuZHdMb3dEYXRlVGltZSoxZS03KSwKICAgICAgICAgKGRvdWJsZSkoa2VybmVsLmR3SGlnaERhdGVUaW1lKjQyOS40OTY3Mjk2ICsKQEAgLTU0NDAsMTQgKzczNzksMjkgQEAKICAgICAgICAgKGRvdWJsZSkwLAogICAgICAgICAoZG91YmxlKTApOwogfQotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLQotI2lmZGVmIEhBVkVfVElNRVMKLVB5RG9jX1NUUlZBUihwb3NpeF90aW1lc19fZG9jX18sCi0idGltZXMoKSAtPiAodXRpbWUsIHN0aW1lLCBjdXRpbWUsIGNzdGltZSwgZWxhcHNlZF90aW1lKVxuXG5cCi1SZXR1cm4gYSB0dXBsZSBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluZGljYXRpbmcgcHJvY2VzcyB0aW1lcy4iKTsKKyNlbHNlIC8qIE5laXRoZXIgV2luZG93cyBub3IgT1MvMiAqLworI2RlZmluZSBORUVEX1RJQ0tTX1BFUl9TRUNPTkQKK3N0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF90aW1lcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKK3sKKyAgICBzdHJ1Y3QgdG1zIHQ7CisgICAgY2xvY2tfdCBjOworICAgIGVycm5vID0gMDsKKyAgICBjID0gdGltZXMoJnQpOworICAgIGlmIChjID09IChjbG9ja190KSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIGJ1aWxkX3RpbWVzX3Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX3N0aW1lIC8gdGlja3NfcGVyX3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXQudG1zX2N1dGltZSAvIHRpY2tzX3Blcl9zZWNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0LnRtc19jc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpYyAvIHRpY2tzX3Blcl9zZWNvbmQpOworfQogI2VuZGlmCiAKKyNlbmRpZiAvKiBIQVZFX1RJTUVTICovCisKIAogI2lmZGVmIEhBVkVfR0VUU0lECiBQeURvY19TVFJWQVIocG9zaXhfZ2V0c2lkX19kb2NfXywKQEAgLTU1NDYsNDkgKzc1MDAsNjggQEAKIC8qIEZ1bmN0aW9ucyBhY3Rpbmcgb24gZmlsZSBkZXNjcmlwdG9ycyAqLwogCiBQeURvY19TVFJWQVIocG9zaXhfb3Blbl9fZG9jX18sCi0ib3BlbihmaWxlbmFtZSwgZmxhZyBbLCBtb2RlPTA3NzddKSAtPiBmZFxuXG5cCi1PcGVuIGEgZmlsZSAoZm9yIGxvdyBsZXZlbCBJTykuIik7Cisib3BlbihwYXRoLCBmbGFncywgbW9kZT0wbzc3NywgKiwgZGlyX2ZkPU5vbmUpXG5cblwKK09wZW4gYSBmaWxlIGZvciBsb3cgbGV2ZWwgSU8uICBSZXR1cm5zIGEgZmlsZSBoYW5kbGUgKGludGVnZXIpLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfb3BlbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9vcGVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqb2ZpbGU7Ci0gICAgY2hhciAqZmlsZTsKLSAgICBpbnQgZmxhZzsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZmxhZ3M7CiAgICAgaW50IG1vZGUgPSAwNzc3OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKICAgICBpbnQgZmQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiZmxhZ3MiLCAibW9kZSIsICJkaXJfZmQiLCBOVUxMfTsKIAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBQeVVuaWNvZGVPYmplY3QgKnBvOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVaXxpOm9wZW4iLCAmcG8sICZmbGFnLCAmbW9kZSkpIHsKLSAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgICAgICAvKiBQeVVuaWNvZGVfQVNfVU5JQ09ERSBPSyB3aXRob3V0IHRocmVhZAotICAgICAgICAgICBsb2NrIGFzIGl0IGlzIGEgc2ltcGxlIGRlcmVmZXJlbmNlLiAqLwotICAgICAgICBmZCA9IF93b3BlbihQeVVuaWNvZGVfQVNfVU5JQ09ERShwbyksIGZsYWcsIG1vZGUpOwotICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgICAgICBpZiAoZmQgPCAwKQotICAgICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOwotICAgIH0KLSAgICAvKiBEcm9wIHRoZSBhcmd1bWVudCBwYXJzaW5nIGVycm9yIGFzIG5hcnJvdyBzdHJpbmdzCi0gICAgICAgYXJlIGFsc28gdmFsaWQuICovCi0gICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZpfGkkTyY6b3BlbiIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZmbGFncywgJm1vZGUsCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICAgICAgZGlyX2ZkX2NvbnZlcnRlciwgJmRpcl9mZAorI2Vsc2UKKyAgICAgICAgZGlyX2ZkX3VuYXZhaWxhYmxlLCAmZGlyX2ZkCiAjZW5kaWYKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZpfGk6b3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxhZywgJm1vZGUpKQorICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmaWxlID0gUHlCeXRlc19Bc1N0cmluZyhvZmlsZSk7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGZkID0gb3BlbihmaWxlLCBmbGFnLCBtb2RlKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotICAgIGlmIChmZCA8IDApCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcl93aXRoX2FsbG9jYXRlZF9maWxlbmFtZShvZmlsZSk7Ci0gICAgUHlfREVDUkVGKG9maWxlKTsKLSAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKWZkKTsKLX0KIAorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKHBhdGgud2lkZSkKKyAgICAgICAgZmQgPSBfd29wZW4ocGF0aC53aWRlLCBmbGFncywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICBmZCA9IG9wZW5hdChkaXJfZmQsIHBhdGgubmFycm93LCBmbGFncywgbW9kZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIGZkID0gb3BlbihwYXRoLm5hcnJvdywgZmxhZ3MsIG1vZGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoZmQgPT0gLTEpIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIC8qIGZvcmNlIHVzZSBvZiBwb3NpeF9lcnJvciBoZXJlIGZvciBleGFjdCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAqLworICAgICAgICBpZiAocGF0aC53aWRlKQorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJldHVybl92YWx1ZSA9IHBhdGhfZXJyb3IoIm9wZW4iLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpZmQpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KIAogUHlEb2NfU1RSVkFSKHBvc2l4X2Nsb3NlX19kb2NfXywKICJjbG9zZShmZClcblxuXApAQCAtNTY0Myw5ICs3NjE2LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKQogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgZmQgPSBkdXAoZmQpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylmZCk7CkBAIC01NjY0LDE1ICs3NjM1LDQyIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghX1B5VmVyaWZ5X2ZkX2R1cDIoZmQsIGZkMikpCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBkdXAyKGZkLCBmZDIpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KIAorI2lmZGVmIEhBVkVfTE9DS0YKK1B5RG9jX1NUUlZBUihwb3NpeF9sb2NrZl9fZG9jX18sCisibG9ja2YoZmQsIGNtZCwgbGVuKVxuXG5cCitBcHBseSwgdGVzdCBvciByZW1vdmUgYSBQT1NJWCBsb2NrIG9uIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXG5cCitmZCBpcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK2NtZCBzcGVjaWZpZXMgdGhlIGNvbW1hbmQgdG8gdXNlIC0gb25lIG9mIEZfTE9DSywgRl9UTE9DSywgRl9VTE9DSyBvclxuXAorRl9URVNULlxuXAorbGVuIHNwZWNpZmllcyB0aGUgc2VjdGlvbiBvZiB0aGUgZmlsZSB0byBsb2NrLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbG9ja2YoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY21kLCByZXM7CisgICAgb2ZmX3QgbGVuOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPJjpsb2NrZiIsCisgICAgICAgICAgICAmZmQsICZjbWQsIF9wYXJzZV9vZmZfdCwgJmxlbikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IGxvY2tmKGZkLCBjbWQsIGxlbik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXMgPCAwKQorICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2xzZWVrX19kb2NfXywKICJsc2VlayhmZCwgcG9zLCBob3cpIC0+IG5ld3Bvc1xuXG5cCkBAIC01NzAzLDggKzc3MDEsNyBAQAogI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCiAgICAgcG9zID0gUHlMb25nX0FzTG9uZyhwb3NvYmopOwogI2Vsc2UKLSAgICBwb3MgPSBQeUxvbmdfQ2hlY2socG9zb2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKHBvc29iaikgOiBQeUxvbmdfQXNMb25nKHBvc29iaik7CisgICAgcG9zID0gUHlMb25nX0FzTG9uZ0xvbmcocG9zb2JqKTsKICNlbmRpZgogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTU3NjQsNiArNzc2MSwxNDAgQEAKICAgICByZXR1cm4gYnVmZmVyOwogfQogCisjaWYgKGRlZmluZWQoSEFWRV9TRU5ERklMRSkgJiYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykgXAorICAgIHx8IGRlZmluZWQoX19BUFBMRV9fKSkpIHx8IGRlZmluZWQoSEFWRV9SRUFEVikgfHwgZGVmaW5lZChIQVZFX1dSSVRFVikKK3N0YXRpYyBQeV9zc2l6ZV90Citpb3Zfc2V0dXAoc3RydWN0IGlvdmVjICoqaW92LCBQeV9idWZmZXIgKipidWYsIFB5T2JqZWN0ICpzZXEsIGludCBjbnQsIGludCB0eXBlKQoreworICAgIGludCBpLCBqOworICAgIFB5X3NzaXplX3QgYmxlbiwgdG90YWwgPSAwOworCisgICAgKmlvdiA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIGNudCk7CisgICAgaWYgKCppb3YgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gdG90YWw7CisgICAgfQorCisgICAgKmJ1ZiA9IFB5TWVtX05ldyhQeV9idWZmZXIsIGNudCk7CisgICAgaWYgKCpidWYgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9EZWwoKmlvdik7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiB0b3RhbDsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oc2VxLCBpKTsKKyAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihpdGVtLCAmKCpidWYpW2ldLCB0eXBlKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgKCppb3YpW2ldLmlvdl9iYXNlID0gKCpidWYpW2ldLmJ1ZjsKKyAgICAgICAgYmxlbiA9ICgqYnVmKVtpXS5sZW47CisgICAgICAgICgqaW92KVtpXS5pb3ZfbGVuID0gYmxlbjsKKyAgICAgICAgdG90YWwgKz0gYmxlbjsKKyAgICB9CisgICAgcmV0dXJuIHRvdGFsOworCitmYWlsOgorICAgIFB5TWVtX0RlbCgqaW92KTsKKyAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJigqYnVmKVtqXSk7CisgICAgfQorICAgIFB5TWVtX0RlbCgqYnVmKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK2lvdl9jbGVhbnVwKHN0cnVjdCBpb3ZlYyAqaW92LCBQeV9idWZmZXIgKmJ1ZiwgaW50IGNudCkKK3sKKyAgICBpbnQgaTsKKyAgICBQeU1lbV9EZWwoaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY250OyBpKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmYnVmW2ldKTsKKyAgICB9CisgICAgUHlNZW1fRGVsKGJ1Zik7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUkVBRFYKK1B5RG9jX1NUUlZBUihwb3NpeF9yZWFkdl9fZG9jX18sCisicmVhZHYoZmQsIGJ1ZmZlcnMpIC0+IGJ5dGVzcmVhZFxuXG5cCitSZWFkIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IgaW50byBhIG51bWJlciBvZiB3cml0YWJsZSBidWZmZXJzLiBidWZmZXJzXG5cCitpcyBhbiBhcmJpdHJhcnkgc2VxdWVuY2Ugb2Ygd3JpdGFibGUgYnVmZmVycy5cblwKK1JldHVybnMgdGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyByZWFkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcmVhZHYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBmZCwgY250OworICAgIFB5X3NzaXplX3QgbjsKKyAgICBQeU9iamVjdCAqc2VxOworICAgIHN0cnVjdCBpb3ZlYyAqaW92OworICAgIFB5X2J1ZmZlciAqYnVmOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpyZWFkdiIsICZmZCwgJnNlcSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhzZXEpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAicmVhZHYoKSBhcmcgMiBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOworCisgICAgaWYgKCFpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1dSSVRBQkxFKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgbiA9IHJlYWR2KGZkLCBpb3YsIGNudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlvdl9jbGVhbnVwKGlvdiwgYnVmLCBjbnQpOworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qobik7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUFJFQUQKK1B5RG9jX1NUUlZBUihwb3NpeF9wcmVhZF9fZG9jX18sCisicHJlYWQoZmQsIGJ1ZmZlcnNpemUsIG9mZnNldCkgLT4gc3RyaW5nXG5cblwKK1JlYWQgZnJvbSBhIGZpbGUgZGVzY3JpcHRvciwgZmQsIGF0IGEgcG9zaXRpb24gb2Ygb2Zmc2V0LiBJdCB3aWxsIHJlYWQgdXBcblwKK3RvIGJ1ZmZlcnNpemUgbnVtYmVyIG9mIGJ5dGVzLiBUaGUgZmlsZSBvZmZzZXQgcmVtYWlucyB1bmNoYW5nZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGZkLCBzaXplOworICAgIG9mZl90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IG47CisgICAgUHlPYmplY3QgKmJ1ZmZlcjsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpTyY6cHJlYWQiLCAmZmQsICZzaXplLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIGJ1ZmZlciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBzaXplKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBuID0gcHJlYWQoZmQsIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ1ZmZlciksIHNpemUsIG9mZnNldCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBpZiAobiAhPSBzaXplKQorICAgICAgICBfUHlCeXRlc19SZXNpemUoJmJ1ZmZlciwgbik7CisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKyNlbmRpZgogCiBQeURvY19TVFJWQVIocG9zaXhfd3JpdGVfX2RvY19fLAogIndyaXRlKGZkLCBzdHJpbmcpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCkBAIC01Nzk4LDEwICs3OTI5LDE0OSBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2l6ZSk7CiB9CiAKKyNpZmRlZiBIQVZFX1NFTkRGSUxFCitQeURvY19TVFJWQVIocG9zaXhfc2VuZGZpbGVfX2RvY19fLAorInNlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzKSAtPiBieXRlc3dyaXR0ZW5cblwKK3NlbmRmaWxlKG91dCwgaW4sIG9mZnNldCwgbmJ5dGVzLCBoZWFkZXJzPU5vbmUsIHRyYWlsZXJzPU5vbmUsIGZsYWdzPTApXG5cCisgICAgICAgICAgICAtPiBieXRlc3dyaXR0ZW5cblwKK0NvcHkgbmJ5dGVzIGJ5dGVzIGZyb20gZmlsZSBkZXNjcmlwdG9yIGluIHRvIGZpbGUgZGVzY3JpcHRvciBvdXQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9zZW5kZmlsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RpY3QpCit7CisgICAgaW50IGluLCBvdXQ7CisgICAgUHlfc3NpemVfdCByZXQ7CisgICAgb2ZmX3Qgb2Zmc2V0OworCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykKKyNpZm5kZWYgX19BUFBMRV9fCisgICAgUHlfc3NpemVfdCBsZW47CisjZW5kaWYKKyAgICBQeU9iamVjdCAqaGVhZGVycyA9IE5VTEwsICp0cmFpbGVycyA9IE5VTEw7CisgICAgUHlfYnVmZmVyICpoYnVmLCAqdGJ1ZjsKKyAgICBvZmZfdCBzYnl0ZXM7CisgICAgc3RydWN0IHNmX2hkdHIgc2Y7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBzZi5oZWFkZXJzID0gTlVMTDsKKyAgICBzZi50cmFpbGVycyA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7Im91dCIsICJpbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQiLCAiY291bnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaGVhZGVycyIsICJ0cmFpbGVycyIsICJmbGFncyIsIE5VTEx9OworCisjaWZkZWYgX19BUFBMRV9fCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaWlPJk8mfE9PaTpzZW5kZmlsZSIsCisgICAgICAgIGtleXdvcmRzLCAmb3V0LCAmaW4sIF9wYXJzZV9vZmZfdCwgJm9mZnNldCwgX3BhcnNlX29mZl90LCAmc2J5dGVzLAorI2Vsc2UKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RpY3QsICJpaU8mbnxPT2k6c2VuZGZpbGUiLAorICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsICZsZW4sCisjZW5kaWYKKyAgICAgICAgICAgICAgICAmaGVhZGVycywgJnRyYWlsZXJzLCAmZmxhZ3MpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGhlYWRlcnMgIT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2soaGVhZGVycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgInNlbmRmaWxlKCkgaGVhZGVycyBtdXN0IGJlIGEgc2VxdWVuY2Ugb3IgTm9uZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGkgPSAwOyAvKiBBdm9pZCB1bmluaXRpYWxpemVkIHdhcm5pbmcgKi8KKyAgICAgICAgICAgIHNmLmhkcl9jbnQgPSBQeVNlcXVlbmNlX1NpemUoaGVhZGVycyk7CisgICAgICAgICAgICBpZiAoc2YuaGRyX2NudCA+IDAgJiYKKyAgICAgICAgICAgICAgICAhKGkgPSBpb3Zfc2V0dXAoJihzZi5oZWFkZXJzKSwgJmhidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnMsIHNmLmhkcl9jbnQsIFB5QlVGX1NJTVBMRSkpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIF9fQVBQTEVfXworICAgICAgICAgICAgc2J5dGVzICs9IGk7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAodHJhaWxlcnMgIT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5U2VxdWVuY2VfQ2hlY2sodHJhaWxlcnMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJzZW5kZmlsZSgpIHRyYWlsZXJzIG11c3QgYmUgYSBzZXF1ZW5jZSBvciBOb25lIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaSA9IDA7IC8qIEF2b2lkIHVuaW5pdGlhbGl6ZWQgd2FybmluZyAqLworICAgICAgICAgICAgc2YudHJsX2NudCA9IFB5U2VxdWVuY2VfU2l6ZSh0cmFpbGVycyk7CisgICAgICAgICAgICBpZiAoc2YudHJsX2NudCA+IDAgJiYKKyAgICAgICAgICAgICAgICAhKGkgPSBpb3Zfc2V0dXAoJihzZi50cmFpbGVycyksICZ0YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpbGVycywgc2YudHJsX2NudCwgUHlCVUZfU0lNUExFKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgICAgICBzYnl0ZXMgKz0gaTsKKyNlbmRpZgorICAgICAgICB9CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIF9fQVBQTEVfXworICAgIHJldCA9IHNlbmRmaWxlKGluLCBvdXQsIG9mZnNldCwgJnNieXRlcywgJnNmLCBmbGFncyk7CisjZWxzZQorICAgIHJldCA9IHNlbmRmaWxlKGluLCBvdXQsIG9mZnNldCwgbGVuLCAmc2YsICZzYnl0ZXMsIGZsYWdzKTsKKyNlbmRpZgorICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoc2YuaGVhZGVycyAhPSBOVUxMKQorICAgICAgICBpb3ZfY2xlYW51cChzZi5oZWFkZXJzLCBoYnVmLCBzZi5oZHJfY250KTsKKyAgICBpZiAoc2YudHJhaWxlcnMgIT0gTlVMTCkKKyAgICAgICAgaW92X2NsZWFudXAoc2YudHJhaWxlcnMsIHRidWYsIHNmLnRybF9jbnQpOworCisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgaWYgKChlcnJubyA9PSBFQUdBSU4pIHx8IChlcnJubyA9PSBFQlVTWSkpIHsKKyAgICAgICAgICAgIGlmIChzYnl0ZXMgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIHNvbWUgZGF0YSBoYXMgYmVlbiBzZW50CisgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gbm8gZGF0YSBoYXMgYmVlbiBzZW50OyB1cHBlciBhcHBsaWNhdGlvbiBpcyBzdXBwb3NlZAorICAgICAgICAgICAgICAgIC8vIHRvIHJldHJ5IG9uIEVBR0FJTiBvciBFQlVTWQorICAgICAgICAgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOworICAgIH0KKyAgICBnb3RvIGRvbmU7CisKK2RvbmU6CisgICAgI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJsIiwgc2J5dGVzKTsKKyAgICAjZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTCIsIHNieXRlcyk7CisgICAgI2VuZGlmCisKKyNlbHNlCisgICAgUHlfc3NpemVfdCBjb3VudDsKKyAgICBQeU9iamVjdCAqb2Zmb2JqOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJvdXQiLCAiaW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2Zmc2V0IiwgImNvdW50IiwgTlVMTH07CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkaWN0LCAiaWlPbjpzZW5kZmlsZSIsCisgICAgICAgICAgICBrZXl3b3JkcywgJm91dCwgJmluLCAmb2Zmb2JqLCAmY291bnQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNpZmRlZiBsaW51eAorICAgIGlmIChvZmZvYmogPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIHJldCA9IHNlbmRmaWxlKG91dCwgaW4sIE5VTEwsIGNvdW50KTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgaWYgKHJldCA8IDApCisgICAgICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOworICAgIH0KKyNlbmRpZgorICAgIGlmICghX3BhcnNlX29mZl90KG9mZm9iaiwgJm9mZnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXQgPSBzZW5kZmlsZShvdXQsIGluLCAmb2Zmc2V0LCBjb3VudCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIm4iLCByZXQpOworI2VuZGlmCit9CisjZW5kaWYKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2ZzdGF0X19kb2NfXywKICJmc3RhdChmZCkgLT4gc3RhdCByZXN1bHRcblxuXAotTGlrZSBzdGF0KCksIGJ1dCBmb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIik7CitMaWtlIHN0YXQoKSwgYnV0IGZvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0VxdWl2YWxlbnQgdG8gc3RhdChmZD1mZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mc3RhdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC01ODE1LDggKzgwODUsNiBAQAogICAgIC8qIG9uIE9wZW5WTVMgd2UgbXVzdCBlbnN1cmUgdGhhdCBhbGwgYnl0ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGZpbGUgKi8KICAgICBmc3luYyhmZCk7CiAjZW5kaWYKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpCi0gICAgICAgIHJldHVybiBwb3NpeF9lcnJvcigpOwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICAgICByZXMgPSBGU1RBVChmZCwgJnN0KTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwpAQCAtNTg1OSw5ICs4MTI3LDcgQEAKICAgICBIRklMRSByZWFkLCB3cml0ZTsKICAgICBBUElSRVQgcmM7CiAKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmMgPSBEb3NDcmVhdGVQaXBlKCAmcmVhZCwgJndyaXRlLCA0MDk2KTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyYyAhPSBOT19FUlJPUikKICAgICAgICAgcmV0dXJuIG9zMl9lcnJvcihyYyk7CiAKQEAgLTU4NzAsOSArODEzNiw3IEBACiAjaWYgIWRlZmluZWQoTVNfV0lORE9XUykKICAgICBpbnQgZmRzWzJdOwogICAgIGludCByZXM7Ci0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJlcyA9IHBpcGUoZmRzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgIGlmIChyZXMgIT0gMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihpaSkiLCBmZHNbMF0sIGZkc1sxXSk7CkBAIC01ODgwLDkgKzgxNDQsNyBAQAogICAgIEhBTkRMRSByZWFkLCB3cml0ZTsKICAgICBpbnQgcmVhZF9mZCwgd3JpdGVfZmQ7CiAgICAgQk9PTCBvazsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgb2sgPSBDcmVhdGVQaXBlKCZyZWFkLCAmd3JpdGUsIE5VTEwsIDApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIHdpbjMyX2Vycm9yKCJDcmVhdGVQaXBlIiwgTlVMTCk7CiAgICAgcmVhZF9mZCA9IF9vcGVuX29zZmhhbmRsZSgoUHlfaW50cHRyX3QpcmVhZCwgMCk7CkBAIC01ODkzLDY2ICs4MTU1LDIxNCBAQAogfQogI2VuZGlmICAvKiBIQVZFX1BJUEUgKi8KIAotCi0jaWZkZWYgSEFWRV9NS0ZJRk8KLVB5RG9jX1NUUlZBUihwb3NpeF9ta2ZpZm9fX2RvY19fLAotIm1rZmlmbyhmaWxlbmFtZSBbLCBtb2RlPTA2NjZdKVxuXG5cCi1DcmVhdGUgYSBGSUZPIChhIFBPU0lYIG5hbWVkIHBpcGUpLiIpOworI2lmZGVmIEhBVkVfUElQRTIKK1B5RG9jX1NUUlZBUihwb3NpeF9waXBlMl9fZG9jX18sCisicGlwZTIoZmxhZ3MpIC0+IChyZWFkX2VuZCwgd3JpdGVfZW5kKVxuXG5cCitDcmVhdGUgYSBwaXBlIHdpdGggZmxhZ3Mgc2V0IGF0b21pY2FsbHkuXG5cCitmbGFncyBjYW4gYmUgY29uc3RydWN0ZWQgYnkgT1JpbmcgdG9nZXRoZXIgb25lIG9yIG1vcmUgb2YgdGhlc2UgdmFsdWVzOlxuXAorT19OT05CTE9DSywgT19DTE9FWEVDLlxuXAorIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta2ZpZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorcG9zaXhfcGlwZTIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKmZpbGVuYW1lOwotICAgIGludCBtb2RlID0gMDY2NjsKKyAgICBpbnQgZmxhZ3M7CisgICAgaW50IGZkc1syXTsKICAgICBpbnQgcmVzOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ8aTpta2ZpZm8iLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm1vZGUpKQorCisgICAgZmxhZ3MgPSBQeUxvbmdfQXNMb25nKGFyZyk7CisgICAgaWYgKGZsYWdzID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZpbGVuYW1lID0gUHlCeXRlc19BU19TVFJJTkcob3BhdGgpOwotICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBta2ZpZm8oZmlsZW5hbWUsIG1vZGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAocmVzIDwgMCkKKworICAgIHJlcyA9IHBpcGUyKGZkcywgZmxhZ3MpOworICAgIGlmIChyZXMgIT0gMCkKICAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgZmRzWzBdLCBmZHNbMV0pOworfQorI2VuZGlmIC8qIEhBVkVfUElQRTIgKi8KKworI2lmZGVmIEhBVkVfV1JJVEVWCitQeURvY19TVFJWQVIocG9zaXhfd3JpdGV2X19kb2NfXywKKyJ3cml0ZXYoZmQsIGJ1ZmZlcnMpIC0+IGJ5dGVzd3JpdHRlblxuXG5cCitXcml0ZSB0aGUgY29udGVudHMgb2YgYnVmZmVycyB0byBhIGZpbGUgZGVzY3JpcHRvciwgd2hlcmUgYnVmZmVycyBpcyBhblxuXAorYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIGJ1ZmZlcnMuXG5cCitSZXR1cm5zIHRoZSB0b3RhbCBieXRlcyB3cml0dGVuLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfd3JpdGV2KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgZmQsIGNudDsKKyAgICBQeV9zc2l6ZV90IHJlczsKKyAgICBQeU9iamVjdCAqc2VxOworICAgIHN0cnVjdCBpb3ZlYyAqaW92OworICAgIFB5X2J1ZmZlciAqYnVmOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86d3JpdGV2IiwgJmZkLCAmc2VxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJ3cml0ZXYoKSBhcmcgMiBtdXN0IGJlIGEgc2VxdWVuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNudCA9IFB5U2VxdWVuY2VfU2l6ZShzZXEpOworCisgICAgaWYgKCFpb3Zfc2V0dXAoJmlvdiwgJmJ1Ziwgc2VxLCBjbnQsIFB5QlVGX1NJTVBMRSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHdyaXRldihmZCwgaW92LCBjbnQpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpb3ZfY2xlYW51cChpb3YsIGJ1ZiwgY250KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfUFdSSVRFCitQeURvY19TVFJWQVIocG9zaXhfcHdyaXRlX19kb2NfXywKKyJwd3JpdGUoZmQsIHN0cmluZywgb2Zmc2V0KSAtPiBieXRlc3dyaXR0ZW5cblxuXAorV3JpdGUgc3RyaW5nIHRvIGEgZmlsZSBkZXNjcmlwdG9yLCBmZCwgZnJvbSBvZmZzZXQsIGxlYXZpbmcgdGhlIGZpbGVcblwKK29mZnNldCB1bmNoYW5nZWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9wd3JpdGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X2J1ZmZlciBwYnVmOworICAgIGludCBmZDsKKyAgICBvZmZfdCBvZmZzZXQ7CisgICAgUHlfc3NpemVfdCBzaXplOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpeSpPJjpwd3JpdGUiLCAmZmQsICZwYnVmLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZwYnVmKTsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBzaXplID0gcHdyaXRlKGZkLCBwYnVmLmJ1ZiwgKHNpemVfdClwYnVmLmxlbiwgb2Zmc2V0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnBidWYpOworICAgIGlmIChzaXplIDwgMCkKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKK30KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9NS0ZJRk8KK1B5RG9jX1NUUlZBUihwb3NpeF9ta2ZpZm9fX2RvY19fLAorIm1rZmlmbyhwYXRoLCBtb2RlPTBvNjY2LCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAorQ3JlYXRlIGEgRklGTyAoYSBQT1NJWCBuYW1lZCBwaXBlKS5cblwKK1xuXAorSWYgZGlyX2ZkIGlzIG5vdCBOb25lLCBpdCBzaG91bGQgYmUgYSBmaWxlIGRlc2NyaXB0b3Igb3BlbiB0byBhIGRpcmVjdG9yeSxcblwKKyAgYW5kIHBhdGggc2hvdWxkIGJlIHJlbGF0aXZlOyBwYXRoIHdpbGwgdGhlbiBiZSByZWxhdGl2ZSB0byB0aGF0IGRpcmVjdG9yeS5cblwKK2Rpcl9mZCBtYXkgbm90IGJlIGltcGxlbWVudGVkIG9uIHlvdXIgcGxhdGZvcm0uXG5cCisgIElmIGl0IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCB3aWxsIHJhaXNlIGEgTm90SW1wbGVtZW50ZWRFcnJvci4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X21rZmlmbyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgaW50IG1vZGUgPSAwNjY2OworICAgIGludCBkaXJfZmQgPSBERUZBVUxUX0RJUl9GRDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm1vZGUiLCAiZGlyX2ZkIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZ8aSRPJjpta2ZpZm8iLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmbW9kZSwKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgICAgIGRpcl9mZF9jb252ZXJ0ZXIsICZkaXJfZmQKKyNlbHNlCisgICAgICAgIGRpcl9mZF91bmF2YWlsYWJsZSwgJmRpcl9mZAorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfTUtGSUZPQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta2ZpZm9hdChkaXJfZmQsIHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gbWtmaWZvKHBhdGgubmFycm93LCBtb2RlKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcG9zaXhfZXJyb3IoKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHJldHVybl92YWx1ZSA9IFB5X05vbmU7CisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX01LTk9EKSAmJiBkZWZpbmVkKEhBVkVfTUFLRURFVikKIFB5RG9jX1NUUlZBUihwb3NpeF9ta25vZF9fZG9jX18sCi0ibWtub2QoZmlsZW5hbWUgWywgbW9kZT0wNjAwLCBkZXZpY2VdKVxuXG5cCisibWtub2QoZmlsZW5hbWUsIG1vZGU9MG82MDAsIGRldmljZT0wLCAqLCBkaXJfZmQ9Tm9uZSlcblxuXAogQ3JlYXRlIGEgZmlsZXN5c3RlbSBub2RlIChmaWxlLCBkZXZpY2Ugc3BlY2lhbCBmaWxlIG9yIG5hbWVkIHBpcGUpXG5cCiBuYW1lZCBmaWxlbmFtZS4gbW9kZSBzcGVjaWZpZXMgYm90aCB0aGUgcGVybWlzc2lvbnMgdG8gdXNlIGFuZCB0aGVcblwKIHR5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLCBiZWluZyBjb21iaW5lZCAoYml0d2lzZSBPUikgd2l0aCBvbmUgb2ZcblwKIFNfSUZSRUcsIFNfSUZDSFIsIFNfSUZCTEssIGFuZCBTX0lGSUZPLiBGb3IgU19JRkNIUiBhbmQgU19JRkJMSyxcblwKIGRldmljZSBkZWZpbmVzIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSBzcGVjaWFsIGZpbGUgKHByb2JhYmx5IHVzaW5nXG5cCi1vcy5tYWtlZGV2KCkpLCBvdGhlcndpc2UgaXQgaXMgaWdub3JlZC4iKTsKK29zLm1ha2VkZXYoKSksIG90aGVyd2lzZSBpdCBpcyBpZ25vcmVkLlxuXAorXG5cCitJZiBkaXJfZmQgaXMgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhIGZpbGUgZGVzY3JpcHRvciBvcGVuIHRvIGEgZGlyZWN0b3J5LFxuXAorICBhbmQgcGF0aCBzaG91bGQgYmUgcmVsYXRpdmU7IHBhdGggd2lsbCB0aGVuIGJlIHJlbGF0aXZlIHRvIHRoYXQgZGlyZWN0b3J5LlxuXAorZGlyX2ZkIG1heSBub3QgYmUgaW1wbGVtZW50ZWQgb24geW91ciBwbGF0Zm9ybS5cblwKKyAgSWYgaXQgaXMgdW5hdmFpbGFibGUsIHVzaW5nIGl0IHdpbGwgcmFpc2UgYSBOb3RJbXBsZW1lbnRlZEVycm9yLiIpOwogCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wb3NpeF9ta25vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9ta25vZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9wYXRoOwotICAgIGNoYXIgKmZpbGVuYW1lOwotICAgIGludCBtb2RlID0gMDYwMDsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgbW9kZSA9IDA2NjY7CiAgICAgaW50IGRldmljZSA9IDA7Ci0gICAgaW50IHJlczsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mfGlpOm1rbm9kIiwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZtb2RlLCAmZGV2aWNlKSkKKyAgICBpbnQgZGlyX2ZkID0gREVGQVVMVF9ESVJfRkQ7CisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJtb2RlIiwgImRldmljZSIsICJkaXJfZmQiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJnxpaSRPJjpta25vZCIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICZtb2RlLCAmZGV2aWNlLAorI2lmZGVmIEhBVkVfTUtOT0RBVAorICAgICAgICBkaXJfZmRfY29udmVydGVyLCAmZGlyX2ZkCisjZWxzZQorICAgICAgICBkaXJfZmRfdW5hdmFpbGFibGUsICZkaXJfZmQKKyNlbmRpZgorICAgICAgICApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmaWxlbmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9wYXRoKTsKKwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICByZXMgPSBta25vZChmaWxlbmFtZSwgbW9kZSwgZGV2aWNlKTsKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICBpZiAoZGlyX2ZkICE9IERFRkFVTFRfRElSX0ZEKQorICAgICAgICByZXN1bHQgPSBta25vZGF0KGRpcl9mZCwgcGF0aC5uYXJyb3csIG1vZGUsIGRldmljZSk7CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IG1rbm9kKHBhdGgubmFycm93LCBtb2RlLCBkZXZpY2UpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgUHlfREVDUkVGKG9wYXRoKTsKLSAgICBpZiAocmVzIDwgMCkKLSAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmCiAKQEAgLTYwMDksMTggKzg0MTksOCBAQAogICAgIGludCBmZDsKICAgICBvZmZfdCBsZW5ndGg7CiAgICAgaW50IHJlczsKLSAgICBQeU9iamVjdCAqbGVub2JqOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpmdHJ1bmNhdGUiLCAmZmQsICZsZW5vYmopKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotI2lmICFkZWZpbmVkKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQpCi0gICAgbGVuZ3RoID0gUHlMb25nX0FzTG9uZyhsZW5vYmopOwotI2Vsc2UKLSAgICBsZW5ndGggPSBQeUxvbmdfQ2hlY2sobGVub2JqKSA/Ci0gICAgICAgIFB5TG9uZ19Bc0xvbmdMb25nKGxlbm9iaikgOiBQeUxvbmdfQXNMb25nKGxlbm9iaik7Ci0jZW5kaWYKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlPJjpmdHJ1bmNhdGUiLCAmZmQsIF9wYXJzZV9vZmZfdCwgJmxlbmd0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwpAQCAtNjAzMyw2ICs4NDMzLDEwOSBAQAogfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1RSVU5DQVRFCitQeURvY19TVFJWQVIocG9zaXhfdHJ1bmNhdGVfX2RvY19fLAorInRydW5jYXRlKHBhdGgsIGxlbmd0aClcblxuXAorVHJ1bmNhdGUgdGhlIGZpbGUgZ2l2ZW4gYnkgcGF0aCB0byBsZW5ndGggYnl0ZXMuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3RydW5jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBvZmZfdCBsZW5ndGg7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsicGF0aCIsICJsZW5ndGgiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyZPJjp0cnVuY2F0ZSIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFyc2Vfb2ZmX3QsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyNpZmRlZiBIQVZFX0ZUUlVOQ0FURQorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICByZXMgPSBmdHJ1bmNhdGUocGF0aC5mZCwgbGVuZ3RoKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzID0gdHJ1bmNhdGUocGF0aC5uYXJyb3csIGxlbmd0aCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgcmVzdWx0ID0gcGF0aF9wb3NpeF9lcnJvcigidHJ1bmNhdGUiLCAmcGF0aCk7CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKyAgICAgICAgcmVzdWx0ID0gUHlfTm9uZTsKKyAgICB9CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBTExPQ0FURQorUHlEb2NfU1RSVkFSKHBvc2l4X3Bvc2l4X2ZhbGxvY2F0ZV9fZG9jX18sCisicG9zaXhfZmFsbG9jYXRlKGZkLCBvZmZzZXQsIGxlbilcblxuXAorRW5zdXJlcyB0aGF0IGVub3VnaCBkaXNrIHNwYWNlIGlzIGFsbG9jYXRlZCBmb3IgdGhlIGZpbGUgc3BlY2lmaWVkIGJ5IGZkXG5cCitzdGFydGluZyBmcm9tIG9mZnNldCBhbmQgY29udGludWluZyBmb3IgbGVuIGJ5dGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcG9zaXhfZmFsbG9jYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBvZmZfdCBsZW4sIG9mZnNldDsKKyAgICBpbnQgcmVzLCBmZDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyY6cG9zaXhfZmFsbG9jYXRlIiwKKyAgICAgICAgICAgICZmZCwgX3BhcnNlX29mZl90LCAmb2Zmc2V0LCBfcGFyc2Vfb2ZmX3QsICZsZW4pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBwb3NpeF9mYWxsb2NhdGUoZmQsIG9mZnNldCwgbGVuKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIGlmIChyZXMgIT0gMCkgeworICAgICAgICBlcnJubyA9IHJlczsKKyAgICAgICAgcmV0dXJuIHBvc2l4X2Vycm9yKCk7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKK1B5RG9jX1NUUlZBUihwb3NpeF9wb3NpeF9mYWR2aXNlX19kb2NfXywKKyJwb3NpeF9mYWR2aXNlKGZkLCBvZmZzZXQsIGxlbiwgYWR2aWNlKVxuXG5cCitBbm5vdW5jZXMgYW4gaW50ZW50aW9uIHRvIGFjY2VzcyBkYXRhIGluIGEgc3BlY2lmaWMgcGF0dGVybiB0aHVzIGFsbG93aW5nXG5cCit0aGUga2VybmVsIHRvIG1ha2Ugb3B0aW1pemF0aW9ucy5cblwKK1RoZSBhZHZpY2UgYXBwbGllcyB0byB0aGUgcmVnaW9uIG9mIHRoZSBmaWxlIHNwZWNpZmllZCBieSBmZCBzdGFydGluZyBhdFxuXAorb2Zmc2V0IGFuZCBjb250aW51aW5nIGZvciBsZW4gYnl0ZXMuXG5cCithZHZpY2UgaXMgb25lIG9mIFBPU0lYX0ZBRFZfTk9STUFMLCBQT1NJWF9GQURWX1NFUVVFTlRJQUwsXG5cCitQT1NJWF9GQURWX1JBTkRPTSwgUE9TSVhfRkFEVl9OT1JFVVNFLCBQT1NJWF9GQURWX1dJTExORUVEIG9yXG5cCitQT1NJWF9GQURWX0RPTlRORUVELiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfcG9zaXhfZmFkdmlzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgb2ZmX3QgbGVuLCBvZmZzZXQ7CisgICAgaW50IHJlcywgZmQsIGFkdmljZTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU8mTyZpOnBvc2l4X2ZhZHZpc2UiLAorICAgICAgICAgICAgJmZkLCBfcGFyc2Vfb2ZmX3QsICZvZmZzZXQsIF9wYXJzZV9vZmZfdCwgJmxlbiwgJmFkdmljZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IHBvc2l4X2ZhZHZpc2UoZmQsIG9mZnNldCwgbGVuLCBhZHZpY2UpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgIGVycm5vID0gcmVzOworICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfUFVURU5WCiBQeURvY19TVFJWQVIocG9zaXhfcHV0ZW52X19kb2NfXywKICJwdXRlbnYoa2V5LCB2YWx1ZSlcblxuXApAQCAtNjA0NSwyMyArODU0OCw0MCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3B1dGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgUHlPYmplY3QgKm5ld3N0ciA9IE5VTEw7CiAjaWZkZWYgTVNfV0lORE9XUwotICAgIHdjaGFyX3QgKnMxLCAqczI7CisgICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKICAgICB3Y2hhcl90ICpuZXdlbnY7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlVVOnB1dGVudiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZvczEsICZvczIpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG5ld3N0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVT0lVSIsIG9zMSwgb3MyKTsKKyAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKF9NQVhfRU5WIDwgUHlVbmljb2RlX0dFVF9MRU5HVEgobmV3c3RyKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbG9uZ2VyIHRoYW4gJXUgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICBfTUFYX0VOVik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgbmV3ZW52ID0gUHlVbmljb2RlX0FzVW5pY29kZShuZXdzdHIpOworICAgIGlmIChuZXdlbnYgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoX3dwdXRlbnYobmV3ZW52KSkgeworICAgICAgICBwb3NpeF9lcnJvcigpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KICNlbHNlCiAgICAgUHlPYmplY3QgKm9zMSwgKm9zMjsKICAgICBjaGFyICpzMSwgKnMyOwogICAgIGNoYXIgKm5ld2VudjsKLSNlbmRpZgotICAgIFB5T2JqZWN0ICpuZXdzdHIgPSBOVUxMOwotICAgIHNpemVfdCBsZW47CiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ1dTpwdXRlbnYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmczEsICZzMikpCi0gICAgICAgIHJldHVybiBOVUxMOwotI2Vsc2UKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIk8mTyY6cHV0ZW52IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3MxLApAQCAtNjA2OSw1OCArODU4OSwxNCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzMSA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MxKTsKICAgICBzMiA9IFB5Qnl0ZXNfQXNTdHJpbmcob3MyKTsKLSNlbmRpZgogCi0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICBpZiAoc3RyaWNtcChzMSwgIkJFR0lOTElCUEFUSCIpID09IDApIHsKLSAgICAgICAgQVBJUkVUIHJjOwotCi0gICAgICAgIHJjID0gRG9zU2V0RXh0TElCUEFUSChzMiwgQkVHSU5fTElCUEFUSCk7Ci0gICAgICAgIGlmIChyYyAhPSBOT19FUlJPUikgewotICAgICAgICAgICAgb3MyX2Vycm9yKHJjKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLQotICAgIH0gZWxzZSBpZiAoc3RyaWNtcChzMSwgIkVORExJQlBBVEgiKSA9PSAwKSB7Ci0gICAgICAgIEFQSVJFVCByYzsKLQotICAgICAgICByYyA9IERvc1NldEV4dExJQlBBVEgoczIsIEVORF9MSUJQQVRIKTsKLSAgICAgICAgaWYgKHJjICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICBvczJfZXJyb3IocmMpOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0jZW5kaWYKLSAgICAvKiBYWFggVGhpcyBjYW4gbGVhayBtZW1vcnkgLS0gbm90IGVhc3kgdG8gZml4IDotKCAqLwotICAgIC8qIGxlbiBpbmNsdWRlcyBzcGFjZSBmb3IgYSB0cmFpbGluZyBcMDsgdGhlIHNpemUgYXJnIHRvCi0gICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSBkb2VzIG5vdCBjb3VudCB0aGF0ICovCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIGxlbiA9IHdjc2xlbihzMSkgKyB3Y3NsZW4oczIpICsgMjsKLSAgICBpZiAoX01BWF9FTlYgPCAobGVuIC0gMSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAidGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIGxvbmdlciB0aGFuICV1IGNoYXJhY3RlcnMiLAotICAgICAgICAgICAgICAgICAgICAgX01BWF9FTlYpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBuZXdzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgKGludClsZW4gLSAxKTsKLSNlbHNlCi0gICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShvczEpICsgUHlCeXRlc19HRVRfU0laRShvczIpICsgMjsKLSAgICBuZXdzdHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIChpbnQpbGVuIC0gMSk7Ci0jZW5kaWYKKyAgICBuZXdzdHIgPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoIiVzPSVzIiwgczEsIHMyKTsKICAgICBpZiAobmV3c3RyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgIG5ld2VudiA9IFB5VW5pY29kZV9Bc1VuaWNvZGUobmV3c3RyKTsKLSAgICBfc253cHJpbnRmKG5ld2VudiwgbGVuLCBMIiVzPSVzIiwgczEsIHMyKTsKLSAgICBpZiAoX3dwdXRlbnYobmV3ZW52KSkgewotICAgICAgICBwb3NpeF9lcnJvcigpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSNlbHNlCisKICAgICBuZXdlbnYgPSBQeUJ5dGVzX0FTX1NUUklORyhuZXdzdHIpOwotICAgIFB5T1Nfc25wcmludGYobmV3ZW52LCBsZW4sICIlcz0lcyIsIHMxLCBzMik7CiAgICAgaWYgKHB1dGVudihuZXdlbnYpKSB7CiAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC02MTMxLDEzICs4NjA3LDcgQEAKICAgICAgKiB0aGlzIHdpbGwgY2F1c2UgcHJldmlvdXMgdmFsdWUgdG8gYmUgY29sbGVjdGVkLiAgVGhpcyBoYXMgdG8KICAgICAgKiBoYXBwZW4gYWZ0ZXIgdGhlIHJlYWwgcHV0ZW52KCkgY2FsbCBiZWNhdXNlIHRoZSBvbGQgdmFsdWUKICAgICAgKiB3YXMgc3RpbGwgYWNjZXNzaWJsZSB1bnRpbCB0aGVuLiAqLwotICAgIGlmIChQeURpY3RfU2V0SXRlbShwb3NpeF9wdXRlbnZfZ2FyYmFnZSwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCksCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICBvczEsCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgbmV3c3RyKSkgeworICAgIGlmIChQeURpY3RfU2V0SXRlbShwb3NpeF9wdXRlbnZfZ2FyYmFnZSwgb3MxLCBuZXdzdHIpKSB7CiAgICAgICAgIC8qIHJlYWxseSBub3QgbXVjaCB3ZSBjYW4gZG87IGp1c3QgbGVhayAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KQEAgLTYxNDUsMTAgKzg2MTUsNiBAQAogICAgICAgICBQeV9ERUNSRUYobmV3c3RyKTsKICAgICB9CiAKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIH0KLSNlbmRpZgotCiAjaWZuZGVmIE1TX1dJTkRPV1MKICAgICBQeV9ERUNSRUYob3MxKTsKICAgICBQeV9ERUNSRUYob3MyKTsKQEAgLTYxNzMsMjMgKzg2MzksMjIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF91bnNldGVudihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKm9zMTsKLSAgICBjaGFyICpzMTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICNpZm5kZWYgSEFWRV9CUk9LRU5fVU5TRVRFTlYKICAgICBpbnQgZXJyOwogI2VuZGlmCiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mOnVuc2V0ZW52IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmb3MxKSkKKworICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgczEgPSBQeUJ5dGVzX0FzU3RyaW5nKG9zMSk7CiAKICNpZmRlZiBIQVZFX0JST0tFTl9VTlNFVEVOVgotICAgIHVuc2V0ZW52KHMxKTsKKyAgICB1bnNldGVudihQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSk7CiAjZWxzZQotICAgIGVyciA9IHVuc2V0ZW52KHMxKTsKKyAgICBlcnIgPSB1bnNldGVudihQeUJ5dGVzX0FTX1NUUklORyhuYW1lKSk7CiAgICAgaWYgKGVycikgewotICAgICAgICBQeV9ERUNSRUYob3MxKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWUpOwogICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3IoKTsKICAgICB9CiAjZW5kaWYKQEAgLTYxOTksMTIgKzg2NjQsMTEgQEAKICAgICAgKiBoYXBwZW4gYWZ0ZXIgdGhlIHJlYWwgdW5zZXRlbnYoKSBjYWxsIGJlY2F1c2UgdGhlCiAgICAgICogb2xkIHZhbHVlIHdhcyBzdGlsbCBhY2Nlc3NpYmxlIHVudGlsIHRoZW4uCiAgICAgICovCi0gICAgaWYgKFB5RGljdF9EZWxJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBvczEpKSB7CisgICAgaWYgKFB5RGljdF9EZWxJdGVtKHBvc2l4X3B1dGVudl9nYXJiYWdlLCBuYW1lKSkgewogICAgICAgICAvKiByZWFsbHkgbm90IG11Y2ggd2UgY2FuIGRvOyBqdXN0IGxlYWsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9Ci0KLSAgICBQeV9ERUNSRUYob3MxKTsKKyAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAjZW5kaWYgLyogdW5zZXRlbnYgKi8KQEAgLTYyMjYsNyArODY5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyZXJyb3IoKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhtZXNzYWdlKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZShtZXNzYWdlLCAic3Vycm9nYXRlZXNjYXBlIik7CiB9CiAKIApAQCAtNjQzMiw3ICs4ODk2LDggQEAKIAogUHlEb2NfU1RSVkFSKHBvc2l4X2ZzdGF0dmZzX19kb2NfXywKICJmc3RhdHZmcyhmZCkgLT4gc3RhdHZmcyByZXN1bHRcblxuXAotUGVyZm9ybSBhbiBmc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gZmQuIik7CitQZXJmb3JtIGFuIGZzdGF0dmZzIHN5c3RlbSBjYWxsIG9uIHRoZSBnaXZlbiBmZC5cblwKK0VxdWl2YWxlbnQgdG8gc3RhdHZmcyhmZCkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBwb3NpeF9mc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC02NDU3LDI3ICs4OTIyLDg3IEBACiAjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KIAogUHlEb2NfU1RSVkFSKHBvc2l4X3N0YXR2ZnNfX2RvY19fLAotInN0YXR2ZnMocGF0aCkgLT4gc3RhdHZmcyByZXN1bHRcblxuXAotUGVyZm9ybSBhIHN0YXR2ZnMgc3lzdGVtIGNhbGwgb24gdGhlIGdpdmVuIHBhdGguIik7Cisic3RhdHZmcyhwYXRoKVxuXG5cCitQZXJmb3JtIGEgc3RhdHZmcyBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC5cblwKK1xuXAorcGF0aCBtYXkgYWx3YXlzIGJlIHNwZWNpZmllZCBhcyBhIHN0cmluZy5cblwKK09uIHNvbWUgcGxhdGZvcm1zLCBwYXRoIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKKyAgSWYgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIHVuYXZhaWxhYmxlLCB1c2luZyBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfc3RhdHZmcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitwb3NpeF9zdGF0dmZzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBjaGFyICpwYXRoOwotICAgIGludCByZXM7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCBOVUxMfTsKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIHN0cnVjdCBzdGF0dmZzIHN0OwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczpzdGF0dmZzIiwgJnBhdGgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzID0gc3RhdHZmcyhwYXRoLCAmc3QpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgaWYgKHJlcyAhPSAwKQotICAgICAgICByZXR1cm4gcG9zaXhfZXJyb3Jfd2l0aF9maWxlbmFtZShwYXRoKTsKIAotICAgIHJldHVybiBfcHlzdGF0dmZzX2Zyb21zdHJ1Y3RzdGF0dmZzKHN0KTsKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiTyY6c3RhdHZmcyIsIGtleXdvcmRzLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgKKyAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisjaWZkZWYgSEFWRV9GU1RBVFZGUworICAgIGlmIChwYXRoLmZkICE9IC0xKSB7CisjaWZkZWYgX19BUFBMRV9fCisgICAgICAgIC8qIGhhbmRsZSB3ZWFrLWxpbmtpbmcgb24gTWFjIE9TIFggMTAuMyAqLworICAgICAgICBpZiAoZnN0YXR2ZnMgPT0gTlVMTCkgeworICAgICAgICAgICAgZmRfc3BlY2lmaWVkKCJzdGF0dmZzIiwgcGF0aC5mZCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByZXN1bHQgPSBmc3RhdHZmcyhwYXRoLmZkLCAmc3QpOworICAgIH0KKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgcmVzdWx0ID0gc3RhdHZmcyhwYXRoLm5hcnJvdywgJnN0KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm5fdmFsdWUgPSBwYXRoX3Bvc2l4X2Vycm9yKCJzdGF0dmZzIiwgJnBhdGgpOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcmV0dXJuX3ZhbHVlID0gX3B5c3RhdHZmc19mcm9tc3RydWN0c3RhdHZmcyhzdCk7CisKK2V4aXQ6CisgICAgcGF0aF9jbGVhbnVwKCZwYXRoKTsKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQogI2VuZGlmIC8qIEhBVkVfU1RBVFZGUyAqLwogCisjaWZkZWYgTVNfV0lORE9XUworUHlEb2NfU1RSVkFSKHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19fLAorIl9nZXRkaXNrdXNhZ2UocGF0aCkgLT4gKHRvdGFsLCBmcmVlKVxuXG5cCitSZXR1cm4gZGlzayB1c2FnZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBnaXZlbiBwYXRoIGFzICh0b3RhbCwgZnJlZSkgdHVwbGUuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit3aW4zMl9fZ2V0ZGlza3VzYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBCT09MIHJldHZhbDsKKyAgICBVTEFSR0VfSU5URUdFUiBfLCB0b3RhbCwgZnJlZTsKKyAgICBjb25zdCB3Y2hhcl90ICpwYXRoOworCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAidSIsICZwYXRoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmV0dmFsID0gR2V0RGlza0ZyZWVTcGFjZUV4VyhwYXRoLCAmXywgJnRvdGFsLCAmZnJlZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAocmV0dmFsID09IDApCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTEwpIiwgdG90YWwuUXVhZFBhcnQsIGZyZWUuUXVhZFBhcnQpOworfQorI2VuZGlmCisKKwogLyogVGhpcyBpcyB1c2VkIGZvciBmcGF0aGNvbmYoKSwgcGF0aGNvbmYoKSwgY29uZnN0cigpIGFuZCBzeXNjb25mKCkuCiAgKiBJdCBtYXBzIHN0cmluZ3MgcmVwcmVzZW50aW5nIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgbmFtZXMgdG8KICAqIGludGVnZXIgdmFsdWVzLCBhbGxvd2luZyB0aG9zZSBmdW5jdGlvbnMgdG8gYmUgY2FsbGVkIHdpdGggdGhlCkBAIC02NjY0LDMxICs5MTg5LDQ1IEBACiBQeURvY19TVFJWQVIocG9zaXhfcGF0aGNvbmZfX2RvY19fLAogInBhdGhjb25mKHBhdGgsIG5hbWUpIC0+IGludGVnZXJcblxuXAogUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGxpbWl0IG5hbWUgZm9yIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSBwYXRoLlxuXAotSWYgdGhlcmUgaXMgbm8gbGltaXQsIHJldHVybiAtMS4iKTsKK0lmIHRoZXJlIGlzIG5vIGxpbWl0LCByZXR1cm4gLTEuXG5cCitPbiBzb21lIHBsYXRmb3JtcywgcGF0aCBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCisgIElmIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyB1bmF2YWlsYWJsZSwgdXNpbmcgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXBvc2l4X3BhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3Bvc2l4X3BhdGhjb25mKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKKyAgICBwYXRoX3QgcGF0aDsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgbmFtZTsKLSAgICBjaGFyICpwYXRoOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgIm5hbWUiLCBOVUxMfTsKIAotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyY6cGF0aGNvbmYiLCAmcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgeworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgIHBhdGguYWxsb3dfZmQgPSAxOworI2VuZGlmCisgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8mOnBhdGhjb25mIiwga2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252X3BhdGhfY29uZm5hbWUsICZuYW1lKSkgewogICAgIGxvbmcgbGltaXQ7CiAKICAgICBlcnJubyA9IDA7Ci0gICAgbGltaXQgPSBwYXRoY29uZihwYXRoLCBuYW1lKTsKKyNpZmRlZiBIQVZFX0ZQQVRIQ09ORgorICAgIGlmIChwYXRoLmZkICE9IC0xKQorICAgICAgICBsaW1pdCA9IGZwYXRoY29uZihwYXRoLmZkLCBuYW1lKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgbGltaXQgPSBwYXRoY29uZihwYXRoLm5hcnJvdywgbmFtZSk7CiAgICAgaWYgKGxpbWl0ID09IC0xICYmIGVycm5vICE9IDApIHsKICAgICAgICAgaWYgKGVycm5vID09IEVJTlZBTCkKICAgICAgICAgICAgIC8qIGNvdWxkIGJlIGEgcGF0aCBvciBuYW1lIHByb2JsZW0gKi8KICAgICAgICAgICAgIHBvc2l4X2Vycm9yKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBvc2l4X2Vycm9yX3dpdGhfZmlsZW5hbWUocGF0aCk7CisgICAgICAgICAgICByZXN1bHQgPSBwYXRoX3Bvc2l4X2Vycm9yKCJwYXRoY29uZiIsICZwYXRoKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXN1bHQgPSBQeUxvbmdfRnJvbUxvbmcobGltaXQpOwogICAgIH0KKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAjZW5kaWYKQEAgLTc1NDAsOSArMTAwNzksMTAgQEAKICAgICBQeU9iamVjdCAqb2ZpbGVwYXRoOwogICAgIGNoYXIgKmZpbGVwYXRoOwogICAgIGNoYXIgKm9wZXJhdGlvbiA9IE5VTEw7CisgICAgd2NoYXJfdCAqd3BhdGgsICp3b3BlcmF0aW9uOwogICAgIEhJTlNUQU5DRSByYzsKIAotICAgIFB5T2JqZWN0ICp1bmlwYXRoLCAqd29wZXJhdGlvbiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnVuaXBhdGgsICp1b3BlcmF0aW9uID0gTlVMTDsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlV8czpzdGFydGZpbGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmdW5pcGF0aCwgJm9wZXJhdGlvbikpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTc1NTAsMjYgKzEwMDkwLDM1IEBACiAgICAgfQogCiAgICAgaWYgKG9wZXJhdGlvbikgewotICAgICAgICB3b3BlcmF0aW9uID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKG9wZXJhdGlvbiwKKyAgICAgICAgdW9wZXJhdGlvbiA9IFB5VW5pY29kZV9EZWNvZGVBU0NJSShvcGVyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKG9wZXJhdGlvbiksIE5VTEwpOwotICAgICAgICBpZiAoIXdvcGVyYXRpb24pIHsKKyAgICAgICAgaWYgKCF1b3BlcmF0aW9uKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgb3BlcmF0aW9uID0gTlVMTDsKICAgICAgICAgICAgIGdvdG8gbm9ybWFsOwogICAgICAgICB9CiAgICAgfQogCisgICAgd3BhdGggPSBQeVVuaWNvZGVfQXNVbmljb2RlKHVuaXBhdGgpOworICAgIGlmICh3cGF0aCA9PSBOVUxMKQorICAgICAgICBnb3RvIG5vcm1hbDsKKyAgICBpZiAodW9wZXJhdGlvbikgeworICAgICAgICB3b3BlcmF0aW9uID0gUHlVbmljb2RlX0FzVW5pY29kZSh1b3BlcmF0aW9uKTsKKyAgICAgICAgaWYgKHdvcGVyYXRpb24gPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gbm9ybWFsOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHdvcGVyYXRpb24gPSBOVUxMOworCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJjID0gU2hlbGxFeGVjdXRlVygoSFdORCkwLCB3b3BlcmF0aW9uID8gUHlVbmljb2RlX0FTX1VOSUNPREUod29wZXJhdGlvbikgOiAwLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmlwYXRoKSwKLSAgICAgICAgTlVMTCwgTlVMTCwgU1dfU0hPV05PUk1BTCk7CisgICAgcmMgPSBTaGVsbEV4ZWN1dGVXKChIV05EKTAsIHdvcGVyYXRpb24sIHdwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBTV19TSE9XTk9STUFMKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCi0gICAgUHlfWERFQ1JFRih3b3BlcmF0aW9uKTsKKyAgICBQeV9YREVDUkVGKHVvcGVyYXRpb24pOwogICAgIGlmIChyYyA8PSAoSElOU1RBTkNFKTMyKSB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJ2YWwgPSB3aW4zMl9lcnJvcl91bmljb2RlKCJzdGFydGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmlwYXRoKSk7Ci0gICAgICAgIHJldHVybiBlcnJ2YWw7CisgICAgICAgIHdpbjMyX2Vycm9yX29iamVjdCgic3RhcnRmaWxlIiwgdW5pcGF0aCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC03NTc5LDYgKzEwMTI4LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJm9maWxlcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJm9wZXJhdGlvbikpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh3aW4zMl93YXJuX2J5dGVzX2FwaSgpKSB7CisgICAgICAgIFB5X0RFQ1JFRihvZmlsZXBhdGgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZmlsZXBhdGggPSBQeUJ5dGVzX0FzU3RyaW5nKG9maWxlcGF0aCk7CiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIHJjID0gU2hlbGxFeGVjdXRlKChIV05EKTAsIG9wZXJhdGlvbiwgZmlsZXBhdGgsCkBAIC03NjIzLDYyICsxMDE3NiwxMSBAQAogZGV2aWNlX2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgZmQ7CisKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZGV2aWNlX2VuY29kaW5nIiwgJmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8ICFpc2F0dHkoZmQpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKLSAgICBpZiAoZmQgPT0gMCkgewotICAgICAgICBjaGFyIGJ1ZlsxMDBdOwotICAgICAgICBzcHJpbnRmKGJ1ZiwgImNwJWQiLCBHZXRDb25zb2xlQ1AoKSk7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgIH0KLSAgICBpZiAoZmQgPT0gMSB8fCBmZCA9PSAyKSB7Ci0gICAgICAgIGNoYXIgYnVmWzEwMF07Ci0gICAgICAgIHNwcmludGYoYnVmLCAiY3AlZCIsIEdldENvbnNvbGVPdXRwdXRDUCgpKTsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7Ci0gICAgfQotI2VsaWYgZGVmaW5lZChDT0RFU0VUKQotICAgIHsKLSAgICAgICAgY2hhciAqY29kZXNldCA9IG5sX2xhbmdpbmZvKENPREVTRVQpOwotICAgICAgICBpZiAoY29kZXNldCAhPSBOVUxMICYmIGNvZGVzZXRbMF0gIT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhjb2Rlc2V0KTsKLSAgICB9Ci0jZW5kaWYKLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19CiAKLVB5RG9jX1NUUlZBUihwb3NpeF91cmFuZG9tX19kb2NfXywKLSJ1cmFuZG9tKG4pIC0+IHN0clxuXG5cCi1SZXR1cm4gbiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotcG9zaXhfdXJhbmRvbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgUHlfc3NpemVfdCBzaXplOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0gICAgaW50IHJldDsKLQotICAgICAvKiBSZWFkIGFyZ3VtZW50cyAqLwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp1cmFuZG9tIiwgJnNpemUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA8IDApCi0gICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKLSAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpOwotICAgIGlmIChyZXQgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlfZGV2aWNlX2VuY29kaW5nKGZkKTsKIH0KIAogI2lmZGVmIEhBVkVfU0VUUkVTVUlECkBAIC03NzU3LDIxICsxMDI1OSw0NjggQEAKIH0KICNlbmRpZgogCisjaWZkZWYgVVNFX1hBVFRSUworCitQeURvY19TVFJWQVIocG9zaXhfZ2V0eGF0dHJfX2RvY19fLAorImdldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpIC0+IHZhbHVlXG5cblwKK1JldHVybiB0aGUgdmFsdWUgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoLlxuXAorXG5cCitwYXRoIG1heSBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitJZiBmb2xsb3dfc3ltbGlua3MgaXMgRmFsc2UsIGFuZCB0aGUgbGFzdCBlbGVtZW50IG9mIHRoZSBwYXRoIGlzIGEgc3ltYm9saWNcblwKKyAgbGluaywgZ2V0eGF0dHIgd2lsbCBleGFtaW5lIHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X2dldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBwYXRoX3QgYXR0cmlidXRlOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIFB5T2JqZWN0ICpidWZmZXIgPSBOVUxMOworICAgIGludCBpOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6Z2V0eGF0dHIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKKyAgICAgICAgJmZvbGxvd19zeW1saW5rcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGZkX2FuZF9mb2xsb3dfc3ltbGlua3NfaW52YWxpZCgiZ2V0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBmb3IgKGkgPSAwOyA7IGkrKykgeworICAgICAgICB2b2lkICpwdHI7CisgICAgICAgIHNzaXplX3QgcmVzdWx0OworICAgICAgICBzdGF0aWMgUHlfc3NpemVfdCBidWZmZXJfc2l6ZXNbXSA9IHsxMjgsIFhBVFRSX1NJWkVfTUFYLCAwfTsKKyAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKKyAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgcGF0aF9lcnJvcigiZ2V0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICBwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhidWZmZXIpOworCisgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgICAgIGlmIChwYXRoLmZkID49IDApCisgICAgICAgICAgICByZXN1bHQgPSBmZ2V0eGF0dHIocGF0aC5mZCwgYXR0cmlidXRlLm5hcnJvdywgcHRyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gbGdldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LCBwdHIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOworICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCJnZXR4YXR0ciIsICZwYXRoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXN1bHQgIT0gYnVmZmVyX3NpemUpIHsKKyAgICAgICAgICAgIC8qIENhbiBvbmx5IHNocmluay4gKi8KKyAgICAgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmYnVmZmVyLCByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIHBhdGhfY2xlYW51cCgmYXR0cmlidXRlKTsKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitQeURvY19TVFJWQVIocG9zaXhfc2V0eGF0dHJfX2RvY19fLAorInNldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgdmFsdWUsIGZsYWdzPTAsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKVxuXG5cCitTZXQgZXh0ZW5kZWQgYXR0cmlidXRlIGF0dHJpYnV0ZSBvbiBwYXRoIHRvIHZhbHVlLlxuXAorcGF0aCBtYXkgYmUgZWl0aGVyIGEgc3RyaW5nIG9yIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIHNldHhhdHRyIHdpbGwgbW9kaWZ5IHRoZSBzeW1ib2xpYyBsaW5rIGl0c2VsZiBpbnN0ZWFkIG9mIHRoZSBmaWxlXG5cCisgIHRoZSBsaW5rIHBvaW50cyB0by4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3Bvc2l4X3NldHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBwYXRoX3QgYXR0cmlidXRlOworICAgIFB5X2J1ZmZlciB2YWx1ZTsKKyAgICBpbnQgZmxhZ3MgPSAwOworICAgIGludCBmb2xsb3dfc3ltbGlua3MgPSAxOworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7InBhdGgiLCAiYXR0cmlidXRlIiwgInZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAiZm9sbG93X3N5bWxpbmtzIiwgTlVMTH07CisKKyAgICBtZW1zZXQoJnBhdGgsIDAsIHNpemVvZihwYXRoKSk7CisgICAgcGF0aC5hbGxvd19mZCA9IDE7CisgICAgbWVtc2V0KCZhdHRyaWJ1dGUsIDAsIHNpemVvZihhdHRyaWJ1dGUpKTsKKyAgICBtZW1zZXQoJnZhbHVlLCAwLCBzaXplb2YodmFsdWUpKTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJk8meSp8aSRwOnNldHhhdHRyIiwKKyAgICAgICAga2V5d29yZHMsCisgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZhdHRyaWJ1dGUsCisgICAgICAgICZ2YWx1ZSwgJmZsYWdzLAorICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJzZXR4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHBhdGguZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnNldHhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gc2V0eGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS5idWYsIHZhbHVlLmxlbiwgZmxhZ3MpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbHNldHhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuYnVmLCB2YWx1ZS5sZW4sIGZsYWdzKTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigic2V0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhbHVlKTsKKworICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKK1B5RG9jX1NUUlZBUihwb3NpeF9yZW1vdmV4YXR0cl9fZG9jX18sCisicmVtb3ZleGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorUmVtb3ZlIGV4dGVuZGVkIGF0dHJpYnV0ZSBhdHRyaWJ1dGUgb24gcGF0aC5cblwKK3BhdGggbWF5IGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci5cblwKK0lmIGZvbGxvd19zeW1saW5rcyBpcyBGYWxzZSwgYW5kIHRoZSBsYXN0IGVsZW1lbnQgb2YgdGhlIHBhdGggaXMgYSBzeW1ib2xpY1xuXAorICBsaW5rLCByZW1vdmV4YXR0ciB3aWxsIG1vZGlmeSB0aGUgc3ltYm9saWMgbGluayBpdHNlbGYgaW5zdGVhZCBvZiB0aGUgZmlsZVxuXAorICB0aGUgbGluayBwb2ludHMgdG8uIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitwb3NpeF9yZW1vdmV4YXR0cihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgcGF0aF90IHBhdGg7CisgICAgcGF0aF90IGF0dHJpYnV0ZTsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImF0dHJpYnV0ZSIsICJmb2xsb3dfc3ltbGlua3MiLCBOVUxMfTsKKworICAgIG1lbXNldCgmcGF0aCwgMCwgc2l6ZW9mKHBhdGgpKTsKKyAgICBtZW1zZXQoJmF0dHJpYnV0ZSwgMCwgc2l6ZW9mKGF0dHJpYnV0ZSkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mTyZ8JHA6cmVtb3ZleGF0dHIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfY29udmVydGVyLCAmcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2NvbnZlcnRlciwgJmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJyZW1vdmV4YXR0ciIsIHBhdGguZmQsIGZvbGxvd19zeW1saW5rcykpCisgICAgICAgIGdvdG8gZXhpdDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHBhdGguZmQgPiAtMSkKKyAgICAgICAgcmVzdWx0ID0gZnJlbW92ZXhhdHRyKHBhdGguZmQsIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgcmVzdWx0ID0gcmVtb3ZleGF0dHIocGF0aC5uYXJyb3csIGF0dHJpYnV0ZS5uYXJyb3cpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gbHJlbW92ZXhhdHRyKHBhdGgubmFycm93LCBhdHRyaWJ1dGUubmFycm93KTsKKyAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUzsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gcGF0aF9lcnJvcigicmVtb3ZleGF0dHIiLCAmcGF0aCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICByZXR1cm5fdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRihyZXR1cm5fdmFsdWUpOworCitleGl0OgorICAgIHBhdGhfY2xlYW51cCgmcGF0aCk7CisgICAgcGF0aF9jbGVhbnVwKCZhdHRyaWJ1dGUpOworCisgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKK30KKworUHlEb2NfU1RSVkFSKHBvc2l4X2xpc3R4YXR0cl9fZG9jX18sCisibGlzdHhhdHRyKHBhdGg9Jy4nLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSlcblxuXAorUmV0dXJuIGEgbGlzdCBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIG9uIHBhdGguXG5cCitcblwKK3BhdGggbWF5IGJlIGVpdGhlciBOb25lLCBhIHN0cmluZywgb3IgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuXG5cCitpZiBwYXRoIGlzIE5vbmUsIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LlxuXAorSWYgZm9sbG93X3N5bWxpbmtzIGlzIEZhbHNlLCBhbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgcGF0aCBpcyBhIHN5bWJvbGljXG5cCisgIGxpbmssIGxpc3R4YXR0ciB3aWxsIGV4YW1pbmUgdGhlIHN5bWJvbGljIGxpbmsgaXRzZWxmIGluc3RlYWQgb2YgdGhlIGZpbGVcblwKKyAgdGhlIGxpbmsgcG9pbnRzIHRvLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfbGlzdHhhdHRyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICBwYXRoX3QgcGF0aDsKKyAgICBpbnQgZm9sbG93X3N5bWxpbmtzID0gMTsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgY2hhciAqYnVmZmVyID0gTlVMTDsKKyAgICBjaGFyICpuYW1lOworICAgIHN0YXRpYyBjaGFyICprZXl3b3Jkc1tdID0geyJwYXRoIiwgImZvbGxvd19zeW1saW5rcyIsIE5VTEx9OworCisgICAgbWVtc2V0KCZwYXRoLCAwLCBzaXplb2YocGF0aCkpOworICAgIHBhdGguYWxsb3dfZmQgPSAxOworICAgIHBhdGguZmQgPSAtMTsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8TyYkcDpsaXN0eGF0dHIiLCBrZXl3b3JkcywKKyAgICAgICAgcGF0aF9jb252ZXJ0ZXIsICZwYXRoLAorICAgICAgICAmZm9sbG93X3N5bWxpbmtzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJsaXN0eGF0dHIiLCBwYXRoLmZkLCBmb2xsb3dfc3ltbGlua3MpKQorICAgICAgICBnb3RvIGV4aXQ7CisKKyAgICBuYW1lID0gcGF0aC5uYXJyb3cgPyBwYXRoLm5hcnJvdyA6ICIuIjsKKyAgICBmb3IgKGkgPSAwOyA7IGkrKykgeworICAgICAgICBjaGFyICpzdGFydCwgKnRyYWNlLCAqZW5kOworICAgICAgICBzc2l6ZV90IGxlbmd0aDsKKyAgICAgICAgc3RhdGljIFB5X3NzaXplX3QgYnVmZmVyX3NpemVzW10gPSB7IDI1NiwgWEFUVFJfTElTVF9NQVgsIDAgfTsKKyAgICAgICAgUHlfc3NpemVfdCBidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplc1tpXTsKKyAgICAgICAgaWYgKCFidWZmZXJfc2l6ZSkgeworICAgICAgICAgICAgLyogRVJBTkdFICovCisgICAgICAgICAgICBwYXRoX2Vycm9yKCJsaXN0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBidWZmZXIgPSBQeU1lbV9NQUxMT0MoYnVmZmVyX3NpemUpOworICAgICAgICBpZiAoIWJ1ZmZlcikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUzsKKyAgICAgICAgaWYgKHBhdGguZmQgPiAtMSkKKyAgICAgICAgICAgIGxlbmd0aCA9IGZsaXN0eGF0dHIocGF0aC5mZCwgYnVmZmVyLCBidWZmZXJfc2l6ZSk7CisgICAgICAgIGVsc2UgaWYgKGZvbGxvd19zeW1saW5rcykKKyAgICAgICAgICAgIGxlbmd0aCA9IGxpc3R4YXR0cihuYW1lLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGVuZ3RoID0gbGxpc3R4YXR0cihuYW1lLCBidWZmZXIsIGJ1ZmZlcl9zaXplKTsKKyAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisKKyAgICAgICAgaWYgKGxlbmd0aCA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFUkFOR0UpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwYXRoX2Vycm9yKCJsaXN0eGF0dHIiLCAmcGF0aCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICBlbmQgPSBidWZmZXIgKyBsZW5ndGg7CisgICAgICAgIGZvciAodHJhY2UgPSBzdGFydCA9IGJ1ZmZlcjsgdHJhY2UgIT0gZW5kOyB0cmFjZSsrKSB7CisgICAgICAgICAgICBpZiAoISp0cmFjZSkgeworICAgICAgICAgICAgICAgIGludCBlcnJvcjsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXR0cmlidXRlID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIGlmICghYXR0cmlidXRlKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVycm9yID0gUHlMaXN0X0FwcGVuZChyZXN1bHQsIGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0ID0gdHJhY2UgKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgYnJlYWs7CisgICAgfQorZXhpdDoKKyAgICBwYXRoX2NsZWFudXAoJnBhdGgpOworICAgIGlmIChidWZmZXIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLyogVVNFX1hBVFRSUyAqLworCisKK1B5RG9jX1NUUlZBUihwb3NpeF91cmFuZG9tX19kb2NfXywKKyJ1cmFuZG9tKG4pIC0+IHN0clxuXG5cCitSZXR1cm4gbiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcG9zaXhfdXJhbmRvbShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IHJldDsKKworICAgICAvKiBSZWFkIGFyZ3VtZW50cyAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp1cmFuZG9tIiwgJnNpemUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNpemUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBfUHlPU19VUmFuZG9tKFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHJlc3VsdCkpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBUZXJtaW5hbCBzaXplIHF1ZXJ5aW5nICovCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgVGVybWluYWxTaXplVHlwZTsKKworUHlEb2NfU1RSVkFSKFRlcm1pbmFsU2l6ZV9kb2NzdHJpbmcsCisgICAgIkEgdHVwbGUgb2YgKGNvbHVtbnMsIGxpbmVzKSBmb3IgaG9sZGluZyB0ZXJtaW5hbCB3aW5kb3cgc2l6ZSIpOworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBUZXJtaW5hbFNpemVfZmllbGRzW10gPSB7CisgICAgeyJjb2x1bW5zIiwgIndpZHRoIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycyJ9LAorICAgIHsibGluZXMiLCAiaGVpZ2h0IG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgaW4gY2hhcmFjdGVycyJ9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRGVzYyBUZXJtaW5hbFNpemVfZGVzYyA9IHsKKyAgICAib3MudGVybWluYWxfc2l6ZSIsCisgICAgVGVybWluYWxTaXplX2RvY3N0cmluZywKKyAgICBUZXJtaW5hbFNpemVfZmllbGRzLAorICAgIDIsCit9OworCisjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQorUHlEb2NfU1RSVkFSKHRlcm1zaXplX19kb2NfXywKKyAgICAiUmV0dXJuIHRoZSBzaXplIG9mIHRoZSB0ZXJtaW5hbCB3aW5kb3cgYXMgKGNvbHVtbnMsIGxpbmVzKS5cbiIgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiVGhlIG9wdGlvbmFsIGFyZ3VtZW50IGZkIChkZWZhdWx0IHN0YW5kYXJkIG91dHB1dCkgc3BlY2lmaWVzXG4iICAgICAgIFwKKyAgICAid2hpY2ggZmlsZSBkZXNjcmlwdG9yIHNob3VsZCBiZSBxdWVyaWVkLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiSWYgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBub3QgY29ubmVjdGVkIHRvIGEgdGVybWluYWwsIGFuIE9TRXJyb3JcbiIgIFwKKyAgICAiaXMgdGhyb3duLlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiVGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgZGVmaW5lZCBpZiBhbiBpbXBsZW1lbnRhdGlvbiBpc1xuIiAgICAgICAgIFwKKyAgICAiYXZhaWxhYmxlIGZvciB0aGlzIHN5c3RlbS5cbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAic2h1dGlsLmdldF90ZXJtaW5hbF9zaXplIGlzIHRoZSBoaWdoLWxldmVsIGZ1bmN0aW9uIHdoaWNoIHNob3VsZCBcbiIgIFwKKyAgICAibm9ybWFsbHkgYmUgdXNlZCwgb3MuZ2V0X3Rlcm1pbmFsX3NpemUgaXMgdGhlIGxvdy1sZXZlbCBpbXBsZW1lbnRhdGlvbi4iKTsKKworc3RhdGljIFB5T2JqZWN0KgorZ2V0X3Rlcm1pbmFsX3NpemUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBjb2x1bW5zLCBsaW5lczsKKyAgICBQeU9iamVjdCAqdGVybXNpemU7CisKKyAgICBpbnQgZmQgPSBmaWxlbm8oc3Rkb3V0KTsKKyAgICAvKiBVbmRlciBzb21lIGNvbmRpdGlvbnMgc3Rkb3V0IG1heSBub3QgYmUgY29ubmVjdGVkIGFuZAorICAgICAqIGZpbGVubyhzdGRvdXQpIG1heSBwb2ludCB0byBhbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvci4gRm9yIGV4YW1wbGUKKyAgICAgKiBHVUkgYXBwcyBkb24ndCBoYXZlIHZhbGlkIHN0YW5kYXJkIHN0cmVhbXMgYnkgZGVmYXVsdC4KKyAgICAgKgorICAgICAqIElmIHRoaXMgaGFwcGVucywgYW5kIHRoZSBvcHRpb25hbCBmZCBhcmd1bWVudCBpcyBub3QgcHJlc2VudCwKKyAgICAgKiB0aGUgaW9jdGwgYmVsb3cgd2lsbCBmYWlsIHJldHVybmluZyBFQkFERi4gVGhpcyBpcyB3aGF0IHdlIHdhbnQuCisgICAgICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpIiwgJmZkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyNpZmRlZiBURVJNU0laRV9VU0VfSU9DVEwKKyAgICB7CisgICAgICAgIHN0cnVjdCB3aW5zaXplIHc7CisgICAgICAgIGlmIChpb2N0bChmZCwgVElPQ0dXSU5TWiwgJncpKQorICAgICAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgY29sdW1ucyA9IHcud3NfY29sOworICAgICAgICBsaW5lcyA9IHcud3Nfcm93OworICAgIH0KKyNlbmRpZiAvKiBURVJNU0laRV9VU0VfSU9DVEwgKi8KKworI2lmZGVmIFRFUk1TSVpFX1VTRV9DT05JTworICAgIHsKKyAgICAgICAgRFdPUkQgbmhhbmRsZTsKKyAgICAgICAgSEFORExFIGhhbmRsZTsKKyAgICAgICAgQ09OU09MRV9TQ1JFRU5fQlVGRkVSX0lORk8gY3NiaTsKKyAgICAgICAgc3dpdGNoIChmZCkgeworICAgICAgICBjYXNlIDA6IG5oYW5kbGUgPSBTVERfSU5QVVRfSEFORExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTogbmhhbmRsZSA9IFNURF9PVVRQVVRfSEFORExFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjogbmhhbmRsZSA9IFNURF9FUlJPUl9IQU5ETEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImJhZCBmaWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGUgPSBHZXRTdGRIYW5kbGUobmhhbmRsZSk7CisgICAgICAgIGlmIChoYW5kbGUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Gb3JtYXQoUHlFeGNfT1NFcnJvciwgImhhbmRsZSBjYW5ub3QgYmUgcmV0cmlldmVkIik7CisgICAgICAgIGlmIChoYW5kbGUgPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICAgICAgaWYgKCFHZXRDb25zb2xlU2NyZWVuQnVmZmVySW5mbyhoYW5kbGUsICZjc2JpKSkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgICAgICBjb2x1bW5zID0gY3NiaS5zcldpbmRvdy5SaWdodCAtIGNzYmkuc3JXaW5kb3cuTGVmdCArIDE7CisgICAgICAgIGxpbmVzID0gY3NiaS5zcldpbmRvdy5Cb3R0b20gLSBjc2JpLnNyV2luZG93LlRvcCArIDE7CisgICAgfQorI2VuZGlmIC8qIFRFUk1TSVpFX1VTRV9DT05JTyAqLworCisgICAgdGVybXNpemUgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmVGVybWluYWxTaXplVHlwZSk7CisgICAgaWYgKHRlcm1zaXplID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGVybXNpemUsIDAsIFB5TG9uZ19Gcm9tTG9uZyhjb2x1bW5zKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0ZXJtc2l6ZSwgMSwgUHlMb25nX0Zyb21Mb25nKGxpbmVzKSk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHRlcm1zaXplKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiB0ZXJtc2l6ZTsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKFRFUk1TSVpFX1VTRV9DT05JTykgfHwgZGVmaW5lZChURVJNU0laRV9VU0VfSU9DVEwpICovCisKKwogc3RhdGljIFB5TWV0aG9kRGVmIHBvc2l4X21ldGhvZHNbXSA9IHsKLSAgICB7ImFjY2VzcyIsICAgICAgICAgIHBvc2l4X2FjY2VzcywgTUVUSF9WQVJBUkdTLCBwb3NpeF9hY2Nlc3NfX2RvY19ffSwKKyAgICB7ImFjY2VzcyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9hY2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfYWNjZXNzX19kb2NfX30sCiAjaWZkZWYgSEFWRV9UVFlOQU1FCiAgICAgeyJ0dHluYW1lIiwgICAgICAgICBwb3NpeF90dHluYW1lLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3R0eW5hbWVfX2RvY19ffSwKICNlbmRpZgotICAgIHsiY2hkaXIiLCAgICAgICAgICAgcG9zaXhfY2hkaXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfY2hkaXJfX2RvY19ffSwKKyAgICB7ImNoZGlyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9jaGRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaGRpcl9fZG9jX199LAogI2lmZGVmIEhBVkVfQ0hGTEFHUwotICAgIHsiY2hmbGFncyIsICAgICAgICAgcG9zaXhfY2hmbGFncywgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaGZsYWdzX19kb2NfX30sCisgICAgeyJjaGZsYWdzIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9jaGZsYWdzX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9DSEZMQUdTICovCi0gICAgeyJjaG1vZCIsICAgICAgICAgICBwb3NpeF9jaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jaG1vZF9fZG9jX199LAorICAgIHsiY2htb2QiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2NobW9kLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2NobW9kX19kb2NfX30sCiAjaWZkZWYgSEFWRV9GQ0hNT0QKICAgICB7ImZjaG1vZCIsICAgICAgICAgIHBvc2l4X2ZjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mY2htb2RfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0ZDSE1PRCAqLwogI2lmZGVmIEhBVkVfQ0hPV04KLSAgICB7ImNob3duIiwgICAgICAgICAgIHBvc2l4X2Nob3duLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2Nob3duX19kb2NfX30sCisgICAgeyJjaG93biIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfY2hvd24sCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfY2hvd25fX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0NIT1dOICovCiAjaWZkZWYgSEFWRV9MQ0hNT0QKICAgICB7ImxjaG1vZCIsICAgICAgICAgIHBvc2l4X2xjaG1vZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sY2htb2RfX2RvY19ffSwKQEAgLTc3OTcsMzIgKzEwNzQ2LDU3IEBACiAgICAgeyJnZXRjd2RiIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0Y3dkX2J5dGVzLAogICAgIE1FVEhfTk9BUkdTLCBwb3NpeF9nZXRjd2RiX19kb2NfX30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0xJTksKLSAgICB7ImxpbmsiLCAgICAgICAgICAgIHBvc2l4X2xpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfbGlua19fZG9jX199LAorI2lmIGRlZmluZWQoSEFWRV9MSU5LKSB8fCBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgeyJsaW5rIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9saW5rX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9MSU5LICovCi0gICAgeyJsaXN0ZGlyIiwgICAgICAgICBwb3NpeF9saXN0ZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xpc3RkaXJfX2RvY19ffSwKLSAgICB7ImxzdGF0IiwgICAgICAgICAgIHBvc2l4X2xzdGF0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2xzdGF0X19kb2NfX30sCi0gICAgeyJta2RpciIsICAgICAgICAgICBwb3NpeF9ta2RpciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9ta2Rpcl9fZG9jX199LAorICAgIHsibGlzdGRpciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xpc3RkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbGlzdGRpcl9fZG9jX199LAorICAgIHsibHN0YXQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2xzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X2xzdGF0X19kb2NfX30sCisgICAgeyJta2RpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfbWtkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtkaXJfX2RvY19ffSwKICNpZmRlZiBIQVZFX05JQ0UKICAgICB7Im5pY2UiLCAgICAgICAgICAgIHBvc2l4X25pY2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfbmljZV9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfTklDRSAqLworI2lmZGVmIEhBVkVfR0VUUFJJT1JJVFkKKyAgICB7ImdldHByaW9yaXR5IiwgICAgIHBvc2l4X2dldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldHByaW9yaXR5X19kb2NfX30sCisjZW5kaWYgLyogSEFWRV9HRVRQUklPUklUWSAqLworI2lmZGVmIEhBVkVfU0VUUFJJT1JJVFkKKyAgICB7InNldHByaW9yaXR5IiwgICAgIHBvc2l4X3NldHByaW9yaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHByaW9yaXR5X19kb2NfX30sCisjZW5kaWYgLyogSEFWRV9TRVRQUklPUklUWSAqLwogI2lmZGVmIEhBVkVfUkVBRExJTksKLSAgICB7InJlYWRsaW5rIiwgICAgICAgIHBvc2l4X3JlYWRsaW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlYWRsaW5rX19kb2NfX30sCisgICAgeyJyZWFkbGluayIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVhZGxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxpbmtfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1JFQURMSU5LICovCiAjaWYgIWRlZmluZWQoSEFWRV9SRUFETElOSykgJiYgZGVmaW5lZChNU19XSU5ET1dTKQotICAgIHsicmVhZGxpbmsiLCAgICAgICAgd2luX3JlYWRsaW5rLCBNRVRIX1ZBUkFSR1MsIHdpbl9yZWFkbGlua19fZG9jX199LAorICAgIHsicmVhZGxpbmsiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKXdpbl9yZWFkbGluaywKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICByZWFkbGlua19fZG9jX199LAogI2VuZGlmIC8qICFkZWZpbmVkKEhBVkVfUkVBRExJTkspICYmIGRlZmluZWQoTVNfV0lORE9XUykgKi8KLSAgICB7InJlbmFtZSIsICAgICAgICAgIHBvc2l4X3JlbmFtZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZW5hbWVfX2RvY19ffSwKLSAgICB7InJtZGlyIiwgICAgICAgICAgIHBvc2l4X3JtZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JtZGlyX19kb2NfX30sCi0gICAgeyJzdGF0IiwgICAgICAgICAgICBwb3NpeF9zdGF0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N0YXRfX2RvY19ffSwKKyAgICB7InJlbmFtZSIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9yZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcmVuYW1lX19kb2NfX30sCisgICAgeyJyZXBsYWNlIiwgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcmVwbGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9yZXBsYWNlX19kb2NfX30sCisgICAgeyJybWRpciIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcm1kaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcm1kaXJfX2RvY19ffSwKKyAgICB7InN0YXQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N0YXRfX2RvY19ffSwKICAgICB7InN0YXRfZmxvYXRfdGltZXMiLCBzdGF0X2Zsb2F0X3RpbWVzLCBNRVRIX1ZBUkFSR1MsIHN0YXRfZmxvYXRfdGltZXNfX2RvY19ffSwKLSNpZiBkZWZpbmVkKEhBVkVfU1lNTElOSykgJiYgIWRlZmluZWQoTVNfV0lORE9XUykKLSAgICB7InN5bWxpbmsiLCAgICAgICAgIHBvc2l4X3N5bWxpbmssIE1FVEhfVkFSQVJHUywgcG9zaXhfc3ltbGlua19fZG9jX199LAorI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKQorICAgIHsic3ltbGluayIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3N5bWxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc3ltbGlua19fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfU1lNTElOSyAqLwotI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0gICAgeyJzeW1saW5rIiwgKFB5Q0Z1bmN0aW9uKXdpbl9zeW1saW5rLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAgICAgICAgICAgICB3aW5fc3ltbGlua19fZG9jX199LAotI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCiAjaWZkZWYgSEFWRV9TWVNURU0KICAgICB7InN5c3RlbSIsICAgICAgICAgIHBvc2l4X3N5c3RlbSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zeXN0ZW1fX2RvY19ffSwKICNlbmRpZgpAQCAtNzgzMCwxNiArMTA4MDQsMjMgQEAKICNpZmRlZiBIQVZFX1VOQU1FCiAgICAgeyJ1bmFtZSIsICAgICAgICAgICBwb3NpeF91bmFtZSwgTUVUSF9OT0FSR1MsIHBvc2l4X3VuYW1lX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9VTkFNRSAqLwotICAgIHsidW5saW5rIiwgICAgICAgICAgcG9zaXhfdW5saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3VubGlua19fZG9jX199LAotICAgIHsicmVtb3ZlIiwgICAgICAgICAgcG9zaXhfdW5saW5rLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3JlbW92ZV9fZG9jX199LAotICAgIHsidXRpbWUiLCAgICAgICAgICAgcG9zaXhfdXRpbWUsIE1FVEhfVkFSQVJHUywgcG9zaXhfdXRpbWVfX2RvY19ffSwKKyAgICB7InVubGluayIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF91bmxpbmssCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdW5saW5rX19kb2NfX30sCisgICAgeyJyZW1vdmUiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdW5saW5rLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3JlbW92ZV9fZG9jX199LAorICAgIHsidXRpbWUiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X3V0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcG9zaXhfdXRpbWVfX2RvY19ffSwKICNpZmRlZiBIQVZFX1RJTUVTCiAgICAgeyJ0aW1lcyIsICAgICAgICAgICBwb3NpeF90aW1lcywgTUVUSF9OT0FSR1MsIHBvc2l4X3RpbWVzX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9USU1FUyAqLwogICAgIHsiX2V4aXQiLCAgICAgICAgICAgcG9zaXhfX2V4aXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfX2V4aXRfX2RvY19ffSwKICNpZmRlZiBIQVZFX0VYRUNWCiAgICAgeyJleGVjdiIsICAgICAgICAgICBwb3NpeF9leGVjdiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9leGVjdl9fZG9jX199LAotICAgIHsiZXhlY3ZlIiwgICAgICAgICAgcG9zaXhfZXhlY3ZlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2V4ZWN2ZV9fZG9jX199LAorICAgIHsiZXhlY3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXBvc2l4X2V4ZWN2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9leGVjdmVfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX0VYRUNWICovCiAjaWZkZWYgSEFWRV9TUEFXTlYKICAgICB7InNwYXdudiIsICAgICAgICAgIHBvc2l4X3NwYXdudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zcGF3bnZfX2RvY19ffSwKQEAgLTc4NTUsNiArMTA4MzYsMzIgQEAKICNpZmRlZiBIQVZFX0ZPUksKICAgICB7ImZvcmsiLCAgICAgICAgICAgIHBvc2l4X2ZvcmssIE1FVEhfTk9BUkdTLCBwb3NpeF9mb3JrX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9GT1JLICovCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisjaWZkZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IiwgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21heCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWF4X19kb2NfX30sCisgICAgeyJzY2hlZF9nZXRfcHJpb3JpdHlfbWluIiwgcG9zaXhfc2NoZWRfZ2V0X3ByaW9yaXR5X21pbiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9nZXRfcHJpb3JpdHlfbWluX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFBBUkFNCisgICAgeyJzY2hlZF9nZXRwYXJhbSIsIHBvc2l4X3NjaGVkX2dldHBhcmFtLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldHBhcmFtX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUgorICAgIHsic2NoZWRfZ2V0c2NoZWR1bGVyIiwgcG9zaXhfc2NoZWRfZ2V0c2NoZWR1bGVyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldHNjaGVkdWxlcl9fZG9jX199LAorI2VuZGlmCisjaWZkZWYgSEFWRV9TQ0hFRF9SUl9HRVRfSU5URVJWQUwKKyAgICB7InNjaGVkX3JyX2dldF9pbnRlcnZhbCIsIHBvc2l4X3NjaGVkX3JyX2dldF9pbnRlcnZhbCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9zY2hlZF9ycl9nZXRfaW50ZXJ2YWxfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKyAgICB7InNjaGVkX3NldHBhcmFtIiwgcG9zaXhfc2NoZWRfc2V0cGFyYW0sIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0cGFyYW1fX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisgICAgeyJzY2hlZF9zZXRzY2hlZHVsZXIiLCBwb3NpeF9zY2hlZF9zZXRzY2hlZHVsZXIsIE1FVEhfVkFSQVJHUywgcG9zaXhfc2NoZWRfc2V0c2NoZWR1bGVyX19kb2NfX30sCisjZW5kaWYKKyAgICB7InNjaGVkX3lpZWxkIiwgICAgIHBvc2l4X3NjaGVkX3lpZWxkLCBNRVRIX05PQVJHUywgcG9zaXhfc2NoZWRfeWllbGRfX2RvY19ffSwKKyNpZmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisgICAgeyJzY2hlZF9zZXRhZmZpbml0eSIsIHBvc2l4X3NjaGVkX3NldGFmZmluaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX3NldGFmZmluaXR5X19kb2NfX30sCisgICAgeyJzY2hlZF9nZXRhZmZpbml0eSIsIHBvc2l4X3NjaGVkX2dldGFmZmluaXR5LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NjaGVkX2dldGFmZmluaXR5X19kb2NfX30sCisjZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1NDSEVEX0ggKi8KICNpZiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX19HRVRQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCkKICAgICB7Im9wZW5wdHkiLCAgICAgICAgIHBvc2l4X29wZW5wdHksIE1FVEhfTk9BUkdTLCBwb3NpeF9vcGVucHR5X19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9PUEVOUFRZIHx8IEhBVkVfX0dFVFBUWSB8fCBIQVZFX0RFVl9QVE1YICovCkBAIC03ODcwLDYgKzEwODc3LDkgQEAKICNpZmRlZiBIQVZFX0dFVEdJRAogICAgIHsiZ2V0Z2lkIiwgICAgICAgICAgcG9zaXhfZ2V0Z2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0Z2lkX19kb2NfX30sCiAjZW5kaWYgLyogSEFWRV9HRVRHSUQgKi8KKyNpZmRlZiBIQVZFX0dFVEdST1VQTElTVAorICAgIHsiZ2V0Z3JvdXBsaXN0IiwgICAgcG9zaXhfZ2V0Z3JvdXBsaXN0LCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2dldGdyb3VwbGlzdF9fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9HRVRHUk9VUFMKICAgICB7ImdldGdyb3VwcyIsICAgICAgIHBvc2l4X2dldGdyb3VwcywgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGdyb3Vwc19fZG9jX199LAogI2VuZGlmCkBAIC03ODk4LDcgKzEwOTA4LDYgQEAKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgeyJzdGFydGZpbGUiLCAgICAgICB3aW4zMl9zdGFydGZpbGUsIE1FVEhfVkFSQVJHUywgd2luMzJfc3RhcnRmaWxlX19kb2NfX30sCiAgICAgeyJraWxsIiwgICAgd2luMzJfa2lsbCwgTUVUSF9WQVJBUkdTLCB3aW4zMl9raWxsX19kb2NfX30sCi0gICAgeyJsaW5rIiwgICAgd2luMzJfbGluaywgTUVUSF9WQVJBUkdTLCB3aW4zMl9saW5rX19kb2NfX30sCiAjZW5kaWYKICNpZmRlZiBIQVZFX1NFVFVJRAogICAgIHsic2V0dWlkIiwgICAgICAgICAgcG9zaXhfc2V0dWlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3NldHVpZF9fZG9jX199LApAQCAtNzkzOSw2ICsxMDk0OCw5IEBACiAjaWZkZWYgSEFWRV9XQUlUNAogICAgIHsid2FpdDQiLCAgICAgICAgICAgcG9zaXhfd2FpdDQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdDRfX2RvY19ffSwKICNlbmRpZiAvKiBIQVZFX1dBSVQ0ICovCisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorICAgIHsid2FpdGlkIiwgICAgICAgICAgcG9zaXhfd2FpdGlkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dhaXRpZF9fZG9jX199LAorI2VuZGlmCiAjaWYgZGVmaW5lZChIQVZFX1dBSVRQSUQpIHx8IGRlZmluZWQoSEFWRV9DV0FJVCkKICAgICB7IndhaXRwaWQiLCAgICAgICAgIHBvc2l4X3dhaXRwaWQsIE1FVEhfVkFSQVJHUywgcG9zaXhfd2FpdHBpZF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfV0FJVFBJRCAqLwpAQCAtNzk1NywyNSArMTA5NjksNTMgQEAKICNpZmRlZiBIQVZFX1RDU0VUUEdSUAogICAgIHsidGNzZXRwZ3JwIiwgICAgICAgcG9zaXhfdGNzZXRwZ3JwLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3Rjc2V0cGdycF9fZG9jX199LAogI2VuZGlmIC8qIEhBVkVfVENTRVRQR1JQICovCi0gICAgeyJvcGVuIiwgICAgICAgICAgICBwb3NpeF9vcGVuLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X29wZW5fX2RvY19ffSwKKyAgICB7Im9wZW4iLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9vcGVuLFwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9vcGVuX19kb2NfX30sCiAgICAgeyJjbG9zZSIsICAgICAgICAgICBwb3NpeF9jbG9zZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZV9fZG9jX199LAogICAgIHsiY2xvc2VyYW5nZSIsICAgICAgcG9zaXhfY2xvc2VyYW5nZSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jbG9zZXJhbmdlX19kb2NfX30sCiAgICAgeyJkZXZpY2VfZW5jb2RpbmciLCBkZXZpY2VfZW5jb2RpbmcsIE1FVEhfVkFSQVJHUywgZGV2aWNlX2VuY29kaW5nX19kb2NfX30sCiAgICAgeyJkdXAiLCAgICAgICAgICAgICBwb3NpeF9kdXAsIE1FVEhfVkFSQVJHUywgcG9zaXhfZHVwX19kb2NfX30sCiAgICAgeyJkdXAyIiwgICAgICAgICAgICBwb3NpeF9kdXAyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2R1cDJfX2RvY19ffSwKKyNpZmRlZiBIQVZFX0xPQ0tGCisgICAgeyJsb2NrZiIsICAgICAgICAgICBwb3NpeF9sb2NrZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9sb2NrZl9fZG9jX199LAorI2VuZGlmCiAgICAgeyJsc2VlayIsICAgICAgICAgICBwb3NpeF9sc2VlaywgTUVUSF9WQVJBUkdTLCBwb3NpeF9sc2Vla19fZG9jX199LAogICAgIHsicmVhZCIsICAgICAgICAgICAgcG9zaXhfcmVhZCwgTUVUSF9WQVJBUkdTLCBwb3NpeF9yZWFkX19kb2NfX30sCisjaWZkZWYgSEFWRV9SRUFEVgorICAgIHsicmVhZHYiLCAgICAgICAgICAgcG9zaXhfcmVhZHYsIE1FVEhfVkFSQVJHUywgcG9zaXhfcmVhZHZfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUFJFQUQKKyAgICB7InByZWFkIiwgICAgICAgICAgIHBvc2l4X3ByZWFkLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3ByZWFkX19kb2NfX30sCisjZW5kaWYKICAgICB7IndyaXRlIiwgICAgICAgICAgIHBvc2l4X3dyaXRlLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3dyaXRlX19kb2NfX30sCisjaWZkZWYgSEFWRV9XUklURVYKKyAgICB7IndyaXRldiIsICAgICAgICAgIHBvc2l4X3dyaXRldiwgTUVUSF9WQVJBUkdTLCBwb3NpeF93cml0ZXZfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUFdSSVRFCisgICAgeyJwd3JpdGUiLCAgICAgICAgICBwb3NpeF9wd3JpdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcHdyaXRlX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NFTkRGSUxFCisgICAgeyJzZW5kZmlsZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfc2VuZGZpbGUsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfc2VuZGZpbGVfX2RvY19ffSwKKyNlbmRpZgogICAgIHsiZnN0YXQiLCAgICAgICAgICAgcG9zaXhfZnN0YXQsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnN0YXRfX2RvY19ffSwKICAgICB7ImlzYXR0eSIsICAgICAgICAgIHBvc2l4X2lzYXR0eSwgTUVUSF9WQVJBUkdTLCBwb3NpeF9pc2F0dHlfX2RvY19ffSwKICNpZmRlZiBIQVZFX1BJUEUKICAgICB7InBpcGUiLCAgICAgICAgICAgIHBvc2l4X3BpcGUsIE1FVEhfTk9BUkdTLCBwb3NpeF9waXBlX19kb2NfX30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1BJUEUyCisgICAgeyJwaXBlMiIsICAgICAgICAgICBwb3NpeF9waXBlMiwgTUVUSF9PLCBwb3NpeF9waXBlMl9fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9NS0ZJRk8KLSAgICB7Im1rZmlmbyIsICAgICAgICAgIHBvc2l4X21rZmlmbywgTUVUSF9WQVJBUkdTLCBwb3NpeF9ta2ZpZm9fX2RvY19ffSwKKyAgICB7Im1rZmlmbyIsICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta2ZpZm8sCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfbWtmaWZvX19kb2NfX30sCiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfTUtOT0QpICYmIGRlZmluZWQoSEFWRV9NQUtFREVWKQotICAgIHsibWtub2QiLCAgICAgICAgICAgcG9zaXhfbWtub2QsIE1FVEhfVkFSQVJHUywgcG9zaXhfbWtub2RfX2RvY19ffSwKKyAgICB7Im1rbm9kIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9ta25vZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpeF9ta25vZF9fZG9jX199LAogI2VuZGlmCiAjaWZkZWYgSEFWRV9ERVZJQ0VfTUFDUk9TCiAgICAgeyJtYWpvciIsICAgICAgICAgICBwb3NpeF9tYWpvciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9tYWpvcl9fZG9jX199LApAQCAtNzk4NSw2ICsxMTAyNSwxNyBAQAogI2lmZGVmIEhBVkVfRlRSVU5DQVRFCiAgICAgeyJmdHJ1bmNhdGUiLCAgICAgICBwb3NpeF9mdHJ1bmNhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfZnRydW5jYXRlX19kb2NfX30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX1RSVU5DQVRFCisgICAgeyJ0cnVuY2F0ZSIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfdHJ1bmNhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfdHJ1bmNhdGVfX2RvY19ffSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCisgICAgeyJwb3NpeF9mYWxsb2NhdGUiLCBwb3NpeF9wb3NpeF9mYWxsb2NhdGUsIE1FVEhfVkFSQVJHUywgcG9zaXhfcG9zaXhfZmFsbG9jYXRlX19kb2NfX30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKKyAgICB7InBvc2l4X2ZhZHZpc2UiLCAgIHBvc2l4X3Bvc2l4X2ZhZHZpc2UsIE1FVEhfVkFSQVJHUywgcG9zaXhfcG9zaXhfZmFkdmlzZV9fZG9jX199LAorI2VuZGlmCiAjaWZkZWYgSEFWRV9QVVRFTlYKICAgICB7InB1dGVudiIsICAgICAgICAgIHBvc2l4X3B1dGVudiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9wdXRlbnZfX2RvY19ffSwKICNlbmRpZgpAQCAtNzk5OCw2ICsxMTA0OSw5IEBACiAjaWZkZWYgSEFWRV9GU1lOQwogICAgIHsiZnN5bmMiLCAgICAgICBwb3NpeF9mc3luYywgTUVUSF9PLCBwb3NpeF9mc3luY19fZG9jX199LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TWU5DCisgICAgeyJzeW5jIiwgICAgICAgIHBvc2l4X3N5bmMsIE1FVEhfTk9BUkdTLCBwb3NpeF9zeW5jX19kb2NfX30sCisjZW5kaWYKICNpZmRlZiBIQVZFX0ZEQVRBU1lOQwogICAgIHsiZmRhdGFzeW5jIiwgICBwb3NpeF9mZGF0YXN5bmMsICBNRVRIX08sIHBvc2l4X2ZkYXRhc3luY19fZG9jX199LAogI2VuZGlmCkBAIC04MDMxLDcgKzExMDg1LDkgQEAKICAgICB7ImZzdGF0dmZzIiwgICAgICAgIHBvc2l4X2ZzdGF0dmZzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X2ZzdGF0dmZzX19kb2NfX30sCiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpCi0gICAgeyJzdGF0dmZzIiwgICAgICAgICBwb3NpeF9zdGF0dmZzLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3N0YXR2ZnNfX2RvY19ffSwKKyAgICB7InN0YXR2ZnMiLCAgICAgICAgIChQeUNGdW5jdGlvbilwb3NpeF9zdGF0dmZzLAorICAgICAgICAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l4X3N0YXR2ZnNfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfQ09ORlNUUgogICAgIHsiY29uZnN0ciIsICAgICAgICAgcG9zaXhfY29uZnN0ciwgTUVUSF9WQVJBUkdTLCBwb3NpeF9jb25mc3RyX19kb2NfX30sCkBAIC04MDQzLDcgKzExMDk5LDkgQEAKICAgICB7ImZwYXRoY29uZiIsICAgICAgIHBvc2l4X2ZwYXRoY29uZiwgTUVUSF9WQVJBUkdTLCBwb3NpeF9mcGF0aGNvbmZfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfUEFUSENPTkYKLSAgICB7InBhdGhjb25mIiwgICAgICAgIHBvc2l4X3BhdGhjb25mLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X3BhdGhjb25mX19kb2NfX30sCisgICAgeyJwYXRoY29uZiIsICAgICAgICAoUHlDRnVuY3Rpb24pcG9zaXhfcGF0aGNvbmYsCisgICAgICAgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXhfcGF0aGNvbmZfX2RvY19ffSwKICNlbmRpZgogICAgIHsiYWJvcnQiLCAgICAgICAgICAgcG9zaXhfYWJvcnQsIE1FVEhfTk9BUkdTLCBwb3NpeF9hYm9ydF9fZG9jX199LAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTgwNTEsNiArMTExMDksNyBAQAogICAgIHsiX2dldGZpbmFscGF0aG5hbWUiLCAgICAgICBwb3NpeF9fZ2V0ZmluYWxwYXRobmFtZSwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7Il9nZXRmaWxlaW5mb3JtYXRpb24iLCAgICAgcG9zaXhfX2dldGZpbGVpbmZvcm1hdGlvbiwgTUVUSF9WQVJBUkdTLCBOVUxMfSwKICAgICB7Il9pc2RpciIsICAgICAgICAgICAgICAgICAgcG9zaXhfX2lzZGlyLCBNRVRIX1ZBUkFSR1MsIHBvc2l4X19pc2Rpcl9fZG9jX199LAorICAgIHsiX2dldGRpc2t1c2FnZSIsICAgICAgICAgICB3aW4zMl9fZ2V0ZGlza3VzYWdlLCBNRVRIX1ZBUkFSR1MsIHdpbjMyX19nZXRkaXNrdXNhZ2VfX2RvY19ffSwKICNlbmRpZgogI2lmZGVmIEhBVkVfR0VUTE9BREFWRwogICAgIHsiZ2V0bG9hZGF2ZyIsICAgICAgcG9zaXhfZ2V0bG9hZGF2ZywgTUVUSF9OT0FSR1MsIHBvc2l4X2dldGxvYWRhdmdfX2RvY19ffSwKQEAgLTgwNjgsNiArMTExMjcsMjQgQEAKICNpZmRlZiBIQVZFX0dFVFJFU0dJRAogICAgIHsiZ2V0cmVzZ2lkIiwgICAgICAgcG9zaXhfZ2V0cmVzZ2lkLCBNRVRIX05PQVJHUywgcG9zaXhfZ2V0cmVzZ2lkX19kb2NfX30sCiAjZW5kaWYKKworI2lmZGVmIFVTRV9YQVRUUlMKKyAgICB7InNldHhhdHRyIiwgKFB5Q0Z1bmN0aW9uKXBvc2l4X3NldHhhdHRyLAorICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAgICAgICAgICAgICBwb3NpeF9zZXR4YXR0cl9fZG9jX199LAorICAgIHsiZ2V0eGF0dHIiLCAoUHlDRnVuY3Rpb24pcG9zaXhfZ2V0eGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X2dldHhhdHRyX19kb2NfX30sCisgICAgeyJyZW1vdmV4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9yZW1vdmV4YXR0ciwKKyAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgcG9zaXhfcmVtb3ZleGF0dHJfX2RvY19ffSwKKyAgICB7Imxpc3R4YXR0ciIsIChQeUNGdW5jdGlvbilwb3NpeF9saXN0eGF0dHIsCisgICAgICAgICAgICAgICAgIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCisgICAgICAgICAgICAgICAgIHBvc2l4X2xpc3R4YXR0cl9fZG9jX199LAorI2VuZGlmCisjaWYgZGVmaW5lZChURVJNU0laRV9VU0VfQ09OSU8pIHx8IGRlZmluZWQoVEVSTVNJWkVfVVNFX0lPQ1RMKQorICAgIHsiZ2V0X3Rlcm1pbmFsX3NpemUiLCBnZXRfdGVybWluYWxfc2l6ZSwgTUVUSF9WQVJBUkdTLCB0ZXJtc2l6ZV9fZG9jX199LAorI2VuZGlmCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCkBAIC04MjM1LDYgKzExMzEyLDkgQEAKICNpZmRlZiBPX1RFWFQKICAgICBpZiAoaW5zKGQsICJPX1RFWFQiLCAobG9uZylPX1RFWFQpKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBPX1hBVFRSCisgICAgaWYgKGlucyhkLCAiT19YQVRUUiIsIChsb25nKU9fWEFUVFIpKSByZXR1cm4gLTE7CisjZW5kaWYKICNpZmRlZiBPX0xBUkdFRklMRQogICAgIGlmIChpbnMoZCwgIk9fTEFSR0VGSUxFIiwgKGxvbmcpT19MQVJHRUZJTEUpKSByZXR1cm4gLTE7CiAjZW5kaWYKQEAgLTgyNDQsNiArMTEzMjQsMzggQEAKICNpZmRlZiBPX0VYTE9DSwogICAgIGlmIChpbnMoZCwgIk9fRVhMT0NLIiwgKGxvbmcpT19FWExPQ0spKSByZXR1cm4gLTE7CiAjZW5kaWYKKyNpZmRlZiBPX0VYRUMKKyAgICBpZiAoaW5zKGQsICJPX0VYRUMiLCAobG9uZylPX0VYRUMpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX1NFQVJDSAorICAgIGlmIChpbnMoZCwgIk9fU0VBUkNIIiwgKGxvbmcpT19TRUFSQ0gpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX1RUWV9JTklUCisgICAgaWYgKGlucyhkLCAiT19UVFlfSU5JVCIsIChsb25nKU9fVFRZX0lOSVQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQUklPX1BST0NFU1MKKyAgICBpZiAoaW5zKGQsICJQUklPX1BST0NFU1MiLCAobG9uZylQUklPX1BST0NFU1MpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQUklPX1BHUlAKKyAgICBpZiAoaW5zKGQsICJQUklPX1BHUlAiLCAobG9uZylQUklPX1BHUlApKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBQUklPX1VTRVIKKyAgICBpZiAoaW5zKGQsICJQUklPX1VTRVIiLCAobG9uZylQUklPX1VTRVIpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX0NMT0VYRUMKKyAgICBpZiAoaW5zKGQsICJPX0NMT0VYRUMiLCAobG9uZylPX0NMT0VYRUMpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBPX0FDQ01PREUKKyAgICBpZiAoaW5zKGQsICJPX0FDQ01PREUiLCAobG9uZylPX0FDQ01PREUpKSByZXR1cm4gLTE7CisjZW5kaWYKKworCisjaWZkZWYgU0VFS19IT0xFCisgICAgaWYgKGlucyhkLCAiU0VFS19IT0xFIiwgKGxvbmcpU0VFS19IT0xFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0VFS19EQVRBCisgICAgaWYgKGlucyhkLCAiU0VFS19EQVRBIiwgKGxvbmcpU0VFS19EQVRBKSkgcmV0dXJuIC0xOworI2VuZGlmCiAKIC8qIE1TIFdpbmRvd3MgKi8KICNpZmRlZiBPX05PSU5IRVJJVApAQCAtODI4Niw2ICsxMTM5OCwxMCBAQAogICAgIC8qIERvIG5vdCBmb2xsb3cgbGlua3MuICAgICAgKi8KICAgICBpZiAoaW5zKGQsICJPX05PRk9MTE9XIiwgKGxvbmcpT19OT0ZPTExPVykpIHJldHVybiAtMTsKICNlbmRpZgorI2lmZGVmIE9fTk9MSU5LUworICAgIC8qIEZhaWxzIGlmIGxpbmsgY291bnQgb2YgdGhlIG5hbWVkIGZpbGUgaXMgZ3JlYXRlciB0aGFuIDEgKi8KKyAgICBpZiAoaW5zKGQsICJPX05PTElOS1MiLCAobG9uZylPX05PTElOS1MpKSByZXR1cm4gLTE7CisjZW5kaWYKICNpZmRlZiBPX05PQVRJTUUKICAgICAvKiBEbyBub3QgdXBkYXRlIHRoZSBhY2Nlc3MgdGltZS4gKi8KICAgICBpZiAoaW5zKGQsICJPX05PQVRJTUUiLCAobG9uZylPX05PQVRJTUUpKSByZXR1cm4gLTE7CkBAIC04MzUyLDYgKzExNDY4LDc5IEBACiAgICAgaWYgKGlucyhkLCAiU1RfTk9TVUlEIiwgKGxvbmcpU1RfTk9TVUlEKSkgcmV0dXJuIC0xOwogI2VuZGlmIC8qIFNUX05PU1VJRCAqLwogCisgICAgLyogRnJlZUJTRCBzZW5kZmlsZSgpIGNvbnN0YW50cyAqLworI2lmZGVmIFNGX05PRElTS0lPCisgICAgaWYgKGlucyhkLCAiU0ZfTk9ESVNLSU8iLCAobG9uZylTRl9OT0RJU0tJTykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNGX01OT1dBSVQKKyAgICBpZiAoaW5zKGQsICJTRl9NTk9XQUlUIiwgKGxvbmcpU0ZfTU5PV0FJVCkpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFNGX1NZTkMKKyAgICBpZiAoaW5zKGQsICJTRl9TWU5DIiwgKGxvbmcpU0ZfU1lOQykpIHJldHVybiAtMTsKKyNlbmRpZgorCisgICAgLyogY29uc3RhbnRzIGZvciBwb3NpeF9mYWR2aXNlICovCisjaWZkZWYgUE9TSVhfRkFEVl9OT1JNQUwKKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX05PUk1BTCIsIChsb25nKVBPU0lYX0ZBRFZfTk9STUFMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9TRVFVRU5USUFMCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9TRVFVRU5USUFMIiwgKGxvbmcpUE9TSVhfRkFEVl9TRVFVRU5USUFMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9SQU5ET00KKyAgICBpZiAoaW5zKGQsICJQT1NJWF9GQURWX1JBTkRPTSIsIChsb25nKVBPU0lYX0ZBRFZfUkFORE9NKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9OT1JFVVNFCisgICAgaWYgKGlucyhkLCAiUE9TSVhfRkFEVl9OT1JFVVNFIiwgKGxvbmcpUE9TSVhfRkFEVl9OT1JFVVNFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9XSUxMTkVFRAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfV0lMTE5FRUQiLCAobG9uZylQT1NJWF9GQURWX1dJTExORUVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUE9TSVhfRkFEVl9ET05UTkVFRAorICAgIGlmIChpbnMoZCwgIlBPU0lYX0ZBRFZfRE9OVE5FRUQiLCAobG9uZylQT1NJWF9GQURWX0RPTlRORUVEKSkgcmV0dXJuIC0xOworI2VuZGlmCisKKyAgICAvKiBjb25zdGFudHMgZm9yIHdhaXRpZCAqLworI2lmIGRlZmluZWQoSEFWRV9TWVNfV0FJVF9IKSAmJiBkZWZpbmVkKEhBVkVfV0FJVElEKQorICAgIGlmIChpbnMoZCwgIlBfUElEIiwgKGxvbmcpUF9QSUQpKSByZXR1cm4gLTE7CisgICAgaWYgKGlucyhkLCAiUF9QR0lEIiwgKGxvbmcpUF9QR0lEKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlBfQUxMIiwgKGxvbmcpUF9BTEwpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBXRVhJVEVECisgICAgaWYgKGlucyhkLCAiV0VYSVRFRCIsIChsb25nKVdFWElURUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBXTk9XQUlUCisgICAgaWYgKGlucyhkLCAiV05PV0FJVCIsIChsb25nKVdOT1dBSVQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBXU1RPUFBFRAorICAgIGlmIChpbnMoZCwgIldTVE9QUEVEIiwgKGxvbmcpV1NUT1BQRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfRVhJVEVECisgICAgaWYgKGlucyhkLCAiQ0xEX0VYSVRFRCIsIChsb25nKUNMRF9FWElURUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfRFVNUEVECisgICAgaWYgKGlucyhkLCAiQ0xEX0RVTVBFRCIsIChsb25nKUNMRF9EVU1QRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfVFJBUFBFRAorICAgIGlmIChpbnMoZCwgIkNMRF9UUkFQUEVEIiwgKGxvbmcpQ0xEX1RSQVBQRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBDTERfQ09OVElOVUVECisgICAgaWYgKGlucyhkLCAiQ0xEX0NPTlRJTlVFRCIsIChsb25nKUNMRF9DT05USU5VRUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKworICAgIC8qIGNvbnN0YW50cyBmb3IgbG9ja2YgKi8KKyNpZmRlZiBGX0xPQ0sKKyAgICBpZiAoaW5zKGQsICJGX0xPQ0siLCAobG9uZylGX0xPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX1RMT0NLCisgICAgaWYgKGlucyhkLCAiRl9UTE9DSyIsIChsb25nKUZfVExPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX1VMT0NLCisgICAgaWYgKGlucyhkLCAiRl9VTE9DSyIsIChsb25nKUZfVUxPQ0spKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBGX1RFU1QKKyAgICBpZiAoaW5zKGQsICJGX1RFU1QiLCAobG9uZylGX1RFU1QpKSByZXR1cm4gLTE7CisjZW5kaWYKKwogI2lmZGVmIEhBVkVfU1BBV05WCiAjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKICAgICBpZiAoaW5zKGQsICJQX1dBSVQiLCAobG9uZylQX1dBSVQpKSByZXR1cm4gLTE7CkBAIC04MzgzLDYgKzExNTcyLDY0IEBACiAjZW5kaWYKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TQ0hFRF9ICisgICAgaWYgKGlucyhkLCAiU0NIRURfT1RIRVIiLCAobG9uZylTQ0hFRF9PVEhFUikpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9GSUZPIiwgKGxvbmcpU0NIRURfRklGTykpIHJldHVybiAtMTsKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9SUiIsIChsb25nKVNDSEVEX1JSKSkgcmV0dXJuIC0xOworI2lmZGVmIFNDSEVEX1NQT1JBRElDCisgICAgaWYgKGlucyhkLCAiU0NIRURfU1BPUkFESUMiLCAobG9uZylTQ0hFRF9TUE9SQURJQykgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfQkFUQ0gKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9CQVRDSCIsIChsb25nKVNDSEVEX0JBVENIKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfSURMRQorICAgIGlmIChpbnMoZCwgIlNDSEVEX0lETEUiLCAobG9uZylTQ0hFRF9JRExFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfUkVTRVRfT05fRk9SSworICAgIGlmIChpbnMoZCwgIlNDSEVEX1JFU0VUX09OX0ZPUksiLCAobG9uZylTQ0hFRF9SRVNFVF9PTl9GT1JLKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfU1lTCisgICAgaWYgKGlucyhkLCAiU0NIRURfU1lTIiwgKGxvbmcpU0NIRURfU1lTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfSUEKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9JQSIsIChsb25nKVNDSEVEX0lBKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfRlNTCisgICAgaWYgKGlucyhkLCAiU0NIRURfRlNTIiwgKGxvbmcpU0NIRURfRlNTKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgU0NIRURfRlgKKyAgICBpZiAoaW5zKGQsICJTQ0hFRF9GWCIsIChsb25nKVNDSEVEX0ZTUykpIHJldHVybiAtMTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBVU0VfWEFUVFJTCisgICAgaWYgKGlucyhkLCAiWEFUVFJfQ1JFQVRFIiwgKGxvbmcpWEFUVFJfQ1JFQVRFKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlhBVFRSX1JFUExBQ0UiLCAobG9uZylYQVRUUl9SRVBMQUNFKSkgcmV0dXJuIC0xOworICAgIGlmIChpbnMoZCwgIlhBVFRSX1NJWkVfTUFYIiwgKGxvbmcpWEFUVFJfU0laRV9NQVgpKSByZXR1cm4gLTE7CisjZW5kaWYKKworI2lmZGVmIFJUTERfTEFaWQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0xBWlkpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX05PVworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PVykpIHJldHVybiAtMTsKKyNlbmRpZgorI2lmZGVmIFJUTERfR0xPQkFMCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfR0xPQkFMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9MT0NBTAorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX0xPQ0FMKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9OT0RFTEVURQorICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhkLCBSVExEX05PREVMRVRFKSkgcmV0dXJuIC0xOworI2VuZGlmCisjaWZkZWYgUlRMRF9OT0xPQUQKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8oZCwgUlRMRF9OT0xPQUQpKSByZXR1cm4gLTE7CisjZW5kaWYKKyNpZmRlZiBSVExEX0RFRVBCSU5ECisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKGQsIFJUTERfREVFUEJJTkQpKSByZXR1cm4gLTE7CisjZW5kaWYKKwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAgICAgaWYgKGluc2VydHZhbHVlcyhkKSkgcmV0dXJuIC0xOwogI2VuZGlmCkBAIC04NDE2LDEwICsxMTY2MywxMzggQEAKIH07CiAKIAorc3RhdGljIGNoYXIgKmhhdmVfZnVuY3Rpb25zW10gPSB7CisKKyNpZmRlZiBIQVZFX0ZBQ0NFU1NBVAorICAgICJIQVZFX0ZBQ0NFU1NBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkNIRElSCisgICAgIkhBVkVfRkNIRElSIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GQ0hNT0QKKyAgICAiSEFWRV9GQ0hNT0QiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE1PREFUCisgICAgIkhBVkVfRkNITU9EQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZDSE9XTgorICAgICJIQVZFX0ZDSE9XTiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRkVYRUNWRQorICAgICJIQVZFX0ZFWEVDVkUiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0ZET1BFTkRJUgorICAgICJIQVZFX0ZET1BFTkRJUiIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlBBVEhDT05GCisgICAgIkhBVkVfRlBBVEhDT05GIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GU1RBVEFUCisgICAgIkhBVkVfRlNUQVRBVCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlNUQVRWRlMKKyAgICAiSEFWRV9GU1RBVFZGUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlRSVU5DQVRFCisgICAgIkhBVkVfRlRSVU5DQVRFIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVVRJTUVOUworICAgICJIQVZFX0ZVVElNRU5TIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9GVVRJTUVTCisgICAgIkhBVkVfRlVUSU1FUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfRlVUSU1FU0FUCisgICAgIkhBVkVfRlVUSU1FU0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSU5LQVQKKyAgICAiSEFWRV9MSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xDSEZMQUdTCisgICAgIkhBVkVfTENIRkxBR1MiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX0xDSE1PRAorICAgICJIQVZFX0xDSE1PRCIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTENIT1dOCisgICAgIkhBVkVfTENIT1dOIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MU1RBVAorICAgICJIQVZFX0xTVEFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MVVRJTUVTCisgICAgIkhBVkVfTFVUSU1FUyIsCisjZW5kaWYKKworI2lmZGVmIEhBVkVfTUtESVJBVAorICAgICJIQVZFX01LRElSQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LRklGT0FUCisgICAgIkhBVkVfTUtGSUZPQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX01LTk9EQVQKKyAgICAiSEFWRV9NS05PREFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9PUEVOQVQKKyAgICAiSEFWRV9PUEVOQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1JFQURMSU5LQVQKKyAgICAiSEFWRV9SRUFETElOS0FUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9SRU5BTUVBVAorICAgICJIQVZFX1JFTkFNRUFUIiwKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWU1MSU5LQVQKKyAgICAiSEFWRV9TWU1MSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1VOTElOS0FUCisgICAgIkhBVkVfVU5MSU5LQVQiLAorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1VUSU1FTlNBVAorICAgICJIQVZFX1VUSU1FTlNBVCIsCisjZW5kaWYKKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAiTVNfV0lORE9XUyIsCisjZW5kaWYKKworICAgIE5VTEwKK307CisKKwogUHlNT0RJTklUX0ZVTkMKIElOSVRGVU5DKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm0sICp2OworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIGNoYXIgKip0cmFjZTsKIAogI2lmIGRlZmluZWQoSEFWRV9TWU1MSU5LKSAmJiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2luMzJfY2FuX3N5bWxpbmsgPSBlbmFibGVfc3ltbGluaygpOwpAQCAtODQ1MSw2ICsxMTgyNiwxMSBAQAogI2VuZGlmCiAKICAgICBpZiAoIWluaXRpYWxpemVkKSB7CisjaWYgZGVmaW5lZChIQVZFX1dBSVRJRCkgJiYgIWRlZmluZWQoX19BUFBMRV9fKQorICAgICAgICB3YWl0aWRfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi53YWl0aWRfcmVzdWx0IjsKKyAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmV2FpdGlkUmVzdWx0VHlwZSwgJndhaXRpZF9yZXN1bHRfZGVzYyk7CisjZW5kaWYKKwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc3RhdF9yZXN1bHQiOwogICAgICAgICBzdGF0X3Jlc3VsdF9kZXNjLmZpZWxkc1s3XS5uYW1lID0gUHlTdHJ1Y3RTZXF1ZW5jZV9Vbm5hbWVkRmllbGQ7CiAgICAgICAgIHN0YXRfcmVzdWx0X2Rlc2MuZmllbGRzWzhdLm5hbWUgPSBQeVN0cnVjdFNlcXVlbmNlX1VubmFtZWRGaWVsZDsKQEAgLTg0NzAsMTMgKzExODUwLDM4IEBACiAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSA2MDsgLyogbWFnaWMgZmFsbGJhY2sgdmFsdWU7IG1heSBiZSBib2d1cyAqLwogIyAgZW5kaWYKICNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFBBUkFNKSB8fCBkZWZpbmVkKEhBVkVfU0NIRURfU0VUU0NIRURVTEVSKQorICAgICAgICBzY2hlZF9wYXJhbV9kZXNjLm5hbWUgPSBNT0ROQU1FICIuc2NoZWRfcGFyYW0iOworICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTY2hlZFBhcmFtVHlwZSwgJnNjaGVkX3BhcmFtX2Rlc2MpOworICAgICAgICBTY2hlZFBhcmFtVHlwZS50cF9uZXcgPSBzY2hlZF9wYXJhbV9uZXc7CisjZW5kaWYKKworICAgICAgICAvKiBpbml0aWFsaXplIFRlcm1pbmFsU2l6ZV9pbmZvICovCisgICAgICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRlcm1pbmFsU2l6ZVR5cGUsICZUZXJtaW5hbFNpemVfZGVzYyk7CiAgICAgfQorI2lmIGRlZmluZWQoSEFWRV9XQUlUSUQpICYmICFkZWZpbmVkKF9fQVBQTEVfXykKKyAgICBQeV9JTkNSRUYoKFB5T2JqZWN0KikgJldhaXRpZFJlc3VsdFR5cGUpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAid2FpdGlkX3Jlc3VsdCIsIChQeU9iamVjdCopICZXYWl0aWRSZXN1bHRUeXBlKTsKKyNlbmRpZgogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU3RhdFJlc3VsdFR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RhdF9yZXN1bHQiLCAoUHlPYmplY3QqKSAmU3RhdFJlc3VsdFR5cGUpOwogICAgIFB5X0lOQ1JFRigoUHlPYmplY3QqKSAmU3RhdFZGU1Jlc3VsdFR5cGUpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RhdHZmc19yZXN1bHQiLAogICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSAmU3RhdFZGU1Jlc3VsdFR5cGUpOwotICAgIGluaXRpYWxpemVkID0gMTsKKworI2lmIGRlZmluZWQoSEFWRV9TQ0hFRF9TRVRQQVJBTSkgfHwgZGVmaW5lZChIQVZFX1NDSEVEX1NFVFNDSEVEVUxFUikKKyAgICBQeV9JTkNSRUYoJlNjaGVkUGFyYW1UeXBlKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInNjaGVkX3BhcmFtIiwgKFB5T2JqZWN0ICopJlNjaGVkUGFyYW1UeXBlKTsKKyNlbmRpZgorCisgICAgdGltZXNfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi50aW1lc19yZXN1bHQiOworICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlRpbWVzUmVzdWx0VHlwZSwgJnRpbWVzX3Jlc3VsdF9kZXNjKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInRpbWVzX3Jlc3VsdCIsIChQeU9iamVjdCAqKSZUaW1lc1Jlc3VsdFR5cGUpOworCisgICAgdW5hbWVfcmVzdWx0X2Rlc2MubmFtZSA9IE1PRE5BTUUgIi51bmFtZV9yZXN1bHQiOworICAgIFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUoJlVuYW1lUmVzdWx0VHlwZSwgJnVuYW1lX3Jlc3VsdF9kZXNjKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgInVuYW1lX3Jlc3VsdCIsIChQeU9iamVjdCAqKSZVbmFtZVJlc3VsdFR5cGUpOwogCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgLyoKQEAgLTg0ODYsNyArMTE4OTEsNyBAQAogICAgICAqIGN1cnJlbnRseSBhY3RpdmUgcGxhdGZvcm0uCiAgICAgICoKICAgICAgKiBUaGlzIGJsb2NrIGFsbG93IG9uZSB0byB1c2UgYSBweXRob24gYmluYXJ5IHRoYXQgd2FzIGJ1aWxkIG9uCi0gICAgICogT1NYIDEwLjQgb24gT1NYIDEwLjMsIHdpdGhvdXQgbG9vc2luZyBhY2Nlc3MgdG8gbmV3IEFQSXMgb24KKyAgICAgKiBPU1ggMTAuNCBvbiBPU1ggMTAuMywgd2l0aG91dCBsb3NpbmcgYWNjZXNzIHRvIG5ldyBBUElzIG9uCiAgICAgICogT1NYIDEwLjQuCiAgICAgICovCiAjaWZkZWYgSEFWRV9GU1RBVFZGUwpAQCAtODUxNSw2ICsxMTkyMCw0MyBAQAogCiAKICNlbmRpZiAvKiBfX0FQUExFX18gKi8KKworICAgIFB5X0lOQ1JFRigmVGVybWluYWxTaXplVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJ0ZXJtaW5hbF9zaXplIiwgKFB5T2JqZWN0KikgJlRlcm1pbmFsU2l6ZVR5cGUpOworCisgICAgYmlsbGlvbiA9IFB5TG9uZ19Gcm9tTG9uZygxMDAwMDAwMDAwKTsKKyAgICBpZiAoIWJpbGxpb24pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogc3VwcHJlc3MgImZ1bmN0aW9uIG5vdCB1c2VkIiB3YXJuaW5ncyAqLworICAgIHsKKyAgICBpbnQgaWdub3JlZDsKKyAgICBmZF9zcGVjaWZpZWQoIiIsIC0xKTsKKyAgICBmb2xsb3dfc3ltbGlua3Nfc3BlY2lmaWVkKCIiLCAxKTsKKyAgICBkaXJfZmRfYW5kX2ZvbGxvd19zeW1saW5rc19pbnZhbGlkKCJjaG1vZCIsIERFRkFVTFRfRElSX0ZELCAxKTsKKyAgICBkaXJfZmRfY29udmVydGVyKFB5X05vbmUsICZpZ25vcmVkKTsKKyAgICBkaXJfZmRfdW5hdmFpbGFibGUoUHlfTm9uZSwgJmlnbm9yZWQpOworICAgIH0KKworICAgIC8qCisgICAgICogcHJvdmlkZSBsaXN0IG9mIGxvY2FsbHkgYXZhaWxhYmxlIGZ1bmN0aW9ucworICAgICAqIHNvIG9zLnB5IGNhbiBwb3B1bGF0ZSBzdXBwb3J0XyogbGlzdHMKKyAgICAgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAodHJhY2UgPSBoYXZlX2Z1bmN0aW9uczsgKnRyYWNlOyB0cmFjZSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0RlY29kZUFTQ0lJKCp0cmFjZSwgc3RybGVuKCp0cmFjZSksIE5VTEwpOworICAgICAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgdW5pY29kZSkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIH0KKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9oYXZlX2Z1bmN0aW9ucyIsIGxpc3QpOworCisgICAgaW5pdGlhbGl6ZWQgPSAxOworCiAgICAgcmV0dXJuIG07CiAKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggNGI5Njg3YS4uM2Y1OWYwZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTEwMCwxNiArMTAwLDE3IEBACiBzZXRfZXJyb3IoeG1scGFyc2VvYmplY3QgKnNlbGYsIGVudW0gWE1MX0Vycm9yIGNvZGUpCiB7CiAgICAgUHlPYmplY3QgKmVycjsKLSAgICBjaGFyIGJ1ZmZlclsyNTZdOworICAgIFB5T2JqZWN0ICpidWZmZXI7CiAgICAgWE1MX1BhcnNlciBwYXJzZXIgPSBzZWxmLT5pdHNlbGY7CiAgICAgaW50IGxpbmVubyA9IFhNTF9HZXRFcnJvckxpbmVOdW1iZXIocGFyc2VyKTsKICAgICBpbnQgY29sdW1uID0gWE1MX0dldEVycm9yQ29sdW1uTnVtYmVyKHBhcnNlcik7CiAKLSAgICAvKiBUaGVyZSBpcyBubyByaXNrIG9mIG92ZXJmbG93aW5nIHRoaXMgYnVmZmVyLCBzaW5jZQotICAgICAgIGV2ZW4gZm9yIDY0LWJpdCBpbnRlZ2VycywgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZS4gKi8KLSAgICBzcHJpbnRmKGJ1ZmZlciwgIiUuMjAwczogbGluZSAlaSwgY29sdW1uICVpIiwKLSAgICAgICAgICAgIFhNTF9FcnJvclN0cmluZyhjb2RlKSwgbGluZW5vLCBjb2x1bW4pOwotICAgIGVyciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihFcnJvck9iamVjdCwgInMiLCBidWZmZXIpOworICAgIGJ1ZmZlciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlczogbGluZSAlaSwgY29sdW1uICVpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRXJyb3JTdHJpbmcoY29kZSksIGxpbmVubywgY29sdW1uKTsKKyAgICBpZiAoYnVmZmVyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVyciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihFcnJvck9iamVjdCwgIk8iLCBidWZmZXIpOworICAgIFB5X0RFQ1JFRihidWZmZXIpOwogICAgIGlmICggIGVyciAhPSBOVUxMCiAgICAgICAgICAgJiYgc2V0X2Vycm9yX2F0dHIoZXJyLCAiY29kZSIsIGNvZGUpCiAgICAgICAgICAgJiYgc2V0X2Vycm9yX2F0dHIoZXJyLCAib2Zmc2V0IiwgY29sdW1uKQpAQCAtODQyLDkgKzg0Myw5IEBACiB7CiAgICAgaW50IHJ2ID0gMTsKICAgICBQeU9iamVjdCAqcmVhZG1ldGhvZCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIocmVhZCk7CiAKLQotICAgIHJlYWRtZXRob2QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGYsICJyZWFkIik7CisgICAgcmVhZG1ldGhvZCA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZCk7CiAgICAgaWYgKHJlYWRtZXRob2QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IG11c3QgaGF2ZSAncmVhZCcgYXR0cmlidXRlIik7CkBAIC0xMDMyLDE2ICsxMDMzLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogeG1scGFyc2VfVXNlRm9yZWlnbkRURCh4bWxwYXJzZW9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKmZsYWdvYmogPSBOVUxMOwogICAgIGludCBmbGFnID0gMTsKICAgICBlbnVtIFhNTF9FcnJvciByYzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxPOlVzZUZvcmVpZ25EVEQiLCAmZmxhZ29iaikpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8cDpVc2VGb3JlaWduRFREIiwgJmZsYWcpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZmxhZ29iaiAhPSBOVUxMKSB7Ci0gICAgICAgIGZsYWcgPSBQeU9iamVjdF9Jc1RydWUoZmxhZ29iaik7Ci0gICAgICAgIGlmIChmbGFnIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICByYyA9IFhNTF9Vc2VGb3JlaWduRFREKHNlbGYtPml0c2VsZiwgZmxhZyA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFKTsKICAgICBpZiAocmMgIT0gWE1MX0VSUk9SX05PTkUpIHsKICAgICAgICAgcmV0dXJuIHNldF9lcnJvcihzZWxmLCByYyk7CkBAIC0xMTA0LDE3ICsxMDk5LDIyIEBACiAgICAgUHlVbmljb2RlT2JqZWN0ICpfdV9zdHJpbmcgPSBOVUxMOwogICAgIGludCByZXN1bHQgPSAwOwogICAgIGludCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICAvKiBZZXMsIHN1cHBvcnRzIG9ubHkgOGJpdCBlbmNvZGluZ3MgKi8KICAgICBfdV9zdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopCiAgICAgICAgIFB5VW5pY29kZV9EZWNvZGUodGVtcGxhdGVfYnVmZmVyLCAyNTYsIG5hbWUsICJyZXBsYWNlIik7CiAKLSAgICBpZiAoX3Vfc3RyaW5nID09IE5VTEwpCisgICAgaWYgKF91X3N0cmluZyA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShfdV9zdHJpbmcpID09IC0xKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKF91X3N0cmluZyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKF91X3N0cmluZyk7CisKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKICAgICAgICAgLyogU3R1cGlkIHRvIGFjY2VzcyBkaXJlY3RseSwgYnV0IGZhc3QgKi8KLSAgICAgICAgUHlfVU5JQ09ERSBjID0gX3Vfc3RyaW5nLT5zdHJbaV07CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoYyA9PSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUikKICAgICAgICAgICAgIGluZm8tPm1hcFtpXSA9IC0xOwogICAgICAgICBlbHNlCkBAIC0xMjM4LDExICsxMjM4LDEzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogeG1scGFyc2VfZ2V0YXR0cm8oeG1scGFyc2VvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lb2JqKQogewotICAgIFB5X1VOSUNPREUgKm5hbWU7CisgICAgUHlfVUNTNCBmaXJzdF9jaGFyOwogICAgIGludCBoYW5kbGVybnVtID0gLTE7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKICAgICAgICAgZ290byBnZW5lcmljOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZW9iaikpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaGFuZGxlcm51bSA9IGhhbmRsZXJuYW1lMmludChuYW1lb2JqKTsKIApAQCAtMTI1NCw4ICsxMjU2LDggQEAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZW9iaik7Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ0UnKSB7CisgICAgZmlyc3RfY2hhciA9IFB5VW5pY29kZV9SRUFEX0NIQVIobmFtZW9iaiwgMCk7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ0UnKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiRXJyb3JDb2RlIikgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0dldEVycm9yQ29kZShzZWxmLT5pdHNlbGYpKTsKQEAgLTEyNjksNyArMTI3MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9HZXRFcnJvckJ5dGVJbmRleChzZWxmLT5pdHNlbGYpKTsKICAgICB9Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ0MnKSB7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ0MnKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiQ3VycmVudExpbmVOdW1iZXIiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0Q3VycmVudExpbmVOdW1iZXIoc2VsZi0+aXRzZWxmKSk7CkBAIC0xMjgwLDcgKzEyODIsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfR2V0Q3VycmVudEJ5dGVJbmRleChzZWxmLT5pdHNlbGYpKTsKICAgICB9Ci0gICAgaWYgKG5hbWVbMF0gPT0gJ2InKSB7CisgICAgaWYgKGZpcnN0X2NoYXIgPT0gJ2InKSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lb2JqLCAiYnVmZmVyX3NpemUiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc2VsZi0+YnVmZmVyX3NpemUpOwogICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZW9iaiwgImJ1ZmZlcl90ZXh0IikgPT0gMCkKQEAgLTE2NzQsNyArMTY3Niw2IEBACiAgICAgUHlPYmplY3QgKmVycm9yc19tb2R1bGU7CiAgICAgUHlPYmplY3QgKm1vZGVsbW9kX25hbWU7CiAgICAgUHlPYmplY3QgKm1vZGVsX21vZHVsZTsKLSAgICBQeU9iamVjdCAqdmVyc2lvbjsKICAgICBQeU9iamVjdCAqc3lzX21vZHVsZXM7CiAgICAgUHlPYmplY3QgKnRtcG51bSwgKnRtcHN0cjsKICAgICBQeU9iamVjdCAqY29kZXNfZGljdDsKQEAgLTE3MTEsMTAgKzE3MTIsNiBAQAogICAgIFB5X0lOQ1JFRigmWG1scGFyc2V0eXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIlhNTFBhcnNlclR5cGUiLCAoUHlPYmplY3QgKikgJlhtbHBhcnNldHlwZSk7CiAKLSAgICB2ZXJzaW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUFlfVkVSU0lPTik7Ci0gICAgaWYgKCF2ZXJzaW9uKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9fdmVyc2lvbl9fIiwgdmVyc2lvbik7CiAgICAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIkVYUEFUX1ZFUlNJT04iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIFhNTF9FeHBhdFZlcnNpb24oKSk7CiAgICAgewpAQCAtMTkwNyw2ICsxOTA0LDcgQEAKICAgICBjYXBpLlNldFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBYTUxfU2V0UHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcjsKICAgICBjYXBpLlNldFVua25vd25FbmNvZGluZ0hhbmRsZXIgPSBYTUxfU2V0VW5rbm93bkVuY29kaW5nSGFuZGxlcjsKICAgICBjYXBpLlNldFVzZXJEYXRhID0gWE1MX1NldFVzZXJEYXRhOworICAgIGNhcGkuU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBYTUxfU2V0U3RhcnREb2N0eXBlRGVjbEhhbmRsZXI7CiAKICAgICAvKiBleHBvcnQgdXNpbmcgY2Fwc3VsZSAqLwogICAgIGNhcGlfb2JqZWN0ID0gUHlDYXBzdWxlX05ldygmY2FwaSwgUHlFeHBhdF9DQVBTVUxFX05BTUUsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9weXRob24uYyBiL01vZHVsZXMvcHl0aG9uLmMKaW5kZXggY2Y5MzgzZi4uYzcwYmYzNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weXRob24uYworKysgYi9Nb2R1bGVzL3B5dGhvbi5jCkBAIC01MSw2ICs1MSw3IEBACiAgICAgICAgIGFyZ3ZfY29weVtpXSA9IF9QeV9jaGFyMndjaGFyKGFyZ3ZbaV0sIE5VTEwpOwogI2VuZGlmCiAgICAgICAgIGlmICghYXJndl9jb3B5W2ldKSB7CisgICAgICAgICAgICBmcmVlKG9sZGxvYyk7CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZGVjb2RlIHRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnQgIyVpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKyAxKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCA0ZDU0ZGFkLi5hNzEwNjUyIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0yMzUsMTAgKzIzNSw5IEBACiAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAic2V0XyUuNTBzKGZ1bmMpOiBhcmd1bWVudCBub3QgY2FsbGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgYnVmKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJzZXRfJS41MHMoZnVuYyk6IGFyZ3VtZW50IG5vdCBjYWxsYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBmdW5jbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTg5Miw3ICs4OTEsNyBAQAogI2VuZGlmCiAKICNpZmRlZiBfX0FQUExFX18KLSAgICAvKiB0aGUgbGliZWRpdCByZWFkbGluZSBlbXVsYXRpb24gcmVzZXRzIGtleSBiaW5kaW5ncyBldGMgCisgICAgLyogdGhlIGxpYmVkaXQgcmVhZGxpbmUgZW11bGF0aW9uIHJlc2V0cyBrZXkgYmluZGluZ3MgZXRjCiAgICAgICogd2hlbiBjYWxsaW5nIHJsX2luaXRpYWxpemUuICBTbyBjYWxsIGl0IHVwZnJvbnQKICAgICAgKi8KICAgICBpZiAodXNpbmdfbGliZWRpdF9lbXVsYXRpb24pCkBAIC05MzIsMTEgKzkzMSwxMSBAQAogICAgICAqLwogI2lmZGVmIF9fQVBQTEVfXwogICAgIGlmICh1c2luZ19saWJlZGl0X2VtdWxhdGlvbikKLQlybF9yZWFkX2luaXRfZmlsZShOVUxMKTsKKyAgICAgICAgcmxfcmVhZF9pbml0X2ZpbGUoTlVMTCk7CiAgICAgZWxzZQogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwogICAgICAgICBybF9pbml0aWFsaXplKCk7Ci0gICAgCisKICAgICBSRVNUT1JFX0xPQ0FMRShzYXZlZF9sb2NhbGUpCiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVzb3VyY2UuYyBiL01vZHVsZXMvcmVzb3VyY2UuYwppbmRleCAxODc1ZTQ4Li4xYWVkNDk3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Jlc291cmNlLmMKKysrIGIvTW9kdWxlcy9yZXNvdXJjZS5jCkBAIC0xOCw4ICsxOCw2IEBACiAKICNkZWZpbmUgZG91YmxldGltZShUVikgKChkb3VibGUpKFRWKS50dl9zZWMgKyAoVFYpLnR2X3VzZWMgKiAwLjAwMDAwMSkKIAotc3RhdGljIFB5T2JqZWN0ICpSZXNvdXJjZUVycm9yOwotCiBQeURvY19TVFJWQVIoc3RydWN0X3J1c2FnZV9fZG9jX18sCiAic3RydWN0X3J1c2FnZTogUmVzdWx0IGZyb20gZ2V0cnVzYWdlLlxuXG4iCiAiVGhpcyBvYmplY3QgbWF5IGJlIGFjY2Vzc2VkIGVpdGhlciBhcyBhIHR1cGxlIG9mXG4iCkBAIC03Myw3ICs3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgd2hvIHBhcmFtZXRlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFJlc291cmNlRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTI1LDcgKzEyMyw3IEBACiAgICAgfQogCiAgICAgaWYgKGdldHJsaW1pdChyZXNvdXJjZSwgJnJsKSA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUmVzb3VyY2VFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xODMsNyArMTgxLDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsb3dlZCB0byByYWlzZSBtYXhpbXVtIGxpbWl0Iik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhSZXNvdXJjZUVycm9yKTsKKyAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTI0NiwxMiArMjQ0LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwotICAgIGlmIChSZXNvdXJjZUVycm9yID09IE5VTEwpIHsKLSAgICAgICAgUmVzb3VyY2VFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigicmVzb3VyY2UuZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIH0KLSAgICBQeV9JTkNSRUYoUmVzb3VyY2VFcnJvcik7Ci0gICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFJlc291cmNlRXJyb3IpOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgImVycm9yIiwgUHlFeGNfT1NFcnJvcik7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RydWN0UlVzYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RydWN0X3J1c2FnZV9kZXNjKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCmluZGV4IDk4YjMxMDguLjdjZWM0OWIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwpAQCAtNyw2ICs3LDE0IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8c3RydWN0bWVtYmVyLmg+CiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKyNpbmNsdWRlIDxzeXMvZGV2cG9sbC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNlbmRpZgorCiAjaWZkZWYgX19BUFBMRV9fCiAgICAgLyogUGVyZm9ybSBydW50aW1lIHRlc3RpbmcgZm9yIGEgYnJva2VuIHBvbGwgb24gT1NYIHRvIG1ha2UgaXQgZWFzaWVyCiAgICAgICogdG8gdXNlIHRoZSBzYW1lIGJpbmFyeSBvbiBtdWx0aXBsZSByZWxlYXNlcyBvZiB0aGUgT1MuCkBAIC01NCw4ICs2Miw2IEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXN0YXRpYyBQeU9iamVjdCAqU2VsZWN0RXJyb3I7Ci0KIC8qIGxpc3Qgb2YgUHl0aG9uIG9iamVjdHMgYW5kIHRoZWlyIGZpbGUgZGVzY3JpcHRvciAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0ICpvYmo7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3duZWQgcmVmZXJlbmNlICovCkBAIC0yMDAsOSArMjA2LDcgQEAKICAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqdG91dCA9IFB5X05vbmU7CiAgICAgZmRfc2V0IGlmZHNldCwgb2Zkc2V0LCBlZmRzZXQ7Ci0gICAgZG91YmxlIHRpbWVvdXQ7CiAgICAgc3RydWN0IHRpbWV2YWwgdHYsICp0dnA7Ci0gICAgbG9uZyBzZWNvbmRzOwogICAgIGludCBpbWF4LCBvbWF4LCBlbWF4LCBtYXg7CiAgICAgaW50IG47CiAKQEAgLTIxOSwxOCArMjIzLDMxIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUodG91dCk7Ci0gICAgICAgIGlmICh0aW1lb3V0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICB0aW1lX3Qgc2VjOworICAgICAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWV2YWwodG91dCwgJnNlYywgJnR2LnR2X3VzZWMpID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICh0aW1lb3V0ID4gKGRvdWJsZSlMT05HX01BWCkgeworICAgICAgICBhc3NlcnQoc2l6ZW9mKHR2LnR2X3NlYykgPT0gc2l6ZW9mKGxvbmcpKTsKKyNpZiBTSVpFT0ZfVElNRV9UID4gU0laRU9GX0xPTkcKKyAgICAgICAgaWYgKHNlYyA+IExPTkdfTUFYKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBwZXJpb2QgdG9vIGxvbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyB0b28gbGFyZ2UiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHNlY29uZHMgPSAobG9uZyl0aW1lb3V0OwotICAgICAgICB0aW1lb3V0ID0gdGltZW91dCAtIChkb3VibGUpc2Vjb25kczsKLSAgICAgICAgdHYudHZfc2VjID0gc2Vjb25kczsKLSAgICAgICAgdHYudHZfdXNlYyA9IChsb25nKSh0aW1lb3V0ICogMUU2KTsKKyNlbmRpZgorICAgICAgICB0di50dl9zZWMgPSAobG9uZylzZWM7CisjZWxzZQorICAgICAgICAvKiA2NC1iaXQgT1MgWCBoYXMgc3RydWN0IHRpbWV2YWwudHZfdXNlYyBhcyBhbiBpbnQgKGFuZCB0aHVzIHN0aWxsIDQKKyAgICAgICAgICAgYnl0ZXMgYXMgcmVxdWlyZWQpLCBidXQgbm8gbG9uZ2VyIGRlZmluZWQgYnkgYSBsb25nLiAqLworICAgICAgICBsb25nIHR2X3VzZWM7CisgICAgICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXZhbCh0b3V0LCAmdHYudHZfc2VjLCAmdHZfdXNlYykgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgdHYudHZfdXNlYyA9IHR2X3VzZWM7CisjZW5kaWYKKyAgICAgICAgaWYgKHR2LnR2X3NlYyA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidGltZW91dCBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICAgICAgdHZwID0gJnR2OwogICAgIH0KIApAQCAtMjY5LDExICsyODYsMTEgQEAKIAogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAobiA9PSBTT0NLRVRfRVJST1IpIHsKLSAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoU2VsZWN0RXJyb3IsIFdTQUdldExhc3RFcnJvcigpKTsKKyAgICAgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOwogICAgIH0KICNlbHNlCiAgICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhTZWxlY3RFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICB9CiAjZW5kaWYKICAgICBlbHNlIHsKQEAgLTQyMCw3ICs0MzcsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZGljdCwga2V5KSA9PSBOVUxMKSB7CiAgICAgICAgIGVycm5vID0gRU5PRU5UOwotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTUyMCw3ICs1MzcsNyBAQAogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAKICAgICBpZiAocG9sbF9yZXN1bHQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhTZWxlY3RFcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC02NDYsNiArNjYzLDMzOSBAQAogICAgIHBvbGxfbWV0aG9kcywgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMqLwogfTsKIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBpbnQgZmRfZGV2cG9sbDsKKyAgICBpbnQgbWF4X25fZmRzOworICAgIGludCBuX2ZkczsKKyAgICBzdHJ1Y3QgcG9sbGZkICpmZHM7Cit9IGRldnBvbGxPYmplY3Q7CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgZGV2cG9sbF9UeXBlOworCitzdGF0aWMgaW50IGRldnBvbGxfZmx1c2goZGV2cG9sbE9iamVjdCAqc2VsZikKK3sKKyAgICBpbnQgc2l6ZSwgbjsKKworICAgIGlmICghc2VsZi0+bl9mZHMpIHJldHVybiAwOworCisgICAgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcG9sbGZkKSpzZWxmLT5uX2ZkczsKKyAgICBzZWxmLT5uX2ZkcyA9IDA7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgbiA9IHdyaXRlKHNlbGYtPmZkX2RldnBvbGwsIHNlbGYtPmZkcywgc2l6ZSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChuID09IC0xICkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKG4gPCBzaXplKSB7CisgICAgICAgIC8qCisgICAgICAgICoqIERhdGEgd3JpdGVkIHRvIC9kZXYvcG9sbCBpcyBhIGJpbmFyeSBkYXRhIHN0cnVjdHVyZS4gSXQgaXMgbm90CisgICAgICAgICoqIGNsZWFyIHdoYXQgdG8gZG8gaWYgYSBwYXJ0aWFsIHdyaXRlIG9jY3VycmVkLiBGb3Igbm93LCByYWlzZQorICAgICAgICAqKiBhbiBleGNlcHRpb24gYW5kIHNlZSBpZiB3ZSBhY3R1YWxseSBmb3VuZCB0aGlzIHByb2JsZW0gaW4KKyAgICAgICAgKiogdGhlIHdpbGQuCisgICAgICAgICoqIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlNjM5Ny4KKyAgICAgICAgKi8KKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0lPRXJyb3IsICJmYWlsZWQgdG8gd3JpdGUgYWxsIHBvbGxmZHMuICIKKyAgICAgICAgICAgICAgICAiUGxlYXNlLCByZXBvcnQgYXQgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy8uICIKKyAgICAgICAgICAgICAgICAiRGF0YSB0byByZXBvcnQ6IFNpemUgdHJpZWQ6ICVkLCBhY3R1YWwgc2l6ZSB3cml0dGVuOiAlZC4iLAorICAgICAgICAgICAgICAgIHNpemUsIG4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgoraW50ZXJuYWxfZGV2cG9sbF9yZWdpc3RlcihkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IHJlbW92ZSkKK3sKKyAgICBQeU9iamVjdCAqbzsKKyAgICBpbnQgZmQsIGV2ZW50cyA9IFBPTExJTiB8IFBPTExQUkkgfCBQT0xMT1VUOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfGk6cmVnaXN0ZXIiLCAmbywgJmV2ZW50cykpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKG8pOworICAgIGlmIChmZCA9PSAtMSkgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAocmVtb3ZlKSB7CisgICAgICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZmQgPSBmZDsKKyAgICAgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5ldmVudHMgPSBQT0xMUkVNT1ZFOworCisgICAgICAgIGlmICgrK3NlbGYtPm5fZmRzID09IHNlbGYtPm1heF9uX2ZkcykgeworICAgICAgICAgICAgaWYgKGRldnBvbGxfZmx1c2goc2VsZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmZkID0gZmQ7CisgICAgc2VsZi0+ZmRzW3NlbGYtPm5fZmRzXS5ldmVudHMgPSBldmVudHM7CisKKyAgICBpZiAoKytzZWxmLT5uX2ZkcyA9PSBzZWxmLT5tYXhfbl9mZHMpIHsKKyAgICAgICAgaWYgKGRldnBvbGxfZmx1c2goc2VsZikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGRldnBvbGxfcmVnaXN0ZXJfZG9jLAorInJlZ2lzdGVyKGZkIFssIGV2ZW50bWFza10gKSAtPiBOb25lXG5cblwKK1JlZ2lzdGVyIGEgZmlsZSBkZXNjcmlwdG9yIHdpdGggdGhlIHBvbGxpbmcgb2JqZWN0LlxuXAorZmQgLS0gZWl0aGVyIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCB3aXRoIGEgZmlsZW5vKCkgbWV0aG9kIHJldHVybmluZyBhblxuXAorICAgICAgaW50LlxuXAorZXZlbnRzIC0tIGFuIG9wdGlvbmFsIGJpdG1hc2sgZGVzY3JpYmluZyB0aGUgdHlwZSBvZiBldmVudHMgdG8gY2hlY2sgZm9yIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX3JlZ2lzdGVyKGRldnBvbGxPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBpbnRlcm5hbF9kZXZwb2xsX3JlZ2lzdGVyKHNlbGYsIGFyZ3MsIDApOworfQorCitQeURvY19TVFJWQVIoZGV2cG9sbF9tb2RpZnlfZG9jLAorIm1vZGlmeShmZFssIGV2ZW50bWFza10pIC0+IE5vbmVcblxuXAorTW9kaWZ5IGEgcG9zc2libGUgYWxyZWFkeSByZWdpc3RlcmVkIGZpbGUgZGVzY3JpcHRvci5cblwKK2ZkIC0tIGVpdGhlciBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3Qgd2l0aCBhIGZpbGVubygpIG1ldGhvZCByZXR1cm5pbmcgYW5cblwKKyAgICAgIGludC5cblwKK2V2ZW50cyAtLSBhbiBvcHRpb25hbCBiaXRtYXNrIGRlc2NyaWJpbmcgdGhlIHR5cGUgb2YgZXZlbnRzIHRvIGNoZWNrIGZvciIpOworCitzdGF0aWMgUHlPYmplY3QgKgorZGV2cG9sbF9tb2RpZnkoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIGludGVybmFsX2RldnBvbGxfcmVnaXN0ZXIoc2VsZiwgYXJncywgMSk7Cit9CisKKworUHlEb2NfU1RSVkFSKGRldnBvbGxfdW5yZWdpc3Rlcl9kb2MsCisidW5yZWdpc3RlcihmZCkgLT4gTm9uZVxuXG5cCitSZW1vdmUgYSBmaWxlIGRlc2NyaXB0b3IgYmVpbmcgdHJhY2tlZCBieSB0aGUgcG9sbGluZyBvYmplY3QuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZXZwb2xsX3VucmVnaXN0ZXIoZGV2cG9sbE9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm8pCit7CisgICAgaW50IGZkOworCisgICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKCBvICk7CisgICAgaWYgKGZkID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHNlbGYtPmZkc1tzZWxmLT5uX2Zkc10uZmQgPSBmZDsKKyAgICBzZWxmLT5mZHNbc2VsZi0+bl9mZHNdLmV2ZW50cyA9IFBPTExSRU1PVkU7CisKKyAgICBpZiAoKytzZWxmLT5uX2ZkcyA9PSBzZWxmLT5tYXhfbl9mZHMpIHsKKyAgICAgICAgaWYgKGRldnBvbGxfZmx1c2goc2VsZikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKGRldnBvbGxfcG9sbF9kb2MsCisicG9sbCggW3RpbWVvdXRdICkgLT4gbGlzdCBvZiAoZmQsIGV2ZW50KSAyLXR1cGxlc1xuXG5cCitQb2xscyB0aGUgc2V0IG9mIHJlZ2lzdGVyZWQgZmlsZSBkZXNjcmlwdG9ycywgcmV0dXJuaW5nIGEgbGlzdCBjb250YWluaW5nIFxuXAorYW55IGRlc2NyaXB0b3JzIHRoYXQgaGF2ZSBldmVudHMgb3IgZXJyb3JzIHRvIHJlcG9ydC4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2RldnBvbGxfcG9sbChkZXZwb2xsT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBzdHJ1Y3QgZHZwb2xsIGR2cDsKKyAgICBQeU9iamVjdCAqcmVzdWx0X2xpc3QgPSBOVUxMLCAqdG91dCA9IE5VTEw7CisgICAgaW50IHBvbGxfcmVzdWx0LCBpOworICAgIGxvbmcgdGltZW91dDsKKyAgICBQeU9iamVjdCAqdmFsdWUsICpudW0xLCAqbnVtMjsKKworICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInBvbGwiLCAwLCAxLCAmdG91dCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogQ2hlY2sgdmFsdWVzIGZvciB0aW1lb3V0ICovCisgICAgaWYgKHRvdXQgPT0gTlVMTCB8fCB0b3V0ID09IFB5X05vbmUpCisgICAgICAgIHRpbWVvdXQgPSAtMTsKKyAgICBlbHNlIGlmICghUHlOdW1iZXJfQ2hlY2sodG91dCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IG11c3QgYmUgYW4gaW50ZWdlciBvciBOb25lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdG91dCA9IFB5TnVtYmVyX0xvbmcodG91dCk7CisgICAgICAgIGlmICghdG91dCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB0aW1lb3V0ID0gUHlMb25nX0FzTG9uZyh0b3V0KTsKKyAgICAgICAgUHlfREVDUkVGKHRvdXQpOworICAgICAgICBpZiAodGltZW91dCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCh0aW1lb3V0IDwgLTEpIHx8ICh0aW1lb3V0ID4gSU5UX01BWCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAidGltZW91dCBpcyBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGRldnBvbGxfZmx1c2goc2VsZikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZHZwLmRwX2ZkcyA9IHNlbGYtPmZkczsKKyAgICBkdnAuZHBfbmZkcyA9IHNlbGYtPm1heF9uX2ZkczsKKyAgICBkdnAuZHBfdGltZW91dCA9IHRpbWVvdXQ7CisKKyAgICAvKiBjYWxsIGRldnBvbGwoKSAqLworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBwb2xsX3Jlc3VsdCA9IGlvY3RsKHNlbGYtPmZkX2RldnBvbGwsIERQX1BPTEwsICZkdnApOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocG9sbF9yZXN1bHQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogYnVpbGQgdGhlIHJlc3VsdCBsaXN0ICovCisKKyAgICByZXN1bHRfbGlzdCA9IFB5TGlzdF9OZXcocG9sbF9yZXN1bHQpOworICAgIGlmICghcmVzdWx0X2xpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGVsc2UgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcG9sbF9yZXN1bHQ7IGkrKykgeworICAgICAgICAgICAgbnVtMSA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0uZmQpOworICAgICAgICAgICAgbnVtMiA9IFB5TG9uZ19Gcm9tTG9uZyhzZWxmLT5mZHNbaV0ucmV2ZW50cyk7CisgICAgICAgICAgICBpZiAoKG51bTEgPT0gTlVMTCkgfHwgKG51bTIgPT0gTlVMTCkpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKG51bTEpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYobnVtMik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIG51bTEsIG51bTIpOworICAgICAgICAgICAgUHlfREVDUkVGKG51bTEpOworICAgICAgICAgICAgUHlfREVDUkVGKG51bTIpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIGlmICgoUHlMaXN0X1NldEl0ZW0ocmVzdWx0X2xpc3QsIGksIHZhbHVlKSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0X2xpc3Q7CisKKyAgZXJyb3I6CisgICAgUHlfREVDUkVGKHJlc3VsdF9saXN0KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIGRldnBvbGxfbWV0aG9kc1tdID0geworICAgIHsicmVnaXN0ZXIiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfcmVnaXN0ZXIsCisgICAgIE1FVEhfVkFSQVJHUywgIGRldnBvbGxfcmVnaXN0ZXJfZG9jfSwKKyAgICB7Im1vZGlmeSIsICAgICAgICAgIChQeUNGdW5jdGlvbilkZXZwb2xsX21vZGlmeSwKKyAgICAgTUVUSF9WQVJBUkdTLCAgZGV2cG9sbF9tb2RpZnlfZG9jfSwKKyAgICB7InVucmVnaXN0ZXIiLCAgICAgIChQeUNGdW5jdGlvbilkZXZwb2xsX3VucmVnaXN0ZXIsCisgICAgIE1FVEhfTywgICAgICAgIGRldnBvbGxfdW5yZWdpc3Rlcl9kb2N9LAorICAgIHsicG9sbCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWRldnBvbGxfcG9sbCwKKyAgICAgTUVUSF9WQVJBUkdTLCAgZGV2cG9sbF9wb2xsX2RvY30sCisgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBkZXZwb2xsT2JqZWN0ICoKK25ld0RldlBvbGxPYmplY3Qodm9pZCkKK3sKKyAgICBkZXZwb2xsT2JqZWN0ICpzZWxmOworICAgIGludCBmZF9kZXZwb2xsLCBsaW1pdF9yZXN1bHQ7CisgICAgc3RydWN0IHBvbGxmZCAqZmRzOworICAgIHN0cnVjdCBybGltaXQgbGltaXQ7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgLyoKKyAgICAqKiBJZiB3ZSB0cnkgdG8gcHJvY2VzcyBtb3JlIHRoYXQgZ2V0cmxpbWl0KCkKKyAgICAqKiBmZHMsIHRoZSBrZXJuZWwgd2lsbCBnaXZlIGFuIGVycm9yLCBzbworICAgICoqIHdlIHNldCB0aGUgbGltaXQgaGVyZS4gSXQgaXMgYSBkeW5hbWljCisgICAgKiogdmFsdWUsIGJlY2F1c2Ugd2UgY2FuIGNoYW5nZSBybGltaXQoKSBhbnl0aW1lLgorICAgICovCisgICAgbGltaXRfcmVzdWx0ID0gZ2V0cmxpbWl0KFJMSU1JVF9OT0ZJTEUsICZsaW1pdCk7CisgICAgaWYgKGxpbWl0X3Jlc3VsdCAhPSAtMSkKKyAgICAgICAgZmRfZGV2cG9sbCA9IG9wZW4oIi9kZXYvcG9sbCIsIE9fUkRXUik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChsaW1pdF9yZXN1bHQgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGZkX2RldnBvbGwgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lKFB5RXhjX0lPRXJyb3IsICIvZGV2L3BvbGwiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZmRzID0gUHlNZW1fTkVXKHN0cnVjdCBwb2xsZmQsIGxpbWl0LnJsaW1fY3VyKTsKKyAgICBpZiAoZmRzID09IE5VTEwpIHsKKyAgICAgICAgY2xvc2UoZmRfZGV2cG9sbCk7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoZGV2cG9sbE9iamVjdCwgJmRldnBvbGxfVHlwZSk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBjbG9zZShmZF9kZXZwb2xsKTsKKyAgICAgICAgUHlNZW1fREVMKGZkcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzZWxmLT5mZF9kZXZwb2xsID0gZmRfZGV2cG9sbDsKKyAgICBzZWxmLT5tYXhfbl9mZHMgPSBsaW1pdC5ybGltX2N1cjsKKyAgICBzZWxmLT5uX2ZkcyA9IDA7CisgICAgc2VsZi0+ZmRzID0gZmRzOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKK3N0YXRpYyB2b2lkCitkZXZwb2xsX2RlYWxsb2MoZGV2cG9sbE9iamVjdCAqc2VsZikKK3sKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgY2xvc2Uoc2VsZi0+ZmRfZGV2cG9sbCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIFB5TWVtX0RFTChzZWxmLT5mZHMpOworCisgICAgUHlPYmplY3RfRGVsKHNlbGYpOworfQorCitzdGF0aWMgUHlUeXBlT2JqZWN0IGRldnBvbGxfVHlwZSA9IHsKKyAgICAvKiBUaGUgb2JfdHlwZSBmaWVsZCBtdXN0IGJlIGluaXRpYWxpemVkIGluIHRoZSBtb2R1bGUgaW5pdCBmdW5jdGlvbgorICAgICAqIHRvIGJlIHBvcnRhYmxlIHRvIFdpbmRvd3Mgd2l0aG91dCB1c2luZyBDKysuICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgInNlbGVjdC5kZXZwb2xsIiwgICAgICAgICAgIC8qdHBfbmFtZSovCisgICAgc2l6ZW9mKGRldnBvbGxPYmplY3QpLCAgICAgIC8qdHBfYmFzaWNzaXplKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCisgICAgLyogbWV0aG9kcyAqLworICAgIChkZXN0cnVjdG9yKWRldnBvbGxfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVzZXJ2ZWQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2gqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kb2MqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCovCisgICAgZGV2cG9sbF9tZXRob2RzLCAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCit9OworI2VuZGlmICAvKiBIQVZFX1NZU19ERVZQT0xMX0ggKi8KKworCisKIFB5RG9jX1NUUlZBUihwb2xsX2RvYywKICJSZXR1cm5zIGEgcG9sbGluZyBvYmplY3QsIHdoaWNoIHN1cHBvcnRzIHJlZ2lzdGVyaW5nIGFuZFxuXAogdW5yZWdpc3RlcmluZyBmaWxlIGRlc2NyaXB0b3JzLCBhbmQgdGhlbiBwb2xsaW5nIHRoZW0gZm9yIEkvTyBldmVudHMuIik7CkBAIC02NTYsNiArMTAwNiwxOSBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKiluZXdQb2xsT2JqZWN0KCk7CiB9CiAKKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKK1B5RG9jX1NUUlZBUihkZXZwb2xsX2RvYywKKyJSZXR1cm5zIGEgcG9sbGluZyBvYmplY3QsIHdoaWNoIHN1cHBvcnRzIHJlZ2lzdGVyaW5nIGFuZFxuXAordW5yZWdpc3RlcmluZyBmaWxlIGRlc2NyaXB0b3JzLCBhbmQgdGhlbiBwb2xsaW5nIHRoZW0gZm9yIEkvTyBldmVudHMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzZWxlY3RfZGV2cG9sbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbmV3RGV2UG9sbE9iamVjdCgpOworfQorI2VuZGlmCisKKwogI2lmZGVmIF9fQVBQTEVfXwogLyoKICAqIE9uIHNvbWUgc3lzdGVtcyBwb2xsKCkgc2V0cyBlcnJubyBvbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuIFdlIHRlc3QKQEAgLTczMSwyMCArMTA5NCwxMCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotbmV3UHlFcG9sbF9PYmplY3QoUHlUeXBlT2JqZWN0ICp0eXBlLCBpbnQgc2l6ZWhpbnQsIFNPQ0tFVCBmZCkKK25ld1B5RXBvbGxfT2JqZWN0KFB5VHlwZU9iamVjdCAqdHlwZSwgaW50IHNpemVoaW50LCBpbnQgZmxhZ3MsIFNPQ0tFVCBmZCkKIHsKICAgICBweUVwb2xsX09iamVjdCAqc2VsZjsKIAotICAgIGlmIChzaXplaGludCA9PSAtMSkgewotICAgICAgICBzaXplaGludCA9IEZEX1NFVFNJWkUtMTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2l6ZWhpbnQgPCAxKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInNpemVoaW50IG11c3QgYmUgZ3JlYXRlciB6ZXJvLCBnb3QgJWQiLAotICAgICAgICAgICAgICAgICAgICAgc2l6ZWhpbnQpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KICAgICBhc3NlcnQodHlwZSAhPSBOVUxMICYmIHR5cGUtPnRwX2FsbG9jICE9IE5VTEwpOwogICAgIHNlbGYgPSAocHlFcG9sbF9PYmplY3QgKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKQEAgLTc1Miw2ICsxMTA1LDExIEBACiAKICAgICBpZiAoZmQgPT0gLTEpIHsKICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworI2lmZGVmIEhBVkVfRVBPTExfQ1JFQVRFMQorICAgICAgICBpZiAoZmxhZ3MpCisgICAgICAgICAgICBzZWxmLT5lcGZkID0gZXBvbGxfY3JlYXRlMShmbGFncyk7CisgICAgICAgIGVsc2UKKyNlbmRpZgogICAgICAgICBzZWxmLT5lcGZkID0gZXBvbGxfY3JlYXRlKHNpemVoaW50KTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICB9CkBAIC03NjAsNyArMTExOCw3IEBACiAgICAgfQogICAgIGlmIChzZWxmLT5lcGZkIDwgMCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CkBAIC03NzAsMTQgKzExMjgsMTggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBweWVwb2xsX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBpbnQgc2l6ZWhpbnQgPSAtMTsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNpemVoaW50IiwgTlVMTH07CisgICAgaW50IGZsYWdzID0gMCwgc2l6ZWhpbnQgPSBGRF9TRVRTSVpFIC0gMTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNpemVoaW50IiwgImZsYWdzIiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGk6ZXBvbGwiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemVoaW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifGlpOmVwb2xsIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplaGludCwgJmZsYWdzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHNpemVoaW50IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIHNpemVoaW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICAgIHJldHVybiBuZXdQeUVwb2xsX09iamVjdCh0eXBlLCBzaXplaGludCwgLTEpOworICAgIHJldHVybiBuZXdQeUVwb2xsX09iamVjdCh0eXBlLCBzaXplaGludCwgZmxhZ3MsIC0xKTsKIH0KIAogCkBAIC03OTMsNyArMTE1NSw3IEBACiB7CiAgICAgZXJybm8gPSBweWVwb2xsX2ludGVybmFsX2Nsb3NlKHNlbGYpOwogICAgIGlmIChlcnJubyA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTgzNSw3ICsxMTk3LDcgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6ZnJvbWZkIiwgJmZkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gbmV3UHlFcG9sbF9PYmplY3QoKFB5VHlwZU9iamVjdCopY2xzLCAtMSwgZmQpOworICAgIHJldHVybiBuZXdQeUVwb2xsX09iamVjdCgoUHlUeXBlT2JqZWN0KiljbHMsIEZEX1NFVFNJWkUgLSAxLCAwLCBmZCk7CiB9CiAKIFB5RG9jX1NUUlZBUihweWVwb2xsX2Zyb21mZF9kb2MsCkBAIC04ODYsNyArMTI0OCw3IEBACiAgICAgfQogCiAgICAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBQeV9SRVRVUk5fTk9ORTsKQEAgLTkxMCw3ICsxMjcyLDcgQEAKIFB5RG9jX1NUUlZBUihweWVwb2xsX3JlZ2lzdGVyX2RvYywKICJyZWdpc3RlcihmZFssIGV2ZW50bWFza10pIC0+IE5vbmVcblwKIFxuXAotUmVnaXN0ZXJzIGEgbmV3IGZkIG9yIHJhaXNlcyBhbiBJT0Vycm9yIGlmIHRoZSBmZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXG5cCitSZWdpc3RlcnMgYSBuZXcgZmQgb3IgcmFpc2VzIGFuIE9TRXJyb3IgaWYgdGhlIGZkIGlzIGFscmVhZHkgcmVnaXN0ZXJlZC5cblwKIGZkIGlzIHRoZSB0YXJnZXQgZmlsZSBkZXNjcmlwdG9yIG9mIHRoZSBvcGVyYXRpb24uXG5cCiBldmVudHMgaXMgYSBiaXQgc2V0IGNvbXBvc2VkIG9mIHRoZSB2YXJpb3VzIEVQT0xMIGNvbnN0YW50czsgdGhlIGRlZmF1bHRcblwKIGlzIEVQT0xMX0lOIHwgRVBPTExfT1VUIHwgRVBPTExfUFJJLlxuXApAQCAtMTAwOSw3ICsxMzcxLDcgQEAKICAgICBuZmRzID0gZXBvbGxfd2FpdChzZWxmLT5lcGZkLCBldnMsIG1heGV2ZW50cywgdGltZW91dCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAobmZkcyA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCkBAIC0xMDY0LDcgKzE0MjYsNyBAQAogfTsKIAogUHlEb2NfU1RSVkFSKHB5ZXBvbGxfZG9jLAotInNlbGVjdC5lcG9sbChbc2l6ZWhpbnQ9LTFdKVxuXAorInNlbGVjdC5lcG9sbChzaXplaGludD0tMSwgZmxhZ3M9MClcblwKIFxuXAogUmV0dXJucyBhbiBlcG9sbGluZyBvYmplY3RcblwKIFxuXApAQCAtMTQwMCw3ICsxNzYyLDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPmtxZmQgPCAwKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKQEAgLTE0MzIsNyArMTc5NCw3IEBACiB7CiAgICAgZXJybm8gPSBrcXVldWVfcXVldWVfaW50ZXJuYWxfY2xvc2Uoc2VsZik7CiAgICAgaWYgKGVycm5vIDwgMCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTQ5NSw3ICsxODU3LDcgQEAKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKICAgICBzdHJ1Y3Qga2V2ZW50ICpldmwgPSBOVUxMOwogICAgIHN0cnVjdCBrZXZlbnQgKmNobCA9IE5VTEw7Ci0gICAgc3RydWN0IHRpbWVzcGVjIHRpbWVvdXRzcGVjOworICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OwogICAgIHN0cnVjdCB0aW1lc3BlYyAqcHRpbWVvdXRzcGVjOwogCiAgICAgaWYgKHNlbGYtPmtxZmQgPCAwKQpAQCAtMTUxNSwyOCArMTg3NywxNiBAQAogICAgICAgICBwdGltZW91dHNwZWMgPSBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmIChQeU51bWJlcl9DaGVjayhvdGltZW91dCkpIHsKLSAgICAgICAgZG91YmxlIHRpbWVvdXQ7Ci0gICAgICAgIGxvbmcgc2Vjb25kczsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lc3BlYyhvdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGltZW91dC50dl9zZWMsICZ0aW1lb3V0LnR2X25zZWMpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAgICAgdGltZW91dCA9IFB5RmxvYXRfQXNEb3VibGUob3RpbWVvdXQpOwotICAgICAgICBpZiAodGltZW91dCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICh0aW1lb3V0ID4gKGRvdWJsZSlMT05HX01BWCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgcGVyaW9kIHRvbyBsb25nIik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBpZiAodGltZW91dCA8IDApIHsKKyAgICAgICAgaWYgKHRpbWVvdXQudHZfc2VjIDwgMCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQgbXVzdCBiZSBwb3NpdGl2ZSBvciBOb25lIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotCi0gICAgICAgIHNlY29uZHMgPSAobG9uZyl0aW1lb3V0OwotICAgICAgICB0aW1lb3V0ID0gdGltZW91dCAtIChkb3VibGUpc2Vjb25kczsKLSAgICAgICAgdGltZW91dHNwZWMudHZfc2VjID0gc2Vjb25kczsKLSAgICAgICAgdGltZW91dHNwZWMudHZfbnNlYyA9IChsb25nKSh0aW1lb3V0ICogMUU5KTsKLSAgICAgICAgcHRpbWVvdXRzcGVjID0gJnRpbWVvdXRzcGVjOworICAgICAgICBwdGltZW91dHNwZWMgPSAmdGltZW91dDsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC0xNzEzLDYgKzIwNjMsMTEgQEAKIH07CiAKICNlbmRpZiAvKiBIQVZFX0tRVUVVRSAqLworCisKKworCisKIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwogCiBQeURvY19TVFJWQVIoc2VsZWN0X2RvYywKQEAgLTE3NDQsNiArMjA5OSw5IEBACiAjaWZkZWYgSEFWRV9QT0xMCiAgICAgeyJwb2xsIiwgICAgICAgICAgICBzZWxlY3RfcG9sbCwgICAgTUVUSF9OT0FSR1MsICAgIHBvbGxfZG9jfSwKICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KKyNpZmRlZiBIQVZFX1NZU19ERVZQT0xMX0gKKyAgICB7ImRldnBvbGwiLCAgICAgICAgIHNlbGVjdF9kZXZwb2xsLCBNRVRIX05PQVJHUywgICAgZGV2cG9sbF9kb2N9LAorI2VuZGlmCiAgICAgezAsICAgICAgICAgMH0sICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTc2Niw2ICsyMTI0LDkgQEAKICAgICBOVUxMCiB9OwogCisKKworCiBQeU1PRElOSVRfRlVOQwogUHlJbml0X3NlbGVjdCh2b2lkKQogewpAQCAtMTc3NCw5ICsyMTM1LDggQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFNlbGVjdEVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzZWxlY3QuZXJyb3IiLCBOVUxMLCBOVUxMKTsKLSAgICBQeV9JTkNSRUYoU2VsZWN0RXJyb3IpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBTZWxlY3RFcnJvcik7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKIAogI2lmZGVmIFBJUEVfQlVGCiAjaWZkZWYgSEFWRV9CUk9LRU5fUElQRV9CVUYKQEAgLTE4MjMsNiArMjE4MywxMSBAQAogICAgIH0KICNlbmRpZiAvKiBIQVZFX1BPTEwgKi8KIAorI2lmZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorICAgIGlmIChQeVR5cGVfUmVhZHkoJmRldnBvbGxfVHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9FUE9MTAogICAgIFB5X1RZUEUoJnB5RXBvbGxfVHlwZSkgPSAmUHlUeXBlX1R5cGU7CiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmcHlFcG9sbF9UeXBlKSA8IDApCkBAIC0xODQ3LDYgKzIyMTIsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExXUk5PUk0iLCBFUE9MTFdSTk9STSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVQT0xMV1JCQU5EIiwgRVBPTExXUkJBTkQpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJFUE9MTE1TRyIsIEVQT0xMTVNHKTsKKworI2lmZGVmIEVQT0xMX0NMT0VYRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiRVBPTExfQ0xPRVhFQyIsIEVQT0xMX0NMT0VYRUMpOworI2VuZGlmCiAjZW5kaWYgLyogSEFWRV9FUE9MTCAqLwogCiAjaWZkZWYgSEFWRV9LUVVFVUUKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMW1vZHVsZS5jIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKaW5kZXggYjI1YmQ0NC4uYTczM2M0YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGExbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGExbW9kdWxlLmMKQEAgLTE4NCw3ICsxODQsOCBAQAogICAgSW5pdGlhbGl6ZSB0aGUgaGFzaCBzdGF0ZQogICAgQHBhcmFtIHNoYTEgICBUaGUgaGFzaCBzdGF0ZSB5b3Ugd2lzaCB0byBpbml0aWFsaXplCiAqLwotdm9pZCBzaGExX2luaXQoc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEpCitzdGF0aWMgdm9pZAorc2hhMV9pbml0KHN0cnVjdCBzaGExX3N0YXRlICpzaGExKQogewogICAgYXNzZXJ0KHNoYTEgIT0gTlVMTCk7CiAgICBzaGExLT5zdGF0ZVswXSA9IDB4Njc0NTIzMDFVTDsKQEAgLTIwMiw3ICsyMDMsOCBAQAogICAgQHBhcmFtIGluICAgICBUaGUgZGF0YSB0byBoYXNoCiAgICBAcGFyYW0gaW5sZW4gIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEgKG9jdGV0cykKICovCi12b2lkIHNoYTFfcHJvY2VzcyhzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSwKK3N0YXRpYyB2b2lkCitzaGExX3Byb2Nlc3Moc3RydWN0IHNoYTFfc3RhdGUgKnNoYTEsCiAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICppbiwgUHlfc3NpemVfdCBpbmxlbikKIHsKICAgICBQeV9zc2l6ZV90IG47CkBAIC0yMTgsNyArMjIwLDcgQEAKICAgICAgICAgICAgaW4gICAgICAgICAgICAgKz0gU0hBMV9CTE9DS1NJWkU7CiAgICAgICAgICAgIGlubGVuICAgICAgICAgIC09IFNIQTFfQkxPQ0tTSVpFOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICBuID0gTUlOKGlubGVuLCAoU0hBMV9CTE9DS1NJWkUgLSBzaGExLT5jdXJsZW4pKTsKKyAgICAgICAgICAgbiA9IE1JTihpbmxlbiwgKFB5X3NzaXplX3QpKFNIQTFfQkxPQ0tTSVpFIC0gc2hhMS0+Y3VybGVuKSk7CiAgICAgICAgICAgIG1lbWNweShzaGExLT5idWYgKyBzaGExLT5jdXJsZW4sIGluLCAoc2l6ZV90KW4pOwogICAgICAgICAgICBzaGExLT5jdXJsZW4gICArPSBuOwogICAgICAgICAgICBpbiAgICAgICAgICAgICArPSBuOwpAQCAtMjM3LDcgKzIzOSw4IEBACiAgICBAcGFyYW0gc2hhMSAgVGhlIGhhc2ggc3RhdGUKICAgIEBwYXJhbSBvdXQgW291dF0gVGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBoYXNoICgyMCBieXRlcykKICovCi12b2lkIHNoYTFfZG9uZShzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSwgdW5zaWduZWQgY2hhciAqb3V0KQorc3RhdGljIHZvaWQKK3NoYTFfZG9uZShzdHJ1Y3Qgc2hhMV9zdGF0ZSAqc2hhMSwgdW5zaWduZWQgY2hhciAqb3V0KQogewogICAgIGludCBpOwogCkBAIC0zNTIsNyArMzU1LDcgQEAKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEExX0RJR0VTVFNJWkVdOwogICAgIHN0cnVjdCBzaGExX3N0YXRlIHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTM2MCwyNSArMzYzLDIwIEBACiAgICAgc2hhMV9kb25lKCZ0ZW1wLCBkaWdlc3QpOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBTSEExX0RJR0VTVFNJWkUgKiAyKTsKKyAgICByZXR2YWwgPSBQeVVuaWNvZGVfTmV3KFNIQTFfRElHRVNUU0laRSAqIDIsIDEyNyk7CiAgICAgaWYgKCFyZXR2YWwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBoZXhfZGlnZXN0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmV0dmFsKTsKLSAgICBpZiAoIWhleF9kaWdlc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXR2YWwpOwogCiAgICAgLyogTWFrZSBoZXggdmVyc2lvbiBvZiB0aGUgZGlnZXN0ICovCiAgICAgZm9yKGk9aj0wOyBpPFNIQTFfRElHRVNUU0laRTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYyBiL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKaW5kZXggODYxNzIxMC4uNzZkOTFhZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCkBAIC00NDUsNyArNDQ1LDcgQEAKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTQ1MywyNSArNDUzLDIwIEBACiAgICAgc2hhX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmLT5kaWdlc3RzaXplICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhzZWxmLT5kaWdlc3RzaXplICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IoaT1qPTA7IGk8c2VsZi0+ZGlnZXN0c2l6ZTsgaSsrKSB7Ci0gICAgICAgIGNoYXIgYzsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSA+PiA0KSAmIDB4ZjsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgICAgIGMgPSAoZGlnZXN0W2ldICYgMHhmKTsKLSAgICAgICAgYyA9IChjPjkpID8gYysnYSctMTAgOiBjICsgJzAnOwotICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBjOworICAgICAgICBoZXhfZGlnZXN0W2orK10gPSBQeV9oZXhkaWdpdHNbY107CiAgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmV0dmFsLCAxKSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYyBiL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKaW5kZXggMGZhYWY1Yy4uODhmOGE2NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCkBAIC01MTEsNyArNTExLDcgQEAKICAgICB1bnNpZ25lZCBjaGFyIGRpZ2VzdFtTSEFfRElHRVNUU0laRV07CiAgICAgU0hBb2JqZWN0IHRlbXA7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKLSAgICBQeV9VTklDT0RFICpoZXhfZGlnZXN0OworICAgIFB5X1VDUzEgKmhleF9kaWdlc3Q7CiAgICAgaW50IGksIGo7CiAKICAgICAvKiBHZXQgdGhlIHJhdyAoYmluYXJ5KSBkaWdlc3QgdmFsdWUgKi8KQEAgLTUxOSwyNSArNTE5LDIwIEBACiAgICAgc2hhNTEyX2ZpbmFsKGRpZ2VzdCwgJnRlbXApOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IHN0cmluZyAqLwotICAgIHJldHZhbCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmLT5kaWdlc3RzaXplICogMik7CisgICAgcmV0dmFsID0gUHlVbmljb2RlX05ldyhzZWxmLT5kaWdlc3RzaXplICogMiwgMTI3KTsKICAgICBpZiAoIXJldHZhbCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGhleF9kaWdlc3QgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXR2YWwpOwotICAgIGlmICghaGV4X2RpZ2VzdCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgaGV4X2RpZ2VzdCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJldHZhbCk7CiAKICAgICAvKiBNYWtlIGhleCB2ZXJzaW9uIG9mIHRoZSBkaWdlc3QgKi8KICAgICBmb3IgKGk9aj0wOyBpPHNlbGYtPmRpZ2VzdHNpemU7IGkrKykgewotICAgICAgICBjaGFyIGM7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKICAgICAgICAgYyA9IChkaWdlc3RbaV0gPj4gNCkgJiAweGY7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgICAgICBjID0gKGRpZ2VzdFtpXSAmIDB4Zik7Ci0gICAgICAgIGMgPSAoYz45KSA/IGMrJ2EnLTEwIDogYyArICcwJzsKLSAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gYzsKKyAgICAgICAgaGV4X2RpZ2VzdFtqKytdID0gUHlfaGV4ZGlnaXRzW2NdOwogICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJldHZhbCwgMSkpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCmluZGV4IDMyY2Q4YmIuLjJlYjdmMjkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwpAQCAtMjIsNiArMjIsMTQgQEAKICNpbmNsdWRlIDxzeXMvdGltZS5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9TSUdNQVNLKSAmJiAhZGVmaW5lZChIQVZFX0JST0tFTl9QVEhSRUFEX1NJR01BU0spCisjICBkZWZpbmUgUFlQVEhSRUFEX1NJR01BU0sKKyNlbmRpZgorCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgJiYgZGVmaW5lZChIQVZFX1BUSFJFQURfSCkKKyMgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyNlbmRpZgorCiAjaWZuZGVmIFNJR19FUlIKICNkZWZpbmUgU0lHX0VSUiAoKFB5T1Nfc2lnaGFuZGxlcl90KSgtMSkpCiAjZW5kaWYKQEAgLTEwMSw2ICsxMDksMTAgQEAKIAogc3RhdGljIFB5T1Nfc2lnaGFuZGxlcl90IG9sZF9zaWdpbnRoYW5kbGVyID0gU0lHX0RGTDsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBIQU5ETEUgc2lnaW50X2V2ZW50ID0gTlVMTDsKKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9HRVRJVElNRVIKIHN0YXRpYyBQeU9iamVjdCAqSXRpbWVyRXJyb3I7CiAKQEAgLTE2OCwxNSArMTgwLDE5IEBACiBzdGF0aWMgdm9pZAogdHJpcF9zaWduYWwoaW50IHNpZ19udW0pCiB7CisgICAgdW5zaWduZWQgY2hhciBieXRlOworCiAgICAgSGFuZGxlcnNbc2lnX251bV0udHJpcHBlZCA9IDE7CisgICAgaWYgKHdha2V1cF9mZCAhPSAtMSkgeworICAgICAgICBieXRlID0gKHVuc2lnbmVkIGNoYXIpc2lnX251bTsKKyAgICAgICAgd3JpdGUod2FrZXVwX2ZkLCAmYnl0ZSwgMSk7CisgICAgfQogICAgIGlmIChpc190cmlwcGVkKQogICAgICAgICByZXR1cm47CiAgICAgLyogU2V0IGlzX3RyaXBwZWQgYWZ0ZXIgc2V0dGluZyAudHJpcHBlZCwgYXMgaXQgZ2V0cwogICAgICAgIGNsZWFyZWQgaW4gUHlFcnJfQ2hlY2tTaWduYWxzKCkgYmVmb3JlIC50cmlwcGVkLiAqLwogICAgIGlzX3RyaXBwZWQgPSAxOwogICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKLSAgICBpZiAod2FrZXVwX2ZkICE9IC0xKQotICAgICAgICB3cml0ZSh3YWtldXBfZmQsICJcMCIsIDEpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjE3LDYgKzIzMywxMSBAQAogICAgIC8qIElzc3VlICMxMDMxMTogYXN5bmNocm9ub3VzbHkgZXhlY3V0aW5nIHNpZ25hbCBoYW5kbGVycyBzaG91bGQgbm90CiAgICAgICAgbXV0YXRlIGVycm5vIHVuZGVyIHRoZSBmZWV0IG9mIHVuc3VzcGVjdGluZyBDIGNvZGUuICovCiAgICAgZXJybm8gPSBzYXZlX2Vycm5vOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChzaWdfbnVtID09IFNJR0lOVCkKKyAgICAgICAgU2V0RXZlbnQoc2lnaW50X2V2ZW50KTsKKyNlbmRpZgogfQogCiAKQEAgLTMxMyw3ICszMzQsNyBAQAogICAgIGVsc2UKICAgICAgICAgZnVuYyA9IHNpZ25hbF9oYW5kbGVyOwogICAgIGlmIChQeU9TX3NldHNpZyhzaWdfbnVtLCBmdW5jKSA9PSBTSUdfRVJSKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBvbGRfaGFuZGxlciA9IEhhbmRsZXJzW3NpZ19udW1dLmZ1bmM7CkBAIC0zODIsNyArNDAzLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChzaWdpbnRlcnJ1cHQoc2lnX251bSwgZmxhZyk8MCkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfUnVudGltZUVycm9yKTsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQ5NSw2ICs1MTYsMzQxIEBACiBSZXR1cm5zIGN1cnJlbnQgdmFsdWUgb2YgZ2l2ZW4gaXRpbWVyLiIpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFBZUFRIUkVBRF9TSUdNQVNLKSB8fCBkZWZpbmVkKEhBVkVfU0lHV0FJVCkgfHwgXAorICAgICAgICBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pIHx8IGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpCisvKiBDb252ZXJ0IGFuIGl0ZXJhYmxlIHRvIGEgc2lnc2V0LgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmV0dXJuIC0xIGFuZCByYWlzZSBhbiBleGNlcHRpb24gb24gZXJyb3IuICovCisKK3N0YXRpYyBpbnQKK2l0ZXJhYmxlX3RvX3NpZ3NldChQeU9iamVjdCAqaXRlcmFibGUsIHNpZ3NldF90ICptYXNrKQoreworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeU9iamVjdCAqaXRlcmF0b3IsICppdGVtOworICAgIGxvbmcgc2lnbnVtOworICAgIGludCBlcnI7CisKKyAgICBzaWdlbXB0eXNldChtYXNrKTsKKworICAgIGl0ZXJhdG9yID0gUHlPYmplY3RfR2V0SXRlcihpdGVyYWJsZSk7CisgICAgaWYgKGl0ZXJhdG9yID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB3aGlsZSAoMSkKKyAgICB7CisgICAgICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChpdGVyYXRvcik7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzaWdudW0gPSBQeUxvbmdfQXNMb25nKGl0ZW0pOworICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIGlmIChzaWdudW0gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmICgwIDwgc2lnbnVtICYmIHNpZ251bSA8IE5TSUcpCisgICAgICAgICAgICBlcnIgPSBzaWdhZGRzZXQobWFzaywgKGludClzaWdudW0pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnIgPSAxOworICAgICAgICBpZiAoZXJyKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsIG51bWJlciAlbGQgb3V0IG9mIHJhbmdlIiwgc2lnbnVtKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0ID0gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihpdGVyYXRvcik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChQWVBUSFJFQURfU0lHTUFTSykgfHwgZGVmaW5lZChIQVZFX1NJR1BFTkRJTkcpCitzdGF0aWMgUHlPYmplY3QqCitzaWdzZXRfdG9fc2V0KHNpZ3NldF90IG1hc2spCit7CisgICAgUHlPYmplY3QgKnNpZ251bSwgKnJlc3VsdDsKKyAgICBpbnQgc2lnOworCisgICAgcmVzdWx0ID0gUHlTZXRfTmV3KDApOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKHNpZyA9IDE7IHNpZyA8IE5TSUc7IHNpZysrKSB7CisgICAgICAgIGlmIChzaWdpc21lbWJlcigmbWFzaywgc2lnKSAhPSAxKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGl0IGlzIGEgbWVtYmVyIGJ5IGFkZGluZyB0aGUgc2lnbmFsIHRvCisgICAgICAgICAgIHRoZSByZXN1bHQgbGlzdC4gIElnbm9yZSB0aGUgb3RoZXIgY2FzZXMgYmVjYXVzZSB0aGV5IG1lYW4gdGhlCisgICAgICAgICAgIHNpZ25hbCBpc24ndCBhIG1lbWJlciBvZiB0aGUgbWFzayBvciB0aGUgc2lnbmFsIHdhcyBpbnZhbGlkLAorICAgICAgICAgICBhbmQgYW4gaW52YWxpZCBzaWduYWwgbXVzdCBoYXZlIGJlZW4gb3VyIGZhdWx0IGluIGNvbnN0cnVjdGluZworICAgICAgICAgICB0aGUgbG9vcCBib3VuZGFyaWVzLiAqLworICAgICAgICBzaWdudW0gPSBQeUxvbmdfRnJvbUxvbmcoc2lnKTsKKyAgICAgICAgaWYgKHNpZ251bSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGlmIChQeVNldF9BZGQocmVzdWx0LCBzaWdudW0pID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2lnbnVtKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHNpZ251bSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmZGVmIFBZUFRIUkVBRF9TSUdNQVNLCitzdGF0aWMgUHlPYmplY3QgKgorc2lnbmFsX3B0aHJlYWRfc2lnbWFzayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IGhvdzsKKyAgICBQeU9iamVjdCAqc2lnbmFsczsKKyAgICBzaWdzZXRfdCBtYXNrLCBwcmV2aW91czsKKyAgICBpbnQgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpTzpwdGhyZWFkX3NpZ21hc2siLCAmaG93LCAmc2lnbmFscykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGl0ZXJhYmxlX3RvX3NpZ3NldChzaWduYWxzLCAmbWFzaykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXJyID0gcHRocmVhZF9zaWdtYXNrKGhvdywgJm1hc2ssICZwcmV2aW91cyk7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIGlmIHNpZ25hbHMgd2FzIHVuYmxvY2tlZCwgc2lnbmFsIGhhbmRsZXJzIGhhdmUgYmVlbiBjYWxsZWQgKi8KKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIHNpZ3NldF90b19zZXQocHJldmlvdXMpOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3B0aHJlYWRfc2lnbWFza19kb2MsCisicHRocmVhZF9zaWdtYXNrKGhvdywgbWFzaykgLT4gb2xkIG1hc2tcblwKK1xuXAorRmV0Y2ggYW5kL29yIGNoYW5nZSB0aGUgc2lnbmFsIG1hc2sgb2YgdGhlIGNhbGxpbmcgdGhyZWFkLiIpOworI2VuZGlmICAgLyogI2lmZGVmIFBZUFRIUkVBRF9TSUdNQVNLICovCisKKworI2lmZGVmIEhBVkVfU0lHUEVORElORworc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWdwZW5kaW5nKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGludCBlcnI7CisgICAgc2lnc2V0X3QgbWFzazsKKyAgICBlcnIgPSBzaWdwZW5kaW5nKCZtYXNrKTsKKyAgICBpZiAoZXJyKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIHJldHVybiBzaWdzZXRfdG9fc2V0KG1hc2spOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3BlbmRpbmdfZG9jLAorInNpZ3BlbmRpbmcoKSAtPiBsaXN0XG5cCitcblwKK0V4YW1pbmUgcGVuZGluZyBzaWduYWxzLiIpOworI2VuZGlmICAgLyogI2lmZGVmIEhBVkVfU0lHUEVORElORyAqLworCisKKyNpZmRlZiBIQVZFX1NJR1dBSVQKK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnd2FpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnNpZ25hbHM7CisgICAgc2lnc2V0X3Qgc2V0OworICAgIGludCBlcnIsIHNpZ251bTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0IiwgJnNpZ25hbHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGVyciA9IHNpZ3dhaXQoJnNldCwgJnNpZ251bSk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIGVycm5vID0gZXJyOworICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgIH0KKworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2lnbnVtKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0X2RvYywKKyJzaWd3YWl0KHNpZ3NldCkgLT4gc2lnbnVtXG5cCitcblwKK1dhaXQgYSBzaWduYWwuIik7CisjZW5kaWYgICAvKiAjaWZkZWYgSEFWRV9TSUdQRU5ESU5HICovCisKKyNpZiBkZWZpbmVkKEhBVkVfU0lHV0FJVElORk8pIHx8IGRlZmluZWQoSEFWRV9TSUdUSU1FRFdBSVQpCitzdGF0aWMgaW50IGluaXRpYWxpemVkOworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgc3RydWN0X3NpZ2luZm9fZmllbGRzW10gPSB7CisgICAgeyJzaV9zaWdubyIsICAgICAgICAic2lnbmFsIG51bWJlciJ9LAorICAgIHsic2lfY29kZSIsICAgICAgICAgInNpZ25hbCBjb2RlIn0sCisgICAgeyJzaV9lcnJubyIsICAgICAgICAiZXJybm8gYXNzb2NpYXRlZCB3aXRoIHRoaXMgc2lnbmFsIn0sCisgICAgeyJzaV9waWQiLCAgICAgICAgICAic2VuZGluZyBwcm9jZXNzIElEIn0sCisgICAgeyJzaV91aWQiLCAgICAgICAgICAicmVhbCB1c2VyIElEIG9mIHNlbmRpbmcgcHJvY2VzcyJ9LAorICAgIHsic2lfc3RhdHVzIiwgICAgICAgImV4aXQgdmFsdWUgb3Igc2lnbmFsIn0sCisgICAgeyJzaV9iYW5kIiwgICAgICAgICAiYmFuZCBldmVudCBmb3IgU0lHUE9MTCJ9LAorICAgIHswfQorfTsKKworUHlEb2NfU1RSVkFSKHN0cnVjdF9zaWdpbmZvX19kb2NfXywKKyJzdHJ1Y3Rfc2lnaW5mbzogUmVzdWx0IGZyb20gc2lnd2FpdGluZm8gb3Igc2lndGltZWR3YWl0LlxuXG5cCitUaGlzIG9iamVjdCBtYXkgYmUgYWNjZXNzZWQgZWl0aGVyIGFzIGEgdHVwbGUgb2ZcblwKKyhzaV9zaWdubywgc2lfY29kZSwgc2lfZXJybm8sIHNpX3BpZCwgc2lfdWlkLCBzaV9zdGF0dXMsIHNpX2JhbmQpLFxuXAorb3IgdmlhIHRoZSBhdHRyaWJ1dGVzIHNpX3NpZ25vLCBzaV9jb2RlLCBhbmQgc28gb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0Rlc2Mgc3RydWN0X3NpZ2luZm9fZGVzYyA9IHsKKyAgICAic2lnbmFsLnN0cnVjdF9zaWdpbmZvIiwgICAgICAgICAgIC8qIG5hbWUgKi8KKyAgICBzdHJ1Y3Rfc2lnaW5mb19fZG9jX18sICAgICAgIC8qIGRvYyAqLworICAgIHN0cnVjdF9zaWdpbmZvX2ZpZWxkcywgICAgICAgLyogZmllbGRzICovCisgICAgNyAgICAgICAgICAvKiBuX2luX3NlcXVlbmNlICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IFNpZ2luZm9UeXBlOworCitzdGF0aWMgUHlPYmplY3QgKgorZmlsbF9zaWdpbmZvKHNpZ2luZm9fdCAqc2kpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U3RydWN0U2VxdWVuY2VfTmV3KCZTaWdpbmZvVHlwZSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDAsIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX3NpZ25vKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAxLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV9jb2RlKSkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCAyLCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV9lcnJubykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgMywgUHlMb25nX0Zyb21QaWQoc2ktPnNpX3BpZCkpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzdWx0LCA0LCBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpKHNpLT5zaV91aWQpKSk7CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShyZXN1bHQsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZygobG9uZykoc2ktPnNpX3N0YXR1cykpKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlc3VsdCwgNiwgUHlMb25nX0Zyb21Mb25nKHNpLT5zaV9iYW5kKSk7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU0lHV0FJVElORk8KK3N0YXRpYyBQeU9iamVjdCAqCitzaWduYWxfc2lnd2FpdGluZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzaWduYWxzOworICAgIHNpZ3NldF90IHNldDsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzpzaWd3YWl0aW5mbyIsICZzaWduYWxzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoaXRlcmFibGVfdG9fc2lnc2V0KHNpZ25hbHMsICZzZXQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBlcnIgPSBzaWd3YWl0aW5mbygmc2V0LCAmc2kpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKworICAgIHJldHVybiBmaWxsX3NpZ2luZm8oJnNpKTsKK30KKworUHlEb2NfU1RSVkFSKHNpZ25hbF9zaWd3YWl0aW5mb19kb2MsCisic2lnd2FpdGluZm8oc2lnc2V0KSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAorXG5cCitXYWl0IHN5bmNocm9ub3VzbHkgZm9yIGEgc2lnbmFsIHVudGlsIG9uZSBvZiB0aGUgc2lnbmFscyBpbiAqc2lnc2V0KiBpc1xuXAorZGVsaXZlcmVkLlxuXAorUmV0dXJucyBhIHN0cnVjdF9zaWdpbmZvIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNpZ25hbC4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1dBSVRJTkZPICovCisKKyNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9zaWd0aW1lZHdhaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpzaWduYWxzLCAqdGltZW91dDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgYnVmOworICAgIHNpZ3NldF90IHNldDsKKyAgICBzaWdpbmZvX3Qgc2k7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086c2lndGltZWR3YWl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpZ25hbHMsICZ0aW1lb3V0KSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKHRpbWVvdXQsICZidWYudHZfc2VjLCAmYnVmLnR2X25zZWMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChidWYudHZfc2VjIDwgMCB8fCBidWYudHZfbnNlYyA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJ0aW1lb3V0IG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChpdGVyYWJsZV90b19zaWdzZXQoc2lnbmFscywgJnNldCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIGVyciA9IHNpZ3RpbWVkd2FpdCgmc2V0LCAmc2ksICZidWYpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKGVyciA9PSAtMSkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUFHQUlOKQorICAgICAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgfQorCisgICAgcmV0dXJuIGZpbGxfc2lnaW5mbygmc2kpOworfQorCitQeURvY19TVFJWQVIoc2lnbmFsX3NpZ3RpbWVkd2FpdF9kb2MsCisic2lndGltZWR3YWl0KHNpZ3NldCwgKHRpbWVvdXRfc2VjLCB0aW1lb3V0X25zZWMpKSAtPiBzdHJ1Y3Rfc2lnaW5mb1xuXAorXG5cCitMaWtlIHNpZ3dhaXRpbmZvKCksIGJ1dCB3aXRoIGEgdGltZW91dCBzcGVjaWZpZWQgYXMgYSB0dXBsZSBvZiAoc2Vjb25kcyxcblwKK25hbm9zZWNvbmRzKS4iKTsKKyNlbmRpZiAgIC8qICNpZmRlZiBIQVZFX1NJR1RJTUVEV0FJVCAqLworCisKKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQorc3RhdGljIFB5T2JqZWN0ICoKK3NpZ25hbF9wdGhyZWFkX2tpbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGxvbmcgdGlkOworICAgIGludCBzaWdudW07CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibGk6cHRocmVhZF9raWxsIiwgJnRpZCwgJnNpZ251bSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXJyID0gcHRocmVhZF9raWxsKChwdGhyZWFkX3QpdGlkLCBzaWdudW0pOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBlcnJubyA9IGVycjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiB0aGUgc2lnbmFsIG1heSBoYXZlIGJlZW4gc2VuZCB0byB0aGUgY3VycmVudCB0aHJlYWQgKi8KKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzaWduYWxfcHRocmVhZF9raWxsX2RvYywKKyJwdGhyZWFkX2tpbGwodGhyZWFkX2lkLCBzaWdudW0pXG5cCitcblwKK1NlbmQgYSBzaWduYWwgdG8gYSB0aHJlYWQuIik7CisjZW5kaWYgICAvKiAjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURfS0lMTCkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkgKi8KKworCiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSAqLwogc3RhdGljIFB5TWV0aG9kRGVmIHNpZ25hbF9tZXRob2RzW10gPSB7CkBAIC01MTUsMTAgKzg3MSwzNCBAQAogI2VuZGlmCiAjaWZkZWYgSEFWRV9QQVVTRQogICAgIHsicGF1c2UiLCAgICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3BhdXNlLAotICAgICBNRVRIX05PQVJHUyxwYXVzZV9kb2N9LAorICAgICBNRVRIX05PQVJHUywgcGF1c2VfZG9jfSwKICNlbmRpZgogICAgIHsiZGVmYXVsdF9pbnRfaGFuZGxlciIsIHNpZ25hbF9kZWZhdWx0X2ludF9oYW5kbGVyLAogICAgICBNRVRIX1ZBUkFSR1MsIGRlZmF1bHRfaW50X2hhbmRsZXJfZG9jfSwKKyNpZiBkZWZpbmVkKEhBVkVfUFRIUkVBRF9LSUxMKSAmJiBkZWZpbmVkKFdJVEhfVEhSRUFEKQorICAgIHsicHRocmVhZF9raWxsIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfa2lsbCwKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9raWxsX2RvY30sCisjZW5kaWYKKyNpZmRlZiBQWVBUSFJFQURfU0lHTUFTSworICAgIHsicHRocmVhZF9zaWdtYXNrIiwgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3B0aHJlYWRfc2lnbWFzaywKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfcHRocmVhZF9zaWdtYXNrX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NJR1BFTkRJTkcKKyAgICB7InNpZ3BlbmRpbmciLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWdwZW5kaW5nLAorICAgICBNRVRIX05PQVJHUywgc2lnbmFsX3NpZ3BlbmRpbmdfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHV0FJVAorICAgIHsic2lnd2FpdCIsICAgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc2lnbmFsX3NpZ3dhaXQsCisgICAgIE1FVEhfVkFSQVJHUywgc2lnbmFsX3NpZ3dhaXRfZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHV0FJVElORk8KKyAgICB7InNpZ3dhaXRpbmZvIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKXNpZ25hbF9zaWd3YWl0aW5mbywKKyAgICAgTUVUSF9WQVJBUkdTLCBzaWduYWxfc2lnd2FpdGluZm9fZG9jfSwKKyNlbmRpZgorI2lmZGVmIEhBVkVfU0lHVElNRURXQUlUCisgICAgeyJzaWd0aW1lZHdhaXQiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzaWduYWxfc2lndGltZWR3YWl0LAorICAgICBNRVRIX1ZBUkFSR1MsIHNpZ25hbF9zaWd0aW1lZHdhaXRfZG9jfSwKKyNlbmRpZgogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTU4Nyw2ICs5NjcsMTUgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorI2lmIGRlZmluZWQoSEFWRV9TSUdXQUlUSU5GTykgfHwgZGVmaW5lZChIQVZFX1NJR1RJTUVEV0FJVCkKKyAgICBpZiAoIWluaXRpYWxpemVkKQorICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZTaWdpbmZvVHlwZSwgJnN0cnVjdF9zaWdpbmZvX2Rlc2MpOworCisgICAgUHlfSU5DUkVGKChQeU9iamVjdCopICZTaWdpbmZvVHlwZSk7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJzdHJ1Y3Rfc2lnaW5mbyIsIChQeU9iamVjdCopICZTaWdpbmZvVHlwZSk7CisgICAgaW5pdGlhbGl6ZWQgPSAxOworI2VuZGlmCisKICAgICAvKiBBZGQgc29tZSBzeW1ib2xpYyBjb25zdGFudHMgdG8gdGhlIG1vZHVsZSAqLwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogCkBAIC02MDMsNiArOTkyLDE5IEBACiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBQeV9ERUNSRUYoeCk7CiAKKyNpZmRlZiBTSUdfQkxPQ0sKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHX0JMT0NLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKKyNlbmRpZgorI2lmZGVmIFNJR19VTkJMT0NLCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR19VTkJMT0NLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKKyNlbmRpZgorI2lmZGVmIFNJR19TRVRNQVNLCisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR19TRVRNQVNLKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKKyNlbmRpZgorCiAgICAgeCA9IEludEhhbmRsZXIgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiZGVmYXVsdF9pbnRfaGFuZGxlciIpOwogICAgIGlmICgheCkKICAgICAgICAgZ290byBmaW5hbGx5OwpAQCAtODU1LDYgKzEyNTcsMTEgQEAKICAgICBQeV9ERUNSRUYoeCk7CiAjZW5kaWYKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAvKiBDcmVhdGUgbWFudWFsLXJlc2V0IGV2ZW50LCBpbml0aWFsbHkgdW5zZXQgKi8KKyAgICBzaWdpbnRfZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBUUlVFLCBGQUxTRSwgRkFMU0UpOworI2VuZGlmCisKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIG0gPSBOVUxMOwpAQCAtMTAwMSwzICsxNDA4LDI1IEBACiAgICAgX1B5SW1wb3J0X1JlSW5pdExvY2soKTsKICNlbmRpZgogfQorCitpbnQKK19QeU9TX0lzTWFpblRocmVhZCh2b2lkKQoreworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgcmV0dXJuIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSA9PSBtYWluX3RocmVhZDsKKyNlbHNlCisgICAgcmV0dXJuIDE7CisjZW5kaWYKK30KKworI2lmZGVmIE1TX1dJTkRPV1MKK3ZvaWQgKl9QeU9TX1NpZ2ludEV2ZW50KHZvaWQpCit7CisgICAgLyogUmV0dXJucyBhIG1hbnVhbC1yZXNldCBldmVudCB3aGljaCBnZXRzIHRyaXBwZWQgd2hlbmV2ZXIKKyAgICAgICBTSUdJTlQgaXMgcmVjZWl2ZWQuCisKKyAgICAgICBQeXRob24uaCBkb2VzIG5vdCBpbmNsdWRlIHdpbmRvd3MuaCBzbyB3ZSBkbyBjYW5ub3QgdXNlIEhBTkRMRQorICAgICAgIGFzIHRoZSByZXR1cm4gdHlwZSBvZiB0aGlzIGZ1bmN0aW9uLiAgV2UgdXNlIHZvaWQqIGluc3RlYWQuICovCisgICAgcmV0dXJuIHNpZ2ludF9ldmVudDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKaW5kZXggNGY4OTZmZC4uZDhjODFmZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYworKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCkBAIC00Miw2ICs0Miw5IEBACiAtIHNvY2tldC5pbmV0X250b2EocGFja2VkIElQKSAtPiBJUCBhZGRyZXNzIHN0cmluZwogLSBzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKSAtPiBOb25lIHwgZmxvYXQKIC0gc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KE5vbmUgfCBmbG9hdCkKKy0gc29ja2V0LmlmX25hbWVpbmRleCgpIC0+IGxpc3Qgb2YgdHVwbGVzIChpZl9pbmRleCwgaWZfbmFtZSkKKy0gc29ja2V0LmlmX25hbWV0b2luZGV4KG5hbWUpIC0+IGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIGluZGV4CistIHNvY2tldC5pZl9pbmRleHRvbmFtZShpbmRleCkgLT4gY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgbmFtZQogLSBhbiBJbnRlcm5ldCBzb2NrZXQgYWRkcmVzcyBpcyBhIHBhaXIgKGhvc3RuYW1lLCBwb3J0KQogICB3aGVyZSBob3N0bmFtZSBjYW4gYmUgYW55dGhpbmcgcmVjb2duaXplZCBieSBnZXRob3N0YnluYW1lKCkKICAgKGluY2x1ZGluZyB0aGUgZGQuZGQuZGQuZGQgbm90YXRpb24pIGFuZCBwb3J0IGlzIGluIGhvc3QgYnl0ZSBvcmRlcgpAQCAtMTMzLDYgKzEzNiw5IEBACiBzZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZSkgLS0gc2V0IHNvY2tldCBvcHRpb25zXG5cCiBzZXR0aW1lb3V0KE5vbmUgfCBmbG9hdCkgLS0gc2V0IG9yIGNsZWFyIHRoZSB0aW1lb3V0XG5cCiBzaHV0ZG93bihob3cpIC0tIHNodXQgZG93biB0cmFmZmljIGluIG9uZSBvciBib3RoIGRpcmVjdGlvbnNcblwKK2lmX25hbWVpbmRleCgpIC0tIHJldHVybiBhbGwgbmV0d29yayBpbnRlcmZhY2UgaW5kaWNlcyBhbmQgbmFtZXNcblwKK2lmX25hbWV0b2luZGV4KG5hbWUpIC0tIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UgaW5kZXhcblwKK2lmX2luZGV4dG9uYW1lKGluZGV4KSAtLSByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIG5hbWVcblwKIFxuXAogIFsqXSBub3QgYXZhaWxhYmxlIG9uIGFsbCBwbGF0Zm9ybXMhIik7CiAKQEAgLTE1MCwxMiArMTU2LDE2IEBACiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzZfQVJHCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19PcGVuQlNEX18pCisjIGluY2x1ZGUgPHN5cy91aW8uaD4KKyNlbmRpZgorCiAjaWZuZGVmIFdJVEhfVEhSRUFECiAjIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCi0jIGlmIGRlZmluZWQoX0FJWCkgfHwgZGVmaW5lZChfX29zZl9fKQorIyBpZiBkZWZpbmVkKF9BSVgpCiAjICBkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICMgZWxpZiBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKF9fc2dpKQogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHCkBAIC0yMDgsNiArMjE4LDExIEBACiAjICBpbmNsdWRlIDxpb2N0bC5oPgogI2VuZGlmCiAKKyNpZmRlZiBfX0FQUExFX18KKyMgaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZW5kaWYKKworCiAjaWYgZGVmaW5lZChQWU9TX09TMikKICMgZGVmaW5lICBJTkNMX0RPUwogIyBkZWZpbmUgIElOQ0xfRE9TRVJST1JTCkBAIC0yNTAsNiArMjY1LDE0IEBACiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKwogLyogR2VuZXJpYyBzb2NrZXQgb2JqZWN0IGRlZmluaXRpb25zIGFuZCBpbmNsdWRlcyAqLwogI2RlZmluZSBQeVNvY2tldF9CVUlMRElOR19TT0NLRVQKICNpbmNsdWRlICJzb2NrZXRtb2R1bGUuaCIKQEAgLTI2MCw2ICsyODMsNyBAQAogCiAvKiBOb24tTVMgV0lORE9XUyBpbmNsdWRlcyAqLwogIyBpbmNsdWRlIDxuZXRkYi5oPgorIyBpbmNsdWRlIDx1bmlzdGQuaD4KIAogLyogSGVhZGVycyBuZWVkZWQgZm9yIGluZXRfbnRvYSgpIGFuZCBpbmV0X2FkZHIoKSAqLwogIyBpZiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfVkFDUFApCkBAIC0zNTcsNyArMzgxLDcgQEAKICAgICAgICAgcmV0dXJuIElOVkFMSURfU09DS0VUOwogCiAgICAgcmV0dXJuIFdTQVNvY2tldChGUk9NX1BST1RPQ09MX0lORk8sIEZST01fUFJPVE9DT0xfSU5GTywKLSAgICAgICAgICAgICAgICAgICAgIEZST01fUFJPVE9DT0xfSU5GTywgJmluZm8sIDAsIDApOworICAgICAgICAgICAgICAgICAgICAgRlJPTV9QUk9UT0NPTF9JTkZPLCAmaW5mbywgMCwgV1NBX0ZMQUdfT1ZFUkxBUFBFRCk7CiB9CiAjZGVmaW5lIFNPQ0tFVENMT1NFIGNsb3Nlc29ja2V0CiAjZWxzZQpAQCAtMzY2LDYgKzM5MCw3IEBACiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTjMyCisjdW5kZWYgRUFGTk9TVVBQT1JUCiAjZGVmaW5lIEVBRk5PU1VQUE9SVCBXU0FFQUZOT1NVUFBPUlQKICNkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCiAjZW5kaWYKQEAgLTQxNyw3ICs0NDIsOCBAQAogI2RlZmluZSBTRUdNRU5UX1NJWkUgKDMyICogMTAyNCAtMSkKICNlbmRpZgogCi0jZGVmaW5lIFNBUzJTQSh4KSAgICAgICAoKHN0cnVjdCBzb2NrYWRkciAqKSh4KSkKKy8qIENvbnZlcnQgInNvY2tfYWRkcl90ICoiIHRvICJzdHJ1Y3Qgc29ja2FkZHIgKiIuICovCisjZGVmaW5lIFNBUzJTQSh4KSAgICAgICAoJigoeCktPnNhKSkKIAogLyoKICAqIENvbnN0YW50cyBmb3IgZ2V0bmFtZWluZm8oKQpAQCAtNDM4LDcgKzQ2NCw2IEBACiAKIC8qIEdsb2JhbCB2YXJpYWJsZSBob2xkaW5nIHRoZSBleGNlcHRpb24gdHlwZSBmb3IgZXJyb3JzIGRldGVjdGVkCiAgICBieSB0aGlzIG1vZHVsZSAoYnV0IG5vdCBhcmd1bWVudCB0eXBlIG9yIG1lbW9yeSBlcnJvcnMsIGV0Yy4pLiAqLwotc3RhdGljIFB5T2JqZWN0ICpzb2NrZXRfZXJyb3I7CiBzdGF0aWMgUHlPYmplY3QgKnNvY2tldF9oZXJyb3I7CiBzdGF0aWMgUHlPYmplY3QgKnNvY2tldF9nYWllcnJvcjsKIHN0YXRpYyBQeU9iamVjdCAqc29ja2V0X3RpbWVvdXQ7CkBAIC00NTUsNiArNDgwLDE3IEBACiAjaW5jbHVkZSA8c3lzL3BvbGwuaD4KICNlbmRpZgogCisvKiBMYXJnZXN0IHZhbHVlIHRvIHRyeSB0byBzdG9yZSBpbiBhIHNvY2tsZW5fdCAodXNlZCB3aGVuIGhhbmRsaW5nCisgICBhbmNpbGxhcnkgZGF0YSkuICBQT1NJWCByZXF1aXJlcyBzb2NrbGVuX3QgdG8gaG9sZCBhdCBsZWFzdAorICAgKDIqKjMxKS0xIGFuZCByZWNvbW1lbmRzIGFnYWluc3Qgc3RvcmluZyBsYXJnZXIgdmFsdWVzLCBidXQKKyAgIHNvY2tsZW5fdCB3YXMgb3JpZ2luYWxseSBpbnQgaW4gdGhlIEJTRCBpbnRlcmZhY2UsIHNvIHRvIGJlIG9uIHRoZQorICAgc2FmZSBzaWRlIHdlIHVzZSB0aGUgc21hbGxlciBvZiAoMioqMzEpLTEgYW5kIElOVF9NQVguICovCisjaWYgSU5UX01BWCA+IDB4N2ZmZmZmZmYKKyNkZWZpbmUgU09DS0xFTl9UX0xJTUlUIDB4N2ZmZmZmZmYKKyNlbHNlCisjZGVmaW5lIFNPQ0tMRU5fVF9MSU1JVCBJTlRfTUFYCisjZW5kaWYKKwogI2lmZGVmIEhBVkVfUE9MTAogLyogSW5zdGVhZCBvZiBzZWxlY3QoKSwgd2UnbGwgdXNlIHBvbGwoKSBzaW5jZSBwb2xsKCkgd29ya3Mgb24gYW55IGZkLiAqLwogI2RlZmluZSBJU19TRUxFQ1RBQkxFKHMpIDEKQEAgLTQ2OCw3ICs1MDQsNyBAQAogc3RhdGljIFB5T2JqZWN0Kgogc2VsZWN0X2Vycm9yKHZvaWQpCiB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInVuYWJsZSB0byBzZWxlY3Qgb24gc29ja2V0Iik7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJ1bmFibGUgdG8gc2VsZWN0IG9uIHNvY2tldCIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC00OTUsNyArNTMxLDcgQEAKICAgICAgICByZWNvZ25pemVzIHRoZSBlcnJvciBjb2RlcyB1c2VkIGJ5IGJvdGggR2V0TGFzdEVycm9yKCkgYW5kCiAgICAgICAgV1NBR2V0TGFzdEVycm9yICovCiAgICAgaWYgKGVycl9ubykKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKHNvY2tldF9lcnJvciwgZXJyX25vKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX09TRXJyb3IsIGVycl9ubyk7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoUFlPU19PUzIpICYmICFkZWZpbmVkKFBZQ0NfR0NDKQpAQCAtNTI2LDcgKzU2Miw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2ID0gUHlfQnVpbGRWYWx1ZSgiKGlzKSIsIG15ZXJyb3Jjb2RlLCBvdXRidWYpOwogICAgICAgICAgICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChzb2NrZXRfZXJyb3IsIHYpOworICAgICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19PU0Vycm9yLCB2KTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTUzNCw3ICs1NzAsNyBAQAogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhzb2NrZXRfZXJyb3IpOworICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiB9CiAKIApAQCAtODUzLDEzICs4ODksMTMgQEAKICNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgZnJlZWFkZHJpbmZvKHJlcyk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlcy0+YWlfbmV4dCkgewogICAgICAgICAgICAgZnJlZWFkZHJpbmZvKHJlcyk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgIndpbGRjYXJkIHJlc29sdmVkIHRvIG11bHRpcGxlIGFkZHJlc3MiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtODcyLDcgKzkwOCw3IEBACiAgICAgaWYgKG5hbWVbMF0gPT0gJzwnICYmIHN0cmNtcChuYW1lLCAiPGJyb2FkY2FzdD4iKSA9PSAwKSB7CiAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luOwogICAgICAgICBpZiAoYWYgIT0gQUZfSU5FVCAmJiBhZiAhPSBBRl9VTlNQRUMpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAiYWRkcmVzcyBmYW1pbHkgbWlzbWF0Y2hlZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC05MzAsNyArOTY2LDcgQEAKICAgICAgICAgcmV0dXJuIDE2OwogI2VuZGlmCiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiB9CkBAIC05NzksNyArMTAxNSw3IEBACiAgICAgICAgIGJkYWRkci0+Yls1XSA9IGI1OwogICAgICAgICByZXR1cm4gNjsKICAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiYmFkIGJsdWV0b290aCBhZGRyZXNzIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiYmFkIGJsdWV0b290aCBhZGRyZXNzIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiB9CkBAIC0xMDQ0LDcgKzEwODAsNyBAQAogI2VuZGlmIC8qIGxpbnV4ICovCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIHJlZ3VsYXIgTlVMTC10ZXJtaW5hdGVkIHN0cmluZyAqLwotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGEtPnN1bl9wYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGEtPnN1bl9wYXRoKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZiAvKiBBRl9VTklYICovCkBAIC0xMTkwLDYgKzEyMjYsNDIgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX0NBTgorICAgIGNhc2UgQUZfQ0FOOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2NhbiAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfY2FuICopYWRkcjsKKyAgICAgICAgY2hhciAqaWZuYW1lID0gIiI7CisgICAgICAgIHN0cnVjdCBpZnJlcSBpZnI7CisgICAgICAgIC8qIG5lZWQgdG8gbG9vayB1cCBpbnRlcmZhY2UgbmFtZSBnaXZlbiBpbmRleCAqLworICAgICAgICBpZiAoYS0+Y2FuX2lmaW5kZXgpIHsKKyAgICAgICAgICAgIGlmci5pZnJfaWZpbmRleCA9IGEtPmNhbl9pZmluZGV4OworICAgICAgICAgICAgaWYgKGlvY3RsKHNvY2tmZCwgU0lPQ0dJRk5BTUUsICZpZnIpID09IDApCisgICAgICAgICAgICAgICAgaWZuYW1lID0gaWZyLmlmcl9uYW1lOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8maCIsIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLT5jYW5fZmFtaWx5KTsKKyAgICB9CisjZW5kaWYKKworI2lmZGVmIFBGX1NZU1RFTQorICAgIGNhc2UgUEZfU1lTVEVNOgorICAgICAgICBzd2l0Y2gocHJvdG8pIHsKKyNpZmRlZiBTWVNQUk9UT19DT05UUk9MCisgICAgICAgIGNhc2UgU1lTUFJPVE9fQ09OVFJPTDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2N0bCAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfY3RsICopYWRkcjsKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoSUkpIiwgYS0+c2NfaWQsIGEtPnNjX3VuaXQpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGFkZHJlc3MgdHlwZSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgpAQCAtMTIyMSwxNyArMTI5MywyNyBAQAogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4qIGFkZHI7CiAgICAgICAgIGNoYXIgKnBhdGg7CiAgICAgICAgIGludCBsZW47Ci0gICAgICAgIGlmICghUHlBcmdfUGFyc2UoYXJncywgInMjIiwgJnBhdGgsICZsZW4pKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGludCByZXR2YWwgPSAwOworCisgICAgICAgIC8qIFBFUCAzODMuICBOb3QgdXNpbmcgUHlVbmljb2RlX0ZTQ29udmVydGVyIHNpbmNlIHdlIG5lZWQgdG8KKyAgICAgICAgICAgYWxsb3cgZW1iZWRkZWQgbnVsbHMgb24gTGludXguICovCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJncykpIHsKKyAgICAgICAgICAgIGlmICgoYXJncyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoYXJncykpID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZ3MsICJ5IyIsICZwYXRoLCAmbGVuKSkKKyAgICAgICAgICAgIGdvdG8gdW5peF9vdXQ7CiAKICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfdW4qKWFkZHJfcmV0OwogI2lmZGVmIGxpbnV4CiAgICAgICAgIGlmIChsZW4gPiAwICYmIHBhdGhbMF0gPT0gMCkgewogICAgICAgICAgICAgLyogTGludXggYWJzdHJhY3QgbmFtZXNwYWNlIGV4dGVuc2lvbiAqLwogICAgICAgICAgICAgaWYgKGxlbiA+IHNpemVvZiBhZGRyLT5zdW5fcGF0aCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBRl9VTklYIHBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICBnb3RvIHVuaXhfb3V0OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTEyMzksOSArMTMyMSw5IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIHJlZ3VsYXIgTlVMTC10ZXJtaW5hdGVkIHN0cmluZyAqLwogICAgICAgICAgICAgaWYgKGxlbiA+PSBzaXplb2YgYWRkci0+c3VuX3BhdGgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQUZfVU5JWCBwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byB1bml4X291dDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGFkZHItPnN1bl9wYXRoW2xlbl0gPSAwOwogICAgICAgICB9CkBAIC0xMjUyLDcgKzEzMzQsMTAgQEAKICNlbHNlCiAgICAgICAgICpsZW5fcmV0ID0gbGVuICsgb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX3VuLCBzdW5fcGF0aCk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHZhbCA9IDE7CisgICAgdW5peF9vdXQ6CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgcmV0dXJuIHJldHZhbDsKICAgICB9CiAjZW5kaWYgLyogQUZfVU5JWCAqLwogCkBAIC0xMjgwLDYgKzEzNjUsMTEgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIEFGX1JEUworICAgIGNhc2UgQUZfUkRTOgorICAgICAgICAvKiBSRFMgc29ja2V0cyB1c2Ugc29ja2FkZHJfaW46IGZhbGwtdGhyb3VnaCAqLworI2VuZGlmCisKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4qIGFkZHI7CkBAIC0xMzc2LDcgKzE0NjYsNyBAQAogICAgICAgICAgICAgX0JUX0wyX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic2kiLCAmc3RyYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmX0JUX0wyX01FTUIoYWRkciwgcHNtKSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTEzOTUsNyArMTQ4NSw3IEBACiAgICAgICAgICAgICBfQlRfUkNfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzaSIsICZzdHJhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfQlRfUkNfTUVNQihhZGRyLCBjaGFubmVsKSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0MTMsNyArMTUwMyw3IEBACiAKICAgICAgICAgICAgICAgICAgICAgICAgIF9CVF9IQ0lfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKHN0cmFkZHIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKICAgICAgICAgICAgICAgICAgICAgIndyb25nIGZvcm1hdCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQpAQCAtMTQyMiw3ICsxNTEyLDcgQEAKICNlbHNlCiAgICAgICAgICAgICBfQlRfSENJX01FTUIoYWRkciwgZmFtaWx5KSA9IEFGX0JMVUVUT09USDsKICAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZfQlRfSENJX01FTUIoYWRkciwgZGV2KSkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6ICIKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KQEAgLTE0MzksNyArMTUyOSw3IEBACiAgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9zY28gKilhZGRyX3JldDsKICAgICAgICAgICAgIF9CVF9TQ09fTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwogICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGFyZ3MpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid3JvbmcgZm9ybWF0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CkBAIC0xNDUyLDcgKzE1NDIsNyBAQAogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmFyZzogdW5rbm93biBCbHVldG9vdGggcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTE1NjQsMTAgKzE2NTQsMTE2IEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICBjYXNlIEFGX0NBTjoKKyAgICAgICAgc3dpdGNoIChzLT5zb2NrX3Byb3RvKSB7CisgICAgICAgIGNhc2UgQ0FOX1JBVzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2NhbiAqYWRkcjsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppbnRlcmZhY2VOYW1lOworICAgICAgICAgICAgc3RydWN0IGlmcmVxIGlmcjsKKyAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2NhbiAqKWFkZHJfcmV0OworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyYiLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmludGVyZmFjZU5hbWUpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGludGVyZmFjZU5hbWUpOworCisgICAgICAgICAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgICAgICAgICBpZnIuaWZyX2lmaW5kZXggPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmIChsZW4gPCBzaXplb2YoaWZyLmlmcl9uYW1lKSkgeworICAgICAgICAgICAgICAgIHN0cm5jcHkoaWZyLmlmcl9uYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhpbnRlcmZhY2VOYW1lKSwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpOworICAgICAgICAgICAgICAgIGlmci5pZnJfbmFtZVsoc2l6ZW9mKGlmci5pZnJfbmFtZSkpLTFdID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgU0lPQ0dJRklOREVYLCAmaWZyKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFGX0NBTiBpbnRlcmZhY2UgbmFtZSB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcmZhY2VOYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYWRkci0+Y2FuX2ZhbWlseSA9IEFGX0NBTjsKKyAgICAgICAgICAgIGFkZHItPmNhbl9pZmluZGV4ID0gaWZyLmlmcl9pZmluZGV4OworCisgICAgICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqYWRkcik7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW50ZXJmYWNlTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdldHNvY2thZGRyYXJnOiB1bnN1cHBvcnRlZCBDQU4gcHJvdG9jb2wiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgIAorI2lmZGVmIFBGX1NZU1RFTQorICAgIGNhc2UgUEZfU1lTVEVNOgorICAgICAgICBzd2l0Y2ggKHMtPnNvY2tfcHJvdG8pIHsKKyNpZmRlZiBTWVNQUk9UT19DT05UUk9MCisgICAgICAgIGNhc2UgU1lTUFJPVE9fQ09OVFJPTDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2N0bCAqYWRkcjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHJfY3RsICopYWRkcl9yZXQ7CisgICAgICAgICAgICBhZGRyLT5zY19mYW1pbHkgPSBBRl9TWVNURU07CisgICAgICAgICAgICBhZGRyLT5zc19zeXNhZGRyID0gQUZfU1lTX0NPTlRST0w7IAorCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICAgICAgc3RydWN0IGN0bF9pbmZvIGluZm87CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmN0bF9uYW1lOworCisgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShhcmdzLCAiTyYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZjdGxfbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoY3RsX25hbWUpID4gc2l6ZW9mKGluZm8uY3RsX25hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb3ZpZGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY3RsX25hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RybmNweShpbmZvLmN0bF9uYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhjdGxfbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaW5mby5jdGxfbmFtZSkpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihjdGxfbmFtZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaW9jdGwocy0+c29ja19mZCwgQ1RMSU9DR0lORk8sICZpbmZvKSkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBmaW5kIGtlcm5lbCBjb250cm9sIHdpdGggcHJvdmlkZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYWRkci0+c2NfaWQgPSBpbmZvLmN0bF9pZDsKKyAgICAgICAgICAgICAgICBhZGRyLT5zY191bml0ID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIklJIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihhZGRyLT5zY19pZCksICYoYWRkci0+c2NfdW5pdCkpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCBzdHIgb3IgdHVwbGUgb2YgdHdvIGludHMiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqYWRkcik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja2FkZHJhcmc6IHVuc3VwcG9ydGVkIFBGX1NZU1RFTSBwcm90b2NvbCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyNlbmRpZgorCiAgICAgLyogTW9yZSBjYXNlcyBoZXJlLi4uICovCiAKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IGJhZCBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJnZXRzb2NrYWRkcmFyZzogYmFkIGZhbWlseSIpOwogICAgICAgICByZXR1cm4gMDsKIAogICAgIH0KQEAgLTE1OTgsNiArMTc5NCwxMSBAQAogICAgICAgIH0KICNlbmRpZgogCisjaWZkZWYgQUZfUkRTCisgICAgY2FzZSBBRl9SRFM6CisgICAgICAgIC8qIFJEUyBzb2NrZXRzIHVzZSBzb2NrYWRkcl9pbjogZmFsbC10aHJvdWdoICovCisjZW5kaWYKKwogICAgIGNhc2UgQUZfSU5FVDoKICAgICB7CiAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW4pOwpAQCAtMTYzMyw3ICsxODM0LDcgQEAKICAgICAgICAgICAgIHJldHVybiAxOwogI2VuZGlmCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJsZW46ICIKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAiZ2V0c29ja2FkZHJsZW46ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBCVCBwcm90b2NvbCIpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTE2NTcsMTYgKzE4NTgsMTUxIEBACiAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBBRl9DQU4KKyAgICBjYXNlIEFGX0NBTjoKKyAgICB7CisgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfY2FuKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorI2VuZGlmCisgICAgICAgICAgICAKKyNpZmRlZiBQRl9TWVNURU0KKyAgICBjYXNlIFBGX1NZU1RFTToKKyAgICAgICAgc3dpdGNoKHMtPnNvY2tfcHJvdG8pIHsKKyNpZmRlZiBTWVNQUk9UT19DT05UUk9MCisgICAgICAgIGNhc2UgU1lTUFJPVE9fQ09OVFJPTDoKKyAgICAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfY3RsKTsKKyAgICAgICAgICAgIHJldHVybiAxOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRybGVuOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gUEZfU1lTVEVNIHByb3RvY29sIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorI2VuZGlmCisKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsICJnZXRzb2NrYWRkcmxlbjogYmFkIGZhbWlseSIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRybGVuOiBiYWQgZmFtaWx5Iik7CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgfQogfQogCiAKKy8qIFN1cHBvcnQgZnVuY3Rpb25zIGZvciB0aGUgc2VuZG1zZygpIGFuZCByZWN2bXNnW19pbnRvXSgpIG1ldGhvZHMuCisgICBDdXJyZW50bHksIHRoZXNlIG1ldGhvZHMgYXJlIG9ubHkgY29tcGlsZWQgaWYgdGhlIFJGQyAyMjkyLzM1NDIKKyAgIENNU0dfTEVOKCkgbWFjcm8gaXMgYXZhaWxhYmxlLiAgT2xkZXIgc3lzdGVtcyBzZWVtIHRvIGhhdmUgdXNlZAorICAgc2l6ZW9mKHN0cnVjdCBjbXNnaGRyKSArIChsZW5ndGgpIHdoZXJlIENNU0dfTEVOKCkgaXMgdXNlZCBub3csIHNvCisgICBpdCBtYXkgYmUgcG9zc2libGUgdG8gZGVmaW5lIENNU0dfTEVOKCkgdGhhdCB3YXkgaWYgaXQncyBub3QKKyAgIHByb3ZpZGVkLiAgU29tZSBhcmNoaXRlY3R1cmVzIG1pZ2h0IG5lZWQgZXh0cmEgcGFkZGluZyBhZnRlciB0aGUKKyAgIGNtc2doZHIsIGhvd2V2ZXIsIGFuZCBDTVNHX0xFTigpIHdvdWxkIGhhdmUgdG8gdGFrZSBhY2NvdW50IG9mCisgICB0aGlzLiAqLworI2lmZGVmIENNU0dfTEVOCisvKiBJZiBsZW5ndGggaXMgaW4gcmFuZ2UsIHNldCAqcmVzdWx0IHRvIENNU0dfTEVOKGxlbmd0aCkgYW5kIHJldHVybgorICAgdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuICovCitzdGF0aWMgaW50CitnZXRfQ01TR19MRU4oc2l6ZV90IGxlbmd0aCwgc2l6ZV90ICpyZXN1bHQpCit7CisgICAgc2l6ZV90IHRtcDsKKworICAgIGlmIChsZW5ndGggPiAoU09DS0xFTl9UX0xJTUlUIC0gQ01TR19MRU4oMCkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICB0bXAgPSBDTVNHX0xFTihsZW5ndGgpOworICAgIGlmICh0bXAgPiBTT0NLTEVOX1RfTElNSVQgfHwgdG1wIDwgbGVuZ3RoKQorICAgICAgICByZXR1cm4gMDsKKyAgICAqcmVzdWx0ID0gdG1wOworICAgIHJldHVybiAxOworfQorCisjaWZkZWYgQ01TR19TUEFDRQorLyogSWYgbGVuZ3RoIGlzIGluIHJhbmdlLCBzZXQgKnJlc3VsdCB0byBDTVNHX1NQQUNFKGxlbmd0aCkgYW5kIHJldHVybgorICAgdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4gZmFsc2UuICovCitzdGF0aWMgaW50CitnZXRfQ01TR19TUEFDRShzaXplX3QgbGVuZ3RoLCBzaXplX3QgKnJlc3VsdCkKK3sKKyAgICBzaXplX3QgdG1wOworCisgICAgLyogVXNlIENNU0dfU1BBQ0UoMSkgaGVyZSBpbiBvcmRlciB0byB0YWtlIGFjY291bnQgb2YgdGhlIHBhZGRpbmcKKyAgICAgICBuZWNlc3NhcnkgYmVmb3JlICphbmQqIGFmdGVyIHRoZSBkYXRhLiAqLworICAgIGlmIChsZW5ndGggPiAoU09DS0xFTl9UX0xJTUlUIC0gQ01TR19TUEFDRSgxKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHRtcCA9IENNU0dfU1BBQ0UobGVuZ3RoKTsKKyAgICBpZiAodG1wID4gU09DS0xFTl9UX0xJTUlUIHx8IHRtcCA8IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgKnJlc3VsdCA9IHRtcDsKKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZgorCisvKiBSZXR1cm4gdHJ1ZSBpZmYgbXNnLT5tc2dfY29udHJvbGxlbiBpcyB2YWxpZCwgY21zZ2ggaXMgYSB2YWxpZAorICAgcG9pbnRlciBpbiBtc2ctPm1zZ19jb250cm9sIHdpdGggYXQgbGVhc3QgInNwYWNlIiBieXRlcyBhZnRlciBpdCwKKyAgIGFuZCBpdHMgY21zZ19sZW4gbWVtYmVyIGluc2lkZSB0aGUgYnVmZmVyLiAqLworc3RhdGljIGludAorY21zZ19taW5fc3BhY2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3QgY21zZ2hkciAqY21zZ2gsIHNpemVfdCBzcGFjZSkKK3sKKyAgICBzaXplX3QgY21zZ19vZmZzZXQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBjbXNnX2xlbl9lbmQgPSAob2Zmc2V0b2Yoc3RydWN0IGNtc2doZHIsIGNtc2dfbGVuKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNtc2doLT5jbXNnX2xlbikpOworCisgICAgLyogTm90ZSB0aGF0IFBPU0lYIGFsbG93cyBtc2dfY29udHJvbGxlbiB0byBiZSBvZiBzaWduZWQgdHlwZS4gKi8KKyAgICBpZiAoY21zZ2ggPT0gTlVMTCB8fCBtc2ctPm1zZ19jb250cm9sID09IE5VTEwgfHwgbXNnLT5tc2dfY29udHJvbGxlbiA8IDApCisgICAgICAgIHJldHVybiAwOworICAgIGlmIChzcGFjZSA8IGNtc2dfbGVuX2VuZCkKKyAgICAgICAgc3BhY2UgPSBjbXNnX2xlbl9lbmQ7CisgICAgY21zZ19vZmZzZXQgPSAoY2hhciAqKWNtc2doIC0gKGNoYXIgKiltc2ctPm1zZ19jb250cm9sOworICAgIHJldHVybiAoY21zZ19vZmZzZXQgPD0gKHNpemVfdCktMSAtIHNwYWNlICYmCisgICAgICAgICAgICBjbXNnX29mZnNldCArIHNwYWNlIDw9IG1zZy0+bXNnX2NvbnRyb2xsZW4pOworfQorCisvKiBJZiBwb2ludGVyIENNU0dfREFUQShjbXNnaCkgaXMgaW4gYnVmZmVyIG1zZy0+bXNnX2NvbnRyb2wsIHNldAorICAgKnNwYWNlIHRvIG51bWJlciBvZiBieXRlcyBmb2xsb3dpbmcgaXQgaW4gdGhlIGJ1ZmZlciBhbmQgcmV0dXJuCisgICB0cnVlOyBvdGhlcndpc2UsIHJldHVybiBmYWxzZS4gIEFzc3VtZXMgY21zZ2gsIG1zZy0+bXNnX2NvbnRyb2wgYW5kCisgICBtc2ctPm1zZ19jb250cm9sbGVuIGFyZSB2YWxpZC4gKi8KK3N0YXRpYyBpbnQKK2dldF9jbXNnX2RhdGFfc3BhY2Uoc3RydWN0IG1zZ2hkciAqbXNnLCBzdHJ1Y3QgY21zZ2hkciAqY21zZ2gsIHNpemVfdCAqc3BhY2UpCit7CisgICAgc2l6ZV90IGRhdGFfb2Zmc2V0OworICAgIGNoYXIgKmRhdGFfcHRyOworCisgICAgaWYgKChkYXRhX3B0ciA9IChjaGFyICopQ01TR19EQVRBKGNtc2doKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZGF0YV9vZmZzZXQgPSBkYXRhX3B0ciAtIChjaGFyICopbXNnLT5tc2dfY29udHJvbDsKKyAgICBpZiAoZGF0YV9vZmZzZXQgPiBtc2ctPm1zZ19jb250cm9sbGVuKQorICAgICAgICByZXR1cm4gMDsKKyAgICAqc3BhY2UgPSBtc2ctPm1zZ19jb250cm9sbGVuIC0gZGF0YV9vZmZzZXQ7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIElmIGNtc2doIGlzIGludmFsaWQgb3Igbm90IGNvbnRhaW5lZCBpbiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKKyAgIG1zZy0+bXNnX2NvbnRyb2wsIHJldHVybiAtMS4gIElmIGNtc2doIGlzIHZhbGlkIGFuZCBpdHMgYXNzb2NpYXRlZAorICAgZGF0YSBpcyBlbnRpcmVseSBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciwgc2V0ICpkYXRhX2xlbiB0byB0aGUKKyAgIGxlbmd0aCBvZiB0aGUgYXNzb2NpYXRlZCBkYXRhIGFuZCByZXR1cm4gMC4gIElmIG9ubHkgcGFydCBvZiB0aGUKKyAgIGFzc29jaWF0ZWQgZGF0YSBpcyBjb250YWluZWQgaW4gdGhlIGJ1ZmZlciBidXQgY21zZ2ggaXMgb3RoZXJ3aXNlCisgICB2YWxpZCwgc2V0ICpkYXRhX2xlbiB0byB0aGUgbGVuZ3RoIGNvbnRhaW5lZCBpbiB0aGUgYnVmZmVyIGFuZAorICAgcmV0dXJuIDEuICovCitzdGF0aWMgaW50CitnZXRfY21zZ19kYXRhX2xlbihzdHJ1Y3QgbXNnaGRyICptc2csIHN0cnVjdCBjbXNnaGRyICpjbXNnaCwgc2l6ZV90ICpkYXRhX2xlbikKK3sKKyAgICBzaXplX3Qgc3BhY2UsIGNtc2dfZGF0YV9sZW47CisKKyAgICBpZiAoIWNtc2dfbWluX3NwYWNlKG1zZywgY21zZ2gsIENNU0dfTEVOKDApKSB8fAorICAgICAgICBjbXNnaC0+Y21zZ19sZW4gPCBDTVNHX0xFTigwKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGNtc2dfZGF0YV9sZW4gPSBjbXNnaC0+Y21zZ19sZW4gLSBDTVNHX0xFTigwKTsKKyAgICBpZiAoIWdldF9jbXNnX2RhdGFfc3BhY2UobXNnLCBjbXNnaCwgJnNwYWNlKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChzcGFjZSA+PSBjbXNnX2RhdGFfbGVuKSB7CisgICAgICAgICpkYXRhX2xlbiA9IGNtc2dfZGF0YV9sZW47CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAqZGF0YV9sZW4gPSBzcGFjZTsKKyAgICByZXR1cm4gMTsKK30KKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCisKIC8qIHMuX2FjY2VwdCgpIC0+IChmZCwgYWRkcmVzcykgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE4ODksNyArMjIyNSw3IEBACiAjZWxzZQogICAgIGlmIChidWZsZW4gPD0gMCB8fCBidWZsZW4gPiAxMDI0KSB7CiAjZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZ2V0c29ja29wdCBidWZsZW4gb3V0IG9mIHJhbmdlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTI2MjAsNiArMjk1NiwzMzEgQEAKIExpa2UgcmVjdl9pbnRvKGJ1ZmZlclssIG5ieXRlc1ssIGZsYWdzXV0pIGJ1dCBhbHNvIHJldHVybiB0aGUgc2VuZGVyJ3MgYWRkcmVzcyBpbmZvLiIpOwogCiAKKy8qIFRoZSBzZW5kbXNnKCkgYW5kIHJlY3Ztc2dbX2ludG9dKCkgbWV0aG9kcyByZXF1aXJlIGEgd29ya2luZworICAgQ01TR19MRU4oKS4gIFNlZSB0aGUgY29tbWVudCBuZWFyIGdldF9DTVNHX0xFTigpLiAqLworI2lmZGVmIENNU0dfTEVOCisvKgorICogQ2FsbCByZWN2bXNnKCkgd2l0aCB0aGUgc3VwcGxpZWQgaW92ZWMgc3RydWN0dXJlcywgZmxhZ3MsIGFuZAorICogYW5jaWxsYXJ5IGRhdGEgYnVmZmVyIHNpemUgKGNvbnRyb2xsZW4pLiAgUmV0dXJucyB0aGUgdHVwbGUgcmV0dXJuCisgKiB2YWx1ZSBmb3IgcmVjdm1zZygpIG9yIHJlY3Ztc2dfaW50bygpLCB3aXRoIHRoZSBmaXJzdCBpdGVtIHByb3ZpZGVkCisgKiBieSB0aGUgc3VwcGxpZWQgbWFrZXZhbCgpIGZ1bmN0aW9uLiAgbWFrZXZhbCgpIHdpbGwgYmUgY2FsbGVkIHdpdGgKKyAqIHRoZSBsZW5ndGggcmVhZCBhbmQgbWFrZXZhbF9kYXRhIGFzIGFyZ3VtZW50cywgYW5kIG11c3QgcmV0dXJuIGEKKyAqIG5ldyByZWZlcmVuY2UgKHdoaWNoIHdpbGwgYmUgZGVjcmVmZWQgaWYgdGhlcmUgaXMgYSBzdWJzZXF1ZW50CisgKiBlcnJvcikuICBPbiBlcnJvciwgY2xvc2VzIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYQorICogU0NNX1JJR0hUUy4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK3NvY2tfcmVjdm1zZ19ndXRzKFB5U29ja2V0U29ja09iamVjdCAqcywgc3RydWN0IGlvdmVjICppb3YsIGludCBpb3ZsZW4sCisgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIFB5X3NzaXplX3QgY29udHJvbGxlbiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICooKm1ha2V2YWwpKHNzaXplX3QsIHZvaWQgKiksIHZvaWQgKm1ha2V2YWxfZGF0YSkKK3sKKyAgICBzc2l6ZV90IGJ5dGVzX3JlY2VpdmVkID0gLTE7CisgICAgaW50IHRpbWVvdXQ7CisgICAgc29ja19hZGRyX3QgYWRkcmJ1ZjsKKyAgICBzb2NrbGVuX3QgYWRkcmJ1ZmxlbjsKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZyA9IHswfTsKKyAgICBQeU9iamVjdCAqY21zZ19saXN0ID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CisgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CisgICAgc3RydWN0IGNtc2doZHIgKmNtc2doOworICAgIHNpemVfdCBjbXNnZGF0YWxlbiA9IDA7CisgICAgaW50IGNtc2dfc3RhdHVzOworCisgICAgLyogWFhYOiBQT1NJWCBzYXlzIHRoYXQgbXNnX25hbWUgYW5kIG1zZ19uYW1lbGVuICJzaGFsbCBiZQorICAgICAgIGlnbm9yZWQiIHdoZW4gdGhlIHNvY2tldCBpcyBjb25uZWN0ZWQgKExpbnV4IGZpbGxzIHRoZW0gaW4KKyAgICAgICBhbnl3YXkgZm9yIEFGX1VOSVggc29ja2V0cyBhdCBsZWFzdCkuICBOb3JtYWxseSBtc2dfbmFtZWxlbgorICAgICAgIHNlZW1zIHRvIGJlIHNldCB0byAwIGlmIHRoZXJlJ3Mgbm8gYWRkcmVzcywgYnV0IHRyeSB0bworICAgICAgIGluaXRpYWxpemUgbXNnX25hbWUgdG8gc29tZXRoaW5nIHRoYXQgd29uJ3QgYmUgbWlzdGFrZW4gZm9yIGEKKyAgICAgICByZWFsIGFkZHJlc3MgaWYgdGhhdCBkb2Vzbid0IGhhcHBlbi4gKi8KKyAgICBpZiAoIWdldHNvY2thZGRybGVuKHMsICZhZGRyYnVmbGVuKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtc2V0KCZhZGRyYnVmLCAwLCBhZGRyYnVmbGVuKTsKKyAgICBTQVMyU0EoJmFkZHJidWYpLT5zYV9mYW1pbHkgPSBBRl9VTlNQRUM7CisKKyAgICBpZiAoY29udHJvbGxlbiA8IDAgfHwgY29udHJvbGxlbiA+IFNPQ0tMRU5fVF9MSU1JVCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIGFuY2lsbGFyeSBkYXRhIGJ1ZmZlciBsZW5ndGgiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChjb250cm9sbGVuID4gMCAmJiAoY29udHJvbGJ1ZiA9IFB5TWVtX01hbGxvYyhjb250cm9sbGVuKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICAvKiBNYWtlIHRoZSBzeXN0ZW0gY2FsbC4gKi8KKyAgICBpZiAoIUlTX1NFTEVDVEFCTEUocykpIHsKKyAgICAgICAgc2VsZWN0X2Vycm9yKCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBCRUdJTl9TRUxFQ1RfTE9PUChzKQorICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFM7CisgICAgbXNnLm1zZ19uYW1lID0gU0FTMlNBKCZhZGRyYnVmKTsKKyAgICBtc2cubXNnX25hbWVsZW4gPSBhZGRyYnVmbGVuOworICAgIG1zZy5tc2dfaW92ID0gaW92OworICAgIG1zZy5tc2dfaW92bGVuID0gaW92bGVuOworICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisgICAgbXNnLm1zZ19jb250cm9sbGVuID0gY29udHJvbGxlbjsKKyAgICB0aW1lb3V0ID0gaW50ZXJuYWxfc2VsZWN0X2V4KHMsIDAsIGludGVydmFsKTsKKyAgICBpZiAoIXRpbWVvdXQpCisgICAgICAgIGJ5dGVzX3JlY2VpdmVkID0gcmVjdm1zZyhzLT5zb2NrX2ZkLCAmbXNnLCBmbGFncyk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFM7CisgICAgaWYgKHRpbWVvdXQgPT0gMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X3RpbWVvdXQsICJ0aW1lZCBvdXQiKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBFTkRfU0VMRUNUX0xPT1AocykKKworICAgIGlmIChieXRlc19yZWNlaXZlZCA8IDApIHsKKyAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICAvKiBNYWtlIGxpc3Qgb2YgKGxldmVsLCB0eXBlLCBkYXRhKSB0dXBsZXMgZnJvbSBjb250cm9sIG1lc3NhZ2VzLiAqLworICAgIGlmICgoY21zZ19saXN0ID0gUHlMaXN0X05ldygwKSkgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgLyogQ2hlY2sgZm9yIGVtcHR5IGFuY2lsbGFyeSBkYXRhIGFzIG9sZCBDTVNHX0ZJUlNUSERSKCkKKyAgICAgICBpbXBsZW1lbnRhdGlvbnMgZGlkbid0IGRvIHNvLiAqLworICAgIGZvciAoY21zZ2ggPSAoKG1zZy5tc2dfY29udHJvbGxlbiA+IDApID8gQ01TR19GSVJTVEhEUigmbXNnKSA6IE5VTEwpOworICAgICAgICAgY21zZ2ggIT0gTlVMTDsgY21zZ2ggPSBDTVNHX05YVEhEUigmbXNnLCBjbXNnaCkpIHsKKyAgICAgICAgUHlPYmplY3QgKmJ5dGVzLCAqdHVwbGU7CisgICAgICAgIGludCB0bXA7CisKKyAgICAgICAgY21zZ19zdGF0dXMgPSBnZXRfY21zZ19kYXRhX2xlbigmbXNnLCBjbXNnaCwgJmNtc2dkYXRhbGVuKTsKKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzICE9IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfUnVudGltZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWNlaXZlZCBtYWxmb3JtZWQgb3IgaW1wcm9wZXJseS10cnVuY2F0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5jaWxsYXJ5IGRhdGEiLCAxKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKyAgICAgICAgfQorICAgICAgICBpZiAoY21zZ19zdGF0dXMgPCAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmIChjbXNnZGF0YWxlbiA+IFBZX1NTSVpFX1RfTUFYKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImNvbnRyb2wgbWVzc2FnZSB0b28gbG9uZyIpOworICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisgICAgICAgIH0KKworICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilDTVNHX0RBVEEoY21zZ2gpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21zZ2RhdGFsZW4pOworICAgICAgICB0dXBsZSA9IFB5X0J1aWxkVmFsdWUoImlpTiIsIChpbnQpY21zZ2gtPmNtc2dfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWNtc2doLT5jbXNnX3R5cGUsIGJ5dGVzKTsKKyAgICAgICAgaWYgKHR1cGxlID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycl9jbG9zZWZkczsKKyAgICAgICAgdG1wID0gUHlMaXN0X0FwcGVuZChjbXNnX2xpc3QsIHR1cGxlKTsKKyAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgaWYgKHRtcCAhPSAwKQorICAgICAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisKKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzICE9IDApCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR2YWwgPSBQeV9CdWlsZFZhbHVlKCJOT2lOIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbWFrZXZhbCkoYnl0ZXNfcmVjZWl2ZWQsIG1ha2V2YWxfZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjbXNnX2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1zZy5tc2dfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlc29ja2FkZHIocy0+c29ja19mZCwgU0FTMlNBKCZhZGRyYnVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKG1zZy5tc2dfbmFtZWxlbiA+IGFkZHJidWZsZW4pID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcmJ1ZmxlbiA6IG1zZy5tc2dfbmFtZWxlbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+c29ja19wcm90bykpOworICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJfY2xvc2VmZHM7CisKK2ZpbmFsbHk6CisgICAgUHlfWERFQ1JFRihjbXNnX2xpc3QpOworICAgIFB5TWVtX0ZyZWUoY29udHJvbGJ1Zik7CisgICAgcmV0dXJuIHJldHZhbDsKKworZXJyX2Nsb3NlZmRzOgorI2lmZGVmIFNDTV9SSUdIVFMKKyAgICAvKiBDbG9zZSBhbGwgZGVzY3JpcHRvcnMgY29taW5nIGZyb20gU0NNX1JJR0hUUywgc28gdGhleSBkb24ndCBsZWFrLiAqLworICAgIGZvciAoY21zZ2ggPSAoKG1zZy5tc2dfY29udHJvbGxlbiA+IDApID8gQ01TR19GSVJTVEhEUigmbXNnKSA6IE5VTEwpOworICAgICAgICAgY21zZ2ggIT0gTlVMTDsgY21zZ2ggPSBDTVNHX05YVEhEUigmbXNnLCBjbXNnaCkpIHsKKyAgICAgICAgY21zZ19zdGF0dXMgPSBnZXRfY21zZ19kYXRhX2xlbigmbXNnLCBjbXNnaCwgJmNtc2dkYXRhbGVuKTsKKyAgICAgICAgaWYgKGNtc2dfc3RhdHVzIDwgMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY21zZ2gtPmNtc2dfbGV2ZWwgPT0gU09MX1NPQ0tFVCAmJgorICAgICAgICAgICAgY21zZ2gtPmNtc2dfdHlwZSA9PSBTQ01fUklHSFRTKSB7CisgICAgICAgICAgICBzaXplX3QgbnVtZmRzOworICAgICAgICAgICAgaW50ICpmZHA7CisKKyAgICAgICAgICAgIG51bWZkcyA9IGNtc2dkYXRhbGVuIC8gc2l6ZW9mKGludCk7CisgICAgICAgICAgICBmZHAgPSAoaW50ICopQ01TR19EQVRBKGNtc2doKTsKKyAgICAgICAgICAgIHdoaWxlIChudW1mZHMtLSA+IDApCisgICAgICAgICAgICAgICAgY2xvc2UoKmZkcCsrKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY21zZ19zdGF0dXMgIT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyNlbmRpZiAvKiBTQ01fUklHSFRTICovCisgICAgZ290byBmaW5hbGx5OworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCittYWtldmFsX3JlY3Ztc2coc3NpemVfdCByZWNlaXZlZCwgdm9pZCAqZGF0YSkKK3sKKyAgICBQeU9iamVjdCAqKmJ1ZiA9IGRhdGE7CisKKyAgICBpZiAocmVjZWl2ZWQgPCBQeUJ5dGVzX0dFVF9TSVpFKCpidWYpKQorICAgICAgICBfUHlCeXRlc19SZXNpemUoYnVmLCByZWNlaXZlZCk7CisgICAgUHlfWElOQ1JFRigqYnVmKTsKKyAgICByZXR1cm4gKmJ1ZjsKK30KKworLyogcy5yZWN2bXNnKGJ1ZnNpemVbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkgbWV0aG9kICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrX3JlY3Ztc2coUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGJ1ZnNpemUsIGFuY2J1ZnNpemUgPSAwOworICAgIGludCBmbGFncyA9IDA7CisgICAgc3RydWN0IGlvdmVjIGlvdjsKKyAgICBQeU9iamVjdCAqYnVmID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58bmk6cmVjdm1zZyIsICZidWZzaXplLCAmYW5jYnVmc2l6ZSwgJmZsYWdzKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoYnVmc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJuZWdhdGl2ZSBidWZmZXIgc2l6ZSBpbiByZWN2bXNnKCkiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmICgoYnVmID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBidWZzaXplKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaW92Lmlvdl9iYXNlID0gUHlCeXRlc19BU19TVFJJTkcoYnVmKTsKKyAgICBpb3YuaW92X2xlbiA9IGJ1ZnNpemU7CisKKyAgICAvKiBOb3RlIHRoYXQgd2UncmUgcGFzc2luZyBhIHBvaW50ZXIgdG8gKm91ciBwb2ludGVyKiB0byB0aGUgYnl0ZXMKKyAgICAgICBvYmplY3QgaGVyZSAoJmJ1Zik7IG1ha2V2YWxfcmVjdm1zZygpIG1heSBpbmNyZWYgdGhlIG9iamVjdCwgb3IKKyAgICAgICBkZWFsbG9jYXRlIGl0IGFuZCBzZXQgb3VyIHBvaW50ZXIgdG8gTlVMTC4gKi8KKyAgICByZXR2YWwgPSBzb2NrX3JlY3Ztc2dfZ3V0cyhzLCAmaW92LCAxLCBmbGFncywgYW5jYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFrZXZhbF9yZWN2bXNnLCAmYnVmKTsKKyAgICBQeV9YREVDUkVGKGJ1Zik7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlEb2NfU1RSVkFSKHJlY3Ztc2dfZG9jLAorInJlY3Ztc2coYnVmc2l6ZVssIGFuY2J1ZnNpemVbLCBmbGFnc11dKSAtPiAoZGF0YSwgYW5jZGF0YSwgbXNnX2ZsYWdzLCBhZGRyZXNzKVxuXAorXG5cCitSZWNlaXZlIG5vcm1hbCBkYXRhICh1cCB0byBidWZzaXplIGJ5dGVzKSBhbmQgYW5jaWxsYXJ5IGRhdGEgZnJvbSB0aGVcblwKK3NvY2tldC4gIFRoZSBhbmNidWZzaXplIGFyZ3VtZW50IHNldHMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlXG5cCitpbnRlcm5hbCBidWZmZXIgdXNlZCB0byByZWNlaXZlIHRoZSBhbmNpbGxhcnkgZGF0YTsgaXQgZGVmYXVsdHMgdG8gMCxcblwKK21lYW5pbmcgdGhhdCBubyBhbmNpbGxhcnkgZGF0YSB3aWxsIGJlIHJlY2VpdmVkLiAgQXBwcm9wcmlhdGUgYnVmZmVyXG5cCitzaXplcyBmb3IgYW5jaWxsYXJ5IGRhdGEgY2FuIGJlIGNhbGN1bGF0ZWQgdXNpbmcgQ01TR19TUEFDRSgpIG9yXG5cCitDTVNHX0xFTigpLCBhbmQgaXRlbXMgd2hpY2ggZG8gbm90IGZpdCBpbnRvIHRoZSBidWZmZXIgbWlnaHQgYmVcblwKK3RydW5jYXRlZCBvciBkaXNjYXJkZWQuICBUaGUgZmxhZ3MgYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZVxuXAorc2FtZSBtZWFuaW5nIGFzIGZvciByZWN2KCkuXG5cCitcblwKK1RoZSByZXR1cm4gdmFsdWUgaXMgYSA0LXR1cGxlOiAoZGF0YSwgYW5jZGF0YSwgbXNnX2ZsYWdzLCBhZGRyZXNzKS5cblwKK1RoZSBkYXRhIGl0ZW0gaXMgYSBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgbm9uLWFuY2lsbGFyeSBkYXRhXG5cCityZWNlaXZlZC4gIFRoZSBhbmNkYXRhIGl0ZW0gaXMgYSBsaXN0IG9mIHplcm8gb3IgbW9yZSB0dXBsZXNcblwKKyhjbXNnX2xldmVsLCBjbXNnX3R5cGUsIGNtc2dfZGF0YSkgcmVwcmVzZW50aW5nIHRoZSBhbmNpbGxhcnkgZGF0YVxuXAorKGNvbnRyb2wgbWVzc2FnZXMpIHJlY2VpdmVkOiBjbXNnX2xldmVsIGFuZCBjbXNnX3R5cGUgYXJlIGludGVnZXJzXG5cCitzcGVjaWZ5aW5nIHRoZSBwcm90b2NvbCBsZXZlbCBhbmQgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZSByZXNwZWN0aXZlbHksXG5cCithbmQgY21zZ19kYXRhIGlzIGEgYnl0ZXMgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWQgZGF0YS4gIFRoZVxuXAorbXNnX2ZsYWdzIGl0ZW0gaXMgdGhlIGJpdHdpc2UgT1Igb2YgdmFyaW91cyBmbGFncyBpbmRpY2F0aW5nXG5cCitjb25kaXRpb25zIG9uIHRoZSByZWNlaXZlZCBtZXNzYWdlOyBzZWUgeW91ciBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBmb3JcblwKK2RldGFpbHMuICBJZiB0aGUgcmVjZWl2aW5nIHNvY2tldCBpcyB1bmNvbm5lY3RlZCwgYWRkcmVzcyBpcyB0aGVcblwKK2FkZHJlc3Mgb2YgdGhlIHNlbmRpbmcgc29ja2V0LCBpZiBhdmFpbGFibGU7IG90aGVyd2lzZSwgaXRzIHZhbHVlIGlzXG5cCit1bnNwZWNpZmllZC5cblwKK1xuXAorSWYgcmVjdm1zZygpIHJhaXNlcyBhbiBleGNlcHRpb24gYWZ0ZXIgdGhlIHN5c3RlbSBjYWxsIHJldHVybnMsIGl0XG5cCit3aWxsIGZpcnN0IGF0dGVtcHQgdG8gY2xvc2UgYW55IGZpbGUgZGVzY3JpcHRvcnMgcmVjZWl2ZWQgdmlhIHRoZVxuXAorU0NNX1JJR0hUUyBtZWNoYW5pc20uIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK21ha2V2YWxfcmVjdm1zZ19pbnRvKHNzaXplX3QgcmVjZWl2ZWQsIHZvaWQgKmRhdGEpCit7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZWNlaXZlZCk7Cit9CisKKy8qIHMucmVjdm1zZ19pbnRvKGJ1ZmZlcnNbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkgbWV0aG9kICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrX3JlY3Ztc2dfaW50byhQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgYW5jYnVmc2l6ZSA9IDA7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaSwgbml0ZW1zLCBuYnVmcyA9IDA7CisgICAgUHlfYnVmZmVyICpidWZzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYnVmZmVyc19hcmcsICpmYXN0LCAqcmV0dmFsID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xuaTpyZWN2bXNnX2ludG8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmZmVyc19hcmcsICZhbmNidWZzaXplLCAmZmxhZ3MpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICgoZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChidWZmZXJzX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlY3Ztc2dfaW50bygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBuaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZmFzdCk7CisgICAgaWYgKG5pdGVtcyA+IElOVF9NQVgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJyZWN2bXNnX2ludG8oKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIGl0ZW0sIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBpZiAobml0ZW1zID4gMCAmJiAoKGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuaXRlbXMpKSA9PSBOVUxMIHx8CisgICAgICAgICAgICAgICAgICAgICAgIChidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbml0ZW1zKSkgPT0gTlVMTCkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBmb3IgKDsgbmJ1ZnMgPCBuaXRlbXM7IG5idWZzKyspIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZmFzdCwgbmJ1ZnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ3KjtyZWN2bXNnX2ludG8oKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJvZiBzaW5nbGUtc2VnbWVudCByZWFkLXdyaXRlIGJ1ZmZlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZidWZzW25idWZzXSkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIGlvdnNbbmJ1ZnNdLmlvdl9iYXNlID0gYnVmc1tuYnVmc10uYnVmOworICAgICAgICBpb3ZzW25idWZzXS5pb3ZfbGVuID0gYnVmc1tuYnVmc10ubGVuOworICAgIH0KKworICAgIHJldHZhbCA9IHNvY2tfcmVjdm1zZ19ndXRzKHMsIGlvdnMsIG5pdGVtcywgZmxhZ3MsIGFuY2J1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1ha2V2YWxfcmVjdm1zZ19pbnRvLCBOVUxMKTsKK2ZpbmFsbHk6CisgICAgZm9yIChpID0gMDsgaSA8IG5idWZzOyBpKyspCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1ZnNbaV0pOworICAgIFB5TWVtX0ZyZWUoYnVmcyk7CisgICAgUHlNZW1fRnJlZShpb3ZzKTsKKyAgICBQeV9ERUNSRUYoZmFzdCk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlEb2NfU1RSVkFSKHJlY3Ztc2dfaW50b19kb2MsCisicmVjdm1zZ19pbnRvKGJ1ZmZlcnNbLCBhbmNidWZzaXplWywgZmxhZ3NdXSkgLT4gKG5ieXRlcywgYW5jZGF0YSwgbXNnX2ZsYWdzLCBhZGRyZXNzKVxuXAorXG5cCitSZWNlaXZlIG5vcm1hbCBkYXRhIGFuZCBhbmNpbGxhcnkgZGF0YSBmcm9tIHRoZSBzb2NrZXQsIHNjYXR0ZXJpbmcgdGhlXG5cCitub24tYW5jaWxsYXJ5IGRhdGEgaW50byBhIHNlcmllcyBvZiBidWZmZXJzLiAgVGhlIGJ1ZmZlcnMgYXJndW1lbnRcblwKK211c3QgYmUgYW4gaXRlcmFibGUgb2Ygb2JqZWN0cyB0aGF0IGV4cG9ydCB3cml0YWJsZSBidWZmZXJzXG5cCisoZS5nLiBieXRlYXJyYXkgb2JqZWN0cyk7IHRoZXNlIHdpbGwgYmUgZmlsbGVkIHdpdGggc3VjY2Vzc2l2ZSBjaHVua3NcblwKK29mIHRoZSBub24tYW5jaWxsYXJ5IGRhdGEgdW50aWwgaXQgaGFzIGFsbCBiZWVuIHdyaXR0ZW4gb3IgdGhlcmUgYXJlXG5cCitubyBtb3JlIGJ1ZmZlcnMuICBUaGUgYW5jYnVmc2l6ZSBhcmd1bWVudCBzZXRzIHRoZSBzaXplIGluIGJ5dGVzIG9mXG5cCit0aGUgaW50ZXJuYWwgYnVmZmVyIHVzZWQgdG8gcmVjZWl2ZSB0aGUgYW5jaWxsYXJ5IGRhdGE7IGl0IGRlZmF1bHRzIHRvXG5cCiswLCBtZWFuaW5nIHRoYXQgbm8gYW5jaWxsYXJ5IGRhdGEgd2lsbCBiZSByZWNlaXZlZC4gIEFwcHJvcHJpYXRlXG5cCitidWZmZXIgc2l6ZXMgZm9yIGFuY2lsbGFyeSBkYXRhIGNhbiBiZSBjYWxjdWxhdGVkIHVzaW5nIENNU0dfU1BBQ0UoKVxuXAorb3IgQ01TR19MRU4oKSwgYW5kIGl0ZW1zIHdoaWNoIGRvIG5vdCBmaXQgaW50byB0aGUgYnVmZmVyIG1pZ2h0IGJlXG5cCit0cnVuY2F0ZWQgb3IgZGlzY2FyZGVkLiAgVGhlIGZsYWdzIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDAgYW5kIGhhcyB0aGVcblwKK3NhbWUgbWVhbmluZyBhcyBmb3IgcmVjdigpLlxuXAorXG5cCitUaGUgcmV0dXJuIHZhbHVlIGlzIGEgNC10dXBsZTogKG5ieXRlcywgYW5jZGF0YSwgbXNnX2ZsYWdzLCBhZGRyZXNzKS5cblwKK1RoZSBuYnl0ZXMgaXRlbSBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIG9mIG5vbi1hbmNpbGxhcnkgZGF0YVxuXAord3JpdHRlbiBpbnRvIHRoZSBidWZmZXJzLiAgVGhlIGFuY2RhdGEgaXRlbSBpcyBhIGxpc3Qgb2YgemVybyBvciBtb3JlXG5cCit0dXBsZXMgKGNtc2dfbGV2ZWwsIGNtc2dfdHlwZSwgY21zZ19kYXRhKSByZXByZXNlbnRpbmcgdGhlIGFuY2lsbGFyeVxuXAorZGF0YSAoY29udHJvbCBtZXNzYWdlcykgcmVjZWl2ZWQ6IGNtc2dfbGV2ZWwgYW5kIGNtc2dfdHlwZSBhcmVcblwKK2ludGVnZXJzIHNwZWNpZnlpbmcgdGhlIHByb3RvY29sIGxldmVsIGFuZCBwcm90b2NvbC1zcGVjaWZpYyB0eXBlXG5cCityZXNwZWN0aXZlbHksIGFuZCBjbXNnX2RhdGEgaXMgYSBieXRlcyBvYmplY3QgaG9sZGluZyB0aGUgYXNzb2NpYXRlZFxuXAorZGF0YS4gIFRoZSBtc2dfZmxhZ3MgaXRlbSBpcyB0aGUgYml0d2lzZSBPUiBvZiB2YXJpb3VzIGZsYWdzXG5cCitpbmRpY2F0aW5nIGNvbmRpdGlvbnMgb24gdGhlIHJlY2VpdmVkIG1lc3NhZ2U7IHNlZSB5b3VyIHN5c3RlbVxuXAorZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gIElmIHRoZSByZWNlaXZpbmcgc29ja2V0IGlzIHVuY29ubmVjdGVkLFxuXAorYWRkcmVzcyBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgc2VuZGluZyBzb2NrZXQsIGlmIGF2YWlsYWJsZTsgb3RoZXJ3aXNlLFxuXAoraXRzIHZhbHVlIGlzIHVuc3BlY2lmaWVkLlxuXAorXG5cCitJZiByZWN2bXNnX2ludG8oKSByYWlzZXMgYW4gZXhjZXB0aW9uIGFmdGVyIHRoZSBzeXN0ZW0gY2FsbCByZXR1cm5zLFxuXAoraXQgd2lsbCBmaXJzdCBhdHRlbXB0IHRvIGNsb3NlIGFueSBmaWxlIGRlc2NyaXB0b3JzIHJlY2VpdmVkIHZpYSB0aGVcblwKK1NDTV9SSUdIVFMgbWVjaGFuaXNtLiIpOworI2VuZGlmICAgIC8qIENNU0dfTEVOICovCisKKwogLyogcy5zZW5kKGRhdGEgWyxmbGFnc10pIG1ldGhvZCAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjc3MSw2ICszNDMyLDcgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmR0bygpIHRha2VzIDIgb3IgMyBhcmd1bWVudHMgKCVkIGdpdmVuKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnbGVuKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yODE0LDYgKzM0NzYsMjM0IEBACiBGb3IgSVAgc29ja2V0cywgdGhlIGFkZHJlc3MgaXMgYSBwYWlyIChob3N0YWRkciwgcG9ydCkuIik7CiAKIAorLyogVGhlIHNlbmRtc2coKSBhbmQgcmVjdm1zZ1tfaW50b10oKSBtZXRob2RzIHJlcXVpcmUgYSB3b3JraW5nCisgICBDTVNHX0xFTigpLiAgU2VlIHRoZSBjb21tZW50IG5lYXIgZ2V0X0NNU0dfTEVOKCkuICovCisjaWZkZWYgQ01TR19MRU4KKy8qIHMuc2VuZG1zZyhidWZmZXJzWywgYW5jZGF0YVssIGZsYWdzWywgYWRkcmVzc11dXSkgbWV0aG9kICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrX3NlbmRtc2coUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGksIG5kYXRhcGFydHMsIG5kYXRhYnVmcyA9IDAsIG5jbXNncywgbmNtc2didWZzID0gMDsKKyAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOworICAgIHNvY2tfYWRkcl90IGFkZHJidWY7CisgICAgc3RydWN0IG1zZ2hkciBtc2cgPSB7MH07CisgICAgc3RydWN0IGNtc2dpbmZvIHsKKyAgICAgICAgaW50IGxldmVsOworICAgICAgICBpbnQgdHlwZTsKKyAgICAgICAgUHlfYnVmZmVyIGRhdGE7CisgICAgfSAqY21zZ3MgPSBOVUxMOworICAgIHZvaWQgKmNvbnRyb2xidWYgPSBOVUxMOworICAgIHNpemVfdCBjb250cm9sbGVuLCBjb250cm9sbGVuX2xhc3Q7CisgICAgc3NpemVfdCBieXRlc19zZW50ID0gLTE7CisgICAgaW50IGFkZHJsZW4sIHRpbWVvdXQsIGZsYWdzID0gMDsKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcsICpjbXNnX2FyZyA9IE5VTEwsICphZGRyX2FyZyA9IE5VTEwsICpkYXRhX2Zhc3QgPSBOVUxMLAorICAgICAgICAqY21zZ19mYXN0ID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T2lPOnNlbmRtc2ciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFBhcnNlIGRlc3RpbmF0aW9uIGFkZHJlc3MuICovCisgICAgaWYgKGFkZHJfYXJnICE9IE5VTEwgJiYgYWRkcl9hcmcgIT0gUHlfTm9uZSkgeworICAgICAgICBpZiAoIWdldHNvY2thZGRyYXJnKHMsIGFkZHJfYXJnLCBTQVMyU0EoJmFkZHJidWYpLCAmYWRkcmxlbikpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIG1zZy5tc2dfbmFtZSA9ICZhZGRyYnVmOworICAgICAgICBtc2cubXNnX25hbWVsZW4gPSBhZGRybGVuOworICAgIH0KKworICAgIC8qIEZpbGwgaW4gYW4gaW92ZWMgZm9yIGVhY2ggbWVzc2FnZSBwYXJ0LCBhbmQgc2F2ZSB0aGUgUHlfYnVmZmVyCisgICAgICAgc3RydWN0cyB0byByZWxlYXNlIGFmdGVyd2FyZHMuICovCisgICAgaWYgKChkYXRhX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYWJsZSIpKSA9PSBOVUxMKQorICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgbmRhdGFwYXJ0cyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShkYXRhX2Zhc3QpOworICAgIGlmIChuZGF0YXBhcnRzID4gSU5UX01BWCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlbmRtc2coKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgbXNnLm1zZ19pb3ZsZW4gPSBuZGF0YXBhcnRzOworICAgIGlmIChuZGF0YXBhcnRzID4gMCAmJgorICAgICAgICAoKG1zZy5tc2dfaW92ID0gaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpKSA9PSBOVUxMIHx8CisgICAgICAgICAoZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCkpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBmb3IgKDsgbmRhdGFidWZzIDwgbmRhdGFwYXJ0czsgbmRhdGFidWZzKyspIHsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZGF0YV9mYXN0LCBuZGF0YWJ1ZnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ5KjtzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGFidWZzW25kYXRhYnVmc10pKQorICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2Jhc2UgPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmJ1ZjsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9sZW4gPSBkYXRhYnVmc1tuZGF0YWJ1ZnNdLmxlbjsKKyAgICB9CisKKyAgICBpZiAoY21zZ19hcmcgPT0gTlVMTCkKKyAgICAgICAgbmNtc2dzID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKChjbXNnX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoY21zZ19hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMiBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIG5jbXNncyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShjbXNnX2Zhc3QpOworICAgIH0KKworI2lmbmRlZiBDTVNHX1NQQUNFCisgICAgaWYgKG5jbXNncyA+IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic2VuZGluZyBtdWx0aXBsZSBjb250cm9sIG1lc3NhZ2VzIGlzIG5vdCBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9uIHRoaXMgc3lzdGVtIik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisjZW5kaWYKKyAgICAvKiBTYXZlIGxldmVsLCB0eXBlIGFuZCBQeV9idWZmZXIgZm9yIGVhY2ggY29udHJvbCBtZXNzYWdlLAorICAgICAgIGFuZCBjYWxjdWxhdGUgdG90YWwgc2l6ZS4gKi8KKyAgICBpZiAobmNtc2dzID4gMCAmJiAoY21zZ3MgPSBQeU1lbV9OZXcoc3RydWN0IGNtc2dpbmZvLCBuY21zZ3MpKSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgY29udHJvbGxlbiA9IGNvbnRyb2xsZW5fbGFzdCA9IDA7CisgICAgd2hpbGUgKG5jbXNnYnVmcyA8IG5jbXNncykgeworICAgICAgICBzaXplX3QgYnVmc2l6ZSwgc3BhY2U7CisKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oY21zZ19mYXN0LCBuY21zZ2J1ZnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICIoaWl5Kik6W3NlbmRtc2coKSBhbmNpbGxhcnkgZGF0YSBpdGVtc10iLAorICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNnc1tuY21zZ2J1ZnNdLmxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNnc1tuY21zZ2J1ZnNdLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc2dzW25jbXNnYnVmc10uZGF0YSkpCisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIGJ1ZnNpemUgPSBjbXNnc1tuY21zZ2J1ZnMrK10uZGF0YS5sZW47CisKKyNpZmRlZiBDTVNHX1NQQUNFCisgICAgICAgIGlmICghZ2V0X0NNU0dfU1BBQ0UoYnVmc2l6ZSwgJnNwYWNlKSkgeworI2Vsc2UKKyAgICAgICAgaWYgKCFnZXRfQ01TR19MRU4oYnVmc2l6ZSwgJnNwYWNlKSkgeworI2VuZGlmCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImFuY2lsbGFyeSBkYXRhIGl0ZW0gdG9vIGxhcmdlIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICAgICAgY29udHJvbGxlbiArPSBzcGFjZTsKKyAgICAgICAgaWYgKGNvbnRyb2xsZW4gPiBTT0NLTEVOX1RfTElNSVQgfHwgY29udHJvbGxlbiA8IGNvbnRyb2xsZW5fbGFzdCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJ0b28gbXVjaCBhbmNpbGxhcnkgZGF0YSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGNvbnRyb2xsZW5fbGFzdCA9IGNvbnRyb2xsZW47CisgICAgfQorCisgICAgLyogQ29uc3RydWN0IGFuY2lsbGFyeSBkYXRhIGJsb2NrIGZyb20gY29udHJvbCBtZXNzYWdlIGluZm8uICovCisgICAgaWYgKG5jbXNnYnVmcyA+IDApIHsKKyAgICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2doID0gTlVMTDsKKworICAgICAgICBpZiAoKG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWYgPQorICAgICAgICAgICAgIFB5TWVtX01hbGxvYyhjb250cm9sbGVuKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOworCisgICAgICAgIC8qIE5lZWQgdG8gemVybyBvdXQgdGhlIGJ1ZmZlciBhcyBhIHdvcmthcm91bmQgZm9yIGdsaWJjJ3MKKyAgICAgICAgICAgQ01TR19OWFRIRFIoKSBpbXBsZW1lbnRhdGlvbi4gIEFmdGVyIGdldHRpbmcgdGhlIHBvaW50ZXIgdG8KKyAgICAgICAgICAgdGhlIG5leHQgaGVhZGVyLCBpdCBjaGVja3MgaXRzICh1bmluaXRpYWxpemVkKSBjbXNnX2xlbgorICAgICAgICAgICBtZW1iZXIgdG8gc2VlIGlmIHRoZSAibWVzc2FnZSIgZml0cyBpbiB0aGUgYnVmZmVyLCBhbmQKKyAgICAgICAgICAgcmV0dXJucyBOVUxMIGlmIGl0IGRvZXNuJ3QuICBaZXJvLWZpbGxpbmcgdGhlIGJ1ZmZlcgorICAgICAgICAgICBlbnN1cmVzIHRoYXQgdGhhdCBkb2Vzbid0IGhhcHBlbi4gKi8KKyAgICAgICAgbWVtc2V0KGNvbnRyb2xidWYsIDAsIGNvbnRyb2xsZW4pOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuY21zZ2J1ZnM7IGkrKykgeworICAgICAgICAgICAgc2l6ZV90IG1zZ19sZW4sIGRhdGFfbGVuID0gY21zZ3NbaV0uZGF0YS5sZW47CisgICAgICAgICAgICBpbnQgZW5vdWdoX3NwYWNlID0gMDsKKworICAgICAgICAgICAgY21zZ2ggPSAoaSA9PSAwKSA/IENNU0dfRklSU1RIRFIoJm1zZykgOiBDTVNHX05YVEhEUigmbXNnLCBjbXNnaCk7CisgICAgICAgICAgICBpZiAoY21zZ2ggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gJXMoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpID09IDApID8gIkNNU0dfRklSU1RIRFIiIDogIkNNU0dfTlhUSERSIik7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFnZXRfQ01TR19MRU4oZGF0YV9sZW4sICZtc2dfbGVuKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVtIHNpemUgb3V0IG9mIHJhbmdlIGZvciBDTVNHX0xFTigpIik7CisgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNtc2dfbWluX3NwYWNlKCZtc2csIGNtc2doLCBtc2dfbGVuKSkgeworICAgICAgICAgICAgICAgIHNpemVfdCBzcGFjZTsKKworICAgICAgICAgICAgICAgIGNtc2doLT5jbXNnX2xlbiA9IG1zZ19sZW47CisgICAgICAgICAgICAgICAgaWYgKGdldF9jbXNnX2RhdGFfc3BhY2UoJm1zZywgY21zZ2gsICZzcGFjZSkpCisgICAgICAgICAgICAgICAgICAgIGVub3VnaF9zcGFjZSA9IChzcGFjZSA+PSBkYXRhX2xlbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWVub3VnaF9zcGFjZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmNpbGxhcnkgZGF0YSBkb2VzIG5vdCBmaXQgaW4gY2FsY3VsYXRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFjZSIpOworICAgICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNtc2doLT5jbXNnX2xldmVsID0gY21zZ3NbaV0ubGV2ZWw7CisgICAgICAgICAgICBjbXNnaC0+Y21zZ190eXBlID0gY21zZ3NbaV0udHlwZTsKKyAgICAgICAgICAgIG1lbWNweShDTVNHX0RBVEEoY21zZ2gpLCBjbXNnc1tpXS5kYXRhLmJ1ZiwgZGF0YV9sZW4pOworICAgICAgICB9CisgICAgfQorCisgICAgLyogTWFrZSB0aGUgc3lzdGVtIGNhbGwuICovCisgICAgaWYgKCFJU19TRUxFQ1RBQkxFKHMpKSB7CisgICAgICAgIHNlbGVjdF9lcnJvcigpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgQkVHSU5fU0VMRUNUX0xPT1AocykKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTOworICAgIHRpbWVvdXQgPSBpbnRlcm5hbF9zZWxlY3RfZXgocywgMSwgaW50ZXJ2YWwpOworICAgIGlmICghdGltZW91dCkKKyAgICAgICAgYnl0ZXNfc2VudCA9IHNlbmRtc2cocy0+c29ja19mZCwgJm1zZywgZmxhZ3MpOworICAgIFB5X0VORF9BTExPV19USFJFQURTOworICAgIGlmICh0aW1lb3V0ID09IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF90aW1lb3V0LCAidGltZWQgb3V0Iik7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgRU5EX1NFTEVDVF9MT09QKHMpCisKKyAgICBpZiAoYnl0ZXNfc2VudCA8IDApIHsKKyAgICAgICAgcy0+ZXJyb3JoYW5kbGVyKCk7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGJ5dGVzX3NlbnQpOworCitmaW5hbGx5OgorICAgIFB5TWVtX0ZyZWUoY29udHJvbGJ1Zik7CisgICAgZm9yIChpID0gMDsgaSA8IG5jbXNnYnVmczsgaSsrKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZjbXNnc1tpXS5kYXRhKTsKKyAgICBQeU1lbV9GcmVlKGNtc2dzKTsKKyAgICBQeV9YREVDUkVGKGNtc2dfZmFzdCk7CisgICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgUHlNZW1fRnJlZShkYXRhYnVmcyk7CisgICAgUHlNZW1fRnJlZShpb3ZzKTsKKyAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CisgICAgcmV0dXJuIHJldHZhbDsKK30KKworUHlEb2NfU1RSVkFSKHNlbmRtc2dfZG9jLAorInNlbmRtc2coYnVmZmVyc1ssIGFuY2RhdGFbLCBmbGFnc1ssIGFkZHJlc3NdXV0pIC0+IGNvdW50XG5cCitcblwKK1NlbmQgbm9ybWFsIGFuZCBhbmNpbGxhcnkgZGF0YSB0byB0aGUgc29ja2V0LCBnYXRoZXJpbmcgdGhlXG5cCitub24tYW5jaWxsYXJ5IGRhdGEgZnJvbSBhIHNlcmllcyBvZiBidWZmZXJzIGFuZCBjb25jYXRlbmF0aW5nIGl0IGludG9cblwKK2Egc2luZ2xlIG1lc3NhZ2UuICBUaGUgYnVmZmVycyBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIG5vbi1hbmNpbGxhcnlcblwKK2RhdGEgYXMgYW4gaXRlcmFibGUgb2YgYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0cyAoZS5nLiBieXRlcyBvYmplY3RzKS5cblwKK1RoZSBhbmNkYXRhIGFyZ3VtZW50IHNwZWNpZmllcyB0aGUgYW5jaWxsYXJ5IGRhdGEgKGNvbnRyb2wgbWVzc2FnZXMpXG5cCithcyBhbiBpdGVyYWJsZSBvZiB6ZXJvIG9yIG1vcmUgdHVwbGVzIChjbXNnX2xldmVsLCBjbXNnX3R5cGUsXG5cCitjbXNnX2RhdGEpLCB3aGVyZSBjbXNnX2xldmVsIGFuZCBjbXNnX3R5cGUgYXJlIGludGVnZXJzIHNwZWNpZnlpbmcgdGhlXG5cCitwcm90b2NvbCBsZXZlbCBhbmQgcHJvdG9jb2wtc3BlY2lmaWMgdHlwZSByZXNwZWN0aXZlbHksIGFuZCBjbXNnX2RhdGFcblwKK2lzIGEgYnVmZmVyLWNvbXBhdGlibGUgb2JqZWN0IGhvbGRpbmcgdGhlIGFzc29jaWF0ZWQgZGF0YS4gIFRoZSBmbGFnc1xuXAorYXJndW1lbnQgZGVmYXVsdHMgdG8gMCBhbmQgaGFzIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yIHNlbmQoKS4gIElmXG5cCithZGRyZXNzIGlzIHN1cHBsaWVkIGFuZCBub3QgTm9uZSwgaXQgc2V0cyBhIGRlc3RpbmF0aW9uIGFkZHJlc3MgZm9yXG5cCit0aGUgbWVzc2FnZS4gIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBub24tYW5jaWxsYXJ5XG5cCitkYXRhIHNlbnQuIik7CisjZW5kaWYgICAgLyogQ01TR19MRU4gKi8KKworCiAvKiBzLnNodXRkb3duKGhvdykgbWV0aG9kICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yODgyLDYgKzM3NzIsMzQgQEAKIENvbnRyb2wgdGhlIHNvY2tldCB3aXRoIFdTQUlvY3RsIHN5c2NhbGwuIEN1cnJlbnRseSBzdXBwb3J0ZWQgJ2NtZCcgdmFsdWVzIGFyZVxuXAogU0lPX1JDVkFMTDogICdvcHRpb24nIG11c3QgYmUgb25lIG9mIHRoZSBzb2NrZXQuUkNWQUxMXyogY29uc3RhbnRzLlxuXAogU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS4iKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorc3RhdGljIFB5T2JqZWN0Kgorc29ja19zaGFyZShQeVNvY2tldFNvY2tPYmplY3QgKnMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgV1NBUFJPVE9DT0xfSU5GTyBpbmZvOworICAgIERXT1JEIHByb2Nlc3NJZDsKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZywgIkkiLCAmcHJvY2Vzc0lkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgcmVzdWx0ID0gV1NBRHVwbGljYXRlU29ja2V0KHMtPnNvY2tfZmQsIHByb2Nlc3NJZCwgJmluZm8pOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHJlc3VsdCA9PSBTT0NLRVRfRVJST1IpCisgICAgICAgIHJldHVybiBzZXRfZXJyb3IoKTsKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY29uc3QgY2hhciopJmluZm8sIHNpemVvZihpbmZvKSk7Cit9CitQeURvY19TVFJWQVIoc29ja19zaGFyZV9kb2MsCisic2hhcmUocHJvY2Vzc19pZCkgLT4gYnl0ZXNcblwKK1xuXAorU2hhcmUgdGhlIHNvY2tldCB3aXRoIGFub3RoZXIgcHJvY2Vzcy4gIFRoZSB0YXJnZXQgcHJvY2VzcyBpZFxuXAorbXVzdCBiZSBwcm92aWRlZCBhbmQgdGhlIHJlc3VsdGluZyBieXRlcyBvYmplY3QgcGFzc2VkIHRvIHRoZSB0YXJnZXRcblwKK3Byb2Nlc3MuICBUaGVyZSB0aGUgc2hhcmVkIHNvY2tldCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IGNhbGxpbmdcblwKK3NvY2tldC5mcm9tc2hhcmUoKS4iKTsKKwogCiAjZW5kaWYKIApAQCAtMjkxNCw2ICszODMyLDEwIEBACiAgICAgeyJpb2N0bCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX2lvY3RsLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgc29ja19pb2N0bF9kb2N9LAogI2VuZGlmCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKQorICAgIHsic2hhcmUiLCAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NoYXJlLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgc29ja19zaGFyZV9kb2N9LAorI2VuZGlmCiAgICAgeyJsaXN0ZW4iLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX2xpc3RlbiwgTUVUSF9PLAogICAgICAgICAgICAgICAgICAgICAgIGxpc3Rlbl9kb2N9LAogICAgIHsicmVjdiIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19yZWN2LCBNRVRIX1ZBUkFSR1MsCkBAIC0yOTQwLDYgKzM4NjIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICBzZXRzb2Nrb3B0X2RvY30sCiAgICAgeyJzaHV0ZG93biIsICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NodXRkb3duLCBNRVRIX08sCiAgICAgICAgICAgICAgICAgICAgICAgc2h1dGRvd25fZG9jfSwKKyNpZmRlZiBDTVNHX0xFTgorICAgIHsicmVjdm1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19yZWN2bXNnLCBNRVRIX1ZBUkFSR1MsCisgICAgICAgICAgICAgICAgICAgICAgcmVjdm1zZ19kb2N9LAorICAgIHsicmVjdm1zZ19pbnRvIiwgICAgICAoUHlDRnVuY3Rpb24pc29ja19yZWN2bXNnX2ludG8sIE1FVEhfVkFSQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICByZWN2bXNnX2ludG9fZG9jLH0sCisgICAgeyJzZW5kbXNnIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilzb2NrX3NlbmRtc2csIE1FVEhfVkFSQVJHUywKKyAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0zMDMzLDEzICszOTYzLDQwIEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChmZG9iaiAhPSBOVUxMICYmIGZkb2JqICE9IFB5X05vbmUpIHsKLSAgICAgICAgZmQgPSBQeUxvbmdfQXNTb2NrZXRfdChmZG9iaik7Ci0gICAgICAgIGlmIChmZCA9PSAoU09DS0VUX1QpKC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBpZiAoZmQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgaW52YWxpZCBzb2NrZXQgdmFsdWUiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIC8qIHJlY3JlYXRlIGEgc29ja2V0IHRoYXQgd2FzIGR1cGxpY2F0ZWQgKi8KKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2soZmRvYmopKSB7CisgICAgICAgICAgICBXU0FQUk9UT0NPTF9JTkZPIGluZm87CisgICAgICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShmZG9iaikgIT0gc2l6ZW9mKGluZm8pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJzb2NrZXQgZGVzY3JpcHRvciBzdHJpbmcgaGFzIHdyb25nIHNpemUsICIKKyAgICAgICAgICAgICAgICAgICAgInNob3VsZCBiZSAlenUgYnl0ZXMuIiwgc2l6ZW9mKGluZm8pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1jcHkoJmluZm8sIFB5Qnl0ZXNfQVNfU1RSSU5HKGZkb2JqKSwgc2l6ZW9mKGluZm8pKTsKKyAgICAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICAgICAgICAgIGZkID0gV1NBU29ja2V0KEZST01fUFJPVE9DT0xfSU5GTywgRlJPTV9QUk9UT0NPTF9JTkZPLAorICAgICAgICAgICAgICAgICAgICAgRlJPTV9QUk9UT0NPTF9JTkZPLCAmaW5mbywgMCwgV1NBX0ZMQUdfT1ZFUkxBUFBFRCk7CisgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICAgICAgaWYgKGZkID09IElOVkFMSURfU09DS0VUKSB7CisgICAgICAgICAgICAgICAgc2V0X2Vycm9yKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmFtaWx5ID0gaW5mby5pQWRkcmVzc0ZhbWlseTsKKyAgICAgICAgICAgIHR5cGUgPSBpbmZvLmlTb2NrZXRUeXBlOworICAgICAgICAgICAgcHJvdG8gPSBpbmZvLmlQcm90b2NvbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgZmQgPSBQeUxvbmdfQXNTb2NrZXRfdChmZG9iaik7CisgICAgICAgICAgICBpZiAoZmQgPT0gKFNPQ0tFVF9UKSgtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoZmQgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSBpbnZhbGlkIHNvY2tldCB2YWx1ZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKQEAgLTMxMTUsMjUgKzQwNzIsMzUgQEAKICAgICAgICB2ZXJzaW9uIG9mIHRoZSBob3N0bmFtZSwgd2hlcmVhcyB3ZSBuZWVkIGEgVW5pY29kZSBzdHJpbmcuCiAgICAgICAgT3RoZXJ3aXNlLCBnZXRob3N0bmFtZSBhcHBhcmVudGx5IGFsc28gcmV0dXJucyB0aGUgRE5TIG5hbWUuICovCiAgICAgd2NoYXJfdCBidWZbTUFYX0NPTVBVVEVSTkFNRV9MRU5HVEggKyAxXTsKLSAgICBEV09SRCBzaXplID0gc2l6ZW9mKGJ1ZikgLyBzaXplb2Yod2NoYXJfdCk7CisgICAgRFdPUkQgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChidWYpOworICAgIHdjaGFyX3QgKm5hbWU7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBpZiAoIUdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLCBidWYsICZzaXplKSkgewotICAgICAgICBpZiAoR2V0TGFzdEVycm9yKCkgPT0gRVJST1JfTU9SRV9EQVRBKSB7Ci0gICAgICAgICAgICAvKiBNU0ROIHNheXMgdGhpcyBtYXkgb2NjdXIgImJlY2F1c2UgRE5TIGFsbG93cyBsb25nZXIgbmFtZXMgKi8KLSAgICAgICAgICAgIGlmIChzaXplID09IDApIC8qIFhYWDogSSdtIG5vdCBzdXJlIGhvdyB0byBoYW5kbGUgdGhpcyAqLwotICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc2l6ZSAtIDEpOwotICAgICAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoR2V0Q29tcHV0ZXJOYW1lRXhXKENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaXplKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX1dpbmRvd3NFcnJvciwgR2V0TGFzdEVycm9yKCkpOworCisgICAgaWYgKEdldENvbXB1dGVyTmFtZUV4VyhDb21wdXRlck5hbWVQaHlzaWNhbERuc0hvc3RuYW1lLCBidWYsICZzaXplKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIoYnVmLCBzaXplKTsKKworICAgIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9NT1JFX0RBVEEpCisgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKworICAgIGlmIChzaXplID09IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTmV3KDAsIDApOworCisgICAgLyogTVNETiBzYXlzIEVSUk9SX01PUkVfREFUQSBtYXkgb2NjdXIgYmVjYXVzZSBETlMgYWxsb3dzIGxvbmdlcgorICAgICAgIG5hbWVzICovCisgICAgbmFtZSA9IFB5TWVtX01hbGxvYyhzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICBpZiAoIW5hbWUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghR2V0Q29tcHV0ZXJOYW1lRXhXKENvbXB1dGVyTmFtZVBoeXNpY2FsRG5zSG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpemUpKQorICAgIHsKKyAgICAgICAgUHlNZW1fRnJlZShuYW1lKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGJ1Ziwgc2l6ZSk7ICAgICAgICAgICAgCisKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKG5hbWUsIHNpemUpOworICAgIFB5TWVtX0ZyZWUobmFtZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlCiAgICAgY2hhciBidWZbMTAyNF07CiAgICAgaW50IHJlczsKQEAgLTMxNTIsNiArNDExOSwzNyBAQAogXG5cCiBSZXR1cm4gdGhlIGN1cnJlbnQgaG9zdCBuYW1lLiIpOwogCisjaWZkZWYgSEFWRV9TRVRIT1NUTkFNRQorUHlEb2NfU1RSVkFSKHNldGhvc3RuYW1lX2RvYywKKyJzZXRob3N0bmFtZShuYW1lKVxuXG5cCitTZXRzIHRoZSBob3N0bmFtZSB0byBuYW1lLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X3NldGhvc3RuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqaG5vYmo7CisgICAgUHlfYnVmZmVyIGJ1ZjsKKyAgICBpbnQgcmVzLCBmbGFnID0gMDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiUzpzZXRob3N0bmFtZSIsICZobm9iaikpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJjpzZXRob3N0bmFtZSIsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmaG5vYmopKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGZsYWcgPSAxOworICAgIH0KKyAgICByZXMgPSBQeU9iamVjdF9HZXRCdWZmZXIoaG5vYmosICZidWYsIFB5QlVGX1NJTVBMRSk7CisgICAgaWYgKCFyZXMpIHsKKyAgICAgICAgcmVzID0gc2V0aG9zdG5hbWUoYnVmLmJ1ZiwgYnVmLmxlbik7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmJ1Zik7CisgICAgfQorICAgIGlmIChmbGFnKQorICAgICAgICBQeV9ERUNSRUYoaG5vYmopOworICAgIGlmIChyZXMpCisgICAgICAgIHJldHVybiBzZXRfZXJyb3IoKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKyNlbmRpZgogCiAvKiBQeXRob24gaW50ZXJmYWNlIHRvIGdldGhvc3RieW5hbWUobmFtZSkuICovCiAKQEAgLTMxOTgsOSArNDE5Niw4IEBACiAKICAgICBpZiAoaC0+aF9hZGRydHlwZSAhPSBhZikgewogICAgICAgICAvKiBMZXQncyBnZXQgcmVhbCBlcnJvciBtZXNzYWdlIHRvIHJldHVybiAqLwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKilzdHJlcnJvcihFQUZOT1NVUFBPUlQpKTsKLQorICAgICAgICBlcnJubyA9IEVBRk5PU1VQUE9SVDsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTMyODMsNyArNDI4MCw3IEBACiAjZW5kaWYKIAogICAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAvKiBjYW4ndCBoYXBwZW4gKi8KLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0zMzE1LDExICs0MzEyLDcgQEAKIHsKICAgICBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBob3N0ZW50ICpoOwotI2lmZGVmIEVOQUJMRV9JUFY2Ci0gICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgYWRkcjsKLSNlbHNlCi0gICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7Ci0jZW5kaWYKKyAgICBzb2NrX2FkZHJfdCBhZGRyOwogICAgIHN0cnVjdCBzb2NrYWRkciAqc2E7CiAgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CiAjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1IKQEAgLTMzMzEsMTkgKzQzMjQsMTkgQEAKICAgICBpbnQgYnVmX2xlbiA9IChzaXplb2YgYnVmKSAtIDE7CiAgICAgaW50IGVycm5vcDsKICNlbmRpZgotI2lmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcpIHx8IGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNl9BUkcpCisjaWZkZWYgSEFWRV9HRVRIT1NUQllOQU1FX1JfM19BUkcKICAgICBpbnQgcmVzdWx0OwogI2VuZGlmCiAjZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZXQ6Z2V0aG9zdGJ5bmFtZV9leCIsICJpZG5hIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2V0aXBhZGRyKG5hbWUsIChzdHJ1Y3Qgc29ja2FkZHIgKikmYWRkciwgc2l6ZW9mKGFkZHIpLCBBRl9JTkVUKSA8IDApCisgICAgaWYgKHNldGlwYWRkcihuYW1lLCBTQVMyU0EoJmFkZHIpLCBzaXplb2YoYWRkciksIEFGX0lORVQpIDwgMCkKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2lmICAgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRykKLSAgICByZXN1bHQgPSBnZXRob3N0YnluYW1lX3IobmFtZSwgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLAorICAgIGdldGhvc3RieW5hbWVfcihuYW1lLCAmaHBfYWxsb2NhdGVkLCBidWYsIGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoLCAmZXJybm9wKTsKICNlbGlmIGRlZmluZWQoSEFWRV9HRVRIT1NUQllOQU1FX1JfNV9BUkcpCiAgICAgaCA9IGdldGhvc3RieW5hbWVfcihuYW1lLCAmaHBfYWxsb2NhdGVkLCBidWYsIGJ1Zl9sZW4sICZlcnJub3ApOwpAQCAtMzM2Myw4ICs0MzU2LDggQEAKICAgICAgICBhZGRyLnNzX2ZhbWlseS4KICAgICAgICBUaGVyZWZvcmUsIHdlIGNhc3QgdGhlIHNvY2thZGRyX3N0b3JhZ2UgaW50byBzb2NrYWRkciB0bwogICAgICAgIGFjY2VzcyBzYV9mYW1pbHkuICovCi0gICAgc2EgPSAoc3RydWN0IHNvY2thZGRyKikmYWRkcjsKLSAgICByZXQgPSBnZXRob3N0X2NvbW1vbihoLCAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSwKKyAgICBzYSA9IFNBUzJTQSgmYWRkcik7CisgICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgU0FTMlNBKCZhZGRyKSwgc2l6ZW9mKGFkZHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNhLT5zYV9mYW1pbHkpOwogI2lmZGVmIFVTRV9HRVRIT1NUQllOQU1FX0xPQ0sKICAgICBQeVRocmVhZF9yZWxlYXNlX2xvY2sobmV0ZGJfbG9jayk7CkBAIC0zMzg3LDEyICs0MzgwLDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrZXRfZ2V0aG9zdGJ5YWRkcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0jaWZkZWYgRU5BQkxFX0lQVjYKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBhZGRyOwotI2Vsc2UKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKLSNlbmRpZgotICAgIHN0cnVjdCBzb2NrYWRkciAqc2EgPSAoc3RydWN0IHNvY2thZGRyICopJmFkZHI7CisgICAgc29ja19hZGRyX3QgYWRkcjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gU0FTMlNBKCZhZGRyKTsKICAgICBjaGFyICppcF9udW07CiAgICAgc3RydWN0IGhvc3RlbnQgKmg7CiAgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CkBAIC0zNDA5LDcgKzQzOTgsNyBAQAogICAgIGludCBidWZfbGVuID0gKHNpemVvZiBidWYpIC0gMTsKICAgICBpbnQgZXJybm9wOwogI2VuZGlmCi0jaWYgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRykgfHwgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRykKKyNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLwpAQCAtMzQyNCw3ICs0NDEzLDcgQEAKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGFmID0gc2EtPnNhX2ZhbWlseTsKICAgICBhcCA9IE5VTEw7Ci0gICAgYWwgPSAwOworICAgIC8qIGFsID0gMDsgKi8KICAgICBzd2l0Y2ggKGFmKSB7CiAgICAgY2FzZSBBRl9JTkVUOgogICAgICAgICBhcCA9IChjaGFyICopJigoc3RydWN0IHNvY2thZGRyX2luICopc2EpLT5zaW5fYWRkcjsKQEAgLTM0MzcsMTMgKzQ0MjYsMTMgQEAKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAidW5zdXBwb3J0ZWQgYWRkcmVzcyBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJ1bnN1cHBvcnRlZCBhZGRyZXNzIGZhbWlseSIpOwogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKICNpZmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2lmICAgZGVmaW5lZChIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRykKLSAgICByZXN1bHQgPSBnZXRob3N0YnlhZGRyX3IoYXAsIGFsLCBhZiwKKyAgICBnZXRob3N0YnlhZGRyX3IoYXAsIGFsLCBhZiwKICAgICAgICAgJmhwX2FsbG9jYXRlZCwgYnVmLCBidWZfbGVuLAogICAgICAgICAmaCwgJmVycm5vcCk7CiAjZWxpZiBkZWZpbmVkKEhBVkVfR0VUSE9TVEJZTkFNRV9SXzVfQVJHKQpAQCAtMzQ2MSw3ICs0NDUwLDcgQEAKICAgICBoID0gZ2V0aG9zdGJ5YWRkcihhcCwgYWwsIGFmKTsKICNlbmRpZiAvKiBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgcmV0ID0gZ2V0aG9zdF9jb21tb24oaCwgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkciksIGFmKTsKKyAgICByZXQgPSBnZXRob3N0X2NvbW1vbihoLCBTQVMyU0EoJmFkZHIpLCBzaXplb2YoYWRkciksIGFmKTsKICNpZmRlZiBVU0VfR0VUSE9TVEJZTkFNRV9MT0NLCiAgICAgUHlUaHJlYWRfcmVsZWFzZV9sb2NrKG5ldGRiX2xvY2spOwogI2VuZGlmCkBAIC0zNDkzLDcgKzQ0ODIsNyBAQAogICAgIHNwID0gZ2V0c2VydmJ5bmFtZShuYW1lLCBwcm90byk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoc3AgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAic2VydmljZS9wcm90byBub3QgZm91bmQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJzZXJ2aWNlL3Byb3RvIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgbnRvaHMoc3AtPnNfcG9ydCkpOwpAQCAtMzUzMCw3ICs0NTE5LDcgQEAKICAgICBzcCA9IGdldHNlcnZieXBvcnQoaHRvbnMoKHNob3J0KXBvcnQpLCBwcm90byk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICBpZiAoc3AgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAicG9ydC9wcm90byBub3QgZm91bmQiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJwb3J0L3Byb3RvIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNwLT5zX25hbWUpOwpAQCAtMzU1OSw3ICs0NTQ4LDcgQEAKICAgICBzcCA9IGdldHByb3RvYnluYW1lKG5hbWUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKHNwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInByb3RvY29sIG5vdCBmb3VuZCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInByb3RvY29sIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZykgc3AtPnBfcHJvdG8pOwpAQCAtMzgxNCw3ICs0ODAzLDcgQEAKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKikoJmJ1ZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYnVmKSk7CiAKLSAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBJUCBhZGRyZXNzIHN0cmluZyBwYXNzZWQgdG8gaW5ldF9hdG9uIik7CiAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTM4MzUsNyArNDgyNCw3IEBACiAgICAgICAgIHBhY2tlZF9hZGRyID0gaW5ldF9hZGRyKGlwX2FkZHIpOwogCiAgICAgICAgIGlmIChwYWNrZWRfYWRkciA9PSBJTkFERFJfTk9ORSkgeyAgICAgICAgICAgICAgIC8qIGludmFsaWQgYWRkcmVzcyAqLwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgICAgICJpbGxlZ2FsIElQIGFkZHJlc3Mgc3RyaW5nIHBhc3NlZCB0byBpbmV0X2F0b24iKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0zODY3LDcgKzQ4NTYsNyBAQAogICAgIH0KIAogICAgIGlmIChhZGRyX2xlbiAhPSBzaXplb2YocGFja2VkX2FkZHIpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgInBhY2tlZCBJUCB3cm9uZyBsZW5ndGggZm9yIGluZXRfbnRvYSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zOTAyLDcgKzQ4OTEsNyBAQAogCiAjaWYgIWRlZmluZWQoRU5BQkxFX0lQVjYpICYmIGRlZmluZWQoQUZfSU5FVDYpCiAgICAgaWYoYWYgPT0gQUZfSU5FVDYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgdXNlIEFGX0lORVQ2LCBJUHY2IGlzIGRpc2FibGVkIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTM5MTAsMTAgKzQ4OTksMTAgQEAKIAogICAgIHJldHZhbCA9IGluZXRfcHRvbihhZiwgaXAsIHBhY2tlZCk7CiAgICAgaWYgKHJldHZhbCA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKHNvY2tldF9lcnJvcik7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIGlmIChyZXR2YWwgPT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICJpbGxlZ2FsIElQIGFkZHJlc3Mgc3RyaW5nIHBhc3NlZCB0byBpbmV0X3B0b24iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfSBlbHNlIGlmIChhZiA9PSBBRl9JTkVUKSB7CkBAIC0zOTI1LDcgKzQ5MTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpOwogI2VuZGlmCiAgICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX09TRXJyb3IsICJ1bmtub3duIGFkZHJlc3MgZmFtaWx5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIH0KQEAgLTM5NzcsNyArNDk2Niw3IEBACiAKICAgICByZXR2YWwgPSBpbmV0X250b3AoYWYsIHBhY2tlZCwgaXAsIHNpemVvZihpcCkpOwogICAgIGlmICghcmV0dmFsKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhzb2NrZXRfZXJyb3IpOworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhyZXR2YWwpOwpAQCAtMzk5Niw3ICs0OTg1LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb2NrZXRfZ2V0YWRkcmluZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCoga3dhcmdzKQogewotICAgIHN0YXRpYyBjaGFyKiBrd25hbWVzW10gPSB7Imhvc3QiLCAicG9ydCIsICJmYW1pbHkiLCAidHlwZSIsICJwcm90byIsIAorICAgIHN0YXRpYyBjaGFyKiBrd25hbWVzW10gPSB7Imhvc3QiLCAicG9ydCIsICJmYW1pbHkiLCAidHlwZSIsICJwcm90byIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxhZ3MiLCAwfTsKICAgICBzdHJ1Y3QgYWRkcmluZm8gaGludHMsICpyZXM7CiAgICAgc3RydWN0IGFkZHJpbmZvICpyZXMwID0gTlVMTDsKQEAgLTQwMTEsNyArNTAwMCw3IEBACiAKICAgICBmYW1pbHkgPSBzb2NrdHlwZSA9IHByb3RvY29sID0gZmxhZ3MgPSAwOwogICAgIGZhbWlseSA9IEFGX1VOU1BFQzsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPT3xpaWlpOmdldGFkZHJpbmZvIiwgCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAiT098aWlpaTpnZXRhZGRyaW5mbyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bmFtZXMsICZob2JqLCAmcG9iaiwgJmZhbWlseSwgJnNvY2t0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJvdG9jb2wsICZmbGFncykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00MDE5LDcgKzUwMDgsOSBAQAogICAgIGlmIChob2JqID09IFB5X05vbmUpIHsKICAgICAgICAgaHB0ciA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soaG9iaikpIHsKLSAgICAgICAgaWRuYSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaG9iaiwgImVuY29kZSIsICJzIiwgImlkbmEiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZW5jb2RlKTsKKworICAgICAgICBpZG5hID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChob2JqLCAmUHlJZF9lbmNvZGUsICJzIiwgImlkbmEiKTsKICAgICAgICAgaWYgKCFpZG5hKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGlkbmEpKTsKQEAgLTQwNDYsNyArNTAzNyw3IEBACiAgICAgfSBlbHNlIGlmIChwb2JqID09IFB5X05vbmUpIHsKICAgICAgICAgcHB0ciA9IChjaGFyICopTlVMTDsKICAgICB9IGVsc2UgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiSW50IG9yIFN0cmluZyBleHBlY3RlZCIpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgIkludCBvciBTdHJpbmcgZXhwZWN0ZWQiKTsKICAgICAgICAgZ290byBlcnI7CiAgICAgfQogICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOwpAQCAtNDE0OSw3ICs1MTQwLDcgQEAKICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBpZiAocmVzLT5haV9uZXh0KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAogICAgICAgICAgICAgInNvY2thZGRyIHJlc29sdmVkIHRvIG11bHRpcGxlIGFkZHJlc3NlcyIpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQpAQCAtNDE1Nyw3ICs1MTQ4LDcgQEAKICAgICBjYXNlIEFGX0lORVQ6CiAgICAgICAgIHsKICAgICAgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoc2EpICE9IDIpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhzb2NrZXRfZXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwKICAgICAgICAgICAgICAgICAiSVB2NCBzb2NrYWRkciBtdXN0IGJlIDIgdHVwbGUiKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQpAQCAtNDI0NCw2ICs1MjM1LDE2MyBAQAogQSB2YWx1ZSBvZiBOb25lIGluZGljYXRlcyB0aGF0IG5ldyBzb2NrZXQgb2JqZWN0cyBoYXZlIG5vIHRpbWVvdXQuXG5cCiBXaGVuIHRoZSBzb2NrZXQgbW9kdWxlIGlzIGZpcnN0IGltcG9ydGVkLCB0aGUgZGVmYXVsdCBpcyBOb25lLiIpOwogCisjaWZkZWYgSEFWRV9JRl9OQU1FSU5ERVgKKy8qIFB5dGhvbiBBUEkgZm9yIGdldHRpbmcgaW50ZXJmYWNlIGluZGljZXMgYW5kIG5hbWVzICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfaWZfbmFtZWluZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIGludCBpOworICAgIHN0cnVjdCBpZl9uYW1laW5kZXggKm5pOworCisgICAgbmkgPSBpZl9uYW1laW5kZXgoKTsKKyAgICBpZiAobmkgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGxpc3QgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChsaXN0ID09IE5VTEwpIHsKKyAgICAgICAgaWZfZnJlZW5hbWVpbmRleChuaSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IG5pW2ldLmlmX2luZGV4ICE9IDAgJiYgaSA8IElOVF9NQVg7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqbmlfdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCJJTyYiLAorICAgICAgICAgICAgICAgIG5pW2ldLmlmX2luZGV4LCBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0LCBuaVtpXS5pZl9uYW1lKTsKKworICAgICAgICBpZiAobmlfdHVwbGUgPT0gTlVMTCB8fCBQeUxpc3RfQXBwZW5kKGxpc3QsIG5pX3R1cGxlKSA9PSAtMSkgeworICAgICAgICAgICAgUHlfWERFQ1JFRihuaV90dXBsZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICBpZl9mcmVlbmFtZWluZGV4KG5pKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihuaV90dXBsZSk7CisgICAgfQorCisgICAgaWZfZnJlZW5hbWVpbmRleChuaSk7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKK1B5RG9jX1NUUlZBUihpZl9uYW1laW5kZXhfZG9jLAorImlmX25hbWVpbmRleCgpXG5cCitcblwKK1JldHVybnMgYSBsaXN0IG9mIG5ldHdvcmsgaW50ZXJmYWNlIGluZm9ybWF0aW9uIChpbmRleCwgbmFtZSkgdHVwbGVzLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X2lmX25hbWV0b2luZGV4KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqb25hbWU7CisgICAgdW5zaWduZWQgbG9uZyBpbmRleDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6aWZfbmFtZXRvaW5kZXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZvbmFtZSkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaW5kZXggPSBpZl9uYW1ldG9pbmRleChQeUJ5dGVzX0FTX1NUUklORyhvbmFtZSkpOworICAgIFB5X0RFQ1JFRihvbmFtZSk7CisgICAgaWYgKGluZGV4ID09IDApIHsKKyAgICAgICAgLyogaWZfbmFtZXRvaW5kZXgoKSBkb2Vzbid0IHNldCBlcnJubyAqLworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgIm5vIGludGVyZmFjZSB3aXRoIHRoaXMgbmFtZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoaW5kZXgpOworfQorCitQeURvY19TVFJWQVIoaWZfbmFtZXRvaW5kZXhfZG9jLAorImlmX25hbWV0b2luZGV4KGlmX25hbWUpXG5cCitcblwKK1JldHVybnMgdGhlIGludGVyZmFjZSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcmZhY2UgbmFtZSBpZl9uYW1lLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X2lmX2luZGV4dG9uYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnKQoreworICAgIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisgICAgY2hhciBuYW1lW0lGX05BTUVTSVpFICsgMV07CisKKyAgICBpbmRleCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZyhhcmcpOworICAgIGlmIChpbmRleCA9PSAodW5zaWduZWQgbG9uZykgLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGlmX2luZGV4dG9uYW1lKGluZGV4LCBuYW1lKSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQobmFtZSk7Cit9CisKK1B5RG9jX1NUUlZBUihpZl9pbmRleHRvbmFtZV9kb2MsCisiaWZfaW5kZXh0b25hbWUoaWZfaW5kZXgpXG5cCitcblwKK1JldHVybnMgdGhlIGludGVyZmFjZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVyZmFjZSBpbmRleCBpZl9pbmRleC4iKTsKKworI2VuZGlmICAvKiBIQVZFX0lGX05BTUVJTkRFWCAqLworCisKKyNpZmRlZiBDTVNHX0xFTgorLyogUHl0aG9uIGludGVyZmFjZSB0byBDTVNHX0xFTihsZW5ndGgpLiAqLworCitzdGF0aWMgUHlPYmplY3QgKgorc29ja2V0X0NNU0dfTEVOKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKyAgICBzaXplX3QgcmVzdWx0OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJuOkNNU0dfTEVOIiwgJmxlbmd0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChsZW5ndGggPCAwIHx8ICFnZXRfQ01TR19MRU4obGVuZ3RoLCAmcmVzdWx0KSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIkNNU0dfTEVOKCkgYXJndW1lbnQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21TaXplX3QocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSKENNU0dfTEVOX2RvYywKKyJDTVNHX0xFTihsZW5ndGgpIC0+IGNvbnRyb2wgbWVzc2FnZSBsZW5ndGhcblwKK1xuXAorUmV0dXJuIHRoZSB0b3RhbCBsZW5ndGgsIHdpdGhvdXQgdHJhaWxpbmcgcGFkZGluZywgb2YgYW4gYW5jaWxsYXJ5XG5cCitkYXRhIGl0ZW0gd2l0aCBhc3NvY2lhdGVkIGRhdGEgb2YgdGhlIGdpdmVuIGxlbmd0aC4gIFRoaXMgdmFsdWUgY2FuXG5cCitvZnRlbiBiZSB1c2VkIGFzIHRoZSBidWZmZXIgc2l6ZSBmb3IgcmVjdm1zZygpIHRvIHJlY2VpdmUgYSBzaW5nbGVcblwKK2l0ZW0gb2YgYW5jaWxsYXJ5IGRhdGEsIGJ1dCBSRkMgMzU0MiByZXF1aXJlcyBwb3J0YWJsZSBhcHBsaWNhdGlvbnMgdG9cblwKK3VzZSBDTVNHX1NQQUNFKCkgYW5kIHRodXMgaW5jbHVkZSBzcGFjZSBmb3IgcGFkZGluZywgZXZlbiB3aGVuIHRoZVxuXAoraXRlbSB3aWxsIGJlIHRoZSBsYXN0IGluIHRoZSBidWZmZXIuICBSYWlzZXMgT3ZlcmZsb3dFcnJvciBpZiBsZW5ndGhcblwKK2lzIG91dHNpZGUgdGhlIHBlcm1pc3NpYmxlIHJhbmdlIG9mIHZhbHVlcy4iKTsKKworCisjaWZkZWYgQ01TR19TUEFDRQorLyogUHl0aG9uIGludGVyZmFjZSB0byBDTVNHX1NQQUNFKGxlbmd0aCkuICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitzb2NrZXRfQ01TR19TUEFDRShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisgICAgc2l6ZV90IHJlc3VsdDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjpDTVNHX1NQQUNFIiwgJmxlbmd0aCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChsZW5ndGggPCAwIHx8ICFnZXRfQ01TR19TUEFDRShsZW5ndGgsICZyZXN1bHQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNNU0dfU1BBQ0UoKSBhcmd1bWVudCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVIoQ01TR19TUEFDRV9kb2MsCisiQ01TR19TUEFDRShsZW5ndGgpIC0+IGJ1ZmZlciBzaXplXG5cCitcblwKK1JldHVybiB0aGUgYnVmZmVyIHNpemUgbmVlZGVkIGZvciByZWN2bXNnKCkgdG8gcmVjZWl2ZSBhbiBhbmNpbGxhcnlcblwKK2RhdGEgaXRlbSB3aXRoIGFzc29jaWF0ZWQgZGF0YSBvZiB0aGUgZ2l2ZW4gbGVuZ3RoLCBhbG9uZyB3aXRoIGFueVxuXAordHJhaWxpbmcgcGFkZGluZy4gIFRoZSBidWZmZXIgc3BhY2UgbmVlZGVkIHRvIHJlY2VpdmUgbXVsdGlwbGUgaXRlbXNcblwKK2lzIHRoZSBzdW0gb2YgdGhlIENNU0dfU1BBQ0UoKSB2YWx1ZXMgZm9yIHRoZWlyIGFzc29jaWF0ZWQgZGF0YVxuXAorbGVuZ3Rocy4gIFJhaXNlcyBPdmVyZmxvd0Vycm9yIGlmIGxlbmd0aCBpcyBvdXRzaWRlIHRoZSBwZXJtaXNzaWJsZVxuXAorcmFuZ2Ugb2YgdmFsdWVzLiIpOworI2VuZGlmICAgIC8qIENNU0dfU1BBQ0UgKi8KKyNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLworCiAKIC8qIExpc3Qgb2YgZnVuY3Rpb25zIGV4cG9ydGVkIGJ5IHRoaXMgbW9kdWxlLiAqLwogCkBAIC00MjU2LDYgKzU0MDQsMTAgQEAKICAgICAgTUVUSF9WQVJBUkdTLCBnZXRob3N0YnlhZGRyX2RvY30sCiAgICAgeyJnZXRob3N0bmFtZSIsICAgICAgICAgICAgIHNvY2tldF9nZXRob3N0bmFtZSwKICAgICAgTUVUSF9OT0FSR1MsICBnZXRob3N0bmFtZV9kb2N9LAorI2lmZGVmIEhBVkVfU0VUSE9TVE5BTUUKKyAgICB7InNldGhvc3RuYW1lIiwgICAgICAgICAgICAgc29ja2V0X3NldGhvc3RuYW1lLAorICAgICBNRVRIX1ZBUkFSR1MsICBzZXRob3N0bmFtZV9kb2N9LAorI2VuZGlmCiAgICAgeyJnZXRzZXJ2YnluYW1lIiwgICAgICAgICAgIHNvY2tldF9nZXRzZXJ2YnluYW1lLAogICAgICBNRVRIX1ZBUkFSR1MsIGdldHNlcnZieW5hbWVfZG9jfSwKICAgICB7ImdldHNlcnZieXBvcnQiLCAgICAgICAgICAgc29ja2V0X2dldHNlcnZieXBvcnQsCkBAIC00Mjk2LDYgKzU0NDgsMjIgQEAKICAgICAgTUVUSF9OT0FSR1MsIGdldGRlZmF1bHR0aW1lb3V0X2RvY30sCiAgICAgeyJzZXRkZWZhdWx0dGltZW91dCIsICAgICAgIHNvY2tldF9zZXRkZWZhdWx0dGltZW91dCwKICAgICAgTUVUSF9PLCBzZXRkZWZhdWx0dGltZW91dF9kb2N9LAorI2lmZGVmIEhBVkVfSUZfTkFNRUlOREVYCisgICAgeyJpZl9uYW1laW5kZXgiLCBzb2NrZXRfaWZfbmFtZWluZGV4LAorICAgICBNRVRIX05PQVJHUywgaWZfbmFtZWluZGV4X2RvY30sCisgICAgeyJpZl9uYW1ldG9pbmRleCIsIHNvY2tldF9pZl9uYW1ldG9pbmRleCwKKyAgICAgTUVUSF9WQVJBUkdTLCBpZl9uYW1ldG9pbmRleF9kb2N9LAorICAgIHsiaWZfaW5kZXh0b25hbWUiLCBzb2NrZXRfaWZfaW5kZXh0b25hbWUsCisgICAgIE1FVEhfTywgaWZfaW5kZXh0b25hbWVfZG9jfSwKKyNlbmRpZgorI2lmZGVmIENNU0dfTEVOCisgICAgeyJDTVNHX0xFTiIsICAgICAgICAgICAgICAgIHNvY2tldF9DTVNHX0xFTiwKKyAgICAgTUVUSF9WQVJBUkdTLCBDTVNHX0xFTl9kb2N9LAorI2lmZGVmIENNU0dfU1BBQ0UKKyAgICB7IkNNU0dfU1BBQ0UiLCAgICAgICAgICAgICAgc29ja2V0X0NNU0dfU1BBQ0UsCisgICAgIE1FVEhfVkFSQVJHUywgQ01TR19TUEFDRV9kb2N9LAorI2VuZGlmCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNDQyOCwyNyArNTU5NiwyNCBAQAogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgc29ja2V0X2Vycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuZXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19JT0Vycm9yLCBOVUxMKTsKLSAgICBpZiAoc29ja2V0X2Vycm9yID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5U29ja2V0TW9kdWxlQVBJLmVycm9yID0gc29ja2V0X2Vycm9yOwotICAgIFB5X0lOQ1JFRihzb2NrZXRfZXJyb3IpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBzb2NrZXRfZXJyb3IpOworICAgIFB5X0lOQ1JFRihQeUV4Y19PU0Vycm9yKTsKKyAgICBQeVNvY2tldE1vZHVsZUFQSS5lcnJvciA9IFB5RXhjX09TRXJyb3I7CisgICAgUHlfSU5DUkVGKFB5RXhjX09TRXJyb3IpOworICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZXJyb3IiLCBQeUV4Y19PU0Vycm9yKTsKICAgICBzb2NrZXRfaGVycm9yID0gUHlFcnJfTmV3RXhjZXB0aW9uKCJzb2NrZXQuaGVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldF9lcnJvciwgTlVMTCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19PU0Vycm9yLCBOVUxMKTsKICAgICBpZiAoc29ja2V0X2hlcnJvciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc29ja2V0X2hlcnJvcik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJoZXJyb3IiLCBzb2NrZXRfaGVycm9yKTsKLSAgICBzb2NrZXRfZ2FpZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC5nYWllcnJvciIsIHNvY2tldF9lcnJvciwKKyAgICBzb2NrZXRfZ2FpZXJyb3IgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC5nYWllcnJvciIsIFB5RXhjX09TRXJyb3IsCiAgICAgICAgIE5VTEwpOwogICAgIGlmIChzb2NrZXRfZ2FpZXJyb3IgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKHNvY2tldF9nYWllcnJvcik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJnYWllcnJvciIsIHNvY2tldF9nYWllcnJvcik7CiAgICAgc29ja2V0X3RpbWVvdXQgPSBQeUVycl9OZXdFeGNlcHRpb24oInNvY2tldC50aW1lb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRfZXJyb3IsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX09TRXJyb3IsIE5VTEwpOwogICAgIGlmIChzb2NrZXRfdGltZW91dCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeVNvY2tldE1vZHVsZUFQSS50aW1lb3V0X2Vycm9yID0gc29ja2V0X3RpbWVvdXQ7CkBAIC00NjM0LDYgKzU3OTksMzEgQEAKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiQkRBRERSX0xPQ0FMIiwgIjAwOjAwOjAwOkZGOkZGOkZGIik7CiAjZW5kaWYKIAorI2lmZGVmIEFGX0NBTgorICAgIC8qIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrICovCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX0NBTiIsIEFGX0NBTik7CisjZW5kaWYKKyNpZmRlZiBQRl9DQU4KKyAgICAvKiBDb250cm9sbGVyIEFyZWEgTmV0d29yayAqLworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQRl9DQU4iLCBQRl9DQU4pOworI2VuZGlmCisKKy8qIFJlbGlhYmxlIERhdGFncmFtIFNvY2tldHMgKi8KKyNpZmRlZiBBRl9SRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQUZfUkRTIiwgQUZfUkRTKTsKKyNlbmRpZgorI2lmZGVmIFBGX1JEUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQRl9SRFMiLCBQRl9SRFMpOworI2VuZGlmCisKKy8qIEtlcm5lbCBldmVudCBtZXNzYWdlcyAqLworI2lmZGVmIFBGX1NZU1RFTQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQRl9TWVNURU0iLCBQRl9TWVNURU0pOworI2VuZGlmCisjaWZkZWYgQUZfU1lTVEVNCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkFGX1NZU1RFTSIsIEFGX1NZU1RFTSk7CisjZW5kaWYKKwogI2lmZGVmIEFGX1BBQ0tFVAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1BBQ0tFVCk7CiAjZW5kaWYKQEAgLTQ3ODMsNiArNTk3MywxOCBAQAogI2lmZGVmICBTT19TRVRGSUIKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09fU0VURklCIiwgU09fU0VURklCKTsKICNlbmRpZgorI2lmZGVmICBTT19QQVNTQ1JFRAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19QQVNTQ1JFRCIsIFNPX1BBU1NDUkVEKTsKKyNlbmRpZgorI2lmZGVmICBTT19QRUVSQ1JFRAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT19QRUVSQ1JFRCIsIFNPX1BFRVJDUkVEKTsKKyNlbmRpZgorI2lmZGVmICBMT0NBTF9QRUVSQ1JFRAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0NBTF9QRUVSQ1JFRCIsIExPQ0FMX1BFRVJDUkVEKTsKKyNlbmRpZgorI2lmZGVmICBTT19CSU5EVE9ERVZJQ0UKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19CSU5EVE9ERVZJQ0UpOworI2VuZGlmCiAKICAgICAvKiBNYXhpbXVtIG51bWJlciBvZiBjb25uZWN0aW9ucyBmb3IgImxpc3RlbiIgKi8KICNpZmRlZiAgU09NQVhDT05OCkBAIC00NzkxLDYgKzU5OTMsMTcgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09NQVhDT05OIiwgNSk7IC8qIENvbW1vbiB2YWx1ZSAqLwogI2VuZGlmCiAKKyAgICAvKiBBbmNpbGxpYXJ5IG1lc3NhZ2UgdHlwZXMgKi8KKyNpZmRlZiAgU0NNX1JJR0hUUworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTQ01fUklHSFRTIiwgU0NNX1JJR0hUUyk7CisjZW5kaWYKKyNpZmRlZiAgU0NNX0NSRURFTlRJQUxTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNDTV9DUkVERU5USUFMUyIsIFNDTV9DUkVERU5USUFMUyk7CisjZW5kaWYKKyNpZmRlZiAgU0NNX0NSRURTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNDTV9DUkVEUyIsIFNDTV9DUkVEUyk7CisjZW5kaWYKKwogICAgIC8qIEZsYWdzIGZvciBzZW5kLCByZWN2ICovCiAjaWZkZWYgIE1TR19PT0IKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX09PQiIsIE1TR19PT0IpOwpAQCAtNDgyMiw2ICs2MDM1LDMzIEBACiAjaWZkZWYgIE1TR19FVEFHCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19FVEFHIiwgTVNHX0VUQUcpOwogI2VuZGlmCisjaWZkZWYgIE1TR19OT1NJR05BTAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTk9TSUdOQUwiLCBNU0dfTk9TSUdOQUwpOworI2VuZGlmCisjaWZkZWYgIE1TR19OT1RJRklDQVRJT04KKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX05PVElGSUNBVElPTiIsIE1TR19OT1RJRklDQVRJT04pOworI2VuZGlmCisjaWZkZWYgIE1TR19DTVNHX0NMT0VYRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0NNU0dfQ0xPRVhFQyIsIE1TR19DTVNHX0NMT0VYRUMpOworI2VuZGlmCisjaWZkZWYgIE1TR19FUlJRVUVVRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfRVJSUVVFVUUiLCBNU0dfRVJSUVVFVUUpOworI2VuZGlmCisjaWZkZWYgIE1TR19DT05GSVJNCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19DT05GSVJNIiwgTVNHX0NPTkZJUk0pOworI2VuZGlmCisjaWZkZWYgIE1TR19NT1JFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TR19NT1JFIiwgTVNHX01PUkUpOworI2VuZGlmCisjaWZkZWYgIE1TR19FT0YKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNHX0VPRiIsIE1TR19FT0YpOworI2VuZGlmCisjaWZkZWYgIE1TR19CQ0FTVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfQkNBU1QiLCBNU0dfQkNBU1QpOworI2VuZGlmCisjaWZkZWYgIE1TR19NQ0FTVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0dfTUNBU1QiLCBNU0dfTUNBU1QpOworI2VuZGlmCiAKICAgICAvKiBQcm90b2NvbCBsZXZlbCBhbmQgbnVtYmVycywgdXNhYmxlIGZvciBbZ3NdZXRzb2Nrb3B0ICovCiAjaWZkZWYgIFNPTF9TT0NLRVQKQEAgLTQ4NTcsNiArNjA5Nyw0OSBAQAogI2Vsc2UKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1VEUCIsIDE3KTsKICNlbmRpZgorI2lmZGVmIFNPTF9DQU5fQkFTRQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJTT0xfQ0FOX0JBU0UiLCBTT0xfQ0FOX0JBU0UpOworI2VuZGlmCisjaWZkZWYgU09MX0NBTl9SQVcKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX0NBTl9SQVciLCBTT0xfQ0FOX1JBVyk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVciLCBDQU5fUkFXKTsKKyNlbmRpZgorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0gKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VGRl9GTEFHIiwgQ0FOX0VGRl9GTEFHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JUUl9GTEFHIiwgQ0FOX1JUUl9GTEFHKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX0VSUl9GTEFHIiwgQ0FOX0VSUl9GTEFHKTsKKworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fU0ZGX01BU0siLCBDQU5fU0ZGX01BU0spOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRUZGX01BU0siLCBDQU5fRUZGX01BU0spOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJDQU5fRVJSX01BU0siLCBDQU5fRVJSX01BU0spOworI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19GSUxURVIiLCBDQU5fUkFXX0ZJTFRFUik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfRVJSX0ZJTFRFUiIsIENBTl9SQVdfRVJSX0ZJTFRFUik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNBTl9SQVdfTE9PUEJBQ0siLCBDQU5fUkFXX0xPT1BCQUNLKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ0FOX1JBV19SRUNWX09XTl9NU0dTIiwgQ0FOX1JBV19SRUNWX09XTl9NU0dTKTsKKyNlbmRpZgorI2lmZGVmIFNPTF9SRFMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiU09MX1JEUyIsIFNPTF9SRFMpOworI2VuZGlmCisjaWZkZWYgUkRTX0NBTkNFTF9TRU5UX1RPCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DQU5DRUxfU0VOVF9UTyIsIFJEU19DQU5DRUxfU0VOVF9UTyk7CisjZW5kaWYKKyNpZmRlZiBSRFNfR0VUX01SCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19HRVRfTVIiLCBSRFNfR0VUX01SKTsKKyNlbmRpZgorI2lmZGVmIFJEU19GUkVFX01SCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19GUkVFX01SIiwgUkRTX0ZSRUVfTVIpOworI2VuZGlmCisjaWZkZWYgUkRTX1JFQ1ZFUlIKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JFQ1ZFUlIiLCBSRFNfUkVDVkVSUik7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ09OR19NT05JVE9SCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DT05HX01PTklUT1IiLCBSRFNfQ09OR19NT05JVE9SKTsKKyNlbmRpZgorI2lmZGVmIFJEU19HRVRfTVJfRk9SX0RFU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0dFVF9NUl9GT1JfREVTVCIsIFJEU19HRVRfTVJfRk9SX0RFU1QpOworI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fSVAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19JUCIsIElQUFJPVE9fSVApOwogI2Vsc2UKQEAgLTQ5NjEsNiArNjI0NCw5IEBACiAjaWZkZWYgIElQUFJPVE9fVlJSUAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1ZSUlAiLCBJUFBST1RPX1ZSUlApOwogI2VuZGlmCisjaWZkZWYgIElQUFJPVE9fU0NUUAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFBST1RPX1NDVFAiLCBJUFBST1RPX1NDVFApOworI2VuZGlmCiAjaWZkZWYgIElQUFJPVE9fQklQCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUFJPVE9fQklQIiwgSVBQUk9UT19CSVApOwogI2VuZGlmCkBAIC00OTc0LDYgKzYyNjAsMTAgQEAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBQUk9UT19NQVgiLCBJUFBST1RPX01BWCk7CiAjZW5kaWYKIAorI2lmZGVmICBTWVNQUk9UT19DT05UUk9MCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlNZU1BST1RPX0NPTlRST0wiLCBTWVNQUk9UT19DT05UUk9MKTsKKyNlbmRpZgorCiAgICAgLyogU29tZSBwb3J0IGNvbmZpZ3VyYXRpb24gKi8KICNpZmRlZiAgSVBQT1JUX1JFU0VSVkVECiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIklQUE9SVF9SRVNFUlZFRCIsIElQUE9SVF9SRVNFUlZFRCk7CkBAIC01MDc2LDYgKzYzNjYsOSBAQAogI2lmZGVmICBJUF9NQVhfTUVNQkVSU0hJUFMKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiSVBfTUFYX01FTUJFUlNISVBTIiwgSVBfTUFYX01FTUJFUlNISVBTKTsKICNlbmRpZgorI2lmZGVmICBJUF9UUkFOU1BBUkVOVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUF9UUkFOU1BBUkVOVCIsIElQX1RSQU5TUEFSRU5UKTsKKyNlbmRpZgogCiAgICAgLyogSVB2NiBbZ3NdZXRzb2Nrb3B0IG9wdGlvbnMsIGRlZmluZWQgaW4gUkZDMjU1MyAqLwogI2lmZGVmICBJUFY2X0pPSU5fR1JPVVAKQEAgLTUyMDYsNiArNjQ5OSw0NCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJJUFhfVFlQRSIsIElQWF9UWVBFKTsKICNlbmRpZgogCisvKiBSZWxpYWJsZSBEYXRhZ3JhbSBTb2NrZXRzICovCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9BUkdTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfQVJHUyIsIFJEU19DTVNHX1JETUFfQVJHUyk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX0RFU1QKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9ERVNUIiwgUkRTX0NNU0dfUkRNQV9ERVNUKTsKKyNlbmRpZgorI2lmZGVmIFJEU19DTVNHX1JETUFfTUFQCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19DTVNHX1JETUFfTUFQIiwgUkRTX0NNU0dfUkRNQV9NQVApOworI2VuZGlmCisjaWZkZWYgUkRTX0NNU0dfUkRNQV9TVEFUVVMKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX0NNU0dfUkRNQV9TVEFUVVMiLCBSRFNfQ01TR19SRE1BX1NUQVRVUyk7CisjZW5kaWYKKyNpZmRlZiBSRFNfQ01TR19SRE1BX1VQREFURQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfQ01TR19SRE1BX1VQREFURSIsIFJEU19DTVNHX1JETUFfVVBEQVRFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX1JFQURXUklURQorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9SRUFEV1JJVEUiLCBSRFNfUkRNQV9SRUFEV1JJVEUpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfRkVOQ0UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfRkVOQ0UiLCBSRFNfUkRNQV9GRU5DRSk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9JTlZBTElEQVRFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX0lOVkFMSURBVEUiLCBSRFNfUkRNQV9JTlZBTElEQVRFKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX1VTRV9PTkNFCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlJEU19SRE1BX1VTRV9PTkNFIiwgUkRTX1JETUFfVVNFX09OQ0UpOworI2VuZGlmCisjaWZkZWYgUkRTX1JETUFfRE9OVFdBSVQKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfRE9OVFdBSVQiLCBSRFNfUkRNQV9ET05UV0FJVCk7CisjZW5kaWYKKyNpZmRlZiBSRFNfUkRNQV9OT1RJRllfTUUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiUkRTX1JETUFfTk9USUZZX01FIiwgUkRTX1JETUFfTk9USUZZX01FKTsKKyNlbmRpZgorI2lmZGVmIFJEU19SRE1BX1NJTEVOVAorICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJSRFNfUkRNQV9TSUxFTlQiLCBSRFNfUkRNQV9TSUxFTlQpOworI2VuZGlmCisKICAgICAvKiBnZXR7YWRkcixuYW1lfWluZm8gcGFyYW1ldGVycyAqLwogI2lmZGVmIEVBSV9BRERSRkFNSUxZCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkVBSV9BRERSRkFNSUxZIiwgRUFJX0FERFJGQU1JTFkpOwpAQCAtNTMzMiw3ICs2NjYzLDcgQEAKICAgICAgICAgRFdPUkQgY29kZXNbXSA9IHtTSU9fUkNWQUxMLCBTSU9fS0VFUEFMSVZFX1ZBTFN9OwogICAgICAgICBjb25zdCBjaGFyICpuYW1lc1tdID0geyJTSU9fUkNWQUxMIiwgIlNJT19LRUVQQUxJVkVfVkFMUyJ9OwogICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yKGkgPSAwOyBpPHNpemVvZihjb2Rlcykvc2l6ZW9mKCpjb2Rlcyk7ICsraSkgeworICAgICAgICBmb3IoaSA9IDA7IGk8UHlfQVJSQVlfTEVOR1RIKGNvZGVzKTsgKytpKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdG1wOwogICAgICAgICAgICAgdG1wID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoY29kZXNbaV0pOwogICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaCBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmgKaW5kZXggZjA2NDc5NS4uMDQzNTg3OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zb2NrZXRtb2R1bGUuaAorKysgYi9Nb2R1bGVzL3NvY2tldG1vZHVsZS5oCkBAIC01OSw5ICs1OSwxMiBAQAogI2luY2x1ZGUgPGJsdWV0b290aC5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX05FVF9JRl9ICisjIGluY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX05FVFBBQ0tFVF9QQUNLRVRfSAogIyBpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSMgaW5jbHVkZSA8bmV0L2lmLmg+CiAjIGluY2x1ZGUgPG5ldHBhY2tldC9wYWNrZXQuaD4KICNlbmRpZgogCkBAIC02OSw2ICs3MiwyMSBAQAogIyBpbmNsdWRlIDxsaW51eC90aXBjLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfTElOVVhfQ0FOX0gKKyNpbmNsdWRlIDxsaW51eC9jYW4uaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fUkFXX0gKKyNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfU1lTX1NZU19ET01BSU5fSAorI2luY2x1ZGUgPHN5cy9zeXNfZG9tYWluLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19LRVJOX0NPTlRST0xfSAorI2luY2x1ZGUgPHN5cy9rZXJuX2NvbnRyb2wuaD4KKyNlbmRpZgorCiAjaWZuZGVmIFB5X19TT0NLRVRfSAogI2RlZmluZSBQeV9fU09DS0VUX0gKICNpZmRlZiBfX2NwbHVzcGx1cwpAQCAtMTA0LDYgKzEyMiw3IEBACiAvKiBTb2NrZXQgYWRkcmVzcyAqLwogdHlwZWRlZiB1bmlvbiBzb2NrX2FkZHIgewogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBpbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgc2E7CiAjaWZkZWYgQUZfVU5JWAogICAgIHN0cnVjdCBzb2NrYWRkcl91biB1bjsKICNlbmRpZgpAQCAtMTIzLDYgKzE0MiwxMiBAQAogI2lmZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAgICAgc3RydWN0IHNvY2thZGRyX2xsIGxsOwogI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9DQU5fSAorICAgIHN0cnVjdCBzb2NrYWRkcl9jYW4gY2FuOworI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfY3RsIGN0bDsKKyNlbmRpZgogfSBzb2NrX2FkZHJfdDsKIAogLyogVGhlIG9iamVjdCBob2xkaW5nIGEgc29ja2V0LiAgSXQgaG9sZHMgc29tZSBleHRyYSBpbmZvcm1hdGlvbiwKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlLmggYi9Nb2R1bGVzL3NyZS5oCmluZGV4IGFlYzliNTQuLjAwYjUyYWEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3JlLmgKKysrIGIvTW9kdWxlcy9zcmUuaApAQCAtMTQsMTIgKzE0LDggQEAKICNpbmNsdWRlICJzcmVfY29uc3RhbnRzLmgiCiAKIC8qIHNpemUgb2YgYSBjb2RlIHdvcmQgKG11c3QgYmUgdW5zaWduZWQgc2hvcnQgb3IgbGFyZ2VyLCBhbmQKLSAgIGxhcmdlIGVub3VnaCB0byBob2xkIGEgUHlfVU5JQ09ERSBjaGFyYWN0ZXIpICovCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCisgICBsYXJnZSBlbm91Z2ggdG8gaG9sZCBhIFVDUzQgY2hhcmFjdGVyKSAqLwogI2RlZmluZSBTUkVfQ09ERSBQeV9VQ1M0Ci0jZWxzZQotI2RlZmluZSBTUkVfQ09ERSB1bnNpZ25lZCBzaG9ydAotI2VuZGlmCiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9WQVJfSEVBRApAQCAtMzAsNyArMjYsOCBAQAogICAgIFB5T2JqZWN0KiBwYXR0ZXJuOyAvKiBwYXR0ZXJuIHNvdXJjZSAob3IgTm9uZSkgKi8KICAgICBpbnQgZmxhZ3M7IC8qIGZsYWdzIHVzZWQgd2hlbiBjb21waWxpbmcgcGF0dGVybiBzb3VyY2UgKi8KICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7IC8qIExpc3Qgb2Ygd2VhayByZWZlcmVuY2VzICovCi0JaW50IGNoYXJzaXplOyAvKiBwYXR0ZXJuIGNoYXJzaXplIChvciAtMSkgKi8KKyAgICBpbnQgbG9naWNhbF9jaGFyc2l6ZTsgLyogcGF0dGVybiBjaGFyc2l6ZSAob3IgLTEpICovCisgICAgaW50IGNoYXJzaXplOwogICAgIFB5X2J1ZmZlciB2aWV3OwogICAgIC8qIHBhdHRlcm4gY29kZSAqLwogICAgIFB5X3NzaXplX3QgY29kZXNpemU7CkBAIC03Miw2ICs2OSw3IEBACiAgICAgUHlPYmplY3QqIHN0cmluZzsKICAgICBQeV9zc2l6ZV90IHBvcywgZW5kcG9zOwogICAgIC8qIGNoYXJhY3RlciBzaXplICovCisgICAgaW50IGxvZ2ljYWxfY2hhcnNpemU7IC8qIGtpbmQgb2YgdGhpbmc6IDEgLSBieXRlcywgMi80IC0gdW5pY29kZSAqLwogICAgIGludCBjaGFyc2l6ZTsKICAgICAvKiByZWdpc3RlcnMgKi8KICAgICBQeV9zc2l6ZV90IGxhc3RpbmRleDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMgYi9Nb2R1bGVzL3N5c2xvZ21vZHVsZS5jCmluZGV4IDViODY5NjMuLjhiODc3Y2YgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3lzbG9nbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zeXNsb2dtb2R1bGUuYwpAQCAtNzAsNyArNzAsNyBAQAogCiAgICAgUHlfc3NpemVfdCBhcmd2X2xlbiwgc2NyaXB0bGVuOwogICAgIFB5T2JqZWN0ICpzY3JpcHRvYmo7Ci0gICAgUHlfVU5JQ09ERSAqYXRzbGFzaCwgKmF0c3RhcnQ7CisgICAgUHlfc3NpemVfdCBzbGFzaDsKICAgICBQeU9iamVjdCAqYXJndiA9IFB5U3lzX0dldE9iamVjdCgiYXJndiIpOwogCiAgICAgaWYgKGFyZ3YgPT0gTlVMTCkgewpAQCAtOTAsMTYgKzkwLDE2IEBACiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc2NyaXB0b2JqKSkgewogICAgICAgICByZXR1cm4oTlVMTCk7CiAgICAgfQotICAgIHNjcmlwdGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzY3JpcHRvYmopOworICAgIHNjcmlwdGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNjcmlwdG9iaik7CiAgICAgaWYgKHNjcmlwdGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybihOVUxMKTsKICAgICB9CiAKLSAgICBhdHN0YXJ0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2NyaXB0b2JqKTsKLSAgICBhdHNsYXNoID0gUHlfVU5JQ09ERV9zdHJyY2hyKGF0c3RhcnQsIFNFUCk7Ci0gICAgaWYgKGF0c2xhc2gpIHsKLSAgICAgICAgcmV0dXJuKFB5VW5pY29kZV9Gcm9tVW5pY29kZShhdHNsYXNoICsgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JpcHRsZW4gLSAoYXRzbGFzaCAtIGF0c3RhcnQpIC0gMSkpOworICAgIHNsYXNoID0gUHlVbmljb2RlX0ZpbmRDaGFyKHNjcmlwdG9iaiwgU0VQLCAwLCBzY3JpcHRsZW4sIC0xKTsKKyAgICBpZiAoc2xhc2ggPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzbGFzaCAhPSAtMSkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzY3JpcHRvYmosIHNsYXNoLCBzY3JpcHRsZW4pOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihzY3JpcHRvYmopOwogICAgICAgICByZXR1cm4oc2NyaXB0b2JqKTsKQEAgLTI5MSw2ICsyOTEsOSBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfUElEIiwgICAgICAgICBMT0dfUElEKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX0NPTlMiLCAgICAgICAgTE9HX0NPTlMpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfTkRFTEFZIiwgIExPR19OREVMQVkpOworI2lmZGVmIExPR19PREVMQVkKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX09ERUxBWSIsICBMT0dfT0RFTEFZKTsKKyNlbmRpZgogI2lmZGVmIExPR19OT1dBSVQKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX05PV0FJVCIsICBMT0dfTk9XQUlUKTsKICNlbmRpZgpAQCAtMzMxLDUgKzMzNCwxMCBAQAogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJMT0dfQ1JPTiIsICAgICAgICBMT0dfQ1JPTik7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19VVUNQIiwgICAgICAgIExPR19VVUNQKTsKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTE9HX05FV1MiLCAgICAgICAgTE9HX05FV1MpOworCisjaWZkZWYgTE9HX0FVVEhQUklWCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkxPR19BVVRIUFJJViIsICAgIExPR19BVVRIUFJJVik7CisjZW5kaWYKKwogICAgIHJldHVybiBtOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90ZXJtaW9zLmMgYi9Nb2R1bGVzL3Rlcm1pb3MuYwppbmRleCBlZGViNmY1Li5iNzhkMzNlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3Rlcm1pb3MuYworKysgYi9Nb2R1bGVzL3Rlcm1pb3MuYwpAQCAtOSwxMSArOSw2IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSNpZmRlZiBfX29zZl9fCi0vKiBPbiBPU0YsIHN5cy9pb2N0bC5oIHJlcXVpcmVzIHRoYXQgc3RydWN0IHRlcm1pbyBhbHJlYWR5IGJlIGRlZmluZWQsCi0gKiBzbyB0aGlzIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGZpcnN0IG9uIHRoYXQgcGxhdGZvcm0uICovCi0jaW5jbHVkZSA8dGVybWlvLmg+Ci0jZW5kaWYKICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KIAogLyogSFAtVVggcmVxdWlyZXMgdGhhdCB0aGlzIGJlIGluY2x1ZGVkIHRvIHBpY2sgdXAgTURDRCwgTUNUUywgTURTUiwKZGlmZiAtLWdpdCBhL01vZHVsZXMvdGVzdGNhcGlfbG9uZy5oIGIvTW9kdWxlcy90ZXN0Y2FwaV9sb25nLmgKaW5kZXggZmE5NGZkNi4uNmJkZGFkNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy90ZXN0Y2FwaV9sb25nLmgKKysrIGIvTW9kdWxlcy90ZXN0Y2FwaV9sb25nLmgKQEAgLTMzLDggKzMzLDcgQEAKICAgICAgICAgICAgIHVuc2lnbmVkIFRZUEVOQU1FIHVpbiwgdW91dDsKIAogICAgICAgICAgICAgLyogRm9yIDAsIDEsIDIgdXNlIGJhc2U7IGZvciAzLCA0LCA1IHVzZSAtYmFzZSAqLwotICAgICAgICAgICAgdWluID0gaiA8IDMgPyBiYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICA6ICh1bnNpZ25lZCBUWVBFTkFNRSkoLShUWVBFTkFNRSliYXNlKTsKKyAgICAgICAgICAgIHVpbiA9IGogPCAzID8gYmFzZSA6IDBVIC0gYmFzZTsKIAogICAgICAgICAgICAgLyogRm9yIDAgJiAzLCBzdWJ0cmFjdCAxLgogICAgICAgICAgICAgICogRm9yIDEgJiA0LCBsZWF2ZSBhbG9uZS4KQEAgLTE3Nyw2ICsxNzYsMzIgQEAKICAgICAgICAgUHlfREVDUkVGKG9uZSk7CiAgICAgfQogCisgICAgLyogVGVzdCBGX1BZX1RPX3tTLFV9IG9uIG5vbi1weWxvbmcgaW5wdXQuIFRoaXMgc2hvdWxkIHJhaXNlIGEgVHlwZUVycm9yLiAqLworICAgIHsKKyAgICAgICAgVFlQRU5BTUUgb3V0OworICAgICAgICB1bnNpZ25lZCBUWVBFTkFNRSB1b3V0OworCisgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKKworICAgICAgICBvdXQgPSBGX1BZX1RPX1MoUHlfTm9uZSk7CisgICAgICAgIGlmIChvdXQgIT0gKFRZUEVOQU1FKS0xIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yKCJQeUxvbmdfQXNYWFgoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yKCJQeUxvbmdfQXNYWFgoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAgICAgdW91dCA9IEZfUFlfVE9fVShQeV9Ob25lKTsKKyAgICAgICAgaWYgKHVvdXQgIT0gKHVuc2lnbmVkIFRZUEVOQU1FKS0xIHx8ICFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yKCJQeUxvbmdfQXNYWFgoTm9uZSkgZGlkbid0IGNvbXBsYWluIik7CisgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICAgICAgcmV0dXJuIGVycm9yKCJQeUxvbmdfQXNYWFgoTm9uZSkgcmFpc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAic29tZXRoaW5nIG90aGVyIHRoYW4gVHlwZUVycm9yIik7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisKKyAgICAgICAgUHlfREVDUkVGKFB5X05vbmUpOworICAgIH0KKwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KZGlmZiAtLWdpdCBhL01vZHVsZXMvdGltZW1vZHVsZS5jIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKaW5kZXggNjI2ZGIzZS4uMTYxNDA3ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy90aW1lbW9kdWxlLmMKKysrIGIvTW9kdWxlcy90aW1lbW9kdWxlLmMKQEAgLTEsMTMgKzEsMjAgQEAKIC8qIFRpbWUgbW9kdWxlICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJfdGltZS5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorI2lmZGVmIEhBVkVfU1lTX1RJTUVTX0gKKyNpbmNsdWRlIDxzeXMvdGltZXMuaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmIC8qIEhBVkVfU1lTX1RZUEVTX0ggKi8KKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX1NZU19SRVNPVVJDRV9IKQorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2VuZGlmCiAKICNpZmRlZiBRVUlDS1dJTgogI2luY2x1ZGUgPGlvLmg+CkBAIC0yMSwxOSArMjgsNiBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlICJweXRocmVhZC5oIgogCi0vKiBoZWxwZXIgdG8gYWxsb3cgdXMgdG8gaW50ZXJydXB0IHNsZWVwKCkgb24gV2luZG93cyovCi1zdGF0aWMgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IE5VTEw7Ci1zdGF0aWMgQk9PTCBXSU5BUEkgUHlDdHJsSGFuZGxlcihEV09SRCBkd0N0cmxUeXBlKQotewotICAgIFNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7Ci0gICAgLyogYWxsb3cgb3RoZXIgZGVmYXVsdCBoYW5kbGVycyB0byBiZSBjYWxsZWQuCi0gICAgICAgRGVmYXVsdCBQeXRob24gaGFuZGxlciB3aWxsIHNldHVwIHRoZQotICAgICAgIEtleWJvYXJkSW50ZXJydXB0IGV4Y2VwdGlvbi4KLSAgICAqLwotICAgIHJldHVybiBGQUxTRTsKLX0KLXN0YXRpYyBsb25nIG1haW5fdGhyZWFkOwotCiAjaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCiAvKiBUaGVzZSBvdmVycmlkZXMgbm90IG5lZWRlZCBmb3IgV2luMzIgKi8KICNkZWZpbmUgdGltZXpvbmUgX3RpbWV6b25lCkBAIC00MywxMSArMzcsNiBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICNlbmRpZiAvKiAhX19XQVRDT01DX18gfHwgX19RTlhfXyAqLwogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vKiBXaW4zMiBoYXMgYmV0dGVyIGNsb2NrIHJlcGxhY2VtZW50OyB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBiZWxvdy4gKi8KLSN1bmRlZiBIQVZFX0NMT0NLCi0jZW5kaWYgLyogTVNfV0lORE9XUyAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICovCi0KICNpZiBkZWZpbmVkKFBZT1NfT1MyKQogI2RlZmluZSBJTkNMX0RPUwogI2RlZmluZSBJTkNMX0VSUk9SUwpAQCAtNTgsMjMgKzQ3LDIyIEBACiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICNlbmRpZgogCisjaWYgZGVmaW5lZChfX0FQUExFX18pCisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKyNlbmRpZgorCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwogc3RhdGljIGludCBmbG9hdHNsZWVwKGRvdWJsZSk7Ci1zdGF0aWMgZG91YmxlIGZsb2F0dGltZSh2b2lkKTsKK3N0YXRpYyBQeU9iamVjdCogZmxvYXR0aW1lKF9QeV9jbG9ja19pbmZvX3QgKmluZm8pOwogCi0vKiBGb3IgWTJLIGNoZWNrICovCi1zdGF0aWMgUHlPYmplY3QgKm1vZGRpY3Q7CisjaWZkZWYgTVNfV0lORE9XUworc3RhdGljIE9TVkVSU0lPTklORk9FWCB3aW52ZXI7CisjZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKIHsKLSAgICBkb3VibGUgc2VjczsKLSAgICBzZWNzID0gZmxvYXR0aW1lKCk7Ci0gICAgaWYgKHNlY3MgPT0gMC4wKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoc2Vjcyk7CisgICAgcmV0dXJuIGZsb2F0dGltZShOVUxMKTsKIH0KIAogUHlEb2NfU1RSVkFSKHRpbWVfZG9jLApAQCAtODMsNyArNzEsNyBAQAogUmV0dXJuIHRoZSBjdXJyZW50IHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guXG5cCiBGcmFjdGlvbnMgb2YgYSBzZWNvbmQgbWF5IGJlIHByZXNlbnQgaWYgdGhlIHN5c3RlbSBjbG9jayBwcm92aWRlcyB0aGVtLiIpOwogCi0jaWZkZWYgSEFWRV9DTE9DSworI2lmIGRlZmluZWQoSEFWRV9DTE9DSykKIAogI2lmbmRlZiBDTE9DS1NfUEVSX1NFQwogI2lmZGVmIENMS19UQ0sKQEAgLTk0LDQyICs4Miw4MiBAQAogI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCi10aW1lX2Nsb2NrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQorZmxvYXRjbG9jayhfUHlfY2xvY2tfaW5mb190ICppbmZvKQogewotICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKChkb3VibGUpY2xvY2soKSkgLyBDTE9DS1NfUEVSX1NFQyk7CisgICAgY2xvY2tfdCB2YWx1ZTsKKyAgICB2YWx1ZSA9IGNsb2NrKCk7CisgICAgaWYgKHZhbHVlID09IChjbG9ja190KS0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgInRoZSBwcm9jZXNzb3IgdGltZSB1c2VkIGlzIG5vdCBhdmFpbGFibGUgIgorICAgICAgICAgICAgICAgICJvciBpdHMgdmFsdWUgY2Fubm90IGJlIHJlcHJlc2VudGVkIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJjbG9jaygpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDEuMCAvIChkb3VibGUpQ0xPQ0tTX1BFUl9TRUM7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKChkb3VibGUpdmFsdWUgLyBDTE9DS1NfUEVSX1NFQyk7CiB9CiAjZW5kaWYgLyogSEFWRV9DTE9DSyAqLwogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0vKiBEdWUgdG8gTWFyayBIYW1tb25kIGFuZCBUaW0gUGV0ZXJzICovCi1zdGF0aWMgUHlPYmplY3QgKgotdGltZV9jbG9jayhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKKyNkZWZpbmUgV0lOMzJfUEVSRl9DT1VOVEVSCisvKiBXaW4zMiBoYXMgYmV0dGVyIGNsb2NrIHJlcGxhY2VtZW50OyB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiwgZHVlIHRvIE1hcmsKKyAgIEhhbW1vbmQgYW5kIFRpbSBQZXRlcnMgKi8KK3N0YXRpYyBpbnQKK3dpbl9wZXJmX2NvdW50ZXIoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgUHlPYmplY3QgKipyZXN1bHQpCiB7Ci0gICAgc3RhdGljIExBUkdFX0lOVEVHRVIgY3RyU3RhcnQ7Ci0gICAgc3RhdGljIGRvdWJsZSBkaXZpc29yID0gMC4wOworICAgIHN0YXRpYyBMT05HTE9ORyBjcHVfZnJlcXVlbmN5ID0gMDsKKyAgICBzdGF0aWMgTE9OR0xPTkcgY3RyU3RhcnQ7CiAgICAgTEFSR0VfSU5URUdFUiBub3c7CiAgICAgZG91YmxlIGRpZmY7CiAKLSAgICBpZiAoZGl2aXNvciA9PSAwLjApIHsKKyAgICBpZiAoY3B1X2ZyZXF1ZW5jeSA9PSAwKSB7CiAgICAgICAgIExBUkdFX0lOVEVHRVIgZnJlcTsKLSAgICAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJmN0clN0YXJ0KTsKKyAgICAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJm5vdyk7CisgICAgICAgIGN0clN0YXJ0ID0gbm93LlF1YWRQYXJ0OwogICAgICAgICBpZiAoIVF1ZXJ5UGVyZm9ybWFuY2VGcmVxdWVuY3koJmZyZXEpIHx8IGZyZXEuUXVhZFBhcnQgPT0gMCkgewogICAgICAgICAgICAgLyogVW5saWtlbHkgdG8gaGFwcGVuIC0gdGhpcyB3b3JrcyBvbiBhbGwgaW50ZWwKICAgICAgICAgICAgICAgIG1hY2hpbmVzIGF0IGxlYXN0ISAgUmV2ZXJ0IHRvIGNsb2NrKCkgKi8KLSAgICAgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoKChkb3VibGUpY2xvY2soKSkgLwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9DS1NfUEVSX1NFQyk7CisgICAgICAgICAgICAqcmVzdWx0ID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBkaXZpc29yID0gKGRvdWJsZSlmcmVxLlF1YWRQYXJ0OworICAgICAgICBjcHVfZnJlcXVlbmN5ID0gZnJlcS5RdWFkUGFydDsKICAgICB9CiAgICAgUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJm5vdyk7Ci0gICAgZGlmZiA9IChkb3VibGUpKG5vdy5RdWFkUGFydCAtIGN0clN0YXJ0LlF1YWRQYXJ0KTsKLSAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGRpZmYgLyBkaXZpc29yKTsKKyAgICBkaWZmID0gKGRvdWJsZSkobm93LlF1YWRQYXJ0IC0gY3RyU3RhcnQpOworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIlF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wIC8gKGRvdWJsZSljcHVfZnJlcXVlbmN5OworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgKnJlc3VsdCA9IFB5RmxvYXRfRnJvbURvdWJsZShkaWZmIC8gKGRvdWJsZSljcHVfZnJlcXVlbmN5KTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCisjaWYgZGVmaW5lZChXSU4zMl9QRVJGX0NPVU5URVIpIHx8IGRlZmluZWQoSEFWRV9DTE9DSykKKyNkZWZpbmUgUFlDTE9DSworc3RhdGljIFB5T2JqZWN0KgorcHljbG9jayhfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmZGVmIFdJTjMyX1BFUkZfQ09VTlRFUgorICAgIFB5T2JqZWN0ICpyZXM7CisgICAgaWYgKHdpbl9wZXJmX2NvdW50ZXIoaW5mbywgJnJlcykgPT0gMCkKKyAgICAgICAgcmV0dXJuIHJlczsKKyNlbmRpZgorICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOwogfQogCi0jZGVmaW5lIEhBVkVfQ0xPQ0sgLyogU28gaXQgZ2V0cyBpbmNsdWRlZCBpbiB0aGUgbWV0aG9kcyAqLwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKSAqLworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfY2xvY2soUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIHB5Y2xvY2soTlVMTCk7Cit9CiAKLSNpZmRlZiBIQVZFX0NMT0NLCiBQeURvY19TVFJWQVIoY2xvY2tfZG9jLAogImNsb2NrKCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKQEAgLTEzOCwxMiArMTY2LDkzIEBACiByZWNvcmRzLiIpOwogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrX2dldHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCByZXQ7CisgICAgaW50IGNsa19pZDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Y2xvY2tfZ2V0dGltZSIsICZjbGtfaWQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldCA9IGNsb2NrX2dldHRpbWUoKGNsb2NraWRfdCljbGtfaWQsICZ0cCk7CisgICAgaWYgKHJldCAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworfQorCitQeURvY19TVFJWQVIoY2xvY2tfZ2V0dGltZV9kb2MsCisiY2xvY2tfZ2V0dGltZShjbGtfaWQpIC0+IGZsb2F0aW5nIHBvaW50IG51bWJlclxuXAorXG5cCitSZXR1cm4gdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX2Nsb2NrX3NldHRpbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBjbGtfaWQ7CisgICAgUHlPYmplY3QgKm9iajsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisgICAgaW50IHJldDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaU86Y2xvY2tfc2V0dGltZSIsICZjbGtfaWQsICZvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChfUHlUaW1lX09iamVjdFRvVGltZXNwZWMob2JqLCAmdHAudHZfc2VjLCAmdHAudHZfbnNlYykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gY2xvY2tfc2V0dGltZSgoY2xvY2tpZF90KWNsa19pZCwgJnRwKTsKKyAgICBpZiAocmV0ICE9IDApIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihjbG9ja19zZXR0aW1lX2RvYywKKyJjbG9ja19zZXR0aW1lKGNsa19pZCwgdGltZSlcblwKK1xuXAorU2V0IHRoZSB0aW1lIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9jbG9ja19nZXRyZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCByZXQ7CisgICAgaW50IGNsa19pZDsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImk6Y2xvY2tfZ2V0cmVzIiwgJmNsa19pZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0ID0gY2xvY2tfZ2V0cmVzKChjbG9ja2lkX3QpY2xrX2lkLCAmdHApOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUodHAudHZfc2VjICsgdHAudHZfbnNlYyAqIDFlLTkpOworfQorCitQeURvY19TVFJWQVIoY2xvY2tfZ2V0cmVzX2RvYywKKyJjbG9ja19nZXRyZXMoY2xrX2lkKSAtPiBmbG9hdGluZyBwb2ludCBudW1iZXJcblwKK1xuXAorUmV0dXJuIHRoZSByZXNvbHV0aW9uIChwcmVjaXNpb24pIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2sgY2xrX2lkLiIpOworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCisKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3NsZWVwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBkb3VibGUgc2VjczsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImQ6c2xlZXAiLCAmc2VjcykpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzZWNzIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzbGVlcCBsZW5ndGggbXVzdCBiZSBub24tbmVnYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChmbG9hdHNsZWVwKHNlY3MpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTE2Niw2ICsyNzUsMTAgQEAKICAgICB7InRtX3dkYXkiLCAiZGF5IG9mIHdlZWssIHJhbmdlIFswLCA2XSwgTW9uZGF5IGlzIDAifSwKICAgICB7InRtX3lkYXkiLCAiZGF5IG9mIHllYXIsIHJhbmdlIFsxLCAzNjZdIn0sCiAgICAgeyJ0bV9pc2RzdCIsICIxIGlmIHN1bW1lciB0aW1lIGlzIGluIGVmZmVjdCwgMCBpZiBub3QsIGFuZCAtMSBpZiB1bmtub3duIn0sCisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHsidG1fem9uZSIsICJhYmJyZXZpYXRpb24gb2YgdGltZXpvbmUgbmFtZSJ9LAorICAgIHsidG1fZ210b2ZmIiwgIm9mZnNldCBmcm9tIFVUQyBpbiBzZWNvbmRzIn0sCisjZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogICAgIHswfQogfTsKIApAQCAtMTg1LDYgKzI5OCw3IEBACiBzdGF0aWMgaW50IGluaXRpYWxpemVkOwogc3RhdGljIFB5VHlwZU9iamVjdCBTdHJ1Y3RUaW1lVHlwZTsKIAorCiBzdGF0aWMgUHlPYmplY3QgKgogdG10b3R1cGxlKHN0cnVjdCB0bSAqcCkKIHsKQEAgLTIwMyw2ICszMTcsMTEgQEAKICAgICBTRVQoNiwgKHAtPnRtX3dkYXkgKyA2KSAlIDcpOyAvKiBXYW50IE1vbmRheSA9PSAwICovCiAgICAgU0VUKDcsIHAtPnRtX3lkYXkgKyAxKTsgICAgICAgIC8qIFdhbnQgSmFudWFyeSwgMSA9PSAxICovCiAgICAgU0VUKDgsIHAtPnRtX2lzZHN0KTsKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAorICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHAtPnRtX3pvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CisgICAgU0VUKDEwLCBwLT50bV9nbXRvZmYpOworI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICN1bmRlZiBTRVQKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeV9YREVDUkVGKHYpOwpAQCAtMjEyLDU1ICszMzEsNDkgQEAKICAgICByZXR1cm4gdjsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLXRpbWVfY29udmVydChkb3VibGUgd2hlbiwgc3RydWN0IHRtICogKCpmdW5jdGlvbikoY29uc3QgdGltZV90ICopKQotewotICAgIHN0cnVjdCB0bSAqcDsKLSAgICB0aW1lX3Qgd2hlbnQgPSBfUHlUaW1lX0RvdWJsZVRvVGltZXQod2hlbik7Ci0KLSAgICBpZiAod2hlbnQgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJubyA9IDA7Ci0gICAgcCA9IGZ1bmN0aW9uKCZ3aGVudCk7Ci0gICAgaWYgKHAgPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfVmFsdWVFcnJvcik7Ci0gICAgfQotICAgIHJldHVybiB0bXRvdHVwbGUocCk7Ci19Ci0KIC8qIFBhcnNlIGFyZyB0dXBsZSB0aGF0IGNhbiBjb250YWluIGFuIG9wdGlvbmFsIGZsb2F0LW9yLU5vbmUgdmFsdWU7CiAgICBmb3JtYXQgbmVlZHMgdG8gYmUgInxPOm5hbWUiLgogICAgUmV0dXJucyBub24temVybyBvbiBzdWNjZXNzIChwYXJhbGxlbHMgUHlBcmdfUGFyc2VUdXBsZSkuCiAqLwogc3RhdGljIGludAotcGFyc2VfdGltZV9kb3VibGVfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCBkb3VibGUgKnB3aGVuKQorcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKIHsKICAgICBQeU9iamVjdCAqb3QgPSBOVUxMOworICAgIHRpbWVfdCB3aGVudDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBmb3JtYXQsICZvdCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChvdCA9PSBOVUxMIHx8IG90ID09IFB5X05vbmUpCi0gICAgICAgICpwd2hlbiA9IGZsb2F0dGltZSgpOwotICAgIGVsc2UgewotICAgICAgICBkb3VibGUgd2hlbiA9IFB5RmxvYXRfQXNEb3VibGUob3QpOwotICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAqcHdoZW4gPSB3aGVuOworICAgIGlmIChvdCA9PSBOVUxMIHx8IG90ID09IFB5X05vbmUpIHsKKyAgICAgICAgd2hlbnQgPSB0aW1lKE5VTEwpOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKF9QeVRpbWVfT2JqZWN0VG9UaW1lX3Qob3QsICZ3aGVudCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKnB3aGVuID0gd2hlbnQ7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2dtdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgZG91YmxlIHdoZW47Ci0gICAgaWYgKCFwYXJzZV90aW1lX2RvdWJsZV9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCisgICAgdGltZV90IHdoZW47CisgICAgc3RydWN0IHRtIGJ1ZiwgKmxvY2FsOworCisgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86Z210aW1lIiwgJndoZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gdGltZV9jb252ZXJ0KHdoZW4sIGdtdGltZSk7CisKKyAgICBlcnJubyA9IDA7CisgICAgbG9jYWwgPSBnbXRpbWUoJndoZW4pOworICAgIGlmIChsb2NhbCA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICB9CisgICAgYnVmID0gKmxvY2FsOworICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CiB9CiAKIFB5RG9jX1NUUlZBUihnbXRpbWVfZG9jLApAQCAtMjY4LDE1ICszODEsNDIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdG1fc2VjLCB0bV93ZGF5LCB0bV95ZGF5LCB0bV9pc2RzdClcblwKIFxuXAogQ29udmVydCBzZWNvbmRzIHNpbmNlIHRoZSBFcG9jaCB0byBhIHRpbWUgdHVwbGUgZXhwcmVzc2luZyBVVEMgKGEuay5hLlxuXAotR01UKS4gIFdoZW4gJ3NlY29uZHMnIGlzIG5vdCBwYXNzZWQgaW4sIGNvbnZlcnQgdGhlIGN1cnJlbnQgdGltZSBpbnN0ZWFkLiIpOworR01UKS4gIFdoZW4gJ3NlY29uZHMnIGlzIG5vdCBwYXNzZWQgaW4sIGNvbnZlcnQgdGhlIGN1cnJlbnQgdGltZSBpbnN0ZWFkLlxuXAorXG5cCitJZiB0aGUgcGxhdGZvcm0gc3VwcG9ydHMgdGhlIHRtX2dtdG9mZiBhbmQgdG1fem9uZSwgdGhleSBhcmUgYXZhaWxhYmxlIGFzXG5cCithdHRyaWJ1dGVzIG9ubHkuIik7CisKK3N0YXRpYyBpbnQKK3B5bG9jYWx0aW1lKHRpbWVfdCAqdGltZXAsIHN0cnVjdCB0bSAqcmVzdWx0KQoreworICAgIHN0cnVjdCB0bSAqbG9jYWw7CisKKyAgICBhc3NlcnQgKHRpbWVwICE9IE5VTEwpOworICAgIGxvY2FsID0gbG9jYWx0aW1lKHRpbWVwKTsKKyAgICBpZiAobG9jYWwgPT0gTlVMTCkgeworICAgICAgICAvKiB1bmNvbnZlcnRpYmxlIHRpbWUgKi8KKyNpZmRlZiBFSU5WQUwKKyAgICAgICAgaWYgKGVycm5vID09IDApCisgICAgICAgICAgICBlcnJubyA9IEVJTlZBTDsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgKnJlc3VsdCA9ICpsb2NhbDsKKyAgICByZXR1cm4gMDsKK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfbG9jYWx0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBkb3VibGUgd2hlbjsKLSAgICBpZiAoIXBhcnNlX3RpbWVfZG91YmxlX2FyZ3MoYXJncywgInxPOmxvY2FsdGltZSIsICZ3aGVuKSkKKyAgICB0aW1lX3Qgd2hlbjsKKyAgICBzdHJ1Y3QgdG0gYnVmOworCisgICAgaWYgKCFwYXJzZV90aW1lX3RfYXJncyhhcmdzLCAifE86bG9jYWx0aW1lIiwgJndoZW4pKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gdGltZV9jb252ZXJ0KHdoZW4sIGxvY2FsdGltZSk7CisgICAgaWYgKHB5bG9jYWx0aW1lKCZ3aGVuLCAmYnVmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHRtdG90dXBsZSgmYnVmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxvY2FsdGltZV9kb2MsCkBAIC0zMDcsNTMgKzQ0NywyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAmcC0+dG1faG91ciwgJnAtPnRtX21pbiwgJnAtPnRtX3NlYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJnAtPnRtX3dkYXksICZwLT50bV95ZGF5LCAmcC0+dG1faXNkc3QpKQogICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIElmIHllYXIgaXMgc3BlY2lmaWVkIHdpdGggbGVzcyB0aGFuIDQgZGlnaXRzLCBpdHMgaW50ZXJwcmV0YXRpb24KLSAgICAgKiBkZXBlbmRzIG9uIHRoZSBhY2NlcHQyZHllYXIgdmFsdWUuCi0gICAgICoKLSAgICAgKiBJZiBhY2NlcHQyZHllYXIgaXMgdHJ1ZSAoZGVmYXVsdCksIGEgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBiZWhhdmlvciBpcwotICAgICAqIGludm9rZWQgYXMgZm9sbG93czoKLSAgICAgKgotICAgICAqICAgLSBmb3IgMi1kaWdpdCB5ZWFyLCBjZW50dXJ5IGlzIGd1ZXNzZWQgYWNjb3JkaW5nIHRvIFBPU0lYIHJ1bGVzIGZvcgotICAgICAqICAgICAgJXkgc3RycHRpbWUgZm9ybWF0OiAyMXN0IGNlbnR1cnkgZm9yIHkgPCA2OSwgMjB0aCBjZW50dXJ5Ci0gICAgICogICAgICBvdGhlcndpc2UuICBBIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgaXNzdWVkIHdoZW4gY2VudHVyeQotICAgICAqICAgICAgaW5mb3JtYXRpb24gaXMgZ3Vlc3NlZCBpbiB0aGlzIHdheS4KLSAgICAgKgotICAgICAqICAgLSBmb3IgMy1kaWdpdCBvciBuZWdhdGl2ZSB5ZWFyLCBhIFZhbHVlRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4KLSAgICAgKgotICAgICAqIElmIGFjY2VwdDJkeWVhciBpcyBmYWxzZSAoc2V0IGJ5IHRoZSBwcm9ncmFtIG9yIGFzIGEgcmVzdWx0IG9mIGEKLSAgICAgKiBub24tZW1wdHkgdmFsdWUgYXNzaWduZWQgdG8gUFlUSE9OWTJLIGVudmlyb25tZW50IHZhcmlhYmxlKSBhbGwgeWVhcgotICAgICAqIHZhbHVlcyBhcmUgaW50ZXJwcmV0ZWQgYXMgZ2l2ZW4uCi0gICAgICovCi0gICAgaWYgKHkgPCAxMDAwKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphY2NlcHQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2RkaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VwdDJkeWVhciIpOwotICAgICAgICBpZiAoYWNjZXB0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGludCBhY2NlcHR2YWwgPSAgUHlPYmplY3RfSXNUcnVlKGFjY2VwdCk7Ci0gICAgICAgICAgICBpZiAoYWNjZXB0dmFsID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgaWYgKGFjY2VwdHZhbCkgewotICAgICAgICAgICAgICAgIGlmICgwIDw9IHkgJiYgeSA8IDY5KQotICAgICAgICAgICAgICAgICAgICB5ICs9IDIwMDA7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoNjkgPD0geSAmJiB5IDwgMTAwKQotICAgICAgICAgICAgICAgICAgICB5ICs9IDE5MDA7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInllYXIgb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJDZW50dXJ5IGluZm8gZ3Vlc3NlZCBmb3IgYSAyLWRpZ2l0IHllYXIuIiwgMSkgIT0gMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogICAgIHAtPnRtX3llYXIgPSB5IC0gMTkwMDsKICAgICBwLT50bV9tb24tLTsKICAgICBwLT50bV93ZGF5ID0gKHAtPnRtX3dkYXkgKyAxKSAlIDc7CiAgICAgcC0+dG1feWRheS0tOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBpZiAoUHlfVFlQRShhcmdzKSA9PSAmU3RydWN0VGltZVR5cGUpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW07CisgICAgICAgIGl0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDkpOworICAgICAgICBwLT50bV96b25lID0gaXRlbSA9PSBQeV9Ob25lID8gTlVMTCA6IF9QeVVuaWNvZGVfQXNTdHJpbmcoaXRlbSk7CisgICAgICAgIGl0ZW0gPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEwKTsKKyAgICAgICAgcC0+dG1fZ210b2ZmID0gaXRlbSA9PSBQeV9Ob25lID8gMCA6IFB5TG9uZ19Bc0xvbmcoaXRlbSk7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICByZXR1cm4gMTsKIH0KIApAQCAtNDcwLDcgKzU3OCw4IEBACiAKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgYnVmID0gKmxvY2FsdGltZSgmdHQpOworICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00OTgsNyArNjA3LDcgQEAKICAgICBmbXQgPSBmb3JtYXQ7CiAjZWxzZQogICAgIC8qIENvbnZlcnQgdGhlIHVuaWNvZGUgc3RyaW5nIHRvIGFuIGFzY2lpIG9uZSAqLwotICAgIGZvcm1hdCA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZm9ybWF0X2FyZyk7CisgICAgZm9ybWF0ID0gUHlVbmljb2RlX0VuY29kZUxvY2FsZShmb3JtYXRfYXJnLCAic3Vycm9nYXRlZXNjYXBlIik7CiAgICAgaWYgKGZvcm1hdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhmb3JtYXQpOwpAQCAtNTQ5LDcgKzY1OCw4IEBACiAjaWZkZWYgSEFWRV9XQ1NGVElNRQogICAgICAgICAgICAgcmV0ID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihvdXRidWYsIGJ1Zmxlbik7CiAjZWxzZQotICAgICAgICAgICAgcmV0ID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUob3V0YnVmLCBidWZsZW4pOworICAgICAgICAgICAgcmV0ID0gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUob3V0YnVmLCBidWZsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CiAjZW5kaWYKICAgICAgICAgICAgIFB5TWVtX0ZyZWUob3V0YnVmKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTg3LDExICs2OTcsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqc3RycHRpbWVfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiX3N0cnB0aW1lIik7CiAgICAgUHlPYmplY3QgKnN0cnB0aW1lX3Jlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfc3RycHRpbWVfdGltZSk7CiAKICAgICBpZiAoIXN0cnB0aW1lX21vZHVsZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RycHRpbWVfcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChzdHJwdGltZV9tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfc3RycHRpbWVfdGltZSIsICJPIiwgYXJncyk7CisgICAgc3RycHRpbWVfcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChzdHJwdGltZV9tb2R1bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fc3RycHRpbWVfdGltZSwgIk8iLCBhcmdzKTsKICAgICBQeV9ERUNSRUYoc3RycHRpbWVfbW9kdWxlKTsKICAgICByZXR1cm4gc3RycHRpbWVfcmVzdWx0OwogfQpAQCAtNjA4LDMxICs3MTksMjAgQEAKIHsKICAgICAvKiBJbnNwaXJlZCBieSBPcGVuIEdyb3VwIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgYXQKICAgICAgKiBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9hc2N0aW1lLmh0bWwgKi8KLSAgICBzdGF0aWMgY2hhciB3ZGF5X25hbWVbN11bM10gPSB7CisgICAgc3RhdGljIGNoYXIgd2RheV9uYW1lWzddWzRdID0gewogICAgICAgICAiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IgogICAgIH07Ci0gICAgc3RhdGljIGNoYXIgbW9uX25hbWVbMTJdWzNdID0geworICAgIHN0YXRpYyBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKICAgICAgICAgIkphbiIsICJGZWIiLCAiTWFyIiwgIkFwciIsICJNYXkiLCAiSnVuIiwKICAgICAgICAgIkp1bCIsICJBdWciLCAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIgogICAgIH07Ci0gICAgY2hhciBidWZbMjBdOyAvKiAnU3VuIFNlcCAxNiAwMTowMzo1MlwwJyAqLwotICAgIGludCBuOwotCi0gICAgbiA9IFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiUuM3MgJS4zcyUzZCAlLjJkOiUuMmQ6JS4yZCIsCi0gICAgICAgICAgICAgICAgICAgICAgd2RheV9uYW1lW3RpbWVwdHItPnRtX3dkYXldLAotICAgICAgICAgICAgICAgICAgICAgIG1vbl9uYW1lW3RpbWVwdHItPnRtX21vbl0sCi0gICAgICAgICAgICAgICAgICAgICAgdGltZXB0ci0+dG1fbWRheSwgdGltZXB0ci0+dG1faG91ciwKLSAgICAgICAgICAgICAgICAgICAgICB0aW1lcHRyLT50bV9taW4sIHRpbWVwdHItPnRtX3NlYyk7Ci0gICAgLyogWFhYOiBzaW5jZSB0aGUgZmllbGRzIHVzZWQgYnkgc25wcmludGYgYWJvdmUgYXJlIHZhbGlkYXRlZCBpbiBjaGVja3RtLAotICAgICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIHNob3VsZCBuZXZlciB0cmlnZ2VyLiBXZSBrZWVwIHRoZSBjaGVjayBiZWNhdXNlCi0gICAgICogaGlzdG9yaWNhbGx5IGZpeGVkIHNpemUgYnVmZmVyIHVzZWQgaW4gYXNjdGltZSB3YXMgdGhlIHNvdXJjZSBvZgotICAgICAqIGNyYXNoZXMuICovCi0gICAgaWYgKG4gKyAxICE9IHNpemVvZihidWYpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5jb252ZXJ0aWJsZSB0aW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMgJWQiLCBidWYsIDE5MDAgKyB0aW1lcHRyLT50bV95ZWFyKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIlcyAlcyUzZCAlLjJkOiUuMmQ6JS4yZCAlZCIsCisgICAgICAgIHdkYXlfbmFtZVt0aW1lcHRyLT50bV93ZGF5XSwKKyAgICAgICAgbW9uX25hbWVbdGltZXB0ci0+dG1fbW9uXSwKKyAgICAgICAgdGltZXB0ci0+dG1fbWRheSwgdGltZXB0ci0+dG1faG91ciwKKyAgICAgICAgdGltZXB0ci0+dG1fbWluLCB0aW1lcHRyLT50bV9zZWMsCisgICAgICAgIDE5MDAgKyB0aW1lcHRyLT50bV95ZWFyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTY0NSw3ICs3NDUsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgYnVmID0gKmxvY2FsdGltZSgmdHQpOworICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgfSBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwpAQCAtNjYxLDI4ICs3NjMsMTMgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2N0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqb3QgPSBOVUxMOwogICAgIHRpbWVfdCB0dDsKLSAgICBzdHJ1Y3QgdG0gKnRpbWVwdHI7Ci0KLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJjdGltZSIsIDAsIDEsICZvdCkpCisgICAgc3RydWN0IHRtIGJ1ZjsKKyAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpjdGltZSIsICZ0dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChvdCA9PSBOVUxMIHx8IG90ID09IFB5X05vbmUpCi0gICAgICAgIHR0ID0gdGltZShOVUxMKTsKLSAgICBlbHNlIHsKLSAgICAgICAgZG91YmxlIGR0ID0gUHlGbG9hdF9Bc0RvdWJsZShvdCk7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHR0ID0gX1B5VGltZV9Eb3VibGVUb1RpbWV0KGR0KTsKLSAgICAgICAgaWYgKHR0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB0aW1lcHRyID0gbG9jYWx0aW1lKCZ0dCk7Ci0gICAgaWYgKHRpbWVwdHIgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInVuY29udmVydGlibGUgdGltZSIpOworICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIF9hc2N0aW1lKHRpbWVwdHIpOworICAgIHJldHVybiBfYXNjdGltZSgmYnVmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGN0aW1lX2RvYywKQEAgLTcxNSw3ICs4MDIsMTAgQEAKIFB5RG9jX1NUUlZBUihta3RpbWVfZG9jLAogIm1rdGltZSh0dXBsZSkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKLUNvbnZlcnQgYSB0aW1lIHR1cGxlIGluIGxvY2FsIHRpbWUgdG8gc2Vjb25kcyBzaW5jZSB0aGUgRXBvY2guIik7CitDb252ZXJ0IGEgdGltZSB0dXBsZSBpbiBsb2NhbCB0aW1lIHRvIHNlY29uZHMgc2luY2UgdGhlIEVwb2NoLlxuXAorTm90ZSB0aGF0IG1rdGltZShnbXRpbWUoMCkpIHdpbGwgbm90IGdlbmVyYWxseSByZXR1cm4gemVybyBmb3IgbW9zdFxuXAordGltZSB6b25lczsgaW5zdGVhZCB0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBlaXRoZXIgYmUgZXF1YWwgdG8gdGhhdFxuXAorb2YgdGhlIHRpbWV6b25lIG9yIGFsdHpvbmUgYXR0cmlidXRlcyBvbiB0aGUgdGltZSBtb2R1bGUuIik7CiAjZW5kaWYgLyogSEFWRV9NS1RJTUUgKi8KIAogI2lmZGVmIEhBVkVfV09SS0lOR19UWlNFVApAQCAtNzU1LDYgKzg0NSw0MDIgQEAKIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uLiIpOwogI2VuZGlmIC8qIEhBVkVfV09SS0lOR19UWlNFVCAqLwogCisjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQVBQTEVfXykgXAorICAgIHx8IChkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgXAorICAgICAgICAmJiAoZGVmaW5lZChDTE9DS19ISUdIUkVTKSB8fCBkZWZpbmVkKENMT0NLX01PTk9UT05JQykpKQorI2RlZmluZSBQWU1PTk9UT05JQworI2VuZGlmCisKKyNpZmRlZiBQWU1PTk9UT05JQworc3RhdGljIFB5T2JqZWN0KgorcHltb25vdG9uaWMoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKK3sKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisgICAgc3RhdGljIFVMT05HTE9ORyAoKkdldFRpY2tDb3VudDY0KSAodm9pZCkgPSBOVUxMOworICAgIHN0YXRpYyBVTE9OR0xPTkcgKENBTExCQUNLICpQeV9HZXRUaWNrQ291bnQ2NCkodm9pZCk7CisgICAgc3RhdGljIGludCBoYXNfZ2V0aWNrY291bnQ2NCA9IC0xOworICAgIGRvdWJsZSByZXN1bHQ7CisKKyAgICBpZiAoaGFzX2dldGlja2NvdW50NjQgPT0gLTEpIHsKKyAgICAgICAgLyogR2V0VGlja0NvdW50NjQoKSB3YXMgYWRkZWQgdG8gV2luZG93cyBWaXN0YSAqLworICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpIHsKKyAgICAgICAgICAgIEhJTlNUQU5DRSBoS2VybmVsMzI7CisgICAgICAgICAgICBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGVXKEwiS0VSTkVMMzIiKTsKKyAgICAgICAgICAgICooRkFSUFJPQyopJlB5X0dldFRpY2tDb3VudDY0ID0gR2V0UHJvY0FkZHJlc3MoaEtlcm5lbDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0VGlja0NvdW50NjQiKTsKKyAgICAgICAgICAgIGhhc19nZXRpY2tjb3VudDY0ID0gKFB5X0dldFRpY2tDb3VudDY0ICE9IE5VTEwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhhc19nZXRpY2tjb3VudDY0ID0gMDsKKyAgICB9CisKKyAgICBpZiAoaGFzX2dldGlja2NvdW50NjQpIHsKKyAgICAgICAgVUxPTkdMT05HIHRpY2tzOworICAgICAgICB0aWNrcyA9IFB5X0dldFRpY2tDb3VudDY0KCk7CisgICAgICAgIHJlc3VsdCA9IChkb3VibGUpdGlja3MgKiAxZS0zOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhdGljIERXT1JEIGxhc3RfdGlja3MgPSAwOworICAgICAgICBzdGF0aWMgRFdPUkQgbl9vdmVyZmxvdyA9IDA7CisgICAgICAgIERXT1JEIHRpY2tzOworCisgICAgICAgIHRpY2tzID0gR2V0VGlja0NvdW50KCk7CisgICAgICAgIGlmICh0aWNrcyA8IGxhc3RfdGlja3MpCisgICAgICAgICAgICBuX292ZXJmbG93Kys7CisgICAgICAgIGxhc3RfdGlja3MgPSB0aWNrczsKKworICAgICAgICByZXN1bHQgPSBsZGV4cChuX292ZXJmbG93LCAzMik7CisgICAgICAgIHJlc3VsdCArPSB0aWNrczsKKyAgICAgICAgcmVzdWx0ICo9IDFlLTM7CisgICAgfQorCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CisgICAgICAgIEJPT0wgaXNUaW1lQWRqdXN0bWVudERpc2FibGVkLCBvazsKKyAgICAgICAgaWYgKGhhc19nZXRpY2tjb3VudDY0KQorICAgICAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0VGlja0NvdW50NjQoKSI7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFRpY2tDb3VudCgpIjsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgb2sgPSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQpOworICAgICAgICBpZiAoIW9rKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgfQorICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUocmVzdWx0KTsKKworI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisgICAgc3RhdGljIG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QgdGltZWJhc2U7CisgICAgdWludDY0X3QgdGltZTsKKyAgICBkb3VibGUgc2VjczsKKworICAgIGlmICh0aW1lYmFzZS5kZW5vbSA9PSAwKSB7CisgICAgICAgIC8qIEFjY29yZGluZyB0byB0aGUgVGVjaG5pY2FsIFEmQSBRQTEzOTgsIG1hY2hfdGltZWJhc2VfaW5mbygpIGNhbm5vdAorICAgICAgICAgICBmYWlsOiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vbGlicmFyeS9tYWMvI3FhL3FhMTM5OC8gKi8KKyAgICAgICAgKHZvaWQpbWFjaF90aW1lYmFzZV9pbmZvKCZ0aW1lYmFzZSk7CisgICAgfQorCisgICAgdGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOworICAgIHNlY3MgPSAoZG91YmxlKXRpbWUgKiB0aW1lYmFzZS5udW1lciAvIHRpbWViYXNlLmRlbm9tICogMWUtOTsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJtYWNoX2Fic29sdXRlX3RpbWUoKSI7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAoZG91YmxlKXRpbWViYXNlLm51bWVyIC8gdGltZWJhc2UuZGVub20gKiAxZS05OworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShzZWNzKTsKKworI2VsaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpICYmIChkZWZpbmVkKENMT0NLX0hJR0hSRVMpIHx8IGRlZmluZWQoQ0xPQ0tfTU9OT1RPTklDKSkKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHA7CisjaWZkZWYgQ0xPQ0tfSElHSFJFUworICAgIGNvbnN0IGNsb2NraWRfdCBjbGtfaWQgPSBDTE9DS19ISUdIUkVTOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfSElHSFJFUykiOworI2Vsc2UKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfTU9OT1RPTklDOworICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDKSI7CisjZW5kaWYKKworICAgIGlmIChjbG9ja19nZXR0aW1lKGNsa19pZCwgJnRwKSAhPSAwKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGluZm8pIHsKKyAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSBmdW5jdGlvbjsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgIGlmIChjbG9ja19nZXRyZXMoY2xrX2lkLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxZS05OworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKKyNlbmRpZgorfQorCitzdGF0aWMgUHlPYmplY3QgKgordGltZV9tb25vdG9uaWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCit7CisgICAgcmV0dXJuIHB5bW9ub3RvbmljKE5VTEwpOworfQorCitQeURvY19TVFJWQVIobW9ub3RvbmljX2RvYywKKyJtb25vdG9uaWMoKSAtPiBmbG9hdFxuXAorXG5cCitNb25vdG9uaWMgY2xvY2ssIGNhbm5vdCBnbyBiYWNrd2FyZC4iKTsKKyNlbmRpZiAgIC8qIFBZTU9OT1RPTklDICovCisKK3N0YXRpYyBQeU9iamVjdCoKK3BlcmZfY291bnRlcihfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmIGRlZmluZWQoV0lOMzJfUEVSRl9DT1VOVEVSKSB8fCBkZWZpbmVkKFBZTU9OT1RPTklDKQorICAgIFB5T2JqZWN0ICpyZXM7CisjZW5kaWYKKyNpZiBkZWZpbmVkKFdJTjMyX1BFUkZfQ09VTlRFUikKKyAgICBzdGF0aWMgaW50IHVzZV9wZXJmX2NvdW50ZXIgPSAxOworI2VuZGlmCisjaWZkZWYgUFlNT05PVE9OSUMKKyAgICBzdGF0aWMgaW50IHVzZV9tb25vdG9uaWMgPSAxOworI2VuZGlmCisKKyNpZmRlZiBXSU4zMl9QRVJGX0NPVU5URVIKKyAgICBpZiAodXNlX3BlcmZfY291bnRlcikgeworICAgICAgICBpZiAod2luX3BlcmZfY291bnRlcihpbmZvLCAmcmVzKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgdXNlX3BlcmZfY291bnRlciA9IDA7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIGlmICh1c2VfbW9ub3RvbmljKSB7CisgICAgICAgIHJlcyA9IHB5bW9ub3RvbmljKGluZm8pOworICAgICAgICBpZiAocmVzICE9IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB1c2VfbW9ub3RvbmljID0gMDsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBmbG9hdHRpbWUoaW5mbyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX3BlcmZfY291bnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcGVyZl9jb3VudGVyKE5VTEwpOworfQorCitQeURvY19TVFJWQVIocGVyZl9jb3VudGVyX2RvYywKKyJwZXJmX2NvdW50ZXIoKSAtPiBmbG9hdFxuXAorXG5cCitQZXJmb3JtYW5jZSBjb3VudGVyIGZvciBiZW5jaG1hcmtpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCoKK3B5X3Byb2Nlc3NfdGltZShfUHlfY2xvY2tfaW5mb190ICppbmZvKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICBIQU5ETEUgcHJvY2VzczsKKyAgICBGSUxFVElNRSBjcmVhdGlvbl90aW1lLCBleGl0X3RpbWUsIGtlcm5lbF90aW1lLCB1c2VyX3RpbWU7CisgICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7CisgICAgZG91YmxlIHRvdGFsOworICAgIEJPT0wgb2s7CisKKyAgICBwcm9jZXNzID0gR2V0Q3VycmVudFByb2Nlc3MoKTsKKyAgICBvayA9IEdldFByb2Nlc3NUaW1lcyhwcm9jZXNzLCAmY3JlYXRpb25fdGltZSwgJmV4aXRfdGltZSwgJmtlcm5lbF90aW1lLCAmdXNlcl90aW1lKTsKKyAgICBpZiAoIW9rKQorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisKKyAgICBsYXJnZS51Lkxvd1BhcnQgPSBrZXJuZWxfdGltZS5kd0xvd0RhdGVUaW1lOworICAgIGxhcmdlLnUuSGlnaFBhcnQgPSBrZXJuZWxfdGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICB0b3RhbCA9IChkb3VibGUpbGFyZ2UuUXVhZFBhcnQ7CisgICAgbGFyZ2UudS5Mb3dQYXJ0ID0gdXNlcl90aW1lLmR3TG93RGF0ZVRpbWU7CisgICAgbGFyZ2UudS5IaWdoUGFydCA9IHVzZXJfdGltZS5kd0hpZ2hEYXRlVGltZTsKKyAgICB0b3RhbCArPSAoZG91YmxlKWxhcmdlLlF1YWRQYXJ0OworICAgIGlmIChpbmZvKSB7CisgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gIkdldFByb2Nlc3NUaW1lcygpIjsKKyAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTc7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDE7CisgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgIH0KKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRvdGFsICogMWUtNyk7CisjZWxzZQorCisjaWYgZGVmaW5lZChIQVZFX1NZU19SRVNPVVJDRV9IKQorICAgIHN0cnVjdCBydXNhZ2UgcnU7CisjZW5kaWYKKyNpZmRlZiBIQVZFX1RJTUVTCisgICAgc3RydWN0IHRtcyB0OworICAgIHN0YXRpYyBsb25nIHRpY2tzX3Blcl9zZWNvbmQgPSAtMTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX0NMT0NLX0dFVFRJTUUpIFwKKyAgICAmJiAoZGVmaW5lZChDTE9DS19QUk9DRVNTX0NQVVRJTUVfSUQpIHx8IGRlZmluZWQoQ0xPQ0tfUFJPRikpCisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworI2lmZGVmIENMT0NLX1BST0YKKyAgICBjb25zdCBjbG9ja2lkX3QgY2xrX2lkID0gQ0xPQ0tfUFJPRjsKKyAgICBjb25zdCBjaGFyICpmdW5jdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX1BST0YpIjsKKyNlbHNlCisgICAgY29uc3QgY2xvY2tpZF90IGNsa19pZCA9IENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRDsKKyAgICBjb25zdCBjaGFyICpmdW5jdGlvbiA9ICJjbG9ja19nZXR0aW1lKENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCkiOworI2VuZGlmCisKKyAgICBpZiAoY2xvY2tfZ2V0dGltZShjbGtfaWQsICZ0cCkgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gZnVuY3Rpb247CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDA7CisgICAgICAgICAgICBpZiAoY2xvY2tfZ2V0cmVzKGNsa19pZCwgJnJlcykgPT0gMCkKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gcmVzLnR2X3NlYyArIHJlcy50dl9uc2VjICogMWUtOTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtOTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHRwLnR2X3NlYyArIHRwLnR2X25zZWMgKiAxZS05KTsKKyAgICB9CisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9TWVNfUkVTT1VSQ0VfSCkKKyAgICBpZiAoZ2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmcnUpID09IDApIHsKKyAgICAgICAgZG91YmxlIHRvdGFsOworICAgICAgICB0b3RhbCA9IHJ1LnJ1X3V0aW1lLnR2X3NlYyArIHJ1LnJ1X3V0aW1lLnR2X3VzZWMgKiAxZS02OworICAgICAgICB0b3RhbCArPSBydS5ydV9zdGltZS50dl9zZWMgKyBydS5ydV9zdGltZS50dl91c2VjICogMWUtNjsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImdldHJ1c2FnZShSVVNBR0VfU0VMRikiOworICAgICAgICAgICAgaW5mby0+bW9ub3RvbmljID0gMTsKKyAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0b3RhbCk7CisgICAgfQorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1RJTUVTCisgICAgaWYgKHRpbWVzKCZ0KSAhPSAoY2xvY2tfdCktMSkgeworICAgICAgICBkb3VibGUgdG90YWw7CisKKyAgICAgICAgaWYgKHRpY2tzX3Blcl9zZWNvbmQgPT0gLTEpIHsKKyNpZiBkZWZpbmVkKEhBVkVfU1lTQ09ORikgJiYgZGVmaW5lZChfU0NfQ0xLX1RDSykKKyAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSBzeXNjb25mKF9TQ19DTEtfVENLKTsKKyAgICAgICAgICAgIGlmICh0aWNrc19wZXJfc2Vjb25kIDwgMSkKKyAgICAgICAgICAgICAgICB0aWNrc19wZXJfc2Vjb25kID0gLTE7CisjZWxpZiBkZWZpbmVkKEhaKQorICAgICAgICAgICAgdGlja3NfcGVyX3NlY29uZCA9IEhaOworI2Vsc2UKKyAgICAgICAgICAgIHRpY2tzX3Blcl9zZWNvbmQgPSA2MDsgLyogbWFnaWMgZmFsbGJhY2sgdmFsdWU7IG1heSBiZSBib2d1cyAqLworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBpZiAodGlja3NfcGVyX3NlY29uZCAhPSAtMSkgeworICAgICAgICAgICAgdG90YWwgPSAoZG91YmxlKXQudG1zX3V0aW1lIC8gdGlja3NfcGVyX3NlY29uZDsKKyAgICAgICAgICAgIHRvdGFsICs9IChkb3VibGUpdC50bXNfc3RpbWUgLyB0aWNrc19wZXJfc2Vjb25kOworICAgICAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJ0aW1lcygpIjsKKyAgICAgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAxOworICAgICAgICAgICAgICAgIGluZm8tPmFkanVzdGFibGUgPSAwOworICAgICAgICAgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSAxLjAgLyB0aWNrc19wZXJfc2Vjb25kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0b3RhbCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKworICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOworI2VuZGlmCit9CisKK3N0YXRpYyBQeU9iamVjdCAqCit0aW1lX3Byb2Nlc3NfdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnVudXNlZCkKK3sKKyAgICByZXR1cm4gcHlfcHJvY2Vzc190aW1lKE5VTEwpOworfQorCitQeURvY19TVFJWQVIocHJvY2Vzc190aW1lX2RvYywKKyJwcm9jZXNzX3RpbWUoKSAtPiBmbG9hdFxuXAorXG5cCitQcm9jZXNzIHRpbWUgZm9yIHByb2ZpbGluZzogc3VtIG9mIHRoZSBrZXJuZWwgYW5kIHVzZXItc3BhY2UgQ1BVIHRpbWUuIik7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3RpbWVfZ2V0X2Nsb2NrX2luZm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGNoYXIgKm5hbWU7CisgICAgX1B5X2Nsb2NrX2luZm9fdCBpbmZvOworICAgIFB5T2JqZWN0ICpvYmogPSBOVUxMLCAqZGljdCwgKm5zOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmdldF9jbG9ja19pbmZvIiwgJm5hbWUpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworI2lmZGVmIFB5X0RFQlVHCisgICAgaW5mby5pbXBsZW1lbnRhdGlvbiA9IE5VTEw7CisgICAgaW5mby5tb25vdG9uaWMgPSAtMTsKKyAgICBpbmZvLmFkanVzdGFibGUgPSAtMTsKKyAgICBpbmZvLnJlc29sdXRpb24gPSAtMS4wOworI2Vsc2UKKyAgICBpbmZvLmltcGxlbWVudGF0aW9uID0gIiI7CisgICAgaW5mby5tb25vdG9uaWMgPSAwOworICAgIGluZm8uYWRqdXN0YWJsZSA9IDA7CisgICAgaW5mby5yZXNvbHV0aW9uID0gMS4wOworI2VuZGlmCisKKyAgICBpZiAoc3RyY21wKG5hbWUsICJ0aW1lIikgPT0gMCkKKyAgICAgICAgb2JqID0gZmxvYXR0aW1lKCZpbmZvKTsKKyNpZmRlZiBQWUNMT0NLCisgICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJjbG9jayIpID09IDApCisgICAgICAgIG9iaiA9IHB5Y2xvY2soJmluZm8pOworI2VuZGlmCisjaWZkZWYgUFlNT05PVE9OSUMKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgIm1vbm90b25pYyIpID09IDApCisgICAgICAgIG9iaiA9IHB5bW9ub3RvbmljKCZpbmZvKTsKKyNlbmRpZgorICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAicGVyZl9jb3VudGVyIikgPT0gMCkKKyAgICAgICAgb2JqID0gcGVyZl9jb3VudGVyKCZpbmZvKTsKKyAgICBlbHNlIGlmIChzdHJjbXAobmFtZSwgInByb2Nlc3NfdGltZSIpID09IDApCisgICAgICAgIG9iaiA9IHB5X3Byb2Nlc3NfdGltZSgmaW5mbyk7CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5rbm93biBjbG9jayIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9ERUNSRUYob2JqKTsKKworICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhc3NlcnQoaW5mby5pbXBsZW1lbnRhdGlvbiAhPSBOVUxMKTsKKyAgICBvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhpbmZvLmltcGxlbWVudGF0aW9uKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJpbXBsZW1lbnRhdGlvbiIsIG9iaikgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfQ0xFQVIob2JqKTsKKworICAgIGFzc2VydChpbmZvLm1vbm90b25pYyAhPSAtMSk7CisgICAgb2JqID0gUHlCb29sX0Zyb21Mb25nKGluZm8ubW9ub3RvbmljKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJtb25vdG9uaWMiLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBhc3NlcnQoaW5mby5hZGp1c3RhYmxlICE9IC0xKTsKKyAgICBvYmogPSBQeUJvb2xfRnJvbUxvbmcoaW5mby5hZGp1c3RhYmxlKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJhZGp1c3RhYmxlIiwgb2JqKSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9DTEVBUihvYmopOworCisgICAgYXNzZXJ0KGluZm8ucmVzb2x1dGlvbiA+IDAuMCk7CisgICAgYXNzZXJ0KGluZm8ucmVzb2x1dGlvbiA8PSAxLjApOworICAgIG9iaiA9IFB5RmxvYXRfRnJvbURvdWJsZShpbmZvLnJlc29sdXRpb24pOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgInJlc29sdXRpb24iLCBvYmopID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworICAgIFB5X0NMRUFSKG9iaik7CisKKyAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoZGljdCk7CisgICAgUHlfREVDUkVGKGRpY3QpOworICAgIHJldHVybiBuczsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGRpY3QpOworICAgIFB5X1hERUNSRUYob2JqKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKGdldF9jbG9ja19pbmZvX2RvYywKKyJnZXRfY2xvY2tfaW5mbyhuYW1lOiBzdHIpIC0+IGRpY3RcblwKK1xuXAorR2V0IGluZm9ybWF0aW9uIG9mIHRoZSBzcGVjaWZpZWQgY2xvY2suIik7CisKIHN0YXRpYyB2b2lkCiBQeUluaXRfdGltZXpvbmUoUHlPYmplY3QgKm0pIHsKICAgICAvKiBUaGlzIGNvZGUgbW92ZWQgZnJvbSBQeUluaXRfdGltZSB3aG9sZXNhbGUgdG8gYWxsb3cgY2FsbGluZyBpdCBmcm9tCkBAIC03OTEsOCArMTI3Nyw4IEBACiAjZW5kaWYgLyogUFlPU19PUzIgKi8KICNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJkYXlsaWdodCIsIGRheWxpZ2h0KTsKLSAgICBvdHowID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUodHpuYW1lWzBdLCBzdHJsZW4odHpuYW1lWzBdKSk7Ci0gICAgb3R6MSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKHR6bmFtZVsxXSwgc3RybGVuKHR6bmFtZVsxXSkpOworICAgIG90ejAgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHR6bmFtZVswXSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgIG90ejEgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHR6bmFtZVsxXSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHpuYW1lIiwgUHlfQnVpbGRWYWx1ZSgiKE5OKSIsIG90ejAsIG90ejEpKTsKICNlbHNlIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCiAjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQpAQCAtODQzLDE0ICsxMzI5LDM4IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIih6eikiLCBfdHpuYW1lWzBdLCBfdHpuYW1lWzFdKSk7CiAjZW5kaWYgLyogX19DWUdXSU5fXyAqLwogI2VuZGlmIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCisKKyNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19SRUFMVElNRSk7CisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX01PTk9UT05JQ19SQVcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUNfUkFXKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX0hJR0hSRVMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19ISUdIUkVTKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEKTsKKyNlbmRpZgorI2VuZGlmIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogfQogCiAKIHN0YXRpYyBQeU1ldGhvZERlZiB0aW1lX21ldGhvZHNbXSA9IHsKICAgICB7InRpbWUiLCAgICAgICAgICAgIHRpbWVfdGltZSwgTUVUSF9OT0FSR1MsIHRpbWVfZG9jfSwKLSNpZmRlZiBIQVZFX0NMT0NLCisjaWZkZWYgUFlDTE9DSwogICAgIHsiY2xvY2siLCAgICAgICAgICAgdGltZV9jbG9jaywgTUVUSF9OT0FSR1MsIGNsb2NrX2RvY30sCiAjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKyAgICB7ImNsb2NrX2dldHRpbWUiLCAgIHRpbWVfY2xvY2tfZ2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXR0aW1lX2RvY30sCisgICAgeyJjbG9ja19zZXR0aW1lIiwgICB0aW1lX2Nsb2NrX3NldHRpbWUsIE1FVEhfVkFSQVJHUywgY2xvY2tfc2V0dGltZV9kb2N9LAorICAgIHsiY2xvY2tfZ2V0cmVzIiwgICAgdGltZV9jbG9ja19nZXRyZXMsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0cmVzX2RvY30sCisjZW5kaWYKICAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfVkFSQVJHUywgc2xlZXBfZG9jfSwKICAgICB7ImdtdGltZSIsICAgICAgICAgIHRpbWVfZ210aW1lLCBNRVRIX1ZBUkFSR1MsIGdtdGltZV9kb2N9LAogICAgIHsibG9jYWx0aW1lIiwgICAgICAgdGltZV9sb2NhbHRpbWUsIE1FVEhfVkFSQVJHUywgbG9jYWx0aW1lX2RvY30sCkBAIC04NjYsNiArMTM3NiwxMiBAQAogI2lmZGVmIEhBVkVfV09SS0lOR19UWlNFVAogICAgIHsidHpzZXQiLCAgICAgICAgICAgdGltZV90enNldCwgTUVUSF9OT0FSR1MsIHR6c2V0X2RvY30sCiAjZW5kaWYKKyNpZmRlZiBQWU1PTk9UT05JQworICAgIHsibW9ub3RvbmljIiwgICAgICAgdGltZV9tb25vdG9uaWMsIE1FVEhfTk9BUkdTLCBtb25vdG9uaWNfZG9jfSwKKyNlbmRpZgorICAgIHsicHJvY2Vzc190aW1lIiwgICAgdGltZV9wcm9jZXNzX3RpbWUsIE1FVEhfTk9BUkdTLCBwcm9jZXNzX3RpbWVfZG9jfSwKKyAgICB7InBlcmZfY291bnRlciIsICAgIHRpbWVfcGVyZl9jb3VudGVyLCBNRVRIX05PQVJHUywgcGVyZl9jb3VudGVyX2RvY30sCisgICAgeyJnZXRfY2xvY2tfaW5mbyIsICB0aW1lX2dldF9jbG9ja19pbmZvLCBNRVRIX1ZBUkFSR1MsIGdldF9jbG9ja19pbmZvX2RvY30sCiAgICAge05VTEwsICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTg4MSw3ICsxMzk3LDcgQEAKIFxuXAogVGhlIG90aGVyIHJlcHJlc2VudGF0aW9uIGlzIGEgdHVwbGUgb2YgOSBpbnRlZ2VycyBnaXZpbmcgbG9jYWwgdGltZS5cblwKIFRoZSB0dXBsZSBpdGVtcyBhcmU6XG5cCi0gIHllYXIgKGZvdXIgZGlnaXRzLCBlLmcuIDE5OTgpXG5cCisgIHllYXIgKGluY2x1ZGluZyBjZW50dXJ5LCBlLmcuIDE5OTgpXG5cCiAgIG1vbnRoICgxLTEyKVxuXAogICBkYXkgKDEtMzEpXG5cCiAgIGhvdXJzICgwLTIzKVxuXApAQCAtOTMzLDQ2ICsxNDQ5LDY1IEBACiBQeUluaXRfdGltZSh2b2lkKQogewogICAgIFB5T2JqZWN0ICptOwotICAgIGNoYXIgKnA7CiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmdGltZW1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAvKiBBY2NlcHQgMi1kaWdpdCBkYXRlcyB1bmxlc3MgUFlUSE9OWTJLIGlzIHNldCBhbmQgbm9uLWVtcHR5ICovCi0gICAgcCA9IFB5X0dFVEVOVigiUFlUSE9OWTJLIik7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgImFjY2VwdDJkeWVhciIsIChsb25nKSAoIXAgfHwgISpwKSk7Ci0gICAgLyogU3F1aXJyZWwgYXdheSB0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBmb3IgdGhlIHkyayBjaGVjayAqLwotICAgIG1vZGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgIFB5X0lOQ1JFRihtb2RkaWN0KTsKLQogICAgIC8qIFNldCwgb3IgcmVzZXQsIG1vZHVsZSB2YXJpYWJsZXMgbGlrZSB0aW1lLnRpbWV6b25lICovCiAgICAgUHlJbml0X3RpbWV6b25lKG0pOwogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIC8qIEhlbHBlciB0byBhbGxvdyBpbnRlcnJ1cHRzIGZvciBXaW5kb3dzLgotICAgICAgIElmIEN0cmwrQyBldmVudCBkZWxpdmVyZWQgd2hpbGUgbm90IHNsZWVwaW5nCi0gICAgICAgaXQgd2lsbCBiZSBpZ25vcmVkLgotICAgICovCi0gICAgbWFpbl90aHJlYWQgPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCk7Ci0gICAgaEludGVycnVwdEV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgVFJVRSwgRkFMU0UsIE5VTEwpOwotICAgIFNldENvbnNvbGVDdHJsSGFuZGxlciggUHlDdHJsSGFuZGxlciwgVFJVRSk7Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmU3RydWN0VGltZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYyk7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgIHdpbnZlci5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKHdpbnZlcik7CisgICAgICAgIGlmICghR2V0VmVyc2lvbkV4KChPU1ZFUlNJT05JTkZPKikmd2ludmVyKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG0pOworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDExKTsKKyNlbHNlCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCA5KTsKKyNlbmRpZgogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3RpbWUiLCAoUHlPYmplY3QqKSAmU3RydWN0VGltZVR5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKICAgICByZXR1cm4gbTsKIH0KIAotc3RhdGljIGRvdWJsZQotZmxvYXR0aW1lKHZvaWQpCitzdGF0aWMgUHlPYmplY3QqCitmbG9hdHRpbWUoX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKICAgICBfUHlUaW1lX3RpbWV2YWwgdDsKLSAgICBfUHlUaW1lX2dldHRpbWVvZmRheSgmdCk7Ci0gICAgcmV0dXJuIChkb3VibGUpdC50dl9zZWMgKyB0LnR2X3VzZWMqMC4wMDAwMDE7CisjaWZkZWYgSEFWRV9DTE9DS19HRVRUSU1FCisgICAgc3RydWN0IHRpbWVzcGVjIHRwOworICAgIGludCByZXQ7CisKKyAgICAvKiBfUHlUaW1lX2dldHRpbWVvZmRheSgpIGRvZXMgbm90IHVzZSBjbG9ja19nZXR0aW1lKCkKKyAgICAgICBiZWNhdXNlIGl0IHdvdWxkIHJlcXVpcmUgdG8gbGluayBQeXRob24gdG8gdGhlIHJ0IChyZWFsLXRpbWUpCisgICAgICAgbGlicmFyeSwgYXQgbGVhc3Qgb24gTGludXggKi8KKyAgICByZXQgPSBjbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHApOworICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICBpZiAoaW5mbykgeworICAgICAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJlczsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUpIjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgICAgIGlmIChjbG9ja19nZXRyZXMoQ0xPQ0tfUkVBTFRJTUUsICZyZXMpID09IDApCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IHJlcy50dl9zZWMgKyByZXMudHZfbnNlYyAqIDFlLTk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh0cC50dl9zZWMgKyB0cC50dl9uc2VjICogMWUtOSk7CisgICAgfQorI2VuZGlmCisgICAgX1B5VGltZV9nZXR0aW1lb2ZkYXlfaW5mbygmdCwgaW5mbyk7CisgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSgoZG91YmxlKXQudHZfc2VjICsgdC50dl91c2VjICogMWUtNik7CiB9CiAKIApAQCAtOTg3LDIzICsxNTIyLDI4IEBACiAjaWYgZGVmaW5lZChIQVZFX1NFTEVDVCkgJiYgIWRlZmluZWQoX19FTVhfXykKICAgICBzdHJ1Y3QgdGltZXZhbCB0OwogICAgIGRvdWJsZSBmcmFjOworICAgIGludCBlcnI7CisKICAgICBmcmFjID0gZm1vZChzZWNzLCAxLjApOwogICAgIHNlY3MgPSBmbG9vcihzZWNzKTsKICAgICB0LnR2X3NlYyA9IChsb25nKXNlY3M7CiAgICAgdC50dl91c2VjID0gKGxvbmcpKGZyYWMqMTAwMDAwMC4wKTsKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgaWYgKHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdCkgIT0gMCkgeworICAgIGVyciA9IHNlbGVjdCgwLCAoZmRfc2V0ICopMCwgKGZkX3NldCAqKTAsIChmZF9zZXQgKikwLCAmdCk7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKyAgICBpZiAoZXJyICE9IDApIHsKICNpZmRlZiBFSU5UUgotICAgICAgICBpZiAoZXJybm8gIT0gRUlOVFIpIHsKLSNlbHNlCi0gICAgICAgIGlmICgxKSB7CisgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgaWYgKFB5RXJyX0NoZWNrU2lnbmFscygpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCiAjZW5kaWYKLSAgICAgICAgICAgIFB5X0JMT0NLX1RIUkVBRFMKKyAgICAgICAgewogICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIFB5X0VORF9BTExPV19USFJFQURTCiAjZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKSAmJiAhZGVmaW5lZChfX1FOWF9fKQogICAgIC8qIFhYWCBDYW4ndCBpbnRlcnJ1cHQgdGhpcyBzbGVlcCAqLwogICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTEwMjQsMTggKzE1NjQsMTQgQEAKICAgICAgICAgICogYnkgR3VpZG8sIG9ubHkgdGhlIG1haW4gdGhyZWFkIGNhbiBiZSBpbnRlcnJ1cHRlZC4KICAgICAgICAgICovCiAgICAgICAgIHVsX21pbGxpcyA9ICh1bnNpZ25lZCBsb25nKW1pbGxpc2VjczsKLSAgICAgICAgaWYgKHVsX21pbGxpcyA9PSAwIHx8Ci0gICAgICAgICAgICBtYWluX3RocmVhZCAhPSBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpCisgICAgICAgIGlmICh1bF9taWxsaXMgPT0gMCB8fCAhX1B5T1NfSXNNYWluVGhyZWFkKCkpCiAgICAgICAgICAgICBTbGVlcCh1bF9taWxsaXMpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIERXT1JEIHJjOworICAgICAgICAgICAgSEFORExFIGhJbnRlcnJ1cHRFdmVudCA9IF9QeU9TX1NpZ2ludEV2ZW50KCk7CiAgICAgICAgICAgICBSZXNldEV2ZW50KGhJbnRlcnJ1cHRFdmVudCk7CiAgICAgICAgICAgICByYyA9IFdhaXRGb3JTaW5nbGVPYmplY3QoaEludGVycnVwdEV2ZW50LCB1bF9taWxsaXMpOwogICAgICAgICAgICAgaWYgKHJjID09IFdBSVRfT0JKRUNUXzApIHsKLSAgICAgICAgICAgICAgICAvKiBZaWVsZCB0byBtYWtlIHN1cmUgcmVhbCBQeXRob24gc2lnbmFsCi0gICAgICAgICAgICAgICAgICogaGFuZGxlciBjYWxsZWQuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgU2xlZXAoMSk7CiAgICAgICAgICAgICAgICAgUHlfQkxPQ0tfVEhSRUFEUwogICAgICAgICAgICAgICAgIGVycm5vID0gRUlOVFI7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX0lPRXJyb3IpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy90a2FwcGluaXQuYyBiL01vZHVsZXMvdGthcHBpbml0LmMKaW5kZXggYzFmOTdiMC4uMmVkODU5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy90a2FwcGluaXQuYworKysgYi9Nb2R1bGVzL3RrYXBwaW5pdC5jCkBAIC0yNiw3ICsyNiw5IEBACiBpbnQKIFRjbF9BcHBJbml0KFRjbF9JbnRlcnAgKmludGVycCkKIHsKKyNpZmRlZiBXSVRIX01PUkVCVVRUT05TCiAgICAgVGtfV2luZG93IG1haW5fd2luZG93OworI2VuZGlmCiAgICAgY29uc3QgY2hhciAqX3RraW50ZXJfc2tpcF90a19pbml0OwogI2lmZGVmIFRLSU5URVJfUFJPVEVDVF9MT0FEVEsKICAgICBjb25zdCBjaGFyICpfdGtpbnRlcl90a19mYWlsZWQ7CkBAIC0xMTEsNyArMTEzLDExIEBACiAgICAgICAgIHJldHVybiBUQ0xfRVJST1I7CiAgICAgfQogCisjaWZkZWYgV0lUSF9NT1JFQlVUVE9OUwogICAgIG1haW5fd2luZG93ID0gVGtfTWFpbldpbmRvdyhpbnRlcnApOworI2Vsc2UKKyAgICBUa19NYWluV2luZG93KGludGVycCk7CisjZW5kaWYKIAogI2lmZGVmIFRLX0FRVUEKICAgICBUa01hY09TWEluaXRBcHBsZUV2ZW50cyhpbnRlcnApOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDUzZTQ4ZGYuLmQzMzlmNTggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTkzLDE2ICs5MywxMyBAQAogCiBzdGF0aWMgUHlfVUNTNCBnZXR1Y2hhcihQeVVuaWNvZGVPYmplY3QgKm9iaikKIHsKLSAgICBQeV9VTklDT0RFICp2ID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKTsKLQotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSA9PSAxKQotICAgICAgICByZXR1cm4gKnY7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGVsc2UgaWYgKChQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSA9PSAyKSAmJgotICAgICAgICAgICAgICgweEQ4MDAgPD0gdlswXSAmJiB2WzBdIDw9IDB4REJGRikgJiYKLSAgICAgICAgICAgICAoMHhEQzAwIDw9IHZbMV0gJiYgdlsxXSA8PSAweERGRkYpKQotICAgICAgICByZXR1cm4gKCgodlswXSAmIDB4M0ZGKTw8MTApIHwgKHZbMV0gJiAweDNGRikpICsgMHgxMDAwMDsKLSNlbmRpZgorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSkKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopID09IDEpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopKQorICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUihvYmosIDApOworICAgIH0KICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAibmVlZCBhIHNpbmdsZSBVbmljb2RlIGNoYXJhY3RlciBhcyBwYXJhbWV0ZXIiKTsKICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CkBAIC00NDMsNyArNDQwLDcgQEAKICAgICAgICBmcm9tIFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5LCBpdCBzaG91bGQgbm90IGJlIHBvc3NpYmxlCiAgICAgICAgdG8gb3ZlcmZsb3cgZGVjb21wX3ByZWZpeC4gKi8KICAgICBwcmVmaXhfaW5kZXggPSBkZWNvbXBfZGF0YVtpbmRleF0gJiAyNTU7Ci0gICAgYXNzZXJ0KHByZWZpeF9pbmRleCA8IChzaXplb2YoZGVjb21wX3ByZWZpeCkvc2l6ZW9mKCpkZWNvbXBfcHJlZml4KSkpOworICAgIGFzc2VydChwcmVmaXhfaW5kZXggPCBQeV9BUlJBWV9MRU5HVEgoZGVjb21wX3ByZWZpeCkpOwogCiAgICAgLyogY29weSBwcmVmaXggKi8KICAgICBpID0gc3RybGVuKGRlY29tcF9wcmVmaXhbcHJlZml4X2luZGV4XSk7CkBAIC00OTgsMzYgKzQ5NSw0NyBAQAogbmZkX25ma2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppbnB1dCwgaW50IGspCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeV9VTklDT0RFICppLCAqZW5kLCAqbzsKKyAgICBQeV9VQ1M0ICpvdXRwdXQ7CisgICAgUHlfc3NpemVfdCBpLCBvLCBvc2l6ZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIC8qIExvbmdlc3QgZGVjb21wb3NpdGlvbiBpbiBVbmljb2RlIDMuMjogVStGREZBICovCi0gICAgUHlfVU5JQ09ERSBzdGFja1syMF07CisgICAgUHlfVUNTNCBzdGFja1syMF07CiAgICAgUHlfc3NpemVfdCBzcGFjZSwgaXNpemU7CiAgICAgaW50IGluZGV4LCBwcmVmaXgsIGNvdW50LCBzdGFja3B0cjsKICAgICB1bnNpZ25lZCBjaGFyIHByZXYsIGN1cjsKIAogICAgIHN0YWNrcHRyID0gMDsKLSAgICBpc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShpbnB1dCk7CisgICAgaXNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CiAgICAgLyogT3ZlcmFsbG9jYXRlIGF0bW9zdCAxMCBjaGFyYWN0ZXJzLiAqLwogICAgIHNwYWNlID0gKGlzaXplID4gMTAgPyAxMCA6IGlzaXplKSArIGlzaXplOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzcGFjZSk7Ci0gICAgaWYgKCFyZXN1bHQpCisgICAgb3NpemUgPSBzcGFjZTsKKyAgICBvdXRwdXQgPSBQeU1lbV9NYWxsb2Moc3BhY2UgKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGkgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpbnB1dCk7Ci0gICAgZW5kID0gaSArIGlzaXplOwotICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIH0KKyAgICBpID0gbyA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaW5wdXQpOwogCi0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgc3RhY2tbc3RhY2twdHIrK10gPSAqaSsrOworICAgIHdoaWxlIChpIDwgaXNpemUpIHsKKyAgICAgICAgc3RhY2tbc3RhY2twdHIrK10gPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKyspOwogICAgICAgICB3aGlsZShzdGFja3B0cikgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjb2RlID0gc3RhY2tbLS1zdGFja3B0cl07CisgICAgICAgICAgICBQeV9VQ1M0IGNvZGUgPSBzdGFja1stLXN0YWNrcHRyXTsKICAgICAgICAgICAgIC8qIEhhbmd1bCBEZWNvbXBvc2l0aW9uIGFkZHMgdGhyZWUgY2hhcmFjdGVycyBpbgogICAgICAgICAgICAgICAgYSBzaW5nbGUgc3RlcCwgc28gd2UgbmVlZCBhdGxlYXN0IHRoYXQgbXVjaCByb29tLiAqLwogICAgICAgICAgICAgaWYgKHNwYWNlIDwgMykgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpICsgMTA7CisgICAgICAgICAgICAgICAgUHlfVUNTNCAqbmV3X291dHB1dDsKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSAxMDsKICAgICAgICAgICAgICAgICBzcGFjZSArPSAxMDsKLSAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBuZXdzaXplKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBuZXdfb3V0cHV0ID0gUHlNZW1fUmVhbGxvYyhvdXRwdXQsIG9zaXplKnNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgICAgICAgICAgaWYgKG5ld19vdXRwdXQgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG91dHB1dCk7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpICsgbmV3c2l6ZSAtIHNwYWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXRwdXQgPSBuZXdfb3V0cHV0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogSGFuZ3VsIERlY29tcG9zaXRpb24uICovCiAgICAgICAgICAgICBpZiAoU0Jhc2UgPD0gY29kZSAmJiBjb2RlIDwgKFNCYXNlK1NDb3VudCkpIHsKQEAgLTUzNSwxMSArNTQzLDExIEBACiAgICAgICAgICAgICAgICAgaW50IEwgPSBMQmFzZSArIFNJbmRleCAvIE5Db3VudDsKICAgICAgICAgICAgICAgICBpbnQgViA9IFZCYXNlICsgKFNJbmRleCAlIE5Db3VudCkgLyBUQ291bnQ7CiAgICAgICAgICAgICAgICAgaW50IFQgPSBUQmFzZSArIFNJbmRleCAlIFRDb3VudDsKLSAgICAgICAgICAgICAgICAqbysrID0gTDsKLSAgICAgICAgICAgICAgICAqbysrID0gVjsKKyAgICAgICAgICAgICAgICBvdXRwdXRbbysrXSA9IEw7CisgICAgICAgICAgICAgICAgb3V0cHV0W28rK10gPSBWOwogICAgICAgICAgICAgICAgIHNwYWNlIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKFQgIT0gVEJhc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgKm8rKyA9IFQ7CisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gVDsKICAgICAgICAgICAgICAgICAgICAgc3BhY2UgLS07CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTU5LDcgKzU2Nyw3IEBACiAgICAgICAgICAgICAvKiBDb3B5IGNoYXJhY3RlciBpZiBpdCBpcyBub3QgZGVjb21wb3NhYmxlLCBvciBoYXMgYQogICAgICAgICAgICAgICAgY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLCBidXQgd2UgZG8gTkZELiAqLwogICAgICAgICAgICAgaWYgKCFjb3VudCB8fCAocHJlZml4ICYmICFrKSkgewotICAgICAgICAgICAgICAgICpvKysgPSBjb2RlOworICAgICAgICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKICAgICAgICAgICAgICAgICBzcGFjZS0tOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtNTcyLDE1ICs1ODAsMjAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8qIERyb3Agb3ZlcmFsbG9jYXRpb24uIENhbm5vdCBmYWlsLiAqLwotICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgUHlVbmljb2RlX0dFVF9TSVpFKHJlc3VsdCkgLSBzcGFjZSk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOworICAgIGlmICghcmVzdWx0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiByZXN1bHQgaXMgZ3VhcmFudGVlZCB0byBiZSByZWFkeSwgYXMgaXQgaXMgY29tcGFjdC4gKi8KKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzdWx0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzdWx0KTsKIAogICAgIC8qIFNvcnQgY2Fub25pY2FsbHkuICovCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOwotICAgIGZvciAoaSsrOyBpIDwgZW5kOyBpKyspIHsKLSAgICAgICAgY3VyID0gX2dldHJlY29yZF9leCgqaSktPmNvbWJpbmluZzsKKyAgICBpID0gMDsKKyAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSktPmNvbWJpbmluZzsKKyAgICBmb3IgKGkrKzsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7IGkrKykgeworICAgICAgICBjdXIgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOwogICAgICAgICBpZiAocHJldiA9PSAwIHx8IGN1ciA9PSAwIHx8IHByZXYgPD0gY3VyKSB7CiAgICAgICAgICAgICBwcmV2ID0gY3VyOwogICAgICAgICAgICAgY29udGludWU7CkBAIC01ODgsMzEgKzYwMSwzMiBAQAogICAgICAgICAvKiBOb24tY2Fub25pY2FsIG9yZGVyLiBOZWVkIHRvIHN3aXRjaCAqaSB3aXRoIHByZXZpb3VzLiAqLwogICAgICAgICBvID0gaSAtIDE7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHRtcCA9IG9bMV07Ci0gICAgICAgICAgICBvWzFdID0gb1swXTsKLSAgICAgICAgICAgIG9bMF0gPSB0bXA7CisgICAgICAgICAgICBQeV9VQ1M0IHRtcCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8rMSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgbysxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIG8pKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBvLCB0bXApOwogICAgICAgICAgICAgby0tOwotICAgICAgICAgICAgaWYgKG8gPCBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpKQorICAgICAgICAgICAgaWYgKG8gPCAwKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKm8pLT5jb21iaW5pbmc7CisgICAgICAgICAgICBwcmV2ID0gX2dldHJlY29yZF9leChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBvKSktPmNvbWJpbmluZzsKICAgICAgICAgICAgIGlmIChwcmV2ID09IDAgfHwgcHJldiA8PSBjdXIpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgcHJldiA9IF9nZXRyZWNvcmRfZXgoKmkpLT5jb21iaW5pbmc7CisgICAgICAgIHByZXYgPSBfZ2V0cmVjb3JkX2V4KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKS0+Y29tYmluaW5nOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgaW50Ci1maW5kX25mY19pbmRleChQeU9iamVjdCAqc2VsZiwgc3RydWN0IHJlaW5kZXgqIG5mYywgUHlfVU5JQ09ERSBjb2RlKQorZmluZF9uZmNfaW5kZXgoUHlPYmplY3QgKnNlbGYsIHN0cnVjdCByZWluZGV4KiBuZmMsIFB5X1VDUzQgY29kZSkKIHsKLSAgICBpbnQgaW5kZXg7CisgICAgdW5zaWduZWQgaW50IGluZGV4OwogICAgIGZvciAoaW5kZXggPSAwOyBuZmNbaW5kZXhdLnN0YXJ0OyBpbmRleCsrKSB7Ci0gICAgICAgIGludCBzdGFydCA9IG5mY1tpbmRleF0uc3RhcnQ7CisgICAgICAgIHVuc2lnbmVkIGludCBzdGFydCA9IG5mY1tpbmRleF0uc3RhcnQ7CiAgICAgICAgIGlmIChjb2RlIDwgc3RhcnQpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGlmIChjb2RlIDw9IHN0YXJ0ICsgbmZjW2luZGV4XS5jb3VudCkgewotICAgICAgICAgICAgaW50IGRlbHRhID0gY29kZSAtIHN0YXJ0OworICAgICAgICAgICAgdW5zaWduZWQgaW50IGRlbHRhID0gY29kZSAtIHN0YXJ0OwogICAgICAgICAgICAgcmV0dXJuIG5mY1tpbmRleF0uaW5kZXggKyBkZWx0YTsKICAgICAgICAgfQogICAgIH0KQEAgLTYyMywyNyArNjM3LDM2IEBACiBuZmNfbmZrYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgaykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKmksICppMSwgKm8sICplbmQ7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0ICpvdXRwdXQ7CisgICAgUHlfc3NpemVfdCBpLCBpMSwgbywgbGVuOwogICAgIGludCBmLGwsaW5kZXgsaW5kZXgxLGNvbWI7Ci0gICAgUHlfVU5JQ09ERSBjb2RlOwotICAgIFB5X1VOSUNPREUgKnNraXBwZWRbMjBdOworICAgIFB5X1VDUzQgY29kZTsKKyAgICBQeV9zc2l6ZV90IHNraXBwZWRbMjBdOwogICAgIGludCBjc2tpcHBlZCA9IDA7CiAKICAgICByZXN1bHQgPSBuZmRfbmZrZChzZWxmLCBpbnB1dCwgayk7CiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJlc3VsdCB3aWxsIGJlICJyZWFkeSIuICovCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlc3VsdCk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzdWx0KTsKIAotICAgIC8qIFdlIGFyZSBnb2luZyB0byBtb2RpZnkgcmVzdWx0IGluLXBsYWNlLgotICAgICAgIElmIG5mZF9uZmtkIGlzIGNoYW5nZWQgdG8gc29tZXRpbWVzIHJldHVybiB0aGUgaW5wdXQsCi0gICAgICAgdGhpcyBjb2RlIG5lZWRzIHRvIGJlIHJldmlld2VkLiAqLwotICAgIGFzc2VydChyZXN1bHQgIT0gaW5wdXQpOwotCi0gICAgaSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgZW5kID0gaSArIFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOwotICAgIG8gPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOworICAgIC8qIFdlIGFsbG9jYXRlIGEgYnVmZmVyIGZvciB0aGUgb3V0cHV0LgorICAgICAgIElmIHdlIGZpbmQgdGhhdCB3ZSBtYWRlIG5vIGNoYW5nZXMsIHdlIHN0aWxsIHJldHVybgorICAgICAgIHRoZSBORkQgcmVzdWx0LiAqLworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgIGlmICghb3V0cHV0KSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaSA9IG8gPSAwOwogCiAgIGFnYWluOgotICAgIHdoaWxlIChpIDwgZW5kKSB7CisgICAgd2hpbGUgKGkgPCBsZW4pIHsKICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IGNza2lwcGVkOyBpbmRleCsrKSB7CiAgICAgICAgICAgaWYgKHNraXBwZWRbaW5kZXhdID09IGkpIHsKICAgICAgICAgICAgICAgLyogKmkgY2hhcmFjdGVyIGlzIHNraXBwZWQuCkBAIC02NTYsMzMgKzY3OSw0MSBAQAogICAgICAgfQogICAgICAgLyogSGFuZ3VsIENvbXBvc2l0aW9uLiBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIGZvciA8TFYsVD4KICAgICAgICAgIHBhaXJzLCBzaW5jZSB3ZSBhbHdheXMgaGF2ZSBkZWNvbXBvc2VkIGRhdGEuICovCi0gICAgICBpZiAoTEJhc2UgPD0gKmkgJiYgKmkgPCAoTEJhc2UrTENvdW50KSAmJgotICAgICAgICAgIGkgKyAxIDwgZW5kICYmCi0gICAgICAgICAgVkJhc2UgPD0gaVsxXSAmJiBpWzFdIDw9IChWQmFzZStWQ291bnQpKSB7CisgICAgICBjb2RlID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICBpZiAoTEJhc2UgPD0gY29kZSAmJiBjb2RlIDwgKExCYXNlK0xDb3VudCkgJiYKKyAgICAgICAgICBpICsgMSA8IGxlbiAmJgorICAgICAgICAgIFZCYXNlIDw9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgJiYKKyAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpIDw9IChWQmFzZStWQ291bnQpKSB7CiAgICAgICAgICAgaW50IExJbmRleCwgVkluZGV4OwotICAgICAgICAgIExJbmRleCA9IGlbMF0gLSBMQmFzZTsKLSAgICAgICAgICBWSW5kZXggPSBpWzFdIC0gVkJhc2U7CisgICAgICAgICAgTEluZGV4ID0gY29kZSAtIExCYXNlOworICAgICAgICAgIFZJbmRleCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkgLSBWQmFzZTsKICAgICAgICAgICBjb2RlID0gU0Jhc2UgKyAoTEluZGV4KlZDb3VudCtWSW5kZXgpKlRDb3VudDsKICAgICAgICAgICBpKz0yOwotICAgICAgICAgIGlmIChpIDwgZW5kICYmCi0gICAgICAgICAgICAgIFRCYXNlIDw9ICppICYmICppIDw9IChUQmFzZStUQ291bnQpKSB7Ci0gICAgICAgICAgICAgIGNvZGUgKz0gKmktVEJhc2U7CisgICAgICAgICAgaWYgKGkgPCBsZW4gJiYKKyAgICAgICAgICAgICAgVEJhc2UgPD0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgJiYKKyAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPD0gKFRCYXNlK1RDb3VudCkpIHsKKyAgICAgICAgICAgICAgY29kZSArPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKS1UQmFzZTsKICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgIH0KLSAgICAgICAgICAqbysrID0gY29kZTsKKyAgICAgICAgICBvdXRwdXRbbysrXSA9IGNvZGU7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAKLSAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsICppKTsKKyAgICAgIC8qIGNvZGUgaXMgc3RpbGwgaW5wdXRbaV0gaGVyZSAqLworICAgICAgZiA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19maXJzdCwgY29kZSk7CiAgICAgICBpZiAoZiA9PSAtMSkgewotICAgICAgICAgICpvKysgPSAqaSsrOworICAgICAgICAgIG91dHB1dFtvKytdID0gY29kZTsKKyAgICAgICAgICBpKys7CiAgICAgICAgICAgY29udGludWU7CiAgICAgICB9CiAgICAgICAvKiBGaW5kIG5leHQgdW5ibG9ja2VkIGNoYXJhY3Rlci4gKi8KICAgICAgIGkxID0gaSsxOwogICAgICAgY29tYiA9IDA7Ci0gICAgICB3aGlsZSAoaTEgPCBlbmQpIHsKLSAgICAgICAgICBpbnQgY29tYjEgPSBfZ2V0cmVjb3JkX2V4KCppMSktPmNvbWJpbmluZzsKKyAgICAgIC8qIG91dHB1dCBiYXNlIGNoYXJhY3RlciBmb3Igbm93OyBtaWdodCBiZSB1cGRhdGVkIGxhdGVyLiAqLworICAgICAgb3V0cHV0W29dID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICB3aGlsZSAoaTEgPCBsZW4pIHsKKyAgICAgICAgICBQeV9VQ1M0IGNvZGUxID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaTEpOworICAgICAgICAgIGludCBjb21iMSA9IF9nZXRyZWNvcmRfZXgoY29kZTEpLT5jb21iaW5pbmc7CiAgICAgICAgICAgaWYgKGNvbWIpIHsKICAgICAgICAgICAgICAgaWYgKGNvbWIxID09IDApCiAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTY5Miw4ICs3MjMsOCBAQAogICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgIH0KICAgICAgICAgICB9Ci0gICAgICAgICAgbCA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19sYXN0LCAqaTEpOwotICAgICAgICAgIC8qICppMSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAqaS4gSWYgKmkxCisgICAgICAgICAgbCA9IGZpbmRfbmZjX2luZGV4KHNlbGYsIG5mY19sYXN0LCBjb2RlMSk7CisgICAgICAgICAgLyogaTEgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggaS4gSWYgaTEKICAgICAgICAgICAgICBpcyBhIHN0YXJ0ZXIsIHdlIGRvbid0IG5lZWQgdG8gbG9vayBmdXJ0aGVyLgogICAgICAgICAgICAgIE90aGVyd2lzZSwgcmVjb3JkIHRoZSBjb21iaW5pbmcgY2xhc3MuICovCiAgICAgICAgICAgaWYgKGwgPT0gLTEpIHsKQEAgLTcxMiwxOSArNzQzLDI4IEBACiAgICAgICAgICAgICAgIGdvdG8gbm90X2NvbWJpbmFibGU7CiAKICAgICAgICAgICAvKiBSZXBsYWNlIHRoZSBvcmlnaW5hbCBjaGFyYWN0ZXIuICovCi0gICAgICAgICAgKmkgPSBjb2RlOworICAgICAgICAgIG91dHB1dFtvXSA9IGNvZGU7CiAgICAgICAgICAgLyogTWFyayB0aGUgc2Vjb25kIGNoYXJhY3RlciB1bnVzZWQuICovCiAgICAgICAgICAgYXNzZXJ0KGNza2lwcGVkIDwgMjApOwogICAgICAgICAgIHNraXBwZWRbY3NraXBwZWQrK10gPSBpMTsKICAgICAgICAgICBpMSsrOwotICAgICAgICAgIGYgPSBmaW5kX25mY19pbmRleChzZWxmLCBuZmNfZmlyc3QsICppKTsKKyAgICAgICAgICBmID0gZmluZF9uZmNfaW5kZXgoc2VsZiwgbmZjX2ZpcnN0LCBvdXRwdXRbb10pOwogICAgICAgICAgIGlmIChmID09IC0xKQogICAgICAgICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgICpvKysgPSAqaSsrOworICAgICAgLyogT3V0cHV0IGNoYXJhY3RlciB3YXMgYWxyZWFkeSB3cml0dGVuLgorICAgICAgICAgSnVzdCBhZHZhbmNlIHRoZSBpbmRpY2VzLiAqLworICAgICAgbysrOyBpKys7CiAgICAgfQotICAgIGlmIChvICE9IGVuZCkKLSAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZSgmcmVzdWx0LCBvIC0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KSk7CisgICAgaWYgKG8gPT0gbGVuKSB7CisgICAgICAgIC8qIE5vIGNoYW5nZXMuIFJldHVybiBvcmlnaW5hbCBzdHJpbmcuICovCisgICAgICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwgbyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTczMiw3ICs3NzIsOSBAQAogc3RhdGljIGludAogaXNfbm9ybWFsaXplZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmlucHV0LCBpbnQgbmZjLCBpbnQgaykKIHsKLSAgICBQeV9VTklDT0RFICppLCAqZW5kOworICAgIFB5X3NzaXplX3QgaSwgbGVuOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgdW5zaWduZWQgY2hhciBwcmV2X2NvbWJpbmluZyA9IDAsIHF1aWNrY2hlY2tfbWFzazsKIAogICAgIC8qIEFuIG9sZGVyIHZlcnNpb24gb2YgdGhlIGRhdGFiYXNlIGlzIHJlcXVlc3RlZCwgcXVpY2tjaGVja3MgbXVzdCBiZQpAQCAtNzQ0LDEwICs3ODYsMTMgQEAKICAgICAgICBhcyBkZXNjcmliZWQgaW4gaHR0cDovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIxNS8jQW5uZXg4LiAqLwogICAgIHF1aWNrY2hlY2tfbWFzayA9IDMgPDwgKChuZmMgPyA0IDogMCkgKyAoayA/IDIgOiAwKSk7CiAKLSAgICBpID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaW5wdXQpOwotICAgIGVuZCA9IGkgKyBQeVVuaWNvZGVfR0VUX1NJWkUoaW5wdXQpOwotICAgIHdoaWxlIChpIDwgZW5kKSB7Ci0gICAgICAgIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgKnJlY29yZCA9IF9nZXRyZWNvcmRfZXgoKmkrKyk7CisgICAgaSA9IDA7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaW5wdXQpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KTsKKyAgICB3aGlsZSAoaSA8IGxlbikgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsrKTsKKyAgICAgICAgY29uc3QgX1B5VW5pY29kZV9EYXRhYmFzZVJlY29yZCAqcmVjb3JkID0gX2dldHJlY29yZF9leChjaCk7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgY29tYmluaW5nID0gcmVjb3JkLT5jb21iaW5pbmc7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgcXVpY2tjaGVjayA9IHJlY29yZC0+bm9ybWFsaXphdGlvbl9xdWlja19jaGVjazsKIApAQCAtNzc2LDcgKzgyMSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtLCAmUHlVbmljb2RlX1R5cGUsICZpbnB1dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9HZXRTaXplKGlucHV0KSA9PSAwKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGlucHV0KSA9PSAwKSB7CiAgICAgICAgIC8qIFNwZWNpYWwgY2FzZSBlbXB0eSBpbnB1dCBzdHJpbmdzLCBzaW5jZSByZXNpemluZwogICAgICAgICAgICB0aGVtICBsYXRlciB3b3VsZCBjYXVzZSBpbnRlcm5hbCBlcnJvcnMuICovCiAgICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7CkBAIC04NzYsMTUgKzkyNCwyNSBAQAogewogICAgIHJldHVybgogICAgICAgICAoMHgzNDAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDREQjUpICAgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQSAqLwotICAgICAgICAoMHg0RTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDlGQ0IpICAgfHwgLyogQ0pLIElkZW9ncmFwaCAqLworICAgICAgICAoMHg0RTAwIDw9IGNvZGUgJiYgY29kZSA8PSAweDlGQ0MpICAgfHwgLyogQ0pLIElkZW9ncmFwaCAqLwogICAgICAgICAoMHgyMDAwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQTZENikgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQiAqLwogICAgICAgICAoMHgyQTcwMCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQjczNCkgfHwgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQyAqLwogICAgICAgICAoMHgyQjc0MCA8PSBjb2RlICYmIGNvZGUgPD0gMHgyQjgxRCk7ICAgLyogQ0pLIElkZW9ncmFwaCBFeHRlbnNpb24gRCAqLwogfQogCisvKiBtYWNyb3MgdXNlZCB0byBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIGNvZGVwb2ludCBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQKKyAqIHdlIGFyZSB1c2luZyB0byBzdG9yZSBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgKi8KKyNkZWZpbmUgSVNfQUxJQVMoY3ApICgoY3AgPj0gYWxpYXNlc19zdGFydCkgJiYgKGNwIDwgYWxpYXNlc19lbmQpKQorI2RlZmluZSBJU19OQU1FRF9TRVEoY3ApICgoY3AgPj0gbmFtZWRfc2VxdWVuY2VzX3N0YXJ0KSAmJiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIChjcCA8IG5hbWVkX3NlcXVlbmNlc19lbmQpKQorCiBzdGF0aWMgaW50Ci1fZ2V0dWNuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeV9VQ1M0IGNvZGUsIGNoYXIqIGJ1ZmZlciwgaW50IGJ1ZmxlbikKK19nZXR1Y25hbWUoUHlPYmplY3QgKnNlbGYsIFB5X1VDUzQgY29kZSwgY2hhciogYnVmZmVyLCBpbnQgYnVmbGVuLAorICAgICAgICAgICBpbnQgd2l0aF9hbGlhc19hbmRfc2VxKQogeworICAgIC8qIEZpbmQgdGhlIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb2RlcG9pbnQuCisgICAgICogSWYgd2l0aF9hbGlhc19hbmRfc2VxIGlzIDEsIGNoZWNrIGZvciBuYW1lcyBpbiB0aGUgUHJpdmF0ZSBVc2UgQXJlYSAxNQorICAgICAqIHRoYXQgd2UgYXJlIHVzaW5nIGZvciBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMuICovCiAgICAgaW50IG9mZnNldDsKICAgICBpbnQgaTsKICAgICBpbnQgd29yZDsKQEAgLTg5Myw4ICs5NTEsMTYgQEAKICAgICBpZiAoY29kZSA+PSAweDExMDAwMCkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICAvKiBYWFggc2hvdWxkIHdlIGp1c3Qgc2tpcCBhbGwgdGhlIGNvZGVwb2ludHMgaW4gdGhlIFBVQXMgaGVyZT8gKi8KKyAgICBpZiAoIXdpdGhfYWxpYXNfYW5kX3NlcSAmJiAoSVNfQUxJQVMoY29kZSkgfHwgSVNfTkFNRURfU0VRKGNvZGUpKSkKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBpZiAoc2VsZiAmJiBVQ0RfQ2hlY2soc2VsZikpIHsKLSAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgY29kZSk7CisgICAgICAgIC8qIGluIDMuMi4wIHRoZXJlIGFyZSBubyBhbGlhc2VzIGFuZCBuYW1lZCBzZXF1ZW5jZXMgKi8KKyAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkOworICAgICAgICBpZiAoSVNfQUxJQVMoY29kZSkgfHwgSVNfTkFNRURfU0VRKGNvZGUpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIG9sZCA9IGdldF9vbGRfcmVjb3JkKHNlbGYsIGNvZGUpOwogICAgICAgICBpZiAob2xkLT5jYXRlZ29yeV9jaGFuZ2VkID09IDApIHsKICAgICAgICAgICAgIC8qIHVuYXNzaWduZWQgKi8KICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtOTc4LDcgKzEwNDQsNyBAQAogICAgIC8qIGNoZWNrIGlmIGNvZGUgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIG5hbWUgKi8KICAgICBpbnQgaTsKICAgICBjaGFyIGJ1ZmZlcltOQU1FX01BWExFTl07Ci0gICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGNvZGUsIGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlcikpKQorICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjb2RlLCBidWZmZXIsIHNpemVvZihidWZmZXIpLCAxKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZm9yIChpID0gMDsgaSA8IG5hbWVsZW47IGkrKykgewogICAgICAgICBpZiAoUHlfVE9VUFBFUihQeV9DSEFSTUFTSyhuYW1lW2ldKSkgIT0gYnVmZmVyW2ldKQpAQCAtOTk0LDcgKzEwNjAsNyBAQAogICAgICpsZW4gPSAtMTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgICBjaGFyICpzID0gaGFuZ3VsX3N5bGxhYmxlc1tpXVtjb2x1bW5dOwotICAgICAgICBsZW4xID0gc3RybGVuKHMpOworICAgICAgICBsZW4xID0gUHlfU0FGRV9ET1dOQ0FTVChzdHJsZW4ocyksIHNpemVfdCwgaW50KTsKICAgICAgICAgaWYgKGxlbjEgPD0gKmxlbikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAoc3RybmNtcChzdHIsIHMsIGxlbjEpID09IDApIHsKQEAgLTEwMDgsOCArMTA3NCwyOCBAQAogfQogCiBzdGF0aWMgaW50Ci1fZ2V0Y29kZShQeU9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUpCitfY2hlY2tfYWxpYXNfYW5kX3NlcSh1bnNpZ25lZCBpbnQgY3AsIFB5X1VDUzQqIGNvZGUsIGludCB3aXRoX25hbWVkX3NlcSkKIHsKKyAgICAvKiBjaGVjayBpZiBuYW1lZCBzZXF1ZW5jZXMgYXJlIGFsbG93ZWQgKi8KKyAgICBpZiAoIXdpdGhfbmFtZWRfc2VxICYmIElTX05BTUVEX1NFUShjcCkpCisgICAgICAgIHJldHVybiAwOworICAgIC8qIGlmIHRoZSBjb2RlcG9pbnQgaXMgaW4gdGhlIFBVQSByYW5nZSB0aGF0IHdlIHVzZSBmb3IgYWxpYXNlcywKKyAgICAgKiBjb252ZXJ0IGl0IHRvIG9idGFpbiB0aGUgcmlnaHQgY29kZXBvaW50ICovCisgICAgaWYgKElTX0FMSUFTKGNwKSkKKyAgICAgICAgKmNvZGUgPSBuYW1lX2FsaWFzZXNbY3AtYWxpYXNlc19zdGFydF07CisgICAgZWxzZQorICAgICAgICAqY29kZSA9IGNwOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitfZ2V0Y29kZShQeU9iamVjdCogc2VsZiwgY29uc3QgY2hhciogbmFtZSwgaW50IG5hbWVsZW4sIFB5X1VDUzQqIGNvZGUsCisgICAgICAgICBpbnQgd2l0aF9uYW1lZF9zZXEpCit7CisgICAgLyogUmV0dXJuIHRoZSBjb2RlcG9pbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBuYW1lLgorICAgICAqIE5hbWVkIGFsaWFzZXMgYXJlIHJlc29sdmVkIHRvbyAodW5sZXNzIHNlbGYgIT0gTlVMTCAoaS5lLiB3ZSBhcmUgdXNpbmcKKyAgICAgKiAzLjIuMCkpLiAgSWYgd2l0aF9uYW1lZF9zZXEgaXMgMSwgcmV0dXJucyB0aGUgUFVBIGNvZGVwb2ludCB0aGF0IHdlIGFyZQorICAgICAqIHVzaW5nIGZvciB0aGUgbmFtZWQgc2VxdWVuY2UsIGFuZCB0aGUgY2FsbGVyIG11c3QgdGhlbiBjb252ZXJ0IGl0LiAqLwogICAgIHVuc2lnbmVkIGludCBoLCB2OwogICAgIHVuc2lnbmVkIGludCBtYXNrID0gY29kZV9zaXplLTE7CiAgICAgdW5zaWduZWQgaW50IGksIGluY3I7CkBAIC0xMDY1LDEwICsxMTUxLDggQEAKICAgICB2ID0gY29kZV9oYXNoW2ldOwogICAgIGlmICghdikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKSB7Ci0gICAgICAgICpjb2RlID0gdjsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkKKyAgICAgICAgcmV0dXJuIF9jaGVja19hbGlhc19hbmRfc2VxKHYsIGNvZGUsIHdpdGhfbmFtZWRfc2VxKTsKICAgICBpbmNyID0gKGggXiAoaCA+PiAzKSkgJiBtYXNrOwogICAgIGlmICghaW5jcikKICAgICAgICAgaW5jciA9IG1hc2s7CkBAIC0xMDc3LDEwICsxMTYxLDggQEAKICAgICAgICAgdiA9IGNvZGVfaGFzaFtpXTsKICAgICAgICAgaWYgKCF2KQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChfY21wbmFtZShzZWxmLCB2LCBuYW1lLCBuYW1lbGVuKSkgewotICAgICAgICAgICAgKmNvZGUgPSB2OwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKF9jbXBuYW1lKHNlbGYsIHYsIG5hbWUsIG5hbWVsZW4pKQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19hbGlhc19hbmRfc2VxKHYsIGNvZGUsIHdpdGhfbmFtZWRfc2VxKTsKICAgICAgICAgaW5jciA9IGluY3IgPDwgMTsKICAgICAgICAgaWYgKGluY3IgPiBtYXNrKQogICAgICAgICAgICAgaW5jciA9IGluY3IgXiBjb2RlX3BvbHk7CkBAIC0xMTE4LDcgKzEyMDAsNyBAQAogICAgIGlmIChjID09IChQeV9VQ1M0KS0xKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICghX2dldHVjbmFtZShzZWxmLCBjLCBuYW1lLCBzaXplb2YobmFtZSkpKSB7CisgICAgaWYgKCFfZ2V0dWNuYW1lKHNlbGYsIGMsIG5hbWUsIHNpemVvZihuYW1lKSwgMCkpIHsKICAgICAgICAgaWYgKGRlZm9iaiA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5vIHN1Y2ggbmFtZSIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTQzLDI4ICsxMjI1LDI2IEBACiB1bmljb2RlZGF0YV9sb29rdXAoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewogICAgIFB5X1VDUzQgY29kZTsKLSAgICBQeV9VTklDT0RFIHN0clsyXTsKIAogICAgIGNoYXIqIG5hbWU7CiAgICAgaW50IG5hbWVsZW47CisgICAgdW5zaWduZWQgaW50IGluZGV4OwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyM6bG9va3VwIiwgJm5hbWUsICZuYW1lbGVuKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIG5hbWVsZW4sICZjb2RlKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICBpZiAoIV9nZXRjb2RlKHNlbGYsIG5hbWUsIG5hbWVsZW4sICZjb2RlLCAxKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfS2V5RXJyb3IsICJ1bmRlZmluZWQgY2hhcmFjdGVyIG5hbWUgJyVzJyIsIG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKGNvZGUgPj0gMHgxMDAwMCkgewotICAgICAgICBzdHJbMF0gPSAweGQ4MDAgKyAoKGNvZGUgLSAweDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgIHN0clsxXSA9IDB4ZGMwMCArICgoY29kZSAtIDB4MTAwMDApICYgMHgzZmYpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHN0ciwgMik7CisgICAgLyogY2hlY2sgaWYgY29kZSBpcyBpbiB0aGUgUFVBIHJhbmdlIHRoYXQgd2UgdXNlIGZvciBuYW1lZCBzZXF1ZW5jZXMKKyAgICAgICBhbmQgY29udmVydCBpdCAqLworICAgIGlmIChJU19OQU1FRF9TRVEoY29kZSkpIHsKKyAgICAgICAgaW5kZXggPSBjb2RlLW5hbWVkX3NlcXVlbmNlc19zdGFydDsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzJCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVkX3NlcXVlbmNlc1tpbmRleF0uc2VxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZF9zZXF1ZW5jZXNbaW5kZXhdLnNlcWxlbik7CiAgICAgfQotI2VuZGlmCi0gICAgc3RyWzBdID0gKFB5X1VOSUNPREUpIGNvZGU7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzdHIsIDEpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY29kZSk7CiB9CiAKIC8qIFhYWCBBZGQgZG9jIHN0cmluZ3MuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggOGUyZTcyNC4uNWQ1ZGNhOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4wLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiNi4xLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMjgsMTIgKzI4LDEyIEBACiAgICAgezI2LCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI4LCAwLCAxMSwgMCwgNCwgMH0sCiAgICAgezMwLCAwLCAxOSwgMCwgMywgMH0sCi0gICAgezMwLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI5LCAwLCAxOSwgMCwgNCwgMTM2fSwKICAgICB7MzAsIDAsIDE5LCAwLCA1LCAwfSwKLSAgICB7MiwgMCwgMSwgMCwgNCwgMTM2fSwKKyAgICB7MTksIDAsIDEsIDAsIDQsIDEzNn0sCiAgICAgezI0LCAwLCAxOSwgMSwgNSwgMH0sCiAgICAgezE0LCAwLCAxNSwgMCwgNCwgMH0sCisgICAgezMwLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezI5LCAwLCAxOSwgMCwgMywgMTM2fSwKICAgICB7MzAsIDAsIDExLCAwLCA0LCAwfSwKICAgICB7MjcsIDAsIDExLCAwLCA0LCAwfSwKQEAgLTQ5LDYgKzQ5LDcgQEAKICAgICB7MiwgMCwgMSwgMCwgNSwgMTB9LAogICAgIHsxLCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MSwgMCwgMSwgMCwgNCwgMTM2fSwKKyAgICB7MiwgMCwgMSwgMCwgNCwgMTM2fSwKICAgICB7MiwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezE5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7MSwgMCwgMSwgMCwgNSwgMTM2fSwKQEAgLTg3LDYgKzg4LDcgQEAKICAgICB7NiwgMCwgMTQsIDAsIDUsIDB9LAogICAgIHsyNiwgMCwgMSwgMCwgNSwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNSwgMH0sCisgICAgezI4LCAwLCAxMSwgMCwgNSwgMH0sCiAgICAgezQsIDIyMCwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMjIsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMjI4LCAxNCwgMCwgNSwgMH0sCkBAIC0xMzQsNiArMTM2LDcgQEAKICAgICB7MTksIDAsIDUsIDAsIDUsIDEzNn0sCiAgICAgezcsIDAsIDksIDAsIDUsIDB9LAogICAgIHszMCwgMCwgNSwgMCwgNSwgMH0sCisgICAgezE0LCAwLCA1LCAwLCA1LCAwfSwKICAgICB7NCwgMzYsIDE0LCAwLCA1LCAwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDB9LAogICAgIHs3LCAwLCA0LCAwLCA1LCAwfSwKQEAgLTE0OCw3ICsxNTEsNiBAQAogICAgIHs0LCA3LCAxNCwgMCwgNSwgMH0sCiAgICAgezUsIDAsIDEsIDAsIDUsIDgwfSwKICAgICB7NSwgMCwgMSwgMCwgNSwgMTB9LAotICAgIHsyOCwgMCwgMTEsIDAsIDUsIDB9LAogICAgIHs5LCAwLCAxLCAwLCA1LCAwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDgwfSwKICAgICB7NCwgMCwgMTQsIDAsIDUsIDEwfSwKQEAgLTE3NSw3ICsxNzcsNiBAQAogICAgIHsxOSwgMCwgMSwgMCwgNSwgODB9LAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDB9LAogICAgIHs4LCAwLCAxLCAwLCA1LCAwfSwKLSAgICB7MTQsIDAsIDEsIDAsIDUsIDB9LAogICAgIHs1LCA5LCAxLCAwLCA1LCAwfSwKICAgICB7NCwgMSwgMTQsIDAsIDUsIDB9LAogICAgIHs0LCAyMzQsIDE0LCAwLCA1LCAwfSwKQEAgLTE5MCw2ICsxOTEsNyBAQAogICAgIHsxMCwgMCwgMTgsIDAsIDUsIDE3MH0sCiAgICAgezEwLCAwLCAxOCwgMCwgNSwgMTM2fSwKICAgICB7MTQsIDAsIDE1LCAwLCA1LCAwfSwKKyAgICB7MTQsIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxNCwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNCwgMH0sCiAgICAgezIxLCAwLCAxOSwgMCwgNSwgMTM2fSwKQEAgLTI1Niw3ICsyNTgsNyBAQAogICAgIHs0LCAyMjgsIDE0LCAwLCAyLCAwfSwKICAgICB7NCwgMjMyLCAxNCwgMCwgMiwgMH0sCiAgICAgezQsIDIyMiwgMTQsIDAsIDIsIDB9LAotICAgIHs0LCAyMjQsIDE0LCAwLCAyLCAwfSwKKyAgICB7NSwgMjI0LCAxLCAwLCAyLCAwfSwKICAgICB7OCwgMCwgMSwgMCwgMiwgMTM2fSwKICAgICB7MTksIDAsIDEsIDAsIDIsIDEwfSwKICAgICB7NCwgOCwgMTQsIDAsIDIsIDgwfSwKQEAgLTI2Niw3ICsyNjgsNyBAQAogICAgIHszMCwgMCwgMSwgMCwgMiwgMH0sCiAgICAgezksIDAsIDEsIDAsIDIsIDEzNn0sCiAgICAgezMwLCAwLCAxLCAwLCAyLCAxMzZ9LAotICAgIHszMCwgMCwgMSwgMCwgNCwgMH0sCisgICAgezksIDAsIDEsIDAsIDQsIDB9LAogICAgIHs5LCAwLCAxOSwgMCwgMiwgMTM2fSwKICAgICB7MjksIDAsIDEsIDAsIDUsIDB9LAogICAgIHsxNSwgMCwgMSwgMCwgNSwgMH0sCkBAIC0zMjUsMTEgKzMyNywxMiBAQAogICAgIHsyNywgMCwgMSwgMCwgNSwgMTM2fSwKICAgICB7NywgMCwgOSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDUsIDEzNn0sCisgICAgezMwLCAwLCAxLCAwLCA0LCAwfSwKIH07CiAKIC8qIFJlaW5kZXhpbmcgb2YgTkZDIGZpcnN0IGNoYXJhY3RlcnMuICovCi0jZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MAotI2RlZmluZSBUT1RBTF9MQVNUIDU1CisjZGVmaW5lIFRPVEFMX0ZJUlNUIDM3MgorI2RlZmluZSBUT1RBTF9MQVNUIDU2CiBzdHJ1Y3QgcmVpbmRleHtpbnQgc3RhcnQ7c2hvcnQgY291bnQsaW5kZXg7fTsKIHN0YXRpYyBzdHJ1Y3QgcmVpbmRleCBuZmNfZmlyc3RbXSA9IHsKICAgeyA2MCwgMiwgMH0sCkBAIC01MzgsNiArNTQxLDcgQEAKICAgeyA2OTc4NSwgMCwgMzY3fSwKICAgeyA2OTc4NywgMCwgMzY4fSwKICAgeyA2OTc5NywgMCwgMzY5fSwKKyAgeyA2OTkzNywgMSwgMzcwfSwKICAgezAsMCwwfQogfTsKIApAQCAtNTc0LDYgKzU3OCw3IEBACiAgIHsgNjk2NSwgMCwgNTF9LAogICB7IDEyNDQxLCAxLCA1Mn0sCiAgIHsgNjk4MTgsIDAsIDU0fSwKKyAgeyA2OTkyNywgMCwgNTV9LAogICB7MCwwLDB9CiB9OwogCkBAIC02NzEsNTE1ICs2NzYsNTE1IEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCiAgICAgMzksIDQwLCA0MSwgNDEsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgCiAgICAgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgCi0gICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMTcsIDg0LCA4NSwgODYsIDg3LCA4OCwgCi0gICAgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDEsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAyLCAKLSAgICAxMDMsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDQsIDQxLCA0MSwgMTA1LCAxMDYsIDEwNywgCi0gICAgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAotICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKLSAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCi0gICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE4LCAxMTksIAotICAgIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAxMTksIDExOSwgMTE5LCAKLSAgICAxMTksIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCisgICAgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgCisgICAgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAyLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMywgMTA0LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTA1LCA0MSwgNDEsIDEwNiwgMTA3LCAKKyAgICAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOSwgCiAgICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjEsIDEyMSwgMTIyLCAxMjMsIDEyNCwgCi0gICAgMTI1LCAxMjYsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxNywgMTM3LCAKLSAgICAxMzgsIDEzOSwgMTQwLCAxNDEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE0MiwgMTcsIDE0MywgMTcsIDE0NCwgMTcsIAotICAgIDE0NSwgMTcsIDE0NiwgMTcsIDE3LCAxNywgMTQ3LCAxNywgMTcsIDE3LCAxNDgsIDE0OSwgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTUwLCAxNywgMTUxLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTUyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNDEsIDQxLCA0MSwgNDEsIDE1MywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE1NCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNzgsIAotICAgIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTcsIDE1OSwgMTcsIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgCi0gICAgMTcsIDE3MywgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIDE3OSwgMTgwLCAxODEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAKLSAgICAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTgyLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgCi0gICAgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIAotICAgIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTAwLCAxMDAsIDEwMCwgMTgzLCAxMDAsIDE4NCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEyMSwgCi0gICAgMTIxLCAxMjEsIDEyMSwgMTg1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxODYsIDE3LCAxODcsIAotICAgIDE4OCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTg5LCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAKLSAgICAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgCi0gICAgMTIwLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDE4OSwgCisgICAgMTIwLCAxMjAsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjIsIDEyMiwgMTIzLCAxMjQsIAorICAgIDEyNSwgMTI2LCAxMjcsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCA4NCwgCisgICAgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE0MywgODQsIDE0NCwgMTQ1LCAxNDYsIAorICAgIDg0LCAxNDcsIDg0LCAxNDgsIDg0LCA4NCwgODQsIDE0OSwgODQsIDg0LCA4NCwgMTUwLCAxNTEsIDE1MiwgMTUzLCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxNTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NSwgODQsIDE1NiwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDE1NywgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDQxLCA0MSwgNDEsIDQxLCAxNTgsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDE1OSwgMTYwLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE2MSwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAKKyAgICA4NCwgNzgsIDE2MiwgMTYzLCAxNjQsIDE2NSwgODQsIDE2NiwgODQsIDE2NywgMTY4LCAxNjksIDE3MCwgMTcxLCAxNzIsIAorICAgIDE3MywgMTc0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDE3NSwgMTc2LCA4NCwgODQsIDE3NywgMTc4LCAxNzksIAorICAgIDE4MCwgMTgxLCA4NCwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxOTIsIAorICAgIDEwMSwgMTkzLCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgMTIyLCAxMjIsIDEyMiwgMTIyLCAxOTQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIAorICAgIDE5NSwgODQsIDE5NiwgMTk3LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCisgICAgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxOTgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAorICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKKyAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTk4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBpbmRleDJbXSA9IHsKQEAgLTExOTEsMTQwMSArMTE5NiwxNDY0IEBACiAgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCiAgICAgMjAsIDIwLCA5LCAxNiwgMTAsIDE2LCAxLCAxLCAxLCAxLCAxLCAxLCAzLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAyMSwgMjIsIDgsIDgsIDIzLCA4LCAyNCwgCi0gICAgMjUsIDI2LCAyNywgMjgsIDI5LCAxNiwgMzAsIDI1LCAzMSwgMzIsIDMzLCAzNCwgMzQsIDI2LCAzNSwgMjUsIDIyLCAyNiwgCi0gICAgMzQsIDI4LCAzNiwgMzcsIDM3LCAzNywgMjIsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMjIsIDI1LCAyNiwgMjcsIDI4LCAxNiwgMjksIDMwLCAzMSwgMzIsIDMzLCAzNCwgMzQsIDI1LCAzNSwgMjIsIDIyLCAyNSwgCisgICAgMzQsIDI3LCAzNiwgMzcsIDM3LCAzNywgMjIsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCiAgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOSwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDAsIDM5LCAzOCwgMzgsIDM4LCAzOCwgCiAgICAgMzgsIDM5LCA0MSwgNDIsIDQyLCA0MywgNDMsIDQzLCA0MywgNDEsIDQzLCA0MiwgNDIsIDQyLCA0MywgNDIsIDQyLCA0MywgCiAgICAgNDMsIDQxLCA0MywgNDIsIDQyLCA0MywgNDMsIDQzLCA0MCwgNDEsIDQyLCA0MiwgNDMsIDQyLCA0MywgNDEsIDQzLCAzOCwgCiAgICAgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQxLCAzOCwgCiAgICAgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MiwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDEsIDQ1LCAyOCwgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NSwgMjgsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MiwgCi0gICAgMjgsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM5LCA0MSwgMzgsIDQzLCAzOCwgNDIsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDEsIDQ1LCA0NiwgMzgsIDQzLCAzOCwgCisgICAgNDMsIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NSwgNDYsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MiwgCisgICAgNDYsIDM5LCA0MSwgMzgsIDQyLCAzOCwgNDMsIDM4LCA0MywgMzksIDQxLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOSwgNDEsIDM4LCA0MywgMzgsIDQyLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzUsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ2LCA0NiwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ2LCA0NCwgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgNDQsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDQsIDQ2LCA0NiwgNDcsIDQ0LCA0NiwgNDYsIDQ2LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ5LCAzNSwgCi0gICAgNDgsIDQ5LCAzNSwgNDgsIDQ5LCAzNSwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgCi0gICAgMzgsIDQyLCAzOCwgNDIsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDgsIDQ5LCAzNSwgMzgsIDQzLCA0NCwgNDQsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgMzUsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgMzgsIDQzLCA0NCwgNDQsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NywgNDgsIDQ0LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDksIDUwLCAzNSwgCisgICAgNDksIDUwLCAzNSwgNDksIDUwLCAzNSwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgMzgsIDQyLCAzOCwgNDIsIDM4LCA0MiwgCisgICAgMzgsIDQyLCAzOCwgNDIsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCA0MywgNDksIDUwLCAzNSwgMzgsIDQzLCA0NCwgNDQsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgCi0gICAgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ0LCA0NCwgNDYsIDQ0LCA0NCwgNDYsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDEsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQxLCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ3LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MSwgNTEsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MywgCi0gICAgNTMsIDU0LCA1MywgNTEsIDU1LCA1MSwgNTUsIDU1LCA1NSwgNTEsIDU1LCA1MSwgNTEsIDU2LCA1MiwgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgMjYsIDI2LCAyNiwgMjYsIDU3LCAyNiwgNTMsIDU0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MSwgNTMsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgCi0gICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDU4LCA1OCwgNTgsIDU4LCA1OCwgNTksIDU4LCA1OCwgNTgsIDU4LCA1OCwgCi0gICAgNTgsIDU4LCA1OSwgNTksIDU4LCA1OSwgNTgsIDU5LCA1OCwgNTgsIDYwLCA2MSwgNjEsIDYxLCA2MSwgNjAsIDYyLCA2MSwgCi0gICAgNjEsIDYxLCA2MSwgNjEsIDYzLCA2MywgNjQsIDY0LCA2NCwgNjQsIDY1LCA2NSwgNjEsIDYxLCA2MSwgNjEsIDY0LCA2NCwgCi0gICAgNjEsIDY0LCA2NCwgNjEsIDYxLCA2NiwgNjYsIDY2LCA2NiwgNjcsIDYxLCA2MSwgNjEsIDYxLCA1OSwgNTksIDU5LCA2OCwgCi0gICAgNjgsIDU4LCA2OCwgNjgsIDY5LCA1OSwgNjEsIDYxLCA2MSwgNTksIDU5LCA1OSwgNjEsIDYxLCA3MCwgNTksIDU5LCA1OSwgCi0gICAgNjEsIDYxLCA2MSwgNjEsIDU5LCA2MCwgNjEsIDYxLCA1OSwgNzEsIDcyLCA3MiwgNzEsIDcyLCA3MiwgNzEsIDU5LCA1OSwgCi0gICAgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA1OSwgNTksIDU5LCA0NCwgNDYsIDQ0LCA0NiwgNzMsIDUzLCA0NCwgCi0gICAgNDYsIDAsIDAsIDUwLCA0NiwgNDYsIDQ2LCA3NCwgMCwgMCwgMCwgMCwgMCwgNTcsIDc1LCAzOCwgNzQsIDM4LCAzOCwgMzgsIAorICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAorICAgIDQzLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgNDQsIDQ3LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQxLCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTIsIDUyLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTQsIAorICAgIDU0LCA1NSwgNTQsIDUyLCA1NiwgNTIsIDU2LCA1NiwgNTYsIDUyLCA1NiwgNTIsIDUyLCA1NywgNTMsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDI1LCAyNSwgMjUsIDI1LCA1OCwgMjUsIDU0LCA1NSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTIsIDU0LCA1MywgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAorICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1OSwgNTksIDU5LCA1OSwgNTksIDYwLCA1OSwgNTksIDU5LCA1OSwgNTksIAorICAgIDU5LCA1OSwgNjAsIDYwLCA1OSwgNjAsIDU5LCA2MCwgNTksIDU5LCA2MSwgNjIsIDYyLCA2MiwgNjIsIDYxLCA2MywgNjIsIAorICAgIDYyLCA2MiwgNjIsIDYyLCA2NCwgNjQsIDY1LCA2NSwgNjUsIDY1LCA2NiwgNjYsIDYyLCA2MiwgNjIsIDYyLCA2NSwgNjUsIAorICAgIDYyLCA2NSwgNjUsIDYyLCA2MiwgNjcsIDY3LCA2NywgNjcsIDY4LCA2MiwgNjIsIDYyLCA2MiwgNjAsIDYwLCA2MCwgNjksIAorICAgIDY5LCA1OSwgNjksIDY5LCA3MCwgNjAsIDYyLCA2MiwgNjIsIDYwLCA2MCwgNjAsIDYyLCA2MiwgNzEsIDYwLCA2MCwgNjAsIAorICAgIDYyLCA2MiwgNjIsIDYyLCA2MCwgNjEsIDYyLCA2MiwgNjAsIDcyLCA3MywgNzMsIDcyLCA3MywgNzMsIDcyLCA2MCwgNjAsIAorICAgIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNjAsIDYwLCA2MCwgNDQsIDQ3LCA0NCwgNDcsIDc0LCA1NCwgNDQsIAorICAgIDQ3LCAwLCAwLCA1MSwgNDcsIDQ3LCA0NywgNzUsIDAsIDAsIDAsIDAsIDAsIDU4LCA3NiwgMzgsIDc1LCAzOCwgMzgsIDM4LCAKICAgICAwLCAzOCwgMCwgMzgsIDM4LCA0MywgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIAogICAgIDM5LCAzOSwgMzksIDM5LCAwLCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCiAgICAgNDMsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCi0gICAgNDYsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQ0LCAzNSwgMzUsIDQ4LCA3NiwgCi0gICAgNzYsIDM1LCAzNSwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDM1LCAzNSwgMzUsIDQ2LCA0OCwgMzUsIDc3LCA0NCwgCi0gICAgNDYsIDQ4LCA0NCwgNDYsIDQ2LCA0NCwgNDQsIDQ0LCAzOCwgNzgsIDQ0LCAzOCwgNDQsIDQ0LCA0NCwgMzgsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCAzOCwgMzgsIDM4LCA0NCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgNzgsIDM5LCAzOSwgCisgICAgNDcsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MywgNDMsIDQzLCA0MywgNDMsIDQ0LCAzNSwgMzUsIDQ5LCA3NywgCisgICAgNzcsIDM1LCAzNSwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDM1LCAzNSwgMzUsIDQ3LCA0OSwgMzUsIDc4LCA0NCwgCisgICAgNDcsIDQ5LCA0NCwgNDcsIDQ3LCA0NCwgNDQsIDQ0LCAzOCwgNzksIDQ0LCAzOCwgNDQsIDQ0LCA0NCwgMzgsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCAzOCwgMzgsIDM4LCA0NCwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgNzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgMzksIDM5LCAzOSwgCiAgICAgMzksIDM5LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MiwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgCiAgICAgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQzLCA0MiwgCi0gICAgNDYsIDQzLCA0NiwgNDYsIDQ2LCA0MywgNDYsIDQ2LCA0NiwgNDYsIDQzLCA0MywgNDMsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNzksIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODEsIDgxLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NiwgCi0gICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCi0gICAgMzgsIDQzLCA0NCwgNDYsIDM4LCA0MywgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDAsIDAsIDAsIAorICAgIDQ3LCA0MywgNDcsIDQ3LCA0NywgNDMsIDQ3LCA0NywgNDcsIDQ3LCA0MywgNDMsIDQzLCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDgwLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgyLCA4MiwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDM4LCA0MywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIAorICAgIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQ0LCA0NywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIAorICAgIDM4LCA0MywgNDQsIDQ3LCAzOCwgNDMsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAogICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDUyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDM1LCAKLSAgICAwLCA4MiwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCA4MCwgODAsIDg1LCA4NCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgODAsIDgwLCA4NCwgODAsIDgwLCA4NSwgCi0gICAgODYsIDgwLCA4NywgODgsIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAKLSAgICAxMDIsIDEwMywgMTA0LCAxMDIsIDgwLCA4NCwgMTAyLCA5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTAyLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMTA2LCAxMDYsIAotICAgIDEwNiwgMCwgMCwgNzcsIDc3LCAxMDcsIDEwOCwgMTA4LCAxMDksIDExMCwgMTExLCAyNywgMjcsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgMTEyLCAxMTMsIDExNCwgMTExLCAwLCAwLCAxMTEsIDExMSwgMTE1LCAxMTUsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNywgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTgsIDExOSwgMTIwLCAKLSAgICAxMTIsIDExMywgMTE0LCAxMjEsIDEyMiwgMTIzLCAxMjMsIDEyNCwgODQsIDgwLCA4MCwgODAsIDgwLCA4MCwgODQsIDgwLCAKLSAgICA4MCwgODQsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTA4LCAxMjYsIDEyNiwgCi0gICAgMTExLCAxMTUsIDExNSwgMTI3LCAxMTUsIDExNSwgMTE1LCAxMTUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNiwgCi0gICAgMTE1LCAxMTYsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE2LCAxMTEsIDExNSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEwNiwgMjcsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDExNywgMTE3LCA4MCwgODAsIDI3LCA4NCwgODAsIDgwLCA4NCwgMTE1LCAxMTUsIAotICAgIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTI5LCAxMjksIDEyOSwgMTE1LCAxMTUsIDExNSwgMTMwLCAKLSAgICAxMzAsIDExNSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgMTExLCAxMTEsIDExMSwgCi0gICAgMTExLCAxMTEsIDAsIDEwNiwgMTE1LCAxMzEsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDgwLCA4NCwgODAsIDgwLCA4NCwgODAsIDgwLCA4NCwgODQsIAotICAgIDg0LCA4MCwgODQsIDg0LCA4MCwgODQsIDgwLCA4MCwgODAsIDg0LCA4MCwgODQsIDgwLCA4NCwgODAsIDg0LCA4MCwgODAsIAotICAgIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDEzMiwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODAsIDEzNCwgMTM0LCAyNywgMTM1LCAxMzUsIDEzNSwgMTM0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDgwLCA4MCwgODAsIDgwLCAxMzQsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNCwgODAsIDgwLCA4MCwgMTM0LCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgODQsIDg0LCA4NCwgCi0gICAgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA1MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDEzNywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAxMzIsIDEzNiwgMTM4LCA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM5LCAxMzYsIDEzNiwgNDcsIDgwLCA4NCwgODAsIDgwLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgMTQwLCAxNDAsIDE0MCwgNDcsIDQ3LCAxMzIsIDEzMiwgCi0gICAgODIsIDgyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA1MiwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDEzMiwgMTM2LCAxMzYsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgCi0gICAgMTQzLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAwLCAxMzYsIDEzNiwgMCwgMCwgMTQ0LCAxNDQsIDEzOSwgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDAsIDE0MCwgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA0NywgNDcsIAotICAgIDE0NSwgMTQ1LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCA3OSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgCi0gICAgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDE0MCwgMCwgNDcsIDE0MCwgMCwgNDcsIDQ3LCAwLCAwLCAKLSAgICAxNDIsIDAsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAxMzIsIDEzMiwgMCwgMCwgMTMyLCAxMzIsIAotICAgIDEzOSwgMCwgMCwgMCwgMTMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAsIDE0MCwgMTQwLCA0NywgMCwgMTQwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDEzMiwgCi0gICAgMTMyLCA0NywgNDcsIDQ3LCAxMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMyLCAxMzYsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MiwgCi0gICAgNDcsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAwLCAxMzIsIDEzMiwgMTM2LCAwLCAxMzYsIAotICAgIDEzNiwgMTM5LCAwLCAwLCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAxNDUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTM2LCAxMzYsIDAsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxNDIsIDQ3LCAxNDMsIAotICAgIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDAsIDEzNiwgMTQ0LCAwLCAwLCAxNDQsIDE0NCwgMTM5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDcsIDE0MywgMCwgMCwgMCwgMCwgMTQwLCAxNDAsIDAsIDQ3LCA0NywgNDcsIDEzMiwgCi0gICAgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDc5LCA0NywgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCA0NywgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCAxMzcsIDQ3LCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDAsIDQ3LCAwLCA0NywgNDcsIDAsIDAsIDAsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMTQzLCAxMzYsIDEzMiwgCi0gICAgMTM2LCAxMzYsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDAsIDE0NCwgMTQ0LCAxNDQsIDEzOSwgMCwgMCwgNDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDYsIDE0NiwgMTQ2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAxNDUsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMCwgMTMyLCAxMzIsIDE0OCwgMCwgMTMyLCAxMzIsIDEzMiwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDksIDE1MCwgMCwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgNzksIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMTQyLCA0NywgMTM2LCAxNTIsIDE0NCwgMTM2LCAKLSAgICAxNDMsIDEzNiwgMTM2LCAwLCAxNTIsIDE0NCwgMTQ0LCAwLCAxNDQsIDE0NCwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE0MywgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgNDcsIDQ3LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMCwgMTM2LCAxMzYsIDEzNiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDEzMiwgMTMyLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIAotICAgIDc5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAxMzYsIDEzNiwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAxNTMsIDAsIDAsIDAsIDAsIDE0MywgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIAotICAgIDAsIDEzMiwgMCwgMTM2LCAxMzYsIDE0NCwgMTM2LCAxNDQsIDE0NCwgMTQ0LCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCA0NywgMTU0LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDE1NSwgMTU1LCAxMzksIDAsIDAsIDAsIDAsIDE0NSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNTIsIDEzMiwgMTU2LCAxNTYsIDE1NiwgMTU2LCAxMzIsIDEzMiwgMTMyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMzUsIAorICAgIDAsIDgzLCA4NCwgMCwgMCwgMCwgMCwgODUsIDAsIDg2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgODEsIDg3LCA4NiwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4NywgCisgICAgODgsIDgxLCA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAKKyAgICAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNCwgODEsIDg2LCAxMDQsIDk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMDcsIDEwNywgMTA3LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDAsIDc4LCA3OCwgMTA5LCAxMTAsIDExMCwgMTExLCAxMTIsIDExMywgMjYsIDI2LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDExNCwgMTE1LCAxMTYsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExNywgMTE3LCAKKyAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTksIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTIwLCAKKyAgICAxMjEsIDEyMiwgMTE0LCAxMTUsIDExNiwgMTIzLCAxMjQsIDEyNSwgMTI1LCAxMjYsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDg2LCA4MSwgODEsIDg2LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDExMCwgCisgICAgMTI4LCAxMjgsIDExMywgMTE3LCAxMTcsIDEyOSwgMTE3LCAxMTcsIDExNywgMTE3LCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTgsIDExNywgMTE4LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExOCwgMTEzLCAxMTcsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMDgsIDI2LCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMTksIDExOSwgODEsIDgxLCAyNiwgODYsIDgxLCA4MSwgODYsIAorICAgIDExNywgMTE3LCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDExNywgMTE3LCAKKyAgICAxMTcsIDEzMiwgMTMyLCAxMTcsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMzMsIDExNywgMTM0LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgCisgICAgODYsIDg2LCA4NiwgODEsIDg2LCA4NiwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODEsIDg2LCA4MSwgODYsIDgxLCA4NiwgCisgICAgODEsIDgxLCAwLCAwLCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAKKyAgICAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgCisgICAgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDExNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM2LCAKKyAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCAxMzcsIDEzNywgMjYsIDEzOCwgMTM4LCAxMzgsIDEzNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCA4MSwgODEsIDgxLCA4MSwgMTM3LCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMzcsIDgxLCA4MSwgODEsIDEzNywgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAKKyAgICAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgCisgICAgMTA0LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDg2LCA4NiwgODYsIAorICAgIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDQ3LCAwLCA0NywgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDQ3LCAKLSAgICAwLCAwLCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAxMzIsIDQ3LCAxNTQsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTU3LCAKLSAgICAxNTcsIDAsIDEzMiwgMTMyLCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA1MiwgMCwgMTU4LCAxNTgsIDE1OCwgCi0gICAgMTU4LCAxMzIsIDEzMiwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAKLSAgICAwLCAxNTQsIDE1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDc5LCA3OSwgNzksIDgyLCA4MiwgODIsIDgyLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgMTU5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgNzksIDg0LCA4NCwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDc5LCA4NCwgNzksIDg0LCA3OSwgCi0gICAgMTYwLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgMTQwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgMTQwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDAsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY1LCAxNjUsIDE2NywgMTY1LCAxNjcsIDE2NCwgMTY0LCAKLSAgICAxNjQsIDE2NCwgMTMyLCAxMzYsIDE2NCwgMTY1LCA4MCwgODAsIDEzOSwgODIsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMCwgMTMyLCAxMzIsIAotICAgIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTY1LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDE2NSwgMTMyLCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxNjUsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzIsIDE2NSwgMTMyLCAxMzIsIDEzMiwgMCwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgNzksIDc5LCA4MiwgODIsIDgyLCA4MiwgODIsIDc5LCA3OSwgNzksIDc5LCA4MiwgCi0gICAgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTQ3LCAxMzIsIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTQyLCAxMzYsIDEzOSwgCi0gICAgMTM5LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDQ3LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzYsIAotICAgIDEzNiwgMTM2LCAxMzYsIDg0LCA0NywgMTM2LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDEzNiwgMTM2LCAxMzYsIDEzMiwgNzksIDc5LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE3LCAwLCAxMTcsIAorICAgIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMTE3LCAxMTcsIDExNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIAorICAgIDgxLCA4NiwgODEsIDgxLCA4NiwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgMTIwLCAxMjEsIDEyMiwgODEsIDgxLCA4MSwgCisgICAgODYsIDgxLCA4MSwgODYsIDg2LCA4MSwgODEsIDgxLCA4MSwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgCisgICAgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxNDMsIDE0MywgCisgICAgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAxMzksIDEzOSwgMCwgMCwgMTQ3LCAxNDcsIDE0MiwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDg1LCA4NSwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgODAsIDg1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDE0MywgMCwgNDgsIDE0MywgMCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDAsIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMCwgMCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMTM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNDMsIDE0MywgMTQzLCA0OCwgMCwgMTQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCAxMzUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM5LCAwLCAxMzksIDEzOSwgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgCisgICAgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgCisgICAgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgCisgICAgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIAorICAgIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgMCwgCisgICAgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDE1NCwgMTQ3LCAxMzksIDE0NiwgMTM5LCAxMzksIDAsIDE1NCwgMTQ3LCAxNDcsIAorICAgIDAsIDE0NywgMTQ3LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAKKyAgICAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAKKyAgICAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDAsIDAsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDE1NSwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM1LCAwLCAxMzksIDEzOSwgMTQ3LCAKKyAgICAxMzksIDE0NywgMTQ3LCAxNDcsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU3LCAKKyAgICAxNTcsIDE0MiwgMCwgMCwgMCwgMCwgODUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzUsIDE1OCwgMTU4LCAxNTgsIAorICAgIDE1OCwgMTM1LCAxMzUsIDEzNSwgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDAsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgNDgsIDE1NiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNTksIDE1OSwgMCwgMTM1LCAxMzUsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDUzLCAwLCAxNjAsIDE2MCwgMTYwLCAxNjAsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDE1NiwgMTU2LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA4MCwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE2MSwgODMsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgzLCA4MCwgODAsIDgwLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODYsIDgwLCA4NiwgODAsIDE2MiwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQzLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAxNjUsIAorICAgIDE2NiwgMTY3LCAxNjgsIDE2NywgMTY3LCAxNjksIDE2NywgMTY5LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDEzNSwgMTM5LCAKKyAgICAxNjYsIDE2NywgODEsIDgxLCAxNDIsIDgzLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDE0OSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTM5LCAxNDIsIDE0MiwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA4MywgODMsIDgzLCAKKyAgICA4MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA0OCwgMTM5LCAxMzksIDEzOSwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA4NiwgNDgsIDEzOSwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzUsIDgwLCA4MCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKICAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCA1MCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgNDcsIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjksIDE2OSwgMTY5LCAxNjksIAotICAgIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAKLSAgICAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCAxNjksIDE2OSwgMTY5LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCAwLCA4MCwgODAsIDgwLCA3OSwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgODMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE2MSwgCi0gICAgMTYyLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MiwgODIsIDgyLCAxNzEsIDE3MSwgMTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDEzMiwgMTMyLCAxMzksIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCA0NywgNDcsIDQ3LCAwLCAxMzIsIDEzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MiwgMTcyLCAxMzYsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzMiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzOSwgCi0gICAgMTMyLCA4MiwgODIsIDgyLCA1MiwgODIsIDgyLCA4MiwgMTQ1LCA0NywgODAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICA4MywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzIsIDEzMiwgMTMyLCAxNzAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgODYsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDEzNiwgMTM2LCAwLCAwLCAwLCAwLCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCA4NSwgODAsIDg0LCAwLCAwLCAwLCAwLCAyNywgMCwgMCwgMCwgMTM1LCAxMzUsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMTM2LCAxMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQ2LCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA4MCwgODQsIDEzNiwgMTM2LCAxMzYsIDAsIDAsIDgyLCA4MiwgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIAotICAgIDEzMiwgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDAsIDEzOSwgMTM2LCAxMzIsIDEzNiwgMTM2LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgODQsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgCi0gICAgNTIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCA0NCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDgzLCA1MSwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCisgICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTcyLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE2MywgMTY0LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAKKyAgICAxNDIsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMTM1LCA4MywgODMsIAorICAgIDgzLCA1MywgODMsIDgzLCA4MywgODUsIDQ4LCA4MSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgCisgICAgMTUzLCAxNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzNSwgMTM1LCAxMzUsIDE3MiwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4OCwgNDgsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAKKyAgICAxMzksIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDg3LCA4MSwgODYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIAorICAgIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4NiwgMTM5LCAxMzksIDEzOSwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTQyLCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCA4NiwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA1MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTMyLCAxMzYsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCAxMzcsIDQ3LCA0NywgNDcsIDEzNywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQyLCAxNDMsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxNDQsIDEzMiwgMTQ0LCAxMzYsIDEzNiwgMTQ0LCAxNDQsIDEzMiwgMTQ0LCAKLSAgICAxNzMsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgODAsIDg0LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgMTczLCAwLCAKLSAgICAwLCAwLCA0NywgNDcsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCAxNDAsIDQ4LCAKKyAgICAxNDAsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAxNDYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDcsIDEzNSwgMTQ3LCAxMzksIDEzOSwgMTQ3LCAxNDcsIDEzNSwgMTQ3LCAxNzQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTc0LCAxNDIsIDEzOSwgMTM5LCA0OCwgNDgsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxNzQsIDE3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTQ1LCAwLCAwLCAwLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODMsIDE3NSwgODYsIDg2LCA4NiwgODYsIDg2LCAKKyAgICA4MSwgODEsIDg2LCA4NiwgODYsIDg2LCA4MSwgMTM5LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDE3NSwgMTc1LCAxNzUsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA4NiwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCA4MSwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDE0MiwgMTM2LCAxMzIsIDEzMiwgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDE3MywgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDgyLCA4MiwgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIAotICAgIDEzNiwgMTMyLCAxNDIsIDAsIDAsIDAsIDgyLCA4MiwgODIsIDgyLCA4MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODIsIDE3NCwgCi0gICAgODQsIDg0LCA4NCwgODQsIDg0LCA4MCwgODAsIDg0LCA4NCwgODQsIDg0LCA4MCwgMTM2LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDQ3LCA0NywgNDcsIDQ3LCA4NCwgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgNTAsIDUwLCA1MiwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNTAsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIAotICAgIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgODAsIAotICAgIDgwLCA4NCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg0LCA4MCwgODAsIDE3NSwgMTc2LCA4NCwgMTc3LCA4MCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgCisgICAgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc2LCAxNzcsIDg2LCAxNzgsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzksIDg2LCAKKyAgICA4MSwgODYsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAKKyAgICAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgwLCA0NywgNDcsIDQ0LCA0NywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIAorICAgIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCAwLCAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIDQzLCAxODEsIAorICAgIDQzLCAxODEsIDQzLCAxODEsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgyLCAxODIsIDE4MiwgCisgICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIAorICAgIDE4MiwgNTgsIDE4MSwgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgzLCAzOCwgMTgzLCAxODIsIAorICAgIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIDE4MSwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODMsIDAsIDc2LCA3NiwgCisgICAgNzYsIDQzLCA0MywgNDMsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MywgMzgsIDc2LCAxODQsIDE4NCwgCisgICAgMCwgMCwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTgzLCAzOCwgMTgzLCAxODIsIDE4NCwgNTgsIDAsIDE4NSwgMTg1LCAKKyAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAxODgsIDE4OSwgCisgICAgMTkwLCAxOTEsIDg0LCAxOTAsIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIAorICAgIDE5NiwgMjIsIDIyLCAyMiwgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgCisgICAgMjA0LCAyMSwgMjA1LCAxMTAsIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIAorICAgIDEzOCwgMTk3LCAyMDgsIDIwOCwgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAyMTAsIDUxLCAwLCAwLCAzNCwgMjEwLCAyMTAsIDIxMCwgMjEwLCAyMTAsIAorICAgIDIxMSwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxMCwgMzQsIDM0LCAzNCwgMzQsIDIxMCwgMjEwLCAyMTAsIDIxMCwgCisgICAgMjEwLCAyMTEsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMCwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDAsIDAsIDAsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMjE2LCAyMTcsIDg1LCA4NSwgCisgICAgMjMsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NSwgMTc1LCA4MSwgODEsIAorICAgIDgxLCA4MSwgMTc1LCAxNzUsIDE3NSwgODEsIDgxLCA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NSwgMTc1LCAKKyAgICA4MSwgODYsIDgxLCAxNzUsIDE3NSwgODYsIDg2LCA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMTgsIDIxOCwgNDksIDIxOSwgMjYsIDIxOSwgMjE4LCA0OSwgMjYsIDIxOSwgMzUsIDQ5LCA0OSwgCisgICAgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIDI2LCA0OSwgMjE5LCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIAorICAgIDI2LCAyMTgsIDIxOSwgMjE5LCAyNiwgNDksIDI2LCAyMjAsIDI2LCA0OSwgMjYsIDE4MywgMjIwLCA0OSwgNDksIDIyMSwgCisgICAgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIxOCwgMzUsIDM1LCA0OSwgNDksIAorICAgIDIyMiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjIzLCAKKyAgICAyMjMsIDIyMywgMzcsIDM3LCAyMjMsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAzNywgMzcsIDM3LCAzNywgMjIzLCAyMjQsIAorICAgIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjUsIDIyNSwgMjI1LCAKKyAgICAyMjUsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCAyMjUsIDIyNSwgCisgICAgMjI1LCAyMjUsIDIyNSwgMTczLCAxNzMsIDE3MywgNDQsIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjI2LCAyMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI3LCAyMjYsIDIyNiwgMjYsIDI2LCA0MCwgMjYsIDQwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIyOCwgMjI5LCAyMjksIDIzMCwgNzgsIDc4LCA0MCwgMjI5LCAyMzAsIAorICAgIDIyOCwgMjI5LCAyMzAsIDIyOCwgNzgsIDQwLCA3OCwgMjI5LCAyMzEsIDIzMiwgNzgsIDIyOSwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjksIDIyOCwgMjI4LCAyMjksIDQwLCAyMjksIDIyOSwgMjI4LCAyMjgsIDQwLCAyMzAsIDQwLCAyMzAsIDQwLCA0MCwgNDAsIAorICAgIDQwLCAyMjksIDIzMywgMjIyLCAyMjksIDIyMiwgMjIyLCAyMjgsIDIyOCwgMjI4LCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIyOCwgCisgICAgNzgsIDIyOCwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjI4LCAyMjgsIDIzMCwgMjI5LCAKKyAgICAyMzAsIDIyOCwgMjI4LCAyMjksIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI5LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIzNCwgNDAsIDIzMCwgNzgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI4LCAKKyAgICAyMjgsIDIyOSwgMjI5LCA3OCwgMjI2LCAyMzQsIDIzNCwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjI4LCAyMjgsIAorICAgIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjI5LCAyMjksIDIzMCwgMjMwLCAKKyAgICAyMjksIDIyOSwgMjMwLCAyMzAsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIAorICAgIDQwLCA3OCwgNzgsIDIyOCwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA0MCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgMjI5LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjMwLCAyMzAsIDIzMCwgCisgICAgMjMwLCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMzAsIDIzMCwgMjMwLCAyMzAsIDc4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMjgsIDIyOCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzNSwgMjM2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE3OCwgODQsIDgwLCA4NCwgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDM1LCAxNzksIDQ2LCAKLSAgICA0NiwgNDQsIDQ2LCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKLSAgICA0MywgMzgsIDQzLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAKLSAgICAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIAotICAgIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgCi0gICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgCi0gICAgNDMsIDE4MCwgNDMsIDE4MCwgNDMsIDE4MCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODEsIAotICAgIDE4MSwgMTgxLCAxODEsIDE4MSwgMTgxLCAxODEsIDE4MSwgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgCi0gICAgMzgsIDE4MiwgMTgxLCA1NywgMTgwLCA1NywgNTcsIDc1LCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODIsIDM4LCAKLSAgICAxODIsIDE4MSwgNzUsIDc1LCA3NSwgNDMsIDQzLCA0MywgMTgwLCAwLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4MiwgMCwgCi0gICAgNzUsIDc1LCA3NSwgNDMsIDQzLCA0MywgMTgwLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMTgyLCAzOCwgNzUsIAotICAgIDE4MywgMTgzLCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODIsIDM4LCAxODIsIDE4MSwgMTgzLCA1NywgMCwgCi0gICAgMTg0LCAxODQsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NSwgMTg1LCAxODUsIDE4NiwgMTg2LCAxODYsIAotICAgIDE3MiwgMTg3LCAxODgsIDE4OSwgODMsIDE4OCwgMTg4LCAxODgsIDIyLCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTkxLCAKLSAgICAxOTIsIDE5MywgMTk0LCAyMiwgMjIsIDIyLCAxMzUsIDE5NSwgMTk1LCAxOTUsIDIyLCAxOTYsIDE5NywgMTk4LCAxOTksIAotICAgIDIwMCwgMjAxLCAyMDIsIDIxLCAyMDMsIDEwOCwgMjAzLCAyMDQsIDIwNSwgMjIsIDE5MCwgMTkwLCAxMzUsIDI5LCAzNiwgCi0gICAgMjIsIDE5MCwgMTM1LCAxOTUsIDIwNiwgMjA2LCAxMzUsIDEzNSwgMTM1LCAyMDcsIDE2MSwgMTYyLCAxOTAsIDE5MCwgMTkwLCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgNzcsIDEzNSwgMjA2LCAxMzUsIDEzNSwgMTkwLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE4NSwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDIwOCwgNTAsIDAsIDAsIDM0LCAyMDgsIDIwOCwgMjA4LCAyMDgsIAotICAgIDIwOCwgMjA5LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjA4LCAzNCwgMzQsIDM0LCAzNCwgMjA4LCAyMDgsIDIwOCwgCi0gICAgMjA4LCAyMDgsIDIwOSwgMjA5LCAyMTAsIDIxMSwgMjEyLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIxNCwgCi0gICAgMjE1LCAxNDUsIDE0NSwgMjMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODAsIDgwLCAxNzQsIDE3NCwgODAsIDgwLCA4MCwgODAsIDE3NCwgMTc0LCAxNzQsIDgwLCA4MCwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgwLCA4MSwgODEsIDgxLCAxNzQsIDE3NCwgODAsIDg0LCA4MCwgMTc0LCAxNzQsIDg0LCA4NCwgODQsIDg0LCA4MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE2LCAyMTYsIDQ4LCAyMTcsIDI3LCAyMTcsIAotICAgIDIxNiwgNDgsIDI3LCAyMTcsIDM1LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDI4LCAyNywgNDgsIDIxNywgCi0gICAgMjcsIDc3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDI3LCAyNywgMjE2LCAyMTcsIDIxNywgMjcsIDQ4LCAyNywgMjE4LCAyNywgCi0gICAgNDgsIDI3LCAxODIsIDIxOCwgNDgsIDQ4LCAyMTksIDM1LCA0OCwgNDgsIDQ0LCA0OCwgMzUsIDE1NCwgMTU0LCAxNTQsIAotICAgIDE1NCwgMzUsIDI3LCAyMTYsIDM1LCAzNSwgNDgsIDQ4LCAyMjAsIDc3LCA3NywgNzcsIDc3LCA0OCwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDI3LCA3NywgMjcsIDI3LCA0NiwgNzksIDIyMSwgMjIxLCAyMjEsIDM3LCAzNywgMjIxLCAyMjEsIDIyMSwgMjIxLCAKLSAgICAyMjEsIDIyMSwgMzcsIDM3LCAzNywgMzcsIDIyMSwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAyMjIsIAotICAgIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMiwgMjIyLCAKLSAgICAyMjIsIDIyMiwgMjIyLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMywgMjIzLCAyMjMsIDE3MSwgMTcxLCAxNzEsIDQ0LCA0NiwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAzNywgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQwLCA0MCwgNDAsIDQwLCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDIyNCwgMjI0LCAyNywgMjcsIDI3LCAyNywgNzcsIDI3LCAyNywgNzcsIDI3LCAyNywgNzcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyMjQsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDIyNSwgCi0gICAgMjI0LCAyMjQsIDI3LCAyNywgNDAsIDI3LCA0MCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDQwLCAyMjYsIDIyNywgCi0gICAgMjI3LCAyMjgsIDc3LCA3NywgNDAsIDIyNywgMjI4LCAyMjYsIDIyNywgMjI4LCAyMjYsIDc3LCA0MCwgNzcsIDIyNywgMjI5LCAKLSAgICAyMzAsIDc3LCAyMjcsIDIyNiwgNzcsIDc3LCA3NywgMjI3LCAyMjYsIDIyNiwgMjI3LCA0MCwgMjI3LCAyMjcsIDIyNiwgCi0gICAgMjI2LCA0MCwgMjI4LCA0MCwgMjI4LCA0MCwgNDAsIDQwLCA0MCwgMjI3LCAyMzEsIDIyMCwgMjI3LCAyMjAsIDIyMCwgMjI2LCAKLSAgICAyMjYsIDIyNiwgNDAsIDQwLCA0MCwgNDAsIDc3LCAyMjYsIDc3LCAyMjYsIDIyNywgMjI3LCAyMjYsIDIyNiwgMjI2LCAyMjgsIAotICAgIDIyNiwgMjI2LCAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyNywgMjI4LCAyMjYsIDIyNiwgMjI3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNywgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMzIsIDQwLCAKLSAgICAyMjgsIDc3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNiwgMjI2LCAyMjcsIDIyNywgNzcsIDIyNCwgMjMyLCAyMzIsIDIyOCwgCi0gICAgMjI4LCAyMjYsIDIyNiwgMjI4LCAyMjgsIDIyNiwgMjI2LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI4LCAyMjgsIDIyNywgMjI3LCAyMjgsIDIyOCwgMjI3LCAyMjcsIDIyOCwgMjI4LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA0MCwgNzcsIDc3LCAyMjYsIDQwLCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgNDAsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDIyNywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDc3LCA3NywgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjI2LCAyMjYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyMzMsIDIzNCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAyNywgNzcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDI2LCA3OCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgCiAgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgCi0gICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIyMSwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIAotICAgIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI3LCAyNSwgNDAsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjUsIDQwLCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgCi0gICAgMjcsIDQwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3OSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNywgMjUsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTYxLCAxNjIsIAotICAgIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDIzNiwgMjM2LCAKLSAgICAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMjM2LCAyMzYsIDIzNiwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgCi0gICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjI2LCA3NywgNzcsIDIyNiwgMjI2LCAxNjEsIDE2MiwgNzcsIDIyNiwgCi0gICAgMjI2LCA3NywgMCwgMjI2LCAwLCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDksIDEwLCA5LCAxMCwgOSwgCi0gICAgMTAsIDksIDEwLCAxNjEsIDE2MiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAxNjEsIDE2MiwgOSwgMTAsIDE2MSwgMTYyLCAxNjEsIAotICAgIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAKLSAgICAxNjIsIDc3LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIAotICAgIDc3LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMjI2LCA3NywgNzcsIDc3LCA3NywgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDc3LCA3NywgMTYxLCAxNjIsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgCi0gICAgNzcsIDIyNiwgMjI2LCAyMjAsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCAyMjYsIDc3LCAyMjYsIAotICAgIDc3LCA3NywgMjI2LCA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIAotICAgIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgMjI2LCA3NywgNzcsIDIyNiwgMjIwLCAyMTAsIDIxMCwgNzcsIDc3LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAKLSAgICA3NywgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgCi0gICAgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIAotICAgIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAKLSAgICAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDc3LCA3NywgNzcsIDc3LCA3NywgMjM3LCA3NywgMjI2LCA3NywgCi0gICAgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDc3LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCA3NywgCi0gICAgNzcsIDc3LCA3NywgMjI2LCA3NywgNzcsIDc3LCAyMjYsIDIyNiwgMjI2LCAyMjYsIDIyNiwgNzcsIDIyNiwgNzcsIDc3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LCAyNywgMjcsIDc3LCAKLSAgICA3NywgNzcsIDc3LCA3NywgNzcsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMCwgNDQsIDQ2LCAKLSAgICA0NCwgNDQsIDQ0LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NCwgNDQsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NiwgNDQsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDM1LCA1MCwgNDQsIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCAKLSAgICA0NCwgNDYsIDQ0LCA0NiwgNDYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDQ0LCA0NiwgNDQsIDQ2LCA4MCwgODAsIDgwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1MSwgMTM1LCAxMzUsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCAKLSAgICA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzksIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIyMywgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAorICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKKyAgICAyMzgsIDIzOCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyNiwgMzAsIDQwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAKKyAgICAxNjMsIDE2NCwgMTYzLCAxNjQsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjI4LCA3OCwgNzgsIAorICAgIDIyOCwgMjI4LCAxNjMsIDE2NCwgNzgsIDIyOCwgMjI4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDEzNSwgMTM1LCAyOSwgMzYsIDI5LCAzNiwgMTM1LCAxMzUsIDEzNSwgMjksIDM2LCAxMzUsIDI5LCAKLSAgICAzNiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODMsIDEzNSwgMTM1LCA4MywgMTM1LCAKLSAgICAyOSwgMzYsIDEzNSwgMTM1LCAyOSwgMzYsIDE2MSwgMTYyLCAxNjEsIDE2MiwgMTYxLCAxNjIsIDE2MSwgMTYyLCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgNTEsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzksIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKLSAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCi0gICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMCwgMCwgMCwgMjQwLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyMzgsIDI0MiwgMTY4LCAyNDMsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgCi0gICAgMjM4LCAyMzgsIDI0NCwgMjQ1LCAyNDQsIDI0NSwgMjQ0LCAyNDUsIDI0NCwgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDgsIAotICAgIDIzOCwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQ5LCAyNTAsIDI1MSwgMjUyLCAKLSAgICAyNTMsIDI1MywgMjQ2LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjM5LCAyMzgsIDI1NCwgMjU0LCAyNTQsIDI0MiwgCi0gICAgMTY4LCAyNDEsIDIzOCwgMjcsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIAotICAgIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgCi0gICAgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAyNTUsIDI1NSwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAyNTUsIDE2OCwgMTY4LCAwLCAwLCAyNTYsIDI1NiwgMjU3LCAyNTcsIDI0MiwgMjU4LCAyNTksIAotICAgIDI0NiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMTY4LCAKLSAgICAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgCi0gICAgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIDE2OCwgMjU1LCAxNjgsIDE2OCwgMjU1LCAxNjgsIDI1NSwgMTY4LCAyNTUsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAKLSAgICAxNjgsIDI1NSwgMjU1LCAxNjgsIDI1NSwgMjU1LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDI1NSwgMTY4LCAxNjgsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjQxLCAyNDIsIDI0MiwgMjU4LCAyNTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCi0gICAgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIAotICAgIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAKLSAgICAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDAsIDI2MCwgMjYwLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDIzOSwgMjY0LCAyNjQsIAotICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyMzksIAotICAgIDIzOSwgMjM5LCAyNjAsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKLSAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDIzOSwgMjM5LCAyMzksIAotICAgIDIzOSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjM5LCAyMzksIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjM5LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMjQyLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMCwgMCwgMCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIAotICAgIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAKLSAgICAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgMjM4LCAyMzgsIDIzOCwgCi0gICAgMjM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MiwgMTM1LCAxMzUsIAotICAgIDEzNSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NiwgNDcsIDgwLCA4MSwgODEsIDgxLCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgMTM1LCA1MSwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgODAsIDgwLCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MywgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NiwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNTAsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIAotICAgIDQ0LCA0NCwgNDYsIDQ0LCA0NiwgNDQsIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgNTEsIDI2NSwgMjY1LCA0NCwgNDYsIDQ0LCA0NiwgCi0gICAgMCwgNDQsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDYsIDQ0LCA0NiwgNDQsIAotICAgIDQ2LCA0NCwgNDYsIDQ0LCA0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDQ3LCA0NywgNDcsIDEzOSwgNDcsIDQ3LCA0NywgNDcsIDEzMiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgCi0gICAgMTMyLCAxMzIsIDEzNiwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDc5LCA3OSwgMTQ1LCAyMTksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEzNiwgMTM2LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzNiwgMTM2LCAKLSAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgODIsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODIsIDgyLCA4MiwgCi0gICAgNDcsIDAsIDAsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCA4NCwgODQsIDg0LCA4MiwgCi0gICAgODIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MiwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDEzMiwgMTMyLCAKLSAgICAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNDIsIDEzNiwgMTM2LCAxMzIsIAotICAgIDEzMiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzNiwgMTM2LCAxMzYsIDE3MywgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgCi0gICAgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgODIsIDAsIDUyLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzNiwgMTM2LCAxMzIsIDEzMiwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgMTMyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDEzMiwgMTM2LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDAsIAotICAgIDAsIDgyLCA4MiwgODIsIDgyLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNTIsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDc5LCA3OSwgNzksIDQ3LCAxMzYsIDAsIDAsIDAsIDAsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgwLCA0NywgODAsIDgwLCA4NCwgNDcsIAotICAgIDQ3LCA4MCwgODAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgODAsIDgwLCA0NywgODAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDUyLCA4MiwgODIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMTYzLCAxNjQsIDksIDEwLCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgCisgICAgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDIyOCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDE2MywgMTY0LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjIyLCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDc4LCA3OCwgMjI4LCA3OCwgMjI4LCA3OCwgNzgsIDIyOCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIDc4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCAyMjgsIDIyOCwgNzgsIDc4LCAyMjgsIAorICAgIDIyMiwgMjEyLCAyMTIsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKKyAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzOSwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgNzgsIDc4LCA3OCwgNzgsIDIyOCwgNzgsIDc4LCA3OCwgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDc4LCAyMjgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzYsIDEzNiwgMTMyLCAxMzYsIDEzNiwgMTMyLCAKLSAgICAxMzYsIDEzNiwgODIsIDEzNiwgMTM5LCAwLCAwLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIAotICAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAKLSAgICAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgCi0gICAgMjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAwLCAwLCAwLCAwLCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCi0gICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAotICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKLSAgICAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMTY4LCAxNjgsIDI2OCwgMTY4LCAyNjgsIDE2OCwgMTY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE2OCwgMjY4LCAxNjgsIDI2OCwgMTY4LCAKLSAgICAxNjgsIDI2OCwgMjY4LCAxNjgsIDE2OCwgMTY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAwLCAwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDI2OSwgMjcwLCAyNjksIAotICAgIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDIwOSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKLSAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMCwgMjY5LCAwLCAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDAsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI3MSwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxOTMsIDI3MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAyNzQsIDI3LCAwLCAwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCi0gICAgMjc1LCAyNzYsIDI3NywgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc1LCAyNzgsIDI3OCwgMjc5LCAyNzksIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAKLSAgICAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjc2LCAyNzcsIDI3NiwgMjc3LCAyNzYsIDI3NywgMjQxLCAyNDEsIDI3NiwgCi0gICAgMjc3LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3OSwgMjc5LCAyNzksIDI4MCwgMjc1LCAyODAsIDAsIDI3NSwgMjgwLCAyNzUsIAotICAgIDI3NSwgMjc4LCAyODEsIDI4MiwgMjgxLCAyODIsIDI4MSwgMjgyLCAyODMsIDI3NSwgMjc1LCAyODQsIDI4NSwgMjg2LCAKLSAgICAyODYsIDI4NywgMCwgMjc1LCAyODgsIDI4MywgMjc1LCAwLCAwLCAwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMTUsIDEyOCwgMCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMTg2LCAwLCAyODksIDI4OSwgMjkwLCAKLSAgICAyOTEsIDI5MCwgMjg5LCAyODksIDI5MiwgMjkzLCAyODksIDI5NCwgMjk1LCAyOTYsIDI5NSwgMjk1LCAyOTcsIDI5NywgCi0gICAgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NywgMjk3LCAyOTcsIDI5NSwgMjg5LCAyOTgsIDI5OSwgMjk4LCAyODksIAotICAgIDI4OSwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAKLSAgICAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDMwMCwgMzAwLCAzMDAsIDI5MiwgCi0gICAgMjg5LCAyOTMsIDMwMSwgMzAyLCAzMDEsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIAotICAgIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAyOTIsIDI5OSwgMjkzLCAyOTksIDI5MiwgMjkzLCAzMDQsIDMwNSwgMzA2LCAzMDQsIDMwNCwgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDgsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAotICAgIDMwOCwgMzA4LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKLSAgICAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgCi0gICAgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIDAsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIAotICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDAsIDAsIAotICAgIDMwNywgMzA3LCAzMDcsIDAsIDAsIDAsIDI5MSwgMjkxLCAyOTksIDMwMSwgMzA5LCAyOTEsIDI5MSwgMCwgMzEwLCAzMTEsIAotICAgIDMxMSwgMzExLCAzMTEsIDMxMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTIsIDMxMiwgMzEyLCAyNywgCi0gICAgMjUsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCA0NywgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgODIsIDEzNSwgNzksIDAsIDAsIDAsIDAsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAKLSAgICAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgCi0gICAgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMTUxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA4NCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxNzEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTcxLCAwLCAwLCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCisgICAgMTM4LCAxMzgsIDI4LCAzNiwgMjgsIDM2LCAxMzgsIDEzOCwgMTM4LCAyOCwgMzYsIDEzOCwgMjgsIDM2LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgMTM4LCAxMzgsIDg0LCAxMzgsIDI4LCAzNiwgMTM4LCAKKyAgICAxMzgsIDI4LCAzNiwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA1MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA4NCwgODQsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDgyLCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAwLCAwLCAwLCAKLSAgICAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDgyLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQxLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDI0MiwgMjQzLCAyNDMsIDI0MywgCisgICAgMjQwLCAyNDQsIDE3MCwgMjQ1LCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ2LCAyNDcsIAorICAgIDI0MCwgMjQwLCAyNDYsIDI0NywgMjQ2LCAyNDcsIDI0NiwgMjQ3LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUwLCAKKyAgICAyNDAsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI1MSwgMjUyLCAyNTMsIDI1NCwgCisgICAgMjU1LCAyNTUsIDI0OCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0MSwgMjQwLCAyNTYsIDI1NiwgMjU2LCAyNDQsIAorICAgIDE3MCwgMjQzLCAyNDAsIDI2LCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAKKyAgICAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIAorICAgIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMjU3LCAyNTcsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMjU3LCAxNzAsIDE3MCwgMCwgMCwgMjU4LCAyNTgsIDI1OSwgMjU5LCAyNDQsIDI2MCwgMjYxLCAKKyAgICAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDE3MCwgCisgICAgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIAorICAgIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAxNzAsIDI1NywgMTcwLCAxNzAsIDI1NywgMTcwLCAyNTcsIDE3MCwgMjU3LCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgCisgICAgMTcwLCAyNTcsIDI1NywgMTcwLCAyNTcsIDI1NywgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNTcsIDE3MCwgMTcwLCAyNTcsIDI1NywgMjU3LCAyNTcsIDI0MywgMjQ0LCAyNDQsIDI2MCwgMjYxLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAorICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAyNjIsIDI2MiwgMjYzLCAyNjMsIAorICAgIDI2MywgMjYzLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAwLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKKyAgICAyNjMsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNDEsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjYyLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDAsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI0MSwgMjQxLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI0MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjQ0LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAKKyAgICAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgCisgICAgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIDI0MCwgMjQwLCAyNDAsIAorICAgIDI0MCwgMjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDUzLCA1MywgNTMsIDUzLCAKKyAgICA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM4LCAxMzgsIAorICAgIDEzOCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDU0LCA1NCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTIsIDI2NywgMjY3LCA0NCwgNDcsIDQ0LCAKKyAgICA0NywgMCwgNDQsIDQ3LCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDUxLCA0NywgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgMTQyLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgODAsIDgwLCA4NSwgMjIxLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzksIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDgzLCA4MywgODMsIDQ4LCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODYsIAorICAgIDg2LCA4NiwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDE3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAKKyAgICAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxNzQsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCA1MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MCwgODAsIDgwLCAKKyAgICA0OCwgMTM5LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgCisgICAgNDgsIDgxLCA4MSwgODYsIDQ4LCA0OCwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDgxLCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA1MywgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCA4MywgODMsIDQ4LCA1MywgNTMsIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxMzksIDgzLCAxMzksIAorICAgIDE0MiwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgCisgICAgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIAorICAgIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAKKyAgICAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMjU3LCAyNTcsIDI1NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAorICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKKyAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCisgICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDE3MCwgMTcwLCAyNzAsIDE3MCwgMjcwLCAxNzAsIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAxNzAsIDI3MCwgMTcwLCAyNzAsIDE3MCwgMTcwLCAyNzAsIDI3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDAsIDAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgCisgICAgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMjcxLCAyNzIsIDI3MSwgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjExLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDAsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAwLCAyNzEsIDAsIDI3MSwgMjcxLCAKKyAgICAwLCAyNzEsIDI3MSwgMCwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjczLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDE5NSwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDI3NiwgMjYsIDAsIDAsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3OCwgMjc5LCAKKyAgICAyNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzcsIDI4MCwgMjgwLCAyODEsIDI4MSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIAorICAgIDI3OCwgMjc5LCAyNzgsIDI3OSwgMjc4LCAyNzksIDI3OCwgMjc5LCAyNDMsIDI0MywgMjc4LCAyNzksIDI3NywgMjc3LCAKKyAgICAyNzcsIDI3NywgMjgxLCAyODEsIDI4MSwgMjgyLCAyNzcsIDI4MiwgMCwgMjc3LCAyODIsIDI3NywgMjc3LCAyODAsIDI4MywgCisgICAgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4NSwgMjc3LCAyNzcsIDI4NiwgMjg3LCAyODgsIDI4OCwgMjg5LCAwLCAyNzcsIAorICAgIDI5MCwgMjg1LCAyNzcsIDAsIDAsIDAsIDAsIDEzMCwgMTMwLCAxMzAsIDExNywgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAwLCAxODcsIDAsIDI5MSwgMjkxLCAyOTIsIDI5MywgMjkyLCAyOTEsIAorICAgIDI5MSwgMjk0LCAyOTUsIDI5MSwgMjk2LCAyOTcsIDI5OCwgMjk3LCAyOTcsIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk5LCAKKyAgICAyOTksIDI5OSwgMjk5LCAyOTksIDI5OSwgMjk3LCAyOTEsIDMwMCwgMzAxLCAzMDAsIDI5MSwgMjkxLCAzMDIsIDMwMiwgCisgICAgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIAorICAgIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMzAyLCAzMDIsIDMwMiwgMjk0LCAyOTEsIDI5NSwgMzAzLCAKKyAgICAzMDQsIDMwMywgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgCisgICAgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIDMwNSwgMzA1LCAzMDUsIAorICAgIDI5NCwgMzAxLCAyOTUsIDMwMSwgMjk0LCAyOTUsIDMwNiwgMzA3LCAzMDgsIDMwNiwgMzA2LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMxMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzEwLCAzMTAsIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIAorICAgIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAKKyAgICAzMDksIDMwOSwgMCwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCisgICAgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMCwgMCwgMzA5LCAzMDksIDMwOSwgCisgICAgMCwgMCwgMCwgMjkzLCAyOTMsIDMwMSwgMzAzLCAzMTEsIDI5MywgMjkzLCAwLCAzMTIsIDMxMywgMzEzLCAzMTMsIDMxMywgCisgICAgMzEyLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDI2LCAzMCwgMCwgMCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKKyAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCisgICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIAorICAgIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgODMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgNDYsIDQ2LCA0NiwgCi0gICAgNDYsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMCwgMCwgMTA1LCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMTA1LCAxMDUsIDAsIDAsIDAsIDEwNSwgMCwgMCwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwMiwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCi0gICAgMzE0LCAzMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMCwgMCwgMCwgMTM1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMCwgMCwgMTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDUsIDEzMiwgMTMyLCAxMzIsIDAsIDEzMiwgMTMyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzIsIDg0LCAxMzIsIDgwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIDAsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDgwLCAxNzQsIAotICAgIDg0LCAwLCAwLCAwLCAwLCAxMzksIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMzE0LCAzMTQsIDEwMiwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAotICAgIDMxNCwgMzE0LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIAotICAgIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAKLSAgICAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDEwNSwgCi0gICAgMTA1LCAxMDUsIDEwNSwgMTA1LCAxMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAKLSAgICAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgCi0gICAgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMzE1LCAzMTUsIDMxNSwgMCwgMTM2LCAxMzIsIAotICAgIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzIsIDEzMiwgCi0gICAgMTM5LCA4MiwgODIsIDgyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIAotICAgIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAKLSAgICAxNTEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyLCAxMzIsIDEzNiwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAxMzcsIDQ3LCAKLSAgICAxMzcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTM3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgMTM2LCAxMzYsIDEzNiwgMTMyLCAxMzIsIDEzMiwgMTMyLCAxMzYsIDEzNiwgMTM5LCAxMzgsIDgyLCA4MiwgCi0gICAgMTcyLCA4MiwgODIsIDgyLCA4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgCi0gICAgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgyLCA4MiwgODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAwLCAwLCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIAotICAgIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKLSAgICAzMTYsIDMxNiwgMzE3LCAzMTcsIDE3NCwgMTc0LCAxNzQsIDc5LCA3OSwgNzksIDMxOCwgMzE3LCAzMTcsIDMxNywgMzE3LCAKLSAgICAzMTcsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCA4NCwgODQsIDg0LCA4NCwgODQsIDg0LCA4NCwgCi0gICAgODQsIDc5LCA3OSwgODAsIDgwLCA4MCwgODAsIDgwLCA4NCwgODQsIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDgwLCA4MCwgODAsIDgwLCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCAKLSAgICA3OSwgNzksIDc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCA4MCwgODAsIDgwLCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ2LCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgMCwgMCwgNDgsIAotICAgIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAxMDcsIDAsIDAsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUsIDg2LCAxMzUsIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDgxLCAxNzUsIAorICAgIDg2LCAwLCAwLCAwLCAwLCAxNDIsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMzE2LCAzMTYsIDEwNCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMzE2LCAzMTYsIDMxNiwgMzE2LCAzMTYsIAorICAgIDMxNiwgMzE2LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAKKyAgICAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgCisgICAgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNywgMCwgMTM5LCAxMzUsIAorICAgIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAzMTksIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTQyLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAorICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCAKKyAgICAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTQyLCAxNDEsIDgzLCA4MywgCisgICAgMTg4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAzMTksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAyMjAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMzE5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjIwLCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OCwgMzUsIDAsIDAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKLSAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgCi0gICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIAotICAgIDIzNSwgMjM1LCAyMzUsIDIzNSwgMzIxLCAwLCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAKLSAgICAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgCi0gICAgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjM1LCAyMzUsIDIzNSwgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MywgMjYzLCAyNjMsIDI2MywgCi0gICAgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIAotICAgIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAKLSAgICAyMzUsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMjYzLCAyNjMsIDI2MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM1LCAxNTAsIDE1MCwgMTM1LCAxMzUsIDEzNSwgMTQyLCAxNDIsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgCi0gICAgNzksIDc5LCA3OSwgNzksIDc5LCA3OSwgMjYyLCAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKLSAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCi0gICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAotICAgIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjIsIDI2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTM1LCAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzQsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE3NCwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMCwgMjcsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNzksIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDc5LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTgsIDMxOCwgMzE5LCAzMTksIAorICAgIDE3NSwgMTc1LCAxNzUsIDgwLCA4MCwgODAsIDMyMCwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzE4LCAzMTgsIAorICAgIDMxOCwgMzE4LCAzMTgsIDMxOCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4MSwgCisgICAgODEsIDgxLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgCisgICAgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgCisgICAgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIAorICAgIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyMiwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTMwLCAwLCAwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAwLCAKKyAgICAxMzAsIDEzMCwgMCwgMTMwLCAwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMCwgMTMwLCAxMzAsIAorICAgIDAsIDEzMCwgMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIAorICAgIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgCisgICAgMTMwLCAxMzAsIDAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAKKyAgICAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMTMwLCAxMzAsIDEzMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMCwgMCwgMCwgMCwgMCwgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgCisgICAgMzIzLCAwLCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIAorICAgIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMjM3LCAKKyAgICAyMzcsIDIzNywgMjM3LCAyMzcsIDIzNywgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDIxOCwgMjE4LCAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMjM3LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgMjY0LCAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0LCAyNjQsIAorICAgIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAKKyAgICAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgCisgICAgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAyNjQsIDI2NCwgMjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjQsIDI2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMCwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMCwgMjcsIDAsIDI3LCAwLCAyNywgCi0gICAgMCwgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDAsIDI3LCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgCi0gICAgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgCi0gICAgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIAotICAgIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAKLSAgICAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMTY4LCAxNjgsIDE2OCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAorICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKKyAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDE4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIAotICAgIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAKLSAgICAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgMTg2LCAxODYsIDE4NiwgCi0gICAgMTg2LCAxODYsIDE4NiwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAKLSAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAKLSAgICAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgCi0gICAgMjY3LCAyNjcsIDI2NywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCisgICAgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIAorICAgIDE4NywgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgCisgICAgMCwgCiB9OwogCiAvKiBkZWNvbXBvc2l0aW9uIGRhdGEgKi8KQEAgLTMwNzIsMzIxICszMTQwLDMyMiBAQAogICAgIDUwLCA0OSwgMjYwODUsIDc3MCwgNTAsIDUwLCAyNjA4NSwgNzcwLCA1MCwgNTEsIDI2MDg1LCA3NzAsIDUwLCA1MiwgCiAgICAgMjYwODUsIDc3MCwgNTAsIDUzLCAyNjA4NSwgNzcwLCA1MCwgNTQsIDI2MDg1LCA3NzAsIDUwLCA1NSwgMjYwODUsIDc3MCwgCiAgICAgNTAsIDU2LCAyNjA4NSwgNzcwLCA1MCwgNTcsIDI2MDg1LCA3NzAsIDUxLCA0OCwgMjYwODUsIDc3MCwgNTEsIDQ5LCAKLSAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1NiwgMzU5MTIsIDI1NiwgMjYzNTYsIDI1NiwgMzY1NTQsIAotICAgIDI1NiwgMzYwNDAsIDI1NiwgMjgzNjksIDI1NiwgMjAwMTgsIDI1NiwgMjE0NzcsIDI1NiwgNDA4NjAsIDI1NiwgNDA4NjAsIAotICAgIDI1NiwgMjI4NjUsIDI1NiwgMzczMjksIDI1NiwgMjE4OTUsIDI1NiwgMjI4NTYsIDI1NiwgMjUwNzgsIDI1NiwgMzAzMTMsIAotICAgIDI1NiwgMzI2NDUsIDI1NiwgMzQzNjcsIDI1NiwgMzQ3NDYsIDI1NiwgMzUwNjQsIDI1NiwgMzcwMDcsIDI1NiwgMjcxMzgsIAotICAgIDI1NiwgMjc5MzEsIDI1NiwgMjg4ODksIDI1NiwgMjk2NjIsIDI1NiwgMzM4NTMsIDI1NiwgMzcyMjYsIDI1NiwgMzk0MDksIAotICAgIDI1NiwgMjAwOTgsIDI1NiwgMjEzNjUsIDI1NiwgMjczOTYsIDI1NiwgMjkyMTEsIDI1NiwgMzQzNDksIDI1NiwgNDA0NzgsIAotICAgIDI1NiwgMjM4ODgsIDI1NiwgMjg2NTEsIDI1NiwgMzQyNTMsIDI1NiwgMzUxNzIsIDI1NiwgMjUyODksIDI1NiwgMzMyNDAsIAotICAgIDI1NiwgMzQ4NDcsIDI1NiwgMjQyNjYsIDI1NiwgMjYzOTEsIDI1NiwgMjgwMTAsIDI1NiwgMjk0MzYsIDI1NiwgMzcwNzAsIAotICAgIDI1NiwgMjAzNTgsIDI1NiwgMjA5MTksIDI1NiwgMjEyMTQsIDI1NiwgMjU3OTYsIDI1NiwgMjczNDcsIDI1NiwgMjkyMDAsIAotICAgIDI1NiwgMzA0MzksIDI1NiwgMzI3NjksIDI1NiwgMzQzMTAsIDI1NiwgMzQzOTYsIDI1NiwgMzYzMzUsIDI1NiwgMzg3MDYsIAotICAgIDI1NiwgMzk3OTEsIDI1NiwgNDA0NDIsIDI1NiwgMzA4NjAsIDI1NiwgMzExMDMsIDI1NiwgMzIxNjAsIDI1NiwgMzM3MzcsIAotICAgIDI1NiwgMzc2MzYsIDI1NiwgNDA1NzUsIDI1NiwgMzU1NDIsIDI1NiwgMjI3NTEsIDI1NiwgMjQzMjQsIDI1NiwgMzE4NDAsIAotICAgIDI1NiwgMzI4OTQsIDI1NiwgMjkyODIsIDI1NiwgMzA5MjIsIDI1NiwgMzYwMzQsIDI1NiwgMzg2NDcsIDI1NiwgMjI3NDQsIAotICAgIDI1NiwgMjM2NTAsIDI1NiwgMjcxNTUsIDI1NiwgMjgxMjIsIDI1NiwgMjg0MzEsIDI1NiwgMzIwNDcsIDI1NiwgMzIzMTEsIAotICAgIDI1NiwgMzg0NzUsIDI1NiwgMjEyMDIsIDI1NiwgMzI5MDcsIDI1NiwgMjA5NTYsIDI1NiwgMjA5NDAsIDI1NiwgMzEyNjAsIAotICAgIDI1NiwgMzIxOTAsIDI1NiwgMzM3NzcsIDI1NiwgMzg1MTcsIDI1NiwgMzU3MTIsIDI1NiwgMjUyOTUsIDI1NiwgMjcxMzgsIAotICAgIDI1NiwgMzU1ODIsIDI1NiwgMjAwMjUsIDI1NiwgMjM1MjcsIDI1NiwgMjQ1OTQsIDI1NiwgMjk1NzUsIDI1NiwgMzAwNjQsIAotICAgIDI1NiwgMjEyNzEsIDI1NiwgMzA5NzEsIDI1NiwgMjA0MTUsIDI1NiwgMjQ0ODksIDI1NiwgMTk5ODEsIDI1NiwgMjc4NTIsIAotICAgIDI1NiwgMjU5NzYsIDI1NiwgMzIwMzQsIDI1NiwgMjE0NDMsIDI1NiwgMjI2MjIsIDI1NiwgMzA0NjUsIDI1NiwgMzM4NjUsIAotICAgIDI1NiwgMzU0OTgsIDI1NiwgMjc1NzgsIDI1NiwgMzY3ODQsIDI1NiwgMjc3ODQsIDI1NiwgMjUzNDIsIDI1NiwgMzM1MDksIAotICAgIDI1NiwgMjU1MDQsIDI1NiwgMzAwNTMsIDI1NiwgMjAxNDIsIDI1NiwgMjA4NDEsIDI1NiwgMjA5MzcsIDI1NiwgMjY3NTMsIAotICAgIDI1NiwgMzE5NzUsIDI1NiwgMzMzOTEsIDI1NiwgMzU1MzgsIDI1NiwgMzczMjcsIDI1NiwgMjEyMzcsIDI1NiwgMjE1NzAsIAotICAgIDI1NiwgMjI4OTksIDI1NiwgMjQzMDAsIDI1NiwgMjYwNTMsIDI1NiwgMjg2NzAsIDI1NiwgMzEwMTgsIDI1NiwgMzgzMTcsIAotICAgIDI1NiwgMzk1MzAsIDI1NiwgNDA1OTksIDI1NiwgNDA2NTQsIDI1NiwgMjExNDcsIDI1NiwgMjYzMTAsIDI1NiwgMjc1MTEsIAotICAgIDI1NiwgMzY3MDYsIDI1NiwgMjQxODAsIDI1NiwgMjQ5NzYsIDI1NiwgMjUwODgsIDI1NiwgMjU3NTQsIDI1NiwgMjg0NTEsIAotICAgIDI1NiwgMjkwMDEsIDI1NiwgMjk4MzMsIDI1NiwgMzExNzgsIDI1NiwgMzIyNDQsIDI1NiwgMzI4NzksIDI1NiwgMzY2NDYsIAotICAgIDI1NiwgMzQwMzAsIDI1NiwgMzY4OTksIDI1NiwgMzc3MDYsIDI1NiwgMjEwMTUsIDI1NiwgMjExNTUsIDI1NiwgMjE2OTMsIAotICAgIDI1NiwgMjg4NzIsIDI1NiwgMzUwMTAsIDI1NiwgMzU0OTgsIDI1NiwgMjQyNjUsIDI1NiwgMjQ1NjUsIDI1NiwgMjU0NjcsIAotICAgIDI1NiwgMjc1NjYsIDI1NiwgMzE4MDYsIDI1NiwgMjk1NTcsIDI1NiwgMjAxOTYsIDI1NiwgMjIyNjUsIDI1NiwgMjM1MjcsIAotICAgIDI1NiwgMjM5OTQsIDI1NiwgMjQ2MDQsIDI1NiwgMjk2MTgsIDI1NiwgMjk4MDEsIDI1NiwgMzI2NjYsIDI1NiwgMzI4MzgsIAotICAgIDI1NiwgMzc0MjgsIDI1NiwgMzg2NDYsIDI1NiwgMzg3MjgsIDI1NiwgMzg5MzYsIDI1NiwgMjAzNjMsIDI1NiwgMzExNTAsIAotICAgIDI1NiwgMzczMDAsIDI1NiwgMzg1ODQsIDI1NiwgMjQ4MDEsIDI1NiwgMjAxMDIsIDI1NiwgMjA2OTgsIDI1NiwgMjM1MzQsIAotICAgIDI1NiwgMjM2MTUsIDI1NiwgMjYwMDksIDI1NiwgMjcxMzgsIDI1NiwgMjkxMzQsIDI1NiwgMzAyNzQsIDI1NiwgMzQwNDQsIAotICAgIDI1NiwgMzY5ODgsIDI1NiwgNDA4NDUsIDI1NiwgMjYyNDgsIDI1NiwgMzg0NDYsIDI1NiwgMjExMjksIDI1NiwgMjY0OTEsIAotICAgIDI1NiwgMjY2MTEsIDI1NiwgMjc5NjksIDI1NiwgMjgzMTYsIDI1NiwgMjk3MDUsIDI1NiwgMzAwNDEsIDI1NiwgMzA4MjcsIAotICAgIDI1NiwgMzIwMTYsIDI1NiwgMzkwMDYsIDI1NiwgMjA4NDUsIDI1NiwgMjUxMzQsIDI1NiwgMzg1MjAsIDI1NiwgMjA1MjMsIAotICAgIDI1NiwgMjM4MzMsIDI1NiwgMjgxMzgsIDI1NiwgMzY2NTAsIDI1NiwgMjQ0NTksIDI1NiwgMjQ5MDAsIDI1NiwgMjY2NDcsIAotICAgIDI1NiwgMjk1NzUsIDI1NiwgMzg1MzQsIDI1NiwgMjEwMzMsIDI1NiwgMjE1MTksIDI1NiwgMjM2NTMsIDI1NiwgMjYxMzEsIAotICAgIDI1NiwgMjY0NDYsIDI1NiwgMjY3OTIsIDI1NiwgMjc4NzcsIDI1NiwgMjk3MDIsIDI1NiwgMzAxNzgsIDI1NiwgMzI2MzMsIAotICAgIDI1NiwgMzUwMjMsIDI1NiwgMzUwNDEsIDI1NiwgMzczMjQsIDI1NiwgMzg2MjYsIDI1NiwgMjEzMTEsIDI1NiwgMjgzNDYsIAotICAgIDI1NiwgMjE1MzMsIDI1NiwgMjkxMzYsIDI1NiwgMjk4NDgsIDI1NiwgMzQyOTgsIDI1NiwgMzg1NjMsIDI1NiwgNDAwMjMsIAotICAgIDI1NiwgNDA2MDcsIDI1NiwgMjY1MTksIDI1NiwgMjgxMDcsIDI1NiwgMzMyNTYsIDI1NiwgMzE0MzUsIDI1NiwgMzE1MjAsIAotICAgIDI1NiwgMzE4OTAsIDI1NiwgMjkzNzYsIDI1NiwgMjg4MjUsIDI1NiwgMzU2NzIsIDI1NiwgMjAxNjAsIDI1NiwgMzM1OTAsIAotICAgIDI1NiwgMjEwNTAsIDI1NiwgMjA5OTksIDI1NiwgMjQyMzAsIDI1NiwgMjUyOTksIDI1NiwgMzE5NTgsIDI1NiwgMjM0MjksIAotICAgIDI1NiwgMjc5MzQsIDI1NiwgMjYyOTIsIDI1NiwgMzY2NjcsIDI1NiwgMzQ4OTIsIDI1NiwgMzg0NzcsIDI1NiwgMzUyMTEsIAotICAgIDI1NiwgMjQyNzUsIDI1NiwgMjA4MDAsIDI1NiwgMjE5NTIsIDI1NiwgMjI2MTgsIDI1NiwgMjYyMjgsIDI1NiwgMjA5NTgsIAotICAgIDI1NiwgMjk0ODIsIDI1NiwgMzA0MTAsIDI1NiwgMzEwMzYsIDI1NiwgMzEwNzAsIDI1NiwgMzEwNzcsIDI1NiwgMzExMTksIAotICAgIDI1NiwgMzg3NDIsIDI1NiwgMzE5MzQsIDI1NiwgMzI3MDEsIDI1NiwgMzQzMjIsIDI1NiwgMzU1NzYsIDI1NiwgMzY5MjAsIAotICAgIDI1NiwgMzcxMTcsIDI1NiwgMzkxNTEsIDI1NiwgMzkxNjQsIDI1NiwgMzkyMDgsIDI1NiwgNDAzNzIsIDI1NiwgMjAzOTgsIAotICAgIDI1NiwgMjA3MTEsIDI1NiwgMjA4MTMsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEzMjksIDI1NiwgMjE5MTcsIAotICAgIDI1NiwgMjIwMjIsIDI1NiwgMjIxMjAsIDI1NiwgMjI1OTIsIDI1NiwgMjI2OTYsIDI1NiwgMjM2NTIsIDI1NiwgMjM2NjIsIAotICAgIDI1NiwgMjQ3MjQsIDI1NiwgMjQ5MzYsIDI1NiwgMjQ5NzQsIDI1NiwgMjUwNzQsIDI1NiwgMjU5MzUsIDI1NiwgMjYwODIsIAotICAgIDI1NiwgMjYyNTcsIDI1NiwgMjY3NTcsIDI1NiwgMjgwMjMsIDI1NiwgMjgxODYsIDI1NiwgMjg0NTAsIDI1NiwgMjkwMzgsIAotICAgIDI1NiwgMjkyMjcsIDI1NiwgMjk3MzAsIDI1NiwgMzA4NjUsIDI1NiwgMzEwMzgsIDI1NiwgMzEwNDksIDI1NiwgMzEwNDgsIAotICAgIDI1NiwgMzEwNTYsIDI1NiwgMzEwNjIsIDI1NiwgMzEwNjksIDI1NiwgMzExMTcsIDI1NiwgMzExMTgsIDI1NiwgMzEyOTYsIAotICAgIDI1NiwgMzEzNjEsIDI1NiwgMzE2ODAsIDI1NiwgMzIyNDQsIDI1NiwgMzIyNjUsIDI1NiwgMzIzMjEsIDI1NiwgMzI2MjYsIAotICAgIDI1NiwgMzI3NzMsIDI1NiwgMzMyNjEsIDI1NiwgMzM0MDEsIDI1NiwgMzM0MDEsIDI1NiwgMzM4NzksIDI1NiwgMzUwODgsIAotICAgIDI1NiwgMzUyMjIsIDI1NiwgMzU1ODUsIDI1NiwgMzU2NDEsIDI1NiwgMzYwNTEsIDI1NiwgMzYxMDQsIDI1NiwgMzY3OTAsIAotICAgIDI1NiwgMzY5MjAsIDI1NiwgMzg2MjcsIDI1NiwgMzg5MTEsIDI1NiwgMzg5NzEsIDI1NiwgMjQ2OTMsIDI1NiwgMTQ4MjA2LCAKLSAgICAyNTYsIDMzMzA0LCAyNTYsIDIwMDA2LCAyNTYsIDIwOTE3LCAyNTYsIDIwODQwLCAyNTYsIDIwMzUyLCAyNTYsIDIwODA1LCAKLSAgICAyNTYsIDIwODY0LCAyNTYsIDIxMTkxLCAyNTYsIDIxMjQyLCAyNTYsIDIxOTE3LCAyNTYsIDIxODQ1LCAyNTYsIDIxOTEzLCAKLSAgICAyNTYsIDIxOTg2LCAyNTYsIDIyNjE4LCAyNTYsIDIyNzA3LCAyNTYsIDIyODUyLCAyNTYsIDIyODY4LCAyNTYsIDIzMTM4LCAKLSAgICAyNTYsIDIzMzM2LCAyNTYsIDI0Mjc0LCAyNTYsIDI0MjgxLCAyNTYsIDI0NDI1LCAyNTYsIDI0NDkzLCAyNTYsIDI0NzkyLCAKLSAgICAyNTYsIDI0OTEwLCAyNTYsIDI0ODQwLCAyNTYsIDI0OTc0LCAyNTYsIDI0OTI4LCAyNTYsIDI1MDc0LCAyNTYsIDI1MTQwLCAKLSAgICAyNTYsIDI1NTQwLCAyNTYsIDI1NjI4LCAyNTYsIDI1NjgyLCAyNTYsIDI1OTQyLCAyNTYsIDI2MjI4LCAyNTYsIDI2MzkxLCAKLSAgICAyNTYsIDI2Mzk1LCAyNTYsIDI2NDU0LCAyNTYsIDI3NTEzLCAyNTYsIDI3NTc4LCAyNTYsIDI3OTY5LCAyNTYsIDI4Mzc5LCAKLSAgICAyNTYsIDI4MzYzLCAyNTYsIDI4NDUwLCAyNTYsIDI4NzAyLCAyNTYsIDI5MDM4LCAyNTYsIDMwNjMxLCAyNTYsIDI5MjM3LCAKLSAgICAyNTYsIDI5MzU5LCAyNTYsIDI5NDgyLCAyNTYsIDI5ODA5LCAyNTYsIDI5OTU4LCAyNTYsIDMwMDExLCAyNTYsIDMwMjM3LCAKLSAgICAyNTYsIDMwMjM5LCAyNTYsIDMwNDEwLCAyNTYsIDMwNDI3LCAyNTYsIDMwNDUyLCAyNTYsIDMwNTM4LCAyNTYsIDMwNTI4LCAKLSAgICAyNTYsIDMwOTI0LCAyNTYsIDMxNDA5LCAyNTYsIDMxNjgwLCAyNTYsIDMxODY3LCAyNTYsIDMyMDkxLCAyNTYsIDMyMjQ0LCAKLSAgICAyNTYsIDMyNTc0LCAyNTYsIDMyNzczLCAyNTYsIDMzNjE4LCAyNTYsIDMzNzc1LCAyNTYsIDM0NjgxLCAyNTYsIDM1MTM3LCAKLSAgICAyNTYsIDM1MjA2LCAyNTYsIDM1MjIyLCAyNTYsIDM1NTE5LCAyNTYsIDM1NTc2LCAyNTYsIDM1NTMxLCAyNTYsIDM1NTg1LCAKLSAgICAyNTYsIDM1NTgyLCAyNTYsIDM1NTY1LCAyNTYsIDM1NjQxLCAyNTYsIDM1NzIyLCAyNTYsIDM2MTA0LCAyNTYsIDM2NjY0LCAKLSAgICAyNTYsIDM2OTc4LCAyNTYsIDM3MjczLCAyNTYsIDM3NDk0LCAyNTYsIDM4NTI0LCAyNTYsIDM4NjI3LCAyNTYsIDM4NzQyLCAKLSAgICAyNTYsIDM4ODc1LCAyNTYsIDM4OTExLCAyNTYsIDM4OTIzLCAyNTYsIDM4OTcxLCAyNTYsIDM5Njk4LCAyNTYsIDQwODYwLCAKLSAgICAyNTYsIDE0MTM4NiwgMjU2LCAxNDEzODAsIDI1NiwgMTQ0MzQxLCAyNTYsIDE1MjYxLCAyNTYsIDE2NDA4LCAyNTYsIAotICAgIDE2NDQxLCAyNTYsIDE1MjEzNywgMjU2LCAxNTQ4MzIsIDI1NiwgMTYzNTM5LCAyNTYsIDQwNzcxLCAyNTYsIDQwODQ2LCAKLSAgICA1MTQsIDEwMiwgMTAyLCA1MTQsIDEwMiwgMTA1LCA1MTQsIDEwMiwgMTA4LCA3NzAsIDEwMiwgMTAyLCAxMDUsIDc3MCwgCi0gICAgMTAyLCAxMDIsIDEwOCwgNTE0LCAzODMsIDExNiwgNTE0LCAxMTUsIDExNiwgNTE0LCAxMzk2LCAxMzk4LCA1MTQsIDEzOTYsIAotICAgIDEzODEsIDUxNCwgMTM5NiwgMTM4NywgNTE0LCAxNDA2LCAxMzk4LCA1MTQsIDEzOTYsIDEzODksIDUxMiwgMTQ5NywgMTQ2MCwgCi0gICAgNTEyLCAxNTIyLCAxNDYzLCAyNjIsIDE1MDYsIDI2MiwgMTQ4OCwgMjYyLCAxNDkxLCAyNjIsIDE0OTIsIDI2MiwgMTQ5OSwgCi0gICAgMjYyLCAxNTAwLCAyNjIsIDE1MDEsIDI2MiwgMTUxMiwgMjYyLCAxNTE0LCAyNjIsIDQzLCA1MTIsIDE1MTMsIDE0NzMsIAotICAgIDUxMiwgMTUxMywgMTQ3NCwgNTEyLCA2NDMyOSwgMTQ3MywgNTEyLCA2NDMyOSwgMTQ3NCwgNTEyLCAxNDg4LCAxNDYzLCAKLSAgICA1MTIsIDE0ODgsIDE0NjQsIDUxMiwgMTQ4OCwgMTQ2OCwgNTEyLCAxNDg5LCAxNDY4LCA1MTIsIDE0OTAsIDE0NjgsIDUxMiwgCi0gICAgMTQ5MSwgMTQ2OCwgNTEyLCAxNDkyLCAxNDY4LCA1MTIsIDE0OTMsIDE0NjgsIDUxMiwgMTQ5NCwgMTQ2OCwgNTEyLCAxNDk2LCAKLSAgICAxNDY4LCA1MTIsIDE0OTcsIDE0NjgsIDUxMiwgMTQ5OCwgMTQ2OCwgNTEyLCAxNDk5LCAxNDY4LCA1MTIsIDE1MDAsIDE0NjgsIAotICAgIDUxMiwgMTUwMiwgMTQ2OCwgNTEyLCAxNTA0LCAxNDY4LCA1MTIsIDE1MDUsIDE0NjgsIDUxMiwgMTUwNywgMTQ2OCwgNTEyLCAKLSAgICAxNTA4LCAxNDY4LCA1MTIsIDE1MTAsIDE0NjgsIDUxMiwgMTUxMSwgMTQ2OCwgNTEyLCAxNTEyLCAxNDY4LCA1MTIsIDE1MTMsIAotICAgIDE0NjgsIDUxMiwgMTUxNCwgMTQ2OCwgNTEyLCAxNDkzLCAxNDY1LCA1MTIsIDE0ODksIDE0NzEsIDUxMiwgMTQ5OSwgMTQ3MSwgCi0gICAgNTEyLCAxNTA4LCAxNDcxLCA1MTQsIDE0ODgsIDE1MDAsIDI2NywgMTY0OSwgMjY4LCAxNjQ5LCAyNjcsIDE2NTksIDI2OCwgCi0gICAgMTY1OSwgMjY5LCAxNjU5LCAyNzAsIDE2NTksIDI2NywgMTY2MiwgMjY4LCAxNjYyLCAyNjksIDE2NjIsIDI3MCwgMTY2MiwgCi0gICAgMjY3LCAxNjY0LCAyNjgsIDE2NjQsIDI2OSwgMTY2NCwgMjcwLCAxNjY0LCAyNjcsIDE2NTgsIDI2OCwgMTY1OCwgMjY5LCAKLSAgICAxNjU4LCAyNzAsIDE2NTgsIDI2NywgMTY2MywgMjY4LCAxNjYzLCAyNjksIDE2NjMsIDI3MCwgMTY2MywgMjY3LCAxNjU3LCAKLSAgICAyNjgsIDE2NTcsIDI2OSwgMTY1NywgMjcwLCAxNjU3LCAyNjcsIDE3MDAsIDI2OCwgMTcwMCwgMjY5LCAxNzAwLCAyNzAsIAotICAgIDE3MDAsIDI2NywgMTcwMiwgMjY4LCAxNzAyLCAyNjksIDE3MDIsIDI3MCwgMTcwMiwgMjY3LCAxNjY4LCAyNjgsIDE2NjgsIAotICAgIDI2OSwgMTY2OCwgMjcwLCAxNjY4LCAyNjcsIDE2NjcsIDI2OCwgMTY2NywgMjY5LCAxNjY3LCAyNzAsIDE2NjcsIDI2NywgCi0gICAgMTY3MCwgMjY4LCAxNjcwLCAyNjksIDE2NzAsIDI3MCwgMTY3MCwgMjY3LCAxNjcxLCAyNjgsIDE2NzEsIDI2OSwgMTY3MSwgCi0gICAgMjcwLCAxNjcxLCAyNjcsIDE2NzcsIDI2OCwgMTY3NywgMjY3LCAxNjc2LCAyNjgsIDE2NzYsIDI2NywgMTY3OCwgMjY4LCAKLSAgICAxNjc4LCAyNjcsIDE2NzIsIDI2OCwgMTY3MiwgMjY3LCAxNjg4LCAyNjgsIDE2ODgsIDI2NywgMTY4MSwgMjY4LCAxNjgxLCAKLSAgICAyNjcsIDE3MDUsIDI2OCwgMTcwNSwgMjY5LCAxNzA1LCAyNzAsIDE3MDUsIDI2NywgMTcxMSwgMjY4LCAxNzExLCAyNjksIAotICAgIDE3MTEsIDI3MCwgMTcxMSwgMjY3LCAxNzE1LCAyNjgsIDE3MTUsIDI2OSwgMTcxNSwgMjcwLCAxNzE1LCAyNjcsIDE3MTMsIAotICAgIDI2OCwgMTcxMywgMjY5LCAxNzEzLCAyNzAsIDE3MTMsIDI2NywgMTcyMiwgMjY4LCAxNzIyLCAyNjcsIDE3MjMsIDI2OCwgCi0gICAgMTcyMywgMjY5LCAxNzIzLCAyNzAsIDE3MjMsIDI2NywgMTcyOCwgMjY4LCAxNzI4LCAyNjcsIDE3MjksIDI2OCwgMTcyOSwgCi0gICAgMjY5LCAxNzI5LCAyNzAsIDE3MjksIDI2NywgMTcyNiwgMjY4LCAxNzI2LCAyNjksIDE3MjYsIDI3MCwgMTcyNiwgMjY3LCAKLSAgICAxNzQ2LCAyNjgsIDE3NDYsIDI2NywgMTc0NywgMjY4LCAxNzQ3LCAyNjcsIDE3MDksIDI2OCwgMTcwOSwgMjY5LCAxNzA5LCAKLSAgICAyNzAsIDE3MDksIDI2NywgMTczNSwgMjY4LCAxNzM1LCAyNjcsIDE3MzQsIDI2OCwgMTczNCwgMjY3LCAxNzM2LCAyNjgsIAotICAgIDE3MzYsIDI2NywgMTY1NSwgMjY3LCAxNzM5LCAyNjgsIDE3MzksIDI2NywgMTczMywgMjY4LCAxNzMzLCAyNjcsIDE3MzcsIAotICAgIDI2OCwgMTczNywgMjY3LCAxNzQ0LCAyNjgsIDE3NDQsIDI2OSwgMTc0NCwgMjcwLCAxNzQ0LCAyNjksIDE2MDksIDI3MCwgCi0gICAgMTYwOSwgNTIzLCAxNTc0LCAxNTc1LCA1MjQsIDE1NzQsIDE1NzUsIDUyMywgMTU3NCwgMTc0OSwgNTI0LCAxNTc0LCAxNzQ5LCAKLSAgICA1MjMsIDE1NzQsIDE2MDgsIDUyNCwgMTU3NCwgMTYwOCwgNTIzLCAxNTc0LCAxNzM1LCA1MjQsIDE1NzQsIDE3MzUsIDUyMywgCi0gICAgMTU3NCwgMTczNCwgNTI0LCAxNTc0LCAxNzM0LCA1MjMsIDE1NzQsIDE3MzYsIDUyNCwgMTU3NCwgMTczNiwgNTIzLCAxNTc0LCAKLSAgICAxNzQ0LCA1MjQsIDE1NzQsIDE3NDQsIDUyNSwgMTU3NCwgMTc0NCwgNTIzLCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MDksIAotICAgIDUyNSwgMTU3NCwgMTYwOSwgMjY3LCAxNzQwLCAyNjgsIDE3NDAsIDI2OSwgMTc0MCwgMjcwLCAxNzQwLCA1MjMsIDE1NzQsIAotICAgIDE1ODAsIDUyMywgMTU3NCwgMTU4MSwgNTIzLCAxNTc0LCAxNjA1LCA1MjMsIDE1NzQsIDE2MDksIDUyMywgMTU3NCwgMTYxMCwgCi0gICAgNTIzLCAxNTc2LCAxNTgwLCA1MjMsIDE1NzYsIDE1ODEsIDUyMywgMTU3NiwgMTU4MiwgNTIzLCAxNTc2LCAxNjA1LCA1MjMsIAotICAgIDE1NzYsIDE2MDksIDUyMywgMTU3NiwgMTYxMCwgNTIzLCAxNTc4LCAxNTgwLCA1MjMsIDE1NzgsIDE1ODEsIDUyMywgMTU3OCwgCi0gICAgMTU4MiwgNTIzLCAxNTc4LCAxNjA1LCA1MjMsIDE1NzgsIDE2MDksIDUyMywgMTU3OCwgMTYxMCwgNTIzLCAxNTc5LCAxNTgwLCAKLSAgICA1MjMsIDE1NzksIDE2MDUsIDUyMywgMTU3OSwgMTYwOSwgNTIzLCAxNTc5LCAxNjEwLCA1MjMsIDE1ODAsIDE1ODEsIDUyMywgCi0gICAgMTU4MCwgMTYwNSwgNTIzLCAxNTgxLCAxNTgwLCA1MjMsIDE1ODEsIDE2MDUsIDUyMywgMTU4MiwgMTU4MCwgNTIzLCAxNTgyLCAKLSAgICAxNTgxLCA1MjMsIDE1ODIsIDE2MDUsIDUyMywgMTU4NywgMTU4MCwgNTIzLCAxNTg3LCAxNTgxLCA1MjMsIDE1ODcsIDE1ODIsIAotICAgIDUyMywgMTU4NywgMTYwNSwgNTIzLCAxNTg5LCAxNTgxLCA1MjMsIDE1ODksIDE2MDUsIDUyMywgMTU5MCwgMTU4MCwgNTIzLCAKLSAgICAxNTkwLCAxNTgxLCA1MjMsIDE1OTAsIDE1ODIsIDUyMywgMTU5MCwgMTYwNSwgNTIzLCAxNTkxLCAxNTgxLCA1MjMsIDE1OTEsIAotICAgIDE2MDUsIDUyMywgMTU5MiwgMTYwNSwgNTIzLCAxNTkzLCAxNTgwLCA1MjMsIDE1OTMsIDE2MDUsIDUyMywgMTU5NCwgMTU4MCwgCi0gICAgNTIzLCAxNTk0LCAxNjA1LCA1MjMsIDE2MDEsIDE1ODAsIDUyMywgMTYwMSwgMTU4MSwgNTIzLCAxNjAxLCAxNTgyLCA1MjMsIAotICAgIDE2MDEsIDE2MDUsIDUyMywgMTYwMSwgMTYwOSwgNTIzLCAxNjAxLCAxNjEwLCA1MjMsIDE2MDIsIDE1ODEsIDUyMywgMTYwMiwgCi0gICAgMTYwNSwgNTIzLCAxNjAyLCAxNjA5LCA1MjMsIDE2MDIsIDE2MTAsIDUyMywgMTYwMywgMTU3NSwgNTIzLCAxNjAzLCAxNTgwLCAKLSAgICA1MjMsIDE2MDMsIDE1ODEsIDUyMywgMTYwMywgMTU4MiwgNTIzLCAxNjAzLCAxNjA0LCA1MjMsIDE2MDMsIDE2MDUsIDUyMywgCi0gICAgMTYwMywgMTYwOSwgNTIzLCAxNjAzLCAxNjEwLCA1MjMsIDE2MDQsIDE1ODAsIDUyMywgMTYwNCwgMTU4MSwgNTIzLCAxNjA0LCAKLSAgICAxNTgyLCA1MjMsIDE2MDQsIDE2MDUsIDUyMywgMTYwNCwgMTYwOSwgNTIzLCAxNjA0LCAxNjEwLCA1MjMsIDE2MDUsIDE1ODAsIAotICAgIDUyMywgMTYwNSwgMTU4MSwgNTIzLCAxNjA1LCAxNTgyLCA1MjMsIDE2MDUsIDE2MDUsIDUyMywgMTYwNSwgMTYwOSwgNTIzLCAKLSAgICAxNjA1LCAxNjEwLCA1MjMsIDE2MDYsIDE1ODAsIDUyMywgMTYwNiwgMTU4MSwgNTIzLCAxNjA2LCAxNTgyLCA1MjMsIDE2MDYsIAotICAgIDE2MDUsIDUyMywgMTYwNiwgMTYwOSwgNTIzLCAxNjA2LCAxNjEwLCA1MjMsIDE2MDcsIDE1ODAsIDUyMywgMTYwNywgMTYwNSwgCi0gICAgNTIzLCAxNjA3LCAxNjA5LCA1MjMsIDE2MDcsIDE2MTAsIDUyMywgMTYxMCwgMTU4MCwgNTIzLCAxNjEwLCAxNTgxLCA1MjMsIAotICAgIDE2MTAsIDE1ODIsIDUyMywgMTYxMCwgMTYwNSwgNTIzLCAxNjEwLCAxNjA5LCA1MjMsIDE2MTAsIDE2MTAsIDUyMywgMTU4NCwgCi0gICAgMTY0OCwgNTIzLCAxNTg1LCAxNjQ4LCA1MjMsIDE2MDksIDE2NDgsIDc3OSwgMzIsIDE2MTIsIDE2MTcsIDc3OSwgMzIsIAotICAgIDE2MTMsIDE2MTcsIDc3OSwgMzIsIDE2MTQsIDE2MTcsIDc3OSwgMzIsIDE2MTUsIDE2MTcsIDc3OSwgMzIsIDE2MTYsIAotICAgIDE2MTcsIDc3OSwgMzIsIDE2MTcsIDE2NDgsIDUyNCwgMTU3NCwgMTU4NSwgNTI0LCAxNTc0LCAxNTg2LCA1MjQsIDE1NzQsIAotICAgIDE2MDUsIDUyNCwgMTU3NCwgMTYwNiwgNTI0LCAxNTc0LCAxNjA5LCA1MjQsIDE1NzQsIDE2MTAsIDUyNCwgMTU3NiwgMTU4NSwgCi0gICAgNTI0LCAxNTc2LCAxNTg2LCA1MjQsIDE1NzYsIDE2MDUsIDUyNCwgMTU3NiwgMTYwNiwgNTI0LCAxNTc2LCAxNjA5LCA1MjQsIAotICAgIDE1NzYsIDE2MTAsIDUyNCwgMTU3OCwgMTU4NSwgNTI0LCAxNTc4LCAxNTg2LCA1MjQsIDE1NzgsIDE2MDUsIDUyNCwgMTU3OCwgCi0gICAgMTYwNiwgNTI0LCAxNTc4LCAxNjA5LCA1MjQsIDE1NzgsIDE2MTAsIDUyNCwgMTU3OSwgMTU4NSwgNTI0LCAxNTc5LCAxNTg2LCAKLSAgICA1MjQsIDE1NzksIDE2MDUsIDUyNCwgMTU3OSwgMTYwNiwgNTI0LCAxNTc5LCAxNjA5LCA1MjQsIDE1NzksIDE2MTAsIDUyNCwgCi0gICAgMTYwMSwgMTYwOSwgNTI0LCAxNjAxLCAxNjEwLCA1MjQsIDE2MDIsIDE2MDksIDUyNCwgMTYwMiwgMTYxMCwgNTI0LCAxNjAzLCAKLSAgICAxNTc1LCA1MjQsIDE2MDMsIDE2MDQsIDUyNCwgMTYwMywgMTYwNSwgNTI0LCAxNjAzLCAxNjA5LCA1MjQsIDE2MDMsIDE2MTAsIAotICAgIDUyNCwgMTYwNCwgMTYwNSwgNTI0LCAxNjA0LCAxNjA5LCA1MjQsIDE2MDQsIDE2MTAsIDUyNCwgMTYwNSwgMTU3NSwgNTI0LCAKLSAgICAxNjA1LCAxNjA1LCA1MjQsIDE2MDYsIDE1ODUsIDUyNCwgMTYwNiwgMTU4NiwgNTI0LCAxNjA2LCAxNjA1LCA1MjQsIDE2MDYsIAotICAgIDE2MDYsIDUyNCwgMTYwNiwgMTYwOSwgNTI0LCAxNjA2LCAxNjEwLCA1MjQsIDE2MDksIDE2NDgsIDUyNCwgMTYxMCwgMTU4NSwgCi0gICAgNTI0LCAxNjEwLCAxNTg2LCA1MjQsIDE2MTAsIDE2MDUsIDUyNCwgMTYxMCwgMTYwNiwgNTI0LCAxNjEwLCAxNjA5LCA1MjQsIAotICAgIDE2MTAsIDE2MTAsIDUyNSwgMTU3NCwgMTU4MCwgNTI1LCAxNTc0LCAxNTgxLCA1MjUsIDE1NzQsIDE1ODIsIDUyNSwgMTU3NCwgCi0gICAgMTYwNSwgNTI1LCAxNTc0LCAxNjA3LCA1MjUsIDE1NzYsIDE1ODAsIDUyNSwgMTU3NiwgMTU4MSwgNTI1LCAxNTc2LCAxNTgyLCAKLSAgICA1MjUsIDE1NzYsIDE2MDUsIDUyNSwgMTU3NiwgMTYwNywgNTI1LCAxNTc4LCAxNTgwLCA1MjUsIDE1NzgsIDE1ODEsIDUyNSwgCi0gICAgMTU3OCwgMTU4MiwgNTI1LCAxNTc4LCAxNjA1LCA1MjUsIDE1NzgsIDE2MDcsIDUyNSwgMTU3OSwgMTYwNSwgNTI1LCAxNTgwLCAKLSAgICAxNTgxLCA1MjUsIDE1ODAsIDE2MDUsIDUyNSwgMTU4MSwgMTU4MCwgNTI1LCAxNTgxLCAxNjA1LCA1MjUsIDE1ODIsIDE1ODAsIAotICAgIDUyNSwgMTU4MiwgMTYwNSwgNTI1LCAxNTg3LCAxNTgwLCA1MjUsIDE1ODcsIDE1ODEsIDUyNSwgMTU4NywgMTU4MiwgNTI1LCAKLSAgICAxNTg3LCAxNjA1LCA1MjUsIDE1ODksIDE1ODEsIDUyNSwgMTU4OSwgMTU4MiwgNTI1LCAxNTg5LCAxNjA1LCA1MjUsIDE1OTAsIAotICAgIDE1ODAsIDUyNSwgMTU5MCwgMTU4MSwgNTI1LCAxNTkwLCAxNTgyLCA1MjUsIDE1OTAsIDE2MDUsIDUyNSwgMTU5MSwgMTU4MSwgCi0gICAgNTI1LCAxNTkyLCAxNjA1LCA1MjUsIDE1OTMsIDE1ODAsIDUyNSwgMTU5MywgMTYwNSwgNTI1LCAxNTk0LCAxNTgwLCA1MjUsIAotICAgIDE1OTQsIDE2MDUsIDUyNSwgMTYwMSwgMTU4MCwgNTI1LCAxNjAxLCAxNTgxLCA1MjUsIDE2MDEsIDE1ODIsIDUyNSwgMTYwMSwgCi0gICAgMTYwNSwgNTI1LCAxNjAyLCAxNTgxLCA1MjUsIDE2MDIsIDE2MDUsIDUyNSwgMTYwMywgMTU4MCwgNTI1LCAxNjAzLCAxNTgxLCAKLSAgICA1MjUsIDE2MDMsIDE1ODIsIDUyNSwgMTYwMywgMTYwNCwgNTI1LCAxNjAzLCAxNjA1LCA1MjUsIDE2MDQsIDE1ODAsIDUyNSwgCi0gICAgMTYwNCwgMTU4MSwgNTI1LCAxNjA0LCAxNTgyLCA1MjUsIDE2MDQsIDE2MDUsIDUyNSwgMTYwNCwgMTYwNywgNTI1LCAxNjA1LCAKLSAgICAxNTgwLCA1MjUsIDE2MDUsIDE1ODEsIDUyNSwgMTYwNSwgMTU4MiwgNTI1LCAxNjA1LCAxNjA1LCA1MjUsIDE2MDYsIDE1ODAsIAotICAgIDUyNSwgMTYwNiwgMTU4MSwgNTI1LCAxNjA2LCAxNTgyLCA1MjUsIDE2MDYsIDE2MDUsIDUyNSwgMTYwNiwgMTYwNywgNTI1LCAKLSAgICAxNjA3LCAxNTgwLCA1MjUsIDE2MDcsIDE2MDUsIDUyNSwgMTYwNywgMTY0OCwgNTI1LCAxNjEwLCAxNTgwLCA1MjUsIDE2MTAsIAotICAgIDE1ODEsIDUyNSwgMTYxMCwgMTU4MiwgNTI1LCAxNjEwLCAxNjA1LCA1MjUsIDE2MTAsIDE2MDcsIDUyNiwgMTU3NCwgMTYwNSwgCi0gICAgNTI2LCAxNTc0LCAxNjA3LCA1MjYsIDE1NzYsIDE2MDUsIDUyNiwgMTU3NiwgMTYwNywgNTI2LCAxNTc4LCAxNjA1LCA1MjYsIAotICAgIDE1NzgsIDE2MDcsIDUyNiwgMTU3OSwgMTYwNSwgNTI2LCAxNTc5LCAxNjA3LCA1MjYsIDE1ODcsIDE2MDUsIDUyNiwgMTU4NywgCi0gICAgMTYwNywgNTI2LCAxNTg4LCAxNjA1LCA1MjYsIDE1ODgsIDE2MDcsIDUyNiwgMTYwMywgMTYwNCwgNTI2LCAxNjAzLCAxNjA1LCAKLSAgICA1MjYsIDE2MDQsIDE2MDUsIDUyNiwgMTYwNiwgMTYwNSwgNTI2LCAxNjA2LCAxNjA3LCA1MjYsIDE2MTAsIDE2MDUsIDUyNiwgCi0gICAgMTYxMCwgMTYwNywgNzgyLCAxNjAwLCAxNjE0LCAxNjE3LCA3ODIsIDE2MDAsIDE2MTUsIDE2MTcsIDc4MiwgMTYwMCwgCi0gICAgMTYxNiwgMTYxNywgNTIzLCAxNTkxLCAxNjA5LCA1MjMsIDE1OTEsIDE2MTAsIDUyMywgMTU5MywgMTYwOSwgNTIzLCAxNTkzLCAKLSAgICAxNjEwLCA1MjMsIDE1OTQsIDE2MDksIDUyMywgMTU5NCwgMTYxMCwgNTIzLCAxNTg3LCAxNjA5LCA1MjMsIDE1ODcsIDE2MTAsIAotICAgIDUyMywgMTU4OCwgMTYwOSwgNTIzLCAxNTg4LCAxNjEwLCA1MjMsIDE1ODEsIDE2MDksIDUyMywgMTU4MSwgMTYxMCwgNTIzLCAKLSAgICAxNTgwLCAxNjA5LCA1MjMsIDE1ODAsIDE2MTAsIDUyMywgMTU4MiwgMTYwOSwgNTIzLCAxNTgyLCAxNjEwLCA1MjMsIDE1ODksIAotICAgIDE2MDksIDUyMywgMTU4OSwgMTYxMCwgNTIzLCAxNTkwLCAxNjA5LCA1MjMsIDE1OTAsIDE2MTAsIDUyMywgMTU4OCwgMTU4MCwgCi0gICAgNTIzLCAxNTg4LCAxNTgxLCA1MjMsIDE1ODgsIDE1ODIsIDUyMywgMTU4OCwgMTYwNSwgNTIzLCAxNTg4LCAxNTg1LCA1MjMsIAotICAgIDE1ODcsIDE1ODUsIDUyMywgMTU4OSwgMTU4NSwgNTIzLCAxNTkwLCAxNTg1LCA1MjQsIDE1OTEsIDE2MDksIDUyNCwgMTU5MSwgCi0gICAgMTYxMCwgNTI0LCAxNTkzLCAxNjA5LCA1MjQsIDE1OTMsIDE2MTAsIDUyNCwgMTU5NCwgMTYwOSwgNTI0LCAxNTk0LCAxNjEwLCAKLSAgICA1MjQsIDE1ODcsIDE2MDksIDUyNCwgMTU4NywgMTYxMCwgNTI0LCAxNTg4LCAxNjA5LCA1MjQsIDE1ODgsIDE2MTAsIDUyNCwgCi0gICAgMTU4MSwgMTYwOSwgNTI0LCAxNTgxLCAxNjEwLCA1MjQsIDE1ODAsIDE2MDksIDUyNCwgMTU4MCwgMTYxMCwgNTI0LCAxNTgyLCAKLSAgICAxNjA5LCA1MjQsIDE1ODIsIDE2MTAsIDUyNCwgMTU4OSwgMTYwOSwgNTI0LCAxNTg5LCAxNjEwLCA1MjQsIDE1OTAsIDE2MDksIAotICAgIDUyNCwgMTU5MCwgMTYxMCwgNTI0LCAxNTg4LCAxNTgwLCA1MjQsIDE1ODgsIDE1ODEsIDUyNCwgMTU4OCwgMTU4MiwgNTI0LCAKLSAgICAxNTg4LCAxNjA1LCA1MjQsIDE1ODgsIDE1ODUsIDUyNCwgMTU4NywgMTU4NSwgNTI0LCAxNTg5LCAxNTg1LCA1MjQsIDE1OTAsIAotICAgIDE1ODUsIDUyNSwgMTU4OCwgMTU4MCwgNTI1LCAxNTg4LCAxNTgxLCA1MjUsIDE1ODgsIDE1ODIsIDUyNSwgMTU4OCwgMTYwNSwgCi0gICAgNTI1LCAxNTg3LCAxNjA3LCA1MjUsIDE1ODgsIDE2MDcsIDUyNSwgMTU5MSwgMTYwNSwgNTI2LCAxNTg3LCAxNTgwLCA1MjYsIAotICAgIDE1ODcsIDE1ODEsIDUyNiwgMTU4NywgMTU4MiwgNTI2LCAxNTg4LCAxNTgwLCA1MjYsIDE1ODgsIDE1ODEsIDUyNiwgMTU4OCwgCi0gICAgMTU4MiwgNTI2LCAxNTkxLCAxNjA1LCA1MjYsIDE1OTIsIDE2MDUsIDUyNCwgMTU3NSwgMTYxMSwgNTIzLCAxNTc1LCAxNjExLCAKLSAgICA3ODEsIDE1NzgsIDE1ODAsIDE2MDUsIDc4MCwgMTU3OCwgMTU4MSwgMTU4MCwgNzgxLCAxNTc4LCAxNTgxLCAxNTgwLCA3ODEsIAotICAgIDE1NzgsIDE1ODEsIDE2MDUsIDc4MSwgMTU3OCwgMTU4MiwgMTYwNSwgNzgxLCAxNTc4LCAxNjA1LCAxNTgwLCA3ODEsIAotICAgIDE1NzgsIDE2MDUsIDE1ODEsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTgwLCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE1ODAsIDE2MDUsIDE1ODEsIDc4MCwgMTU4MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTgxLCAxNjA1LCAxNjA5LCA3ODEsIAotICAgIDE1ODcsIDE1ODEsIDE1ODAsIDc4MSwgMTU4NywgMTU4MCwgMTU4MSwgNzgwLCAxNTg3LCAxNTgwLCAxNjA5LCA3ODAsIAotICAgIDE1ODcsIDE2MDUsIDE1ODEsIDc4MSwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAxNTgwLCA3ODAsIAotICAgIDE1ODcsIDE2MDUsIDE2MDUsIDc4MSwgMTU4NywgMTYwNSwgMTYwNSwgNzgwLCAxNTg5LCAxNTgxLCAxNTgxLCA3ODEsIAotICAgIDE1ODksIDE1ODEsIDE1ODEsIDc4MCwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgxLCAxNjA1LCA3ODEsIAotICAgIDE1ODgsIDE1ODEsIDE2MDUsIDc4MCwgMTU4OCwgMTU4MCwgMTYxMCwgNzgwLCAxNTg4LCAxNjA1LCAxNTgyLCA3ODEsIAotICAgIDE1ODgsIDE2MDUsIDE1ODIsIDc4MCwgMTU4OCwgMTYwNSwgMTYwNSwgNzgxLCAxNTg4LCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTAsIDE1ODEsIDE2MDksIDc4MCwgMTU5MCwgMTU4MiwgMTYwNSwgNzgxLCAxNTkwLCAxNTgyLCAxNjA1LCA3ODAsIAotICAgIDE1OTEsIDE2MDUsIDE1ODEsIDc4MSwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTEsIDE2MDUsIDE2MTAsIDc4MCwgMTU5MywgMTU4MCwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE1OTMsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYwOSwgNzgwLCAxNTk0LCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE1OTQsIDE2MDUsIDE2MTAsIDc4MCwgMTU5NCwgMTYwNSwgMTYwOSwgNzgwLCAxNjAxLCAxNTgyLCAxNjA1LCA3ODEsIAotICAgIDE2MDEsIDE1ODIsIDE2MDUsIDc4MCwgMTYwMiwgMTYwNSwgMTU4MSwgNzgwLCAxNjAyLCAxNjA1LCAxNjA1LCA3ODAsIAotICAgIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYxMCwgNzgwLCAxNjA0LCAxNTgxLCAxNjA5LCA3ODEsIAotICAgIDE2MDQsIDE1ODAsIDE1ODAsIDc4MCwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgyLCAxNjA1LCA3ODEsIAotICAgIDE2MDQsIDE1ODIsIDE2MDUsIDc4MCwgMTYwNCwgMTYwNSwgMTU4MSwgNzgxLCAxNjA0LCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE2MDUsIDE1ODEsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MSwgMTYwNSwgNzgwLCAxNjA1LCAxNTgxLCAxNjEwLCA3ODEsIAotICAgIDE2MDUsIDE1ODAsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MCwgMTYwNSwgNzgxLCAxNjA1LCAxNTgyLCAxNTgwLCA3ODEsIAotICAgIDE2MDUsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MiwgNzgxLCAxNjA3LCAxNjA1LCAxNTgwLCA3ODEsIAotICAgIDE2MDcsIDE2MDUsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MSwgMTYwNSwgNzgwLCAxNjA2LCAxNTgxLCAxNjA5LCA3ODAsIAotICAgIDE2MDYsIDE1ODAsIDE2MDUsIDc4MSwgMTYwNiwgMTU4MCwgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNjA5LCA3ODAsIAotICAgIDE2MDYsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTYwNSwgMTYwOSwgNzgwLCAxNjEwLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE2MTAsIDE2MDUsIDE2MDUsIDc4MCwgMTU3NiwgMTU4MiwgMTYxMCwgNzgwLCAxNTc4LCAxNTgwLCAxNjEwLCA3ODAsIAotICAgIDE1NzgsIDE1ODAsIDE2MDksIDc4MCwgMTU3OCwgMTU4MiwgMTYxMCwgNzgwLCAxNTc4LCAxNTgyLCAxNjA5LCA3ODAsIAotICAgIDE1NzgsIDE2MDUsIDE2MTAsIDc4MCwgMTU3OCwgMTYwNSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAxNjEwLCA3ODAsIAotICAgIDE1ODAsIDE1ODEsIDE2MDksIDc4MCwgMTU4MCwgMTYwNSwgMTYwOSwgNzgwLCAxNTg3LCAxNTgyLCAxNjA5LCA3ODAsIAotICAgIDE1ODksIDE1ODEsIDE2MTAsIDc4MCwgMTU4OCwgMTU4MSwgMTYxMCwgNzgwLCAxNTkwLCAxNTgxLCAxNjEwLCA3ODAsIAotICAgIDE2MDQsIDE1ODAsIDE2MTAsIDc4MCwgMTYwNCwgMTYwNSwgMTYxMCwgNzgwLCAxNjEwLCAxNTgxLCAxNjEwLCA3ODAsIAotICAgIDE2MTAsIDE1ODAsIDE2MTAsIDc4MCwgMTYxMCwgMTYwNSwgMTYxMCwgNzgwLCAxNjA1LCAxNjA1LCAxNjEwLCA3ODAsIAotICAgIDE2MDIsIDE2MDUsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MSwgMTYxMCwgNzgxLCAxNjAyLCAxNjA1LCAxNTgxLCA3ODEsIAotICAgIDE2MDQsIDE1ODEsIDE2MDUsIDc4MCwgMTU5MywgMTYwNSwgMTYxMCwgNzgwLCAxNjAzLCAxNjA1LCAxNjEwLCA3ODEsIAotICAgIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTYwNSwgMTU4MiwgMTYxMCwgNzgxLCAxNjA0LCAxNTgwLCAxNjA1LCA3ODAsIAotICAgIDE2MDMsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MCwgMTYwNSwgNzgwLCAxNjA2LCAxNTgwLCAxNTgxLCA3ODAsIAotICAgIDE1ODAsIDE1ODEsIDE2MTAsIDc4MCwgMTU4MSwgMTU4MCwgMTYxMCwgNzgwLCAxNjA1LCAxNTgwLCAxNjEwLCA3ODAsIAotICAgIDE2MDEsIDE2MDUsIDE2MTAsIDc4MCwgMTU3NiwgMTU4MSwgMTYxMCwgNzgxLCAxNjAzLCAxNjA1LCAxNjA1LCA3ODEsIAotICAgIDE1OTMsIDE1ODAsIDE2MDUsIDc4MSwgMTU4OSwgMTYwNSwgMTYwNSwgNzgwLCAxNTg3LCAxNTgyLCAxNjEwLCA3ODAsIAotICAgIDE2MDYsIDE1ODAsIDE2MTAsIDc3OSwgMTU4OSwgMTYwNCwgMTc0NiwgNzc5LCAxNjAyLCAxNjA0LCAxNzQ2LCAxMDM1LCAKLSAgICAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTc1LCAxNjAzLCAxNTc2LCAxNTg1LCAxMDM1LCAxNjA1LCAxNTgxLCAKLSAgICAxNjA1LCAxNTgzLCAxMDM1LCAxNTg5LCAxNjA0LCAxNTkzLCAxNjA1LCAxMDM1LCAxNTg1LCAxNTg3LCAxNjA4LCAxNjA0LCAKLSAgICAxMDM1LCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAxMDM1LCAxNjA4LCAxNTg3LCAxNjA0LCAxNjA1LCA3NzksIDE1ODksIAotICAgIDE2MDQsIDE2MDksIDQ2MTksIDE1ODksIDE2MDQsIDE2MDksIDMyLCAxNTc1LCAxNjA0LCAxNjA0LCAxNjA3LCAzMiwgMTU5MywgCi0gICAgMTYwNCwgMTYxMCwgMTYwNywgMzIsIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDIwNTksIDE1ODAsIDE2MDQsIDMyLCAxNTgwLCAKLSAgICAxNjA0LCAxNTc1LCAxNjA0LCAxNjA3LCAxMDM1LCAxNTg1LCAxNzQwLCAxNTc1LCAxNjA0LCAyNjUsIDQ0LCAyNjUsIAotICAgIDEyMjg5LCAyNjUsIDEyMjkwLCAyNjUsIDU4LCAyNjUsIDU5LCAyNjUsIDMzLCAyNjUsIDYzLCAyNjUsIDEyMzEwLCAyNjUsIAotICAgIDEyMzExLCAyNjUsIDgyMzAsIDI2NSwgODIyOSwgMjY1LCA4MjEyLCAyNjUsIDgyMTEsIDI2NSwgOTUsIDI2NSwgOTUsIDI2NSwgCi0gICAgNDAsIDI2NSwgNDEsIDI2NSwgMTIzLCAyNjUsIDEyNSwgMjY1LCAxMjMwOCwgMjY1LCAxMjMwOSwgMjY1LCAxMjMwNCwgMjY1LCAKLSAgICAxMjMwNSwgMjY1LCAxMjI5OCwgMjY1LCAxMjI5OSwgMjY1LCAxMjI5NiwgMjY1LCAxMjI5NywgMjY1LCAxMjMwMCwgMjY1LCAKLSAgICAxMjMwMSwgMjY1LCAxMjMwMiwgMjY1LCAxMjMwMywgMjY1LCA5MSwgMjY1LCA5MywgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIAotICAgIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDk1LCAyNTgsIDk1LCAyNTgsIDk1LCAyNzEsIDQ0LCAyNzEsIDEyMjg5LCAKLSAgICAyNzEsIDQ2LCAyNzEsIDU5LCAyNzEsIDU4LCAyNzEsIDYzLCAyNzEsIDMzLCAyNzEsIDgyMTIsIDI3MSwgNDAsIDI3MSwgNDEsIAotICAgIDI3MSwgMTIzLCAyNzEsIDEyNSwgMjcxLCAxMjMwOCwgMjcxLCAxMjMwOSwgMjcxLCAzNSwgMjcxLCAzOCwgMjcxLCA0MiwgCi0gICAgMjcxLCA0MywgMjcxLCA0NSwgMjcxLCA2MCwgMjcxLCA2MiwgMjcxLCA2MSwgMjcxLCA5MiwgMjcxLCAzNiwgMjcxLCAzNywgCi0gICAgMjcxLCA2NCwgNTIzLCAzMiwgMTYxMSwgNTI2LCAxNjAwLCAxNjExLCA1MjMsIDMyLCAxNjEyLCA1MjMsIDMyLCAxNjEzLCAKLSAgICA1MjMsIDMyLCAxNjE0LCA1MjYsIDE2MDAsIDE2MTQsIDUyMywgMzIsIDE2MTUsIDUyNiwgMTYwMCwgMTYxNSwgNTIzLCAzMiwgCi0gICAgMTYxNiwgNTI2LCAxNjAwLCAxNjE2LCA1MjMsIDMyLCAxNjE3LCA1MjYsIDE2MDAsIDE2MTcsIDUyMywgMzIsIDE2MTgsIAotICAgIDUyNiwgMTYwMCwgMTYxOCwgMjY3LCAxNTY5LCAyNjcsIDE1NzAsIDI2OCwgMTU3MCwgMjY3LCAxNTcxLCAyNjgsIDE1NzEsIAotICAgIDI2NywgMTU3MiwgMjY4LCAxNTcyLCAyNjcsIDE1NzMsIDI2OCwgMTU3MywgMjY3LCAxNTc0LCAyNjgsIDE1NzQsIDI2OSwgCi0gICAgMTU3NCwgMjcwLCAxNTc0LCAyNjcsIDE1NzUsIDI2OCwgMTU3NSwgMjY3LCAxNTc2LCAyNjgsIDE1NzYsIDI2OSwgMTU3NiwgCi0gICAgMjcwLCAxNTc2LCAyNjcsIDE1NzcsIDI2OCwgMTU3NywgMjY3LCAxNTc4LCAyNjgsIDE1NzgsIDI2OSwgMTU3OCwgMjcwLCAKLSAgICAxNTc4LCAyNjcsIDE1NzksIDI2OCwgMTU3OSwgMjY5LCAxNTc5LCAyNzAsIDE1NzksIDI2NywgMTU4MCwgMjY4LCAxNTgwLCAKLSAgICAyNjksIDE1ODAsIDI3MCwgMTU4MCwgMjY3LCAxNTgxLCAyNjgsIDE1ODEsIDI2OSwgMTU4MSwgMjcwLCAxNTgxLCAyNjcsIAotICAgIDE1ODIsIDI2OCwgMTU4MiwgMjY5LCAxNTgyLCAyNzAsIDE1ODIsIDI2NywgMTU4MywgMjY4LCAxNTgzLCAyNjcsIDE1ODQsIAotICAgIDI2OCwgMTU4NCwgMjY3LCAxNTg1LCAyNjgsIDE1ODUsIDI2NywgMTU4NiwgMjY4LCAxNTg2LCAyNjcsIDE1ODcsIDI2OCwgCi0gICAgMTU4NywgMjY5LCAxNTg3LCAyNzAsIDE1ODcsIDI2NywgMTU4OCwgMjY4LCAxNTg4LCAyNjksIDE1ODgsIDI3MCwgMTU4OCwgCi0gICAgMjY3LCAxNTg5LCAyNjgsIDE1ODksIDI2OSwgMTU4OSwgMjcwLCAxNTg5LCAyNjcsIDE1OTAsIDI2OCwgMTU5MCwgMjY5LCAKLSAgICAxNTkwLCAyNzAsIDE1OTAsIDI2NywgMTU5MSwgMjY4LCAxNTkxLCAyNjksIDE1OTEsIDI3MCwgMTU5MSwgMjY3LCAxNTkyLCAKLSAgICAyNjgsIDE1OTIsIDI2OSwgMTU5MiwgMjcwLCAxNTkyLCAyNjcsIDE1OTMsIDI2OCwgMTU5MywgMjY5LCAxNTkzLCAyNzAsIAotICAgIDE1OTMsIDI2NywgMTU5NCwgMjY4LCAxNTk0LCAyNjksIDE1OTQsIDI3MCwgMTU5NCwgMjY3LCAxNjAxLCAyNjgsIDE2MDEsIAotICAgIDI2OSwgMTYwMSwgMjcwLCAxNjAxLCAyNjcsIDE2MDIsIDI2OCwgMTYwMiwgMjY5LCAxNjAyLCAyNzAsIDE2MDIsIDI2NywgCi0gICAgMTYwMywgMjY4LCAxNjAzLCAyNjksIDE2MDMsIDI3MCwgMTYwMywgMjY3LCAxNjA0LCAyNjgsIDE2MDQsIDI2OSwgMTYwNCwgCi0gICAgMjcwLCAxNjA0LCAyNjcsIDE2MDUsIDI2OCwgMTYwNSwgMjY5LCAxNjA1LCAyNzAsIDE2MDUsIDI2NywgMTYwNiwgMjY4LCAKLSAgICAxNjA2LCAyNjksIDE2MDYsIDI3MCwgMTYwNiwgMjY3LCAxNjA3LCAyNjgsIDE2MDcsIDI2OSwgMTYwNywgMjcwLCAxNjA3LCAKLSAgICAyNjcsIDE2MDgsIDI2OCwgMTYwOCwgMjY3LCAxNjA5LCAyNjgsIDE2MDksIDI2NywgMTYxMCwgMjY4LCAxNjEwLCAyNjksIAotICAgIDE2MTAsIDI3MCwgMTYxMCwgNTIzLCAxNjA0LCAxNTcwLCA1MjQsIDE2MDQsIDE1NzAsIDUyMywgMTYwNCwgMTU3MSwgNTI0LCAKLSAgICAxNjA0LCAxNTcxLCA1MjMsIDE2MDQsIDE1NzMsIDUyNCwgMTYwNCwgMTU3MywgNTIzLCAxNjA0LCAxNTc1LCA1MjQsIDE2MDQsIAotICAgIDE1NzUsIDI2NCwgMzMsIDI2NCwgMzQsIDI2NCwgMzUsIDI2NCwgMzYsIDI2NCwgMzcsIDI2NCwgMzgsIDI2NCwgMzksIDI2NCwgCi0gICAgNDAsIDI2NCwgNDEsIDI2NCwgNDIsIDI2NCwgNDMsIDI2NCwgNDQsIDI2NCwgNDUsIDI2NCwgNDYsIDI2NCwgNDcsIDI2NCwgCi0gICAgNDgsIDI2NCwgNDksIDI2NCwgNTAsIDI2NCwgNTEsIDI2NCwgNTIsIDI2NCwgNTMsIDI2NCwgNTQsIDI2NCwgNTUsIDI2NCwgCi0gICAgNTYsIDI2NCwgNTcsIDI2NCwgNTgsIDI2NCwgNTksIDI2NCwgNjAsIDI2NCwgNjEsIDI2NCwgNjIsIDI2NCwgNjMsIDI2NCwgCi0gICAgNjQsIDI2NCwgNjUsIDI2NCwgNjYsIDI2NCwgNjcsIDI2NCwgNjgsIDI2NCwgNjksIDI2NCwgNzAsIDI2NCwgNzEsIDI2NCwgCi0gICAgNzIsIDI2NCwgNzMsIDI2NCwgNzQsIDI2NCwgNzUsIDI2NCwgNzYsIDI2NCwgNzcsIDI2NCwgNzgsIDI2NCwgNzksIDI2NCwgCi0gICAgODAsIDI2NCwgODEsIDI2NCwgODIsIDI2NCwgODMsIDI2NCwgODQsIDI2NCwgODUsIDI2NCwgODYsIDI2NCwgODcsIDI2NCwgCi0gICAgODgsIDI2NCwgODksIDI2NCwgOTAsIDI2NCwgOTEsIDI2NCwgOTIsIDI2NCwgOTMsIDI2NCwgOTQsIDI2NCwgOTUsIDI2NCwgCi0gICAgOTYsIDI2NCwgOTcsIDI2NCwgOTgsIDI2NCwgOTksIDI2NCwgMTAwLCAyNjQsIDEwMSwgMjY0LCAxMDIsIDI2NCwgMTAzLCAKLSAgICAyNjQsIDEwNCwgMjY0LCAxMDUsIDI2NCwgMTA2LCAyNjQsIDEwNywgMjY0LCAxMDgsIDI2NCwgMTA5LCAyNjQsIDExMCwgCi0gICAgMjY0LCAxMTEsIDI2NCwgMTEyLCAyNjQsIDExMywgMjY0LCAxMTQsIDI2NCwgMTE1LCAyNjQsIDExNiwgMjY0LCAxMTcsIAotICAgIDI2NCwgMTE4LCAyNjQsIDExOSwgMjY0LCAxMjAsIDI2NCwgMTIxLCAyNjQsIDEyMiwgMjY0LCAxMjMsIDI2NCwgMTI0LCAKLSAgICAyNjQsIDEyNSwgMjY0LCAxMjYsIDI2NCwgMTA2MjksIDI2NCwgMTA2MzAsIDI3MiwgMTIyOTAsIDI3MiwgMTIzMDAsIDI3MiwgCi0gICAgMTIzMDEsIDI3MiwgMTIyODksIDI3MiwgMTI1MzksIDI3MiwgMTI1MzAsIDI3MiwgMTI0NDksIDI3MiwgMTI0NTEsIDI3MiwgCi0gICAgMTI0NTMsIDI3MiwgMTI0NTUsIDI3MiwgMTI0NTcsIDI3MiwgMTI1MTUsIDI3MiwgMTI1MTcsIDI3MiwgMTI1MTksIDI3MiwgCi0gICAgMTI0ODMsIDI3MiwgMTI1NDAsIDI3MiwgMTI0NTAsIDI3MiwgMTI0NTIsIDI3MiwgMTI0NTQsIDI3MiwgMTI0NTYsIDI3MiwgCi0gICAgMTI0NTgsIDI3MiwgMTI0NTksIDI3MiwgMTI0NjEsIDI3MiwgMTI0NjMsIDI3MiwgMTI0NjUsIDI3MiwgMTI0NjcsIDI3MiwgCi0gICAgMTI0NjksIDI3MiwgMTI0NzEsIDI3MiwgMTI0NzMsIDI3MiwgMTI0NzUsIDI3MiwgMTI0NzcsIDI3MiwgMTI0NzksIDI3MiwgCi0gICAgMTI0ODEsIDI3MiwgMTI0ODQsIDI3MiwgMTI0ODYsIDI3MiwgMTI0ODgsIDI3MiwgMTI0OTAsIDI3MiwgMTI0OTEsIDI3MiwgCi0gICAgMTI0OTIsIDI3MiwgMTI0OTMsIDI3MiwgMTI0OTQsIDI3MiwgMTI0OTUsIDI3MiwgMTI0OTgsIDI3MiwgMTI1MDEsIDI3MiwgCi0gICAgMTI1MDQsIDI3MiwgMTI1MDcsIDI3MiwgMTI1MTAsIDI3MiwgMTI1MTEsIDI3MiwgMTI1MTIsIDI3MiwgMTI1MTMsIDI3MiwgCi0gICAgMTI1MTQsIDI3MiwgMTI1MTYsIDI3MiwgMTI1MTgsIDI3MiwgMTI1MjAsIDI3MiwgMTI1MjEsIDI3MiwgMTI1MjIsIDI3MiwgCi0gICAgMTI1MjMsIDI3MiwgMTI1MjQsIDI3MiwgMTI1MjUsIDI3MiwgMTI1MjcsIDI3MiwgMTI1MzEsIDI3MiwgMTI0NDEsIDI3MiwgCi0gICAgMTI0NDIsIDI3MiwgMTI2NDQsIDI3MiwgMTI1OTMsIDI3MiwgMTI1OTQsIDI3MiwgMTI1OTUsIDI3MiwgMTI1OTYsIDI3MiwgCi0gICAgMTI1OTcsIDI3MiwgMTI1OTgsIDI3MiwgMTI1OTksIDI3MiwgMTI2MDAsIDI3MiwgMTI2MDEsIDI3MiwgMTI2MDIsIDI3MiwgCi0gICAgMTI2MDMsIDI3MiwgMTI2MDQsIDI3MiwgMTI2MDUsIDI3MiwgMTI2MDYsIDI3MiwgMTI2MDcsIDI3MiwgMTI2MDgsIDI3MiwgCi0gICAgMTI2MDksIDI3MiwgMTI2MTAsIDI3MiwgMTI2MTEsIDI3MiwgMTI2MTIsIDI3MiwgMTI2MTMsIDI3MiwgMTI2MTQsIDI3MiwgCi0gICAgMTI2MTUsIDI3MiwgMTI2MTYsIDI3MiwgMTI2MTcsIDI3MiwgMTI2MTgsIDI3MiwgMTI2MTksIDI3MiwgMTI2MjAsIDI3MiwgCi0gICAgMTI2MjEsIDI3MiwgMTI2MjIsIDI3MiwgMTI2MjMsIDI3MiwgMTI2MjQsIDI3MiwgMTI2MjUsIDI3MiwgMTI2MjYsIDI3MiwgCi0gICAgMTI2MjcsIDI3MiwgMTI2MjgsIDI3MiwgMTI2MjksIDI3MiwgMTI2MzAsIDI3MiwgMTI2MzEsIDI3MiwgMTI2MzIsIDI3MiwgCi0gICAgMTI2MzMsIDI3MiwgMTI2MzQsIDI3MiwgMTI2MzUsIDI3MiwgMTI2MzYsIDI3MiwgMTI2MzcsIDI3MiwgMTI2MzgsIDI3MiwgCi0gICAgMTI2MzksIDI3MiwgMTI2NDAsIDI3MiwgMTI2NDEsIDI3MiwgMTI2NDIsIDI3MiwgMTI2NDMsIDI2NCwgMTYyLCAyNjQsIAotICAgIDE2MywgMjY0LCAxNzIsIDI2NCwgMTc1LCAyNjQsIDE2NiwgMjY0LCAxNjUsIDI2NCwgODM2MSwgMjcyLCA5NDc0LCAyNzIsIAotICAgIDg1OTIsIDI3MiwgODU5MywgMjcyLCA4NTk0LCAyNzIsIDg1OTUsIDI3MiwgOTYzMiwgMjcyLCA5Njc1LCA1MTIsIDY5Nzg1LCAKLSAgICA2OTgxOCwgNTEyLCA2OTc4NywgNjk4MTgsIDUxMiwgNjk3OTcsIDY5ODE4LCA1MTIsIDExOTEyNywgMTE5MTQxLCA1MTIsIAotICAgIDExOTEyOCwgMTE5MTQxLCA1MTIsIDExOTEzNSwgMTE5MTUwLCA1MTIsIDExOTEzNSwgMTE5MTUxLCA1MTIsIDExOTEzNSwgCi0gICAgMTE5MTUyLCA1MTIsIDExOTEzNSwgMTE5MTUzLCA1MTIsIDExOTEzNSwgMTE5MTU0LCA1MTIsIDExOTIyNSwgMTE5MTQxLCAKLSAgICA1MTIsIDExOTIyNiwgMTE5MTQxLCA1MTIsIDExOTIyNywgMTE5MTUwLCA1MTIsIDExOTIyOCwgMTE5MTUwLCA1MTIsIAotICAgIDExOTIyNywgMTE5MTUxLCA1MTIsIDExOTIyOCwgMTE5MTUxLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAKLSAgICAyNjIsIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAKLSAgICAyNjIsIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAKLSAgICAyNjIsIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAKLSAgICAyNjIsIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDQsIDI2MiwgMTA1LCAyNjIsIAotICAgIDEwNiwgMjYyLCAxMDcsIDI2MiwgMTA4LCAyNjIsIDEwOSwgMjYyLCAxMTAsIDI2MiwgMTExLCAyNjIsIDExMiwgMjYyLCAKLSAgICAxMTMsIDI2MiwgMTE0LCAyNjIsIDExNSwgMjYyLCAxMTYsIDI2MiwgMTE3LCAyNjIsIDExOCwgMjYyLCAxMTksIDI2MiwgCi0gICAgMTIwLCAyNjIsIDEyMSwgMjYyLCAxMjIsIDI2MiwgNjUsIDI2MiwgNjYsIDI2MiwgNjcsIDI2MiwgNjgsIDI2MiwgNjksIAotICAgIDI2MiwgNzAsIDI2MiwgNzEsIDI2MiwgNzIsIDI2MiwgNzMsIDI2MiwgNzQsIDI2MiwgNzUsIDI2MiwgNzYsIDI2MiwgNzcsIAotICAgIDI2MiwgNzgsIDI2MiwgNzksIDI2MiwgODAsIDI2MiwgODEsIDI2MiwgODIsIDI2MiwgODMsIDI2MiwgODQsIDI2MiwgODUsIAotICAgIDI2MiwgODYsIDI2MiwgODcsIDI2MiwgODgsIDI2MiwgODksIDI2MiwgOTAsIDI2MiwgOTcsIDI2MiwgOTgsIDI2MiwgOTksIAotICAgIDI2MiwgMTAwLCAyNjIsIDEwMSwgMjYyLCAxMDIsIDI2MiwgMTAzLCAyNjIsIDEwNSwgMjYyLCAxMDYsIDI2MiwgMTA3LCAKKyAgICAyNjA4NSwgNzc4LCAxMDMsIDk3LCAxMDgsIDI1OSwgNDI4NjMsIDI1OSwgMjk0LCAyNTksIDMzOSwgMjU2LCAzNTkxMiwgCisgICAgMjU2LCAyNjM1NiwgMjU2LCAzNjU1NCwgMjU2LCAzNjA0MCwgMjU2LCAyODM2OSwgMjU2LCAyMDAxOCwgMjU2LCAyMTQ3NywgCisgICAgMjU2LCA0MDg2MCwgMjU2LCA0MDg2MCwgMjU2LCAyMjg2NSwgMjU2LCAzNzMyOSwgMjU2LCAyMTg5NSwgMjU2LCAyMjg1NiwgCisgICAgMjU2LCAyNTA3OCwgMjU2LCAzMDMxMywgMjU2LCAzMjY0NSwgMjU2LCAzNDM2NywgMjU2LCAzNDc0NiwgMjU2LCAzNTA2NCwgCisgICAgMjU2LCAzNzAwNywgMjU2LCAyNzEzOCwgMjU2LCAyNzkzMSwgMjU2LCAyODg4OSwgMjU2LCAyOTY2MiwgMjU2LCAzMzg1MywgCisgICAgMjU2LCAzNzIyNiwgMjU2LCAzOTQwOSwgMjU2LCAyMDA5OCwgMjU2LCAyMTM2NSwgMjU2LCAyNzM5NiwgMjU2LCAyOTIxMSwgCisgICAgMjU2LCAzNDM0OSwgMjU2LCA0MDQ3OCwgMjU2LCAyMzg4OCwgMjU2LCAyODY1MSwgMjU2LCAzNDI1MywgMjU2LCAzNTE3MiwgCisgICAgMjU2LCAyNTI4OSwgMjU2LCAzMzI0MCwgMjU2LCAzNDg0NywgMjU2LCAyNDI2NiwgMjU2LCAyNjM5MSwgMjU2LCAyODAxMCwgCisgICAgMjU2LCAyOTQzNiwgMjU2LCAzNzA3MCwgMjU2LCAyMDM1OCwgMjU2LCAyMDkxOSwgMjU2LCAyMTIxNCwgMjU2LCAyNTc5NiwgCisgICAgMjU2LCAyNzM0NywgMjU2LCAyOTIwMCwgMjU2LCAzMDQzOSwgMjU2LCAzMjc2OSwgMjU2LCAzNDMxMCwgMjU2LCAzNDM5NiwgCisgICAgMjU2LCAzNjMzNSwgMjU2LCAzODcwNiwgMjU2LCAzOTc5MSwgMjU2LCA0MDQ0MiwgMjU2LCAzMDg2MCwgMjU2LCAzMTEwMywgCisgICAgMjU2LCAzMjE2MCwgMjU2LCAzMzczNywgMjU2LCAzNzYzNiwgMjU2LCA0MDU3NSwgMjU2LCAzNTU0MiwgMjU2LCAyMjc1MSwgCisgICAgMjU2LCAyNDMyNCwgMjU2LCAzMTg0MCwgMjU2LCAzMjg5NCwgMjU2LCAyOTI4MiwgMjU2LCAzMDkyMiwgMjU2LCAzNjAzNCwgCisgICAgMjU2LCAzODY0NywgMjU2LCAyMjc0NCwgMjU2LCAyMzY1MCwgMjU2LCAyNzE1NSwgMjU2LCAyODEyMiwgMjU2LCAyODQzMSwgCisgICAgMjU2LCAzMjA0NywgMjU2LCAzMjMxMSwgMjU2LCAzODQ3NSwgMjU2LCAyMTIwMiwgMjU2LCAzMjkwNywgMjU2LCAyMDk1NiwgCisgICAgMjU2LCAyMDk0MCwgMjU2LCAzMTI2MCwgMjU2LCAzMjE5MCwgMjU2LCAzMzc3NywgMjU2LCAzODUxNywgMjU2LCAzNTcxMiwgCisgICAgMjU2LCAyNTI5NSwgMjU2LCAyNzEzOCwgMjU2LCAzNTU4MiwgMjU2LCAyMDAyNSwgMjU2LCAyMzUyNywgMjU2LCAyNDU5NCwgCisgICAgMjU2LCAyOTU3NSwgMjU2LCAzMDA2NCwgMjU2LCAyMTI3MSwgMjU2LCAzMDk3MSwgMjU2LCAyMDQxNSwgMjU2LCAyNDQ4OSwgCisgICAgMjU2LCAxOTk4MSwgMjU2LCAyNzg1MiwgMjU2LCAyNTk3NiwgMjU2LCAzMjAzNCwgMjU2LCAyMTQ0MywgMjU2LCAyMjYyMiwgCisgICAgMjU2LCAzMDQ2NSwgMjU2LCAzMzg2NSwgMjU2LCAzNTQ5OCwgMjU2LCAyNzU3OCwgMjU2LCAzNjc4NCwgMjU2LCAyNzc4NCwgCisgICAgMjU2LCAyNTM0MiwgMjU2LCAzMzUwOSwgMjU2LCAyNTUwNCwgMjU2LCAzMDA1MywgMjU2LCAyMDE0MiwgMjU2LCAyMDg0MSwgCisgICAgMjU2LCAyMDkzNywgMjU2LCAyNjc1MywgMjU2LCAzMTk3NSwgMjU2LCAzMzM5MSwgMjU2LCAzNTUzOCwgMjU2LCAzNzMyNywgCisgICAgMjU2LCAyMTIzNywgMjU2LCAyMTU3MCwgMjU2LCAyMjg5OSwgMjU2LCAyNDMwMCwgMjU2LCAyNjA1MywgMjU2LCAyODY3MCwgCisgICAgMjU2LCAzMTAxOCwgMjU2LCAzODMxNywgMjU2LCAzOTUzMCwgMjU2LCA0MDU5OSwgMjU2LCA0MDY1NCwgMjU2LCAyMTE0NywgCisgICAgMjU2LCAyNjMxMCwgMjU2LCAyNzUxMSwgMjU2LCAzNjcwNiwgMjU2LCAyNDE4MCwgMjU2LCAyNDk3NiwgMjU2LCAyNTA4OCwgCisgICAgMjU2LCAyNTc1NCwgMjU2LCAyODQ1MSwgMjU2LCAyOTAwMSwgMjU2LCAyOTgzMywgMjU2LCAzMTE3OCwgMjU2LCAzMjI0NCwgCisgICAgMjU2LCAzMjg3OSwgMjU2LCAzNjY0NiwgMjU2LCAzNDAzMCwgMjU2LCAzNjg5OSwgMjU2LCAzNzcwNiwgMjU2LCAyMTAxNSwgCisgICAgMjU2LCAyMTE1NSwgMjU2LCAyMTY5MywgMjU2LCAyODg3MiwgMjU2LCAzNTAxMCwgMjU2LCAzNTQ5OCwgMjU2LCAyNDI2NSwgCisgICAgMjU2LCAyNDU2NSwgMjU2LCAyNTQ2NywgMjU2LCAyNzU2NiwgMjU2LCAzMTgwNiwgMjU2LCAyOTU1NywgMjU2LCAyMDE5NiwgCisgICAgMjU2LCAyMjI2NSwgMjU2LCAyMzUyNywgMjU2LCAyMzk5NCwgMjU2LCAyNDYwNCwgMjU2LCAyOTYxOCwgMjU2LCAyOTgwMSwgCisgICAgMjU2LCAzMjY2NiwgMjU2LCAzMjgzOCwgMjU2LCAzNzQyOCwgMjU2LCAzODY0NiwgMjU2LCAzODcyOCwgMjU2LCAzODkzNiwgCisgICAgMjU2LCAyMDM2MywgMjU2LCAzMTE1MCwgMjU2LCAzNzMwMCwgMjU2LCAzODU4NCwgMjU2LCAyNDgwMSwgMjU2LCAyMDEwMiwgCisgICAgMjU2LCAyMDY5OCwgMjU2LCAyMzUzNCwgMjU2LCAyMzYxNSwgMjU2LCAyNjAwOSwgMjU2LCAyNzEzOCwgMjU2LCAyOTEzNCwgCisgICAgMjU2LCAzMDI3NCwgMjU2LCAzNDA0NCwgMjU2LCAzNjk4OCwgMjU2LCA0MDg0NSwgMjU2LCAyNjI0OCwgMjU2LCAzODQ0NiwgCisgICAgMjU2LCAyMTEyOSwgMjU2LCAyNjQ5MSwgMjU2LCAyNjYxMSwgMjU2LCAyNzk2OSwgMjU2LCAyODMxNiwgMjU2LCAyOTcwNSwgCisgICAgMjU2LCAzMDA0MSwgMjU2LCAzMDgyNywgMjU2LCAzMjAxNiwgMjU2LCAzOTAwNiwgMjU2LCAyMDg0NSwgMjU2LCAyNTEzNCwgCisgICAgMjU2LCAzODUyMCwgMjU2LCAyMDUyMywgMjU2LCAyMzgzMywgMjU2LCAyODEzOCwgMjU2LCAzNjY1MCwgMjU2LCAyNDQ1OSwgCisgICAgMjU2LCAyNDkwMCwgMjU2LCAyNjY0NywgMjU2LCAyOTU3NSwgMjU2LCAzODUzNCwgMjU2LCAyMTAzMywgMjU2LCAyMTUxOSwgCisgICAgMjU2LCAyMzY1MywgMjU2LCAyNjEzMSwgMjU2LCAyNjQ0NiwgMjU2LCAyNjc5MiwgMjU2LCAyNzg3NywgMjU2LCAyOTcwMiwgCisgICAgMjU2LCAzMDE3OCwgMjU2LCAzMjYzMywgMjU2LCAzNTAyMywgMjU2LCAzNTA0MSwgMjU2LCAzNzMyNCwgMjU2LCAzODYyNiwgCisgICAgMjU2LCAyMTMxMSwgMjU2LCAyODM0NiwgMjU2LCAyMTUzMywgMjU2LCAyOTEzNiwgMjU2LCAyOTg0OCwgMjU2LCAzNDI5OCwgCisgICAgMjU2LCAzODU2MywgMjU2LCA0MDAyMywgMjU2LCA0MDYwNywgMjU2LCAyNjUxOSwgMjU2LCAyODEwNywgMjU2LCAzMzI1NiwgCisgICAgMjU2LCAzMTQzNSwgMjU2LCAzMTUyMCwgMjU2LCAzMTg5MCwgMjU2LCAyOTM3NiwgMjU2LCAyODgyNSwgMjU2LCAzNTY3MiwgCisgICAgMjU2LCAyMDE2MCwgMjU2LCAzMzU5MCwgMjU2LCAyMTA1MCwgMjU2LCAyMDk5OSwgMjU2LCAyNDIzMCwgMjU2LCAyNTI5OSwgCisgICAgMjU2LCAzMTk1OCwgMjU2LCAyMzQyOSwgMjU2LCAyNzkzNCwgMjU2LCAyNjI5MiwgMjU2LCAzNjY2NywgMjU2LCAzNDg5MiwgCisgICAgMjU2LCAzODQ3NywgMjU2LCAzNTIxMSwgMjU2LCAyNDI3NSwgMjU2LCAyMDgwMCwgMjU2LCAyMTk1MiwgMjU2LCAyMjYxOCwgCisgICAgMjU2LCAyNjIyOCwgMjU2LCAyMDk1OCwgMjU2LCAyOTQ4MiwgMjU2LCAzMDQxMCwgMjU2LCAzMTAzNiwgMjU2LCAzMTA3MCwgCisgICAgMjU2LCAzMTA3NywgMjU2LCAzMTExOSwgMjU2LCAzODc0MiwgMjU2LCAzMTkzNCwgMjU2LCAzMjcwMSwgMjU2LCAzNDMyMiwgCisgICAgMjU2LCAzNTU3NiwgMjU2LCAzNjkyMCwgMjU2LCAzNzExNywgMjU2LCAzOTE1MSwgMjU2LCAzOTE2NCwgMjU2LCAzOTIwOCwgCisgICAgMjU2LCA0MDM3MiwgMjU2LCAzNzA4NiwgMjU2LCAzODU4MywgMjU2LCAyMDM5OCwgMjU2LCAyMDcxMSwgMjU2LCAyMDgxMywgCisgICAgMjU2LCAyMTE5MywgMjU2LCAyMTIyMCwgMjU2LCAyMTMyOSwgMjU2LCAyMTkxNywgMjU2LCAyMjAyMiwgMjU2LCAyMjEyMCwgCisgICAgMjU2LCAyMjU5MiwgMjU2LCAyMjY5NiwgMjU2LCAyMzY1MiwgMjU2LCAyMzY2MiwgMjU2LCAyNDcyNCwgMjU2LCAyNDkzNiwgCisgICAgMjU2LCAyNDk3NCwgMjU2LCAyNTA3NCwgMjU2LCAyNTkzNSwgMjU2LCAyNjA4MiwgMjU2LCAyNjI1NywgMjU2LCAyNjc1NywgCisgICAgMjU2LCAyODAyMywgMjU2LCAyODE4NiwgMjU2LCAyODQ1MCwgMjU2LCAyOTAzOCwgMjU2LCAyOTIyNywgMjU2LCAyOTczMCwgCisgICAgMjU2LCAzMDg2NSwgMjU2LCAzMTAzOCwgMjU2LCAzMTA0OSwgMjU2LCAzMTA0OCwgMjU2LCAzMTA1NiwgMjU2LCAzMTA2MiwgCisgICAgMjU2LCAzMTA2OSwgMjU2LCAzMTExNywgMjU2LCAzMTExOCwgMjU2LCAzMTI5NiwgMjU2LCAzMTM2MSwgMjU2LCAzMTY4MCwgCisgICAgMjU2LCAzMjI0NCwgMjU2LCAzMjI2NSwgMjU2LCAzMjMyMSwgMjU2LCAzMjYyNiwgMjU2LCAzMjc3MywgMjU2LCAzMzI2MSwgCisgICAgMjU2LCAzMzQwMSwgMjU2LCAzMzQwMSwgMjU2LCAzMzg3OSwgMjU2LCAzNTA4OCwgMjU2LCAzNTIyMiwgMjU2LCAzNTU4NSwgCisgICAgMjU2LCAzNTY0MSwgMjU2LCAzNjA1MSwgMjU2LCAzNjEwNCwgMjU2LCAzNjc5MCwgMjU2LCAzNjkyMCwgMjU2LCAzODYyNywgCisgICAgMjU2LCAzODkxMSwgMjU2LCAzODk3MSwgMjU2LCAyNDY5MywgMjU2LCAxNDgyMDYsIDI1NiwgMzMzMDQsIDI1NiwgMjAwMDYsIAorICAgIDI1NiwgMjA5MTcsIDI1NiwgMjA4NDAsIDI1NiwgMjAzNTIsIDI1NiwgMjA4MDUsIDI1NiwgMjA4NjQsIDI1NiwgMjExOTEsIAorICAgIDI1NiwgMjEyNDIsIDI1NiwgMjE5MTcsIDI1NiwgMjE4NDUsIDI1NiwgMjE5MTMsIDI1NiwgMjE5ODYsIDI1NiwgMjI2MTgsIAorICAgIDI1NiwgMjI3MDcsIDI1NiwgMjI4NTIsIDI1NiwgMjI4NjgsIDI1NiwgMjMxMzgsIDI1NiwgMjMzMzYsIDI1NiwgMjQyNzQsIAorICAgIDI1NiwgMjQyODEsIDI1NiwgMjQ0MjUsIDI1NiwgMjQ0OTMsIDI1NiwgMjQ3OTIsIDI1NiwgMjQ5MTAsIDI1NiwgMjQ4NDAsIAorICAgIDI1NiwgMjQ5NzQsIDI1NiwgMjQ5MjgsIDI1NiwgMjUwNzQsIDI1NiwgMjUxNDAsIDI1NiwgMjU1NDAsIDI1NiwgMjU2MjgsIAorICAgIDI1NiwgMjU2ODIsIDI1NiwgMjU5NDIsIDI1NiwgMjYyMjgsIDI1NiwgMjYzOTEsIDI1NiwgMjYzOTUsIDI1NiwgMjY0NTQsIAorICAgIDI1NiwgMjc1MTMsIDI1NiwgMjc1NzgsIDI1NiwgMjc5NjksIDI1NiwgMjgzNzksIDI1NiwgMjgzNjMsIDI1NiwgMjg0NTAsIAorICAgIDI1NiwgMjg3MDIsIDI1NiwgMjkwMzgsIDI1NiwgMzA2MzEsIDI1NiwgMjkyMzcsIDI1NiwgMjkzNTksIDI1NiwgMjk0ODIsIAorICAgIDI1NiwgMjk4MDksIDI1NiwgMjk5NTgsIDI1NiwgMzAwMTEsIDI1NiwgMzAyMzcsIDI1NiwgMzAyMzksIDI1NiwgMzA0MTAsIAorICAgIDI1NiwgMzA0MjcsIDI1NiwgMzA0NTIsIDI1NiwgMzA1MzgsIDI1NiwgMzA1MjgsIDI1NiwgMzA5MjQsIDI1NiwgMzE0MDksIAorICAgIDI1NiwgMzE2ODAsIDI1NiwgMzE4NjcsIDI1NiwgMzIwOTEsIDI1NiwgMzIyNDQsIDI1NiwgMzI1NzQsIDI1NiwgMzI3NzMsIAorICAgIDI1NiwgMzM2MTgsIDI1NiwgMzM3NzUsIDI1NiwgMzQ2ODEsIDI1NiwgMzUxMzcsIDI1NiwgMzUyMDYsIDI1NiwgMzUyMjIsIAorICAgIDI1NiwgMzU1MTksIDI1NiwgMzU1NzYsIDI1NiwgMzU1MzEsIDI1NiwgMzU1ODUsIDI1NiwgMzU1ODIsIDI1NiwgMzU1NjUsIAorICAgIDI1NiwgMzU2NDEsIDI1NiwgMzU3MjIsIDI1NiwgMzYxMDQsIDI1NiwgMzY2NjQsIDI1NiwgMzY5NzgsIDI1NiwgMzcyNzMsIAorICAgIDI1NiwgMzc0OTQsIDI1NiwgMzg1MjQsIDI1NiwgMzg2MjcsIDI1NiwgMzg3NDIsIDI1NiwgMzg4NzUsIDI1NiwgMzg5MTEsIAorICAgIDI1NiwgMzg5MjMsIDI1NiwgMzg5NzEsIDI1NiwgMzk2OTgsIDI1NiwgNDA4NjAsIDI1NiwgMTQxMzg2LCAyNTYsIDE0MTM4MCwgCisgICAgMjU2LCAxNDQzNDEsIDI1NiwgMTUyNjEsIDI1NiwgMTY0MDgsIDI1NiwgMTY0NDEsIDI1NiwgMTUyMTM3LCAyNTYsIAorICAgIDE1NDgzMiwgMjU2LCAxNjM1MzksIDI1NiwgNDA3NzEsIDI1NiwgNDA4NDYsIDUxNCwgMTAyLCAxMDIsIDUxNCwgMTAyLCAKKyAgICAxMDUsIDUxNCwgMTAyLCAxMDgsIDc3MCwgMTAyLCAxMDIsIDEwNSwgNzcwLCAxMDIsIDEwMiwgMTA4LCA1MTQsIDM4MywgCisgICAgMTE2LCA1MTQsIDExNSwgMTE2LCA1MTQsIDEzOTYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4MSwgNTE0LCAxMzk2LCAxMzg3LCAKKyAgICA1MTQsIDE0MDYsIDEzOTgsIDUxNCwgMTM5NiwgMTM4OSwgNTEyLCAxNDk3LCAxNDYwLCA1MTIsIDE1MjIsIDE0NjMsIDI2MiwgCisgICAgMTUwNiwgMjYyLCAxNDg4LCAyNjIsIDE0OTEsIDI2MiwgMTQ5MiwgMjYyLCAxNDk5LCAyNjIsIDE1MDAsIDI2MiwgMTUwMSwgCisgICAgMjYyLCAxNTEyLCAyNjIsIDE1MTQsIDI2MiwgNDMsIDUxMiwgMTUxMywgMTQ3MywgNTEyLCAxNTEzLCAxNDc0LCA1MTIsIAorICAgIDY0MzI5LCAxNDczLCA1MTIsIDY0MzI5LCAxNDc0LCA1MTIsIDE0ODgsIDE0NjMsIDUxMiwgMTQ4OCwgMTQ2NCwgNTEyLCAKKyAgICAxNDg4LCAxNDY4LCA1MTIsIDE0ODksIDE0NjgsIDUxMiwgMTQ5MCwgMTQ2OCwgNTEyLCAxNDkxLCAxNDY4LCA1MTIsIDE0OTIsIAorICAgIDE0NjgsIDUxMiwgMTQ5MywgMTQ2OCwgNTEyLCAxNDk0LCAxNDY4LCA1MTIsIDE0OTYsIDE0NjgsIDUxMiwgMTQ5NywgMTQ2OCwgCisgICAgNTEyLCAxNDk4LCAxNDY4LCA1MTIsIDE0OTksIDE0NjgsIDUxMiwgMTUwMCwgMTQ2OCwgNTEyLCAxNTAyLCAxNDY4LCA1MTIsIAorICAgIDE1MDQsIDE0NjgsIDUxMiwgMTUwNSwgMTQ2OCwgNTEyLCAxNTA3LCAxNDY4LCA1MTIsIDE1MDgsIDE0NjgsIDUxMiwgMTUxMCwgCisgICAgMTQ2OCwgNTEyLCAxNTExLCAxNDY4LCA1MTIsIDE1MTIsIDE0NjgsIDUxMiwgMTUxMywgMTQ2OCwgNTEyLCAxNTE0LCAxNDY4LCAKKyAgICA1MTIsIDE0OTMsIDE0NjUsIDUxMiwgMTQ4OSwgMTQ3MSwgNTEyLCAxNDk5LCAxNDcxLCA1MTIsIDE1MDgsIDE0NzEsIDUxNCwgCisgICAgMTQ4OCwgMTUwMCwgMjY3LCAxNjQ5LCAyNjgsIDE2NDksIDI2NywgMTY1OSwgMjY4LCAxNjU5LCAyNjksIDE2NTksIDI3MCwgCisgICAgMTY1OSwgMjY3LCAxNjYyLCAyNjgsIDE2NjIsIDI2OSwgMTY2MiwgMjcwLCAxNjYyLCAyNjcsIDE2NjQsIDI2OCwgMTY2NCwgCisgICAgMjY5LCAxNjY0LCAyNzAsIDE2NjQsIDI2NywgMTY1OCwgMjY4LCAxNjU4LCAyNjksIDE2NTgsIDI3MCwgMTY1OCwgMjY3LCAKKyAgICAxNjYzLCAyNjgsIDE2NjMsIDI2OSwgMTY2MywgMjcwLCAxNjYzLCAyNjcsIDE2NTcsIDI2OCwgMTY1NywgMjY5LCAxNjU3LCAKKyAgICAyNzAsIDE2NTcsIDI2NywgMTcwMCwgMjY4LCAxNzAwLCAyNjksIDE3MDAsIDI3MCwgMTcwMCwgMjY3LCAxNzAyLCAyNjgsIAorICAgIDE3MDIsIDI2OSwgMTcwMiwgMjcwLCAxNzAyLCAyNjcsIDE2NjgsIDI2OCwgMTY2OCwgMjY5LCAxNjY4LCAyNzAsIDE2NjgsIAorICAgIDI2NywgMTY2NywgMjY4LCAxNjY3LCAyNjksIDE2NjcsIDI3MCwgMTY2NywgMjY3LCAxNjcwLCAyNjgsIDE2NzAsIDI2OSwgCisgICAgMTY3MCwgMjcwLCAxNjcwLCAyNjcsIDE2NzEsIDI2OCwgMTY3MSwgMjY5LCAxNjcxLCAyNzAsIDE2NzEsIDI2NywgMTY3NywgCisgICAgMjY4LCAxNjc3LCAyNjcsIDE2NzYsIDI2OCwgMTY3NiwgMjY3LCAxNjc4LCAyNjgsIDE2NzgsIDI2NywgMTY3MiwgMjY4LCAKKyAgICAxNjcyLCAyNjcsIDE2ODgsIDI2OCwgMTY4OCwgMjY3LCAxNjgxLCAyNjgsIDE2ODEsIDI2NywgMTcwNSwgMjY4LCAxNzA1LCAKKyAgICAyNjksIDE3MDUsIDI3MCwgMTcwNSwgMjY3LCAxNzExLCAyNjgsIDE3MTEsIDI2OSwgMTcxMSwgMjcwLCAxNzExLCAyNjcsIAorICAgIDE3MTUsIDI2OCwgMTcxNSwgMjY5LCAxNzE1LCAyNzAsIDE3MTUsIDI2NywgMTcxMywgMjY4LCAxNzEzLCAyNjksIDE3MTMsIAorICAgIDI3MCwgMTcxMywgMjY3LCAxNzIyLCAyNjgsIDE3MjIsIDI2NywgMTcyMywgMjY4LCAxNzIzLCAyNjksIDE3MjMsIDI3MCwgCisgICAgMTcyMywgMjY3LCAxNzI4LCAyNjgsIDE3MjgsIDI2NywgMTcyOSwgMjY4LCAxNzI5LCAyNjksIDE3MjksIDI3MCwgMTcyOSwgCisgICAgMjY3LCAxNzI2LCAyNjgsIDE3MjYsIDI2OSwgMTcyNiwgMjcwLCAxNzI2LCAyNjcsIDE3NDYsIDI2OCwgMTc0NiwgMjY3LCAKKyAgICAxNzQ3LCAyNjgsIDE3NDcsIDI2NywgMTcwOSwgMjY4LCAxNzA5LCAyNjksIDE3MDksIDI3MCwgMTcwOSwgMjY3LCAxNzM1LCAKKyAgICAyNjgsIDE3MzUsIDI2NywgMTczNCwgMjY4LCAxNzM0LCAyNjcsIDE3MzYsIDI2OCwgMTczNiwgMjY3LCAxNjU1LCAyNjcsIAorICAgIDE3MzksIDI2OCwgMTczOSwgMjY3LCAxNzMzLCAyNjgsIDE3MzMsIDI2NywgMTczNywgMjY4LCAxNzM3LCAyNjcsIDE3NDQsIAorICAgIDI2OCwgMTc0NCwgMjY5LCAxNzQ0LCAyNzAsIDE3NDQsIDI2OSwgMTYwOSwgMjcwLCAxNjA5LCA1MjMsIDE1NzQsIDE1NzUsIAorICAgIDUyNCwgMTU3NCwgMTU3NSwgNTIzLCAxNTc0LCAxNzQ5LCA1MjQsIDE1NzQsIDE3NDksIDUyMywgMTU3NCwgMTYwOCwgNTI0LCAKKyAgICAxNTc0LCAxNjA4LCA1MjMsIDE1NzQsIDE3MzUsIDUyNCwgMTU3NCwgMTczNSwgNTIzLCAxNTc0LCAxNzM0LCA1MjQsIDE1NzQsIAorICAgIDE3MzQsIDUyMywgMTU3NCwgMTczNiwgNTI0LCAxNTc0LCAxNzM2LCA1MjMsIDE1NzQsIDE3NDQsIDUyNCwgMTU3NCwgMTc0NCwgCisgICAgNTI1LCAxNTc0LCAxNzQ0LCA1MjMsIDE1NzQsIDE2MDksIDUyNCwgMTU3NCwgMTYwOSwgNTI1LCAxNTc0LCAxNjA5LCAyNjcsIAorICAgIDE3NDAsIDI2OCwgMTc0MCwgMjY5LCAxNzQwLCAyNzAsIDE3NDAsIDUyMywgMTU3NCwgMTU4MCwgNTIzLCAxNTc0LCAxNTgxLCAKKyAgICA1MjMsIDE1NzQsIDE2MDUsIDUyMywgMTU3NCwgMTYwOSwgNTIzLCAxNTc0LCAxNjEwLCA1MjMsIDE1NzYsIDE1ODAsIDUyMywgCisgICAgMTU3NiwgMTU4MSwgNTIzLCAxNTc2LCAxNTgyLCA1MjMsIDE1NzYsIDE2MDUsIDUyMywgMTU3NiwgMTYwOSwgNTIzLCAxNTc2LCAKKyAgICAxNjEwLCA1MjMsIDE1NzgsIDE1ODAsIDUyMywgMTU3OCwgMTU4MSwgNTIzLCAxNTc4LCAxNTgyLCA1MjMsIDE1NzgsIDE2MDUsIAorICAgIDUyMywgMTU3OCwgMTYwOSwgNTIzLCAxNTc4LCAxNjEwLCA1MjMsIDE1NzksIDE1ODAsIDUyMywgMTU3OSwgMTYwNSwgNTIzLCAKKyAgICAxNTc5LCAxNjA5LCA1MjMsIDE1NzksIDE2MTAsIDUyMywgMTU4MCwgMTU4MSwgNTIzLCAxNTgwLCAxNjA1LCA1MjMsIDE1ODEsIAorICAgIDE1ODAsIDUyMywgMTU4MSwgMTYwNSwgNTIzLCAxNTgyLCAxNTgwLCA1MjMsIDE1ODIsIDE1ODEsIDUyMywgMTU4MiwgMTYwNSwgCisgICAgNTIzLCAxNTg3LCAxNTgwLCA1MjMsIDE1ODcsIDE1ODEsIDUyMywgMTU4NywgMTU4MiwgNTIzLCAxNTg3LCAxNjA1LCA1MjMsIAorICAgIDE1ODksIDE1ODEsIDUyMywgMTU4OSwgMTYwNSwgNTIzLCAxNTkwLCAxNTgwLCA1MjMsIDE1OTAsIDE1ODEsIDUyMywgMTU5MCwgCisgICAgMTU4MiwgNTIzLCAxNTkwLCAxNjA1LCA1MjMsIDE1OTEsIDE1ODEsIDUyMywgMTU5MSwgMTYwNSwgNTIzLCAxNTkyLCAxNjA1LCAKKyAgICA1MjMsIDE1OTMsIDE1ODAsIDUyMywgMTU5MywgMTYwNSwgNTIzLCAxNTk0LCAxNTgwLCA1MjMsIDE1OTQsIDE2MDUsIDUyMywgCisgICAgMTYwMSwgMTU4MCwgNTIzLCAxNjAxLCAxNTgxLCA1MjMsIDE2MDEsIDE1ODIsIDUyMywgMTYwMSwgMTYwNSwgNTIzLCAxNjAxLCAKKyAgICAxNjA5LCA1MjMsIDE2MDEsIDE2MTAsIDUyMywgMTYwMiwgMTU4MSwgNTIzLCAxNjAyLCAxNjA1LCA1MjMsIDE2MDIsIDE2MDksIAorICAgIDUyMywgMTYwMiwgMTYxMCwgNTIzLCAxNjAzLCAxNTc1LCA1MjMsIDE2MDMsIDE1ODAsIDUyMywgMTYwMywgMTU4MSwgNTIzLCAKKyAgICAxNjAzLCAxNTgyLCA1MjMsIDE2MDMsIDE2MDQsIDUyMywgMTYwMywgMTYwNSwgNTIzLCAxNjAzLCAxNjA5LCA1MjMsIDE2MDMsIAorICAgIDE2MTAsIDUyMywgMTYwNCwgMTU4MCwgNTIzLCAxNjA0LCAxNTgxLCA1MjMsIDE2MDQsIDE1ODIsIDUyMywgMTYwNCwgMTYwNSwgCisgICAgNTIzLCAxNjA0LCAxNjA5LCA1MjMsIDE2MDQsIDE2MTAsIDUyMywgMTYwNSwgMTU4MCwgNTIzLCAxNjA1LCAxNTgxLCA1MjMsIAorICAgIDE2MDUsIDE1ODIsIDUyMywgMTYwNSwgMTYwNSwgNTIzLCAxNjA1LCAxNjA5LCA1MjMsIDE2MDUsIDE2MTAsIDUyMywgMTYwNiwgCisgICAgMTU4MCwgNTIzLCAxNjA2LCAxNTgxLCA1MjMsIDE2MDYsIDE1ODIsIDUyMywgMTYwNiwgMTYwNSwgNTIzLCAxNjA2LCAxNjA5LCAKKyAgICA1MjMsIDE2MDYsIDE2MTAsIDUyMywgMTYwNywgMTU4MCwgNTIzLCAxNjA3LCAxNjA1LCA1MjMsIDE2MDcsIDE2MDksIDUyMywgCisgICAgMTYwNywgMTYxMCwgNTIzLCAxNjEwLCAxNTgwLCA1MjMsIDE2MTAsIDE1ODEsIDUyMywgMTYxMCwgMTU4MiwgNTIzLCAxNjEwLCAKKyAgICAxNjA1LCA1MjMsIDE2MTAsIDE2MDksIDUyMywgMTYxMCwgMTYxMCwgNTIzLCAxNTg0LCAxNjQ4LCA1MjMsIDE1ODUsIDE2NDgsIAorICAgIDUyMywgMTYwOSwgMTY0OCwgNzc5LCAzMiwgMTYxMiwgMTYxNywgNzc5LCAzMiwgMTYxMywgMTYxNywgNzc5LCAzMiwgMTYxNCwgCisgICAgMTYxNywgNzc5LCAzMiwgMTYxNSwgMTYxNywgNzc5LCAzMiwgMTYxNiwgMTYxNywgNzc5LCAzMiwgMTYxNywgMTY0OCwgNTI0LCAKKyAgICAxNTc0LCAxNTg1LCA1MjQsIDE1NzQsIDE1ODYsIDUyNCwgMTU3NCwgMTYwNSwgNTI0LCAxNTc0LCAxNjA2LCA1MjQsIDE1NzQsIAorICAgIDE2MDksIDUyNCwgMTU3NCwgMTYxMCwgNTI0LCAxNTc2LCAxNTg1LCA1MjQsIDE1NzYsIDE1ODYsIDUyNCwgMTU3NiwgMTYwNSwgCisgICAgNTI0LCAxNTc2LCAxNjA2LCA1MjQsIDE1NzYsIDE2MDksIDUyNCwgMTU3NiwgMTYxMCwgNTI0LCAxNTc4LCAxNTg1LCA1MjQsIAorICAgIDE1NzgsIDE1ODYsIDUyNCwgMTU3OCwgMTYwNSwgNTI0LCAxNTc4LCAxNjA2LCA1MjQsIDE1NzgsIDE2MDksIDUyNCwgMTU3OCwgCisgICAgMTYxMCwgNTI0LCAxNTc5LCAxNTg1LCA1MjQsIDE1NzksIDE1ODYsIDUyNCwgMTU3OSwgMTYwNSwgNTI0LCAxNTc5LCAxNjA2LCAKKyAgICA1MjQsIDE1NzksIDE2MDksIDUyNCwgMTU3OSwgMTYxMCwgNTI0LCAxNjAxLCAxNjA5LCA1MjQsIDE2MDEsIDE2MTAsIDUyNCwgCisgICAgMTYwMiwgMTYwOSwgNTI0LCAxNjAyLCAxNjEwLCA1MjQsIDE2MDMsIDE1NzUsIDUyNCwgMTYwMywgMTYwNCwgNTI0LCAxNjAzLCAKKyAgICAxNjA1LCA1MjQsIDE2MDMsIDE2MDksIDUyNCwgMTYwMywgMTYxMCwgNTI0LCAxNjA0LCAxNjA1LCA1MjQsIDE2MDQsIDE2MDksIAorICAgIDUyNCwgMTYwNCwgMTYxMCwgNTI0LCAxNjA1LCAxNTc1LCA1MjQsIDE2MDUsIDE2MDUsIDUyNCwgMTYwNiwgMTU4NSwgNTI0LCAKKyAgICAxNjA2LCAxNTg2LCA1MjQsIDE2MDYsIDE2MDUsIDUyNCwgMTYwNiwgMTYwNiwgNTI0LCAxNjA2LCAxNjA5LCA1MjQsIDE2MDYsIAorICAgIDE2MTAsIDUyNCwgMTYwOSwgMTY0OCwgNTI0LCAxNjEwLCAxNTg1LCA1MjQsIDE2MTAsIDE1ODYsIDUyNCwgMTYxMCwgMTYwNSwgCisgICAgNTI0LCAxNjEwLCAxNjA2LCA1MjQsIDE2MTAsIDE2MDksIDUyNCwgMTYxMCwgMTYxMCwgNTI1LCAxNTc0LCAxNTgwLCA1MjUsIAorICAgIDE1NzQsIDE1ODEsIDUyNSwgMTU3NCwgMTU4MiwgNTI1LCAxNTc0LCAxNjA1LCA1MjUsIDE1NzQsIDE2MDcsIDUyNSwgMTU3NiwgCisgICAgMTU4MCwgNTI1LCAxNTc2LCAxNTgxLCA1MjUsIDE1NzYsIDE1ODIsIDUyNSwgMTU3NiwgMTYwNSwgNTI1LCAxNTc2LCAxNjA3LCAKKyAgICA1MjUsIDE1NzgsIDE1ODAsIDUyNSwgMTU3OCwgMTU4MSwgNTI1LCAxNTc4LCAxNTgyLCA1MjUsIDE1NzgsIDE2MDUsIDUyNSwgCisgICAgMTU3OCwgMTYwNywgNTI1LCAxNTc5LCAxNjA1LCA1MjUsIDE1ODAsIDE1ODEsIDUyNSwgMTU4MCwgMTYwNSwgNTI1LCAxNTgxLCAKKyAgICAxNTgwLCA1MjUsIDE1ODEsIDE2MDUsIDUyNSwgMTU4MiwgMTU4MCwgNTI1LCAxNTgyLCAxNjA1LCA1MjUsIDE1ODcsIDE1ODAsIAorICAgIDUyNSwgMTU4NywgMTU4MSwgNTI1LCAxNTg3LCAxNTgyLCA1MjUsIDE1ODcsIDE2MDUsIDUyNSwgMTU4OSwgMTU4MSwgNTI1LCAKKyAgICAxNTg5LCAxNTgyLCA1MjUsIDE1ODksIDE2MDUsIDUyNSwgMTU5MCwgMTU4MCwgNTI1LCAxNTkwLCAxNTgxLCA1MjUsIDE1OTAsIAorICAgIDE1ODIsIDUyNSwgMTU5MCwgMTYwNSwgNTI1LCAxNTkxLCAxNTgxLCA1MjUsIDE1OTIsIDE2MDUsIDUyNSwgMTU5MywgMTU4MCwgCisgICAgNTI1LCAxNTkzLCAxNjA1LCA1MjUsIDE1OTQsIDE1ODAsIDUyNSwgMTU5NCwgMTYwNSwgNTI1LCAxNjAxLCAxNTgwLCA1MjUsIAorICAgIDE2MDEsIDE1ODEsIDUyNSwgMTYwMSwgMTU4MiwgNTI1LCAxNjAxLCAxNjA1LCA1MjUsIDE2MDIsIDE1ODEsIDUyNSwgMTYwMiwgCisgICAgMTYwNSwgNTI1LCAxNjAzLCAxNTgwLCA1MjUsIDE2MDMsIDE1ODEsIDUyNSwgMTYwMywgMTU4MiwgNTI1LCAxNjAzLCAxNjA0LCAKKyAgICA1MjUsIDE2MDMsIDE2MDUsIDUyNSwgMTYwNCwgMTU4MCwgNTI1LCAxNjA0LCAxNTgxLCA1MjUsIDE2MDQsIDE1ODIsIDUyNSwgCisgICAgMTYwNCwgMTYwNSwgNTI1LCAxNjA0LCAxNjA3LCA1MjUsIDE2MDUsIDE1ODAsIDUyNSwgMTYwNSwgMTU4MSwgNTI1LCAxNjA1LCAKKyAgICAxNTgyLCA1MjUsIDE2MDUsIDE2MDUsIDUyNSwgMTYwNiwgMTU4MCwgNTI1LCAxNjA2LCAxNTgxLCA1MjUsIDE2MDYsIDE1ODIsIAorICAgIDUyNSwgMTYwNiwgMTYwNSwgNTI1LCAxNjA2LCAxNjA3LCA1MjUsIDE2MDcsIDE1ODAsIDUyNSwgMTYwNywgMTYwNSwgNTI1LCAKKyAgICAxNjA3LCAxNjQ4LCA1MjUsIDE2MTAsIDE1ODAsIDUyNSwgMTYxMCwgMTU4MSwgNTI1LCAxNjEwLCAxNTgyLCA1MjUsIDE2MTAsIAorICAgIDE2MDUsIDUyNSwgMTYxMCwgMTYwNywgNTI2LCAxNTc0LCAxNjA1LCA1MjYsIDE1NzQsIDE2MDcsIDUyNiwgMTU3NiwgMTYwNSwgCisgICAgNTI2LCAxNTc2LCAxNjA3LCA1MjYsIDE1NzgsIDE2MDUsIDUyNiwgMTU3OCwgMTYwNywgNTI2LCAxNTc5LCAxNjA1LCA1MjYsIAorICAgIDE1NzksIDE2MDcsIDUyNiwgMTU4NywgMTYwNSwgNTI2LCAxNTg3LCAxNjA3LCA1MjYsIDE1ODgsIDE2MDUsIDUyNiwgMTU4OCwgCisgICAgMTYwNywgNTI2LCAxNjAzLCAxNjA0LCA1MjYsIDE2MDMsIDE2MDUsIDUyNiwgMTYwNCwgMTYwNSwgNTI2LCAxNjA2LCAxNjA1LCAKKyAgICA1MjYsIDE2MDYsIDE2MDcsIDUyNiwgMTYxMCwgMTYwNSwgNTI2LCAxNjEwLCAxNjA3LCA3ODIsIDE2MDAsIDE2MTQsIDE2MTcsIAorICAgIDc4MiwgMTYwMCwgMTYxNSwgMTYxNywgNzgyLCAxNjAwLCAxNjE2LCAxNjE3LCA1MjMsIDE1OTEsIDE2MDksIDUyMywgMTU5MSwgCisgICAgMTYxMCwgNTIzLCAxNTkzLCAxNjA5LCA1MjMsIDE1OTMsIDE2MTAsIDUyMywgMTU5NCwgMTYwOSwgNTIzLCAxNTk0LCAxNjEwLCAKKyAgICA1MjMsIDE1ODcsIDE2MDksIDUyMywgMTU4NywgMTYxMCwgNTIzLCAxNTg4LCAxNjA5LCA1MjMsIDE1ODgsIDE2MTAsIDUyMywgCisgICAgMTU4MSwgMTYwOSwgNTIzLCAxNTgxLCAxNjEwLCA1MjMsIDE1ODAsIDE2MDksIDUyMywgMTU4MCwgMTYxMCwgNTIzLCAxNTgyLCAKKyAgICAxNjA5LCA1MjMsIDE1ODIsIDE2MTAsIDUyMywgMTU4OSwgMTYwOSwgNTIzLCAxNTg5LCAxNjEwLCA1MjMsIDE1OTAsIDE2MDksIAorICAgIDUyMywgMTU5MCwgMTYxMCwgNTIzLCAxNTg4LCAxNTgwLCA1MjMsIDE1ODgsIDE1ODEsIDUyMywgMTU4OCwgMTU4MiwgNTIzLCAKKyAgICAxNTg4LCAxNjA1LCA1MjMsIDE1ODgsIDE1ODUsIDUyMywgMTU4NywgMTU4NSwgNTIzLCAxNTg5LCAxNTg1LCA1MjMsIDE1OTAsIAorICAgIDE1ODUsIDUyNCwgMTU5MSwgMTYwOSwgNTI0LCAxNTkxLCAxNjEwLCA1MjQsIDE1OTMsIDE2MDksIDUyNCwgMTU5MywgMTYxMCwgCisgICAgNTI0LCAxNTk0LCAxNjA5LCA1MjQsIDE1OTQsIDE2MTAsIDUyNCwgMTU4NywgMTYwOSwgNTI0LCAxNTg3LCAxNjEwLCA1MjQsIAorICAgIDE1ODgsIDE2MDksIDUyNCwgMTU4OCwgMTYxMCwgNTI0LCAxNTgxLCAxNjA5LCA1MjQsIDE1ODEsIDE2MTAsIDUyNCwgMTU4MCwgCisgICAgMTYwOSwgNTI0LCAxNTgwLCAxNjEwLCA1MjQsIDE1ODIsIDE2MDksIDUyNCwgMTU4MiwgMTYxMCwgNTI0LCAxNTg5LCAxNjA5LCAKKyAgICA1MjQsIDE1ODksIDE2MTAsIDUyNCwgMTU5MCwgMTYwOSwgNTI0LCAxNTkwLCAxNjEwLCA1MjQsIDE1ODgsIDE1ODAsIDUyNCwgCisgICAgMTU4OCwgMTU4MSwgNTI0LCAxNTg4LCAxNTgyLCA1MjQsIDE1ODgsIDE2MDUsIDUyNCwgMTU4OCwgMTU4NSwgNTI0LCAxNTg3LCAKKyAgICAxNTg1LCA1MjQsIDE1ODksIDE1ODUsIDUyNCwgMTU5MCwgMTU4NSwgNTI1LCAxNTg4LCAxNTgwLCA1MjUsIDE1ODgsIDE1ODEsIAorICAgIDUyNSwgMTU4OCwgMTU4MiwgNTI1LCAxNTg4LCAxNjA1LCA1MjUsIDE1ODcsIDE2MDcsIDUyNSwgMTU4OCwgMTYwNywgNTI1LCAKKyAgICAxNTkxLCAxNjA1LCA1MjYsIDE1ODcsIDE1ODAsIDUyNiwgMTU4NywgMTU4MSwgNTI2LCAxNTg3LCAxNTgyLCA1MjYsIDE1ODgsIAorICAgIDE1ODAsIDUyNiwgMTU4OCwgMTU4MSwgNTI2LCAxNTg4LCAxNTgyLCA1MjYsIDE1OTEsIDE2MDUsIDUyNiwgMTU5MiwgMTYwNSwgCisgICAgNTI0LCAxNTc1LCAxNjExLCA1MjMsIDE1NzUsIDE2MTEsIDc4MSwgMTU3OCwgMTU4MCwgMTYwNSwgNzgwLCAxNTc4LCAxNTgxLCAKKyAgICAxNTgwLCA3ODEsIDE1NzgsIDE1ODEsIDE1ODAsIDc4MSwgMTU3OCwgMTU4MSwgMTYwNSwgNzgxLCAxNTc4LCAxNTgyLCAKKyAgICAxNjA1LCA3ODEsIDE1NzgsIDE2MDUsIDE1ODAsIDc4MSwgMTU3OCwgMTYwNSwgMTU4MSwgNzgxLCAxNTc4LCAxNjA1LCAKKyAgICAxNTgyLCA3ODAsIDE1ODAsIDE2MDUsIDE1ODEsIDc4MSwgMTU4MCwgMTYwNSwgMTU4MSwgNzgwLCAxNTgxLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE1ODEsIDE2MDUsIDE2MDksIDc4MSwgMTU4NywgMTU4MSwgMTU4MCwgNzgxLCAxNTg3LCAxNTgwLCAKKyAgICAxNTgxLCA3ODAsIDE1ODcsIDE1ODAsIDE2MDksIDc4MCwgMTU4NywgMTYwNSwgMTU4MSwgNzgxLCAxNTg3LCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE1ODcsIDE2MDUsIDE1ODAsIDc4MCwgMTU4NywgMTYwNSwgMTYwNSwgNzgxLCAxNTg3LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODksIDE1ODEsIDE1ODEsIDc4MSwgMTU4OSwgMTU4MSwgMTU4MSwgNzgwLCAxNTg5LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODgsIDE1ODEsIDE2MDUsIDc4MSwgMTU4OCwgMTU4MSwgMTYwNSwgNzgwLCAxNTg4LCAxNTgwLCAKKyAgICAxNjEwLCA3ODAsIDE1ODgsIDE2MDUsIDE1ODIsIDc4MSwgMTU4OCwgMTYwNSwgMTU4MiwgNzgwLCAxNTg4LCAxNjA1LCAKKyAgICAxNjA1LCA3ODEsIDE1ODgsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTkwLCAxNTgyLCAKKyAgICAxNjA1LCA3ODEsIDE1OTAsIDE1ODIsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTU4MSwgNzgxLCAxNTkxLCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE1OTEsIDE2MDUsIDE2MDUsIDc4MCwgMTU5MSwgMTYwNSwgMTYxMCwgNzgwLCAxNTkzLCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE1OTMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTYwNSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1OTQsIDE2MDUsIDE2MDUsIDc4MCwgMTU5NCwgMTYwNSwgMTYxMCwgNzgwLCAxNTk0LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE2MDEsIDE1ODIsIDE2MDUsIDc4MSwgMTYwMSwgMTU4MiwgMTYwNSwgNzgwLCAxNjAyLCAxNjA1LCAKKyAgICAxNTgxLCA3ODAsIDE2MDIsIDE2MDUsIDE2MDUsIDc4MCwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgxLCAKKyAgICAxNjEwLCA3ODAsIDE2MDQsIDE1ODEsIDE2MDksIDc4MSwgMTYwNCwgMTU4MCwgMTU4MCwgNzgwLCAxNjA0LCAxNTgwLCAKKyAgICAxNTgwLCA3ODAsIDE2MDQsIDE1ODIsIDE2MDUsIDc4MSwgMTYwNCwgMTU4MiwgMTYwNSwgNzgwLCAxNjA0LCAxNjA1LCAKKyAgICAxNTgxLCA3ODEsIDE2MDQsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNSwgMTU4MSwgMTU4MCwgNzgxLCAxNjA1LCAxNTgxLCAKKyAgICAxNjA1LCA3ODAsIDE2MDUsIDE1ODEsIDE2MTAsIDc4MSwgMTYwNSwgMTU4MCwgMTU4MSwgNzgxLCAxNjA1LCAxNTgwLCAKKyAgICAxNjA1LCA3ODEsIDE2MDUsIDE1ODIsIDE1ODAsIDc4MSwgMTYwNSwgMTU4MiwgMTYwNSwgNzgxLCAxNjA1LCAxNTgwLCAKKyAgICAxNTgyLCA3ODEsIDE2MDcsIDE2MDUsIDE1ODAsIDc4MSwgMTYwNywgMTYwNSwgMTYwNSwgNzgxLCAxNjA2LCAxNTgxLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODEsIDE2MDksIDc4MCwgMTYwNiwgMTU4MCwgMTYwNSwgNzgxLCAxNjA2LCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE2MDksIDc4MCwgMTYwNiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE2MTAsIDE2MDUsIDE2MDUsIDc4MSwgMTYxMCwgMTYwNSwgMTYwNSwgNzgwLCAxNTc2LCAxNTgyLCAKKyAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODAsIDE2MTAsIDc4MCwgMTU3OCwgMTU4MCwgMTYwOSwgNzgwLCAxNTc4LCAxNTgyLCAKKyAgICAxNjEwLCA3ODAsIDE1NzgsIDE1ODIsIDE2MDksIDc4MCwgMTU3OCwgMTYwNSwgMTYxMCwgNzgwLCAxNTc4LCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1ODAsIDE2MDUsIDE2MTAsIDc4MCwgMTU4MCwgMTU4MSwgMTYwOSwgNzgwLCAxNTgwLCAxNjA1LCAKKyAgICAxNjA5LCA3ODAsIDE1ODcsIDE1ODIsIDE2MDksIDc4MCwgMTU4OSwgMTU4MSwgMTYxMCwgNzgwLCAxNTg4LCAxNTgxLCAKKyAgICAxNjEwLCA3ODAsIDE1OTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYwNCwgMTU4MCwgMTYxMCwgNzgwLCAxNjA0LCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MTAsIDE1ODEsIDE2MTAsIDc4MCwgMTYxMCwgMTU4MCwgMTYxMCwgNzgwLCAxNjEwLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MDUsIDE2MDUsIDE2MTAsIDc4MCwgMTYwMiwgMTYwNSwgMTYxMCwgNzgwLCAxNjA2LCAxNTgxLCAKKyAgICAxNjEwLCA3ODEsIDE2MDIsIDE2MDUsIDE1ODEsIDc4MSwgMTYwNCwgMTU4MSwgMTYwNSwgNzgwLCAxNTkzLCAxNjA1LCAKKyAgICAxNjEwLCA3ODAsIDE2MDMsIDE2MDUsIDE2MTAsIDc4MSwgMTYwNiwgMTU4MCwgMTU4MSwgNzgwLCAxNjA1LCAxNTgyLCAKKyAgICAxNjEwLCA3ODEsIDE2MDQsIDE1ODAsIDE2MDUsIDc4MCwgMTYwMywgMTYwNSwgMTYwNSwgNzgwLCAxNjA0LCAxNTgwLCAKKyAgICAxNjA1LCA3ODAsIDE2MDYsIDE1ODAsIDE1ODEsIDc4MCwgMTU4MCwgMTU4MSwgMTYxMCwgNzgwLCAxNTgxLCAxNTgwLCAKKyAgICAxNjEwLCA3ODAsIDE2MDUsIDE1ODAsIDE2MTAsIDc4MCwgMTYwMSwgMTYwNSwgMTYxMCwgNzgwLCAxNTc2LCAxNTgxLCAKKyAgICAxNjEwLCA3ODEsIDE2MDMsIDE2MDUsIDE2MDUsIDc4MSwgMTU5MywgMTU4MCwgMTYwNSwgNzgxLCAxNTg5LCAxNjA1LCAKKyAgICAxNjA1LCA3ODAsIDE1ODcsIDE1ODIsIDE2MTAsIDc4MCwgMTYwNiwgMTU4MCwgMTYxMCwgNzc5LCAxNTg5LCAxNjA0LCAKKyAgICAxNzQ2LCA3NzksIDE2MDIsIDE2MDQsIDE3NDYsIDEwMzUsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDEwMzUsIDE1NzUsIAorICAgIDE2MDMsIDE1NzYsIDE1ODUsIDEwMzUsIDE2MDUsIDE1ODEsIDE2MDUsIDE1ODMsIDEwMzUsIDE1ODksIDE2MDQsIDE1OTMsIAorICAgIDE2MDUsIDEwMzUsIDE1ODUsIDE1ODcsIDE2MDgsIDE2MDQsIDEwMzUsIDE1OTMsIDE2MDQsIDE2MTAsIDE2MDcsIDEwMzUsIAorICAgIDE2MDgsIDE1ODcsIDE2MDQsIDE2MDUsIDc3OSwgMTU4OSwgMTYwNCwgMTYwOSwgNDYxOSwgMTU4OSwgMTYwNCwgMTYwOSwgCisgICAgMzIsIDE1NzUsIDE2MDQsIDE2MDQsIDE2MDcsIDMyLCAxNTkzLCAxNjA0LCAxNjEwLCAxNjA3LCAzMiwgMTYwOCwgMTU4NywgCisgICAgMTYwNCwgMTYwNSwgMjA1OSwgMTU4MCwgMTYwNCwgMzIsIDE1ODAsIDE2MDQsIDE1NzUsIDE2MDQsIDE2MDcsIDEwMzUsIAorICAgIDE1ODUsIDE3NDAsIDE1NzUsIDE2MDQsIDI2NSwgNDQsIDI2NSwgMTIyODksIDI2NSwgMTIyOTAsIDI2NSwgNTgsIDI2NSwgCisgICAgNTksIDI2NSwgMzMsIDI2NSwgNjMsIDI2NSwgMTIzMTAsIDI2NSwgMTIzMTEsIDI2NSwgODIzMCwgMjY1LCA4MjI5LCAyNjUsIAorICAgIDgyMTIsIDI2NSwgODIxMSwgMjY1LCA5NSwgMjY1LCA5NSwgMjY1LCA0MCwgMjY1LCA0MSwgMjY1LCAxMjMsIDI2NSwgMTI1LCAKKyAgICAyNjUsIDEyMzA4LCAyNjUsIDEyMzA5LCAyNjUsIDEyMzA0LCAyNjUsIDEyMzA1LCAyNjUsIDEyMjk4LCAyNjUsIDEyMjk5LCAKKyAgICAyNjUsIDEyMjk2LCAyNjUsIDEyMjk3LCAyNjUsIDEyMzAwLCAyNjUsIDEyMzAxLCAyNjUsIDEyMzAyLCAyNjUsIDEyMzAzLCAKKyAgICAyNjUsIDkxLCAyNjUsIDkzLCAyNTgsIDgyNTQsIDI1OCwgODI1NCwgMjU4LCA4MjU0LCAyNTgsIDgyNTQsIDI1OCwgOTUsIAorICAgIDI1OCwgOTUsIDI1OCwgOTUsIDI3MSwgNDQsIDI3MSwgMTIyODksIDI3MSwgNDYsIDI3MSwgNTksIDI3MSwgNTgsIDI3MSwgCisgICAgNjMsIDI3MSwgMzMsIDI3MSwgODIxMiwgMjcxLCA0MCwgMjcxLCA0MSwgMjcxLCAxMjMsIDI3MSwgMTI1LCAyNzEsIDEyMzA4LCAKKyAgICAyNzEsIDEyMzA5LCAyNzEsIDM1LCAyNzEsIDM4LCAyNzEsIDQyLCAyNzEsIDQzLCAyNzEsIDQ1LCAyNzEsIDYwLCAyNzEsIAorICAgIDYyLCAyNzEsIDYxLCAyNzEsIDkyLCAyNzEsIDM2LCAyNzEsIDM3LCAyNzEsIDY0LCA1MjMsIDMyLCAxNjExLCA1MjYsIAorICAgIDE2MDAsIDE2MTEsIDUyMywgMzIsIDE2MTIsIDUyMywgMzIsIDE2MTMsIDUyMywgMzIsIDE2MTQsIDUyNiwgMTYwMCwgMTYxNCwgCisgICAgNTIzLCAzMiwgMTYxNSwgNTI2LCAxNjAwLCAxNjE1LCA1MjMsIDMyLCAxNjE2LCA1MjYsIDE2MDAsIDE2MTYsIDUyMywgMzIsIAorICAgIDE2MTcsIDUyNiwgMTYwMCwgMTYxNywgNTIzLCAzMiwgMTYxOCwgNTI2LCAxNjAwLCAxNjE4LCAyNjcsIDE1NjksIDI2NywgCisgICAgMTU3MCwgMjY4LCAxNTcwLCAyNjcsIDE1NzEsIDI2OCwgMTU3MSwgMjY3LCAxNTcyLCAyNjgsIDE1NzIsIDI2NywgMTU3MywgCisgICAgMjY4LCAxNTczLCAyNjcsIDE1NzQsIDI2OCwgMTU3NCwgMjY5LCAxNTc0LCAyNzAsIDE1NzQsIDI2NywgMTU3NSwgMjY4LCAKKyAgICAxNTc1LCAyNjcsIDE1NzYsIDI2OCwgMTU3NiwgMjY5LCAxNTc2LCAyNzAsIDE1NzYsIDI2NywgMTU3NywgMjY4LCAxNTc3LCAKKyAgICAyNjcsIDE1NzgsIDI2OCwgMTU3OCwgMjY5LCAxNTc4LCAyNzAsIDE1NzgsIDI2NywgMTU3OSwgMjY4LCAxNTc5LCAyNjksIAorICAgIDE1NzksIDI3MCwgMTU3OSwgMjY3LCAxNTgwLCAyNjgsIDE1ODAsIDI2OSwgMTU4MCwgMjcwLCAxNTgwLCAyNjcsIDE1ODEsIAorICAgIDI2OCwgMTU4MSwgMjY5LCAxNTgxLCAyNzAsIDE1ODEsIDI2NywgMTU4MiwgMjY4LCAxNTgyLCAyNjksIDE1ODIsIDI3MCwgCisgICAgMTU4MiwgMjY3LCAxNTgzLCAyNjgsIDE1ODMsIDI2NywgMTU4NCwgMjY4LCAxNTg0LCAyNjcsIDE1ODUsIDI2OCwgMTU4NSwgCisgICAgMjY3LCAxNTg2LCAyNjgsIDE1ODYsIDI2NywgMTU4NywgMjY4LCAxNTg3LCAyNjksIDE1ODcsIDI3MCwgMTU4NywgMjY3LCAKKyAgICAxNTg4LCAyNjgsIDE1ODgsIDI2OSwgMTU4OCwgMjcwLCAxNTg4LCAyNjcsIDE1ODksIDI2OCwgMTU4OSwgMjY5LCAxNTg5LCAKKyAgICAyNzAsIDE1ODksIDI2NywgMTU5MCwgMjY4LCAxNTkwLCAyNjksIDE1OTAsIDI3MCwgMTU5MCwgMjY3LCAxNTkxLCAyNjgsIAorICAgIDE1OTEsIDI2OSwgMTU5MSwgMjcwLCAxNTkxLCAyNjcsIDE1OTIsIDI2OCwgMTU5MiwgMjY5LCAxNTkyLCAyNzAsIDE1OTIsIAorICAgIDI2NywgMTU5MywgMjY4LCAxNTkzLCAyNjksIDE1OTMsIDI3MCwgMTU5MywgMjY3LCAxNTk0LCAyNjgsIDE1OTQsIDI2OSwgCisgICAgMTU5NCwgMjcwLCAxNTk0LCAyNjcsIDE2MDEsIDI2OCwgMTYwMSwgMjY5LCAxNjAxLCAyNzAsIDE2MDEsIDI2NywgMTYwMiwgCisgICAgMjY4LCAxNjAyLCAyNjksIDE2MDIsIDI3MCwgMTYwMiwgMjY3LCAxNjAzLCAyNjgsIDE2MDMsIDI2OSwgMTYwMywgMjcwLCAKKyAgICAxNjAzLCAyNjcsIDE2MDQsIDI2OCwgMTYwNCwgMjY5LCAxNjA0LCAyNzAsIDE2MDQsIDI2NywgMTYwNSwgMjY4LCAxNjA1LCAKKyAgICAyNjksIDE2MDUsIDI3MCwgMTYwNSwgMjY3LCAxNjA2LCAyNjgsIDE2MDYsIDI2OSwgMTYwNiwgMjcwLCAxNjA2LCAyNjcsIAorICAgIDE2MDcsIDI2OCwgMTYwNywgMjY5LCAxNjA3LCAyNzAsIDE2MDcsIDI2NywgMTYwOCwgMjY4LCAxNjA4LCAyNjcsIDE2MDksIAorICAgIDI2OCwgMTYwOSwgMjY3LCAxNjEwLCAyNjgsIDE2MTAsIDI2OSwgMTYxMCwgMjcwLCAxNjEwLCA1MjMsIDE2MDQsIDE1NzAsIAorICAgIDUyNCwgMTYwNCwgMTU3MCwgNTIzLCAxNjA0LCAxNTcxLCA1MjQsIDE2MDQsIDE1NzEsIDUyMywgMTYwNCwgMTU3MywgNTI0LCAKKyAgICAxNjA0LCAxNTczLCA1MjMsIDE2MDQsIDE1NzUsIDUyNCwgMTYwNCwgMTU3NSwgMjY0LCAzMywgMjY0LCAzNCwgMjY0LCAzNSwgCisgICAgMjY0LCAzNiwgMjY0LCAzNywgMjY0LCAzOCwgMjY0LCAzOSwgMjY0LCA0MCwgMjY0LCA0MSwgMjY0LCA0MiwgMjY0LCA0MywgCisgICAgMjY0LCA0NCwgMjY0LCA0NSwgMjY0LCA0NiwgMjY0LCA0NywgMjY0LCA0OCwgMjY0LCA0OSwgMjY0LCA1MCwgMjY0LCA1MSwgCisgICAgMjY0LCA1MiwgMjY0LCA1MywgMjY0LCA1NCwgMjY0LCA1NSwgMjY0LCA1NiwgMjY0LCA1NywgMjY0LCA1OCwgMjY0LCA1OSwgCisgICAgMjY0LCA2MCwgMjY0LCA2MSwgMjY0LCA2MiwgMjY0LCA2MywgMjY0LCA2NCwgMjY0LCA2NSwgMjY0LCA2NiwgMjY0LCA2NywgCisgICAgMjY0LCA2OCwgMjY0LCA2OSwgMjY0LCA3MCwgMjY0LCA3MSwgMjY0LCA3MiwgMjY0LCA3MywgMjY0LCA3NCwgMjY0LCA3NSwgCisgICAgMjY0LCA3NiwgMjY0LCA3NywgMjY0LCA3OCwgMjY0LCA3OSwgMjY0LCA4MCwgMjY0LCA4MSwgMjY0LCA4MiwgMjY0LCA4MywgCisgICAgMjY0LCA4NCwgMjY0LCA4NSwgMjY0LCA4NiwgMjY0LCA4NywgMjY0LCA4OCwgMjY0LCA4OSwgMjY0LCA5MCwgMjY0LCA5MSwgCisgICAgMjY0LCA5MiwgMjY0LCA5MywgMjY0LCA5NCwgMjY0LCA5NSwgMjY0LCA5NiwgMjY0LCA5NywgMjY0LCA5OCwgMjY0LCA5OSwgCisgICAgMjY0LCAxMDAsIDI2NCwgMTAxLCAyNjQsIDEwMiwgMjY0LCAxMDMsIDI2NCwgMTA0LCAyNjQsIDEwNSwgMjY0LCAxMDYsIAorICAgIDI2NCwgMTA3LCAyNjQsIDEwOCwgMjY0LCAxMDksIDI2NCwgMTEwLCAyNjQsIDExMSwgMjY0LCAxMTIsIDI2NCwgMTEzLCAKKyAgICAyNjQsIDExNCwgMjY0LCAxMTUsIDI2NCwgMTE2LCAyNjQsIDExNywgMjY0LCAxMTgsIDI2NCwgMTE5LCAyNjQsIDEyMCwgCisgICAgMjY0LCAxMjEsIDI2NCwgMTIyLCAyNjQsIDEyMywgMjY0LCAxMjQsIDI2NCwgMTI1LCAyNjQsIDEyNiwgMjY0LCAxMDYyOSwgCisgICAgMjY0LCAxMDYzMCwgMjcyLCAxMjI5MCwgMjcyLCAxMjMwMCwgMjcyLCAxMjMwMSwgMjcyLCAxMjI4OSwgMjcyLCAxMjUzOSwgCisgICAgMjcyLCAxMjUzMCwgMjcyLCAxMjQ0OSwgMjcyLCAxMjQ1MSwgMjcyLCAxMjQ1MywgMjcyLCAxMjQ1NSwgMjcyLCAxMjQ1NywgCisgICAgMjcyLCAxMjUxNSwgMjcyLCAxMjUxNywgMjcyLCAxMjUxOSwgMjcyLCAxMjQ4MywgMjcyLCAxMjU0MCwgMjcyLCAxMjQ1MCwgCisgICAgMjcyLCAxMjQ1MiwgMjcyLCAxMjQ1NCwgMjcyLCAxMjQ1NiwgMjcyLCAxMjQ1OCwgMjcyLCAxMjQ1OSwgMjcyLCAxMjQ2MSwgCisgICAgMjcyLCAxMjQ2MywgMjcyLCAxMjQ2NSwgMjcyLCAxMjQ2NywgMjcyLCAxMjQ2OSwgMjcyLCAxMjQ3MSwgMjcyLCAxMjQ3MywgCisgICAgMjcyLCAxMjQ3NSwgMjcyLCAxMjQ3NywgMjcyLCAxMjQ3OSwgMjcyLCAxMjQ4MSwgMjcyLCAxMjQ4NCwgMjcyLCAxMjQ4NiwgCisgICAgMjcyLCAxMjQ4OCwgMjcyLCAxMjQ5MCwgMjcyLCAxMjQ5MSwgMjcyLCAxMjQ5MiwgMjcyLCAxMjQ5MywgMjcyLCAxMjQ5NCwgCisgICAgMjcyLCAxMjQ5NSwgMjcyLCAxMjQ5OCwgMjcyLCAxMjUwMSwgMjcyLCAxMjUwNCwgMjcyLCAxMjUwNywgMjcyLCAxMjUxMCwgCisgICAgMjcyLCAxMjUxMSwgMjcyLCAxMjUxMiwgMjcyLCAxMjUxMywgMjcyLCAxMjUxNCwgMjcyLCAxMjUxNiwgMjcyLCAxMjUxOCwgCisgICAgMjcyLCAxMjUyMCwgMjcyLCAxMjUyMSwgMjcyLCAxMjUyMiwgMjcyLCAxMjUyMywgMjcyLCAxMjUyNCwgMjcyLCAxMjUyNSwgCisgICAgMjcyLCAxMjUyNywgMjcyLCAxMjUzMSwgMjcyLCAxMjQ0MSwgMjcyLCAxMjQ0MiwgMjcyLCAxMjY0NCwgMjcyLCAxMjU5MywgCisgICAgMjcyLCAxMjU5NCwgMjcyLCAxMjU5NSwgMjcyLCAxMjU5NiwgMjcyLCAxMjU5NywgMjcyLCAxMjU5OCwgMjcyLCAxMjU5OSwgCisgICAgMjcyLCAxMjYwMCwgMjcyLCAxMjYwMSwgMjcyLCAxMjYwMiwgMjcyLCAxMjYwMywgMjcyLCAxMjYwNCwgMjcyLCAxMjYwNSwgCisgICAgMjcyLCAxMjYwNiwgMjcyLCAxMjYwNywgMjcyLCAxMjYwOCwgMjcyLCAxMjYwOSwgMjcyLCAxMjYxMCwgMjcyLCAxMjYxMSwgCisgICAgMjcyLCAxMjYxMiwgMjcyLCAxMjYxMywgMjcyLCAxMjYxNCwgMjcyLCAxMjYxNSwgMjcyLCAxMjYxNiwgMjcyLCAxMjYxNywgCisgICAgMjcyLCAxMjYxOCwgMjcyLCAxMjYxOSwgMjcyLCAxMjYyMCwgMjcyLCAxMjYyMSwgMjcyLCAxMjYyMiwgMjcyLCAxMjYyMywgCisgICAgMjcyLCAxMjYyNCwgMjcyLCAxMjYyNSwgMjcyLCAxMjYyNiwgMjcyLCAxMjYyNywgMjcyLCAxMjYyOCwgMjcyLCAxMjYyOSwgCisgICAgMjcyLCAxMjYzMCwgMjcyLCAxMjYzMSwgMjcyLCAxMjYzMiwgMjcyLCAxMjYzMywgMjcyLCAxMjYzNCwgMjcyLCAxMjYzNSwgCisgICAgMjcyLCAxMjYzNiwgMjcyLCAxMjYzNywgMjcyLCAxMjYzOCwgMjcyLCAxMjYzOSwgMjcyLCAxMjY0MCwgMjcyLCAxMjY0MSwgCisgICAgMjcyLCAxMjY0MiwgMjcyLCAxMjY0MywgMjY0LCAxNjIsIDI2NCwgMTYzLCAyNjQsIDE3MiwgMjY0LCAxNzUsIDI2NCwgMTY2LCAKKyAgICAyNjQsIDE2NSwgMjY0LCA4MzYxLCAyNzIsIDk0NzQsIDI3MiwgODU5MiwgMjcyLCA4NTkzLCAyNzIsIDg1OTQsIDI3MiwgCisgICAgODU5NSwgMjcyLCA5NjMyLCAyNzIsIDk2NzUsIDUxMiwgNjk3ODUsIDY5ODE4LCA1MTIsIDY5Nzg3LCA2OTgxOCwgNTEyLCAKKyAgICA2OTc5NywgNjk4MTgsIDUxMiwgNjk5MzcsIDY5OTI3LCA1MTIsIDY5OTM4LCA2OTkyNywgNTEyLCAxMTkxMjcsIDExOTE0MSwgCisgICAgNTEyLCAxMTkxMjgsIDExOTE0MSwgNTEyLCAxMTkxMzUsIDExOTE1MCwgNTEyLCAxMTkxMzUsIDExOTE1MSwgNTEyLCAKKyAgICAxMTkxMzUsIDExOTE1MiwgNTEyLCAxMTkxMzUsIDExOTE1MywgNTEyLCAxMTkxMzUsIDExOTE1NCwgNTEyLCAxMTkyMjUsIAorICAgIDExOTE0MSwgNTEyLCAxMTkyMjYsIDExOTE0MSwgNTEyLCAxMTkyMjcsIDExOTE1MCwgNTEyLCAxMTkyMjgsIDExOTE1MCwgCisgICAgNTEyLCAxMTkyMjcsIDExOTE1MSwgNTEyLCAxMTkyMjgsIDExOTE1MSwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCAKKyAgICA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgMjYyLCA3MiwgMjYyLCA3MywgMjYyLCA3NCwgMjYyLCA3NSwgMjYyLCAKKyAgICA3NiwgMjYyLCA3NywgMjYyLCA3OCwgMjYyLCA3OSwgMjYyLCA4MCwgMjYyLCA4MSwgMjYyLCA4MiwgMjYyLCA4MywgMjYyLCAKKyAgICA4NCwgMjYyLCA4NSwgMjYyLCA4NiwgMjYyLCA4NywgMjYyLCA4OCwgMjYyLCA4OSwgMjYyLCA5MCwgMjYyLCA5NywgMjYyLCAKKyAgICA5OCwgMjYyLCA5OSwgMjYyLCAxMDAsIDI2MiwgMTAxLCAyNjIsIDEwMiwgMjYyLCAxMDMsIDI2MiwgMTA0LCAyNjIsIDEwNSwgCisgICAgMjYyLCAxMDYsIDI2MiwgMTA3LCAyNjIsIDEwOCwgMjYyLCAxMDksIDI2MiwgMTEwLCAyNjIsIDExMSwgMjYyLCAxMTIsIAorICAgIDI2MiwgMTEzLCAyNjIsIDExNCwgMjYyLCAxMTUsIDI2MiwgMTE2LCAyNjIsIDExNywgMjYyLCAxMTgsIDI2MiwgMTE5LCAKKyAgICAyNjIsIDEyMCwgMjYyLCAxMjEsIDI2MiwgMTIyLCAyNjIsIDY1LCAyNjIsIDY2LCAyNjIsIDY3LCAyNjIsIDY4LCAyNjIsIAorICAgIDY5LCAyNjIsIDcwLCAyNjIsIDcxLCAyNjIsIDcyLCAyNjIsIDczLCAyNjIsIDc0LCAyNjIsIDc1LCAyNjIsIDc2LCAyNjIsIAorICAgIDc3LCAyNjIsIDc4LCAyNjIsIDc5LCAyNjIsIDgwLCAyNjIsIDgxLCAyNjIsIDgyLCAyNjIsIDgzLCAyNjIsIDg0LCAyNjIsIAorICAgIDg1LCAyNjIsIDg2LCAyNjIsIDg3LCAyNjIsIDg4LCAyNjIsIDg5LCAyNjIsIDkwLCAyNjIsIDk3LCAyNjIsIDk4LCAyNjIsIAorICAgIDk5LCAyNjIsIDEwMCwgMjYyLCAxMDEsIDI2MiwgMTAyLCAyNjIsIDEwMywgMjYyLCAxMDUsIDI2MiwgMTA2LCAyNjIsIDEwNywgCiAgICAgMjYyLCAxMDgsIDI2MiwgMTA5LCAyNjIsIDExMCwgMjYyLCAxMTEsIDI2MiwgMTEyLCAyNjIsIDExMywgMjYyLCAxMTQsIAogICAgIDI2MiwgMTE1LCAyNjIsIDExNiwgMjYyLCAxMTcsIDI2MiwgMTE4LCAyNjIsIDExOSwgMjYyLCAxMjAsIDI2MiwgMTIxLCAKICAgICAyNjIsIDEyMiwgMjYyLCA2NSwgMjYyLCA2NiwgMjYyLCA2NywgMjYyLCA2OCwgMjYyLCA2OSwgMjYyLCA3MCwgMjYyLCA3MSwgCkBAIC0zNTEwLDIwICszNTc5LDQyIEBACiAgICAgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgNDgsIDI2MiwgNDksIDI2MiwgCiAgICAgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgNTYsIDI2MiwgNTcsIDI2MiwgCiAgICAgNDgsIDI2MiwgNDksIDI2MiwgNTAsIDI2MiwgNTEsIDI2MiwgNTIsIDI2MiwgNTMsIDI2MiwgNTQsIDI2MiwgNTUsIDI2MiwgCi0gICAgNTYsIDI2MiwgNTcsIDUxNCwgNDgsIDQ2LCA1MTQsIDQ4LCA0NCwgNTE0LCA0OSwgNDQsIDUxNCwgNTAsIDQ0LCA1MTQsIDUxLCAKLSAgICA0NCwgNTE0LCA1MiwgNDQsIDUxNCwgNTMsIDQ0LCA1MTQsIDU0LCA0NCwgNTE0LCA1NSwgNDQsIDUxNCwgNTYsIDQ0LCA1MTQsIAotICAgIDU3LCA0NCwgNzcwLCA0MCwgNjUsIDQxLCA3NzAsIDQwLCA2NiwgNDEsIDc3MCwgNDAsIDY3LCA0MSwgNzcwLCA0MCwgNjgsIAotICAgIDQxLCA3NzAsIDQwLCA2OSwgNDEsIDc3MCwgNDAsIDcwLCA0MSwgNzcwLCA0MCwgNzEsIDQxLCA3NzAsIDQwLCA3MiwgNDEsIAotICAgIDc3MCwgNDAsIDczLCA0MSwgNzcwLCA0MCwgNzQsIDQxLCA3NzAsIDQwLCA3NSwgNDEsIDc3MCwgNDAsIDc2LCA0MSwgNzcwLCAKLSAgICA0MCwgNzcsIDQxLCA3NzAsIDQwLCA3OCwgNDEsIDc3MCwgNDAsIDc5LCA0MSwgNzcwLCA0MCwgODAsIDQxLCA3NzAsIDQwLCAKLSAgICA4MSwgNDEsIDc3MCwgNDAsIDgyLCA0MSwgNzcwLCA0MCwgODMsIDQxLCA3NzAsIDQwLCA4NCwgNDEsIDc3MCwgNDAsIDg1LCAKLSAgICA0MSwgNzcwLCA0MCwgODYsIDQxLCA3NzAsIDQwLCA4NywgNDEsIDc3MCwgNDAsIDg4LCA0MSwgNzcwLCA0MCwgODksIDQxLCAKLSAgICA3NzAsIDQwLCA5MCwgNDEsIDc3MCwgMTIzMDgsIDgzLCAxMjMwOSwgMjYzLCA2NywgMjYzLCA4MiwgNTE5LCA2NywgNjgsIAotICAgIDUxOSwgODcsIDkwLCAyNjYsIDY1LCAyNjYsIDY2LCAyNjYsIDY3LCAyNjYsIDY4LCAyNjYsIDY5LCAyNjYsIDcwLCAyNjYsIAotICAgIDcxLCAyNjYsIDcyLCAyNjYsIDczLCAyNjYsIDc0LCAyNjYsIDc1LCAyNjYsIDc2LCAyNjYsIDc3LCAyNjYsIDc4LCAyNjYsIAotICAgIDc5LCAyNjYsIDgwLCAyNjYsIDgxLCAyNjYsIDgyLCAyNjYsIDgzLCAyNjYsIDg0LCAyNjYsIDg1LCAyNjYsIDg2LCAyNjYsIAotICAgIDg3LCAyNjYsIDg4LCAyNjYsIDg5LCAyNjYsIDkwLCA1MjIsIDcyLCA4NiwgNTIyLCA3NywgODYsIDUyMiwgODMsIDY4LCAKLSAgICA1MjIsIDgzLCA4MywgNzc4LCA4MCwgODAsIDg2LCA1MjIsIDg3LCA2NywgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAorICAgIDU2LCAyNjIsIDU3LCAyNjIsIDE1NzUsIDI2MiwgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE1ODMsIDI2MiwgMTYwOCwgMjYyLCAKKyAgICAxNTg2LCAyNjIsIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAKKyAgICAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIAorICAgIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIAorICAgIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTcyMiwgMjYyLCAxNjk3LCAyNjIsIDE2NDcsIDI2MiwgCisgICAgMTU3NiwgMjYyLCAxNTgwLCAyNjIsIDE2MDcsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNCwgCisgICAgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAKKyAgICAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU5MCwgMjYyLCAxNTk0LCAKKyAgICAyNjIsIDE1ODAsIDI2MiwgMTU4MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNiwgMjYyLCAxNTg3LCAyNjIsIAorICAgIDE1OTMsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODgsIDI2MiwgMTU4MiwgMjYyLCAxNTkwLCAyNjIsIDE1OTQsIAorICAgIDI2MiwgMTcyMiwgMjYyLCAxNjQ3LCAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNjA3LCAyNjIsIDE1ODEsIDI2MiwgCisgICAgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDMsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIDI2MiwgMTU5MywgCisgICAgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg4LCAyNjIsIDE1NzgsIDI2MiwgMTU3OSwgMjYyLCAKKyAgICAxNTgyLCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCAyNjIsIDE2NDYsIDI2MiwgMTY5NywgMjYyLCAxNTc1LCAKKyAgICAyNjIsIDE1NzYsIDI2MiwgMTU4MCwgMjYyLCAxNTgzLCAyNjIsIDE2MDcsIDI2MiwgMTYwOCwgMjYyLCAxNTg2LCAyNjIsIAorICAgIDE1ODEsIDI2MiwgMTU5MSwgMjYyLCAxNjEwLCAyNjIsIDE2MDQsIDI2MiwgMTYwNSwgMjYyLCAxNjA2LCAyNjIsIDE1ODcsIAorICAgIDI2MiwgMTU5MywgMjYyLCAxNjAxLCAyNjIsIDE1ODksIDI2MiwgMTYwMiwgMjYyLCAxNTg1LCAyNjIsIDE1ODgsIDI2MiwgCisgICAgMTU3OCwgMjYyLCAxNTc5LCAyNjIsIDE1ODIsIDI2MiwgMTU4NCwgMjYyLCAxNTkwLCAyNjIsIDE1OTIsIDI2MiwgMTU5NCwgCisgICAgMjYyLCAxNTc2LCAyNjIsIDE1ODAsIDI2MiwgMTU4MywgMjYyLCAxNjA4LCAyNjIsIDE1ODYsIDI2MiwgMTU4MSwgMjYyLCAKKyAgICAxNTkxLCAyNjIsIDE2MTAsIDI2MiwgMTYwNCwgMjYyLCAxNjA1LCAyNjIsIDE2MDYsIDI2MiwgMTU4NywgMjYyLCAxNTkzLCAKKyAgICAyNjIsIDE2MDEsIDI2MiwgMTU4OSwgMjYyLCAxNjAyLCAyNjIsIDE1ODUsIDI2MiwgMTU4OCwgMjYyLCAxNTc4LCAyNjIsIAorICAgIDE1NzksIDI2MiwgMTU4MiwgMjYyLCAxNTg0LCAyNjIsIDE1OTAsIDI2MiwgMTU5MiwgMjYyLCAxNTk0LCA1MTQsIDQ4LCA0NiwgCisgICAgNTE0LCA0OCwgNDQsIDUxNCwgNDksIDQ0LCA1MTQsIDUwLCA0NCwgNTE0LCA1MSwgNDQsIDUxNCwgNTIsIDQ0LCA1MTQsIDUzLCAKKyAgICA0NCwgNTE0LCA1NCwgNDQsIDUxNCwgNTUsIDQ0LCA1MTQsIDU2LCA0NCwgNTE0LCA1NywgNDQsIDc3MCwgNDAsIDY1LCA0MSwgCisgICAgNzcwLCA0MCwgNjYsIDQxLCA3NzAsIDQwLCA2NywgNDEsIDc3MCwgNDAsIDY4LCA0MSwgNzcwLCA0MCwgNjksIDQxLCA3NzAsIAorICAgIDQwLCA3MCwgNDEsIDc3MCwgNDAsIDcxLCA0MSwgNzcwLCA0MCwgNzIsIDQxLCA3NzAsIDQwLCA3MywgNDEsIDc3MCwgNDAsIAorICAgIDc0LCA0MSwgNzcwLCA0MCwgNzUsIDQxLCA3NzAsIDQwLCA3NiwgNDEsIDc3MCwgNDAsIDc3LCA0MSwgNzcwLCA0MCwgNzgsIAorICAgIDQxLCA3NzAsIDQwLCA3OSwgNDEsIDc3MCwgNDAsIDgwLCA0MSwgNzcwLCA0MCwgODEsIDQxLCA3NzAsIDQwLCA4MiwgNDEsIAorICAgIDc3MCwgNDAsIDgzLCA0MSwgNzcwLCA0MCwgODQsIDQxLCA3NzAsIDQwLCA4NSwgNDEsIDc3MCwgNDAsIDg2LCA0MSwgNzcwLCAKKyAgICA0MCwgODcsIDQxLCA3NzAsIDQwLCA4OCwgNDEsIDc3MCwgNDAsIDg5LCA0MSwgNzcwLCA0MCwgOTAsIDQxLCA3NzAsIAorICAgIDEyMzA4LCA4MywgMTIzMDksIDI2MywgNjcsIDI2MywgODIsIDUxOSwgNjcsIDY4LCA1MTksIDg3LCA5MCwgMjY2LCA2NSwgCisgICAgMjY2LCA2NiwgMjY2LCA2NywgMjY2LCA2OCwgMjY2LCA2OSwgMjY2LCA3MCwgMjY2LCA3MSwgMjY2LCA3MiwgMjY2LCA3MywgCisgICAgMjY2LCA3NCwgMjY2LCA3NSwgMjY2LCA3NiwgMjY2LCA3NywgMjY2LCA3OCwgMjY2LCA3OSwgMjY2LCA4MCwgMjY2LCA4MSwgCisgICAgMjY2LCA4MiwgMjY2LCA4MywgMjY2LCA4NCwgMjY2LCA4NSwgMjY2LCA4NiwgMjY2LCA4NywgMjY2LCA4OCwgMjY2LCA4OSwgCisgICAgMjY2LCA5MCwgNTIyLCA3MiwgODYsIDUyMiwgNzcsIDg2LCA1MjIsIDgzLCA2OCwgNTIyLCA4MywgODMsIDc3OCwgODAsIDgwLCAKKyAgICA4NiwgNTIyLCA4NywgNjcsIDUxNSwgNzcsIDY3LCA1MTUsIDc3LCA2OCwgNTIyLCA2OCwgNzQsIDUyMiwgMTI0MTEsIAogICAgIDEyMzYzLCA1MjIsIDEyNDY3LCAxMjQ2NywgMjY2LCAxMjQ2OSwgMjY2LCAyNTE2MywgMjY2LCAyMzM4MywgMjY2LCAyMTQ1MiwgCiAgICAgMjY2LCAxMjQ4NywgMjY2LCAyMDEwOCwgMjY2LCAyMjgxMCwgMjY2LCAzNTI5OSwgMjY2LCAyMjgyNSwgMjY2LCAyMDEzMiwgCiAgICAgMjY2LCAyNjE0NCwgMjY2LCAyODk2MSwgMjY2LCAyNjAwOSwgMjY2LCAyMTA2OSwgMjY2LCAyNDQ2MCwgMjY2LCAyMDg3NywgCkBAIC0zNjQzLDcgKzM3MzQsNyBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDAsIAotICAgIDQxLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0MiwgNywgNywgNywgNywgNywgNywgCisgICAgNDEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQyLCA0MywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCkBAIC0zNjUxLDkgKzM3NDIsOSBAQAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDQzLCA3LCA3LCA0NCwgNDUsIAotICAgIDQ2LCA0NywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNDgsIDQ5LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA0NCwgNywgNywgNDUsIAorICAgIDQ2LCA0NywgNDgsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAorICAgIDcsIDcsIDQ5LCA3LCA3LCA1MCwgNTEsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAogICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIApAQCAtMzY2NCw3ICszNzU1LDcgQEAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA1MCwgNTEsIDUyLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKKyAgICA3LCA3LCA3LCA3LCA3LCA1MiwgNTMsIDU0LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKICAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKQEAgLTM4MTMsNyArMzkwNCw3IEBACiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiAgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCisgICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZGVjb21wX2luZGV4MltdID0gewpAQCAtNDI4MiwzNTYgKzQzNzMsMTYzIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjY0OCwgNjY1MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgNjY2NCwgCisgICAgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgNjY4OCwgCisgICAgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgNjcxMiwgCisgICAgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgNjczNiwgCisgICAgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgNjc2MCwgCisgICAgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgNjc4NCwgCisgICAgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgNjgwOCwgCisgICAgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgNjgzMiwgCisgICAgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgNjg1NiwgCisgICAgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgNjg4MCwgCisgICAgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgNjkwNCwgCisgICAgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgNjkyOCwgCisgICAgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgNjk1MiwgCisgICAgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgNjk3NiwgCisgICAgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgNzAwMCwgCisgICAgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgNzAyNCwgCisgICAgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgNzA0OCwgCisgICAgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgNzA3MiwgCisgICAgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgNzA5NiwgCisgICAgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgNzEyMCwgCisgICAgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgNzE0NCwgCisgICAgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgNzE2OCwgCisgICAgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgNzE4OCwgNzE5MCwgMCwgMCwgCisgICAgNzE5MiwgMCwgNzE5NCwgMCwgMCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgNzIxMCwgCisgICAgNzIxMiwgNzIxNCwgMCwgNzIxNiwgMCwgNzIxOCwgMCwgMCwgNzIyMCwgNzIyMiwgMCwgMCwgMCwgNzIyNCwgNzIyNiwgCisgICAgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgNzI0OCwgNzI1MCwgCisgICAgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgNzI3MiwgNzI3NCwgCisgICAgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgNzI5NiwgNzI5OCwgCisgICAgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgNzMyMCwgNzMyMiwgCisgICAgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgNzM0NCwgNzM0NiwgCisgICAgNzM0OCwgNzM1MCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgMCwgMCwgNzM2MCwgNzM2MiwgNzM2NCwgNzM2NiwgNzM2OCwgCisgICAgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgNzM5MCwgNzM5MiwgCisgICAgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgNzQxNCwgNzQxNiwgCisgICAgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgNzQzOCwgNzQ0MCwgCisgICAgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgNzQ2MiwgNzQ2NCwgCisgICAgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgNzQ4NiwgNzQ4OCwgCisgICAgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgNzUxMCwgNzUxMiwgCisgICAgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgNzUzNCwgNzUzNiwgCisgICAgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgNzU1OCwgNzU2MCwgCisgICAgNzU2MiwgNzU2NCwgNzU2NiwgNzU2OCwgNzU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0OCwgNjY1MCwgNjY1MiwgNjY1NCwgNjY1NiwgNjY1OCwgNjY2MCwgNjY2MiwgCi0gICAgNjY2NCwgNjY2NiwgNjY2OCwgNjY3MCwgNjY3MiwgNjY3NCwgNjY3NiwgNjY3OCwgNjY4MCwgNjY4MiwgNjY4NCwgNjY4NiwgCi0gICAgNjY4OCwgNjY5MCwgNjY5MiwgNjY5NCwgNjY5NiwgNjY5OCwgNjcwMCwgNjcwMiwgNjcwNCwgNjcwNiwgNjcwOCwgNjcxMCwgCi0gICAgNjcxMiwgNjcxNCwgNjcxNiwgNjcxOCwgNjcyMCwgNjcyMiwgNjcyNCwgNjcyNiwgNjcyOCwgNjczMCwgNjczMiwgNjczNCwgCi0gICAgNjczNiwgNjczOCwgNjc0MCwgNjc0MiwgNjc0NCwgNjc0NiwgNjc0OCwgNjc1MCwgNjc1MiwgNjc1NCwgNjc1NiwgNjc1OCwgCi0gICAgNjc2MCwgNjc2MiwgNjc2NCwgNjc2NiwgNjc2OCwgNjc3MCwgNjc3MiwgNjc3NCwgNjc3NiwgNjc3OCwgNjc4MCwgNjc4MiwgCi0gICAgNjc4NCwgNjc4NiwgNjc4OCwgNjc5MCwgNjc5MiwgNjc5NCwgNjc5NiwgNjc5OCwgNjgwMCwgNjgwMiwgNjgwNCwgNjgwNiwgCi0gICAgNjgwOCwgNjgxMCwgNjgxMiwgNjgxNCwgNjgxNiwgNjgxOCwgNjgyMCwgNjgyMiwgNjgyNCwgNjgyNiwgNjgyOCwgNjgzMCwgCi0gICAgNjgzMiwgNjgzNCwgNjgzNiwgNjgzOCwgNjg0MCwgNjg0MiwgNjg0NCwgNjg0NiwgNjg0OCwgNjg1MCwgNjg1MiwgNjg1NCwgCi0gICAgNjg1NiwgNjg1OCwgNjg2MCwgNjg2MiwgNjg2NCwgNjg2NiwgNjg2OCwgNjg3MCwgNjg3MiwgNjg3NCwgNjg3NiwgNjg3OCwgCi0gICAgNjg4MCwgNjg4MiwgNjg4NCwgNjg4NiwgNjg4OCwgNjg5MCwgNjg5MiwgNjg5NCwgNjg5NiwgNjg5OCwgNjkwMCwgNjkwMiwgCi0gICAgNjkwNCwgNjkwNiwgNjkwOCwgNjkxMCwgNjkxMiwgNjkxNCwgNjkxNiwgNjkxOCwgNjkyMCwgNjkyMiwgNjkyNCwgNjkyNiwgCi0gICAgNjkyOCwgNjkzMCwgNjkzMiwgNjkzNCwgNjkzNiwgNjkzOCwgNjk0MCwgNjk0MiwgNjk0NCwgNjk0NiwgNjk0OCwgNjk1MCwgCi0gICAgNjk1MiwgNjk1NCwgNjk1NiwgNjk1OCwgNjk2MCwgNjk2MiwgNjk2NCwgNjk2NiwgNjk2OCwgNjk3MCwgNjk3MiwgNjk3NCwgCi0gICAgNjk3NiwgNjk3OCwgNjk4MCwgNjk4MiwgNjk4NCwgNjk4NiwgNjk4OCwgNjk5MCwgNjk5MiwgNjk5NCwgNjk5NiwgNjk5OCwgCi0gICAgNzAwMCwgNzAwMiwgNzAwNCwgNzAwNiwgNzAwOCwgNzAxMCwgNzAxMiwgNzAxNCwgNzAxNiwgNzAxOCwgNzAyMCwgNzAyMiwgCi0gICAgNzAyNCwgNzAyNiwgNzAyOCwgNzAzMCwgNzAzMiwgNzAzNCwgNzAzNiwgNzAzOCwgNzA0MCwgNzA0MiwgNzA0NCwgNzA0NiwgCi0gICAgNzA0OCwgNzA1MCwgNzA1MiwgNzA1NCwgNzA1NiwgNzA1OCwgNzA2MCwgNzA2MiwgNzA2NCwgNzA2NiwgNzA2OCwgNzA3MCwgCi0gICAgNzA3MiwgNzA3NCwgNzA3NiwgNzA3OCwgNzA4MCwgNzA4MiwgNzA4NCwgNzA4NiwgNzA4OCwgNzA5MCwgNzA5MiwgNzA5NCwgCi0gICAgNzA5NiwgNzA5OCwgNzEwMCwgNzEwMiwgNzEwNCwgNzEwNiwgNzEwOCwgNzExMCwgNzExMiwgNzExNCwgNzExNiwgNzExOCwgCi0gICAgNzEyMCwgNzEyMiwgNzEyNCwgNzEyNiwgNzEyOCwgNzEzMCwgNzEzMiwgNzEzNCwgNzEzNiwgNzEzOCwgNzE0MCwgNzE0MiwgCi0gICAgNzE0NCwgNzE0NiwgNzE0OCwgNzE1MCwgNzE1MiwgNzE1NCwgNzE1NiwgNzE1OCwgNzE2MCwgNzE2MiwgNzE2NCwgNzE2NiwgCi0gICAgNzE2OCwgNzE3MCwgNzE3MiwgNzE3NCwgNzE3NiwgNzE3OCwgNzE4MCwgNzE4MiwgNzE4NCwgNzE4NiwgMCwgMCwgNzE4OCwgCi0gICAgMCwgNzE5MCwgMCwgMCwgNzE5MiwgNzE5NCwgNzE5NiwgNzE5OCwgNzIwMCwgNzIwMiwgNzIwNCwgNzIwNiwgNzIwOCwgCi0gICAgNzIxMCwgMCwgNzIxMiwgMCwgNzIxNCwgMCwgMCwgNzIxNiwgNzIxOCwgMCwgMCwgMCwgNzIyMCwgNzIyMiwgNzIyNCwgCi0gICAgNzIyNiwgMCwgMCwgNzIyOCwgNzIzMCwgNzIzMiwgNzIzNCwgNzIzNiwgNzIzOCwgNzI0MCwgNzI0MiwgNzI0NCwgNzI0NiwgCi0gICAgNzI0OCwgNzI1MCwgNzI1MiwgNzI1NCwgNzI1NiwgNzI1OCwgNzI2MCwgNzI2MiwgNzI2NCwgNzI2NiwgNzI2OCwgNzI3MCwgCi0gICAgNzI3MiwgNzI3NCwgNzI3NiwgNzI3OCwgNzI4MCwgNzI4MiwgNzI4NCwgNzI4NiwgNzI4OCwgNzI5MCwgNzI5MiwgNzI5NCwgCi0gICAgNzI5NiwgNzI5OCwgNzMwMCwgNzMwMiwgNzMwNCwgNzMwNiwgNzMwOCwgNzMxMCwgNzMxMiwgNzMxNCwgNzMxNiwgNzMxOCwgCi0gICAgNzMyMCwgNzMyMiwgNzMyNCwgNzMyNiwgNzMyOCwgNzMzMCwgNzMzMiwgNzMzNCwgNzMzNiwgNzMzOCwgNzM0MCwgNzM0MiwgCi0gICAgNzM0NCwgNzM0NiwgNzM0OCwgNzM1MCwgMCwgMCwgNzM1MiwgNzM1NCwgNzM1NiwgNzM1OCwgNzM2MCwgNzM2MiwgNzM2NCwgCi0gICAgNzM2NiwgNzM2OCwgNzM3MCwgNzM3MiwgNzM3NCwgNzM3NiwgNzM3OCwgNzM4MCwgNzM4MiwgNzM4NCwgNzM4NiwgNzM4OCwgCi0gICAgNzM5MCwgNzM5MiwgNzM5NCwgNzM5NiwgNzM5OCwgNzQwMCwgNzQwMiwgNzQwNCwgNzQwNiwgNzQwOCwgNzQxMCwgNzQxMiwgCi0gICAgNzQxNCwgNzQxNiwgNzQxOCwgNzQyMCwgNzQyMiwgNzQyNCwgNzQyNiwgNzQyOCwgNzQzMCwgNzQzMiwgNzQzNCwgNzQzNiwgCi0gICAgNzQzOCwgNzQ0MCwgNzQ0MiwgNzQ0NCwgNzQ0NiwgNzQ0OCwgNzQ1MCwgNzQ1MiwgNzQ1NCwgNzQ1NiwgNzQ1OCwgNzQ2MCwgCi0gICAgNzQ2MiwgNzQ2NCwgNzQ2NiwgNzQ2OCwgNzQ3MCwgNzQ3MiwgNzQ3NCwgNzQ3NiwgNzQ3OCwgNzQ4MCwgNzQ4MiwgNzQ4NCwgCi0gICAgNzQ4NiwgNzQ4OCwgNzQ5MCwgNzQ5MiwgNzQ5NCwgNzQ5NiwgNzQ5OCwgNzUwMCwgNzUwMiwgNzUwNCwgNzUwNiwgNzUwOCwgCi0gICAgNzUxMCwgNzUxMiwgNzUxNCwgNzUxNiwgNzUxOCwgNzUyMCwgNzUyMiwgNzUyNCwgNzUyNiwgNzUyOCwgNzUzMCwgNzUzMiwgCi0gICAgNzUzNCwgNzUzNiwgNzUzOCwgNzU0MCwgNzU0MiwgNzU0NCwgNzU0NiwgNzU0OCwgNzU1MCwgNzU1MiwgNzU1NCwgNzU1NiwgCi0gICAgNzU1OCwgNzU2MCwgNzU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU2NCwgNzU2NywgCi0gICAgNzU3MCwgNzU3MywgNzU3NywgNzU4MSwgNzU4NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzU4NywgCi0gICAgNzU5MCwgNzU5MywgNzU5NiwgNzU5OSwgMCwgMCwgMCwgMCwgMCwgNzYwMiwgMCwgNzYwNSwgNzYwOCwgNzYxMCwgNzYxMiwgCi0gICAgNzYxNCwgNzYxNiwgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMSwgNzYzNCwgNzYzNywgNzY0MCwgCi0gICAgNzY0MywgNzY0NiwgNzY0OSwgNzY1MiwgNzY1NSwgNzY1OCwgNzY2MSwgNzY2NCwgMCwgNzY2NywgNzY3MCwgNzY3MywgCi0gICAgNzY3NiwgNzY3OSwgMCwgNzY4MiwgMCwgNzY4NSwgNzY4OCwgMCwgNzY5MSwgNzY5NCwgMCwgNzY5NywgNzcwMCwgNzcwMywgCi0gICAgNzcwNiwgNzcwOSwgNzcxMiwgNzcxNSwgNzcxOCwgNzcyMSwgNzcyNCwgNzcyNywgNzcyOSwgNzczMSwgNzczMywgNzczNSwgCi0gICAgNzczNywgNzczOSwgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgCi0gICAgNzc2MSwgNzc2MywgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgCi0gICAgNzc4NSwgNzc4NywgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgCi0gICAgNzgwOSwgNzgxMSwgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgCi0gICAgNzgzMywgNzgzNSwgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgCi0gICAgNzg1NywgNzg1OSwgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgCi0gICAgNzg4MSwgNzg4MywgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgCi0gICAgNzkwNSwgNzkwNywgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU3MiwgNzU3NSwgNzU3OCwgNzU4MSwgNzU4NSwgNzU4OSwgNzU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzU5NSwgNzU5OCwgNzYwMSwgNzYwNCwgNzYwNywgMCwgMCwgMCwgMCwgMCwgNzYxMCwgMCwgNzYxMywgNzYxNiwgCisgICAgNzYxOCwgNzYyMCwgNzYyMiwgNzYyNCwgNzYyNiwgNzYyOCwgNzYzMCwgNzYzMiwgNzYzNCwgNzYzNiwgNzYzOSwgNzY0MiwgCisgICAgNzY0NSwgNzY0OCwgNzY1MSwgNzY1NCwgNzY1NywgNzY2MCwgNzY2MywgNzY2NiwgNzY2OSwgNzY3MiwgMCwgNzY3NSwgCisgICAgNzY3OCwgNzY4MSwgNzY4NCwgNzY4NywgMCwgNzY5MCwgMCwgNzY5MywgNzY5NiwgMCwgNzY5OSwgNzcwMiwgMCwgNzcwNSwgCisgICAgNzcwOCwgNzcxMSwgNzcxNCwgNzcxNywgNzcyMCwgNzcyMywgNzcyNiwgNzcyOSwgNzczMiwgNzczNSwgNzczNywgNzczOSwgCisgICAgNzc0MSwgNzc0MywgNzc0NSwgNzc0NywgNzc0OSwgNzc1MSwgNzc1MywgNzc1NSwgNzc1NywgNzc1OSwgNzc2MSwgNzc2MywgCisgICAgNzc2NSwgNzc2NywgNzc2OSwgNzc3MSwgNzc3MywgNzc3NSwgNzc3NywgNzc3OSwgNzc4MSwgNzc4MywgNzc4NSwgNzc4NywgCisgICAgNzc4OSwgNzc5MSwgNzc5MywgNzc5NSwgNzc5NywgNzc5OSwgNzgwMSwgNzgwMywgNzgwNSwgNzgwNywgNzgwOSwgNzgxMSwgCisgICAgNzgxMywgNzgxNSwgNzgxNywgNzgxOSwgNzgyMSwgNzgyMywgNzgyNSwgNzgyNywgNzgyOSwgNzgzMSwgNzgzMywgNzgzNSwgCisgICAgNzgzNywgNzgzOSwgNzg0MSwgNzg0MywgNzg0NSwgNzg0NywgNzg0OSwgNzg1MSwgNzg1MywgNzg1NSwgNzg1NywgNzg1OSwgCisgICAgNzg2MSwgNzg2MywgNzg2NSwgNzg2NywgNzg2OSwgNzg3MSwgNzg3MywgNzg3NSwgNzg3NywgNzg3OSwgNzg4MSwgNzg4MywgCisgICAgNzg4NSwgNzg4NywgNzg4OSwgNzg5MSwgNzg5MywgNzg5NSwgNzg5NywgNzg5OSwgNzkwMSwgNzkwMywgNzkwNSwgNzkwNywgCisgICAgNzkwOSwgNzkxMSwgNzkxMywgNzkxNSwgNzkxNywgNzkxOSwgNzkyMSwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzkyMywgNzkyNSwgNzkyNywgNzkyOSwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgCi0gICAgNzk0MywgNzk0NSwgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgCi0gICAgNzk2NywgNzk2OSwgNzk3MiwgNzk3NSwgNzk3OCwgNzk4MSwgNzk4NCwgNzk4NywgNzk5MCwgNzk5MywgNzk5NiwgNzk5OSwgCi0gICAgODAwMiwgODAwNSwgODAwOCwgODAxMSwgODAxNCwgODAxNywgODAyMCwgODAyMywgODAyNSwgODAyNywgODAyOSwgODAzMSwgCi0gICAgODAzNCwgODAzNywgODA0MCwgODA0MywgODA0NiwgODA0OSwgODA1MiwgODA1NSwgODA1OCwgODA2MSwgODA2NCwgODA2NywgCi0gICAgODA3MCwgODA3MywgODA3NiwgODA3OSwgODA4MiwgODA4NSwgODA4OCwgODA5MSwgODA5NCwgODA5NywgODEwMCwgODEwMywgCi0gICAgODEwNiwgODEwOSwgODExMiwgODExNSwgODExOCwgODEyMSwgODEyNCwgODEyNywgODEzMCwgODEzMywgODEzNiwgODEzOSwgCi0gICAgODE0MiwgODE0NSwgODE0OCwgODE1MSwgODE1NCwgODE1NywgODE2MCwgODE2MywgODE2NiwgODE2OSwgODE3MiwgODE3NSwgCi0gICAgODE3OCwgODE4MSwgODE4NCwgODE4NywgODE5MCwgODE5MywgODE5NiwgODE5OSwgODIwMiwgODIwNSwgODIwOCwgODIxMSwgCi0gICAgODIxNCwgODIxNywgODIyMCwgODIyMywgODIyNiwgODIyOSwgODIzMiwgODIzNSwgODIzOCwgODI0MSwgODI0NCwgODI0NywgCi0gICAgODI1MCwgODI1MywgODI1NiwgODI1OSwgODI2MiwgODI2NSwgODI2OCwgODI3MSwgODI3NCwgODI3NywgODI4MCwgODI4MywgCi0gICAgODI4NiwgODI4OSwgODI5MiwgODI5NSwgODI5OCwgODMwMSwgODMwNCwgODMwNywgODMxMCwgODMxMywgODMxNywgODMyMSwgCi0gICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MCwgODM0MywgODM0NiwgODM0OSwgODM1MiwgODM1NSwgODM1OCwgODM2MSwgCi0gICAgODM2NCwgODM2NywgODM3MCwgODM3MywgODM3NiwgODM3OSwgODM4MiwgODM4NSwgODM4OCwgODM5MSwgODM5NCwgODM5NywgCi0gICAgODQwMCwgODQwMywgODQwNiwgODQwOSwgODQxMiwgODQxNSwgODQxOCwgODQyMSwgODQyNCwgODQyNywgODQzMCwgODQzMywgCi0gICAgODQzNiwgODQzOSwgODQ0MiwgODQ0NSwgODQ0OCwgODQ1MSwgODQ1NCwgODQ1NywgODQ2MCwgODQ2MywgODQ2NiwgODQ2OSwgCi0gICAgODQ3MiwgODQ3NSwgODQ3OCwgODQ4MSwgODQ4NCwgODQ4NywgODQ5MCwgODQ5MywgODQ5NiwgODQ5OSwgODUwMiwgODUwNSwgCi0gICAgODUwOCwgODUxMSwgODUxNCwgODUxNywgODUyMCwgODUyMywgODUyNiwgODUyOSwgODUzMiwgODUzNSwgODUzOCwgODU0MSwgCi0gICAgODU0NCwgODU0NywgODU1MCwgODU1MywgODU1NiwgODU1OSwgODU2MiwgODU2NSwgODU2OCwgODU3MSwgODU3NCwgODU3NywgCi0gICAgODU4MCwgODU4MywgODU4NiwgODU4OSwgODU5MiwgODU5NSwgODU5OCwgODYwMSwgODYwNCwgODYwNywgODYxMCwgODYxMywgCi0gICAgODYxNiwgODYxOSwgODYyMiwgODYyNSwgODYyOCwgODYzMSwgODYzNCwgODYzNywgODY0MCwgODY0MywgODY0NiwgODY0OSwgCi0gICAgODY1MiwgODY1NSwgODY1OCwgODY2MSwgODY2NCwgODY2NywgODY3MCwgODY3MywgODY3NiwgODY3OSwgODY4MiwgODY4NSwgCi0gICAgODY4OCwgODY5MSwgODY5NCwgODY5NywgODcwMCwgODcwMywgODcwNiwgODcwOSwgODcxMiwgODcxNSwgODcxOCwgODcyMSwgCi0gICAgODcyNCwgODcyNywgODczMCwgODczMywgODczNiwgODczOSwgODc0MiwgODc0NSwgODc0OCwgODc1MSwgODc1NCwgODc1NywgCi0gICAgODc2MCwgODc2MywgODc2NywgODc3MSwgODc3NSwgODc3OCwgODc4MSwgODc4NCwgODc4NywgODc5MCwgODc5MywgODc5NiwgCi0gICAgODc5OSwgODgwMiwgODgwNSwgODgwOCwgODgxMSwgODgxNCwgODgxNywgODgyMCwgODgyMywgODgyNiwgODgyOSwgODgzMiwgCi0gICAgODgzNSwgODgzOCwgODg0MSwgODg0NCwgODg0NywgODg1MCwgODg1MywgODg1NiwgODg1OSwgODg2MiwgODg2NSwgODg2OCwgCi0gICAgODg3MSwgODg3NCwgODg3NywgODg4MCwgODg4MywgODg4NiwgODg4OSwgODg5MiwgODg5NSwgODg5OCwgODkwMSwgODkwNCwgCi0gICAgODkwNywgODkxMCwgODkxMywgODkxNiwgODkxOSwgODkyMiwgODkyNSwgODkyOCwgODkzMSwgODkzNCwgODkzNywgODk0MCwgCi0gICAgODk0MywgODk0NiwgODk0OSwgODk1MiwgODk1NSwgODk1OCwgODk2MSwgODk2NCwgODk2NywgODk3MCwgODk3MywgODk3NiwgCi0gICAgODk3OSwgODk4MiwgODk4NSwgODk4OCwgODk5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODk5NCwgODk5OCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzkzMSwgNzkzMywgNzkzNSwgNzkzNywgNzkzOSwgNzk0MSwgNzk0MywgNzk0NSwgCisgICAgNzk0NywgNzk0OSwgNzk1MSwgNzk1MywgNzk1NSwgNzk1NywgNzk1OSwgNzk2MSwgNzk2MywgNzk2NSwgNzk2NywgNzk2OSwgCisgICAgNzk3MSwgNzk3MywgNzk3NSwgNzk3NywgNzk4MCwgNzk4MywgNzk4NiwgNzk4OSwgNzk5MiwgNzk5NSwgNzk5OCwgODAwMSwgCisgICAgODAwNCwgODAwNywgODAxMCwgODAxMywgODAxNiwgODAxOSwgODAyMiwgODAyNSwgODAyOCwgODAzMSwgODAzMywgODAzNSwgCisgICAgODAzNywgODAzOSwgODA0MiwgODA0NSwgODA0OCwgODA1MSwgODA1NCwgODA1NywgODA2MCwgODA2MywgODA2NiwgODA2OSwgCisgICAgODA3MiwgODA3NSwgODA3OCwgODA4MSwgODA4NCwgODA4NywgODA5MCwgODA5MywgODA5NiwgODA5OSwgODEwMiwgODEwNSwgCisgICAgODEwOCwgODExMSwgODExNCwgODExNywgODEyMCwgODEyMywgODEyNiwgODEyOSwgODEzMiwgODEzNSwgODEzOCwgODE0MSwgCisgICAgODE0NCwgODE0NywgODE1MCwgODE1MywgODE1NiwgODE1OSwgODE2MiwgODE2NSwgODE2OCwgODE3MSwgODE3NCwgODE3NywgCisgICAgODE4MCwgODE4MywgODE4NiwgODE4OSwgODE5MiwgODE5NSwgODE5OCwgODIwMSwgODIwNCwgODIwNywgODIxMCwgODIxMywgCisgICAgODIxNiwgODIxOSwgODIyMiwgODIyNSwgODIyOCwgODIzMSwgODIzNCwgODIzNywgODI0MCwgODI0MywgODI0NiwgODI0OSwgCisgICAgODI1MiwgODI1NSwgODI1OCwgODI2MSwgODI2NCwgODI2NywgODI3MCwgODI3MywgODI3NiwgODI3OSwgODI4MiwgODI4NSwgCisgICAgODI4OCwgODI5MSwgODI5NCwgODI5NywgODMwMCwgODMwMywgODMwNiwgODMwOSwgODMxMiwgODMxNSwgODMxOCwgODMyMSwgCisgICAgODMyNSwgODMyOSwgODMzMywgODMzNywgODM0MSwgODM0NSwgODM0OCwgODM1MSwgODM1NCwgODM1NywgODM2MCwgODM2MywgCisgICAgODM2NiwgODM2OSwgODM3MiwgODM3NSwgODM3OCwgODM4MSwgODM4NCwgODM4NywgODM5MCwgODM5MywgODM5NiwgODM5OSwgCisgICAgODQwMiwgODQwNSwgODQwOCwgODQxMSwgODQxNCwgODQxNywgODQyMCwgODQyMywgODQyNiwgODQyOSwgODQzMiwgODQzNSwgCisgICAgODQzOCwgODQ0MSwgODQ0NCwgODQ0NywgODQ1MCwgODQ1MywgODQ1NiwgODQ1OSwgODQ2MiwgODQ2NSwgODQ2OCwgODQ3MSwgCisgICAgODQ3NCwgODQ3NywgODQ4MCwgODQ4MywgODQ4NiwgODQ4OSwgODQ5MiwgODQ5NSwgODQ5OCwgODUwMSwgODUwNCwgODUwNywgCisgICAgODUxMCwgODUxMywgODUxNiwgODUxOSwgODUyMiwgODUyNSwgODUyOCwgODUzMSwgODUzNCwgODUzNywgODU0MCwgODU0MywgCisgICAgODU0NiwgODU0OSwgODU1MiwgODU1NSwgODU1OCwgODU2MSwgODU2NCwgODU2NywgODU3MCwgODU3MywgODU3NiwgODU3OSwgCisgICAgODU4MiwgODU4NSwgODU4OCwgODU5MSwgODU5NCwgODU5NywgODYwMCwgODYwMywgODYwNiwgODYwOSwgODYxMiwgODYxNSwgCisgICAgODYxOCwgODYyMSwgODYyNCwgODYyNywgODYzMCwgODYzMywgODYzNiwgODYzOSwgODY0MiwgODY0NSwgODY0OCwgODY1MSwgCisgICAgODY1NCwgODY1NywgODY2MCwgODY2MywgODY2NiwgODY2OSwgODY3MiwgODY3NSwgODY3OCwgODY4MSwgODY4NCwgODY4NywgCisgICAgODY5MCwgODY5MywgODY5NiwgODY5OSwgODcwMiwgODcwNSwgODcwOCwgODcxMSwgODcxNCwgODcxNywgODcyMCwgODcyMywgCisgICAgODcyNiwgODcyOSwgODczMiwgODczNSwgODczOCwgODc0MSwgODc0NCwgODc0NywgODc1MCwgODc1MywgODc1NiwgODc1OSwgCisgICAgODc2MiwgODc2NSwgODc2OCwgODc3MSwgODc3NSwgODc3OSwgODc4MywgODc4NiwgODc4OSwgODc5MiwgODc5NSwgODc5OCwgCisgICAgODgwMSwgODgwNCwgODgwNywgODgxMCwgODgxMywgODgxNiwgODgxOSwgODgyMiwgODgyNSwgODgyOCwgODgzMSwgODgzNCwgCisgICAgODgzNywgODg0MCwgODg0MywgODg0NiwgODg0OSwgODg1MiwgODg1NSwgODg1OCwgODg2MSwgODg2NCwgODg2NywgODg3MCwgCisgICAgODg3MywgODg3NiwgODg3OSwgODg4MiwgODg4NSwgODg4OCwgODg5MSwgODg5NCwgODg5NywgODkwMCwgODkwMywgODkwNiwgCisgICAgODkwOSwgODkxMiwgODkxNSwgODkxOCwgODkyMSwgODkyNCwgODkyNywgODkzMCwgODkzMywgODkzNiwgODkzOSwgODk0MiwgCisgICAgODk0NSwgODk0OCwgODk1MSwgODk1NCwgODk1NywgODk2MCwgODk2MywgODk2NiwgODk2OSwgODk3MiwgODk3NSwgODk3OCwgCisgICAgODk4MSwgODk4NCwgODk4NywgODk5MCwgODk5MywgODk5NiwgODk5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTAwMiwgOTAwNiwgOTAxMCwgOTAxNCwgOTAxOCwgOTAyMiwgOTAyNiwgOTAzMCwgCiAgICAgOTAzNCwgOTAzOCwgOTA0MiwgOTA0NiwgOTA1MCwgOTA1NCwgOTA1OCwgOTA2MiwgOTA2NiwgOTA3MCwgOTA3NCwgOTA3OCwgCiAgICAgOTA4MiwgOTA4NiwgOTA5MCwgOTA5NCwgOTA5OCwgOTEwMiwgOTEwNiwgOTExMCwgOTExNCwgOTExOCwgOTEyMiwgOTEyNiwgCiAgICAgOTEzMCwgOTEzNCwgOTEzOCwgOTE0MiwgOTE0NiwgOTE1MCwgOTE1NCwgOTE1OCwgOTE2MiwgOTE2NiwgOTE3MCwgOTE3NCwgCiAgICAgOTE3OCwgOTE4MiwgOTE4NiwgOTE5MCwgOTE5NCwgOTE5OCwgOTIwMiwgOTIwNiwgOTIxMCwgOTIxNCwgOTIxOCwgOTIyMiwgCi0gICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgMCwgMCwgOTI1MCwgOTI1NCwgOTI1OCwgOTI2MiwgOTI2NiwgCisgICAgOTIyNiwgOTIzMCwgOTIzNCwgOTIzOCwgOTI0MiwgOTI0NiwgOTI1MCwgOTI1NCwgMCwgMCwgOTI1OCwgOTI2MiwgOTI2NiwgCiAgICAgOTI3MCwgOTI3NCwgOTI3OCwgOTI4MiwgOTI4NiwgOTI5MCwgOTI5NCwgOTI5OCwgOTMwMiwgOTMwNiwgOTMxMCwgOTMxNCwgCiAgICAgOTMxOCwgOTMyMiwgOTMyNiwgOTMzMCwgOTMzNCwgOTMzOCwgOTM0MiwgOTM0NiwgOTM1MCwgOTM1NCwgOTM1OCwgOTM2MiwgCiAgICAgOTM2NiwgOTM3MCwgOTM3NCwgOTM3OCwgOTM4MiwgOTM4NiwgOTM5MCwgOTM5NCwgOTM5OCwgOTQwMiwgOTQwNiwgOTQxMCwgCiAgICAgOTQxNCwgOTQxOCwgOTQyMiwgOTQyNiwgOTQzMCwgOTQzNCwgOTQzOCwgOTQ0MiwgOTQ0NiwgOTQ1MCwgOTQ1NCwgOTQ1OCwgCi0gICAgOTQ2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTQ2NiwgOTQ3MCwgOTQ3NCwgCi0gICAgOTQ3OSwgOTQ4NCwgOTQ4OSwgOTQ5NCwgOTQ5OSwgOTUwNCwgOTUwOSwgOTUxMywgOTUzMiwgOTU0MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU0NiwgOTU0OCwgOTU1MCwgOTU1MiwgCi0gICAgOTU1NCwgOTU1NiwgOTU1OCwgOTU2MCwgOTU2MiwgOTU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU2NiwgOTU2OCwgOTU3MCwgOTU3MiwgOTU3NCwgOTU3NiwgOTU3OCwgCi0gICAgOTU4MCwgOTU4MiwgOTU4NCwgOTU4NiwgOTU4OCwgOTU5MCwgOTU5MiwgOTU5NCwgOTU5NiwgOTU5OCwgOTYwMCwgOTYwMiwgCi0gICAgOTYwNCwgOTYwNiwgMCwgMCwgOTYwOCwgOTYxMCwgOTYxMiwgOTYxNCwgOTYxNiwgOTYxOCwgOTYyMCwgOTYyMiwgOTYyNCwgCi0gICAgOTYyNiwgOTYyOCwgOTYzMCwgMCwgOTYzMiwgOTYzNCwgOTYzNiwgOTYzOCwgOTY0MCwgOTY0MiwgOTY0NCwgOTY0NiwgCi0gICAgOTY0OCwgOTY1MCwgOTY1MiwgOTY1NCwgOTY1NiwgOTY1OCwgOTY2MCwgOTY2MiwgOTY2NCwgOTY2NiwgOTY2OCwgMCwgCi0gICAgOTY3MCwgOTY3MiwgOTY3NCwgOTY3NiwgMCwgMCwgMCwgMCwgOTY3OCwgOTY4MSwgOTY4NCwgMCwgOTY4NywgMCwgOTY5MCwgCi0gICAgOTY5MywgOTY5NiwgOTY5OSwgOTcwMiwgOTcwNSwgOTcwOCwgOTcxMSwgOTcxNCwgOTcxNywgOTcyMCwgOTcyMiwgOTcyNCwgCi0gICAgOTcyNiwgOTcyOCwgOTczMCwgOTczMiwgOTczNCwgOTczNiwgOTczOCwgOTc0MCwgOTc0MiwgOTc0NCwgOTc0NiwgOTc0OCwgCi0gICAgOTc1MCwgOTc1MiwgOTc1NCwgOTc1NiwgOTc1OCwgOTc2MCwgOTc2MiwgOTc2NCwgOTc2NiwgOTc2OCwgOTc3MCwgOTc3MiwgCi0gICAgOTc3NCwgOTc3NiwgOTc3OCwgOTc4MCwgOTc4MiwgOTc4NCwgOTc4NiwgOTc4OCwgOTc5MCwgOTc5MiwgOTc5NCwgOTc5NiwgCi0gICAgOTc5OCwgOTgwMCwgOTgwMiwgOTgwNCwgOTgwNiwgOTgwOCwgOTgxMCwgOTgxMiwgOTgxNCwgOTgxNiwgOTgxOCwgOTgyMCwgCi0gICAgOTgyMiwgOTgyNCwgOTgyNiwgOTgyOCwgOTgzMCwgOTgzMiwgOTgzNCwgOTgzNiwgOTgzOCwgOTg0MCwgOTg0MiwgOTg0NCwgCi0gICAgOTg0NiwgOTg0OCwgOTg1MCwgOTg1MiwgOTg1NCwgOTg1NiwgOTg1OCwgOTg2MCwgOTg2MiwgOTg2NCwgOTg2NiwgOTg2OCwgCi0gICAgOTg3MCwgOTg3MiwgOTg3NCwgOTg3NiwgOTg3OCwgOTg4MCwgOTg4MiwgOTg4NCwgOTg4NiwgOTg4OCwgOTg5MCwgOTg5MiwgCi0gICAgOTg5NCwgOTg5NiwgOTg5OCwgOTkwMCwgOTkwMiwgOTkwNCwgOTkwNiwgOTkwOCwgOTkxMCwgOTkxMiwgOTkxNCwgOTkxNiwgCi0gICAgOTkxOCwgOTkyMCwgOTkyMiwgOTkyNCwgOTkyNiwgOTkyOCwgOTkzMCwgOTkzMiwgOTkzNCwgOTkzNiwgOTkzOCwgOTk0MCwgCi0gICAgOTk0MiwgOTk0NCwgOTk0NiwgOTk0OCwgOTk1MCwgOTk1MiwgOTk1NCwgOTk1NywgOTk2MCwgOTk2MywgOTk2NiwgOTk2OSwgCi0gICAgOTk3MiwgOTk3NSwgMCwgMCwgMCwgMCwgOTk3OCwgOTk4MCwgOTk4MiwgOTk4NCwgOTk4NiwgOTk4OCwgOTk5MCwgOTk5MiwgCi0gICAgOTk5NCwgOTk5NiwgOTk5OCwgMTAwMDAsIDEwMDAyLCAxMDAwNCwgMTAwMDYsIDEwMDA4LCAxMDAxMCwgMTAwMTIsIDEwMDE0LCAKLSAgICAxMDAxNiwgMTAwMTgsIDEwMDIwLCAxMDAyMiwgMTAwMjQsIDEwMDI2LCAxMDAyOCwgMTAwMzAsIDEwMDMyLCAxMDAzNCwgCi0gICAgMTAwMzYsIDEwMDM4LCAxMDA0MCwgMTAwNDIsIDEwMDQ0LCAxMDA0NiwgMTAwNDgsIDEwMDUwLCAxMDA1MiwgMTAwNTQsIAotICAgIDEwMDU2LCAxMDA1OCwgMTAwNjAsIDEwMDYyLCAxMDA2NCwgMTAwNjYsIDEwMDY4LCAxMDA3MCwgMTAwNzIsIDEwMDc0LCAKLSAgICAxMDA3NiwgMTAwNzgsIDEwMDgwLCAxMDA4MiwgMTAwODQsIDEwMDg2LCAxMDA4OCwgMTAwOTAsIDEwMDkyLCAxMDA5NCwgCi0gICAgMTAwOTYsIDEwMDk4LCAxMDEwMCwgMTAxMDIsIDEwMTA0LCAxMDEwNiwgMTAxMDgsIDEwMTEwLCAxMDExMiwgMTAxMTQsIAotICAgIDEwMTE2LCAxMDExOCwgMTAxMjAsIDEwMTIyLCAxMDEyNCwgMTAxMjYsIDEwMTI4LCAxMDEzMCwgMTAxMzIsIDEwMTM0LCAKLSAgICAxMDEzNiwgMTAxMzgsIDEwMTQwLCAxMDE0MiwgMTAxNDQsIDEwMTQ2LCAxMDE0OCwgMTAxNTAsIDEwMTUyLCAxMDE1NCwgCi0gICAgMTAxNTYsIDEwMTU4LCAxMDE2MCwgMTAxNjIsIDEwMTY0LCAxMDE2NiwgMTAxNjgsIDEwMTcwLCAxMDE3MiwgMTAxNzQsIAotICAgIDEwMTc2LCAxMDE3OCwgMTAxODAsIDEwMTgyLCAxMDE4NCwgMTAxODYsIDEwMTg4LCAxMDE5MCwgMTAxOTIsIDEwMTk0LCAKLSAgICAxMDE5NiwgMTAxOTgsIDEwMjAwLCAxMDIwMiwgMTAyMDQsIDEwMjA2LCAxMDIwOCwgMTAyMTAsIDEwMjEyLCAxMDIxNCwgCi0gICAgMTAyMTYsIDEwMjE4LCAxMDIyMCwgMTAyMjIsIDEwMjI0LCAxMDIyNiwgMTAyMjgsIDEwMjMwLCAxMDIzMiwgMTAyMzQsIAotICAgIDEwMjM2LCAxMDIzOCwgMTAyNDAsIDEwMjQyLCAxMDI0NCwgMTAyNDYsIDEwMjQ4LCAxMDI1MCwgMTAyNTIsIDEwMjU0LCAKLSAgICAxMDI1NiwgMTAyNTgsIDEwMjYwLCAxMDI2MiwgMTAyNjQsIDEwMjY2LCAxMDI2OCwgMTAyNzAsIDEwMjcyLCAxMDI3NCwgCi0gICAgMTAyNzYsIDEwMjc4LCAxMDI4MCwgMTAyODIsIDEwMjg0LCAxMDI4NiwgMTAyODgsIDEwMjkwLCAxMDI5MiwgMTAyOTQsIAotICAgIDEwMjk2LCAxMDI5OCwgMTAzMDAsIDEwMzAyLCAxMDMwNCwgMTAzMDYsIDEwMzA4LCAxMDMxMCwgMTAzMTIsIDEwMzE0LCAKLSAgICAxMDMxNiwgMTAzMTgsIDEwMzIwLCAxMDMyMiwgMTAzMjQsIDEwMzI2LCAxMDMyOCwgMTAzMzAsIDEwMzMyLCAxMDMzNCwgCi0gICAgMTAzMzYsIDEwMzM4LCAxMDM0MCwgMTAzNDIsIDEwMzQ0LCAxMDM0NiwgMTAzNDgsIDEwMzUwLCAxMDM1MiwgMTAzNTQsIAotICAgIDEwMzU2LCAwLCAwLCAwLCAxMDM1OCwgMTAzNjAsIDEwMzYyLCAxMDM2NCwgMTAzNjYsIDEwMzY4LCAwLCAwLCAxMDM3MCwgCi0gICAgMTAzNzIsIDEwMzc0LCAxMDM3NiwgMTAzNzgsIDEwMzgwLCAwLCAwLCAxMDM4MiwgMTAzODQsIDEwMzg2LCAxMDM4OCwgCi0gICAgMTAzOTAsIDEwMzkyLCAwLCAwLCAxMDM5NCwgMTAzOTYsIDEwMzk4LCAwLCAwLCAwLCAxMDQwMCwgMTA0MDIsIDEwNDA0LCAKLSAgICAxMDQwNiwgMTA0MDgsIDEwNDEwLCAxMDQxMiwgMCwgMTA0MTQsIDEwNDE2LCAxMDQxOCwgMTA0MjAsIDEwNDIyLCAxMDQyNCwgCi0gICAgMTA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk0NjIsIDk0NjYsIDk0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0NzQsIAorICAgIDk0NzgsIDk0ODIsIDk0ODcsIDk0OTIsIDk0OTcsIDk1MDIsIDk1MDcsIDk1MTIsIDk1MTcsIDk1MjEsIDk1NDAsIDk1NDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NTQsIDk1NTYsIAorICAgIDk1NTgsIDk1NjAsIDk1NjIsIDk1NjQsIDk1NjYsIDk1NjgsIDk1NzAsIDk1NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1NzQsIDk1NzYsIDk1NzgsIDk1ODAsIDk1ODIsIAorICAgIDk1ODQsIDk1ODYsIDk1ODgsIDk1OTAsIDk1OTIsIDk1OTQsIDk1OTYsIDk1OTgsIDk2MDAsIDk2MDIsIDk2MDQsIDk2MDYsIAorICAgIDk2MDgsIDk2MTAsIDk2MTIsIDk2MTQsIDAsIDAsIDk2MTYsIDk2MTgsIDk2MjAsIDk2MjIsIDk2MjQsIDk2MjYsIDk2MjgsIAorICAgIDk2MzAsIDk2MzIsIDk2MzQsIDk2MzYsIDk2MzgsIDAsIDk2NDAsIDk2NDIsIDk2NDQsIDk2NDYsIDk2NDgsIDk2NTAsIAorICAgIDk2NTIsIDk2NTQsIDk2NTYsIDk2NTgsIDk2NjAsIDk2NjIsIDk2NjQsIDk2NjYsIDk2NjgsIDk2NzAsIDk2NzIsIDk2NzQsIAorICAgIDk2NzYsIDAsIDk2NzgsIDk2ODAsIDk2ODIsIDk2ODQsIDAsIDAsIDAsIDAsIDk2ODYsIDk2ODksIDk2OTIsIDAsIDk2OTUsIAorICAgIDAsIDk2OTgsIDk3MDEsIDk3MDQsIDk3MDcsIDk3MTAsIDk3MTMsIDk3MTYsIDk3MTksIDk3MjIsIDk3MjUsIDk3MjgsIAorICAgIDk3MzAsIDk3MzIsIDk3MzQsIDk3MzYsIDk3MzgsIDk3NDAsIDk3NDIsIDk3NDQsIDk3NDYsIDk3NDgsIDk3NTAsIDk3NTIsIAorICAgIDk3NTQsIDk3NTYsIDk3NTgsIDk3NjAsIDk3NjIsIDk3NjQsIDk3NjYsIDk3NjgsIDk3NzAsIDk3NzIsIDk3NzQsIDk3NzYsIAorICAgIDk3NzgsIDk3ODAsIDk3ODIsIDk3ODQsIDk3ODYsIDk3ODgsIDk3OTAsIDk3OTIsIDk3OTQsIDk3OTYsIDk3OTgsIDk4MDAsIAorICAgIDk4MDIsIDk4MDQsIDk4MDYsIDk4MDgsIDk4MTAsIDk4MTIsIDk4MTQsIDk4MTYsIDk4MTgsIDk4MjAsIDk4MjIsIDk4MjQsIAorICAgIDk4MjYsIDk4MjgsIDk4MzAsIDk4MzIsIDk4MzQsIDk4MzYsIDk4MzgsIDk4NDAsIDk4NDIsIDk4NDQsIDk4NDYsIDk4NDgsIAorICAgIDk4NTAsIDk4NTIsIDk4NTQsIDk4NTYsIDk4NTgsIDk4NjAsIDk4NjIsIDk4NjQsIDk4NjYsIDk4NjgsIDk4NzAsIDk4NzIsIAorICAgIDk4NzQsIDk4NzYsIDk4NzgsIDk4ODAsIDk4ODIsIDk4ODQsIDk4ODYsIDk4ODgsIDk4OTAsIDk4OTIsIDk4OTQsIDk4OTYsIAorICAgIDk4OTgsIDk5MDAsIDk5MDIsIDk5MDQsIDk5MDYsIDk5MDgsIDk5MTAsIDk5MTIsIDk5MTQsIDk5MTYsIDk5MTgsIDk5MjAsIAorICAgIDk5MjIsIDk5MjQsIDk5MjYsIDk5MjgsIDk5MzAsIDk5MzIsIDk5MzQsIDk5MzYsIDk5MzgsIDk5NDAsIDk5NDIsIDk5NDQsIAorICAgIDk5NDYsIDk5NDgsIDk5NTAsIDk5NTIsIDk5NTQsIDk5NTYsIDk5NTgsIDk5NjAsIDk5NjIsIDk5NjUsIDk5NjgsIDk5NzEsIAorICAgIDk5NzQsIDk5NzcsIDk5ODAsIDk5ODMsIDAsIDAsIDAsIDAsIDk5ODYsIDk5ODgsIDk5OTAsIDk5OTIsIDk5OTQsIDk5OTYsIAorICAgIDk5OTgsIDEwMDAwLCAxMDAwMiwgMTAwMDQsIDEwMDA2LCAxMDAwOCwgMTAwMTAsIDEwMDEyLCAxMDAxNCwgMTAwMTYsIAorICAgIDEwMDE4LCAxMDAyMCwgMTAwMjIsIDEwMDI0LCAxMDAyNiwgMTAwMjgsIDEwMDMwLCAxMDAzMiwgMTAwMzQsIDEwMDM2LCAKKyAgICAxMDAzOCwgMTAwNDAsIDEwMDQyLCAxMDA0NCwgMTAwNDYsIDEwMDQ4LCAxMDA1MCwgMTAwNTIsIDEwMDU0LCAxMDA1NiwgCisgICAgMTAwNTgsIDEwMDYwLCAxMDA2MiwgMTAwNjQsIDEwMDY2LCAxMDA2OCwgMTAwNzAsIDEwMDcyLCAxMDA3NCwgMTAwNzYsIAorICAgIDEwMDc4LCAxMDA4MCwgMTAwODIsIDEwMDg0LCAxMDA4NiwgMTAwODgsIDEwMDkwLCAxMDA5MiwgMTAwOTQsIDEwMDk2LCAKKyAgICAxMDA5OCwgMTAxMDAsIDEwMTAyLCAxMDEwNCwgMTAxMDYsIDEwMTA4LCAxMDExMCwgMTAxMTIsIDEwMTE0LCAxMDExNiwgCisgICAgMTAxMTgsIDEwMTIwLCAxMDEyMiwgMTAxMjQsIDEwMTI2LCAxMDEyOCwgMTAxMzAsIDEwMTMyLCAxMDEzNCwgMTAxMzYsIAorICAgIDEwMTM4LCAxMDE0MCwgMTAxNDIsIDEwMTQ0LCAxMDE0NiwgMTAxNDgsIDEwMTUwLCAxMDE1MiwgMTAxNTQsIDEwMTU2LCAKKyAgICAxMDE1OCwgMTAxNjAsIDEwMTYyLCAxMDE2NCwgMTAxNjYsIDEwMTY4LCAxMDE3MCwgMTAxNzIsIDEwMTc0LCAxMDE3NiwgCisgICAgMTAxNzgsIDEwMTgwLCAxMDE4MiwgMTAxODQsIDEwMTg2LCAxMDE4OCwgMTAxOTAsIDEwMTkyLCAxMDE5NCwgMTAxOTYsIAorICAgIDEwMTk4LCAxMDIwMCwgMTAyMDIsIDEwMjA0LCAxMDIwNiwgMTAyMDgsIDEwMjEwLCAxMDIxMiwgMTAyMTQsIDEwMjE2LCAKKyAgICAxMDIxOCwgMTAyMjAsIDEwMjIyLCAxMDIyNCwgMTAyMjYsIDEwMjI4LCAxMDIzMCwgMTAyMzIsIDEwMjM0LCAxMDIzNiwgCisgICAgMTAyMzgsIDEwMjQwLCAxMDI0MiwgMTAyNDQsIDEwMjQ2LCAxMDI0OCwgMTAyNTAsIDEwMjUyLCAxMDI1NCwgMTAyNTYsIAorICAgIDEwMjU4LCAxMDI2MCwgMTAyNjIsIDEwMjY0LCAxMDI2NiwgMTAyNjgsIDEwMjcwLCAxMDI3MiwgMTAyNzQsIDEwMjc2LCAKKyAgICAxMDI3OCwgMTAyODAsIDEwMjgyLCAxMDI4NCwgMTAyODYsIDEwMjg4LCAxMDI5MCwgMTAyOTIsIDEwMjk0LCAxMDI5NiwgCisgICAgMTAyOTgsIDEwMzAwLCAxMDMwMiwgMTAzMDQsIDEwMzA2LCAxMDMwOCwgMTAzMTAsIDEwMzEyLCAxMDMxNCwgMTAzMTYsIAorICAgIDEwMzE4LCAxMDMyMCwgMTAzMjIsIDEwMzI0LCAxMDMyNiwgMTAzMjgsIDEwMzMwLCAxMDMzMiwgMTAzMzQsIDEwMzM2LCAKKyAgICAxMDMzOCwgMTAzNDAsIDEwMzQyLCAxMDM0NCwgMTAzNDYsIDEwMzQ4LCAxMDM1MCwgMTAzNTIsIDEwMzU0LCAxMDM1NiwgCisgICAgMTAzNTgsIDEwMzYwLCAxMDM2MiwgMTAzNjQsIDAsIDAsIDAsIDEwMzY2LCAxMDM2OCwgMTAzNzAsIDEwMzcyLCAxMDM3NCwgCisgICAgMTAzNzYsIDAsIDAsIDEwMzc4LCAxMDM4MCwgMTAzODIsIDEwMzg0LCAxMDM4NiwgMTAzODgsIDAsIDAsIDEwMzkwLCAKKyAgICAxMDM5MiwgMTAzOTQsIDEwMzk2LCAxMDM5OCwgMTA0MDAsIDAsIDAsIDEwNDAyLCAxMDQwNCwgMTA0MDYsIDAsIDAsIDAsIAorICAgIDEwNDA4LCAxMDQxMCwgMTA0MTIsIDEwNDE0LCAxMDQxNiwgMTA0MTgsIDEwNDIwLCAwLCAxMDQyMiwgMTA0MjQsIDEwNDI2LCAKKyAgICAxMDQyOCwgMTA0MzAsIDEwNDMyLCAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA0MjgsIDAsIDEwNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzYsIDAsIDEwNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MzcsIDEwNDQwLCAxMDQ0MywgMTA0NDYsIDEwNDQ5LCAKLSAgICAxMDQ1MiwgMTA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDU4LCAxMDQ2MSwgCi0gICAgMTA0NjQsIDEwNDY3LCAxMDQ3MCwgMTA0NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNDc2LCAxMDQ3OCwgMTA0ODAsIDEwNDgyLCAxMDQ4NCwgMTA0ODYsIDEwNDg4LCAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAKLSAgICAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgMTA1MTAsIDEwNTEyLCAxMDUxNCwgCi0gICAgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIDEwNTMwLCAxMDUzMiwgMTA1MzQsIAotICAgIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAxMDU1MCwgMTA1NTIsIDEwNTU0LCAKLSAgICAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgMTA1NzAsIDEwNTcyLCAxMDU3NCwgCi0gICAgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIDEwNTkwLCAxMDU5MiwgMTA1OTQsIAotICAgIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAxMDYxMCwgMTA2MTIsIDEwNjE0LCAKLSAgICAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgMTA2MzAsIDEwNjMyLCAxMDYzNCwgCi0gICAgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAwLCAxMDY0NiwgMTA2NDgsIDEwNjUwLCAxMDY1MiwgMTA2NTQsIAotICAgIDEwNjU2LCAxMDY1OCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAxMDY3MCwgMTA2NzIsIDEwNjc0LCAKLSAgICAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgMTA2OTAsIDEwNjkyLCAxMDY5NCwgCi0gICAgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIDEwNzEwLCAxMDcxMiwgMTA3MTQsIAotICAgIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAxMDczMCwgMTA3MzIsIDEwNzM0LCAKLSAgICAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgMTA3NTAsIDEwNzUyLCAxMDc1NCwgCi0gICAgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIDEwNzcwLCAxMDc3MiwgMTA3NzQsIAotICAgIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDAsIDEwNzg4LCAxMDc5MCwgMCwgMCwgMTA3OTIsIAotICAgIDAsIDAsIDEwNzk0LCAxMDc5NiwgMCwgMCwgMTA3OTgsIDEwODAwLCAxMDgwMiwgMTA4MDQsIDAsIDEwODA2LCAxMDgwOCwgCi0gICAgMTA4MTAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAxMDgyMCwgMTA4MjIsIDEwODI0LCAxMDgyNiwgMTA4MjgsIDAsIAotICAgIDEwODMwLCAwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAxMDg0NCwgMCwgMTA4NDYsIAotICAgIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDEwODYwLCAxMDg2MiwgMTA4NjQsIDEwODY2LCAKLSAgICAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgMTA4ODIsIDEwODg0LCAxMDg4NiwgCi0gICAgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIDEwOTAyLCAxMDkwNCwgMTA5MDYsIAotICAgIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAxMDkyMiwgMTA5MjQsIDEwOTI2LCAKLSAgICAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgCi0gICAgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIDEwOTYyLCAxMDk2NCwgMTA5NjYsIAotICAgIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAwLCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAxMDk4MiwgMCwgMCwgMTA5ODQsIAotICAgIDEwOTg2LCAxMDk4OCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDEwOTk4LCAwLCAxMTAwMCwgMTEwMDIsIDExMDA0LCAKLSAgICAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgMTEwMjAsIDExMDIyLCAxMTAyNCwgCi0gICAgMTEwMjYsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIDExMDQwLCAxMTA0MiwgMTEwNDQsIAotICAgIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAxMTA2MCwgMTEwNjIsIDExMDY0LCAKLSAgICAxMTA2NiwgMTEwNjgsIDAsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAwLCAxMTA3OCwgMTEwODAsIDExMDgyLCAKLSAgICAxMTA4NCwgMTEwODYsIDAsIDExMDg4LCAwLCAwLCAwLCAxMTA5MCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgMTEwOTgsIAotICAgIDExMTAwLCAxMTEwMiwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAxMTExNCwgMTExMTYsIDExMTE4LCAKLSAgICAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgMTExMzQsIDExMTM2LCAxMTEzOCwgCi0gICAgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIDExMTU0LCAxMTE1NiwgMTExNTgsIAotICAgIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAxMTE3NCwgMTExNzYsIDExMTc4LCAKLSAgICAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgMTExOTQsIDExMTk2LCAxMTE5OCwgCi0gICAgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIDExMjE0LCAxMTIxNiwgMTEyMTgsIAotICAgIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAxMTIzNCwgMTEyMzYsIDExMjM4LCAKLSAgICAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgMTEyNTQsIDExMjU2LCAxMTI1OCwgCi0gICAgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIDExMjc0LCAxMTI3NiwgMTEyNzgsIAotICAgIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAxMTI5NCwgMTEyOTYsIDExMjk4LCAKLSAgICAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgMTEzMTQsIDExMzE2LCAxMTMxOCwgCi0gICAgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIDExMzM0LCAxMTMzNiwgMTEzMzgsIAotICAgIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAxMTM1NCwgMTEzNTYsIDExMzU4LCAKLSAgICAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgMTEzNzQsIDExMzc2LCAxMTM3OCwgCi0gICAgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIDExMzk0LCAxMTM5NiwgMTEzOTgsIAotICAgIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAxMTQxNCwgMTE0MTYsIDExNDE4LCAKLSAgICAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgMTE0MzQsIDExNDM2LCAxMTQzOCwgCi0gICAgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIDExNDU0LCAxMTQ1NiwgMTE0NTgsIAotICAgIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAxMTQ3NCwgMTE0NzYsIDExNDc4LCAKLSAgICAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgMTE0OTQsIDExNDk2LCAxMTQ5OCwgCi0gICAgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIDExNTE0LCAxMTUxNiwgMTE1MTgsIAotICAgIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAxMTUzNCwgMTE1MzYsIDExNTM4LCAKLSAgICAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgMTE1NTQsIDExNTU2LCAxMTU1OCwgCi0gICAgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIDExNTc0LCAxMTU3NiwgMTE1NzgsIAotICAgIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAxMTU5NCwgMTE1OTYsIDExNTk4LCAKLSAgICAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgMTE2MTQsIDExNjE2LCAxMTYxOCwgCi0gICAgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIDExNjM0LCAxMTYzNiwgMTE2MzgsIAotICAgIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAxMTY1NCwgMTE2NTYsIDExNjU4LCAKLSAgICAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgMTE2NzQsIDExNjc2LCAxMTY3OCwgCi0gICAgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIDExNjk0LCAxMTY5NiwgMTE2OTgsIAotICAgIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAxMTcxNCwgMTE3MTYsIDExNzE4LCAKLSAgICAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgMTE3MzQsIDExNzM2LCAxMTczOCwgCi0gICAgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIDExNzU0LCAxMTc1NiwgMTE3NTgsIAotICAgIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAxMTc3NCwgMTE3NzYsIDExNzc4LCAKLSAgICAxMTc4MCwgMTE3ODIsIDAsIDAsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgMTE3OTQsIDExNzk2LCAKLSAgICAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgMTE4MTIsIDExODE0LCAxMTgxNiwgCi0gICAgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIDExODMyLCAxMTgzNCwgMTE4MzYsIAotICAgIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAxMTg1MiwgMTE4NTQsIDExODU2LCAKLSAgICAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgMTE4NzIsIDExODc0LCAxMTg3NiwgCi0gICAgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIDExODkyLCAxMTg5NCwgMTE4OTYsIAotICAgIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAxMTkxMiwgMTE5MTQsIDExOTE2LCAKLSAgICAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgMTE5MzIsIDExOTM0LCAxMTkzNiwgCi0gICAgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIDExOTUyLCAxMTk1NCwgMTE5NTYsIAotICAgIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAxMTk3MiwgMTE5NzQsIDExOTc2LCAKLSAgICAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgMTE5OTIsIDExOTk0LCAxMTk5NiwgCi0gICAgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIDEyMDEyLCAxMjAxNCwgMTIwMTYsIAotICAgIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAxMjAzMiwgMTIwMzQsIDEyMDM2LCAKLSAgICAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgMTIwNTIsIDEyMDU0LCAxMjA1NiwgCi0gICAgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIDEyMDcyLCAxMjA3NCwgMTIwNzYsIAotICAgIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAxMjA5MiwgMTIwOTQsIDEyMDk2LCAKLSAgICAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgMTIxMTIsIDEyMTE0LCAxMjExNiwgCi0gICAgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIDEyMTMyLCAxMjEzNCwgMTIxMzYsIAotICAgIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAxMjE1MiwgMTIxNTQsIDEyMTU2LCAKLSAgICAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgMTIxNzIsIDEyMTc0LCAxMjE3NiwgCi0gICAgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIDEyMTkyLCAxMjE5NCwgMTIxOTYsIAotICAgIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAxMjIxMiwgMTIyMTQsIDEyMjE2LCAKLSAgICAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgMTIyMzIsIDEyMjM0LCAxMjIzNiwgCi0gICAgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIDEyMjUyLCAxMjI1NCwgMTIyNTYsIAotICAgIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAxMjI3MiwgMTIyNzQsIDEyMjc2LCAKLSAgICAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgMTIyOTIsIDEyMjk0LCAxMjI5NiwgCi0gICAgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIDEyMzEyLCAxMjMxNCwgMTIzMTYsIAotICAgIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAxMjMzMiwgMTIzMzQsIDEyMzM2LCAKLSAgICAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgMTIzNTIsIDEyMzU0LCAxMjM1NiwgCi0gICAgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAwLCAwLCAxMjM2OCwgMTIzNzAsIDEyMzcyLCAxMjM3NCwgCi0gICAgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIDEyMzkwLCAxMjM5MiwgMTIzOTQsIAotICAgIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAxMjQxMCwgMTI0MTIsIDEyNDE0LCAKLSAgICAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgMTI0MzAsIDEyNDMyLCAxMjQzNCwgCi0gICAgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIAotICAgIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAxMjQ3MSwgMTI0NzQsIDEyNDc3LCAKLSAgICAxMjQ4MCwgMTI0ODMsIDEyNDg2LCAxMjQ4OSwgMTI0OTIsIDEyNDk1LCAxMjQ5OCwgMCwgMCwgMCwgMCwgMCwgMTI1MDEsIAotICAgIDEyNTA1LCAxMjUwOSwgMTI1MTMsIDEyNTE3LCAxMjUyMSwgMTI1MjUsIDEyNTI5LCAxMjUzMywgMTI1MzcsIDEyNTQxLCAKLSAgICAxMjU0NSwgMTI1NDksIDEyNTUzLCAxMjU1NywgMTI1NjEsIDEyNTY1LCAxMjU2OSwgMTI1NzMsIDEyNTc3LCAxMjU4MSwgCi0gICAgMTI1ODUsIDEyNTg5LCAxMjU5MywgMTI1OTcsIDEyNjAxLCAxMjYwNSwgMTI2MDksIDEyNjExLCAxMjYxMywgMTI2MTYsIDAsIAotICAgIDEyNjE5LCAxMjYyMSwgMTI2MjMsIDEyNjI1LCAxMjYyNywgMTI2MjksIDEyNjMxLCAxMjYzMywgMTI2MzUsIDEyNjM3LCAKLSAgICAxMjYzOSwgMTI2NDEsIDEyNjQzLCAxMjY0NSwgMTI2NDcsIDEyNjQ5LCAxMjY1MSwgMTI2NTMsIDEyNjU1LCAxMjY1NywgCi0gICAgMTI2NTksIDEyNjYxLCAxMjY2MywgMTI2NjUsIDEyNjY3LCAxMjY2OSwgMTI2NzEsIDEyNjc0LCAxMjY3NywgMTI2ODAsIAotICAgIDEyNjgzLCAxMjY4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2OTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNjkzLCAxMjY5NiwgMTI2OTksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzAxLCAxMjcwMywgMTI3MDUsIDEyNzA3LCAxMjcwOSwgMTI3MTEsIAotICAgIDEyNzEzLCAxMjcxNSwgMTI3MTcsIDEyNzE5LCAxMjcyMSwgMTI3MjMsIDEyNzI1LCAxMjcyNywgMTI3MjksIDEyNzMxLCAKLSAgICAxMjczMywgMTI3MzUsIDEyNzM3LCAxMjczOSwgMTI3NDEsIDEyNzQzLCAxMjc0NSwgMTI3NDcsIDEyNzQ5LCAxMjc1MSwgCi0gICAgMTI3NTMsIDEyNzU1LCAxMjc1NywgMTI3NTksIDEyNzYxLCAxMjc2MywgMTI3NjUsIDEyNzY3LCAxMjc2OSwgMTI3NzEsIAotICAgIDEyNzczLCAxMjc3NSwgMTI3NzcsIDEyNzc5LCAxMjc4MSwgMTI3ODMsIDEyNzg1LCAwLCAwLCAwLCAwLCAwLCAxMjc4NywgCi0gICAgMTI3OTEsIDEyNzk1LCAxMjc5OSwgMTI4MDMsIDEyODA3LCAxMjgxMSwgMTI4MTUsIDEyODE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxMjgyMywgMTI4MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODI3LCAxMjgyOSwgMTI4MzEsIDEyODMzLCAxMjgzNSwgCi0gICAgMTI4MzcsIDEyODM5LCAxMjg0MSwgMTI4NDMsIDEyODQ1LCAxMjg0NywgMTI4NDksIDEyODUxLCAxMjg1MywgMTI4NTUsIAotICAgIDEyODU3LCAxMjg1OSwgMTI4NjEsIDEyODYzLCAxMjg2NSwgMTI4NjcsIDEyODY5LCAxMjg3MSwgMTI4NzMsIDEyODc1LCAKLSAgICAxMjg3NywgMTI4NzksIDEyODgxLCAxMjg4MywgMTI4ODUsIDEyODg3LCAxMjg4OSwgMTI4OTEsIDEyODkzLCAxMjg5NSwgCi0gICAgMTI4OTcsIDEyODk5LCAxMjkwMSwgMTI5MDMsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTExLCAxMjkxMywgMTI5MTUsIAotICAgIDEyOTE3LCAxMjkxOSwgMTI5MjEsIDEyOTIzLCAxMjkyNSwgMTI5MjcsIDEyOTI5LCAxMjkzMSwgMTI5MzMsIDEyOTM1LCAKLSAgICAxMjkzNywgMTI5MzksIDEyOTQxLCAxMjk0MywgMTI5NDUsIDEyOTQ3LCAxMjk0OSwgMTI5NTEsIDEyOTUzLCAxMjk1NSwgCi0gICAgMTI5NTcsIDEyOTU5LCAxMjk2MSwgMTI5NjMsIDEyOTY1LCAxMjk2NywgMTI5NjksIDEyOTcxLCAxMjk3MywgMTI5NzUsIAotICAgIDEyOTc3LCAxMjk3OSwgMTI5ODEsIDEyOTgzLCAxMjk4NSwgMTI5ODcsIDEyOTg5LCAxMjk5MSwgMTI5OTMsIDEyOTk1LCAKLSAgICAxMjk5NywgMTI5OTksIDEzMDAxLCAxMzAwMywgMTMwMDUsIDEzMDA3LCAxMzAwOSwgMTMwMTEsIDEzMDEzLCAxMzAxNSwgCi0gICAgMTMwMTcsIDEzMDE5LCAxMzAyMSwgMTMwMjMsIDEzMDI1LCAxMzAyNywgMTMwMjksIDEzMDMxLCAxMzAzMywgMTMwMzUsIAotICAgIDEzMDM3LCAxMzAzOSwgMTMwNDEsIDEzMDQzLCAxMzA0NSwgMTMwNDcsIDEzMDQ5LCAxMzA1MSwgMTMwNTMsIDEzMDU1LCAKLSAgICAxMzA1NywgMTMwNTksIDEzMDYxLCAxMzA2MywgMTMwNjUsIDEzMDY3LCAxMzA2OSwgMTMwNzEsIDEzMDczLCAxMzA3NSwgCi0gICAgMTMwNzcsIDEzMDc5LCAxMzA4MSwgMTMwODMsIDEzMDg1LCAxMzA4NywgMTMwODksIDEzMDkxLCAxMzA5MywgMTMwOTUsIAotICAgIDEzMDk3LCAxMzA5OSwgMTMxMDEsIDEzMTAzLCAxMzEwNSwgMTMxMDcsIDEzMTA5LCAxMzExMSwgMTMxMTMsIDEzMTE1LCAKLSAgICAxMzExNywgMTMxMTksIDEzMTIxLCAxMzEyMywgMTMxMjUsIDEzMTI3LCAxMzEyOSwgMTMxMzEsIDEzMTMzLCAxMzEzNSwgCi0gICAgMTMxMzcsIDEzMTM5LCAxMzE0MSwgMTMxNDMsIDEzMTQ1LCAxMzE0NywgMTMxNDksIDEzMTUxLCAxMzE1MywgMTMxNTUsIAotICAgIDEzMTU3LCAxMzE1OSwgMTMxNjEsIDEzMTYzLCAxMzE2NSwgMTMxNjcsIDEzMTY5LCAxMzE3MSwgMTMxNzMsIDEzMTc1LCAKLSAgICAxMzE3NywgMTMxNzksIDEzMTgxLCAxMzE4MywgMTMxODUsIDEzMTg3LCAxMzE4OSwgMTMxOTEsIDEzMTkzLCAxMzE5NSwgCi0gICAgMTMxOTcsIDEzMTk5LCAxMzIwMSwgMTMyMDMsIDEzMjA1LCAxMzIwNywgMTMyMDksIDEzMjExLCAxMzIxMywgMTMyMTUsIAotICAgIDEzMjE3LCAxMzIxOSwgMTMyMjEsIDEzMjIzLCAxMzIyNSwgMTMyMjcsIDEzMjI5LCAxMzIzMSwgMTMyMzMsIDEzMjM1LCAKLSAgICAxMzIzNywgMTMyMzksIDEzMjQxLCAxMzI0MywgMTMyNDUsIDEzMjQ3LCAxMzI0OSwgMTMyNTEsIDEzMjUzLCAxMzI1NSwgCi0gICAgMTMyNTcsIDEzMjU5LCAxMzI2MSwgMTMyNjMsIDEzMjY1LCAxMzI2NywgMTMyNjksIDEzMjcxLCAxMzI3MywgMTMyNzUsIAotICAgIDEzMjc3LCAxMzI3OSwgMTMyODEsIDEzMjgzLCAxMzI4NSwgMTMyODcsIDEzMjg5LCAxMzI5MSwgMTMyOTMsIDEzMjk1LCAKLSAgICAxMzI5NywgMTMyOTksIDEzMzAxLCAxMzMwMywgMTMzMDUsIDEzMzA3LCAxMzMwOSwgMTMzMTEsIDEzMzEzLCAxMzMxNSwgCi0gICAgMTMzMTcsIDEzMzE5LCAxMzMyMSwgMTMzMjMsIDEzMzI1LCAxMzMyNywgMTMzMjksIDEzMzMxLCAxMzMzMywgMTMzMzUsIAotICAgIDEzMzM3LCAxMzMzOSwgMTMzNDEsIDEzMzQzLCAxMzM0NSwgMTMzNDcsIDEzMzQ5LCAxMzM1MSwgMTMzNTMsIDEzMzU1LCAKLSAgICAxMzM1NywgMTMzNTksIDEzMzYxLCAxMzM2MywgMTMzNjUsIDEzMzY3LCAxMzM2OSwgMTMzNzEsIDEzMzczLCAxMzM3NSwgCi0gICAgMTMzNzcsIDEzMzc5LCAxMzM4MSwgMTMzODMsIDEzMzg1LCAxMzM4NywgMTMzODksIDEzMzkxLCAxMzM5MywgMTMzOTUsIAotICAgIDEzMzk3LCAxMzM5OSwgMTM0MDEsIDEzNDAzLCAxMzQwNSwgMTM0MDcsIDEzNDA5LCAxMzQxMSwgMTM0MTMsIDEzNDE1LCAKLSAgICAxMzQxNywgMTM0MTksIDEzNDIxLCAxMzQyMywgMTM0MjUsIDEzNDI3LCAxMzQyOSwgMTM0MzEsIDEzNDMzLCAxMzQzNSwgCi0gICAgMTM0MzcsIDEzNDM5LCAxMzQ0MSwgMTM0NDMsIDEzNDQ1LCAxMzQ0NywgMTM0NDksIDEzNDUxLCAxMzQ1MywgMTM0NTUsIAotICAgIDEzNDU3LCAxMzQ1OSwgMTM0NjEsIDEzNDYzLCAxMzQ2NSwgMTM0NjcsIDEzNDY5LCAxMzQ3MSwgMTM0NzMsIDEzNDc1LCAKLSAgICAxMzQ3NywgMTM0NzksIDEzNDgxLCAxMzQ4MywgMTM0ODUsIDEzNDg3LCAxMzQ4OSwgMTM0OTEsIDEzNDkzLCAxMzQ5NSwgCi0gICAgMTM0OTcsIDEzNDk5LCAxMzUwMSwgMTM1MDMsIDEzNTA1LCAxMzUwNywgMTM1MDksIDEzNTExLCAxMzUxMywgMTM1MTUsIAotICAgIDEzNTE3LCAxMzUxOSwgMTM1MjEsIDEzNTIzLCAxMzUyNSwgMTM1MjcsIDEzNTI5LCAxMzUzMSwgMTM1MzMsIDEzNTM1LCAKLSAgICAxMzUzNywgMTM1MzksIDEzNTQxLCAxMzU0MywgMTM1NDUsIDEzNTQ3LCAxMzU0OSwgMTM1NTEsIDEzNTUzLCAxMzU1NSwgCi0gICAgMTM1NTcsIDEzNTU5LCAxMzU2MSwgMTM1NjMsIDEzNTY1LCAxMzU2NywgMTM1NjksIDEzNTcxLCAxMzU3MywgMTM1NzUsIAotICAgIDEzNTc3LCAxMzU3OSwgMTM1ODEsIDEzNTgzLCAxMzU4NSwgMTM1ODcsIDEzNTg5LCAxMzU5MSwgMTM1OTMsIDEzNTk1LCAKLSAgICAxMzU5NywgMTM1OTksIDEzNjAxLCAxMzYwMywgMTM2MDUsIDEzNjA3LCAxMzYwOSwgMTM2MTEsIDEzNjEzLCAxMzYxNSwgCi0gICAgMTM2MTcsIDEzNjE5LCAxMzYyMSwgMTM2MjMsIDEzNjI1LCAxMzYyNywgMTM2MjksIDEzNjMxLCAxMzYzMywgMTM2MzUsIAotICAgIDEzNjM3LCAxMzYzOSwgMTM2NDEsIDEzNjQzLCAxMzY0NSwgMTM2NDcsIDEzNjQ5LCAxMzY1MSwgMTM2NTMsIDEzNjU1LCAKLSAgICAxMzY1NywgMTM2NTksIDEzNjYxLCAxMzY2MywgMTM2NjUsIDEzNjY3LCAxMzY2OSwgMTM2NzEsIDEzNjczLCAxMzY3NSwgCi0gICAgMTM2NzcsIDEzNjc5LCAxMzY4MSwgMTM2ODMsIDEzNjg1LCAxMzY4NywgMTM2ODksIDEzNjkxLCAxMzY5MywgMTM2OTUsIAotICAgIDEzNjk3LCAxMzY5OSwgMTM3MDEsIDEzNzAzLCAxMzcwNSwgMTM3MDcsIDEzNzA5LCAxMzcxMSwgMTM3MTMsIDEzNzE1LCAKLSAgICAxMzcxNywgMTM3MTksIDEzNzIxLCAxMzcyMywgMTM3MjUsIDEzNzI3LCAxMzcyOSwgMTM3MzEsIDEzNzMzLCAxMzczNSwgCi0gICAgMTM3MzcsIDEzNzM5LCAxMzc0MSwgMTM3NDMsIDEzNzQ1LCAxMzc0NywgMTM3NDksIDEzNzUxLCAxMzc1MywgMTM3NTUsIAotICAgIDEzNzU3LCAxMzc1OSwgMTM3NjEsIDEzNzYzLCAxMzc2NSwgMTM3NjcsIDEzNzY5LCAxMzc3MSwgMTM3NzMsIDEzNzc1LCAKLSAgICAxMzc3NywgMTM3NzksIDEzNzgxLCAxMzc4MywgMTM3ODUsIDEzNzg3LCAxMzc4OSwgMTM3OTEsIDEzNzkzLCAxMzc5NSwgCi0gICAgMTM3OTcsIDEzNzk5LCAxMzgwMSwgMTM4MDMsIDEzODA1LCAxMzgwNywgMTM4MDksIDEzODExLCAxMzgxMywgMTM4MTUsIAotICAgIDEzODE3LCAxMzgxOSwgMTM4MjEsIDEzODIzLCAxMzgyNSwgMTM4MjcsIDEzODI5LCAxMzgzMSwgMTM4MzMsIDEzODM1LCAKLSAgICAxMzgzNywgMTM4MzksIDEzODQxLCAxMzg0MywgMTM4NDUsIDEzODQ3LCAxMzg0OSwgMTM4NTEsIDEzODUzLCAxMzg1NSwgCi0gICAgMTM4NTcsIDEzODU5LCAxMzg2MSwgMTM4NjMsIDEzODY1LCAxMzg2NywgMTM4NjksIDEzODcxLCAxMzg3MywgMTM4NzUsIAotICAgIDEzODc3LCAxMzg3OSwgMTM4ODEsIDEzODgzLCAxMzg4NSwgMTM4ODcsIDEzODg5LCAxMzg5MSwgMTM4OTMsIDEzODk1LCAKLSAgICAxMzg5NywgMTM4OTksIDEzOTAxLCAxMzkwMywgMTM5MDUsIDEzOTA3LCAxMzkwOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NDUsIDEwNDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTQ2NDEsNDAyICs0NTM5LDYyMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDUxLCAxMDQ1NCwgMTA0NTcsIDEwNDYwLCAxMDQ2MywgCisgICAgMTA0NjYsIDEwNDY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ3MiwgMTA0NzUsIAorICAgIDEwNDc4LCAxMDQ4MSwgMTA0ODQsIDEwNDg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDQ5MCwgMTA0OTIsIDEwNDk0LCAxMDQ5NiwgMTA0OTgsIDEwNTAwLCAxMDUwMiwgMTA1MDQsIDEwNTA2LCAxMDUwOCwgCisgICAgMTA1MTAsIDEwNTEyLCAxMDUxNCwgMTA1MTYsIDEwNTE4LCAxMDUyMCwgMTA1MjIsIDEwNTI0LCAxMDUyNiwgMTA1MjgsIAorICAgIDEwNTMwLCAxMDUzMiwgMTA1MzQsIDEwNTM2LCAxMDUzOCwgMTA1NDAsIDEwNTQyLCAxMDU0NCwgMTA1NDYsIDEwNTQ4LCAKKyAgICAxMDU1MCwgMTA1NTIsIDEwNTU0LCAxMDU1NiwgMTA1NTgsIDEwNTYwLCAxMDU2MiwgMTA1NjQsIDEwNTY2LCAxMDU2OCwgCisgICAgMTA1NzAsIDEwNTcyLCAxMDU3NCwgMTA1NzYsIDEwNTc4LCAxMDU4MCwgMTA1ODIsIDEwNTg0LCAxMDU4NiwgMTA1ODgsIAorICAgIDEwNTkwLCAxMDU5MiwgMTA1OTQsIDEwNTk2LCAxMDU5OCwgMTA2MDAsIDEwNjAyLCAxMDYwNCwgMTA2MDYsIDEwNjA4LCAKKyAgICAxMDYxMCwgMTA2MTIsIDEwNjE0LCAxMDYxNiwgMTA2MTgsIDEwNjIwLCAxMDYyMiwgMTA2MjQsIDEwNjI2LCAxMDYyOCwgCisgICAgMTA2MzAsIDEwNjMyLCAxMDYzNCwgMTA2MzYsIDEwNjM4LCAxMDY0MCwgMTA2NDIsIDEwNjQ0LCAxMDY0NiwgMTA2NDgsIAorICAgIDEwNjUwLCAxMDY1MiwgMTA2NTQsIDEwNjU2LCAxMDY1OCwgMCwgMTA2NjAsIDEwNjYyLCAxMDY2NCwgMTA2NjYsIDEwNjY4LCAKKyAgICAxMDY3MCwgMTA2NzIsIDEwNjc0LCAxMDY3NiwgMTA2NzgsIDEwNjgwLCAxMDY4MiwgMTA2ODQsIDEwNjg2LCAxMDY4OCwgCisgICAgMTA2OTAsIDEwNjkyLCAxMDY5NCwgMTA2OTYsIDEwNjk4LCAxMDcwMCwgMTA3MDIsIDEwNzA0LCAxMDcwNiwgMTA3MDgsIAorICAgIDEwNzEwLCAxMDcxMiwgMTA3MTQsIDEwNzE2LCAxMDcxOCwgMTA3MjAsIDEwNzIyLCAxMDcyNCwgMTA3MjYsIDEwNzI4LCAKKyAgICAxMDczMCwgMTA3MzIsIDEwNzM0LCAxMDczNiwgMTA3MzgsIDEwNzQwLCAxMDc0MiwgMTA3NDQsIDEwNzQ2LCAxMDc0OCwgCisgICAgMTA3NTAsIDEwNzUyLCAxMDc1NCwgMTA3NTYsIDEwNzU4LCAxMDc2MCwgMTA3NjIsIDEwNzY0LCAxMDc2NiwgMTA3NjgsIAorICAgIDEwNzcwLCAxMDc3MiwgMTA3NzQsIDEwNzc2LCAxMDc3OCwgMTA3ODAsIDEwNzgyLCAxMDc4NCwgMTA3ODYsIDEwNzg4LCAKKyAgICAxMDc5MCwgMTA3OTIsIDEwNzk0LCAxMDc5NiwgMTA3OTgsIDEwODAwLCAwLCAxMDgwMiwgMTA4MDQsIDAsIDAsIDEwODA2LCAKKyAgICAwLCAwLCAxMDgwOCwgMTA4MTAsIDAsIDAsIDEwODEyLCAxMDgxNCwgMTA4MTYsIDEwODE4LCAwLCAxMDgyMCwgMTA4MjIsIAorICAgIDEwODI0LCAxMDgyNiwgMTA4MjgsIDEwODMwLCAxMDgzMiwgMTA4MzQsIDEwODM2LCAxMDgzOCwgMTA4NDAsIDEwODQyLCAwLCAKKyAgICAxMDg0NCwgMCwgMTA4NDYsIDEwODQ4LCAxMDg1MCwgMTA4NTIsIDEwODU0LCAxMDg1NiwgMTA4NTgsIDAsIDEwODYwLCAKKyAgICAxMDg2MiwgMTA4NjQsIDEwODY2LCAxMDg2OCwgMTA4NzAsIDEwODcyLCAxMDg3NCwgMTA4NzYsIDEwODc4LCAxMDg4MCwgCisgICAgMTA4ODIsIDEwODg0LCAxMDg4NiwgMTA4ODgsIDEwODkwLCAxMDg5MiwgMTA4OTQsIDEwODk2LCAxMDg5OCwgMTA5MDAsIAorICAgIDEwOTAyLCAxMDkwNCwgMTA5MDYsIDEwOTA4LCAxMDkxMCwgMTA5MTIsIDEwOTE0LCAxMDkxNiwgMTA5MTgsIDEwOTIwLCAKKyAgICAxMDkyMiwgMTA5MjQsIDEwOTI2LCAxMDkyOCwgMTA5MzAsIDEwOTMyLCAxMDkzNCwgMTA5MzYsIDEwOTM4LCAxMDk0MCwgCisgICAgMTA5NDIsIDEwOTQ0LCAxMDk0NiwgMTA5NDgsIDEwOTUwLCAxMDk1MiwgMTA5NTQsIDEwOTU2LCAxMDk1OCwgMTA5NjAsIAorICAgIDEwOTYyLCAxMDk2NCwgMTA5NjYsIDEwOTY4LCAxMDk3MCwgMTA5NzIsIDEwOTc0LCAxMDk3NiwgMTA5NzgsIDEwOTgwLCAKKyAgICAxMDk4MiwgMTA5ODQsIDEwOTg2LCAxMDk4OCwgMCwgMTA5OTAsIDEwOTkyLCAxMDk5NCwgMTA5OTYsIDAsIDAsIDEwOTk4LCAKKyAgICAxMTAwMCwgMTEwMDIsIDExMDA0LCAxMTAwNiwgMTEwMDgsIDExMDEwLCAxMTAxMiwgMCwgMTEwMTQsIDExMDE2LCAxMTAxOCwgCisgICAgMTEwMjAsIDExMDIyLCAxMTAyNCwgMTEwMjYsIDAsIDExMDI4LCAxMTAzMCwgMTEwMzIsIDExMDM0LCAxMTAzNiwgMTEwMzgsIAorICAgIDExMDQwLCAxMTA0MiwgMTEwNDQsIDExMDQ2LCAxMTA0OCwgMTEwNTAsIDExMDUyLCAxMTA1NCwgMTEwNTYsIDExMDU4LCAKKyAgICAxMTA2MCwgMTEwNjIsIDExMDY0LCAxMTA2NiwgMTEwNjgsIDExMDcwLCAxMTA3MiwgMTEwNzQsIDExMDc2LCAxMTA3OCwgCisgICAgMTEwODAsIDExMDgyLCAwLCAxMTA4NCwgMTEwODYsIDExMDg4LCAxMTA5MCwgMCwgMTEwOTIsIDExMDk0LCAxMTA5NiwgCisgICAgMTEwOTgsIDExMTAwLCAwLCAxMTEwMiwgMCwgMCwgMCwgMTExMDQsIDExMTA2LCAxMTEwOCwgMTExMTAsIDExMTEyLCAKKyAgICAxMTExNCwgMTExMTYsIDAsIDExMTE4LCAxMTEyMCwgMTExMjIsIDExMTI0LCAxMTEyNiwgMTExMjgsIDExMTMwLCAxMTEzMiwgCisgICAgMTExMzQsIDExMTM2LCAxMTEzOCwgMTExNDAsIDExMTQyLCAxMTE0NCwgMTExNDYsIDExMTQ4LCAxMTE1MCwgMTExNTIsIAorICAgIDExMTU0LCAxMTE1NiwgMTExNTgsIDExMTYwLCAxMTE2MiwgMTExNjQsIDExMTY2LCAxMTE2OCwgMTExNzAsIDExMTcyLCAKKyAgICAxMTE3NCwgMTExNzYsIDExMTc4LCAxMTE4MCwgMTExODIsIDExMTg0LCAxMTE4NiwgMTExODgsIDExMTkwLCAxMTE5MiwgCisgICAgMTExOTQsIDExMTk2LCAxMTE5OCwgMTEyMDAsIDExMjAyLCAxMTIwNCwgMTEyMDYsIDExMjA4LCAxMTIxMCwgMTEyMTIsIAorICAgIDExMjE0LCAxMTIxNiwgMTEyMTgsIDExMjIwLCAxMTIyMiwgMTEyMjQsIDExMjI2LCAxMTIyOCwgMTEyMzAsIDExMjMyLCAKKyAgICAxMTIzNCwgMTEyMzYsIDExMjM4LCAxMTI0MCwgMTEyNDIsIDExMjQ0LCAxMTI0NiwgMTEyNDgsIDExMjUwLCAxMTI1MiwgCisgICAgMTEyNTQsIDExMjU2LCAxMTI1OCwgMTEyNjAsIDExMjYyLCAxMTI2NCwgMTEyNjYsIDExMjY4LCAxMTI3MCwgMTEyNzIsIAorICAgIDExMjc0LCAxMTI3NiwgMTEyNzgsIDExMjgwLCAxMTI4MiwgMTEyODQsIDExMjg2LCAxMTI4OCwgMTEyOTAsIDExMjkyLCAKKyAgICAxMTI5NCwgMTEyOTYsIDExMjk4LCAxMTMwMCwgMTEzMDIsIDExMzA0LCAxMTMwNiwgMTEzMDgsIDExMzEwLCAxMTMxMiwgCisgICAgMTEzMTQsIDExMzE2LCAxMTMxOCwgMTEzMjAsIDExMzIyLCAxMTMyNCwgMTEzMjYsIDExMzI4LCAxMTMzMCwgMTEzMzIsIAorICAgIDExMzM0LCAxMTMzNiwgMTEzMzgsIDExMzQwLCAxMTM0MiwgMTEzNDQsIDExMzQ2LCAxMTM0OCwgMTEzNTAsIDExMzUyLCAKKyAgICAxMTM1NCwgMTEzNTYsIDExMzU4LCAxMTM2MCwgMTEzNjIsIDExMzY0LCAxMTM2NiwgMTEzNjgsIDExMzcwLCAxMTM3MiwgCisgICAgMTEzNzQsIDExMzc2LCAxMTM3OCwgMTEzODAsIDExMzgyLCAxMTM4NCwgMTEzODYsIDExMzg4LCAxMTM5MCwgMTEzOTIsIAorICAgIDExMzk0LCAxMTM5NiwgMTEzOTgsIDExNDAwLCAxMTQwMiwgMTE0MDQsIDExNDA2LCAxMTQwOCwgMTE0MTAsIDExNDEyLCAKKyAgICAxMTQxNCwgMTE0MTYsIDExNDE4LCAxMTQyMCwgMTE0MjIsIDExNDI0LCAxMTQyNiwgMTE0MjgsIDExNDMwLCAxMTQzMiwgCisgICAgMTE0MzQsIDExNDM2LCAxMTQzOCwgMTE0NDAsIDExNDQyLCAxMTQ0NCwgMTE0NDYsIDExNDQ4LCAxMTQ1MCwgMTE0NTIsIAorICAgIDExNDU0LCAxMTQ1NiwgMTE0NTgsIDExNDYwLCAxMTQ2MiwgMTE0NjQsIDExNDY2LCAxMTQ2OCwgMTE0NzAsIDExNDcyLCAKKyAgICAxMTQ3NCwgMTE0NzYsIDExNDc4LCAxMTQ4MCwgMTE0ODIsIDExNDg0LCAxMTQ4NiwgMTE0ODgsIDExNDkwLCAxMTQ5MiwgCisgICAgMTE0OTQsIDExNDk2LCAxMTQ5OCwgMTE1MDAsIDExNTAyLCAxMTUwNCwgMTE1MDYsIDExNTA4LCAxMTUxMCwgMTE1MTIsIAorICAgIDExNTE0LCAxMTUxNiwgMTE1MTgsIDExNTIwLCAxMTUyMiwgMTE1MjQsIDExNTI2LCAxMTUyOCwgMTE1MzAsIDExNTMyLCAKKyAgICAxMTUzNCwgMTE1MzYsIDExNTM4LCAxMTU0MCwgMTE1NDIsIDExNTQ0LCAxMTU0NiwgMTE1NDgsIDExNTUwLCAxMTU1MiwgCisgICAgMTE1NTQsIDExNTU2LCAxMTU1OCwgMTE1NjAsIDExNTYyLCAxMTU2NCwgMTE1NjYsIDExNTY4LCAxMTU3MCwgMTE1NzIsIAorICAgIDExNTc0LCAxMTU3NiwgMTE1NzgsIDExNTgwLCAxMTU4MiwgMTE1ODQsIDExNTg2LCAxMTU4OCwgMTE1OTAsIDExNTkyLCAKKyAgICAxMTU5NCwgMTE1OTYsIDExNTk4LCAxMTYwMCwgMTE2MDIsIDExNjA0LCAxMTYwNiwgMTE2MDgsIDExNjEwLCAxMTYxMiwgCisgICAgMTE2MTQsIDExNjE2LCAxMTYxOCwgMTE2MjAsIDExNjIyLCAxMTYyNCwgMTE2MjYsIDExNjI4LCAxMTYzMCwgMTE2MzIsIAorICAgIDExNjM0LCAxMTYzNiwgMTE2MzgsIDExNjQwLCAxMTY0MiwgMTE2NDQsIDExNjQ2LCAxMTY0OCwgMTE2NTAsIDExNjUyLCAKKyAgICAxMTY1NCwgMTE2NTYsIDExNjU4LCAxMTY2MCwgMTE2NjIsIDExNjY0LCAxMTY2NiwgMTE2NjgsIDExNjcwLCAxMTY3MiwgCisgICAgMTE2NzQsIDExNjc2LCAxMTY3OCwgMTE2ODAsIDExNjgyLCAxMTY4NCwgMTE2ODYsIDExNjg4LCAxMTY5MCwgMTE2OTIsIAorICAgIDExNjk0LCAxMTY5NiwgMTE2OTgsIDExNzAwLCAxMTcwMiwgMTE3MDQsIDExNzA2LCAxMTcwOCwgMTE3MTAsIDExNzEyLCAKKyAgICAxMTcxNCwgMTE3MTYsIDExNzE4LCAxMTcyMCwgMTE3MjIsIDExNzI0LCAxMTcyNiwgMTE3MjgsIDExNzMwLCAxMTczMiwgCisgICAgMTE3MzQsIDExNzM2LCAxMTczOCwgMTE3NDAsIDExNzQyLCAxMTc0NCwgMTE3NDYsIDExNzQ4LCAxMTc1MCwgMTE3NTIsIAorICAgIDExNzU0LCAxMTc1NiwgMTE3NTgsIDExNzYwLCAxMTc2MiwgMTE3NjQsIDExNzY2LCAxMTc2OCwgMTE3NzAsIDExNzcyLCAKKyAgICAxMTc3NCwgMTE3NzYsIDExNzc4LCAxMTc4MCwgMTE3ODIsIDExNzg0LCAxMTc4NiwgMTE3ODgsIDExNzkwLCAxMTc5MiwgCisgICAgMTE3OTQsIDExNzk2LCAwLCAwLCAxMTc5OCwgMTE4MDAsIDExODAyLCAxMTgwNCwgMTE4MDYsIDExODA4LCAxMTgxMCwgCisgICAgMTE4MTIsIDExODE0LCAxMTgxNiwgMTE4MTgsIDExODIwLCAxMTgyMiwgMTE4MjQsIDExODI2LCAxMTgyOCwgMTE4MzAsIAorICAgIDExODMyLCAxMTgzNCwgMTE4MzYsIDExODM4LCAxMTg0MCwgMTE4NDIsIDExODQ0LCAxMTg0NiwgMTE4NDgsIDExODUwLCAKKyAgICAxMTg1MiwgMTE4NTQsIDExODU2LCAxMTg1OCwgMTE4NjAsIDExODYyLCAxMTg2NCwgMTE4NjYsIDExODY4LCAxMTg3MCwgCisgICAgMTE4NzIsIDExODc0LCAxMTg3NiwgMTE4NzgsIDExODgwLCAxMTg4MiwgMTE4ODQsIDExODg2LCAxMTg4OCwgMTE4OTAsIAorICAgIDExODkyLCAxMTg5NCwgMTE4OTYsIDExODk4LCAxMTkwMCwgMTE5MDIsIDExOTA0LCAxMTkwNiwgMTE5MDgsIDExOTEwLCAKKyAgICAxMTkxMiwgMTE5MTQsIDExOTE2LCAxMTkxOCwgMTE5MjAsIDExOTIyLCAxMTkyNCwgMTE5MjYsIDExOTI4LCAxMTkzMCwgCisgICAgMTE5MzIsIDExOTM0LCAxMTkzNiwgMTE5MzgsIDExOTQwLCAxMTk0MiwgMTE5NDQsIDExOTQ2LCAxMTk0OCwgMTE5NTAsIAorICAgIDExOTUyLCAxMTk1NCwgMTE5NTYsIDExOTU4LCAxMTk2MCwgMTE5NjIsIDExOTY0LCAxMTk2NiwgMTE5NjgsIDExOTcwLCAKKyAgICAxMTk3MiwgMTE5NzQsIDExOTc2LCAxMTk3OCwgMTE5ODAsIDExOTgyLCAxMTk4NCwgMTE5ODYsIDExOTg4LCAxMTk5MCwgCisgICAgMTE5OTIsIDExOTk0LCAxMTk5NiwgMTE5OTgsIDEyMDAwLCAxMjAwMiwgMTIwMDQsIDEyMDA2LCAxMjAwOCwgMTIwMTAsIAorICAgIDEyMDEyLCAxMjAxNCwgMTIwMTYsIDEyMDE4LCAxMjAyMCwgMTIwMjIsIDEyMDI0LCAxMjAyNiwgMTIwMjgsIDEyMDMwLCAKKyAgICAxMjAzMiwgMTIwMzQsIDEyMDM2LCAxMjAzOCwgMTIwNDAsIDEyMDQyLCAxMjA0NCwgMTIwNDYsIDEyMDQ4LCAxMjA1MCwgCisgICAgMTIwNTIsIDEyMDU0LCAxMjA1NiwgMTIwNTgsIDEyMDYwLCAxMjA2MiwgMTIwNjQsIDEyMDY2LCAxMjA2OCwgMTIwNzAsIAorICAgIDEyMDcyLCAxMjA3NCwgMTIwNzYsIDEyMDc4LCAxMjA4MCwgMTIwODIsIDEyMDg0LCAxMjA4NiwgMTIwODgsIDEyMDkwLCAKKyAgICAxMjA5MiwgMTIwOTQsIDEyMDk2LCAxMjA5OCwgMTIxMDAsIDEyMTAyLCAxMjEwNCwgMTIxMDYsIDEyMTA4LCAxMjExMCwgCisgICAgMTIxMTIsIDEyMTE0LCAxMjExNiwgMTIxMTgsIDEyMTIwLCAxMjEyMiwgMTIxMjQsIDEyMTI2LCAxMjEyOCwgMTIxMzAsIAorICAgIDEyMTMyLCAxMjEzNCwgMTIxMzYsIDEyMTM4LCAxMjE0MCwgMTIxNDIsIDEyMTQ0LCAxMjE0NiwgMTIxNDgsIDEyMTUwLCAKKyAgICAxMjE1MiwgMTIxNTQsIDEyMTU2LCAxMjE1OCwgMTIxNjAsIDEyMTYyLCAxMjE2NCwgMTIxNjYsIDEyMTY4LCAxMjE3MCwgCisgICAgMTIxNzIsIDEyMTc0LCAxMjE3NiwgMTIxNzgsIDEyMTgwLCAxMjE4MiwgMTIxODQsIDEyMTg2LCAxMjE4OCwgMTIxOTAsIAorICAgIDEyMTkyLCAxMjE5NCwgMTIxOTYsIDEyMTk4LCAxMjIwMCwgMTIyMDIsIDEyMjA0LCAxMjIwNiwgMTIyMDgsIDEyMjEwLCAKKyAgICAxMjIxMiwgMTIyMTQsIDEyMjE2LCAxMjIxOCwgMTIyMjAsIDEyMjIyLCAxMjIyNCwgMTIyMjYsIDEyMjI4LCAxMjIzMCwgCisgICAgMTIyMzIsIDEyMjM0LCAxMjIzNiwgMTIyMzgsIDEyMjQwLCAxMjI0MiwgMTIyNDQsIDEyMjQ2LCAxMjI0OCwgMTIyNTAsIAorICAgIDEyMjUyLCAxMjI1NCwgMTIyNTYsIDEyMjU4LCAxMjI2MCwgMTIyNjIsIDEyMjY0LCAxMjI2NiwgMTIyNjgsIDEyMjcwLCAKKyAgICAxMjI3MiwgMTIyNzQsIDEyMjc2LCAxMjI3OCwgMTIyODAsIDEyMjgyLCAxMjI4NCwgMTIyODYsIDEyMjg4LCAxMjI5MCwgCisgICAgMTIyOTIsIDEyMjk0LCAxMjI5NiwgMTIyOTgsIDEyMzAwLCAxMjMwMiwgMTIzMDQsIDEyMzA2LCAxMjMwOCwgMTIzMTAsIAorICAgIDEyMzEyLCAxMjMxNCwgMTIzMTYsIDEyMzE4LCAxMjMyMCwgMTIzMjIsIDEyMzI0LCAxMjMyNiwgMTIzMjgsIDEyMzMwLCAKKyAgICAxMjMzMiwgMTIzMzQsIDEyMzM2LCAxMjMzOCwgMTIzNDAsIDEyMzQyLCAxMjM0NCwgMTIzNDYsIDEyMzQ4LCAxMjM1MCwgCisgICAgMTIzNTIsIDEyMzU0LCAxMjM1NiwgMTIzNTgsIDEyMzYwLCAxMjM2MiwgMTIzNjQsIDEyMzY2LCAxMjM2OCwgMTIzNzAsIAorICAgIDEyMzcyLCAxMjM3NCwgMTIzNzYsIDEyMzc4LCAxMjM4MCwgMCwgMCwgMTIzODIsIDEyMzg0LCAxMjM4NiwgMTIzODgsIAorICAgIDEyMzkwLCAxMjM5MiwgMTIzOTQsIDEyMzk2LCAxMjM5OCwgMTI0MDAsIDEyNDAyLCAxMjQwNCwgMTI0MDYsIDEyNDA4LCAKKyAgICAxMjQxMCwgMTI0MTIsIDEyNDE0LCAxMjQxNiwgMTI0MTgsIDEyNDIwLCAxMjQyMiwgMTI0MjQsIDEyNDI2LCAxMjQyOCwgCisgICAgMTI0MzAsIDEyNDMyLCAxMjQzNCwgMTI0MzYsIDEyNDM4LCAxMjQ0MCwgMTI0NDIsIDEyNDQ0LCAxMjQ0NiwgMTI0NDgsIAorICAgIDEyNDUwLCAxMjQ1MiwgMTI0NTQsIDEyNDU2LCAxMjQ1OCwgMTI0NjAsIDEyNDYyLCAxMjQ2NCwgMTI0NjYsIDEyNDY4LCAKKyAgICAxMjQ3MCwgMTI0NzIsIDEyNDc0LCAxMjQ3NiwgMTI0NzgsIDEyNDgwLCAxMjQ4MiwgMTI0ODQsIDEyNDg2LCAxMjQ4OCwgMCwgCisgICAgMTI0OTAsIDEyNDkyLCAxMjQ5NCwgMTI0OTYsIDEyNDk4LCAxMjUwMCwgMTI1MDIsIDEyNTA0LCAxMjUwNiwgMTI1MDgsIAorICAgIDEyNTEwLCAxMjUxMiwgMTI1MTQsIDEyNTE2LCAxMjUxOCwgMTI1MjAsIDEyNTIyLCAxMjUyNCwgMTI1MjYsIDEyNTI4LCAKKyAgICAxMjUzMCwgMTI1MzIsIDEyNTM0LCAxMjUzNiwgMTI1MzgsIDEyNTQwLCAxMjU0MiwgMCwgMTI1NDQsIDEyNTQ2LCAwLCAKKyAgICAxMjU0OCwgMCwgMCwgMTI1NTAsIDAsIDEyNTUyLCAxMjU1NCwgMTI1NTYsIDEyNTU4LCAxMjU2MCwgMTI1NjIsIDEyNTY0LCAKKyAgICAxMjU2NiwgMTI1NjgsIDEyNTcwLCAwLCAxMjU3MiwgMTI1NzQsIDEyNTc2LCAxMjU3OCwgMCwgMTI1ODAsIDAsIDEyNTgyLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjU4NCwgMCwgMCwgMCwgMCwgMTI1ODYsIDAsIDEyNTg4LCAwLCAxMjU5MCwgMCwgMTI1OTIsIAorICAgIDEyNTk0LCAxMjU5NiwgMCwgMTI1OTgsIDEyNjAwLCAwLCAxMjYwMiwgMCwgMCwgMTI2MDQsIDAsIDEyNjA2LCAwLCAxMjYwOCwgCisgICAgMCwgMTI2MTAsIDAsIDEyNjEyLCAwLCAxMjYxNCwgMTI2MTYsIDAsIDEyNjE4LCAwLCAwLCAxMjYyMCwgMTI2MjIsIDEyNjI0LCAKKyAgICAxMjYyNiwgMCwgMTI2MjgsIDEyNjMwLCAxMjYzMiwgMTI2MzQsIDEyNjM2LCAxMjYzOCwgMTI2NDAsIDAsIDEyNjQyLCAKKyAgICAxMjY0NCwgMTI2NDYsIDEyNjQ4LCAwLCAxMjY1MCwgMTI2NTIsIDEyNjU0LCAxMjY1NiwgMCwgMTI2NTgsIDAsIDEyNjYwLCAKKyAgICAxMjY2MiwgMTI2NjQsIDEyNjY2LCAxMjY2OCwgMTI2NzAsIDEyNjcyLCAxMjY3NCwgMTI2NzYsIDEyNjc4LCAwLCAxMjY4MCwgCisgICAgMTI2ODIsIDEyNjg0LCAxMjY4NiwgMTI2ODgsIDEyNjkwLCAxMjY5MiwgMTI2OTQsIDEyNjk2LCAxMjY5OCwgMTI3MDAsIAorICAgIDEyNzAyLCAxMjcwNCwgMTI3MDYsIDEyNzA4LCAxMjcxMCwgMTI3MTIsIDAsIDAsIDAsIDAsIDAsIDEyNzE0LCAxMjcxNiwgCisgICAgMTI3MTgsIDAsIDEyNzIwLCAxMjcyMiwgMTI3MjQsIDEyNzI2LCAxMjcyOCwgMCwgMTI3MzAsIDEyNzMyLCAxMjczNCwgCisgICAgMTI3MzYsIDEyNzM4LCAxMjc0MCwgMTI3NDIsIDEyNzQ0LCAxMjc0NiwgMTI3NDgsIDEyNzUwLCAxMjc1MiwgMTI3NTQsIAorICAgIDEyNzU2LCAxMjc1OCwgMTI3NjAsIDEyNzYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjc2NCwgMTI3NjcsIDEyNzcwLCAxMjc3MywgMTI3NzYsIDEyNzc5LCAxMjc4MiwgMTI3ODUsIAorICAgIDEyNzg4LCAxMjc5MSwgMTI3OTQsIDAsIDAsIDAsIDAsIDAsIDEyNzk3LCAxMjgwMSwgMTI4MDUsIDEyODA5LCAxMjgxMywgCisgICAgMTI4MTcsIDEyODIxLCAxMjgyNSwgMTI4MjksIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIAorICAgIDEyODU3LCAxMjg2MSwgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAKKyAgICAxMjg5NywgMTI5MDEsIDEyOTA1LCAxMjkwNywgMTI5MDksIDEyOTEyLCAwLCAxMjkxNSwgMTI5MTcsIDEyOTE5LCAxMjkyMSwgCisgICAgMTI5MjMsIDEyOTI1LCAxMjkyNywgMTI5MjksIDEyOTMxLCAxMjkzMywgMTI5MzUsIDEyOTM3LCAxMjkzOSwgMTI5NDEsIAorICAgIDEyOTQzLCAxMjk0NSwgMTI5NDcsIDEyOTQ5LCAxMjk1MSwgMTI5NTMsIDEyOTU1LCAxMjk1NywgMTI5NTksIDEyOTYxLCAKKyAgICAxMjk2MywgMTI5NjUsIDEyOTY3LCAxMjk3MCwgMTI5NzMsIDEyOTc2LCAxMjk3OSwgMTI5ODMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTg2LCAxMjk4OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyOTk1LCAxMjk5OCwgMTMwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzMDAzLCAxMzAwNSwgMTMwMDcsIDEzMDA5LCAxMzAxMSwgMTMwMTMsIDEzMDE1LCAxMzAxNywgMTMwMTksIDEzMDIxLCAKKyAgICAxMzAyMywgMTMwMjUsIDEzMDI3LCAxMzAyOSwgMTMwMzEsIDEzMDMzLCAxMzAzNSwgMTMwMzcsIDEzMDM5LCAxMzA0MSwgCisgICAgMTMwNDMsIDEzMDQ1LCAxMzA0NywgMTMwNDksIDEzMDUxLCAxMzA1MywgMTMwNTUsIDEzMDU3LCAxMzA1OSwgMTMwNjEsIAorICAgIDEzMDYzLCAxMzA2NSwgMTMwNjcsIDEzMDY5LCAxMzA3MSwgMTMwNzMsIDEzMDc1LCAxMzA3NywgMTMwNzksIDEzMDgxLCAKKyAgICAxMzA4MywgMTMwODUsIDEzMDg3LCAwLCAwLCAwLCAwLCAwLCAxMzA4OSwgMTMwOTMsIDEzMDk3LCAxMzEwMSwgMTMxMDUsIAorICAgIDEzMTA5LCAxMzExMywgMTMxMTcsIDEzMTIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEyNSwgMTMxMjcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEzMTI5LCAxMzEzMSwgMTMxMzMsIDEzMTM1LCAxMzEzNywgMTMxMzksIDEzMTQxLCAxMzE0MywgMTMxNDUsIAorICAgIDEzMTQ3LCAxMzE0OSwgMTMxNTEsIDEzMTUzLCAxMzE1NSwgMTMxNTcsIDEzMTU5LCAxMzE2MSwgMTMxNjMsIDEzMTY1LCAKKyAgICAxMzE2NywgMTMxNjksIDEzMTcxLCAxMzE3MywgMTMxNzUsIDEzMTc3LCAxMzE3OSwgMTMxODEsIDEzMTgzLCAxMzE4NSwgCisgICAgMTMxODcsIDEzMTg5LCAxMzE5MSwgMTMxOTMsIDEzMTk1LCAxMzE5NywgMTMxOTksIDEzMjAxLCAxMzIwMywgMTMyMDUsIAorICAgIDEzMjA3LCAxMzIwOSwgMTMyMTEsIDEzMjEzLCAxMzIxNSwgMTMyMTcsIDEzMjE5LCAxMzIyMSwgMTMyMjMsIDEzMjI1LCAKKyAgICAxMzIyNywgMTMyMjksIDEzMjMxLCAxMzIzMywgMTMyMzUsIDEzMjM3LCAxMzIzOSwgMTMyNDEsIDEzMjQzLCAxMzI0NSwgCisgICAgMTMyNDcsIDEzMjQ5LCAxMzI1MSwgMTMyNTMsIDEzMjU1LCAxMzI1NywgMTMyNTksIDEzMjYxLCAxMzI2MywgMTMyNjUsIAorICAgIDEzMjY3LCAxMzI2OSwgMTMyNzEsIDEzMjczLCAxMzI3NSwgMTMyNzcsIDEzMjc5LCAxMzI4MSwgMTMyODMsIDEzMjg1LCAKKyAgICAxMzI4NywgMTMyODksIDEzMjkxLCAxMzI5MywgMTMyOTUsIDEzMjk3LCAxMzI5OSwgMTMzMDEsIDEzMzAzLCAxMzMwNSwgCisgICAgMTMzMDcsIDEzMzA5LCAxMzMxMSwgMTMzMTMsIDEzMzE1LCAxMzMxNywgMTMzMTksIDEzMzIxLCAxMzMyMywgMTMzMjUsIAorICAgIDEzMzI3LCAxMzMyOSwgMTMzMzEsIDEzMzMzLCAxMzMzNSwgMTMzMzcsIDEzMzM5LCAxMzM0MSwgMTMzNDMsIDEzMzQ1LCAKKyAgICAxMzM0NywgMTMzNDksIDEzMzUxLCAxMzM1MywgMTMzNTUsIDEzMzU3LCAxMzM1OSwgMTMzNjEsIDEzMzYzLCAxMzM2NSwgCisgICAgMTMzNjcsIDEzMzY5LCAxMzM3MSwgMTMzNzMsIDEzMzc1LCAxMzM3NywgMTMzNzksIDEzMzgxLCAxMzM4MywgMTMzODUsIAorICAgIDEzMzg3LCAxMzM4OSwgMTMzOTEsIDEzMzkzLCAxMzM5NSwgMTMzOTcsIDEzMzk5LCAxMzQwMSwgMTM0MDMsIDEzNDA1LCAKKyAgICAxMzQwNywgMTM0MDksIDEzNDExLCAxMzQxMywgMTM0MTUsIDEzNDE3LCAxMzQxOSwgMTM0MjEsIDEzNDIzLCAxMzQyNSwgCisgICAgMTM0MjcsIDEzNDI5LCAxMzQzMSwgMTM0MzMsIDEzNDM1LCAxMzQzNywgMTM0MzksIDEzNDQxLCAxMzQ0MywgMTM0NDUsIAorICAgIDEzNDQ3LCAxMzQ0OSwgMTM0NTEsIDEzNDUzLCAxMzQ1NSwgMTM0NTcsIDEzNDU5LCAxMzQ2MSwgMTM0NjMsIDEzNDY1LCAKKyAgICAxMzQ2NywgMTM0NjksIDEzNDcxLCAxMzQ3MywgMTM0NzUsIDEzNDc3LCAxMzQ3OSwgMTM0ODEsIDEzNDgzLCAxMzQ4NSwgCisgICAgMTM0ODcsIDEzNDg5LCAxMzQ5MSwgMTM0OTMsIDEzNDk1LCAxMzQ5NywgMTM0OTksIDEzNTAxLCAxMzUwMywgMTM1MDUsIAorICAgIDEzNTA3LCAxMzUwOSwgMTM1MTEsIDEzNTEzLCAxMzUxNSwgMTM1MTcsIDEzNTE5LCAxMzUyMSwgMTM1MjMsIDEzNTI1LCAKKyAgICAxMzUyNywgMTM1MjksIDEzNTMxLCAxMzUzMywgMTM1MzUsIDEzNTM3LCAxMzUzOSwgMTM1NDEsIDEzNTQzLCAxMzU0NSwgCisgICAgMTM1NDcsIDEzNTQ5LCAxMzU1MSwgMTM1NTMsIDEzNTU1LCAxMzU1NywgMTM1NTksIDEzNTYxLCAxMzU2MywgMTM1NjUsIAorICAgIDEzNTY3LCAxMzU2OSwgMTM1NzEsIDEzNTczLCAxMzU3NSwgMTM1NzcsIDEzNTc5LCAxMzU4MSwgMTM1ODMsIDEzNTg1LCAKKyAgICAxMzU4NywgMTM1ODksIDEzNTkxLCAxMzU5MywgMTM1OTUsIDEzNTk3LCAxMzU5OSwgMTM2MDEsIDEzNjAzLCAxMzYwNSwgCisgICAgMTM2MDcsIDEzNjA5LCAxMzYxMSwgMTM2MTMsIDEzNjE1LCAxMzYxNywgMTM2MTksIDEzNjIxLCAxMzYyMywgMTM2MjUsIAorICAgIDEzNjI3LCAxMzYyOSwgMTM2MzEsIDEzNjMzLCAxMzYzNSwgMTM2MzcsIDEzNjM5LCAxMzY0MSwgMTM2NDMsIDEzNjQ1LCAKKyAgICAxMzY0NywgMTM2NDksIDEzNjUxLCAxMzY1MywgMTM2NTUsIDEzNjU3LCAxMzY1OSwgMTM2NjEsIDEzNjYzLCAxMzY2NSwgCisgICAgMTM2NjcsIDEzNjY5LCAxMzY3MSwgMTM2NzMsIDEzNjc1LCAxMzY3NywgMTM2NzksIDEzNjgxLCAxMzY4MywgMTM2ODUsIAorICAgIDEzNjg3LCAxMzY4OSwgMTM2OTEsIDEzNjkzLCAxMzY5NSwgMTM2OTcsIDEzNjk5LCAxMzcwMSwgMTM3MDMsIDEzNzA1LCAKKyAgICAxMzcwNywgMTM3MDksIDEzNzExLCAxMzcxMywgMTM3MTUsIDEzNzE3LCAxMzcxOSwgMTM3MjEsIDEzNzIzLCAxMzcyNSwgCisgICAgMTM3MjcsIDEzNzI5LCAxMzczMSwgMTM3MzMsIDEzNzM1LCAxMzczNywgMTM3MzksIDEzNzQxLCAxMzc0MywgMTM3NDUsIAorICAgIDEzNzQ3LCAxMzc0OSwgMTM3NTEsIDEzNzUzLCAxMzc1NSwgMTM3NTcsIDEzNzU5LCAxMzc2MSwgMTM3NjMsIDEzNzY1LCAKKyAgICAxMzc2NywgMTM3NjksIDEzNzcxLCAxMzc3MywgMTM3NzUsIDEzNzc3LCAxMzc3OSwgMTM3ODEsIDEzNzgzLCAxMzc4NSwgCisgICAgMTM3ODcsIDEzNzg5LCAxMzc5MSwgMTM3OTMsIDEzNzk1LCAxMzc5NywgMTM3OTksIDEzODAxLCAxMzgwMywgMTM4MDUsIAorICAgIDEzODA3LCAxMzgwOSwgMTM4MTEsIDEzODEzLCAxMzgxNSwgMTM4MTcsIDEzODE5LCAxMzgyMSwgMTM4MjMsIDEzODI1LCAKKyAgICAxMzgyNywgMTM4MjksIDEzODMxLCAxMzgzMywgMTM4MzUsIDEzODM3LCAxMzgzOSwgMTM4NDEsIDEzODQzLCAxMzg0NSwgCisgICAgMTM4NDcsIDEzODQ5LCAxMzg1MSwgMTM4NTMsIDEzODU1LCAxMzg1NywgMTM4NTksIDEzODYxLCAxMzg2MywgMTM4NjUsIAorICAgIDEzODY3LCAxMzg2OSwgMTM4NzEsIDEzODczLCAxMzg3NSwgMTM4NzcsIDEzODc5LCAxMzg4MSwgMTM4ODMsIDEzODg1LCAKKyAgICAxMzg4NywgMTM4ODksIDEzODkxLCAxMzg5MywgMTM4OTUsIDEzODk3LCAxMzg5OSwgMTM5MDEsIDEzOTAzLCAxMzkwNSwgCisgICAgMTM5MDcsIDEzOTA5LCAxMzkxMSwgMTM5MTMsIDEzOTE1LCAxMzkxNywgMTM5MTksIDEzOTIxLCAxMzkyMywgMTM5MjUsIAorICAgIDEzOTI3LCAxMzkyOSwgMTM5MzEsIDEzOTMzLCAxMzkzNSwgMTM5MzcsIDEzOTM5LCAxMzk0MSwgMTM5NDMsIDEzOTQ1LCAKKyAgICAxMzk0NywgMTM5NDksIDEzOTUxLCAxMzk1MywgMTM5NTUsIDEzOTU3LCAxMzk1OSwgMTM5NjEsIDEzOTYzLCAxMzk2NSwgCisgICAgMTM5NjcsIDEzOTY5LCAxMzk3MSwgMTM5NzMsIDEzOTc1LCAxMzk3NywgMTM5NzksIDEzOTgxLCAxMzk4MywgMTM5ODUsIAorICAgIDEzOTg3LCAxMzk4OSwgMTM5OTEsIDEzOTkzLCAxMzk5NSwgMTM5OTcsIDEzOTk5LCAxNDAwMSwgMTQwMDMsIDE0MDA1LCAKKyAgICAxNDAwNywgMTQwMDksIDE0MDExLCAxNDAxMywgMTQwMTUsIDE0MDE3LCAxNDAxOSwgMTQwMjEsIDE0MDIzLCAxNDAyNSwgCisgICAgMTQwMjcsIDE0MDI5LCAxNDAzMSwgMTQwMzMsIDE0MDM1LCAxNDAzNywgMTQwMzksIDE0MDQxLCAxNDA0MywgMTQwNDUsIAorICAgIDE0MDQ3LCAxNDA0OSwgMTQwNTEsIDE0MDUzLCAxNDA1NSwgMTQwNTcsIDE0MDU5LCAxNDA2MSwgMTQwNjMsIDE0MDY1LCAKKyAgICAxNDA2NywgMTQwNjksIDE0MDcxLCAxNDA3MywgMTQwNzUsIDE0MDc3LCAxNDA3OSwgMTQwODEsIDE0MDgzLCAxNDA4NSwgCisgICAgMTQwODcsIDE0MDg5LCAxNDA5MSwgMTQwOTMsIDE0MDk1LCAxNDA5NywgMTQwOTksIDE0MTAxLCAxNDEwMywgMTQxMDUsIAorICAgIDE0MTA3LCAxNDEwOSwgMTQxMTEsIDE0MTEzLCAxNDExNSwgMTQxMTcsIDE0MTE5LCAxNDEyMSwgMTQxMjMsIDE0MTI1LCAKKyAgICAxNDEyNywgMTQxMjksIDE0MTMxLCAxNDEzMywgMTQxMzUsIDE0MTM3LCAxNDEzOSwgMTQxNDEsIDE0MTQzLCAxNDE0NSwgCisgICAgMTQxNDcsIDE0MTQ5LCAxNDE1MSwgMTQxNTMsIDE0MTU1LCAxNDE1NywgMTQxNTksIDE0MTYxLCAxNDE2MywgMTQxNjUsIAorICAgIDE0MTY3LCAxNDE2OSwgMTQxNzEsIDE0MTczLCAxNDE3NSwgMTQxNzcsIDE0MTc5LCAxNDE4MSwgMTQxODMsIDE0MTg1LCAKKyAgICAxNDE4NywgMTQxODksIDE0MTkxLCAxNDE5MywgMTQxOTUsIDE0MTk3LCAxNDE5OSwgMTQyMDEsIDE0MjAzLCAxNDIwNSwgCisgICAgMTQyMDcsIDE0MjA5LCAxNDIxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KICNkZWZpbmUgQ09NUF9TSElGVCAyCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgY29tcF9pbmRleFtdID0gewogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMsIDAsIDAsIDAsIDAsIDAsIDAsIDQsIDUsIDYsIDcsIDgsIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAwLCAwLCAxMSwgMCwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAxNCwgCi0gICAgMTUsIDAsIDAsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMiwgMzMsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNSwgMzYsIDM3LCAzOCwgMzksIDQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAKLSAgICA1MCwgMCwgNTEsIDUyLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDU1LCA1NiwgNTcsIDU4LCA1OSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjAsIDYxLCAwLCAwLCA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMsIDY0LCA2NSwgMCwgCi0gICAgNjYsIDY3LCA2OCwgMCwgMCwgMCwgMCwgMCwgMCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgNzUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc2LCAwLCA3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgsIDc5LCAwLCA4MCwgODEsIDgyLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODQsIDg1LCA4NiwgMCwgODcsIDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4OSwgOTAsIDAsIDkxLCA5MiwgOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxLCAwLCAwLCAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMywgCi0gICAgMTA0LCAwLCAwLCAxMDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA3LCAxMDgsIDEwOSwgMCwgMTEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTEsIDExMiwgCi0gICAgMCwgMTEzLCAxMTQsIDAsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyLCAwLCAwLCAxMjMsIDAsIDEyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1LCAKLSAgICAxMjYsIDEyNywgMTI4LCAwLCAxMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMCwgMCwgMTMxLCAxMzIsIDEzMywgCi0gICAgMTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAwLCAKLSAgICAxNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjIsIAotICAgIDAsIDE2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0LCAwLCAwLCAxNjUsIDE2NiwgMTY3LCAwLCAxNjgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2OSwgMCwgMCwgMTcwLCAxNzEsIDE3MiwgMTczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNzQsIDE3NSwgMCwgMCwgMTc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzcsIDE3OCwgMTc5LCAxODAsIDAsIDE4MSwgCi0gICAgMTgyLCAxODMsIDAsIDAsIDAsIDAsIDAsIDAsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAwLCAxODksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5MCwgMTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOTIsIDE5MywgMTk0LCAKLSAgICAxOTUsIDE5NiwgMTk3LCAxOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OSwgMjAwLCAyMDEsIDAsIDIwMiwgMjAzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNywgMCwgMCwgMCwgCi0gICAgMjE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTksIDIyMCwgMjIxLCAyMjIsIDAsIDIyMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjUsIDIyNiwgMjI3LCAwLCAKLSAgICAyMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyOSwgMjMwLCAyMzEsIDAsIDIzMiwgMCwgMjMzLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyMzQsIDIzNSwgMCwgMCwgMCwgMCwgMCwgMjM2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMzcsIDIzOCwgMjM5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ1LCAyNDYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjQ4LCAyNDksIDI1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUxLCAyNTIsIDI1MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTUsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1NiwgMjU3LCAwLCAyNTgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI1OSwgMjYwLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjY2LCAyNjcsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzAsIDI3MSwgMjcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzMsIDI3NCwgMjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc4LCAyNzksIAotICAgIDAsIDI4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgxLCAyODIsIDI4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjg0LCAyODUsIDI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODgsIDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjkzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMSwgMzAyLCAzMDMsIDAsIDAsIDMwNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMzA1LCAzMDYsIDMwNywgMCwgMzA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDksIAotICAgIDMxMCwgMzExLCAwLCAzMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgMzE0LCAwLCAzMTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDMxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzI2LCAzMjcsIDAsIDMyOCwgMzI5LCAwLCAwLCAzMzAsIDAsIDAsIDAsIDAsIDAsIDAsIDMzMSwgMCwgCi0gICAgMCwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzMsIDMzNCwgMCwgMCwgMzM1LCAwLCAwLCAwLCAzMzYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDMzNywgMzM4LCAzMzksIDAsIDM0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQxLCAwLCAwLCAKLSAgICAzNDIsIDM0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAzNDUsIDM0NiwgMzQ3LCAwLCAzNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OSwgMCwgMCwgMCwgCi0gICAgMzUwLCAwLCAwLCAzNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUzLCAwLCAwLCAwLCAwLCAwLCAzNTQsIDM1NSwgMzU2LCAwLCAzNTcsIDAsIAotICAgIDAsIDM1OCwgMzU5LCAwLCAwLCAwLCAwLCAwLCAzNjAsIDAsIDAsIDAsIDM2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzYyLCAwLCAwLCAzNjMsIDM2NCwgMCwgMCwgMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNjYsIDM2NywgMCwgMzY4LCAwLCAwLCAKLSAgICAwLCAzNjksIDAsIDAsIDAsIDAsIDAsIDM3MCwgMzcxLCAwLCAwLCAzNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc0LCAzNzUsIDM3NiwgMzc3LCAzNzgsIDAsIDAsIAotICAgIDM3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMzgwLCAwLCAwLCAzODEsIDAsIDAsIDAsIDM4MiwgMCwgMCwgMCwgMCwgMCwgMzgzLCAKLSAgICAzODQsIDAsIDAsIDAsIDAsIDAsIDM4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzg2LCAwLCAwLCAwLCAwLCAwLCAwLCAzODcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg5LCAzOTAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzkyLCAzOTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk1LCAzOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzOTksIDQwMCwgNDAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA0LCAKLSAgICA0MDUsIDQwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA0MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwLCA0MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzLCA0MTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTcsIDQxOCwgNDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIyLCA0MjMsIDQyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI4LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0OCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDU1LCA0NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNCwgNSwgNiwgNywgOCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDAsIDAsIDExLCAwLCAxMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMsIAorICAgIDE0LCAxNSwgMCwgMCwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxOCwgMCwgMTksIDIwLCAyMSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMyLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzQsIDM1LCAzNiwgMCwgMzcsIDM4LCAzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAsIDQxLCA0MiwgNDMsIDQ0LCAKKyAgICA0NSwgNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgMCwgNDksIDAsIDUwLCA1MSwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCA1NCwgMCwgNTUsIDU2LCA1NywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDU5LCAwLCAwLCA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjEsIDYyLCAKKyAgICA2MywgMCwgNjQsIDY1LCA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzMsIDc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NSwgNzYsIDc3LCAKKyAgICA3OCwgNzksIDgwLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODIsIDgzLCA4NCwgMCwgODUsIDg2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4NywgODgsIDAsIDg5LCA5MCwgOTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyLCA5MywgOTQsIAorICAgIDk1LCA5NiwgOTcsIDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OSwgMCwgMCwgMCwgMTAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDEsIDEwMiwgMCwgMCwgMTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNSwgMTA2LCAxMDcsIDAsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA5LCAxMTAsIDExMSwgMCwgMTEyLCAwLCAxMTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNCwgMTE1LCAxMTYsIAorICAgIDExNywgMTE4LCAxMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMCwgMCwgMCwgMTIxLCAwLCAxMjIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEyMywgMTI0LCAxMjUsIDAsIDAsIDEyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3LCAKKyAgICAxMjgsIDAsIDEyOSwgMTMwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAorICAgIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDAsIDE0MSwgMTQyLCAwLCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ1LCAxNDYsIDAsIDE0NywgCisgICAgMTQ4LCAxNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTU3LCAwLCAxNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1OSwgMCwgMTYwLCAKKyAgICAwLCAxNjEsIDE2MiwgMTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjQsIDAsIDE2NSwgMCwgMTY2LCAxNjcsIDE2OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTY5LCAxNzAsIDAsIDAsIDE3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcyLCAKKyAgICAxNzMsIDE3NCwgMCwgMTc1LCAxNzYsIDE3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc4LCAxNzksIDE4MCwgMTgxLCAxODIsIAorICAgIDE4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTg0LCAxODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAxOTEsIDE5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTkzLCAxOTQsIDE5NSwgCisgICAgMCwgMTk2LCAxOTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5OCwgMTk5LCAwLCAyMDAsIDIwMSwgMjAyLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgMjA4LCAyMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIxMCwgMCwgMCwgMCwgMjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMTIsIDIxMywgMjE0LCAwLCAyMTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjE3LCAKKyAgICAyMTgsIDIxOSwgMCwgMjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjEsIDIyMiwgMjIzLCAwLCAyMjQsIDAsIAorICAgIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI2LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjcsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDIyOCwgMCwgMjI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDIzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMyLCAyMzMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjM1LCAwLCAyMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzNywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM4LCAwLCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI0MCwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ0LCAyNDUsIAorICAgIDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQ3LCAwLCAyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTEsIDI1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTQsIDAsIDI1NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjU2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNTcsIDAsIAorICAgIDI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjU5LCAyNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjMsIDI2NCwgMjY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNjYsIDAsIDI2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAwLCAyNjksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyNzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyODEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjgzLCAwLCAyODQsIDAsIDI4NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg2LCAwLCAyODcsIDAsIAorICAgIDI4OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjg5LCAwLCAyOTAsIDAsIDI5MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjkyLCAwLCAyOTMsIDAsIDI5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMDUsIDMwNiwgMCwgMzA3LCAKKyAgICAwLCAwLCAwLCAzMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDMwOSwgMCwgMCwgMzEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzMTEsIDAsIDAsIDMxMiwgMCwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTQsIDMxNSwgMCwgMzE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIDAsIDMxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjAsIDMyMSwgMCwgMzIyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjMsIDAsIDAsIDMyNCwgMCwgMCwgMCwgMzI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMzI4LCAzMjksIDAsIDMzMCwgMCwgMCwgMCwgMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzIsIDAsIDAsIAorICAgIDMzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzM0LCAwLCAwLCAzMzUsIDAsIDAsIDAsIDMzNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMzM3LCAzMzgsIDAsIDMzOSwgMCwgMCwgMCwgMzQwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDEsIDAsIDAsIAorICAgIDM0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNDQsIDM0NSwgMCwgMzQ2LCAwLCAwLCAwLCAzNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDM0OCwgMCwgMCwgMzQ5LCAKKyAgICAwLCAwLCAwLCAzNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMzUyLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAzNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDM1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU1LCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDM2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzYxLCAzNjIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjUsIDM2NiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2OSwgMzcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzc2LCAzNzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODAsIAorICAgIDM4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM4NCwgMzg1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDM4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAzODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMzk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMiwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDA5LCA0MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MTMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNCwgNDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0MTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQxNywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0MTksIDQyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDMzLCAwLCAKKyAgICAwLCA0MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MzcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NDAsIDQ0MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQyLCA0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA0NDksIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTIsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0NTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1OSwgMCwgMCwgMCwgMCwgMCwgMCwgNDYwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCA0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY5LCAwLCAKLSAgICA0NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCA0ODUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDg3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0OTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDkzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDk5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAyLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDMsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA1LCAKLSAgICA1MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTA4LCAwLCAwLCAwLCAwLCAwLCAwLCA1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDUxMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDUxOSwgMCwgMCwgMCwgMCwgMCwgMCwgNTIwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTI5LCAwLCAwLCAwLCAwLCAwLCAwLCA1MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTMyLCA1MzMsIDAsIDAsIDAsIDAsIDAsIDUzNCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MzYsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzksIDU0MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU0MywgMCwgMCwgMCwgMCwgMCwgMCwgNTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCA1NDUsIDAsIDAsIDAsIDAsIDAsIDU0NiwgCi0gICAgNTQ3LCAwLCAwLCAwLCAwLCAwLCA1NDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU0OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDU1OCwgMCwgMCwgMCwgMCwgMCwgNTU5LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNTYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NzIsIDAsIDAsIDAsIDAsIDAsIDU3MywgMCwgMCwgMCwgMCwgMCwgMCwgNTc0LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU3NiwgMCwgMCwgMCwgMCwgMCwgNTc3LCA1NzgsIDAsIDAsIDAsIDAsIDAsIDU3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDY3LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MiwgMCwgMCwgMCwgMCwgMCwgMCwgNDczLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0NzQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDc2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgyLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODMsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODYsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA0OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MywgMCwgMCwgMCwgMCwgMCwgMCwgNDk0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDk3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OTgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5OSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwMiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTA2LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgNTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MTksIDAsIDAsIDAsIDAsIDAsIDAsIDUyMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNTIxLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDUyMywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MjgsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTMzLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1MzQsIDAsIDAsIDAsIDAsIDAsIDAsIDUzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MzcsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDUzOCwgMCwgMCwgMCwgMCwgMCwgMCwgNTM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQ4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NTgsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYzLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDU3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgxLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDU4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1ODUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTg3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDMsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjA4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwMSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNjA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjExLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYxMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA2MTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxNiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2MTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNjIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjEsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNjIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDYyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjI2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgNjI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNiwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2MzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzOSwgNjQwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA2NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NywgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MCwgNjYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA2NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2MywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjUsIDY2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA2NjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY2OSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDY3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDYzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjMxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDYzMywgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvbXBfZGF0YVtdID0gewotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4MTQsIDAsIDAsIDg4MDAsIDAsIDAsIDg4MTUsIDAsIDAsIDAsIDE5MiwgMTkzLCAKLSAgICAxOTQsIDE5NSwgMjU2LCAyNTgsIDU1MCwgMTk2LCA3ODQyLCAxOTcsIDAsIDQ2MSwgNTEyLCA1MTQsIDAsIDAsIDAsIDc4NDAsIAotICAgIDAsIDc2ODAsIDAsIDAsIDI2MCwgMCwgMCwgNzY4MiwgMCwgMCwgNzY4NCwgMCwgMCwgMCwgMCwgNzY4NiwgMCwgMjYyLCAKLSAgICAyNjQsIDAsIDAsIDAsIDI2NiwgMCwgMCwgMCwgMCwgMjY4LCAwLCAxOTksIDAsIDAsIDAsIDc2OTAsIDAsIDAsIDAsIDAsIAotICAgIDI3MCwgMCwgMCwgMCwgMCwgMCwgNzY5MiwgMCwgMCwgMCwgNzY5NiwgMCwgNzY5OCwgMCwgMCwgNzY5NCwgMCwgMCwgMCwgMCwgCi0gICAgMjAwLCAyMDEsIDIwMiwgNzg2OCwgMjc0LCAyNzYsIDI3OCwgMjAzLCA3ODY2LCAwLCAwLCAyODIsIDUxNiwgNTE4LCAwLCAwLCAKLSAgICAwLCA3ODY0LCAwLCAwLCAwLCA1NTIsIDI4MCwgNzcwNCwgMCwgNzcwNiwgMCwgMCwgMCwgNzcxMCwgMCwgNTAwLCAyODQsIDAsIAotICAgIDc3MTIsIDI4NiwgMjg4LCAwLCAwLCAwLCAwLCA0ODYsIDAsIDI5MCwgMCwgMCwgMCwgMjkyLCAwLCAwLCAwLCA3NzE0LCAKLSAgICA3NzE4LCAwLCAwLCAwLCA1NDIsIDAsIDAsIDAsIDAsIDAsIDc3MTYsIDAsIDAsIDAsIDc3MjAsIDAsIDAsIDc3MjIsIDAsIDAsIAotICAgIDIwNCwgMjA1LCAyMDYsIDI5NiwgMjk4LCAzMDAsIDMwNCwgMjA3LCA3ODgwLCAwLCAwLCA0NjMsIDUyMCwgNTIyLCAwLCAwLCAKLSAgICAwLCA3ODgyLCAwLCAwLCAwLCAwLCAzMDIsIDAsIDAsIDc3MjQsIDAsIDAsIDAsIDMwOCwgMCwgNzcyOCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDg4LCAwLCA3NzMwLCAwLCAwLCAwLCAzMTAsIDAsIDAsIDAsIDAsIDc3MzIsIDAsIDAsIDAsIDAsIDAsIDMxMywgMCwgCi0gICAgMzE3LCAwLCAwLCAwLCAwLCAwLCA3NzM0LCAwLCAwLCAwLCAzMTUsIDAsIDc3NDAsIDAsIDAsIDc3MzgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDc3NDIsIDAsIDAsIDAsIDAsIDc3NDQsIDAsIDAsIDc3NDYsIDAsIDUwNCwgMzIzLCAwLCAyMDksIDAsIDAsIDc3NDgsIAotICAgIDAsIDAsIDAsIDAsIDMyNywgMCwgNzc1MCwgMCwgMCwgMCwgMzI1LCAwLCA3NzU0LCAwLCAwLCA3NzUyLCAwLCAwLCAwLCAwLCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDMzMiwgMzM0LCA1NTgsIDIxNCwgNzg4NiwgMCwgMzM2LCA0NjUsIDUyNCwgNTI2LCAwLCAKLSAgICAwLCA0MTYsIDc4ODQsIDAsIDAsIDAsIDAsIDQ5MCwgMCwgMCwgMCwgMCwgMCwgNzc2NCwgNzc2NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzQwLCAwLCAwLCAwLCAwLCA3NzY4LCAzNDQsIDUyOCwgNTMwLCAwLCAwLCAwLCA3NzcwLCAwLCAwLCAwLCAzNDIsIDAsIDAsIAotICAgIDAsIDAsIDc3NzQsIDAsIDM0NiwgMzQ4LCAwLCAwLCAwLCA3Nzc2LCAwLCAwLCAwLCAwLCAzNTIsIDAsIDc3NzgsIDAsIDAsIAotICAgIDUzNiwgMzUwLCAwLCAwLCAwLCA3Nzg2LCAwLCAwLCAwLCAwLCAzNTYsIDAsIDc3ODgsIDAsIDAsIDUzOCwgMzU0LCAwLCAKLSAgICA3NzkyLCAwLCAwLCA3NzkwLCAwLCAwLCAwLCAwLCAyMTcsIDIxOCwgMjE5LCAzNjAsIDM2MiwgMzY0LCAwLCAyMjAsIDc5MTAsIAotICAgIDM2NiwgMzY4LCA0NjcsIDUzMiwgNTM0LCAwLCAwLCA0MzEsIDc5MDgsIDc3OTQsIDAsIDAsIDAsIDM3MCwgNzc5OCwgMCwgCi0gICAgNzc5NiwgNzgwNCwgMCwgMCwgMCwgMCwgMCwgNzgwNiwgMCwgNzgwOCwgNzgxMCwgMzcyLCAwLCAwLCAwLCA3ODE0LCA3ODEyLCAKLSAgICAwLCA3ODE2LCAwLCAwLCAwLCA3ODE4LCA3ODIwLCAwLCAwLCAwLCA3OTIyLCAyMjEsIDM3NCwgNzkyOCwgNTYyLCAwLCAKLSAgICA3ODIyLCAzNzYsIDc5MjYsIDAsIDAsIDAsIDAsIDc5MjQsIDAsIDAsIDM3NywgNzgyNCwgMCwgMCwgMCwgMzc5LCAzODEsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4MjYsIDAsIDAsIDAsIDAsIDc4MjgsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjU3LCAyNTksIDU1MSwgCi0gICAgMjI4LCA3ODQzLCAyMjksIDAsIDQ2MiwgNTEzLCA1MTUsIDAsIDAsIDAsIDc4NDEsIDAsIDc2ODEsIDAsIDAsIDI2MSwgMCwgCi0gICAgMCwgNzY4MywgMCwgMCwgNzY4NSwgMCwgMCwgMCwgMCwgNzY4NywgMCwgMCwgMCwgMCwgMCwgMjYzLCAyNjUsIDAsIDAsIDAsIAotICAgIDI2NywgMCwgMCwgMCwgMCwgMjY5LCAwLCAwLCAwLCAwLCAwLCAyMzEsIDAsIDAsIDAsIDc2OTEsIDI3MSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNzY5MywgMCwgMCwgMCwgNzY5NywgMCwgNzY5OSwgMCwgMCwgNzY5NSwgMjMyLCAyMzMsIDIzNCwgNzg2OSwgMjc1LCAKLSAgICAyNzcsIDI3OSwgMjM1LCA3ODY3LCAwLCAwLCAyODMsIDUxNywgNTE5LCAwLCAwLCAwLCA3ODY1LCAwLCAwLCAwLCA1NTMsIAotICAgIDI4MSwgNzcwNSwgMCwgNzcwNywgMCwgMCwgMCwgNzcxMSwgMCwgMCwgMCwgMCwgMCwgNTAxLCAyODUsIDAsIDc3MTMsIDI4NywgCi0gICAgMjg5LCAwLCAwLCAwLCAwLCA0ODcsIDAsIDAsIDAsIDAsIDAsIDI5MSwgMCwgMCwgMCwgMjkzLCAwLCAwLCAwLCA3NzE1LCAKLSAgICA3NzE5LCAwLCAwLCAwLCA1NDMsIDAsIDAsIDAsIDAsIDAsIDc3MTcsIDAsIDAsIDAsIDc3MjEsIDAsIDAsIDc3MjMsIDAsIAotICAgIDc4MzAsIDIzNiwgMjM3LCAyMzgsIDI5NywgMjk5LCAzMDEsIDAsIDIzOSwgNzg4MSwgMCwgMCwgNDY0LCA1MjEsIDUyMywgMCwgCi0gICAgMCwgMCwgNzg4MywgMCwgMCwgMCwgMCwgMzAzLCAwLCAwLCA3NzI1LCAwLCAwLCAwLCAzMDksIDAsIDAsIDAsIDAsIDQ5NiwgCi0gICAgMCwgMCwgMCwgMCwgNzcyOSwgMCwgNDg5LCAwLCAwLCAwLCAwLCAwLCA3NzMxLCAwLCAwLCAwLCAzMTEsIDc3MzMsIDAsIDAsIAotICAgIDAsIDAsIDAsIDMxNCwgMCwgMzE4LCAwLCAwLCAwLCAwLCAwLCA3NzM1LCAwLCAwLCAwLCAzMTYsIDAsIDc3NDEsIDAsIDAsIAotICAgIDc3MzksIDAsIDc3NDMsIDAsIDAsIDAsIDAsIDc3NDUsIDAsIDAsIDc3NDcsIDAsIDAsIDAsIDAsIDAsIDUwNSwgMzI0LCAwLCAKLSAgICAyNDEsIDAsIDAsIDc3NDksIDAsIDAsIDAsIDAsIDMyOCwgMCwgNzc1MSwgMCwgMCwgMCwgMzI2LCAwLCA3NzU1LCAwLCAwLCAKLSAgICA3NzUzLCAwLCAwLCAwLCAwLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDMzMywgMzM1LCA1NTksIDI0NiwgNzg4NywgMCwgMzM3LCAKLSAgICA0NjYsIDUyNSwgNTI3LCAwLCAwLCA0MTcsIDc4ODUsIDQ5MSwgMCwgMCwgMCwgMCwgMCwgNzc2NSwgMCwgMCwgMCwgMCwgCi0gICAgNzc2NywgMCwgMzQxLCAwLCAwLCAwLCAwLCA3NzY5LCAwLCAwLCAwLCAwLCAzNDUsIDUyOSwgNTMxLCAwLCAwLCAwLCA3NzcxLCAKLSAgICAwLCAwLCAwLCAzNDMsIDAsIDAsIDAsIDAsIDc3NzUsIDAsIDM0NywgMzQ5LCAwLCAwLCAwLCA3Nzc3LCAwLCAwLCAwLCAwLCAKLSAgICAzNTMsIDAsIDc3NzksIDAsIDAsIDUzNywgMzUxLCAwLCAwLCAwLCA3Nzg3LCA3ODMxLCAwLCAwLCAwLCAzNTcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDc3ODksIDAsIDAsIDUzOSwgMzU1LCAwLCA3NzkzLCAwLCAwLCA3NzkxLCAwLCAwLCAwLCAwLCAyNDksIDI1MCwgCi0gICAgMjUxLCAzNjEsIDM2MywgMzY1LCAwLCAyNTIsIDc5MTEsIDM2NywgMzY5LCA0NjgsIDUzMywgNTM1LCAwLCAwLCA0MzIsIAotICAgIDc5MDksIDc3OTUsIDAsIDAsIDAsIDM3MSwgNzc5OSwgMCwgNzc5NywgMCwgMCwgMCwgMCwgNzgwNSwgMCwgNzgwNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNzgwOSwgNzgxMSwgMzczLCAwLCAwLCAwLCA3ODE1LCA3ODEzLCAwLCA3ODMyLCAwLCAwLCAwLCA3ODE3LCAwLCAKLSAgICAwLCAwLCA3ODE5LCA3ODIxLCAwLCAwLCAwLCA3OTIzLCAyNTMsIDM3NSwgNzkyOSwgNTYzLCAwLCA3ODIzLCAyNTUsIDc5MjcsIAotICAgIDc4MzMsIDAsIDAsIDAsIDc5MjUsIDAsIDAsIDM3OCwgNzgyNSwgMCwgMCwgMCwgMzgwLCAwLCAwLCAwLCAwLCAzODIsIDAsIAotICAgIDc4MjcsIDAsIDAsIDAsIDAsIDc4MjksIDAsIDAsIDAsIDAsIDgxNzMsIDkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgODEyOSwgMCwgCi0gICAgMCwgNzg0NiwgNzg0NCwgMCwgNzg1MCwgMCwgMCwgMCwgMCwgNzg0OCwgMCwgMCwgNDc4LCAwLCAwLCAwLCA1MDYsIDAsIDAsIAotICAgIDUwOCwgMCwgMCwgNDgyLCAwLCAwLCAwLCA3Njg4LCAwLCA3ODcyLCA3ODcwLCAwLCA3ODc2LCAwLCAwLCAwLCAwLCA3ODc0LCAKLSAgICAwLCAwLCAwLCA3NzI2LCAwLCAwLCAwLCAwLCAwLCA3ODkwLCA3ODg4LCAwLCA3ODk0LCAwLCAwLCAwLCAwLCA3ODkyLCAwLCAKLSAgICAwLCAwLCA3NzU2LCAwLCAwLCA1NTYsIDAsIDAsIDc3NTgsIDAsIDAsIDAsIDU1NCwgMCwgMCwgMCwgNTEwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA0NzUsIDQ3MSwgMCwgMCwgNDY5LCAwLCAwLCA0NzMsIDAsIDAsIDAsIDc4NDcsIDc4NDUsIDAsIDc4NTEsIDAsIDAsIAotICAgIDAsIDAsIDc4NDksIDAsIDAsIDQ3OSwgMCwgMCwgMCwgNTA3LCAwLCAwLCA1MDksIDAsIDAsIDQ4MywgMCwgMCwgMCwgNzY4OSwgCi0gICAgMCwgNzg3MywgNzg3MSwgMCwgNzg3NywgMCwgMCwgMCwgMCwgNzg3NSwgMCwgMCwgMCwgNzcyNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgNzg5MSwgNzg4OSwgMCwgNzg5NSwgMCwgMCwgMCwgMCwgNzg5MywgMCwgMCwgMCwgNzc1NywgMCwgMCwgNTU3LCAwLCAwLCAKLSAgICA3NzU5LCAwLCAwLCAwLCA1NTUsIDAsIDAsIDAsIDUxMSwgMCwgMCwgMCwgMCwgMCwgNDc2LCA0NzIsIDAsIDAsIDQ3MCwgMCwgCi0gICAgMCwgNDc0LCAwLCAwLCAwLCA3ODU2LCA3ODU0LCAwLCA3ODYwLCAwLCAwLCAwLCAwLCA3ODU4LCAwLCAwLCA3ODU3LCA3ODU1LCAKLSAgICAwLCA3ODYxLCAwLCAwLCAwLCAwLCA3ODU5LCAwLCAwLCA3NzAwLCA3NzAyLCAwLCAwLCAwLCAwLCAwLCA3NzAxLCA3NzAzLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3NzYwLCA3NzYyLCAwLCA3NzYxLCA3NzYzLCAwLCAwLCAwLCA3NzgwLCAwLCAwLCA3NzgxLCAwLCAKLSAgICAwLCA3NzgyLCAwLCAwLCAwLCAwLCAwLCAwLCA3NzgzLCAwLCA3ODAwLCAwLCAwLCA3ODAxLCAwLCAwLCAwLCAwLCA3ODAyLCAKLSAgICAwLCAwLCA3ODAzLCAwLCAwLCAwLCAwLCAwLCA3ODM1LCAwLCAwLCAwLCAwLCA3OTAwLCA3ODk4LCAwLCA3OTA0LCAwLCAwLCAKLSAgICAwLCAwLCA3OTAyLCA3OTA2LCAwLCAwLCAwLCAwLCAwLCA3OTAxLCA3ODk5LCAwLCA3OTA1LCAwLCAwLCAwLCAwLCA3OTAzLCAKLSAgICAwLCAwLCAwLCAwLCA3OTA3LCAwLCA3OTE0LCA3OTEyLCAwLCA3OTE4LCAwLCAwLCAwLCAwLCA3OTE2LCAwLCAwLCAwLCAwLCAKLSAgICA3OTIwLCAwLCA3OTE1LCA3OTEzLCAwLCA3OTE5LCA3OTE3LCAwLCAwLCAwLCAwLCA3OTIxLCAwLCAwLCAwLCAwLCA0OTQsIDAsIAotICAgIDAsIDAsIDQ5MiwgMCwgMCwgNDkzLCAwLCAwLCA0ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MSwgMCwgMCwgMCwgNzcwOCwgMCwgCi0gICAgMCwgNzcwOSwgMCwgNTYwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NjEsIDAsIDQ5NSwgMCwgMCwgMCwgODEyMiwgOTAyLCAwLCAwLCAKLSAgICA4MTIxLCA4MTIwLCAwLCAwLCAwLCAwLCA3OTQ0LCA3OTQ1LCAwLCAwLCAwLCAwLCAwLCA4MTI0LCAwLCA4MTM2LCA5MDQsIDAsIAotICAgIDAsIDAsIDAsIDc5NjAsIDc5NjEsIDAsIDAsIDAsIDgxMzgsIDkwNSwgMCwgMCwgMCwgMCwgNzk3NiwgNzk3NywgMCwgODE0MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODE1NCwgOTA2LCAwLCAwLCA4MTUzLCA4MTUyLCAwLCA5MzgsIDAsIDAsIDc5OTIsIDc5OTMsIDAsIAotICAgIDAsIDAsIDgxODQsIDkwOCwgMCwgMCwgMCwgMCwgODAwOCwgODAwOSwgMCwgMCwgMCwgMCwgMCwgMCwgODE3MiwgMCwgMCwgMCwgCi0gICAgODE3MCwgOTEwLCAwLCAwLCA4MTY5LCA4MTY4LCAwLCA5MzksIDAsIDAsIDAsIDgwMjUsIDAsIDAsIDAsIDgxODYsIDkxMSwgCi0gICAgODA0MCwgODA0MSwgMCwgMCwgMCwgMCwgMCwgODE4OCwgMCwgMCwgODExNiwgMCwgMCwgODEzMiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgODA0OCwgOTQwLCAwLCAwLCA4MTEzLCA4MTEyLCAwLCAwLCAwLCAwLCA3OTM2LCA3OTM3LCAwLCAwLCAwLCAwLCA4MTE4LCAKLSAgICA4MTE1LCAwLCAwLCAwLCAwLCAwLCA4MDUwLCA5NDEsIDc5NTIsIDc5NTMsIDAsIDAsIDAsIDgwNTIsIDk0MiwgMCwgMCwgMCwgCi0gICAgMCwgNzk2OCwgNzk2OSwgMCwgMCwgMCwgMCwgODEzNCwgODEzMSwgMCwgODA1NCwgOTQzLCAwLCAwLCA4MTQ1LCA4MTQ0LCAwLCAKLSAgICA5NzAsIDAsIDAsIDc5ODQsIDc5ODUsIDgxNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwNTYsIDk3MiwgMCwgMCwgMCwgMCwgCi0gICAgODAwMCwgODAwMSwgMCwgODE2NCwgODE2NSwgMCwgMCwgMCwgODA1OCwgOTczLCAwLCAwLCA4MTYxLCA4MTYwLCAwLCA5NzEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDgwMTYsIDgwMTcsIDAsIDAsIDAsIDAsIDgxNjYsIDAsIDAsIDgwNjAsIDk3NCwgMCwgMCwgMCwgCi0gICAgMCwgODAzMiwgODAzMywgODE4MiwgODE3OSwgMCwgMCwgMCwgMCwgMCwgODE0NiwgOTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTUxLCAwLCAwLCA4MTYyLCA5NDQsIDAsIDAsIDgxNjcsIDAsIDAsIDAsIDgxODAsIDAsIDAsIDk3OSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgOTgwLCAwLCAwLCAxMDMxLCAwLCAwLCAwLCAwLCAxMjMyLCAwLCAxMjM0LCAwLCAwLCAwLCAwLCAxMDI3LCAwLCAxMDI0LCAKLSAgICAwLCAwLCAwLCAwLCAxMjM4LCAwLCAxMDI1LCAxMjE3LCAwLCAxMjQ0LCAwLCAwLCAxMjQ2LCAwLCAwLCAwLCAxMDM3LCAwLCAKLSAgICAwLCAwLCAxMjUwLCAxMDQ5LCAwLCAxMjUyLCAwLCAwLCAwLCAwLCAxMDM2LCAwLCAwLCAwLCAwLCAxMjU0LCAwLCAwLCAwLCAKLSAgICAxMjYyLCAxMDM4LCAwLCAxMjY0LCAwLCAwLCAxMjY2LCAwLCAwLCAwLCAxMjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjcyLCAKLSAgICAwLCAwLCAxMjYwLCAwLCAwLCAwLCAwLCAxMjMzLCAwLCAxMjM1LCAwLCAwLCAwLCAwLCAxMTA3LCAwLCAxMTA0LCAwLCAwLCAKLSAgICAwLCAwLCAxMjM5LCAwLCAxMTA1LCAxMjE4LCAwLCAxMjQ1LCAwLCAwLCAxMjQ3LCAwLCAwLCAwLCAxMTE3LCAwLCAwLCAwLCAKLSAgICAxMjUxLCAxMDgxLCAwLCAxMjUzLCAwLCAwLCAwLCAwLCAxMTE2LCAwLCAwLCAwLCAwLCAxMjU1LCAwLCAwLCAwLCAxMjYzLCAKLSAgICAxMTE4LCAwLCAxMjY1LCAwLCAwLCAxMjY3LCAwLCAwLCAwLCAxMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjczLCAwLCAwLCAKLSAgICAxMjYxLCAwLCAwLCAxMTExLCAwLCAwLCAwLCAxMTQyLCAwLCAwLCAxMTQzLCAwLCAwLCAwLCAwLCAwLCAxMjQyLCAwLCAwLCAKLSAgICAxMjQzLCAwLCAwLCAxMjU4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMjU5LCAwLCAxNTcwLCAxNTcxLCAxNTczLCAwLCAxNTcyLCAKLSAgICAwLCAwLCAxNTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMwLCAwLCAwLCAxNzQ3LCAwLCAwLCAxNzI4LCAwLCAwLCAwLCAwLCAKLSAgICAyMzQ1LCAwLCAwLCAyMzUzLCAwLCAwLCAyMzU2LCAwLCAwLCAwLCAyNTA3LCAyNTA4LCAwLCAwLCAwLCAyODkxLCAyODg4LCAKLSAgICAyODkyLCAyOTY0LCAwLCAwLCAwLCAwLCAwLCAzMDE4LCAzMDIwLCAwLCAzMDE5LCAwLCAwLCAwLCAwLCAzMTQ0LCAwLCAwLCAKLSAgICAwLCAwLCAzMjY0LCAwLCAzMjc0LCAzMjcxLCAzMjcyLCAwLCAzMjc1LCAwLCAwLCAwLCAwLCAzNDAyLCAzNDA0LCAwLCAKLSAgICAzNDAzLCAwLCAwLCAwLCAwLCAzNTQ2LCAzNTQ4LCAzNTUwLCAwLCAwLCAwLCAwLCAzNTQ5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0MTM0LCAwLCAwLCAwLCA2OTE4LCAwLCAwLCA2OTIwLCAwLCAwLCA2OTIyLCAwLCAwLCA2OTI0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA2OTI2LCAwLCAwLCA2OTMwLCAwLCAwLCA2OTcxLCAwLCAwLCA2OTczLCAwLCAwLCAwLCAwLCAwLCAwLCA2OTc2LCAwLCAKLSAgICAwLCA2OTc3LCAwLCAwLCA2OTc5LCAwLCAwLCAwLCA3NzM2LCAwLCAwLCA3NzM3LCAwLCAwLCAwLCAwLCAwLCAwLCA3NzcyLCAKLSAgICAwLCAwLCA3NzczLCAwLCAwLCAwLCAwLCA3Nzg0LCAwLCAwLCA3Nzg1LCAwLCAwLCA3ODUyLCAwLCAwLCA3ODYyLCAwLCAwLCAKLSAgICAwLCA3ODUzLCAwLCAwLCA3ODYzLCAwLCAwLCAwLCA3ODc4LCAwLCAwLCA3ODc5LCAwLCAwLCA3ODk2LCAwLCAwLCA3ODk3LCAKLSAgICAwLCAwLCAwLCAwLCA3OTM4LCA3OTQwLCAwLCAwLCA3OTQyLCA4MDY0LCAwLCA3OTM5LCA3OTQxLCAwLCAwLCA3OTQzLCAKLSAgICA4MDY1LCAwLCAwLCA4MDY2LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDY3LCAwLCAwLCA4MDY4LCAwLCAwLCA4MDY5LCAwLCAwLCAKLSAgICA4MDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDcxLCAwLCA3OTQ2LCA3OTQ4LCAwLCAwLCA3OTUwLCA4MDcyLCAwLCA3OTQ3LCAKLSAgICA3OTQ5LCAwLCAwLCA3OTUxLCA4MDczLCAwLCAwLCA4MDc0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDc1LCAwLCAwLCA4MDc2LCAKLSAgICAwLCAwLCA4MDc3LCAwLCAwLCA4MDc4LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDc5LCAwLCA3OTU0LCA3OTU2LCAwLCA3OTU1LCAKLSAgICA3OTU3LCAwLCAwLCAwLCAwLCAwLCA3OTYyLCA3OTY0LCAwLCAwLCAwLCAwLCAwLCA3OTYzLCA3OTY1LCAwLCA3OTcwLCAKLSAgICA3OTcyLCAwLCAwLCA3OTc0LCA4MDgwLCAwLCA3OTcxLCA3OTczLCAwLCAwLCA3OTc1LCA4MDgxLCAwLCAwLCA4MDgyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MDgzLCAwLCAwLCA4MDg0LCAwLCAwLCA4MDg1LCAwLCAwLCA4MDg2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA4MDg3LCAwLCA3OTc4LCA3OTgwLCAwLCAwLCA3OTgyLCA4MDg4LCAwLCA3OTc5LCA3OTgxLCAwLCAwLCA3OTgzLCAKLSAgICA4MDg5LCAwLCAwLCA4MDkwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDkxLCAwLCAwLCA4MDkyLCAwLCAwLCA4MDkzLCAwLCAwLCAKLSAgICA4MDk0LCAwLCAwLCAwLCAwLCAwLCAwLCA4MDk1LCAwLCA3OTg2LCA3OTg4LCAwLCAwLCA3OTkwLCAwLCAwLCA3OTg3LCAKLSAgICA3OTg5LCAwLCAwLCA3OTkxLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTk0LCA3OTk2LCAwLCAwLCAwLCAwLCAwLCAwLCA3OTk4LCAKLSAgICAwLCAwLCA3OTk1LCA3OTk3LCAwLCAwLCA3OTk5LCAwLCAwLCA4MDAyLCA4MDA0LCAwLCA4MDAzLCA4MDA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MDEwLCA4MDEyLCAwLCAwLCAwLCAwLCAwLCA4MDExLCA4MDEzLCAwLCA4MDE4LCA4MDIwLCAwLCAwLCA4MDIyLCAKLSAgICAwLCAwLCA4MDE5LCA4MDIxLCAwLCAwLCA4MDIzLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDI3LCA4MDI5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA4MDMxLCAwLCAwLCA4MDM0LCA4MDM2LCAwLCAwLCA4MDM4LCA4MDk2LCAwLCA4MDM1LCA4MDM3LCAwLCAwLCAKLSAgICA4MDM5LCA4MDk3LCAwLCAwLCA4MDk4LCAwLCAwLCA4MDk5LCAwLCAwLCAwLCAwLCAwLCAwLCA4MTAwLCAwLCAwLCA4MTAxLCAKLSAgICAwLCAwLCA4MTAyLCAwLCAwLCA4MTAzLCAwLCAwLCAwLCAwLCAwLCA4MDQyLCA4MDQ0LCAwLCAwLCA4MDQ2LCA4MTA0LCAwLCAKLSAgICA4MDQzLCA4MDQ1LCAwLCAwLCA4MDQ3LCA4MTA1LCAwLCAwLCA4MTA2LCAwLCAwLCA4MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTA4LCAwLCAwLCA4MTA5LCAwLCAwLCA4MTEwLCAwLCAwLCA4MTExLCAwLCAwLCAwLCAwLCAwLCAwLCA4MTE0LCAwLCAwLCAKLSAgICA4MTMwLCAwLCAwLCA4MTc4LCAwLCAwLCA4MTE5LCAwLCAwLCAwLCAwLCAwLCA4MTQxLCA4MTQyLCAwLCAwLCA4MTQzLCAwLCAKLSAgICAwLCAwLCA4MTM1LCAwLCAwLCA4MTgzLCAwLCAwLCAwLCAwLCAwLCA4MTU3LCA4MTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MTU5LCAwLCA4NjAyLCAwLCAwLCA4NjAzLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjIyLCAwLCAwLCA4NjUzLCAwLCAwLCAKLSAgICA4NjU1LCAwLCAwLCA4NjU0LCAwLCAwLCAwLCAwLCAwLCAwLCA4NzA4LCAwLCAwLCA4NzEzLCAwLCAwLCA4NzE2LCAwLCAwLCAKLSAgICA4NzQwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzQyLCAwLCAwLCA4NzY5LCAwLCAwLCA4NzcyLCAwLCAwLCA4Nzc1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4Nzc3LCAwLCAwLCA4ODEzLCAwLCAwLCA4ODAyLCAwLCAwLCA4ODE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4ODE3LCAwLCAwLCA4ODIwLCAwLCAwLCA4ODIxLCAwLCAwLCA4ODI0LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODI1LCAwLCAwLCAKLSAgICA4ODMyLCAwLCAwLCA4ODMzLCAwLCAwLCA4OTI4LCAwLCAwLCAwLCAwLCAwLCAwLCA4OTI5LCAwLCAwLCA4ODM2LCAwLCAwLCAKLSAgICA4ODM3LCAwLCAwLCA4ODQwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODQxLCAwLCAwLCA4OTMwLCAwLCAwLCA4OTMxLCAwLCAwLCAKLSAgICA4ODc2LCAwLCAwLCAwLCAwLCAwLCAwLCA4ODc3LCAwLCAwLCA4ODc4LCAwLCAwLCA4ODc5LCAwLCAwLCA4OTM4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4OTM5LCAwLCAwLCA4OTQwLCAwLCAwLCA4OTQxLCAwLCAwLCAwLCAxMjQzNiwgMCwgMCwgMTIzNjQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEyMzY2LCAwLCAwLCAxMjM2OCwgMCwgMCwgMTIzNzAsIDAsIDAsIDEyMzcyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMjM3NCwgMCwgMCwgMTIzNzYsIDAsIDAsIDEyMzc4LCAwLCAwLCAxMjM4MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTIzODIsIDAsIDAsIDEyMzg0LCAwLCAwLCAxMjM4NiwgMCwgMCwgMTIzODksIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzkxLCAwLCAKLSAgICAwLCAxMjM5MywgMCwgMCwgMTI0MDAsIDEyNDAxLCAwLCAxMjQwMywgMTI0MDQsIDAsIDAsIDAsIDAsIDAsIDEyNDA2LCAKLSAgICAxMjQwNywgMCwgMCwgMCwgMCwgMCwgMTI0MDksIDEyNDEwLCAwLCAxMjQxMiwgMTI0MTMsIDAsIDEyNDQ2LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMjUzMiwgMCwgMCwgMTI0NjAsIDAsIDAsIDEyNDYyLCAwLCAwLCAxMjQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTI0NjYsIDAsIDAsIDEyNDY4LCAwLCAwLCAxMjQ3MCwgMCwgMCwgMTI0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDc0LCAwLCAKLSAgICAwLCAxMjQ3NiwgMCwgMCwgMTI0NzgsIDAsIDAsIDEyNDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ4MiwgMCwgMCwgMTI0ODUsIAotICAgIDAsIDAsIDEyNDg3LCAwLCAwLCAxMjQ4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0OTYsIDEyNDk3LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjQ5OSwgMTI1MDAsIDAsIDEyNTAyLCAxMjUwMywgMCwgMTI1MDUsIDEyNTA2LCAwLCAwLCAwLCAwLCAwLCAxMjUwOCwgCi0gICAgMTI1MDksIDAsIDAsIDAsIDAsIDAsIDEyNTM1LCAwLCAwLCAxMjUzNiwgMCwgMCwgMTI1MzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNTM4LCAwLCAwLCAxMjU0MiwgMCwgMCwgMCwgMCwgNjk3ODYsIDAsIDAsIDY5Nzg4LCAwLCAwLCA2OTgwMywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxNCwgMCwgMCwgMCwgODgwMCwgMCwgMCwgMCwgODgxNSwgMTkyLCAxOTMsIDE5NCwgCisgICAgMTk1LCAyNTYsIDI1OCwgNTUwLCAxOTYsIDc4NDIsIDE5NywgMCwgNDYxLCA1MTIsIDUxNCwgMCwgMCwgMCwgNzg0MCwgMCwgCisgICAgNzY4MCwgMCwgMCwgMjYwLCAwLCAwLCAwLCA3NjgyLCAwLCAwLCA3Njg0LCAwLCAwLCAwLCAwLCA3Njg2LCAwLCAwLCAyNjIsIAorICAgIDI2NCwgMCwgMCwgMCwgMjY2LCAwLCAwLCAwLCAwLCAyNjgsIDAsIDE5OSwgMCwgMCwgMCwgMCwgNzY5MCwgMCwgMCwgMCwgMCwgCisgICAgMjcwLCAwLCA3NjkyLCAwLCAwLCAwLCA3Njk2LCAwLCA3Njk4LCAwLCAwLCA3Njk0LCAwLCAyMDAsIDIwMSwgMjAyLCA3ODY4LCAKKyAgICAyNzQsIDI3NiwgMjc4LCAyMDMsIDc4NjYsIDAsIDAsIDI4MiwgNTE2LCA1MTgsIDAsIDAsIDAsIDc4NjQsIDAsIDAsIDAsIAorICAgIDU1MiwgMjgwLCA3NzA0LCAwLCA3NzA2LCAwLCAwLCAwLCAwLCA3NzEwLCAwLCAwLCA1MDAsIDI4NCwgMCwgNzcxMiwgMjg2LCAKKyAgICAyODgsIDAsIDAsIDAsIDAsIDQ4NiwgMCwgMjkwLCAwLCAwLCAwLCAwLCAyOTIsIDAsIDAsIDAsIDc3MTQsIDc3MTgsIDAsIDAsIAorICAgIDAsIDU0MiwgMCwgNzcxNiwgMCwgMCwgMCwgNzcyMCwgMCwgMCwgNzcyMiwgMCwgMCwgMCwgMjA0LCAyMDUsIDIwNiwgMjk2LCAKKyAgICAyOTgsIDMwMCwgMzA0LCAyMDcsIDc4ODAsIDAsIDAsIDQ2MywgNTIwLCA1MjIsIDAsIDAsIDAsIDc4ODIsIDAsIDAsIDAsIDAsIAorICAgIDMwMiwgMCwgMCwgNzcyNCwgMCwgMCwgMCwgMCwgMzA4LCAwLCAwLCA3NzI4LCAwLCAwLCAwLCAwLCAwLCA0ODgsIDAsIAorICAgIDc3MzAsIDAsIDAsIDAsIDMxMCwgMCwgMCwgMCwgMCwgNzczMiwgMCwgMCwgMzEzLCAwLCAwLCAwLCAwLCAwLCAzMTcsIDAsIAorICAgIDc3MzQsIDAsIDAsIDAsIDMxNSwgMCwgNzc0MCwgMCwgMCwgNzczOCwgMCwgMCwgNzc0MiwgMCwgMCwgMCwgMCwgNzc0NCwgMCwgCisgICAgMCwgNzc0NiwgMCwgMCwgNTA0LCAzMjMsIDAsIDIwOSwgMCwgMCwgNzc0OCwgMCwgMCwgMCwgMCwgMzI3LCAwLCA3NzUwLCAwLCAKKyAgICAwLCAwLCAzMjUsIDAsIDc3NTQsIDAsIDAsIDc3NTIsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMzMyLCAzMzQsIDU1OCwgCisgICAgMjE0LCA3ODg2LCAwLCAzMzYsIDQ2NSwgNTI0LCA1MjYsIDAsIDAsIDQxNiwgNzg4NCwgMCwgMCwgMCwgMCwgNDkwLCAwLCAwLCAKKyAgICA3NzY0LCAwLCAwLCAwLCAwLCA3NzY2LCAwLCAwLCAzNDAsIDAsIDAsIDAsIDAsIDc3NjgsIDAsIDAsIDAsIDAsIDM0NCwgCisgICAgNTI4LCA1MzAsIDAsIDAsIDAsIDc3NzAsIDAsIDAsIDAsIDM0MiwgMCwgMCwgMCwgMCwgNzc3NCwgMCwgMCwgMzQ2LCAzNDgsIAorICAgIDAsIDAsIDAsIDc3NzYsIDAsIDAsIDAsIDAsIDM1MiwgMCwgNzc3OCwgMCwgMCwgNTM2LCAzNTAsIDAsIDAsIDAsIDAsIAorICAgIDc3ODYsIDAsIDAsIDAsIDAsIDM1NiwgMCwgNzc4OCwgMCwgMCwgNTM4LCAzNTQsIDAsIDc3OTIsIDAsIDAsIDc3OTAsIDAsIAorICAgIDIxNywgMjE4LCAyMTksIDM2MCwgMzYyLCAzNjQsIDAsIDIyMCwgNzkxMCwgMzY2LCAzNjgsIDQ2NywgNTMyLCA1MzQsIDAsIAorICAgIDAsIDQzMSwgNzkwOCwgNzc5NCwgMCwgMCwgMCwgMzcwLCA3Nzk4LCAwLCA3Nzk2LCAwLCAwLCAwLCAwLCAwLCA3ODA0LCAwLCAKKyAgICA3ODA2LCAwLCAwLCA3ODA4LCA3ODEwLCAzNzIsIDAsIDAsIDAsIDc4MTQsIDc4MTIsIDAsIDc4MTYsIDAsIDAsIDAsIDAsIAorICAgIDc4MTgsIDc4MjAsIDc5MjIsIDIyMSwgMzc0LCA3OTI4LCA1NjIsIDAsIDc4MjIsIDM3NiwgNzkyNiwgMCwgMCwgMCwgMCwgCisgICAgNzkyNCwgMCwgMCwgMCwgMzc3LCA3ODI0LCAwLCAwLCAwLCAzNzksIDAsIDAsIDAsIDAsIDM4MSwgMCwgNzgyNiwgMCwgMCwgCisgICAgMCwgMCwgNzgyOCwgMCwgMjI0LCAyMjUsIDIyNiwgMjI3LCAyNTcsIDI1OSwgNTUxLCAyMjgsIDc4NDMsIDIyOSwgMCwgNDYyLCAKKyAgICA1MTMsIDUxNSwgMCwgMCwgMCwgNzg0MSwgMCwgNzY4MSwgMCwgMCwgMjYxLCAwLCAwLCAwLCA3NjgzLCAwLCAwLCA3Njg1LCAKKyAgICAwLCAwLCAwLCAwLCA3Njg3LCAwLCAwLCAyNjMsIDI2NSwgMCwgMCwgMCwgMjY3LCAwLCAwLCAwLCAwLCAyNjksIDAsIDIzMSwgCisgICAgMCwgMCwgMCwgMCwgNzY5MSwgMCwgMCwgMCwgMCwgMjcxLCAwLCA3NjkzLCAwLCAwLCAwLCA3Njk3LCAwLCA3Njk5LCAwLCAwLCAKKyAgICA3Njk1LCAwLCAyMzIsIDIzMywgMjM0LCA3ODY5LCAyNzUsIDI3NywgMjc5LCAyMzUsIDc4NjcsIDAsIDAsIDI4MywgNTE3LCAKKyAgICA1MTksIDAsIDAsIDAsIDc4NjUsIDAsIDAsIDAsIDU1MywgMjgxLCA3NzA1LCAwLCA3NzA3LCAwLCAwLCAwLCAwLCA3NzExLCAKKyAgICAwLCAwLCA1MDEsIDI4NSwgMCwgNzcxMywgMjg3LCAyODksIDAsIDAsIDAsIDAsIDQ4NywgMCwgMjkxLCAwLCAwLCAwLCAwLCAKKyAgICAyOTMsIDAsIDAsIDAsIDc3MTUsIDc3MTksIDAsIDAsIDAsIDU0MywgMCwgNzcxNywgMCwgMCwgMCwgNzcyMSwgMCwgMCwgCisgICAgNzcyMywgMCwgNzgzMCwgMCwgMjM2LCAyMzcsIDIzOCwgMjk3LCAyOTksIDMwMSwgMCwgMjM5LCA3ODgxLCAwLCAwLCA0NjQsIAorICAgIDUyMSwgNTIzLCAwLCAwLCAwLCA3ODgzLCAwLCAwLCAwLCAwLCAzMDMsIDAsIDAsIDc3MjUsIDAsIDAsIDAsIDAsIDMwOSwgMCwgCisgICAgMCwgMCwgMCwgNDk2LCAwLCA3NzI5LCAwLCAwLCAwLCAwLCAwLCA0ODksIDAsIDc3MzEsIDAsIDAsIDAsIDMxMSwgMCwgMCwgCisgICAgMCwgMCwgNzczMywgMCwgMCwgMzE0LCAwLCAwLCAwLCAwLCAwLCAzMTgsIDAsIDc3MzUsIDAsIDAsIDAsIDMxNiwgMCwgCisgICAgNzc0MSwgMCwgMCwgNzczOSwgMCwgMCwgNzc0MywgMCwgMCwgMCwgMCwgNzc0NSwgMCwgMCwgNzc0NywgMCwgMCwgNTA1LCAKKyAgICAzMjQsIDAsIDI0MSwgMCwgMCwgNzc0OSwgMCwgMCwgMCwgMCwgMzI4LCAwLCA3NzUxLCAwLCAwLCAwLCAzMjYsIDAsIDc3NTUsIAorICAgIDAsIDAsIDc3NTMsIDAsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMzMzLCAzMzUsIDU1OSwgMjQ2LCA3ODg3LCAwLCAzMzcsIDQ2NiwgCisgICAgNTI1LCA1MjcsIDAsIDAsIDQxNywgNzg4NSwgMCwgMCwgMCwgMCwgNDkxLCAwLCAwLCA3NzY1LCAwLCAwLCAwLCAwLCA3NzY3LCAKKyAgICAwLCAwLCAzNDEsIDAsIDAsIDAsIDAsIDc3NjksIDAsIDAsIDAsIDAsIDM0NSwgNTI5LCA1MzEsIDAsIDAsIDAsIDc3NzEsIDAsIAorICAgIDAsIDAsIDM0MywgMCwgMCwgMCwgMCwgNzc3NSwgMCwgMCwgMzQ3LCAzNDksIDAsIDAsIDAsIDc3NzcsIDAsIDAsIDAsIDAsIAorICAgIDM1MywgMCwgNzc3OSwgMCwgMCwgNTM3LCAzNTEsIDAsIDAsIDAsIDAsIDc3ODcsIDc4MzEsIDAsIDAsIDAsIDM1NywgMCwgCisgICAgNzc4OSwgMCwgMCwgNTM5LCAzNTUsIDAsIDc3OTMsIDAsIDAsIDc3OTEsIDAsIDI0OSwgMjUwLCAyNTEsIDM2MSwgMzYzLCAKKyAgICAzNjUsIDAsIDI1MiwgNzkxMSwgMzY3LCAzNjksIDQ2OCwgNTMzLCA1MzUsIDAsIDAsIDQzMiwgNzkwOSwgNzc5NSwgMCwgMCwgCisgICAgMCwgMzcxLCA3Nzk5LCAwLCA3Nzk3LCAwLCAwLCAwLCAwLCAwLCA3ODA1LCAwLCA3ODA3LCAwLCAwLCA3ODA5LCA3ODExLCAKKyAgICAzNzMsIDAsIDAsIDAsIDc4MTUsIDc4MTMsIDAsIDc4MzIsIDAsIDAsIDAsIDc4MTcsIDAsIDAsIDAsIDAsIDc4MTksIDc4MjEsIAorICAgIDc5MjMsIDI1MywgMzc1LCA3OTI5LCA1NjMsIDAsIDc4MjMsIDI1NSwgNzkyNywgNzgzMywgMCwgMCwgMCwgNzkyNSwgMCwgMCwgCisgICAgMCwgMzc4LCA3ODI1LCAwLCAwLCAwLCAzODAsIDAsIDAsIDAsIDAsIDM4MiwgMCwgNzgyNywgMCwgMCwgMCwgMCwgNzgyOSwgCisgICAgMCwgODE3MywgOTAxLCAwLCAwLCA4MTI5LCAwLCAwLCAwLCA3ODQ2LCA3ODQ0LCAwLCA3ODUwLCA3ODQ4LCAwLCAwLCAwLCAKKyAgICA0NzgsIDAsIDAsIDAsIDAsIDUwNiwgMCwgMCwgMCwgNTA4LCAwLCAwLCA0ODIsIDAsIDAsIDAsIDAsIDc2ODgsIDAsIDAsIAorICAgIDc4NzIsIDc4NzAsIDAsIDc4NzYsIDc4NzQsIDAsIDAsIDAsIDAsIDc3MjYsIDAsIDAsIDc4OTAsIDc4ODgsIDAsIDc4OTQsIAorICAgIDc4OTIsIDAsIDAsIDAsIDAsIDc3NTYsIDAsIDAsIDU1NiwgMCwgMCwgNzc1OCwgNTU0LCAwLCAwLCAwLCAwLCA1MTAsIDAsIAorICAgIDAsIDQ3NSwgNDcxLCAwLCAwLCA0NjksIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNzg0NywgNzg0NSwgMCwgNzg1MSwgNzg0OSwgCisgICAgMCwgMCwgMCwgNDc5LCAwLCAwLCAwLCAwLCA1MDcsIDAsIDAsIDAsIDUwOSwgMCwgMCwgNDgzLCAwLCAwLCAwLCAwLCA3Njg5LCAKKyAgICAwLCAwLCA3ODczLCA3ODcxLCAwLCA3ODc3LCA3ODc1LCAwLCAwLCAwLCAwLCA3NzI3LCAwLCAwLCA3ODkxLCA3ODg5LCAwLCAKKyAgICA3ODk1LCA3ODkzLCAwLCAwLCAwLCAwLCA3NzU3LCAwLCAwLCA1NTcsIDAsIDAsIDc3NTksIDU1NSwgMCwgMCwgMCwgMCwgCisgICAgNTExLCAwLCAwLCA0NzYsIDQ3MiwgMCwgMCwgNDcwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzQsIDc4NTYsIDc4NTQsIDAsIAorICAgIDc4NjAsIDc4NTgsIDAsIDAsIDAsIDc4NTcsIDc4NTUsIDAsIDc4NjEsIDc4NTksIDAsIDAsIDAsIDc3MDAsIDc3MDIsIDAsIAorICAgIDAsIDc3MDEsIDc3MDMsIDAsIDAsIDc3NjAsIDc3NjIsIDAsIDAsIDc3NjEsIDc3NjMsIDAsIDAsIDAsIDAsIDc3ODAsIDAsIAorICAgIDAsIDAsIDc3ODEsIDAsIDAsIDAsIDc3ODIsIDAsIDAsIDAsIDc3ODMsIDAsIDAsIDc4MDAsIDAsIDAsIDAsIDc4MDEsIDAsIAorICAgIDAsIDAsIDAsIDAsIDc4MDIsIDAsIDAsIDAsIDc4MDMsIDAsIDAsIDc4MzUsIDAsIDc5MDAsIDc4OTgsIDAsIDc5MDQsIAorICAgIDc5MDIsIDAsIDAsIDAsIDAsIDc5MDYsIDAsIDAsIDc5MDEsIDc4OTksIDAsIDc5MDUsIDc5MDMsIDAsIDAsIDAsIDAsIAorICAgIDc5MDcsIDAsIDAsIDc5MTQsIDc5MTIsIDAsIDc5MTgsIDc5MTYsIDAsIDAsIDAsIDAsIDc5MjAsIDAsIDAsIDc5MTUsIAorICAgIDc5MTMsIDAsIDc5MTksIDc5MTcsIDAsIDAsIDAsIDAsIDc5MjEsIDAsIDAsIDAsIDAsIDAsIDQ5NCwgNDkyLCAwLCAwLCAwLCAKKyAgICA0OTMsIDAsIDAsIDAsIDQ4MCwgMCwgMCwgMCwgNDgxLCAwLCAwLCAwLCAwLCA3NzA4LCAwLCAwLCAwLCA3NzA5LCAwLCAwLCAKKyAgICA1NjAsIDAsIDAsIDAsIDU2MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDk1LCA4MTIyLCA5MDIsIDAsIDAsIDgxMjEsIDgxMjAsIDAsIAorICAgIDAsIDAsIDAsIDc5NDQsIDc5NDUsIDAsIDgxMjQsIDAsIDAsIDgxMzYsIDkwNCwgMCwgMCwgMCwgMCwgNzk2MCwgNzk2MSwgCisgICAgODEzOCwgOTA1LCAwLCAwLCAwLCAwLCA3OTc2LCA3OTc3LCAwLCA4MTQwLCAwLCAwLCA4MTU0LCA5MDYsIDAsIDAsIDgxNTMsIAorICAgIDgxNTIsIDAsIDkzOCwgMCwgMCwgNzk5MiwgNzk5MywgODE4NCwgOTA4LCAwLCAwLCAwLCAwLCA4MDA4LCA4MDA5LCAwLCAwLCAKKyAgICAwLCA4MTcyLCA4MTcwLCA5MTAsIDAsIDAsIDgxNjksIDgxNjgsIDAsIDkzOSwgMCwgMCwgMCwgODAyNSwgODE4NiwgOTExLCAKKyAgICAwLCAwLCAwLCAwLCA4MDQwLCA4MDQxLCAwLCA4MTg4LCAwLCAwLCAwLCA4MTE2LCAwLCAwLCAwLCA4MTMyLCAwLCAwLCAKKyAgICA4MDQ4LCA5NDAsIDAsIDAsIDgxMTMsIDgxMTIsIDAsIDAsIDAsIDAsIDc5MzYsIDc5MzcsIDgxMTgsIDgxMTUsIDAsIDAsIAorICAgIDgwNTAsIDk0MSwgMCwgMCwgMCwgMCwgNzk1MiwgNzk1MywgODA1MiwgOTQyLCAwLCAwLCAwLCAwLCA3OTY4LCA3OTY5LCAKKyAgICA4MTM0LCA4MTMxLCAwLCAwLCA4MDU0LCA5NDMsIDAsIDAsIDgxNDUsIDgxNDQsIDAsIDk3MCwgMCwgMCwgNzk4NCwgNzk4NSwgCisgICAgODE1MCwgMCwgMCwgMCwgODA1NiwgOTcyLCAwLCAwLCAwLCAwLCA4MDAwLCA4MDAxLCAwLCAwLCA4MTY0LCA4MTY1LCA4MDU4LCAKKyAgICA5NzMsIDAsIDAsIDgxNjEsIDgxNjAsIDAsIDk3MSwgMCwgMCwgODAxNiwgODAxNywgODE2NiwgMCwgMCwgMCwgODA2MCwgCisgICAgOTc0LCAwLCAwLCAwLCAwLCA4MDMyLCA4MDMzLCA4MTgyLCA4MTc5LCAwLCAwLCA4MTQ2LCA5MTIsIDAsIDAsIDgxNTEsIDAsIAorICAgIDAsIDAsIDgxNjIsIDk0NCwgMCwgMCwgODE2NywgMCwgMCwgMCwgMCwgODE4MCwgMCwgMCwgMCwgOTc5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5ODAsIDAsIDAsIDAsIDEwMzEsIDAsIDEyMzIsIDAsIDEyMzQsIDAsIDEwMjcsIDAsIDAsIDEwMjQsIDAsIDAsIDAsIDAsIAorICAgIDEyMzgsIDAsIDEwMjUsIDAsIDEyMTcsIDAsIDEyNDQsIDAsIDAsIDAsIDEyNDYsIDEwMzcsIDAsIDAsIDAsIDEyNTAsIAorICAgIDEwNDksIDAsIDEyNTIsIDAsIDEwMzYsIDAsIDAsIDAsIDAsIDAsIDEyNTQsIDEyNjIsIDEwMzgsIDAsIDEyNjQsIDAsIDAsIAorICAgIDEyNjYsIDAsIDAsIDAsIDAsIDEyNjgsIDAsIDAsIDAsIDEyNzIsIDAsIDAsIDAsIDEyNjAsIDAsIDEyMzMsIDAsIDEyMzUsIAorICAgIDAsIDExMDcsIDAsIDAsIDExMDQsIDAsIDAsIDAsIDAsIDEyMzksIDAsIDExMDUsIDAsIDEyMTgsIDAsIDEyNDUsIDAsIDAsIAorICAgIDAsIDEyNDcsIDExMTcsIDAsIDAsIDAsIDEyNTEsIDEwODEsIDAsIDEyNTMsIDAsIDExMTYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNTUsIDEyNjMsIDExMTgsIDAsIDEyNjUsIDAsIDAsIDEyNjcsIDAsIDAsIDAsIDAsIDEyNjksIDAsIDAsIDAsIDEyNzMsIAorICAgIDAsIDAsIDAsIDEyNjEsIDAsIDAsIDAsIDExMTEsIDExNDIsIDAsIDAsIDAsIDExNDMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDIsIDAsIDAsIDAsIDEyNDMsIDAsIDAsIDAsIDEyNTgsIDAsIDAsIDAsIDEyNTksIDAsIDAsIDE1NzAsIDE1NzEsIAorICAgIDE1NzMsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzIsIDAsIDAsIDAsIDE1NzQsIDAsIDAsIDAsIDE3MzAsIDAsIDAsIDAsIAorICAgIDE3NDcsIDAsIDAsIDAsIDE3MjgsIDAsIDIzNDUsIDAsIDAsIDAsIDIzNTMsIDAsIDAsIDAsIDIzNTYsIDAsIDAsIDAsIDAsIAorICAgIDI1MDcsIDI1MDgsIDI4OTEsIDI4ODgsIDI4OTIsIDAsIDI5NjQsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTgsIDMwMjAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDMwMTksIDAsIDMxNDQsIDAsIDAsIDAsIDAsIDAsIDMyNjQsIDAsIDAsIDMyNzQsIDMyNzEsIAorICAgIDMyNzIsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNzUsIDAsIDM0MDIsIDM0MDQsIDAsIDAsIDM0MDMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDM1NDYsIDM1NDgsIDM1NTAsIDAsIDAsIDAsIDAsIDAsIDM1NDksIDAsIDAsIDQxMzQsIDAsIDAsIDAsIDAsIDY5MTgsIDAsIAorICAgIDAsIDAsIDY5MjAsIDAsIDAsIDAsIDY5MjIsIDAsIDAsIDAsIDY5MjQsIDAsIDAsIDAsIDY5MjYsIDAsIDAsIDAsIDY5MzAsIAorICAgIDAsIDAsIDAsIDY5NzEsIDAsIDAsIDAsIDY5NzMsIDAsIDAsIDAsIDY5NzYsIDAsIDAsIDAsIDY5NzcsIDAsIDAsIDAsIAorICAgIDY5NzksIDc3MzYsIDAsIDAsIDAsIDc3MzcsIDAsIDAsIDAsIDc3NzIsIDAsIDAsIDAsIDc3NzMsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc3ODQsIDAsIDAsIDAsIDc3ODUsIDAsIDAsIDAsIDc4NTIsIDAsIDAsIDc4NjIsIDAsIDAsIDAsIDAsIDc4NTMsIDAsIDAsIAorICAgIDc4NjMsIDAsIDAsIDAsIDAsIDc4NzgsIDAsIDAsIDAsIDc4NzksIDAsIDAsIDAsIDc4OTYsIDAsIDAsIDAsIDc4OTcsIDAsIAorICAgIDc5MzgsIDc5NDAsIDAsIDAsIDc5NDIsIDgwNjQsIDAsIDAsIDc5MzksIDc5NDEsIDAsIDAsIDc5NDMsIDgwNjUsIDAsIDAsIAorICAgIDAsIDgwNjYsIDAsIDAsIDAsIDgwNjcsIDAsIDAsIDAsIDgwNjgsIDAsIDAsIDAsIDgwNjksIDAsIDAsIDAsIDgwNzAsIDAsIAorICAgIDAsIDAsIDgwNzEsIDAsIDAsIDc5NDYsIDc5NDgsIDAsIDAsIDc5NTAsIDgwNzIsIDAsIDAsIDc5NDcsIDc5NDksIDAsIDAsIAorICAgIDc5NTEsIDgwNzMsIDAsIDAsIDAsIDgwNzQsIDAsIDAsIDAsIDgwNzUsIDAsIDAsIDAsIDgwNzYsIDAsIDAsIDAsIDgwNzcsIAorICAgIDAsIDAsIDAsIDgwNzgsIDAsIDAsIDAsIDgwNzksIDAsIDAsIDc5NTQsIDc5NTYsIDAsIDAsIDc5NTUsIDc5NTcsIDAsIDAsIAorICAgIDc5NjIsIDc5NjQsIDAsIDAsIDc5NjMsIDc5NjUsIDAsIDAsIDc5NzAsIDc5NzIsIDAsIDAsIDc5NzQsIDgwODAsIDAsIDAsIAorICAgIDc5NzEsIDc5NzMsIDAsIDAsIDc5NzUsIDgwODEsIDAsIDAsIDAsIDgwODIsIDAsIDAsIDAsIDgwODMsIDAsIDAsIDAsIAorICAgIDgwODQsIDAsIDAsIDAsIDgwODUsIDAsIDAsIDAsIDgwODYsIDAsIDAsIDAsIDgwODcsIDAsIDAsIDc5NzgsIDc5ODAsIDAsIAorICAgIDAsIDc5ODIsIDgwODgsIDAsIDAsIDc5NzksIDc5ODEsIDAsIDAsIDc5ODMsIDgwODksIDAsIDAsIDAsIDgwOTAsIDAsIDAsIAorICAgIDAsIDgwOTEsIDAsIDAsIDAsIDgwOTIsIDAsIDAsIDAsIDgwOTMsIDAsIDAsIDAsIDgwOTQsIDAsIDAsIDAsIDgwOTUsIDAsIAorICAgIDAsIDc5ODYsIDc5ODgsIDAsIDAsIDc5OTAsIDAsIDAsIDAsIDc5ODcsIDc5ODksIDAsIDAsIDc5OTEsIDAsIDAsIDAsIAorICAgIDc5OTQsIDc5OTYsIDAsIDAsIDc5OTgsIDAsIDAsIDAsIDc5OTUsIDc5OTcsIDAsIDAsIDc5OTksIDAsIDAsIDAsIDgwMDIsIAorICAgIDgwMDQsIDAsIDAsIDgwMDMsIDgwMDUsIDAsIDAsIDgwMTAsIDgwMTIsIDAsIDAsIDgwMTEsIDgwMTMsIDAsIDAsIDgwMTgsIAorICAgIDgwMjAsIDAsIDAsIDgwMjIsIDAsIDAsIDAsIDgwMTksIDgwMjEsIDAsIDAsIDgwMjMsIDAsIDAsIDAsIDgwMjcsIDgwMjksIAorICAgIDAsIDAsIDgwMzEsIDAsIDAsIDAsIDgwMzQsIDgwMzYsIDAsIDAsIDgwMzgsIDgwOTYsIDAsIDAsIDgwMzUsIDgwMzcsIDAsIAorICAgIDAsIDgwMzksIDgwOTcsIDAsIDAsIDAsIDgwOTgsIDAsIDAsIDAsIDgwOTksIDAsIDAsIDAsIDgxMDAsIDAsIDAsIDAsIAorICAgIDgxMDEsIDAsIDAsIDAsIDgxMDIsIDAsIDAsIDAsIDgxMDMsIDAsIDAsIDgwNDIsIDgwNDQsIDAsIDAsIDgwNDYsIDgxMDQsIAorICAgIDAsIDAsIDgwNDMsIDgwNDUsIDAsIDAsIDgwNDcsIDgxMDUsIDAsIDAsIDAsIDgxMDYsIDAsIDAsIDAsIDgxMDcsIDAsIDAsIAorICAgIDAsIDgxMDgsIDAsIDAsIDAsIDgxMDksIDAsIDAsIDAsIDgxMTAsIDAsIDAsIDAsIDgxMTEsIDAsIDAsIDAsIDgxMTQsIDAsIAorICAgIDAsIDAsIDgxMzAsIDAsIDAsIDAsIDgxNzgsIDAsIDAsIDAsIDgxMTksIDAsIDAsIDgxNDEsIDgxNDIsIDAsIDAsIDgxNDMsIAorICAgIDAsIDAsIDAsIDAsIDgxMzUsIDAsIDAsIDAsIDgxODMsIDAsIDAsIDgxNTcsIDgxNTgsIDAsIDAsIDgxNTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDg2MDIsIDAsIDAsIDAsIDg2MDMsIDAsIDAsIDAsIDg2MjIsIDAsIDAsIDAsIDg2NTMsIDAsIDAsIDAsIAorICAgIDg2NTUsIDAsIDAsIDAsIDg2NTQsIDAsIDAsIDAsIDg3MDgsIDAsIDAsIDAsIDg3MTMsIDAsIDAsIDAsIDg3MTYsIDAsIDAsIAorICAgIDAsIDg3NDAsIDAsIDAsIDAsIDg3NDIsIDAsIDAsIDAsIDg3NjksIDAsIDAsIDAsIDg3NzIsIDAsIDAsIDAsIDg3NzUsIDAsIAorICAgIDAsIDAsIDg3NzcsIDAsIDAsIDAsIDg4MTMsIDAsIDAsIDAsIDg4MDIsIDAsIDAsIDAsIDg4MTYsIDAsIDAsIDAsIDg4MTcsIAorICAgIDAsIDAsIDAsIDg4MjAsIDAsIDAsIDAsIDg4MjEsIDAsIDAsIDAsIDg4MjQsIDAsIDAsIDAsIDg4MjUsIDAsIDAsIDAsIAorICAgIDg4MzIsIDAsIDAsIDAsIDg4MzMsIDAsIDAsIDAsIDg5MjgsIDAsIDAsIDAsIDg5MjksIDAsIDAsIDAsIDg4MzYsIDAsIDAsIAorICAgIDAsIDg4MzcsIDAsIDAsIDAsIDg4NDAsIDAsIDAsIDAsIDg4NDEsIDAsIDAsIDAsIDg5MzAsIDAsIDAsIDAsIDg5MzEsIDAsIAorICAgIDAsIDAsIDg4NzYsIDAsIDAsIDAsIDg4NzcsIDAsIDAsIDAsIDg4NzgsIDAsIDAsIDAsIDg4NzksIDAsIDAsIDAsIDg5MzgsIAorICAgIDAsIDAsIDAsIDg5MzksIDAsIDAsIDAsIDg5NDAsIDAsIDAsIDAsIDg5NDEsIDEyNDM2LCAwLCAwLCAwLCAxMjM2NCwgMCwgMCwgCisgICAgMCwgMTIzNjYsIDAsIDAsIDAsIDEyMzY4LCAwLCAwLCAwLCAxMjM3MCwgMCwgMCwgMCwgMTIzNzIsIDAsIDAsIDAsIDEyMzc0LCAKKyAgICAwLCAwLCAwLCAxMjM3NiwgMCwgMCwgMCwgMTIzNzgsIDAsIDAsIDAsIDEyMzgwLCAwLCAwLCAwLCAxMjM4MiwgMCwgMCwgMCwgCisgICAgMTIzODQsIDAsIDAsIDAsIDEyMzg2LCAwLCAwLCAwLCAxMjM4OSwgMCwgMCwgMCwgMTIzOTEsIDAsIDAsIDAsIDEyMzkzLCAwLCAKKyAgICAwLCAwLCAxMjQwMCwgMTI0MDEsIDAsIDAsIDEyNDAzLCAxMjQwNCwgMCwgMCwgMTI0MDYsIDEyNDA3LCAwLCAwLCAxMjQwOSwgCisgICAgMTI0MTAsIDAsIDAsIDEyNDEyLCAxMjQxMywgMCwgMCwgMTI0NDYsIDAsIDAsIDAsIDEyNTMyLCAwLCAwLCAwLCAxMjQ2MCwgCisgICAgMCwgMCwgMCwgMTI0NjIsIDAsIDAsIDAsIDEyNDY0LCAwLCAwLCAwLCAxMjQ2NiwgMCwgMCwgMCwgMTI0NjgsIDAsIDAsIDAsIAorICAgIDEyNDcwLCAwLCAwLCAwLCAxMjQ3MiwgMCwgMCwgMCwgMTI0NzQsIDAsIDAsIDAsIDEyNDc2LCAwLCAwLCAwLCAxMjQ3OCwgMCwgCisgICAgMCwgMCwgMTI0ODAsIDAsIDAsIDAsIDEyNDgyLCAwLCAwLCAwLCAxMjQ4NSwgMCwgMCwgMCwgMTI0ODcsIDAsIDAsIDAsIAorICAgIDEyNDg5LCAwLCAwLCAwLCAxMjQ5NiwgMTI0OTcsIDAsIDAsIDEyNDk5LCAxMjUwMCwgMCwgMCwgMTI1MDIsIDEyNTAzLCAwLCAKKyAgICAwLCAxMjUwNSwgMTI1MDYsIDAsIDAsIDEyNTA4LCAxMjUwOSwgMCwgMCwgMTI1MzUsIDAsIDAsIDAsIDEyNTM2LCAwLCAwLCAKKyAgICAwLCAxMjUzNywgMCwgMCwgMCwgMTI1MzgsIDAsIDAsIDAsIDEyNTQyLCAwLCAwLCAwLCAwLCAwLCA2OTc4NiwgMCwgMCwgMCwgCisgICAgNjk3ODgsIDAsIDAsIDAsIDY5ODAzLCAwLCAwLCAwLCAwLCA2OTkzNCwgMCwgMCwgMCwgNjk5MzUsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKIAl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAogCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKIAl7IDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAogCXsgMTksIDIxLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDIsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDMsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDEsIDI1NSwgMCB9LAogCXsgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjYsIDI1NSwgMjU1LCAwIH0sCiAJeyA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCkBAIC01MDU4LDcgKzUxNzcsNyBAQAogCXsgMjU1LCA3LCA3LCAyNTUsIDAgfSwKIAl7IDI1NSwgNywgOCwgMjU1LCAwIH0sCiAJeyAyNTUsIDcsIDksIDI1NSwgMCB9LAotCXsgMjU1LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMSwgNSwgMjU1LCAyNTUsIDAgfSwKIAl7IDE1LCAxNCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMTAsIDI1NSwgMjU1LCAwIH0sCiAJeyAxOCwgMjU1LCAyNTUsIDI1NSwgMCB9LApAQCAtNTA3MCwxMiArNTE4OSwxMiBAQAogCXsgMjU1LCAyNTUsIDcsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDgsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDksIDI1NSwgMCB9LAotCXsgMjU1LCAzMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDE5LCAzMCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgOCwgMjU1LCAyNTUsIDAgfSwKIAl7IDI1NSwgMjIsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIzLCAyNTUsIDI1NSwgMCB9LAogCXsgOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDQsIDI1NSwgMjU1LCAwIH0sCiAJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAogCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LApAQCAtNTA4NCw3NCArNTIwMyw3NCBAQAogCXsgMSwgMjU1LCAyNTUsIDAsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7Ci0gICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAyLCAxNSwgMTYsIDE3LCAKLSAgICAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAyLCAyLCAyLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgCi0gICAgMzQsIDIsIDIsIDIsIDM1LCAzNiwgMiwgMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgCi0gICAgNDksIDIsIDUwLCAyLCAyLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDIsIDIsIDU2LCA1NywgNTgsIDIsIDIsIDU5LCA2MCwgNjEsIAotICAgIDYyLCA2MywgNjMsIDIsIDIsIDIsIDIsIDY0LCAyLCA2NSwgNjYsIDY3LCA2OCwgNjksIDIsIDIsIDIsIDIsIDcwLCA3MSwgCi0gICAgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDIsIDIsIDIsIDIsIDIsIDIsIDc5LCAyLCAyLCAyLCAyLCAyLCA4MCwgMiwgCisgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCisgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMiwgMiwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKKyAgICAzNiwgMiwgMiwgMiwgMzcsIDM4LCAyLCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIDUwLCAKKyAgICA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgMiwgNTgsIDU5LCA2MCwgMiwgMiwgNjEsIDYyLCA2MywgCisgICAgNjQsIDY1LCA2NSwgMiwgMiwgMiwgMiwgNjYsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgMiwgMiwgMiwgNzIsIDczLCA3NCwgCisgICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCA4MywgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODEsIDIsIDgyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4MywgCi0gICAgODQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4NiwgODcsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg0LCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIAorICAgIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODksIDkwLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg5LCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTEsIDkyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MywgNDgsIDQ4LCAKLSAgICA5NCwgOTUsIDQ4LCA5NiwgOTcsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAzLCAxMDQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEwNSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA1MCwgNTAsIAorICAgIDk3LCA5OCwgNTAsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDExMSwgMiwgMiwgMiwgMTEyLCAxMTMsIDIsIDExNCwgMTE1LCAKLSAgICAxMTYsIDExNywgMTE4LCAxMTksIDIsIDEyMCwgMTIxLCAxMjIsIDEyMywgMTI0LCAyLCAyLCAyLCAyLCAyLCAyLCAxMjUsIDIsIAotICAgIDEyNiwgMiwgMTI3LCAyLCAxMjgsIDIsIDEyOSwgMiwgMiwgMiwgMTMwLCAyLCAyLCAyLCAxMzEsIDEzMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTMzLCAyLCAxMzQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMTM1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxMDgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDIsIDIsIDIsIDExNSwgMTE2LCAyLCAxMTcsIDExOCwgCisgICAgMTE5LCAxMjAsIDEyMSwgMTIyLCAyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMiwgMiwgMiwgMiwgMiwgMiwgMTI4LCAyLCAKKyAgICAxMjksIDEzMCwgMTMxLCAyLCAxMzIsIDIsIDEzMywgMiwgMiwgMiwgMTM0LCAyLCAyLCAyLCAxMzUsIDEzNiwgMTM3LCAxMzgsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEzOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTQwLCAyLCAxNDEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKKyAgICA1MCwgMTQyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA0OCwgNDgsIDQ4LCA0OCwgMTM2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTQzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAxNDQsIDE0NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTM3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNDYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDEzOCwgMiwgMTM5LCAyLCAxNDAsIDIsIDIsIDE0MSwgMiwgMiwgMiwgMTQyLCAxNDMsIDE0NCwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTQ1LCAKLSAgICAxNDYsIDE0NywgMTQ4LCAxNDksIDIsIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTM5LCAxNTcsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE1OCwgMTU5LCA5MCwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNzksIDE2MCwgMiwgMTYxLCAxNjIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE0NywgMiwgMTQ4LCAyLCAxNDksIDIsIDIsIDE1MCwgMiwgMiwgMiwgMTUxLCAxNTIsIAorICAgIDE1MywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTU0LCAxNTUsIAorICAgIDIsIDIsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAyLCAxNjEsIDE2MiwgMTYzLCAxNjQsIDE2NSwgMTY2LCAxNjcsIDE0OCwgCisgICAgMTY4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjksIDE3MCwgOTMsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDgyLCAxNzEsIDIsIDE3MiwgMTczLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjMsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDE2NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTY1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNzQsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE3NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc2LCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjYsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNjcsIDQ4LCAxNjgsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc4LCA1MCwgMTc5LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxNjMsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC01Mzg2LDcgKzU1MDUsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDQ4LCAxNjksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCAxODAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIApAQCAtNTQ1MCw3ICs1NTY5LDcgQEAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGNoYW5nZXNfM18yXzBfZGF0YVtdID0gewpAQCAtNTQ2MCw4ICs1NTc5LDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAKKyAgICAwLCAwLCA0LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCA2LCA3LCAwLCAwLCAzLCAwLCAwLCA4LCA0LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCA0LCA1LCAwLCAwLCAwLCAwLCAwLCA2LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTU0NzAsODQ4ICs1NTkwLDkwNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAxMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAxMCwgMCwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgOSwgMCwgNywgNywgMCwgMCwgMCwgNywgNywgNywgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDEwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMiwgMTMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMSwgMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxNCwgMTUsIDE2LCAxNywgMTgsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgCisgICAgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjIsIDIzLCAKKyAgICAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwLCAzMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMxLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCA4LCAwLCAKLSAgICAwLCAzNiwgMzcsIDM4LCAzOSwgNDAsIDQxLCAxLCAxLCAwLCAwLCAwLCA4LCAzNSwgNiwgNCwgNSwgMzYsIDM3LCAzOCwgMzksIAotICAgIDQwLCA0MSwgMSwgMSwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNiwgNCwgMCwgMCwgMzcsIDM4LCAzOSwgNDAsIAorICAgIDQxLCA0MiwgMSwgMSwgMCwgMCwgMCwgNCwgMzYsIDgsIDYsIDcsIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDEsIDEsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ1LCA0NiwgMTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ1LCAKKyAgICA0NiwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCAwLCA3LCA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgMCwgCi0gICAgNywgNywgNywgNywgNywgNywgNywgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTEsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMTgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAxLCAxLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMywgMTMsIDEzLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgCisgICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDcsIDAsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDcsIDcsIDAsIDAsIDAsIDcsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDAsIAotICAgIDAsIDAsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIAotICAgIDcsIDcsIDcsIDcsIDcsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMTksIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUzLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCAwLCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICAwLCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCAwLCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCA3LCA3LCA3LCAwLCA3LCAwLCA3LCAwLCA3LCAwLCA3LCAKLSAgICA3LCA3LCAwLCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCA3LCA3LCA3LCA3LCAwLCA3LCAwLCAwLCA3LCA3LCA3LCA3LCAwLCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIAorICAgIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjMxOSwyNSArNjQ5NywyNSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjM0NiwyNCArNjUyNCwyNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCAKLSAgICA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgCi0gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiBzdGF0aWMgY29uc3QgY2hhbmdlX3JlY29yZCogZ2V0X2NoYW5nZV8zXzJfMChQeV9VQ1M0IG4pCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKaW5kZXggODgzMDU2MC4uMzgzODg4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaApAQCAtNCwzMzcgKzQsNDI4IEBACiAKIC8qIGxleGljb24gKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGxleGljb25bXSA9IHsKLSAgICA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgODcsIDczLCA4NCwgMjAwLCA4MywgNzcsIDY1LCA3NiwgMjA0LCA4MywgODksIAotICAgIDc2LCA3NiwgNjUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCAyMDYsIDY3LCA2NSwgODAsIDczLCA4NCwgNjUsIDIwNCwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDIwNiwgODksIDIwMSwgNjcsIDc0LCAyMDMsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIDY1LCAKLSAgICAyMDYsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzcsIDY1LCA4NCwgNzIsIDY5LCAKLSAgICA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4MywgODksIAotICAgIDc3LCA2NiwgNzksIDIwNCwgNzAsIDc5LCA4MiwgNzcsIDEyOCwgNjcsIDY1LCA3OCwgNjUsIDY4LCA3MywgNjUsIDIwNiwgCi0gICAgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDY3LCAyMTEsIDY2LCA2NSwgNzcsIDg1LCAyMDUsIDY4LCA3MywgNzEsIDczLCAKLSAgICAyMTIsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDY1LCA3OCwgMTk2LCA3MSwgODIsIDY5LCAKLSAgICA2OSwgMjAzLCA3NiwgNzMsIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDg0LCA3MywgNzcsIDY5LCAyMTEsIDg2LCA3OSwgODcsIDY5LCAKLSAgICAyMDQsIDcwLCA3OSwgMjEwLCA3MywgODQsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgNzMsIDc2LCA3NiwgNzMsIAorICAgIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA4NywgNzMsIDg0LCAyMDAsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDc2LCAKKyAgICAxOTcsIDgzLCA3NywgNjUsIDc2LCAyMDQsIDgzLCA3MywgNzEsIDIwNiwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgMjA0LCAKKyAgICA3NiwgNjUsIDg0LCA3MywgMjA2LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgNjUsIDgyLCA2NSwgNjYsIDczLCAxOTUsIDc3LCAKKyAgICA2NSwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzEsIDg5LCA4MCwgODQsIDczLCA2NSwgCisgICAgMjA2LCA3MiwgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCAyMDAsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCAKKyAgICA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNjcsIDg1LCA3OCwgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgMjA0LCA3MCwgNzksIDgyLCA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgCisgICAgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjgsIDczLCA3MSwgNzMsIAorICAgIDIxMiwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDg2LCA3OSwgODcsIAorICAgIDY5LCAyMDQsIDcxLCA4MiwgNjksIDY5LCAyMDMsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAxOTcsIDc3LCA4NSwgCisgICAgODMsIDczLCA2NywgNjUsIDIwNCwgNjksIDg0LCA3MiwgNzMsIDc5LCA4MCwgNzMsIDE5NSwgODQsIDczLCA3NywgNjksIAorICAgIDIxMSwgNzAsIDc5LCAyMTAsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgCiAgICAgMTk1LCA4MiwgNjUsIDY4LCA3MywgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIAotICAgIDE5OCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgODQsIDY1LCAyMDEsIDg2LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA4MywgODEsIDg1LCA2NSwgODIsIDE5NywgCi0gICAgNzYsIDY5LCA3MCwgMjEyLCA4NiwgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCAKLSAgICA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAyMDYsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDY2LCA4OSwgOTAsIAotICAgIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNjYsIDc5LCA4NiwgCi0gICAgNjksIDEyOCwgNzgsIDg1LCA3NywgNjYsIDY5LCAyMTAsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA4MywgNzMsIDcxLCAKLSAgICA3OCwgMTI4LCAxOTQsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA3NSwgNjUsIDg0LCA2NSwgNzUsIDY1LCA3OCwgMTkzLCAKLSAgICA3NSwgNjUsIDc4LCA3MSwgODgsIDIwMSwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCAyMTAsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNjUsIDEyOCwgNjgsIDc5LCAyMTIsIDc3LCA2OSwgNjksIAotICAgIDIwNSwgNzcsIDg5LCA2NSwgNzgsIDc3LCA2NSwgMjEwLCA3OSwgMTk4LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIAotICAgIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY1LCA4MiwgODIsIDc5LCA4NywgMTI4LCA4NSwgMTI4LCA3MywgNzgsIDczLCA4NCwgCi0gICAgNzMsIDY1LCAyMDQsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCAxMjgsIDg5LCA2OSwgMjAwLCA3OSwgCi0gICAgMTI4LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA3NywgNjUsIDgyLCA3NSwgMTI4LCA2NSwgNjYsIDc5LCA4NiwgMTk3LCA2NywgCi0gICAgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCAKLSAgICA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgNjUsIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgCi0gICAgMjAzLCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc2LCAxOTcsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgMTI4LCA4NCwgNzIsIDY1LCAyMDUsIAotICAgIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDgzLCA4MSwgCi0gICAgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA4MCwgNzYsIDg1LCAKLSAgICAyMTEsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIAorICAgIDE5OCwgODQsIDY1LCA3NywgNzMsIDIwNCwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgMTk2LCA2NywgNzksIDc3LCA2NiwgCisgICAgNzMsIDc4LCA3MywgNzgsIDE5OSwgODQsIDY1LCAyMDEsIDcwLCA3MywgNzgsIDY1LCAyMDQsIDg2LCA2NSwgMjAxLCA4MywgCisgICAgODEsIDg1LCA2NSwgODIsIDE5NywgNzYsIDY5LCA3MCwgMjEyLCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA4NiwgNjUsIDgyLCAKKyAgICA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCA4NCwgNjksIAorICAgIDgyLCAyMDYsIDY1LCA2NiwgNzksIDg2LCA2OSwgMTI4LCA2NiwgODksIDkwLCA2NSwgNzgsIDg0LCA3MywgNzgsIDE5NywgCisgICAgODMsIDczLCA3MSwgNzgsIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCAKKyAgICA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgODUsIDc3LCA2NiwgNjksIDIxMCwgNzUsIDY1LCA4NCwgNjUsIAorICAgIDc1LCA2NSwgNzgsIDE5MywgMTk0LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIAorICAgIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4NCwgNzMsIDY2LCA2OSwgCisgICAgODQsIDY1LCAyMDYsIDc5LCAxOTgsIDczLCA3OCwgNzMsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY5LCA2OSwgMjA1LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgODksIDY1LCA3OCwgNzcsIDY1LCAyMTAsIDc1LCA3MiwgNzcsIDY5LCAKKyAgICAyMTAsIDg1LCAxMjgsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgNzMsIDEyOCwgCisgICAgNjUsIDgyLCA4MiwgNzksIDg3LCAxMjgsIDc5LCAxMjgsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDc3LCA2NSwgODIsIDc1LCAKKyAgICAxMjgsIDg5LCA2OSwgMjAwLCA2NSwgODIsIDgyLCA3OSwgMjE1LCA2NywgNzksIDgwLCA4NCwgNzMsIDE5NSwgODAsIDcyLCAKKyAgICA2NSwgODMsIDY5LCA0NSwgMTk3LCA3NywgNzksIDc4LCA3MSwgNzksIDc2LCA3MywgNjUsIDIwNiwgNjgsIDY5LCA4NiwgNjUsIAorICAgIDc4LCA2NSwgNzEsIDY1LCA4MiwgMjAxLCA2NiwgNzYsIDY1LCA2NywgMjAzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCAKKyAgICA4NCwgNzIsIDY1LCAyMDUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA4MywgODQsIDgyLCA3OSwgNzUsIAorICAgIDY5LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDE5NiwgNjYsIDc5LCAyMTYsIDcyLCA2OSwgNjYsIDgyLCA2OSwgCisgICAgMjE1LCA3NywgNzMsIDY1LCAyMDcsIDgwLCA3NiwgODUsIDIxMSwgODIsIDczLCA3MSwgNzIsIDg0LCA4NywgNjUsIDgyLCAKKyAgICA2OCwgMjExLCA3MSwgNjksIDc5LCA4MiwgNzEsIDczLCA2NSwgMjA2LCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgCiAgICAgMjExLCA2NywgNzIsIDc5LCA4MywgNjksIDc5LCA3OCwgMTk5LCA3MiwgNjUsIDc2LCA3MCwgODcsIDczLCA2OCwgODQsIAotICAgIDIwMCwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgCi0gICAgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCAKLSAgICA0NSwgMTk2LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY1LCA3NiwgNjksIDE5OCwgNzIsIDY5LCA2NSwgODYsIDIxNywgODQsIDc5LCAxMjgsIAotICAgIDg0LCA4NywgNzksIDEyOCwgNzksIDg2LCA2OSwgMjEwLCAyMTMsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIAotICAgIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAyMTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDg3LCAyMDcsIDY4LCAKLSAgICA3OSwgODcsIDIwNiwgNzAsIDg1LCA3NiwgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIAotICAgIDE5NywgNjksIDgxLCA4NSwgNjUsIDIwNCwgNzIsIDczLCA3MSwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgCi0gICAgMTI4LCA4NCwgNjUsIDE5OSwgNjgsIDc5LCA3NywgNzMsIDc4LCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNzMsIDE5NSwgCi0gICAgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgODAsIDcyLCAKLSAgICA2NSwgODMsIDY5LCA0NSwgMTk1LCA3NiwgNjksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODQsIDcyLCA4MiwgNjksIAotICAgIDE5NywgNjYsIDY1LCA4MiwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzEsIDc2LCA2NSwgCi0gICAgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgNjksIDIxMCwgNzcsIDY5LCAKLSAgICA2OCwgNzMsIDY1LCAyMDQsIDg0LCA2OSwgNzYsIDg1LCA3MSwgMjEzLCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAyMDEsIAotICAgIDY1LCA4MiwgNzcsIDY5LCA3OCwgNzMsIDY1LCAyMDYsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDczLCA2OCwgCi0gICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjksIDY5LCAKLSAgICAyMDUsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDc5LCA4MiwgNzMsIDg5LCAxOTMsIDg3LCA2OSwgODMsIAotICAgIDg0LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA3MiwgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgODAsIDcyLCA2NSwgCi0gICAgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDc1LCA2NSwgNzgsIDc4LCA2NSwgNjgsIDE5MywgNzgsIDY5LCAKLSAgICAyMTUsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDcyLCA2NSwgMTI4LCA4NCwgNzksIDc4LCAxOTcsIDg2LCAKLSAgICA3OSwgNjcsIDY1LCA3NiwgNzMsIDE5NSwgNjcsIDcyLCA2NSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA3MSwgODUsIAotICAgIDc0LCA2NSwgODIsIDY1LCA4NCwgMjAxLCA3NiwgODUsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4NSwgCi0gICAgNzgsIDczLCAxOTUsIDgzLCA2NSwgODUsIDgyLCA2NSwgODMsIDcyLCA4NCwgODIsIDE5MywgODQsIDY5LCA4NCwgODIsIDY1LCAKLSAgICA3MSwgODIsIDY1LCAyMDUsIDY4LCA2OSwgODMsIDY5LCA4MiwgNjksIDIxMiwgODMsIDczLCA3OCwgNzIsIDY1LCA3NiwgCi0gICAgMTkzLCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCAKLSAgICA4MywgODksIDgyLCA3MywgNjUsIDE5NSwgNjgsIDc5LCA4NCwgMjExLCA3NiwgNzMsIDcxLCA3MiwgMjEyLCA4NCwgNjUsIAotICAgIDc3LCA3MywgMjA0LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzAsIDczLCA4NiwgNjksIDEyOCwgNzUsIDY1LCAxMjgsIAotICAgIDc2LCA2OSwgODAsIDY3LCA3MiwgMTkzLCA3NiwgNzksIDc4LCAxOTksIDg0LCA4NSwgODIsIDc1LCA3MywgMTk1LCA4OSwgCi0gICAgNjUsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDgzLCA4NCwgODIsIDg1LCA2NywgMjAzLCA3NywgNjUsIAotICAgIDEyOCwgODMsIDczLCA4OCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIDgwLCA2NSwgMTI4LCAKLSAgICA2NSwgODAsIDIwNCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIAotICAgIDIwNCwgODMsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgCi0gICAgNjUsIDIwNCwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY2LCAKLSAgICA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDgyLCA2NSwgMTI4LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA4MiwgMTk0LCAKLSAgICA2OCwgNjUsIDgzLCA3MywgMTkzLCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzYsIDczLCA3NywgNjYsIDIxMywgNzcsIAotICAgIDY1LCA3NSwgODMsIDg1LCA4MiwgMTkzLCA4NCwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgCi0gICAgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgCi0gICAgOTAsIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCAKLSAgICA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIAotICAgIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgCi0gICAgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgCi0gICAgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCAKLSAgICA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCAKLSAgICA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIAotICAgIDY1LCA4MiwgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgCi0gICAgODUsIDY2LCA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDgyLCA2NSwgMTI4LCA5MCwgCi0gICAgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgCi0gICAgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgOTAsIDc0LCA2OSwgMTI4LCA5MCwgCi0gICAgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCAKLSAgICA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIAotICAgIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCAKLSAgICA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIAotICAgIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgCi0gICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCAKLSAgICA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIAotICAgIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgODQsIDY5LCAxMjgsIDkwLCA3MiwgCi0gICAgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgCi0gICAgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODgsIDEyOCwgCi0gICAgOTAsIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCAKLSAgICA2NSwgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCAKLSAgICA2OSwgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCAKLSAgICA5MCwgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgCi0gICAgMTI4LCA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgCi0gICAgNzMsIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCAKLSAgICA2NSwgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCA4OCwgMTI4LCA5MCwgNjUsIAotICAgIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAxMjgsIDkwLCA2NSwgNzIsIAotICAgIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAotICAgIDcyLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTQsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OSwgNTQsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1MywgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgCi0gICAgMTI4LCA5MCwgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgCi0gICAgOTAsIDQ4LCA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCAKLSAgICA5MCwgNDgsIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCAKLSAgICA4OSwgODIsIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCAKLSAgICA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIDEyOCwgODksIDg3LCAKLSAgICA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIDY1LCAxMjgsIDg5LCAKLSAgICA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIDgxLCAxMjgsIDg5LCAKLSAgICA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgODQsIDEyOCwgODksIAotICAgIDg1LCA4MywgMTI4LCA4OSwgODUsIDIxMSwgODksIDg1LCA4MiwgODgsIDEyOCwgODksIDg1LCA4MiwgMTI4LCA4OSwgODUsIAotICAgIDgxLCAxMjgsIDg5LCA4NSwgMjA5LCA4OSwgODUsIDgwLCAxMjgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDg5LCA4NSwgNzksIAotICAgIDg0LCAxMjgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDg5LCA4NSwgNzksIDc3LCAxMjgsIDg5LCA4NSwgNzksIDEyOCwgODksIAotICAgIDg1LCA3OCwgMTI4LCA4OSwgODUsIDc3LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIAotICAgIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgCi0gICAgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCAKLSAgICA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIAotICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgCi0gICAgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgCi0gICAgODIsIDc5LCA3MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKLSAgICA4MiwgNzMsIDgzLCA3MywgMjExLCA4OSwgODAsIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgCi0gICAgMTI4LCA4OSwgNzksIDg5LCAxMjgsIDg5LCA3OSwgODgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgODUsIDc2LCAKLSAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAxMjgsIAotICAgIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgODksIAotICAgIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCA3MiwgCi0gICAgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2OSwgCi0gICAgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIDc5LCAKLSAgICA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgNjksIAotICAgIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgNzMsIAotICAgIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAxMjgsIAotICAgIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCA4OSwgCi0gICAgNzMsIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCA4MywgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDIxMSwgODksIDcwLCAKLSAgICA2OSwgMjA2LCA4OSwgNjksIDg5LCAxMjgsIDg5LCA2OSwgODcsIDEyOCwgODksIDY5LCA4NSwgODgsIDEyOCwgODksIDY5LCAKLSAgICA4NSwgODIsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg1LCA4MSwgMTI4LCA4OSwgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIAotICAgIDg1LCA2NSwgNjksIDg0LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4OSwgNjksIDg0LCA3MywgODYsIDEyOCwgCi0gICAgODksIDY5LCA4MywgODQsIDg1LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgzLCA3MywgNzksIAotICAgIDgzLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCAKLSAgICA4NSwgNzgsIDcxLCAxMjgsIDg5LCA2OSwgODIsIDg1LCAxMjgsIDg5LCA2OSwgODIsIDIxMywgODksIDY5LCA4MiwgNzMsIAotICAgIDEyOCwgODksIDY5LCA4MiwgNjUsIDIwMCwgODksIDY5LCA4MiwgMTI4LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODUsIAotICAgIDEyOCwgODksIDY5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA2OSwgNzgsIDczLCA4MywgNjksIDIwMSwgODksIDY5LCA3OCwgCi0gICAgNjUsIDgwLCAxMjgsIDg5LCA2OSwgNzgsIDEyOCwgODksIDY5LCAyMDYsIDg5LCA2OSwgNzYsIDc2LCA3OSwgODcsIDEyOCwgCi0gICAgODksIDY5LCA3NiwgNzYsIDc5LCAyMTUsIDg5LCA2OSwgNzIsIDEyOCwgODksIDY5LCA2OSwgMTI4LCA4OSwgNjksIDY1LCAKLSAgICAyMTAsIDg5LCA2OSwgNjUsIDEyOCwgODksIDY1LCA5MCwgOTAsIDEyOCwgODksIDY1LCA5MCwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA5MCwgMTI4LCA4OSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4OSwgNjUsIDg5LCAxMjgsIDg5LCA2NSwgODcsIAotICAgIDEyOCwgODksIDY1LCA4NiwgMTI4LCA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIAotICAgIDg0LCA3MiwgMTI4LCA4OSwgNjUsIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDg5LCA2NSwgODMsIDEyOCwgODksIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIAotICAgIDY1LCA4MSwgMTI4LCA4OSwgNjUsIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgNzgsIDE5OSwgODksIAotICAgIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCA3NSwgNjUsIDc4LCAKLSAgICAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIDEyOCwgODksIDY1LCAKLSAgICA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIDg5LCA2NSwgNzQsIAotICAgIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAKLSAgICA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCAKLSAgICA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIAotICAgIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgCi0gICAgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgCi0gICAgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA2NSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIDEyOCwgODksIDY1LCAKLSAgICA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIDQ4LCA0OCwgNTUsIAotICAgIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgNTIsIDEyOCwgODksIAotICAgIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDg5LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCA4OSwgODUsIDEyOCwgCi0gICAgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCA4OSwgODAsIDEyOCwgCi0gICAgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCA4OSwgNjksIDEyOCwgCi0gICAgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCA3MywgMTI4LCA4OCwgCi0gICAgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCA4NywgNjUsIDEyOCwgCi0gICAgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgCi0gICAgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCAKLSAgICA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAKLSAgICAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgCi0gICAgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCAKLSAgICA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAKLSAgICAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA3OCwgMTI4LCA4OCwgCi0gICAgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTYsIDEyOCwgCi0gICAgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU0LCAxMjgsIDg4LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgODgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgODgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCAxMjgsIAotICAgIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgCi0gICAgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgCi0gICAgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCA2NSwgNjksIDc4LCAKLSAgICAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCA4MiwgNzMsIDg0LCAKLSAgICA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIDIwMCwgODcsIAotICAgIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIDg3LCA3OSwgCi0gICAgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgMjAzLCA4NywgNzksIDgyLCAKLSAgICA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCA4MCwgMTI4LCA4NywgNzksIAotICAgIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIDQ1LCA2NywgODIsIDY5LCAKLSAgICAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIDg3LCA3OSwgNzcsIDY5LCAKLSAgICA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgODcsIDc5LCA3NywgNjUsIAotICAgIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIDEyOCwgODcsIDc5LCA3NiwgCi0gICAgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIDc5LCA4NSwgMjEyLCA4NywgCi0gICAgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgODcsIDczLCA3OCwgNzQsIDY1LCAKLSAgICAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCAKLSAgICA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgNzMsIDc4LCA2OCwgMTI4LCA4NywgNzMsIDc4LCAxOTYsIDg3LCA3MywgNzgsIAotICAgIDEyOCwgODcsIDczLCA3MSwgNzgsIDg5LCA2NSwgNzgsIDEyOCwgODcsIDczLCA3MSwgNzEsIDc2LCAyMTcsIDg3LCA3MywgCi0gICAgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCAKLSAgICA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIAotICAgIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCAKLSAgICA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgCi0gICAgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcxLCAxMjgsIDg3LCA2OSwgODgsIDEyOCwgODcsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgODcsIDY5LCA4MywgODQsIDY5LCA4MiwgMjA2LCA4NywgNjksIDgzLCA4NCwgMTI4LCA4NywgNjksIDgzLCAKLSAgICAyMTIsIDg3LCA2OSwgODAsIDEyOCwgODcsIDY5LCA3OSwgMTI4LCA4NywgNjksIDc4LCAxMjgsIDg3LCA2OSwgNzYsIDc2LCAKLSAgICAxMjgsIDg3LCA2OSwgNzMsIDcxLCA3MiwgMjEyLCA4NywgNjksIDY5LCA3OCwgMTI4LCA4NywgNjksIDY4LCA3MSwgNjksIAotICAgIDQ1LCA4NCwgNjUsIDczLCA3NiwgNjksIDE5NiwgODcsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY5LCA2NSwgCi0gICAgODIsIDIxNywgODcsIDY5LCA2NSwgODAsIDc5LCA3OCwgMTI4LCA4NywgNjcsIDEyOCwgODcsIDY2LCAxMjgsIDg3LCA2NSwgCi0gICAgODksIDEyOCwgODcsIDY1LCAyMTcsIDg3LCA2NSwgODgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDg4LCAxMjgsIDg3LCA2NSwgCi0gICAgODcsIDQ1LCA2NSwgODksIDczLCA3OCwgNDUsIDgyLCA2OSwgODMsIDcyLCAxMjgsIDg3LCA2NSwgODcsIDEyOCwgODcsIDY1LCAKLSAgICAyMTUsIDg3LCA2NSwgODYsIDIxNywgODcsIDY1LCA4NiwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODYsIDY5LCA4MywgMTI4LCAKLSAgICA4NywgNjUsIDg2LCA2OSwgMTI4LCA4NywgNjUsIDg2LCAxOTcsIDg3LCA2NSwgODUsIDEyOCwgODcsIDY1LCA4NCwgODQsIAotICAgIDc5LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgNzcsIDY5LCA3NiwgNzksIDc4LCAxMjgsIDg3LCA2NSwgODQsIDY5LCA4MiwgCi0gICAgMTI4LCA4NywgNjUsIDg0LCA2OSwgMjEwLCA4NywgNjUsIDg0LCA2NywgNzIsIDEyOCwgODcsIDY1LCA4NCwgMTI4LCA4NywgCi0gICAgNjUsIDgzLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDgzLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCAKLSAgICA2NSwgODMsIDc2LCA2NSwgMTI4LCA4NywgNjUsIDgzLCA3NiwgMTkzLCA4NywgNjUsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIAotICAgIDEyOCwgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDIwNSwgODcsIDY1LCA4MiwgNzgsIDczLCA3OCwgMTk5LCA4NywgCi0gICAgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDEyOCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4NywgNjUsIDczLCAxMjgsIDg3LCA2NSwgNjksIDc4LCAxMjgsIDg3LCA2NSwgNjksIDEyOCwgODcsIDY1LCAKLSAgICA2NSwgODYsIDg1LCAxMjgsIDg3LCA0OCwgNTAsIDUzLCAxMjgsIDg3LCA0OCwgNTAsIDUyLCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDUwLCA1MiwgMTI4LCA4NywgNDgsIDUwLCA1MSwgMTI4LCA4NywgNDgsIDUwLCA1MCwgMTI4LCA4NywgNDgsIDUwLCA0OSwgCi0gICAgMTI4LCA4NywgNDgsIDUwLCA0OCwgMTI4LCA4NywgNDgsIDQ5LCA1NywgMTI4LCA4NywgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTYsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDU0LCAxMjgsIDg3LCA0OCwgNDksIDUzLCAxMjgsIDg3LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA4NywgNDgsIDQ5LCA1MSwgMTI4LCA4NywgNDgsIDQ5LCA1MCwgMTI4LCA4NywgNDgsIDQ5LCA0OSwgCi0gICAgMTI4LCA4NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDY1LCAKLSAgICAxMjgsIDg3LCA0OCwgNDgsIDU3LCAxMjgsIDg3LCA0OCwgNDgsIDU2LCAxMjgsIDg3LCA0OCwgNDgsIDU1LCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDU0LCAxMjgsIDg3LCA0OCwgNDgsIDUzLCAxMjgsIDg3LCA0OCwgNDgsIDUyLCAxMjgsIDg3LCA0OCwgNDgsIAotICAgIDUxLCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgMTI4LCA4NywgNDgsIDQ4LCA1MCwgMTI4LCA4NywgNDgsIDQ4LCA0OSwgCi0gICAgMTI4LCA4NiwgOTAsIDc3LCA2OSwgODQsIDEyOCwgODYsIDg5LCA4OCwgMTI4LCA4NiwgODksIDg0LCAxMjgsIDg2LCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDg2LCA4OSwgODIsIDEyOCwgODYsIDg5LCA4MCwgMTI4LCA4NiwgODksIDEyOCwgODYsIDg3LCA2NSwgCi0gICAgMTI4LCA4NiwgODUsIDg4LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgCi0gICAgMTI4LCA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgCi0gICAgODMsIDEyOCwgODYsIDgyLCA2NSwgNjcsIDcyLCA4OSwgMTI4LCA4NiwgNzksIDg4LCAxMjgsIDg2LCA3OSwgODcsIDY5LCAKLSAgICA3NiwgNDUsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIDIxMCwgODYsIDc5LCA4NywgMTI4LCA4NiwgNzksIDg1LCAxMjgsIAotICAgIDg2LCA3OSwgODQsIDEyOCwgODYsIDc5LCA4MCwgMTI4LCA4NiwgNzksIDc5LCAxMjgsIDg2LCA3OSwgNzcsIDEyOCwgODYsIAotICAgIDc5LCA3NiwgODUsIDc3LCAxOTcsIDg2LCA3OSwgNzYsIDg0LCA2NSwgNzEsIDE5NywgODYsIDc5LCA3NiwgNjcsIDY1LCA3OCwgCi0gICAgNzksIDEyOCwgODYsIDc5LCA3MywgMTk2LCA4NiwgNzksIDczLCA2NywgNzMsIDc4LCA3MSwgMTI4LCA4NiwgNzksIDczLCAKLSAgICA2NywgNjksIDc2LCA2OSwgODMsIDIxMSwgODYsIDc5LCA3MywgNjcsIDY5LCAxOTYsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIAotICAgIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OCwgCi0gICAgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCAKLSAgICAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgNzMsIAotICAgIDg0LCAxMjgsIDg2LCA3MywgODMsIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgCi0gICAgNjUsIDg5LCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAKLSAgICAxOTMsIDg2LCA3MywgODIsIDczLCA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgODIsIAotICAgIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCA3OSwgCi0gICAgNzYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgNjksIAotICAgIDcxLCA2NSwgMjEwLCA4NiwgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxMjgsIDg2LCA3MywgNzYsIDc2LCA2NSwgCi0gICAgNzEsIDY5LCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCA3MywgNzgsIDE5OSwgODYsIDczLCAKLSAgICA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIAotICAgIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgCisgICAgMjAwLCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3MiwgNzksIDc5LCA3NSwgMTI4LCAyMTMsIDg0LCA4NywgCisgICAgNzksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKKyAgICA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDczLCAxOTUsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCAxMjgsIDY1LCA3NiwgNjksIDE5OCwgODQsIDg3LCAyMDcsIAorICAgIDcyLCA2OSwgNjUsIDg2LCAyMTcsIDY3LCA3OSwgNzgsIDgzLCA3OSwgNzgsIDY1LCA3OCwgMjEyLCA3OSwgODYsIDY5LCAKKyAgICAyMTAsIDY2LCA4MiwgNjUsIDcyLCA3NywgMjAxLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODUsIDIwOCwgNzYsIDc5LCAKKyAgICAyMTUsIDcyLCA2NSwgMjAwLCA3OSwgNzgsIDE5NywgNjgsIDc5LCA4NywgMjA2LCA3MiwgNzMsIDcxLCAyMDAsIDcwLCA4NSwgCisgICAgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCAKKyAgICA2NSwgMjA0LCA4NCwgNjUsIDE5OSwgNjYsIDY1LCA4MiwgMTI4LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzgsIDg1LCAKKyAgICA3NywgNjksIDgyLCA3MywgMTk1LCA3MCwgODIsIDY1LCA3NSwgODQsIDg1LCAyMTAsIDg0LCA3MiwgODIsIDY5LCAxOTcsIAorICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgMjEwLCA3NywgNjUsIDc2LCA2NSwgODksIDY1LCA3NiwgNjUsIDIwNSwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA4NCwgNzksIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCAKKyAgICA4MywgODQsIDgyLCA4NSwgNjcsIDIwMywgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDcyLCA3MywgODIsIAorICAgIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDY1LCA2NywgODUsIDg0LCA2OSwgMTI4LCA3NCwgODUsIDc4LCA3MSwgODMsIDY5LCA3OSwgCisgICAgNzgsIDE5OSwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjksIDc4LCA3MSwgNjUsIDc2LCAKKyAgICAyMDEsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgNzEsIDIxMywgODYsIDc5LCA2NywgNjUsIAorICAgIDc2LCA3MywgMTk1LCA2NSwgODIsIDc3LCA2OSwgNzgsIDczLCA2NSwgMjA2LCA3NCwgNjksIDY5LCAyMDUsIDc4LCA2OSwgCisgICAgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NCwgNjUsIDg2LCAKKyAgICA2NSwgNzgsIDY5LCA4MywgMTk3LCA3OSwgODIsIDczLCA4OSwgMTkzLCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODcsIAorICAgIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDcyLCA2NSwgMTI4LCA3MiwgCisgICAgNjUsIDc2LCAxOTgsIDc3LCA2NSwgODIsIDIwMywgNzUsIDY1LCA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3OCwgNjksIDIxNSwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTkzLCA4NCwgNzIsIDY1LCAyMDEsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAKKyAgICAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNzEsIDg1LCA3NCwgNjUsIDgyLCA2NSwgODQsIDIwMSwgNjcsIDcyLCA2NSwgMjA1LCAKKyAgICA3NiwgODUsIDE5NywgODMsIDcyLCA2NSwgODIsIDY1LCA2OCwgMTkzLCA4MywgNzMsIDc4LCA3MiwgNjUsIDc2LCAxOTMsIAorICAgIDc1LCA2NSwgMTI4LCA4MiwgODUsIDc4LCA3MywgMTk1LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAKKyAgICAxOTMsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA2OCwgNjksIDgzLCA2OSwgODIsIDY5LCAyMTIsIAorICAgIDg0LCA3MywgNzYsIDY4LCA2OSwgMTI4LCA3MSwgODUsIDgyLCA3NywgODUsIDc1LCA3MiwgMjAxLCA3NywgNjUsIDEyOCwgCisgICAgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgNjUsIDEyOCwgODksIDY1LCAKKyAgICAxMjgsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDgzLCA3MywgODgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAxMjgsIDc2LCAKKyAgICA2OSwgODAsIDY3LCA3MiwgMTkzLCA3OCwgNjUsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDc2LCA3OSwgNzgsIAorICAgIDE5OSwgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDcyLCA2NSwgNzcsIDkwLCAxOTMsIAorICAgIDcyLCA3OSwgODIsIDczLCA5MCwgNzksIDc4LCA4NCwgNjUsIDIwNCwgNzksIDgwLCA2OSwgMjA2LCA4MiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCAxMjgsIDgzLCA4NSwgNzgsIDY4LCA2NSwgNzgsIDY5LCA4MywgMTk3LCA4NiwgNzMsIDY5LCAyMTIsIDc2LCAKKyAgICA2NSwgMjA3LCA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIAorICAgIDEyOCwgOTAsIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIAorICAgIDkwLCA4OSwgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgCisgICAgODIsIDEyOCwgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgCisgICAgOTAsIDkwLCA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCAKKyAgICA3OSwgMTI4LCA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCAKKyAgICA5MCwgOTAsIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgCisgICAgMTI4LCA5MCwgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgCisgICAgNjksIDgwLCAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgCisgICAgOTAsIDkwLCA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCAKKyAgICA2NSwgMTI4LCA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIAorICAgIDEyOCwgOTAsIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgNjUsIDgyLCA2NSwgCisgICAgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgCisgICAgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgNjYsIDg1LCAKKyAgICA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgODMsIDcyLCA2NSwgMTI4LCA5MCwgODIsIDY1LCAKKyAgICAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgNzksIDEyOCwgOTAsIDc5LCAKKyAgICA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgMTkzLCA5MCwgNzQsIDY5LCAKKyAgICAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgNzMsIDc4LCA3OSwgODIsIAorICAgIDEyOCwgOTAsIDczLCA3NiwgNjgsIDY5LCAxMjgsIDkwLCA3MywgNzEsIDkwLCA2NSwgMTk5LCA5MCwgNzMsIDcxLCAxMjgsIAorICAgIDkwLCA3MywgNjgsIDE5MywgOTAsIDczLCA2NiwgMTI4LCA5MCwgNzMsIDE5NCwgOTAsIDczLCA1MSwgMTI4LCA5MCwgMjAxLCAKKyAgICA5MCwgNzIsIDg5LCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4NCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgODgsIDEyOCwgOTAsIAorICAgIDcyLCA4OSwgODIsIDEyOCwgOTAsIDcyLCA4OSwgODAsIDEyOCwgOTAsIDcyLCA4OSwgMTI4LCA5MCwgNzIsIDg3LCA2OSwgCisgICAgMTI4LCA5MCwgNzIsIDg3LCA2NSwgMTI4LCA5MCwgNzIsIDg1LCA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4NCwgMTI4LCA5MCwgCisgICAgNzIsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODIsIDEyOCwgOTAsIDcyLCA4NSwgODAsIDEyOCwgOTAsIDcyLCAKKyAgICA4NSwgNzksIDg4LCAxMjgsIDkwLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgMTI4LCA5MCwgNzIsIAorICAgIDg1LCAxMjgsIDkwLCA3MiwgNzksIDg4LCAxMjgsIDkwLCA3MiwgNzksIDg0LCAxMjgsIDkwLCA3MiwgNzksIDgwLCAxMjgsIAorICAgIDkwLCA3MiwgNzksIDc5LCAxMjgsIDkwLCA3MiwgNzksIDEyOCwgOTAsIDcyLCA3MywgODYsIDY5LCA4NCwgNjksIDEyOCwgCisgICAgOTAsIDcyLCA3MywgMTI4LCA5MCwgNzIsIDY5LCA4OCwgMTI4LCA5MCwgNzIsIDY5LCA4NCwgMTI4LCA5MCwgNzIsIDY5LCAKKyAgICA4MCwgMTI4LCA5MCwgNzIsIDY5LCA2OSwgMTI4LCA5MCwgNzIsIDY5LCAxMjgsIDkwLCA3MiwgMTk3LCA5MCwgNzIsIDY1LCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCAKKyAgICA5MCwgNzIsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIAorICAgIDEyOCwgOTAsIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIAorICAgIDc4LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgCisgICAgNjksIDUwLCAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgCisgICAgNjUsIDg5LCA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgOTAsIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgNzcsIDg4LCAxMjgsIAorICAgIDkwLCA2NSwgMjA0LCA5MCwgNjUsIDczLCA3OCwgMTI4LCA5MCwgNjUsIDczLCAyMDYsIDkwLCA2NSwgNzMsIDEyOCwgOTAsIAorICAgIDY1LCA3MiwgMTI4LCA5MCwgNjUsIDIwMCwgOTAsIDY1LCA3MSwgMTI4LCA5MCwgNjUsIDY5LCA3MCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCAKKyAgICA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIAorICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCisgICAgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCAKKyAgICA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCAKKyAgICA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIAorICAgIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIAorICAgIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIAorICAgIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIAorICAgIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIAorICAgIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCAKKyAgICA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgCisgICAgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIAorICAgIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIAorICAgIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgCisgICAgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgCisgICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCisgICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAorICAgIDg5LCA4MCwgODMsIDczLCA3NiwgNzMsIDEyOCwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzMsIDEyOCwgODksIDgwLCA3OSwgCisgICAgNzUsIDgyLCA3MywgODMsIDczLCA4MywgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDIxMSwgODksIDgwLCAKKyAgICA3OSwgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODksIDc5LCA4OSwgMTI4LCA4OSwgNzksIAorICAgIDg4LCAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgODksIDc5LCA4NSwgCisgICAgODQsIDcyLCA3MCwgODUsIDIwNCwgODksIDc5LCA4NCwgMTI4LCA4OSwgNzksIDgyLCA3MywgMTI4LCA4OSwgNzksIDgxLCAKKyAgICAxMjgsIDg5LCA3OSwgMjA5LCA4OSwgNzksIDgwLCAxMjgsIDg5LCA3OSwgNzksIDEyOCwgODksIDc5LCA3NywgNzksIDEyOCwgCisgICAgODksIDc5LCA3MSwgNzIsIDEyOCwgODksIDc5LCA2OCwgNzIsIDEyOCwgODksIDc5LCA2OCwgMTI4LCA4OSwgNzksIDE5NiwgCisgICAgODksIDc5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgNjksIAorICAgIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDc5LCAxMjgsIDg5LCA3OSwgNDUsIDczLCAxMjgsIAorICAgIDg5LCA3OSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgNjksIDEyOCwgODksIDc5LCA0NSwgNjUsIDEyOCwgCisgICAgODksIDc5LCAxMjgsIDg5LCAyMDcsIDg5LCA3MywgOTAsIDY5LCA4NCwgMTI4LCA4OSwgNzMsIDg4LCAxMjgsIDg5LCA3MywgCisgICAgODcsIDc4LCAxMjgsIDg5LCA3MywgODQsIDEyOCwgODksIDczLCA4MCwgMTI4LCA4OSwgNzMsIDc4LCA3MSwgMTI4LCA4OSwgCisgICAgNzMsIDczLCAxMjgsIDg5LCA3MywgMTk5LCA4OSwgNzMsIDY5LCA4OCwgMTI4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA4OSwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA4OSwgNzMsIDY5LCA2OSwgMTI4LCA4OSwgNzMsIDY5LCAxMjgsIDg5LCA3MywgNjgsIDY4LCAKKyAgICA3MywgODMsIDIwMCwgODksIDczLCA0NSwgODUsIDEyOCwgODksIDczLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgODMsIAorICAgIDEyOCwgODksIDcwLCA2OSwgODMsIDczLCAyMTEsIDg5LCA3MCwgNjksIDIwNiwgODksIDY5LCA4OSwgMTI4LCA4OSwgNjksIAorICAgIDg3LCAxMjgsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDg5LCA2OSwgODUsIDgyLCA2NSwgNjksIDEyOCwgODksIDY5LCA4NSwgCisgICAgODEsIDEyOCwgODksIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4OSwgNjksIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgODksIDY5LCA4NCwgNzMsIDg2LCAxMjgsIDg5LCA2OSwgODMsIDg0LCA4NSwgMTI4LCA4OSwgNjksIAorICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCAKKyAgICA3OCwgNzEsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzIsIAorICAgIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4OSwgNjksIDgyLCA4NSwgCisgICAgMTI4LCA4OSwgNjksIDgyLCAyMTMsIDg5LCA2OSwgODIsIDczLCAxMjgsIDg5LCA2OSwgODIsIDY1LCAyMDAsIDg5LCA2OSwgCisgICAgODIsIDEyOCwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDg5LCA2OSwgNzksIDQ1LCAKKyAgICA4OSwgNjUsIDEyOCwgODksIDY5LCA3OSwgNDUsIDg1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgNjksIAorICAgIDc4LCA3MywgODMsIDY5LCAyMDEsIDg5LCA2OSwgNzgsIDY1LCA4MCwgMTI4LCA4OSwgNjksIDc4LCAxMjgsIDg5LCA2OSwgCisgICAgMjA2LCA4OSwgNjksIDc2LCA3NiwgNzksIDg3LCAxMjgsIDg5LCA2OSwgNzYsIDc2LCA3OSwgMjE1LCA4OSwgNjksIDcyLCAKKyAgICAxMjgsIDg5LCA2OSwgNjksIDEyOCwgODksIDY5LCA2NSwgMjEwLCA4OSwgNjksIDY1LCAxMjgsIDg5LCA2NSwgOTAsIDkwLCAKKyAgICAxMjgsIDg5LCA2NSwgOTAsIDcyLCAxMjgsIDg5LCA2NSwgOTAsIDEyOCwgODksIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODksIDY1LCA4OSwgMTI4LCA4OSwgNjUsIDg3LCAxMjgsIDg5LCA2NSwgODYsIDEyOCwgODksIDY1LCA4NSwgMTI4LCAKKyAgICA4OSwgNjUsIDg0LCA4NCwgMTI4LCA4OSwgNjUsIDg0LCA3MywgMTI4LCA4OSwgNjUsIDg0LCA3MiwgMTI4LCA4OSwgNjUsIAorICAgIDg0LCAxMjgsIDg5LCA2NSwgODMsIDgzLCAxMjgsIDg5LCA2NSwgODMsIDcyLCAxMjgsIDg5LCA2NSwgODMsIDEyOCwgODksIAorICAgIDY1LCA4MiwgODIsIDEyOCwgODksIDY1LCA4MiwgMTI4LCA4OSwgNjUsIDIxMCwgODksIDY1LCA4MSwgMTI4LCA4OSwgNjUsIAorICAgIDgwLCAxMjgsIDg5LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDg5LCA2NSwgNzgsIDcxLCAxMjgsIDg5LCA2NSwgCisgICAgNzgsIDE5OSwgODksIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCA3OSwgNzUsIDEyOCwgODksIDY1LCA3NywgNjUsIDc1LCAKKyAgICA3NSwgNjUsIDc4LCAxMjgsIDg5LCA2NSwgNzcsIDEyOCwgODksIDY1LCA3NiwgMTI4LCA4OSwgNjUsIDc1LCA3MiwgNzIsIAorICAgIDEyOCwgODksIDY1LCA3NSwgNzIsIDEyOCwgODksIDY1LCA3NSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDc1LCAxMjgsIAorICAgIDg5LCA2NSwgNzQsIDg1LCA4MiwgODYsIDY5LCA2OCwgNzMsIDE5NSwgODksIDY1LCA3NCwgMTI4LCA4OSwgNjUsIDczLCAKKyAgICAxMjgsIDg5LCA2NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzIsIDEyOCwgODksIDY1LCA3MSwgNzgsIDEyOCwgODksIDY1LCAKKyAgICA3MSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDEyOCwgODksIDY1LCA3MCwgMjEzLCAKKyAgICA4OSwgNjUsIDcwLCAxMjgsIDg5LCA2NSwgNjksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDg5LCA2NSwgNjgsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNjgsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgMTI4LCA4OSwgNjUsIDY4LCAxMjgsIDg5LCA2NSwgCisgICAgNjcsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDcyLCAxMjgsIDg5LCA2NSwgNjYsIDEyOCwgODksIDY1LCA2NSwgODIsIDg1LCAKKyAgICAxMjgsIDg5LCA2NSwgNjUsIDczLCAxMjgsIDg5LCA2NSwgNjUsIDY4LCA3OSwgMTI4LCA4OSwgNjUsIDQ1LCA4OSwgNzksIAorICAgIDEyOCwgODksIDY1LCA0NSwgODUsIDEyOCwgODksIDY1LCA0NSwgNzksIDEyOCwgODksIDQ4LCA0OCwgNTYsIDEyOCwgODksIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODksIDQ4LCA0OCwgNTQsIDEyOCwgODksIDQ4LCA0OCwgNTMsIDEyOCwgODksIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODksIDQ4LCA0OCwgNTEsIDEyOCwgODksIDQ4LCA0OCwgNTAsIDEyOCwgODksIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDQ5LCAxMjgsIDg5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4OCwgODksIDg4LCAxMjgsIDg4LCAKKyAgICA4OSwgODUsIDEyOCwgODgsIDg5LCA4NCwgMTI4LCA4OCwgODksIDgyLCA4OCwgMTI4LCA4OCwgODksIDgyLCAxMjgsIDg4LCAKKyAgICA4OSwgODAsIDEyOCwgODgsIDg5LCA3OSwgMTI4LCA4OCwgODksIDczLCAxMjgsIDg4LCA4OSwgNjksIDY5LCAxMjgsIDg4LCAKKyAgICA4OSwgNjksIDEyOCwgODgsIDg5LCA2NSwgNjUsIDEyOCwgODgsIDg5LCA2NSwgMTI4LCA4OCwgODksIDEyOCwgODgsIDg3LCAKKyAgICA3MywgMTI4LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA4OCwgODcsIDY5LCAxMjgsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDg4LCAKKyAgICA4NywgNjUsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCAKKyAgICA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIAorICAgIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCAKKyAgICA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCAKKyAgICA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCAKKyAgICA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCAKKyAgICA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCAKKyAgICA3OCwgMTI4LCA4OCwgNjUsIDY1LCAxMjgsIDg4LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTYsIDEyOCwgODgsIDQ4LCA0OCwgNTUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDg4LCA0OCwgNDgsIDUzLCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NiwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgCisgICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDEyOCwgODgsIDQ4LCA0OCwgNTEsIDEyOCwgODgsIDQ4LCA0OCwgNTAsIDEyOCwgCisgICAgODgsIDQ4LCA0OCwgNDksIDEyOCwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgCisgICAgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgCisgICAgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAKKyAgICAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA2OSwgMTI4LCA4NywgODUsIDY1LCA2OSwgODQsIDEyOCwgODcsIDg1LCAKKyAgICA2NSwgNjksIDc4LCAxMjgsIDg3LCA4NSwgMTI4LCA4NywgODIsIDIxNywgODcsIDgyLCA3OSwgNzgsIDcxLCAxMjgsIDg3LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgODcsIDgyLCA2OSwgNzgsIDY3LCA3MiwgMTI4LCA4NywgODIsIDY5LCA2NSwgODQsIAorICAgIDIwMCwgODcsIDgyLCA2NSwgODAsIDgwLCA2OSwgMTk2LCA4NywgODIsIDY1LCA4MCwgMTI4LCA4NywgNzksIDg4LCAxMjgsIAorICAgIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgCisgICAgMTI4LCA4NywgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCAKKyAgICA4MiwgMTk2LCA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCAKKyAgICA3OSwgNzksIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgCisgICAgMTI4LCA4NywgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgCisgICAgNzcsIDY1LCA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCAKKyAgICA3NiwgNzksIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCAKKyAgICA4NywgNzMsIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA3OCwgODQsIAorICAgIDY5LCA4MiwgMTI4LCA4NywgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDg3LCA3MywgNzgsIDc0LCA2NSwgMTI4LCA4NywgCisgICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODcsIDczLCA3OCwgNjksIDEyOCwgODcsIDczLCA3OCwgMTk3LCA4NywgNzMsIDc4LCAKKyAgICA2OCwgODUsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCA4NywgNzMsIDc4LCAxMjgsIDg3LCAKKyAgICA3MywgNzEsIDc4LCA4OSwgNjUsIDc4LCAxMjgsIDg3LCA3MywgNzEsIDcxLCA3NiwgMjE3LCA4NywgNzMsIDY4LCA2OSwgNDUsIAorICAgIDcyLCA2OSwgNjUsIDY4LCA2OSwgMTk2LCA4NywgNzMsIDY4LCAxOTcsIDg3LCA3MywgNjUsIDc4LCA3MSwgODcsIDY1LCA2NSwgCisgICAgNzUsIDEyOCwgODcsIDczLCA2NSwgNzgsIDcxLCAxMjgsIDg3LCA3MiwgNzksIDc2LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAKKyAgICA2OSwgNDUsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCA2OSwgMTk2LCA4NywgNzIsIDczLCA4NCwgNjksIDEyOCwgODcsIAorICAgIDcyLCA2OSwgNjksIDc2LCA2OSwgMTk2LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY3LCA3MiwgNjUsIDczLCAyMTAsIDg3LCA3MiwgCisgICAgNjksIDY5LCA3NiwgMTI4LCA4NywgNzIsIDY5LCA2OSwgMjA0LCA4NywgNzIsIDY5LCA2NSwgODQsIDEyOCwgODcsIDcyLCAKKyAgICA2NSwgNzYsIDY5LCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCAKKyAgICA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIAorICAgIDgwLCAxMjgsIDg3LCA2OSwgNzksIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIAorICAgIDczLCA3MSwgNzIsIDIxMiwgODcsIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIAorICAgIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAxMjgsIDg3LCA2NSwgMjE3LCA4NywgNjUsIDg4LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA4OCwgMTI4LCA4NywgNjUsIDg3LCA0NSwgNjUsIDg5LCA3MywgNzgsIDQ1LCA4MiwgNjksIDgzLCA3MiwgCisgICAgMTI4LCA4NywgNjUsIDg3LCAxMjgsIDg3LCA2NSwgMjE1LCA4NywgNjUsIDg2LCAyMTcsIDg3LCA2NSwgODYsIDczLCA3OCwgCisgICAgMTk5LCA4NywgNjUsIDg2LCA2OSwgODMsIDEyOCwgODcsIDY1LCA4NiwgNjksIDEyOCwgODcsIDY1LCA4NiwgMTk3LCA4NywgCisgICAgNjUsIDg1LCAxMjgsIDg3LCA2NSwgODQsIDg0LCA3OSwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDc3LCA2OSwgNzYsIDc5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDg0LCA2OSwgODIsIDEyOCwgODcsIDY1LCA4NCwgNjksIDIxMCwgODcsIDY1LCA4NCwgNjcsIAorICAgIDcyLCAxMjgsIDg3LCA2NSwgODQsIDEyOCwgODcsIDY1LCA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA4MywgCisgICAgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA3NiwgNjUsIDEyOCwgODcsIDY1LCA4MywgNzYsIAorICAgIDE5MywgODcsIDY1LCA4MywgNjUsIDc2LCA3NiwgNjUsIDc3LCAxMjgsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCAKKyAgICAyMDUsIDg3LCA2NSwgODIsIDc4LCA3MywgNzgsIDE5OSwgODcsIDY1LCA4MCwgMTI4LCA4NywgNjUsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgODcsIDY1LCA3OCwgNzEsIDc1LCA4NSwgNzksIDgxLCAxMjgsIDg3LCA2NSwgNzgsIDY4LCA2OSwgODIsIDY5LCA4MiwgCisgICAgMTI4LCA4NywgNjUsIDc4LCAxMjgsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDc1LCAxMjgsIDg3LCA2NSwgCisgICAgNzYsIDIwMywgODcsIDY1LCA3MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NywgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDEyOCwgODcsIDQ4LCA1MCwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgODcsIDQ4LCA1MCwgNDksIDEyOCwgODcsIDQ4LCA1MCwgNDgsIDEyOCwgODcsIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgODcsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDU2LCAxMjgsIDg3LCA0OCwgNDksIDU1LCAKKyAgICA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgMTI4LCA4NywgNDgsIDQ5LCA1NCwgMTI4LCA4NywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDEyOCwgODcsIDQ4LCA0OSwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA0OSwgNTAsIDEyOCwgODcsIDQ4LCA0OSwgNDksIDEyOCwgODcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDg3LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NywgNDgsIDQ4LCA1NywgMTI4LCA4NywgNDgsIDQ4LCAKKyAgICA1NiwgMTI4LCA4NywgNDgsIDQ4LCA1NSwgMTI4LCA4NywgNDgsIDQ4LCA1NCwgMTI4LCA4NywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4NywgNDgsIDQ4LCA1MiwgMTI4LCA4NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDEyOCwgODcsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODcsIDQ4LCA0OCwgNDksIDEyOCwgODYsIDkwLCA3NywgNjksIDg0LCAxMjgsIDg2LCA4OSwgCisgICAgODgsIDEyOCwgODYsIDg5LCA4NCwgMTI4LCA4NiwgODksIDgyLCA4OCwgMTI4LCA4NiwgODksIDgyLCAxMjgsIDg2LCA4OSwgCisgICAgODAsIDEyOCwgODYsIDg5LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIAorICAgIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIAorICAgIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgCisgICAgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgCisgICAgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCAKKyAgICA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIAorICAgIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgCisgICAgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCAKKyAgICA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIAorICAgIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIAorICAgIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgCisgICAgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAKKyAgICAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIAorICAgIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgCisgICAgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCAKKyAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCAKKyAgICA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgCisgICAgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIAorICAgIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgCisgICAgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgCisgICAgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgCisgICAgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgCisgICAgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgCisgICAgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIAorICAgIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIAorICAgIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIAorICAgIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgCisgICAgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgODAsIDEyOCwgODYsIDc5LCA3OSwgMTI4LCA4NiwgNzksIDc3LCAxMjgsIAorICAgIDg2LCA3OSwgNzYsIDg1LCA3NywgMTk3LCA4NiwgNzksIDc2LCA4NCwgNjUsIDcxLCAxOTcsIDg2LCA3OSwgNzYsIDY3LCA2NSwgCisgICAgNzgsIDc5LCAxMjgsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCAKKyAgICA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgCisgICAgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCAKKyAgICA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIAorICAgIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgCisgICAgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCAKKyAgICA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIAorICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCisgICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAorICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTI4LCA4NiwgNzMsIDc2LCA3NiwgCisgICAgNjUsIDcxLCA2OSwgMTI4LCA4NiwgNzMsIDczLCAxMjgsIDg2LCA3MywgNjksIDg4LCAxMjgsIDg2LCA3MywgNjksIDg3LCAKKyAgICA3MywgNzgsIDE5OSwgODYsIDczLCA2OSwgODcsIDY4LCA2NSwgODQsIDE5MywgODYsIDczLCA2OSwgODQsIDEyOCwgODYsIAorICAgIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAxMjgsIDg2LCA3MywgCisgICAgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDg2LCAKICAgICA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgODIsIDIxNywgODYsIAotICAgIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MywgMTI4LCA4NiwgNjksIDg4LCAxMjgsIDg2LCA2OSwgCi0gICAgODcsIDEyOCwgODYsIDY5LCAyMTUsIDg2LCA2OSwgODUsIDg4LCAxMjgsIDg2LCA2OSwgODUsIDc3LCAxMjgsIDg2LCA2OSwgCi0gICAgODUsIDY1LCA2OSwgODAsIDY5LCA3OCwgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODYsIDY5LCA4MywgODQsIDY1LCAKLSAgICAxMjgsIDg2LCA2OSwgODMsIDgzLCA2OSwgMjA0LCA4NiwgNjksIDgyLCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNzYsIDg5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgCi0gICAgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgCi0gICAgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MiwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgCi0gICAgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1NCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgCi0gICAgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgCi0gICAgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OSwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgCi0gICAgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MCwgMTI4LCAKLSAgICA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgCi0gICAgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIAotICAgIDY1LCA3NiwgMTI4LCA4NiwgNjksIDgyLCA4MywgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA4MiwgODMsIDE5NywgCi0gICAgODYsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDY4LCA3MywgNzEsIDgyLCA3MywgODMsIDEyOCwgODYsIDY5LCAKLSAgICA4MCwgMTI4LCA4NiwgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIAotICAgIDc2LCA2OSwgMTI4LCA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCAKLSAgICA4NiwgNjksIDY4LCA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAotICAgIDEyOCwgODYsIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg0LCA3MiwgODksIAotICAgIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgCi0gICAgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCAKLSAgICA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIAotICAgIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgCi0gICAgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCAKLSAgICA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIAotICAgIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNjUsIDg2LCA4NSwgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgCisgICAgNzMsIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgODYsIDczLCAxMjgsIDg2LCA3MCwgNjUsIDEyOCwgODYsIDY5LCAKKyAgICA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA4NiwgNjksIDg1LCAKKyAgICA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIAorICAgIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgODYsIDY5LCA4MiwgMjE3LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAorICAgIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIAorICAgIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIAorICAgIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIAorICAgIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIAorICAgIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIAorICAgIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIAorICAgIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCAKKyAgICA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIAorICAgIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgCisgICAgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCA2NywgNzYsIDY5LCAxMjgsIDg2LCAKKyAgICA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIAorICAgIDgzLCAxMjgsIDg2LCA2OSwgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIAorICAgIDY5LCA3MiwgNzMsIDY3LCA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgCisgICAgMTI4LCA4NiwgNjksIDE5NywgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgCisgICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgCisgICAgODYsIDY1LCA4NSwgMTI4LCA4NiwgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCAKKyAgICA4NCwgNzgsIDY5LCA4MywgMjExLCA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIAorICAgIDY1LCA4MiwgNzMsIDc1LCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCA2NSwgODIsIDczLCA2NSwgCisgICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIDg2LCA2NSwgODIsIDY5LCAKKyAgICA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAxMjgsIDg2LCA2NSwgNzgsIAorICAgIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA4NiwgNjUsIDc3LCA2NSwgCisgICAgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAxMjgsIDg2LCA2NSwgNzMsIAorICAgIDEyOCwgODYsIDY1LCA3MiwgMTI4LCA4NiwgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIAogICAgIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgCiAgICAgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAKICAgICAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCAKQEAgLTM2NSwxNSArNDU2LDE2IEBACiAgICAgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCAKICAgICA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIAogICAgIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgCi0gICAgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MiwgCi0gICAgODUsIDIxOCwgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAKLSAgICAxOTMsIDg1LCA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDg1LCA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCAKLSAgICA4NSwgODIsIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCAKLSAgICA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgMjExLCA4NSwgODAsIDg3LCA2NSwgODIsIAotICAgIDY4LCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgMTk2LCA4NSwgODAsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MCwgCi0gICAgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDg1LCA4MCwgODMsIDczLCA3NiwgNzksIDIwNiwgODUsIDgwLCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgMjEyLCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIAorICAgIDg1LCA4MywgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIAorICAgIDg1LCA4MywgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIAorICAgIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgCisgICAgODIsIDg1LCAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgCisgICAgODIsIDczLCA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCAKKyAgICA2NSwgMTI4LCA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgCisgICAgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4NSwgODAsIDgzLCAKKyAgICA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIAorICAgIDIxMiwgODUsIDgwLCA4MCwgNjksIDIxMCwgODUsIDgwLCA2NSwgNjgsIDcyLCA3NywgNjUsIDc4LCA3MywgODksIDY1LCAKICAgICAxMjgsIDg1LCA4MCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDg1LCA3OSwgNzgsIDEyOCwgODUsIAogICAgIDc4LCA3OCwgMTI4LCA4NSwgNzgsIDc3LCA2NSwgODIsIDgyLCA3MywgNjksIDE5NiwgODUsIDc4LCA3NSwgNzgsIDc5LCA4NywgCiAgICAgNzgsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCAKQEAgLTM4OCwxMDAgKzQ4MCwxMDQgQEAKICAgICAxMjgsIDg1LCA3NSwgODUsIDEyOCwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDg1LCA3NSwgNjUsIAogICAgIDgyLCA2NSwgMTI4LCA4NSwgNzUsIDY1LCA4MiwgMTkzLCA4NSwgNzUsIDEyOCwgODUsIDczLCA3NiwgNzYsIDY5LCA2NSwgCiAgICAgNzgsIDc4LCAxMjgsIDg1LCA3MywgNzEsIDcyLCA4NSwgMjEwLCA4NSwgNzEsIDY1LCA4MiwgNzMsIDg0LCA3MywgMTk1LCAKLSAgICA4NSwgNjksIDg5LCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgNjgsIDg1LCA3MSwgMTI4LCAKLSAgICA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA4NSwgNjgsIDY1LCA2NSwgODQsIAotICAgIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA4NSwgNjYsIDcyLCA2NSwgODksIDY1LCA4NCwgMjA3LCA4NSwgNjYsIDY1LCA2OCwgNjUsIDc3LCA2NSwgMTI4LCA4NSwgNjYsIAotICAgIDEyOCwgODUsIDY1LCA4NCwgNzIsIDEyOCwgODUsIDY1LCAxMjgsIDg1LCAxNzgsIDg1LCA0OCwgNTIsIDUwLCAxMjgsIDg1LCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDg1LCA0OCwgNTIsIDQ4LCAxMjgsIDg1LCA0OCwgNTEsIDU3LCAxMjgsIDg1LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDg1LCA0OCwgNTEsIDU1LCAxMjgsIDg1LCA0OCwgNTEsIDU0LCAxMjgsIDg1LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDg1LCA0OCwgNTEsIDUyLCAxMjgsIDg1LCA0OCwgNTEsIDUxLCAxMjgsIDg1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NSwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4NSwgNDgsIDUxLCA0OSwgMTI4LCA4NSwgNDgsIDUxLCA0OCwgMTI4LCA4NSwgNDgsIDUwLCAKLSAgICA1NywgNjUsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDEyOCwgODUsIDQ4LCA1MCwgNTYsIDEyOCwgODUsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgODUsIDQ4LCA1MCwgNTQsIDEyOCwgODUsIDQ4LCA1MCwgNTMsIDEyOCwgODUsIDQ4LCA1MCwgNTIsIDEyOCwgODUsIAotICAgIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDUxLCAxMjgsIDg1LCA0OCwgNTAsIDUwLCAxMjgsIDg1LCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDg1LCA0OCwgNTAsIDQ4LCAxMjgsIDg1LCA0OCwgNDksIDU3LCAxMjgsIDg1LCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDg1LCA0OCwgNDksIDU1LCAxMjgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIDg1LCA0OCwgNDksIDUzLCAxMjgsIDg1LCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDg1LCA0OCwgNDksIDUxLCAxMjgsIDg1LCA0OCwgNDksIDUwLCAxMjgsIDg1LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDg1LCA0OCwgNDksIDQ4LCAxMjgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDg1LCA0OCwgNDgsIDU1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgCi0gICAgODUsIDQ4LCA0OCwgNTQsIDEyOCwgODUsIDQ4LCA0OCwgNTMsIDEyOCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgODUsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgODUsIDQ4LCA0OCwgNTAsIDEyOCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDQ1LCA3MywgNDUsIAotICAgIDczLCAxMjgsIDg1LCA0NSwgNjksIDc5LCA0NSwgNjksIDg1LCAxMjgsIDg0LCA5MCwgODUsIDEyOCwgODQsIDkwLCA3OSwgCi0gICAgNjUsIDEyOCwgODQsIDkwLCA3OSwgMTI4LCA4NCwgOTAsIDczLCAyMTAsIDg0LCA5MCwgNzMsIDEyOCwgODQsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgODQsIDkwLCA2OSwgMTI4LCA4NCwgOTAsIDY1LCA2NSwgMTI4LCA4NCwgOTAsIDY1LCAxMjgsIDg0LCA5MCwgCi0gICAgMTI4LCA4NCwgODksIDIxMCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODMsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgyLCA4NCwgCi0gICAgODksIDgwLCA2OSwgNDUsIDE4MSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxODAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc5LCAKLSAgICA4NCwgODksIDgwLCA2OSwgNDUsIDE3OCwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzcsIDg0LCA4OSwgODAsIDE5NywgODQsIAotICAgIDg5LCA3OSwgMTI4LCA4NCwgODksIDczLCAxMjgsIDg0LCA4OSwgNjksIDEyOCwgODQsIDg5LCA2NSwgMTI4LCA4NCwgODcsIAotICAgIDc5LCA3OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgODcsIDY1LCAyMTcsIDg0LCA4NywgNzksIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDg0LCA4NywgNzksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDg0LCA4NywgNzksIDQ1LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNjksIDE5NiwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgMTI4LCA4NCwgODcsIAotICAgIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgCi0gICAgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA3MywgODgsIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgCi0gICAgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzgsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgCi0gICAgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNjksIDczLCA3MSwgNzIsIAotICAgIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODQsIDg3LCA2OSwgCi0gICAgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgNDUsIDg0LCAKLSAgICA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgODYsIAotICAgIDE5NywgODQsIDg3LCA2OSwgMTI4LCA4NCwgODcsIDY1LCA2NSwgMTI4LCA4NCwgODcsIDY1LCAxMjgsIDg0LCA4NiwgODIsIAotICAgIDczLCA2OCwgNzksIDEyOCwgODQsIDg2LCA3MywgNzcsIDY1LCA2OCwgODUsIDIxMCwgODQsIDg1LCA4OCwgMTI4LCA4NCwgCi0gICAgODUsIDg1LCA3NywgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCAKLSAgICA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCAKLSAgICA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIAotICAgIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgCi0gICAgODIsIDY2LCA2NSwgNzgsIDEyOCwgODQsIDg1LCA4MiwgMTI4LCA4NCwgODUsIDgwLCAxMjgsIDg0LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDg0LCA4NSwgNzksIDg0LCAxMjgsIDg0LCA4NSwgNzksIDgwLCAxMjgsIDg0LCA4NSwgNzksIDEyOCwgODQsIDg1LCAKLSAgICA3OCwgNzgsIDg5LCAxMjgsIDg0LCA4NSwgNzcsIDY5LCA4NCwgNjksIDgzLCAxMjgsIDg0LCA4NSwgNzcsIDY1LCA2OSwgCi0gICAgMTI4LCA4NCwgODUsIDc3LCAxMjgsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCAKLSAgICA4NCwgNzMsIDgzLCAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIAotICAgIDUwLCAxMjgsIDg0LCA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NSwgODIsIDY5LCAxOTksIDg0LCA4NSwgNjUsIDY5LCA4MCwgCi0gICAgMTI4LCA4NCwgODUsIDY1LCA2OSwgMTI4LCA4NCwgMjEzLCA4NCwgODQsIDg1LCA2OCwgNjgsIDY1LCA3MSwgMTI4LCA4NCwgCi0gICAgODQsIDg1LCA2OCwgNjgsIDY1LCA2NSwgNzEsIDEyOCwgODQsIDg0LCA4NSwgMTI4LCA4NCwgODQsIDg0LCA3MiwgNjUsIAorICAgIDg1LCA2OSwgODksIDEyOCwgODUsIDY5LCA3MywgMTI4LCA4NSwgNjksIDY5LCAxMjgsIDg1LCA2OSwgNjUsIDEyOCwgODUsIAorICAgIDY4LCA4NSwgNzEsIDEyOCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgCisgICAgODUsIDY4LCA2NSwgNjUsIDg0LCAxMjgsIDg1LCA2OCwgMTI4LCA4NSwgMTk2LCA4NSwgNjcsIDEyOCwgODUsIDY2LCA4NSwgCisgICAgNzAsIDczLCA3NiwgNzMsIDEyOCwgODUsIDY2LCA3MiwgNjUsIDg5LCA2NSwgODQsIDIwNywgODUsIDY2LCA2NSwgNjgsIDY1LCAKKyAgICA3NywgNjUsIDEyOCwgODUsIDY2LCAxMjgsIDg1LCA2NSwgODQsIDcyLCAxMjgsIDg1LCA2NSwgNzgsIDcxLCAxMjgsIDg1LCAKKyAgICA2NSwgMTI4LCA4NSwgMTc4LCA4NSwgNDgsIDUyLCA1MCwgMTI4LCA4NSwgNDgsIDUyLCA0OSwgMTI4LCA4NSwgNDgsIDUyLCAKKyAgICA0OCwgMTI4LCA4NSwgNDgsIDUxLCA1NywgMTI4LCA4NSwgNDgsIDUxLCA1NiwgMTI4LCA4NSwgNDgsIDUxLCA1NSwgMTI4LCAKKyAgICA4NSwgNDgsIDUxLCA1NCwgMTI4LCA4NSwgNDgsIDUxLCA1MywgMTI4LCA4NSwgNDgsIDUxLCA1MiwgMTI4LCA4NSwgNDgsIAorICAgIDUxLCA1MSwgMTI4LCA4NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODUsIDQ4LCA1MSwgNTAsIDEyOCwgODUsIDQ4LCA1MSwgCisgICAgNDksIDEyOCwgODUsIDQ4LCA1MSwgNDgsIDEyOCwgODUsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg1LCA0OCwgNTAsIDU3LCAKKyAgICAxMjgsIDg1LCA0OCwgNTAsIDU2LCAxMjgsIDg1LCA0OCwgNTAsIDU1LCAxMjgsIDg1LCA0OCwgNTAsIDU0LCAxMjgsIDg1LCAKKyAgICA0OCwgNTAsIDUzLCAxMjgsIDg1LCA0OCwgNTAsIDUyLCAxMjgsIDg1LCA0OCwgNTAsIDUxLCA2NSwgMTI4LCA4NSwgNDgsIAorICAgIDUwLCA1MSwgMTI4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA4NSwgNDgsIDUwLCA0OSwgMTI4LCA4NSwgNDgsIDUwLCA0OCwgCisgICAgMTI4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA4NSwgNDgsIDQ5LCA1NSwgMTI4LCA4NSwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA4NSwgNDgsIDQ5LCA1MiwgMTI4LCA4NSwgNDgsIDQ5LCAKKyAgICA1MSwgMTI4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA4NSwgNDgsIDQ5LCA0OSwgMTI4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCAKKyAgICA4NSwgNDgsIDQ4LCA1NywgMTI4LCA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCA4NSwgNDgsIAorICAgIDQ4LCA1NCwgNjYsIDEyOCwgODUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIDg1LCA0OCwgCisgICAgNDgsIDUzLCAxMjgsIDg1LCA0OCwgNDgsIDUyLCAxMjgsIDg1LCA0OCwgNDgsIDUxLCAxMjgsIDg1LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDg1LCA0OCwgNDgsIDQ5LCAxMjgsIDg1LCA0NSwgNzMsIDQ1LCA3MywgMTI4LCA4NSwgNDUsIDY5LCA3OSwgNDUsIAorICAgIDY5LCA4NSwgMTI4LCA4NSwgNDUsIDY2LCA4MiwgNzQsIDcxLCA4NSwgMTI4LCA4NCwgOTAsIDg1LCAxMjgsIDg0LCA5MCwgCisgICAgNzksIDY1LCAxMjgsIDg0LCA5MCwgNzksIDEyOCwgODQsIDkwLCA3MywgMjEwLCA4NCwgOTAsIDczLCAxMjgsIDg0LCA5MCwgCisgICAgNjksIDY5LCAxMjgsIDg0LCA5MCwgNjksIDEyOCwgODQsIDkwLCA2NSwgNjUsIDEyOCwgODQsIDkwLCA2NSwgMTI4LCA4NCwgCisgICAgOTAsIDEyOCwgODQsIDg5LCAyMTAsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgzLCA4NCwgODksIDgwLCA2OSwgNDUsIDE4MiwgCisgICAgODQsIDg5LCA4MCwgNjksIDQ1LCAxODEsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTgwLCA4NCwgODksIDgwLCA2OSwgNDUsIAorICAgIDE3OSwgODQsIDg5LCA4MCwgNjksIDQ1LCAxNzgsIDg0LCA4OSwgODAsIDY5LCA0NSwgMTc3LCA4NCwgODksIDgwLCAxOTcsIAorICAgIDg0LCA4OSwgNzksIDEyOCwgODQsIDg5LCA3MywgMTI4LCA4NCwgODksIDY5LCAxMjgsIDg0LCA4OSwgNjUsIDEyOCwgODQsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgODQsIDg3LCA3OSwgNDUsIDg3LCA2NSwgMjE3LCA4NCwgODcsIDc5LCA0NSwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDc5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4NCwgODcsIDc5LCA0NSwgNzIsIDY5LCAKKyAgICA2NSwgNjgsIDY5LCAxOTYsIDg0LCA4NywgNzksIDQ1LCA2OSwgMjA1LCA4NCwgODcsIDczLCA4MywgODQsIDY5LCAxOTYsIAorICAgIDg0LCA4NywgNzMsIDczLCAxMjgsIDg0LCA4NywgNzMsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA4NywgCisgICAgNzksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgCisgICAgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKKyAgICA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgCisgICAgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCAKKyAgICA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCAKKyAgICA4NCwgODcsIDY5LCA3NiwgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3NiwgCisgICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgMTk3LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAKKyAgICAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIAorICAgIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCAxMjgsIDg0LCA4NSwgODUsIDc3LCA4NSwgMTI4LCA4NCwgODUsIDg1LCAxMjgsIAorICAgIDg0LCA4NSwgODQsIDg0LCA4OSwgMTI4LCA4NCwgODUsIDg0LCA2OSwgODksIDY1LCA4MywgNjUsIDg0LCAxMjgsIDg0LCA4NSwgCisgICAgODQsIDEyOCwgODQsIDg1LCA4MiwgODgsIDEyOCwgODQsIDg1LCA4MiwgODUsIDEyOCwgODQsIDg1LCA4MiwgODQsIDc2LCAKKyAgICA2OSwgMTI4LCA4NCwgODUsIDgyLCA3OSwgNTAsIDEyOCwgODQsIDg1LCA4MiwgNzgsIDgzLCA4NCwgNzMsIDc2LCA2OSwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA3OCwgNjksIDE5NiwgODQsIDg1LCA4MiwgMjA2LCA4NCwgODUsIDgyLCA2NiwgNjUsIDc4LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDEyOCwgODQsIDg1LCA4MCwgMTI4LCA4NCwgODUsIDc5LCA4OCwgMTI4LCA4NCwgODUsIDc5LCAKKyAgICA4NCwgMTI4LCA4NCwgODUsIDc5LCA4MCwgMTI4LCA4NCwgODUsIDc5LCAxMjgsIDg0LCA4NSwgNzgsIDc4LCA4OSwgMTI4LCAKKyAgICA4NCwgODUsIDc3LCA2OSwgODQsIDY5LCA4MywgMTI4LCA4NCwgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgCisgICAgMTI4LCA4NCwgODUsIDc2LCA3MywgODAsIDEyOCwgODQsIDg1LCA3NSwgODcsIDY5LCA3OCwgODQsIDczLCA4MywgMTI4LCAKKyAgICA4NCwgODUsIDc1LCAxMjgsIDg0LCA4NSwgNzEsIDgyLCA3MywgMjAzLCA4NCwgODUsIDcxLCA1MCwgMTI4LCA4NCwgODUsIAorICAgIDcxLCAxNzgsIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgCisgICAgNjksIDEyOCwgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgCisgICAgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAKICAgICAxMjgsIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCAKICAgICA4NCwgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIAotICAgIDgzLCA2NSwgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgCi0gICAgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCAKLSAgICA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIAotICAgIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgODQsIDgzLCAKLSAgICA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCAKLSAgICA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIAotICAgIDc5LCAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgCi0gICAgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAKLSAgICAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIAotICAgIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgCi0gICAgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCAKLSAgICA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIAotICAgIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgCi0gICAgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIAotICAgIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAKLSAgICAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgCi0gICAgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKLSAgICAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIAotICAgIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAKLSAgICAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIAotICAgIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIAotICAgIDEyOCwgODQsIDgyLCA3MywgODAsIDc5LCA2OCwgMTI4LCA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgCi0gICAgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCAKLSAgICA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIAotICAgIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAKLSAgICAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgCi0gICAgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIAotICAgIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCAKLSAgICA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIAotICAgIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgCi0gICAgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCAKLSAgICA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIAotICAgIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAKLSAgICAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIAotICAgIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAxMjgsIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAKLSAgICAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIAorICAgIDgzLCA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIAorICAgIDg0LCA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgCisgICAgODQsIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIAorICAgIDcyLCA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgCisgICAgNjksIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCAKKyAgICA4NCwgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIAorICAgIDEyOCwgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCA4NiwgMTI4LCA4NCwgODMsIAorICAgIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAxMjgsIDg0LCA4MywgCisgICAgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIDY5LCA4MywgMTI4LCAKKyAgICA4NCwgODMsIDcyLCA2OSwgNzEsIDEyOCwgODQsIDgzLCA3MiwgNjksIDE5OSwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIAorICAgIDgzLCA3MiwgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgNjUsIDY4LCA3MywgMTI4LCA4NCwgCisgICAgODMsIDY1LCA2OCwgMjAxLCA4NCwgODMsIDY1LCA2NSwgNjgsIDczLCA4OSwgMTI4LCA4NCwgODMsIDY1LCA2NSwgMTI4LCAKKyAgICA4NCwgODMsIDE5MywgODQsIDgyLCA4OSwgNjYsIDc2LCA3MywgNzksIDIwNiwgODQsIDgyLCA4NSwgODQsIDcyLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc4LCA3NSwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNjcsIDY1LCA4NCwgNjksIDE5NiwgODQsIDgyLCA4NSwgCisgICAgNzcsIDgwLCA2OSwgODQsIDEyOCwgODQsIDgyLCA4NSwgNjksIDEyOCwgODQsIDgyLCA4NSwgNjcsIDc1LCAxMjgsIDg0LCAKKyAgICA4MiwgNzksIDgwLCA3MywgNjcsIDY1LCAyMDQsIDg0LCA4MiwgNzksIDgwLCA3MiwgODksIDEyOCwgODQsIDgyLCA3OSwgNzcsIAorICAgIDczLCA3NSwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAKKyAgICA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MCwgCisgICAgNjUsIDgyLCA2NSwgNzUsIDY1LCA3NiwgNjksIDgzLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAorICAgIDc4LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCAyMDYsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3NiwgCisgICAgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NiwgNzYsIDY5LCA4OSwgNjYsIDg1LCA4MywgMTI4LCAKKyAgICA4NCwgODIsIDc5LCA3NSwgODUsIDg0LCA2NSwgODMsIDg0LCAyMDEsIDg0LCA4MiwgNzksIDY5LCA5MCwgNjksIDc4LCA3MywgCisgICAgNjUsIDIwNiwgODQsIDgyLCA3MywgODUsIDc3LCA4MCwgNzIsIDEyOCwgODQsIDgyLCA3MywgODQsIDc5LCAyMTEsIDg0LCAKKyAgICA4MiwgNzMsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDczLCA4MywgNzMsIDc3LCA3OSwgCisgICAgODUsIDEyOCwgODQsIDgyLCA3MywgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDgyLCA3MywgODAsIDc5LCA2OCwgMTI4LCAKKyAgICA4NCwgODIsIDczLCA4MCwgNzYsIDczLCAxMjgsIDg0LCA4MiwgNzMsIDgwLCA3NiwgMTk3LCA4NCwgODIsIDczLCA3OSwgCisgICAgMjA2LCA4NCwgODIsIDczLCA3MywgODMsIDY1LCA4MCwgMTI4LCA4NCwgODIsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA4MiwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgODQsIDgyLCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgODIsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDg0LCA4MiwgNzMsIDcwLCA3OSwgNzYsIDczLCAKKyAgICA2NSwgODQsIDE5NywgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgODQsIDEyOCwgODQsIDgyLCA3MywgNjgsIDY5LCA3OCwgCisgICAgMjEyLCA4NCwgODIsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCAKKyAgICA2NSwgMjEwLCA4NCwgODIsIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDcxLCA3NiwgNjksIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgODQsIDgyLCA3MywgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY5LCAxMjgsIDg0LCA4MiwgNzMsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDg0LCA4MiwgNzMsIDY1LCAxMjgsIAorICAgIDg0LCA4MiwgNzMsIDEyOCwgODQsIDgyLCA2OSwgODMsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDg0LCA4MiwgNjksIDc4LCA2OCwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA3OCwgMTk2LCA4NCwgODIsIDY5LCA3NywgNzksIDc2LCA3OSwgNDUsIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgNjksIDc3LCA3OSwgNzYsIDc5LCA0NSwgNTAsIDEyOCwgODQsIDgyLCA2OSwgNzcsIDc5LCA3NiwgNzksIDQ1LCA0OSwgCisgICAgMTI4LCA4NCwgODIsIDY5LCA2OSwgMTI4LCA4NCwgODIsIDY5LCAxOTcsIDg0LCA4MiwgNjksIDY1LCA2OCwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4NCwgODIsIDY1LCA4OSwgMTI4LCA4NCwgODIsIDY1LCA4MCwgNjksIDkwLCA3MywgODUsIDc3LCAxMjgsIAorICAgIDg0LCA4MiwgNjUsIDc4LCA4MywgODYsIDY5LCA4MiwgODMsIDY1LCAyMDQsIDg0LCA4MiwgNjUsIDc4LCA4MywgODAsIDc5LCAKKyAgICA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzgsIDgzLCA3NywgNzMsIDIxMiwgODQsIDgyLCA2NSwgNzgsIAogICAgIDgzLCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDY1LCA3OCwgODMsIDc3LCA3MywgODMsIDgzLCAKICAgICA3MywgNzksIDIwNiwgODQsIDgyLCA2NSwgNzcsIDg3LCA2NSwgODksIDEyOCwgODQsIDgyLCA2NSwgNzcsIDEyOCwgODQsIAogICAgIDgyLCA2NSwgMjA1LCA4NCwgODIsIDY1LCA3MywgNzgsIDEyOCwgODQsIDgyLCA2NSwgNzMsIDIwNiwgODQsIDgyLCA2NSwgCkBAIC00OTMsMTYgKzU4OSwxNyBAQAogICAgIDc5LCA4MiwgNjcsIDg1LCA3NiwgODUsIDIxMSwgODQsIDc5LCA4MiwgNjcsIDcyLCAxMjgsIDg0LCA3OSwgODEsIDEyOCwgCiAgICAgODQsIDc5LCA4MCwgNjYsIDY1LCA4MiwgMTI4LCA4NCwgNzksIDgwLCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCAKICAgICA4NCwgNzksIDgwLCAxMjgsIDg0LCA3OSwgMjA4LCA4NCwgNzksIDc5LCA4NCwgNzIsIDEyOCwgODQsIDc5LCA3OSwgNzgsIAotICAgIDEyOCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgNzksIDc4LCA3OSwgODMsIDEyOCwgODQsIDc5LCA3OCwgNzEsIDg1LCA2OSwgCi0gICAgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDE5NywgODQsIDc5LCA3OCwgNzEsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCAKLSAgICA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIAotICAgIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAKLSAgICAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIAotICAgIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgCi0gICAgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCAKLSAgICA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCAKLSAgICA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIDg0LCA3NiwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA4NSwgMTI4LCAKKyAgICAxMjgsIDg0LCA3OSwgNzgsIDc5LCA4MywgMTI4LCA4NCwgNzksIDc4LCA3MSwgODUsIDY5LCAxMjgsIDg0LCA3OSwgNzgsIAorICAgIDcxLCA4NSwgMTk3LCA4NCwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDU2LCAxMjgsIDg0LCA3OSwgCisgICAgNzgsIDY5LCA0NSwgNTUsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1NCwgMTI4LCA4NCwgNzksIDc4LCA2OSwgNDUsIDUzLCAKKyAgICAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNTIsIDEyOCwgODQsIDc5LCA3OCwgNjksIDQ1LCA1MSwgMTI4LCA4NCwgNzksIAorICAgIDc4LCA2OSwgNDUsIDUwLCAxMjgsIDg0LCA3OSwgNzgsIDY5LCA0NSwgNDksIDEyOCwgODQsIDc5LCA3OCwgNjksIDEyOCwgCisgICAgODQsIDc5LCA3OCwgNjUsIDIwNCwgODQsIDc5LCA3NywgODAsIDczLCAxMjgsIDg0LCA3OSwgNzcsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgODQsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4NCwgNzksIDc1LCA4OSwgMjA3LCA4NCwgNzksIDczLCA3NiwgCisgICAgNjksIDg0LCAxMjgsIDg0LCA3OSwgNzEsIDY5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA4NCwgNzksIDY4LCAyMDcsIDg0LCAKKyAgICA3OSwgNjUsIDc4LCA2OCwgNjUsIDc1LCA3MiwgNzMsIDY1LCA4NCwgMTI4LCA4NCwgNzksIDY1LCAxMjgsIDg0LCA3OCwgCisgICAgMTI4LCA4NCwgNzYsIDg2LCAxMjgsIDg0LCA3NiwgODUsIDEyOCwgODQsIDc2LCA3OSwgMTI4LCA4NCwgNzYsIDczLCAxMjgsIAorICAgIDg0LCA3NiwgNzIsIDg5LCA2NSwgMTI4LCA4NCwgNzYsIDcyLCA4NywgNjksIDEyOCwgODQsIDc2LCA3MiwgODUsIDEyOCwgCiAgICAgODQsIDc2LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDc5LCAxMjgsIDg0LCA3NiwgNzIsIDczLCAxMjgsIDg0LCAKICAgICA3NiwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2OSwgMTI4LCA4NCwgNzYsIDcyLCA2NSwgMTI4LCA4NCwgNzYsIAogICAgIDY5LCA2OSwgMTI4LCA4NCwgNzYsIDY1LCAxMjgsIDg0LCA3NCwgNjksIDEyOCwgODQsIDczLCA4OCwgMTI4LCA4NCwgNzMsIApAQCAtNTEzLDEyMSArNjEwLDEyMyBAQAogICAgIDg0LCA3MywgODAsIDY5LCA3MiwgNjUsIDEyOCwgODQsIDczLCA4MCwgMTI4LCA4NCwgNzMsIDIwOCwgODQsIDczLCA3OCwgCiAgICAgODksIDEyOCwgODQsIDczLCA3OCwgMjE3LCA4NCwgNzMsIDc4LCA3OCwgNjksIDEyOCwgODQsIDczLCA3OCwgNjcsIDg0LCAKICAgICA4NSwgODIsIDY5LCAxMjgsIDg0LCA3MywgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDg0LCA3MywgNzcsIDY5LCA4MywgCi0gICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgNjksIDEyOCwgCi0gICAgODQsIDczLCA3NiwgNjgsIDE5NywgODQsIDczLCA3NiwgMTI4LCA4NCwgNzMsIDIwNCwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIAotICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCi0gICAgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIAotICAgIDg0LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODQsIAotICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDg0LCA3MywgNzUsIDY5LCAKLSAgICA4NSwgODQsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCAyMTIsIDg0LCA3MywgNzMsIDEyOCwgODQsIDczLCA3MSwgNzIsIAotICAgIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgCi0gICAgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIAotICAgIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIAotICAgIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgCi0gICAgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCAKLSAgICA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIAotICAgIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIAotICAgIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgCi0gICAgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCAKLSAgICA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIAotICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCAKLSAgICA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIAotICAgIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgCi0gICAgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCAKLSAgICA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDg0LCA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIAotICAgIDg0LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAKLSAgICAxOTYsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgCi0gICAgMjE3LCA4NCwgNzIsIDczLCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIAotICAgIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgCi0gICAgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIAotICAgIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCAKLSAgICA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgCi0gICAgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIAotICAgIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgCi0gICAgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgCi0gICAgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIAotICAgIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgCi0gICAgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCAKLSAgICA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIAotICAgIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCAKLSAgICA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgCi0gICAgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCAKLSAgICA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIAotICAgIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgCi0gICAgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCAKLSAgICA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIAotICAgIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgCi0gICAgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAKLSAgICAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCAKLSAgICA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIAotICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgCi0gICAgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCAKLSAgICA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCi0gICAgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCAKLSAgICA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIAotICAgIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2OSwgCi0gICAgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCAKLSAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgCi0gICAgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNDUsIAotICAgIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIDEyOCwgODQsIDY3LCA3MiwgCi0gICAgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIAotICAgIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCAKLSAgICA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIAotICAgIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgCi0gICAgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgCi0gICAgNjUsIDg1LCAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCAKLSAgICA4NywgNjksIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIAotICAgIDY1LCA4MiwgODUsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgCi0gICAgODQsIDY1LCA4MiwgMTI4LCA4NCwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgODAsIDY5LCA4MiwgMTI4LCA4NCwgNjUsIDgwLCAKLSAgICAxOTcsIDg0LCA2NSwgODAsIDEyOCwgODQsIDY1LCA3OSwgMTI4LCA4NCwgNjUsIDc4LCA3OCwgNjksIDE5NiwgODQsIDY1LCAKLSAgICA3OCwgNzEsIDY5LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCA2NiwgNjUsIAotICAgIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc3LCAxMjgsIAotICAgIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgCi0gICAgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCA3NiwgNjksIDc4LCAKLSAgICAyMTIsIDg0LCA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIAotICAgIDY1LCA3NSwgNTIsIDEyOCwgODQsIDY1LCA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgCi0gICAgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCAKLSAgICA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIAotICAgIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIAotICAgIDg0LCA2NSwgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgCi0gICAgODMsIDEyOCwgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDg0LCA2NSwgNjYsIDEyOCwgODQsIDY1LCAxOTQsIDg0LCA2NSwgCi0gICAgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDg0LCA2NSwgNjUsIDgxLCAxMjgsIDg0LCA2NSwgNjUsIDc3LCAxMjgsIDg0LCAKLSAgICA2NSwgNjUsIDc2LCA4NSwgNzQsIDE5MywgODQsIDY1LCA2NSwgNzMsIDEyOCwgODQsIDY1LCA2NSwgNzAsIDEyOCwgODQsIAotICAgIDY1LCA1MCwgMTI4LCA4NCwgNjUsIDQ1LCA4MiwgNzksIDc2LCAxMjgsIDg0LCA0OCwgNTEsIDU0LCAxMjgsIDg0LCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDg0LCA0OCwgNTEsIDUyLCAxMjgsIDg0LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCAKLSAgICA1MSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNDksIAotICAgIDEyOCwgODQsIDQ4LCA1MSwgNDgsIDEyOCwgODQsIDQ4LCA1MCwgNTcsIDEyOCwgODQsIDQ4LCA1MCwgNTYsIDEyOCwgODQsIAotICAgIDQ4LCA1MCwgNTUsIDEyOCwgODQsIDQ4LCA1MCwgNTQsIDEyOCwgODQsIDQ4LCA1MCwgNTMsIDEyOCwgODQsIDQ4LCA1MCwgCi0gICAgNTIsIDEyOCwgODQsIDQ4LCA1MCwgNTEsIDEyOCwgODQsIDQ4LCA1MCwgNTAsIDEyOCwgODQsIDQ4LCA1MCwgNDksIDEyOCwgCi0gICAgODQsIDQ4LCA1MCwgNDgsIDEyOCwgODQsIDQ4LCA0OSwgNTcsIDEyOCwgODQsIDQ4LCA0OSwgNTYsIDEyOCwgODQsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCAxMjgsIDg0LCA0OCwgNDksIAotICAgIDUzLCAxMjgsIDg0LCA0OCwgNDksIDUyLCAxMjgsIDg0LCA0OCwgNDksIDUxLCAxMjgsIDg0LCA0OCwgNDksIDUwLCAxMjgsIAotICAgIDg0LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgMTI4LCA4NCwgNDgsIDQ5LCA0OCwgMTI4LCA4NCwgCi0gICAgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDEyOCwgODQsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgMTI4LCA4NCwgNDgsIAotICAgIDQ4LCA1NCwgMTI4LCA4NCwgNDgsIDQ4LCA1MywgMTI4LCA4NCwgNDgsIDQ4LCA1MiwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgCi0gICAgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDEyOCwgODQsIDQ4LCA0OCwgNTAsIDEyOCwgODQsIDQ4LCA0OCwgNDksIDEyOCwgCi0gICAgODQsIDQ1LCA4MywgNzIsIDczLCA4MiwgODQsIDEyOCwgODMsIDkwLCA5MCwgMTI4LCA4MywgOTAsIDg3LCA3MSwgMTI4LCAKLSAgICA4MywgOTAsIDg3LCA2NSwgMTI4LCA4MywgOTAsIDg1LCAxMjgsIDgzLCA5MCwgNzksIDEyOCwgODMsIDkwLCA3MywgMTI4LCAKLSAgICA4MywgOTAsIDY5LCA2OSwgMTI4LCA4MywgOTAsIDY5LCAxMjgsIDgzLCA5MCwgNjUsIDY1LCAxMjgsIDgzLCA5MCwgNjUsIAotICAgIDEyOCwgODMsIDkwLCAxMjgsIDgzLCA4OSwgODgsIDEyOCwgODMsIDg5LCA4NCwgMTI4LCA4MywgODksIDgyLCA4OCwgMTI4LCAKLSAgICA4MywgODksIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIAotICAgIDgyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIDEyOCwgODMsIDg5LCA3OSwgCi0gICAgODUsIDg3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OCwgNjksIDgzLCAKLSAgICA3NywgNzksIDIxMSwgODMsIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDIxMSwgODMsIDg5LCA3OCwgNjUsIAotICAgIDcxLCA3NywgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIDgyLCA4OSwgCisgICAgMTI4LCA4NCwgNzMsIDc3LCA2OSwgMjEwLCA4NCwgNzMsIDc3LCA2OSwgMTI4LCA4NCwgNzMsIDc2LCA2OCwgMTk3LCA4NCwgCisgICAgNzMsIDc2LCAxMjgsIDg0LCA3MywgMjA0LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4NCwgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgCisgICAgNjksIDc5LCA3NSwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODQsIDczLCAKKyAgICA3NSwgNjksIDg1LCA4NCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgCisgICAgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODQsIDczLCA3NSwgCisgICAgNjksIDg1LCA4NCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNjcsIAorICAgIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNzMsIDc1LCA2OSwgCisgICAgODUsIDIxMiwgODQsIDczLCA3MSwgNzIsIDg0LCA3NiwgODksIDQ1LCA2NywgNzYsIDc5LCA4MywgNjksIDE5NiwgODQsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgODQsIDczLCA3MSwgNjksIDgyLCAxMjgsIDg0LCA3MywgNzEsIDY5LCAyMTAsIDg0LCA3MywgNzAsIAorICAgIDczLCA3OCwgNjUsIDcxLCAyMDAsIDg0LCA3MywgNjksIDg4LCAxMjgsIDg0LCA3MywgNjksIDgwLCAxMjgsIDg0LCA3MywgCisgICAgMTk3LCA4NCwgNzMsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDg0LCA3MywgNjcsIDc1LCAxMjgsIDg0LCA3MywgNjcsIDIwMywgCisgICAgODQsIDczLCA2NSwgODIsIDY1LCAxMjgsIDg0LCA3MiwgOTAsIDEyOCwgODQsIDcyLCA4OSwgNzksIDc5LCAyMDUsIDg0LCAKKyAgICA3MiwgODcsIDc5LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3OSwgMTI4LCA4NCwgNzIsIDg3LCA3MywgNzMsIDEyOCwgODQsIAorICAgIDcyLCA4NywgNzMsIDEyOCwgODQsIDcyLCA4NywgNjksIDY5LCAxMjgsIDg0LCA3MiwgODcsIDY1LCA2NSwgMTI4LCA4NCwgCisgICAgNzIsIDg3LCA2NSwgMTI4LCA4NCwgNzIsIDg1LCA4MiwgMjExLCA4NCwgNzIsIDg1LCA4MiwgNzMsIDgzLCA2NSwgMjE4LCAKKyAgICA4NCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDcyLCA4NSwgNzgsIDY4LCA2OSwgODIsIDgzLCA4NCwgNzksIDgyLCA3NywgCisgICAgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg0LCAKKyAgICA3MiwgODUsIDc3LCA2NiwgMjExLCA4NCwgNzIsIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA4NCwgNzIsIDgyLCA3OSwgODUsIAorICAgIDcxLCA3MiwgMTI4LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCAyMDAsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDg0LCAKKyAgICA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjksIDIwNSwgODQsIAorICAgIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjUsIDY4LCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgCisgICAgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCAKKyAgICA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIAorICAgIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgCisgICAgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIDg0LCAKKyAgICA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgNzMsIAorICAgIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIDY4LCAKKyAgICA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIAorICAgIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDIwNiwgODQsIDcyLCA3MywgNzMsIDEyOCwgODQsIDcyLCA3MywgNzEsIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDIwMCwgODQsIDcyLCA2OSwgODksIDEyOCwgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgCisgICAgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDg0LCAKKyAgICAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDgzLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgNzIsIDY5LCA4MiwgNzcsIDc5LCA2OCwgCisgICAgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgODIsIDY5LCAxMjgsIDg0LCAKKyAgICA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCA4NCwgNzMsIDgzLCA3NywgNzksIAorICAgIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIDg0LCA3MiwgNjksIDcyLCAxMjgsIAorICAgIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCAxOTcsIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgCisgICAgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIDY1LCAKKyAgICA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIAorICAgIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgODQsIDY5LCA4OCwgMTI4LCA4NCwgCisgICAgNjksIDg2LCA3MywgODIsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCA4NSwgODgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDY5LCAKKyAgICA4NSwgODcsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgMTI4LCA4NCwgNjksIDg1LCA3OCwgMTI4LCA4NCwgNjksIAorICAgIDg1LCA2NSwgNjksIDgxLCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgMTI4LCA4NCwgCisgICAgNjksIDg0LCA4MiwgNjUsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDgzLCA2OSwgNzcsIAorICAgIDY5LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODAsIDc2LCA3MywgMTI4LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKKyAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCisgICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAorICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCisgICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKKyAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIDY5LCA3OCwgNzgsIAorICAgIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAKKyAgICAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgNjksIDc2LCAKKyAgICA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCA2OSwgNzYsIAorICAgIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY5LCA3NiwgCisgICAgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKKyAgICA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIDg0LCA2OSwgNzYsIAorICAgIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCA3MSwgNjksIDcyLCAKKyAgICAxMjgsIDg0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA4NCwgNjksIDE5NywgODQsIDY5LCA2OCwgODUsIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgMjExLCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgODAsIDc5LCA3NSwgCisgICAgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNzgsIDc1LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA2NiwgNjUsIDgyLCA2NiwgNjksIDE5NiwgODQsIDY5LCA2NSwgCisgICAgODIsIDQ1LCA3OSwgNzAsIDE5OCwgODQsIDY5LCA2NSwgNjcsIDg1LCAyMDgsIDg0LCA2OSwgNDUsIDg1LCAxMjgsIDg0LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCA3MiwgNjksIAorICAgIDIwMCwgODQsIDY3LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA2NywgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCAxMjgsIAorICAgIDg0LCAxOTUsIDg0LCA2NSwgODksIDEyOCwgODQsIDY1LCA4OCwgNzMsIDEyOCwgODQsIDY1LCA4OCwgMTI4LCA4NCwgNjUsIAorICAgIDg3LCA2OSwgNzYsIDc2LCA2OSwgNzcsIDY5LCAyMTIsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDg0LCA2NSwgODcsIDEyOCwgCisgICAgODQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDg0LCA2NSwgODYsIDEyOCwgODQsIDY1LCAyMTQsIDg0LCAKKyAgICA2NSwgODUsIDgyLCA4NSwgODMsIDEyOCwgODQsIDY1LCAyMTMsIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDc2LCAxMjgsIAorICAgIDg0LCA2NSwgODQsIDg3LCA2OSwgNjksIDIwNCwgODQsIDY1LCA4NCwgODQsIDc5LCA3OSwgNjksIDE5NiwgODQsIDY1LCA4NCwgCisgICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKKyAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAxMjgsIAorICAgIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCA2OSwgCisgICAgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDE5OSwgODQsIDY1LCAKKyAgICA3OCwgNjUsIDY2LCA2NSwgODQsIDE5MywgODQsIDY1LCA3OCwgMTI4LCA4NCwgNjUsIDc3LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDg0LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA3NiwgNzYsIDEyOCwgODQsIDY1LCA3NiwgMjA0LCA4NCwgNjUsIDc2LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2NSwgNzYsIDczLCA3OCwgMTk5LCA4NCwgNjUsIDc2LCA2OSwgNzgsIDg0LCA4MywgMTI4LCAKKyAgICA4NCwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3NSwgODIsIDIwMSwgODQsIDY1LCA3NSwgNzIsIDY1LCA3NiwgNzYsIAorICAgIDg1LCA4MywgMTI4LCA4NCwgNjUsIDc1LCA2OSwgMTI4LCA4NCwgNjUsIDc1LCA1MiwgMTI4LCA4NCwgNjUsIDc1LCAxMjgsIAorICAgIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgCisgICAgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgCisgICAgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCAKKyAgICA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIAorICAgIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgCisgICAgNjYsIDgzLCAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCA2NSwgMTk0LCA4NCwgCisgICAgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIDY1LCA3NywgMTI4LCAKKyAgICA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgNjUsIDcwLCAxMjgsIAorICAgIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCA1MCwgMTI4LCA4NCwgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIDg0LCA0OCwgNTEsIAorICAgIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgNTAsIDU3LCAxMjgsIAorICAgIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAxMjgsIDg0LCA0OCwgCisgICAgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCA0OCwgNTAsIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIDU3LCAxMjgsIDg0LCAKKyAgICA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4NCwgNDgsIAorICAgIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgNDgsIDQ5LCA1MSwgCisgICAgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU3LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgODQsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgODQsIDQ4LCA0OCwgCisgICAgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCA0OCwgNDgsIDUwLCAKKyAgICAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIDgzLCA5MCwgOTAsIAorICAgIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgMTI4LCA4MywgOTAsIAorICAgIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgMTI4LCA4MywgOTAsIAorICAgIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIDgzLCA4OSwgODQsIAorICAgIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgODIsIDc3LCA2NSwgCisgICAgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCA3OCwgNzEsIDY5LCAKKyAgICAxMjgsIDgzLCA4OSwgODIsIDEyOCwgODMsIDg5LCA4MCwgMTI4LCA4MywgODksIDc5LCA4NSwgODcsIDY1LCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDY5LCA4NiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgNzgsIDY4LCA2OSwgODMsIDc3LCA3OSwgMjExLCA4MywgODksIAorICAgIDc4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMjExLCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAxOTMsIDgzLCA4OSwgCisgICAgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIDg0LCA4MiwgODksIAogICAgIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDgzLCAKICAgICAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTYsIAogICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NCwgCkBAIC02NTQsMjIzICs3NTMsMjI4IEBACiAgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUxLCAxMjgsIDgzLCAKICAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OSwgCiAgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODksIDc2LCA3OSwgODQsIDIwMSwgODMsIDg5LCA2NSwgMTI4LCA4MywgODksIDEyOCwgODMsIDg3LCAKLSAgICA5MCwgMTI4LCA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIAotICAgIDgyLCA2OCwgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIAotICAgIDgzLCA4NywgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgCi0gICAgODcsIDczLCA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAKLSAgICAxMjgsIDgzLCA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCAKLSAgICA4MywgODcsIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgCi0gICAgMTI4LCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgCi0gICAgODUsIDg0LCAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAKLSAgICAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIAotICAgIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgCi0gICAgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCAKLSAgICA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIAotICAgIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgCi0gICAgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCAKLSAgICA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIAotICAgIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAKLSAgICAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCAKLSAgICA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIAotICAgIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIAotICAgIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIAotICAgIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgCi0gICAgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCAKLSAgICA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIAotICAgIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgCi0gICAgODMsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCAKLSAgICA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIAotICAgIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgCi0gICAgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgCi0gICAgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCAKLSAgICA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgCi0gICAgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIAotICAgIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCAKLSAgICA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIAotICAgIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgCi0gICAgMjA4LCA4MywgODUsIDY1LCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NSwgNjksIDc4LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDgzLCA4NSwgNjUsIDEyOCwgODMsIDIxMywgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIDg5LCAKLSAgICAxMjgsIDgzLCA4NCwgODUsIDY3LCA3NSwgNDUsIDc5LCA4NSwgMjEyLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA4MywgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NywgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU1LCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTMsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCAKLSAgICA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgMTI4LCA4MywgODQsIAotICAgIDgyLCA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgCi0gICAgMTk2LCA4MywgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCAKLSAgICA4NCwgODIsIDY5LCA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAKLSAgICAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIAotICAgIDg0LCA4MiwgNjUsIDczLCA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKLSAgICA4MywgODMsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgCi0gICAgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCAKLSAgICA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAKLSAgICAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCAKLSAgICA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIAotICAgIDgzLCA4NCwgNzMsIDc2LCAxOTcsIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgCi0gICAgODMsIDg0LCA2OSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgMjA1LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCAKLSAgICA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgCi0gICAgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODIsIDIxMiwgODMsIAotICAgIDg0LCA2NSwgODIsIDgzLCAxMjgsIDgzLCA4NCwgNjUsIDgyLCA4MiwgNjksIDE5NiwgODMsIDg0LCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDgzLCA4NCwgNjUsIDIxMCwgODMsIDg0LCA2NSwgNzgsIDY4LCA4MywgODQsIAotICAgIDczLCA3NiwgNzYsIDEyOCwgODMsIDg0LCA2NSwgNzgsIDY4LCA2NSwgODIsIDE5NiwgODMsIDg0LCA2NSwgNzgsIDY4LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIAotICAgIDY1LCA3MCwgNzAsIDEyOCwgODMsIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIAotICAgIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgCi0gICAgODgsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgCi0gICAgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCAKLSAgICA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIAotICAgIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIAotICAgIDgzLCA3MiwgNjksIDEyOCwgODMsIDgzLCA2OSwgODgsIDEyOCwgODMsIDgzLCA2OSwgODAsIDEyOCwgODMsIDgzLCA2OSwgCi0gICAgNjksIDEyOCwgODMsIDgzLCA2NSwgODgsIDEyOCwgODMsIDgzLCA2NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgODAsIDEyOCwgCi0gICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCAKLSAgICA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgCi0gICAgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzcsIDczLCA2OSwgCi0gICAgODUsIDc3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MywgODMsIDY1LCAKLSAgICA3OCwgNzEsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDY1LCA4MiwgCi0gICAgNjUsIDY5LCA2NSwgMTI4LCA4MywgODMsIDY1LCA2NSwgMTI4LCA4MywgODMsIDY1LCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgCi0gICAgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCAKLSAgICA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjUsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgODMsIDEyOCwgODMsIAotICAgIDgxLCA4NSwgNjUsIDgyLCA2OSwgNjgsIDEyOCwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgCi0gICAgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIDgwLCA4MiwgNzksIDg1LCA4NCwgMTI4LCA4MywgODAsIDgyLCAKLSAgICA3MywgNzgsIDcxLCA4MywgMTI4LCA4MywgODAsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4MCwgODIsIDY5LCA2NywgNzIsIAotICAgIDcxLCA2OSwgODMsIDY1LCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NSwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc5LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDc5LCA3OSwgNzgsIDEyOCwgODMsIDgwLCA3NiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA4MCwgNzYsIDY1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MywgODAsIDczLCA4MiwgNzMsIDg0LCA4NSwgMjExLCA4MywgODAsIAotICAgIDczLCA4MiwgNzMsIDg0LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA3MywgMjEyLCA4MywgODAsIDczLCA4MiwgNjUsIDc4LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDczLCA4MiwgNjUsIDc2LCAxMjgsIDgzLCA4MCwgNzMsIDgyLCA2NSwgMjA0LCA4MywgODAsIDczLCAKLSAgICA2OCwgNjksIDgyLCAyMTcsIDgzLCA4MCwgNzMsIDY3LCA2OSwgMTI4LCA4MywgODAsIDcyLCA2OSwgODIsIDczLCA2NywgNjUsIAotICAgIDIwNCwgODMsIDgwLCA2OSwgODMsIDc3LCA3MywgNzYsIDIwNywgODMsIDgwLCA2OSwgNjksIDY4LCA2NiwgNzksIDY1LCA4NCwgCi0gICAgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDcyLCAxMjgsIDgzLCA4MCwgNjksIDY5LCA2NywgMjAwLCA4MywgODAsIDY5LCAKLSAgICA2NywgNzMsIDY1LCA3NiwgMTI4LCA4MywgODAsIDY5LCA2NSwgODIsIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgMjEwLCA4MywgODAsIDY5LCA2NSwgNzUsIDQ1LCA3OCwgNzksIDQ1LCA2OSwgCi0gICAgODYsIDczLCAyMDQsIDgzLCA4MCwgNjUsIDg0LCA3MiwgNzMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNzMsIDc4LCAKLSAgICAxOTksIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCA2OSwgODIsIAotICAgIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDEyOCwgODMsIDgwLCA2NSwgNzEsIDcyLCA2OSwgODQsIDg0LCA3MywgCi0gICAgMTI4LCA4MywgODAsIDY1LCA2OCwgNjksIDgzLCAxMjgsIDgzLCA4MCwgNjUsIDY4LCAxOTcsIDgzLCA4MCwgNjUsIDY3LCAKLSAgICA3MywgNzgsIDE5OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgODMsIDgwLCAxMjgsIDgzLCA3OSwgODksIDEyOCwgODMsIDc5LCAKLSAgICA4NywgNzMsIDc2LCAyMDcsIDgzLCA3OSwgODcsIDEyOCwgODMsIDc5LCA4NSwgODQsIDcyLCA2OSwgODIsIDIwNiwgODMsIAotICAgIDc5LCA4NSwgODQsIDcyLCA0NSwgODMsIDc2LCA2NSwgODYsIDY5LCAyMTcsIDgzLCA3OSwgODUsIDg0LCAyMDAsIDgzLCA3OSwgCi0gICAgODUsIDgyLCA2NywgNjksIDEyOCwgODMsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDgzLCA3OSwgODUsIDc4LCAxOTYsIDgzLCAKLSAgICA3OSwgODUsIDc4LCA2NSwgODAsIDEyOCwgODMsIDc5LCA4NSwgMTI4LCA4MywgNzksIDgzLCAxMjgsIDgzLCA3OSwgODEsIAotICAgIDEyOCwgODMsIDc5LCA3OSwgMjA2LCA4MywgNzksIDc5LCAxMjgsIDgzLCA3OSwgNzgsIDc0LCA2NSwgNzcsIDEyOCwgODMsIAotICAgIDc5LCA3OCwgNzEsIDEyOCwgODMsIDc5LCA3OCwgMTI4LCA4MywgNzksIDc3LCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgCi0gICAgODUsIDgzLCAxMjgsIDgzLCA3OSwgNzYsIDczLCA2OCwgODUsIDIxMSwgODMsIDc5LCA3MSwgNjgsIDczLCA2NSwgMjA2LCAKLSAgICA4MywgNzksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgMjA2LCA4MywgCi0gICAgNzksIDcwLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCA4MywgNzksIDE5OCwgODMsIDc5LCAKLSAgICA2NywgNzMsIDY5LCA4NCwgODksIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIDgzLCA3OSwgNjUsIDgwLCAxMjgsIAotICAgIDgzLCA3OSwgNjUsIDEyOCwgODMsIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgCi0gICAgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCAKLSAgICA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIAotICAgIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIAotICAgIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgCi0gICAgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIAotICAgIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgMTI4LCA4MywgNzcsIDY1LCA4MywgCi0gICAgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCA3NiwgMTI4LCA4MywgNzYsIDg1LCAKLSAgICA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIDIxNSwgODMsIDc2LCA3OSwgODYsIAotICAgIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDc5LCA4MCwgCi0gICAgNjksIDEyOCwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIDY5LCA2OSwgODAsIDIxNywgODMsIAotICAgIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgNzMsIDE5NSwgODMsIDc2LCA2NSwgCi0gICAgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCA4MywgMjAwLCA4MywgNzYsIDY1LCAKLSAgICA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIDEyOCwgODMsIDc1LCA4NSwgNzYsIAotICAgIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgNzksIDIwNiwgODMsIDc1LCA3MywgCi0gICAgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgNzUsIDY5LCA4NywgNjksIDE5NiwgCi0gICAgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgODQsIAotICAgIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNzIsIDIxMSwgODMsIDczLCA4OCwgCi0gICAgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIDg0LCAyMDAsIDgzLCA3MywgODgsIAotICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCAKLSAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDgzLCA3MywgCi0gICAgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgNzMsIDgyLCA3MywgNzgsIDcxLCAKLSAgICA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgzLCA3MywgNzksIAotICAgIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MywgCi0gICAgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCAKLSAgICA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgCi0gICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgzLCAKLSAgICA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgCi0gICAgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCAKLSAgICA4MywgNzMsIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgCi0gICAgMTk3LCA4MywgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCAKLSAgICA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgCi0gICAgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIDg1LCAKLSAgICAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgNzUsIAotICAgIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCA2OSwgCi0gICAgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgMTI4LCAKLSAgICA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgNzMsIAotICAgIDEyOCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgCi0gICAgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgCi0gICAgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCAKLSAgICA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgCi0gICAgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgCi0gICAgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgCi0gICAgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCAKLSAgICA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgCi0gICAgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCAKLSAgICA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIAotICAgIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgCi0gICAgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCAKLSAgICA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIAotICAgIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgCi0gICAgNzMsIDc3LCA4MCwgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDc5LCAKLSAgICA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCA3OSwgODQsIAotICAgIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDIxMSwgODMsIDcyLCA3OSwgCi0gICAgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIDY5LCAxMjgsIDgzLCAKLSAgICA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgCi0gICAgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODQsIDg5LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIAotICAgIDcxLCA0NSwgODMsIDc5LCAyMDQsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzksIDgzLCAKLSAgICAyMTEsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzgsIDY1LCA4NSwgMTk2LCA4MywgNzIsIAotICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAKLSAgICA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgCi0gICAgODQsIDg3LCA3MywgNzEsIDQ1LCA2NiwgNzQsIDY1LCA4MiwgNzUsIDY1LCAyMDYsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIAotICAgIDg0LCA4NywgNzMsIDcxLCA0NSwgNjUsIDIxMCwgODMsIDcyLCA3OSwgODIsIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCAKLSAgICAyMTIsIDgzLCA3MiwgNzksIDgxLCAxMjgsIDgzLCA3MiwgNzksIDIwOSwgODMsIDcyLCA3OSwgODAsIDEyOCwgODMsIDcyLCAKLSAgICA3OSwgNzksIDg0LCA3MywgNzgsIDE5OSwgODMsIDcyLCA3OSwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDc5LCAxMjgsIAotICAgIDgzLCA3MiwgNzksIDcxLCAyMDEsIDgzLCA3MiwgNzksIDE5OSwgODMsIDcyLCA3OSwgNjksIDEyOCwgODMsIDcyLCA3OSwgCi0gICAgMTk3LCA4MywgNzIsIDc5LCA2NSwgMTI4LCA4MywgNzIsIDc5LCAxMjgsIDgzLCA3MiwgNzMsIDg5LCA4OSwgNjUsIDY1LCAKLSAgICA3NiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgMTkzLCA4MywgNzIsIAotICAgIDczLCA4MiwgMjEyLCA4MywgNzIsIDczLCA4MiwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNzMsIDgyLCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDIxMCwgODMsIDcyLCA3MywgODEsIDEyOCwgODMsIDcyLCA3MywgODAsIDEyOCwgODMsIDcyLCA3MywgNzgsIDg0LCAKLSAgICAyMDcsIDgzLCA3MiwgNzMsIDc4LCA3MywgNzEsIDEyOCwgODMsIDcyLCA3MywgNzgsIDY4LCAxOTMsIDgzLCA3MiwgNzMsIAotICAgIDc4LCAxMjgsIDgzLCA3MiwgNzMsIDIwNiwgODMsIDcyLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MiwgNzMsIDc3LCAxOTMsIAotICAgIDgzLCA3MiwgNzMsIDc3LCAxMjgsIDgzLCA3MiwgNzMsIDIwNSwgODMsIDcyLCA3MywgNzMsIDc4LCAxMjgsIDgzLCA3MiwgCi0gICAgNzMsIDczLCAxMjgsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDgzLCA3MiwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgODMsIDcyLCAKLSAgICA3MywgNjgsIDEyOCwgODMsIDcyLCA3MywgMTk2LCA4MywgNzIsIDcyLCA2NSwgMTI4LCA4MywgNzIsIDcyLCAxOTMsIDgzLCAKLSAgICA3MiwgNjksIDg4LCAxMjgsIDgzLCA3MiwgNjksIDg2LCA2NSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgODgsIDEyOCwgODMsIAotICAgIDcyLCA2OSwgODUsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgODQsIDg1LCAxMjgsIDgzLCA3MiwgCi0gICAgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDcyLCA2OSwgODQsIAorICAgIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCA4MywgODcsIAorICAgIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgMTI4LCA4MywgCisgICAgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgNzMsIDc3LCAKKyAgICA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCA3MywgCisgICAgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCA4NywgCisgICAgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIDY1LCAKKyAgICA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgODMsIAorICAgIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgCisgICAgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIAorICAgIDgzLCA4NSwgODIsIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgCisgICAgNjgsIDEyOCwgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCAKKyAgICA4MywgODUsIDgyLCA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIAorICAgIDY1LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgCisgICAgODUsIDgwLCA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCAKKyAgICA4MCwgNjksIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgCisgICAgODMsIDY5LCAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIAorICAgIDIxMCwgODMsIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIAorICAgIDc5LCAxMjgsIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgCisgICAgODUsIDc4LCA4MiwgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCAKKyAgICA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgCisgICAgMTI4LCA4MywgODUsIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIAorICAgIDcyLCAxMjgsIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgCisgICAgNzgsIDEyOCwgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgCisgICAgODUsIDczLCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MiwgODUsIDgyLCAKKyAgICAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCA4MywgODUsIDY3LCAKKyAgICA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDIxMSwgODMsIDg1LCA2NywgNjcsIAorICAgIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgCisgICAgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCAKKyAgICA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIAorICAgIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA2OSwgMjEyLCA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgCisgICAgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIDg1LCA3OCwgNjcsIDg0LCA3MywgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCAKKyAgICA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIAorICAgIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgCisgICAgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIDY2LCA3MywgODQsIDc5LCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKKyAgICA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgODIsIDc5LCA4NSwgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgCisgICAgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA4OSwgCisgICAgMTI4LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCAKKyAgICA3OSwgNzUsIDY5LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAyMTEsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1NywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTYsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDU1LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAKKyAgICA0NSwgNTMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUyLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIAorICAgIDQ1LCA1MSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA4NCwgODIsIDc5LCAKKyAgICA3NSwgNjksIDQ1LCA0OSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDE5NywgODMsIDg0LCA4MiwgNzMsIDgwLCA2OSwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA4MywgODQsIDgyLCAKKyAgICA3MywgNzUsIDY5LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA4MywgODQsIDgyLCA3MywgNjgsIDY5LCAxMjgsIAorICAgIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDc2LCAyMTcsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCA2OSwgMTk2LCA4MywgCisgICAgODQsIDgyLCA2OSwgODMsIDIxMSwgODMsIDg0LCA4MiwgNjksIDc4LCA3MSwgODQsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCAKKyAgICA2NSwgNzcsIDY5LCA4MiwgMTI4LCA4MywgODQsIDgyLCA2NSwgODcsIDY2LCA2OSwgODIsIDgyLCA4OSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA2NSwgODQsIDg1LCA3NywgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCAxMjgsIDgzLCA4NCwgCisgICAgODIsIDY1LCA4NCwgODUsIDIwNSwgODMsIDg0LCA4MiwgNjUsIDg0LCA3MywgNjUsIDIwNiwgODMsIDg0LCA4MiwgNjUsIDczLCAKKyAgICA3OCwgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIAorICAgIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgCisgICAgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAKKyAgICAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCAKKyAgICA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDgzLCA4NCwgNzMsIDc2LCAyMDQsIDgzLCA4NCwgNzMsIDc2LCAxOTcsIAorICAgIDgzLCA4NCwgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDg0LCA2OSwgODAsIDEyOCwgODMsIDg0LCA2OSwgNzcsIDEyOCwgCisgICAgODMsIDg0LCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIDg0LCA2OSwgNjUsIDc3LCAxMjgsIDgzLCA4NCwgNjksIDY1LCAKKyAgICAyMDUsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDg1LCAxMjgsIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDgzLCAxMjgsIAorICAgIDgzLCA4NCwgNjUsIDg2LCA4MiwgNzksIDIxMSwgODMsIDg0LCA2NSwgODUsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODQsIDg1LCAxOTcsIDgzLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgODIsIDgzLCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMjEyLCA4MywgODQsIDY1LCA4MiwgODMsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA4MywgODQsIDY1LCA4MiwgNzUsIDEyOCwgODMsIDg0LCA2NSwgCisgICAgODIsIDEyOCwgODMsIDg0LCA2NSwgMjEwLCA4MywgODQsIDY1LCA3OCwgNjgsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCAKKyAgICA4MywgODQsIDY1LCA3OCwgNjgsIDY1LCA4MiwgMTk2LCA4MywgODQsIDY1LCA3OCwgNjgsIDEyOCwgODMsIDg0LCA2NSwgNzgsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgNzYsIDc2LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NCwgNjUsIDcwLCA3MCwgMTI4LCA4MywgCisgICAgODQsIDY1LCA3MCwgMTk4LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCAKKyAgICA2NSwgODQsIDczLCA4MywgODMsIDczLCA3NywgNzksIDEyOCwgODMsIDg0LCA1MCwgMTI4LCA4MywgODMsIDg5LCA4OCwgCisgICAgMTI4LCA4MywgODMsIDg5LCA4NCwgMTI4LCA4MywgODMsIDg5LCA4MiwgODgsIDEyOCwgODMsIDgzLCA4OSwgODIsIDEyOCwgCisgICAgODMsIDgzLCA4OSwgODAsIDEyOCwgODMsIDgzLCA4OSwgMTI4LCA4MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODMsIDg1LCAKKyAgICA4NSwgMTI4LCA4MywgODMsIDg1LCA4NCwgMTI4LCA4MywgODMsIDg1LCA4MCwgMTI4LCA4MywgODMsIDc5LCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDc5LCA4NCwgMTI4LCA4MywgODMsIDc5LCA4MCwgMTI4LCA4MywgODMsIDc5LCA3OSwgMTI4LCA4MywgODMsIAorICAgIDc5LCAxMjgsIDgzLCA4MywgNzMsIDg4LCAxMjgsIDgzLCA4MywgNzMsIDg0LCAxMjgsIDgzLCA4MywgNzMsIDgwLCAxMjgsIAorICAgIDgzLCA4MywgNzMsIDczLCAxMjgsIDgzLCA4MywgNzMsIDY5LCA4OCwgMTI4LCA4MywgODMsIDczLCA2OSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA3MywgNjksIDEyOCwgODMsIDgzLCA3MywgMTI4LCA4MywgODMsIDcyLCA2OSwgMTI4LCA4MywgODMsIDY5LCAKKyAgICA4OCwgMTI4LCA4MywgODMsIDY5LCA4MCwgMTI4LCA4MywgODMsIDY5LCA2OSwgMTI4LCA4MywgODMsIDY1LCA4OCwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA4NSwgMTI4LCA4MywgODMsIDY1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA4MCwgMTI4LCA4MywgODMsIAorICAgIDY1LCA3OCwgNzEsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDcyLCA3MywgNjksIAorICAgIDg1LCA4NCwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDgzLCA2NSwgCisgICAgNzgsIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NywgNzMsIDY5LCA4NSwgNzcsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgNjUsIDgyLCA2NSwgNjksIAorICAgIDY1LCAxMjgsIDgzLCA4MywgNjUsIDczLCAxMjgsIDgzLCA4MywgNjUsIDY1LCAxMjgsIDgzLCA4MywgNTEsIDEyOCwgODMsIAorICAgIDgzLCA1MCwgMTI4LCA4MywgODIsIDEyOCwgODMsIDgxLCA4NSwgNzMsIDgzLCAyMDAsIDgzLCA4MSwgODUsIDczLCA4MiwgCisgICAgODIsIDY5LCAyMDQsIDgzLCA4MSwgODUsIDczLCA3MSwgNzEsIDc2LCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIAorICAgIDY1LCA4MiwgNjksIDEyOCwgODMsIDgwLCA4NywgNjUsIDEyOCwgODMsIDgwLCA4NSwgNzgsIDcxLCAyMTEsIDgzLCA4MCwgCisgICAgODIsIDc5LCA4NSwgODQsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCA3MSwgODMsIDEyOCwgODMsIDgwLCA4MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA4MywgODAsIDgyLCA2OSwgNjcsIDcyLCA3MSwgNjksIDgzLCA2NSwgNzgsIDE5OSwgODMsIDgwLCA3OSwgODUsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgODMsIDgwLCA3OSwgODQsIDEyOCwgODMsIDgwLCA3OSwgNzksIDc4LCAxMjgsIDgzLCA4MCwgCisgICAgNzYsIDczLCA4NCwgODQsIDczLCA3OCwgMTk5LCA4MywgODAsIDc2LCA2NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODMsIDgwLCAKKyAgICA3MywgODIsIDczLCA4NCwgODUsIDIxMSwgODMsIDgwLCA3MywgODIsIDczLCA4NCwgMTI4LCA4MywgODAsIDczLCA4MiwgNzMsIAorICAgIDIxMiwgODMsIDgwLCA3MywgODIsIDY1LCA3OCwgODQsIDEyOCwgODMsIDgwLCA3MywgODIsIDY1LCA3NiwgMTI4LCA4MywgCisgICAgODAsIDczLCA4MiwgNjUsIDIwNCwgODMsIDgwLCA3MywgNjgsIDY5LCA4MiwgMjE3LCA4MywgODAsIDczLCA2NywgNjksIAorICAgIDEyOCwgODMsIDgwLCA3MiwgNjksIDgyLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA4MCwgNjksIDgzLCA3NywgNzMsIDc2LCAKKyAgICAyMDcsIDgzLCA4MCwgNjksIDY5LCA2OCwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDgwLCA2OSwgNjksIDY3LCA3MiwgCisgICAgMTI4LCA4MywgODAsIDY5LCA2OSwgNjcsIDIwMCwgODMsIDgwLCA2OSwgNjcsIDczLCA2NSwgNzYsIDEyOCwgODMsIDgwLCAKKyAgICA2OSwgNjUsIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIAorICAgIDIxMCwgODMsIDgwLCA2OSwgNjUsIDc1LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgODAsIDY1LCA4NCwgCisgICAgNzIsIDczLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIDczLCA3OCwgMTk5LCA4MywgODAsIDY1LCA4MiwgNzUsIDc2LCAKKyAgICA2OSwgODMsIDEyOCwgODMsIDgwLCA2NSwgODIsIDc1LCA3NiwgNjksIDgyLCAxMjgsIDgzLCA4MCwgNjUsIDgyLCA3NSwgNzYsIAorICAgIDY5LCAxMjgsIDgzLCA4MCwgNjUsIDcxLCA3MiwgNjksIDg0LCA4NCwgNzMsIDEyOCwgODMsIDgwLCA2NSwgNjgsIDY5LCA4MywgCisgICAgMTI4LCA4MywgODAsIDY1LCA2OCwgMTk3LCA4MywgODAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgzLCA4MCwgNjUsIDY3LCAKKyAgICAxOTcsIDgzLCA4MCwgNjUsIDEyOCwgODMsIDc5LCA4OSwgMTI4LCA4MywgNzksIDg3LCA3MywgNzYsIDIwNywgODMsIDc5LCAKKyAgICA4NywgMTI4LCA4MywgNzksIDg1LCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA4MywgNzksIDg1LCA4NCwgNzIsIDQ1LCA4MywgNzYsIAorICAgIDY1LCA4NiwgNjksIDIxNywgODMsIDc5LCA4NSwgODQsIDIwMCwgODMsIDc5LCA4NSwgODIsIDY3LCA2OSwgMTI4LCA4MywgCisgICAgNzksIDg1LCA3OCwgNjgsIDEyOCwgODMsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDc5LCA4NSwgNzgsIDY1LCA4MCwgMTI4LCAKKyAgICA4MywgNzksIDg1LCAxMjgsIDgzLCA3OSwgODMsIDEyOCwgODMsIDc5LCA4MiwgMTkzLCA4MywgNzksIDgxLCAxMjgsIDgzLCAKKyAgICA3OSwgNzksIDIwNiwgODMsIDc5LCA3OCwgNzQsIDY1LCA3NywgMTI4LCA4MywgNzksIDc4LCA3MSwgMTI4LCA4MywgNzksIAorICAgIDc4LCAxMjgsIDgzLCA3OSwgNzcsIDgwLCA2OSwgNzgsIDE5OSwgODMsIDc5LCA3NywgMTI4LCA4MywgNzksIDc2LCA3MywgCisgICAgNjgsIDg1LCA4MywgMTI4LCA4MywgNzksIDc2LCA3MywgNjgsIDg1LCAyMTEsIDgzLCA3OSwgNzIsIDEyOCwgODMsIDc5LCAKKyAgICA3MSwgNjgsIDczLCA2NSwgMjA2LCA4MywgNzksIDcwLCA4NCwgODcsIDY1LCA4MiwgNjksIDQ1LCA3MCwgODUsIDc4LCA2NywgCisgICAgODQsIDczLCA3OSwgMjA2LCA4MywgNzksIDcwLCA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDc5LCA3MCwgMjEyLCAKKyAgICA4MywgNzksIDE5OCwgODMsIDc5LCA2NywgNzMsIDY5LCA4NCwgODksIDEyOCwgODMsIDc5LCA2NywgNjcsIDY5LCAyMTAsIAorICAgIDgzLCA3OSwgNjUsIDgwLCAxMjgsIDgzLCA3OSwgNjUsIDEyOCwgODMsIDIwNywgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgCisgICAgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIDY5LCAKKyAgICAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgCisgICAgMTI4LCA4MywgNzgsIDc5LCA4NSwgODQsIDEyOCwgODMsIDc4LCA3OSwgODUsIDIxMiwgODMsIDc4LCA2NSwgMjA4LCA4MywgCisgICAgNzgsIDY1LCA3NSwgNjksIDEyOCwgODMsIDc4LCA2NSwgNzUsIDE5NywgODMsIDc4LCA2NSwgNzMsIDc2LCAxMjgsIDgzLCAKKyAgICA3OCwgMTkzLCA4MywgNzcsIDc5LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA3NywgNzMsIDgyLCA3NSwgNzMsIDc4LCAxOTksIAorICAgIDgzLCA3NywgNzMsIDc2LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA3NywgNjksIDY1LCA4MiwgCisgICAgMTI4LCA4MywgNzcsIDY1LCA4MywgMjAwLCA4MywgNzcsIDY1LCA3NiwgNzYsIDY5LCAyMTAsIDgzLCA3NywgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA4MywgNzYsIDg1LCA4MiwgMTI4LCA4MywgNzYsIDc5LCA4NywgNzYsIDg5LCAxMjgsIDgzLCA3NiwgNzksIAorICAgIDIxNSwgODMsIDc2LCA3OSwgODYsIDc5LCAxMjgsIDgzLCA3NiwgNzksIDIxMiwgODMsIDc2LCA3OSwgODAsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzYsIDc5LCA4MCwgNjksIDEyOCwgODMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3NiwgNzMsIDY3LCA2OSwgMTI4LCA4MywgNzYsIDczLCA2NywgMTk3LCA4MywgNzYsIAorICAgIDY5LCA2OSwgODAsIDIxNywgODMsIDc2LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgODMsIDc2LCA2NSwgODYsIDc5LCA3OCwgCisgICAgNzMsIDE5NSwgODMsIDc2LCA2NSwgODYsIDY5LCAxMjgsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA4MywgNzYsIDY1LCAKKyAgICA4MywgMjAwLCA4MywgNzYsIDY1LCA3OCwgODQsIDY5LCAxOTYsIDgzLCA3NSwgODcsIDY1LCAxMjgsIDgzLCA3NSwgODcsIAorICAgIDEyOCwgODMsIDc1LCA4NSwgNzYsIDc2LCAxMjgsIDgzLCA3NSwgODUsIDc2LCAyMDQsIDgzLCA3NSwgNzYsIDczLCA4MiwgCisgICAgNzksIDIwNiwgODMsIDc1LCA3MywgNzgsIDEyOCwgODMsIDc1LCA3MywgNjksIDgyLCAxMjgsIDgzLCA3NSwgMjAxLCA4MywgCisgICAgNzUsIDY5LCA4NywgNjksIDE5NiwgODMsIDc1LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA3NSwgMTI4LCA4MywgNzQsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgODksIAorICAgIDEyOCwgODMsIDczLCA4OCwgODQsIDIxNywgODMsIDczLCA4OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCisgICAgNzIsIDIxMSwgODMsIDczLCA4OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDgzLCAKKyAgICAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODMsIDczLCA4OCwgODQsIDY5LCA2OSwgNzgsIAorICAgIDg0LCAyMDAsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDIwNiwgCisgICAgODMsIDczLCA4OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDczLCA4OCwgNDUsIDgzLCA4NCwgODIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgNzMsIDg4LCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDgzLCA3MywgODgsIDQ1LCA3NiwgCisgICAgNzMsIDc4LCAxOTcsIDgzLCA3MywgMjE2LCA4MywgNzMsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDgzLCA2NSwgMTI4LCA4MywgCisgICAgNzMsIDgyLCA3MywgNzgsIDcxLCA4NSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIAorICAgIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzIsIDczLCAKKyAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDgzLCA3MywgNzksIDgzLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzcsIDczLCAKKyAgICA2OSwgODUsIDc3LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA4MywgNzMsIDc5LCA4MywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDcyLCA3MywgCisgICAgNjksIDg1LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MywgNzMsIDc5LCAKKyAgICA4MywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgzLCA3MywgNzksIDIxMSwgODMsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgNDUsIDgzLCA3MiwgNzMsIDcwLCA4NCwgNDUsIDUxLCAKKyAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgzLCA3MywgCisgICAgNzgsIDcxLCA3NiwgMTk3LCA4MywgNzMsIDc4LCA3MSwgNjUsIDY1LCA4NCwgMTI4LCA4MywgNzMsIDc4LCAxOTcsIDgzLCAKKyAgICA3MywgNzgsIDY4LCA3MiwgMjAxLCA4MywgNzMsIDIwNiwgODMsIDczLCA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgCisgICAgMTk2LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCA4MiwgMTI4LCA4MywgNzMsIDc3LCA3MywgNzYsIDY1LCAyMTAsIDgzLCAKKyAgICA3MywgNzcsIDY1LCA3OCwgODMsIDczLCAyMTEsIDgzLCA3MywgNzcsIDY1LCA3NiwgODUsIDc4LCA3MSwgODUsIDIwNiwgODMsIAorICAgIDczLCA3NywgNjUsIDEyOCwgODMsIDczLCA3NiwgODYsIDY5LCA4MiwgMTI4LCA4MywgNzMsIDc2LCA3NSwgMTI4LCA4MywgCisgICAgNzMsIDc2LCA3MywgODEsIDg1LCAxOTMsIDgzLCA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgzLCAKKyAgICA3MywgNzYsIDcyLCA3OSwgODUsIDY5LCA4NCwgODQsIDE5NywgODMsIDczLCA3NiwgNjUsIDUxLCAxMjgsIDgzLCA3MywgNzUsIAorICAgIDczLCAxMjgsIDgzLCA3MywgNzUsIDUwLCAxMjgsIDgzLCA3MywgNzUsIDE3OCwgODMsIDczLCA3MSwgNzgsIDgzLCAxMjgsIAorICAgIDgzLCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgNzMsIDcxLCA3NywgMTkzLCA4MywgNzMsIDcxLCA2OSwgMjA0LCA4MywgCisgICAgNzMsIDcxLCA1MiwgMTI4LCA4MywgNzMsIDcxLCAxODAsIDgzLCA3MywgNzEsIDEyOCwgODMsIDczLCA2OSwgNjksIDEyOCwgCisgICAgODMsIDczLCA2OCwgNjksIDg3LCA2NSwgODksIDIxMSwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDgzLCAKKyAgICA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgMjAxLCA4MywgNzIsIDg5LCA4OCwgMTI4LCAKKyAgICA4MywgNzIsIDg5LCA4NCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4OSwgODIsIDEyOCwgODMsIAorICAgIDcyLCA4OSwgODAsIDEyOCwgODMsIDcyLCA4OSwgNjksIDEyOCwgODMsIDcyLCA4OSwgNjUsIDEyOCwgODMsIDcyLCA4OSwgCisgICAgMTI4LCA4MywgNzIsIDg3LCA3OSwgODksIDEyOCwgODMsIDcyLCA4NywgNzksIDc5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCAKKyAgICAxMjgsIDgzLCA3MiwgODcsIDczLCA3MywgMTI4LCA4MywgNzIsIDg3LCA3MywgMTI4LCA4MywgNzIsIDg3LCA2OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgODUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgCisgICAgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCA4NSwgNzAsIAorICAgIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgCisgICAgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAKKyAgICAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCAKKyAgICA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3OCwgNjksIDEyOCwgODMsIDcyLCA4MiwgNzMsIDc3LCA4MCwgCisgICAgMTI4LCA4MywgNzIsIDgyLCA3MywgNzMsIDEyOCwgODMsIDcyLCA3OSwgODksIDEyOCwgODMsIDcyLCA3OSwgODgsIDEyOCwgCisgICAgODMsIDcyLCA3OSwgODcsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA3MiwgNzksIDg0LCAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgODMsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCAyMTEsIAorICAgIDgzLCA3MiwgNzksIDgyLCA4NCwgNjksIDc4LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA2NywgNjUsIDc1LCAKKyAgICA2OSwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg5LCA4MiwgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDg0LCA4OSwgMjEwLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCAKKyAgICA4NCwgODcsIDczLCA3MSwgNDUsIDgzLCA3OSwgMjA0LCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgCisgICAgNDUsIDc5LCA4MywgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDc4LCA2NSwgODUsIAorICAgIDE5NiwgODMsIDcyLCA3OSwgODIsIDg0LCA0NSwgODQsIDg3LCA3MywgNzEsIDQ1LCA3NywgNjUsIDY4LCAyMTAsIDgzLCA3MiwgCisgICAgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDgzLCA3MiwgNzksIAorICAgIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgNjYsIDc0LCA2NSwgODIsIDc1LCA2NSwgMjA2LCA4MywgNzIsIDc5LCAKKyAgICA4MiwgODQsIDQ1LCA4NCwgODcsIDczLCA3MSwgNDUsIDY1LCAyMTAsIDgzLCA3MiwgNzksIDgyLCA4NCwgMTI4LCA4MywgNzIsIAorICAgIDc5LCA4MiwgMjEyLCA4MywgNzIsIDc5LCA4MSwgMTI4LCA4MywgNzIsIDc5LCAyMDksIDgzLCA3MiwgNzksIDgwLCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDc5LCA4NCwgNzMsIDc4LCAxOTksIDgzLCA3MiwgNzksIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA4MywgNzIsIDc5LCA3MSwgMjAxLCA4MywgNzIsIDc5LCAxOTksIDgzLCA3MiwgNzksIDY5LCAxMjgsIDgzLCA3MiwgCisgICAgNzksIDE5NywgODMsIDcyLCA3OSwgNjUsIDEyOCwgODMsIDcyLCA3OSwgMTI4LCA4MywgNzIsIDczLCA4OSwgODksIDY1LCAKKyAgICA2NSwgNzYsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDczLCA4NCwgNjUsIDEyOCwgODMsIDcyLCA3MywgODQsIDE5MywgODMsIAorICAgIDcyLCA3MywgODIsIDIxMiwgODMsIDcyLCA3MywgODIsIDY1LCA2OSwgMTI4LCA4MywgNzIsIDczLCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDczLCAyMTAsIDgzLCA3MiwgNzMsIDgxLCAxMjgsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCAKKyAgICA4NCwgMjA3LCA4MywgNzIsIDczLCA3OCwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNzMsIDc4LCA2OCwgMTkzLCA4MywgNzIsIAorICAgIDczLCA3OCwgMTI4LCA4MywgNzIsIDczLCAyMDYsIDgzLCA3MiwgNzMsIDc3LCA2NSwgMTI4LCA4MywgNzIsIDczLCA3NywgCisgICAgMTkzLCA4MywgNzIsIDczLCA3NywgMTI4LCA4MywgNzIsIDczLCAyMDUsIDgzLCA3MiwgNzMsIDczLCA3OCwgMTI4LCA4MywgCisgICAgNzIsIDczLCA3MywgMTI4LCA4MywgNzIsIDczLCA3MCwgMjEyLCA4MywgNzIsIDczLCA2OSwgNzYsIDY4LCAxMjgsIDgzLCAKKyAgICA3MiwgNzMsIDY4LCAxMjgsIDgzLCA3MiwgNzMsIDE5NiwgODMsIDcyLCA3MiwgNjUsIDEyOCwgODMsIDcyLCA3MiwgMTkzLCAKKyAgICA4MywgNzIsIDY5LCA4OCwgMTI4LCA4MywgNzIsIDY5LCA4NiwgNjUsIDEyOCwgODMsIDcyLCA2OSwgODUsIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNjksIDg1LCA3OSwgODEsIDEyOCwgODMsIDcyLCA2OSwgODUsIDY1LCA2OSwgODEsIDg0LCA4NSwgMTI4LCA4MywgCisgICAgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA3MiwgNjksIDg0LCAKICAgICAxMjgsIDgzLCA3MiwgNjksIDIxMiwgODMsIDcyLCA2OSwgODMsIDcyLCA3NiwgNjUsIDc3LCAxMjgsIDgzLCA3MiwgNjksIAogICAgIDgzLCA3MiwgNzMsIDcxLCAxMjgsIDgzLCA3MiwgNjksIDgzLCA3MiwgNzMsIDE5OSwgODMsIDcyLCA2OSwgODMsIDcyLCA1MCwgCiAgICAgMTI4LCA4MywgNzIsIDY5LCA4MywgNzIsIDEyOCwgODMsIDcyLCA2OSwgODEsIDY5LCAyMDQsIDgzLCA3MiwgNjksIDgwLCAKQEAgLTg4MCwzNzYgKzk4NCwzODQgQEAKICAgICAxMjgsIDgzLCA3MiwgNjksIDY5LCAyMDYsIDgzLCA3MiwgNjksIDY5LCAxMjgsIDgzLCA3MiwgNjksIDQ1LCA3MSwgNzksIAogICAgIDY1LCA4NCwgMTI4LCA4MywgNzIsIDE5NywgODMsIDcyLCA2NywgNzIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDg5LCAxMjgsIAogICAgIDgzLCA3MiwgNjUsIDg4LCAxMjgsIDgzLCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODQsIDEyOCwgODMsIDcyLCAKLSAgICA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIAotICAgIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCA2OSwgODMsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIAotICAgIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgNzcsIDgyLCA3OSwgNjcsIDc1LCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA4NCwgNzMsIAotICAgIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgCi0gICAgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAotICAgIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIAotICAgIDc5LCAyMTAsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgNzEsIDEyOCwgODMsIDY5LCA4OCwgODQsIAotICAgIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAKLSAgICAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIAotICAgIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgCi0gICAgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCAKLSAgICA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIAotICAgIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgCi0gICAgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAKLSAgICAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIAotICAgIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAKLSAgICAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCAKLSAgICAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCA3NywgODUsIAotICAgIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAyMTIsIDgzLCAKLSAgICA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIDczLCA3OCwgCi0gICAgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgNzMsIDY3LCAKLSAgICA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCA3NywgNzMsIAotICAgIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgNzYsIDE5NywgCi0gICAgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCA3OSwgNzMsIAotICAgIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTcsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTEsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgCi0gICAgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDQ5LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MywgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MywgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU2LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU2LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTYsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDgsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1NCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NiwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKLSAgICA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU0LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDQ5LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCi0gICAgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUzLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MywgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MCwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MCwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTQsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTEsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU1LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNDgsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIAotICAgIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgCi0gICAgNjksIDY5LCA3OCwgODUsIDEyOCwgODMsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCAKLSAgICA2OCwgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCAKLSAgICA4MywgNjksIDY2LCA2NSwgODQsIDY2LCA2OSwgNzMsIDIxMiwgODMsIDY5LCA2NSwgODQsIDEyOCwgODMsIDY5LCA2NSwgNzYsIAotICAgIDEyOCwgODMsIDY5LCA2NSwgNzEsIDg1LCA3NiwgMjA0LCA4MywgNjgsIDc5LCA3OCwgMTk5LCA4MywgNjgsIDEyOCwgODMsIAotICAgIDY3LCA4NywgNjUsIDEyOCwgODMsIDY3LCA4MiwgODUsIDgwLCA3NiwgNjksIDEyOCwgODMsIDY3LCA4MiwgNzksIDc2LCA3NiwgCi0gICAgMTI4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY3LCAKLSAgICA4MiwgNjksIDY5LCAyMDYsIDgzLCA2NywgODIsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgNjcsIDc5LCA4MiwgODAsIAotICAgIDczLCA4NSwgODMsIDEyOCwgODMsIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzMsIDgzLCA4MywgNzksIDgyLCA4MywgCi0gICAgMTI4LCA4MywgNjcsIDcyLCA4NywgNjUsIDEyOCwgODMsIDY3LCA3MiwgODcsIDE5MywgODMsIDY3LCA3MiwgODIsIDc5LCAKLSAgICA2OSwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDc2LCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCi0gICAgMjA0LCA4MywgNjcsIDcyLCA3OSwgNzYsIDY1LCA4MiwgMTI4LCA4MywgNjcsIDcyLCA2OSwgNzcsIDE5MywgODMsIDY3LCAKLSAgICA2OSwgODAsIDg0LCA2OSwgMjEwLCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgODUsIDgzLCAxMjgsIDgzLCA2NywgNjUsIAotICAgIDc4LCA2OCwgNzMsIDY3LCA4NSwgMjExLCA4MywgNjcsIDY1LCAyMDYsIDgzLCA2NywgNjUsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgODMsIDY2LCA4NSwgMTk0LCA4MywgNjYsIDgyLCA4NSwgMjA0LCA4MywgNjUsIDg5LCA3MywgODMsIDIwMSwgODMsIDY1LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODMsIDY1LCA4OSwgMTI4LCA4MywgNjUsIDg4LCA3OSwgODAsIDcyLCA3OSwgNzgsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgODgsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDg3LCA2NSwgNzgsIDEyOCwgCi0gICAgODMsIDY1LCA4NywgMTI4LCA4MywgNjUsIDg2LCA3OSwgODUsIDgyLCA3MywgNzgsIDE5OSwgODMsIDY1LCA4NSwgNzMsIDc2LCAKLSAgICAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAKLSAgICAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIAotICAgIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIAotICAgIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgCi0gICAgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCAKLSAgICA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgCi0gICAgMTI4LCA4MywgNjUsIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgCi0gICAgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCAKLSAgICA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIAotICAgIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgCi0gICAgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCAKLSAgICA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIAotICAgIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgCi0gICAgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAKLSAgICAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIAotICAgIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgCi0gICAgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIAotICAgIDEyOCwgODMsIDY1LCA3MSwgNzMsIDg0LCA4NCwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NSwgNzEsIDY1LCAKLSAgICAxMjgsIDgzLCA2NSwgNzEsIDEyOCwgODMsIDY1LCAxOTksIDgzLCA2NSwgNzAsIDcyLCA2NSwgMTI4LCA4MywgNjUsIDY4LCAKLSAgICA3MiwgNjksIDEyOCwgODMsIDY1LCA2OCwgNjksIDEyOCwgODMsIDY1LCA2OCwgMTI4LCA4MywgNjUsIDE5NiwgODMsIDY1LCAKLSAgICA2NywgODIsIDczLCA3MCwgNzMsIDY3LCA3MywgNjUsIDIwNCwgODMsIDY1LCA2NSwgNzMsIDEyOCwgODMsIDY1LCA2NSwgNjgsIAotICAgIDcyLCA4NSwgMTI4LCA4MywgNjUsIDQ1LCA3MywgMTI4LCA4MywgNDgsIDUyLCA1NCwgMTI4LCA4MywgNDgsIDUyLCA1MywgCi0gICAgMTI4LCA4MywgNDgsIDUyLCA1MiwgMTI4LCA4MywgNDgsIDUyLCA1MSwgMTI4LCA4MywgNDgsIDUyLCA1MCwgMTI4LCA4MywgCi0gICAgNDgsIDUyLCA0OSwgMTI4LCA4MywgNDgsIDUyLCA0OCwgMTI4LCA4MywgNDgsIDUxLCA1NywgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA1NiwgMTI4LCA4MywgNDgsIDUxLCA1NSwgMTI4LCA4MywgNDgsIDUxLCA1NCwgMTI4LCA4MywgNDgsIDUxLCA1MywgNjUsIAotICAgIDEyOCwgODMsIDQ4LCA1MSwgNTMsIDEyOCwgODMsIDQ4LCA1MSwgNTIsIDEyOCwgODMsIDQ4LCA1MSwgNTEsIDEyOCwgODMsIAotICAgIDQ4LCA1MSwgNTAsIDEyOCwgODMsIDQ4LCA1MSwgNDksIDEyOCwgODMsIDQ4LCA1MSwgNDgsIDEyOCwgODMsIDQ4LCA1MCwgCi0gICAgNTcsIDEyOCwgODMsIDQ4LCA1MCwgNTYsIDEyOCwgODMsIDQ4LCA1MCwgNTUsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY2LCAKLSAgICAxMjgsIDgzLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgMTI4LCA4MywgNDgsIDUwLCA1MywgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1MiwgMTI4LCA4MywgNDgsIDUwLCA1MSwgMTI4LCA4MywgNDgsIDUwLCA1MCwgMTI4LCA4MywgNDgsIAotICAgIDUwLCA0OSwgMTI4LCA4MywgNDgsIDUwLCA0OCwgMTI4LCA4MywgNDgsIDQ5LCA1NywgMTI4LCA4MywgNDgsIDQ5LCA1NiwgCi0gICAgMTI4LCA4MywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODMsIDQ4LCA0OSwgNTUsIDEyOCwgODMsIDQ4LCA0OSwgNTQsIDEyOCwgCi0gICAgODMsIDQ4LCA0OSwgNTMsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY2LCAxMjgsIDgzLCA0OCwgNDksIDUyLCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1MiwgMTI4LCA4MywgNDgsIDQ5LCA1MSwgMTI4LCA4MywgNDgsIDQ5LCA1MCwgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA0OSwgMTI4LCA4MywgNDgsIDQ5LCA0OCwgMTI4LCA4MywgNDgsIDQ4LCA1NywgMTI4LCA4MywgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA4MywgNDgsIDQ4LCA1NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTQsIDEyOCwgCi0gICAgODMsIDQ4LCA0OCwgNTMsIDEyOCwgODMsIDQ4LCA0OCwgNTIsIDEyOCwgODMsIDQ4LCA0OCwgNTEsIDEyOCwgODMsIDQ4LCAKLSAgICA0OCwgNTAsIDY1LCAxMjgsIDgzLCA0OCwgNDgsIDUwLCAxMjgsIDgzLCA0OCwgNDgsIDQ5LCAxMjgsIDgzLCA0NSwgODcsIAotICAgIDEyOCwgODMsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgODIsIDg5LCA4OSwgMTI4LCA4MiwgODksIDg4LCAxMjgsIAotICAgIDgyLCA4OSwgODQsIDEyOCwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODksIDgwLCAxMjgsIAotICAgIDgyLCA4OSwgNjUsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgCi0gICAgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgCi0gICAgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4NSwgODMsIDczLCAxMjgsIDgyLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDgyLCA4NSwgODIsIDEyOCwgODIsIDg1LCA4MCwgNzMsIDczLCAxMjgsIDgyLCA4NSwgODAsIAotICAgIDY5LCAxOTcsIDgyLCA4NSwgODAsIDEyOCwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDg1LCA3OSwgODAsIDEyOCwgODIsIAotICAgIDg1LCA3OSwgMTI4LCA4MiwgODUsIDc4LCA3OSwgODUsIDg0LCAxMjgsIDgyLCA4NSwgNzgsIDc4LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDg1LCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA4MiwgODUsIDc4LCAxMjgsIDgyLCA4NSwgNzcsIDIwMSwgODIsIDg1LCAKLSAgICA3NywgNjUsIDIwMSwgODIsIDg1LCA3NywgMTI4LCA4MiwgODUsIDIwNSwgODIsIDg1LCA3NiwgNjksIDgyLCAxMjgsIDgyLCAKLSAgICA4NSwgNzYsIDY5LCA0NSwgNjgsIDY5LCA3NiwgNjUsIDg5LCA2OSwgNjgsIDEyOCwgODIsIDg1LCA3NiwgNjksIDEyOCwgODIsIAotICAgIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAKLSAgICAyMTcsIDgyLCA4NSwgMTk0LCA4MiwgODUsIDY1LCAxMjgsIDgyLCA4NCwgNzIsIDY1LCA3OCwgMTk5LCA4MiwgODQsIDY1LCAKLSAgICA3MSwgODMsIDEyOCwgODIsIDg0LCA2NSwgNzEsIDIxMSwgODIsIDgyLCA4OSwgODgsIDEyOCwgODIsIDgyLCA4OSwgODQsIAotICAgIDEyOCwgODIsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODksIDgyLCAxMjgsIDgyLCA4MiwgODksIDgwLCAxMjgsIAotICAgIDgyLCA4MiwgODUsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDg0LCAxMjgsIDgyLCA4MiwgODUsIDgyLCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDg1LCA4MiwgMTI4LCA4MiwgODIsIDg1LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgODgsIDEyOCwgODIsIDgyLCAKLSAgICA4NSwgNzksIDEyOCwgODIsIDgyLCA4NSwgMTI4LCA4MiwgODIsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDc5LCA4NCwgMTI4LCAKLSAgICA4MiwgODIsIDc5LCA4MCwgMTI4LCA4MiwgODIsIDc5LCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIAotICAgIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIAotICAgIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCAxMjgsIDgyLCA3OSwgODcsIDY2LCA3OSwgCi0gICAgNjUsIDg0LCAxMjgsIDgyLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDc5LCA4NSwgNzgsIDY4LCA0NSwgODQsIDczLCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDgyLCA3OSwgODQsIDg1LCA3OCwgNjgsIDY1LCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIAotICAgIDE5NiwgODIsIDc5LCA4MywgNzIsIDEyOCwgODIsIDc5LCA4MywgNjksIDg0LCA4NCwgNjksIDEyOCwgODIsIDc5LCA4MywgCi0gICAgNjksIDEyOCwgODIsIDc5LCA3OSwgODQsIDEyOCwgODIsIDc5LCA3OSwgODMsIDg0LCA2OSwgODIsIDEyOCwgODIsIDc5LCAKLSAgICA3OSwgNzUsIDEyOCwgODIsIDc5LCA3OSwgNzAsIDEyOCwgODIsIDc5LCA3OSwgMTI4LCA4MiwgNzksIDc3LCA2NSwgMjA2LCAKLSAgICA4MiwgNzksIDc3LCAxMjgsIDgyLCA3OSwgNzYsIDc2LCA2OSwgMjEwLCA4MiwgNzksIDE5NiwgODIsIDc5LCA2NywgNzUsIAotICAgIDY5LCA4NCwgMTI4LCA4MiwgNzksIDY3LCAyMDMsIDgyLCA3OSwgNjcsIDEyOCwgODIsIDc5LCA2NiwgNjUsIDg0LCAxMjgsIAotICAgIDgyLCA3OSwgNjUsIDgzLCA4NCwgNjksIDE5NiwgODIsIDc5LCA2NSwgODIsIDEyOCwgODIsIDc5LCA2NSwgMTI4LCA4MiwgCi0gICAgNzgsIDg5LCA3MywgNzgsIDE5OSwgODIsIDc4LCA3OSwgNzksIDc4LCAxMjgsIDgyLCA3OCwgNzksIDc5LCAyMDYsIDgyLCAKLSAgICA3OCwgNjUsIDIwNSwgODIsIDc0LCA2OSwgMjExLCA4MiwgNzQsIDY5LCAxMjgsIDgyLCA3NCwgMTk3LCA4MiwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDEyOCwgODIsIDczLCA4NCwgODUsIDY1LCA3NiwgMTI4LCA4MiwgNzMsIDg0LCA4NCwgNzksIDgyLCA4NSwgCi0gICAgMTI4LCA4MiwgNzMsIDg0LCA4MywgNzMsIDEyOCwgODIsIDczLCA4MywgNzMsIDc4LCAxOTksIDgyLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3MywgODIsIDY1LCAxMjgsIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCAKLSAgICA3OCwgNzAsIDc5LCA4MiwgOTAsIDY1LCA3OCwgNjgsIDc5LCAxMjgsIDgyLCA3MywgMjA2LCA4MiwgNzMsIDc3LCA3MSwgNjYsIAotICAgIDY1LCAxMjgsIDgyLCA3MywgNzUsIDgyLCA3MywgNzUsIDEyOCwgODIsIDczLCA3MywgMTI4LCA4MiwgNzMsIDcxLCA4NiwgCi0gICAgNjksIDY4LCA3MywgMTk1LCA4MiwgNzMsIDcxLCA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDc5LCA0NSwgNzYsIDY5LCA3MCwgCi0gICAgMjEyLCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDcxLCAKLSAgICA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgCi0gICAgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgODIsIDczLCA3MSwgNzIsIDg0LCAKLSAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDQ1LCA3MiwgCi0gICAgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgCi0gICAgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODQsIDczLCAKLSAgICA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgCi0gICAgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MCwgNzIsIAotICAgIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKLSAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDgwLCA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgNzMsIAotICAgIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3NSwgNzMsIDg5LCAKLSAgICA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODIsIDczLCAKLSAgICA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgCi0gICAgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIAotICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKLSAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNjcsIDczLCA2OSwgODUsIAotICAgIDY3LCAxMjgsIDgyLCA3MywgNjksIDg1LCAyMDQsIDgyLCA3MywgNjksIDc2LCAxMjgsIDgyLCA3MywgNjksIDY5LCAxMjgsIAotICAgIDgyLCA3MywgNjcsIDY5LCA3NywgMTI4LCA4MiwgNzMsIDY3LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCAxOTcsIDgyLCA3MywgCi0gICAgNjYsIDY2LCA3OSwgNzgsIDEyOCwgODIsIDczLCA2NSwgMjA0LCA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCAKLSAgICA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKLSAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDEyOCwgODIsIAotICAgIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDE5NiwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4MiwgNjksIDg1LCA4OCwgCi0gICAgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIDg0LCAKLSAgICA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgNzksIAotICAgIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCA4MiwgCi0gICAgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIDg0LCAKLSAgICAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgNjksIAotICAgIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIDgzLCAKLSAgICAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgNzgsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCAKLSAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgCi0gICAgMTI4LCA4MiwgNjksIDgwLCAxOTMsIDgyLCA2OSwgNzgsIDg0LCA3OSwgNzEsIDY5LCA3OCwgMTI4LCA4MiwgNjksIDc4LCAKLSAgICAxMjgsIDgyLCA2OSwgMjA2LCA4MiwgNjksIDc3LCA4NSwgMTI4LCA4MiwgNjksIDc3LCA2OSwgNjgsIDg5LCAxMjgsIDgyLCAKLSAgICA2OSwgNzYsIDczLCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA3MywgNjksIDg2LCA2OSwgMTk2LCA4MiwgNjksIAotICAgIDc2LCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIDc2LCA2NSwgNjUsIDEyOCwgODIsIDY5LCA3NCwgNjUsIDc4LCAKLSAgICAxOTksIDgyLCA2OSwgNzMsIDE5NiwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgMTI4LCA4MiwgNjksIAotICAgIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTAsIDEyOCwgCi0gICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgMjExLCA4MiwgNjksIDcxLCAKLSAgICA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgyLCA2OSwgNzEsIAotICAgIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgCisgICAgODYsIDczLCA2NSwgMjA2LCA4MywgNzIsIDY1LCA4NiwgNjksIDE5NiwgODMsIDcyLCA2NSwgODUsIDEyOCwgODMsIDcyLCAKKyAgICA2NSwgODQsIDEyOCwgODMsIDcyLCA2NSwgODIsIDg1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAyMTMsIDgzLCA3MiwgNjUsIAorICAgIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgODIsIDUwLCAxMjgsIDgzLCA3MiwgNjUsIDgyLCAxNzgsIDgzLCA3MiwgNjUsIDgwLCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgODMsIDcyLCA2NSwgODAsIDE5NywgODMsIDcyLCA2NSwgODAsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCAxMjgsIDgzLCA3MiwgNjUsIDIwNiwgODMsIDcyLCA2NSwgCisgICAgNzcsIDgyLCA3OSwgNjcsIDc1LCAxMjgsIDgzLCA3MiwgNjUsIDc2LCA4MywgNzIsIDY5LCA3NiwgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDc1LCA4NCwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIAorICAgIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAxMjgsIDgzLCA3MiwgNjUsIDY4LCA2OCwgNjUsIDEyOCwgODMsIDcyLCA2NSwgCisgICAgNjgsIDY4LCAxOTMsIDgzLCA3MiwgNjUsIDY4LCAxMjgsIDgzLCA3MiwgNjUsIDE5NiwgODMsIDcyLCA2NSwgNjYsIDU0LCAKKyAgICAxMjgsIDgzLCA3MiwgNjUsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDU0LCAxMjgsIDgzLCA3MiwgNjUsIDUxLCAxMjgsIDgzLCAKKyAgICA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgNjcsIDEyOCwgODMsIDcxLCAKKyAgICA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCAKKyAgICA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIAorICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgCisgICAgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCAKKyAgICA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIAorICAgIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgCisgICAgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCAKKyAgICA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIAorICAgIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgCisgICAgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAKKyAgICAyMTEsIDgzLCA2OSwgODEsIDg1LCA2OSwgNzgsIDY3LCAxOTcsIDgzLCA2OSwgODAsIDg0LCA2OSwgNzcsIDY2LCA2OSwgODIsIAorICAgIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgCisgICAgNzksIDIxMCwgODMsIDY5LCA3OCwgODQsIDc5LCAxMjgsIDgzLCA2OSwgNzgsIDg0LCA3MywgMTI4LCA4MywgNjksIDc3LCAKKyAgICA4NSwgNzgsIDY3LCA3MywgMTkzLCA4MywgNjksIDc3LCA3NSwgNjUsIDg0LCA3MiwgMTI4LCA4MywgNjksIDc3LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDc3LCA3MywgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDY5LCA3NywgNzMsIDgzLCA3OSwgNzAsIAorICAgIDIxMiwgODMsIDY5LCA3NywgNzMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA3NywgCisgICAgNzMsIDc4LCA3MywgNzcsIDE5MywgODMsIDY5LCA3NywgNzMsIDY4LCA3MywgODIsIDY5LCA2NywgMjEyLCA4MywgNjksIDc3LCAKKyAgICA3MywgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgMjA2LCA4MywgNjksIAorICAgIDc3LCA3MywgNjcsIDczLCA4MiwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODMsIDY5LCA3NywgNzMsIDY3LCA3MywgODIsIDY3LCAKKyAgICA3NiwgMTk3LCA4MywgNjksIDc3LCA3MywgNjYsIDgyLCA2OSwgODYsIDczLCAyMTEsIDgzLCA2OSwgNzcsIDczLCA0NSwgODYsIAorICAgIDc5LCA3MywgNjcsIDY5LCAxOTYsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgCisgICAgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIAorICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIAorICAgIDE5MywgODMsIDY5LCA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIAorICAgIDgzLCA2OSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNjksIDY5LCAKKyAgICA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNjcsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgODIsIDY5LCA4NCwgCisgICAgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCAKKyAgICA4MywgNjksIDY1LCA4NCwgMTI4LCA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIAorICAgIDgzLCA2OCwgNzksIDc4LCAxOTksIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgCisgICAgODAsIDc2LCA2OSwgMTI4LCA4MywgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIAorICAgIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgCisgICAgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIDEyOCwgODMsIAorICAgIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgNjksIDY4LCA2OSwgCisgICAgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIDIwNCwgODMsIDY3LCAKKyAgICA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgNjksIDgwLCA4NCwgNjksIAorICAgIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCA3OCwgNjgsIDczLCA2NywgCisgICAgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIDgzLCA2NiwgODUsIDE5NCwgCisgICAgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4MywgNjUsIAorICAgIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODcsIDEyOCwgCisgICAgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDg0LCAKKyAgICA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAxMjgsIDgzLCA2NSwgODQsIAorICAgIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgMTk3LCA4MywgNjUsIDg0LCA2NywgCisgICAgNzIsIDY5LCA3NiwgMTI4LCA4MywgNjUsIDg0LCA2NSwgNzgsIDcxLCA2NSwgMTI4LCA4MywgNjUsIDgzLCA3MiwgMTI4LCAKKyAgICA4MywgNjUsIDgzLCA2NSwgNzUsIDEyOCwgODMsIDY1LCA4MiwgNzMsIDEyOCwgODMsIDY1LCA4MiwgMTkzLCA4MywgNjUsIAorICAgIDgyLCAxMjgsIDgzLCA2NSwgODEsIDEyOCwgODMsIDY1LCA4MCwgNjUsIDEyOCwgODMsIDY1LCA3OCwgODksIDc5LCA3OSwgCisgICAgNzEsIDE5MywgODMsIDY1LCA3OCwgODksIDY1LCA3NSwgMTkzLCA4MywgNjUsIDc4LCA4NCwgNzMsIDczLCA3NywgODUsIAorICAgIDEyOCwgODMsIDY1LCA3OCwgNzgsIDg5LCA2NSwgMTI4LCA4MywgNjUsIDc4LCA3MSwgNjUsIDUwLCAxMjgsIDgzLCA2NSwgCisgICAgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAxMjgsIAorICAgIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2OSwgCisgICAgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgODMsIDY1LCAKKyAgICA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA4MiwgNjksIAorICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIDEyOCwgCisgICAgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgNjUsIDcyLCAKKyAgICA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCA2NSwgMTI4LCAKKyAgICA4MywgNjUsIDc2LCA0NSwgNjUsIDc3LCA3NywgNzksIDc4LCA3MywgNjUsIDY3LCAxMjgsIDgzLCA2NSwgNzYsIDEyOCwgODMsIAorICAgIDY1LCA3NSwgNzksIDg0LCAxMjgsIDgzLCA2NSwgNzUsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDgzLCA2NSwgNzUsIDE5NywgCisgICAgODMsIDY1LCA3NCwgNjgsIDY1LCA3MiwgMTI4LCA4MywgNjUsIDczLCA3NiwgNjYsIDc5LCA2NSwgODQsIDEyOCwgODMsIDY1LCAKKyAgICA3MywgNzYsIDEyOCwgODMsIDY1LCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODMsIDY1LCA3MiwgMTI4LCA4MywgNjUsIAorICAgIDcxLCA3MywgODQsIDg0LCA2NSwgODIsIDczLCA4NSwgODMsIDEyOCwgODMsIDY1LCA3MSwgNjUsIDEyOCwgODMsIDY1LCA3MSwgCisgICAgMTI4LCA4MywgNjUsIDE5OSwgODMsIDY1LCA3MCwgNzIsIDY1LCAxMjgsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgCisgICAgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCAKKyAgICA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIAorICAgIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgCisgICAgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCAKKyAgICA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgCisgICAgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgCisgICAgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIAorICAgIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIAorICAgIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgCisgICAgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgCisgICAgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAKKyAgICAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCAKKyAgICA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIAorICAgIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIAorICAgIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgCisgICAgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCAKKyAgICA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCAKKyAgICA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgCisgICAgMTI4LCA4MiwgODUsIDc1LCA3NSwgNjUsIDc1LCA3MiwgNjUsIDEyOCwgODIsIDg1LCA3MywgODMsIDEyOCwgODIsIDg1LCAKKyAgICA3MSwgNjYsIDIxNywgODIsIDg1LCAxOTQsIDgyLCA4NSwgNjUsIDEyOCwgODIsIDg0LCA3MiwgNjUsIDc4LCAxOTksIDgyLCAKKyAgICA4NCwgNjUsIDcxLCA4MywgMTI4LCA4MiwgODQsIDY1LCA3MSwgMjExLCA4MiwgODIsIDg5LCA4OCwgMTI4LCA4MiwgODIsIAorICAgIDg5LCA4NCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4OSwgODIsIDEyOCwgODIsIDgyLCA4OSwgCisgICAgODAsIDEyOCwgODIsIDgyLCA4NSwgODgsIDEyOCwgODIsIDgyLCA4NSwgODUsIDEyOCwgODIsIDgyLCA4NSwgODQsIDEyOCwgCisgICAgODIsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDgyLCA4MiwgODUsIDgyLCAxMjgsIDgyLCA4MiwgODUsIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA3OSwgMTI4LCA4MiwgODIsIDg1LCAxMjgsIDgyLCA4MiwgNzksIAorICAgIDg4LCAxMjgsIDgyLCA4MiwgNzksIDg0LCAxMjgsIDgyLCA4MiwgNzksIDgwLCAxMjgsIDgyLCA4MiwgNzksIDc5LCAxMjgsIAorICAgIDgyLCA4MiwgNzksIDEyOCwgODIsIDgyLCA3MywgNzMsIDEyOCwgODIsIDgyLCA3MywgMTI4LCA4MiwgODIsIDY5LCA4OCwgCisgICAgMTI4LCA4MiwgODIsIDY5LCA4NCwgMTI4LCA4MiwgODIsIDY5LCA4MCwgMTI4LCA4MiwgODIsIDY5LCA3MiwgMTI4LCA4MiwgCisgICAgODIsIDY5LCAyMDAsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDgyLCA4MiwgNjksIDEyOCwgODIsIDgyLCA2NSwgODgsIDEyOCwgCisgICAgODIsIDgyLCA2NSwgODUsIDEyOCwgODIsIDgyLCA2NSwgNzMsIDEyOCwgODIsIDgyLCA2NSwgNjUsIDEyOCwgODIsIDgyLCAKKyAgICA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIAorICAgIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCAKKyAgICA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIAorICAgIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgCisgICAgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCAKKyAgICA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDY5LCAyMTAsIDgyLCA3OSwgNzIsIAorICAgIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgMTk2LCA4MiwgNzksIDY3LCA3NSwgNjksIDg0LCAxMjgsIDgyLCA3OSwgCisgICAgNjcsIDIwMywgODIsIDc5LCA2NywgMTI4LCA4MiwgNzksIDY2LCA2NSwgODQsIDEyOCwgODIsIDc5LCA2NSwgODMsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNzksIDY1LCA4MiwgMTI4LCA4MiwgNzksIDY1LCAxMjgsIDgyLCA3OCwgODksIDczLCA3OCwgMTk5LCAKKyAgICA4MiwgNzgsIDc5LCA3OSwgNzgsIDEyOCwgODIsIDc4LCA3OSwgNzksIDIwNiwgODIsIDc4LCA2NSwgMjA1LCA4MiwgNzcsIAorICAgIDg0LCAxMjgsIDgyLCA3NiwgNzksIDEyOCwgODIsIDc2LCA3NywgMTI4LCA4MiwgNzYsIDY5LCAxMjgsIDgyLCA3NCwgNjksIAorICAgIDIxMSwgODIsIDc0LCA2OSwgMTI4LCA4MiwgNzQsIDE5NywgODIsIDczLCA4NiwgNjksIDgyLCAxMjgsIDgyLCA3MywgODQsIAorICAgIDg1LCA2NSwgNzYsIDEyOCwgODIsIDczLCA4NCwgODQsIDc5LCA4MiwgODUsIDEyOCwgODIsIDczLCA4NCwgODMsIDczLCAKKyAgICAxMjgsIDgyLCA3MywgODMsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA4MiwgNzMsIDgyLCA2NSwgMTI4LCAKKyAgICA4MiwgNzMsIDgwLCAxMjgsIDgyLCA3MywgNzgsIDcxLCAyMTEsIDgyLCA3MywgNzgsIDcwLCA3OSwgODIsIDkwLCA2NSwgNzgsIAorICAgIDY4LCA3OSwgMTI4LCA4MiwgNzMsIDIwNiwgODIsIDczLCA3NywgNzEsIDY2LCA2NSwgMTI4LCA4MiwgNzMsIDc1LCA4MiwgCisgICAgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCAKKyAgICA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIAorICAgIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgCisgICAgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIAorICAgIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDY4LCA2OSwgMTk2LCA4MiwgNzMsIAorICAgIDcxLCA3MiwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCAKKyAgICA3OCwgMTk5LCA4MiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgCisgICAgNjksIDc5LCA4MiwgNzMsIDc4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIAorICAgIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgODQsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIAorICAgIDg1LCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCAKKyAgICA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgCisgICAgNjksIDg1LCA3NywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCAKKyAgICA3MywgNjksIDg1LCA3NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgCisgICAgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCAKKyAgICA4NSwgNzYsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIAorICAgIDEyOCwgODIsIDczLCA2OSwgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIAorICAgIDgyLCA3MywgNjcsIDE5NywgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgCisgICAgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MSwgCisgICAgODksIDczLCA3OCwgNzEsIDgzLCAxMjgsIDgyLCA3MSwgODksIDY1LCA3OCwgMTI4LCA4MiwgNzEsIDg5LCAxOTMsIDgyLCAKKyAgICA2OSwgODYsIDc5LCA3NiwgODYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDg2LCA3OSwgNzYsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDg2LCA3NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNzMsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCAKKyAgICA4MiwgODMsIDY5LCA2OCwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIAorICAgIDgzLCAxOTcsIDgyLCA2OSwgODUsIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCAKKyAgICA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIAorICAgIDgwLCA3MywgNzgsIDg1LCA4MywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgCisgICAgODQsIDgyLCA3MywgNjcsIDg0LCA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCAKKyAgICA4MywgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIAorICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgODMsIDczLCA2OCwgNjksIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCAKKyAgICA3MSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIAorICAgIDY5LCA3OCwgODQsIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgCisgICAgNzIsIDEyOCwgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIAorICAgIDgwLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgCisgICAgODQsIDc5LCA3MSwgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAKKyAgICAxMjgsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIDY5LCAxMjgsIDgyLCA2OSwgCisgICAgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCAKKyAgICA2OSwgNzYsIDY1LCA2NSwgMTI4LCA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIAorICAgIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUyLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCA0NSwgNTEsIDEyOCwgCisgICAgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgMTI4LCAKKyAgICA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCAyMTEsIDgyLCA2OSwgNzEsIDczLCA4MywgODQsIDY5LCA4MiwgNjksIDE5NiwgODIsIAorICAgIDY5LCA3MSwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA3MSwgNzMsIDY1LCA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgCisgICAgNzMsIDY1LCAxMjgsIDgyLCA2OSwgNzAsIDc5LCA4MiwgNzcsIDY5LCAxOTYsIDgyLCA2OSwgNzAsIDY5LCA4MiwgNjksIDc4LCAKICAgICA2NywgMTk3LCA4MiwgNjksIDY4LCA4NSwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNjksIAogICAgIDY3LCA4OSwgNjcsIDc2LCA3MywgNzgsIDE5OSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODIsIDY5LCA2NywgCiAgICAgODQsIDczLCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIApAQCAtMTI2NSw1NiArMTM3Nyw1NyBAQAogICAgIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAKICAgICAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIAogICAgIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIAotICAgIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIDEyOCwgODIsIDY1LCA3MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIDEyOCwgODIsIDY1LCAKLSAgICA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgNjUsIDczLCA3NiwgCi0gICAgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCA3MywgMTI4LCA4MiwgCi0gICAgNjUsIDcyLCA3NywgNjUsIDg0LCA4NSwgNzYsIDc2LCA2NSwgMjAwLCA4MiwgNjUsIDcwLCA2OSwgMTI4LCA4MiwgNjUsIDY5LCAKLSAgICA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCA4MiwgNjUsIDY4LCA3MywgNzksIAotICAgIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCAKLSAgICA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgNzEsIDEyOCwgODIsIDY1LCA2NiwgNjYsIAotICAgIDczLCA4NCwgMTI4LCA4MiwgNjUsIDY2LCA2NiwgNzMsIDIxMiwgODIsIDY1LCA2NiwgMTI4LCA4MiwgNjUsIDY1LCA3MywgCi0gICAgMTI4LCA4MiwgNjUsIDY1LCAxMjgsIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgCi0gICAgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgCi0gICAgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCAKLSAgICA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIAotICAgIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgCi0gICAgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCAKLSAgICA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgCi0gICAgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCAKLSAgICA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCAKLSAgICA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCAKLSAgICA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCAKLSAgICA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCAKLSAgICA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCAKLSAgICA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgCi0gICAgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIAotICAgIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAKLSAgICAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIAotICAgIDIxMSwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIDgxLCA4NSwgNzMsIDEyOCwgODEsIAotICAgIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIAotICAgIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAKLSAgICAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAxMjgsIAotICAgIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgCi0gICAgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCAKLSAgICA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIDY1LCA2OCwgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIAotICAgIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCAKLSAgICA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAKLSAgICAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgCi0gICAgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgCi0gICAgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDY5LCA4OCwgMTI4LCA4MSwgNzMsIDY5LCA4NCwgMTI4LCA4MSwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA4MSwgNzMsIDY5LCAxMjgsIDgxLCA3MywgMTI4LCA4MSwgNzIsIDg3LCA3MywgMTI4LCA4MSwgCi0gICAgNzIsIDg3LCA2OSwgNjksIDEyOCwgODEsIDcyLCA4NywgNjksIDEyOCwgODEsIDcyLCA4NywgNjUsIDY1LCAxMjgsIDgxLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgxLCA3MiwgODUsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCAKLSAgICA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCAKKyAgICA2NiwgNjUsIDg0LCAxMjgsIDgyLCA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIAorICAgIDY1LCA2NSwgNzgsIDgzLCA2NSwgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgCisgICAgODMsIDY5LCAxOTYsIDgyLCA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAKKyAgICAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIAorICAgIDIwNywgODIsIDY1LCA3MywgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAKKyAgICAyMDAsIDgyLCA2NSwgNzIsIDEyOCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCAKKyAgICA2OCwgNzMsIDc5LCA2NSwgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIAorICAgIDczLCAyMDcsIDgyLCA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIAorICAgIDg1LCA2OSwgMjEyLCA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgCisgICAgODIsIDY1LCA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCAKKyAgICA1MSwgMTI4LCA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCAKKyAgICA0OCwgNTAsIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIAorICAgIDUzLCAxMjgsIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIAorICAgIDgyLCA0OCwgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgCisgICAgNDksIDU2LCAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCAKKyAgICA1NCwgMTI4LCA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTUsIDEyOCwgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgCisgICAgODIsIDQ4LCA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA4MiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIAorICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIAorICAgIDgxLCA4OSwgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIAorICAgIDgxLCA4OSwgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgCisgICAgMTI4LCA4MSwgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIAorICAgIDgxLCA4NywgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIAorICAgIDgxLCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIAorICAgIDgxLCA4NSwgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgCisgICAgMTI4LCA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgCisgICAgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCAKKyAgICA4MSwgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIAorICAgIDY3LCA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgCisgICAgNzgsIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCAKKyAgICA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgODUsIDcwLCAxMjgsIDgxLCAKKyAgICA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA2OSwgCisgICAgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgODEsIDg1LCA2NSwgODQsIDY5LCAKKyAgICA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIDEyOCwgODEsIDg1LCA2NSwgODIsIAorICAgIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgCisgICAgMjEwLCA4MSwgODUsIDY1LCA3OCwgODQsIDczLCA4NCwgMjE3LCA4MSwgODUsIDY1LCA2OCwgODIsIDg1LCA4MCwgNzYsIAorICAgIDE5NywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgNzgsIDg0LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCAKKyAgICAyMTIsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgCisgICAgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgCisgICAgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgCisgICAgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIAorICAgIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIAorICAgIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgCisgICAgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgCisgICAgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCAxMjgsIDgxLCA3MiwgNzMsIDEyOCwgODEsIDcyLCA2OSwgNjksIDEyOCwgCisgICAgODEsIDcyLCA2OSwgMTI4LCA4MSwgNzIsIDY1LCA2NSwgMTI4LCA4MSwgNzIsIDY1LCAxMjgsIDgxLCA3MSwgNjUsIDEyOCwgCiAgICAgODEsIDY5LCA4NCwgNjUsIDc4LCA2NSwgMTI4LCA4MSwgNjksIDY5LCAxMjgsIDgxLCA2OSwgMTI4LCA4MSwgNjUsIDg1LCAKICAgICAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCAKICAgICA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIApAQCAtMTMyOCwyOTcgKzE0NDEsMzA3IEBACiAgICAgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgMTI4LCA4MCwgCiAgICAgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgNjUsIDEyOCwgCiAgICAgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIDgwLCA4NSwgCi0gICAgODQsIDgyLCA2OSwgNzAsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA4NCwgMTI4LCA4MCwgODUsIAotICAgIDIxMiwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzgsIDEyOCwgODAsIDg1LCA4MywgNzIsIDgwLCA3MywgNzUsIDY1LCAKLSAgICAxMjgsIDgwLCA4NSwgODMsIDcyLCA3MywgNzgsIDE5OSwgODAsIDg1LCA4MiwgODgsIDEyOCwgODAsIDg1LCA4MiwgODMsIAotICAgIDY5LCAxMjgsIDgwLCA4NSwgODIsIDgwLCA3NiwgMTk3LCA4MCwgODUsIDgyLCA3MywgODQsIDg5LCAxMjgsIDgwLCA4NSwgCi0gICAgODIsIDczLCA3MCwgODksIDEyOCwgODAsIDg1LCA4MiwgMTI4LCA4MCwgODUsIDgxLCAxMjgsIDgwLCA4NSwgODAsIDEyOCwgCi0gICAgODAsIDg1LCA3OSwgODgsIDEyOCwgODAsIDg1LCA3OSwgODAsIDEyOCwgODAsIDg1LCA3OSwgMTI4LCA4MCwgODUsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA3NywgMTI4LCA4MCwgODUsIDc4LCA3MSwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIAotICAgIDczLCA3OSwgNzgsIDEyOCwgODAsIDg1LCA3OCwgNjcsIDg0LCA4NSwgNjUsIDg0LCA3MywgNzksIDIwNiwgODAsIDg1LCA3NywgCi0gICAgODAsIDEyOCwgODAsIDg1LCA3NywgMTI4LCA4MCwgODUsIDY5LCAxMjgsIDgwLCA4NSwgNjYsIDc2LCA3MywgMTk1LCA4MCwgCi0gICAgODUsIDY1LCA4MSwgMTI4LCA4MCwgODUsIDY1LCA2OSwgMTI4LCA4MCwgODUsIDUwLCAxMjgsIDgwLCA4NSwgMTI4LCA4MCwgCi0gICAgODQsIDcyLCA2NSwgNzIsIDE5MywgODAsIDg0LCA2OSwgMTI4LCA4MCwgODMsIDczLCA3NiwgMjAxLCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDcwLCA3MywgCi0gICAgODMsIDg0LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIAotICAgIDcwLCA3MywgODMsIDg0LCA3OSwgMjA2LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDc2LCA4OSwgNzEsIDczLCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA4MywgNzMsIDEyOCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCAKLSAgICA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIAotICAgIDc5LCA4MywgNzEsIDY5LCA3MSwgODIsIDY1LCA3NywgNzcsIDY5LCA3OCwgNzMsIDEyOCwgODAsIDgyLCA3OSwgODAsIDc5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA4MiwgNzksIDgwLCA2OSwgODIsIDg0LCAyMTcsIDgwLCA4MiwgNzksIDgwLCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4MCwgCi0gICAgODIsIDc5LCA3OSwgNzAsIDEyOCwgODAsIDgyLCA3OSwgNzYsIDc5LCA3OCwgNzEsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDc2LCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDE5NywgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIAotICAgIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDcwLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgCi0gICAgMTI4LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCAyMTIsIDgwLCA4MiwgNzMsIDg2LCA2NSwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNzMsIDgzLCA3MiwgODQsIDcyLCA2NSwgNzcsIDY1LCA4NCwgODIsIDE5MywgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgCi0gICAgMTI4LCA4MCwgODIsIDczLCA3OCwgODQsIDEyOCwgODAsIDgyLCA3MywgNzgsIDIxMiwgODAsIDgyLCA3MywgNzgsIDY3LCAKLSAgICA2OSwgODMsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIAotICAgIDY5LCA4NiwgNzMsIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgCi0gICAgODAsIDgyLCA2OSwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgwLCA3OSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDc4LCA3NSwgNzIsIDY1LCAxMjgsIDgwLCA4MiwgCi0gICAgNjksIDcwLCA2NSwgNjcsIDE5NywgODAsIDgyLCA2OSwgNjcsIDczLCA4MCwgNzMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgwLCAKLSAgICA4MiwgNjksIDY3LCA2OSwgNjgsIDczLCA3OCwgMTk5LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgODMsIDEyOCwgODAsIAotICAgIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDIxMSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDE5NiwgODAsIDgyLCA2OSwgCi0gICAgNjcsIDY5LCA2OCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgMTk3LCA4MCwgODIsIDY1LCA3NywgNDUsIDgwLCAKLSAgICA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIAotICAgIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgCi0gICAgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIDgyLCA2NSwgNzcsIDQ1LCAKLSAgICA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgNjUsIDc3LCAxMjgsIAotICAgIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgMTI4LCA4MCwgODAsIAotICAgIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgODIsIDIxMSwgODAsIAotICAgIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCA3OSwgODcsIDY4LCA2OSwgCi0gICAgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgMjE3LCA4MCwgNzksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIAotICAgIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgODAsIDc5LCA4MywgCi0gICAgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgODMsIDg0LCAxMjgsIDgwLCAKLSAgICA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODAsIDc5LCA4MiwgODIsIAotICAgIDY5LCA2NywgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDIxMSwgODAsIDc5LCA4MCwgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDgwLCA3OSwgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc2LCAKLSAgICA3MywgODMsIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIAotICAgIDY5LCAxMjgsIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgCi0gICAgNzUsIDc5LCA3NCwgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIAotICAgIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDEyOCwgODAsIDc5LCA3MywgNzgsIDIxMiwgODAsIDc5LCA2OSwgODQsIDgyLCAyMTcsIDgwLCAKLSAgICA3OSwgNjksIDg0LCA3MywgMTk1LCA4MCwgNzksIDY4LCA2NSwgODQsIDg1LCA4MywgMTI4LCA4MCwgNzksIDY1LCAxMjgsIAotICAgIDgwLCA3OSwgMTI4LCA4MCwgMjA3LCA4MCwgNzgsIDY5LCA4NSwgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODAsIDc2LCA4NSwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA3NiwgODUsIDgzLCA0NSwgNzcsIDczLCA3OCwgODUsIDIxMSwgODAsIDc2LCA4NSwgODMsIAotICAgIDEyOCwgODAsIDc2LCA4NSwgODIsIDY1LCA3NiwgMTI4LCA4MCwgNzYsIDg1LCA3NywgNjksIDE5NiwgODAsIDc2LCA4NSwgCi0gICAgNzcsIDEyOCwgODAsIDc2LCA4NSwgNzUsIDEyOCwgODAsIDc2LCA4NSwgNzEsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgCi0gICAgODAsIDc2LCA3OSwgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCAKLSAgICA2NSwgODksIDczLCA3OCwgMTk5LCA4MCwgNzYsIDY1LCA4MywgODQsIDczLCA2NywgODMsIDEyOCwgODAsIDc2LCA2NSwgNzgsIAotICAgIDY5LCAxMjgsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgwLCA3NiwgNjUsIDc4LCA2NywgMjAzLCA4MCwgNzYsIDY1LCA3NSwgCi0gICAgMTI4LCA4MCwgNzYsIDY1LCA3MSwgNzMsIDc5LCAyMTEsIDgwLCA3NiwgNjUsIDY3LCA2OSwgNzIsIDc5LCA3NiwgNjgsIDY5LCAKLSAgICAyMTAsIDgwLCA3NiwgNjUsIDY3LCAxOTcsIDgwLCA3NiwgNjUsIDEyOCwgODAsIDczLCA5MCwgOTAsIDczLCA2NywgNjUsIAotICAgIDg0LCA3OSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNjUsIDEyOCwgODAsIDczLCA4OCwgMTI4LCA4MCwgNzMsIDg3LCA4MiwgCi0gICAgMTI4LCA4MCwgNzMsIDg0LCA2NywgNzIsIDcwLCA3OSwgODIsIDc1LCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCAKLSAgICA4MiwgMjAzLCA4MCwgNzMsIDg0LCAxMjgsIDgwLCA3MywgODMsIDg0LCA3OSwgNzYsIDEyOCwgODAsIDczLCA4MywgNjksIAotICAgIDc2LCA2OSwgNzIsIDEyOCwgODAsIDczLCA4MywgNjcsIDY5LCA4MywgMTI4LCA4MCwgNzMsIDgyLCA3MywgNzEsIDEyOCwgCi0gICAgODAsIDczLCA4MiwgNzMsIDE5OSwgODAsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgODAsIDczLCA4MCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNzMsIDgwLCA2NSwgNjksIDc3LCA3MSwgNjYsIDczLCA2OSwgNjksIDEyOCwgODAsIDczLCA4MCwgNjUsIAotICAgIDY5LCA3NywgNjYsIDY1LCAxMjgsIDgwLCA3MywgODAsIDEyOCwgODAsIDczLCA3OCwgODcsIDcyLCA2OSwgNjksIDIwNCwgCi0gICAgODAsIDczLCA3OCwgNjksIDY1LCA4MCwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MywgNzgsIDY1LCAKLSAgICA4MiwgNjYsIDc5LCA4MiwgNjUsIDgzLCAxMjgsIDgwLCA3MywgNzYsIDc2LCAxMjgsIDgwLCA3MywgNzYsIDE5NywgODAsIAotICAgIDczLCA3NiwgNjcsIDgyLCA3OSwgMjE1LCA4MCwgNzMsIDc1LCA4NSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNzUsIDc5LCAKLSAgICAxMjgsIDgwLCA3MywgNzEsIDEyOCwgODAsIDczLCAxOTksIDgwLCA3MywgNjksIDg4LCAxMjgsIDgwLCA3MywgNjksIDg1LCAKLSAgICA4MCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA4MywgCi0gICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIAotICAgIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODAsIDczLCA2OSwgCi0gICAgODUsIDgwLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc1LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgMjA4LCAKLSAgICA4MCwgNzMsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY5LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODQsIDEyOCwgODAsIAotICAgIDczLCA2OSwgNjksIDgxLCAxMjgsIDgwLCA3MywgNjksIDY3LCA2OSwgMTI4LCA4MCwgNzMsIDY5LCAxMjgsIDgwLCA3MywgCi0gICAgNjcsIDc1LCA2OSwgODQsIDEyOCwgODAsIDczLCA2NywgNzUsIDEyOCwgODAsIDczLCA2NSwgODMsIDg1LCA4NCwgNzksIDgyLCAKLSAgICA4NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgNzcsIDE5MywgODAsIDczLCA2NSwgNzgsIDc5LCAxMjgsIDgwLCAyMDEsIDgwLCAKLSAgICA3MiwgODcsIDY1LCAxMjgsIDgwLCA3MiwgODUsIDg0LCA3MiwgNjUsIDc5LCAxMjgsIDgwLCA3MiwgODUsIDIxMCwgODAsIAotICAgIDcyLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA3MiwgODIsIDY1LCA4MywgNjksIDEyOCwgODAsIDcyLCA3OSwgNzgsIDY5LCA4MywgCi0gICAgMTI4LCA4MCwgNzIsIDc5LCA2OSwgNzgsIDczLCA2NywgNzMsIDY1LCAyMDYsIDgwLCA3MiwgNzksIDY1LCAxMjgsIDgwLCAKLSAgICA3MiwgNzksIDEyOCwgODAsIDcyLCAyMDcsIDgwLCA3MiwgNzgsIDY1LCA2OSwgMjAzLCA4MCwgNzIsIDczLCA3OCwgODQsIAotICAgIDcyLCA4NSwgMTI4LCA4MCwgNzIsIDczLCA3NiwgNzksIDgzLCA3OSwgODAsIDcyLCA2OSwgODIsIDIxMSwgODAsIDcyLCA3MywgCi0gICAgNzYsIDczLCA4MCwgODAsIDczLCA3OCwgMTk3LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDg0LCA3MiwgNzMsIAotICAgIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCi0gICAgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDcyLCA3MywgNjksIAotICAgIDg1LCA4MCwgNzIsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgMjAwLCA4MCwgCi0gICAgNzIsIDczLCAxMjgsIDgwLCA3MiwgMjAxLCA4MCwgNzIsIDY5LCA2OSwgMTI4LCA4MCwgNzIsIDY5LCAxMjgsIDgwLCA3MiwgCi0gICAgNjUsIDgzLCA2OSwgNDUsIDE5OCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk0LCA4MCwgNzIsIDY1LCA4MiwgODksIDc4LCAKLSAgICA3MSwgNjksIDY1LCAyMDQsIDgwLCA3MiwgNjUsIDgyLCAxMjgsIDgwLCA3MiwgNjUsIDc4LCAxMjgsIDgwLCA3MiwgNjUsIAotICAgIDc3LCAxMjgsIDgwLCA3MiwgNjUsIDczLCA4MywgODQsIDc5LCAyMTEsIDgwLCA3MiwgNjUsIDcxLCA4MywgNDUsIDgwLCAKLSAgICAxOTMsIDgwLCA3MiwgNjUsIDY1LCA4MiwgNzUsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIDY1LCA2NSwgMTI4LCA4MCwgNzIsIAotICAgIDY1LCAxMjgsIDgwLCA3MSwgMTI4LCA4MCwgNzAsIDEyOCwgODAsIDY5LCA4NSwgODgsIDEyOCwgODAsIDY5LCA4NSwgODQsIAotICAgIDY1LCA2OSwgMTI4LCA4MCwgNjksIDg1LCA4NCwgMTI4LCA4MCwgNjksIDg0LCA2NSwgODMsIDg0LCA3OSwgNzUsIDc5LCA4NSwgCi0gICAgNzAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDczLCAxMjgsIDgwLCA2OSwgODQsIDY1LCAKLSAgICA4MywgNzcsIDY1LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA3NiwgNzYsIDY5LCAxOTYsIDgwLCA2OSwgODMsIDc5LCAxMjgsIAotICAgIDgwLCA2OSwgODMsIDIwNywgODAsIDY5LCA4MywgNzIsIDUwLCAxMjgsIDgwLCA2OSwgODMsIDY5LCA4NCwgMTkzLCA4MCwgCi0gICAgNjksIDIxMSwgODAsIDY5LCA4MiwgODQsIDcyLCAyMDcsIDgwLCA2OSwgODIsIDgzLCA4MCwgNjksIDY3LCA4NCwgNzMsIDg2LCAKLSAgICA2OSwgMTI4LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgNjksIDgyLCA4MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA2OSwgODIsIDgzLCA3OSwgMjA2LCA4MCwgNjksIDgyLCA4MywgNzMsIDY1LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA2OSwgCi0gICAgODYsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIAotICAgIDgyLCAxMjgsIDgwLCA2OSwgODIsIDgwLCA2OSwgNzgsIDY4LCA3MywgNjcsIDg1LCA3NiwgNjUsIDIxMCwgODAsIDY5LCA4MiwgCi0gICAgNzcsIDY1LCA3OCwgNjksIDc4LCAyMTIsIDgwLCA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCAKLSAgICA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCAKLSAgICA4NCwgNjUsIDEyOCwgODAsIDY5LCA4MiwgNzAsIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIAotICAgIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA2OSwgODQsIDEyOCwgCi0gICAgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgNzksIDgwLCA3NiwgNjksIAotICAgIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIAotICAgIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3MywgCi0gICAgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAKLSAgICAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIAotICAgIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgCi0gICAgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAKLSAgICAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCAKLSAgICA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIAotICAgIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgCi0gICAgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCAKLSAgICA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCA2NSwgMjA0LCA4MCwgNjksIDY1LCA2NywgNzIsIDEyOCwgODAsIAotICAgIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIDY3LCAxOTcsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIAotICAgIDY1LCA5MCwgNjksIDgyLCAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgCi0gICAgNzgsIDY1LCAxMjgsIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgCi0gICAgNjUsIDIxNSwgODAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCA2NSwgODQsIDIwMCwgODAsIAotICAgIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgCi0gICAgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNzMsIDg2LCAKLSAgICA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgCi0gICAgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIDg3LCA3OCwgNDUsIDc5LCA4NSwgCi0gICAgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIAotICAgIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDczLCAKLSAgICA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIDc3LCA2OSwgNzgsIDc5LCAyMDYsIAotICAgIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCA2OSwgODMsIDczLCAKLSAgICA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIAotICAgIDcyLCA4MiwgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAKLSAgICAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCAKLSAgICA3NiwgNzMsIDg0LCA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIAotICAgIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCAKLSAgICA4MCwgNzIsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIAotICAgIDgwLCA2NSwgODIsIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgCi0gICAgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgCi0gICAgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCAKLSAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCAKLSAgICA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIAotICAgIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgCi0gICAgNzEsIDc2LCA2NSwgODksIDY1LCA4MiwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzUsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDc4LCAKLSAgICA3MSwgNzUsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzIsIDg1LCA3NiwgODUsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgNjksIDg1LCA3NiwgNjksIDg1LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNjgsIDE5MywgCi0gICAgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDc3LCAKLSAgICA4NSwgNzgsIDcxLCA3NSwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA2OCwgODAsIDc5LCA2OCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDc3LCA4MCwgNzIsIDg5LCA3NiwgNzMsIDY1LCAyMDYsIDgwLCA2NSwgCi0gICAgNzcsIDczLCA3OCwgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY1LCA3NywgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY1LCAKLSAgICA3NywgNjksIDc4LCA2OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2OCwgNjUsIDEyOCwgODAsIDY1LCA3NywgNjUsIAotICAgIDY1LCA2OSwgNzIsIDEyOCwgODAsIDY1LCA3NiwgODUsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3OSwgNjcsIDcyLCA3NSwgCi0gICAgNjUsIDEyOCwgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCAKLSAgICA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIAotICAgIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgCi0gICAgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCAKLSAgICA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIAotICAgIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCA2OSwgMTk2LCA4MCwgNjUsIDcyLCA3NiwgNjUsIDg2LCAKLSAgICAyMDEsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCAKLSAgICA2NSwgNjgsIDE5MywgODAsIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDY3LCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIAotICAgIDY3LCA3NSwgNjUsIDcxLCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA4NCwgODUsIDEyOCwgODAsIDY1LCA2NSwgODMsIDY5LCA3OCwgCi0gICAgODQsIDc5LCAxMjgsIDgwLCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA2NSwgNzcsIDEyOCwgODAsIDY1LCAKLSAgICA2NSwgNzMsIDEyOCwgODAsIDY1LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA4MCwgNjUsIDY1LCAxMjgsIAotICAgIDgwLCA1MCwgMTI4LCA4MCwgNDgsIDQ5LCA0OSwgMTI4LCA4MCwgNDgsIDQ5LCA0OCwgMTI4LCA4MCwgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA4MCwgNDgsIDQ4LCA1NiwgMTI4LCA4MCwgNDgsIDQ4LCA1NSwgMTI4LCA4MCwgNDgsIDQ4LCA1NCwgMTI4LCA4MCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA4MCwgNDgsIDQ4LCA1MiwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODAsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgODAsIDQ4LCA0OCwgNTAsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDgwLCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc5LCA4OSwgODIsIDY1LCA3OCwgNzMsIDgzLCA3NywgMTkzLCA3OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDc5LCA4OCwgNzMsIDY1LCAxMjgsIDc5LCA4OCwgNzMsIDE5MywgNzksIDg4LCA2OSwgNzMsIDY1LCAyMDEsIDc5LCAKLSAgICA4OCwgNjksIDczLCAxOTMsIDc5LCA4NiwgNjksIDgyLCA4MiwgNzMsIDY4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIAotICAgIDc5LCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgCi0gICAgODksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCAKLSAgICA2NSwgNzMsIDY4LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDc5LCA4NiwgNjUsIDIwNCwgNzksIAotICAgIDg2LCAxMjgsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAKLSAgICAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIAotICAgIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIAotICAgIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgNzksIDg0LCA3MiwgNjUsIDc2LCA2NSwgMjA2LCA3OSwgCi0gICAgODQsIDcyLCA2NSwgNzYsIDEyOCwgNzksIDgzLCA3NywgNjUsIDc4LCA4OSwgMTkzLCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCAKLSAgICA3OSwgNzgsIDY1LCAyMDQsIDc5LCA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgCi0gICAgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIAotICAgIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgCi0gICAgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIAotICAgIDIwNCwgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgCi0gICAgNzMsIDc5LCAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIAotICAgIDgzLCA3MywgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgCi0gICAgODUsIDgzLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCAKLSAgICA3OSwgMjEwLCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgODAsIDEyOCwgNzksIAotICAgIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCAKLSAgICA2OSwgNjUsIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgCi0gICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDIwNiwgNzksIDc5LCA5MCwgNjksIDEyOCwgNzksIDc5LCAKLSAgICA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIDc3LCA4NSwgMTI4LCA3OSwgNzksIAotICAgIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDc4LCA4NSwgMTI4LCA3OSwgCi0gICAgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCA4MiwgMTI4LCA3OSwgNzgsIDY5LCAKLSAgICA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgCi0gICAgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCAKLSAgICA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIAotICAgIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgCi0gICAgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgCi0gICAgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIAotICAgIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIAotICAgIDIwNSwgNzksIDcyLCAxMjgsIDc5LCA3MSwgODIsIDY5LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgNzUsIDEyOCwgNzksIAotICAgIDcxLCA3OSwgNzgsIDY5LCAyMDMsIDc5LCA3MSwgNzIsIDY1LCAyMDUsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDgyLCAKLSAgICAxMjgsIDc5LCA3MCwgNzAsIDczLCA2NywgNjksIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCAxOTcsIDc5LCA3MCwgNzAsIAotICAgIDEyOCwgNzksIDY5LCA3NSwgMTI4LCA3OSwgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDE5NiwgNzksIDY3LCA4NCwgNzksIAotICAgIDgwLCA4NSwgODMsIDEyOCwgNzksIDY3LCA4NCwgNzksIDY2LCA2OSwgODIsIDEyOCwgNzksIDY3LCAyMTAsIDc5LCA2NywgCi0gICAgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgNjYsIDgzLCAKLSAgICA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIDIxMSwgNzksIDY2LCA3OSwgCi0gICAgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgODEsIDg1LCAxOTcsIDc5LCAKLSAgICA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCA2NiwgNjksIDc2LCA3OSwgODMsIAotICAgIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCA3OSwgNjUsIDY2LCA3OSwgNjUsIAotICAgIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCA2NiwgCi0gICAgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgNzksIDQ4LCA1MiwgNTcsIDEyOCwgCi0gICAgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCA1MiwgNTQsIDEyOCwgNzksIDQ4LCAKLSAgICA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIDEyOCwgNzksIDQ4LCA1MiwgNTAsIAotICAgIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIDQ4LCA1MSwgNTcsIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY4LCAxMjgsIDc5LCA0OCwgCi0gICAgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIDUyLCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgMTI4LCA3OSwgNDgsIDUxLCA0OSwgCi0gICAgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgNzksIDQ4LCA1MCwgNTcsIDY1LCAKLSAgICAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCA0OCwgNTAsIDU1LCAxMjgsIDc5LCAKLSAgICA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1MywgMTI4LCA3OSwgNDgsIAotICAgIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgNTEsIDEyOCwgNzksIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAKLSAgICAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCA3OSwgNDgsIDQ5LCA1NiwgMTI4LCAKLSAgICA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIDQ5LCA1MywgMTI4LCA3OSwgNDgsIAotICAgIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgCi0gICAgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCAKLSAgICA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCA3OSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIAotICAgIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY2LCAKLSAgICAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCA3OSwgNDgsIDQ4LCA1MywgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIDQ4LCA0OCwgNTEsIDEyOCwgNzksIAotICAgIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgCi0gICAgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAxMjgsIDc4LCA5MCwgODksIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgMTI4LCAKLSAgICA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIDg4LCAxMjgsIDc4LCA5MCwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgMTI4LCA3OCwgOTAsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgNzgsIDkwLCA4NSwgMjA2LCA3OCwgCi0gICAgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIDkwLCA3MywgMTI4LCA3OCwgOTAsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgMTI4LCA3OCwgOTAsIDY1LCA4OCwgCi0gICAgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgOTAsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgODksIDg1LCA4OCwgMTI4LCA3OCwgCisgICAgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAKKyAgICAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIAorICAgIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgCisgICAgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCA2NSwgNzcsIDY1LCAKKyAgICAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIAorICAgIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCAKKyAgICA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIAorICAgIDgwLCA4NSwgNjksIDEyOCwgODAsIDg1LCA2NiwgNzYsIDczLCAxOTUsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgCisgICAgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgCisgICAgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAorICAgIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCAKKyAgICA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgMTI4LCA4MCwgODIsIDc5LCA4NiwgNjksIDEyOCwgODAsIDgyLCAKKyAgICA3OSwgODQsIDc5LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNzksIDIxMSwgODAsIDgyLCA3OSwgODQsIAorICAgIDY5LCA2NywgODQsIDY5LCAxOTYsIDgwLCA4MiwgNzksIDgzLCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCAKKyAgICA3MywgMTI4LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODAsIDgyLCA3OSwgODAsIAorICAgIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgODAsIDY5LCA4MiwgODQsIDIxNywgODAsIDgyLCA3OSwgCisgICAgODAsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDgwLCA4MiwgNzksIDc5LCA3MCwgMTI4LCA4MCwgODIsIDc5LCA3NiwgNzksIDc4LCAKKyAgICA3MSwgNjksIDE5NiwgODAsIDgyLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTk3LCA4MCwgODIsIDc5LCA3NCwgNjksIAorICAgIDY3LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA3NCwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCisgICAgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIAorICAgIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAKKyAgICAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIAorICAgIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgMTI4LCA4MCwgCisgICAgODIsIDczLCA3OCwgMjEyLCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3MywgNzcsIDY5LCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc3LCAxOTcsIDgwLCA4MiwgNjksIDg2LCA3MywgNzksIDg1LCAyMTEsIDgwLCA4MiwgNjksIAorICAgIDgzLCA2OSwgODQsIDEyOCwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgCisgICAgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIAorICAgIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MCwgCisgICAgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDY5LCAKKyAgICA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIDgzLCAxMjgsIDgwLCA4MiwgNjksIAorICAgIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgCisgICAgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDczLCAKKyAgICAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCAyMDEsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNzcsIDg1LCA3OSwgODksIAorICAgIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA3NywgODUsIDc5LCAyMTcsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDg1LCA3OSwgCisgICAgNzgsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCAyMDYsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAKKyAgICA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgMjAxLCA4MCwgODIsIDY1LCA3NywgMTI4LCA4MCwgODIsIAorICAgIDY1LCAyMDUsIDgwLCA4MiwgMTI4LCA4MCwgODAsIDg2LCAxMjgsIDgwLCA4MCwgNzcsIDEyOCwgODAsIDgwLCA2NSwgMTI4LCAKKyAgICA4MCwgNzksIDg5LCAxMjgsIDgwLCA3OSwgODgsIDEyOCwgODAsIDc5LCA4NywgNjksIDgyLCAyMTEsIDgwLCA3OSwgODcsIAorICAgIDY5LCA4MiwgMTI4LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MCwgNzksIDg3LCA2OCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA3OSwgODUsIDc4LCAxOTYsIDgwLCA3OSwgODUsIDc2LCA4NCwgODIsIDIxNywgODAsIDc5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDgwLCA3OSwgODQsIDY1LCA4NCwgNzksIDEyOCwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4MCwgCisgICAgNzksIDIxMiwgODAsIDc5LCA4MywgODQsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA2NiwgNzksIDg4LCAxMjgsIDgwLCA3OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNzksIDgzLCA4NCwgMTI4LCA4MCwgNzksIAorICAgIDgzLCAyMTIsIDgwLCA3OSwgODMsIDgzLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgCisgICAgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCAKKyAgICA2OSwgODIsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgNjgsIDc2LCA2OSwgMTI4LCAKKyAgICA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgODAsIDc5LCA3NywgNzcsIAorICAgIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCA3MiwgMTI4LCA4MCwgCisgICAgNzksIDc2LCA3MywgNjcsIDE5NywgODAsIDc5LCA3NiwgMjAxLCA4MCwgNzksIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc2LCAKKyAgICAxOTcsIDgwLCA3OSwgNzUsIDgyLCA4OSwgODQsIDczLCA2OSwgMTI4LCA4MCwgNzksIDc1LCA3OSwgNzQsIDczLCAxMjgsIAorICAgIDgwLCA3OSwgNzMsIDc4LCA4NCwgMjExLCA4MCwgNzksIDczLCA3OCwgODQsIDc5LCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgNjksIDgyLCAxMjgsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgODAsIDc5LCA3MywgNzgsIDg0LCAxMjgsIDgwLCAKKyAgICA3OSwgNzMsIDc4LCAyMTIsIDgwLCA3OSwgNjksIDg0LCA4MiwgMjE3LCA4MCwgNzksIDY5LCA4NCwgNzMsIDE5NSwgODAsIAorICAgIDc5LCA2OCwgNjUsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA2NSwgMTI4LCA4MCwgNzksIDEyOCwgODAsIDIwNywgODAsIAorICAgIDc4LCA2OSwgODUsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgwLCA3NiwgODUsIDg0LCA3OSwgMTI4LCA4MCwgNzYsIDg1LCA4MywgCisgICAgNDUsIDc3LCA3MywgNzgsIDg1LCAyMTEsIDgwLCA3NiwgODUsIDgzLCAxMjgsIDgwLCA3NiwgODUsIDgyLCA2NSwgNzYsIAorICAgIDEyOCwgODAsIDc2LCA4NSwgNzcsIDY5LCAxOTYsIDgwLCA3NiwgODUsIDc3LCAxMjgsIDgwLCA3NiwgODUsIDc1LCAxMjgsIAorICAgIDgwLCA3NiwgODUsIDcxLCAxMjgsIDgwLCA3NiwgODUsIDEyOCwgODAsIDc2LCA3OSwgODcsIDEyOCwgODAsIDc2LCA3OSwgCisgICAgODAsIDcyLCA4NSwgMTI4LCA4MCwgNzYsIDY5LCA4NCwgNzIsIDgyLCA3OSwgNzgsIDEyOCwgODAsIDc2LCA2OCwgMTI4LCAKKyAgICA4MCwgNzYsIDY1LCA4OSwgNzMsIDc4LCAxOTksIDgwLCA3NiwgNjUsIDgzLCA4NCwgNzMsIDY3LCA4MywgMTI4LCA4MCwgNzYsIAorICAgIDY1LCA3OCwgNjksIDEyOCwgODAsIDc2LCA2NSwgNzgsIDE5NywgODAsIDc2LCA2NSwgNzgsIDY3LCAyMDMsIDgwLCA3NiwgCisgICAgNjUsIDc1LCAxMjgsIDgwLCA3NiwgNjUsIDcxLCA3MywgNzksIDIxMSwgODAsIDc2LCA2NSwgNjcsIDY5LCA3MiwgNzksIDc2LCAKKyAgICA2OCwgNjksIDIxMCwgODAsIDc2LCA2NSwgNjcsIDE5NywgODAsIDc2LCA2NSwgMTI4LCA4MCwgNzMsIDkwLCA5MCwgNzMsIAorICAgIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3MywgOTAsIDkwLCA2NSwgMTI4LCA4MCwgNzMsIDg4LCAxMjgsIDgwLCA3MywgCisgICAgODcsIDgyLCAxMjgsIDgwLCA3MywgODQsIDY3LCA3MiwgNzAsIDc5LCA4MiwgNzUsIDEyOCwgODAsIDczLCA4NCwgNjcsIDcyLCAKKyAgICA3MCwgNzksIDgyLCAyMDMsIDgwLCA3MywgODQsIDEyOCwgODAsIDczLCA4MywgODQsIDc5LCA3NiwgMTI4LCA4MCwgNzMsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA3MiwgMTI4LCA4MCwgNzMsIDgzLCA2NywgNjksIDgzLCAxMjgsIDgwLCA3MywgODIsIDczLCA3MSwgCisgICAgMTI4LCA4MCwgNzMsIDgyLCA3MywgMTk5LCA4MCwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgMTI4LCA4MCwgNzMsIDgwLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgwLCA3MywgODAsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA4MCwgNzMsIAorICAgIDgwLCA2NSwgNjksIDc3LCA2NiwgNjUsIDEyOCwgODAsIDczLCA4MCwgMTI4LCA4MCwgNzMsIDc4LCA4NywgNzIsIDY5LCA2OSwgCisgICAgMjA0LCA4MCwgNzMsIDc4LCA2OSwgNjUsIDgwLCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA3MywgNzgsIDE5NywgODAsIDczLCAKKyAgICA3OCwgNjUsIDgyLCA2NiwgNzksIDgyLCA2NSwgODMsIDEyOCwgODAsIDczLCA3NiwgNzYsIDEyOCwgODAsIDczLCA3NiwgCisgICAgMTk3LCA4MCwgNzMsIDc2LCA2NywgODIsIDc5LCAyMTUsIDgwLCA3MywgNzUsIDg1LCA4MiwgODUsIDEyOCwgODAsIDczLCAKKyAgICA3NSwgNzksIDEyOCwgODAsIDczLCA3MSwgMTI4LCA4MCwgNzMsIDE5OSwgODAsIDczLCA2OSwgODgsIDEyOCwgODAsIDczLCAKKyAgICA2OSwgODUsIDgwLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIAorICAgIDc5LCA4MywgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIDczLCA2OSwgCisgICAgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODIsIAorICAgIDczLCA2OSwgODUsIDc2LCAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3NSwgNzIsIDEyOCwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAKKyAgICAxMjgsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDgwLCA3MywgNjksIAorICAgIDg1LCAyMDgsIDgwLCA3MywgNjksIDg0LCAxMjgsIDgwLCA3MywgNjksIDgwLCAxMjgsIDgwLCA3MywgNjksIDY5LCA4NCwgCisgICAgMTI4LCA4MCwgNzMsIDY5LCA2OSwgODEsIDEyOCwgODAsIDczLCA2OSwgNjcsIDY5LCAxMjgsIDgwLCA3MywgNjksIDEyOCwgCisgICAgODAsIDczLCA2NywgNzUsIDY5LCA4NCwgMTI4LCA4MCwgNzMsIDY3LCA3NSwgMTI4LCA4MCwgNzMsIDY1LCA4MywgODUsIDg0LCAKKyAgICA3OSwgODIsIDg1LCAxMjgsIDgwLCA3MywgNjUsIDgzLCA3NywgMTkzLCA4MCwgNzMsIDY1LCA3OCwgNzksIDEyOCwgODAsIAorICAgIDIwMSwgODAsIDcyLCA4NywgNjUsIDEyOCwgODAsIDcyLCA4NSwgODQsIDcyLCA2NSwgNzksIDEyOCwgODAsIDcyLCA4NSwgCisgICAgMjEwLCA4MCwgNzIsIDg1LCA3OCwgNzEsIDEyOCwgODAsIDcyLCA4MiwgNjUsIDgzLCA2OSwgMTI4LCA4MCwgNzIsIDc5LCAKKyAgICA3OCwgNjksIDgzLCAxMjgsIDgwLCA3MiwgNzksIDY5LCA3OCwgNzMsIDY3LCA3MywgNjUsIDIwNiwgODAsIDcyLCA3OSwgNjUsIAorICAgIDEyOCwgODAsIDcyLCA3OSwgMTI4LCA4MCwgNzIsIDIwNywgODAsIDcyLCA3OCwgNjUsIDY5LCAyMDMsIDgwLCA3MiwgNzMsIAorICAgIDc4LCA4NCwgNzIsIDg1LCAxMjgsIDgwLCA3MiwgNzMsIDc2LCA3OSwgODMsIDc5LCA4MCwgNzIsIDY5LCA4MiwgMjExLCA4MCwgCisgICAgNzIsIDczLCA3NiwgNzMsIDgwLCA4MCwgNzMsIDc4LCAxOTcsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCA0NSwgODQsIAorICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDQ1LCA4MywgNzMsIDc5LCAKKyAgICA4MywgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNzIsIAorICAgIDczLCA2OSwgODUsIDgwLCA3MiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKKyAgICAyMDAsIDgwLCA3MiwgNzMsIDEyOCwgODAsIDcyLCAyMDEsIDgwLCA3MiwgNjksIDY5LCAxMjgsIDgwLCA3MiwgNjksIDEyOCwgCisgICAgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk4LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTQsIDgwLCA3MiwgNjUsIDgyLCAKKyAgICA4OSwgNzgsIDcxLCA2OSwgNjUsIDIwNCwgODAsIDcyLCA2NSwgODIsIDEyOCwgODAsIDcyLCA2NSwgNzgsIDEyOCwgODAsIAorICAgIDcyLCA2NSwgNzcsIDEyOCwgODAsIDcyLCA2NSwgNzMsIDgzLCA4NCwgNzksIDIxMSwgODAsIDcyLCA2NSwgNzEsIDgzLCA0NSwgCisgICAgODAsIDE5MywgODAsIDcyLCA2NSwgNjUsIDgyLCA3NSwgNjUsIDY1LCAxMjgsIDgwLCA3MiwgNjUsIDY1LCAxMjgsIDgwLCAKKyAgICA3MiwgNjUsIDEyOCwgODAsIDcxLCAxMjgsIDgwLCA3MCwgMTI4LCA4MCwgNjksIDg1LCA4OCwgMTI4LCA4MCwgNjksIDg1LCAKKyAgICA4NCwgNjUsIDY5LCAxMjgsIDgwLCA2OSwgODUsIDg0LCAxMjgsIDgwLCA2OSwgODQsIDY1LCA4MywgODQsIDc5LCA3NSwgNzksIAorICAgIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDgzLCA4NCwgNzMsIDEyOCwgODAsIDY5LCA4NCwgCisgICAgNjUsIDgzLCA3NywgNjUsIDEyOCwgODAsIDY5LCA4NCwgNjUsIDc2LCA3NiwgNjksIDE5NiwgODAsIDY5LCA4MywgNzksIAorICAgIDEyOCwgODAsIDY5LCA4MywgMjA3LCA4MCwgNjksIDgzLCA3MiwgNTAsIDEyOCwgODAsIDY5LCA4MywgNjksIDg0LCAxOTMsIAorICAgIDgwLCA2OSwgMjExLCA4MCwgNjksIDgyLCA4NCwgNzIsIDIwNywgODAsIDY5LCA4MiwgODMsIDgwLCA2OSwgNjcsIDg0LCA3MywgCisgICAgODYsIDY5LCAxMjgsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIDY1LCAyMDQsIDgwLCA2OSwgODIsIDgzLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDY5LCA4MiwgODMsIDc5LCAyMDYsIDgwLCA2OSwgODIsIDgzLCA3MywgNjUsIDIwNiwgODAsIDY5LCA4MiwgCisgICAgODMsIDY5LCA4NiwgNjksIDgyLCA3MywgNzgsIDE5OSwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIAorICAgIDc2LCA2NSwgODIsIDEyOCwgODAsIDY5LCA4MiwgODAsIDY5LCA3OCwgNjgsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MCwgCisgICAgNjksIDgyLCA3NywgNzMsIDg0LCA4NCwgNjksIDE5NiwgODAsIDY5LCA4MiwgNzcsIDY1LCA3OCwgNjksIDc4LCAyMTIsIDgwLCAKKyAgICA2OSwgODIsIDczLCA4MywgODAsIDc5LCA3NywgNjksIDc4LCA3MywgMTI4LCA4MCwgNjksIDgyLCA3MywgODMsIDgwLCA3OSwgCisgICAgNzcsIDY5LCA3OCwgMjAxLCA4MCwgNjksIDgyLCA3MCwgNzksIDgyLCA3NywgNzMsIDc4LCAxOTksIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA4NSwgMjA1LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgODAsIDY5LCA4MiwgNzAsIAorICAgIDY5LCA2NywgODQsIDE5MywgODAsIDY5LCA4MiwgNjcsIDg1LCA4MywgODMsIDczLCA4NiwgNjksIDEyOCwgODAsIDY5LCA4MiwgCisgICAgNjcsIDY5LCA3OCwgMjEyLCA4MCwgNjksIDgwLCA2OSwgODQsIDEyOCwgODAsIDY5LCA4MCwgNjksIDIxMiwgODAsIDY5LCAKKyAgICA3OSwgODIsIDg0LCAyMDAsIDgwLCA2OSwgNzksIDgwLCA3NiwgNjksIDEyOCwgODAsIDY5LCA3OCwgODQsIDY1LCA4MywgNjksIAorICAgIDc3LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA4MywgODUsIDEyOCwgODAsIDY5LCA3OCwgODMsIDczLCA4NiwgMTk3LCAKKyAgICA4MCwgNjksIDc4LCA3OCwgMjE3LCA4MCwgNjksIDc4LCA3MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA4NSwgNzMsIAorICAgIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDcxLCA3NSwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNzgsIDY5LCA4NCwgODIsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNjksIDc4LCA2NywgNzMsIDc2LCAxMjgsIDgwLCA2OSwgNzYsIDY1LCA4MywgODQsIDc5LCAKKyAgICA3OCwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIDg0LCA3OSwgMjA2LCA4MCwgNjksIDczLCA4NCwgNzIsIDEyOCwgODAsIAorICAgIDY5LCA3MiwgNjksIDcyLCAxMjgsIDgwLCA2OSwgNzIsIDY5LCAyMDAsIDgwLCA2OSwgNzIsIDEyOCwgODAsIDY5LCAyMDAsIAorICAgIDgwLCA2OSwgNjksIDkwLCA3MywgMTI4LCA4MCwgNjksIDY5LCA4MywgNzIsIDczLCAxMjgsIDgwLCA2OSwgNjksIDgwLCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDc3LCAxMjgsIDgwLCA2OSwgNjksIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgNzgsIDgzLCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCAxMjgsIDgwLCA2OSwgCisgICAgNjgsIDY5LCA4MywgODQsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgMjA0LCA4MCwgNjksIDY4LCAKKyAgICA2NSwgMjA0LCA4MCwgNjksIDY1LCA2NywgNzIsIDEyOCwgODAsIDY5LCA2NSwgNjcsIDY5LCAxMjgsIDgwLCA2OSwgNjUsIAorICAgIDY3LCAxOTcsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIAorICAgIDEyOCwgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgODAsIDY1LCA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDg0LCA4NCwgNjksIDgyLCAKKyAgICA3OCwgMTI4LCA4MCwgNjUsIDg0LCA3MiwgNjUsIDc3LCA2NSwgODMsIDY1LCA4NCwgMTI4LCA4MCwgNjUsIDg0LCAyMDAsIAorICAgIDgwLCA2NSwgODQsIDY1LCA3NSwgMTI4LCA4MCwgNjUsIDg0LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA4NCwgMTI4LCA4MCwgCisgICAgNjUsIDgzLCA4NSwgODEsIDEyOCwgODAsIDY1LCA4MywgODMsIDgwLCA3OSwgODIsIDIxMiwgODAsIDY1LCA4MywgODMsIDczLCAKKyAgICA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDg1LCA4MCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgCisgICAgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA3OSwgCisgICAgODUsIDg0LCA4MCwgODUsIDIxMiwgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgODMsIDY5LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIAorICAgIDgyLCA4NSwgNzcsIDEyOCwgODAsIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgCisgICAgNzMsIDIwOCwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIAorICAgIDY5LCAxOTYsIDgwLCA2NSwgODIsIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgCisgICAgODAsIDY1LCA4MiwgMjEyLCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjUsIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIAorICAgIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgCisgICAgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIAorICAgIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgCisgICAgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgCisgICAgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAKKyAgICAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgNjksIDIxMCwgODAsIAorICAgIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgNzUsIDg1LCAxMjgsIAorICAgIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIAorICAgIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCA3OCwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIDY1LCA2OCwgMTI4LCAKKyAgICA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc5LCA3NiwgCisgICAgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgNzYsIDY1LCAKKyAgICA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgMTI4LCA4MCwgCisgICAgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCA4MCwgNjUsIDc4LCAKKyAgICA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIDg1LCA3OCwgNzEsIAorICAgIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgNzcsIDgzLCA3MiwgCisgICAgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCA3NywgNzMsIDc4LCAKKyAgICA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgNzgsIAorICAgIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjUsIDY5LCA3MiwgCisgICAgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDc2LCAyMDUsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgNjksIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgCisgICAgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIAorICAgIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgCisgICAgNjUsIDIwMywgODAsIDY1LCA3MywgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCAKKyAgICA4MiwgNjUsIDEyOCwgODAsIDY1LCA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDEyOCwgODAsIDY1LCA3MiwgNzYsIAorICAgIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MiwgMTI4LCA4MCwgNjUsIDcxLCAxOTcsIAorICAgIDgwLCA2NSwgNjgsIDc3LCAxOTMsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgCisgICAgNjUsIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDgwLCA2NSwgNjUsIDg0LCA4NSwgMTI4LCA4MCwgNjUsIDY1LCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODAsIAorICAgIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA4MCwgNjUsIDY1LCA3NywgMTI4LCA4MCwgNjUsIDY1LCA3MywgMTI4LCA4MCwgCisgICAgNjUsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDgwLCA2NSwgNjUsIDEyOCwgODAsIDUwLCAxMjgsIDgwLCAKKyAgICA0OCwgNDksIDQ5LCAxMjgsIDgwLCA0OCwgNDksIDQ4LCAxMjgsIDgwLCA0OCwgNDgsIDU3LCAxMjgsIDgwLCA0OCwgNDgsIAorICAgIDU2LCAxMjgsIDgwLCA0OCwgNDgsIDU1LCAxMjgsIDgwLCA0OCwgNDgsIDU0LCAxMjgsIDgwLCA0OCwgNDgsIDUzLCAxMjgsIAorICAgIDgwLCA0OCwgNDgsIDUyLCAxMjgsIDgwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MCwgNDgsIDQ4LCA1MSwgMTI4LCA4MCwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKKyAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAorICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAorICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCisgICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKKyAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIAorICAgIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODYsIDEyOCwgNzksIDg1LCA4NCwgCisgICAgNzYsIDczLCA3OCwgNjksIDE5NiwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgNjksIDEyOCwgNzksIDg1LCA4NCwgNjksIAorICAgIDIxMCwgNzksIDg1LCA4NCwgNjYsIDc5LCAyMTYsIDc5LCA4NSwgNzgsIDc1LCA3MywgMTkzLCA3OSwgODUsIDc4LCA2NywgCisgICAgNjksIDEyOCwgNzksIDg1LCA3OCwgNjcsIDE5NywgNzksIDg0LCA4NSwgMTI4LCA3OSwgODQsIDg0LCA2NSwgODYsIDE5MywgCisgICAgNzksIDg0LCA4NCwgMTI4LCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgNzIsIDc5LCA3MSwgNzksIAorICAgIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCA2NSwgODQsIDE5NywgCisgICAgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCAyMTIsIDc5LCAKKyAgICA4MiwgNzUsIDcyLCA3OSwgMjA2LCA3OSwgODIsIDczLCA3MSwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDczLCA3MSwgNzMsIAorICAgIDc4LCAxMjgsIDc5LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3OSwgODIsIDY4LCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgCisgICAgNjgsIDY5LCAyMTAsIDc5LCA4MiwgNjcsIDcyLCA3MywgNjgsIDEyOCwgNzksIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDc5LCAKKyAgICA4MCwgODQsIDczLCA3OSwgMjA2LCA3OSwgODAsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDc5LCA4MCwgODAsIDgyLCA2OSwgODMsIAorICAgIDgzLCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA4MCwgCisgICAgODAsIDc5LCA4MywgNzMsIDc4LCAxOTksIDc5LCA4MCwgODAsIDc5LCA4MywgNjksIDEyOCwgNzksIDgwLCA3MiwgNzMsIDg1LCAKKyAgICA2NywgNzIsIDg1LCA4MywgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNzksIDgwLCA2OSwgODIsIAorICAgIDY1LCA4NCwgNzksIDIxMCwgNzksIDgwLCA2OSwgODIsIDY1LCA4NCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA3MywgCisgICAgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDQ1LCA4MCwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDc5LCA4NSwgODQsIDc2LCAKKyAgICA3MywgNzgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDc5LCA4MCwgNjksIAorICAgIDc4LCA0NSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3MywgODQsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgNzksIDc5LCAKKyAgICA5MCwgNjksIDEyOCwgNzksIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDc5LCA4NSwgMTI4LCA3OSwgNzksIAorICAgIDc3LCA4NSwgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgCisgICAgNzksIDc4LCA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCAKKyAgICA4MiwgMTI4LCA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIAorICAgIDc5LCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc5LCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDc5LCA3OCwgNjUsIDgwLCAxMjgsIDc5LCA3NywgNzMsIAorICAgIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgCisgICAgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCAKKyAgICA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIAorICAgIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIAorICAgIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzYsIDEyOCwgCisgICAgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAKKyAgICA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgCisgICAgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY4LCA2OSwgNzgsIDEyOCwgCisgICAgNzksIDY4LCAxOTYsIDc5LCA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAKKyAgICAxMjgsIDc5LCA2NywgODQsIDY5LCAyMTIsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDc5LCAKKyAgICA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCA4NSwgNjcsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIDY2LCA3OSwgNzAsIDczLCAKKyAgICA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgNjcsIDIxMiwgNzksIAorICAgIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCA2NiwgMTI4LCA3OSwgCisgICAgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKKyAgICA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIDQ4LCA1MywgNDgsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgNTIsIDU2LCAxMjgsIAorICAgIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAxMjgsIDc5LCA0OCwgCisgICAgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCA0OCwgNTIsIDQ5LCAKKyAgICAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIDU2LCAxMjgsIDc5LCAKKyAgICA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjcsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgMTI4LCA3OSwgCisgICAgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIDQ4LCA1MSwgNDgsIAorICAgIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCA1NCwgMTI4LCA3OSwgCisgICAgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIDc5LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCA0OSwgNTUsIDEyOCwgCisgICAgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIDEyOCwgNzksIDQ4LCAKKyAgICA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIDQ4LCA0OSwgNDgsIAorICAgIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA0OSwgCisgICAgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCA0OCwgNTUsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjgsIAorICAgIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgCisgICAgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCA0OCwgNDgsIDUzLCAKKyAgICAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIDUwLCAxMjgsIDc5LCAKKyAgICA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgMTI4LCA3OSwgNDUsIAorICAgIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgOTAsIDg5LCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCA4OSwgODAsIDEyOCwgCisgICAgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIDkwLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgMTI4LCA3OCwgOTAsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgOTAsIDczLCA4NCwgCisgICAgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCA3MywgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKKyAgICA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIDkwLCA2NSwgODQsIAorICAgIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgMTI4LCA3OCwgOTAsIAorICAgIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgODUsIDEyOCwgNzgsIAogICAgIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgCiAgICAgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAKICAgICAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCAKICAgICA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIAogICAgIDEyOCwgNzgsIDg5LCA3MywgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIAogICAgIDczLCAyMTEsIDc4LCA4OSwgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgCi0gICAgNzksIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCAKLSAgICA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCAKLSAgICA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgMjEyLCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCAKLSAgICA4OSwgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCAKLSAgICA4OSwgNjUsIDY5LCA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIAotICAgIDc4LCA4NywgNzksIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIAotICAgIDc4LCA4NywgNjUsIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIAotICAgIDg4LCAxMjgsIDc4LCA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODQsIDczLCA3NiwgNzYsIDg1LCAxMjgsIDc4LCA4NSwgCi0gICAgODQsIDEyOCwgNzgsIDg1LCAyMTIsIDc4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4NSwgODIsIDEyOCwgNzgsIDg1LCA4MCwgCi0gICAgMTI4LCA3OCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODUsIDc5LCAxMjgsIDc4LCA4NSwgCi0gICAgNzgsIDg1LCA5MCwgMTI4LCA3OCwgODUsIDc4LCA4NSwgMjE4LCA3OCwgODUsIDc4LCA3MSwgMTI4LCA3OCwgODUsIDc4LCAKLSAgICA2NSwgODYsIDg1LCAyMTIsIDc4LCA4NSwgNzgsIDY1LCA4NiwgNzMsIDIwMywgNzgsIDg1LCA3OCwgMTI4LCA3OCwgODUsIAotICAgIDIwNiwgNzgsIDg1LCA3NywgNjksIDgyLCAyMDcsIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA3OCwgCi0gICAgODUsIDc3LCA2OSwgODIsIDY1LCAyMDQsIDc4LCA4NSwgNzcsIDY2LCA2OSwgODIsIDgzLCAxMjgsIDc4LCA4NSwgNzcsIDY2LCAKLSAgICA2OSwgODIsIDEyOCwgNzgsIDg1LCA3NywgMTI4LCA3OCwgODUsIDc2LCA3NiwgMTI4LCA3OCwgODUsIDc2LCAyMDQsIDc4LCAKKyAgICA3OSwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIAorICAgIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIAorICAgIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIAorICAgIDc4LCA4OSwgNjksIDcyLCAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgCisgICAgMTI4LCA3OCwgODksIDE5NiwgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgCisgICAgNzMsIDEyOCwgNzgsIDg5LCA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgNjUsIDEyOCwgNzgsIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCAKKyAgICA3OCwgODcsIDczLCAxMjgsIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCAKKyAgICA3OCwgODcsIDEyOCwgNzgsIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAKKyAgICA4NSwgMTI4LCA3OCwgODUsIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCAKKyAgICA3OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIAorICAgIDg1LCA3OCwgODUsIDIxOCwgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgCisgICAgODUsIDc4LCA2NSwgODYsIDczLCAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCAKKyAgICA4MiwgMjA3LCA3OCwgODUsIDc3LCA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgCisgICAgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCAKKyAgICA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCAKICAgICA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIAogICAgIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCiAgICAgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCAKQEAgLTE2NTksNDcwICsxNzgyLDQ5MyBAQAogICAgIDY1LCA2NiwgNzYsIDE5NywgNzgsIDc5LCA3OCwgNDUsIDc0LCA3OSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgNzgsIDc5LCA3OCwgCiAgICAgNDUsIDY2LCA4MiwgNjksIDY1LCA3NSwgNzMsIDc4LCAxOTksIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDIwNCwgNzgsIDc5LCAKICAgICA3NSwgNzIsIDg1LCA3NSwgMTI4LCA3OCwgNzksIDY4LCA2OSwgMTI4LCA3OCwgNzksIDY1LCAxMjgsIDc4LCA3OSwgNDUsIAotICAgIDY2LCA4MiwgNjksIDY1LCAyMDMsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgCisgICAgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc5LCAKKyAgICA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA4NSwgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDczLCAxMjgsIAorICAgIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2OSwgMTI4LCA3OCwgCisgICAgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA2NSwgMTI4LCAKKyAgICA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIAogICAgIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3MSwgCiAgICAgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDEyOCwgCi0gICAgNzgsIDc3LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAxMjgsIAotICAgIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDQ5LCAKLSAgICAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCAKLSAgICA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIAotICAgIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgCi0gICAgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCAKLSAgICA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIAotICAgIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgCi0gICAgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAKLSAgICAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCAKLSAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIAotICAgIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIAotICAgIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgCi0gICAgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDc0LCAxMjgsIDc4LCA3MywgODgsIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAKLSAgICAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIAotICAgIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCAKLSAgICA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgCi0gICAgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc3LCAKLSAgICAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIDc1LCA3MiwgNjUsIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIAotICAgIDcyLCA3MywgODQsIDEyOCwgNzgsIDczLCA3NSwgNjUsIDEyOCwgNzgsIDczLCA3MywgMTI4LCA3OCwgNzMsIDcyLCA4MywgCi0gICAgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCAKLSAgICA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIAotICAgIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIAotICAgIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCAKLSAgICA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAotICAgIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgCi0gICAgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgCi0gICAgNjUsIDEyOCwgNzgsIDcyLCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgCi0gICAgNjksIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCAKLSAgICA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDc5LCA4NSwgMTI4LCA3OCwgNzEsIDc5LCAyMTMsIDc4LCA3MSwgNzksIDg0LCAxMjgsIAotICAgIDc4LCA3MSwgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzksIDgwLCAxMjgsIDc4LCA3MSwgNzksIDc4LCAxMjgsIDc4LCA3MSwgCi0gICAgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzksIDY5LCA3MiwgMTI4LCA3OCwgNzEsIDc5LCA2OSwgMjAwLCA3OCwgNzEsIDIwNywgCi0gICAgNzgsIDcxLCA3NSwgODksIDY5LCA2OSwgMTI4LCA3OCwgNzEsIDc1LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCAKLSAgICA4NSwgODAsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3NywgMTI4LCA3OCwgNzEsIAotICAgIDc1LCA4NSwgNjksIDc4LCA5MCwgNjksIDg1LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA4NSwgMTk3LCA3OCwgNzEsIDc1LCA3MywgCi0gICAgNzgsIDY4LCAyMDEsIDc4LCA3MSwgNzUsIDczLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNzEsIDc1LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzgsIAotICAgIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgCi0gICAgODAsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDY1LCA3NywgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDEyOCwgNzgsIDcxLCAKLSAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgMTI4LCA3OCwgNzEsIAotICAgIDcxLCA4NywgNjUsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgODAsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDIwOSwgNzgsIDcxLCAKLSAgICA3MSwgODUsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCA4MywgNzIsIDY1LCAKLSAgICAxOTcsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDIwNiwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIAotICAgIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgCi0gICAgODgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIAotICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgCi0gICAgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCAKLSAgICA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIAotICAgIDEyOCwgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgNjUsIDczLCAxMjgsIDc4LCAKLSAgICA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCAKLSAgICA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDY5LCAxMjgsIDc4LCA2OSwgODcsIDEyOCwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgCi0gICAgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDEyOCwgNzgsIDY5LCAyMTIsIDc4LCA2OSwgODMsIDg0LCA2OSwgMTk2LCA3OCwgCi0gICAgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDgwLCAKLSAgICAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDY1LCA3OCwgNzksIDEyOCwgNzgsIDY5LCAKLSAgICA3OCwgMTI4LCA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDc4LCA2OSwgNzEsIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNjksIDY3LCA3NSwgODQsIDczLCA2OSwgCi0gICAgMTI4LCA3OCwgNjksIDY2LCA2OSwgNzgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzgsIDY4LCA4NSwgODgsIAotICAgIDEyOCwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDgyLCAxMjgsIAotICAgIDc4LCA2OCwgODUsIDgwLCAxMjgsIDc4LCA2OCwgODUsIDc4LCAxMjgsIDc4LCA2OCwgMjEzLCA3OCwgNjgsIDc5LCA4OCwgCi0gICAgMTI4LCA3OCwgNjgsIDc5LCA4NCwgMTI4LCA3OCwgNjgsIDc5LCA4MCwgMTI4LCA3OCwgNjgsIDc5LCA3OSwgMTI4LCA3OCwgCi0gICAgNjgsIDc5LCA3OCwgMTI4LCA3OCwgNjgsIDc5LCA3NywgNjYsIDg1LCAxMjgsIDc4LCA2OCwgNzksIDc2LCAxOTcsIDc4LCAKLSAgICA2OCwgNzMsIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDg0LCAxMjgsIDc4LCA2OCwgNzMsIDgxLCAxMjgsIDc4LCA2OCwgNzMsIAotICAgIDgwLCAxMjgsIDc4LCA2OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgMTI4LCA3OCwgNjgsIDczLCA2OCwgCi0gICAgNjUsIDEyOCwgNzgsIDY4LCA3MywgNjUsIDgxLCAxMjgsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDc4LCA2OCwgNjksIDg1LCAKLSAgICA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDY1LCA2OSwgODIsIDY5LCA2OSwgCi0gICAgMTI4LCA3OCwgNjgsIDY5LCA4MCwgMTI4LCA3OCwgNjgsIDY5LCA2OSwgMTI4LCA3OCwgNjgsIDY5LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDg4LCAxMjgsIDc4LCA2OCwgNjUsIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDc4LCA2OCwgNjUsIDc3LCAKLSAgICAxMjgsIDc4LCA2OCwgNjUsIDY1LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIAotICAgIDEyOCwgNzgsIDY4LCA2NSwgMTkzLCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCA3OCwgNjYsIAotICAgIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIDY2LCA4OSwgCi0gICAgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgNjYsIDc5LCAKLSAgICA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAxMjgsIDc4LCAKLSAgICA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCA2NiwgNzMsIAotICAgIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIDY2LCA3MywgCi0gICAgMTI4LCA3OCwgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgNjYsIDY1LCAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCAKLSAgICA4OCwgNzMsIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIAotICAgIDg1LCA2OCwgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCAKLSAgICA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIAotICAgIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgCi0gICAgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCAKLSAgICA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIAotICAgIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3MywgODIsIDE5MywgNzgsIDY1LCA3MywgMjA0LCA3OCwgNjUsIAotICAgIDcxLCA4MiwgMjAxLCA3OCwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzgsIDY1LCA3MSwgNjUsIDEyOCwgNzgsIDY1LCA3MSwgCi0gICAgMTkzLCA3OCwgNjUsIDcxLCAxMjgsIDc4LCA2NSwgMTk5LCA3OCwgNjUsIDY5LCAxMjgsIDc4LCA2NSwgNjYsIDc2LCA2NSwgCi0gICAgMTI4LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCA3NSwgODMsIDczLCAKLSAgICA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNjUsIAotICAgIDE5MywgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIAotICAgIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgCi0gICAgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAKLSAgICAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIAotICAgIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgCi0gICAgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgCi0gICAgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgCi0gICAgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCAKLSAgICA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgCi0gICAgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgCi0gICAgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgCi0gICAgMjE1LCA3NywgODYsIDc5LCA4MCwgMTI4LCA3NywgODYsIDczLCAxMjgsIDc3LCA4NiwgNjksIDg1LCA2NSwgNjksIDc4LCAKLSAgICA3MSwgNjUsIDc3LCAxMjgsIDc3LCA4NiwgMTI4LCA3NywgMjE0LCA3NywgODUsIDg4LCAxMjgsIDc3LCA4NSwgODUsIDgzLCAKLSAgICA3MywgNzUsIDY1LCA4NCwgNzksIDY1LCA3OCwgMTI4LCA3NywgODUsIDg1LCA4MiwgNjgsIDcyLCA2NSwgNzQsIDE5MywgNzcsIAotICAgIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgCi0gICAgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCAKLSAgICA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIAotICAgIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgCi0gICAgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAKLSAgICAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCAKLSAgICA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIAotICAgIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgCi0gICAgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKLSAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIAotICAgIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgCi0gICAgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgCi0gICAgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCAKLSAgICA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIAotICAgIDE5NywgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIAotICAgIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgCi0gICAgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCAKLSAgICA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIAotICAgIDE5NiwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgCi0gICAgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCAKLSAgICA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIAotICAgIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgCi0gICAgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIAotICAgIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgCi0gICAgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCAKLSAgICA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIAotICAgIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgCi0gICAgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIAotICAgIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgCi0gICAgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIAotICAgIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgCi0gICAgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIAotICAgIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIAotICAgIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAKLSAgICAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCAKLSAgICA3MywgMjEyLCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgCi0gICAgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgCi0gICAgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCAKLSAgICA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIAotICAgIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgCi0gICAgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCAKLSAgICA3OCwgMjExLCA3NywgNzMsIDc2LCA3NiwgNjksIDg0LCAxMjgsIDc3LCA3MywgNzYsIDc2LCAxOTcsIDc3LCA3MywgNzYsIAotICAgIDIwNCwgNzcsIDczLCA3NiwgNzUsIDIxNywgNzcsIDczLCA3NiwgMTI4LCA3NywgNzMsIDc1LCA4NSwgODIsIDc5LCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDc1LCA4MiwgNzksIDIwNiwgNzcsIDczLCA3NSwgODIsIDczLCAxMjgsIDc3LCA3MywgNzMsIDc4LCAKLSAgICAxMjgsIDc3LCA3MywgNzMsIDEyOCwgNzcsIDczLCAxOTksIDc3LCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MywgNjksIDg1LCAKLSAgICA3NywgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIAotICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCAKLSAgICA2NSwgNzgsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKLSAgICA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzcsIDczLCA2OSwgODUsIDIwNSwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzcsIDczLCA2OSwgNjksIDEyOCwgNzcsIDczLCA2OSwgMTI4LCA3NywgNzMsIDY4LCA3NiwgNzMsIDc4LCAxOTcsIAotICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIDQ1LCA4NywgNjksIDc2LCA4MywgMjAwLCA3NywgNzMsIDY4LCA2OCwgNzYsIDE5NywgCi0gICAgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAKLSAgICA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIAotICAgIDcyLCAxMjgsIDc3LCA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgCi0gICAgNzcsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCAKLSAgICA3OSwgODgsIDEyOCwgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCAKLSAgICA3NywgNzEsIDIwNywgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIAotICAgIDg4LCAxMjgsIDc3LCA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIAotICAgIDcxLCA2NiwgNzksIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIAotICAgIDc4LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgCi0gICAgODMsIDY1LCA4MSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCAKLSAgICA3MSwgNjUsIDg0LCAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCAKLSAgICA3MCwgNzksIDc4LCAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgCi0gICAgODUsIDgxLCAxMjgsIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCAKLSAgICA5MCwgOTAsIDc5LCAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCAKLSAgICA3NywgNjksIDg1LCA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgODQsIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgCi0gICAgNzMsIDY1LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCAKLSAgICA4NSwgODMsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIAotICAgIDg0LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgCi0gICAgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIDY5LCAKLSAgICA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgNjUsIAotICAgIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MiwgCi0gICAgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAKLSAgICAxMjgsIDc3LCA2OSwgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIAotICAgIDcyLCA3MywgODAsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgCi0gICAgNzcsIDY5LCA3NywgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCAKLSAgICA2OSwgNzYsIDc5LCA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgCi0gICAgMTI4LCA3NywgNjksIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc3LCA2OSwgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIAotICAgIDY5LCA2OSwgODQsIDY5LCAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgCi0gICAgNjksIDY5LCA3NywgMTI4LCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCAKLSAgICA3MywgODUsIDc3LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIAotICAgIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY1LCA4NCwgMTI4LCA3NywgNjksIDY1LCAyMTIsIAotICAgIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxOTYsIDc3LCA2OSwgNjUsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDc3LCA2OSwgCi0gICAgNjUsIDgzLCA4NSwgODIsIDE5NywgNzcsIDY4LCA4NSwgMjA2LCA3NywgNjcsIDcyLCAyMTMsIDc3LCA2NywgNzIsIDY1LCAKLSAgICAyMDYsIDc3LCA2NiwgODUsIDc5LCA4MSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgMTI4LCA3NywgNjYsIDg1LCA2OSwgMTI4LCAKLSAgICA3NywgNjYsIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NywgNjYsIDc5LCAxMjgsIDc3LCA2NiwgNzMsIDg0LCAxMjgsIDc3LCA2NiwgNzMsIDIxMiwgNzcsIDY2LCA3MywgCi0gICAgODIsIDczLCA2OSwgNjksIDc4LCAxMjgsIDc3LCA2NiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDg4LCAxMjgsIDc3LCAKLSAgICA2NiwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDc3LCAxMjgsIDc3LCA2NiwgNjksIDgyLCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDY2LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDc1LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgCi0gICAgNjksIDY5LCAxMjgsIDc3LCA2NiwgNjksIDEyOCwgNzcsIDY2LCA2NSwgODEsIDEyOCwgNzcsIDY2LCA2NSwgNzgsIDg5LCAKLSAgICA3MywgMTI4LCA3NywgNjYsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA2NSwgNzUsIDY5LCA4NCwgCi0gICAgMTI4LCA3NywgNjYsIDY1LCA2NSwgMTI4LCA3NywgNjYsIDY1LCAxOTMsIDc3LCA2NiwgMTkzLCA3NywgNjYsIDUyLCAxMjgsIAotICAgIDc3LCA2NiwgNTEsIDEyOCwgNzcsIDY2LCA1MCwgMTI4LCA3NywgNjYsIDEyOCwgNzcsIDE5NCwgNzcsIDY1LCA4OSwgNjksIAotICAgIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgCi0gICAgNzcsIDY1LCAxMjgsIDc3LCA2NSwgODgsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgNzcsIDY1LCAKLSAgICA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCA2NSwgODQsIAotICAgIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIDgzLCA4MywgCi0gICAgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgNzcsIDY1LCAKLSAgICA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCA2NywgODUsIAotICAgIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODUsIDc1LCA4NSwgMTI4LCA3NywgCi0gICAgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCA3OCwgMTk5LCA3NywgNjUsIDgyLCAKLSAgICA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIAotICAgIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCAKLSAgICA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIAotICAgIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgCi0gICAgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4MywgODksIDc5LCAKLSAgICA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIDIxOCwgNzcsIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDcxLCA2NSwgNzYsIDY1LCA3NywgMTI4LCA3NywgNjUsIDc4LCA2OCwgCi0gICAgNjUsIDczLCA3NiwgNzMsIDc4LCAxOTksIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDE5NSwgNzcsIDY1LCA3OCwgNjcsIDcyLCAKLSAgICAyMTMsIDc3LCA2NSwgNzgsIDY1LCA2NywgNzYsIDY5LCA4MywgMTI4LCA3NywgNjUsIDc2LCA4NCwgNjksIDgzLCAxOTcsIAotICAgIDc3LCA2NSwgNzYsIDY5LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDc3LCA2NSwgNzYsIDE5NywgCi0gICAgNzcsIDY1LCA3NiwgNjUsIDc1LCA3OSwgMjA2LCA3NywgNjUsIDc1LCA4MywgODUsIDgyLCA2NSwgMTI4LCA3NywgNjUsIDczLCAKLSAgICA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDc3LCA2NSwgNzMsIDg0LCA2NSwgNzMsIAotICAgIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA4NSwgNjUsIDc4LCAKLSAgICAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgMTI4LCA3NywgNjUsIDczLCA3NiwgNjYsIDc5LCAyMTYsIAotICAgIDc3LCA2NSwgNzMsIDc1LCA4NSwgODIsIDc5LCAxMjgsIDc3LCA2NSwgNzMsIDY4LCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA3MiwgCi0gICAgNzQsIDc5LCA3OCwgMTk5LCA3NywgNjUsIDcyLCA3MiwgNjUsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDgwLCA4MiwgNjUsIDc4LCAKLSAgICA2NSwgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDY1LCA3NSwgNzIsIDEyOCwgNzcsIDY1LCA3MiwgNjUsIDY1LCA4MCwgODIsIAotICAgIDY1LCA2NSwgNzgsIDE5MywgNzcsIDY1LCA3MiwgMTI4LCA3NywgNjUsIDcxLCA3OCwgNzMsIDcwLCA4OSwgNzMsIDc4LCAKLSAgICAxOTksIDc3LCA2NSwgNjksIDgzLCA3MywgMTI4LCA3NywgNjUsIDY5LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc4LCA3NCwgNjksIDg0LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA4NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgCi0gICAgNzUsIDgwLCA2OSwgNzgsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCAKLSAgICA3NywgNjYsIDcxLCA2NiwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNjUsIDY5LCA3NywgNjYsIDY1LCAxMjgsIDc3LCA2NSwgNjksIAotICAgIDc3LCAxMjgsIDc3LCA2NSwgNjksIDc2LCA2OSwgNjksIDEyOCwgNzcsIDY1LCA2OSwgNzUsIDY5LCA4NSwgODAsIDEyOCwgCi0gICAgNzcsIDY1LCA2OCwgODksIDY1LCAxMjgsIDc3LCA2NSwgNjgsIDg1LCAxMjgsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMjAwLCAKLSAgICA3NywgNjUsIDY4LCA2OCwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDE5MywgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIAotICAgIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgODYsIDY5LCAKLSAgICAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIAotICAgIDc5LCA3OCwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDIwNiwgNzcsIDY1LCA2NywgNzIsIDczLCA3OCwgNjksIDEyOCwgCi0gICAgNzcsIDY1LCA2NSwgNzMsIDEyOCwgNzcsIDY1LCA2NSwgMTI4LCA3NywgNjUsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDc3LCA0OCwgNTIsIDUxLCAxMjgsIDc3LCA0OCwgNTIsIDUwLCAxMjgsIDc3LCA0OCwgNTIsIDQ5LCAxMjgsIDc3LCAKLSAgICA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDUyLCA0OCwgMTI4LCA3NywgNDgsIDUxLCA1NywgMTI4LCA3NywgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA3NywgNDgsIDUxLCA1NSwgMTI4LCA3NywgNDgsIDUxLCA1NCwgMTI4LCA3NywgNDgsIDUxLCA1MywgCi0gICAgMTI4LCA3NywgNDgsIDUxLCA1MiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjYsIDEyOCwgNzcsIDQ4LCA1MSwgNTEsIDY1LCAKLSAgICAxMjgsIDc3LCA0OCwgNTEsIDUxLCAxMjgsIDc3LCA0OCwgNTEsIDUwLCAxMjgsIDc3LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKLSAgICA3NywgNDgsIDUxLCA0OSwgMTI4LCA3NywgNDgsIDUxLCA0OCwgMTI4LCA3NywgNDgsIDUwLCA1NywgMTI4LCA3NywgNDgsIAotICAgIDUwLCA1NiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTYsIDEyOCwgNzcsIDQ4LCA1MCwgNTUsIDEyOCwgNzcsIDQ4LCA1MCwgCi0gICAgNTQsIDEyOCwgNzcsIDQ4LCA1MCwgNTMsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUyLCAKLSAgICAxMjgsIDc3LCA0OCwgNTAsIDUxLCAxMjgsIDc3LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3NywgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA3NywgNDgsIDUwLCA0OSwgMTI4LCA3NywgNDgsIDUwLCA0OCwgMTI4LCA3NywgNDgsIDQ5LCA1NywgMTI4LCA3NywgNDgsIAotICAgIDQ5LCA1NiwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTUsIDEyOCwgNzcsIDQ4LCA0OSwgCi0gICAgNTQsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDU0LCAxMjgsIDc3LCA0OCwgNDksIDUzLCA2NSwgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1MywgMTI4LCA3NywgNDgsIDQ5LCA1MiwgMTI4LCA3NywgNDgsIDQ5LCA1MSwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNzIsIAotICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MCwgMTI4LCA3NywgNDgsIDQ5LCA1MCwgCi0gICAgNjksIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY4LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NywgMTI4LCA3NywgNDgsIDQ5LCAKLSAgICA1MCwgNjYsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUwLCAxMjgsIDc3LCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA0OCwgMTI4LCA3NywgNDgsIDQ4LCA1NywgCi0gICAgMTI4LCA3NywgNDgsIDQ4LCA1NiwgMTI4LCA3NywgNDgsIDQ4LCA1NSwgMTI4LCA3NywgNDgsIDQ4LCA1NCwgMTI4LCA3NywgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3NywgNDgsIDQ4LCA1MiwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgNzcsIDQ4LCAKLSAgICA0OCwgNTEsIDEyOCwgNzcsIDQ4LCA0OCwgNTAsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDc3LCA0OCwgNDgsIAotICAgIDQ5LCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgMTI4LCA3NiwgMjE4LCA3NiwgODksIDg5LCAxMjgsIDc2LCA4OSwgODgsIAotICAgIDEyOCwgNzYsIDg5LCA4NCwgMTI4LCA3NiwgODksIDgyLCA4OCwgMTI4LCA3NiwgODksIDgyLCAxMjgsIDc2LCA4OSwgODAsIAotICAgIDEyOCwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIAotICAgIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIAotICAgIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgCi0gICAgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAKLSAgICAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCAKLSAgICA4NSwgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgCi0gICAgMjA0LCA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgCi0gICAgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCAKLSAgICA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIAotICAgIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCAxODUsIDc2LCA3OSwgODYsIDE5NywgNzYsIDc5LCA4NSwgODIsIDY5LCAxMjgsIAotICAgIDc2LCA3OSwgODUsIDY4LCA4MywgODAsIDY5LCA2NSwgNzUsIDY5LCA4MiwgMTI4LCA3NiwgNzksIDg1LCA2OCwgNzYsIDIxNywgCi0gICAgNzYsIDc5LCA4NCwgODUsIDgzLCAxMjgsIDc2LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA4MiwgODIsIDg5LCAxMjgsIDc2LCAKLSAgICA3OSwgODIsIDgyLCA2NSwgNzMsIDc4LCA2OSwgMTI4LCA3NiwgNzksIDgxLCAxMjgsIDc2LCA3OSwgODAsIDEyOCwgNzYsIAotICAgIDc5LCA3OSwgODQsIDEyOCwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNzYsIDc5LCA3OSwgCi0gICAgMjAzLCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3OSwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDY1LCAKLSAgICAxMjgsIDc2LCA3OSwgNzgsIDcxLCAxOTMsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIAotICAgIDg5LCA4MiwgMTI4LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4MywgNzksIDIwNCwgCi0gICAgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzksIDgzLCAyMTEsIDc2LCA3OSwgNzgsIAotICAgIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDc3LCA2NSwgNjgsIDIxMCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzIsIDY1LCA3MSwgNjUsIDc2LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgCi0gICAgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDY1LCAyMTAsIDc2LCA3OSwgNzcsIDc3LCA2NSwgNjksIDEyOCwgNzYsIDc5LCAKLSAgICA3NywgMTI4LCA3NiwgNzksIDIwNSwgNzYsIDc5LCA3NiwgNzYsIDczLCA4MCwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzYsIAotICAgIDc2LCAxMjgsIDc2LCA3OSwgNzEsIDIxMCwgNzYsIDc5LCA3MSwgNzksIDg0LCA4OSwgODAsIDE5NywgNzYsIDc5LCA3MSwgCi0gICAgNzksIDcxLCA4MiwgNjUsIDIwNSwgNzYsIDc5LCA3MSwgMTI4LCA3NiwgNzksIDY4LCA2OSwgODMsIDg0LCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDc2LCA3OSwgNjcsIDc5LCA3NywgNzksIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDIwMywgNzYsIAotICAgIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA3OSwgCi0gICAgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgCi0gICAgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgCi0gICAgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCA3MywgODQsIDg0LCA3NiwgMTk3LCA3NiwgNzMsIDg0LCAKLSAgICA4NCwgNjksIDIxMCwgNzYsIDczLCA4NCwgODIsIDE5MywgNzYsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDgzLCAyMTMsIDc2LCAKLSAgICA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIAotICAgIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgNzYsIDczLCA3OCwgMjAzLCA3NiwgCi0gICAgNzMsIDc4LCA3MSwgODMsIDY1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA4MywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgMjExLCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgNDUsIDU3LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTUsIDEyOCwgNzYsIDczLCA3OCwgNjksIAotICAgIDQ1LCA1MSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDQ5LCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgNTIsIDEyOCwgCi0gICAgNzYsIDczLCA3NywgNzcsIDg1LCA1MCwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzYsIDczLCA3NywgNzcsIAotICAgIDIxMywgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgMTk2LCA3NiwgNzMsIDc3LCA3MywgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA3NiwgNzMsIDc3LCA3MywgODQsIDEyOCwgNzYsIDczLCA3NywgNjksIDEyOCwgNzYsIDczLCA3NiwgODksIDEyOCwgCi0gICAgNzYsIDczLCA3NiwgNzMsIDg0LCA3MiwgMTI4LCA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzMsIDEyOCwgNzYsIDczLCAKLSAgICA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgCi0gICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCAKLSAgICA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIAotICAgIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgCi0gICAgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDY5LCAKLSAgICAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIAotICAgIDY5LCA3NywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAKLSAgICAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIAotICAgIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgCi0gICAgNjksIDc5LCA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCAKLSAgICA3NiwgNjUsIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIAotICAgIDgyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgCi0gICAgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCAKLSAgICA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIAotICAgIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCAKLSAgICA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgCi0gICAgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAKLSAgICAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIAotICAgIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgCi0gICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIAotICAgIDc4LCAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgCi0gICAgNjksIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCAKLSAgICA3NiwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIAotICAgIDc2LCA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAKLSAgICAxOTYsIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgCi0gICAgNjUsIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCAKLSAgICA4NywgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCAKLSAgICA3NiwgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIAotICAgIDgyLCA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgCi0gICAgNjksIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCAKLSAgICA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCAKLSAgICA3NiwgNjUsIDIwNywgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzYsIDY1LCA3OCwgNzEsIDg1LCA2NSwgNzEsIAotICAgIDE5NywgNzYsIDY1LCA3OCwgNjksIDgzLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgCi0gICAgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgCi0gICAgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCAKLSAgICA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIAotICAgIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc0LCA2NSwgNzgsIDg5LCA2NSwgNzYsIDY1LCAKLSAgICA3OCwgMTI4LCA3NiwgNjUsIDIwMSwgNzYsIDY1LCA3MiwgODMsIDcyLCA4NSwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIAorICAgIDc4LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA3OCwgNzcsIDEyOCwgNzgsIDc2LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ5LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MywgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDc2LCA0OCwgNDksIDQ4LCAxMjgsIDc4LCA3NiwgNDgsIAorICAgIDQ4LCA1NywgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU1LCAxMjgsIDc4LCA3NiwgCisgICAgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUxLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MCwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDc2LCAxMjgsIDc4LCA3NSwgNzksIDc3LCAxMjgsIDc4LCA3NSwgCisgICAgMjA3LCA3OCwgNzUsIDczLCA3OCwgNjgsIDczLCAxMjgsIDc4LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgODksIDg4LCAxMjgsIDc4LCA3NCwgODksIDg0LCAxMjgsIDc4LCA3NCwgODksIDgyLCA4OCwgMTI4LCA3OCwgNzQsIAorICAgIDg5LCA4MiwgMTI4LCA3OCwgNzQsIDg5LCA4MCwgMTI4LCA3OCwgNzQsIDg5LCAxMjgsIDc4LCA3NCwgODUsIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA4MiwgMTI4LCA3OCwgNzQsIDg1LCA4MSwgNjUsIDEyOCwgCisgICAgNzgsIDc0LCA4NSwgODAsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3NCwgODUsIDc5LCAxMjgsIDc4LCAKKyAgICA3NCwgODUsIDY5LCA4MSwgMTI4LCA3OCwgNzQsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4NSwgMTI4LCA3OCwgNzQsIAorICAgIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDc5LCA4NCwgMTI4LCA3OCwgNzQsIDc5LCA4MCwgMTI4LCA3OCwgNzQsIDc5LCA3OSwgCisgICAgMTI4LCA3OCwgNzQsIDc5LCAxMjgsIDc4LCA3NCwgNzMsIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDg0LCAxMjgsIDc4LCA3NCwgCisgICAgNzMsIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzgsIDc0LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDczLCA2OSwgMTI4LCA3OCwgNzQsIAorICAgIDczLCAxMjgsIDc4LCA3NCwgMjAxLCA3OCwgNzQsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDg0LCAxMjgsIAorICAgIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc4LCA2NSwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgCisgICAgNzQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAxMjgsIDc4LCA3NCwgNjksIDE5NywgNzgsIDc0LCAKKyAgICA2OSwgMTI4LCA3OCwgNzQsIDY1LCA4MSwgMTI4LCA3OCwgNzQsIDY1LCA4MCwgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIAorICAgIDc2LCA3MywgMTI4LCA3OCwgNzQsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDc0LCA2NSwgNjUsIDEyOCwgNzgsIDczLCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDg0LCA4MiwgNjksIDEyOCwgNzgsIDczLCA4MywgNjUsIDcxLCAxMjgsIDc4LCA3MywgODIsIDg1LCAKKyAgICA3MSwgODUsIDEyOCwgNzgsIDczLCA4MCwgMTI4LCA3OCwgNzMsIDc4LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA3OCwgNjksIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDIxNywgNzgsIDczLCA3OCwgNjksIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCAyMDYsIDc4LCA3MywgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3OCwgNzMsIDc4LCAxOTcsIDc4LCA3MywgNzgsIDY4LCA2NSwgNTAsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjgsIDY1LCAxNzgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIDczLCAyMDUsIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIAorICAgIDcyLCA4MywgNzIsIDg2LCA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgCisgICAgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCAKKyAgICA3OCwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgCisgICAgNzksIDgzLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCAKKyAgICA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgCisgICAgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIAorICAgIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIAorICAgIDczLCA2NiwgMTI4LCA3OCwgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIAorICAgIDcyLCA3NCwgNjUsIDEyOCwgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgODUsIDg1LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgCisgICAgNzgsIDcxLCA4NSwgNzksIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIAorICAgIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIAorICAgIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgCisgICAgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgCisgICAgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgCisgICAgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIAorICAgIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCAKKyAgICA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIAorICAgIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgCisgICAgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCAKKyAgICA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIAorICAgIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgCisgICAgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAKKyAgICAyMDYsIDc4LCA3MSwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzEsIDcxLCA3OSwgMTI4LCAKKyAgICA3OCwgNzEsIDcxLCA3MywgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgMjEzLCA3OCwgCisgICAgNzEsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA4NCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDY5LCAKKyAgICA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIAorICAgIDgwLCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIDc3LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA3MSwgNjksIDY1LCA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgNjUsIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCAKKyAgICA2NSwgODAsIDEyOCwgNzgsIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIAorICAgIDc4LCA3MCwgMTI4LCA3OCwgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCAxMjgsIDc4LCAKKyAgICA2OSwgODUsIDg0LCA4MiwgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCAxMjgsIAorICAgIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgCisgICAgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCAKKyAgICA2OSwgMjA3LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKKyAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgCisgICAgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc4LCAKKyAgICA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIDg1LCA4MCwgMTI4LCA3OCwgNjgsIAorICAgIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIDY4LCA3OSwgODQsIDEyOCwgNzgsIAorICAgIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgNzgsIDEyOCwgNzgsIDY4LCA3OSwgCisgICAgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCA4OCwgMTI4LCA3OCwgNjgsIDczLCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCA3OCwgNjgsIDczLCA2OSwgODgsIAorICAgIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIDc4LCA2OCwgNzMsIDY1LCA4MSwgCisgICAgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg0LCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNzgsIAorICAgIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCA3OCwgNjgsIDY1LCA4NCwgCisgICAgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIDY1LCA2NSwgNzgsIDcxLCAKKyAgICA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgNjUsIDE5MywgNzgsIAorICAgIDY2LCA4OSwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODQsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgCisgICAgODksIDgyLCAxMjgsIDc4LCA2NiwgODksIDgwLCAxMjgsIDc4LCA2NiwgODksIDEyOCwgNzgsIDY2LCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDY2LCA4NSwgODQsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDgyLCAxMjgsIDc4LCAKKyAgICA2NiwgODUsIDgwLCAxMjgsIDc4LCA2NiwgODUsIDEyOCwgNzgsIDY2LCA3OSwgODgsIDEyOCwgNzgsIDY2LCA3OSwgODQsIAorICAgIDEyOCwgNzgsIDY2LCA3OSwgODAsIDEyOCwgNzgsIDY2LCA3OSwgMTI4LCA3OCwgNjYsIDczLCA4OCwgMTI4LCA3OCwgNjYsIAorICAgIDczLCA4NCwgMTI4LCA3OCwgNjYsIDczLCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY2LCA3MywgCisgICAgNjksIDgwLCAxMjgsIDc4LCA2NiwgNzMsIDY5LCAxMjgsIDc4LCA2NiwgNzMsIDEyOCwgNzgsIDY2LCA3MiwgMTI4LCA3OCwgCisgICAgNjYsIDY1LCA4OCwgMTI4LCA3OCwgNjYsIDY1LCA4NCwgMTI4LCA3OCwgNjYsIDY1LCA4MCwgMTI4LCA3OCwgNjYsIDY1LCAKKyAgICAxMjgsIDc4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgODksIDEyOCwgNzgsIDY1LCA4OCwgNzMsIAorICAgIDY1LCAyMDYsIDc4LCA2NSwgODgsIDEyOCwgNzgsIDY1LCA4NSwgODQsIDcyLCA4MywgMTI4LCA3OCwgNjUsIDg1LCA2OCwgCisgICAgNzMsIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCAKKyAgICA3OCwgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIAorICAgIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzgsIDcxLCA3NywgNzksIAorICAgIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIDY1LCA3NywgMTI4LCA3OCwgCisgICAgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIDY1LCA3MSwgODIsIDIwMSwgCisgICAgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgNzEsIDE5MywgNzgsIDY1LCAKKyAgICA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgNjUsIDEyOCwgNzgsIDY1LCAKKyAgICA2NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzUsIDgzLCA3MywgNzUsIDg5LCA2NSwgCisgICAgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDczLCAxMjgsIDc4LCA2NSwgMTkzLCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgCisgICAgNDUsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAKKyAgICAxMjgsIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCAKKyAgICA3OCwgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgCisgICAgNTEsIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA3OCwgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIAorICAgIDQ4LCA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgCisgICAgNTAsIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgCisgICAgNzgsIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIAorICAgIDQ5LCA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCAKKyAgICA3OCwgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIAorICAgIDg0LCAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgCisgICAgMTI4LCA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIAorICAgIDEyOCwgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIAorICAgIDY5LCAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCAKKyAgICA4NiwgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIAorICAgIDY5LCA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIAorICAgIDg1LCA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAKKyAgICAxOTMsIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCAKKyAgICA4MywgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgCisgICAgMTI4LCA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA4MiwgNjgsIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIAorICAgIDY1LCA3NywgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIAorICAgIDc3LCA4NSwgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgCisgICAgODUsIDc4LCA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCAKKyAgICA2OSwgODQsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDIxMiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAorICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCAyMDYsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIAorICAgIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgCisgICAgMjAxLCA3NywgODUsIDc1LCA4MCwgNzIsIDgyLCA2OSwgNzgsIDcxLCAxMjgsIDc3LCA4NSwgNzMsIDc4LCAxMjgsIDc3LCAKKyAgICA4NSwgNzEsIDgzLCAxMjgsIDc3LCA4NSwgNzEsIDEyOCwgNzcsIDg1LCAxOTksIDc3LCA4NSwgNjksIDEyOCwgNzcsIDg1LCAKKyAgICA2NywgNzIsIDEyOCwgNzcsIDg1LCA2NywgMjAwLCA3NywgODUsIDY3LCA2NSwgNjUsIDY4LCAxMjgsIDc3LCA4NSwgNjUsIAorICAgIDc4LCAxMjgsIDc3LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA4NSwgNDUsIDcxLCA2NSwgNjUsIDcyLCA3NiwgNjUsIDE5MywgCisgICAgNzcsIDIxMywgNzcsIDgzLCAxMjgsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgCisgICAgODgsIDEyOCwgNzcsIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIDc5LCA4NSwgODQsIDcyLCAKKyAgICAxMjgsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgNzksIDg1LCA4MywgMTk3LCAKKyAgICA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgCisgICAgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgMjEyLCA3NywgNzksIDg1LCAKKyAgICA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NywgNzksIAorICAgIDg0LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA4NSwgODUsIDc3LCAxMjgsIDc3LCA3OSwgODIsIDg0LCA2NSwgODIsIDEyOCwgCisgICAgNzcsIDc5LCA4MiwgODAsIDcyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNzksIDgyLCA3OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3NywgNzksIDgwLCAxMjgsIDc3LCA3OSwgNzksIDgzLCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgCisgICAgNzcsIDc5LCA3OSwgNzgsIDEyOCwgNzcsIDc5LCA3OSwgMjA2LCA3NywgNzksIDc5LCA3NywgODAsIDg1LCA4MSwgMTI4LCAKKyAgICA3NywgNzksIDc5LCA3NywgNjksIDg1LCA4NCwgMTI4LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIAorICAgIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCAKKyAgICA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIAorICAgIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgCisgICAgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCAKKyAgICA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIAorICAgIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgCisgICAgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgCisgICAgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIAorICAgIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIAorICAgIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIAorICAgIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgCisgICAgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCAKKyAgICA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIAorICAgIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgNzcsIDY1LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2OCwgNzMsIDgzLCA2NywgCisgICAgMTI4LCA3NywgNzMsIDc4LCA3MywgNjYsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc3LCA2OSwgMTI4LCA3NywgNzMsIDc3LCAKKyAgICAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgNzcsIAorICAgIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIAorICAgIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgCisgICAgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIAorICAgIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKKyAgICA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgCisgICAgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCAKKyAgICA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIAorICAgIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3NywgNzMsIDE5NiwgNzcsIDczLCA2NywgODIsIDc5LCA4MywgNjcsIDc5LCA4MCwgCisgICAgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDczLCA2NywgODIsIAorICAgIDIwNywgNzcsIDczLCA2NywgMjEwLCA3NywgNzIsIDkwLCAxMjgsIDc3LCA3MiwgNjUsIDEyOCwgNzcsIDcyLCAxMjgsIDc3LCAKKyAgICA3MSwgODUsIDg4LCAxMjgsIDc3LCA3MSwgODUsIDg0LCAxMjgsIDc3LCA3MSwgODUsIDgyLCA4OCwgMTI4LCA3NywgNzEsIAorICAgIDg1LCA4MiwgMTI4LCA3NywgNzEsIDg1LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCAxMjgsIDc3LCA3MSwgODUsIDEyOCwgNzcsIDcxLCA3OSwgODgsIDEyOCwgCisgICAgNzcsIDcxLCA3OSwgODQsIDEyOCwgNzcsIDcxLCA3OSwgODAsIDEyOCwgNzcsIDcxLCA3OSwgMTI4LCA3NywgNzEsIDIwNywgCisgICAgNzcsIDcxLCA3MywgNjksIDg4LCAxMjgsIDc3LCA3MSwgNzMsIDY5LCAxMjgsIDc3LCA3MSwgNjksIDg4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjksIDgwLCAxMjgsIDc3LCA3MSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgODUsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAorICAgIDc5LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3MCwgODUsIDc3LCAxMjgsIDc3LCA3MSwgNjYsIDc5LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDczLCAxMjgsIDc3LCA3MSwgNjYsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDc4LCAxMjgsIDc3LCAKKyAgICA3MSwgNjYsIDY5LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2OSwgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCA4MSwgCisgICAgMTI4LCA3NywgNzEsIDY2LCA2NSwgODMsIDY1LCAxMjgsIDc3LCA3MSwgNjUsIDg4LCAxMjgsIDc3LCA3MSwgNjUsIDg0LCAKKyAgICAxMjgsIDc3LCA3MSwgNjUsIDgwLCAxMjgsIDc3LCA3MSwgNjUsIDEyOCwgNzcsIDcxLCAxMjgsIDc3LCA3MCwgNzksIDc4LCAKKyAgICAxMjgsIDc3LCA3MCwgNzksIDIwNiwgNzcsIDcwLCA3OSwgMTI4LCA3NywgNzAsIDczLCA4OSwgNjUsIDgxLCAxMjgsIDc3LCAKKyAgICA3MCwgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDgxLCAxMjgsIAorICAgIDc3LCA3MCwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzcsIDcwLCA2NSwgNjUsIDEyOCwgNzcsIDY5LCA5MCwgOTAsIDc5LCAKKyAgICAxMjgsIDc3LCA2OSwgODgsIDEyOCwgNzcsIDY5LCA4NSwgMjEyLCA3NywgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCAKKyAgICA3OCwgNzQsIDc5LCA3NywgNzgsIDY4LCA2OSwgODUsIDgxLCAxMjgsIDc3LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA2OSwgODQsIAorICAgIDgyLCA3OSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDg0LCA4MiwgNzMsIDY1LCAKKyAgICAxMjgsIDc3LCA2OSwgODQsIDgyLCA2OSwgODQsIDY5LCAyMTEsIDc3LCA2OSwgODQsIDc5LCA2NiwgNjksIDc2LCA4NSwgODMsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgNjksIDc1LCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3MSwgMTI4LCA3NywgNjksIDg0LCA2NSwgCisgICAgNzYsIDEyOCwgNzcsIDY5LCA4NCwgMTkzLCA3NywgNjksIDgzLCA4MywgNjksIDc4LCA3MywgNjUsIDIwNiwgNzcsIDY5LCAKKyAgICA4MywgODMsIDY1LCA3MSwgNjksIDEyOCwgNzcsIDY5LCA4MywgODMsIDY1LCA3MSwgMTk3LCA3NywgNjksIDgzLCA3OSwgCisgICAgMTI4LCA3NywgNjksIDgzLCA3MywgMTI4LCA3NywgNjksIDgzLCA3MiwgMTI4LCA3NywgNjksIDgyLCA3OSwgNzMsIDg0LCAKKyAgICA3MywgMTk1LCA3NywgNjksIDgyLCA3NSwgNzIsIDY1LCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgMTkzLCA3NywgNjksIAorICAgIDgyLCA3MywgNjgsIDczLCA2NSwgNzgsIDgzLCAxMjgsIDc3LCA2OSwgODIsIDczLCAxMjgsIDc3LCA2OSwgODIsIDcxLCA2OSwgCisgICAgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCA4OSwgMTI4LCA3NywgNjksIDgyLCA2NywgODUsIDgyLCAyMTcsIDc3LCAKKyAgICA2OSwgNzgsIDY4LCA4NSwgODQsIDEyOCwgNzcsIDY5LCA3OCwgMTI4LCA3NywgNjksIDc3LCA3OSwgMTI4LCA3NywgNjksIAorICAgIDc3LCA2NiwgNjksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc3LCA2OSwgCisgICAgNzcsIDY2LCA2OSwgMjEwLCA3NywgNjksIDc3LCA0NSwgODEsIDc5LCA4MCwgNzIsIDEyOCwgNzcsIDY5LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDIwNSwgNzcsIDY5LCA3NiwgNzksIDY4LCA3MywgMTk1LCA3NywgNjksIDc2LCA3MywgNzUsIDEyOCwgNzcsIAorICAgIDY5LCA3MywgOTAsIDczLCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4NCwgNzksIDc4LCAxMjgsIDc3LCA2OSwgNzEsIDY1LCA4MCwgCisgICAgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDc2LCA3MywgMTI4LCA3NywgNjksIDY5LCA4NCwgNzksIDgyLCAKKyAgICA4NSwgMTI4LCA3NywgNjksIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIAorICAgIDEyOCwgNzcsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDg1LCAyMDUsIDc3LCA2OSwgNjgsIDczLCA2NywgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIAorICAgIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgMTk3LCA3NywgCisgICAgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIAorICAgIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgCisgICAgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCAKKyAgICA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIAorICAgIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgCisgICAgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCAKKyAgICA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIAorICAgIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIAorICAgIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgCisgICAgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgCisgICAgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCA2NiwgMTI4LCA3NywgMTk0LCA3NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDg5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgMTI4LCA3NywgCisgICAgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCA3MywgODgsIAorICAgIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIDc3LCA2NSwgCisgICAgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgNjksIAorICAgIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA3MCwgCisgICAgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIDc4LCAKKyAgICAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg1LCA3NSwgODUsIDEyOCwgNzcsIDY1LCA4MiwgODQsIAorICAgIDg5LCA4MiwgNzMsIDE5MywgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIDczLCA2NSwgCisgICAgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIAorICAgIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA3MiwgMTI4LCA3NywgNjUsIDgyLCA2NywgCisgICAgNjUsIDg0LCA3OSwgNDUsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIAorICAgIDg0LCA3OSwgMTI4LCA3NywgNjUsIDgyLCA2NywgNjUsIDgzLCA3MywgODQsIDY5LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgCisgICAgODQsIDY1LCAxMjgsIDc3LCA2NSwgODIsIDY2LCA4NSwgODQsIDE5MywgNzcsIDY1LCA4MiwgMTI4LCA3NywgNjUsIDgxLCAKKyAgICA2NSwgNzAsIDEyOCwgNzcsIDY1LCA4MSwgMTI4LCA3NywgNjUsIDgwLCA3NiwgMTk3LCA3NywgNjUsIDgwLCA3MywgODEsIAorICAgIDEyOCwgNzcsIDY1LCAyMDgsIDc3LCA2NSwgNzksIDEyOCwgNzcsIDY1LCA3OCwgODMsIDg5LCA3OSwgNzgsIDEyOCwgNzcsIAorICAgIDY1LCA3OCwgODMsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAyMTgsIDc3LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDc4LCA3MSwgNjUsIDc2LCA2NSwgNzcsIDEyOCwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgNzYsIDczLCAKKyAgICA3OCwgMTk5LCA3NywgNjUsIDc4LCA2OCwgNjUsIDczLCAxOTUsIDc3LCA2NSwgNzgsIDY3LCA3MiwgMjEzLCA3NywgNjUsIAorICAgIDc4LCA2NSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNzcsIDY1LCA3NiwgODQsIDY5LCA4MywgMTk3LCA3NywgNjUsIDc2LCA2OSwgCisgICAgNjksIDgyLCA3MywgMTI4LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3NywgNjUsIDc2LCAxOTcsIDc3LCA2NSwgNzYsIDY1LCAKKyAgICA3NSwgNzksIDIwNiwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgNjUsIDEyOCwgNzcsIDY1LCA3NSwgODMsIDg1LCA4MiwgCisgICAgMTkzLCA3NywgNjUsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA3MywgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDc3LCAKKyAgICA2NSwgNzMsIDg0LCA2NSwgNzMsIDc1LCA3MiwgODUsIDEyOCwgNzcsIDY1LCA3MywgODIsIDg1LCAxMjgsIDc3LCA2NSwgNzMsIAorICAgIDc3LCA4NSwgNjUsIDc4LCAxMjgsIDc3LCA2NSwgNzMsIDc3LCA2NSwgNzYsIDY1LCA3MywgMTI4LCA3NywgNjUsIDczLCA3NiwgCisgICAgNjYsIDc5LCAyMTYsIDc3LCA2NSwgNzMsIDc1LCA4NSwgODIsIDc5LCAxMjgsIDc3LCA2NSwgNzMsIDY4LCA2OSwgNzgsIAorICAgIDEyOCwgNzcsIDY1LCA3MywgMTI4LCA3NywgNjUsIDcyLCA3NCwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzIsIDcyLCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDcyLCA2NSwgODAsIDgyLCA2NSwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzIsIDY1LCA4MCwgNjUsIDc1LCAKKyAgICA3MiwgMTI4LCA3NywgNjUsIDcyLCA2NSwgNjUsIDgwLCA4MiwgNjUsIDY1LCA3OCwgMTkzLCA3NywgNjUsIDcyLCAxMjgsIAorICAgIDc3LCA2NSwgNzEsIDc4LCA3MywgNzAsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2NSwgCisgICAgNjksIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY1LCA2OSwgNzgsIDc0LCA2OSwgODQsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDg2LCAKKyAgICA2OSwgODUsIDg4LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA3NSwgODAsIDY5LCA3OCwgMTI4LCA3NywgNjUsIDY5LCA3NywgNzEsIAorICAgIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgNjksIDc3LCA2NiwgNzEsIDY2LCA3MywgNjksIDY5LCAxMjgsIDc3LCA2NSwgCisgICAgNjksIDc3LCA2NiwgNjUsIDEyOCwgNzcsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY1LCA2OSwgNzYsIDY5LCA2OSwgMTI4LCAKKyAgICA3NywgNjUsIDY5LCA3NSwgNjksIDg1LCA4MCwgMTI4LCA3NywgNjUsIDY4LCA4OSwgNjUsIDEyOCwgNzcsIDY1LCA2OCwgODUsIAorICAgIDEyOCwgNzcsIDY1LCA2OCwgNjgsIDY1LCAyMDAsIDc3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA3NywgNjUsIDY4LCA2OCwgCisgICAgMTkzLCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCAKKyAgICA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA4NiwgNjksIDEyOCwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgNDUsIDY1LCA2NywgCisgICAgODUsIDg0LCA2OSwgMTI4LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc3LCA2NSwgNjcsIDgyLCA3OSwgMjA2LCAKKyAgICA3NywgNjUsIDY3LCA3MiwgNzMsIDc4LCA2OSwgMTI4LCA3NywgNjUsIDY1LCA4OSwgODksIDY1LCA2NSwgMTI4LCA3NywgNjUsIAorICAgIDY1LCA3MywgMTI4LCA3NywgNjUsIDY1LCAxMjgsIDc3LCA2NSwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNTIsIDEyOCwgNzcsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgNzcsIDQ4LCA1MiwgNTAsIDEyOCwgNzcsIDQ4LCA1MiwgNDksIDEyOCwgNzcsIDQ4LCA1MiwgCisgICAgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNTIsIDQ4LCAxMjgsIDc3LCA0OCwgNTEsIDU3LCAxMjgsIDc3LCA0OCwgNTEsIDU2LCAKKyAgICAxMjgsIDc3LCA0OCwgNTEsIDU1LCAxMjgsIDc3LCA0OCwgNTEsIDU0LCAxMjgsIDc3LCA0OCwgNTEsIDUzLCAxMjgsIDc3LCAKKyAgICA0OCwgNTEsIDUyLCAxMjgsIDc3LCA0OCwgNTEsIDUxLCA2NiwgMTI4LCA3NywgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzcsIAorICAgIDQ4LCA1MSwgNTEsIDEyOCwgNzcsIDQ4LCA1MSwgNTAsIDEyOCwgNzcsIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCisgICAgNTEsIDQ5LCAxMjgsIDc3LCA0OCwgNTEsIDQ4LCAxMjgsIDc3LCA0OCwgNTAsIDU3LCAxMjgsIDc3LCA0OCwgNTAsIDU2LCAKKyAgICA2NSwgMTI4LCA3NywgNDgsIDUwLCA1NiwgMTI4LCA3NywgNDgsIDUwLCA1NSwgMTI4LCA3NywgNDgsIDUwLCA1NCwgMTI4LCAKKyAgICA3NywgNDgsIDUwLCA1MywgMTI4LCA3NywgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzcsIDQ4LCA1MCwgNTIsIDEyOCwgNzcsIAorICAgIDQ4LCA1MCwgNTEsIDEyOCwgNzcsIDQ4LCA1MCwgNTAsIDY1LCAxMjgsIDc3LCA0OCwgNTAsIDUwLCAxMjgsIDc3LCA0OCwgCisgICAgNTAsIDQ5LCAxMjgsIDc3LCA0OCwgNTAsIDQ4LCAxMjgsIDc3LCA0OCwgNDksIDU3LCAxMjgsIDc3LCA0OCwgNDksIDU2LCAKKyAgICAxMjgsIDc3LCA0OCwgNDksIDU1LCA2NSwgMTI4LCA3NywgNDgsIDQ5LCA1NSwgMTI4LCA3NywgNDgsIDQ5LCA1NCwgNjUsIAorICAgIDEyOCwgNzcsIDQ4LCA0OSwgNTQsIDEyOCwgNzcsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDc3LCA0OCwgNDksIDUyLCAxMjgsIDc3LCA0OCwgNDksIDUxLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA3MiwgMTI4LCA3NywgCisgICAgNDgsIDQ5LCA1MCwgNzEsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDcwLCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2OSwgMTI4LCAKKyAgICA3NywgNDgsIDQ5LCA1MCwgNjgsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDY3LCAxMjgsIDc3LCA0OCwgNDksIDUwLCA2NiwgCisgICAgMTI4LCA3NywgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgNzcsIDQ4LCA0OSwgNTAsIDEyOCwgNzcsIDQ4LCA0OSwgNDksIDEyOCwgCisgICAgNzcsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc3LCA0OCwgNDksIDQ4LCAxMjgsIDc3LCA0OCwgNDgsIDU3LCAxMjgsIDc3LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDc3LCA0OCwgNDgsIDU1LCAxMjgsIDc3LCA0OCwgNDgsIDU0LCAxMjgsIDc3LCA0OCwgNDgsIAorICAgIDUzLCAxMjgsIDc3LCA0OCwgNDgsIDUyLCAxMjgsIDc3LCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA3NywgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3NywgNDgsIDQ4LCA1MCwgMTI4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAKKyAgICAxMjgsIDc3LCA0OCwgNDgsIDQ5LCAxMjgsIDc2LCAyMTgsIDc2LCA4OSwgODksIDEyOCwgNzYsIDg5LCA4OCwgMTI4LCA3NiwgCisgICAgODksIDg0LCAxMjgsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDc2LCA4OSwgODIsIDEyOCwgNzYsIDg5LCA4MCwgMTI4LCA3NiwgCisgICAgODksIDY4LCA3MywgNjUsIDIwNiwgNzYsIDg5LCA2NywgNzMsIDY1LCAyMDYsIDc2LCA4OCwgMTI4LCA3NiwgODcsIDc5LCAKKyAgICA3OSwgMTI4LCA3NiwgODcsIDc5LCAxMjgsIDc2LCA4NywgNzMsIDczLCAxMjgsIDc2LCA4NywgNzMsIDEyOCwgNzYsIDg3LCAKKyAgICA2OSwgMTI4LCA3NiwgODcsIDY1LCA2NSwgMTI4LCA3NiwgODcsIDY1LCAxMjgsIDc2LCA4NSwgODgsIDEyOCwgNzYsIDg1LCAKKyAgICA4NSwgMTI4LCA3NiwgODUsIDg0LCAxMjgsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDc2LCA4NSwgODAsIDEyOCwgNzYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNzYsIDg1LCA3OSwgODQsIDEyOCwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzYsIDg1LCA3OSwgMTI4LCAKKyAgICA3NiwgODUsIDc4LCA3MSwgODMsIDczLCAxMjgsIDc2LCA4NSwgNzgsIDY1LCA4NCwgMTk3LCA3NiwgODUsIDIwNSwgNzYsIAorICAgIDg1LCA3NiwgMTI4LCA3NiwgODUsIDczLCA4MywgMTI4LCA3NiwgODUsIDcyLCA4NSwgODIsIDEyOCwgNzYsIDg1LCA3MiwgCisgICAgMTI4LCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCAKKyAgICA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCAKKyAgICA3NiwgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgNzcsIDEyOCwgNzYsIDgyLCAKKyAgICA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCA2OSwgMTI4LCA3NiwgNzksIDkwLCA2OSwgNzgsIDcxLCAxOTcsIAorICAgIDc2LCA3OSwgODgsIDEyOCwgNzYsIDc5LCA4NywgNjksIDgyLCA2OSwgMTk2LCA3NiwgNzksIDg3LCA2OSwgMjEwLCA3NiwgCisgICAgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgMTI4LCA3NiwgNzksIDg1LCAKKyAgICA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAyMTcsIDc2LCA3OSwgODQsIAorICAgIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODIsIDgyLCA4OSwgMTI4LCA3NiwgNzksIDgyLCA4MiwgCisgICAgNjUsIDczLCA3OCwgNjksIDEyOCwgNzYsIDc5LCA4MSwgMTI4LCA3NiwgNzksIDgwLCAxMjgsIDc2LCA3OSwgNzksIDg0LCAKKyAgICAxMjgsIDc2LCA3OSwgNzksIDgwLCA2OSwgMTk2LCA3NiwgNzksIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCAyMDgsIDc2LCAKKyAgICA3OSwgNzksIDc4LCAxMjgsIDc2LCA3OSwgNzksIDIwMywgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzksIDc4LCA4MywgODUsIAorICAgIDc3LCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNzksIDc4LCA3MSwgMTkzLCA3NiwgNzksIDc4LCA3MSwgCisgICAgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA4OSwgODIsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAorICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgODMsIDc5LCAyMDQsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA3MiwgNDUsIDc5LCA4MywgMjExLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3NywgCisgICAgNjUsIDY4LCAyMTAsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDcyLCA2NSwgNzEsIAorICAgIDY1LCA3NiwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA2NSwgMjEwLCA3NiwgCisgICAgNzksIDc3LCA3NywgNjUsIDY5LCAxMjgsIDc2LCA3OSwgNzcsIDEyOCwgNzYsIDc5LCAyMDUsIDc2LCA3OSwgNzYsIDc2LCAKKyAgICA3MywgODAsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc2LCA3NiwgMTI4LCA3NiwgNzksIDcxLCAyMTAsIDc2LCA3OSwgNzEsIAorICAgIDc5LCA4NCwgODksIDgwLCAxOTcsIDc2LCA3OSwgNzEsIDc5LCA3MSwgODIsIDY1LCAyMDUsIDc2LCA3OSwgNzEsIDEyOCwgCisgICAgNzYsIDc5LCA2OCwgNjksIDgzLCA4NCwgNzksIDc4LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3OSwgNzcsIDc5LCA4NCwgNzMsIAorICAgIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA3NSwgNzMsIDc4LCA3MSwgNDUsIDgzLCA3MiwgNzMsIDcwLCAyMTIsIDc2LCA3OSwgCisgICAgNjcsIDIwMywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDc2LCA3OSwgNjUsIDEyOCwgNzYsIDc4LCAxMjgsIDc2LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA3NiwgNzksIDc5LCAKKyAgICAxMjgsIDc2LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgMTI4LCA3NiwgNzYsIDc2LCA3OSwgNzksIAorICAgIDEyOCwgNzYsIDc2LCA3NiwgNzksIDEyOCwgNzYsIDc2LCA3NiwgNzMsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDczLCAxMjgsIAorICAgIDc2LCA3NiwgNzYsIDY5LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2OSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgODUsIDEyOCwgCisgICAgNzYsIDc2LCA3NiwgNjUsIDczLCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA2NSwgMTI4LCA3NiwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA3NiwgNzYsIDc2LCAxMjgsIDc2LCA3NCwgODUsIDY4LCA3MywgNzQsIDY5LCAxMjgsIDc2LCA3NCwgNjksIDEyOCwgNzYsIAorICAgIDc0LCAxMjgsIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIAorICAgIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgCisgICAgNzMsIDg0LCAxMjgsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MiwgMTkzLCA3NiwgNzMsIDgxLCA4NSwgNzMsIDE5NiwgCisgICAgNzYsIDczLCA4MSwgMTI4LCA3NiwgNzMsIDgwLCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzYsIDczLCA3OCwgNzUsIDczLCAKKyAgICA3OCwgMTk5LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIAorICAgIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgCisgICAgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIAorICAgIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgCisgICAgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCAKKyAgICA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIAorICAgIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIDc2LCA4OSwgMTI4LCA3NiwgNzMsIDc2LCA3MywgCisgICAgODQsIDcyLCAxMjgsIDc2LCA3MywgNzYsIDEyOCwgNzYsIDczLCA3MSwgNzIsIDg0LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIAorICAgIDczLCA3MCwgNjksIDEyOCwgNzYsIDczLCA2OSwgODgsIDEyOCwgNzYsIDczLCA2OSwgODQsIDEyOCwgNzYsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzYsIDczLCA2OSwgNjksIDEyOCwgNzYsIDczLCA2OSwgMTI4LCA3NiwgNzMsIDY4LCAxMjgsIDc2LCA3MywgCisgICAgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCAKKyAgICA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgCisgICAgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgCisgICAgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgCisgICAgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCAKKyAgICA2OSwgMjEzLCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIAorICAgIDc2LCA2OSwgMjEyLCA3NiwgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgCisgICAgMTI4LCA3NiwgNjksIDgzLCA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgMTI4LCA3NiwgNjksIDc5LCAKKyAgICA4MCwgNjUsIDgyLCA2OCwgMTI4LCA3NiwgNjksIDc5LCAxMjgsIDc2LCA2OSwgNzgsIDg0LCA3MywgNjcsIDg1LCA3NiwgNjUsIAorICAgIDIxMCwgNzYsIDY5LCA3OCwgNzMsIDgzLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDY5LCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAorICAgIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCA3NiwgNjksIDc2LCA2OSwgCisgICAgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIDc3LCA3NywgNjUsIDEyOCwgCisgICAgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzEsIDgzLCAxMjgsIDc2LCA2OSwgNzEsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNzYsIDY5LCA3MSwgNjksIDg0LCA3OSwgMjExLCA3NiwgNjksIDcxLCAxMjgsIDc2LCA2OSwgNzAsIDg0LCA4NywgCisgICAgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCAKKyAgICA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIAorICAgIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCAKKyAgICA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIAorICAgIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAKKyAgICAxOTksIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIAorICAgIDY5LCA3NSwgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgCisgICAgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCAKKyAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIAorICAgIDc2LCA2OCwgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIAorICAgIDkwLCAyMTcsIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgCisgICAgMTI4LCA3NiwgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgCisgICAgNjUsIDg0LCA3MywgNzgsIDY1LCA4NCwgMTk3LCA3NiwgNjUsIDg0LCA3MywgNzUsIDEyOCwgNzYsIDY1LCA4NCwgNjksIDgyLCAKKyAgICA2NSwgMjA0LCA3NiwgNjUsIDg0LCAxOTcsIDc2LCA2NSwgODMsIDIxMiwgNzYsIDY1LCA4MiwgODksIDc4LCA3MSwgNjksIAorICAgIDY1LCAyMDQsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgCisgICAgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgNzYsIDY1LCA4MCwgMTI4LCA3NiwgCisgICAgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NiwgNjUsIDc4LCA3MSwgODUsIDY1LCA3MSwgMTk3LCA3NiwgNjUsIDc4LCAKKyAgICA2OSwgODMsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCA3MiwgMTI4LCA3NiwgNjUsIDc3LCA2OSwgNjgsIDEyOCwgNzYsIAorICAgIDY1LCA3NywgNjksIDE5NiwgNzYsIDY1LCA3NywgNjksIDEyOCwgNzYsIDY1LCA3NywgMTk3LCA3NiwgNjUsIDc3LCA2OCwgCisgICAgNjUsIDEyOCwgNzYsIDY1LCA3NywgNjgsIDEyOCwgNzYsIDY1LCA3NywgNjYsIDY4LCAxOTMsIDc2LCA2NSwgNzcsIDY1LCAKKyAgICA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NiwgMTI4LCA3NiwgNjUsIDIwNCwgNzYsIDY1LCA3NSwgNzUsIDcyLCA2NSwgNzgsIAorICAgIDcxLCA4OSwgNjUsIDc5LCAxMjgsIDc2LCA2NSwgNzQsIDY1LCA3OCwgODksIDY1LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgCisgICAgMjAxLCA3NiwgNjUsIDcyLCA4MywgNzIsIDg1LCAxMjgsIDc2LCA2NSwgNzIsIDEyOCwgNzYsIDY1LCA3MSwgODUsIDgzLCAKICAgICAxMjgsIDc2LCA2NSwgNzEsIDIxMywgNzYsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAyMTAsIDc2LCAKICAgICA2NSwgNzEsIDY1LCA2NiwgMTI4LCA3NiwgNjUsIDcxLCA2NSwgMTk0LCA3NiwgNjUsIDY5LCA4NiwgMTI4LCA3NiwgNjUsIAogICAgIDY5LCAxMjgsIDc2LCA2NSwgNjgsIDIxNywgNzYsIDY1LCA2NywgNzUsIDEyOCwgNzYsIDY1LCA2NywgNjUsIDEyOCwgNzYsIAogICAgIDY1LCA2NiwgNzksIDg1LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODIsIDEyOCwgNzYsIDY1LCA2NiwgCi0gICAgNzMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCAKLSAgICA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIAotICAgIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgCi0gICAgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIAotICAgIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIAotICAgIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgCi0gICAgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCAKLSAgICA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIAotICAgIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIAotICAgIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgCi0gICAgNzksIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgCi0gICAgODcsIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAKLSAgICAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIAotICAgIDEyOCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgCi0gICAgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCA3NSwgODUsIDgyLCAxMjgsIDc1LCAKLSAgICA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCA4NSwgNzksIDgwLCAxMjgsIDc1LCAKLSAgICA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCA3NSwgODUsIDc4LCA3MSwgMTI4LCAKLSAgICA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIDc2LCAxMjgsIDc1LCA4NSwgCi0gICAgMjA0LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIDEyOCwgNzUsIDg1LCAxODAsIAotICAgIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIAotICAgIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA3OSwgCi0gICAgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA3NSwgNzksIAotICAgIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3NSwgCi0gICAgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgNzUsIDgwLCAKLSAgICA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCA4OCwgMTI4LCAKLSAgICA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIDg1LCA4NSwgCi0gICAgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgODIsIDc5LCAKLSAgICA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAxOTUsIAotICAgIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDgwLCAKLSAgICAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgNzksIAotICAgIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgCi0gICAgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIDY2LCAKLSAgICA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgMTI4LCAKLSAgICA3NSwgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIDcxLCAKLSAgICA3MiwgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgNzksIAotICAgIDY1LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCA3OCwgCi0gICAgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCA3MywgCi0gICAgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgMTkzLCAKLSAgICA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIDc1LCAKLSAgICA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIDc1LCAKLSAgICAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIAotICAgIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCAKLSAgICA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgODksIAotICAgIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDc4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgCi0gICAgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc1LCAKLSAgICA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIAotICAgIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgCi0gICAgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCAKLSAgICA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIAotICAgIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgCi0gICAgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCAKLSAgICA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIAotICAgIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgCi0gICAgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgCi0gICAgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIDg1LCAKLSAgICA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjUsIDg0LCAxMjgsIAotICAgIDc1LCA3MiwgNzksIDg1LCAxMjgsIDc1LCA3MiwgNzksIDIxMiwgNzUsIDcyLCA3OSwgNzgsIDEyOCwgNzUsIDcyLCA3OSwgCi0gICAgNzcsIDg1LCA4NCwgMTI4LCA3NSwgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDczLCA4NCwgMTI4LCA3NSwgCi0gICAgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKLSAgICA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgNjksIAotICAgIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCA3NSwgCi0gICAgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIDcyLCAKLSAgICA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgNzIsIAotICAgIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAKKyAgICA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIAorICAgIDY2LCA2NSwgODQsIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDY1LCA2OSwgMTI4LCA3NiwgNjUsIDY1LCA3OCwgMTI4LCA3NiwgCisgICAgNjUsIDY1LCA3NywgODUsIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDEyOCwgNzYsIDY1LCA2NSwgNzMsIDEyOCwgNzYsIDQ4LCAKKyAgICA0OCwgNTQsIDY1LCAxMjgsIDc2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA3NiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzYsIAorICAgIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzUsIDg5LCA4NSwgODIsIDczLCA3MywgMTI4LCA3NSwgODksIDg1LCAKKyAgICAxMjgsIDc1LCA4OSwgNzksIDEyOCwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDg5LCA3MywgMTI4LCAKKyAgICA3NSwgODksIDY5LCAxMjgsIDc1LCA4OSwgNjUsIDg0LCA3MiwgNzksIDIxMSwgNzUsIDg5LCA2NSwgNjUsIDEyOCwgNzUsIAorICAgIDg5LCA2NSwgMTI4LCA3NSwgODgsIDg3LCA3MywgMTI4LCA3NSwgODgsIDg3LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA4NywgCisgICAgNjksIDEyOCwgNzUsIDg4LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4OCwgODcsIDY1LCAxMjgsIDc1LCA4OCwgODUsIDEyOCwgCisgICAgNzUsIDg4LCA3OSwgMTI4LCA3NSwgODgsIDczLCAxMjgsIDc1LCA4OCwgNjksIDY5LCAxMjgsIDc1LCA4OCwgNjksIDEyOCwgCisgICAgNzUsIDg4LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA2NSwgMTI4LCA3NSwgODcsIDg1LCA1MSwgNDksIDU2LCAxMjgsIDc1LCAKKyAgICA4NywgNzksIDc5LCAxMjgsIDc1LCA4NywgNzksIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgMTI4LCAKKyAgICA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjUsIDg5LCAxMjgsIDc1LCA4NywgNjUsIAorICAgIDY5LCA4NCwgMTI4LCA3NSwgODcsIDY1LCA2NSwgMTI4LCA3NSwgODYsIDY1LCAxMjgsIDc1LCA4NiwgMTI4LCA3NSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA4NSwgODUsIDcyLCAxMjgsIDc1LCA4NSwgODQsIDEyOCwgNzUsIDg1LCA4MywgNzcsIDY1LCAxMjgsIAorICAgIDc1LCA4NSwgODMsIDcyLCA4NSwgNTAsIDEyOCwgNzUsIDg1LCA4MiwgODgsIDEyOCwgNzUsIDg1LCA4MiwgODUsIDkwLCA2OSwgCisgICAgNzMsIDgyLCA3OSwgMTI4LCA3NSwgODUsIDgyLCA4NCwgMTI4LCA3NSwgODUsIDgyLCA3OSwgNzksIDc4LCA2OSwgMTI4LCAKKyAgICA3NSwgODUsIDgyLCAxMjgsIDc1LCA4NSwgMjEwLCA3NSwgODUsIDgxLCAxMjgsIDc1LCA4NSwgNzksIDg4LCAxMjgsIDc1LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDc1LCA4NSwgNzksIDIwOCwgNzUsIDg1LCA3OSwgNzcsIDEyOCwgNzUsIDg1LCA3OSwgMTI4LCAKKyAgICA3NSwgODUsIDc4LCA3MSwgMTI4LCA3NSwgODUsIDc4LCA2OCwgNjgsIDY1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NSwgODUsIAorICAgIDc2LCAxMjgsIDc1LCA4NSwgMjA0LCA3NSwgODUsIDY5LCA4NCwgMTI4LCA3NSwgODUsIDU1LCAxMjgsIDc1LCA4NSwgNTIsIAorICAgIDEyOCwgNzUsIDg1LCAxODAsIDc1LCA4NSwgNTEsIDEyOCwgNzUsIDg1LCAxNzksIDc1LCA4NCwgMTI4LCA3NSwgODMsIDgzLCAKKyAgICA4NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgODUsIDEyOCwgNzUsIDgzLCA4MywgNzksIDc5LCAxMjgsIDc1LCA4MywgODMsIAorICAgIDc5LCAxMjgsIDc1LCA4MywgODMsIDczLCA3MywgMTI4LCA3NSwgODMsIDgzLCA3MywgMTI4LCA3NSwgODMsIDgzLCA2OSwgCisgICAgNjksIDEyOCwgNzUsIDgzLCA4MywgNjksIDEyOCwgNzUsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDc1LCA4MywgODMsIDY1LCAKKyAgICA3MywgMTI4LCA3NSwgODMsIDgzLCA2NSwgNjUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDEyOCwgNzUsIDgzLCA4MywgMTI4LCAKKyAgICA3NSwgODMsIDczLCAxMjgsIDc1LCA4MiwgNjksIDc3LCA2NSwgODMsIDg0LCA3MywgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIAorICAgIDc3LCA3OSwgODksIDgwLCA3OSwgODIsIDgyLCA3OSwgNzksIDc4LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCAKKyAgICA3NSwgNzksIDg1LCA3MCwgNzMsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNjUsIDg0LCA2NSwgCisgICAgMTI4LCA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA4MCwgODUsIDEyOCwgNzUsIDgwLCA3OSwgODEsIDEyOCwgCisgICAgNzUsIDgwLCA3OSwgNzksIDEyOCwgNzUsIDgwLCA3OSwgMTI4LCA3NSwgODAsIDczLCAxMjgsIDc1LCA4MCwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3NSwgODAsIDY5LCA2OSwgMTI4LCA3NSwgODAsIDY5LCAxMjgsIDc1LCA4MCwgNjUsIDgyLCA2NSwgODEsIAorICAgIDEyOCwgNzUsIDgwLCA2NSwgNzgsIDEyOCwgNzUsIDgwLCA2NSwgMTI4LCA3NSwgNzksIDg4LCAxMjgsIDc1LCA3OSwgODYsIAorICAgIDg1LCA4NSwgMTI4LCA3NSwgNzksIDg0LCA3OSwgMTI4LCA3NSwgNzksIDgyLCA4NSwgNzgsIDY1LCAxMjgsIDc1LCA3OSwgCisgICAgODIsIDc5LCA3OCwgNzMsIDgzLCAxMjgsIDc1LCA3OSwgODIsIDY5LCA2NSwgMjA2LCA3NSwgNzksIDgyLCA2NSwgNzgsIDczLCAKKyAgICAxOTUsIDc1LCA3OSwgODEsIDc4LCA2OCwgNzksIDc4LCAxMjgsIDc1LCA3OSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgwLCAxMjgsIDc1LCA3OSwgNzksIDgwLCA3OSwgMTI4LCA3NSwgNzksIDc5LCA3NywgODUsIDg1LCA4NCwgMTI4LCA3NSwgCisgICAgNzksIDc5LCAxMjgsIDc1LCA3OSwgNzgsIDg0LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCAKKyAgICA3NywgMTkzLCA3NSwgNzksIDc3LCAyMDEsIDc1LCA3OSwgNzcsIDY2LCA4NSwgODYsIDY1LCAxMjgsIDc1LCA3OSwgNzcsIAorICAgIDY2LCA4NSwgODYsIDE5MywgNzUsIDc5LCA3NywgNjYsIDIxMywgNzUsIDc5LCA3NSwgNzksIDEyOCwgNzUsIDc5LCA3NSwgCisgICAgMTI4LCA3NSwgNzksIDIwMywgNzUsIDc5LCA3MywgMTI4LCA3NSwgNzksIDIwMSwgNzUsIDc5LCA3MiwgMTI4LCA3NSwgNzksIAorICAgIDcxLCA3MiwgNzksIDc3LCAxMjgsIDc1LCA3OSwgNjksIDg0LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgCisgICAgNzksIDY1LCAxMjgsIDc1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCAyMTIsIDc1LCAKKyAgICA3OCwgNzMsIDcwLCA2OSwgMTI4LCA3NSwgNzgsIDczLCA3MCwgMTk3LCA3NSwgNzcsIDEyOCwgNzUsIDIwNSwgNzUsIDc2LCAKKyAgICA3MywgODQsIDc5LCA3OCwgMTI4LCA3NSwgNzYsIDY1LCA4MywgNzcsIDY1LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgCisgICAgMTkzLCA3NSwgNzYsIDY1LCAxMjgsIDc1LCA3NiwgMTI4LCA3NSwgNzUsIDg1LCAxMjgsIDc1LCA3NSwgNzksIDEyOCwgNzUsIAorICAgIDc1LCA3MywgMTI4LCA3NSwgNzUsIDY5LCA2OSwgMTI4LCA3NSwgNzUsIDY5LCAxMjgsIDc1LCA3NSwgNjUsIDEyOCwgNzUsIAorICAgIDc1LCAxMjgsIDc1LCA3NCwgNjksIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDczLCA4OSwgNjksIAorICAgIDc5LCA3NSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc1LCA3MywgCisgICAgODksIDY5LCA3OSwgNzUsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIAorICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzUsIDcyLCA3MywgNjksIDg1LCAKKyAgICA3NSwgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIAorICAgIDc1LCA3MywgODksIDY5LCA3OSwgMjAzLCA3NSwgNzMsIDg4LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgCisgICAgODMsIDczLCA3OCwgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCAKKyAgICA3NywgNTMsIDEyOCwgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIAorICAgIDY1LCA3NiwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgCisgICAgNjksIDY5LCA4NCwgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCAKKyAgICA3NSwgNzMsIDgyLCA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIAorICAgIDczLCA4MCwgMTI4LCA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgCisgICAgNjgsIDY5LCA4MiwgNzEsIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCAKKyAgICA3MywgNzMsIDEyOCwgNzUsIDczLCA3MiwgMTI4LCA3NSwgNzMsIDY5LCA4OCwgMTI4LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCAKKyAgICA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCAKKyAgICA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzIsIDkwLCAxMjgsIDc1LCA3MiwgODcsIDY1LCA3MywgMTI4LCA3NSwgNzIsIAorICAgIDg1LCA2OSwgNzgsIDQ1LCA3NiwgODUsIDE5NywgNzUsIDcyLCA4NSwgNjksIDIwNiwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgCisgICAgMTI4LCA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgCisgICAgNzIsIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKKyAgICAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCA3MiwgNzksIDEyOCwgNzUsIAorICAgIDcyLCA3MiwgNjUsIDEyOCwgNzUsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDc1LCA3MiwgNjksIDczLCAxMjgsIDc1LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDc1LCA3MiwgNjksIDEyOCwgNzUsIDcyLCA2NSwgODIsIDc5LCA4MywgNzIsIDg0LCA3MiwgMjAxLCAKKyAgICA3NSwgNzIsIDY1LCA4MiwgMTI4LCA3NSwgNzIsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDcyLCA2NSwgNzgsIDE5OSwgNzUsIAorICAgIDcyLCA2NSwgNzgsIDY4LCAxOTMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDc1LCA3MiwgNjUsIDc3LCA4NCwgMjAxLCA3NSwgCisgICAgNzIsIDY1LCA3NSwgNjUsIDgzLCA4MywgNzMsIDY1LCAyMDYsIDc1LCA3MiwgNjUsIDczLCAxMjgsIDc1LCA3MiwgNjUsIDcyLCAKICAgICAxMjgsIDc1LCA3MiwgNjUsIDIwMCwgNzUsIDcyLCA2NSwgNjUsIDEyOCwgNzUsIDcxLCAxMjgsIDc1LCA2OSwgODksIDY3LCAKICAgICA2NSwgODAsIDEyOCwgNzUsIDY5LCA4OSwgNjcsIDY1LCAyMDgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCA2OCwgCiAgICAgMTI4LCA3NSwgNjksIDg4LCAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCAKQEAgLTIxNDEsNzEgKzIyODcsNzQgQEAKICAgICA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIAogICAgIDc1LCA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCiAgICAgNzUsIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg2LCAKLSAgICA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODQsIAotICAgIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAKLSAgICAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIDY1LCA4NCwgNjUsIDg2LCAxOTMsIAotICAgIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCA3MSwgNjUsIDc4LCAxOTMsIDc1LCAKLSAgICA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDg0LCA2NSwgMjA2LCA3NSwgNjUsIAotICAgIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgNzUsIDY1LCA3NiwgMTI4LCA3NSwgCi0gICAgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCAKLSAgICA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIAotICAgIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAKLSAgICAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCi0gICAgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAKLSAgICA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIAotICAgIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCA3OCwgCi0gICAgNzEsIDEyOCwgNzUsIDY1LCA3OCwgMTk5LCA3NSwgNjUsIDc4LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzcsIDUyLCAKLSAgICAxMjgsIDc1LCA2NSwgNzcsIDUwLCAxMjgsIDc1LCA2NSwgNzcsIDEyOCwgNzUsIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCAKLSAgICA3NSwgNjUsIDY2LCA2NSwgODQsIDEyOCwgNzUsIDY1LCA3NSwgMTI4LCA3NSwgNjUsIDIwMywgNzUsIDY1LCA3MywgODIsIAotICAgIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIAotICAgIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIAotICAgIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIAotICAgIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIAotICAgIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgCi0gICAgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIDg1LCA3OSwgODAsIAotICAgIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgODksIDEyOCwgNzQsIAotICAgIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIDg5LCA3OSwgODUsIAotICAgIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCA3OCwgNzEsIAotICAgIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCA2OCwgCi0gICAgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIDc0LCAKLSAgICA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIAotICAgIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCA4NCwgCi0gICAgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIDczLCAKLSAgICA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgNzMsIAotICAgIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgNzYsIAotICAgIDEyOCwgNzQsIDczLCA3MiwgODYsIDY1LCA3NywgODUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc0LCA3MywgNjUsIDEyOCwgCi0gICAgNzQsIDcyLCA3OSwgMTI4LCA3NCwgNzIsIDY5LCA3MiwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCAKLSAgICA3NywgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgNzYsIAotICAgIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAxMjgsIAotICAgIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCA2OSwgCi0gICAgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCAKLSAgICA3NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIAotICAgIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgCi0gICAgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIAotICAgIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgCi0gICAgNzQsIDY1LCA2NywgMjAzLCA3NCwgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgMjAyLCAKLSAgICA3MywgOTAsIDcyLCA3MywgODQsIDgzLCA2NSwgMTI4LCA3MywgOTAsIDcyLCA3MywgODQsIDgzLCAxOTMsIDczLCA5MCwgNzIsIAotICAgIDY5LCAxMjgsIDczLCA5MCwgNjUsIDc1LCA2NSwgODksIDE5MywgNzMsIDg5LCA2OSwgNzUsIDEyOCwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA2NSwgMTI4LCA3MywgODUsIDc0LCA2NSwgMTI4LCA3MywgODUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgCi0gICAgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAKLSAgICAxMjgsIDczLCA4MywgNzksIDc4LCAxMjgsIDczLCA4MywgNzksIDIwNiwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIAotICAgIDY5LCA3OCwgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDczLCA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIAotICAgIDY1LCAxMjgsIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3OSwgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIAotICAgIDc5LCA4NCwgNjUsIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgCi0gICAgNjgsIDcyLCAxMjgsIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgCi0gICAgMTk3LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAKKyAgICA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgODUsIAorICAgIDEyOCwgNzUsIDY1LCA4NCwgNzksIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgCisgICAgODQsIDcyLCA2NSwgNzUsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCAKKyAgICA2NSwgODYsIDE5MywgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgCisgICAgNzgsIDE5MywgNzUsIDY1LCA4MywgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAKKyAgICAyMDYsIDc1LCA2NSwgODMsIDgyLCA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIAorICAgIDc2LCAxMjgsIDc1LCA2NSwgODMsIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgCisgICAgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICA4MiwgMjA3LCA3NSwgNjUsIDgyLCA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIAorICAgIDgyLCA2NSwgNzgsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCAKKyAgICA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCAKKyAgICA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgCisgICAgMTI4LCA3NSwgNjUsIDgwLCA4MCwgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgCisgICAgNjUsIDgwLCA2NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCAKKyAgICA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIDY1LCA3NSwgNzksIDEyOCwgNzUsIAorICAgIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgMTI4LCA3NSwgNjUsIDc1LCA3OSwgCisgICAgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgCisgICAgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIDY1LCA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAKKyAgICAyMDEsIDc1LCA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAKKyAgICAxMjgsIDc1LCA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCAKKyAgICA2OCwgMTc5LCA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCAKKyAgICA2NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIDY1LCA2NSwgNzAsIAorICAgIDEyOCwgNzUsIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIAorICAgIDEyOCwgNzUsIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgCisgICAgMTI4LCA3NCwgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCAKKyAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIAorICAgIDEyOCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIAorICAgIDg1LCA3NiwgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgCisgICAgODUsIDY4LCA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCAKKyAgICA3NCwgNzksIDg5LCA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIAorICAgIDIxMiwgNzQsIDc5LCA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIAorICAgIDc5LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgCisgICAgODksIDg4LCAxMjgsIDc0LCA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgCisgICAgNzQsIDc0LCA4NSwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCAKKyAgICA3NCwgODUsIDgyLCAxMjgsIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIAorICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgCisgICAgMTI4LCA3NCwgNzQsIDc5LCA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgCisgICAgNzMsIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY1LCAxMjgsIDc0LCA3MywgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgCisgICAgNzYsIDczLCA4OSwgNjUsIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIDcyLCAKKyAgICAxMjgsIDc0LCA3MiwgNjUsIDc4LCAxMjgsIDc0LCA3MiwgNjUsIDc3LCAxMjgsIDc0LCA3MiwgNjUsIDY1LCAxMjgsIDc0LCAKKyAgICA3MiwgNjUsIDEyOCwgNzQsIDY5LCA4NSwgMTI4LCA3NCwgNjksIDgyLCA4NSwgODMsIDY1LCA3NiwgNjksIDc3LCAxMjgsIAorICAgIDc0LCA2OSwgODIsIDY1LCAyMDYsIDc0LCA2OSwgODIsIDY1LCAxMjgsIDc0LCA2OSwgODIsIDEyOCwgNzQsIDY5LCA3MiwgCisgICAgMTI4LCA3NCwgNjksIDIwMCwgNzQsIDY5LCA3MSwgNzksIDcxLCA2NSwgNzgsIDEyOCwgNzQsIDY5LCA2OSwgNzcsIDEyOCwgCisgICAgNzQsIDY5LCA2NSwgNzgsIDgzLCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCA2NSwgODYsIDczLCAKKyAgICA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NCwgNjUsIDg1LCAxMjgsIDc0LCA2NSwgODIsIDEyOCwgNzQsIDY1LCA4MCwgNjUsIAorICAgIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCA4MCwgNjUsIDc4LCAxMjgsIDc0LCA2NSwgNzgsIDg1LCA2NSwgODIsIDg5LCAKKyAgICAxMjgsIDc0LCA2NSwgNzYsIDc2LCA2NSwgNzQsIDY1LCA3NiwgNjUsIDc2LCA3OSwgODUsIDcyLCA3OSwgODUsIDEyOCwgNzQsIAorICAgIDY1LCA3MywgMTI4LCA3NCwgNjUsIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA0NSwgCisgICAgNzksIDQ1LCA3NiwgNjUsIDc4LCA4NCwgNjksIDgyLCA3OCwgMTI4LCA3NCwgNjUsIDY3LCAyMDMsIDc0LCA0NSwgODMsIDczLCAKKyAgICA3NywgODAsIDc2LCA3MywgNzAsIDczLCA2OSwgMTk2LCAyMDIsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIAorICAgIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgCisgICAgMTkzLCA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAKKyAgICAxMjgsIDczLCA4NSwgMTI4LCA3MywgODQsIDIxMSwgNzMsIDg0LCA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCAKKyAgICA4NCwgNjksIDc3LCAxMjgsIDczLCA4MywgODMsIDcyLCA2NSwgODIsIDEyOCwgNzMsIDgzLCA3OSwgNzgsIDEyOCwgNzMsIAorICAgIDgzLCA3OSwgMjA2LCA3MywgODMsIDY5LCA3OCwgNDUsIDczLCA4MywgNjksIDc4LCAxMjgsIDczLCA4MywgNjUsIDc1LCA3MywgCisgICAgMTkzLCA3MywgODMsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDczLCA4MiwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDgyLCA3OSwgNzgsIDQ1LCA2NywgNzksIAorICAgIDgwLCA4MCwgNjksIDIxMCwgNzMsIDgyLCA3OSwgNzgsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgCisgICAgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCAKKyAgICA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIAorICAgIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgCisgICAgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAKKyAgICAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIAogICAgIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCiAgICAgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIAogICAgIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCkBAIC0yMjM0LDEyMjYgKzIzODMsMTIzMyBAQAogICAgIDc4LCA2NywgNzIsIDEyOCwgNzMsIDc4LCA2NiwgNzksIDIxNiwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNzMsIDc4LCA0NSwgCiAgICAgNjUsIDc2LCA2NSwgNzAsIDEyOCwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MywgNjUsIDIwNCwgNzMsIDc3LCA4MCwgNjksIDgyLCAKICAgICA3MCwgNjksIDY3LCA4NCwgODUsIDIwNSwgNzMsIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgNjUsIDEyOCwgNzMsIAotICAgIDc3LCA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA3MywgNzcsIDczLCA4MywgNjksIDc5LCAyMTEsIDczLCA3NywgCi0gICAgNzMsIDc4LCA1MSwgMTI4LCA3MywgNzcsIDczLCA3OCwgMTI4LCA3MywgNzcsIDczLCAyMDYsIDczLCA3NywgNzMsIDcwLCAKLSAgICA4NCwgNzIsIDc5LCA4MiwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDcwLCA4NCwgNzIsIDc5LCA4MiwgNjUsIDEyOCwgNzMsIAotICAgIDc3LCA3MywgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDczLCA3NywgNzMsIDY4LCA3MywgNjUsIDgyLCA3MSwgNzksIDc4LCAKLSAgICAxMjgsIDczLCA3NywgNjUsIDcxLCAxOTcsIDczLCA3NiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIAotICAgIDg1LCA4OSwgMTI4LCA3MywgNzYsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA3NiwgODUsIDg0LCAKLSAgICAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDUxLCAxMjgsIAotICAgIDczLCA3NiwgNzMsIDc3LCA3NywgODUsIDEyOCwgNzMsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDczLCA3NiwgNTAsIDEyOCwgCi0gICAgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDczLCA3NSwgNjUsIDgyLCAxOTMsIDczLCA3NCwgMTI4LCA3MywgNzMsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzEsIDczLCAxMjgsIDczLCA3MSwgMjAxLCA3MywgNzEsIDcxLCA4NywgODMsIAotICAgIDEyOCwgNzMsIDcwLCA3MywgNzgsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCi0gICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA3MywgNjksIDg1LCAKLSAgICA3OCwgNzEsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgNzMsIDY5LCA4NSwgCi0gICAgNzgsIDcxLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgwLCA3MywgNjksIAotICAgIDg1LCA4MCwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCA3MiwgMTI4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIAotICAgIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDY3LCA3MywgNjksIDg1LCAKLSAgICA2NywgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3MywgNjksIAotICAgIDg1LCA3OCwgMTk5LCA3MywgNjgsIDc2LCA2OSwgMTI4LCA3MywgNjgsIDczLCA3NywgMTI4LCA3MywgNjgsIDczLCAyMDUsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU0LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUyLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUxLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCAKLSAgICA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCAKLSAgICA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCAKLSAgICA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCAKLSAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCAKLSAgICA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCAKLSAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCAKLSAgICA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCAKLSAgICA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCAKLSAgICA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIAotICAgIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCAKLSAgICA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIAotICAgIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAotICAgIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIAotICAgIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAotICAgIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIAotICAgIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAotICAgIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIAotICAgIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIAotICAgIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAotICAgIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIAotICAgIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAotICAgIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIAotICAgIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAotICAgIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIAotICAgIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIAotICAgIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAotICAgIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCAKLSAgICA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgCi0gICAgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIAotICAgIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgCi0gICAgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgCi0gICAgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIAotICAgIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCAKLSAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIAotICAgIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAKLSAgICAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIAotICAgIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAKLSAgICAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIAotICAgIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAKLSAgICAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCAKLSAgICA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIAotICAgIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgCi0gICAgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCAKLSAgICA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIAotICAgIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgCi0gICAgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCAKLSAgICA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCAKLSAgICA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIAotICAgIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIAotICAgIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAKLSAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIAotICAgIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgCi0gICAgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCAKLSAgICA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIAotICAgIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIAotICAgIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODIsIDY1LCA3OCwgCisgICAgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCAKKyAgICA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCAKKyAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCAKKyAgICA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgCisgICAgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAKKyAgICA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIAorICAgIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIAorICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgCisgICAgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAorICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCAKKyAgICA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCAKKyAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCAKKyAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCisgICAgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgCisgICAgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCisgICAgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgCisgICAgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCisgICAgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgCisgICAgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCisgICAgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgCisgICAgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgCisgICAgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCisgICAgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgCisgICAgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCisgICAgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgCisgICAgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCisgICAgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgCisgICAgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgCisgICAgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCAKKyAgICA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgCisgICAgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIAorICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCAKKyAgICA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgCisgICAgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCAKKyAgICA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCAKKyAgICA2NywgNzIsIDc5LCA4MywgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIAorICAgIDY1LCA2OCwgNzMsIDc4LCAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgCisgICAgNzMsIDY2LCA3MywgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAKKyAgICAxMjgsIDczLCA0OCwgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCAKKyAgICA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIAorICAgIDQ4LCA0OSwgNDgsIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgCisgICAgNDgsIDU2LCAxMjgsIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCAKKyAgICA3MywgNDgsIDQ4LCA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIAorICAgIDg5LCA3OSwgMTI4LCA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgNjUsIDY5LCAxMjgsIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCAKKyAgICA3OSwgNDUsIDczLCAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIAorICAgIDY1LCA3NywgMTI4LCA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgCisgICAgOTAsIDkwLCA3MSwgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAKKyAgICAxMjgsIDcyLCA5MCwgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAKKyAgICAxMjgsIDcyLCA4OSwgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIAorICAgIDgzLCA4NCwgNzksIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgCisgICAgODksIDgwLCA3MiwgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIAorICAgIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OCwgODcsIDcxLCAxMjgsIDcyLCA4OCwgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA4OCwgODUsIDc5LCAKKyAgICAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCA4OCwgNzksIDgwLCAxMjgsIDcyLCAKKyAgICA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIDEyOCwgNzIsIDg4LCA3MywgODAsIAorICAgIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgODgsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgODgsIDY5LCA4OCwgMTI4LCA3MiwgCisgICAgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAxMjgsIDcyLCA4OCwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCA4NSwgMTI4LCA3MiwgODcsIDY1LCAKKyAgICA3MywgODIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgyLCA2NSwgNzgsIAogICAgIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDEyOCwgNzIsIDg1LCA3OCwgCiAgICAgNjgsIDgyLCA2OSwgMTk2LCA3MiwgODUsIDc4LCAxMjgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAKICAgICA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNjYsIAogICAgIDUwLCAxMjgsIDcyLCA4NSwgNjYsIDE3OCwgNzIsIDg1LCA2NiwgMTI4LCA3MiwgODUsIDY1LCA4MiwgNjUsIDY4LCA2OCwgCi0gICAgNzksIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAKLSAgICAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIAotICAgIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgCi0gICAgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCAKLSAgICA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIAotICAgIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIAotICAgIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OCwgNjksIDg5LCA2NiwgNjksIDY5LCAxMjgsIDcyLCA3OSwgCi0gICAgNzgsIDY5LCAyMTcsIDcyLCA3OSwgNzcsIDc5LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDY3LCAxMjgsIDcyLCA3OSwgNzcsIDc5LCAKLSAgICA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgCi0gICAgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgCi0gICAgNzIsIDc5LCA3MywgMTI4LCA3MiwgNzksIDY3LCA3MiwgNzksIDEyOCwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNzIsIDc4LCAKLSAgICA4NSwgNzksIDg4LCAxMjgsIDcyLCA3OCwgODUsIDc5LCAxMjgsIDcyLCA3OCwgNzksIDg4LCAxMjgsIDcyLCA3OCwgNzksIAotICAgIDg0LCAxMjgsIDcyLCA3OCwgNzksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDg0LCAxMjgsIAotICAgIDcyLCA3OCwgNzMsIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAxMjgsIDcyLCA3OCwgNzMsIDEyOCwgNzIsIDc4LCAKLSAgICA2OSwgODgsIDEyOCwgNzIsIDc4LCA2OSwgODAsIDEyOCwgNzIsIDc4LCA2OSwgMTI4LCA3MiwgNzgsIDY1LCA4OCwgMTI4LCAKLSAgICA3MiwgNzgsIDY1LCA4NCwgMTI4LCA3MiwgNzgsIDY1LCA4MCwgMTI4LCA3MiwgNzgsIDY1LCAxMjgsIDcyLCA3NywgODksIAotICAgIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg5LCA4MiwgMTI4LCA3MiwgNzcsIDg5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDg5LCAxMjgsIDcyLCA3NywgODUsIDg4LCAxMjgsIDcyLCA3NywgODUsIDg0LCAxMjgsIDcyLCA3NywgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgMTI4LCA3MiwgNzcsIDg1LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCAKLSAgICA3OSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCAxMjgsIDcyLCA3NywgODUsIAotICAgIDEyOCwgNzIsIDc3LCA3OSwgODgsIDEyOCwgNzIsIDc3LCA3OSwgODQsIDEyOCwgNzIsIDc3LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDc3LCA3OSwgMTI4LCA3MiwgNzcsIDczLCA4OCwgMTI4LCA3MiwgNzcsIDczLCA4NCwgMTI4LCA3MiwgNzcsIDczLCA4MCwgCi0gICAgMTI4LCA3MiwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc3LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDEyOCwgNzIsIDc3LCA2OSwgMTI4LCA3MiwgNzcsIDY1LCA4OCwgMTI4LCA3MiwgNzcsIDY1LCAKLSAgICA4NCwgMTI4LCA3MiwgNzcsIDY1LCA4MCwgMTI4LCA3MiwgNzcsIDY1LCAxMjgsIDcyLCA3NiwgODksIDg4LCAxMjgsIDcyLCAKLSAgICA3NiwgODksIDg0LCAxMjgsIDcyLCA3NiwgODksIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4MiwgMTI4LCA3MiwgNzYsIAotICAgIDg5LCA4MCwgMTI4LCA3MiwgNzYsIDg5LCAxMjgsIDcyLCA3NiwgODUsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDg0LCAxMjgsIAotICAgIDcyLCA3NiwgODUsIDgyLCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgMTI4LCA3MiwgNzYsIDg1LCA4MCwgMTI4LCA3MiwgCi0gICAgNzYsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDEyOCwgNzIsIDc2LCA3OSwgODgsIDEyOCwgNzIsIDc2LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA3OSwgMTI4LCAKLSAgICA3MiwgNzYsIDczLCA4OCwgMTI4LCA3MiwgNzYsIDczLCA4NCwgMTI4LCA3MiwgNzYsIDczLCA4MCwgMTI4LCA3MiwgNzYsIAotICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDc2LCA3MywgNjksIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDEyOCwgNzIsIDc2LCA2OSwgODgsIDEyOCwgNzIsIDc2LCA2OSwgODAsIDEyOCwgNzIsIDc2LCA2OSwgMTI4LCA3MiwgCi0gICAgNzYsIDY1LCA4OCwgMTI4LCA3MiwgNzYsIDY1LCA4NCwgMTI4LCA3MiwgNzYsIDY1LCA4MCwgMTI4LCA3MiwgNzYsIDY1LCAKLSAgICAxMjgsIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDgzLCA4NCwgNzksIDgyLCA3MywgMTk1LCAKLSAgICA3MiwgNzMsIDgyLCA3MywgODEsIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIAotICAgIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCAKLSAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDEyOCwgNzIsIDczLCA2OCwgNzMsIDc4LCAxOTksIDcyLCA3MywgNjgsIDY5LCAKLSAgICA4NCwgMTI4LCA3MiwgNzMsIDY4LCA2OSwgMTI4LCA3MiwgNzMsIDY2LCA3MywgODMsIDY3LCA4NSwgODMsIDEyOCwgNzIsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgNzIsIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDcyLCA3MiwgNjksIDEyOCwgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgCi0gICAgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKLSAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAotICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCi0gICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCA2NSwgNjksIDg1LCAyMDUsIDcyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNzgsIDE5OSwgNzIsIDY5LCA3NywgODAsIDEyOCwgNzIsIDY5LCA3NiwgNzcsIAotICAgIDY5LCA4NCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDIxMiwgNzIsIDY5LCA3NiwgMjA1LCA3MiwgNjksIDc2LCA3MywgCi0gICAgNjcsIDc5LCA4MCwgODQsIDY5LCA4MiwgMTI4LCA3MiwgNjksIDc1LCA4NSwgODQsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCAKLSAgICA2OSwgNzMsIDgzLCA2OSwgNzMsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDg5LCAxMjgsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIAotICAgIDc2LCAyMTcsIDcyLCA2OSwgNjUsIDg2LCA2OSwgNzgsIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCAyMDYsIDcyLCA2OSwgCi0gICAgNjUsIDgyLCA4NCwgODMsIDEyOCwgNzIsIDY5LCA2NSwgODIsIDg0LCA0NSwgODMsIDcyLCA2NSwgODAsIDY5LCAxOTYsIDcyLCAKLSAgICA2OSwgNjUsIDgyLCA4NCwgMTI4LCA3MiwgNjksIDY1LCA4MiwgMjEyLCA3MiwgNjksIDY1LCA4MiwgNDUsIDc4LCA3OSwgNDUsIAotICAgIDY5LCA4NiwgNzMsIDIwNCwgNzIsIDY5LCA2NSwgNjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzIsIDY5LCA2NSwgCi0gICAgNjgsIDgzLCA4NCwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjUsIDY4LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgNzIsIDY5LCAKLSAgICA2NSwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIAotICAgIDY2LCA2NSwgODMsIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NiwgNjksIDEyOCwgCi0gICAgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgODQsIDcyLCA3MywgMTI4LCAKLSAgICA3MiwgNjUsIDg0LCA2OSwgMTI4LCA3MiwgNjUsIDg0LCA2NywgNzIsIDczLCA3OCwgMTk5LCA3MiwgNjUsIDg0LCA2NSwgCi0gICAgMTk4LCA3MiwgNjUsIDgzLCA2OSwgMjEwLCA3MiwgNjUsIDgzLCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDgyLCAKLSAgICA4MCwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNjUsIDgyLCA4MCwgNzksIDc5LCAyMDYsIDcyLCA2NSwgODIsIDc3LCA3OSwgNzgsIAotICAgIDczLCA2NywgMTI4LCA3MiwgNjUsIDgyLCA3NSwgNzYsIDY5LCA2NSwgMjA2LCA3MiwgNjUsIDgyLCA2OCwgNzgsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgNzIsIDY1LCA4MiwgMTk2LCA3MiwgNjUsIDgwLCA4MCwgMjE3LCA3MiwgNjUsIDc4LCA4NSwgNzgsIDc5LCAKLSAgICAyMDcsIDcyLCA2NSwgNzgsIDcxLCA5MCwgNzIsIDc5LCAyMTMsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIAotICAgIDc4LCA2OCwgMjExLCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDcxLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIAotICAgIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgNjUsIDEyOCwgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgCi0gICAgMjEwLCA3MiwgNjUsIDc3LCA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKLSAgICA2NiwgODUsIDgyLCA3MSwgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgCi0gICAgMTI4LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCA2OCwgMTI4LCA3MiwgNjUsIDc2LCAKLSAgICA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIDY1LCA3MywgODIsIDY3LCA4NSwgODQsIAotICAgIDEyOCwgNzIsIDY1LCA3MywgODIsIDEyOCwgNzIsIDY1LCA3MSwgNzYsIDY1LCAyMTgsIDcyLCA2NSwgNzEsIDc2LCAxMjgsIAotICAgIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDcyLCA2NSwgNzAsIDg1LCA3NSwgNzIsIDEyOCwgNzIsIDY1LCA2OSwgCi0gICAgNzEsIDIwNCwgNzIsIDY1LCA2NSwgODIsIDg1LCAxMjgsIDcyLCA2NSwgNjUsIDc3LCAxMjgsIDcyLCA2NSwgMTkzLCA3MiwgCi0gICAgNjUsIDQ1LCA3MiwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTYsIDEyOCwgNzIsIDQ4LCA0OCwgNTUsIDEyOCwgNzIsIDQ4LCAKLSAgICA0OCwgNTQsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU0LCAxMjgsIDcyLCA0OCwgNDgsIDUzLCAxMjgsIDcyLCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDcyLCA0OCwgNDgsIDUxLCAxMjgsIDcyLCA0OCwgNDgsIDUwLCAxMjgsIDcyLCA0OCwgNDgsIDQ5LCAxMjgsIAotICAgIDcyLCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3MSwgODksIDg1LCAxMjgsIDcxLCA4OSwgNzksIDc4LCAxMjgsIDcxLCA4OSwgCi0gICAgNzksIDEyOCwgNzEsIDg5LCA3MywgMTI4LCA3MSwgODksIDcwLCAyMTMsIDcxLCA4OSwgNjksIDY5LCAxMjgsIDcxLCA4OSwgCi0gICAgNjUsIDgzLCAxMjgsIDcxLCA4OSwgNjUsIDY1LCAxMjgsIDcxLCA4OSwgNjUsIDEyOCwgNzEsIDg5LCAxMjgsIDcxLCA4NywgCi0gICAgODUsIDEyOCwgNzEsIDg3LCA3MywgMTI4LCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgODcsIDY5LCAxMjgsIDcxLCA4NywgCi0gICAgNjUsIDY1LCAxMjgsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDY1LCA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCAKLSAgICA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCAKLSAgICA3NiwgMTI4LCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MiwgMTI4LCAKLSAgICA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgNjUsIDgyLCA2OCwgODMsIAotICAgIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCi0gICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAotICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgCi0gICAgMjA2LCA3MSwgODIsIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCAKLSAgICA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgCi0gICAgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIAotICAgIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgCi0gICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIAotICAgIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAKLSAgICAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgCi0gICAgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCAKLSAgICA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgCi0gICAgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCAKLSAgICA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIAotICAgIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIAotICAgIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgCi0gICAgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIAotICAgIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgCi0gICAgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCAKLSAgICA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCAKLSAgICA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgCi0gICAgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgCi0gICAgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgCi0gICAgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCAKLSAgICA3MSwgNjUsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIAotICAgIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIAotICAgIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCAKLSAgICA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIAotICAgIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgCi0gICAgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCAKLSAgICA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCAKLSAgICA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgCi0gICAgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAKLSAgICA3OCwgODUsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIAotICAgIDY4LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MiwgCi0gICAgNjUsIDEyOCwgNzEsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA3MSwgODcsIDY5LCAKLSAgICAxMjgsIDcxLCA3MSwgODcsIDY1LCA2NSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgNzEsIDg1LCA4OCwgMTI4LCAKLSAgICA3MSwgNzEsIDg1LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA4MiwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDEyOCwgNzEsIAotICAgIDcxLCA4NSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4NCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzEsIDcxLCA4NSwgNzksIDEyOCwgNzEsIDcxLCA3OSwgODgsIDEyOCwgNzEsIDcxLCA3OSwgODQsIDEyOCwgNzEsIDcxLCAKLSAgICA3OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgODgsIDEyOCwgNzEsIDcxLCA3MywgODQsIDEyOCwgNzEsIDcxLCA3MywgNjksIAotICAgIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgMTI4LCA3MSwgNzEsIDY5LCA4OCwgCi0gICAgMTI4LCA3MSwgNzEsIDY5LCA4NCwgMTI4LCA3MSwgNzEsIDY5LCA4MCwgMTI4LCA3MSwgNzEsIDY1LCA4OCwgMTI4LCA3MSwgCi0gICAgNzEsIDY1LCA4NCwgMTI4LCA3MSwgNzEsIDY1LCA2NSwgMTI4LCA3MSwgNjksIDg0LCAxOTMsIDcxLCA2OSwgODMsIDg0LCAKLSAgICA4NSwgODIsIDY5LCAxMjgsIDcxLCA2OSwgODMsIDcyLCA4NSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCA3OCwgCi0gICAgMTI4LCA3MSwgNjksIDgzLCA3MiwgODQsIDczLCAyMDYsIDcxLCA2OSwgODMsIDcyLCA1MCwgMTI4LCA3MSwgNjksIDgyLCAKLSAgICA4MywgNzIsIDY1LCA4OSwgNzMsIDc3LCAxMjgsIDcxLCA2OSwgODIsIDc3LCA2NSwgMjA2LCA3MSwgNjksIDgyLCA2OSwgODMsIAotICAgIDcyLCAxMjgsIDcxLCA2OSwgODIsIDY5LCA4MywgMjAwLCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDY3LCA2NSwgCi0gICAgNzYsIDc2LCAyMTcsIDcxLCA2OSwgNzksIDc3LCA2OSwgODQsIDgyLCA3MywgMTk1LCA3MSwgNjksIDc4LCA4NCwgNzYsIAotICAgIDE5NywgNzEsIDY5LCA3OCwgNzMsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcxLCA2OSwgNzgsIDczLCA3NSwgMjAxLCA3MSwgCi0gICAgNjksIDc4LCA2OSwgODIsIDczLCAxOTUsIDcxLCA2OSwgNzcsIDczLCA3OCwgNzMsIDEyOCwgNzEsIDY5LCA3NywgNzMsIDc4LCAKLSAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA3MSwgNjksIDIwNSwgNzEsIDY5LCA2OCwgNzksIDc2LCA2NSwgMTI4LCA3MSwgNjksIAotICAgIDY4LCA2OSwgMTI4LCA3MSwgNjksIDY2LCAyMDcsIDcxLCA2OSwgNjYsIDE5MywgNzEsIDY5LCA2NSwgODIsIDEyOCwgNzEsIAotICAgIDY5LCA2NSwgMjEwLCA3MSwgNjgsIDY1LCA3OCwgMTI4LCA3MSwgNjcsIDczLCA3MSwgMTI4LCA3MSwgNjcsIDY1LCAyMDYsIAotICAgIDcxLCA2NiwgNzksIDc4LCAxMjgsIDcxLCA2NiwgNzMsIDY5LCAxOTcsIDcxLCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgCi0gICAgNjYsIDY5LCA4NCwgMTI4LCA3MSwgNjYsIDY1LCA4OSwgNzMsIDEyOCwgNzEsIDY2LCA2NSwgNzUsIDg1LCA4MiwgODUsIDc4LCAKLSAgICA2OSwgNzgsIDEyOCwgNzEsIDY2LCAxMjgsIDcxLCA2NSwgODksIDY1LCA3OCwgODUsIDc1LCA3MywgODQsIDg0LCA2NSwgCi0gICAgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNjUsIDg5LCAxMjgsIDcxLCA2NSwgODUsIDc4LCAKLSAgICA4NCwgNzYsIDY5LCA4NCwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcxLCA2NSwgODQsIAotICAgIDcyLCA2OSwgODIsIDczLCA3OCwgMTk5LCA3MSwgNjUsIDg0LCA2OSwgMTI4LCA3MSwgNjUsIDgzLCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDcxLCA2NSwgODIsIDgzLCA3MiwgODUsIDc4LCA3MywgMTI4LCA3MSwgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIAotICAgIDY1LCA4MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzEsIDY1LCA4MiwgNjgsIDY5LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA1MSwgCi0gICAgMTI4LCA3MSwgNjUsIDgwLCA4MCwgNjksIDE5NiwgNzEsIDY1LCAyMDgsIDcxLCA2NSwgNzgsIDc3LCA2NSwgMTI4LCA3MSwgCi0gICAgNjUsIDc4LCA3MSwgNzMsIDY1LCAxMjgsIDcxLCA2NSwgNzgsIDY4LCAxOTMsIDcxLCA2NSwgNzgsIDUwLCAxMjgsIDcxLCAKLSAgICA2NSwgNzgsIDE3OCwgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDcxLCA2NSwgNzcsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDc3LCA3NiwgMTI4LCA3MSwgNjUsIDc3LCA2OSwgMTI4LCA3MSwgNjUsIDc3LCAxOTcsIDcxLCA2NSwgNzcsIDY1LCA3OCwgCi0gICAgMTI4LCA3MSwgNjUsIDc3LCA2NSwgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDIwNCwgNzEsIDY1LCA3MSwgMTI4LCA3MSwgCi0gICAgNjUsIDcwLCAxMjgsIDcxLCA2NSwgMTk4LCA3MSwgNjUsIDY5LCA4NCwgODQsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAKLSAgICAxMjgsIDcxLCA2NSwgNjgsIDc5LCA3NiwgMTI4LCA3MSwgNjUsIDY4LCAxMjgsIDcxLCA2NSwgMTk2LCA3MSwgNjUsIDY2LCAKLSAgICA2NSwgMTI4LCA3MSwgNjUsIDY2LCAxOTMsIDcxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MSwgNjUsIDE3OCwgNzEsIDQ4LCAKLSAgICA1MywgNTIsIDEyOCwgNzEsIDQ4LCA1MywgNTEsIDEyOCwgNzEsIDQ4LCA1MywgNTAsIDEyOCwgNzEsIDQ4LCA1MywgNDksIAotICAgIDEyOCwgNzEsIDQ4LCA1MywgNDgsIDEyOCwgNzEsIDQ4LCA1MiwgNTcsIDEyOCwgNzEsIDQ4LCA1MiwgNTYsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNzEsIDQ4LCA1MiwgNTQsIDEyOCwgNzEsIDQ4LCA1MiwgNTMsIDY1LCAxMjgsIDcxLCA0OCwgCi0gICAgNTIsIDUzLCAxMjgsIDcxLCA0OCwgNTIsIDUyLCAxMjgsIDcxLCA0OCwgNTIsIDUxLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCAKLSAgICA1MSwgMTI4LCA3MSwgNDgsIDUyLCA1MCwgMTI4LCA3MSwgNDgsIDUyLCA0OSwgMTI4LCA3MSwgNDgsIDUyLCA0OCwgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1NywgMTI4LCA3MSwgNDgsIDUxLCA1NiwgMTI4LCA3MSwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzEsIAotICAgIDQ4LCA1MSwgNTUsIDEyOCwgNzEsIDQ4LCA1MSwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCAxMjgsIDcxLCA0OCwgCi0gICAgNTEsIDUzLCAxMjgsIDcxLCA0OCwgNTEsIDUyLCAxMjgsIDcxLCA0OCwgNTEsIDUxLCAxMjgsIDcxLCA0OCwgNTEsIDUwLCAKLSAgICAxMjgsIDcxLCA0OCwgNTEsIDQ5LCAxMjgsIDcxLCA0OCwgNTEsIDQ4LCAxMjgsIDcxLCA0OCwgNTAsIDU3LCAxMjgsIDcxLCAKLSAgICA0OCwgNTAsIDU2LCAxMjgsIDcxLCA0OCwgNTAsIDU1LCAxMjgsIDcxLCA0OCwgNTAsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIAotICAgIDUwLCA1NCwgMTI4LCA3MSwgNDgsIDUwLCA1MywgMTI4LCA3MSwgNDgsIDUwLCA1MiwgMTI4LCA3MSwgNDgsIDUwLCA1MSwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1MCwgMTI4LCA3MSwgNDgsIDUwLCA0OSwgMTI4LCA3MSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNDgsIDEyOCwgNzEsIDQ4LCA0OSwgNTcsIDEyOCwgNzEsIDQ4LCA0OSwgNTYsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzEsIDQ4LCA0OSwgNTQsIDEyOCwgNzEsIDQ4LCA0OSwgNTMsIDEyOCwgNzEsIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzEsIDQ4LCA0OSwgNTEsIDEyOCwgNzEsIDQ4LCA0OSwgNTAsIDEyOCwgNzEsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDQ5LCAxMjgsIDcxLCA0OCwgNDksIDQ4LCAxMjgsIDcxLCA0OCwgNDgsIDU3LCAxMjgsIDcxLCA0OCwgCi0gICAgNDgsIDU2LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNzEsIDQ4LCAKLSAgICA0OCwgNTUsIDEyOCwgNzEsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCAxMjgsIDcxLCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDcxLCA0OCwgNDgsIDUyLCAxMjgsIDcxLCA0OCwgNDgsIDUxLCAxMjgsIDcxLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDQ5LCAxMjgsIDcwLCA4OSwgODgsIDEyOCwgNzAsIDg5LCA4NCwgMTI4LCA3MCwgODksIDgwLCAxMjgsIAotICAgIDcwLCA4OSwgNjUsIDEyOCwgNzAsIDg3LCA3MywgMTI4LCA3MCwgODcsIDY5LCA2OSwgMTI4LCA3MCwgODcsIDY5LCAxMjgsIAotICAgIDcwLCA4NywgNjUsIDY1LCAxMjgsIDcwLCA4NywgNjUsIDEyOCwgNzAsIDg1LCA4OCwgMTI4LCA3MCwgODUsIDg0LCAxMjgsIAotICAgIDcwLCA4NSwgODMsIDY5LCAxMjgsIDcwLCA4NSwgODMsIDE5MywgNzAsIDg1LCA4MiwgODgsIDEyOCwgNzAsIDg1LCA4MCwgCi0gICAgMTI4LCA3MCwgODUsIDc4LCA2OSwgODIsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgCi0gICAgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgCi0gICAgNzksIDgyLCAxOTMsIDcwLCA4MiwgNzksIDg3LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIAotICAgIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAKLSAgICAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCAKLSAgICA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIAotICAgIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAKLSAgICAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCAKLSAgICA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgCi0gICAgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCAKLSAgICA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgCi0gICAgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCAKLSAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgCi0gICAgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCAKKyAgICA3OSwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCAKKyAgICA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCAKKyAgICA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgCisgICAgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgCisgICAgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAKKyAgICAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKKyAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCisgICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAorICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCisgICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDEyOCwgNzIsIDc5LCA4MiwgMTkzLCA3MiwgNzksIDc5LCAKKyAgICA4MiwgODUsIDEyOCwgNzIsIDc5LCA3OSwgODAsIDEyOCwgNzIsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDc5LCA3OSwgNzUsIAorICAgIDY5LCAxOTYsIDcyLCA3OSwgNzgsIDY5LCA4OSwgNjYsIDY5LCA2OSwgMTI4LCA3MiwgNzksIDc4LCA2OSwgMjE3LCA3MiwgCisgICAgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIDczLCA2NywgMTI4LCA3MiwgNzksIDc3LCA3OSwgODQsIDcyLCA2OSwgODQsIAorICAgIDczLCAxOTUsIDcyLCA3OSwgNzYsIDY5LCAxMjgsIDcyLCA3OSwgNzYsIDY4LCA3MywgNzgsIDE5OSwgNzIsIDc5LCA3NiwgCisgICAgNjUsIDc3LCAxMjgsIDcyLCA3OSwgNzYsIDY1LCAyMDUsIDcyLCA3OSwgNzUsIDY1LCAxMjgsIDcyLCA3OSwgNzMsIDEyOCwgCisgICAgNzIsIDc5LCA2NywgNzIsIDc5LCAxMjgsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDcyLCA3OCwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA3MiwgNzgsIDg1LCA3OSwgMTI4LCA3MiwgNzgsIDc5LCA4OCwgMTI4LCA3MiwgNzgsIDc5LCA4NCwgMTI4LCA3MiwgNzgsIAorICAgIDc5LCA4MCwgMTI4LCA3MiwgNzgsIDczLCA4OCwgMTI4LCA3MiwgNzgsIDczLCA4NCwgMTI4LCA3MiwgNzgsIDczLCA4MCwgCisgICAgMTI4LCA3MiwgNzgsIDczLCA2OSwgODgsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg0LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCAKKyAgICA4MCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgMTI4LCA3MiwgNzgsIDczLCAxMjgsIDcyLCA3OCwgNjksIDg4LCAxMjgsIDcyLCAKKyAgICA3OCwgNjksIDgwLCAxMjgsIDcyLCA3OCwgNjksIDEyOCwgNzIsIDc4LCA2NSwgODgsIDEyOCwgNzIsIDc4LCA2NSwgODQsIAorICAgIDEyOCwgNzIsIDc4LCA2NSwgODAsIDEyOCwgNzIsIDc4LCA2NSwgMTI4LCA3MiwgNzcsIDg5LCA4OCwgMTI4LCA3MiwgNzcsIAorICAgIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDEyOCwgNzIsIDc3LCA4OSwgODAsIDEyOCwgNzIsIDc3LCA4OSwgCisgICAgMTI4LCA3MiwgNzcsIDg1LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA4NCwgMTI4LCA3MiwgNzcsIDg1LCA4MiwgODgsIDEyOCwgCisgICAgNzIsIDc3LCA4NSwgODIsIDEyOCwgNzIsIDc3LCA4NSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDcyLCAKKyAgICA3NywgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgMTI4LCA3MiwgNzcsIDg1LCAxMjgsIDcyLCA3NywgNzksIAorICAgIDg4LCAxMjgsIDcyLCA3NywgNzksIDg0LCAxMjgsIDcyLCA3NywgNzksIDgwLCAxMjgsIDcyLCA3NywgNzksIDEyOCwgNzIsIAorICAgIDc3LCA3MywgODgsIDEyOCwgNzIsIDc3LCA3MywgODQsIDEyOCwgNzIsIDc3LCA3MywgODAsIDEyOCwgNzIsIDc3LCA3MywgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgMTI4LCA3MiwgNzcsIDczLCAKKyAgICAxMjgsIDcyLCA3NywgNjksIDEyOCwgNzIsIDc3LCA2NSwgODgsIDEyOCwgNzIsIDc3LCA2NSwgODQsIDEyOCwgNzIsIDc3LCAKKyAgICA2NSwgODAsIDEyOCwgNzIsIDc3LCA2NSwgMTI4LCA3MiwgNzYsIDg5LCA4OCwgMTI4LCA3MiwgNzYsIDg5LCA4NCwgMTI4LCAKKyAgICA3MiwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDEyOCwgNzIsIDc2LCA4OSwgODAsIDEyOCwgNzIsIAorICAgIDc2LCA4OSwgMTI4LCA3MiwgNzYsIDg1LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA4NCwgMTI4LCA3MiwgNzYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDEyOCwgNzIsIDc2LCA4NSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDg4LCAKKyAgICAxMjgsIDcyLCA3NiwgODUsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgMTI4LCA3MiwgNzYsIDg1LCAxMjgsIDcyLCAKKyAgICA3NiwgNzksIDg4LCAxMjgsIDcyLCA3NiwgNzksIDgwLCAxMjgsIDcyLCA3NiwgNzksIDEyOCwgNzIsIDc2LCA3MywgODgsIAorICAgIDEyOCwgNzIsIDc2LCA3MywgODQsIDEyOCwgNzIsIDc2LCA3MywgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDcyLCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgMTI4LCA3MiwgNzYsIDczLCAxMjgsIDcyLCA3NiwgCisgICAgNjksIDg4LCAxMjgsIDcyLCA3NiwgNjksIDgwLCAxMjgsIDcyLCA3NiwgNjksIDEyOCwgNzIsIDc2LCA2NSwgODgsIDEyOCwgCisgICAgNzIsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDc2LCA2NSwgODAsIDEyOCwgNzIsIDc2LCA2NSwgMTI4LCA3MiwgNzUsIDEyOCwgCisgICAgNzIsIDczLCA5MCwgNjYsIDEyOCwgNzIsIDczLCA4MywgODQsIDc5LCA4MiwgNzMsIDE5NSwgNzIsIDczLCA4MiwgNzMsIDgxLCAKKyAgICAxMjgsIDcyLCA3MywgNzEsIDcyLCA0NSwgODMsIDgwLCA2OSwgNjksIDE5NiwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MiwgNjksIAorICAgIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDcyLCA3MywgNzEsIDcyLCA0NSwgNzIsIDY5LCA2OSwgNzYsIDY5LCAKKyAgICAxOTYsIDcyLCA3MywgNjksIDg4LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3MiwgNzMsIDY5LCA4NSwgMjAwLCA3MiwgCisgICAgNzMsIDY5LCA4MiwgNzksIDcxLCA3NiwgODksIDgwLCA3MiwgNzMsIDE5NSwgNzIsIDczLCA2OSwgMTI4LCA3MiwgNzMsIDY4LCAKKyAgICA3MywgNzgsIDE5OSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDcyLCA3MywgNjgsIDY5LCAxMjgsIDcyLCA3MywgNjYsIAorICAgIDczLCA4MywgNjcsIDg1LCA4MywgMTI4LCA3MiwgNzIsIDg3LCA2NSwgMTI4LCA3MiwgNzIsIDg1LCAxMjgsIDcyLCA3MiwgCisgICAgNzMsIDEyOCwgNzIsIDcyLCA2OSwgNjksIDEyOCwgNzIsIDcyLCA2OSwgMTI4LCA3MiwgNzIsIDY1LCA2NSwgMTI4LCA3MiwgCisgICAgNzEsIDEyOCwgNzIsIDY5LCA4OCwgNzMsIDcwLCA3OSwgODIsIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA4MiwgNjUsIAorICAgIDIwNSwgNzIsIDY5LCA4OCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDg0LCA4NSwgMTI4LCA3MiwgCisgICAgNjksIDgyLCA4NSwgMTI4LCA3MiwgNjksIDgyLCA3NywgNzMsIDg0LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgNzcsIDczLCAKKyAgICA3OSwgNzgsIDczLCA2NSwgMjA2LCA3MiwgNjksIDgyLCA3NywgNjksIDgzLCAxMjgsIDcyLCA2OSwgODIsIDY5LCAxMjgsIAorICAgIDcyLCA2OSwgODIsIDY2LCAxMjgsIDcyLCA2OSwgODIsIDY1LCA2OSwgODUsIDIwNSwgNzIsIDY5LCA3OCwgNzEsIDEyOCwgCisgICAgNzIsIDY5LCA3OCwgMTk5LCA3MiwgNjksIDc3LCA4MCwgMTI4LCA3MiwgNjksIDc2LCA3NywgNjksIDg0LCAxMjgsIDcyLCAKKyAgICA2OSwgNzYsIDc3LCA2OSwgMjEyLCA3MiwgNjksIDc2LCAyMDUsIDcyLCA2OSwgNzYsIDczLCA2NywgNzksIDgwLCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDcyLCA2OSwgNzUsIDg1LCA4NCwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA3MywgODMsIDY5LCA3MywgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4NiwgODksIDEyOCwgNzIsIDY5LCA2NSwgODYsIDY5LCA3OCwgNzYsIDIxNywgNzIsIDY5LCAKKyAgICA2NSwgODYsIDY5LCA3OCwgMTI4LCA3MiwgNjksIDY1LCA4NiwgNjksIDIwNiwgNzIsIDY5LCA2NSwgODIsIDg0LCA4MywgCisgICAgMTI4LCA3MiwgNjksIDY1LCA4MiwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNzIsIDY5LCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDcyLCA2OSwgNjUsIDgyLCAyMTIsIDcyLCA2OSwgNjUsIDgyLCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgCisgICAgMjA0LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgODMsIDg0LCAKKyAgICA3OSwgNzgsIDE5NywgNzIsIDY5LCA2NSwgNjgsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3MiwgNjksIDY1LCA2OCwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgCisgICAgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgNjUsIDg1LCAKKyAgICA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgCisgICAgODMsIDY5LCAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAKKyAgICAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIAorICAgIDcyLCA2NSwgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgCisgICAgNjUsIDgyLCAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCAKKyAgICA3OCwgNzEsIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIAorICAgIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgCisgICAgNjgsIDY2LCA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgNjUsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIAorICAgIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgCisgICAgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCAKKyAgICA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIAorICAgIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgCisgICAgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgNjUsIDcxLCA3NiwgNjUsIAorICAgIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIDEyOCwgNzIsIDY1LCA3MCwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgODUsIDEyOCwgNzIsIDY1LCAKKyAgICA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NiwgMTI4LCAKKyAgICA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIDEyOCwgNzIsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIDcxLCA4OSwgODUsIDEyOCwgCisgICAgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIDcxLCA4OSwgNzAsIDIxMywgCisgICAgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgNjUsIDEyOCwgNzEsIDg5LCAKKyAgICA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIDcxLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgMTI4LCA3MSwgODYsIDEyOCwgCisgICAgNzEsIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNjUsIDc3LCAKKyAgICA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIAorICAgIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIAorICAgIDg1LCAxOTksIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgMTI4LCA3MSwgODUsIAorICAgIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCA4MiwgNjgsIDY5LCA2OCwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIDY1LCA4MiwgNjgsIAorICAgIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIDcxLCA4NCwgNjksIAorICAgIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIDgyLCA3OSwgODcsIAorICAgIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgNzIsIDczLCA4MywgCisgICAgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCA3MywgNzcsIDY1LCAKKyAgICA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIDY5LCA2OSwgCisgICAgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCAKKyAgICA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIAorICAgIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgODYsIDY5LCA4OSwgCisgICAgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNzEsIDgyLCAKKyAgICA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAxMjgsIDcxLCA4MiwgCisgICAgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIDgzLCAxMjgsIDcxLCAKKyAgICA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNjksIDc3LCAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgCisgICAgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgMTk3LCAKKyAgICA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgODQsIAorICAgIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDgzLCA4OSwgCisgICAgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgODIsIDcxLCAKKyAgICA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAxMjgsIDcxLCAKKyAgICA3OSwgNzYsIDY4LCAxMjgsIDcxLCA3OSwgNzUsIDEyOCwgNzEsIDc5LCA3MywgNzgsIDE5OSwgNzEsIDc5LCA2NiwgNzYsIAorICAgIDczLCA3OCwgMTI4LCA3MSwgNzksIDY1LCA3NiwgMTI4LCA3MSwgNzksIDY1LCAyMDQsIDcxLCA3OSwgNjUsIDEyOCwgNzEsIAorICAgIDc4LCA4OSwgNzMsIDgzLCAxMjgsIDcxLCA3OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzEsIDc2LCA3OSwgCisgICAgODcsIDczLCA3OCwgMTk5LCA3MSwgNzYsIDc5LCA4NCwgODQsIDY1LCAyMDQsIDcxLCA3NiwgNzksIDY2LCAxOTcsIDcxLCAKKyAgICA3NiwgNzMsIDgzLCA4MywgNjUsIDc4LCA2OCwgMjA3LCA3MSwgNzYsIDY5LCA3MywgNjcsIDIwMCwgNzEsIDc2LCA2NSwgNzEsIAorICAgIDc5LCA3NiwgNzMsIDEyOCwgNzEsIDc2LCA2NSwgMTI4LCA3MSwgNzQsIDY5LCAxMjgsIDcxLCA3MywgODgsIDEyOCwgNzEsIAorICAgIDczLCA4NCwgMTI4LCA3MSwgNzMsIDgzLCA3MiwgMTI4LCA3MSwgNzMsIDgzLCAyMDAsIDcxLCA3MywgODMsIDY1LCA3NiwgCisgICAgMTI4LCA3MSwgNzMsIDgyLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3MSwgNzMsIDgyLCA3NiwgMTI4LCA3MSwgNzMsIDgyLCAKKyAgICA1MSwgMTI4LCA3MSwgNzMsIDgyLCAxNzksIDcxLCA3MywgODIsIDUwLCAxMjgsIDcxLCA3MywgODIsIDE3OCwgNzEsIDczLCAKKyAgICA4MCwgMTI4LCA3MSwgNzMsIDc4LCA3MywgNzMsIDEyOCwgNzEsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MywgNzcsIAorICAgIDY5LCAyMDQsIDcxLCA3MywgNzcsIDEyOCwgNzEsIDczLCA3MSwgNjUsIDEyOCwgNzEsIDczLCA2OSwgODQsIDEyOCwgNzEsIAorICAgIDczLCA2OCwgNzMsIDc3LCAxMjgsIDcxLCA3MywgNjYsIDY2LCA3OSwgODUsIDIxMSwgNzEsIDczLCA2NiwgNjUsIDEyOCwgCisgICAgNzEsIDczLCA1MiwgMTI4LCA3MSwgNzMsIDE4MCwgNzEsIDcyLCA5MCwgMTI4LCA3MSwgNzIsIDg3LCA2NSwgMTI4LCA3MSwgCisgICAgNzIsIDg1LCA3OCwgNzgsIDY1LCAxMjgsIDcxLCA3MiwgODUsIDc4LCA3OCwgMTkzLCA3MSwgNzIsIDg1LCAxMjgsIDcxLCAKKyAgICA3MiwgNzksIDg1LCAxMjgsIDcxLCA3MiwgNzksIDgzLCA4NCwgMTI4LCA3MSwgNzIsIDc5LCAxMjgsIDcxLCA3MiwgNzMsIAorICAgIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDg4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3OCwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCAKKyAgICA3MiwgNjksIDc4LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODUsIAorICAgIDY1LCA2OSwgNzEsIDcyLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY5LCA4NCwgMTI4LCA3MSwgNzIsIDY5LCA2OSwgCisgICAgMTI4LCA3MSwgNzIsIDY5LCAxMjgsIDcxLCA3MiwgMTk3LCA3MSwgNzIsIDY1LCA4OSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgCisgICAgODIsIDY1LCA2OSwgMTI4LCA3MSwgNzIsIDY1LCA4MCwgMTI4LCA3MSwgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNzIsIDY1LCAKKyAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAKKyAgICAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgCisgICAgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIAorICAgIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIAorICAgIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgCisgICAgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCAKKyAgICA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDcxLCA2NSwgNjUsIDEyOCwgNzEsIDY5LCA4NCwgMTkzLCAKKyAgICA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCA4MywgNzIsIAorICAgIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgCisgICAgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgNzEsIDY5LCAKKyAgICA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCA4NCwgODIsIAorICAgIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIDY5LCA3OCwgCisgICAgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgNzUsIAorICAgIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCA2OSwgCisgICAgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIAorICAgIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIAorICAgIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIAorICAgIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgCisgICAgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCAKKyAgICA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIAorICAgIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgCisgICAgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAKKyAgICAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIAorICAgIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgCisgICAgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCAKKyAgICA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIAorICAgIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIAorICAgIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgCisgICAgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCAKKyAgICA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIAorICAgIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIAorICAgIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIAorICAgIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgCisgICAgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCAKKyAgICA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIAorICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgCisgICAgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCAKKyAgICA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgCisgICAgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCAKKyAgICA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgCisgICAgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIAorICAgIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgCisgICAgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgCisgICAgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgCisgICAgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAKKyAgICAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCAKKyAgICA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCAKKyAgICA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgCisgICAgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgCisgICAgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg0LCA3MiwgNzksIDgyLCAxOTMsIDcwLCA4MiwgNzksIDg3LCAKKyAgICA3OCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCA4NywgNzgsIAorICAgIDEyOCwgNzAsIDgyLCA3OSwgNzgsIDg0LCA0NSwgODQsIDczLCA3NiwgODQsIDY5LCAxOTYsIDcwLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3MCwgODIsIDc5LCAyMDUsIDcwLCA4MiwgNzksIDcxLCAxMjgsIDcwLCAKKyAgICA4MiwgNzksIDE5OSwgNzAsIDgyLCA3MywgODQsIDg1LCAxMjgsIDcwLCA4MiwgNzMsIDY5LCA4MywgMTI4LCA3MCwgODIsIAorICAgIDczLCA2OSwgMTk2LCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgODYsIDY5LCAxMjgsIDcwLCA4MiwgNjksIDg0LCA2NiwgCisgICAgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDgyLCA2OSwgNzgsIDY3LCAyMDAsIDcwLCA4MiwgNjksIDY5LCAxMjgsIDcwLCAKKyAgICA4MiwgNjksIDE5NywgNzAsIDgyLCA2NSwgNzgsIDE5NSwgNzAsIDgyLCA2NSwgNzcsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDcxLCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA3MCwgODIsIDY1LCA3MSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA3MywgNzksIDIwNiwgNzAsIDc5LCA4OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgNzgsIAorICAgIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCisgICAgODQsIDg5LCAxMjgsIDcwLCA3OSwgODUsIDgyLCA0NSwgODMsIDg0LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3OSwgODUsIDgyLCAKKyAgICA0NSwgODAsIDY5LCA4MiwgNDUsIDY5LCAyMDUsIDcwLCA3OSwgODUsIDgyLCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzksIAorICAgIDg1LCAyMTAsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCA3OCwgMTI4LCA3MCwgNzksIDgzLCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDcwLCA3OSwgODIsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCAKICAgICA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIAogICAgIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzUsIDY5LCAxOTYsIDcwLCA3OSwgCiAgICAgODIsIDY3LCA2OSwgODMsIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCAKQEAgLTM0NjIsMzg0ICszNjE4LDM4OSBAQAogICAgIDEyOCwgNzAsIDc5LCA3OSwgODQsIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIAogICAgIDc4LCA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgCiAgICAgNzksIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCAKLSAgICA3NiwgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzcsIDEyOCwgNzAsIDc2LCA4OSwgMTI4LCAKLSAgICA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIAotICAgIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA3OSwgODcsIDY5LCAKLSAgICAyMTAsIDcwLCA3NiwgNzksIDg1LCA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIAotICAgIDEyOCwgNzAsIDc2LCA3OSwgODIsIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgCi0gICAgODIsIDEyOCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDY5LCAKLSAgICA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgNjksIAotICAgIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCA4NCwgCi0gICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzAsIDc2LCA2NSwgMjEyLCA3MCwgNzYsIDY1LCAKLSAgICA3MSwgODMsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIAotICAgIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgCi0gICAgNDUsIDQ5LCAxMjgsIDcwLCA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgCi0gICAgNzYsIDEyOCwgNzAsIDczLCA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCAKLSAgICA3MywgODYsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgCi0gICAgNzgsIDE5NywgNzAsIDczLCA4NiwgMTk3LCA3MCwgNzMsIDg0LCA2NSwgMTI4LCA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgCi0gICAgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA4NCwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIDcwLCAKLSAgICA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgNzMsIAotICAgIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCA3MywgCi0gICAgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIAotICAgIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgCi0gICAgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKLSAgICA3OCwgNjUsIDczLCA3NiwgODMsIDEyOCwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgNjksIDE5NiwgNzAsIDczLCA3OCwgNjUsIAotICAgIDc4LCA2NywgNzMsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgCi0gICAgMTk2LCA3MCwgNzMsIDc2LCA3NiwgMTI4LCA3MCwgNzMsIDc2LCAyMDQsIDcwLCA3MywgNzYsIDE5NywgNzAsIDczLCA3MywgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNTEsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDE5NywgNzAsIAotICAgIDczLCA3MSwgNzIsIDg0LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgMjE3LCA3MCwgCi0gICAgNzMsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDcwLCA3MywgNzAsIDg0LCA3MiwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAKLSAgICA3OCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3MywgNjksIDc2LCA2OCwgMTI4LCA3MCwgNzIsIAotICAgIDg0LCA3OSwgODIsIDE5MywgNzAsIDcwLCA3NiwgMTI4LCA3MCwgNzAsIDczLCAxMjgsIDcwLCA2OSwgODUsIDg4LCAxMjgsIAotICAgIDcwLCA2OSwgODUsIDcwLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzAsIDY5LCA4MywgODQsIDczLCA4NiwgNjUsIDc2LCAKLSAgICAxMjgsIDcwLCA2OSwgODIsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDgyLCA4MiwgNzMsIDIxMSwgNzAsIDY5LCA4MiwgNzcsIAotICAgIDY1LCA4NCwgNjUsIDEyOCwgNzAsIDY5LCA4MiwgNzcsIDY1LCA4NCwgMTkzLCA3MCwgNjksIDc5LCAyMDAsIDcwLCA2OSwgCi0gICAgNzgsIDE5OSwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCAKLSAgICA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIAotICAgIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIAotICAgIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgCi0gICAgMTk2LCA3MCwgNjksIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCAKLSAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgCi0gICAgMTI4LCA3MCwgNjksIDY1LCA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIAotICAgIDY5LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgCi0gICAgODQsIDcyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCAKLSAgICA3MiwgNjUsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgMjAxLCAKLSAgICA3MCwgNjUsIDgxLCAxMjgsIDcwLCA2NSwgODAsIDEyOCwgNzAsIDY1LCA3OCwgNzEsIDEyOCwgNzAsIDY1LCA3OCwgNjksIAotICAgIDgyLCA3OSwgODMsIDczLCAyMTEsIDcwLCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA3NywgNzMsIDc2LCA4OSwgMTI4LCA3MCwgCi0gICAgNjUsIDc2LCA3NiwgNzMsIDc4LCAxOTksIDcwLCA2NSwgNzYsIDc2LCA2OSwgMjA2LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCAKLSAgICA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgODUsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIAotICAgIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgCi0gICAgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCAKLSAgICA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIAotICAgIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgCi0gICAgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCAKLSAgICA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIAotICAgIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCAKLSAgICA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIAotICAgIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCAKLSAgICA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIAotICAgIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgCi0gICAgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgCi0gICAgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCAKLSAgICA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIAotICAgIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIAotICAgIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAKLSAgICAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIAotICAgIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgCi0gICAgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgCi0gICAgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCA2NiwgNjksIDg5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCAKLSAgICA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgCi0gICAgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCAKLSAgICA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIAotICAgIDg0LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OSwgODgsIDgwLCA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgODgsIDc5LCAKLSAgICAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCA4NCwgMTI4LCAKLSAgICA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCAKLSAgICA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCA2NywgNjksIAotICAgIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgCi0gICAgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCAKLSAgICA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgCi0gICAgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIAotICAgIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIAotICAgIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgCi0gICAgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIAotICAgIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgCi0gICAgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCAKLSAgICA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIAotICAgIDE3OCwgNjksIDgzLCA3MiwgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA0NSwgCi0gICAgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgMTk2LCA2OSwgODIsIDgyLCAKLSAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgNjUsIDgzLCAxOTcsIDY5LCAKLSAgICA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDY5LCA4MSwgODUsIAotICAgIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIDEyOCwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCAKLSAgICA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCA2OSwgODAsIDczLCA3MSwgODIsIAotICAgIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgNjUsIDIwNiwgNjksIDgwLCA2OSwgCi0gICAgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCA3NywgNjUsIDEyOCwgNjksIDc5LCAKLSAgICA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIAorICAgIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgMTI4LCA3MCwgNzYsIAorICAgIDg5LCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAKKyAgICAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIAorICAgIDc5LCA4NywgNjksIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCAKKyAgICA3NiwgNzksIDc5LCA4MiwgMTI4LCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIDg0LCAxMjgsIAorICAgIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg1LCA4MiwgCisgICAgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgNzgsIDY5LCAxOTYsIDcwLCAKKyAgICA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgMTI4LCA3MCwgNzYsIDY1LCAyMTIsIAorICAgIDcwLCA3NiwgNjUsIDcxLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCisgICAgNTIsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCA0NSwgNDksIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIAorICAgIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgCisgICAgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCAKKyAgICA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDY1LCAxMjgsIDcwLCA3MywgODQsIAorICAgIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MywgCisgICAgNzgsIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKKyAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAorICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCisgICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKKyAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAorICAgIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgCisgICAgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDEyOCwgNzAsIDczLCAKKyAgICA3NiwgNzYsIDY5LCAxOTYsIDcwLCA3MywgNzYsIDc2LCAxMjgsIDcwLCA3MywgNzYsIDIwNCwgNzAsIDczLCA3NiwgMTk3LCAKKyAgICA3MCwgNzMsIDczLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIAorICAgIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDQ5LCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgCisgICAgMTk3LCA3MCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzAsIDczLCA3MCwgODQsIDg5LCAxMjgsIDcwLCA3MywgNzAsIDg0LCAKKyAgICAyMTcsIDcwLCA3MywgNzAsIDg0LCA3MiwgODMsIDEyOCwgNzAsIDczLCA3MCwgODQsIDcyLCAxMjgsIDcwLCA3MywgNzAsIAorICAgIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3MywgNzAsIDg0LCA2OSwgNjksIDIwNiwgNzAsIDczLCA2OSwgNzYsIDY4LCAKKyAgICAxMjgsIDcwLCA3MiwgODQsIDc5LCA4MiwgMTkzLCA3MCwgNzAsIDc2LCAxMjgsIDcwLCA3MCwgNzMsIDEyOCwgNzAsIDY5LCAKKyAgICA4NSwgODgsIDEyOCwgNzAsIDY5LCA4NSwgNzAsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3MCwgNjksIDgzLCA4NCwgNzMsIAorICAgIDg2LCA2NSwgNzYsIDEyOCwgNzAsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDcwLCA2OSwgODIsIDgyLCA3MywgMjExLCA3MCwgCisgICAgNjksIDgyLCA3NywgNjUsIDg0LCA2NSwgMTI4LCA3MCwgNjksIDgyLCA3NywgNjUsIDg0LCAxOTMsIDcwLCA2OSwgNzksIAorICAgIDIwMCwgNzAsIDY5LCA3OCwgMTk5LCA3MCwgNjksIDc4LCA2NywgNjksIDEyOCwgNzAsIDY5LCA3NywgNzMsIDc4LCA3MywgCisgICAgNzgsIDE5NywgNzAsIDY5LCA3NywgNjUsIDc2LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA2NSwgNzYsIDE5NywgNzAsIDY5LCAKKyAgICA3NiwgNzYsIDc5LCA4NywgODMsIDcyLCA3MywgODAsIDEyOCwgNzAsIDY5LCA3MywgMTI4LCA3MCwgNjksIDcyLCAyMTMsIAorICAgIDcwLCA2OSwgNzIsIDEyOCwgNzAsIDY5LCAyMDAsIDcwLCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3MCwgNjksIDY5LCA2OCwgCisgICAgMTI4LCA3MCwgNjksIDY5LCAxOTYsIDcwLCA2OSwgNjksIDEyOCwgNzAsIDY5LCA2NiwgODIsIDg1LCA2NSwgODIsIDg5LCAKKyAgICAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIDcwLCA2OSwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIAorICAgIDY5LCA2NSwgODIsIDc4LCAxMjgsIDcwLCA2OSwgNjUsIDgyLCA3MCwgODUsIDIwNCwgNzAsIDY5LCA2NSwgODIsIDEyOCwgCisgICAgNzAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzAsIDY1LCA4OSwgMTI4LCA3MCwgNjUsIDg4LCAxMjgsIDcwLCAKKyAgICA2NSwgMjE2LCA3MCwgNjUsIDg0LCA3MywgNzEsIDg1LCA2OSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDgyLCAxMjgsIAorICAgIDcwLCA2NSwgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgNzgsIDEyOCwgNzAsIDY1LCA4NCwgCisgICAgNzIsIDY1LCA4NCwgNjUsIDIwNiwgNzAsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDcwLCA2NSwgODQsIDcyLCAxOTMsIDcwLCAKKyAgICA2NSwgODQsIDEyOCwgNzAsIDY1LCA4MiwgODMsIDIwMSwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIDcwLCAKKyAgICA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAxMjgsIAorICAgIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA3MCwgNjUsIDc2LCA3NiwgCisgICAgNjksIDIwNiwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCAKKyAgICA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgODIsIDg5LCAxMjgsIAorICAgIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIDE5NywgNzAsIDY1LCA2NywgCisgICAgNjksIDQ1LCA1NCwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgCisgICAgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCAKKyAgICA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIAorICAgIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgCisgICAgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgCisgICAgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgCisgICAgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCAKKyAgICA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIAorICAgIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIAorICAgIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAKKyAgICAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIAorICAgIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgCisgICAgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgCisgICAgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjksIDkwLCAyMDAsIDY5LCA5MCwgNjksIDc4LCAxMjgsIDY5LCA5MCwgNjksIDIwNiwgNjksIDkwLCAKKyAgICAxMjgsIDY5LCA4OSwgNjksIDgzLCAxMjgsIDY5LCA4OSwgNjksIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIAorICAgIDY5LCA4OSwgNjYsIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgCisgICAgODgsIDg0LCA4MiwgNjUsIDg0LCA2OSwgODIsIDgyLCA2OSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDY5LCA4OCwgODQsIAorICAgIDgyLCA2NSwgNDUsIDc2LCA3OSwgMjE1LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3MiwgNzMsIDcxLCAyMDAsIDY5LCA4OCwgCisgICAgODQsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCAKKyAgICA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgCisgICAgNzgsIDIxMiwgNjksIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgCisgICAgODgsIDczLCA4MywgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCAKKyAgICA2NywgNzYsIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY5LCA4OCwgNjcsIDcyLCA2NSwgNzgsIDcxLCA2OSwgMTI4LCA2OSwgODgsIDY3LCA2OSwgODMsIDgzLCAKKyAgICAxMjgsIDY5LCA4OCwgNjcsIDY5LCA3NiwgNzYsIDY5LCA3OCwgODQsIDEyOCwgNjksIDg3LCA2OSwgMTI4LCA2OSwgODYsIAorICAgIDY5LCA4MiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNjksIDg2LCA2OSwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDg1LCA4MiwgCisgICAgNzksIDgwLCA2OSwgNjUsIDIwNiwgNjksIDg1LCA4MiwgNzksIDgwLCA2OSwgNDUsIDY1LCA3MCwgODIsIDczLCA2NywgNjUsIAorICAgIDEyOCwgNjksIDg1LCA4MiwgNzksIDQ1LCA2NywgODUsIDgyLCA4MiwgNjksIDc4LCA2NywgMjE3LCA2OSwgODUsIDgyLCAKKyAgICAyMDcsIDY5LCA4NSwgNzYsIDY5LCAyMTAsIDY5LCA4NSwgNDUsIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDc5LCAxMjgsIDY5LCAKKyAgICA4NSwgNDUsIDY5LCA4NSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgNzksIDEyOCwgNjksIDg1LCA0NSwgNjksIDEyOCwgNjksIAorICAgIDg1LCA0NSwgNjUsIDEyOCwgNjksIDg0LCA4OCwgMTI4LCA2OSwgODQsIDc4LCA2NSwgNzIsIDg0LCA2NSwgMTI4LCA2OSwgCisgICAgODQsIDcyLCA2OSwgMjA0LCA2OSwgODQsIDY5LCA4MiwgNzksIDIwNiwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDg5LCAKKyAgICAxMjgsIDY5LCA4NCwgNjYsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAxMjgsIDY5LCA4MywgODQsIAorICAgIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY5LCA4MywgCisgICAgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgMTc4LCA2OSwgODMsIDcyLCAKKyAgICA0OSwgNTQsIDEyOCwgNjksIDgzLCA2NywgNjUsIDgwLCA2OSwgMTI4LCA2OSwgODMsIDY3LCAxMjgsIDY5LCA4MywgNjUsIAorICAgIDEyOCwgNjksIDgzLCA0NSwgODQsIDY5LCAxMjgsIDY5LCA4MiwgODIsIDc5LCA4MiwgNDUsIDY2LCA2NSwgODIsIDgyLCA2OSwgCisgICAgMTk2LCA2OSwgODIsIDgyLCAxMjgsIDY5LCA4MiwgNzMsIDc4LCA1MCwgMTI4LCA2OSwgODIsIDcxLCAxMjgsIDY5LCA4MiwgCisgICAgNjUsIDgzLCAxOTcsIDY5LCA4MSwgODUsIDczLCA4NiwgNjUsIDc2LCA2OSwgNzgsIDIxMiwgNjksIDgxLCA4NSwgNzMsIDY4LCAKKyAgICAxMjgsIDY5LCA4MSwgODUsIDczLCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDY5LCA4MSwgODUsIDY1LCA3NiwgODMsIAorICAgIDEyOCwgNjksIDgxLCA4NSwgNjUsIDc2LCAyMTEsIDY5LCA4MSwgODUsIDY1LCA3NiwgMTI4LCA2OSwgODAsIDgzLCA3MywgCisgICAgNzYsIDc5LCA3OCwgMTI4LCA2OSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDY5LCA4MCwgNzksIDY3LCA3MiwgMTI4LCAKKyAgICA2OSwgODAsIDczLCA3MSwgODIsIDY1LCA4MCwgNzIsIDczLCAxOTUsIDY5LCA4MCwgNzMsIDY4LCA2NSwgODUsIDgyLCA2OSwgCisgICAgNjUsIDIwNiwgNjksIDgwLCA2OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA2OSwgODAsIDY5LCA3MSwgNjksIDgyLCAKKyAgICA3NywgNjUsIDEyOCwgNjksIDc5LCA4NCwgMTI4LCA2OSwgNzksIDc3LCAxMjgsIDY5LCA3OSwgNzYsIDcyLCA4OCwgMTI4LCAKKyAgICA2OSwgNzksIDc2LCAxMjgsIDY5LCA3OSwgNzIsIDEyOCwgNjksIDc4LCA4OSwgMTI4LCA2OSwgNzgsIDg2LCA2OSwgNzYsIAogICAgIDc5LCA4MCwgNjksIDEyOCwgNjksIDc4LCA4NiwgNjksIDc2LCA3OSwgODAsIDE5NywgNjksIDc4LCA4NSwgNzcsIDY5LCA4MiwgCiAgICAgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDc4LCA4NCwgODIsIDg5LCA0NSwgNTAsIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAKICAgICA0NSwgNDksIDEyOCwgNjksIDc4LCA4NCwgODIsIDg5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCAyMTcsIDY5LCA3OCwgODQsIAogICAgIDcyLCA4NSwgODMsIDczLCA2NSwgODMsIDc3LCAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgODAsIDgyLCA3MywgODMsIDY5LCAKICAgICAxMjgsIDY5LCA3OCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY5LCA3OCwgODQsIDY5LCA4MiwgMTI4LCA2OSwgNzgsIAotICAgIDg0LCA2OSwgMjEwLCA2OSwgNzgsIDgxLCA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgCi0gICAgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCAKLSAgICA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIAotICAgIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgCi0gICAgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIAotICAgIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgCi0gICAgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCAKLSAgICA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIAotICAgIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgCi0gICAgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCAKLSAgICA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIAotICAgIDgzLCAxMjgsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgCi0gICAgNzYsIDY5LCA4NiwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIAotICAgIDc4LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgCi0gICAgNjksIDc2LCA2OSwgNzcsIDY5LCA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgODIsIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIAotICAgIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgCi0gICAgODQsIDczLCA3NSwgNzksIDc4LCAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKLSAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAotICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNjksIDcxLCA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCAKLSAgICA2NSwgMTI4LCA2OSwgNjksIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA2NiwgNjksIDY5LCA3MCwgNzMsIDc2LCA3MywgCi0gICAgMTI4LCA2OSwgNjgsIDczLCA4NCwgNzksIDgyLCA3MywgNjUsIDIwNCwgNjksIDY4LCA3MywgNzgsIDEyOCwgNjksIDY4LCAKLSAgICA2OCwgMTI4LCA2OSwgNjYsIDY5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIAotICAgIDY5LCA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgCi0gICAgNjksIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCAKLSAgICA3NywgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIAotICAgIDY4LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCAKLSAgICA1MiwgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIAotICAgIDEyOCwgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIAotICAgIDQ4LCA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgCi0gICAgNTAsIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCAKLSAgICA2OSwgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIAotICAgIDQ5LCA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgCi0gICAgNDksIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAKLSAgICAxMjgsIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCAKLSAgICA0OCwgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgCi0gICAgNTMsIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgCi0gICAgNjksIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCAKLSAgICA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDY5LCAxMjgsIDY4LCA5MCwgNzIsIDY1LCAxMjgsIDY4LCA5MCwgNjksIAotICAgIDc2LCA3OSwgMTI4LCA2OCwgOTAsIDY5LCA2OSwgMTI4LCA2OCwgOTAsIDY5LCAxMjgsIDY4LCA5MCwgNjUsIDY1LCAxMjgsIAotICAgIDY4LCA5MCwgNjUsIDEyOCwgNjgsIDkwLCAxMjgsIDY4LCAyMTgsIDY4LCA4OSwgNzksIDEyOCwgNjgsIDg5LCAyMDcsIDY4LCAKLSAgICA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgODcsIDY5LCAxMjgsIDY4LCAKLSAgICA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCA4NiwgNjgsIDEyOCwgNjgsIAotICAgIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIDEyOCwgNjgsIDg1LCA4MywgCi0gICAgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgODUsIDgyLCAKLSAgICA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIAotICAgIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCA2OCwgODUsIDc4LCAxNzksIAotICAgIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIAotICAgIDY4LCA4NSwgNjYsIDUwLCAxMjgsIDY4LCA4NSwgNjYsIDEyOCwgNjgsIDg1LCAxOTQsIDY4LCA4MiwgODksIDEyOCwgNjgsIAotICAgIDgyLCAyMTcsIDY4LCA4MiwgODUsIDc3LCAxMjgsIDY4LCA4MiwgODUsIDIwNSwgNjgsIDgyLCA3OSwgODAsIDgzLCAxMjgsIAotICAgIDY4LCA4MiwgNzksIDgwLCA3NiwgNjksIDg0LCAxMjgsIDY4LCA4MiwgNzksIDgwLCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKLSAgICA4NywgNjksIDE5NiwgNjgsIDgyLCA3OSwgNzcsIDY5LCA2OCwgNjUsIDgyLCAyMTcsIDY4LCA4MiwgNzMsIDg2LCA2OSwgCi0gICAgMTI4LCA2OCwgODIsIDczLCA4NiwgMTk3LCA2OCwgODIsIDczLCA3OCwgNzUsIDEyOCwgNjgsIDgyLCA3MywgMjA0LCA2OCwgCi0gICAgODIsIDY5LCA4MywgODMsIDEyOCwgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCA2NSwgNzcsIAotICAgIDEyOCwgNjgsIDgyLCA2NSwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgODIsIDY1LCA3MSwgNzksIDIwNiwgNjgsIDgyLCA2NSwgCi0gICAgNzAsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDgzLCAxMjgsIDY4LCA4MiwgNjUsIDY3LCAKLSAgICA3MiwgNzcsIDY1LCAxMjgsIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDE5MywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAotICAgIDY4LCA4MywgMTI4LCA2OCwgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgCi0gICAgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCAKLSAgICA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCA3OSwgODUsIAotICAgIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIDc5LCA4NSwgCi0gICAgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIDg0LCA4NCwgCi0gICAgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAKLSAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MCwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAotICAgIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgCi0gICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKLSAgICA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUwLCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIAotICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MCwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAKLSAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNDksIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIAotICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNDksIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIAotICAgIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTQsIDU1LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCi0gICAgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUxLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNDksIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTUsIAotICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgCi0gICAgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA0OSwgNTAsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKLSAgICA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKLSAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU2LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgCi0gICAgNTAsIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDU0LCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA0OSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NiwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKLSAgICA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIAotICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTYsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAotICAgIDUwLCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIAotICAgIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgCi0gICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAKLSAgICA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAxMjgsIDY4LCA3OSwgODQsIDc2LCAKLSAgICA2OSwgODMsIDIxMSwgNjgsIDc5LCA4MiwgODUsIDEyOCwgNjgsIDc5LCA3OSwgODIsIDEyOCwgNjgsIDc5LCA3OSwgNzgsIAotICAgIDcxLCAxMjgsIDY4LCA3OSwgNzgsIDcxLCAxMjgsIDY4LCA3OSwgNzcsIDY1LCA3MywgMjA2LCA2OCwgNzksIDc2LCA4MCwgCi0gICAgNzIsIDczLCA3OCwgMTI4LCA2OCwgNzksIDc2LCA3NiwgODMsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDY1LCAyMTAsIDY4LCAKLSAgICA3OSwgNzYsIDczLCA4NSwgNzcsIDEyOCwgNjgsIDc5LCA3NSwgNzcsIDY1LCA3MywgMTI4LCA2OCwgNzksIDczLCA4NCwgCi0gICAgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCA3OSwgNjgsIDY5LCA3NSwgCi0gICAgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY2LCA4MiwgNzksIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCAKLSAgICA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIAotICAgIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCAKLSAgICA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgNjksIDY5LCAxMjgsIDY4LCA3NiwgNjUsIDEyOCwgNjgsIDc2LCAKLSAgICAxMjgsIDY4LCA3NSwgNjUsIDgyLCAxMjgsIDY4LCA3NSwgNjUsIDIxMCwgNjgsIDc0LCA2OSwgODIsIDg2LCA3MywgMTI4LCAKLSAgICA2OCwgNzQsIDY5LCA4MiwgODYsIDEyOCwgNjgsIDc0LCA2OSwgMTI4LCA2OCwgNzQsIDY1LCAxMjgsIDY4LCA3NCwgMTI4LCAKLSAgICA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKLSAgICA4MiwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxOTYsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDEyOCwgNjgsIAotICAgIDczLCA4NiwgNzMsIDY4LCAxOTcsIDY4LCA3MywgODYsIDY5LCA4MiwgNzEsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA3MywgCi0gICAgODQsIDg0LCAyMDcsIDY4LCA3MywgODMsIDg0LCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDg0LCAKLSAgICA3MywgNzgsIDcxLCA4NSwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc2LCA3NiwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDgzLCA4MywgNzksIDc2LCA4NiwgNjksIDEyOCwgCi0gICAgNjgsIDczLCA4MywgODAsIDY5LCA4MiwgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4MywgNzUsIDEyOCwgNjgsIDczLCAKLSAgICA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgNjgsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgNjcsIDc5LCA3OCwgODQsIAotICAgIDczLCA3OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNzMsIDgzLCAxOTUsIDY4LCA3MywgODMsIDY1LCA4MCwgODAsIDc5LCA3MywgCi0gICAgNzgsIDg0LCA2OSwgMTk2LCA2OCwgNzMsIDgzLCA2NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzMsIDgyLCA3MSwgMTkzLCAKLSAgICA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3NiwgMjE3LCA2OCwgNzMsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCA2NSwgCi0gICAgMjA0LCA2OCwgNzMsIDgwLCA4NCwgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCAKLSAgICA3NiwgNzksIDg1LCA3OCwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIAotICAgIDczLCA3OCwgNzEsIDY2LCA2NSwgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgCi0gICAgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIAotICAgIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNDksIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIAotICAgIDc3LCA3MywgNjgsIDczLCAxOTMsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgCi0gICAgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc2LCAxMjgsIDY4LCAKLSAgICA3MywgNzEsIDgyLCA2NSwgODAsIDcyLCAxMjgsIDY4LCA3MywgNzEsIDgyLCA2NSwgODAsIDIwMCwgNjgsIDczLCA3MSwgODIsIAotICAgIDY1LCA3NywgNzcsIDc5LCAyMTEsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAxOTMsIDY4LCA3MywgNzEsIDgyLCA2NSwgCi0gICAgMjA1LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDIwNiwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgNzMsIDcwLCA4NCwgCi0gICAgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCA3MywgNzAsIDcwLCAKLSAgICA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgNzMsIDY5LCA4MywgCi0gICAgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCA3MywgNzAsIDcwLCAKLSAgICA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgwLCAxMjgsIDY4LCA3MywgMTk3LCA2OCwgNzMsIAotICAgIDY2LCAxMjgsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDc5LCAyMDYsIDY4LCA3MywgNjUsIDg0LCA3OSwgNzgsIDczLCA3NSwgCi0gICAgMjAxLCA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgMjAxLCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCA2OCwgODMsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDEyOCwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgMTk2LCA2OCwgCi0gICAgNzMsIDY1LCA3NywgNjksIDg0LCA2OSwgMjEwLCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDY1LCAxMjgsIDY4LCAKLSAgICA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgMTkzLCA2OCwgNzMsIDY1LCA3NiwgNjksIDY3LCA4NCwgNDUsIDIwOCwgNjgsIAotICAgIDczLCA2NSwgNzEsIDc5LCA3OCwgNjUsIDc2LCAxMjgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgCi0gICAgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgODMsIAotICAgIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCA3MiwgCi0gICAgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgCi0gICAgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCAKLSAgICA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIAotICAgIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgCi0gICAgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCAKLSAgICA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCAKKyAgICA4NCwgNjksIDIxMCwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIDc4LCA4MSwgMTI4LCA2OSwgNzgsIAorICAgIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDEyOCwgNjksIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCAKKyAgICA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIAorICAgIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIDE5OSwgCisgICAgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgNzksIDc4LCAKKyAgICA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIDE5NSwgNjksIAorICAgIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA2NiwgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgCisgICAgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIAorICAgIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODQsIDEyOCwgCisgICAgNjksIDc2LCA3NiwgNzMsIDgwLCA4NCwgNzMsIDE5NSwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNzMsIDgzLCAxMjgsIDY5LCAKKyAgICA3NiwgNzYsIDczLCA4MCwgODMsIDY5LCAxMjgsIDY5LCA3NiwgNzMsIDcwLCA3MywgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIAorICAgIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzYsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDY5LCA3NiwgCisgICAgNjksIDg2LCA2OSwgMjA2LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDY1LCA3OCwgODQsIDEyOCwgNjksIDc2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgMjEyLCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3NiwgNjksIDY3LCA4NCwgODIsIAorICAgIDczLCAxOTUsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgCisgICAgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCA2OSwgNzMsIDgzLCAxMjgsIDY5LCAKKyAgICA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIAorICAgIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMTI4LCA2OSwgCisgICAgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA2OSwgNjksIDIwNiwgNjksIDczLCAKKyAgICA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIDY5LCAxMjgsIDY5LCA3MiwgODcsIAorICAgIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjksIDcxLCA3MywgCisgICAgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIDc1LCAKKyAgICA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIAorICAgIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIDY4LCAKKyAgICAxMjgsIDY5LCA2NiwgNjksIDcwLCA3MywgNzYsIDczLCAxMjgsIDY5LCA2NSwgODMsIDg0LCA2OSwgODIsIDIwNiwgNjksIAorICAgIDY1LCA4MywgMjEyLCA2OSwgNjUsIDgyLCA4NCwgNzIsIDc2LCAyMTcsIDY5LCA2NSwgODIsIDg0LCA3MiwgMTI4LCA2OSwgCisgICAgNjUsIDgyLCA4NCwgMjAwLCA2OSwgNjUsIDgyLCA4MywgMTI4LCA2OSwgNjUsIDgyLCA3NiwgMjE3LCA2OSwgNjUsIDc3LCAKKyAgICA3MiwgNjUsIDc4LCA2NywgNzIsIDc5LCA3NiwgNzYsIDEyOCwgNjksIDY1LCA3MSwgNzYsIDY5LCAxMjgsIDY5LCA2NSwgNjgsIAorICAgIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCA2NSwgNjYsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIDY5LCAxNzgsIDY5LCA0OCwgCisgICAgNTEsIDU2LCAxMjgsIDY5LCA0OCwgNTEsIDU1LCAxMjgsIDY5LCA0OCwgNTEsIDU0LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAKKyAgICA2NSwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgMTI4LCA2OSwgNDgsIDUxLCA1MSwgMTI4LCA2OSwgNDgsIDUxLCA1MCwgMTI4LCAKKyAgICA2OSwgNDgsIDUxLCA0OSwgMTI4LCA2OSwgNDgsIDUxLCA0OCwgMTI4LCA2OSwgNDgsIDUwLCA1NywgMTI4LCA2OSwgNDgsIAorICAgIDUwLCA1NiwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNTYsIDEyOCwgNjksIDQ4LCA1MCwgNTUsIDEyOCwgNjksIDQ4LCA1MCwgCisgICAgNTQsIDEyOCwgNjksIDQ4LCA1MCwgNTMsIDEyOCwgNjksIDQ4LCA1MCwgNTIsIDEyOCwgNjksIDQ4LCA1MCwgNTEsIDEyOCwgCisgICAgNjksIDQ4LCA1MCwgNTAsIDEyOCwgNjksIDQ4LCA1MCwgNDksIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDY5LCAKKyAgICA0OCwgNTAsIDQ4LCAxMjgsIDY5LCA0OCwgNDksIDU3LCAxMjgsIDY5LCA0OCwgNDksIDU2LCAxMjgsIDY5LCA0OCwgNDksIAorICAgIDU1LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjksIDQ4LCA0OSwgNTMsIDEyOCwgNjksIDQ4LCA0OSwgNTIsIDEyOCwgNjksIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjksIDQ4LCA0OSwgNTAsIDEyOCwgNjksIDQ4LCA0OSwgNDksIDEyOCwgNjksIDQ4LCA0OSwgNDgsIDEyOCwgNjksIDQ4LCAKKyAgICA0OCwgNTcsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU3LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA2OSwgNDgsIDQ4LCA1NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NCwgMTI4LCA2OSwgNDgsIDQ4LCA1MywgCisgICAgMTI4LCA2OSwgNDgsIDQ4LCA1MiwgMTI4LCA2OSwgNDgsIDQ4LCA1MSwgMTI4LCA2OSwgNDgsIDQ4LCA1MCwgMTI4LCA2OSwgCisgICAgNDgsIDQ4LCA0OSwgMTI4LCA2OSwgNDUsIDc3LCA2NSwgNzMsIDIwNCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCAKKyAgICA5MCwgNjUsIDEyOCwgNjgsIDkwLCA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCAKKyAgICA5MCwgNzQsIDY5LCAxMjgsIDY4LCA5MCwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCAKKyAgICA2OCwgODksIDIwNywgNjgsIDg5LCA2OSwgNzIsIDEyOCwgNjgsIDg5LCA2OSwgMjAwLCA2OCwgODcsIDc5LCAxMjgsIDY4LCAKKyAgICA4NywgNjksIDEyOCwgNjgsIDg3LCA2NSwgMTI4LCA2OCwgODYsIDczLCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjgsIAorICAgIDg2LCA2OCwgMTI4LCA2OCwgODYsIDEyOCwgNjgsIDg1LCA4NCwgNzMsIDY5LCA4MywgMTI4LCA2OCwgODUsIDgzLCA3NSwgCisgICAgMTI4LCA2OCwgODUsIDgzLCA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDg1LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY4LCA4NSwgODIsIDUwLCAxMjgsIDY4LCA4NSwgODAsIDc5LCA3OCwgNjgsIDczLCA4NSwgMjExLCA2OCwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCA4NSwgNzgsIDUyLCAxMjgsIDY4LCA4NSwgNzgsIDUxLCAxMjgsIAorICAgIDY4LCA4NSwgNzgsIDE3OSwgNjgsIDg1LCA3NywgMTI4LCA2OCwgODUsIDIwNCwgNjgsIDg1LCA3MiwgMTI4LCA2OCwgODUsIAorICAgIDcxLCA4NSwgNjgsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIAorICAgIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCA2OCwgODIsIAorICAgIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgCisgICAgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCAKKyAgICA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIAorICAgIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgCisgICAgODIsIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCAKKyAgICA2NSwgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIAorICAgIDY1LCA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAKKyAgICAxOTMsIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgCisgICAgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCA4NSwgNzEsIDcyLCA3OCwgODUsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIAorICAgIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDQ1LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2OCwgCisgICAgNzksIDg1LCA2NiwgNzYsIDY5LCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA4MCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4NCwgNjksIDY4LCA0NSwgNzgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDg0LCA2OSwgNjgsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCAxOTYsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKKyAgICA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NSwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDU1LCA1NiwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCisgICAgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgCisgICAgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUzLCA1NCwgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIAorICAgIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIAorICAgIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MCwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MCwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCAKKyAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgNTMsIDU0LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIAorICAgIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUwLCA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MywgNTQsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgCisgICAgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUwLCA1MSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCAKKyAgICA1MSwgNTIsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCAKKyAgICA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAKKyAgICA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDUxLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MiwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIAorICAgIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUxLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1NCwgNTUsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MywgNTYsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIAorICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MSwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgNTUsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgCisgICAgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUxLCA1MiwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA0OSwgNTEsIDUyLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTEsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgCisgICAgODQsIDgzLCA0NSwgNDksIDUwLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgCisgICAgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDQ5LCA1MCwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgCisgICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNDksIDUwLCA1MiwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTQsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUyLCAKKyAgICA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKKyAgICA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTIsIDUzLCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNDksIDUwLCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA0OSwgNTAsIDUxLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MywgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCAKKyAgICA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIAorICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDU1LCAKKyAgICA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAorICAgIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNDksIDUwLCA1MSwgNTIsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCAKKyAgICA1MCwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIAorICAgIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDUxLCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDQ5LCA1MCwgNTEsIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgNTAsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA0OSwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgMTI4LCA2OCwgNzksIDg0LCA3NiwgNjksIDgzLCAyMTEsIDY4LCA3OSwgODIsIDg1LCAxMjgsIDY4LCA3OSwgNzksIAorICAgIDgyLCAxMjgsIDY4LCA3OSwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgCisgICAgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCAKKyAgICA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIAorICAgIDEyOCwgNjgsIDc5LCA3MywgODQsIDEyOCwgNjgsIDc5LCA3MSwgMTI4LCA2OCwgNzksIDE5OSwgNjgsIDc5LCA2OSwgMjExLCAKKyAgICA2OCwgNzksIDY4LCA2OSwgNzUsIDY1LCA4NCwgNjUsIDEyOCwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIAorICAgIDY3LCA3MiwgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCAKKyAgICA2OSwgMTk3LCA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgCisgICAgNzYsIDg1LCAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgCisgICAgNjgsIDc2LCA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgCisgICAgNjgsIDc1LCA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCAKKyAgICA3NCwgNjksIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIAorICAgIDIxNywgNjgsIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjgsIDczLCA4NiwgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgCisgICAgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCA3MywgODYsIDczLCAKKyAgICA2OCwgMTk3LCA2OCwgNzMsIDg2LCA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIDg0LCA4NCwgCisgICAgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCAKKyAgICA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIAorICAgIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgCisgICAgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIDY4LCA3MywgODMsIDczLCAKKyAgICA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgNzgsIDg0LCA3MywgNzgsIAorICAgIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCA3OSwgNzMsIDc4LCA4NCwgCisgICAgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIDE5MywgNjgsIDczLCAKKyAgICA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIAorICAgIDczLCA4MCwgODQsIDY5LCAxMjgsIDY4LCA3MywgODAsIDgwLCA2OSwgODIsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDc5LCA4NSwgCisgICAgNzgsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDczLCAxMjgsIDY4LCA3MywgODAsIDc2LCAyMDEsIDY4LCA3MywgNzgsIDcxLCAKKyAgICA2NiwgNjUsIDIxMiwgNjgsIDczLCAyMDYsIDY4LCA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNzcsIAorICAgIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCAKKyAgICA3OSwgNzgsIDQ1LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDQ5LCAxMjgsIAorICAgIDY4LCA3MywgNzcsIDczLCA3OCwgNzMsIDgzLCA3MiwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIDczLCA3NywgNzMsIDY4LCAKKyAgICA3MywgMTkzLCA2OCwgNzMsIDc3LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDc3LCA2OSwgNzgsIAorICAgIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA3NywgNTAsIDEyOCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgCisgICAgNjUsIDgwLCA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKKyAgICA3OSwgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIAorICAgIDczLCA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDY4LCA3MywgCisgICAgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAKKyAgICAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIAorICAgIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgCisgICAgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIAorICAgIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgCisgICAgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgCisgICAgNzMsIDY1LCA4NCwgNzksIDc4LCA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCAKKyAgICA2NSwgODMsIDg0LCA3OSwgNzYsIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIAorICAgIDc3LCA3OSwgNzgsIDY4LCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgCisgICAgNjksIDIxMCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCAKKyAgICA3MywgNzUsIDE5MywgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIAorICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCisgICAgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDY5LCAKKyAgICA4MiwgNjksIDgzLCA3MywgMjExLCA2OCwgNzIsIDc5LCA4NSwgMTI4LCA2OCwgNzIsIDc5LCA3OSwgMTI4LCA2OCwgNzIsIAorICAgIDc5LCAxMjgsIDY4LCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgODUsIDEyOCwgNjgsIDcyLCA3MiwgNzksIDc5LCAxMjgsIAorICAgIDY4LCA3MiwgNzIsIDc5LCAxMjgsIDY4LCA3MiwgNzIsIDczLCAxMjgsIDY4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgCisgICAgNzIsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDcyLCA2NSwgMTI4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNzIsIDY1LCAKKyAgICA4MiwgNzcsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCA2NSwgODQsIAorICAgIDcyLCAxMjgsIDY4LCA3MiwgNjUsIDc2LCAxMjgsIDY4LCA3MiwgNjUsIDY4LCA3MiwgNjksIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgNjUsIDc2LCA4NSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgMTI4LCA2OCwgNzIsIDY1LCAxMjgsIDY4LCA2OSwgOTAsIDIwMCwgCiAgICAgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMywgNjgsIDY5LCA4OSwgODQsIDY5LCA4MiwgNzksIDIxMSwgNjgsIDY5LCAKICAgICA4OCwgNzMsIDY1LCAxMjgsIDY4LCA2OSwgODYsIDczLCA2NywgMTk3LCA2OCwgNjksIDg2LCA2OSwgNzYsIDc5LCA4MCwgNzcsIAogICAgIDY5LCA3OCwgODQsIDEyOCwgNjgsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIDY4LCA2OSwgODMsIDIwMywgNjgsIDY5LCA4MywgCkBAIC0zODc5LDE2MSArNDA0MCwxNjQgQEAKICAgICA2OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjgsIDY1LCA4OCwgMTI4LCA2OCwgNjgsIDY1LCA4NCwgCiAgICAgMTI4LCA2OCwgNjgsIDY1LCA4MCwgMTI4LCA2OCwgNjgsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCAyMDQsIDY4LCA2OCwgCiAgICAgNjUsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDY4LCA2NSwgNzIsIDY1LCAyMDQsIDY4LCA2OCwgNjUsIDY1LCAxMjgsIDY4LCAKLSAgICAxOTQsIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODYsIAotICAgIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgMTk3LCA2OCwgCi0gICAgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIAotICAgIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgCi0gICAgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCAKLSAgICA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIAotICAgIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgCi0gICAgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCAKLSAgICA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIAotICAgIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgCi0gICAgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCAKLSAgICA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgCi0gICAgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDY1LCAKLSAgICA3NiwgNjksIDg0LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCAyMTIsIDY4LCA2NSwgNzYsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAotICAgIDc2LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY1LCA4NCwgMjAwLCA2OCwgNjUsIDc2LCA2NSwgODQsIDEyOCwgCi0gICAgNjgsIDY1LCA3MywgODIsIDEyOCwgNjgsIDY1LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCAKLSAgICA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIAotICAgIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCA3MiwgMTI4LCA2OCwgCi0gICAgNjUsIDcxLCA2OSwgODMsIDIwMCwgNjgsIDY1LCA3MSwgNjYsIDY1LCA4MywgNzMsIDc4LCA3OCwgNjUsIDEyOCwgNjgsIDY1LCAKLSAgICA3MSwgNjUsIDIxOCwgNjgsIDY1LCA3MSwgNjUsIDc2LCA3MSwgNjUsIDEyOCwgNjgsIDY1LCAxOTksIDY4LCA2NSwgNjksIAotICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDY5LCAxOTksIDY4LCA2NSwgNjgsIDEyOCwgNjgsIDY1LCAxOTYsIDY4LCA2NSwgNjUsIAotICAgIDgzLCA4NSwgMTI4LCA2OCwgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MiwgMTI4LCA2OCwgCi0gICAgNDgsIDU0LCA1NSwgNzEsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcwLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2OSwgMTI4LCAKLSAgICA2OCwgNDgsIDU0LCA1NSwgNjgsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY3LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NiwgCi0gICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDEyOCwgNjgsIDQ4LCA1NCwgNTQsIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTMsIDEyOCwgNjgsIDQ4LCA1NCwgNTIsIDEyOCwgNjgsIDQ4LCA1NCwgNTEsIDEyOCwgNjgsIDQ4LCAKLSAgICA1NCwgNTAsIDEyOCwgNjgsIDQ4LCA1NCwgNDksIDEyOCwgNjgsIDQ4LCA1NCwgNDgsIDEyOCwgNjgsIDQ4LCA1MywgNTcsIAotICAgIDEyOCwgNjgsIDQ4LCA1MywgNTYsIDEyOCwgNjgsIDQ4LCA1MywgNTUsIDEyOCwgNjgsIDQ4LCA1MywgNTQsIDEyOCwgNjgsIAotICAgIDQ4LCA1MywgNTMsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUyLCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDUxLCAxMjgsIDY4LCA0OCwgNTMsIDUwLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzMsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcyLCAxMjgsIDY4LCA0OCwgNTMsIAotICAgIDQ4LCA3MSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzAsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTMsIDQ4LCA2OCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjcsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY2LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDQ4LCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgMTI4LCA2OCwgNDgsIDUyLCA1NywgMTI4LCA2OCwgNDgsIAotICAgIDUyLCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA1MiwgNTYsIDEyOCwgNjgsIDQ4LCA1MiwgNTUsIDEyOCwgNjgsIDQ4LCA1MiwgCi0gICAgNTQsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU0LCAxMjgsIDY4LCA0OCwgNTIsIDUzLCAxMjgsIDY4LCA0OCwgNTIsIDUyLCAKLSAgICAxMjgsIDY4LCA0OCwgNTIsIDUxLCAxMjgsIDY4LCA0OCwgNTIsIDUwLCAxMjgsIDY4LCA0OCwgNTIsIDQ5LCAxMjgsIDY4LCAKLSAgICA0OCwgNTIsIDQ4LCAxMjgsIDY4LCA0OCwgNTEsIDU3LCAxMjgsIDY4LCA0OCwgNTEsIDU2LCAxMjgsIDY4LCA0OCwgNTEsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTEsIDU0LCAxMjgsIDY4LCA0OCwgNTEsIDUzLCAxMjgsIDY4LCA0OCwgNTEsIDUyLCA2NSwgCi0gICAgMTI4LCA2OCwgNDgsIDUxLCA1MiwgMTI4LCA2OCwgNDgsIDUxLCA1MSwgMTI4LCA2OCwgNDgsIDUxLCA1MCwgMTI4LCA2OCwgCi0gICAgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNjgsIDQ4LCA1MSwgNDksIDEyOCwgNjgsIDQ4LCA1MSwgNDgsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MCwgNTcsIDEyOCwgNjgsIDQ4LCA1MCwgNTYsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTAsIAotICAgIDU1LCAxMjgsIDY4LCA0OCwgNTAsIDU0LCAxMjgsIDY4LCA0OCwgNTAsIDUzLCAxMjgsIDY4LCA0OCwgNTAsIDUyLCAxMjgsIAotICAgIDY4LCA0OCwgNTAsIDUxLCAxMjgsIDY4LCA0OCwgNTAsIDUwLCAxMjgsIDY4LCA0OCwgNTAsIDQ5LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY4LCA0OCwgNDksIDU3LCAxMjgsIDY4LCA0OCwgNDksIDU2LCAxMjgsIDY4LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDY4LCA0OCwgNDksIDU0LCAxMjgsIDY4LCA0OCwgNDksIDUzLCAxMjgsIDY4LCA0OCwgNDksIDUyLCAxMjgsIDY4LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY4LCA0OCwgNDksIDUwLCAxMjgsIDY4LCA0OCwgNDksIDQ5LCAxMjgsIDY4LCA0OCwgNDksIAotICAgIDQ4LCAxMjgsIDY4LCA0OCwgNDgsIDU3LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgCi0gICAgMTI4LCA2OCwgNDgsIDQ4LCA1NSwgMTI4LCA2OCwgNDgsIDQ4LCA1NCwgMTI4LCA2OCwgNDgsIDQ4LCA1MywgMTI4LCA2OCwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA2OCwgNDgsIDQ4LCA1MSwgMTI4LCA2OCwgNDgsIDQ4LCA1MCwgMTI4LCA2OCwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA2NywgODksIDg4LCAxMjgsIDY3LCA4OSwgODQsIDEyOCwgNjcsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDg5LCAKLSAgICA4MiwgNjksIDc4LCA2NSwgNzMsIDE5NSwgNjcsIDg5LCA4MiwgMTI4LCA2NywgODksIDgwLCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA4OSwgODAsIDY5LCA4MiwgODUsIDgzLCAxMjgsIDY3LCA4OSwgODAsIDEyOCwgNjcsIDg5LCA3NiwgNzMsIDc4LCA2OCwgCi0gICAgODIsIDczLCA2NywgNzMsIDg0LCA4OSwgMTI4LCA2NywgODksIDY3LCA3NiwgNzksIDc4LCA2OSwgMTI4LCA2NywgODksIDY1LCAKLSAgICAxMjgsIDY3LCA4OSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAKLSAgICAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCAKLSAgICA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIAotICAgIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgCi0gICAgMTI4LCA2NywgODUsIDgyLCA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCAKLSAgICA2OSwgMTk2LCA2NywgODUsIDgyLCA4NiwgNjksIDEyOCwgNjcsIDg1LCA4MiwgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIAotICAgIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgCi0gICAgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgCi0gICAgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgCi0gICAgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCAKLSAgICA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MiwgODksIAotICAgIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgCi0gICAgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCAKLSAgICA2NiwgNzYsIDY5LCA0NSwgNTMsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTIsIDEyOCwgNjcsIAotICAgIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCA0NSwgNTEsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAKLSAgICA0NSwgNTAsIDEyOCwgNjcsIDgyLCA4NSwgNjcsIDczLCA2NiwgNzYsIDY5LCAxMjgsIDY3LCA4MiwgNzksIDg3LCA3OCwgCi0gICAgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjcsIDgyLCA3OSwgODMsIDgzLCA3MiwgNjUsIDg0LCA2NywgMjAwLCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgCi0gICAgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDE5NiwgNjcsIDgyLCA3OSwgODMsIDgzLCAKLSAgICA2NiwgNzksIDc4LCA2OSwgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCAyMTEsIAotICAgIDY3LCA4MiwgNzksIDgwLCAxMjgsIDY3LCA4MiwgNzksIDczLCA4OCwgMTI4LCA2NywgODIsIDc5LCA2NywgODUsIDIxMSwgCi0gICAgNjcsIDgyLCA3OSwgNjcsIDc5LCA2OCwgNzMsIDc2LCA2OSwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIAotICAgIDEyOCwgNjcsIDgyLCA2OSwgODMsIDY3LCA2OSwgNzgsIDIxMiwgNjcsIDgyLCA2OSwgNjgsIDczLCAyMTIsIDY3LCA4MiwgCi0gICAgNjksIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA4MiwgNjksIDY1LCA3NywgMTI4LCA2NywgODIsIDY1LCA2NywgNzUsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCAKLSAgICA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIAotICAgIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCAKLSAgICA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIAotICAgIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgCi0gICAgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgCi0gICAgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIAotICAgIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgCi0gICAgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAKLSAgICAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIAotICAgIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAKLSAgICA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIAotICAgIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCAKLSAgICA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCAKLSAgICA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCAKLSAgICA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIAotICAgIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDY5LCA2NywgCi0gICAgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCAKLSAgICA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAyMTIsIDY3LCA3OSwgCi0gICAgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNzksIAotICAgIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgCi0gICAgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCAKLSAgICA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3NywgODAsIAotICAgIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA3NywgNjksIAotICAgIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgNzksIDIwNiwgCi0gICAgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCAKLSAgICA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIAotICAgIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgCi0gICAgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgCi0gICAgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAKLSAgICAyMDQsIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc5LCAxMjgsIDY3LCAKLSAgICA3NywgMTI4LCA2NywgMjA1LCA2NywgNzYsIDg1LCA4MywgODQsIDY5LCAyMTAsIDY3LCA3NiwgODUsIDY2LCA4MywgMTI4LCAKLSAgICA2NywgNzYsIDg1LCA2NiwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NywgNzYsIDg1LCA2NiwgMTI4LCA2NywgNzYsIAotICAgIDg1LCAxOTQsIDY3LCA3NiwgNzksIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDY4LCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDg1LCAxOTYsIDY3LCA3NiwgNzksIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY3LCA3NiwgNzksIDg0LCA3MiwgMTI4LCAKLSAgICA2NywgNzYsIDc5LCA4MywgNjksIDg0LCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgNzgsIDY5LCA4MywgODMsIDEyOCwgNjcsIAotICAgIDc2LCA3OSwgODMsIDY5LCA2OCwgMTI4LCA2NywgNzYsIDc5LCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDIwMywgNjcsIDc2LCA3MywgODYsIDczLCA4MywgMTI4LCA2NywgNzYsIDczLCAKLSAgICA4MCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA3NiwgNzMsIDc4LCA3NSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIAotICAgIDc4LCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNzMsIDc3LCA2NSwgNjcsIDg1LCA4MywgMTI4LCA2NywgNzYsIDczLCA3MCwgCi0gICAgNzAsIDEyOCwgNjcsIDc2LCA3MywgNjcsIDc1LCAxMjgsIDY3LCA3NiwgNjksIDcwLCA0NSwgNTAsIDEyOCwgNjcsIDc2LCAKLSAgICA2OSwgNzAsIDQ1LCA0OSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgMTI4LCA2NywgNzYsIDY5LCAxOTgsIDY3LCA3NiwgNjksIAotICAgIDY1LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNjksIDY1LCAyMTAsIDY3LCA3NiwgNjUsIDg3LCAxMjgsIDY3LCA3NiwgCi0gICAgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIDIxMCwgNjcsIDc2LCA2NSwgNzgsIAotICAgIDEyOCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgODYsIAotICAgIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDE5NywgNjcsIDczLCA4NCwgCi0gICAgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgODgsIAotICAgIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA4MywgMTI4LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAKLSAgICAxMjgsIDY3LCA3MywgODAsIDEyOCwgNjcsIDczLCA3OCwgNzgsIDY1LCA2NiwgNjUsIDgyLCAxMjgsIDY3LCA3MywgNzgsIAotICAgIDY5LCA3NywgNjUsIDEyOCwgNjcsIDczLCA3MywgMTI4LCA2NywgNzMsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgCi0gICAgNjcsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIAotICAgIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCA0NSwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICAxMjgsIDY3LCA3MywgNjksIDg1LCAxOTUsIDY3LCA3MywgNjksIDg0LCAxMjgsIDY3LCA3MywgNjksIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNjksIDEyOCwgNjcsIDczLCAxMjgsIDY3LCA3MiwgODksIDg4LCAxMjgsIDY3LCA3MiwgODksIDg0LCAxMjgsIDY3LCAKLSAgICA3MiwgODksIDgyLCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4MiwgMTI4LCA2NywgNzIsIDg5LCA4MCwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA4OCwgMTI4LCA2NywgNzIsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDY3LCA3MiwgMTI4LCA2NywgCi0gICAgNzIsIDg1LCA4MiwgMTI4LCA2NywgNzIsIDg1LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDcyLCAKLSAgICA4NSwgNzksIDg0LCAxMjgsIDY3LCA3MiwgODUsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgMTI4LCA2NywgNzIsIAotICAgIDg1LCA3NiwgNjUsIDEyOCwgNjcsIDcyLCA4NSwgMTI4LCA2NywgNzIsIDgyLCA4OSwgODMsIDY1LCA3OCwgODQsIDcyLCA2OSwgCi0gICAgNzcsIDg1LCA3NywgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCA4NSwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzgsIDc5LCAKLSAgICA3OCwgMTI4LCA2NywgNzIsIDgyLCA3OSwgNzcsIDE5MywgNjcsIDcyLCA4MiwgNzksIDE5MywgNjcsIDcyLCA4MiwgNzMsIAotICAgIDg2LCA3MywgMTI4LCA2NywgNzIsIDgyLCA3MywgODMsIDg0LCA3NywgNjUsIDgzLCAxMjgsIDY3LCA3MiwgODIsIDczLCA4MywgCi0gICAgODQsIDc3LCA2NSwgMjExLCA2NywgNzIsIDc5LCA4OCwgMTI4LCA2NywgNzIsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDc5LCAKLSAgICA4MiwgNjksIDg2LCA3NywgMTkzLCA2NywgNzIsIDc5LCA4MCwgMTI4LCA2NywgNzIsIDc5LCA3NSwgNjksIDEyOCwgNjcsIAotICAgIDcyLCA3OSwgNjksIDEyOCwgNjcsIDcyLCA3OSwgNjcsIDc5LCA3NiwgNjUsIDg0LCAxOTcsIDY3LCA3MiwgNzksIDY1LCAKKyAgICA2NywgODMsIDEyOCwgNjgsIDY3LCA1MiwgMTI4LCA2OCwgNjcsIDUxLCAxMjgsIDY4LCA2NywgNTAsIDEyOCwgNjgsIDY3LCAKKyAgICA0OSwgMTI4LCA2OCwgMTk0LCA2OCwgNjUsIDg5LCA0NSwgNzgsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY4LCA2NSwgMjE3LCAKKyAgICA2OCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjgsIDY1LCA4NiwgNzMsIDY4LCAxMjgsIDY4LCA2NSwgODQsIAorICAgIDE5NywgNjgsIDY1LCA4MywgNzMsIDY1LCAxMjgsIDY4LCA2NSwgODMsIDczLCAxOTMsIDY4LCA2NSwgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2OCwgNjUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDgzLCAyMDAsIDY4LCA2NSwgODMsIDY5LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY1LCA4MiwgODQsIDEyOCwgNjgsIDY1LCA4MiwgNzUsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDgyLCAKKyAgICA3NSwgNjksIDc4LCA3MywgNzgsIDE5OSwgNjgsIDY1LCA4MiwgMjAzLCA2OCwgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjgsIAorICAgIDY1LCA4MiwgNjUsIDUyLCAxMjgsIDY4LCA2NSwgODIsIDY1LCA1MSwgMTI4LCA2OCwgNjUsIDgyLCAxMjgsIDY4LCA2NSwgCisgICAgODAsIDQ1LCA4MCwgODIsIDY1LCAyMDUsIDY4LCA2NSwgODAsIDQ1LCA4MCwgNzMsIDIwMSwgNjgsIDY1LCA4MCwgNDUsIDc3LCAKKyAgICA4NSwgNzksIDIxNywgNjgsIDY1LCA4MCwgNDUsIDY2LCA4NSwgNzksIDIwNiwgNjgsIDY1LCA4MCwgNDUsIDY2LCA2OSwgCisgICAgMjAxLCA2OCwgNjUsIDIwOCwgNjgsIDY1LCA3OCwgODQsIDY1LCA3NCwgMTkzLCA2OCwgNjUsIDc4LCA3MSwgNzksIDEyOCwgCisgICAgNjgsIDY1LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA3OCwgMTk5LCA2OCwgNjUsIDc4LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCAKKyAgICA3OCwgNjcsIDY5LCA4MiwgMTI4LCA2OCwgNjUsIDc3LCA4MCwgMTI4LCA2OCwgNjUsIDc3LCAyMDgsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgODQsIDY1LCA3OCwgMTI4LCA2OCwgNjUsIDc3LCA3NywgNjUsIDg0LCA2NSwgMjA2LCA2OCwgNjUsIDc3LCA3NywgCisgICAgNjUsIDEyOCwgNjgsIDY1LCA3NywgNzcsIDE5MywgNjgsIDY1LCA3NywgNjUsIDgyLCA4NSwgMTI4LCA2OCwgNjUsIDc2LCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIAorICAgIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgCisgICAgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCAKKyAgICA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCA0NSwgNTAsIDEyOCwgNjgsIDY1LCA3MiwgODksIDY1LCA2NSwgCisgICAgODUsIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDcxLCA4MywgMTI4LCA2OCwgNjUsIDcxLCA3MSwgNjksIDgyLCAxMjgsIDY4LCAKKyAgICA2NSwgNzEsIDcxLCA2OSwgMjEwLCA2OCwgNjUsIDcxLCA2OSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDY5LCA4MywgCisgICAgMjAwLCA2OCwgNjUsIDcxLCA2NiwgNjUsIDgzLCA3MywgNzgsIDc4LCA2NSwgMTI4LCA2OCwgNjUsIDcxLCA2NSwgMjE4LCAKKyAgICA2OCwgNjUsIDcxLCA2NSwgNzYsIDcxLCA2NSwgMTI4LCA2OCwgNjUsIDE5OSwgNjgsIDY1LCA2OSwgNzgsIDcxLCAxMjgsIAorICAgIDY4LCA2NSwgNjksIDE5OSwgNjgsIDY1LCA2OCwgMTI4LCA2OCwgNjUsIDE5NiwgNjgsIDY1LCA2NSwgODMsIDg1LCAxMjgsIAorICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKKyAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAorICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKKyAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAorICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCisgICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKKyAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAorICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCisgICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg5LCAKKyAgICAxMjgsIDY3LCA4NywgNzksIDc5LCAxMjgsIDY3LCA4NywgNzksIDEyOCwgNjcsIDg3LCA3MywgNzMsIDEyOCwgNjcsIDg3LCAKKyAgICA3MywgMTI4LCA2NywgODcsIDY5LCA3OSwgODIsIDg0LCA3MiwgMTI4LCA2NywgODcsIDY5LCAxMjgsIDY3LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDY3LCA4NSwgODgsIDEyOCwgNjcsIDg1LCA4NSwgMTI4LCA2NywgODUsIDIxMiwgNjcsIDg1LCA4MywgODQsIAorICAgIDc5LCA3NywgODMsIDEyOCwgNjcsIDg1LCA4MywgODQsIDc5LCA3NywgNjksIDIxMCwgNjcsIDg1LCA4MywgODQsIDY1LCA4MiwgCisgICAgNjgsIDEyOCwgNjcsIDg1LCA4MiwgODgsIDEyOCwgNjcsIDg1LCA4MiwgODYsIDczLCA3OCwgMTk5LCA2NywgODUsIDgyLCAKKyAgICA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIAorICAgIDgzLCA3MywgODYsIDE5NywgNjcsIDg1LCA4MiwgODIsIDIxNywgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjcsIDg1LCA4MiwgODIsIDY5LCA3OCwgMjEyLCA2NywgODUsIDgyLCA3NiwgMjE3LCA2NywgODUsIDgyLCA3NiwgMTI4LCAKKyAgICA2NywgODUsIDgyLCAxMjgsIDY3LCA4NSwgODAsIDEyOCwgNjcsIDg1LCA3OSwgODgsIDEyOCwgNjcsIDg1LCA3OSwgODAsIAorICAgIDEyOCwgNjcsIDg1LCA3OSwgMTI4LCA2NywgODUsIDIwNSwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCA4NSwgNjYsIAorICAgIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgCisgICAgNzYsIDIwNywgNjcsIDg1LCAxMjgsIDY3LCA4MywgNzMsIDEyOCwgNjcsIDgyLCA4OSwgODMsIDg0LCA2NSwgMjA0LCA2NywgCisgICAgODIsIDg5LCA4MCwgODQsIDc5LCA3MSwgODIsIDY1LCA3NywgNzcsIDczLCAxOTUsIDY3LCA4MiwgODksIDczLCA3OCwgMTk5LCAKKyAgICA2NywgODIsIDg1LCA5MCwgNjksIDczLCA4MiwgMjA3LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgCisgICAgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCAKKyAgICA3NiwgNjksIDQ1LCA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIAorICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCAKKyAgICA2NSwgODQsIDY3LCAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIAorICAgIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgNzgsIDY5LCA4MywgMTI4LCA2NywgCisgICAgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCA3OSwgODAsIDEyOCwgNjcsIDgyLCAKKyAgICA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDY3LCA4NSwgMjExLCA2NywgODIsIDc5LCA2NywgNzksIDY4LCA3MywgNzYsIAorICAgIDY5LCAxMjgsIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgCisgICAgMjEyLCA2NywgODIsIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCAKKyAgICA2OSwgNjUsIDc3LCAxMjgsIDY3LCA4MiwgNjUsIDY3LCA3NSwgNjksIDgyLCAxMjgsIDY3LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDg4LCAxMjgsIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIAorICAgIDg1LCA4MCwgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgCisgICAgODIsIDgzLCA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCAKKyAgICA2NywgNzksIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgODIsIDY5LCA4MywgODAsIAorICAgIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCA4MiwgODAsIDgzLCA2OSwgCisgICAgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA4MiwgNzksIDc4LCAKKyAgICA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgCisgICAgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKKyAgICA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIAorICAgIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgCisgICAgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIAorICAgIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgCisgICAgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIAorICAgIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAKKyAgICAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCAKKyAgICA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIAorICAgIDg1LCA2NywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgODQsIDEyOCwgNjcsIDc5LCA3OCwgCisgICAgODMsIDg0LCA2NSwgNzgsIDIxMiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDY3LCA4OSwgMTI4LCA2NywgNzksIDc4LCAKKyAgICA4MywgNjksIDY3LCA4NSwgODQsIDczLCA4NiwgMTk3LCA2NywgNzksIDc4LCA3NCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgCisgICAgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDg1LCA3MSwgNjUsIDg0LCAxOTcsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDc5LCA3OCwgNzMsIDY3LCA2NSwgMjA0LCA2NywgNzksIDc4LCA3MSwgODIsIDg1LCA2OSwgNzgsIAorICAgIDIxMiwgNjcsIDc5LCA3OCwgNzEsIDgyLCA2NSwgODQsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzgsIDcwLCA4NSwgODMsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDcwLCA3OSwgODUsIDc4LCA2OCwgNjksIDE5NiwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDc2LCA3MywgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDcwLCA2OSwgODQsIDg0LCAyMDEsIDY3LCA3OSwgNzgsIAorICAgIDY3LCA2NSwgODYsIDY5LCA0NSwgODMsIDczLCA2OCwgNjksIDE5NiwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCAKKyAgICA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDg1LCA4NCwgNjksIAorICAgIDgyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgCisgICAgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc3LCA4MCwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCAKKyAgICA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIDY5LCA4NCwgCisgICAgNjksIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA2NSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA3OSwgMjA2LCA2NywgNzksIDc3LCA3NywgNjksIDgyLCA2NywgNzMsIAorICAgIDY1LCAyMDQsIDY3LCA3OSwgNzcsIDc3LCA2NSwgNzgsIDY4LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCA2NSwgMTI4LCA2NywgCisgICAgNzksIDc3LCA3NywgMTkzLCA2NywgNzksIDc3LCA2OSwgODQsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCAKKyAgICA3NiwgODUsIDc3LCA3OCwgMTI4LCA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3OSwgNzYsIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgCisgICAgMTI4LCA2NywgNzksIDY5LCA3OCwgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgCisgICAgNjcsIDc5LCA2NywgNzUsIDg0LCA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCAKKyAgICA2NSwgMTI4LCA2NywgNzksIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgCisgICAgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCAKKyAgICA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIAorICAgIDc5LCA4NSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDc2LCA3OSwgODQsIDcyLCAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCAKKyAgICA3OCwgNjksIDgzLCA4MywgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIAorICAgIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgCisgICAgNzMsIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIAorICAgIDgzLCAxMjgsIDY3LCA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgCisgICAgNzAsIDQ1LCA1MCwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCAKKyAgICA3NiwgNjksIDE5OCwgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIAorICAgIDc2LCA2NSwgODcsIDEyOCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgCisgICAgMjEwLCA2NywgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgCisgICAgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCAKKyAgICA4MCwgMTk3LCA2NywgNzMsIDg0LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgMjExLCA2NywgNzMsIDgyLCA2NywgODUsIAorICAgIDc3LCA3MCwgNzYsIDY5LCA4OCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDc3LCA3MCwgNzYsIDY5LCAyMTYsIDY3LCA3MywgCisgICAgODIsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCAKKyAgICA3MywgODIsIDY3LCA3NiwgNjksIDEyOCwgNjcsIDczLCA4MCwgMTI4LCA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIAorICAgIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIDczLCAxMjgsIDY3LCA3MywgNjksIDg4LCAxMjgsIAorICAgIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCAKKyAgICA3MywgNjksIDg1LCA2NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MywgCisgICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjcsIDczLCA2OSwgODUsIDE5NSwgNjcsIDczLCA2OSwgODQsIDEyOCwgNjcsIDczLCAKKyAgICA2OSwgODAsIDEyOCwgNjcsIDczLCA2OSwgMTI4LCA2NywgNzIsIDg5LCA4OCwgMTI4LCA2NywgNzIsIDg5LCA4NCwgMTI4LCAKKyAgICA2NywgNzIsIDg5LCA4MiwgODgsIDEyOCwgNjcsIDcyLCA4OSwgODIsIDEyOCwgNjcsIDcyLCA4OSwgODAsIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgODgsIDEyOCwgNjcsIDcyLCA4NSwgODIsIDg4LCAxMjgsIDY3LCA3MiwgODUsIDgyLCA2NywgNzIsIDEyOCwgCisgICAgNjcsIDcyLCA4NSwgODIsIDEyOCwgNjcsIDcyLCA4NSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDg4LCAxMjgsIDY3LCAKKyAgICA3MiwgODUsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNjcsIDcyLCA4NSwgNzksIDEyOCwgNjcsIAorICAgIDcyLCA4NSwgNzYsIDY1LCAxMjgsIDY3LCA3MiwgODUsIDEyOCwgNjcsIDcyLCA4MiwgODksIDgzLCA2NSwgNzgsIDg0LCA3MiwgCisgICAgNjksIDc3LCA4NSwgNzcsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc4LCAKKyAgICA3OSwgNzgsIDEyOCwgNjcsIDcyLCA4MiwgNzksIDc3LCAxOTMsIDY3LCA3MiwgODIsIDc5LCAxOTMsIDY3LCA3MiwgODIsIAorICAgIDczLCA4NiwgNzMsIDEyOCwgNjcsIDcyLCA4MiwgNzMsIDgzLCA4NCwgNzcsIDY1LCA4MywgMTI4LCA2NywgNzIsIDgyLCA3MywgCisgICAgODMsIDg0LCA3NywgNjUsIDIxMSwgNjcsIDcyLCA3OSwgODgsIDEyOCwgNjcsIDcyLCA3OSwgODQsIDEyOCwgNjcsIDcyLCAKKyAgICA3OSwgODIsIDY5LCA4NiwgNzcsIDE5MywgNjcsIDcyLCA3OSwgODAsIDEyOCwgNjcsIDcyLCA3OSwgNzUsIDY5LCAxMjgsIAorICAgIDY3LCA3MiwgNzksIDY5LCAxMjgsIDY3LCA3MiwgNzksIDY3LCA3OSwgNzYsIDY1LCA4NCwgMTk3LCA2NywgNzIsIDc5LCA2NSwgCiAgICAgMTI4LCA2NywgNzIsIDIwNywgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCAKICAgICA3MywgNzksIDgzLCAxMjgsIDY3LCA3MiwgNzMsIDg0LCA4NSwgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgCiAgICAgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDcyLCA3MywgODQsIDg1LCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCAKQEAgLTQwNTEsOTA3NSArNDIxNSw5NjA4IEBACiAgICAgMjExLCA2NywgNzIsIDY5LCA4MiwgODIsIDIxNywgNjcsIDcyLCA2OSwgODIsIDgyLCA3MywgNjksIDgzLCAxMjgsIDY3LCAKICAgICA3MiwgNjksIDgxLCA4NSwgNjksIDgyLCA2OSwgMTk2LCA2NywgNzIsIDY5LCA4MCwgMTI4LCA2NywgNzIsIDY5LCAyMDYsIAogICAgIDY3LCA3MiwgNjksIDczLCA3OCwgNjUsIDgwLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIDY5LCA3MywgMTI4LCA2NywgCi0gICAgNzIsIDY5LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNzIsIDY5LCA2NywgNzUsIAotICAgIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgNjUsIAotICAgIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIDY1LCAKLSAgICA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIAotICAgIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgCi0gICAgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAKLSAgICAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgCi0gICAgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAKLSAgICAxMjgsIDY3LCA2OSwgODgsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDgzLCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NywgNzksIAotICAgIDc4LCA4OSwgMTI4LCA2NywgNjksIDgyLCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA4MiwgNDUsIDg3LCA2NSwgMTI4LCA2NywgCi0gICAgNjksIDgwLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIAotICAgIDcxLCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3NywgODMsIDczLCA3OSwgODMsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAotICAgIDc3LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA2NywgNjksIDc4LCA4NCwgODUsIDgyLCA3MywgNjUsIDIwNCwgNjcsIAotICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCAxOTYsIDY3LCA2OSwgCi0gICAgNzgsIDg0LCA4MiwgNjksIDEyOCwgNjcsIDY5LCA3OCwgODQsIDgyLCAxOTcsIDY3LCA2OSwgNzgsIDEyOCwgNjcsIDY5LCAKLSAgICA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDY5LCAKLSAgICAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY3LCA2OSwgNjgsIDczLCA3NiwgNzYsIDE5MywgNjcsIAotICAgIDY5LCA2OCwgMjAxLCA2NywgNjksIDY3LCA2OSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDc1LCAxMjgsIDY3LCA2OSwgCi0gICAgNjcsIDY1LCAyMDMsIDY3LCA2OSwgNjUsIDc2LCA2NywgMTI4LCA2NywgNjcsIDg1LCAxMjgsIDY3LCA2NywgNzksIDEyOCwgCi0gICAgNjcsIDY3LCA3MywgMTI4LCA2NywgNjcsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3OSwgMTI4LCA2NywgNjcsIDcyLCAKLSAgICA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgODUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDcyLCA3MywgMTI4LCA2NywgNjcsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgMTI4LCA2NywgCi0gICAgNjcsIDcyLCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgNjksIAorICAgIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA4MiwgNzMsIDc4LCAxOTksIDY3LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA3MiwgNjksIDY3LCA3NSwgMTI4LCA2NywgNzIsIDY5LCA2NywgMjAzLCA2NywgNzIsIDE5NywgCisgICAgNjcsIDcyLCA2NSwgODgsIDEyOCwgNjcsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2NywgNzIsIDY1LCAKKyAgICA4NCwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDg0LCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDgyLCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA3MywgNzksIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA3MywgCisgICAgNzksIDIxMiwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDY1LCAKKyAgICA2NywgODQsIDY5LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMTI4LCA2NywgNzIsIDY1LCA4MCwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3OCwgNzEsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDc1LCA3OSwgMTI4LCA2NywgCisgICAgNzIsIDY1LCA3NywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzMsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIAorICAgIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgCisgICAgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCAKKyAgICA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIAorICAgIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgCisgICAgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIAorICAgIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgCisgICAgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCAKKyAgICA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIAorICAgIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgMTI4LCA2NywgCisgICAgNjksIDc2LCA4MywgNzMsIDg1LCA4MywgMTI4LCA2NywgNjksIDc2LCA2OSwgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDY5LCA3MywgODIsIDg0LCAxMjgsIDY3LCA2OSwgNzMsIDc2LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA2OSwgCisgICAgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCAKKyAgICA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIAorICAgIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgCisgICAgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgCisgICAgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCAKKyAgICA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgCiAgICAgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgCi0gICAgNjcsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY3LCA2OSwgMTI4LCA2NywgNjcsIDY1LCA2NSwgMTI4LCA2NywgNjcsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgODksIDc4LCAxMjgsIDY3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY3LCA2NSwgODgsIAotICAgIDEyOCwgNjcsIDY1LCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDg1LCA3NiwgCi0gICAgNjgsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIAotICAgIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIAotICAgIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgCi0gICAgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCAKLSAgICA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIAotICAgIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgCi0gICAgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCAKLSAgICA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAKLSAgICAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIAotICAgIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgCi0gICAgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIAotICAgIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgCi0gICAgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCAKLSAgICA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIAotICAgIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCAKLSAgICA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNjksIDgzLCA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIAotICAgIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAxOTMsIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgCi0gICAgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCAKLSAgICA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIAotICAgIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgCi0gICAgMjAxLCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCA4MiwgNjUsIAotICAgIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIDY5LCA2OSwgCi0gICAgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgNzIsIDEyOCwgCi0gICAgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgNjYsIDg1LCAKLSAgICA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgODIsIAotICAgIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA4NSwgNzksIAotICAgIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIDgwLCAyMTcsIAotICAgIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgODMsIDY5LCA4OSwgCi0gICAgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA2NiwgODUsIDc2LCAKLSAgICA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIDg1LCA3NSwgODksIAotICAgIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgNjgsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIDE5NywgNjYsIDg1LCAKLSAgICA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIAotICAgIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCA2NSwgMTczLCA2NiwgCi0gICAgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIDIwMCwgNjYsIDgyLCAKLSAgICA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgNjUsIDE5NiwgNjYsIAotICAgIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCA4MywgMjExLCA2NiwgCi0gICAgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgMTk3LCA2NiwgODIsIDczLCAKLSAgICA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCA4MywgMTI4LCA2NiwgODIsIAotICAgIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIDg2LCAxOTcsIDY2LCA4MiwgCi0gICAgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgNzEsIDcyLCAxMjgsIDY2LCAKLSAgICA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgCi0gICAgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgMjAwLCA2NiwgODIsIDY1LCAKLSAgICA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIDE5NiwgNjYsIDgyLCA2NSwgNjcsIAotICAgIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIDY2LCA3OSwgODksIDEyOCwgNjYsIAotICAgIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgNjYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDY2LCA3OSwgMjE1LCA2NiwgCi0gICAgNzksIDg1LCA4MSwgODUsIDY5LCA4NCwgMTI4LCA2NiwgNzksIDg1LCA3OCwgNjgsIDY1LCA4MiwgMjE3LCA2NiwgNzksIDg0LCAKLSAgICA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCi0gICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKLSAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgCi0gICAgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIAotICAgIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgCi0gICAgNjYsIDEyOCwgNjYsIDc5LCA3NiwgODQsIDEyOCwgNjYsIDc5LCA3NiwgMjEyLCA2NiwgNzksIDY4LCA4OSwgMTI4LCA2NiwgCi0gICAgNzksIDY1LCA4MiwgMTI4LCA2NiwgNzksIDY1LCAxMjgsIDY2LCA3NiwgODUsIDY5LCAxMjgsIDY2LCA3NiwgODUsIDE5NywgCi0gICAgNjYsIDc2LCA3OSwgODcsIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDgzLCA4MywgNzksIDc3LCAxMjgsIDY2LCAKLSAgICA3NiwgNzksIDc5LCA2OCwgMTI4LCA2NiwgNzYsIDc5LCA3OCwgMTk2LCA2NiwgNzYsIDc5LCA2NywgNzUsIDEyOCwgNjYsIAotICAgIDc2LCA2OSwgNzgsIDY4LCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgCi0gICAgNjYsIDc2LCA2NSwgNjgsIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgCi0gICAgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCAKLSAgICA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNzcsIDg1LCA4NCwgCi0gICAgMjAwLCA2NiwgNzMsIDgzLCA3NywgNzMsIDc2LCA3NiwgNjUsIDIwMCwgNjYsIDczLCA4MywgNzIsIDc5LCA4MCwgMTI4LCAKLSAgICA2NiwgNzMsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzgsIDE5OSwgNjYsIDczLCA4MywgNjUsIDcyLCAxMjgsIDY2LCA3MywgODIsIAotICAgIDg1LCAxMjgsIDY2LCA3MywgODIsIDg0LCA3MiwgNjgsIDY1LCAyMTcsIDY2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA2NiwgCi0gICAgNzMsIDgyLCA2OCwgMTI4LCA2NiwgNzMsIDc5LCA3MiwgNjUsIDkwLCA2NSwgODIsIDE5NiwgNjYsIDczLCA3OCwgNzksIDY3LCAKLSAgICA4NSwgNzYsIDY1LCAyMTAsIDY2LCA3MywgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjYsIDczLCA3OCwgNjgsIDczLCAxMjgsIAotICAgIDY2LCA3MywgNzgsIDY1LCA4MiwgMjE3LCA2NiwgNzMsIDc2LCA3NiwgNzMsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgCi0gICAgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCAKLSAgICA2NiwgNzMsIDE5OSwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIAotICAgIDczLCA2NywgODksIDY3LCA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgCi0gICAgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCA2NiwgNzMsIDY2LCAKLSAgICA3NiwgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIDcyLCA4NSwgMTI4LCAKLSAgICA2NiwgNzIsIDc5LCA3OSwgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIDcyLCA2OSwgODQsIAotICAgIDcyLCAxMjgsIDY2LCA3MiwgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgODQsIDg0LCA3MywgCi0gICAgODAsIDgyLCA3OSwgNzYsIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIDg5LCAKLSAgICA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIDY5LCA4NCwgCi0gICAgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIDY5LCA4MywgCi0gICAgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgMjEwLCAKLSAgICA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgNjYsIAotICAgIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgNjgsIDY5LCAxMjgsIDY2LCA2OSwgNzgsIDY4LCAxMjgsIDY2LCA2OSwgCi0gICAgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIDc5LCAyMTUsIDY2LCA2OSwgCi0gICAgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgNzksIDIxMCwgNjYsIDY5LCAKLSAgICA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIAotICAgIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgCi0gICAgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIAotICAgIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCAKLSAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIAotICAgIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgCi0gICAgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCAKLSAgICA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCAKLSAgICA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCAKLSAgICA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIAotICAgIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgCi0gICAgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgCi0gICAgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAKLSAgICAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgCi0gICAgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCAKLSAgICA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgCi0gICAgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCAKLSAgICA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKLSAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCi0gICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKLSAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKLSAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgCi0gICAgNzUsIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCAKLSAgICA2NiwgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIAotICAgIDczLCA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgCi0gICAgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAKLSAgICAxOTcsIDY2LCA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCAKLSAgICA3MSwgNjksIDgyLCAxMjgsIDY2LCA2NSwgNjgsIDcxLCA2OSwgMTI4LCA2NiwgNjUsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIAotICAgIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIDY1LCA2NywgCi0gICAgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDcyLCA2NSwgNzgsIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIAotICAgIDY1LCA2NywgNzUsIDEyOCwgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIAotICAgIDY2LCA2NSwgNjUsIDgyLCA2OSwgODIsIDg1LCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDU3LCAKLSAgICAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIDY2LCAKLSAgICA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgNTAsIAotICAgIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgNjYsIAotICAgIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCA1MywgCi0gICAgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAxNzYsIAotICAgIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCA1MSwgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCA1MCwgCi0gICAgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIDE4MSwgCi0gICAgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIDQ5LCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgNTAsIAotICAgIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCA1NywgCi0gICAgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCA2NiwgCi0gICAgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIDQ4LCAKLSAgICA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIDY2LCAKLSAgICA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgNTYsIAotICAgIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAxMjgsIAotICAgIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCA0OSwgCi0gICAgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCA2NiwgCi0gICAgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIDU0LCAKLSAgICA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgMTI4LCAKLSAgICA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgNTQsIAotICAgIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgNDksIAotICAgIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAxMjgsIAotICAgIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCA0OSwgCi0gICAgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCA2NiwgCi0gICAgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCA2NiwgCi0gICAgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCA2NiwgCi0gICAgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCA0OSwgCi0gICAgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCA0OSwgCi0gICAgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIDU1LCAKLSAgICAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIDY2LCAKLSAgICA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgMTgwLCAKLSAgICA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIDY2LCAKLSAgICA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgMTgxLCAKLSAgICA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgNTYsIAotICAgIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgNTUsIAotICAgIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgMTc4LCAKLSAgICA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIDY2LCAKLSAgICA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIDY2LCAKLSAgICA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIDY2LCAKLSAgICA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIDY2LCAKLSAgICA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIDQ4LCAKLSAgICA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIDQ4LCAKLSAgICA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIDQ4LCAKLSAgICA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIDUxLCAKLSAgICAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIDUyLCAKLSAgICAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIDE3NiwgCi0gICAgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCA2NiwgCi0gICAgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NiwgCi0gICAgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIDEyOCwgCi0gICAgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCA2NiwgCi0gICAgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCA0OCwgCi0gICAgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCA2NiwgCi0gICAgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIDE4MiwgCi0gICAgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIDQ4LCAKLSAgICA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIDY2LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgMTc3LCAKLSAgICA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjksIDIxMCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCAKLSAgICA2NSwgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgODYsIAotICAgIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIDY1LCAKLSAgICAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAotICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKLSAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgCi0gICAgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCAKLSAgICA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAotICAgIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgCi0gICAgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCAKLSAgICA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgCi0gICAgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCAKLSAgICA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIAotICAgIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCAKLSAgICA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgODAsIAotICAgIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIDEyOCwgCi0gICAgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgNTcsIAotICAgIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgCi0gICAgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCAKLSAgICA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIAotICAgIDgyLCA4NCwgNjUsIDY2LCAxOTcsIDY1LCA4MiwgODMsIDY5LCA3OSwgODMsIDEyOCwgNjUsIDgyLCA4MywgNjksIDc5LCAKLSAgICAyMTEsIDY1LCA4MiwgODMsIDY5LCA3OCwgNzMsIDY3LCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgODMsIDEyOCwgNjUsIAotICAgIDgyLCA4MiwgNzksIDg3LCAyMTEsIDY1LCA4MiwgODIsIDc5LCA4NywgNzIsIDY5LCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA4MiwgCi0gICAgNzksIDg3LCA3MiwgNjksIDY1LCAxOTYsIDY1LCA4MiwgODIsIDc5LCA4NywgNDUsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDY1LCAKLSAgICA4MiwgODIsIDczLCA4NiwgNjksIDEyOCwgNjUsIDgyLCA4MiwgNjUsIDg5LCAxMjgsIDY1LCA4MiwgODAsIDY5LCA3MSwgNzEsIAotICAgIDczLCA2NSwgODQsIDIwNywgNjUsIDgyLCA3OSwgODUsIDgzLCA3MywgNzgsIDE5OSwgNjUsIDgyLCA3OSwgODUsIDgyLCAKLSAgICAxOTMsIDY1LCA4MiwgNzksIDg1LCA3OCwgNjgsIDQ1LCA4MCwgODIsIDc5LCA3MCwgNzMsIDc2LCA2OSwgMTI4LCA2NSwgODIsIAotICAgIDc5LCA4NSwgNzgsIDE5NiwgNjUsIDgyLCA3NywgODksIDEyOCwgNjUsIDgyLCA3NywgNzksIDg1LCA4MiwgMTI4LCA2NSwgCi0gICAgODIsIDIwNSwgNjUsIDgyLCA3NiwgNjUsIDg1LCAxOTksIDY1LCA4MiwgNzUsIDg0LCA3MywgNzUsIDIwNywgNjUsIDgyLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA4MiwgNzUsIDY1LCA2NSwgNzgsIDg1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIAotICAgIDgyLCA2NSwgMTI4LCA2NSwgODIsIDczLCA4MywgODQsIDY5LCA4MiwgMTkzLCA2NSwgODIsIDczLCA2OSwgODMsIDEyOCwgCi0gICAgNjUsIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDY1LCA4MiwgNzEsIDc5LCA4MywgODksIDc4LCA4NCwgNzIsIAotICAgIDY5LCA4NCwgNzksIDc4LCAxMjgsIDY1LCA4MiwgNzEsIDczLCAxMjgsIDY1LCA4MiwgNjksIDgwLCA2NSwgMTI4LCA2NSwgCi0gICAgODIsIDY4LCA3MiwgNjUsIDg2LCA3MywgODMsIDY1LCA4MiwgNzEsIDY1LCAxMjgsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIAotICAgIDc5LCA3OCwgMTI4LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCA3OSwgMjA2LCA2NSwgODIsIDY3LCA3MiwgNjUsIDczLCAKLSAgICAxOTUsIDY1LCA4MiwgNjcsIDIwMCwgNjUsIDgyLCA2NywgMTI4LCA2NSwgODIsIDE5NSwgNjUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA3MywgMTk1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDY5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDg1LCAxMjgsIAotICAgIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDczLCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCA3OSwgMTI4LCA2NSwgCi0gICAgODIsIDY1LCA2OSwgNjUsIDQ1LCA2OSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA2NSwgMTI4LCA2NSwgODIsIDY1LCAKLSAgICA2OCwgMTI4LCA2NSwgODIsIDY1LCAxOTYsIDY1LCA4MiwgNjUsIDY2LCA3MywgNjcsIDQ1LCA3MywgNzgsIDY4LCA3MywgCi0gICAgMTk1LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCAKLSAgICA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgCi0gICAgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCAKLSAgICA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgCi0gICAgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCAKLSAgICA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA4MywgCi0gICAgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDgwLCAKLSAgICA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgODMsIAotICAgIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMDEsIDY1LCA4MCwgCi0gICAgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgMTkzLCA2NSwgODAsIDc2LCAKLSAgICA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIAotICAgIDIwNywgNjUsIDgwLCA2NSwgODIsIDg0LCAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc4LCA4NSwgCi0gICAgODMsIDg2LCA2NSwgODIsIDY1LCA4OSwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCAxOTMsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCA2NSwgMTI4LCA2NSwgNzgsIAotICAgIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCA2NSwgNzgsIDg0LCA3MywgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA4OSwgNDUsIDUwLCAxMjgsIDY1LCA3OCwgODQsIAotICAgIDczLCA3NywgNzksIDc4LCA4OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgMjE3LCA2NSwgNzgsIDg0LCA3MywgCi0gICAgNzcsIDc5LCA3OCwgNzMsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NywgNjUsIAotICAgIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc1LCA2OSwgNzgsIDc5LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDg0LCA3MywgNzAsIDc5LCA3OCwgNzMsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIAotICAgIDg3LCA3MywgODMsIDY5LCA0NSwgODIsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKLSAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAxOTcsIDY1LCA3OCwgODQsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3OCwgODQsIAotICAgIDY5LCA3OCwgNzgsIDE5MywgNjUsIDc4LCA4NCwgNjUsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA2NSwgCi0gICAgNzgsIDgzLCA4NSwgMjE4LCA2NSwgNzgsIDgzLCA3MiwgNjksIDEyOCwgNjUsIDc4LCA4MCwgNjksIDY1LCAxMjgsIDY1LCAKLSAgICA3OCwgMjA3LCA2NSwgNzgsIDc4LCA4NSwgNzMsIDg0LCAyMTcsIDY1LCA3OCwgNzgsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjUsIDc4LCA3OCwgNjUsIDY1LCA4NSwgMTI4LCA2NSwgNzgsIDc1LCA3MiwgMTI4LCA2NSwgNzgsIDcyLCA4NSwgCi0gICAgMTI4LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCA4MiwgMTI4LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCAKLSAgICA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAotICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCi0gICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAotICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCi0gICAgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCAKLSAgICA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIAotICAgIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAKLSAgICAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIAotICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgCi0gICAgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAKLSAgICAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIAotICAgIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgCi0gICAgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCAKLSAgICA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIAotICAgIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgCi0gICAgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCAKLSAgICA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIAotICAgIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgCi0gICAgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNjksIDc3LCAKLSAgICA2NiwgNzMsIDY3LCAxMjgsIDY1LCA3NiwgNjksIDcwLCAxMjgsIDY1LCA3NiwgNjUsIDg5LCA3MiwgNjksIDEyOCwgNjUsIAotICAgIDc2LCA2NSwgODksIDcyLCAxOTcsIDY1LCA3NiwgNjUsIDgyLCAyMDUsIDY1LCA3NiwgNjUsIDgwLCA3MiwgMTI4LCA2NSwgCi0gICAgNzYsIDQ1LCA3NiwgNjUsIDc1LCA4NSwgNzgsIDY1LCAxMjgsIDY1LCA3NSwgODQsIDczLCA2OSwgODMsIDY5LCA3NiwgODMsIAotICAgIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDc1LCA4MywgNjUsIDEyOCwgNjUsIDc1LCA3MiwgNzcsIDczLCA3NywgNzMsIDE5NSwgCi0gICAgNjUsIDc1LCA2NiwgNjUsIDIxMCwgNjUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3NSwgNjUsIDgyLCAxOTMsIDY1LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA3MywgODYsIDczLCA3NiwgNzMsIDIwMywgNjUsIDczLCA4NCwgNzksIAotICAgIDIwNiwgNjUsIDczLCA4MiwgODAsIDc2LCA2NSwgNzgsIDY5LCAxMjgsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgCi0gICAgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCAKLSAgICA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgCi0gICAgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgCi0gICAgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgCi0gICAgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCAKLSAgICA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIAotICAgIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgCi0gICAgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCAKLSAgICA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCAKLSAgICA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgCi0gICAgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgCi0gICAgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCAKLSAgICA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIAotICAgIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAKLSAgICAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIAotICAgIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKLSAgICA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIAotICAgIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgCi0gICAgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCAKLSAgICA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIAotICAgIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCAKLSAgICA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDIxMiwgNjUsIAotICAgIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCAKLSAgICA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIAotICAgIDE3OCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIAotICAgIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAotICAgIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTMsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTQsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCi0gICAgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAotICAgIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAKLSAgICAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCAKLSAgICA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIAotICAgIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIAotICAgIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgCi0gICAgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAKLSAgICAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCAKLSAgICA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA2NSwgNDgsIAotICAgIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAKLSAgICAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgMTI4LCAKLSAgICA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIDUxLCA1NCwgMTI4LCA2NSwgNDgsIAotICAgIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgMTI4LCA2NSwgNDgsIDUxLCA1MCwgCi0gICAgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCAKLSAgICA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDUsIAotICAgIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIDQ1LCA3NSwgNzIsIDg5LCA4NSwgCi0gICAgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAxOTYsIDQ1LCA2NywgNzIsIDY1LCAKLSAgICAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKKyAgICA2NywgNjcsIDcyLCAxMjgsIDY3LCA2NywgNjksIDY5LCAxMjgsIDY3LCA2NywgNjksIDEyOCwgNjcsIDY3LCA2NSwgNjUsIAorICAgIDEyOCwgNjcsIDY3LCA2NSwgMTI4LCA2NywgNjUsIDg5LCA3OCwgMTI4LCA2NywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA2NywgNjUsIDg4LCAxMjgsIDY3LCA2NSwgODYsIDY5LCAxMjgsIDY3LCA2NSwgODUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgNjcsIDY1LCA4NSwgNzYsIDY4LCA4MiwgNzksIDc4LCAxMjgsIDY3LCA2NSwgODUsIDY4LCA2NSwgMTI4LCA2NywgNjUsIDg1LCAKKyAgICAxMjgsIDY3LCA2NSwgODQsIDY1LCA4NywgNjUsIDEyOCwgNjcsIDY1LCA4NCwgMTI4LCA2NywgNjUsIDIxMiwgNjcsIDY1LCAKKyAgICA4MywgODQsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjcsIDY1LCA4MiwgMjExLCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgNjUsIDgyLCA4MCwgCisgICAgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCA2OSwgMjA0LCAKKyAgICA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIDIwMywgNjcsIAorICAgIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgMjEyLCA2NywgCisgICAgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgNjUsIDgyLCAKKyAgICAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgODAsIDg0LCAKKyAgICA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCA4MCwgNzksIAorICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDE5OSwgNjcsIDY1LCA3OCwgNjgsIDg5LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgCisgICAgMjEzLCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzgsIDY4LCA4MiwgMTkzLCA2NywgNjUsIDc4LCAKKyAgICA2NywgNjksIDgyLCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIAorICAgIDc4LCA2NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgCisgICAgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDc2LCA4OSwgNjUsIDEyOCwgNjcsIDY1LCA3NiwgODksIDE5MywgNjcsIDY1LCA3NiwgODgsIDEyOCwgNjcsIAorICAgIDY1LCA3NiwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAKKyAgICAxMjgsIDY3LCA2NSwgNzUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCAKKyAgICA3MiwgMTI4LCA2NywgNjUsIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIAorICAgIDEyOCwgNjcsIDY1LCA2OCwgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgCisgICAgODcsIDY1LCA4OSwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgNjksIDY5LCAxMjgsIDY3LCAKKyAgICA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgNDgsIDUwLCA1MiwgMTI4LCAKKyAgICA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCA0OSwgMTI4LCA2NywgNDgsIAorICAgIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCA2NywgNDgsIDQ5LCA1NSwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIDQ5LCA1MiwgMTI4LCA2NywgCisgICAgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgMTI4LCA2NywgNDgsIDQ5LCAKKyAgICA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgNjcsIDQ4LCA0OCwgNTYsIAorICAgIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCA0OCwgNTMsIDEyOCwgNjcsIAorICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDY3LCA0OCwgCisgICAgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDY3LCA0NSwgNTEsIAorICAgIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCA5MCwgNzIsIDIwMSwgNjYsIAorICAgIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIDc4LCA0NSwgODUsIDc1LCAKKyAgICA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgMTI4LCA2NiwgODcsIAorICAgIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgNzcsIDczLCA4MywgCisgICAgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgCisgICAgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAyMTEsIDY2LCAKKyAgICA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCAKKyAgICA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIAorICAgIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgCisgICAgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA2NiwgODUsIDc2LCA3NiwgNjksIDIxMiwgNjYsIDg1LCA3NiwgNzYsIDEyOCwgNjYsIDg1LCA3NiwgNjYsIDEyOCwgNjYsIAorICAgIDg1LCA3NSwgODksIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCA4MywgMTI4LCA2NiwgODUsIDczLCA3NiwgCisgICAgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDg1LCA3MiwgNzMsIDE5NiwgNjYsIDg1LCA3MSwgNzMsIDc4LCA2OSwgODMsIAorICAgIDE5NywgNjYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDcwLCA3MCwgNjUsIDc2LCA3OSwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCisgICAgNzYsIDY5LCAxMjgsIDY2LCA4MywgODQsIDY1LCA4MiwgMTI4LCA2NiwgODMsIDc1LCA4NSwgMjEwLCA2NiwgODMsIDc1LCAKKyAgICA2NSwgMTczLCA2NiwgODMsIDY4LCA4NSwgMjExLCA2NiwgODIsIDg1LCA4MywgNzIsIDEyOCwgNjYsIDgyLCA4NSwgODMsIAorICAgIDIwMCwgNjYsIDgyLCA3OSwgNzgsIDkwLCA2OSwgMTI4LCA2NiwgODIsIDc5LCA3NSwgNjksIDIwNiwgNjYsIDgyLCA3OSwgCisgICAgNjUsIDE5NiwgNjYsIDgyLCA3MywgODMsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzgsIDY5LCAKKyAgICA4MywgMjExLCA2NiwgODIsIDczLCA2OSwgNzAsIDY3LCA2NSwgODMsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDY4LCA3MSwgCisgICAgMTk3LCA2NiwgODIsIDczLCA2OCwgMTk3LCA2NiwgODIsIDczLCA2NywgNzUsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDczLCAKKyAgICA4MywgMTI4LCA2NiwgODIsIDY5LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDY2LCA4MiwgNjksIAorICAgIDg2LCAxOTcsIDY2LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA2NiwgODIsIDY5LCA2NSwgNzUsIDg0LCA3MiwgODIsIDc5LCA4NSwgCisgICAgNzEsIDcyLCAxMjgsIDY2LCA4MiwgNjksIDY1LCA2OCwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDczLCA3OCwgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgCisgICAgMjAwLCA2NiwgODIsIDY1LCA3NSwgNjcsIDY5LCA4NCwgMTI4LCA2NiwgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgNjksIAorICAgIDE5NiwgNjYsIDgyLCA2NSwgNjcsIDc1LCA2OSwgMjEyLCA2NiwgODIsIDY1LCA2NywgNjksIDEyOCwgNjYsIDgxLCAxMjgsIAorICAgIDY2LCA4MCwgNzIsIDEyOCwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIDY5LCAxMjgsIDY2LCA3OSwgCisgICAgODcsIDg0LCA3MywgMTk3LCA2NiwgNzksIDg3LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNzksIDg3LCA3NiwgMTI4LCAKKyAgICA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAxMjgsIAorICAgIDY2LCA3OSwgODUsIDc4LCA2OCwgNjUsIDgyLCAyMTcsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDQ1LCA3NiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDY5LCAxOTYsIDY2LCA3OSwgODQsIDg0LCA3OSwgNzcsIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc5LCAyMDUsIAorICAgIDY2LCA3OSwgODQsIDg0LCA3NiwgNjksIDEyOCwgNjYsIDc5LCA4NCwgODQsIDc2LCAxOTcsIDY2LCA3OSwgODQsIDIwMCwgCisgICAgNjYsIDc5LCA4MiwgODUsIDg0LCA3OSwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDQ1LCA1MSwgMTI4LCA2NiwgNzksIDgyLCAKKyAgICA2NSwgODgsIDQ1LCA1MCwgMTI4LCA2NiwgNzksIDgyLCA2NSwgODgsIDEyOCwgNjYsIDc5LCA4MCwgNzksIDc3LCA3OSwgNzAsIAorICAgIDIwNywgNjYsIDc5LCA3OSwgODQsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDg0LCAxMjgsIDY2LCA3OSwgNzksIDc3LCA2OSwgCisgICAgODIsIDY1LCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDgzLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA3NywgNjUsIDgyLCAKKyAgICA3NSwgMTI4LCA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgMjAzLCA2NiwgNzksIDc4LCA2OSwgMTI4LCA2NiwgNzksIAorICAgIDc3LCA2NiwgMTI4LCA2NiwgNzksIDc3LCAxMjgsIDY2LCA3OSwgNzYsIDg0LCAxMjgsIDY2LCA3OSwgNzYsIDIxMiwgNjYsIAorICAgIDc5LCA3MiwgNjUsIDczLCA4MiwgNzMsIDE5NSwgNjYsIDc5LCA2OCwgODksIDEyOCwgNjYsIDc5LCA2NSwgODIsIDEyOCwgCisgICAgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCAKKyAgICA3MCwgNzMsIDgzLCA3MiwgMTI4LCA2NiwgNzYsIDc5LCA4MywgODMsIDc5LCA3NywgMTI4LCA2NiwgNzYsIDc5LCA3OSwgNjgsIAorICAgIDEyOCwgNjYsIDc2LCA3OSwgNzgsIDE5NiwgNjYsIDc2LCA3OSwgNjcsIDc1LCAxMjgsIDY2LCA3NiwgNjksIDc4LCA2OCwgCisgICAgNjksIDE5NiwgNjYsIDc2LCA2NSwgNzgsIDc1LCAxMjgsIDY2LCA3NiwgNjUsIDc4LCAyMDMsIDY2LCA3NiwgNjUsIDY4LCAKKyAgICAxOTcsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNzAsIDc5LCA3OSwgMjEyLCA2NiwgNzYsIDY1LCA2NywgNzUsIDQ1LCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAKKyAgICAxOTYsIDY2LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNzUsIDY1LCAxNzMsIDY2LCA3MywgODQsIDg0LCA2OSwgODIsIAorICAgIDEyOCwgNjYsIDczLCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgCisgICAgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCAKKyAgICA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIAorICAgIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgCisgICAgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCAKKyAgICA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIAorICAgIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA2NSwgNjYsIDczLCA2NSwgCisgICAgMjA0LCA2NiwgNzMsIDc1LCA3MywgNzgsIDczLCAxMjgsIDY2LCA3MywgNzEsIDEyOCwgNjYsIDczLCAxOTksIDY2LCA3MywgCisgICAgNjksIDg0LCAxMjgsIDY2LCA3MywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY2LCA3MywgNjgsIDY1LCA3NSwgODUsIDc5LCAKKyAgICAyMDYsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDczLCA4MywgODQsIDEyOCwgNjYsIDczLCA2NywgODksIDY3LCA3NiwgNjksIAorICAgIDgzLCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDY2LCA3MywgNjcsIDY5LCA4MCwgODMsIDEyOCwgCisgICAgNjYsIDczLCA2NiwgNzYsIDY5LCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA2NiwgNzMsIDY2LCAxMjgsIDY2LCAyMDEsIDY2LCAKKyAgICA3MiwgODUsIDEyOCwgNjYsIDcyLCA3OSwgNzksIDEyOCwgNjYsIDcyLCA3OSwgMTI4LCA2NiwgNzIsIDczLCAxMjgsIDY2LCAKKyAgICA3MiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNzIsIDY5LCA2OSwgMTI4LCA2NiwgNzIsIDY5LCAxMjgsIDY2LCA3MiwgNjUsIAorICAgIDg0LCA4NCwgNzMsIDgwLCA4MiwgNzksIDc2LCAyMTMsIDY2LCA3MiwgNjUsIDc3LCAxMjgsIDY2LCA3MiwgNjUsIDY1LCAKKyAgICAxMjgsIDY2LCA3MiwgNjUsIDEyOCwgNjYsIDY5LCA4OSwgODksIDY1LCA3NiwgMTI4LCA2NiwgNjksIDg4LCAxMjgsIDY2LCAKKyAgICA2OSwgODYsIDY5LCA4MiwgNjUsIDcxLCA2OSwgMTI4LCA2NiwgNjksIDg0LCA4NywgNjksIDY5LCA3OCwgMTI4LCA2NiwgNjksIAorICAgIDg0LCA4NywgNjksIDY5LCAyMDYsIDY2LCA2OSwgODQsIDcyLCAxMjgsIDY2LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgCisgICAgODQsIDE5MywgNjYsIDY5LCAyMTIsIDY2LCA2OSwgODMsIDczLCA2OCwgMTk3LCA2NiwgNjksIDgyLCA3NSwgNjUsIDc4LCAKKyAgICA2NSwgMjA2LCA2NiwgNjksIDgyLCA2NiwgNjksIDIxMCwgNjYsIDY5LCA4MCwgMTI4LCA2NiwgNjksIDc5LCA4MiwgMTk1LCAKKyAgICA2NiwgNjksIDc4LCA5MCwgNjksIDc4LCAxOTcsIDY2LCA2OSwgNzgsIDg0LCAyMDcsIDY2LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIDIwNiwgNjYsIDY5LCA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgCisgICAgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgMTI4LCA2NiwgNjksIDc2LCAyMDQsIDY2LCA2OSwgCisgICAgNzYsIDcxLCA4NCwgNzIsIDc5LCAyMTAsIDY2LCA2OSwgNzYsIDEyOCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCAKKyAgICA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIAorICAgIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgCisgICAgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAKKyAgICAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIAorICAgIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgCisgICAgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCAKKyAgICA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIAorICAgIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIAorICAgIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgCisgICAgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCAKKyAgICA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIAorICAgIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIAorICAgIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgCisgICAgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCAKKyAgICA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIAorICAgIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIAorICAgIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgCisgICAgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCAKKyAgICA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIAorICAgIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgCisgICAgNjUsIDEyOCwgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKKyAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIAorICAgIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgCisgICAgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIAorICAgIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgCisgICAgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCAKKyAgICA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDE5NCwgNjYsIDY1LCA4MiwgNjUsIDUwLCAxMjgsIDY2LCA2NSwgMjEwLCAKKyAgICA2NiwgNjUsIDc4LCA4NCwgNzksIDY3LCAxMjgsIDY2LCA2NSwgNzgsIDc1LCA3OCwgNzksIDg0LCAxOTcsIDY2LCA2NSwgNzgsIAorICAgIDc1LCAxMjgsIDY2LCA2NSwgNzgsIDIwMywgNjYsIDY1LCA3OCwgNjgsIDEyOCwgNjYsIDY1LCA3OCwgNjUsIDc4LCA2NSwgCisgICAgMTI4LCA2NiwgNjUsIDc4LCA1MCwgMTI4LCA2NiwgNjUsIDc4LCAxNzgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDgzLCAKKyAgICAxMjgsIDY2LCA2NSwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNjYsIDY1LCA3NiwgODUsIDY4LCA2NSwgMTI4LCA2NiwgNjUsIAorICAgIDc2LCA3NiwgNzksIDIxMiwgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgCisgICAgNjYsIDY1LCA3NiwgNzYsIDc5LCA3OSwgNzgsIDEyOCwgNjYsIDY1LCA3NiwgNjUsIDcxLCAxMjgsIDY2LCA2NSwgNzYsIAorICAgIDEyOCwgNjYsIDY1LCAyMDQsIDY2LCA2NSwgNzMsIDgyLCA3NSwgNjUsIDc4LCAxMjgsIDY2LCA2NSwgNzMsIDc3LCA2NSwgCisgICAgNzMsIDEyOCwgNjYsIDY1LCA3MiwgODQsIDEyOCwgNjYsIDY1LCA3MiwgNzMsIDgyLCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAKKyAgICA2NSwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDUwLCAxMjgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIAorICAgIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIAorICAgIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgNjYsIDY1LCA2OCwgMTI4LCA2NiwgCisgICAgNjUsIDY3LCA4NCwgODIsIDczLCA2NSwgMjA2LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCAKKyAgICA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIAorICAgIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgNzIsIDY1LCA3OCwgMTk2LCA2NiwgCisgICAgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgMTI4LCA2NiwgNjUsIDY3LCAKKyAgICAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCA2NSwgODIsIDY5LCA4MiwgODUsIAorICAgIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIDUwLCA1MywgNTcsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgNTQsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgNTAsIDUzLCA1MCwgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCA1NywgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCA1MCwgNTIsIDUzLCAxMjgsIDY2LCAKKyAgICA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCA1MCwgNTIsIDE3NiwgNjYsIDUwLCAKKyAgICA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCA2NiwgNTAsIDUxLCA1MCwgMTI4LCAKKyAgICA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIDEyOCwgNjYsIDUwLCA1MCwgNTYsIAorICAgIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIDUwLCA1MCwgMTgxLCA2NiwgNTAsIAorICAgIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIDY2LCA1MCwgNDksIDU3LCAxMjgsIAorICAgIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgNDksIDU0LCAxMjgsIDY2LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAxMjgsIDY2LCA1MCwgNDksIDUwLCAKKyAgICAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCA1MCwgNDgsIDU3LCAxMjgsIDY2LCAKKyAgICA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIDU0LCAxMjgsIDY2LCA1MCwgNDgsIAorICAgIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIDY2LCA1MCwgNDgsIDUwLCAxMjgsIAorICAgIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgNTcsIDE3NywgNjYsIDQ5LCA1NywgCisgICAgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgCisgICAgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCA1NiwgNDksIDEyOCwgNjYsIDQ5LCAKKyAgICA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIAorICAgIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIDU1LCAxNzksIDY2LCA0OSwgNTUsIAorICAgIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIDY2LCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgNTQsIDU0LCAxMjgsIDY2LCA0OSwgCisgICAgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgCisgICAgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAxODUsIDY2LCA0OSwgNTMsIDU2LCAKKyAgICAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCA1MywgNTMsIDEyOCwgNjYsIDQ5LCAKKyAgICA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCAKKyAgICA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIDUyLCAxODEsIDY2LCA0OSwgNTIsIAorICAgIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIDUxLCAxODEsIDY2LCA0OSwgNTEsIAorICAgIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIDUxLCAxNzYsIDY2LCA0OSwgNTAsIAorICAgIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCAKKyAgICA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIAorICAgIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIAorICAgIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgCisgICAgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgNDksIDQ4LCAxODAsIDY2LCA0OSwgCisgICAgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgCisgICAgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgNDgsIDU2LCAxODEsIDY2LCA0OCwgCisgICAgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgCisgICAgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgCisgICAgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgNDgsIDU1LCAxNzgsIDY2LCA0OCwgCisgICAgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgCisgICAgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgCisgICAgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgNTQsIDE3NiwgNjYsIDQ4LCA1MywgCisgICAgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgNTQsIDEyOCwgNjYsIDQ4LCA1MywgCisgICAgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIAorICAgIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgMTg0LCA2NiwgNDgsIDUyLCA1NSwgCisgICAgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgMTgwLCA2NiwgNDgsIDUyLCAxNzksIAorICAgIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIDY2LCA0OCwgNTEsIDE4NSwgNjYsIAorICAgIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIAorICAgIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIAorICAgIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIDUwLCAxODIsIDY2LCA0OCwgNTAsIAorICAgIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY2LCA0OCwgNTAsIAorICAgIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIAorICAgIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIDQ5LCAxODAsIDY2LCA0OCwgNDksIAorICAgIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIAorICAgIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIDQ4LCAxODQsIDY2LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIAorICAgIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgCisgICAgODUsIDEyOCwgNjUsIDg5LCA2OSwgMjEwLCA2NSwgODksIDY2LCAxMjgsIDY1LCA4OSwgNjUsIDcyLCAxMjgsIDY1LCA4OCwgCisgICAgNjksIDEyOCwgNjUsIDg3LCA2OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCAKKyAgICA2NSwgNzEsIDE5NywgNjUsIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIAorICAgIDg2LCA2NSwgNzEsIDgyLCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgCisgICAgODQsIDg1LCA3NywgNzgsIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCAKKyAgICA4NCwgNzksIDc3LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIAorICAgIDgwLCA3MywgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCAKKyAgICA3MiwgNjUsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIAorICAgIDgyLCA2NSwgNzcsIDY1LCA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgCisgICAgODMsIDg0LCAxMjgsIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAKKyAgICAxMjgsIDY1LCA4NSwgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIAorICAgIDg0LCA4NCwgNzIsIDY1LCA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjUsIDg0LCA4NCwgNjUsIDIwMywgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgMjAwLCA2NSwgODQsIDc3LCAKKyAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCA3NiwgNjksIDg0LCA3MywgCisgICAgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIDgwLCAKKyAgICA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODMsIDkwLCAxMjgsIDY1LCA4MywgODksIDg1LCA4MiwgMTkzLCA2NSwgODMsIAorICAgIDg5LCA3NywgODAsIDg0LCA3OSwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA2NSwgODMsIDg0LCA4MiwgNzksIDc4LCAKKyAgICA3OSwgNzcsIDczLCA2NywgNjUsIDIwNCwgNjUsIDgzLCA4NCwgODIsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIAorICAgIDY1LCA4MywgODQsIDc5LCA3OCwgNzMsIDgzLCA3MiwgNjksIDE5NiwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc3LCAKKyAgICAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMjExLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzUsIAorICAgIDEyOCwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDIwMywgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDY3LCA4NSwgCisgICAgODMsIDEyOCwgNjUsIDgzLCA4MywgODksIDgyLCA3MywgNjUsIDIwNiwgNjUsIDgzLCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgODMsIDgwLCA3MywgODIsIAorICAgIDY1LCA4NCwgNjksIDE5NiwgNjUsIDgzLCA4MCwgNjksIDgyLCAxMjgsIDY1LCA4MywgNzMsIDY1LCA0NSwgNjUsIDg1LCA4MywgCisgICAgODQsIDgyLCA2NSwgNzYsIDczLCA2NSwgMTI4LCA2NSwgODMsIDcyLCA3MSwgNjUsIDY2LCAxMjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICA4MywgMTI4LCA2NSwgODMsIDcyLCA1NywgMTI4LCA2NSwgODMsIDcyLCAxNzgsIDY1LCA4MywgNjcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjUsIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY1LCA4MywgNjUsIDc2LCA1MCwgMTI4LCA2NSwgCisgICAgODIsIDg1LCA3MiwgODUsIDY1LCAxMjgsIDY1LCA4MiwgODQsIDczLCA4MywgMjEyLCA2NSwgODIsIDg0LCA3MywgNjcsIDg1LCAKKyAgICA3NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODIsIDg0LCA2NSwgNjYsIDE5NywgNjUsIDgyLCA4MywgNjksIDc5LCA4MywgCisgICAgMTI4LCA2NSwgODIsIDgzLCA2OSwgNzksIDIxMSwgNjUsIDgyLCA4MywgNjksIDc4LCA3MywgNjcsIDEyOCwgNjUsIDgyLCAKKyAgICA4MiwgNzksIDg3LCA4MywgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDIxMSwgNjUsIDgyLCA4MiwgNzksIDg3LCA3MiwgNjksIAorICAgIDY1LCA2OCwgMTI4LCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgNjUsIDE5NiwgNjUsIDgyLCA4MiwgNzksIDg3LCA0NSwgCisgICAgODQsIDY1LCA3MywgNzYsIDEyOCwgNjUsIDgyLCA4MiwgNzMsIDg2LCA2OSwgMTI4LCA2NSwgODIsIDgyLCA2NSwgODksIAorICAgIDEyOCwgNjUsIDgyLCA4MCwgNjksIDcxLCA3MSwgNzMsIDY1LCA4NCwgMjA3LCA2NSwgODIsIDc5LCA4NSwgODMsIDczLCA3OCwgCisgICAgMTk5LCA2NSwgODIsIDc5LCA4NSwgODIsIDE5MywgNjUsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDgwLCA4MiwgNzksIDcwLCAKKyAgICA3MywgNzYsIDY5LCAxMjgsIDY1LCA4MiwgNzksIDg1LCA3OCwgMTk2LCA2NSwgODIsIDc3LCA4OSwgMTI4LCA2NSwgODIsIAorICAgIDc3LCA3OSwgODUsIDgyLCAxMjgsIDY1LCA4MiwgMjA1LCA2NSwgODIsIDc2LCA2NSwgODUsIDE5OSwgNjUsIDgyLCA3NSwgCisgICAgODQsIDczLCA3NSwgMjA3LCA2NSwgODIsIDc1LCA2NSwgNjYsIDEyOCwgNjUsIDgyLCA3NSwgNjUsIDY1LCA3OCwgODUsIAorICAgIDEyOCwgNjUsIDgyLCA3MywgODMsIDg0LCA2OSwgODIsIDY1LCAxMjgsIDY1LCA4MiwgNzMsIDgzLCA4NCwgNjksIDgyLCAKKyAgICAxOTMsIDY1LCA4MiwgNzMsIDY5LCA4MywgMTI4LCA2NSwgODIsIDcxLCA3OSwgODQsIDY5LCA4MiwgNzMsIDEyOCwgNjUsIAorICAgIDgyLCA3MSwgNzksIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNjUsIDgyLCA3MSwgNzMsIDEyOCwgCisgICAgNjUsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDY1LCA4MiwgNjksIDY1LCAxMjgsIDY1LCA4MiwgNjgsIDcyLCA2NSwgODYsIDczLCAKKyAgICA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgNjUsIDgyLCA2NywgNzIsIDY1LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MiwgNjcsIAorICAgIDcyLCA2NSwgNzMsIDc5LCAyMDYsIDY1LCA4MiwgNjcsIDcyLCA2NSwgNzMsIDE5NSwgNjUsIDgyLCA2NywgMjAwLCA2NSwgCisgICAgODIsIDY3LCAxMjgsIDY1LCA4MiwgMTk1LCA2NSwgODIsIDY1LCA3NywgNjUsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY5LCAKKyAgICA2NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgODUsIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNzMsIAorICAgIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDc5LCAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY5LCAKKyAgICAxMjgsIDY1LCA4MiwgNjUsIDY5LCA2NSwgNDUsIDY1LCAxMjgsIDY1LCA4MiwgNjUsIDY4LCAxMjgsIDY1LCA4MiwgNjUsIAorICAgIDE5NiwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NywgNDUsIDczLCA3OCwgNjgsIDczLCAxOTUsIDY1LCA4MiwgNjUsIDY2LCA3MywgCisgICAgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNzcsIDY1LCAyMDYsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDY5LCAKKyAgICA2OSwgNzcsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDgyLCA3MywgODUsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDY1LCA3MCwgNzksIAorICAgIDgyLCA4NCwgNzMsIDgzLCAxMjgsIDY1LCA4MSwgODUsIDE5MywgNjUsIDgwLCA4NSwgMjA2LCA2NSwgODAsIDgyLCA3MywgCisgICAgNzYsIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCA3NiwgMjE3LCA2NSwgODAsIDgwLCAKKyAgICA4MiwgNzksIDg4LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCA2OSwgCisgICAgMjExLCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA4MCwgNzksIAorICAgIDg0LCA3MiwgNjksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA2NSwgODAsIDc5LCA4MywgCisgICAgODQsIDgyLCA3OSwgODAsIDcyLCA2OSwgMTI4LCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCA4MywgMTI4LCAKKyAgICA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAyMTEsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCisgICAgNzksIDIwMSwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4OCwgNzMsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDY4LCA2OSwgODIsIDc3LCAKKyAgICAxOTMsIDY1LCA4MCwgNzYsIDc5LCA4NSwgNzgsIDEyOCwgNjUsIDgwLCA3NiwgMjAxLCA2NSwgODAsIDIwNCwgNjUsIDgwLCAKKyAgICA3MywgNzgsIDEyOCwgNjUsIDgwLCA2OSwgODMsIDIwNywgNjUsIDgwLCA2NywgMTI4LCA2NSwgODAsIDY1LCA4MiwgODQsIAorICAgIDEyOCwgNjUsIDgwLCA2NSwgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDg5LCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgODIsIAorICAgIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKKyAgICAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAKKyAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIAorICAgIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgCisgICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAorICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKKyAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCisgICAgODMsIDE5NywgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCAKKyAgICA2NSwgNzgsIDg0LCA2NSwgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIAorICAgIDY1LCA3OCwgODMsIDcyLCA2OSwgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgCisgICAgNzgsIDg1LCA3MywgODQsIDIxNywgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCAKKyAgICA2NSwgNjUsIDg1LCAxMjgsIDY1LCA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIAorICAgIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgCisgICAgMTk2LCA2NSwgNzgsIDcxLCA4MywgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCAKKyAgICA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIAorICAgIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgCisgICAgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCAKKyAgICA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgMTI4LCA2NSwgNzcsIDgwLCA4MywgMTI4LCA2NSwgNzcsIAorICAgIDgwLCA2OSwgODIsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDY1LCA3NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgCisgICAgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDc3LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzcsIDY2LCAxOTMsIDY1LCA3NywgNjUsIDgyLCAxMjgsIDY1LCA3NywgNjUsIAorICAgIDIxMCwgNjUsIDc3LCA2NSwgNzYsIDcxLCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3NywgNjUsIDc2LCA3MSwgCisgICAgNjUsIDc3LCAxMjgsIDY1LCA3NiwgODYsIDY5LCA3OSwgNzYsIDY1LCAyMTAsIDY1LCA3NiwgODUsIDc3LCAxMjgsIDY1LCAKKyAgICA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY1LCA3NiwgODQsIDY5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA2NSwgNzYsIDg0LCA2NSwgMTI4LCAKKyAgICA2NSwgNzYsIDgwLCA3MiwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDE5MywgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgNjUsIAorICAgIDc4LCA2NSwgMTI4LCA2NSwgNzYsIDgwLCA2NSwgODAsIDgyLCA2NSwgNjUsIDc4LCAxOTMsIDY1LCA3NiwgODAsIDY1LCAKKyAgICAxMjgsIDY1LCA3NiwgNzcsIDc5LCA4MywgMjEyLCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIAorICAgIDc4LCA2NywgNjksIDEyOCwgNjUsIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgCisgICAgNzYsIDczLCA0NSwgNTAsIDEyOCwgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAKKyAgICAxOTYsIDY1LCA3NiwgNzMsIDcwLCA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIAorICAgIDIwNiwgNjUsIDc2LCA3MSwgNzMsIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIAorICAgIDc2LCA2OSwgODIsIDg0LCAxMjgsIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgCisgICAgMTI4LCA2NSwgNzYsIDY5LCA3MCwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCA3NiwgNjUsIDg5LCAKKyAgICA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA0NSwgNzYsIAorICAgIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCA3NSwgNjUsIDY2LCAKKyAgICAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIDY1LCA3NSwgNjYsIAorICAgIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgNzMsIDg5LCA2NSwgCisgICAgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAyMDYsIDY1LCAKKyAgICA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIAorICAgIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA2NSwgNzgsIDE5OSwgCisgICAgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIDg1LCA3OCwgNzEsIAorICAgIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAxMjgsIAorICAgIDY1LCA3MCwgODQsIDY5LCAyMTAsIDY1LCA3MCwgODMsIDY1LCA2NSwgODEsIDEyOCwgNjUsIDcwLCA4MiwgNzMsIDY3LCA2NSwgCisgICAgMjA2LCA2NSwgNzAsIDc5LCA4MiwgNjksIDc3LCA2OSwgNzgsIDg0LCA3MywgNzksIDc4LCA2OSwgNjgsIDEyOCwgNjUsIDcwLCAKKyAgICA3MSwgNzIsIDY1LCA3OCwgMjAxLCA2NSwgNzAsIDcwLCA4MiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjksIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDg5LCAxMjgsIDY1LCA2OSwgODMsIDY3LCA4NSwgNzYsIDY1LCA4MCwgCisgICAgNzMsIDg1LCA4MywgMTI4LCA2NSwgNjksIDgzLCA2NywgMTI4LCA2NSwgNjksIDgzLCAxMjgsIDY1LCA2OSwgODIsIDczLCAKKyAgICA2NSwgMjA0LCA2NSwgNjksIDgyLCAxMjgsIDY1LCA2OSwgNzYsIDY1LCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIAorICAgIDY1LCA2OSwgNzYsIDEyOCwgNjUsIDY5LCA3NSwgMTI4LCA2NSwgNjksIDcxLCA2OSwgNjUsIDIwNiwgNjUsIDY5LCA3MSwgCisgICAgMTI4LCA2NSwgNjksIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCA2OSwgMTI4LCA2NSwgNjksIDY4LCAKKyAgICA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDY4LCAxMjgsIDY1LCA2OSwgNjYsIDEyOCwgNjUsIAorICAgIDY4LCA4NiwgNjUsIDc4LCA4NCwgNjUsIDcxLCA2OSwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgCisgICAgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCAKKyAgICA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIAorICAgIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCAKKyAgICA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIAorICAgIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgCisgICAgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIAorICAgIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgCisgICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIAorICAgIDY3LCA2OSwgNzgsIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAKKyAgICAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIAorICAgIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgCisgICAgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY1LCAKKyAgICA4OSwgMTI4LCA2NSwgNjUsIDg3LCAxMjgsIDY1LCA2NSwgNzksIDEyOCwgNjUsIDY1LCA3NCwgMTI4LCA2NSwgNjUsIDY2LCAKKyAgICA2NSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNDksIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgCisgICAgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA1MCwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OSwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NSwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MiwgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCAKKyAgICA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ4LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjUsIDEyOCwgCisgICAgNjUsIDY1LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTMsIAorICAgIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA0OCwgNTQsIDU3LCAKKyAgICAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCAKKyAgICA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIAorICAgIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIAorICAgIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgCisgICAgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAKKyAgICAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCAKKyAgICA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgCisgICAgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAKKyAgICAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCAKKyAgICA2NSwgNDgsIDUxLCA1NywgMTI4LCA2NSwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNDgsIDUxLCA1NSwgMTI4LCA2NSwgNDgsIAorICAgIDUxLCA1NCwgMTI4LCA2NSwgNDgsIDUxLCA1MywgMTI4LCA2NSwgNDgsIDUxLCA1MiwgMTI4LCA2NSwgNDgsIDUxLCA1MSwgCisgICAgMTI4LCA2NSwgNDgsIDUxLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCAKKyAgICA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA0OCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIAorICAgIDUzLCA2NSwgMTI4LCA2NSwgNDUsIDY5LCA4NSwgMTI4LCA0NSwgODUsIDIwNSwgNDUsIDgwLCA3MiwgODIsIDg1LCAxMjgsIAorICAgIDQ1LCA3NSwgNzIsIDg5LCA4NSwgMTk2LCA0NSwgNzUsIDcyLCA4OSwgNzMsIDc2LCAxMjgsIDQ1LCA2OCwgOTAsIDg1LCAKKyAgICAxOTYsIDQ1LCA2NywgNzIsIDY1LCAyMTAsIDQ1LCA2NywgNzIsIDY1LCA3NiwgMTI4LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgbGV4aWNvbl9vZmZzZXRbXSA9IHsKLSAgICAwLCAwLCA2LCAxMCwgMTUsIDIzLCAyNywgMzQsIDM5LCA0MSwgNDQsIDUyLCA2MiwgNjgsIDgxLCA5MywgMTAyLCAxMDgsIAotICAgIDExMywgMTIxLCAxMzAsIDEzNSwgMTQwLCAxNDQsIDE1MCwgMTUzLCAxNTgsIDE2NiwgMTczLCAxODEsIDE4NiwgMTkxLCAKLSAgICAxOTQsIDIwMCwgMjA4LCAyMTUsIDIyNSwgMjMyLCAyNDEsIDI0NCwgMjQ3LCAyNTIsIDI1OCwgMjYyLCAyNzEsIDI3OCwgCi0gICAgMjg1LCAyOTAsIDI5OSwgMzA3LCAzMTMsIDMxOSwgMzI1LCAxNDEsIDMzMCwgMzMxLCAzMzcsIDM0NSwgMzUxLCAzNTcsIAotICAgIDM2NSwgMzcyLCAzNzQsIDM3NywgMzgxLCAzODgsIDM5MCwgMzk3LCA0MDIsIDQwOCwgNDEwLCA0MTcsIDQyNSwgNDI3LCAKLSAgICAzMTEsIDQzMCwgNDMyLCA0MzcsIDQ0MiwgNDQ3LCA0NTMsIDQ2MCwgNDY5LCA0NzksIDQ4NCwgNDg5LCA0OTMsIDUwNiwgCi0gICAgNTEzLCA1MTcsIDUyNiwgNTMzLCA1NDAsIDU0MywgNTQ5LCA1NTMsIDU2MywgNTcxLCA1NzksIDU4OCwgNTk2LCA2MDQsIAotICAgIDYwOSwgNjE3LCA2MjQsIDYzNCwgNjQ1LCA2NDksIDY1NCwgNjU3LCA2NjEsIDY2NSwgNjY2LCA2NzIsIDY3OCwgNjgwLCAKLSAgICA2ODMsIDY4NywgMzQ0LCA2OTAsIDY5NCwgNzAzLCA3MDYsIDcwOSwgNzE0LCA3MTgsIDcyNiwgNzI5LCA3MzUsIDc0MiwgCi0gICAgNzQ5LCA3NTgsIDc2NSwgNzc0LCA3NzksIDc4MywgNzkyLCA4MDIsIDgxMSwgODE3LCA4MjMsIDgzMCwgODM4LCA4NDYsIAotICAgIDg1NSwgODYzLCA4NjcsIDg3NSwgODgwLCA3ODEsIDUxMSwgODg5LCA4OTMsIDg5NywgOTA0LCA5MDgsIDkxNSwgNjg5LCAKLSAgICA5MTgsIDkyNiwgOTI5LCA5MzMsIDk0MCwgOTQ0LCA5NDksIDk1NywgOTYwLCAxOTIsIDk2NiwgOTcxLCA5ODEsIDk5MCwgCi0gICAgOTk3LCAxMDA0LCAxMDEyLCAxMDIwLCAxMDI2LCAxMDMwLCAxMDM1LCAxMDQwLCAxMDQ2LCAxMDUxLCAxMDU0LCAxMTEsIAotICAgIDEwNjAsIDEwNjQsIDEwNzAsIDEwNzMsIDEwODYsIDEwODksIDEwOTMsIDIyLCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAKLSAgICAxMTE0LCAxMTI0LCAxMTI2LCAxMTMyLCAxMTQyLCAxMTQ3LCAxMTU2LCAxMTY0LCAzMjgsIDExNjcsIDExNzAsIDExNzQsIAotICAgIDExNzksIDExODUsIDExOTAsIDExOTcsIDExOTksIDEyMDQsIDEyMDksIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIAotICAgIDEyNDAsIDEyNDUsIDEyNTAsIDEyNTQsIDEyNTksIDEyNjQsIDEyNjgsIDEyNzMsIDEyNzgsIDEyODMsIDEyODksIDEyOTUsIAotICAgIDEzMDEsIDEzMDYsIDEzMTAsIDEzMTUsIDEzMjAsIDEzMjUsIDEzMjksIDEzMzQsIDEzMzksIDEzNDQsIDEzNDksIDEyMDAsIAotICAgIDEyMDUsIDEyMTAsIDEyMTYsIDEyMjEsIDEzNTMsIDEyMjYsIDEzNTksIDEzNjgsIDEyMzAsIDEzNzIsIDEyMzUsIDEyNDEsIAotICAgIDEyNDYsIDEzNzYsIDEzODEsIDEzODYsIDEzOTAsIDEzOTQsIDE0MDAsIDE0MDQsIDEyNTEsIDE0MDcsIDE0MTEsIDEyNTUsIAotICAgIDE0MTcsIDEyNjAsIDE0MjEsIDE0MjUsIDEyNjUsIDE0MjksIDE0MzQsIDE0MzgsIDE0NDEsIDE0NDUsIDEyNjksIDEyNzQsIAotICAgIDE0NTAsIDEyNzksIDE0NTYsIDE0NjIsIDE0NjgsIDE0NzQsIDEyODQsIDEyOTYsIDEzMDIsIDE0NzgsIDE0ODIsIDE0ODYsIAotICAgIDE0ODksIDEzMDcsIDE0OTMsIDE0OTUsIDE1MDAsIDE1MDUsIDE1MTEsIDE1MTYsIDE1MjEsIDE1MjUsIDE1MzAsIDE1MzUsIAotICAgIDE1NDAsIDE1NDUsIDE1NTEsIDE1NTYsIDE1NjEsIDE1NjcsIDE1NzMsIDE1NzgsIDE1ODIsIDE1ODcsIDE1OTIsIDE1OTcsIAotICAgIDE2MDIsIDE2MDYsIDE2MTQsIDE2MTgsIDE2MjMsIDE2MjgsIDE2MzMsIDE2MzgsIDE2NDIsIDE2NDUsIDE2NTAsIDE2NTUsIAotICAgIDE2NjAsIDE2NjUsIDE2NzEsIDE2NzYsIDE2ODAsIDEzMTEsIDE2ODMsIDE2ODgsIDE2OTMsIDEzMTYsIDE2OTcsIDE3MDEsIAotICAgIDE3MDgsIDEzMjEsIDE3MTUsIDEzMjYsIDE3MTksIDE3MjEsIDE3MjYsIDE3MzIsIDEzMzAsIDE3MzcsIDE3NDYsIDEzMzUsIAotICAgIDE3NTEsIDE3NTcsIDEzNDAsIDE3NjIsIDE3NjcsIDE3NzAsIDE3NzUsIDE3NzksIDE3ODMsIDE3ODcsIDE3OTAsIDE3OTQsIAotICAgIDEzNDUsIDEzNTAsIDExMDAsIDE3OTksIDE4MDUsIDE4MTEsIDE4MTcsIDE4MjMsIDE4MjksIDE4MzUsIDE4NDEsIDE4NDcsIAotICAgIDE4NTIsIDE4NTgsIDE4NjQsIDE4NzAsIDE4NzYsIDE4ODIsIDE4ODgsIDE4OTQsIDE5MDAsIDE5MDYsIDE5MTEsIDE5MTYsIAotICAgIDE5MjEsIDE5MjYsIDE5MzEsIDE5MzYsIDE5NDEsIDE5NDYsIDE5NTEsIDE5NTYsIDE5NjIsIDE5NjcsIDE5NzMsIDE5NzgsIAotICAgIDE5ODQsIDE5OTAsIDE5OTUsIDIwMDEsIDIwMDcsIDIwMTMsIDIwMTksIDIwMjQsIDIwMjksIDIwMzEsIDIwMzIsIDIwMzYsIAotICAgIDIwNDAsIDIwNDUsIDIwNDksIDIwNTMsIDIwNTcsIDIwNjEsIDIwNjQsIDIwNjksIDIwNzMsIDIwNzgsIDIwODIsIDIwODYsIAotICAgIDIwOTEsIDIwOTUsIDIwOTgsIDIxMDIsIDIxMDgsIDIxMjIsIDIxMjYsIDIxMzAsIDIxMzMsIDIxMzgsIDIxNDIsIDIxNDYsIAotICAgIDIxNDksIDIxNTMsIDIxNTgsIDIxNjMsIDIxNjgsIDIxNzMsIDIxNzcsIDIxODEsIDIxODUsIDIxOTAsIDIxOTQsIDIxOTksIAotICAgIDIyMDMsIDIyMDgsIDIyMTQsIDIyMjEsIDIyMjcsIDIyMzIsIDIyMzcsIDIyNDIsIDIyNDgsIDIyNTMsIDIyNTksIDIyNjQsIAotICAgIDIyNjcsIDEyMTcsIDIyNjksIDIyNzYsIDIyODQsIDIyOTQsIDIzMDMsIDIzMTcsIDIzMjEsIDIzMjUsIDIzMzgsIDIzNDYsIAotICAgIDIzNTAsIDIzNTUsIDIzNTksIDIzNjIsIDIzNjYsIDIzNzAsIDIzNzUsIDIzODAsIDIzODUsIDIzODksIDIzOTIsIDIzOTYsIAotICAgIDI0MDMsIDI0MTAsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzIsIDI0MzgsIDI0NDMsIDI0NDYsIDE3MjMsIDI0NDgsIDI0NTQsIAotICAgIDI0NTgsIDI0NjMsIDI0NjcsIDI0NzEsIDE3MjgsIDE3MzQsIDI0NzYsIDI0ODAsIDI0ODMsIDI0ODgsIDI0OTMsIDI0OTgsIAotICAgIDI1MDMsIDI1MDcsIDI1MTQsIDI1MTksIDI1MjIsIDI1MjksIDI1MzUsIDI1MzksIDI1NDMsIDI1NDcsIDI1NTIsIDI1NTksIAotICAgIDI1NjQsIDI1NjksIDI1NzYsIDI1ODIsIDI1ODgsIDI1OTQsIDI2MDgsIDI2MjUsIDI2NDAsIDI2NTUsIDI2NjQsIDI2NjksIAotICAgIDI2NzMsIDI2NzgsIDI2ODMsIDI2ODcsIDI2OTksIDI3MDYsIDI3MTIsIDIyMTcsIDI3MTgsIDI3MjUsIDI3MzEsIDI3MzUsIAotICAgIDI3MzgsIDI3NDUsIDI3NTEsIDI3NTUsIDI3NTksIDI3NjMsIDIwNTQsIDI3NjcsIDI3NzIsIDI3NzcsIDI3ODEsIDI3ODksIAotICAgIDI3OTMsIDI3OTcsIDI4MDEsIDI4MDYsIDI4MTEsIDI4MTYsIDI4MjAsIDI4MjUsIDI4MzAsIDI4MzQsIDI4MzksIDI4NDMsIAotICAgIDI4NDYsIDI4NTAsIDI4NTQsIDI4NTksIDI4NjMsIDI4NjcsIDI4NzMsIDI4ODIsIDI4ODYsIDI4OTAsIDI4OTYsIDI5MDEsIAotICAgIDI5MDgsIDI5MTIsIDI5MjIsIDI5MjYsIDI5MzEsIDI5MzUsIDI5NDAsIDI5NDYsIDI5NTEsIDI5NTUsIDI5NTksIDI5NjMsIAotICAgIDI0MDYsIDI5NzEsIDI5NzYsIDI5ODIsIDI5ODcsIDI5OTEsIDI5OTYsIDMwMDEsIDMwMDUsIDMwMTEsIDMwMTYsIDMwMjIsIAotICAgIDMwMjYsIDMwMzIsIDMwMzcsIDMwNDIsIDMwNDcsIDMwNTIsIDMwNTcsIDMwNjIsIDMwNjcsIDMwNzIsIDMwNzcsIDMwODMsIAotICAgIDMwODgsIDEyMjcsIDgwLCAzMDk0LCAzMDk4LCAzMTAyLCAzMTA2LCAzMTExLCAzMTE1LCAzMTE5LCAzMTIzLCAzMTI3LCAKLSAgICAzMTMyLCAzMTM2LCAzMTQxLCAzMTQ1LCAzMTQ4LCAzMTUyLCAzMTU3LCAzMTYxLCAzMTY2LCAzMTcwLCAzMTc0LCAzMTc4LCAKLSAgICAzMTgzLCAzMTg3LCAzMTkwLCAzMjAzLCAzMjA3LCAzMjExLCAzMjE1LCAzMjE5LCAzMjIzLCAzMjI2LCAzMjMwLCAzMjM0LCAKLSAgICAzMjM5LCAzMjQzLCAzMjQ4LCAzMjUzLCAzMjU4LCAzMjYyLCAzMjY1LCAzMjY4LCAzMjc0LCAzMjc4LCAzMjgyLCAzMjg1LCAKLSAgICAzMjg5LCAzMjkzLCAzMjk2LCAzMzAyLCAzMzA3LCAzMzEyLCAzMzE4LCAzMzIzLCAzMzI4LCAzMzM0LCAzMzQwLCAzMzQ1LCAKLSAgICAzMzUwLCAzMzU1LCAxMDkxLCA1NDIsIDMzNjAsIDMzNjMsIDMzNjgsIDMzNzIsIDMzNzUsIDMzNzksIDMzODQsIDMzODksIAotICAgIDMzOTMsIDMzOTgsIDM0MDIsIDM0MDcsIDM0MTEsIDM0MTUsIDM0MjEsIDM0MjcsIDM0MzAsIDM0MzMsIDM0MzksIDM0NDYsIAotICAgIDM0NTMsIDM0NTksIDM0NjYsIDM0NzEsIDM0NzUsIDM0ODIsIDM0ODcsIDM0OTEsIDM1MDEsIDM1MDUsIDM1MDksIDM1MTQsIAotICAgIDM1MTksIDM1MjksIDIwNjUsIDM1MzQsIDM1MzgsIDM1NDEsIDM1NDcsIDM1NTIsIDM1NTgsIDM1NjQsIDM1NjksIDM1NzYsIAotICAgIDM1ODAsIDM1ODQsIDY1OCwgNjg4LCAzNTg4LCAzNTk1LCAzNjAyLCAzNjA5LCAzNjE1LCAzNjIxLCAzNjI2LCAzNjMwLCAKLSAgICAzNjM2LCAzNjQxLCAzNjQ1LCAyMDc0LCAzNjQ5LCAzNjU3LCA1ODMsIDM2NjMsIDM2NzQsIDM2NzgsIDM2ODgsIDIwNzksIAotICAgIDM2OTQsIDM2OTksIDM3MTQsIDM3MjAsIDM3MjcsIDM3MzcsIDM3NDMsIDM3NDgsIDM3NTQsIDM3NjAsIDM3NjMsIDM3NjcsIAotICAgIDM3NzIsIDM3NzksIDM3ODQsIDM3ODgsIDM3OTIsIDM3OTYsIDM4MDAsIDM4MDUsIDM4MTEsIDMxNTMsIDM4MTYsIDM4MjgsIAotICAgIDM4MzYsIDM4NDEsIDE1MjcsIDM4NDgsIDM4NTEsIDM4NTQsIDM4NTgsIDM4NjEsIDM4NjcsIDM4NzEsIDM4ODUsIDM4ODksIAotICAgIDM4OTIsIDM4OTYsIDM5MDIsIDM5MDgsIDM5MTMsIDM5MTcsIDM5MjEsIDM5MjcsIDM5MzgsIDM5NDQsIDM5NDksIDM5NTUsIAotICAgIDM5NTksIDM5NjcsIDM5NzcsIDM5ODMsIDM5ODgsIDM5OTcsIDQwMDUsIDQwMTIsIDQwMTYsIDQwMjIsIDQwMzEsIDQwNDAsIAotICAgIDQwNDQsIDQwNDksIDQwNTQsIDQwNTgsIDQwNjYsIDQwNzAsIDQwNzUsIDQwNzksIDIwODcsIDEzNjksIDQwODUsIDQwOTAsIAotICAgIDQwOTYsIDQxMDEsIDQxMDYsIDQxMTEsIDQxMTYsIDQxMjEsIDQxMjYsIDQxMzIsIDQxMzcsIDQxNDMsIDQxNDgsIDQxNTMsIAotICAgIDQxNTgsIDQxNjQsIDQxNjksIDQxNzQsIDQxNzksIDQxODQsIDQxOTAsIDQxOTUsIDQyMDEsIDQyMDYsIDQyMTEsIDQyMTYsIAotICAgIDQyMjEsIDQyMjYsIDQyMzEsIDQyMzcsIDQyNDIsIDQyNDcsIDMzNSwgNDM2LCA0MjUyLCA0MjU4LCA0MjYyLCA0MjY2LCAKLSAgICA0MjcxLCA0Mjc1LCA0Mjc5LCA0MjgyLCA0Mjg2LCA0MjkwLCA0Mjk0LCA0Mjk5LCA0MzAzLCA0MzA3LCA0MzEzLCA0MDgyLCAKLSAgICA0MzE4LCA0MzIxLCA0MzI4LCA0MzMyLCA0MzQ1LCA0MzQ5LCA0MzUzLCA0MzU3LCA0MzYxLCA0MzY1LCA0MzY5LCA0Mzc1LCAKLSAgICA0MzgyLCA0MzkwLCA0Mzk0LCA0NDAyLCA0NDExLCA0NDE3LCA0NDI5LCA0NDM0LCA0NDM3LCA0NDQxLCA0NDUxLCA0NDU5LCAKLSAgICA0NDY3LCA0NDczLCA0NDc3LCA0NDg3LCA0NDk3LCA0NTA1LCA0NTEyLCA0NTE5LCA0NTI1LCA0NTMxLCA0NTM4LCA0NTQyLCAKLSAgICA0NTQ5LCA0NTU5LCA0NTY5LCA0NTc3LCA0NTg0LCA0NTg5LCA0NTkzLCA0NjAxLCA0NjA2LCA0NjEzLCA0NjIxLCA0NjI2LCAKLSAgICA0NjMxLCA0NjM1LCA0NjQ5LCA0NjU0LCA0NjU5LCA0NjY2LCA0Njc1LCA0Njc4LCA0NjgyLCA0Njg2LCA0Njg5LCA0Njk0LCAKLSAgICA0Njk5LCA0NzA4LCA0NzE0LCA0NzIwLCA0NzI2LCA0NzMwLCA0NzQxLCA0NzUxLCA0NzY2LCA0NzgxLCA0Nzk2LCA0ODExLCAKLSAgICA0ODI2LCA0ODQxLCA0ODU2LCA0ODcxLCA0ODg2LCA0OTAxLCA0OTE2LCA0OTMxLCA0OTQ2LCA0OTYxLCA0OTc2LCA0OTkxLCAKLSAgICA1MDA2LCA1MDIxLCA1MDM2LCA1MDUxLCA1MDY2LCA1MDgxLCA1MDk2LCA1MTExLCA1MTI2LCA1MTQxLCA1MTU2LCA1MTcxLCAKLSAgICA1MTg2LCA1MjAxLCA1MjE2LCA1MjMxLCA1MjQ2LCA1MjYxLCA1Mjc2LCA1MjkxLCA1MzA2LCA1MzIxLCA1MzM2LCA1MzUxLCAKLSAgICA1MzY2LCA1MzgxLCA1Mzk2LCA1NDExLCA1NDI2LCA1NDQxLCA1NDU2LCA1NDcxLCA1NDg2LCA1NDk1LCA1NTA0LCA1NTA5LCAKLSAgICA1NTE1LCA1NTI1LCA1NTI5LCA1NTM0LCA1NTM5LCA1NTQ3LCA1NTUxLCA1NTU0LCA1NTU4LCAyOTE3LCA1NTYxLCA1NTY2LCAKLSAgICAzMTAsIDQ0NSwgNTU3MiwgNTU4MCwgNTU4NCwgNTU4OCwgNTU5MSwgNTU5NywgNTYwMSwgNTYwOSwgNTYxNSwgNTYyMCwgCi0gICAgNTYyNywgNTYzNCwgNTY0MCwgNTY0NSwgNTY1MiwgNTY1OCwgNTY2NiwgNTY3MCwgNTY3NSwgNTY4NywgNTY5OCwgNTcwNSwgCi0gICAgNTcxMSwgMzE3NSwgNTcxNSwgNTcyMSwgNTcyNiwgNTczMSwgNTczNiwgNTc0MiwgNTc0NywgNTc1MiwgNTc1NywgNTc2MiwgCi0gICAgNTc2OCwgNTc3MywgNTc3OCwgNTc4NCwgNTc4OSwgNTc5NSwgNTgwMCwgNTgwNiwgNTgxMSwgNTgxNywgNTgyMiwgNTgyNywgCi0gICAgNTgzMiwgNTgzNywgNTg0MiwgNTg0OCwgNTg1MywgNTg1OCwgNTg2MywgNTg2OSwgNTg3NSwgNTg4MSwgNTg4NywgNTg5MywgCi0gICAgNTg5OSwgNTkwNSwgNTkxMSwgNTkxNywgNTkyMywgNTkyOSwgNTkzNSwgNTk0MCwgNTk0NSwgNTk1MCwgNTk1NSwgNTk2MCwgCi0gICAgNTk2NSwgNTk3MCwgNTk3NSwgNTk4MSwgNTk4NywgNTk5MiwgNTk5OCwgNjAwNCwgNjAxMCwgNjAxNSwgNjAyMCwgNjAyNSwgCi0gICAgNjAzMCwgNjAzNiwgNjA0MiwgNjA0NywgNjA1MiwgNjA1NywgNjA2MiwgNjA2NywgNjA3MywgNjA3OCwgNjA4NCwgNjA5MCwgCi0gICAgNjA5NiwgNjEwMiwgNjEwOCwgNjExNCwgNjEyMCwgNjEyNiwgNjEzMiwgMjA5NiwgNTU5MCwgNjEzNywgNjE0MSwgNjE0NSwgCi0gICAgNjE0OCwgNjE1NSwgNjE1OCwgNjE2NiwgNjE3MSwgNjE3NiwgNjE2NywgNjE4MSwgNjE2OCwgNjE4NSwgNjE5MSwgNjE5NywgCi0gICAgNjIwMiwgNjIwNywgNjIxNCwgNjIyMiwgNjIyNywgNjIzMSwgNjIzNCwgNjIzOCwgMjEyNywgNTUxLCA2MjQyLCA2MjQ2LCAKLSAgICA2MjUxLCA2MjU3LCA2MjYyLCA2MjY2LCA2MjY5LCA2MjczLCA2Mjc5LCA2Mjg0LCA2Mjg4LCA2Mjk1LCA2Mjk5LCA2MzAzLCAKLSAgICA2MzA3LCA5NDYsIDc0NywgNjMxMCwgNjMxOCwgNjMyNSwgNjMzMiwgNjMzOCwgNjM0NSwgNjM1MywgNjM2MCwgNjM2NywgCi0gICAgNjM3MiwgNjM4NCwgMTI0NywgMTM3NywgMTM4MiwgNjM5NSwgMTM4NywgNjM5OSwgNjQwMywgNjQxMiwgNjQyMCwgNjQyOSwgCi0gICAgNjQzNSwgNjQ0MCwgNjQ0NCwgNjQ1MCwgNjQ1NSwgNjQ2MiwgNjQ2NiwgNjQ3NSwgNjQ4NCwgNjQ5MywgNjUwMiwgNjUwNywgCi0gICAgNjUxMiwgNjUyNCwgNjUyOSwgNjUzNywgMjE3OCwgNjU0MSwgNjU0MywgNjU0OCwgNjU1MiwgNjU2MSwgNjU2OSwgMTM5MSwgCi0gICAgMTMzLCAzNDAzLCAzNDA4LCA2NTc1LCA2NTc5LCA2NTg4LCA2NTk0LCA2NTk5LCA2NjAyLCA2NjExLCAyNjUyLCA2NjE3LCAKLSAgICA2NjI1LCA2NjI5LCA2NjMzLCAyMTkxLCA2NjM3LCA2NjQyLCA2NjQ5LCA2NjU1LCA2NjYxLCA2NjY0LCA2NjY2LCA2NjY5LCAKLSAgICA2Njc3LCA2Njg1LCA2NjkzLCA2Njk2LCA2NzAxLCA2MTc4LCA2NzA0LCA2NzA2LCA2NzExLCA2NzE2LCA2NzIxLCA2NzI2LCAKLSAgICA2NzMxLCA2NzM2LCA2NzQxLCA2NzQ2LCA2NzUxLCA2NzU2LCA2NzYyLCA2NzY3LCA2NzcyLCA2Nzc3LCA2NzgzLCA2Nzg4LCAKLSAgICA2NzkzLCA2Nzk4LCA2ODAzLCA2ODA4LCA2ODEzLCA2ODE5LCA2ODI0LCA2ODI5LCA2ODM0LCA2ODM5LCA2ODQ0LCA2ODQ5LCAKLSAgICA2ODU0LCA2ODU5LCA2ODY0LCA2ODY5LCA2ODc0LCA2ODc5LCA2ODg0LCA2ODg5LCA2ODk0LCA2ODk5LCA2OTA0LCA2OTEwLCAKLSAgICA2OTE2LCA2OTIxLCA2OTI2LCA2OTMxLCA2OTM2LCA2OTQxLCAyMjE1LCAyMjIyLCAyMjI4LCA2OTQ2LCA2OTUyLCAyMjU0LCAKLSAgICAyMjYwLCA2OTYwLCA2OTY0LCA2OTY5LCA2OTczLCA2OTc3LCA2OTgxLCA2OTg2LCA2OTkwLCA2OTk1LCA2OTk5LCA3MDAyLCAKLSAgICA3MDA1LCA3MDExLCA3MDE3LCA3MDIzLCA3MDI5LCA3MDM1LCA3MDQxLCA3MDQ3LCA3MDUxLCA3MDU1LCA3MDU5LCA3MDYzLCAKLSAgICA3MDY3LCA3MDcyLCA3MDc5LCA3MDkwLCA3MDk4LCA3MTA4LCA3MTE1LCA3MTIwLCA3MTI0LCA3MTM1LCA3MTQ4LCA3MTU5LCAKLSAgICA3MTcyLCA3MTgzLCA3MTk1LCA3MjA3LCA3MjE5LCA3MjMyLCA3MjQ1LCA3MjUyLCA3MjU4LCA3MjcyLCA3Mjc5LCA3Mjg1LCAKLSAgICA3Mjg5LCA3Mjk0LCA3Mjk4LCA3MzA1LCA3MzEzLCA3MzE3LCA3MzIzLCA3MzI5LCA3MzM5LCA3MzQzLCA3MzQ4LCA3MzUzLCAKLSAgICA3MzYwLCA3MzY2LCA3Mzc2LCA2MzQwLCA3MzgyLCA3Mzg2LCA3MzkzLCA3NDYsIDczOTcsIDc0MDEsIDc0MDYsIDc0MTEsIAotICAgIDc0MTYsIDc0MjAsIDc0MjYsIDc0MzQsIDc0NDAsIDc0NDQsIDc0NTAsIDc0NjAsIDc0NjQsIDc0NzAsIDc0NzUsIDc0NzksIAotICAgIDc0ODUsIDc0OTEsIDIxMTksIDc0OTYsIDc0OTgsIDc1MDYsIDc1MTUsIDc1MTksIDc1MjUsIDc1MzAsIDc1MzUsIDc1NDAsIAotICAgIDc1NDUsIDc1NTEsIDc1NTYsIDM5MjMsIDc1NjEsIDc1NjUsIDc1NzEsIDc1NzYsIDc1ODIsIDc1ODcsIDc1OTIsIDc1OTgsIAotICAgIDc2MDMsIDc1MjAsIDc2MDksIDc2MTMsIDc2MjAsIDc2MjYsIDc2MzEsIDc2MzUsIDQ2NDUsIDc2NDAsIDc2NDksIDY2NDUsIAotICAgIDY2NTIsIDc2NTQsIDI4MDMsIDc2NTgsIDc2NjMsIDc2NjgsIDc1MzEsIDc2NzIsIDc1MzYsIDc1NDEsIDc2NzcsIDc2ODQsIAotICAgIDc2OTEsIDc2OTcsIDc3MDMsIDc3MDksIDc3MTQsIDc3MTksIDc3MjQsIDc1NDYsIDc1NTIsIDc3MzAsIDc3MzYsIDc3NDEsIAotICAgIDc3NDksIDc1NTcsIDc3NTQsIDEwMjgsIDc3NTcsIDc3NjUsIDc3NzEsIDc3NzcsIDc3ODYsIDc3OTQsIDc3OTksIDc4MDUsIAotICAgIDc4MTMsIDc4MjAsIDc4MzUsIDc4NTIsIDc4NzEsIDc4ODAsIDc4ODgsIDc5MDMsIDc5MTQsIDc5MjQsIDc5MzQsIDc5NDIsIAotICAgIDc5NDgsIDc5NjAsIDc5NjksIDc5NzcsIDc5ODQsIDc5OTEsIDc5OTcsIDgwMDIsIDgwMTAsIDgwMjAsIDgwMjcsIDgwMzcsIAotICAgIDgwNDcsIDgwNTcsIDgwNjUsIDgwNzIsIDgwODEsIDgwOTEsIDgxMDUsIDgxMjAsIDgxMjksIDgxMzcsIDgxNDIsIDgxNDYsIAotICAgIDgxNTUsIDgxNjEsIDgxNjYsIDgxNzYsIDgxODYsIDgxOTYsIDgyMDEsIDgyMDUsIDgyMTQsIDgyMTksIDgyMjksIDgyNDAsIAotICAgIDgyNTMsIDgyNjYsIDgyNzgsIDgyODYsIDgyOTEsIDgyOTUsIDgzMDEsIDgzMDYsIDgzMTQsIDgzMjIsIDgzMjksIDgzMzQsIAotICAgIDgzNDIsIDgzNDgsIDgzNTEsIDgzNTUsIDgzNjEsIDgzNjksIDgzNzQsIDgzNzgsIDgzODYsIDgzOTUsIDg0MDMsIDg0MDksIAotICAgIDg0MTMsIDg0MjAsIDg0MzEsIDg0MzUsIDg0MzgsIDg0NDQsIDg0NDksIDg0NTMsIDg0NTksIDg0NjYsIDg0NzIsIDg0NzcsIAotICAgIDg0ODQsIDg0OTEsIDg0OTgsIDg1MDUsIDg1MTIsIDg1MTksIDg1MjQsIDc4NDgsIDg1MjksIDg1MzUsIDg1NDIsIDg1NDksIAotICAgIDg1NTQsIDg1NjEsIDg1NzAsIDg1NzQsIDg1ODYsIDg1OTAsIDg1OTMsIDg1OTcsIDg2MDEsIDg2MDUsIDg2MDksIDg2MTUsIAotICAgIDg2MjAsIDg2MjYsIDg2MzEsIDg2MzYsIDg2NDIsIDg2NDcsIDg2NTIsIDczNTYsIDg2NTcsIDg2NjEsIDg2NjUsIDg2NjksIAotICAgIDg2NzQsIDg2NzksIDg2ODcsIDg2OTMsIDg2OTcsIDg3MDEsIDg3MDgsIDg3MTMsIDg3MjEsIDg3MjYsIDg3MzAsIDg3MzMsIAotICAgIDg3MzksIDg3NDYsIDg3NTAsIDg3NTMsIDg3NTgsIDg3NjIsIDM5NjIsIDg3NjgsIDg3NzcsIDM2LCA4Nzg1LCA4NzkxLCAKLSAgICA4Nzk2LCA3MzcxLCA4ODAxLCA4ODA3LCA4ODEyLCA4ODE2LCA4ODE5LCA4ODM0LCA4ODUzLCA4ODY1LCA4ODc4LCA4ODkxLCAKLSAgICA4OTA0LCA4OTE4LCA4OTMxLCA4OTQ2LCA4OTUzLCA4OTU5LCA4OTYzLCA4OTc3LCA4OTgyLCA4OTg4LCA4OTkzLCA5MDAxLCAKLSAgICA5MDA2LCA2NDcxLCA5MDExLCA5MDE0LCA5MDIxLCA5MDI2LCA5MDMwLCAyODA4LCA5NTUsIDkwMzYsIDkwNDAsIDkwNDYsIAotICAgIDkwNTIsIDkwNTcsIDkwNjMsIDkwNjgsIDc1NjYsIDkwNzQsIDkwODAsIDkwODUsIDkwOTAsIDkwOTgsIDkxMDQsIDkxMTcsIAotICAgIDkxMjUsIDkxMzIsIDc1NzIsIDkxMzgsIDkxNDYsIDkxNTQsIDkxNjEsIDkxNzQsIDkxODYsIDkxOTYsIDkyMDMsIDkyMTAsIAotICAgIDkyMTksIDkyMjgsIDkyMzYsIDkyNDMsIDkyNDgsIDkyNTQsIDc1NzcsIDkyNTksIDkyNjUsIDc1ODMsIDkyNzAsIDkyNzMsIAotICAgIDkyODAsIDkyODYsIDkyOTksIDcwODMsIDkzMTAsIDkzMTYsIDkzMjUsIDkzMzMsIDkzNDAsIDkzNDYsIDkzNTIsIDkzNTcsIAotICAgIDkzNjEsIDkzNjYsIDg4MjYsIDkzNzIsIDc1ODgsIDkzNzksIDkzODQsIDkzOTEsIDkzOTcsIDk0MDMsIDk0MDgsIDk0MTYsIAotICAgIDk0MjQsIDk0MzEsIDk0MzUsIDk0NDksIDk0NTksIDk0NjQsIDk0NjgsIDk0NzksIDk0ODUsIDk0OTAsIDk0OTUsIDc1OTMsIAotICAgIDc1OTksIDk0OTksIDk1MDIsIDk1MDcsIDk1MTksIDk1MjYsIDk1MzEsIDk1MzUsIDk1NDAsIDk1NDQsIDk1NTEsIDk1NTcsIAotICAgIDc2MDQsIDc1MjEsIDk1NjQsIDI4MTMsIDgsIDk1NzEsIDk1NzYsIDk1ODAsIDk1ODYsIDk1OTQsIDk2MDQsIDk2MDksIAotICAgIDk2MTQsIDk2MjEsIDk2MjgsIDk2MzIsIDk2NDMsIDk2NTMsIDk2NjIsIDk2NzQsIDk2NzksIDk2ODMsIDk2OTEsIDk3MDUsIAotICAgIDk3MDksIDk3MTIsIDk3MjAsIDk3MjcsIDk3MzUsIDk3MzksIDk3NTAsIDk3NTQsIDk3NjEsIDk3NjYsIDk3NzAsIDk3NzYsIAotICAgIDk3ODEsIDk3ODUsIDk3OTEsIDk3OTYsIDk4MDcsIDk4MTEsIDk4MTQsIDk4MjAsIDk4MjUsIDk4MzEsIDk4MzcsIDk4NDQsIAotICAgIDk4NTUsIDk4NjUsIDk4NzUsIDk4ODQsIDk4OTEsIDc2MTQsIDc2MjEsIDc2MjcsIDc2MzIsIDk4OTcsIDk5MDMsIDc2MzYsIAotICAgIDk5MDksIDk5MTIsIDk5MTksIDk5MjQsIDk5MzksIDk5NTUsIDk5NzAsIDk5NzgsIDk5ODQsIDEwNDMsIDQwMCwgOTk4OSwgCi0gICAgOTk5NywgMTAwMDQsIDEwMDEwLCAxMDAxNSwgMTAwMjAsIDc2NDEsIDEwMDIyLCAxMDAyNiwgMTAwMzEsIDEwMDM1LCAKLSAgICAxMDA0NSwgMTAwNTAsIDEwMDU0LCAxMDA2MywgMTAwNjcsIDEwMDcwLCAxMDA3NywgMTAwODEsIDEwMDg0LCAxMDA5MiwgCi0gICAgMTAwOTksIDEwMTA3LCAxMDExMSwgMTAxMTgsIDEwMTI3LCAxMDEzMCwgMTAxMzQsIDEwMTM4LCAxMDE0NCwgMTAxNDgsIAotICAgIDEwMTUyLCAxMDE1NiwgMTAxNjIsIDEwMTcyLCAxMDE3NiwgMTAxODQsIDEwMTg4LCAxMDE5NSwgMTAxOTksIDEwMjA0LCAKLSAgICAxMDIwOCwgMTAyMTUsIDEwMjIxLCAxMDIyOSwgMTAyMzUsIDEwMjQ1LCAxMDI1MCwgMTAyNTUsIDEwMjU5LCAxMDI2NywgCi0gICAgMzgyMiwgMTAyNzUsIDEwMjgwLCAxMDI4NCwgMTAyODgsIDEwMjkxLCAxMDI5OSwgMTAzMDYsIDEwMzEwLCA0NDY5LCAKLSAgICAxMDMxNCwgMTAzMTksIDEwMzIzLCAxMDMzNCwgMTAzMzksIDEwMzQ1LCAxMDM0OSwgMTAzNTIsIDEwMzYwLCAxMDM2NSwgCi0gICAgMTAzNzAsIDEwMzc3LCAxMDM4MiwgNzY1MCwgMTAzODcsIDEwMzkxLCAxNjg1LCA0NjE5LCAxMDM5OCwgMTA0MDMsIDEwNDA4LCAKLSAgICAxMDQxMywgMTA0MTksIDEwNDI0LCAxMDQzMCwgMTA0MzUsIDEwNDQwLCAxMDQ0NSwgMTA0NTAsIDEwNDU1LCAxMDQ2MCwgCi0gICAgMTA0NjUsIDEwNDcwLCAxMDQ3NSwgMTA0ODAsIDEwNDg1LCAxMDQ5MCwgMTA0OTUsIDEwNTAwLCAxMDUwNSwgMTA1MTAsIAotICAgIDEwNTE2LCAxMDUyMSwgMTA1MjYsIDEwNTMxLCAxMDUzNiwgMTA1NDEsIDEwNTQ3LCAxMDU1MiwgMTA1NTcsIDEwNTYzLCAKLSAgICAxMDU2OCwgMTA1NzQsIDEwNTc5LCAxMDU4NSwgMTA1OTAsIDEwNTk1LCAxMDYwMCwgMTA2MDUsIDEwNjExLCAxMDYxNiwgCi0gICAgMTA2MjEsIDEwNjI2LCA3MjQsIDEzOSwgMTA2MzQsIDEwNjM4LCAxMDY0MywgMTA2NDgsIDEwNjUyLCAxMDY1NiwgMTA2NjAsIAotICAgIDEwNjY1LCAxMDY2OSwgMTA2NzQsIDEwNjc4LCAxMDY4MSwgMTA2ODUsIDEwNjg5LCAxMDY5NCwgMTA3MDQsIDEwNzEwLCAKLSAgICAxMDcxOCwgMTA3MjIsIDEwNzI2LCAxMDczMywgMTA3NDEsIDEwNzUwLCAxMDc2MSwgMTA3NjgsIDEwNzc1LCAxMDc4NCwgCi0gICAgMTA3OTMsIDEwODAxLCAxMDgxMCwgMTA4MTksIDEwODI4LCAxMDgzNywgMTA4NDcsIDEwODU3LCAxMDg2NywgMTA4NzcsIAotICAgIDEwODg3LCAxMDg5NiwgMTA5MDYsIDEwOTE2LCAxMDkyNiwgMTA5MzYsIDEwOTQ2LCAxMDk1NiwgMTA5NjYsIDEwOTc1LCAKLSAgICAxMDk4NSwgMTA5OTUsIDExMDA1LCAxMTAxNSwgMTEwMjUsIDExMDM1LCAxMTA0NCwgMTEwNTQsIDExMDY0LCAxMTA3NCwgCi0gICAgMTEwODQsIDExMDk0LCAxMTEwNCwgMTExMTQsIDExMTI0LCAxMTEzNCwgMTExNDMsIDExMTUzLCAxMTE2MywgMTExNzMsIAotICAgIDExMTgzLCAxMTE5MywgMTEyMDMsIDExMjEzLCAxMTIyMywgMTEyMzMsIDExMjQzLCAxMTI1MiwgMTEyNTgsIDExMjYyLCAKLSAgICAxMTI2NSwgMTEyNjksIDExMjc0LCAxMTI4MSwgMTEyODcsIDExMjkyLCAxMTI5NiwgMTEzMDEsIDExMzEwLCAxMTMxOCwgCi0gICAgMTEzMjMsIDExMzI3LCAxMTMzMSwgMTEzMzcsIDExMzQyLCAxMTM0OCwgNzY1OSwgMTEzNTMsIDExMzU4LCAxMTM2NywgCi0gICAgNzY2NCwgMTEzNzIsIDExMzc1LCAxMTM4MSwgMTEzODksIDc2NjksIDExMzk2LCAxMTQwMCwgMTE0MDQsIDExNDA4LCAKLSAgICAxMTQxOCwgMTE0MjQsIDExNDI5LCAxMTQzOCwgMTE0NDYsIDExNDUzLCAxMTQ2MCwgMTE0NjUsIDExNDcyLCAxMTQ3NywgCi0gICAgMTE0ODEsIDExNDg0LCAxMTQ5NSwgMTE1MDUsIDExNTE0LCAxMTUyMiwgMTE1MzMsIDExNTQ1LCAxMTU1NSwgMTE1NjAsIAotICAgIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc4LCAxMTU4NCwgMTE1OTIsIDExNTk5LCAxMTYxMCwgMTE2MTUsIDExNjI1LCAKLSAgICAxMTYzNCwgMTE2MzgsIDExNjQxLCAxMTY0OCwgMTE2NTgsIDExNjY3LCAxMTY3NCwgMTE2NzgsIDExNjg1LCAxMTY5MSwgCi0gICAgMTE2OTYsIDExNzAxLCAxMTcwNSwgMTE3MTQsIDExNzE5LCAxMTcyNSwgMTE3MjksIDExNzM0LCAxMTczOCwgMTE3NDcsIAotICAgIDExNzU1LCAxMTc2MywgMTE3NzAsIDExNzc4LCAxMTc5MCwgMTE4MDEsIDExODExLCAxMTgxOCwgMTE4MjQsIDExODMzLCAKLSAgICAxMTg0NCwgMTE4NTMsIDExODY1LCAxMTg3NywgMTE4ODksIDExODk5LCAxMTkwOCwgMTE5MTcsIDExOTI1LCAxMTkzMiwgCi0gICAgMTE5NDEsIDExOTQ5LCAxMTk1NSwgMTE5NjEsIDExOTY2LCA2MTk5LCAxMTk3MCwgMTE5NzIsIDExOTc3LCAxMTk4MywgCi0gICAgMTE5OTIsIDEyMDAwLCAxMjAwNywgMTIwMTYsIDEyMDI1LCAxMjAzNCwgMTIwNDMsIDEyMDUyLCAxMjA2MSwgMTIwNzAsIAotICAgIDEyMDc5LCAxMjA4OSwgMTIwOTksIDEyMTA4LCAxMjExNCwgMTIxMjEsIDEyMTM1LCAxMjE0MiwgMTIxNTAsIDEyMTU5LCAKLSAgICAxMjE2NSwgMTIxNzQsIDEyMTgzLCAxMjE5NCwgMTIyMDQsIDEyMjEyLCAxMjIxOSwgMTIyMjcsIDEyMjM2LCAxMjI0OSwgCi0gICAgMTIyNTcsIDEyMjY0LCAxMjI3NywgMTIyODMsIDEyMjg5LCAxMjI5OSwgMTIzMDgsIDEyMzE3LCAxMjMyMiwgMTIzMjYsIAotICAgIDEyMzMyLCAxMjMzOCwgMTIzNDUsIDczNzAsIDEyMzUwLCAxMjM1NSwgMTIzNjIsIDEyMzY3LCAxMjM3MiwgMTIzNzYsIAotICAgIDEyMzg0LCAxMjM5MCwgMTIzOTUsIDEyNDAzLCAxMjQxMSwgMTI0MTgsIDEyNDI2LCAxMjQzMiwgMTI0NDAsIDEyNDQ4LCAKLSAgICAxMjQ1MywgMTI0NTksIDEyNDY2LCAxMjQ3MiwgMTI0NzcsIDEyNDgxLCAxMjQ5MiwgMTI1MDAsIDEyNTA2LCAxMjUxMSwgCi0gICAgMTI1MjAsIDEyNTI2LCAxMjUzMSwgMTI1NDAsIDEyNTU0LCAzNzgxLCAxMjU1OCwgMTI1NjMsIDEyNTY4LCAxMjU3NCwgCi0gICAgMTI1NzksIDEyNTg0LCAxMjU4OCwgMTI1OTMsIDEyNTk4LCA2MTk4LCAxMjYwMywgMTI2MDgsIDEyNjEzLCAxMjYxOCwgCi0gICAgMTI2MjIsIDEyNjI3LCAxMjYzMiwgMTI2MzcsIDEyNjQzLCAxMjY0OSwgMTI2NTQsIDEyNjU4LCAxMjY2MywgMTI2NjgsIAotICAgIDEyNjczLCA3NjczLCAxMjY3OCwgMTI2ODMsIDEyNjg4LCAxMjY5MywgMTI3MTAsIDEyNzI4LCAxMjc0MCwgMTI3NTMsIAotICAgIDEyNzcwLCAxMjc4NiwgMTI4MDMsIDEyODEzLCAxMjgzMiwgMTI4NDMsIDEyODU0LCAxMjg2NSwgMTI4NzYsIDEyODg4LCAKLSAgICAxMjg5OSwgMTI5MTAsIDEyOTI3LCAxMjkzOCwgMTI5NDksIDEyOTU0LCAyMzM1LCAxMjk1OCwgMTI5NjEsIDEyOTY3LCAKLSAgICAxMjk3NSwgMTI5ODMsIDEyOTg4LCAxMjk5NiwgMTMwMDQsIDEzMDExLCAxMzAxNiwgMTMwMjIsIDEzMDI5LCAxMzAzNywgCi0gICAgMTMwNDQsIDEzMDU2LCAxMzA2NCwgMTMwNjksIDk5MzMsIDEzMDc1LCAxMzA4NCwgMTMwOTMsIDEzMTAxLCAxMzEwOCwgCi0gICAgMTMxMTQsIDEzMTIyLCAxMzEyOSwgMTMxMzUsIDEzMTQyLCAxMzE0OCwgMTMxNTcsIDEzMTY1LCAxMzE3NSwgMTMxODIsIAotICAgIDEzMTg4LCAxMzE5NiwgMTMyMDIsIDEzMjEwLCAxMzIxNywgMTMyMzAsIDEzMjM3LCAxMzI0NiwgMTMyNTUsIDEzMjY0LCAKLSAgICAxMzI3MiwgMTMyODIsIDEzMjg5LCAxMzI5NCwgMzQ5NSwgMTMzMDEsIDEzMzA2LCAxMzMwOSwgMTI2MDQsIDEzMzEzLCAKLSAgICAxMzMxOSwgMTMzMjMsIDEzMzMxLCAxMzM0MywgMTMzNDgsIDEzMzU1LCAxMzM2MSwgMTMzNjYsIDEzMzczLCAxMjYwOSwgCi0gICAgMTMzNzcsIDEzMzgxLCAxMjYxNCwgMTMzODUsIDEzMzg5LCAxMzM5MywgMTM0MDAsIDEzNDA1LCAxMzQwOSwgMTM0MTMsIAotICAgIDEzNDIxLCAxMzQyOCwgMTM0MzUsIDEzNDUyLCAxMzQ2MSwgMTM0NjUsIDEzNDY4LCAxMzQ3NiwgMTM0ODIsIDEzNDg3LCAKLSAgICAzNTczLCAxMzQ5MSwgMTM0OTMsIDEzNTAxLCAxMzUwOCwgMTM1MTgsIDEzNTMwLCAxMzUzNSwgMTM1NDEsIDEzNTQ2LCAKLSAgICAxMzU1MCwgMTM1NTYsIDEzNTYxLCAxMzU2NywgMTM1NzAsIDEzNTc3LCAxMzU4NSwgMTM1OTIsIDEzNTk4LCAxMzYwNCwgCi0gICAgMTM2MDksIDEzNjE2LCAxMzYyMiwgMTM2MjcsIDEzNjM0LCAxMzYzOCwgMTM2NDQsIDEzNjQ4LCAxMzY1NSwgMTM2NjEsIAotICAgIDEzNjY3LCAxMzY3NSwgMTM2ODEsIDEzNjg2LCAxMzY5MiwgMTM3MDAsIDEzNzA4LCAxMzcxNCwgMTM3MjAsIDEzNzI1LCAKLSAgICAxMzczMiwgMTM3MzcsIDEzNzQxLCAxMzc0NywgMTM3NTIsIDEzNzU5LCAxMzc2NCwgMTM3NzAsIDEzNzczLCAxMzc3OSwgCi0gICAgMTM3ODUsIDEzNzg4LCAxMzc5MiwgMTM4MDQsIDEzODEwLCAxMzgxNSwgMTM4MjIsIDEzODI4LCAxMzgzNCwgMTM4NDUsIAotICAgIDEzODU1LCAxMzg2NCwgMTM4NzIsIDEzODc5LCAxMzg5MCwgMTM5MDAsIDEzOTEwLCAxMzkxOCwgMTM5MjEsIDEyNjI4LCAKLSAgICAxMzkyNiwgMTM5MzEsIDEyNjMzLCAxMjc1OCwgMTM5MzksIDEzOTUyLCAxMzk2NywgMTM5NzgsIDEyNzc1LCAxMzk5NiwgCi0gICAgMTQwMDksIDE0MDIyLCAxNDAzMywgODg0MSwgMTQwNDQsIDE0MDU3LCAxNDA3NiwgMTQwODcsIDE0MDk4LCAxNDEwOSwgCi0gICAgMjYwMywgMTQxMjIsIDE0MTI2LCAxNDEzNCwgMTQxNDUsIDE0MTUyLCAxNDE1OCwgMTQxNjYsIDE0MTcwLCAxNDE3NiwgCi0gICAgMTQxNzksIDE0MTg5LCAxNDE5NywgMTQyMDQsIDE0MjEyLCAxNDIyMiwgMTQyMjcsIDE0MjM0LCAxNDIzOSwgMTQyNDYsIAotICAgIDE0MjU3LCAxNDI2NywgMTQyNzMsIDE0Mjc4LCAxNDI4MywgMTQyODcsIDE0MjkxLCAxNDI5NywgMTQzMDMsIDE0MzA4LCAKLSAgICAxNDMxMywgMTQzMTgsIDE0MzIyLCAxMjYzOCwgMTI2NDQsIDE0MzI2LCAxMjY1MCwgMTQzMzEsIDE0MzM5LCAxNDM0OCwgCi0gICAgMTQzNTUsIDc1NDIsIDE0MzU5LCAxNDM2MSwgMTQzNjYsIDE0MzcxLCAxNDM3NywgMTQzODIsIDE0Mzg3LCAxNDM5MiwgCi0gICAgMTQzOTcsIDE0NDAxLCAxNDQwNywgMTQ0MTMsIDE0NDE4LCAxNDQyNCwgMTQ0MjksIDE0NDM0LCAxNDQ0MCwgMTQ0NDUsIAotICAgIDE0NDUwLCAxNDQ1NSwgMTQ0NjEsIDE0NDY2LCAxNDQ3MSwgMTQ0NzcsIDE0NDgzLCAxNDQ4OCwgMTQ0OTMsIDE0NTAwLCAKLSAgICAxNDUwNiwgMTQ1MTcsIDE0NTI0LCAxNDUyOSwgMTQ1MzMsIDE0NTM3LCAxNDU0MCwgMTQ1NDgsIDE0NTUzLCAxNDU2MCwgCi0gICAgMTQ1NjcsIDE0NTcyLCAxNDU3NywgMTQ1ODQsIDE0NTk0LCAxNDU5OSwgMTQ2MDYsIDE0NjEyLCAxNDYyMiwgMTQ2MzIsIAotICAgIDE0NjQ2LCAxNDY2MCwgMTQ2NzQsIDE0Njg4LCAxNDcwMywgMTQ3MTgsIDE0NzM1LCAxNDc1MywgMTQ3NjYsIDE0NzcyLCAKLSAgICAxNDc3NywgMTQ3ODIsIDE0Nzg2LCAxNDc5MSwgMTQ3OTksIDE0ODA1LCAxNDgxMCwgMTQ4MTUsIDE0ODE5LCAxNDgyNCwgCi0gICAgMTQ4MjgsIDE0ODMzLCAxNDgzNywgMTQ4NDgsIDE0ODU0LCAxNDg1OSwgMTQ4NjQsIDE0ODcxLCAxNDg3NiwgMTQ4ODAsIAotICAgIDE0ODg1LCAxNDg5MCwgMTQ4OTYsIDE0OTAzLCAxNDkwOSwgMTQ5MTQsIDE0OTE4LCAxNDkyNCwgMTQ5MjksIDE0OTM0LCAKLSAgICAxNDkzOCwgMTQ5NDQsIDE0OTQ5LCAxNDk1NCwgMTQ5NjEsIDE0OTY2LCAxMTQyMCwgMTQ5NzAsIDE0OTc1LCAxNDk3OSwgCi0gICAgMTQ5ODQsIDE0OTkwLCAxNDk5NiwgMTUwMDMsIDE1MDEzLCAxNTAyMSwgMTUwMjgsIDE1MDMzLCAxNTAzNywgMTUwNDYsIAotICAgIDE1MDU0LCAxNTA2MSwgMTUwNjgsIDE1MDc0LCAxNTA4MCwgMTUwODUsIDE1MDkwLCAxNTA5NiwgMTUxMDEsIDE1MTA3LCAKLSAgICAxNTExMiwgMTUxMTgsIDE1MTI0LCAxNTEzMSwgMTUxMzcsIDE1MTQyLCAxNTE0NywgNzcxNSwgMTUxNTYsIDE1MTU5LCAKLSAgICAxNTE2NSwgMTUxNzAsIDE1MTc1LCAxNTE4NSwgMTUxOTIsIDE1MTk4LCAxNTIwMywgMTUyMDksIDE1MjE0LCAxNTIyMCwgCi0gICAgMTUyMjUsIDE1MjMxLCAxNTIzNywgMTUyNDIsIDE1MjUwLCAxNTI1NywgMTUyNjIsIDE1MjY3LCAxNTI3MywgMTUyNzgsIAotICAgIDE1MjgyLCAxNTI5MSwgMTUzMDIsIDE1MzA5LCAxNTMxNywgMTUzMjMsIDE1MzMwLCAxNTMzNiwgMTUzNDEsIDE1MzQ1LCAKLSAgICAxNTM1MSwgMTUzNTYsIDE1MzYxLCAxNTM2NiwgNzcyMCwgNjIyMywgMjgyNywgMTUzNzAsIDE1Mzc0LCAxNTM3OCwgMTUzODIsIAotICAgIDE1Mzg2LCAxNTM4OSwgMTUzOTYsIDE1NDA0LCAxMjY2NCwgMTU0MTEsIDE1NDIxLCAxNTQyOSwgMTU0MzYsIDE1NDQ0LCAKLSAgICAxNTQ1NCwgMTU0NjMsIDE1NDc2LCAxNTQ4MSwgMTU0ODYsIDE1NDk0LCAxNTUwMSwgMTE1MTAsIDExNTE5LCAxNTUwOCwgCi0gICAgMTU1MTgsIDE1NTMzLCAxNTUzOSwgMTU1NDYsIDE1NTUzLCAxNTU1OSwgMTU1NjksIDE1NTc5LCAxMjY2OSwgMTU1ODgsIAotICAgIDE1NTk0LCAxNTYwMCwgMTU2MDgsIDE1NjE2LCAxNTYyMSwgMTU2MzAsIDE1NjM4LCAxNTY1MCwgMTU2NjAsIDE1NjcwLCAKLSAgICAxNTY4MCwgMTU2ODksIDE1NzAxLCAxNTcxMSwgMTU3MjEsIDE1NzMyLCAxNTczNywgMTU3NDksIDE1NzYxLCAxNTc3MywgCi0gICAgMTU3ODUsIDE1Nzk3LCAxNTgwOSwgMTU4MjEsIDE1ODMzLCAxNTg0NSwgMTU4NTcsIDE1ODY4LCAxNTg4MCwgMTU4OTIsIAotICAgIDE1OTA0LCAxNTkxNiwgMTU5MjgsIDE1OTQwLCAxNTk1MiwgMTU5NjQsIDE1OTc2LCAxNTk4OCwgMTU5OTksIDE2MDExLCAKLSAgICAxNjAyMywgMTYwMzUsIDE2MDQ3LCAxNjA1OSwgMTYwNzEsIDE2MDgzLCAxNjA5NSwgMTYxMDcsIDE2MTE5LCAxNjEzMCwgCi0gICAgMTYxNDIsIDE2MTU0LCAxNjE2NiwgMTYxNzgsIDE2MTkwLCAxNjIwMiwgMTYyMTQsIDE2MjI2LCAxNjIzOCwgMTYyNTAsIAotICAgIDE2MjYxLCAxNjI3MywgMTYyODUsIDE2Mjk3LCAxNjMwOSwgMTYzMjEsIDE2MzMzLCAxNjM0NSwgMTYzNTcsIDE2MzY5LCAKLSAgICAxNjM4MSwgMTYzOTIsIDE2NDA0LCAxNjQxNiwgMTY0MjgsIDE2NDQwLCAxNjQ1MiwgMTY0NjQsIDE2NDc2LCAxNjQ4OCwgCi0gICAgMTY1MDAsIDE2NTEyLCAxNjUyMywgMTY1MzUsIDE2NTQ3LCAxNjU1OSwgMTY1NzEsIDE2NTgzLCAxNjU5NSwgMTY2MDcsIAotICAgIDE2NjE5LCAxNjYzMSwgMTY2NDMsIDE2NjU0LCAxNjY2NiwgMTY2NzgsIDE2NjkwLCAxNjcwMiwgMTY3MTUsIDE2NzI4LCAKLSAgICAxNjc0MSwgMTY3NTQsIDE2NzY3LCAxNjc4MCwgMTY3OTMsIDE2ODA1LCAxNjgxOCwgMTY4MzEsIDE2ODQ0LCAxNjg1NywgCi0gICAgMTY4NzAsIDE2ODgzLCAxNjg5NiwgMTY5MDksIDE2OTIyLCAxNjkzNSwgMTY5NDcsIDE2OTYwLCAxNjk3MywgMTY5ODYsIAotICAgIDE2OTk5LCAxNzAxMiwgMTcwMjUsIDE3MDM4LCAxNzA1MSwgMTcwNjQsIDE3MDc3LCAxNzA4OSwgMTcxMDIsIDE3MTE1LCAKLSAgICAxNzEyOCwgMTcxNDEsIDE3MTU0LCAxNzE2NywgMTcxODAsIDE3MTkzLCAxNzIwNiwgMTcyMTksIDE3MjMxLCAxNzI0NCwgCi0gICAgMTcyNTcsIDE3MjcwLCAxNzI4MywgMTcyOTYsIDE3MzA5LCAxNzMyMiwgMTczMzUsIDE3MzQ4LCAxNzM2MSwgMTczNzMsIAotICAgIDE3Mzg2LCAxNzM5OSwgMTc0MTIsIDE3NDI1LCAxNzQzOCwgMTc0NTEsIDE3NDY0LCAxNzQ3NywgMTc0OTAsIDE3NTAzLCAKLSAgICAxNzUxNSwgMTc1MjYsIDE3NTM5LCAxNzU1MiwgMTc1NjUsIDE3NTc4LCAxNzU5MSwgMTc2MDQsIDE3NjE3LCAxNzYzMCwgCi0gICAgMTc2NDMsIDE3NjU2LCAxNzY2OCwgMTc2ODEsIDE3Njk0LCAxNzcwNywgMTc3MjAsIDE3NzMzLCAxNzc0NiwgMTc3NTksIAotICAgIDE3NzcyLCAxNzc4NSwgMTc3OTgsIDE3ODEwLCAxNzgyMywgMTc4MzYsIDE3ODQ5LCAxNzg2MiwgMTc4NzUsIDE3ODg4LCAKLSAgICAxNzkwMSwgMTc5MTQsIDE3OTI3LCAxNzk0MCwgMTc5NTIsIDE3OTY1LCAxNzk3OCwgMTc5OTEsIDE4MDA0LCAxODAxNywgCi0gICAgMTgwMzAsIDE4MDQzLCAxODA1NiwgMTgwNjksIDE4MDgyLCAxODA5NCwgMTgxMDcsIDE4MTIwLCAxODEzMywgMTgxNDYsIAotICAgIDE4MTU5LCAxODE3MiwgMTgxODUsIDE4MTk4LCAxODIxMSwgMTgyMjQsIDE4MjM2LCAxODI0OSwgMTgyNjIsIDE4Mjc1LCAKLSAgICAxODI4OCwgMTgzMDEsIDE4MzE0LCAxODMyNywgMTgzNDAsIDE4MzUzLCAxODM2NiwgMTgzNzgsIDE4MzkxLCAxODQwNCwgCi0gICAgMTg0MTcsIDE4NDMwLCAxODQ0MywgMTg0NTYsIDE4NDY5LCAxODQ4MiwgMTg0OTUsIDE4NTA4LCAxODUyMCwgMTg1MzMsIAotICAgIDE4NTQ2LCAxODU1OSwgMTg1NzIsIDE4NTg1LCAxODU5OCwgMTg2MTEsIDE4NjI0LCAxODYzNywgMTg2NTAsIDE4NjYyLCAKLSAgICAxODY3NSwgMTg2ODgsIDE4NzAxLCAxODcxNCwgMTg3MjcsIDE4NzQwLCAxODc1MywgMTg3NjYsIDE4Nzc5LCAxODc5MiwgCi0gICAgMTg4MDQsIDE4ODE3LCAxODgzMCwgMTg4NDMsIDE4ODU2LCAxODg2OSwgMTg4ODIsIDE4ODk1LCAxODkwOCwgMTg5MjEsIAotICAgIDE4OTM0LCAxODk0NiwgMTg5NTcsIDE4OTY1LCAxODk3MiwgMTg5NzgsIDE4OTgyLCAxODk4OCwgMTg5OTQsIDE5MDAyLCAKLSAgICAxOTAwOCwgMTkwMTMsIDE5MDE3LCAxOTAyNiwgNzU0NywgMTkwMzcsIDE5MDQ0LCAxOTA1MiwgMTkwNTksIDE5MDY2LCAKLSAgICA5MjkzLCAxOTA3MywgMTkwODIsIDE5MDg3LCAxOTA5MiwgNjIzOSwgMTkwOTksIDE5MTA0LCAxOTEwNywgMTkxMTIsIAotICAgIDE5MTIwLCAxOTEyNywgMTkxMzQsIDE5MTQxLCAxOTE0NywgMTkxNTYsIDE5MTY1LCAxOTE3MSwgMTkxODAsIDE5MTg2LCAKLSAgICAxOTE5MSwgMTkyMDEsIDE5MjA4LCAxOTIxNCwgMTkyMjIsIDE5MjI4LCAxOTIzNSwgMTkyNDUsIDE5MjU0LCAxOTI1OCwgCi0gICAgMTkyNjUsIDE5MjY5LCAxOTI3NCwgMTkyODAsIDE5Mjg4LCAxOTI5MiwgMTkzMDIsIDEyNjc5LCAxOTMxMSwgMTkzMTcsIAotICAgIDE5MzIxLCAxOTMzMCwgMTkzMzYsIDE5MzQzLCAxOTM1NCwgMTkzNjIsIDE5MzcxLCA3MzM1LCAxOTM3OSwgMTkzODQsIAotICAgIDE5MzkwLCAxOTM5NSwgMTkzOTksIDE5NDAzLCAxOTQwNywgODAwNiwgMTk0MTIsIDE5NDIwLCAxOTQyNywgMTk0MzYsIAotICAgIDE5NDQzLCAxOTQ1MCwgOTIyMywgMTk0NTcsIDE5NDYzLCAxOTQ2NywgMTk0NzMsIDE5NDc5LCAxOTQ4NywgMTk0OTMsIAotICAgIDE5NTAwLCAxOTUwNiwgMTk1MTIsIDE5NTIxLCAxOTUyNSwgMTk1MzMsIDE5NTQyLCAxOTU0OSwgMTk1NTQsIDE5NTU4LCAKLSAgICAxOTU2OSwgMTk1NzQsIDE5NTc5LCAxOTU4NCwgMTk1OTcsIDY0MjYsIDE5NjAxLCAxOTYwNywgMTk2MTUsIDE5NjE5LCAKLSAgICAxOTYyNiwgMTk2MzUsIDE5NjQwLCAxOTY0OCwgMTk2NjAsIDE5NjY1LCAxOTY2OSwgMTk2NzIsIDE5Njc4LCAxOTY4NCwgCi0gICAgMTk2ODksIDE5NjkzLCAxOTY5NiwgMTk3MDcsIDE5NzEyLCA3NzUwLCAxOTcxOSwgNzU1OCwgNzc1NSwgMTk3MjQsIDE5NzI5LCAKLSAgICAxOTczNCwgMTk3MzksIDE5NzQ0LCAxOTc0OSwgMTk3NTQsIDE5NzU5LCAxOTc2NCwgMTk3NjksIDE5Nzc0LCAxOTc3OSwgCi0gICAgMTk3ODUsIDE5NzkwLCAxOTc5NSwgMTk4MDAsIDE5ODA1LCAxOTgxMCwgMTk4MTUsIDE5ODIwLCAxOTgyNSwgMTk4MzAsIAotICAgIDE5ODM2LCAxOTg0MiwgMTk4NDcsIDE5ODUyLCAxOTg1NywgMTk4NjIsIDE5ODY3LCAxOTg3MiwgMTk4NzcsIDE5ODgyLCAKLSAgICAxOTg4NywgMTk4OTMsIDE5ODk4LCAxOTkwMywgMTk5MDgsIDE5OTE0LCAxOTkyMCwgMTk5MjUsIDE5OTMwLCAxOTkzNSwgCi0gICAgMTk5NDAsIDE5OTQ1LCAxOTk1MCwgMTk5NTUsIDE5OTYwLCAxOTk2NiwgMTk5NzEsIDE5OTc2LCAxOTk4MSwgMTk5ODYsIAotICAgIDE5OTkyLCAxOTk5NywgMjAwMDIsIDIwMDA2LCAxMjksIDIwMDE0LCAyMDAxOCwgMjAwMjIsIDIwMDI2LCAyMDAzMSwgCi0gICAgMjAwMzUsIDIwMDM5LCAxMDc4MSwgMjAwNDMsIDIwMDQ4LCAyMDA1MiwgMjAwNTcsIDIwMDYxLCAyMDA2NiwgMjAwNzAsIAotICAgIDIwMDc2LCAyMDA4MSwgMjAwODUsIDIwMDg5LCAyMDA5NywgMjAxMDEsIDIwMTA2LCAyMDExMSwgMjAxMTUsIDIwMTIxLCAKLSAgICAyMDEyNiwgMjAxMzAsIDIwMTM1LCAyMDE0MCwgMjAxNDQsIDIwMTUxLCAyMDE1OCwgMjAxNjUsIDIwMTY5LCAyMDE3MywgCi0gICAgMjAxNzgsIDIwMTgyLCAyMDE4NSwgMjAxOTEsIDIwMjA0LCAyMDIwOSwgMjAyMTgsIDIwMjIzLCA3Nzk1LCAyMDIyOCwgCi0gICAgMjAyMzEsIDI2NjYsIDI2NzEsIDIwMjM1LCAyMDI0MSwgMjAyNDcsIDIwMjUyLCAyMDI1NywgMjAyNjIsIDIwMjY4LCAKLSAgICAyMDI3MywgMTIxOTAsIDIwMjc4LCAyMDI4MywgMjAyODgsIDIwMjk0LCAyMDI5OSwgMjAzMDQsIDIwMzEwLCAyMDMxNSwgCi0gICAgMjAzMTksIDIwMzI0LCAyMDMyOSwgMjAzMzQsIDIwMzM4LCAyMDM0MywgMjAzNDgsIDIwMzUzLCAyMDM1OCwgMjAzNjIsIAotICAgIDIwMzY2LCAyMDM3MSwgMjgzNiwgMjAzMjAsIDIwMzc1LCAyMDM4MywgMjAzOTAsIDgxMDAsIDIwNDAyLCAyMDQxMCwgCi0gICAgMjAzMjUsIDIwNDE3LCAyMDQyMiwgMjA0MzAsIDIwMzMwLCAyMDQzNSwgMjA0NDAsIDIwNDQ4LCAyMDQ1MywgMjA0NTgsIAotICAgIDIwNDYyLCAyMDQ2NywgMjA0NzEsIDIwNDc3LCAyMDQ4MCwgMjA0ODcsIDIwNDkxLCAyMDQ5NSwgMjA1MDEsIDIwNTA4LCAKLSAgICAyMDUxMywgNzM2MiwgMTY5MCwgMTY5NSwgMjA1MTcsIDIwNTIzLCAyMDUyOSwgMjA1MzQsIDIwNTM4LCAyMDU0MiwgMjA1NDYsIAotICAgIDIwNTQ5LCAyMDU1NSwgMjA1NjIsIDIwNTcwLCAyMDU3NiwgMjA1ODIsIDIwNTg3LCAyMDU5MiwgMjA1OTYsIDEzMDM5LCAKLSAgICAxMzg5NiwgMjA2MDEsIDIwNjEzLCAyMDYxNiwgMjA2MjMsIDIwNjMwLCAyMDYzNCwgMjA2NDIsIDIwNjUzLCAyMDY2MiwgCi0gICAgMjA2NzUsIDIwNjg1LCAyMDY5OSwgMjA3MTEsIDIwNzI1LCAyMDczNywgMjA3NDcsIDIwNzU5LCAyMDc2NSwgMjA3ODAsIAotICAgIDIwODA0LCAyMDgyMiwgMjA4NDEsIDIwODU0LCAyMDg2OCwgMjA4ODYsIDIwOTAyLCAyMDkxOSwgMjA5MzcsIDIwOTQ4LCAKLSAgICAyMDk2NywgMjA5ODQsIDIxMDA0LCAyMTAyMiwgMjEwMzQsIDIxMDQ4LCAyMTA2MiwgMjEwNzQsIDIxMDkxLCAyMTExMCwgCi0gICAgMjExMjgsIDIxMTQwLCAyMTE1OCwgMjExNzcsIDEyODE4LCAyMTE5MCwgMjEyMTAsIDIxMjIyLCA4ODcyLCAyMTIzNCwgCi0gICAgMjEyMzksIDIxMjQ0LCAyMTI0OSwgMjEyNTUsIDIxMjYwLCAyMTI2NCwgMjEyNzEsIDIzNTIsIDIxMjc1LCAyMTI4MSwgCi0gICAgMjEyODUsIDIxMjg4LCAyMTI5MiwgMjEzMDAsIDIxMzA2LCAyMDMzOSwgMjEzMTAsIDIxMzE5LCAyMTMzMCwgMjEzMzYsIAotICAgIDIxMzQyLCAyMTM1MSwgMjEzNTksIDIxMzY2LCAyMTM3MSwgMjEzNzgsIDIxMzg0LCAyMTM5MywgMjE0MDEsIDIxNDA4LCAKLSAgICAyMTQxOCwgMjE0MjcsIDIxNDM3LCAyMTQ0MiwgMjE0NTEsIDIxNDYwLCAyMTQ3MSwgMjE0ODIsIDM4ODAsIDIxNDkyLCAKLSAgICAyMTQ5NiwgMjE1MDYsIDIxNTE0LCAyMTUyNCwgMjE1MzUsIDIxNTQwLCAyMTU0OCwgMjE1NTUsIDIxNTYxLCAyMTU2NiwgCi0gICAgMjAzNDksIDIxNTcwLCAyMTU3OSwgMjE1ODMsIDIxNTg2LCAyMTU5MSwgMjE1OTgsIDIxNjA3LCAyMTYxNSwgMjE2MjMsIAotICAgIDIxNjMzLCAyMTY0MiwgMjE2NDgsIDIxNjU0LCAyMDM1NCwgMjAzNTksIDIxNjU4LCAyMTY2OCwgMjE2NzgsIDIxNjg4LCAKLSAgICAyMTY5NiwgMjE3MDMsIDIxNzEzLCAyMTcyMSwgMjE3MjksIDIxNzM1LCA5NjIsIDIxNzQ0LCAxMzAwMCwgNTM3LCAyMTc1OCwgCi0gICAgMjE3NjcsIDIxNzc1LCAyMTc4NiwgMjE3OTcsIDIxODA3LCAyMTgxNiwgMjE4MjgsIDIxODM3LCAyMTg0NiwgMjE4NTIsIAotICAgIDIxODYxLCAyMTg3MCwgMjE4ODAsIDIxODg4LCAyMTg5NiwgNzcyNywgMjE5MDIsIDIxOTA1LCAyMTkwOSwgMjE5MTQsIAotICAgIDIxOTE5LCA4MjE1LCAyMDM2NywgMjE5MjcsIDIxOTMzLCAyMTkzOSwgMjE5NDQsIDIxOTQ5LCAyMTk1MywgMjE5NjEsIAotICAgIDIxOTY3LCAyMTk3MywgMjE5NzcsIDM0NjcsIDIxOTg1LCAyMTk5MCwgMjE5OTUsIDIxOTk5LCAyMjAwMywgODI4NywgCi0gICAgMjIwMTAsIDIyMDE4LCAyMjAyNSwgMjIwMzEsIDgyOTYsIDgzMDIsIDIyMDM5LCAyMjA0NywgMjIwNTQsIDIyMDU5LCAKLSAgICAyMjA2NCwgMjIwNzAsIDIyMDc0LCAyMjA4NSwgMjIwOTAsIDI1NTUsIDIyMDk1LCAyMjEwNiwgMjIxMTIsIDIyMTE3LCAKLSAgICAyMjEyMSwgMjIxMjUsIDIyMTI4LCAyMjEzNSwgMjIxNDIsIDIyMTQ5LCAyMjE1NSwgMjIxNTksIDIyMTY0LCAyMjE2OCwgCi0gICAgMjIxNzIsIDk3OSwgMjIxNzYsIDIyMTgxLCAyMjE4NiwgMjIxOTEsIDIyMTk2LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAKLSAgICAyMjIxNiwgMjIyMjEsIDIyMjI2LCAyMjIzMSwgMjIyMzYsIDIyMjQxLCAyMjI0NywgMjIyNTIsIDIyMjU3LCAyMjI2MiwgCi0gICAgMjIyNjcsIDIyMjcyLCAyMjI3NywgMjIyODMsIDIyMjg4LCAyMjI5MywgMjIyOTgsIDIyMzAzLCAyMjMwOCwgMjIzMTMsIAotICAgIDIyMzE4LCAyMjMyNCwgMjIzMzAsIDIyMzM1LCAyMjM0MSwgMjIzNDYsIDIyMzUxLCA1LCAyMjM1NywgMjIzNjEsIDIyMzY1LCAKLSAgICAyMjM2OSwgMjIzNzQsIDIyMzc4LCAyMjM4MiwgMjIzODYsIDIyMzkwLCAyMjM5NSwgMjIzOTksIDIyNDA0LCAyMjQwOCwgCi0gICAgMjI0MTEsIDIyNDE1LCAyMjQyMCwgMjI0MjQsIDIyNDI5LCAyMjQzMywgMjI0MzcsIDIyNDQxLCAyMjQ0NiwgMjI0NTAsIAotICAgIDIyNDU0LCAyMjQ2NCwgMjI0NjksIDIyNDczLCAyMjQ3NywgMjI0ODIsIDIyNDg3LCAyMjQ5NiwgMjI1MDEsIDIyNTA2LCAKLSAgICAyMjUxMCwgMjI1MTQsIDIyNTI3LCAyMjUzOSwgMjI1NDgsIDIyNTU3LCAyMjU2MywgMjI1NjgsIDIyNTcyLCAyMjU3NiwgCi0gICAgMjI1ODYsIDIyNTk1LCAyMjYwMywgMjI2MDksIDIyNjE0LCAyMjYxOCwgMjI2MjUsIDIyNjM1LCAyMjY0NCwgMjI2NTIsIAotICAgIDIyNjYwLCAyMjY2NywgMjI2NzUsIDIyNjg0LCAyMjY5MywgMjI3MDEsIDIyNzA2LCAyMjcxMCwgMjI3MTQsIDIyNzE3LCAKLSAgICAyMjcxOSwgMjI3MjMsIDIyNzI3LCAyMjczMiwgMjI3MzcsIDIyNzQxLCAyMjc0NSwgMjI3NDgsIDIyNzUyLCAyMjc1NSwgCi0gICAgMjI3NTksIDIyNzYyLCAyMjc2NSwgMjI3NjksIDIyNzc1LCAyMjc3OSwgMjI3ODMsIDIyNzg3LCAyMjc5MiwgMjI3OTcsIAotICAgIDIyODAyLCAyMjgwNiwgMjI4MDksIDIyODE0LCAyMjgyMCwgMjI4MjUsIDIyODMxLCAyMjgzNiwgMjI4NDAsIDIyODQ0LCAKLSAgICAyMjg0OCwgMjI4NTMsIDIyODU3LCAyMjg2MiwgMjI4NjYsIDIyODczLCAyMjg3NywgMjI4ODAsIDIyODg0LCAyMjg5MCwgCi0gICAgMjI4OTYsIDIyOTAwLCAyMjkwNCwgMjI5MDksIDIyOTE2LCAyMjkyMiwgMjI5MjYsIDIyOTM1LCAyMjkzOSwgMjI5NDMsIAotICAgIDIyOTQ2LCAyMjk1MiwgMjI5NTcsIDIyOTYzLCAxNDUyLCAxNzU0LCAyMjk2OCwgMjI5NzMsIDIyOTc4LCAyMjk4MywgCi0gICAgMjI5ODgsIDIyOTkzLCAyMjk5OCwgMjEwNiwgMjE0OCwgMjMwMDMsIDIzMDA2LCAyMzAxMCwgMjMwMTQsIDIzMDE5LCAKLSAgICAyMzAyMywgMjMwMjcsIDIzMDMwLCAyMzAzNSwgMjMwNDAsIDIzMDQ0LCAyMzA0NywgMjMwNTIsIDIzMDU2LCAyMzA2MSwgCi0gICAgMjMwNjUsIDEzMDEyLCAyMzA3MCwgMjMwNzMsIDIzMDc2LCAyMzA4MCwgMjMwODUsIDIzMDk4LCAyMzEwMiwgMjMxMDUsIAotICAgIDIzMTEzLCAyMzEyMiwgMjMxMjksIDIzMTM0LCAyMzE0MCwgMjMxNDYsIDIzMTUzLCAyMzE2MCwgMjMxNjQsIDIzMTY4LCAKLSAgICAyMzE3MiwgMjMxNzcsIDIzMTgyLCAyMzE4NiwgMjMxOTQsIDIzMTk5LCAyMzIxMSwgMjMyMjIsIDIzMjI3LCAyMzIzMSwgCi0gICAgMjMyMzUsIDIzMjQxLCAyMzI0NiwgMjMyNTEsIDIzMjU1LCAyMzI1OCwgMjMyNjQsIDYzNDYsIDIyNzAsIDIzMjY4LCAKLSAgICAyMzI3MywgMjMyODksIDc4NDIsIDIzMzA5LCAyMzMxOCwgMjMzMzQsIDIzMzM4LCAyMzM0MSwgMjMzNDcsIDIzMzU3LCAKLSAgICAyMzM2MywgMjMzNzgsIDIzMzkwLCAyMzQwMSwgMjM0MDksIDIzNDE4LCAyMzQyNCwgMjM0MzMsIDIzNDQzLCAyMzQ1NCwgCi0gICAgMjM0NjUsIDIzNDc0LCAyMzQ4MywgMjM0OTEsIDIzNDk4LCAyMzUwNiwgMjM1MTksIDIzNTI2LCAyMzUzMiwgMjM1MzcsIAotICAgIDIzNTQ2LCAyMzU1MiwgMjM1NTcsIDIzNTY1LCAyMTUxNiwgMjM1NzcsIDIzNTg5LCAyMzYwMywgMjM2MTEsIDIzNjE4LCAKLSAgICAyMzYzMCwgMjM2MzksIDIzNjQ4LCAyMzY1NiwgMjM2NjQsIDIzNjcyLCAyMzY3OSwgMjM2ODgsIDIzNjk2LCAyMzcwNiwgCi0gICAgMjM3MTUsIDIzNzI1LCAyMzczNCwgMjM3NDMsIDIzNzUxLCAyMzc1NiwgMjM3NjAsIDIzNzYzLCAyMzc2NywgMjM3NzEsIAotICAgIDIzNzc1LCAyMzc3OSwgMjM3ODMsIDIzNzg5LCAyMzc5NSwgMjM4MDMsIDEzMDU3LCAyMzgxMCwgMjM4MTUsIDIzODIyLCAKLSAgICAyMzgyOCwgMjM4MzUsIDEzMDY1LCAyMzg0MiwgMjM4NDUsIDIzODU3LCAyMzg2NSwgMjM4NzEsIDIzODc2LCAyMzg4MCwgCi0gICAgODI0NSwgMjM4OTEsIDIzOTAxLCAyMzkxMCwgMjM5MTcsIDIzOTIxLCAxMzA3MCwgMjM5MjQsIDIzOTMxLCAyMzkzNSwgCi0gICAgMjM5NDEsIDIzOTQ0LCAyMzk1MSwgMjM5NTcsIDIzOTYxLCAyMzk2NiwgMjM5NzAsIDIzOTc5LCAyMzk4NiwgMjM5OTIsIAotICAgIDYzODcsIDIzOTk5LCAyNDAwNywgMjQwMTQsIDI0MDIwLCAyNDAyNSwgMjQwMzEsIDI0MDM3LCAyNDA0NSwgMjQwNDksIAotICAgIDI0MDUyLCAyNDA1NCwgMjM3NjgsIDI0MDYzLCAyNDA2OSwgMjQwNzksIDI0MDg0LCAyNDA5MSwgMjQwOTcsIDI0MTAyLCAKLSAgICAyNDEwNywgMjQxMTIsIDI0MTE3LCAyNDEyNCwgMjQxMzMsIDI0MTQwLCAyNDE0OSwgMjQxNTUsIDI0MTYwLCAyNDE2NiwgCi0gICAgMjQxNzEsIDI0MTc4LCAyNDE4OSwgMjQxOTQsIDI0MTk4LCAyNDIwOCwgMjQyMTQsIDI0MjE4LCAyNDIyMywgMjQyMzMsIAotICAgIDI0MjQyLCAyNDI0NiwgMjQyNTMsIDI0MjYxLCAyNDI2OCwgMjQyNzQsIDI0Mjc5LCAyNDI4NywgMjQyOTQsIDI0MzA2LCAKLSAgICAyNDMxNSwgMjQzMTksIDExMzYyLCAyNDMyNywgMjQzMzcsIDI0MzQxLCAyMzEwOSwgMjQzNTIsIDI0MzU3LCAyNDM2MSwgCi0gICAgMjQzNjgsIDI0Mzc1LCAyMDExNywgMjM2OTMsIDI0MzgwLCAyNDM4NCwgMjQzODcsIDIwOTU0LCAyNDM5MiwgMjQ0MDYsIAotICAgIDI0NDIyLCAyNDQ0MCwgMjQ0NTksIDI0NDc2LCAyNDQ5NCwgMjA5NzMsIDI0NTExLCAyNDUzMSwgMjA5OTAsIDI0NTQzLCAKLSAgICAyNDU1NSwgMTM5ODMsIDI0NTY3LCAyMTAxMCwgMjQ1ODEsIDI0NTkzLCA4ODg1LCAyNDYwNywgMjQ2MTIsIDI0NjE3LCAKLSAgICAyNDYyMiwgMjQ2MjgsIDI0NjM0LCAyNDY0MCwgMjQ2NDQsIDI0NjUxLCAyNDY1NiwgMjQ2NjYsIDI0NjcyLCA4NTMyLCAKLSAgICAyNDY3OCwgMjQ2ODAsIDI0Njg1LCAyNDY5MywgMjQ2OTcsIDI0MTIwLCAyNDcwMywgMjQ3MTAsIDk4NjksIDk4NzksIAotICAgIDI0NzE3LCAyNDcyNywgMjQ3MzIsIDI0NzM2LCAyNDczOSwgMjQ3NDUsIDI0NzUzLCAyNDc2NSwgMjQ3NzUsIDI0NzkxLCAKLSAgICAyNDgwNCwgMjQ4MTgsIDE0MDAxLCAyNDgzMiwgMjQ4MzksIDI0ODQzLCAyNDg0NiwgMjQ4NTEsIDI0ODU1LCAyNDg2MiwgCi0gICAgMjQ4NjksIDI0ODc5LCAyNDg4NCwgMjQ4ODksIDI0ODk0LCAyNDkwMiwgMjQ5MTAsIDI0OTE5LCAyNDkyNCwgNzkzOSwgCi0gICAgMjQ5MjgsIDI0OTMxLCAyNDkzNCwgMjQ5MzksIDI0OTQ2LCAyNDk1MSwgMjQ5NjcsIDI0OTc1LCAyNDk4MywgNzc5MCwgCi0gICAgMjQ5OTEsIDI0OTk2LCAyNTAwMCwgMjUwMDYsIDI1MDEyLCAyNTAxNSwgMjUwMjEsIDI1MDMzLCAyNTA0MSwgMjUwNDgsIAotICAgIDI1MDU0LCAyNTA2MSwgMjUwNzIsIDI1MDg2LCAyNTA5OSwgMjUxMDgsIDI1MTIwLCAyNTEzMSwgMjUxNDEsIDI1MTUwLCAKLSAgICAyNTE1OSwgMjUxNjcsIDI1MTc4LCA2MzY5LCAyNTE4NSwgMjUxOTEsIDI1MTk2LCAyNTIwMiwgMjUyMDksIDI1MjE5LCAKLSAgICAyNTIyOSwgMjUyMzgsIDI1MjQ0LCAyNTI1MSwgMjUyNTYsIDI1MjYzLCAyNTI3MSwgMjUyNzksIDI1MjkxLCA0NzA0LCAKLSAgICAyNTI5OCwgMjUzMDcsIDI1MzE1LCAyNTMyMSwgMjUzMjcsIDI1MzMyLCAyNTMzNiwgMjUzMzksIDI1MzQ1LCAyNTM1MiwgCi0gICAgMjUzNTcsIDI1MzYyLCAyNTM2NiwgMjUzNzgsIDI1Mzg5LCAyNTM5OCwgMjU0MDYsIDEzMTk3LCAyNTQxMSwgMjU0MTcsIAotICAgIDI1NDIzLCA5ODYyLCA3MDQ5LCAyNTQyOCwgMjU0MzEsIDI1NDM0LCAyNTQ0MCwgMjU0NDgsIDI1NDU2LCAyNTQ2MCwgCi0gICAgMjU0NjQsIDI1NDY5LCAyNTQ3MiwgMjU0ODEsIDI1NDg5LCAyNTUwMCwgMjU1MDQsIDI1NTEwLCAyNTUxNiwgMjU1MjAsIAotICAgIDI1NTI2LCAyNTUzNCwgMjU1NTYsIDI1NTgwLCAyNTU4NywgMjU1OTQsIDI1NjAwLCAyNTYwNiwgMjU2MTEsIDI1NjIyLCAKLSAgICAyNTY0MCwgMjU2NDcsIDI1NjU1LCAyNTY1OSwgMjU2NjgsIDI1NjgxLCAyNTY4OSwgMjU3MDEsIDI1NzEyLCAyNTcyMiwgCi0gICAgMjU3MzYsIDI1NzQ1LCAyNTc1MywgMjU3NjUsIDc4NTksIDI1Nzc2LCAyNTc4NywgMjU3OTksIDI1ODA5LCAyNTgxOCwgCi0gICAgMjU4MjMsIDI1ODI3LCAyNTgzNSwgMjU4NDUsIDI1ODUwLCAyNTg1NCwgMjU4NTcsIDI1ODYwLCAyNTg2OCwgMjU4NzYsIAotICAgIDI1ODg1LCAyNTg5NSwgMjU5MDQsIDI1OTEwLCAyNTkyNCwgMjYxNywgMjU5NDYsIDI1OTU3LCAyNTk2NiwgMjU5NzYsIAotICAgIDI1OTg4LCAyNTk5NywgMjYwMDcsIDI2MDE1LCAyNjAyMywgMjYwMzIsIDI2MDM3LCAyNjA0OCwgMjYwNTMsIDI2MDY0LCAKLSAgICAyNjA2OCwgMjYwNzgsIDI2MDg3LCAyNjA5NSwgMjYxMDUsIDI2MTE1LCAyNjEyMywgMjYxMzIsIDI2MTM5LCAyNjE0NywgCi0gICAgMjYxNTQsIDI2MTYzLCAyNjE2NywgMjYxNzUsIDI2MTgyLCAyNjE5MCwgMjYxOTcsIDI2MjA4LCAyNjIyMywgMjYyMzAsIAotICAgIDI2MjM2LCAyNjI0NiwgMjYyNTUsIDI2MjYxLCAyNjI2OCwgMTIzMTIsIDI2Mjc0LCAyNjI3OCwgMjYyODMsIDI2Mjg3LCAKLSAgICAyNjI5MSwgMjYyOTksIDI2MzA3LCAyNjMxMywgMjYzMjIsIDI2MzI5LCAyNjMzNCwgMjYzMzksIDI2MzQ5LCAyMTU2OCwgCi0gICAgMjYzNTMsIDI2MzU2LCAyNjM2MSwgMjYzNjYsIDI2MzcxLCAyNjM3NiwgMjYzODEsIDI2Mzg2LCAyNjM5MSwgMjYzOTYsIAotICAgIDI2NDAyLCAyNjQwNywgMjY0MTIsIDI2NDE4LCAxMjIzLCA2NzksIDI2NDIzLCAyNjQzMiwgMjMxOCwgMjY0MzksIDI2NDQ0LCAKLSAgICAyNjQ0OCwgMjY0NTQsIDEyNTYsIDU0MSwgMzM0LCAyNjQ1OSwgMjY0NjgsIDI2NDc2LCAyNjQ4NSwgMjY0OTMsIDI2NTA0LCAKLSAgICAyNjUxMywgMjY1MjEsIDI2NTI1LCAyNjUyOCwgMjY1MzYsIDI2NTQ0LCAyNjU0OSwgMTMwMjUsIDI2NTU1LCAyNjU2MSwgCi0gICAgMjY1NjcsIDQzNTAsIDI2NTcyLCAyNjU3NiwgMjY1ODIsIDI2NTg2LCAyNjU5MywgMTQxOCwgMjY1OTksIDc5NDYsIDI2NjA2LCAKLSAgICAyNjYxNiwgMjY2MjQsIDI2NjMwLCAyNjYzOSwgMjY2NDcsIDI2NjUzLCAyNjY2MSwgMjY2NjgsIDk0NTUsIDI2Njc0LCAKLSAgICAyNjY4MSwgMjY2ODgsIDE0NTksIDIxMDUsIDI2Njk0LCAyNjcwMCwgMjY3MDcsIDI2NzE4LCAyNjcyOSwgMjY3MzcsIAotICAgIDI2NzQ0LCAyNjc1NCwgMjY3NjMsIDI2NzcxLCAyNjc3OCwgMjY3ODUsIDI2Nzk4LCAyNjgwOSwgMjY4MjgsIDEyNjEsIAotICAgIDI2ODMyLCAyNjgzNywgMjY4NDUsIDM1MTAsIDI2ODQ5LCAyNjg1NCwgMjY4NTgsIDE0MjIsIDIyNzQ2LCAyNjg2OCwgCi0gICAgMjY4NzIsIDI2ODc3LCAyNjg4MSwgMzQzNSwgMjY4ODcsIDI2ODk1LCAyNjkwMiwgMjY5MTMsIDI2OTIxLCAyNjkyOSwgCi0gICAgMzUxMSwgMjY5LCAyNjkzNCwgMjY5NDIsIDI2OTUwLCAyNjk1NywgMjY5NjMsIDI2OTY4LCAyMTcwLCAyNjk3NSwgMjY5ODEsIAotICAgIDIzOTYyLCAyNDE4NCwgMjY5ODcsIDEwNiwgMjY5OTEsIDI2OTk1LCAyNzAwMSwgNjA2LCA3Njk1LCAyNzAwNiwgMjcwMTMsIAotICAgIDI3MDE5LCAyMjgxLCAyNzAyMywgMjcwMjcsIDI3MDMwLCAyNzAzMywgMjcwMzgsIDI3MDQ1LCAyNzA1MSwgMjcwNTYsIAotICAgIDI3MDY0LCAyNzA3MSwgMjcwNzcsIDIwNDU1LCAyNzA4MSwgMzU4MSwgMTQ4MjYsIDI3MDg1LCAyNzA5MCwgMjcwOTMsIAotICAgIDI3MTAxLCAyNzEwOSwgMjcxMTIsIDI3MTE5LCAyNzEyOSwgMjcxNDEsIDI3MTQ2LCAyNzE1MCwgMjcxNTgsIDI3MTY1LCAKLSAgICAyNzE3MSwgMjcxNzgsIDI3MTg1LCAyNzE4OCwgMjcxOTIsIDI3MTk2LCAxNDI2LCAyNzIwNiwgMjcyMDgsIDI3MjEzLCAKLSAgICAyNzIxOSwgMjcyMjUsIDI3MjMwLCAyNzIzNSwgMjcyNDAsIDI3MjQ1LCAyNzI1MCwgMjcyNTUsIDI3MjYwLCAyNzI2NSwgCi0gICAgMjcyNzAsIDI3Mjc1LCAyNzI4MCwgMjcyODUsIDI3MjkwLCAyNzI5NSwgMjczMDEsIDI3MzA3LCAyNzMxMywgMjczMTksIAotICAgIDI3MzI0LCAyNzMyOSwgMjczMzQsIDI3MzQwLCAyNzM0NSwgMjczNTAsIDI3MzU1LCAyNzM2MSwgMjczNjYsIDI3MzcyLCAKLSAgICAyNzM3NywgMjczODIsIDI3Mzg3LCAyNzM5MiwgMjczOTgsIDI3NDAzLCAyNzQwOSwgMjc0MTQsIDI3NDE5LCAyNzQyNCwgCi0gICAgMjc0MjksIDI3NDM1LCAyNzQ0MCwgMjc0NDYsIDI3NDUxLCAyNzQ1NiwgMjc0NjEsIDI3NDY2LCAyNzQ3MSwgMjc0NzYsIAotICAgIDI3NDgxLCAyNzQ4NiwgMjc0OTEsIDI3NDk3LCAyNzUwMywgMjc1MDksIDI3NTE0LCAyNzUxOSwgMjc1MjQsIDI3NTI5LCAKLSAgICAyNzUzNSwgMjc1NDEsIDI3NTQ3LCAyNzU1MywgMjc1NTksIDI3NTY1LCAyNzU3MCwgMjc1NzYsIDI3NTgxLCAyNzU4NiwgCi0gICAgMjc1OTEsIDI3NTk2LCAyNzYwMiwgMjM5NywgMjc2MDcsIDI0MDQsIDI0MTEsIDI3MDgsIDI3NjEyLCAyNDE3LCAyNDI3LCAKLSAgICAyNzYxOCwgMjc2MjIsIDI3NjI3LCAyNzYzMiwgMjc2MzgsIDI3NjQzLCAyNzY0OCwgMjc2NTIsIDI3NjU3LCAyNzY2MywgCi0gICAgMjc2NjgsIDI3NjczLCAyNzY3OCwgMjc2ODQsIDI3Njg5LCAyNzY5MywgMjc2OTcsIDI3NzAyLCAyNzcwNywgMjc3MTIsIAotICAgIDI3NzE3LCAyNzcyMiwgMjc3MjgsIDI3NzM0LCAyNzczOSwgMjc3NDMsIDI3NzQ4LCAyNzc1NCwgMjc3NTgsIDI3NzYzLCAKLSAgICAyNzc2OCwgMjc3NzMsIDI3Nzc4LCAyNzc4MiwgMjc3ODUsIDI3NzkwLCAyNzc5NSwgMjc4MDAsIDI3ODA1LCAyNzgxMSwgCi0gICAgMjc4MTcsIDI3ODIyLCAyNzgyNywgMjc4MzEsIDI3ODM2LCAyNzg0MSwgMjc4NDYsIDI3ODUxLCAyNzg1NiwgMjc4NjAsIAotICAgIDI3ODY1LCAyNzg3MCwgMjc4NzUsIDI3ODc5LCAyNzg4MywgMjc4ODcsIDI3ODkyLCAyNzkwMCwgMjc5MDYsIDI3OTEyLCAKLSAgICAyNzkxOCwgMjc5MjMsIDI3OTI3LCAyNzkzMCwgMjc5MzUsIDI3OTM5LCAyNzk0NCwgMjc5NDgsIDI3OTUzLCAyNzk1NywgCi0gICAgMjc5NjAsIDE1NDg5LCAyNzk2NSwgMjc5NzMsIDE5NDM5LCAyNjYwMywgMjc5NzgsIDI3OTgzLCAyNzk4NywgMjc5OTIsIAotICAgIDI3OTk2LCAyODAwMCwgMjgwMDUsIDI4MDA5LCAyODAxMiwgMjgwMTUsIDI4MDE5LCAyODAyNCwgMjgwMzIsIDI4MDM2LCAKLSAgICAyODAzOSwgMjgwNDQsIDI4MDQ4LCAyODA1MiwgMjgwNTcsIDI4MDYyLCAyODA2NiwgMjgwNzIsIDI4MDc3LCAyODA4MiwgCi0gICAgMjgwODksIDI4MDk2LCAyODEwMCwgMjgxMDMsIDI4MTA5LCAyODExOCwgMjgxMjUsIDI4MTMzLCAyODE0MCwgMjgxNDQsIAotICAgIDI4MTQ5LCAyODE1MywgMjgxNTksIDI4MTY1LCAyODE2OSwgMjgxNzUsIDI4MTgwLCAyODE4NSwgMjgxOTIsIDI4MTk4LCAKLSAgICAyODIwNCwgMjgyMTAsIDI4MjE2LCAyODIyMywgMjgyMjksIDI4MjM1LCAyODI0MSwgMjgyNDcsIDI4MjUzLCAyODI1OSwgCi0gICAgMjgyNjUsIDI4MjcyLCAyODI3OCwgMjgyODUsIDI4MjkxLCAyODI5NywgMjgzMDMsIDI4MzA5LCAyODMxNSwgMjgzMjEsIAotICAgIDI4MzI3LCAyODMzMywgMjgzMzksIDk3NjMsIDI4MzQ1LCAyODM1MCwgMjgzNTUsIDI4MzU4LCAyODM2NiwgMjgzNzEsIAotICAgIDI4MzgwLCAyODM4NiwgMjgzOTEsIDI4Mzk2LCAyODQwMSwgMjg0MDUsIDI4NDEwLCAyODQxNSwgMjg0MjAsIDI4NDI1LCAKLSAgICAyODQzMCwgMjg0MzcsIDI4NDQ0LCAyODQ1MCwgMjg0NTYsIDI4NDYxLCAxNDUxMCwgMjg0NjgsIDI4NDc0LCAyODQ4MSwgCi0gICAgMjg0ODcsIDI4NDkzLCAyODQ5OCwgMjg1MDYsIDI4NTExLCAxNDI5NCwgMjg1MTUsIDI4NTIwLCAyODUyNSwgMjg1MzEsIAotICAgIDI4NTM2LCAyODU0MSwgMjg1NDUsIDI4NTUwLCAyODU1NSwgMjg1NjEsIDI4NTY2LCAyODU3MSwgMjg1NzUsIDI4NTgwLCAKLSAgICAyODU4NSwgMjg1ODksIDI4NTk0LCAyODU5OSwgMjg2MDQsIDI4NjA4LCAyODYxMywgMjg2MTgsIDI4NjIzLCAyODYyNywgCi0gICAgMjg2MzEsIDEzNTMxLCAyODYzNSwgMjg2NDQsIDI4NjUwLCAyODY1NiwgMjg2NjUsIDI4NjczLCAyODY4MiwgMjg2OTAsIAotICAgIDI4Njk1LCAyODY5OSwgMjg3MDYsIDI4NzEyLCAyODcxNiwgMjg3MTksIDI4NzI0LCAyODczMywgMjg3NDEsIDI4NzQ2LCAKLSAgICAxNDU4LCAyODc1MiwgMjg3NTUsIDI4NzU5LCAyMDUyNCwgMjA1MzAsIDI4NzY1LCAyODc2OSwgMjg3ODAsIDI4NzkxLCAKLSAgICAyODgwMiwgMjg4MTQsIDI4ODIxLCAyODgyOCwgMjg4MzMsIDI4ODM3LCA0Mzg3LCA3MzMsIDE5NDM4LCAyODg0NSwgMjg4NDksIAotICAgIDI4ODU0LCAyODg2MCwgMjg4NjUsIDI4ODcxLCAyODg3NiwgMjg4ODIsIDI4ODg3LCA4NzY0LCAyNzg1LCAzMzY1LCAyODg5MSwgCi0gICAgMjg4OTQsIDI4OTAwLCAyODkwNiwgMjg5MTIsIDI4OTE5LCAyODkyNSwgMjg5MzEsIDI4OTM3LCAyODk0MywgMjg5NDksIAotICAgIDI4OTU1LCAyODk2MSwgMjg5NjcsIDI4OTczLCAyODk3OSwgMjg5ODUsIDI4OTkxLCAyODk5OCwgMjkwMDQsIDI5MDEwLCAKLSAgICAyOTAxNiwgMjkwMjIsIDI5MDI4LCAyOTAzMywgMjkwMzYsIDI5MDQzLCAyOTA1MSwgMjkwNTYsIDI5MDYxLCAyOTA2NywgCi0gICAgMjkwNzIsIDI5MDc3LCAyOTA4MSwgMjkwODYsIDI5MDkyLCAyOTA5NywgMjkxMDMsIDI5MTA4LCAyOTExNCwgMjkxMTksIAotICAgIDI5MTI1LCAyOTEzMSwgMjkxMzUsIDI5MTQwLCAyOTE0NSwgMjkxNTAsIDI5MTU1LCAyOTE1OSwgMjkxNjQsIDI5MTY5LCAKLSAgICAyOTE3NCwgMjkxODAsIDI5MTg2LCAyOTE5MiwgMjkxOTgsIDI5MjAzLCAyOTIwNywgMjkyMTAsIDI5MjE2LCAyOTIyMiwgCi0gICAgMjkyMzEsIDI5MjM5LCAyOTI0NiwgMjkyNTEsIDI5MjU1LCAyOTI1OSwgMjkyNjQsIDEzMzk1LCAyOTI2OSwgMjkyNzcsIAotICAgIDI5MjgzLCAzNjExLCAyOTI4OCwgMjkyOTEsIDI5Mjk1LCA2NDM2LCAyOTMwMSwgMjkzMDcsIDI5MzE0LCA2NDQ1LCAyOTMxOCwgCi0gICAgMjkzMjQsIDI5MzMxLCAyOTMzNywgMjkzNDYsIDI5MzU0LCAyOTM2NiwgMjkzNzAsIDI5Mzc3LCAyOTM4MywgMjkzODcsIAotICAgIDI5MzkwLCAyOTM5OSwgMjk0MDcsIDI5NDEyLCAyOTQxNiwgMjk0MjYsIDI5NDM2LCAyOTQ0NiwgMjk0NTIsIDI5NDU3LCAKLSAgICAyOTQ2NywgMjk0NzIsIDI5NDg1LCAyOTQ5OSwgMjk1MTAsIDI5NTIyLCAyOTUzNCwgMjk1NDgsIDI5NTYxLCAyOTU3MywgCi0gICAgMjk1ODUsIDEyODU5LCAyOTU5OSwgMjk2MDQsIDI5NjA5LCAyOTYxMywgMjk2MTcsIDI5NjIxLCAxNzQzLCAyNTEyOSwgCi0gICAgMjk2MjUsIDI5NjMwLCAyOTYzNSwgMjk2MzksIDI5NjQyLCAyOTY0NywgMjk2NTIsIDI5NjU4LCAyOTY2NCwgODQ2MSwgCi0gICAgMjk2NjksIDI5Njc2LCAxMzkzNSwgMjk2ODIsIDI5Njg3LCAyOTY5MiwgMjk2OTYsIDI5NzAxLCAyOTcwNiwgMjg4NTUsIAotICAgIDI5NzExLCAyOTcxNiwgMjk3MjEsIDI5NzI3LCAyODg2MSwgMjk3MzIsIDI5NzM1LCAyOTc0MiwgMjk3NTAsIDI5NzU2LCAKLSAgICAyOTc2MiwgMjk3NjgsIDI5Nzc5LCAyOTc4NCwgMjk3OTEsIDI5Nzk4LCAyOTgwNSwgMjk4MTMsIDI5ODIyLCAyOTgzMSwgCi0gICAgMjk4MzcsIDI5ODQzLCAyOTg1MSwgMjg4NjYsIDI5ODU2LCAyOTg2MiwgMjk4NjgsIDI4ODcyLCAyOTg3MywgMjk4ODEsIAotICAgIDI5ODg5LCAyOTg5NSwgMjk5MDIsIDI5OTA4LCAyOTkxNSwgMjk5MjIsIDI5OTI4LCAyOTkzNiwgMjk5NDYsIDI5OTUzLCAKLSAgICAyOTk1OCwgMjk5NjQsIDI5OTY5LCAyOTk3NCwgMjk5ODEsIDI5OTkwLCAyOTk5OCwgMzAwMDMsIDMwMDA5LCAzMDAxNiwgCi0gICAgMzAwMjQsIDMwMDMwLCAzMDAzNSwgMzAwNDEsIDMwMDUwLCAyNTg5MCwgMzAwNTcsIDMwMDYxLCAzMDA2NiwgMzAwNzUsIAotICAgIDMwMDgwLCAzMDA4NSwgMTA3MTQsIDMwMDkzLCAzMDA5OCwgMzAxMDMsIDMwMTA3LCAzMDExMiwgMzAxMTcsIDMwMTI0LCAKLSAgICAzMDEyOSwgMzAxMzQsIDI4ODc3LCAyODg4MywgMzAxNDAsIDI0NzMsIDIzOSwgMzAxNDMsIDMwMTQ2LCAzMDE1MCwgMzAxNTQsIAotICAgIDMwMTY0LCAzMDE3MiwgMzAxNzYsIDMwMTgzLCAzMDE5MCwgMzAxOTQsIDMwMTk3LCAzMDIwMywgMzAyMTEsIDMwMjE5LCAKLSAgICAzMDIyMywgMzAyMjcsIDMwMjMwLCAzMDIzNywgMzAyNDEsIDMwMjQ4LCAzMDI1NiwgMzAyNjMsIDMwMjY3LCAzMDI3NSwgCi0gICAgNjg0LCAyOTcsIDMwMjg3LCAzMDI5MiwgMzAyOTcsIDMwMzAzLCAzMDMwOCwgMzAzMTMsIDM2MzIsIDMwMzE4LCAzMDMyMSwgCi0gICAgMzAzMjYsIDMwMzMxLCAzMDMzNiwgMzAzNDEsIDMwMzQ2LCAzMDM1MywgMjA2MDksIDMwMzU4LCAzMDM2MywgMzAzNjgsIAotICAgIDMwMzczLCAzMDM3OCwgMzAzODQsIDMwMzg5LCAzMDM5NSwgMjkwMzksIDMwNDAxLCAzMDQwNiwgMzA0MTIsIDMwNDE4LCAKLSAgICAzMDQyOCwgMzA0MzMsIDMwNDM4LCAzMDQ0MiwgMzA0NDcsIDMwNDUyLCAzMDQ1NywgMzA0NjIsIDMwNDc1LCAzMDQ4MCwgCi0gICAgMjA0MDYsIDE0OTA2LCAzNjM4LCAzMDQ4NCwgMzA0ODksIDMwNDk0LCAzMDUwMCwgMzA1MDUsIDMwNTEwLCAzMDUxNCwgCi0gICAgMzA1MTksIDMwNTI0LCAzMDUzMCwgMzA1MzUsIDMwNTQwLCAzMDU0NCwgMzA1NDksIDMwNTU0LCAzMDU1OSwgMzA1NjMsIAotICAgIDMwNTY4LCAzMDU3MywgMzA1NzgsIDMwNTg0LCAzMDU5MCwgMzA1OTUsIDMwNTk5LCAzMDYwNCwgMzA2MDksIDMwNjE0LCAKLSAgICAzMDYxOCwgMzA2MjYsIDMwNjMwLCAzMDYzNiwgMzA2NDAsIDMwNjQ3LCAxNDY5OSwgMzA2NTMsIDMwNjYwLCAzMDY2OCwgCi0gICAgMzA2NzUsIDMwNjgxLCAzMDY5MywgMzA2OTksIDMwNzAzLCAyNzI3LCAzMDcwNywgMzA3MTEsIDMwMjMyLCAzMDcyMCwgCi0gICAgMzA3MzEsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUwLCAzMDc1NSwgMjA1MzUsIDMwNzU5LCAzMDc2NCwgMTk0NTksIAotICAgIDMwNzY4LCAzMDc3MywgMzA3NzksIDMwNzg0LCAzMDc4OCwgMzA3OTIsIDMwNzk1LCAzMDc5OSwgMzA4MDUsIDMwODE2LCAKLSAgICAzMDgyOCwgMzA4MzMsIDMwODM3LCAzMDg0MCwgMzQzLCAzMDg0NCwgMzA4NDksIDMwODU0LCAzMDg1OSwgMzA4NjQsIAotICAgIDMwODY5LCAzMDg3NSwgMzA4ODAsIDMwODg1LCAzMDg5MSwgMzA4OTYsIDMwOTAyLCAzMDkwNywgMzA5MTMsIDMwOTE4LCAKLSAgICAzMDkyMywgMzA5MjgsIDMwOTMzLCAzMDkzOCwgMzA5NDMsIDMwOTQ4LCAzMDk1MywgMzA5NTksIDMwOTY0LCAzMDk2OSwgCi0gICAgMzA5NzQsIDMwOTc5LCAzMDk4NCwgMzA5ODksIDMwOTk0LCAzMTAwMCwgMzEwMDYsIDMxMDExLCAzMTAxNiwgMzEwMjEsIAotICAgIDMxMDI2LCAzMTAzMSwgMzEwMzYsIDMxMDQxLCAzMTA0NiwgMzEwNTEsIDMxMDU2LCAzMTA2MSwgMzEwNjYsIDMxMDcxLCAKLSAgICAzMTA3NiwgMzEwODEsIDMxMDg2LCAzMTA5MSwgMzEwOTYsIDMxMTAyLCAyNiwgMzExMDcsIDMxMTExLCAzMTExNSwgMzExMjMsIAotICAgIDMxMTI3LCAzMTEzMSwgMzExMzQsIDMxMTM3LCAzMTEzOSwgMzExNDQsIDMxMTQ4LCAzMTE1MywgMzExNTcsIDMxMTYyLCAKLSAgICAzMTE2NiwgMzExNzEsIDMxMTc1LCAzMTE3OCwgMzExODAsIDMxMTg1LCAzMTE4OSwgMzEyMDAsIDMxMjAzLCAzMTIwNSwgCi0gICAgMzEyMDksIDMxMjIxLCAzMTIzMCwgMzEyMzQsIDMxMjQwLCAzMTI0NSwgMzEyNTQsIDMxMjYwLCAzMTI2NSwgMzEyNzAsIAotICAgIDMxMjc0LCAzMTI3OSwgMzEyODYsIDMxMjkxLCAzMTI5NywgMzEzMDIsIDMxMzA2LCAzMTMxMywgMjM3MDEsIDIzNzExLCAKLSAgICAzMTMxNywgMzEzMjIsIDMxMzI3LCAzMTMzMiwgMzEzMzksIDMxMzQzLCAzMTM1MCwgNjU0NCwgMzEzNTYsIDMxMzY1LCAKLSAgICAzMTM3MywgMzEzODgsIDMxNDAyLCAzMTQxMCwgMzE0MjEsIDMxNDMwLCAzMTQzNSwgNTY4MSwgMzE0NDUsIDMxNDUwLCAKLSAgICAzMTQ1NSwgMzE0NTksIDMxNDYyLCAzMTQ2NiwgMzE0NzEsIDMxNDc1LCAzMTQ4MiwgMzE0ODcsIDMxNDkyLCA3MzIwLCAKLSAgICAzMTUwMiwgMzE1MDQsIDMxNTA3LCAzMTUxMSwgMzE1MTcsIDMxNTIxLCAzMTUyNiwgMzE1MzEsIDMxNTM3LCAzMTU0MiwgCi0gICAgMzE1NDgsIDMxNTUzLCAzMTU2MywgMzE1NzIsIDMxNTgwLCAzMTU4NSwgMzE1OTEsIDMxNTk2LCAzMTYwMywgMzE2MDcsIAotICAgIDMxNjE1LCAzMTYyMiwgMzE2MzUsIDMxNjQzLCAzMTY0NywgMzE2NTcsIDMxNjYyLCAzMTY2NiwgMzE2NzQsIDMxNjgyLCAKLSAgICAzMTY4NiwgMzE2OTUsIDMxNzAxLCAzMTcwNiwgMzE3MTQsIDMxNzI0LCAzMTczMywgMzE3NDIsIDMxNzUxLCAzMTc2MiwgCi0gICAgMzE3NzAsIDMxNzgxLCAzMTc5MCwgMzE3OTcsIDMxODAzLCAzMTgwOCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzEsIAotICAgIDMxODM1LCAzMTg0MywgMzE4NDksIDMxODU3LCAzMTg2NCwgMzE4NzAsIDMxODc1LCAzMTg4MSwgMjM3MiwgMzE4ODUsIAotICAgIDMxODg3LCAzMTg5MiwgMzE4OTcsIDMxOTAwLCAzMTkwMiwgMzE5MDYsIDMxOTA5LCAzMTkxNiwgMzE5MjAsIDMxOTI0LCAKLSAgICAzMTkyNywgMzE5MzMsIDMxOTQzLCAzMTk0OCwgMzE5NTQsIDMxOTU4LCAzMTk2MywgMzE5NzYsIDI0MDc0LCAzMTk4MiwgCi0gICAgMzE5OTEsIDE1NjU0LCAzMTk5OCwgMzIwMDcsIDI5NDMyLCAzMjAxNSwgMzIwMjAsIDMyMDI0LCAzMjAzMiwgMzIwMzksIAotICAgIDMyMDQ0LCAzMjA0OCwgMzIwNTMsIDMyMDU3LCAzMjA2NSwgMzIwNzEsIDMyMDc3LCAzMjA4MiwgMzIwODYsIDMyMDg5LCAKLSAgICAzMjA5NCwgMzIxMDcsIDMyMTIzLCAyMTA4MCwgMzIxNDAsIDMyMTUyLCAzMjE2OSwgMzIxODEsIDMyMTk1LCAyMTA5NywgCi0gICAgMjExMTYsIDMyMjA3LCAzMjIxOSwgMjYzNCwgMzIyMzMsIDMyMjM4LCAzMjI0MywgMzIyNDgsIDMyMjUyLCAzMjI1OSwgCi0gICAgMzIyNzEsIDMyMjc3LCAzMjI4MCwgMzIyOTEsIDMyMzAyLCAyOTg0OCwgNjcwLCAzMjMwNywgMzIzMTEsIDMyMzE0LCAKLSAgICAzMjMxOSwgMzIzMjQsIDMyMzMwLCAzMjMzNSwgMzIzNDAsIDMyMzQ2LCAzMjM1MiwgMzIzNTcsIDMyMzYxLCAzMjM2NiwgCi0gICAgMzIzNzEsIDMyMzc2LCAzMjM4MCwgMzIzODMsIDMyMzg5LCAzMjM5NCwgMzIzOTksIDMyNDA0LCAzMjQwOCwgMzI0MTMsIAotICAgIDMyNDE5LCAzMjQyNywgMjQyOTksIDMyNDMyLCAzMjQzNywgMzI0NDQsIDMyNDUwLCAzMjQ1NiwgMzI0NjEsIDMyNDY5LCAKLSAgICAyMDYxOCwgMzI0NzYsIDMyNDgxLCAzMjQ4NiwgMzI0OTEsIDMyNDk1LCAzMjQ5OCwgMzI1MDMsIDMyNTA3LCAzMjUxMSwgCi0gICAgMzI1MTgsIDMyNTI0LCAzMjUzMCwgMzI1MzYsIDMyNTQzLCAzMjU0OCwgMzI1NTQsIDMxNjc3LCAzMjU1OCwgMzI1NjIsIAotICAgIDMyNTY3LCAzMjU4MCwgMzI1ODUsIDMyNTkxLCAzMjU5OSwgMzI2MDYsIDMyNjE0LCAzMjYyNCwgMzI2MzAsIDMyNjM2LCAKLSAgICAzMjY0MiwgMzI2NDYsIDMyNjU1LCAzMjY2MCwgMzI2NjUsIDg3ODcsIDMyNjcwLCAzMjY3NywgMzI2ODMsIDMyNjkzLCAKLSAgICAzMjY5OCwgMzI3MDQsIDMyNzEyLCAzNTQzLCAzMjcxOSwgMzI3MjYsIDM1NDksIDMyNzMwLCAzMjczNSwgMzI3NDYsIAotICAgIDMyNzUzLCAzMjc1OSwgMzI3NjgsIDMyNzcyLCAzOTMyLCAzMjc3NSwgMzI3ODIsIDMyNzg4LCAzMjc5NCwgMzI4MDIsIAotICAgIDMyODEyLCAyNjk1OCwgMzI4MTksIDMyODI3LCAzMjgzMywgMzI4MzgsIDMyODQ0LCAzMjg0OSwgMzI4NTUsIDMyODU5LCAKLSAgICAzMjg2NiwgMzI4NzIsIDMyODgxLCAyNDA5NCwgMzI4ODgsIDMyODkzLCAzMjg5NywgMzI5MDUsIDMyOTEzLCA3OTc0LCAKLSAgICA0MzczLCAzMjkyMCwgMzI5MjQsIDMyOTI4LCAzMjkzMywgMzI5MzksIDMyOTQ0LCAzMjk0OSwgMzI5NTYsIDMwMzQ5LCAKLSAgICAzMjk2MiwgMzI5NjcsIDMyOTcxLCAzMjk3NiwgMzI5ODAsIDMyOTg5LCAzMjk5MywgMzI5OTksIDMzMDA2LCAzMzAxMiwgCi0gICAgMzMwMTksIDMzMDI0LCAzMzAzMywgMzMwMzgsIDMzMDQyLCAzMzA0NywgMzMwNTQsIDMzMDYyLCAzMzA3MCwgMzMwNzUsIAotICAgIDE5NTA4LCAzMzA3OSwgMzMwODIsIDMzMDg2LCAzMzA5MCwgMzMwOTQsIDMzMDk3LCAzMzA5OSwgMzMxMDQsIDMzMTEyLCAKLSAgICAzMzExNiwgMzMxMjMsIDMzMTI3LCAzMzEzNSwgMzMxNDIsIDMzMTUyLCAzMzE1NiwgMzMxNjAsIDMzMTY4LCAzMzE3NiwgCi0gICAgMzMxODIsIDMzMTg3LCAzMzE5NiwgMTE2NjksIDMzMjAyLCAzMzIxMSwgMzMyMTYsIDMzMjIzLCAzMzIzMSwgMzMyMzksIAotICAgIDMzMjQ3LCAzMzI1NCwgMzMyNjEsIDMzMjY4LCAzMzI3NSwgMzMyODIsIDMzMjg3LCAzMzI5MywgMzMzMTAsIDMzMzE4LCAKLSAgICAzMzMyOCwgMzMzMzYsIDMzMzQzLCAzODUsIDMzMzQ3LCAzMzM1MywgMzMzNTcsIDMzMzYyLCAzMTQyNiwgMzMzNjgsIAotICAgIDMzMzcxLCAzMzM3NSwgMzMzODMsIDM1NTQsIDMzMzkxLCAzMzM5NywgMzM0MDMsIDMzNDEyLCAzMzQyMiwgMzM0MjksIAotICAgIDMzNDM1LCAzNTYwLCAzNTY2LCAzMzQ0NCwgMzM0NTEsIDMzNDU5LCAzMzQ2NCwgMzM0NjgsIDMzNDc1LCAzMzQ4MywgCi0gICAgMzM0ODksIDMzNDk4LCAzMzUwOCwgMzM1MTQsIDMzNTIyLCAzMzUzMSwgMzM1MzgsIDMzNTQ2LCAyMDE3NSwgMzM1NTMsIAotICAgIDMzNTYwLCAzMzU2NiwgMzM1NzYsIDMzNTg1LCAzMzU5NiwgMzM2MDAsIDMzNjEwLCAzMzYxNiwgMzM2MjMsIDMzNjMxLCAKLSAgICAzMzY0MCwgMzM2NDksIDMzNjU5LCAzMzY3MCwgMzM2NzcsIDMzNjgyLCAzMzY4OSwgMjk2NywgMzM2OTcsIDMzNzAzLCAKLSAgICAzMzcwOCwgMzM3MTQsIDMzNzIwLCAzMzcyNSwgMzM3MzgsIDMzNzUxLCAzMzc2NCwgMzM3NzEsIDMzNzc3LCAzMzc4NSwgCi0gICAgMzM3OTAsIDMzNzk0LCAxNDMyLCAzMzc5OCwgMzM4MDMsIDMzODA4LCAzMzgxMywgMzM4MTgsIDMzODI0LCAzMzgyOSwgCi0gICAgMzM4MzQsIDMzODM5LCAzMzg0NCwgMzM4NDksIDMzODU0LCAzMzg1OSwgMzM4NjUsIDMzODcxLCAzMzg3NiwgMzM4ODEsIAotICAgIDMzODg3LCAzMzg5MiwgMzM4OTcsIDMzOTAyLCAzMzkwOCwgMzM5MTMsIDMzOTE4LCAzMzkyMywgMzM5MjgsIDMzOTM0LCAKLSAgICAzMzkzOSwgMzM5NDQsIDMzOTUwLCAzMzk1NSwgMzM5NjAsIDMzOTY1LCAzMzk3MCwgMzM5NzUsIDMzOTgxLCAzMzk4NiwgCi0gICAgMzM5OTIsIDMzOTk3LCAzNDAwMywgMzQwMDgsIDM0MDEzLCAzNDAxOCwgMzQwMjQsIDM0MDMwLCAzNDAzNiwgMzQwNDIsIAotICAgIDM0MDQ4LCAzNDA1NCwgMzQwNjAsIDM0MDY2LCAzNDA3MSwgMzQwNzYsIDM0MDgyLCAzNDA4NywgMzQwOTIsIDM0MDk3LCAKLSAgICAzNDEwMiwgMzQxMDcsIDM0MTEyLCAzNDExNywgMzQxMjMsIDM0MTI4LCAzNDEzMywgMzQxMzksIDM0MTQ1LCAxMDEsIAotICAgIDM0MTUwLCAzNDE1MiwgMzQxNTYsIDM0MTYwLCAzNDE2NCwgMzQxNjksIDM0MTczLCA3ODk1LCAzNDE3NywgMzQxODMsIAotICAgIDQ3MzgsIDM0MTg5LCAzNDE5MiwgMzQxOTcsIDM0MjAxLCAzNDIwNiwgMzQyMTAsIDM0MjE0LCAzNDIxOSwgODU5NCwgCi0gICAgMzQyMjMsIDM0MjI3LCAzNDIzMSwgMTM2MjMsIDM0MjM2LCAzNDI0MCwgMzQyNDUsIDM0MjUwLCAzNDI1NSwgMzQyNTksIAotICAgIDM0MjY2LCAyNDA5OCwgMzQyNzIsIDM0Mjc1LCAzNDI3OSwgMzQyODQsIDM0MjkwLCAzNDI5NCwgMzQzMDIsIDM0MzA4LCAKLSAgICAzNDMxMywgMzQzMTcsIDM0MzIzLCAzNDMyNywgMzQzMzEsIDM0MDQsIDM0MDksIDI3MTQ0LCAzNDMzNCwgMzQzNDIsIAotICAgIDM0MzQ5LCAzNDM1MywgMzQzNjAsIDM0MzY1LCAzMzMsIDM0MzcwLCAzNDM3NCwgMzQzODAsIDM0MzkyLCAzNDM5OCwgCi0gICAgMzQ0MDQsIDM0NDA4LCAzNDQxNCwgMzQ0MjMsIDM0NDI3LCAzNDQzMSwgMzQ0MzYsIDM0NDQxLCAzNDQ0NiwgMzQ0NTAsIAotICAgIDM0NDU0LCAzNDQ2MSwgMzQ0NjcsIDM0NDcyLCAzNDQ4NywgMzQ1MDIsIDM0NTE3LCAzNDUzMywgMzQ1NTEsIDg1NDQsIAotICAgIDM0NTY1LCAzNDU3MiwgMzQ1NzYsIDM0NTc5LCAzNDU4OCwgMzQ1OTMsIDM0NTk3LCAzNDYwNSwgMzE2MjgsIDM0NjEzLCAKLSAgICAzNDYxNywgMzQ2MjcsIDI3MTE0LCAzNDYzOCwgMzQ2NDIsIDM0NjUxLCAzNDY1OSwgODE1MiwgMTMxNjMsIDM0NjYzLCAKLSAgICAzNDY2NiwgMzQ2NjksIDY1NTcsIDM4MDIsIDM0Njc0LCAzNDY4MiwgMzQ2ODYsIDM0Njg5LCAzNDY5MywgMzQ2OTgsIAotICAgIDM0NzAzLCAzNDcwOSwgMzQ3MTUsIDM0NzIwLCAzNDcyNCwgMjM5NDYsIDM0NzI4LCAzNDczMiwgMzQ3MzgsIDM0NzQyLCAKLSAgICA3NDQ2LCAzNDc1MSwgMzQ3NTgsIDM0NzYyLCAxMDIxMCwgMzQ3NjksIDM0Nzc1LCAzNDc4MCwgMzQ3ODcsIDM0Nzk0LCAKLSAgICAzNDgwMSwgMjY0ODAsIDY0ODAsIDM0ODA4LCAzNDgxNSwgMzQ4MjIsIDM0ODI4LCAzNDgzMywgMzQ4NDAsIDM0ODUxLCAKLSAgICAzNDg1NywgMzQ4NjIsIDM0ODY3LCAzNDg3NCwgMzQ4NzgsIDM0ODgyLCAzNDg5MiwgMzQ5MDMsIDM0OTA5LCAzNDkxNCwgCi0gICAgMzQ5MTksIDM0OTI0LCAzNDkyOSwgMzQ5MzQsIDM0OTM4LCAzNDk0MiwgMzQ5NDgsIDM0OTU2LCAyMjczLCA4MjgsIDg2MTYsIAotICAgIDg2MjEsIDg2MjcsIDM0OTY1LCA4NjMyLCA4NjM3LCA4NjQzLCAzNDk3MCwgMzQ5ODAsIDM0OTg0LCA4NjQ4LCAzNDk4OSwgCi0gICAgMzQ5OTIsIDM0OTk3LCAzNTAwMSwgMzUwMDYsIDM1MDExLCAzNTAxOCwgMzUwMjUsIDM1MDMzLCA4NTU3LCAzNTA0MCwgCi0gICAgMzUwNDMsIDM1MDQ5LCAzNTA1OSwgNDQwNywgMzUwNjgsIDM1MDcyLCAzNTA4MCwgMzUwODQsIDM1MDk0LCAzNTEwMCwgCi0gICAgMzUxMTEsIDM1MTE3LCAzNTEyMywgMzUxMjgsIDM1MTM0LCAzNTE0MCwgMzUxNDYsIDM1MTUxLCAzNTE1NCwgMzUxNjEsIAotICAgIDM1MTY3LCAzNTE3MiwgMzUxNzksIDM1MTg2LCAzNTE5MCwgMzUyMDAsIDM1MjEzLCAzNTIyMiwgMzUyMzEsIDM1MjQyLCAKLSAgICAzNTI1NSwgMzUyNjYsIDM1Mjc1LCAzNTI4NiwgMzUyOTEsIDM1MzAwLCAzNTMwNSwgODY1MywgMzUzMTEsIDM1MzE4LCAKLSAgICAzNTMyNiwgMzUzMzEsIDM1MzM1LCAzNTM0MiwgMzUzNDksIDM3NTcsIDIxLCAzNTM1MywgMzUzNTgsIDE0OTU4LCAzNTM2MiwgCi0gICAgMzUzNjUsIDM1MzY4LCAyNjAwMSwgMzUzNzIsIDI2NDg5LCAzNTM4MCwgMzUzODQsIDM1Mzg4LCAzNTM5MSwgMzUzOTcsIAotICAgIDM1NDAzLCAzNTQxMSwgMzU0MTcsIDM1NDI0LCAyNTk5MywgMzU0MjgsIDI2MTc4LCAzNTQzMiwgMzU0NDEsIDM1NDQ3LCAKLSAgICAzNTQ1MywgMzU0NTgsIDM1NDYyLCAzNTQ2OCwgMzU0NzIsIDM1NDc1LCAzNTQ4MywgMzU0OTEsIDI0MTU2LCAzNTQ5NywgCi0gICAgMzU1MDQsIDM1NTEwLCAzNTUxNSwgMzU1MjAsIDM1NTI0LCAzNTUzMCwgMzU1MzUsIDM1NTQxLCAzOTczLCA3NTUsIDM1NTQ4LCAKLSAgICAzNTU1MiwgMzU1NTUsIDEzNTEzLCAzNTU2NywgMzM1MjcsIDM1NTc4LCAzNTU4MSwgMzU1ODgsIDM1NTk0LCAzNTU5OCwgCi0gICAgMzU2MDQsIDM1NjA5LCAzNTYxNSwgMzU2MjAsIDM1NjI1LCAzNTYyOSwgMzU2MzMsIDM1NjM4LCAzNTY0MywgMzU2NTMsIAotICAgIDM1NjU5LCAzNTY3MiwgMzU2NzgsIDM1Njg1LCAzNTY5MCwgMzU2OTYsIDM1NzAxLCAxNDg0NCwgMTQzNSwgMTAwMiwgCi0gICAgMjg5NzQsIDI4OTgwLCAzNTcwNiwgMjg5ODYsIDI4OTk5LCAyOTAwNSwgMjkwMTEsIDM1NzEyLCAyOTAxNywgMjkwMjMsIAotICAgIDM1NzE4LCAzNTcyNCwgMTQsIDM1NzMyLCAzNTczOSwgMzU3NDMsIDM1NzQ3LCAzNTc1NSwgMjk3MzcsIDM1NzU5LCAzNTc2MywgCi0gICAgMzU3NzAsIDM1Nzc1LCAzNTc3OSwgMzU3ODQsIDM1NzkwLCAzNTc5NSwgMzU4MDEsIDM1ODA2LCAzNTgxMCwgMzU4MTQsIAotICAgIDM1ODE4LCAzNTgyMywgMzU4MjcsIDM1ODMyLCAzNTgzNiwgMzU4NDMsIDM1ODQ4LCAzNTg1MiwgMzU4NTcsIDM1ODYxLCAKLSAgICAzNTg2NiwgMzU4NzAsIDM1ODc1LCAzNTg4MSwgMTM3MzMsIDEzNzM4LCAzNTg4NiwgMzU4OTAsIDM1ODkzLCAzNTg5NywgCi0gICAgMzU5MDIsIDM1OTA2LCAzNTkxMiwgMzU5MTksIDM1OTI0LCAzNTkzNCwgMzU5MzksIDM1OTQ3LCAzNTk1MSwgMzU5NTQsIAotICAgIDI5NzUyLCAzNTk1OCwgNDAyNiwgMzU5NjMsIDM1OTY4LCAzNTk3MiwgMzU5NzcsIDM1OTgxLCAzNTk4NiwgMTE2ODcsIAotICAgIDM1OTk3LCAzNjAwMSwgMzYwMDQsIDM2MDA5LCAzNjAxMywgMzYwMTcsIDM2MDIwLCAzNjAyNCwgNjU3NiwgMTE3MDMsIAotICAgIDM2MDI3LCAzNjAzMCwgMzYwMzUsIDM2MDM5LCAzNjA0OCwgMzYwNjQsIDM2MDgwLCAzNjA5MCwgMjU5MDAsIDM2MDk3LCAKLSAgICAzNjEwMSwgMzYxMDYsIDM2MTExLCAzNjExNSwgMzYxMTksIDMzNjQ0LCAzNjEyNSwgMzYxMzAsIDM2MTM0LCAzNjE0MSwgCi0gICAgMzYxNDYsIDM2MTUwLCAzNjE1NCwgMjQ5NTgsIDM2MTYwLCAxOTYwMywgMzYxNjUsIDM2MTcyLCAzNjE4MCwgMzYxODYsIAotICAgIDM2MTkzLCAzNjIwMSwgMzYyMDcsIDM2MjExLCAzNjIxNywgMzYyMjUsIDM2MjI5LCAzNjIzOCwgNzg3NiwgMzYyNDYsIAotICAgIDM2MjUwLCAzNjI1OCwgMzYyNjUsIDM2MjcwLCAzNjI3NSwgMzYyNzksIDM2MjgyLCAzNjI4NiwgMzYyODksIDM2MjkzLCAKLSAgICAzNjMwMCwgMzYzMDUsIDM2MzExLCAyNDM3NywgMjkwMzQsIDM2MzE1LCAzNjMyMiwgMzYzMjgsIDM2MzM0LCAzNjMzOSwgCi0gICAgMzYzNDIsIDM2MzQ0LCAzNjM1MSwgMzYzNTgsIDM2MzY0LCAzNjM2OCwgMzYzNzEsIDM2Mzc1LCAzNjM3OSwgMzYzODMsIAotICAgIDM2Mzg4LCAzNjM5MiwgMzYzOTYsIDM2Mzk5LCAzNjQwMywgMzY0MTcsIDIxMTQ2LCAzNjQzNiwgMzY0NDksIDM2NDYyLCAKLSAgICAzNjQ3NSwgMjExNjQsIDM2NDkwLCA4ODQ2LCAzNjUwNSwgMzY1MTEsIDM2NTE1LCAzNjUxOSwgMzY1MjYsIDM2NTMxLCAKLSAgICAzNjUzNSwgMzY1NDIsIDM2NTQ4LCAzNjU1MywgMzY1NTksIDM2NTY5LCAzNjU4MSwgMzY1OTIsIDM2NTk3LCAzNjYwNCwgCi0gICAgMzY2MDgsIDM2NjEyLCAzNjYxNSwgMTQxMjksIDM2MDUsIDM2NjIzLCAxMzc2MCwgMzY2MzYsIDM2NjQzLCAzNjY0NywgCi0gICAgMzY2NTEsIDM2NjU2LCAzNjY2MSwgMzY2NjcsIDM2NjcxLCAzNjY3NSwgMzY2NzgsIDYxODgsIDEzNzcxLCAzNjY4MywgCi0gICAgMzY2ODcsIDM2NjkzLCAzNjcwMiwgMzY3MDcsIDMzNTA0LCAzNjcxMywgMzY3MTgsIDM2NzIyLCAzNjcyNywgMzY3MzQsIAotICAgIDM2NzM4LCAzNjc0MSwgMTI4MjQsIDM2NzQ2LCAzNjc1MywgMTAwOSwgMzY3NTcsIDM2NzYyLCAzNjc2NywgMzY3NzMsIAotICAgIDM2Nzc4LCAzNjc4MywgMzY3ODcsIDM2Nzk3LCAzNjgwMiwgMzY4MDgsIDM2ODEzLCAzNjgxOSwgMzY4MjQsIDM2ODMwLCAKLSAgICAzNjg0MCwgMzY4NDUsIDM2ODUwLCAzNjg1NCwgNTY4MywgNTY5NSwgMzY4NTksIDM2ODYyLCAzNjg2OSwgMzY4NzUsIAotICAgIDMxNzkzLCAzMTgwMCwgMzY4ODQsIDM2ODg4LCAyOTgwMCwgMzY4OTYsIDM2OTA3LCAzNjkxNSwgMzM2OTIsIDM2OTIyLCAKLSAgICAzNjkyNywgMzY5MzIsIDM2OTQzLCAzNjk1MCwgMzY5NjEsIDI5ODI0LCAxOTYwOSwgMzY5NjksIDcyMiwgMzY5NzQsIAotICAgIDM2OTgwLCAyNTk4NCwgMzY5ODYsIDM2OTkxLCAzNzAwMSwgMzcwMTAsIDM3MDE3LCAzNzAyMywgMzcwMjcsIDM3MDMwLCAKLSAgICAzNzAzNywgMzcwNDMsIDM3MDUwLCAzNzA1NiwgMzcwNjYsIDM3MDc0LCAzNzA4MCwgMzcwODYsIDM3MDkxLCAzNzA5NSwgCi0gICAgMzcxMDIsIDM3MTA4LCAzNzExNSwgMzYzODQsIDUzMCwgMTIxMTIsIDM3MTIxLCAzNzEyNiwgMzcxMjksIDM3MTM1LCAKLSAgICAzNzE0MywgMTM2NCwgMzcxNDgsIDM3MTUyLCAzNzE1NywgMzcxNjQsIDM3MTcwLCAzNzE3NCwgMzcxNzksIDM3MTg4LCAKLSAgICAzNzE5NSwgMzcyMDUsIDM3MjExLCAyNjAxOSwgMzcyMjgsIDM3MjM3LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgCi0gICAgMzcyNjksIDM3Mjc3LCAzNzI4NiwgMzcyOTQsIDM3Mjk4LCAzNzMwMywgMzczMTEsIDI5ODMzLCAzNzMxNywgMzczMzYsIAotICAgIDE0MDYyLCAzNzM1MCwgMzczNjYsIDM3MzgwLCAzNzM4NiwgMzczOTEsIDM3Mzk2LCAzNzQwMSwgMzc0MDcsIDI5ODM5LCAKLSAgICAzNzQxMiwgMzc0MTksIDM3NDI0LCAzNzQyOCwgMzQxLCAyODc4LCAzNzQzNSwgMzc0NDAsIDM3NDQ1LCAyNTI3NSwgMzcyNjYsIAotICAgIDM3NDQ5LCAzNzQ1NCwgMzc0NjIsIDM3NDY2LCAzNzQ2OSwgMzc0NzUsIDM3NDc5LCAyNjA3NCwgMzc0ODIsIDM3NDg3LCAKLSAgICAzNzQ5MSwgMzc0OTQsIDM3NDk5LCAzNzUwMywgMzc1MDgsIDM3NTEzLCAzNzUxNywgMzc1MjIsIDM3NTI2LCAzNzUzMCwgCi0gICAgMTkzNDYsIDE5MzU3LCAzNzUzNCwgMzc1MzksIDM3NTQ1LCAyNDkxNSwgMzc1NTAsIDM3NTU0LCAxOTQyNSwgMTQyODAsIAotICAgIDM3NTU3LCAzNzU2MiwgMzc1NjcsIDM3NTcyLCAzNzU3NywgMzc1ODIsIDM3NTg3LCAzNzU5MiwgNDQwLCA0MywgMjkwNTIsIAotICAgIDI5MDU3LCAyOTA2MiwgMjkwNjgsIDI5MDczLCAyOTA3OCwgMzc1OTcsIDI5MDgyLCAzNzYwMSwgMzc2MDUsIDI5MDg3LCAKLSAgICAyOTA5MywgMzc2MDksIDI5MTA0LCAyOTEwOSwgMzc2MTcsIDM3NjIyLCAyOTExNSwgMzc2MjcsIDM3NjMyLCAzNzYzNywgCi0gICAgMzc2NDIsIDM3NjQ4LCAzNzY1NCwgMzc2NjAsIDI5MTMyLCAzNzY3MywgMzc2NzksIDI5MTM2LCAzNzY4MywgMjkxNDEsIAotICAgIDM3Njg4LCAyOTE0NiwgMjkxNTEsIDM3NjkxLCAzNzY5NiwgMzc3MDAsIDI4Nzk1LCAzNzcwNiwgMTE5MTEsIDM3NzEzLCAKLSAgICAzNzcxOCwgMjkxNTYsIDM3NzIyLCAzNzcyNywgMzc3MzIsIDM3NzM3LCAzNzc0MSwgMzc3NDYsIDM3NzUxLCAzNzc1NywgCi0gICAgMzc3NjIsIDM3NzY3LCAzNzc3MywgMzc3NzksIDM3Nzg0LCAzNzc4OCwgMzc3OTMsIDM3Nzk4LCAzNzgwMywgMzc4MDcsIAotICAgIDM3ODEyLCAzNzgxNywgMzc4MjIsIDM3ODI4LCAzNzgzNCwgMzc4NDAsIDM3ODQ1LCAzNzg0OSwgMzc4NTQsIDM3ODU4LCAKLSAgICAyOTE2MCwgMjkxNjUsIDI5MTcwLCAzNzg2MiwgMzc4NjYsIDI5MTc1LCAyOTE4MSwgMjkxODcsIDI5MTk5LCAzNzg3OCwgCi0gICAgMjM5ODMsIDM3ODgyLCAzNzg4NiwgMzc4OTEsIDM3ODk2LCAzNzkwMSwgMzc5MDUsIDM3OTA5LCAzNzkxOSwgMzc5MjQsIAotICAgIDM3OTI5LCAzNzkzMywgMzc5MzcsIDM3OTQwLCAzNzk0OCwgMjkyNDcsIDM3OTUzLCAxNDQyLCAzNzk1OSwgMzc5NjcsIAotICAgIDM3OTc2LCAzNzk4MCwgMzc5ODgsIDM3OTk0LCAzODAwMiwgMzgwMTgsIDM4MDIzLCAzODAzOCwgMjkyODQsIDE3MTIsIAotICAgIDEwMzc1LCAzODA0MiwgMjkyNCwgMzgwNTQsIDM4MDU1LCAzODA2MywgMzgwNzAsIDM4MDc1LCAzODA4MiwgMzgwODcsIAotICAgIDc3NDYsIDEwOTAsIDg2NzUsIDM4MDk0LCAzODA5OSwgMzgxMDIsIDM4MTA1LCAzODExNCwgMTI3NSwgMzgxMTksIDM2NTMyLCAKLSAgICAzODEyNiwgMzgxMzEsIDIwNTgzLCAyNTExLCAzODEzNSwgOTA5NCwgMzgxNDUsIDM4MTUxLCAyMjkxLCAyMzAxLCAzODE2MCwgCi0gICAgMzgxNjksIDM4MTc5LCAzODE5MCwgMzIzNSwgMzE5NDQsIDg3MjcsIDM3MzUsIDE0ODgyLCAxMjgwLCAzODE5NSwgMzgyMDMsIAotICAgIDM4MjEwLCAzODIxNSwgMzgyMTksIDM4MjIzLCAyMTkzMCwgODc1NCwgMzgyMzEsIDM4MjQwLCAzODI0OSwgMzgyNTcsIAotICAgIDM4MjY0LCAzODI2OSwgMzgyODIsIDM4Mjk1LCAzODMwNywgMzgzMTksIDM4MzMxLCAzODM0NCwgMzgzNTUsIDM4MzY2LCAKLSAgICAzODM3NiwgMzgzODQsIDM4MzkyLCAzODQwNCwgMzg0MTYsIDM4NDI3LCAzODQzNiwgMzg0NDQsIDM4NDUxLCAzODQ2MywgCi0gICAgMzg0NzAsIDM4NDc5LCAzODQ4NiwgMzg0OTksIDM4NTA0LCAzODUxNCwgMzg1MTksIDM4NTI1LCAzODUzMCwgMzQ3NTksIAotICAgIDM4NTM0LCAzODU0MSwgMzg1NDUsIDM4NTUyLCAzODU2MCwgMjQ3MiwgMzg1NjcsIDM4NTc4LCAzODU4OCwgMzg1OTcsIAotICAgIDM4NjA1LCAzODYxNSwgMzg2MjMsIDM4NjMzLCAzODY0MiwgMzg2NDcsIDM4NjUzLCAzODY1OSwgMzg2NzAsIDM4NjgwLCAKLSAgICAzODY4OSwgMzg2OTgsIDM4NzA4LCAzODcxNiwgMzg3MjUsIDM4NzMwLCAzODczNSwgMzg3NDAsIDE2NjgsIDM3LCAzODc0OCwgCi0gICAgMzg3NTYsIDM4NzY3LCAzODc3OCwgMTQ1NjMsIDM4Nzg4LCAzODc5NSwgMzg4MDEsIDM4ODA2LCAzODgxMCwgMzg4MjEsIAotICAgIDM4ODMxLCAzODg0MCwgMzg4NTEsIDE0OTMxLCAxNDkzNiwgMzg4NTYsIDM4ODY1LCAzODg3MCwgMzg4ODAsIDM4ODg1LCAKLSAgICAzODg5MywgMzg5MDEsIDM4OTA4LCAzODkxNCwgNTUzNiwgMTAzOCwgMzg5MTgsIDM4OTI0LCAzODkyOSwgMzg5MzIsIDIwNzUsIAotICAgIDM2NjQ4LCAzODk0MCwgMzg5NDQsIDM4OTQ3LCAxNDc1LCAzODk1MywgMTIyNjEsIDEyODUsIDM4OTU4LCAzODk3MSwgCi0gICAgMzg5ODUsIDI1OTcsIDM5MDAzLCAzOTAxNSwgMzkwMjcsIDI2MTEsIDI2MjgsIDM5MDQxLCAzOTA1NCwgMjY0MywgMzkwNjgsIAotICAgIDM5MDgwLCAyNjU4LCAzOTA5NCwgMTI5MSwgMTI5NywgMTMwMywgOTAxMiwgMzkwOTksIDM5MTA0LCAzOTEwOSwgMzkxMTMsIAotICAgIDM5MTI4LCAzOTE0MywgMzkxNTgsIDM5MTczLCAzOTE4OCwgMzkyMDMsIDM5MjE4LCAzOTIzMywgMzkyNDgsIDM5MjYzLCAKLSAgICAzOTI3OCwgMzkyOTMsIDM5MzA4LCAzOTMyMywgMzkzMzgsIDM5MzUzLCAzOTM2OCwgMzkzODMsIDM5Mzk4LCAzOTQxMywgCi0gICAgMzk0MjgsIDM5NDQzLCAzOTQ1OCwgMzk0NzMsIDM5NDg4LCAzOTUwMywgMzk1MTgsIDM5NTMzLCAzOTU0OCwgMzk1NjMsIAotICAgIDM5NTc4LCAzOTU5MywgMzk2MDgsIDM5NjIzLCAzOTYzOCwgMzk2NTMsIDM5NjY4LCAzOTY4MywgMzk2OTgsIDM5NzEzLCAKLSAgICAzOTcyOCwgMzk3NDMsIDM5NzU4LCAzOTc3MywgMzk3ODgsIDM5ODAzLCAzOTgxOCwgMzk4MzMsIDM5ODQ4LCAzOTg2MywgCi0gICAgMzk4NzgsIDM5ODkzLCAzOTkwOCwgMzk5MjMsIDM5OTM4LCAzOTk1MywgMzk5NjgsIDM5OTgzLCAzOTk5OCwgNDAwMTMsIAotICAgIDQwMDI4LCA0MDA0MywgNDAwNTgsIDQwMDczLCA0MDA4OCwgNDAxMDMsIDQwMTE4LCA0MDEzMywgNDAxNDgsIDQwMTYzLCAKLSAgICA0MDE3OCwgNDAxOTMsIDQwMjA4LCA0MDIyMywgNDAyMzgsIDQwMjUzLCA0MDI2OCwgNDAyODMsIDQwMjk4LCA0MDMxMywgCi0gICAgNDAzMjgsIDQwMzQzLCA0MDM1OCwgNDAzNzMsIDQwMzg4LCA0MDQwMywgNDA0MTgsIDQwNDMzLCA0MDQ0OCwgNDA0NjMsIAotICAgIDQwNDc4LCA0MDQ5MywgNDA1MDgsIDQwNTIzLCA0MDUzOCwgNDA1NTMsIDQwNTY4LCA0MDU4MywgNDA1OTgsIDQwNjEzLCAKLSAgICA0MDYyOCwgNDA2NDMsIDQwNjU4LCA0MDY3MywgNDA2ODgsIDQwNzAzLCA0MDcxOCwgNDA3MzMsIDQwNzQ4LCA0MDc2MywgCi0gICAgNDA3NzgsIDQwNzkzLCA0MDgwOCwgNDA4MjMsIDQwODM4LCA0MDg1MywgNDA4NjgsIDQwODgzLCA0MDg5OCwgNDA5MTMsIAotICAgIDQwOTI4LCA0MDk0MywgNDA5NTgsIDQwOTczLCA0MDk4OCwgNDEwMDMsIDQxMDE4LCA0MTAzMywgNDEwNDgsIDQxMDYzLCAKLSAgICA0MTA3OCwgNDEwOTMsIDQxMTA4LCA0MTEyMywgNDExMzgsIDQxMTUzLCA0MTE2OCwgNDExODMsIDQxMTk4LCA0MTIxMywgCi0gICAgNDEyMjgsIDQxMjQzLCA0MTI1OCwgNDEyNzMsIDQxMjg4LCA0MTMwMywgNDEzMTgsIDQxMzMzLCA0MTM0OCwgNDEzNjMsIAotICAgIDQxMzc4LCA0MTM5MywgNDE0MDgsIDQxNDIzLCA0MTQzOCwgNDE0NTMsIDQxNDY4LCA0MTQ4MywgNDE0OTgsIDQxNTEzLCAKLSAgICA0MTUyOCwgNDE1NDMsIDQxNTU4LCA0MTU3MywgNDE1ODgsIDQxNjAzLCA0MTYxOCwgNDE2MzMsIDQxNjQ4LCA0MTY2MywgCi0gICAgNDE2NzgsIDQxNjkzLCA0MTcwOCwgNDE3MjMsIDQxNzM4LCA0MTc1MywgNDE3NjgsIDQxNzgzLCA0MTc5OCwgNDE4MTMsIAotICAgIDQxODI4LCA0MTg0MywgNDE4NTgsIDQxODczLCA0MTg4OCwgNDE5MDMsIDQxOTE4LCA0MTkzMywgNDE5NDgsIDQxOTYzLCAKLSAgICA0MTk3OCwgNDE5OTMsIDQyMDA4LCA0MjAyMywgNDIwMzgsIDQyMDUzLCA0MjA2OCwgNDIwODMsIDQyMDk4LCA0MjExMywgCi0gICAgNDIxMjgsIDQyMTQzLCA0MjE1OCwgNDIxNzMsIDQyMTg4LCA0MjIwMywgNDIyMTgsIDQyMjMzLCA0MjI0OCwgNDIyNjMsIAotICAgIDQyMjc4LCA0MjI5MywgNDIzMDgsIDQyMzIzLCA0MjMzOCwgNDIzNTMsIDQyMzY4LCA0MjM4MywgNDIzOTgsIDQyNDEzLCAKLSAgICA0MjQyOCwgNDI0NDMsIDQyNDU4LCA0MjQ3MywgNDI0ODgsIDQyNTAzLCA0MjUxOCwgNDI1MzMsIDQyNTQ4LCA0MjU2MywgCi0gICAgNDI1NzgsIDQyNTkzLCA0MjYwOCwgNDI2MjMsIDQyNjM4LCA0MjY1MywgNDI2NjgsIDQyNjgzLCA0MjY5OCwgNDI3MTMsIAotICAgIDQyNzI4LCA0Mjc0MywgNDI3NTgsIDQyNzczLCA0Mjc4OCwgNDI4MDMsIDQyODE4LCA0MjgzMywgNDI4NDgsIDQyODYzLCAKLSAgICA0Mjg3OCwgNDI4OTMsIDQyOTA4LCA0MjkyMywgNDI5MzgsIDQyOTUzLCA0Mjk2OCwgNDI5ODMsIDQyOTk4LCA0MzAxMywgCi0gICAgNDMwMjgsIDQzMDQzLCA0MzA1OCwgNDMwNzMsIDQzMDg4LCA0MzEwMywgNDMxMTgsIDQzMTMzLCA0MzE0OCwgNDMxNjMsIAotICAgIDQzMTc4LCA0MzE5MywgNDMyMDgsIDQzMjIzLCA0MzIzOCwgNDMyNTMsIDQzMjY4LCA0MzI4MywgNDMyOTgsIDQzMzEzLCAKLSAgICA0MzMyOCwgNDMzNDMsIDQzMzU4LCA0MzM3MywgNDMzODgsIDQzNDAzLCA0MzQxOCwgNDM0MzMsIDQzNDQ4LCA0MzQ2MywgCi0gICAgNDM0NzgsIDQzNDkzLCA0MzUwOCwgNDM1MjMsIDQzNTM4LCA0MzU1MywgNDM1NjgsIDQzNTgzLCA0MzU5OCwgNDM2MTMsIAotICAgIDQzNjI4LCA0MzY0MywgNDM2NTgsIDQzNjczLCA0MzY4OCwgNDM3MDMsIDQzNzE4LCA0MzczMywgNDM3NDgsIDQzNzYzLCAKLSAgICA0Mzc3OCwgNDM3OTMsIDQzODA4LCA0MzgyMywgNDM4MzgsIDQzODUzLCA0Mzg2OCwgNDM4ODMsIDQzODk4LCA0MzkxMywgCi0gICAgNDM5MjgsIDQzOTQzLCA0Mzk1OCwgNDM5NzMsIDQzOTg4LCA0NDAwMywgNDQwMTgsIDQ0MDMzLCA0NDA0OCwgNDQwNjMsIAotICAgIDQ0MDc4LCA0NDA5MywgNDQxMDgsIDQ0MTIzLCA0NDEzOCwgNDQxNTMsIDQ0MTY4LCA0NDE4MywgNDQxOTgsIDQ0MjEzLCAKLSAgICA0NDIyOCwgNDQyNDMsIDQ0MjU4LCA0NDI3MywgNDQyODgsIDQ0MzAzLCA0NDMxOCwgNDQzMzMsIDQ0MzQ4LCA0NDM2MywgCi0gICAgNDQzNzgsIDQ0MzkzLCA0NDQwOCwgNDQ0MjMsIDQ0NDM4LCA0NDQ1MywgNDQ0NjgsIDQ0NDgzLCA0NDQ5OCwgNDQ1MTMsIAotICAgIDQ0NTI4LCA0NDU0MywgNDQ1NTgsIDQ0NTczLCA0NDU4OCwgNDQ2MDMsIDQ0NjE4LCA0NDYzMywgNDQ2NDgsIDQ0NjYzLCAKLSAgICA0NDY3OCwgNDQ2OTMsIDQ0NzA4LCA0NDcyMywgNDQ3MzgsIDQ0NzUzLCA0NDc2OCwgNDQ3ODMsIDQ0Nzk4LCA0NDgxMywgCi0gICAgNDQ4MjgsIDQ0ODQzLCA0NDg1OCwgNDQ4NzMsIDQ0ODg4LCA0NDkwMywgNDQ5MTgsIDQ0OTMzLCA0NDk0OCwgNDQ5NjMsIAotICAgIDQ0OTc4LCA0NDk5MywgNDUwMDgsIDQ1MDIzLCA0NTAzOCwgNDUwNTMsIDQ1MDY4LCA0NTA4MywgNDUwOTgsIDQ1MTEzLCAKLSAgICA0NTEyOCwgNDUxNDMsIDQ1MTU4LCA0NTE3MywgNDUxODgsIDQ1MjAzLCA0NTIxOCwgNDUyMzMsIDQ1MjQ4LCA0NTI2MywgCi0gICAgNDUyNzgsIDQ1MjkzLCA0NTMwOCwgNDUzMjMsIDQ1MzM4LCA0NTM1MywgNDUzNjgsIDQ1MzgzLCA0NTM5OCwgNDU0MTMsIAotICAgIDQ1NDI4LCA0NTQ0MywgNDU0NTgsIDQ1NDczLCA0NTQ4OCwgNDU1MDMsIDQ1NTE4LCA0NTUzMywgNDU1NDgsIDQ1NTYzLCAKLSAgICA0NTU3OCwgNDU1OTMsIDQ1NjA4LCA0NTYyMywgNDU2MzgsIDQ1NjUzLCA0NTY2OCwgNDU2ODMsIDQ1Njk4LCA0NTcxMywgCi0gICAgNDU3MjgsIDQ1NzQzLCA0NTc1OCwgNDU3NzMsIDQ1Nzg4LCA0NTgwMywgNDU4MTgsIDQ1ODMzLCA0NTg0OCwgNDU4NjMsIAotICAgIDQ1ODc4LCA0NTg5MywgNDU5MDgsIDQ1OTIzLCA0NTkzOCwgNDU5NTMsIDQ1OTY4LCA0NTk4MywgNDU5OTgsIDQ2MDEzLCAKLSAgICA0NjAyOCwgNDYwNDMsIDQ2MDU4LCA0NjA3MywgNDYwODgsIDQ2MTAzLCA0NjExOCwgNDYxMzMsIDQ2MTQ4LCA0NjE2MywgCi0gICAgNDYxNzgsIDQ2MTkzLCA0NjIwOCwgNDYyMjMsIDQ2MjM4LCA0NjI1MywgNDYyNjgsIDQ2MjgzLCA0NjI5OCwgNDYzMTMsIAotICAgIDQ2MzI4LCA0NjM0MywgNDYzNTgsIDQ2MzczLCA0NjM4OCwgNDY0MDMsIDQ2NDE4LCA0NjQzMywgNDY0NDgsIDQ2NDYzLCAKLSAgICA0NjQ3OCwgNDY0OTMsIDQ2NTA4LCA0NjUyMywgNDY1MzgsIDQ2NTUzLCA0NjU2OCwgNDY1ODMsIDQ2NTk4LCA0NjYxMywgCi0gICAgNDY2MjgsIDQ2NjQzLCA0NjY1OCwgNDY2NzMsIDQ2Njg4LCA0NjcwMywgNDY3MTgsIDQ2NzMzLCA0Njc0OCwgNDY3NjMsIAotICAgIDQ2Nzc4LCA0Njc5MywgNDY4MDgsIDQ2ODIzLCA0NjgzOCwgNDY4NTMsIDQ2ODY4LCA0Njg4MywgNDY4OTksIDQ2OTE1LCAKLSAgICA0NjkzMSwgNDY5NDcsIDQ2OTYzLCA0Njk3OSwgNDY5OTUsIDQ3MDExLCA0NzAyNywgNDcwNDMsIDQ3MDU5LCA0NzA3NSwgCi0gICAgNDcwOTEsIDQ3MTA3LCA0NzEyMywgNDcxMzksIDQ3MTU1LCA0NzE3MSwgNDcxODcsIDQ3MjAzLCA0NzIxOSwgNDcyMzUsIAotICAgIDQ3MjUxLCA0NzI2NywgNDcyODMsIDQ3Mjk5LCA0NzMxNSwgNDczMzEsIDQ3MzQ3LCA0NzM2MywgNDczNzksIDQ3Mzk1LCAKLSAgICA0NzQxMSwgNDc0MjcsIDQ3NDQzLCA0NzQ1OSwgNDc0NzUsIDQ3NDkxLCA0NzUwNywgNDc1MjMsIDQ3NTM5LCA0NzU1NSwgCi0gICAgNDc1NzEsIDQ3NTg3LCA0NzYwMywgNDc2MTksIDQ3NjM1LCA0NzY1MSwgNDc2NjcsIDQ3NjgzLCA0NzY5OSwgNDc3MTUsIAotICAgIDQ3NzMxLCA0Nzc0NywgNDc3NjMsIDQ3Nzc5LCA0Nzc5NSwgNDc4MTEsIDQ3ODI3LCA0Nzg0MywgNDc4NTksIDQ3ODc1LCAKLSAgICA0Nzg5MSwgNDc5MDcsIDQ3OTIzLCA0NzkzOSwgNDc5NTUsIDQ3OTcxLCA0Nzk4NywgNDgwMDMsIDQ4MDE5LCA0ODAzNSwgCi0gICAgNDgwNTEsIDQ4MDY3LCA0ODA4MywgNDgwOTksIDQ4MTE1LCA0ODEzMSwgNDgxNDcsIDQ4MTYzLCA0ODE3OSwgNDgxOTUsIAotICAgIDQ4MjExLCA0ODIyNywgNDgyNDMsIDQ4MjU5LCA0ODI3NSwgNDgyOTEsIDQ4MzA3LCA0ODMyMywgNDgzMzksIDQ4MzU1LCAKLSAgICA0ODM3MSwgNDgzODcsIDQ4NDAzLCA0ODQxOSwgNDg0MzUsIDQ4NDUxLCA0ODQ2NywgNDg0ODMsIDQ4NDk5LCA0ODUxNSwgCi0gICAgNDg1MzEsIDQ4NTQ3LCA0ODU2MywgNDg1NzksIDQ4NTk1LCA0ODYxMSwgNDg2MjcsIDQ4NjQzLCA0ODY1OSwgNDg2NzUsIAotICAgIDQ4NjkxLCA0ODcwNywgNDg3MjMsIDQ4NzM5LCA0ODc1NSwgNDg3NzEsIDQ4Nzg3LCA0ODgwMywgNDg4MTksIDQ4ODM1LCAKLSAgICA0ODg1MSwgNDg4NjcsIDQ4ODgzLCA0ODg5OSwgNDg5MTUsIDQ4OTMxLCA0ODk0NywgNDg5NjMsIDQ4OTc5LCA0ODk5NSwgCi0gICAgNDkwMTEsIDQ5MDI3LCA0OTA0MywgNDkwNTksIDQ5MDc1LCA0OTA5MSwgNDkxMDcsIDQ5MTIzLCA0OTEzOSwgNDkxNTUsIAotICAgIDQ5MTcxLCA0OTE4NywgNDkyMDMsIDQ5MjE5LCA0OTIzNSwgNDkyNTEsIDQ5MjY3LCA0OTI4MywgNDkyOTksIDQ5MzE1LCAKLSAgICA0OTMzMSwgNDkzNDcsIDQ5MzYzLCA0OTM3OSwgNDkzOTUsIDQ5NDExLCA0OTQyNywgNDk0NDMsIDQ5NDU5LCA0OTQ3NSwgCi0gICAgNDk0OTEsIDQ5NTA3LCA0OTUyMywgNDk1MzksIDQ5NTU1LCA0OTU3MSwgNDk1ODcsIDQ5NjAzLCA0OTYxOSwgNDk2MzUsIAotICAgIDQ5NjUxLCA0OTY2NywgNDk2ODMsIDQ5Njk5LCA0OTcxNSwgNDk3MzEsIDQ5NzQ3LCA0OTc2MywgNDk3NzksIDQ5Nzk1LCAKLSAgICA0OTgxMSwgNDk4MjcsIDQ5ODQzLCA0OTg1OSwgNDk4NzUsIDQ5ODkxLCA0OTkwNywgNDk5MjMsIDQ5OTM5LCA0OTk1NSwgCi0gICAgNDk5NzEsIDQ5OTg3LCA1MDAwMywgNTAwMTksIDUwMDM1LCA1MDA1MSwgNTAwNjcsIDUwMDgzLCA1MDA5OSwgNTAxMTUsIAotICAgIDUwMTMxLCA1MDE0NywgNTAxNjMsIDUwMTc5LCA1MDE5NSwgNTAyMTEsIDUwMjI3LCA1MDI0MywgNTAyNTksIDUwMjc1LCAKLSAgICA1MDI5MSwgNTAzMDcsIDUwMzIzLCA1MDMzOSwgNTAzNTUsIDUwMzcxLCA1MDM4NywgNTA0MDMsIDUwNDE5LCA1MDQzNSwgCi0gICAgNTA0NTEsIDUwNDY3LCA1MDQ4MywgNTA0OTksIDUwNTE1LCA1MDUzMSwgNTA1NDcsIDUwNTYzLCA1MDU3OSwgNTA1OTUsIAotICAgIDUwNjExLCA1MDYyNywgNTA2NDMsIDUwNjU5LCA1MDY3NSwgNTA2OTEsIDUwNzA3LCA1MDcyMywgNTA3MzksIDUwNzU1LCAKLSAgICA1MDc3MSwgNTA3ODcsIDUwODAzLCA1MDgxOSwgNTA4MzUsIDUwODUxLCA1MDg2NywgNTA4ODMsIDUwODk5LCA1MDkxNSwgCi0gICAgNTA5MzEsIDUwOTQ3LCA1MDk2MywgNTA5NzksIDUwOTk1LCA1MTAxMSwgNTEwMjcsIDUxMDQzLCA1MTA1OSwgNTEwNzUsIAotICAgIDUxMDkxLCA1MTEwNywgNTExMjMsIDUxMTM5LCA1MTE1NSwgNTExNzEsIDUxMTg3LCA1MTIwMywgNTEyMTksIDUxMjM1LCAKLSAgICA1MTI1MSwgNTEyNjcsIDUxMjgzLCA1MTI5OSwgNTEzMTUsIDUxMzMxLCA1MTM0NywgNTEzNjMsIDUxMzc5LCA1MTM5NSwgCi0gICAgNTE0MTEsIDUxNDI3LCA1MTQ0MywgNTE0NTksIDUxNDc1LCA1MTQ5MSwgNTE1MDcsIDUxNTIzLCA1MTUzOSwgNTE1NTUsIAotICAgIDUxNTcxLCA1MTU4NywgNTE2MDMsIDUxNjE5LCA1MTYzNSwgNTE2NTEsIDUxNjY3LCA1MTY4MywgNTE2OTksIDUxNzE1LCAKLSAgICA1MTczMSwgNTE3NDcsIDUxNzYzLCA1MTc3OSwgNTE3OTUsIDUxODExLCA1MTgyNywgNTE4NDMsIDUxODU5LCA1MTg3NSwgCi0gICAgNTE4OTEsIDUxOTA3LCA1MTkyMywgNTE5MzksIDUxOTU1LCA1MTk3MSwgNTE5ODcsIDUyMDAzLCA1MjAxOSwgNTIwMzUsIAotICAgIDUyMDUxLCA1MjA2NywgNTIwODMsIDUyMDk5LCA1MjExNSwgNTIxMzEsIDUyMTQ3LCA1MjE2MywgNTIxNzksIDUyMTk1LCAKLSAgICA1MjIxMSwgNTIyMjcsIDUyMjQzLCA1MjI1OSwgNTIyNzUsIDUyMjkxLCA1MjMwNywgNTIzMjMsIDUyMzM5LCA1MjM1NSwgCi0gICAgNTIzNzEsIDUyMzg3LCA1MjQwMywgNTI0MTksIDUyNDM1LCA1MjQ1MSwgNTI0NjcsIDUyNDgzLCA1MjQ5OSwgNTI1MTUsIAotICAgIDUyNTMxLCA1MjU0NywgNTI1NjMsIDUyNTc5LCA1MjU5NSwgNTI2MTEsIDUyNjI3LCA1MjY0MywgNTI2NTksIDUyNjc1LCAKLSAgICA1MjY5MSwgNTI3MDcsIDUyNzIzLCA1MjczOSwgNTI3NTUsIDUyNzcxLCA1Mjc4NywgNTI4MDMsIDUyODE5LCA1MjgzNSwgCi0gICAgNTI4NTEsIDUyODY3LCA1Mjg4MywgNTI4OTksIDUyOTE1LCA1MjkzMSwgNTI5NDcsIDUyOTYzLCA1Mjk3OSwgNTI5OTUsIAotICAgIDUzMDExLCA1MzAyNywgNTMwNDMsIDUzMDU5LCA1MzA3NSwgNTMwOTEsIDUzMTA3LCA1MzEyMywgNTMxMzksIDUzMTU1LCAKLSAgICA1MzE3MSwgNTMxODcsIDUzMjAzLCA1MzIxOSwgNTMyMzUsIDUzMjUxLCA1MzI2NywgNTMyODMsIDUzMjk5LCA1MzMxNSwgCi0gICAgNTMzMzEsIDUzMzQ3LCA1MzM2MywgNTMzNzksIDUzMzk1LCA1MzQxMSwgNTM0MjcsIDUzNDQzLCA1MzQ1OSwgNTM0NzUsIAotICAgIDUzNDkxLCA1MzUwNywgNTM1MjMsIDUzNTM5LCA1MzU1NSwgNTM1NzEsIDUzNTg3LCA1MzYwMywgNTM2MTksIDUzNjM1LCAKLSAgICA1MzY1MSwgNTM2NjcsIDUzNjgzLCA1MzY5OSwgNTM3MTUsIDUzNzMxLCA1Mzc0NywgNTM3NjMsIDUzNzc5LCA1Mzc5NSwgCi0gICAgNTM4MTEsIDUzODI3LCA1Mzg0MywgNTM4NTksIDUzODc1LCA1Mzg5MSwgNTM5MDcsIDUzOTIzLCA1MzkzOSwgNTM5NTUsIAotICAgIDUzOTcxLCA1Mzk4NywgNTQwMDMsIDU0MDE5LCA1NDAzNSwgNTQwNTEsIDU0MDY3LCA1NDA4MywgNTQwOTksIDU0MTE1LCAKLSAgICA1NDEzMSwgNTQxNDcsIDU0MTYzLCA1NDE3OSwgNTQxOTUsIDU0MjExLCA1NDIyNywgNTQyNDMsIDU0MjU5LCA1NDI3NSwgCi0gICAgNTQyOTEsIDU0MzA3LCA1NDMyMywgNTQzMzksIDU0MzU1LCA1NDM3MSwgNTQzODcsIDU0NDAzLCA1NDQxOSwgNTQ0MzUsIAotICAgIDU0NDUxLCA1NDQ2NywgNTQ0ODMsIDU0NDk5LCA1NDUxNSwgNTQ1MzEsIDU0NTQ3LCA1NDU2MywgNTQ1NzksIDU0NTk1LCAKLSAgICA1NDYxMSwgNTQ2MjcsIDU0NjQzLCA1NDY1OSwgNTQ2NzUsIDU0NjkxLCA1NDcwNywgNTQ3MjMsIDU0NzM5LCA1NDc1NSwgCi0gICAgNTQ3NzEsIDU0Nzg3LCA1NDgwMywgNTQ4MTksIDU0ODM1LCA1NDg1MSwgNTQ4NjcsIDU0ODgzLCA1NDg5OSwgNTQ5MTUsIAotICAgIDU0OTMxLCA1NDk0NywgNTQ5NjMsIDU0OTc5LCA1NDk5NSwgNTUwMTEsIDU1MDI3LCA1NTA0MywgNTUwNTksIDU1MDc1LCAKLSAgICA1NTA5MSwgNTUxMDcsIDU1MTIzLCA1NTEzOSwgNTUxNTUsIDU1MTcxLCA1NTE4NywgNTUyMDMsIDU1MjE5LCA1NTIzNSwgCi0gICAgNTUyNTEsIDU1MjY3LCA1NTI4MywgNTUyOTksIDU1MzE1LCA1NTMzMSwgNTUzNDcsIDU1MzYzLCA1NTM3OSwgNTUzOTUsIAotICAgIDU1NDExLCA1NTQyNywgNTU0NDMsIDU1NDU5LCA1NTQ3NSwgNTU0OTEsIDU1NTA3LCA1NTUyMywgNTU1MzksIDU1NTU1LCAKLSAgICA1NTU3MCwgMTQ5NjMsIDU1NTc5LCA1NTU4NSwgNTU1OTEsIDU1NjAxLCA1NTYwOSwgMTMxNDQsIDEzNjgzLCA4MzE5LCAKLSAgICA1NTYyMiwgMTQ4MywgNTU2MzAsIDI1Mzg1LCA1NjM3LCA1NTYzNiwgNTU2NDEsIDU1NjQ2LCA1NTY1MSwgNTU2NTYsIAotICAgIDU1NjYyLCA1NTY2NywgNTU2NzMsIDU1Njc4LCA1NTY4NCwgNTU2ODksIDU1Njk0LCA1NTY5OSwgNTU3MDQsIDU1NzEwLCAKLSAgICA1NTcxNSwgNTU3MjAsIDU1NzI1LCA1NTczMCwgNTU3MzUsIDU1NzQwLCA1NTc0NSwgNTU3NTEsIDU1NzU2LCA1NTc2MiwgCi0gICAgNTU3NjksIDI1MTUsIDU1Nzc0LCA1NTc4MCwgNjk0OCwgNTU3ODQsIDU1Nzg5LCA1NTc5NiwgNTU4MDQsIDQwLCA1NTgwOCwgCi0gICAgNTU4MTQsIDU1ODE5LCA1NTgyNCwgNTU4MjgsIDU1ODMzLCA1NTgzNywgNTU4NDEsIDkwMzcsIDU1ODQ1LCA1NTg1NSwgCi0gICAgNTU4NjgsIDU1ODc5LCA1NTg5MiwgNTU4OTksIDU1OTA1LCA1NTkxMCwgNTU5MTYsIDU1OTIyLCA1NTkyOCwgNTU5MzMsIAotICAgIDU1OTM4LCA1NTk0MywgNTU5NDgsIDU1OTUyLCA1NTk1NywgNTU5NjIsIDU1OTY3LCA1NTk3MywgNTU5NzksIDU1OTg1LCAKLSAgICA1NTk5MCwgNTU5OTQsIDU1OTk5LCA1NjAwNCwgNTYwMDgsIDU2MDEzLCA1NjAxOCwgNTYwMjMsIDU2MDI3LCA5MDUzLCAKLSAgICA5MDY0LCA5MDY5LCAxNTI2LCA1NjAzMSwgMTUzMSwgNTYwMzcsIDU2MDQwLCAxNTYyLCA1NjA0NiwgMTU2OCwgMTU3NCwgCi0gICAgOTA5OSwgNTYwNTEsIDU2MDU5LCA1NjA2NiwgNTYwNzAsIDU2MDc2LCA1NjA4MSwgMjg4MjQsIDU2MDg2LCA1NjA5MywgCi0gICAgNTYwOTgsIDU2MTAyLCA1NjEwNiwgMTU3OSwgMTQ1MzgsIDE0NTQ5LCA1NjExNSwgNTYxMjIsIDU2MTI3LCA1NjEzMSwgCi0gICAgMTQ1NjgsIDE1ODMsIDM0ODk3LCA1NjEzNCwgNTYxMzksIDU2MTQ5LCA1NjE1OCwgNTYxNjMsIDU2MTY3LCA1NjE3MywgCi0gICAgMTU4OCwgMzY3MTksIDU2MTc4LCA1NjE4NywgNTYxOTMsIDU2MTk4LCA5MjQ5LCA5MjU1LCA1NjIwNCwgNTYyMTYsIDU2MjMzLCAKLSAgICA1NjI1MCwgNTYyNjcsIDU2Mjg0LCA1NjMwMSwgNTYzMTgsIDU2MzM1LCA1NjM1MiwgNTYzNjksIDU2Mzg2LCA1NjQwMywgCi0gICAgNTY0MjAsIDU2NDM3LCA1NjQ1NCwgNTY0NzEsIDU2NDg4LCA1NjUwNSwgNTY1MjIsIDU2NTM5LCA1NjU1NiwgNTY1NzMsIAotICAgIDU2NTkwLCA1NjYwNywgNTY2MjQsIDU2NjQxLCA1NjY1OCwgNTY2NzUsIDU2NjkyLCA1NjcwOSwgNTY3MjYsIDU2NzQzLCAKLSAgICA1Njc2MCwgNTY3NzcsIDU2Nzk0LCA1NjgxMSwgNTY4MjgsIDU2ODQ1LCA1Njg2MiwgNTY4NzksIDU2ODk2LCA1NjkxMywgCi0gICAgNTY5MzAsIDU2OTQ3LCA1Njk2NCwgNTY5ODEsIDU2OTk4LCA1NzAxNSwgNTcwMzIsIDU3MDQ5LCA1NzA2MCwgNTcwNjUsIAotICAgIDE1OTMsIDU3MDY5LCA1NzA3NSwgNTcwODAsIDc2OTMsIDE1OTgsIDU3MDg1LCA1NzA5NCwgMjU2NjQsIDU3MDk5LCA1NzExMCwgCi0gICAgNTcxMjAsIDU3MTI1LCA1NzEzMiwgNTcxMzgsIDU3MTQzLCA1NzE0OCwgMTQ4MjAsIDU3MTUyLCA5MjY2LCAxNjAzLCA5MjcxLCAKLSAgICA1NzE1OCwgNTcxNjMsIDU3MTY5LCA1NzE3NCwgNTcxNzksIDU3MTg0LCA1NzE4OSwgNTcxOTQsIDU3MTk5LCA1NzIwNCwgCi0gICAgNTcyMTAsIDU3MjE2LCA1NzIyMiwgNTcyMjcsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ1LCA1NzI1MCwgNTcyNTUsIAotICAgIDU3MjYwLCA1NzI2NCwgNTcyNjksIDU3Mjc1LCA1NzI4MCwgNTcyODUsIDU3Mjg5LCA1NzI5NCwgNTcyOTksIDU3MzA1LCAKLSAgICA1NzMxMCwgNTczMTUsIDU3MzIxLCA1NzMyNywgNTczMzIsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NSwgCi0gICAgNTczNjAsIDU3MzY1LCA1NzM3MCwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTEsIDU3Mzk1LCA1NzQwMCwgNTc0MDUsIAotICAgIDU3NDEwLCAyNzAyNCwgNTc0MTQsIDU3NDE5LCA1NzQyNCwgNTc0MzAsIDU3NDM1LCA1NzQ0MCwgNTc0NDQsIDU3NDQ5LCAKLSAgICA1NzQ1NCwgNTc0NjAsIDU3NDY1LCA1NzQ3MCwgNTc0NzYsIDU3NDgyLCA1NzQ4NywgNTc0OTEsIDU3NDk2LCA1NzUwMSwgCi0gICAgNTc1MDUsIDU3NTEwLCA1NzUxNSwgNTc1MjAsIDU3NTI2LCA1NzUzMiwgNTc1MzcsIDU3NTQxLCA1NzU0NiwgNTc1NTEsIAotICAgIDU3NTU1LCA1NzU2MCwgNTc1NjUsIDU3NTcwLCA1NzU3NCwgNTc1NzcsIDI5Mzk1LCA1NzU4MiwgNTc1OTAsIDE0ODg2LCAKLSAgICAxNDkxMCwgOTM2MiwgNTc1OTYsIDU3NjA2LCA1NzYyMSwgOTM2NywgNTc2MzIsIDU3NjM3LCA1NzY0OCwgNTc2NjAsIAotICAgIDU3NjcyLCA1NzY4NCwgMjY0OSwgNTc2OTYsIDU3NzAxLCA1NzcwNSwgNTc3MTEsIDU3NzE3LCA1NzcyMiwgMTYxNSwgMTAxMCwgCi0gICAgNTc3MzEsIDU3NzM2LCAzNjc1OCwgNTc3NDAsIDU3NzQ0LCA1Nzc0OSwgNTc3NTMsIDE0OTcxLCA1Nzc1OCwgNTc3NjEsIAotICAgIDU3NzY5LCA1Nzc3NywgMTYxOSwgOTM5MiwgOTM5OCwgMTYyNCwgNTc3ODUsIDU3NzkyLCA1Nzc5NywgNTc4MDYsIDU3ODE2LCAKLSAgICA1NzgyMywgNTc4MjgsIDE2MjksIDU3ODM1LCA1Nzg0MCwgMTUwODYsIDU3ODQ0LCA1Nzg0OSwgNTc4NTYsIDU3ODYyLCAKLSAgICA1Nzg2NiwgNTc4NzcsIDU3ODg3LCAxNTEwOCwgNzYxNiwgNzYyMywgMTYzNCwgNTc4OTQsIDU3OTAwLCA1NzkwOCwgNTc5MTUsIAotICAgIDU3OTIxLCA1NzkyOCwgNTc5NDAsIDU3OTQ2LCA1Nzk1MSwgNTc5NjMsIDU3OTc0LCA1Nzk4MywgNTc5OTMsIDM2NjgsIAotICAgIDI4NjYwLCAyODY2OSwgMTUxNDgsIDE2MzksIDE2NDMsIDU4MDAxLCA1ODAxMiwgNTgwMTcsIDE2NDYsIDU4MDI1LCA1ODAzMCwgCi0gICAgNTgwNDIsIDU4MDQ4LCA1ODA1MywgNTgwNjEsIDE2NTEsIDU4MDY2LCA1ODA3MSwgNTgwNzksIDU4MDg3LCA1ODA5NCwgCi0gICAgNTgxMDMsIDU4MTExLCA1ODEyMCwgMTY1NiwgNTgxMjQsIDE2NjEsIDU4MTI5LCA1ODEzNiwgMTUyNjgsIDU4MTQ0LCAKLSAgICA1ODE1MCwgNTgxNTUsIDU4MTYzLCA1ODE3MCwgNTgxNzgsIDIwNjU4LCA1ODE4MywgOTUyNywgNTgxOTIsIDU4MTk4LCAKLSAgICA1ODIwNSwgNTgyMTIsIDU4MjE4LCA1ODIyOCwgNTgyMzQsIDU4MjM5LCA1ODI0NCwgNTgyNTIsIDk1MzYsIDk1NDEsIAotICAgIDU4MjYwLCA1ODI2NiwgNTgyNzQsIDM3MzMsIDM2ODQ2LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5OCwgNTgzMDUsIAotICAgIDEwMzU2LCA1ODMxMCwgNTgzMTYsIDE2NzIsIDU4MzIxLCA1ODMyNCwgMTA1OCwgNTgzMzAsIDU4MzM1LCA1ODM0MCwgCi0gICAgNTgzNDYsIDU4MzUxLCA1ODM1NiwgNTgzNjEsIDU4MzY2LCA1ODM3MSwgNTgzNzYsIDE2ODEsIDksIDU4MzgyLCA1ODM4NiwgCi0gICAgNTgzOTEsIDU4Mzk1LCA1ODM5OSwgNTg0MDMsIDI5NjQzLCA1ODQwOCwgNTg0MTMsIDU4NDE4LCA1ODQyMiwgNTg0MjUsIAotICAgIDU4NDI5LCA1ODQzMywgNTg0MzgsIDU4NDQyLCA1ODQ0NywgNTg0NTEsIDMyMzE1LCAzMjMyMCwgMzIzMjUsIDU4NDU0LCAKLSAgICA1ODQ2MSwgNTg0NjcsIDM2NTg1LCA1ODQ3NywgMzIzMzEsIDI5ODkxLCAyOTY1MywgMjk2NTksIDMyMzQ3LCAyOTY2NSwgCi0gICAgNTg0ODIsIDU4NDg3LCAyOTkyNCwgNTg0OTEsIDU4NDk0LCA1ODQ5OCwgNTg1MDUsIDU4NTA4LCA1ODUxMywgNTg1MTcsIAotICAgIDU4NTIxLCA1ODUyNCwgNTg1MzQsIDU4NTQ2LCA1ODU1MywgMzEyODIsIDU4NTU2LCAxMzkzNiwgODIxLCA1ODU1OSwgCi0gICAgNTg1NjMsIDU4NTY4LCA1ODU3MiwgNTg1NzUsIDExOTQ0LCA1ODU4MiwgNTg1ODksIDU4NjAyLCA1ODYxMCwgNTg2MTksIAotICAgIDU4NjI0LCA1ODYzNCwgNTg2NDcsIDU4NjU5LCA1ODY2NiwgNTg2NzEsIDU4NjgwLCA1ODY5MywgMzM3MzIsIDU4NzExLCAKLSAgICA1ODcxNiwgNTg3MjMsIDU4NzI5LCA1ODczNCwgNTg3NDIsIDU4NzQ5LCAyNTIyNCwgNjEzLCA1ODc1NSwgNTg3NjEsIAotICAgIDU4NzcxLCA1ODc3NywgNTg3ODIsIDI5NjgzLCA0NDgxLCAyOTY5NywgNTg3ODYsIDU4Nzk2LCA1ODgwMSwgNTg4MTEsIAotICAgIDU4ODI2LCA1ODgzMiwgNTg4MzgsIDI5NzA3LCA1ODg0MywgMjg4NTYsIDU4ODQ3LCA1ODg1MiwgNTg4NTcsIDU4ODYxLCAKLSAgICA1ODg2NiwgMTUxNTEsIDU4ODczLCA1ODg3OCwgNTg4ODIsIDQ1MjIsIDI5NzMzLCA1ODg4NiwgNTg4OTIsIDMyNywgNTg5MDIsIAotICAgIDU4OTA5LCA1ODkxNiwgNTg5MjEsIDU4OTMwLCA1NjE0MywgNTg5MzYsIDU4OTQ0LCA1ODk0OCwgNTg5NTIsIDU4OTU2LCAKLSAgICA1ODk2MCwgNTg5NjUsIDU4OTY5LCA1ODk3NSwgNTg5ODMsIDU4OTg4LCA1ODk5MywgNTg5OTcsIDU5MDAyLCA1OTAwNiwgCi0gICAgNTkwMTAsIDU5MDE2LCA1OTAyMiwgNTkwMjcsIDU5MDMxLCAyOTg1NywgNTkwMzYsIDI5ODYzLCAyOTg2OSwgNTkwNDEsIAotICAgIDU5MDQ3LCA1OTA1NCwgNTkwNTksIDU5MDYzLCAyODg3MywgMTQ4MTMsIDU5MDY2LCA1OTA3MCwgNTkwNzUsIDU5MDgyLCAKLSAgICA1OTA4OCwgNTkwOTIsIDU5MDk3LCAzNjI5NSwgNTkxMDMsIDU5MTA3LCA1OTExMSwgNTkxMTYsIDU5MTIyLCA1OTEyOCwgCi0gICAgNTkxNDAsIDU5MTQ5LCA1OTE1OSwgNTkxNjUsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg2LCA1OTE4OSwgNTkxOTUsIAotICAgIDU5MjAyLCA1OTIwNywgNTkyMTIsIDU5MjE5LCA1OTIyNiwgNTkyMzIsIDU5MjM3LCA1OTI0MiwgNTkyNTAsIDU5MjU1LCAKLSAgICAyMzc3LCA1OTI1OSwgNTkyNjQsIDU5MjcwLCA1OTI3NSwgNTkyODEsIDU5Mjg2LCA1OTI5MSwgNTkyOTYsIDU5MzAyLCAKLSAgICAyOTg5MCwgNTkzMDcsIDU5MzEzLCA1OTMxOSwgNTkzMjUsIDI5OTU0LCA1OTMzMCwgNTkzMzUsIDU5MzQwLCAyOTk2NSwgCi0gICAgNTkzNDUsIDU5MzUwLCA1OTM1NSwgNTkzNjEsIDU5MzY3LCAyOTk3MCwgNTkzNzIsIDU5Mzc3LCA1OTM4MiwgMzAwMjUsIAotICAgIDMwMDMxLCA1OTM4NywgNTkzOTIsIDMwMDM2LCA1OTM5NywgMjU4OTEsIDMwMDU4LCAzMDA2MiwgNTk0MDIsIDU5Mzc4LCAKLSAgICA1OTQwNiwgNTk0MTQsIDU5NDIwLCA1OTQyOCwgNTk0MzUsIDU5NDQxLCA1OTQ1MSwgNTk0NTcsIDU5NDY0LCA4OTg0LCAKLSAgICAzMDA3NiwgNTk0NzAsIDU5NDgzLCA1OTQ5MiwgNTk0OTgsIDU5NTA3LCA1OTUxMywgMjE1NzUsIDU5NTIwLCA1OTUyNywgCi0gICAgNTk1MzcsIDMwMDI2LCA1OTU0MCwgNTk1NDcsIDU5NTUyLCA1OTU1NiwgNTk1NjAsIDU5NTY1LCA0NTk4LCA1OTU2OSwgCi0gICAgNTk1NzQsIDU5NTc5LCAzMjQwOSwgMzI0MTQsIDU5NTgzLCAzMjQyOCwgNTk1ODgsIDMyNDMzLCA1OTU5MywgNTk1OTksIAotICAgIDMyNDQ1LCAzMjQ1MSwgMzI0NTcsIDU5NjA0LCA1OTYxMCwgMjA2MTksIDU5NjIxLCA1OTYyNCwgNTk2MzYsIDU5NjQ0LCAKLSAgICAzMDA5NCwgNTk2NDgsIDU5NjU3LCA1OTY2NywgNTk2NzYsIDMwMDk5LCA1OTY4MSwgNTk2ODgsIDU5Njk3LCA1OTcwMywgCi0gICAgNTk3MTEsIDU5NzE4LCA0NTczLCA0MzEwLCA1OTcyMywgMzAwMzcsIDU5NzI5LCA1OTczMiwgNTk3MzgsIDU5NzQ1LCAKLSAgICA1OTc1MCwgNTk3NTUsIDIxNTAyLCA1OTc1OSwgNTk3NjUsIDU5NzcxLCA1OTc3NiwgNTk3ODEsIDU5Nzg1LCA1OTc5MSwgCi0gICAgNTk3OTcsIDMxMTk2LCA4MjYsIDMzNDA2LCAzNDMwNCwgMzQzMTAsIDU5ODAyLCA1OTgwNiwgNTk4MTAsIDU5ODEzLCAKLSAgICA1OTgyNiwgNTk4MzIsIDU5ODM2LCA1OTgzOSwgNTk4NDQsIDMxNDk1LCA1OTg0OCwgMjg4NzgsIDE5NDQ2LCA1OTg1NCwgCi0gICAgNDUwMiwgNDUxMCwgNzQ3MiwgNTk4NTcsIDU5ODYyLCA1OTg2NywgNTk4NzIsIDU5ODc3LCA1OTg4MiwgNTk4ODcsIDU5ODkyLCAKLSAgICA1OTg5NywgNTk5MDIsIDU5OTA4LCA1OTkxMywgNTk5MTgsIDU5OTI0LCA1OTkyOSwgNTk5MzQsIDU5OTM5LCA1OTk0NCwgCi0gICAgNTk5NDksIDU5OTU0LCA1OTk2MCwgNTk5NjUsIDU5OTcxLCA1OTk3NiwgNTk5ODEsIDU5OTg2LCA1OTk5MSwgNTk5OTYsIAotICAgIDYwMDAxLCA2MDAwNiwgNjAwMTEsIDYwMDE2LCA2MDAyMSwgNjAwMjcsIDYwMDMyLCA2MDAzNywgNjAwNDIsIDYwMDQ3LCAKLSAgICA2MDA1MiwgNjAwNTcsIDYwMDYzLCA2MDA2OCwgNjAwNzMsIDYwMDc4LCA2MDA4MywgNjAwODgsIDYwMDkzLCA2MDA5OCwgCi0gICAgNjAxMDMsIDYwMTA4LCA2MDExNCwgNjAxMTksIDYwMTI0LCA2MDEyOSwgNjAxMzQsIDYwMTQwLCA2MDE0NiwgNjAxNTEsIAotICAgIDYwMTU3LCA2MDE2MiwgNjAxNjcsIDYwMTcyLCA2MDE3NywgNjAxODIsIDE0NzYsIDI0MCwgNjAxODcsIDYwMTkxLCA2MDE5NSwgCi0gICAgNjAxOTksIDIzMTU3LCA2MDIwMywgNjAyMDcsIDYwMjEyLCA2MDIxNiwgNjAyMjEsIDYwMjI1LCA2MDIyOSwgNjAyMzMsIAotICAgIDYwMjM4LCA2MDI0MiwgMTE2ODEsIDYwMjQ3LCA2MDI1MSwgNjAyNTgsIDEzNDQ0LCA2MDI2NywgNjAyNzYsIDYwMjgwLCAKLSAgICA2MDI4NSwgNjAyOTAsIDYwMjk0LCAyMjk2MCwgMjk1NywgNjAyOTgsIDYwMzA0LCA2MDMxMywgNjAzMjEsIDYwMzI3LCAKLSAgICA2MDMzOSwgNjAzNTEsIDYwMzU1LCA2MDM2MCwgNjAzNjQsIDYwMzcwLCA2MDM3NiwgNjAzODEsIDYwMzkxLCA2MDQwMSwgCi0gICAgNjA0MDcsIDYwNDEyLCA2MDQxNiwgNjA0MjEsIDYwNDI3LCA2MDQzNiwgNjA0NDUsIDYwNDUzLCAxMzc5OCwgNjA0NTcsIAotICAgIDYwNDY2LCA2MDQ3NCwgNjA0ODYsIDYwNDk3LCA2MDUwOCwgNjA1MTcsIDYwNTIxLCA2MDUzMCwgNjA1NDAsIDYwNTQ2LCAKLSAgICA2MDU1MSwgNjA1NTcsIDYwNTYyLCA5OCwgMjg3NzIsIDYwNTczLCAyNDIyOCwgMjQyMzgsIDYwNTc5LCA2MDU4NiwgNjA1OTIsIAotICAgIDYwNTk2LCA2MDYwNiwgNjA2MTcsIDYwNjI1LCA2MDYzNCwgNjA2MzksIDYwNjQ0LCA2MDY0OCwgMTU1MDQsIDYwNjU2LCAKLSAgICA2MDY2MCwgNjA2NjYsIDYwNjc2LCA2MDY4MywgNjA2ODksIDMyNTA4LCAxMTYyLCA2MDY5NSwgNjA2OTgsIDYwNzAyLCAKLSAgICA2MDcxMiwgNjA3MTgsIDYwNzI1LCAxMTYxOCwgNjA3MzIsIDYwNzM4LCA2MDc0NywgNjA3NTYsIDYwNzYyLCA2MDc2OCwgCi0gICAgNjA3NzQsIDYwNzc5LCA2MDc4NiwgNjA3OTMsIDYwNzk5LCA2MDgxMiwgNjA4MjEsIDYwODMwLCA2MDgzNSwgNjA4MzksIAotICAgIDYwODQ1LCA2MDg1MiwgNjA4NTksIDYwODY2LCA2MDg3MywgNjA4ODAsIDYwODg1LCA2MDg4OSwgNjA4OTMsIDYwODk2LCAKLSAgICA2MDkwNiwgNjA5MTAsIDYwOTIyLCA2MDkzMSwgNjA5MzUsIDYwOTQwLCA2MDk0NCwgNjA5NTAsIDYwOTU1LCA2MDk2MiwgCi0gICAgNjA5NzEsIDYwOTc5LCA2MDk4NywgNjA5OTIsIDYwOTk2LCA2MTAwMSwgNjEwMDYsIDYxMDE2LCA2MTAyNCwgNjEwMjksIAotICAgIDYxMDMzLCA2MTAzNywgNjEwNDMsIDYxMDU1LCA2MTA2MywgNjEwNzMsIDYxMDgwLCA2MTA4NiwgNjEwOTEsIDYxMDk1LCAKLSAgICA2MTA5OSwgNjExMDMsIDYxMTEyLCA2MTEyMSwgNjExMzAsIDYxMTM2LCA2MTE0MiwgNjExNDgsIDYxMTUzLCA2MTE2MCwgCi0gICAgNjExNjYsIDYxMTc0LCA2MTE4MSwgMTA3NzIsIDYxMTg3LCA2MTE5MywgNjExOTcsIDEyNTIzLCA2MTIwMSwgNjEyMDYsIAotICAgIDYxMjE2LCA2MTIyNSwgNjEyMzEsIDYxMjM3LCA2MTI0NSwgNjEyNTIsIDYxMjU2LCA2MTI2MCwgNjEyNjYsIDYxMjc0LCAKLSAgICA2MTI4MSwgNjEyODcsIDYxMjk4LCA2MTMwMiwgNjEzMDYsIDYxMzEwLCA2MTMxMywgNjEzMTksIDYxMzI0LCA2MTMyOCwgCi0gICAgNjEzMzIsIDYxMzQxLCA2MTM0OSwgNjEzNTYsIDYxMzYyLCA2MTM2OSwgMjIwODcsIDM2MzM3LCA2MTM3NCwgNjEzODIsIAotICAgIDYxMzg2LCA2MTM4OSwgNjEzOTcsIDYxNDA0LCA2MTQxMCwgNjE0MTksIDYxNDI3LCA2MTQzMywgNjE0MzgsIDYxNDQyLCAKLSAgICA2MTQ0NywgNjE0NTEsIDYxNDU1LCA2MTQ2MCwgNjE0NjksIDYxNDczLCA2MTQ4MCwgNjE0ODcsIDYxNDkzLCA2MTUwMSwgCi0gICAgNjE1MDcsIDYxNTE4LCA2MTUyNiwgNjE1MzIsIDIwNzUzLCA2MTU0MSwgNjE1NDgsIDYxNTU1LCA2MTU2MiwgNjE1NjksIAotICAgIDYxNTc2LCAzOTI4OCwgMTE0NTYsIDYxNTgzLCA2MTU5MCwgNjE1OTUsIDMyNTQ0LCAzNzQ4NCwgNjE2MDEsIDYxNjA2LCAKLSAgICA2MTYxMSwgNjE2MTcsIDYxNjIzLCA2MTYyOSwgNjE2MzQsIDYxNjM5LCA2MTY0NCwgNjE2NDksIDYxNjU1LCA2MTY2MCwgCi0gICAgNjE2NjYsIDYxNjcxLCA2MTY3NywgNjE2ODIsIDYxNjg3LCA2MTY5MiwgNjE2OTcsIDYxNzAyLCA2MTcwNywgNjE3MTIsIAotICAgIDYxNzE4LCA2MTcyMywgNjE3MjksIDYxNzM0LCA2MTczOSwgNjE3NDQsIDYxNzQ5LCA2MTc1NCwgNjE3NTksIDYxNzY1LCAKLSAgICA2MTc3MCwgNjE3NzUsIDYxNzgwLCA2MTc4NSwgNjE3OTAsIDYxNzk1LCA2MTgwMCwgNjE4MDUsIDYxODEwLCA2MTgxNSwgCi0gICAgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQxLCA2MTg0NiwgNjE4NTEsIDYxODU2LCA2MTg2MSwgNjE4NjcsIAotICAgIDYxODcyLCA2MTg3NywgNjE4ODIsIDYxODg3LCA2MTg5MiwgNjE4OTcsIDYxOTAyLCA2MTkwNywgNjE5MTIsIDYxOTE3LCAKLSAgICA2MTkyMiwgNjE5MjcsIDYxOTMzLCAxNzk3LCAyMjQsIDM0OTkzLCA2MTkzOCwgNjE5NDEsIDYxOTQ2LCA2MTk1MCwgNjE5NTMsIAotICAgIDYxOTU4LCA2MDk4MywgNjE5NjksIDYxOTc5LCA2MTk4NiwgNjIwMDIsIDYyMDExLCA2MjAyMSwgNjIwMzEsIDYyMDM5LCAKLSAgICA2MjA0NywgNjIwNTEsIDYyMDU0LCA2MjA2MSwgNjIwNjcsIDYyMDc4LCA2MjA5MCwgNjIxMDEsIDYyMTEwLCA2MjExNywgCi0gICAgMTI4NiwgMjEzOTEsIDYyMTI3LCAyNTQ0LCA2MjEzMSwgNjIxNDAsIDExMjcsIDE1NDc3LCAzNTYyMiwgNjIxNDgsIDYyMTU2LCAKLSAgICA2MjE3MCwgNjIxODMsIDYyMTg3LCA2MjE5MiwgNjIxOTcsIDYyMjAyLCA2MjIwOCwgNjIyMTQsIDYyMjE5LCA2OTU3LCAKLSAgICA2MjIyNCwgNjIyMzIsIDkzOTMsIDYyMjM3LCA2MjI0MywgMTY4NCwgOTQwNSwgNzIzLCA2MjI1MiwgNjIyNjEsIDYyMjcxLCAKLSAgICAyNDk5MiwgNjIyODAsIDYyMjg2LCAxNTA2MywgNjIyOTIsIDYyMjk2LCAzODgxLCA5NzM2LCA2MjMwMiwgNTgwMDcsIAotICAgIDYyMzA5LCAzOTA1LCAxODQsIDEyNDQ0LCA2MjMxNSwgNjIzMjcsIDYyMzMxLCA2MjMzNywgMjU2ODQsIDYyMzQxLCA5NzI0LCAKLSAgICAyNjg0LCA0LCA2MjM0NiwgNjIzNTYsIDYyMzYyLCA2MjM3MywgNjIzODAsIDYyMzg2LCA2MjM5MiwgNjI0MDAsIDYyNDA3LCAKLSAgICA2MjQxMywgNjI0MjMsIDYyNDMzLCA2MjQ0MywgMTI5OCwgNjI0NTIsIDYyNDU4LCAyNzA3LCAyNzEzLCA2OTU0LCAyMjE4LCAKLSAgICA2MjQ2MiwgNjI0NjYsIDYyNDc1LCA2MjQ4MywgNjI0OTQsIDYyNTAyLCA2MjUxMCwgNjI1MTYsIDYyNTIxLCA2MjUzMiwgCi0gICAgNjI1NDMsIDYyNTUxLCA2MjU1NywgODA2MSwgNjI1NjIsIDYyNTcwLCA2MjU3NCwgNjI1NzgsIDYyNTkwLCAyNjA2MCwgCi0gICAgNjI1OTcsIDYyNjA3LCA2MjYxMywgNjI2MTksIDgxNjMsIDYyNjI5LCA2MjY0MCwgNjI2NTAsIDYyNjU5LCA2MjY2MywgCi0gICAgNjI2NzAsIDExMjksIDI1MzcsIDYyNjgwLCA2MjY4NSwgNjI2OTMsIDYyNzAxLCA2MjcxMiwgNjI3MTksIDYyNzMzLCAKLSAgICAxMjM2OSwgMzc5LCA2Mjc0MywgNjI3NDcsIDYyNzU2LCA2Mjc2NCwgNjI3NzAsIDYyNzg0LCA2Mjc5MSwgNjI3OTcsIAotICAgIDYyODA2LCA2MjgxMywgNjI4MjMsIDYyODMxLCAzNzQwLCAxODksIDYyODM5LCA2Mjg1MCwgNjI4NTQsIDYyODY2LCAyNTg4MiwgCi0gICAgMTU2LCA2Mjg3MiwgNjI4NzcsIDYyODgxLCA2Mjg4OCwgNjI4OTQsIDYyOTAyLCA2MjkwOSwgNzIyNiwgNjI5MTYsIDYyOTI1LCAKLSAgICA2MjkzMywgMzgwNiwgNjI5NDYsIDE1MTA5LCA2Mjk1MCwgMjc1MiwgNDI4LCA2Mjk1NSwgNjI5NjgsIDYyOTczLCAxNzk2LCAKLSAgICA2NDcsIDYyOTc3LCAzODEyLCA2Mjk4NSwgNjI5OTEsIDk2MywgNjMwMDEsIDYzMDEwLCA2MzAxNSwgMTMxNzgsIDEzMTg1LCAKLSAgICA0MjYyMCwgNjMwMTksIDM3NTAsIDExMzUwLCA2MzAyNywgNjMwMzQsIDIxNjE4LCA2MzAzOCwgNjMwNDUsIDYzMDUxLCAKLSAgICA2MzA1NiwgNjMwNjEsIDEzMTk4LCAzNTQsIDYzMDY2LCA2MzA3OCwgNjMwODQsIDYzMDkyLCAyNzY0LCAxNzE2LCA2MzEwMCwgCi0gICAgNjMxMDIsIDYzMTA3LCA2MzExMiwgNjMxMTcsIDYzMTIzLCA2MzEyOCwgNjMxMzMsIDYzMTM4LCA2MzE0MywgNjMxNDgsIAotICAgIDYzMTUzLCA2MzE1OSwgNjMxNjQsIDYzMTY5LCA2MzE3NCwgNjMxNzksIDYzMTg0LCA2MzE4OSwgNjMxOTQsIDYzMTk5LCAKLSAgICA2MzIwNSwgNjMyMTAsIDYzMjE1LCA2MzIyMCwgNjMyMjYsIDYzMjMxLCA2MzIzNywgNjMyNDIsIDYzMjQ3LCA2MzI1MiwgCi0gICAgNjMyNTcsIDYzMjYyLCA2MzI2NywgNjMyNzIsIDYzMjc4LCA2MzI4MywgNjMyODksIDYzMjk0LCA2MzI5OSwgNjMzMDQsIAotICAgIDYzMzA5LCA2MzMxNCwgNjMzMTksIDYzMzI0LCA2MzMyOSwgNjMzMzUsIDYzMzQwLCA2MzM0NSwgNjMzNDksIDYzMzUzLCAKLSAgICA2MzM1OCwgNjMzNjIsIDYzMzY3LCA2MzM3MiwgNjMzNzgsIDYzMzgzLCA2MzM4NywgNjMzOTIsIDYzMzk2LCA2MzM5OSwgCi0gICAgNjM0MDEsIDYzNDA1LCA2MzQwOCwgNjM0MTMsIDYzNDE3LCA2MzQyMSwgNjM0MjUsIDYzNDI5LCA2MzQzOCwgNjM0NDIsIAotICAgIDMwMjg4LCA2MzQ0NSwgMzAyOTMsIDYzNDUyLCA2MzQ1NywgMzAyOTgsIDYzNDY2LCA2MzQ3NSwgMzAzMDQsIDYzNDgwLCAKLSAgICAzMDMwOSwgNjM0ODksIDYzNDk0LCA5OTE0LCA2MzQ5OCwgNjM1MDMsIDYzNTA4LCAzMDMxNCwgNjM1MTIsIDM3NjUwLCAKLSAgICA2MzUxNiwgNjM1MTksIDYzNTIzLCA2NjM4LCA2MzUyOSwgNjM1MzQsIDYzNTM4LCAzNjMzLCAzMDMxOSwgNjM1NDEsIAotICAgIDYzNTQ1LCA2MzU0OCwgNjM1NTMsIDYzNTU3LCA2MzU2MywgNjM1NzEsIDYzNTg0LCA2MzU5MywgNjM1OTksIDYzNjA0LCAKLSAgICA2MzYxMCwgNjM2MTQsIDYzNjIwLCA2MzYyOCwgNjM2MzMsIDYzNjQwLCA2MzY0NiwgNjM2NTQsIDYzNjYzLCA2MzY3MSwgCi0gICAgMzAzMjIsIDYzNjc4LCA2MzY4OCwgNjM2OTcsIDYzNzEwLCA2MzcxNSwgNjM3MjAsIDYzNzI5LCA2MzczNSwgNjM3NDIsIAotICAgIDYzNzUzLCA2Mzc2NSwgNjM3NzIsIDYzNzgxLCA2Mzc5MCwgNjM3OTksIDYzODA2LCA2MzgxMiwgNjM4MTksIDYzODI3LCAKLSAgICA2MzgzNCwgNjM4NDIsIDYzODUxLCA2Mzg1OSwgNjM4NjYsIDYzODc0LCA2Mzg4MywgNjM4OTEsIDYzOTAwLCA2MzkxMCwgCi0gICAgNjM5MTksIDYzOTI3LCA2MzkzNCwgNjM5NDIsIDYzOTUxLCA2Mzk1OSwgNjM5NjgsIDYzOTc4LCA2Mzk4NywgNjM5OTUsIAotICAgIDY0MDA0LCA2NDAxNCwgNjQwMjMsIDY0MDMzLCA2NDA0NCwgNjQwNTQsIDY0MDYzLCA2NDA3MSwgNjQwNzgsIDY0MDg2LCAKLSAgICA2NDA5NSwgNjQxMDMsIDY0MTEyLCA2NDEyMiwgNjQxMzEsIDY0MTM5LCA2NDE0OCwgNjQxNTgsIDY0MTY3LCA2NDE3NywgCi0gICAgNjQxODgsIDY0MTk4LCA2NDIwNywgNjQyMTUsIDY0MjI0LCA2NDIzNCwgNjQyNDMsIDY0MjUzLCA2NDI2NCwgNjQyNzQsIAotICAgIDY0MjgzLCA2NDI5MywgNjQzMDQsIDY0MzE0LCA2NDMyNSwgNjQzMzcsIDY0MzQ4LCA2NDM1OCwgNjQzNjcsIDY0Mzc1LCAKLSAgICA2NDM4MiwgNjQzOTAsIDY0Mzk5LCA2NDQwNywgNjQ0MTYsIDY0NDI2LCA2NDQzNSwgNjQ0NDMsIDY0NDUyLCA2NDQ2MiwgCi0gICAgNjQ0NzEsIDY0NDgxLCA2NDQ5MiwgNjQ1MDIsIDY0NTExLCA2NDUxOSwgNjQ1MjgsIDY0NTM4LCA2NDU0NywgNjQ1NTcsIAotICAgIDY0NTY4LCA2NDU3OCwgNjQ1ODcsIDY0NTk3LCA2NDYwOCwgNjQ2MTgsIDY0NjI5LCA2NDY0MSwgNjQ2NTIsIDY0NjYyLCAKLSAgICA2NDY3MSwgNjQ2NzksIDY0Njg4LCA2NDY5OCwgNjQ3MDcsIDY0NzE3LCA2NDcyOCwgNjQ3MzgsIDY0NzQ3LCA2NDc1NywgCi0gICAgNjQ3NjgsIDY0Nzc4LCA2NDc4OSwgNjQ4MDEsIDY0ODEyLCA2NDgyMiwgNjQ4MzEsIDY0ODQxLCA2NDg1MiwgNjQ4NjIsIAotICAgIDY0ODczLCA2NDg4NSwgNjQ4OTYsIDY0OTA2LCA2NDkxNywgNjQ5MjksIDY0OTQwLCA2NDk1MiwgNjQ5NjUsIDY0OTc3LCAKLSAgICA2NDk4OCwgNjQ5OTgsIDY1MDA3LCA2NTAxNSwgNjUwMjIsIDY1MDMwLCA2NTAzOSwgNjUwNDcsIDY1MDU2LCA2NTA2NiwgCi0gICAgNjUwNzUsIDY1MDgzLCA2NTA5MiwgNjUxMDIsIDY1MTExLCA2NTEyMSwgNjUxMzIsIDY1MTQyLCA2NTE1MSwgNjUxNTksIAotICAgIDY1MTY4LCA2NTE3OCwgNjUxODcsIDY1MTk3LCA2NTIwOCwgNjUyMTgsIDY1MjI3LCA2NTIzNywgNjUyNDgsIDY1MjU4LCAKLSAgICA2NTI2OSwgNjUyODEsIDY1MjkyLCA2NTMwMiwgNjUzMTEsIDY1MzE5LCA2NTMyOCwgNjUzMzgsIDY1MzQ3LCA2NTM1NywgCi0gICAgNjUzNjgsIDY1Mzc4LCA2NTM4NywgNjUzOTcsIDY1NDA4LCA2NTQxOCwgNjU0MjksIDY1NDQxLCA2NTQ1MiwgNjU0NjIsIAotICAgIDY1NDcxLCA2NTQ4MSwgNjU0OTIsIDY1NTAyLCA2NTUxMywgNjU1MjUsIDY1NTM2LCA2NTU0NiwgNjU1NTcsIDY1NTY5LCAKLSAgICA2NTU4MCwgNjU1OTIsIDY1NjA1LCA2NTYxNywgNjU2MjgsIDY1NjM4LCA2NTY0NywgNjU2NTUsIDY1NjY0LCA2NTY3NCwgCi0gICAgNjU2ODMsIDY1NjkzLCA2NTcwNCwgNjU3MTQsIDY1NzIzLCA2NTczMywgNjU3NDQsIDY1NzU0LCA2NTc2NSwgNjU3NzcsIAotICAgIDY1Nzg4LCA2NTc5OCwgNjU4MDcsIDY1ODE3LCA2NTgyOCwgNjU4MzgsIDY1ODQ5LCA2NTg2MSwgNjU4NzIsIDY1ODgyLCAKLSAgICA2NTg5MywgNjU5MDUsIDY1OTE2LCA2NTkyOCwgNjU5NDEsIDY1OTUzLCA2NTk2NCwgNjU5NzQsIDY1OTgzLCA2NTk5MywgCi0gICAgNjYwMDQsIDY2MDE0LCA2NjAyNSwgNjYwMzcsIDY2MDQ4LCA2NjA1OCwgNjYwNjksIDY2MDgxLCA2NjA5MiwgNjYxMDQsIAotICAgIDY2MTE3LCA2NjEyOSwgNjYxNDAsIDY2MTUwLCA2NjE2MSwgNjYxNzMsIDY2MTg0LCA2NjE5NiwgNjYyMDksIDY2MjIxLCAKLSAgICA2NjIzMiwgNjYyNDQsIDY2MjU3LCA2NjI2OSwgNjYyODIsIDY2Mjk2LCA2NjMwOSwgNjYzMjEsIDY2MzMyLCA2NjM0MiwgCi0gICAgNjYzNTEsIDY2MzU5LCA2NjM2NiwgNjYzNzEsIDY0ODksIDY2Mzc4LCAzMDMzMiwgNjYzODMsIDY2Mzg4LCAzMDMzNywgCi0gICAgNjYzOTQsIDE5MTAwLCAzMDM0MiwgNjYzOTksIDY2NDA1LCA2NjQxMywgNjY0MTksIDY2NDI1LCA2NjQzMiwgNjY0MzksIAotICAgIDY2NDQ0LCA2NjQ0OCwgNjY0NTEsIDY2NDU1LCA2NjQ2NCwgNjY0NzAsIDY2NDgyLCA2NjQ5MywgNjY0OTcsIDMwMTksIAotICAgIDY0NjQsIDY2NTAyLCA2NjUwNSwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTksIDIzOTI3LCA2NjUyNCwgNjY1MjgsIAotICAgIDY2NTMxLCA2NjUzNiwgNjY1NDAsIDY2NTQ3LCA2NjU1MywgNjY1NTcsIDY2NTYxLCA2NjU2NCwgMzAzNTksIDY2NTY5LCAKLSAgICA2NjU3NiwgNjY1ODUsIDY2NTkzLCA2NjYwNCwgNjY2MTIsIDY2NjIwLCA2NjYyNywgNjY2MzQsIDY2NjQwLCA2NjY1MSwgCi0gICAgMzAzNjQsIDY2NjU2LCA2NjY2NywgNjY2NzksIDY2Njg3LCA2NjY5OCwgNjY3MDcsIDY2NzE4LCA2NjcyMywgNjY3MzEsIAotICAgIDI1MTAsIDY2NzM2LCAzMjAwMiwgNjY3NDksIDY2NzUzLCA2Njc2NSwgNjY3NzMsIDY2Nzc4LCA2Njc4NiwgMTU2NjQsIAotICAgIDY2Nzk3LCA2NjgwMywgNjY4MTAsIDY2ODE4LCA2NjgyNCwgMzAzNzQsIDY2ODI5LCAzODMxLCA1NTYwNSwgNjY4MzYsIAotICAgIDY2ODM5LCA2Njg0NywgNjY4NjAsIDY2ODczLCA2Njg4NiwgNjY4OTksIDY2OTA2LCA2NjkxNywgNjY5MjYsIDM5MTA1LCAKLSAgICAzOTExMCwgNjY5MzEsIDY2OTM1LCA2Njk0MywgNjY5NTAsIDY2OTU5LCA2Njk2NywgNjY5NzMsIDY2OTgyLCA2Njk5MCwgCi0gICAgNjY5OTgsIDY3MDAyLCA2NzAxMSwgNjcwMjAsIDY3MDMwLCA2NzA0MywgNjcwNTYsIDY3MDY2LCAzMDM3OSwgNjcwNzIsIAotICAgIDY3MDc5LCA2NzA4NSwgMzAzODUsIDY3MDkwLCA2NzA5MywgNjcwOTcsIDY3MTA1LCA2NzExNCwgMzg4NDMsIDY3MTIyLCAKLSAgICA2NzEzMSwgNjcxMzksIDY3MTQ2LCA2NzE1NCwgNjcxNjQsIDY3MTczLCA2NzE4MiwgNjcxOTEsIDY3MTk5LCA2NzIxMCwgCi0gICAgNjcyMjAsIDc3MzMsIDE5NzE1LCA2NzIyOSwgNjcyMzQsIDY3MjM5LCA2NzI0MywgNjcyNDcsIDY3MjUyLCA2NzI1OCwgCi0gICAgNjcyNjMsIDY3MjY4LCA2NzI3NCwgNjcyNzksIDY3Mjg0LCAxOTY4MCwgNjcyODksIDY3Mjk2LCA2NzMwNCwgNjczMTIsIAotICAgIDY3MzE3LCA2NzMyNCwgNjczMzEsIDY3MzM1LCA2NzMzOSwgNjczNDcsIDY3MzU1LCAzMDQwMiwgNjczNjEsIDY3MzY3LCAKLSAgICA2NzM3OSwgNjczODUsIDY3Mzg5LCA2NzM5NiwgNjc0MDEsIDY3NDEyLCA2NzQyMiwgNjc0MzIsIDY3NDQ0LCA2NzQ1MCwgCi0gICAgNjc0NjAsIDY3NDcwLCAzMDQyOSwgNjc0NzksIDY3NDg4LCA2NzQ5NCwgNjc1MDYsIDY3NTE3LCA2NzUyNCwgNjc1MjksIAotICAgIDY3NTMzLCA2NzU0MSwgNjc1NDcsIDY3NTUyLCA2NzU1NywgNjc1NjQsIDY3NTcyLCA2NzU4NCwgNjc1OTQsIDY3NjAzLCAKLSAgICA2NzYxMiwgNjc2MTksIDMxODY2LCAyMTkwNiwgNjc2MjUsIDY3NjMwLCA2NzYzNCwgNjc2MzgsIDY3NjQzLCA2NzY0OSwgCi0gICAgNjc2NjAsIDY3NjczLCA2NzY3OCwgNjc2ODUsIDMwNDM0LCA2NzY5MCwgNjc3MDIsIDY3NzExLCA2NzcyMSwgNjc3MzIsIAotICAgIDY3NzQ1LCA2Nzc1MiwgNjc3NjEsIDY3NzcwLCA2Nzc3OCwgNjc3ODMsIDY3Nzg5LCAxNDY1LCA2Nzc5NCwgNjc3OTksIAotICAgIDY3ODA0LCA2NzgwOSwgNjc4MTUsIDY3ODIwLCA2NzgyNSwgNjc4MzEsIDY3ODM3LCA2Nzg0MiwgNjc4NDYsIDY3ODUxLCAKLSAgICA2Nzg1NiwgNjc4NjEsIDU2MTExLCA2Nzg2NiwgNjc4NzEsIDY3ODc2LCA2Nzg4MSwgNjc4ODcsIDY3ODkzLCA2Nzg5OCwgCi0gICAgNjc5MDIsIDY3OTA3LCA2NzkxMiwgNjc5MTcsIDY3OTIzLCA2NzkyOCwgNjc5MzQsIDY3OTM5LCA2Nzk0NCwgNjc5NDksIAotICAgIDY3OTU0LCA2Nzk1OCwgNjc5NjQsIDY3OTY5LCA2Nzk3OCwgNjc5ODMsIDY3OTg4LCA2Nzk5MywgNjc5OTgsIDY4MDAyLCAKLSAgICA2ODAwOSwgNjgwMTUsIDE1MzI2LCAxNTMzMywgNDI4NzUsIDY4MDIwLCA2Nzk3MCwgNjgwMjIsIDY4MDMyLCAzMDQ0MywgCi0gICAgNjgwMzUsIDY4MDQ0LCA2ODA1MCwgNDYxNywgMzA0NDgsIDY4MDU0LCA2ODA2MCwgNjgwNjYsIDY4MDcxLCA2ODA3NSwgCi0gICAgNjgwODIsIDY4MDg3LCA2ODA5NywgNjgxMDYsIDY4MTEwLCA2ODExNiwgNjgxMjIsIDY4MTI4LCA2ODEzMiwgNjgxNDAsIAotICAgIDY4MTQ3LCA2ODE1NSwgNjgxNjMsIDMwNDUzLCA2ODE3MCwgNjgxNzMsIDY4MTgwLCA2ODE4NiwgNjgxOTEsIDY4MTk1LCAKLSAgICA2ODIwMSwgNjgyMDgsIDY4MjEzLCA2ODIxNywgNjgyMjYsIDY4MjM0LCA2ODI0MCwgNjgyNDUsIDMwNDU4LCA2ODI1MiwgCi0gICAgNjgyNTksIDY4MjY1LCA2ODI3MCwgNjgyNzYsIDY4MjgzLCA2ODI4OSwgMTk0NTMsIDI1NDA4LCA2ODI5NSwgNjgzMDAsIAotICAgIDY4MzA2LCA2ODMxOCwgNjgwMDMsIDY4MDEwLCA2ODMyOCwgNjgzMzMsIDY4MzQwLCA2ODM0NywgNjgzNTMsIDY4MzY0LCAKLSAgICA2ODM2OSwgNzUwMiwgNjgzNzcsIDY4MzgwLCA2ODM4NiwgNjgzOTAsIDY4Mzk0LCA2ODM5NywgNjg0MDMsIDMwMjA3LCAKLSAgICA0NjU2LCA5MTMsIDExNzMxLCA2ODQxMCwgNjg0MTYsIDY4NDIyLCA2ODQyOCwgNjg0MzQsIDY4NDQwLCA2ODQ0NiwgNjg0NTIsIAotICAgIDY4NDU4LCA2ODQ2MywgNjg0NjgsIDY4NDczLCA2ODQ3OCwgNjg0ODMsIDY4NDg4LCA2ODQ5MywgNjg0OTgsIDY4NTAzLCAKLSAgICA2ODUwOCwgNjg1MTMsIDY4NTE4LCA2ODUyMywgNjg1MjksIDY4NTM0LCA2ODUzOSwgNjg1NDUsIDY4NTUwLCA2ODU1NSwgCi0gICAgNjg1NjEsIDY4NTY3LCA2ODU3MywgNjg1NzksIDY4NTg1LCA2ODU5MSwgNjg1OTcsIDY4NjAzLCA2ODYwOSwgNjg2MTQsIAotICAgIDY4NjE5LCA2ODYyNSwgNjg2MzAsIDY4NjM1LCA2ODY0MSwgNjg2NDYsIDY4NjUxLCA2ODY1NiwgNjg2NjEsIDY4NjY2LCAKLSAgICA2ODY3MSwgNjg2NzYsIDY4NjgxLCA2ODY4NiwgNjg2OTEsIDY4Njk2LCA2ODcwMSwgNjg3MDcsIDY4NzEyLCA2ODcxNywgCi0gICAgNjg3MjIsIDY4NzI4LCA2ODczMywgNjg3MzgsIDY4NzQzLCA2ODc0OCwgNjg3NTQsIDY4NzU5LCA2ODc2NCwgNjg3NjksIAotICAgIDY4Nzc0LCA2ODc3OSwgNjg3ODQsIDY4Nzg5LCA2ODc5NCwgNjg3OTksIDY4ODA0LCA2ODgwOSwgNjg4MTQsIDY4ODE5LCAKLSAgICA2ODgyNCwgNjg4MjksIDY4ODM0LCA2ODgzOSwgNjg4NDQsIDY4ODQ5LCA2ODg1NSwgNjg4NjAsIDY4ODY1LCA2ODg3MCwgCi0gICAgNjg4NzUsIDY4ODgwLCA2ODg4NSwgNjg4OTAsIDE4MjcsIDE0MywgNjg4OTUsIDY4ODk5LCA2ODkwMywgNjg5MDgsIDY4OTE2LCAKLSAgICA2ODkyMCwgNjg5MjcsIDY4OTM1LCA2ODkzOSwgNjg5NTIsIDY4OTYwLCA2ODk2NCwgNjg5NjcsIDY4OTcyLCA2ODk3NiwgCi0gICAgNjg5ODEsIDY4OTg1LCA2ODk5MywgNjg5OTcsIDE5MTA4LCA2OTAwMiwgNTgyNzAsIDY5MDA2LCA2OTAwOSwgNjkwMTcsIAotICAgIDY5MDI1LCA2OTAzMywgNjkwMzgsIDY5MDQ1LCA2OTA1MSwgNjkwNTcsIDY5MDYyLCA2OTA2NywgNjkwNzUsIDYyMTc1LCAKLSAgICA2OTA4MiwgNjkwODcsIDY5MDkyLCA2OTA5NiwgOTk4MSwgNjkxMDAsIDY5MTA1LCA2OTExMCwgNjkxMTQsIDY5MTE3LCAKLSAgICA2OTEyMywgNjkxMjcsIDY5MTM3LCA2OTE0NiwgNjkxNDksIDY5MTU2LCA2OTE2OSwgNjkxNzUsIDY5MTgzLCA2OTE5NCwgCi0gICAgNjkyMDUsIDY5MjE2LCA2OTIyNywgNjkyMzYsIDY5MjQyLCA2OTI1MSwgNjkyNTksIDY5MjY5LCA2OTI4MiwgNjkyODksIAotICAgIDY5MzAwLCA2OTMwNiwgNjkzMTEsIDY5MzE2LCA2OTMyMiwgNjkzMjgsIDY5MzM4LCA2OTM0NywgNjc2OTIsIDY5MzU1LCAKLSAgICA2OTM2MSwgNjkzNjksIDY5Mzc1LCA2OTM4MywgNjkzODcsIDY5MzkxLCA2OTM5NCwgNjk0MDAsIDY5NDA2LCA2OTQxNCwgCi0gICAgNjk0MjYsIDY5NDM4LCA2OTQ0NSwgNjk0NDksIDY5NDYwLCA2OTQ2OCwgNjk0NzUsIDY5NDg3LCA2OTQ5NSwgNjk1MDMsIAotICAgIDY5NTEwLCA2OTUxNiwgNjk1MjYsIDY5NTM1LCA2OTU0MCwgNjk1NTAsIDY5NTU5LCAzODE4NCwgNjk1NjYsIDY5NTcwLCAKLSAgICA2OTU3NSwgNjk1ODMsIDY5NTkwLCA2OTU5NiwgNjk2MDAsIDY5NjEwLCA2OTYyMSwgNjk2MjksIDY5NjM2LCA2OTY0OCwgCi0gICAgNjk2NjAsIDY5NjY5LCA2NjczOSwgNjk2NzYsIDY5Njg3LCA2OTcwMSwgNjk3MDksIDY5NzE5LCA2OTcyNiwgNjk3MzQsIAotICAgIDY5NzQ2LCA2OTc1NSwgNjk3NjMsIDY5NzczLCA2OTc4MiwgNjk3OTMsIDY5ODA1LCA2OTgxNCwgNjk4MjQsIDY5ODMxLCAKLSAgICA2OTg0MCwgNjk4NTUsIDY5ODY1LCA2OTg3NCwgNjk4ODIsIDY5ODk1LCA2OTkxMCwgNjk5MTQsIDY5OTIzLCA2OTkzNSwgCi0gICAgNjk5NDYsIDY5OTU3LCA2OTk2OCwgNjk5NzgsIDY5OTg5LCA2OTk5NywgNzAwMDMsIDcwMDEzLCA3MDAxOSwgMjY5MjMsIAotICAgIDcwMDI0LCA3MDAzMCwgNzAwMzUsIDcwMDQyLCA4MDc1LCAxNTY4NCwgNzAwNDgsIDcwMDU3LCA3MDA2MiwgNzAwNjYsIAotICAgIDcwMDczLCA3MDA3OSwgNzAwODQsIDcwMDkyLCA3MDEwMCwgNzAxMDQsIDcwMTA3LCA3MDExMCwgNzAxMTIsIDcwMTE5LCAKLSAgICA3MDEyNSwgNzAxMzYsIDcwMTQxLCA3MDE0NSwgNzAxNTIsIDcwMTU4LCA3MDE2MywgNzAxNzEsIDYyNjQyLCA2MjY1MiwgCi0gICAgNzAxNzcsIDcwMTg0LCA3MDE5NCwgODk3MSwgNzAyMDEsIDcwMjA2LCAyNzExMywgNzAyMTUsIDcwMjIwLCA3MDIyNywgCi0gICAgNzAyMzcsIDcwMjQ1LCA3MDI1MywgNzAyNjIsIDcwMjY4LCA3MDI3NCwgNzAyODEsIDcwMjg4LCA3MDI5MywgNzAyOTcsIAotICAgIDcwMzA1LCA3MDMxMCwgNzAzMTUsIDcwMzIzLCA3MDMzMCwgNzAzMzUsIDcwMzQxLCA3MDM0NCwgNzAzNDgsIDcwMzU3LCAKLSAgICA2ODk0NywgNzAzNjYsIDcwMzcwLCA3MDM3NiwgNzAzODcsIDcwMzk3LCAxNTY5MywgNzA0MDgsIDcwNDE2LCAxNTcwNSwgCi0gICAgNzA0MjMsIDcwNDI3LCA3MDQzNiwgMjUyOTQsIDcwNDQzLCA3MDQ0NywgNzA0NTIsIDcwNDY5LCA3MDQ4MSwgODkyNSwgCi0gICAgNzA0OTMsIDcwNDk4LCA3MDUwMywgNzA1MDgsIDcwNTEyLCA3MDUxNSwgNzA1MjAsIDcwNTI1LCA3MDUzMSwgNzA1MzYsIAotICAgIDQzMjQsIDE5MTgxLCA3MDU0MSwgNzA1NDYsIDcwNTUyLCA3MDU1OSwgNzA1NjQsIDcwNTY5LCA3MDU3NSwgNzA1ODEsIAotICAgIDcwNTg3LCA3MDU5MiwgNzA1OTgsIDcwNjAyLCA3MDYxNiwgNzA2MjQsIDcwNjMyLCA3MDYzOCwgNzA2NDMsIDcwNjUwLCAKLSAgICA3MDY2MCwgNzA2NjksIDcwNjc0LCA3MDY3OSwgNzA2ODcsIDcwNjkyLCA3MDY5OCwgNzA3MDMsIDcwNzEyLCA1NzE1NCwgCi0gICAgNzA3MTcsIDcwNzIwLCA3MDczOCwgNzA3NTcsIDcwNzcwLCA3MDc4NCwgNzA4MDAsIDcwODA3LCA3MDgxNCwgNzA4MjAsIAotICAgIDcwODI3LCA3MDgzMiwgNzA4MzgsIDcwODQ0LCA3MDg1MiwgNzA4NTgsIDcwODYzLCA3MDg2OCwgNzA4ODQsIDg5MzgsIAotICAgIDcwODk4LCA3MDkwNSwgNzA5MTMsIDcwOTE5LCA3MDkyMywgNzA5MjYsIDcwOTMxLCA3MDkzNiwgNzA5NDMsIDcwOTQ4LCAKLSAgICA3MDk1NywgNzA5NjIsIDcwOTY4LCA3MDk3NywgNzA5ODYsIDcwOTkxLCA3MDk5NSwgNzEwMDMsIDEwMDA1LCA3MTAxMiwgCi0gICAgNzEwMjAsIDcxMDI1LCA3MTAzMSwgMTAwMTYsIDcxMDM2LCA3MTAzOSwgNzEwNDQsIDcxMDU0LCA3MTA2MywgNzEwNjgsIAotICAgIDcxMDc0LCA3MTA3OSwgNzEwODcsIDcxMDk0LCA3MTEwNSwgNzExMTUsIDcxMTIwLCA2MjEwMywgNzExMjUsIDcxMTMxLCAKLSAgICA3MTEzNiwgNzExNDMsIDcxMTUyLCA3MTE2MCwgNzExNjYsIDcxMTczLCA3MTE3OSwgNzExODMsIDE1MTYxLCAyOTkzLCAKLSAgICA3MTE4OCwgNzExOTIsIDcxMTk4LCA3MTIwNywgNzEyMTMsIDcxMjIwLCA3MTIyNCwgNzEyNDUsIDcxMjY3LCA3MTI4MywgCi0gICAgNzEzMDAsIDcxMzE5LCA3MTMyOCwgNzEzMzgsIDcxMzQ1LCA3MTM1MiwgMjUxODEsIDcxMzU4LCA3MTM2MiwgNzEzNzAsIAotICAgIDcxMzgyLCA3MTM4OCwgNzEzOTYsIDcxNDAwLCA3MTQwOCwgNzE0MTUsIDcxNDE5LCA3MTQyNSwgNzE0MzEsIDcxNDM2LCAKLSAgICAzNDk4LCAzOTMwNSwgNzE0NDIsIDcxNDQ2LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc1LCAKLSAgICA3MTQ4MSwgNzE0ODcsIDcxNDk0LCA3MTUwMCwgNzE1MDcsIDcxNTEzLCA3MTUxOSwgNzE1MjQsIDcxNTMwLCA3MTUzNSwgCi0gICAgNzE1NDAsIDcxNTQ0LCA3MTU0OSwgMzkzMjAsIDcxNTUzLCA3MTU1OCwgNzE1NjYsIDcxNTcwLCA3MTU3NSwgNzE1ODIsIAotICAgIDcxNTkxLCA3MTU5NywgNzE2MDQsIDcxNjA4LCA3MTYxMSwgNzE2MTgsIDcxNjI3LCA3MTYzMiwgNzE2MzYsIDcxNjQ0LCAKLSAgICA3MTY1MywgNzE2NTcsIDcxNjY1LCA3MTY3MSwgNzE2NzYsIDcxNjgxLCA3MTY4NywgNzE2OTMsIDcxNjk4LCA3MTcwMiwgCi0gICAgNzE3MDgsIDcxNzEzLCA3MTcxNywgNzE3MjEsIDcxNzI0LCA3MTcyOSwgNzE3MzcsIDcxNzQ3LCA3MTc1MiwgMzY4NjUsIAotICAgIDcxNzYwLCA3MTc3MiwgNzE3NzYsIDcxNzgyLCA3MTc5NCwgNzE4MDUsIDcxODEyLCA3MTgxOCwgNzE4MjUsIDcxODM3LCAKLSAgICA3MTg0NCwgNzE4NTAsIDE5MjU1LCA3MTg1NCwgNzE4NjAsIDcxODY3LCA3MTg3MywgNzE4NzksIDcxODg0LCA3MTg4OSwgCi0gICAgNzE4OTQsIDcxOTAzLCA1NDkxLCA3MTkwOCwgMTQ2MjcsIDcxOTE0LCA3MTkxOCwgNzE5MjYsIDcxOTM1LCA3MTkzOSwgCi0gICAgNzE5NDYsIDcxOTU1LCA3MTk2OCwgNzE5NzQsIDcxNTQ1LCAyNzk2MiwgNzE5NzksIDcxOTgxLCA3MTk4NiwgNzE5OTEsIAotICAgIDcxOTk2LCA3MjAwMSwgNzIwMDYsIDcyMDExLCA3MjAxNiwgNzIwMjEsIDcyMDI2LCA3MjAzMSwgNzIwMzYsIDcyMDQxLCAKLSAgICA3MjA0NiwgNzIwNTEsIDcyMDU3LCA3MjA2MiwgNzIwNjcsIDcyMDcyLCA3MjA3NywgNzIwODIsIDcyMDg3LCA3MjA5MiwgCi0gICAgNzIwOTcsIDcyMTAzLCA3MjEwOSwgNzIxMTUsIDcyMTIwLCA3MjEyNSwgNzIxMzcsIDcyMTQyLCAxODMzLCA2NywgNzIxNDcsIAotICAgIDcyMTUyLCAzMDQ4NSwgMzA0OTAsIDMwNDk1LCAzMDUwMSwgMzA1MDYsIDcyMTU2LCAzMDUxMSwgMjAyMjYsIDcyMTc4LCAKLSAgICA3MjE4MiwgNzIxODYsIDcyMTkxLCA3MjE5NSwgMzA1MTUsIDcyMTk5LCA3MjIwNywgMzA1MjAsIDcyMjE0LCA3MjIxNywgCi0gICAgNzIyMjIsIDcyMjI2LCA3OTEwLCA3MjIzNSwgMzA1MjUsIDIwMDkyLCA3MjIzOCwgNzIyNDIsIDEzOTYsIDcyMjQ3LCAKLSAgICAzMDUzNiwgNzIyNTAsIDcyMjU1LCAyMzcyMCwgMjM3MzAsIDMyOTQwLCA3MjI2MCwgNzIyNjUsIDcyMjcwLCA3MjI3NSwgCi0gICAgNzIyODEsIDcyMjg2LCA3MjI5NSwgNzIzMDAsIDcyMzA3LCA3MjMxMywgNzIzMTgsIDcyMzIzLCA3MjMyOCwgNzIzMzgsIAotICAgIDcyMzQ3LCA3MjM1MiwgNzIzNjAsIDcyMzY0LCA3MjM3MiwgMzAzNTAsIDExODgsIDcyMzc5LCA3MjM4NSwgNzIzOTAsIAotICAgIDcyMzk1LCA3MjQwMCwgNzI0MDYsIDcyNDExLCA3MjQxOCwgNzI0MjQsIDcyNDI5LCA3MjQzNywgNzI0NDcsIDcyNDU3LCAKLSAgICA3MjQ2MywgNzI0NjgsIDcyNDc0LCAxNTcxNSwgNzI0ODEsIDMzNzQ1LCA3MjQ5NCwgNzI0OTksIDcyNTA1LCA3MjUxOCwgCi0gICAgNzI1MjQsIDcyNTI4LCA3MjUzNywgNzI1NDQsIDcyNTUwLCA3MjU1OCwgNzI1NjcsIDcyNTc0LCA3MjU4MCwgNzI1ODMsIAotICAgIDIzODYxLCA3MjU4NywgNzI1OTQsIDcyNjAwLCA3MjYwOCwgNzI2MTMsIDIyMDM1LCA3MjYxOSwgNzI2MjIsIDcyNjMwLCAKLSAgICA3MjYzOCwgNzI2NTIsIDcyNjU5LCA3MjY2NSwgNzI2NzIsIDcyNjc4LCAzMDU1MCwgNzI2ODIsIDcyNjg5LCA3MjY5NywgCi0gICAgNzI3MDUsIDMwNTU1LCA3MjcxMSwgNzI3MTcsIDcyNzIyLCA3MjczMiwgNzI3MzgsIDcyNzQ3LCAyODY3NywgMzI0MTUsIAotICAgIDcyNzU1LCA3Mjc2MCwgNzI3NjUsIDcyNzcwLCA3Mjc3NCwgMTMxNzAsIDM2ODc4LCA3Mjc3OSwgNzI3ODQsIDMwNTYwLCAKLSAgICA1OTU1NCwgNzI3ODgsIDcyNzkzLCA3Mjc5NywgNzI4MDYsIDcyODE0LCA3MjgyMCwgNzI4MjUsIDcyODMxLCA3MjgzOCwgCi0gICAgNzI4NDQsIDcyODQ5LCA3Mjg1NCwgNzI4NjMsIDcyODc1LCA3Mjg5MCwgMzA4MDEsIDcyODk2LCAxNDc0NiwgMzA1NjQsIAotICAgIDcyOTAwLCA3MjkwNywgMjIxNDUsIDcyOTEzLCA3MjkyMCwgNzI5MjksIDcyOTM2LCA3Mjk0NSwgNzI5NTEsIDcyOTU2LCAKLSAgICA3Mjk2NCwgNzI5NzAsIDMwNTc0LCA3Mjk3NSwgNzI5ODQsIDcxODAwLCA3Mjk5MywgNzMwMDAsIDczMDA2LCA3MzAxMiwgCi0gICAgNzMwMjIsIDczMDMwLCA3MzAzNywgNzMwNDEsIDMwNTc5LCA3MzA0NCwgMzA1ODUsIDMwNTkxLCA3MzA0OSwgNzMwNTcsIAotICAgIDczMDY3LCA3MzA3NiwgNzMwODQsIDczMDkxLCA3MzEwMSwgMzA1OTYsIDczMTA1LCA3MzEwNywgNzMxMTEsIDczMTE2LCAKLSAgICA3MzEyMCwgNzMxMjQsIDczMTMwLCA3MzEzNSwgNzMxMzksIDczMTUwLCA3MzE1NSwgMjk5OCwgNzMxNTksIDczMTY2LCAKLSAgICA3MzE3MCwgNzMxNzksIDczMTg3LCA3MzE5NCwgNzMxOTksIDczMjA0LCA1OTYwMCwgNzMyMDgsIDczMjExLCA3MzIxNywgCi0gICAgNzMyMjUsIDczMjMxLCA3MzIzNSwgNzMyNDAsIDczMjQ3LCA3MzI1MiwgNzMyNTgsIDMyNDQ2LCA3MzI2MywgNzMyNjYsIAotICAgIDczMjcxLCA3MzI3NSwgNzMyODAsIDczMjg1LCA3MzI4OSwgNzMyOTcsIDIzNzM5LCAyMzc0OCwgNzMzMDMsIDczMzA5LCAKLSAgICA3MzMxNSwgNzMzMjAsIDczMzI0LCA3MzMyNywgNzMzMzcsIDczMzQ2LCA3MzM1MSwgNzMzNTcsIDczMzY0LCA3MzM3MCwgCi0gICAgNzMzNzQsIDczMzgyLCA3MzM4NywgMzI0NTIsIDczMzkxLCA3MzM5OSwgNzM0MDUsIDczNDEyLCA3MzQxNywgNzM0MjEsIAotICAgIDczNDI2LCA1NTc5MSwgMzI0NTgsIDczNDMyLCA3MzQzNywgNzM0NDEsIDczNDQ2LCA3MzQ1MSwgNzM0NTYsIDczNDYwLCAKLSAgICA3MzQ2NSwgNzM0NzAsIDczNDc2LCA3MzQ4MSwgNzM0ODYsIDczNDkyLCA3MzQ5OCwgNzM1MDMsIDczNTA3LCA3MzUxMiwgCi0gICAgNzM1MTcsIDczNTIyLCA3MzUyNiwgMjIxNDQsIDczNTMxLCA3MzUzNiwgNzM1NDIsIDczNTQ4LCA3MzU1NCwgNzM1NTksIAotICAgIDczNTYzLCA3MzU2OCwgNzM1NzMsIDczNTc4LCA3MzU4MiwgNzM1ODcsIDczNTkyLCA3MzU5NywgNzM2MDIsIDczNjA2LCAKLSAgICAzMDYwMCwgNzM2MTQsIDczNjE4LCA3MzYyNiwgNzM2MzQsIDczNjQ1LCA3MzY1MCwgNzM2NTQsIDIwNDk3LCA3MzY1OSwgCi0gICAgNzM2NjUsIDczNjc1LCA3MzY4MiwgNzM2ODcsIDczNjk2LCA3MzcwMSwgNzM3MDUsIDczNzEwLCA3MzcxOCwgNzM3MjYsIAotICAgIDczNzMzLCA2MjMyMSwgNzM3MzksIDczNzQ3LCA3Mzc1NCwgNzM3NjUsIDczNzcxLCA3Mzc3NywgMzA2MTAsIDczNzgwLCAKLSAgICA3Mzc4NywgNzM3OTUsIDczODAwLCAzNzA2OSwgNzM4MDQsIDczODA5LCA3MzgxNiwgNzM4MjEsIDczODksIDczODI1LCAKLSAgICA3MzgzMywgNzM4NDAsIDczODQ3LCA3Mzg1MywgNzM4NjcsIDYwNjI5LCA3Mzg3NSwgNzM4ODEsIDczODg1LCA3Mzg4OCwgCi0gICAgNzM4OTYsIDczOTAzLCA3MzkwOCwgNzM5MjEsIDczOTI4LCA3MzkzNSwgNzM5NDAsIDU4MTc0LCA3Mzk0NSwgNzM5NDgsIAotICAgIDczOTU1LCA3Mzk2MSwgNzM5NjUsIDczOTczLCA3Mzk4MywgNzM5OTMsIDc0MDAyLCA3NDAxMCwgNzQwMjEsIDc0MDI2LCAKLSAgICA3NDAzMCwgNzQwMzUsIDc0MDM5LCAzMzA3MSwgMTk1MDksIDMzMDgwLCA3NDA0NywgNzQwNTIsIDc0MDU3LCA3NDA2MiwgCi0gICAgNzQwNjcsIDc0MDcyLCA3NDA3NywgNzQwODEsIDc0MDg2LCA3NDA5MSwgNzQwOTYsIDc0MTAxLCA3NDEwNiwgNzQxMTEsIAotICAgIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTI5LCA3NDEzMywgNzQxMzcsIDc0MTQxLCA3NDE0NiwgNzQxNTEsIDc0MTU1LCAKLSAgICA3NDE2MCwgNzQxNjQsIDc0MTY4LCA3NDE3MywgNzQxNzgsIDc0MTgzLCA3NDE4OCwgNzQxOTIsIDc0MTk3LCA3NDIwMiwgCi0gICAgNzQyMDYsIDc0MjExLCA3NDIxNiwgNzQyMjEsIDc0MjI2LCA3NDIzMSwgNzQyMzYsIDc0MjQxLCA3NDI0NiwgNzQyNTEsIAotICAgIDc0MjU2LCA3NDI2MSwgNzQyNjYsIDc0MjcxLCA3NDI3NiwgNzQyODEsIDc0Mjg2LCA3NDI5MSwgNzQyOTYsIDc0MzAxLCAKLSAgICA3NDMwNiwgNzQzMTAsIDc0MzE1LCA3NDMyMCwgNzQzMjUsIDc0MzMwLCA3NDMzNSwgNzQzNDAsIDc0MzQ1LCA3NDM1MCwgCi0gICAgNzQzNTUsIDc0MzYwLCA3NDM2NSwgNzQzNjksIDc0Mzc0LCA3NDM3OCwgNzQzODMsIDc0Mzg4LCA3NDM5MywgNzQzOTgsIAotICAgIDc0NDAzLCA3NDQwOCwgNzQ0MTMsIDc0NDE4LCA3NDQyMywgNzQ0MjcsIDc0NDMxLCA3NDQzNiwgNzQ0NDEsIDc0NDQ1LCAKLSAgICA3NDQ1MCwgNzQ0NTUsIDc0NDU5LCA3NDQ2NCwgNzQ0NjksIDc0NDc0LCA3NDQ3OSwgNzQ0ODMsIDc0NDg4LCA3NDQ5MywgCi0gICAgNzQ0OTcsIDc0NTAyLCA3NDUwNiwgNzQ1MTAsIDc0NTE0LCA3NDUxOCwgNzQ1MjMsIDc0NTI3LCA3NDUzMSwgNzQ1MzUsIAotICAgIDc0NTM5LCA3NDU0MywgNzQ1NDcsIDc0NTUxLCA3NDU1NSwgNzQ1NTksIDc0NTY0LCA3NDU2OSwgNzQ1NzQsIDc0NTc5LCAKLSAgICA3NDU4NCwgNzQ1ODksIDc0NTk0LCA3NDU5OSwgNzQ2MDQsIDc0NjA5LCA3NDYxMywgNzQ2MTcsIDc0NjIxLCA3NDYyNSwgCi0gICAgNzQ2MjksIDc0NjMzLCA3NDYzOCwgNzQ2NDIsIDc0NjQ3LCA3NDY1MSwgNzQ2NTYsIDc0NjYxLCA3NDY2NSwgNzQ2NjksIAotICAgIDc0Njc0LCA3NDY3OCwgNzQ2ODIsIDc0Njg2LCA3NDY5MCwgNzQ2OTQsIDc0Njk4LCA3NDcwMiwgNzQ3MDYsIDc0NzEwLCAKLSAgICA3NDcxNCwgNzQ3MTgsIDc0NzIyLCA3NDcyNiwgNzQ3MzAsIDc0NzM1LCA3NDc0MCwgNzQ3NDQsIDc0NzQ4LCA3NDc1MiwgCi0gICAgNzQ3NTYsIDc0NzYwLCA3NDc2NCwgNzQ3NjksIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OSwgNzQ3OTMsIAotICAgIDc0Nzk4LCA3NDgwMiwgNzQ4MDcsIDc0ODExLCA3NDgxNSwgNzQ4MTksIDc0ODIzLCA3NDgyNywgNzQ4MzEsIDc0ODM1LCAKLSAgICA3NDgzOSwgNzQ4NDMsIDc0ODQ3LCA3NDg1MSwgNzQ4NTYsIDc0ODYwLCA3NDg2NCwgNzQ4NjgsIDc0ODcyLCA3NDg3NiwgCi0gICAgNzQ4ODAsIDc0ODg0LCA3NDg4OCwgNzQ4OTIsIDc0ODk2LCA3NDkwMCwgNzQ5MDUsIDc0OTA5LCA3NDkxMywgNzQ5MTgsIAotICAgIDc0OTIzLCA3NDkyNywgNzQ5MzEsIDc0OTM1LCA3NDkzOSwgNzQ5NDMsIDc0OTQ3LCA3NDk1MSwgNzQ5NTUsIDc0OTYwLCAKLSAgICA3NDk2NCwgNzQ5NjksIDc0OTczLCA3NDk3OCwgNzQ5ODIsIDc0OTg3LCA3NDk5MSwgNzQ5OTcsIDc1MDAyLCA3NTAwNiwgCi0gICAgNzUwMTEsIDc1MDE1LCA3NTAyMCwgNzUwMjQsIDc1MDI5LCA3NTAzMywgNzUwMzgsIDE0ODQsIDc1MDQyLCAyNzc4LCAxNzIyLCAKLSAgICAxNzI3LCA3NTA0NiwgNzUwNTAsIDI3ODIsIDc1MDU0LCAxMzY1LCA3NTA1OSwgMTMzMSwgNzUwNjMsIDI3OTQsIDc1MDY3LCAKLSAgICA3NTA3NCwgNzUwODEsIDc1MDk1LCAyNzk4LCA1NTg5LCA3NTEwNCwgNzUxMTIsIDc1MTE5LCA3NTEzMCwgNzUxMzksIAotICAgIDc1MTQ2LCA3NTE1OCwgNzUxNzEsIDc1MTg0LCA3NTE5NSwgNzUyMDAsIDc1MjA3LCA3NTIxOSwgNzUyMjMsIDM5MTgsIAotICAgIDEwMDgyLCA3NTIzMywgNzUyMzgsIDc1MjQ3LCA3NTI1NywgMjgwMiwgNzUyNjIsIDc1MjY2LCA3NTI3MSwgNzUyNzgsIAotICAgIDc1Mjg0LCA3NTI5MiwgNzUzMDQsIDEzMzYsIDExMzUxLCA3NTMxNCwgNzUzMTgsIDc1MzI0LCA3NTMzOCwgNzUzNTAsIAotICAgIDc1MzYyLCA3NTM3MiwgNzUzODEsIDc1MzkwLCA3NTM5OSwgNzU0MDcsIDc1NDE4LCA3NTQyNiwgMzk2OCwgNzU0MzYsIAotICAgIDc1NDQ1LCA3NTQ1MSwgNzU0NjYsIDc1NDczLCA3NTQ3OSwgMzMxOTcsIDc1NDg0LCAyODI2LCAxMTM1NSwgNzU0ODgsIAotICAgIDc1NDk1LCA3MzM0LCA3NTUwNCwgMjgzMSwgMzAxMDUsIDc1NTEwLCA1NzkyMywgNzU1MTcsIDc1NTIzLCA3NTUzNCwgCi0gICAgNzU1NDAsIDc1NTQ3LCA3NTU1MywgNzU1NjEsIDc1NTY4LCA3NTU3NCwgNzU1ODQsIDc1NTkzLCA3NTYwNCwgNzU2MTEsIAotICAgIDc1NjE3LCA3NTYyNywgNzU2MzUsIDc1NjQxLCA3NTY1NiwgNzU2NjIsIDc1NjY3LCA3NTY3NCwgNzU2NzcsIDc1NjgzLCAKLSAgICA3NTY5MCwgNzU2OTYsIDc1NzA0LCA3NTcxMywgNzU3MjEsIDc1NzI3LCA3NTczNiwgMzg4NDUsIDc1NzUwLCA3NTc1NSwgCi0gICAgMTMwMDcsIDc1NzYxLCA3NTc3NCwgNzU3ODMsIDc1NzkxLCA3NTc5OCwgNzU4MDIsIDc1ODA2LCA3NTgwOSwgNzU4MTYsIAotICAgIDc1ODIzLCA3NTgzMSwgNzU4MzksIDc1ODQ4LCA3NTg1NiwgMTI5NDMsIDc1ODY0LCA3NTg2OSwgNzU4NzMsIDc1ODg1LCAKLSAgICA3NTg5MiwgNzU5MDEsIDc4MCwgNzU5MTEsIDc1OTIwLCA3NTkzMSwgMjg0NywgNzU5MzUsIDc1OTM5LCA3NTk0NSwgNzU5NTgsIAotICAgIDc1OTcwLCA3NTk4MCwgNzU5ODksIDI0MzMxLCA3NjAwMSwgNzYwMDksIDc2MDE4LCA3NjAyOSwgNzYwNDAsIDc2MDUwLCAKLSAgICA3NjA2MCwgNzYwNjksIDc2MDc3LCA5NjU3LCA3NjA4NCwgNzYwODgsIDc2MDkzLCA3NjA5OCwgNzYxMDQsIDEzNDEsIAotICAgIDEwMTUzLCA3NjExMSwgNzYxMjIsIDc2MTMxLCA3NjEzOSwgNzYxNDgsIDc2MTU2LCA3NjE3MiwgNzYxODMsIDc2MTkyLCAKLSAgICA3NjIwMCwgNzYyMTIsIDc2MjIzLCA3NjIzOSwgNzYyNDksIDc2MjcwLCA3NjI4MywgNzYyOTEsIDc2Mjk4LCAxMzExOCwgCi0gICAgNzYzMTEsIDc2MzE2LCA3NjMyMiwgNDM4NiwgNzYzMjgsIDc2MzMxLCA3NjMzOCwgNzYzNDgsIDY2MDcsIDc2MzU1LCAKLSAgICA3NjM2MCwgNzYzNjUsIDc2MzczLCA3NjM4MSwgODEyMywgODEzMiwgNzYzODYsIDc2Mzk3LCA3NjQwMiwgNzY0MDgsIDI4NTUsIAotICAgIDI4NjAsIDc2NDE0LCA5MjI0LCA3NjQyMCwgNzY0MjcsIDc2NDM0LCA3NjQ0NywgMjIwNSwgNTAsIDc2NDUyLCA3NjQ1NywgCi0gICAgNzY0NjcsIDc2NDczLCA3NjQ4MiwgNzY0OTAsIDc2NTAwLCA3NjUwNCwgNzY1MDksIDc2NTEzLCA3NjUyNSwgMjg4MywgCi0gICAgNzY1MzMsIDc2NTQxLCA3NjU0NiwgNzY1NTcsIDc2NTY4LCA3NjU3NywgNzY1ODIsIDc2NTg4LCA3NjU5MywgNzY2MDMsIAotICAgIDc2NjEzLCA3NjYxOCwgNzY2MjQsIDc2NjI5LCA3NjYzOCwgMTk1NjIsIDc2NjQyLCA0MDQ1LCAxMiwgNzY2NDcsIDc2NjU2LCAKLSAgICA3NjY2MywgNzY2NzAsIDc2Njc2LCA3NjY4MiwgODI3LCA3NjY4NywgNzY2OTIsIDU4MjQwLCA3NjY5NywgNzY3MDIsIAotICAgIDc2NzA4LCA3NjcxNiwgNzY3MjEsIDc2NzI4LCA3NjczNCwgNzY3MzksIDM1NTczLCAzODc0MywgNzY3NDUsIDI4ODcsIDMyLCAKLSAgICA3Njc1NSwgNzY3NjgsIDc2NzczLCA3Njc4MSwgNzY3ODYsIDc2NzkyLCAyOTA5LCAyNjIzNCwgNzY3OTcsIDc2ODA1LCAKLSAgICA3NjgxMiwgNzY4MTcsIDU2MDMzLCA1OTIyMSwgNzY4MjYsIDE2NjcsIDE3NzYsIDc2ODMxLCA3NjgzNiwgNzY4NDMsIDE3ODAsIAotICAgIDI0MiwgNzY4NTAsIDc2ODU2LCA3Njg2MSwgNzY4NjgsIDE3ODQsIDc2ODczLCA3Njg3OSwgNzY4ODQsIDc2ODk2LCA0NTk3LCAKLSAgICA3NjkwNiwgMTc5MSwgNzY5MTIsIDc2OTE3LCA3NjkyNCwgNzY5MzEsIDc2OTQ2LCA3Njk1MywgNzY5NjQsIDc2OTcyLCAKLSAgICAyNTcyLCA3Njk3NiwgNzY5ODgsIDc2OTkzLCA3Njk5NywgNzcwMDMsIDI2MDU5LCAyMjEwLCA3NzAwNywgNzcwMTgsIAotICAgIDc3MDIyLCA3NzAyNiwgNzcwMzIsIDc3MDM2LCA3NzA0NSwgNzcwNDksIDc3MDYwLCA3NzA2NCwgMjI1NiwgMjk5NDQsIAotICAgIDc3MDY4LCA3NzA3OCwgMzAxOCwgNzczOCwgNzcwODYsIDc3MDkxLCA3NzA5NSwgNzcxMDQsIDc3MTExLCA3NzExNywgMjk4OCwgCi0gICAgMTUzNDMsIDc3MTIxLCA3NzEzNCwgNzcxNTIsIDc3MTU3LCA3NzE2NSwgNzcxNzMsIDc3MTgzLCAxMTQ1NywgNzcxOTUsIAotICAgIDc3MjA4LCA3NzIxNSwgNzcyMjIsIDc3MjM4LCA3NzI0NSwgNzcyNTEsIDEwMjQsIDc3MjU4LCA3NzI2NSwgNzcyNzUsIAotICAgIDc3Mjg0LCA3NzI5NiwgMzk3MDksIDc3MzA0LCAzMDAyLCAxMDM1MCwgNzczMDcsIDc3MzE1LCA3NzMxOSwgMzAwNiwgCi0gICAgNzczMjMsIDE5MzU4LCAxMDM2NiwgMzY4NCwgNzczMjcsIDMwMTIsIDc3MzMxLCA3NzM0MSwgNzczNDcsIDc3MzUzLCAKLSAgICA3NzM1OSwgNzczNjUsIDc3MzcxLCA3NzM3NywgNzczODMsIDc3Mzg5LCA3NzM5NSwgNzc0MDEsIDc3NDA3LCA3NzQxMywgCi0gICAgNzc0MTksIDc3NDI1LCA3NzQzMSwgNzc0MzcsIDc3NDQzLCA3NzQ0OSwgNzc0NTUsIDc3NDYxLCA3NzQ2NywgNzc0NzMsIAotICAgIDc3NDc5LCA3NzQ4NSwgNzc0OTEsIDc3NDk4LCA3NzUwNSwgNzc1MTEsIDc3NTE3LCA3NzUyMywgNzc1MjksIDc3NTM1LCAKLSAgICA3NzU0MSwgMTM0NiwgMTQyNzAsIDEwMzg4LCA3NzU0NywgNzc1NTIsIDc3NTU3LCA3NzU2MiwgNzc1NjcsIDc3NTcyLCAKLSAgICA3NzU3NywgNzc1ODIsIDc3NTg3LCA3NzU5MiwgNzc1OTcsIDc3NjAyLCA3NzYwNywgNzc2MTIsIDc3NjE3LCA3NzYyMiwgCi0gICAgNzc2MjcsIDc3NjMyLCA3NzYzNywgNzc2NDIsIDc3NjQ3LCA3NzY1MiwgNzc2NTcsIDc3NjYyLCA3NzY2NywgNzc2NzIsIAotICAgIDc3Njc4LCA3NzY4MywgNzc2ODgsIDc3Njk0LCA3NzY5OSwgNzc3MDUsIDc3NzEwLCA3NzcxNSwgNzc3MjEsIDc3NzI2LCAKLSAgICA3NzczMSwgNzc3MzYsIDc3NzQxLCA3Nzc0NiwgNzc3NTEsIDc3NzU2LCA3Nzc2MSwgNzczNDIsIDc3MzQ4LCA3NzM1NCwgCi0gICAgNzczNjAsIDc3MzY2LCA3NzM3MiwgNzczNzgsIDc3Mzg0LCA3NzM5MCwgNzczOTYsIDc3NDAyLCA3NzQwOCwgNzc0MTQsIAotICAgIDc3NDIwLCA3NzQyNiwgNzc3NjcsIDc3NDMyLCA3NzQzOCwgNzc0NDQsIDc3NzczLCA3NzQ1MCwgNzc0NTYsIDc3NDYyLCAKLSAgICA3NzQ2OCwgNzc0NzQsIDc3NDgwLCA3NzQ4NiwgNzc1MDYsIDc3Nzc5LCA3Nzc4NSwgNzc1MTIsIDc3NzkxLCA3NzUxOCwgCi0gICAgNzc1MjQsIDc3NTMwLCA3NzUzNiwgNzc1NDIsIDMwMzMsIDMwMzgsIDc3Nzk3LCA3NzgwMiwgNzc4MDUsIDc3ODExLCAKLSAgICA3NzgxNywgNzc4MjQsIDc3ODI5LCA3NzgzNCwgMjI2MSwgCisgICAgMCwgMCwgNiwgMTAsIDE4LCAyMywgMjcsIDM0LCAzOSwgNDEsIDQ0LCA1MCwgNjIsIDcwLCA4MCwgOTMsIDEwMiwgMTA4LCAKKyAgICAxMTMsIDEyMSwgMTMwLCAxMzUsIDE0MCwgMTQzLCAxNDcsIDE1MywgMTU4LCAxNjMsIDE3MSwgMTc4LCAxODYsIDE5MSwgCisgICAgMTk0LCAyMDAsIDIwOCwgMjE1LCAyMjUsIDIzMCwgMjM3LCAyNDYsIDI0OSwgMjU0LCAyNTcsIDI2MywgMjY3LCAyNzIsIAorICAgIDI4MSwgMjg4LCAyOTUsIDMwMSwgMzEwLCAzMTUsIDMyMSwgMzI3LCAzMzUsIDE0NCwgMzQxLCAzNDksIDM1MCwgMzU4LCAKKyAgICAzNjEsIDM2NywgMzY5LCAzNzUsIDM4MiwgMzg0LCAzOTEsIDM5NSwgNDAzLCA0MTAsIDQxNSwgNDE3LCA0MjIsIDQyOSwgCisgICAgNDMxLCAyOTksIDQzNywgNDM5LCA0NDQsIDQ0OSwgNDUyLCA0NTcsIDQ2MywgNDcwLCA0NzksIDQ4OSwgNDk0LCA0OTgsIAorICAgIDUwNSwgNTE4LCA1MjIsIDUzMSwgNTM4LCA1NDUsIDU0OCwgNTU0LCA1NTgsIDU2MiwgNTcyLCA1ODAsIDU4OCwgNTk2LCAKKyAgICA2MDUsIDYxMywgNjE4LCA2MTksIDYyMywgNjMxLCA2MzgsIDY0OCwgNjU5LCA2NjMsIDY2NiwgNjcwLCA2NzMsIDM0OCwgCisgICAgNjc4LCA2ODcsIDY5MSwgNjk3LCA3MDMsIDcwNSwgNzA4LCA3MTEsIDcxNCwgNzE4LCA3MjIsIDczMSwgNzM5LCA3NDQsIAorICAgIDc0NywgNzUxLCA3NTcsIDc2NCwgNzcxLCA3NzYsIDc4NSwgNzk0LCA4MDEsIDgwNSwgODE4LCA4MjcsIDgzNSwgODQxLCAKKyAgICA1NTcsIDg1MCwgODYwLCA4NjcsIDg3MywgODc5LCA4ODYsIDg5NCwgODk4LCA3NDksIDkwNiwgOTE1LCA1MDMsIDkyMywgCisgICAgOTI4LCA5MzQsIDE3LCA5NDMsIDk0OCwgOTUxLCA5NTUsIDk1OSwgOTY2LCA5NjksIDk3NiwgOTgwLCA5ODgsIDk5MiwgCisgICAgMTAwMCwgMTAwNCwgMTAwNywgMTAxNCwgMTAyMSwgMTkyLCAxMDI0LCAxMDI5LCAxMDM5LCAxMDQ4LCAxMDU1LCAxMDYxLCAKKyAgICAxMDY5LCAxMDcyLCAxMDc3LCAxMDgzLCAxMDkxLCAxMDk3LCAxMTAyLCAxMTA1LCAxMTA4LCAxMTEsIDExMTMsIDExMTcsIAorICAgIDExMjMsIDExMjksIDExMzIsIDExMzgsIDExNDIsIDExNDcsIDExNTMsIDExNTgsIDExNjgsIDExNzIsIDExNzUsIDExNzgsIAorICAgIDExODcsIDExOTEsIDExOTQsIDExOTksIDEyMDQsIDEyMTAsIDEyMTUsIDEyMjAsIDEyMjUsIDEyMjksIDEyMzQsIDEyNDAsIAorICAgIDEyNDUsIDEyNTAsIDEyNTQsIDEyNjAsIDEyNjUsIDEyNzAsIDEyNzUsIDEyNzksIDEyODQsIDEyODksIDEyOTQsIDEzMDAsIAorICAgIDEzMDYsIDEzMTIsIDEzMTcsIDEzMjEsIDEzMjYsIDEzMzEsIDEzMzYsIDEzNDAsIDEzNDUsIDEzNTAsIDEzNTUsIDEzNjAsIAorICAgIDExOTUsIDEyMDAsIDEyMDUsIDEyMTEsIDEyMTYsIDEzNjQsIDEyMjYsIDEzNzAsIDEzNzUsIDEzODAsIDEzODcsIDEzOTEsIAorICAgIDE0MDAsIDEyMzAsIDE0MDQsIDEyMzUsIDEyNDEsIDEyNDYsIDE0MDgsIDE0MTMsIDE0MTgsIDE0MjIsIDE0MjYsIDE0MzIsIAorICAgIDE0MzYsIDEyNTEsIDE0MzksIDEyNjEsIDE0NDQsIDE0NDgsIDEyNjYsIDE0NTQsIDEyNzEsIDE0NTgsIDE0NjIsIDEyNzYsIAorICAgIDE0NjYsIDE0NzEsIDE0NzUsIDE0NzgsIDE0ODIsIDEyODAsIDEyODUsIDE0ODcsIDEyOTAsIDE0OTMsIDE0OTksIDE1MDUsIAorICAgIDE1MTEsIDEyOTUsIDEzMDcsIDEzMTMsIDE1MTUsIDE1MTksIDE1MjMsIDE1MjYsIDEzMTgsIDE1MzAsIDE1MzIsIDE1MzcsIAorICAgIDE1NDIsIDE1NDgsIDE1NTMsIDE1NTgsIDE1NjIsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODIsIDE1ODgsIDE1OTMsIDE1OTgsIAorICAgIDE2MDQsIDE2MTAsIDE2MTUsIDE2MTksIDE2MjQsIDE2MjksIDE2MzQsIDE2MzksIDE2NDMsIDE2NTEsIDE2NTUsIDE2NjAsIAorICAgIDE2NjUsIDE2NzAsIDE2NzUsIDE2NzksIDE2ODIsIDE2ODcsIDE2OTIsIDE2OTcsIDE3MDIsIDE3MDgsIDE3MTMsIDE3MTcsIAorICAgIDEzMjIsIDE3MjAsIDE3MjUsIDE3MzAsIDEzMjcsIDE3MzQsIDE3MzgsIDE3NDUsIDEzMzIsIDE3NTIsIDEzMzcsIDE3NTYsIAorICAgIDE3NTgsIDE3NjMsIDE3NjksIDEzNDEsIDE3NzQsIDE3ODMsIDEzNDYsIDE3ODgsIDE3OTQsIDEzNTEsIDE3OTksIDE4MDQsIAorICAgIDE4MDcsIDE4MTIsIDE4MTYsIDE4MjAsIDE4MjQsIDE4MjcsIDE4MzEsIDEzNTYsIDEzNjEsIDExNTYsIDE4MzYsIDE4NDIsIAorICAgIDE4NDgsIDE4NTQsIDE4NjAsIDE4NjYsIDE4NzIsIDE4NzgsIDE4ODQsIDE4ODksIDE4OTUsIDE5MDEsIDE5MDcsIDE5MTMsIAorICAgIDE5MTksIDE5MjUsIDE5MzEsIDE5MzcsIDE5NDMsIDE5NDgsIDE5NTMsIDE5NTgsIDE5NjMsIDE5NjgsIDE5NzMsIDE5NzgsIAorICAgIDE5ODMsIDE5ODgsIDE5OTMsIDE5OTksIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjcsIDIwMzIsIDIwMzgsIDIwNDQsIAorICAgIDIwNTAsIDIwNTYsIDIwNjEsIDIwNjYsIDIwNjgsIDIwNjksIDIwNzMsIDIwNzcsIDIwODIsIDIwODYsIDIwOTAsIDIwOTQsIAorICAgIDIwOTksIDIxMDMsIDIxMDYsIDIxMTEsIDIxMTUsIDIxMjAsIDIxMjQsIDIxMjgsIDIxMzMsIDIxMzcsIDIxNDAsIDIxNDQsIAorICAgIDIxNTAsIDIxNjQsIDIxNjgsIDIxNzIsIDIxNzYsIDIxNzksIDIxODQsIDIxODgsIDIxOTIsIDIxOTUsIDIxOTksIDIyMDQsIAorICAgIDIyMDksIDIyMTQsIDIyMTksIDIyMjMsIDIyMjcsIDIyMzEsIDIyMzYsIDIyNDAsIDIyNDUsIDIyNDksIDIyNTQsIDIyNjAsIAorICAgIDIyNjcsIDIyNzMsIDIyNzgsIDIyODMsIDIyODgsIDIyOTQsIDIyOTksIDIzMDUsIDIzMTAsIDIzMTMsIDEyMTIsIDIzMTUsIAorICAgIDIzMjIsIDIzMzAsIDIzNDAsIDIzNDksIDIzNjMsIDIzNjcsIDIzNzEsIDIzODQsIDIzOTIsIDIzOTYsIDI0MDEsIDI0MDUsIAorICAgIDI0MDgsIDI0MTIsIDI0MTYsIDI0MjEsIDI0MjYsIDI0MzEsIDI0MzUsIDI0MzgsIDI0NDIsIDI0NDksIDI0NTYsIDI0NjIsIAorICAgIDI0NjcsIDI0NzIsIDI0NzgsIDI0ODQsIDI0ODksIDI0OTIsIDE3NjAsIDI0OTQsIDI1MDAsIDI1MDQsIDI1MDksIDI1MTMsIAorICAgIDI1MTcsIDE3NjUsIDE3NzEsIDI1MjIsIDI1MjYsIDI1MjksIDI1MzQsIDI1MzksIDI1NDQsIDI1NDksIDI1NTMsIDI1NjAsIAorICAgIDI1NjUsIDI1NjgsIDI1NzUsIDI1ODEsIDI1ODUsIDI1ODksIDI1OTMsIDI1OTgsIDI2MDUsIDI2MTAsIDI2MTUsIDI2MjIsIAorICAgIDI2MjgsIDI2MzQsIDI2NDAsIDI2NTQsIDI2NzEsIDI2ODYsIDI3MDEsIDI3MTAsIDI3MTUsIDI3MTksIDI3MjQsIDI3MjksIAorICAgIDI3MzMsIDI3NDUsIDI3NTIsIDI3NTgsIDIyNjMsIDI3NjQsIDI3NzEsIDI3NzcsIDI3ODEsIDI3ODQsIDI3OTEsIDI3OTcsIAorICAgIDI4MDEsIDI4MDUsIDI4MDksIDIwOTEsIDI4MTMsIDI4MTgsIDI4MjMsIDI4MjcsIDI4MzUsIDI4MzksIDI4NDMsIDI4NDcsIAorICAgIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjYsIDI4NzAsIDI4NzUsIDI4ODAsIDI4ODQsIDI4ODksIDI4OTMsIDI4OTYsIDI5MDAsIAorICAgIDI5MDQsIDI5MTIsIDI5MTcsIDI5MjEsIDI5MjUsIDI5MzEsIDI5NDAsIDI5NDQsIDI5NDgsIDI5NTQsIDI5NTksIDI5NjYsIAorICAgIDI5NzAsIDI5ODAsIDI5ODQsIDI5ODgsIDI5OTMsIDI5OTcsIDMwMDIsIDMwMDgsIDMwMTMsIDMwMTcsIDMwMjEsIDMwMjUsIAorICAgIDI0NTIsIDMwMzMsIDMwMzgsIDMwNDQsIDMwNDksIDMwNTMsIDMwNTgsIDMwNjMsIDMwNjcsIDMwNzMsIDMwNzgsIDIwOTUsIAorICAgIDMwODQsIDMwOTAsIDMwOTUsIDMxMDAsIDMxMDUsIDMxMTAsIDMxMTUsIDMxMjAsIDMxMjUsIDMxMzAsIDMxMzUsIDMxNDEsIAorICAgIDMxNDYsIDEyMjcsIDkyLCAzMTUyLCAzMTU2LCAzMTYwLCAzMTY0LCAzMTY5LCAzMTczLCAzMTc3LCAzMTgxLCAzMTg1LCAKKyAgICAzMTkwLCAzMTk0LCAzMTk5LCAzMjAzLCAzMjA2LCAzMjEwLCAzMjE1LCAzMjE5LCAzMjI0LCAzMjI4LCAzMjMyLCAzMjM2LCAKKyAgICAzMjQxLCAzMjQ1LCAzMjQ4LCAzMjYxLCAzMjY1LCAzMjY5LCAzMjczLCAzMjc3LCAzMjgxLCAzMjg0LCAzMjg4LCAzMjkyLCAKKyAgICAzMjk3LCAzMzAxLCAzMzA2LCAzMzExLCAzMzE2LCAzMzIwLCAzMzIzLCAzMzI2LCAzMzMyLCAzMzM2LCAzMzQwLCAzMzQzLCAKKyAgICAzMzQ3LCAzMzUxLCAzMzU0LCAzMzYwLCAzMzY1LCAzMzcwLCAzMzc2LCAzMzgxLCAzMzg2LCAzMzkyLCAzMzk4LCAzNDAzLCAKKyAgICAzNDA4LCAzNDEzLCAxMTE1LCA1NDcsIDM0MTgsIDM0MjEsIDM0MjYsIDM0MzAsIDM0MzMsIDM0MzcsIDM0NDIsIDM0NDcsIAorICAgIDM0NTEsIDM0NTYsIDM0NjAsIDM0NjUsIDM0NjksIDM0NzMsIDM0NzksIDM0ODUsIDM0ODgsIDM0OTEsIDM0OTcsIDM1MDQsIAorICAgIDM1MTEsIDM1MTcsIDM1MjQsIDM1MjksIDM1MzMsIDM1NDAsIDM1NDcsIDM1NTIsIDM1NTYsIDM1NjYsIDM1NzAsIDM1NzQsIAorICAgIDM1NzksIDM1ODQsIDM1OTQsIDIxMDcsIDM1OTksIDM2MDMsIDM2MDYsIDM2MTIsIDM2MTcsIDM2MjMsIDM2MjksIDM2MzQsIAorICAgIDM2NDEsIDM2NDUsIDM2NDksIDYyMCwgNjcxLCAxMzg4LCAzNjUzLCAzNjYwLCAzNjY3LCAzNjc0LCAzNjgxLCAzNjg3LCAKKyAgICAzNjkzLCAzNjk4LCAzNzAyLCAzNzA4LCAzNzEzLCAzNzE3LCAyMTE2LCAzNzIxLCAzNzI5LCA2MDAsIDM3MzUsIDM3NDYsIAorICAgIDM3NTAsIDM3NjAsIDIxMjEsIDM3NjYsIDM3NzEsIDM3ODYsIDM3OTIsIDM3OTksIDM4MDksIDM4MTUsIDM4MjAsIDM4MjYsIAorICAgIDM4MzIsIDM4MzUsIDM4MzksIDM4NDQsIDM4NTEsIDM4NTYsIDM4NjAsIDM4NjQsIDM4NjgsIDM4NzIsIDM4NzcsIDM4ODMsIAorICAgIDM4OTQsIDMyMTEsIDM4OTksIDM5MTEsIDM5MTksIDM5MjQsIDE1NjQsIDM5MzEsIDM5MzQsIDM5MzcsIDM5NDEsIDM5NDQsIAorICAgIDM5NTAsIDM5NTQsIDM5NjgsIDM5NzIsIDM5NzUsIDM5NzksIDM5ODUsIDM5OTEsIDM5OTYsIDQwMDAsIDQwMDQsIDQwMTAsIAorICAgIDQwMjEsIDQwMjcsIDQwMzIsIDQwMzgsIDQwNDIsIDQwNTAsIDQwNjAsIDQwNjYsIDQwNzEsIDQwODAsIDQwODgsIDQwOTUsIAorICAgIDQwOTksIDQxMDUsIDQxMTQsIDQxMjMsIDQxMjcsIDQxMzIsIDQxMzcsIDQxNDEsIDQxNDksIDQxNTMsIDQxNTgsIDQxNjIsIAorICAgIDIxMjksIDE0MDEsIDQxNjgsIDQxNzMsIDQxNzksIDQxODQsIDQxODksIDQxOTQsIDQxOTksIDQyMDQsIDQyMDksIDQyMTUsIAorICAgIDQyMjAsIDQyMjYsIDQyMzEsIDQyMzYsIDQyNDEsIDQyNDcsIDQyNTIsIDQyNTcsIDQyNjIsIDQyNjcsIDQyNzMsIDQyNzgsIAorICAgIDQyODQsIDQyODksIDQyOTQsIDQyOTksIDQzMDQsIDQzMDksIDQzMTQsIDQzMjAsIDQzMjUsIDQzMzAsIDMxOSwgNDU2LCAKKyAgICA0MzM1LCA0MzQxLCA0MzQ1LCA0MzQ5LCA0MzU0LCA0MzU4LCA0MzYyLCA0MzY1LCA0MzY5LCA0MzczLCA0Mzc3LCA0MzgxLCAKKyAgICA0Mzg2LCA0MzkwLCA0Mzk0LCA0NDAwLCA0MTY1LCA0NDA1LCA0NDA5LCA0NDEyLCA0NDE3LCA0NDIyLCA0NDI3LCA0NDMyLCAKKyAgICA0NDM3LCA0NDQyLCA0NDQ3LCA0NDUyLCA0NDU3LCA0NDYyLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg2LCA0NDkxLCAKKyAgICA0NDk2LCA0NTAxLCA0NTA2LCA0NTExLCA0NTE2LCA0NTIwLCA0NTI1LCA0NTMwLCA0NTM1LCA0NTQwLCA0NTQ1LCA0NTUwLCAKKyAgICA0NTU1LCA0NTYwLCA0NTY1LCA0NTcwLCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg5LCA0NTk0LCA0NTk5LCA0NjA0LCA0NjA5LCAKKyAgICA0NjE0LCA0NjE5LCA0NjI0LCA0NjI4LCA0NjMzLCA0NjM4LCA0NjQzLCA0NjQ4LCA0NjUzLCA0NjU4LCA0NjYzLCA0NjY4LCAKKyAgICA0NjczLCA0Njc4LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk3LCA0NzAyLCA0NzA3LCA0NzEyLCA0NzE3LCA0NzIyLCA0NzI3LCAKKyAgICA0NzMyLCA0NzM2LCA0NzQxLCA0NzQ2LCA0NzUxLCA0NzU2LCA0NzYxLCA0NzY2LCA0NzcxLCA0Nzc2LCA0NzgxLCA0Nzg2LCAKKyAgICA0NzkwLCA0Nzk1LCA0ODAwLCA0ODA1LCA0ODEwLCA0ODE2LCA0ODIyLCA0ODI4LCA0ODM0LCA0ODQwLCA0ODQ2LCA0ODUyLCAKKyAgICA0ODU3LCA0ODYzLCA0ODY5LCA0ODc1LCA0ODgxLCA0ODg3LCA0ODkzLCA0ODk5LCA0OTA1LCA0OTExLCA0OTE3LCA0OTIyLCAKKyAgICA0OTI4LCA0OTM0LCA0OTQwLCA0OTQ2LCA0OTUyLCA0OTU4LCA0OTY0LCA0OTcwLCA0OTc2LCA0OTgyLCA0OTg3LCA0OTkzLCAKKyAgICA0OTk5LCA1MDA1LCA1MDExLCA1MDE3LCA1MDIzLCA1MDI5LCA1MDM1LCA1MDQxLCA1MDQ3LCA1MDUyLCA1MDU4LCA1MDY0LCAKKyAgICA1MDcwLCA1MDc2LCA1MDgyLCA1MDg4LCA1MDk0LCA1MTAwLCA1MTA2LCA1MTEyLCA1MTE3LCA1MTIzLCA1MTI5LCA1MTM1LCAKKyAgICA1MTQxLCA1MTQ3LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgyLCA1MTg2LCA1MTkyLCA1MTk4LCA1MjA0LCAKKyAgICA1MjEwLCA1MjE2LCA1MjIyLCA1MjI4LCA1MjM0LCA1MjQwLCA1MjQ2LCA1MjUxLCA1MjU3LCA1MjYzLCA1MjY5LCA1Mjc1LCAKKyAgICA1MjgxLCA1Mjg3LCA1MjkzLCA1Mjk5LCA1MzA1LCA1MzExLCA1MzE2LCA1MzIyLCA1MzI4LCA1MzM0LCA1MzQwLCA1MzQ2LCAKKyAgICA1MzUyLCA1MzU4LCA1MzY0LCA1MzcwLCA1Mzc2LCA1MzgxLCA1Mzg3LCA1MzkzLCA1Mzk5LCA1NDA1LCA1NDExLCA1NDE3LCAKKyAgICA1NDIzLCA1NDI5LCA1NDM1LCA1NDQxLCA1NDQ2LCA1NDUyLCA1NDU4LCA1NDY0LCA1NDcwLCA1NDc2LCA1NDgyLCA1NDg4LCAKKyAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTExLCA1NTE3LCA1NTIzLCA1NTI5LCA1NTM1LCA1NTQxLCA1NTQ3LCA1NTUzLCA1NTU5LCAKKyAgICA1NTY1LCA1NTcxLCA1NTc2LCA1NTgyLCA1NTg4LCA1NTk0LCA1NjAwLCA1NjA2LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKKyAgICA1NjM2LCA1NjQxLCA1NjQ3LCA1NjUzLCA1NjU5LCA1NjY1LCA1NjcxLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKKyAgICA1NzA2LCA1NzEyLCA1NzE4LCA1NzI0LCA1NzMwLCA1NzM2LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcxLCAKKyAgICA1Nzc3LCA1NzgzLCA1Nzg5LCA1Nzk1LCA1ODAxLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM2LCA1ODQwLCAKKyAgICA1ODQzLCA1ODUwLCA1ODU0LCA1ODY3LCA1ODcxLCA1ODc1LCA1ODc5LCA1ODgzLCA1ODg3LCA1ODkxLCA1ODk3LCA1OTA0LCAKKyAgICA1OTEyLCA1OTE2LCA1OTI0LCA1OTMzLCA1OTM5LCA1OTUxLCA1OTU2LCA1OTU5LCA1OTYzLCA1OTczLCA1OTgxLCA1OTg5LCAKKyAgICA1OTk1LCA1OTk5LCA2MDA5LCA2MDE5LCA2MDI3LCA2MDM0LCA2MDQxLCA2MDQ3LCA2MDUzLCA2MDYwLCA2MDY0LCA2MDcxLCAKKyAgICA2MDgxLCA2MDkxLCA2MDk5LCA2MTA2LCA2MTExLCA2MTE1LCA2MTIzLCA2MTI3LCA2MTMyLCA2MTM5LCA2MTQ3LCA2MTUyLCAKKyAgICA2MTU3LCA2MTYxLCA2MTY4LCA2MTczLCA2MTg3LCA2MTkyLCA2MTk3LCA2MjA0LCA2MjEzLCA2MjE2LCA2MjIwLCA2MjI0LCAKKyAgICA2MjI4LCA2MjMxLCA2MjM2LCA2MjQxLCA2MjUwLCA2MjU2LCA2MjYyLCA2MjY4LCA2MjcyLCA2MjgzLCA2MjkzLCA2MzA4LCAKKyAgICA2MzIzLCA2MzM4LCA2MzUzLCA2MzY4LCA2MzgzLCA2Mzk4LCA2NDEzLCA2NDI4LCA2NDQzLCA2NDU4LCA2NDczLCA2NDg4LCAKKyAgICA2NTAzLCA2NTE4LCA2NTMzLCA2NTQ4LCA2NTYzLCA2NTc4LCA2NTkzLCA2NjA4LCA2NjIzLCA2NjM4LCA2NjUzLCA2NjY4LCAKKyAgICA2NjgzLCA2Njk4LCA2NzEzLCA2NzI4LCA2NzQzLCA2NzU4LCA2NzczLCA2Nzg4LCA2ODAzLCA2ODE4LCA2ODMzLCA2ODQ4LCAKKyAgICA2ODYzLCA2ODc4LCA2ODkzLCA2OTA4LCA2OTIzLCA2OTM4LCA2OTUzLCA2OTY4LCA2OTgzLCA2OTk4LCA3MDEzLCA3MDI4LCAKKyAgICA3MDM3LCA3MDQ2LCA3MDUxLCA3MDU3LCA3MDY3LCA3MDcxLCA3MDc2LCA3MDgxLCA3MDg5LCA3MDkzLCA3MDk2LCA3MTAwLCAKKyAgICAyOTc1LCA3MTAzLCA3MTA4LCAyOTgsIDQ0MiwgNzExNCwgNzEyMiwgNzEyNiwgNzEzMCwgNzEzMywgNzEzNywgNzE0MywgCisgICAgNzE0NywgNzE1NSwgNzE2MSwgNzE2NiwgNzE3MywgNzE4MCwgNzE4NiwgNzE5MSwgNzE5OCwgNzIwNCwgNzIxMiwgNzIxNiwgCisgICAgNzIyMSwgNzIzMywgNzI0NCwgNzI1MSwgNzI1NSwgNzI1OSwgNzI2NSwgMzIzMywgNzI2OSwgNzI3NSwgNzI4MCwgNzI4NSwgCisgICAgNzI5MCwgNzI5NiwgNzMwMSwgNzMwNiwgNzMxMSwgNzMxNiwgNzMyMiwgNzMyNywgNzMzMiwgNzMzOCwgNzM0MywgNzM0OSwgCisgICAgNzM1NCwgNzM2MCwgNzM2NSwgNzM3MSwgNzM3NiwgNzM4MSwgNzM4NiwgNzM5MSwgNzM5NiwgNzQwMiwgNzQwNywgNzQxMiwgCisgICAgNzQxNywgNzQyMywgNzQyOSwgNzQzNSwgNzQ0MSwgNzQ0NywgNzQ1MywgNzQ1OSwgNzQ2NSwgNzQ3MSwgNzQ3NywgNzQ4MywgCisgICAgNzQ4OSwgNzQ5NCwgNzQ5OSwgNzUwNCwgNzUwOSwgNzUxNCwgNzUxOSwgNzUyNCwgNzUyOSwgNzUzNSwgNzU0MSwgNzU0NiwgCisgICAgNzU1MiwgNzU1OCwgNzU2NCwgNzU2OSwgNzU3NCwgNzU3OSwgNzU4NCwgNzU5MCwgNzU5NiwgNzYwMSwgNzYwNiwgNzYxMSwgCisgICAgNzYxNiwgNzYyMSwgNzYyNywgNzYzMiwgNzYzOCwgNzY0NCwgNzY1MCwgNzY1NiwgNzY2MiwgNzY2OCwgNzY3NCwgNzY4MCwgCisgICAgNzY4NiwgMjEzOCwgNzEzMiwgNzY5MSwgNzY5NSwgNzY5OSwgNzcwMiwgNzcwOSwgNzcxMiwgNzcyMCwgNzcyNSwgNzczMCwgCisgICAgNzcyMSwgNzczNSwgMjE2NSwgNzczOSwgNzc0NSwgNzc1MSwgNzc1NiwgNzc2MSwgNzc2OCwgNzc3NiwgNzc4MSwgNzc4NSwgCisgICAgNzc4OCwgNzc5MiwgNzc5OCwgNzgwNCwgNzgwOCwgMjE3MywgNTYwLCA3ODExLCA3ODE1LCA3ODIwLCA3ODI2LCA3ODMxLCAKKyAgICA3ODM1LCA3ODM4LCA3ODQyLCA3ODQ4LCA3ODUzLCA3ODU3LCA3ODY0LCA3ODY4LCA3ODcyLCA3ODc2LCA5NDUsIDc2OSwgCisgICAgNzg3OSwgNzg4NywgNzg5NCwgNzkwMSwgNzkwNywgNzkxNCwgNzkyMiwgNzkyOSwgNzkzNiwgNzk0MSwgNzk1MywgMTI0NywgCisgICAgMTQwOSwgMTQxNCwgNzk2NCwgMTQxOSwgNzk2OCwgNzk3MiwgNzk4MSwgNzk4OSwgNzk5OCwgODAwNCwgODAwOSwgODAxMywgCisgICAgODAxOSwgODAyNCwgMjcwNiwgODAzMSwgODAzNSwgODA0NCwgODA1MywgODA2MiwgODA3MSwgODA3NiwgODA4MSwgODA5MywgCisgICAgODA5OCwgODEwNiwgMjIyNCwgODExMCwgODExMiwgODExNywgODEyMSwgODEzMCwgODEzOCwgMTQyMywgMTMzLCAzNDYxLCAKKyAgICAzNDY2LCA4MTQ0LCA4MTQ4LCA4MTU3LCA4MTYzLCA4MTY4LCA4MTcxLCA4MTgwLCAyNjk4LCA4MTg2LCA4MTk0LCA4MTk4LCAKKyAgICA4MjAyLCA4MjA2LCAyMjM3LCA4MjEwLCA4MjE1LCA4MjIyLCA4MjI4LCA4MjM0LCA4MjM3LCA4MjM5LCA4MjQyLCA4MjUwLCAKKyAgICA4MjU4LCA4MjY2LCA4MjY5LCA4Mjc0LCAyMjUwLCA4Mjc5LCA3NzMyLCA4MjgyLCA4Mjg0LCA4Mjg5LCA4Mjk0LCA4Mjk5LCAKKyAgICA4MzA0LCA4MzA5LCA4MzE0LCA4MzE5LCA4MzI0LCA4MzI5LCA4MzM0LCA4MzQwLCA4MzQ1LCA4MzUwLCA4MzU1LCA4MzYxLCAKKyAgICA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkxLCA4Mzk3LCA4NDAyLCA4NDA3LCA4NDEyLCA4NDE3LCA4NDIyLCAKKyAgICA4NDI3LCA4NDMyLCA4NDM3LCA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDY3LCA4NDcyLCA4NDc3LCA4NDgyLCAKKyAgICA4NDg4LCA4NDk0LCA4NDk5LCA4NTA0LCA4NTA5LCA4NTE0LCA4NTE5LCAyMjYxLCAyMjY4LCAyMjc0LCA4NTI0LCA4NTMwLCAKKyAgICA4NTM4LCAyMzAwLCAyMzA2LCA4NTQ2LCA4NTUwLCA4NTU1LCA4NTU5LCA4NTYzLCA4NTY3LCA4NTcyLCA4NTc2LCA4NTgxLCAKKyAgICA4NTg1LCA4NTg4LCA4NTkxLCA4NTk3LCA4NjAzLCA4NjA5LCA4NjE1LCA4NjIxLCA4NjI3LCA4NjMzLCA4NjM3LCA4NjQxLCAKKyAgICA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU4LCA4NjY1LCA4Njc2LCA4Njg0LCA4Njk0LCA4NzAwLCA4NzA3LCA4NzEyLCA4NzE2LCAKKyAgICA4NzI3LCA4NzQwLCA4NzUxLCA4NzY0LCA4Nzc1LCA4Nzg3LCA4Nzk5LCA4ODExLCA4ODI0LCA4ODM3LCA4ODQ0LCA4ODUwLCAKKyAgICA4ODY0LCA4ODcxLCA4ODc3LCA4ODgxLCA4ODg2LCA4ODkwLCA4ODk3LCA4OTA1LCA4OTA5LCA4OTE1LCA4OTE5LCA4OTI1LCAKKyAgICA4OTM1LCA4OTM5LCA4OTQ0LCA4OTQ5LCA4OTU2LCA4OTYyLCA4OTcyLCA3OTA5LCA4OTc4LCA4OTgyLCA4OTg5LCA3NjgsIAorICAgIDg5OTMsIDg5OTcsIDkwMDIsIDkwMDcsIDkwMTIsIDkwMTYsIDkwMjIsIDkwMzAsIDkwMzYsIDkwNDAsIDkwNDYsIDkwNTYsIAorICAgIDkwNjAsIDkwNjYsIDkwNzEsIDkwNzUsIDkwODEsIDkwODcsIDIxNjEsIDkwOTIsIDkwOTQsIDkwOTksIDkxMDcsIDkxMTYsIAorICAgIDkxMjAsIDkxMjYsIDkxMzEsIDkxMzYsIDkxNDEsIDkxNDYsIDkxNTIsIDkxNTcsIDkxNjIsIDQwMDYsIDkxNjcsIDkxNzIsIAorICAgIDkxNzYsIDkxODIsIDkxODcsIDkxOTMsIDkxOTgsIDkyMDMsIDkyMDksIDkyMTQsIDkxMjEsIDkyMjAsIDkyMjQsIDkyMzEsIAorICAgIDkyMzcsIDkyNDIsIDkyNDYsIDYxODMsIDkyNTEsIDkyNjAsIDkyNjUsIDkyNzAsIDgyMTgsIDgyMjUsIDkyNzUsIDI4NTMsIAorICAgIDkyNzksIDkyODQsIDkyODksIDkxMzIsIDkyOTMsIDkyOTgsIDkxMzcsIDkxNDIsIDkzMDMsIDkzMTAsIDkzMTcsIDkzMjMsIAorICAgIDkzMjksIDkzMzUsIDkzNDAsIDkzNDUsIDkzNTAsIDkxNDcsIDkxNTMsIDkzNTYsIDkzNjIsIDkzNjcsIDkzNzUsIDkxNTgsIAorICAgIDkzODAsIDk5MCwgOTM4MywgOTM5MSwgOTM5NywgOTQwMywgOTQxMiwgOTQyMCwgOTQyNSwgOTQzMSwgOTQzOSwgOTQ0NiwgCisgICAgOTQ2MSwgOTQ3OCwgOTQ5NywgOTUwNiwgOTUxNCwgOTUyOSwgOTU0MCwgOTU1MCwgOTU2MCwgOTU2OCwgOTU3NCwgOTU4NiwgCisgICAgOTU5NSwgOTYwMywgOTYxMCwgOTYxNywgOTYyMywgOTYyOCwgOTYzNiwgOTY0NiwgOTY1MywgOTY2MywgOTY3MywgOTY4MywgCisgICAgOTY5MSwgOTY5OCwgOTcwNywgOTcxNywgOTczMSwgOTc0NiwgOTc1NSwgOTc2MywgOTc2OCwgOTc3MiwgOTc4MSwgOTc4NywgCisgICAgOTc5MiwgOTgwMiwgOTgxMiwgOTgyMiwgOTgyNywgOTgzMSwgOTg0MCwgOTg0NSwgOTg1NSwgOTg2NiwgOTg3OSwgOTg4NywgCisgICAgOTkwMCwgOTkxMiwgOTkyMCwgOTkyNSwgOTkyOSwgOTkzNSwgOTk0MCwgOTk0OCwgOTk1NiwgOTk2MywgOTk2OCwgOTk3NiwgCisgICAgOTk4MiwgOTk4NSwgOTk4OSwgOTk5NSwgMTAwMDMsIDEwMDA4LCAxMDAxMiwgMTAwMjAsIDEwMDI5LCAxMDAzNywgMTAwNDMsIAorICAgIDEwMDQ3LCAxMDA1NCwgMTAwNjUsIDEwMDY5LCAxMDA3MiwgMTAwNzgsIDkxNjMsIDEwMDgzLCAxMDA4OSwgMTAwOTYsIAorICAgIDEwMTAyLCAxMDEwNywgMTAxMTQsIDEwMTIxLCAxMDEyOCwgMTAxMzUsIDEwMTQyLCAxMDE0OSwgMTAxNTYsIDEwMTYzLCAKKyAgICAxMDE2OCwgOTQ3NCwgMTAxNzMsIDEwMTc5LCAxMDE4NiwgMTAxOTMsIDEwMTk4LCAxMDIwNSwgMTAyMTQsIDEwMjE4LCAKKyAgICAxMDIzMCwgODI1NiwgMTAyMzQsIDEwMjM3LCAxMDI0MSwgMTAyNDUsIDEwMjQ5LCAxMDI1MywgMTAyNTksIDEwMjY1LCAKKyAgICAxMDI3MCwgMTAyNzYsIDEwMjgxLCAxMDI4NiwgMTAyOTIsIDEwMjk3LCAxMDMwMiwgODk1MiwgMTAzMDcsIDEwMzExLCAKKyAgICAxMDMxNSwgMTAzMTksIDEwMzI0LCAxMDMyOSwgMTAzMzcsIDEwMzQzLCAxMDM0NywgMTAzNTEsIDEwMzU4LCAxMDM2MywgCisgICAgMTAzNzEsIDEwMzc2LCAxMDM4MCwgMTAzODMsIDEwMzg5LCAxMDM5NiwgMTA0MDAsIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAorICAgIDQwNDUsIDEwNDE4LCAxMDQyNywgMzYsIDEwNDM1LCAxMDQ0MSwgMTA0NDYsIDg5NjcsIDEwNDUxLCAxMDQ1NiwgMTA0NjAsIAorICAgIDEwNDYzLCAxMDQ3OCwgMTA0OTcsIDEwNTA5LCAxMDUyMiwgMTA1MzUsIDEwNTQ4LCAxMDU2MiwgMTA1NzUsIDEwNTkwLCAKKyAgICAxMDU5NywgOTE2OCwgMTA2MDMsIDEwNjE3LCAxMDYyMiwgMTA2MjgsIDEwNjMzLCAxMDY0MSwgMTA2NDYsIDgwNDAsIAorICAgIDEwNjUxLCAxMDY1NCwgMTA2NjEsIDEwNjY2LCAxMDY3MCwgMjg1OCwgOTk4LCAxMDY3NiwgMTA2ODAsIDEwNjg2LCAxMDY5MiwgCisgICAgMTA2OTcsIDEwNzAzLCAxMDcwOCwgOTE3NywgMTA3MTQsIDEwNzIwLCAxMDcyNSwgMTA3MzAsIDEwNzM4LCAxMDc0NCwgCisgICAgMTA3NTcsIDEwNzY1LCAxMDc3MiwgOTE4MywgMTA3NzgsIDEwNzg2LCAxMDc5NCwgMTA4MDEsIDEwODE0LCAxMDgyNiwgCisgICAgMTA4MzYsIDEwODQ0LCAxMDg1MSwgMTA4NTgsIDEwODY3LCAxMDg3NiwgMTA4ODQsIDEwODkxLCAxMDg5NiwgMTA5MDIsIAorICAgIDkxODgsIDEwOTA3LCAxMDkxMywgOTE5NCwgMTA5MTgsIDEwOTIxLCAxMDkyOCwgMTA5MzQsIDEwOTQ3LCA4NjY5LCAxMDk1OCwgCisgICAgMTA5NjQsIDEwOTczLCAxMDk4MSwgMTA5ODgsIDEwOTk0LCAxMTAwMCwgMTEwMDUsIDExMDA5LCAxMTAxNCwgMTA0NzAsIAorICAgIDExMDIwLCA5MTk5LCAxMTAyNywgMTEwMzIsIDExMDM5LCAxMTA0NSwgMTEwNTEsIDExMDU2LCAxMTA2NCwgMTEwNzIsIAorICAgIDExMDc5LCAxMTA4MywgMTEwOTcsIDExMTA3LCAxMTExMiwgMTExMTYsIDExMTI3LCAxMTEzMywgMTExMzgsIDExMTQzLCAKKyAgICA5MjA0LCA5MjEwLCAxMTE0NywgMTExNTAsIDExMTU1LCAxMTE2NywgMTExNzQsIDExMTc5LCAxMTE4MywgMTExODgsIAorICAgIDExMTkyLCAxMTE5OSwgMTEyMDUsIDkyMTUsIDkxMjIsIDExMjEyLCAyODYzLCA4LCAxMTIxOSwgMTEyMjQsIDExMjI4LCAKKyAgICAxMTIzNCwgMTEyNDIsIDExMjUyLCAxMTI1NywgMTEyNjIsIDExMjY5LCAxMTI3NiwgMTEyODAsIDExMjkxLCAxMTMwMSwgCisgICAgMTEzMTAsIDExMzIyLCAxMTMyNywgMTEzMzEsIDExMzM5LCAxMTM1MywgMTEzNTcsIDExMzYwLCAxMTM2OCwgMTEzNzUsIAorICAgIDExMzgzLCAxMTM4NywgMTEzOTgsIDExNDAyLCAxMTQwOSwgMTE0MTQsIDExNDE4LCAxMTQyNCwgMTE0MjksIDExNDMzLCAKKyAgICAxMTQzOSwgMTE0NDQsIDExNDU1LCAxMTQ1OSwgMTE0NjIsIDExNDY4LCAxMTQ3MywgMTE0NzksIDExNDg1LCAxMTQ5MiwgCisgICAgMTE1MDMsIDExNTEzLCAxMTUyMywgMTE1MzIsIDExNTM5LCAxMTU0OCwgOTIyNSwgOTIzMiwgOTIzOCwgOTI0MywgMTE1NTQsIAorICAgIDExNTYwLCA5MjQ3LCAxMTU2NiwgMTE1NjksIDExNTc2LCAxMTU4MSwgMTE1OTYsIDExNjEyLCAxMTYyNywgMTE2MzUsIAorICAgIDExNjQxLCAxMTY0NiwgODM4LCA0MjAsIDExNjUxLCAxMTY1OSwgMTE2NjYsIDExNjcyLCAxMTY3NywgMTE2ODIsIDkyNTIsIAorICAgIDExNjg0LCAxMTY4OCwgMTE2OTMsIDExNjk3LCAxMTcwNywgMTE3MTIsIDExNzE2LCAxMTcyNSwgMTE3MjksIDExNzMyLCAKKyAgICA5MjYxLCAxMTczOSwgMTE3NDIsIDExNzUwLCAxMTc1NywgMTE3NjUsIDExNzY5LCAxMTc3NiwgMTE3ODUsIDExNzg4LCAKKyAgICAxMTc5MiwgMTE3OTYsIDExODAyLCAxMTgwNiwgMTE4MTAsIDExODE0LCAxMTgyMCwgMTE4MzAsIDExODM0LCAxMTg0MiwgCisgICAgMTE4NDYsIDExODUzLCAxMTg1NywgMTE4NjIsIDExODY2LCAxMTg3MywgMTE4NzksIDExODg3LCAxMTg5MywgMTE4OTgsIAorICAgIDExOTA4LCAxMTkxMywgMTE5MTgsIDExOTIyLCAxMTkzMCwgMzkwNSwgMTE5MzgsIDExOTQzLCA5MjY2LCAxMTk0NywgCisgICAgMTE5NTEsIDExOTU0LCAxMTk2MiwgMTE5NjksIDExOTczLCA1OTkxLCAxMTk3NywgMTE5ODIsIDExOTg2LCAxMTk5NywgCisgICAgMTIwMDcsIDEyMDEyLCAxMjAxOCwgMTIwMjIsIDEyMDI1LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA1MCwgMTIwNTUsIAorICAgIDkyNzEsIDEyMDYwLCAxMjA2NCwgMTIwNzEsIDE3MjIsIDYxNDUsIDEyMDc2LCAxMjA4MSwgMTIwODYsIDEyMDkxLCAxMjA5NywgCisgICAgMTIxMDIsIDEyMTA4LCAxMjExMywgMTIxMTgsIDEyMTIzLCAxMjEyOCwgMTIxMzMsIDEyMTM4LCAxMjE0MywgMTIxNDgsIAorICAgIDEyMTUzLCAxMjE1OCwgMTIxNjMsIDEyMTY4LCAxMjE3MywgMTIxNzgsIDEyMTgzLCAxMjE4OCwgMTIxOTQsIDEyMTk5LCAKKyAgICAxMjIwNCwgMTIyMDksIDEyMjE0LCAxMjIxOSwgMTIyMjUsIDEyMjMwLCAxMjIzNSwgMTIyNDEsIDEyMjQ2LCAxMjI1MiwgCisgICAgMTIyNTcsIDEyMjYzLCAxMjI2OCwgMTIyNzMsIDEyMjc4LCAxMjI4MywgMTIyODksIDEyMjk0LCAxMjI5OSwgMTIzMDQsIAorICAgIDczNywgMTM5LCAxMjMxMiwgMTIzMTYsIDEyMzIxLCAxMjMyNiwgMTIzMzAsIDEyMzM0LCAxMjMzOCwgMTIzNDMsIDEyMzQ3LCAKKyAgICAxMjM1MiwgMTIzNTYsIDEyMzU5LCAxMjM2MywgMTIzNjcsIDEyMzczLCAxMjM3OCwgMTIzODgsIDEyMzk0LCAxMjQwMiwgCisgICAgMTI0MDYsIDEyNDEwLCAxMjQxNywgMTI0MjUsIDEyNDM0LCAxMjQ0NSwgMTI0NTIsIDEyNDU5LCAxMjQ2MywgMTI0NzIsIAorICAgIDEyNDgxLCAxMjQ4OSwgMTI0OTgsIDEyNTA3LCAxMjUxNiwgMTI1MjUsIDEyNTM1LCAxMjU0NSwgMTI1NTUsIDEyNTY1LCAKKyAgICAxMjU3NSwgMTI1ODQsIDEyNTk0LCAxMjYwNCwgMTI2MTQsIDEyNjI0LCAxMjYzNCwgMTI2NDQsIDEyNjU0LCAxMjY2MywgCisgICAgMTI2NzMsIDEyNjgzLCAxMjY5MywgMTI3MDMsIDEyNzEzLCAxMjcyMywgMTI3MzIsIDEyNzQyLCAxMjc1MiwgMTI3NjIsIAorICAgIDEyNzcyLCAxMjc4MiwgMTI3OTIsIDEyODAyLCAxMjgxMiwgMTI4MjIsIDEyODMxLCAxMjg0MSwgMTI4NTEsIDEyODYxLCAKKyAgICAxMjg3MSwgMTI4ODEsIDEyODkxLCAxMjkwMSwgMTI5MTEsIDEyOTIxLCAxMjkzMSwgMTI5NDAsIDEyNTYsIDEyOTQ2LCAKKyAgICAxMjk0OSwgMTI5NTMsIDEyOTU4LCAxMjk2NSwgMTI5NzEsIDEyOTc2LCAxMjk4MCwgMTI5ODUsIDEyOTk0LCAxMzAwMiwgCisgICAgMTMwMDcsIDEzMDExLCAxMzAxNSwgMTMwMjEsIDEzMDI2LCAxMzAzMiwgOTI4MCwgMTMwMzcsIDEzMDQyLCAxMzA1MSwgCisgICAgOTI4NSwgMTMwNTYsIDEzMDU5LCAxMzA2NSwgMTMwNzMsIDkyOTAsIDEzMDgwLCAxMzA4NCwgMTMwODgsIDEzMDkyLCAKKyAgICAxMzEwMiwgMTMxMDgsIDEzMTE0LCAxMzExOSwgMTMxMjgsIDEzMTM2LCAxMzE0MywgMTMxNTAsIDEzMTU1LCAxMzE2MiwgCisgICAgMTMxNjcsIDEzMTcxLCAxMzE3NCwgMTMxODUsIDEzMTk1LCAxMzIwNCwgMTMyMTIsIDEzMjIzLCAxMzIzNSwgMTMyNDUsIAorICAgIDEzMjUwLCAxMzI1NCwgMTMyNTksIDEzMjY0LCAxMzI2OCwgMTMyNzQsIDEzMjgyLCAxMzI4OSwgMTMzMDAsIDEzMzA1LCAKKyAgICAxMzMxNSwgMTMzMTksIDEzMzIyLCAxMzMyOSwgMTMzMzksIDEzMzQ4LCAxMzM1NSwgMTMzNTksIDEzMzY2LCAxMzM3MiwgCisgICAgMTMzNzcsIDEzMzgyLCAxMzM4NiwgMTMzOTUsIDEzNDAwLCAxMzQwNiwgMTM0MTAsIDEzNDE1LCAxMzQxOSwgMTM0MjgsIAorICAgIDEzNDM2LCAxMzQ0NCwgMTM0NTEsIDEzNDU5LCAxMzQ3MSwgMTM0ODIsIDEzNDkyLCAxMzQ5OSwgMTM1MDUsIDEzNTE0LCAKKyAgICAxMzUyNSwgMTM1MzQsIDEzNTQ2LCAxMzU1OCwgMTM1NzAsIDEzNTgwLCAxMzU4OSwgMTM1OTgsIDEzNjA2LCAxMzYxMywgCisgICAgMTM2MjIsIDEzNjMwLCAxMzYzNCwgMTM2NDAsIDEzNjQ2LCAxMzY1MSwgNzc1MywgMTM2NTUsIDEzNjU3LCAxMzY2MSwgCisgICAgMTM2NjYsIDEzNjcyLCAxMzY4MSwgMTM2ODUsIDEzNjkzLCAxMzcwMCwgMTM3MDksIDEzNzE4LCAxMzcyNywgMTM3MzYsIAorICAgIDEzNzQ1LCAxMzc1NCwgMTM3NjMsIDEzNzcyLCAxMzc4MiwgMTM3OTIsIDEzODAxLCAxMzgwNywgMTM4MTQsIDEzODIxLCAKKyAgICAxMzgyNywgMTM4NDEsIDEzODQ4LCAxMzg1NiwgMTM4NjUsIDEzODcxLCAxMzg4MCwgMTM4ODksIDEzOTAwLCAxMzkxMCwgCisgICAgMTM5MTgsIDEzOTI1LCAxMzkzMywgMTM5NDIsIDEzOTU1LCAxMzk2MywgMTM5NzAsIDEzOTgzLCAxMzk4OSwgMTM5OTUsIAorICAgIDE0MDA1LCAxNDAxNCwgMTQwMjMsIDE0MDI4LCAxNDAzMiwgMTQwMzgsIDE0MDQ0LCAxNDA1MSwgODk2NiwgMTQwNTYsIAorICAgIDE0MDYxLCAxNDA2OCwgMTQwNzMsIDEyMzY5LCAxNDA3OCwgMTQwODYsIDE0MDkyLCAxNDA5NywgMTQxMDUsIDE0MTEzLCAKKyAgICAxNDEyMCwgMTQxMjgsIDE0MTM0LCAxNDE0MiwgMTQxNTAsIDE0MTU2LCAxNDE2MSwgMTQxNjcsIDE0MTc0LCAxNDE4MCwgCisgICAgMTQxODUsIDE0MTg5LCAxNDIwMCwgMTQyMDgsIDE0MjE0LCAxNDIxOSwgMTQyMjgsIDE0MjM0LCAxNDIzOSwgMTQyNDgsIAorICAgIDE0MjYyLCAzODUzLCAxNDI2NiwgMTQyNzEsIDE0Mjc2LCAxNDI4MiwgMTQyODcsIDE0MjkyLCAxNDI5NiwgMTQzMDEsIAorICAgIDE0MzA2LCAxNDMxMSwgNzc1MiwgMTQzMTYsIDE0MzIxLCAxNDMyNiwgMTQzMzEsIDE0MzM2LCAxNDM0MCwgMTQzNDUsIAorICAgIDE0MzUwLCAxNDM1NSwgMTQzNjAsIDE0MzY2LCAxNDM3MiwgMTQzNzcsIDE0MzgxLCAxNDM4NiwgMTQzOTEsIDE0Mzk2LCAKKyAgICA5Mjk0LCAxNDQwMSwgMTQ0MDYsIDE0NDExLCAxNDQxNiwgMTQ0MjEsIDE0NDM4LCAxNDQ1NiwgMTQ0NjgsIDE0NDgxLCAKKyAgICAxNDQ5OCwgMTQ1MTQsIDE0NTMxLCAxNDU0MSwgMTQ1NjAsIDE0NTcxLCAxNDU4MiwgMTQ1OTMsIDE0NjA0LCAxNDYxNiwgCisgICAgMTQ2MjcsIDE0NjM4LCAxNDY1NSwgMTQ2NjYsIDE0Njc3LCAxNDY4MiwgOTI5OSwgMTQ2ODcsIDE0NjkxLCAyMzgxLCAKKyAgICAxNDY5NSwgMTQ2OTgsIDE0NzA0LCAxNDcxMiwgMTQ3MjAsIDE0NzI1LCAxNDczMywgMTQ3NDEsIDE0NzQ4LCAxNDc1MywgCisgICAgMTQ3NTksIDE0NzY2LCAxNDc3NCwgMTQ3ODEsIDE0NzkzLCAxNDgwMSwgMTQ4MDYsIDExNTkwLCAxNDgxMiwgMTQ4MjEsIAorICAgIDE0ODMwLCAxNDgzOCwgMTQ4NDUsIDE0ODUxLCAxNDg1OSwgMTQ4NjYsIDE0ODcyLCAxNDg3OSwgMTQ4ODUsIDE0ODk0LCAKKyAgICAxNDkwMiwgMTQ5MTIsIDE0OTE5LCAxNDkyNSwgMTQ5MzMsIDE0OTM5LCAxNDk0NywgMTQ5NTQsIDE0OTY3LCAxNDk3NCwgCisgICAgMTQ5ODMsIDE0OTkyLCAxNTAwMSwgMTUwMDksIDE1MDE5LCAxNTAyNiwgMTUwMzEsIDM1NjAsIDE1MDM4LCAxNTA0MywgCisgICAgMTM3MiwgMTUwNDcsIDE0MzE3LCAxNTA1MSwgMTUwNTcsIDE1MDYxLCAxNTA2OSwgMTUwODEsIDE1MDg2LCAxNTA5MywgCisgICAgMTUwOTksIDE1MTA0LCAxNTExMSwgMTQzMjIsIDE1MTE1LCAxNTExOSwgMTUxMjMsIDE0MzI3LCAxNTEyNywgMTQzMzIsIAorICAgIDE1MTMxLCAxNTEzOCwgMTUxNDMsIDE1MTQ3LCAxNTE1NCwgMTUxNTgsIDE1MTY2LCAxNTE3MywgMTUxNzcsIDE1MTg0LCAKKyAgICAxNTIwMSwgMTUyMTAsIDE1MjE0LCAxNTIxNywgMTUyMjUsIDE1MjMxLCAxNTIzNiwgMzYzOCwgMTUyNDAsIDE1MjQyLCAKKyAgICAxNTI1MCwgMTUyNTcsIDE1MjY3LCAxNTI3OSwgMTUyODQsIDE1MjkwLCAxNTI5NSwgMTUyOTksIDE1MzA1LCAxNTMxMCwgCisgICAgMTUzMTYsIDE1MzE5LCAxNTMyNiwgMTUzMzQsIDE1MzQxLCAxNTM0NywgMTUzNTMsIDE1MzU4LCAxNTM2NSwgMTUzNzEsIAorICAgIDE1Mzc2LCAxNTM4MywgMTUzODcsIDE1MzkzLCAxNTM5NywgMTU0MDQsIDE1NDEwLCAxNTQxNiwgMTU0MjQsIDE1NDMwLCAKKyAgICAxNTQzNSwgMTU0NDEsIDE1NDQ5LCAxNTQ1NywgMTU0NjMsIDE1NDY5LCAxNTQ3NCwgMTU0ODEsIDE1NDg2LCAxNTQ5MCwgCisgICAgMTU0OTYsIDE1NTAxLCAxNTUwOCwgMTU1MTMsIDE1NTE5LCAxNTUyMiwgMTU1MjgsIDE1NTM0LCAxNTUzNywgMTU1NDEsIAorICAgIDE1NTUzLCAxNTU1OSwgMTU1NjQsIDE1NTcxLCAxNTU3NywgMTU1ODMsIDE1NTk0LCAxNTYwNCwgMTU2MTMsIDE1NjIxLCAKKyAgICAxNTYyOCwgMTU2MzksIDE1NjQ5LCAxNTY1OSwgMTU2NjcsIDE1NjcwLCAxNDM0NiwgMTU2NzUsIDE1NjgwLCAxNDM1MSwgCisgICAgMTQ0ODYsIDE1Njg4LCAxNTcwMSwgMTU3MTYsIDE1NzI3LCAxNDUwMywgMTU3NDUsIDE1NzU4LCAxNTc3MSwgMTU3ODIsIAorICAgIDEwNDg1LCAxNTc5MywgMTU4MDYsIDE1ODI1LCAxNTgzNiwgMTU4NDcsIDE1ODU4LCAyNjQ5LCAxNTg3MSwgMTU4NzUsIAorICAgIDE1ODgzLCAxNTg5OCwgMTU5MTMsIDE1OTI0LCAxNTkzMSwgMTU5MzcsIDE1OTQ1LCAxNTk0OSwgMTU5NTUsIDE1OTU4LCAKKyAgICAxNTk2OCwgMTU5NzYsIDE1OTgzLCAxNTk5MSwgMTYwMDEsIDE2MDA2LCAxNjAxMywgMTYwMTgsIDE2MDI1LCAxNjAzNiwgCisgICAgMTYwNDYsIDE2MDUyLCAxNjA1NywgMTYwNjIsIDE0MzU2LCAxNjA2NiwgMTYwNzIsIDE2MDc4LCAxNjA4MywgMTYwODgsIAorICAgIDE2MDkzLCAxNjA5NywgMTQzNjEsIDE0MzY3LCAxNjEwMSwgMTQzNzMsIDE2MTA2LCAxNjExNCwgMTYxMjMsIDE2MTMwLCAKKyAgICA5MTQzLCAxNjEzNCwgMTYxMzYsIDE2MTQxLCAxNjE0NiwgMTYxNTIsIDE2MTU3LCAxNjE2MiwgMTYxNjcsIDE2MTcyLCAKKyAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5MywgMTYxOTksIDE2MjA0LCAxNjIwOSwgMTYyMTUsIDE2MjIwLCAxNjIyNSwgCisgICAgMTYyMzAsIDE2MjM1LCAxNjI0MSwgMTYyNDYsIDE2MjUxLCAxNjI1NywgMTYyNjMsIDE2MjY4LCAxNjI3MywgMTYyODAsIAorICAgIDE2Mjg2LCAxNjI5NywgMTYzMDQsIDE2MzA5LCAxNjMxMywgMTYzMTcsIDE2MzIwLCAxNjMyOCwgMTYzMzMsIDE2MzQwLCAKKyAgICAxNjM0NywgMTYzNTMsIDE2MzU4LCAxNjM2MywgMTYzNzAsIDE2MzgwLCAxNjM4NSwgMTYzOTIsIDE2Mzk4LCAxNjQwOCwgCisgICAgMTY0MTgsIDE2NDMyLCAxNjQ0NiwgMTY0NjAsIDE2NDc0LCAxNjQ4OSwgMTY1MDQsIDE2NTIxLCAxNjUzOSwgMTY1NTIsIAorICAgIDE2NTU4LCAxNjU2MywgMTY1NjgsIDE2NTcyLCAxNjU3NywgMTY1ODUsIDE2NTkxLCAxNjU5NiwgMTY2MDEsIDE2NjA1LCAKKyAgICAxNjYxMCwgMTY2MTQsIDE2NjE5LCAxNjYyMywgMTY2MzQsIDE2NjQwLCAxNjY0NSwgMTY2NTAsIDE2NjU3LCAxNjY2MiwgCisgICAgMTY2NjYsIDE2NjcxLCAxNjY3NiwgMTY2ODIsIDE2Njg5LCAxNjY5NSwgMTY3MDAsIDE2NzA0LCAxNjcxMCwgMTY3MTUsIAorICAgIDE2NzIwLCAxNjcyNCwgMTY3MzAsIDE2NzM1LCAxNjc0MCwgMTY3NDcsIDE2NzUyLCAxMzEwNCwgMTY3NTYsIDE2NzYxLCAKKyAgICAxNjc2NSwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODksIDE2Nzk5LCAxNjgwNywgMTY4MTQsIDE2ODE5LCAxNjgyMywgCisgICAgMTY4MzIsIDE2ODQwLCAxNjg0NywgMTY4NTQsIDE2ODYwLCAxNjg2NiwgMTY4NzEsIDE2ODc2LCAxNjg4MiwgMTY4ODcsIAorICAgIDE2ODkzLCAxNjg5OCwgMTY5MDQsIDE2OTEwLCAxNjkxNywgMTY5MjMsIDE2OTI4LCAxNjkzMywgOTM0MSwgMTY5NDIsIAorICAgIDE2OTQ1LCAxNjk1MSwgMTY5NTYsIDE2OTYxLCAxNjk3MSwgMTY5NzgsIDE2OTg0LCAxNjk4OSwgMTY5OTQsIDE3MDAwLCAKKyAgICAxNzAwNSwgMTcwMTEsIDE3MDE2LCAxNzAyMiwgMTcwMjgsIDE3MDMzLCAxNzA0MSwgMTcwNDgsIDE3MDUzLCAxNzA1OCwgCisgICAgMTcwNjQsIDE3MDY5LCAxNzA3MywgMTcwODIsIDE3MDkzLCAxNzEwMCwgMTcxMDUsIDE3MTEzLCAxNzExOSwgMTcxMjYsIAorICAgIDE3MTMyLCAxNzEzNywgMTcxNDEsIDE3MTQ3LCAxNzE1MiwgMTcxNTcsIDE3MTYyLCAxNDQwLCA3Nzc3LCAyODc3LCAxNzE2NiwgCisgICAgMTcxNzAsIDE3MTc0LCAxNzE3OCwgMTcxODIsIDE3MTg2LCAxNzE4OSwgMTcxOTYsIDE3MjA0LCAxNDM4NywgMTcyMTEsIAorICAgIDE3MjIxLCAxNzIyOSwgMTcyMzYsIDE3MjQ0LCAxNzI1NCwgMTcyNjMsIDE3Mjc2LCAxNzI4MSwgMTcyODYsIDE3Mjk0LCAKKyAgICAxNzMwMSwgMTMyMDAsIDEzMjA5LCAxNzMwOCwgMTczMTgsIDE3MzMzLCAxNzMzOSwgMTczNDYsIDE3MzUzLCAxNzM1OSwgCisgICAgMTczNjcsIDE3Mzc3LCAxNzM4NywgMTQzOTIsIDE3Mzk2LCAxNzQwMiwgMTc0MDgsIDE3NDE2LCAxNzQyNCwgMTc0MjksIAorICAgIDE3NDM4LCAxNzQ0NiwgMTc0NTgsIDE3NDY4LCAxNzQ3OCwgMTc0ODgsIDE3NDk3LCAxNzUwOSwgMTc1MTksIDE3NTI5LCAKKyAgICAxNzU0MCwgMTc1NDUsIDE3NTU3LCAxNzU2OSwgMTc1ODEsIDE3NTkzLCAxNzYwNSwgMTc2MTcsIDE3NjI5LCAxNzY0MSwgCisgICAgMTc2NTMsIDE3NjY1LCAxNzY3NiwgMTc2ODgsIDE3NzAwLCAxNzcxMiwgMTc3MjQsIDE3NzM2LCAxNzc0OCwgMTc3NjAsIAorICAgIDE3NzcyLCAxNzc4NCwgMTc3OTYsIDE3ODA3LCAxNzgxOSwgMTc4MzEsIDE3ODQzLCAxNzg1NSwgMTc4NjcsIDE3ODc5LCAKKyAgICAxNzg5MSwgMTc5MDMsIDE3OTE1LCAxNzkyNywgMTc5MzgsIDE3OTUwLCAxNzk2MiwgMTc5NzQsIDE3OTg2LCAxNzk5OCwgCisgICAgMTgwMTAsIDE4MDIyLCAxODAzNCwgMTgwNDYsIDE4MDU4LCAxODA2OSwgMTgwODEsIDE4MDkzLCAxODEwNSwgMTgxMTcsIAorICAgIDE4MTI5LCAxODE0MSwgMTgxNTMsIDE4MTY1LCAxODE3NywgMTgxODksIDE4MjAwLCAxODIxMiwgMTgyMjQsIDE4MjM2LCAKKyAgICAxODI0OCwgMTgyNjAsIDE4MjcyLCAxODI4NCwgMTgyOTYsIDE4MzA4LCAxODMyMCwgMTgzMzEsIDE4MzQzLCAxODM1NSwgCisgICAgMTgzNjcsIDE4Mzc5LCAxODM5MSwgMTg0MDMsIDE4NDE1LCAxODQyNywgMTg0MzksIDE4NDUxLCAxODQ2MiwgMTg0NzQsIAorICAgIDE4NDg2LCAxODQ5OCwgMTg1MTAsIDE4NTIzLCAxODUzNiwgMTg1NDksIDE4NTYyLCAxODU3NSwgMTg1ODgsIDE4NjAxLCAKKyAgICAxODYxMywgMTg2MjYsIDE4NjM5LCAxODY1MiwgMTg2NjUsIDE4Njc4LCAxODY5MSwgMTg3MDQsIDE4NzE3LCAxODczMCwgCisgICAgMTg3NDMsIDE4NzU1LCAxODc2OCwgMTg3ODEsIDE4Nzk0LCAxODgwNywgMTg4MjAsIDE4ODMzLCAxODg0NiwgMTg4NTksIAorICAgIDE4ODcyLCAxODg4NSwgMTg4OTcsIDE4OTEwLCAxODkyMywgMTg5MzYsIDE4OTQ5LCAxODk2MiwgMTg5NzUsIDE4OTg4LCAKKyAgICAxOTAwMSwgMTkwMTQsIDE5MDI3LCAxOTAzOSwgMTkwNTIsIDE5MDY1LCAxOTA3OCwgMTkwOTEsIDE5MTA0LCAxOTExNywgCisgICAgMTkxMzAsIDE5MTQzLCAxOTE1NiwgMTkxNjksIDE5MTgxLCAxOTE5NCwgMTkyMDcsIDE5MjIwLCAxOTIzMywgMTkyNDYsIAorICAgIDE5MjU5LCAxOTI3MiwgMTkyODUsIDE5Mjk4LCAxOTMxMSwgMTkzMjMsIDE5MzM0LCAxOTM0NywgMTkzNjAsIDE5MzczLCAKKyAgICAxOTM4NiwgMTkzOTksIDE5NDEyLCAxOTQyNSwgMTk0MzgsIDE5NDUxLCAxOTQ2NCwgMTk0NzYsIDE5NDg5LCAxOTUwMiwgCisgICAgMTk1MTUsIDE5NTI4LCAxOTU0MSwgMTk1NTQsIDE5NTY3LCAxOTU4MCwgMTk1OTMsIDE5NjA2LCAxOTYxOCwgMTk2MzEsIAorICAgIDE5NjQ0LCAxOTY1NywgMTk2NzAsIDE5NjgzLCAxOTY5NiwgMTk3MDksIDE5NzIyLCAxOTczNSwgMTk3NDgsIDE5NzYwLCAKKyAgICAxOTc3MywgMTk3ODYsIDE5Nzk5LCAxOTgxMiwgMTk4MjUsIDE5ODM4LCAxOTg1MSwgMTk4NjQsIDE5ODc3LCAxOTg5MCwgCisgICAgMTk5MDIsIDE5OTE1LCAxOTkyOCwgMTk5NDEsIDE5OTU0LCAxOTk2NywgMTk5ODAsIDE5OTkzLCAyMDAwNiwgMjAwMTksIAorICAgIDIwMDMyLCAyMDA0NCwgMjAwNTcsIDIwMDcwLCAyMDA4MywgMjAwOTYsIDIwMTA5LCAyMDEyMiwgMjAxMzUsIDIwMTQ4LCAKKyAgICAyMDE2MSwgMjAxNzQsIDIwMTg2LCAyMDE5OSwgMjAyMTIsIDIwMjI1LCAyMDIzOCwgMjAyNTEsIDIwMjY0LCAyMDI3NywgCisgICAgMjAyOTAsIDIwMzAzLCAyMDMxNiwgMjAzMjgsIDIwMzQxLCAyMDM1NCwgMjAzNjcsIDIwMzgwLCAyMDM5MywgMjA0MDYsIAorICAgIDIwNDE5LCAyMDQzMiwgMjA0NDUsIDIwNDU4LCAyMDQ3MCwgMjA0ODMsIDIwNDk2LCAyMDUwOSwgMjA1MjIsIDIwNTM1LCAKKyAgICAyMDU0OCwgMjA1NjEsIDIwNTc0LCAyMDU4NywgMjA2MDAsIDIwNjEyLCAyMDYyNSwgMjA2MzgsIDIwNjUxLCAyMDY2NCwgCisgICAgMjA2NzcsIDIwNjkwLCAyMDcwMywgMjA3MTYsIDIwNzI5LCAyMDc0MiwgMjA3NTQsIDIwNzY1LCAyMDc3MywgMjA3ODEsIAorICAgIDIwNzg4LCAyMDc5NCwgMjA3OTgsIDIwODA0LCAyMDgxMCwgMjA4MTgsIDIwODI0LCAyMDgyOSwgMjA4MzMsIDIwODQyLCAKKyAgICA5MTQ4LCAyMDg1MywgMjA4NjAsIDIwODY4LCAyMDg3NSwgMjA4ODIsIDEwOTQxLCAyMDg4OSwgMjA4OTgsIDIwOTAzLCAKKyAgICAyMDkwOCwgNzgwNSwgMjA5MTUsIDIwOTIwLCAyMDkyMywgMjA5MjgsIDIwOTM2LCAyMDk0MywgMjA5NTAsIDIwOTU3LCAKKyAgICAyMDk2MywgMjA5NzIsIDIwOTgxLCAyMDk4NywgMjA5OTYsIDIxMDAwLCAyMTAwNiwgMjEwMTEsIDIxMDIxLCAyMTAyOCwgCisgICAgMjEwMzQsIDIxMDQyLCAyMTA0OCwgMjEwNTUsIDIxMDY1LCAyMTA3NCwgMjEwNzgsIDIxMDg1LCAyMTA4OSwgMjEwOTQsIAorICAgIDIxMTAwLCAyMTEwOCwgMjExMTIsIDIxMTIyLCAxNDQwMiwgMjExMzEsIDIxMTM3LCAyMTE0MSwgMjExNTAsIDE0NDA3LCAKKyAgICAyMTE1NiwgMjExNjMsIDIxMTc0LCAyMTE4MiwgMjExOTEsIDIxMTk5LCA4OTMxLCAyMTIwNywgMjEyMTIsIDIxMjE4LCAKKyAgICAyMTIyMywgMjEyMjcsIDIxMjMxLCAyMTIzNSwgOTYzMiwgMjEyNDAsIDIxMjQ4LCAyMTI1NSwgMjEyNjQsIDIxMjcxLCAKKyAgICAyMTI3OCwgMTA4NzEsIDIxMjg1LCAyMTI5MSwgMjEyOTUsIDIxMzAxLCAyMTMwOCwgMjEzMTQsIDIxMzIyLCAyMTMyOCwgCisgICAgMjEzMzUsIDIxMzQxLCAyMTM0NywgMjEzNTYsIDIxMzYwLCAyMTM2OCwgMjEzNzcsIDIxMzg0LCAyMTM4OSwgMjEzOTMsIAorICAgIDIxNDA0LCAyMTQwOSwgMjE0MTQsIDIxNDE5LCAyMTQzMiwgNzk5NSwgMjE0MzYsIDIxNDQyLCAyMTQ1MCwgMjE0NTQsIAorICAgIDIxNDYxLCAyMTQ3MCwgMjE0NzUsIDE0Njc4LCAyMTQ4MywgMjE0ODcsIDIxNDk5LCAyMTUwNCwgMjE1MDgsIDIxNTExLCAKKyAgICAyMTUxNywgMjE1MjMsIDIxNTI4LCAyMTUzMiwgMjE1MzUsIDIxNTQ2LCAyMTU1MSwgOTM3NiwgMjE1NTgsIDIxNTYzLCAKKyAgICA5MzgxLCAyMTU2OCwgMjE1NzMsIDIxNTc4LCAyMTU4MywgMjE1ODgsIDIxNTkzLCAyMTU5OCwgMjE2MDMsIDIxNjA4LCAKKyAgICAyMTYxMywgMjE2MTgsIDIxNjIzLCAyMTYyOSwgMjE2MzQsIDIxNjM5LCAyMTY0NCwgMjE2NDksIDIxNjU0LCAyMTY1OSwgCisgICAgMjE2NjQsIDIxNjY5LCAyMTY3NCwgMjE2ODAsIDIxNjg2LCAyMTY5MSwgMjE2OTYsIDIxNzAxLCAyMTcwNiwgMjE3MTEsIAorICAgIDIxNzE2LCAyMTcyMSwgMjE3MjYsIDIxNzMxLCAyMTczNywgMjE3NDIsIDIxNzQ3LCAyMTc1MiwgMjE3NTgsIDIxNzY0LCAKKyAgICAyMTc2OSwgMjE3NzQsIDIxNzc5LCAyMTc4NCwgMjE3ODksIDIxNzk0LCAyMTc5OSwgMjE4MDQsIDIxODEwLCAyMTgxNSwgCisgICAgMjE4MjAsIDIxODI1LCAyMTgzMCwgMjE4MzYsIDIxODQxLCAyMTg0NiwgMjE4NTAsIDEzNjgsIDEyOSwgMjE4NTgsIDIxODYyLCAKKyAgICAyMTg2NiwgMjE4NzAsIDIxODc1LCAyMTg3OSwgMTMxMTAsIDEyNDY5LCAyMTg4MywgMjE4ODgsIDIxODkyLCAyMTg5NywgCisgICAgMjE5MDEsIDIxOTA2LCAyMTkxMCwgMjE5MTYsIDIxOTIxLCAyMTkyNSwgMjE5MjksIDIxOTM3LCAyMTk0MSwgMjE5NDUsIAorICAgIDIxOTUwLCAyMTk1NSwgMjE5NTksIDIxOTY1LCAyMTk3MCwgMjE5NzQsIDIxOTc5LCAyMTk4NCwgMjE5ODgsIDIxOTk1LCAKKyAgICAyMjAwMiwgMjIwMDksIDIyMDEzLCAyMjAxNywgMjIwMjIsIDIyMDI2LCAyMjAyOSwgMjIwMzUsIDIyMDQ4LCAyMjA1MywgCisgICAgMjIwNjIsIDIyMDY3LCA5NDIxLCAyMjA3MiwgMjIwNzUsIDI3MTIsIDI3MTcsIDIyMDc5LCAyMjA4NSwgMjIwOTEsIDcyMDksIAorICAgIDIyMDk2LCAyMjEwMSwgMjIxMDYsIDIyMTEyLCAyMjExNywgMTM4OTYsIDIyMTIyLCAyMjEyNywgMjIxMzIsIDIyMTM3LCAKKyAgICAyMjE0MywgMjIxNDgsIDIyMTUzLCAyMjE1OSwgMjIxNjQsIDIyMTY4LCAyMjE3MywgMjIxNzgsIDIyMTgzLCAyMjE4OCwgCisgICAgMjIxOTIsIDIyMTk3LCAyMjIwMSwgMjIyMDYsIDIyMjExLCAyMjIxNiwgMjIyMjEsIDIyMjI1LCAyMjIzMCwgMjIyMzQsIAorICAgIDIyMjM5LCAyMjI0NCwgMjIyNDksIDIyMjU0LCAyODg2LCAyMjE2OSwgMjIyNTgsIDIyMjY2LCAyMjI3MywgOTcyNiwgCisgICAgMjIyODUsIDIyMjkzLCAyMjE3NCwgMjIzMDAsIDIyMzA1LCAyMjMxMywgMjIxNzksIDIyMzE4LCAyMjMyMywgMjIzMzEsIAorICAgIDIyMzM2LCAyMjE4NCwgMjIzNDEsIDIyMzQ2LCAyMjM1MCwgMjIzNTYsIDIyMzY0LCAyMjM2NywgMjIzNzQsIDIyMzc4LCAKKyAgICAyMjM4MiwgMjIzODgsIDIyMzk1LCAyMjQwMCwgODk1OCwgMTcyNywgMTczMiwgMjI0MDQsIDIyNDEwLCAyMjQxNiwgMjI0MjEsIAorICAgIDIyNDI1LCAyMjQyOSwgMjI0MzMsIDIyNDM3LCAyMjQ0MSwgMjI0NDUsIDIyNDQ5LCAyMjQ1MiwgMjI0NTgsIDIyNDY1LCAKKyAgICAyMjQ3MywgMjI0NzksIDIyNDg1LCAyMjQ5MCwgMjI0OTUsIDIyNDk5LCAxMzgxNiwgMTM4MjMsIDIyNTA0LCAyMjUxNiwgCisgICAgMjI1MTksIDIyNTI2LCAxNjM0OSwgMjI1MzMsIDIyNTQxLCAyMjU1MiwgMjI1NjEsIDIyNTc0LCAyMjU4NCwgMjI1OTgsIAorICAgIDIyNjEwLCAyMjYyNCwgMjI2MzYsIDIyNjQ2LCAyMjY1OCwgMjI2NjQsIDIyNjc5LCAyMjcwMywgMjI3MjEsIDIyNzQwLCAKKyAgICAyMjc1MywgMjI3NjcsIDIyNzg1LCAyMjgwMSwgMjI4MTgsIDIyODM2LCAyMjg0NywgMjI4NjYsIDIyODgzLCAyMjkwMywgCisgICAgMjI5MjEsIDIyOTMzLCAyMjk0NywgMjI5NjEsIDIyOTczLCAyMjk5MCwgMjMwMDksIDIzMDI3LCAyMzAzOSwgMjMwNTcsIAorICAgIDIzMDc2LCAxNDU0NiwgMjMwODksIDIzMTA5LCAyMzEyMSwgMTA1MTYsIDIzMTMzLCAyMzEzOCwgMjMxNDMsIDIzMTQ4LCAKKyAgICAyMzE1NCwgMjMxNTksIDIzMTYzLCAyMzE3MCwgMjM5OCwgMjMxNzQsIDIzMTgwLCAyMzE4NCwgMjMxODcsIDIzMTkxLCAKKyAgICAyMzE5OSwgMjMyMDUsIDIyMjAyLCAyMzIwOSwgMjMyMTgsIDIzMjI5LCAyMzIzNSwgMjMyNDEsIDIzMjUwLCAyMzI1OCwgCisgICAgMjMyNjUsIDIzMjcwLCAyMzI3NCwgMjMyODEsIDIzMjg3LCAyMzI5NiwgMjMzMDQsIDIzMzExLCAyMzMyMSwgMjMzMzAsIAorICAgIDIzMzQwLCAyMzM0NSwgMjMzNTQsIDIzMzYzLCAyMzM3NCwgMjMzODUsIDM5NjMsIDIzMzk1LCAyMzM5OSwgMjM0MDksIAorICAgIDIzNDE3LCAyMzQyNywgMjM0MzgsIDIzNDQzLCAyMzQ1MywgMjM0NjEsIDIzNDY4LCAyMzQ3NCwgMjM0ODEsIDIzNDg2LCAKKyAgICAyMjIxMiwgMjM0OTAsIDIzNDk5LCAyMzUwMywgMjM1MDYsIDIzNTExLCAyMzUxOCwgMjM1MjcsIDIzNTM1LCAyMzU0MywgCisgICAgMjM1NTMsIDIzNTYyLCAyMzU2OCwgMjM1NzQsIDIyMjE3LCAyMjIyMiwgMjM1NzgsIDIzNTg4LCAyMzU5OCwgMjM2MDgsIAorICAgIDIzNjE2LCAyMzYyMywgMjM2MzMsIDIzNjQxLCAyMzY0OSwgMjM2NTUsIDIzNjYzLCA5MzAsIDIzNjcyLCAxNDczNywgNTQyLCAKKyAgICAyMzY4NiwgMjM2OTUsIDIzNzAzLCAyMzcxNCwgMjM3MjUsIDIzNzM1LCAyMzc0NCwgMjM3NTYsIDIzNzY1LCAyMzc3NCwgCisgICAgMjM3ODAsIDIzNzg5LCAyMzc5OCwgMjM4MDgsIDIzODE2LCAyMzgyNCwgOTM1MywgMjM4MzAsIDIzODMzLCAyMzgzNywgCisgICAgMjM4NDIsIDIzODQ3LCA5ODQxLCAyMjIzNSwgMjIyNDAsIDIzODU1LCAyMzg2MSwgMjM4NjcsIDIzODcyLCAyMzg3NywgCisgICAgMjM4ODEsIDIzODg5LCAyMzg5NSwgMjM5MDEsIDIzOTA1LCAzNTI1LCAyMzkxMywgMjM5MTgsIDIzOTIzLCAyMzkyNywgCisgICAgMjM5MzEsIDk5MjEsIDIzOTM4LCAyMzk0NiwgMjM5NjAsIDIzOTY3LCAyMzk3MywgOTkzMCwgOTkzNiwgMjM5ODEsIDIzOTg5LCAKKyAgICAyMzk5NiwgMjQwMDEsIDI0MDA2LCAyMjI0NSwgMjQwMTIsIDI0MDIzLCAyNDAyNywgMjQwMzIsIDI2MDEsIDI0MDM3LCAKKyAgICAyNDA0OCwgMjQwNTQsIDI0MDU5LCAyNDA2MywgMjQwNjcsIDI0MDcwLCAyNDA3NywgMjQwODQsIDI0MDkxLCAyNDA5NywgCisgICAgMjQxMDEsIDIyMjUwLCAyNDEwNiwgMjQxMTAsIDI0MTE0LCAxMDM3LCAyNDExOSwgMjQxMjQsIDI0MTI5LCAyNDEzNCwgCisgICAgMjQxMzksIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjksIDI0MTc0LCAyNDE3OSwgMjQxODQsIAorICAgIDI0MTkwLCAyNDE5NSwgMjQyMDAsIDI0MjA1LCAyNDIxMCwgMjQyMTUsIDI0MjIwLCAyNDIyNiwgMjQyMzEsIDI0MjM2LCAKKyAgICAyNDI0MSwgMjQyNDYsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY3LCAyNDI3MywgMjQyNzgsIDI0Mjg0LCAyNDI4OSwgCisgICAgMjQyOTQsIDUsIDI0MzAwLCAyNDMwNCwgMjQzMDgsIDI0MzEyLCAyNDMxNywgMjQzMjEsIDI0MzI1LCAyNDMyOSwgMjQzMzMsIAorICAgIDI0MzM4LCAyNDM0MiwgMjQzNDcsIDI0MzUxLCAyNDM1NCwgMjQzNTgsIDI0MzYzLCAyNDM2NywgMjQzNzIsIDI0Mzc2LCAKKyAgICAyNDM4MCwgMjQzODQsIDI0Mzg5LCAyNDM5MywgMjQzOTcsIDI0NDA3LCAyNDQxMiwgMjQ0MTYsIDI0NDIwLCAyNDQyNSwgCisgICAgMjQ0MzAsIDI0NDM5LCAyNDQ0NCwgMjQ0NDksIDI0NDUzLCAyNDQ1NywgMjQ0NzAsIDI0NDgyLCAyNDQ5MSwgMjQ1MDAsIAorICAgIDI0NTA2LCAyNDUxMSwgMjQ1MTUsIDI0NTE5LCAyNDUyOSwgMjQ1MzgsIDI0NTQ2LCAyNDU1MiwgMjQ1NTcsIDI0NTYxLCAKKyAgICAyNDU2OCwgMjQ1NzgsIDI0NTg3LCAyNDU5NSwgMjQ2MDMsIDI0NjEwLCAyNDYxOCwgMjQ2MjcsIDI0NjM2LCAyNDY0NCwgCisgICAgMjQ2NDksIDI0NjUzLCAyNDY1NywgMjQ2NjAsIDI0NjYyLCAyNDY2NiwgMjQ2NzAsIDI0Njc1LCAyNDY4MCwgMjQ2ODQsIAorICAgIDI0Njg4LCAyNDY5MSwgMjQ2OTUsIDI0Njk4LCAyNDcwMiwgMjQ3MDUsIDI0NzA4LCAyNDcxMiwgMjQ3MTgsIDI0NzIyLCAKKyAgICAyNDcyNiwgMjQ3MzAsIDI0NzM1LCAyNDc0MCwgMjQ3NDUsIDI0NzQ5LCAyNDc1MiwgMjQ3NTcsIDI0NzYzLCAyNDc2OCwgCisgICAgMjQ3NzQsIDI0Nzc5LCAyNDc4MywgMjQ3ODcsIDI0NzkxLCAyNDc5NiwgMjQ4MDAsIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIAorICAgIDI0ODIwLCAyNDgyNCwgMjQ4MjcsIDI0ODMxLCAyNDgzNywgMjQ4NDMsIDI0ODQ3LCAyNDg1MSwgMjQ4NTYsIDI0ODYzLCAKKyAgICAyNDg2OSwgMjQ4NzMsIDI0ODgyLCAyNDg4NiwgMjQ4OTAsIDI0ODkzLCAyNDg5OSwgMjQ5MDQsIDI0OTEwLCAxNDg5LCAKKyAgICAxNzkxLCAyNDkxNSwgMjQ5MjAsIDI0OTI1LCAyNDkzMCwgMjQ5MzUsIDI0OTQwLCAyNDk0NSwgMjE0OCwgMjE5NCwgMjQ5NTAsIAorICAgIDI0OTUzLCAyNDk1NywgMjQ5NjEsIDI0OTY2LCAyNDk3MCwgMjQ5NzQsIDI0OTc3LCAyNDk4MiwgMjQ5ODcsIDI0OTkxLCAKKyAgICAyNDk5NCwgMjQ5OTksIDI1MDAzLCAyNTAwOCwgMjUwMTIsIDE0NzQ5LCAyNTAxNywgMjUwMjAsIDI1MDIzLCAyNTAyNywgCisgICAgMjUwMzIsIDI1MDM2LCAyNTA0OSwgMjUwNTMsIDI1MDU2LCAyNTA2NCwgMjUwNzMsIDI1MDgwLCAyNTA4NSwgMjUwOTEsIAorICAgIDI1MDk3LCAyNTEwNSwgMjUxMTIsIDI1MTE5LCAyNTEyMywgMjUxMjcsIDI1MTMxLCAyNTEzNiwgMjUxNDEsIDI1MTQ1LCAKKyAgICAyNTE1MywgMjUxNTgsIDI1MTcwLCAyNTE4MSwgMjUxODYsIDI1MTkwLCAyNTE5NCwgMjUyMDAsIDI1MjA1LCAyNTIxMCwgCisgICAgMjUyMTQsIDI1MjE4LCAyNTIyMSwgMjUyMjcsIDc5MTUsIDIzMTYsIDI1MjMxLCAyNTIzNiwgMjUyNTIsIDk0NjgsIDI1MjcyLCAKKyAgICAyNTI4MSwgMjUyOTcsIDI1MzAxLCAyNTMwNCwgMjUzMTAsIDI1MzIwLCAyNTMyNiwgMjUzMzUsIDI1MzUwLCAyNTM2MiwgCisgICAgMjUzNzMsIDI1MzgxLCAyNTM5MCwgMjUzOTYsIDI1NDA1LCAyNTQxNSwgMjU0MjYsIDI1NDM3LCAyNTQ0NiwgMjU0NTMsIAorICAgIDI1NDYyLCAyNTQ3MCwgMjU0NzcsIDI1NDg1LCAyNTQ5MiwgMjU0OTksIDI1NTEyLCAyNTUxOSwgMjU1MjUsIDI1NTMwLCAKKyAgICAyNTUzOSwgMjU1NDUsIDI1NTUwLCAyNTU1OCwgMjU1NjUsIDIzNDE5LCAyNTU3NywgMjU1ODksIDI1NjAzLCAyNTYxMSwgCisgICAgMjU2MTgsIDI1NjMwLCAyNTYzOSwgMjU2NDgsIDI1NjU2LCAyNTY2NCwgMjU2NzIsIDI1Njc5LCAyNTY4OCwgMjU2OTYsIAorICAgIDI1NzA2LCAyNTcxNSwgMjU3MjUsIDI1NzM0LCAyNTc0MywgMjU3NTEsIDI1NzU2LCAyNTc2MCwgMjU3NjMsIDI1NzY3LCAKKyAgICAyNTc3MSwgMjU3NzUsIDI1Nzc5LCAyNTc4MywgMjU3ODksIDI1Nzk1LCAyNTgwMywgMTQ3OTQsIDI1ODEwLCAyNTgxNSwgCisgICAgMjU4MjIsIDI1ODI4LCAyNTgzNSwgMTQ4MDIsIDI1ODQyLCAyNTg0NSwgMjU4NTcsIDI1ODY1LCAyNTg3MSwgMjU4NzYsIAorICAgIDI1ODgwLCA5ODcxLCAyNTg5MSwgMjU5MDEsIDI1OTEwLCAyNTkxNywgMjU5MjEsIDE0ODA3LCAyNTkyNCwgMjU5MzEsIAorICAgIDI1OTM1LCAyNTk0MSwgMjU5NDQsIDI1OTUxLCAyNTk1NywgMjU5NjQsIDI1OTcwLCAyNTk3NCwgMjU5NzksIDI1OTgzLCAKKyAgICAyNTk5MiwgMjU5OTksIDI2MDA1LCA3OTU2LCAyNjAxMiwgMjYwMjAsIDI2MDI3LCAyNjAzMywgMjYwMzgsIDI2MDQ0LCAKKyAgICAyNjA1MCwgMjYwNTgsIDI2MDYyLCAyNjA2NSwgMjYwNjcsIDI1NzY4LCAyNjA3NiwgMjYwODIsIDI2MDkyLCAyNjA5NywgCisgICAgMjYxMDQsIDI2MTEwLCAyNjExNSwgMjYxMjAsIDI2MTI1LCAyNjEyOSwgMjYxMzQsIDI2MTQxLCAyNjE1MCwgMjYxNTQsIAorICAgIDI2MTYxLCAyNjE3MCwgMjYxNzYsIDI2MTgxLCAyNjE4NywgMjYxOTIsIDI2MTk5LCAyNjIxMCwgMjYyMTUsIDI2MjE5LCAKKyAgICAyNjIyOSwgMjYyMzUsIDI2MjM5LCAyNjI0NCwgMjYyNTQsIDI2MjYzLCAyNjI2NywgMjYyNzQsIDI2MjgyLCAyNjI4OSwgCisgICAgMjYyOTUsIDI2MzAwLCAyNjMwOCwgMjYzMTUsIDI2MzI3LCAyNjMzNiwgMjYzNDAsIDEzMDQ2LCAyNjM0OCwgMjYzNTgsIAorICAgIDI2MzYyLCAyNTA2MCwgMjYzNzMsIDI2Mzc4LCAyNjM4MiwgMjYzODksIDI2Mzk2LCAyMTk2MSwgMjU2OTMsIDI2NDAxLCAKKyAgICAyNjQwNSwgMjY0MDgsIDIyODUzLCAyNjQxMywgMjY0MjcsIDI2NDQzLCAyNjQ2MSwgMjY0ODAsIDI2NDk3LCAyNjUxNSwgCisgICAgMjI4NzIsIDI2NTMyLCAyNjU1MiwgMjI4ODksIDI2NTY0LCAyNjU3NiwgMTU3MzIsIDI2NTg4LCAyMjkwOSwgMjY2MDIsIAorICAgIDI2NjE0LCAxMDUyOSwgMjY2MjgsIDI2NjMzLCAyNjYzOCwgMjY2NDMsIDI2NjQ5LCAyNjY1NSwgMjY2NjEsIDI2NjY1LCAKKyAgICAyNjY3MiwgMjY2NzcsIDI2Njg3LCAyNjY5MywgMTAxNzYsIDI2Njk5LCAyNjcwMSwgMjY3MDYsIDI2NzE0LCAyNjcxOCwgCisgICAgMjYxMzcsIDI2NzI0LCAyNjczMSwgMTE1MTcsIDExNTI3LCAyNjczOCwgMjY3NDgsIDI2NzUzLCAyNjc1NywgMjY3NjAsIAorICAgIDI2NzY2LCAyNjc3NCwgMjY3ODYsIDI2Nzk2LCAyNjgxMiwgMjY4MjUsIDI2ODM5LCAxNTc1MCwgMjY4NTMsIDI2ODYwLCAKKyAgICAyNjg2NCwgMjY4NjcsIDI2ODcyLCAyNjg3NiwgMjY4ODMsIDI2ODkwLCAyNjkwMCwgMjY5MDUsIDI2OTEwLCAyNjkxNSwgCisgICAgMjY5MjMsIDI2OTMxLCAyNjk0MCwgMjY5NDUsIDk1NjUsIDI2OTQ5LCAyNjk1MiwgMjY5NTUsIDI2OTYwLCAyNjk2NywgCisgICAgMjY5NzIsIDI2OTg4LCAyNjk5NiwgMjcwMDQsIDk0MTYsIDI3MDEyLCAyNzAxNywgMjcwMjEsIDI3MDI3LCAyNzAzMywgCisgICAgMjcwMzYsIDI3MDQyLCAyNzA1NCwgMjcwNjIsIDI3MDY5LCAyNzA3NSwgMjcwODIsIDI3MDkzLCAyNzEwNywgMjcxMjAsIAorICAgIDI3MTI5LCAyNzEzOCwgMjcxNTAsIDI3MTYxLCAyNzE3MSwgMjcxODAsIDI3MTg5LCAyNzE5NywgMjcyMDgsIDc5MzgsIAorICAgIDI3MjE1LCAyNzIyMSwgMjcyMjYsIDI3MjMyLCAyNzIzOSwgMjcyNDksIDI3MjU5LCAyNzI2OCwgMjcyNzQsIDI3MjgxLCAKKyAgICAyNzI4NiwgMjcyOTMsIDI3MzAxLCAyNzMwOSwgMjczMjEsIDYyNDYsIDI3MzI4LCAyNzMzNywgMjczNDUsIDI3MzUxLCAKKyAgICAyNzM1NywgMjczNjIsIDI3MzY2LCAyNzM2OSwgMjczNzUsIDI3MzgyLCAyNzM4NywgMjczOTIsIDI3Mzk2LCAyNzQwOCwgCisgICAgMjc0MTksIDI3NDI4LCAyNzQzNiwgMTQ5MzQsIDI3NDQxLCAyNzQ0NywgMjc0NTMsIDExNTEwLCA4NjM1LCAyNzQ1OCwgCisgICAgMjc0NjIsIDI3NDY1LCAyNzQ2OCwgMjc0NzQsIDI3NDgyLCAyNzQ5MCwgMjc0OTQsIDI3NDk4LCAyNzUwMywgMjc1MDYsIAorICAgIDI3NTE1LCAyNzUxOSwgMjc1MjcsIDI3NTM4LCAyNzU0MiwgMjc1NDgsIDI3NTU0LCAyNzU1OCwgMjc1NjQsIDI3NTcyLCAKKyAgICAyNzU5NCwgMjc2MTgsIDI3NjI1LCAyNzYzMiwgMjc2MzgsIDI3NjQ2LCAyNzY1MiwgMjc2NTcsIDI3NjY4LCAyNzY4NiwgCisgICAgMjc2OTMsIDI3NzAxLCAyNzcwNSwgMjc3MTQsIDI3NzI3LCAyNzczNSwgMjc3NDcsIDI3NzU4LCAyNzc2OCwgMjc3ODIsIAorICAgIDI3NzkxLCAyNzc5OSwgMjc4MTEsIDk0ODUsIDI3ODIyLCAyNzgzMywgMjc4NDUsIDI3ODU1LCAyNzg2NCwgMjc4NjksIAorICAgIDI3ODczLCAyNzg4MSwgMjc4OTEsIDI3ODk2LCAyNzkwMCwgMjc5MDMsIDI3OTA2LCAyNzkxNCwgMjc5MjIsIDI3OTMxLCAKKyAgICAyNzk0MSwgMjc5NTAsIDI3OTU2LCAyNzk3MCwgMjY2MywgMjc5OTIsIDI4MDAzLCAyODAxMiwgMjgwMjIsIDI4MDM0LCAKKyAgICAyODA0MywgMjgwNTIsIDI4MDYyLCAyODA3MCwgMjgwNzgsIDI4MDg3LCAyODA5MiwgMjgxMDMsIDI4MTA4LCAyODExOSwgCisgICAgMjgxMjMsIDI4MTMzLCAyODE0MiwgMjgxNTAsIDI4MTYwLCAyODE3MCwgMjgxNzgsIDI4MTg3LCAyODE5NCwgMjgyMDIsIAorICAgIDI4MjA5LCAyODIxOCwgMjgyMjIsIDI4MjMwLCAyODIzNywgMjgyNDUsIDI4MjUyLCAyODI2MywgMjgyNzgsIDI4Mjg1LCAKKyAgICAyODI5MSwgMjgzMDEsIDI4MzEwLCAyODMxNiwgMjgzMjAsIDI4MzI3LCAyODMzMSwgMTQwMTgsIDI4MzM3LCAyODM0MSwgCisgICAgMjgzNDYsIDI4MzUzLCAyODM1NywgMjgzNjEsIDI4MzY5LCAyODM3NywgMjgzODMsIDI4MzkyLCAyODM5OSwgMjg0MDQsIAorICAgIDI4NDA5LCAyODQxOSwgMjM0ODgsIDI4NDIzLCAyODQyNiwgMjg0MzEsIDI4NDM2LCAyODQ0MSwgMjg0NDYsIDI4NDUxLCAKKyAgICAyODQ1NiwgMjg0NjEsIDI4NDY2LCAyODQ3MiwgMjg0NzcsIDI4NDgyLCAyODQ4OCwgMTIxOCwgNzA0LCAyODQ5MywgMjg1MDIsIAorICAgIDIzNjQsIDI4NTA5LCAyODUxNCwgMjg1MTgsIDI4NTI0LCAxMjY3LCA1NDYsIDMxOCwgMjg1MjksIDI4NTM4LCAyODU0NiwgCisgICAgMjg1NTUsIDI4NTYzLCAyODU3NCwgMjg1ODMsIDI4NTkxLCAyODU5NSwgMjg1OTgsIDI4NjA2LCAyODYxNCwgMjg2MTksIAorICAgIDE0NzYyLCAyODYyNSwgMjg2MzEsIDI4NjM3LCA1ODcyLCAyODY0MiwgMjg2NDYsIDI4NjUyLCAyODY1NiwgMjg2NjMsIAorICAgIDE0NTUsIDI4NjY5LCAyODY3NiwgOTU3MiwgMjg2ODAsIDI4NjkwLCAyODY5OCwgMjg3MDQsIDI4NzEzLCAyODcyMSwgCisgICAgMjg3MjcsIDI4NzM1LCAyODc0MiwgMTExMDMsIDI4NzQ4LCAyODc1NSwgMjg3NjAsIDI4NzY3LCAxNDk2LCAyMTQ3LCAKKyAgICAyODc3MywgMjg3NzksIDI4Nzg2LCAyODc5NywgMjg4MDgsIDI4ODE2LCAyODgyMywgMjg4MzMsIDI4ODQyLCAyODg1MCwgCisgICAgMjg4NTksIDI4ODY2LCAyODg3MywgMjg4ODYsIDI4ODk3LCAxMjcyLCAyODkxNiwgMjg5MjEsIDI4OTI5LCAzNTc1LCAKKyAgICAyODkzMywgMjg5MzgsIDI4OTQyLCAxNDU5LCAyNDY4OSwgMjg5NTIsIDI4OTU2LCAyODk2MSwgMjg5NjUsIDM0OTMsIAorICAgIDI4OTcxLCAyODk3OSwgMjg5ODYsIDI4OTk3LCAyOTAwNSwgMjkwMTMsIDM1NzYsIDI3OSwgMjkwMTgsIDI5MDI2LCAyOTAzNCwgCisgICAgMjkwNDEsIDI5MDQ3LCAyOTA1MiwgMjIxNiwgMjkwNTksIDI5MDY1LCAyNTk3NSwgMjYyMDUsIDI5MDcxLCAxMDYsIDI5MDc1LCAKKyAgICAyOTA3OSwgMjkwODUsIDYxNSwgOTMyMSwgMjkwOTAsIDI5MDk3LCAyOTEwMywgMjMyNywgMjkxMDcsIDI5MTExLCAxNTE3NCwgCisgICAgMjkxMTQsIDI5MTE5LCAyOTEyNiwgMjkxMzIsIDI5MTM3LCAyOTE0NSwgMjkxNTIsIDI5MTU4LCAyMjMzOCwgMjkxNjIsIAorICAgIDI5MTY2LCAzNjQ2LCAxNjYxMiwgMjkxNzAsIDI5MTc1LCAyOTE3OCwgMjkxODYsIDI5MTk0LCAyOTE5OSwgMjkyMDIsIAorICAgIDI5MjA5LCAyOTIxOSwgMjkyMzEsIDI5MjM2LCAyOTI0MCwgMjkyNDgsIDI5MjU1LCAyOTI2MSwgMjkyNjgsIDI5Mjc1LCAKKyAgICAyOTI3OCwgMjkyODIsIDI5Mjg2LCAxNDYzLCAyOTI5NiwgMjkyOTgsIDI5MzAzLCAyOTMwOSwgMjkzMTUsIDI5MzIwLCAKKyAgICAyOTMyNSwgMjkzMzAsIDI5MzM1LCAyOTM0MCwgMjkzNDUsIDI5MzUwLCAyOTM1NSwgMjkzNjAsIDI5MzY1LCAyOTM3MCwgCisgICAgMjkzNzUsIDI5MzgwLCAyOTM4NSwgMjkzOTEsIDI5Mzk3LCAyOTQwMywgMjk0MDksIDI5NDE0LCAyOTQxOSwgMjk0MjQsIAorICAgIDI5NDMwLCAyOTQzNSwgMjk0NDAsIDI5NDQ1LCAyOTQ1MSwgMjk0NTYsIDI5NDYyLCAyOTQ2NywgMjk0NzIsIDI5NDc3LCAKKyAgICAyOTQ4MiwgMjk0ODgsIDI5NDkzLCAyOTQ5OSwgMjk1MDQsIDI5NTA5LCAyOTUxNCwgMjk1MTksIDI5NTI1LCAyOTUzMCwgCisgICAgMjk1MzYsIDI5NTQxLCAyOTU0NiwgMjk1NTEsIDI5NTU2LCAyOTU2MSwgMjk1NjYsIDI5NTcxLCAyOTU3NiwgMjk1ODEsIAorICAgIDI5NTg3LCAyOTU5MywgMjk1OTksIDI5NjA0LCAyOTYwOSwgMjk2MTQsIDI5NjE5LCAyOTYyNSwgMjk2MzEsIDI5NjM3LCAKKyAgICAyOTY0MywgMjk2NDksIDI5NjU1LCAyOTY2MCwgMjk2NjYsIDI5NjcxLCAyOTY3NiwgMjk2ODEsIDI5Njg2LCAyOTY5MiwgCisgICAgMjQ0MywgMjk2OTcsIDI0NTAsIDI0NTcsIDI3NTQsIDI5NzAyLCAyNDYzLCAyNDczLCAyOTcwOCwgMjk3MTIsIDI5NzE3LCAKKyAgICAyOTcyMiwgMjk3MjgsIDI5NzMzLCAyOTczOCwgMjk3NDIsIDI5NzQ3LCAyOTc1MywgMjk3NTgsIDI5NzYzLCAyOTc2OCwgCisgICAgMjk3NzQsIDI5Nzc5LCAyOTc4MywgMjk3ODcsIDI5NzkyLCAyOTc5NywgMjk4MDIsIDI5ODA3LCAyOTgxMiwgMjk4MTgsIAorICAgIDI5ODI0LCAyOTgyOSwgMjk4MzMsIDI5ODM4LCAyOTg0NCwgMjk4NDgsIDI5ODUzLCAyOTg1OCwgMjk4NjMsIDI5ODY4LCAKKyAgICAyOTg3MiwgMjk4NzUsIDI5ODgwLCAyOTg4NSwgMjk4OTAsIDI5ODk1LCAyOTkwMCwgMjk5MDYsIDI5OTEyLCAyOTkxNywgCisgICAgMjk5MjIsIDI5OTI2LCAyOTkzMSwgMjk5MzYsIDI5OTQxLCAyOTk0NiwgMjk5NTEsIDI5OTU1LCAyOTk2MCwgMjk5NjUsIAorICAgIDI5OTcwLCAyOTk3NCwgMjk5NzgsIDI5OTgyLCAyOTk4NywgMjk5OTUsIDMwMDAwLCAzMDAwNiwgMzAwMTIsIDMwMDE4LCAKKyAgICAzMDAyMywgMzAwMjcsIDMwMDMwLCAzMDAzNSwgMzAwNDAsIDMwMDQ0LCAzMDA0OSwgMzAwNTMsIDMwMDU4LCAzMDA2MiwgCisgICAgMzAwNjUsIDMwMDcwLCAxNzI4OSwgMzAwNzUsIDMwMDgwLCAzMDA4NSwgMzAwOTMsIDIxMjY3LCAyODY3MywgOTAxOSwgCisgICAgMzAwOTgsIDMwMTAzLCAzMDEwNywgMzAxMTIsIDMwMTE2LCAzMDEyMCwgMzAxMjUsIDMwMTI5LCAzMDEzMiwgMzAxMzUsIAorICAgIDMwMTM5LCAzMDE0NCwgMzAxNDgsIDMwMTU2LCAzMDE2MCwgMzAxNjMsIDMwMTY4LCAzMDE3MiwgMzAxNzYsIDMwMTgxLCAKKyAgICAzMDE4NiwgMzAxOTAsIDMwMTk2LCAzMDIwMSwgMzAyMDYsIDMwMjEzLCAzMDIyMCwgMzAyMjQsIDMwMjI3LCAzMDIzMywgCisgICAgMzAyNDIsIDMwMjQ5LCAzMDI1NywgMzAyNjQsIDMwMjY4LCAzMDI3MywgMzAyNzcsIDMwMjgxLCAzMDI4NywgMzAyOTMsIAorICAgIDMwMjk3LCAzMDMwMywgMzAzMDgsIDMwMzEzLCAzMDMyMCwgMzAzMjYsIDMwMzMyLCAzMDMzOCwgMzAzNDQsIDMwMzUxLCAKKyAgICAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIDMwMzg3LCAzMDM5MywgMzA0MDAsIDMwNDA2LCAzMDQxMywgCisgICAgMzA0MTksIDMwNDI1LCAzMDQzMSwgMzA0MzcsIDMwNDQzLCAzMDQ0OSwgMzA0NTUsIDMwNDYxLCAzMDQ2NywgMTE0MTEsIAorICAgIDMwNDczLCAzMDQ3OCwgMzA0ODMsIDMwNDg2LCAzMDQ5NCwgMzA0OTksIDMwNTA4LCAzMDUxNCwgMzA1MTksIDMwNTI0LCAKKyAgICAzMDUyOSwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU1OCwgMzA1NjUsIDMwNTcyLCAzMDU3OCwgCisgICAgMzA1ODQsIDMwNTg5LCAxNjI5MCwgMzA1OTYsIDMwNjAyLCAzMDYwOSwgMzA2MTUsIDMwNjIxLCAzMDYyNiwgMzA2MzQsIAorICAgIDMwNjM5LCAxNjA2OSwgMzA2NDMsIDMwNjQ4LCAzMDY1MywgMzA2NTksIDMwNjY0LCAzMDY2OSwgMzA2NzMsIDMwNjc4LCAKKyAgICAzMDY4MywgMzA2ODksIDMwNjk0LCAzMDY5OSwgMzA3MDMsIDMwNzA4LCAzMDcxMywgMzA3MTcsIDMwNzIyLCAzMDcyNywgCisgICAgMzA3MzIsIDMwNzM2LCAzMDc0MSwgMzA3NDYsIDMwNzUxLCAzMDc1NSwgMzA3NTksIDE1MjgwLCAzMDc2MywgMzA3NzIsIAorICAgIDMwNzc4LCAzMDc4NCwgMzA3OTMsIDMwODAxLCAzMDgxMCwgMzA4MTgsIDMwODIzLCAzMDgyNywgMzA4MzQsIDMwODQwLCAKKyAgICAzMDg0NCwgMzA4NDcsIDMwODUyLCAzMDg2MSwgMzA4NjksIDMwODc0LCAxNDk1LCAzMDg4MCwgMzA4ODMsIDMwODg3LCAKKyAgICAyMjQxMSwgMjI0MTcsIDMwODkzLCAzMDg5NywgMzA5MDgsIDMwOTE5LCAzMDkzMCwgMzA5NDIsIDMwOTQ5LCAzMDk1NiwgCisgICAgMzA5NjEsIDMwOTY1LCA1OTA5LCA3NTUsIDIxMjY2LCAzMDk3MywgMzA5NzgsIDMwOTgyLCAzMDk4NywgMzA5OTEsIDMwOTk3LCAKKyAgICAzMTAwMiwgMzEwMDgsIDMxMDEzLCAzMTAxOSwgMzEwMjQsIDMxMDMwLCAzMTAzNSwgMzEwNDEsIDMxMDQ3LCAzMTA1MywgCisgICAgMzEwNTgsIDMxMDE0LCAzMTAyMCwgMzEwNjIsIDMxMDY3LCAzMTA3MywgMzEwNzgsIDMxMDg0LCAzMTA4OSwgMzEwOTUsIAorICAgIDMxMTAwLCAzMTAyNSwgMTA0MTQsIDMxMTA0LCAzMTAzNiwgMzEwNDIsIDMxMDQ4LCAyODMxLCAzNDIzLCAzMTExMCwgCisgICAgMzExMTMsIDMxMTE5LCAzMTEyNSwgMzExMzEsIDMxMTM4LCAzMTE0NCwgMzExNTAsIDMxMTU2LCAzMTE2MiwgMzExNjgsIAorICAgIDMxMTc0LCAzMTE4MCwgMzExODYsIDMxMTkyLCAzMTE5OCwgMzEyMDQsIDMxMjEwLCAzMTIxNywgMzEyMjMsIDMxMjI5LCAKKyAgICAzMTIzNSwgMzEyNDEsIDMxMjQ3LCAzMTI1MCwgMzEyNTUsIDMxMjU4LCAzMTI2NSwgMzEyNzMsIDMxMjc4LCAzMTI4MywgCisgICAgMzEyODksIDMxMjk0LCAzMTI5OSwgMzEzMDMsIDMxMzA4LCAzMTMxNCwgMzEzMTksIDMxMzI1LCAzMTMzMCwgMzEzMzYsIAorICAgIDMxMzQxLCAzMTM0NywgMzEzNTMsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg2LCAKKyAgICAzMTM5MSwgMzEzOTYsIDMxNDAyLCAzMTQwOCwgMzE0MTQsIDMxNDIwLCAzMTQyNSwgMzE0MjksIDMxNDMyLCAzMTQzOCwgCisgICAgMzE0NDQsIDMxNDUzLCAzMTQ2MSwgMzE0NjgsIDMxNDczLCAzMTQ3NywgMzE0ODEsIDMxNDg2LCAxNTEzMywgMzE0OTEsIAorICAgIDMxNDk5LCAzMTUwNSwgMzY4MywgMTM3NywgMzE1MTAsIDMxNTE0LCA4MDA1LCAzMTUyMCwgMzE1MjYsIDMxNTMzLCA4MDE0LCAKKyAgICAzMTUzNywgMzE1NDMsIDMxNTUwLCAzMTU1NiwgMzE1NjUsIDMxNTczLCAzMTU4NSwgMzE1ODksIDMxNTk2LCAzMTYwMiwgCisgICAgMzE2MDYsIDMxNjA5LCAzMTYxOCwgMzE2MjYsIDMxMDE1LCAzMTYzMSwgMzE2NDEsIDMxNjUxLCAzMTY2MSwgMzE2NjcsIAorICAgIDMxNjcyLCAzMTY4MiwgMzE2ODcsIDMxNzAwLCAzMTcxNCwgMzE3MjUsIDMxNzM3LCAzMTc0OSwgMzE3NjMsIDMxNzc2LCAKKyAgICAzMTc4OCwgMzE4MDAsIDE0NTg3LCAzMTgxNCwgMzE4MTksIDMxODI0LCAzMTgyOCwgMzE4MzIsIDMxODM2LCAxNzgwLCAKKyAgICAyNzE1OSwgMzE4NDAsIDMxODQ1LCAzMTA2MywgMzE4NTAsIDMxODUzLCAzMTg1OCwgMzE4NjMsIDMxODY4LCAzMTg3NCwgCisgICAgMzE4ODAsIDEwMDkxLCAzMTg4NSwgMzE4OTIsIDE1Njg0LCAzMTg5OCwgMzE5MDMsIDMxOTA4LCAzMTkxMiwgMzE5MTcsIAorICAgIDMxOTIyLCAzMTA2OCwgMzE5MjcsIDMxOTMyLCAzMTkzNywgMzE5NDMsIDMxMDc0LCAzMTk0OCwgMzE5NTEsIDMxOTU4LCAKKyAgICAzMTk2NiwgMzE5NzIsIDMxOTc4LCAzMTk4NCwgMzE5OTUsIDMyMDAwLCAzMjAwNywgMzIwMTQsIDMyMDIxLCAzMjAyOSwgCisgICAgMzIwMzgsIDMyMDQ3LCAzMjA1MywgMzIwNTksIDMyMDY3LCAzMTA3OSwgMzIwNzIsIDMyMDc4LCAzMjA4NCwgMzEwODUsIAorICAgIDMyMDg5LCAzMjA5NCwgMzIxMDIsIDMyMTEwLCAzMjExNiwgMzIxMjMsIDMyMTI5LCAzMjEzNiwgMzIxNDMsIDMyMTQ5LCAKKyAgICAzMjE1NywgMzIxNjcsIDMyMTc0LCAzMjE3OSwgMzIxODUsIDMyMTkwLCAzMjE5NSwgMzIyMDIsIDMyMjExLCAzMjIxOSwgCisgICAgMzIyMjQsIDMyMjMwLCAzMjIzNywgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjIsIDMyMjcxLCAyNzkzNiwgMzIyNzgsIAorICAgIDMyMjgyLCAzMjI4NywgMzIyOTYsIDMyMzAxLCAzMjMwNiwgMzIzMTEsIDEyMzk4LCAzMjMxOSwgMzIzMjQsIDMyMzI5LCAKKyAgICAzMjMzNCwgMzIzMzgsIDMyMzQzLCAzMjM0OCwgMzIzNTUsIDMyMzYwLCAzMjM2NSwgMzIzNzAsIDMxMDkwLCAyMTIwMywgCisgICAgMzIzNzYsIDI1MTksIDI0NCwgMzIzNzksIDMyMzgyLCAzMjM4NiwgMzIzOTAsIDMyNDAwLCAzMjQwOCwgMzI0MTIsIDMyNDE5LCAKKyAgICAzMjQyNiwgMzI0MzAsIDMyNDMzLCAzMjQzOSwgMzI0NDcsIDMyNDU1LCAzMjQ1OSwgMzI0NjMsIDMyNDY2LCAzMjQ3MywgCisgICAgMzI0NzcsIDMyNDgxLCAzMjQ4OCwgMzI0OTYsIDMxMDI2LCAzMjUwMywgMzI1MTEsIDEwMTUxLCA2NjAsIDMwOCwgMzI1MjMsIAorICAgIDMyNTI4LCAzMjUzMywgMzI1MzksIDMyNTQ0LCAzMjU0OSwgMzcwNCwgMzI1NTQsIDMyNTU3LCAzMjU2MiwgMzI1NjcsIAorICAgIDMyNTcyLCAzMjU3NywgMzI1ODIsIDMyNTg5LCAyMjUxMiwgMzI1OTQsIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE0LCAKKyAgICAzMjYyMCwgMzI2MjUsIDMyNjMxLCAzMTI2MSwgMzI2MzcsIDMyNjQyLCAzMjY0OCwgMzI2NTQsIDMyNjY0LCAzMjY2OSwgCisgICAgMzI2NzQsIDMyNjc4LCAzMjY4MywgMzI2ODgsIDMyNjkzLCAzMjY5OCwgMzI3MTEsIDMyNzE2LCAyMjI4OSwgMTY2OTIsIAorICAgIDM3MTAsIDMyNzIwLCAzMjcyNSwgMzI3MzAsIDMyNzM2LCAzMjc0MSwgMzI3NDYsIDMyNzUwLCAzMjc1NSwgMzI3NjAsIAorICAgIDMyNzY2LCAzMjc3MSwgMzI3NzYsIDEzODIsIDMyNzgwLCAzMjc4NSwgMzI3OTAsIDMyNzk1LCAzMjc5OSwgMzI4MDQsIAorICAgIDMyODA5LCAzMjgxNCwgMzI4MjAsIDMyODI2LCAzMjgzMSwgMzI4MzUsIDMyODM5LCAzMjg0NCwgMzI4NDksIDMyODU0LCAKKyAgICAzMjg1OCwgMzI4NjYsIDMyODcwLCAzMjg3NiwgMzI4ODAsIDMyODg3LCAxNjQ4NSwgMzEwMzcsIDMyODkzLCAzMjkwMCwgCisgICAgMzI5MDgsIDMyOTE1LCAzMjkyMSwgMzI5MzQsIDMyOTQ2LCAzMjk1MiwgMzI5NTYsIDI3NzMsIDMyOTYwLCAzMjk2NCwgCisgICAgMzI0NjgsIDMyOTczLCAzMjk4NCwgMzI5ODksIDMyOTk0LCAzMjk5OSwgMzMwMDMsIDMzMDA4LCAyMjQyMiwgMzMwMTIsIAorICAgIDMzMDE2LCAzMzAyMSwgMzEwNDMsIDIxMjg3LCAzMzAyNSwgMzMwMzAsIDMzMDM2LCAzMzA0MSwgMzMwNDUsIDMzMDQ5LCAKKyAgICAzMzA1MiwgMzMwNTYsIDMzMDYyLCAzMzA3MywgMzMwODUsIDMxMDQ5LCAzMzA5MCwgMzMwOTMsIDMzMDk3LCAzNDcsIAorICAgIDMzMTAyLCAzMzEwNywgMzMxMTIsIDMzMTE3LCAzMzEyMiwgMzMxMjcsIDMzMTMzLCAzMzEzOCwgMzMxNDMsIDMzMTQ5LCAKKyAgICAzMzE1NCwgMzMxNjAsIDMzMTY1LCAzMzE3MSwgMzMxNzYsIDMzMTgxLCAzMzE4NiwgMzMxOTEsIDMzMTk2LCAzMzIwMSwgCisgICAgMzMyMDYsIDMzMjExLCAzMzIxNywgMzMyMjIsIDMzMjI3LCAzMzIzMiwgMzMyMzcsIDMzMjQyLCAzMzI0NywgMzMyNTIsIAorICAgIDMzMjU4LCAzMzI2NCwgMzMyNjksIDMzMjc0LCAzMzI3OSwgMzMyODQsIDMzMjg5LCAzMzI5NCwgMzMyOTksIDMzMzA0LCAKKyAgICAzMzMwOSwgMzMzMTQsIDMzMzE5LCAzMzMyNCwgMzMzMjksIDMzMzM0LCAzMzMzOSwgMzMzNDQsIDMzMzQ5LCAzMzM1NCwgCisgICAgMzMzNjAsIDMxMywgMjYsIDMzMzY1LCAzMzM2OSwgMzMzNzMsIDMzMzgxLCAzMzM4NSwgMzMzODksIDMzMzkyLCAzMzM5NSwgCisgICAgMzMzOTcsIDMzNDAyLCAzMzQwNiwgMzM0MTEsIDMzNDE1LCAzMzQyMCwgMzM0MjQsIDMzNDI5LCAzMzQzMywgMzM0MzYsIAorICAgIDMzNDM4LCAzMzQ0MiwgMzM0NDcsIDMzNDUxLCAzMzQ2MiwgMzM0NjUsIDMzNDY3LCAzMzQ3MSwgMzM0ODMsIDMzNDkyLCAKKyAgICAzMzQ5NiwgMzM1MDAsIDMzNTA2LCAzMzUxMSwgMzM1MjAsIDMzNTI2LCAzMzUzMSwgMzM1MzYsIDMzNTQwLCAzMzU0NSwgCisgICAgMzM1NTIsIDMzNTU3LCAzMzU2MywgMzM1NjgsIDMzNTcyLCAzMzU3OSwgMjU3MDEsIDI1NzExLCAzMzU4MywgMzM1ODgsIAorICAgIDMzNTkzLCAzMzU5OCwgMzM2MDUsIDMzNjA5LCAzMzYxNiwgODExMywgMzM2MjIsIDMzNjMxLCAzMzYzOSwgMzM2NTQsIAorICAgIDMzNjY4LCAzMzY3NiwgMzM2ODcsIDMzNjk2LCAzMzcwMSwgNzIyNywgMzM3MTEsIDMzNzE2LCAzMzcyMSwgMzM3MjUsIAorICAgIDMzNzI4LCAzMzczMiwgMzM3MzcsIDMzNzQxLCAzMzc0OCwgMzM3NTMsIDMzNzU4LCA4OTEyLCAzMzc2OCwgMzM3NzAsIAorICAgIDMzNzczLCAzMzc3NywgMzM3ODMsIDMzNzg3LCAzMzc5MiwgMzM3OTcsIDMzODAzLCAzMzgwOCwgMzM4MTQsIDMzODE5LCAKKyAgICAzMzgyOSwgMzM4MzgsIDMzODQ2LCAzMzg1MSwgMzM4NTcsIDMzODYyLCAzMzg2OSwgMzM4NzMsIDMzODgxLCAzMzg4OCwgCisgICAgMzM5MDEsIDMzOTA5LCAzMzkxMywgMzM5MjMsIDMzOTI4LCAzMzkzMiwgMzM5NDAsIDMzOTQ4LCAzMzk1MiwgMzM5NjEsIAorICAgIDMzOTY3LCAzMzk3MiwgMzM5ODAsIDMzOTkwLCAzMzk5OSwgMzQwMDgsIDM0MDE3LCAzNDAyOCwgMzQwMzYsIDM0MDQ3LCAKKyAgICAzNDA1NiwgMzQwNjMsIDM0MDY5LCAzNDA3NCwgMzQwODUsIDM0MDkwLCAzNDA5NCwgMzQwOTcsIDM0MTAxLCAzNDEwOSwgCisgICAgMzQxMTUsIDM0MTIzLCAzNDEzMCwgMzQxMzYsIDM0MTQxLCAzNDE0NywgMjQxOCwgMzQxNTEsIDM0MTUzLCAzNDE1OCwgCisgICAgMzQxNjMsIDM0MTY4LCAzNDE3MSwgMzQxNzMsIDM0MTc3LCAzNDE4MCwgMzQxODcsIDM0MTkxLCA5ODg0LCAzNDE5NSwgCisgICAgMzQyMDEsIDM0MjExLCAzNDIxNiwgMzQyMjIsIDM0MjI2LCAzNDIzMSwgMzQyNDQsIDI2MDg3LCAzNDI1MCwgMzQyNTksIAorICAgIDE3NDYyLCAzNDI2NiwgMzQyNzUsIDMxNjQ3LCAzNDI4MywgMzQyODgsIDM0MjkyLCAzNDMwMCwgMzQzMDcsIDM0MzEyLCAKKyAgICAzNDMxNiwgMzQzMjEsIDM0MzI1LCAzNDMzMywgMzQzMzksIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzU3LCAzNDM2MiwgCisgICAgMzQzNzUsIDM0MzkxLCAyMjk3OSwgMzQ0MDgsIDM0NDIwLCAzNDQzNywgMzQ0NDksIDM0NDYzLCAyMjk5NiwgMjMwMTUsIAorICAgIDM0NDc1LCAzNDQ4NywgMjY4MCwgMzQ1MDEsIDM0NTA2LCAzNDUxMSwgMzQ1MTYsIDM0NTIwLCAzNDUyNywgMzQ1MzksIAorICAgIDM0NTQ1LCAzNDU0OCwgMzQ1NTksIDM0NTcwLCAzNDU3NSwgMzIwNjQsIDY5NSwgMzQ1NzksIDM0NTgzLCAzNDU4NywgCisgICAgMzQ1OTAsIDM0NTk1LCAzNDYwMCwgMzQ2MDYsIDM0NjExLCAzNDYxNiwgMzQ2MjIsIDM0NjI4LCAzNDYzMywgMzQ2MzcsIAorICAgIDM0NjQyLCAzNDY0NywgMzQ2NTIsIDM0NjU2LCAzNDY1OSwgMzQ2NjUsIDM0NjcwLCAzNDY3NSwgMzQ2ODAsIDM0Njg0LCAKKyAgICAzNDY4OSwgMzQ2OTUsIDM0NzAzLCAyNjMyMCwgMzQ3MDgsIDM0NzEzLCAzNDcyMCwgMzQ3MjYsIDM0NzMyLCAzNDczNywgCisgICAgMzQ3NDUsIDIyNTIxLCAzNDc1MiwgMzQ3NTcsIDM0NzYyLCAzNDc2NywgMzQ3NzEsIDM0Nzc0LCAzNDc3OSwgMzQ3ODMsIAorICAgIDM0Nzg3LCAzNDc5NCwgMzQ4MDAsIDM0ODA2LCAzNDgxMiwgMzQ4MTksIDM0ODI0LCAzNDgzMCwgMzM5NDMsIDM0ODM0LCAKKyAgICAzNDgzOCwgMzQ4NDMsIDM0ODU2LCAzNDg2MSwgMzQ4NjcsIDM0ODc1LCAzNDg4MiwgMzQ4OTAsIDM0OTAwLCAzNDkwNiwgCisgICAgMzQ5MTIsIDM0OTE4LCAzNDkyMiwgMzQ5MzEsIDM0OTM5LCAzNDk0NiwgMzQ5NTEsIDM0OTU2LCAxMDQzNywgMzQ5NjEsIAorICAgIDM0OTY5LCAzNDk3NiwgMzQ5ODIsIDM0OTkyLCAzNDk5NywgMzUwMDMsIDM1MDExLCAzNjA4LCAzNTAxOCwgMzUwMjUsIAorICAgIDM2MTQsIDM1MDI5LCAzNTAzNCwgMzUwNDUsIDM1MDUyLCAzNTA1OCwgMzUwNjcsIDM1MDcxLCA0MDE1LCAzNTA3NCwgCisgICAgMzUwODEsIDM1MDg3LCAzNTA5MywgMzUxMDEsIDM1MTExLCAyOTA0MiwgMzUxMTgsIDM1MTI2LCAzNTEzMSwgMzUxMzcsIAorICAgIDM1MTQyLCAyNTk0NywgMzUxNDgsIDM1MTU1LCAzNTE2MSwgMzUxNzAsIDIzNjYwLCAzNTE3NywgMzUxODIsIDM1MTg2LCAKKyAgICAzNTE5NCwgMzUyMDIsIDk2MDAsIDU4OTUsIDM1MjA5LCAzNTIxMywgMzUyMTUsIDM1MjE5LCAzNTIyNCwgMzUyMjYsIAorICAgIDM1MjMyLCAzNTIzNywgMzUyNDIsIDM1MjQ5LCAzMjU4NSwgMzUyNTUsIDM1MjYwLCAzNTI2NCwgMzUyNjksIDM1MjczLCAKKyAgICAzNTI4MiwgMzUyODYsIDM1MjkyLCAzNTI5OSwgMzUzMDUsIDM1MzEyLCAzNTMxNywgMzUzMjYsIDM1MzMxLCAzNTMzNSwgCisgICAgMzUzNDAsIDM1MzQ3LCAzNTM1NSwgMzUzNjMsIDM1MzY4LCAyMTM0MywgMzUzNzIsIDM1Mzc1LCAzNTM3OSwgMzUzODMsIAorICAgIDM1Mzg3LCAzNTM5MCwgMzUzOTIsIDM1NDAwLCAzNTQwNCwgMzU0MTEsIDM1NDE1LCAzNTQxOSwgMzU0MjcsIDM1NDM0LCAKKyAgICAzNTQ0NCwgMzU0NDgsIDM1NDUyLCAzNTQ2MCwgMzU0NjgsIDM1NDc0LCAzNTQ3OSwgMzU0ODgsIDEzMzUwLCAzNTQ5NCwgCisgICAgMzU1MDMsIDM1NTA4LCAzNTUxNSwgMzU1MjMsIDM1NTMxLCAzNTUzOSwgMzU1NDYsIDM1NTUzLCAzNTU2MCwgMzU1NjcsIAorICAgIDM1NTc0LCAzNTU3OSwgMzU1ODUsIDM1NjAyLCAzNTYxMCwgMzU2MjAsIDM1NjI4LCAzNTYzNSwgNDA3LCAzNTYzOSwgCisgICAgMzU2NDUsIDM1NjQ5LCAzNTY1NCwgMzM2OTIsIDM1NjYwLCAzNTY2MywgMzU2NjcsIDM1Njc1LCAzNjE5LCAzNTY4MywgCisgICAgMzU2ODksIDM1Njk1LCAzNTcwNCwgMzU3MTQsIDM1NzIxLCAzNTcyNywgMzYyNSwgMzYzMSwgMzU3MzYsIDM1NzQzLCAKKyAgICAzNTc1MSwgMzU3NTYsIDM1NzYwLCAzNTc2NywgMzU3NzUsIDM1NzgyLCAzNTc4OCwgMzU3OTcsIDM1ODA3LCAzNTgxMywgCisgICAgMzU4MjEsIDM1ODMwLCAzNTgzNywgMzU4NDUsIDM1ODUyLCAyMjAxOSwgMzU4NTYsIDM1ODYzLCAzNTg2OSwgMzU4NzksIAorICAgIDM1ODg4LCAzNTg5OSwgMzU5MDMsIDM1OTEzLCAzNTkxOSwgMzU5MjYsIDM1OTM0LCAzNTk0MywgMzU5NTIsIDM1OTYyLCAKKyAgICAzNTk3MywgMzU5ODAsIDM1OTg1LCAzNTk5MiwgMzAyOSwgMzYwMDAsIDM2MDA2LCAzNjAxMSwgMzYwMTcsIDM2MDIzLCAKKyAgICAzNjAyOCwgMzYwNDEsIDM2MDU0LCAzNjA2NywgMzYwNzQsIDM2MDgwLCAzNjA4OCwgMzYwOTYsIDM2MTAxLCAzNjEwNSwgCisgICAgMTQ2OSwgMzYxMDksIDM2MTE0LCAzNjExOSwgMzYxMjQsIDM2MTI5LCAzNjEzNSwgMzYxNDAsIDM2MTQ1LCAzNjE1MCwgCisgICAgMzYxNTUsIDM2MTYwLCAzNjE2NSwgMzYxNzAsIDM2MTc2LCAzNjE4MiwgMzYxODcsIDM2MTkyLCAzNjE5OCwgMzYyMDMsIAorICAgIDM2MjA4LCAzNjIxMywgMzYyMTksIDM2MjI0LCAzNjIyOSwgMzYyMzQsIDM2MjM5LCAzNjI0NSwgMzYyNTAsIDM2MjU1LCAKKyAgICAzNjI2MSwgMzYyNjYsIDM2MjcxLCAzNjI3NiwgMzYyODEsIDM2Mjg2LCAzNjI5MiwgMzYyOTcsIDM2MzAzLCAzNjMwOCwgCisgICAgMzYzMTQsIDM2MzE5LCAzNjMyNCwgMzYzMjksIDM2MzM1LCAzNjM0MSwgMzYzNDcsIDM2MzUzLCAzNjM1OSwgMzYzNjUsIAorICAgIDM2MzcxLCAzNjM3NywgMzYzODIsIDM2Mzg3LCAzNjM5MywgMzYzOTgsIDM2NDAzLCAzNjQwOCwgMzY0MTMsIDM2NDE4LCAKKyAgICAzNjQyMywgMzY0MjgsIDM2NDM0LCAzNjQzOSwgMzY0NDQsIDM2NDUwLCAzNjQ1NiwgMTAxLCAzNjQ2MSwgMzY0NjMsIAorICAgIDM2NDY3LCAzNjQ3MSwgMzY0NzUsIDM2NDgwLCAzNjQ4NCwgOTUyMSwgMzY0ODgsIDM2NDk0LCAxNzQxLCA2MjgwLCAzNjUwMCwgCisgICAgMzY1MDMsIDM2NTA4LCAzNjUxMiwgMzY1MTcsIDM2NTIxLCAzNjUyNSwgMzY1MzAsIDEwMjM4LCAzNjUzNCwgMzY1MzgsIAorICAgIDM2NTQyLCAzNjU0NiwgMTUzNzIsIDM2NTUxLCAzNjU1NSwgMzY1NjAsIDM2NTY1LCAzNjU3MCwgMzY1NzQsIDM2NTgxLCAKKyAgICAyNjExMSwgMzY1ODcsIDM2NTkwLCAzNjU5NCwgMzY1OTksIDM2NjA1LCAzNjYwOSwgMzY2MTcsIDM2NjIzLCAzNjYyOCwgCisgICAgMzY2MzIsIDM2NjM4LCAzNjY0MiwgMzY2NDYsIDM0NjIsIDM0NjcsIDI5MjM0LCAzNjY0OSwgMzY2NTMsIDM2NjU3LCAKKyAgICAzNjY2MSwgMzY2NjksIDM2Njc2LCAzNjY4MCwgMzY2ODcsIDM2NjkyLCAzMTcsIDM2Njk3LCAzNjcwMSwgMzY3MDcsIAorICAgIDM2NzE5LCAzNjcyNSwgMzY3MzEsIDM2NzM1LCAzNjc0MSwgMzY3NTAsIDM2NzU0LCAzNjc1OCwgMzY3NjMsIDM2NzY5LCAKKyAgICAzNjc3NCwgMzY3NzgsIDM2NzgzLCAzNjc4NywgMzY3OTEsIDM2Nzk4LCAzNjgwNCwgMzY4MDksIDM2ODI0LCAzNjgzOSwgCisgICAgMzY4NTQsIDM2ODcwLCAzNjg4OCwgMTAxODgsIDM2OTAyLCAzNjkwOSwgMzY5MTMsIDM2OTE2LCAzNjkyNSwgMzY5MzAsIAorICAgIDM2OTM0LCAzNjk0MiwgMzM4OTQsIDM2OTUwLCAzNjk1NCwgMzY5NjQsIDM2OTc1LCAyOTIwNCwgMzY5ODgsIDM2OTkyLCAKKyAgICAzNzAwMSwgMzcwMDksIDk3NzgsIDE0OTAwLCAzNzAxMywgMjI0MzQsIDM3MDE2LCAzMDE1MiwgMzcwMjEsIDk3NzcsIAorICAgIDM3MDI2LCAzNzAzMiwgMzcwMzcsIDM3MDQzLCAzNzA0OCwgMzcwNTQsIDM3MDU5LCAzNzA2NSwgMzcwNzAsIDM3MDc2LCAKKyAgICAzNzA4MiwgMzcwODgsIDM3MDkzLCAzNzA0OSwgMzcwNTUsIDM3MDYwLCAzNzA2NiwgMzcwNzEsIDM3MDc3LCAzNzA4MywgCisgICAgODEyNiwgMzg3NCwgMzcwOTcsIDM3MTA1LCAzNzEwOSwgMzcxMTIsIDM3MTE2LCAzNzEyMSwgMzcxMjYsIDM3MTMyLCAKKyAgICAzNzEzOCwgMzcxNDMsIDM3MTQ3LCAyNTk1OSwgMzcxNTEsIDM3MTU1LCAzNzE2MSwgMzcxNjUsIDkwNDIsIDM3MTc0LCAKKyAgICAzNzE4MSwgMzcxODUsIDExODY4LCAzNzE5MiwgMzcxOTgsIDM3MjAzLCAzNzIxMCwgMzcyMTcsIDM3MjI0LCAyODU1MCwgCisgICAgODA0OSwgMzcyMzEsIDM3MjM4LCAzNzI0NSwgMzcyNTEsIDM3MjU2LCAzNzI2MywgMzcyNzQsIDM3MjgwLCAzNzI4NSwgCisgICAgMzcyOTAsIDM3Mjk1LCAzNzMwMiwgMzcwNTAsIDM3MzA2LCAzNzMxNiwgMzczMjcsIDM3MzMzLCAzNzMzOCwgMzczNDMsIAorICAgIDM3MzQ4LCAzNzM1MywgMzczNTgsIDM3MzYyLCAzNzM2NiwgMzczNzIsIDM3MzgwLCAyMzE5LCA4NjUsIDEwMjU0LCAxMDI2NiwgCisgICAgMTAyNzEsIDEwMjc3LCAzNzM4OSwgMTAyODIsIDEwMjg3LCAxMDI5MywgMzczOTQsIDM3NDA0LCAzNzQwOCwgMTAyOTgsIAorICAgIDM3NDEzLCAxNjg5MCwgMzc0MTYsIDM3NDIxLCAzNzQyNSwgMzc0MzAsIDM3NDM1LCAzNzQ0MiwgMzc0NDksIDM3NDUzLCAKKyAgICAzNzQ1NiwgMzc0NjQsIDEwMjAxLCAzNzQ3MSwgMzc0NzQsIDM3NDgwLCAzNzQ5MCwgNTkyOSwgMzc0OTksIDM3NTAzLCAKKyAgICAzNzUxMSwgMzc1MTUsIDM3NTI1LCAzNzUzMSwgMzc1NDIsIDM3NTQ4LCAzNzU1NCwgMzc1NTksIDM3NTY1LCAzNzU3MSwgCisgICAgMzc1NzcsIDM3NTgyLCAzNzU4NSwgMzc1OTIsIDM3NTk4LCAzNzYwMywgMzc2MTAsIDM3NjE3LCAzNzYyMSwgMzc2MzEsIAorICAgIDM3NjQ0LCAzNzY1MywgMzc2NjIsIDM3NjczLCAzNzY4NiwgMzc2OTcsIDM3NzA2LCAzNzcxNywgMzc3MjIsIDM3NzMxLCAKKyAgICAzNzczNiwgMTAzMDMsIDM3NzQyLCAzNzc0OSwgMzc3NTcsIDM3NzYyLCAzNzc2NiwgMzc3NzMsIDM3NzgwLCAzODI5LCAxNiwgCisgICAgMzc3ODQsIDM3Nzg5LCAxNjc0NCwgMzc3OTMsIDM3Nzk2LCAzNzc5OSwgMjgwNTYsIDM3ODAzLCAyODU1OSwgMzc4MTEsIAorICAgIDM3ODE1LCAzNzgxOSwgMzc4MjIsIDM3ODI4LCAzNzA3MiwgMzc4MzQsIDM3ODQyLCAzNzg0OCwgMzc4NTUsIDI4MDM5LCAKKyAgICAzNzg1OSwgMjgyMzMsIDM3ODYzLCAzNzg3MiwgMzc4NzgsIDM3ODg0LCAzNzg4OSwgMzc4OTMsIDM3ODk5LCAzNzkwMywgCisgICAgMzc5MTEsIDM3OTE5LCAyNjE3NywgMzc5MjUsIDM3OTMyLCAzNzkzOCwgMzc5NDMsIDM3OTQ4LCAzNzk1MiwgMzc5NTgsIAorICAgIDM3OTYzLCAzNzk2OSwgNDA1NiwgNzkxLCAzNzk3NiwgMzc5ODAsIDM3OTgzLCAxNTI2MiwgMzc5OTUsIDM1ODI2LCAzODAwNiwgCisgICAgMzgwMDksIDM4MDE2LCAzODAyMCwgMzgwMjYsIDM4MDMwLCAzODAzNiwgMzgwNDEsIDM4MDQ3LCAzODA1MiwgMzgwNTcsIAorICAgIDM4MDYxLCAzODA2NSwgMzgwNzAsIDM4MDc1LCAzODA4NSwgMzgwOTEsIDM4MTA0LCAzODExMCwgMzgxMTYsIDM4MTIzLCAKKyAgICAzODEyOCwgMzgxMzQsIDM4MTM5LCAxNjYzMCwgMTQ3MiwgMTAxOSwgMzExOTMsIDMxMTk5LCAzODE0NCwgMzEyMDUsIAorICAgIDMxMjE4LCAzMTIyNCwgMzEyMzAsIDM4MTUwLCAzMTIzNiwgMzEyNDIsIDM4MTU2LCAzODE2MiwgMjIsIDM4MTcwLCAzODE3NywgCisgICAgMzgxODEsIDM4MTg1LCAzODE5MywgMzE5NTMsIDM4MTk3LCAzODIwMSwgMzgyMDgsIDM4MjEzLCAzODIxNywgMzgyMjIsIAorICAgIDM4MjI4LCAzODIzMywgMzgyMzksIDM4MjQ0LCAzODI0OCwgMzgyNTIsIDM4MjU2LCAzODI2MSwgMzgyNjUsIDM4MjcwLCAKKyAgICAzODI3NCwgMzgyODEsIDM4Mjg2LCAzODI5MCwgMzgyOTUsIDM4Mjk5LCAzODMwNCwgMzgzMDgsIDM4MzEzLCAzODMxOSwgCisgICAgMTU0ODIsIDE1NDg3LCAzODMyNCwgMzgzMjgsIDM4MzMxLCAzODMzNSwgMjExNzAsIDM4MzQwLCAzODM0NCwgMzgzNTAsIAorICAgIDM4MzU3LCAzODM2MiwgMzgzNzIsIDM4Mzc3LCAzODM4NSwgMzgzODksIDM4MzkyLCAzMTk2OCwgMzgzOTYsIDQxMDksIAorICAgIDM4NDAxLCAzODQwNiwgMzg0MTAsIDM4NDE1LCAzODQxOSwgMzg0MjQsIDEzMzY4LCAzODQzNSwgMzg0MzksIDM4NDQyLCAKKyAgICAzODQ0NywgMzg0NTEsIDM4NDU1LCAzODQ1OCwgMzg0NjIsIDgxNDUsIDEzMzg0LCAzODQ2NSwgMzg0NjgsIDM4NDc0LCAKKyAgICAzODQ3OSwgMzg0ODUsIDM4NDkwLCAzODQ5NiwgMzg1MDEsIDM4NTA3LCAzODUxMiwgMzg1MTgsIDM4NTI0LCAzODUzMCwgCisgICAgMzg1MzUsIDM4NTM5LCAzODU0MywgMzg1NTIsIDM4NTY4LCAzODU4NCwgMzg1OTQsIDI3OTQ2LCAzODYwMSwgMzg2MDUsIAorICAgIDM4NjEwLCAzODYxNSwgMzg2MTksIDM4NjIzLCAzNTk0NywgMzg2MjksIDM4NjM0LCAzODYzOCwgMzg2NDUsIDM4NjUwLCAKKyAgICAzODY1NCwgMzg2NTgsIDI2OTc5LCAzODY2NCwgMjE0MzgsIDM4NjY5LCAzODY3NiwgMzg2ODQsIDM4NjkwLCAzODY5NywgCisgICAgMzg3MDUsIDM4NzExLCAzODcxNSwgMzg3MjEsIDM4NzI5LCAzODczMywgMzg3NDIsIDk1MDIsIDM4NzUwLCAzODc1NCwgCisgICAgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIDM4NzgzLCAzODc4NiwgMzg3OTAsIDM4NzkzLCAzODc5NywgMzg4MDQsIAorICAgIDM4ODA5LCAzODgxNSwgMjYzOTgsIDMxMjU2LCAzODgxOSwgMzg4MjYsIDM4ODMyLCAzODgzOCwgMzg4NDMsIDM4ODQ2LCAKKyAgICAzODg0OCwgMzg4NTUsIDM4ODYyLCAzODg2OCwgMzg4NzIsIDM4ODc1LCAzODg3OSwgMzg4ODMsIDM4ODg3LCAzODg5MiwgCisgICAgMzg4OTYsIDM4OTAwLCAzODkwMywgMzg5MDcsIDM4OTIxLCAyMzA0NSwgMzg5NDAsIDM4OTUzLCAzODk2NiwgMzg5NzksIAorICAgIDIzMDYzLCAzODk5NCwgMTA0OTAsIDM5MDA5LCAzOTAxNSwgMzkwMTksIDM5MDIzLCAzOTAzMCwgMzkwMzUsIDM5MDM5LCAKKyAgICAzOTA0NiwgMzkwNTIsIDM5MDU3LCAzOTA2MywgMzkwNzMsIDM5MDg1LCAzOTA5NiwgMzkxMDEsIDM5MTA4LCAzOTExMiwgCisgICAgMzkxMTYsIDM5MTE5LCAxNTg3OCwgMzY3NywgMzkxMjcsIDE1NTA5LCAzOTE0MCwgMzkxNDcsIDM5MTUxLCAzOTE1NSwgCisgICAgMzkxNjAsIDM5MTY1LCAzOTE3MSwgMzkxNzUsIDM5MTc5LCAzOTE4MiwgNzc0MiwgMTU1MjAsIDM5MTg3LCAzOTE5MSwgCisgICAgMzkxOTcsIDM5MjA2LCAzOTIxMSwgMzkyMTgsIDM1ODAzLCAzOTIyNCwgMzkyMjksIDM5MjMzLCAzOTIzOCwgMzkyNDUsIAorICAgIDM5MjQ5LCAzOTI1MiwgMzkyNTYsIDM5MjYxLCAxNDU1MiwgMzkyNjgsIDM5Mjc1LCAxMDY2LCAzOTI3OSwgMzkyODQsIAorICAgIDM5Mjg5LCAzOTI5NSwgMzkzMDAsIDM5MzA1LCAzOTMwOSwgMzkzMTksIDM5MzI0LCAzOTMzMCwgMzkzMzUsIDM5MzQxLCAKKyAgICAzOTM0NiwgMzkzNTIsIDM5MzYyLCAzOTM2NywgMzkzNzIsIDM5Mzc2LCA3MjI5LCA3MjQxLCAzOTM4MSwgMzkzODQsIAorICAgIDM5MzkxLCAzOTM5NywgMzQwNTksIDM0MDY2LCAzOTQwNiwgMzk0MTAsIDMyMDE2LCAzOTQxOCwgMzk0MjksIDM5NDM3LCAKKyAgICAzNTk5NSwgMzk0NDQsIDM5NDQ5LCAzOTQ1NCwgMzk0NjUsIDM5NDcyLCAzOTQ4MywgMzIwNDAsIDIxNDQ0LCAzOTQ5MSwgCisgICAgNzM1LCAzOTQ5NiwgMzk1MDIsIDI4MDMwLCAzOTUwOCwgMzk1MTMsIDM5NTIzLCAzOTUzMiwgMzk1MzksIDM5NTQ1LCAKKyAgICAzOTU0OSwgMzk1NTIsIDM5NTU5LCAzOTU2NSwgMzk1NzIsIDM5NTc4LCAzOTU4OCwgMzk1OTYsIDM5NjAyLCAzOTYwOCwgCisgICAgMzk2MTMsIDM5NjE3LCAzOTYyNCwgMzk2MzAsIDM5NjM3LCAzODg4OCwgNTM1LCAxMzgwNSwgMzk2NDMsIDM5NjQ4LCAKKyAgICAzOTY1MSwgMzk2NTcsIDM5NjY1LCAxMzk2LCAzOTY3MCwgMzk2NzQsIDM5Njc5LCAzOTY4NiwgMzk2OTIsIDM5Njk2LCAKKyAgICAzOTcwMCwgMzk3MDUsIDM5NzE0LCAzOTcyMSwgMzk3MzEsIDM5NzM3LCAyODA3NCwgMzk3NTQsIDM5NzYzLCAzOTc3MSwgCisgICAgMzk3NzcsIDM5NzgyLCAzOTc4OSwgMzk3OTUsIDM5ODAzLCAzOTgxMiwgMzk4MjAsIDM5ODI0LCAzOTgyOSwgMzk4MzcsIAorICAgIDMyMDQ5LCAzOTg0MywgMzk4NjIsIDE1ODExLCAzOTg3NiwgMzk4OTIsIDM5OTA2LCAzOTkxMiwgMzk5MTcsIDM5OTIyLCAKKyAgICAzOTkyNywgMzk5MzMsIDMyMDU1LCAzOTkzOCwgMzk5NDUsIDM5OTUwLCAzOTk1NCwgMzQ1LCAyOTM2LCAzOTk2MSwgMzk5NjYsIAorICAgIDM5OTcxLCAyNzMwNSwgMzk3OTIsIDM5OTc1LCAzOTk4MCwgMzk5ODgsIDM5OTkyLCAzOTk5NSwgNDAwMDEsIDQwMDA3LCAKKyAgICA0MDAxMSwgMjgxMjksIDQwMDE0LCA0MDAxOSwgNDAwMjMsIDQwMDI2LCA0MDAzMSwgNDAwMzUsIDQwMDQwLCA0MDA0NSwgCisgICAgNDAwNDksIDQwMDU0LCA0MDA1OCwgNDAwNjIsIDIxMTY2LCAyMTE3NywgNDAwNjYsIDQwMDcxLCA0MDA3NywgMjY5MzYsIAorICAgIDQwMDgyLCA0MDA4NiwgMjEyNTMsIDE2MDU5LCA0MDA4OSwgNDAwOTQsIDQwMDk5LCA0MDEwNCwgNDAxMDksIDQwMTE0LCAKKyAgICA0MDExOSwgNDAxMjQsIDQ0NywgNDMsIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMzEzMDAsIDQwMTI5LCAKKyAgICAzMTMwNCwgNDAxMzMsIDQwMTM3LCA0MDE0MSwgMzEzMDksIDMxMzE1LCA0MDE1NSwgMzEzMjYsIDMxMzMxLCA0MDE2MywgCisgICAgNDAxNjgsIDMxMzM3LCA0MDE3MywgNDAxNzgsIDQwMTgzLCA0MDE4OCwgNDAxOTQsIDQwMjAwLCA0MDIwNiwgMzEzNTQsIAorICAgIDQwMjE5LCA0MDIyNSwgMzEzNTgsIDQwMjI5LCAzMTM2MywgNDAyMzQsIDMxMzY4LCAzMTM3MywgNDAyMzcsIDQwMjQyLCAKKyAgICA0MDI0NiwgMzA5MjMsIDQwMjUyLCAxMzU5MiwgNDAyNTksIDQwMjY0LCAzMTM3OCwgNDAyNjgsIDQwMjczLCA0MDI3OCwgCisgICAgNDAyODMsIDQwMjg3LCA0MDI5MiwgNDAyOTcsIDQwMzAzLCA0MDMwOCwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzAsIAorICAgIDQwMzM0LCA0MDMzOSwgNDAzNDQsIDQwMzQ5LCA0MDM1MywgNDAzNTgsIDQwMzYzLCA0MDM2OCwgNDAzNzQsIDQwMzgwLCAKKyAgICA0MDM4NiwgNDAzOTEsIDQwMzk1LCA0MDQwMCwgNDA0MDQsIDMxMzgyLCAzMTM4NywgMzEzOTIsIDQwNDA4LCA0MDQxMiwgCisgICAgNDA0MTYsIDMxMzk3LCAzMTQwMywgMzE0MDksIDMxNDIxLCA0MDQyOCwgMjU5OTYsIDQwNDMyLCA0MDQzNiwgNDA0NDEsIAorICAgIDQwNDQ2LCA0MDQ1MSwgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgNDA0NzQsIDQwNDc5LCA0MDQ4NCwgNDA0ODgsIDQwNDkyLCAKKyAgICA0MDQ5NSwgNDA1MDMsIDMxNDY5LCA0MDUwOCwgMTQ3OSwgNDA1MTQsIDQwNTIyLCA0MDUzMSwgNDA1MzUsIDQwNTM5LCAKKyAgICA0MDU0NywgNDA1NTMsIDQwNTYxLCA0MDU3NywgNDA1ODEsIDQwNTg1LCA0MDU5MCwgNDA2MDUsIDMxNTA2LCAxNzQ5LCAKKyAgICAxMjA0OCwgNDA2MDksIDEzNzgsIDQwNjIxLCA0MDYyMiwgNDA2MzAsIDQwNjM3LCA0MDY0MiwgNDA2NDksIDQwNjU0LCAKKyAgICA5MzcyLCAxMTE0LCAxMDMyNSwgNDA2NjEsIDQwNjY2LCA0MDY2OSwgNDA2NzIsIDQwNjgxLCAxMjg2LCA0MDY4NiwgMzkwMzYsIAorICAgIDQwNjkzLCA0MDY5OCwgMjI0ODYsIDI1NTcsIDQwNzAyLCAxMDczNCwgNDA3MTIsIDQwNzE4LCAyMzM3LCAyMzQ3LCA0MDcyNywgCisgICAgNDA3MzYsIDQwNzQ2LCA0MDc1NywgMzI5MywgMzQyMTIsIDEwMzc3LCAzODA3LCAxNjY2OCwgMTI5MSwgNDA3NjIsIDQwNzcwLCAKKyAgICA0MDc3NywgNDA3ODIsIDQwNzg2LCA0MDc5MCwgMjM4NTgsIDEwNDA0LCA0MDc5OCwgNDA4MDcsIDQwODE2LCA0MDgyNCwgCisgICAgNDA4MzEsIDQwODQyLCA0MDg0NywgNDA4NjAsIDQwODczLCA0MDg4NSwgNDA4OTcsIDQwOTA5LCA0MDkyMiwgNDA5MzMsIAorICAgIDQwOTQ0LCA0MDk1NCwgNDA5NjIsIDQwOTcwLCA0MDk4MiwgNDA5OTQsIDQxMDA1LCA0MTAxNCwgNDEwMjIsIDQxMDI5LCAKKyAgICA0MTA0MSwgNDEwNDgsIDQxMDU3LCA0MTA2NCwgNDEwNzcsIDQxMDgyLCA0MTA5MiwgNDEwOTcsIDQxMTAzLCA0MTEwOCwgCisgICAgMzcxODIsIDQxMTEyLCA0MTExOSwgNDExMjMsIDQxMTMwLCA0MTEzOCwgMjUxOCwgNDExNDUsIDQxMTU2LCA0MTE2NiwgCisgICAgNDExNzUsIDQxMTgzLCA0MTE5MywgNDEyMDEsIDQxMjExLCA0MTIyMCwgNDEyMjUsIDQxMjMxLCA0MTIzNywgMzcwOSwgCisgICAgNDEyNDgsIDQxMjU4LCA0MTI2NywgNDEyNzYsIDQxMjg2LCA0MTI5NCwgNDEzMDMsIDQxMzA4LCA0MTMxMywgNDEzMTgsIAorICAgIDE3MDUsIDM3LCA0MTMyNiwgNDEzMzQsIDQxMzQ1LCA0MTM1NiwgMTYzNDMsIDQxMzY2LCA0MTM3MCwgNDEzNzcsIDQxMzgzLCAKKyAgICA0MTM4OCwgNDEzOTIsIDQxNDAzLCA0MTQxMywgNDE0MjIsIDQxNDMzLCAxNjcxNywgMTY3MjIsIDQxNDM4LCA0MTQ0NywgCisgICAgNDE0NTIsIDQxNDYyLCA0MTQ2NywgNDE0NzUsIDQxNDgzLCA0MTQ5MCwgNDE0OTYsIDcwNzgsIDIyOCwgNDE1MDAsIDQxNTA2LCAKKyAgICA0MTUxMSwgNDE1MTQsIDIxMTcsIDM5MTUyLCA0MTUyMiwgNDE1MjYsIDQxNTI5LCAxNTEyLCA0MTUzNSwgMTM5NjcsIDEyOTYsIAorICAgIDQxNTQwLCA0MTU1MywgNDE1NjcsIDI2NDMsIDQxNTg1LCA0MTU5NywgNDE2MDksIDI2NTcsIDI2NzQsIDQxNjIzLCA0MTYzNiwgCisgICAgMjY4OSwgNDE2NTAsIDQxNjYyLCAyNzA0LCA0MTY3NiwgMTMwMiwgMTMwOCwgMTMxNCwgMTA2NTIsIDQxNjgxLCA0MTY4NiwgCisgICAgNDE2OTEsIDQxNjk1LCA0MTcxMCwgNDE3MjUsIDQxNzQwLCA0MTc1NSwgNDE3NzAsIDQxNzg1LCA0MTgwMCwgNDE4MTUsIAorICAgIDQxODMwLCA0MTg0NSwgNDE4NjAsIDQxODc1LCA0MTg5MCwgNDE5MDUsIDQxOTIwLCA0MTkzNSwgNDE5NTAsIDQxOTY1LCAKKyAgICA0MTk4MCwgNDE5OTUsIDQyMDEwLCA0MjAyNSwgNDIwNDAsIDQyMDU1LCA0MjA3MCwgNDIwODUsIDQyMTAwLCA0MjExNSwgCisgICAgNDIxMzAsIDQyMTQ1LCA0MjE2MCwgNDIxNzUsIDQyMTkwLCA0MjIwNSwgNDIyMjAsIDQyMjM1LCA0MjI1MCwgNDIyNjUsIAorICAgIDQyMjgwLCA0MjI5NSwgNDIzMTAsIDQyMzI1LCA0MjM0MCwgNDIzNTUsIDQyMzcwLCA0MjM4NSwgNDI0MDAsIDQyNDE1LCAKKyAgICA0MjQzMCwgNDI0NDUsIDQyNDYwLCA0MjQ3NSwgNDI0OTAsIDQyNTA1LCA0MjUyMCwgNDI1MzUsIDQyNTUwLCA0MjU2NSwgCisgICAgNDI1ODAsIDQyNTk1LCA0MjYxMCwgNDI2MjUsIDQyNjQwLCA0MjY1NSwgNDI2NzAsIDQyNjg1LCA0MjcwMCwgNDI3MTUsIAorICAgIDQyNzMwLCA0Mjc0NSwgNDI3NjAsIDQyNzc1LCA0Mjc5MCwgNDI4MDUsIDQyODIwLCA0MjgzNSwgNDI4NTAsIDQyODY1LCAKKyAgICA0Mjg4MCwgNDI4OTUsIDQyOTEwLCA0MjkyNSwgNDI5NDAsIDQyOTU1LCA0Mjk3MCwgNDI5ODUsIDQzMDAwLCA0MzAxNSwgCisgICAgNDMwMzAsIDQzMDQ1LCA0MzA2MCwgNDMwNzUsIDQzMDkwLCA0MzEwNSwgNDMxMjAsIDQzMTM1LCA0MzE1MCwgNDMxNjUsIAorICAgIDQzMTgwLCA0MzE5NSwgNDMyMTAsIDQzMjI1LCA0MzI0MCwgNDMyNTUsIDQzMjcwLCA0MzI4NSwgNDMzMDAsIDQzMzE1LCAKKyAgICA0MzMzMCwgNDMzNDUsIDQzMzYwLCA0MzM3NSwgNDMzOTAsIDQzNDA1LCA0MzQyMCwgNDM0MzUsIDQzNDUwLCA0MzQ2NSwgCisgICAgNDM0ODAsIDQzNDk1LCA0MzUxMCwgNDM1MjUsIDQzNTQwLCA0MzU1NSwgNDM1NzAsIDQzNTg1LCA0MzYwMCwgNDM2MTUsIAorICAgIDQzNjMwLCA0MzY0NSwgNDM2NjAsIDQzNjc1LCA0MzY5MCwgNDM3MDUsIDQzNzIwLCA0MzczNSwgNDM3NTAsIDQzNzY1LCAKKyAgICA0Mzc4MCwgNDM3OTUsIDQzODEwLCA0MzgyNSwgNDM4NDAsIDQzODU1LCA0Mzg3MCwgNDM4ODUsIDQzOTAwLCA0MzkxNSwgCisgICAgNDM5MzAsIDQzOTQ1LCA0Mzk2MCwgNDM5NzUsIDQzOTkwLCA0NDAwNSwgNDQwMjAsIDQ0MDM1LCA0NDA1MCwgNDQwNjUsIAorICAgIDQ0MDgwLCA0NDA5NSwgNDQxMTAsIDQ0MTI1LCA0NDE0MCwgNDQxNTUsIDQ0MTcwLCA0NDE4NSwgNDQyMDAsIDQ0MjE1LCAKKyAgICA0NDIzMCwgNDQyNDUsIDQ0MjYwLCA0NDI3NSwgNDQyOTAsIDQ0MzA1LCA0NDMyMCwgNDQzMzUsIDQ0MzUwLCA0NDM2NSwgCisgICAgNDQzODAsIDQ0Mzk1LCA0NDQxMCwgNDQ0MjUsIDQ0NDQwLCA0NDQ1NSwgNDQ0NzAsIDQ0NDg1LCA0NDUwMCwgNDQ1MTUsIAorICAgIDQ0NTMwLCA0NDU0NSwgNDQ1NjAsIDQ0NTc1LCA0NDU5MCwgNDQ2MDUsIDQ0NjIwLCA0NDYzNSwgNDQ2NTAsIDQ0NjY1LCAKKyAgICA0NDY4MCwgNDQ2OTUsIDQ0NzEwLCA0NDcyNSwgNDQ3NDAsIDQ0NzU1LCA0NDc3MCwgNDQ3ODUsIDQ0ODAwLCA0NDgxNSwgCisgICAgNDQ4MzAsIDQ0ODQ1LCA0NDg2MCwgNDQ4NzUsIDQ0ODkwLCA0NDkwNSwgNDQ5MjAsIDQ0OTM1LCA0NDk1MCwgNDQ5NjUsIAorICAgIDQ0OTgwLCA0NDk5NSwgNDUwMTAsIDQ1MDI1LCA0NTA0MCwgNDUwNTUsIDQ1MDcwLCA0NTA4NSwgNDUxMDAsIDQ1MTE1LCAKKyAgICA0NTEzMCwgNDUxNDUsIDQ1MTYwLCA0NTE3NSwgNDUxOTAsIDQ1MjA1LCA0NTIyMCwgNDUyMzUsIDQ1MjUwLCA0NTI2NSwgCisgICAgNDUyODAsIDQ1Mjk1LCA0NTMxMCwgNDUzMjUsIDQ1MzQwLCA0NTM1NSwgNDUzNzAsIDQ1Mzg1LCA0NTQwMCwgNDU0MTUsIAorICAgIDQ1NDMwLCA0NTQ0NSwgNDU0NjAsIDQ1NDc1LCA0NTQ5MCwgNDU1MDUsIDQ1NTIwLCA0NTUzNSwgNDU1NTAsIDQ1NTY1LCAKKyAgICA0NTU4MCwgNDU1OTUsIDQ1NjEwLCA0NTYyNSwgNDU2NDAsIDQ1NjU1LCA0NTY3MCwgNDU2ODUsIDQ1NzAwLCA0NTcxNSwgCisgICAgNDU3MzAsIDQ1NzQ1LCA0NTc2MCwgNDU3NzUsIDQ1NzkwLCA0NTgwNSwgNDU4MjAsIDQ1ODM1LCA0NTg1MCwgNDU4NjUsIAorICAgIDQ1ODgwLCA0NTg5NSwgNDU5MTAsIDQ1OTI1LCA0NTk0MCwgNDU5NTUsIDQ1OTcwLCA0NTk4NSwgNDYwMDAsIDQ2MDE1LCAKKyAgICA0NjAzMCwgNDYwNDUsIDQ2MDYwLCA0NjA3NSwgNDYwOTAsIDQ2MTA1LCA0NjEyMCwgNDYxMzUsIDQ2MTUwLCA0NjE2NSwgCisgICAgNDYxODAsIDQ2MTk1LCA0NjIxMCwgNDYyMjUsIDQ2MjQwLCA0NjI1NSwgNDYyNzAsIDQ2Mjg1LCA0NjMwMCwgNDYzMTUsIAorICAgIDQ2MzMwLCA0NjM0NSwgNDYzNjAsIDQ2Mzc1LCA0NjM5MCwgNDY0MDUsIDQ2NDIwLCA0NjQzNSwgNDY0NTAsIDQ2NDY1LCAKKyAgICA0NjQ4MCwgNDY0OTUsIDQ2NTEwLCA0NjUyNSwgNDY1NDAsIDQ2NTU1LCA0NjU3MCwgNDY1ODUsIDQ2NjAwLCA0NjYxNSwgCisgICAgNDY2MzAsIDQ2NjQ1LCA0NjY2MCwgNDY2NzUsIDQ2NjkwLCA0NjcwNSwgNDY3MjAsIDQ2NzM1LCA0Njc1MCwgNDY3NjUsIAorICAgIDQ2NzgwLCA0Njc5NSwgNDY4MTAsIDQ2ODI1LCA0Njg0MCwgNDY4NTUsIDQ2ODcwLCA0Njg4NSwgNDY5MDAsIDQ2OTE1LCAKKyAgICA0NjkzMCwgNDY5NDUsIDQ2OTYwLCA0Njk3NSwgNDY5OTAsIDQ3MDA1LCA0NzAyMCwgNDcwMzUsIDQ3MDUwLCA0NzA2NSwgCisgICAgNDcwODAsIDQ3MDk1LCA0NzExMCwgNDcxMjUsIDQ3MTQwLCA0NzE1NSwgNDcxNzAsIDQ3MTg1LCA0NzIwMCwgNDcyMTUsIAorICAgIDQ3MjMwLCA0NzI0NSwgNDcyNjAsIDQ3Mjc1LCA0NzI5MCwgNDczMDUsIDQ3MzIwLCA0NzMzNSwgNDczNTAsIDQ3MzY1LCAKKyAgICA0NzM4MCwgNDczOTUsIDQ3NDEwLCA0NzQyNSwgNDc0NDAsIDQ3NDU1LCA0NzQ3MCwgNDc0ODUsIDQ3NTAwLCA0NzUxNSwgCisgICAgNDc1MzAsIDQ3NTQ1LCA0NzU2MCwgNDc1NzUsIDQ3NTkwLCA0NzYwNSwgNDc2MjAsIDQ3NjM1LCA0NzY1MCwgNDc2NjUsIAorICAgIDQ3NjgwLCA0NzY5NSwgNDc3MTAsIDQ3NzI1LCA0Nzc0MCwgNDc3NTUsIDQ3NzcwLCA0Nzc4NSwgNDc4MDAsIDQ3ODE1LCAKKyAgICA0NzgzMCwgNDc4NDUsIDQ3ODYwLCA0Nzg3NSwgNDc4OTAsIDQ3OTA1LCA0NzkyMCwgNDc5MzUsIDQ3OTUwLCA0Nzk2NSwgCisgICAgNDc5ODAsIDQ3OTk1LCA0ODAxMCwgNDgwMjUsIDQ4MDQwLCA0ODA1NSwgNDgwNzAsIDQ4MDg1LCA0ODEwMCwgNDgxMTUsIAorICAgIDQ4MTMwLCA0ODE0NSwgNDgxNjAsIDQ4MTc1LCA0ODE5MCwgNDgyMDUsIDQ4MjIwLCA0ODIzNSwgNDgyNTAsIDQ4MjY1LCAKKyAgICA0ODI4MCwgNDgyOTUsIDQ4MzEwLCA0ODMyNSwgNDgzNDAsIDQ4MzU1LCA0ODM3MCwgNDgzODUsIDQ4NDAwLCA0ODQxNSwgCisgICAgNDg0MzAsIDQ4NDQ1LCA0ODQ2MCwgNDg0NzUsIDQ4NDkwLCA0ODUwNSwgNDg1MjAsIDQ4NTM1LCA0ODU1MCwgNDg1NjUsIAorICAgIDQ4NTgwLCA0ODU5NSwgNDg2MTAsIDQ4NjI1LCA0ODY0MCwgNDg2NTUsIDQ4NjcwLCA0ODY4NSwgNDg3MDAsIDQ4NzE1LCAKKyAgICA0ODczMCwgNDg3NDUsIDQ4NzYwLCA0ODc3NSwgNDg3OTAsIDQ4ODA1LCA0ODgyMCwgNDg4MzUsIDQ4ODUwLCA0ODg2NSwgCisgICAgNDg4ODAsIDQ4ODk1LCA0ODkxMCwgNDg5MjUsIDQ4OTQwLCA0ODk1NSwgNDg5NzAsIDQ4OTg1LCA0OTAwMCwgNDkwMTUsIAorICAgIDQ5MDMwLCA0OTA0NSwgNDkwNjAsIDQ5MDc1LCA0OTA5MCwgNDkxMDUsIDQ5MTIwLCA0OTEzNSwgNDkxNTAsIDQ5MTY1LCAKKyAgICA0OTE4MCwgNDkxOTUsIDQ5MjEwLCA0OTIyNSwgNDkyNDAsIDQ5MjU1LCA0OTI3MCwgNDkyODUsIDQ5MzAwLCA0OTMxNSwgCisgICAgNDkzMzAsIDQ5MzQ1LCA0OTM2MCwgNDkzNzUsIDQ5MzkwLCA0OTQwNSwgNDk0MjAsIDQ5NDM1LCA0OTQ1MCwgNDk0NjUsIAorICAgIDQ5NDgwLCA0OTQ5NSwgNDk1MTEsIDQ5NTI3LCA0OTU0MywgNDk1NTksIDQ5NTc1LCA0OTU5MSwgNDk2MDcsIDQ5NjIzLCAKKyAgICA0OTYzOSwgNDk2NTUsIDQ5NjcxLCA0OTY4NywgNDk3MDMsIDQ5NzE5LCA0OTczNSwgNDk3NTEsIDQ5NzY3LCA0OTc4MywgCisgICAgNDk3OTksIDQ5ODE1LCA0OTgzMSwgNDk4NDcsIDQ5ODYzLCA0OTg3OSwgNDk4OTUsIDQ5OTExLCA0OTkyNywgNDk5NDMsIAorICAgIDQ5OTU5LCA0OTk3NSwgNDk5OTEsIDUwMDA3LCA1MDAyMywgNTAwMzksIDUwMDU1LCA1MDA3MSwgNTAwODcsIDUwMTAzLCAKKyAgICA1MDExOSwgNTAxMzUsIDUwMTUxLCA1MDE2NywgNTAxODMsIDUwMTk5LCA1MDIxNSwgNTAyMzEsIDUwMjQ3LCA1MDI2MywgCisgICAgNTAyNzksIDUwMjk1LCA1MDMxMSwgNTAzMjcsIDUwMzQzLCA1MDM1OSwgNTAzNzUsIDUwMzkxLCA1MDQwNywgNTA0MjMsIAorICAgIDUwNDM5LCA1MDQ1NSwgNTA0NzEsIDUwNDg3LCA1MDUwMywgNTA1MTksIDUwNTM1LCA1MDU1MSwgNTA1NjcsIDUwNTgzLCAKKyAgICA1MDU5OSwgNTA2MTUsIDUwNjMxLCA1MDY0NywgNTA2NjMsIDUwNjc5LCA1MDY5NSwgNTA3MTEsIDUwNzI3LCA1MDc0MywgCisgICAgNTA3NTksIDUwNzc1LCA1MDc5MSwgNTA4MDcsIDUwODIzLCA1MDgzOSwgNTA4NTUsIDUwODcxLCA1MDg4NywgNTA5MDMsIAorICAgIDUwOTE5LCA1MDkzNSwgNTA5NTEsIDUwOTY3LCA1MDk4MywgNTA5OTksIDUxMDE1LCA1MTAzMSwgNTEwNDcsIDUxMDYzLCAKKyAgICA1MTA3OSwgNTEwOTUsIDUxMTExLCA1MTEyNywgNTExNDMsIDUxMTU5LCA1MTE3NSwgNTExOTEsIDUxMjA3LCA1MTIyMywgCisgICAgNTEyMzksIDUxMjU1LCA1MTI3MSwgNTEyODcsIDUxMzAzLCA1MTMxOSwgNTEzMzUsIDUxMzUxLCA1MTM2NywgNTEzODMsIAorICAgIDUxMzk5LCA1MTQxNSwgNTE0MzEsIDUxNDQ3LCA1MTQ2MywgNTE0NzksIDUxNDk1LCA1MTUxMSwgNTE1MjcsIDUxNTQzLCAKKyAgICA1MTU1OSwgNTE1NzUsIDUxNTkxLCA1MTYwNywgNTE2MjMsIDUxNjM5LCA1MTY1NSwgNTE2NzEsIDUxNjg3LCA1MTcwMywgCisgICAgNTE3MTksIDUxNzM1LCA1MTc1MSwgNTE3NjcsIDUxNzgzLCA1MTc5OSwgNTE4MTUsIDUxODMxLCA1MTg0NywgNTE4NjMsIAorICAgIDUxODc5LCA1MTg5NSwgNTE5MTEsIDUxOTI3LCA1MTk0MywgNTE5NTksIDUxOTc1LCA1MTk5MSwgNTIwMDcsIDUyMDIzLCAKKyAgICA1MjAzOSwgNTIwNTUsIDUyMDcxLCA1MjA4NywgNTIxMDMsIDUyMTE5LCA1MjEzNSwgNTIxNTEsIDUyMTY3LCA1MjE4MywgCisgICAgNTIxOTksIDUyMjE1LCA1MjIzMSwgNTIyNDcsIDUyMjYzLCA1MjI3OSwgNTIyOTUsIDUyMzExLCA1MjMyNywgNTIzNDMsIAorICAgIDUyMzU5LCA1MjM3NSwgNTIzOTEsIDUyNDA3LCA1MjQyMywgNTI0MzksIDUyNDU1LCA1MjQ3MSwgNTI0ODcsIDUyNTAzLCAKKyAgICA1MjUxOSwgNTI1MzUsIDUyNTUxLCA1MjU2NywgNTI1ODMsIDUyNTk5LCA1MjYxNSwgNTI2MzEsIDUyNjQ3LCA1MjY2MywgCisgICAgNTI2NzksIDUyNjk1LCA1MjcxMSwgNTI3MjcsIDUyNzQzLCA1Mjc1OSwgNTI3NzUsIDUyNzkxLCA1MjgwNywgNTI4MjMsIAorICAgIDUyODM5LCA1Mjg1NSwgNTI4NzEsIDUyODg3LCA1MjkwMywgNTI5MTksIDUyOTM1LCA1Mjk1MSwgNTI5NjcsIDUyOTgzLCAKKyAgICA1Mjk5OSwgNTMwMTUsIDUzMDMxLCA1MzA0NywgNTMwNjMsIDUzMDc5LCA1MzA5NSwgNTMxMTEsIDUzMTI3LCA1MzE0MywgCisgICAgNTMxNTksIDUzMTc1LCA1MzE5MSwgNTMyMDcsIDUzMjIzLCA1MzIzOSwgNTMyNTUsIDUzMjcxLCA1MzI4NywgNTMzMDMsIAorICAgIDUzMzE5LCA1MzMzNSwgNTMzNTEsIDUzMzY3LCA1MzM4MywgNTMzOTksIDUzNDE1LCA1MzQzMSwgNTM0NDcsIDUzNDYzLCAKKyAgICA1MzQ3OSwgNTM0OTUsIDUzNTExLCA1MzUyNywgNTM1NDMsIDUzNTU5LCA1MzU3NSwgNTM1OTEsIDUzNjA3LCA1MzYyMywgCisgICAgNTM2MzksIDUzNjU1LCA1MzY3MSwgNTM2ODcsIDUzNzAzLCA1MzcxOSwgNTM3MzUsIDUzNzUxLCA1Mzc2NywgNTM3ODMsIAorICAgIDUzNzk5LCA1MzgxNSwgNTM4MzEsIDUzODQ3LCA1Mzg2MywgNTM4NzksIDUzODk1LCA1MzkxMSwgNTM5MjcsIDUzOTQzLCAKKyAgICA1Mzk1OSwgNTM5NzUsIDUzOTkxLCA1NDAwNywgNTQwMjMsIDU0MDM5LCA1NDA1NSwgNTQwNzEsIDU0MDg3LCA1NDEwMywgCisgICAgNTQxMTksIDU0MTM1LCA1NDE1MSwgNTQxNjcsIDU0MTgzLCA1NDE5OSwgNTQyMTUsIDU0MjMxLCA1NDI0NywgNTQyNjMsIAorICAgIDU0Mjc5LCA1NDI5NSwgNTQzMTEsIDU0MzI3LCA1NDM0MywgNTQzNTksIDU0Mzc1LCA1NDM5MSwgNTQ0MDcsIDU0NDIzLCAKKyAgICA1NDQzOSwgNTQ0NTUsIDU0NDcxLCA1NDQ4NywgNTQ1MDMsIDU0NTE5LCA1NDUzNSwgNTQ1NTEsIDU0NTY3LCA1NDU4MywgCisgICAgNTQ1OTksIDU0NjE1LCA1NDYzMSwgNTQ2NDcsIDU0NjYzLCA1NDY3OSwgNTQ2OTUsIDU0NzExLCA1NDcyNywgNTQ3NDMsIAorICAgIDU0NzU5LCA1NDc3NSwgNTQ3OTEsIDU0ODA3LCA1NDgyMywgNTQ4MzksIDU0ODU1LCA1NDg3MSwgNTQ4ODcsIDU0OTAzLCAKKyAgICA1NDkxOSwgNTQ5MzUsIDU0OTUxLCA1NDk2NywgNTQ5ODMsIDU0OTk5LCA1NTAxNSwgNTUwMzEsIDU1MDQ3LCA1NTA2MywgCisgICAgNTUwNzksIDU1MDk1LCA1NTExMSwgNTUxMjcsIDU1MTQzLCA1NTE1OSwgNTUxNzUsIDU1MTkxLCA1NTIwNywgNTUyMjMsIAorICAgIDU1MjM5LCA1NTI1NSwgNTUyNzEsIDU1Mjg3LCA1NTMwMywgNTUzMTksIDU1MzM1LCA1NTM1MSwgNTUzNjcsIDU1MzgzLCAKKyAgICA1NTM5OSwgNTU0MTUsIDU1NDMxLCA1NTQ0NywgNTU0NjMsIDU1NDc5LCA1NTQ5NSwgNTU1MTEsIDU1NTI3LCA1NTU0MywgCisgICAgNTU1NTksIDU1NTc1LCA1NTU5MSwgNTU2MDcsIDU1NjIzLCA1NTYzOSwgNTU2NTUsIDU1NjcxLCA1NTY4NywgNTU3MDMsIAorICAgIDU1NzE5LCA1NTczNSwgNTU3NTEsIDU1NzY3LCA1NTc4MywgNTU3OTksIDU1ODE1LCA1NTgzMSwgNTU4NDcsIDU1ODYzLCAKKyAgICA1NTg3OSwgNTU4OTUsIDU1OTExLCA1NTkyNywgNTU5NDMsIDU1OTU5LCA1NTk3NSwgNTU5OTEsIDU2MDA3LCA1NjAyMywgCisgICAgNTYwMzksIDU2MDU1LCA1NjA3MSwgNTYwODcsIDU2MTAzLCA1NjExOSwgNTYxMzUsIDU2MTUxLCA1NjE2NywgNTYxODMsIAorICAgIDU2MTk5LCA1NjIxNSwgNTYyMzEsIDU2MjQ3LCA1NjI2MywgNTYyNzksIDU2Mjk1LCA1NjMxMSwgNTYzMjcsIDU2MzQzLCAKKyAgICA1NjM1OSwgNTYzNzUsIDU2MzkxLCA1NjQwNywgNTY0MjMsIDU2NDM5LCA1NjQ1NSwgNTY0NzEsIDU2NDg3LCA1NjUwMywgCisgICAgNTY1MTksIDU2NTM1LCA1NjU1MSwgNTY1NjcsIDU2NTgzLCA1NjU5OSwgNTY2MTUsIDU2NjMxLCA1NjY0NywgNTY2NjMsIAorICAgIDU2Njc5LCA1NjY5NSwgNTY3MTEsIDU2NzI3LCA1Njc0MywgNTY3NTksIDU2Nzc1LCA1Njc5MSwgNTY4MDcsIDU2ODIzLCAKKyAgICA1NjgzOSwgNTY4NTUsIDU2ODcxLCA1Njg4NywgNTY5MDMsIDU2OTE5LCA1NjkzNSwgNTY5NTEsIDU2OTY3LCA1Njk4MywgCisgICAgNTY5OTksIDU3MDE1LCA1NzAzMSwgNTcwNDcsIDU3MDYzLCA1NzA3OSwgNTcwOTUsIDU3MTExLCA1NzEyNywgNTcxNDMsIAorICAgIDU3MTU5LCA1NzE3NSwgNTcxOTEsIDU3MjA3LCA1NzIyMywgNTcyMzksIDU3MjU1LCA1NzI3MSwgNTcyODcsIDU3MzAzLCAKKyAgICA1NzMxOSwgNTczMzUsIDU3MzUxLCA1NzM2NywgNTczODMsIDU3Mzk5LCA1NzQxNSwgNTc0MzEsIDU3NDQ3LCA1NzQ2MywgCisgICAgNTc0NzksIDU3NDk1LCA1NzUxMSwgNTc1MjcsIDU3NTQzLCA1NzU1OSwgNTc1NzUsIDU3NTkxLCA1NzYwNywgNTc2MjMsIAorICAgIDU3NjM5LCA1NzY1NSwgNTc2NzEsIDU3Njg3LCA1NzcwMywgNTc3MTksIDU3NzM1LCA1Nzc1MSwgNTc3NjcsIDU3NzgzLCAKKyAgICA1Nzc5OSwgNTc4MTUsIDU3ODMxLCA1Nzg0NywgNTc4NjMsIDU3ODc5LCA1Nzg5NSwgNTc5MTEsIDU3OTI3LCA1Nzk0MywgCisgICAgNTc5NTksIDU3OTc1LCA1Nzk5MSwgNTgwMDcsIDU4MDIzLCA1ODAzOSwgNTgwNTUsIDU4MDcxLCA1ODA4NywgNTgxMDMsIAorICAgIDU4MTE5LCA1ODEzNSwgNTgxNTEsIDU4MTY3LCA1ODE4MiwgMTY3NDksIDU4MTkxLCA1ODE5NywgNTgyMDMsIDU4MjEzLCAKKyAgICA1ODIyMSwgMTQ4ODEsIDE1NDMyLCA5OTUzLCA1ODIzNCwgMTUyMCwgNTgyNDIsIDM3NjEsIDI3NDE1LCA3MTgzLCA1ODI0OCwgCisgICAgNTgyNTMsIDU4MjU4LCA1ODI2MywgNTgyNjgsIDU4Mjc0LCA1ODI3OSwgNTgyODUsIDU4MjkwLCA1ODI5NiwgNTgzMDEsIAorICAgIDU4MzA2LCA1ODMxMSwgNTgzMTYsIDU4MzIyLCA1ODMyNywgNTgzMzIsIDU4MzM3LCA1ODM0MiwgNTgzNDcsIDU4MzUyLCAKKyAgICA1ODM1NywgNTgzNjMsIDU4MzY4LCA1ODM3NCwgNTgzODEsIDI1NjEsIDU4Mzg2LCA1ODM5MiwgODUyNiwgNTgzOTYsIAorICAgIDU4NDAxLCA1ODQwOCwgNTg0MTYsIDQwLCA1ODQyMCwgNTg0MjYsIDU4NDMxLCA1ODQzNiwgNTg0NDAsIDU4NDQ1LCA1ODQ0OSwgCisgICAgNTg0NTMsIDEwNjc3LCA1ODQ1NywgNTg0NjcsIDU4NDgwLCA1ODQ5MSwgNTg1MDQsIDU4NTExLCA1ODUxNywgNTg1MjIsIAorICAgIDU4NTI4LCA1ODUzNCwgNTg1NDAsIDU4NTQ1LCA1ODU1MCwgNTg1NTUsIDU4NTYwLCA1ODU2NCwgNTg1NjksIDU4NTc0LCAKKyAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5NywgNTg2MDIsIDU4NjA2LCA1ODYxMSwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgCisgICAgNTg2MzAsIDU4NjM1LCA1ODYzOSwgMTA2OTMsIDEwNzA0LCAxMDcwOSwgMTU2MywgNTg2NDMsIDE1NjgsIDU4NjQ5LCAKKyAgICAxNjIyNiwgNTg2NTIsIDU4NjU4LCAxNTk5LCA1ODY2NCwgMTYwNSwgMTYxMSwgMTA3MzksIDU4NjY5LCA1ODY3NywgNTg2ODQsIAorICAgIDU4Njg4LCA1ODY5NCwgNTg2OTksIDMwOTUyLCA1ODcwNCwgNTg3MTEsIDU4NzE2LCA1ODcyMCwgNTg3MjQsIDE2MTYsIAorICAgIDE2MzE4LCA1ODczMywgNTg3MzcsIDE2MzI5LCAxMTIwLCA1ODc0MSwgNTg3NDgsIDU4NzUzLCA1ODc1NywgMTYzNTQsIAorICAgIDE2MjAsIDM3MzIxLCA1ODc2MCwgNTg3NjUsIDU4Nzc1LCA1ODc4NCwgNTg3ODksIDU4NzkzLCA1ODc5OSwgMTYyNSwgCisgICAgMzkyMzAsIDU4ODA0LCA1ODgxMywgNTg4MTksIDU4ODI0LCAxMDg5NywgMTA5MDMsIDU4ODMwLCA1ODg0MiwgNTg4NTksIAorICAgIDU4ODc2LCA1ODg5MywgNTg5MTAsIDU4OTI3LCA1ODk0NCwgNTg5NjEsIDU4OTc4LCA1ODk5NSwgNTkwMTIsIDU5MDI5LCAKKyAgICA1OTA0NiwgNTkwNjMsIDU5MDgwLCA1OTA5NywgNTkxMTQsIDU5MTMxLCA1OTE0OCwgNTkxNjUsIDU5MTgyLCA1OTE5OSwgCisgICAgNTkyMTYsIDU5MjMzLCA1OTI1MCwgNTkyNjcsIDU5Mjg0LCA1OTMwMSwgNTkzMTgsIDU5MzM1LCA1OTM1MiwgNTkzNjksIAorICAgIDU5Mzg2LCA1OTQwMywgNTk0MjAsIDU5NDM3LCA1OTQ1NCwgNTk0NzEsIDU5NDg4LCA1OTUwNSwgNTk1MjIsIDU5NTM5LCAKKyAgICA1OTU1NiwgNTk1NzMsIDU5NTkwLCA1OTYwNywgNTk2MjQsIDU5NjQxLCA1OTY1OCwgNTk2NzUsIDU5Njg2LCA1OTY5MSwgCisgICAgMTYzMCwgNTk2OTUsIDU5NzAxLCA1OTcwNiwgNTk3MTEsIDkzMTksIDE2MzUsIDU5NzE3LCA1OTcyNiwgMjc3MTAsIDU5NzMxLCAKKyAgICA1OTc0MiwgNTk3NTIsIDU5NzU3LCA1OTc2NCwgNTk3NzAsIDU5Nzc1LCA1OTc4MCwgMTY2MDYsIDU5Nzg0LCAxMDkxNCwgCisgICAgMTY0MCwgMTA5MTksIDU5NzkwLCA1OTc5NSwgNTk4MDEsIDU5ODA2LCA1OTgxMSwgNTk4MTYsIDU5ODIxLCA1OTgyNiwgCisgICAgNTk4MzEsIDU5ODM2LCA1OTg0MiwgNTk4NDgsIDU5ODU0LCA1OTg1OSwgNTk4NjMsIDU5ODY4LCA1OTg3MywgNTk4NzcsIAorICAgIDU5ODgyLCA1OTg4NywgNTk4OTIsIDU5ODk2LCA1OTkwMSwgNTk5MDcsIDU5OTEyLCA1OTkxNywgNTk5MjEsIDU5OTI2LCAKKyAgICA1OTkzMSwgNTk5MzcsIDU5OTQyLCA1OTk0NywgNTk5NTMsIDU5OTU5LCA1OTk2NCwgNTk5NjgsIDU5OTczLCA1OTk3OCwgCisgICAgNTk5ODMsIDU5OTg3LCA1OTk5MiwgNTk5OTcsIDYwMDAyLCA2MDAwOCwgNjAwMTQsIDYwMDE5LCA2MDAyMywgNjAwMjcsIAorICAgIDYwMDMyLCA2MDAzNywgNjAwNDIsIDI5MTA4LCA2MDA0NiwgNjAwNTEsIDYwMDU2LCA2MDA2MiwgNjAwNjcsIDYwMDcyLCAKKyAgICA2MDA3NiwgNjAwODEsIDYwMDg2LCA2MDA5MiwgNjAwOTcsIDYwMTAyLCA2MDEwOCwgNjAxMTQsIDYwMTE5LCA2MDEyMywgCisgICAgNjAxMjgsIDYwMTMzLCA2MDEzNywgNjAxNDIsIDYwMTQ3LCA2MDE1MiwgNjAxNTgsIDYwMTY0LCA2MDE2OSwgNjAxNzMsIAorICAgIDYwMTc4LCA2MDE4MywgNjAxODcsIDYwMTkyLCA2MDE5NywgNjAyMDIsIDYwMjA2LCA2MDIwOSwgMzE2MTQsIDYwMjE0LCAKKyAgICA2MDIyMiwgMTY2NzIsIDM2NjMsIDExMDEwLCA2MDIyOCwgNjAyMzgsIDYwMjUzLCAxMTAxNSwgNjAyNjQsIDYwMjY5LCAKKyAgICA2MDI4MCwgNjAyOTIsIDYwMzA0LCA2MDMxNiwgMjY5NSwgNjAzMjgsIDYwMzMzLCA2MDM0NSwgNjAzNDksIDYwMzU1LCAKKyAgICA2MDM2MSwgNjAzNjYsIDE2NTIsIDEwNjcsIDYwMzc1LCA2MDM4MCwgMzkyODAsIDYwMzg0LCA2MDM4OCwgNjAzOTMsIAorICAgIDYwMzk3LCAxNjc1NywgNjA0MDIsIDYwNDA1LCA2MDQxMywgNjA0MjEsIDE2NTYsIDExMDQwLCAxMTA0NiwgMTY2MSwgCisgICAgNjA0MjksIDYwNDM2LCA2MDQ0MSwgNjA0NTAsIDYwNDYwLCA2MDQ2NywgNjA0NzIsIDYwNDc3LCAxNjY2LCA2MDQ4NCwgCisgICAgNjA0ODksIDE2ODcyLCA2MDQ5MywgNjA0OTgsIDYwNTA1LCA2MDUxMSwgNjA1MTUsIDYwNTI2LCA2MDUzNiwgMTY4OTQsIAorICAgIDkyMjcsIDkyMzQsIDE2NzEsIDYwNTQzLCA2MDU0OSwgNjA1NTcsIDYwNTY0LCA2MDU3MCwgNjA1NzcsIDYwNTg5LCA2MDU5NSwgCisgICAgNjA2MDAsIDYwNjEyLCA2MDYyMywgNjA2MzIsIDYwNjQyLCAzNzQwLCAzMDc4OCwgMzA3OTcsIDE2OTM0LCAxNjc2LCAxNjgwLCAKKyAgICA2MDY1MCwgNjA2NjEsIDYwNjY2LCAxNjgzLCA2MDY3NCwgNjA2NzksIDE2OTg1LCA2MDY5MSwgNjA2OTcsIDYwNzAyLCAKKyAgICA2MDcxMCwgMTY4OCwgNjA3MTUsIDYwNzIwLCA2MDcyOCwgNjA3MzYsIDYwNzQzLCA2MDc1MiwgNjA3NjAsIDYwNzY5LCAKKyAgICAxNjkzLCA2MDc3MywgMTY5OCwgNjA3NzgsIDYwNzg1LCAxNzA1OSwgNjA3OTMsIDYwNzk5LCA2MDgwNCwgNjA4MTIsIAorICAgIDYwODE5LCA2MDgyNywgMjI1NTcsIDYwODMyLCAxMTE3NSwgNjA4NDEsIDYwODQ3LCA2MDg1NCwgNjA4NjEsIDYwODY3LCAKKyAgICA2MDg3NywgNjA4ODMsIDYwODg4LCA2MDg5OSwgNjA5MDQsIDYwOTEyLCAxMTE4NCwgMTExODksIDYwOTIwLCA2MDkyNiwgCisgICAgNjA5MzQsIDM4MDUsIDE3MTAxLCAzOTM2OCwgNjA5MzksIDYwOTQ1LCA2MDk1MCwgNjA5NTgsIDYwOTY1LCAxMjAyOSwgCisgICAgNjA5NzAsIDYwOTc2LCAxNzA5LCA2MDk4MSwgNjA5ODQsIDExMjcsIDYwOTkwLCA2MDk5NSwgNjEwMDAsIDYxMDA2LCAKKyAgICA2MTAxMSwgNjEwMTYsIDYxMDIxLCA2MTAyNiwgNjEwMzEsIDYxMDM2LCAxNzE4LCA5LCA2MTA0MiwgNjEwNDYsIDYxMDUxLCAKKyAgICA2MTA1NSwgNjEwNTksIDYxMDYzLCAzMTg1NCwgNjEwNjgsIDYxMDczLCA2MTA3OCwgNjEwODIsIDYxMDg1LCA2MTA4OSwgCisgICAgNjEwOTMsIDYxMDk4LCA2MTEwMiwgNjExMDcsIDYxMTExLCAzNDU5MSwgMzQ1OTYsIDM0NjAxLCA2MTExNCwgNjExMjEsIAorICAgIDYxMTI3LCAzOTA4OSwgNjExMzcsIDM0NjA3LCAzMjExMiwgMzE4NjksIDMxODc1LCAzNDYyMywgMzE4ODEsIDYxMTQyLCAKKyAgICA2MTE0NywgMzIxNDUsIDYxMTUxLCA2MTE1NCwgNjExNTgsIDYxMTY1LCA2MTE2OCwgNjExNzMsIDYxMTc3LCA2MTE4MSwgCisgICAgNjExODQsIDYxMTk0LCA2MTIwNiwgNjEyMTMsIDYxMjE5LCA2MTIyNiwgMzM1NDgsIDYxMjI5LCA4NTQzLCA4NzcsIDYxMjMyLCAKKyAgICA2MTIzNiwgNjEyNDEsIDM2OTAsIDYxMjQ1LCA2MTI0OCwgMTM2MjUsIDYxMjU1LCA2MTI2MiwgNjEyNzUsIDYxMjgzLCAKKyAgICA2MTI5MiwgNjEzMDEsIDYxMzA2LCA2MTMxNiwgNjEzMjksIDYxMzQxLCA2MTM0OCwgNjEzNTMsIDYxMzYyLCA2MTM3NSwgCisgICAgMzYwMzUsIDYxMzkzLCA2MTM5OCwgNjE0MDUsIDYxNDExLCA2NTIsIDYxNDE2LCA2MTQyNCwgNjE0MzEsIDI3MjU0LCA2MjcsIAorICAgIDYxNDM3LCA2MTQ0MywgNjE0NTMsIDYxNDU5LCA2MTQ2NCwgMzE4OTksIDYwMDMsIDMxOTEzLCA2MTQ2OCwgNjE0NzgsIAorICAgIDYxNDgzLCA2MTQ5MywgNjE1MDgsIDYxNTE0LCA2MTUyMCwgMzE5MjMsIDYxNTI1LCAzMTA2OSwgNjE1MjksIDYxNTM0LCAKKyAgICA2MTUzOSwgNjE1NDMsIDYxNTQ4LCAxNjkzNywgNjE1NTUsIDYxNTYwLCA2MTU2NCwgNjA0NCwgMzE5NDksIDYxNTY4LCAKKyAgICA2MTU3NCwgMzEyLCA2MTU4NCwgNjE1OTEsIDYxNTk4LCA2MTYwMywgNjE2MTIsIDU4NzY5LCA2MTYxOCwgNjE2MjYsIAorICAgIDYxNjMwLCA2MTYzNCwgNjE2MzgsIDYxNjQyLCA2MTY0NywgNjE2NTEsIDYxNjU3LCA2MTY2NSwgNjE2NzAsIDYxNjc1LCAKKyAgICA2MTY3OSwgNjE2ODQsIDYxNjg4LCA2MTY5MiwgNjE2OTgsIDYxNzA0LCA2MTcwOSwgNjE3MTMsIDMyMDczLCA2MTcxOCwgCisgICAgMzIwNzksIDMyMDg1LCA2MTcyMywgNjE3MjksIDYxNzM2LCA2MTc0MSwgNjE3NDUsIDMxMDg2LCAxNjU5OSwgNjE3NDgsIAorICAgIDYxNzUyLCA2MTc1NywgNjE3NjQsIDYxNzcwLCA2MTc3NCwgNjE3NzksIDM4Nzk5LCA2MTc4NSwgNjE3ODksIDYxNzkzLCAKKyAgICA2MTc5OCwgNjE4MDQsIDYxODEwLCA2MTgyMiwgNjE4MzEsIDYxODQxLCA2MTg0NywgNjE4NTQsIDYxODU5LCA2MTg2NCwgCisgICAgNjE4NjgsIDYxODcxLCA2MTg3NywgNjE4ODQsIDYxODg5LCA2MTg5NCwgNjE5MDEsIDYxOTA4LCA2MTkxNCwgNjE5MTksIAorICAgIDYxOTI0LCA2MTkzMiwgMzIwOTAsIDI0MjMsIDYxOTM3LCA2MTk0MiwgNjE5NDgsIDYxOTUzLCA2MTk1OSwgNjE5NjQsIAorICAgIDYxOTY5LCA2MTk3NCwgNjE5ODAsIDMyMTExLCA2MTk4NSwgNjE5OTEsIDYxOTk3LCA2MjAwMywgMzIxNzUsIDYyMDA4LCAKKyAgICA2MjAxMywgNjIwMTgsIDMyMTg2LCA2MjAyMywgNjIwMjgsIDYyMDMzLCA2MjAzOSwgNjIwNDUsIDMyMTkxLCA2MjA1MCwgCisgICAgNjIwNTUsIDYyMDYwLCAzMjI0NiwgMzIyNTIsIDYyMDY1LCA2MjA3MCwgMzIyNTcsIDYyMDc1LCAyNzkzNywgMzIyNzksIAorICAgIDMyMjgzLCA2MjA4MCwgNjIwNTYsIDYyMDg0LCA2MjA5MiwgNjIwOTgsIDYyMTA2LCA2MjExMywgNjIxMTksIDYyMTI5LCAKKyAgICA2MjEzNSwgNjIxNDIsIDEwNjI0LCAzMjI5NywgNjIxNDgsIDYyMTYxLCA2MjE3MCwgNjIxNzYsIDYyMTg1LCA2MjE5MSwgCisgICAgMjM0OTUsIDYyMTk4LCA2MjIwNSwgNjIyMTUsIDMyMjQ3LCA2MjIxOCwgNjIyMjUsIDYyMjMwLCA2MjIzNCwgNjIyMzgsIAorICAgIDYyMjQzLCA2MTIwLCA2MjI0NywgNjIyNTIsIDYyMjU3LCAzNDY4NSwgMzQ2OTAsIDYyMjYxLCAzNDcwNCwgNjIyNjYsIAorICAgIDM0NzA5LCA2MjI3MSwgNjIyNzcsIDM0NzIxLCAzNDcyNywgMzQ3MzMsIDYyMjgyLCA2MjI4OCwgMjI1MjIsIDYyMjk5LCAKKyAgICA2MjMwMiwgNjIzMTQsIDYyMzIyLCAzMjMyMCwgNjIzMjYsIDYyMzM1LCA2MjM0NSwgNjIzNTQsIDMyMzMwLCA2MjM1OSwgCisgICAgNjIzNjYsIDYyMzc1LCA2MjM4MSwgNjIzODksIDYyMzk2LCA2MDk1LCA0Mzk3LCA2MjQwMSwgMzIyNTgsIDYyNDA3LCAKKyAgICA2MjQxMCwgNjI0MTYsIDYyNDIzLCA2MjQyOCwgNjI0MzMsIDIzNDA1LCA2MjQzNywgNjI0NDMsIDYyNDQ5LCA2MjQ1NCwgCisgICAgNjI0NTksIDYyNDYzLCA2MjQ2OSwgNjI0NzUsIDMzNDU4LCA4NjMsIDM1Njk4LCAzNjYxOSwgMzY2MjUsIDMyMzY2LCAKKyAgICA2MjQ4MCwgNjI0ODQsIDYyNDg4LCA2MjQ5MSwgNjI1MDQsIDYyNTEwLCA2MjUxNCwgNjI1MTcsIDYyNTIyLCAzMzc2MSwgCisgICAgNjI1MjYsIDMxMDkxLCAyMTI3NCwgNjI1MzIsIDYwMjQsIDYwMzIsIDkwNjgsIDYyNTM1LCA2MjU0MCwgNjI1NDUsIDYyNTUwLCAKKyAgICA2MjU1NSwgNjI1NjAsIDYyNTY1LCA2MjU3MCwgNjI1NzUsIDYyNTgwLCA2MjU4NiwgNjI1OTEsIDYyNTk2LCA2MjYwMiwgCisgICAgNjI2MDcsIDYyNjEyLCA2MjYxNywgNjI2MjIsIDYyNjI3LCA2MjYzMiwgNjI2MzgsIDYyNjQzLCA2MjY0OSwgNjI2NTQsIAorICAgIDYyNjU5LCA2MjY2NCwgNjI2NjksIDYyNjc0LCA2MjY3OSwgNjI2ODQsIDYyNjg5LCA2MjY5NCwgNjI2OTksIDYyNzA1LCAKKyAgICA2MjcxMCwgNjI3MTUsIDYyNzIwLCA2MjcyNSwgNjI3MzAsIDYyNzM1LCA2Mjc0MSwgNjI3NDYsIDYyNzUxLCA2Mjc1NiwgCisgICAgNjI3NjEsIDYyNzY2LCA2Mjc3MSwgNjI3NzYsIDYyNzgxLCA2Mjc4NiwgNjI3OTIsIDYyNzk3LCA2MjgwMiwgNjI4MDcsIAorICAgIDYyODEyLCA2MjgxOCwgNjI4MjQsIDYyODI5LCA2MjgzNSwgNjI4NDAsIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCAKKyAgICAxNTEzLCAyNDUsIDYyODY1LCA2Mjg2OSwgNjI4NzMsIDYyODc3LCAyNTExNiwgNjI4ODEsIDYyODg1LCA2Mjg5MCwgNjI4OTQsIAorICAgIDYyODk5LCA2MjkwMywgNjI5MDgsIDYyOTEzLCA2MjkxOCwgNjI5MjIsIDYyOTI2LCA2MjkzMSwgNjI5MzUsIDEzMzYyLCAKKyAgICA2Mjk0MCwgNjI5NDQsIDYyOTUxLCA2Mjk2MSwgMTUxOTMsIDYyOTcwLCA2Mjk3OSwgNjI5ODMsIDYyOTg4LCA2Mjk5MywgCisgICAgNjI5OTcsIDI0OTA3LCAzMDE5LCA2MzAwMSwgMTczNTAsIDYzMDA3LCA2MzAxNiwgNjMwMjQsIDYzMDMwLCA2MzA0MiwgCisgICAgNjMwNTQsIDYzMDU4LCA2MzA2MywgNjMwNjcsIDYzMDczLCA2MzA3OSwgNjMwODQsIDYzMDk0LCA2MzEwNCwgNjMxMTAsIAorICAgIDYzMTE1LCA2MzExOSwgNjMxMjQsIDYzMTMwLCA2MzEzOSwgNjMxNDgsIDYzMTU2LCAxNTU0NywgNjMxNjAsIDYzMTY5LCAKKyAgICA2MzE3NywgNjMxODksIDYzMjAwLCA2MzIxMSwgNjMyMjAsIDYzMjI0LCA2MzIzMywgNjMyNDMsIDYzMjUxLCA2MzI1NywgCisgICAgNjMyNjIsIDYzMjY4LCA2MzI3MywgOTgsIDMwOTAwLCA2MzI4NCwgMjYyNDksIDI2MjU5LCA2MzI5MCwgNjMyOTcsIDYzMzAzLCAKKyAgICA2MzMwNywgNjMzMTcsIDYzMzI4LCA2MzMzNiwgNjMzNDUsIDYzMzUwLCA2MzM1NSwgNjMzNTksIDE3MzA0LCA2MzM2NywgCisgICAgNjMzNzEsIDYzMzc3LCA2MzM4NywgNjMzOTQsIDYzNDAwLCAzNDc4NCwgNjM0MDYsIDYzNDA4LCA2MzQxMSwgNjM0MTUsIAorICAgIDYzNDI1LCA2MzQzMSwgNjM0MzgsIDEzMzA4LCA2MzQ0NSwgNjM0NTEsIDYzNDYwLCA2MzQ2OSwgNjM0NzUsIDYzNDgxLCAKKyAgICA2MzQ4NywgNjM0OTIsIDYzNDk5LCA2MzUwNiwgNjM1MTIsIDYzNTI1LCA2MzUzNCwgNjM1NDMsIDYzNTQ4LCA2MzU1MiwgCisgICAgNjM1NTgsIDYzNTY1LCA2MzU3MiwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIDYzNjAyLCA2MzYwNiwgNjM2MDksIAorICAgIDYzNjE5LCA2MzYyMywgNjM2MzUsIDYzNjQ0LCA2MzY0OCwgNjM2NTMsIDYzNjU3LCA2MzY2MywgNjM2NjgsIDYzNjc1LCAKKyAgICA2MzY4NCwgNjM2OTIsIDYzNzAwLCA2MzcwNSwgNjM3MDksIDYzNzE0LCA2MzcxOSwgNjM3MjksIDYzNzM3LCA2Mzc0MiwgCisgICAgNjM3NDYsIDYzNzUwLCA2Mzc1NiwgNjM3NjgsIDYzNzc2LCA2Mzc4NiwgNjM3OTMsIDYzNzk5LCA2MzgwNCwgNjM4MDgsIAorICAgIDYzODEyLCA2MzgxNiwgNjM4MjUsIDYzODM0LCA2Mzg0MywgNjM4NDksIDYzODU1LCA2Mzg2MSwgNjM4NjYsIDYzODczLCAKKyAgICA2Mzg3OSwgNjM4ODcsIDYzODk0LCAxMjQ1NiwgNjM5MDAsIDYzOTA2LCA2MzkxMCwgMTQyMzEsIDYzOTE0LCA2MzkxOSwgCisgICAgNjM5MjksIDYzOTM4LCA2Mzk0NCwgNjM5NTAsIDYzOTU4LCA2Mzk2NSwgNjM5NjksIDYzOTczLCA2Mzk3OSwgNjM5ODcsIAorICAgIDYzOTk0LCA2NDAwMCwgNjQwMTEsIDY0MDE1LCA2NDAxOSwgNjQwMjMsIDY0MDI2LCA2NDAzMiwgNjQwMzcsIDY0MDQxLCAKKyAgICA2NDA0NSwgNjQwNTQsIDY0MDYyLCA2NDA2OSwgNjQwNzUsIDY0MDgyLCAyNDAyOSwgMzg4NDEsIDY0MDg3LCA2NDA5NSwgCisgICAgNjQwOTksIDY0MTAzLCA2NDEwNiwgNjQxMTQsIDY0MTIxLCA2NDEyNywgNjQxMzYsIDY0MTQ0LCA2NDE1MCwgNjQxNTUsIAorICAgIDY0MTU5LCA2NDE2NCwgNjQxNjgsIDY0MTcyLCA2NDE3NywgNjQxODYsIDY0MTkwLCA2NDE5NywgNjQyMDQsIDY0MjEwLCAKKyAgICA2NDIxOCwgNjQyMjQsIDY0MjM1LCA2NDI0MywgNjQyNDksIDIyNjUyLCA2NDI1OCwgNjQyNjUsIDY0MjcyLCA2NDI3OSwgCisgICAgNjQyODYsIDY0MjkzLCA0MTg3MCwgMTMxNDYsIDY0MzAwLCA2NDMwNywgNjQzMTIsIDM0ODIwLCA2MjE3LCA2NDMxOCwgCisgICAgNjQzMjMsIDY0MzI4LCA2NDMzNCwgNjQzNDAsIDY0MzQ2LCA2NDM1MSwgNjQzNTYsIDY0MzYxLCA2NDM2NiwgNjQzNzIsIAorICAgIDY0Mzc3LCA2NDM4MywgNjQzODgsIDY0Mzk0LCA2NDM5OSwgNjQ0MDQsIDY0NDA5LCA2NDQxNCwgNjQ0MTksIDY0NDI0LCAKKyAgICA2NDQyOSwgNjQ0MzUsIDY0NDQwLCA2NDQ0NiwgNjQ0NTEsIDY0NDU2LCA2NDQ2MSwgNjQ0NjYsIDY0NDcxLCA2NDQ3NiwgCisgICAgNjQ0ODIsIDY0NDg3LCA2NDQ5MiwgNjQ0OTcsIDY0NTAyLCA2NDUwNywgNjQ1MTIsIDY0NTE3LCA2NDUyMiwgNjQ1MjcsIAorICAgIDY0NTMyLCA2NDUzOCwgNjQ1NDMsIDY0NTQ4LCA2NDU1MywgNjQ1NTgsIDY0NTYzLCA2NDU2OCwgNjQ1NzMsIDY0NTc4LCAKKyAgICA2NDU4NCwgNjQ1ODksIDY0NTk0LCA2NDU5OSwgNjQ2MDQsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgCisgICAgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgNjQ2NTAsIDE4MzQsIDIyNCwgMzc0MTcsIDY0NjU1LCA2NDY1OCwgNjQ2NjMsIDY0NjY3LCAKKyAgICA2NDY3MCwgNjQ2NzUsIDYzNjk2LCA2NDY4NiwgNjQ2OTYsIDY0NzAzLCA2NDcxOSwgNjQ3MjgsIDY0NzM4LCA2NDc0OCwgCisgICAgNjQ3NTYsIDY0NzcwLCA2NDc3OCwgNjQ3ODIsIDY0Nzg1LCA2NDc5MiwgNjQ3OTgsIDY0ODA5LCA2NDgyMSwgNjQ4MzIsIAorICAgIDY0ODQxLCA2NDg0OCwgMTI5NywgMjMyOTQsIDY0ODU4LCAyNTkwLCA2NDg2MiwgNjQ4NzEsIDExMzMsIDE3Mjc3LCAzODA1NCwgCisgICAgNjQ4NzksIDY0ODg3LCA2NDkwMSwgNjQ5MTQsIDY0OTE4LCA2NDkyMywgNjQ5MjgsIDY0OTMzLCA2NDkzOSwgNjQ5NDUsIAorICAgIDY0OTUwLCA4NTM1LCA2NDk1NSwgNjQ5NTksIDY0OTY3LCAxMTA0MSwgNjQ5NzIsIDY0OTc4LCA2NDk4NywgMTcyMSwgCisgICAgMTEwNTMsIDczNiwgNjQ5OTEsIDY1MDAwLCA2NTAxMCwgMjcwMTMsIDY1MDE5LCA2NTAyNSwgMTY4NDksIDY1MDMxLCAKKyAgICA2NTAzNSwgMzk2NCwgMTEzODQsIDY1MDQxLCA2NTA0OCwgNjA2NTYsIDY1MDUyLCA2NTA1NiwgMzk4OCwgMTg5LCAxNDE0NiwgCisgICAgNjUwNjIsIDY1MDc0LCA2NTA3OCwgNjUwODQsIDI3NzMwLCA2NTA4OCwgMTEzNzIsIDI3MzAsIDQsIDY1MDkzLCA2NTEwMywgCisgICAgNjUxMDksIDY1MTIwLCA2NTEyNywgNjUxMzMsIDY1MTM5LCA2NTE0NywgNjUxNTQsIDY1MTYwLCA2NTE3MCwgNjUxODAsIAorICAgIDY1MTkwLCAyMzQ4MiwgMTMwOSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTMsIDY1MjE3LCAyNzUzLCAyNzU5LCA4NTMyLCAKKyAgICAyMjY0LCA2NTIyMSwgNjUyMjUsIDY1MjM0LCA2NTI0MiwgNjUyNTMsIDY1MjYxLCA2NTI2OSwgNjUyNzUsIDY1MjgwLCAKKyAgICA2NTI5MSwgNjUzMDIsIDY1MzEwLCA2NTMxNiwgOTY4NywgNjUzMjEsIDY1MzI5LCA2NTMzMywgNjUzMzcsIDY1MzQxLCAKKyAgICA2NTM1MywgMjgxMTUsIDY1MzYwLCA2NTM3MCwgNjUzNzYsIDY1MzgyLCA5Nzg5LCA2NTM5MiwgNjU0MDMsIDY1NDEzLCAKKyAgICA2NTQyMiwgNjU0MjYsIDY1NDMzLCAxMTM1LCAxMTcwLCA2NTQ0MywgNjU0NDgsIDY1NDU2LCA2NTQ2NCwgNjU0NzUsIAorICAgIDY1NDgyLCA2NTQ5NiwgMTQwNzUsIDM5MywgNjU1MDYsIDY1NTEwLCA2NTUxOCwgNjU1MjcsIDY1NTM1LCA2NTU0MSwgCisgICAgNjU1NTUsIDY1NTYyLCA2NTU2OCwgNjU1NzcsIDY1NTg0LCA2NTU5NCwgNjU2MDIsIDM4MTIsIDE1NiwgNjU2MTAsIDY1NjIxLCAKKyAgICA2NTYyNSwgNjU2MzcsIDI3OTI4LCAxNjEsIDY1NjQzLCA2NTY0OCwgNjU2NTIsIDY1NjU5LCA2NTY2NSwgNjU2NzMsIAorICAgIDY1NjgwLCA4ODE4LCA2NTY4NywgNjU2OTYsIDY1NzA0LCAzODc4LCA2NTcxNywgODE5OSwgNjU3MjEsIDI3OTgsIDQ1MCwgCisgICAgNjU3MjYsIDY1NzM5LCA2NTc0NCwgMTgzMywgNjY4LCA2NTc0OCwgMzg5NSwgNjU3NTYsIDY1NzYyLCA2NTc2NiwgOTMxLCAKKyAgICA2NTc3NiwgNjU3ODUsIDY1NzkwLCAxNDkxNSwgMTQ5MjIsIDQ1MjMyLCA2NTc5NCwgMzgyMiwgMTMwMzQsIDY1ODAyLCAKKyAgICA2NTgwOSwgMjM1MzgsIDY1ODEzLCA2NTgyMCwgNjU4MjYsIDY1ODMxLCA2NTgzNiwgMTQ5MzUsIDM3MiwgNjU4NDEsIAorICAgIDY1ODUzLCA2NTg1OSwgNjU4NjcsIDI4MTAsIDE3NTMsIDY1ODc1LCA2NTg3NywgNjU4ODIsIDY1ODg3LCA2NTg5MiwgCisgICAgNjU4OTgsIDY1OTAzLCA2NTkwOCwgNjU5MTMsIDY1OTE4LCA2NTkyMywgNjU5MjgsIDY1OTM0LCA2NTkzOSwgNjU5NDQsIAorICAgIDY1OTQ5LCA2NTk1NCwgNjU5NTksIDY1OTY0LCA2NTk2OSwgNjU5NzQsIDY1OTgwLCA2NTk4NSwgNjU5OTAsIDY1OTk1LCAKKyAgICA2NjAwMSwgNjYwMDYsIDY2MDEyLCA2NjAxNywgNjYwMjIsIDY2MDI3LCA2NjAzMiwgNjYwMzcsIDY2MDQyLCA2NjA0NywgCisgICAgNjYwNTMsIDY2MDU4LCA2NjA2NCwgNjYwNjksIDY2MDc0LCA2NjA3OSwgNjYwODQsIDY2MDg5LCA2NjA5NCwgNjYwOTksIAorICAgIDY2MTA0LCA2NjExMCwgNjYxMTUsIDY2MTIwLCA2NjEyNSwgNjYxMjksIDY2MTMzLCA2NjEzOCwgNjYxNDIsIDY2MTQ3LCAKKyAgICA2NjE1MiwgNjYxNTgsIDY2MTYzLCA2NjE2NywgNjYxNzIsIDY2MTc2LCA2NjE3OSwgNjYxODEsIDY2MTg1LCA2NjE4OCwgCisgICAgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxOCwgNjYyMjIsIDMyNTI0LCA2NjIyNSwgMzI1MjksIAorICAgIDY2MjMyLCA2NjIzNywgMzI1MzQsIDY2MjQ2LCA2NjI1NSwgMzI1NDAsIDY2MjYwLCAzMjU0NSwgNjYyNjksIDY2Mjc0LCAKKyAgICAxMTU3MSwgNjYyNzgsIDY2MjgzLCA2NjI4OCwgMzI1NTAsIDY2MjkyLCA0MDE5NiwgNjYyOTYsIDY2Mjk5LCA2NjMwMywgCisgICAgODIxMSwgNjYzMDksIDY2MzE0LCA2NjMxOCwgMzcwNSwgMzI1NTUsIDY2MzIxLCA2NjMyNSwgNjYzMjgsIDY2MzMzLCAKKyAgICA2NjMzNywgNjYzNDMsIDY2MzUxLCA2NjM2NCwgNjYzNzMsIDY2Mzc5LCA2NjM4NCwgNjYzOTAsIDY2Mzk0LCA2NjQwMCwgCisgICAgNjY0MDgsIDY2NDEzLCA2NjQxNywgNjY0MjQsIDY2NDMwLCA2NjQzOCwgNjY0NDcsIDY2NDU1LCAzMjU1OCwgNjY0NjIsIAorICAgIDY2NDcyLCA2NjQ4MSwgNjY0OTQsIDY2NDk5LCA2NjUwNCwgNjY1MTMsIDY2NTE5LCA2NjUyNiwgNjY1MzcsIDY2NTQ5LCAKKyAgICA2NjU1NiwgNjY1NjUsIDY2NTc0LCA2NjU4MywgNjY1OTAsIDY2NTk2LCA2NjYwMywgNjY2MTEsIDY2NjE4LCA2NjYyNiwgCisgICAgNjY2MzUsIDY2NjQzLCA2NjY1MCwgNjY2NTgsIDY2NjY3LCA2NjY3NSwgNjY2ODQsIDY2Njk0LCA2NjcwMywgNjY3MTEsIAorICAgIDY2NzE4LCA2NjcyNiwgNjY3MzUsIDY2NzQzLCA2Njc1MiwgNjY3NjIsIDY2NzcxLCA2Njc3OSwgNjY3ODgsIDY2Nzk4LCAKKyAgICA2NjgwNywgNjY4MTcsIDY2ODI4LCA2NjgzOCwgNjY4NDcsIDY2ODU1LCA2Njg2MiwgNjY4NzAsIDY2ODc5LCA2Njg4NywgCisgICAgNjY4OTYsIDY2OTA2LCA2NjkxNSwgNjY5MjMsIDY2OTMyLCA2Njk0MiwgNjY5NTEsIDY2OTYxLCA2Njk3MiwgNjY5ODIsIAorICAgIDY2OTkxLCA2Njk5OSwgNjcwMDgsIDY3MDE4LCA2NzAyNywgNjcwMzcsIDY3MDQ4LCA2NzA1OCwgNjcwNjcsIDY3MDc3LCAKKyAgICA2NzA4OCwgNjcwOTgsIDY3MTA5LCA2NzEyMSwgNjcxMzIsIDY3MTQyLCA2NzE1MSwgNjcxNTksIDY3MTY2LCA2NzE3NCwgCisgICAgNjcxODMsIDY3MTkxLCA2NzIwMCwgNjcyMTAsIDY3MjE5LCA2NzIyNywgNjcyMzYsIDY3MjQ2LCA2NzI1NSwgNjcyNjUsIAorICAgIDY3Mjc2LCA2NzI4NiwgNjcyOTUsIDY3MzAzLCA2NzMxMiwgNjczMjIsIDY3MzMxLCA2NzM0MSwgNjczNTIsIDY3MzYyLCAKKyAgICA2NzM3MSwgNjczODEsIDY3MzkyLCA2NzQwMiwgNjc0MTMsIDY3NDI1LCA2NzQzNiwgNjc0NDYsIDY3NDU1LCA2NzQ2MywgCisgICAgNjc0NzIsIDY3NDgyLCA2NzQ5MSwgNjc1MDEsIDY3NTEyLCA2NzUyMiwgNjc1MzEsIDY3NTQxLCA2NzU1MiwgNjc1NjIsIAorICAgIDY3NTczLCA2NzU4NSwgNjc1OTYsIDY3NjA2LCA2NzYxNSwgNjc2MjUsIDY3NjM2LCA2NzY0NiwgNjc2NTcsIDY3NjY5LCAKKyAgICA2NzY4MCwgNjc2OTAsIDY3NzAxLCA2NzcxMywgNjc3MjQsIDY3NzM2LCA2Nzc0OSwgNjc3NjEsIDY3NzcyLCA2Nzc4MiwgCisgICAgNjc3OTEsIDY3Nzk5LCA2NzgwNiwgNjc4MTQsIDY3ODIzLCA2NzgzMSwgNjc4NDAsIDY3ODUwLCA2Nzg1OSwgNjc4NjcsIAorICAgIDY3ODc2LCA2Nzg4NiwgNjc4OTUsIDY3OTA1LCA2NzkxNiwgNjc5MjYsIDY3OTM1LCA2Nzk0MywgNjc5NTIsIDY3OTYyLCAKKyAgICA2Nzk3MSwgNjc5ODEsIDY3OTkyLCA2ODAwMiwgNjgwMTEsIDY4MDIxLCA2ODAzMiwgNjgwNDIsIDY4MDUzLCA2ODA2NSwgCisgICAgNjgwNzYsIDY4MDg2LCA2ODA5NSwgNjgxMDMsIDY4MTEyLCA2ODEyMiwgNjgxMzEsIDY4MTQxLCA2ODE1MiwgNjgxNjIsIAorICAgIDY4MTcxLCA2ODE4MSwgNjgxOTIsIDY4MjAyLCA2ODIxMywgNjgyMjUsIDY4MjM2LCA2ODI0NiwgNjgyNTUsIDY4MjY1LCAKKyAgICA2ODI3NiwgNjgyODYsIDY4Mjk3LCA2ODMwOSwgNjgzMjAsIDY4MzMwLCA2ODM0MSwgNjgzNTMsIDY4MzY0LCA2ODM3NiwgCisgICAgNjgzODksIDY4NDAxLCA2ODQxMiwgNjg0MjIsIDY4NDMxLCA2ODQzOSwgNjg0NDgsIDY4NDU4LCA2ODQ2NywgNjg0NzcsIAorICAgIDY4NDg4LCA2ODQ5OCwgNjg1MDcsIDY4NTE3LCA2ODUyOCwgNjg1MzgsIDY4NTQ5LCA2ODU2MSwgNjg1NzIsIDY4NTgyLCAKKyAgICA2ODU5MSwgNjg2MDEsIDY4NjEyLCA2ODYyMiwgNjg2MzMsIDY4NjQ1LCA2ODY1NiwgNjg2NjYsIDY4Njc3LCA2ODY4OSwgCisgICAgNjg3MDAsIDY4NzEyLCA2ODcyNSwgNjg3MzcsIDY4NzQ4LCA2ODc1OCwgNjg3NjcsIDY4Nzc3LCA2ODc4OCwgNjg3OTgsIAorICAgIDY4ODA5LCA2ODgyMSwgNjg4MzIsIDY4ODQyLCA2ODg1MywgNjg4NjUsIDY4ODc2LCA2ODg4OCwgNjg5MDEsIDY4OTEzLCAKKyAgICA2ODkyNCwgNjg5MzQsIDY4OTQ1LCA2ODk1NywgNjg5NjgsIDY4OTgwLCA2ODk5MywgNjkwMDUsIDY5MDE2LCA2OTAyOCwgCisgICAgNjkwNDEsIDY5MDUzLCA2OTA2NiwgNjkwODAsIDY5MDkzLCA2OTEwNSwgNjkxMTYsIDY5MTI2LCA2OTEzNSwgNjkxNDMsIAorICAgIDY5MTUwLCA2OTE1NSwgODA1OCwgNjkxNjIsIDMyNTY4LCA2OTE2NywgNjkxNzIsIDMyNTczLCA2OTE3OCwgMjA5MTYsIAorICAgIDMyNTc4LCA2OTE4MywgNjkxODksIDY5MTk3LCA2OTIwMywgNjkyMDksIDY5MjE2LCA2OTIyMywgNjkyMjgsIDY5MjMyLCAKKyAgICA2OTIzNSwgNjkyMzksIDY5MjQ4LCA2OTI1NCwgNjkyNjYsIDY5Mjc3LCA2OTI4MSwgMzA4MSwgODAzMywgNjkyODYsIAorICAgIDY5Mjg5LCA2OTI5MSwgNjkyOTUsIDY5Mjk5LCA2OTMwMywgNjkzMDksIDY5MzE0LCAyNTkyNywgNjkzMTksIDY5MzIzLCAKKyAgICA2OTMyNiwgNjkzMzEsIDY5MzM1LCA2OTM0MiwgNjkzNDgsIDY5MzUyLCA2MTcwLCA2OTM1NiwgMzI1OTUsIDY5MzYxLCAKKyAgICA2OTM2OCwgNjkzNzcsIDY5Mzg1LCA2OTM5NiwgNjk0MDQsIDY5NDEyLCA2OTQxOSwgNjk0MjYsIDY5NDMyLCA2OTQ0MywgCisgICAgMzI2MDAsIDY5NDQ4LCA2OTQ1OSwgNjk0NzEsIDY5NDc5LCA2OTQ5MCwgNjk0OTksIDY5NTEwLCA2OTUxNSwgNjk1MjMsIAorICAgIDI1NTYsIDY5NTI4LCAzNDI3MCwgNjk1NDEsIDY5NTQ1LCA2OTU1NywgNjk1NjUsIDY5NTcwLCA2OTU3OCwgMTc0NzIsIAorICAgIDY5NTg5LCA2OTU5NSwgNjk2MDIsIDY5NjEwLCA2OTYxNiwgMzI2MTAsIDY5NjIxLCAzOTE0LCA1ODIxNywgNjk2MjgsIAorICAgIDY5NjMxLCA2OTYzOSwgNjk2NTIsIDY5NjY1LCA2OTY3OCwgNjk2OTEsIDY5Njk4LCA2OTcwOSwgNjk3MTgsIDQxNjg3LCAKKyAgICA0MTY5MiwgNjk3MjMsIDY5NzI3LCA2OTczNSwgNjk3NDIsIDY5NzUxLCA2OTc1OSwgNjk3NjUsIDY5Nzc0LCA2OTc4MiwgCisgICAgNjk3OTAsIDY5Nzk0LCA2OTgwMywgNjk4MTIsIDY5ODIyLCA2OTgzNSwgNjk4NDgsIDY5ODU4LCAzMjYxNSwgNjk4NjQsIAorICAgIDY5ODcxLCA2OTg3NywgMzI2MjEsIDY5ODgyLCA2OTg4NSwgNjk4ODksIDY5ODk3LCA2OTkwNiwgNDE0MjUsIDY5OTE0LCAKKyAgICA2OTkyMywgNjk5MzEsIDY5OTM4LCA2OTk0NiwgNjk5NTYsIDY5OTY1LCA2OTk3NCwgNjk5ODMsIDY5OTkxLCA3MDAwMiwgCisgICAgNzAwMTIsIDkzNTksIDIxNTU0LCA3MDAyMSwgNzAwMjYsIDcwMDMxLCA3MDAzNSwgNzAwMzksIDcwMDQ0LCA3MDA1MCwgCisgICAgNzAwNTUsIDcwMDYwLCA3MDA2NiwgNzAwNzEsIDcwMDc2LCAyMTUxOSwgNzAwODEsIDcwMDg4LCA3MDA5NiwgNzAxMDQsIAorICAgIDcwMTA5LCA3MDExNiwgNzAxMjMsIDcwMTI4LCA3MDEzMiwgNzAxMzYsIDcwMTQ0LCA3MDE1MiwgMzI2MzgsIDcwMTU4LCAKKyAgICA3MDE2NCwgNzAxNzYsIDcwMTgyLCA3MDE4NiwgNzAxOTMsIDcwMTk4LCA3MDIwOSwgNzAyMTksIDcwMjI5LCA3MDI0MSwgCisgICAgNzAyNDcsIDcwMjU3LCA3MDI2NywgMzI2NjUsIDcwMjc2LCA3MDI4NSwgNzAyOTEsIDcwMzAzLCA3MDMxNCwgNzAzMjEsIAorICAgIDcwMzI2LCA3MDMzMCwgNzAzMzgsIDcwMzQ0LCA3MDM0OSwgNzAzNTQsIDcwMzYxLCA3MDM2OSwgNzAzODEsIDcwMzkxLCAKKyAgICA3MDQwMCwgNzA0MDksIDcwNDE2LCAzNDEzMiwgMjM4MzQsIDcwNDIyLCA3MDQyNywgNzA0MzEsIDcwNDM1LCA3MDQ0MCwgCisgICAgNzA0NDYsIDcwNDU3LCA3MDQ3MCwgNzA0NzUsIDcwNDgyLCAzMjY3MCwgNzA0ODcsIDcwNDk5LCA3MDUwOCwgNzA1MTgsIAorICAgIDcwNTI5LCA3MDU0MiwgNzA1NDksIDcwNTU4LCA3MDU2NywgNzA1NzUsIDcwNTgwLCA3MDU4NiwgMTA1OCwgNzA1OTEsIAorICAgIDcwNTk2LCA3MDYwMSwgNzA2MDYsIDcwNjEyLCA3MDYxNywgNzA2MjIsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQzLCAKKyAgICA3MDY0OCwgNzA2NTMsIDcwNjU4LCA1ODcyOSwgNzA2NjMsIDcwNjY4LCA3MDY3MywgNzA2NzgsIDcwNjg0LCA3MDY5MCwgCisgICAgNzA2OTUsIDcwNjk5LCA3MDcwNCwgNzA3MDksIDcwNzE0LCA3MDcyMCwgNzA3MjUsIDcwNzMxLCA3MDczNiwgNzA3NDEsIAorICAgIDcwNzQ2LCA3MDc1MSwgNzA3NTUsIDcwNzYxLCA3MDc2NiwgNzA3NzUsIDcwNzgwLCA3MDc4NSwgNzA3OTAsIDcwNzk1LCAKKyAgICA3MDc5OSwgNzA4MDYsIDcwODEyLCAxNzEyMiwgMTcxMjksIDcwODE3LCA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgCisgICAgNDU0ODcsIDcwODM3LCA3MDc2NywgNzA4MzksIDcwODQ5LCAzMjY3OSwgNzA4NTIsIDcwODYxLCA3MDg2NywgNjE0MywgCisgICAgMzI2ODQsIDcwODcxLCA3MDg3NywgNzA4ODIsIDcwODg4LCA3MDg5MywgNzA4OTcsIDcwOTA0LCA3MDkwOSwgNzA5MTksIAorICAgIDcwOTI4LCA3MDkzMiwgNzA5MzgsIDcwOTQ0LCA3MDk1MCwgNzA5NTQsIDcwOTYyLCA3MDk2OSwgNzA5NzcsIDcwOTg1LCAKKyAgICAzMjY4OSwgNzA5OTIsIDcwOTk1LCA3MTAwMiwgNzEwMDgsIDcxMDEzLCA3MTAxNywgNzEwMjMsIDcxMDMwLCA3MTAzNSwgCisgICAgNzEwMzksIDcxMDQ4LCA3MTA1NiwgNzEwNjIsIDcxMDY3LCAzMjY5NCwgNzEwNzQsIDcxMDgxLCA3MTA4NywgNzEwOTIsIAorICAgIDcxMDk4LCA3MTEwNSwgNzExMTEsIDIxMjgxLCAyNzQzOCwgNzExMTcsIDcxMTIyLCA3MTEyOCwgNzExNDAsIDcwODAwLCAKKyAgICA3MDgwNywgMjE0NTcsIDcxMTUwLCA3MTE1NSwgNzExNjIsIDcxMTY4LCA3MTE3NSwgNzExODEsIDcxMTkyLCA3MTE5NywgCisgICAgOTEwMywgNzEyMDUsIDcxMjA4LCA3MTIxNCwgNzEyMTgsIDcxMjIyLCA3MTIyNSwgNzEyMzEsIDMyNDQzLCA2MTk0LCA5NjQsIAorICAgIDEzNDEyLCA3MTIzOCwgNzEyNDQsIDcxMjUwLCA3MTI1NiwgNzEyNjIsIDcxMjY4LCA3MTI3NCwgNzEyODAsIDcxMjg2LCAKKyAgICA3MTI5MSwgNzEyOTYsIDcxMzAxLCA3MTMwNiwgNzEzMTEsIDcxMzE2LCA3MTMyMSwgNzEzMjYsIDcxMzMxLCA3MTMzNiwgCisgICAgNzEzNDEsIDcxMzQ2LCA3MTM1MSwgNzEzNTcsIDcxMzYyLCA3MTM2NywgNzEzNzMsIDcxMzc4LCA3MTM4MywgNzEzODksIAorICAgIDcxMzk1LCA3MTQwMSwgNzE0MDcsIDcxNDEzLCA3MTQxOSwgNzE0MjUsIDcxNDMxLCA3MTQzNywgNzE0NDIsIDcxNDQ3LCAKKyAgICA3MTQ1MywgNzE0NTgsIDcxNDYzLCA3MTQ2OSwgNzE0NzQsIDcxNDc5LCA3MTQ4NCwgNzE0ODksIDcxNDk0LCA3MTQ5OSwgCisgICAgNzE1MDQsIDcxNTA5LCA3MTUxNCwgNzE1MTksIDcxNTI0LCA3MTUyOSwgNzE1MzUsIDcxNTQwLCA3MTU0NSwgNzE1NTAsIAorICAgIDcxNTU2LCA3MTU2MSwgNzE1NjYsIDcxNTcxLCA3MTU3NiwgNzE1ODIsIDcxNTg3LCA3MTU5MiwgNzE1OTcsIDcxNjAyLCAKKyAgICA3MTYwNywgNzE2MTIsIDcxNjE3LCA3MTYyMiwgNzE2MjcsIDcxNjMyLCA3MTYzNywgNzE2NDIsIDcxNjQ3LCA3MTY1MiwgCisgICAgNzE2NTcsIDcxNjYyLCA3MTY2NywgNzE2NzIsIDcxNjc3LCA3MTY4MywgNzE2ODgsIDcxNjkzLCA3MTY5OCwgNzE3MDMsIAorICAgIDcxNzA4LCA3MTcxMywgNzE3MTgsIDE4NjQsIDE0MiwgNzE3MjMsIDcxNzI3LCA3MTczMSwgNzE3MzYsIDcxNzQ0LCA3MTc0OCwgCisgICAgNzE3NTUsIDcxNzYzLCA3MTc2NywgNzE3ODAsIDcxNzg4LCA3MTc5MiwgNzE3OTUsIDcxODAwLCA3MTgwNCwgNzE4MDksIAorICAgIDcxODEzLCA3MTgyMSwgNzE4MjUsIDIwOTI0LCA3MTgzMCwgNzE4MzQsIDYwOTMwLCA3MTgzOCwgNzE4NDEsIDcxODQ5LCAKKyAgICA3MTg1NywgNzE4NjUsIDcxODcwLCA3MTg3NywgNzE4ODMsIDcxODg5LCA3MTg5NCwgNzE5MDEsIDcxOTA2LCA3MTkxNCwgCisgICAgNjQ5MDYsIDcxOTIxLCA3MTkyNiwgNzE5MzEsIDcxOTM1LCAxMTYzOCwgNzE5MzksIDcxOTQ0LCA3MTk0OSwgNzE5NTMsIAorICAgIDcxOTU2LCA3MTk2MiwgNzE5NjYsIDcxOTc2LCA3MTk4NSwgNzE5ODgsIDcxOTkyLCA3MTk5OSwgNzIwMTIsIDcyMDE4LCAKKyAgICA3MjAyNiwgNzIwMzcsIDcyMDQ4LCA3MjA1OSwgNzIwNzAsIDcyMDc5LCA3MjA4NSwgNzIwOTQsIDcyMTAyLCA3MjExMiwgCisgICAgNzIxMjUsIDcyMTMyLCA3MjE0MywgNzIxNDksIDcyMTU0LCA3MjE1OSwgNzIxNjUsIDcyMTcxLCA3MjE4MSwgNzIxOTAsIAorICAgIDcwNDg5LCA3MjE5OCwgNzIyMDQsIDcyMjEyLCA3MjIxOCwgNzIyMjYsIDcyMjI5LCA3MjIzMywgNzIyMzcsIDcyMjQwLCAKKyAgICA3MjI0NiwgNzIyNTIsIDcyMjYwLCA3MjI3MiwgNzIyODQsIDcyMjkxLCA3MjI5NSwgNzIzMDYsIDcyMzE0LCA3MjMyMSwgCisgICAgNzIzMzMsIDcyMzQxLCA3MjM0OSwgNzIzNTYsIDcyMzYyLCA3MjM3MiwgNzIzODEsIDcyMzg2LCA3MjM5NiwgNzI0MDUsIAorICAgIDQwNzUxLCA3MjQxMiwgNzI0MTYsIDcyNDIxLCA3MjQyOSwgNzI0MzYsIDcyNDQyLCA3MjQ0NiwgNzI0NTYsIDcyNDY3LCAKKyAgICA3MjQ3NSwgNzI0ODIsIDcyNDk0LCA3MjUwNiwgNzI1MTUsIDY5NTMxLCA3MjUyMiwgNzI1MzMsIDcyNTQ3LCA3MjU1NSwgCisgICAgNzI1NjUsIDcyNTcyLCA3MjU4MCwgNzI1OTIsIDcyNjAxLCA3MjYwOSwgNzI2MTksIDcyNjMwLCA3MjY0MiwgNzI2NTEsIAorICAgIDcyNjYxLCA3MjY2OCwgNzI2NzcsIDcyNjkyLCA3MjcwMCwgNzI3MTAsIDcyNzE5LCA3MjcyNywgNzI3NDAsIDcyNzU1LCAKKyAgICA3Mjc1OSwgNzI3NjgsIDcyNzgwLCA3Mjc5MSwgNzI4MDIsIDcyODEzLCA3MjgyMywgNzI4MzQsIDcyODQyLCA3Mjg0OCwgCisgICAgNzI4NTgsIDcyODY2LCA3Mjg3MiwgMjkwMDcsIDcyODc3LCA3Mjg4MywgNzI4ODgsIDcyODk1LCA5NzAxLCAxNzQ5MiwgCisgICAgNzI5MDEsIDcyOTEwLCA3MjkxNSwgNzI5MTksIDcyOTI2LCA3MjkzMiwgNzI5MzcsIDcyOTQyLCA3Mjk1MCwgNzI5NTgsIAorICAgIDcyOTYyLCA3Mjk2NSwgNzI5NjgsIDcyOTcwLCA3Mjk3NywgNzI5ODMsIDcyOTk0LCA3Mjk5OSwgNzMwMDMsIDczMDEwLCAKKyAgICA3MzAxNiwgNzMwMjEsIDczMDI5LCA2NTQwNSwgNjU0MTUsIDczMDM1LCA3MzA0MiwgNzMwNTIsIDEwNjExLCA3MzA1OSwgCisgICAgNzMwNjQsIDI5MjAzLCA3MzA3MywgNzMwNzgsIDczMDg1LCA3MzA5NSwgNzMxMDMsIDczMTExLCA3MzEyMCwgNzMxMjYsIAorICAgIDczMTMyLCA3MzEzOSwgNzMxNDYsIDczMTUxLCA3MzE1NSwgNzMxNjMsIDczMTY4LCA3MzE3MywgNzMxODEsIDczMTg4LCAKKyAgICA3MzE5MywgNzMxOTksIDczMjAyLCA3MzIwNiwgNzMyMTUsIDcxNzc1LCA3MzIyNCwgNzMyMjgsIDczMjM0LCA3MzI0NSwgCisgICAgNzMyNTUsIDE3NTAxLCA3MzI2NiwgNzMyNzQsIDE3NTEzLCA3MzI4MSwgNzMyODUsIDczMjk0LCAyNzMyNCwgNzMzMDEsIAorICAgIDczMzA1LCA3MzMxMCwgNzMzMjcsIDczMzM5LCAxMDU2OSwgNzMzNTEsIDczMzU2LCA3MzM2MSwgNzMzNjYsIDIwOTk3LCAKKyAgICA3MzM3MCwgNzMzNzUsIDczMzgwLCA3MzM4NiwgNzMzOTEsIDU4NDYsIDIxMDAxLCA3MzM5NiwgNzM0MDEsIDczNDA3LCAKKyAgICA3MzQxNCwgNzM0MTksIDczNDI0LCA3MzQzMCwgNzM0MzYsIDczNDQyLCA3MzQ0NywgNzM0NTMsIDczNDU3LCA3MzQ3MSwgCisgICAgNzM0NzksIDczNDg3LCA3MzQ5MywgNzM0OTgsIDczNTA1LCA3MzUxNSwgNzM1MjQsIDczNTI5LCA3MzUzNCwgNzM1NDIsIAorICAgIDczNTQ3LCA3MzU1MywgNzM1NTgsIDczNTY3LCA1OTc4NiwgNzM1NzIsIDczNTc1LCA3MzU5MywgNzM2MTIsIDczNjI1LCAKKyAgICA3MzYzOSwgNzM2NTUsIDczNjYyLCA3MzY2OSwgNzM2NzUsIDczNjgyLCA3MzY4NywgNzM2OTMsIDczNjk5LCA3MzcwNywgCisgICAgNzM3MTMsIDczNzE4LCA3MzcyMywgNzM3MzksIDEwNTgyLCA3Mzc1MywgNzM3NjAsIDczNzY4LCA3Mzc3NCwgNzM3NzgsIAorICAgIDczNzgxLCA3Mzc4NiwgNzM3OTEsIDczNzk4LCA3MzgwMywgNzM4MTIsIDczODE3LCA3MzgyMywgNzM4MzIsIDczODQxLCAKKyAgICA3Mzg0NiwgNzM4NTAsIDczODU4LCA3Mzg2NywgMTE2NjcsIDczODc2LCA3Mzg4NCwgNzM4ODksIDczODk1LCAxMTY3OCwgCisgICAgNzM5MDAsIDczOTAzLCA3MzkwOCwgNzM5MTgsIDczOTI3LCA3MzkzMiwgNzM5MzgsIDczOTQzLCA3Mzk1MSwgNzM5NTgsIAorICAgIDczOTY5LCA3Mzk3OSwgNzM5ODQsIDY0ODM0LCA3Mzk4OSwgNzM5OTUsIDc0MDAwLCA3NDAwNywgNzQwMTYsIDc0MDI0LCAKKyAgICA3NDAzMCwgNzQwMzYsIDc0MDQzLCA3NDA0OSwgNzQwNTMsIDE2OTQ3LCAzMDU1LCA3NDA1OCwgNzQwNjIsIDc0MDY2LCAKKyAgICA3NDA3MiwgNzQwODEsIDc0MDg3LCA3NDA5NCwgNzQwOTgsIDc0MTE5LCA3NDE0MSwgNzQxNTcsIDc0MTc0LCA3NDE5MywgCisgICAgNzQyMDIsIDc0MjEyLCA3NDIxOSwgNzQyMjYsIDI3MjExLCA3NDIzMiwgNzQyMzYsIDc0MjQ0LCA3NDI1NiwgNzQyNjIsIAorICAgIDc0MjcwLCA3NDI3NCwgNzQyODIsIDc0Mjg5LCA3NDI5MywgNzQyOTksIDc0MzA1LCA3NDMxMCwgMzU2MywgNDE4ODcsIAorICAgIDc0MzE2LCA3NDMyMCwgNzQzMjQsIDc0MzI4LCA3NDMzMywgNzQzMzgsIDc0MzQzLCA3NDM0OSwgNzQzNTUsIDc0MzYxLCAKKyAgICA3NDM2OCwgNzQzNzQsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk4LCA3NDQwNCwgNzQ0MDksIDc0NDEzLCA3NDQxOCwgCisgICAgNzQ0MjIsIDc0NDI3LCA0MTkwMiwgNzQ0MzEsIDc0NDM2LCA3NDQ0NCwgNzQ0NDgsIDc0NDUzLCA3NDQ2MCwgNzQ0NjksIAorICAgIDc0NDc1LCA3NDQ3OSwgNzQ0ODYsIDc0NDkwLCA3NDQ5MywgNzQ1MDAsIDc0NTA5LCA3NDUxNCwgNzQ1MTgsIDc0NTI2LCAKKyAgICA3NDUzNSwgNzQ1MzksIDc0NTQ3LCA3NDU1MywgNzQ1NTgsIDc0NTYzLCA3NDU2OSwgNzQ1NzUsIDc0NTgwLCA3NDU4NCwgCisgICAgNzQ1OTAsIDc0NTk1LCA3NDU5OSwgNzQ2MDMsIDc0NjA2LCA3NDYxMSwgNzQ2MTksIDc0NjI5LCA3NDYzNCwgMzkzODcsIAorICAgIDc0NjQyLCA3NDY1NCwgNzQ2NTgsIDc0NjY0LCA3NDY3NiwgNzQ2ODcsIDc0Njk0LCA3NDcwMCwgNzQ3MDcsIDc0NzE5LCAKKyAgICA3NDcyNiwgNzQ3MzIsIDIxMDc1LCA3NDczNiwgNzQ3NDIsIDc0NzQ5LCA3NDc1NSwgNzQ3NjEsIDc0NzY2LCA3NDc3MSwgCisgICAgNzQ3NzYsIDc0Nzg1LCA3MDMzLCA3NDc5MCwgMTY0MTMsIDc0Nzk2LCA3NDgwMCwgNzQ4MDQsIDc0ODA4LCA3NDgxNiwgCisgICAgNzQ4MjUsIDc0ODI5LCA3NDgzNiwgNzQ4NDUsIDc0ODU4LCA3NDg2NCwgNzQ0MjMsIDMwMDY3LCA3NDg2OSwgNzQ4NzEsIAorICAgIDc0ODc2LCA3NDg4MSwgNzQ4ODYsIDc0ODkxLCA3NDg5NiwgNzQ5MDEsIDc0OTA2LCA3NDkxMSwgNzQ5MTYsIDc0OTIxLCAKKyAgICA3NDkyNiwgNzQ5MzEsIDc0OTM2LCA3NDk0MSwgNzQ5NDcsIDc0OTUyLCA3NDk1NywgNzQ5NjIsIDc0OTY3LCA3NDk3MiwgCisgICAgNzQ5NzcsIDc0OTgyLCA3NDk4NywgNzQ5OTMsIDc0OTk5LCA3NTAwNSwgNzUwMTAsIDc1MDE1LCA3NTAyNywgNzUwMzIsIAorICAgIDE4NzAsIDQ5LCA3NTAzNywgNzUwNDIsIDMyNzIxLCA3NTA0NiwgMzI3MjYsIDMyNzMxLCAzMjczNywgMzI3NDIsIDc1MDUwLCAKKyAgICAzMjc0NywgMjIwNzAsIDc1MDcyLCA3NTA3NiwgNzUwODAsIDc1MDg1LCA3NTA4OSwgMzI3NTEsIDc1MDkzLCA3NTEwMSwgCisgICAgMzI3NTYsIDc1MTA4LCA3NTExMSwgNzUxMTYsIDc1MTIwLCA5NTM2LCA3NTEyOSwgMzI3NjEsIDIxOTMyLCA3NTEzMiwgCisgICAgNzUxMzYsIDE0MjgsIDc1MTQxLCAzMjc3MiwgNzUxNDQsIDc1MTQ5LCAyNTcyMCwgMjU3MzAsIDM1MjMzLCA3NTE1NCwgCisgICAgNzUxNTksIDc1MTY0LCA3NTE2OSwgNzUxNzUsIDc1MTgwLCA3NTE4OSwgNzUxOTQsIDc1MjAxLCA3NTIwNywgNzUyMTIsIAorICAgIDc1MjE3LCA3NTIyMiwgNzUyMzIsIDc1MjQxLCA3NTI0NiwgNzUyNTQsIDc1MjU4LCA3NTI2NiwgMzI1ODYsIDM3Mjg4LCAKKyAgICA3NTI3MywgNzUyNzksIDc1Mjg0LCA3NTI4OSwgMTIwMDksIDc1Mjk0LCA3NTMwMCwgNzUzMDUsIDc1MzEyLCA3NTMxOCwgCisgICAgNzUzMjMsIDc1MzMxLCA3NTM0MSwgNzUzNTEsIDc1MzU3LCA3NTM2MiwgNzUzNjgsIDE3NTIzLCA3NTM3NSwgMzYwNDgsIAorICAgIDc1Mzg4LCA3NTM5MywgNzUzOTksIDMwOTY4LCA3NTQxMiwgNzU0MTgsIDc1NDIyLCA3NTQzMSwgNzU0MzgsIDc1NDQ0LCAKKyAgICA3NTQ1MiwgNzU0NjEsIDc1NDY4LCA3NTQ3NCwgNzU0NzcsIDc1NDgxLCAyNTg2MSwgNzU0ODUsIDc1NDkyLCA3NTQ5OCwgCisgICAgNzU1MDYsIDc1NTExLCAyMzk3NywgNzU1MTcsIDc1NTIwLCA3NTUyOCwgNzU1MzYsIDc1NTUwLCA3NTU1NywgNzU1NjMsIAorICAgIDc1NTcwLCA3NTU3NiwgMzI3ODYsIDc1NTgwLCA3NTU4NywgNzU1OTUsIDc1NjAzLCA3NTYwOSwgMzI3OTEsIDc1NjE3LCAKKyAgICA3NTYyMywgNzU2MjgsIDc1NjM4LCA3NTY0NCwgNzU2NTMsIDMwODA1LCAzNDY5MSwgNzU2NjEsIDc1NjY2LCA3NTY3MSwgCisgICAgNzU2NzUsIDc1NjgwLCA3NTY4NCwgNzU2OTIsIDE0OTA3LCAzOTQwMCwgNzU2OTcsIDc1NzAyLCAzMjc5NiwgNjIyMzIsIAorICAgIDc1NzA2LCA3NTcxMSwgNzU3MTUsIDc1NzI0LCA3NTczMiwgNzU3MzgsIDc1NzQzLCA3NTc0OSwgNzU3NTYsIDc1NzYyLCAKKyAgICA3NTc2NywgNzU3NzIsIDc1NzgxLCA3NTc5MywgNzU4MDgsIDMzMDU4LCA3NTgxNCwgMTY1MzIsIDMyODAwLCA3NTgxOCwgCisgICAgNzU4MjUsIDI0MDg3LCA3NTgzMSwgNzU4MzgsIDc1ODQ3LCA3NTg1NCwgNzU4NjMsIDc1ODY5LCA3NTg3NCwgNzU4ODIsIAorICAgIDc1ODg4LCAzMjgxMCwgNzU4OTMsIDc1OTAyLCA3NDY4MiwgNzU5MTEsIDc1OTE4LCA3NTkyNCwgNzU5MzAsIDc1OTQwLCAKKyAgICA3NTk0OCwgNzU5NTUsIDc1OTU5LCAzMjgxNSwgNzU5NjIsIDMyODIxLCAzMjgyNywgNzU5NjcsIDc1OTc1LCA3NTk4MywgCisgICAgNzU5OTMsIDc2MDAyLCA3NjAxMCwgNzYwMTcsIDc2MDI3LCAzMjgzMiwgNzYwMzEsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAorICAgIDc2MDQ2LCA3NjA1MCwgNzYwNTYsIDc2MDYxLCA3NjA2NSwgNzYwNzYsIDc2MDgxLCA3NjA4NiwgMzA2MCwgNzYwOTAsIAorICAgIDc2MDk3LCA3NjEwMSwgNzYxMTAsIDc2MTE4LCA3NjEyNSwgNzYxMzAsIDc2MTM1LCA2MjI3OCwgNzYxMzksIDc2MTQyLCAKKyAgICA3NjE0OCwgNzYxNTYsIDc2MTYyLCA3NjE2NiwgNzYxNzEsIDc2MTc4LCA3NjE4MywgNzYxODksIDM0NzIyLCA3NjE5NCwgCisgICAgNzYxOTcsIDc2MjAyLCA3NjIwNiwgNzYyMTEsIDc2MjE2LCA3NjIyMCwgNzYyMjgsIDc2MjMyLCAyNTczOSwgMjU3NDgsIAorICAgIDc2MjM4LCA3NjI0NCwgNzYyNTAsIDc2MjU1LCA3NjI1OSwgNzYyNjIsIDc2MjcyLCA3NjI4MSwgNzYyODYsIDc2MjkyLCAKKyAgICA3NjI5OSwgNzYzMDUsIDc2MzA5LCA3NjMxNywgNzYzMjIsIDM0NzI4LCA3NjMyNiwgNzYzMzQsIDc2MzQwLCA3NjM0NywgCisgICAgNzYzNTIsIDc2MzU2LCA3NjM2MSwgNTg0MDMsIDM0NzM0LCA3NjM2NywgNzYzNzIsIDc2Mzc2LCA3NjM4MSwgNzYzODYsIAorICAgIDc2MzkxLCA3NjM5NSwgNzY0MDAsIDc2NDA1LCA3NjQxMSwgNzY0MTYsIDc2NDIxLCA3NjQyNywgNzY0MzMsIDc2NDM4LCAKKyAgICA3NjQ0MiwgNzY0NDcsIDc2NDUyLCA3NjQ1NywgNzY0NjEsIDI0MDg2LCA3NjQ2NiwgNzY0NzEsIDc2NDc3LCA3NjQ4MywgCisgICAgNzY0ODksIDc2NDk0LCA3NjQ5OCwgNzY1MDMsIDc2NTA4LCA3NjUxMywgNzY1MTcsIDc2NTIyLCA3NjUyNywgNzY1MzIsIAorICAgIDc2NTM3LCA3NjU0MSwgMzI4NDAsIDc2NTQ5LCA3NjU1MywgNzY1NjEsIDc2NTY5LCA3NjU4MCwgNzY1ODUsIDc2NTg5LCAKKyAgICAyMjM4NCwgNzY1OTQsIDc2NjAwLCA3NjYxMCwgNzY2MTcsIDc2NjIyLCA3NjYzMSwgNzY2MzYsIDc2NjQwLCA3NjY0NSwgCisgICAgNzY2NTMsIDc2NjYxLCA3NjY2OCwgNjUwNjgsIDc2Njc0LCA3NjY4MiwgNzY2ODksIDc2NzAwLCA3NjcwNiwgNzY3MTAsIAorICAgIDc2NzE2LCAzMjg1MCwgNzY3MTksIDc2NzI2LCA3NjczNCwgNzY3MzksIDM5NTkxLCA3Njc0MywgNzY3NDgsIDc2NzU1LCAKKyAgICA3Njc2MCwgODk4NSwgNzY3NjQsIDc2NzcyLCA3Njc3OSwgNzY3ODYsIDc2NzkyLCA3NjgwNiwgNjMzNDAsIDc2ODE0LCAKKyAgICA3NjgyMCwgNzY4MjQsIDc2ODI3LCA3NjgzNSwgNzY4NDIsIDc2ODQ3LCA3Njg2MCwgNzY4NjcsIDc2ODcxLCA3Njg3OCwgCisgICAgNzY4ODMsIDYwODIzLCA3Njg4OCwgNzY4OTEsIDc2ODk4LCA3NjkwNCwgNzY5MDgsIDc2OTE2LCA3NjkyNSwgNzY5MzUsIAorICAgIDc2OTQ1LCA3Njk1NCwgNzY5NjIsIDc2OTczLCA3Njk3OCwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgMzUzNjQsIDc2OTk5LCAKKyAgICAyMTM0NCwgMzUzNzMsIDc3MDA0LCA3NzAwOSwgNzcwMTQsIDc3MDE5LCA3NzAyNCwgNzcwMjksIDc3MDM0LCA3NzAzOCwgCisgICAgNzcwNDMsIDc3MDQ4LCA3NzA1MywgNzcwNTgsIDc3MDYzLCA3NzA2OCwgNzcwNzIsIDc3MDc3LCA3NzA4MiwgNzcwODYsIAorICAgIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAzLCA3NzEwOCwgNzcxMTIsIDc3MTE3LCA3NzEyMSwgNzcxMjUsIDc3MTMwLCAKKyAgICA3NzEzNSwgNzcxNDAsIDc3MTQ1LCA3NzE0OSwgNzcxNTQsIDc3MTU5LCA3NzE2MywgNzcxNjgsIDc3MTczLCA3NzE3OCwgCisgICAgNzcxODMsIDc3MTg4LCA3NzE5MywgNzcxOTgsIDc3MjAzLCA3NzIwOCwgNzcyMTMsIDc3MjE4LCA3NzIyMywgNzcyMjgsIAorICAgIDc3MjMzLCA3NzIzOCwgNzcyNDMsIDc3MjQ4LCA3NzI1MywgNzcyNTgsIDc3MjYzLCA3NzI2NywgNzcyNzIsIDc3Mjc3LCAKKyAgICA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgNzczMTcsIDc3MzIyLCA3NzMyNiwgCisgICAgNzczMzEsIDc3MzM1LCA3NzM0MCwgNzczNDUsIDc3MzUwLCA3NzM1NSwgNzczNjAsIDc3MzY1LCA3NzM3MCwgNzczNzUsIAorICAgIDc3MzgwLCA3NzM4NCwgNzczODgsIDc3MzkzLCA3NzM5OCwgNzc0MDIsIDc3NDA3LCA3NzQxMiwgNzc0MTYsIDc3NDIxLCAKKyAgICA3NzQyNiwgNzc0MzEsIDc3NDM2LCA3NzQ0MCwgNzc0NDUsIDc3NDUwLCA3NzQ1NCwgNzc0NTksIDc3NDYzLCA3NzQ2NywgCisgICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODQsIDc3NDg4LCA3NzQ5MiwgNzc0OTYsIDc3NTAwLCA3NzUwNCwgNzc1MDgsIAorICAgIDc3NTEyLCA3NzUxNiwgNzc1MjEsIDc3NTI2LCA3NzUzMSwgNzc1MzYsIDc3NTQxLCA3NzU0NiwgNzc1NTEsIDc3NTU2LCAKKyAgICA3NzU2MSwgNzc1NjYsIDc3NTcwLCA3NzU3NCwgNzc1NzgsIDc3NTgyLCA3NzU4NiwgNzc1OTAsIDc3NTk1LCA3NzU5OSwgCisgICAgNzc2MDQsIDc3NjA4LCA3NzYxMywgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzEsIDc3NjM1LCA3NzYzOSwgNzc2NDMsIAorICAgIDc3NjQ3LCA3NzY1MSwgNzc2NTUsIDc3NjU5LCA3NzY2MywgNzc2NjcsIDc3NjcxLCA3NzY3NSwgNzc2NzksIDc3NjgzLCAKKyAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMSwgNzc3MDUsIDc3NzA5LCA3NzcxMywgNzc3MTcsIDc3NzIxLCA3NzcyNiwgCisgICAgNzc3MzAsIDc3NzM0LCA3NzczOCwgNzc3NDIsIDc3NzQ2LCA3Nzc1MCwgNzc3NTUsIDc3NzU5LCA3Nzc2NCwgNzc3NjgsIAorICAgIDc3NzcyLCA3Nzc3NiwgNzc3ODAsIDc3Nzg0LCA3Nzc4OCwgNzc3OTIsIDc3Nzk2LCA3NzgwMCwgNzc4MDQsIDc3ODA4LCAKKyAgICA3NzgxMywgNzc4MTcsIDc3ODIxLCA3NzgyNSwgNzc4MjksIDc3ODMzLCA3NzgzNywgNzc4NDEsIDc3ODQ1LCA3Nzg0OSwgCisgICAgNzc4NTMsIDc3ODU3LCA3Nzg2MiwgNzc4NjYsIDc3ODcwLCA3Nzg3NSwgNzc4ODAsIDc3ODg0LCA3Nzg4OCwgNzc4OTIsIAorICAgIDc3ODk2LCA3NzkwMCwgNzc5MDQsIDc3OTA4LCA3NzkxMiwgNzc5MTcsIDc3OTIxLCA3NzkyNiwgNzc5MzAsIDc3OTM1LCAKKyAgICA3NzkzOSwgNzc5NDQsIDc3OTQ4LCA3Nzk1NCwgNzc5NTksIDc3OTYzLCA3Nzk2OCwgNzc5NzIsIDc3OTc3LCA3Nzk4MSwgCisgICAgNzc5ODYsIDc3OTkwLCA3Nzk5NSwgMTUyMSwgNzc5OTksIDI4MjQsIDE3NTksIDE3NjQsIDc4MDAzLCA3ODAwNywgMjgyOCwgCisgICAgNzgwMTEsIDEzOTcsIDc4MDE2LCAxMzQyLCA3ODAyMCwgMjg0MCwgNzgwMjQsIDc4MDMxLCA3ODAzOCwgNzgwNTIsIDI4NDQsIAorICAgIDcxMzEsIDc4MDYxLCA3ODA2OSwgNzgwNzYsIDc4MDg3LCA3ODA5NiwgNzgxMDMsIDc4MTE1LCA3ODEyOCwgNzgxNDEsIAorICAgIDc4MTUyLCA3ODE1NywgNzgxNjQsIDc4MTc2LCA3ODE4MCwgMjg0OCwgMTE3NDAsIDc4MTkwLCA3ODE5NSwgNzgyMDQsIAorICAgIDc4MjE0LCAyODUyLCA3ODIxOSwgNzgyMjMsIDc4MjI4LCA3ODIzNSwgNzgyNDEsIDc4MjQ5LCA3ODI2MSwgMTM0NywgCisgICAgMTMwMzUsIDc4MjcxLCA3ODI3NSwgNzgyODEsIDc4Mjk1LCA3ODMwNywgNzgzMTksIDc4MzI5LCA3ODMzOCwgNzgzNDcsIAorICAgIDc4MzU2LCA3ODM2NCwgNzgzNzUsIDc4MzgzLCA0MDUxLCA3ODM5MywgNzg0MDQsIDc4NDEzLCA3ODQxOSwgNzg0MzQsIAorICAgIDc4NDQxLCA3ODQ0NywgMzU0ODksIDc4NDUyLCAyODc2LCAxMzAzOSwgNzg0NTYsIDc4NDYzLCA4OTMwLCA3ODQ3MiwgMjg4MSwgCisgICAgMzIzMzYsIDc4NDc4LCA2MDU3MiwgNzg0ODUsIDc4NDkxLCA3ODUwMiwgNzg1MDgsIDc4NTE1LCA3ODUyMSwgNzg1MjksIAorICAgIDc4NTM2LCA3ODU0MiwgNzg1NTIsIDc4NTYxLCA3ODU3MiwgNzg1NzksIDc4NTg1LCA3ODU5NSwgNzg2MDMsIDc4NjA5LCAKKyAgICA3ODYyNCwgNzg2MzAsIDc4NjM1LCA3ODY0MiwgNzg2NDUsIDc4NjUxLCA3ODY1OCwgNzg2NjQsIDc4NjcyLCA3ODY4MSwgCisgICAgNzg2ODksIDc4Njk1LCA3ODcwNCwgNDE0MjcsIDc4NzE4LCA3ODcyMywgNzg3MjksIDE0NzQ0LCA3ODczNCwgNzg3NDcsIAorICAgIDc4NzU2LCA3ODc2NCwgNzg3NzEsIDc4Nzc1LCA3ODc3OSwgNzg3ODIsIDc4Nzg5LCA3ODc5NiwgNzg4MDQsIDc4ODEyLCAKKyAgICA3ODgyMSwgNzg4MjksIDE0NjcxLCA3ODgzNywgNzg4NDIsIDc4ODQ2LCA3ODg1OCwgNzg4NjUsIDc4ODc0LCA3NDgsIAorICAgIDc4ODg0LCA3ODg5MywgNzg5MDQsIDI4OTcsIDc4OTA4LCA3ODkxMiwgNzg5MTgsIDc4OTMxLCA3ODk0MywgNzg5NTMsIAorICAgIDc4OTYyLCA3ODk3NCwgMjYzNTIsIDc4OTg1LCA3ODk5MywgNzkwMDIsIDc5MDEzLCA3OTAyNCwgNzkwMzQsIDc5MDQ0LCAKKyAgICA3OTA1MywgNzkwNjEsIDExMzA1LCA3OTA2OCwgNzkwNzIsIDc5MDc1LCA3OTA4MCwgNzkwODUsIDc5MDg5LCA3OTA5NSwgCisgICAgMTM1MiwgMTE4MTEsIDc5MTAyLCA3OTExMywgNzkxMjIsIDc5MTMwLCA3OTEzOSwgNzkxNDcsIDc5MTYzLCA3OTE3NCwgCisgICAgNzkxODMsIDc5MTkxLCA3OTIwMywgNzkyMTQsIDc5MjMwLCA3OTI0MCwgNzkyNjEsIDc5Mjc0LCA3OTI4MiwgNzkyODksIAorICAgIDE0ODU1LCA3OTMwMiwgNzkzMDcsIDc5MzEzLCA1OTA4LCA3OTMxOSwgNzkzMjIsIDc5MzI5LCA3OTMzOSwgODE3NiwgCisgICAgNzkzNDYsIDc5MzUxLCA3OTM1NiwgNzkzNjEsIDc5MzY5LCA3OTM3OCwgNzkzODYsIDk3NDksIDk3NTgsIDc5MzkxLCAKKyAgICA3OTQwMiwgNzk0MDcsIDc5NDEzLCAyOTEzLCAyOTE4LCA3OTQxOSwgMTA4NzIsIDc5NDI1LCA3OTQzMiwgNzk0MzksIAorICAgIDc5NDUyLCAyMjUxLCA2OCwgNzk0NTcsIDc5NDYyLCA3OTQ3MiwgNzk0NzgsIDc5NDg3LCA3OTQ5NSwgNzk1MDUsIDc5NTA5LCAKKyAgICA3OTUxNCwgNzk1MTgsIDc5NTMwLCAyOTQxLCA3OTUzOCwgNzk1NDYsIDc5NTUxLCA3OTU2MiwgNzk1NzMsIDc5NTgyLCAKKyAgICA3OTU4NywgNzk1OTMsIDc5NTk4LCA3OTYwOCwgNzk2MTgsIDc5NjIzLCA3OTYyOSwgNzk2MzQsIDc5NjQzLCAyMTM5NywgCisgICAgNzk2NDcsIDQxMjgsIDIwLCA3OTY1MiwgNzk2NjEsIDc5NjY4LCA3OTY3NSwgNzk2ODEsIDc5Njg3LCA4NjQsIDc5NjkyLCAKKyAgICA3OTY5NywgNjA5MDAsIDc5NzAyLCA3OTcwNywgNzk3MTMsIDc5NzE5LCA3OTcyNywgNzk3MzIsIDc5NzM5LCA3OTc0NSwgCisgICAgNzk3NTAsIDM4MDAxLCA0MTMyMSwgNzk3NTYsIDI5NDUsIDMyLCA3OTc2NiwgNzk3NzksIDc5Nzg0LCA3OTc5MiwgNzk3OTcsIAorICAgIDc5ODAzLCAyOTY3LCAyODI4OSwgNzk4MDgsIDc5ODE2LCA3OTgyMywgNzk4MjgsIDU4NjQ1LCA2MTkwMywgNzk4MzcsIAorICAgIDc5ODQxLCAxNzA0LCAxODEzLCA3OTg0NiwgNzk4NTEsIDc5ODU4LCAxODE3LCAyNDcsIDc5ODY1LCA3OTg3MSwgMjk4OSwgCisgICAgNzk4NzYsIDc5ODgxLCA3OTg4OCwgMTgyMSwgNzk4OTMsIDc5ODk5LCA3OTkwNCwgNzk5MTYsIDYxMTksIDc5OTI2LCAxODI4LCAKKyAgICA3OTkzMiwgNzk5MzcsIDc5OTQ0LCA3OTk1MSwgNzk5NjYsIDc5OTczLCA3OTk4NCwgNzk5OTIsIDI2MTgsIDc5OTk2LCAKKyAgICA4MDAwOCwgODAwMTMsIDgwMDE3LCA4MDAyMywgMjgxMTQsIDIyNTYsIDgwMDI3LCA4MDAzOCwgODAwNDIsIDgwMDQ2LCAKKyAgICA4MDA1MiwgODAwNTYsIDgwMDY1LCA4MDA2OSwgODAwODAsIDgwMDg0LCAyMzAyLCAzMjE2NSwgODAwODgsIDgwMDk4LCAKKyAgICAzMDgwLCA5MzY0LCA4MDEwNiwgODAxMTEsIDgwMTE1LCA4MDEyNCwgODAxMzEsIDgwMTM3LCAzMDUwLCAxNzEzOSwgODAxNDEsIAorICAgIDgwMTU0LCA4MDE3MiwgODAxNzcsIDgwMTg1LCA4MDE5MywgODAyMDMsIDk5NzgsIDEzMTQ3LCA4MDIxNSwgODAyMjgsIAorICAgIDgwMjM1LCA4MDI0MiwgODAyNTgsIDgwMjY1LCA4MDI3MSwgMTA5NSwgODAyNzgsIDgwMjg1LCA4MDI5NSwgODAzMDQsIAorICAgIDgwMzE2LCA0MjI5MSwgODAzMjQsIDMwNjQsIDEyMDIzLCA4MDMyNywgODAzMzUsIDgwMzM5LCA3ODIzMSwgMzA2OCwgCisgICAgODAzNDMsIDIxMTc4LCAxMjAzOSwgMzc1NiwgODAzNDcsIDMwNzQsIDgwMzUxLCA4MDM2MSwgODAzNjcsIDgwMzczLCAKKyAgICA4MDM3OSwgODAzODUsIDgwMzkxLCA4MDM5NywgODA0MDMsIDgwNDA5LCA4MDQxNSwgODA0MjEsIDgwNDI3LCA4MDQzMywgCisgICAgODA0MzksIDgwNDQ1LCA4MDQ1MSwgODA0NTcsIDgwNDYzLCA4MDQ2OSwgODA0NzUsIDgwNDgxLCA4MDQ4NywgODA0OTMsIAorICAgIDgwNDk5LCA4MDUwNSwgODA1MTEsIDgwNTE4LCA4MDUyNSwgODA1MzEsIDgwNTM3LCA4MDU0MywgODA1NDksIDgwNTU1LCAKKyAgICA4MDU2MSwgMTM1NywgMTYwNDksIDEyMDYxLCA4MDU2NywgODA1NzIsIDgwNTc3LCA4MDU4MiwgODA1ODcsIDgwNTkyLCAKKyAgICA4MDU5NywgODA2MDIsIDgwNjA3LCA4MDYxMiwgODA2MTcsIDgwNjIyLCA4MDYyNywgODA2MzIsIDgwNjM3LCA4MDY0MiwgCisgICAgODA2NDcsIDgwNjUyLCA4MDY1NywgODA2NjIsIDgwNjY3LCA4MDY3MiwgODA2NzcsIDgwNjgyLCA4MDY4NywgODA2OTIsIAorICAgIDgwNjk4LCA4MDcwMywgODA3MDgsIDgwNzE0LCA4MDcxOSwgODA3MjUsIDgwNzMwLCA4MDczNSwgODA3NDEsIDgwNzQ2LCAKKyAgICA4MDc1MSwgODA3NTYsIDgwNzYxLCA4MDc2NiwgODA3NzEsIDgwNzc2LCA4MDc4MSwgODAzNjIsIDgwMzY4LCA4MDM3NCwgCisgICAgODAzODAsIDgwMzg2LCA4MDM5MiwgODAzOTgsIDgwNDA0LCA4MDQxMCwgODA0MTYsIDgwNDIyLCA4MDQyOCwgODA0MzQsIAorICAgIDgwNDQwLCA4MDQ0NiwgODA3ODcsIDgwNDUyLCA4MDQ1OCwgODA0NjQsIDgwNzkzLCA4MDQ3MCwgODA0NzYsIDgwNDgyLCAKKyAgICA4MDQ4OCwgODA0OTQsIDgwNTAwLCA4MDUwNiwgODA1MjYsIDgwNzk5LCA4MDgwNSwgODA1MzIsIDgwODExLCA4MDUzOCwgCisgICAgODA1NDQsIDgwNTUwLCA4MDU1NiwgODA1NjIsIDMwOTEsIDMwOTYsIDgwODE3LCA4MDgyMiwgODA4MjUsIDgwODMxLCAKKyAgICA4MDgzNywgODA4NDQsIDgwODQ5LCA4MDg1NCwgMjMwNywgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KICNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA3Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjExCisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjA5CiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjE5LCAyMDYsIDI0NCwgMjU0LCA3NywgMjI0LCAxNDMsIDc3LCA1MCwgNTIsIDI0NywgODYsIDUyLCAyMjYsIDU3LCAKLSAgICA1MiwgMjU0LCAzNSwgMjUzLCAyMjYsIDQyLCAyMjYsIDEzMSwgNDYsIDIyNiwgMTMxLCAyNTMsIDEzMiwgOTQsIDUyLCAyNDksIAotICAgIDE1NywgMjQwLCAxNTksIDI0MywgMjAwLCAyMTksIDY5LCAyMTksIDIzMSwgMjEsIDIxMiwgNzksIDIxLCAxMTYsIDIxLCAKLSAgICAxMDksIDIxLCAxNjYsIDIxLCAxNjMsIDIxLCAxODAsIDIxLCAxODksIDIxLCAxOTgsIDIxLCAxOTUsIDIxLCAyMDAsIDI0OSwgCi0gICAgMTY0LCAyMjEsIDcwLCAyMzMsIDM5LCA1MiwgMjQ1LCA2MSwgNTIsIDI0MiwgMTA3LCA1MiwgMjI0LCAxNTgsIDc3LCAyNDksIAotICAgIDE1NiwgMjUzLCAxMjIsIDcsIDYsIDEsIDYxLCA3LCA2LCAxLCAyNTMsIDc0LCA3LCA2LCAxLCAyNTAsIDI1MiwgNywgNiwgMSwgCi0gICAgMjQ5LCAzLCA3LCA2LCAxLCA3NCwgNywgNiwgMSwgMjQ0LCAyMzAsIDcsIDYsIDEsIDI0MywgMTc3LCA3LCA2LCAxLCAyNDIsIAotICAgIDQxLCA3LCA2LCAxLCA3MiwgNywgNiwgMSwgMjM1LCAxNDIsIDcsIDYsIDEsIDIzNSwgMjcsIDcsIDYsIDEsIDE1MCwgNywgNiwgCi0gICAgMSwgMTgzLCA3LCA2LCAxLCAyMDQsIDcsIDYsIDEsIDc1LCA3LCA2LCAxLCAyMjYsIDIyOSwgNywgNiwgMSwgMjI0LCAyNDAsIAotICAgIDcsIDYsIDEsIDE0OSwgNywgNiwgMSwgMTk3LCA3LCA2LCAxLCAyMTgsIDk5LCA3LCA2LCAxLCA2OSwgNywgNiwgMSwgMjE1LCAKLSAgICA3OSwgNywgNiwgMSwgMjE0LCA4MiwgNywgNiwgMSwgMjEzLCAxNjYsIDcsIDYsIDEsIDIxMywgMTA1LCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgNDIsIDQxLCAxMjUsIDIyMywgMjAzLCAyMTksIDIzMSwgNDYsIDQxLCAxMjUsIDI0OSwgMjI0LCAyNTQsIDE3NCwgCi0gICAgMTE1LCAyMzIsIDI0MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCA3LCAzLCAxLCA2MSwgNywgMywgMSwgMjUzLCA3NCwgNywgMywgCi0gICAgMSwgMjUwLCAyNTIsIDcsIDMsIDEsIDI0OSwgMywgNywgMywgMSwgNzQsIDcsIDMsIDEsIDI0NCwgMjMwLCA3LCAzLCAxLCAKLSAgICAyNDMsIDE3NywgNywgMywgMSwgMjQyLCA0MSwgNywgMywgMSwgNzIsIDcsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMzUsIAotICAgIDI3LCA3LCAzLCAxLCAxNTAsIDcsIDMsIDEsIDE4MywgNywgMywgMSwgMjA0LCA3LCAzLCAxLCA3NSwgNywgMywgMSwgMjI2LCAKLSAgICAyMjksIDcsIDMsIDEsIDIyNCwgMjQwLCA3LCAzLCAxLCAxNDksIDcsIDMsIDEsIDE5NywgNywgMywgMSwgMjE4LCA5OSwgNywgCi0gICAgMywgMSwgNjksIDcsIDMsIDEsIDIxNSwgNzksIDcsIDMsIDEsIDIxNCwgODIsIDcsIDMsIDEsIDIxMywgMTY2LCA3LCAzLCAxLCAKLSAgICAyMTMsIDEwNSwgNywgMywgMSwgMjEyLCAxNTIsIDQyLCAyNDksIDQwLCAxMjUsIDcxLCAyMzIsIDI0MiwgNDYsIDI0OSwgNDAsIAotICAgIDEyNSwgMjE3LCA0MiwgMjI4LCAxODQsIDIxOSwgMjA2LCAyMzUsIDE5MSwgMjQ0LCAyNTQsIDc3LCAyNTAsIDExMCwgNTIsIAotICAgIDIyNSwgMTA4LCA1MiwgMjQ5LCAzOSwgNTIsIDIxMywgMzEsIDUyLCAyNTEsIDYzLCAxMzQsIDIyMiwgOTIsIDUyLCAyNDcsIAotICAgIDIwOSwgMjQ5LCAxMDIsIDUyLCAyNDQsIDEwNSwgMjI3LCAyMSwgMjM1LCAyMzUsIDIzMywgNjYsIDUxLCAyNTQsIDE5LCAKLSAgICAyMjQsIDE0MywgNzcsIDIyOCwgMTYzLCA1MiwgMjE5LCAyMzYsIDI0MCwgMTYwLCAyMjMsIDI1MiwgNTIsIDIzMiwgMzcsIAotICAgIDI0OCwgMjIsIDUyLCAyMjUsIDE1NSwgNTIsIDIxOCwgMjIzLCAxMDksIDIxOCwgMjIzLCAxNjYsIDI1NCwgMTY0LCAyNTQsIAotICAgIDE3NCwgMjMxLCA0MSwgNTIsIDIyNSwgMjAwLCA1MiwgMjMxLCAzNywgMjQ3LCA3NCwgMjUwLCAxMTcsIDIxOCwgMjIzLCAKLSAgICAxMTYsIDIzMSwgMjExLCAyMjcsIDIxLCAyMzUsIDIzNSwgMjIzLCAxNDQsIDUxLCAyNTQsIDE5LCAyMjQsIDE0MywgNzcsIAotICAgIDIxNCwgOTcsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDIxNCwgCi0gICAgOTcsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAyMzUsIDE5MSwgMjI0LCAxNTgsIDc3LCA3LCA2LCAxLCAxMTgsIDIsIAotICAgIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIDIsIDE3OSwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMTE4LCAKLSAgICAyLCAyMTcsIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA0OSwgNywgCi0gICAgNiwgMSwgMjU0LCAxNDgsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMTkxLCAyLCAyNDIsIAotICAgIDExMywgNywgNiwgMSwgMTkxLCAyLCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjQ3LCAyMDksIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDE3OSwgNywgCi0gICAgNiwgMSwgMjQwLCAxNDYsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIAotICAgIDI0NSwgMjUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQyLCAxMTMsIDcsIDYsIAotICAgIDEsIDE1NywgMiwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDIsIDcsIAotICAgIDYsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDIzMCwgMTU0LCA1MiwgNywgNiwgMSwgMTU3LCAyLCA5MCwgNywgNiwgMSwgMTExLCAKLSAgICAyLCAyNDIsIDExMywgNywgNiwgMSwgMTExLCAyLCAxNzksIDcsIDYsIDEsIDExMSwgMiwgMjQ5LCAyMjMsIDcsIDYsIDEsIAotICAgIDExMSwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAxNzksIDcsIDYsIDEsIDIxNywgMTA0LCA3LCAzLCAxLCAKLSAgICAyMjAsIDI1NSwgMTk3LCA3LCAzLCAxLCAxMTgsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDE3OSwgNywgMywgMSwgCi0gICAgMTE4LCAyLCAyNDksIDIyMywgNywgMywgMSwgMTE4LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI0NywgMjA5LCA3LCAKLSAgICAzLCAxLCAxMTgsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMjU0LCAxNDgsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIAotICAgIDExNywgNywgMywgMSwgMTkxLCAyLCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCAxNzksIDcsIDMsIDEsIDE5MSwgMiwgCi0gICAgMjQ5LCAyMjMsIDcsIDMsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAyNDIsIDExMywgNywgCi0gICAgMywgMSwgMjQwLCAxNDYsIDIsIDE3OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0NSwgMjUsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIxNywgNDIsIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjIzLCA3LCAKLSAgICAzLCAxLCAxNTcsIDIsIDIxNywgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMDksIDI0NywgMTIxLCA1MiwgNywgMywgMSwgCi0gICAgMTU3LCAyLCA5MCwgNywgMywgMSwgMTExLCAyLCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCAxNzksIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAxNzksIAotICAgIDcsIDMsIDEsIDIxNywgMTA0LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMjQ3LCAyMDksIDcsIDYsIDEsIDExOCwgMiwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMTE4LCAyLCAyMzIsIDM3LCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDExOCwgMiwgCi0gICAgMjUxLCA3NCwgNywgNiwgMSwgMTE4LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAxMTgsIDIsIDIyNywgOTAsIDcsIDYsIDEsIAotICAgIDI1MCwgMjUzLCAyLCAxNzksIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAxNzksIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNDksIAotICAgIDIyMywgNywgMywgMSwgMjUwLCAyNTMsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgNjIsIDQ5LCA3LCAzLCAKLSAgICAxLCAyNTAsIDI1MywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNTAsIDI1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI1MCwgCi0gICAgMjUzLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCA5MCwgNywgMywgMSwgMjQ5LCA0LCAyLCA5MCwgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyMzIsIDM3LCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDE5MSwgMiwgMjUxLCA3NCwgNywgMywgMSwgCi0gICAgMTkxLCAyLCAyNTEsIDc0LCA3LCA2LCAxLCAxOTEsIDIsIDYyLCA0OSwgNywgMywgMSwgMTkxLCAyLCA2MiwgNDksIDcsIDYsIAotICAgIDEsIDE5MSwgMiwgMjI3LCA5MCwgNywgMywgMSwgMTkxLCAyLCAyMjcsIDkwLCA3LCA2LCAxLCAxOTEsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCAzLCAxLCAxOTEsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MywgCi0gICAgMTc4LCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDI1MSwgNzQsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAKLSAgICAyNTEsIDc0LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgNjIsIDQ5LCA3LCAKLSAgICA2LCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyNTAsIDExNywgNywgNiwgMSwgCi0gICAgMjQyLCA0MiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjQyLCA0MiwgMiwgOTAsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyNDAsIAotICAgIDE0NiwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyMzIsIDM3LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjUxLCA3NCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI1MSwgNzQsIDcsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMjcsIDkwLCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMjQwLCAKLSAgICAxNDYsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQ3LCA3MywgNzIsIDcsIDYsIDI2LCAyMzYsIDI2LCA3LCAzLCAyNiwgMjM2LCAKLSAgICAyNiwgNywgNiwgMSwgMjM1LCAxNDMsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgMjQ5LCAyMjMsIDcsIDYsIAotICAgIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMzLCAKLSAgICAyNDgsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAxNzksIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAxNzksIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjMzLCAxNzEsIDIsIDIzMSwgMzcsIAotICAgIDI0NywgNzQsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyNDcsIDc0LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCA5MCwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMTc5LCA3LCAzLCAxLCAyMzAsIDk4LCAKLSAgICAyLCAxNzksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyNTAsIDExNywgNywgCi0gICAgNiwgMSwgMjMwLCA5OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMzAsIAotICAgIDk4LCAyMjUsIDg0LCAyNTEsIDcsIDI1MywgMjI2LCA3LCA2LCAxLCAyNDUsIDk2LCA3LCAzLCAxLCAyNDUsIDk2LCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjMyLCAzNywgNywgNiwgMSwgMTU3LCAyLCAyNTEsIDc0LCAKLSAgICA3LCAzLCAxLCAxNTcsIDIsIDI1MSwgNzQsIDcsIDYsIDEsIDE1NywgMiwgNTEsIDE3OSwgNywgMywgMSwgMTU3LCAyLCA1MSwgCi0gICAgMTc5LCA3LCA2LCAyNiwgMjI3LCA5OSwgNywgMywgMjYsIDIyNywgOTksIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAxNzksIDcsIAotICAgIDMsIDEsIDIyNCwgMTEzLCAyLCAxNzksIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyNTAsIDExNywgNywgMywgMSwgMjI0LCAKLSAgICAxMTMsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyNTAsIDE2NiwgNywgNiwgMSwgMjIzLCA0LCAyLCAxNzksIDcsIDMsIDEsIDIyMywgNCwgMiwgMTc5LCA3LCA2LCAxLCAyMjMsIAotICAgIDQsIDIsIDI0OSwgMjIzLCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI0OSwgMjIzLCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1MCwgCi0gICAgMTE3LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAKLSAgICAyMjMsIDQsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAxMTcsIDcsIDMsIDEsIDIxOCwgMTAwLCAKLSAgICAyLCAyNTAsIDExNywgNywgNiwgMSwgMjE4LCAxMDAsIDIsIDI1MCwgMTY2LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA5MCwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDkwLCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDIxNywgNDIsIDcsIDMsIDEsIDExMSwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTExLCAyLCAyMzIsIDM3LCA3LCAzLCAxLCAKLSAgICAxMTEsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDExMSwgMiwgMjUxLCA3NCwgNywgMywgMSwgMTExLCAyLCAyNTEsIDc0LCA3LCAKLSAgICA2LCAxLCAxMTEsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMTExLCAyLCAyMjMsIDEzMSwgNDksIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgNTEsIDE3OSwgNywgMywgMSwgMTExLCAyLCA1MSwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIDIyNywgOTAsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjI3LCA5MCwgNywgNiwgMSwgMjE0LCA4MywgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDI0OSwgCi0gICAgMjIzLCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjQ5LCAyMjMsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCAyNDksIDIyMywgNywgCi0gICAgNiwgMSwgMjEzLCAxMDYsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMTc5LCA3LCAzLCAxLCAyMTIsIAotICAgIDE1MywgMiwgMTc5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgCi0gICAgMTg0LCAxOTcsIDcsIDMsIDEsIDU0LCAyLCA5MCwgNywgNiwgMSwgNTQsIDIsIDEwMSwgNywgNiwgMSwgNTQsIDIsIDIxNiwgCi0gICAgMjI0LCA3LCAzLCAxLCA1NCwgMiwgMjE2LCAyMjQsIDcsIDYsIDEsIDE2MCwgMTg5LCA3LCAzLCAxLCAxNjAsIDE4OSwgNywgCi0gICAgNiwgMSwgMjI3LCA0MCwgNzUsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAxMDEsIDcsIDMsIDEsIDI1MCwgMjUzLCAyLCAxMDEsIAotICAgIDcsIDYsIDEsIDI1NCwgMTI0LCAyNDksIDMsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMTAxLCA3LCA2LCAxLCAyNDksIDQsIDIsIAotICAgIDIxNiwgMjI0LCA3LCAzLCAxLCAyNDksIDQsIDIsIDIxNiwgMjI0LCA3LCAzLCAxLCAyMTYsIDU4LCAyNDgsIDUsIDcsIDYsIAotICAgIDEsIDIyMywgMjAyLCA3NCwgNywgNiwgMSwgMjIyLCAxMTMsIDcsIDYsIDEsIDIyNywgNDAsIDc0LCA3LCA2LCAxLCAyNDQsIAotICAgIDIzMSwgMiwgMTAxLCA3LCAzLCAxLCAyNDQsIDIzMSwgMiwgMTAxLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMTAxLCA3LCA2LCAKLSAgICAxLCAyNDMsIDgzLCA3LCAzLCAxLCAyNDAsIDE5MywgNywgNiwgMSwgMjM1LCAxODMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICA5MCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMTAxLCA3LCAzLCAxLCAyMzUsIDI4LCAyLCAxMDEsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAxMzQsIDcsIDMsIDEsIDIzMywgMTI0LCAyLCA5MCwgNywgNiwgMSwgMjE2LCA1OCwgMTgzLCA3LCA2LCAxLCAKLSAgICAyMzAsIDk4LCAyLCA0MiwgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAxODQsIDQ2LCAyMzMsIDYwLCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzUsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAKLSAgICAyMzUsIDcsIDYsIDEsIDIyNywgODUsIDcsIDMsIDEsIDIyNywgODUsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAxMDEsIDcsIDMsIAotICAgIDEsIDIyNiwgMjMwLCAyLCAxMDEsIDcsIDEsIDIxMiwgMjA1LCA3LCA2LCAxLCAxNjAsIDEwOSwgNywgMywgMSwgMTYwLCAKLSAgICAxMDksIDcsIDYsIDEsIDI0NSwgNDAsIDcsIDEsIDIyMywgMjAyLCAyNDUsIDQxLCAyMzIsIDE3NywgNywgMywgMSwgMjE4LCAKLSAgICAxMDAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAxMDEsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAKLSAgICAxMDEsIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCAyMjMsIDIwNywgMTAxLCA3LCA2LCAxLCAxMTEsIDIsIDI0MCwgMjM1LCA3LCAKLSAgICAzLCAxLCAxMTEsIDIsIDI0MCwgMjM1LCA3LCA2LCAxLCAyMTUsIDEyOCwgNywgNiwgMSwgMjE1LCA4MCwgMiwgMTAxLCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMTAxLCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgMTAxLCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgCi0gICAgOTAsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCA5MCwgNywgNiwgMSwgMjQ0LCAyMzIsIDcsIDYsIDEsIDI0NCwgMjMzLCAyMjMsIAotICAgIDIwMSwgNywgMywgMSwgMjQ0LCAyMzMsIDIyMywgMjAxLCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjE4LCAyNywgNywgMSwgCi0gICAgMTE3LCAyLCA5MCwgNywgNiwgMSwgMTYwLCAxODAsIDcsIDMsIDEsIDE2MCwgMTgwLCA3LCAxLCAyMzUsIDE5MSwgMjQyLCAKLSAgICAxNTYsIDIxOSwgNzAsIDIsIDkwLCA3LCAxLCAyMTMsIDE2OSwgNywgMSwgMjQ3LCAyNTQsIDI0OSwgMjA0LCA3LCAxLCAyMzMsIAotICAgIDEwMCwgMjQ5LCAyMDQsIDcsIDEsIDI1NCwgNDYsIDI0OSwgMjA0LCA3LCAxLCAyMjMsIDIwNywgMjQ5LCAyMDQsIDcsIDYsIAotICAgIDEsIDI0NSwgMjUxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjQ5LCA0LCAyLCAzLCAxLCAyMTIsIDE1MywgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDMsIDEsIDI0NSwgMjUxLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMjMyLCAyMTcsIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAzLCAxLCAyMzUsIDE0MiwgNywgMywgMSwgMjMyLCAyMTcsIDcsIDYsIDEsIDIyOSwgMTcsIDcsIDYsIDEsIAotICAgIDIzMCwgOTgsIDIsIDMsIDEsIDIzNSwgMTQyLCA3LCAzLCAxLCAyMjksIDE3LCA3LCA2LCAxLCAxMTgsIDIsIDI1MCwgMTY2LCAKLSAgICA3LCAzLCAxLCAxMTgsIDIsIDI1MCwgMTY2LCA3LCA2LCAxLCAyNDAsIDE0NiwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MCwgCi0gICAgMTQ2LCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMTU3LCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMTU3LCAyLCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMTExLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMTExLCAyLCAyNTAsIDE2NiwgNywgNiwgMSwgMTExLCAyLCAKLSAgICAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCA2LCAxLCAKLSAgICAxMTEsIDIsIDI0NywgMjEwLCAyNCwgMjUwLCAxNjYsIDcsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMTAsIDI0LCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMTExLCAyLCAyNDcsIDIxMCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCAyNCwgCi0gICAgMjQyLCAxMTMsIDcsIDMsIDEsIDIxNiwgNTgsIDc0LCA3LCA2LCAxLCAxMTgsIDIsIDI0NywgMjEwLCAyNCwgMjMyLCAzNywgCi0gICAgNywgMywgMSwgMTE4LCAyLCAyNDcsIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDc4LCAyNCwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMTE4LCAyLCA2MiwgNzgsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyNTQsIDE0OSwgMiwgMjMyLCAzNywgCi0gICAgNywgMywgMSwgMjU0LCAxNDksIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDI0MywgMTc4LCAyLCA5MCwgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDkwLCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyNTAsIAotICAgIDE2NiwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI1MCwgMTY2LCA3LCA2LCAKLSAgICAxLCAxNTcsIDIsIDIyNywgOTAsIDcsIDMsIDEsIDE1NywgMiwgMjI3LCA5MCwgNywgNiwgMSwgMTU3LCAyLCAyMjcsIDkxLCAKLSAgICAyNCwgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCAyMjcsIDkxLCAyNCwgMjMyLCAzNywgNywgNiwgMSwgMjQ0LCAyMzMsIDIsIAotICAgIDI1MCwgMTY2LCA3LCAzLCAxLCAyNDQsIDIzMywgMiwgMjUwLCAxNjYsIDcsIDMsIDEsIDIzNSwgMTQzLCAyLCAyNTAsIDE2NiwgCi0gICAgNywgNiwgMSwgMjQ1LCAyNTAsIDcsIDYsIDEsIDI0OSwgNCwgMiwgMywgMSwgMjEyLCAxNTIsIDcsIDMsIDEsIDI0NSwgMjUwLCAKLSAgICA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMTc5LCA3LCAzLCAxLCAyNDMsIDE3OCwgMiwgMTc5LCA3LCA2LCAxLCAyNDAsIDE5MSwgCi0gICAgNywgNiwgMSwgMjEzLCAxNjksIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAKLSAgICAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAyMjMsIDEzMSwgNzgsIDI0LCAxNzksIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAKLSAgICAxMzEsIDc4LCAyNCwgMTc5LCA3LCA2LCAxLCAyNTQsIDE0OSwgMiwgMTc5LCA3LCAzLCAxLCAyNTQsIDE0OSwgMiwgMTc5LCAKLSAgICA3LCA2LCAxLCAxNTcsIDIsIDIxOSwgNDUsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjE5LCA0NSwgMjQsIDE3OSwgNywgCi0gICAgNiwgMSwgMTE4LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgNTEsIDI0MiwgMTEzLCA3LCA2LCAxLCAxMTgsIAotICAgIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCAzLCAxLCAxMTgsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTkxLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDE5MSwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAKLSAgICAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDE1NywgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICA1MSwgMjQyLCAxMTMsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAKLSAgICAyMzUsIDE5MSwgMjUxLCA3NCwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDIzNSwgMTkxLCAyNTEsIDc0LCA3LCA2LCAxLCAxMTEsIAotICAgIDIsIDUxLCAyNDIsIDExMywgNywgMywgMSwgMTExLCAyLCA1MSwgMjQyLCAxMTMsIDcsIDYsIDEsIDExMSwgMiwgMjM1LCAKLSAgICAxOTEsIDI1MSwgNzQsIDcsIDMsIDEsIDExMSwgMiwgMjM1LCAxOTEsIDI1MSwgNzQsIDcsIDYsIDEsIDIyMywgNCwgMiwgCi0gICAgMjQ5LCAxNTgsIDU1LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI0OSwgMTU4LCA1NSwgNywgNiwgMSwgMjE4LCAxMDAsIDIsIAotICAgIDI0OSwgMTU4LCA1NSwgNywgMywgMSwgMjE4LCAxMDAsIDIsIDI0OSwgMTU4LCA1NSwgNywgNiwgMSwgMjEyLCAyMjIsIDcsIAotICAgIDMsIDEsIDIxMiwgMjIyLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNTAsIDE2NiwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUwLCAKLSAgICAxNjYsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDE4NCwgNDYsIDIzMywgNjAsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjQ5LCA0MSwgCi0gICAgNywgNiwgMSwgMjI3LCAyLCA3LCAzLCAxLCAyMjcsIDIsIDcsIDYsIDEsIDIxMiwgMTUzLCAyLCAxMDEsIDcsIDMsIDEsIAotICAgIDIxMiwgMTUzLCAyLCAxMDEsIDcsIDYsIDEsIDExOCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDYyLCA0OSwgNywgNiwgCi0gICAgMSwgMTkxLCAyLCAyNTAsIDExNywgNywgMywgMSwgMTkxLCAyLCAyNTAsIDExNywgNywgNiwgMSwgMTU3LCAyLCAyNDcsIAotICAgIDIxMCwgMjQsIDIzMiwgMzcsIDcsIDMsIDEsIDE1NywgMiwgMjQ3LCAyMTAsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAxNTcsIAotICAgIDIsIDIxNywgNDMsIDI0LCAyMzIsIDM3LCA3LCAzLCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAKLSAgICAxNTcsIDIsIDYyLCA0OSwgNywgMywgMSwgMTU3LCAyLCA2MiwgNDksIDcsIDYsIDEsIDE1NywgMiwgNjIsIDc4LCAyNCwgCi0gICAgMjMyLCAzNywgNywgMywgMSwgMTU3LCAyLCA2MiwgNzgsIDI0LCAyMzIsIDM3LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgMjMyLCAKLSAgICAzNywgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIzMiwgMzcsIDcsIDMsIDEsIDIzMywgMTcxLCAyLCAyNDksIDQxLCA3LCAzLCAKLSAgICAxLCAyMzAsIDk4LCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ5LCA0MSwgNywgMywgMSwgMjQ3LCA3MywgCi0gICAgMjM1LCAxNDIsIDcsIDMsIDEsIDI0OCwgODksIDI0NywgMTcyLCA3LCAzLCAxLCAyMjQsIDE3NiwgMjQ3LCAxNzIsIDcsIDYsIAotICAgIDEsIDExOCwgMiwgOTAsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCA5MCwgNywgMywgMSwgMjUwLCAyNTMsIDIsIDkwLCA3LCA2LCAKLSAgICAxLCAyMzMsIDE3MSwgMiwgMTM0LCA3LCA2LCAxLCAyMTgsIDEwMCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCAzLCAxLCAyMjMsIDQsIAotICAgIDIsIDIxOCwgMTk1LCAyMTgsIDI3LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIDYsIDEsIAotICAgIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAzLCAxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgNiwgMSwgNTQsIDIsIDkwLCA3LCA2LCAKLSAgICAxLCAxMTEsIDEzNCwgNywgNiwgMSwgMjE2LCA1OCwgMjE1LCA3OSwgNywgNiwgMSwgMTkxLCAyLCA5MCwgNywgMywgMSwgCi0gICAgMTkxLCAyLCA5MCwgNywgNiwgMSwgMjM1LCAxNDMsIDIsIDkwLCA3LCAzLCAxLCAyMzUsIDE0MywgMiwgOTAsIDcsIDYsIDEsIAotICAgIDMsIDIyNCwgMjQxLCAyLCAyNDEsIDM4LCAyMTgsIDI3LCA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMjQxLCAzOCwgMjE4LCAyNywgCi0gICAgNywgNiwgMSwgMjI0LCAxMTMsIDIsIDkwLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgOTAsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAKLSAgICA5MCwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDkwLCA3LCAzLCAxLCAyMTYsIDU4LCA2MSwgNywgMywgMSwgMjU0LCA1MiwgNywgCi0gICAgMywgMSwgMjE2LCA1OCwgMjU0LCA1MiwgNywgMywgMSwgNTQsIDIsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgNzUsIDcsIDMsIAotICAgIDEsIDI1MCwgMjUzLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDksIDQsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIDI0OSwgNCwgMiwgCi0gICAgMTAxLCA3LCAzLCAxLCAyMjMsIDIwMiwgNzQsIDcsIDMsIDEsIDIyMiwgMTEzLCA3LCAzLCAxLCAyMjIsIDExNCwgMiwgMTAxLCAKLSAgICA3LCAzLCAxLCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA3LCAzLCAxLCAyMjMsIDIwMiwgCi0gICAgMjI3LCA0MCwgMTkxLCAyLCAxMDEsIDcsIDMsIDEsIDI0OSwgMTkzLCAyMjMsIDIwMiwgMjI3LCA0MCwgNzQsIDcsIDMsIDEsIAotICAgIDI0NywgNzMsIDIzNSwgMTQzLCAyLCA5MCwgNywgMywgMSwgMjQzLCAxNzgsIDIsIDEwMSwgNywgMywgMSwgMTEzLCAyNDMsIAotICAgIDE3NywgNywgMSwgMywgNiwgMjQzLCAxNzcsIDcsIDMsIDEsIDI0MywgODMsIDcsIDMsIDEsIDIyNCwgNDMsIDI0MCwgMjM1LCAKLSAgICA3LCAzLCAxLCAyMTYsIDU4LCAyNDIsIDQxLCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAxMDEsIDcsIDMsIDEsIDI0MSwgMTkyLCAKLSAgICAyLCAxMDEsIDcsIDMsIDEsIDI0MCwgMTQ2LCAyLCA5MCwgNywgMywgMSwgMjM1LCAxODMsIDcsIDEsIDMsIDYsIDcyLCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjMzLCAxNzEsIDIsIDI1MSwgMjE4LCA3LCAKLSAgICAzLCAxLCAyMzMsIDE3MSwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjMzLCAyNywgNywgMywgMSwgMjE2LCA1OCwgCi0gICAgMTgzLCA3LCAzLCAxLCAyMTYsIDU4LCAyMzIsIDExMCwgMiwgMTg0LCAyMzMsIDYwLCA3LCAzLCAxLCAyMzIsIDExMCwgMiwgCi0gICAgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCA0MiwgMTAxLCA3LCAzLCAxLCAyMzAsIDk4LCAyLCAyMjMsIDIwNywgMTAxLCA3LCAKLSAgICAxLCAzLCA2LCAyMDQsIDcsIDMsIDEsIDI1MiwgNTQsIDc1LCA3LCAxLCAzLCA2LCAyMjcsIDk5LCA3LCAzLCAxLCAyNDksIAotICAgIDE5MywgMjI3LCA2NywgNywgMywgMSwgMjI2LCA5LCA3LCAzLCAxLCAyMTYsIDU4LCAxNDksIDcsIDMsIDEsIDIxNiwgNTgsIAotICAgIDIyNCwgMTEzLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNCwgMTEzLCAyLCAxMDEsIDcsIDMsIDEsIAotICAgIDIyNCwgMTEzLCAyLCAxODQsIDIzMywgNjAsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAyMjQsIAotICAgIDExMywgMiwgMjQ0LCA1NiwgNywgMywgMSwgMjIzLCAyMDIsIDIyNCwgMTEzLCAyLCAyNDQsIDU2LCA3LCAxLCAzLCA2LCAKLSAgICAxNDksIDcsIDEsIDMsIDYsIDIzNSwgMTkxLCAxNDksIDcsIDMsIDEsIDIyMywgNCwgMiwgMTAxLCA3LCAzLCAxLCAyNDUsIAotICAgIDQwLCA3LCAzLCAxLCAyNDcsIDczLCAyMzUsIDE0MywgMiwgMjE5LCA0NSwgMjQsIDEwMSwgNywgMywgMSwgMjE5LCAxNjMsIAotICAgIDIyMywgMjAyLCAyNDUsIDQwLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyMTYsIDU4LCAyMTgsIAotICAgIDk5LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMTExLCAxMzQsIDcsIDMsIDEsIDIxNSwgCi0gICAgMTI4LCA3LCAzLCAxLCAyMTUsIDgwLCAyLCAxMDEsIDcsIDMsIDEsIDIxNiwgNTgsIDIxNSwgNzksIDcsIDMsIDEsIDIxNiwgCi0gICAgNTgsIDIxNCwgODIsIDcsIDMsIDEsIDIxNiwgNTgsIDIxMywgMTA1LCA3LCAxLCAzLCA2LCAyMTMsIDEwNSwgNywgMywgMSwgCi0gICAgMjEyLCAxNTMsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDQxLCA3LCAzLCAxLCAyNDQsIAotICAgIDIzMiwgNywgMywgMSwgMjQ0LCAyMzMsIDIsIDI0OSwgNDEsIDcsIDEsIDI0MiwgMTU2LCAyMTksIDY5LCA3LCAxLCAyMjYsIAotICAgIDE1LCAyMTQsIDExNiwgMjQzLCAyMTksIDcsIDEsIDIzNSwgMTkxLCAyNDIsIDE1NiwgMjE5LCA2OSwgNywgMSwgMjE5LCA1MCwgCi0gICAgMjUwLCAyNTIsIDcsIDEsIDI1MSwgMTY5LCAyNDksIDIwNCwgNywgMSwgMywgNiwgMjUzLCA3NCwgNywgMywgMSwgMjQ5LCAKLSAgICAxOTMsIDIyNywgNDAsIDc0LCA3LCAxLCAzLCA2LCAyNDMsIDE3OCwgMiwgMTAxLCA3LCAxLCAzLCA2LCAyNDIsIDQxLCA3LCAKLSAgICAzLCAxLCAyMzUsIDE0MywgMiwgMjQ5LCA2NywgNywgMywgMSwgMjE2LCA1OCwgMjM1LCAyNywgNywgMSwgMywgNiwgMTUwLCAKLSAgICA3LCAzLCAxLCAyMjQsIDI0MSwgMiwgMTAxLCA3LCAxLCAyNDIsIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDEsIDIyMywgCi0gICAgMjAyLCAyNDIsIDE1NiwgMjE5LCA3MCwgMiwgOTAsIDcsIDMsIDEsIDI0NSwgMjUxLCAyNDcsIDE3MiwgNywgMywgMSwgMjQ3LCAKLSAgICAyMzMsIDI0NywgMTcyLCA3LCAzLCAxLCAyNDUsIDI1MSwgMjQ3LCAxNzMsIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDIxNiwgCi0gICAgMTQzLCAyNDcsIDE3MiwgNywgMywgMSwgMjE3LCAxODgsIDI0NywgMTcyLCA3LCAzLCAxLCAyMTcsIDIzNiwgMjQ3LCAxNzMsIAotICAgIDIsIDI0OSwgNDEsIDcsIDMsIDEsIDI0NCwgMTAzLCAyNDcsIDE3MiwgNywgMywgMSwgMjMyLCAxNTgsIDI0NywgMTcyLCA3LCAKLSAgICAzLCAxLCAyMzIsIDExMSwgMjQ3LCAxNzIsIDcsIDEsIDI1MSwgMTY5LCAyMjYsIDU2LCA3LCAxLCAyNTEsIDE3NywgMjI2LCAKLSAgICA1NiwgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MiwgMiwgMjQ0LCA1NiwgNywgMywgMSwgMjE2LCA1OCwgMjQyLCA0MiwgMiwgCi0gICAgMjQ0LCA1NywgMjQsIDIxOCwgMjcsIDU5LCAxLCAzLCAyNDIsIDQxLCA1OSwgMSwgMywgMjQyLCA0MiwgMiwgMTAxLCA1OSwgCi0gICAgMSwgMywgMjM1LCAxNDIsIDU5LCAxLCAzLCAxNDksIDU5LCAxLCAzLCAyMTYsIDU4LCAxNDksIDU5LCAxLCAzLCAyMTYsIDU4LCAKLSAgICAyMjQsIDExMywgMiwgMTAxLCA1OSwgMSwgMywgNiwgMjM1LCAxOTEsIDE0OSwgNTksIDEsIDMsIDIxNCwgODIsIDU5LCAxLCAKLSAgICAzLCAyMTMsIDEwNSwgNTksIDEsIDIyNSwgNzEsIDU5LCAxLCA1MSwgMjI1LCA3MSwgNTksIDEsIDIxNiwgNTgsIDI0OSwgCi0gICAgMTU3LCA1OSwgMSwgMjUzLCAyMjYsIDU5LCAxLCAyMjMsIDIwMiwgMjQ5LCAxNTcsIDU5LCAxLCA0NiwgMTUxLCAyMjMsIAotICAgIDEzMCwgNTksIDEsIDQyLCAxNTEsIDIyMywgMTMwLCA1OSwgMSwgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCAyMjMsIDIwMiwgCi0gICAgMjQyLCAxNTYsIDIxOSwgNjksIDU5LCAxLCA0MiwgMjUzLCAxNjQsIDU5LCAxLCA0NiwgMjUzLCAxNjQsIDU5LCAxLCAxMTQsIAotICAgIDI1MywgMTY0LCA1OSwgMSwgMTE5LCAyNTMsIDE2NCwgNTksIDEsIDI0OSwgMjI0LCAyNTQsIDE3NCwgMjUwLCAxNjYsIDU5LCAKLSAgICAxLCA3MSwgMjMyLCAyNDIsIDU5LCAxLCAyMzIsIDM3LCA1OSwgMSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjQyLCAKLSAgICAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMTE1LCA3MSwgMjMyLCAyNDIsIDU5LCAxLCAxMTUsIDIzMiwgMzcsIDU5LCAxLCAxMTUsIAotICAgIDI0MiwgMTE0LCAyNTQsIDE3NCwgNTksIDEsIDExNSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjE2LCAxODAsIDI0OSwgCi0gICAgMTY0LCA1OSwgMSwgMTUxLCAyMTYsIDE4MCwgMjQ5LCAxNjQsIDU5LCAxLCAyNTAsIDEwNywgNDYsIDE1MSwgMjIzLCAxMzAsIAotICAgIDU5LCAxLCAyNTAsIDEwNywgNDIsIDE1MSwgMjIzLCAxMzAsIDU5LCAxLCAxMTQsIDIxOCwgMzYsIDU5LCAxLCAxMTksIDIxOCwgCi0gICAgMzYsIDU5LCAxLCA5NCwgNTIsIDU5LCAxLCAyMzAsIDI1MSwgNTIsIDI1MSwgNzQsIDYyLCA0OSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAyMjcsIDkwLCAzLCAyMTcsIDQyLCA1MSwgMjU0LCAxNjQsIDI1NCwgMTc0LCA1OSwgMSwgMjIzLCAxODksIDEwMSwgNTksIDEsIAotICAgIDI0OSwgNzEsIDI1NCwgMTc0LCA1OSwgMSwgMywgMjQzLCA4MywgNTksIDEsIDMsIDE1MCwgNTksIDEsIDMsIDE5NywgNTksIAotICAgIDEsIDMsIDIxMywgMTY2LCA1OSwgMSwgMywgMjIzLCAyMDIsIDI0MiwgMTU2LCAyMTksIDY5LCA1OSwgMSwgMjQ0LCAyNDQsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgMTI0LCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAKLSAgICAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAxNjAsIDEzNCwgNTksIDEsIDIxMiwgMjQ1LCAyNDcsIDI1MSwgMTYwLCA3NywgCi0gICAgNTksIDEsIDIxMywgNTksIDI0NywgMjUxLCAxNjAsIDc3LCA1OSwgMSwgMjE0LCAxMTQsIDU5LCAxLCAyMTUsIDE1NiwgNTksIAotICAgIDEsIDUxLCAyNTMsIDIyNiwgNTksIDEsIDExNSwgMTE5LCAyNTMsIDE2NCwgNTksIDEsIDExNSwgMTE0LCAyNTMsIDE2NCwgCi0gICAgNTksIDEsIDExNSwgNDIsIDI1MywgMTY0LCA1OSwgMSwgMTE1LCA0NiwgMjUzLCAxNjQsIDU5LCAxLCAxMTUsIDIyMywgMTMwLCAKLSAgICA1OSwgMSwgMjMxLCAzNywgMjQyLCAxMTQsIDI1NCwgMTc0LCA1OSwgMSwgMjMxLCAzNywgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgNTksIDEsIDIzMSwgMzcsIDUxLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDU5LCAxLCAxMTUsIDIxNywgNDIsIDU5LCAxLCAKLSAgICAyMjQsIDQ4LCAyNDksIDE2NCwgNTksIDEsIDI1MSwgMjM0LCAxMjQsIDIxNiwgMjQxLCA1OSwgMSwgMjQ1LCAxMDEsIDEyNCwgCi0gICAgMjE2LCAyNDEsIDU5LCAxLCAyNTEsIDIzNCwgMTE1LCAyMTYsIDI0MSwgNTksIDEsIDI0NSwgMTAxLCAxMTUsIDIxNiwgMjQxLCAKLSAgICA1OSwgMSwgMjIwLCAyMzQsIDU5LCAxLCAyMjcsIDQwLCAyMjAsIDIzNCwgNTksIDEsIDExNSwgNDIsIDY4LCAzNywgMjQyLCAKLSAgICAxMTQsIDI1NCwgMTc0LCAzNywgMjU0LCAxNjQsIDI1NCwgMTc0LCAzNywgMjQ5LCAyMjQsIDI1NCwgMTc0LCAzNywgMjE3LCAKLSAgICA0MiwgMzcsIDIzMiwgMzcsIDM3LCAyMjYsIDI0MywgMzcsIDI1MSwgNzQsIDM3LCA2MiwgNDksIDM3LCAyNDcsIDIwOSwgMzcsIAotICAgIDI0MSwgMzgsIDQ5LCAzNywgMjIzLCAxMzEsIDQ5LCAzNywgNTEsIDI1NCwgMTY0LCAyNTQsIDE3NCwgMzcsIDI1MCwgMTY2LCAKLSAgICAzNywgNzEsIDIzMiwgMjQzLCA0OSwgMzcsIDUxLCA3MSwgMjMyLCAyNDMsIDQ5LCAzNywgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgMzcsIDI1MCwgMTg3LCAzNywgMjM1LCAxOTEsIDI1MSwgNzQsIDM3LCAyMTYsIDU4LCAyNDksIDE1OCwgNDksIDM3LCAKLSAgICAyNDksIDE1OCwgNDksIDM3LCAyMjMsIDIwMiwgMjQ5LCAxNTgsIDQ5LCAzNywgMjQ5LCAxNTgsIDc4LCAyMjMsIDE0OCwgMzcsIAotICAgIDI0MiwgMTE0LCAyNTQsIDE3NSwgNTUsIDM3LCAyNTQsIDE2NCwgMjU0LCAxNzUsIDU1LCAzNywgNDIsIDIxOCwgMzcsIDU1LCAKLSAgICAzNywgNDYsIDIxOCwgMzcsIDU1LCAzNywgNDIsIDI1NCwgMTksIDQ5LCAzNywgMjQwLCAyMzUsIDM3LCA0MiwgMTUxLCAyMjMsIAotICAgIDEzMSwgNTUsIDM3LCAxMTQsIDIxOCwgMzcsIDU1LCAzNywgMTE5LCAyMTgsIDM3LCA1NSwgMzcsIDk0LCA1LCA1NSwgMzcsIAotICAgIDIzMCwgMjUxLCA1LCA1NSwgMzcsIDIyNiwgMTkxLCAyNDEsIDM4LCA1NSwgMzcsIDIyMywgMjA3LCAyNDEsIDM4LCA1NSwgCi0gICAgMzcsIDYyLCA1NSwgMzcsIDI0NywgMjEwLCA1NSwgMzcsIDIyMywgMTMxLCA1NSwgMzcsIDI0OSwgMTU4LCA1NSwgMzcsIAotICAgIDI1MCwgMTE3LCAzNywgMjI3LCA5MCwgMzcsIDcxLCAyMzIsIDI0MywgNTUsIDM3LCAyNTEsIDY4LCA1NSwgMzcsIDIzNSwgCi0gICAgMTkxLCA1MSwgMjUzLCAxOTQsIDU1LCAzNywgMjUwLCAxNjcsIDU1LCAzNywgMjQ5LCAyMjQsIDI1NCwgMTc1LCA1NSwgMzcsIAotICAgIDI1MSwgNzUsIDU1LCAzNywgMjM1LCAxOTEsIDI1MSwgNzUsIDU1LCAzNywgMjE3LCA0MywgNTUsIDM3LCAyMzIsIDM4LCA1NSwgCi0gICAgMzcsIDExNSwgMjMyLCAyNDIsIDM3LCA1MSwgMTE1LCAyMzIsIDI0MiwgMzcsIDIxNywgNDMsIDIyNiwgMjQ0LCAzNywgMjIwLCAKLSAgICAxNzUsIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMTg0LCAyMTksIDQ1LCAyMjYsIDI0NCwgMzcsIDIyMCwgMTc1LCAyMTksIAotICAgIDIzMiwgMjI2LCAyNDQsIDM3LCAxODQsIDIxOSwgMjMyLCAyMjYsIDI0NCwgMzcsIDQ2LCAxNTEsIDIyMywgMTMxLCA1NSwgCi0gICAgMzcsIDIzNSwgMTkxLCAyNTEsIDY4LCA1NSwgMzcsIDQxLCA1NSwgMzcsIDIyMiwgOTksIDU1LCAzNywgMjEzLCAxNjcsIDQ5LCAKLSAgICAzNywgNzEsIDIxNywgNDIsIDM3LCA1MSwgMjI2LCAyNDMsIDM3LCAyNDIsIDExNCwgMTYwLCA3NywgMzcsIDI1NCwgMTY0LCAKLSAgICAxNjAsIDc3LCAzNywgMjUsIDIyNiwgNTAsIDM3LCAyNSwgMjM0LCAxMSwgMzcsIDI1LCAyNDcsIDIwNCwgMjE2LCAyMzEsIAotICAgIDM3LCAyNSwgMjEyLCAyMTAsIDM3LCAyNTEsIDY4LCA0OSwgMzcsIDI0NSwgNjEsIDUsIDU1LCAzNywgNTEsIDcxLCAyMzIsIAotICAgIDI0MywgNTUsIDM3LCA0MiwgMjU0LCAxOSwgNTUsIDM3LCAyMjgsIDE2MywgMjE3LCA0MywgNDksIDM3LCAyNDEsIDQ0LCA0OSwgCi0gICAgMzcsIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDQ5LCAzNywgNDIsIDQ2LCA3NiwgNTUsIDM3LCAyMTUsIDEyNCwgNzYsIDU1LCAKLSAgICAzNywgMjQyLCAxMTgsIDIzNSwgNjYsIDM3LCA0NiwgMjUzLCAxNjUsIDQ5LCAzNywgNDIsIDE1MSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAzNywgMjQ0LCAxMDAsIDM3LCAyMTMsIDE2NywgNTUsIDM3LCA0MiwgMjUzLCAxNjUsIDU1LCAzNywgNDYsIDI1MywgMTY1LCAKLSAgICA1NSwgMzcsIDQ2LCAyNTMsIDE2NSwgMjQsIDExNCwgMjUzLCAxNjUsIDU1LCAzNywgNDYsIDE1MSwgMjIzLCAxMzEsIDQ5LCAKLSAgICAzNywgNjIsIDc4LCAyMjMsIDE0OCwgMzcsIDI1MywgMTMzLCA1NSwgMzcsIDUxLCAyMjMsIDEzMSwgNTUsIDM3LCAyMTIsIAotICAgIDI4LCA0OSwgMzcsIDUxLCAyNTEsIDc1LCA1NSwgMzcsIDUxLCAyNTEsIDc0LCAzNywgNTEsIDIzMiwgMzcsIDM3LCA1MSwgCi0gICAgMjMyLCAzOCwgNTUsIDM3LCA1MSwgMjE3LCA0MiwgMzcsIDUxLCAyMzUsIDE5MSwgMjUxLCA3NCwgMzcsIDUxLCA5NSwgNzYsIAotICAgIDU1LCAzNywgNywgMywgMSwgNjEsIDM3LCA3LCAzLCAxLCA3NCwgMzcsIDcsIDMsIDEsIDcyLCAzNywgNywgMywgMSwgNzUsIAotICAgIDM3LCA3LCAzLCAxLCA2OSwgMzcsIDcsIDMsIDEsIDI1MCwgMjUyLCAzNywgNywgMywgMSwgMjQ5LCAzLCAzNywgNywgMywgMSwgCi0gICAgMjQyLCA0MSwgMzcsIDcsIDMsIDEsIDE4MywgMzcsIDcsIDMsIDEsIDE0OSwgMzcsIDcsIDMsIDEsIDIxOCwgOTksIDM3LCA3LCAKLSAgICAzLCAxLCAyMTUsIDc5LCAzNywgNywgMywgMSwgMjEzLCAxNjYsIDI1LCA2LCAxLCAyNDEsIDE4MSwgMjUsIDMsIDEsIDI0MSwgCi0gICAgMTgxLCAyNSwgNiwgMSwgMjUzLCAxOTMsIDIyMiwgMTYxLCAyNSwgMywgMSwgMjUzLCAxOTMsIDIyMiwgMTYxLCAyNSwgMjI4LCAKLSAgICA1NCwgNTIsIDI1LCAyMzIsIDE2MywgMjI4LCA1NCwgNTIsIDI1LCA2LCAxLCAyMjYsIDE3OCwgMjQ3LCAxNzksIDI1LCAzLCAKLSAgICAxLCAyMjYsIDE3OCwgMjQ3LCAxNzksIDI1LCAyMTIsIDIxMCwgMjUsIDMsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjIwLCAxMDQsIAotICAgIDg3LCAyNSwgMywgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDMsIDIyMywgMjAyLCAyNDYsIDcyLCAKLSAgICAyMzIsIDE0MSwgMjIwLCAxMDQsIDg3LCAyNSwgMjI0LCAxNTgsIDc3LCAyNSwgMjE2LCAyMzEsIDI1LCAyNDcsIDIwNCwgCi0gICAgMjE2LCAyMzEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMTYsIDIzMSwgMjUsIDI1NCwgOCwgMjE3LCAyMTEsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDY0LCAyLCAyMTYsIDIzMSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjM1LCAxODQsIAotICAgIDIsIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjE2LCAyMzEsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIAotICAgIDIxNiwgMjMxLCAyNSwgNiwgMSwgMjU0LCA1MiwgMjUsIDYsIDEsIDI1MSwgMjAzLCAyNSwgNiwgMSwgMjQzLCA4MywgMjUsIAotICAgIDYsIDEsIDI0OCwgNSwgMjUsIDYsIDEsIDI0NSwgNjMsIDI1LCA2LCAxLCAyMTIsIDc4LCAyNSwgNiwgMSwgMjQ1LCAyOCwgCi0gICAgMjUsIDYsIDEsIDIxNywgMTMyLCAyNSwgNiwgMSwgMjM1LCAxODMsIDI1LCA2LCAxLCAyMzQsIDIyNywgMjUsIDYsIDEsIAotICAgIDIzMywgMTIyLCAyNSwgNiwgMSwgMjMwLCAxNzIsIDI1LCA2LCAxLCAyMjgsIDkyLCAyNSwgNiwgMSwgMjEzLCAxNDUsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY1LCAyNSwgNiwgMSwgMjI1LCAyNDAsIDI1LCA2LCAxLCAyMjMsIDE5MCwgMjUsIDYsIDEsIDIyMCwgCi0gICAgMTAzLCAyNSwgNiwgMSwgMjE3LCAyNDgsIDI1LCA2LCAxLCAyMTUsIDEyOCwgMjUsIDYsIDEsIDIyNiwgOSwgMjUsIDYsIDEsIAotICAgIDI1MCwgNDcsIDI1LCA2LCAxLCAyMjUsIDQ2LCAyNSwgNiwgMSwgMjI3LCA2NywgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyNDcsIDIwMywgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIxNiwgCi0gICAgMjMxLCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjE2LCAyMzEsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTYsIDIzMSwgMjUsIAotICAgIDMsIDEsIDIzNSwgMTg0LCAyLCAyMTYsIDIzMSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIxNiwgCi0gICAgMjMxLCAyNSwgMywgMSwgMjU0LCA1MiwgMjUsIDMsIDEsIDI1MSwgMjAzLCAyNSwgMywgMSwgMjQzLCA4MywgMjUsIDMsIDEsIAotICAgIDI0OCwgNSwgMjUsIDMsIDEsIDI0NSwgNjMsIDI1LCAzLCAxLCAyMTIsIDc4LCAyNSwgMywgMSwgMjQ1LCAyOCwgMjUsIDMsIAotICAgIDEsIDIxNywgMTMyLCAyNSwgMywgMSwgMjM1LCAxODMsIDI1LCAzLCAxLCAyMzQsIDIyNywgMjUsIDMsIDEsIDIzMywgMTIyLCAKLSAgICAyNSwgMywgMSwgMjMwLCAxNzIsIDI1LCAzLCAxLCAyMjgsIDkyLCAyNSwgMywgMSwgMjEzLCAxNDUsIDI1LCAzLCAxLCAyMjcsIAotICAgIDY1LCAyNSwgMywgMSwgMjI1LCAyNDAsIDI1LCAzLCAxLCAyMjMsIDE5MCwgMjUsIDMsIDEsIDQwLCAyMjAsIDEwMywgMjUsIAotICAgIDMsIDEsIDIyMCwgMTAzLCAyNSwgMywgMSwgMjE3LCAyNDgsIDI1LCAzLCAxLCAyMTUsIDEyOCwgMjUsIDMsIDEsIDIyNiwgOSwgCi0gICAgMjUsIDMsIDEsIDI1MCwgNDcsIDI1LCAzLCAxLCAyMjUsIDQ2LCAyNSwgMywgMSwgMjI3LCA2NywgMjUsIDMsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwMywgMjUsIDMsIDEsIDIyNywgNjYsIDIsIAotICAgIDIxNiwgMjMxLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIxNiwgMjMxLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjE2LCAKLSAgICAyMzEsIDI1LCA2LCAyMzQsIDI1MSwgODcsIDI1LCAyNTEsIDIwNCwgODcsIDI1LCAyMTcsIDEzMywgODcsIDI1LCAyMTUsIAotICAgIDEyOSwgMiwgMjQxLCAzOCwgODcsIDI1LCAyMTUsIDEyOSwgMiwgMjU0LCAxNjQsIDI0LCAyNDEsIDM4LCA4NywgMjUsIDIxNSwgCi0gICAgMTI5LCAyLCAyNDcsIDIxMCwgMjQsIDI0MSwgMzgsIDg3LCAyNSwgMjI2LCAxMCwgODcsIDI1LCAyMjUsIDI0MSwgODcsIDI1LCAKLSAgICAyMzQsIDI1MSwgODcsIDI1LCAxLCAyNTMsIDE5MywgMjM0LCAxNSwgMjUsIDMsIDEsIDI1MywgMTkzLCAyMzQsIDE1LCAyNSwgCi0gICAgMSwgMjE5LCA3NywgMjUsIDMsIDEsIDIxOSwgNzcsIDI1LCAxLCAyNDcsIDE3OSwgMjUsIDMsIDEsIDI0NywgMTc5LCAyNSwgCi0gICAgMSwgMjM0LCAxNSwgMjUsIDMsIDEsIDIzNCwgMTUsIDI1LCAxLCAyMjIsIDE2MSwgMjUsIDMsIDEsIDIyMiwgMTYxLCA3OSwgCi0gICAgNiwgMSwgMjIwLCAyMzUsIDc5LCAzLCAxLCAyMjAsIDIzNSwgNzksIDYsIDEsIDI0NCwgMTA5LCA3OSwgMywgMSwgMjQ0LCAKLSAgICAxMDksIDc5LCA2LCAxLCAyMzQsIDEyMywgNzksIDMsIDEsIDIzNCwgMTIzLCA3OSwgNiwgMSwgMjQxLCAzMiwgNzksIDMsIDEsIAotICAgIDI0MSwgMzIsIDc5LCA2LCAxLCAyNDMsIDc4LCA3OSwgMywgMSwgMjQzLCA3OCwgNzksIDYsIDEsIDIyMCwgMjAyLCA3OSwgMywgCi0gICAgMSwgMjIwLCAyMDIsIDc5LCA2LCAxLCAyNDgsIDIwLCA3OSwgMywgMSwgMjQ4LCAyMCwgMjUsIDIzNCwgMjI4LCA4NywgMjUsIAotICAgIDIyMywgMTkxLCA4NywgMjUsIDIzMiwgMTQxLCAyMjAsIDEwNCwgODcsIDI1LCAxLCAyMTIsIDIxNSwgMjUsIDYsIDIxNywgCi0gICAgMTMzLCA4NywgMjUsIDIzMiwgMTQxLCAyNDUsIDY0LCA4NywgMjUsIDIyMywgMjAyLCAyMzIsIDE0MSwgMjQ1LCA2NCwgODcsIAotICAgIDI1LCA2LCAxLCAyMjAsIDE4NywgMjUsIDMsIDEsIDIyMCwgMTg3LCAyNSwgNiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgCi0gICAgMjUsIDYsIDEsIDIyMiwgMTU5LCAyNSwgMywgMSwgMjIyLCAxNTksIDI1LCAyMjMsIDE5MSwgMiwgMjE5LCA0NSwgODcsIDI1LCAKLSAgICA2LCAyMjMsIDIwMiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMjUsIDYsIDI0NiwgNzIsIDIzMiwgMTQxLCAyMjAsIDEwNCwgCi0gICAgODcsIDI1LCA2LCAyMjMsIDIwMiwgMjQ2LCA3MiwgMjMyLCAxNDEsIDIyMCwgMTA0LCA4NywgMzMsIDYsIDEsIDIzNiwgNTYsIAotICAgIDIsIDI0MiwgMTEzLCAzMywgNiwgMSwgMjM1LCAxODcsIDMzLCA2LCAxLCAyNDcsIDExNCwgMzMsIDYsIDEsIDI0MiwgMTYzLCAKLSAgICAzMywgNiwgMSwgMjE1LCAxNzIsIDIzNiwgNTUsIDMzLCA2LCAxLCAyNDUsIDI0NywgMzMsIDYsIDEsIDI1MSwgNSwgNzIsIAotICAgIDMzLCA2LCAxLCAyMTIsIDI1NSwgMzMsIDYsIDEsIDIzNSwgMTI3LCAzMywgNiwgMSwgMjMyLCAyMTYsIDMzLCA2LCAxLCAKLSAgICAyMjksIDksIDMzLCA2LCAxLCAyMTYsIDEzMiwgMzMsIDYsIDEsIDIzNCwgNTcsIDMzLCA2LCAxLCAyNDAsIDE0NiwgMiwgCi0gICAgMjQyLCAxMTMsIDMzLCA2LCAxLCAyMjAsIDE3NSwgNjksIDMzLCA2LCAxLCAyNDUsIDI0MywgMzMsIDYsIDEsIDYxLCAzMywgCi0gICAgNiwgMSwgMjUxLCAyNTEsIDMzLCA2LCAxLCAyMTQsIDIzMiwgMzMsIDYsIDEsIDI0MiwgMjEyLCAzMywgNiwgMSwgMjQ4LCAKLSAgICA0MSwgMzMsIDYsIDEsIDIzNiwgNTUsIDMzLCA2LCAxLCAyMTIsIDY3LCAzMywgNiwgMSwgMjEyLCA4NywgMzMsIDYsIDEsIAotICAgIDcyLCAzMywgNiwgMSwgMjIwLCAxNzUsIDcyLCAzMywgNiwgMSwgMTgxLCAzMywgNiwgMSwgMjQ1LCAxMzEsIDMzLCA2LCAxLCAKLSAgICAyNDUsIDExNywgMzMsIDYsIDEsIDI0NSwgMTA4LCAzMywgNiwgMSwgNzUsIDMzLCA2LCAxLCAyMjYsIDk2LCAzMywgNiwgMSwgCi0gICAgMjQ1LCA1NSwgMzMsIDYsIDEsIDI0NSwgNDUsIDMzLCA2LCAxLCAyMTcsIDIyOSwgMzMsIDYsIDEsIDY5LCAzMywgNiwgMSwgCi0gICAgMjQ1LCAxNTksIDMzLCA2LCAxLCAxNTksIDMzLCA2LCAxLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDI1MCwgNjcsIDMzLCA2LCAxLCAKLSAgICAyMjEsIDI0LCAzMywgNiwgMSwgMjIwLCAyNDUsIDMzLCA2LCAxLCAyNDEsIDI0MiwgNTIsIDMzLCA2LCAxLCAyMTMsIDE4LCAKLSAgICAzMywgNiwgMSwgMjE5LCAyMzYsIDUyLCAzMywgNiwgMSwgNzQsIDMzLCA2LCAxLCAyMTIsIDIwMywgMzMsIDYsIDEsIDE4NiwgCi0gICAgMzMsIDMsIDEsIDYxLCAzMywgMywgMSwgMjUxLCAyNTEsIDMzLCAzLCAxLCAyMTQsIDIzMiwgMzMsIDMsIDEsIDI0MiwgMjEyLCAKLSAgICAzMywgMywgMSwgMjQ4LCA0MSwgMzMsIDMsIDEsIDIzNiwgNTUsIDMzLCAzLCAxLCAyMTIsIDY3LCAzMywgMywgMSwgMjEyLCAKLSAgICA4NywgMzMsIDMsIDEsIDcyLCAzMywgMywgMSwgMjIwLCAxNzUsIDcyLCAzMywgMywgMSwgMTgxLCAzMywgMywgMSwgMjQ1LCAKLSAgICAxMzEsIDMzLCAzLCAxLCAyNDUsIDExNywgMzMsIDMsIDEsIDI0NSwgMTA4LCAzMywgMywgMSwgNzUsIDMzLCAzLCAxLCAyMjYsIAotICAgIDk2LCAzMywgMywgMSwgMjQ1LCA1NSwgMzMsIDMsIDEsIDI0NSwgNDUsIDMzLCAzLCAxLCAyMTcsIDIyOSwgMzMsIDMsIDEsIAotICAgIDY5LCAzMywgMywgMSwgMjQ1LCAxNTksIDMzLCAzLCAxLCAxNTksIDMzLCAzLCAxLCAyMTYsIDEzNiwgMzMsIDMsIDEsIDI1MCwgCi0gICAgNjcsIDMzLCAzLCAxLCAyMjEsIDI0LCAzMywgMywgMSwgMjIwLCAyNDUsIDMzLCAzLCAxLCAyNDEsIDI0MiwgNTIsIDMzLCAzLCAKLSAgICAxLCAyMTMsIDE4LCAzMywgMywgMSwgMjE5LCAyMzYsIDUyLCAzMywgMywgMSwgNzQsIDMzLCAzLCAxLCAyMTIsIDIwMywgMzMsIAotICAgIDMsIDEsIDE4NiwgMzMsIDMsIDEsIDIzNiwgNTYsIDIsIDI0MiwgMTEzLCAzMywgMywgMSwgMjM1LCAxODcsIDMzLCAzLCAxLCAKLSAgICAyNDcsIDExNCwgMzMsIDMsIDEsIDI0MiwgMTYzLCAzMywgMywgMSwgMjE1LCAxNzIsIDIzNiwgNTUsIDMzLCAzLCAxLCAyNDUsIAotICAgIDI0NywgMzMsIDMsIDEsIDI1MSwgNSwgNzIsIDMzLCAzLCAxLCAyMTIsIDI1NSwgMzMsIDMsIDEsIDIzNSwgMTI3LCAzMywgMywgCi0gICAgMSwgMjMyLCAyMTYsIDMzLCAzLCAxLCAyMjksIDksIDMzLCAzLCAxLCAyMTYsIDEzMiwgMzMsIDMsIDEsIDIzNCwgNTcsIDMzLCAKLSAgICAzLCAxLCAyNDAsIDE0NiwgMiwgMjQyLCAxMTMsIDMzLCAzLCAxLCAyMjAsIDE3NSwgNjksIDMzLCAzLCAxLCAyNDUsIDI0MywgCi0gICAgMzMsIDYsIDEsIDIyNywgNjcsIDMzLCAzLCAxLCAyMjcsIDY3LCAzMywgNiwgMSwgMjEzLCA0OSwgMzMsIDMsIDEsIDIxMywgCi0gICAgNDksIDMzLCA2LCAxLCAyMzUsIDE4MSwgNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgNzQsIDMzLCA2LCAxLCAyMzIsIDIyMSwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzMywgMywgMSwgMjM1LCAxODEsIDIzMiwgMjIxLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDI1MSwgMTcyLCAKLSAgICAyMTIsIDE3NCwgMzMsIDMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzMsIDYsIDEsIDIzNSwgMTgxLCAyNTEsIDE3MiwgCi0gICAgMjEyLCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAzMywgNiwgMSwgMjMzLCAyNDIsIDMzLCAKLSAgICAzLCAxLCAyMzMsIDI0MiwgMzMsIDYsIDEsIDIyNSwgNDYsIDMzLCAzLCAxLCAyMjUsIDQ2LCAzMywgNiwgMSwgMjQ0LCA1MSwgCi0gICAgMzMsIDMsIDEsIDI0NCwgNTEsIDMzLCA2LCAxLCAyMzUsIDE0NCwgMzMsIDMsIDEsIDIzNSwgMTQ0LCAzMywgNiwgMSwgMjM1LCAKLSAgICAxNDUsIDIsIDUxLCAyNDIsIDExNCwgMjU0LCAxNzQsIDMzLCAzLCAxLCAyMzUsIDE0NSwgMiwgNTEsIDI0MiwgMTE0LCAyNTQsIAotICAgIDE3NCwgMzMsIDYsIDEsIDIxNSwgMTc1LCAzMywgMywgMSwgMjE1LCAxNzUsIDMzLCA2LCAxLCAyMjMsIDg3LCAyMjcsIDY3LCAKLSAgICAzMywgMywgMSwgMjIzLCA4NywgMjI3LCA2NywgMzMsIDYsIDEsIDIyNywgNjgsIDIsIDIxNywgMTgsIDMzLCAzLCAxLCAyMjcsIAotICAgIDY4LCAyLCAyMTcsIDE4LCAzMywgNiwgMSwgMjI3LCA4LCAzMywgMywgMSwgMjI3LCA4LCAzMywgNiwgMSwgMjM0LCAxNSwgCi0gICAgMzMsIDMsIDEsIDIzNCwgMTUsIDMzLCAyMTcsIDk5LCA1MiwgMzcsIDMzLCAyMTcsIDE4LCAzNywgMzMsIDIyNiwgMTkyLCAKLSAgICAzNywgMzMsIDIwNywgMjI1LCAxNTIsIDM3LCAzMywgMjI1LCA0MCwgMjI1LCAxNTIsIDM3LCAzMywgMjI1LCAxMzcsIDM3LCAKLSAgICAzMywgMjQwLCAyMDEsIDIxNywgOTksIDUyLCAzNywgMzMsIDIzMSwgNCwgNTIsIDMzLCA2LCAxLCAyMjAsIDE3NSwgMjQwLCAKLSAgICAxNDYsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyMjAsIDE3NSwgMjQwLCAxNDYsIDIsIDIxOCwgMjcsIDMzLCA2LCAxLCAyMjEsIAotICAgIDY2LCA1MiwgMzMsIDMsIDEsIDIyMSwgNjYsIDUyLCAzMywgNiwgMSwgMjQ1LCA1NiwgMiwgMjE3LCA2OCwgMzMsIDMsIDEsIAotICAgIDI0NSwgNTYsIDIsIDIxNywgNjgsIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgMjE1LCAxMjcsIDMzLCAzLCAxLCAyNDIsIDIxMywgCi0gICAgMiwgMjE1LCAxMjcsIDMzLCA2LCAxLCAyNDIsIDIxMywgMiwgOTAsIDMzLCAzLCAxLCAyNDIsIDIxMywgMiwgOTAsIDMzLCA2LCAKLSAgICAxLCAyNDIsIDIxMywgMiwgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIAotICAgIDEsIDIxMiwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjEyLCA2OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyMTIsIAotICAgIDg4LCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxMiwgODgsIDIsIDI0NywgMjQ2LCAzMywgNiwgMSwgMjM1LCAxNywgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDcxLCA5MCwgCi0gICAgMzMsIDMsIDEsIDIzNSwgMTcsIDIsIDcxLCA5MCwgMzMsIDYsIDEsIDIzNSwgMTcsIDIsIDkwLCAzMywgMywgMSwgMjM1LCAKLSAgICAxNywgMiwgOTAsIDMzLCA2LCAxLCAyNTIsIDQ0LCAxODEsIDMzLCAzLCAxLCAyNTIsIDQ0LCAxODEsIDMzLCA2LCAxLCAyNDUsIAotICAgIDEwOSwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAyNiwgMjQ1LCAxMDksIAotICAgIDI0MiwgMjEyLCAzMywgMywgMjYsIDI0NSwgMTA5LCAyNDIsIDIxMiwgMzMsIDYsIDEsIDIyNiwgOTcsIDIsIDIzMSwgMzcsIAotICAgIDEwMSwgMzMsIDMsIDEsIDIyNiwgOTcsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDI1NCwgMTgwLCAxNTksIDMzLCAzLCAKLSAgICAxLCAyNTQsIDE4MCwgMTU5LCAzMywgNiwgMSwgMjQ1LCA0NiwgMiwgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyNDUsIDQ2LCAyLCAKLSAgICAyNDcsIDI0NiwgMzMsIDYsIDEsIDIxNywgMjMwLCAyLCAyNDcsIDI0NiwgMzMsIDMsIDEsIDIxNywgMjMwLCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDYsIDEsIDIxOSwgNjEsIDY5LCAzMywgMywgMSwgMjE5LCA2MSwgNjksIDMzLCA2LCAxLCAyMTksIDYxLCAKLSAgICAxMTEsIDIsIDkwLCAzMywgMywgMSwgMjE5LCA2MSwgMTExLCAyLCA5MCwgMzMsIDYsIDEsIDI0MiwgMzAsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgMywgMSwgMjQyLCAzMCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAyNiwgMjE3LCAyMzAsIDIxNiwgMTM2LCAzMywgCi0gICAgMywgMjYsIDIxNywgMjMwLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDI1MCwgNjgsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjUwLCAKLSAgICA2OCwgMiwgMjQ3LCAyNDYsIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCA3MSwgOTAsIDMzLCAzLCAxLCAyNTAsIDY4LCAyLCA3MSwgCi0gICAgOTAsIDMzLCA2LCAxLCAyMjAsIDIxMywgMzMsIDMsIDEsIDIyMCwgMjEzLCAzMywgNiwgMSwgMjU0LCAxODAsIDI1MCwgNjcsIAotICAgIDMzLCAzLCAxLCAyNTQsIDE4MCwgMjUwLCA2NywgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgCi0gICAgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNTAsIDY4LCAyLCAyNDcsIDI0NiwgMzMsIDEsIDIyNiwgMTg1LCAzMywgNiwgMSwgMjEyLCAKLSAgICA2OCwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDIxMiwgNjgsIDIsIDI1MSwgNzQsIDMzLCA2LCAxLCAyMzUsIDE3LCAyLCAxMDEsIAotICAgIDMzLCAzLCAxLCAyMzUsIDE3LCAyLCAxMDEsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgCi0gICAgMTMyLCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgMjQ1LCAxMDksIDIsIDEwMSwgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAxMDEsIAotICAgIDMzLCA2LCAxLCAyNDUsIDEwOSwgMiwgMjE4LCAyNywgMzMsIDMsIDEsIDI0NSwgMTA5LCAyLCAyMTgsIDI3LCAzMywgNiwgMSwgCi0gICAgMjM0LCAxMzMsIDI1MCwgNjcsIDMzLCAzLCAxLCAyMzQsIDEzMywgMjUwLCA2NywgMzMsIDYsIDEsIDI0NSwgMTE4LCAyLCAKLSAgICAyMTgsIDI3LCAzMywgMywgMSwgMjQ1LCAxMTgsIDIsIDIxOCwgMjcsIDMzLCAzLCAxLCAyMjYsIDE4NSwgMzMsIDYsIDEsIAotICAgIDExOCwgMiwgMjUxLCA3NCwgMzMsIDMsIDEsIDExOCwgMiwgMjUxLCA3NCwgMzMsIDYsIDEsIDExOCwgMiwgMjQ3LCAyMDksIAotICAgIDMzLCAzLCAxLCAxMTgsIDIsIDI0NywgMjA5LCAzMywgNiwgMjYsIDExOCwgMjM2LCA1NSwgMzMsIDMsIDI2LCAxMTgsIDIzNiwgCi0gICAgNTUsIDMzLCA2LCAxLCAyMzYsIDU2LCAyLCAyNTEsIDc0LCAzMywgMywgMSwgMjM2LCA1NiwgMiwgMjUxLCA3NCwgMzMsIDYsIAotICAgIDEsIDIyMiwgMTEzLCAzMywgMywgMSwgMjIyLCAxMTMsIDMzLCA2LCAxLCAyMjIsIDExNCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAKLSAgICAxLCAyMjIsIDExNCwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAyMTIsIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDIxMiwgCi0gICAgNjgsIDIsIDI0NywgMjA5LCAzMywgNiwgMSwgMjEyLCA4OCwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTIsIDg4LCAyLCAKLSAgICAyNDcsIDIwOSwgMzMsIDYsIDEsIDI1NCwgMTgwLCAyNDUsIDI0NywgMzMsIDMsIDEsIDI1NCwgMTgwLCAyNDUsIDI0NywgMzMsIAotICAgIDYsIDEsIDI0MCwgMTQ2LCAyLCAyMzIsIDM3LCAzMywgMywgMSwgMjQwLCAxNDYsIDIsIDIzMiwgMzcsIDMzLCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyNDAsIDE0NiwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxNTcsIDIsIAotICAgIDI0NywgMjA5LCAzMywgMywgMSwgMTU3LCAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDI1MiwgNTQsIDc1LCAzMywgMywgMSwgCi0gICAgMjUyLCA1NCwgNzUsIDMzLCA2LCAxLCAyNTIsIDU0LCAxNTcsIDIsIDI0NywgMjA5LCAzMywgMywgMSwgMjUyLCA1NCwgMTU3LCAKLSAgICAyLCAyNDcsIDIwOSwgMzMsIDYsIDEsIDE5MSwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAxOTEsIDIsIDI0NywgMjA5LCAzMywgCi0gICAgNiwgMSwgMTExLCAyLCAyMzIsIDM3LCAzMywgMywgMSwgMTExLCAyLCAyMzIsIDM3LCAzMywgNiwgMSwgMTExLCAyLCAyNDcsIAotICAgIDIwOSwgMzMsIDMsIDEsIDExMSwgMiwgMjQ3LCAyMDksIDMzLCA2LCAxLCAxMTEsIDIsIDUxLCAxNzksIDMzLCAzLCAxLCAKLSAgICAxMTEsIDIsIDUxLCAxNzksIDMzLCA2LCAxLCAyNTAsIDY4LCAyLCAyNDcsIDIwOSwgMzMsIDMsIDEsIDI1MCwgNjgsIDIsIAotICAgIDI0NywgMjA5LCAzMywgNiwgMSwgMjQyLCAyMTMsIDIsIDI0NywgMjQ2LCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDI0NywgCi0gICAgMjQ2LCAzMywgNiwgMSwgMjEzLCAxOSwgMiwgMjQ3LCAyMDksIDMzLCAzLCAxLCAyMTMsIDE5LCAyLCAyNDcsIDIwOSwgMzMsIAotICAgIDYsIDEsIDI0MiwgMjEzLCAyLCAyMTksIDQ1LCAyNCwgMTAxLCAzMywgMywgMSwgMjQyLCAyMTMsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAxMDEsIDMzLCA2LCAxLCAyNDIsIDMwLCAyLCAxMDEsIDMzLCAzLCAxLCAyNDIsIDMwLCAyLCAxMDEsIDMzLCA2LCAxLCAyNDIsIAotICAgIDMwLCAyLCA5MCwgMzMsIDMsIDEsIDI0MiwgMzAsIDIsIDkwLCAzMywgNiwgMSwgMjM0LCAyMywgMjQ4LCA0MSwgMzMsIDMsIAotICAgIDEsIDIzNCwgMjMsIDI0OCwgNDEsIDMzLCA2LCAxLCAyMzQsIDIzLCAyNDcsIDExNCwgMzMsIDMsIDEsIDIzNCwgMjMsIDI0NywgCi0gICAgMTE0LCAzMywgNiwgMSwgMjM0LCAyMywgMjEyLCAyMCwgMzMsIDMsIDEsIDIzNCwgMjMsIDIxMiwgMjAsIDMzLCA2LCAxLCAKLSAgICAyMzQsIDIzLCAyNDUsIDI0MSwgMzMsIDMsIDEsIDIzNCwgMjMsIDI0NSwgMjQxLCAzMywgNiwgMSwgMjM0LCAyMywgMjMyLCAKLSAgICAyMTYsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMzIsIDIxNiwgMzMsIDYsIDEsIDIzNCwgMjMsIDIyOSwgOSwgMzMsIDMsIDEsIAotICAgIDIzNCwgMjMsIDIyOSwgOSwgMzMsIDYsIDEsIDIzNCwgMjMsIDIyMCwgMzcsIDMzLCAzLCAxLCAyMzQsIDIzLCAyMjAsIDM3LCAKLSAgICAzMywgNiwgMSwgMjM0LCAyMywgMjE3LCAxMywgMzMsIDMsIDEsIDIzNCwgMjMsIDIxNywgMTMsIDMzLCA2LCAxLCAyMjMsIAotICAgIDIwMiwgMjEyLCA4NywgMzMsIDMsIDEsIDIyMywgMjAyLCAyMTIsIDg3LCAzMywgNiwgMSwgMjQ1LCAxMzIsIDIsIDEwMSwgCi0gICAgMzMsIDMsIDEsIDI0NSwgMTMyLCAyLCAxMDEsIDMzLCA2LCAxLCAyMzMsIDI1LCAzMywgMywgMSwgMjMzLCAyNSwgMzMsIDYsIAotICAgIDEsIDIyMywgMTkyLCAzMywgMywgMSwgMjIzLCAxOTIsIDMzLCA2LCAxLCAyMTMsIDgwLCAzMywgMywgMSwgMjEzLCA4MCwgCi0gICAgMzMsIDYsIDEsIDIyNCwgMjMyLCAzMywgMywgMSwgMjI0LCAyMzIsIDMzLCA2LCAxLCAyMTQsIDYsIDMzLCAzLCAxLCAyMTQsIAotICAgIDYsIDMzLCA2LCAxLCAyNTQsIDc1LCAxODEsIDMzLCAzLCAxLCAyNTQsIDc1LCAxODEsIDMzLCA2LCAxLCAyNDUsIDEzMiwgMiwgCi0gICAgMjMxLCAzNywgMTAxLCAzMywgMywgMSwgMjQ1LCAxMzIsIDIsIDIzMSwgMzcsIDEwMSwgMzMsIDYsIDEsIDI0NSwgMTA5LCAyLCAKLSAgICAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyNDUsIDEwOSwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjI2LCA5NywgMiwgCi0gICAgMjQ3LCAyNDYsIDMzLCAzLCAxLCAyMjYsIDk3LCAyLCAyNDcsIDI0NiwgMzMsIDYsIDEsIDIyMCwgMjE0LCAyLCAyNDcsIAotICAgIDI0NiwgMzMsIDMsIDEsIDIyMCwgMjE0LCAyLCAyNDcsIDI0NiwgMTQxLCA2LCAxLCAyNTMsIDgwLCAxNDEsIDYsIDEsIDI1MSwgCi0gICAgMjE2LCAxNDEsIDYsIDEsIDI0MiwgMTc5LCAxNDEsIDYsIDEsIDI0OCwgMTY0LCAxNDEsIDYsIDEsIDI0NSwgMTY5LCAxNDEsIAotICAgIDYsIDEsIDIxMiwgMTA5LCAxNDEsIDYsIDEsIDI0NSwgMTU0LCAxNDEsIDYsIDEsIDI0NSwgMzAsIDE0MSwgNiwgMSwgMTA4LCAKLSAgICAxNDEsIDYsIDEsIDIxMiwgNjcsIDE0MSwgNiwgMSwgMjM1LCAyMjQsIDE0MSwgNiwgMSwgMjMyLCAyMTksIDE0MSwgNiwgMSwgCi0gICAgMjEzLCAxNDgsIDE0MSwgNiwgMSwgMjUwLCAyMTksIDE0MSwgNiwgMSwgMjM0LCAxNzEsIDE0MSwgNiwgMSwgMjQxLCA1NCwgCi0gICAgMTQxLCA2LCAxLCAyMzUsIDEzOSwgMTQxLCA2LCAxLCAyNDIsIDIyMiwgMTQxLCA2LCAxLCAyNTAsIDYyLCAxNDEsIDYsIDEsIAotICAgIDIzMSwgMTIyLCAxNDEsIDYsIDEsIDIxMiwgMjU1LCAxNDEsIDYsIDEsIDIyOCwgMTUwLCAxNDEsIDYsIDEsIDIyMSwgMjQsIAotICAgIDE0MSwgNiwgMSwgMjE0LCAxMTksIDE0MSwgNiwgMSwgMjUwLCA5MiwgMTQxLCA2LCAxLCAyMjYsIDgwLCAxNDEsIDYsIDEsIAotICAgIDIzNSwgMTEyLCAxNDEsIDYsIDEsIDIwMywgMTQxLCA2LCAxLCAyMjIsIDgwLCAxNDEsIDYsIDEsIDIxNCwgMTU2LCAxNDEsIAotICAgIDYsIDEsIDIxNywgMTUsIDE0MSwgNiwgMSwgMjIzLCAyNDUsIDE0MSwgNiwgMSwgMjQ5LCAxNzUsIDE0MSwgNiwgMSwgMjEyLCAKLSAgICAyNDAsIDE0MSwgNiwgMSwgMjI1LCAxNzgsIDE0MSwgNiwgMSwgMjM0LCAxODIsIDE0MSwgNiwgMSwgMjI3LCA4OCwgMTQxLCAKLSAgICA2LCAxLCAyNDQsIDExMSwgMTQxLCA1OSwgMSwgNDIsIDE1MSwgMjIzLCAxMzAsIDE0MSwgMjUzLCAyMjYsIDE0MSwgMjQ1LCAKLSAgICAxMTIsIDc3LCAxNDEsIDI0NCwgMjU0LCA3NywgMTQxLCAyNDksIDE1NywgMTQxLCAyMjQsIDE1OCwgNzcsIDE0MSwgMjU0LCAKLSAgICAxODEsIDc3LCAxNDEsIDMsIDEsIDI1MywgODAsIDE0MSwgMywgMSwgMjUxLCAyMTYsIDE0MSwgMywgMSwgMjQyLCAxNzksIAotICAgIDE0MSwgMywgMSwgMjQ4LCAxNjQsIDE0MSwgMywgMSwgMjQ1LCAxNjksIDE0MSwgMywgMSwgMjEyLCAxMDksIDE0MSwgMywgMSwgCi0gICAgMjQ1LCAxNTQsIDE0MSwgMywgMSwgMjQ1LCAzMCwgMTQxLCAzLCAxLCAxMDgsIDE0MSwgMywgMSwgMjEyLCA2NywgMTQxLCAzLCAKLSAgICAxLCAyMzUsIDIyNCwgMTQxLCAzLCAxLCAyMzIsIDIxOSwgMTQxLCAzLCAxLCAyMTMsIDE0OCwgMTQxLCAzLCAxLCAyNTAsIAotICAgIDIxOSwgMTQxLCAzLCAxLCAyMzQsIDE3MSwgMTQxLCAzLCAxLCAyNDEsIDU0LCAxNDEsIDMsIDEsIDIzNSwgMTM5LCAxNDEsIAotICAgIDMsIDEsIDI0MiwgMjIyLCAxNDEsIDMsIDEsIDI1MCwgNjIsIDE0MSwgMywgMSwgMjMxLCAxMjIsIDE0MSwgMywgMSwgMjEyLCAKLSAgICAyNTUsIDE0MSwgMywgMSwgMjI4LCAxNTAsIDE0MSwgMywgMSwgMjIxLCAyNCwgMTQxLCAzLCAxLCAyMTQsIDExOSwgMTQxLCAKLSAgICAzLCAxLCAyNTAsIDkyLCAxNDEsIDMsIDEsIDIyNiwgODAsIDE0MSwgMywgMSwgMjM1LCAxMTIsIDE0MSwgMywgMSwgMjAzLCAKLSAgICAxNDEsIDMsIDEsIDIyMiwgODAsIDE0MSwgMywgMSwgMjE0LCAxNTYsIDE0MSwgMywgMSwgMjE3LCAxNSwgMTQxLCAzLCAxLCAKLSAgICAyMjMsIDI0NSwgMTQxLCAzLCAxLCAyNDksIDE3NSwgMTQxLCAzLCAxLCAyMTIsIDI0MCwgMTQxLCAzLCAxLCAyMjUsIDE3OCwgCi0gICAgMTQxLCAzLCAxLCAyMzQsIDE4MiwgMTQxLCAzLCAxLCAyMjcsIDg4LCAxNDEsIDMsIDEsIDI0NCwgMTExLCAxNDEsIDMsIDI2LCAKLSAgICAyNDUsIDE3MCwgMjEyLCAyNDAsIDE0MSwgMjQzLCAyMDAsIDIxOSwgNjksIDE0MSwgMjQwLCAxNjAsIDkzLCAyNTQsIDE3NSwgCi0gICAgMjQ1LCAyMywgOTMsIDI1NCwgMTc1LCAyMjIsIDgxLCA5MywgMjU0LCAxNzUsIDIyMSwgMTEsIDkzLCAyNTQsIDE3NSwgMjEyLCAKLSAgICA5NywgMjI0LCAyMTUsIDkzLCAyNTQsIDE3NSwgMjEyLCA5NywgMjQzLCAxMDAsIDkzLCAyNTQsIDE3NSwgMjE3LCAyOCwgOTMsIAotICAgIDI1NCwgMTc1LCAyMjMsIDIwMCwgOTMsIDI1NCwgMTc1LCAyMTIsIDk2LCA5MywgMjU0LCAxNzUsIDIyNiwgMTE4LCA5MywgCi0gICAgMjU0LCAxNzUsIDIxMywgMTEsIDkzLCAyNTQsIDE3NSwgMjE3LCAxNjcsIDkzLCAyNTQsIDE3NSwgMjQzLCAxNywgOTMsIAotICAgIDI1NCwgMTc1LCAyNDMsIDE4LCAyMzAsIDEzOSwgOTMsIDI1NCwgMTc1LCAyNDMsIDE1LCA5MywgMjU0LCAxNzUsIDIyNCwgCi0gICAgMjE2LCAyMjYsIDE0NCwgOTMsIDI1NCwgMTc1LCAyMTcsIDIwNiwgMjQzLCAzMiwgOTMsIDI1NCwgMTc1LCAyMjYsIDEwMCwgCi0gICAgOTMsIDI1NCwgMTc1LCAyNTMsIDExNiwgMjQyLCAyMiwgOTMsIDI1NCwgMTc1LCAyMzAsIDE0OSwgOTMsIDI1NCwgMTc1LCAKLSAgICAyMzIsIDEzLCA5MywgMjU0LCAxNzUsIDIzMSwgMTEzLCA5MywgMjU0LCAxNzUsIDIzMSwgMTE0LCAyMzQsIDE4MywgOTMsIAotICAgIDI1NCwgMTc1LCAyNDgsIDEwOCwgOTMsIDI1NCwgMTc1LCAyMjQsIDIyNywgOTMsIDI1NCwgMTc1LCAyMTcsIDIwNiwgMjI0LCAKLSAgICAyMTEsIDkzLCAyNTQsIDE3NSwgMjEzLCAyMSwgMjUxLCAyMTcsIDIxMiwgMjIxLCA5MywgMjU0LCAxNzUsIDIyNywgNzMsIAotICAgIDkzLCAyNTQsIDE3NSwgMjM2LCAxNCwgOTMsIDI1NCwgMTc1LCAyNDgsIDIxLCA5MywgMjU0LCAxNzUsIDIxMiwgMjYsIDkzLCAKLSAgICAxNTIsIDIzMSwgMjA2LCAyNDksIDIyOCwgOTMsIDIyNSwgMTQ1LCAyMjAsIDIxNiwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgCi0gICAgMjIyLCA4MSwgOTMsIDIyNSwgMTQ1LCAyNDEsIDIzMywgMjI2LCAxMTIsIDkzLCAyMjUsIDE0NSwgMjQxLCAyMzMsIDIyNCwgCi0gICAgMjIwLCA5MywgMjI1LCAxNDUsIDI0MSwgMTQ0LCA5MywgMjI1LCAxNDUsIDIxNiwgMTM0LCA5MywgMjI1LCAxNDUsIDIyMiwgCi0gICAgODEsIDkzLCAyMjUsIDE0NSwgMjI2LCAxMTIsIDkzLCAyMjUsIDE0NSwgMjI0LCAyMjAsIDkzLCAyMjUsIDE0NSwgMjQxLCAKLSAgICA0NywgOTMsIDIyNSwgMTQ1LCAyNDEsIDQ4LCAyNDEsIDIzNSwgMzEsIDIxNCwgMjM2LCA5MywgMjI1LCAxNDUsIDIyNCwgCi0gICAgMTYyLCA5MywgMjI1LCAxNDUsIDI0OCwgMTUxLCAxNjcsIDIzMSwgMjM0LCA5MywgMjI1LCAxNDUsIDIzMSwgMTA1LCA5MywgCi0gICAgMjI1LCAyNywgMjMxLCAyMzEsIDkzLCAyMjUsIDE0NSwgMjI0LCA1OSwgOTMsIDIyNSwgMjcsIDIyNiwgMTIwLCA5MywgMjI1LCAKLSAgICAxNDUsIDIyMCwgMjAxLCAyNDcsIDc0LCA5MywgMjI1LCAxNDUsIDIyMCwgODUsIDI0NywgNzQsIDkzLCAyMjUsIDI3LCAyMTksIAotICAgIDIzNywgMjI2LCAxMTQsIDkzLCAxNTIsIDIxNSwgMTMxLCAyNDcsIDc0LCA5MywgMTUyLCAyMzIsIDE2MywgMjQ3LCA3NCwgCi0gICAgOTMsIDIyNSwgMjcsIDIyOCwgNTEsIDI0MiwgMjEsIDkzLCAyMjUsIDE0NSwgMjI0LCAyMjEsIDIyNCwgMjE1LCA5MywgMSwgCi0gICAgMjU0LCA3OCwgOTMsIDEsIDI1MSwgMjA1LCA5MywgMSwgMjQyLCAxNzcsIDkzLCAxLCAyNDgsIDEzNCwgOTMsIDEsIDI0MSwgCi0gICAgMjIyLCA5MywgMSwgMjE0LCAyMzYsIDkzLCAxLCAyMTIsIDkwLCA5MywgMSwgMjQxLCAxODIsIDkzLCAxLCAyMTcsIDE4MywgCi0gICAgOTMsIDEsIDIxMiwgMjI0LCA5MywgMSwgNDAsIDIzNCwgMjU0LCA5MywgMSwgMjM0LCAyNTQsIDkzLCAxLCAyMzMsIDExOCwgCi0gICAgOTMsIDEsIDQwLCAyMzEsIDEyOSwgOTMsIDEsIDIzMSwgMTI5LCA5MywgMSwgNDAsIDIyOCwgNTAsIDkzLCAxLCAyMjgsIDUwLCAKLSAgICA5MywgMSwgMjIyLCAxNjQsIDkzLCAxLCAyNTMsIDc4LCA5MywgMSwgNDAsIDIyNiwgOTYsIDkzLCAxLCAyMjYsIDk2LCA5MywgCi0gICAgMSwgNDAsIDIxNiwgMTM3LCA5MywgMSwgMjE2LCAxMzcsIDkzLCAxLCAyMjQsIDE4NCwgOTMsIDEsIDIyMywgMjE5LCA5MywgCi0gICAgMSwgMjIwLCAyMDAsIDkzLCAxLCAyMTcsIDI0NSwgOTMsIDI2LCAyMTIsIDI1MywgNTEsIDIxNCwgMjM2LCA5MywgMjYsIAotICAgIDIxMiwgMjUzLCAyMTQsIDIzNywgMjEyLCAyMjQsIDkzLCAyNiwgMjEyLCAyNTMsIDUxLCAyMTIsIDIyNCwgOTMsIDIyNSwgCi0gICAgMjcsIDI0MywgMTcsIDkzLCAyMjUsIDI3LCAyNDMsIDE1LCAxMiwgNTAsIDUyLCAxMiwgNSwgMjIyLCAxNTgsIDEyLCAyNDMsIAotICAgIDI1NSwgMjMxLCAyMTcsIDEyLCA1LCAyMjIsIDE5MiwgMjUzLCAyMDcsIDI0OSwgNTAsIDIyMywgOTUsIDI1MywgMjA3LCAKLSAgICAyNDMsIDIzMCwgMjIzLCA5NSwgMTIsIDIyNCwgMjcsIDI1MywgMjA3LCAyMjYsIDU4LCAyMzEsIDYsIDUyLCAyNTMsIDIwNywgCi0gICAgMjI2LCA1OCwgMjE3LCAyMDEsIDIxNywgMTAxLCA1MiwgMjU0LCAxMjYsIDUyLCAxMiwgMjQ5LCAxNTcsIDEyLCAyNDgsIDk2LCAKLSAgICAyMjEsIDU3LCAxMiwgMjI1LCAxNDcsIDIxNCwgMjE4LCA1MiwgMTIsIDUsIDIzMCwgMjQzLCAxMiwgNSwgMjIyLCAxNzQsIAotICAgIDI1NCwgODAsIDIxNCwgMjksIDEyLCA1LCAyNTQsIDgwLCAyNTMsIDEzNywgMTIsIDUsIDIyNCwgNTgsIDI1NCwgNzksIDEyLCAKLSAgICA1LCAyMjQsIDY1LCAyNTQsIDYxLCAyNTQsIDE0LCAxMiwgNSwgMjE4LCAyMCwgMTIsIDMsIDEyNCwgMjE4LCAyOSwgMTIsIDMsIAotICAgIDEyNCwgMjYsIDEwNiwgMiwgMjMzLCAxMjcsIDIsIDIxMywgMzQsIDEyLCAzLCAxMjQsIDIxMiwgMTAxLCAxMiwgMywgMjQ0LCAKLSAgICAxMzMsIDEyLCAzLCAyNDgsIDEyOSwgMTIsIDMsIDIzNCwgMjEwLCAxMiwgMjIxLCA3MCwgMTIsIDIxNiwgMTY5LCA2MiwgCi0gICAgMjI1LCAyNywgNzcsIDEyLCAyMjQsIDE1OCwgNzcsIDEyLCAxLCAyMzQsIDIxNCwgMjEzLCAzNCwgMTIsIDEsIDI0MiwgMiwgCi0gICAgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgNDksIDEyLCAxLCAxMDYsIDIsIDE5MiwgNDksIDEyLCAxLCAyMTQsIDE1LCAyLCAKLSAgICAxOTIsIDQ5LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDU1LCAxMiwgMSwgNzMsIDIsIDE5MiwgNDksIDEyLCAxLCAyNTQsIDc4LCAKLSAgICAxMiwgMSwgMjUxLCAyMzAsIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjcsIDEyLCAxLCAyMTcsIDIxNSwgMTIsIDEsIDIxNywgCi0gICAgMTQ1LCAxMiwgMSwgMjM1LCAxMjQsIDEyLCAxLCAyNDIsIDE4LCAxMiwgMSwgMjM0LCAxMzUsIDEyLCAxLCAyNDgsIDE0MCwgCi0gICAgMTIsIDEsIDIxNywgMTU1LCAxMiwgMSwgMjIzLCAyNDUsIDEyLCAxLCAyMTIsIDEwMSwgMTIsIDEsIDIyMiwgODUsIDEyLCAxLCAKLSAgICAyMjAsIDIzOSwgMTIsIDEsIDIyMiwgMTk1LCAxMiwgMSwgMjQ4LCAxNTksIDEyLCAxLCAyMTgsIDI5LCAxMiwgMSwgMjEyLCAKLSAgICAxMDQsIDEyLCAxLCAyNTQsIDEwMywgMTIsIDEsIDI0MiwgMjIwLCAxMiwgMSwgMjM0LCAxODEsIDIsIDExNywgMTc2LCA0OSwgCi0gICAgMTIsIDEsIDIzNCwgMTgxLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDIzNSwgMTkxLCAyMTUsIAotICAgIDc5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAxMTcsIDE3NiwgNDksIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDIsIDEzMywgCi0gICAgMTc2LCA0OSwgMTIsIDIxNywgMjUwLCAxMiwgMSwgMjQ0LCAxMTEsIDEyLCAxLCAyMjQsIDIyNSwgMTIsIDEsIDIzNCwgMjU0LCAKLSAgICAxMiwgMSwgMjMzLCAxMjYsIDEyLCAxLCAyMzEsIDE0MywgMTIsIDEsIDIyOCwgMTczLCAxMiwgMSwgMjQxLCAyMDIsIDEyLCAKLSAgICAxLCAyMTQsIDE0LCAxMiwgMSwgMTA2LCAyMzEsIDI1NSwgMTIsIDEsIDIxMywgMzQsIDEyLCAyNDQsIDEzMSwgMTIsIDI0OCwgCi0gICAgMTI3LCAxMiwgMjM0LCAyMDgsIDEyLCAyNDQsIDEzMywgMTIsIDI0OCwgMTI5LCAxMiwgMjM0LCAyMTAsIDEyLCAyMjEsIDE1LCAKLSAgICAxMiwgMjE4LCAyNDYsIDEyLCAyMzIsIDMxLCA0OSwgMTIsIDE5MiwgNDksIDEyLCAxOTIsIDU1LCAxMiwgMjE5LCAxMCwgCi0gICAgMjU0LCA3OCwgMTIsIDIzNSwgMTkxLCAyNDgsIDEyOSwgMTIsIDE1MiwgMjI4LCAxNzQsIDI0MiwgMTk0LCAxMiwgMjExLCAKLSAgICAyNTAsIDEyLCAzMCwgNSwgMywgMjE1LCA4MCwgNDksIDEyLCAzMCwgNSwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDQ5LCAxMiwgCi0gICAgMzAsIDUsIDYyLCA1NSwgMTIsIDIyMywgMjAyLCAyNDgsIDEyOSwgMTIsIDI0NCwgMTM0LCAyLCAxMTcsIDI0NywgNzIsIDEyLCAKLSAgICAyMTQsIDE2LCAxOTIsIDU1LCAyNTMsIDIwNywgMjEsIDIxMiwgNzksIDI1MywgMjA3LCAyMSwgMTE2LCAyNTMsIDIwNywgMjEsIAotICAgIDEwOSwgMjUzLCAyMDcsIDIxLCAxNjYsIDI1MywgMjA3LCAyMSwgMTYzLCAyNTMsIDIwNywgMjEsIDE4MCwgMjUzLCAyMDcsIAotICAgIDIxLCAxODksIDI1MywgMjA3LCAyMSwgMTk4LCAyNTMsIDIwNywgMjEsIDE5NSwgMjUzLCAyMDcsIDIxLCAyMDAsIDEyLCAKLSAgICAyMjYsIDU3LCA1MiwgMTIsIDI0OCwgMzQsIDIyMSwgNTcsIDEyLCAyMTcsIDk5LCAyMjEsIDU3LCAxMiwgMjQ0LCA1MCwgCi0gICAgMjI1LCAxNDMsIDIxOSwgOTUsIDEyLCAxLCAyNDcsIDczLCAyNTEsIDIzMCwgMTIsIDEsIDI0NywgNzMsIDIyNCwgMjI1LCAKLSAgICAxMiwgMSwgMjE4LCAyMjMsIDI1NCwgNzgsIDEyLCAxLCAxMDYsIDIxNCwgMzAsIDEyLCAxLCAxMDYsIDIsIDIxNCwgMTYsIAotICAgIDE5MiwgNDksIDEyLCAxLCAxMDYsIDIsIDIxNCwgMTYsIDE5MiwgNTUsIDEyLCAxLCAxMjQsIDI0MiwgMiwgMTIsIDEsIDEyNCwgCi0gICAgMTkyLCAyNTQsIDc4LCAxMiwgMSwgMTI0LCAxOTIsIDIxNCwgMTQsIDEyLCAxLCAxMTEsIDIsIDE5MiwgNDksIDEyLCAxLCAKLSAgICAxMjQsIDE5MiwgMjEzLCAzNCwgMTIsIDEsIDIxNiwgMTA5LCAxMiwgMSwgMjE2LCAxMDcsIDEyLCAxLCAyNTEsIDI0MCwgMTIsIAotICAgIDEsIDIxNywgMjE2LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIxNywgMjE2LCAyLCAxMzMsIDE3NiwgNzgsIDI0NiwgNTcsIDEyLCAKLSAgICAxLCAyMjYsIDgwLCAxMiwgMSwgMjE3LCAyMTMsIDEyLCAxLCAyNTEsIDIyOCwgMTIsIDEsIDEyMSwgMiwgMTkyLCA0OSwgMTIsIAotICAgIDEsIDEyMSwgMiwgMTE3LCAxNzYsIDcxLCA0OSwgMTIsIDEsIDIyOCwgMTQsIDEyLCAxLCAyNDUsIDI1NCwgMTIsIDEsIDEyMSwgCi0gICAgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjE3LCAyMzMsIDEyLCAxLCAyMTcsIDIzMSwgMTIsIDEsIDI0OCwgODEsIDEyLCAxLCAKLSAgICAyNDgsIDE0MSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyNDgsIDE0MSwgMiwgNjIsIDU1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIAotICAgIDYyLCAyNTEsIDIyMCwgMjQsIDMsIDIxOCwgMjksIDEyLCAxLCAyNDgsIDE0NiwgMTIsIDEsIDI0OCwgODMsIDEyLCAxLCAKLSAgICAyNDYsIDI1LCAxMiwgMSwgMjQ4LCAxNDEsIDIsIDEzMywgMTc2LCA3OCwgMjQ2LCA1NywgMTIsIDEsIDI0OCwgMTQxLCAyLCAKLSAgICAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDEsIDIyMywgNzcsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgMjE1LCA3OSwgMTIsIDEsIAotICAgIDIyMywgMjQ2LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIyMywgMjQ2LCAyLCA2MiwgNTUsIDEyLCAxLCAyMjMsIDI0NiwgMiwgMywgCi0gICAgMjE1LCA4MCwgNTUsIDEyLCAxLCAyMjMsIDI0NiwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjIzLCAKLSAgICAyNDYsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDIzNSwgMTIxLCAxMiwgMSwgMjIzLCAyNDYsIDIsIDI0MywgMjM3LCAxNzYsIAotICAgIDQ5LCAxMiwgMSwgMjIyLCA4NiwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgNjIsIDQ5LCAxMiwgMSwgMjIyLCA4NiwgMiwgMTMzLCAKLSAgICAxNzYsIDU1LCAxMiwgMSwgMjIyLCA4NiwgMiwgMTMzLCAxNzYsIDI1MSwgMjIwLCAyNCwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgCi0gICAgMjIyLCAxOTYsIDIsIDExNywgMTc2LCA1NSwgMTIsIDEsIDIyMiwgMTk2LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMTgsIAotICAgIDMwLCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTMzLCAxNzYsIDQ5LCAxMiwgMSwgMjQ3LCA3MywgCi0gICAgMjQ0LCAxMTEsIDEyLCAxLCAyNDQsIDExMiwgMiwgNjIsIDIzMCwgMTc5LCA1NSwgMTIsIDEsIDI0NCwgMTEyLCAyLCA2MiwgCi0gICAgNTUsIDEyLCAxLCAyMTQsIDIyNSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAyMjYsIDc4LCAKLSAgICAxMiwgMSwgMjI0LCAyMjYsIDIsIDYyLCA0OSwgMTIsIDEsIDIyNCwgMjI2LCAyLCAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzQsIAotICAgIDE4MCwgMTIsIDEsIDIxOCwgMTk1LCAyMzQsIDI1NCwgMTIsIDEsIDIzNCwgMjU1LCAyLCAyMjMsIDEzMCwgMTIsIDEsIDIzNCwgCi0gICAgMjU1LCAyLCA2MiwgNDksIDEyLCAxLCAyMjksIDE2MSwgMTIsIDEsIDIzNCwgMjU1LCAyLCAxMzMsIDE3NiwgNTUsIDEyLCAxLCAKLSAgICAyNDMsIDk3LCAxMiwgMSwgMjQzLCA5OCwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMjksIDg4LCAxMiwgMSwgMjQzLCA5OCwgMiwgCi0gICAgMTE3LCAxNzYsIDU1LCAxMiwgMSwgMjQyLCA4MiwgMTIsIDEsIDI0MywgOTgsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIAotICAgIDIzMywgMTI3LCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjMzLCAxMjcsIDIsIDYyLCA0OSwgMTIsIDEsIDIzMywgMTI3LCAyLCAKLSAgICAxMzMsIDE3NiwgNDksIDEyLCAxLCAyMzMsIDEyNywgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDYyLCAKLSAgICA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyNDIsIDE5NCwgMTIsIDEsIDIyMywgMTE1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDIyMywgCi0gICAgMTMwLCAxMiwgMSwgMjI4LCAxNzQsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk1LCAxMiwgMSwgCi0gICAgMjE3LCAyMzQsIDIsIDYyLCA0OSwgMTIsIDEsIDI0MSwgMjAzLCAyLCA3MywgNDksIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAKLSAgICAxNDcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDIsIDE5MiwgNDksIDEyLCAxLCAyMTcsIDIxNiwgMjMxLCAyMjgsIAotICAgIDI0MiwgMTQ3LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjIzLCAxMzAsIDEyLCAxLCAyMzQsIDgyLCAyMjcsIDk5LCAxMiwgMSwgCi0gICAgMjI3LCA5OSwgMTIsIDEsIDY5LCAxMiwgMSwgMjEyLCAyMDMsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIDIwMywgMTIsIDEsIAotICAgIDIxNCwgMTUsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDIxNCwgMjMyLCAxMiwgMSwgMjQ0LCAxMzYsIDIxMywgMzQsIDEyLCAKLSAgICAxLCA3MywgMiwgMjE4LCAyNywgMTIsIDEsIDczLCAyLCAzLCAyMTUsIDc5LCAxMiwgMSwgMjE0LCAxNSwgMiwgNjIsIDQ5LCAKLSAgICAxMiwgMSwgNzQsIDEyLCAxLCA3MywgMiwgMTMzLCAxNzYsIDU1LCAxMiwgMSwgNzMsIDI1MiwgNTIsIDEyLCAxLCA3MywgCi0gICAgMjUyLCA1MywgMiwgMTkyLCA0OSwgMTIsIDI0MywgMjAwLCAyMTksIDY5LCAxMiwgMSwgMjU0LCAxNDgsIDEyLCAzLCAxMjQsIAotICAgIDI2LCAyMjIsIDE5NiwgMiwgMjMzLCAxMjcsIDIsIDEwNiwgMjMxLCAyNTUsIDEyLCAzLCAxMjQsIDI2LCAyMjQsIDIyNiwgMiwgCi0gICAgMjMzLCAxMjcsIDIsIDEwNiwgMjMxLCAyNTUsIDEyLCAzLCAxMjQsIDYzLCA3MCwgMTcsIDEyLCAzLCAxMjQsIDIzMywgMTI3LCAKLSAgICAyNTQsIDc4LCAxMiwgMywgMTI0LCAyMzUsIDEyNCwgMTIsIDMsIDEyNCwgMTMzLCAyNDcsIDcyLCAxMiwgMywgMTI0LCAyMjIsIAotICAgIDg1LCAxMiwgMjQ1LCAxMDEsIDY1LCAyNTMsIDgyLCAxMiwgMjE5LCA5MSwgNjUsIDIyMywgNDksIDI0NSwgMTMyLCAyNDEsIAotICAgIDE0MSwgMTIsIDMsIDEyNCwgMjIzLCA4NSwgMjEyLCA3OSwgMTIsIDMsIDEyNCwgMjE1LCAxMzAsIDIyNCwgOCwgMjEyLCA3OSwgCi0gICAgMTIsIDMsIDEyNCwgMjQ3LCA3MywgMjQxLCAyMjAsIDY1LCAyMzQsIDEzNSwgMTIsIDMsIDEyNCwgNjMsIDQ4LCAxNywgMTIsIAotICAgIDMsIDExNSwgMjIyLCA4NSwgMTIsIDMsIDEyNCwgMjMyLCAzMiwgMTIsIDMsIDIxNCwgMTQsIDEyLCAzLCAyMTMsIDM0LCAxMiwgCi0gICAgMywgMTI0LCAyMTMsIDM0LCAxMiwgMywgMTI0LCAyMjgsIDE3MywgMTIsIDIyNSwgMTczLCA2NSwgMjIyLCAxODQsIDEyLCAKLSAgICAyNDUsIDExMCwgMjUwLCAxMDksIDExNSwgMjE5LCA2OSwgMTIsIDI0NSwgMTEwLCAyNTAsIDEwOSwgMTI0LCAyMTksIDY5LCAKLSAgICAxMiwgMjIzLCA4NSwgMTI0LCAyMTksIDcwLCAyLCAyNDQsIDczLCAyNTAsIDEwOCwgMTIsIDMsIDExNSwgMjMxLCAxNDMsIAotICAgIDEyLCAxLCAyNDgsIDE0MSwgMiwgMjM1LCAxOTEsIDIxNSwgNzksIDEyLCAxLCAyMjMsIDI0NiwgMiwgMjM1LCAxOTEsIDIxNSwgCi0gICAgNzksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDIxMiwgNzksIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDExNiwgMjQ0LCAKLSAgICAyNDYsIDI1MywgMjA3LCAyMSwgMTA5LCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxNjYsIDI0NCwgMjQ2LCAyNTMsIDIwNywgCi0gICAgMjEsIDE2MywgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTgwLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxODksIDI0NCwgCi0gICAgMjQ2LCAyNTMsIDIwNywgMjEsIDE5OCwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTk1LCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAyMDAsIDEyLCAxLCAyMjAsIDI0MCwgMiwgNjIsIDU1LCAxMiwgMSwgMjQ4LCAxNjAsIDIsIDYyLCA1NSwgMTIsIDEsIAotICAgIDI0MiwgMjIxLCAyLCA2MiwgNTUsIDEyLCA1LCAyMjAsIDg0LCAyNTQsIDM1LCAxMiwgNSwgMjIwLCA4NCwgMjI1LCAxMTUsIAotICAgIDIzMSwgMTIyLCAxMiwgMSwgMjQxLCAyMDMsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxNzUsIDI0NSwgMTAxLCA2NSwgMjI2LCAKLSAgICAxNDIsIDE3NSwgMjE4LCAyMTksIDI0MywgMjAwLCAyMTksIDY5LCAxNzUsIDIxOSwgMTIsIDI0MywgMjAwLCAyMTksIDY5LCAKLSAgICAxNzUsIDIxOCwgMjE5LCAyNDksIDE2NCwgMTc1LCAyMTksIDEyLCAyNDksIDE2NCwgMTc1LCAxOTksIDI0OSwgMTY0LCAxNzUsIAotICAgIDI0OSwgMTY1LCAyMjAsIDM0LCAyMzMsIDcwLCAxNzUsIDI0OSwgMTY1LCAyMjAsIDM0LCAyMjMsIDE0OCwgMTc1LCAyMTgsIAotICAgIDIxOSwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIzMywgNzAsIDE3NSwgMjE5LCAxMiwgMjQ5LCAxNjUsIDIyMCwgMzQsIDIyMywgCi0gICAgMTQ4LCAxNzUsIDI0OSwgMTE5LCAxNzUsIDI0MSwgMjQwLCAyMjcsIDExNCwgMTc1LCAyNDEsIDI0MCwgMjMxLCAxMDMsIAotICAgIDE3NSwgMjQxLCAyNDAsIDI1MywgMTM0LCAxNzUsIDI1NCwgMTgxLCA3NywgMTc1LCAxLCAyNTQsIDgyLCAxNzUsIDEsIDIxOCwgCi0gICAgMjIzLCAyNTQsIDgyLCAxNzUsIDEsIDI1MSwgMjAyLCAxNzUsIDEsIDI0MywgODksIDE3NSwgMSwgMjQzLCA5MCwgMjQzLCAKLSAgICA2NywgMTc1LCAxLCAyNDgsIDEzNywgMTc1LCAxLCAyNDcsIDczLCAyNDgsIDEzOCwgMjIzLCAxMjYsIDE3NSwgMSwgMjQxLCAKLSAgICAyMjIsIDE3NSwgMSwgMjE0LCAxNCwgMTc1LCAxLCAyMTIsIDEwMSwgMTc1LCAxLCAyNDEsIDE4MCwgMTc1LCAxLCAyMTcsIAotICAgIDE3OSwgMTc1LCAxLCAyMTcsIDE4MCwgMjQzLCA2NywgMTc1LCAxLCAyMTIsIDE5MCwgMTc1LCAxLCAyMTIsIDE5MSwgMjQxLCAKLSAgICAyMjIsIDE3NSwgMSwgMjM0LCAyMzAsIDE3NSwgMSwgMjMzLCAxMjUsIDE3NSwgMSwgMjMxLCAzLCAxNzUsIDEsIDIyOCwgNTAsIAotICAgIDE3NSwgMSwgMjIxLCA2MywgMTc1LCAxLCA0MCwgMjIxLCA2MywgMTc1LCAxLCA3NCwgMTc1LCAxLCAyMjYsIDk2LCAxNzUsIAotICAgIDEsIDIyMywgMjAyLCAyMjYsIDk2LCAxNzUsIDEsIDIyMiwgMTkzLCAxNzUsIDEsIDIyNCwgMjE5LCAxNzUsIDEsIDIyMywgCi0gICAgMTI2LCAxNzUsIDEsIDIyMCwgMjAwLCAxNzUsIDEsIDIxNywgMjQzLCAxNzUsIDEsIDIyNiwgNDUsIDI1MSwgMTkwLCAxNzUsIAotICAgIDEsIDIyNiwgNDUsIDI0MiwgMjE4LCAxNzUsIDEsIDIyNiwgNDUsIDI0NywgMjI4LCAxNzUsIDIyNSwgMzYsIDQ5LCAxNzUsIAotICAgIDIyNSwgMzYsIDU1LCAxNzUsIDIyNSwgMzYsIDI0NiwgNzEsIDE3NSwgMjEyLCAxMCwgNDksIDE3NSwgMjEyLCAxMCwgNTUsIAotICAgIDE3NSwgMjEyLCAxMCwgMjQ2LCA3MSwgMTc1LCAyMjQsIDI0LCA0OSwgMTc1LCAyMjQsIDI0LCA1NSwgMTc1LCAyNDYsIDcyLCAKLSAgICAyMTIsIDE3LCAyNDEsIDMxLCAxNzUsIDI0NiwgNzIsIDIxMiwgMTcsIDI1NCwgMTUsIDE3NSwgMjQxLCAyMjUsIDQ5LCAxNzUsIAotICAgIDI0MSwgMjI1LCA1NSwgMTc1LCAyNDEsIDIyNCwgMjQ2LCA3MSwgMTc1LCAyNDUsIDQzLCA0OSwgMTc1LCAyNDUsIDQzLCA1NSwgCi0gICAgMTc1LCAyMjMsIDE5LCAxNzUsIDI0NCwgMTA1LCAyNDcsIDc0LCAxNzUsIDIyNCwgMTM3LCAxNzUsIDIyMywgNDUsIDE3NSwgCi0gICAgMTE3LCA3MSwgMTc2LCA0OSwgMTc1LCAxMTcsIDcxLCAxNzYsIDU1LCAxNzUsIDEzMywgMTc2LCA0OSwgMTc1LCAxMzMsIAotICAgIDE3NiwgNTUsIDE3NSwgMjI3LCAxMTIsIDIzMiwgMjQzLCA0OSwgMTc1LCAyMjcsIDExMiwgMjMyLCAyNDMsIDU1LCAxNzUsIAotICAgIDIzMCwgMTI2LCAxNzUsIDI1MiwgNTEsIDE3NSwgMSwgMjE5LCAyMzMsIDIxMiwgNzMsIDE3NSwgMSwgMjE5LCAyMzMsIDIzNCwgCi0gICAgMTI4LCAxNzUsIDEsIDIxOSwgMjMzLCAyNDQsIDEyMywgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMzMsIDE3NiwgMjQwLCAyMzcsIAotICAgIDU1LCAxMiwgMSwgMjUxLCAyMzEsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAKLSAgICAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMzMsIDE3NiwgMjI1LCAKLSAgICAxNDEsIDIxNSwgMTI0LCAyNTEsIDIyMCwgMjQsIDExNywgMTc2LCA0OSwgMTIsIDEsIDI1MSwgMjMxLCAyLCAxMTcsIDE3NiwgCi0gICAgMjUxLCAyMjAsIDI0LCA2MiwgNDksIDEyLCAxLCAyNTEsIDIzMSwgMiwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDU1LCAxMiwgCi0gICAgMSwgMjUxLCAyMzEsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAxMjEsIDIsIDExNywgMTc2LCA0OSwgMTIsIDEsIDEyMSwgMiwgCi0gICAgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAyNDgsIDE0MSwgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCAKLSAgICAyNTEsIDIyMCwgMjQsIDMsIDIxOCwgMjksIDEyLCAxLCAyNDgsIDE0MSwgMiwgMjM1LCAxOTEsIDMsIDIxNSwgODAsIDU1LCAKLSAgICAxMiwgMSwgMjIzLCAyNDYsIDIsIDkwLCAxMiwgMSwgMjIyLCA4NiwgMiwgMjQzLCAyMzcsIDE3NiwgNDksIDEyLCAxLCAyNTQsIAotICAgIDEwNCwgMiwgMTE3LCAxNzYsIDQ5LCAxMiwgMSwgMjU0LCAxMDQsIDIsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgCi0gICAgNDksIDEyLCAxLCAyNTQsIDEwNCwgMiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA0OSwgMTIsIDEsIDI0NCwgMTEyLCAyLCAxMTcsIAotICAgIDE3NiwgNTUsIDEyLCAxLCAyNDQsIDExMiwgMiwgMTMzLCAxNzYsIDIyNSwgMTQxLCAyMTUsIDEyNCwgNTUsIDEyLCAxLCAKLSAgICAyMzQsIDE4MSwgMiwgNjIsIDQ5LCAxMiwgMSwgMjM0LCAxODEsIDIsIDEzMywgMTc2LCA0OSwgMTIsIDEsIDIzNCwgMTgxLCAKLSAgICAyLCAxMzMsIDE3NiwgMjI1LCAxNDEsIDIxNSwgMTI0LCA1NSwgMTIsIDEsIDYzLCAyLCA2MiwgNDksIDEyLCAxLCA2MywgMiwgCi0gICAgNjIsIDU1LCAxMiwgMSwgMjI4LCAxNzQsIDIsIDExNywgMTc2LCA1NSwgMTIsIDEsIDIyOCwgMTc0LCAyLCAzLCAyMTgsIDI5LCAKLSAgICAxMiwgMSwgMjI4LCAxNzQsIDIsIDMsIDIxNSwgNzksIDEyLCAxLCAyMzMsIDEyNywgMiwgMTM0LCAxMiwgMSwgMjIzLCAyNDYsIAotICAgIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAyMjMsIDI0NiwgMiwgMTkyLCA0OSwgMTIsIDEsIDIyMiwgODYsIAotICAgIDIsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAxLCAxMjEsIDIsIDMsIDEyLCAxLCAyMTgsIDMwLCA1NSwgMTIsIDEsIAotICAgIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDI0LCAxMTcsIDI0NywgNzIsIDEyLCAxLCAyMjIsIDg2LCAyLCAzLCAxMiwgMSwgCi0gICAgMjE4LCAzMCwgMjQsIDExNywgMjQ3LCA3MiwgMTIsIDEsIDIyMywgMjQ2LCAyLCAzLCAxMiwgMSwgMjE4LCAzMCwgMjQsIAotICAgIDExNywgMjQ3LCA3MiwgMTIsIDEsIDEyMSwgMiwgMywgMTIsIDEsIDIxOCwgMzAsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMTA2LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIAotICAgIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMjQ0LCAKLSAgICAxMzYsIDczLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMzMsIDQ5LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCAyLCAyNDQsIAotICAgIDI0NiwgMjUzLCAyMDcsIDIxLCAyNDMsIDIzNywgNTUsIDEyLCAxLCAyMTQsIDE1LCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIAotICAgIDIxLCAxMTcsIDQ5LCAxMiwgMSwgMjE0LCAxNSwgMiwgMjQ0LCAyNDYsIDI1MywgMjA3LCAyMSwgMTMzLCA0OSwgMTIsIDEsIAotICAgIDczLCAyNTIsIDUzLCAyLCAyNDQsIDI0NiwgMjUzLCAyMDcsIDIxLCAxMTcsIDQ5LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDIsIAotICAgIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDEzMywgNDksIDEyLCAxLCAxMjEsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIAotICAgIDI0MywgMjM3LCA1NSwgMTIsIDEsIDIyMiwgODYsIDIsIDI0NCwgMjQ2LCAyNTMsIDIwNywgMjEsIDI0MywgMjM3LCA0OSwgCi0gICAgMTIsIDEsIDIyMiwgODYsIDIsIDIzNSwgMTkxLCAyMTUsIDc5LCAxMiwgMSwgMjM0LCAyNTUsIDIsIDExNywgMTc2LCA0OSwgCi0gICAgMjE3LCAxNTgsIDEsIDI0MiwgMjcsIDIxNywgMTU4LCAxLCAyMjAsIDI0OCwgMjE3LCAxNTgsIDEsIDIyOCwgMTcyLCAyMTcsIAotICAgIDE1OCwgMSwgMjI0LCA3NCwgMjE3LCAxNTgsIDEsIDI1MiwgMTA2LCAyMTcsIDE1OCwgMSwgMjMzLCAyMiwgMjE3LCAxNTgsIAotICAgIDEsIDIzNSwgMTIsIDIxNywgMTU4LCAxLCAyNTQsIDY4LCAyMTcsIDE1OCwgMSwgMjE0LCAyNTUsIDIxNywgMTU4LCAxLCAKLSAgICAyMzEsIDE0MiwgMjE3LCAxNTgsIDEsIDI0NCwgMTYyLCAyMTcsIDE1OCwgMSwgMjQ3LCAyMzEsIDIxNywgMTU4LCAxLCAyMTcsIAotICAgIDE2MCwgMjE3LCAxNTgsIDEsIDIzMywgMTUzLCAyMTcsIDE1OCwgMSwgMjQzLCAxMDYsIDIxNywgMTU4LCAxLCAyNDIsIDE1MywgCi0gICAgMjE3LCAxNTgsIDEsIDIyMiwgODQsIDIxNywgMTU4LCAxLCAyNDgsIDk0LCAyMTcsIDE1OCwgMSwgMjEyLCA5MywgMjE3LCAKLSAgICAxNTgsIDEsIDIxNywgMjQ0LCAyMTcsIDE1OCwgMSwgMjEzLCA5MSwgMjE3LCAxNTgsIDEsIDIyNiwgMTA3LCAyMTcsIDE1OCwgCi0gICAgMSwgMjM1LCAxMjksIDIxNywgMTU4LCAxLCAyNTAsIDcwLCAyMTcsIDE1OCwgMSwgMjE2LCAxMTQsIDIxNywgMTU4LCAxLCAKLSAgICAyNDEsIDE3MywgMjE3LCAxNTgsIDEsIDIzNCwgMTM3LCAyMTcsIDE1OCwgMSwgMjE3LCAxNTksIDIxNywgMTU4LCAxLCAyMTIsIAotICAgIDEwOCwgMjE3LCAxNTgsIDEsIDIyMCwgMjM4LCAyMTcsIDE1OCwgMSwgMjIyLCAxOTksIDIxNywgMTU4LCAxLCAyNDgsIDE2MiwgCi0gICAgMjE3LCAxNTgsIDEsIDEwOCwgMjE3LCAxNTgsIDEsIDIxMiwgMTYsIDIxNywgMTU4LCAxLCAyNTQsIDEwMSwgMjE3LCAxNTgsIAotICAgIDEsIDI0MiwgMjE5LCAyMTcsIDE1OCwgMSwgMjI0LCAyMjksIDIxNywgMTU4LCAxLCAyMTQsIDQ3LCAyMTcsIDE1OCwgMjU0LCAKLSAgICAxODIsIDIxNywgMTU4LCAyNTQsIDE5NywgMjE3LCAxNTgsIDI0MCwgMTA3LCAyMTcsIDE1OCwgMjQ1LCAxNjQsIDIxNywgCi0gICAgMTU4LCAyMTUsIDE5MSwgMjE3LCAxNTgsIDIyNywgNDgsIDIxNywgMTU4LCAyNDUsIDE3MiwgMjE3LCAxNTgsIDI0NCwgMjQwLCAKLSAgICAyMTcsIDE1OCwgMjI3LCAxMTEsIDIxNywgMTU4LCAyMjcsIDExOSwgMjE3LCAxNTgsIDIxOCwgMjQ2LCAyMTcsIDE1OCwgMSwgCi0gICAgMjMwLCA0MywgMjI4LCAyMjQsIDIxLCAyMTIsIDc5LCAyMjgsIDIyNCwgMjEsIDExNiwgMjI4LCAyMjQsIDIxLCAxMDksIAotICAgIDIyOCwgMjI0LCAyMSwgMTY2LCAyMjgsIDIyNCwgMjEsIDE2MywgMjI4LCAyMjQsIDIxLCAxODAsIDIyOCwgMjI0LCAyMSwgCi0gICAgMTg5LCAyMjgsIDIyNCwgMjEsIDE5OCwgMjI4LCAyMjQsIDIxLCAxOTUsIDIyOCwgMjI0LCAyMSwgMjAwLCAyMjgsIDIyNCwgCi0gICAgMSwgNjEsIDIyOCwgMjI0LCAxLCAyNDUsIDE2NSwgMjI4LCAyMjQsIDEsIDcyLCAyMjgsIDIyNCwgMSwgNzQsIDIyOCwgMjI0LCAKLSAgICAxLCA2OSwgMjI4LCAyMjQsIDEsIDIyNywgNDksIDIyOCwgMjI0LCAxLCA3NSwgMjI4LCAyMjQsIDEsIDI0OCwgMTUyLCAyMjgsIAotICAgIDIyNCwgMSwgMjA0LCAyMjgsIDIyNCwgMSwgMjUyLCAxMDcsIDIyOCwgMjI0LCAxLCAxOTMsIDIyOCwgMjI0LCAxLCAyMTgsIAotICAgIDUyLCAyMjgsIDIyNCwgMSwgMjM1LCAxMzksIDIyOCwgMjI0LCAxLCAyNTAsIDkyLCAyMjgsIDIyNCwgMSwgMjQ4LCAxNjQsIAotICAgIDIyOCwgMjI0LCAxLCAyMDMsIDIyOCwgMjI0LCAxLCAyMjMsIDgxLCAyMjgsIDIyNCwgMSwgMjIyLCAyMDIsIDIyOCwgMjI0LCAKLSAgICAxLCAyNDMsIDU1LCAyMjgsIDIyNCwgMSwgMjQ0LCAxNjQsIDIyOCwgMjI0LCAxLCAxODEsIDIyOCwgMjI0LCAxLCAyMzMsIAotICAgIDE1NywgMjI4LCAyMjQsIDEsIDIzMCwgNDYsIDIxMywgMjEwLCAyMjgsIDIyNCwgMSwgMTg4LCAyMjgsIDIyNCwgMSwgMjI4LCAKLSAgICAyMywgMjI4LCAyMjQsIDEsIDIwNSwgMjI4LCAyMjQsIDEsIDE1OSwgMjI4LCAyMjQsIDEsIDIxNCwgNDksIDIyOCwgMjI0LCAKLSAgICAxLCAxODYsIDIyOCwgMjI0LCAxLCAyMjgsIDI0LCAyMTMsIDIxMCwgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDIzNSwgMTM5LCAKLSAgICAyMjgsIDIyNCwgMSwgMjM1LCA2NCwgMjUwLCA5MiwgMjI4LCAyMjQsIDEsIDIzNSwgNjQsIDIwMywgMjI4LCAyMjQsIDM3LCAKLSAgICAyMjAsIDE3NSwgMTI0LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAyMjAsIDE3NSwgMTE1LCAyMTYsIDI0MSwgMjI4LCAyMjQsIAotICAgIDM3LCAyMjAsIDE3NSwgMjIzLCAxMjUsIDIxNiwgMjQxLCAyMjgsIDIyNCwgMzcsIDE4NCwgMjQ3LCAyNDUsIDIxNiwgMjQxLCAKLSAgICAyMjgsIDIyNCwgMzcsIDE4NCwgMTI0LCAyMTYsIDI0MSwgMjI4LCAyMjQsIDM3LCAxODQsIDExNSwgMjE2LCAyNDEsIDIyOCwgCi0gICAgMjI0LCAzNywgMTg0LCAyMjMsIDEyNSwgMjE2LCAyNDEsIDIyOCwgMjI0LCAzNywgMjMwLCAxMywgNzcsIDIyOCwgMjI0LCAKLSAgICAzNywgNTEsIDYyLCA0OSwgMjI4LCAyMjQsIDEyNCwgMTYwLCAyNTMsIDIyNiwgMjI4LCAyMjQsIDExNSwgMTYwLCAyNTMsIAotICAgIDIyNiwgMjI4LCAyMjQsIDE2LCAyMjcsIDUwLCAyNDgsIDEsIDIyOCwgMjI0LCAxNiwgMjQzLCA1NCwgMjI4LCAyMjQsIDI0OSwgCi0gICAgMTU3LCAyMjgsIDIyNCwgMjQ0LCAyNTQsIDc3LCAyMjgsIDIyNCwgMjMzLCAxMzIsIDIyMiwgMTY3LCAxLCAyNTQsIDg0LCAKLSAgICAyMjIsIDE2NywgMSwgMjUxLCAxNTEsIDIyMiwgMTY3LCAxLCAyNDMsIDg4LCAyMjIsIDE2NywgMSwgMjQ4LCAxMzksIDIyMiwgCi0gICAgMTY3LCAxLCAyMzUsIDE1MCwgMjIyLCAxNjcsIDEsIDI1MiwgMTA2LCAyMjIsIDE2NywgMSwgMjEyLCA4MiwgMjIyLCAxNjcsIAotICAgIDEsIDIzNSwgMTU4LCAyMjIsIDE2NywgMSwgMjE3LCAyMCwgMjIyLCAxNjcsIDEsIDIxMiwgMTczLCAyMjIsIDE2NywgMSwgCi0gICAgMjM1LCAxMywgMjIyLCAxNjcsIDEsIDIzMywgMTUwLCAyMjIsIDE2NywgMSwgMjMxLCAzLCAyMjIsIDE2NywgMSwgMjI4LCAKLSAgICA1MCwgMjIyLCAxNjcsIDEsIDIyMCwgODIsIDIyMiwgMTY3LCAxLCAyMzUsIDI1MSwgMjIyLCAxNjcsIDEsIDI0NCwgOTAsIAotICAgIDIyMiwgMTY3LCAxLCAyMTYsIDEzOSwgMjIyLCAxNjcsIDEsIDIyNCwgMTU1LCAyMjIsIDE2NywgMSwgMjIzLCAxMjYsIDIyMiwgCi0gICAgMTY3LCAxLCAyMjEsIDgsIDIyMiwgMTY3LCAxLCAyMTgsIDQ4LCAyMjIsIDE2NywgMTUyLCAyMzUsIDI1MSwgMjIyLCAxNjcsIAotICAgIDE1MiwgMjM1LCAyNTAsIDIyMiwgMTY3LCAxNTIsIDIyNywgMTA3LCAyMjIsIDE2NywgMTUyLCAyNDgsIDE1MCwgMjIyLCAKLSAgICAxNjcsIDU5LCAxLCAyNDUsIDY4LCAyMTIsIDE3MywgMjIyLCAxNjcsIDE1MiwgMjQ1LCA2OCwgMjEyLCAxNzMsIDIyMiwgCi0gICAgMTY3LCAzMCwgNSwgMTg0LCA3NCwgMjIyLCAxNjcsIDMwLCA1LCA3NCwgMjIyLCAxNjcsIDMwLCA1LCAyMjYsIDI0MiwgMjU0LCAKLSAgICAyMzIsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCAyNTQsIDIzMiwgMjIyLCAxNjcsIDMwLCA1LCAyNTQsIDIzMiwgMjIyLCAxNjcsIAotICAgIDMwLCA1LCAyMjYsIDI0MiwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCA2MSwgMjIyLCAxNjcsIDMwLCA1LCA2MSwgMjIyLCAKLSAgICAxNjcsIDU5LCAxLCAyMjAsIDE3NSwgNjEsIDIyMiwgMTY3LCAzMCwgNSwgMjIwLCAxNzUsIDYxLCAyMjIsIDE2NywgMzAsIDUsIAotICAgIDE4NCwgNjksIDIyMiwgMTY3LCAzMCwgNSwgNjksIDIyMiwgMTY3LCA1OSwgMSwgNzIsIDIyMiwgMTY3LCAzMCwgNSwgMTg0LCAKLSAgICA3MiwgMjIyLCAxNjcsIDMwLCA1LCA3MiwgMjIyLCAxNjcsIDMwLCA1LCA3NSwgMjIyLCAxNjcsIDMwLCA1LCAyMTgsIDI0NiwgCi0gICAgMjIyLCAxNjcsIDE1MiwgMjI5LCAxNzQsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMjksIDE3NCwgMjIyLCAxNjcsIDIyNSwgMjcsIAotICAgIDI1NCwgMTIzLCAyMjIsIDE2NywgMjI1LCAyNywgMjU0LCAyMywgMjIyLCAxNjcsIDIyNSwgMjcsIDI1MiwgMzQsIDIyMiwgCi0gICAgMTY3LCAyMjUsIDI3LCAyNTMsIDExNywgMjIyLCAxNjcsIDIyNSwgMjcsIDIyMCwgMTg4LCAyMjIsIDE2NywgMjU0LCAxODEsIAotICAgIDc3LCAyMjIsIDE2NywgMjI1LCAyNywgMjMxLCAxMzIsIDIyNCwgMTkwLCAyMjIsIDE2NywgMjI1LCAyNywgMjEyLCAyNCwgCi0gICAgMjIyLCAxNjcsIDIyNSwgMjcsIDIyNCwgMTkwLCAyMjIsIDE2NywgMjI1LCAyNywgMjEyLCAxMDcsIDIyMiwgMTY3LCAyMjUsIAotICAgIDI3LCAyMTYsIDU0LCAyMjIsIDE2NywgMjI1LCAyNywgMjUzLCAxODAsIDIyMiwgMTY3LCAyMjUsIDI3LCAyMTksIDIzNywgCi0gICAgMjMxLCAyMDgsIDIyMiwgMTY3LCAyMjUsIDI3LCAyNTQsIDExLCAyMzEsIDI0NSwgMSwgMjQyLCA3LCAyMzEsIDI0NSwgMSwgCi0gICAgMjU0LCAxODUsIDIzMSwgMjQ1LCAxLCAyNTQsIDEyMSwgMjMxLCAyNDUsIDEsIDI1NCwgMTYwLCAyMzEsIDI0NSwgMSwgMjU0LCAKLSAgICAxMTQsIDIzMSwgMjQ1LCAxLCAyMTUsIDk4LCAyMzEsIDI0NSwgMSwgMjUzLCA3NiwgMjMxLCAyNDUsIDEsIDIzNSwgMTU4LCAKLSAgICAyMzEsIDI0NSwgMSwgMjUzLCAxMTQsIDIzMSwgMjQ1LCAxLCAyNTQsIDg5LCAyMzEsIDI0NSwgMSwgMjU0LCA5NCwgMjMxLCAKLSAgICAyNDUsIDEsIDI1NCwgODYsIDIzMSwgMjQ1LCAxLCAyNTQsIDQ1LCAyMzEsIDI0NSwgMSwgMjU0LCAzMiwgMjMxLCAyNDUsIDEsIAotICAgIDI1MywgMTUyLCAyMzEsIDI0NSwgMSwgMjM1LCAyNTEsIDIzMSwgMjQ1LCAxLCAyNTMsIDIzOSwgMjMxLCAyNDUsIDEsIDI1MywgCi0gICAgMTI0LCAyMzEsIDI0NSwgMSwgMjUzLCAyMTUsIDIzMSwgMjQ1LCAxLCAyNTMsIDIxMSwgMjMxLCAyNDUsIDEsIDI1MywgMTQ2LCAKLSAgICAyMzEsIDI0NSwgMSwgMjUzLCAxMjIsIDIzMSwgMjQ1LCAxLCAyNDYsIDEwLCAyMzEsIDI0NSwgMSwgMjM1LCA2LCAyMzEsIAotICAgIDI0NSwgMSwgMjU0LCAxMDMsIDIzMSwgMjQ1LCAyNTQsIDEyNywgNzcsIDIzMSwgMjQ1LCAyMTQsIDExNywgNzcsIDIzMSwgCi0gICAgMjQ1LCAyNDMsIDI5LCA3NywgMjMxLCAyNDUsIDIyNSwgMjYsIDgyLCA1LCAyMzUsIDE5MSwgMjUwLCAxODcsIDgyLCA1LCAKLSAgICAyNTAsIDE4NywgODIsIDUsIDI1MywgMjQyLCA4MiwgNSwgMjE0LCAxMjgsIDgyLCAxLCAyMjAsIDE3NSwgNjEsIDgyLCAxLCAKLSAgICA2MSwgODIsIDEsIDI1NCwgMjMyLCA4MiwgMSwgNzIsIDgyLCAxLCAyMzYsIDI4LCA4MiwgMSwgNjksIDgyLCAxLCAyMTUsIAotICAgIDkyLCA4MiwgMSwgMTYxLCAxNDksIDgyLCAxLCAxNjEsIDE1MCwgODIsIDEsIDI1MCwgMTkwLCA3NCwgODIsIDEsIDIyMCwgCi0gICAgMTc1LCA3NCwgODIsIDEsIDc0LCA4MiwgMSwgMjU0LCAxMDgsIDgyLCAxLCAyNTAsIDE5MCwgNzUsIDgyLCAxLCAyMjAsIAotICAgIDE3NSwgNzUsIDgyLCAxLCA3NSwgODIsIDEsIDI1MywgMTA4LCA4MiwgMSwgMTgxLCA4MiwgMSwgMjM0LCAxMzgsIDgyLCAxLCAKLSAgICAyNDMsIDExMCwgODIsIDEsIDI0MiwgMjI1LCA4MiwgMSwgMjI5LCAxNTksIDgyLCAxLCAyNTAsIDIxOSwgODIsIDEsIDI1MCwgCi0gICAgOTIsIDgyLCAxLCAyMzUsIDEzOSwgODIsIDEsIDIzNSwgMTE1LCA4MiwgMSwgMjI4LCAyMywgODIsIDEsIDIxNiwgMTE1LCAKLSAgICA4MiwgMSwgMjE2LCAxMDUsIDgyLCAxLCAyNDgsIDg2LCA4MiwgMSwgMjQ4LCA3MCwgODIsIDEsIDIyOCwgMTk4LCA4MiwgMSwgCi0gICAgMjE4LCA1MiwgODIsIDEsIDIxNywgMTYxLCA4MiwgMSwgMjQ4LCAxNjQsIDgyLCAxLCAyNDcsIDIzMiwgODIsIDEsIDIwNSwgCi0gICAgODIsIDEsIDIyOCwgMTg5LCA4MiwgMSwgMTkzLCA4MiwgMSwgMjI2LCAyMywgODIsIDEsIDI1MiwgMTA3LCA4MiwgMSwgMjUxLCAKLSAgICAxOTUsIDgyLCAxLCAxODgsIDgyLCAxLCAxODYsIDgyLCAxLCAyMDMsIDgyLCAxLCAyMjMsIDgxLCA4MiwgMSwgMjMzLCAxNTcsIAotICAgIDgyLCAxLCAyMzIsIDIxMywgODIsIDEsIDIzMiwgMjEyLCA4MiwgMSwgMjE1LCAxLCA4MiwgMSwgMjIxLCAyNCwgODIsIDEsIAotICAgIDIxOSwgMTU3LCA4MiwgMSwgMjIyLCAyMDIsIDgyLCAxLCAxNTksIDgyLCAzMCwgNSwgMjI3LCA5OSwgODIsIDMwLCA1LCAKLSAgICAyMjcsIDQ3LCA4MiwgNSwgMjI4LCA2MCwgODIsIDUsIDI1MywgOTEsIDgyLCAzMCwgNSwgMjU0LCAyMzIsIDgyLCAzMCwgNSwgCi0gICAgNzIsIDgyLCAzMCwgNSwgMjM2LCAyOCwgODIsIDMwLCA1LCA2OSwgODIsIDMwLCA1LCAyMTUsIDkyLCA4MiwgMzAsIDUsIAotICAgIDE2MSwgMTQ5LCA4MiwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgODIsIDMwLCA1LCAyNTAsIDE5MCwgNzQsIDgyLCAzMCwgNSwgCi0gICAgMjIwLCAxNzUsIDc0LCA4MiwgMzAsIDUsIDc0LCA4MiwgMzAsIDUsIDI1NCwgMTA4LCA4MiwgMzAsIDUsIDI1MCwgMTkwLCAKLSAgICA3NSwgODIsIDMwLCA1LCAyMjAsIDE3NSwgNzUsIDgyLCAzMCwgNSwgNzUsIDgyLCAzMCwgNSwgMjUzLCAxMDgsIDgyLCA1LCAKLSAgICAyMTQsIDEzMywgODIsIDMwLCA1LCAyMjUsIDY2LCA3NCwgODIsIDMwLCA1LCAyNTMsIDg3LCA4MiwgMjI3LCA3MCwgODIsIAotICAgIDIxOSwgNTEsIDUsIDIxNSwgMTg1LCA4MiwgMjE5LCA1MSwgNSwgMjUzLCAyNDQsIDgyLCAyNDIsIDExNCwgMjU0LCAxNzQsIAotICAgIDgyLCAyNTQsIDE2NCwgMjU0LCAxNzQsIDgyLCAzMCwgNSwgMjUwLCAxOTAsIDE4NCwgNzQsIDgyLCAzMCwgNSwgMjE1LCAKLSAgICAxODMsIDgyLCAzMCwgNSwgMjE1LCA5MSwgODIsIDEsIDIyNCwgMjMyLCA4MiwgMSwgMjM0LCAxMjEsIDgyLCAxLCAyNDIsIAotICAgIDIwMiwgODIsIDEsIDIxMiwgMTA5LCA4MiwgMSwgMjQ4LCA3NSwgODIsIDEsIDIyMywgMTkyLCA4MiwgMSwgMjQ0LCAxNjQsIAotICAgIDgyLCAxLCAyMTIsIDE2MCwgODIsIDEsIDE2MSwgMjIzLCA4MiwgODIsIDEsIDE2MSwgMjMyLCAyMTQsIDgyLCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDgyLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgODIsIDI0OCwgMTIzLCA4MiwgNTEsIDI0OCwgMTIzLCA4MiwgCi0gICAgMjEsIDIxMiwgNzksIDgyLCAyMSwgMTE2LCA4MiwgMjEsIDEwOSwgODIsIDIxLCAxNjYsIDgyLCAyMSwgMTYzLCA4MiwgMjEsIAotICAgIDE4MCwgODIsIDIxLCAxODksIDgyLCAyMSwgMTk4LCA4MiwgMjEsIDE5NSwgODIsIDIxLCAyMDAsIDgyLCAyNTQsIDE4MSwgCi0gICAgNTIsIDgyLCA1LCAxMjQsIDIxOSwgMjA1LCAyNDcsIDc0LCA4MiwgMSwgMjUwLCAxOTAsIDYxLCA4MiwgMSwgMjI3LCA5OSwgCi0gICAgODIsIDEsIDIyNywgNDcsIDgyLCAxLCAyNTMsIDg3LCA4MiwgMSwgMjE1LCAxODMsIDgyLCAxLCAyMTUsIDkxLCA4MiwgMSwgCi0gICAgMjEyLCA3NSwgODIsIDEsIDEwNywgMTg2LCA4MiwgMSwgMjQzLCA1LCA4MiwgMSwgMjM1LCA5OSwgODIsIDEsIDI0MiwgMTU2LCAKLSAgICAyMTksIDY5LCA4MiwgMSwgMjQ4LCA3NiwgODIsIDEsIDI1MiwgMzEsIDE0MCwgNSwgMjUwLCAxODcsIDE0MCwgNSwgMjUzLCAKLSAgICAyNDIsIDE0MCwgNSwgMjE0LCAxMjgsIDE0MCwgMSwgNjEsIDE0MCwgMSwgMjU0LCAyMzIsIDE0MCwgMSwgNzIsIDE0MCwgMSwgCi0gICAgMjM2LCAyOCwgMTQwLCAxLCA2OSwgMTQwLCAxLCAyMTUsIDkyLCAxNDAsIDEsIDE2MSwgMTQ5LCAxNDAsIDEsIDE2MSwgMTUwLCAKLSAgICAxNDAsIDEsIDc0LCAxNDAsIDEsIDI1NCwgMTA4LCAxNDAsIDEsIDc1LCAxNDAsIDEsIDI1MywgMTA4LCAxNDAsIDEsIDE4MSwgCi0gICAgMTQwLCAxLCAyMzQsIDEzOCwgMTQwLCAxLCAyNDMsIDExMCwgMTQwLCAxLCAyNDIsIDIyNSwgMTQwLCAxLCAyMjksIDE1OSwgCi0gICAgMTQwLCAxLCAyNTAsIDIxOSwgMTQwLCAxLCAyNTAsIDkyLCAxNDAsIDEsIDIzNSwgMTM5LCAxNDAsIDEsIDIzNSwgMTE1LCAKLSAgICAxNDAsIDEsIDIyOCwgMjMsIDE0MCwgMSwgMjE2LCAxMTUsIDE0MCwgMSwgMjE2LCAxMDUsIDE0MCwgMSwgMjQ4LCA4NiwgCi0gICAgMTQwLCAxLCAyNDgsIDcwLCAxNDAsIDEsIDIyOCwgMTk4LCAxNDAsIDEsIDIxOCwgNTIsIDE0MCwgMSwgMjE3LCAxNjEsIAotICAgIDE0MCwgMSwgMjQ4LCAxNjQsIDE0MCwgMSwgMjQ3LCAyMzIsIDE0MCwgMSwgMjA1LCAxNDAsIDEsIDE5MywgMTQwLCAxLCAKLSAgICAyMjYsIDIzLCAxNDAsIDEsIDI1MiwgMTA3LCAxNDAsIDEsIDI1MSwgMTk1LCAxNDAsIDEsIDE4OCwgMTQwLCAxLCAxODYsIAotICAgIDE0MCwgMSwgMjAzLCAxNDAsIDEsIDIzMywgMTU3LCAxNDAsIDEsIDIyMSwgMjQsIDE0MCwgMSwgMjE5LCAxNTcsIDE0MCwgMSwgCi0gICAgMjIyLCAyMDIsIDE0MCwgMSwgMTU5LCAxNDAsIDUsIDIyOCwgNjAsIDE0MCwgNSwgMjUzLCA5MSwgMTQwLCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDE0MCwgMzAsIDUsIDcyLCAxNDAsIDMwLCA1LCAyMzYsIDI4LCAxNDAsIDMwLCA1LCA2OSwgMTQwLCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMTQwLCAzMCwgNSwgMTYxLCAxNDksIDE0MCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgMTQwLCAzMCwgNSwgNzQsIAotICAgIDE0MCwgMzAsIDUsIDI1NCwgMTA4LCAxNDAsIDMwLCA1LCA3NSwgMTQwLCAzMCwgNSwgMjUzLCAxMDgsIDE0MCwgNSwgMjE0LCAKLSAgICAxMzMsIDE0MCwgMSwgMjM0LCAxMzAsIDIxOCwgNTIsIDE0MCwgMjUzLCAxMDksIDIzMywgNDcsIDc3LCAxNDAsIDEsIDIyMywgCi0gICAgODEsIDE0MCwgMSwgMjIzLCAxOTIsIDE0MCwgMSwgMjEyLCAxNjAsIDE0MCwgMSwgMTYxLCAyMjMsIDgyLCAxNDAsIDEsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE0MCwgMzAsIDUsIDE2MSwgMTUwLCAxNDAsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxNDAsIDIxLCAKLSAgICAyMTIsIDc5LCAxNDAsIDIxLCAxMTYsIDE0MCwgMjEsIDEwOSwgMTQwLCAyMSwgMTY2LCAxNDAsIDIxLCAxNjMsIDE0MCwgMjEsIAotICAgIDE4MCwgMTQwLCAyMSwgMTg5LCAxNDAsIDIxLCAxOTgsIDE0MCwgMjEsIDE5NSwgMTQwLCAyMSwgMjAwLCAxNDAsIDEsIDIyNCwgCi0gICAgNzcsIDIsIDIzMSwgMzcsIDI0NywgMjA2LCAxNDAsIDEsIDIyNCwgNzcsIDIsIDIzMiwgMTYzLCAyNDcsIDIwNiwgMTQwLCAKLSAgICAyMjMsIDI5LCA3NywgMTQwLCAyMjMsIDI5LCA1MiwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxMTYsIDE0MCwgMjQ5LCAzOSwgCi0gICAgMjI4LCA1MywgMTA5LCAxNDAsIDI0OSwgMzksIDIyOCwgNTMsIDE2NiwgMTQwLCAyNDksIDM5LCAyMjgsIDUzLCAxNjMsIAotICAgIDE0MCwgMjQ5LCAzOSwgMjI4LCA1MywgMTIyLCAyMzMsIDQwLCAyMTcsIDE1NCwgMjE3LCAxNDksIDI0NywgMjU1LCAxNDAsIAotICAgIDI0OSwgMzksIDI0OCwgMCwgMjIwLCA0NywgMTQwLCAyMzUsIDE1OSwgMTQwLCAyNDMsIDc5LCA3NywgMTczLCA1LCAyNTQsIAotICAgIDE1OSwgMjUxLCAxNjYsIDE3MywgNSwgMjUxLCAxNjYsIDE3MywgNSwgMjE0LCAxMjgsIDE3MywgMSwgNjEsIDE3MywgMSwgCi0gICAgMjU0LCAyMzIsIDE3MywgMSwgNzIsIDE3MywgMSwgMjM2LCAyOCwgMTczLCAxLCA2OSwgMTczLCAxLCAyMTUsIDkyLCAxNzMsIAotICAgIDEsIDI0NSwgMTY1LCAxNzMsIDEsIDI1NCwgMTA4LCAxNzMsIDEsIDIyNywgNDksIDE3MywgMSwgMjUzLCAxMDgsIDE3MywgMSwgCi0gICAgMTgxLCAxNzMsIDEsIDIzNCwgMTM4LCAxNzMsIDEsIDI0MywgMTEwLCAxNzMsIDEsIDI0MiwgMjI1LCAxNzMsIDEsIDIyOSwgCi0gICAgMTU5LCAxNzMsIDEsIDI1MCwgMjE5LCAxNzMsIDEsIDI1MCwgOTIsIDE3MywgMSwgMjM1LCAxMzksIDE3MywgMSwgMjM1LCAKLSAgICAxMTUsIDE3MywgMSwgMjI4LCAyMywgMTczLCAxLCAyMTYsIDExNSwgMTczLCAxLCAyMTYsIDEwNSwgMTczLCAxLCAyNDgsIAotICAgIDg2LCAxNzMsIDEsIDI0OCwgNzAsIDE3MywgMSwgMjI4LCAxOTgsIDE3MywgMSwgMjE4LCA1MiwgMTczLCAxLCAyMTcsIDE2MSwgCi0gICAgMTczLCAxLCAyNDgsIDE2NCwgMTczLCAxLCAyNDcsIDIzMiwgMTczLCAxLCAyMDUsIDE3MywgMSwgMTkzLCAxNzMsIDEsIAotICAgIDIyNiwgMjMsIDE3MywgMSwgMjUyLCAxMDcsIDE3MywgMSwgMjUxLCAxOTUsIDE3MywgMSwgMTg4LCAxNzMsIDEsIDE4NiwgCi0gICAgMTczLCAxLCAyMDMsIDE3MywgMSwgMjMzLCAxNTcsIDE3MywgMSwgMjMyLCAyMTMsIDE3MywgMSwgMjE1LCAxLCAxNzMsIDEsIAotICAgIDIyMSwgMjQsIDE3MywgMSwgMjIyLCAyMDIsIDE3MywgMSwgMTU5LCAxNzMsIDUsIDIyOCwgNjAsIDE3MywgMzAsIDUsIDI1NCwgCi0gICAgMjMyLCAxNzMsIDMwLCA1LCA3MiwgMTczLCAzMCwgNSwgMjM2LCAyOCwgMTczLCAzMCwgNSwgNjksIDE3MywgMzAsIDUsIAotICAgIDIxNSwgOTIsIDE3MywgMzAsIDUsIDI0NSwgMTY1LCAxNzMsIDMwLCA1LCAyNTQsIDEwOCwgMTczLCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTczLCAzMCwgNSwgMjUzLCAxMDgsIDE3MywgNSwgMjE0LCAxMzMsIDE3MywgNSwgMjE1LCAxODcsIDE3MywgMSwgMjM0LCAKLSAgICAxMjEsIDE3MywgMSwgMjQyLCAyMDIsIDE3MywgMSwgMjEyLCAxMDksIDE3MywgMSwgMjIzLCA4MSwgMTczLCAxLCAyNDQsIAotICAgIDE2NCwgMTczLCAyMSwgMjEyLCA3OSwgMTczLCAyMSwgMTE2LCAxNzMsIDIxLCAxMDksIDE3MywgMjEsIDE2NiwgMTczLCAyMSwgCi0gICAgMTYzLCAxNzMsIDIxLCAxODAsIDE3MywgMjEsIDE4OSwgMTczLCAyMSwgMTk4LCAxNzMsIDIxLCAxOTUsIDE3MywgMjEsIAotICAgIDIwMCwgMTczLCAyMTcsIDI3LCAxNzMsIDI1NCwgMTU4LCAxNzMsIDIzNSwgMTc2LCAxNzMsIDIxNSwgMTE3LCAxNzMsIDI0NSwgCi0gICAgMTM4LCAyMjcsIDU0LCAxNzMsIDUsIDIxMywgNjcsIDE2NCwgNSwgMjUwLCAxODcsIDE2NCwgNSwgMjUzLCAyNDIsIDE2NCwgCi0gICAgNSwgMjE0LCAxMjgsIDE2NCwgMSwgNjEsIDE2NCwgMSwgMjU0LCAyMzIsIDE2NCwgMSwgNzIsIDE2NCwgMSwgMjM2LCAyOCwgCi0gICAgMTY0LCAxLCA2OSwgMTY0LCAxLCAyMTUsIDkyLCAxNjQsIDEsIDE2MSwgMTQ5LCAxNjQsIDEsIDE2MSwgMTUwLCAxNjQsIDMwLCAKLSAgICAyNTAsIDE5MCwgNzQsIDE2NCwgMSwgNzQsIDE2NCwgMSwgMjU0LCAxMDgsIDE2NCwgMzAsIDI1MCwgMTkwLCA3NSwgMTY0LCAKLSAgICAxLCA3NSwgMTY0LCAxLCAyNTMsIDEwOCwgMTY0LCAxLCAxODEsIDE2NCwgMSwgMjM0LCAxMzgsIDE2NCwgMSwgMjQzLCAxMTAsIAotICAgIDE2NCwgMSwgMjQyLCAyMjUsIDE2NCwgMSwgMjI5LCAxNTksIDE2NCwgMSwgMjUwLCAyMTksIDE2NCwgMSwgMjUwLCA5MiwgCi0gICAgMTY0LCAxLCAyMzUsIDEzOSwgMTY0LCAxLCAyMzUsIDExNSwgMTY0LCAxLCAyMjgsIDIzLCAxNjQsIDEsIDIxNiwgMTE1LCAKLSAgICAxNjQsIDEsIDIxNiwgMTA1LCAxNjQsIDEsIDI0OCwgODYsIDE2NCwgMSwgMjQ4LCA3MCwgMTY0LCAxLCAyMjgsIDE5OCwgCi0gICAgMTY0LCAxLCAyMTgsIDUyLCAxNjQsIDEsIDIxNywgMTYxLCAxNjQsIDEsIDI0OCwgMTY0LCAxNjQsIDEsIDI0NywgMjMyLCAKLSAgICAxNjQsIDEsIDIwNSwgMTY0LCAxLCAxOTMsIDE2NCwgMSwgMjI2LCAyMywgMTY0LCAxLCAyNTIsIDEwNywgMTY0LCAxLCAyNTEsIAotICAgIDE5NSwgMTY0LCAxLCAxODgsIDE2NCwgMSwgMTg2LCAxNjQsIDEsIDIwMywgMTY0LCAxLCAyMzMsIDE1NywgMTY0LCAxLCAKLSAgICAyMzIsIDIxMywgMTY0LCAxLCAyMTUsIDEsIDE2NCwgMSwgMjIxLCAyNCwgMTY0LCAxLCAyMTksIDE1NywgMTY0LCAxLCAyMjIsIAotICAgIDIwMiwgMTY0LCAxLCAxNTksIDE2NCwgNSwgMjI4LCA2MCwgMTY0LCA1LCAyNTMsIDkxLCAxNjQsIDMwLCA1LCAyNTQsIDIzMiwgCi0gICAgMTY0LCAzMCwgNSwgNzIsIDE2NCwgMzAsIDUsIDIzNiwgMjgsIDE2NCwgMzAsIDUsIDY5LCAxNjQsIDMwLCA1LCAyMTUsIDkyLCAKLSAgICAxNjQsIDMwLCA1LCAxNjEsIDE0OSwgMTY0LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNjQsIDMwLCA1LCAyNTAsIDE5MCwgNzQsIAotICAgIDE2NCwgMzAsIDUsIDc0LCAxNjQsIDMwLCA1LCAyNTQsIDEwOCwgMTY0LCAzMCwgNSwgMjUwLCAxOTAsIDc1LCAxNjQsIDMwLCAKLSAgICA1LCA3NSwgMTY0LCAzMCwgNSwgMjUzLCAxMDgsIDE2NCwgNSwgMjE0LCAxMzMsIDE2NCwgMjI3LCA3MCwgMTY0LCAxLCAxNjEsIAotICAgIDIyMywgODIsIDE2NCwgMSwgMTYxLCAyMzIsIDIxNCwgMTY0LCAzMCwgNSwgMTYxLCAxNTAsIDE2NCwgMzAsIDUsIDE2MSwgCi0gICAgMjMyLCAyMTQsIDE2NCwgMjEsIDIxMiwgNzksIDE2NCwgMjEsIDExNiwgMTY0LCAyMSwgMTA5LCAxNjQsIDIxLCAxNjYsIAotICAgIDE2NCwgMjEsIDE2MywgMTY0LCAyMSwgMTgwLCAxNjQsIDIxLCAxODksIDE2NCwgMjEsIDE5OCwgMTY0LCAyMSwgMTk1LCAKLSAgICAxNjQsIDIxLCAyMDAsIDE2NCwgMjIzLCAyOSwgNTIsIDE0NywgNSwgMjUwLCAxODcsIDE0NywgNSwgMjUzLCAyNDIsIDE0NywgCi0gICAgNSwgMjE0LCAxMjgsIDE0NywgMSwgNjEsIDE0NywgMSwgMjU0LCAyMzIsIDE0NywgMSwgNzIsIDE0NywgMSwgMjM2LCAyOCwgCi0gICAgMTQ3LCAxLCA2OSwgMTQ3LCAxLCAyMTUsIDkyLCAxNDcsIDEsIDE2MSwgMTQ5LCAxNDcsIDEsIDE2MSwgMTUwLCAxNDcsIDEsIAotICAgIDc0LCAxNDcsIDEsIDI1NCwgMTA4LCAxNDcsIDEsIDc1LCAxNDcsIDEsIDI1MywgMTA4LCAxNDcsIDEsIDE4MSwgMTQ3LCAxLCAKLSAgICAyMzQsIDEzOCwgMTQ3LCAxLCAyNDMsIDExMCwgMTQ3LCAxLCAyNDIsIDIyNSwgMTQ3LCAxLCAyMjksIDE1OSwgMTQ3LCAxLCAKLSAgICAyNTAsIDIxOSwgMTQ3LCAxLCAyNTAsIDkyLCAxNDcsIDEsIDIzNSwgMTM5LCAxNDcsIDEsIDIzNSwgMTE1LCAxNDcsIDEsIAotICAgIDIyOCwgMjMsIDE0NywgMSwgMjE2LCAxMTUsIDE0NywgMSwgMjE2LCAxMDUsIDE0NywgMSwgMjQ4LCA4NiwgMTQ3LCAxLCAKLSAgICAyNDgsIDcwLCAxNDcsIDEsIDIyOCwgMTk4LCAxNDcsIDEsIDIxOCwgNTIsIDE0NywgMSwgMjE3LCAxNjEsIDE0NywgMSwgCi0gICAgMjQ4LCAxNjQsIDE0NywgMSwgMjQ3LCAyMzIsIDE0NywgMSwgMjA1LCAxNDcsIDEsIDE5MywgMTQ3LCAxLCAyMjYsIDIzLCAKLSAgICAxNDcsIDEsIDI1MiwgMTA3LCAxNDcsIDEsIDI1MSwgMTk1LCAxNDcsIDEsIDE4OCwgMTQ3LCAxLCAxODYsIDE0NywgMSwgCi0gICAgMjAzLCAxNDcsIDEsIDIzMywgMTU3LCAxNDcsIDEsIDIzMiwgMjEzLCAxNDcsIDEsIDIxNSwgMSwgMTQ3LCAxLCAyMjEsIDI0LCAKLSAgICAxNDcsIDEsIDIxOSwgMTU3LCAxNDcsIDEsIDIyMiwgMjAyLCAxNDcsIDEsIDE1OSwgMTQ3LCA1LCAyMjgsIDYwLCAxNDcsIDUsIAotICAgIDI1MywgOTEsIDE0NywgMzAsIDUsIDI1NCwgMjMyLCAxNDcsIDMwLCA1LCA3MiwgMTQ3LCAzMCwgNSwgMjM2LCAyOCwgMTQ3LCAKLSAgICAzMCwgNSwgNjksIDE0NywgMzAsIDUsIDIxNSwgOTIsIDE0NywgMzAsIDUsIDE2MSwgMTQ5LCAxNDcsIDMwLCA1LCAxNjEsIAotICAgIDIyMywgODIsIDE0NywgMzAsIDUsIDc0LCAxNDcsIDMwLCA1LCAyNTQsIDEwOCwgMTQ3LCAzMCwgNSwgNzUsIDE0NywgMzAsIAotICAgIDUsIDI1MywgMTA4LCAxNDcsIDUsIDIxNCwgMTMzLCAxNDcsIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTQ3LCAyNTMsIDEwOSwgCi0gICAgMjMzLCA0NywgNzcsIDE0NywgMSwgMjIzLCA4MSwgMTQ3LCAxLCAyMjMsIDE5MiwgMTQ3LCAxLCAyMTIsIDE2MCwgMTQ3LCAxLCAKLSAgICAxNjEsIDIyMywgODIsIDE0NywgMSwgMTYxLCAyMzIsIDIxNCwgMTQ3LCAzMCwgNSwgMTYxLCAxNTAsIDE0NywgMzAsIDUsIAotICAgIDE2MSwgMjMyLCAyMTQsIDE0NywgMjEsIDIxMiwgNzksIDE0NywgMjEsIDExNiwgMTQ3LCAyMSwgMTA5LCAxNDcsIDIxLCAKLSAgICAxNjYsIDE0NywgMjEsIDE2MywgMTQ3LCAyMSwgMTgwLCAxNDcsIDIxLCAxODksIDE0NywgMjEsIDE5OCwgMTQ3LCAyMSwgCi0gICAgMTk1LCAxNDcsIDIxLCAyMDAsIDE0NywgMjM1LCAxNTksIDE0NywgMSwgMjE0LCA0OSwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAKLSAgICAyMjQsIDE2NiwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDE0NywgMjQzLCAyMjgsIDEzMywgMjI0LCAxNjQsIDE0NywgCi0gICAgMjQzLCAyMjgsIDEyMiwgMjIwLCA0NSwgMTQ3LCAyNDMsIDIyOCwgMTIyLCAyNDUsIDE0NSwgMTQ3LCAyNDMsIDIyOCwgMTMzLCAKLSAgICAyMjAsIDQ0LCAxNzgsIDUsIDI1MywgMjQyLCAxNzgsIDUsIDIxNCwgMTI4LCAxNzgsIDEsIDYxLCAxNzgsIDEsIDI1NCwgCi0gICAgMjMyLCAxNzgsIDEsIDcyLCAxNzgsIDEsIDIzNiwgMjgsIDE3OCwgMSwgNjksIDE3OCwgMSwgMjE1LCA5MiwgMTc4LCAxLCAKLSAgICA3NCwgMTc4LCAxLCAyNDUsIDE2NSwgMTc4LCAxLCAyNTQsIDEwOCwgMTc4LCAxLCA3NSwgMTc4LCAxLCAyMjcsIDQ5LCAxNzgsIAotICAgIDEsIDI1MywgMTA4LCAxNzgsIDEsIDE4MSwgMTc4LCAxLCAyMjksIDE1OSwgMTc4LCAxLCAyNTAsIDIxOSwgMTc4LCAxLCAKLSAgICAyMzUsIDEzOSwgMTc4LCAxLCAyMjgsIDIzLCAxNzgsIDEsIDIxNiwgMTE1LCAxNzgsIDEsIDIyOCwgMTk4LCAxNzgsIDEsIAotICAgIDIxOCwgNTIsIDE3OCwgMSwgMjA1LCAxNzgsIDEsIDIyOCwgMTg5LCAxNzgsIDEsIDE5MywgMTc4LCAxLCAxODgsIDE3OCwgMSwgCi0gICAgMTg2LCAxNzgsIDEsIDIwMywgMTc4LCAxLCAyMjMsIDgxLCAxNzgsIDEsIDIzMywgMTU3LCAxNzgsIDEsIDIzMiwgMjEzLCAKLSAgICAxNzgsIDEsIDIzMiwgMjEyLCAxNzgsIDEsIDIxNSwgMSwgMTc4LCAxLCAyMjEsIDI0LCAxNzgsIDEsIDIxOSwgMTU3LCAxNzgsIAotICAgIDEsIDIyMiwgMjAyLCAxNzgsIDEsIDE1OSwgMTc4LCAzMCwgNSwgMjU0LCAyMzIsIDE3OCwgMzAsIDUsIDcyLCAxNzgsIDMwLCAKLSAgICA1LCAyMzYsIDI4LCAxNzgsIDMwLCA1LCA2OSwgMTc4LCAzMCwgNSwgMjE1LCA5MiwgMTc4LCAzMCwgNSwgNzQsIDE3OCwgMzAsIAotICAgIDUsIDI0NSwgMTY1LCAxNzgsIDMwLCA1LCAyNTQsIDEwOCwgMTc4LCAzMCwgNSwgNzUsIDE3OCwgMzAsIDUsIDIyNywgNDksIAotICAgIDE3OCwgMzAsIDUsIDI1MywgMTA4LCAxNzgsIDUsIDIxNCwgMTMzLCAxNzgsIDIyNywgNzAsIDE3OCwgMjUzLCAxMDksIDIzMywgCi0gICAgNDcsIDc3LCAxNzgsIDIxLCAyMTIsIDc5LCAxNzgsIDIxLCAxMTYsIDE3OCwgMjEsIDEwOSwgMTc4LCAyMSwgMTY2LCAxNzgsIAotICAgIDIxLCAxNjMsIDE3OCwgMjEsIDE4MCwgMTc4LCAyMSwgMTg5LCAxNzgsIDIxLCAxOTgsIDE3OCwgMjEsIDE5NSwgMTc4LCAyMSwgCi0gICAgMjAwLCAxNzgsIDUwLCAyMTcsIDIwMCwgMTc4LCA1MCwgMTIyLCAyNDAsIDIwMCwgMTc4LCA1MCwgMTIyLCAyMTcsIDEwMCwgCi0gICAgMTc4LCAyNDgsIDkyLCA1MiwgMTc4LCAyMzAsIDIwNSwgNTIsIDE3OCwgMjEzLCAzNiwgNTIsIDE3OCwgMjQ4LCAzOCwgNTIsIAotICAgIDE3OCwgMjQ5LCA3OSwgNTIsIDE3OCwgMjUzLCAxNTMsIDc4LCA1MiwgMTc4LCAyMjMsIDI5LCA1MiwgMTc4LCA1MCwgNTIsIAotICAgIDEzOSwgNSwgMjUwLCAxODcsIDEzOSwgNSwgMjUzLCAyNDIsIDEzOSwgNSwgMjE0LCAxMjgsIDEzOSwgMSwgNjEsIDEzOSwgMSwgCi0gICAgMjU0LCAyMzIsIDEzOSwgMSwgNzIsIDEzOSwgMSwgMjM2LCAyOCwgMTM5LCAxLCA2OSwgMTM5LCAxLCAyMTUsIDkyLCAxMzksIAotICAgIDEsIDE2MSwgMTQ5LCAxMzksIDEsIDE2MSwgMTUwLCAxMzksIDEsIDc0LCAxMzksIDEsIDI0NSwgMTY1LCAxMzksIDEsIDI1NCwgCi0gICAgMTA4LCAxMzksIDEsIDc1LCAxMzksIDEsIDIyNywgNDksIDEzOSwgMSwgMjUzLCAxMDgsIDEzOSwgMSwgMTgxLCAxMzksIDEsIAotICAgIDIzNCwgMTM4LCAxMzksIDEsIDI0MywgMTEwLCAxMzksIDEsIDI0MiwgMjI1LCAxMzksIDEsIDIyOSwgMTU5LCAxMzksIDEsIAotICAgIDI1MCwgMjE5LCAxMzksIDEsIDI1MCwgOTIsIDEzOSwgMSwgMjM1LCAxMzksIDEzOSwgMSwgMjM1LCAxMTUsIDEzOSwgMSwgCi0gICAgMjI4LCAyMywgMTM5LCAxLCAyMTYsIDExNSwgMTM5LCAxLCAyMTYsIDEwNSwgMTM5LCAxLCAyNDgsIDg2LCAxMzksIDEsIAotICAgIDI0OCwgNzAsIDEzOSwgMSwgMjI4LCAxOTgsIDEzOSwgMSwgMjE4LCA1MiwgMTM5LCAxLCAyMTcsIDE2MSwgMTM5LCAxLCAKLSAgICAyNDgsIDE2NCwgMTM5LCAxLCAyNDcsIDIzMiwgMTM5LCAxLCAyMDUsIDEzOSwgMSwgMTkzLCAxMzksIDEsIDIyNiwgMjMsIAotICAgIDEzOSwgMSwgMjUyLCAxMDcsIDEzOSwgMSwgMjUxLCAxOTUsIDEzOSwgMSwgMTg4LCAxMzksIDEsIDE4NiwgMTM5LCAxLCAKLSAgICAyMDMsIDEzOSwgMSwgMjIzLCA4MSwgMTM5LCAxLCAyMzMsIDE1NywgMTM5LCAxLCAyMzIsIDIxMywgMTM5LCAxLCAyMTUsIDEsIAotICAgIDEzOSwgMSwgMjIxLCAyNCwgMTM5LCAxLCAyMTksIDE1NywgMTM5LCAxLCAyMjIsIDIwMiwgMTM5LCAxLCAxNTksIDEzOSwgNSwgCi0gICAgMjUzLCA5MSwgMTM5LCAzMCwgNSwgMjU0LCAyMzIsIDEzOSwgMzAsIDUsIDcyLCAxMzksIDMwLCA1LCAyMzYsIDI4LCAxMzksIAotICAgIDMwLCA1LCA2OSwgMTM5LCAzMCwgNSwgMjE1LCA5MiwgMTM5LCAzMCwgNSwgMTYxLCAxNDksIDEzOSwgMzAsIDUsIDE2MSwgCi0gICAgMjIzLCA4MiwgMTM5LCAzMCwgNSwgNzQsIDEzOSwgMzAsIDUsIDI0NSwgMTY1LCAxMzksIDMwLCA1LCAyNTQsIDEwOCwgMTM5LCAKLSAgICAzMCwgNSwgNzUsIDEzOSwgMzAsIDUsIDIyNywgNDksIDEzOSwgMzAsIDUsIDI1MywgMTA4LCAxMzksIDUsIDIxNCwgMTMzLCAKLSAgICAxMzksIDIzMywgNDcsIDc3LCAxMzksIDI1NCwgMTA5LCAyMzMsIDQ3LCA3NywgMTM5LCAxLCAyMTYsIDE0MSwgMTM5LCAxLCAKLSAgICAyNDUsIDI0OSwgMTM5LCAxLCAxNjEsIDIyMywgODIsIDEzOSwgMSwgMTYxLCAyMzIsIDIxNCwgMTM5LCAzMCwgNSwgMTYxLCAKLSAgICAxNTAsIDEzOSwgMzAsIDUsIDE2MSwgMjMyLCAyMTQsIDEzOSwgMjEsIDIxMiwgNzksIDEzOSwgMjEsIDExNiwgMTM5LCAyMSwgCi0gICAgMTA5LCAxMzksIDIxLCAxNjYsIDEzOSwgMjEsIDE2MywgMTM5LCAyMSwgMTgwLCAxMzksIDIxLCAxODksIDEzOSwgMjEsIAotICAgIDE5OCwgMTM5LCAyMSwgMTk1LCAxMzksIDIxLCAyMDAsIDEzOSwgMjQzLCAyMjgsIDIxLCAyMTIsIDgwLCAzMSwgMjI3LCAKLSAgICAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTIyLCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCAKLSAgICA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgMTE3LCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIAotICAgIDI0MywgMjI4LCAyMSwgMTMzLCAzMSwgMjI3LCAxMDIsIDIyNSwgMTAzLCA2NSwgMTYzLCAxMzksIDI0MywgMjI4LCAyMSwgCi0gICAgMTIyLCAzMSwgMjQ1LCA5LCAyMjUsIDEwMywgNjUsIDE2MywgMTM5LCAyNDMsIDIyOCwgMjEsIDExNywgMzEsIDI0NSwgOSwgCi0gICAgMjI1LCAxMDMsIDY1LCAxNjMsIDEzOSwgMjQzLCAyMjgsIDIxLCAxMzMsIDMxLCAyNDUsIDksIDIyNSwgMTAzLCA2NSwgMTYzLCAKLSAgICAxMzksIDUsIDIxNiwgNDksIDE1NSwgNSwgMjUzLCAyNDIsIDE1NSwgNSwgMjE0LCAxMjgsIDE1NSwgMSwgNjEsIDE1NSwgMSwgCi0gICAgMjU0LCAyMzIsIDE1NSwgMSwgNzIsIDE1NSwgMSwgMjM2LCAyOCwgMTU1LCAxLCA2OSwgMTU1LCAxLCAyMTUsIDkyLCAxNTUsIAotICAgIDEsIDE2MSwgMTQ5LCAxNTUsIDEsIDE2MSwgMTUwLCAxNTUsIDEsIDc0LCAxNTUsIDEsIDI0NSwgMTY1LCAxNTUsIDEsIDI1NCwgCi0gICAgMTA4LCAxNTUsIDEsIDc1LCAxNTUsIDEsIDIyNywgNDksIDE1NSwgMSwgMjUzLCAxMDgsIDE1NSwgMSwgMTgxLCAxNTUsIDEsIAotICAgIDIzNCwgMTM4LCAxNTUsIDEsIDI0MywgMTEwLCAxNTUsIDEsIDI0MiwgMjI1LCAxNTUsIDEsIDIyOSwgMTU5LCAxNTUsIDEsIAotICAgIDI1MCwgMjE5LCAxNTUsIDEsIDI1MCwgOTIsIDE1NSwgMSwgMjM1LCAxMzksIDE1NSwgMSwgMjM1LCAxMTUsIDE1NSwgMSwgCi0gICAgMjI4LCAyMywgMTU1LCAxLCAyMTYsIDExNSwgMTU1LCAxLCAyMTYsIDEwNSwgMTU1LCAxLCAyNDgsIDg2LCAxNTUsIDEsIAotICAgIDI0OCwgNzAsIDE1NSwgMSwgMjI4LCAxOTgsIDE1NSwgMSwgMjE4LCA1MiwgMTU1LCAxLCAyMTcsIDE2MSwgMTU1LCAxLCAKLSAgICAyNDgsIDE2NCwgMTU1LCAxLCAyNDcsIDIzMiwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMTkzLCAxNTUsIDEsIDIyNiwgMjMsIAotICAgIDE1NSwgMSwgMjUyLCAxMDcsIDE1NSwgMSwgMjUxLCAxOTUsIDE1NSwgMSwgMTg4LCAxNTUsIDEsIDE4NiwgMTU1LCAxLCAKLSAgICAyMDMsIDE1NSwgMSwgMjIzLCA4MSwgMTU1LCAxLCAyMzMsIDE1NywgMTU1LCAxLCAyMzIsIDIxMywgMTU1LCAxLCAyMTUsIDEsIAotICAgIDE1NSwgMSwgMjIxLCAyNCwgMTU1LCAxLCAyMTksIDE1NywgMTU1LCAxLCAyMjIsIDIwMiwgMTU1LCAxLCAxNTksIDE1NSwgNSwgCi0gICAgMjI4LCA2MCwgMTU1LCA1LCAyNTMsIDkxLCAxNTUsIDMwLCA1LCAyNTQsIDIzMiwgMTU1LCAzMCwgNSwgNzIsIDE1NSwgMzAsIAotICAgIDUsIDIzNiwgMjgsIDE1NSwgMzAsIDUsIDY5LCAxNTUsIDMwLCA1LCAyMTUsIDkyLCAxNTUsIDMwLCA1LCAxNjEsIDE0OSwgCi0gICAgMTU1LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNTUsIDMwLCA1LCA3NCwgMTU1LCAzMCwgNSwgMjQ1LCAxNjUsIDE1NSwgMzAsIAotICAgIDUsIDI1NCwgMTA4LCAxNTUsIDMwLCA1LCA3NSwgMTU1LCAzMCwgNSwgMjI3LCA0OSwgMTU1LCAzMCwgNSwgMjUzLCAxMDgsIAotICAgIDE1NSwgNSwgMjE0LCAxMzMsIDE1NSwgMjMzLCA0NywgNzcsIDE1NSwgMjU0LCAxMDksIDIzMywgNDcsIDc3LCAxNTUsIDEsIAotICAgIDI0NCwgMTY0LCAxNTUsIDEsIDE2MSwgMjIzLCA4MiwgMTU1LCAxLCAxNjEsIDIzMiwgMjE0LCAxNTUsIDMwLCA1LCAxNjEsIAotICAgIDE1MCwgMTU1LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTU1LCAyMSwgMjEyLCA3OSwgMTU1LCAyMSwgMTE2LCAxNTUsIDIxLCAKLSAgICAxMDksIDE1NSwgMjEsIDE2NiwgMTU1LCAyMSwgMTYzLCAxNTUsIDIxLCAxODAsIDE1NSwgMjEsIDE4OSwgMTU1LCAyMSwgCi0gICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCA1LCAyMzUsIDEwNCwgMTU1LCA1LCAyMTUsIDEzMiwgMTMwLCAKLSAgICA1LCAyNTMsIDI0MiwgMTMwLCA1LCAyMTQsIDEyOCwgMTMwLCAxLCA2MSwgMTMwLCAxLCAyNTQsIDIzMiwgMTMwLCAxLCA3MiwgCi0gICAgMTMwLCAxLCAyMzYsIDI4LCAxMzAsIDEsIDY5LCAxMzAsIDEsIDIxNSwgOTIsIDEzMCwgMSwgMTYxLCAxNDksIDEzMCwgMSwgCi0gICAgMTYxLCAxNTAsIDEzMCwgMSwgNzQsIDEzMCwgMSwgMjQ1LCAxNjUsIDEzMCwgMSwgMjU0LCAxMDgsIDEzMCwgMSwgNzUsIAotICAgIDEzMCwgMSwgMjI3LCA0OSwgMTMwLCAxLCAyNTMsIDEwOCwgMTMwLCAxLCAxODEsIDEzMCwgMSwgMjM0LCAxMzgsIDEzMCwgMSwgCi0gICAgMjQzLCAxMTAsIDEzMCwgMSwgMjQyLCAyMjUsIDEzMCwgMSwgMjI5LCAxNTksIDEzMCwgMSwgMjUwLCAyMTksIDEzMCwgMSwgCi0gICAgMjUwLCA5MiwgMTMwLCAxLCAyMzUsIDEzOSwgMTMwLCAxLCAyMzUsIDExNSwgMTMwLCAxLCAyMjgsIDIzLCAxMzAsIDEsIAotICAgIDIxNiwgMTE1LCAxMzAsIDEsIDIxNiwgMTA1LCAxMzAsIDEsIDI0OCwgODYsIDEzMCwgMSwgMjQ4LCA3MCwgMTMwLCAxLCAKLSAgICAyMjgsIDE5OCwgMTMwLCAxLCAyMTgsIDUyLCAxMzAsIDEsIDIxNywgMTYxLCAxMzAsIDEsIDI0OCwgMTY0LCAxMzAsIDEsIAotICAgIDI0NywgMjMyLCAxMzAsIDEsIDIwNSwgMTMwLCAxLCAyMjgsIDE4OSwgMTMwLCAxLCAxOTMsIDEzMCwgMSwgMjI2LCAyMywgCi0gICAgMTMwLCAxLCAyNTIsIDEwNywgMTMwLCAxLCAyNTEsIDE5NSwgMTMwLCAxLCAxODgsIDEzMCwgMSwgMTg2LCAxMzAsIDEsIAotICAgIDIwMywgMTMwLCAxLCAyMjMsIDgxLCAxMzAsIDEsIDIzMywgMTU3LCAxMzAsIDEsIDIzMiwgMjEzLCAxMzAsIDEsIDIzMiwgCi0gICAgMjEyLCAxMzAsIDEsIDIxNSwgMSwgMTMwLCAxLCAyMjEsIDI0LCAxMzAsIDEsIDIxOSwgMTU3LCAxMzAsIDEsIDIyMiwgMjAyLCAKLSAgICAxMzAsIDEsIDE1OSwgMTMwLCAxLCAyMTYsIDg4LCAxMzAsIDUsIDI1MywgOTEsIDEzMCwgMzAsIDUsIDI1NCwgMjMyLCAxMzAsIAotICAgIDMwLCA1LCA3MiwgMTMwLCAzMCwgNSwgMjM2LCAyOCwgMTMwLCAzMCwgNSwgNjksIDEzMCwgMzAsIDUsIDIxNSwgOTIsIDEzMCwgCi0gICAgMzAsIDUsIDE2MSwgMTQ5LCAxMzAsIDMwLCA1LCAxNjEsIDIyMywgODIsIDEzMCwgMzAsIDUsIDc0LCAxMzAsIDMwLCA1LCAKLSAgICAyNDUsIDE2NSwgMTMwLCAzMCwgNSwgMjU0LCAxMDgsIDEzMCwgMzAsIDUsIDc1LCAxMzAsIDMwLCA1LCAyMjcsIDQ5LCAxMzAsIAotICAgIDMwLCA1LCAyNTMsIDEwOCwgMTMwLCA1LCAyMTQsIDEzMywgMTMwLCAxLCA2MiwgMjIzLCAyMjUsIDEzMCwgMjUzLCAxMDksIAotICAgIDIzMywgNDcsIDc3LCAxMzAsIDEsIDE2MSwgMjIzLCA4MiwgMTMwLCAxLCAxNjEsIDIzMiwgMjE0LCAxMzAsIDMwLCA1LCAKLSAgICAxNjEsIDE1MCwgMTMwLCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTMwLCAyMSwgMjEyLCA3OSwgMTMwLCAyMSwgMTE2LCAxMzAsIAotICAgIDIxLCAxMDksIDEzMCwgMjEsIDE2NiwgMTMwLCAyMSwgMTYzLCAxMzAsIDIxLCAxODAsIDEzMCwgMjEsIDE4OSwgMTMwLCAyMSwgCi0gICAgMTk4LCAxMzAsIDIxLCAxOTUsIDEzMCwgMjEsIDIwMCwgMTMwLCA1MCwgMjE3LCAyMDAsIDEzMCwgNTAsIDEyMiwgMjQwLCAKLSAgICAyMDAsIDEzMCwgNTAsIDEyMiwgMjE3LCAxMDAsIDEzMCwgMjQzLCAyMjgsIDEyMiwgMjI0LCAxNjYsIDEzMCwgMjQzLCAyMjgsIAotICAgIDEyMiwgMjQyLCA5LCAxMzAsIDI0MywgMjI4LCAxMzMsIDIyNCwgMTY0LCAxMzAsIDI0OCwgOTYsIDc3LCAxMzAsIDEsIDI1MCwgCi0gICAgMzYsIDIyOCwgMTk5LCAxMzAsIDEsIDI1MCwgMzYsIDIwNCwgMTMwLCAxLCAyNTAsIDM2LCAyMjMsIDgyLCAxMzAsIDEsIAotICAgIDI1MCwgMzYsIDE1MCwgMTMwLCAxLCAyNTAsIDM2LCAyMzIsIDIxNCwgMTMwLCAxLCAyNTAsIDM2LCAyMzUsIDI3LCAxNzIsIAotICAgIDUsIDI1MywgMjQxLCAxNzIsIDUsIDIxNCwgMTI3LCAxNzIsIDEsIDI1MywgODEsIDE3MiwgMSwgMjU0LCAxODcsIDE3MiwgMSwgCi0gICAgMjU0LCAxMjgsIDE3MiwgMSwgMjU0LCAxNDMsIDE3MiwgMSwgMjM1LCAxNDksIDE3MiwgMSwgMjM2LCAyNywgMTcyLCAxLCAKLSAgICAyMTUsIDg0LCAxNzIsIDEsIDIxNSwgODYsIDE3MiwgMSwgMjM1LCAxNzEsIDE3MiwgMSwgMjM1LCAxNzIsIDE3MiwgMSwgCi0gICAgMjM2LCAxMywgMTcyLCAxLCAyMzYsIDE1LCAxNzIsIDEsIDI0NCwgMjQxLCAxNzIsIDEsIDI0NSwgMTYxLCAxNzIsIDEsIAotICAgIDI1NCwgOTYsIDE3MiwgMSwgMjI2LCAyMzIsIDE3MiwgMSwgMjI3LCA0MywgMTcyLCAxLCAyNTMsIDk0LCAxNzIsIDEsIDI1NCwgCi0gICAgNTUsIDIzNCwgMTkzLCAxNzIsIDEsIDIzMiwgMTQsIDIzNCwgMTkzLCAxNzIsIDEsIDI1NCwgNTUsIDI0MywgNTgsIDE3MiwgCi0gICAgMSwgMjMyLCAxNCwgMjQzLCA1OCwgMTcyLCAxLCAyMzQsIDIzNCwgMjMwLCA0MCwgMTcyLCAxLCAyMjIsIDE1MiwgMjQzLCAKLSAgICA1OCwgMTcyLCAxLCAyNTQsIDU1LCAyNTAsIDE0OSwgMTcyLCAxLCAyMzIsIDE0LCAyNTAsIDE0OSwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMzUsIDEyOCwgMTcyLCAxLCAyMzIsIDE0LCAyMzUsIDEyOCwgMTcyLCAxLCAyMTgsIDQ2LCAyMzAsIDQwLCAxNzIsIAotICAgIDEsIDIxOCwgNDYsIDIyMiwgMTUxLCAyMzAsIDQxLCAxNzIsIDEsIDIyMiwgMTUyLCAyMzUsIDEyOCwgMTcyLCAxLCAyNTQsIAotICAgIDU1LCAyMTYsIDExMywgMTcyLCAxLCAyMzIsIDE0LCAyMTYsIDExMywgMTcyLCAxLCAyNTQsIDU1LCAyNDgsIDc3LCAxNzIsIAotICAgIDEsIDIzMiwgMTQsIDI0OCwgNzcsIDE3MiwgMSwgMjMwLCAxMjQsIDIzMCwgMiwgMTcyLCAxLCAyMjIsIDE1MiwgMjQ4LCA3NywgCi0gICAgMTcyLCAxLCAyNTQsIDU1LCAyMTcsIDIzNywgMTcyLCAxLCAyMzIsIDE0LCAyMTcsIDIzNywgMTcyLCAxLCAyNTQsIDU1LCAKLSAgICAyNDgsIDkwLCAxNzIsIDEsIDIzMiwgMTQsIDI0OCwgOTAsIDE3MiwgMSwgMjQ4LCAxMTksIDIzMCwgMiwgMTcyLCAxLCAyMjIsIAotICAgIDE1MiwgMjQ4LCA5MCwgMTcyLCAxLCAyNTQsIDU1LCAyMjYsIDEwMiwgMTcyLCAxLCAyMzIsIDE0LCAyMjYsIDEwMiwgMTcyLCAKLSAgICAxLCAyNTQsIDU1LCAyNTIsIDMyLCAxNzIsIDEsIDIzMiwgMTQsIDI1MiwgMzIsIDE3MiwgMSwgMjMxLCAxOTUsIDE3MiwgMSwgCi0gICAgMjU0LCA0MCwgMjUyLCAzMiwgMTcyLCAxLCAyMTMsIDQyLCAxNzIsIDEsIDIyNCwgMjYsIDE3MiwgMSwgMjQ4LCAxMTksIAotICAgIDIzMywgOTEsIDE3MiwgMSwgMjE0LCAyMzQsIDE3MiwgMSwgMjE4LCA0NiwgMjIyLCAxMjgsIDE3MiwgMSwgMjMwLCAxMjQsIAotICAgIDIyMiwgMTI4LCAxNzIsIDEsIDI0OCwgMTE5LCAyMjIsIDEyOCwgMTcyLCAxLCAyNDEsIDIyNiwgMTcyLCAxLCAyMzAsIDEyNCwgCi0gICAgMjMzLCA5MSwgMTcyLCAxLCAyNDQsIDEyNSwgMTcyLCA1LCAyNTQsIDg1LCAxNzIsIDMwLCA1LCAyNTQsIDEzOCwgMTcyLCAKLSAgICAzMCwgNSwgMjM0LCAxNjEsIDI1NCwgMTQ1LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjU0LCAxNDUsIDE3MiwgMzAsIDUsIAotICAgIDIzNCwgMTYxLCAyMzUsIDE2OCwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIzNSwgMTY4LCAxNzIsIDMwLCA1LCAyMzQsIDE2MSwgCi0gICAgMjI2LCAyMTIsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyMjYsIDIxMiwgMTcyLCAzMCwgNSwgMjQzLCA5OSwgMTcyLCAzMCwgCi0gICAgNSwgMjM0LCAyNCwgMTcyLCAzMCwgNSwgMjQ3LCAxODAsIDIzNCwgMjQsIDE3MiwgMzAsIDUsIDIzNCwgMjYsIDI0OCwgMTgsIAotICAgIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIDI1NCwgMTM4LCAxNzIsIDMwLCA1LCAyMzQsIDI1LCAyNDIsIDI4LCAKLSAgICAyNDcsIDE4MCwgMjU0LCAxMzgsIDE3MiwgMzAsIDUsIDIzNCwgMjUsIDI0MiwgMjgsIDI0MywgNTcsIDE3MiwgMzAsIDUsIAotICAgIDI0MywgNTcsIDE3MiwgMzAsIDUsIDI0NywgMTgwLCAyNDMsIDk5LCAxNzIsIDMwLCA1LCAyNDcsIDE4MCwgMjQzLCA1NywgCi0gICAgMTcyLCAyMjUsIDI3LCAyMzMsIDIyOCwgMTU0LCAxMzcsIDIzNCwgMzgsIDIzNCwgMjUwLCAxNTQsIDEzNywgMjM0LCAxMTQsIAotICAgIDIzNCwgMTM0LCAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTA3LCAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTA0LCAKLSAgICAxNTQsIDEzNywgMjM0LCAxMTQsIDIzNCwgMTExLCAxNTQsIDEzNywgMjM0LCAxMTQsIDIyNCwgNDYsIDE1NCwgMTM3LCAyMjksIAotICAgIDkxLCAyMjksIDc4LCAxNTQsIDEzNywgMjUwLCAyNCwgMjUwLCA4MywgMTU0LCAxMzcsIDI1MCwgMjQsIDI1MCwgMzIsIDE1NCwgCi0gICAgMTM3LCAyNTAsIDI0LCAyNTAsIDgyLCAxNTQsIDEzNywgMjE5LCAyNDMsIDIxOSwgMjQyLCAxNTQsIDEzNywgMjUwLCAyNCwgCi0gICAgMjUwLCAyMCwgMTU0LCAxMzcsIDIxMiwgMjM2LCAyMTIsIDI0MywgMTU0LCAxMzcsIDI0NywgMTAwLCAyNTAsIDg5LCAxNTQsIAotICAgIDEzNywgMjExLCAyMTEsIDIyNiwgMTExLCAxNTQsIDEzNywgMjE3LCAxMTAsIDIxNywgMTUzLCAxNTQsIDEzNywgMjE3LCAKLSAgICAxMTAsIDIzMCwgMjEsIDE1NCwgMTM3LCAyMTcsIDExMCwgMjI1LCAyNDMsIDE1NCwgMTM3LCAyMjgsIDE4NiwgMjI5LCAxODAsIAotICAgIDE1NCwgMTM3LCAyNDcsIDEwMCwgMjQ4LCAxOSwgMTU0LCAxMzcsIDIxMSwgMjExLCAyMTgsIDYsIDE1NCwgMTM3LCAyMTcsIAotICAgIDExMCwgMjE3LCA4NSwgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDE1NywgMTU0LCAxMzcsIDIxNywgMTEwLCAyMTcsIDEwNywgCi0gICAgMTU0LCAxMzcsIDIyOCwgMTg2LCAyMjgsIDkyLCAxNTQsIDEzNywgMjUxLCAxMjksIDI1MiwgODMsIDE1NCwgMTM3LCAyMjUsIAotICAgIDE1MSwgMjI1LCAxNzQsIDE1NCwgMTM3LCAyMjUsIDI1NCwgMjI1LCAyNDUsIDE1NCwgMTM3LCAyNDQsIDEzLCAyNDQsIDE2NCwgCi0gICAgMTU0LCAxMzcsIDIyNSwgMjU0LCAyMjYsIDE3LCAxNTQsIDEzNywgMjQ0LCAxMywgMjQ0LCAxNDEsIDE1NCwgMTM3LCAyMjUsIAotICAgIDI1NCwgMjIyLCAxNjIsIDE1NCwgMTM3LCAyMzAsIDIzMiwgMTg4LCAxNTQsIDEzNywgMjEyLCAyMzYsIDIxMywgNjgsIDE1NCwgCi0gICAgMTM3LCAyMjMsIDExMywgMjIzLCA1MCwgMTU0LCAxMzcsIDIyMywgNTEsIDE1NCwgMTM3LCAyMzIsIDIwOSwgMjMyLCAyMzUsIAotICAgIDE1NCwgMTM3LCAyMzIsIDE1NiwgMTU0LCAxMzcsIDIxMywgMjE1LCAyMTQsIDQ1LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIyMiwgCi0gICAgMTc3LCAxNTQsIDEzNywgMjE5LCAyNDMsIDIyMywgMjUsIDE1NCwgMTM3LCAyMTksIDI0MywgMjE5LCAyNiwgMTU0LCAxMzcsIAotICAgIDI0MSwgNTUsIDI0MSwgMTQ1LCAxNTQsIDEzNywgMjMyLCAyMDksIDI1MCwgNSwgMTU0LCAxMzcsIDE1NywgMjU0LCAyNCwgCi0gICAgMTU0LCAxMzcsIDI0MSwgNTUsIDIyOCwgMTgxLCAxNTQsIDEzNywgMjI2LCAxOTUsIDE1NCwgMTM3LCAyMjIsIDE0NiwgNjEsIAotICAgIDE1NCwgMTM3LCAyMzIsIDksIDI0MiwgMCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDIzMiwgMTU0LCAxMzcsIDIyMiwgCi0gICAgMTQ2LCAyNTQsIDQ1LCAxNTQsIDEzNywgMjIyLCAxNDYsIDcyLCAxNTQsIDEzNywgMjIyLCAxNDYsIDIzNiwgMjgsIDE1NCwgCi0gICAgMTM3LCAyMjIsIDE0NiwgMjE1LCAxODMsIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjE1LCAxODEsIDE1NCwgMTM3LCAyMjIsIAotICAgIDE0NiwgNjksIDE1NCwgMTM3LCAyMjIsIDE0NiwgMjE1LCA5MiwgMTU0LCAxMzcsIDIyNiwgMCwgMTU0LCAyNDksIDM5LCAxNiwgCi0gICAgMjUyLCA4NCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCA3NCwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDE0OCwgMTU0LCAxMzcsIAotICAgIDIyMiwgMTQ2LCA3NSwgMTU0LCAxMzcsIDIyMiwgMTQ2LCAyNTQsIDEwOSwgMjMyLCA0LCAxNTQsIDEzNywgMjIyLCAxNDYsIAotICAgIDI1NCwgMTA5LCAyMzIsIDUsIDE1NCwgMTM3LCAyMzMsIDEzMCwgMTU0LCAxMzcsIDIzMiwgMSwgMTU0LCAxMzcsIDIzMiwgMiwgCi0gICAgMTU0LCAxMzcsIDIzMiwgOSwgMjQ1LCAxMzcsIDE1NCwgMTM3LCAyMzIsIDksIDIxNywgMTA5LCAxNTQsIDEzNywgMjMyLCA5LCAKLSAgICAyMTYsIDE4NiwgMTU0LCAxMzcsIDIzMiwgOSwgMjUwLCA3MSwgMTU0LCAxMzcsIDIxNywgMTUxLCAxNTQsIDEzNywgMjI5LCAKLSAgICAzNiwgMTU0LCAxMzcsIDIxMywgNjIsIDE1NCwgMTM3LCAyNDQsIDQsIDE1NCwgMjEsIDIxMiwgNzksIDE1NCwgMjEsIDExNiwgCi0gICAgMTU0LCAyMSwgMTA5LCAxNTQsIDIxLCAxNjYsIDE1NCwgMjEsIDE2MywgMTU0LCAyMSwgMTgwLCAxNTQsIDIxLCAxODksIAotICAgIDE1NCwgMjEsIDE5OCwgMTU0LCAyMSwgMTk1LCAxNTQsIDIxLCAyMDAsIDE1NCwgMTM3LCAyNTQsIDIwLCAxNTQsIDEzNywgCi0gICAgMjM0LCAxMTIsIDIzMywgMTEyLCAxLCAyMzQsIDM3LCAyMzMsIDExMiwgMSwgMjM0LCAxMTQsIDIxOCwgMjM1LCAyMzMsIAotICAgIDExMiwgMSwgMjM0LCAxMTQsIDIxOCwgMTMsIDIzMywgMTEyLCAxLCAyMjksIDkwLCAyMzMsIDExMiwgMSwgMjQ5LCAxNzUsIAotICAgIDIzMywgMTEyLCAxLCAyMTksIDI0MywgMjE4LCAxMywgMjMzLCAxMTIsIDEsIDIyNywgMjUzLCAyMzMsIDExMiwgMSwgMjQ3LCAKLSAgICA5OSwgMjMzLCAxMTIsIDEsIDEwOCwgMjMzLCAxMTIsIDEsIDIxNywgMTEwLCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDIxNywgCi0gICAgMTEwLCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjI4LCAxODUsIDIzMywgMTEyLCAxLCAyNTEsIDEyOCwgMjMzLCAxMTIsIDEsIAotICAgIDIyNSwgMTUwLCAyMzMsIDExMiwgMSwgMjI1LCAyNTQsIDIxOCwgMjM1LCAyMzMsIDExMiwgMSwgMjQ0LCAxMywgMjE4LCAxMywgCi0gICAgMjMzLCAxMTIsIDEsIDIyNSwgMjU0LCAyMTgsIDEzLCAyMzMsIDExMiwgMSwgMjQ0LCAxMywgMjE4LCAyMzUsIDIzMywgMTEyLCAKLSAgICAxLCAyMzAsIDIzMSwgMjMzLCAxMTIsIDEsIDIxMiwgMjM1LCAyMzMsIDExMiwgMSwgMjMyLCAyMDksIDIzMiwgMjM1LCAyMzMsIAotICAgIDExMiwgMSwgMjMyLCAyMDksIDIzMiwgMTc2LCAyMzMsIDExMiwgMSwgMjEzLCAyMTQsIDIzMywgMTEyLCAxLCAyMTksIDI0MywgCi0gICAgMjE4LCAyMzUsIDIzMywgMTEyLCAxLCAyNDEsIDU1LCAyMTgsIDIzNSwgMjMzLCAxMTIsIDEsIDc1LCAyMzMsIDExMiwgMSwgCi0gICAgMjQxLCA1NSwgMjE4LCAxMywgMjMzLCAxMTIsIDI0NSwgMTIwLCAyMzMsIDExMiwgMzAsIDUsIDYxLCAyMzMsIDExMiwgMzAsIAotICAgIDUsIDIzMiwgOSwgMjM0LCAyMzksIDIzMywgMTEyLCAzMCwgNSwgMjU0LCAyMzIsIDIzMywgMTEyLCAzMCwgNSwgMjU0LCA0NSwgCi0gICAgMjMzLCAxMTIsIDMwLCA1LCA3MiwgMjMzLCAxMTIsIDMwLCA1LCAyMzYsIDI4LCAyMzMsIDExMiwgMzAsIDUsIDIxMywgMTA1LCAKLSAgICAyMzMsIDExMiwgMzAsIDUsIDIxMiwgMTYxLCAyMzMsIDExMiwgMzAsIDUsIDY5LCAyMzMsIDExMiwgMzAsIDUsIDIxNSwgOTIsIAotICAgIDIzMywgMTEyLCAzMCwgNSwgMjMyLCA5LCAyMzQsIDIyLCAyMzMsIDExMiwgMjIxLCA2NSwgNSwgMjMyLCAyMDgsIDIzMywgCi0gICAgMTEyLCAyMjEsIDY1LCA1LCAyMjcsIDI1MywgMjMzLCAxMTIsIDMwLCA1LCA3NCwgMjMzLCAxMTIsIDMwLCA1LCAyNDUsIAotICAgIDE1MiwgMjMzLCAxMTIsIDMwLCA1LCA3NSwgMjMzLCAxMTIsIDMwLCA1LCAyNTMsIDgzLCAyMzMsIDExMiwgMzAsIDUsIDI1NCwgCi0gICAgMTA4LCAyMzMsIDExMiwgMjM0LCAzOCwgMjMzLCAxNTcsIDIzMywgMTEyLCAxNjAsIDIzMiwgOSwgMjQ1LCAxMzcsIDIzMywgCi0gICAgMTEyLCAxNjAsIDIzMiwgOSwgMjE3LCAxMDksIDIzMywgMTEyLCAxNjAsIDIzMiwgOSwgMjE3LCA3MSwgMjMzLCAxMTIsIAotICAgIDE2MCwgMjMyLCA5LCAyNTAsIDE1NSwgMjMzLCAxMTIsIDI1MCwgMTkyLCA3NywgMjMzLCAxMTIsIDIyOSwgNDUsIDIzMywgCi0gICAgMTEyLCAyMSwgMjEyLCA3OSwgMjMzLCAxMTIsIDIxLCAxMTYsIDIzMywgMTEyLCAyMSwgMTA5LCAyMzMsIDExMiwgMjEsIAotICAgIDE2NiwgMjMzLCAxMTIsIDIxLCAxNjMsIDIzMywgMTEyLCAyMSwgMTgwLCAyMzMsIDExMiwgMjEsIDE4OSwgMjMzLCAxMTIsIAotICAgIDIxLCAxOTgsIDIzMywgMTEyLCAyMSwgMTk1LCAyMzMsIDExMiwgMjEsIDIwMCwgMjMzLCAxMTIsIDI0MSwgNTUsIDIyOCwgCi0gICAgMTg1LCAyMzMsIDExMiwgMjQxLCA1NSwgMjMwLCAyMzEsIDYwLCA0LCAyMjcsIDcwLCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIAotICAgIDI0NywgMjMxLCA1OSwgMjE2LCAxNDcsIDYxLCA2MCwgMTUyLCAyNDIsIDk0LCAyMTIsIDI0NywgMjMxLCA1OSwgMjU1LCA2MiwgCi0gICAgMjIzLCAxMTcsIDI1MSwgMjUzLCAxODgsIDYwLCAxNTIsIDI0MiwgOTQsIDIxMiwgMjQ3LCAyMzEsIDU5LCAyNTUsIDYyLCAKLSAgICAyNDIsIDk0LCAyMTYsIDEzMSwgMTg4LCA2MCwgMTUyLCA3MCwgMjEyLCAyNDcsIDIzMSwgNTksIDIzMSwgMTU4LCAxODgsIAotICAgIDYwLCAxNTIsIDI0OSwgMTg5LCAyMTIsIDI0NywgMjMxLCA1OSwgMjIxLCAzMCwgMTg4LCA2MCwgMTUyLCAyNTAsIDE3MSwgCi0gICAgMjEyLCAyNDcsIDIzMSwgNTksIDIyNSwgMjQ0LCAyMjEsIDE4LCAxODgsIDYwLCAxNTIsIDIxMiwgMjQ3LCAyMzEsIDU5LCAKLSAgICAyMTYsIDEzMSwgMjIxLCAxOCwgMTg4LCA2MCwgMTUyLCAyMjIsIDEyNiwgMjIxLCAxNywgNjAsIDE1MiwgMjUxLCA1NywgCi0gICAgMjEyLCAyNDcsIDIzMSwgNTgsIDYwLCAxNTIsIDI1MSwgMTQ2LCAyMjAsIDE4MywgMjEyLCAyNDcsIDIzMSwgNTgsIDYwLCAKLSAgICAxNTIsIDIzNSwgMTk0LCAyMTYsIDEzMCwgNjAsIDE1MiwgMjQ4LCAxMiwgMjE2LCAxMzEsIDI1MSwgNTYsIDYwLCAxNTIsIAotICAgIDIyMSwgMTcsIDYwLCAxNTIsIDIyOCwgMiwgMjIxLCAxNywgNjAsIDE1MiwgMjE2LCAxMzEsIDIyMSwgMTcsIDYwLCAxNTIsIAotICAgIDIyOCwgMiwgMjE2LCAxMzEsIDIyMSwgMTcsIDYwLCAxNTIsIDIyMywgMTMzLCAyNTAsIDU5LCAyMTksIDE2OCwgMjIxLCAxNywgCi0gICAgNjAsIDE1MiwgMjIzLCAxOTUsIDI0MiwgMTIyLCAyMjEsIDE3LCA2MCwgMTUyLCAyNTAsIDE3MSwgMjU1LCA2NiwgMjIzLCAKLSAgICA1NSwgMjMxLCAxNTcsIDE4NCwgMjUwLCAxOTUsIDYwLCAxNTIsIDI0MiwgOTQsIDIxNiwgMTMwLCA2MCwgMjMyLCAxOTcsIDUsIAotICAgIDI1MCwgOTAsIDIyMywgNTQsIDYwLCAyMzIsIDE5NywgNSwgMjMzLCAyMywgMjIzLCA1NCwgNjAsIDI1MywgMTI4LCA1LCAKLSAgICAyMjEsIDI3LCAyNDMsIDQxLCAyNTUsIDY3LCAyMjMsIDU0LCA2MCwgMjUzLCAxMjgsIDUsIDI1NSwgNjQsIDE5MywgNjAsIAotICAgIDI1MywgMTI4LCA1LCAyMjIsIDEwMSwgMjE2LCAxMjYsIDYwLCA1LCAyMjQsIDIzLCAyNDcsIDExMSwgMjQzLCA0MCwgNjAsIAotICAgIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDIsIDE1MiwgNjAsIDUsIDIyNCwgMjMsIDI0NywgMTExLCAyNDIsIDk1LCA2MCwgNSwgCi0gICAgMjI0LCAyMywgMjMwLCAzNywgMjQzLCA0MCwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgMzcsIDI0MiwgMTUyLCA2MCwgNSwgMjI0LCAKLSAgICAyMywgMjQ3LCAxMTEsIDIyNCwgMjMsIDIzMCwgMzYsIDYwLCAyMSwgMjEyLCA3OSwgNjAsIDIxLCAxMTYsIDYwLCAyMSwgCi0gICAgMTA5LCA2MCwgMjEsIDE2NiwgNjAsIDIxLCAxNjMsIDYwLCAyMSwgMTgwLCA2MCwgMjEsIDE4OSwgNjAsIDIxLCAxOTgsIDYwLCAKLSAgICAyMSwgMTk1LCA2MCwgMjEsIDIwMCwgNjAsIDIxLCAxNTEsIDExNiwgNjAsIDIxLCAxNTEsIDEwOSwgNjAsIDIxLCAxNTEsIAotICAgIDE2NiwgNjAsIDIxLCAxNTEsIDE2MywgNjAsIDIxLCAxNTEsIDE4MCwgNjAsIDIxLCAxNTEsIDE4OSwgNjAsIDIxLCAxNTEsIAotICAgIDE5OCwgNjAsIDIxLCAxNTEsIDE5NSwgNjAsIDIxLCAxNTEsIDIwMCwgNjAsIDIxLCAxNTEsIDIxMiwgNzksIDYwLCAxNTIsIAotICAgIDI1MSwgNTksIDIyMywgNTQsIDYwLCAxNTIsIDIyOSwgMTUxLCAyNTAsIDI1NCwgMjI4LCAxMSwgMjEyLCAxOCwgNjAsIDE1MiwgCi0gICAgMjUwLCAxNzEsIDI1NSwgNjYsIDIyMywgNTUsIDI1MCwgMjU1LCAyMzEsIDE1LCAyNTAsIDE5NSwgNjAsIDE1MiwgMjI5LCAKLSAgICAxNTEsIDI1MCwgMjU0LCAyMjEsIDI4LCAyMjMsIDU0LCA2MCwgMTUyLCAyNTAsIDY4LCAyMzEsIDU4LCA2MCwgMTUyLCAyMTYsIAotICAgIDE0MiwgMjU1LCA2MywgNjAsIDE1MiwgMjQyLCA4MSwgMjIzLCA1NSwgMjQyLCA0NCwgNjAsIDE1MiwgMjQyLCA4MSwgMjIzLCAKLSAgICA1NSwgMjQyLCA1MCwgNjAsIDE1MiwgMjU0LCAyNSwgMjM0LCAxMjksIDI0MiwgNDQsIDYwLCAxNTIsIDI1NCwgMjUsIDIzNCwgCi0gICAgMTI5LCAyNDIsIDUwLCA2MCwgNSwgMjEzLCA1NSwgMjE2LCAxMjksIDYwLCA1LCAyMzEsIDIzMCwgMjE2LCAxMjksIDYwLCAxLCAKLSAgICAxODEsIDYwLCAxLCAyMzQsIDEzOCwgNjAsIDEsIDI0MywgMTEwLCA2MCwgMSwgMjQyLCAyMjUsIDYwLCAxLCAyMjksIDE1OSwgCi0gICAgNjAsIDEsIDI1MCwgMjE5LCA2MCwgMSwgMjUwLCA5MiwgNjAsIDEsIDIzNSwgMTM5LCA2MCwgMSwgMjI4LCAyMywgNjAsIDEsIAotICAgIDIxNiwgMTE1LCA2MCwgMSwgMjE2LCAxMDUsIDYwLCAxLCAyNDgsIDg2LCA2MCwgMSwgMjQ4LCA3MCwgNjAsIDEsIDIyOCwgCi0gICAgMTk4LCA2MCwgMSwgMjE4LCA1MiwgNjAsIDEsIDIxNywgMTYxLCA2MCwgMSwgMjQ4LCAxNjQsIDYwLCAxLCAyNDcsIDIzMiwgCi0gICAgNjAsIDEsIDIwNSwgNjAsIDEsIDE5MywgNjAsIDEsIDIyNiwgMjMsIDYwLCAxLCAyNTIsIDEwNywgNjAsIDEsIDI1MSwgMTk1LCAKLSAgICA2MCwgMSwgMTg4LCA2MCwgMSwgMjE2LCAxNDEsIDYwLCAxLCAyMTYsIDEzMywgNjAsIDEsIDI0NSwgMjQ5LCA2MCwgMSwgCi0gICAgMjQ1LCAyNDQsIDYwLCAxLCAyMTQsIDQ5LCA2MCwgMSwgMjEyLCA3NSwgNjAsIDEsIDIxMiwgMTA5LCA2MCwgMSwgMjU1LCAKLSAgICA2OSwgNjAsIDEsIDE4NiwgNjAsIDEsIDIwMywgNjAsIDEsIDIzMywgMTU3LCA2MCwgMSwgMjIxLCAyNCwgNjAsIDEsIDIxOSwgCi0gICAgMTU3LCA2MCwgMSwgMjIyLCAyMDIsIDYwLCAxLCAxNTksIDYwLCAxLCA2MSwgNjAsIDEsIDIzMywgMjQxLCA2MCwgMSwgMjQ0LCAKLSAgICA0NiwgMjAzLCA2MCwgMSwgMjM0LCA1NSwgNjAsIDEsIDIyMywgODEsIDYwLCAzMCwgNSwgMjU0LCAyMzIsIDYwLCAzMCwgNSwgCi0gICAgNzIsIDYwLCAzMCwgNSwgMjM2LCAyOCwgNjAsIDMwLCA1LCA2OSwgNjAsIDMwLCA1LCAyMTUsIDkyLCA2MCwgMzAsIDUsIAotICAgIDE2MSwgMTQ5LCA2MCwgMzAsIDUsIDE2MSwgMjIzLCA4MiwgNjAsIDMwLCA1LCAxNjEsIDE1MCwgNjAsIDMwLCA1LCAxNjEsIAotICAgIDIzMiwgMjE0LCA2MCwgMzAsIDUsIDc0LCA2MCwgMzAsIDUsIDI0NSwgMTY1LCA2MCwgMzAsIDUsIDc1LCA2MCwgMzAsIDUsIAotICAgIDIyNywgNDksIDYwLCA1LCAyMjMsIDExOCwgMjE5LCAyOCwgMjI5LCAxNjAsIDIyMywgMTEyLCA2MCwgNSwgMjIzLCAxMTcsIAotICAgIDI1MSwgMjUyLCA2MCwgMzAsIDUsIDIyMywgMjAyLCA3MiwgNjAsIDMwLCA1LCAyMjMsIDIwMiwgMjM2LCAyOCwgNjAsIDUsIAotICAgIDIyOCwgMTEsIDIxMiwgMTksIDIzMCwgNDQsIDI0OCwgMTY0LCA2MCwgNSwgMjE5LCAyNTUsIDIzMywgODQsIDYwLCAxNTIsIAotICAgIDI0MiwgMTEsIDYwLCAxNTIsIDIyNiwgMTg0LCA2MCwgNSwgMjMzLCA4NywgMjIzLCA1NCwgNjAsIDUsIDIxMywgNTksIDIyMywgCi0gICAgNTQsIDYwLCA1LCAyMzMsIDg4LCAyMTYsIDE0MiwgMjUwLCAxOTUsIDYwLCA1LCAyMzEsIDE1OSwgMjUwLCAxOTUsIDYwLCA1LCAKLSAgICAyNDIsIDk3LCAyNTAsIDE5NiwgMjIzLCAxOTMsIDYwLCA1LCAyNDIsIDk3LCAyMzEsIDE1MCwgMjIzLCAxOTMsIDYwLCA1LCAKLSAgICAyMzUsIDE5MSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjMzLCA4OCwgMjE2LCAxNDIsIDI1MCwgCi0gICAgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjMxLCAxNTksIDI1MCwgMTk1LCA2MCwgMjE5LCAxOCwgNSwgMjM1LCAxOTEsIDIzMSwgCi0gICAgMTU5LCAyNTAsIDE5NSwgNjAsIDIxOSwgMTgsIDEsIDE4MSwgNjAsIDIxOSwgMTgsIDEsIDIzNCwgMTM4LCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjQzLCAxMTAsIDYwLCAyMTksIDE4LCAxLCAyNDIsIDIyNSwgNjAsIDIxOSwgMTgsIDEsIDIyOSwgMTU5LCA2MCwgCi0gICAgMjE5LCAxOCwgMSwgMjUwLCAyMTksIDYwLCAyMTksIDE4LCAxLCAyNTAsIDkyLCA2MCwgMjE5LCAxOCwgMSwgMjM1LCAxMzksIAotICAgIDYwLCAyMTksIDE4LCAxLCAyMjgsIDIzLCA2MCwgMjE5LCAxOCwgMSwgMjE2LCAxMTUsIDYwLCAyMTksIDE4LCAxLCAyMTYsIAotICAgIDEwNSwgNjAsIDIxOSwgMTgsIDEsIDI0OCwgODYsIDYwLCAyMTksIDE4LCAxLCAyNDgsIDcwLCA2MCwgMjE5LCAxOCwgMSwgCi0gICAgMjI4LCAxOTgsIDYwLCAyMTksIDE4LCAxLCAyMTgsIDUyLCA2MCwgMjE5LCAxOCwgMSwgMjE3LCAxNjEsIDYwLCAyMTksIDE4LCAKLSAgICAxLCAyNDgsIDE2NCwgNjAsIDIxOSwgMTgsIDEsIDI0NywgMjMyLCA2MCwgMjE5LCAxOCwgMSwgMjA1LCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMTkzLCA2MCwgMjE5LCAxOCwgMSwgMjI2LCAyMywgNjAsIDIxOSwgMTgsIDEsIDI1MiwgMTA3LCA2MCwgMjE5LCAxOCwgCi0gICAgMSwgMjUxLCAxOTUsIDYwLCAyMTksIDE4LCAxLCAxODgsIDYwLCAyMTksIDE4LCAxLCAyMTYsIDE0MSwgNjAsIDIxOSwgMTgsIAotICAgIDEsIDIxNiwgMTMzLCA2MCwgMjE5LCAxOCwgMSwgMjQ1LCAyNDksIDYwLCAyMTksIDE4LCAxLCAyNDUsIDI0NCwgNjAsIDIxOSwgCi0gICAgMTgsIDEsIDIxNCwgNDksIDYwLCAyMTksIDE4LCAxLCAyMTIsIDc1LCA2MCwgMjE5LCAxOCwgMSwgMjEyLCAxMDksIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyNTUsIDY5LCA2MCwgMjE5LCAxOCwgMSwgMTg2LCA2MCwgMjE5LCAxOCwgMSwgMjAzLCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjMzLCAxNTcsIDYwLCAyMTksIDE4LCAxLCAyMjEsIDI0LCA2MCwgMjE5LCAxOCwgMSwgMjE5LCAxNTcsIDYwLCAKLSAgICAyMTksIDE4LCAxLCAyMjIsIDIwMiwgNjAsIDIxOSwgMTgsIDEsIDE1OSwgNjAsIDIxOSwgMTgsIDEsIDYxLCA2MCwgMjE5LCAKLSAgICAxOCwgMSwgMjMzLCAyNDEsIDYwLCAyMTksIDE4LCAxLCAyNDQsIDQ2LCAyMTQsIDQ5LCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCAKLSAgICA0NiwgMTg2LCA2MCwgMjE5LCAxOCwgMSwgMjQ0LCA0NiwgMjAzLCA2MCwgMjMzLCAyMzksIDIyMywgNTIsIDIzNCwgMTM4LCAKLSAgICA2MCwgMjMzLCAyMzksIDIyMywgNTIsIDIzNCwgMTM5LCAyNTAsIDI1NSwgMjMxLCAxNSwgMjUwLCAxOTUsIDYwLCAyNTAsIAotICAgIDE4NCwgNSwgMTA3LCAyNTEsIDI0NiwgNjAsIDI1MCwgMTg0LCA1LCAxNzcsIDI1MSwgMjQ2LCA2MCwgMjUwLCAxODQsIDUsIAotICAgIDI1MCwgMTg1LCAyMTcsIDIyOCwgNjAsIDI1MCwgMTg0LCA1LCAyMjIsIDEyNSwgMjU1LCA2OCwgNjAsIDE2LCAyNDYsIDQ2LCAKLSAgICAyNTEsIDU0LCA2MCwgMTYsIDIyNCwgMjIsIDIyMywgMTE5LCA2MCwgMTYsIDIyNiwgMjAyLCAyNDMsIDM5LCA2MCwgMTYsIAotICAgIDIyNCwgMjIsIDIyMywgMTIwLCAyMjMsIDE5NSwgMjQyLCAxMjEsIDYwLCAxNiwgMjI1LCAyNDQsIDE5MywgNjAsIDE2LCAKLSAgICAyMjgsIDE3MCwgMjUxLCA1NCwgNjAsIDE2LCAyMjgsIDE3MCwgMjUxLCA1NSwgMjI4LCAyLCAyNTUsIDY1LCA2MCwgMTYsIAotICAgIDIyOCwgMTcwLCAyNTEsIDU1LCAyNDIsIDk2LCAyNTUsIDY1LCA2MCwgMTYsIDIyOCwgMTcwLCAyNTEsIDU1LCAyNTAsIDI1NSwgCi0gICAgMjU1LCA2NSwgNjAsIDUsIDIyNCwgMjMsIDIzMCwgMzcsIDIyNCwgMjMsIDI0NywgMTEwLCA2MCwgNSwgMjI0LCAyMywgMjMwLCAKLSAgICAzNywgMjQyLCA5NSwgNjAsIDE1MiwgMjUxLCA1OCwgMjIwLCAxODMsIDI0MiwgMTkxLCAyMzEsIDU5LCAyMjMsIDE5NCwgNjAsIAotICAgIDE1MiwgMjMwLCAyMzMsIDIxMiwgMjQ3LCAyNDIsIDE5MSwgMjMxLCA1OSwgMjIzLCAxOTQsIDYwLCAxNTIsIDIyOCwgMiwgCi0gICAgMjE2LCAxMzAsIDYwLCAxNTIsIDcwLCAyNTEsIDc5LCAyMjMsIDExNCwgMjEyLCAyNDcsIDIzMSwgNTksIDIzMSwgMTU4LCAKLSAgICAxODgsIDYwLCAxNTIsIDI0OSwgMTg5LCAyNTEsIDc5LCAyMjMsIDExNCwgMjEyLCAyNDcsIDIzMSwgNTksIDIyMSwgMzAsIAotICAgIDE4OCwgMjIzLCAxNDcsIDIxOCwgMjAwLCA1MiwgMjMzLCA2OSwgMjE4LCAyMDAsIDUyLCAyMjMsIDE0NywgMjE4LCAyMDAsIAotICAgIDUsIDIsIDI0NywgNzIsIDIzMywgNjksIDIxOCwgMjAwLCA1LCAyLCAyNDcsIDcyLCA2MCwgMTUyLCAyMzMsIDc5LCAyMzEsIAotICAgIDE2MCwgMjIzLCA1NCwgNjAsIDE1MiwgMjE2LCAyMDcsIDIzMSwgMTYwLCAyMjMsIDU0LCA2NCwgMSwgMTgxLCA2NCwgMSwgCi0gICAgMjM0LCAxMzgsIDY0LCAxLCAyNDMsIDExMCwgNjQsIDEsIDI0MiwgMjI1LCA2NCwgMSwgMjI5LCAxNTksIDY0LCAxLCAyNTAsIAotICAgIDIxOSwgNjQsIDEsIDI1MCwgOTIsIDY0LCAxLCAyMzUsIDEzOSwgNjQsIDEsIDIzNSwgMTE1LCA2NCwgMSwgMjI4LCAyMywgCi0gICAgNjQsIDEsIDIyOCwgMTg3LCA2NCwgMSwgMjE2LCAxMTUsIDY0LCAxLCAyMTYsIDEwNSwgNjQsIDEsIDI0OCwgODYsIDY0LCAxLCAKLSAgICAyNDgsIDcwLCA2NCwgMSwgMjI4LCAxOTgsIDY0LCAxLCAyMTgsIDUyLCA2NCwgMSwgMjE3LCAxNjEsIDY0LCAxLCAyNDgsIAotICAgIDE2NCwgNjQsIDEsIDI0NywgMjMyLCA2NCwgMSwgMjA1LCA2NCwgMSwgMTkzLCA2NCwgMSwgMjI2LCAyMywgNjQsIDEsIDI1MiwgCi0gICAgMTA3LCA2NCwgMSwgMjUxLCAxOTUsIDY0LCAxLCAxODgsIDY0LCAxLCAxODYsIDY0LCAxLCAyMDMsIDY0LCAxLCAyMzMsIAotICAgIDE1NywgNjQsIDEsIDIxNCwgNDksIDY0LCAxLCAyMjIsIDIwMiwgNjQsIDEsIDE1OSwgNjQsIDEsIDIzMiwgMjEzLCA2NCwgMSwgCi0gICAgNjEsIDY0LCAxLCAyMjEsIDksIDYxLCA2NCwgMSwgNzIsIDY0LCAxLCAyMzYsIDI4LCA2NCwgMSwgNjksIDY0LCAxLCAyMTUsIAotICAgIDkyLCA2NCwgMSwgNzQsIDY0LCAxLCAyMzAsIDIyMSwgNzQsIDY0LCAxLCA3NSwgNjQsIDEsIDI1MywgMTA4LCA2NCwgMzAsIAotICAgIDUsIDIxOCwgMTUsIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDcyLCA2NCwgMzAsIDUsIDIzNiwgCi0gICAgMjgsIDY0LCAzMCwgNSwgNjksIDY0LCAzMCwgNSwgMjE1LCA5MiwgNjQsIDMwLCA1LCA3NCwgNjQsIDMwLCA1LCAyNTQsIAotICAgIDEwOCwgNjQsIDMwLCA1LCAyMzAsIDIyMSwgMjM2LCAyOCwgNjQsIDMwLCA1LCAyMzAsIDIyMSwgNzUsIDY0LCAzMCwgNSwgCi0gICAgMTkxLCA0OSwgNjQsIDUsIDI1MywgMjQyLCA2NCwgNSwgNjIsIDU1LCA2NCwgNSwgMjE0LCAxMjgsIDY0LCA1LCAyMTQsIAotICAgIDEzMywgNjQsIDUsIDI1MywgMTUwLCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMTg2LCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgCi0gICAgMjAzLCA2NCwgMjQ5LCAxMzMsIDUsIDEzOCwgMjE0LCA0OSwgNjQsIDI0OSwgMTMzLCA1LCAxMzgsIDE1OSwgNjQsIDEsIAotICAgIDI0MiwgMTA5LCAyMjIsIDIwMiwgNjQsIDIxLCAyMTIsIDc5LCA2NCwgMjEsIDExNiwgNjQsIDIxLCAxMDksIDY0LCAyMSwgCi0gICAgMTY2LCA2NCwgMjEsIDE2MywgNjQsIDIxLCAxODAsIDY0LCAyMSwgMTg5LCA2NCwgMjEsIDE5OCwgNjQsIDIxLCAxOTUsIDY0LCAKLSAgICAyMSwgMjAwLCA2NCwgNSwgMjMyLCAyMjEsIDIyMiwgOTEsIDY0LCA1LCAyMjIsIDkxLCA2NCwgMTYsIDIzMiwgMjA1LCA2NCwgCi0gICAgMTYsIDI0OSwgMTUyLCA2NCwgMTYsIDI1NCwgMTI1LCA2NCwgMTYsIDI0MywgMjQsIDY0LCAxLCAyMjEsIDI0LCA2NCwgMSwgCi0gICAgMjE5LCAxNTcsIDY0LCAxLCAxNjEsIDE0OSwgNjQsIDEsIDE2MSwgMjIzLCA4MiwgNjQsIDEsIDE2MSwgMTUwLCA2NCwgMSwgCi0gICAgMTYxLCAyMzIsIDIxNCwgNjQsIDMwLCA1LCAxNjEsIDE0OSwgNjQsIDMwLCA1LCAxNjEsIDIyMywgODIsIDY0LCAzMCwgNSwgCi0gICAgMTYxLCAxNTAsIDY0LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgNjQsIDEsIDIzMCwgMjIxLCAyMjksIDE1OSwgNjQsIDEsIAotICAgIDIzMCwgMjIxLCAyMzUsIDExNSwgNjQsIDEsIDIzMCwgMjIxLCAyNTIsIDMxLCA2NCwgMSwgMjMwLCAyMjEsIDI1MiwgMjYsIAotICAgIDY0LCAyNDksIDEzMywgNSwgMjMwLCAyMjEsIDEzOCwgMjA1LCA2NCwgMjQ5LCAxMzMsIDUsIDIzMCwgMjIxLCAxMzgsIDE4OCwgCi0gICAgNjQsIDI0OSwgMTMzLCA1LCAyMzAsIDIyMSwgMTM4LCAyMzMsIDE1NywgNjQsIDEsIDIyMSwgMjksIDIzNCwgMjE4LCAyMjEsIAotICAgIDI0LCA2NCwgMzAsIDUsIDIyMSwgMjksIDIzNCwgMjE4LCAyNDUsIDIyLCA2NCwgMTYwLCAxNTIsIDIyMSwgMjksIDIzNCwgCi0gICAgMjE4LCAyNDEsIDIzMCwgNjQsIDE2MCwgMTUyLCAyMjEsIDI5LCAyMzQsIDIxOCwgMjM0LCAxODksIDIyNSwgMjUzLCA2NCwgCi0gICAgMSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE3LCAxNjEsIDY0LCAxLCAyMTMsIDI0OCwgMjI0LCAyNTIsIAotICAgIDIzNCwgMjE4LCAyMjUsIDIsIDY0LCAzMCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjQ1LCAyMiwgNjQsIAotICAgIDMwLCA1LCAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTUsIDE4MywgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgCi0gICAgMjM0LCAyMTgsIDIxNiwgMjQwLCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzksIDY0LCA1LCAKLSAgICAyMTMsIDI0OCwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMTYsIDIzOCwgNjQsIDUsIDIxMywgMjQ4LCAyMjQsIDI1MiwgMjM0LCAKLSAgICAyMTgsIDIxNiwgMjM3LCA2NCwgNSwgMjEzLCAyNDgsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjE2LCAyMzYsIDY0LCAxLCAyNDUsIAotICAgIDE3NSwgMjI0LCAyNTIsIDIzNCwgMjE4LCAyMjgsIDE5OCwgNjQsIDEsIDI0NSwgMTc1LCAyMjQsIDI1MiwgMjM0LCAyMTgsIAotICAgIDIxMiwgMTY4LCA2NCwgMSwgMjQ1LCAxNzUsIDIyNCwgMjUyLCAyMzQsIDIxOCwgMjQyLCAxOTMsIDY0LCAzMCwgNSwgMjQzLCAKLSAgICAzNSwgMjM0LCAyMTgsIDcyLCA2NCwgMzAsIDUsIDIzNCwgMTk0LCAyMjcsIDk5LCA2NCwgMzAsIDUsIDIzNCwgMTk0LCA2OSwgCi0gICAgNjQsIDMwLCA1LCAyMzQsIDE5NCwgMjQ1LCAxNjUsIDY0LCAxLCAyMjEsIDksIDE4MSwgNjQsIDEsIDIyMSwgOSwgMjM0LCAKLSAgICAxMzgsIDY0LCAxLCAyMjEsIDksIDI0MywgMTEwLCA2NCwgMSwgMjIxLCA5LCAyNTAsIDIxOSwgNjQsIDEsIDIyMSwgOSwgCi0gICAgMjEyLCAxMDksIDY0LCAxLCAyMjEsIDksIDIyOCwgMjMsIDY0LCAxLCAyMjEsIDksIDI0OCwgMTY0LCA2NCwgMSwgMjIxLCA5LCAKLSAgICAyMDUsIDY0LCAxLCAyMjEsIDksIDIyNiwgMjMsIDY0LCAxLCAyMjEsIDksIDI0NCwgMTY0LCA2NCwgMSwgMjIxLCA5LCAyNTIsIAotICAgIDEwNywgNjQsIDEsIDIyMSwgOSwgMjE3LCAxNjEsIDY0LCAxLCAyMjEsIDksIDE1OSwgNjQsIDI0OSwgMTMzLCA1LCAyMjEsIAotICAgIDksIDEzOCwgMjE0LCA0OSwgNjQsIDMwLCA1LCAyMjEsIDksIDI1NCwgMjMyLCA2NCwgMzAsIDUsIDIyMSwgOSwgNzQsIDY0LCAKLSAgICAzMCwgNSwgMjIxLCA5LCAxOTEsIDQ5LCA2NCwgMzAsIDUsIDIyMSwgOSwgNDAsIDIxMywgMTA1LCA2NCwgNSwgMjIxLCA5LCAKLSAgICAyMTYsIDIzOSwgNjQsIDUsIDIyMSwgOSwgMjE2LCAyMzgsIDY0LCA1LCAyMjEsIDksIDIxNiwgMjM2LCA2NCwgNSwgMjIxLCAKLSAgICA5LCAyMTYsIDIzNSwgNjQsIDUsIDIyMSwgOSwgMjQ5LCA5MSwgMjE2LCAyMzksIDY0LCA1LCAyMjEsIDksIDI0OSwgOTEsIAotICAgIDIxNiwgMjM4LCA2NCwgNSwgMjIxLCA5LCAyNDksIDkxLCAyNDUsIDExMSwgMjE2LCAyNDEsIDY0LCAxLCAyMjMsIDM5LCAKLSAgICAyMjYsIDE5MCwgMjQ0LCAxNjQsIDY0LCA1LCAyMjMsIDM5LCAyMjYsIDE5MCwgMjE2LCAyMzYsIDY0LCAyMjEsIDksIDIxLCAKLSAgICAyMTIsIDc5LCA2NCwgMjIxLCA5LCAyMSwgMTE2LCA2NCwgMjIxLCA5LCAyMSwgMTA5LCA2NCwgMjIxLCA5LCAyMSwgMTY2LCAKLSAgICA2NCwgMjIxLCA5LCAyMSwgMTYzLCA2NCwgMjIxLCA5LCAyMSwgMTgwLCA2NCwgMjIxLCA5LCAyMSwgMTg5LCA2NCwgMjIxLCAKLSAgICA5LCAyMSwgMTk4LCA2NCwgMjIxLCA5LCAyMSwgMTk1LCA2NCwgMjIxLCA5LCAyMSwgMjAwLCA2NCwgNSwgMjM0LCAxMzIsIAotICAgIDIxNiwgMjQwLCA2NCwgNSwgMjM0LCAxMzIsIDIxNiwgMjM4LCA2NCwgMzAsIDUsIDI1NCwgOTgsIDYxLCA2NCwgMzAsIDUsIAotICAgIDI1NCwgOTgsIDI1NCwgMTA4LCA2NCwgMTYsIDIyMSwgOSwgMTE2LCA2NCwgMTYsIDIyMSwgOSwgMjQ0LCAyNTMsIDEwMCwgNiwgCi0gICAgMSwgMjU0LCAzMiwgMTAwLCA2LCAxLCAyNTIsIDcxLCAxMDAsIDYsIDEsIDI0MywgODIsIDEwMCwgNiwgMSwgMjQ3LCA4MiwgCi0gICAgMTAwLCA2LCAxLCAyNDUsIDEwOCwgMTAwLCA2LCAxLCAyMTQsIDE0MSwgMTAwLCA2LCAxLCAyMTIsIDgyLCAxMDAsIDYsIDEsIAotICAgIDIxOCwgMTEsIDEwMCwgNiwgMSwgMjM1LCAyNTEsIDEwMCwgNiwgMSwgMjM0LCAyMzksIDEwMCwgNiwgMSwgMjMzLCAxMDQsIAotICAgIDEwMCwgNiwgMSwgMjMxLCAyNDgsIDEwMCwgNiwgMSwgMjMwLCAxNSwgMTAwLCA2LCAxLCAyMjcsIDYyLCAxMDAsIDYsIDEsIAotICAgIDIyNiwgMTQ1LCAxMDAsIDYsIDEsIDIxMiwgNzEsIDEwMCwgNiwgMSwgMjI0LCA2MSwgMTAwLCA2LCAxLCAyMjIsIDE1OSwgCi0gICAgMTAwLCA2LCAxLCAyMTgsIDEsIDEwMCwgNiwgMSwgMjE1LCAxNjAsIDEwMCwgNiwgMSwgMjI2LCAxNiwgMTAwLCA2LCAxLCAKLSAgICAyMzQsIDEyNywgMTAwLCA2LCAxLCAyNDIsIDIxNywgMTAwLCA2LCAxLCAyMjQsIDIxNywgMTAwLCA2LCAxLCAyMjAsIDIwMCwgCi0gICAgMTAwLCA2LCAxLCAyNTAsIDM0LCAxMDAsIDYsIDEsIDI1MCwgMTk1LCAxMDAsIDYsIDEsIDIzNSwgMTAzLCAxMDAsIDYsIDEsIAotICAgIDI0OSwgMjMzLCAxMDAsIDYsIDEsIDI1MCwgNzksIDEwMCwgNiwgMSwgMjEzLCAxNTEsIDEwMCwgNiwgMSwgMjM1LCAxMTMsIAotICAgIDEwMCwgNiwgMSwgMjQyLCAyNCwgMTAwLCA2LCAxLCAyNDEsIDIyMiwgMTAwLCA2LCAxLCAyNDEsIDE2MCwgMTAwLCA2LCAxLCAKLSAgICAyMTQsIDYsIDEwMCwgNiwgMSwgMjQxLCAyNDMsIDEwMCwgNiwgMSwgMjQxLCA1MSwgMTAwLCAxLCAyNTQsIDMyLCAxMDAsIDEsIAotICAgIDI1MiwgNzEsIDEwMCwgMSwgMjQzLCA4MiwgMTAwLCAxLCAyNDcsIDgyLCAxMDAsIDEsIDI0NSwgMTA4LCAxMDAsIDEsIDIxNCwgCi0gICAgMTQxLCAxMDAsIDEsIDIxMiwgODIsIDEwMCwgMSwgMjE4LCAxMSwgMTAwLCAxLCAyMzUsIDI1MSwgMTAwLCAxLCAyMzQsIAotICAgIDIzOSwgMTAwLCAxLCAyMzMsIDEwNCwgMTAwLCAxLCAyMzEsIDI0OCwgMTAwLCAxLCAyMzAsIDE1LCAxMDAsIDEsIDIyNywgCi0gICAgNjIsIDEwMCwgMSwgMjI2LCAxNDUsIDEwMCwgMSwgMjEyLCA3MSwgMTAwLCAxLCAyMjQsIDYxLCAxMDAsIDEsIDIyMiwgMTU5LCAKLSAgICAxMDAsIDEsIDIxOCwgMSwgMTAwLCAxLCAyMTUsIDE2MCwgMTAwLCAxLCAyMjYsIDE2LCAxMDAsIDEsIDIzNCwgMTI3LCAxMDAsIAotICAgIDEsIDI0MiwgMjE3LCAxMDAsIDEsIDIyNCwgMjE3LCAxMDAsIDEsIDIyMCwgMjAwLCAxMDAsIDEsIDI1MCwgMzQsIDEwMCwgMSwgCi0gICAgMjUwLCAxOTUsIDEwMCwgMSwgMjM1LCAxMDMsIDEwMCwgMSwgMjQ5LCAyMzMsIDEwMCwgMSwgMjUwLCA3OSwgMTAwLCAxLCAKLSAgICAyMTMsIDE1MSwgMTAwLCAxLCAyMzUsIDExMywgMTAwLCAxLCAyNDIsIDI0LCAxMDAsIDEsIDI0MSwgMjIyLCAxMDAsIDEsIAotICAgIDI0MSwgMTYwLCAxMDAsIDEsIDIxNCwgNiwgMTAwLCAxLCAyNDEsIDI0MywgMTAwLCAxLCAyNDEsIDUxLCAxMDAsIDEsIDI0NCwgCi0gICAgOTAsIDEwMCwgMSwgMjEyLCAyMzcsIDEwMCwgMSwgMjQ1LCAxMjIsIDEwMCwgMSwgMjE2LCA1OCwgMjQzLCA4MiwgMTAwLCAxLCAKLSAgICAyNTQsIDEwMywgMTAwLCAyMjYsIDE0MywgMjIxLCA1NywgNTksIDEsIDEwMCwgMjMwLCAxNSwgMjMsIDk3LCAyMzQsIDY3LCAKLSAgICAyMywgOTcsIDIxOSwgMTUwLCAyMywgOTcsIDIyOSwgNTcsIDIzLCA5NywgMjE3LCA1NSwgMjMsIDk3LCAyMTksIDEzOSwgMjMsIAotICAgIDk3LCAyMjMsIDE3OSwgMjMsIDk3LCAyMzEsIDMwLCAyMywgOTcsIDIyNSwgMjI3LCAyMywgOTcsIDIxOSwgMTQ3LCAyMywgCi0gICAgOTcsIDIyMCwgNzYsIDIzLCA5NywgMjE5LCAxNDQsIDIzLCA5NywgMjM2LCA1MSwgMjMsIDk3LCAyNDksIDIzOSwgMjMsIDk3LCAKLSAgICAyMTksIDE1NCwgMjMsIDk3LCAyNTAsIDQzLCAyMywgOTcsIDIzNCwgMTE2LCAyMywgOTcsIDIxNywgMTI2LCAyMywgOTcsIAotICAgIDIyNiwgNywgMjMsIDk3LCAyNDEsIDE1OCwgMjMsIDk3LCAyMjksIDUzLCAyMywgOTcsIDIxOSwgMTQ4LCAyMywgOTcsIDIyOSwgCi0gICAgNDcsIDIzLCA5NywgMjI5LCA1MSwgMjMsIDk3LCAyMTcsIDUyLCAyMywgOTcsIDIyMywgMTY3LCAyMywgOTcsIDIxOSwgMTQ2LCAKLSAgICAyMywgOTcsIDIyMywgMTc3LCAyMywgOTcsIDIzNCwgMjIzLCAyMywgOTcsIDIzMSwgMjMsIDIzLCA5NywgMjM0LCAyMjYsIAotICAgIDIzLCA5NywgMjI1LCAyMjIsIDIzLCA5NywgMjI1LCAyMjAsIDIzLCA5NywgMjI1LCAyMDgsIDIzLCA5NywgMjI1LCAyMTYsIAotICAgIDIzLCA5NywgMjI1LCAyMTQsIDIzLCA5NywgMjI1LCAyMTEsIDIzLCA5NywgMjI1LCAyMTMsIDIzLCA5NywgMjI1LCAyMTAsIAotICAgIDIzLCA5NywgMjI1LCAyMTUsIDIzLCA5NywgMjI1LCAyMjUsIDIzLCA5NywgMjI1LCAyMjYsIDIzLCA5NywgMjI1LCAyMDksIAotICAgIDIzLCA5NywgMjI1LCAyMTksIDIzLCA5NywgMjM0LCAyMjQsIDIzLCA5NywgMjM0LCAyMjIsIDIzLCA5NywgMjIwLCA2OSwgCi0gICAgMjMsIDk3LCAyMjAsIDY3LCAyMywgOTcsIDIyMCwgNTksIDIzLCA5NywgMjIwLCA2MiwgMjMsIDk3LCAyMjAsIDY4LCAyMywgCi0gICAgOTcsIDIyMCwgNjQsIDIzLCA5NywgMjIwLCA2MywgMjMsIDk3LCAyMjAsIDYxLCAyMywgOTcsIDIyMCwgNzIsIDIzLCA5NywgCi0gICAgMjIwLCA3NCwgMjMsIDk3LCAyMjAsIDc1LCAyMywgOTcsIDIyMCwgNzAsIDIzLCA5NywgMjIwLCA2MCwgMjMsIDk3LCAyMjAsIAotICAgIDY1LCAyMywgOTcsIDIyMCwgNzMsIDIzLCA5NywgMjUwLCAyNywgMjMsIDk3LCAyNTAsIDI1LCAyMywgOTcsIDI1MCwgMTAyLCAKLSAgICAyMywgOTcsIDI1MCwgMTAwLCAyMywgOTcsIDIyNiwgMTYwLCAyMywgOTcsIDIzNiwgNDYsIDIzLCA5NywgMjM2LCAzNywgMjMsIAotICAgIDk3LCAyMzYsIDQ1LCAyMywgOTcsIDIzNiwgNDIsIDIzLCA5NywgMjM2LCA0MCwgMjMsIDk3LCAyMzYsIDQ0LCAyMywgOTcsIAotICAgIDIxOSwgMTUxLCAyMywgOTcsIDIzNiwgNDksIDIzLCA5NywgMjM2LCA1MCwgMjMsIDk3LCAyMzYsIDM4LCAyMywgOTcsIDIzNiwgCi0gICAgNDMsIDIzLCA5NywgMjEzLCAxNywgMjMsIDk3LCAyNDksIDIzOCwgMjMsIDk3LCAyNTAsIDI4LCAyMywgOTcsIDI1MCwgMjYsIAotICAgIDIzLCA5NywgMjUwLCAxMDMsIDIzLCA5NywgMjUwLCAxMDEsIDIzLCA5NywgMjUwLCA0MSwgMjMsIDk3LCAyNTAsIDQyLCAyMywgCi0gICAgOTcsIDI1MCwgMjksIDIzLCA5NywgMjUwLCAxMDQsIDIzLCA5NywgMjI2LCA1LCAyMywgOTcsIDIzNCwgMjI1LCAyMywgOTcsIAotICAgIDIxOSwgMTUyLCAyMywgOTcsIDIxMywgMjMsIDIzLCA5NywgMjM0LCA1OCwgMjMsIDk3LCAyMjksIDQ5LCAyMywgOTcsIDIyOSwgCi0gICAgNTUsIDIzLCA5NywgMjI5LCA1NCwgMjMsIDk3LCAyMTcsIDQ5LCAyMywgOTcsIDI0NCwgNzIsIDIzLCAxMzUsIDI0NCwgNzIsIAotICAgIDIzLCAxMzUsIDYxLCAyMywgMTM1LCAyNTQsIDE0OCwgMjMsIDEzNSwgMTg2LCAyMywgMTM1LCAyMTMsIDgwLCAyMywgMTM1LCAKLSAgICAyNDUsIDc2LCAyMywgMTM1LCA3NCwgMjMsIDEzNSwgMjEzLCAyNywgMjMsIDEzNSwgMjEzLCAzOCwgMjMsIDEzNSwgNzUsIAotICAgIDIzLCAxMzUsIDIxNCwgNDksIDIzLCAxMzUsIDIxNCwgNDYsIDIzLCAxMzUsIDIyNywgOTksIDIzLCAxMzUsIDIxMiwgMjM1LCAKLSAgICAyMywgMTM1LCA2OSwgMjMsIDEzNSwgMjEzLCAyNTIsIDIzLCAxMzUsIDIxNCwgNiwgMjMsIDEzNSwgMjEzLCAyMzUsIDIzLCAKLSAgICAxMzUsIDIxMiwgMjAzLCAyMywgMTM1LCAyNDUsIDIyLCAyMywgMTM1LCAyMTIsIDI1NSwgMjMsIDEzNSwgNzIsIDIzLCAxMzUsIAotICAgIDI1NSwgNjAsIDIzLCAxMzUsIDI1NSwgNTksIDIzLCAxMzUsIDIxMywgOTQsIDIzLCAxMzUsIDIxMywgOTIsIDIzLCAxMzUsIAotICAgIDI0NSwgNzQsIDIzLCAxMzUsIDI0NSwgNzMsIDIzLCAxMzUsIDI0NSwgNzUsIDIzLCAxMzUsIDIxMywgMjYsIDIzLCAxMzUsIAotICAgIDIxMywgMjUsIDIzLCAxMzUsIDIyNywgMjA0LCAyMywgMTM1LCAyMjcsIDIwNSwgMjMsIDEzNSwgMjI3LCAxOTgsIDIzLCAKLSAgICAxMzUsIDIyNywgMjAzLCAyMywgMTM1LCAyMjcsIDIwMSwgMjMsIDEzNSwgMjEyLCAyMjksIDIzLCAxMzUsIDIxMiwgMjI4LCAKLSAgICAyMywgMTM1LCAyMTIsIDIyNywgMjMsIDEzNSwgMjEyLCAyMzAsIDIzLCAxMzUsIDIxMiwgMjMxLCAyMywgMTM1LCAyMTUsIAotICAgIDI1MiwgMjMsIDEzNSwgMjE1LCAyNTEsIDIzLCAxMzUsIDIxNSwgMjUwLCAyMywgMTM1LCAyMTUsIDI0NywgMjMsIDEzNSwgCi0gICAgMjE1LCAyNDgsIDIzLCAxMzUsIDIxMiwgMjAyLCAyMywgMTM1LCAyMTIsIDE5OSwgMjMsIDEzNSwgMjEyLCAyMDAsIDIzLCAKLSAgICAxMzUsIDIxMiwgMTk0LCAyMywgMTM1LCAyMTIsIDE5NSwgMjMsIDEzNSwgMjEyLCAxOTYsIDIzLCAxMzUsIDIxMiwgMTk4LCAKLSAgICAyMywgMTM1LCAyNDUsIDE2LCAyMywgMTM1LCAyNDUsIDE4LCAyMywgMTM1LCAyMTIsIDI1NCwgMjMsIDEzNSwgMjQwLCAxNDUsIAotICAgIDIzLCAxMzUsIDI0MCwgMTM3LCAyMywgMTM1LCAyNDAsIDE0MCwgMjMsIDEzNSwgMjQwLCAxMzgsIDIzLCAxMzUsIDI0MCwgCi0gICAgMTQyLCAyMywgMTM1LCAyNDAsIDE0NCwgMjMsIDEzNSwgMjUzLCAyMDQsIDIzLCAxMzUsIDI1MywgMjAxLCAyMywgMTM1LCAKLSAgICAyNTMsIDE5OSwgMjMsIDEzNSwgMjUzLCAyMDAsIDIzLCAxMzUsIDIxOSwgMTU1LCAyMywgMTM1LCAyNTUsIDYxLCAyMywgCi0gICAgMTM1LCAyMTMsIDkzLCAyMywgMTM1LCAyMTMsIDI0LCAyMywgMTM1LCAyMjcsIDIwMCwgMjMsIDEzNSwgMjI3LCAxOTksIDIzLCAKLSAgICA4OSwgMjM0LCA2NywgMjMsIDg5LCAyMTksIDE1MCwgMjMsIDg5LCAyMzQsIDYwLCAyMywgODksIDIyOSwgNTcsIDIzLCA4OSwgCi0gICAgMjI5LCA1NSwgMjMsIDg5LCAyMjksIDU0LCAyMywgODksIDIxNywgNTUsIDIzLCA4OSwgMjIzLCAxNzksIDIzLCA4OSwgMjIzLCAKLSAgICAxNzQsIDIzLCA4OSwgMjIzLCAxNzEsIDIzLCA4OSwgMjIzLCAxNjQsIDIzLCA4OSwgMjIzLCAxNTksIDIzLCA4OSwgMjIzLCAKLSAgICAxNTQsIDIzLCA4OSwgMjIzLCAxNjUsIDIzLCA4OSwgMjIzLCAxNzcsIDIzLCA4OSwgMjMxLCAzMCwgMjMsIDg5LCAyMjUsIAotICAgIDIyNywgMjMsIDg5LCAyMjUsIDIxNiwgMjMsIDg5LCAyMjAsIDc2LCAyMywgODksIDIxOSwgMTQ0LCAyMywgODksIDIzNiwgCi0gICAgNTEsIDIzLCA4OSwgMjQ5LCAyMzksIDIzLCA4OSwgMjUwLCA0MywgMjMsIDg5LCAyMzQsIDExNiwgMjMsIDg5LCAyMTcsIAotICAgIDEyNiwgMjMsIDg5LCAyMjYsIDcsIDIzLCA4OSwgMjQxLCAxNTgsIDIzLCA4OSwgMjM0LCA2MSwgMjMsIDg5LCAyMzQsIDU5LCAKLSAgICAyMywgODksIDIyOSwgNTMsIDIzLCA4OSwgMjI5LCA0NywgMjMsIDg5LCAyMjksIDQ5LCAyMywgODksIDIyOSwgNTIsIDIzLCAKLSAgICA4OSwgMjI5LCA0OCwgMjMsIDg5LCAyMTcsIDUyLCAyMywgODksIDIxNywgNDksIDIzLCA4OSwgMjIzLCAxNzIsIDIzLCA4OSwgCi0gICAgMjIzLCAxNjcsIDIzLCA4OSwgMjIzLCAxNTMsIDIzLCA4OSwgMjIzLCAxNTIsIDIzLCA4OSwgMjE5LCAxNDYsIDIzLCA4OSwgCi0gICAgMjIzLCAxNjksIDIzLCA4OSwgMjIzLCAxNjgsIDIzLCA4OSwgMjIzLCAxNjEsIDIzLCA4OSwgMjIzLCAxNjMsIDIzLCA4OSwgCi0gICAgMjIzLCAxNzYsIDIzLCA4OSwgMjIzLCAxNTYsIDIzLCA4OSwgMjIzLCAxNjYsIDIzLCA4OSwgMjIzLCAxNzUsIDIzLCA4OSwgCi0gICAgMjIzLCAxNTEsIDIzLCA4OSwgMjMxLCAyNiwgMjMsIDg5LCAyMzEsIDIxLCAyMywgODksIDIzMSwgMjMsIDIzLCA4OSwgMjMxLCAKLSAgICAyMCwgMjMsIDg5LCAyMzEsIDE4LCAyMywgODksIDIzMSwgMjQsIDIzLCA4OSwgMjMxLCAyOSwgMjMsIDg5LCAyMzEsIDI3LCAKLSAgICAyMywgODksIDIzNCwgMjI2LCAyMywgODksIDIyNSwgMjE4LCAyMywgODksIDIyNSwgMjE5LCAyMywgODksIDIyNSwgMjI0LCAKLSAgICAyMywgODksIDIzNCwgMjI0LCAyMywgODksIDIyMCwgNjksIDIzLCA4OSwgMjIwLCA1OSwgMjMsIDg5LCAyMjAsIDYyLCAyMywgCi0gICAgODksIDIyMCwgNjQsIDIzLCA4OSwgMjI2LCAxNjAsIDIzLCA4OSwgMjM2LCA0NiwgMjMsIDg5LCAyMzYsIDM5LCAyMywgODksIAotICAgIDIxOSwgMTUxLCAyMywgODksIDIzNiwgNDcsIDIzLCA4OSwgMjEzLCAxNywgMjMsIDg5LCAyMTMsIDEzLCAyMywgODksIDIxMywgCi0gICAgMTQsIDIzLCA4OSwgMjI2LCA1LCAyMywgODksIDIzNCwgMjI1LCAyMywgODksIDI0MSwgMTU2LCAyMywgODksIDI0MSwgMTU0LCAKLSAgICAyMywgODksIDI0MSwgMTU3LCAyMywgODksIDI0MSwgMTU1LCAyMywgODksIDIxMywgMjMsIDIzLCA4OSwgMjM0LCA2MywgMjMsIAotICAgIDg5LCAyMzQsIDYyLCAyMywgODksIDIzNCwgNjYsIDIzLCA4OSwgMjM0LCA2NCwgMjMsIDg5LCAyMzQsIDY1LCAyMywgODksIAotICAgIDIxOSwgMTQ4LCAyOCwgNCwgMTU5LCAyOCwgNCwgMjQwLCAyMTIsIDI4LCA0LCAyNDEsIDE2NSwgMjgsIDQsIDI0MiwgMjcsIAotICAgIDI4LCA0LCAyNDEsIDIwNCwgMjgsIDQsIDI0MSwgMjIyLCAyOCwgNCwgMjQxLCA1NCwgMjgsIDQsIDI0MSwgNTMsIDI4LCA0LCAKLSAgICAyMzMsIDE1NywgMjgsIDQsIDIzMiwgMTU2LCAyOCwgNCwgMjMzLCAxMywgMjgsIDQsIDIzMywgMTU2LCAyOCwgNCwgMjMzLCAKLSAgICA3NCwgMjgsIDQsIDIzMywgODIsIDI4LCA0LCAyMzIsIDIwOCwgMjgsIDQsIDIzMiwgMTI5LCAyOCwgNCwgMjQxLCAxNzQsIAotICAgIDI4LCA0LCAyNDEsIDE2OCwgMjgsIDQsIDI0MSwgMTcwLCAyOCwgNCwgMjQxLCAxNzMsIDI4LCA0LCAyNDEsIDE3MSwgMjgsIAotICAgIDQsIDI0MSwgMTcyLCAyOCwgNCwgMjQxLCAxNjksIDI4LCA0LCAyNDEsIDE2NywgMjgsIDQsIDE4OCwgMjgsIDQsIDIzMCwgCi0gICAgMTcyLCAyOCwgNCwgMjMxLCA0MiwgMjgsIDQsIDIzMiwgNDEsIDI4LCA0LCAyMzEsIDE0NSwgMjgsIDQsIDIzMSwgMTU2LCAKLSAgICAyOCwgNCwgMjMwLCAyMzEsIDI4LCA0LCAyMzAsIDExNCwgMjgsIDQsIDIxOCwgMTEwLCAyOCwgNCwgMjE4LCAxMDQsIDI4LCAKLSAgICA0LCAyMTgsIDEwNiwgMjgsIDQsIDIxOCwgMTA5LCAyOCwgNCwgMjE4LCAxMDcsIDI4LCA0LCAyMTgsIDEwOCwgMjgsIDQsIAotICAgIDIxOCwgMTA1LCAyOCwgNCwgMjE4LCAxMDMsIDI4LCA0LCAyMDMsIDI4LCA0LCAyMjMsIDUxLCAyOCwgNCwgMjIzLCAxODgsIAotICAgIDI4LCA0LCAyMjQsIDc0LCAyOCwgNCwgMjI0LCAxLCAyOCwgNCwgMjI0LCAyMSwgMjgsIDQsIDIyMywgMTEyLCAyOCwgNCwgCi0gICAgMjIzLCAyMSwgMjgsIDQsIDIyMiwgMjAyLCAyOCwgNCwgMjE5LCAyNywgMjgsIDQsIDIyMCwgMTE3LCAyOCwgNCwgMjIyLCAKLSAgICAyMDAsIDI4LCA0LCAyMjIsIDg5LCAyOCwgNCwgMjIyLCAxMDAsIDI4LCA0LCAyMTksIDI0MiwgMjgsIDQsIDIxOCwgMTk4LCAKLSAgICAyOCwgNCwgMjIxLCAyNCwgMjgsIDQsIDIyMCwgMTUwLCAyOCwgNCwgMjIwLCAyMTIsIDI4LCA0LCAyMjEsIDIwLCAyOCwgNCwgCi0gICAgMjIwLCAyNDEsIDI4LCA0LCAyMjAsIDI0MywgMjgsIDQsIDIyMCwgMTg3LCAyOCwgNCwgMjIwLCAxMzQsIDI4LCA0LCAyMjQsIAotICAgIDIzMiwgMjgsIDQsIDIyNCwgMTc1LCAyOCwgNCwgMjI0LCAxOTgsIDI4LCA0LCAyMjQsIDIzMSwgMjgsIDQsIDIyNCwgMjEyLCAKLSAgICAyOCwgNCwgMjI0LCAyMTMsIDI4LCA0LCAyMjQsIDE4NywgMjgsIDQsIDIyNCwgMTg2LCAyOCwgNCwgMjI0LCAxMzEsIDI4LCAKLSAgICA0LCAyMjQsIDEyNywgMjgsIDQsIDIyNCwgMTMwLCAyOCwgNCwgMjI0LCAxMjgsIDI4LCA0LCAyMjQsIDEyOSwgMjgsIDQsIAotICAgIDIyNCwgMjEwLCAyOCwgNCwgMjI0LCAyMDQsIDI4LCA0LCAyMjQsIDIwNiwgMjgsIDQsIDIyNCwgMjA5LCAyOCwgNCwgMjI0LCAKLSAgICAyMDcsIDI4LCA0LCAyMjQsIDIwOCwgMjgsIDQsIDIyNCwgMjA1LCAyOCwgNCwgMjI0LCAyMDMsIDI4LCA0LCAyMjQsIDE5OSwgCi0gICAgMjgsIDQsIDIyNCwgMjAyLCAyOCwgNCwgMjI0LCAyMDAsIDI4LCA0LCAyMjQsIDIwMSwgMjgsIDQsIDI1MiwgMTA3LCAyOCwgCi0gICAgNCwgMjUxLCA1NCwgMjgsIDQsIDI1MSwgMTg0LCAyOCwgNCwgMjUyLCAxMDYsIDI4LCA0LCAyNTEsIDI0MiwgMjgsIDQsIAotICAgIDI1MSwgMjUxLCAyOCwgNCwgMjUxLCAxMjgsIDI4LCA0LCAyNTEsIDEyLCAyOCwgNCwgMjE1LCAxLCAyOCwgNCwgMjE0LCA5OSwgCi0gICAgMjgsIDQsIDIxNCwgMTU0LCAyOCwgNCwgMjE1LCAwLCAyOCwgNCwgMjE0LCAyMjcsIDI4LCA0LCAyMTQsIDIzMiwgMjgsIDQsIAotICAgIDIxNCwgMTE5LCAyOCwgNCwgMjE0LCA5MSwgMjgsIDQsIDIxOCwgNTIsIDI4LCA0LCAyMTYsIDgyLCAyOCwgNCwgMjE3LCA3MSwgCi0gICAgMjgsIDQsIDIxOCwgNDksIDI4LCA0LCAyMTcsIDIxOSwgMjgsIDQsIDIxNywgMjI5LCAyOCwgNCwgMTA4LCAyOCwgNCwgMjE2LCAKLSAgICA0NSwgMjgsIDQsIDI1MCwgMjE5LCAyOCwgNCwgMjQ5LCA1MywgMjgsIDQsIDI0OSwgMjQ0LCAyOCwgNCwgMjUwLCAyMTgsIAotICAgIDI4LCA0LCAyNTAsIDExNiwgMjgsIDQsIDI1MCwgMTI0LCAyOCwgNCwgMjQ5LCAxNzUsIDI4LCA0LCAyNDksIDI0LCAyOCwgNCwgCi0gICAgMjEzLCAxNTMsIDI4LCA0LCAyMTMsIDEyOSwgMjgsIDQsIDIxMywgMTQ1LCAyOCwgNCwgMjEzLCAxNTIsIDI4LCA0LCAyMTMsIAotICAgIDE0OSwgMjgsIDQsIDIxMywgMTUwLCAyOCwgNCwgMjEzLCAxMzYsIDI4LCA0LCAyMTMsIDEzNSwgMjgsIDQsIDIxMywgMTI0LCAKLSAgICAyOCwgNCwgMjEzLCAxMjAsIDI4LCA0LCAyMTMsIDEyMywgMjgsIDQsIDIxMywgMTIxLCAyOCwgNCwgMjEzLCAxMjIsIDI4LCAKLSAgICA0LCAyMDUsIDI4LCA0LCAyMjgsIDkyLCAyOCwgNCwgMjI5LCA2NCwgMjgsIDQsIDIzMCwgNDMsIDI4LCA0LCAyMjksIDE4NCwgCi0gICAgMjgsIDQsIDIyOSwgMTg3LCAyOCwgNCwgMjI4LCAxODUsIDI4LCA0LCAyMjgsIDMxLCAyOCwgNCwgMjI4LCAyMywgMjgsIDQsIAotICAgIDIyNywgMjQ3LCAyOCwgNCwgMjI4LCAxMCwgMjgsIDQsIDIyOCwgMjIsIDI4LCA0LCAyMjgsIDE2LCAyOCwgNCwgMjI4LCAxNywgCi0gICAgMjgsIDQsIDIyNywgMjUzLCAyOCwgNCwgMjI3LCAyMzksIDI4LCA0LCAyNDIsIDE1NiwgNjEsIDI4LCA0LCAyNDIsIDE1NiwgCi0gICAgNjksIDI4LCA0LCAyNDIsIDE1NiwgNzIsIDI4LCA0LCAyNDIsIDE1NiwgMjU0LCAyMzIsIDI4LCA0LCAyNDIsIDE1NiwgMjQ1LCAKLSAgICAxNjUsIDI4LCA0LCAyNDIsIDE1NiwgNzQsIDI4LCA0LCAyNDIsIDE1NiwgNzUsIDI4LCA0LCAyNDIsIDE1NiwgMjE0LCA0OSwgCi0gICAgMjgsIDQsIDE4MSwgMjgsIDQsIDIzMywgMjM4LCAyOCwgNCwgMjM0LCAxMDEsIDI4LCA0LCAyMzUsIDE0LCAyOCwgNCwgMjM0LCAKLSAgICAxODcsIDI4LCA0LCAyMzQsIDE4OCwgMjgsIDQsIDIzNCwgMzcsIDI4LCA0LCAyMzQsIDM2LCAyOCwgNCwgMjMzLCAyMDQsIAotICAgIDI4LCA0LCAyMzMsIDE5OCwgMjgsIDQsIDIzMywgMjAzLCAyOCwgNCwgMjMzLCAxOTksIDI4LCA0LCAyMzMsIDIwMCwgMjgsIAotICAgIDQsIDIzMywgMTkzLCAyOCwgNCwgMjMzLCAxODcsIDI4LCA0LCAyMzMsIDE4OSwgMjgsIDQsIDIzMywgMTkyLCAyOCwgNCwgCi0gICAgMjMzLCAxOTAsIDI4LCA0LCAyMzMsIDE5MSwgMjgsIDQsIDIzMywgMTg4LCAyOCwgNCwgMjMzLCAxODYsIDI4LCA0LCAyMzMsIAotICAgIDE4MiwgMjgsIDQsIDIzMywgMTg1LCAyOCwgNCwgMjMzLCAxODMsIDI4LCA0LCAyMzMsIDE4NCwgMjgsIDQsIDIxNCwgNDksIAotICAgIDI4LCA0LCAyMTMsIDE4MywgMjgsIDQsIDIxMywgMjM1LCAyOCwgNCwgMjE0LCA0OCwgMjgsIDQsIDIxNCwgMSwgMjgsIDQsIAotICAgIDIxNCwgNiwgMjgsIDQsIDIxMywgMjE0LCAyOCwgNCwgMjEzLCAyMTMsIDI4LCA0LCAyMjYsIDE1LCA2MSwgMjgsIDQsIDIyNiwgCi0gICAgMTUsIDY5LCAyOCwgNCwgMjI2LCAxNSwgNzIsIDI4LCA0LCAyMjYsIDE1LCAyNTQsIDIzMiwgMjgsIDQsIDIyNiwgMTUsIAotICAgIDI0NSwgMTY1LCAyOCwgNCwgMjI2LCAxNSwgNzQsIDI4LCA0LCAyMjYsIDE1LCA3NSwgMjgsIDQsIDIxMiwgMTA5LCAyOCwgNCwgCi0gICAgMjEyLCA4LCAyOCwgNCwgMjEyLCAzNywgMjgsIDQsIDIxMiwgMTA4LCAyOCwgNCwgMjEyLCA4NSwgMjgsIDQsIDIxMiwgODcsIAotICAgIDI4LCA0LCAyMTIsIDE2LCAyOCwgNCwgMjExLCAyNTEsIDI4LCA0LCAyMTIsIDc1LCAyOCwgNCwgMjEyLCA1NSwgMjgsIDQsIAotICAgIDIxMiwgNjIsIDI4LCA0LCAyMTIsIDc0LCAyOCwgNCwgMjEyLCA2NiwgMjgsIDQsIDIxMiwgNjcsIDI4LCA0LCAyMTIsIDYwLCAKLSAgICAyOCwgNCwgMjEyLCA0NiwgMjgsIDQsIDE4NiwgMjgsIDQsIDIxMiwgMjAzLCAyOCwgNCwgMjEyLCAyNTUsIDI4LCA0LCAyMTMsIAotICAgIDkxLCAyOCwgNCwgMjEzLCAzNSwgMjgsIDQsIDIxMywgMzgsIDI4LCA0LCAyMTIsIDIzNSwgMjgsIDQsIDIxMiwgMjI2LCAyOCwgCi0gICAgNCwgMjQ4LCAxNjQsIDI4LCA0LCAyNDYsIDMzLCAyOCwgNCwgMjQ3LCAyMTEsIDI4LCA0LCAyNDgsIDE2MywgMjgsIDQsIAotICAgIDI0OCwgMjgsIDI4LCA0LCAyNDgsIDQxLCAyOCwgNCwgMjQ3LCA5OSwgMjgsIDQsIDI0NiwgMiwgMjgsIDQsIDI0OCwgODYsIAotICAgIDI4LCA0LCAyNDgsIDUxLCAyOCwgNCwgMjQ4LCA2MywgMjgsIDQsIDI0OCwgODUsIDI4LCA0LCAyNDgsIDczLCAyOCwgNCwgCi0gICAgMjQ4LCA3NCwgMjgsIDQsIDI0OCwgNTYsIDI4LCA0LCAyNDgsIDQyLCAyOCwgNCwgMjM1LCAxMzksIDI4LCA0LCAyMzUsIDU0LCAKLSAgICAyOCwgNCwgMjM1LCAxMTAsIDI4LCA0LCAyMzUsIDEzOCwgMjgsIDQsIDIzNSwgMTI1LCAyOCwgNCwgMjM1LCAxMjcsIDI4LCAKLSAgICA0LCAyMzUsIDcxLCAyOCwgNCwgMjM1LCAzNSwgMjgsIDQsIDI0MywgMTEwLCAyOCwgNCwgMjQyLCA5MiwgMjgsIDQsIDI0MiwgCi0gICAgMTkwLCAyOCwgNCwgMjQzLCAxMDcsIDI4LCA0LCAyNDMsIDMxLCAyOCwgNCwgMjQzLCAzOCwgMjgsIDQsIDI0MiwgMTUwLCAKLSAgICAyOCwgNCwgMjQyLCAxNDksIDI4LCA0LCAyNDIsIDU5LCAyOCwgNCwgMjQyLCA1NSwgMjgsIDQsIDI0MiwgNTgsIDI4LCA0LCAKLSAgICAyNDIsIDU2LCAyOCwgNCwgMjQyLCA1NywgMjgsIDQsIDI0MywgNSwgMjgsIDQsIDI0MiwgMjQxLCAyOCwgNCwgMjQyLCAyNTEsIAotICAgIDI4LCA0LCAyNDMsIDQsIDI4LCA0LCAyNDIsIDI1NSwgMjgsIDQsIDI0MywgMCwgMjgsIDQsIDI0MiwgMjQ1LCAyOCwgNCwgCi0gICAgMjQyLCAyMzAsIDI4LCA0LCAyMTcsIDE2MSwgMjgsIDQsIDIxNywgOTAsIDI4LCA0LCAyMTcsIDEyOCwgMjgsIDQsIDIxNywgCi0gICAgMTYwLCAyOCwgNCwgMjE3LCAxNDcsIDI4LCA0LCAyMTcsIDE0OCwgMjgsIDQsIDIxNywgMTA5LCAyOCwgNCwgMjE3LCA4MiwgCi0gICAgMjgsIDQsIDI1MCwgOTIsIDI4LCA0LCAyNTAsIDYsIDI4LCA0LCAyNTAsIDQ3LCAyOCwgNCwgMjUwLCA5MSwgMjgsIDQsIAotICAgIDI1MCwgNjQsIDI4LCA0LCAyNTAsIDY3LCAyOCwgNCwgMjUwLCAyMywgMjgsIDQsIDI0OSwgMjUxLCAyOCwgNCwgMjI2LCAyMywgCi0gICAgMjgsIDQsIDIyNSwgMjQ2LCAyOCwgNCwgMjI2LCA5LCAyOCwgNCwgMjI2LCAyMiwgMjgsIDQsIDIyNiwgMTEsIDI4LCA0LCAKLSAgICAyMjYsIDEyLCAyOCwgNCwgMjI1LCAyNTMsIDI4LCA0LCAyMjUsIDI0MiwgMjgsIDQsIDIxNiwgMTQxLCAyOCwgNCwgMjE2LCAKLSAgICAxMjIsIDI4LCA0LCAyMTYsIDEyNSwgMjgsIDQsIDIxNiwgMTQwLCAyOCwgNCwgMjE2LCAxMzUsIDI4LCA0LCAyMTYsIDEzNiwgCi0gICAgMjgsIDQsIDIxNiwgMTI0LCAyOCwgNCwgMjE2LCAxMjAsIDI4LCA0LCAyMTYsIDUsIDI4LCA0LCAyMTUsIDI1MywgMjgsIDQsIAotICAgIDIxNiwgMSwgMjgsIDQsIDIxNiwgNCwgMjgsIDQsIDIxNiwgMiwgMjgsIDQsIDIxNiwgMywgMjgsIDQsIDIxNSwgMjU1LCAyOCwgCi0gICAgNCwgMjE1LCAyNTQsIDI4LCA0LCAyNDQsIDE2NCwgMjgsIDQsIDI0MywgMjA1LCAyOCwgNCwgMjQ0LCA5MCwgMjgsIDQsIAotICAgIDI0NCwgMTYzLCAyOCwgNCwgMjQ0LCAxMTYsIDI4LCA0LCAyNDQsIDEyMywgMjgsIDQsIDI0NCwgMTIsIDI4LCA0LCAyNDMsIAotICAgIDE4OCwgMjgsIDQsIDE5MywgMjgsIDQsIDIyNSwgMzUsIDI4LCA0LCAyMjUsIDI0MCwgMjgsIDQsIDIyNiwgMjEzLCAyOCwgNCwgCi0gICAgMjI2LCA4NiwgMjgsIDQsIDIyNiwgOTYsIDI4LCA0LCAyMjUsIDE1MCwgMjgsIDQsIDIyNSwgMiwgMjgsIDQsIDIyMywgMTEsIAotICAgIDI4LCA0LCAyMzAsIDEwMywgMjgsIDQsIDI0MywgMTgyLCAyOCwgMzcsIDI0MywgMjksIDI0LCAzMCwgMjMzLCA0NywgNzcsIAotICAgIDI4LCAzNywgMzAsIDIzMywgNDcsIDc3LCAyOCwgMzcsIDI0MywgMjksIDc3LCAyOCwgMjIyLCA5MiwgNzcsIDI4LCAyMTMsIAotICAgIDE5NSwgMjgsIDI0MywgMjAwLCAyMTksIDY5LCAyOCwgMjQ5LCAxNTcsIDI4LCAyMjEsIDcwLCAyOCwgMjQ5LCAxNjQsIDI4LCAKLSAgICAyMjUsIDc5LCAyNDksIDE2NCwgMjgsIDIyNCwgMTU4LCA3NywgMjgsIDIyNiwgMTQzLCAyMjEsIDU3LCAyOCwgMjEsIDExNiwgCi0gICAgMjgsIDIxLCAxMDksIDI4LCAyMSwgMTY2LCAyOCwgMjEsIDE2MywgMjgsIDIxLCAxODAsIDI4LCAyMSwgMTg5LCAyOCwgMjEsIAotICAgIDE5OCwgMjgsIDIxLCAxOTUsIDI4LCAyMSwgMjAwLCAyOCwgNTAsIDIxNywgMjAwLCAyOCwgNTAsIDIxNiwgMzgsIDI4LCA1MCwgCi0gICAgMjE3LCAxMTUsIDI4LCA1MCwgMjQzLCAyNDAsIDI4LCA1MCwgMjQ0LCA4MywgMjgsIDUwLCAyMjAsIDM5LCAyOCwgNTAsIAotICAgIDIyMSwgMzcsIDI4LCA1MCwgMjQ1LCAxNDEsIDI4LCA1MCwgMjI5LCAyNiwgMjgsIDUwLCAyNDAsIDIwMCwgMjgsIDUwLCAKLSAgICAyMTcsIDIwMSwgMjE3LCAxMDAsIDI4LCA0LCAyMjIsIDk2LCAyMzAsIDExNCwgMjgsIDQsIDIzMCwgMTEwLCAyOCwgNCwgCi0gICAgMjMwLCAxMTEsIDI4LCA0LCAyMzAsIDExMiwgMjgsIDQsIDIyMiwgOTYsIDI1MSwgMTIsIDI4LCA0LCAyNTEsIDksIDI4LCA0LCAKLSAgICAyNTEsIDEwLCAyOCwgNCwgMjUxLCAxMSwgMjgsIDQsIDIyMiwgOTYsIDI0MywgMTg4LCAyOCwgNCwgMjQzLCAxODQsIDI4LCAKLSAgICA0LCAyNDMsIDE4NSwgMjgsIDQsIDI0MywgMTg2LCAyOCwgNCwgMjIyLCA5NiwgMjI1LCAyLCAyOCwgNCwgMjI0LCAyNTQsIAotICAgIDI4LCA0LCAyMjQsIDI1NSwgMjgsIDQsIDIyNSwgMCwgMjgsIDIxNiwgMjQyLCAxNTIsIDIxMiwgMjM4LCAyOCwgMjE2LCAKLSAgICAyNDIsIDE1MiwgMjQ3LCAyNDgsIDI4LCAyMTYsIDI0MiwgMTUyLCAyMjMsIDEzNSwgMjgsIDIxNiwgMjQyLCAxNTIsIDIyMCwgCi0gICAgMTc1LCAyMjMsIDEzNSwgMjgsIDIxNiwgMjQyLCAxNTIsIDI0NywgMTg3LCAyOCwgMjE2LCAyNDIsIDE1MiwgMjM0LCAxNzAsIAotICAgIDI4LCAyMTYsIDI0MiwgMTUyLCAyNTAsIDMxLCAyOCwgMjE2LCAyNDIsIDE1MiwgMjQxLCAxNjIsIDI4LCAyMTYsIDI0MiwgCi0gICAgMTUyLCAyNDcsIDI0NywgMjgsIDIxNiwgMjQyLCAxNTIsIDIzMywgMjE1LCAxNTgsIDEsIDYxLCAxNTgsIDEsIDc0LCAxNTgsIAotICAgIDEsIDcyLCAxNTgsIDEsIDc1LCAxNTgsIDEsIDY5LCAxNTgsIDEsIDIxNSwgNzksIDE1OCwgMSwgMjQzLCAxMTAsIDE1OCwgMSwgCi0gICAgMTgxLCAxNTgsIDEsIDI0MywgMzgsIDE1OCwgMSwgMjQyLCAxOTAsIDE1OCwgMSwgMjQyLCAxNTAsIDE1OCwgMSwgMjQyLCAKLSAgICA5MiwgMTU4LCAxLCAyNDIsIDYwLCAxNTgsIDEsIDE1OSwgMTU4LCAxLCAyNDEsIDIyMiwgMTU4LCAxLCAyNDEsIDE2NSwgCi0gICAgMTU4LCAxLCAyNDEsIDU0LCAxNTgsIDEsIDI0MCwgMjEyLCAxNTgsIDEsIDI0MCwgMTkzLCAxNTgsIDEsIDIzMywgMTU3LCAKLSAgICAxNTgsIDEsIDIzMywgODIsIDE1OCwgMSwgMjMzLCAxMywgMTU4LCAxLCAyMzIsIDIwOCwgMTU4LCAxLCAyMzIsIDE1NiwgCi0gICAgMTU4LCAxLCAyMzIsIDEzMCwgMTU4LCAxLCAxODgsIDE1OCwgMSwgMjMxLCAxNTYsIDE1OCwgMSwgMjMxLCA0MiwgMTU4LCAxLCAKLSAgICAyMzAsIDIzMSwgMTU4LCAxLCAyMzAsIDE3MiwgMTU4LCAxLCAyMDUsIDE1OCwgMSwgMjQxLCA3NiwgMTU4LCAxLCAyMzAsIAotICAgIDMxLCAxNTgsIDEsIDIyOSwgMTg3LCAxNTgsIDEsIDIyOSwgNjQsIDE1OCwgMSwgMjI4LCAxODUsIDE1OCwgMSwgMjI4LCA5MiwgCi0gICAgMTU4LCAxLCAyMjgsIDMzLCAxNTgsIDEsIDIyNCwgMTc0LCAxNTgsIDEsIDIyNCwgMTYxLCAxNTgsIDEsIDIyNCwgMTU0LCAKLSAgICAxNTgsIDEsIDIyNCwgMTQ2LCAxNTgsIDEsIDIyNCwgMTM1LCAxNTgsIDEsIDIyNCwgMTMzLCAxNTgsIDEsIDIyMiwgMjAyLCAKLSAgICAxNTgsIDEsIDE5NywgMTU4LCAxLCAyMjIsIDEwMCwgMTU4LCAxLCAyMjAsIDExNywgMTU4LCAxLCAyMTksIDI0MiwgMTU4LCAKLSAgICAxLCAyMTksIDI3LCAxNTgsIDEsIDIxOCwgMjAzLCAxNTgsIDEsIDI0OCwgMTY0LCAxNTgsIDEsIDIxOCwgNTIsIDE1OCwgMSwgCi0gICAgMjQ4LCA0MSwgMTU4LCAxLCAyMTcsIDIyOSwgMTU4LCAxLCAyNDcsIDIxMSwgMTU4LCAxLCAyMTcsIDcxLCAxNTgsIDEsIAotICAgIDI0NywgOTksIDE1OCwgMSwgMjQ2LCAzMywgMTU4LCAxLCAyNDYsIDUsIDE1OCwgMSwgMjQ3LCAxMDgsIDE1OCwgMSwgMjE3LCAKLSAgICAxMiwgMTU4LCAxLCAyMTcsIDExLCAxNTgsIDEsIDIxNywgMSwgMTU4LCAxLCAyMTcsIDAsIDE1OCwgMSwgMjE2LCAyNTUsIAotICAgIDE1OCwgMSwgMjE2LCAyNTQsIDE1OCwgMSwgMjE2LCAxNDEsIDE1OCwgMSwgMjE2LCAxMzYsIDE1OCwgMSwgMjE2LCAxMjUsIAotICAgIDE1OCwgMSwgMjE2LCAxMjQsIDE1OCwgMSwgMjE2LCAxMjIsIDE1OCwgMSwgMjE2LCAxMjEsIDE1OCwgMSwgMjE0LCA0OSwgCi0gICAgMTU4LCAxLCAyMTQsIDYsIDE1OCwgMSwgMjEzLCAyMzUsIDE1OCwgMSwgMjEzLCAyMTQsIDE1OCwgMSwgMjEzLCAxODMsIAotICAgIDE1OCwgMSwgMjEzLCAxNzEsIDE1OCwgMSwgMTg2LCAxNTgsIDEsIDIxMywgMzgsIDE1OCwgMSwgMjEyLCAyNTUsIDE1OCwgMSwgCi0gICAgMjEyLCAyMzUsIDE1OCwgMSwgMjEyLCAyMDMsIDE1OCwgMSwgMjEyLCAxNjksIDE4LCAxOSwgMjQwLCAxNjAsIDE4LCAxOSwgCi0gICAgNzQsIDE4LCAxOSwgMjU0LCAxOTYsIDE4LCAxOSwgNzIsIDE4LCAxOSwgMjM2LCAyOCwgMTgsIDE5LCA3NSwgMTgsIDE5LCAKLSAgICAyMjcsIDQ5LCAxOCwgMTksIDIxMywgMTA0LCAyMjcsIDQ5LCAxOCwgMTksIDY2LCAyNDUsIDE2NSwgMTgsIDE5LCA2NiwgNzIsIAotICAgIDE4LCAxOSwgNjEsIDE4LCAxOSwgMjU0LCAyMzIsIDE4LCAxOSwgMjE0LCA2LCAxOCwgMTksIDE0OCwgMjE0LCA2LCAxOCwgCi0gICAgMTksIDIxMywgMjM1LCAxOCwgMTksIDE0OCwgMjEzLCAyMzUsIDE4LCAxOSwgMjEzLCAyMjcsIDE4LCAxOSwgMTQ4LCAyMTMsIAotICAgIDIyNywgMTgsIDE5LCAyMTMsIDIxNCwgMTgsIDE5LCAxNDgsIDIxMywgMjE0LCAxOCwgMTksIDIxMywgMjAyLCAxOCwgMTksIAotICAgIDE0OCwgMjEzLCAyMDIsIDE4LCAxOSwgMjMwLCAxMSwgMjEzLCAyMDIsIDE4LCAxOSwgMjE0LCA0OSwgMTgsIDE5LCAxNDgsIAotICAgIDIxNCwgNDksIDE4LCAxOSwgMjE0LCA0OCwgMTgsIDE5LCAxNDgsIDIxNCwgNDgsIDE4LCAxOSwgMjMwLCAxMSwgMjE0LCA0OCwgCi0gICAgMTgsIDE5LCAyNTQsIDEwOCwgMTgsIDE5LCAyMTMsIDEwNCwgMjE0LCA4MiwgMTgsIDE5LCAyNDIsIDE1NiwgMjE5LCA2OSwgCi0gICAgMTgsIDE5LCA0MCwgMTc5LCAxOCwgMTksIDQwLCAyNDIsIDExMywgMTgsIDE5LCA0MCwgMjUxLCAxMDEsIDE1MSwgMjIzLCAKLSAgICAxMzAsIDE4LCAxOSwgNDAsIDIxNiwgMjI3LCAxNTEsIDIyMywgMTMwLCAxOCwgMTksIDQwLCA0NiwgMTUxLCAyMjMsIDEzMCwgCi0gICAgMTgsIDE5LCA0MCwgMjIzLCAxMzAsIDE4LCAxOSwgNDAsIDUxLCAxNzksIDE4LCAxOSwgNDAsIDUxLCAyMjAsIDE3NSwgNzEsIAotICAgIDIxOSwgMzIsIDE4LCAxOSwgNDAsIDIzMSwgMzcsIDI0NywgNzQsIDE4LCAxOSwgNDAsIDIyMCwgMTc1LCAxOTksIDkwLCAxOCwgCi0gICAgMTksIDQwLCAyMjUsIDE1NiwgMTgsIDE5LCA0MCwgMTE5LCAyMTgsIDM2LCAxOCwgMTksIDI0NSwgMTA4LCAxOCwgMTksIAotICAgIDIzNSwgMjUxLCAxOCwgMTksIDIyNywgNjIsIDE4LCAxOSwgMjU0LCAzMiwgMTgsIDE5LCAyMjYsIDk2LCAxOCwgMTksIDIyNiwgCi0gICAgMjExLCAxOCwgMTksIDIyNSwgMjQwLCAxOCwgMTksIDIyNSwgMjAzLCAxOCwgMTksIDIyNSwgMTUwLCAxOCwgMTksIDIyNSwgCi0gICAgMTI5LCAxOCwgMTksIDIxMywgMTA0LCAyMjUsIDEyOSwgMTgsIDE5LCA2NiwgMjQxLCAyMDQsIDE4LCAxOSwgNjYsIDI0MSwgCi0gICAgMTY1LCAxOCwgMTksIDE5MywgMTgsIDE5LCAyMjYsIDIxMywgMTgsIDE5LCAyMjUsIDAsIDE4LCAxOSwgMTQ4LCAyMjUsIDAsIAotICAgIDE4LCAxOSwgMjI0LCAyNTQsIDE4LCAxOSwgMTQ4LCAyMjQsIDI1NCwgMTgsIDE5LCAyMjQsIDI1MywgMTgsIDE5LCAxNDgsIAotICAgIDIyNCwgMjUzLCAxOCwgMTksIDIyNCwgMjUxLCAxOCwgMTksIDE0OCwgMjI0LCAyNTEsIDE4LCAxOSwgMjI0LCAyNTAsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMjQsIDI1MCwgMTgsIDE5LCAyMjUsIDIsIDE4LCAxOSwgMTQ4LCAyMjUsIDIsIDE4LCAxOSwgMjI1LCAxLCAKLSAgICAxOCwgMTksIDE0OCwgMjI1LCAxLCAxOCwgMTksIDIxMywgMTA0LCAyMjUsIDEsIDE4LCAxOSwgMjI2LCAyMjksIDE4LCAxOSwgCi0gICAgMTQ4LCAyMjYsIDIyOSwgMTgsIDE5LCA2NiwgMjQyLCA0MSwgMTgsIDE5LCAyMTcsIDIyOSwgMTgsIDE5LCAyMTgsIDQ3LCAKLSAgICAxOCwgMTksIDIxNywgNzEsIDE4LCAxOSwgMjE3LCA1NywgMTgsIDE5LCAxMDgsIDE4LCAxOSwgMjE2LCAyMzAsIDE4LCAxOSwgCi0gICAgMjEzLCAxMDQsIDIxNiwgMjMwLCAxOCwgMTksIDY2LCAyNDgsIDI4LCAxOCwgMTksIDY2LCAyNDcsIDIxMSwgMTgsIDE5LCAKLSAgICAyMTgsIDUyLCAxOCwgMTksIDIxOCwgNDksIDE4LCAxOSwgMjE2LCA0MywgMTgsIDE5LCAxNDgsIDIxNiwgNDMsIDE4LCAxOSwgCi0gICAgMjE2LCAyNywgMTgsIDE5LCAxNDgsIDIxNiwgMjcsIDE4LCAxOSwgMjE2LCAyNiwgMTgsIDE5LCAxNDgsIDIxNiwgMjYsIDE4LCAKLSAgICAxOSwgMTA5LCAxOCwgMTksIDE0OCwgMTA5LCAxOCwgMTksIDIxNiwgMjAsIDE4LCAxOSwgMTQ4LCAyMTYsIDIwLCAxOCwgMTksIAotICAgIDIxNiwgNDUsIDE4LCAxOSwgMTQ4LCAyMTYsIDQ1LCAxOCwgMTksIDIxNiwgNDQsIDE4LCAxOSwgMTQ4LCAyMTYsIDQ0LCAxOCwgCi0gICAgMTksIDIzMCwgMTEsIDIxNiwgNDQsIDE4LCAxOSwgMjE4LCA5OSwgMTgsIDE5LCAyMTYsIDExMiwgMTgsIDE5LCAyMTYsIDk2LCAKLSAgICAxOCwgMTksIDIxNiwgOTUsIDE4LCAxOSwgMjE2LCAxMTUsIDE4LCAxOSwgMjM0LCAxODgsIDE4LCAxOSwgMjM1LCAxMSwgMTgsIAotICAgIDE5LCAyMzQsIDEwMSwgMTgsIDE5LCAyMzQsIDkyLCAxOCwgMTksIDIzNCwgMzcsIDE4LCAxOSwgMjM0LCAxOSwgMTgsIDE5LCAKLSAgICAyMTMsIDEwNCwgMjM0LCAxOSwgMTgsIDE5LCAxODEsIDE4LCAxOSwgMjM1LCAxNCwgMTgsIDE5LCAyMzMsIDIwMCwgMTgsIAotICAgIDE5LCAxNDgsIDIzMywgMjAwLCAxOCwgMTksIDIzMywgMTk4LCAxOCwgMTksIDE0OCwgMjMzLCAxOTgsIDE4LCAxOSwgMjMzLCAKLSAgICAxOTcsIDE4LCAxOSwgMTQ4LCAyMzMsIDE5NywgMTgsIDE5LCAyMzMsIDE5NiwgMTgsIDE5LCAxNDgsIDIzMywgMTk2LCAxOCwgCi0gICAgMTksIDIzMywgMTk1LCAxOCwgMTksIDE0OCwgMjMzLCAxOTUsIDE4LCAxOSwgMjMzLCAyMDQsIDE4LCAxOSwgMTQ4LCAyMzMsIAotICAgIDIwNCwgMTgsIDE5LCAyMzMsIDIwMywgMTgsIDE5LCAxNDgsIDIzMywgMjAzLCAxOCwgMTksIDIzMCwgMTEsIDIzMywgMjAzLCAKLSAgICAxOCwgMTksIDIzNSwgMjcsIDE4LCAxOSwgMjMzLCAyMDUsIDE4LCAxOSwgMjE5LCAyMTQsIDIzNCwgMTgyLCAxOCwgMTksIAotICAgIDIxOSwgMjE0LCAyMzQsIDkzLCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDMyLCAxOCwgMTksIDIxOSwgMjE0LCAyMzQsIDI1MiwgCi0gICAgMTgsIDE5LCAyNTAsIDEyNCwgMTgsIDE5LCAyNTAsIDIxNywgMTgsIDE5LCAyNDksIDI0NCwgMTgsIDE5LCAyNDksIDIzNCwgCi0gICAgMTgsIDE5LCAyNDksIDE3NSwgMTgsIDE5LCAyNDksIDExMywgMTgsIDE5LCAyMTMsIDEwNCwgMjQ5LCAxMTMsIDE4LCAxOSwgCi0gICAgMjUwLCAyMTksIDE4LCAxOSwgMjUwLCAyMTgsIDE4LCAxOSwgMjQ5LCAyMiwgMTgsIDE5LCAxNDgsIDI0OSwgMjIsIDE4LCAKLSAgICAxOSwgMjQ5LCAyMCwgMTgsIDE5LCAxNDgsIDI0OSwgMjAsIDE4LCAxOSwgMjQ5LCAxOSwgMTgsIDE5LCAxNDgsIDI0OSwgMTksIAotICAgIDE4LCAxOSwgMjQ5LCAxOCwgMTgsIDE5LCAxNDgsIDI0OSwgMTgsIDE4LCAxOSwgMjQ5LCAxNywgMTgsIDE5LCAxNDgsIDI0OSwgCi0gICAgMTcsIDE4LCAxOSwgMjQ5LCAyNCwgMTgsIDE5LCAxNDgsIDI0OSwgMjQsIDE4LCAxOSwgMjQ5LCAyMywgMTgsIDE5LCAxNDgsIAotICAgIDI0OSwgMjMsIDE4LCAxOSwgMjMwLCAxMSwgMjQ5LCAyMywgMTgsIDE5LCAyNTAsIDI1MiwgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMjE3LCAxNjMsIDE4LCAxOSwgMjMxLCAxNTYsIDE4LCAxOSwgMjMyLCA0MCwgMTgsIDE5LCAyMzEsIDQyLCAxOCwgMTksIAotICAgIDIzMSwgMTQsIDE4LCAxOSwgMjMwLCAyMzEsIDE4LCAxOSwgMjMwLCAyMDIsIDE4LCAxOSwgMjEzLCAxMDQsIDIzMCwgMjAyLCAKLSAgICAxOCwgMTksIDE4OCwgMTgsIDE5LCAyMzIsIDQxLCAxOCwgMTksIDIzMCwgMTEyLCAxOCwgMTksIDE0OCwgMjMwLCAxMTIsIAotICAgIDE4LCAxOSwgMjMwLCAxMTAsIDE4LCAxOSwgMTQ4LCAyMzAsIDExMCwgMTgsIDE5LCAyMzAsIDEwOSwgMTgsIDE5LCAxNDgsIAotICAgIDIzMCwgMTA5LCAxOCwgMTksIDIzMCwgMTA4LCAxOCwgMTksIDE0OCwgMjMwLCAxMDgsIDE4LCAxOSwgMjMwLCAxMDcsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMzAsIDEwNywgMTgsIDE5LCAyMzAsIDExNCwgMTgsIDE5LCAxNDgsIDIzMCwgMTE0LCAxOCwgMTksIDIzMCwgCi0gICAgMTEzLCAxOCwgMTksIDE0OCwgMjMwLCAxMTMsIDE4LCAxOSwgMjMwLCAxMSwgMjMwLCAxMTMsIDE4LCAxOSwgMTgzLCAxOCwgCi0gICAgMTksIDE0OCwgMTgzLCAxOCwgMTksIDIzMSwgNDUsIDE4LCAxOSwgMjUzLCAxMjEsIDE4MywgMTgsIDE5LCAyMjIsIDEyNywgCi0gICAgMTgzLCAxOCwgMTksIDIyOSwgMTg3LCAxOCwgMTksIDIzMCwgNDIsIDE4LCAxOSwgMjI5LCA2NCwgMTgsIDE5LCAyMjksIDM5LCAKLSAgICAxOCwgMTksIDIyOCwgMTg1LCAxOCwgMTksIDIyOCwgMTc1LCAxOCwgMTksIDIxMywgMTA0LCAyMjgsIDE3NSwgMTgsIDE5LCAKLSAgICAyMDUsIDE4LCAxOSwgMjMwLCA0MywgMTgsIDE5LCAyMjgsIDI5LCAxOCwgMTksIDE0OCwgMjI4LCAyOSwgMTgsIDE5LCAyMjgsIAotICAgIDMxLCAxOCwgMTksIDE0OCwgMjI4LCAzMSwgMTgsIDE5LCAyMjgsIDMwLCAxOCwgMTksIDE0OCwgMjI4LCAzMCwgMTgsIDE5LCAKLSAgICAyMzAsIDExLCAyMjgsIDMwLCAxOCwgMTksIDIwNCwgMTgsIDE5LCA2NiwgMjI5LCAxNjEsIDE4LCAxOSwgMjI5LCA2OSwgMTgsIAotICAgIDE5LCAyMzMsIDgyLCAxOCwgMTksIDIzMywgMTU1LCAxOCwgMTksIDIzMywgMTMsIDE4LCAxOSwgMjMyLCAyNTUsIDE4LCAxOSwgCi0gICAgMjMyLCAyMDgsIDE4LCAxOSwgMjMyLCAxODAsIDE4LCAxOSwgMjEzLCAxMDQsIDIzMiwgMTgwLCAxOCwgMTksIDIzMywgMTU3LCAKLSAgICAxOCwgMTksIDIzMywgMTU2LCAxOCwgMTksIDIzMiwgMTI3LCAxOCwgMTksIDE0OCwgMjMyLCAxMjcsIDE4LCAxOSwgMjMyLCAKLSAgICAxMjYsIDE4LCAxOSwgMTQ4LCAyMzIsIDEyNiwgMTgsIDE5LCAyMzIsIDEyNSwgMTgsIDE5LCAxNDgsIDIzMiwgMTI1LCAxOCwgCi0gICAgMTksIDIzMiwgMTI0LCAxOCwgMTksIDE0OCwgMjMyLCAxMjQsIDE4LCAxOSwgMjMyLCAxMjMsIDE4LCAxOSwgMTQ4LCAyMzIsIAotICAgIDEyMywgMTgsIDE5LCAyMzIsIDEyOSwgMTgsIDE5LCAxNDgsIDIzMiwgMTI5LCAxOCwgMTksIDIzMiwgMTI4LCAxOCwgMTksIAotICAgIDE0OCwgMjMyLCAxMjgsIDE4LCAxOSwgMTUwLCAxOCwgMTksIDE0OCwgMTUwLCAxOCwgMTksIDEzOCwgMTUwLCAxOCwgMTksIAotICAgIDIyMiwgMTAwLCAxOCwgMTksIDIyMiwgMTk4LCAxOCwgMTksIDIyMCwgMTE3LCAxOCwgMTksIDIyMCwgMTAxLCAxOCwgMTksIAotICAgIDIxOSwgMjQyLCAxOCwgMTksIDIxOSwgMjI2LCAxOCwgMTksIDIxMywgMTA0LCAyMTksIDIyNiwgMTgsIDE5LCAyMjIsIDIwMiwgCi0gICAgMTgsIDE5LCAyMjIsIDIwMCwgMTgsIDE5LCAyMTgsIDE5NCwgMTgsIDE5LCAxNDgsIDIxOCwgMTk0LCAxOCwgMTksIDIxOCwgCi0gICAgMTg4LCAxOCwgMTksIDE0OCwgMjE4LCAxODgsIDE4LCAxOSwgMjE4LCAxODcsIDE4LCAxOSwgMTQ4LCAyMTgsIDE4NywgMTgsIAotICAgIDE5LCAyMTgsIDE4MywgMTgsIDE5LCAxNDgsIDIxOCwgMTgzLCAxOCwgMTksIDIxOCwgMTgyLCAxOCwgMTksIDE0OCwgMjE4LCAKLSAgICAxODIsIDE4LCAxOSwgMjE4LCAxOTgsIDE4LCAxOSwgMTQ4LCAyMTgsIDE5OCwgMTgsIDE5LCAyMTgsIDE5NywgMTgsIDE5LCAKLSAgICAxNDgsIDIxOCwgMTk3LCAxOCwgMTksIDIzMCwgMTEsIDIxOCwgMTk3LCAxOCwgMTksIDE5NywgMTgsIDE5LCAyNTMsIDEyMSwgCi0gICAgMTk3LCAxOCwgMTksIDIxOCwgMTk5LCAxOCwgMTksIDI1MSwgMTQxLCAxOTcsIDE4LCAxOSwgMjMwLCAxOTcsIDIyMCwgMzYsIAotICAgIDE4LCAxOSwgMjMwLCAxMSwgMjIwLCAyNywgMTgsIDE5LCAyMzAsIDExLCAyMjMsIDIsIDE4LCAxOSwgMjMwLCAxMSwgMjE5LCAKLSAgICAxNjcsIDE4LCAxOSwgMjMwLCAxMSwgMjE5LCAyOSwgMTgsIDE5LCAyMzAsIDExLCAyMjAsIDI2LCAxOCwgMTksIDIzMCwgMTEsIAotICAgIDIyMiwgMTAzLCAxOCwgMTksIDIyMCwgMjQzLCAxOCwgMTksIDIyMCwgMjEyLCAxOCwgMTksIDIyMCwgMjA3LCAxOCwgMTksIAotICAgIDIyMCwgMTg3LCAxOCwgMTksIDIyMCwgMTgxLCAxOCwgMTksIDIyMSwgMjQsIDE4LCAxOSwgMjIxLCAyMCwgMTgsIDE5LCAKLSAgICAyMjAsIDEzMiwgMTgsIDE5LCAxNDgsIDIyMCwgMTMyLCAxOCwgMTksIDIyMCwgMTMxLCAxOCwgMTksIDE0OCwgMjIwLCAxMzEsIAotICAgIDE4LCAxOSwgMjIwLCAxMzAsIDE4LCAxOSwgMTQ4LCAyMjAsIDEzMCwgMTgsIDE5LCAyMjAsIDEyOSwgMTgsIDE5LCAxNDgsIAotICAgIDIyMCwgMTI5LCAxOCwgMTksIDIyMCwgMTI4LCAxOCwgMTksIDE0OCwgMjIwLCAxMjgsIDE4LCAxOSwgMjIwLCAxMzQsIDE4LCAKLSAgICAxOSwgMTQ4LCAyMjAsIDEzNCwgMTgsIDE5LCAyMjAsIDEzMywgMTgsIDE5LCAxNDgsIDIyMCwgMTMzLCAxOCwgMTksIDIyMSwgCi0gICAgMjYsIDE4LCAxOSwgMjEzLCAzOCwgMTgsIDE5LCAyMTMsIDg5LCAxOCwgMTksIDIxMiwgMjU1LCAxOCwgMTksIDIxMiwgMjQ2LCAKLSAgICAxOCwgMTksIDIxMiwgMjM1LCAxOCwgMTksIDIxMiwgMjIwLCAxOCwgMTksIDIxMywgMTA0LCAyMTIsIDIyMCwgMTgsIDE5LCAKLSAgICAxODYsIDE4LCAxOSwgMjEzLCA5MSwgMTgsIDE5LCAyMTIsIDE2NiwgMTgsIDE5LCAxNDgsIDIxMiwgMTY2LCAxOCwgMTksIAotICAgIDIxMiwgMTY1LCAxOCwgMTksIDE0OCwgMjEyLCAxNjUsIDE4LCAxOSwgMjEyLCAxNjQsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2NCwgCi0gICAgMTgsIDE5LCAyMTIsIDE2MywgMTgsIDE5LCAxNDgsIDIxMiwgMTYzLCAxOCwgMTksIDIxMiwgMTYyLCAxOCwgMTksIDE0OCwgCi0gICAgMjEyLCAxNjIsIDE4LCAxOSwgMjEyLCAxNjgsIDE4LCAxOSwgMTQ4LCAyMTIsIDE2OCwgMTgsIDE5LCAyMTIsIDE2NywgMTgsIAotICAgIDE5LCAxNDgsIDIxMiwgMTY3LCAxOCwgMTksIDIzMCwgMTEsIDIxMiwgMTY3LCAxOCwgMTksIDIxMywgMTA1LCAxOCwgMTksIAotICAgIDI1MSwgMTgyLCAyMTMsIDEwNSwgMTgsIDE5LCAxNDgsIDIxMywgMTA1LCAxOCwgMTksIDIyMiwgMTI3LCAyMTIsIDI1NSwgCi0gICAgMTgsIDE5LCAyMjQsIDIxLCAxOCwgMTksIDIyNCwgMTEyLCAyMjQsIDIxLCAxOCwgMTksIDE0OCwgMjMzLCA4MiwgMTgsIDE5LCAKLSAgICAyMjQsIDczLCAxOCwgMTksIDIyMywgMTg4LCAxOCwgMTksIDIyMywgMTM2LCAxOCwgMTksIDIyMywgMTEyLCAxOCwgMTksIAotICAgIDIyMywgOTksIDE4LCAxOSwgMTQ4LCAyMzIsIDIwOCwgMTgsIDE5LCAyMDMsIDE4LCAxOSwgMjI0LCA3NCwgMTgsIDE5LCAKLSAgICAxNDgsIDIzMywgMTU3LCAxOCwgMTksIDIyMywgMjAsIDE4LCAxOSwgMTQ4LCAyMjMsIDIwLCAxOCwgMTksIDE0OSwgMTgsIAotICAgIDE5LCAxNDgsIDE0OSwgMTgsIDE5LCAxMzgsIDE0OSwgMTgsIDE5LCAyNDQsIDEyMywgMTgsIDE5LCAyNDQsIDE2MSwgMTgsIAotICAgIDE5LCAyNDQsIDkwLCAxOCwgMTksIDI0NCwgNzcsIDE4LCAxOSwgMjQ0LCAxMiwgMTgsIDE5LCAyNDQsIDMsIDE4LCAxOSwgCi0gICAgMjQ0LCAxNjQsIDE4LCAxOSwgMjQ0LCAxNjMsIDE4LCAxOSwgMjQzLCAxODcsIDE4LCAxOSwgMTQ4LCAyNDMsIDE4NywgMTgsIAotICAgIDE5LCAyNDQsIDIzMCwgMTgsIDE5LCAyMTcsIDE0OCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIDE0OCwgMTgsIDE5LCAyMTcsIAotICAgIDEyOCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIDEyOCwgMTgsIDE5LCAyMTcsIDEyNCwgMTgsIDE5LCAyMzAsIDk2LCAyMTcsIAotICAgIDEyNCwgMTgsIDE5LCAyMTcsIDEwOSwgMTgsIDE5LCAyMTcsIDEwNiwgMTgsIDE5LCAyMTcsIDE2MSwgMTgsIDE5LCAyMTcsIAotICAgIDE2MCwgMTgsIDE5LCAyMTcsIDgxLCAxOCwgMTksIDE0OCwgMjE3LCA4MSwgMTgsIDE5LCAyMTcsIDE2MywgMTgsIDE5LCAKLSAgICAyMTYsIDEwMywgMTgsIDE5LCAyMTYsIDEwMSwgMTgsIDE5LCAyMTYsIDEwMCwgMTgsIDE5LCAyMTYsIDEwNSwgMTgsIDE5LCAKLSAgICAyMTYsIDEwNiwgMTgsIDE5LCAyMTYsIDE4LCAxOCwgMTksIDIxNiwgMTcsIDE4LCAxOSwgMjE2LCAxNiwgMTgsIDE5LCAyMTYsIAotICAgIDE5LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMjIyLCAxOCwgMTksIDIyOCwgNDksIDI0MSwgMTY1LCAxOCwgMTksIDIyOCwgCi0gICAgNDksIDI0MSwgMTQ3LCAxOCwgMTksIDIyOCwgNDksIDI0MSwgNTQsIDE4LCAxOSwgMjI4LCA0OSwgMjQxLCAzOSwgMTgsIDE5LCAKLSAgICAyMjgsIDQ5LCAxNTksIDE4LCAxOSwgMjI4LCA0OSwgMjQyLCAyNywgMTgsIDE5LCAyMjgsIDQ5LCAyNDIsIDQxLCAxOCwgMTksIAotICAgIDIyOCwgNDgsIDI0MiwgNDEsIDE4LCAxOSwgMjQxLCAxNDAsIDE4LCAxOSwgMjI0LCAyMjgsIDE4LCAxOSwgMjI0LCAxOTgsIAotICAgIDE4LCAxOSwgMjI0LCAxOTMsIDE4LCAxOSwgMjI0LCAxODcsIDE4LCAxOSwgMjI0LCAxODIsIDE4LCAxOSwgMjI0LCAyMzIsIAotICAgIDE4LCAxOSwgMjI0LCAyMzEsIDE4LCAxOSwgMjI0LCAyNDAsIDE4LCAxOSwgMjE3LCA4LCAxOCwgMTksIDIxNywgNiwgMTgsIAotICAgIDE5LCAyMTcsIDUsIDE4LCAxOSwgMjE3LCA5LCAxOCwgMTksIDE0OCwgMjI0LCAyMSwgMTgsIDE5LCAxNDgsIDIyMywgMTg4LCAKLSAgICAxOCwgMTksIDE0OCwgMjIzLCAxMTIsIDE4LCAxOSwgMTQ4LCAyMDMsIDE4LCAxOSwgMjI5LCAxNTcsIDE4LCAxOSwgMjI5LCAKLSAgICAxMTMsIDE4LCAxOSwgMjI5LCAxMDksIDE4LCAxOSwgMjI5LCA5MCwgMTgsIDE5LCAyMjksIDg1LCAxOCwgMTksIDIyOSwgCi0gICAgMTU5LCAxOCwgMTksIDIyOSwgMTU4LCAxOCwgMTksIDIyOSwgMTYxLCAxOCwgMTksIDIyOCwgMTk2LCAxOCwgMTksIDIyMiwgCi0gICAgMTI3LCAyMjAsIDI0MywgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAyMTIsIDE4LCAxOSwgMjIyLCAxMjcsIDIyMCwgMTg3LCAKLSAgICAxOCwgMTksIDIyMiwgMTI3LCAyMjEsIDI0LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDE0OCwgMTgsIDE5LCAyMTMsIDIwMCwgCi0gICAgMjE3LCAxMjgsIDE4LCAxOSwgMjEzLCAyMDAsIDIxNywgMTA5LCAxOCwgMTksIDIxMywgMjAwLCAyMTcsIDE2MSwgMTgsIDE5LCAKLSAgICAyMTMsIDIwMCwgMjE3LCAxNjMsIDE4LCAxOSwgMjMzLCAxOSwgMTgsIDE5LCAyMzMsIDE4LCAxOCwgMTksIDIzMywgMTcsIAotICAgIDE4LCAxOSwgMjMzLCAxNiwgMTgsIDE5LCAyMzMsIDI1LCAxOCwgMTksIDIzMywgMjQsIDE4LCAxOSwgMjMzLCAyNiwgMTgsIAotICAgIDE5LCAyMTcsIDE2MiwgMjE3LCAxNDgsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTI4LCAxOCwgMTksIDIxNywgMTYyLCAKLSAgICAyMTcsIDEyNCwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxMDksIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgMTA2LCAxOCwgMTksIAotICAgIDIxNywgMTYyLCAyMTcsIDE2MSwgMTgsIDE5LCAyMTcsIDE2MiwgMjE3LCAxNjAsIDE4LCAxOSwgMjE3LCAxNjIsIDIxNywgCi0gICAgMTYzLCAxOCwgMTksIDI1NCwgOTcsIDI1MywgNzQsIDE4LCAxOSwgMjUxLCAxNDEsIDc0LCAxOCwgMTksIDI1MSwgMTQxLCAKLSAgICA3MiwgMTgsIDE5LCAyNTEsIDE0MSwgNzUsIDE4LCAxOSwgMjUxLCAxNDEsIDYxLCAxOCwgMTksIDI1MSwgMTQxLCAyMTQsIDYsIAotICAgIDE4LCAxOSwgMjUxLCAxNDEsIDIxMywgMjM1LCAxOCwgMTksIDI1MSwgMTQxLCAyMTMsIDIxNCwgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgMjE0LCA0OSwgMTgsIDE5LCAyNTEsIDE0MSwgMjI5LCAxODcsIDE4LCAxOSwgMjUxLCAxNDEsIDIyOSwgNjQsIDE4LCAxOSwgCi0gICAgMjUxLCAxNDEsIDIyOCwgMTg1LCAxOCwgMTksIDI1MSwgMTQxLCAyMDUsIDE4LCAxOSwgMjUxLCAxNDEsIDIzNCwgMTg4LCAKLSAgICAxOCwgMTksIDI1MSwgMTQxLCAyMzQsIDEwMSwgMTgsIDE5LCAyNTEsIDE0MSwgMjM0LCAzNywgMTgsIDE5LCAyNTEsIDE0MSwgCi0gICAgMTgxLCAxOCwgMTksIDIyMiwgMTI3LCAyNDEsIDIyMiwgMTgsIDE5LCAyMjIsIDEyNywgMjQxLCAxNjUsIDE4LCAxOSwgMjIyLCAKLSAgICAxMjcsIDI0MSwgNTQsIDE4LCAxOSwgMjIyLCAxMjcsIDE1OSwgMTgsIDE5LCA2NiwgMjQyLCAxOTYsIDE4LCAxOSwgNjYsIAotICAgIDI0MiwgMjAwLCAxOCwgMTksIDY2LCAyNDIsIDIxMiwgMTgsIDE5LCA2NiwgMjQyLCAyMTEsIDE4LCAxOSwgNjYsIDI0MiwgCi0gICAgMjAxLCAxOCwgMTksIDY2LCAyNDIsIDIyNSwgMTgsIDE5LCA2NiwgMjIzLCA1MSwgMTgsIDE5LCA2NiwgMjIzLCAxMTIsIDE4LCAKLSAgICAxOSwgNjYsIDIyNCwgMjEsIDE4LCAxOSwgNjYsIDIyNCwgMSwgMTgsIDE5LCA2NiwgMjIzLCAxODgsIDE4LCAxOSwgNjYsIAotICAgIDIwMywgMTgsIDE5LCA2NiwgMjEzLCAxODMsIDE4LCAxOSwgNjYsIDIxMywgMjE0LCAxOCwgMTksIDY2LCAyMTQsIDYsIDE4LCAKLSAgICAxOSwgNjYsIDIxNCwgMSwgMTgsIDE5LCA2NiwgMjEzLCAyMzUsIDE4LCAxOSwgNjYsIDIxNCwgNDksIDE4LCAxOSwgNjYsIAotICAgIDI0MCwgMTg2LCAxOCwgMTksIDY2LCAyNDAsIDE4NywgMTgsIDE5LCA2NiwgMjQwLCAxOTAsIDE4LCAxOSwgNjYsIDI0MCwgCi0gICAgMTg5LCAxOCwgMTksIDY2LCAyNDAsIDE4OCwgMTgsIDE5LCA2NiwgMjQwLCAxOTIsIDE4LCAxOSwgNjYsIDIxNywgOTAsIDE4LCAKLSAgICAxOSwgNjYsIDIxNywgMTA5LCAxOCwgMTksIDY2LCAyMTcsIDE0OCwgMTgsIDE5LCA2NiwgMjE3LCAxNDcsIDE4LCAxOSwgNjYsIAotICAgIDIxNywgMTI4LCAxOCwgMTksIDY2LCAyMTcsIDE2MSwgMTgsIDE5LCA2NiwgMjE2LCA4NiwgMTgsIDE5LCA2NiwgMjE2LCA5NSwgCi0gICAgMTgsIDE5LCA2NiwgMjE2LCAxMTIsIDE4LCAxOSwgNjYsIDIxNiwgMTExLCAxOCwgMTksIDY2LCAyMTYsIDk2LCAxOCwgMTksIAotICAgIDY2LCAyMTYsIDExNSwgMTgsIDE5LCA2NiwgMjI1LCAzNSwgMTgsIDE5LCA2NiwgMjI1LCAxNTAsIDE4LCAxOSwgNjYsIDIyNiwgCi0gICAgOTYsIDE4LCAxOSwgNjYsIDIyNiwgODYsIDE4LCAxOSwgNjYsIDIyNSwgMjQwLCAxOCwgMTksIDY2LCAxOTMsIDE4LCAxOSwgCi0gICAgNjYsIDIyNiwgMjI5LCAxOCwgMTksIDY2LCAyNDIsIDkyLCAxOCwgMTksIDY2LCAyNDIsIDE1MCwgMTgsIDE5LCA2NiwgMjQzLCAKLSAgICAzOCwgMTgsIDE5LCA2NiwgMjQzLCAzMSwgMTgsIDE5LCA2NiwgMjQyLCAxOTAsIDE4LCAxOSwgNjYsIDI0MywgMTEwLCAxOCwgCi0gICAgMTksIDY2LCAyMzQsIDEwOCwgMTgsIDE5LCA2NiwgMjM0LCAxMTMsIDE4LCAxOSwgNjYsIDIzNCwgMTI1LCAxOCwgMTksIDY2LCAKLSAgICAyMzQsIDEyNCwgMTgsIDE5LCA2NiwgMjM0LCAxMTgsIDE4LCAxOSwgNjYsIDIzNCwgMTM4LCAxOCwgMTksIDY2LCAyMzQsIAotICAgIDUwLCAxOCwgMTksIDY2LCAyMzQsIDUxLCAxOCwgMTksIDY2LCAyMzQsIDU0LCAxOCwgMTksIDY2LCAyMzQsIDUzLCAxOCwgCi0gICAgMTksIDY2LCAyMzQsIDUyLCAxOCwgMTksIDY2LCAyMzQsIDU1LCAxOCwgMTksIDY2LCAyMzQsIDU2LCAxOCwgMTksIDY2LCAKLSAgICAyMjgsIDkyLCAxOCwgMTksIDY2LCAyMjgsIDE4NSwgMTgsIDE5LCA2NiwgMjI5LCAxODcsIDE4LCAxOSwgNjYsIDIyOSwgCi0gICAgMTg0LCAxOCwgMTksIDY2LCAyMjksIDY0LCAxOCwgMTksIDY2LCAyMDUsIDE4LCAxOSwgNjYsIDIzMCwgMTcyLCAxOCwgMTksIAotICAgIDY2LCAyMzAsIDIzMSwgMTgsIDE5LCA2NiwgMjMxLCAxNTYsIDE4LCAxOSwgNjYsIDIzMSwgMTQ1LCAxOCwgMTksIDY2LCAKLSAgICAyMzEsIDQyLCAxOCwgMTksIDY2LCAxODgsIDE4LCAxOSwgNjYsIDIxMiwgMjAzLCAxOCwgMTksIDY2LCAyMTIsIDIzNSwgMTgsIAotICAgIDE5LCA2NiwgMjEzLCAzOCwgMTgsIDE5LCA2NiwgMjEzLCAzNSwgMTgsIDE5LCA2NiwgMjEyLCAyNTUsIDE4LCAxOSwgNjYsIAotICAgIDE4NiwgMTgsIDE5LCA2NiwgMjM1LCA1NCwgMTgsIDE5LCAyMjIsIDEyNywgMjM1LCA1NCwgMTgsIDE5LCA2NiwgMjM1LCA3MSwgCi0gICAgMTgsIDE5LCA2NiwgMjM1LCAxMjcsIDE4LCAxOSwgNjYsIDIzNSwgMTI1LCAxOCwgMTksIDY2LCAyMzUsIDExMCwgMTgsIDE5LCAKLSAgICAyMjIsIDEyNywgMjM1LCAxMTAsIDE4LCAxOSwgNjYsIDIzNSwgMTM5LCAxOCwgMTksIDY2LCAyMzUsIDg0LCAxOCwgMTksIAotICAgIDY2LCAyMzUsIDg4LCAxOCwgMTksIDY2LCAyMzUsIDk4LCAxOCwgMTksIDY2LCAyMzUsIDk3LCAxOCwgMTksIDY2LCAyMzUsIAotICAgIDk2LCAxOCwgMTksIDY2LCAyMzUsIDk5LCAxOCwgMTksIDY2LCAyMzIsIDE1NiwgMTgsIDE5LCA2NiwgMjMyLCAyMDgsIDE4LCAKLSAgICAxOSwgNjYsIDIzMywgODIsIDE4LCAxOSwgNjYsIDIzMywgNzQsIDE4LCAxOSwgNjYsIDIzMywgMTMsIDE4LCAxOSwgNjYsIAotICAgIDIzMywgMTU3LCAxOCwgMTksIDY2LCAyNDcsIDEwMywgMTgsIDE5LCA2NiwgMjQ3LCAxMDQsIDE4LCAxOSwgNjYsIDI0NywgCi0gICAgMTA3LCAxOCwgMTksIDY2LCAyNDcsIDEwNiwgMTgsIDE5LCA2NiwgMjQ3LCAxMDUsIDE4LCAxOSwgNjYsIDI0NywgMTA4LCAKLSAgICAxOCwgMTksIDY2LCAyMzMsIDE1LCAxOCwgMTksIDY2LCAyMzMsIDE3LCAxOCwgMTksIDY2LCAyMzMsIDIxLCAxOCwgMTksIAotICAgIDY2LCAyMzMsIDIwLCAxOCwgMTksIDY2LCAyMzMsIDE5LCAxOCwgMTksIDY2LCAyMzMsIDI1LCAxOCwgMTksIDY2LCAyMTcsIAotICAgIDMsIDE4LCAxOSwgNjYsIDIxNywgNSwgMTgsIDE5LCA2NiwgMjE3LCA4LCAxOCwgMTksIDY2LCAyMTcsIDcsIDE4LCAxOSwgCi0gICAgNjYsIDIxNywgNiwgMTgsIDE5LCA2NiwgMjE3LCA5LCAxOCwgMTksIDY2LCAyMTYsIDI1NSwgMTgsIDE5LCA2NiwgMjE3LCAwLCAKLSAgICAxOCwgMTksIDY2LCAyMTcsIDExLCAxOCwgMTksIDY2LCAyMTcsIDEwLCAxOCwgMTksIDY2LCAyMTcsIDEsIDE4LCAxOSwgNjYsIAotICAgIDIxNywgMTIsIDE4LCAxOSwgNjYsIDIxMiwgOCwgMTgsIDE5LCA2NiwgMjEyLCAxNiwgMTgsIDE5LCA2NiwgMjEyLCA4NywgCi0gICAgMTgsIDE5LCA2NiwgMjEyLCA4NSwgMTgsIDE5LCA2NiwgMjEyLCAzNywgMTgsIDE5LCA2NiwgMjEyLCAxMDksIDE4LCAxOSwgCi0gICAgNjYsIDIxMiwgMTUyLCAxOCwgMTksIDY2LCA3MCwgMjEyLCAxNTIsIDE4LCAxOSwgNjYsIDI0NSwgMjM5LCAxOCwgMTksIDY2LCAKLSAgICAyNDUsIDI0MCwgMTgsIDE5LCA2NiwgMjQ1LCAyNDcsIDE4LCAxOSwgNjYsIDI0NSwgMjQ2LCAxOCwgMTksIDY2LCAyNDUsIAotICAgIDI0MiwgMTgsIDE5LCA2NiwgMjQ1LCAyNDksIDE4LCAxOSwgNjYsIDIxOSwgMjcsIDE4LCAxOSwgNjYsIDIxOSwgMjQyLCAxOCwgCi0gICAgMTksIDY2LCAyMjIsIDEwMCwgMTgsIDE5LCA2NiwgMjIyLCA4OSwgMTgsIDE5LCA2NiwgMjIwLCAxMTcsIDE4LCAxOSwgNjYsIAotICAgIDIyMiwgMjAyLCAxOCwgMTksIDY2LCAyMjAsIDE1MCwgMTgsIDE5LCA2NiwgMjIwLCAxODcsIDE4LCAxOSwgNjYsIDIyMCwgCi0gICAgMjQzLCAxOCwgMTksIDY2LCAyMjAsIDI0MSwgMTgsIDE5LCA2NiwgMjIwLCAyMTIsIDE4LCAxOSwgNjYsIDIyMSwgMjQsIDE4LCAKLSAgICAxOSwgNjYsIDIyMSwgMjYsIDE4LCAxOSwgNjYsIDIxNiwgMTIyLCAxOCwgMTksIDY2LCAyMTYsIDEyNCwgMTgsIDE5LCA2NiwgCi0gICAgMjE2LCAxMzYsIDE4LCAxOSwgNjYsIDIxNiwgMTM1LCAxOCwgMTksIDY2LCAyMTYsIDEyNSwgMTgsIDE5LCA2NiwgMjE2LCAKLSAgICAxNDEsIDE4LCAxOSwgNjYsIDI1MCwgNiwgMTgsIDE5LCA2NiwgMjUwLCAyMywgMTgsIDE5LCA2NiwgMjUwLCA2NywgMTgsIAotICAgIDE5LCA2NiwgMjUwLCA2NCwgMTgsIDE5LCA2NiwgMjUwLCA0NywgMTgsIDE5LCA2NiwgMjUwLCA5MiwgMTgsIDE5LCA2NiwgCi0gICAgMjE2LCA4OSwgMTgsIDE5LCA2NiwgMjE2LCA5MCwgMTgsIDE5LCA2NiwgMjE2LCA5MywgMTgsIDE5LCA2NiwgMjE2LCA5MiwgCi0gICAgMTgsIDE5LCA2NiwgMjE2LCA5MSwgMTgsIDE5LCA2NiwgMjE2LCA5NCwgMTgsIDE5LCAyNTAsIDQ4LCA1MiwgMTgsIDE5LCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMTgsIDE5LCAyMjQsIDIyNCwgMTgsIDE5LCAyMjksIDE1NiwgMTgsIDE5LCAyMjgsIDE5MywgCi0gICAgMTgsIDE5LCAyMjgsIDE5MiwgMTgsIDE5LCAyMjgsIDE5MSwgMTgsIDE5LCAyMjgsIDE5MCwgMTgsIDE5LCAyMjgsIDE5NSwgCi0gICAgMTgsIDE5LCAyMjgsIDE5NCwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3OSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3OCwgCi0gICAgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3NywgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA3NiwgMTgsIDE5LCAyMTMsIDIwMCwgCi0gICAgMjE3LCA3NSwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA4MiwgMTgsIDE5LCAyMTMsIDIwMCwgMjE3LCA4MSwgMTgsIDE5LCAKLSAgICAyMTMsIDIwMCwgNDAsIDIxNywgMTYzLCAxOCwgMTksIDI1MSwgMTQxLCAyMTQsIDgyLCAyMjcsIDkyLCAyMTksIDIwNywgNzcsIAotICAgIDIyNywgOTIsIDEsIDI1MSwgMjI0LCAyMjcsIDkyLCAxLCAyMzIsIDE0NSwgMjI3LCA5MiwgMSwgMjQ0LCAxMjAsIDIyNywgCi0gICAgOTIsIDEsIDIyMiwgMTg2LCAyMjcsIDkyLCAxLCAyMjksIDI0LCAyMjcsIDkyLCAxLCAyMTUsIDE5NSwgMjI3LCA5MiwgMSwgCi0gICAgMjQ4LCAxNDIsIDIyNywgOTIsIDEsIDIxNywgMzMsIDIyNywgOTIsIDEsIDI0OSwgMTY3LCAyMjcsIDkyLCAxLCAyNTAsIAotICAgIDExNCwgMjI3LCA5MiwgMSwgMjMwLCAxNjEsIDIyNywgOTIsIDEsIDI0MiwgMTMyLCAyMjcsIDkyLCAxLCAyMjksIDE0NywgCi0gICAgMjI3LCA5MiwgMSwgMjE5LCA2MiwgMjI3LCA5MiwgMSwgMjIzLCA0NiwgMjI3LCA5MiwgMSwgMjU0LCAxMDUsIDIyNywgOTIsIAotICAgIDEsIDIyNywgNTMsIDIyNywgOTIsIDEsIDIxNSwgMTIxLCAyMjcsIDkyLCAxLCAyNDUsIDE4NywgMjI3LCA5MiwgMSwgMjM1LCAKLSAgICAxODYsIDIyNywgOTIsIDEsIDI0NSwgMTg4LCAyMjcsIDkyLCAxLCAyMjcsIDI0LCAyMjcsIDkyLCAxLCAyMTUsIDE3NiwgCi0gICAgMjI3LCA5MiwgMSwgMjM2LCAzNCwgMjI3LCA5MiwgMSwgMjQ1LCAxODUsIDIyNywgOTIsIDEsIDIyNiwgNzcsIDIyNywgOTIsIAotICAgIDI0NCwgMTE5LCA3NywgMjI3LCA5MiwgMjIzLCAyMDIsIDI0NCwgMTE5LCA3NywgMTY4LCAxLCAyNDQsIDExMCwgMjQ0LCAKLSAgICAxMDIsIDI0NCwgMTI0LCAyNDQsIDIzMCwgMTY4LCAxLCAyMTUsIDc5LCAxNjgsIDEsIDIxNSwgMTA2LCAyMTUsIDEyMiwgNjksIAotICAgIDE2OCwgMSwgMjEyLCAyMDUsIDE2OCwgMSwgMjEzLCAxMDUsIDE2OCwgMSwgMjE0LCA4MiwgMTY4LCAxLCAyMTcsIDg0LCAKLSAgICAyMTcsIDgzLCAyMTcsIDEwNCwgMTY4LCAxLCAyNDUsIDI1LCAxNjgsIDEsIDI1NCwgNCwgNjEsIDE2OCwgMSwgMjI3LCAxMCwgCi0gICAgNzUsIDE2OCwgMSwgMjU0LCAxNzcsIDYxLCAxNjgsIDEsIDI1NCwgMTMyLCAxNjgsIDEsIDIzMiwgMTg2LCA3NSwgMTY4LCAxLCAKLSAgICAyMjAsIDE2OCwgNzUsIDE2OCwgMSwgNzUsIDE2OCwgMSwgMjI3LCA5OSwgMTY4LCAxLCAyMjcsIDYyLCAxNjgsIDEsIDIyNCwgCi0gICAgNTUsIDIyNCwgNjcsIDIyMywgMjQ0LCAxNDksIDE2OCwgMSwgMjM0LCAxOTksIDE2OCwgMSwgMjUwLCAxMTEsIDE2OCwgMSwgCi0gICAgMjM0LCAyMDAsIDIzNSwgMjcsIDE2OCwgMSwgMjQzLCAxNzcsIDE2OCwgMSwgMjQ1LCA5NiwgMTY4LCAxLCAyNDMsIDM0LCAKLSAgICAyNDIsIDQ3LCAyNDMsIDE3NywgMTY4LCAxLCAyNDMsIDcyLCAxNjgsIDEsIDIxMywgMTc2LCAyMTMsIDE3MCwgMjE0LCA4MiwgCi0gICAgMTY4LCAxLCAyNDIsIDE5LCAyNDIsIDQxLCAxNjgsIDEsIDI0MiwgMjMsIDI0MiwgNDEsIDE2OCwgMSwgMjMyLCAxODgsIAotICAgIDI0MiwgNDEsIDE2OCwgMSwgMjIwLCAxNzEsIDI0MiwgNDEsIDE2OCwgMSwgMjMwLCA3LCAyMjgsIDE4LCAyMzAsIDgsIDIwNCwgCi0gICAgMTY4LCAxLCAyMjAsIDE2OSwgMjA0LCAxNjgsIDEsIDI0NiwgNjksIDE2OCwgMSwgMjM1LCAxNjYsIDIzNSwgMTcwLCAyMzUsIAotICAgIDE2MCwgNzIsIDE2OCwgMSwgNzQsIDE2OCwgMSwgMjM1LCAxMTgsIDIzNSwgMTQyLCAxNjgsIDEsIDI0MywgMTksIDE2OCwgMSwgCi0gICAgMjMyLCAxODksIDI1NCwgMTQ4LCAxNjgsIDEsIDIyMCwgMTczLCA2MSwgMTY4LCAxLCAyMzUsIDE1MiwgMjQ1LCA3MiwgMTY4LCAKLSAgICAxLCAyMjYsIDQwLCAyMjYsIDYxLCAyMjYsIDIyOSwgMTY4LCAxLCAyNTQsIDcyLCAyNDUsIDcxLCAxNjgsIDEsIDIxOSwgCi0gICAgMjExLCAxOTcsIDE2OCwgMSwgMjIwLCAxMDUsIDIzMiwgMTg1LCAxOTcsIDE2OCwgMSwgMjIwLCAxNjcsIDE5NywgMTY4LCAxLCAKLSAgICAyNTAsIDI1MiwgMTY4LCAxLCAyMTIsIDE1MiwgMTY4LCAxLCAyMTcsIDE2LCAyMTcsIDI2LCAyMTYsIDcsIDIxOCwgOTksIAotICAgIDE2OCwgMSwgMjIwLCAxNjYsIDIxOCwgOTksIDE2OCwgMSwgMjQ5LCAzLCAxNjgsIDEsIDI1MSwgMjA4LCAyNTEsIDIxMSwgCi0gICAgMjUxLCAxNDcsIDI1MywgNzQsIDE2OCwgMSwgMjIwLCAxNzIsIDI1MywgNzQsIDE2OCwgMSwgMjQ2LCA2OCwgMTY4LCAxLCAKLSAgICAyMjcsIDM2LCAxNjgsIDEsIDI0NSwgMTUzLCAyNDUsIDE1NSwgNzQsIDE2OCwgMSwgMjMxLCAyNDEsIDIzMSwgMjQ5LCAxODMsIAotICAgIDE2OCwgMSwgMjMyLCAxODcsIDE4MywgMTY4LCAxLCAyMjAsIDE3MCwgMTgzLCAxNjgsIDEsIDIzMywgOTcsIDIzMywgMTM3LCAKLSAgICAyMzIsIDE5NiwgMTUwLCAxNjgsIDEsIDI0NiwgNzAsIDE2OCwgMSwgMjM1LCAyMjcsIDE2OCwgMSwgMjM1LCAyMjgsIDE2OCwgCi0gICAgMSwgMjQ4LCAxNTMsIDI0OCwgMTU4LCAyNDksIDMsIDE2OCwgMSwgMjI3LCA2LCAyNDUsIDI0LCA3NSwgMTY4LCAxLCAyNDUsIAotICAgIDE4MywgMTY4LCAxLCAyMzUsIDE4NSwgMTY4LCAxLCAyNDksIDIxLCAxNjgsIDEsIDI1MCwgMjA1LCAxNjgsIDEsIDI1MCwgCi0gICAgMTIzLCAxNjgsIDEsIDIxOSwgMTAwLCAxNjgsIDEsIDIzMiwgMTg0LCAxNjgsIDEsIDIyMCwgMTY1LCAxNjgsIDEsIDI0MCwgCi0gICAgMTAzLCAxNjgsIDEsIDIyNCwgMjQwLCAxNjgsIDEsIDIxMywgMTY2LCAxNjgsIDIyMCwgODEsIDIyNSwgMjYsIDE2OCwgMjMwLCAKLSAgICAxNTUsIDIyNSwgMjYsIDE2OCwgMjQ5LCA3MSwgMjI1LCAyNiwgMTY4LCAyNTMsIDE3NywgODcsIDE2OCwgMjE2LCA0NywgODcsIAotICAgIDE2OCwgMjUxLCAyMjMsIDg3LCAyMTgsIDMyLCAxLCA2MSwgMjE4LCAzMiwgMSwgNzIsIDIxOCwgMzIsIDEsIDY5LCAyMTgsIAotICAgIDMyLCAxLCAxODEsIDIxOCwgMzIsIDEsIDI0MywgMTEwLCAyMTgsIDMyLCAxLCAyMjksIDE1OSwgMjE4LCAzMiwgMSwgMjE4LCAKLSAgICA1MiwgMjE4LCAzMiwgMSwgMjQ4LCAxNjQsIDIxOCwgMzIsIDEsIDIwNSwgMjE4LCAzMiwgMSwgMTkzLCAyMTgsIDMyLCAxLCAKLSAgICAyNTIsIDEwNywgMjE4LCAzMiwgMSwgMTg4LCAyMTgsIDMyLCAxLCAxODYsIDIxOCwgMzIsIDEsIDIzMywgMTU3LCAyMTgsIAotICAgIDMyLCAxLCAyMTQsIDQ5LCAyMTgsIDMyLCAxLCAyMjIsIDIwMiwgMjE4LCAzMiwgMSwgMTU5LCAyMTgsIDMyLCAzMCwgNSwgCi0gICAgNzIsIDIxOCwgMzIsIDMwLCA1LCA2OSwgMjE4LCAzMiwgNSwgMjE0LCAxMzMsIDI0MSwgMjQ2LCAxLCA2MSwgMjQxLCAyNDYsIAotICAgIDEsIDcyLCAyNDEsIDI0NiwgMSwgNjksIDI0MSwgMjQ2LCAxLCAxODEsIDI0MSwgMjQ2LCAxLCAyNDMsIDExMCwgMjQxLCAKLSAgICAyNDYsIDEsIDIyOSwgMTU5LCAyNDEsIDI0NiwgMSwgMjE4LCA1MiwgMjQxLCAyNDYsIDEsIDI0OCwgMTY0LCAyNDEsIDI0NiwgCi0gICAgMSwgMjA1LCAyNDEsIDI0NiwgMSwgMTkzLCAyNDEsIDI0NiwgMSwgMjUyLCAxMDcsIDI0MSwgMjQ2LCAxLCAxODgsIDI0MSwgCi0gICAgMjQ2LCAxLCAxODYsIDI0MSwgMjQ2LCAxLCAyMDMsIDI0MSwgMjQ2LCAxLCAyMzMsIDE1NywgMjQxLCAyNDYsIDEsIDIxNCwgCi0gICAgNDksIDI0MSwgMjQ2LCAxLCAyMjIsIDIwMiwgMjQxLCAyNDYsIDEsIDE1OSwgMjQxLCAyNDYsIDMwLCA1LCA3MiwgMjQxLCAKLSAgICAyNDYsIDMwLCA1LCA2OSwgMjQxLCAyNDYsIDUsIDIyNiwgMTc2LCAyMjYsIDIsIDIyMCwgODEsIDIyNSwgMjYsIDIyNiwgMiwgCi0gICAgNTEsIDIyNSwgMjYsIDI1MSwgNDksIDEsIDYxLCAyNTEsIDQ5LCAxLCA3MiwgMjUxLCA0OSwgMSwgNjksIDI1MSwgNDksIDEsIAotICAgIDE4MSwgMjUxLCA0OSwgMSwgMjQzLCAxMTAsIDI1MSwgNDksIDEsIDIyOSwgMTU5LCAyNTEsIDQ5LCAxLCAyMTgsIDUyLCAKLSAgICAyNTEsIDQ5LCAxLCAyNDgsIDE2NCwgMjUxLCA0OSwgMSwgMjA1LCAyNTEsIDQ5LCAxLCAxOTMsIDI1MSwgNDksIDEsIDI1MiwgCi0gICAgMTA3LCAyNTEsIDQ5LCAxLCAxODgsIDI1MSwgNDksIDEsIDE4NiwgMjUxLCA0OSwgMSwgMjAzLCAyNTEsIDQ5LCAxLCAyMzMsIAotICAgIDE1NywgMjUxLCA0OSwgMSwgMjE0LCA0OSwgMjUxLCA0OSwgMSwgMjIyLCAyMDIsIDI1MSwgNDksIDEsIDE1OSwgMjUxLCA0OSwgCi0gICAgMzAsIDUsIDcyLCAyNTEsIDQ5LCAzMCwgNSwgNjksIDIxOCwgMzEsIDEsIDYxLCAyMTgsIDMxLCAxLCA3MiwgMjE4LCAzMSwgCi0gICAgMSwgNjksIDIxOCwgMzEsIDEsIDE4MSwgMjE4LCAzMSwgMSwgMjQzLCAxMTAsIDIxOCwgMzEsIDEsIDIyOSwgMTU5LCAyMTgsIAotICAgIDMxLCAxLCAyMTgsIDUyLCAyMTgsIDMxLCAxLCAyNDgsIDE2NCwgMjE4LCAzMSwgMSwgMjA1LCAyMTgsIDMxLCAxLCAxOTMsIAotICAgIDIxOCwgMzEsIDEsIDI1MiwgMTA3LCAyMTgsIDMxLCAxLCAxODgsIDIxOCwgMzEsIDEsIDE4NiwgMjE4LCAzMSwgMSwgMjMzLCAKLSAgICAxNTcsIDIxOCwgMzEsIDEsIDIxNCwgNDksIDIxOCwgMzEsIDEsIDIyMiwgMjAyLCAyMTgsIDMxLCAzMCwgNSwgNzIsIDIxOCwgCi0gICAgMzEsIDMwLCA1LCA2OSwgODQsIDEsIDE4MSwgODQsIDEsIDIzNCwgMTM4LCA4NCwgMSwgMjM0LCAzNywgODQsIDEsIDIzNCwgCi0gICAgMTEzLCA4NCwgMSwgMjI5LCA5MCwgODQsIDEsIDI1MCwgMjE5LCA4NCwgMSwgMjUwLCA5MiwgODQsIDEsIDI0OSwgMTc1LCAKLSAgICA4NCwgMSwgMjUwLCAyMywgODQsIDEsIDIyNywgMjUzLCA4NCwgMSwgMjQ4LCAxNjQsIDg0LCAxLCAyMTYsIDEwNSwgODQsIDEsIAotICAgIDI0NywgOTksIDg0LCAxLCAyMTYsIDEwMCwgODQsIDEsIDIyOCwgMTg4LCA4NCwgMSwgMjE4LCA1MiwgODQsIDEsIDIxNywgCi0gICAgMTYxLCA4NCwgMSwgMTA4LCA4NCwgMSwgMjE3LCAxMDksIDg0LCAxLCAyMjgsIDE4NSwgODQsIDEsIDI1MiwgMTA3LCA4NCwgCi0gICAgMSwgMjI2LCAyMywgODQsIDEsIDIyNSwgMTUwLCA4NCwgMSwgMjI1LCAyNTMsIDg0LCAxLCAyMzAsIDIzMSwgODQsIDEsIAotICAgIDIxMiwgMjM1LCA4NCwgMSwgMjIzLCAxMTIsIDg0LCAxLCAyMzIsIDIwOCwgODQsIDEsIDIxNCwgMTE5LCA4NCwgMSwgMjIxLCAKLSAgICAyNCwgODQsIDEsIDIxOSwgMTIxLCA4NCwgMSwgMjIyLCAyMDIsIDg0LCAxLCAxNTksIDg0LCAxLCAyMzMsIDE1NywgODQsIDEsIAotICAgIDIyNCwgMjMyLCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDIxOCwgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMzEsIDg0LCAKLSAgICAyMzUsIDI0MCwgMzAsIDIyNCwgMTk4LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDE5MywgODQsIDIzNSwgMjQwLCAzMCwgCi0gICAgMjI0LCAxNzUsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTQ3LCA4NCwgMjM1LCAyNDAsIDMwLCAyMjQsIDEzNSwgODQsIAotICAgIDIzNSwgMjQwLCAzMCwgMjI0LCAxMzQsIDg0LCAyMzUsIDI0MCwgMzAsIDIyMywgMTIsIDg0LCAyMzUsIDI0MCwgMzAsIDIyMywgCi0gICAgNSwgODQsIDIzNSwgMjQwLCAzMCwgMjMyLCAxMjEsIDg0LCAyMzUsIDI0MCwgMzAsIDIzMiwgMTEyLCA4NCwgMjM1LCAyNDAsIAotICAgIDMwLCAyMjQsIDIxMywgODQsIDIzNSwgMjQwLCAzMCwgMjI0LCAyMjQsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTgzLCAKLSAgICAyMTYsIDE1LCAxMTYsIDg0LCAyMzUsIDI0MCwgMzAsIDIyNCwgMTgzLCAyMTYsIDE1LCAxMDksIDg0LCAyMzUsIDI0MCwgMzAsIAotICAgIDIyNCwgMjE0LCA4NCwgMzAsIDIzNSwgMjI2LCAyNTMsIDIxNSwgODQsIDMwLCAyMzUsIDIyNiwgMjU0LCAyMzIsIDg0LCAzMCwgCi0gICAgNSwgMjU0LCAyMzIsIDg0LCAzMCwgNSwgNzIsIDg0LCAzMCwgNSwgMjM2LCAyOCwgODQsIDMwLCA1LCAyMTMsIDEwNSwgODQsIAotICAgIDMwLCA1LCAyMTIsIDE2MSwgODQsIDMwLCA1LCA2OSwgODQsIDMwLCA1LCAyMTUsIDkyLCA4NCwgMzAsIDUsIDIxNSwgMTk2LCAKLSAgICA4NCwgMzAsIDUsIDIyNywgOTksIDg0LCAzMCwgNSwgMTg2LCA4NCwgMzAsIDUsIDIzNiwgNTUsIDg0LCAzMCwgNSwgNzQsIAotICAgIDg0LCAzMCwgNSwgMjU0LCAxNDgsIDg0LCAzMCwgNSwgMjU0LCAxMDgsIDg0LCAzMCwgNSwgMjI3LCA0OSwgODQsIDMwLCA1LCAKLSAgICAyNTMsIDEwOCwgODQsIDUsIDIyOSwgMzcsIDg0LCA1LCAyMjQsIDE5LCA4NCwgNSwgMjEyLCAxNzIsIDg0LCA1LCAyMzAsIAotICAgIDEyMywgODQsIDUsIDIxNiwgMTcxLCA4NCwgNSwgMjUyLCA2MiwgODQsIDUsIDIyMywgMTA3LCA4NCwgNSwgMjE2LCAyNTEsIAotICAgIDg0LCA1LCAyMzQsIDI0NiwgODQsIDUsIDI1NCwgMTEwLCA4NCwgNSwgMjIyLCAxNjAsIDIyMiwgMTU0LCA4NCwgNSwgMjE0LCAKLSAgICAxMzAsIDg0LCA1LCAyNDksIDE3MCwgODQsIDUsIDI1MiwgMzcsIDg0LCA1LCAyMzQsIDEzMSwgODQsIDUsIDI1MiwgNTcsIAotICAgIDg0LCA1LCAyNTAsIDE5NywgMjI1LCAyMDQsIDIzMywgMjA5LCA4NCwgNSwgMjMzLCA1NCwgMjE2LCAyMzAsIDg0LCA1LCAKLSAgICAyNTEsIDE5NywgODQsIDUsIDIyNSwgMjU1LCAyMzAsIDE2OSwgODQsIDUsIDIzNCwgMTgsIDg0LCAyNDksIDM5LCAxNiwgCi0gICAgMjIzLCAxODEsIDg0LCA1LCAyNTMsIDkwLCA4NCwgNSwgMjUzLCAxMTEsIDg0LCAyMSwgMjEyLCA3OSwgODQsIDIxLCAxMTYsIAotICAgIDg0LCAyMSwgMTA5LCA4NCwgMjEsIDE2NiwgODQsIDIxLCAxNjMsIDg0LCAyMSwgMTgwLCA4NCwgMjEsIDE4OSwgODQsIDIxLCAKLSAgICAxOTgsIDg0LCAyMSwgMTk1LCA4NCwgMjEsIDIwMCwgODQsIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjE5LCAyMjksIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIzMCwgMTQxLCA4NCwgMTYsIDIzMywgNTQsIDI1MywgMTEzLCAyMjUsIDIwMywgODQsIAotICAgIDE2LCAyMzMsIDU0LCAyNTMsIDExMywgMjUxLCAyMjUsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDI1MSwgMzIsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTUsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgODksIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgODcsIDg0LCAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTMsIDg0LCAKLSAgICAxNiwgMjMzLCA1NCwgMjUzLCAxMTMsIDIyNSwgOTEsIDgxLCAyNTEsIDE1OSwgODEsIDI0NSwgMTIwLCA4MSwgMjQ5LCAxNTcsIAotICAgIDgxLCAyNDMsIDIwMCwgMjE5LCA2OSwgODEsIDI0OSwgMTY0LCA4MSwgMjQzLCAyMzcsIDI0NywgNzIsIDgxLCAyMTYsIDI1MCwgCi0gICAgMjE5LCAyMzYsIDI0MCwgMTYwLCA4MSwgMjIwLCAxMTYsIDQsIDI1MSwgOTgsIDIzMSwgMjE3LCA4MSwgMjMxLCAyNDYsIAotICAgIDI0OSwgMTU3LCA4MSwgMjMxLCAyNDYsIDI0MywgMjAwLCAyMTksIDY5LCA4MSwgMjI5LCAyMiwgODEsIDI0MywgMjIzLCA0MywgCi0gICAgMjIyLCA3NywgMTE2LCA4MSwgMjQzLCAyMjMsIDQzLCAyMjIsIDc3LCAxMDksIDgxLCAyNDMsIDIyMywgNDMsIDIyMiwgNzcsIAotICAgIDE2NiwgODEsIDMwLCAyMjEsIDU3LCA4MSwgMjEsIDIxMiwgNzksIDgxLCAyMSwgMTE2LCA4MSwgMjEsIDEwOSwgODEsIDIxLCAKLSAgICAxNjYsIDgxLCAyMSwgMTYzLCA4MSwgMjEsIDE4MCwgODEsIDIxLCAxODksIDgxLCAyMSwgMTk4LCA4MSwgMjEsIDE5NSwgODEsIAotICAgIDIxLCAyMDAsIDgxLCAxLCA2MSwgODEsIDEsIDc0LCA4MSwgMSwgNzIsIDgxLCAxLCA3NSwgODEsIDEsIDY5LCA4MSwgMSwgCi0gICAgMjI3LCA5OSwgODEsIDEsIDIxNSwgMTgzLCA4MSwgMSwgMjQ1LCAxNjUsIDgxLCAxLCAyMDUsIDgxLCAxLCAyNTQsIDI0LCAKLSAgICA4MSwgMSwgMjUyLCAxMDcsIDgxLCAxLCAxOTMsIDgxLCAxLCAyMjQsIDIzMiwgODEsIDEsIDI0MywgMTEwLCA4MSwgMSwgCi0gICAgMTg4LCA4MSwgMSwgMjMzLCAxNTcsIDgxLCAxLCAyMjIsIDIwMiwgODEsIDEsIDIyMSwgMjQsIDgxLCAxLCAyMTgsIDUyLCAKLSAgICA4MSwgMSwgMjQ4LCAxNjQsIDgxLCAxLCAyNTAsIDkyLCA4MSwgMSwgMjM1LCAxMzksIDgxLCAxLCAxODYsIDgxLCAxLCAyMDMsIAotICAgIDgxLCAxLCAyMTQsIDQ5LCA4MSwgMSwgMjQ0LCAxNjQsIDgxLCAxLCAxODEsIDgxLCAxLCAyMzQsIDEzOCwgODEsIDEsIDIxNiwgCi0gICAgMTQxLCA4MSwgMSwgMjEyLCAxMDksIDgxLCAxLCAyNDIsIDI3LCA4MSwgMSwgMjEyLCA5LCA4MSwgMSwgMjMzLCAyNSwgODEsIAotICAgIDEsIDIxMiwgNjIsIDgxLCAxLCAyNTAsIDQ3LCA4MSwgMSwgMjE2LCAyNTAsIDE4NCwgMzAsIDUyLCA4MSwgMSwgMjE2LCAKLSAgICAyNTAsIDc0LCA4MSwgMSwgMjE2LCAyNTAsIDcyLCA4MSwgMSwgMjE2LCAyNTAsIDc1LCA4MSwgMSwgMjE2LCAyNTAsIDY5LCAKLSAgICA4MSwgMSwgMjE2LCAyNTAsIDIyNywgOTksIDgxLCAxLCAyMTYsIDI1MCwgMjE1LCAxODMsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMjU0LCAyNCwgODEsIDEsIDIxNiwgMjUwLCAyNTIsIDEwNywgODEsIDEsIDIxNiwgMjUwLCAxOTMsIDgxLCAxLCAyMTYsIAotICAgIDI1MCwgMjI0LCAyMzIsIDgxLCAxLCAyMTYsIDI1MCwgMjQzLCAxMTAsIDgxLCAxLCAyMTYsIDI1MCwgMTg4LCA4MSwgMSwgCi0gICAgMjE2LCAyNTAsIDIxOCwgNTIsIDgxLCAxLCAyMTYsIDI1MCwgMjQ4LCAxNjQsIDgxLCAxLCAyMTYsIDI1MCwgMjUwLCA5MiwgCi0gICAgODEsIDEsIDIxNiwgMjUwLCAyMzUsIDEzOSwgODEsIDEsIDIxNiwgMjUwLCAyMTYsIDE0MSwgODEsIDEsIDIxNiwgMjUwLCAKLSAgICAxODYsIDgxLCAxLCAyMTYsIDI1MCwgMjE0LCA0OSwgODEsIDEsIDIxNiwgMjUwLCAxODEsIDgxLCAxLCAyMTYsIDI1MCwgCi0gICAgMjQzLCAxMDcsIDgxLCAxLCAyMTYsIDI1MCwgMjQyLCAyNywgODEsIDEsIDIxNiwgMjUwLCAyMzUsIDEwOSwgODEsIDEsIAotICAgIDIxNiwgMjUwLCAyMjksIDYyLCA4MSwgMSwgMjE2LCAyNTAsIDI0NSwgMjQ5LCA4MSwgMSwgMjIwLCAxMTYsIDc0LCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDcyLCA4MSwgMSwgMjIwLCAxMTYsIDIzNSwgMTUwLCA4MSwgMSwgMjIwLCAxMTYsIDIxNSwgMTgzLCA4MSwgCi0gICAgMSwgMjIwLCAxMTYsIDY5LCA4MSwgMSwgMjIwLCAxMTYsIDI1NCwgMjQsIDgxLCAxLCAyMjAsIDExNiwgMTgxLCA4MSwgMSwgCi0gICAgMjIwLCAxMTYsIDI0MywgMTEwLCA4MSwgMSwgMjIwLCAxMTYsIDE1OSwgODEsIDEsIDIyMCwgMTE2LCAxOTMsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjIxLCAyNCwgODEsIDEsIDIyMCwgMTE2LCAyMTgsIDUyLCA4MSwgMSwgMjIwLCAxMTYsIDI0OCwgMTY0LCAKLSAgICA4MSwgMSwgMjIwLCAxMTYsIDIzNSwgMTM5LCA4MSwgMSwgMjIwLCAxMTYsIDI0NCwgMTY0LCA4MSwgMSwgMjIwLCAxMTYsIAotICAgIDI0MywgMTA3LCA4MSwgMSwgMjIwLCAxMTYsIDI0MiwgMjcsIDgxLCAxLCAyMjAsIDExNiwgMjE2LCAxNDEsIDgxLCAxLCAKLSAgICAyMjAsIDExNiwgMjEyLCAxMDksIDgxLCAxLCAyMjAsIDExNiwgMjI0LCA3NCwgODEsIDEsIDIyMCwgMTE2LCAyNTAsIDkyLCAKLSAgICA4MSwgMSwgMjIwLCAxMTYsIDIxMiwgNzUsIDgxLCAxLCAyMzEsIDI0NiwgNzIsIDgxLCAxLCAyMzEsIDI0NiwgMTgxLCA4MSwgCi0gICAgMSwgMjMxLCAyNDYsIDIwMywgODEsIDEsIDIzMSwgMjQ2LCAyNDQsIDE2NCwgODEsIDEsIDIzMSwgMjQ2LCAyMTIsIDc1LCAKLSAgICA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjUzLCAyNDMsIDExNiwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxNCwgCi0gICAgMTI5LCAxMTYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDEzMSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxNSwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjM1LCAxOTEsIDIxNSwgMTkzLCA4MSwgMSwgMjU0LCA3MSwgCi0gICAgMjQzLCA5MiwgMjUyLCA3NCwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDEzMywgMjUyLCA3NCwgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDYxLCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgNzIsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAxODEsIAotICAgIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjksIDE1OSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1MCwgMjE5LCA4MSwgCi0gICAgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMjE2LCAxMTUsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDEwNSwgODEsIDEsIAotICAgIDI1NCwgNzEsIDI0MywgOTIsIDI0OCwgODYsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMjgsIDE5OCwgODEsIDEsIDI1NCwgCi0gICAgNzEsIDI0MywgOTIsIDIxOCwgNTIsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDE2NCwgODEsIDEsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDE5MywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIyNiwgMjMsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAKLSAgICAyMTksIDE1NywgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDIxMiwgNzUsIDgxLCAxLCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIAotICAgIDEwOSwgODEsIDEsIDI1NCwgNzEsIDI0MywgOTIsIDI1NCwgMTE0LCA4MSwgMSwgMjE2LCAyNTAsIDI1NCwgNzEsIDI0MywgCi0gICAgOTIsIDIxOCwgNTIsIDgxLCAxLCAyMTYsIDI1MCwgMjU0LCA3MSwgMjQzLCA5MiwgMjEyLCA3NSwgODEsIDEsIDIzMSwgMjQ2LCAKLSAgICAyNTQsIDcxLCAyNDMsIDkyLCAyNDIsIDIyNSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMjksIDE1OSwgCi0gICAgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNTAsIDIxOSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAKLSAgICAyNDMsIDkyLCAyMzUsIDExNSwgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMTYsIDExNSwgODEsIDEsIAotICAgIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyNDgsIDcwLCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIAotICAgIDIxOCwgNTIsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ3LCAyMzIsIDgxLCAxLCAyMzEsIDI0NiwgCi0gICAgMjU0LCA3MSwgMjQzLCA5MiwgMjE5LCAxNTcsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjQ5LCAxNSwgCi0gICAgODEsIDEsIDIzMSwgMjQ2LCAyNTQsIDcxLCAyNDMsIDkyLCAyMTIsIDc1LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIAotICAgIDI0MywgOTIsIDIxMiwgMTA5LCA4MSwgMSwgMjU0LCA3MSwgMjQzLCA5MiwgMTUxLCA2OSwgODEsIDEsIDI1NCwgNzEsIDI0MywgCi0gICAgOTIsIDE1MSwgMTg2LCA4MSwgMSwgMjMxLCAyNDYsIDI1NCwgNzEsIDI0MywgOTIsIDI1MSwgMTk1LCA4MSwgMSwgMjU0LCAKLSAgICA3MSwgMjQzLCA5MiwgMjQ4LCAxNTQsIDgxLCAxLCAyMzEsIDI0NiwgMjU0LCA3MSwgMjQzLCA5MiwgMjMzLCAyNSwgMTgsIAotICAgIDE5LCAyMjYsIDIzMywgMTgsIDE5LCAyNTMsIDgzLCAxOCwgMTksIDI1NCwgMTg4LCAxOCwgMTksIDIxNCwgOSwgMTgsIDE5LCAKLSAgICAyMjUsIDEwMSwgMTgsIDE5LCAyMjYsIDEwMywgMTgsIDE5LCAyMjQsIDI0OSwgMTgsIDE5LCAyMTcsIDIzOCwgMTgsIDE5LCAKLSAgICAyMzQsIDE5NSwgMTgsIDE5LCAyMzMsIDIwMSwgMTgsIDE5LCAyMzEsIDE5NiwgMTgsIDE5LCAyMjgsIDE0OCwgMTgsIDE5LCAKLSAgICAyMzAsIDMsIDE4LCAxOSwgMjMzLCA5MiwgMTgsIDE5LCAyMTksIDIwOSwgMTgsIDE5LCAyMjIsIDEyOSwgMTgsIDE5LCAyMjAsIAotICAgIDE1NiwgMTgsIDE5LCAyMjAsIDI0NiwgMTgsIDE5LCAyMjAsIDEyNywgMTgsIDE5LCAyMTIsIDIxMSwgMTgsIDE5LCAyMTMsIAotICAgIDQzLCAxOCwgMTksIDIyNCwgMjcsIDE4LCAxOSwgMjI4LCAyOCwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI4LCAxOCwgMTksIAotICAgIDIyOCwgMjcsIDE4LCAxOSwgMjI3LCA4MiwgMjI4LCAyNywgMTgsIDE5LCAyMjgsIDI2LCAxOCwgMTksIDIyNywgODIsIDIyOCwgCi0gICAgMjYsIDE4LCAxOSwgMjI4LCAyNSwgMTgsIDE5LCAyMjcsIDgyLCAyMjgsIDI1LCAxOCwgMTksIDIyMywgMTcsIDE4LCAxOSwgCi0gICAgMjIzLCAxNiwgMTgsIDE5LCAyMjMsIDE1LCAxOCwgMTksIDIyMywgMTQsIDE4LCAxOSwgMjIzLCAxMywgMTgsIDE5LCAyMjMsIAotICAgIDIxLCAxOCwgMTksIDIyNywgODIsIDIyNiwgMjI5LCAxOCwgMTksIDIyNywgODIsIDIxOCwgOTksIDE4LCAxOSwgMjI3LCA4MiwgCi0gICAgMjM1LCAyNywgMTgsIDE5LCAyMjcsIDgyLCAyNTAsIDI1MiwgMTgsIDE5LCAyMjcsIDgyLCAxODMsIDE4LCAxOSwgMjI3LCAKLSAgICA4MiwgMjA0LCAxOCwgMTksIDIyNywgODIsIDE5NywgMTgsIDE5LCAyMjcsIDgyLCAyMjEsIDI2LCAxOCwgMTksIDI0NSwgCi0gICAgMTc1LCAyMTQsIDgyLCAxOCwgMTksIDIxMywgMjQ4LCAyMTQsIDgyLCAxOCwgMTksIDQwLCAzLCAyMjMsIDEzMCwgMTgsIDE5LCAKLSAgICA0MCwgMjI0LCA0OCwgMjQ3LCA3NCwgMTgsIDE5LCAyMjQsIDExMiwgMjIzLCAxOCwgMTgsIDE5LCAxNDgsIDIzMiwgMTgwLCAKLSAgICAxOCwgMTksIDE0OCwgMjMzLCAxNTYsIDE4LCAxOSwgMjE3LCA4MCwgMTgsIDE5LCAyMTcsIDgyLCAxOCwgMTksIDIxNiwgOTcsIAotICAgIDE4LCAxOSwgMjE2LCA5OSwgMTgsIDE5LCAyMTYsIDEwNCwgMTgsIDE5LCAyMTcsIDIsIDE4LCAxOSwgMjE3LCA0LCAxOCwgCi0gICAgMTksIDIyMiwgMTI3LCAyMjAsIDEzMiwgMTgsIDE5LCAyMjIsIDEyNywgMjIwLCAxODEsIDE4LCAxOSwgMjIyLCAxMjcsIAotICAgIDI0MSwgMzksIDE4LCAxOSwgNjYsIDI0MiwgNTQsIDE4LCAxOSwgNjYsIDI0OCwgMywgMjQzLCAzMSwgMTgsIDE5LCA2NiwgCi0gICAgMjQzLCAxMDcsIDE4LCAxOSwgNjYsIDI0MiwgNTksIDE4LCAxOSwgMjIyLCAxMjcsIDIzNSwgMzcsIDE4LCAxOSwgNjYsIAotICAgIDIzNSwgMzUsIDE4LCAxOSwgMjUxLCAyNDQsIDI0OCwgMywgMTUwLCAxOCwgMTksIDI1MSwgMjQ0LCAyNDgsIDMsIDE0OSwgCi0gICAgMTgsIDE5LCA2NiwgMjQ3LCAyNTQsIDE5NywgMjA5LCAyMTQsIDEwMywgMjMzLCAzNCwgMjA5LCAxLCAxODEsIDIwOSwgMSwgCi0gICAgMjM0LCAxMzgsIDIwOSwgMSwgMjQzLCAxMTAsIDIwOSwgMSwgMjQyLCAyMjUsIDIwOSwgMSwgMjI5LCAxNTksIDIwOSwgMSwgCi0gICAgMjUwLCAyMTksIDIwOSwgMSwgMjUwLCA5MiwgMjA5LCAxLCAyMzUsIDEzOSwgMjA5LCAxLCAyMzUsIDExNSwgMjA5LCAxLCAKLSAgICAyMTMsIDYwLCAyMDksIDEsIDIxOCwgNTIsIDIwOSwgMSwgMjE3LCAxNjEsIDIwOSwgMSwgMjQ4LCAxNjQsIDIwOSwgMSwgCi0gICAgMjQ3LCAyMzIsIDIwOSwgMSwgMjA1LCAyMDksIDEsIDE5MywgMjA5LCAxLCAyMjYsIDIzLCAyMDksIDEsIDI1MiwgMTA3LCAKLSAgICAyMDksIDEsIDI1MSwgMTk1LCAyMDksIDEsIDE4OCwgMjA5LCAxLCAxODYsIDIwOSwgMSwgMjAzLCAyMDksIDEsIDIzMywgCi0gICAgMTU3LCAyMDksIDEsIDIxNCwgNDksIDIwOSwgMSwgMjIxLCAyNCwgMjA5LCAxLCAyMTksIDE1NywgMjA5LCAxLCAyMjIsIAotICAgIDIwMiwgMjA5LCAxLCAxNTksIDIwOSwgMzAsIDUsIDYxLCAyMDksIDMwLCA1LCA3MiwgMjA5LCAzMCwgNSwgNjksIDIwOSwgCi0gICAgMzAsIDUsIDI0NSwgMTY1LCAyMDksIDMwLCA1LCAyNTQsIDEwOCwgMjA5LCAzMCwgNSwgMjI3LCA0OSwgMjA5LCAzMCwgNSwgCi0gICAgMjUzLCAxMDgsIDIwOSwgMzAsIDUsIDc0LCAyMDksIDMwLCA1LCA3NSwgMjA5LCAyMTksIDE4LCAxLCAxODYsIDIwOSwgMjE5LCAKLSAgICAxOCwgMSwgMjAzLCAyMDksIDIxOSwgMTgsIDEsIDIxNCwgNDksIDIwOSwgMywgMSwgMTgxLCAyMDksIDMsIDEsIDIyOSwgCi0gICAgMTU5LCAyMDksIDMsIDEsIDI1MywgMjQyLCAyMDksIDMsIDEsIDIxOCwgNTIsIDIwOSwgMywgMSwgMjA1LCAyMDksIDMsIDEsIAotICAgIDE5MywgMjA5LCAzLCAxLCAxODgsIDIwOSwgMywgMSwgMjAzLCAyMDksIDMsIDEsIDIzMywgMTU3LCAyMDksIDUsIDIzMCwgCi0gICAgMTU5LCAyMDksIDUsIDIzNCwgMTc3LCAyMDksIDUsIDIyMiwgMjAxLCAyMDksIDUsIDIzMiwgMTgwLCAyMDksIDI0NCwgMjU0LCAKLSAgICA3NywgMjA5LCAyMjQsIDE1OCwgNzcsIDIwOSwgMjEsIDIxMiwgNzksIDIwOSwgMjEsIDExNiwgMjA5LCAyMSwgMTA5LCAyMDksIAotICAgIDIxLCAxNjYsIDIwOSwgMjEsIDE2MywgMjA5LCAyMSwgMTgwLCAyMDksIDIxLCAxODksIDIwOSwgMjEsIDE5OCwgMjA5LCAyMSwgCi0gICAgMTk1LCAyMDksIDIxLCAyMDAsIDM4LCAyMzMsIDgzLCAxLCAxODEsIDM4LCAyMzMsIDgzLCAxLCAyMTMsIDE1MywgMzgsIAotICAgIDIzMywgODMsIDEsIDIyOSwgMTU5LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAxNDEsIDM4LCAyMzMsIDgzLCAxLCAyMjIsIDIwMiwgCi0gICAgMzgsIDIzMywgODMsIDEsIDE4NiwgMzgsIDIzMywgODMsIDEsIDIxOCwgNTIsIDM4LCAyMzMsIDgzLCAxLCAyMTcsIDE2MSwgCi0gICAgMzgsIDIzMywgODMsIDEsIDIzMywgMTU3LCAzOCwgMjMzLCA4MywgMSwgMTkzLCAzOCwgMjMzLCA4MywgMSwgMjI2LCAyMywgCi0gICAgMzgsIDIzMywgODMsIDEsIDE4OCwgMzgsIDIzMywgODMsIDEsIDI0NCwgMTY0LCAzOCwgMjMzLCA4MywgMSwgMjE1LCAxLCAKLSAgICAzOCwgMjMzLCA4MywgMSwgMTU5LCAzOCwgMjMzLCA4MywgMSwgMjI0LCAyMzIsIDM4LCAyMzMsIDgzLCAxLCAyMzQsIDEzOCwgCi0gICAgMzgsIDIzMywgODMsIDEsIDIxNiwgMTMzLCAzOCwgMjMzLCA4MywgMSwgMjA1LCAzOCwgMjMzLCA4MywgMSwgNjEsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCA3MiwgMzgsIDIzMywgODMsIDEsIDI0NSwgMTY1LCAzOCwgMjMzLCA4MywgMSwgMjQ1LCAxNTQsIDM4LCAKLSAgICAyMzMsIDgzLCAxLCA2OSwgMzgsIDIzMywgODMsIDEsIDIyNywgNDksIDM4LCAyMzMsIDgzLCAxLCA3NSwgMzgsIDIzMywgODMsIAotICAgIDEsIDIxNSwgMTgzLCAzOCwgMjMzLCA4MywgMSwgNzQsIDM4LCAyMzMsIDgzLCAxLCAyNTMsIDEwNiwgMzgsIDIzMywgODMsIAotICAgIDEsIDI1NCwgMTA4LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzksIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzOCwgMzgsIDIzMywgCi0gICAgODMsIDEsIDIxNiwgMjM3LCAzOCwgMjMzLCA4MywgMSwgMjE2LCAyMzYsIDM4LCAyMzMsIDgzLCAxLCAyMTYsIDIzNSwgMTU2LCAKLSAgICAzOCwgMTY1LCAxLCAxMjQsIDIyNCwgMjMyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjI0LCAyMzIsIDE1NiwgMzgsIDE2NSwgCi0gICAgMSwgMTI0LCAxODEsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTMsIDE1MywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIyOSwgCi0gICAgMTU5LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTgxLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjEzLCAxNTMsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMjksIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNiwgMTQxLCAxNTYsIDM4LCAxNjUsIDEsIAotICAgIDEyNCwgMjIyLCAyMDIsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAxODYsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTYsIDE0MSwgCi0gICAgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIyMiwgMjAyLCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMTg2LCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMjE4LCA1MiwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNywgMTYxLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjA1LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE4LCA1MiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDIxNywgMTYxLCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDExNSwgMjA1LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMTkzLCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgCi0gICAgMjI2LCAyMywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE4OCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDE5MywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCAxMTUsIDIyNiwgMjMsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxODgsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAKLSAgICAyNDQsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIxNSwgMSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDIzMywgMTU3LCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjQ0LCAxNjQsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAyMTUsIDEsIDE1NiwgMzgsIAotICAgIDE2NSwgMSwgMTE1LCAyMzMsIDE1NywgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIDE1OSwgMTU2LCAzOCwgMTY1LCAxLCAxMjQsIAotICAgIDI0OCwgMTY0LCAxNTYsIDM4LCAxNjUsIDEsIDEyNCwgMjUyLCAxMDcsIDE1NiwgMzgsIDE2NSwgMSwgMTE1LCAxNTksIDE1NiwgCi0gICAgMzgsIDE2NSwgMSwgMTE1LCAyNDgsIDE2NCwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIDI1MiwgMTA3LCAxNTYsIDM4LCAxNjUsIAotICAgIDEsIDEyNCwgMjMzLCAyMDYsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTMsIDEyNiwgMTU2LCAzOCwgMTY1LCAxLCAxMTUsIAotICAgIDIzMywgMjA2LCAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjEzLCAxMjYsIDE1NiwgMzgsIDE2NSwgMSwgMTI0LCAyMTksIDI2LCAKLSAgICAxNTYsIDM4LCAxNjUsIDEsIDExNSwgMjE5LCAyNiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMzAsIDIyMCwgMTYzLCAxNTYsIAotICAgIDM4LCAxNjUsIDMwLCA1LCAyNTQsIDIzMiwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjM2LCAyOCwgMTU2LCAzOCwgMTY1LCAzMCwgCi0gICAgNSwgNjksIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgOTIsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDc0LCAxNTYsIDM4LCAKLSAgICAxNjUsIDMwLCA1LCAyNTQsIDE0OCwgMTU2LCAzOCwgMTY1LCAzMCwgNSwgNzUsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIyNywgCi0gICAgMTIwLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMTUsIDE4MywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjUzLCA4MywgMTU2LCAKLSAgICAzOCwgMTY1LCAzMCwgNSwgMjU0LCAxODgsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIxNSwgODUsIDE1NiwgMzgsIDE2NSwgMzAsIAotICAgIDUsIDIyNiwgMjMzLCAxNTYsIDM4LCAxNjUsIDMwLCA1LCAyMjcsIDExNywgMTU2LCAzOCwgMTY1LCAzMCwgNSwgMjE1LCAKLSAgICAxODAsIDE1NiwgMzgsIDE2NSwgMzAsIDUsIDIzNSwgMTUwLCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAyMTUsIDc5LCAxNTYsIAotICAgIDM4LCAxNjUsIDEsIDQwLCAyMjksIDE2MSwgMTU2LCAzOCwgMTY1LCAxLCA0MCwgMjA0LCAxNTYsIDM4LCAxNjUsIDEsIDQwLCAKLSAgICAxODMsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDIzNSwgMjcsIDE1NiwgMzgsIDE2NSwgMSwgNDAsIDI0OSwgMywgMTU2LCAzOCwgCi0gICAgMTY1LCAxLCA0MCwgMjUzLCA3NCwgMTU2LCAzOCwgMTY1LCAxNjAsIDIzMSwgMjIxLCAxNTYsIDM4LCAxNjUsIDE2MCwgMjMxLCAKLSAgICAyMjAsIDE1NiwgMzgsIDE2NSwgMjEsIDIxMiwgNzksIDE1NiwgMzgsIDE2NSwgMjEsIDExNiwgMTU2LCAzOCwgMTY1LCAyMSwgCi0gICAgMTA5LCAxNTYsIDM4LCAxNjUsIDIxLCAxNjYsIDE1NiwgMzgsIDE2NSwgMjEsIDE2MywgMTU2LCAzOCwgMTY1LCAyMSwgMTgwLCAKLSAgICAxNTYsIDM4LCAxNjUsIDIxLCAxODksIDE1NiwgMzgsIDE2NSwgMjEsIDE5OCwgMTU2LCAzOCwgMTY1LCAyMSwgMTk1LCAxNTYsIAotICAgIDM4LCAxNjUsIDIxLCAyMDAsIDE1NiwgMzgsIDE2NSwgODgsIDIxLCAxMTYsIDE1NiwgMzgsIDE2NSwgNSwgMjMzLCAxNDMsIAotICAgIDE1NiwgMzgsIDE2NSwgNSwgMjMzLCAxNDIsIDg0LCAxNiwgMjI2LCAxMDksIDg0LCAxNiwgMjMwLCAxNDIsIDIzNCwgMzQsIAotICAgIDg0LCAxNiwgMjI1LCAyMDQsIDIzNCwgMzQsIDg0LCAxNiwgMjUxLCAyMjYsIDIzNCwgMzQsIDg0LCAxNiwgMjUxLCAzMywgCi0gICAgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDk2LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTAsIDIzNCwgMzQsIDg0LCAxNiwgMjI1LCAKLSAgICA4OCwgMjM0LCAzNCwgODQsIDE2LCAyMjUsIDk0LCAyMzQsIDM0LCA4NCwgMTYsIDIyNSwgOTIsIDIzNCwgMzQsIDg0LCAxNiwgCi0gICAgMjQ4LCAxMTgsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTQsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTMsIDIzNCwgMzQsIAotICAgIDg0LCAxNiwgMjQ4LCAxMTYsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTUsIDIzNCwgMzQsIDg0LCAxNiwgMjQ4LCAxMTIsIAotICAgIDIzNCwgMzQsIDg0LCAxNiwgMjE2LCA1MSwgODQsIDE2LCAyMzAsIDE0MiwgMjIzLCAxMDYsIDg0LCAxNiwgMjI1LCAyMDQsIAotICAgIDIyMywgMTA2LCA4NCwgMTYsIDI1MSwgMjI2LCAyMjMsIDEwNiwgODQsIDE2LCAyNTEsIDMzLCAyMjMsIDEwNiwgODQsIDE2LCAKLSAgICAyMjUsIDk2LCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDkwLCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDg4LCAyMjMsIDEwNiwgCi0gICAgODQsIDE2LCAyMjUsIDk0LCAyMjMsIDEwNiwgODQsIDE2LCAyMjUsIDkyLCAyMjMsIDEwNiwgODQsIDE2LCAyNDgsIDExOCwgCi0gICAgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTQsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTEzLCAyMjMsIDEwNiwgODQsIDE2LCAKLSAgICAyNDgsIDExNiwgMjIzLCAxMDYsIDg0LCAxNiwgMjQ4LCAxMTUsIDIyMywgMTA2LCA4NCwgMTYsIDI0OCwgMTEyLCAyMjMsIAotICAgIDEwNiwgMjUxLCA1MCwgMSwgMTgxLCAyNTEsIDUwLCAxLCAyNDMsIDExMCwgMjUxLCA1MCwgMSwgMjI5LCAxNTksIDI1MSwgCi0gICAgNTAsIDEsIDIyOSwgMTA4LCAyNTEsIDUwLCAxLCAxOTMsIDI1MSwgNTAsIDEsIDI1MiwgMTA3LCAyNTEsIDUwLCAxLCAxODgsIAotICAgIDI1MSwgNTAsIDEsIDIzMCwgMTc1LCAyNTEsIDUwLCAxLCAyMTgsIDUyLCAyNTEsIDUwLCAxLCAyNDgsIDE2NCwgMjUxLCA1MCwgCi0gICAgMSwgMjA1LCAyNTEsIDUwLCAxLCAyMjgsIDE0NywgMjUxLCA1MCwgMSwgMjUwLCAyMTksIDI1MSwgNTAsIDEsIDIzNSwgMTM5LCAKLSAgICAyNTEsIDUwLCAxLCAyMjgsIDIzLCAyNTEsIDUwLCAxLCAyMjgsIDE5LCAyNTEsIDUwLCAxLCAxODYsIDI1MSwgNTAsIDEsIAotICAgIDIwMywgMjUxLCA1MCwgMSwgMjMzLCAxNTcsIDI1MSwgNTAsIDEsIDIxNSwgMSwgMjUxLCA1MCwgMSwgMjIyLCAyMDIsIDI1MSwgCi0gICAgNTAsIDEsIDYxLCAyNTEsIDUwLCAxLCAxNTksIDI1MSwgNTAsIDMwLCA1LCA3MiwgMjUxLCA1MCwgMzAsIDUsIDY5LCAyNTEsIAotICAgIDUwLCAzMCwgNSwgNzQsIDI1MSwgNTAsIDMwLCA1LCA3NSwgMjUxLCA1MCwgMzAsIDUsIDI1NCwgMTQ4LCAyNTEsIDUwLCAKLSAgICAyMjYsIDE4NywgMjUxLCA1MCwgMjQ1LCAxMDEsIDY1LCAyMjIsIDkxLCAzOCwgODgsIDEsIDEyNCwgMTgxLCAzOCwgODgsIDEsIAotICAgIDEyNCwgMjM0LCAxMzgsIDM4LCA4OCwgMSwgMTI0LCAyMzMsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDE4MSwgMzgsIDg4LCAxLCAKLSAgICAxMTUsIDIzMywgMTkzLCAzOCwgODgsIDEsIDExNSwgMjM0LCAxMzgsIDM4LCA4OCwgMSwgMjI5LCAxNTksIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyNTAsIDIxOSwgMzgsIDg4LCAxLCAxMjQsIDI1MCwgOTIsIDM4LCA4OCwgMSwgMTE1LCAyNTAsIDIxOSwgMzgsIDg4LCAKLSAgICAxLCAxMTUsIDIyMiwgMjAyLCAzOCwgODgsIDEsIDExNSwgMjUwLCA5MiwgMzgsIDg4LCAxLCAyMjgsIDIzLCAzOCwgODgsIDEsIAotICAgIDIyNCwgMzIsIDM4LCA4OCwgMSwgMTI0LCAyMjQsIDMwLCAzOCwgODgsIDEsIDI0OCwgMTY0LCAzOCwgODgsIDEsIDExNSwgCi0gICAgMjI0LCAzMCwgMzgsIDg4LCAxLCAyMjQsIDQxLCAzOCwgODgsIDEsIDEyNCwgMjE4LCA1MiwgMzgsIDg4LCAxLCAxMjQsIAotICAgIDIxNywgMTYxLCAzOCwgODgsIDEsIDExNSwgMjE4LCA1MiwgMzgsIDg4LCAxLCAxMTUsIDIxNywgMTYxLCAzOCwgODgsIDEsIAotICAgIDIwNSwgMzgsIDg4LCAxLCAyNTIsIDEwNywgMzgsIDg4LCAxLCAxMjQsIDE5MywgMzgsIDg4LCAxLCAxMjQsIDIyNiwgMjMsIAotICAgIDM4LCA4OCwgMSwgMTI0LCAyNDQsIDE2NCwgMzgsIDg4LCAxLCAxMTUsIDE5MywgMzgsIDg4LCAxLCAxMTUsIDI0NCwgMTY0LCAKLSAgICAzOCwgODgsIDEsIDExNSwgMjI2LCAyMywgMzgsIDg4LCAxLCAxODgsIDM4LCA4OCwgMSwgMTE1LCAxODYsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAxODYsIDM4LCA4OCwgMSwgMjAzLCAzOCwgODgsIDEsIDIyMywgNDgsIDM4LCA4OCwgMSwgMjMzLCAxNTcsIDM4LCAKLSAgICA4OCwgMSwgMjMyLCAxNTEsIDM4LCA4OCwgMSwgMjE0LCA0OSwgMzgsIDg4LCAxLCAxMjQsIDIyMSwgMjQsIDM4LCA4OCwgMSwgCi0gICAgMTI0LCAyMTksIDE1NywgMzgsIDg4LCAxLCAxMjQsIDIyMiwgMjAyLCAzOCwgODgsIDEsIDEyNCwgMTU5LCAzOCwgODgsIDEsIAotICAgIDIzMiwgMjEzLCAzOCwgODgsIDEsIDYxLCAzOCwgODgsIDEsIDExNSwgMTU5LCAzOCwgODgsIDEsIDcyLCAzOCwgODgsIDEsIAotICAgIDIzNiwgMjgsIDM4LCA4OCwgMSwgNjksIDM4LCA4OCwgMSwgMjE1LCA5MiwgMzgsIDg4LCAxLCAyNDUsIDE2NSwgMzgsIDg4LCAKLSAgICAxLCAyMjcsIDQ5LCAzOCwgODgsIDEsIDIzMywgMTQzLCAzOCwgODgsIDEsIDI0MiwgMTA5LCAyMjIsIDIwMiwgMzgsIDg4LCAKLSAgICAyNDksIDEzMywgNSwgMTM4LCAyMDMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDEzOCwgMjMzLCAxNTcsIDM4LCA4OCwgMjQ5LCAKLSAgICAxMzMsIDUsIDIzMywgMTU4LCAyMTgsIDksIDIzMywgMTMzLCAzOCwgODgsIDUsIDIzMiwgOSwgMjM0LCAyMzYsIDIzMywgCi0gICAgMTMzLCAzOCwgODgsIDI0OSwgMTMzLCA1LCA0MCwgMjI5LCAxNTksIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDExNSwgMTkzLCAKLSAgICAzOCwgODgsIDI0OSwgMTMzLCA1LCAxMjQsIDIyNCwgMzEsIDE2NywgMTE1LCAxOTMsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIAotICAgIDE4OCwgMzgsIDg4LCAyNDksIDEzMywgNSwgMjUyLCAxMDcsIDM4LCA4OCwgMjQ5LCAxMzMsIDUsIDIyMiwgMjAyLCAzOCwgCi0gICAgODgsIDUsIDIyMiwgMTgxLCAzOCwgODgsIDMwLCA1LCA2MSwgMzgsIDg4LCAzMCwgNSwgMjMyLCA5LCAyMjIsIDE0MiwgMzgsIAotICAgIDg4LCAzMCwgNSwgMjU0LCAyMzIsIDM4LCA4OCwgMzAsIDUsIDIxOCwgMTUsIDI1NCwgMjMyLCAzOCwgODgsIDMwLCA1LCA3MiwgCi0gICAgMzgsIDg4LCAzMCwgNSwgMjM2LCAyOCwgMzgsIDg4LCAzMCwgNSwgMjE1LCAxODMsIDM4LCA4OCwgMzAsIDUsIDIxNSwgOTEsIAotICAgIDM4LCA4OCwgMzAsIDUsIDY5LCAzOCwgODgsIDMwLCA1LCAyMTUsIDkyLCAzOCwgODgsIDMwLCA1LCA3NSwgMzgsIDg4LCAzMCwgCi0gICAgNSwgMjI3LCAxMjEsIDU1LCAzOCwgODgsIDMwLCA1LCAyMjYsIDIzMywgMzgsIDg4LCAzMCwgNSwgNzQsIDM4LCA4OCwgMzAsIAotICAgIDUsIDI1NCwgMTQ4LCAzOCwgODgsIDMwLCA1LCAyMjcsIDQ5LCAzOCwgODgsIDMwLCA1LCAyNTQsIDEwOCwgMzgsIDg4LCAzMCwgCi0gICAgNSwgODgsIDI1NCwgMTA4LCAzOCwgODgsIDMwLCA1LCAyMjcsIDEyMSwgNDksIDM4LCA4OCwgNSwgMjMyLCA5LCAyMzQsIAotICAgIDIzNSwgMzgsIDg4LCA1LCAyMTYsIDI0MCwgMzgsIDg4LCA1LCAyMTYsIDIzOSwgMzgsIDg4LCA1LCAyMzQsIDEwNiwgMjE2LCAKLSAgICAyMzgsIDM4LCA4OCwgNSwgMjM0LCAxMDYsIDIxNiwgMjM3LCAzOCwgODgsIDUsIDIzNCwgMTA2LCAyMTYsIDIzNiwgMzgsIAotICAgIDg4LCA1LCAyMjQsIDc3LCAyNDIsIDI2LCAzOCwgODgsIDUsIDIzMiwgOSwgMjIyLCAxNjgsIDM4LCA4OCwgNSwgMjM0LCAKLSAgICAxMDUsIDIzNCwgMjIwLCAzOCwgODgsIDM3LCAyNDksIDU1LCAyNDcsIDc0LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAyMTIsIAotICAgIDc5LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxMTYsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDEwOSwgMzgsIDg4LCAyNDEsIDMzLCAKLSAgICAyMSwgMTY2LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxNjMsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE4MCwgMzgsIDg4LCAyNDEsIAotICAgIDMzLCAyMSwgMTg5LCAzOCwgODgsIDI0MSwgMzMsIDIxLCAxOTgsIDM4LCA4OCwgMjQxLCAzMywgMjEsIDE5NSwgMzgsIDg4LCAKLSAgICAyNDEsIDMzLCAyMSwgMjAwLCAzOCwgODgsIDg4LCAyMSwgMjEyLCA3OSwgMzgsIDg4LCA4OCwgMjEsIDExNiwgMzgsIDg4LCAKLSAgICA4OCwgMjEsIDEwOSwgMzgsIDg4LCA4OCwgMjEsIDE2NiwgMzgsIDg4LCA4OCwgMjEsIDE2MywgMzgsIDg4LCA4OCwgMjEsIAotICAgIDE4MCwgMzgsIDg4LCA4OCwgMjEsIDE4OSwgMzgsIDg4LCA4OCwgMjEsIDE5OCwgMzgsIDg4LCA4OCwgMjEsIDE5NSwgMzgsIAotICAgIDg4LCA4OCwgMjEsIDIwMCwgMzgsIDg4LCA1LCAyMTMsIDIzNCwgMzgsIDg4LCA1LCAyMTMsIDIzMywgMzgsIDg4LCA1LCAKLSAgICAyMjIsIDEzMywgMzgsIDg4LCA1LCAyMzQsIDE2NiwgMzgsIDg4LCA1LCAyNDAsIDIxOSwgMzgsIDg4LCA1LCAyNDcsIDg4LCAKLSAgICAzOCwgODgsIDUsIDIyMywgMjAyLCAyMjMsIDg5LCAyMjQsIDQxLCAzOCwgODgsIDUsIDIzMiwgOSwgMjEzLCA2MSwgMzgsIAotICAgIDg4LCA1LCAyMzUsIDEwLCAzOCwgODgsIDUsIDIzNSwgOSwgMzgsIDg4LCA1LCAyMjIsIDEzOSwgMzgsIDg4LCA1LCAyMjIsIAotICAgIDEzOCwgMzgsIDg4LCA1LCAyNDEsIDI0OCwgMzgsIDg4LCA1LCAyNTAsIDIxNiwgOTksIDUsIDIxNSwgMTcwLCAyMjMsIDE4MywgCi0gICAgOTksIDUsIDIxNSwgMTcwLCAyNTAsIDE4OSwgOTksIDUsIDI1MCwgMTIwLCA5OSwgNSwgMjE4LCAyMTUsIDk5LCA1LCAyNTEsIAotICAgIDE1NiwgOTksIDEsIDI1NCwgOTIsIDk5LCAxLCAyNTQsIDkzLCAyMTcsIDIyMSwgOTksIDEsIDIzNiwgMjQsIDk5LCAxLCAKLSAgICAyMzYsIDI1LCAyMTcsIDIyMSwgOTksIDEsIDIxNSwgMTczLCA5OSwgMSwgMjE1LCAxNzQsIDIxNywgMjIxLCA5OSwgMSwgCi0gICAgMjI0LCA3NywgMjIzLCAyMjksIDk5LCAxLCAyMjQsIDc3LCAyMjMsIDIzMCwgMjE3LCAyMjEsIDk5LCAxLCAyMzMsIDE1OCwgCi0gICAgMjMzLCA0OCwgOTksIDEsIDIzMywgMTU4LCAyMzMsIDQ5LCAyMTcsIDIyMSwgOTksIDEsIDI0NSwgMTM2LCA5OSwgMSwgMjU0LCAKLSAgICAxMDYsIDk5LCAxLCAyMjcsIDc4LCA5OSwgMSwgMjI3LCA3OSwgMjE3LCAyMjEsIDk5LCAxLCAxODEsIDk5LCAxLCAyMzUsIAotICAgIDE3LCAyMzIsIDEyLCA5OSwgMSwgMjQzLCAxMTAsIDk5LCAxLCAyNDMsIDExMSwgMjQyLCAxMzcsIDk5LCAxLCAyMjksIDE1OSwgCi0gICAgOTksIDEsIDI1MCwgMjE5LCA5OSwgMSwgMjUwLCAyMjAsIDIzMywgMTQ2LCA5OSwgMSwgMjM1LCAxMzksIDk5LCAxLCAyMzUsIAotICAgIDE0MCwgMjM1LCAxMTksIDk5LCAxLCAyMjgsIDIzLCA5OSwgMSwgMjE4LCA1MywgMjMzLCA5OSwgOTksIDEsIDIxOCwgNTMsIAotICAgIDIzMCwgMTM3LCAyMzIsIDEyLCA5OSwgMSwgMjQ4LCAxNjUsIDIzMCwgMTM3LCAyNTQsIDU0LCA5OSwgMSwgMjQ4LCAxNjUsIAotICAgIDIzMCwgMTM3LCAyMzIsIDEyLCA5OSwgMSwgMjMwLCA0NiwgMjI0LCA0NCwgOTksIDEsIDIxOCwgNTIsIDk5LCAxLCAyMTgsIAotICAgIDUzLCAyMTcsIDI0MiwgOTksIDEsIDI0OCwgMTY0LCA5OSwgMSwgMjQ4LCAxNjUsIDIzMiwgMzAsIDk5LCAxLCAyMDUsIDk5LCAKLSAgICAxLCAxOTMsIDk5LCAxLCAyMjYsIDIxNCwgMjM0LCAyMzEsIDk5LCAxLCAyNTIsIDEwNywgOTksIDEsIDI1MiwgMTA4LCAyMzQsIAotICAgIDE3OCwgOTksIDEsIDE4OCwgOTksIDEsIDE4NiwgOTksIDEsIDIwMywgOTksIDEsIDIzMywgMTU3LCA5OSwgMSwgMjE0LCA0OSwgCi0gICAgOTksIDEsIDIyMiwgMjAzLCAyMjIsIDE4OSwgOTksIDEsIDIyMiwgMjAzLCAyMjIsIDE0OSwgOTksIDEsIDIyMiwgMjAyLCAKLSAgICA5OSwgMSwgMTU5LCA5OSwgNSwgMjIzLCAyMjIsIDk5LCAzMCwgNSwgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjE1LCAxNjksIAotICAgIDk5LCAzMCwgNSwgMjE1LCAxNzAsIDIyMiwgMTQ1LCA5OSwgMzAsIDUsIDIxOCwgMjQ4LCA5OSwgMzAsIDUsIDIxOCwgMjQ5LCAKLSAgICAyMzYsIDE2LCA5OSwgMzAsIDUsIDIyNCwgNzcsIDIyMywgMjI5LCA5OSwgMzAsIDUsIDIyNCwgNzcsIDIyMywgMjMwLCAyMTcsIAotICAgIDIyMSwgOTksIDMwLCA1LCAyMzMsIDE1OCwgMjMzLCA0OCwgOTksIDMwLCA1LCAyMzMsIDE1OCwgMjMzLCA0OSwgMjE3LCAKLSAgICAyMjEsIDk5LCAzMCwgNSwgMjE4LCAxNiwgOTksIDMwLCA1LCAyMTgsIDE3LCAyMjMsIDIyOSwgOTksIDMwLCA1LCAyMTgsIAotICAgIDE3LCAyMTcsIDIyMSwgOTksIDMwLCA1LCAyMTgsIDE3LCAyMjMsIDIzMCwgMjE3LCAyMjEsIDk5LCAzMCwgNSwgMjI2LCA1OSwgCi0gICAgOTksIDMwLCA1LCAyMjYsIDYwLCAyMTcsIDIyMSwgOTksIDI1NCwgMTU1LCAyNTQsIDE1NCwgOTksIDEsIDIzNCwgMjU1LCAKLSAgICAyMjIsIDE0NCwgOTksIDEsIDIzNCwgMTEwLCAyMjIsIDE0NCwgOTksIDEsIDIxNiwgMCwgMjIyLCAxNDQsIDk5LCAxLCAyNDUsIAotICAgIDE2MCwgMjIyLCAxNDQsIDk5LCAxLCAyMTQsIDIzMywgMjIyLCAxNDQsIDk5LCAxLCAyMTIsIDEwMCwgMjIyLCAxNDQsIDk5LCAKLSAgICAxLCAyNTMsIDEyNSwgMjIyLCAxNDQsIDk5LCAyMSwgMjEyLCA3OSwgOTksIDIxLCAxMTYsIDk5LCAyMSwgMTA5LCA5OSwgMjEsIAotICAgIDE2NiwgOTksIDIxLCAxNjMsIDk5LCAyMSwgMTgwLCA5OSwgMjEsIDE4OSwgOTksIDIxLCAxOTgsIDk5LCAyMSwgMTk1LCA5OSwgCi0gICAgMjEsIDIwMCwgOTksIDIyNiwgMTU3LCA5OSwgMjI2LCAxODIsIDk5LCAyMTMsIDIyMywgOTksIDI1MCwgMTY4LCAyMjYsIAotICAgIDE3NSwgOTksIDI1MCwgMTY4LCAyMjAsIDk4LCA5OSwgMjUwLCAxNjgsIDIyNiwgMTMwLCA5OSwgMjI2LCAxODEsIDk5LCAyNywgCi0gICAgMTYsIDI0NywgODAsIDk5LCAyNywgMTYsIDI0OCwgMiwgOTksIDI3LCAxNiwgMjQ2LCAxOSwgOTksIDI3LCAxNiwgMjQ4LCAKLSAgICAxMjEsIDk5LCAyNywgMTYsIDI0OCwgMTIyLCAyMTgsIDIxNSwgOTksIDI3LCAxNiwgMjQ3LCAxNTcsIDk5LCAyNywgMTYsIAotICAgIDI0OCwgMTU3LCA5OSwgMjcsIDE2LCAyNDcsIDI0MCwgOTksIDI3LCAxNiwgMjQ4LCAxNDMsIDk5LCAyNywgMTYsIDI0OCwgCi0gICAgMTIyLCAyNDMsIDMzLCA5OSwgMjcsIDE2LCAzNywgMjE3LCAyMTcsIDk5LCAyNywgMTYsIDM3LCAyNDUsIDk5LCA5OSwgMjcsIAotICAgIDE2LCAzNywgMjM0LCAxNzMsIDk5LCAyNywgMTYsIDM3LCAyMzQsIDE3NSwgOTksIDI3LCAxNiwgMzcsIDIzNSwgMTIzLCA5OSwgCi0gICAgMjcsIDE2LCAzNywgMjM0LCAxNzQsIDIsIDIzNSwgMTIzLCA5OSwgMjcsIDE2LCAzNywgMjM0LCAxNzYsIDIsIDIzNSwgMTIzLCAKLSAgICA5OSwgMjcsIDE2LCAzNywgMjUxLCAyMTQsIDk5LCAyNywgMTYsIDM3LCAyNDIsIDE0MSwgOTksIDI3LCAxNiwgMjIzLCAxNDYsIAotICAgIDIyNywgNDAsIDI0NiwgMjksIDk5LCAyNywgMTYsIDIyMywgMTQ2LCAyMjcsIDQwLCAyNDgsIDE1NSwgOTksIDI3LCAxNiwgCi0gICAgMjIzLCAxNDYsIDI0OSwgMTkzLCAyMTYsIDc1LCA5OSwgMjcsIDE2LCAyMjMsIDE0NiwgMjQ5LCAxOTMsIDIxOCwgMjMsIDk5LCAKLSAgICAyNywgMTYsIDIzMywgNjgsIDIyNywgNDAsIDIyNiwgMTcwLCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyMjcsIDQwLCAyMjUsIAotICAgIDI1LCA5OSwgMjcsIDE2LCAyMzMsIDY4LCAyNDksIDE5MywgMjI1LCAxNzAsIDk5LCAyNywgMTYsIDIzMywgNjgsIDI0OSwgCi0gICAgMTkzLCAyMjUsIDE2MCwgOTksIDI3LCAxNiwgMjMzLCA2OCwgMjI3LCA0MCwgMjI1LCAxOTMsIDIxOCwgMjM3LCA1LCAyMjYsIAotICAgIDE1NCwgMjE4LCAyMzcsIDUsIDIyNiwgMTY2LCAyMTgsIDIzNywgNSwgMjI2LCAxNjMsIDIxOCwgMjM3LCAxLCA2MSwgMjE4LCAKLSAgICAyMzcsIDEsIDcyLCAyMTgsIDIzNywgMSwgNjksIDIxOCwgMjM3LCAxLCAyNTQsIDE0OCwgMjE4LCAyMzcsIDEsIDc1LCAyMTgsIAotICAgIDIzNywgMSwgNzQsIDIxOCwgMjM3LCAxLCAyNDUsIDIyLCAyMTgsIDIzNywgMSwgMTgxLCAyMTgsIDIzNywgMSwgMjI0LCAKLSAgICAyMzIsIDIxOCwgMjM3LCAxLCAyNDMsIDExMCwgMjE4LCAyMzcsIDEsIDIyOSwgMTU5LCAyMTgsIDIzNywgMSwgMjUwLCAyMTksIAotICAgIDIxOCwgMjM3LCAxLCAyMzUsIDEzOSwgMjE4LCAyMzcsIDEsIDIxMiwgMTA5LCAyMTgsIDIzNywgMSwgMjI4LCAyMywgMjE4LCAKLSAgICAyMzcsIDEsIDIxOCwgNTIsIDIxOCwgMjM3LCAxLCAyNDgsIDE2NCwgMjE4LCAyMzcsIDEsIDIwNSwgMjE4LCAyMzcsIDEsIAotICAgIDE5MywgMjE4LCAyMzcsIDEsIDI0NCwgMTY0LCAyMTgsIDIzNywgMSwgMjE1LCAxLCAyMTgsIDIzNywgMSwgMjUyLCAxMDcsIAotICAgIDIxOCwgMjM3LCAxLCAxODgsIDIxOCwgMjM3LCAxLCAxODYsIDIxOCwgMjM3LCAxLCAyMDMsIDIxOCwgMjM3LCAxLCAyMzMsIAotICAgIDE1NywgMjE4LCAyMzcsIDEsIDIxNCwgNDksIDIxOCwgMjM3LCAxLCAyMjIsIDIwMiwgMjE4LCAyMzcsIDEsIDIxMywgMTUzLCAKLSAgICAyMTgsIDIzNywgMSwgMTU5LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIDIyNiwgMTc5LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIAotICAgIDIyNiwgMTU2LCAyMTgsIDIzNywgMjQ5LCAxMzMsIDUsIDIyNiwgMTUzLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTY5LCAKLSAgICAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTUyLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTczLCAyMTgsIDIzNywgMzAsIDUsIAotICAgIDIyNiwgMTYyLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTgwLCAyMTgsIDIzNywgMzAsIDUsIDIyNiwgMTcxLCAyMTgsIDIzNywgCi0gICAgNSwgMjI2LCAxODMsIDIxOCwgMjM3LCAxLCAyMzQsIDEzOCwgMjE4LCAyMzcsIDEsIDIxOCwgMTc2LCAyMTgsIDIzNywgMjEsIAotICAgIDIxMiwgNzksIDIxOCwgMjM3LCAyMSwgMTE2LCAyMTgsIDIzNywgMjEsIDEwOSwgMjE4LCAyMzcsIDIxLCAxNjYsIDIxOCwgCi0gICAgMjM3LCAyMSwgMTYzLCAyMTgsIDIzNywgMjEsIDE4MCwgMjE4LCAyMzcsIDIxLCAxODksIDIxOCwgMjM3LCAyMSwgMTk4LCAKLSAgICAyMTgsIDIzNywgMjEsIDE5NSwgMjE4LCAyMzcsIDIxLCAyMDAsIDI1MiwgNDAsIDEsIDYxLCAyNTIsIDQwLCAxLCAyMjAsIAotICAgIDkwLCA2MSwgMjUyLCA0MCwgMSwgMTU5LCAyNTIsIDQwLCAxLCAyMjAsIDkwLCAxNTksIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAKLSAgICAxNTksIDI1MiwgNDAsIDEsIDI1MiwgMTA3LCAyNTIsIDQwLCAxLCAyMzQsIDIxNywgMjUyLCAxMDcsIDI1MiwgNDAsIDEsIAotICAgIDE5MywgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTkzLCAyNTIsIDQwLCAxLCAyMDUsIDI1MiwgNDAsIDEsIDIzMSwgMjQ0LCAKLSAgICAyMDUsIDI1MiwgNDAsIDEsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDIyMCwgOTAsIDIxNCwgNDksIDI1MiwgNDAsIDEsIDIyNiwgCi0gICAgMTk0LCAyMTQsIDQ5LCAyNTIsIDQwLCAxLCAyNDMsIDExMCwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMjQzLCAxMTAsIDI1MiwgCi0gICAgNDAsIDEsIDIzNSwgMTM5LCAyNTIsIDQwLCAxLCAyNDgsIDE2NCwgMjUyLCA0MCwgMSwgMjAzLCAyNTIsIDQwLCAxLCAyMjAsIAotICAgIDkwLCAyMDMsIDI1MiwgNDAsIDEsIDE4OCwgMjUyLCA0MCwgMSwgMjIwLCA5MCwgMTg4LCAyNTIsIDQwLCAxLCAyMTksIDIxMywgCi0gICAgMjE4LCA1MiwgMjUyLCA0MCwgMSwgMjI4LCAxNjYsIDIxOCwgNTIsIDI1MiwgNDAsIDEsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAKLSAgICAyMjAsIDkwLCAyMjIsIDIwMiwgMjUyLCA0MCwgMSwgMjMxLCAyNDQsIDIyMiwgMjAyLCAyNTIsIDQwLCAxLCAxODYsIDI1MiwgCi0gICAgNDAsIDEsIDIyMCwgOTAsIDE4NiwgMjUyLCA0MCwgMSwgMjI5LCAxNTksIDI1MiwgNDAsIDEsIDIzMywgMTU3LCAyNTIsIDQwLCAKLSAgICAxLCAyMjAsIDkwLCAyMzMsIDE1NywgMjUyLCA0MCwgMSwgMjI4LCAyMywgMjUyLCA0MCwgMSwgMjUwLCAyMTksIDI1MiwgNDAsIAotICAgIDEsIDIyOSwgMjI4LCAyNTIsIDQwLCAxLCAyMzEsIDE4NywgMjUyLCA0MCwgMSwgNzIsIDI1MiwgNDAsIDEsIDY5LCAyNTIsIAotICAgIDQwLCA1LCAyMTYsIDI0NCwgMjUyLCA0MCwgMzAsIDUsIDc0LCAyNTIsIDQwLCAzMCwgNSwgMjI2LCAxOTQsIDc0LCAyNTIsIAotICAgIDQwLCAzMCwgNSwgMjQ1LCAxNjUsIDI1MiwgNDAsIDMwLCA1LCA3MiwgMjUyLCA0MCwgMzAsIDUsIDIzNCwgMjE3LCA3MiwgCi0gICAgMjUyLCA0MCwgMzAsIDUsIDc1LCAyNTIsIDQwLCAzMCwgNSwgMjM0LCAyMTcsIDc1LCAyNTIsIDQwLCAzMCwgNSwgNjksIAotICAgIDI1MiwgNDAsIDMwLCA1LCAxMTEsIDMxLCAyMjAsIDkwLCAyMjIsIDIwMiwgMjUyLCA0MCwgMjQ5LCAxMzMsIDUsIDIyOSwgCi0gICAgMTYxLCAyNTIsIDQwLCAyNDksIDEzMywgNSwgMjQyLCA0MSwgMjUyLCA0MCwgMjI2LCAxNjUsIDI1MiwgNDAsIDIyNiwgMTYxLCAKLSAgICAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIzMCwgNDYsIDIzMSwgMTA0LCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIyNSwgCi0gICAgMTk2LCAyNTIsIDQwLCAxNiwgMjUxLCAxNjQsIDIzNSwgNTEsIDI1MiwgNDAsIDE2LCAyNTEsIDE2NCwgMjI2LCAxNjUsIAotICAgIDE4MiwgMSwgMTgxLCAxODIsIDEsIDIzNCwgNDgsIDE4MiwgMSwgMjM0LCAxMzgsIDE4MiwgMSwgMjQzLCAxMTAsIDE4MiwgMSwgCi0gICAgMjQyLCAxNjIsIDE4MiwgMSwgMjI5LCAxNTksIDE4MiwgMSwgMjUwLCAyMTksIDE4MiwgMSwgMjUwLCA5MiwgMTgyLCAxLCAKLSAgICAyMzUsIDEzOSwgMTgyLCAxLCAyMjgsIDIzLCAxODIsIDEsIDIxOCwgNTIsIDE4MiwgMSwgMjE3LCAxNjEsIDE4MiwgMSwgCi0gICAgMjQ4LCAxNjQsIDE4MiwgMSwgMjA1LCAxODIsIDEsIDE5MywgMTgyLCAxLCAyMjUsIDE3NCwgMTgyLCAxLCAyMjYsIDIzLCAKLSAgICAxODIsIDEsIDI0NCwgMTY0LCAxODIsIDEsIDI0NCwgNDQsIDE4MiwgMSwgMjUyLCAxMDcsIDE4MiwgMSwgMjUxLCAxNDUsIAotICAgIDE4MiwgMSwgMTg4LCAxODIsIDEsIDIzMCwgMjM3LCAxODIsIDEsIDIxNiwgMTQxLCAxODIsIDEsIDIxNiwgMTMzLCAxODIsIAotICAgIDEsIDI0NSwgMjQ5LCAxODIsIDEsIDE4NiwgMTgyLCAxLCAyMDMsIDE4MiwgMSwgMjMzLCAxNTcsIDE4MiwgMSwgMTU5LCAKLSAgICAxODIsIDEsIDI0MSwgMTM5LCAxODIsIDEsIDIxNSwgMSwgMTgyLCAxLCAyMjIsIDIwMiwgMTgyLCAxLCAyMjEsIDI0LCAxODIsIAotICAgIDEsIDIxNCwgNDksIDE4MiwgMSwgNjEsIDE4MiwgMjE5LCAxOCwgMSwgMTg2LCAxODIsIDIxOSwgMTgsIDEsIDIwMywgMTgyLCAKLSAgICAzMCwgNSwgMjU0LCAyMzIsIDE4MiwgMzAsIDUsIDcyLCAxODIsIDMwLCA1LCA3NSwgMTgyLCAzMCwgNSwgMjI3LCA0OSwgCi0gICAgMTgyLCAzMCwgNSwgNjksIDE4MiwgMzAsIDUsIDIxNSwgOTIsIDE4MiwgMzAsIDUsIDc0LCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMzUsIDI3LCAxODIsIDI0OSwgMTMzLCA1LCAxODMsIDE4MiwgMjQ5LCAxMzMsIDUsIDE1MCwgMTgyLCAyNDksIDEzMywgNSwgCi0gICAgMjA0LCAxODIsIDI0OSwgMTMzLCA1LCAyMjYsIDIyOSwgMTgyLCAyNDksIDEzMywgNSwgMTQ5LCAxODIsIDI0OSwgMTMzLCA1LCAKLSAgICAyMTgsIDk5LCAxODIsIDI0OSwgMTMzLCA1LCAyMjgsIDUsIDE4MiwgMjQ5LCAxMzMsIDUsIDIzNCwgMjM1LCAxODIsIDUsIAotICAgIDIyNCwgNDIsIDE4MiwgNSwgMjI4LCA2MCwgMTgyLCAyMjUsIDI3LCAyMTgsIDUxLCAxODIsIDIyNSwgMjcsIDIyOCwgMTMsIAotICAgIDIxNywgNzQsIDIxOCwgNTEsIDE4MiwgMjI1LCAyNywgMjUwLCA5OCwgMTgyLCAyMjUsIDI3LCAyMTYsIDEyOCwgMjUwLCA5OCwgCi0gICAgMTgyLCAyMjUsIDI3LCAyMTYsIDEyNywgMTgyLCAyMSwgMjEyLCA3OSwgMTgyLCAyMSwgMTE2LCAxODIsIDIxLCAxMDksIAotICAgIDE4MiwgMjEsIDE2NiwgMTgyLCAyMSwgMTYzLCAxODIsIDIxLCAxODAsIDE4MiwgMjEsIDE4OSwgMTgyLCAyMSwgMTk4LCAKLSAgICAxODIsIDIxLCAxOTUsIDE4MiwgMjEsIDIwMCwgMTgyLCAxLCAyMTYsIDExNSwgMTgyLCAxLCAyMTYsIDEwNSwgMTgyLCAxLCAKLSAgICAyNDgsIDg2LCAyMjcsIDc2LCAyNTAsIDQwLCAyMSwgMjEyLCA3OSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDExNiwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMjEsIDEwOSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE2NiwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIAotICAgIDE2MywgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE4MCwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE4OSwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMjEsIDE5OCwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDE5NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjEsIDIwMCwgMjI3LCAKLSAgICA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxNTcsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1MywgMTIyLCAyMjcsIDc2LCAyNTAsIAotICAgIDQwLCAxLCAyNTQsIDEyMSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAyNCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAKLSAgICA4NiwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCAxNTYsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDI1NCwgMTk0LCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAxLCAyNTQsIDE5NSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjU0LCAxOTMsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDEsIDI1NCwgMTg5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzMsIDEzLCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzUsIAotICAgIDE2OSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM2LCAyOSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjM1LCAxODgsIDIyNywgCi0gICAgNzYsIDI1MCwgNDAsIDEsIDIzNSwgMTc3LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzIsIDE1NiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjE1LCAxOTAsIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIxNSwgMTg4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMTUsIAotICAgIDEzOSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjE1LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjMzLCA4MiwgMjI3LCA3NiwgCi0gICAgMjUwLCA0MCwgMSwgMjQ1LCA3MCwgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjQ1LCAxNjgsIDIyNywgNzYsIDI1MCwgNDAsIDEsIAotICAgIDI0NSwgMTA4LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyNDUsIDQ5LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMzIsIDIwOCwgCi0gICAgMjI3LCA3NiwgMjUwLCA0MCwgMSwgMjI3LCA1LCAyMjcsIDc2LCAyNTAsIDQwLCAxLCAyMjcsIDExNiwgMjI3LCA3NiwgMjUwLCAKLSAgICA0MCwgMSwgMjI2LCAyNDksIDIyNywgNzYsIDI1MCwgNDAsIDEsIDIyNywgODgsIDIyNywgNzYsIDI1MCwgNDAsIDIzMCwgCi0gICAgMTczLCAyMTYsIDg0LCAyMjcsIDc2LCAyNTAsIDQwLCAyNDMsIDEwNSwgMjE2LCA4NSwgMjI3LCA3NiwgMjUwLCA0MCwgMjMwLCAKLSAgICAxNzEsIDIxNiwgODUsIDIyNywgNzYsIDI1MCwgNDAsIDIyMywgMjQyLCAyMjcsIDc2LCAyNTAsIDQwLCAyMjYsIDIxLCAyMjcsIAotICAgIDc2LCAyNTAsIDQwLCAyNTQsIDExMywgMjI3LCA3NiwgMjUwLCA0MCwgMjI1LCAyNywgMjMwLCAxNjgsIDIyNywgNzYsIDI1MCwgCi0gICAgNDAsIDIyNSwgMjcsIDUxLCAyMzAsIDE2OCwgMjE0LCAyMjksIDE2MCwgMjM0LCAyMTUsIDIxNCwgMjI5LCAxNjAsIDIyMSwgCi0gICAgMCwgMjE0LCAyMjksIDE2MCwgMjI1LCA3OCwgMjE0LCAyMjksIDUsIDIyOSwgNDAsIDIxNCwgMjI5LCA1LCAyMTMsIDY5LCAKLSAgICAyMzEsIDM1LCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjU0LCAxMTgsIDIzNSwgMjQwLCAyMTgsIDIwMSwgCi0gICAgMjE0LCAyMjksIDE2MCwgMjEzLCA2OSwgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyMTMsIDY5LCAyMzQsIAotICAgIDIwMywgMjM1LCAyNDAsIDIxOCwgMjAxLCAyMTQsIDIyOSwgMTYwLCAyNTAsIDE5MCwgNTUsIDIxNCwgMjI5LCAxNjAsIDIxMywgCi0gICAgNjksIDIzNCwgMjAzLCAyMzUsIDI0MCwgMjE4LCAyMDIsIDIyMiwgMTE1LCAyMTQsIDIyOSwgMTYwLCA1MSwgMjE4LCAyMDEsIAotICAgIDIxNCwgMjI5LCAxNjAsIDIxNiwgMTY5LCAyMTgsIDIwMSwgMjE0LCAyMjksIDE2MCwgMjM0LCAyMDMsIDI1MywgMjQ0LCAKLSAgICAyMTQsIDIyOSwgMTYwLCA2MiwgNTUsIDIxNCwgMjI5LCAxNjAsIDExNywgMTc2LCA1NSwgMjE0LCAyMjksIDE2MCwgMTMzLCAKLSAgICAxNzYsIDU1LCAyMTQsIDIyOSwgMTYwLCAyMjMsIDEzNywgMjM0LCAyMTQsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIAotICAgIDE2MCwgMjUzLCAxMjAsIDIzNSwgMjQwLCAyMTgsIDIwMSwgMjE0LCAyMjksIDUsIDIxNCwgMTI5LCAyMTgsIDIwMSwgMjE0LCAKLSAgICAyMjksIDUsIDIxNCwgMTI5LCAyMTUsIDE4NSwgMjE0LCAyMjksIDUsIDIyMywgMjAyLCAyMTQsIDEyOSwgMjE1LCAxODUsIAotICAgIDIxNCwgMjI5LCA1LCAyMTQsIDEyOSwgMjUzLCAyNDQsIDIxNCwgMjI5LCA1LCAyMjMsIDIwMiwgMjE0LCAxMjksIDI1MywgCi0gICAgMjQ0LCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIDIxNSwgMTg2LCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjE0LCAxMjksIAotICAgIDI1MywgMjQ1LCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDI1NCwgMiwgMjE0LCAyMjksIDUsIDI1MywgCi0gICAgMjQzLCAyNTIsIDg1LCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIDIxNCwgMjUyLCAyMTQsIDIyOSwgNSwgMjUzLCAyNDMsIAotICAgIDIxNCwgMjUzLCAyLCAyMTgsIDI3LCAyMTQsIDIyOSwgNSwgMjE3LCAyMSwgMjE0LCAyMjksIDUsIDI0MSwgMTc2LCAxODQsIAotICAgIDI1MywgMjQyLCAyMTQsIDIyOSwgNSwgMTg0LCAyNTMsIDI0MiwgMjE0LCAyMjksIDUsIDIyMywgNTMsIDE4NCwgMjUzLCAKLSAgICAyNDIsIDIxNCwgMjI5LCA1LCAyNTMsIDI0MywgMjE1LCAxOTIsIDIzMCwgMTYwLCAyMTQsIDIyOSwgNSwgMjUzLCAxOTAsIDcsIAotICAgIDEsIDMsIDYsIDYxLCA3LCAxLCAzLCA2LCAyNTQsIDE0OCwgNywgMywgMSwgMjE2LCA1OCwgMjU0LCAxNDgsIDcsIDEsIDMsIAotICAgIDYsIDI1MiwgNTQsIDI1MywgNzQsIDcsIDEsIDMsIDYsIDI1MCwgMjUyLCA3LCAxLCAzLCA2LCAyNDksIDMsIDcsIDEsIDMsIAotICAgIDYsIDI0NSwgMjUsIDcsIDEsIDMsIDYsIDc0LCA3LCAzLCAxLCAyMTYsIDU4LCAyMjcsIDQwLCA3NCwgNywgMywgMSwgMjE2LCAKLSAgICA1OCwgNzIsIDcsIDEsIDMsIDYsIDIzNSwgMTQyLCA3LCAxLCAzLCA2LCAyMzUsIDI3LCA3LCAxLCAzLCA2LCAyMzMsIDE3MSwgCi0gICAgMiwgOTAsIDcsIDEsIDMsIDYsIDE4MywgNywgMSwgMywgNiwgMjIzLCAyMDIsIDIwNCwgNywgMSwgMywgNiwgNzUsIDcsIDEsIAotICAgIDMsIDYsIDIyNywgNDAsIDc1LCA3LCAzLCAxLCAyMjAsIDExMywgNzUsIDcsIDMsIDEsIDIyMCwgMTEzLCAyMjcsIDQwLCA3NSwgCi0gICAgNywgMywgMSwgMjIwLCAxMTMsIDE1NywgMiwgOTAsIDcsIDMsIDEsIDIxNiwgNTgsIDIyNywgOTksIDcsIDEsIDMsIDYsIAotICAgIDIyNywgMiwgNywgMywgMSwgMjE2LCAyMjcsIDE1MSwgNzUsIDcsIDMsIDEsIDI1MSwgMTAxLCAxNTEsIDc1LCA3LCAxLCAzLCAKLSAgICA2LCAyMjYsIDIyOSwgNywgMSwgMywgNiwgMjIzLCAyMDIsIDE0OSwgNywgMSwgMywgNiwgMjE2LCA1OCwgMTQ5LCA3LCAxLCAKLSAgICAzLCA2LCAyMTgsIDk5LCA3LCAxLCAzLCA2LCA2OSwgNywgMywgMSwgMjIwLCAxMTMsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgCi0gICAgMjQ3LCAyMDgsIDY5LCA3LCAzLCAxLCAyMjAsIDExMywgMjE2LCA1OCwgMTgzLCA3LCAxLCAzLCA2LCAyMTUsIDc5LCA3LCAxLCAKLSAgICAzLCA2LCAyMTQsIDgyLCA3LCAxLCAzLCA2LCAyMTIsIDE1MiwgNywgMSwgMywgNiwgMjQ0LCAyMzIsIDcsIDEsIDIxNCwgCi0gICAgMTE2LCAyMzMsIDEwNSwgMjE5LCAxODIsIDcsIDEsIDI1NCwgMTAzLCAyNSwgMSwgMywgNiwgMjQzLCA4MywgMjUsIDEsIDMsIAotICAgIDYsIDIzMywgMTIyLCAyNSwgMSwgMywgNiwgMjI1LCAyNDAsIDI1LCAxLCAzLCA2LCAyMjMsIDE5MCwgMjUsIDEsIDMsIDYsIAotICAgIDIyNSwgNDYsIDMzLCAxLCAzLCA2LCAyNDUsIDEzMSwgNTksIDEsIDYsIDYxLCA1OSwgMSwgNiwgMjU0LCAxNDgsIDU5LCAxLCAKLSAgICA2LCAyNTMsIDc0LCA1OSwgMSwgNiwgMjUyLCA1NCwgMjUzLCA3NCwgNTksIDEsIDYsIDI0OSwgMywgNTksIDEsIDYsIDc0LCAKLSAgICA1OSwgMSwgNiwgMjIzLCAyMDIsIDc0LCA1OSwgMSwgNiwgMjQzLCAxNzcsIDU5LCAxLCA2LCAyNDIsIDQxLCA1OSwgMSwgNiwgCi0gICAgNzIsIDU5LCAxLCA2LCAyMzUsIDE0MiwgNTksIDEsIDYsIDIzNSwgMjcsIDU5LCAxLCA2LCAxNTAsIDU5LCAxLCA2LCAxODMsIAotICAgIDU5LCAxLCA2LCAyMDQsIDU5LCAxLCA2LCAyMjMsIDIwMiwgMjA0LCA1OSwgMSwgNiwgNzUsIDU5LCAxLCA2LCAyMjcsIDIsIAotICAgIDU5LCAxLCA2LCAyMjYsIDIyOSwgNTksIDEsIDYsIDE0OSwgNTksIDEsIDYsIDIxOCwgOTksIDU5LCAxLCA2LCA2OSwgNTksIAotICAgIDEsIDYsIDIxNCwgODIsIDU5LCAxLCAzLCA2MSwgNTksIDEsIDMsIDIxNiwgNTgsIDYxLCA1OSwgMSwgMywgMjU0LCA1MiwgCi0gICAgNTksIDEsIDMsIDIxNiwgNTgsIDI1NCwgMTQ4LCA1OSwgMSwgMywgMjUzLCA3NCwgNTksIDEsIDMsIDI0OSwgMywgNTksIDEsIAotICAgIDMsIDc0LCA1OSwgMSwgMywgMjIyLCAxMTMsIDU5LCAxLCAzLCAyMjcsIDQwLCA3NCwgNTksIDEsIDMsIDIxNiwgNTgsIDIyNywgCi0gICAgNDAsIDc0LCA1OSwgMSwgMywgMjQzLCAxNzcsIDU5LCAxLCAzLCAyMTYsIDU4LCA3MiwgNTksIDEsIDMsIDIzNSwgMjcsIDU5LCAKLSAgICAxLCAzLCAxODMsIDU5LCAxLCAzLCAyNDUsIDk2LCA1OSwgMSwgMywgNzUsIDU5LCAxLCAzLCAyMjcsIDQwLCA3NSwgNTksIDEsIAotICAgIDMsIDIxNiwgMjI3LCAxNTEsIDc1LCA1OSwgMSwgMywgMjUxLCAxMDEsIDE1MSwgNzUsIDU5LCAxLCAzLCAyMjYsIDIyOSwgCi0gICAgNTksIDEsIDMsIDIxOCwgOTksIDU5LCAxLCAzLCA2OSwgNTksIDEsIDMsIDIyMCwgMTEzLCA2OSwgNTksIDEsIDMsIDIxNiwgCi0gICAgNTgsIDE4MywgNTksIDEsIDMsIDIxNSwgNzksIDU5LCAxLCAzLCAyNTQsIDEwMywgNTksIDEsIDMsIDI1MSwgMjAzLCA1OSwgCi0gICAgMSwgMywgMjUsIDI0MywgODMsIDU5LCAxLCAzLCAyNDgsIDUsIDU5LCAxLCAzLCAyNSwgMjI2LCA5LCA1OSwgMSwgMywgMjUwLCAKLSAgICA0NywgNywgMjE5LCAxMCwgMywgMSwgNzIsIDcsIDIxOSwgMTAsIDMsIDEsIDE0OSwgNywgMjE5LCAxMCwgMywgMSwgNjksIDcsIAotICAgIDIxOSwgMTAsIDMsIDEsIDIxNSwgNzksIDI1LCAyMTksIDEwLCAzLCAxLCAyNTEsIDIwMywgMjUsIDIxOSwgMTAsIDMsIDEsIAotICAgIDI0MywgODMsIDI1LCAyMTksIDEwLCAzLCAxLCAyMjMsIDE5MCwgMjUsIDIxOSwgMTAsIDMsIDEsIDIyNiwgOSwgMjUsIDIxOSwgCi0gICAgMTAsIDMsIDEsIDI1MCwgNDcsIDcsIDMsIDEsIDIxNSwgMTgzLCA3LCAzLCAxLCA1NCwgMiwgMjMxLCAzNywgMjE3LCA0MiwgCi0gICAgNywgMywgMSwgMjQ5LCA0LCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyNDQsIDIzMSwgMiwgMjMxLCAzNywgMjE3LCAKLSAgICA0MiwgNywgMywgMSwgMjMyLCAxMTAsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIzMSwgMzcsIAotICAgIDIxNywgNDIsIDcsIDMsIDEsIDIyNiwgMjMwLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgCi0gICAgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjI0LCAxMTMsIDIsIDI0NCwgNTcsIDI0LCAyMzEsIDM3LCAyMTcsIDQyLCA3LCAKLSAgICAzLCAxLCAyMjMsIDQsIDIsIDIzMSwgMzcsIDIxNywgNDIsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMzEsIDM3LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjMxLCAzNywgMjE3LCA0MiwgNywgMywgMSwgMjE2LCA1OCwgMjQzLCAxNzcsIAotICAgIDU5LCAxLCAzMywgMjQ1LCAxMDgsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgMywgMSwgMjE3LCAxNjQsIDIsIAotICAgIDIxOSwgNDcsIDcsIDMsIDYsIDEsIDI0MCwgMTQ2LCAyLCA5MCwgNywgMywgMSwgMjM1LCAxODQsIDIsIDkwLCA3LCAzLCAxLCAKLSAgICAyMjYsIDIzMCwgMiwgOTAsIDcsIDMsIDYsIDEsIDExMSwgMiwgOTAsIDcsIDMsIDEsIDIxNSwgMTI5LCAyLCA5MCwgNywgMywgCi0gICAgMSwgNTQsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjQ0LCAKLSAgICAyMzEsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDI0MywgMTc4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzUsIAotICAgIDI4LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjMyLCAKLSAgICAxMTAsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIzMCwgOTgsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDIyNiwgCi0gICAgMjMwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMjQsIDExMywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjIzLCAKLSAgICA0LCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTUsIAotICAgIDgwLCAyLCAyMjYsIDE5MywgMTAxLCA3LCAzLCAxLCAyMTMsIDE2NywgMiwgMjI2LCAxOTMsIDEwMSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDIyNiwgMTkzLCAxMDEsIDcsIDMsIDEsIDExOCwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjU0LCA1MywgCi0gICAgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDEsIDM4LCAyNCwgMjE4LCAyNywgNywgMywgMSwgMTkxLCAKLSAgICAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAyMjcsIDQwLCAxOTEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyMywgCi0gICAgMjAyLCAyMjcsIDQwLCAxOTEsIDIsIDIyMywgMjA3LCAxMDEsIDcsIDMsIDEsIDIyMiwgMTE0LCAyLCAyMjMsIDIwNywgMTAxLCAKLSAgICA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjIzLCAyMDcsIDEwMSwgNywgMywgMSwgMjI3LCA0MCwgMTU3LCAyLCAyMjMsIDIwNywgCi0gICAgMTAxLCA3LCAzLCAxLCAyNDUsIDQxLCAyLCAyMjMsIDIwNywgMTAxLCA3LCAzLCAxLCAxMTEsIDIsIDIyMywgMjA3LCAxMDEsIAotICAgIDcsIDMsIDEsIDI0NCwgMjMzLCAyLCAyMjMsIDIwNywgMTAxLCA1OSwgMSwgMywgMjE2LCA1OCwgMjU0LCA1MiwgNTksIDEsIAotICAgIDMsIDI1MCwgMjUyLCA1OSwgMSwgMywgMjUwLCAyNTMsIDIsIDI0OSwgNDEsIDU5LCAxLCAzLCAyNDUsIDI1LCA1OSwgMSwgMywgCi0gICAgMjIzLCAyMDIsIDIyNywgNDAsIDc0LCA1OSwgMSwgMywgMjQ0LCAyMzAsIDU5LCAxLCAzLCAyNDcsIDczLCAyMzUsIDE0MywgCi0gICAgMiwgOTAsIDU5LCAxLCAzLCAxMTMsIDI0MywgMTc3LCA1OSwgMSwgMywgMjE2LCA1OCwgMjQyLCA0MSwgNTksIDEsIDMsIAotICAgIDI0MCwgMTQ2LCAyLCA5MCwgNTksIDEsIDMsIDIzNSwgMTgzLCA1OSwgMSwgMywgNiwgNzIsIDU5LCAxLCAzLCA2LCAyNDAsIAotICAgIDE0NiwgMiwgOTAsIDU5LCAxLCAzLCAyMzUsIDE0MywgMiwgMjQ5LCA2NywgNTksIDEsIDMsIDIzMywgMTcxLCAyLCAyMjMsIAotICAgIDIwNywgMTAxLCA1OSwgMSwgMywgMjMzLCAxNzEsIDIsIDIyNiwgMTkzLCAxMDEsIDU5LCAxLCAzLCA2LCAxNTAsIDU5LCAxLCAKLSAgICAzLCAyMzIsIDExMCwgMiwgMTAxLCA1OSwgMSwgMywgMjE2LCA1OCwgMjMyLCAxMTAsIDIsIDE4NCwgMjMzLCA2MCwgNTksIDEsIAotICAgIDMsIDIzMCwgOTgsIDIsIDQyLCAxMDEsIDU5LCAxLCAzLCAyMzAsIDk4LCAyLCAyMjMsIDIwNywgMTAxLCA1OSwgMSwgMywgNiwgCi0gICAgMjA0LCA1OSwgMSwgMywgMjUyLCA1NCwgNzUsIDU5LCAxLCAzLCAyMjYsIDksIDU5LCAxLCAzLCAyMjMsIDQsIDIsIDEwMSwgCi0gICAgNTksIDEsIDMsIDI0NSwgNDAsIDU5LCAxLCAzLCAyMTgsIDEwMCwgMiwgMjI2LCAxOTMsIDEwMSwgNTksIDEsIDMsIDExMSwgCi0gICAgMTM0LCA1OSwgMSwgMywgMjE1LCAxMjgsIDU5LCAxLCAzLCA2LCA2OSwgNTksIDEsIDMsIDIxNSwgODAsIDIsIDEwMSwgNTksIAotICAgIDEsIDMsIDIxNiwgNTgsIDIxNSwgNzksIDU5LCAxLCAzLCAyMTIsIDE1MiwgNTksIDEsIDMsIDIxMiwgMTUzLCAyLCAyMjMsIAotICAgIDIwNywgMTAxLCA1OSwgMSwgMywgMjEyLCAxNTMsIDIsIDI0OSwgNDEsIDU5LCAxLCAzLCAyNDQsIDIzMiwgNTksIDEsIDMsIAotICAgIDIxNywgMTMyLCAzNywgMjQ2LCA3MiwgMjQyLCAxMTQsIDI1NCwgMTc0LCAzNywgMjQ2LCA3MiwgMjU0LCAxNjQsIDI1NCwgCi0gICAgMTc0LCAzNywgMjE5LCAyNTMsIDU1LCAzNywgMjE4LCAyMDcsIDc3LCAzNywgMjMyLCAzNiwgMzcsIDI0MiwgMTExLCAzNywgCi0gICAgMjMyLCAzNCwgMzcsIDI1NCwgMTYyLCAzNywgMjQyLCAxMTIsIDM3LCAyNTQsIDE2MywgMzcsIDcsIDMsIDEsIDIyNCwgMTEzLCAKLSAgICA1NSwgMzcsIDI1MSwgNzMsIDM3LCAyMzIsIDM1LCAzNywgNTEsIDI0OSwgMjI0LCA0OSwgMzcsIDIyNywgOTEsIDQ5LCAzNywgCi0gICAgMjEyLCAyOCwgNTUsIDM3LCAyMzUsIDE3MCwgNTUsIDM3LCAyMTUsIDEyMiwgNDksIDM3LCAyMTUsIDEwNSwgNDksIDM3LCA3LCAKLSAgICAzLCAxLCAyNDQsIDMyLCAyMjcsIDQwLCAxMTgsIDQ5LCAzNywgNywgMywgMSwgMjU0LCAxNDgsIDM3LCA3LCAzLCAxLCAyNTMsIAotICAgIDI0MCwgMzcsIDcsIDMsIDEsIDI1MywgOTIsIDM3LCA3LCAzLCAxLCAyNTAsIDI1MywgMjUwLCAxMTcsIDM3LCA3LCAzLCAxLCAKLSAgICAyMzUsIDIxMCwgMjQ5LCAzLCAzNywgNywgMywgMSwgMjQ1LCAyNSwgMzcsIDcsIDMsIDEsIDI0MywgMTc3LCAzNywgNywgMSwgCi0gICAgMywgNiwgMjQzLCAxNzcsIDM3LCA3LCAzLCAxLCAyMzUsIDI3LCAzNywgNywgMywgMSwgMTUwLCAzNywgNywgMSwgMywgNiwgCi0gICAgMTUwLCAzNywgNywgMSwgMywgNiwgMTgzLCAzNywgNywgMywgMSwgMjA0LCAzNywgNywgMSwgMywgNiwgMjA0LCAzNywgNywgCi0gICAgMSwgMywgNiwgMTQ5LCAzNywgNywgMywgMSwgMjI0LCAxMTMsIDIyMywgODgsIDM3LCA3LCAzLCAxLCAxOTcsIDM3LCA3LCAzLCAKLSAgICAxLCAxODQsIDE5NywgMzcsIDcsIDMsIDEsIDIxMiwgMTUyLCAzNywgNTEsIDIzNSwgMTkxLCAyNTEsIDc1LCA1NSwgMzcsIAotICAgIDI1NCwgNTcsIDEyMywgMjExLCAyMTEsIDU1LCAzNywgNDIsIDI1MywgMTY1LCA0OSwgMzcsIDQ2LCAyNTMsIDE2NSwgMjQsIAotICAgIDExOSwgMjUzLCAxNjUsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDIyMywgMTMxLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyMjMsIAotICAgIDEzMSwgNTUsIDcsIDYsIDEsIDU0LCAyLCA2MiwgNDksIDcsIDMsIDEsIDU0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDU0LCAyLCAKLSAgICA2MiwgNTUsIDcsIDMsIDEsIDU0LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDU0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIAotICAgIDU0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDI1MCwgMjUzLCAyLCAyNTAsIDExOCwgMjQsIDE3OSwgNywgMywgMSwgCi0gICAgMjUwLCAyNTMsIDIsIDI1MCwgMTE4LCAyNCwgMTc5LCA3LCA2LCAxLCAyNDksIDQsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQ5LCAKLSAgICA0LCAyLCA2MiwgNDksIDcsIDYsIDEsIDI0OSwgNCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDksIDQsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjQ5LCA0LCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDI0OSwgNCwgMiwgMjMyLCAyNDMsIDU1LCA3LCA2LCAxLCAKLSAgICAyNDksIDQsIDIsIDI1MCwgMTE3LCA3LCAzLCAxLCAyNDksIDQsIDIsIDI1MCwgMTE3LCA3LCA2LCAxLCAyNDksIDQsIDIsIAotICAgIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjQ5LCA0LCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDE5MSwgMiwgMjMyLCAzOCwgCi0gICAgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTkxLCAyLCAKLSAgICAyMzIsIDM4LCAyNCwgMTc5LCA3LCAzLCAxLCAxOTEsIDIsIDIzMiwgMzgsIDI0LCAxNzksIDcsIDYsIDEsIDE5MSwgMiwgCi0gICAgMjQ5LCAyMjQsIDU1LCA3LCAzLCAxLCAxOTEsIDIsIDI0OSwgMjI0LCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgNywgMywgMSwgMTkxLCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMTkxLCAyLCAyNTAsIDExOCwgMjQsIDI1MSwgNzQsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjUwLCAxMTgsIDI0LCAyNTEsIDc0LCA3LCA2LCAxLCAyNDQsIDIzMSwgMiwgNjIsIDQ5LCA3LCAKLSAgICAzLCAxLCAyNDQsIDIzMSwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyNDMsIDE3OCwgMiwgMjMyLCAzNywgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDIzMiwgMzcsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDYyLCA0OSwgNywgMywgMSwgMjQyLCA0MiwgMiwgNjIsIAotICAgIDQ5LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDYyLCA1NSwgNywgNiwgMSwgCi0gICAgMjQyLCA0MiwgMiwgMjQ3LCAyMDksIDcsIDMsIDEsIDI0MiwgNDIsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAKLSAgICAyNTAsIDExNywgNywgMywgMSwgMjQyLCA0MiwgMiwgMjUwLCAxMTcsIDcsIDYsIDEsIDI0MiwgNDIsIDIsIDI1MSwgNzUsIAotICAgIDU1LCA3LCAzLCAxLCAyNDIsIDQyLCAyLCAyNTEsIDc1LCA1NSwgNywgNiwgMSwgMjQwLCAxNDYsIDIsIDIxNywgNDMsIDU1LCAKLSAgICA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgMjE3LCA0MywgNTUsIDcsIDYsIDEsIDI0MCwgMTQ2LCAyLCAyNDcsIDIxMCwgMjQsIAotICAgIDE3OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0NywgMjEwLCAyNCwgMTc5LCA3LCA2LCAxLCAyMzUsIDI4LCAyLCAxNzksIAotICAgIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDE3OSwgNywgNiwgMSwgMjM1LCAyOCwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzUsIDI4LCAKLSAgICAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjMyLCAKLSAgICAyNDMsIDU1LCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgNjIsIDU1LCA3LCAKLSAgICA2LCAxLCAyMzMsIDE3MSwgMiwgNjIsIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMjMzLCAxNzEsIDIsIDYyLCAKLSAgICAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCAxNzksIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCAKLSAgICAxNzksIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNDksIDcsIDYsIDEsIAotICAgIDIzMiwgMTEwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIzMiwgMTEwLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIAotICAgIDYyLCA0OSwgNywgMywgMSwgMjMwLCA5OCwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMzAsIDk4LCAyLCA2MiwgNTUsIDcsIDMsIAotICAgIDEsIDIzMCwgOTgsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjMwLCA5OCwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMzAsIAotICAgIDk4LCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0OSwgMjI0LCA1NSwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDIxNywgNDMsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjE3LCAKLSAgICA0MywgMjQsIDE3OSwgNywgNiwgMSwgMTU3LCAyLCAyMTcsIDQzLCAyNCwgMjQ3LCAyMDksIDcsIDMsIDEsIDE1NywgMiwgCi0gICAgMjE3LCA0MywgMjQsIDI0NywgMjA5LCA3LCA2LCAxLCAxNTcsIDIsIDIzMiwgMzgsIDI0LCAyNDIsIDExMywgNywgMywgMSwgCi0gICAgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE1NywgMiwgMjMyLCAzOCwgMjQsIDE3OSwgNywgMywgCi0gICAgMSwgMTU3LCAyLCAyMzIsIDM4LCAyNCwgMTc5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMTc5LCA3LCAzLCAxLCAyMjYsIAotICAgIDIzMCwgMiwgMTc5LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjYsIDIzMCwgMiwgNjIsIDQ5LCAKLSAgICA3LCA2LCAxLCAyMjQsIDExMywgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMjQsIAotICAgIDExMywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMjQsIDExMywgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMjQsIDExMywgMiwgNjIsIAotICAgIDI1MSwgMjIwLCAyNCwgMjMyLCAzNywgNywgMywgMSwgMjI0LCAxMTMsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDIzMiwgMzcsIAotICAgIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIyNCwgMTEzLCAyLCAyMzIsIDI0MywgNTUsIAotICAgIDcsIDYsIDEsIDIyMywgNCwgMiwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjIzLCA0LCAKLSAgICAyLCA2MiwgNTUsIDcsIDMsIDEsIDIyMywgNCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAyMjMsIDQsIDIsIDI1NCwgMTY0LCAyNCwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1NCwgMTY0LCAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAyMjMsIDQsIDIsIAotICAgIDI1MCwgMTY3LCAyNCwgNjIsIDQ5LCA3LCAzLCAxLCAyMjMsIDQsIDIsIDI1MCwgMTY3LCAyNCwgNjIsIDQ5LCA3LCA2LCAxLCAKLSAgICAyMjMsIDQsIDIsIDYyLCAyNTEsIDIyMCwgMjQsIDYyLCA0OSwgNywgMywgMSwgMjIzLCA0LCAyLCA2MiwgMjUxLCAyMjAsIAotICAgIDI0LCA2MiwgNDksIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNDksIAotICAgIDcsIDYsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCA2MiwgNTUsIDcsIDYsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyMzIsIDI0MywgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyMzIsIDI0MywgNTUsIDcsIDYsIDEsIDIxOCwgCi0gICAgMTAwLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIDIxOCwgMTAwLCAyLCAyNDksIDIyNCwgNTUsIDcsIDYsIDEsIDExMSwgCi0gICAgMiwgMjQ3LCAyMTAsIDU1LCA3LCAzLCAxLCAxMTEsIDIsIDI0NywgMjEwLCA1NSwgNywgNiwgMSwgMTExLCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgNywgMywgMSwgMTExLCAyLCAyMTcsIDQzLCA1NSwgNywgNiwgMSwgMTExLCAyLCAyNDksIDIyNCwgNTUsIDcsIDMsIDEsIAotICAgIDExMSwgMiwgMjQ5LCAyMjQsIDU1LCA3LCA2LCAxLCAxMTEsIDIsIDIxNywgNDMsIDI0LCAxNzksIDcsIDMsIDEsIDExMSwgMiwgCi0gICAgMjE3LCA0MywgMjQsIDE3OSwgNywgNiwgMSwgMTExLCAyLCAyMzIsIDM4LCAyNCwgMjQ3LCAyMDksIDcsIDMsIDEsIDExMSwgCi0gICAgMiwgMjMyLCAzOCwgMjQsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAyMTcsIDQyLCA3LCAzLCAxLCAyMTUsIDgwLCAKLSAgICAyLCAyMTcsIDQyLCA3LCA2LCAxLCAyMTUsIDgwLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxNSwgODAsIDIsIDYyLCA1NSwgNywgCi0gICAgNiwgMSwgMjE0LCA4MywgMiwgMjQyLCAxMTMsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDI0MiwgMTEzLCA3LCA2LCAxLCAyMTQsIAotICAgIDgzLCAyLCAxNzksIDcsIDMsIDEsIDIxNCwgODMsIDIsIDE3OSwgNywgNiwgMSwgMjE0LCA4MywgMiwgMjQ3LCAyMDksIDcsIAotICAgIDMsIDEsIDIxNCwgODMsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTQsIDgzLCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxNCwgCi0gICAgODMsIDIsIDYyLCA0OSwgNywgNiwgMSwgMjE0LCA4MywgMiwgNjIsIDU1LCA3LCAzLCAxLCAyMTQsIDgzLCAyLCA2MiwgNTUsIAotICAgIDcsIDYsIDEsIDIxMywgMTY3LCAyLCA2MiwgNDksIDcsIDMsIDEsIDIxMywgMTY3LCAyLCA2MiwgNDksIDcsIDYsIDEsIDIxMywgCi0gICAgMTY3LCAyLCAyNDcsIDIwOSwgNywgMywgMSwgMjEzLCAxNjcsIDIsIDI0NywgMjA5LCA3LCA2LCAxLCAyMTMsIDEwNiwgMiwgCi0gICAgNjIsIDQ5LCA3LCAzLCAxLCAyMTMsIDEwNiwgMiwgNjIsIDQ5LCA3LCA2LCAxLCAyMTIsIDE1MywgMiwgMjQ5LCAyMjMsIDcsIAotICAgIDMsIDEsIDIxMiwgMTUzLCAyLCAyNDksIDIyMywgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDYyLCA1NSwgNywgMywgMSwgMjEyLCAKLSAgICAxNTMsIDIsIDYyLCA1NSwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjEyLCAxNTMsIDIsIAotICAgIDIzMiwgMjQzLCA1NSwgNywgMywgMSwgMjQyLCA0MiwgMiwgMjMyLCAyNDMsIDU1LCA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgCi0gICAgMjQ3LCAyMDksIDcsIDMsIDEsIDIxNCwgODMsIDIsIDIyMywgMTMxLCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIyMywgCi0gICAgMTMxLCA0OSwgNywgMywgMSwgMTE4LCAyLCA0NiwgMTUxLCAyMjMsIDEzMCwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDYyLCAKLSAgICA0OSwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMTg0LCAyMjMsIDQsIDIsIDEyNCwgCi0gICAgOTAsIDcsIDYsIDEsIDIyMCwgMjU1LCAxOTcsIDcsIDMsIDEsIDI0OCwgNSwgNywgNiwgMSwgMTE4LCAyLCA2MiwgNTUsIDcsIAotICAgIDMsIDEsIDExOCwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxMTgsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTgsIDIsIDI0MSwgCi0gICAgMzgsIDQ5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgMTc5LCA3LCA2LCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExOCwgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAKLSAgICAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDExOCwgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIAotICAgIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI0OSwgMjI0LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTE4LCAyLCAyNDksIDIyNCwgCi0gICAgMjQsIDYyLCA1NSwgNywgMywgMSwgMTE4LCAyLCAyNDksIDIyNCwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTE4LCAyLCAyNTEsIAotICAgIDc1LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAxNzksIDcsIDYsIDEsIDExOCwgMiwgMjUxLCA3NSwgCi0gICAgMjQsIDI0MiwgMTEzLCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTE4LCAyLCAKLSAgICAyNTEsIDc1LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAKLSAgICA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCAyMTcsIAotICAgIDQyLCA3LCA2LCAxLCAxMTgsIDIsIDI1MSwgNzUsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDExOCwgMiwgMjUxLCA3NSwgMjQsIAotICAgIDYyLCA1NSwgNywgNiwgMSwgMTkxLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxOTEsIAotICAgIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxOTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxOTEsIDIsIDIxNywgNDIsIAotICAgIDcsIDMsIDEsIDE5MSwgMiwgMjE3LCA0MiwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgMywgMSwgCi0gICAgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDE3OSwgNywgNiwgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCAzLCAKLSAgICAxLCAxOTEsIDIsIDI0OSwgMjI0LCAyNCwgMjQyLCAxMTMsIDcsIDYsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIAotICAgIDM4LCA0OSwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxOTEsIDIsIDI0OSwgCi0gICAgMjI0LCAyNCwgMjE3LCA0MiwgNywgMywgMSwgMTkxLCAyLCAyNDksIDIyNCwgMjQsIDIxNywgNDIsIDcsIDYsIDEsIDE5MSwgCi0gICAgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDMsIDEsIDE5MSwgMiwgMjQ5LCAyMjQsIDI0LCA2MiwgNTUsIDcsIDYsIDEsIAotICAgIDI0MCwgMTQ2LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMjQwLCAxNDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAKLSAgICAyNDAsIDE0NiwgMiwgNjIsIDU1LCA3LCAzLCAxLCAyNDAsIDE0NiwgMiwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDYyLCAKLSAgICA1NSwgNywgMywgMSwgMTU3LCAyLCA2MiwgNTUsIDcsIDYsIDEsIDE1NywgMiwgMjQxLCAzOCwgNDksIDcsIDMsIDEsIDE1NywgCi0gICAgMiwgMjQxLCAzOCwgNDksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAxNzksIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAKLSAgICAyMjQsIDI0LCAxNzksIDcsIDYsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDIsIDExMywgNywgMywgMSwgMTU3LCAyLCAKLSAgICAyNDksIDIyNCwgMjQsIDI0MiwgMTEzLCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgMjQxLCAzOCwgNDksIDcsIDMsIAotICAgIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyNDEsIDM4LCA0OSwgNywgNiwgMSwgMTU3LCAyLCAyNDksIDIyNCwgMjQsIDIxNywgCi0gICAgNDIsIDcsIDMsIDEsIDE1NywgMiwgMjQ5LCAyMjQsIDI0LCAyMTcsIDQyLCA3LCA2LCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAKLSAgICAyNCwgNjIsIDU1LCA3LCAzLCAxLCAxNTcsIDIsIDI0OSwgMjI0LCAyNCwgNjIsIDU1LCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMTc5LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCA2LCAxLCAxNTcsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgMTU3LCAKLSAgICAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAzOCwgNDksIAotICAgIDcsIDYsIDEsIDE1NywgMiwgMjQwLCAyMzYsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxNTcsIDIsIDI0MCwgMjM2LCAyNCwgCi0gICAgMjE3LCA0MiwgNywgNiwgMSwgMTU3LCAyLCAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTU3LCAyLCAyNDAsIAotICAgIDIzNiwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMTExLCAyLCA2MiwgNTUsIDcsIDMsIDEsIDExMSwgMiwgNjIsIDU1LCA3LCA2LCAKLSAgICAxLCAxMTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MSwgMzgsIDQ5LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMTc5LCA3LCA2LCAxLCAxMTEsIDIsIAotICAgIDI0MCwgMjM2LCAyNCwgMjQyLCAxMTMsIDcsIDMsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyNDIsIDExMywgNywgNiwgMSwgCi0gICAgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDI0MSwgMzgsIDQ5LCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgMjM2LCAyNCwgMjQxLCAKLSAgICAzOCwgNDksIDcsIDYsIDEsIDExMSwgMiwgMjQwLCAyMzYsIDI0LCAyMTcsIDQyLCA3LCAzLCAxLCAxMTEsIDIsIDI0MCwgCi0gICAgMjM2LCAyNCwgMjE3LCA0MiwgNywgNiwgMSwgMTExLCAyLCAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgMywgMSwgMTExLCAyLCAKLSAgICAyNDAsIDIzNiwgMjQsIDYyLCA1NSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDI0MiwgMTEzLCA3LCAzLCAxLCAyMTMsIDEwNiwgCi0gICAgMiwgMjQyLCAxMTMsIDcsIDYsIDEsIDIxMywgMTA2LCAyLCA2MiwgNTUsIDcsIDMsIDEsIDIxMywgMTA2LCAyLCA2MiwgNTUsIAotICAgIDcsIDYsIDEsIDIxMywgMTA2LCAyLCAyNDEsIDM4LCA0OSwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDI0MSwgMzgsIDQ5LCA3LCAKLSAgICA2LCAxLCAyMTMsIDEwNiwgMiwgMjE3LCA0MiwgNywgMywgMSwgMjEzLCAxMDYsIDIsIDIxNywgNDIsIDcsIDYsIDEsIDIzMSwgCi0gICAgMzYsIDIzMiwgMjE0LCA3LCAzLCAxLCAyMzEsIDM2LCAyMzIsIDIxNCwgNywgNiwgMSwgMjMxLCAzNiwgMjE1LCA3OSwgNywgCi0gICAgMywgMSwgMjMxLCAzNiwgMjE1LCA3OSwgNywgNiwgMSwgMjEzLCAxMDYsIDIsIDIzMiwgMTc3LCA3LCAzLCAxLCAyMTMsIAotICAgIDEwNiwgMiwgMjMyLCAxNzcsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgCi0gICAgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIAotICAgIDM5LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAKLSAgICAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgNTAsIAotICAgIDI1LCAzLCAxLCAyNDUsIDY0LCAyLCAyMjUsIDM5LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIAotICAgIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIwNywgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgCi0gICAgMjQ4LCA5OSwgMjUsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgNjQsIAotICAgIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgCi0gICAgMSwgMjQ1LCA2NCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDM5LCAyNSwgMywgCi0gICAgMSwgMjQ1LCAyOSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIAotICAgIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIAotICAgIDIyNiwgMjM0LCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAKLSAgICAyNDUsIDI5LCAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCAKLSAgICAyMzQsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIAotICAgIDIwNywgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyNDgsIDk5LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgCi0gICAgMTg0LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzQsIAotICAgIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjA3LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAKLSAgICAyLCAyMjUsIDM5LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjM1LCAxODQsIDIsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgCi0gICAgMjM1LCAxODQsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2NiwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIAotICAgIDI0OCwgOTksIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDMsIAotICAgIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2NiwgMiwgMjI1LCAzOSwgMjUsIDYsIAotICAgIDEsIDIyNywgNjYsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAKLSAgICA2LCAxLCAyMjcsIDY2LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNSwgNDAsIDI0LCAKLSAgICAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIAotICAgIDIyNSwgMzksIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjA3LCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMTUsIAotICAgIDEyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIwNywgCi0gICAgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMTUsIDEyOSwgMiwgMjQ4LCA5OSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIAotICAgIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIxNSwgCi0gICAgMTI5LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCAzOSwgMjUsIDMsIDEsIDIyNywgCi0gICAgNjgsIDIsIDI0OCwgOTksIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCAzLCAxLCAKLSAgICAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIAotICAgIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCAKLSAgICA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgNiwgMSwgMjI3LCAKLSAgICA2OCwgMiwgMjI1LCAzOSwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDI0OCwgOTksIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgMjM0LCAKLSAgICAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMDcsIAotICAgIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIAotICAgIDIzNCwgMjUsIDMsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjQ1LCA2NCwgMiwgMjI2LCAyMzQsIDI1LCAKLSAgICAzLCAxLCAyNDUsIDI5LCAyLCAyMTQsIDI0NSwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgCi0gICAgMjM1LCAxODQsIDIsIDIxNCwgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjI3LCAKLSAgICA2NiwgMiwgMjE0LCAyNDUsIDI1LCAzLCAxLCAyMjcsIDY2LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIDIzNCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMDcsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIAotICAgIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAKLSAgICAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIxMiwgCi0gICAgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIAotICAgIDI1NCwgNTMsIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDQwLCAyNCwgMjI1LCAKLSAgICA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIAotICAgIDQwLCAyNCwgMjE0LCAyNDYsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjA3LCAyNCwgMjE0LCAyNDYsIAotICAgIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgCi0gICAgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIAotICAgIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIwNywgMjQsIDIyNiwgCi0gICAgNTEsIDI0LCAyMjUsIDUxLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgCi0gICAgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjE0LCAKLSAgICAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIAotICAgIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgCi0gICAgMjksIDIsIDIwNywgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAKLSAgICAyNCwgMjI2LCA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAKLSAgICAyLCAyMDcsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjI1LCA1MSwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIwNywgMjQsIDIxNCwgMjQ2LCAyNCwgMjI1LCA1MSwgMjUsIDYsIDEsIAotICAgIDI0NSwgMjksIDIsIDIyNSwgNDAsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAKLSAgICAyMDcsIDI0LCAyMjYsIDIzNSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDQwLCAyNCwgMjI2LCAKLSAgICA1MSwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMDcsIDI0LCAyMjYsIDUxLCAyNCwgMjI1LCA1MSwgMjUsIAotICAgIDMsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ2LCAyNCwgMjEyLCAyMTAsIDI1LCAKLSAgICAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgCi0gICAgMjI1LCA0MCwgMjQsIDIyNiwgMjM1LCAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMDcsIDI0LCAyMjYsIAotICAgIDIzNSwgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIAotICAgIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIwNywgMjQsIDIyNiwgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDIyNywgCi0gICAgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI1LCA1MSwgMjUsIAotICAgIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNDAsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAKLSAgICAyLCAyMDcsIDI0LCAyMTQsIDI0NiwgMjQsIDIyNSwgNTEsIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjUsIDQwLCAyNCwgCi0gICAgMjI2LCAyMzUsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCAyMzUsIDI0LCAyMjUsIAotICAgIDUxLCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjI1LCA0MCwgMjQsIDIyNiwgNTEsIDI0LCAyMjUsIDUxLCAyNSwgNiwgMSwgCi0gICAgMjI3LCA2OCwgMiwgMjA3LCAyNCwgMjI2LCA1MSwgMjQsIDIyNSwgNTEsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIAotICAgIDEwMSwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMTQsIDI0NiwgMjQsIAotICAgIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNTQsIDUzLCAyLCAyMjYsIDIzNSwgCi0gICAgMjQsIDIxMiwgMjEwLCAyNSwgMywgMSwgMjU0LCA1MywgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDI1NCwgNTMsIDIsIDIyNiwgCi0gICAgNTEsIDI0LCAyMTIsIDIxMCwgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMTAxLCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgCi0gICAgMjMyLCAzNywgMjUsIDYsIDEsIDI1NCwgNTMsIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjU0LCA1MywgMiwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyNTQsIDUzLCAyLCAyMjUsIDUxLCAyNSwgMjM0LCAxMSwgMjUsIDIyNSwgNTEsIDI1LCAyMjUsIDM5LCAyNSwgCi0gICAgMjI2LCA1MCwgMjUsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ2LCAyNCwgCi0gICAgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMTIsIDIxMCwgMjUsIDMsIDEsIDI0NSwgMjksIDIsIDIyNiwgMjM1LCAKLSAgICAyNCwgMjEyLCAyMTAsIDI1LCAzLCAxLCAyNDUsIDI5LCAyLCAyMjYsIDUwLCAyNSwgMywgMSwgMjQ1LCAyOSwgMiwgMjI2LCAKLSAgICA1MSwgMjQsIDIxMiwgMjEwLCAyNSwgNiwgMSwgMjQ1LCA2NCwgMiwgMjE0LCAyNDUsIDI1LCA2LCAxLCAyNDUsIDY0LCAyLCAKLSAgICAyMjYsIDIzNCwgMjUsIDYsIDEsIDI0NSwgMjksIDIsIDIxNCwgMjQ1LCAyNSwgNiwgMSwgMjQ1LCAyOSwgMiwgMjI2LCAyMzQsIAotICAgIDI1LCA2LCAxLCAyNDUsIDI5LCAyLCAyMjUsIDUxLCAyNSwgMjI1LCA0MCwgMjQsIDIxNCwgMjQ1LCAyNSwgMjI1LCA0MCwgCi0gICAgMjQsIDIyNiwgMjM0LCAyNSwgMjI1LCA0MCwgMjQsIDIyNiwgNTAsIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjE0LCAxMDEsIAotICAgIDI1LCAzLCAxLCAyMzUsIDE4NCwgMiwgMjMyLCAzNywgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIxNCwgCi0gICAgMjQ1LCAyNSwgMywgMSwgMjM1LCAxODQsIDIsIDI0NywgMjA0LCAyNCwgMjI2LCAyMzQsIDI1LCAzLCAxLCAyMzUsIDE4NCwgCi0gICAgMiwgMjI2LCA1MCwgMjUsIDMsIDEsIDIzNSwgMTg0LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgNTAsIDI1LCA2LCAxLCAyMzUsIAotICAgIDE4NCwgMiwgMjE0LCAxMDEsIDI1LCA2LCAxLCAyMzUsIDE4NCwgMiwgMjMyLCAzNywgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDIzNSwgMTg0LCAyLCAyMjYsIDIzNCwgMjUsIDIwNywgMjQsIDIxNCwgMjQ1LCAyNSwgCi0gICAgMjA3LCAyNCwgMjI2LCAyMzQsIDI1LCAyMDcsIDI0LCAyMjYsIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIxNCwgMTAxLCAKLSAgICAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDIzMiwgMzcsIDI1LCAzLCAxLCAyMTUsIDEyOSwgMiwgMjQ3LCAyMDQsIDI0LCAyMTQsIAotICAgIDI0NSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyNDcsIDIwNCwgMjQsIDIyNiwgMjM0LCAyNSwgMywgMSwgMjIzLCAxOTEsIAotICAgIDIsIDIyNSwgMzksIDI1LCAzLCAxLCAyMjMsIDE5MSwgMiwgMjQ4LCA5OSwgMjUsIDMsIDEsIDIxNSwgMTI5LCAyLCAyMjYsIAotICAgIDUwLCAyNSwgMywgMSwgMjE1LCAxMjksIDIsIDI0NywgMjA0LCAyNCwgMjI2LCA1MCwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAKLSAgICAyMTQsIDEwMSwgMjUsIDYsIDEsIDIxNSwgMTI5LCAyLCAyMzIsIDM3LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIxNCwgCi0gICAgMjQ1LCAyNSwgNiwgMSwgMjE1LCAxMjksIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjIzLCAxOTEsIDIsIDI0OCwgOTksIDI1LCAKLSAgICAyNDcsIDIwNCwgMjQsIDIxNCwgMjQ1LCAyNSwgMjQ3LCAyMDQsIDI0LCAyMjYsIDIzNCwgMjUsIDIxNCwgMjQ1LCAyNSwgMywgCi0gICAgMSwgMjI3LCA2OCwgMiwgMjE0LCAyNDYsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIxMiwgMjEwLCAKLSAgICAyNSwgMywgMSwgMjI3LCA2OCwgMiwgMjI2LCAyMzUsIDI0LCAyMTIsIDIxMCwgMjUsIDMsIDEsIDIyNywgNjgsIDIsIDIyNiwgCi0gICAgNTAsIDI1LCAzLCAxLCAyMjcsIDY4LCAyLCAyMjYsIDUxLCAyNCwgMjEyLCAyMTAsIDI1LCA2LCAxLCAyMjcsIDY2LCAyLCAKLSAgICAyMTQsIDI0NSwgMjUsIDYsIDEsIDIyNywgNjYsIDIsIDIyNiwgMjM0LCAyNSwgNiwgMSwgMjI3LCA2OCwgMiwgMjE0LCAyNDUsIAotICAgIDI1LCA2LCAxLCAyMjcsIDY4LCAyLCAyMjYsIDIzNCwgMjUsIDYsIDEsIDIyNywgNjgsIDIsIDIyNSwgNTEsIDI1LCAyMjYsIAotICAgIDIzNCwgMjUsIDI0OCwgOTksIDI0NSwgMTA5LCAyMjQsIDE3MiwgMjQ1LCAxMTgsIDIyNCwgMTcyLCAyNDUsIDEwOSwgMjE5LCAKLSAgICAyMDYsIDI0NSwgMTE4LCAyMTksIDIwNiwgMjE3LCA5NSwgMjE5LCAyMDYsIDI0MywgMjM1LCAyMTksIDIwNiwgMjIwLCA1MSwgCi0gICAgMjE5LCAyMDYsIDI0NCwgODEsIDIxOSwgMjA2LCAyMjUsIDI3LCAyMTksIDIwNiwgMjE3LCAxMjMsIDIxOSwgMjA2LCAyNDIsIAotICAgIDE3LCAyMTksIDIwNiwgMjEyLCA4MCwgMjEzLCAyMzAsIDIxOSwgMjA2LCAyMTIsIDgwLCAyMTMsIDIzMCwgMjI4LCAxNzgsIAotICAgIDIxMiwgODAsIDIxMywgMjMwLCAyMzUsIDY2LCAyMzMsIDYyLCA3NywgMjIzLCAxNDAsIDc3LCAyNDAsIDE2MCwgMjI4LCAKLSAgICAxNzksIDI0MCwgMTYwLCAyNDQsIDgxLCAyNDgsIDEwMSwgMjQ1LCAxMDksIDI0OCwgMTAxLCAyNDUsIDExOCwgMjQ4LCAxMDEsIAotICAgIDE5OSwgMTM0LCA1MSwgNzEsIDIzMiwgMjQyLCA1MSwgMTE1LCAyMzIsIDI0MiwgNDIsIDIyMCwgODEsIDIyNCwgMTQzLCA3NywgCi0gICAgNDYsIDIyMCwgODEsIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjMyLCAxNjQsIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjQxLCAKLSAgICAxNDksIDIyNCwgMTQzLCA3NywgNDIsIDUxLCAyMjQsIDE0MywgNzcsIDQ2LCA1MSwgMjI0LCAxNDMsIDc3LCA1MSwgMjMyLCAKLSAgICAxNjQsIDIyNCwgMTQzLCA3NywgNTEsIDI0MSwgMTQ5LCAyMjQsIDE0MywgNzcsIDI0OCwgMTQ5LCA1MSwgMjQ4LCAxNDksIAotICAgIDI1MSwgNDIsIDIxNiwgMTgwLCAyNTEsIDQyLCAxMjIsIDYyLCAyMzMsIDgwLCAxMTcsIDYyLCAyMzMsIDgwLCAxOTksIDI0NSwgCi0gICAgMTIwLCAyNDAsIDE1OCwgMjI1LCAxNDQsIDIzMiwgMjQzLCAyMjEsIDU3LCAyMjYsIDE0MywgMjIxLCA1NywgMjMzLCA2MiwgCi0gICAgMjQ1LCAxMTYsIDIyMywgMTQwLCAyNDUsIDExNiwgMjI1LCAxMjYsIDI0NywgMTQ4LCAyNDMsIDI0NCwgMjMzLCA2MiwgMjI2LCAKLSAgICAyNDEsIDIyMywgMTQwLCAyMjYsIDI0MSwgMjMwLCAxNCwgMjI4LCAxODQsIDIxOSwgMjA2LCAyMjYsIDU4LCAyMzEsIDYsIAotICAgIDUyLCAyMjYsIDU4LCAyMTcsIDIwMSwgMjE3LCAxMDEsIDUyLCAyMjUsIDcxLCA1MSwgMjI1LCA3MSwgMjE2LCAxNjksIDIyNSwgCi0gICAgNzEsIDIyMywgMjAyLCAyMjUsIDcxLCAyMjMsIDIwMiwgNTEsIDIyNSwgNzEsIDIyMywgMjAyLCAyMTYsIDE2OSwgMjI1LCAKLSAgICA3MSwgMjUwLCAxNzAsIDIyMCwgODEsIDIzMywgNjYsIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgMjIwLCA4MSwgMjIzLCAxNDQsIAotICAgIDI1NCwgMTksIDIyNCwgMTQzLCA3NywgMjI0LCAwLCA3NywgNTEsIDI0NCwgMjU0LCA3NywgMjM1LCAxOTgsIDIyNiwgMjQzLCAKLSAgICAyMTUsIDE1MCwgMTM3LCAyMTcsIDY1LCAyNTAsIDE3MSwgMjM1LCAyMTMsIDIyNSwgMTQ0LCAyNTMsIDEzMCwgMjQwLCAxNjEsIAotICAgIDI1MSwgNDIsIDI0MywgMjI4LCAyMjAsIDIzLCA0MiwgNDEsIDI1MSwgODUsIDIsIDIyNCwgMTUyLCA0NiwgNDEsIDI1MSwgCi0gICAgODUsIDIsIDIyNCwgMTUyLCA1MSwgMjI0LCAxNTgsIDc3LCAyMjQsIDE1OCwgMjQ0LCAyNTQsIDc3LCAyNDQsIDI1NCwgMjI0LCAKLSAgICAxNTgsIDc3LCAyMTcsIDIzLCA1LCAyNDUsIDMwLCAyMjMsIDIwMiwgMjI1LCAyMDAsIDUyLCA4MywgMTMyLCAyNTEsIDQyLCAKLSAgICA4MywgOTUsIDI1MSwgNDIsIDExNSwgMjUzLCAxMzIsIDIyMywgMjAyLCAyMjEsIDcwLCAyNDksIDE5NCwgMjE1LCAxMzQsIAotICAgIDExNywgMjUzLCAxMzEsIDI1NCwgNjcsIDIxNCwgMTY1LCAyNDksIDE1NiwgMjMwLCAyNTEsIDUyLCAyMTgsIDE3OSwgMjQ4LCAKLSAgICAxMDEsIDIzNSwgMTkxLCAyMTUsIDE1MCwgMjQ0LCAyMSwgMjI1LCAyNywgNzcsIDEzMywgNjIsIDIyNSwgMjYsIDIyNCwgCi0gICAgMTY5LCAyMjUsIDcxLCAyNDMsIDIzNywgNjIsIDIyNSwgMjYsIDI0NCwgNTAsIDYyLCAyMjUsIDI2LCAxMTcsIDYyLCAyMjUsIAotICAgIDI2LCAyNDMsIDIzNywgNjIsIDc3LCAyNDYsIDcyLCAyNDksIDcwLCAyMTYsIDE3OSwgNzEsIDI0MywgMjM3LCAyNDcsIDcyLCAKLSAgICAyMzEsIDE0NywgMTQsIDIxOSwgMjA2LCAyMTMsIDE5NiwgMjM1LCA2NiwgMjQzLCAxOTgsIDI1MywgMjIyLCAyMzUsIDE4OSwgCi0gICAgMjE3LCAzOCwgMjM1LCAxODksIDIyMSwgNTcsIDIzNSwgMTg5LCAyMjUsIDE1NiwgMjM1LCAyMjUsIDIxOCwgMTI3LCAyMTgsIAotICAgIDE5NiwgMjU0LCAxNjYsIDIxOCwgMTI3LCAyMTgsIDE5NiwgMjM1LCAyMjUsIDEyLCAyNDMsIDI0NSwgMjIxLCAzLCAyNTQsIAotICAgIDE2NiwgMTIsIDI0MywgMjQ1LCAyMjEsIDMsIDIzMCwgMTAsIDIxLCAyMjEsIDQsIDIyOCwgMTgwLCAyMSwgMjIxLCA0LCAKLSAgICAyMTgsIDIyMywgMjEyLCA3OSwgMjE4LCAyMjMsIDcsIDMsIDEsIDcyLCAyMTgsIDIyMywgMTYzLCAyMTgsIDIyMywgMTgwLCAKLSAgICAyMTgsIDIyMywgMTg5LCAyMTgsIDIyMywgMTk4LCAyMTgsIDIyMywgMTk1LCAyMTgsIDIyMywgMjAwLCAyMTgsIDIyMywgOTQsIAotICAgIDUyLCAyMTgsIDIyMywgMjMwLCAyNTAsIDIxOCwgMjIzLCAyNDUsIDYxLCA1MiwgMjE4LCAyMjMsIDQyLCAyMjYsIDEzMSwgCi0gICAgMjE4LCAyMjMsIDQ2LCAyMjYsIDEzMSwgMjE4LCAyMjMsIDcsIDMsIDEsIDIwNCwgMjE5LCAxMCwgMjEyLCA3OSwgMjE5LCAKLSAgICAxMCwgMTE2LCAyMTksIDEwLCAxMDksIDIxOSwgMTAsIDE2NiwgMjE5LCAxMCwgMTYzLCAyMTksIDEwLCAxODAsIDIxOSwgMTAsIAotICAgIDE4OSwgMjE5LCAxMCwgMTk4LCAyMTksIDEwLCAxOTUsIDIxOSwgMTAsIDIwMCwgMjE5LCAxMCwgOTQsIDUyLCAyMTksIDEwLCAKLSAgICAyMzAsIDI1MCwgMjE5LCAxMCwgMjQ1LCA2MSwgNTIsIDIxOSwgMTAsIDQyLCAyMjYsIDEzMSwgMjE5LCAxMCwgNDYsIDIyNiwgCi0gICAgMTMxLCA3LCAyMTksIDEwLCAzLCAxLCA2MSwgNywgMjE5LCAxMCwgMywgMSwgNzQsIDcsIDIxOSwgMTAsIDMsIDEsIDc1LCA3LCAKLSAgICAyMTksIDEwLCAzLCAxLCAyMTMsIDE2NiwgNywgMjE5LCAxMCwgMywgMSwgMjIyLCAxMTMsIDcsIDIxOSwgMTAsIDMsIDEsIAotICAgIDI0MiwgNDEsIDcsIDIxOSwgMTAsIDMsIDEsIDIzNSwgMjcsIDcsIDIxOSwgMTAsIDMsIDEsIDE1MCwgNywgMjE5LCAxMCwgMywgCi0gICAgMSwgMTgzLCA3LCAyMTksIDEwLCAzLCAxLCAyMDQsIDcsIDIxOSwgMTAsIDMsIDEsIDIyNiwgMjI5LCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAxOTcsIDcsIDIxOSwgMTAsIDMsIDEsIDIxOCwgOTksIDI0NSwgMTMsIDUyLCAyNDksIDE2NSwgNTIsIDI0OSwgNTcsIAotICAgIDUyLCAyNDMsIDIyMSwgMjQzLCAyMjQsIDUyLCAyMzIsIDIyNywgNTIsIDIzMSwgNywgNTIsIDIzMCwgMjksIDUyLCAyMjYsIAotICAgIDM4LCA1MiwgMjIzLCAyOSwgNTIsIDIxMywgMjA0LCA1MiwgMTU2LCAyMjAsIDIyOSwgNTIsIDI0NywgODEsIDUyLCAyNDUsIAotICAgIDE0LCA1MiwgMjM0LCA4NSwgNTIsIDIxNiwgNzYsIDUyLCAyNDYsIDU1LCA1MiwgMjQzLCAxNiwgMjI2LCA2OCwgNTIsIDIyNiwgCi0gICAgMzYsIDUyLCAyNDIsIDg4LCA1MiwgMjUzLCA5OCwgNTIsIDI0MCwgMjE1LCA1MiwgMjUwLCAxMTksIDUyLCAyMzIsIDIyMCwgCi0gICAgMjE2LCAyMTYsIDUyLCAyMTksIDE4OCwgNTIsIDIxNywgMTk4LCA1MiwgMjM1LCAyMzgsIDIyMywgMjksIDUyLCAzNywgNDIsIAotICAgIDI0MSwgMjM4LCA0OSwgMzcsIDQ2LCAyNDEsIDIzOCwgNDksIDM3LCAxODQsIDcxLCAyMzIsIDI0MywgMjI2LCAyNDQsIDM3LCAKLSAgICAyMjAsIDE3NSwgNzEsIDIzMiwgMjQzLCAyMjYsIDI0NCwgMzcsIDI1MywgMjU1LCA3NiwgNDksIDM3LCAyNDksIDE5NSwgNzYsIAotICAgIDQ5LCAzNywgNDIsIDc2LCA0OSwgMzcsIDQ2LCA3NiwgNDksIDM3LCAyMjMsIDEzMSwgMjI2LCAyNDQsIDM3LCAyNDksIDE5NSwgCi0gICAgMjIzLCAxMzEsIDIyNiwgMjQ0LCAzNywgMjUzLCAyNTUsIDIyMywgMTMxLCAyMjYsIDI0NCwgMzcsIDEzMywgMTc2LCA0OSwgCi0gICAgMzcsIDI0MywgMjM3LCAxNzYsIDQ5LCAzNywgMjQ1LCAxMDQsIDI0OSwgMjI4LCAzNywgMjQ1LCAxMDQsIDIxOSwgMTY2LCAKLSAgICAzNywgMjQ1LCAxMDQsIDI0NywgMjAwLCAzNywgMjQ1LCAxMDQsIDI0OSwgMjI5LCAyNTIsIDk3LCAzNywgNDIsIDQ2LCA3NiwgCi0gICAgNDksIDM3LCAyNDUsIDEwNCwgMjIyLCAxMDcsIDM3LCAyNDUsIDEwNCwgMjM0LCAxNDEsIDM3LCAyNDUsIDEwNCwgMjE1LCAKLSAgICAxMjYsIDIyNSwgMTQxLCAyMTYsIDE4MywgMzcsIDIyMywgMjAzLCAyMTksIDIzMiwgMjI2LCAyNDQsIDM3LCA1MSwgNzEsIAotICAgIDIxOSwgNDUsIDIyNiwgMjQ0LCAzNywgMjU0LCA5LCA4NywgMzcsIDIxNiwgMTY5LCAyMTUsIDE1MiwgMzcsIDIxMywgMjMyLCAKLSAgICAyNTEsIDY4LCA0OSwgMzcsIDEzMiwgNzYsIDIyNiwgMjQ0LCAzNywgMTg0LCA1MSwgMjE5LCAyMzIsIDIyNiwgMjQ0LCAzNywgCi0gICAgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDM3LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNTcsIDM3LCAKLSAgICA0MiwgNzYsIDU1LCAzNywgNDYsIDc2LCA1NSwgMzcsIDI1MywgMTMzLCA0OSwgMjU0LCAxNzEsIDIyNywgOTcsIDI1NCwgCi0gICAgMTU2LCAyMTEsIDIxMSwgMjE3LCAxNDksIDIxOSwgMTksIDE4NywgNiwgMjUwLCAyNTIsIDI0OCwgMjIsIDI1MCwgMTEyLCAKLSAgICAyNTAsIDEwOSwgMjMyLCAyNDMsIDg3LCAyNTAsIDE3MiwgMjI3LCA5NywgMjUwLCAyMTIsIDIxNSwgMTU5LCAyNDUsIDE1LCAKLSAgICAyNDksIDEzMCwgMjIyLCAxMDQsIDI0OCwgMjIsIDI0NCwgMTQ3LCAxMTMsIDMsIDI0MywgMTc3LCAxMTMsIDYsIDI0MiwgNDEsIAotICAgIDI1MSwgMTQyLCA2LCAyNDIsIDQxLCAxODcsIDYsIDI0MiwgNDEsIDIyNSwgMTY5LCAyNDksIDEzMCwgMjI1LCAxNjksIDI0OSwgCi0gICAgMTMxLCAxMTAsIDExNywgMjI1LCAyNDAsIDExMywgNiwgNzIsIDI1MSwgMTQyLCA2LCA3MiwgMTEzLCA2LCAxNTAsIDExMywgCi0gICAgMywgMTUwLCAyMzMsIDE3MSwgNTQsIDI1MiwgNjAsIDg3LCAxODcsIDYsIDIwNCwgMjI4LCA1MiwgNTIsIDIxOSwgMjE4LCAKLSAgICAyMjQsIDEyLCAyNDksIDEwMSwgMTEzLCA2LCAyMjYsIDIyOSwgMTg3LCA2LCAyMjYsIDIyOSwgMTg3LCA2LCAyMjQsIDI0MCwgCi0gICAgMTEzLCA2LCAxNDksIDI1MSwgMTQyLCA2LCAxNDksIDE4NywgNiwgMTQ5LCAyMjUsIDc2LCAyMTgsIDIxLCAyMjMsIDIxNCwgCi0gICAgMjIxLCA1MywgNzcsIDIxNywgMjEwLCA1MiwgMjE2LCAyMTAsIDE1MiwgNTIsIDIxNCwgMjE3LCAxODcsIDYsIDIxMiwgMTUyLCAKLSAgICAyMjcsIDEsIDUyLCAyMjcsIDg3LCA1MiwgMjM1LCAxOTEsIDIyNywgODcsIDUyLCAyNTEsIDE0MiwgNiwgMjEyLCAxNTIsIAotICAgIDIxNiwgNTgsIDI1LCAzLCAxLCAyMzUsIDE4MywgMjM0LCAxNzksIDUyLCAyNTQsIDE2LCA1MiwgMTEzLCA2LCAyNTMsIDc0LCAKLSAgICAyNTEsIDE0MiwgNiwgMjUwLCAyNTIsIDI0NSwgMzMsIDg3LCAxMTMsIDMsIDc0LCAxMTMsIDYsIDc0LCAxMTMsIDYsIDI0NCwgCi0gICAgMjMwLCAyMTYsIDU4LCA2LCAyNDQsIDIzMCwgMTEzLCA2LCAxODMsIDExMywgMywgNzUsIDEwNiwgODcsIDI1MSwgMjA2LCAKLSAgICA4NywgMjQyLCAxNzgsIDg3LCAyNDgsIDEzNSwgODcsIDIzNSwgMjI5LCAyMTksIDIxNiwgMjIzLCA4OSwgNiwgMjI0LCAyNDAsIAotICAgIDI0NCwgMTUwLCA1MiwgMTg3LCAzLCAyMjUsIDI0MCwgMTg3LCAzLCAyNDMsIDgzLCAxODcsIDYsIDI0MywgODMsIDE4NywgNiwgCi0gICAgMjI1LCAyNDAsIDE4NywgMjMwLCA5NywgMjE4LCAyNDEsIDIxNiwgNTgsIDM1LCA2LCAyNDMsIDE3NywgMjE2LCA1OCwgMzUsIAotICAgIDYsIDE1MCwgMjIzLCAyMDIsIDM1LCA2LCAxNTAsIDIxNiwgNTgsIDM1LCA2LCAyMTMsIDEwNSwgMTg3LCAzMiwgNiwgMjQ5LCAKLSAgICAzLCAxODcsIDMyLCAzLCAyNDksIDMsIDE4NywgMzIsIDMsIDc0LCAxODcsIDMyLCAzLCA3MiwgMTg3LCAzMiwgMywgMjM1LCAKLSAgICAxNDIsIDIyNSwgNTQsIDIzMiwgMjQyLCAyMTYsIDU4LCAyNTQsIDM1LCAyMjYsIDU4LCA1MiwgMjU0LCA4OCwgMjE2LCA1OCwgCi0gICAgMywgMjQ0LCAyMzAsIDE2LCAzMSwgMjIyLCAxNjcsIDIxOSwgMjE2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjEsIDM5LCAKLSAgICAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMjksIDI1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDE5NCwgMjE0LCAKLSAgICA5NywgMjQzLCAyMjgsIDEyMiwgMjE3LCAxMjEsIDIxNCwgOTcsIDI0MywgMjI4LCAxMTcsIDIxNywgMTE5LCAyMTQsIDk3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyNDQsIDg2LCAyMTQsIDk3LCAyNDMsIDIyOCwgMTE3LCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTMzLCAyNDQsIDg1LCAyMTQsIDk3LCAyNDMsIDIyOCwgMjQzLCAyMzcsIDI0NCwgODUsIDIxNCwgOTcsIDI0MywgCi0gICAgMjI4LCAxMjIsIDIyMCwgNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAyNDQsIDUwLCAyMjAsIDQxLCAyMTQsIDk3LCAyNDMsIAotICAgIDIyOCwgMTIyLCAyNDUsIDE0NSwgMjE0LCA5NywgMjQzLCAyMjgsIDEzMywgMjQ1LCAxNDMsIDIxNCwgOTcsIDI0MywgMjI4LCAKLSAgICAyNDQsIDUwLCAyNDUsIDE0MywgMjE0LCA5NywgMjQzLCAyMjgsIDIyMSwgNDMsIDI0NSwgMTQzLCAyNDMsIDIyOCwgMjI4LCAKLSAgICA1MywgMTE2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTE2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTA5LCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMTY2LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTYzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMTgwLCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMTg5LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk4LCAyMjMsIDEwMCwgMjI4LCA1NCwgMTk1LCAyMjMsIDEwMCwgMjI4LCAKLSAgICA1NCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjE3LCAyMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDUsIDEyNCwgMjIzLCAKLSAgICAxMDAsIDIyOCwgNTQsIDIxNiwgNDEsIDIyMywgMTAwLCAyMjgsIDU0LCAyNDQsIDgzLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTIyLCAyNDAsIDIwMCwgMjIzLCAxMDAsIDIyOCwgNTQsIDI0NCwgNTAsIDI0MCwgMjAwLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMTIyLCAyMTcsIDEwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDExNiwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEwOSwgMywgCi0gICAgMjIzLCAxMDAsIDIyOCwgNTQsIDE2NiwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE2MywgMywgMjIzLCAxMDAsIDIyOCwgNTQsIAotICAgIDE4MCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE4OSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDE5OCwgMywgMjIzLCAxMDAsIAotICAgIDIyOCwgNTQsIDE5NSwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDIxNywgMjAwLCAKLSAgICAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ1LCAxMjQsIDMsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTYsIDQxLCAzLCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjQ0LCA4MywgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjQwLCAyMDAsIDMsIDIyMywgMTAwLCAKLSAgICAyMjgsIDU0LCAyNDQsIDUwLCAyNDAsIDIwMCwgMywgMjIzLCAxMDAsIDIyOCwgNTQsIDEyMiwgMjE3LCAxMDAsIDIyMywgCi0gICAgMTAwLCAyMjgsIDU0LCAxMjIsIDIxNywgMTAxLCAyNTAsIDI1MywgMjQ5LCAzLCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCAKLSAgICA1MCwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAyMTcsIDIwMSwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAKLSAgICAyMjMsIDIwMiwgMTIyLCAyNDAsIDIwMCwgNywgMywgMSwgMjIzLCAyMDIsIDI1MCwgMjUyLCAyMjMsIDEwMCwgMjI4LCA1NCwgCi0gICAgMjIwLCA1MywgMjMzLCAxMDEsIDE3LCAyMjMsIDEwMCwgMjI4LCA1NCwgMjQ0LCA4NCwgMjQ1LCAxODIsIDE3LCAyMjMsIAotICAgIDEwMCwgMjI4LCA1NCwgMjQ0LCA4NCwgMjE3LCAxMDAsIDIyMywgMTAwLCAyMjgsIDU0LCAxMjIsIDI0MCwgMjAxLCAyMTcsIAotICAgIDEwMCwgMjE0LCA5NywgMjQzLCAyMjgsIDIxMiwgODAsIDIxNywgMTE5LCAxMzIsIDY4LCAyMTUsIDEyNCwgNjgsIDk1LCA2OCwgCi0gICAgMjQ2LCA1OCwgNjgsIDQyLCA0NiwgNjgsIDExNCwgMTE5LCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA2OCwgMjI4LCAxNjcsIAotICAgIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDIxMywgMjUwLCA2OCwgMTMyLCA3NiwgMiwgCi0gICAgOTAsIDk1LCA3NiwgMiwgOTAsIDEzMiwgMjE0LCAyMCwgNjgsIDk1LCAyMTQsIDIwLCA2OCwgMTMyLCAxMTcsIDI0MSwgMjE4LCAKLSAgICA2OCwgMjE1LCAxMjQsIDExNywgMjQxLCAyMTgsIDY4LCA5NSwgMTE3LCAyNDEsIDIxOCwgNjgsIDI0NiwgNTgsIDExNywgCi0gICAgMjQxLCAyMTgsIDY4LCAxMzIsIDc2LCAyLCAyMTgsIDI3LCA5NSwgNzYsIDIsIDIxOCwgMjcsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDIxNSwgMTI0LCA3NiwgMjQzLCAyMTMsIDEzNCwgOTUsIDc2LCAyNDMsIDIxMywgMTM0LCAyNDYsIDU4LCA3NiwgCi0gICAgMjQzLCAyMTMsIDEzNCwgMTE0LCAxMTksIDc2LCAyLCAyNTIsIDQ3LCAxMzIsIDc2LCAyLCAxMDEsIDk1LCA3NiwgMiwgMTAxLCAKLSAgICAxMzIsIDc2LCAyLCAyMzIsIDE3NywgOTUsIDc2LCAyLCAyMzIsIDE3NywgNDIsIDQ2LCAyMTQsIDIwLCA2OCwgNDIsIDQ2LCAKLSAgICA3NiwgMiwgOTAsIDI0NiwgNTgsIDIxMiwgMjgsIDY4LCAyMTUsIDEyNCwgNzYsIDIsIDIxNywgMzAsIDIzMywgNjEsIDIxNSwgCi0gICAgMTI0LCA3NiwgMiwgMjE3LCAzMCwgMjIzLCAxMzgsIDI0NiwgNTgsIDc2LCAyLCAyMTcsIDMwLCAyMzMsIDYxLCAyNDYsIDU4LCAKLSAgICA3NiwgMiwgMjE3LCAzMCwgMjIzLCAxMzgsIDk1LCA3NiwgMiwgMjQ5LCAxMDAsIDI0NiwgNTcsIDI0NiwgNTgsIDc2LCAyLCAKLSAgICAyNDksIDEwMCwgMjMzLCA2MSwgMjUzLCAyNTUsIDIxNiwgMjI3LCAyMjEsIDczLCA2OCwgMjQ5LCAxOTUsIDIxNiwgMjI3LCAKLSAgICAyMjEsIDczLCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjExLCAyMTEsIDE4NCwgMTM0LCAxMzIsIDc2LCAyMTEsIAotICAgIDIxMSwgMjUyLCA2MCwgMTEwLCA5NSwgNzYsIDIxMSwgMjExLCAxMzQsIDI1MywgMjU1LCAyMjcsIDQwLCAyNDksIDIyOSwgCi0gICAgNjgsIDI0OSwgMTk1LCAyMjcsIDQwLCAyNDksIDIyOSwgNjgsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMjMsIAotICAgIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDIyMywgMTM4LCAKLSAgICAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjMzLCA2MSwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTIzLCA5NSwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA1NywgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxMzgsIDI0NiwgNTgsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDIzMywgNjEsIDk1LCA3NiwgMTEwLCAxMzIsIDY4LCAyMTUsIDEyNCwgNzYsIDEzMiwgNjUsIAotICAgIDI0NiwgNTgsIDY4LCAxMzIsIDc2LCAxMTAsIDk1LCA2OCwgMTMyLCAyMjYsIDE5NywgMjUzLCAxNjIsIDIxNSwgMTI0LCAKLSAgICAyMjYsIDE5NywgMjUzLCAxNjIsIDk1LCAyMjYsIDE5NywgMjUzLCAxNjIsIDI0NiwgNTgsIDIyNiwgMTk3LCAyNTMsIDE2MiwgCi0gICAgMTMyLCAyNDEsIDIzOCwgMTEwLCA5NSwgMjQxLCAyMzcsIDk1LCAyNDEsIDIzOCwgMTEwLCAxMzIsIDI0MSwgMjM3LCAxMzIsIAotICAgIDUxLCA3NiwgMiwgOTAsIDQyLCA0NiwgNTEsIDc2LCAyLCA5MCwgOTUsIDUxLCA3NiwgMiwgOTAsIDEzMiwgNTEsIDY4LCAKLSAgICAyMTUsIDEyNCwgNTEsIDY4LCA5NSwgNTEsIDY4LCAyNDYsIDU4LCA1MSwgNjgsIDQyLCA0NiwgNTEsIDY4LCAxMTQsIDExOSwgCi0gICAgNTEsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDUxLCA2OCwgMjI4LCAxNjcsIDI0NSwgMTc2LCA1MSwgNjgsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNTEsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDUxLCA2OCwgMTMyLCAyMTYsIDE2OSwgNjgsIDk1LCAyMTYsIAotICAgIDE2OSwgNjgsIDEzMiwgMjE5LCAxNjIsIDY4LCA5NSwgMjE5LCAxNjIsIDY4LCAyMTUsIDEyNCwgNzYsIDIsIDUxLCA5MCwgCi0gICAgMjQ2LCA1OCwgNzYsIDIsIDUxLCA5MCwgMTMyLCAyNDgsIDEwMCwgNjgsIDIxNSwgMTI0LCAyNDgsIDEwMCwgNjgsIDk1LCAKLSAgICAyNDgsIDEwMCwgNjgsIDI0NiwgNTgsIDI0OCwgMTAwLCA2OCwgMTMyLCA3NiwgMjExLCAyMTEsIDEzNCwgOTUsIDc2LCAyMTEsIAotICAgIDIxMSwgMTM0LCAxMzIsIDY3LCA2OCwgMjE1LCAxMjQsIDY3LCA2OCwgOTUsIDY3LCA2OCwgMjQ2LCA1OCwgNjcsIDY4LCAKLSAgICAyMTUsIDEyNCwgNjcsIDc2LCAyNDMsIDIxMywgMTM0LCAyMTUsIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAyMjYsIDg5LCAyMTUsIAotICAgIDEyNCwgNjcsIDc2LCAyMjcsIDYzLCAyMjYsIDkwLCAyLCAxOTksIDEzNCwgMjE1LCAxMjQsIDY3LCA3NiwgMjI3LCA2MywgCi0gICAgMjI2LCA5MCwgMiwgNzEsIDEzNCwgMjE1LCAxMjQsIDY3LCA1MSwgNjgsIDIxNSwgMTI0LCA2NywgNTEsIDc2LCAyMjcsIDYzLCAKLSAgICAyMjYsIDg5LCA5NSwgNjcsIDc2LCAyNDMsIDIxMywgMjE0LCA0MCwgMjI4LCAxNjcsIDIxMywgMjUwLCA3NiwgMjExLCAyMTEsIAotICAgIDI0OSwgOTksIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDIxMSwgMjExLCAyNDksIDk5LCAxMTQsIDExOSwgNjcsIDY4LCA0NiwgCi0gICAgNzYsIDIsIDMsIDI0OSwgMjI4LCAyNDYsIDU4LCA3NiwgMTMyLCA2NSwgMjE1LCAxMjQsIDY4LCAxMzMsIDk1LCAyNTMsIAotICAgIDE2MiwgMTMyLCA3NiwgMiwgNzEsIDkwLCA5NSwgNzYsIDIsIDcxLCA5MCwgNDIsIDQ2LCA3NiwgMiwgNzEsIDkwLCAxMzIsIAotICAgIDc2LCAyLCA1MSwgNzEsIDkwLCA5NSwgNzYsIDIsIDUxLCA3MSwgOTAsIDQyLCA0NiwgNzYsIDIsIDUxLCA3MSwgOTAsIDEzMiwgCi0gICAgMjI3LCAzOCwgNjgsIDk1LCAyMjcsIDM4LCA2OCwgNDIsIDQ2LCAyMjcsIDM4LCA2OCwgMzEsIDI1NCwgNjMsIDI0OSwgMTUzLCAKLSAgICAyMjYsIDEyNSwgMjQ3LCAxODUsIDIxNywgMTQwLCAyNDQsIDI1MCwgMjE3LCAxNDAsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDQsIAotICAgIDI1MSwgMjQ1LCAxMTAsIDIyMSwgNDgsIDIzNSwgMjQxLCAyMzAsIDM5LCAyNDUsIDEyNywgMjI3LCA5NywgMjI4LCAxNjMsIAotICAgIDI1NCwgMzMsIDI0NSwgMTI3LCAyMjcsIDk3LCAzLCAyNDUsIDEyNywgMjI3LCA5NywgMjQ5LCAxMjUsIDI1MywgMTUzLCAKLSAgICAyMzEsIDEyNiwgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjMxLCAxMjYsIDMsIDI0OSwgMTI1LCAKLSAgICAyNTMsIDE1MywgMjMxLCAxMjYsIDI0NSwgMTAxLCA2NSwgMjI1LCA1NiwgMjMwLCA5NywgMjI1LCA2MywgMjMwLCA5NywgCi0gICAgMjQ5LCAxMDQsIDIzMCwgOTcsIDIxOCwgMjQxLCAyMzAsIDI1MSwgNTIsIDIzMCwgMjQ5LCA1MiwgNjIsIDIyNSwgMTU2LCAKLSAgICAyNDcsIDEyMSwgMjIwLCAyMywgMjIxLCA0OSwgMjMwLCAyNTAsIDI1MywgMTMzLCAyMjcsIDMzLCAyMjMsIDEzMSwgMjI3LCAKLSAgICAzMywgMjUxLCA0MywgMjI3LCAzMywgNDEsIDIyMywgOTUsIDI0OSwgNTAsIDIyMywgOTUsIDI0MywgMjMwLCAyMjMsIDk1LCAKLSAgICAyMjUsIDUyLCAxMDgsIDIzNSwgMjMxLCA0NiwgMjU0LCAxOCwgMjU0LCAxOCwgMjMxLCAxNTMsIDI1NCwgMTgsIDIxOSwgCi0gICAgMTg3LCAyNTQsIDE4LCAyNDcsIDEyMywgMjQ3LCA5MiwgMjI4LCAxNjMsIDI0NywgMTI2LCAyMjYsIDEzNiwgMTA4LCAyMjgsIAotICAgIDE2MywgMjI2LCAxMzYsIDEwOCwgMjMyLCAxOTksIDI1NCwgMjcsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMzUsIDE5NSwgMjE1LCAKLSAgICAxNDYsIDIzNSwgMjA4LCA1MSwgMjM1LCAyMDgsIDIxNiwgMTY5LCAyMzUsIDIwOCwgMjQ5LCAxMjEsIDIzNSwgMjA4LCAyMTgsIAotICAgIDIxMywgMjM1LCAyMDgsIDIxNCwgMTEwLCAyMzUsIDIwOCwgMjQ5LCAxOTUsIDIzNSwgMjA4LCAyNDksIDE5NSwgMjQ5LCAKLSAgICAxMjEsIDIzNSwgMjA4LCAyNTMsIDI1NSwgMjQ5LCAxMjEsIDIzNSwgMjA4LCAyMTcsIDEzOSwgMjUxLCAyNDMsIDIyNCwgMjksIAotICAgIDIyNSwgNTMsIDYyLCAyMzAsIDI1MCwgMjQ1LCAwLCAyNDMsIDIyLCAyMjUsIDUzLCAyNDEsIDQzLCAyMTcsIDQzLCAyMjcsIAotICAgIDMzLCAyMjMsIDIwMiwgMjE3LCA0MiwgMjM1LCAxOTEsIDIzMywgODksIDE5NywgMjIwLCA4MywgMjE0LCAxOSwgMjEzLCAKLSAgICAxODgsIDIyNSwgNjMsIDIyOCwgMTYzLCAyMTcsIDQyLCAyMzAsIDI1MSwgMjE3LCA0MiwgMjUzLCAxMjYsIDEyMywgMTA4LCAKLSAgICAyMjgsIDE2MywgMjUzLCAxMjYsIDEyMywgMTA4LCAyNTMsIDIxOCwgMTIzLCAxMDgsIDI1MywgMjE4LCAyNTEsIDE3LCAyMjgsIAotICAgIDE2MywgMjU0LCAxNjUsIDEyMywgMTA4LCAyMjksIDE4MSwgMjUzLCAyMTgsIDIyOCwgMTcwLCAyNTQsIDE2NSwgMTIzLCAKLSAgICAxMDgsIDI1NCwgNTcsIDEyMywgMTA4LCAyMjgsIDE2MywgMjU0LCA1NywgMTIzLCAxMDgsIDI1NCwgNTcsIDEyMywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE2LCAxNjksIDIxNywgNDIsIDI1NCwgNjQsIDEyMywgMTA4LCAyNDUsIDU3LCAxMDgsIDI0MywgMjEsIAotICAgIDI0NSwgNTcsIDEwOCwgMjQ3LCAxODYsIDI1MSwgMjAwLCAyNTMsIDIyMCwgMjE3LCAxNDksIDIzMiwgMjUwLCAyNDMsIDIxLCAKLSAgICAxMjMsIDEwOCwgMjUzLCAyMTgsIDEyMywgMjExLCAyMTEsIDE2NywgMjE3LCAxNDksIDIzNiwgMTAsIDIyNywgOTcsIDIzNiwgCi0gICAgMTAsIDY1LCAxNjcsIDI1MywgMjE4LCAxMjMsIDEwOCwgMjQ5LCAxNjUsIDI0NSwgNjAsIDI0NSwgNjEsIDI0OSwgMTY0LCAKLSAgICAyMjMsIDEzMSwgMjM1LCAyNTIsIDEyMywgMTA4LCAyMjMsIDEzMSwgMTIzLCAxMDgsIDI0OSwgOTMsIDEwOCwgMjQ1LCAzMiwgCi0gICAgMjQ1LCA1OSwgMTA4LCAyMTksIDk2LCAyNDUsIDYwLCAyNDgsIDYsIDEyMywgMTA4LCAxMjMsIDIxMSwgMjExLCAyNTEsIDcsIAotICAgIDI0OCwgMjMsIDIzMSwgMTUzLCAyNTEsIDYsIDIyNCwgMTU2LCAxMjMsIDEwOCwgMjI4LCAxNjMsIDEyMywgMTA4LCAyNDAsIAotICAgIDk3LCAxMDgsIDIyOCwgMTYzLCAyNDAsIDk3LCAxMDgsIDIxOSwgNDksIDI0NSwgNTcsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQyLCAxMDcsIDE2NywgMTIzLCAxMDgsIDIzMywgMzksIDExMCwgMTIzLCAxMDgsIDI0MiwgMTA3LCAxMTAsIAotICAgIDEyMywgMTA4LCAyMzMsIDM5LCAyNTEsIDE3LCAyMjgsIDE2MywgMTIzLCAxMDgsIDI0MiwgMTA3LCAyNTEsIDE3LCAyMjgsIAotICAgIDE2MywgMTIzLCAxMDgsIDIzMCwgMTY3LCAyMzMsIDM4LCAyMzAsIDE2NywgMjQyLCAxMDYsIDI1MSwgMjAwLCAyMjgsIDE2MywgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjgsIDE2MywgMjMzLCAzOCwgMjI4LCAxNjMsIDI0MiwgMTA2LCAyMjksIDE4MSwgMjMzLCAzOSwgCi0gICAgMjI4LCAxNzAsIDEyMywgMTA4LCAyMjksIDE4MSwgMjQyLCAxMDcsIDIyOCwgMTcwLCAxMjMsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAyNDUsIDU3LCAxMDgsIDI0MiwgMTA3LCAxNjcsIDI0NSwgNTcsIDEwOCwgMjI5LCAxODEsIDIzMywgMzksIDIyOCwgMTcwLCAKLSAgICAyNDUsIDU3LCAxMDgsIDIyOSwgMTgxLCAyNDIsIDEwNywgMjI4LCAxNzAsIDI0NSwgNTcsIDEwOCwgMjMzLCAzOSwgMTY3LCAKLSAgICAyNDIsIDEwNiwgMjQyLCAxMDcsIDE2NywgMjMzLCAzOCwgMjI5LCAxODEsIDIzMywgMzksIDIyOCwgMTcwLCAyNDIsIDEwNiwgCi0gICAgMjI5LCAxODEsIDI0MiwgMTA3LCAyMjgsIDE3MCwgMjMzLCAzOCwgMjI1LCA4MiwgMjE5LCAwLCAyMjUsIDgzLCAxNjcsIAotICAgIDEyMywgMTA4LCAyMTksIDEsIDE2NywgMTIzLCAxMDgsIDIyNSwgODMsIDE2NywgMjQ1LCA1NywgMTA4LCAyMTksIDEsIDE2NywgCi0gICAgMjQ1LCA1NywgMTA4LCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA4NSwgMjQ3LCA5MiwgMjI4LCAxNjMsIDIxOSwgMiwgMjE5LCAKLSAgICA5LCAyMjcsIDk3LCAyMTgsIDIyMiwgMjI3LCA5NywgMjI4LCAxNjMsIDExOCwgMjE5LCA5LCAyMjcsIDk3LCAyMjgsIDE2MywgCi0gICAgMTE4LCAyMTgsIDIyMiwgMjI3LCA5NywgMjE5LCA5LCA2NSwgMTY3LCAxMjMsIDEwOCwgMjE4LCAyMjIsIDY1LCAxNjcsIAotICAgIDEyMywgMTA4LCAyMjksIDE4MSwgMTE4LCAyMTksIDksIDY1LCAyMjgsIDE3MCwgMTIzLCAxMDgsIDIyOSwgMTgxLCAxMTgsIAotICAgIDIxOCwgMjIyLCA2NSwgMjI4LCAxNzAsIDEyMywgMTA4LCAyMTksIDksIDY1LCAyLCAyMjgsIDE2MywgMTIzLCAxMDgsIDIxOCwgCi0gICAgMjIyLCA2NSwgMiwgMjI4LCAxNjMsIDEyMywgMTA4LCAyMzAsIDE1MSwgMjMwLCAxNTIsIDIzMCwgMTUzLCAyMzAsIDE1MiwgCi0gICAgMjE1LCAxNDYsIDQxLCAyMzYsIDEwLCAyMjcsIDk3LCA0MSwgMjI3LCAxNywgMjI3LCA5NywgNDEsIDIzNiwgMTAsIDY1LCAKLSAgICAxNjcsIDEyMywgMTA4LCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMTIzLCAxMDgsIDQxLCAyNTAsIDE4MywgNDEsIDI0OSwgNDMsIAotICAgIDM2LCAyMjUsIDE1NiwgMzYsIDIzMCwgMjUwLCAzNiwgMjE3LCAzOCwgMzYsIDI0NywgMTIxLCAyMjAsIDIzLCAzNiwgNjIsIAotICAgIDIyNywgMzMsIDM2LCAyMjMsIDEzMSwgMjI3LCAzMywgMzYsIDI1MywgMTMzLCAyMjcsIDMzLCAzNiwgMjQ1LCA2MCwgMzYsIAotICAgIDI0OCwgMTAxLCA5MSwgMjI1LCAxNTYsIDkxLCAyMzAsIDI1MCwgOTEsIDIxNywgMzgsIDkxLCA2MiwgMjI3LCAzMywgNDYsIAotICAgIDIxOCwgMzYsIDQyLCAyMTgsIDM2LCAxMTksIDIxOCwgMzYsIDExNCwgMjE4LCAzNiwgMjUzLCAxMzYsIDIzMCwgMjI2LCAKLSAgICAyMTYsIDE0OSwgMjQzLCAyNTAsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgNDYsIDIxNiwgNTcsIDUxLCA3MSwgMjUyLCA2MCwgCi0gICAgNTEsIDQ2LCAyMTYsIDU3LCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA0OCwgMjI4LCAxNjMsIDIxNiwgMTQ5LCAyNDcsIDkyLCAKLSAgICAyMjgsIDE2MywgMjQzLCAyNTEsIDIyOSwgMTgzLCA1MSwgNzEsIDI1MiwgNjAsIDUxLCA0NiwgMjE2LCA1NywgMjI1LCA4MywgCi0gICAgMjE1LCAxNTQsIDIyMywgMjQxLCAyMTksIDEsIDIxNSwgMTU0LCAyMjMsIDI0MSwgMjI4LCAxNjgsIDIxOSwgMjIsIDIyNywgCi0gICAgOTcsIDI0OSwgMTI1LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjEsIDIyOCwgMTY4LCAyMTksIDIyLCA2NSwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQ5LCAxMjUsIDI1MywgMTUzLCAyMjgsIDE2OCwgMjE5LCAyMiwgMTY3LCAxMjMsIDEwOCwgMjI3LCAxNywgCi0gICAgMjI3LCA5NywgMjM2LCAxMCwgMjI3LCA5NywgMjMwLCAxNTcsIDI0MSwgMTg1LCAyNDksIDEzNiwgMjMxLCAyMDAsIDIzNSwgCi0gICAgMjA1LCAyMTMsIDEzMywgMjMwLCAyMiwgMjI4LCAxNjksIDQ2LCAyNTQsIDE5LCAyLCAyNTMsIDE5NSwgNDYsIDIxNiwgMTgzLCAKLSAgICAyMzAsIDk3LCAyMzIsIDE5OSwgMjU0LCAyNywgMjMwLCA5NywgMjMyLCAxOTksIDIyNywgMjQsIDIzMCwgOTcsIDIzNSwgCi0gICAgMTk1LCAyMzAsIDk3LCAyMTUsIDE0NiwgMjQ3LCAyMDEsIDIyNywgMzMsIDYyLCAyMjcsIDMzLCAyMTksIDk2LCAyMjcsIDMzLCAKLSAgICAyNDcsIDEyMSwgMjE3LCAzOCwgMjUxLCA5MCwgNDIsIDIyOCwgMTY4LCAyNDQsIDE0OSwgMjIxLCA2OSwgMjI1LCA2MywgNDYsIAotICAgIDIyOCwgMTY4LCAyNDQsIDE0OSwgMjIxLCA2OSwgMjI1LCA2MywgNDIsIDIyMSwgNjksIDIyNSwgNjMsIDQ2LCAyMjEsIDY5LCAKLSAgICAyMjUsIDYzLCAyMjMsIDIwMiwgMjE3LCA0MywgMjQ1LCA2MCwgMjQ5LCA0MCwgMjMyLCAxOTksIDIyNywgMjQsIDI0OSwgNDAsIAotICAgIDIzMiwgMTk5LCAyNTQsIDI3LCA1MSwgMjE5LCA4LCA1MSwgMjE4LCAyMjEsIDUxLCAyMzUsIDE5NSwgNTEsIDIxNSwgMTQ2LCAKLSAgICAyMjUsIDE3OSwgMTIzLCAyNCwgMjI2LCAxMzYsIDEwOCwgMjMzLCAzOSwgMiwgMjQ3LCA3NCwgMjQyLCAxMDcsIDIsIDI0NywgCi0gICAgNzQsIDIxNCwgMTY0LCAyMzAsIDE2NywgMjMzLCAzOCwgMjE0LCAxNjQsIDIzMCwgMTY3LCAyNDIsIDEwNiwgMjMzLCAzOSwgCi0gICAgMTIzLCAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjQyLCAxMDcsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAxMjMsIDIxMSwgMjExLCAxNjcsIAotICAgIDIyNSwgODIsIDEyMywgMjExLCAyMTEsIDE2NywgMjE5LCAwLCAyNDcsIDkyLCAyMjgsIDE2MywgMjI1LCA4NiwgMTY3LCAKLSAgICAyNDUsIDYyLCAyNDcsIDkyLCAyMjgsIDE2MywgMjE5LCAzLCAxNjcsIDI0NSwgNjIsIDIyOCwgMTYzLCA0MSwgMjM2LCAxMCwgCi0gICAgNjUsIDE2NywgMTIzLCAxMDgsIDIyOCwgMTYzLCA0MSwgMjI3LCAxNywgNjUsIDE2NywgMTIzLCAxMDgsIDQxLCAyMzYsIDEwLCAKLSAgICA2NSwgMTY3LCAyMjgsIDE2MywgMTIzLCAxMDgsIDQxLCAyMjcsIDE3LCA2NSwgMTY3LCAyMjgsIDE2MywgMTIzLCAxMDgsIAotICAgIDIzMywgMzksIDI1MSwgMTcsIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDI0MiwgMTA3LCAyNTEsIDE3LCAyMjgsIDE2MywgCi0gICAgMjQ1LCA1NywgMTA4LCAyMjUsIDgzLCAyNTEsIDE3LCAyMjgsIDE2MywgMjQ1LCA1NywgMTA4LCAyMTksIDEsIDI1MSwgMTcsIAotICAgIDIyOCwgMTYzLCAyNDUsIDU3LCAxMDgsIDIyOCwgMTYzLCAyMjgsIDE2OCwgMjE5LCAyMiwgMjI3LCA5NywgMjQ3LCA5MiwgCi0gICAgMjI4LCAxNjMsIDI0OSwgMTI3LCAyNTMsIDE1MywgMjI4LCAxNjgsIDIxOSwgMjEsIDIyOCwgMTYzLCAyMjgsIDE2OCwgMjE5LCAKLSAgICAyMiwgNjUsIDE2NywgMTIzLCAxMDgsIDI0NywgOTIsIDIyOCwgMTYzLCAyNDksIDEyNywgMjUzLCAxNTMsIDIyOCwgMTY4LCAKLSAgICAyMTksIDIyLCAxNjcsIDI0NSwgNjIsIDcxLCAyNDUsIDEyMCwgMjMxLCAzNSwgMTk5LCAyNDUsIDEyMCwgMTE0LCA0NiwgCi0gICAgMjQ3LCAyMDcsIDI0NSwgMTIwLCAxMTksIDQ2LCAyNDcsIDIwNywgMjQ1LCAxMjAsIDI0NSwgMTI3LCA2NSwgMiwgMTg0LCAKLSAgICAxOTksIDkwLCAyNDUsIDEyNywgNjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAKLSAgICAzLCAyNDUsIDEyNywgNjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAxOTksIDkwLCAyNDUsIAotICAgIDEyNywgNjUsIDIsIDYyLCA0OSwgMjQ1LCAxMjcsIDY1LCAyLCAyMjYsIDI0NywgMywgMjQ1LCAxMjcsIDY1LCAyLCAyMjYsIAotICAgIDI0NywgMjQ1LCAxMjcsIDY1LCAyLCAyMTUsIDE1MywgMjQ1LCAxMjcsIDY1LCAyLCAxMTcsIDE5OSwgMjE5LCAzMiwgMjQ5LCAKLSAgICAxMjUsIDIsIDE4NCwgMTk5LCA5MCwgMjQ5LCAxMjUsIDIsIDcxLCAyNTIsIDYwLCAyNTMsIDEyMywgMjQ1LCAxMDEsIDY1LCAKLSAgICAxOTksIDkwLCAzLCAyNDksIDEyNSwgMiwgNzEsIDI1MiwgNjAsIDI1MywgMTIzLCAyNDUsIDEwMSwgNjUsIDE5OSwgOTAsIAotICAgIDI0OSwgMTI1LCAyLCAyMjYsIDI0NywgMywgMjQ5LCAxMjUsIDIsIDIyNiwgMjQ3LCAyMTIsIDE1MywgMTc0LCAyNTIsIDkxLCAKLSAgICAyMzEsIDEyNSwgMjQ3LCAyMDIsIDUyLCAyNDUsIDEyOSwgNjgsIDI0MCwgMjIxLCAxMTQsIDI1MywgMTY0LCAxMTksIDI1MywgCi0gICAgMTY0LCAyMjUsIDU5LCAyMjYsIDQxLCAyMTQsIDE2LCAyMzIsIDI0MiwgNDIsIDI1MCwgMTE1LCA0NiwgMjUwLCAxMTUsIDQyLCAKLSAgICAyNDQsIDI2LCA0NiwgMjQ0LCAyNiwgMjUxLCAxMDEsIDQ2LCAyNDksIDcyLCAyNTEsIDEwMSwgNDIsIDI0OSwgNzIsIDIxNiwgCi0gICAgMjI3LCA0NiwgMjQ5LCA3MiwgMjE2LCAyMjcsIDQyLCAyNDksIDcyLCAyMjMsIDIwMiwgMjI4LCAxNjMsIDUyLCA0MSwgMjMyLCAKLSAgICAxNTksIDI1MywgMTk1LCAyMjIsIDgzLCAyMjIsIDkwLCAyMTcsIDIxMCwgMjI0LCAxMywgMjI1LCAxMjEsIDIzNSwgMjM1LCAKLSAgICAyMTQsIDE0NSwgMjE5LCAxNjYsIDIyNSwgMTczLCA2NSwgMjM1LCAyMDQsIDUyLCAyMTYsIDU4LCAyMjgsIDE2MywgNTIsIAotICAgIDIxNCwgMjYsIDI0MCwgMjIzLCAyMTYsIDIyNywgNDIsIDI0OSwgOTksIDIxNiwgMjI3LCA0NiwgMjQ5LCA5OSwgMjUxLCAKLSAgICAxMDEsIDQyLCAyNDksIDk5LCAyNTEsIDEwMSwgNDYsIDI0OSwgOTksIDIxNiwgMjI3LCAxNTEsIDIzNSwgMjA4LCAyNTEsIAotICAgIDEwMSwgMTUxLCAyMzUsIDIwOCwgMjQzLCAyMTAsIDIyMCwgMywgMTE0LCAyNTMsIDE2NSwgMjUxLCAyMDEsIDExNywgMTk5LCAKLSAgICAyNTIsIDQ5LCAyMjcsIDI2LCAyMzQsIDE0NCwgMjQ1LCA1MywgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgMjEzLCAKLSAgICAxNjcsIDIzNSwgMjUyLCAxMTgsIDIyNCwgMTAsIDI1MSwgODksIDIzNCwgMTQzLCAyMzMsIDY2LCAyNTQsIDE5LCAxMjUsIAotICAgIDIyMywgMTQ0LCAyNTQsIDE5LCAxMjUsIDI0NSwgNTMsIDIxMSwgMjExLCAyMTcsIDE0OSwgMjMzLCA3MCwgMjUxLCAyMTIsIAotICAgIDIyMywgMTMwLCAyNDksIDEzLCAyNTQsIDY0LCAyNTMsIDE3MiwgMjE4LCAxMjYsIDIxNiwgMjE3LCAyMjMsIDM0LCAyNDcsIAotICAgIDE2NywgMjI3LCAxOCwgMjQ5LCAxMzgsIDIxOCwgMywgMjIwLCAxNCwgMjQ5LCA5MCwgMjQ5LCA4OSwgMTk0LCAxOTYsIDE2LCAKLSAgICAyNDAsIDE0MywgMTk0LCAxOTYsIDE2LCAyMTksIDE2MCwgMjI0LCAxNzIsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NSwgCi0gICAgNjIsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDI0NywgMTI2LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDcsIDIwMCwgCi0gICAgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ5LCAyMjgsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjQ5LCAyMjksIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIzNSwgNTksIDE5NCwgMTk2LCAKLSAgICAxNiwgMjIwLCAyNCwgMTM0LCAxOTQsIDE5NiwgMTYsIDI1MiwgOTgsIDEzNCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMjIwLCAyMywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjUyLCA5NywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjMzLCAKLSAgICAzOCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQyLCAxMDYsIDE5NCwgMTk2LCAxNiwgMTMyLCAyMTQsIDI1MSwgMTk0LCAKLSAgICAxOTYsIDE2LCA5NSwgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDEzMiwgNjgsIDE5NCwgMTk2LCAxNiwgCi0gICAgMjI0LCAxNzMsIDk1LCA2OCwgMTk0LCAxOTYsIDE2LCAyNDksIDIyOSwgMjUyLCA5NywgMTk0LCAxOTYsIDE2LCAxMTksIAotICAgIDIxOCwgMzcsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDI0OCwgNiwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgCi0gICAgMTE5LCAyNTAsIDE3MCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjQ4LCA1LCAxOTQsIDE5NiwgMTYsIDExOSwgMjE4LCAKLSAgICAzNywgMjM1LCA1OSwgMTk0LCAxOTYsIDE2LCAyMTUsIDEyNCwgMjE0LCAyNTEsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIAotICAgIDIxNSwgMTI0LCA2OCwgMTk0LCAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDIyNiwgMjQ3LCAxOTQsIDE5NiwgMTYsIDI0OCwgCi0gICAgMTcsIDIxOSwgNzUsIDE5NCwgMTk2LCAxNiwgMjI0LCAxNzMsIDExNCwgMjUwLCAxNzAsIDE5NCwgMTk2LCAxNiwgMjI0LCAKLSAgICAxNzMsIDI0OCwgMTYsIDE5NCwgMTk2LCAxNiwgMTE0LCAyMTgsIDM3LCAyMzUsIDU5LCAxOTQsIDE5NiwgMTYsIDI0NiwgNTgsIAotICAgIDIxNCwgMjUxLCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDYsIDU4LCA2OCwgMTk0LCAxOTYsIDE2LCAyMjQsIDE0MiwgCi0gICAgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ4LCA2LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNDcsIDIwMSwgMjE1LCAKLSAgICAxNTMsIDE5NCwgMTk2LCAxNiwgMjM1LCA2MCwgMjE1LCAxNTMsIDE5NCwgMTk2LCAxNiwgMjQ5LCAyMjksIDIxNSwgMTUzLCAKLSAgICAxOTQsIDE5NiwgMTYsIDExNCwgMjIwLCAxODUsIDIzNSwgNTksIDE5NCwgMTk2LCAxNiwgMjI0LCAxNDIsIDIyNCwgMTcyLCAKLSAgICAxOTQsIDE5NiwgMTYsIDI0OSwgMjI5LCAyMTksIDk1LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTczLCAyNDksIDE2NCwgMTk0LCAKLSAgICAxOTYsIDE2LCAxMTQsIDIxOCwgMzcsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDI0OCwgMTcsIDI0NywgMjA5LCAxOTQsIAotICAgIDE5NiwgMTYsIDIxOSwgOTYsIDI0NywgMjA5LCAxOTQsIDE5NiwgMTYsIDIzNSwgNjAsIDI0NywgMjA5LCAxOTQsIDE5NiwgCi0gICAgMTYsIDI0OSwgMjI5LCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAxMTksIDIyMCwgMTg1LCAyMTksIDc1LCAxOTQsIDE5NiwgCi0gICAgMTYsIDQyLCAyMjAsIDE4NSwgMjE5LCA3NSwgMTk0LCAxOTYsIDE2LCAyMTcsIDQzLCAyNDcsIDIwOSwgMTk0LCAxOTYsIDE2LCAKLSAgICAyNDIsIDEwNywgMjQ3LCAyMDksIDE5NCwgMTk2LCAxNiwgMjQ5LCAxNTgsIDEzNCwgMTk0LCAxOTYsIDE2LCAyNDgsIDE3LCAKLSAgICAyMTcsIDQyLCAxOTQsIDE5NiwgMTYsIDIxMiwgMjcsIDE5NCwgMTk2LCAxNiwgMjE5LCA3NiwgMjE3LCA0MiwgMTk0LCAxOTYsIAotICAgIDE2LCAyMjEsIDcxLCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyMjQsIDE3MywgMjI4LCAxNjMsIDI0NSwgNjIsIDE5NCwgCi0gICAgMTk2LCAxNiwgMjI0LCAxNzMsIDIyNCwgMTU3LCAxOTQsIDE5NiwgMTYsIDExOSwgMjUwLCAxNzEsIDIxNywgNDIsIDE5NCwgCi0gICAgMTk2LCAxNiwgMTE0LCAyNTAsIDE3MSwgMjE3LCA0MiwgMTk0LCAxOTYsIDE2LCAyMzUsIDE4MywgMTk0LCAxOTYsIDE2LCAKLSAgICAyMjMsIDE5MCwgMTk0LCAxOTYsIDE2LCAyMjcsIDY3LCAxOTQsIDE5NiwgMTYsIDI1NCwgNTMsIDIxNSwgMTUzLCAxOTQsIAotICAgIDE5NiwgMTYsIDI0NSwgNjQsIDIxNSwgMTUzLCAxOTQsIDE5NiwgMTYsIDIzNSwgMTg0LCAyMTUsIDE1MywgMTk0LCAxOTYsIAotICAgIDE2LCAyMjcsIDY4LCAyMTUsIDE1MywgMTk0LCAxOTYsIDE2LCAyNTQsIDUyLCAyMjgsIDE2MywgMjUwLCA2NiwgNzcsIDQ2LCAKLSAgICAyNTQsIDE5LCAyLCAyNDYsIDU4LCAyMTIsIDI4LCA2OCwgMjIwLCAxNTksIDIyNywgNDAsIDI1MSwgODksIDI1MSwgMjIyLCAKLSAgICA4NywgNzEsIDIzMiwgMjQzLCAyLCAyMzEsIDM3LCAyNDcsIDc0LCAyMzUsIDIxMywgODcsIDI0OSwgMTIyLCAyMTUsIDE1MSwgCi0gICAgODcsIDI0NywgMTQxLCAyMTUsIDE1MSwgODcsIDI0NSwgMTEyLCA4NywgMjQ5LCAxNDksIDg3LCA2NywgNDEsIDIsIDI1MCwgCi0gICAgMTA5LCA3MSwgMjMyLCAyNDIsIDI0NSwgODksIDg3LCAyNTQsIDQ4LCAyMzQsIDE0NSwgODcsIDI0MSwgMTk3LCA4NywgMzYsIAotICAgIDE5OSwgMjUyLCA2MCwgMiwgMjI4LCAxNjEsIDM2LCAyMTYsIDE4NCwgMjQ2LCA2MCwgMjUxLCA2MywgMjQ5LCAyMjksIDIsIAotICAgIDIyOCwgMTY1LCA2OCwgMjE1LCAxNDksIDg3LCAyMzAsIDIwNywgODcsIDI0MCwgMTU2LCA4NywgMjI3LCAzOSwgMjQyLCA0MCwgCi0gICAgODcsIDIyNywgMzksIDIzMywgMTY5LCA4NywgMjI2LCAxMTcsIDg3LCAyMjYsIDExNiwgODcsIDI0NywgMTQ5LCAyNDksIDM4LCAKLSAgICAxNiwgMjQzLCAyNDUsIDEwOSwgMjE5LCAyMzQsIDg3LCAxOTQsIDE5NiwgMTYsIDIyNCwgMTcyLCAyNDgsIDM0LCAyMjEsIAotICAgIDU4LCAyMzQsIDE0NSwgODcsIDIyNSwgNzMsIDIyNiwgMjAwLCAyMjksIDE2NCwgMjI2LCAyMDAsIDIyNSwgNjksIDIyMiwgCi0gICAgMTA4LCA4NywgMjQ5LCAyMTAsIDIyMiwgMTA4LCA4NywgNDIsIDIyNiwgMTMyLCAyMTUsIDEzMSwgMTAxLCA0MiwgMjI2LCAKLSAgICAxMzIsIDI0NCwgMjQ1LCA0MiwgMjI2LCAxMzIsIDIzMiwgMTYzLCAxMDEsIDQ2LCAyMjYsIDEzMiwgMjE1LCAxMzEsIDEwMSwgCi0gICAgNDYsIDIyNiwgMTMyLCAyNDQsIDI0NSwgNDYsIDIyNiwgMTMyLCAyMzIsIDE2MywgMTAxLCA0MiwgNDEsIDI1MSwgODUsIAotICAgIDIxNSwgMTMxLCAyNDksIDk5LCA0MiwgNDEsIDI1MSwgODUsIDI0NCwgMjQ1LCA0MiwgNDEsIDI1MSwgODUsIDIzMiwgMTYzLCAKLSAgICAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIxNSwgMTMxLCAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDI0NCwgMjQ1LCAKLSAgICA0NiwgNDEsIDI1MSwgODUsIDIzMiwgMTYzLCAyNDksIDk5LCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjE1LCAxMzEsIDEwMSwgCi0gICAgNDIsIDI0OSwgNDAsIDI1MSwgODUsIDIzMSwgMzcsIDIyNSwgMjMzLCA0MiwgMjQ5LCA0MCwgMjUxLCA4NSwgMjMyLCAxNjMsIAotICAgIDEwMSwgMjQ5LCA0MCwgMjUxLCA4NSwgMjQ0LCAyNDUsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMTUsIDEzMSwgMTAxLCA0NiwgCi0gICAgMjQ5LCA0MCwgMjUxLCA4NSwgMjMxLCAzNywgMjI1LCAyMzMsIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMzIsIDE2MywgMTAxLCAKLSAgICAyMzUsIDIwOSwgMjQ0LCAyNDUsIDE5OSwgMjMyLCAyNDMsIDI0NCwgMjQ1LCAyMTUsIDEzMSwgNDIsIDE2NywgMjMyLCAxNjMsIAotICAgIDQ2LCAyNDksIDQwLCAyNTEsIDg1LCAyMjIsIDkxLCAyMTUsIDEzMSwgNDYsIDE2NywgMjMyLCAxNjMsIDQyLCAyNDksIDQwLCAKLSAgICAyNTEsIDg1LCAyMjIsIDkxLCAyMTgsIDI0MiwgMjE2LCAyMjYsIDIxOCwgMjQyLCAyNTEsIDEwMCwgMjE2LCAyMjcsIDQxLCAKLSAgICAxMjUsIDI1MSwgMTAxLCA0MSwgMTI1LCAyNTEsIDEwMSwgNDEsIDI1MSwgODUsIDExMCwgMjE2LCAyMjcsIDQxLCAxMjUsIAotICAgIDM0LCAxNiwgMjUxLCAxMDAsIDQyLCA3MSwgOTIsIDIzMiwgMjQyLCA0NiwgNzEsIDkyLCAyMzIsIDI0MiwgMTk5LCAyMjIsIAotICAgIDEyMywgMjMyLCAyNDEsIDE5OSwgMjIyLCAxMjMsIDIzMiwgMjQwLCAxOTksIDIyMiwgMTIzLCAyMzIsIDIzOSwgMTk5LCAKLSAgICAyMjIsIDEyMywgMjMyLCAyMzgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMjQsIDIxNiwgMjI3LCAyMjMsIDE0OCwgMjQ3LCAKLSAgICAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjUxLCAxMDEsIDIyMywgMTQ4LCAyNDcsIDI1MywgMTYsIDE3NywgNzEsIDIsIDI0OSwgCi0gICAgMjI4LCAyNDcsIDI1MywgMTYsIDE3NywgMTE5LCAyNCwgMTk5LCAyLCAyNDksIDIyOCwgMjQ3LCAyNTMsIDE2LCAxNzcsIAotICAgIDExNCwgMjQsIDE5OSwgMiwgMjQ5LCAyMjgsIDI0NywgMjUzLCAxNiwgMTc3LCA3MSwgMiwgMjE2LCAxODMsIDI0NywgMjUzLCAKLSAgICAxNiwgMTc3LCAxMTksIDI0LCAxOTksIDIsIDIxNiwgMTgzLCAyNDcsIDI1MywgMTYsIDE3NywgMTE0LCAyNCwgMTk5LCAyLCAKLSAgICAyMTYsIDE4MywgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjE0LCAxOSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExOSwgMjQsIAotICAgIDE5OSwgMiwgMjE0LCAxOSwgMjQ3LCAyNTMsIDE2LCAxNzcsIDExNCwgMjQsIDE5OSwgMiwgMjE0LCAxOSwgMjQ3LCAyNTMsIAotICAgIDE2LCAxNzcsIDExOSwgMjQsIDI0MSwgMzEsIDI0NywgMjUzLCAxNiwgMTc3LCAxMTQsIDI0LCAyNDEsIDMxLCAyNDcsIDI1MywgCi0gICAgMTYsIDE3NywgNzEsIDI0LCAyMTYsIDIyNywgMjMzLCA3MCwgMjQ3LCAyNTMsIDE2LCAxNzcsIDcxLCAyNCwgMjUxLCAxMDEsIAotICAgIDIzMywgNzAsIDQxLCAyNDQsIDEsIDIyMywgMjA2LCA4NywgMjQ1LCAxMzksIDg3LCA3MSwgMjMyLCAyNDMsIDI0NCwgMjQ1LCAKLSAgICAyMzEsIDEwMCwgMjUxLCA3NCwgMjMxLCAxMDAsIDE4NCwgMTEwLCAyMjAsIDE3NCwgMjMxLCAxMDAsIDIyMCwgMTc1LCAxMTAsIAotICAgIDIzMiwgMTkwLCAyMzEsIDEwMCwgMTg0LCAxMTAsIDExNywgMjIwLCAxNjEsIDIzMSwgMTAwLCAxMTcsIDIyMCwgMTYyLCAKLSAgICAxMTAsIDIzMiwgMTkwLCAyMzEsIDEwMCwgMTE3LCAyMjAsIDE2MiwgMjM1LCA2NywgMjMxLCAxMDAsIDIxNiwgMTY2LCAyMzEsIAotICAgIDEwMCwgMjE3LCAxNzYsIDIzMSwgMTAwLCAyMjYsIDYzLCAyNDUsIDE4MCwgMjQyLCAxMDAsIDI0MywgMTkxLCAyMTYsIDIyNywgCi0gICAgMjI2LCAxMzEsIDI1MSwgMTAxLCAyMjYsIDEzMSwgMjE2LCAyMjcsIDI0OSwgNDAsIDEyNSwgMjUxLCAxMDEsIDI0OSwgNDAsIAotICAgIDEyNSwgMjE2LCAyMjcsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAyNTEsIDEwMSwgMjE2LCAyMTksIDIyMCwgMjMzLCAKLSAgICAxMjUsIDY3LCAyMTYsIDE5NywgMjUxLCAyMTIsIDIyMywgMTMxLCAyLCAyNDksIDIyOCwgMjE5LCA2MCwgMjQ0LCAzMywgCi0gICAgMjU0LCAxNzcsIDI0OSwgMzcsIDI0NSwgMTI4LCAyMzUsIDE5NSwgMjQ4LCAzNCwgMjQ0LCAyNDcsIDg3LCA4MywgMjIzLCAKLSAgICAxNDQsIDUxLCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDUxLCAyMTYsIDE4MywgODMsIDIxNSwgMTMzLCA1MSwgMjE2LCAxODMsIAotICAgIDgzLCAyNDYsIDU5LCA1MSwgMjE2LCAxODMsIDgzLCAyMjMsIDE0NCwgNTEsIDIxNiwgMTg0LCAyLCA3MSwgMTM0LCA4MywgCi0gICAgMjMzLCA2NiwgNTEsIDIxNiwgMTg0LCAyLCA3MSwgMTM0LCA4MywgMjIzLCAxNDQsIDIxNiwgMTg0LCAyLCA1MSwgNzEsIAotICAgIDEzNCwgMjU0LCA4MSwgMjQ5LCAxOTYsIDIxOSwgNjYsIDIxNywgMzksIDI0OSwgMTk2LCAyNDAsIDIyNCwgMiwgMjQ0LCAxOSwgCi0gICAgMjIyLCAxNTcsIDE2LCAzMSwgMjI4LCA1OCwgMTYsIDMxLCAyMTksIDkxLCA2NSwgMjQxLCAyMTcsIDE2LCAzMSwgMjE5LCAKLSAgICA5MSwgNjUsIDIxNywgMTY1LCAxNiwgMzEsIDI0NSwgMTAxLCA2NSwgMjE3LCAxNjUsIDE2LCAzMSwgMjQ1LCAxMDEsIDY1LCAKLSAgICAyMTYsIDIwMCwgMTYsIDMxLCAyNDUsIDkxLCAxNiwgMzEsIDI1NCwgMTY4LCAxNiwgMzEsIDI1MSwgMjIxLCAxNiwgMzEsIAotICAgIDI1MiwgOTYsIDE2LCAzMSwgMTk5LCAyMTgsIDM4LCAxNiwgMzEsIDIzMiwgMjQzLCAyNDQsIDExNCwgMTYsIDMxLCA3MSwgCi0gICAgMjE4LCAzOCwgMTYsIDMxLCAyNDMsIDI0NSwgMjQ0LCAxMTQsIDE2LCAzMSwgMjUwLCAxNjIsIDIyMywgMjA1LCAxNiwgMzEsIAotICAgIDIyMCwgMjA4LCAyMjYsIDI1NCwgMTYsIDMxLCAyMjAsIDIwOCwgMjM1LCAyNTEsIDE2LCAzMSwgMjQ4LCA5NywgMjMyLCAKLSAgICAyMzMsIDI0NSwgNDIsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAxMTYsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgCi0gICAgMTE3LCAxMDksIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAxNjYsIDE2LCAzMSwgMjQ3LCAyMzgsIDI0OSwgMTE3LCAKLSAgICAxNjMsIDE2LCAzMSwgMTQ2LCAyNTQsIDE2OCwgMTYsIDMxLCAyMTgsIDEyMywgMjM2LCA1NywgMTYsIDMxLCAyNDUsIDEwMSwgCi0gICAgNjUsIDIxNiwgMjAxLCAyNTEsIDEzNiwgMTYsIDMxLCAyNTAsIDE5MywgMTYsIDMxLCAyNDUsIDEwMSwgNjUsIDIzMSwgMTQ2LCAKLSAgICAxNiwgMzEsIDIxOSwgNiwgMTYsIDMxLCAyNDUsIDQyLCAxNiwgMzEsIDI0NCwgNzYsIDIyMSwgNTcsIDE2LCAzMSwgMjQyLCAKLSAgICA5OSwgMjIxLCA1NywgMTYsIDMxLCAyMjQsIDE0LCAyMjEsIDU3LCAxNiwgMzEsIDIxNSwgMTQ1LCAyMjEsIDU3LCAxNiwgMzEsIAotICAgIDIxOSwgMjA2LCAxNiwgMzEsIDI0OCwgMTQsIDI1MSwgMTM5LCA4NywgMjI3LCA0MCwgMjUxLCA4OSwgMTYsIDMxLCAyMjksIAotICAgIDE2NywgMTYsIDMxLCAyNDgsIDE1LCAyNDMsIDI0NSwgMTA5LCAxNiwgMzEsIDIxOSwgNywgMjQzLCAyNDUsIDEwOSwgMjI3LCAKLSAgICAxMDUsIDEwMSwgMjI3LCAxMDUsIDI1MCwgODcsIDIyNywgMTA1LCAyNDMsIDI0OCwgMjI3LCAxMDUsIDIzNSwgMTkxLCAyNDMsIAotICAgIDI0OCwgMjI3LCAxMDUsIDI1MSwgMjE5LCAyNTEsIDUzLCAyMjcsIDEwNSwgMjUxLCA5NiwgMjE3LCA2NSwgMjI3LCAxMDUsIAotICAgIDI1MSwgODIsIDI1MiwgNjUsIDI0MCwgOTYsIDIyNywgMTA1LCAyNTQsIDM2LCA2NSwgMjUwLCA2NSwgMjI3LCAxMDUsIDI0OCwgCi0gICAgMTAxLCAyMjcsIDEwNSwgMjQ5LCAyOSwgMjU0LCAxNzEsIDIyOCwgNTYsIDIyNywgMTA1LCA1MSwgMjUyLCA5NywgMzYsIDIxLCAKLSAgICAxMTYsIDM2LCAyMSwgMTA5LCAzNiwgMjEsIDE2NiwgMzYsIDIxLCAxNjMsIDM2LCAyMSwgMTgwLCAzNiwgMjEsIDE4OSwgMzYsIAotICAgIDIxLCAxOTgsIDM2LCAyMSwgMTk1LCAzNiwgMjEsIDIwMCwgMzYsIDUwLCAyMTcsIDIwMCwgMzYsIDUwLCAyNDUsIDEyNCwgCi0gICAgMzYsIDUwLCAyMTYsIDQxLCAzNiwgNTAsIDIxNywgMTE3LCAzNiwgNTAsIDI0MywgMjMxLCAzNiwgNTAsIDI0NCwgODcsIDM2LCAKLSAgICA1MCwgMjIwLCA0NywgMzYsIDUwLCAyMjEsIDQwLCAzNiwgNTAsIDI0NSwgMTQ3LCAzNiwgNTAsIDIyOSwgMjgsIDM2LCA1MCwgCi0gICAgMjE2LCAzOCwgODYsIDIxLCAxMTYsIDg2LCAyMSwgMTA5LCA4NiwgMjEsIDE2NiwgODYsIDIxLCAxNjMsIDg2LCAyMSwgMTgwLCAKLSAgICA4NiwgMjEsIDE4OSwgODYsIDIxLCAxOTgsIDg2LCAyMSwgMTk1LCA4NiwgMjEsIDIwMCwgODYsIDUwLCAyMTcsIDIwMCwgODYsIAotICAgIDUwLCAyNDUsIDEyNCwgODYsIDUwLCAyMTYsIDQxLCA4NiwgNTAsIDIxNywgMTE3LCA4NiwgNTAsIDI0MywgMjMxLCA4NiwgCi0gICAgNTAsIDI0NCwgODcsIDg2LCA1MCwgMjIwLCA0NywgODYsIDUwLCAyMjEsIDQwLCA4NiwgNTAsIDI0NSwgMTQ3LCA4NiwgNTAsIAotICAgIDIyOSwgMjgsIDg2LCA1MCwgMjE2LCAzOCwgMjEsIDEyMiwgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAxMTcsIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCAyMSwgMTMzLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDI0MywgMjM3LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIAotICAgIDI0NCwgNTAsIDI0MywgMjAwLCAyMTksIDY5LCAyMSwgMjIwLCA1MywgMjQzLCAyMDAsIDIxOSwgNjksIDIxLCAyMjEsIDQzLCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDI0NSwgMTUwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIyOSwgMzEsIDI0MywgCi0gICAgMjAwLCAyMTksIDY5LCA1MCwgMjE3LCAyMDEsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjQ1LCAxMjUsIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCA1MCwgMjE2LCA0MiwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyMTcsIDExOCwgMjQzLCAyMDAsIDIxOSwgNjksIAotICAgIDUwLCAyNDMsIDIzMiwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDQsIDg4LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIyMCwgCi0gICAgNDgsIDI0MywgMjAwLCAyMTksIDY5LCA1MCwgMjIxLCA0MSwgMjQzLCAyMDAsIDIxOSwgNjksIDUwLCAyNDUsIDE0OCwgMjQzLCAKLSAgICAyMDAsIDIxOSwgNjksIDUwLCAyMjksIDI5LCAyNDMsIDIwMCwgMjE5LCA2OSwgNTAsIDIxNiwgMzksIDI0MywgMjAwLCAyMTksIAotICAgIDY5LCA4NiwgNywgMywgMSwgNjEsIDg2LCA3LCAzLCAxLCAyNTMsIDc0LCA4NiwgNywgMywgMSwgMjUwLCAyNTIsIDg2LCA3LCAKLSAgICAzLCAxLCAyNDksIDMsIDg2LCA3LCAzLCAxLCA3NCwgODYsIDcsIDMsIDEsIDI0NCwgMjMwLCA4NiwgNywgMywgMSwgMjQzLCAKLSAgICAxNzcsIDg2LCA3LCAzLCAxLCAyNDIsIDQxLCA4NiwgNywgMywgMSwgNzIsIDg2LCA3LCAzLCAxLCAyMzUsIDE0MiwgODYsIDcsIAotICAgIDMsIDEsIDIzNSwgMjcsIDg2LCA3LCAzLCAxLCAxNTAsIDg2LCA3LCAzLCAxLCAxODMsIDg2LCA3LCAzLCAxLCAyMDQsIDg2LCAKLSAgICA3LCAzLCAxLCA3NSwgODYsIDcsIDMsIDEsIDIyNiwgMjI5LCA4NiwgNywgMywgMSwgMjI0LCAyNDAsIDg2LCA3LCAzLCAxLCAKLSAgICAxNDksIDg2LCA3LCAzLCAxLCAxOTcsIDg2LCA3LCAzLCAxLCAyMTgsIDk5LCA4NiwgNywgMywgMSwgNjksIDg2LCA3LCAzLCAKLSAgICAxLCAyMTUsIDc5LCA4NiwgNywgMywgMSwgMjE0LCA4MiwgODYsIDcsIDMsIDEsIDIxMywgMTY2LCA4NiwgNywgMywgMSwgCi0gICAgMjEzLCAxMDUsIDg2LCA3LCAzLCAxLCAyMTIsIDE1MiwgMzYsIDcsIDYsIDEsIDYxLCAzNiwgNywgNiwgMSwgMjUzLCA3NCwgCi0gICAgMzYsIDcsIDYsIDEsIDI1MCwgMjUyLCAzNiwgNywgNiwgMSwgMjQ5LCAzLCAzNiwgNywgNiwgMSwgNzQsIDM2LCA3LCA2LCAxLCAKLSAgICAyNDQsIDIzMCwgMzYsIDcsIDYsIDEsIDI0MywgMTc3LCAzNiwgNywgNiwgMSwgMjQyLCA0MSwgMzYsIDcsIDYsIDEsIDcyLCAKLSAgICAzNiwgNywgNiwgMSwgMjM1LCAxNDIsIDM2LCA3LCA2LCAxLCAyMzUsIDI3LCAzNiwgNywgNiwgMSwgMTUwLCAzNiwgNywgNiwgCi0gICAgMSwgMTgzLCAzNiwgNywgNiwgMSwgMjA0LCAzNiwgNywgNiwgMSwgNzUsIDM2LCA3LCA2LCAxLCAyMjYsIDIyOSwgMzYsIDcsIAotICAgIDYsIDEsIDIyNCwgMjQwLCAzNiwgNywgNiwgMSwgMTQ5LCAzNiwgNywgNiwgMSwgMTk3LCAzNiwgNywgNiwgMSwgMjE4LCA5OSwgCi0gICAgMzYsIDcsIDYsIDEsIDY5LCAzNiwgNywgNiwgMSwgMjE1LCA3OSwgMzYsIDcsIDYsIDEsIDIxNCwgODIsIDM2LCA3LCA2LCAxLCAKLSAgICAyMTMsIDE2NiwgMzYsIDcsIDYsIDEsIDIxMywgMTA1LCAzNiwgNywgNiwgMSwgMjEyLCAxNTIsIDM2LCA3LCAzLCAxLCA2MSwgCi0gICAgMzYsIDcsIDMsIDEsIDI1MywgNzQsIDM2LCA3LCAzLCAxLCAyNTAsIDI1MiwgMzYsIDcsIDMsIDEsIDI0OSwgMywgMzYsIDcsIAotICAgIDMsIDEsIDc0LCAzNiwgNywgMywgMSwgMjQ0LCAyMzAsIDM2LCA3LCAzLCAxLCAyNDMsIDE3NywgMzYsIDcsIDMsIDEsIDI0MiwgCi0gICAgNDEsIDM2LCA3LCAzLCAxLCA3MiwgMzYsIDcsIDMsIDEsIDIzNSwgMTQyLCAzNiwgNywgMywgMSwgMjM1LCAyNywgMzYsIDcsIAotICAgIDMsIDEsIDE1MCwgMzYsIDcsIDMsIDEsIDE4MywgMzYsIDcsIDMsIDEsIDIwNCwgMzYsIDcsIDMsIDEsIDc1LCAzNiwgNywgMywgCi0gICAgMSwgMjI2LCAyMjksIDM2LCA3LCAzLCAxLCAyMjQsIDI0MCwgMzYsIDcsIDMsIDEsIDE0OSwgMzYsIDcsIDMsIDEsIDE5NywgCi0gICAgMzYsIDcsIDMsIDEsIDIxOCwgOTksIDM2LCA3LCAzLCAxLCA2OSwgMzYsIDcsIDMsIDEsIDIxNSwgNzksIDM2LCA3LCAzLCAxLCAKLSAgICAyMTQsIDgyLCAzNiwgNywgMywgMSwgMjEzLCAxNjYsIDM2LCA3LCAzLCAxLCAyMTMsIDEwNSwgMzYsIDcsIDMsIDEsIDIxMiwgCi0gICAgMTUyLCAzNiwgMjEsIDIxMiwgNzksIDE0NiwgMzYsIDUwLCAyNDUsIDEyNCwgMTQ2LCAzNiwgNTAsIDIxNiwgNDEsIDE0NiwgCi0gICAgMzYsIDUwLCAyMTcsIDExNywgMTQ2LCAzNiwgNTAsIDI0MywgMjMxLCAxNDYsIDM2LCA1MCwgMjQ0LCA4NywgMTQ2LCAzNiwgCi0gICAgNTAsIDIyMCwgNDcsIDE0NiwgMzYsIDUwLCAyMjEsIDQwLCAxNDYsIDM2LCA1MCwgMjQ1LCAxNDcsIDE0NiwgMzYsIDUwLCAKLSAgICAyMjksIDI4LCAxNDYsIDM2LCA1MCwgMjE2LCAzOCwgNTEsIDM2LCAyMSwgMTE2LCA1MSwgMzYsIDIxLCAxMDksIDUxLCAzNiwgCi0gICAgMjEsIDE2NiwgNTEsIDM2LCAyMSwgMTYzLCA1MSwgMzYsIDIxLCAxODAsIDUxLCAzNiwgMjEsIDE4OSwgNTEsIDM2LCAyMSwgCi0gICAgMTk4LCA1MSwgMzYsIDIxLCAxOTUsIDUxLCAzNiwgMjEsIDIwMCwgNTEsIDM2LCA1MCwgMjE3LCAyMDAsIDE0NiwgMzYsIDIxLCAKLSAgICAyMTIsIDc5LCA5MiwgOTYsIDE3NywgMjQxLCAzMSwgOTIsIDk2LCAxMDcsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyMTQsIAotICAgIDIxNiwgOTIsIDk2LCAxMDcsIDIxNCwgMjE2LCA5MiwgOTYsIDE3NywgMjE2LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgCi0gICAgOTYsIDEwNywgMjE2LCAxNjksIDI0OCwgMTAyLCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMjE2LCAxNjksIDI0OCwgMTAyLCAKLSAgICAyMTQsIDIxNiwgOTIsIDk2LCAxMDcsIDIxNiwgMTY5LCAyNDgsIDEwMiwgMjE0LCAyMTYsIDkyLCA5NiwgMTc3LCAyMjQsIAotICAgIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgCi0gICAgMTc3LCAyMjQsIDE2OSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgMjI0LCAxNjksIDI0OCwgMTAyLCAyMTQsIAotICAgIDIxNiwgOTIsIDk2LCAxNzcsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDExOSwgMTc3LCAyNCwgNDYsIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDExOSwgMTA3LCAyNCwgNDYsIDIzMywgMiwgOTIsIDk2LCAxMDcsIDExOSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIAotICAgIDE3NywgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxMTksIDE3NywgMjQsIDQyLCAyNDEsIDIwNSwgOTIsIDk2LCAxMTksIAotICAgIDEwNywgMjQsIDQyLCAyMzMsIDIsIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgCi0gICAgMjIzLCAxNDgsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0NiwgCi0gICAgMjMzLCAyLCA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMjIzLCAxNDgsIDkyLCA5NiwgMTc3LCAxMTQsIDI0LCAyMzMsIDcwLCAKLSAgICA5MiwgOTYsIDExNCwgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDIsIDIzMywgMiwgOTIsIAotICAgIDk2LCAxMDcsIDExNCwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDcxLCAKLSAgICAxNzcsIDI0LCA0NiwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCA0NiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgNzEsIDEwNywgMjQsIDQ2LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxNzcsIDI0LCA0NiwgMTE0LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDE3NywgMjQsIDQ2LCAxMTksIDI0MSwgMjA1LCAKLSAgICA5MiwgOTYsIDEwNywgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDcxLCAyNCwgMjMzLCA3MCwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgNDIsIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgNDIsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTA3LCAyNCwgNDIsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCA0MiwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgNDIsIDExNCwgMjQxLCAyMDUsIDkyLCA5NiwgMTE0LCAxNzcsIDI0LCA0MiwgMTE5LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDcxLCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCAxMTksIDIzMywgMiwgOTIsIDk2LCA0NiwgMTA3LCAyNCwgNDIsIDExOSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDExOSwgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTksIDEwNywgMjQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIAotICAgIDQ2LCAxNzcsIDI0LCA0MiwgMTE5LCAyNDEsIDIwNSwgOTIsIDk2LCA0MiwgMTc3LCAyNCwgNDYsIDExOSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgMTA3LCAxMTksIDI0LCAyNDEsIDMxLCA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMjQxLCAzMSwgOTIsIDk2LCA0MiwgCi0gICAgMTA3LCAyNCwgNDYsIDExNCwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE0LCAxNzcsIDI0LCAxOTksIDI0MSwgMjA1LCA5MiwgOTYsIDExNCwgMTA3LCAyNCwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgNDYsIDE3NywgMjQsIDQyLCAxMTQsIDI0MSwgMjA1LCA5MiwgOTYsIDQyLCAxNzcsIDI0LCA0NiwgMTE0LCAyNDEsIDIwNSwgCi0gICAgOTIsIDk2LCAxMDcsIDExNCwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCA3MSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgNDIsIAotICAgIDEwNywgMjQsIDQ2LCA3MSwgMjMzLCAyLCA5MiwgOTYsIDQ2LCAxMDcsIDI0LCA0MiwgNzEsIDIzMywgMiwgOTIsIDk2LCA3MSwgCi0gICAgMTc3LCAyNCwgMTk5LCAyNDEsIDIwNSwgOTIsIDk2LCAxMTQsIDEwNywgMjQsIDExOSwgMTk5LCAyMzMsIDIsIDkyLCA5NiwgCi0gICAgMTE5LCAxMDcsIDI0LCAxMTQsIDE5OSwgMjMzLCAyLCA5MiwgOTYsIDcxLCAxMDcsIDI0LCAxOTksIDIzMywgMiwgOTIsIDk2LCAKLSAgICA0MiwgMTE0LCAxMDcsIDI0LCA0NiwgMTE5LCAyMzMsIDIsIDkyLCA5NiwgNDYsIDExNCwgMTA3LCAyNCwgNDIsIDExOSwgCi0gICAgMjMzLCAyLCA5MiwgOTYsIDQyLCAxMTksIDEwNywgMjQsIDQ2LCAxMTQsIDIzMywgMiwgOTIsIDk2LCA0NiwgMTE5LCAxMDcsIAotICAgIDI0LCA0MiwgMTE0LCAyMzMsIDIsIDkyLCA5NiwgMTE5LCAxNzcsIDI0LCAxMTQsIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgCi0gICAgMTE0LCAxNzcsIDI0LCAxMTksIDE5OSwgMjQxLCAyMDUsIDkyLCA5NiwgNDYsIDE3NywgMjQsIDQyLCA3MSwgMjQxLCAyMDUsIAotICAgIDkyLCA5NiwgNDIsIDE3NywgMjQsIDQ2LCA3MSwgMjQxLCAyMDUsIDkyLCA5NiwgMTA3LCA3MSwgMjQsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTc3LCA1MSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCA5NiwgMTA3LCA1MSwgMjQ4LCAxMDIsIDI0MSwgMzEsIDkyLCAKLSAgICA5NiwgMTc3LCA1MSwgMjQ4LCAxMDIsIDIxNCwgMjE2LCA5MiwgOTYsIDEwNywgNTEsIDI0OCwgMTAyLCAyMTQsIDIxNiwgOTIsIAotICAgIDk2LCA1MSwgMjQxLCAzMSwgOTIsIDk2LCA1MSwgMjE0LCAyMTYsIDkyLCA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgCi0gICAgNjcsIDkyLCA5NiwgMTE5LCA1MSwgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTksIDI0LCAyMjMsIDE0OCwgOTIsIAotICAgIDk2LCAxMTksIDIyMCwgODEsIDI0LCA0MiwgMjQ2LCA2NywgOTIsIDk2LCAxMTksIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCAKLSAgICA5NiwgNTEsIDExOSwgMjQsIDIzMywgNzAsIDkyLCA5NiwgMTE0LCAyMjAsIDgxLCAyNCwgNDYsIDI0NiwgNjcsIDkyLCA5NiwgCi0gICAgMTE0LCA1MSwgMjQsIDQ2LCAyMjAsIDgwLCA5MiwgOTYsIDUxLCAxMTQsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCAxMTQsIAotICAgIDIyMCwgODEsIDI0LCA0MiwgMjQ2LCA2NywgOTIsIDk2LCAxMTQsIDUxLCAyNCwgNDIsIDIyMCwgODAsIDkyLCA5NiwgNTEsIAotICAgIDExNCwgMjQsIDIzMywgNzAsIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCA0NiwgMjQ2LCA2NywgOTIsIDk2LCA3MSwgNTEsIAotICAgIDI0LCA0NiwgMjIwLCA4MCwgOTIsIDk2LCA1MSwgNzEsIDI0LCAyMjMsIDE0OCwgOTIsIDk2LCA3MSwgMjIwLCA4MSwgMjQsIAotICAgIDQyLCAyNDYsIDY3LCA5MiwgOTYsIDcxLCA1MSwgMjQsIDQyLCAyMjAsIDgwLCA5MiwgOTYsIDUxLCA3MSwgMjQsIDIzMywgCi0gICAgNzAsIDkyLCA5NiwgMTE5LCAyMjAsIDgxLCAyNCwgMTk5LCAyNDYsIDY3LCA5MiwgOTYsIDExOSwgNTEsIDI0LCAxOTksIAotICAgIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExOSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTE0LCAyMjAsIDgxLCAyNCwgMTk5LCAKLSAgICAyNDYsIDY3LCA5MiwgOTYsIDExNCwgNTEsIDI0LCAxOTksIDIyMCwgODAsIDkyLCA5NiwgNTEsIDExNCwgMjQsIDI0MSwgMzEsIAotICAgIDkyLCA5NiwgNzEsIDIyMCwgODEsIDI0LCAxOTksIDI0NiwgNjcsIDkyLCA5NiwgNzEsIDUxLCAyNCwgMTk5LCAyMjAsIDgwLCAKLSAgICA5MiwgOTYsIDUxLCA3MSwgMjQsIDI0MSwgMzEsIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE5LCAyNCwgMjIzLCAxNDgsIAotICAgIDkyLCA5NiwgMTc3LCAyNTMsIDE5NiwgMTE5LCAyNCwgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDI1MywgMTk2LCAxMTQsIDI0LCAKLSAgICAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjUzLCAxOTYsIDExNCwgMjQsIDIyMywgMTQ4LCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIAotICAgIDIxNSwgMTMxLCA0NiwgMjExLCAyMTEsIDIzMiwgMTYzLCAyMzMsIDcwLCA5MiwgOTYsIDE3NywgMjQ3LCAyMDcsIDIxNSwgCi0gICAgMTMxLCA0MiwgMjExLCAyMTEsIDIzMiwgMTYzLCAyMjMsIDE0OCwgOTIsIDk2LCAxNzcsIDI0NywgMjA3LCAyNDksIDcwLCAKLSAgICA5MiwgOTYsIDE3NywgMjMzLCA3MCwgOTIsIDk2LCAxNzcsIDIxNSwgMTM0LCA5MiwgOTYsIDE3NywgMjIzLCAxNDgsIDkyLCAKLSAgICA5NiwgMTc3LCAyNDYsIDYwLCA5MiwgOTYsIDEwNywgMjMzLCA3MCwgOTIsIDk2LCAxMDcsIDIxNSwgMTM0LCA5MiwgOTYsIAotICAgIDEwNywgMjIzLCAxNDgsIDkyLCA5NiwgMTA3LCAyNDYsIDYwLCA5MiwgOTYsIDE3NywgNDIsIDI0LCAxMDcsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDE3NywgMTE0LCAyNCwgMTA3LCAyNDYsIDYwLCA5MiwgOTYsIDEwNywgNDIsIDI0LCAxNzcsIDIyMywgMTQ4LCAKLSAgICA5MiwgOTYsIDEwNywgMTE0LCAyNCwgMTc3LCAyNDYsIDYwLCAyMTUsIDEzMSwgMTUxLCAyNTEsIDEzNiwgMjMyLCAxNjMsIAotICAgIDEyMiwgMjQ1LCAxNDYsIDI1MSwgMTM2LCAyMzIsIDE2MywgMTIyLCAyMjQsIDE2NywgMjUxLCAxMzYsIDIzMiwgMTYzLCAKLSAgICAxMzMsIDI0NSwgMTQ0LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDE1MSwgMjUxLCAxMzYsIDIzMiwgMTYzLCAyNDQsIDUwLCAyNDUsIAotICAgIDE0NCwgMjUxLCAxMzYsIDIzMiwgMTYzLCAxMzMsIDIyNCwgMTY1LCAyNTEsIDEzNiwgMjMyLCAxNjMsIDIyMSwgNDMsIDI0NSwgCi0gICAgMTQ0LCAyNTEsIDEzNiwgMjQzLCAyMDAsIDI1MSwgMTM2LCA0MiwgMjIxLCA0MywgMjQ1LCAxNDQsIDI1MSwgMTM2LCA0MiwgCi0gICAgMTMzLCAyMjQsIDE2NSwgMjUxLCAxMzYsIDQyLCAyNDQsIDUwLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAxNTEsIDI1MSwgCi0gICAgMTM2LCA0MiwgMTMzLCAyNDUsIDE0NCwgMjUxLCAxMzYsIDQyLCAxMjIsIDIyNCwgMTY3LCAyNTEsIDEzNiwgNDIsIDEyMiwgCi0gICAgMjQ1LCAxNDYsIDI1MSwgMTM2LCA0NiwgMTUxLCAyNTEsIDEzNiwgMTc3LCAyMjEsIDE0LCAyMzEsIDE0NywgMjIxLCAxNCwgCi0gICAgMjQ4LCAxMDcsIDIyMSwgMTQsIDIxNSwgMTMxLCAxMjIsIDI0NSwgMTQ2LCAyNTEsIDEzNiwgNDYsIDEyMiwgMjQ1LCAxNDYsIAotICAgIDI1MSwgMTM2LCAyMjQsIDE3MSwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAyMzIsIDE2MywgMjIzLCAxNDgsIDIyNCwgCi0gICAgMTcxLCAyMTUsIDEzMSwgMjMzLCA3MCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIzMiwgMTYzLCA0MiwgMjQsIAotICAgIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIzMiwgMTYzLCAyMjMsIDE0OCwgMjI0LCAKLSAgICAxNzEsIDIxNSwgMTMxLCA0MiwgMjQsIDIxNSwgMTMxLCA0NiwgMjQsIDIzMiwgMTYzLCAyMzMsIDcwLCAyMjQsIDE3MSwgCi0gICAgMjE1LCAxMzEsIDQyLCAyNCwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAKLSAgICAxMzEsIDIyMywgMTQ4LCAyMjQsIDE3MSwgMjE1LCAxMzEsIDQ2LCAyNCwgMjMyLCAxNjMsIDIzMywgNzAsIDIyNCwgMTcxLCAKLSAgICAyMTUsIDEzMSwgNDYsIDI0LCAyMzIsIDE2MywgNDIsIDI0LCAyMzIsIDE2MywgMjIzLCAxNDgsIDgzLCAyMTksIDE2NiwgNjcsIAotICAgIDIxOSwgMTY2LCA2NywgNDEsIDIsIDIyMywgODUsIDI0OSwgOTgsIDY3LCA0MSwgMjQ5LCAxMjYsIDgzLCAzLCAyMTksIDE2NiwgCi0gICAgNDEsIDIsIDE5OSwgMjQ0LCA3NCwgNDEsIDIsIDcxLCAyNDQsIDc0LCA0MSwgMiwgMjI3LCAxMSwgMjQ5LCA2NiwgMjQ0LCAKLSAgICA3NCwgNDEsIDIsIDIxNSwgMTMxLCA0MiwgMjExLCAyMTEsIDIzMiwgMTYzLCA0NiwgMjQ0LCA3NCwgNDEsIDIsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjExLCAyMTEsIDIzMiwgMTYzLCA0MiwgMjQ0LCA3NCwgNDEsIDIsIDI0NywgMjA3LCAyNDksIDY2LCAyNDQsIAotICAgIDc0LCA4MywgMywgMjE5LCAxNjYsIDY3LCAzLCAyMTksIDE2NiwgODMsIDIyNCwgOSwgNjcsIDIyNCwgOSwgODMsIDcxLCAKLSAgICAyMjQsIDksIDY3LCA3MSwgMjI0LCA5LCA4MywgMjI2LCAxMzQsIDY3LCAyMjYsIDEzNCwgODMsIDIxNSwgMTMzLCAyMTYsIAotICAgIDE4MywgNjcsIDIxNSwgMTMzLCAyMTYsIDE4MywgODMsIDIxNSwgMTMzLCAzLCAyMTYsIDE4MywgNjcsIDIxNSwgMTMzLCAzLCAKLSAgICAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAyMTYsIDE4MywgNjcsIDIyMywgMTQ0LCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAKLSAgICAzLCAyMTYsIDE4MywgNjcsIDIyMywgMTQ0LCAzLCAyMTYsIDE4MywgODMsIDIyMywgMTQ0LCAyMjUsIDE0MiwgNjcsIDIyMywgCi0gICAgMTQ0LCAyMjUsIDE0MiwgODMsIDI0NiwgNTksIDIxNiwgMTgzLCA2NywgMjQ2LCA1OSwgMjE2LCAxODMsIDgzLCAyNDYsIDU5LCAKLSAgICAzLCAyMTYsIDE4MywgNjcsIDI0NiwgNTksIDMsIDIxNiwgMTgzLCA4MywgMjMzLCA2NiwgMjE2LCAxODMsIDY3LCAyMzMsIAotICAgIDY2LCAyMTYsIDE4MywgODMsIDIzMywgNjYsIDMsIDIxNiwgMTgzLCA2NywgMjMzLCA2NiwgMywgMjE2LCAxODMsIDgzLCAKLSAgICAyMzMsIDY2LCAyMjUsIDE0MiwgNjcsIDIzMywgNjYsIDIyNSwgMTQyLCA4MywgMjQ3LCAyMDAsIDY3LCAyNDcsIDIwMCwgNjcsIAotICAgIDI0NywgMjAxLCAyNDksIDEyNiwgODMsIDMsIDI0NywgMjAwLCAyNDQsIDU4LCAyMzIsIDE1OSwgNjcsIDI0OSwgMjI4LCAKLSAgICAyNDYsIDcyLCAyNDksIDIyOCwgMjQ5LCAyMjksIDIsIDcxLCAyNDQsIDc0LCAyNTEsIDQwLCA4MywgMjQ5LCAyMjgsIDI0OSwgCi0gICAgMjI5LCAyLCA0MiwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgCi0gICAgMjMyLCAxNjMsIDE1MSwgMjUxLCAxNDQsIDI0OSwgMjI5LCAyLCAyMTUsIDEzMSwgMTUxLCAyNTEsIDE0NCwgMjQ5LCAyMjksIAotICAgIDIsIDIxNSwgMTMxLCA0NiwgMjI0LCAxNzEsIDI1MSwgMTQ0LCAyNDksIDIyOSwgMiwgMjU0LCA2NCwgMjUxLCAxNywgMjE1LCAKLSAgICAxMzEsIDQyLCAyMjQsIDE3MSwgMjUxLCAxNDQsIDQyLCAxNTEsIDgzLCAyNDksIDIyOCwgNDYsIDE1MSwgODMsIDI0OSwgCi0gICAgMjI4LCAyMzUsIDE5MiwgMjUxLCA0MiwgMjM1LCAxOTIsIDY3LCAyNDksIDIyOCwgMjE1LCAxMzEsIDE1MSwgMjM1LCAxOTIsIAotICAgIDY3LCAyNDksIDIyOCwgMjMyLCAxNjMsIDE1MSwgMjM1LCAxOTIsIDY3LCAyNDksIDIyOCwgMjE1LCAxMzEsIDQyLCAyMjQsIAotICAgIDE3MSwgMjQ5LCAyMjYsIDI1MywgMTk1LCAyMTUsIDEzMSwgNDYsIDIyNCwgMTcxLCAyNDksIDIyNiwgMjUzLCAxOTUsIDIzMiwgCi0gICAgMTYzLCA0NiwgMjI0LCAxNzEsIDI0OSwgMjI2LCAyNTMsIDE5NSwgMjMyLCAxNjMsIDQyLCAyMjQsIDE3MSwgMjQ5LCAyMjYsIAotICAgIDI1MywgMTk1LCAyMTUsIDEzMSwgMTUxLCAyNDksIDIyOCwgMjMyLCAxNjMsIDE1MSwgMjQ5LCAyMjgsIDgzLCAyMzIsIDE2MywgCi0gICAgNDYsIDIxNiwgMTgzLCA4MywgMjMyLCAxNjMsIDQyLCAyMTYsIDE4MywgODMsIDIxNSwgMTMxLCA0MiwgMjE2LCAxODMsIDgzLCAKLSAgICAyMTUsIDEzMSwgNDYsIDIxNiwgMTgzLCA2NywgMjUxLCA0MiwgNDEsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgNDYsIAotICAgIDE1MSwgMjUxLCAxNDQsIDQxLCAyLCAyMTUsIDEzMSwgNDIsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjMyLCAKLSAgICAxNjMsIDQ2LCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgNjcsIDQxLCAyLCA3MSwgMjUxLCAxNTUsIDIzMiwgMjQyLCA2NywgCi0gICAgMjE1LCAxMzMsIDIxNiwgMTg0LCAyLCAyNDcsIDc0LCAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAKLSAgICAyMTUsIDEzMywgMjE2LCAxODQsIDIsIDQ2LCAxNTEsIDI1MSwgMTQ0LCAyMzMsIDEwOCwgMjQ5LCAyMjgsIDY3LCA0MSwgMiwgCi0gICAgMjE1LCAxMzEsIDQyLCAyMjQsIDE3MCwgNjcsIDQxLCAyLCAyMzIsIDE2MywgNDIsIDIyNCwgMTcwLCA2NywgNDEsIDIsIAotICAgIDIzMiwgMTYzLCA0NiwgMjI0LCAxNzAsIDY3LCA0MSwgMiwgMjE1LCAxMzEsIDQ2LCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAKLSAgICAyLCAyMTUsIDEzMSwgNDIsIDIyNCwgMTcwLCA2NywgMjQ5LCAyMjksIDIsIDIzMiwgMTYzLCA0MiwgMjI0LCAxNzAsIDY3LCAKLSAgICAyNDksIDIyOSwgMiwgMjMyLCAxNjMsIDQ2LCAyMjQsIDE3MCwgNjcsIDI0OSwgMjI5LCAyLCAyMTUsIDEzMSwgNDYsIDIyNCwgCi0gICAgMTcwLCAyMTUsIDEzMSwgNDIsIDIxNiwgMTgzLCAyMTUsIDEzMSwgNDYsIDIxNiwgMTgzLCAyMzIsIDE2MywgNDIsIDIxNiwgCi0gICAgMTgzLCA2NywgMjMxLCAxNDcsIDIxOSwgMTY2LCA4MywgMjMxLCAxNDcsIDIxOSwgMTY2LCA2NywgMjMxLCAxNDcsIDMsIAotICAgIDIxOSwgMTY2LCA4MywgMjMxLCAxNDcsIDMsIDIxOSwgMTY2LCAyMzIsIDE2MywgNDYsIDIxNiwgMTgzLCA4MywgMjE4LCAKLSAgICAyMzksIDIsIDIyNCwgMjUsIDI0OSwgMTg0LCAyMTUsIDE2NCwgMjE5LCAyNDQsIDI0OSwgMTYwLCA4MywgMjE5LCA5NSwgNjcsIAotICAgIDIxOSwgOTUsIDIzMywgMCwgMjE3LCA4NiwgMjE4LCAyMzgsIDI1MywgMTQ5LCAyMjgsIDE4MiwgMjQ3LCAyNDUsIDIyOCwgCi0gICAgMTgyLCAyNDksIDEzNSwgMjI3LCAyOSwgODMsIDIxNywgMjA5LCA2NywgMjE3LCAyMDksIDI1MiwgNzUsIDI1MSwgODksIAotICAgIDI1MiwgNzUsIDkyLCAyLCAyNTAsIDY1LCAyNTIsIDc1LCA5MiwgMiwgMjEzLCAxNjYsIDIyMiwgMTY5LCAyMTUsIDE2NSwgMiwgCi0gICAgMjI0LCA1MSwgMjQ2LCAzOSwgMjQwLCAyMzAsIDI1MSwgMTk5LCA2NywgMjIwLCAxODIsIDIyNSwgMjMzLCA4MywgMjIwLCAKLSAgICAxODIsIDIyNSwgMjMzLCAyMjEsIDEwLCAyMjMsIDIwMiwgMjIzLCA4OSwgMjQ0LCAyNCwgMjQxLCAyMTIsIDI1MSwgNDIsIAotICAgIDgzLCA0MiwgMjI1LCAxNDEsIDIzNSwgMjM5LCA4MywgNDYsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIDQyLCAyMjUsIDE0MSwgCi0gICAgMjM1LCAyMzksIDY3LCAxMTQsIDIyNSwgMTQxLCAyMzUsIDIzOSwgNjcsIDQ2LCAyMjUsIDE0MSwgMjM1LCAyMzksIDY3LCAKLSAgICAxMTksIDIyNSwgMTQxLCAyMzUsIDIzOSwgMjIwLCAyOSwgMjQsIDI0OSwgNjksIDI1MCwgMTUyLCA1MiwgMjI0LCA2MiwgNTIsIAotICAgIDI1MSwgMTYyLCA1MiwgMjUwLCAyMTEsIDI1NCwgMTMsIDIyNywgMTIsIDI0OSwgNzAsIDI1MCwgNDgsIDIyMywgMTkwLCAKLSAgICAyNDksIDcxLCA2NSwgMjMyLCAxNzMsIDI0OSwgNzEsIDY1LCAyMzUsIDExNywgMjE5LCA5NiwgMjQsIDI0OSwgNzYsIDI0NCwgCi0gICAgMTM2LCA4NywgMjU0LCAxNTMsIDIyMSwgMTIsIDI0MiwgNSwgMjQsIDIyMCwgMTE1LCAyMjYsIDk1LCA4NywgMjEyLCAyNDUsIAotICAgIDIxMywgNTgsIDIxNiwgMTczLCAzMSwgMjQxLCAyMDcsIDIxNiwgMTczLCAzMSwgMjMzLCAxMzEsIDIxNiwgMTczLCAzMSwgCi0gICAgMjQ0LCA2NSwgMjE2LCAxNzMsIDMxLCAyMTcsIDg3LCAyMTYsIDE3MywgMzEsIDIxMywgMjI0LCAyMTYsIDE3MywgMzEsIAotICAgIDIxNCwgMjQsIDIxNiwgMTczLCAzMSwgMjMwLCAxODUsIDIxNiwgMTczLCAzMSwgMjQ1LCAxNzksIDIxMywgMjQyLCA2NSwgCi0gICAgMjQ3LCAyMjYsIDY3LCAyNDMsIDIwOSwgMjQ0LCAxNTgsIDY3LCAyMjAsIDIsIDI0NCwgMTU4LCA4MywgMjIwLCAyLCAyNDQsIAotICAgIDE1OCwgNjcsIDIxOCwgMjM5LCAyLCAyMjQsIDI1LCAyNDQsIDYxLCAyMjQsIDE2NywgMjMwLCAxOTgsIDIzMywgMTAzLCAKLSAgICAyMjQsIDE2NywgMjMwLCAxOTgsIDIzMSwgMTE4LCAyNDQsIDEwNywgNTIsIDI0NSwgMTc5LCAyMzEsIDI1MywgNTIsIDIzNSwgCi0gICAgNDEsIDIyMiwgMTM3LCAyMTUsIDExNiwgMjI5LCAxNzUsIDIyNSwgMTU0LCAyNTMsIDE4MywgMjE3LCAyNDcsIDI0MywgMjgsIAotICAgIDI1MCwgMTkxLCAyMzMsIDQzLCAyMTQsIDEzMSwgMjMzLCAxMCwgMjIyLCAxMTAsIDIyMiwgMTg4LCAyNTAsIDE4MCwgMjUzLCAKLSAgICAyMTIsIDIyNSwgMTg0LCA2NywgMjUwLCA1NCwgMjM0LCA4NywgNjcsIDI1MCwgNTQsIDIyNCwgMTU5LCA2NywgMjUwLCA1NCwgCi0gICAgMjIzLCA5NywgNjcsIDI1MCwgNTQsIDI1MSwgMTU0LCA2NywgMjUwLCA1NCwgMjM0LCAzOSwgNjcsIDI1MCwgNTQsIDIyNiwgCi0gICAgMTA1LCA4MywgMjUwLCA1NCwgMjM0LCA4NywgODMsIDI1MCwgNTQsIDIyNCwgMTU5LCA4MywgMjUwLCA1NCwgMjIzLCA5NywgCi0gICAgODMsIDI1MCwgNTQsIDI1MSwgMTU0LCA4MywgMjUwLCA1NCwgMjM0LCAzOSwgODMsIDI1MCwgNTQsIDIyNiwgMTA1LCA4MywgCi0gICAgMjE5LCAyMDQsIDIxOCwgMjUxLCA2NywgMjQxLCAyMTIsIDIxOCwgMjUxLCA2NywgMjQ3LCAyMDEsIDIxOCwgMjUxLCA4MywgCi0gICAgMjQ5LCAxODIsIDIxOCwgMjUxLCA2NywgMjE5LCAyMDQsIDIxOCwgMjUxLCA4MywgMjQxLCAyMTIsIDIxOCwgMjUxLCA4MywgCi0gICAgMjQ3LCAyMDEsIDIxOCwgMjUxLCA2NywgMjQ5LCAxODIsIDIxOCwgMjUxLCAyNDAsIDIzMCwgMjE5LCAxNzAsIDIyNCwgMTY3LCAKLSAgICAyMjgsIDE1OCwgMjQ1LCAxNDYsIDIyOCwgMTU4LCAyNTEsIDI0OSwgMjQ1LCAxNDYsIDIyOCwgMTUzLCAyNTEsIDI0OSwgCi0gICAgMjIwLCA0NiwgMjI4LCAxNTMsIDIzMCwgMTI3LCAyNDQsIDM1LCA1MiwgMjMwLCAxMjcsIDIzMCwgOSwgNTIsIDIzMCwgMTI3LCAKLSAgICAyMjAsIDI1NSwgNTIsIDIxMywgMjUwLCAxNzUsIDI0OSwgNzAsIDI0NSwgMTc2LCAxNzUsIDI0OSwgNzAsIDIxNSwgMTQyLCAKLSAgICAyMjQsIDUsIDg3LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxNCwgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEzLCAKLSAgICAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgMTIsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjE2LCAxMSwgCi0gICAgMjI1LCAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDEwLCAyMjUsIDE2NiwgMjI0LCA1LCAxNiwgMzEsIDIxNiwgOSwgMjI1LCAKLSAgICAxNjYsIDIyNCwgNSwgMTYsIDMxLCAyMTYsIDgsIDIyNSwgMTY2LCAyMjQsIDUsIDE2LCAzMSwgMjQzLCAyNiwgMjMxLCAyMDEsIAotICAgIDgzLCAyMTUsIDE0MiwgMjI0LCA1LCA4NywgMjI0LCA2LCAyMjYsIDE0OCwgODcsIDIyNiwgMTI0LCAyMjYsIDE0OCwgODcsIAotICAgIDIyNiwgNDksIDIyNiwgMTQ4LCA1MiwgMjEzLCAyNDAsIDg3LCAyNDcsIDE5MywgMjQ0LCAxNTcsIDI0NywgMTkzLCAyNDQsIAotICAgIDE1NiwgMjQ3LCAxOTMsIDI0NCwgMTU1LCAyNDcsIDE5MywgMjQ0LCAxNTQsIDI0NywgMTkzLCAyNDQsIDE1MywgMjQ3LCAKLSAgICAxOTMsIDI0NCwgMTUyLCA2NywgMjQ5LCAyMjksIDIsIDYyLCAyMjMsIDE0OCwgNjcsIDI0OSwgMjI5LCAyLCAxMTcsIDI0NywgCi0gICAgNzIsIDgzLCAyNDksIDIyOSwgMiwgNjcsIDYyLCAyMjMsIDE0OCwgODMsIDI0OSwgMjI5LCAyLCAxMTcsIDY3LCAyNDcsIDcyLCAKLSAgICAyMzAsIDIxMiwgMzEsIDIxMywgNTgsIDIzMCwgMjEyLCAzMSwgMjEyLCAyNDQsIDI0NywgMTc2LCAzMSwgMjQyLCAxMDgsIAotICAgIDIxMywgNTgsIDI0NywgMTc2LCAzMSwgMjMzLCAzNywgMjEyLCAyNDQsIDI0NywgMTc2LCAzMSwgMjMzLCAzNywgMjEzLCA1OCwgCi0gICAgMjQ3LCAxNzYsIDMxLCAyNDIsIDEwOCwgMjEyLCAyNDQsIDY3LCAyNDQsIDQyLCA4MywgMjQ0LCA0MiwgMjQyLCA1LCAyNCwgCi0gICAgMjI1LCAyMzYsIDI1NCwgMjksIDI0OSwgNjgsIDIxOCwgMTgwLCAyMTksIDEwMywgNjUsIDI1NCwgMTMxLCAyMjIsIDEyNCwgCi0gICAgMjU0LCA3NywgMjQ0LCAyMCwgMjQzLCAzNiwgMjE5LCAxMDMsIDY1LCAyNDEsIDE4NywgMjUzLCAxMTUsIDg3LCAyNDQsIDMxLCAKLSAgICAyMjYsIDI1MCwgNjcsIDIxOSwgOTUsIDEzMywgMjMyLCAyMzcsIDI0OSwgMTE0LCAyMjMsIDE0OCwgMTMzLCAyMzIsIDIzNywgCi0gICAgMjQ5LCAxMTQsIDIzMywgNzAsIDIxNCwgMzQsIDUyLCAxMjQsIDIxNCwgMTExLCA1MiwgMjQ2LCA2NCwgMjQ0LCAxMDcsIDUyLCAKLSAgICAyNDYsIDY0LCAyMzEsIDI1MywgNTIsIDIzNSwgMjAwLCAyNDQsIDEwNywgMjQsIDIzMSwgMjUzLCA1MiwgMjMxLCAyNTMsIAotICAgIDI0LCAyNDQsIDEwNywgNTIsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCA1MiwgMjMxLCAyNTMsIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAyMzEsIDI1MywgMjQsIDI0NCwgMTA3LCA1MiwgNzEsIDIzMSwgMjUzLCAyLCAyMTksIDQ1LCA1MiwgMTk5LCAyMzEsIDI1MywgCi0gICAgMiwgMjE5LCA0NSwgNTIsIDIzMSwgMTQ3LCA2NywgMjQ5LCAyMjgsIDIzMSwgMTQ3LCA4MywgMjQ5LCAyMjgsIDIzMSwgMTQ3LCAKLSAgICAzLCA2NywgMjQ5LCAyMjgsIDIzMSwgMjE2LCA4NywgMjQ3LCAxMTksIDg3LCAyMTUsIDE0MCwgMjI2LCAxMjMsIDg3LCAyNDksIAotICAgIDE2OSwgMjQzLCAxOTYsIDIxNSwgMTEyLCAyMjksIDE3MCwgMjUwLCA5NSwgMjI2LCAxODgsIDIzNSwgNDcsIDIxNCwgMTYyLCAKLSAgICAyNTAsIDMwLCA4MywgMjMwLCAxOTksIDIzMiwgMjUzLCAyMjEsIDMzLCAyMjEsIDY3LCAyMjQsIDE1MCwgMjIxLCA1MSwgCi0gICAgMjE5LCAyMzksIDI1MiwgNzgsIDI1MiwgNDYsIDkxLCAyMzQsIDE0NCwgNjcsIDI0NiwgNDgsIDIzMSwgMjQ4LCA2NywgMjQ2LCAKLSAgICA0OCwgMjM0LCA4NywgODMsIDI0NiwgNDgsIDIzMSwgMjQ4LCA4MywgMjQ2LCA0OCwgMjM0LCA4NywgMjE5LCAyNDUsIDIxMywgCi0gICAgMjE2LCAyMTksIDI0OCwgMjE4LCAyMzksIDI1MSwgMjI3LCAyNDksIDE4NCwgMjI0LCA1MCwgODMsIDIxOSwgMjQ0LCAyMTcsIAotICAgIDg4LCAyNDksIDE4NSwgMjQsIDIyNCwgNTAsIDIxNiwgNTgsIDY3LCAyMjAsIDE4MiwgMjI1LCAyMzMsIDIxNiwgNTgsIDgzLCAKLSAgICAyMjAsIDE4MiwgMjI1LCAyMzMsIDY3LCAyNDcsIDIwMSwgMjM1LCAyNTIsIDIxOSwgMTY2LCAyNDksIDY1LCAyMzMsIDExNSwgCi0gICAgMjQ3LCAxNDUsIDI1MCwgMTc2LCAyMjcsIDMyLCAyMjUsIDIzNiwgMjUwLCAxNzcsIDIyMCwgMTYsIDI0MSwgMTk2LCAyLCAKLSAgICA2NywgMjQ5LCA3MCwgMzYsIDI0OSwgNjUsIDIzMywgMTE1LCAyNTAsIDg4LCAyMjgsIDE4NiwgMjQ1LCA4MywgMjU0LCA1MCwgCi0gICAgMjI3LCA1NywgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA4MywgMjE2LCAyMSwgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA2NywgCi0gICAgMjE2LCAyMSwgNDIsIDIxNCwgMTAsIDIxNiwgMjA4LCA4MywgNDIsIDIzMywgMTE2LCAyMzEsIDExNywgNjcsIDQyLCAyMzMsIAotICAgIDExNiwgMjMxLCAxMTcsIDI0NiwgNDQsIDIyMCwgMTAsIDUyLCAxMDcsIDY3LCAyNDYsIDU5LCAyMTYsIDE4MywgNDIsIDI0OSwgCi0gICAgMTkzLCAyNDUsIDgzLCA5MSwgMjIyLCAxNjksIDI0NCwgMTQzLCAyNDcsIDIwNywgMjM1LCAyNTIsIDY3LCAyNDksIDIyOSwgCi0gICAgMjM1LCAyNTIsIDgzLCAyMTksIDE2NiwgODMsIDIxNiwgMTUwLCAyMjMsIDIxMiwgNDIsIDI0NSwgODIsIDIyMywgMjEyLCAKLSAgICA0MiwgMjQ1LCA4MSwgMjUzLCAxMjcsIDE2LCAzMSwgMjE1LCAxMTYsIDEwNywgMjQ5LCAyMjksIDIsIDIxOSwgNDUsIDI0LCAKLSAgICAxMTcsIDE3NiwgNDksIDIyNiwgNjQsIDIyMywgMTQ1LCAyMzUsIDIwMiwgMjI2LCA2NCwgMjMzLCA2NywgMjM1LCAyMDIsIAotICAgIDIyNiwgNjQsIDIzNSwgMTkxLCAyMjYsIDY0LCA4MywgMjQ5LCA3MSwgMjI3LCA2MywgMjIwLCAyMDksIDIyMCwgMTk3LCAKLSAgICAyMjAsIDE1NCwgMjQ5LCAyNTQsIDI1MCwgMTU4LCAyNDEsIDE0MywgMjIwLCA1NCwgMjQzLCAzNywgMjEzLCAyMTYsIDI0MCwgCi0gICAgMjEwLCAyNDMsIDM3LCAyLCAyNDEsIDI1MSwgMjMxLCAyMzYsIDE2LCAzMSwgMjMzLCAxLCAyMzAsIDE4NSwgMjE1LCAxNjUsIAotICAgIDIyNywgNjMsIDI0MiwgMTAwLCAyNDMsIDIzOCwgMjQ0LCA0MywgMjM1LCAyNTIsIDI0MSwgNDUsIDI0NCwgOTgsIDIyMiwgCi0gICAgMTg1LCA0MSwgMjQzLCAyMzcsIDI0OSwgOTgsIDIyMCwgMzIsIDI0MCwgMTA1LCAyMjAsIDM1LCAyMjYsIDQ0LCAyLCAyNTIsIAotICAgIDc4LCAyMTcsIDE5NSwgMjM1LCAxMzEsIDI1MiwgNjUsIDg3LCAyNDEsIDIxNSwgMjQyLCAxMTAsIDg3LCAyNDMsIDIwMywgCi0gICAgMjI1LCAyOCwgMjQ5LCA0NCwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCA2NywgMjQ0LCA0MywgMiwgMTk5LCAyMzEsIDM3LCAKLSAgICA4MywgMjE5LCA0NiwgMjE1LCAxMzEsIDI1MSwgMTQwLCAyMjIsIDExMiwgODMsIDIyMiwgMTEyLCAyMzIsIDE2MywgMjUxLCAKLSAgICAxNDAsIDIyMiwgMTEyLCA2NywgMjIyLCAxMTIsIDY3LCAxMDcsIDI1MCwgNjYsIDc3LCAyMTcsIDIxMCwgMjMyLCAyMDYsIAotICAgIDUyLCAyMTgsIDQsIDI0NiwgNDMsIDI1NCwgOTksIDI0NSwgNzgsIDIyNCwgNDgsIDI0NCwgNTQsIDIyNCwgNDgsIDI0MSwgCi0gICAgMjU0LCAyMTQsIDE1MiwgMjQxLCAyNTQsIDIxMywgMTg2LCAyNDEsIDI1NCwgMjMyLCAxNjMsIDQ2LCAyMjYsIDczLCAyMjYsIAotICAgIDczLCAyMTUsIDEzMSwgNDYsIDIyNiwgNzMsIDY3LCAyMjksIDYxLCA4MywgMjI5LCA2MSwgMjUwLCA2NiwgNzcsIDEwNywgCi0gICAgMjUwLCA2NiwgNzcsIDIzMCwgMTU0LCAyMTMsIDE2NiwgMTA3LCAyMzAsIDE1NCwgMjEzLCAxNjYsIDI1MiwgNzUsIDIxMywgCi0gICAgMTY2LCAxMDcsIDI1MiwgNzUsIDIxMywgMTY2LCAyMjYsIDI1MCwgMjUsIDI0OSwgNzAsIDEwNywgMjUsIDI0OSwgNzAsIAotICAgIDIyNywgNDAsIDI1MCwgMTA5LCAyNDksIDcwLCAxMDcsIDIyNywgNDAsIDI1MCwgMTA5LCAyNDksIDcwLCA3LCAyNDksIDcwLCAKLSAgICAyMjEsIDEzLCA2NywgNywgMjQ5LCA3MCwgMjI2LCAyNTAsIDcsIDI0OSwgNzAsIDIzMSwgMjUwLCAyNDksIDcwLCAyMTksIAotICAgIDk2LCA2NSwgMjQ4LCA5NSwgMjQzLCAyMzcsIDIxNywgMjIzLCAyNTMsIDEzMiwgMjQzLCAyMzcsIDI1MiwgNzYsIDI1MywgCi0gICAgMTMyLCAxMDcsIDI0MywgMjM3LCAyNTIsIDc2LCAyNTMsIDEzMiwgMjQzLCAyMzcsIDI0OSwgMTgwLCAyNTMsIDEzMiwgODMsIAotICAgIDI0MywgMjM3LCAyMjUsIDE0MywgMjE5LCA5NSwgNjcsIDI0MywgMjM3LCAyMjUsIDE0MywgMjE5LCA5NSwgMjE5LCAxOTksIAotICAgIDIxOSwgNTEsIDIyNiwgMjUwLCA2NywgMjE5LCA5NSwgMzYsIDY3LCAyMTksIDk1LCAyMjcsIDQwLCAyNTAsIDEwOSwgODMsIAotICAgIDIxOSwgOTUsIDgzLCAyNTAsIDEwOSwgNjcsIDIxOSwgOTUsIDIyNiwgMjUwLCA4MywgMjE5LCA5NSwgMTA3LCAyMjYsIDI1MCwgCi0gICAgODMsIDIxOSwgOTUsIDIyNSwgMTkyLCAyMTksIDk1LCAyMjEsIDEzLCA2NywgMjE5LCA5NSwgMTA3LCAyNTMsIDEzMiwgMjI3LCAKLSAgICA0MCwgMjUwLCAxMDksIDI1MywgMTMyLCAyNDUsIDE1MCwgMjE5LCAxNzYsIDI1MywgMTMyLCAyNDUsIDE1MCwgMjI1LCAxNDMsIAotICAgIDgzLCAyMTksIDk1LCAyNDUsIDE1MCwgMjI1LCAxNDMsIDIyNSwgMTkyLCAyMTksIDk1LCAyMjAsIDUzLCAyMjUsIDE0MywgCi0gICAgODMsIDIxOSwgOTUsIDI0NSwgMTUwLCAyMjUsIDE0MywgMjI0LCA3LCA4MywgMjE5LCA5NSwgMTA3LCAyNDUsIDE1MCwgMjI1LCAKLSAgICAxNDMsIDIyNCwgNywgODMsIDIxOSwgOTUsIDIxNiwgNDIsIDIyNSwgMTQzLCA4MywgMjE5LCA5NSwgMjIwLCA0OCwgMjI1LCAKLSAgICAxNDMsIDI1MywgMTMyLCAyMTcsIDIyMywgMjUzLCAxMzIsIDIyNywgNDAsIDI1MCwgMTA5LCAyMTcsIDIyMywgMjUzLCAxMzIsIAotICAgIDEwNywgMjE3LCAyMjMsIDI1MywgMTMyLCAyMjAsIDUzLCAyMjYsIDMzLCA4MywgMjQsIDY3LCAyNDQsIDIzLCA4MywgMjQ0LCAKLSAgICAyMywgNjcsIDI0NCwgMjMsIDI0NSwgMTUwLCAyMjYsIDMzLCAyMjYsIDI1MCwgODMsIDI0NCwgMjMsIDM2LCAyMjcsIDQwLCAKLSAgICAyNTAsIDEwOSwgMjQ1LCAxNTAsIDIyNSwgMTQzLCAyMTksIDk1LCAxMDcsIDIxNywgMjIzLCAyMjUsIDE5MiwgMjUzLCAxMzIsIAotICAgIDIxOSwgMjQ2LCAyMTcsIDU5LCAyMTYsIDE3NiwgMjE5LCAyNDYsIDEwNywgMjUwLCA1MSwgMjE5LCAyNDYsIDIxOSwgMjAxLCAKLSAgICAxMDcsIDIxOSwgMjAxLCAyNTIsIDc2LCAyNTMsIDEzMiwgMjQ1LCAxNTAsIDIxNywgMjIzLCAyMjUsIDU1LCAyNTMsIDEzMiwgCi0gICAgMTA3LCAyNDUsIDE1MCwgMjE3LCAyMjMsIDIyNSwgNTUsIDI1MywgMTMyLCAyNDksIDcxLCA3NywgMjIxLCAxMywgNjcsIAotICAgIDI0OSwgMjI4LCAxNDYsIDkxLCAyNDksIDcxLCA3NywgMjMyLCAxNjMsIDQ2LCAyNDYsIDQxLCA2NywgMjE5LCAxNjYsIDIxNSwgCi0gICAgMTMxLCA0NiwgMjQ2LCA0MSwgNjcsIDIxOSwgMTY2LCAyMzIsIDE2MywgNDYsIDIyMSwgMTMsIDY3LCAyMTksIDE2NiwgMjE1LCAKLSAgICAxMzEsIDQ2LCAyMjEsIDEzLCA2NywgMjE5LCAxNjYsIDgzLCAyMjQsIDE1OCwgMTUyLCAyMjcsIDE0LCA2NywgMjI0LCAxNTgsIAotICAgIDE1MiwgMjI3LCAxNCwgNjcsIDI0NCwgMjU0LCAxNTIsIDIyNywgMTQsIDgzLCAyNDcsIDIwMSwgMjMwLCAyNTEsIDY3LCAKLSAgICAyMTMsIDE2NiwgMTA3LCAyNDQsIDI1NCwgMTUyLCA4NywgMTc3LCA3MSwgMTM0LCAyMzEsIDE0NywgNzEsIDEzNCwgMTA3LCAKLSAgICA3MSwgMTM0LCAxMDcsIDIyMCwgODEsIDIxNiwgNTgsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIAotICAgIDIyMCwgODEsIDI0OSwgMTU4LCAyMjQsIDE0MywgMTUyLCAyMjcsIDE0LCAxMDcsIDUxLCAyMTYsIDU4LCAyNDksIDE1OCwgCi0gICAgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCA1MSwgMjQ5LCAxNTgsIDIyNCwgMTQzLCAxNTIsIDIyNywgMTQsIDEwNywgCi0gICAgMTE1LCAyMjAsIDgxLCAyNDksIDE1OCwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAxMTUsIDUxLCAyNDksIDE1OCwgCi0gICAgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMjQ5LCAzMywgMjE5LCA4MCwgMjI2LCAxNDMsIDUsIDIyNywgMTQsIDEwNywgMjQ0LCAKLSAgICAyNTQsIDE1MiwgMjI3LCAxNCwgMTA3LCAyNDEsIDIxMiwgMjQ0LCAyNTQsIDE1MiwgMjI3LCAxNCwgMTA3LCA4MywgMjQxLCAKLSAgICAyMTEsIDIyMywgODksIDEwNywgODMsIDI0MSwgMjEyLCAyNTEsIDQyLCAyNDQsIDI0LCAyNDEsIDIxMSwgMjIzLCA4OSwgCi0gICAgMjQ0LCAyNCwgMjQxLCAyMTIsIDI1MSwgNDIsIDIzMSwgMTQ3LCA0MiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAKLSAgICA0NiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAyNDQsIDMyLCA0MiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgCi0gICAgMTQ3LCAyNDQsIDMyLCA0NiwgMjI2LCAxMzIsIDIyNywgMTQsIDIzMSwgMTQ3LCAyMzMsIDY2LCAyNTQsIDE5LCAyNTEsIDg1LCAKLSAgICAyMjcsIDE0LCAyMzEsIDE0NywgMjIzLCAxNDQsIDI1NCwgMTksIDI1MSwgODUsIDIyNywgMTQsIDEwNywgMjMzLCA2NiwgCi0gICAgMjU0LCAxOSwgMjI0LCAxNDMsIDE1MiwgMjI3LCAxNCwgMTA3LCAyMjMsIDE0NCwgMjU0LCAxOSwgMjI0LCAxNDMsIDE1MiwgCi0gICAgMjI3LCAxNCwgMTA3LCAyMzMsIDY2LCAyNTQsIDE5LCAyNTEsIDg1LCAyMjcsIDE0LCAxMDcsIDIyMywgMTQ0LCAyNTQsIDE5LCAKLSAgICAyNTEsIDg1LCAyMjcsIDE0LCAxNzcsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODUsIDIyNywgMTQsIDE3NywgNDYsIAotICAgIDIxNiwgMjE5LCAyMjAsIDIzMywgMjUxLCA4NSwgMjI3LCAxNCwgMjMxLCAxNDcsIDQyLCAyNDksIDQwLCAyNTEsIDg1LCAKLSAgICAyMjcsIDE0LCAyMzEsIDE0NywgNDYsIDI0OSwgNDAsIDI1MSwgODUsIDIyNywgMTQsIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgCi0gICAgMTE2LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDEwOSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxNjYsIDI0NywgMTU2LCAKLSAgICAxNDYsIDM2LCAyMSwgMTYzLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE4MCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDIxLCAxODksIAotICAgIDI0NywgMTU2LCAxNDYsIDM2LCAyMSwgMTk4LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMjEsIDE5NSwgMjQ3LCAxNTYsIDE0NiwgCi0gICAgMzYsIDIxLCAyMDAsIDI0NywgMTU2LCAxNDYsIDM2LCA1MCwgMjE3LCAyMDAsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxMTYsIAotICAgIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxMDksIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxNjYsIDI0NywgMTU2LCAzNiwgMzUsIAotICAgIDIxLCAxNjMsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxODAsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxODksIDI0NywgMTU2LCAKLSAgICAzNiwgMzUsIDIxLCAxOTgsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAxOTUsIDI0NywgMTU2LCAzNiwgMzUsIDIxLCAyMDAsIAotICAgIDI0NywgMTU2LCAzNiwgMzUsIDUwLCAyMTcsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTE2LCAyNDcsIDE1NiwgCi0gICAgMTQ2LCAzNiwgMzUsIDIxLCAxMDksIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDE2NiwgMjQ3LCAxNTYsIDE0NiwgMzYsIAotICAgIDM1LCAyMSwgMTYzLCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxODAsIDI0NywgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIAotICAgIDE4OSwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCAyMSwgMTk4LCAyNDcsIDE1NiwgMTQ2LCAzNiwgMzUsIDIxLCAxOTUsIDI0NywgCi0gICAgMTU2LCAxNDYsIDM2LCAzNSwgMjEsIDIwMCwgMjQ3LCAxNTYsIDE0NiwgMzYsIDM1LCA1MCwgMjE3LCAyMDAsIDEwNywgMjEzLCAKLSAgICAyMzEsIDk1LCA2OCwgMTA3LCA5NCwgNTIsIDEwNywgMjMwLCAyNTEsIDUyLCAxMDcsIDI0NywgMTIxLCA1MiwgMTA3LCAyMTksIAotICAgIDIxNSwgMjQ1LCAxNzYsIDY4LCAxMDcsIDk1LCA2OCwgMTA3LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyNDYsIDUyLCAKLSAgICAyMjUsIDE0NSwgOTUsIDY4LCAxMDcsIDIyMywgODYsIDk1LCA2OCwgMjE2LCAxODIsIDk1LCA2OCwgMTA3LCAyMTYsIDE4MiwgCi0gICAgOTUsIDY4LCAyNDgsIDEwMCwgMjE2LCAxODIsIDk1LCA2OCwgMTA3LCAyNDgsIDEwMCwgMjE2LCAxODIsIDk1LCA2OCwgODMsIAotICAgIDk1LCA2OCwgMjE3LCA5NywgMjE2LCAyMjUsIDk1LCAyNTMsIDE2NCwgMjE3LCA5NywgMjUxLCA5OSwgOTUsIDI1MywgMTY0LCAKLSAgICA4MywgOTUsIDI1MywgMTY0LCAxMDcsIDgzLCAyNDksIDMzLCAyNDYsIDU4LCAyNCwgOTUsIDY4LCAxMDcsIDgzLCAyNDksIAotICAgIDMzLCAyMTUsIDEyNCwgMjQsIDk1LCA2OCwgMjE5LCAxNjMsIDgzLCA5NSwgNjgsIDEwNywgMjQ5LCAxNDUsIDgzLCA5NSwgCi0gICAgNjgsIDIyMywgMTQzLCA2NywgOTUsIDY4LCAyMzMsIDY1LCA2NywgOTUsIDY4LCAyNTIsIDEwMCwgMjIxLCAxMywgNjcsIDk1LCAKLSAgICA2OCwgMjQzLCAyMTEsIDIyMSwgMTMsIDY3LCA5NSwgNjgsIDEwNywgMjMyLCAxNjMsIDIyMywgMTQyLCA2NywgOTUsIDY4LCAKLSAgICAxMDcsIDIxNSwgMTMxLCAyMjMsIDE0MiwgNjcsIDk1LCA2OCwgMjI4LCAxNjAsIDIzMiwgMTYzLCAyMjMsIDE0MiwgNjcsIAotICAgIDk1LCA2OCwgMjQ5LCA0MCwgMjMyLCAxNzcsIDIyOCwgMTYwLCAyMTUsIDEzMSwgMjIzLCAxNDIsIDY3LCA5NSwgNjgsIDM2LCAKLSAgICAxMDcsIDY3LCA5NSwgNjgsIDIxMywgMjM3LCA5NSwgNjgsIDI1MSwgMTQzLCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyNTEsIAotICAgIDE0MywgOTUsIDY4LCAyNTEsIDE0MywgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMTA3LCAyNTEsIDE0MywgMjE5LCAyMTUsIAotICAgIDI0NSwgMTc2LCA2OCwgMTA3LCAyNTEsIDE0MywgOTUsIDY4LCAxMDcsIDI1MSwgMTQzLCAyMjgsIDE2NywgMjQ1LCAxNzYsIAotICAgIDY4LCAyMTcsIDIyNSwgOTUsIDY4LCAxMDcsIDIxNywgMjI0LCA5NSwgNjgsIDIxNCwgMiwgOTUsIDY4LCAxMDcsIDIxNCwgMiwgCi0gICAgOTUsIDY4LCAyMjcsIDM3LCA5NSwgNjgsIDUxLCAyNDksIDQwLCAyMzIsIDE3NywgMTMzLCAyNDcsIDE2NiwgMjU0LCAxOCwgCi0gICAgNjcsIDIxNiwgMTg0LCAyNDksIDEyNiwgMywgNjcsIDIxNiwgMTgzLCAyMjYsIDQ3LCAyMjcsIDQwLCAyMTksIDgsIDIyNywgCi0gICAgNDAsIDIxOCwgMjIxLCA0MiwgMjIzLCAzLCAyNTIsIDkxLCAyNDgsIDExLCA0NiwgMjIzLCAzLCAyNTIsIDkxLCAyNDgsIDExLCAKLSAgICAxNjcsIDIsIDYyLCAyMzUsIDIxMiwgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjUsIDgxLCAyMTksIDgsIDIxOCwgMjIyLCAyMjUsIAotICAgIDgxLCAyMTksIDIzMSwgNzEsIDI1MiwgNjAsIDIsIDE5OSwgOTAsIDE4NCwgMjQ3LCAxMjAsIDkxLCAyMzIsIDE5OSwgMjU0LCAKLSAgICAyNywgOTEsIDIzMiwgMTk5LCAyMjcsIDI0LCA2NywgMjQ3LCAyMDEsIDIsIDI1MCwgMTA3LCAyNDcsIDc0LCAyNCwgMiwgCi0gICAgMjQ3LCA3NCwgMjQ1LCAxMjcsIDY1LCAyMjcsIDM1LCAyMTUsIDEyMywgMjMyLCAxNjMsIDQ2LCAyNDksIDEwMCwgMiwgMjQ3LCAKLSAgICA3NCwgMjE1LCAxMzEsIDQyLCAyNDksIDEwMCwgMiwgMjQ3LCA3NCwgNDIsIDIyNiwgMjUyLCAyMzUsIDY5LCA0NiwgMjI2LCAKLSAgICAyNTIsIDIzNSwgNjksIDI0MywgMjAwLCAyMjYsIDI1MiwgMjM1LCA2OSwgMjMzLCAxMDgsIDExNCwgMjE4LCAzNiwgMjMzLCAKLSAgICAxMDgsIDExOSwgMjE4LCAzNiwgNDIsIDI0LCA0NiwgNTEsIDIxNiwgNTcsIDQyLCAyNCwgNDYsIDIxOCwgMzYsIDQyLCAyMzAsIAotICAgIDE1NywgMTg0LCA0NiwgMjE4LCAzNiwgMTg0LCA0MiwgMjE4LCAzNiwgMTE0LCAyMTgsIDM3LCAyLCAyNDksIDIyOSwgNDksIAotICAgIDIzMiwgMTYwLCAyNDcsIDEyNSwgMjUxLCA3LCAxOTksIDIyMywgNDQsIDY3LCAyNDksIDE0NCwgMjQ3LCAyMDAsIDY3LCAKLSAgICAyNDksIDE0NCwgMjQ3LCAyMDEsIDIsIDEzMiwgMjE3LCA2OCwgNjcsIDI0OSwgMTQ0LCAyNDcsIDIwMSwgMiwgOTUsIDIxNywgCi0gICAgNjgsIDY3LCA0MSwgMiwgMTMyLCAyMTcsIDY4LCA2NywgNDEsIDIsIDk1LCAyMTcsIDY4LCAxNCwgNDIsIDY3LCA0MSwgMTI1LCAKLSAgICAxNCwgNDYsIDY3LCA0MSwgMTI1LCAxNCwgNDIsIDI1NCwgMTksIDEyNSwgMTQsIDQ2LCAyNTQsIDE5LCAxMjUsIDE0LCA0MiwgCi0gICAgNTEsIDI1NCwgMTksIDEyNSwgMTQsIDQ2LCA1MSwgMjU0LCAxOSwgMTI1LCAxNCwgNDIsIDY3LCAyMTYsIDIxOSwgMjIwLCAKLSAgICAyMzMsIDEyNSwgMTQsIDQ2LCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDE0LCA0MiwgMjQ0LCAzMiwgMjI2LCAxMzEsIAotICAgIDE0LCA0NiwgMjQ0LCAzMiwgMjI2LCAxMzEsIDIxNSwgMTI0LCAyMjQsIDE2OSwgNjgsIDI0NiwgNTgsIDIyNCwgMTY5LCA2OCwgCi0gICAgMjUzLCAyNTUsIDI0MywgNzQsIDI0OSwgMjI5LCA2OCwgMjQ5LCAxOTUsIDI0MywgNzQsIDI0OSwgMjI5LCA2OCwgNDYsIDc2LCAKLSAgICAyLCAzNiwgMjI1LCAxNTYsIDE4NCwgMTMyLCA2OCwgMTg0LCA5NSwgNjgsIDE4NCwgNDIsIDQ2LCA2OCwgMTg0LCAxMzIsIAotICAgIDUxLCA2OCwgMTg0LCA5NSwgNTEsIDY4LCAxODQsIDQyLCA0NiwgNTEsIDY4LCAxODQsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAxMzQsIDE4NCwgOTUsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIDEzMiwgNTEsIDc2LCAyNDMsIDIxMywgMTM0LCAxODQsIAotICAgIDk1LCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDE4NCwgOTUsIDIxOSwgMTYyLCA2OCwgNDQsIDQ1LCAyNTEsIDEzOCwgNDQsIAotICAgIDQ1LCAyNDcsIDcxLCA0NCwgNDUsIDI0NiwgMTk5LCA0NCwgNDUsIDI0NywgNzAsIDQ0LCA0NSwgMjQ2LCAxMzUsIDQ0LCA0NSwgCi0gICAgMjQ3LCA2LCA0NCwgNDUsIDI0NiwgMTk4LCA0NCwgNDUsIDI0NywgNjksIDQ0LCA0NSwgMjQ2LCAxMDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAyMzAsIDQ0LCA0NSwgMjQ2LCAxNjYsIDQ0LCA0NSwgMjQ3LCAzNywgNDQsIDQ1LCAyNDYsIDEzNCwgNDQsIDQ1LCAyNDcsIDUsIAotICAgIDQ0LCA0NSwgMjQ2LCAxOTcsIDQ0LCA0NSwgMjQ3LCA2OCwgNDQsIDQ1LCAyNDYsIDg3LCA0NCwgNDUsIDI0NiwgMjE0LCA0NCwgCi0gICAgNDUsIDI0NiwgMTUwLCA0NCwgNDUsIDI0NywgMjEsIDQ0LCA0NSwgMjQ2LCAxMTgsIDQ0LCA0NSwgMjQ2LCAyNDUsIDQ0LCAKLSAgICA0NSwgMjQ2LCAxODEsIDQ0LCA0NSwgMjQ3LCA1MiwgNDQsIDQ1LCAyNDYsIDEwMiwgNDQsIDQ1LCAyNDYsIDIyOSwgNDQsIAotICAgIDQ1LCAyNDYsIDE2NSwgNDQsIDQ1LCAyNDcsIDM2LCA0NCwgNDUsIDI0NiwgMTMzLCA0NCwgNDUsIDI0NywgNCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE5NiwgNDQsIDQ1LCAyNDcsIDY3LCA0NCwgNDUsIDI0NiwgNzksIDQ0LCA0NSwgMjQ2LCAyMDYsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNDIsIDQ0LCA0NSwgMjQ3LCAxMywgNDQsIDQ1LCAyNDYsIDExMCwgNDQsIDQ1LCAyNDYsIDIzNywgNDQsIDQ1LCAKLSAgICAyNDYsIDE3MywgNDQsIDQ1LCAyNDcsIDQ0LCA0NCwgNDUsIDI0NiwgOTQsIDQ0LCA0NSwgMjQ2LCAyMjEsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNTcsIDQ0LCA0NSwgMjQ3LCAyOCwgNDQsIDQ1LCAyNDYsIDEyNSwgNDQsIDQ1LCAyNDYsIDI1MiwgNDQsIDQ1LCAKLSAgICAyNDYsIDE4OCwgNDQsIDQ1LCAyNDcsIDU5LCA0NCwgNDUsIDI0NiwgODYsIDQ0LCA0NSwgMjQ2LCAyMTMsIDQ0LCA0NSwgCi0gICAgMjQ2LCAxNDksIDQ0LCA0NSwgMjQ3LCAyMCwgNDQsIDQ1LCAyNDYsIDExNywgNDQsIDQ1LCAyNDYsIDI0NCwgNDQsIDQ1LCAKLSAgICAyNDYsIDE4MCwgNDQsIDQ1LCAyNDcsIDUxLCA0NCwgNDUsIDI0NiwgMTAxLCA0NCwgNDUsIDI0NiwgMjI4LCA0NCwgNDUsIAotICAgIDI0NiwgMTY0LCA0NCwgNDUsIDI0NywgMzUsIDQ0LCA0NSwgMjQ2LCAxMzIsIDQ0LCA0NSwgMjQ3LCAzLCA0NCwgNDUsIDI0NiwgCi0gICAgMTk1LCA0NCwgNDUsIDI0NywgNjYsIDQ0LCA0NSwgMjQ2LCA3NSwgNDQsIDQ1LCAyNDYsIDIwMiwgNDQsIDQ1LCAyNDYsIAotICAgIDEzOCwgNDQsIDQ1LCAyNDcsIDksIDQ0LCA0NSwgMjQ2LCAxMDYsIDQ0LCA0NSwgMjQ2LCAyMzMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNjksIDQ0LCA0NSwgMjQ3LCA0MCwgNDQsIDQ1LCAyNDYsIDkwLCA0NCwgNDUsIDI0NiwgMjE3LCA0NCwgNDUsIDI0NiwgCi0gICAgMTUzLCA0NCwgNDUsIDI0NywgMjQsIDQ0LCA0NSwgMjQ2LCAxMjEsIDQ0LCA0NSwgMjQ2LCAyNDgsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxODQsIDQ0LCA0NSwgMjQ3LCA1NSwgNDQsIDQ1LCAyNDYsIDgyLCA0NCwgNDUsIDI0NiwgMjA5LCA0NCwgNDUsIDI0NiwgCi0gICAgMTQ1LCA0NCwgNDUsIDI0NywgMTYsIDQ0LCA0NSwgMjQ2LCAxMTMsIDQ0LCA0NSwgMjQ2LCAyNDAsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzYsIDQ0LCA0NSwgMjQ3LCA0NywgNDQsIDQ1LCAyNDYsIDk3LCA0NCwgNDUsIDI0NiwgMjI0LCA0NCwgNDUsIDI0NiwgCi0gICAgMTYwLCA0NCwgNDUsIDI0NywgMzEsIDQ0LCA0NSwgMjQ2LCAxMjgsIDQ0LCA0NSwgMjQ2LCAyNTUsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxOTEsIDQ0LCA0NSwgMjQ3LCA2MiwgNDQsIDQ1LCAyNDYsIDc4LCA0NCwgNDUsIDI0NiwgMjA1LCA0NCwgNDUsIDI0NiwgCi0gICAgMTQxLCA0NCwgNDUsIDI0NywgMTIsIDQ0LCA0NSwgMjQ2LCAxMDksIDQ0LCA0NSwgMjQ2LCAyMzYsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzIsIDQ0LCA0NSwgMjQ3LCA0MywgNDQsIDQ1LCAyNDYsIDkzLCA0NCwgNDUsIDI0NiwgMjIwLCA0NCwgNDUsIDI0NiwgCi0gICAgMTU2LCA0NCwgNDUsIDI0NywgMjcsIDQ0LCA0NSwgMjQ2LCAxMjQsIDQ0LCA0NSwgMjQ2LCAyNTEsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxODcsIDQ0LCA0NSwgMjQ3LCA1OCwgNDQsIDQ1LCAyNDYsIDg1LCA0NCwgNDUsIDI0NiwgMjEyLCA0NCwgNDUsIDI0NiwgCi0gICAgMTQ4LCA0NCwgNDUsIDI0NywgMTksIDQ0LCA0NSwgMjQ2LCAxMTYsIDQ0LCA0NSwgMjQ2LCAyNDMsIDQ0LCA0NSwgMjQ2LCAKLSAgICAxNzksIDQ0LCA0NSwgMjQ3LCA1MCwgNDQsIDQ1LCAyNDYsIDEwMCwgNDQsIDQ1LCAyNDYsIDIyNywgNDQsIDQ1LCAyNDYsIAotICAgIDE2MywgNDQsIDQ1LCAyNDcsIDM0LCA0NCwgNDUsIDI0NiwgMTMxLCA0NCwgNDUsIDI0NywgMiwgNDQsIDQ1LCAyNDYsIDE5NCwgCi0gICAgNDQsIDQ1LCAyNDcsIDY1LCA0NCwgNDUsIDI0NiwgNzMsIDQ0LCA0NSwgMjQ2LCAyMDAsIDQ0LCA0NSwgMjQ2LCAxMzYsIDQ0LCAKLSAgICA0NSwgMjQ3LCA3LCA0NCwgNDUsIDI0NiwgMTA0LCA0NCwgNDUsIDI0NiwgMjMxLCA0NCwgNDUsIDI0NiwgMTY3LCA0NCwgNDUsIAotICAgIDI0NywgMzgsIDQ0LCA0NSwgMjQ2LCA4OCwgNDQsIDQ1LCAyNDYsIDIxNSwgNDQsIDQ1LCAyNDYsIDE1MSwgNDQsIDQ1LCAKLSAgICAyNDcsIDIyLCA0NCwgNDUsIDI0NiwgMTE5LCA0NCwgNDUsIDI0NiwgMjQ2LCA0NCwgNDUsIDI0NiwgMTgyLCA0NCwgNDUsIAotICAgIDI0NywgNTMsIDQ0LCA0NSwgMjQ2LCA4MCwgNDQsIDQ1LCAyNDYsIDIwNywgNDQsIDQ1LCAyNDYsIDE0MywgNDQsIDQ1LCAKLSAgICAyNDcsIDE0LCA0NCwgNDUsIDI0NiwgMTExLCA0NCwgNDUsIDI0NiwgMjM4LCA0NCwgNDUsIDI0NiwgMTc0LCA0NCwgNDUsIAotICAgIDI0NywgNDUsIDQ0LCA0NSwgMjQ2LCA5NSwgNDQsIDQ1LCAyNDYsIDIyMiwgNDQsIDQ1LCAyNDYsIDE1OCwgNDQsIDQ1LCAKLSAgICAyNDcsIDI5LCA0NCwgNDUsIDI0NiwgMTI2LCA0NCwgNDUsIDI0NiwgMjUzLCA0NCwgNDUsIDI0NiwgMTg5LCA0NCwgNDUsIAotICAgIDI0NywgNjAsIDQ0LCA0NSwgMjQ2LCA3NiwgNDQsIDQ1LCAyNDYsIDIwMywgNDQsIDQ1LCAyNDYsIDEzOSwgNDQsIDQ1LCAKLSAgICAyNDcsIDEwLCA0NCwgNDUsIDI0NiwgMTA3LCA0NCwgNDUsIDI0NiwgMjM0LCA0NCwgNDUsIDI0NiwgMTcwLCA0NCwgNDUsIAotICAgIDI0NywgNDEsIDQ0LCA0NSwgMjQ2LCA5MSwgNDQsIDQ1LCAyNDYsIDIxOCwgNDQsIDQ1LCAyNDYsIDE1NCwgNDQsIDQ1LCAKLSAgICAyNDcsIDI1LCA0NCwgNDUsIDI0NiwgMTIyLCA0NCwgNDUsIDI0NiwgMjQ5LCA0NCwgNDUsIDI0NiwgMTg1LCA0NCwgNDUsIAotICAgIDI0NywgNTYsIDQ0LCA0NSwgMjQ2LCA4MywgNDQsIDQ1LCAyNDYsIDIxMCwgNDQsIDQ1LCAyNDYsIDE0NiwgNDQsIDQ1LCAKLSAgICAyNDcsIDE3LCA0NCwgNDUsIDI0NiwgMTE0LCA0NCwgNDUsIDI0NiwgMjQxLCA0NCwgNDUsIDI0NiwgMTc3LCA0NCwgNDUsIAotICAgIDI0NywgNDgsIDQ0LCA0NSwgMjQ2LCA5OCwgNDQsIDQ1LCAyNDYsIDIyNSwgNDQsIDQ1LCAyNDYsIDE2MSwgNDQsIDQ1LCAKLSAgICAyNDcsIDMyLCA0NCwgNDUsIDI0NiwgMTI5LCA0NCwgNDUsIDI0NywgMCwgNDQsIDQ1LCAyNDYsIDE5MiwgNDQsIDQ1LCAyNDcsIAotICAgIDYzLCA0NCwgNDUsIDI0NiwgNzQsIDQ0LCA0NSwgMjQ2LCAyMDEsIDQ0LCA0NSwgMjQ2LCAxMzcsIDQ0LCA0NSwgMjQ3LCA4LCAKLSAgICA0NCwgNDUsIDI0NiwgMTA1LCA0NCwgNDUsIDI0NiwgMjMyLCA0NCwgNDUsIDI0NiwgMTY4LCA0NCwgNDUsIDI0NywgMzksIAotICAgIDQ0LCA0NSwgMjQ2LCA4OSwgNDQsIDQ1LCAyNDYsIDIxNiwgNDQsIDQ1LCAyNDYsIDE1MiwgNDQsIDQ1LCAyNDcsIDIzLCA0NCwgCi0gICAgNDUsIDI0NiwgMTIwLCA0NCwgNDUsIDI0NiwgMjQ3LCA0NCwgNDUsIDI0NiwgMTgzLCA0NCwgNDUsIDI0NywgNTQsIDQ0LCAKLSAgICA0NSwgMjQ2LCA4MSwgNDQsIDQ1LCAyNDYsIDIwOCwgNDQsIDQ1LCAyNDYsIDE0NCwgNDQsIDQ1LCAyNDcsIDE1LCA0NCwgNDUsIAotICAgIDI0NiwgMTEyLCA0NCwgNDUsIDI0NiwgMjM5LCA0NCwgNDUsIDI0NiwgMTc1LCA0NCwgNDUsIDI0NywgNDYsIDQ0LCA0NSwgCi0gICAgMjQ2LCA5NiwgNDQsIDQ1LCAyNDYsIDIyMywgNDQsIDQ1LCAyNDYsIDE1OSwgNDQsIDQ1LCAyNDcsIDMwLCA0NCwgNDUsIAotICAgIDI0NiwgMTI3LCA0NCwgNDUsIDI0NiwgMjU0LCA0NCwgNDUsIDI0NiwgMTkwLCA0NCwgNDUsIDI0NywgNjEsIDQ0LCA0NSwgCi0gICAgMjQ2LCA3NywgNDQsIDQ1LCAyNDYsIDIwNCwgNDQsIDQ1LCAyNDYsIDE0MCwgNDQsIDQ1LCAyNDcsIDExLCA0NCwgNDUsIAotICAgIDI0NiwgMTA4LCA0NCwgNDUsIDI0NiwgMjM1LCA0NCwgNDUsIDI0NiwgMTcxLCA0NCwgNDUsIDI0NywgNDIsIDQ0LCA0NSwgCi0gICAgMjQ2LCA5MiwgNDQsIDQ1LCAyNDYsIDIxOSwgNDQsIDQ1LCAyNDYsIDE1NSwgNDQsIDQ1LCAyNDcsIDI2LCA0NCwgNDUsIAotICAgIDI0NiwgMTIzLCA0NCwgNDUsIDI0NiwgMjUwLCA0NCwgNDUsIDI0NiwgMTg2LCA0NCwgNDUsIDI0NywgNTcsIDQ0LCA0NSwgCi0gICAgMjQ2LCA4NCwgNDQsIDQ1LCAyNDYsIDIxMSwgNDQsIDQ1LCAyNDYsIDE0NywgNDQsIDQ1LCAyNDcsIDE4LCA0NCwgNDUsIAotICAgIDI0NiwgMTE1LCA0NCwgNDUsIDI0NiwgMjQyLCA0NCwgNDUsIDI0NiwgMTc4LCA0NCwgNDUsIDI0NywgNDksIDQ0LCA0NSwgCi0gICAgMjQ2LCA5OSwgNDQsIDQ1LCAyNDYsIDIyNiwgNDQsIDQ1LCAyNDYsIDE2MiwgNDQsIDQ1LCAyNDcsIDMzLCA0NCwgNDUsIAotICAgIDI0NiwgMTMwLCA0NCwgNDUsIDI0NywgMSwgNDQsIDQ1LCAyNDYsIDE5MywgNDQsIDQ1LCAyNDcsIDY0LCA5NSwgMjE2LCAyNCwgCi0gICAgNzYsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDUxLCA3NiwgMiwgNzEsIDkwLCAKLSAgICA5NSwgNTEsIDc2LCAyLCA3MSwgOTAsIDQyLCA0NiwgNTEsIDc2LCAyLCA3MSwgOTAsIDk1LCAyMTYsIDI0LCA3NiwgMjQzLCAKLSAgICAyMTMsIDEzNCwgMTMyLCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDk1LCA1MSwgNzYsIDI0MywgMjEzLCAxMzQsIDI0NiwgNTgsIAotICAgIDc2LCAyLCAxOTksIDkwLCAyMTUsIDEyNCwgNzYsIDIsIDE5OSwgOTAsIDIxNSwgMTI0LCAyMTYsIDE2OSwgNjgsIDI0NiwgCi0gICAgNTgsIDIxNiwgMTY5LCA2OCwgMTMyLCA1MSwgMjQ4LCAxMDIsIDY4LCA5NSwgNTEsIDI0OCwgMTAyLCA2OCwgMTMyLCAyMTYsIAotICAgIDE2OSwgMjQ4LCAxMDIsIDY4LCA5NSwgMjE2LCAxNjksIDI0OCwgMTAyLCA2OCwgOTUsIDIxNiwgMjQsIDIxNiwgMTY5LCAKLSAgICAyNDgsIDEwMiwgNjgsIDk1LCA3NiwgMiwgMjQ2LCA3MiwgMjE5LCA3OSwgMjE1LCAxMjQsIDc2LCAyMTEsIDIxMSwgMTM0LCAKLSAgICAyNDYsIDU4LCA3NiwgMjExLCAyMTEsIDEzNCwgOTUsIDc2LCAyLCAyMTgsIDI4LCAyLCA3MSwgOTAsIDk1LCA3NiwgMiwgCi0gICAgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI3LCA5NSwgMjE2LCAyNCwgNzYsIDIsIAotICAgIDIxOCwgMjgsIDIsIDcxLCA5MCwgOTUsIDIxNiwgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDI1MywgCi0gICAgMTY2LCA5NSwgMjUzLCAxNjYsIDEzMiwgNTEsIDI1MywgMTY2LCA5NSwgNTEsIDI1MywgMTY2LCAxMzIsIDc2LCAyMTEsIAotICAgIDIxMSwgODMsIDI0NywgMjAwLCA5NSwgNzYsIDIxMSwgMjExLCA4MywgMjQ3LCAyMDAsIDEzMiwgNzYsIDI0MywgMjEzLCAKLSAgICAyNTIsIDYwLCAyMTEsIDIxMSwgODMsIDI0NywgMjAwLCA5NSwgNzYsIDI0MywgMjEzLCAyNTIsIDYwLCAyMTEsIDIxMSwgODMsIAotICAgIDI0NywgMjAwLCAyMjgsIDE2NywgMjEzLCAyNTAsIDI0LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAKLSAgICAxNzYsIDI0LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyLCAxMDEsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNzYsIDIsIDEwMSwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgMiwgMTAxLCAyMTksIDIxNSwgMjEzLCAKLSAgICAyNTAsIDc2LCAyLCAxMDEsIDIyOCwgMTY3LCAyMTMsIDI1MCwgNzYsIDI0LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY4LCAyMjgsIAotICAgIDE2NywgMjQ1LCAxNzYsIDc2LCAyNCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA3NiwgCi0gICAgMjQsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgNzYsIDI0LCAyMjgsIDE2NywgMjEzLCAKLSAgICAyNTAsIDY4LCAyMjMsIDEyNSwgMjQ3LCAyMDcsIDI0OSwgNjUsIDI0NCwgMTQzLCAyNDcsIDIwNiwgMjQ0LCAxNDMsIDI0NywgCi0gICAgMjA3LCAyNDksIDY1LCAyMjMsIDEyNSwgMjQ3LCAyMDYsIDIxOSwgMjE1LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIDIyOCwgCi0gICAgMTY3LCAyNDUsIDE3NiwgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgNzYsIDI0OSwgNjUsIDIxOSwgMjE1LCAyNDUsIDE3NiwgCi0gICAgNjgsIDI0NCwgMTQzLCAyNDcsIDIwNywgMjQ5LCA2NSwgMjI4LCAxNjcsIDI0NSwgMTc2LCA2OCwgMjIzLCAxMjUsIDI0NywgCi0gICAgMjA3LCAyNDksIDY1LCAyMTksIDIxNSwgMjQ1LCAxNzYsIDY4LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDc2LCAyNDksIDY1LCAKLSAgICAyMjgsIDE2NywgMjEzLCAyNTAsIDY4LCAyMjgsIDE2NywgMjEzLCAyNTAsIDc2LCAyNDksIDY1LCAyMjgsIDE2NywgMjQ1LCAKLSAgICAxNzYsIDY4LCAyMTQsIDIwLCA3NiwgMjI1LCAxNDEsIDI0NywgMTQ3LCAyMjMsIDE0OCwgNzYsIDIyNSwgMTQxLCA5NSwgCi0gICAgMjE3LCAxNDEsIDI0OSwgMzIsIDIxNSwgMTIzLCA3NiwgMjI1LCAxNDEsIDk1LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjQ2LCAKLSAgICA1NywgNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjMzLCA2MSwgNzYsIDIyNSwgMTQxLCAyNDYsIAotICAgIDU4LCAyMTcsIDE0MSwgMjQ5LCAzMiwgMjIzLCAxMzgsIDIyMywgMTQxLCAyNTMsIDE5NiwgMjQ5LCAxOTUsIDY4LCAyMzMsIAotICAgIDY0LCAyNTMsIDE5NiwgMjUzLCAyNTUsIDY4LCAyMTYsIDIyNywgMjUzLCAxOTYsIDI1MywgMjU1LCA2OCwgMjUxLCAxMDEsIAotICAgIDI1MywgMTk2LCAyNTMsIDI1NSwgNjgsIDIxNiwgMjI3LCAyNTMsIDE5NiwgMjQ5LCAxOTUsIDc2LCAyLCAyMzAsIDI1MCwgCi0gICAgMjE2LCAyMjcsIDI1MywgMTk2LCAyNTMsIDI1NSwgNzYsIDIsIDIyNSwgMTU2LCAyMzIsIDE2MywgNDYsIDIyMSwgNzIsIAotICAgIDI0OSwgMTk1LCA2OCwgMjMyLCAxNjMsIDQyLCAyMjEsIDcyLCAyNTMsIDI1NSwgNjgsIDI1MywgMjU1LCAyNDksIDE5MywgCi0gICAgMjQ5LCAyMjksIDY4LCAyNDksIDE5NSwgMjQ5LCAxOTMsIDI0OSwgMjI5LCA2OCwgOTUsIDc2LCA3OCwgMjIwLCAxNzUsIAotICAgIDEzMiwgNjgsIDEzMiwgNzYsIDc4LCAyMjAsIDE3NSwgOTUsIDY4LCAyMjAsIDE3NSwgOTUsIDc2LCA3OCwgMTMyLCA2OCwgCi0gICAgOTUsIDc2LCAyLCA5NCwgNTUsIDEzMiwgNzYsIDIsIDk0LCA1NSwgOTUsIDc2LCAyMTcsIDkzLCAyMTMsIDE2NiwgNDIsIDQ2LCAKLSAgICA3NiwgMjE3LCA5MywgMywgMjQ5LCAyMjgsIDIxNSwgMTI0LCAyMTYsIDI0LCA3NiwgMjQzLCAyMTMsIDMsIDI0OSwgMjI4LCAKLSAgICA0MiwgMjA2LCAxMTQsIDQ2LCAyMDYsIDExOSwgMjQxLCAyMzcsIDQyLCAyMDYsIDExOSwgNDYsIDIwNiwgMTE0LCAyNDEsIAotICAgIDIzNywgMTE0LCAyMDYsIDQ2LCAxMTksIDIwNiwgNDIsIDI0MSwgMjM3LCAxMTQsIDIwNiwgNDIsIDExOSwgMjA2LCA0NiwgCi0gICAgMjQxLCAyMzcsIDQyLCAyMDYsIDExNCwgNDYsIDIwNiwgMTE0LCAyNDEsIDIzNywgMTE0LCAyMDYsIDQ2LCAxMTksIDIwNiwgCi0gICAgNDYsIDI0MSwgMjM3LCA0MiwgMjA2LCAxMTksIDQ2LCAyMDYsIDExOSwgMjQxLCAyMzcsIDExNCwgMjA2LCA0MiwgMTE5LCAKLSAgICAyMDYsIDQyLCAyNDEsIDIzNywgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDIxMSwgMjExLCAxMzQsIDk1LCAyNDEsIAotICAgIDIzOCwgMiwgMjA2LCAxMTQsIDIxMSwgMjExLCAxMzQsIDIxNSwgMTI0LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjExLCAKLSAgICAyMTEsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDYsIDIxMSwgMjExLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIAotICAgIDIwNiwgMTE5LCAyMTEsIDIxMSwgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyMTEsIDIxMSwgMTM0LCAyMTUsIAotICAgIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDIxMSwgMjExLCAxMzQsIDI0NiwgNTgsIDI0MSwgMjM4LCAyLCAyMDYsIDQyLCAKLSAgICAyMTEsIDIxMSwgMTM0LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgMjQzLCAyMTMsIDEzNCwgOTUsIDI0MSwgMjM4LCAKLSAgICAyLCAyMDYsIDExNCwgMjQzLCAyMTMsIDEzNCwgMjE1LCAxMjQsIDI0MSwgMjM4LCAyLCAyMDYsIDQ2LCAyNDMsIDIxMywgCi0gICAgMTM0LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCA0NiwgMjQzLCAyMTMsIDEzNCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAKLSAgICAxMTksIDI0MywgMjEzLCAxMzQsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI0MywgMjEzLCAxMzQsIDIxNSwgMTI0LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCA0MiwgMjQzLCAyMTMsIDEzNCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI0MywgCi0gICAgMjEzLCAxMzQsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE0LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAKLSAgICAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMjIzLCAxNDgsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjQ2LCA2MCwgCi0gICAgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyNDYsIDU4LCAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIAotICAgIDE0OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAxMTQsIDc4LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgMjE1LCAxMzQsIDEzMiwgCi0gICAgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCA3OCwgOTUsIDI0MSwgMjM4LCAyLCAyMDYsIDI0NiwgNjAsIDk1LCAyNDEsIDIzOCwgCi0gICAgMiwgMjA2LCAxMTQsIDc4LCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDIxNSwgMTM0LCA5NSwgMjQxLCAyMzgsIDIsIDIwNiwgCi0gICAgMTE5LCA3OCwgMTMyLCAyNDEsIDIzOCwgMiwgMjA2LCAyNDYsIDYwLCAxMzIsIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIAotICAgIDE4NCwgMjQ4LCAxMDEsIDEzMiwgMjQxLCAyMzgsIDIsIDIwNiwgMTE5LCAyNTEsIDIyMCwgMTg0LCAyNDgsIDEwMSwgOTUsIAotICAgIDI0MSwgMjM4LCAyLCAyMDYsIDExNCwgNzgsIDE4NCwgMjQ4LCAxMDEsIDk1LCAyNDEsIDIzOCwgMiwgMjA2LCAxMTksIDI1MSwgCi0gICAgMjIwLCAxODQsIDI0OCwgMTAxLCAyMTUsIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyNDYsIDU4LCAKLSAgICAyNDEsIDIzOCwgMiwgMjA2LCAyMjMsIDE0OCwgMjQ2LCA1OCwgMjQxLCAyMzgsIDIsIDIwNiwgNDIsIDI1MSwgMjA3LCAyMTUsIAotICAgIDEyNCwgMjQxLCAyMzgsIDIsIDIwNiwgMjIzLCAxNDgsIDQ2LCA1MSwgNzYsIDIsIDIyMywgODUsIDI0MSwgMjE5LCAyNDUsIAotICAgIDYxLCA1LCA3OCwgOTUsIDY4LCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgOTUsIDY4LCAxMzIsIDc2LCA3OCwgMjE3LCA0MywgCi0gICAgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIAotICAgIDIzMywgMzksIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCAyMTcsIDkzLCAyMzMsIDM4LCAyNDIsIDEwNywgNzgsIDk1LCA2OCwgCi0gICAgMjE5LCA5LCA3OCwgOTUsIDY4LCAxMzIsIDc2LCAyMTcsIDkzLCAyMTksIDgsIDIxOCwgMjIyLCA3OCwgMTMyLCA2OCwgNDIsIAotICAgIDI0NCwgNjAsIDIxOCwgMjcsIDQ2LCAyNDQsIDYwLCAyMTgsIDI3LCAxMTQsIDI0NCwgNjAsIDIxOCwgMjcsIDExOSwgMjQ0LCAKLSAgICA2MCwgMjE4LCAyNywgMjE2LCAxNjksIDcxLCAyNTIsIDYwLCAyNDgsIDExLCAyMTIsIDE1MywgMTc0LCAyMTksIDE3NCwgCi0gICAgMjEyLCAxNTMsIDE3NCwgMjE2LCAxNSwgMjQ5LCAxNjQsIDQyLCA2NywgMjQ5LCA0MCwgMTI1LCA0NiwgNjcsIDI0OSwgNDAsIAotICAgIDEyNSwgNDIsIDY3LCAyMjYsIDEzMSwgNDYsIDY3LCAyMjYsIDEzMSwgMjEyLCAxNTMsIDE3NCwgNDIsIDIzNiwgMTAsIDEyNSwgCi0gICAgMjEyLCAxNTMsIDE3NCwgNDYsIDIzNiwgMTAsIDEyNSwgMjEyLCAxNTMsIDE3NCwgNDIsIDI1MSwgMTY1LCAxMjUsIDIxMiwgCi0gICAgMTUzLCAxNzQsIDQ2LCAyNTEsIDE2NSwgMTI1LCA0MiwgNDEsIDI1MSwgODUsIDIsIDIxNSwgMTUzLCA0NiwgNDEsIDI1MSwgCi0gICAgODUsIDIsIDIxNSwgMTUzLCA0MiwgNDEsIDI1MSwgODUsIDIsIDIxNywgNjksIDIzNSwgMjUyLCAyMTYsIDIyNywgMjQ5LCAKLSAgICA5OSwgNDYsIDQxLCAyNTEsIDg1LCAyLCAyMTcsIDY5LCAyMzUsIDI1MiwgMjUxLCAxMDEsIDI0OSwgOTksIDQyLCA0MSwgCi0gICAgMjUxLCA4NSwgMiwgMjE3LCA2OSwgMjM1LCAyNTIsIDI1MSwgMTAxLCAyNDksIDk5LCA0NiwgNDEsIDI1MSwgODUsIDIsIAotICAgIDIxNywgNjksIDIzNSwgMjUyLCAyMTYsIDIyNywgMjQ5LCA5OSwgNDIsIDI1NCwgMTksIDI1MSwgODUsIDIsIDI0NywgNzQsIAotICAgIDQ2LCAyNTQsIDE5LCAyNTEsIDg1LCAyLCAyNDcsIDc0LCA0MiwgMjUzLCAxOTYsIDIzMywgMzksIDEyNSwgNDYsIDI1MywgCi0gICAgMTk2LCAyNDIsIDEwNywgMTI1LCA1MSwgNDIsIDI1MywgMTk2LCAyNDIsIDEwNywgMTI1LCA1MSwgNDYsIDI1MywgMTk2LCAKLSAgICAyMzMsIDM5LCAxMjUsIDQyLCA4MywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQ2LCA4MywgMjE2LCAyMTksIDIyMCwgCi0gICAgMjMzLCAxMjUsIDI0NiwgNzIsIDI0NCwgMTA0LCA3MSwgMjEyLCAyOCwgMjMyLCAyNDIsIDIzMSwgMTUzLCAyNTQsIDE5LCAKLSAgICAyMjcsIDM1LCAyMzMsIDcwLCA0NiwgMjU0LCAxOSwgMjE0LCAyNDQsIDIsIDIxOSwgMTY2LCAyMzEsIDE1MywgNDYsIDI1NCwgCi0gICAgMTksIDIsIDI0NywgNzQsIDI1NCwgMTksIDIsIDIyMywgNCwgMjM1LCAyMTIsIDI1NCwgMTY0LCAyNTQsIDE4LCAyMTksIAotICAgIDE4NywgMjU0LCAxOSwgMjI3LCAzNSwgMjMzLCA3MCwgMjE5LCAxODcsIDI1NCwgMTksIDIyNywgMzUsIDIxNSwgMTM0LCAKLSAgICAyMTYsIDU4LCAyNTQsIDE4LCAyMjMsIDIwMiwgMjU0LCAxOCwgMjU0LCAxOSwgMiwgMjE1LCAxNTMsIDIyMywgMjAyLCAyNTQsIAotICAgIDE5LCAyLCAyMTUsIDE1MywgMjI3LCAxMTIsIDI1NCwgMTksIDIyNywgMzUsIDIxNSwgMTM0LCAyMjcsIDExMiwgMjU0LCAxOSwgCi0gICAgMjI3LCAzNSwgMjQ2LCA2MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIAotICAgIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTQsIDI0LCAyMjMsIDE0OCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgCi0gICAgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCAxMTQsIDI0LCAyMzMsIDcwLCAyMzEsIDE1MywgMjU0LCAKLSAgICAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDExOSwgMjQsIDIyMywgCi0gICAgMTQ4LCAyMzEsIDE1MywgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAKLSAgICAxNDEsIDExOSwgMjQsIDIzMywgNzAsIDIzMSwgMTUzLCAyNTQsIDE5LCAyLCAyMjcsIDQwLCAyNTMsIDE3NiwgMjQ1LCA5OCwgCi0gICAgMjM1LCAyNTIsIDc2LCAyMjUsIDE0MSwgNDYsIDI0LCAyMTUsIDEzNCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIAotICAgIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIDIyNSwgMTQxLCA0MiwgMjQsIDIxNSwgMTM0LCAyMzEsIDE1MywgCi0gICAgMjU0LCAxOSwgMiwgMjI3LCA0MCwgMjUzLCAxNzYsIDI0NSwgOTgsIDIzNSwgMjUyLCA3NiwgMjI1LCAxNDEsIDQ2LCAyNCwgCi0gICAgMjQ2LCA2MCwgMjMxLCAxNTMsIDI1NCwgMTksIDIsIDIyNywgNDAsIDI1MywgMTc2LCAyNDUsIDk4LCAyMzUsIDI1MiwgNzYsIAotICAgIDIyNSwgMTQxLCA0MiwgMjQsIDI0NiwgNjAsIDIyMywgMjAyLCAyNDUsIDExMCwgMjIxLCA0OCwgMjQ1LCAxMTAsIDIyMSwgCi0gICAgNDksIDIsIDIyNiwgMjQ3LCAyNDUsIDExMCwgMjIxLCA0OSwgMiwgMywgMjQ5LCAyMjksIDQ5LCAyNDUsIDExMCwgMjIxLCAKLSAgICA0OSwgMiwgNDYsIDc2LCA0OSwgMjQ1LCAxMTAsIDIyMSwgNDksIDIsIDQyLCA3NiwgNDksIDI0OSwgMjI5LCAyLCAxOTksIAotICAgIDEzNCwgMzYsIDcxLCAxMzQsIDM2LCAyMjYsIDEzNSwgMzYsIDIyMywgMjAzLCAyMTksIDIzMSwgMzYsIDIyNiwgNDcsIDI0OSwgCi0gICAgMjI5LCAyNDcsIDEyNSwgMjUxLCA3LCAxOTksIDI1MiwgNjAsIDI0LCAyMTYsIDIyNywgMTUxLCAyNDcsIDEyNSwgMjUxLCA3LCAKLSAgICA3MSwgMTM0LCAyNDksIDIyOSwgMiwgMjE4LCAyMjQsIDIxMywgMTY2LCAzNiwgMjUzLCAyNTQsIDI0NywgMTIxLCA1MiwgCi0gICAgMTE0LCA3NiwgMjE3LCA5MywgMjQ5LCAyMjgsIDM2LCA2NywgMjUxLCA0MiwgMzYsIDI1MSwgNDIsIDM2LCAyMzMsIDM4LCAKLSAgICAzNiwgMjQyLCAxMDYsIDI0OSwgMjI5LCAyLCAzLCAyNDksIDIyOSwgMjExLCAyMTEsIDIxNywgMTQ5LCAyMjMsIDE0OCwgCi0gICAgMjQ5LCAyMjksIDIsIDExNywgMTk5LCAyMTksIDMzLCAyMTEsIDIxMSwgMjE3LCAxNDksIDIyMywgMTQ4LCA5MSwgMjIzLCAKLSAgICAxMjUsIDI0NywgMjA3LCAyMjAsIDIzLCA5MSwgMjQ0LCAxNDMsIDI0NywgMjA3LCAyMjAsIDIzLCA5MSwgMjUzLCAxMzIsIAotICAgIDkxLCAzLCAyNDksIDIyOCwgOTEsIDIxOSwgMTY2LCAxMTcsIDIzNSwgNjgsIDIxOSwgMTY0LCAyMTYsIDE4NCwgMiwgNjIsIAotICAgIDQ5LCAyMTYsIDE4NCwgMiwgMjE1LCAxNTMsIDIyMywgNCwgMjM1LCAyNTIsIDIxNiwgMTgzLCAyMTYsIDE4NCwgMiwgMjIxLCAKLSAgICA1NSwgMjUzLCAxMjMsIDI1MSwgMTAwLCA0NiwgMjE2LCAxODQsIDc4LCA0MiwgMjE2LCAxODMsIDQyLCAyMTYsIDE4NCwgCi0gICAgMjUxLCAyMDcsIDcxLCAxMzQsIDcxLCAyNTIsIDYwLCAyNTEsIDIwNywgNDYsIDIxNiwgMTgzLCAyNTEsIDkxLCAyLCA0MiwgCi0gICAgMTUxLCAyNTEsIDE0NCwgMjUxLCA5MSwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDgzLCAyNTEsIDkwLCAyOSwgMiwgNDIsIAotICAgIDE1MSwgMjUxLCAxNDQsIDI5LCAyLCA0NiwgMTUxLCAyNTEsIDE0NCwgNjcsIDI0MCwgMjIzLCA4MywgMjQwLCAyMjMsIDQyLCAKLSAgICAyMTMsIDIyOSwgMjQ0LCAxMDQsIDQ2LCAyMTMsIDIyOSwgMjQ0LCAxMDQsIDQyLCA1MSwgMjEzLCAyMjksIDI0NCwgMTA0LCAKLSAgICA0NiwgNTEsIDIxMywgMjI5LCAyNDQsIDEwNCwgMjM1LCAyNDQsIDIzNSwgMjMxLCAyMTcsIDY2LCAxMTAsIDIzNSwgMjMxLCAKLSAgICAyMzUsIDIzMiwgMjI5LCAxODMsIDIsIDcxLCAxMzQsIDI0NiwgNjYsIDIzMCwgMTU3LCA0MSwgMiwgMjQ5LCAxMjAsIDIyNiwgCi0gICAgMjUxLCAyMzUsIDI0MiwgMjUzLCAxNTIsIDIyMCwgMTQ0LCAyMjUsIDYzLCAyNDUsIDYxLCA1LCAyNCwgMjIwLCAyNSwgMjI2LCAKLSAgICAxMzUsIDI0NSwgNjEsIDUsIDI0LCAyMjAsIDI1LCAyMjYsIDEzNiwgMiwgMjE3LCA0MywgNDksIDI0MCwgOTcsIDIxMSwgCi0gICAgMjExLCAyNCwgMjIwLCAyNSwgMjI2LCAxMzUsIDI0MiwgMTU5LCAyMTksIDk0LCAyMTcsIDEzOCwgMjQ2LCA1OSwgMjE2LCAKLSAgICAxODQsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDYsIDU5LCAyMTYsIDE4NCwgMiwgNDYsIDE1MSwgMjUxLCAxNDQsIDgzLCAKLSAgICAyNDcsIDIwMSwgMiwgMTE5LCA2OCwgODMsIDIzMiwgMTU5LCA2NywgMjQ5LCAyMjksIDIsIDExOSwgNjgsIDgzLCAyNDksIAotICAgIDIyOSwgMiwgMTE5LCA2OCwgMjQ1LCA0OCwgNjcsIDIxOSwgMTY2LCAyNDUsIDQ4LCA4MywgMjE5LCAxNjYsIDI0NSwgNDgsIAotICAgIDY3LCAyNDcsIDIwMCwgMjQ1LCA0OCwgODMsIDI0NywgMjAwLCAyNDUsIDQ4LCA2NywgMjQ5LCAyMjgsIDI0NSwgNDgsIDgzLCAKLSAgICAyNDksIDIyOCwgMjIzLCA0MywgMjIzLCAyMDMsIDIxOSwgMjMyLCAyMjcsIDMzLCAyMTksIDIzMiwgMiwgMjI2LCAyNDcsIAotICAgIDIyMywgMjAzLCAyMTksIDIzMiwgMiwgMTk5LCA5MCwgMjUxLCAxNzIsIDIxOSwgMjMxLCAyNTEsIDE3MiwgMjIzLCAyMDMsIAotICAgIDIxOSwgMjMxLCA1MSwgMjI1LCAxNTYsIDIxNiwgMTY5LCAyMjUsIDE1NiwgMjMzLCA2NiwgMjQ5LCAzMywgMjU0LCAxOSwgCi0gICAgMTI1LCAyMjMsIDE0NCwgMjQ5LCAzMywgMjU0LCAxOSwgMTI1LCAyMTcsIDMxLCAyMzAsIDI0OCwgMjMwLCA5NywgMzYsIDYyLCAKLSAgICAyMjcsIDMzLCAyMzAsIDk3LCAzNiwgOTQsIDIyNywgMzMsIDIzMCwgOTcsIDM2LCAyOSwgMjI3LCAzMywgMjMwLCA5NywgCi0gICAgMjE1LCAxNDcsIDIyNywgMzQsIDIsIDI0NywgNzQsIDIzMCwgOTcsIDIxNSwgMTQ3LCAyMjcsIDM0LCAyLCAyMjUsIDE1NiwgCi0gICAgMjMwLCA5NywgNDEsIDIzNSwgMTk2LCAyMjcsIDMzLCAyMzAsIDk3LCA0MSwgMjE1LCAxNDcsIDIyNywgMzMsIDExNywgMjMyLCAKLSAgICAxOTksIDI0LCAyMjcsIDMzLCAxMTcsIDIzMiwgMTk5LCAxNjcsIDIyNywgMzMsIDIzMCwgOTcsIDI5LCAyMjcsIDMzLCAyMzAsIAotICAgIDIyNCwgMTE3LCAyMTgsIDI0NCwgMjE4LCAyNDIsIDIsIDIzNSwgMjA4LCAyMjQsIDE2OSwgMjM1LCAyMDksIDIyNywgMzMsIAotICAgIDI0NCwgNjgsIDIyNiwgMTI3LCAyMzUsIDIwOCwgMjM1LCAyMDksIDIsIDUxLCA5MCwgMjM1LCAyMDksIDI1MywgODksIDIsIAotICAgIDIyMCwgMjMsIDI0OSwgMjI1LCAyNDMsIDE5NywgMjUzLCAyNTUsIDIzNSwgMjA2LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIsIAotICAgIDIyNCwgOCwgMjI2LCAxMTAsIDI1MywgMTczLCAyMjUsIDEzNSwgMjMyLCAyNDMsIDIzNSwgMjA3LCAyLCAyMjEsIDcyLCAKLSAgICAyMjYsIDExMCwgMjUzLCAxNzMsIDIyNSwgMTM1LCAyMzIsIDI0MywgMjM1LCAyMDcsIDIyOCwgMTYzLCAyMzUsIDI0NiwgCi0gICAgMjE3LCAxNDksIDIyNSwgMTM1LCAyMzUsIDIwOSwgMjUzLCAxNzMsIDExOCwgMjI1LCAxNDUsIDIyNywgMzMsIDIyNCwgMTYzLCAKLSAgICAyMzUsIDIwOSwgMjI3LCAzMywgMjM1LCAyMDksIDIsIDEzMiwgNzYsIDIsIDEwMSwgMjM1LCAyMDksIDIsIDI5LCA1MiwgCi0gICAgMjM1LCAyMDksIDIsIDIzNSwgMTk1LCAyMzUsIDIwOSwgMiwgMjE1LCAxNDYsIDIzNSwgMjA5LCAyLCAyMjYsIDI0NywgMjM1LCAKLSAgICAyMDksIDIsIDIxNSwgMTUzLCAyMzUsIDY5LCAyMzMsIDEwOCwgNDIsIDIxNiwgMTg0LCAyMjcsIDMzLCAyMTIsIDE1MywgCi0gICAgMTc0LCAyMjIsIDExOSwgMjQ5LCAxNDgsIDIxMiwgMTUzLCAxNzQsIDIyMiwgMTE5LCAyMjUsIDE4OCwgMjEyLCAxNTMsIAotICAgIDE3NCwgMjIyLCAxMTksIDIyNSwgNjAsIDk0LCA1LCAyLCAzLCAyNDksIDIyOSwgNDksIDk0LCA1LCAyLCAyNDksIDIyNCwgCi0gICAgMjU0LCAxNzUsIDQ5LCA5NCwgNSwgMiwgMjE3LCA0MywgNDksIDk0LCA1LCAyLCA2MiwgNTUsIDk0LCA1LCAyLCAyMTcsIDQzLCAKLSAgICA1NSwgOTQsIDUsIDIsIDIxOSwgMTAsIDEwOSwgOTQsIDUsIDIsIDgzLCAyMTYsIDE4MywgMjMwLCAyNTEsIDUsIDIsIDI0OSwgCi0gICAgMTU4LCA0OSwgMjMwLCAyNTEsIDUsIDIsIDYyLCA1NSwgMjMwLCAyNTEsIDUsIDIsIDI0NCwgMTQzLCAyNDcsIDcyLCAyMzAsIAotICAgIDI1MSwgNSwgMiwgMjIzLCAxMjUsIDI0NywgNzIsIDk0LCA1LCAyMzUsIDI1MiwgNDIsIDE1MSwgMjQ5LCAyMjgsIDk0LCA1LCAKLSAgICAyMzUsIDI1MiwgNDYsIDE1MSwgMjQ5LCAyMjgsIDIxNCwgMjMxLCAxNjcsIDI0OSwgNzEsIDIyNSwgNjMsIDIzMCwgMTU0LCAKLSAgICA1LCAyLCA2MiwgNDksIDIzMCwgMTU0LCA1LCAyLCAyMTUsIDE1MywgMjIxLCA2OSwgMjI1LCA2NCwgMiwgMjUxLCAxMDEsIAotICAgIDI0OSwgMTkyLCAyMjAsIDUsIDIyNSwgNjMsIDIzMCwgMTU0LCA1LCAyMzUsIDI1MiwgNDIsIDE1MSwgMjQ5LCAyMjgsIDIzMCwgCi0gICAgMTU0LCA1LCAyMzUsIDI1MiwgNDYsIDE1MSwgMjQ5LCAyMjgsIDM2LCAyMzAsIDE1NCwgNSwgMiwgMjQ5LCAyMjQsIDI1NCwgCi0gICAgMTc0LCAyMzAsIDE1NCwgNSwgMjM1LCAyNTIsIDUxLCAyNDksIDIyOCwgMzYsIDI0NywgMTIxLCA1MiwgOTQsIDUsIDIzNSwgCi0gICAgMjUyLCAyMTYsIDE4MywgMjMwLCAyNTEsIDUsIDIzNSwgMjUyLCAyMTYsIDE4MywgMjMwLCAxNTQsIDUsIDIzNSwgMjUyLCAKLSAgICAyMTYsIDE4MywgMjM1LCAyMDMsIDIyNSwgNjMsIDIyMywgMTM5LCAyMzUsIDIwMywgMjI1LCA2MywgMjEyLCAxNTMsIDE3NCwgCi0gICAgMjIzLCAyNDAsIDI0OSwgMTQ4LCAyNTQsIDQzLCAxNjcsIDI0OSwgMTA0LCAyMzUsIDE5NiwgMiwgMjQ3LCA3NCwgMjE1LCAKLSAgICAxNDcsIDIsIDIzMCwgMjUxLCA1MiwgMjE1LCAxNDcsIDIsIDIyNiwgMjQ3LCAyMzUsIDE5NiwgMiwgMjI2LCAyNDcsIDIzNSwgCi0gICAgMTk2LCAyLCAyMzIsIDE5OSwgMjU0LCAyNywgMjE1LCAxNDcsIDIsIDIzMiwgMTk5LCAyMjcsIDI0LCAyMTUsIDE0NywgNzgsIAotICAgIDIzNSwgMTk1LCAyMzUsIDE5NiwgNzgsIDIxNSwgMTQ2LCAyMTUsIDE0NywgNzgsIDI1MiwgNjAsIDc4LCAyMzUsIDE5NSwgCi0gICAgMjM1LCAxOTYsIDc4LCAyNTIsIDYwLCA3OCwgMjE1LCAxNDYsIDIxNSwgMTQ3LCAyNTEsIDIwNywgMjQsIDIzNSwgNjgsIDIsIAotICAgIDIxNSwgMTQ2LCAyMzUsIDE5NiwgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAyLCAyMzUsIDE5NSwgMjQ5LCAxOTMsIDIxNSwgCi0gICAgMTQ3LCAyLCAyMjEsIDU0LCAyNDksIDE5MywgMjM1LCAxOTYsIDIsIDIyMSwgNTQsIDUxLCA0MSwgMjM1LCAxOTUsIDUxLCAKLSAgICA0MSwgMjE1LCAxNDYsIDI0OSwgMTkzLCAyMTUsIDE0NywgMiwgMjIxLCA1NSwgMjQsIDIyMCwgNSwgMjI1LCA2MywgMjMyLCAKLSAgICAxOTksIDI0LCAyLCA2MiwgNDksIDIzMiwgMTk5LCAxNjcsIDIsIDYyLCA0OSwgNTEsIDIzMiwgMTk5LCAyNTQsIDI3LCA1MSwgCi0gICAgMjMyLCAxOTksIDIyNywgMjQsIDExNywgMjM1LCAxOTcsIDIzMiwgMTk5LCAyNTQsIDI3LCAxMTcsIDIzNSwgMTk3LCAyMzIsIAotICAgIDE5OSwgMjI3LCAyNCwgMjIwLCAxMywgMjMzLCAxMDgsIDIyNywgMjQsIDIyMCwgMTMsIDIzMywgMTA4LCAyNTQsIDI3LCAKLSAgICAyMzIsIDE5OSwgMTY3LCAyMjYsIDI0NSwgMjMyLCAxOTksIDI1NCwgMjcsIDIzMiwgMTk5LCAyNCwgMiwgMjMxLCAzNywgCi0gICAgMjE5LCA3OSwgMjMyLCAxOTksIDE2NywgMiwgMjMxLCAzNywgMjE5LCA3OSwgMjMyLCAxOTksIDI0LCAyLCAxOTksIDI0OCwgCi0gICAgMTAxLCAyMzIsIDE5OSwgMTY3LCAyLCAxOTksIDI0OCwgMTAxLCAyMzIsIDE5OSwgMjQsIDIsIDUxLCAyMjYsIDI0NywgMjMyLCAKLSAgICAxOTksIDI0LCAyLCAyMTUsIDE1MywgMjMyLCAxOTksIDI0LCAyLCA1MSwgMjE1LCAxNTMsIDMsIDIxNCwgMjI4LCAyLCAyMTUsIAotICAgIDE1MywgMjMyLCAxOTksIDE2NywgMiwgNTEsIDIyNiwgMjQ3LCAyMzIsIDE5OSwgMTY3LCAyLCA1MSwgMjE1LCAxNTMsIDIxMiwgCi0gICAgMTUzLCAxNzQsIDI0NywgODMsIDI1MywgMjQ2LCAyMTIsIDE1MywgMTc0LCAyMjQsIDQwLCAyNTMsIDI0NiwgMjQ1LCA2MSwgCi0gICAgNSwgMiwgNjIsIDU1LCAyNDAsIDk3LCAyLCA2MiwgNDksIDIxNiwgMTY5LCAxOTksIDI1MiwgNjAsIDIsIDUxLCA3MSwgOTAsIAotICAgIDIxNiwgMTY5LCAxOTksIDI1MiwgNjAsIDIsIDIxNiwgMTY5LCA3MSwgOTAsIDIxNywgNDMsIDIyNywgMzQsIDIsIDYyLCA0OSwgCi0gICAgMjE3LCA0MywgMjI3LCAzNCwgMiwgMjIzLCAxMjUsIDI0NywgNzIsIDIyMCwgODgsIDIzMCwgMjUxLCAyMjAsIDg3LCAyNDksIAotICAgIDEzOSwgMiwgNjIsIDQ5LCAyNDUsIDYxLCAyLCAyNTMsIDEzMiwgMjU0LCA1NywgMTIzLCAyMTEsIDIxMSwgMiwgMjQ5LCAKLSAgICAyMjQsIDI1NCwgMTc0LCAyNTMsIDIxOCwgMTIzLCAxNjcsIDEyMywgMTA4LCAyNDUsIDYxLCA1LCA3OCwgOTQsIDUyLCA5NCwgCi0gICAgNSwgNzgsIDI0NSwgNjEsIDUyLCAyNDUsIDYxLCA1LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgNTEsIDI0OSwgMTY1LCAyNDUsIAotICAgIDYyLCAxMTcsIDI0OSwgMTM0LCAyNDUsIDYxLCAyMjAsIDEwMiwgMTMzLCAyNDksIDEzNCwgMjQ1LCA2MSwgMjIwLCAxMDIsIAotICAgIDI0NSwgNjEsIDUsIDIsIDExNywgMTc2LCA3OCwgMjQsIDExNywgMTc2LCA1NSwgMjQ1LCA1NywgMiwgMjQzLCAyMzcsIDE3NiwgCi0gICAgNDksIDIzMywgMzksIDIsIDI0OSwgMjI5LCAyMzUsIDIxMiwgMjQyLCAxMDcsIDIsIDI0OSwgMjI5LCAyMzUsIDIxMiwgMjMzLCAKLSAgICAzOSwgMiwgMjI0LCAxNTgsIDE1MiwgNDksIDI0MiwgMTA3LCAyLCAyMjQsIDE1OCwgMTUyLCA0OSwgMjMzLCAzOSwgMTY3LCAKLSAgICAyMjAsIDI1LCAxMjMsIDEwOCwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAxMDgsIDIzMywgMzksIDE2NywgMjIwLCAKLSAgICAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDIzNSwgMjEyLCAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgCi0gICAgMjExLCAyLCA2MiwgMjM1LCAyMTIsIDIzMywgMzksIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAKLSAgICAyNDIsIDEwNywgMTY3LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAyLCA2MiwgNDksIDIzMywgMzksIDE2NywgMjIwLCAyNSwgCi0gICAgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDc4LCAyMjMsIDE0OCwgMjQyLCAxMDcsIDE2NywgMjIwLCAyNSwgMTIzLCAyMTEsIAotICAgIDIxMSwgMiwgNjIsIDc4LCAyMzMsIDcwLCAyMzMsIDM5LCAxNjcsIDI1MywgMjE5LCAyNDIsIDEwNywgMTY3LCAyNTMsIDIxOSwgCi0gICAgMjMzLCAzOSwgMjQsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjQyLCAxMDcsIDI0LCAyMjAsIDc5LCAyMjgsIAotICAgIDE2MywgMTIzLCAxMDgsIDIzMywgMzksIDI0LCAyMjgsIDE2MywgMjUzLCAyMTksIDI0MiwgMTA3LCAyNCwgMjI4LCAxNjMsIAotICAgIDI1MywgMjE5LCAyMzMsIDM5LCA3OCwgMjQ2LCA2NSwgMTIzLCA3OCwgMjQyLCAxMDYsIDI0MiwgMTA3LCA3OCwgMjQ2LCA2NSwgCi0gICAgMTIzLCA3OCwgMjMzLCAzOCwgMjMzLCAzOSwgNzgsIDIyMCwgODgsIDE2NywgMjQ1LCA2MiwgMjQyLCAxMDcsIDc4LCAyMjAsIAotICAgIDg4LCAxNjcsIDI0NSwgNjIsIDIzMywgMzksIDc4LCAyMjAsIDg4LCA3OCwgMjQyLCAxMDYsIDI0MiwgMTA3LCA3OCwgMjIwLCAKLSAgICA4OCwgNzgsIDIzMywgMzgsIDIzMywgMzksIDc4LCAyNDIsIDEwNywgNzgsIDI0NiwgNjUsIDI0NSwgNjIsIDI0MiwgMTA3LCAKLSAgICA3OCwgMjMzLCAzOSwgNzgsIDI0NiwgNjUsIDI0NSwgNjIsIDIzMywgMzksIDc4LCAyMjAsIDI1LCAxMjMsIDc4LCAyNDIsIAotICAgIDEwNywgNzgsIDIyMCwgMjUsIDI0NSwgNjIsIDI0MiwgMTA3LCA3OCwgMjIwLCAyNSwgMTIzLCA3OCwgMjMzLCAzOSwgNzgsIAotICAgIDIyMCwgMjUsIDI0NSwgNjIsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjMzLCAzOCwgMjIwLCAyNSwgMTIzLCAKLSAgICAyMTEsIDIxMSwgMTY3LCAyNDIsIDEwNiwgMjIwLCAyNSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM5LCAyLCA2MiwgCi0gICAgMjM1LCAyMTIsIDIyMCwgMjUsIDEyMywgMjExLCAyMTEsIDE2NywgMjQyLCAxMDcsIDIsIDYyLCAyMzUsIDIxMiwgMjQ2LCAKLSAgICA2NSwgMTIzLCAyMTEsIDIxMSwgMTY3LCAyMzMsIDM4LCAyNDYsIDY1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDI0MiwgMTA2LCAKLSAgICAyNDYsIDY1LCAyMjAsIDI1LCAxMjMsIDIxMSwgMjExLCAxNjcsIDIzMywgMzgsIDI0NiwgNjUsIDIyMCwgMjUsIDEyMywgCi0gICAgMjExLCAyMTEsIDE2NywgMjQyLCAxMDYsIDIyMCwgODgsIDE2NywgMjMzLCAzOCwgMjIwLCA4OCwgMTY3LCAyNDIsIDEwNiwgCi0gICAgMjIwLCA4OCwgNzgsIDIzMywgMzksIDc4LCAyNDUsIDYxLCA1MiwgMjIwLCA4OCwgNzgsIDI0MiwgMTA3LCA3OCwgMjQ1LCAKLSAgICA2MSwgNTIsIDUxLCAyMjksIDE3MywgMjMzLCAzOCwgNTEsIDIyOSwgMTczLCAyNDIsIDEwNiwgNTEsIDIyOSwgMTczLCAyMzMsIAotICAgIDM5LCAyLCAyMTUsIDE1MywgMjQyLCAxMDcsIDIyNiwgMjQ1LCAyMzMsIDM4LCAyNDIsIDEwNywgMjUxLCAyMDcsIDIzMywgCi0gICAgMzgsIDIzMywgMzksIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzQsIDI0MiwgMTA3LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIAotICAgIDM0LCAyMzMsIDM5LCAyNDksIDE5MywgMjUxLCA3LCAyNDksIDM1LCA3OCwgMjIwLCAyNSwgMjQ1LCA2MiwgMjQyLCAxMDcsIAotICAgIDI0OSwgMTkzLCAyNTEsIDcsIDI0OSwgMzUsIDc4LCAyMjAsIDI1LCAyNDUsIDYyLCAyMjAsIDYsIDIxNywgMTUzLCAyMzMsIAotICAgIDEwNiwgMjE3LCAxNTMsIDIyMCwgNiwgMjE3LCAxNTQsIDE2NywgMTIzLCAxMDgsIDIzMywgMTA2LCAyMTcsIDE1NCwgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjQ1LCA2MSwgNSwgMiwgMjUxLCAzNywgNDksIDIyNSwgODMsIDc4LCAyMjAsIDc5LCAyNDUsIDYxLCA1MiwgCi0gICAgMjE5LCAxLCA3OCwgMjIwLCA3OSwgMjQ1LCA2MSwgNTIsIDIyNSwgODMsIDc4LCAyMjAsIDc5LCAyMjgsIDE2MywgMTIzLCAKLSAgICAxMDgsIDIxOSwgMSwgNzgsIDIyMCwgNzksIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjI1LCA4MywgNzgsIDI0NSwgNjEsIDUyLCAKLSAgICAyMTksIDEsIDc4LCAyNDUsIDYxLCA1MiwgMjI1LCA4MywgNzgsIDIyOCwgMTYzLCAxMjMsIDEwOCwgMjE5LCAxLCA3OCwgCi0gICAgMjI4LCAxNjMsIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjU0LCA1NywgMTIzLCAxMDgsIDIxOSwgMSwgNzgsIDI1NCwgNTcsIAotICAgIDEyMywgMTA4LCAyMjUsIDgzLCA3OCwgMjI4LCAxNjMsIDI1NCwgNTcsIDEyMywgMTA4LCAyMTksIDEsIDc4LCAyMjgsIDE2MywgCi0gICAgMjU0LCA1NywgMTIzLCAxMDgsIDUxLCAyMjUsIDgyLCA1MSwgMjE5LCAwLCAyMTksIDksIDIsIDI0NywgNzQsIDIxOCwgMjIyLCAKLSAgICAyLCAyNDcsIDc0LCAyMTksIDksIDIsIDk0LCA1LCA1NSwgMjE4LCAyMjIsIDIsIDk0LCA1LCA1NSwgMjE5LCA5LCAyLCAyMzAsIAotICAgIDE1NCwgNSwgNTUsIDIxOCwgMjIyLCAyLCAyMzAsIDE1NCwgNSwgNTUsIDIxOSwgOSwgNjUsIDE2NywgMTIzLCAyMTEsIDIxMSwgCi0gICAgMiwgNjIsIDQ5LCAyMTgsIDIyMiwgNjUsIDE2NywgMTIzLCAyMTEsIDIxMSwgMiwgNjIsIDQ5LCAyMTksIDksIDY1LCA3OCwgCi0gICAgMjQ1LCA2MSwgNTIsIDIxOCwgMjIyLCA2NSwgNzgsIDI0NSwgNjEsIDUyLCAyMTksIDksIDY1LCA3OCwgMjE3LCA0MywgMjI3LCAKLSAgICAzMywgMjE4LCAyMjIsIDY1LCA3OCwgMjE3LCA0MywgMjI3LCAzMywgMjE5LCA5LCA2NSwgNzgsIDI1NCwgNTcsIDEyMywgCi0gICAgMTA4LCAyMTgsIDIyMiwgNjUsIDc4LCAyNTQsIDU3LCAxMjMsIDEwOCwgMjE5LCA5LCA2NSwgNzgsIDIyOCwgMTYzLCAxMjMsIAotICAgIDEwOCwgMjE4LCAyMjIsIDY1LCA3OCwgMjI4LCAxNjMsIDEyMywgMTA4LCA0MSwgNDIsIDIyNywgNDAsIDkyLCAyMjcsIDMzLCAKLSAgICA0MSwgNDYsIDIyNywgNDAsIDkyLCAyMjcsIDMzLCAyNDksIDE5MywgMjE5LCA4LCAyNDksIDE5MywgMjE4LCAyMjEsIDI0OSwgCi0gICAgMTkzLCAyMTksIDksIDE2NywgMTIzLCAxMDgsIDI0OSwgMTkzLCAyMTgsIDIyMiwgMTY3LCAxMjMsIDEwOCwgMjE5LCA5LCAKLSAgICA3OCwgMjE4LCAyMjEsIDIxOCwgMjIyLCA3OCwgMjE5LCA4LCAyMTksIDksIDc4LCAyMTksIDgsIDIxOCwgMjIyLCA3OCwgCi0gICAgMjE4LCAyMjEsIDIxOCwgMjIyLCAyNTEsIDIwNywgMjE5LCA4LCAyMTgsIDIyMiwgMjUxLCAyMDcsIDI0LCAyMzUsIDY4LCAKLSAgICAyNTEsIDcsIDI0OCwgMTAyLCAyLCAyMTksIDgsIDI0NSwgMTI3LCA2NSwgMjI3LCAzNSwgMjQ2LCA1NywgMjI1LCAxODAsIDIsIAotICAgIDIxNywgMjIwLCAyMTYsIDIyNiwgMjE2LCAxOTgsIDIzNSwgMTk1LCAyNDMsIDI0NiwgMjI4LCAxNzYsIDIyMCwgMTc1LCA0MiwgCi0gICAgMjE4LCAzNiwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNiwgMjIwLCAxNzUsIDExNCwgMjE4LCAzNiwgMjI2LCA0OCwgMiwgMTk3LCAKLSAgICA3MSwgMjUyLCA2MCwgMjE2LCAxNjksIDQ2LCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIDQyLCAyMTYsIDU3LCA3MSwgCi0gICAgMjUyLCA2MCwgNTEsIDQyLCAyMTYsIDU3LCA1MSwgNzEsIDI1MiwgNjAsIDUxLCA0MiwgMjE2LCA1NywgMTg0LCAyNDgsIAotICAgIDEwMiwgMjQzLCAyMTMsIDQyLCAyMzEsIDEyNywgNjUsIDUxLCAyMTQsIDIxNiwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNywgMiwgCi0gICAgMjI2LCAyNDcsIDIyMCwgMTc1LCAxMTQsIDIxOCwgMzcsIDIsIDIxNSwgMTUzLCAyMjAsIDE3NSwgMTE0LCAyMTgsIDM3LCAKLSAgICA3OCwgMjIwLCAxNzUsIDExOSwgMjE4LCAzNiwgNTEsIDExOSwgMjE4LCAzNiwgNTEsIDExNCwgMjE4LCAzNiwgNTEsIDIxOSwgCi0gICAgNDUsIDIyOCwgMTYzLCA1MiwgMjIzLCAyMDIsIDUxLCAyMTksIDQ1LCAyMjgsIDE2MywgNTIsIDI0NywgOTIsIDIyOCwgMTYzLCAKLSAgICAyNDcsIDEyNywgMiwgMjIzLCAyMDIsIDIyOSwgMTgyLCAyMjAsIDIzLCA3MSwgMjMyLCAyNDMsIDIsIDI0OSwgMjI5LCA0OSwgCi0gICAgNzEsIDIzMiwgMjQzLCAyLCAyNDksIDIyOSwgNTUsIDExOSwgMjE4LCAzNywgMiwgMjQ5LCAyMjksIDU1LCAyMjYsIDEzNiwgCi0gICAgMiwgMTk5LCA5MCwgMjI2LCAxMzYsIDIsIDIxNywgNDMsIDIyNywgMzMsIDIxNiwgMTY5LCA3MSwgMjUyLCA2MCwgMjUxLCAKLSAgICAxNjcsIDIyMywgMjQxLCAyMTYsIDE2OSwgNzEsIDI1MiwgNjAsIDIsIDE5OSwgOTAsIDIxNiwgMTY5LCAyNDksIDE2NSwgCi0gICAgMjI3LCAzMywgMjE2LCAxNjksIDIyOSwgMTczLCAyMzMsIDM4LCAyMTYsIDE2OSwgMjI5LCAxNzMsIDI0MiwgMTA2LCAyNDYsIAotICAgIDY1LCAyMjAsIDI1LCAyMzMsIDM5LCAxNjcsIDEyMywgMTA4LCAyNDYsIDY1LCAyMjAsIDI1LCAyNDIsIDEwNywgMTY3LCAKLSAgICAxMjMsIDEwOCwgMjE2LCAxNjksIDIxOSwgMjMyLCAyNTEsIDE2NywgMjIzLCAyNDEsIDIzMywgMTA4LCAyMTYsIDE2OSwgNzEsIAotICAgIDI1MiwgNjAsIDIyNywgMzMsIDUxLCAyMTksIDIzMiwgMjI3LCAzMywgNjcsIDcxLCAxMzQsIDIzMCwgOTcsIDY3LCA3MSwgCi0gICAgMTM0LCAyMjgsIDE2NywgMjQ1LCAxNzYsIDY3LCA2OCwgMjI4LCAxNjcsIDIxMywgMjUwLCA2NywgNjgsIDIxOSwgMjE1LCAKLSAgICAyNDUsIDE3NiwgNjcsIDY4LCAyMTksIDIxNSwgMjEzLCAyNTAsIDY3LCA2OCwgNDIsIDQ2LCA2NywgNjgsIDEzMiwgODMsIAotICAgIDY4LCAyMTUsIDEyNCwgODMsIDY4LCAyNDYsIDU4LCA4MywgNjgsIDIyOCwgMTY3LCAyNDUsIDE3NiwgODMsIDY4LCAyMjgsIAotICAgIDE2NywgMjEzLCAyNTAsIDgzLCA2OCwgMjE5LCAyMTUsIDI0NSwgMTc2LCA4MywgNjgsIDIxOSwgMjE1LCAyMTMsIDI1MCwgCi0gICAgODMsIDY4LCA0MiwgNDYsIDgzLCA2OCwgMTE0LCAxMTksIDgzLCA2OCwgOTUsIDc2LCAyLCAyMTcsIDMwLCAyNDYsIDU3LCAKLSAgICA5NSwgNzYsIDIsIDIxNywgMzAsIDIxNSwgMTIzLCAxMzIsIDc2LCAyLCAyMTcsIDMwLCAyNDYsIDU3LCAxMzIsIDc2LCAyLCAKLSAgICAyMTcsIDMwLCAyMTUsIDEyMywgNDEsIDIsIDIxNiwgMjI3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjUxLCAxMDEsIDE1MSwgCi0gICAgMjUxLCAxNDQsIDQxLCAyLCAyMTUsIDEzMSwgNDYsIDI0NywgMjA3LCAxNTEsIDI1MSwgMTQ0LCA0MSwgMiwgMjMyLCAxNjMsIAotICAgIDQyLCAyNDcsIDIwNywgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIDQyLCAxNTEsIDI1MSwgMTQ0LCAyNDcsIDIwMSwgMiwgCi0gICAgNDYsIDE1MSwgMjUxLCAxNDQsIDI0NywgMjAxLCAyLCAyMTYsIDIyNywgMTUxLCAyNTEsIDE0NCwgMjQ3LCAyMDEsIDIsIAotICAgIDI1MSwgMTAxLCAxNTEsIDI1MSwgMTQ0LCAyNDYsIDcyLCAyMTksIDE2NiwgODMsIDIzMywgMTA4LCAyMTksIDE2NiwgNjcsIAotICAgIDIzMywgMTA4LCAyMTksIDE2NiwgODMsIDIxNCwgMTY0LCAzLCAyMTksIDE2NiwgNjcsIDIxNCwgMTY0LCAzLCAyMTksIDE2NiwgCi0gICAgODMsIDIyNiwgNjUsIDY3LCAyMjYsIDY1LCA2NywgMjQxLCAxNzgsIDgzLCAyNDEsIDE3OCwgMTk5LCA4MywgMjQxLCAxNzgsIAotICAgIDgzLCAyMzMsIDEwOCwgMjQ5LCAyMjgsIDgzLCAyMzEsIDE0NywgMjQ3LCAyMDAsIDY3LCAyMzEsIDE0NywgMjQ3LCAyMDAsIAotICAgIDgzLCAyMzEsIDE0NywgMjMyLCAxNTksIDY3LCAyMzEsIDE0NywgMjMyLCAxNTksIDgzLCAzLCAyNDcsIDIwMCwgODMsIDMsIAotICAgIDIzMiwgMTU5LCA2NywgMywgMjMyLCAxNTksIDgzLCAxOTksIDI0NSwgMTIxLCA2NywgMTk5LCAyNDUsIDEyMSwgODMsIDcxLCAKLSAgICAyNDUsIDEyMSwgNjcsIDcxLCAyNDUsIDEyMSwgNDIsIDc2LCAyLCAzLCAyNDksIDIyOCwgMTMzLCAxMzIsIDI1MywgMTYyLCAKLSAgICA0MiwgNzYsIDIsIDM2LCAyMjUsIDE1NiwgMTg0LCAxMzIsIDIxOSwgMTYyLCA2OCwgMTMyLCAyMTYsIDI0LCA3NiwgMiwgNzEsIAotICAgIDkwLCAxMzIsIDIxNiwgMjQsIDc2LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDIxNiwgMjQsIDc2LCAyNDMsIDIxMywgMTM0LCAKLSAgICAxMzIsIDIxNiwgMjQsIDIxNiwgMTY5LCAyNDgsIDEwMiwgNjgsIDEzMiwgNzYsIDIsIDI0NiwgNzIsIDIxOSwgNzksIDEzMiwgCi0gICAgNzYsIDIsIDIxOCwgMjgsIDIsIDcxLCA5MCwgMTMyLCA3NiwgMiwgMjE4LCAyOCwgMiwgNTEsIDcxLCA5MCwgMTMyLCAyMTYsIAotICAgIDI0LCA3NiwgMiwgMjE4LCAyNywgMTMyLCAyMTYsIDI0LCA3NiwgMiwgMjE4LCAyOCwgMiwgNzEsIDkwLCAxMzIsIDIxNiwgCi0gICAgMjQsIDc2LCAyLCAyMTgsIDI4LCAyLCA1MSwgNzEsIDkwLCAxMzIsIDc2LCAyMTcsIDkzLCAyMTMsIDE2NiwgMjE0LCAyMCwgCi0gICAgNzYsIDIyNSwgMTQxLCAyNDcsIDE0NywgMjMzLCA3MCwgMjQ1LCA2MSwgNSwgNzgsIDEzMiwgNjgsIDIyMywgMjAzLCAyMTcsIAotICAgIDQzLCAyMjcsIDM0LCA3OCwgMTMyLCA2OCwgMTMyLCA3NiwgNzgsIDIyMywgMjAzLCAyNTQsIDU3LCAxMjMsIDEwOCwgOTUsIAotICAgIDc2LCAyMTcsIDkzLCAyNDIsIDEwNiwgOTUsIDc2LCAyMTcsIDkzLCAyMTgsIDIyMSwgMTMyLCAyMjQsIDE2OSwgNjgsIDk1LCAKLSAgICAyMjQsIDE2OSwgNjgsIDIyMywgMjAzLCAyMTcsIDQzLCAyMjcsIDM0LCA3OCwgOTUsIDY4LCA5NSwgNzYsIDc4LCAyMjMsIAotICAgIDIwMywgMjU0LCA1NywgMTIzLCAxMDgsIDIxNywgNDMsIDIyNywgMzQsIDc4LCAxMzIsIDY4LCAxMzIsIDc2LCA3OCwgMjU0LCAKLSAgICA1NywgMTIzLCAxMDgsIDEzMiwgNzYsIDc4LCAyMjMsIDIwMywgMjE3LCA0MywgMjI3LCAzMywgOTUsIDc2LCA3OCwgMjIzLCAKLSAgICAyMDMsIDIxNywgNDMsIDIyNywgMzMsIDY3LCAyMzEsIDE0NywgMjE5LCA5NSwgODMsIDMsIDIxOSwgOTUsIDY3LCAzLCAyMTksIAotICAgIDk1LCA4MywgMjIzLCAxNDQsIDIyNiwgNjUsIDY3LCAyMjMsIDE0NCwgMjI2LCA2NSwgMTA3LCAyMzMsIDEwOCwgMjQ5LCAKLSAgICAyMjgsIDEwNywgMjI2LCAyNDgsIDIsIDIyNiwgMjQ4LCAyMzUsIDIxMiwgMTA3LCAyNDksIDIyOSwgMiwgMjQ5LCAyMjksIAotICAgIDIzNSwgMjEyLCAxMDcsIDI0OSwgMjI4LCAxMDcsIDM2LCAyMjIsIDE2OSwgMTM2LCA2LCAxLCAyNTMsIDc1LCAxMzYsIDYsIAotICAgIDEsIDI1MSwgNDYsIDEzNiwgNiwgMSwgMjE0LCAyMzAsIDEzNiwgNiwgMSwgMjQyLCAxNjEsIDEzNiwgNiwgMSwgMjQ3LCA5NCwgCi0gICAgMTM2LCA2LCAxLCAyMTMsIDEyLCAxMzYsIDYsIDEsIDIxMiwgNjEsIDEzNiwgNiwgMSwgMjQ1LCAyNDUsIDEzNiwgNiwgMSwgCi0gICAgMjEyLCA4NCwgMTM2LCA2LCAxLCAyMzUsIDE0NiwgMTM2LCA2LCAxLCA3MCwgMjM1LCAxNDYsIDEzNiwgNiwgMSwgNzIsIAotICAgIDEzNiwgNiwgMSwgMjQ3LCAxMTIsIDEzNiwgNiwgMSwgMjM0LCAyNDUsIDEzNiwgNiwgMSwgMjMyLCAyMTUsIDEzNiwgNiwgMSwgCi0gICAgMjMwLCAxMDEsIDEzNiwgNiwgMSwgMjMwLCAxMiwgMTM2LCA2LCAxLCAyMjcsIDUxLCAxMzYsIDYsIDEsIDIyNSwgMTM4LCAKLSAgICAxMzYsIDYsIDEsIDIyMywgMTI0LCAxMzYsIDYsIDEsIDIyMCwgMTEsIDEzNiwgNiwgMSwgMjE2LCA0NiwgMTM2LCA2LCAxLCAKLSAgICAyMTUsIDE3MSwgMTM2LCA2LCAxLCAyNDMsIDIxNiwgMTM2LCA2LCAxLCAyNDEsIDE4NCwgMTM2LCA2LCAxLCAyMjcsIDMsIAotICAgIDEzNiwgNiwgMSwgMjI2LCA5NiwgMTM2LCA2LCAxLCAyMjAsIDE1MywgMTM2LCA2LCAxLCAyMTYsIDEyNSwgMTM2LCA2LCAxLCAKLSAgICAyNTAsIDEyLCAxMzYsIDYsIDEsIDIyMSwgMjQsIDEzNiwgNiwgMSwgMjEzLCAxOCwgMTM2LCA2LCAxLCAyMTMsIDIwLCAxMzYsIAotICAgIDYsIDEsIDIxMywgNDcsIDEzNiwgNiwgMSwgMjE5LCAxODUsIDE1OSwgMTM2LCA2LCAxLCAyMTIsIDIwMywgMTM2LCA2LCAxLCAKLSAgICAzLCAyMTIsIDE3NCwgMTM2LCA2LCAxLCAzLCAyMTIsIDE3NSwgMiwgMjE4LCAyNywgMTM2LCA2LCAxLCAyMTIsIDIzNSwgCi0gICAgMTM2LCA2LCAxLCAyMzUsIDE4MiwgMywgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIDYsIAotICAgIDEsIDIzNSwgMTgyLCAyNTEsIDE3MiwgMjEyLCAxNzQsIDEzNiwgNiwgMSwgMjQ0LCA1MSwgMTM2LCA2LCAxLCAyMzUsIDE0NCwgCi0gICAgMTM2LCA2LCAxLCAyMjAsIDE1MiwgMTM2LCA2LCAxLCAyMTYsIDE2MCwgNjEsIDEzNiwgNiwgMSwgMjMzLCA5OCwgMjMwLCAKLSAgICAxMDEsIDEzNiwgMywgMSwgMjUzLCA3NSwgMTM2LCAzLCAxLCAyNTEsIDQ2LCAxMzYsIDMsIDEsIDIxNCwgMjMwLCAxMzYsIDMsIAotICAgIDEsIDI0MiwgMTYxLCAxMzYsIDMsIDEsIDI0NywgOTQsIDEzNiwgMywgMSwgMjEzLCAxMiwgMTM2LCAzLCAxLCAyMTIsIDYxLCAKLSAgICAxMzYsIDMsIDEsIDI0NSwgMjQ1LCAxMzYsIDMsIDEsIDIxMiwgODQsIDEzNiwgMywgMSwgMjM1LCAxNDYsIDEzNiwgMywgMSwgCi0gICAgNzAsIDIzNSwgMTQ2LCAxMzYsIDMsIDEsIDcyLCAxMzYsIDMsIDEsIDI0NywgMTEyLCAxMzYsIDMsIDEsIDIzNCwgMjQ1LCAKLSAgICAxMzYsIDMsIDEsIDIzMiwgMjE1LCAxMzYsIDMsIDEsIDIzMCwgMTAxLCAxMzYsIDMsIDEsIDIzMCwgMTIsIDEzNiwgMywgMSwgCi0gICAgMjI3LCA1MSwgMTM2LCAzLCAxLCAyMjUsIDEzOCwgMTM2LCAzLCAxLCAyMjMsIDEyNCwgMTM2LCAzLCAxLCAyMjAsIDExLCAKLSAgICAxMzYsIDMsIDEsIDIxNiwgNDYsIDEzNiwgMywgMSwgMjE1LCAxNzEsIDEzNiwgMywgMSwgMjQzLCAyMTYsIDEzNiwgMywgMSwgCi0gICAgMjQxLCAxODQsIDEzNiwgMywgMSwgMjI3LCAzLCAxMzYsIDMsIDEsIDIyNiwgOTYsIDEzNiwgMywgMSwgMjIwLCAxNTMsIAotICAgIDEzNiwgMywgMSwgMjE2LCAxMjUsIDEzNiwgMywgMSwgMjUwLCAxMiwgMTM2LCAzLCAxLCAyMjEsIDI0LCAxMzYsIDMsIDEsIAotICAgIDIxMywgMTgsIDEzNiwgMywgMSwgMjEzLCAyMCwgMTM2LCAzLCAxLCAyMTMsIDQ3LCAxMzYsIDMsIDEsIDIxOSwgMTg1LCAKLSAgICAxNTksIDEzNiwgMywgMSwgMjEyLCAyMDMsIDEzNiwgMywgMSwgMywgMjEyLCAxNzQsIDEzNiwgMywgMSwgMywgMjEyLCAxNzUsIAotICAgIDIsIDIxOCwgMjcsIDEzNiwgMywgMSwgMjEyLCAyMzUsIDEzNiwgMywgMSwgMjM1LCAxODIsIDMsIDIxMiwgMTc0LCAxMzYsIAotICAgIDMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMTM2LCAzLCAxLCAyMzUsIDE4MiwgMjUxLCAxNzIsIDIxMiwgMTc0LCAxMzYsIAotICAgIDMsIDEsIDI0NCwgNTEsIDEzNiwgMywgMSwgMjM1LCAxNDQsIDEzNiwgMywgMSwgMjIwLCAxNTIsIDEzNiwgMywgMSwgMjE2LCAKLSAgICAxNjAsIDYxLCAxMzYsIDMsIDEsIDIzMywgOTgsIDIzMCwgMTAxLCA3LCA2LCAxLCAyMzMsIDE3MSwgMiwgNTEsIDEzNCwgNywgCi0gICAgMywgMSwgMjMzLCAxNzEsIDIsIDUxLCAxMzQsIDcsIDYsIDEsIDIzMywgMTcxLCAyLCAyMzEsIDM3LCAyMTcsIDQyLCA3LCA2LCAKLSAgICAxLCAyMjYsIDIzMCwgMiwgOTAsIDcsIDYsIDEsIDIyNCwgMTEzLCAyLCAyMTgsIDI3LCA3LCAzLCAxLCAxMTgsIDIsIDkwLCAKLSAgICA3LCAzLCAxLCAyMTgsIDEwMCwgMiwgMjQ3LCAyMDcsIDkwLCA3LCA2LCAxLCAyNDIsIDQyLCAyLCAyNDcsIDI0NiwgNywgMywgCi0gICAgMSwgMjQyLCA0MiwgMiwgMjQ3LCAyNDYsIDcsIDYsIDEsIDIzNSwgMjgsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMzUsIDI4LCAKLSAgICAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjEyLCAxNTMsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAyMTIsIDE1MywgMiwgMjQ3LCAKLSAgICAyNDYsIDcsIDYsIDEsIDI1NCwgNTIsIDcsIDYsIDEsIDIzMiwgMTEwLCAyLCAxMDEsIDcsIDYsIDEsIDIxNiwgNTgsIDYxLCAKLSAgICA3LCA2LCAxLCAyMTYsIDU4LCAyNTQsIDUyLCA3LCAzLCAxLCAyMTUsIDgwLCAyLCA0NiwgMTAxLCA3LCA2LCAxLCAyMTQsIAotICAgIDgzLCAyLCAxMDEsIDcsIDMsIDEsIDIxNCwgODMsIDIsIDEwMSwgNywgMywgMSwgMjE1LCA4MCwgMiwgMjQ5LCA0MSwgNywgNiwgCi0gICAgMSwgMTUxLCAyNDIsIDQxLCA3LCAzLCAxLCAxNTEsIDI0MiwgNDEsIDcsIDMsIDEsIDIxOCwgMjUsIDIyNiwgOSwgNywgMywgCi0gICAgMSwgMTkxLCAyLCAyMjgsIDE2MSwgNywgMywgMSwgMjE2LCA1OCwgMjI0LCAxMTMsIDIsIDIxOCwgMjcsIDcsIDMsIDEsIAotICAgIDE1NywgMiwgMTE1LCAyMjMsIDEzMSwgMjM1LCAyMTIsIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDc0LCA3LCAyMTksIDEwLCAzLCAKLSAgICAxLCAyMzUsIDE0MiwgNTksIDEsIDYsIDIxNSwgNzksIDcsIDYsIDEsIDIyMywgNCwgMiwgMjE4LCAxOTUsIDIxOCwgMjcsIDcsIAotICAgIDYsIDEsIDIxMiwgMTUzLCAyLCAyMTgsIDE5NSwgMjE4LCAyNywgNzksIDYsIDEsIDI1NCwgNzMsIDc5LCAzLCAxLCAyNTQsIAotICAgIDczLCA3OSwgNiwgMSwgMjE0LCAxNTEsIDc5LCAzLCAxLCAyMTQsIDE1MSwgNzksIDYsIDEsIDI0MywgODMsIDc5LCAzLCAxLCAKLSAgICAyNDMsIDgzLCA3OSwgNiwgMSwgMjQ4LCAxMzYsIDc5LCAzLCAxLCAyNDgsIDEzNiwgNzksIDYsIDEsIDI0NSwgMTUxLCA3OSwgCi0gICAgMywgMSwgMjQ1LCAxNTEsIDc5LCA2LCAxLCAyMTksIDIyMCwgNzksIDMsIDEsIDIxOSwgMjIwLCA3OSwgNiwgMSwgMjEyLCAKLSAgICA5NCwgNzksIDMsIDEsIDIxMiwgOTQsIDc5LCA2LCAxLCAyNDEsIDIzMSwgNzksIDMsIDEsIDI0MSwgMjMxLCA3OSwgNiwgMSwgCi0gICAgMjE3LCAxMzAsIDc5LCAzLCAxLCAyMTcsIDEzMCwgNzksIDYsIDEsIDI0MCwgMTA5LCA3OSwgMywgMSwgMjQwLCAxMDksIDc5LCAKLSAgICA2LCAxLCAyMzQsIDIzMiwgNzksIDMsIDEsIDIzNCwgMjMyLCA3OSwgNiwgMSwgMjMzLCA5NiwgNzksIDMsIDEsIDIzMywgOTYsIAotICAgIDc5LCA2LCAxLCAyMzEsIDQyLCA3OSwgMywgMSwgMjMxLCA0MiwgNzksIDYsIDEsIDIyOSwgNjQsIDc5LCAzLCAxLCAyMjksIAotICAgIDY0LCA3OSwgNiwgMSwgMjMzLCAyNDIsIDc5LCAzLCAxLCAyMzMsIDI0MiwgNzksIDYsIDEsIDc1LCA3OSwgMywgMSwgNzUsIAotICAgIDc5LCA2LCAxLCAyMjUsIDI0MCwgNzksIDMsIDEsIDIyNSwgMjQwLCA3OSwgNiwgMSwgMjIzLCAxMTIsIDc5LCAzLCAxLCAKLSAgICAyMjMsIDExMiwgNzksIDYsIDEsIDIyMCwgOTEsIDc5LCAzLCAxLCAyMjAsIDkxLCA3OSwgNiwgMSwgMjE3LCAyNDgsIDc5LCAKLSAgICAzLCAxLCAyMTcsIDI0OCwgNzksIDYsIDEsIDIxNSwgMTk2LCA3OSwgMywgMSwgMjE1LCAxOTYsIDc5LCA2LCAxLCAyNDQsIAotICAgIDkwLCA3OSwgMywgMSwgMjQ0LCA5MCwgNzksIDYsIDEsIDIzNCwgMTE4LCA3OSwgMywgMSwgMjM0LCAxMTgsIDc5LCA2LCAxLCAKLSAgICAyMjUsIDQ2LCA3OSwgMywgMSwgMjI1LCA0NiwgNzksIDYsIDEsIDIyNywgNDQsIDc5LCAzLCAxLCAyMjcsIDQ0LCA3OSwgNiwgCi0gICAgMSwgMjQ3LCAyMDUsIDI1NCwgNzgsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjU0LCA3OCwgNzksIDYsIDEsIDUzLCA3OSwgMjU0LCAKLSAgICAxMDMsIDc5LCAzLCAxLCA1MywgNzksIDI1NCwgMTAzLCA3OSwgNiwgMSwgMjQ5LCA1NSwgMjQ1LCAxNTEsIDc5LCAzLCAxLCAKLSAgICAyNDksIDU1LCAyNDUsIDE1MSwgNzksIDYsIDEsIDI0NywgMjA1LCAyMzQsIDIzMiwgNzksIDMsIDEsIDI0NywgMjA1LCAyMzQsIAotICAgIDIzMiwgNzksIDYsIDEsIDI0NywgMjA1LCAyMjksIDY0LCA3OSwgMywgMSwgMjQ3LCAyMDUsIDIyOSwgNjQsIDc5LCA2LCAxLCAKLSAgICAyNDksIDU1LCAyMjksIDY0LCA3OSwgMywgMSwgMjQ5LCA1NSwgMjI5LCA2NCwgNzksIDYsIDEsIDUzLCA3OSwgMjI3LCA0NCwgCi0gICAgNzksIDMsIDEsIDUzLCA3OSwgMjI3LCA0NCwgNzksIDYsIDEsIDIyMiwgMTYxLCA3OSwgMywgMSwgMjIyLCAxNjEsIDc5LCA2LCAKLSAgICAxLCAyNDksIDY4LCAyMjAsIDIzNSwgNzksIDMsIDEsIDI0OSwgNjgsIDIyMCwgMjM1LCA3OSwgNiwgMSwgNTMsIDc5LCAyMjAsIAotICAgIDIzNSwgNzksIDMsIDEsIDUzLCA3OSwgMjIwLCAyMzUsIDc5LCA2LCAxLCA1MywgNzksIDI0NSwgNDAsIDc5LCAzLCAxLCA1MywgCi0gICAgNzksIDI0NSwgNDAsIDc5LCA2LCAxLCAyNTQsIDkwLCAyMzQsIDEyMywgNzksIDMsIDEsIDI1NCwgOTAsIDIzNCwgMTIzLCAKLSAgICA3OSwgNiwgMSwgMjQ3LCAyMDUsIDI0MSwgMzIsIDc5LCAzLCAxLCAyNDcsIDIwNSwgMjQxLCAzMiwgNzksIDYsIDEsIDUzLCAKLSAgICA3OSwgMjQxLCAzMiwgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAzMiwgNzksIDYsIDEsIDUzLCA3OSwgMTU5LCA3OSwgMywgMSwgCi0gICAgNTMsIDc5LCAxNTksIDc5LCA2LCAxLCAyMzMsIDE3MCwgMTU5LCA3OSwgMywgMSwgMjMzLCAxNzAsIDE1OSwgNzksIDYsIDEsIAotICAgIDUzLCA3OSwgMjQxLCAyMDEsIDc5LCAzLCAxLCA1MywgNzksIDI0MSwgMjAxLCA3OSwgNiwgMSwgNTMsIDc5LCAyNDEsIDIzNCwgCi0gICAgNzksIDMsIDEsIDUzLCA3OSwgMjQxLCAyMzQsIDc5LCA2LCAxLCA1MywgNzksIDI0MywgNzgsIDc5LCAzLCAxLCA1MywgNzksIAotICAgIDI0MywgNzgsIDc5LCA2LCAxLCA1MywgNzksIDI0NywgMTE1LCA3OSwgMywgMSwgNTMsIDc5LCAyNDcsIDExNSwgNzksIDYsIAotICAgIDEsIDUzLCA3OSwgMjIwLCAyMDIsIDc5LCAzLCAxLCA1MywgNzksIDIyMCwgMjAyLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIAotICAgIDIyMCwgMjAyLCA3OSwgMywgMSwgNTMsIDIyOCwgNjMsIDIyMCwgMjAyLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIyOSwgCi0gICAgMTEzLCA3OSwgMywgMSwgNTMsIDIyOCwgNjMsIDIyOSwgMTEzLCA3OSwgNiwgMSwgNTMsIDIyOCwgNjMsIDIyOCwgMTAsIDc5LCAKLSAgICAzLCAxLCA1MywgMjI4LCA2MywgMjI4LCAxMCwgNzksIDYsIDEsIDUzLCAyMjgsIDYzLCAyMTQsIDIxLCA3OSwgMywgMSwgNTMsIAotICAgIDIyOCwgNjMsIDIxNCwgMjEsIDc5LCAxNiwgMjM0LCAyNTAsIDc5LCAxNiwgMjMxLCA0MywgMjIzLCAxMTIsIDc5LCAxNiwgCi0gICAgMjI1LCAyNDEsIDIyMywgMTEyLCA3OSwgMTYsIDIxOSwgODcsIDc5LCAxNiwgMjE3LCAyNDksIDIyMywgMTEyLCA3OSwgMTYsIAotICAgIDIzNCwgMTE5LCAyMjMsIDExMiwgNzksIDE2LCAyMjAsIDIwMywgMjIwLCA5MSwgNzksIDYsIDEsIDI0OSwgNTUsIDIyMCwgCi0gICAgMjM1LCA3OSwgMywgMSwgMjQ5LCA1NSwgMjIwLCAyMzUsIDc5LCA2LCAxLCAyNDksIDU1LCAyNDMsIDc4LCA3OSwgMywgMSwgCi0gICAgMjQ5LCA1NSwgMjQzLCA3OCwgNzksIDM3LCAyMjksIDY1LCA0OSwgNzksIDM3LCAyMTksIDE3OSwgMjUzLCAxMzksIDc5LCAKLSAgICAzNywgMjE5LCAxNzksIDIzMywgNDUsIDc5LCA1MywgMjI4LCA2MywgMjQzLCAyMDAsIDIxOSwgNjksIDc5LCA1MywgMjI4LCAKLSAgICA2MywgMjQ3LCAxNDksIDIyNCwgMTU4LCA3NywgNzksIDUzLCAyMjgsIDYzLCAyMzUsIDIzNCwgMjI0LCAxNTgsIDc3LCA3OSwgCi0gICAgNTMsIDIyOCwgNjMsIDIxNCwgMjE4LCAyNDcsIDEyNCwgNzksIDI0MywgMjI4LCAxMjIsIDI0MiwgOSwgNzksIDI0MywgMjAwLCAKLSAgICAyMTksIDY5LCA3OSwgMjMwLCAxOTQsIDI0NywgMTI0LCAxMDAsIDMsIDEsIDI1NCwgMzIsIDEwMCwgMywgMSwgMjUyLCA3MSwgCi0gICAgMTAwLCAzLCAxLCAyNDMsIDgyLCAxMDAsIDMsIDEsIDI0NywgODIsIDEwMCwgMywgMSwgMjQ1LCAxMDgsIDEwMCwgMywgMSwgCi0gICAgMjE0LCAxNDEsIDEwMCwgMywgMSwgMjEyLCA4MiwgMTAwLCAzLCAxLCAyMTgsIDExLCAxMDAsIDMsIDEsIDIzNSwgMjUxLCAKLSAgICAxMDAsIDMsIDEsIDIzNCwgMjM5LCAxMDAsIDMsIDEsIDIzMywgMTA0LCAxMDAsIDMsIDEsIDIzMSwgMjQ4LCAxMDAsIDMsIDEsIAotICAgIDIzMCwgMTUsIDEwMCwgMywgMSwgMjI3LCA2MiwgMTAwLCAzLCAxLCAyMjYsIDE0NSwgMTAwLCAzLCAxLCAyMTIsIDcxLCAKLSAgICAxMDAsIDMsIDEsIDIyNCwgNjEsIDEwMCwgMywgMSwgMjIyLCAxNTksIDEwMCwgMywgMSwgMjE4LCAxLCAxMDAsIDMsIDEsIAotICAgIDIxNSwgMTYwLCAxMDAsIDMsIDEsIDIyNiwgMTYsIDEwMCwgMywgMSwgMjM0LCAxMjcsIDEwMCwgMywgMSwgMjQyLCAyMTcsIAotICAgIDEwMCwgMywgMSwgMjI0LCAyMTcsIDEwMCwgMywgMSwgMjIwLCAyMDAsIDEwMCwgMywgMSwgMjUwLCAzNCwgMTAwLCAzLCAxLCAKLSAgICAyNTAsIDE5NSwgMTAwLCAzLCAxLCAyMzUsIDEwMywgMTAwLCAzLCAxLCAyNDksIDIzMywgMTAwLCAzLCAxLCAyNTAsIDc5LCAKLSAgICAxMDAsIDMsIDEsIDIxMywgMTUxLCAxMDAsIDMsIDEsIDIzNSwgMTEzLCAxMDAsIDMsIDEsIDI0MiwgMjQsIDEwMCwgMywgMSwgCi0gICAgMjQxLCAyMjIsIDEwMCwgMywgMSwgMjQxLCAxNjAsIDEwMCwgMywgMSwgMjE0LCA2LCAxMDAsIDMsIDEsIDI0MSwgMjQzLCAKLSAgICAxMDAsIDMsIDEsIDI0MSwgNTEsIDIxNywgNjIsIDEsIDE4NiwgMjE3LCA2MiwgMSwgMjEzLCA4NywgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA4NiwgMjE3LCA2MiwgMSwgMjEzLCA3NiwgMjE3LCA2MiwgMSwgMjEzLCA3NCwgMjE3LCA2MiwgMSwgMjUxLCAyMDksIAotICAgIDI1NCwgMTc2LCAyMTMsIDcwLCAyMTcsIDYyLCAxLCAyMTMsIDcwLCAyMTcsIDYyLCAxLCAyMTMsIDg0LCAyMTcsIDYyLCAxLCAKLSAgICAyMTMsIDgxLCAyMTcsIDYyLCAxLCAyMTMsIDgzLCAyMTcsIDYyLCAxLCAyMTMsIDgyLCAyMTcsIDYyLCAxLCAyMTMsIDMsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNzgsIDIxNywgNjIsIDEsIDIxMywgNjgsIDIxNywgNjIsIDEsIDIxNiwgNzksIDIxMywgNjgsIAotICAgIDIxNywgNjIsIDEsIDIxMywgNjUsIDIxNywgNjIsIDEsIDIxMywgNzIsIDIxNywgNjIsIDEsIDI1MSwgMjA5LCAyNTQsIDE3NiwgCi0gICAgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA3MiwgMjE3LCA2MiwgMSwgMjEzLCA3MSwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA5MSwgMjE3LCA2MiwgMSwgMjEzLCA2NiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA2NiwgMjE3LCA2MiwgMSwgCi0gICAgMjEzLCA1NiwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA1NiwgMjE3LCA2MiwgMSwgMjEyLCAyNTUsIDIxNywgNjIsIDEsIAotICAgIDIxMywgNDAsIDIxNywgNjIsIDEsIDI1NCwgMTEyLCAyMTMsIDQwLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDQwLCAKLSAgICAyMTcsIDYyLCAxLCAyMTMsIDY0LCAyMTcsIDYyLCAxLCAyMTMsIDYzLCAyMTcsIDYyLCAxLCAyMTMsIDYwLCAyMTcsIDYyLCAKLSAgICAxLCAyMTYsIDc5LCAyMTMsIDczLCAyMTcsIDYyLCAxLCAyMTYsIDc5LCAyMTMsIDU4LCAyMTcsIDYyLCAxLCAyMTMsIDU3LCAKLSAgICAyMTcsIDYyLCAxLCAyMTIsIDIwMywgMjE3LCA2MiwgMSwgMjEzLCA1NCwgMjE3LCA2MiwgMSwgMjEzLCA1MywgMjE3LCA2MiwgCi0gICAgMSwgMjEzLCA3NSwgMjE3LCA2MiwgMSwgMjE2LCA3OSwgMjEzLCA3NSwgMjE3LCA2MiwgMSwgMjUzLCA3OSwgMjEzLCA3NSwgCi0gICAgMjE3LCA2MiwgMSwgMjEzLCA1MiwgMjE3LCA2MiwgMSwgMjEzLCA1MCwgMjE3LCA2MiwgMSwgMjEzLCA1MSwgMjE3LCA2MiwgCi0gICAgMSwgMjEzLCA0OSwgMjE3LCA2MiwgMSwgMjEzLCA0OCwgMjE3LCA2MiwgMSwgMjEzLCA4NSwgMjE3LCA2MiwgMSwgMjEzLCAKLSAgICA0NiwgMjE3LCA2MiwgMSwgMjEzLCA0NSwgMjE3LCA2MiwgMSwgMjEzLCA0NCwgMjE3LCA2MiwgMSwgMjEzLCA0MywgMjE3LCAKLSAgICA2MiwgMSwgMjEzLCA0MSwgMjE3LCA2MiwgMSwgMjE3LCAyNDEsIDIxMywgNDEsIDIxNywgNjIsIDEsIDIxMywgMzksIDIxNywgCi0gICAgNjIsIDU5LCAxLCAyMzMsIDE0OSwgNzcsIDIxNywgNjIsIDIyMSwgNTgsIDc3LCAyMTcsIDYyLCAyNDksIDEzMywgMjM1LCAKLSAgICA2NiwgMjgsIDQsIDIzMiwgMjA3LCAyOCwgNCwgMjMwLCAyMzAsIDI4LCA0LCAyMjMsIDExMCwgMjgsIDQsIDIxOSwgMjQxLCAKLSAgICAyOCwgNCwgMjIwLCAxODYsIDI4LCA0LCAyNTEsIDEyNywgMjgsIDQsIDIxNiwgMjUyLCAyOCwgNCwgMjQ5LCAxNzQsIDI4LCAKLSAgICA0LCAyMjgsIDE4MywgMjgsIDQsIDIyNywgMjUyLCAyOCwgNCwgMjQyLCAxNTYsIDIyNywgMTIwLCAyOCwgNCwgMjEyLCAxNSwgCi0gICAgMjgsIDQsIDI0NywgOTcsIDI4LCA0LCAyNDgsIDU1LCAyOCwgNCwgMjM1LCA3MCwgMjgsIDQsIDIxNywgMTA4LCAyOCwgNCwgCi0gICAgMjUwLCAyMiwgMjgsIDQsIDIyNSwgMjUyLCAyOCwgNCwgMjI1LCAxNDksIDI4LCA0LCAyNDIsIDIzMSwgMjgsIDQsIDI0MiwgCi0gICAgMjI3LCAyOCwgNCwgMjQyLCAyMjgsIDI4LCA0LCAyNDIsIDIyOSwgMjgsIDQsIDIxOSwgMTU3LCAyOCwgNCwgMjE5LCAxMTcsIAotICAgIDI4LCA0LCAyMTksIDEyOCwgMjgsIDQsIDIxOSwgMTU2LCAyOCwgNCwgMjE5LCAxMzIsIDI4LCA0LCAyMTksIDEzMywgMjgsIAotICAgIDQsIDIxOSwgMTIxLCAyOCwgNCwgMjUwLCAxNDYsIDI4LCA0LCAyNTAsIDEyNiwgMjgsIDQsIDI1MCwgMTI4LCAyOCwgNCwgCi0gICAgMjUwLCAxNDUsIDI4LCA0LCAyNTAsIDE0MywgMjgsIDQsIDI1MCwgMTQ0LCAyOCwgNCwgMjUwLCAxMjcsIDI4LCA0LCAyMTEsIAotICAgIDI0MiwgMjgsIDQsIDIxMSwgMjIyLCAyOCwgNCwgMjExLCAyMzMsIDI4LCA0LCAyMTEsIDI0MSwgMjgsIDQsIDIxMSwgMjM2LCAKLSAgICAyOCwgNCwgMjExLCAyMzcsIDI4LCA0LCAyMTEsIDIyNSwgMjgsIDQsIDI1MCwgMTQyLCAyOCwgNCwgMjUwLCAxMjksIDI4LCAKLSAgICA0LCAyNTAsIDEzMSwgMjgsIDQsIDI1MCwgMTQxLCAyOCwgNCwgMjUwLCAxMzksIDI4LCA0LCAyNTAsIDE0MCwgMjgsIDQsIAotICAgIDI1MCwgMTMwLCAyOCwgNCwgMjI0LCAxMjUsIDI4LCA0LCAyMjQsIDExNSwgMjgsIDQsIDIyNCwgMTIxLCAyOCwgNCwgMjI0LCAKLSAgICAxMjQsIDI4LCA0LCAyMjQsIDEyMiwgMjgsIDQsIDIyNCwgMTIzLCAyOCwgNCwgMjI0LCAxMjAsIDI4LCA0LCAyMzMsIDE4MSwgCi0gICAgMjgsIDQsIDIzMywgMTczLCAyOCwgNCwgMjMzLCAxNzYsIDI4LCA0LCAyMzMsIDE4MCwgMjgsIDQsIDIzMywgMTc3LCAyOCwgCi0gICAgNCwgMjMzLCAxNzgsIDI4LCA0LCAyMzMsIDE3NCwgMjgsIDQsIDIxMywgMTE4LCAyOCwgNCwgMjEzLCAxMDgsIDI4LCA0LCAKLSAgICAyMTMsIDExNCwgMjgsIDQsIDIxMywgMTE3LCAyOCwgNCwgMjEzLCAxMTUsIDI4LCA0LCAyMTMsIDExNiwgMjgsIDQsIDIxMywgCi0gICAgMTEzLCAyOCwgNCwgMjQyLCA1MiwgMjgsIDQsIDI0MiwgNDMsIDI4LCA0LCAyNDIsIDQ2LCAyOCwgNCwgMjQyLCA1MSwgMjgsIAotICAgIDQsIDI0MiwgNDgsIDI4LCA0LCAyNDIsIDQ5LCAyOCwgNCwgMjQyLCA0NSwgMzcsIDMzLCAxLCAyNTEsIDI1MSwgMzcsIDMzLCAKLSAgICAxLCAyMTQsIDIzMiwgMzcsIDMzLCAxLCAyNDIsIDIxMiwgMzcsIDMzLCAxLCAyNDgsIDQxLCAzNywgMzMsIDEsIDIxMiwgNjcsIAotICAgIDM3LCAzMywgMSwgMjEyLCA4NywgMzcsIDMzLCAxLCAxODEsIDM3LCAzMywgMSwgMjQ1LCAxMzEsIDM3LCAzMywgMSwgMjQ1LCAKLSAgICAxMTcsIDM3LCAzMywgMSwgMjQ1LCAxMDgsIDM3LCAzMywgMSwgNzUsIDM3LCAzMywgMSwgMjI2LCA5NiwgMzcsIDMzLCAxLCAKLSAgICAyNDUsIDU1LCAzNywgMzMsIDEsIDI0NSwgNDUsIDM3LCAzMywgMSwgMjE3LCAyMjksIDM3LCAzMywgMSwgMTU5LCAzNywgMzMsIAotICAgIDEsIDIxNiwgMTM2LCAzNywgMzMsIDEsIDI1MCwgNjcsIDM3LCAzMywgMSwgMjIxLCAyNCwgMzcsIDMzLCAxLCAyMjAsIDI0NSwgCi0gICAgMzcsIDMzLCAxLCAyNDQsIDUxLCAzNywgMzMsIDEsIDI0NSwgNDQsIDM3LCAzMywgMSwgNjEsIDM3LCAzMywgMSwgMjM2LCAKLSAgICA1NSwgMzcsIDMzLCAxLCAyNDcsIDExMywgMzcsIDMzLCAxLCAyMzAsIDIxMCwgMjE1LCAxNzUsIDM3LCAzMywgMSwgMjEzLCAKLSAgICA0OSwgMzcsIDMzLCAxLCAyMTIsIDIwMywgMzcsIDMzLCAxLCAyMzUsIDE4MSwgNjEsIDM3LCAzMywgMSwgMjMyLCAyMjEsIAotICAgIDIxMiwgMTc0LCAzNywgMzMsIDEsIDI1MSwgMTcyLCAyMTIsIDE3NCwgMzcsIDMzLCAxLCAyMzUsIDE4MSwgMjUxLCAxNzIsIAotICAgIDIxMiwgMTc0LCA0NiwgMjU0LCAxOSwgMjE5LCA1LCAyMzEsIDIxNywgNDYsIDI1NCwgMTksIDI0NiwgNzIsIDIxOSwgNSwgCi0gICAgMjMxLCAyMTcsIDQyLCAyMTksIDUsIDEyNSwgNDYsIDIxOSwgNSwgMTI1LCA0MiwgMjQ2LCA3MiwgMjE5LCA1LCAxMjUsIDQ2LCAKLSAgICAyNDYsIDcyLCAyMTksIDUsIDEyNSwgMjI0LCA0OCwgMjM1LCAxOTksIDIzMSwgMjE3LCAyMjQsIDQ4LCAyNDYsIDcyLCAyMzUsIAotICAgIDE5OSwgMjMxLCAyMTcsIDI0NiwgNzIsIDIxNiwgMTk5LCAyMzEsIDIxNywgNDIsIDIxNiwgMTk5LCAxMjUsIDQ2LCAyMTYsIAotICAgIDE5OSwgMTI1LCAyMjQsIDQ4LCAyMTksIDE2NiwgNDIsIDIyNCwgNDgsIDIyNywgNjQsIDEyNSwgNDYsIDIyNCwgNDgsIDIyNywgCi0gICAgNjQsIDEyNSwgMjQ1LCAxNjYsIDI0OSwgOTcsIDIyNiwgMTQxLCAyNDMsIDI0NywgMjI2LCAxNDEsIDIyMywgMjAyLCAyNDMsIAotICAgIDI0NywgMjI2LCAxNDEsIDI0MCwgMTU3LCAyNDYsIDcyLCAyMjcsIDExNSwgMjQ2LCA1OCwgMjU0LCAyOCwgMjE1LCAxMjQsIAotICAgIDI1NCwgMjgsIDI0NiwgNzIsIDIyMywgMTQ0LCAyNTQsIDE4LCA1MSwgMjI3LCAxMTIsIDI0MCwgMTYwLCAyMzUsIDE5MSwgCi0gICAgMjM1LCAxOTgsIDIyNiwgMTg2LCAyNTEsIDgxLCAyNDAsIDE2MSwgMiwgMjQ3LCAyMDksIDIxNywgNDMsIDIsIDIyMywgMTMxLCAKLSAgICA0OSwgNDIsIDExNSwgMjI2LCAxMzMsIDEyNSwgNDYsIDExNSwgMjI2LCAxMzMsIDEyNSwgMjE3LCA0MywgMiwgNjIsIDQ5LCAKLSAgICAyMTcsIDQzLCAyLCA2MiwgNTUsIDQyLCA3MSwgMjUyLCA2MCwgMiwgMjI0LCAxNTIsIDQ2LCA3MSwgMjUyLCA2MCwgMiwgCi0gICAgMjI0LCAxNTIsIDIxNiwgMjI3LCA0MiwgMTUxLCAxMjUsIDIxNiwgMjI3LCA0NiwgMTUxLCAxMjUsIDI1MSwgMTAxLCA0MiwgCi0gICAgMTUxLCAxMjUsIDI1MSwgMTAxLCA0NiwgMTUxLCAxMjUsIDQyLCAyMjAsIDExMywgMTExLCAxMjUsIDQ2LCAyMjAsIDExMywgCi0gICAgMTExLCAxMjUsIDQyLCA1MSwgMjI2LCAxMzEsIDQ2LCA1MSwgMjI2LCAxMzEsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIAotICAgIDIyNSwgMjYsIDEyMiwgNjIsIDExMCwgMTE3LCAxNzYsIDIyNSwgMjYsIDkxLCAyNDMsIDIzNywgNjIsIDIyNSwgMjYsIDI0NCwgCi0gICAgNTAsIDYyLCA3NywgMjIzLCAyMDIsIDIyNCwgMTU4LCA3NywgNzEsIDIxNywgNDIsIDIyMywgMTMxLCAyMjUsIDE0NCwgMjEzLCAKLSAgICAxOTYsIDIyMSwgNTgsIDIzMSwgMzcsIDI0NywgNzQsIDksIDM0LCAyMjMsIDIyNywgOSwgMzQsIDI0OSwgMjAzLCA5LCAzNCwgCi0gICAgMjIyLCA5NSwgMTE2LCA5LCAzNCwgMjIyLCA5NSwgMTA5LCA5LCAzNCwgMjIyLCA5NSwgMTY2LCA5LCAzNCwgMjI2LCA0MywgCi0gICAgOSwgMzQsIDI1MSwgODksIDksIDM0LCAyMTgsIDQwLCA5LCAzNCwgMjM0LCA0MiwgMTE2LCA5LCAzNCwgMjM0LCA0MiwgMTA5LCAKLSAgICA5LCAzNCwgMjQ3LCAxMjIsIDksIDM0LCAyMjIsIDk4LCA5LCAzNCwgMywgMTE2LCA5LCAzNCwgMywgMTA5LCA5LCAzNCwgCi0gICAgMjMzLCAxMjEsIDExNiwgOSwgMzQsIDIzMywgMTIxLCAxMDksIDksIDM0LCAyMzMsIDEyMSwgMTY2LCA5LCAzNCwgMjMzLCAKLSAgICAxMjEsIDE2MywgOSwgMzQsIDIxOSwgMjUyLCA5LCAzNCwgMjE3LCA5OCwgOSwgMzQsIDIxOSwgMjUwLCAxMTYsIDksIDM0LCAKLSAgICAyMTksIDI1MCwgMTA5LCA5LCAzNCwgMjQxLCAyMTIsIDExNiwgOSwgMzQsIDI0MSwgMjEyLCAxMDksIDksIDM0LCAyNDEsIAotICAgIDI1NCwgOSwgMzQsIDIyNCwgMzksIDksIDM0LCAyNTAsIDE5LCA5LCAzNCwgMjE4LCAyMzgsIDksIDM0LCAyMzAsIDE5OCwgOSwgCi0gICAgMzQsIDI0OCwgMzksIDksIDM0LCAyMzAsIDE5MCwgOSwgMzQsIDI0OSwgMjE4LCA5LCAzNCwgMjE0LCAyNSwgMTE2LCA5LCAKLSAgICAzNCwgMjE0LCAyNSwgMTA5LCA5LCAzNCwgMjQ0LCA2NSwgOSwgMzQsIDIyNiwgMTA2LCAxMTYsIDksIDM0LCAyMjYsIDEwNiwgCi0gICAgMTA5LCA5LCAzNCwgMjIwLCA4NiwgMTUxLCAyMTYsIDE5NCwgMjE2LCAxNDYsIDksIDM0LCAyNDksIDg0LCA5LCAzNCwgMjQ3LCAKLSAgICA5MCwgOSwgMzQsIDIzNSwgMTM1LCA5LCAzNCwgMjUxLCAxMjIsIDY1LCAyNDksIDE4NywgOSwgMzQsIDI0NCwgMjM5LCA5LCAKLSAgICAzNCwgMjE5LCAxODEsIDExNiwgOSwgMzQsIDIxOSwgMTgxLCAxMDksIDksIDM0LCAyNTIsIDczLCA5LCAzNCwgMjIwLCA5MywgCi0gICAgOSwgMzQsIDI1MCwgMjQ5LCAyMjAsIDkzLCA5LCAzNCwgMjI5LCAxNzIsIDExNiwgOSwgMzQsIDIyOSwgMTcyLCAxMDksIDksIAotICAgIDM0LCAyMjksIDE3MiwgMTY2LCA5LCAzNCwgMjI5LCAxNzIsIDE2MywgOSwgMzQsIDIzMSwgMTExLCA5LCAzNCwgMjIwLCAKLSAgICAyMzcsIDksIDM0LCAyMjQsIDQ1LCA5LCAzNCwgMjQ1LCA0LCA5LCAzNCwgMjI3LCA3NSwgOSwgMzQsIDI1MSwgNjEsIDExNiwgCi0gICAgOSwgMzQsIDI1MSwgNjEsIDEwOSwgOSwgMzQsIDIzMSwgMTUxLCA5LCAzNCwgMjMwLCAxOTMsIDksIDM0LCAyNDIsIDExNywgCi0gICAgMTE2LCA5LCAzNCwgMjQyLCAxMTcsIDEwOSwgOSwgMzQsIDI0MiwgMTE3LCAxNjYsIDksIDM0LCAyMTcsIDYwLCA5LCAzNCwgCi0gICAgMjQ5LCAxODYsIDksIDM0LCAyMTMsIDI1MCwgMTE2LCA5LCAzNCwgMjEzLCAyNTAsIDEwOSwgOSwgMzQsIDI1MCwgMjQ5LCAKLSAgICAyMjIsIDg5LCA5LCAzNCwgMjIwLCA4NiwgMjQwLCAyMzUsIDksIDM0LCAyNDAsIDIzNSwgOSwgMzQsIDI1MCwgMjQ5LCAyMTksIAotICAgIDE5MCwgOSwgMzQsIDI1MCwgMjQ5LCAyMjAsIDIzMiwgOSwgMzQsIDI0NCwgMSwgOSwgMzQsIDI1MCwgMjQ5LCAyNTAsIDE2MCwgCi0gICAgOSwgMzQsIDIyMCwgODYsIDIxNCwgNDEsIDksIDM0LCAyMTQsIDQyLCAxMTYsIDksIDM0LCAyMTQsIDQyLCAxMDksIDksIDM0LCAKLSAgICAyNDksIDIyMCwgOSwgMzQsIDI1MCwgMjQ5LCAyNDIsIDE0MiwgOSwgMzQsIDE4NCwgMTE2LCA5LCAzNCwgMTg0LCAxMDksIDksIAotICAgIDM0LCAyNTAsIDI0OSwgMjMyLCAxOTAsIDksIDM0LCAyNTAsIDI0OSwgMjQzLCA2NCwgOSwgMzQsIDIzMCwgMTg5LCAxMTYsIAotICAgIDksIDM0LCAyMzAsIDE4OSwgMTA5LCA5LCAzNCwgMjI0LCA1MCwgOSwgMzQsIDI1MSwgMTMwLCA5LCAzNCwgMjUwLCAyNDksIAotICAgIDIxOCwgNywgMjMzLCA3NiwgOSwgMzQsIDI1MCwgMjQ5LCAyMzMsIDc3LCA5LCAzNCwgMjUwLCAyNDksIDIxMywgMjI0LCA5LCAKLSAgICAzNCwgMjUwLCAyNDksIDI0NCwgMTUsIDksIDM0LCAyNDUsIDE3NCwgMTE2LCA5LCAzNCwgMjQ1LCAxNzQsIDEwOSwgOSwgMzQsIAotICAgIDI0NSwgMTc0LCAxNjYsIDksIDM0LCAyNTAsIDI0OSwgMjQ1LCAxNzMsIDksIDM0LCAyNDEsIDIxOSwgOSwgMzQsIDI1MCwgCi0gICAgMjQ5LCAyNDAsIDIzMiwgOSwgMzQsIDI1MSwgMTE5LCA5LCAzNCwgMjQyLCAxOTgsIDksIDM0LCAyNTAsIDI0OSwgMjQ0LCAKLSAgICA1OSwgOSwgMzQsIDI1MCwgMjQ5LCAyNTEsIDE2MCwgOSwgMzQsIDI1MCwgMjQ5LCAyMjIsIDE3MiwgOSwgMzQsIDIyMCwgODYsIAotICAgIDIxMywgMjQzLCA5LCAzNCwgMjIwLCA4NiwgMjEzLCAzMiwgOSwgMzQsIDI1MCwgMjQ5LCAyNDMsIDIxNCwgOSwgMzQsIDIzNSwgCi0gICAgMTQxLCAyNDUsIDgsIDksIDM0LCAyNTAsIDI0OSwgMjQ1LCA4LCA5LCAzNCwgMjM1LCAxNDEsIDIxNiwgMjI4LCA5LCAzNCwgCi0gICAgMjUwLCAyNDksIDIxNiwgMjI4LCA5LCAzNCwgMjM1LCAxNDEsIDI0NiwgNTAsIDksIDM0LCAyNTAsIDI0OSwgMjQ2LCA1MCwgCi0gICAgOSwgMzQsIDIxNiwgNTUsIDksIDM0LCAyMzUsIDE0MSwgMjE2LCA1NSwgOSwgMzQsIDI1MCwgMjQ5LCAyMTYsIDU1LCA1NywgCi0gICAgMzQsIDExNiwgNTcsIDM0LCAyMzIsIDI0MiwgNTcsIDM0LCAyNDcsIDc0LCA1NywgMzQsIDIyMCwgMjMsIDU3LCAzNCwgMjIyLCAKLSAgICA5NCwgNTcsIDM0LCAxMDEsIDU3LCAzNCwgMTA5LCA1NywgMzQsIDIzMywgOSwgNTcsIDM0LCAyMzEsIDI0OCwgNTcsIDM0LCAKLSAgICAyMzMsIDU3LCA1NywgMzQsIDI0NSwgODgsIDU3LCAzNCwgMTk1LCA1NywgMzQsIDExOSwgMjUxLCA4OSwgNTcsIDM0LCAyNDksIAotICAgIDg2LCA1NywgMzQsIDI0MCwgMTA0LCA1NywgMzQsIDIxOCwgNDAsIDU3LCAzNCwgMjI3LCA0MCwgMjUxLCA4OSwgNTcsIDM0LCAKLSAgICAyMzQsIDQxLCA1NywgMzQsIDIyNSwgMTA0LCA1NywgMzQsIDIxMywgMTkwLCA1NywgMzQsIDIxOSwgMTc1LCA1NywgMzQsIAotICAgIDQ2LCAyMjcsIDQwLCAyNTEsIDg5LCA1NywgMzQsIDI0MSwgMTYxLCAyNDUsIDEwMywgNTcsIDM0LCAyMTcsIDIwMCwgNTcsIAotICAgIDM0LCAyNDcsIDEyMiwgNTcsIDM0LCAyMjIsIDk4LCA1NywgMzQsIDI0OSwgMjAzLCA1NywgMzQsIDIyNSwgNjUsIDU3LCAzNCwgCi0gICAgMjU0LCAxMjAsIDU3LCAzNCwgMjMwLCAxODAsIDU3LCAzNCwgMjQ1LCAxMDMsIDU3LCAzNCwgMjQ1LCAxNzksIDU3LCAzNCwgCi0gICAgMjIyLCAxMTgsIDU3LCAzNCwgMjQyLCAxNTAsIDU3LCAzNCwgMjQyLCAxNTEsIDIyMCwgOSwgNTcsIDM0LCAyNDUsIDcsIDU3LCAKLSAgICAzNCwgMjUxLCAxNzEsIDU3LCAzNCwgMjEzLCAyMDgsIDU3LCAzNCwgMjUwLCAzOCwgNTcsIDM0LCAyMjMsIDk4LCA1NywgMzQsIAotICAgIDIzNSwgMjQ3LCA1NywgMzQsIDIyMCwgNywgNTcsIDM0LCAyMzMsIDEyMCwgNTcsIDM0LCAyNDksIDk1LCA1NywgMzQsIDIxOSwgCi0gICAgMTY5LCA1NywgMzQsIDIzMCwgMTg1LCA1NywgMzQsIDIyMywgMTIxLCA1NywgMzQsIDIxMywgMTkzLCA1NywgMzQsIDIyNywgCi0gICAgNTYsIDU3LCAzNCwgMjE2LCA2MSwgNTcsIDM0LCAyNDYsIDM1LCA1NywgMzQsIDIyMCwgMTc1LCAyMTcsIDk4LCA1NywgMzQsIAotICAgIDI0NiwgNzIsIDI0OSwgMjAzLCA1NywgMzQsIDE4NCwgMjE5LCA0OCwgNTcsIDM0LCAxMTcsIDI0MSwgMjQ5LCA1NywgMzQsIAotICAgIDIyMCwgMTgwLCA1NywgMzQsIDI1MSwgOTUsIDU3LCAzNCwgMjE5LCAyNDksIDU3LCAzNCwgMjUxLCA2NSwgNTcsIDM0LCAKLSAgICAyMTksIDc4LCA1NywgMzQsIDI0MSwgMjExLCA1NywgMzQsIDI0MiwgMTAsIDU3LCAzNCwgMjQ3LCA3NywgNTcsIDM0LCAyNDEsIAotICAgIDI1NCwgNTcsIDM0LCAyNTEsIDgxLCA1NywgMzQsIDIyNCwgMzksIDU3LCAzNCwgMjIyLCAxMDYsIDU3LCAzNCwgMjQ3LCAKLSAgICAxNTEsIDU3LCAzNCwgMjUzLCA4NCwgNTcsIDM0LCAyMTksIDE2NiwgNTcsIDM0LCAyMjgsIDE2MiwgNTcsIDM0LCAyMTgsIAotICAgIDIzOCwgNTcsIDM0LCAyMjIsIDEyOSwgNTcsIDM0LCAyMzAsIDE5OCwgNTcsIDM0LCAyMTYsIDE5MywgNTcsIDM0LCAyMzMsIAotICAgIDE0NSwgNTcsIDM0LCAyMTksIDY5LCA1NywgMzQsIDI0OCwgMzksIDU3LCAzNCwgMjE0LCA1LCA1NywgMzQsIDI0NywgMTAwLCAKLSAgICAyMjgsIDE2MiwgNTcsIDM0LCAyNDksIDE1NCwgNTcsIDM0LCAyNDMsIDE5NCwgNTcsIDM0LCAyNDksIDIxNCwgNTcsIDM0LCAKLSAgICAyMTksIDgyLCA1NywgMzQsIDIxNCwgMjQsIDU3LCAzNCwgMjQ0LCA2NSwgNTcsIDM0LCAyNDksIDIxMSwgNTcsIDM0LCAyNDQsIAotICAgIDEyOSwgNTcsIDM0LCA1MSwgMjEzLCAxNjYsIDU3LCAzNCwgMTUxLCAyMTYsIDE5NCwgMjE2LCAxNDYsIDU3LCAzNCwgMjIwLCAKLSAgICAxNywgNTcsIDM0LCAyNDQsIDEzOSwgNTcsIDM0LCAyNDksIDg0LCA1NywgMzQsIDI0NywgOTAsIDU3LCAzNCwgMjI1LCA2MiwgCi0gICAgNTcsIDM0LCAyMzUsIDEzNSwgNTcsIDM0LCAyMzEsIDEzMSwgNTcsIDM0LCAyMTcsIDQxLCA1NywgMzQsIDIxOCwgMTkwLCAKLSAgICA1NywgMzQsIDIzMywgMywgNTcsIDM0LCAyMTUsIDEwMywgNTcsIDM0LCAyNDQsIDg5LCA1NywgMzQsIDI1MSwgMTIyLCA2NSwgCi0gICAgMjQ5LCAxODcsIDU3LCAzNCwgMjIwLCAxMTQsIDU3LCAzNCwgMjQ2LCA3MiwgMjE3LCAxOTUsIDU3LCAzNCwgMjEzLCAyMzgsIAotICAgIDU3LCAzNCwgMjIwLCAzMSwgNTcsIDM0LCAyNDcsIDEzOSwgNTcsIDM0LCAyNDQsIDIzOSwgNTcsIDM0LCAyMTksIDE5MywgCi0gICAgNTcsIDM0LCA2OCwgNTcsIDM0LCAyMTksIDcxLCA1NywgMzQsIDIxOSwgMTgwLCA1NywgMzQsIDIxNiwgMjEyLCA1NywgMzQsIAotICAgIDI0MiwgMTIzLCA1NywgMzQsIDI1MCwgMTUxLCA1NywgMzQsIDIxOSwgOTksIDU3LCAzNCwgMjUyLCA3MywgNTcsIDM0LCAKLSAgICAyMjMsIDE4NCwgNTcsIDM0LCAyMjAsIDkzLCA1NywgMzQsIDIzNSwgMTMwLCA1NywgMzQsIDIyOSwgMTcxLCA1NywgMzQsIAotICAgIDIyMCwgMjM3LCA1NywgMzQsIDI0NCwgMTE4LCA1NywgMzQsIDIyNywgNzUsIDU3LCAzNCwgMjU0LCAyNywgNTcsIDM0LCAKLSAgICAyMjUsIDE2MiwgNTcsIDM0LCAyNDUsIDE4MywgNTcsIDM0LCAyNTEsIDYwLCA1NywgMzQsIDIzMSwgMTUxLCA1NywgMzQsIAotICAgIDIzMCwgMjUyLCA1NywgMzQsIDIyMSwgNzYsIDU3LCAzNCwgMjUzLCAxNjcsIDU3LCAzNCwgMjMwLCAxOTMsIDU3LCAzNCwgCi0gICAgMjE2LCAyMzIsIDU3LCAzNCwgMjI3LCAzMSwgNTcsIDM0LCAyNTEsIDEyNCwgNTcsIDM0LCAyMTksIDY3LCA1NywgMzQsIAotICAgIDI0OSwgMTYzLCA1NywgMzQsIDI0MiwgMTE2LCA1NywgMzQsIDIxNywgNjAsIDU3LCAzNCwgMjM1LCAyMTQsIDU3LCAzNCwgCi0gICAgMjUxLCAxMzQsIDU3LCAzNCwgMjE0LCA0MiwgMjQ1LCAxMDMsIDU3LCAzNCwgMjQ5LCAxODYsIDU3LCAzNCwgMjEzLCAyNDksIAotICAgIDU3LCAzNCwgMjIyLCA4OSwgNTcsIDM0LCAyNDAsIDIzNSwgNTcsIDM0LCAyMTksIDE5MCwgNTcsIDM0LCAyMTQsIDI1NCwgCi0gICAgNTcsIDM0LCAyNTEsIDI0OCwgNTcsIDM0LCAyMjUsIDIwNSwgNTcsIDM0LCAyNTIsIDkyLCA1NywgMzQsIDIyMCwgMjMyLCAKLSAgICA1NywgMzQsIDIyNCwgMywgNTcsIDM0LCAyMjMsIDM3LCA1NywgMzQsIDI0NCwgMSwgNTcsIDM0LCAyNTEsIDEyMywgNTcsIAotICAgIDM0LCAyNTAsIDE2MCwgNTcsIDM0LCAyNTEsIDE0OSwgNTcsIDM0LCAyMzAsIDE5NSwgNTcsIDM0LCAyMTQsIDQxLCA1NywgCi0gICAgMzQsIDI0OSwgMjIwLCA1NywgMzQsIDIxMywgMjIxLCA1NywgMzQsIDI0NywgMTMyLCA1NywgMzQsIDIxNCwgMTQyLCA1NywgCi0gICAgMzQsIDI0MiwgMTQyLCA1NywgMzQsIDIzMiwgMTkwLCA1NywgMzQsIDI0MywgNjQsIDU3LCAzNCwgMjMwLCAxODgsIDU3LCAKLSAgICAzNCwgMjIwLCAyMiwgNTcsIDM0LCAyMjAsIDE3NSwgMjE4LCAyNiwgMjUxLCAxNjAsIDU3LCAzNCwgMjI0LCA1MCwgNTcsIAotICAgIDM0LCAyNTEsIDEzMCwgNTcsIDM0LCAyMTMsIDE4NSwgNTcsIDM0LCAyNDQsIDE1OCwgNTcsIDM0LCAyMzMsIDc2LCA1NywgCi0gICAgMzQsIDIxOCwgNywgMjMzLCA3NiwgNTcsIDM0LCAyMzMsIDcyLCA1NywgMzQsIDIxOSwgMjE3LCA1NywgMzQsIDIzMywgNzcsIAotICAgIDU3LCAzNCwgMjEzLCAyMjQsIDU3LCAzNCwgMjQ0LCAxNSwgNTcsIDM0LCAyNDUsIDE3MywgNTcsIDM0LCAyNDEsIDIxOSwgCi0gICAgNTcsIDM0LCAyNDMsIDIyNiwgNTcsIDM0LCAyNDAsIDIzMiwgNTcsIDM0LCAyNTEsIDExOSwgNTcsIDM0LCAyMTgsIDE0LCAKLSAgICA1NywgMzQsIDI0MiwgMTYsIDU3LCAzNCwgMjQ0LCA4MiwgNTcsIDM0LCAyMjIsIDE5NywgMjEzLCAyMjEsIDU3LCAzNCwgCi0gICAgMjUwLCAxNTMsIDU3LCAzNCwgMjQyLCAxOTgsIDU3LCAzNCwgMjQ0LCA1OSwgNTcsIDM0LCAyNTEsIDE2MCwgNTcsIDM0LCAKLSAgICAyMjIsIDE3MiwgNTcsIDM0LCAyNDgsIDI1LCA1NywgMzQsIDIxMywgMjQzLCA1NywgMzQsIDI0MSwgMTk0LCA1NywgMzQsIAotICAgIDIxMywgMzIsIDU3LCAzNCwgMjMxLCA1LCA1NywgMzQsIDI1MSwgMTQ0LCA1NywgMzQsIDI0NSwgMTEzLCA1NywgMzQsIDI0MywgCi0gICAgMjE0LCA1NywgMzQsIDIxNiwgMTY3LCA1NywgMzQsIDI0NiwgMzcsIDU3LCAzNCwgMjI0LCAzMywgNTcsIDM0LCAyMjgsIAotICAgIDE2NCwgNTcsIDM0LCAyNDUsIDgsIDU3LCAzNCwgMjE2LCAyMjgsIDU3LCAzNCwgMjQ2LCA1MCwgNTcsIDM0LCAyMTYsIDU1LCAKLSAgICA1NywgMzQsIDI0NCwgMTcsIDEwNSwgMjQ3LCAyNDQsIDEzNywgNDIsIDIxMSwgMjExLCAyMjMsIDE0OCwgMTA1LCAyNDcsIAotICAgIDI0NCwgMTM3LCA3OCwgMjExLCAyMTEsIDU1LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDQyLCAyMTEsIDIxMSwgMjMxLCAzNywgCi0gICAgMjQsIDIyMywgMTQ4LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDc4LCAyMTEsIDIxMSwgMjMxLCAzNywgMjQsIDU1LCAxMDUsIAotICAgIDI0NywgMjQ0LCAxMzcsIDI0MywgMjAwLCAyMTgsIDIxMCwgMTA1LCAyNDcsIDI0NCwgMTM3LCAyMTgsIDIxMSwgMjQzLCAKLSAgICAyMTMsIDQ5LCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgNTUsIDEwNSwgMjQ3LCAyNDQsIDEzNywgCi0gICAgMjE4LCAyMTEsIDI0MywgMjEzLCAyMzMsIDcwLCAxMDUsIDI0NywgMjQ0LCAxMzcsIDIxOCwgMjExLCAyNDMsIDIxMywgMjE1LCAKLSAgICAxMzEsIDIzMywgNzAsIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMTUsIDEzMSwgMjIzLCAxNDgsIAotICAgIDEwNSwgMjQ3LCAyNDQsIDEzNywgMjE4LCAyMTEsIDI0MywgMjEzLCAyMzIsIDE2MywgMjMzLCA3MCwgMTA1LCAyNDcsIDI0NCwgCi0gICAgMTM3LCAyMjYsIDI0NiwgMTA1LCAyMTksIDIwNiwgMTA1LCAyNDksIDE1NywgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjQ3LCAKLSAgICAxMjksIDc3LCAyMzUsIDEzMSwgMjM1LCAyMzMsIDIxOSwgOTgsIDg3LCAxMDUsIDIzNSwgMTU2LCA3NywgMTA1LCAyNDksIAotICAgIDE4OSwgNzcsIDEwNSwgNTAsIDIxMiwgNzksIDQyLCAyNTQsIDE5LCAxMjUsIDQ2LCAyNTQsIDE5LCAxMjUsIDQyLCA1MSwgCi0gICAgMjU0LCAxOSwgMTI1LCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgNDIsIDI0OSwgMTAwLCAxMjUsIDQ2LCAyNDksIDEwMCwgMTI1LCAKLSAgICA0MiwgNjcsIDI0OSwgMTAwLCAxMjUsIDQ2LCA2NywgMjQ5LCAxMDAsIDEyNSwgNDIsIDgzLCAyMzMsIDQ0LCAxMjUsIDQ2LCAKLSAgICA4MywgMjMzLCA0NCwgMTI1LCAyMjUsIDExNywgNzcsIDI0MywgOCwgNzcsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgCi0gICAgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCA0MiwgNjcsIDIzMywgNDQsIDEyNSwgNDYsIDY3LCAyMzMsIDQ0LCAxMjUsIAotICAgIDQyLCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQ2LCA2NywgMjE2LCAyMTksIDIyMCwgMjMzLCAxMjUsIDQyLCA2NywgCi0gICAgNDEsIDEyNSwgNDYsIDY3LCA0MSwgMTI1LCAyMTQsIDIwLCAyNDgsIDEwMSwgMjIzLCAyMDIsIDUxLCAyMjUsIDcyLCAyMjQsIAotICAgIDE0MywgNzcsIDUxLCAyMjUsIDcyLCAyMjQsIDE0MywgNzcsIDExNSwgNTEsIDIyNSwgNzIsIDIyNCwgMTQzLCA3NywgMjI1LCAKLSAgICAxMTcsIDE1MiwgMjQ0LCAxNTgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxMTYsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxMDksIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAxNjYsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxNjMsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxODAsIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAxODksIDI0MSwgMjQ3LCAyMjgsIDU0LCAxOTgsIDI0MSwgMjQ3LCAyMjgsIDU0LCAxOTUsIDI0MSwgCi0gICAgMjQ3LCAyMjgsIDU0LCAyMDAsIDEwNSwgMjMzLCAyOSwgMTYwLCA3NywgMTA1LCAyMjMsIDEyNSwgMTYwLCA3NywgMTA1LCAKLSAgICAyNDcsIDI1MSwgMTYwLCA3NywgMTA1LCAyNDUsIDg3LCAxNjAsIDc3LCAyMywgMjIwLCA4MSwgNjIsIDE2MCwgNzcsIDIzLCAKLSAgICA1MSwgNjIsIDE2MCwgNzcsIDIxNCwgMTYsIDI0OCwgMTAxLCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCA3NywgNzEsIDIzNCwgCi0gICAgMjM4LCAyMjMsIDIyOCwgMiwgMjE0LCAxMTYsIDIxOSwgMjE4LCA3NywgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMTUyLCAKLSAgICAyMTUsIDEzMSwgMjQyLCA5LCA3MSwgMjM0LCAyMzgsIDIyMywgMjI4LCAyLCAyMTQsIDExNiwgMjE5LCAyMTgsIDE1MiwgCi0gICAgMjE1LCAxMzEsIDI0MiwgOSwgNzEsIDIzNCwgMjM4LCAyMjMsIDIyOCwgMTUyLCAyMzIsIDE2MywgMjQyLCA5LCAzNiwgMjI1LCAKLSAgICAxMTcsIDc3LCAxMDUsIDIwMSwgMjMyLCAyNDMsIDI0NCwgMTE1LCAyMjEsIDU4LCA4NywgMjQxLCAyNDcsIDIyOCwgNTQsIAotICAgIDIxNywgMjAwLCAyNDEsIDI0NywgMjI4LCA1NCwgMjE2LCAzOCwgMjQxLCAyNDcsIDIyOCwgNTQsIDIxNywgMTE1LCA3MSwgCi0gICAgMTA1LCAyMzUsIDE1NiwgNzcsIDIzMSwgMjAzLCA3NywgMjI2LCAxMjcsIDI1NCwgNDksIDc3LCAxMDUsIDQzLCAyMzUsIAotICAgIDIzNSwgMTA1LCAxNTEsIDI0NCwgNzUsIDIxOSwgMjA2LCAxNDIsIDEsIDMsIDYxLCAxNDIsIDEsIDYxLCAxNDIsIDEsIDMsIAotICAgIDcyLCAxNDIsIDEsIDcyLCAxNDIsIDEsIDMsIDY5LCAxNDIsIDEsIDY5LCAxNDIsIDEsIDMsIDc0LCAxNDIsIDEsIDc0LCAKLSAgICAxNDIsIDEsIDMsIDc1LCAxNDIsIDEsIDc1LCAxNDIsIDEsIDE4MSwgMTQyLCAxLCAyNDMsIDExMCwgMTQyLCAxLCAyMzQsIAotICAgIDEwMSwgMTQyLCAxLCAyNDIsIDE5MCwgMTQyLCAxLCAyMzMsIDIzOCwgMTQyLCAxLCAyNDIsIDkyLCAxNDIsIDEsIDIzNCwgCi0gICAgMTg4LCAxNDIsIDEsIDI0MywgMzgsIDE0MiwgMSwgMjM0LCAzNywgMTQyLCAxLCAyNDIsIDE1MCwgMTQyLCAxLCAyMjIsIAotICAgIDIwMiwgMTQyLCAxLCAyMTIsIDEwOSwgMTQyLCAxLCAyMjAsIDExNywgMTQyLCAxLCAyMTIsIDM3LCAxNDIsIDEsIDIxOSwgCi0gICAgMjcsIDE0MiwgMSwgMjEyLCA4LCAxNDIsIDEsIDIyMiwgMTAwLCAxNDIsIDEsIDIxMiwgODcsIDE0MiwgMSwgMjE5LCAyNDIsIAotICAgIDE0MiwgMSwgMjEyLCAxNiwgMTQyLCAxLCAyMTgsIDUyLCAxNDIsIDEsIDI0OCwgMTY0LCAxNDIsIDEsIDIxNywgNzEsIDE0MiwgCi0gICAgMSwgMjQ3LCAyMTEsIDE0MiwgMSwgMywgMjE2LCA4MiwgMTQyLCAxLCAyMTYsIDgyLCAxNDIsIDEsIDI0NiwgMzMsIDE0MiwgCi0gICAgMSwgMjE3LCAyMjksIDE0MiwgMSwgMjQ4LCA0MSwgMTQyLCAxLCAxMDgsIDE0MiwgMSwgMjQ3LCA5OSwgMTQyLCAxLCAyMDUsIAotICAgIDE0MiwgMSwgMjI5LCA2NCwgMTQyLCAxLCAyMjgsIDkyLCAxNDIsIDEsIDIyOSwgMTg3LCAxNDIsIDEsIDIyOCwgMTg1LCAKLSAgICAxNDIsIDEsIDE1OSwgMTQyLCAxLCAyNTIsIDEwNywgMTQyLCAxLCAxOTMsIDE0MiwgMSwgMjQxLCAxNjUsIDE0MiwgMSwgCi0gICAgMjUxLCAxODQsIDE0MiwgMSwgMjI1LCAyNDAsIDE0MiwgMSwgMjQwLCAyMTIsIDE0MiwgMSwgMjUxLCA1NCwgMTQyLCAxLCAKLSAgICAyMjUsIDM1LCAxNDIsIDEsIDI0MSwgMjIyLCAxNDIsIDEsIDI1MSwgMjUxLCAxNDIsIDEsIDIyNiwgOTYsIDE0MiwgMSwgCi0gICAgMjQxLCA1NCwgMTQyLCAxLCAyNTEsIDEyOCwgMTQyLCAxLCAyMjUsIDE1MCwgMTQyLCAxLCAxODgsIDE0MiwgMSwgMjMxLCAKLSAgICA0MiwgMTQyLCAxLCAyMzAsIDE3MiwgMTQyLCAxLCAyMzEsIDE1NiwgMTQyLCAxLCAyMzAsIDIzMSwgMTQyLCAxLCAzLCAxODYsIAotICAgIDE0MiwgMSwgMTg2LCAxNDIsIDEsIDMsIDIxMiwgMjAzLCAxNDIsIDEsIDIxMiwgMjAzLCAxNDIsIDEsIDMsIDIxMiwgMjM1LCAKLSAgICAxNDIsIDEsIDIxMiwgMjM1LCAxNDIsIDEsIDIwMywgMTQyLCAxLCAyMjMsIDE4OCwgMTQyLCAxLCAyMjMsIDUxLCAxNDIsIDEsIAotICAgIDIyNCwgMjEsIDE0MiwgMSwgMjIzLCAxMTIsIDE0MiwgMSwgMywgMjE0LCA0OSwgMTQyLCAxLCAyMTQsIDQ5LCAxNDIsIDEsIAotICAgIDIxMywgMjM1LCAxNDIsIDEsIDIxNCwgNiwgMTQyLCAxLCAyMTMsIDIxNCwgMTQyLCAxLCAyMDQsIDE0MiwgMSwgMjE0LCA5OSwgCi0gICAgMTQyLCAxLCAzLCAxODEsIDE0MiwgMSwgMywgMjM0LCAxODgsIDM3LCAyMzQsIDIwNiwgMjE0LCAxMTYsIDIxOSwgMjE4LCAKLSAgICA3NywgMzcsIDIzNCwgMjA2LCAyMjEsIDc1LCAyMTksIDIxOCwgNzcsIDIzNCwgMjA2LCAyMTQsIDExNiwgMjE5LCAyMTgsIAotICAgIDc3LCAyMzQsIDIwNiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCAxNDIsIDIzNSwgMTU2LCA3NywgMTQyLCAyMTQsIDExNiwgCi0gICAgMjM1LCAxNTYsIDc3LCAxNDIsIDI0NywgMTczLCAyMTIsIDIxNiwgMjM0LCAyMDYsIDUxLCAyNDAsIDE2MCwgNTYsIDEsIDMsIAotICAgIDYxLCA1NiwgMSwgNjEsIDU2LCAxLCAzLCA3MiwgNTYsIDEsIDcyLCA1NiwgMSwgMywgNjksIDU2LCAxLCA2OSwgNTYsIDEsIAotICAgIDMsIDc0LCA1NiwgMSwgNzQsIDU2LCAxLCAzLCA3NSwgNTYsIDEsIDc1LCA1NiwgMSwgMTgxLCA1NiwgMSwgMjQzLCAxMTAsIAotICAgIDU2LCAxLCAyMzQsIDEwMSwgNTYsIDEsIDI0MiwgMTkwLCA1NiwgMSwgMjMzLCAyMzgsIDU2LCAxLCAyNDIsIDkyLCA1NiwgMSwgCi0gICAgMjM0LCAxODgsIDU2LCAxLCAyNDMsIDM4LCA1NiwgMSwgMjM0LCAzNywgNTYsIDEsIDI0MiwgMTUwLCA1NiwgMSwgMjIyLCAKLSAgICAyMDIsIDU2LCAxLCAyMTIsIDEwOSwgNTYsIDEsIDIyMCwgMTE3LCA1NiwgMSwgMjEyLCAzNywgNTYsIDEsIDIxOSwgMjcsIAotICAgIDU2LCAxLCAyMTIsIDgsIDU2LCAxLCAyMjIsIDEwMCwgNTYsIDEsIDIxMiwgODcsIDU2LCAxLCAyMTksIDI0MiwgNTYsIDEsIAotICAgIDIxMiwgMTYsIDU2LCAxLCAyMTgsIDUyLCA1NiwgMSwgMjQ4LCAxNjQsIDU2LCAxLCAyMTcsIDcxLCA1NiwgMSwgMjQ3LCAKLSAgICAyMTEsIDU2LCAxLCAzLCAyMTYsIDgyLCA1NiwgMSwgMjE2LCA4MiwgNTYsIDEsIDI0NiwgMzMsIDU2LCAxLCAyMTcsIDIyOSwgCi0gICAgNTYsIDEsIDI0OCwgNDEsIDU2LCAxLCAxMDgsIDU2LCAxLCAyNDcsIDk5LCA1NiwgMSwgMjA1LCA1NiwgMSwgMjI5LCA2NCwgCi0gICAgNTYsIDEsIDIyOCwgOTIsIDU2LCAxLCAyMjksIDE4NywgNTYsIDEsIDIyOCwgMTg1LCA1NiwgMSwgMTU5LCA1NiwgMSwgMjUyLCAKLSAgICAxMDcsIDU2LCAxLCAxOTMsIDU2LCAxLCAyNDEsIDE2NSwgNTYsIDEsIDI1MSwgMTg0LCA1NiwgMSwgMjI1LCAyNDAsIDU2LCAKLSAgICAxLCAyNDAsIDIxMiwgNTYsIDEsIDI1MSwgNTQsIDU2LCAxLCAyMjUsIDM1LCA1NiwgMSwgMjQxLCAyMjIsIDU2LCAxLCAyNTEsIAotICAgIDI1MSwgNTYsIDEsIDIyNiwgOTYsIDU2LCAxLCAyNDEsIDU0LCA1NiwgMSwgMjUxLCAxMjgsIDU2LCAxLCAyMjUsIDE1MCwgCi0gICAgNTYsIDEsIDE4OCwgNTYsIDEsIDIzMSwgNDIsIDU2LCAxLCAyMzAsIDE3MiwgNTYsIDEsIDIzMSwgMTU2LCA1NiwgMSwgMjMwLCAKLSAgICAyMzEsIDU2LCAxLCAzLCAxODYsIDU2LCAxLCAxODYsIDU2LCAxLCAzLCAyMTIsIDIwMywgNTYsIDEsIDIxMiwgMjAzLCA1NiwgCi0gICAgMSwgMywgMjEyLCAyMzUsIDU2LCAxLCAyMTIsIDIzNSwgNTYsIDEsIDIwMywgNTYsIDEsIDIyMywgMTg4LCA1NiwgMSwgMjIzLCAKLSAgICA1MSwgNTYsIDEsIDIyNCwgMjEsIDU2LCAxLCAyMjMsIDExMiwgNTYsIDEsIDMsIDIxNCwgNDksIDU2LCAxLCAyMTQsIDQ5LCAKLSAgICA1NiwgMSwgMjEzLCAyMzUsIDU2LCAxLCAyMTQsIDYsIDU2LCAxLCAyMTMsIDIxNCwgNTYsIDEsIDIwNCwgNTYsIDEsIDIxNCwgCi0gICAgOTksIDU2LCAxLCAzLCAxODEsIDU2LCAxLCAzLCAyMzQsIDE4OCwgNTYsIDEsIDIxNSwgMSwgNTYsIDEsIDIxNCwgMTU0LCAKLSAgICA1NiwgMSwgMjE0LCAyMzIsIDU2LCAxLCAyMTQsIDExOSwgNTYsIDIzMSwgMzcsIDI0NywgNzQsIDIzNCwgMjA2LCAyMjUsIAotICAgIDU3LCAyMTksIDIxOCwgNzcsIDU2LCAyMzUsIDE1NiwgNzcsIDU2LCAyMTQsIDExNiwgMjM1LCAxNTYsIDc3LCA1NiwgMjQ3LCAKLSAgICAxNzMsIDIzNCwgOCwgMjAyLCAxLCAyNTMsIDc0LCAyMDIsIDEsIDIyNiwgMjI5LCAyMDIsIDEsIDE4MywgMjAyLCAxLCAyNDQsIAotICAgIDIzMCwgMjAyLCAxLCAyNDksIDMsIDIwMiwgMSwgMjE4LCA5OSwgMjAyLCAxLCAyMDQsIDIwMiwgMSwgMTUwLCAyMDIsIDEsIAotICAgIDI0MywgMTc3LCAyMDIsIDEsIDIzNSwgMjcsIDIwMiwgMSwgMjQyLCA0MSwgMjAyLCAxLCAyMzUsIDE0MiwgMjAyLCAxLCAKLSAgICAyMjQsIDI0MCwgMjAyLCAxLCAyMTMsIDE2NiwgMjAyLCAxLCAyMTIsIDc2LCAyMDIsIDEsIDI1MCwgOTMsIDIwMiwgMSwgCi0gICAgMjIxLCAyNiwgMjAyLCAxLCAxNDksIDIwMiwgMSwgMjEyLCAxNTIsIDIwMiwgMSwgMjUwLCAyNTIsIDIwMiwgMSwgMTk3LCAKLSAgICAyMDIsIDEsIDYxLCAyMDIsIDEsIDc1LCAyMDIsIDEsIDc0LCAyMDIsIDEsIDI0NSwgMTU0LCAyMDIsIDEsIDI1NCwgMTA4LCAKLSAgICAyMDIsIDEsIDI0NSwgMTUyLCAyMDIsIDEsIDI1MywgMTA4LCAyMDIsIDEsIDIyNywgMiwgMjAyLCAxLCAyNTQsIDMyLCAyMDIsIAotICAgIDEsIDI0NSwgMTA4LCAyMDIsIDEsIDI1NCwgMjQsIDIwMiwgMSwgMjQ1LCA5NiwgMjAyLCAxLCAyNDUsIDU1LCAyMDIsIDEsIAotICAgIDcyLCAyMDIsIDEsIDY5LCAyMDIsIDEsIDIzNSwgMTU0LCAyMDIsIDEsIDIxNSwgNzksIDIwMiwgMSwgMjI5LCAxNjEsIDIwMiwgCi0gICAgMSwgMjQyLCAxNTQsIDIwMiwgMSwgMjM2LCAyOSwgMjMsIDEsIDIzNCwgNjcsIDIzLCAxLCAyMTksIDE1MCwgMjMsIDEsIAotICAgIDIzNCwgNjAsIDIzLCAxLCAyMjksIDU3LCAyMywgMSwgMjI5LCA1NSwgMjMsIDEsIDIyOSwgNTQsIDIzLCAxLCAyMTcsIDU1LCAKLSAgICAyMywgMSwgMjE5LCAxMzksIDIzLCAxLCAyMjMsIDE3OSwgMjMsIDEsIDIyMywgMTc0LCAyMywgMSwgMjIzLCAxNzEsIDIzLCAKLSAgICAxLCAyMjMsIDE2NCwgMjMsIDEsIDIyMywgMTU5LCAyMywgMSwgMjIzLCAxNTQsIDIzLCAxLCAyMjMsIDE2NSwgMjMsIDEsIAotICAgIDIyMywgMTc3LCAyMywgMSwgMjMxLCAzMCwgMjMsIDEsIDIyNSwgMjI3LCAyMywgMSwgMjE5LCAxNDcsIDIzLCAxLCAyMjUsIAotICAgIDIxNiwgMjMsIDEsIDIyMCwgNzYsIDIzLCAxLCAyMTksIDE0NCwgMjMsIDEsIDIzNiwgNTEsIDIzLCAxLCAyNDksIDIzOSwgCi0gICAgMjMsIDEsIDIxOSwgMTU0LCAyMywgMSwgMjUwLCA0MywgMjMsIDEsIDIzNCwgMTE2LCAyMywgMSwgMjE3LCAxMjYsIDIzLCAxLCAKLSAgICAyMjYsIDcsIDIzLCAxLCAyNDEsIDE1OCwgMjMsIDEsIDYxLCAyMywgMSwgMjU0LCAxNDgsIDIzLCAxLCAxODYsIDIzLCAxLCAKLSAgICAyMTMsIDgwLCAyMywgMSwgMjQ1LCA3NiwgMjMsIDEsIDc0LCAyMywgMSwgMjEzLCAyNywgMjMsIDEsIDIxMywgMzgsIDIzLCAKLSAgICAxLCA3NSwgMjMsIDEsIDIxNCwgNDksIDIzLCAxLCAyMTQsIDQ2LCAyMywgMSwgMjI3LCA5OSwgMjMsIDEsIDIxMiwgMjM1LCAKLSAgICAyMywgMSwgNjksIDIzLCAxLCAyMTMsIDI1MiwgMjMsIDEsIDIxNCwgNiwgMjMsIDEsIDIxMywgMjM1LCAyMywgMSwgMjEyLCAKLSAgICAyMDMsIDIzLCAxLCAyNDUsIDIyLCAyMywgMSwgMjEyLCAyNTUsIDIzLCAxLCA3MiwgMjMsIDI0NCwgNzIsIDIzLCAxLCAyMTksIAotICAgIDE0OCwgMjMsIDEsIDIyOSwgNDcsIDIzLCAxLCAyMjksIDQ5LCAyMywgMSwgMjI5LCA1MiwgMjMsIDEsIDIyMywgMTcyLCAyMywgCi0gICAgMSwgMjIzLCAxNTMsIDIzLCAxLCAyMjMsIDE2MSwgMjMsIDEsIDIyMywgMTY2LCAyMywgMSwgMjIzLCAxNTEsIDIzLCAxLCAKLSAgICAyMzEsIDIzLCAyMywgMSwgMjMxLCAyMCwgMjMsIDEsIDIzMSwgMjQsIDIzLCAxLCAyMzQsIDIyNiwgMjMsIDEsIDIyNSwgCi0gICAgMjIyLCAyMywgMSwgMjI1LCAyMDgsIDIzLCAxLCAyMjUsIDIxNCwgMjMsIDEsIDIyNSwgMjExLCAyMywgMSwgMjI1LCAyMjUsIAotICAgIDIzLCAxLCAyMjUsIDIwOSwgMjMsIDEsIDIzNCwgMjI0LCAyMywgMSwgMjM0LCAyMjIsIDIzLCAxLCAyMjAsIDY5LCAyMywgMSwgCi0gICAgMjIwLCA2NywgMjMsIDEsIDIyMCwgNTksIDIzLCAxLCAyMjAsIDY0LCAyMywgMSwgMjIwLCA3NCwgMjMsIDEsIDIyNiwgMTYwLCAKLSAgICAyMywgMSwgMjE5LCAxNTEsIDIzLCAxLCAyMTMsIDE3LCAyMywgMSwgMjEzLCAxMywgMjMsIDEsIDIxMywgMTQsIDIzLCAxLCAKLSAgICAyMzQsIDIyNSwgMjMsIDEsIDIxOSwgMTUyLCAyMywgMSwgMjEzLCAyMywgMjMsIDEsIDIxMiwgMjI5LCAyMywgMSwgMjEyLCAKLSAgICAyMjgsIDIzLCAxLCAyMTIsIDIzMSwgMjMsIDEsIDIxMiwgMTk0LCAyMywgMSwgMjEyLCAxOTUsIDIzLCAxLCAyMTIsIDE5OCwgCi0gICAgMjMsIDEsIDI1MywgMjA0LCAyMywgMSwgMjUzLCAxOTgsIDEwNSwgMjU0LCAxMCwgMjMyLCAyMzIsIDc3LCAxMDUsIDI1NCwgCi0gICAgMTAsIDIyMywgMjAzLCA3NywgMTA1LCAyNTQsIDEwLCAxMjIsIDc3LCAxMDUsIDI1NCwgMTAsIDExNywgNzcsIDEwNSwgMjU0LCAKLSAgICAxMCwgMTMzLCA3NywgMTA1LCAyNTQsIDEwLCAyNDMsIDIzNywgNzcsIDEwNSwgMjU0LCAxMCwgMjE2LCAyMjcsIDc3LCAxMDUsIAotICAgIDI1NCwgMTAsIDIzMSwgMzcsIDc3LCAxMDUsIDI1NCwgMTAsIDI1MSwgMTAxLCA3NywgMTA1LCAyNTQsIDEwLCAyNDQsIDYxLCAKLSAgICA3NywgMTA1LCAyNTQsIDEwLCAyMjIsIDk1LCA3NywgMTA1LCAyNTQsIDEwLCAyMTcsIDEyMiwgNzcsIDEwNSwgMjU0LCAxMCwgCi0gICAgMjQzLCAyMzAsIDc3LCAxMDUsIDI1NCwgMTAsIDI0MSwgMjA4LCA3NywgMTA1LCAyNTQsIDEwLCAyNDUsIDE4MCwgNzcsIAotICAgIDEwNSwgMjU0LCAxMCwgMjMxLCAyNDksIDc3LCAyMDIsIDEsIDI1MSwgNTQsIDIwMiwgMSwgMjEyLCAzNywgMjAyLCAxLCAKLSAgICAyMzUsIDExMCwgMjAyLCAxLCAyNDIsIDkyLCAyMDIsIDEsIDI0NSwgMTY1LCAyMDIsIDEsIDI0NSwgOTMsIDIwMiwgMSwgCi0gICAgMjI3LCA0OSwgMjAyLCAxLCAyMjcsIDUzLCAyMDIsIDEsIDIzNSwgMTc3LCAyMDIsIDEsIDI1NCwgMTIsIDIwMiwgMSwgMjM1LCAKLSAgICAyMjEsIDIwMiwgMSwgMjE1LCAxMzksIDIwMiwgMSwgMjM2LCAxMSwgMjAyLCAxLCAyMjksIDE0MiwgMjAyLCAxLCAyNTQsIAotICAgIDEwMiwgMjAyLCAxLCAyNTMsIDEwMywgMjAyLCAxLCAyNTQsIDQ1LCAyMDIsIDEsIDIyNywgNzAsIDIwMiwgMSwgMjI3LCA1NSwgCi0gICAgMjAyLCAxLCAyMzUsIDIxOCwgMjAyLCA0MCwgMSwgMjI2LCAyMjksIDIwMiwgNDAsIDEsIDIxOCwgOTksIDIwMiwgNDAsIDEsIAotICAgIDIzNSwgMjcsIDIwMiwgNDAsIDEsIDI0MiwgNDEsIDIwMiwgMSwgMjQyLCAyMjYsIDIwMiwgMSwgMjMzLCAyNiwgMjAyLCAxLCAKLSAgICAyMTEsIDI0OSwgOSwgMjE5LCA0NSwgMjE4LCA5OSwgOSwgMjE5LCA0NSwgMjEzLCAyNDUsIDksIDIxOSwgNDUsIDIxMywgCi0gICAgMTQ2LCA5LCAyMTksIDQ1LCAyNTEsIDgsIDksIDIxOSwgNDUsIDIxOCwgMTk5LCA5LCAyMTksIDQ1LCAyNDAsIDE1MCwgOSwgCi0gICAgMjE5LCA0NSwgMjQwLCAxNTQsIDksIDIxOSwgNDUsIDI0MCwgMjE4LCA5LCAyMTksIDQ1LCAyNDAsIDE1MSwgOSwgMjE5LCAKLSAgICA0NSwgMjE4LCAxMDIsIDksIDIxOSwgNDUsIDI0MCwgMTUzLCA5LCAyMTksIDQ1LCAyNDAsIDE0OSwgOSwgMjE5LCA0NSwgCi0gICAgMjQwLCAyMTYsIDksIDIxOSwgNDUsIDI0MCwgMTUyLCA5LCAyMTksIDQ1LCAyNDAsIDE0OCwgOSwgMjE5LCA0NSwgMjA0LCA5LCAKLSAgICAyMTksIDQ1LCAyNDIsIDQxLCA5LCAyMTksIDQ1LCAxOTcsIDksIDIxOSwgNDUsIDIyNiwgMjI5LCA5LCAyMTksIDQ1LCAyMTksIAotICAgIDIwOCwgOSwgMjE5LCA0NSwgMjQ5LCAzLCA5LCAyMTksIDQ1LCAyNDAsIDE1NSwgOSwgMjE5LCA0NSwgMjQxLCAxNzUsIDksIAotICAgIDIxOSwgNDUsIDIxOCwgMTExLCA5LCAyMTksIDQ1LCAyMTgsIDE3OCwgOSwgMjE5LCA0NSwgMjE5LCAxMDcsIDksIDIxOSwgCi0gICAgNDUsIDIyMSwgMzEsIDksIDIxOSwgNDUsIDIyNiwgOTgsIDksIDIxOSwgNDUsIDIyNCwgMjQyLCA5LCAyMTksIDQ1LCAyMTYsIAotICAgIDI1MywgOSwgMjE5LCA0NSwgMjE4LCAxMDEsIDksIDIxOSwgNDUsIDIxOCwgMTg5LCA5LCAyMTksIDQ1LCAyNDAsIDE2MiwgOSwgCi0gICAgMjE5LCA0NSwgMjQwLCAxNDcsIDksIDIxOSwgNDUsIDIyNiwgMjUsIDksIDIxOSwgNDUsIDIyNCwgMjQwLCA1NiwgMSwgMywgCi0gICAgMjMzLCAyMzgsIDU2LCAxLCAzLCAyMjAsIDExNywgNTYsIDEsIDMsIDIxOSwgMjcsIDU2LCAxLCAzLCAxMDgsIDU2LCAxLCAzLCAKLSAgICAyMjgsIDkyLCA1NiwgMSwgMywgMTU5LCA1NiwgMSwgMywgMjQxLCAxNjUsIDU2LCAxLCAzLCAyNDAsIDIxMiwgNTYsIDEsIDMsIAotICAgIDI0MSwgMjIyLCA1NiwgMSwgMywgMjQxLCA1NCwgNTYsIDEsIDMsIDIzMCwgMTcyLCA1NiwgMSwgMywgMjAzLCA1NiwgMSwgMywgCi0gICAgMjIzLCAxODgsIDU2LCAxLCAzLCAyMjMsIDUxLCA1NiwgMSwgMywgMjI0LCAyMSwgNTYsIDEsIDMsIDIyMywgMTEyLCA4NiwgCi0gICAgMjMsIDIzNCwgNjcsIDg2LCAyMywgMjI5LCA1NywgODYsIDIzLCAyMTcsIDU1LCA4NiwgMjMsIDIyMywgMTc5LCA4NiwgMjMsIAotICAgIDIzMSwgMzAsIDg2LCAyMywgMjI1LCAyMjcsIDg2LCAyMywgMjIwLCA3NiwgODYsIDIzLCAyMzYsIDUxLCA4NiwgMjMsIDI0OSwgCi0gICAgMjM5LCA4NiwgMjMsIDI1MCwgNDMsIDg2LCAyMywgMjM0LCAxMTYsIDg2LCAyMywgMjE3LCAxMjYsIDg2LCAyMywgMjI2LCA3LCAKLSAgICA4NiwgMjMsIDI0MSwgMTU4LCA4NiwgMjMsIDIzNCwgNjgsIDYxLCA4NiwgMjMsIDIyOSwgNTgsIDYxLCA4NiwgMjMsIDIxNywgCi0gICAgNTYsIDYxLCA4NiwgMjMsIDIyMywgMTgwLCA2MSwgODYsIDIzLCAyMzEsIDMxLCA2MSwgODYsIDIzLCAyMjUsIDIyOCwgNjEsIAotICAgIDg2LCAyMywgMjIwLCA3NywgNjEsIDg2LCAyMywgMjM2LCA1MiwgNjEsIDg2LCAyMywgMjQ5LCAyNDAsIDYxLCA4NiwgMjMsIAotICAgIDI1MCwgNDQsIDYxLCA4NiwgMjMsIDIzNCwgMTE3LCA2MSwgODYsIDIzLCAyMTcsIDEyNywgNjEsIDg2LCAyMywgMjI2LCA4LCAKLSAgICA2MSwgODYsIDIzLCAyNDEsIDE1OSwgNjEsIDg2LCAyMywgMjQ5LCAyNDAsIDY5LCA4NiwgMjM0LCAxMiwgMTM3LCAyMjcsIAotICAgIDgzLCA4NiwgMjM0LCAxMiwgMTM3LCAxNTcsIDI0MCwgMjEyLCA4NiwgMTQzLCAxMTYsIDg2LCAxNDMsIDEwOSwgODYsIDE0MywgCi0gICAgMTY2LCA4NiwgMTQzLCAxNjMsIDg2LCAxNDMsIDE4MCwgODYsIDE0MywgMTg5LCA4NiwgMTQzLCAxOTgsIDg2LCAxNDMsIAotICAgIDE5NSwgODYsIDE0MywgMjAwLCA4NiwgMTQzLCAyMTcsIDIwMCwgODYsIDE0MywgMjMwLCAxOTgsIDg2LCAxNDMsIDI0NCwgCi0gICAgNjUsIDg2LCAxNDMsIDIxNCwgMjQsIDg2LCAxNDMsIDIxMywgMjAxLCA4NiwgMTQzLCAyMzEsIDEwNiwgODYsIDE0MywgMjQ1LCAKLSAgICAxNzksIDg2LCAxNDMsIDIxOCwgMjM4LCA4NiwgMTQzLCAyMTksIDcyLCA4NiwgMTQzLCAyNDEsIDIyOCwgODYsIDE0MywgCi0gICAgMjE5LCAyMzgsIDg2LCAxNDMsIDIzMCwgMjQsIDg2LCAxNDMsIDIxOSwgMTkyLCA4NiwgMTQzLCAyNDQsIDcxLCA4NiwgMTQzLCAKLSAgICAyNDksIDE0MCwgODYsIDE0MywgMjMzLCAxNDgsIDg2LCAxNDMsIDIyMywgMjIzLCA4NiwgMTQzLCAyNTAsIDIwMywgODYsIAotICAgIDE0MywgMjE5LCAzMCwgODYsIDE0MywgMjE4LCAyMjAsIDg2LCAxNDMsIDI0NSwgODYsIDg2LCAxNDMsIDIyMywgMjE1LCA4NiwgCi0gICAgMTQzLCAyNTQsIDU5LCA4NiwgMTQzLCAyNDQsIDk3LCA4NiwgMTQzLCAyMjMsIDIxMywgODYsIDE0MywgMjIxLCA3NiwgODYsIAotICAgIDE0MywgMjI0LCAyMCwgMzYsIDE0MywgMjI0LCAxNTcsIDM2LCAxNDMsIDIzNCwgODksIDM2LCAxNDMsIDIyMiwgMTE2LCAzNiwgCi0gICAgMTQzLCAyMzQsIDgsIDM2LCA1MCwgMjE3LCAyMDEsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAyMTYsIDM5LCAKLSAgICAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjE3LCAxMTYsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgMzYsIDUwLCAKLSAgICAyNDMsIDI0MSwgMjI3LCA2MywgODMsIDIxOSwgMTY2LCAzNiwgNTAsIDI0NCwgODQsIDIyNywgNjMsIDgzLCAyMTksIDE2NiwgCi0gICAgMzYsIDUwLCAyMjAsIDQwLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDM2LCA1MCwgMjIxLCAzOCwgMjI3LCA2MywgODMsIAotICAgIDIxOSwgMTY2LCAzNiwgNTAsIDI0NSwgMTQyLCAyMjcsIDYzLCA4MywgMjE5LCAxNjYsIDIyNiwgMTIzLCA1MiwgMzYsIDUwLCAKLSAgICAyMTYsIDM5LCAxMTYsIDM2LCA1MCwgMjE2LCAzOSwgMTA5LCAzNiwgNTAsIDIxNiwgMzksIDE2NiwgMzYsIDUwLCAyMTYsIAotICAgIDM5LCAxNjMsIDM2LCA1MCwgMjE2LCAzOSwgMTgwLCAzNiwgNTAsIDIxNiwgMzksIDE4OSwgMzYsIDUwLCAyMTYsIDM5LCAKLSAgICAxOTgsIDM2LCA1MCwgMjE2LCAzOSwgMTk1LCAzNiwgNTAsIDIxNiwgMzksIDIwMCwgMzYsIDUwLCAyMTcsIDExNSwgMzYsIAotICAgIDUwLCAyMTcsIDExNiwgMTE2LCAzNiwgNTAsIDIxNywgMTE2LCAxMDksIDM2LCA1MCwgMjE3LCAxMTYsIDE2NiwgMzYsIDUwLCAKLSAgICAyMTcsIDExNiwgMTYzLCAzNiwgNTAsIDIxNywgMTE2LCAxODAsIDM2LCAyMywgMjM0LCA2NywgMzYsIDIzLCAyMjksIDU3LCAKLSAgICAzNiwgMjMsIDIxNywgNTUsIDM2LCAyMywgMjIzLCAxNzksIDM2LCAyMywgMjMxLCAzMCwgMzYsIDIzLCAyMjUsIDIyNywgMzYsIAotICAgIDIzLCAyMjAsIDc2LCAzNiwgMjMsIDIzNiwgNTEsIDM2LCAyMywgMjQ5LCAyMzksIDM2LCAyMywgMjUwLCA0MywgMzYsIDIzLCAKLSAgICAyMzQsIDExNiwgMzYsIDIzLCAyMTcsIDEyNiwgMzYsIDIzLCAyMjYsIDcsIDM2LCAyMywgMjQxLCAxNTgsIDM2LCAyMywgCi0gICAgMjM0LCA2OCwgNjEsIDM2LCAyMywgMjI5LCA1OCwgNjEsIDM2LCAyMywgMjE3LCA1NiwgNjEsIDM2LCAyMywgMjIzLCAxODAsIAotICAgIDYxLCAzNiwgMjMsIDIzMSwgMzEsIDYxLCAzNiwgMjMsIDIyNSwgMjI4LCA2MSwgMzYsIDIzLCAyMjAsIDc3LCA2MSwgMzYsIAotICAgIDIzLCAyMzYsIDUyLCA2MSwgMzYsIDIzLCAyNDksIDI0MCwgNjEsIDM2LCAyMywgMjUwLCA0NCwgNjEsIDM2LCAyMywgMjM0LCAKLSAgICAxMTcsIDYxLCAzNiwgMjMsIDIxNywgMTI3LCA2MSwgMzYsIDIzLCAyMjYsIDgsIDYxLCAzNiwgMjMsIDI0MSwgMTU5LCA2MSwgCi0gICAgMzYsIDIzNCwgMTIsIDEzNywgMjUwLCA4NCwgMzYsIDIzNCwgMTIsIDEzNywgMjM1LCA1MCwgMzYsIDIzLCAyMzYsIDUyLCAKLSAgICA2OSwgMjM0LCAxMiwgMjE5LCA5OCwgODcsIDM2LCAxNDMsIDExNiwgMzYsIDE0MywgMTA5LCAzNiwgMTQzLCAxNjYsIDM2LCAKLSAgICAxNDMsIDE2MywgMzYsIDE0MywgMTgwLCAzNiwgMTQzLCAxODksIDM2LCAxNDMsIDE5OCwgMzYsIDE0MywgMTk1LCAzNiwgCi0gICAgMTQzLCAyMDAsIDM2LCAxNDMsIDIxNywgMjAwLCAzNiwgMTQzLCAyMzAsIDE5OCwgMzYsIDE0MywgMjQ0LCA2NSwgMzYsIAotICAgIDE0MywgMjE0LCAyNCwgMzYsIDE0MywgMjEzLCAyMDEsIDM2LCAxNDMsIDIzMSwgMTA2LCAzNiwgMTQzLCAyNDUsIDE3OSwgCi0gICAgMzYsIDE0MywgMjE4LCAyMzgsIDM2LCAxNDMsIDIxOSwgNzIsIDM2LCAxNDMsIDI0MSwgMjI4LCAzNiwgMTQzLCAyMTksIAotICAgIDIzOCwgMzYsIDE0MywgMjMwLCAyNCwgMzYsIDE0MywgMjE5LCAxOTIsIDM2LCAxNDMsIDI0NCwgNzEsIDM2LCAxNDMsIDI0OSwgCi0gICAgMTQwLCAzNiwgMTQzLCAyMzMsIDE0OCwgMzYsIDE0MywgMjIyLCA5MywgMzYsIDE0MywgMjMxLCAyNTIsIDM2LCAxNDMsIAotICAgIDI0NCwgMTA2LCAzNiwgMTQzLCAyMTgsIDI1MCwgMzYsIDE0MywgMjQ1LCAxLCAzNiwgMTQzLCAyMjUsIDY4LCAzNiwgMTQzLCAKLSAgICAyNTMsIDExMiwgMzYsIDE0MywgMjM1LCAxNTcsIDM2LCAxNDMsIDIyMywgMjEzLCAzNiwgMTQzLCAyNDksIDEwMywgMzYsIAotICAgIDE0MywgMjQ5LCA5NCwgMzYsIDE0MywgMjQxLCAxNTEsIDM2LCAxNDMsIDI1MCwgMTA4LCAzNiwgMTQzLCAyMzIsIDE2NSwgCi0gICAgMzYsIDE0MywgMjMzLCA3MCwgMzYsIDE0MywgMjIzLCAxNDgsIDM2LCAxNDMsIDIzMSwgMTQ4LCAzNiwgMTQzLCAyMjMsIAotICAgIDIzNywgMzYsIDE0MywgMjE5LCAzMCwgMzYsIDE0MywgMjE4LCAyMjAsIDM2LCAxNDMsIDI0NSwgODYsIDM2LCAxNDMsIDIyMywgCi0gICAgMjE1LCAzNiwgMTQzLCAyNTQsIDU5LCAzNiwgMTQzLCAyMjksIDQzLCAzNiwgNTAsIDIxNywgMTE2LCAxODksIDM2LCA1MCwgCi0gICAgMjE3LCAxMTYsIDE5OCwgMzYsIDUwLCAyMTcsIDExNiwgMTk1LCAzNiwgNTAsIDIxNywgMTE2LCAyMDAsIDM2LCA1MCwgMjQzLCAKLSAgICAyNDAsIDM2LCA1MCwgMjQzLCAyNDEsIDExNiwgMzYsIDUwLCAyNDMsIDI0MSwgMTA5LCAzNiwgNTAsIDI0MywgMjQxLCAxNjYsIAotICAgIDM2LCA1MCwgMjQzLCAyNDEsIDE2MywgMzYsIDUwLCAyNDMsIDI0MSwgMTgwLCAzNiwgNTAsIDI0MywgMjQxLCAxODksIDM2LCAKLSAgICA1MCwgMjQzLCAyNDEsIDE5OCwgMzYsIDUwLCAyNDMsIDI0MSwgMTk1LCAzNiwgNTAsIDI0MywgMjQxLCAyMDAsIDM2LCA1MCwgCi0gICAgMjQ0LCA4MywgMTA1LCAyMDEsIDE2LCAzMSwgMjM1LCAxMzMsIDEwNSwgMjAxLCAxNiwgMzEsIDI0NCwgMTE3LCAxMDUsIAotICAgIDIwMSwgMTYsIDMxLCAyMzEsIDIyMywgMTA1LCAyMDEsIDE2LCAzMSwgMjUzLCAyMTcsIDEwNSwgMjAxLCAxNiwgMzEsIDIzMSwgCi0gICAgMTk2LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDQ4LCAxMDUsIDIwMSwgMTYsIDMxLCAyMzUsIDQ5LCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNTMsIDEwNCwgMTA1LCAyMDEsIDE2LCAzMSwgMjIxLCA1NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjI3LCAxMDQsIDEwNSwgCi0gICAgMjAxLCAxNiwgMzEsIDIyOCwgMTUxLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDM2LCA0MSwgMjQxLCAxNzUsIDQxLCAyNDUsIAotICAgIDUxLCA0MSwgMjQ1LCAxMCwgMjMyLCAyNDgsIDIzMywgMTIsIDUyLCAzNiwgNTYsIDYxLCAzNiwgNTYsIDcyLCAzNiwgNTYsIAotICAgIDY5LCAzNiwgNTYsIDc0LCAzNiwgNTYsIDc1LCAzNiwgNTYsIDE4MSwgMzYsIDU2LCAyMzQsIDEwMSwgMzYsIDU2LCAyMzMsIAotICAgIDIzOCwgMzYsIDU2LCAyMzQsIDE4OCwgMzYsIDU2LCAyMzQsIDM3LCAzNiwgNTYsIDIyMiwgMjAyLCAzNiwgNTYsIDIyMCwgCi0gICAgMTE3LCAzNiwgNTYsIDIxOSwgMjcsIDM2LCA1NiwgMjIyLCAxMDAsIDM2LCA1NiwgMjE5LCAyNDIsIDM2LCA1NiwgMjE4LCAKLSAgICA1MiwgMzYsIDU2LCAyMTcsIDcxLCAzNiwgNTYsIDIxNiwgODIsIDM2LCA1NiwgMjE3LCAyMjksIDM2LCA1NiwgMTA4LCAzNiwgCi0gICAgNTYsIDIwNSwgMzYsIDU2LCAyMjksIDY0LCAzNiwgNTYsIDIyOCwgOTIsIDM2LCA1NiwgMjI5LCAxODcsIDM2LCA1NiwgMjI4LCAKLSAgICAxODUsIDM2LCA1NiwgMTU5LCAzNiwgNTYsIDI0MSwgMTY1LCAzNiwgNTYsIDI0MCwgMjEyLCAzNiwgNTYsIDI0MSwgMjIyLCAKLSAgICAzNiwgNTYsIDI0MSwgNTQsIDM2LCA1NiwgMTg4LCAzNiwgNTYsIDIzMSwgNDIsIDM2LCA1NiwgMjMwLCAxNzIsIDM2LCA1NiwgCi0gICAgMjMxLCAxNTYsIDM2LCA1NiwgMjMwLCAyMzEsIDM2LCA1NiwgMTg2LCAzNiwgNTYsIDIxMiwgMjAzLCAzNiwgNTYsIDIxMiwgCi0gICAgMjM1LCAzNiwgNTYsIDIwMywgMzYsIDU2LCAyMjMsIDE4OCwgMzYsIDU2LCAyMjMsIDUxLCAzNiwgNTYsIDIyNCwgMjEsIDM2LCAKLSAgICA1NiwgMjIzLCAxMTIsIDM2LCA1NiwgMjE0LCA0OSwgMzYsIDU2LCAyMTMsIDIzNSwgMzYsIDU2LCAyMTQsIDYsIDM2LCA1NiwgCi0gICAgMjEzLCAyMTQsIDQxLCAyNTMsIDIzOCwgNDEsIDI1MywgMTU0LCA0MSwgMjU0LCA2LCA0MSwgMjU0LCAxOTAsIDQxLCAyMzUsIAotICAgIDIyMywgNDEsIDIzNSwgMTkzLCA0MSwgMjE1LCAxMzcsIDQxLCAyNDUsIDMxLCA0MSwgMjQ1LCAxNjMsIDQxLCAyMjcsIDUyLCAKLSAgICA0MSwgMjI3LCA0NiwgNDEsIDIzNCwgMjQ5LCA0MSwgMjM0LCAyMTksIDQxLCAyMzQsIDIxNiwgNDEsIDI0MywgNjgsIDQxLCAKLSAgICAyNDMsIDc3LCA0MSwgMjQyLCAxODAsIDQxLCAyNDIsIDE3NiwgNDEsIDIzMywgMTcyLCA0MSwgMjQyLCAxNjksIDQxLCAyMzQsIAotICAgIDgxLCA0MSwgMjM0LCA4MCwgNDEsIDIzNCwgNzksIDQxLCAyMzQsIDc4LCA0MSwgMjQyLCA2NywgNDEsIDI0MiwgNjYsIDQxLCAKLSAgICAyMzMsIDIxNCwgNDEsIDIzMywgMjE2LCA0MSwgMjM0LCAxODQsIDQxLCAyMzQsIDEwLCA0MSwgMjM0LCAxNywgNDEsIDIyMiwgCi0gICAgMTg3LCA0MSwgMjIyLCAxNTMsIDQxLCAyMjAsIDU3LCA0MSwgMjIxLCA2MSwgNDEsIDIyMSwgNjAsIDQxLCAyNDgsIDE2MSwgCi0gICAgNDEsIDI0NywgMjQzLCA0MSwgMjQ3LCA3NSwgNDEsIDIxNiwgMjQzLCA0MSwgMjMwLCAyMCwgNDEsIDIyOCwgMTUyLCA0MSwgCi0gICAgMjQyLCAxNCwgNDEsIDIyNiwgMjA4LCA0MSwgMjI2LCAyMDcsIDQxLCAyNTIsIDEwNSwgNDEsIDIyNSwgMjM3LCA0MSwgMjI1LCAKLSAgICAyMDEsIDQxLCAyMjUsIDIwMiwgNDEsIDI1MSwgMTU3LCA0MSwgMjQwLCAyMTEsIDQxLCAyNDAsIDIwNywgNDEsIDI1MSwgMjAsIAotICAgIDQxLCAyNDAsIDE5NCwgNDEsIDI0MSwgMTk5LCA0MSwgMjI2LCAzNSwgNDEsIDIyNiwgNjksIDQxLCAyNDEsIDE4MywgNDEsIAotICAgIDIyNiwgNjYsIDQxLCAyMjYsIDgyLCA0MSwgMjUxLCAyMzcsIDQxLCAyMjUsIDE0MCwgNDEsIDI1MSwgMTA2LCA0MSwgMjQxLCAKLSAgICA0MiwgNDEsIDIyNSwgMTMwLCA0MSwgMjQxLCAzNSwgNDEsIDI0MSwgMzcsIDQxLCAyMzIsIDcsIDQxLCAyMzIsIDMsIDQxLCAKLSAgICAyMzIsIDExLCA0MSwgMjMxLCAyMTMsIDQxLCAyMzEsIDIzOCwgNDEsIDIzMSwgMTAsIDQxLCAyMzAsIDI0NSwgNDEsIDIzMCwgCi0gICAgMjQ0LCA0MSwgMjMxLCAxMzgsIDQxLCAyMzEsIDEzNSwgNDEsIDIzMSwgMTM5LCA0MSwgMjEzLCA5MCwgNDEsIDIxMywgODgsIAotICAgIDQxLCAyMTIsIDE5MiwgNDEsIDIyMywgMTIzLCA0MSwgMjIzLCAxMjcsIDQxLCAyMjMsIDI4LCA0MSwgMjIzLCAyMywgNDEsIAotICAgIDIyMywgMjM1LCA0MSwgMjIzLCAyMzIsIDQxLCAyMTQsIDIyLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjEyLCA3OSwgCi0gICAgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDExNiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDEwOSwgMTA1LCAKLSAgICAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE2NiwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE2MywgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDE4MCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE4OSwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQwLCAyMjYsIDE5OCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDE5NSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAKLSAgICAyMjYsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNywgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIAotICAgIDIyNiwgMjQ1LCAxMjQsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDQxLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDAsIDIyNiwgMjE3LCAxMTcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyNDMsIDIzMSwgMTA1LCAyMDEsIDE2LCAKLSAgICAzMSwgMjQwLCAyMjYsIDI0NCwgODcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMjAsIDQ3LCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDAsIDIyNiwgMjIxLCA0MCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDI0NSwgMTQ3LCAxMDUsIDIwMSwgCi0gICAgMTYsIDMxLCAyNDAsIDIyNiwgMjI5LCAyOCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMzgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDMyLCAxMDUsIDIwMSwgMTYsIDMxLCAyNDAsIDIyNiwgMjE2LCAyOCwgMTA1LCAyMDEsIAotICAgIDE2LCAzMSwgMjQwLCAyMjYsIDIxNiwgMjksIDEwNSwgMjAxLCAxNiwgMzEsIDI0MCwgMjI2LCAyMTYsIDM0LCA0MSwgMjQwLCAKLSAgICAyMTcsIDQxLCAyNDgsIDE2NCwgNDEsIDI1MywgMTA4LCA0MSwgMTM0LCA0MSwgMjI2LCAyNDksIDQxLCAyMjYsIDk5LCA0MSwgCi0gICAgMjQ3LCAxMDEsIDQxLCAyNDcsIDEwMiwgMjE5LCAxNjUsIDQxLCAyNDcsIDEwMiwgMjQ5LCA0OSwgNDEsIDIzNSwgMTU0LCAKLSAgICA0MSwgMjQ1LCA1NCwgMjMwLCAyNSwgMjQxLCAyMDAsIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyMTgsIDEyMCwgNDEsIDI0NSwgCi0gICAgNTQsIDIzMCwgMjUsIDIxOCwgMjQsIDQxLCAyNDUsIDU0LCAyMzAsIDI1LCAyMzEsIDEzNCwgNDEsIDI0OSwgOTYsIDQxLCAKLSAgICAyMjYsIDIxNCwgMjU0LCAzNCwgNDEsIDIwNSwgNDEsIDIzMCwgMTczLCA2MSwgNDEsIDE4OCwgNDEsIDE4MSwgNDEsIDIzNCwgCi0gICAgMTkxLCA0MSwgMjMxLCAxOTIsIDQxLCAyNDMsIDU2LCA0MSwgMjUwLCAyMDYsIDQxLCAyMzQsIDE5MCwgNDEsIDIyNiwgMjYsIAotICAgIDQxLCAyMjksIDE2MywgNDEsIDIzMCwgMTczLCAyNDQsIDIzMCwgNDEsIDIzMCwgMTczLCAyNDMsIDE3NywgNDEsIDIzMSwgCi0gICAgODIsIDQxLCAyMzQsIDE0MCwgNDEsIDI0MCwgMTU1LCA0MSwgMjM0LCAxMDMsIDQxLCAyMzEsIDQ0LCA0MSwgMjQyLCAxOTIsIAotICAgIDQxLCAyMTcsIDczLCA0MSwgMjMwLCAxNzMsIDE1MCwgNDEsIDIzMCwgMjM4LCA0MSwgMjQ3LCAxMDksIDQxLCAyMzQsIDQ5LCAKLSAgICA0MSwgMjQ0LCAxNCwgNDEsIDIyOCwgMjAwLCA0MSwgMjMwLCAxNzMsIDE4MywgNDEsIDIzMCwgMjM1LCA0MSwgMjQ5LCAxNzYsIAotICAgIDQxLCAyMzQsIDQzLCA0MSwgMjMwLCAyMzYsIDIxOSwgMTY1LCA0MSwgMjQ5LCAxNzcsIDIxOSwgMTY1LCA0MSwgMjMyLCAKLSAgICAxMTAsIDIxOSwgMTY1LCA0MSwgMjM0LCA0NCwgMjE5LCAxNjUsIDQxLCAyMzAsIDIzNiwgMjQ5LCA0OSwgNDEsIDI0OSwgCi0gICAgMTc3LCAyNDksIDQ5LCA0MSwgMjMyLCAxMTAsIDI0OSwgNDksIDQxLCAyMzQsIDQ0LCAyNDksIDQ5LCA0MSwgMjMyLCAxMTAsIAotICAgIDExMCwgMTk3LCA0MSwgMjMyLCAxMTAsIDExMCwgMjIzLCA0LCAyMTksIDE2NSwgNDEsIDE5MywgNDEsIDIzNCwgNCwgNDEsIAotICAgIDIzMCwgMTc1LCA0MSwgMjQyLCAxMjcsIDQxLCAyMjQsIDY2LCA0MSwgMjI0LCA2NywgMTEwLCAxOTcsIDQxLCAyMjQsIDY3LCAKLSAgICAxMTAsIDIyMywgNCwgMjE5LCAxNjUsIDQxLCAyMjUsIDQ3LCA0MSwgMjI4LCAxMjQsIDQxLCAyMzAsIDE3MywgMTk3LCA0MSwgCi0gICAgMjMwLCAxNzQsIDQxLCAyMjUsIDQsIDQxLCAyMjgsIDMzLCA0MSwgMjMwLCAxNzMsIDIxNSwgNzksIDQxLCAyMzAsIDEyMCwgCi0gICAgNDEsIDIzMywgMjA3LCA0MSwgMjMwLCAxMjEsIDIzMSwgMTM4LCA0MSwgMjI1LCAzLCA0MSwgMjI4LCAzMiwgNDEsIDIzMCwgCi0gICAgMTczLCAyMTQsIDgyLCA0MSwgMjMwLCAxMTUsIDQxLCAyMzMsIDIwNSwgNDEsIDIzMCwgMTE2LCAyMzEsIDEzOCwgNDEsIAotICAgIDIzNSwgMjgsIDIyNywgODYsIDQxLCAyMzIsIDExMCwgMjI3LCA4NiwgNDEsIDI1NCwgNDUsIDQxLCAyNTEsIDg3LCA0MSwgCi0gICAgMjUwLCAxNDcsIDQxLCAyNTAsIDEyNSwgNDEsIDI1MCwgMjUzLCAxMTAsIDIzNCwgMTQwLCA0MSwgMjQ5LCAxNzUsIDQxLCAKLSAgICAyNDgsIDg4LCA0MSwgMjQyLCA1MywgNDEsIDE1OSwgNDEsIDI0MCwgMjE4LCA0MSwgMjM1LCAyNTEsIDQxLCAyMzQsIDU2LCAKLSAgICA0MSwgMjM0LCA0NCwgMjUwLCAxODIsIDQxLCAyMzMsIDI0MCwgNDEsIDIzMiwgMjExLCA0MSwgMjMyLCAyMTAsIDQxLCAyMzIsIAotICAgIDIwMCwgNDEsIDIzMiwgMTIyLCA0MSwgMjMxLCAxOTMsIDIyMCwgNywgNDEsIDIzMSwgOSwgNDEsIDIzMCwgMjIyLCA0MSwgCi0gICAgMjI2LCAyNCwgNDEsIDIyNSwgMTUzLCA0MSwgMjI1LCA5OSwgNDEsIDIyNSwgOTcsIDQxLCAyMTksIDE1OSwgNDEsIDIxOCwgCi0gICAgMjAzLCA0MSwgMjE0LCA4LCA0MSwgMjE1LCA4MCwgMTEwLCAxODMsIDQxLCAxMTgsIDExMCwgMTgzLCAxMDUsIDIwMSwgMTYsIAotICAgIDMxLCAyNDgsIDkyLCAxMTYsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDEwOSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCAKLSAgICA5MiwgMTY2LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxNjMsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDE4MCwgCi0gICAgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMTg5LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAxOTgsIDEwNSwgMjAxLCAKLSAgICAxNiwgMzEsIDI0OCwgOTIsIDE5NSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjAwLCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyMTcsIDIwMCwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjQ1LCAxMjQsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgNDEsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNywgMTE3LCAxMDUsIDIwMSwgMTYsIDMxLCAKLSAgICAyNDgsIDkyLCAyNDMsIDIzMSwgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjQ0LCA4NywgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjIwLCA0NywgMTA1LCAyMDEsIDE2LCAzMSwgMjQ4LCA5MiwgMjIxLCA0MCwgMTA1LCAyMDEsIDE2LCAzMSwgCi0gICAgMjQ4LCA5MiwgMjQ1LCAxNDcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIyOSwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzIsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMjgsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMjksIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzQsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzUsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzAsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzEsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNiwgMzcsIDEwNSwgMjAxLCAxNiwgMzEsIDI0OCwgOTIsIDIxNiwgMzMsIDEwNSwgMjAxLCAxNiwgMzEsIAotICAgIDI0OCwgOTIsIDIxNywgMTE1LCAxMDUsIDIwMSwgMTYsIDMxLCAyNDgsIDkyLCAyMTcsIDExNCwgNDEsIDI0MywgOTQsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI0OSwgODAsIDI0MSwgMjA3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMjQsIDE1LCAKLSAgICAyNDUsIDE3OSwgMjQxLCAxNzcsIDMxLCAyNDcsIDE4MywgMjUzLCAxMjMsIDIxNywgMTQ5LCAyNTEsIDIzMiwgMjQxLCAxNzcsIAotICAgIDMxLCAyMTIsIDIxNCwgMjQ0LCA3LCAyNDEsIDE3NywgMzEsIDIxNCwgNDMsIDI0MSwgMTc3LCAzMSwgMjQ5LCAxNDIsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI1MywgMTc0LCAyNDEsIDE3NywgMzEsIDI0MSwgNDYsIDIxNiwgMjQ5LCAyNDEsIDE3NywgCi0gICAgMzEsIDMsIDIxOCwgMTIsIDI0MSwgMTc3LCAzMSwgMjE2LCAxOTUsIDI0MSwgMTc3LCAzMSwgMjI2LCA5NCwgMjQxLCAxNzcsIAotICAgIDMxLCAyMTksIDk3LCAyNDEsIDE3NywgMzEsIDI0NCwgMTA4LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMjUsIDEyMCwgCi0gICAgMjQxLCAxNzcsIDMxLCAyMzAsIDIyNSwgMjQxLCAxNzcsIDMxLCAyNDUsIDg1LCAyNDEsIDE3NywgMzEsIDI0NCwgOCwgMjQxLCAKLSAgICAxNzcsIDMxLCAyMTMsIDE5NCwgMjI3LCA2MywgMjE3LCAxNDksIDI0OCwgMzcsIDI0MSwgMTc3LCAzMSwgMjUzLCAyMjEsIAotICAgIDI0MSwgMTc3LCAzMSwgMjQ5LCAxMjQsIDI0MSwgMTc3LCAzMSwgMjUxLCAxNTAsIDIxNywgOTIsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQyLCAxMjUsIDI0MSwgMTc3LCAzMSwgMjE5LCAxNzcsIDI1MywgMjM3LCAyNDEsIDE3NywgMzEsIDIyMywgMjA1LCAyNDEsIAotICAgIDE3NywgMzEsIDIzNSwgMjE3LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMTgsIDEyLCAyNDEsIDE3NywgMzEsIDIzMCwgCi0gICAgMTgxLCAyNDksIDk4LCAyNDEsIDE3NywgMzEsIDI0MiwgMTA5LCAyMjUsIDc3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAKLSAgICAyNTQsIDE3OCwgMjE0LCAyNCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjQ5LCAyMDEsIDI0NCwgNjUsIDI0MSwgMTc3LCAKLSAgICAzMSwgMjM1LCAyMzAsIDI0MSwgMTc3LCAzMSwgMjQ2LCAxMiwgMjQxLCAxNzcsIDMxLCAyMjMsIDIwOCwgMjQxLCAxNzcsIAotICAgIDMxLCAyNDIsIDEwOSwgMjI1LCAxMDQsIDI0MSwgMTc3LCAzMSwgMjI1LCA2MSwgMjQxLCAxNzcsIDMxLCAyNDgsIDEwNiwgCi0gICAgNjUsIDIxNywgMTQ5LCAyMzMsIDIsIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0NCwgMTQyLCAyNDEsIDE3NywgMzEsIAotICAgIDIyNywgMjksIDI0MSwgMTc3LCAzMSwgMjI3LCAxMDgsIDI0MSwgMTc3LCAzMSwgMjQ4LCAxMCwgMjQxLCAxNzcsIDMxLCAKLSAgICAyNDgsIDMwLCAyNDEsIDE3NywgMzEsIDIzNSwgMjQzLCAyNDEsIDE3NywgMzEsIDI1MSwgNzcsIDI0MSwgMTc3LCAzMSwgCi0gICAgMjQ5LCAxNTksIDIxMSwgMjExLCAyMzEsIDE0MSwgMjQxLCAxNzcsIDMxLCAyNDMsIDYzLCAyMTYsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMjUsIDEyLCAyMTUsIDEyNSwgMjQxLCAxNzcsIDMxLCAyMjcsIDI4LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAKLSAgICAyMTMsIDI1NCwgMjQxLCAxNzcsIDMxLCAyMjMsIDE5OCwgMjQxLCAxNzcsIDMxLCAyMTcsIDE0OSwgMjUwLCAxNTMsIDI0MSwgCi0gICAgMTc3LCAzMSwgMjE3LCAxNDksIDI1MywgMTcwLCAyMTcsIDg3LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzQsIDE4NSwgCi0gICAgMjE5LCA3NCwgMjMwLCAxODUsIDI0MSwgMTc3LCAzMSwgMjQ3LCAyMzksIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIzMSwgCi0gICAgMjE1LCAyMzIsIDgsIDI0MSwgMTc3LCAzMSwgMjU0LCAxNzksIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDIxNCwgMzgsIAotICAgIDI0MSwgMTc3LCAzMSwgMjE3LCAxNDksIDI0MywgMjMsIDIxMywgMjI0LCAyNDEsIDE3NywgMzEsIDIxNywgMTQ5LCAyMzUsIAotICAgIDU1LCAyMzMsIDEzMSwgMjQxLCAxNzcsIDMxLCAyNDcsIDEzNiwgMjQxLCAxNzcsIDMxLCAyMzIsIDI0OSwgMjQxLCAxNzcsIAotICAgIDMxLCAyMzUsIDIyMCwgMjE2LCAxNDUsIDI0MSwgMTc3LCAzMSwgMywgMjI1LCA3NywgMjQxLCAxNzcsIDMxLCAyNTQsIDEyMiwgCi0gICAgMjQ5LCAxNTEsIDI0MSwgMTc3LCAzMSwgMjUxLCAyMzUsIDI0OSwgMTUxLCA4LCA0LCAyMzUsIDE1OCwgOCwgNCwgMjM1LCAKLSAgICAxNTEsIDgsIDQsIDcyLCA4LCA0LCAyMzUsIDE4MCwgOCwgNCwgMjM2LCA1MywgOCwgNCwgMjM2LCAzNiwgOCwgNCwgMjM2LCAKLSAgICA1NSwgOCwgNCwgMjM2LCA1NCwgOCwgNCwgMjUzLCAxMjIsIDgsIDQsIDI1MywgODUsIDgsIDQsIDYxLCA4LCA0LCAyNTMsIAotICAgIDIzOSwgOCwgNCwgMjE1LCAxMzUsIDgsIDQsIDIxNSwgMTM4LCA4LCA0LCAyMTUsIDEzNiwgOCwgNCwgMjI3LCA4LCA4LCA0LCAKLSAgICAyMjYsIDIzOCwgOCwgNCwgNzUsIDgsIDQsIDIyNywgNDEsIDgsIDQsIDI0NSwgMiwgOCwgNCwgNzQsIDgsIDQsIDIxMywgCi0gICAgMTgzLCA4LCA0LCAyNTEsIDE1MSwgOCwgNCwgMjUxLCAxNDgsIDgsIDQsIDI1MSwgMTg0LCA4LCA0LCAyNTEsIDE2MSwgOCwgCi0gICAgNCwgMjUxLCAxNzQsIDgsIDQsIDI1MSwgMTczLCA4LCA0LCAyNTEsIDE3NiwgOCwgNCwgMjUxLCAxNzUsIDgsIDQsIDI1MiwgCi0gICAgNDEsIDgsIDQsIDI1MiwgMzMsIDgsIDQsIDI1MiwgMTA3LCA4LCA0LCAyNTIsIDYxLCA4LCA0LCAyNTEsIDMwLCA4LCA0LCAKLSAgICAyNTEsIDM0LCA4LCA0LCAyNTEsIDMxLCA4LCA0LCAyNTEsIDEwNSwgOCwgNCwgMjUxLCA4OSwgOCwgNCwgMjUxLCAxMjgsIDgsIAotICAgIDQsIDI1MSwgMTEwLCA4LCA0LCAyNTEsIDE5OCwgOCwgNCwgMjUxLCAyNTEsIDgsIDQsIDI1MSwgMjEwLCA4LCA0LCAyNTEsIAotICAgIDE2LCA4LCA0LCAyNTEsIDEzLCA4LCA0LCAyNTEsIDU0LCA4LCA0LCAyNTEsIDI5LCA4LCA0LCAyNTEsIDIzLCA4LCA0LCAKLSAgICAyNTEsIDI3LCA4LCA0LCAyNTEsIDEsIDgsIDQsIDI1MSwgMCwgOCwgNCwgMjUxLCA2LCA4LCA0LCAyNTEsIDQsIDgsIDQsIAotICAgIDI1MSwgMiwgOCwgNCwgMjUxLCAzLCA4LCA0LCAyMjUsIDE4MSwgOCwgNCwgMjI1LCAxNzcsIDgsIDQsIDIyNSwgMjQwLCA4LCAKLSAgICA0LCAyMjUsIDE5MSwgOCwgNCwgMjI1LCAyMDcsIDgsIDQsIDIyNSwgMjM0LCA4LCA0LCAyMjUsIDIzMCwgOCwgNCwgMjI2LCAKLSAgICAxMTMsIDgsIDQsIDIyNiwgMTA0LCA4LCA0LCAxOTMsIDgsIDQsIDIyNiwgMTQ5LCA4LCA0LCAyMjUsIDIxLCA4LCA0LCAyMjUsIAotICAgIDIzLCA4LCA0LCAyMjUsIDIyLCA4LCA0LCAyMjUsIDExMywgOCwgNCwgMjI1LCAxMDIsIDgsIDQsIDIyNSwgMTUwLCA4LCA0LCAKLSAgICAyMjUsIDEyNSwgOCwgNCwgMjI1LCA4LCA4LCA0LCAyMjUsIDUsIDgsIDQsIDIyNSwgMzUsIDgsIDQsIDIyNSwgMjAsIDgsIDQsIAotICAgIDIyNSwgMTMsIDgsIDQsIDIyNSwgMTgsIDgsIDQsIDIyNCwgMjQ0LCA4LCA0LCAyMjQsIDI0MywgOCwgNCwgMjI0LCAyNDgsIAotICAgIDgsIDQsIDIyNCwgMjQ3LCA4LCA0LCAyMjQsIDI0NSwgOCwgNCwgMjI0LCAyNDYsIDgsIDQsIDI1MiwgMTYsIDgsIDQsIDI1MiwgCi0gICAgMTUsIDgsIDQsIDI1MiwgMjIsIDgsIDQsIDI1MiwgMTcsIDgsIDQsIDI1MiwgMTksIDgsIDQsIDI1MiwgMTgsIDgsIDQsIAotICAgIDI1MiwgMjEsIDgsIDQsIDI1MiwgMjAsIDgsIDQsIDI1MiwgMjgsIDgsIDQsIDI1MiwgMjcsIDgsIDQsIDI1MiwgMzEsIDgsIAotICAgIDQsIDI1MiwgMjksIDgsIDQsIDI1MiwgNywgOCwgNCwgMjUyLCA5LCA4LCA0LCAyNTIsIDgsIDgsIDQsIDI1MiwgMTIsIDgsIAotICAgIDQsIDI1MiwgMTEsIDgsIDQsIDI1MiwgMTQsIDgsIDQsIDI1MiwgMTMsIDgsIDQsIDI1MiwgMjMsIDgsIDQsIDI1MiwgMjYsIAotICAgIDgsIDQsIDI1MiwgMjQsIDgsIDQsIDI1MiwgMywgOCwgNCwgMjUyLCAyLCA4LCA0LCAyNTIsIDEwLCA4LCA0LCAyNTIsIDYsIAotICAgIDgsIDQsIDI1MiwgNCwgOCwgNCwgMjUyLCA1LCA4LCA0LCAyNTEsIDI1NSwgOCwgNCwgMjUxLCAyNTQsIDgsIDQsIDI1MiwgMSwgCi0gICAgOCwgNCwgMjUyLCAwLCA4LCA0LCAyMjksIDI0OCwgOCwgNCwgMjI5LCAyNDcsIDgsIDQsIDIyOSwgMjUzLCA4LCA0LCAyMjksIAotICAgIDI0OSwgOCwgNCwgMjI5LCAyNTAsIDgsIDQsIDIyOSwgMjUyLCA4LCA0LCAyMjksIDI1MSwgOCwgNCwgMjI5LCAyNTUsIDgsIAotICAgIDQsIDIyOSwgMjU0LCA4LCA0LCAyMzAsIDEsIDgsIDQsIDIzMCwgMCwgOCwgNCwgMjI5LCAyNDQsIDgsIDQsIDIyOSwgMjQzLCAKLSAgICA4LCA0LCAyMjksIDI0NiwgOCwgNCwgMjI5LCAyNDUsIDgsIDQsIDIyOSwgMjM4LCA4LCA0LCAyMjksIDIzNywgOCwgNCwgCi0gICAgMjI5LCAyNDIsIDgsIDQsIDIyOSwgMjQxLCA4LCA0LCAyMjksIDIzOSwgOCwgNCwgMjI5LCAyNDAsIDgsIDQsIDIyOSwgMjMyLCAKLSAgICA4LCA0LCAyMjksIDIzMSwgOCwgNCwgMjI5LCAyMzYsIDgsIDQsIDIyOSwgMjM1LCA4LCA0LCAyMjksIDIzMywgOCwgNCwgCi0gICAgMjI5LCAyMzQsIDgsIDQsIDI0MSwgOTYsIDgsIDQsIDI0MSwgOTUsIDgsIDQsIDI0MSwgMTAxLCA4LCA0LCAyNDEsIDk3LCA4LCAKLSAgICA0LCAyNDEsIDk4LCA4LCA0LCAyNDEsIDEwMCwgOCwgNCwgMjQxLCA5OSwgOCwgNCwgMjQxLCAxMDQsIDgsIDQsIDI0MSwgCi0gICAgMTAzLCA4LCA0LCAyNDEsIDEwNiwgOCwgNCwgMjQxLCAxMDUsIDgsIDQsIDI0MSwgODcsIDgsIDQsIDI0MSwgODksIDgsIDQsIAotICAgIDI0MSwgODgsIDgsIDQsIDI0MSwgOTIsIDgsIDQsIDI0MSwgOTEsIDgsIDQsIDI0MSwgOTQsIDgsIDQsIDI0MSwgOTMsIDgsIAotICAgIDQsIDI0MSwgODMsIDgsIDQsIDI0MSwgODIsIDgsIDQsIDI0MSwgOTAsIDgsIDQsIDI0MSwgODYsIDgsIDQsIDI0MSwgODQsIAotICAgIDgsIDQsIDI0MSwgODUsIDgsIDQsIDI0MSwgNzcsIDgsIDQsIDI0MSwgODEsIDgsIDQsIDI0MSwgODAsIDgsIDQsIDI0MSwgCi0gICAgNzgsIDgsIDQsIDI0MSwgNzksIDgsIDQsIDIzMCwgMjQxLCA4LCA0LCAyMzAsIDI0MCwgOCwgNCwgMjMxLCA0MiwgOCwgNCwgCi0gICAgMjMwLCAyNDcsIDgsIDQsIDIzMSwgMTYsIDgsIDQsIDIzMSwgMzQsIDgsIDQsIDIzMSwgMzIsIDgsIDQsIDIzMSwgMjAyLCA4LCAKLSAgICA0LCAyMzEsIDE5OCwgOCwgNCwgMTg4LCA4LCA0LCAyMzEsIDIzNSwgOCwgNCwgMjMwLCAxNDQsIDgsIDQsIDIzMCwgMTQzLCAKLSAgICA4LCA0LCAyMzAsIDE0NywgOCwgNCwgMjMwLCAxNDUsIDgsIDQsIDIzMCwgMTkxLCA4LCA0LCAyMzAsIDE3NywgOCwgNCwgCi0gICAgMjMwLCAyMzEsIDgsIDQsIDIzMCwgMTk2LCA4LCA0LCAyMzEsIDkzLCA4LCA0LCAyMzEsIDE1NiwgOCwgNCwgMjMwLCAxMjUsIAotICAgIDgsIDQsIDIzMCwgMTIyLCA4LCA0LCAyMzAsIDE3MiwgOCwgNCwgMjMwLCAxNDAsIDgsIDQsIDIzMCwgMTMzLCA4LCA0LCAKLSAgICAyMzAsIDEzOCwgOCwgNCwgMjMwLCAxMDAsIDgsIDQsIDIzMCwgOTksIDgsIDQsIDIzMCwgMTA1LCA4LCA0LCAyMzAsIDEwMiwgCi0gICAgOCwgNCwgMjQ0LCA1MiwgOCwgNCwgMjQ0LCA0NywgOCwgNCwgMjQ0LCA5MCwgOCwgNCwgMjQ0LCA2NywgOCwgNCwgMjQ0LCAKLSAgICAxMzUsIDgsIDQsIDI0NCwgMTI2LCA4LCA0LCAyNDQsIDE2NCwgOCwgNCwgMjQ0LCAxMzgsIDgsIDQsIDI0MywgMjI5LCA4LCAKLSAgICA0LCAyNDQsIDEyLCA4LCA0LCAyNDMsIDI1MiwgOCwgNCwgMjQzLCAxOTAsIDgsIDQsIDI0MywgMTg5LCA4LCA0LCAyNDMsIAotICAgIDIwNSwgOCwgNCwgMjQzLCAxOTUsIDgsIDQsIDI0MywgMTkzLCA4LCA0LCAyNDMsIDE5NCwgOCwgNCwgMjQzLCAxODAsIDgsIAotICAgIDQsIDI0MywgMTc5LCA4LCA0LCAyNDMsIDE4MywgOCwgNCwgMjQzLCAxODEsIDgsIDQsIDIxNCwgMTI1LCA4LCA0LCAyMTQsIAotICAgIDEyMCwgOCwgNCwgMjE0LCAxNTQsIDgsIDQsIDIxNCwgMTM0LCA4LCA0LCAyMTQsIDE0NiwgOCwgNCwgMjE0LCAxNDMsIDgsIAotICAgIDQsIDIxNCwgMTQ4LCA4LCA0LCAyMTQsIDE0NywgOCwgNCwgMjE0LCAyMzksIDgsIDQsIDIxNCwgMjM1LCA4LCA0LCAyMTUsIAotICAgIDEsIDgsIDQsIDIxNCwgMjUwLCA4LCA0LCAyMTQsIDEwNiwgOCwgNCwgMjE0LCAxMDIsIDgsIDQsIDIxNCwgMTE5LCA4LCA0LCAKLSAgICAyMTQsIDEwNywgOCwgNCwgMjE0LCAxNTUsIDgsIDQsIDIxNCwgMjIxLCA4LCA0LCAyMTQsIDkzLCA4LCA0LCAyMTQsIDkyLCAKLSAgICA4LCA0LCAyMTQsIDk5LCA4LCA0LCAyMTQsIDk2LCA4LCA0LCAyMTQsIDk0LCA4LCA0LCAyMTQsIDk1LCA4LCA0LCAyMTQsIAotICAgIDg2LCA4LCA0LCAyMTQsIDg1LCA4LCA0LCAyMTQsIDkwLCA4LCA0LCAyMTQsIDg5LCA4LCA0LCAyMTQsIDg3LCA4LCA0LCAKLSAgICAyMTQsIDg4LCA4LCA0LCAyNDcsIDEzMCwgOCwgNCwgMjQ3LCAxMTgsIDgsIDQsIDI0NywgMjExLCA4LCA0LCAyNDcsIDE1NSwgCi0gICAgOCwgNCwgMjQ3LCAxODgsIDgsIDQsIDI0NywgMTkyLCA4LCA0LCAyNDcsIDE5MSwgOCwgNCwgMjQ4LCA5OCwgOCwgNCwgMjQ4LCAKLSAgICA5MywgOCwgNCwgMjQ4LCAxNjQsIDgsIDQsIDI0OCwgMTE3LCA4LCA0LCAyNDYsIDE3LCA4LCA0LCAyNDYsIDE4LCA4LCA0LCAKLSAgICAyNDcsIDc0LCA4LCA0LCAyNDYsIDU2LCA4LCA0LCAyNDcsIDk5LCA4LCA0LCAyNDcsIDc2LCA4LCA0LCAyNDcsIDIzNywgOCwgCi0gICAgNCwgMjQ4LCA0MSwgOCwgNCwgMjQ3LCAyNTIsIDgsIDQsIDI0NiwgOCwgOCwgNCwgMjQ2LCA2LCA4LCA0LCAyNDYsIDMzLCA4LCAKLSAgICA0LCAyNDYsIDE2LCA4LCA0LCAyNDYsIDExLCA4LCA0LCAyNDYsIDE0LCA4LCA0LCAyMTcsIDIwLCA4LCA0LCAyMTcsIDE0LCAKLSAgICA4LCA0LCAyMTcsIDcxLCA4LCA0LCAyMTcsIDI5LCA4LCA0LCAyMTcsIDYzLCA4LCA0LCAyMTcsIDY1LCA4LCA0LCAyMTcsIAotICAgIDY0LCA4LCA0LCAyMTcsIDI1MywgOCwgNCwgMjE3LCAyNDAsIDgsIDQsIDIxOCwgNTIsIDgsIDQsIDIxOCwgNSwgOCwgNCwgCi0gICAgMjE2LCA2NiwgOCwgNCwgMjE2LCA2NSwgOCwgNCwgMjE2LCA2OCwgOCwgNCwgMjE2LCA2NywgOCwgNCwgMjE2LCAyMTgsIDgsIAotICAgIDQsIDIxNiwgMjE0LCA4LCA0LCAxMDgsIDgsIDQsIDIxNiwgMjI2LCA4LCA0LCAyMTcsIDE2NiwgOCwgNCwgMjE3LCAyMjksIAotICAgIDgsIDQsIDIxNywgMTkwLCA4LCA0LCAyMTYsIDUyLCA4LCA0LCAyMTYsIDQ4LCA4LCA0LCAyMTYsIDgyLCA4LCA0LCAyMTYsIAotICAgIDY0LCA4LCA0LCAyMTYsIDUzLCA4LCA0LCAyMTYsIDYyLCA4LCA0LCAyNDgsIDU4LCA4LCA0LCAyNDgsIDU3LCA4LCA0LCAKLSAgICAyNDgsIDYzLCA4LCA0LCAyNDgsIDU5LCA4LCA0LCAyNDgsIDYwLCA4LCA0LCAyNDgsIDYyLCA4LCA0LCAyNDgsIDYxLCA4LCAKLSAgICA0LCAyNDgsIDc5LCA4LCA0LCAyNDgsIDc4LCA4LCA0LCAyNDgsIDg2LCA4LCA0LCAyNDgsIDgwLCA4LCA0LCAyNDgsIDQ4LCAKLSAgICA4LCA0LCAyNDgsIDUwLCA4LCA0LCAyNDgsIDQ5LCA4LCA0LCAyNDgsIDUzLCA4LCA0LCAyNDgsIDUyLCA4LCA0LCAyNDgsIAotICAgIDU2LCA4LCA0LCAyNDgsIDU0LCA4LCA0LCAyNDgsIDcxLCA4LCA0LCAyNDgsIDc0LCA4LCA0LCAyNDgsIDcyLCA4LCA0LCAKLSAgICAyNDgsIDQ0LCA4LCA0LCAyNDgsIDQzLCA4LCA0LCAyNDgsIDUxLCA4LCA0LCAyNDgsIDQ3LCA4LCA0LCAyNDgsIDQ1LCA4LCAKLSAgICA0LCAyNDgsIDQ2LCA4LCA0LCAyMjksIDIwNiwgOCwgNCwgMjI5LCAyMDUsIDgsIDQsIDIyOSwgMjEzLCA4LCA0LCAyMjksIAotICAgIDIwOCwgOCwgNCwgMjI5LCAyMDksIDgsIDQsIDIyOSwgMjEwLCA4LCA0LCAyMjksIDIyMiwgOCwgNCwgMjI5LCAyMjEsIDgsIAotICAgIDQsIDIyOSwgMjI4LCA4LCA0LCAyMjksIDIyMywgOCwgNCwgMjI5LCAxOTgsIDgsIDQsIDIyOSwgMTk3LCA4LCA0LCAyMjksIAotICAgIDIwNCwgOCwgNCwgMjI5LCAxOTksIDgsIDQsIDIyOSwgMjE0LCA4LCA0LCAyMjksIDIyMCwgOCwgNCwgMjI5LCAyMTgsIDgsIAotICAgIDQsIDIyOSwgMTkwLCA4LCA0LCAyMjksIDE4OSwgOCwgNCwgMjI5LCAxOTUsIDgsIDQsIDIyOSwgMTkzLCA4LCA0LCAyMjksIAotICAgIDE5MSwgOCwgNCwgMjI5LCAxOTIsIDgsIDQsIDI0MSwgNjMsIDgsIDQsIDI0MSwgNjIsIDgsIDQsIDI0MSwgNjksIDgsIDQsIAotICAgIDI0MSwgNjQsIDgsIDQsIDI0MSwgNjYsIDgsIDQsIDI0MSwgNjUsIDgsIDQsIDI0MSwgNjgsIDgsIDQsIDI0MSwgNjcsIDgsIAotICAgIDQsIDI0MSwgNzQsIDgsIDQsIDI0MSwgNzMsIDgsIDQsIDI0MSwgNzYsIDgsIDQsIDI0MSwgNzUsIDgsIDQsIDI0MSwgNTcsIAotICAgIDgsIDQsIDI0MSwgNTgsIDgsIDQsIDI0MSwgNjAsIDgsIDQsIDI0MSwgNTksIDgsIDQsIDI0MSwgNjEsIDgsIDQsIDI0MSwgCi0gICAgNzAsIDgsIDQsIDI0MSwgNzIsIDgsIDQsIDI0MSwgNzEsIDgsIDQsIDI0MSwgNTYsIDgsIDQsIDIyOSwgMjAsIDgsIDQsIAotICAgIDIyOSwgMTgsIDgsIDQsIDIyOSwgNjQsIDgsIDQsIDIyOSwgMjMsIDgsIDQsIDIyOSwgNDYsIDgsIDQsIDIyOSwgNjAsIDgsIAotICAgIDQsIDIyOSwgNTksIDgsIDQsIDIzMCwgNSwgOCwgNCwgMjA1LCA4LCA0LCAyMzAsIDE3LCA4LCA0LCAyMjgsIDQyLCA4LCA0LCAKLSAgICAyMjgsIDQ0LCA4LCA0LCAyMjgsIDQzLCA4LCA0LCAyMjgsIDE2MiwgOCwgNCwgMjI4LCAxNDksIDgsIDQsIDIyOCwgMTg1LCAKLSAgICA4LCA0LCAyMjgsIDE3MSwgOCwgNCwgMjI5LCAxNjUsIDgsIDQsIDIyOSwgMTg3LCA4LCA0LCAyMjksIDE3NiwgOCwgNCwgCi0gICAgMjI4LCAzNywgOCwgNCwgMjI4LCAzNCwgOCwgNCwgMjI4LCA5MiwgOCwgNCwgMjI4LCA0MSwgOCwgNCwgMjI4LCAzOSwgOCwgCi0gICAgNCwgMjI4LCA0MCwgOCwgNCwgMjQxLCAxMjcsIDgsIDQsIDI0MSwgMTI2LCA4LCA0LCAyNDEsIDEzMiwgOCwgNCwgMjQxLCAKLSAgICAxMjgsIDgsIDQsIDI0MSwgMTI5LCA4LCA0LCAyNDEsIDEzMSwgOCwgNCwgMjQxLCAxMzAsIDgsIDQsIDI0MSwgMTM3LCA4LCAKLSAgICA0LCAyNDEsIDEzNiwgOCwgNCwgMjQxLCAxMzksIDgsIDQsIDI0MSwgMTM4LCA4LCA0LCAyNDEsIDExOSwgOCwgNCwgMjQxLCAKLSAgICAxMjEsIDgsIDQsIDI0MSwgMTIwLCA4LCA0LCAyNDEsIDEyMywgOCwgNCwgMjQxLCAxMjUsIDgsIDQsIDI0MSwgMTI0LCA4LCAKLSAgICA0LCAyNDEsIDEzMywgOCwgNCwgMjQxLCAxMzUsIDgsIDQsIDI0MSwgMTM0LCA4LCA0LCAyNDEsIDExNSwgOCwgNCwgMjQxLCAKLSAgICAxMTQsIDgsIDQsIDI0MSwgMTIyLCA4LCA0LCAyNDEsIDExOCwgOCwgNCwgMjQxLCAxMTYsIDgsIDQsIDI0MSwgMTE3LCA4LCAKLSAgICA0LCAyNDEsIDEwOSwgOCwgNCwgMjQxLCAxMDgsIDgsIDQsIDI0MSwgMTEzLCA4LCA0LCAyNDEsIDExMiwgOCwgNCwgMjQxLCAKLSAgICAxMTAsIDgsIDQsIDI0MSwgMTExLCA4LCA0LCAyMzIsIDIyNCwgOCwgNCwgMjMyLCAyMTgsIDgsIDQsIDIzMywgMTMsIDgsIDQsIAotICAgIDIzMiwgMjMxLCA4LCA0LCAyMzMsIDUsIDgsIDQsIDIzMywgNCwgOCwgNCwgMjMzLCA4LCA4LCA0LCAyMzMsIDYsIDgsIDQsIAotICAgIDIzMywgMTAyLCA4LCA0LCAyMzMsIDkzLCA4LCA0LCAyMzMsIDE1NywgOCwgNCwgMjMzLCAxMTEsIDgsIDQsIDIzMiwgMTM3LCAKLSAgICA4LCA0LCAyMzIsIDEzNiwgOCwgNCwgMjMyLCAxMzksIDgsIDQsIDIzMiwgMTM4LCA4LCA0LCAyMzIsIDE3MSwgOCwgNCwgCi0gICAgMjMyLCAxNjEsIDgsIDQsIDIzMiwgMjA4LCA4LCA0LCAyMzIsIDE3NSwgOCwgNCwgMjMzLCAyOCwgOCwgNCwgMjMzLCA4MiwgCi0gICAgOCwgNCwgMjMzLCA0MSwgOCwgNCwgMjMyLCAxMzIsIDgsIDQsIDIzMiwgMTMxLCA4LCA0LCAyMzIsIDE1NiwgOCwgNCwgMjMyLCAKLSAgICAxMzUsIDgsIDQsIDIzMiwgMTMzLCA4LCA0LCAyMzIsIDEzNCwgOCwgNCwgMjMyLCAxMTQsIDgsIDQsIDIzMiwgMTEzLCA4LCAKLSAgICA0LCAyMzIsIDEyMSwgOCwgNCwgMjMyLCAxMTcsIDgsIDQsIDIzMiwgMTE1LCA4LCA0LCAyMzIsIDExNiwgOCwgNCwgMjQyLCAKLSAgICAxNjUsIDgsIDQsIDI0MiwgMTY0LCA4LCA0LCAyNDIsIDE5MCwgOCwgNCwgMjQyLCAxNzUsIDgsIDQsIDI0MiwgMTgyLCA4LCAKLSAgICA0LCAyNDIsIDE4MSwgOCwgNCwgMjQyLCAxODQsIDgsIDQsIDI0MiwgMTgzLCA4LCA0LCAyNDMsIDY1LCA4LCA0LCAyNDMsIAotICAgIDYwLCA4LCA0LCAyNDMsIDExMCwgOCwgNCwgMjQzLCA3NSwgOCwgNCwgMjQyLCA3MiwgOCwgNCwgMjQyLCA3MSwgOCwgNCwgCi0gICAgMjQyLCA3NCwgOCwgNCwgMjQyLCA3MywgOCwgNCwgMjQyLCAxMzAsIDgsIDQsIDI0MiwgMTI4LCA4LCA0LCAyNDIsIDE1MCwgCi0gICAgOCwgNCwgMjQyLCAxMzgsIDgsIDQsIDI0MywgOSwgOCwgNCwgMjQzLCA3LCA4LCA0LCAyNDMsIDM4LCA4LCA0LCAyNDMsIDIwLCAKLSAgICA4LCA0LCAyNDIsIDYyLCA4LCA0LCAyNDIsIDYxLCA4LCA0LCAyNDIsIDkyLCA4LCA0LCAyNDIsIDcwLCA4LCA0LCAyNDIsIAotICAgIDYzLCA4LCA0LCAyNDIsIDY5LCA4LCA0LCAyMzQsIDcwLCA4LCA0LCAyMzQsIDY5LCA4LCA0LCAyMzQsIDEwMSwgOCwgNCwgCi0gICAgMjM0LCA4NCwgOCwgNCwgMjM0LCA5NCwgOCwgNCwgMjM0LCA5NywgOCwgNCwgMjM0LCA5NSwgOCwgNCwgMjM0LCAyMDcsIDgsIAotICAgIDQsIDIzNCwgMTk2LCA4LCA0LCAxODEsIDgsIDQsIDIzNCwgMjMzLCA4LCA0LCAyMzMsIDIyMSwgOCwgNCwgMjMzLCAyMjYsIAotICAgIDgsIDQsIDIzMywgMjIzLCA4LCA0LCAyMzQsIDksIDgsIDQsIDIzNCwgNSwgOCwgNCwgMjM0LCAzNywgOCwgNCwgMjM0LCAxNiwgCi0gICAgOCwgNCwgMjM0LCAxNjIsIDgsIDQsIDIzNCwgMTQ2LCA4LCA0LCAyMzQsIDE4OCwgOCwgNCwgMjM0LCAxNjUsIDgsIDQsIAotICAgIDIzMywgMjEwLCA4LCA0LCAyMzMsIDIwOCwgOCwgNCwgMjMzLCAyMzgsIDgsIDQsIDIzMywgMjIwLCA4LCA0LCAyMzMsIDIxMywgCi0gICAgOCwgNCwgMjMzLCAyMTcsIDgsIDQsIDI0MiwgMjQ3LCA4LCA0LCAyNDIsIDI0NiwgOCwgNCwgMjQyLCAyNTEsIDgsIDQsIAotICAgIDI0MiwgMjQ4LCA4LCA0LCAyNDIsIDI1MCwgOCwgNCwgMjQyLCAyNDksIDgsIDQsIDI0MywgMiwgOCwgNCwgMjQzLCAxLCA4LCAKLSAgICA0LCAyNDMsIDUsIDgsIDQsIDI0MywgMywgOCwgNCwgMjQyLCAyMzgsIDgsIDQsIDI0MiwgMjM3LCA4LCA0LCAyNDIsIDI0MCwgCi0gICAgOCwgNCwgMjQyLCAyMzksIDgsIDQsIDI0MiwgMjQzLCA4LCA0LCAyNDIsIDI0MiwgOCwgNCwgMjQyLCAyNDUsIDgsIDQsIAotICAgIDI0MiwgMjQ0LCA4LCA0LCAyNDIsIDI1MywgOCwgNCwgMjQyLCAyNTIsIDgsIDQsIDI0MywgMCwgOCwgNCwgMjQyLCAyNTQsIAotICAgIDgsIDQsIDI0MiwgMjMzLCA4LCA0LCAyNDIsIDIzMiwgOCwgNCwgMjQyLCAyNDEsIDgsIDQsIDI0MiwgMjM2LCA4LCA0LCAKLSAgICAyNDIsIDIzNCwgOCwgNCwgMjQyLCAyMzUsIDgsIDQsIDIzMSwgNjAsIDgsIDQsIDIzMSwgNjEsIDgsIDQsIDIzMSwgNzksIDgsIAotICAgIDQsIDIzMSwgNzgsIDgsIDQsIDIzMSwgODEsIDgsIDQsIDIzMSwgODAsIDgsIDQsIDIzMSwgNTEsIDgsIDQsIDIzMSwgNTMsIAotICAgIDgsIDQsIDIzMSwgNTIsIDgsIDQsIDIzMSwgNTYsIDgsIDQsIDIzMSwgNTUsIDgsIDQsIDIzMSwgNTgsIDgsIDQsIDIzMSwgCi0gICAgNTcsIDgsIDQsIDIzMSwgNjIsIDgsIDQsIDIzMSwgNjQsIDgsIDQsIDIzMSwgNjMsIDgsIDQsIDIzMSwgNDcsIDgsIDQsIAotICAgIDIzMSwgNDYsIDgsIDQsIDIzMSwgNTQsIDgsIDQsIDIzMSwgNTAsIDgsIDQsIDIzMSwgNDgsIDgsIDQsIDIzMSwgNDksIDgsIAotICAgIDQsIDI0MCwgMTcyLCA4LCA0LCAyNDAsIDE3MSwgOCwgNCwgMjQwLCAxNzgsIDgsIDQsIDI0MCwgMTczLCA4LCA0LCAyNDAsIAotICAgIDE3NSwgOCwgNCwgMjQwLCAxNzQsIDgsIDQsIDI0MCwgMTc3LCA4LCA0LCAyNDAsIDE3NiwgOCwgNCwgMjQwLCAxODMsIDgsIAotICAgIDQsIDI0MCwgMTgyLCA4LCA0LCAyNDAsIDE4NSwgOCwgNCwgMjQwLCAxODQsIDgsIDQsIDI0MCwgMTY0LCA4LCA0LCAyNDAsIAotICAgIDE2MywgOCwgNCwgMjQwLCAxNjYsIDgsIDQsIDI0MCwgMTY1LCA4LCA0LCAyNDAsIDE2OCwgOCwgNCwgMjQwLCAxNjcsIDgsIAotICAgIDQsIDI0MCwgMTcwLCA4LCA0LCAyNDAsIDE2OSwgOCwgNCwgMjQwLCAxNzksIDgsIDQsIDI0MCwgMTgxLCA4LCA0LCAyNDAsIAotICAgIDE4MCwgOCwgNCwgMjI5LCAxMTAsIDgsIDQsIDIyOSwgMTEyLCA4LCA0LCAyMjksIDExMSwgOCwgNCwgMjI5LCAxNTAsIDgsIAotICAgIDQsIDIyOSwgMTQ5LCA4LCA0LCAyMjksIDE1OSwgOCwgNCwgMjI5LCAxNTMsIDgsIDQsIDIyOSwgNzMsIDgsIDQsIDIyOSwgCi0gICAgNzIsIDgsIDQsIDIyOSwgNzQsIDgsIDQsIDIyOSwgODIsIDgsIDQsIDIyOSwgNzksIDgsIDQsIDIyOSwgOTAsIDgsIDQsIAotICAgIDIyOSwgODQsIDgsIDQsIDIyOSwgMTQzLCA4LCA0LCAyMjksIDE0OCwgOCwgNCwgMjI5LCAxNDUsIDgsIDQsIDI0MSwgMTQyLCAKLSAgICA4LCA0LCAyNDEsIDE1MiwgOCwgNCwgMjQxLCAxNjAsIDgsIDQsIDI0MSwgMjM0LCA4LCA0LCAyNDEsIDIyNywgOCwgNCwgCi0gICAgMTU5LCA4LCA0LCAyNDEsIDI0NSwgOCwgNCwgMjQwLCAxOTYsIDgsIDQsIDI0MCwgMTk1LCA4LCA0LCAyNDAsIDE5OCwgOCwgCi0gICAgNCwgMjQwLCAxOTcsIDgsIDQsIDI0MCwgMjI5LCA4LCA0LCAyNDAsIDIyMCwgOCwgNCwgMjQxLCA1NCwgOCwgNCwgMjQxLCAKLSAgICAzNCwgOCwgNCwgMjQxLCAxNzksIDgsIDQsIDI0MSwgMjIyLCA4LCA0LCAyNDEsIDE5MCwgOCwgNCwgMjE0LCAyNywgOCwgNCwgCi0gICAgMjE0LCAxMiwgOCwgNCwgMjE0LCA0OSwgOCwgNCwgMjE0LCAzNSwgOCwgNCwgMjEzLCAxNzMsIDgsIDQsIDIxMywgMTc1LCA4LCAKLSAgICA0LCAyMTMsIDE3NCwgOCwgNCwgMjEzLCAxOTEsIDgsIDQsIDIxMywgMjE0LCA4LCA0LCAyMTMsIDE5NywgOCwgNCwgMjEzLCAKLSAgICAyNDYsIDgsIDQsIDIxNCwgNiwgOCwgNCwgMjEzLCAyNTEsIDgsIDQsIDIxMiwgMjMsIDgsIDQsIDIxMiwgMjIsIDgsIDQsIAotICAgIDIxMiwgMzcsIDgsIDQsIDIxMiwgMjUsIDgsIDQsIDIxMiwgMzAsIDgsIDQsIDIxMiwgMzIsIDgsIDQsIDIxMiwgMzEsIDgsIAotICAgIDQsIDIxMiwgOTUsIDgsIDQsIDIxMiwgOTIsIDgsIDQsIDIxMiwgMTA5LCA4LCA0LCAyMTIsIDk4LCA4LCA0LCAyMTIsIDEsIAotICAgIDgsIDQsIDIxMiwgMywgOCwgNCwgMjEyLCAyLCA4LCA0LCAyMTIsIDEyLCA4LCA0LCAyMTIsIDExLCA4LCA0LCAyMTIsIDE2LCAKLSAgICA4LCA0LCAyMTIsIDEzLCA4LCA0LCAyMTIsIDc3LCA4LCA0LCAyMTIsIDg3LCA4LCA0LCAyMTIsIDgxLCA4LCA0LCAyMTEsIAotICAgIDI1MywgOCwgNCwgMjExLCAyNTIsIDgsIDQsIDIxMiwgOCwgOCwgNCwgMjEyLCAwLCA4LCA0LCAyMTEsIDI1NCwgOCwgNCwgCi0gICAgMjExLCAyNTUsIDgsIDQsIDIxMSwgMjQ0LCA4LCA0LCAyMTEsIDI0MywgOCwgNCwgMjExLCAyNDksIDgsIDQsIDIxMSwgMjQ3LCAKLSAgICA4LCA0LCAyMTEsIDI0NSwgOCwgNCwgMjExLCAyNDYsIDgsIDQsIDI0OSwgMjIxLCA4LCA0LCAyNDksIDIxNywgOCwgNCwgCi0gICAgMjQ5LCAyNDQsIDgsIDQsIDI0OSwgMjMwLCA4LCA0LCAyNDksIDI0MSwgOCwgNCwgMjQ5LCAyMzUsIDgsIDQsIDI0OSwgMjQzLCAKLSAgICA4LCA0LCAyNDksIDI0MiwgOCwgNCwgMjUwLCAxNTYsIDgsIDQsIDI1MCwgMTUwLCA4LCA0LCAyNTAsIDIxOSwgOCwgNCwgCi0gICAgMjUwLCAxODMsIDgsIDQsIDI0OSwgNDUsIDgsIDQsIDI0OSwgNDcsIDgsIDQsIDI0OSwgNDYsIDgsIDQsIDI0OSwgOTIsIDgsIAotICAgIDQsIDI0OSwgODMsIDgsIDQsIDI0OSwgMTc1LCA4LCA0LCAyNDksIDEwOCwgOCwgNCwgMjUwLCA5NCwgOCwgNCwgMjUwLCAKLSAgICAxMjQsIDgsIDQsIDI1MCwgOTksIDgsIDQsIDI0OSwgMjYsIDgsIDQsIDI0OSwgMjUsIDgsIDQsIDI0OSwgNTMsIDgsIDQsIAotICAgIDI0OSwgNDMsIDgsIDQsIDI0OSwgMzEsIDgsIDQsIDI0OSwgNDIsIDgsIDQsIDI0OSwgNiwgOCwgNCwgMjQ5LCA1LCA4LCA0LCAKLSAgICAyNDksIDE2LCA4LCA0LCAyNDksIDEyLCA4LCA0LCAyNDksIDcsIDgsIDQsIDI0OSwgOSwgOCwgNCwgMjExLCAyMjcsIDgsIDQsIAotICAgIDIxMSwgMjI2LCA4LCA0LCAyMTEsIDIzMywgOCwgNCwgMjExLCAyMjgsIDgsIDQsIDIxMSwgMjMwLCA4LCA0LCAyMTEsIDIyOSwgCi0gICAgOCwgNCwgMjExLCAyMzIsIDgsIDQsIDIxMSwgMjMxLCA4LCA0LCAyMTEsIDIzOSwgOCwgNCwgMjExLCAyMzgsIDgsIDQsIAotICAgIDIxMSwgMjQyLCA4LCA0LCAyMTEsIDI0MCwgOCwgNCwgMjExLCAyMjMsIDgsIDQsIDIxMSwgMjI1LCA4LCA0LCAyMTEsIDIyNCwgCi0gICAgOCwgNCwgMjExLCAyMzQsIDgsIDQsIDIxMSwgMjM3LCA4LCA0LCAyMTEsIDIzNSwgOCwgNCwgMjExLCAyMTgsIDgsIDQsIAotICAgIDIxMSwgMjIyLCA4LCA0LCAyMTEsIDIyMSwgOCwgNCwgMjExLCAyMTksIDgsIDQsIDIxMSwgMjIwLCA4LCA0LCAyMTEsIDIxMywgCi0gICAgOCwgNCwgMjExLCAyMTIsIDgsIDQsIDIxMSwgMjE3LCA4LCA0LCAyMTEsIDIxNiwgOCwgNCwgMjExLCAyMTQsIDgsIDQsIAotICAgIDIxMSwgMjE1LCA4LCA0LCAyMjcsIDIyNCwgOCwgNCwgMjI3LCAyMjMsIDgsIDQsIDIyNywgMjI5LCA4LCA0LCAyMjcsIDIyNSwgCi0gICAgOCwgNCwgMjI3LCAyMjYsIDgsIDQsIDIyNywgMjI4LCA4LCA0LCAyMjcsIDIyNywgOCwgNCwgMjI3LCAyMzQsIDgsIDQsIAotICAgIDIyNywgMjMzLCA4LCA0LCAyMjcsIDIzNywgOCwgNCwgMjI3LCAyMzYsIDgsIDQsIDIyNywgMjE3LCA4LCA0LCAyMjcsIDIxOCwgCi0gICAgOCwgNCwgMjI3LCAyMjEsIDgsIDQsIDIyNywgMjIyLCA4LCA0LCAyMjcsIDIzMCwgOCwgNCwgMjI3LCAyMzIsIDgsIDQsIAotICAgIDIyNywgMjEyLCA4LCA0LCAyMjcsIDIyMCwgOCwgNCwgMjI3LCAyMTYsIDgsIDQsIDIyNywgMjEzLCA4LCA0LCAyMjcsIDIxNCwgCi0gICAgOCwgNCwgMjI3LCAyMDcsIDgsIDQsIDIyNywgMjA2LCA4LCA0LCAyMjcsIDIxMSwgOCwgNCwgMjI3LCAyMTAsIDgsIDQsIAotICAgIDIyNywgMjA4LCA4LCA0LCAyMjcsIDIwOSwgOCwgNCwgMjIwLCA1NSwgOCwgNCwgMTg5LCA4LCA0LCAyMjAsIDExNywgOCwgNCwgCi0gICAgMjIwLCA1OCwgOCwgNCwgMjIwLCAxMDksIDgsIDQsIDIyMCwgMTEyLCA4LCA0LCAyMjAsIDExMCwgOCwgNCwgMjIyLCAxNDIsIAotICAgIDgsIDQsIDIyMiwgMTMyLCA4LCA0LCAyMjIsIDIwMiwgOCwgNCwgMjIyLCAxNTAsIDgsIDQsIDIxOCwgMjI4LCA4LCA0LCAKLSAgICAyMTgsIDIzMCwgOCwgNCwgMjE4LCAyMjksIDgsIDQsIDIxOSwgMjIxLCA4LCA0LCAyMTksIDIxMCwgOCwgNCwgMjE5LCAyNDIsIAotICAgIDgsIDQsIDIxOSwgMjI0LCA4LCA0LCAyMjEsIDM1LCA4LCA0LCAyMjIsIDEwMCwgOCwgNCwgMjIxLCA1OSwgOCwgNCwgMjE4LCAKLSAgICAyMDYsIDgsIDQsIDIxOCwgMjA0LCA4LCA0LCAyMTksIDI3LCA4LCA0LCAyMTgsIDIyNywgOCwgNCwgMjE4LCAyMDksIDgsIDQsIAotICAgIDIxOCwgMjE3LCA4LCA0LCAyMTgsIDExMywgOCwgNCwgMjE4LCAxMTIsIDgsIDQsIDIxOCwgMTc3LCA4LCA0LCAyMTgsIDExOSwgCi0gICAgOCwgNCwgMjE4LCAxMTQsIDgsIDQsIDIxOCwgMTE4LCA4LCA0LCAyMTksIDEyMywgOCwgNCwgMjE5LCAxMjIsIDgsIDQsIAotICAgIDIxOSwgMTI4LCA4LCA0LCAyMTksIDEyNCwgOCwgNCwgMjE5LCAxMjUsIDgsIDQsIDIxOSwgMTI3LCA4LCA0LCAyMTksIDEyNiwgCi0gICAgOCwgNCwgMjE5LCAxMzUsIDgsIDQsIDIxOSwgMTM0LCA4LCA0LCAyMTksIDE1NywgOCwgNCwgMjE5LCAxMzYsIDgsIDQsIAotICAgIDIxOSwgMTE5LCA4LCA0LCAyMTksIDExOCwgOCwgNCwgMjE5LCAxMjEsIDgsIDQsIDIxOSwgMTIwLCA4LCA0LCAyMTksIDEzMCwgCi0gICAgOCwgNCwgMjE5LCAxMzMsIDgsIDQsIDIxOSwgMTMxLCA4LCA0LCAyMTksIDExNSwgOCwgNCwgMjE5LCAxMTQsIDgsIDQsIAotICAgIDIxOSwgMTE3LCA4LCA0LCAyMTksIDExNiwgOCwgNCwgMjE5LCAxMDksIDgsIDQsIDIxOSwgMTA4LCA4LCA0LCAyMTksIDExMywgCi0gICAgOCwgNCwgMjE5LCAxMTIsIDgsIDQsIDIxOSwgMTEwLCA4LCA0LCAyMTksIDExMSwgOCwgNCwgMjEyLCA3MCwgOCwgNCwgMjEyLCAKLSAgICA2OSwgOCwgNCwgMjEyLCA3NSwgOCwgNCwgMjEyLCA3MiwgOCwgNCwgMjEyLCA1MiwgOCwgNCwgMjEyLCA1NCwgOCwgNCwgCi0gICAgMjEyLCA1MywgOCwgNCwgMjEyLCA1NywgOCwgNCwgMjEyLCA1NiwgOCwgNCwgMjEyLCA2MCwgOCwgNCwgMjEyLCA1OCwgOCwgCi0gICAgNCwgMjEyLCA2NCwgOCwgNCwgMjEyLCA2MywgOCwgNCwgMjEyLCA2NywgOCwgNCwgMjEyLCA2NSwgOCwgNCwgMjEyLCA0OCwgCi0gICAgOCwgNCwgMjEyLCA0NywgOCwgNCwgMjEyLCA1NSwgOCwgNCwgMjEyLCA1MSwgOCwgNCwgMjEyLCA0OSwgOCwgNCwgMjEyLCAKLSAgICA1MCwgOCwgNCwgMjEyLCA0MCwgOCwgNCwgMjEyLCAzOSwgOCwgNCwgMjEyLCA0NCwgOCwgNCwgMjEyLCA0MywgOCwgNCwgCi0gICAgMjEyLCA0MSwgOCwgNCwgMjEyLCA0MiwgOCwgNCwgMjUwLCA3MiwgOCwgNCwgMjUwLCA2OSwgOCwgNCwgMjUwLCA5MiwgOCwgCi0gICAgNCwgMjUwLCA4MCwgOCwgNCwgMjUwLCAyLCA4LCA0LCAyNTAsIDEsIDgsIDQsIDI1MCwgNCwgOCwgNCwgMjUwLCAzLCA4LCA0LCAKLSAgICAyNTAsIDE2LCA4LCA0LCAyNTAsIDE1LCA4LCA0LCAyNTAsIDIzLCA4LCA0LCAyNTAsIDE4LCA4LCA0LCAyNTAsIDUyLCA4LCAKLSAgICA0LCAyNTAsIDUwLCA4LCA0LCAyNTAsIDY3LCA4LCA0LCAyNTAsIDU4LCA4LCA0LCAyNDksIDI1MiwgOCwgNCwgMjUwLCA2LCAKLSAgICA4LCA0LCAyNTAsIDAsIDgsIDQsIDI0OSwgMjUzLCA4LCA0LCAyNDksIDI1NSwgOCwgNCwgMjQ5LCAyNDYsIDgsIDQsIDI0OSwgCi0gICAgMjQ1LCA4LCA0LCAyNDksIDI1MCwgOCwgNCwgMjQ5LCAyNDksIDgsIDQsIDI0OSwgMjQ3LCA4LCA0LCAyNDksIDI0OCwgOCwgCi0gICAgNCwgMjIzLCA4MCwgOCwgNCwgMjIzLCA4MSwgOCwgNCwgMjIzLCA2NywgOCwgNCwgMjIzLCA2OCwgOCwgNCwgMjIzLCA3MSwgCi0gICAgOCwgNCwgMjIzLCA3MCwgOCwgNCwgMjIzLCA3MywgOCwgNCwgMjIzLCA3MiwgOCwgNCwgMjIzLCA3NSwgOCwgNCwgMjIzLCAKLSAgICA3NCwgOCwgNCwgMjIzLCA3OSwgOCwgNCwgMjIzLCA3NiwgOCwgNCwgMjIzLCA2MywgOCwgNCwgMjIzLCA2MiwgOCwgNCwgCi0gICAgMjIzLCA2OSwgOCwgNCwgMjIzLCA2NiwgOCwgNCwgMjIzLCA2NCwgOCwgNCwgMjIzLCA2NSwgOCwgNCwgMjIzLCA1NywgOCwgCi0gICAgNCwgMjIzLCA1NiwgOCwgNCwgMjIzLCA2MSwgOCwgNCwgMjIzLCA2MCwgOCwgNCwgMjIzLCA1OCwgOCwgNCwgMjIzLCA1OSwgCi0gICAgOCwgNCwgMjI4LCAxNDUsIDgsIDQsIDIyOCwgMTQ0LCA4LCA0LCAyMjgsIDE0NywgOCwgNCwgMjI4LCAxNDYsIDgsIDQsIAotICAgIDIyOCwgMTM3LCA4LCA0LCAyMjgsIDEzOSwgOCwgNCwgMjI4LCAxMzgsIDgsIDQsIDIyOCwgMTQxLCA4LCA0LCAyMjgsIDE0MCwgCi0gICAgOCwgNCwgMjI4LCAxNDMsIDgsIDQsIDIyOCwgMTQyLCA4LCA0LCAyMjgsIDEzMiwgOCwgNCwgMjI4LCAxMzEsIDgsIDQsIAotICAgIDIyOCwgMTM2LCA4LCA0LCAyMjgsIDEzNSwgOCwgNCwgMjI4LCAxMzMsIDgsIDQsIDIyOCwgMTM0LCA4LCA0LCAyMjgsIDEyNiwgCi0gICAgOCwgNCwgMjI4LCAxMjUsIDgsIDQsIDIyOCwgMTMwLCA4LCA0LCAyMjgsIDEyOSwgOCwgNCwgMjI4LCAxMjcsIDgsIDQsIAotICAgIDIyOCwgMTI4LCA4LCA0LCAyMjAsIDI1MSwgOCwgNCwgMjIwLCAyNDcsIDgsIDQsIDIyMSwgMjQsIDgsIDQsIDIyMSwgNiwgOCwgCi0gICAgNCwgMjIwLCAxNDAsIDgsIDQsIDIyMCwgMTQyLCA4LCA0LCAyMjAsIDE0MSwgOCwgNCwgMjIwLCAxNjAsIDgsIDQsIDIyMCwgCi0gICAgMTU3LCA4LCA0LCAyMjAsIDE4NywgOCwgNCwgMjIwLCAxNzgsIDgsIDQsIDIyMCwgMjIyLCA4LCA0LCAyMjAsIDIxNSwgOCwgCi0gICAgNCwgMjIwLCAyNDMsIDgsIDQsIDIyMCwgMjMwLCA4LCA0LCAyMjAsIDEzNiwgOCwgNCwgMjIwLCAxMzUsIDgsIDQsIDIyMCwgCi0gICAgMTUwLCA4LCA0LCAyMjAsIDEzOSwgOCwgNCwgMjIwLCAxMzcsIDgsIDQsIDIyMCwgMTM4LCA4LCA0LCAyMjAsIDEyMCwgOCwgCi0gICAgNCwgMjIwLCAxMTksIDgsIDQsIDIyMCwgMTI2LCA4LCA0LCAyMjAsIDEyMywgOCwgNCwgMjIwLCAxMjEsIDgsIDQsIDIyMCwgCi0gICAgMTIyLCA4LCA0LCAyMjQsIDMzLCA4LCA0LCAyMjQsIDI4LCA4LCA0LCAyMDMsIDgsIDQsIDIyNCwgMzksIDgsIDQsIDIyMywgCi0gICAgMzEsIDgsIDQsIDIyMywgMzMsIDgsIDQsIDIyMywgMzIsIDgsIDQsIDIyMywgOTAsIDgsIDQsIDIyMywgODMsIDgsIDQsIAotICAgIDIyMywgMTEyLCA4LCA0LCAyMjMsIDk0LCA4LCA0LCAyMjMsIDE5NiwgOCwgNCwgMjI0LCAyMSwgOCwgNCwgMjIzLCAyMzEsIAotICAgIDgsIDQsIDIyMywgMjQsIDgsIDQsIDIyMywgMjIsIDgsIDQsIDIyMywgNTEsIDgsIDQsIDIyMywgMzAsIDgsIDQsIDIyMywgCi0gICAgMjYsIDgsIDQsIDIyMywgMjcsIDgsIDQsIDIyMywgNywgOCwgNCwgMjIzLCA2LCA4LCA0LCAyMjMsIDEyLCA4LCA0LCAyMjMsIAotICAgIDEwLCA4LCA0LCAyMjMsIDgsIDgsIDQsIDIyMywgOSwgOCwgNCwgMjM1LCAxMDEsIDgsIDQsIDIzNSwgMTAwLCA4LCA0LCAKLSAgICAyMzUsIDExMCwgOCwgNCwgMjM1LCAxMDIsIDgsIDQsIDIzNSwgMTA2LCA4LCA0LCAyMzUsIDEwNSwgOCwgNCwgMjM1LCAxMDgsIAotICAgIDgsIDQsIDIzNSwgMTA3LCA4LCA0LCAyMzUsIDQ0LCA4LCA0LCAyMzUsIDQzLCA4LCA0LCAyMzUsIDQ2LCA4LCA0LCAyMzUsIAotICAgIDQ1LCA4LCA0LCAyMzUsIDU5LCA4LCA0LCAyMzUsIDU3LCA4LCA0LCAyMzUsIDcxLCA4LCA0LCAyMzUsIDYxLCA4LCA0LCAKLSAgICAyMzUsIDM4LCA4LCA0LCAyMzUsIDM2LCA4LCA0LCAyMzUsIDU0LCA4LCA0LCAyMzUsIDQyLCA4LCA0LCAyMzUsIDM5LCA4LCAKLSAgICA0LCAyMzUsIDQwLCA4LCA0LCAyMzUsIDMwLCA4LCA0LCAyMzUsIDI5LCA4LCA0LCAyMzUsIDM0LCA4LCA0LCAyMzUsIDMzLCAKLSAgICA4LCA0LCAyMzUsIDMxLCA4LCA0LCAyMzUsIDMyLCA4LCA0LCAyMjQsIDE5MSwgOCwgNCwgMjI0LCAxODksIDgsIDQsIDIyNCwgCi0gICAgMTk4LCA4LCA0LCAyMjQsIDE5MiwgOCwgNCwgMjI0LCAxOTUsIDgsIDQsIDIyNCwgMTk0LCA4LCA0LCAyMjQsIDE5NywgOCwgCi0gICAgNCwgMjI0LCAxOTYsIDgsIDQsIDIyNCwgMTQ0LCA4LCA0LCAyMjQsIDE0MSwgOCwgNCwgMjI0LCAxNDYsIDgsIDQsIDIyNCwgCi0gICAgMTQ1LCA4LCA0LCAyMjQsIDE3OCwgOCwgNCwgMjI0LCAxNzcsIDgsIDQsIDIyNCwgMTg3LCA4LCA0LCAyMjQsIDE4MSwgOCwgCi0gICAgNCwgMjI0LCAxMzYsIDgsIDQsIDIyNCwgMTMyLCA4LCA0LCAyMjQsIDE3NSwgOCwgNCwgMjI0LCAxNDAsIDgsIDQsIDIyNCwgCi0gICAgMTM4LCA4LCA0LCAyMjQsIDEzOSwgOCwgNCwgMjI0LCAxMTYsIDgsIDQsIDIyNCwgMTE0LCA4LCA0LCAyMjQsIDEyNiwgOCwgCi0gICAgNCwgMjI0LCAxMTksIDgsIDQsIDIyNCwgMTE3LCA4LCA0LCAyMjQsIDExOCwgOCwgNCwgMjM1LCA5MCwgOCwgNCwgMjM1LCAKLSAgICA4OSwgOCwgNCwgMjM1LCA5NiwgOCwgNCwgMjM1LCA5MSwgOCwgNCwgMjM1LCA5MywgOCwgNCwgMjM1LCA5MiwgOCwgNCwgCi0gICAgMjM1LCA5NSwgOCwgNCwgMjM1LCA5NCwgOCwgNCwgMjM1LCA4MSwgOCwgNCwgMjM1LCA4MywgOCwgNCwgMjM1LCA4MiwgOCwgCi0gICAgNCwgMjM1LCA4NiwgOCwgNCwgMjM1LCA4NSwgOCwgNCwgMjM1LCA4OCwgOCwgNCwgMjM1LCA4NywgOCwgNCwgMjM1LCA3NywgCi0gICAgOCwgNCwgMjM1LCA3NiwgOCwgNCwgMjM1LCA4NCwgOCwgNCwgMjM1LCA4MCwgOCwgNCwgMjM1LCA3OCwgOCwgNCwgMjM1LCAKLSAgICA3OSwgOCwgNCwgMjM1LCA3MywgOCwgNCwgMjM1LCA3MiwgOCwgNCwgMjM1LCA3NSwgOCwgNCwgMjM1LCA3NCwgOCwgNCwgCi0gICAgMjI4LCAyNDksIDgsIDQsIDIyOCwgMjQ4LCA4LCA0LCAyMjksIDAsIDgsIDQsIDIyOCwgMjUwLCA4LCA0LCAyMjgsIDI1MiwgCi0gICAgOCwgNCwgMjI4LCAyNTEsIDgsIDQsIDIyOCwgMjU1LCA4LCA0LCAyMjgsIDI1MywgOCwgNCwgMjI4LCAyMzgsIDgsIDQsIAotICAgIDIyOCwgMjM5LCA4LCA0LCAyMjgsIDI0NCwgOCwgNCwgMjI4LCAyNDMsIDgsIDQsIDIyOCwgMjQ3LCA4LCA0LCAyMjgsIDI0NSwgCi0gICAgOCwgNCwgMjI4LCAyMzMsIDgsIDQsIDIyOCwgMjQyLCA4LCA0LCAyMjgsIDIzNywgOCwgNCwgMjI4LCAyMzQsIDgsIDQsIAotICAgIDIyOCwgMjM1LCA4LCA0LCAyMjgsIDIyOCwgOCwgNCwgMjI4LCAyMjcsIDgsIDQsIDIyOCwgMjMyLCA4LCA0LCAyMjgsIDIzMSwgCi0gICAgOCwgNCwgMjI4LCAyMjksIDgsIDQsIDIyOCwgMjMwLCA4LCA0LCAyMjgsIDAsIDgsIDQsIDIyNywgMjU1LCA4LCA0LCAyMjgsIAotICAgIDEwLCA4LCA0LCAyMjgsIDQsIDgsIDQsIDIyOCwgNywgOCwgNCwgMjI4LCA2LCA4LCA0LCAyMjgsIDksIDgsIDQsIDIyOCwgOCwgCi0gICAgOCwgNCwgMjI3LCAyNDMsIDgsIDQsIDIyNywgMjQ1LCA4LCA0LCAyMjcsIDI0NCwgOCwgNCwgMjI3LCAyNDksIDgsIDQsIAotICAgIDIyNywgMjQ4LCA4LCA0LCAyMjcsIDI1MywgOCwgNCwgMjI3LCAyNTAsIDgsIDQsIDIyNywgMjQxLCA4LCA0LCAyMjcsIDI0MCwgCi0gICAgOCwgNCwgMjI3LCAyNDcsIDgsIDQsIDIyNywgMjQyLCA4LCA0LCAyMTMsIDEzOCwgOCwgNCwgMjEzLCAxMzcsIDgsIDQsIAotICAgIDIxMywgMTQ1LCA4LCA0LCAyMTMsIDE0MCwgOCwgNCwgMjEzLCAxNDIsIDgsIDQsIDIxMywgMTQxLCA4LCA0LCAyMTMsIDE0NCwgCi0gICAgOCwgNCwgMjEzLCAxNDMsIDgsIDQsIDIxMywgMTI3LCA4LCA0LCAyMTMsIDEyOCwgOCwgNCwgMjEzLCAxMzIsIDgsIDQsIAotICAgIDIxMywgMTMxLCA4LCA0LCAyMTMsIDEzNiwgOCwgNCwgMjEzLCAxMzQsIDgsIDQsIDIxMywgMTA5LCA4LCA0LCAyMTMsIDEwNywgCi0gICAgOCwgNCwgMjEzLCAxMTksIDgsIDQsIDIxMywgMTEyLCA4LCA0LCAyMTMsIDExMCwgOCwgNCwgMjEzLCAxMTEsIDgsIDQsIAotICAgIDIxMiwgMjQxLCA4LCA0LCAyMTIsIDIzOSwgOCwgNCwgMjEyLCAyNTUsIDgsIDQsIDIxMiwgMjQyLCA4LCA0LCAyMTIsIDI0OSwgCi0gICAgOCwgNCwgMjEyLCAyNDgsIDgsIDQsIDIxMiwgMjUyLCA4LCA0LCAyMTIsIDI1MCwgOCwgNCwgMjEyLCAxODIsIDgsIDQsIAotICAgIDIxMiwgMTgxLCA4LCA0LCAyMTIsIDE4NSwgOCwgNCwgMjEyLCAxODMsIDgsIDQsIDIxMiwgMjE1LCA4LCA0LCAyMTIsIDIxMiwgCi0gICAgOCwgNCwgMjEyLCAyMzUsIDgsIDQsIDIxMiwgMjE5LCA4LCA0LCAyMTIsIDE3MywgOCwgNCwgMjEyLCAxNzAsIDgsIDQsIAotICAgIDIxMiwgMjAzLCA4LCA0LCAyMTIsIDE4MCwgOCwgNCwgMjEyLCAxNzYsIDgsIDQsIDIxMiwgMTc3LCA4LCA0LCAyMTIsIDE1NSwgCi0gICAgOCwgNCwgMjEyLCAxNTQsIDgsIDQsIDIxMiwgMTYxLCA4LCA0LCAyMTIsIDE1OCwgOCwgNCwgMjEyLCAxNTYsIDgsIDQsIAotICAgIDIxMiwgMTU3LCA4LCAzNCwgMjI0LCAxNzgsIDgsIDM0LCAyMzMsIDEzLCA4LCAzNCwgMjM0LCA3MCwgOCwgMzQsIDIyOCwgNCwgCi0gICAgOCwgMzQsIDI0OSwgMTIsIDgsIDM0LCAyMTksIDEyOCwgOCwgMzQsIDI0MiwgMjQ0LCA4LCAzNCwgMjQzLCAyMCwgOCwgMzQsIAotICAgIDIzMSwgNDIsIDgsIDM0LCAyNDAsIDE3MiwgOCwgMzQsIDIzMiwgMTE2LCA4LCAzNCwgMjUyLCAzLCA4LCAzNCwgMjMwLCAKLSAgICAxOTYsIDgsIDM0LCAyMTIsIDIzNSwgOCwgMzQsIDIyNSwgOCwgOCwgMzQsIDI0MCwgMTY2LCA4LCAzNCwgMjE3LCAyNTMsIDgsIAotICAgIDM0LCAyNDMsIDExMCwgOCwgMzQsIDIxMiwgMCwgOCwgMzQsIDI0OSwgNiwgOCwgMzQsIDI0OCwgNDYsIDgsIDM0LCAyNTEsIAotICAgIDI3LCA4LCAzNCwgMjQyLCAyNDAsIDgsIDM0LCAyMjcsIDI1MCwgOCwgMzQsIDIxNiwgODIsIDgsIDM0LCAyMjcsIDQxLCA4LCAKLSAgICAzNCwgMjM1LCA3NywgOCwgMzQsIDIxMiwgMTIsIDgsIDM0LCAyMjQsIDI0NCwgOCwgMzQsIDI0MSwgOTQsIDgsIDM0LCAyMTIsIAotICAgIDI0MSwgOCwgMzQsIDIxNCwgOTUsIDgsIDM0LCAyMjAsIDEyNiwgOCwgMzQsIDIxNCwgMjIxLCA4LCAzNCwgMjEyLCAxMDksIAotICAgIDgsIDM0LCAyMzUsIDcxLCA4LCAzNCwgMjI3LCAyMTYsIDgsIDM0LCAyMzUsIDc1LCA4LCAzNCwgMjQyLCAxMzAsIDgsIDM0LCAKLSAgICAyMzUsIDk1LCA4LCAzNCwgMjEzLCAyMTQsIDgsIDM0LCAyNDYsIDMzLCA4LCAzNCwgMjIwLCAxMzgsIDgsIDM0LCAyMzMsIDgsIAotICAgIDgsIDM0LCAyNDksIDE2LCA4LCAzNCwgMjQ5LCA0NiwgOCwgMzQsIDI0OSwgMjMwLCA4LCAzNCwgMjQwLCAxNjksIDgsIDM0LCAKLSAgICAyMjAsIDI1MSwgOCwgMzQsIDIxMSwgMjU1LCA4LCAzNCwgMjIwLCAxNzgsIDgsIDM0LCAyNTAsIDY3LCA4LCAzNCwgMjExLCAKLSAgICAyMzAsIDgsIDM0LCAyMjksIDI1MiwgOCwgMzQsIDIzNCwgMTg4LCAyMzIsIDIyNSwgMSwgMjUyLCAxMDcsIDIzMiwgMjI1LCAKLSAgICAxLCAxOTMsIDIzMiwgMjI1LCAxLCAyMjYsIDIzLCAyMzIsIDIyNSwgMSwgMjQ4LCAxNjQsIDIzMiwgMjI1LCAxLCAyMTgsIAotICAgIDUyLCAyMzIsIDIyNSwgMSwgMjE3LCAxNjEsIDIzMiwgMjI1LCAxLCAyNDMsIDExMCwgMjMyLCAyMjUsIDEsIDE4MSwgMjMyLCAKLSAgICAyMjUsIDEsIDIzNCwgMTM4LCAyMzIsIDIyNSwgMSwgMjM1LCAxMzksIDIzMiwgMjI1LCAxLCAyNTAsIDIxOSwgMjMyLCAyMjUsIAotICAgIDEsIDI1MCwgOTIsIDIzMiwgMjI1LCAxLCAyNDUsIDI0OSwgMjMyLCAyMjUsIDEsIDIxNiwgMTQxLCAyMzIsIDIyNSwgMSwgCi0gICAgMjE2LCAxMzMsIDIzMiwgMjI1LCAxLCAxODgsIDIzMiwgMjI1LCAxLCAyMDUsIDIzMiwgMjI1LCAxLCAyMzMsIDE1NywgMjMyLCAKLSAgICAyMjUsIDEsIDIyMiwgMjAyLCAyMzIsIDIyNSwgMSwgMjEyLCA3NSwgMjMyLCAyMjUsIDEsIDIxMiwgMTA5LCAyMzIsIDIyNSwgCi0gICAgMSwgMjI5LCAxNTksIDIzMiwgMjI1LCAxLCAxNTksIDIzMiwgMjI1LCAxLCAyMTMsIDE1MywgMjMyLCAyMjUsIDEsIDI0MSwgCi0gICAgMTc0LCAyMzIsIDIyNSwgMSwgMjQ0LCAxNjQsIDIzMiwgMjI1LCAxLCAyMTQsIDQ5LCAyMzIsIDIyNSwgMSwgMjIxLCAyNCwgCi0gICAgMjMyLCAyMjUsIDEsIDE4NiwgMjMyLCAyMjUsIDEsIDI0MiwgMjI1LCAyMzIsIDIyNSwgMSwgNjEsIDIzMiwgMjI1LCAxLCAKLSAgICAyNTQsIDE0OCwgMjMyLCAyMjUsIDEsIDc0LCAyMzIsIDIyNSwgMSwgMjQ1LCAyMiwgMjMyLCAyMjUsIDEsIDcyLCAyMzIsIAotICAgIDIyNSwgMSwgNzUsIDIzMiwgMjI1LCAxLCA2OSwgMjMyLCAyMjUsIDEsIDIxNSwgMTgzLCAyMzIsIDIyNSwgMSwgMjE1LCAKLSAgICAxNzgsIDIzMiwgMjI1LCAxLCAyMjcsIDk5LCAyMzIsIDIyNSwgMSwgMTYwLCAyMzAsIDEwNCwgMjE3LCA3MSwgMjMyLCAyMjUsIAotICAgIDEsIDE2MCwgMjMwLCA0NiwgMjI1LCAxNTAsIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyNDksIDE1LCAyMzIsIDIyNSwgCi0gICAgMSwgMTYwLCAyMzAsIDEwNCwgMjUxLCAxMjgsIDIzMiwgMjI1LCAxLCAxNjAsIDIzMCwgMTA0LCAyMDUsIDIzMiwgMjI1LCAxLCAKLSAgICAxNjAsIDIzMCwgMTA0LCAyMzUsIDExNiwgMjMyLCAyMjUsIDIyNSwgMjcsIDI0OSwgMTU3LCAyMzIsIDIyNSwgMjI1LCAyNywgCi0gICAgMjQzLCAyMDAsIDIxOSwgNjksIDM5LCA0LCAyNDUsIDE2NSwgMzksIDQsIDI0NSwgMTYyLCAzOSwgNCwgMjQxLCAyMDQsIDM5LCAKLSAgICA0LCAyMTQsIDEsIDM5LCA0LCAyMTQsIDAsIDM5LCA0LCAyMjYsIDg2LCAzOSwgNCwgMjUxLCAxOTEsIDM5LCA0LCAyNTEsIAotICAgIDI0MiwgMzksIDQsIDIzMSwgMTc5LCAzOSwgNCwgMjM0LCAwLCAzOSwgNCwgMjMxLCA3MywgMzksIDQsIDI0MywgNTEsIDM5LCAKLSAgICA0LCAyNDQsIDExNiwgMzksIDQsIDIxNCwgMjI3LCAzOSwgNCwgMjE3LCAyMTksIDM5LCA0LCAyMTcsIDE0NywgMzksIDQsIAotICAgIDI0NywgMjI0LCAzOSwgNCwgMjQ3LCAyMjEsIDM5LCA0LCAyMzMsIDc0LCAzOSwgNCwgMjI0LCAxLCAzOSwgNCwgMjQ4LCAyOCwgCi0gICAgMzksIDQsIDIyOSwgMjE5LCAzOSwgNCwgMjIyLCA4OSwgMzksIDQsIDIyMCwgMjQxLCAzOSwgNCwgMjEyLCA4NSwgMzksIDQsIAotICAgIDIxMiwgNjYsIDM5LCA0LCAyNTAsIDExNiwgMzksIDQsIDIzNSwgMTI1LCAzOSwgNCwgMjI5LCA3LCAzOSwgNCwgMjEzLCAzNSwgCi0gICAgMzksIDQsIDIzNCwgMTg3LCAzOSwgNCwgMjI5LCAxMzYsIDM5LCA0LCAyNDMsIDMxLCAzOSwgNCwgMjMxLCAxNDUsIDM5LCA0LCAKLSAgICAyMjksIDE4NCwgMzksIDQsIDIyOCwgMTYsIDM5LCA0LCA3MiwgMzksIDQsIDIzNSwgMjUxLCAzOSwgNCwgMjQxLCAxNjUsIAotICAgIDM5LCA0LCAyNDEsIDE0NiwgMzksIDQsIDIxMywgMjM1LCAzOSwgNCwgMjEzLCAyMjYsIDM5LCA0LCAyMjUsIDI0MCwgMzksIAotICAgIDQsIDI1MSwgMTg5LCAzOSwgNCwgMjUxLCAxODQsIDM5LCA0LCAyMzEsIDE3MiwgMzksIDQsIDIzMywgMjUzLCAzOSwgNCwgCi0gICAgMjMxLCA3MCwgMzksIDQsIDI0MywgNDcsIDM5LCA0LCAyNDQsIDkwLCAzOSwgNCwgMjE0LCAxNTQsIDM5LCA0LCAyMTcsIDcxLCAKLSAgICAzOSwgNCwgMjE3LCAxMjgsIDM5LCA0LCAyNDcsIDIxNiwgMzksIDQsIDI0NywgMjIwLCAzOSwgNCwgMjMzLCAxMywgMzksIDQsIAotICAgIDIyMywgMTg4LCAzOSwgNCwgMjQ3LCAyMTEsIDM5LCA0LCAyMjksIDIxMywgMzksIDQsIDIyMCwgMTE3LCAzOSwgNCwgMjIwLCAKLSAgICAyMTIsIDM5LCA0LCAyMTIsIDM3LCAzOSwgNCwgMjEyLCA2MiwgMzksIDQsIDI0OSwgMjQ0LCAzOSwgNCwgMjM1LCAxMTAsIAotICAgIDM5LCA0LCAyMjksIDAsIDM5LCA0LCAyMTIsIDI1NSwgMzksIDQsIDIzNCwgMTAxLCAzOSwgNCwgMjI5LCAxMjgsIDM5LCA0LCAKLSAgICAyNDIsIDE5MCwgMzksIDQsIDIzMSwgNDIsIDM5LCA0LCAyMjksIDY0LCAzOSwgNCwgMjI4LCAxMCwgMzksIDQsIDYxLCAzOSwgCi0gICAgNCwgMjU0LCAzMiwgMzksIDQsIDIyOSwgMTU1LCAzOSwgNCwgMTU5LCAzOSwgNCwgMjQyLCAxLCAzOSwgNCwgMjE0LCA0OSwgCi0gICAgMzksIDQsIDIxNCwgMzksIDM5LCA0LCAxOTMsIDM5LCA0LCAyNTEsIDE5NSwgMzksIDQsIDI1MiwgMTA3LCAzOSwgNCwgMjMxLCAKLSAgICAxODcsIDM5LCA0LCAyMzQsIDQsIDM5LCA0LCAyMzQsIDMsIDM5LCA0LCAyMzEsIDc3LCAzOSwgNCwgMjQzLCA1NSwgMzksIDQsIAotICAgIDI0NCwgMTY0LCAzOSwgNCwgMjE1LCAxLCAzOSwgNCwgMjE4LCA1MiwgMzksIDQsIDIxNywgMTYxLCAzOSwgNCwgMjQ3LCAKLSAgICAyMzIsIDM5LCA0LCAyNDcsIDIyMywgMzksIDQsIDIzMywgMTU3LCAzOSwgNCwgMjAzLCAzOSwgNCwgMjQ4LCAxNjQsIDM5LCAKLSAgICA0LCAyMjksIDIyOCwgMzksIDQsIDIyMiwgMjAyLCAzOSwgNCwgMjIxLCAyNCwgMzksIDQsIDIxMiwgMTA5LCAzOSwgNCwgCi0gICAgMjEyLCA3NSwgMzksIDQsIDI1MCwgMjE5LCAzOSwgNCwgMjM1LCAxMzksIDM5LCA0LCAyMjksIDE2LCAzOSwgNCwgMTg2LCAKLSAgICAzOSwgNCwgMTgxLCAzOSwgNCwgMjM0LCAyMzksIDM5LCA0LCAyMjksIDE0MSwgMzksIDQsIDI0MywgMTEwLCAzOSwgNCwgCi0gICAgMTg4LCAzOSwgNCwgMjA1LCAzOSwgNCwgMjI4LCAyMywgMzksIDQsIDIyNywgNDksIDM5LCA0LCAyMjcsIDQ1LCAzOSwgNCwgCi0gICAgMjQxLCAzOSwgMzksIDQsIDIxMywgMjAyLCAzOSwgNCwgMjEzLCAxOTgsIDM5LCA0LCAyMjUsIDEyOSwgMzksIDQsIDI1MSwgCi0gICAgMTg3LCAzOSwgNCwgMjUxLCAxMTgsIDM5LCA0LCAyMzEsIDE2NywgMzksIDQsIDIzMywgMjUxLCAzOSwgNCwgMjMxLCA2NiwgCi0gICAgMzksIDQsIDI0MywgNDMsIDM5LCA0LCAyNDQsIDMsIDM5LCA0LCAyMTQsIDEwOCwgMzksIDQsIDIxNiwgMjMwLCAzOSwgNCwgCi0gICAgMjE3LCAxMDYsIDM5LCA0LCAyNDcsIDIxNCwgMzksIDQsIDI0NywgMjE4LCAzOSwgNCwgMjMyLCAxODAsIDM5LCA0LCAyMjMsIAotICAgIDk5LCAzOSwgNCwgMjQ3LCA3OSwgMzksIDQsIDIyOSwgMjAwLCAzOSwgNCwgMjE5LCAyMjYsIDM5LCA0LCAyMjAsIDE4MSwgCi0gICAgMzksIDQsIDIxMiwgMTQsIDM5LCA0LCAyMTIsIDU5LCAzOSwgNCwgMjQ5LCAxMTMsIDM5LCA0LCAyMzUsIDYyLCAzOSwgNCwgCi0gICAgMjI4LCAyNDYsIDM5LCA0LCAyMTIsIDIyMCwgMzksIDQsIDIzNCwgMTksIDM5LCA0LCAyMjksIDEyNiwgMzksIDQsIDI0MiwgCi0gICAgMTQwLCAzOSwgNCwgMjMwLCAyMDIsIDM5LCA0LCAyMjgsIDE3NSwgMzksIDQsIDIyNywgMjUxLCAzOSwgNCwgNjksIDM5LCA0LCAKLSAgICAyMTUsIDE2MCwgMzksIDQsIDI0MCwgMjEyLCAzOSwgNCwgMjQwLCAyMDIsIDM5LCA0LCAyMTMsIDE4MywgMzksIDQsIDIxMywgCi0gICAgMTc3LCAzOSwgNCwgMjI1LCAzNSwgMzksIDQsIDI1MSwgMTg2LCAzOSwgNCwgMjUxLCA1NCwgMzksIDQsIDIzMSwgMTY2LCAKLSAgICAzOSwgNCwgMjMzLCAyNDksIDM5LCA0LCAyMzEsIDY1LCAzOSwgNCwgMjQzLCA0MiwgMzksIDQsIDI0MywgMjA1LCAzOSwgNCwgCi0gICAgMjE0LCA5OSwgMzksIDQsIDIxNiwgODIsIDM5LCA0LCAyMTcsIDkwLCAzOSwgNCwgMjQ3LCAyMTIsIDM5LCA0LCAyNDcsIAotICAgIDIxNywgMzksIDQsIDIzMiwgMTU2LCAzOSwgNCwgMjIzLCA1MSwgMzksIDQsIDI0NiwgMzMsIDM5LCA0LCAyMjksIDE5NSwgCi0gICAgMzksIDQsIDIxOSwgMjcsIDM5LCA0LCAyMjAsIDE1MCwgMzksIDQsIDIxMiwgOCwgMzksIDQsIDIxMiwgNTUsIDM5LCA0LCAKLSAgICAyNDksIDUzLCAzOSwgNCwgMjM1LCA1NCwgMzksIDQsIDIyOCwgMjQyLCAzOSwgNCwgMjEyLCAyMDMsIDM5LCA0LCAyMzMsIAotICAgIDIzOCwgMzksIDQsIDIyOSwgMTI1LCAzOSwgNCwgMjQyLCA5MiwgMzksIDQsIDIzMCwgMTcyLCAzOSwgNCwgMjI4LCA5MiwgCi0gICAgMzksIDQsIDIyNywgMjQ3LCAzOSwgNCwgNzUsIDM5LCA0LCAyMjcsIDYyLCAzOSwgNCwgMjI5LCA4NiwgMzksIDQsIDI0MSwgCi0gICAgNTQsIDM5LCA0LCAyNDEsIDQyLCAzOSwgNCwgMjEzLCAyMTQsIDM5LCA0LCAyMTMsIDIwMywgMzksIDQsIDIyNSwgMTUwLCAKLSAgICAzOSwgNCwgMjUxLCAxODgsIDM5LCA0LCAyNTEsIDEyOCwgMzksIDQsIDIzMSwgMTY4LCAzOSwgNCwgMjMzLCAyNTIsIDM5LCAKLSAgICA0LCAyMzEsIDY4LCAzOSwgNCwgMjQzLCA0NSwgMzksIDQsIDI0MywgNDQsIDM5LCA0LCAyNDQsIDEyLCAzOSwgNCwgMjE0LCAKLSAgICAxMTksIDM5LCA0LCAxMDgsIDM5LCA0LCAyMTcsIDEwOSwgMzksIDQsIDI0NywgMjE1LCAzOSwgNCwgMjQ3LCAyMTksIDM5LCAKLSAgICA0LCAyMzIsIDIwOCwgMzksIDQsIDIyMywgMTEyLCAzOSwgNCwgMjQ3LCA5OSwgMzksIDQsIDIyOSwgMjA0LCAzOSwgNCwgCi0gICAgMjE5LCAyNDIsIDM5LCA0LCAyMjAsIDE4NywgMzksIDQsIDIxMiwgMTYsIDM5LCA0LCAyMTIsIDYwLCAzOSwgNCwgMjQ5LCAKLSAgICAxNzUsIDM5LCA0LCAyMzUsIDcxLCAzOSwgNCwgMjI4LCAyNDcsIDM5LCA0LCAyMTIsIDIzNSwgMzksIDQsIDIzNCwgMzcsIAotICAgIDM5LCA0LCAyMjksIDEyNywgMzksIDQsIDI0MiwgMTUwLCAzOSwgNCwgMjMwLCAyMzEsIDM5LCA0LCAyMjgsIDE4NSwgMzksIAotICAgIDQsIDIyNywgMjUzLCAzOSwgNCwgNzQsIDM5LCA0LCAyNDUsIDEwOCwgMzksIDQsIDIyOSwgMTQ2LCAzOSwgNCwgMjQxLCAKLSAgICAyMjIsIDM5LCA0LCAyNDEsIDE5MywgMzksIDQsIDIxNCwgNiwgMzksIDQsIDIxMywgMjUzLCAzOSwgNCwgMjI2LCA5NiwgMzksIAotICAgIDQsIDI1MSwgMTkyLCAzOSwgNCwgMjUxLCAyNTEsIDM5LCA0LCAyMzEsIDE4MCwgMzksIDQsIDIzNCwgMSwgMzksIDQsIDIzMywgCi0gICAgMjU1LCAzOSwgNCwgMjMxLCA3NCwgMzksIDQsIDI0MywgNTIsIDM5LCA0LCAyNDMsIDUwLCAzOSwgNCwgMjQ0LCAxMjMsIDM5LCAKLSAgICA0LCAyMTQsIDIzMiwgMzksIDQsIDIxNywgMjI5LCAzOSwgNCwgMjE3LCAxNDgsIDM5LCA0LCAyNDcsIDIyNSwgMzksIDQsIAotICAgIDI0NywgMjIyLCAzOSwgNCwgMjMzLCA4MiwgMzksIDQsIDIyNCwgMjEsIDM5LCA0LCAyNDgsIDQxLCAzOSwgNCwgMjI5LCAKLSAgICAyMjAsIDM5LCA0LCAyMjIsIDEwMCwgMzksIDQsIDIyMCwgMjQzLCAzOSwgNCwgMjEyLCA4NywgMzksIDQsIDIxMiwgNjcsIAotICAgIDM5LCA0LCAyNTAsIDEyNCwgMzksIDQsIDIzNSwgMTI3LCAzOSwgNCwgMjI5LCA5LCAzOSwgNCwgMjEzLCAzOCwgMzksIDQsIAotICAgIDIzNCwgMTg4LCAzOSwgNCwgMjI5LCAxMzcsIDM5LCA0LCAyMjksIDEzMywgMzksIDQsIDI0MywgMzgsIDM5LCA0LCAyNDMsIAotICAgIDI3LCAzOSwgNCwgMjMxLCAxNTYsIDM5LCA0LCAyMjksIDE4NywgMzksIDQsIDIyOCwgMTcsIDM5LCA0LCAyMjksIDE2MSwgCi0gICAgMzksIDQsIDIzMywgNDYsIDM5LCAyNDksIDE1NywgMzksIDI0MywgMjAwLCAyMTksIDY5LCAzOSwgMjI0LCAxNTgsIDc3LCAKLSAgICAzOSwgNCwgMjI5LCAyMDMsIDI0NCwgMTY0LCAzOSwgNCwgMjI5LCAyMDMsIDE4MSwgMzksIDQsIDIyOSwgMjAzLCAyMTksIAotICAgIDIyNiwgMzksIDE2LCAyNDQsIDExMywgMzksIDE2LCAyMzQsIDE4NiwgMzksIDE2LCAyMTcsIDM0LCAzOSwgMTYsIDIyOSwgCi0gICAgMzksIDM5LCAxNiwgMjUyLCA2NiwgMzksIDE2LCAyNDQsIDE2MywgMzksIDE2LCAyMTgsIDQ5LCAzOSwgMTYsIDI0OCwgMTIxLCAKLSAgICAzOSwgMTYsIDI0NywgNzgsIDM5LCAxNiwgMjMzLCAyMjcsIDM5LCAxNiwgMjE2LCAyMzQsIDM5LCAxNiwgMjQ3LCA5OCwgMzksIAotICAgIDE2LCAyMzUsIDYzLCAzOSwgMjEsIDIxMiwgNzksIDM5LCAyMSwgMTE2LCAzOSwgMjEsIDEwOSwgMzksIDIxLCAxNjYsIDM5LCAKLSAgICAyMSwgMTYzLCAzOSwgMjEsIDE4MCwgMzksIDIxLCAxODksIDM5LCAyMSwgMTk4LCAzOSwgMjEsIDE5NSwgMzksIDIxLCAyMDAsIAotICAgIDM5LCA0LCAyMjksIDIwMywgMTg4LCAzOSwgNCwgMjI5LCAyMDMsIDI0NywgOTksIDMzLCA2LCAxLCAyMTIsIDgzLCAzMywgMywgCi0gICAgMSwgMjEyLCA4MywgMzMsIDYsIDEsIDI0NSwgMjQ1LCAzMywgMywgMSwgMjQ1LCAyNDUsIDMzLCA2LCAxLCAyMjMsIDIwMiwgCi0gICAgMjQ1LCAyNDcsIDMzLCAzLCAxLCAyMjMsIDIwMiwgMjQ1LCAyNDcsIDMzLCA2LCAxLCAyMzUsIDE4MywgMzMsIDMsIDEsIAotICAgIDIzNSwgMTgzLCAzMywgNiwgMSwgMjQ3LCAxMTMsIDMzLCAzLCAxLCAyNDcsIDExMywgMzMsIDYsIDEsIDIzMCwgMjEwLCAKLSAgICAyMTUsIDE3NSwgMzMsIDMsIDEsIDIzMCwgMjEwLCAyMTUsIDE3NSwgMzMsIDYsIDEsIDI1MSwgNjQsIDIyNywgNjcsIDMzLCAKLSAgICAzLCAxLCAyNTEsIDY0LCAyMjcsIDY3LCAzMywgNiwgMSwgMjI5LCAxNjksIDIxMywgMjIsIDMzLCAzLCAxLCAyMjksIDE2OSwgCi0gICAgMjEzLCAyMiwgMzMsIDYsIDEsIDIxMywgMTksIDIsIDI1MiwgMTAyLCAyMTMsIDIyLCAzMywgMywgMSwgMjEzLCAxOSwgMiwgCi0gICAgMjUyLCAxMDIsIDIxMywgMjIsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjEzLCA0OSwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyMTMsIAotICAgIDQ5LCAzMywgNiwgMSwgMjIzLCAyMDIsIDIxMiwgMjAzLCAzMywgMywgMSwgMjIzLCAyMDIsIDIxMiwgMjAzLCAzMywgNiwgMSwgCi0gICAgMjM1LCAxODEsIDYxLCAzMywgMywgMSwgMjM1LCAxODEsIDYxLCAzMywgNiwgMSwgMjQ5LCAxOTMsIDIzMiwgMjIxLCAyMTIsIAotICAgIDE3NCwgMzMsIDMsIDEsIDI0OSwgMTkzLCAyMzIsIDIyMSwgMjEyLCAxNzQsIDMzLCA2LCAxLCAyNTEsIDEzNywgMjEyLCAKLSAgICAxNzQsIDMzLCAzLCAxLCAyNTEsIDEzNywgMjEyLCAxNzQsIDMzLCA2LCAxLCAyMzUsIDE4MSwgMjQ5LCAxOTMsIDIzMiwgCi0gICAgMjIxLCAyMTIsIDE3NCwgMzMsIDMsIDEsIDIzNSwgMTgxLCAyNDksIDE5MywgMjMyLCAyMjEsIDIxMiwgMTc0LCAzMywgNiwgCi0gICAgMSwgMjEyLCAyMzcsIDMzLCAzLCAxLCAyMTIsIDIzNywgMzMsIDYsIDEsIDIyMywgMjAyLCAyMTYsIDEzNiwgMzMsIDMsIDEsIAotICAgIDIyMywgMjAyLCAyMTYsIDEzNiwgMzMsIDYsIDEsIDIxOSwgMjM2LCAyNDgsIDQxLCAzMywgMywgMSwgMjE5LCAyMzYsIDI0OCwgCi0gICAgNDEsIDMzLCA2LCAxLCAyMTksIDIzNiwgMjQ1LCAxMzEsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ1LCAxMzEsIDMzLCA2LCAxLCAKLSAgICAyMTksIDIzNiwgMjQ1LCAxMTcsIDMzLCAzLCAxLCAyMTksIDIzNiwgMjQ1LCAxMTcsIDMzLCA2LCAxLCAyMzAsIDIxNCwgNzUsIAotICAgIDMzLCAzLCAxLCAyMzAsIDIxNCwgNzUsIDMzLCA2LCAxLCAyNTEsIDE2MywgNzUsIDMzLCAzLCAxLCAyNTEsIDE2MywgNzUsIAotICAgIDMzLCA2LCAxLCA1MSwgMjMwLCAyMTQsIDc1LCAzMywgMywgMSwgNTEsIDIzMCwgMjE0LCA3NSwgMzMsIDEsIDIzMCwgMTU2LCAKLSAgICA3NSwgMzcsIDMzLCAyMTQsIDg0LCAzNywgMzMsIDIxNywgMjAxLCAyMzEsIDQsIDUyLCAzNywgMzMsIDI0MCwgMjAxLCAyMzEsIAotICAgIDQsIDUyLCAzNywgMzMsIDIxNywgMTAxLCAyMzEsIDQsIDUyLCAyMjAsIDIxLCAyNTMsIDEzMiwgMzcsIDMzLCAyMzQsIDE5OCwgCi0gICAgMzcsIDMzLCAyMjYsIDEwMSwgMzMsIDIzNCwgMTk4LCAzMywgMjI2LCAxMDEsIDMzLCA2LCAxLCAyNDYsIDEsIDMzLCAzLCAxLCAKLSAgICAyNDYsIDEsIDMzLCA2LCAxLCAyNDUsIDIzOCwgMzMsIDMsIDEsIDI0NSwgMjM4LCAzMywgNiwgMSwgMjEyLCA0NSwgMzMsIDMsIAotICAgIDEsIDIxMiwgNDUsIDMzLCA2LCAxLCAyNTAsIDE0MCwgMzMsIDMsIDEsIDI1MCwgMTQwLCAzMywgNiwgMSwgMjQ1LCAyMzcsIAotICAgIDMzLCAzLCAxLCAyNDUsIDIzNywgMzMsIDYsIDEsIDIxNywgMjMwLCAyLCAyMzEsIDM3LCAxMDEsIDMzLCAzLCAxLCAyMTcsIAotICAgIDIzMCwgMiwgMjMxLCAzNywgMTAxLCAzMywgNiwgMSwgMjE2LCA0MywgMzMsIDMsIDEsIDIxNiwgNDMsIDMzLCA2LCAxLCAKLSAgICAyMTYsIDExOSwgMzMsIDMsIDEsIDIxNiwgMTE5LCAzMywgNiwgMSwgMjE2LCAxMjMsIDMzLCAzLCAxLCAyMTYsIDEyMywgMzMsIAotICAgIDYsIDEsIDIxNywgMjM1LCAzMywgMywgMSwgMjE3LCAyMzUsIDMzLCA2LCAxLCAyNDAsIDE5MCwgMzMsIDMsIDEsIDI0MCwgCi0gICAgMTkwLCAzMywgNiwgMSwgMjIwLCAxMzIsIDMzLCAzLCAxLCAyMjAsIDEzMiwgMjAsIDEsIDYxLCAyMCwgMSwgMTgxLCAyMCwgCi0gICAgMSwgNjksIDIwLCAxLCAyMzMsIDIzOCwgMjAsIDEsIDI0NSwgMTY1LCAyMCwgMSwgMjI0LCAxLCAyMCwgMSwgMjE4LCAzNSwgCi0gICAgMjAsIDEsIDc1LCAyMCwgMSwgMjI4LCAxMCwgMjAsIDEsIDcyLCAyMCwgMSwgMjMzLCAxNTcsIDIwLCAxLCAxOTMsIDIwLCAxLCAKLSAgICAyMjMsIDEzNiwgMjAsIDEsIDIyMywgMTgyLCAyMCwgMSwgMjMzLCA3MywgMjAsIDEsIDIzMSwgMTQ0LCAyMCwgMSwgMjE4LCAKLSAgICA0OSwgMjAsIDEsIDIyOSwgMjI2LCAyMCwgMSwgMjI5LCAxNCwgMjAsIDEsIDE4MywgMjAsIDEsIDIxOCwgMjA1LCAyMCwgMSwgCi0gICAgMjMwLCAxNzIsIDIwLCAxLCAyMjAsIDIwNywgMjAsIDEsIDIyMCwgMTE3LCAyMCwgMSwgMjIwLCAyMTcsIDIwLCAxLCAyMjEsIAotICAgIDQ0LCAyMCwgMSwgMjMzLCAxNzcsIDIwLCAxLCAyMzQsIDE2MiwgMjAsIDEsIDIyOCwgNjQsIDIwLCAxLCAyMjgsIDkyLCAyMCwgCi0gICAgMSwgMjI4LCAyNDEsIDIwLCAxLCAyMTIsIDIxNywgMjAsIDEsIDIyMCwgMTUwLCAyMCwgMSwgMjEyLCAxNzgsIDIwLCAxLCAKLSAgICAxODYsIDIwLCAxLCAyMjgsIDEyMCwgMjAsIDEsIDIzNCwgMTQ4LCAyMCwgMSwgMjI2LCAyNywgMjAsIDEsIDIyOSwgNywgMjAsIAotICAgIDEsIDIyOCwgMTAxLCAyMCwgMSwgMjI1LCAzMCwgMjAsIDEsIDIxMywgMTgwLCAyMCwgMSwgMjI2LCA4NiwgMjAsIDEsIDI0NCwgCi0gICAgMTE2LCAyMCwgMSwgMjIzLCA1MSwgMjAsIDEsIDIzMiwgMTU2LCAyMCwgMSwgMjMxLCA0MiwgMjAsIDEsIDIyOSwgNjQsIDIwLCAKLSAgICAxLCAyMjMsIDIwNCwgMjAsIDEsIDIyNCwgNjEsIDIwLCAxLCAyMzQsIDE3MSwgMjAsIDEsIDIyOSwgOTMsIDIwLCAxLCAyMjksIAotICAgIDE0MSwgMjAsIDEsIDIyOSwgMTU5LCAyMCwgMSwgMjIwLCAxODcsIDIwLCAxLCAyMjUsIDMzLCAyMCwgMSwgMjQzLCAyMDUsIAotICAgIDIwLCAxLCAyNDQsIDYsIDIwLCAxLCAyMTQsIDQ5LCAyMCwgMSwgMjA1LCAyMCwgMSwgMjMzLCAxMywgMjAsIDEsIDIyNSwgCi0gICAgMjQwLCAyMCwgMSwgMjMyLCAxNzQsIDIwLCAxLCAyMzQsIDM3LCAyMCwgMSwgMjMxLCAxNzcsIDIwLCAxLCAyMjMsIDIzMywgCi0gICAgMjAsIDEsIDIzMSwgMTIyLCAyMCwgMSwgMTg4LCAyMCwgMSwgMjE3LCA3MSwgMjAsIDEsIDIzNCwgMTAxLCAyMCwgMSwgMjMwLCAKLSAgICAyMzEsIDIwLCAxLCAyMzEsIDE4NSwgMjAsIDEsIDIxNywgMTgzLCAyMCwgMSwgMjM0LCA0LCAyMCwgMSwgMjE3LCAyMDAsIAotICAgIDIwLCAxLCAyMjgsIDkzLCAyMCwgMSwgMjIyLCAxNjYsIDIwLCAxLCAyNDQsIDE2MCwgMjAsIDEsIDIzNCwgNiwgMjAsIDEsIAotICAgIDIzNCwgMzMsIDIwLCAzNywgMTUyLCAyMzQsIDE0LCAyMCwgMzcsIDE1MiwgMjE2LCA3NCwgMjAsIDIyOSwgMTMsIDIwLCAKLSAgICAyNDMsIDIwMCwgMjE5LCA2OSwgMjAsIDI0OSwgMTY0LCAyMCwgMjQ5LCAxNTcsIDIwLCAyMjEsIDcwLCAyMCwgMjI0LCAxNTgsIAotICAgIDc3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjI1LCAxOTMsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMywgCi0gICAgNTksIDIyNSwgMTkzLCA1OSwgMSwgMjUwLCAzMywgMTYwLCAyMTIsIDI0NSwgMjIxLCA3LCA1OSwgMSwgMjUwLCAzMywgMTYwLCAKLSAgICAyMTMsIDU5LCAyMjEsIDcsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjQsIDE3NSwgNTksIDEsIDI1MCwgMzMsIAotICAgIDE2MCwgMjEzLCA1OSwgMjI0LCAxNzUsIDU5LCAxLCAyNTAsIDMzLCAxNjAsIDIxMiwgMjQ1LCAyMjMsIDUxLCA1OSwgMSwgCi0gICAgMjUwLCAzMywgMTYwLCAyMTMsIDU5LCAyMjMsIDUxLCA1OSwgMSwgMjQ0LCAyNDQsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgCi0gICAgMSwgMTI0LCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDIzMSwgMzgsIDI0NiwgNzIsIDE2MCwgMTM0LCA1OSwgMSwgMTE1LCAKLSAgICAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQzLCAyNDYsIDcyLCAxNjAsIDEzNCwgNTksIDEsIDI0NCwgMjQ0LCAKLSAgICAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDEyNCwgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAKLSAgICAxLCAyMzEsIDM4LCAyNDYsIDcyLCAyMzMsIDYzLCAxNjAsIDEzNCwgNTksIDEsIDExNSwgMjQ2LCA3MiwgMjMzLCA2MywgCi0gICAgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0MywgMjQ2LCA3MiwgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAyNDQsIDI0NCwgCi0gICAgMjMzLCA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMjQsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjMxLCAzOCwgMjMzLCAKLSAgICA2MywgMTYwLCAxMzQsIDU5LCAxLCAxMTUsIDIzMywgNjMsIDE2MCwgMTM0LCA1OSwgMSwgMjQ0LCAyNDMsIDIzMywgNjMsIAotICAgIDE2MCwgMTM0LCA1OSwgMSwgNjIsIDcxLCAxMzQsIDU5LCAxLCA2MiwgMjIwLCAyMywgNTksIDEsIDYyLCAxOTksIDEzNCwgCi0gICAgNTksIDEsIDIzMiwgMTYzLCA0NiwgMjQ5LCAxMDAsIDI1NCwgMTgsIDU5LCAxLCAyMjQsIDQ4LCAxMTQsIDY4LCA1OSwgMSwgCi0gICAgMjI0LCA0OCwgMTE5LCA2OCwgNTksIDEsIDIyNCwgNDgsIDI0NCwgMjU0LCA3NywgNTksIDEsIDIyNCwgNDgsIDIzNSwgMTkxLCAKLSAgICAyNDQsIDI1NCwgNzcsIDU5LCAxLCAxMTUsIDIzNSwgMTkxLCAyNDQsIDI1NCwgNzcsIDU5LCAxLCAyMTksIDUxLCAyNCwgCi0gICAgMTI0LCAyMTYsIDI0MSwgNTksIDEsIDIxOSwgNTEsIDI0LCAxMTUsIDIxNiwgMjQxLCA3LCA2LCAxLCAyNDUsIDE1NiwgMjU0LCAKLSAgICA3OCwgNywgMywgMSwgMjQ1LCAxNTYsIDI1NCwgNzgsIDcsIDYsIDEsIDI0NSwgMTU2LCAyNTQsIDEwMywgNywgMywgMSwgCi0gICAgMjQ1LCAxNTYsIDI1NCwgMTAzLCA3LCA2LCAxLCAyNDEsIDE5MSwgNywgMywgMSwgMjQxLCAxOTEsIDcsIDYsIDEsIDIxNiwgCi0gICAgNiwgNywgMywgMSwgMjE2LCA2LCA3LCA2LCAxLCAyMTYsIDE4NywgNywgMywgMSwgMjE2LCAxODcsIDcsIDYsIDEsIDI0OSwgCi0gICAgNTEsIDcsIDMsIDEsIDI0OSwgNTEsIDcsIDYsIDEsIDI0OSwgNTIsIDIsIDI0OSwgMTU3LCA3LCAzLCAxLCAyNDksIDUyLCAyLCAKLSAgICAyNDksIDE1NywgNywgMSwgMywgNiwgMjQ0LCAyMzAsIDcsIDEsIDMsIDYsIDE5NywgNywgNiwgMSwgMjU0LCAyMzIsIDcsIDMsIAotICAgIDEsIDI1NCwgMjMyLCA3LCA2LCAxLCAyNTMsIDI0MCwgNywgMywgMSwgMjUzLCAyNDAsIDcsIDYsIDEsIDI1MywgMTA4LCA3LCAKLSAgICAzLCAxLCAyNTMsIDEwOCwgNywgNiwgMSwgMjUzLCA5MiwgNywgMywgMSwgMjUzLCA5MiwgNywgNiwgMSwgMjUzLCA5MywgMiwgCi0gICAgMTk5LCAxMzQsIDcsIDMsIDEsIDI1MywgOTMsIDIsIDE5OSwgMTM0LCA3LCA2LCAxLCAyNTMsIDgzLCA3LCAzLCAxLCAyNTMsIAotICAgIDgzLCA3LCA2LCAxLCAyMjMsIDIwMiwgMjUwLCAyNTMsIDIsIDI0NywgNzQsIDcsIDMsIDEsIDIyMywgMjAyLCAyNTAsIDI1MywgCi0gICAgMiwgMjQ3LCA3NCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDkwLCA3LCA2LCAxLCAKLSAgICAyMzUsIDI4LCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIzNSwgMjgsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgCi0gICAgMjM1LCAyOCwgMiwgMjE5LCA0NSwgMjQsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjM1LCAyOCwgMiwgMjE5LCA0NSwgMjQsIAotICAgIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjUxLCA2MywgMTUwLCA3LCAzLCAxLCAyNTEsIDYzLCAxNTAsIDcsIDYsIDEsIDIzMywgCi0gICAgMTcxLCAyLCAxMjQsIDkwLCA3LCAzLCAxLCAyMzMsIDE3MSwgMiwgMTI0LCA5MCwgNywgNiwgMSwgMTU3LCAyLCAxODQsIAotICAgIDIxOSwgNDUsIDIyNiwgMjQ0LCA3LCAzLCAxLCAxNTcsIDIsIDE4NCwgMjE5LCA0NSwgMjI2LCAyNDQsIDcsIDYsIDEsIDE1NywgCi0gICAgMiwgMjMyLCAxNzcsIDcsIDMsIDEsIDE1NywgMiwgMjMyLCAxNzcsIDcsIDYsIDEsIDIyNywgNDksIDcsIDMsIDEsIDIyNywgCi0gICAgNDksIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgMywgMSwgMjI2LCAyMzAsIAotICAgIDIsIDIxOSwgNDUsIDIxNywgOTMsIDI0NywgMjQ2LCA3LCA2LCAxLCAyMjYsIDIzMCwgMiwgMjQ0LCAyMiwgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDI0NCwgMjIsIDcsIDYsIDEsIDIyNiwgMjMwLCAyLCAyMTksIDE2MSwgMjE4LCAyNywgNywgMywgMSwgCi0gICAgMjI2LCAyMzAsIDIsIDIxOSwgMTYxLCAyMTgsIDI3LCA3LCA2LCAxLCAyMjQsIDI0MSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgCi0gICAgMjQ3LCAyNDYsIDcsIDMsIDEsIDIyNCwgMjQxLCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjI0LCAKLSAgICAyNDEsIDIsIDI0NywgMjA3LCA5MCwgNywgMywgMSwgMjI0LCAyNDEsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjI0LCAKLSAgICAxMTMsIDIyMywgODgsIDcsIDMsIDEsIDIyNCwgMTEzLCAyMjMsIDg4LCA3LCA2LCAxLCAyMjMsIDQxLCAyMjMsIDg4LCA3LCAKLSAgICAzLCAxLCAyMjMsIDQxLCAyMjMsIDg4LCA3LCA2LCAxLCAyMTUsIDgwLCAyLCAyNDcsIDIwNywgOTAsIDcsIDMsIDEsIDIxNSwgCi0gICAgODAsIDIsIDI0NywgMjA3LCA5MCwgNywgNiwgMSwgMjE0LCA5MCwgNywgMywgMSwgMjE0LCA5MCwgNywgNiwgMSwgMjE0LCAKLSAgICAxMjYsIDIxMiwgMTUyLCA3LCAzLCAxLCAyMTQsIDEyNiwgMjEyLCAxNTIsIDcsIDYsIDEsIDIxNywgMTA1LCAyLCA5MCwgNywgCi0gICAgMywgMSwgMjE3LCAxMDUsIDIsIDkwLCA3LCA2LCAxLCAyMTcsIDEwNSwgMiwgMjE5LCA0NSwgMjE3LCA5MywgMjQ3LCAyNDYsIAotICAgIDcsIDMsIDEsIDIxNywgMTA1LCAyLCAyMTksIDQ1LCAyMTcsIDkzLCAyNDcsIDI0NiwgNywgNiwgMSwgMjE0LCAyMjIsIDcsIAotICAgIDMsIDEsIDIxNCwgMjIyLCA3LCA2LCAxLCAyNDUsIDMwLCA3LCAzLCAxLCAyNDUsIDMwLCA3LCA2LCAxLCAyMzUsIDE2OSwgNywgCi0gICAgMywgMSwgMjM1LCAxNjksIDcsIDYsIDEsIDI0OSwgMTQ2LCA3LCAzLCAxLCAyNDksIDE0NiwgNTksIDEsIDIxNSwgMTA0LCA3LCAKLSAgICAzLCAxLCAyNDYsIDI0LCA3LCAzLCAxLCAyMzIsIDE0MiwgNywgMywgMSwgMjMwLCAxNTAsIDcsIDMsIDEsIDIyOCwgNTcsIDcsIAotICAgIDMsIDEsIDIyMywgNDAsIDcsIDEsIDMsIDYsIDIyMywgNDAsIDcsIDMsIDEsIDIxNiwgNzIsIDcsIDMsIDEsIDIxNSwgMTY3LCAKLSAgICA3LCA2LCAxLCAyMzUsIDIxMCwgMjQ5LCAzLCA3LCAzLCAxLCAyMzUsIDIxMCwgMjQ5LCAzLCA3LCA2LCAxLCAyMzUsIDIxMCwgCi0gICAgMjQ0LCAyMzAsIDcsIDMsIDEsIDIzNSwgMjEwLCAyNDQsIDIzMCwgNywgNiwgMSwgMjM1LCAyMTAsIDI0MywgMTc3LCA3LCA2LCAKLSAgICAxLCAyMTYsIDU4LCAyMzUsIDIxMCwgMjQzLCAxNzcsIDcsIDMsIDEsIDIxNiwgNTgsIDIzNSwgMjEwLCAyNDMsIDE3NywgNywgCi0gICAgNiwgMSwgMjE2LCA1OCwgMTUwLCA3LCAzLCAxLCAyMTYsIDU4LCAxNTAsIDcsIDYsIDEsIDIzNSwgMjEwLCAxNDksIDcsIDMsIAotICAgIDEsIDIzNSwgMjEwLCAxNDksIDcsIDYsIDEsIDIzNSwgMjEwLCAxOTcsIDcsIDMsIDEsIDIzNSwgMjEwLCAxOTcsIDcsIDYsIAotICAgIDEsIDIzNSwgMjEwLCAyMTgsIDk5LCA3LCAzLCAxLCAyMzUsIDIxMCwgMjE4LCA5OSwgNTksIDEsIDExNSwgMjQ5LCAyMjQsIAotICAgIDI1NCwgMTc0LCA1OSwgMSwgMjQ5LCAxNjQsIDU5LCAxLCAyMjAsIDE3NSwgMjQ1LCA2MSwgNTIsIDcsIDYsIDEsIDIyMiwgCi0gICAgMTcwLCA3LCAzLCAxLCAyMjIsIDE3MCwgNywgNiwgMSwgMjE2LCA1OCwgMjQyLCA0MSwgNywgMywgMSwgMjMzLCAxNzEsIDIsIAotICAgIDIyMywgMjA3LCAyNDEsIDM4LCAyNCwgMjUxLCAyMTgsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDI0NywgMjQ2LCA3LCAzLCAxLCAKLSAgICAyMzAsIDk4LCAyLCAyNDcsIDI0NiwgNywgNiwgMSwgMjQzLCAxNzgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjQzLCAKLSAgICAxNzgsIDIsIDIyNywgMTEyLCA5MCwgNywgNiwgMSwgMjM1LCAyOCwgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMzUsIAotICAgIDI4LCAyLCAyMjcsIDExMiwgOTAsIDcsIDYsIDEsIDIzMCwgOTgsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjMwLCA5OCwgCi0gICAgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMjQsIDExMywgMiwgMjI3LCAxMTIsIDkwLCA3LCAzLCAxLCAyMjQsIDExMywgCi0gICAgMiwgMjI3LCAxMTIsIDkwLCA3LCA2LCAxLCAyMjMsIDQsIDIsIDIyNywgMTEyLCA5MCwgNywgMywgMSwgMjIzLCA0LCAyLCAKLSAgICAyMjcsIDExMiwgOTAsIDcsIDEsIDMsIDYsIDIxNiwgNTgsIDE4MywgNywgMjQ1LCA2NiwgMSwgMjIzLCAyMDIsIDI0NCwgCi0gICAgMjMwLCA3LCAyNDUsIDY2LCAxLCAyMjMsIDIwMiwgMjI2LCAyMjksIDcsIDI0NSwgNjYsIDEsIDIzNSwgMTkxLCAxODMsIDcsIAotICAgIDI0NSwgNjYsIDEsIDI0MCwgMTQ2LCAyMzIsIDE4MiwgNywgMjQ1LCA2NiwgMSwgMjUzLCAxOTMsIDE4MywgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDEsIDYxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgNzIsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNDYsIDMsIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCA2OSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDc0LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgCi0gICAgNzUsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNDEsIDIzNiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNCwgMzcsIDIxOCwgCi0gICAgMTc1LCAyMzAsIDMyLCAxLCAyMzQsIDExMywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0MiwgMTUwLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMSwgMjQyLCAyMDAsIDIxOCwgMTc1LCAyMzAsIDMyLCA1LCAyNTMsIDI0MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIAotICAgIDI0OSwgMTc1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjUwLCAyMywgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIzNSwgNzEsIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMzUsIDExMSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIxNiwgOTUsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCAyMTYsIDEwMCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI0OCwgNTYsIDIxOCwgMTc1LCAyMzAsIDMyLCAKLSAgICAxLCAyNDgsIDY1LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMTA4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjE3LCAxMDksIAotICAgIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNDcsIDk5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQ3LCAyMTUsIDIxOCwgMTc1LCAKLSAgICAyMzAsIDMyLCAxLCAyMjgsIDE4NSwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDIyNSwgMTUwLCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMSwgMjI1LCAyNTMsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyNTEsIDEyOCwgMjE4LCAxNzUsIDIzMCwgMzIsIDEsIDI1MSwgCi0gICAgMTg4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjMwLCAyMzEsIDIxOCwgMTc1LCAyMzAsIDMyLCAxLCAyMjMsIDExMiwgMjE4LCAKLSAgICAxNzUsIDIzMCwgMzIsIDEsIDIzMiwgMjA4LCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjIzLCA3MywgMjE4LCAxNzUsIDIzMCwgCi0gICAgMzIsIDEsIDIxOSwgMjQyLCAyMTgsIDE3NSwgMjMwLCAzMiwgMSwgMjQxLCA1NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCAKLSAgICA2MSwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCA3MiwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCA2OSwgMjE4LCAxNzUsIAotICAgIDIzMCwgMzIsIDMwLCA1LCA3NCwgMjE4LCAxNzUsIDIzMCwgMzIsIDMwLCA1LCAyMjcsIDQ5LCAyMTgsIDE3NSwgMjMwLCAzMiwgCi0gICAgMjI1LCAxNDYsIDIzMSwgMjIxLCAyMTgsIDE3NSwgMjMwLCAzMiwgMjI1LCAxNDYsIDIzMSwgMjIwLCAyMTgsIDE3NSwgMjMwLCAKLSAgICAzMiwgMjI1LCAxNDYsIDIzMSwgMjE5LCAyMTgsIDE3NSwgMjMwLCAzMiwgMjI1LCAxNDYsIDIzMSwgMjE4LCAyMjgsIDE2NywgCi0gICAgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIAotICAgIDI0MiwgOSwgMjI4LCAxNjcsIDIzNSwgMjM3LCAyNDMsIDIyOCwgMTMzLCAyMjQsIDE2NCwgMjI4LCAxNjcsIDIzNSwgMjM3LCAKLSAgICAyNDMsIDIyOCwgMTIyLCAyMjAsIDQ1LCAyMjgsIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMjIsIDI0NSwgMTQ1LCAyMjgsIAotICAgIDE2NywgMjM1LCAyMzcsIDI0MywgMjI4LCAxMzMsIDIyMCwgNDQsIDIyOCwgMTY3LCAyMzUsIDIzNywgMjI0LCAxNjcsIDc3LCAKLSAgICAyMjgsIDE2NywgMjM1LCAyMzcsIDIyNSwgMTcyLCA3NywgMjI4LCAxNjcsIDIzNSwgMjM3LCAyMjMsIDI5LCA3NywgMjI4LCAKLSAgICAxNjcsIDIzNSwgMjM3LCAyMjQsIDE2OCwgNzcsIDIyNiwgMjAsIDEsIDE4MSwgMjI2LCAyMCwgMSwgMjM0LCAxMzgsIDIyNiwgCi0gICAgMjAsIDEsIDI0MywgMTEwLCAyMjYsIDIwLCAxLCAyMjksIDE1OSwgMjI2LCAyMCwgMSwgMjUwLCAyMTksIDIyNiwgMjAsIDEsIAotICAgIDI1MCwgOTIsIDIyNiwgMjAsIDEsIDIzNSwgMTM5LCAyMjYsIDIwLCAxLCAyMjgsIDIzLCAyMjYsIDIwLCAxLCAyMTgsIDUyLCAKLSAgICAyMjYsIDIwLCAxLCAyMTcsIDE2MSwgMjI2LCAyMCwgMSwgMjQ4LCAxNjQsIDIyNiwgMjAsIDEsIDIwNSwgMjI2LCAyMCwgMSwgCi0gICAgMTkzLCAyMjYsIDIwLCAxLCAyMjYsIDIzLCAyMjYsIDIwLCAxLCAyNTIsIDEwNywgMjI2LCAyMCwgMSwgMTg4LCAyMjYsIDIwLCAKLSAgICAxLCAyMTYsIDE0MSwgMjI2LCAyMCwgMSwgMjE2LCAxMzMsIDIyNiwgMjAsIDEsIDI0NSwgMjQ5LCAyMjYsIDIwLCAxLCAyMTQsIAotICAgIDQ5LCAyMjYsIDIwLCAxLCAyMTIsIDc1LCAyMjYsIDIwLCAxLCAyMTIsIDEwOSwgMjI2LCAyMCwgMSwgMywgNjEsIDIyNiwgCi0gICAgMjAsIDEsIDE4NiwgMjI2LCAyMCwgMSwgMjAzLCAyMjYsIDIwLCAxLCAyMzMsIDE1NywgMjI2LCAyMCwgMSwgMjIxLCAyNCwgCi0gICAgMjI2LCAyMCwgMSwgMjIyLCAyMDIsIDIyNiwgMjAsIDEsIDE1OSwgMjI2LCAyMCwgMSwgNjEsIDIyNiwgMjAsIDEsIDcyLCAKLSAgICAyMjYsIDIwLCAxLCA2OSwgMjI2LCAyMCwgMSwgNzQsIDIyNiwgMjAsIDEsIDc1LCAyMjYsIDIwLCAxLCAyMjQsIDIzMiwgCi0gICAgMjI2LCAyMCwgMSwgMjEzLCAxNTMsIDIyNiwgMjAsIDEsIDI0NCwgMTY0LCAyMjYsIDIwLCAxLCAyNDMsIDUsIDIyNiwgMjAsIAotICAgIDEsIDI0NSwgMTY1LCAyMjYsIDIwLCAyMTksIDE4LCAxLCAyMTQsIDQ5LCAyMjYsIDIwLCAyMTksIDE4LCAxLCAxODYsIDIyNiwgCi0gICAgMjAsIDEsIDIxNiwgMTE1LCAyMjYsIDIwLCAxLCAyMTYsIDEwNSwgMjI2LCAyMCwgMSwgMjQ4LCA4NiwgMjI2LCAyMCwgMSwgCi0gICAgMjI4LCAxOTgsIDIyNiwgMjAsIDEsIDI1NCwgNTAsIDE4NiwgMjI2LCAyMCwgMSwgMjE0LCAxMTUsIDIyMSwgMjQsIDIyNiwgCi0gICAgMjAsIDEsIDIxNCwgMTE2LCAxNTksIDIyNiwgMjAsIDEsIDI1MywgMTM4LCAyNDQsIDE2NCwgMjI2LCAyMCwgMjE5LCAxOCwgCi0gICAgMSwgMjAzLCAyMjYsIDIwLCAyMTgsIDIyNSwgMSwgMjAzLCAyMjYsIDIwLCAxLCAyNTAsIDE4NywgMjI2LCAyMCwgMjIwLCAKLSAgICA4MSwgMjQxLCAyMjAsIDc3LCAyMjYsIDIwLCA1MSwgMjQxLCAyMjAsIDc3LCAyMjYsIDIwLCAxNTIsIDIyMSwgMTcsIDIyNiwgCi0gICAgMjAsIDE1MiwgNTEsIDIyMSwgMTcsIDE2OSwgNSwgMjUzLCAyNDIsIDE2OSwgNSwgMjE0LCAxMjgsIDE2OSwgMSwgNjEsIAotICAgIDE2OSwgMSwgMjU0LCAyMzIsIDE2OSwgMSwgNzIsIDE2OSwgMSwgMjM2LCAyOCwgMTY5LCAxLCA2OSwgMTY5LCAxLCAyMTUsIAotICAgIDkyLCAxNjksIDEsIDE2MSwgMTQ5LCAxNjksIDEsIDE2MSwgMjIzLCA4MiwgMTY5LCAxLCAxNjEsIDE1MCwgMTY5LCAxLCAKLSAgICAxNjEsIDIzMiwgMjE0LCAxNjksIDEsIDc0LCAxNjksIDEsIDI0NSwgMTY1LCAxNjksIDEsIDI1NCwgMTA4LCAxNjksIDEsIAotICAgIDc1LCAxNjksIDEsIDIyNywgNDksIDE2OSwgMSwgMjUzLCAxMDgsIDE2OSwgMSwgMTgxLCAxNjksIDEsIDIzNCwgMTM4LCAKLSAgICAxNjksIDEsIDI0MywgMTEwLCAxNjksIDEsIDI0MiwgMjI1LCAxNjksIDEsIDIyOSwgMTU5LCAxNjksIDEsIDI1MCwgMjE5LCAKLSAgICAxNjksIDEsIDI1MCwgOTIsIDE2OSwgMSwgMjM1LCAxMzksIDE2OSwgMSwgMjM1LCAxMTUsIDE2OSwgMSwgMjI4LCAyMywgCi0gICAgMTY5LCAxLCAyMTYsIDExNSwgMTY5LCAxLCAyMTYsIDEwNSwgMTY5LCAxLCAyNDgsIDg2LCAxNjksIDEsIDI0OCwgNzAsIAotICAgIDE2OSwgMSwgMjI4LCAxOTgsIDE2OSwgMSwgMjE4LCA1MiwgMTY5LCAxLCAyMTcsIDE2MSwgMTY5LCAxLCAyNDgsIDE2NCwgCi0gICAgMTY5LCAxLCAyNDcsIDIzMiwgMTY5LCAxLCAyMDUsIDE2OSwgMSwgMTkzLCAxNjksIDEsIDIyNiwgMjMsIDE2OSwgMSwgMjUyLCAKLSAgICAxMDcsIDE2OSwgMSwgMjUxLCAxOTUsIDE2OSwgMSwgMTg4LCAxNjksIDEsIDE4NiwgMTY5LCAxLCAyMDMsIDE2OSwgMSwgCi0gICAgMjMzLCAxNTcsIDE2OSwgMSwgMjE1LCAxLCAxNjksIDEsIDIyMSwgMjQsIDE2OSwgMSwgMjE5LCAxNTcsIDE2OSwgMSwgMjIyLCAKLSAgICAyMDIsIDE2OSwgMSwgMTU5LCAxNjksIDEsIDIzMiwgMjEzLCAxNjksIDI0OSwgMTMzLCA1LCAyNDIsIDI1LCAxNjksIDMwLCAKLSAgICA1LCAyNTQsIDIzMiwgMTY5LCAzMCwgNSwgNzIsIDE2OSwgMzAsIDUsIDIzNiwgMjgsIDE2OSwgMzAsIDUsIDY5LCAxNjksIAotICAgIDMwLCA1LCAyMTUsIDkyLCAxNjksIDMwLCA1LCAxNjEsIDE0OSwgMTY5LCAzMCwgNSwgMTYxLCAyMjMsIDgyLCAxNjksIDMwLCAKLSAgICA1LCAxNjEsIDE1MCwgMTY5LCAzMCwgNSwgMTYxLCAyMzIsIDIxNCwgMTY5LCAzMCwgNSwgNzQsIDE2OSwgMzAsIDUsIDI0NSwgCi0gICAgMTY1LCAxNjksIDMwLCA1LCAyNTQsIDEwOCwgMTY5LCAzMCwgNSwgNzUsIDE2OSwgMzAsIDUsIDIyNywgNDksIDE2OSwgMzAsIAotICAgIDUsIDI1MywgMTA4LCAxNjksIDUsIDIxNCwgMTMzLCAxNjksIDI0OCwgMTIzLCAxNjksIDUxLCAyNDgsIDEyMywgMTY5LCAyMSwgCi0gICAgMjEyLCA3OSwgMTY5LCAyMSwgMTE2LCAxNjksIDIxLCAxMDksIDE2OSwgMjEsIDE2NiwgMTY5LCAyMSwgMTYzLCAxNjksIDIxLCAKLSAgICAxODAsIDE2OSwgMjEsIDE4OSwgMTY5LCAyMSwgMTk4LCAxNjksIDIxLCAxOTUsIDE2OSwgMjEsIDIwMCwgMzcsIDgyLCAyMSwgCi0gICAgMjEyLCA3OSwgMzcsIDgyLCAyMSwgMTE2LCAzNywgODIsIDIxLCAxMDksIDM3LCA4MiwgMjEsIDE2NiwgMzcsIDgyLCAyMSwgCi0gICAgMTYzLCAzNywgODIsIDIxLCAxODAsIDM3LCA4MiwgMjEsIDE4OSwgMzcsIDgyLCAyMSwgMTk4LCAzNywgODIsIDIxLCAxOTUsIAotICAgIDM3LCA4MiwgMjEsIDIwMCwgMzcsIDgyLCAxLCA2MSwgMzcsIDgyLCAxLCA2OSwgMzcsIDgyLCAxLCAxODEsIDM3LCA4MiwgMSwgCi0gICAgMjA1LCAzNywgODIsIDEsIDE5MywgMzcsIDgyLCAxLCAyMDMsIDM3LCA4MiwgMSwgMjE0LCAxNTQsIDM3LCA4MiwgNSwgMjUzLCAKLSAgICA5MSwgODIsIDUsIDIxOSwgMjA1LCAyNTAsIDE4NywgODIsIDUsIDI1MCwgMTg4LCAyMTQsIDEzMywgODIsIDUsIDUxLCAyNTAsIAotICAgIDE4OCwgMjE0LCAxMzMsIDgyLCA1LCAyNTAsIDE4OCwgMTA5LCA4MiwgNSwgMjUwLCAxODgsIDE2NiwgODIsIDUsIDI1MCwgCi0gICAgMTg4LCAyNTMsIDkxLCA4MiwgNSwgMjI1LCAxMSwgODIsIDI0MywgNzYsIDI0NCwgNzIsIDgyLCAyNTAsIDE3MCwgODIsIAotICAgIDI0MSwgMjE0LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDIxMiwgNzksIDIzNCwgMTk0LCAyMzMsIDE0LCAyMSwgMTE2LCAKLSAgICAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDEwOSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxNjYsIDIzNCwgMTk0LCAyMzMsIAotICAgIDE0LCAyMSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE4MCwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAxODksIDIzNCwgCi0gICAgMTk0LCAyMzMsIDE0LCAyMSwgMTk4LCAyMzQsIDE5NCwgMjMzLCAxNCwgMjEsIDE5NSwgMjM0LCAxOTQsIDIzMywgMTQsIDIxLCAKLSAgICAyMDAsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAxODEsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMzQsIDEzOCwgMjM0LCAxOTQsIAotICAgIDIzMywgMTQsIDEsIDI0MywgMTEwLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjI5LCAxNTksIDIzNCwgMTk0LCAyMzMsIDE0LCAKLSAgICAxLCAyMjIsIDIwMiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyMSwgMjQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTIsIAotICAgIDEwOSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyOCwgMjMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMTgsIDUyLCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMSwgMjQwLCAyMTQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMDUsIDIzNCwgMTk0LCAyMzMsIDE0LCAKLSAgICAxLCAxOTMsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyMjYsIDIzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMTg4LCAyMzQsIAotICAgIDE5NCwgMjMzLCAxNCwgMSwgMjQ4LCAxNjQsIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCAyNTIsIDEwNywgMjM0LCAxOTQsIDIzMywgCi0gICAgMTQsIDEsIDIwMywgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDE4NiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIzMywgMTU3LCAKLSAgICAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE0LCA0OSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIxNywgMTYxLCAyMzQsIDE5NCwgCi0gICAgMjMzLCAxNCwgMSwgMTU5LCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjE1LCAxLCAyMzQsIDE5NCwgMjMzLCAxNCwgMSwgMjUwLCAKLSAgICAyMTksIDIzNCwgMTk0LCAyMzMsIDE0LCAxLCA2MSwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNywgOTksIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAxLCA3MiwgMjM0LCAxOTQsIDIzMywgMTQsIDEsIDIyNywgNDksIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgCi0gICAgMjE1LCAxODMsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNzQsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNjksIDIzNCwgMTk0LCAKLSAgICAyMzMsIDE0LCAzMCwgMjQ1LCAxNjUsIDIzNCwgMTk0LCAyMzMsIDE0LCAzMCwgNzUsIDIzNCwgMTk0LCAyMzMsIDE0LCAxNjAsIAotICAgIDIyNSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgMTYwLCAyNTAsIDIwMCwgMjM0LCAxOTQsIDIzMywgMTQsIDE2MCwgMjUwLCAKLSAgICAyMDEsIDIyNSwgMTYzLCAyMzQsIDE5NCwgMjMzLCAxNCwgNSwgMjQ5LCAyMCwgMjM0LCAxOTQsIDIzMywgMTQsIDUsIDIyMCwgCi0gICAgMTI1LCAyMjMsIDI0MywgMSwgMTgxLCAyMjMsIDI0MywgMSwgMjQzLCAxMTAsIDIyMywgMjQzLCAxLCAyMjksIDE1OSwgMjIzLCAKLSAgICAyNDMsIDEsIDIxOCwgNTIsIDIyMywgMjQzLCAxLCAyNDgsIDE2NCwgMjIzLCAyNDMsIDEsIDIwNSwgMjIzLCAyNDMsIDEsIAotICAgIDE5MywgMjIzLCAyNDMsIDEsIDI1MiwgMTA3LCAyMjMsIDI0MywgMSwgMTg4LCAyMjMsIDI0MywgMSwgMjUwLCAyMTksIDIyMywgCi0gICAgMjQzLCAxLCAyMzUsIDEzOSwgMjIzLCAyNDMsIDEsIDIyOCwgMjMsIDIyMywgMjQzLCAxLCAyMjIsIDIwMiwgMjIzLCAyNDMsIAotICAgIDEsIDIwMywgMjIzLCAyNDMsIDEsIDIzMywgMTU3LCAyMjMsIDI0MywgMSwgMTg2LCAyMjMsIDI0MywgMSwgMjE0LCA0OSwgCi0gICAgMjIzLCAyNDMsIDEsIDE1OSwgMjIzLCAyNDMsIDEsIDIzMSwgMTg3LCAyMjMsIDI0MywgMSwgMjI5LCAxNDEsIDIyMywgMjQzLCAKLSAgICAxLCAyMjksIDIyOCwgMjIzLCAyNDMsIDEsIDIyNywgMjU0LCAyMjMsIDI0MywgMSwgNjEsIDIyMywgMjQzLCAzMCwgNSwgNzIsIAotICAgIDIyMywgMjQzLCAzMCwgNSwgNjksIDIyMywgMjQzLCAzMCwgNSwgNzQsIDIyMywgMjQzLCAzMCwgNSwgMjU0LCAxMDgsIDIyMywgCi0gICAgMjQzLCAzMCwgNSwgNzUsIDIyMywgMjQzLCAzMCwgNSwgMjUzLCAxMDgsIDIyMywgMjQzLCAzMCwgNSwgMjQ1LCAyMiwgMjIzLCAKLSAgICAyNDMsIDMwLCA1LCAyNDUsIDE4OSwgMjIzLCAyNDMsIDI0OSwgMTMzLCA1LCAyMjksIDE2MSwgMjIzLCAyNDMsIDI0OSwgCi0gICAgMTMzLCA1LCAyMDQsIDIyMywgMjQzLCAyNDksIDEzMywgNSwgMTQ5LCAyMjMsIDI0MywgMjQ5LCAxMzMsIDUsIDI0MiwgNDEsIAotICAgIDIyMywgMjQzLCAyMTQsIDEzMywgMjIzLCAyNDMsIDIyMiwgOTIsIDc3LCAyMywgOTcsIDIxNywgNTEsIDIzLCA5NywgMjE3LCAKLSAgICA1MCwgMjMsIDk3LCAyMTcsIDQ4LCAyMywgOTcsIDIxNywgNTMsIDIzLCA5NywgMjIzLCAxNzQsIDIzLCA5NywgMjIzLCAxNTgsIAotICAgIDIzLCA5NywgMjIzLCAxNTMsIDIzLCA5NywgMjIzLCAxNTUsIDIzLCA5NywgMjIzLCAxNzEsIDIzLCA5NywgMjIzLCAxNjQsIAotICAgIDIzLCA5NywgMjIzLCAxNTcsIDIzLCA5NywgMjIzLCAxNzYsIDIzLCA5NywgMjIzLCAxNTksIDIzLCA5NywgMjIzLCAxNzgsIAotICAgIDIzLCA5NywgMjIzLCAxNzUsIDIzLCA5NywgMjMxLCAyNiwgMjMsIDk3LCAyMzEsIDE3LCAyMywgOTcsIDIzMSwgMjAsIDIzLCAKLSAgICA5NywgMjI1LCAyMTIsIDIzLCA5NywgMjI1LCAyMjMsIDIzLCA5NywgMjI1LCAyMjQsIDIzLCA5NywgMjE5LCAxNDIsIDIzLCAKLSAgICA5NywgMjM2LCA0MSwgMjMsIDk3LCAyMzYsIDQ4LCAyMywgOTcsIDIxOSwgMTUzLCAyMywgOTcsIDIxOSwgMTQwLCAyMywgOTcsIAotICAgIDIyNiwgNiwgMjMsIDk3LCAyNDEsIDE1MywgMjMsIDk3LCAyMTksIDEzNywgMTQ0LCA1LCAyMjYsIDE1NSwgMTQ0LCA1LCAKLSAgICAyNTAsIDEyMSwgMTQ0LCA1LCAyMzMsIDkwLCAxNDQsIDUsIDIxMywgMjI4LCAxNDQsIDEsIDYxLCAxNDQsIDEsIDI0MCwgCi0gICAgMTQ2LCAyMzQsIDE5NywgMTQ0LCAxLCA3MiwgMTQ0LCAxLCAyMzYsIDI4LCAxNDQsIDEsIDY5LCAxNDQsIDEsIDIyNiwgMjE0LCAKLSAgICAyNTAsIDk3LCAxNDQsIDEsIDIyOSwgMTYwLCAyMzMsIDUyLCAxNDQsIDEsIDIyOSwgMTYwLCAyMzMsIDUzLCAyMjQsIDM0LCAKLSAgICAxNDQsIDEsIDc0LCAxNDQsIDEsIDI1NCwgMTA4LCAxNDQsIDEsIDc1LCAxNDQsIDEsIDE4MSwgMTQ0LCAxLCAyMzUsIDE3LCAKLSAgICAyMjIsIDE0NCwgMTQ0LCAxLCAyMzUsIDE3LCAyMzAsIDEzNiwgMTQ0LCAxLCAyNDMsIDExMCwgMTQ0LCAxLCAyNDMsIDExMSwgCi0gICAgMjMwLCAxMzYsIDE0NCwgMSwgMjI5LCAxNTksIDE0NCwgMSwgMjUwLCAyMTksIDE0NCwgMSwgMjUwLCAyMjAsIDIzMCwgMTM2LCAKLSAgICAxNDQsIDEsIDIzNSwgMTM5LCAxNDQsIDEsIDIyOCwgMjQsIDIzMCwgMTM2LCAxNDQsIDEsIDIzNSwgMTQwLCAyMzIsIDEyLCAKLSAgICAxNDQsIDEsIDIyOCwgMjMsIDE0NCwgMSwgMjE2LCAxMTUsIDE0NCwgMSwgMjE2LCAxMTYsIDIzMiwgMTIsIDE0NCwgMSwgCi0gICAgMjQ4LCA4NiwgMTQ0LCAxLCAyNDgsIDg3LCAyMzIsIDEyLCAxNDQsIDEsIDIzMCwgNDYsIDIzMCwgMTM2LCAxNDQsIDEsIAotICAgIDIxOCwgNTIsIDE0NCwgMSwgMjE4LCA1MywgMjMwLCAxMzYsIDE0NCwgMSwgMjQ4LCAxNjQsIDE0NCwgMSwgMjQ4LCAxNjUsIAotICAgIDIzMiwgMTIsIDE0NCwgMSwgMjA1LCAxNDQsIDEsIDE5MywgMTQ0LCAxLCAyMjYsIDIxNCwgMjMwLCAxMzYsIDE0NCwgMSwgCi0gICAgMjUyLCAxMDcsIDE0NCwgMSwgMjUyLCAxMDgsIDIzMCwgMTM2LCAxNDQsIDEsIDE4OCwgMTQ0LCAxLCAxODYsIDE0NCwgMSwgCi0gICAgMjAzLCAxNDQsIDEsIDIyNCwgNzcsIDI1NCwgMTE1LCAxNDQsIDEsIDIzMywgMTU3LCAxNDQsIDEsIDIxNCwgNDksIDE0NCwgCi0gICAgMSwgMjIyLCAyMDMsIDIzMCwgMTM2LCAxNDQsIDEsIDIyMiwgMjAzLCAyMzIsIDEyLCAxNDQsIDEsIDIyMiwgMjAyLCAxNDQsIAotICAgIDEsIDE1OSwgMTQ0LCA1LCAyNTAsIDEyMiwgMjE3LCAyMDMsIDE0NCwgMzAsIDUsIDIxNywgMjU0LCAxNDQsIDMwLCA1LCAKLSAgICAyMTYsIDI0NiwgMTQ0LCAzMCwgNSwgMjEzLCAxNzgsIDE0NCwgMzAsIDUsIDIxMywgMTc5LCAyMzEsIDEzMywgMTQ0LCAzMCwgCi0gICAgNSwgMjE4LCAyNDgsIDE0NCwgMzAsIDUsIDIxOCwgMjQ5LCAyMzEsIDEyMSwgMTQ0LCAzMCwgNSwgMjE4LCAxNiwgMTQ0LCAKLSAgICAzMCwgNSwgMjQ3LCAxNDYsIDIzMCwgMTM1LCAxNDQsIDMwLCA1LCAyMjYsIDU5LCAxNDQsIDI0OSwgMTMzLCA1LCAyMzQsIAotICAgIDE2NCwgMTQ0LCAyNDksIDEzMywgNSwgMjI2LCA3MSwgMTQ0LCAyNDksIDEzMywgNSwgMjUwLCAyMDcsIDE0NCwgMjI2LCAKLSAgICAxNjcsIDE0NCwgNDIsIDIyMywgMjIxLCAxNDQsIDQ2LCAyMjMsIDIyMSwgMTQ0LCAyMjYsIDIwMywgMjU0LCAyNiwgMTQ0LCAKLSAgICAyMjYsIDIwMywgMjMyLCAyOSwgMTQ0LCAyMjYsIDIwMywgMjMyLCAxNDYsIDE0NCwgMjI2LCAyMDMsIDIxMywgMjIzLCAxNDQsIAotICAgIDIyNiwgMjAzLCAyMjYsIDE2OCwgMTQ0LCAyMjYsIDIwMywgMjMyLCAyMzQsIDE0NCwgMjI2LCAyMDMsIDIzMiwgMTQwLCAKLSAgICAxNDQsIDIyNiwgMjAzLCAyNTQsIDE1NCwgMTQ0LCAyMjYsIDIwMywgMjU0LCAxNTUsIDI1NCwgMTU0LCAxNDQsIDIyNiwgCi0gICAgMjAzLCAyMjUsIDE4MywgMTQ0LCAyMTYsIDU4LCAyMjYsIDIwMywgMjI1LCAxODMsIDE0NCwgMjI2LCAxNjQsIDE0NCwgMjEsIAotICAgIDIxMiwgNzksIDE0NCwgMjEsIDExNiwgMTQ0LCAyMSwgMTA5LCAxNDQsIDIxLCAxNjYsIDE0NCwgMjEsIDE2MywgMTQ0LCAyMSwgCi0gICAgMTgwLCAxNDQsIDIxLCAxODksIDE0NCwgMjEsIDE5OCwgMTQ0LCAyMSwgMTk1LCAxNDQsIDIxLCAyMDAsIDE0NCwgMjI2LCAKLSAgICAyMDMsIDIxNywgMjIsIDIxNiwgNzAsIDE0NCwgMjI2LCAyMDMsIDIzNSwgMTY1LCAxNjIsIDEsIDYxLCAxNjIsIDEsIDcyLCAKLSAgICAxNjIsIDEsIDY5LCAxNjIsIDEsIDc0LCAxNjIsIDEsIDI1NCwgMTA4LCAxNjIsIDEsIDc1LCAxNjIsIDEsIDE4MSwgMTYyLCAKLSAgICAxLCAyMzQsIDEzOCwgMTYyLCAxLCAyNDMsIDExMCwgMTYyLCAxLCAyNDIsIDIyNSwgMTYyLCAxLCAyMjksIDc1LCAxNjIsIDEsIAotICAgIDIyOSwgMTU5LCAxNjIsIDEsIDI1MCwgOTIsIDE2MiwgMSwgMjUwLCA0OSwgMTYyLCAxLCAyMzUsIDEzOSwgMTYyLCAxLCAKLSAgICAyMzUsIDExNSwgMTYyLCAxLCAyMjksIDY2LCAxNjIsIDEsIDIyOSwgNjgsIDE2MiwgMSwgMjI5LCA2NywgMTYyLCAxLCAyMTgsIAotICAgIDUyLCAxNjIsIDEsIDIxNywgMTYxLCAxNjIsIDEsIDI0OCwgMTY0LCAxNjIsIDEsIDI0NywgMjMyLCAxNjIsIDEsIDIyOCwgCi0gICAgNjIsIDE2MiwgMSwgMjA1LCAxNjIsIDEsIDI0OCwgODYsIDE2MiwgMSwgMTkzLCAxNjIsIDEsIDIyNSwgMTAwLCAxNjIsIDEsIAotICAgIDIyNiwgMjMsIDE2MiwgMSwgMjUyLCAxMDcsIDE2MiwgMSwgMjUxLCAxOTUsIDE2MiwgMSwgMjMwLCAxNjUsIDE2MiwgMSwgCi0gICAgMTg4LCAxNjIsIDEsIDI1MiwgMzEsIDE2MiwgMSwgMTg2LCAxNjIsIDEsIDIwMywgMTYyLCAxLCAyMzMsIDE1NywgMTYyLCAxLCAKLSAgICAyMTUsIDEsIDE2MiwgMSwgMjE5LCAxNTcsIDE2MiwgMSwgMjIyLCAyMDIsIDE2MiwgMSwgMTU5LCAxNjIsIDMwLCA1LCAyNTQsIAotICAgIDIzMiwgMTYyLCAzMCwgNSwgNzIsIDE2MiwgMzAsIDUsIDIzNiwgMjgsIDE2MiwgMzAsIDUsIDI0NSwgMTUyLCAxNjIsIDMwLCAKLSAgICA1LCA2OSwgMTYyLCAzMCwgNSwgMjI3LCA5OSwgMTYyLCAzMCwgNSwgNzUsIDE2MiwgMzAsIDUsIDI1NCwgMTA4LCAxNjIsIAotICAgIDMwLCA1LCAyNTMsIDEwOCwgMTYyLCAzMCwgNSwgMjE1LCAxODMsIDE2MiwgMjQ5LCAxMzMsIDUsIDE4NiwgMTYyLCAyNDksIAotICAgIDEzMywgNSwgMjAzLCAxNjIsIDI0OSwgMTMzLCA1LCAyMzMsIDE1NywgMTYyLCAyNDksIDEzMywgNSwgMjE0LCA0OSwgMTYyLCAKLSAgICAxLCA0MCwgMjM1LCAyNywgMTYyLCAxLCA0MCwgMjQzLCAxNzcsIDE2MiwgMSwgNDAsIDIyOSwgMTYxLCAxNjIsIDI0OSwgCi0gICAgMTMzLCA1LCA0MCwgMjI5LCAxNjEsIDE2MiwgMSwgNDAsIDI1MCwgOTMsIDE2MiwgMSwgNDAsIDIxOCwgOTksIDE2MiwgMSwgCi0gICAgNDAsIDIwNCwgMTYyLCAxLCA0MCwgMjI2LCAyMjksIDE2MiwgMSwgNDAsIDIxMywgMTA1LCAxNjIsIDEsIDQwLCAxNDksIAotICAgIDE2MiwgMSwgNDAsIDE1MCwgMTYyLCAxLCA0MCwgMjE5LCAxNTgsIDE2MiwgMjQ5LCAxMzMsIDUsIDQwLCAxODMsIDE2MiwgCi0gICAgMjQ5LCAxMzMsIDUsIDQwLCAyNDIsIDQxLCAxNjIsIDIxLCAyMTIsIDc5LCAxNjIsIDIxLCAxMTYsIDE2MiwgMjEsIDEwOSwgCi0gICAgMTYyLCAyMSwgMTY2LCAxNjIsIDIxLCAxNjMsIDE2MiwgMjEsIDE4MCwgMTYyLCAyMSwgMTg5LCAxNjIsIDIxLCAxOTgsIAotICAgIDE2MiwgMjEsIDE5NSwgMTYyLCAyMSwgMjAwLCAxNjIsIDIyNSwgMjcsIDIxOSwgMTgzLCAxNjIsIDIyNSwgMjcsIDI0OCwgCi0gICAgMTIzLCAxNjIsIDIyNSwgMjcsIDUxLCAyNDgsIDEyMywgMTYyLCAyMjUsIDI3LCAyMTYsIDE2OSwgMjQ4LCAxMjMsIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjQzLCAxMTAsIDY0LCAxLCAyMzQsIDEzMiwgMjUwLCAyMTksIDY0LCAxLCAyMzQsIDEzMiwgMjUwLCA5MiwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyMzUsIDEzOSwgNjQsIDEsIDIzNCwgMTMyLCAyMzUsIDExNSwgNjQsIDEsIDIzNCwgMTMyLCAKLSAgICAyMjgsIDIzLCA2NCwgMSwgMjM0LCAxMzIsIDIxNiwgMTE1LCA2NCwgMSwgMjM0LCAxMzIsIDIxNiwgMTA1LCA2NCwgMSwgCi0gICAgMjM0LCAxMzIsIDI0OCwgODYsIDY0LCAxLCAyMzQsIDEzMiwgMjQ4LCA3MCwgNjQsIDEsIDIzNCwgMTMyLCAyNDcsIDIzMiwgCi0gICAgNjQsIDEsIDIzNCwgMTMyLCAyMDUsIDY0LCAxLCAyMzQsIDEzMiwgMjIyLCAyMDIsIDY0LCAxLCAyMzQsIDEzMiwgMTU5LCAKLSAgICA2NCwgMSwgMjM0LCAxMzIsIDI0MSwgMTc0LCA2NCwgMSwgMjM0LCAxMzIsIDI0NCwgMTY0LCA2NCwgNTksIDEsIDIzNCwgCi0gICAgMTMyLCAyMjQsIDIsIDY0LCAxLCAyMzQsIDEzMiwgMjEzLCAxNTMsIDY0LCAxLCAyMzQsIDEzMiwgMjEyLCAxMDksIDY0LCAxLCAKLSAgICAyMzQsIDEzMiwgMjAzLCA2NCwgMjMyLCAxOTgsIDIzNCwgMTMyLCAyMjcsIDExNywgNjQsIDIzMiwgMTk4LCAyMzQsIDEzMiwgCi0gICAgMjI0LCAxODgsIDY0LCAyMzIsIDE5OCwgMjM0LCAxMzIsIDI0MSwgMTA3LCA2NCwgMTYsIDI1NCwgOTgsIDI0NCwgMjUzLCAKLSAgICA2NCwgMTYsIDI1NCwgOTgsIDExNiwgNjQsIDE2LCAyNTQsIDk4LCAxMDksIDY0LCAxLCAyNTQsIDk4LCAyMDMsIDY0LCA1LCAKLSAgICAyMjYsIDE1MSwgMjM0LCAyMTgsIDIxNiwgMjQxLCAzOCwgMTkwLCAxLCAxMTUsIDIzNCwgMzcsIDM4LCAxOTAsIDEsIDEyNCwgCi0gICAgMjM0LCAzNywgMzgsIDE5MCwgMSwgMTE1LCAyMzQsIDExMywgMzgsIDE5MCwgMSwgMTI0LCAyMzQsIDExMywgMzgsIDE5MCwgCi0gICAgMSwgMTE1LCAyMzQsIDEyMCwgMzgsIDE5MCwgMSwgMTI0LCAyMzQsIDEyMCwgMzgsIDE5MCwgMSwgMTE1LCAyNDIsIDE1MCwgCi0gICAgMzgsIDE5MCwgMSwgMTI0LCAyNDIsIDE1MCwgMzgsIDE5MCwgMSwgMTE1LCAyMjksIDkwLCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIyOSwgOTAsIDM4LCAxOTAsIDEsIDExNSwgMjQ5LCAxNzUsIDM4LCAxOTAsIDEsIDEyNCwgMjQ5LCAxNzUsIDM4LCAxOTAsIAotICAgIDEsIDExNSwgMjUwLCAyMywgMzgsIDE5MCwgMSwgMTI0LCAyNTAsIDIzLCAzOCwgMTkwLCAxLCAxMTUsIDIxOSwgMjQyLCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDIxOSwgMjQyLCAzOCwgMTkwLCAxLCAxMTUsIDIyNywgMjUzLCAzOCwgMTkwLCAxLCAxMjQsIDIyNywgCi0gICAgMjUzLCAzOCwgMTkwLCAxLCAxMTUsIDI0NywgOTksIDM4LCAxOTAsIDEsIDEyNCwgMjQ3LCA5OSwgMzgsIDE5MCwgMSwgMTE1LCAKLSAgICAxMDgsIDM4LCAxOTAsIDEsIDEyNCwgMTA4LCAzOCwgMTkwLCAxLCAxMTUsIDIxNywgMTA5LCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIxNywgMTA5LCAzOCwgMTkwLCAxLCAxMTUsIDIyOCwgMTg1LCAzOCwgMTkwLCAxLCAxMjQsIDIyOCwgMTg1LCAzOCwgMTkwLCAKLSAgICAxLCAxMTUsIDI1MSwgMTI4LCAzOCwgMTkwLCAxLCAxMjQsIDI1MSwgMTI4LCAzOCwgMTkwLCAxLCAxMTUsIDIyNSwgMTUwLCAKLSAgICAzOCwgMTkwLCAxLCAxMjQsIDIyNSwgMTUwLCAzOCwgMTkwLCAxLCAxMTUsIDIyNSwgMjUzLCAzOCwgMTkwLCAxLCAxMjQsIAotICAgIDIyNSwgMjUzLCAzOCwgMTkwLCAxLCAxMTUsIDI0NCwgMTIsIDM4LCAxOTAsIDEsIDEyNCwgMjQ0LCAxMiwgMzgsIDE5MCwgMSwgCi0gICAgMTE1LCAyMzAsIDIzMSwgMzgsIDE5MCwgMSwgMTI0LCAyMzAsIDIzMSwgMzgsIDE5MCwgMSwgMTE1LCAyMTIsIDIzNSwgMzgsIAotICAgIDE5MCwgMSwgMTI0LCAyMTIsIDIzNSwgMzgsIDE5MCwgMSwgMTE1LCAyMjMsIDExMiwgMzgsIDE5MCwgMSwgMTI0LCAyMjMsIAotICAgIDExMiwgMzgsIDE5MCwgMSwgMTE1LCAyMzIsIDIwOCwgMzgsIDE5MCwgMSwgMTI0LCAyMzIsIDIwOCwgMzgsIDE5MCwgMSwgCi0gICAgMTE1LCAyMTQsIDExOSwgMzgsIDE5MCwgMSwgMTI0LCAyMTQsIDExOSwgMzgsIDE5MCwgMSwgMTE1LCAyNDEsIDU0LCAzOCwgCi0gICAgMTkwLCAxLCAxMjQsIDI0MSwgNTQsIDM4LCAxOTAsIDEsIDExNSwgNzUsIDM4LCAxOTAsIDEsIDEyNCwgNzUsIDM4LCAxOTAsIAotICAgIDIzMiwgOSwgMjM0LCAyMzUsIDM4LCAxOTAsIDMwLCAyNTQsIDIzMiwgMzgsIDE5MCwgMzAsIDcyLCAzOCwgMTkwLCAzMCwgCi0gICAgMjE1LCAxODMsIDM4LCAxOTAsIDMwLCA2OSwgMzgsIDE5MCwgMzAsIDc0LCAzOCwgMTkwLCAzMCwgNzUsIDM4LCAxOTAsIAotICAgIDIzMiwgOSwgMjM0LCAxMTUsIDM4LCAxOTAsIDMwLCAyNDAsIDExMSwgMzgsIDE5MCwgMzAsIDIxNSwgMTgyLCAzOCwgMTkwLCAKLSAgICAzMCwgMjE1LCAxOTYsIDM4LCAxOTAsIDMwLCAyNTMsIDEwNiwgMzgsIDE5MCwgMzAsIDI1MywgODMsIDM4LCAxOTAsIDMwLCAKLSAgICAyNTQsIDMyLCAzOCwgMTkwLCAzMCwgMjU0LCA0NSwgMzgsIDE5MCwgMTYwLCAyMzIsIDksIDI0NSwgMTM3LCAzOCwgMTkwLCAKLSAgICAxNjAsIDIzMiwgOSwgMjI4LCA2MSwgMzgsIDE5MCwgMTYwLCAyMzIsIDksIDIxNywgMTA5LCAzOCwgMTkwLCAxNjAsIDIzMiwgCi0gICAgOSwgMjE5LCAyMjgsIDM4LCAxOTAsIDE2LCAyMzQsIDIyLCAzOCwgMTkwLCAxNiwgMjI4LCA2MSwgMzgsIDE5MCwgMTYsIAotICAgIDIyMiwgMTY4LCAzOCwgMTkwLCAxNiwgMjQxLCA1NSwgMjQxLCA1MCwgMzgsIDE5MCwgMTYsIDIzNCwgMzEsIDIzNCwgMzAsIAotICAgIDI4LCA0LCAyMTYsIDk4LCAyOCwgNCwgMjE2LCAxMDEsIDI4LCA0LCAyMTYsIDEwNCwgMjgsIDQsIDIxNiwgMTAyLCAyOCwgNCwgCi0gICAgMjE2LCAxMDMsIDI4LCA0LCAyMTYsIDEwMCwgMjgsIDQsIDI0OCwgNjQsIDI4LCA0LCAyNDgsIDY2LCAyOCwgNCwgMjQ4LCAKLSAgICA2OSwgMjgsIDQsIDI0OCwgNjcsIDI4LCA0LCAyNDgsIDY4LCAyOCwgNCwgMjQ4LCA2NSwgMjgsIDQsIDI0NSwgMjM5LCAyOCwgCi0gICAgNCwgMjQ1LCAyNDIsIDI4LCA0LCAyNDUsIDI0OCwgMjgsIDQsIDI0NSwgMjQ2LCAyOCwgNCwgMjQ1LCAyNDcsIDI4LCA0LCAKLSAgICAyNDUsIDI0MCwgMjgsIDQsIDI1MCwgMTM4LCAyOCwgNCwgMjUwLCAxMzIsIDI4LCA0LCAyNTAsIDEzNCwgMjgsIDQsIDI1MCwgCi0gICAgMTM3LCAyOCwgNCwgMjUwLCAxMzUsIDI4LCA0LCAyNTAsIDEzNiwgMjgsIDQsIDI1MCwgMTMzLCAyOCwgNCwgMjUyLCAzMSwgCi0gICAgMjgsIDQsIDI1MiwgMTAsIDI4LCA0LCAyNTIsIDIyLCAyOCwgNCwgMjUyLCAzMCwgMjgsIDQsIDI1MiwgMjUsIDI4LCA0LCAKLSAgICAyNTIsIDI2LCAyOCwgNCwgMjUyLCAxNCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzQsIDI4LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDEsIDIyMiwgMTY4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIzMywgMTMzLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIAotICAgIDIzMCwgMjQxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDE5MywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMDUsIDIzMSwgCi0gICAgMTQwLCAyMzEsIDE5NCwgMSwgMjUwLCAzOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTcsIDQ0LCAyMzEsIDE0MCwgMjMxLCAKLSAgICAxOTQsIDEsIDIzNCwgMTA5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyOSwgODAsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgCi0gICAgMjE3LCAxMDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjE0LCA0NCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTMsIDU4LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDI0MCwgMjA2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIxNSwgMTYwLCAyMzEsIAotICAgIDE0MCwgMjMxLCAxOTQsIDEsIDcyLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNiwgMTgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgCi0gICAgMSwgMjUzLCAxMTgsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjQyLCAxNDMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjM1LCAKLSAgICAxMTQsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjI0LCA1NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNTIsIDEwNywgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzUsIDEwMywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDcsIDE3MSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyNDIsIDE5NywgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDcsIDIxMywgMjMxLCAxNDAsIAotICAgIDIzMSwgMTk0LCAxLCAyNTEsIDE5NCwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMzQsIDI5LCAyMzIsIDE4MSwgMjMxLCAKLSAgICAxNDAsIDIzMSwgMTk0LCAxLCAyMzMsIDEzNCwgMjMyLCAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMSwgMjMwLCAyNDIsIAotICAgIDIzMiwgMTgxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDEsIDIyNiwgMjE0LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAKLSAgICAxLCAyMzAsIDQ2LCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyMTcsIDQ1LCAyMzIsIDE4MSwgMjMxLCAxNDAsIAotICAgIDIzMSwgMTk0LCAxLCAyMjksIDgxLCAyMzIsIDE4MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAxLCAyNDAsIDE0NiwgMjMyLCAKLSAgICAxODEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIyNywgNjEsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIzNSwgCi0gICAgMjQ5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyNTQsIDMxLCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTMsIAotICAgIDI5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDMwLCA1LCAyMTksIDIxOSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAzMCwgNSwgMjE1LCAKLSAgICAxNTcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDI1MCwgNjAsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMzAsIDUsIDIyOCwgCi0gICAgNDcsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjUwLCA2MSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMzIsIDE0MywgMjM1LCAxNDgsIAotICAgIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjUzLCAyMTYsIDIzNSwgMTQ4LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAyMTIsIDc5LCAKLSAgICAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxMTYsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDEwOSwgMjMxLCAxNDAsIDIzMSwgCi0gICAgMTk0LCAyMSwgMTY2LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxNjMsIDIzMSwgMTQwLCAyMzEsIDE5NCwgMjEsIDE4MCwgCi0gICAgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMTg5LCAyMzEsIDE0MCwgMjMxLCAxOTQsIDIxLCAxOTgsIDIzMSwgMTQwLCAyMzEsIAotICAgIDE5NCwgMjEsIDE5NSwgMjMxLCAxNDAsIDIzMSwgMTk0LCAyMSwgMjAwLCAyMywgMTM1LCAyMjcsIDE5NywgMjMsIDEzNSwgCi0gICAgMjI3LCAyMDIsIDIzLCAxMzUsIDIxMiwgMjM0LCAyMywgMTM1LCAyMTIsIDIzMywgMjMsIDEzNSwgMjEyLCAyMzIsIDIzLCAKLSAgICAxMzUsIDIxNSwgMjQ2LCAyMywgMTM1LCAyMTUsIDI0OSwgMjMsIDEzNSwgMjEyLCAyMDEsIDIzLCAxMzUsIDIxMiwgMTk3LCAKLSAgICAyMywgMTM1LCAyNDUsIDIxLCAyMywgMTM1LCAyNDUsIDE5LCAyMywgMTM1LCAyNDUsIDIwLCAyMywgMTM1LCAyNDUsIDE3LCAKLSAgICAyMywgMTM1LCAyNDAsIDEzNiwgMjMsIDEzNSwgMjQwLCAxMzUsIDIzLCAxMzUsIDI0MCwgMTMzLCAyMywgMTM1LCAyNDAsIAotICAgIDEzNCwgMjMsIDEzNSwgMjQwLCAxMzksIDIzLCAxMzUsIDI0MCwgMTMyLCAyMywgMTM1LCAyNDAsIDEzMSwgMjMsIDEzNSwgCi0gICAgMjQwLCAxNDEsIDIzLCAxMzUsIDI1MywgMjAzLCAyMywgMTM1LCAyNTMsIDIwMiwgMjMsIDg5LCAyMjksIDUwLCAyMywgODksIAotICAgIDIyOSwgNTYsIDIzLCA4OSwgMjE5LCAxMzksIDIzLCA4OSwgMjE5LCAxMzgsIDIzLCA4OSwgMjE3LCA1MCwgMjMsIDg5LCAKLSAgICAyMTcsIDQ4LCAyMywgODksIDIxNywgNDcsIDIzLCA4OSwgMjE3LCA1MywgMjMsIDg5LCAyMTcsIDU0LCAyMywgODksIDIxNywgCi0gICAgNDYsIDIzLCA4OSwgMjIzLCAxNTgsIDIzLCA4OSwgMjIzLCAxNzMsIDIzLCA4OSwgMjE5LCAxNDUsIDIzLCA4OSwgMjIzLCAKLSAgICAxNzAsIDIzLCA4OSwgMjIzLCAxNjAsIDIzLCA4OSwgMjIzLCAxNjIsIDIzLCA4OSwgMjIzLCAxNDksIDIzLCA4OSwgMjIzLCAKLSAgICAxNTAsIDIzLCA4OSwgMjM0LCAyMjMsIDIzLCA4OSwgMjMxLCAyNSwgMjMsIDg5LCAyMzEsIDE5LCAyMywgODksIDIxOSwgCi0gICAgMTQ5LCAyMywgODksIDIzMSwgMjIsIDIzLCA4OSwgMjMxLCAyOCwgMjMsIDg5LCAyMjUsIDIwOCwgMjMsIDg5LCAyMjUsIAotICAgIDIxNywgMjMsIDg5LCAyMjUsIDIyMSwgMjMsIDg5LCAyMTksIDE0NywgMjMsIDg5LCAyMjUsIDIxMSwgMjMsIDg5LCAyMjUsIAotICAgIDIyNSwgMjMsIDg5LCAyMjUsIDIyNiwgMjMsIDg5LCAyMjAsIDY4LCAyMywgODksIDIyMCwgNzEsIDIzLCA4OSwgMjE5LCAKLSAgICAxNDMsIDIzLCA4OSwgMjE5LCAxNDEsIDIzLCA4OSwgMjIwLCA2NiwgMjMsIDg5LCAyMjAsIDc0LCAyMywgODksIDIyMCwgNzUsIAotICAgIDIzLCA4OSwgMjIwLCA2MCwgMjMsIDg5LCAyMjAsIDczLCAyMywgODksIDIyNiwgMTU4LCAyMywgODksIDIyNiwgMTU5LCAyMywgCi0gICAgODksIDIxMywgMTUsIDIzLCA4OSwgMjEzLCAxNiwgMjMsIDg5LCAyNDksIDIzNywgMjMsIDg5LCAyNDksIDIzNiwgMjMsIDg5LCAKLSAgICAyMTksIDE1NCwgMjMsIDg5LCAyMjYsIDQsIDIzLCA4OSwgMjI2LCAzLCA5LCAxMywgMjM4LCAxNywgOSwgMTMsIDIzOCwgMTYsIAotICAgIDksIDEzLCAyMzgsIDE1LCA5LCAxMywgMjM4LCAxNCwgOSwgMTMsIDIzOCwgMTMsIDksIDEzLCAyMzgsIDEyLCA5LCAxMywgCi0gICAgMjM4LCAxMSwgOSwgMTMsIDIzOCwgMTAsIDksIDEzLCAyMzgsIDksIDksIDEzLCAyMzgsIDgsIDksIDEzLCAyMzgsIDcsIDksIAotICAgIDEzLCAyMzgsIDYsIDksIDEzLCAyMzgsIDUsIDksIDEzLCAyMzgsIDQsIDksIDEzLCAyMzgsIDMsIDksIDEzLCAyMzgsIDIsIAotICAgIDksIDEzLCAyMzgsIDEsIDksIDEzLCAyMzgsIDAsIDksIDEzLCAyMzcsIDI1NSwgOSwgMTMsIDIzNywgMjU0LCA5LCAxMywgCi0gICAgMjM3LCAyNTMsIDksIDEzLCAyMzcsIDI1MiwgOSwgMTMsIDIzNywgMjUxLCA5LCAxMywgMjM3LCAyNTAsIDksIDEzLCAyMzcsIAotICAgIDI0OSwgOSwgMTMsIDIzNywgMjQ4LCA5LCAxMywgMjM3LCAyNDcsIDksIDEzLCAyMzcsIDI0NiwgOSwgMTMsIDIzNywgMjQ1LCAKLSAgICA5LCAxMywgMjM3LCAyNDQsIDksIDEzLCAyMzcsIDI0MywgOSwgMTMsIDIzNywgMjQyLCA5LCAxMywgMjM3LCAyNDEsIDksIAotICAgIDEzLCAyMzcsIDI0MCwgOSwgMTMsIDIzNywgMjM5LCA5LCAxMywgMjM3LCAyMzgsIDksIDEzLCAyMzcsIDIzNywgOSwgMTMsIAotICAgIDIzNywgMjM2LCA5LCAxMywgMjM3LCAyMzUsIDksIDEzLCAyMzcsIDIzNCwgOSwgMTMsIDIzNywgMjMzLCA5LCAxMywgMjM3LCAKLSAgICAyMzIsIDksIDEzLCAyMzcsIDIzMSwgOSwgMTMsIDIzNywgMjMwLCA5LCAxMywgMjM3LCAyMjksIDksIDEzLCAyMzcsIDIyOCwgCi0gICAgOSwgMTMsIDIzNywgMjI3LCA5LCAxMywgMjM3LCAyMjYsIDksIDEzLCAyMzcsIDIyNSwgOSwgMTMsIDIzNywgMjI0LCA5LCAKLSAgICAxMywgMjM3LCAyMjMsIDksIDEzLCAyMzcsIDIyMiwgOSwgMTMsIDIzNywgMjIxLCA5LCAxMywgMjM3LCAyMjAsIDksIDEzLCAKLSAgICAyMzcsIDIxOSwgOSwgMTMsIDIzNywgMjE4LCA5LCAxMywgMjM3LCAyMTcsIDksIDEzLCAyMzcsIDIxNiwgOSwgMTMsIDIzNywgCi0gICAgMjE1LCA5LCAxMywgMjM3LCAyMTQsIDksIDEzLCAyMzcsIDIxMywgOSwgMTMsIDIzNywgMjEyLCA5LCAxMywgMjM3LCAyMTEsIAotICAgIDksIDEzLCAyMzcsIDIxMCwgOSwgMTMsIDIzNywgMjA5LCA5LCAxMywgMjM3LCAyMDgsIDksIDEzLCAyMzcsIDIwNywgOSwgCi0gICAgMTMsIDIzNywgMjA2LCA5LCAxMywgMjM3LCAyMDUsIDksIDEzLCAyMzcsIDIwNCwgOSwgMTMsIDIzNywgMjAzLCA5LCAxMywgCi0gICAgMjM3LCAyMDIsIDksIDEzLCAyMzcsIDIwMSwgOSwgMTMsIDIzNywgMjAwLCA5LCAxMywgMjM3LCAxOTksIDksIDEzLCAyMzcsIAotICAgIDE5OCwgOSwgMTMsIDIzNywgMTk3LCA5LCAxMywgMjM3LCAxOTYsIDksIDEzLCAyMzcsIDE5NSwgOSwgMTMsIDIzNywgMTk0LCAKLSAgICA5LCAxMywgMjM3LCAxOTMsIDksIDEzLCAyMzcsIDE5MiwgOSwgMTMsIDIzNywgMTkxLCA5LCAxMywgMjM3LCAxOTAsIDksIAotICAgIDEzLCAyMzcsIDE4OSwgOSwgMTMsIDIzNywgMTg4LCA5LCAxMywgMjM3LCAxODcsIDksIDEzLCAyMzcsIDE4NiwgOSwgMTMsIAotICAgIDIzNywgMTg1LCA5LCAxMywgMjM3LCAxODQsIDksIDEzLCAyMzcsIDE4MywgOSwgMTMsIDIzNywgMTgyLCA5LCAxMywgMjM3LCAKLSAgICAxODEsIDksIDEzLCAyMzcsIDE4MCwgOSwgMTMsIDIzNywgMTc5LCA5LCAxMywgMjM3LCAxNzgsIDksIDEzLCAyMzcsIDE3NywgCi0gICAgOSwgMTMsIDIzNywgMTc2LCA5LCAxMywgMjM3LCAxNzUsIDksIDEzLCAyMzcsIDE3NCwgOSwgMTMsIDIzNywgMTczLCA5LCAKLSAgICAxMywgMjM3LCAxNzIsIDksIDEzLCAyMzcsIDE3MSwgOSwgMTMsIDIzNywgMTcwLCA5LCAxMywgMjM3LCAxNjksIDksIDEzLCAKLSAgICAyMzcsIDE2OCwgOSwgMTMsIDIzNywgMTY3LCA5LCAxMywgMjM3LCAxNjYsIDksIDEzLCAyMzcsIDE2NSwgOSwgMTMsIDIzNywgCi0gICAgMTY0LCA5LCAxMywgMjM3LCAxNjMsIDksIDEzLCAyMzcsIDE2MiwgOSwgMTMsIDIzNywgMTYxLCA5LCAxMywgMjM3LCAxNjAsIAotICAgIDksIDEzLCAyMzcsIDE1OSwgOSwgMTMsIDIzNywgMTU4LCA5LCAxMywgMjM3LCAxNTcsIDksIDEzLCAyMzcsIDE1NiwgOSwgCi0gICAgMTMsIDIzNywgMTU1LCA5LCAxMywgMjM3LCAxNTQsIDksIDEzLCAyMzcsIDE1MywgOSwgMTMsIDIzNywgMTUyLCA5LCAxMywgCi0gICAgMjM3LCAxNTEsIDksIDEzLCAyMzcsIDE1MCwgOSwgMTMsIDIzNywgMTQ5LCA5LCAxMywgMjM3LCAxNDgsIDksIDEzLCAyMzcsIAotICAgIDE0NywgOSwgMTMsIDIzNywgMTQ2LCA5LCAxMywgMjM3LCAxNDUsIDksIDEzLCAyMzcsIDE0NCwgOSwgMTMsIDIzNywgMTQzLCAKLSAgICA5LCAxMywgMjM3LCAxNDIsIDksIDEzLCAyMzcsIDE0MSwgOSwgMTMsIDIzNywgMTQwLCA5LCAxMywgMjM3LCAxMzksIDksIAotICAgIDEzLCAyMzcsIDEzOCwgOSwgMTMsIDIzNywgMTM3LCA5LCAxMywgMjM3LCAxMzYsIDksIDEzLCAyMzcsIDEzNSwgOSwgMTMsIAotICAgIDIzNywgMTM0LCA5LCAxMywgMjM3LCAxMzMsIDksIDEzLCAyMzcsIDEzMiwgOSwgMTMsIDIzNywgMTMxLCA5LCAxMywgMjM3LCAKLSAgICAxMzAsIDksIDEzLCAyMzcsIDEyOSwgOSwgMTMsIDIzNywgMTI4LCA5LCAxMywgMjM3LCAxMjcsIDksIDEzLCAyMzcsIDEyNiwgCi0gICAgOSwgMTMsIDIzNywgMTI1LCA5LCAxMywgMjM3LCAxMjQsIDksIDEzLCAyMzcsIDEyMywgOSwgMTMsIDIzNywgMTIyLCA5LCAKLSAgICAxMywgMjM3LCAxMjEsIDksIDEzLCAyMzcsIDEyMCwgOSwgMTMsIDIzNywgMTE5LCA5LCAxMywgMjM3LCAxMTgsIDksIDEzLCAKLSAgICAyMzcsIDExNywgOSwgMTMsIDIzNywgMTE2LCA5LCAxMywgMjM3LCAxMTUsIDksIDEzLCAyMzcsIDExNCwgOSwgMTMsIDIzNywgCi0gICAgMTEzLCA5LCAxMywgMjM3LCAxMTIsIDksIDEzLCAyMzcsIDExMSwgOSwgMTMsIDIzNywgMTEwLCA5LCAxMywgMjM3LCAxMDksIAotICAgIDksIDEzLCAyMzcsIDEwOCwgOSwgMTMsIDIzNywgMTA3LCA5LCAxMywgMjM3LCAxMDYsIDksIDEzLCAyMzcsIDEwNSwgOSwgCi0gICAgMTMsIDIzNywgMTA0LCA5LCAxMywgMjM3LCAxMDMsIDksIDEzLCAyMzcsIDEwMiwgOSwgMTMsIDIzNywgMTAxLCA5LCAxMywgCi0gICAgMjM3LCAxMDAsIDksIDEzLCAyMzcsIDk5LCA5LCAxMywgMjM3LCA5OCwgOSwgMTMsIDIzNywgOTcsIDksIDEzLCAyMzcsIDk2LCAKLSAgICA5LCAxMywgMjM3LCA5NSwgOSwgMTMsIDIzNywgOTQsIDksIDEzLCAyMzcsIDkzLCA5LCAxMywgMjM3LCA5MiwgOSwgMTMsIAotICAgIDIzNywgOTEsIDksIDEzLCAyMzcsIDkwLCA5LCAxMywgMjM3LCA4OSwgOSwgMTMsIDIzNywgODgsIDksIDEzLCAyMzcsIDg3LCAKLSAgICA5LCAxMywgMjM3LCA4NiwgOSwgMTMsIDIzNywgODUsIDksIDEzLCAyMzcsIDg0LCA5LCAxMywgMjM3LCA4MywgOSwgMTMsIAotICAgIDIzNywgODIsIDksIDEzLCAyMzcsIDgxLCA5LCAxMywgMjM3LCA4MCwgOSwgMTMsIDIzNywgNzksIDksIDEzLCAyMzcsIDc4LCAKLSAgICA5LCAxMywgMjM3LCA3NywgOSwgMTMsIDIzNywgNzYsIDksIDEzLCAyMzcsIDc1LCA5LCAxMywgMjM3LCA3NCwgOSwgMTMsIAotICAgIDIzNywgNzMsIDksIDEzLCAyMzcsIDcyLCA5LCAxMywgMjM3LCA3MSwgOSwgMTMsIDIzNywgNzAsIDksIDEzLCAyMzcsIDY5LCAKLSAgICA5LCAxMywgMjM3LCA2OCwgOSwgMTMsIDIzNywgNjcsIDksIDEzLCAyMzcsIDY2LCA5LCAxMywgMjM3LCA2NSwgOSwgMTMsIAotICAgIDIzNywgNjQsIDksIDEzLCAyMzcsIDYzLCA5LCAxMywgMjM3LCA2MiwgOSwgMTMsIDIzNywgNjEsIDksIDEzLCAyMzcsIDYwLCAKLSAgICA5LCAxMywgMjM3LCA1OSwgOSwgMTMsIDIzNywgNTgsIDksIDEzLCAyMzcsIDU3LCA5LCAxMywgMjM3LCA1NiwgOSwgMTMsIAotICAgIDIzNywgNTUsIDksIDEzLCAyMzcsIDU0LCA5LCAxMywgMjM3LCA1MywgOSwgMTMsIDIzNywgNTIsIDksIDEzLCAyMzcsIDUxLCAKLSAgICA5LCAxMywgMjM3LCA1MCwgOSwgMTMsIDIzNywgNDksIDksIDEzLCAyMzcsIDQ4LCA5LCAxMywgMjM3LCA0NywgOSwgMTMsIAotICAgIDIzNywgNDYsIDksIDEzLCAyMzcsIDQ1LCA5LCAxMywgMjM3LCA0NCwgOSwgMTMsIDIzNywgNDMsIDksIDEzLCAyMzcsIDQyLCAKLSAgICA5LCAxMywgMjM3LCA0MSwgOSwgMTMsIDIzNywgNDAsIDksIDEzLCAyMzcsIDM5LCA5LCAxMywgMjM3LCAzOCwgOSwgMTMsIAotICAgIDIzNywgMzcsIDksIDEzLCAyMzcsIDM2LCA5LCAxMywgMjM3LCAzNSwgOSwgMTMsIDIzNywgMzQsIDksIDEzLCAyMzcsIDMzLCAKLSAgICA5LCAxMywgMjM3LCAzMiwgOSwgMTMsIDIzNywgMzEsIDksIDEzLCAyMzcsIDMwLCA5LCAxMywgMjM3LCAyOSwgOSwgMTMsIAotICAgIDIzNywgMjgsIDksIDEzLCAyMzcsIDI3LCA5LCAxMywgMjM3LCAyNiwgOSwgMTMsIDIzNywgMjUsIDksIDEzLCAyMzcsIDI0LCAKLSAgICA5LCAxMywgMjM3LCAyMywgOSwgMTMsIDIzNywgMjIsIDksIDEzLCAyMzcsIDIxLCA5LCAxMywgMjM3LCAyMCwgOSwgMTMsIAotICAgIDIzNywgMTksIDksIDEzLCAyMzcsIDE4LCA5LCAxMywgMjM3LCAxNywgOSwgMTMsIDIzNywgMTYsIDksIDEzLCAyMzcsIDE1LCAKLSAgICA5LCAxMywgMjM3LCAxNCwgOSwgMTMsIDIzNywgMTMsIDksIDEzLCAyMzcsIDEyLCA5LCAxMywgMjM3LCAxMSwgOSwgMTMsIAotICAgIDIzNywgMTAsIDksIDEzLCAyMzcsIDksIDksIDEzLCAyMzcsIDgsIDksIDEzLCAyMzcsIDcsIDksIDEzLCAyMzcsIDYsIDksIAotICAgIDEzLCAyMzcsIDUsIDksIDEzLCAyMzcsIDQsIDksIDEzLCAyMzcsIDMsIDksIDEzLCAyMzcsIDIsIDksIDEzLCAyMzcsIDEsIAotICAgIDksIDEzLCAyMzcsIDAsIDksIDEzLCAyMzYsIDI1NSwgOSwgMTMsIDIzNiwgMjU0LCA5LCAxMywgMjM2LCAyNTMsIDksIDEzLCAKLSAgICAyMzYsIDI1MiwgOSwgMTMsIDIzNiwgMjUxLCA5LCAxMywgMjM2LCAyNTAsIDksIDEzLCAyMzYsIDI0OSwgOSwgMTMsIDIzNiwgCi0gICAgMjQ4LCA5LCAxMywgMjM2LCAyNDcsIDksIDEzLCAyMzYsIDI0NiwgOSwgMTMsIDIzNiwgMjQ1LCA5LCAxMywgMjM2LCAyNDQsIAotICAgIDksIDEzLCAyMzYsIDI0MywgOSwgMTMsIDIzNiwgMjQyLCA5LCAxMywgMjM2LCAyNDEsIDksIDEzLCAyMzYsIDI0MCwgOSwgCi0gICAgMTMsIDIzNiwgMjM5LCA5LCAxMywgMjM2LCAyMzgsIDksIDEzLCAyMzYsIDIzNywgOSwgMTMsIDIzNiwgMjM2LCA5LCAxMywgCi0gICAgMjM2LCAyMzUsIDksIDEzLCAyMzYsIDIzNCwgOSwgMTMsIDIzNiwgMjMzLCA5LCAxMywgMjM2LCAyMzIsIDksIDEzLCAyMzYsIAotICAgIDIzMSwgOSwgMTMsIDIzNiwgMjMwLCA5LCAxMywgMjM2LCAyMjksIDksIDEzLCAyMzYsIDIyOCwgOSwgMTMsIDIzNiwgMjI3LCAKLSAgICA5LCAxMywgMjM2LCAyMjYsIDksIDEzLCAyMzYsIDIyNSwgOSwgMTMsIDIzNiwgMjI0LCA5LCAxMywgMjM2LCAyMjMsIDksIAotICAgIDEzLCAyMzYsIDIyMiwgOSwgMTMsIDIzNiwgMjIxLCA5LCAxMywgMjM2LCAyMjAsIDksIDEzLCAyMzYsIDIxOSwgOSwgMTMsIAotICAgIDIzNiwgMjE4LCA5LCAxMywgMjM2LCAyMTcsIDksIDEzLCAyMzYsIDIxNiwgOSwgMTMsIDIzNiwgMjE1LCA5LCAxMywgMjM2LCAKLSAgICAyMTQsIDksIDEzLCAyMzYsIDIxMywgOSwgMTMsIDIzNiwgMjEyLCA5LCAxMywgMjM2LCAyMTEsIDksIDEzLCAyMzYsIDIxMCwgCi0gICAgOSwgMTMsIDIzNiwgMjA5LCA5LCAxMywgMjM2LCAyMDgsIDksIDEzLCAyMzYsIDIwNywgOSwgMTMsIDIzNiwgMjA2LCA5LCAKLSAgICAxMywgMjM2LCAyMDUsIDksIDEzLCAyMzYsIDIwNCwgOSwgMTMsIDIzNiwgMjAzLCA5LCAxMywgMjM2LCAyMDIsIDksIDEzLCAKLSAgICAyMzYsIDIwMSwgOSwgMTMsIDIzNiwgMjAwLCA5LCAxMywgMjM2LCAxOTksIDksIDEzLCAyMzYsIDE5OCwgOSwgMTMsIDIzNiwgCi0gICAgMTk3LCA5LCAxMywgMjM2LCAxOTYsIDksIDEzLCAyMzYsIDE5NSwgOSwgMTMsIDIzNiwgMTk0LCA5LCAxMywgMjM2LCAxOTMsIAotICAgIDksIDEzLCAyMzYsIDE5MiwgOSwgMTMsIDIzNiwgMTkxLCA5LCAxMywgMjM2LCAxOTAsIDksIDEzLCAyMzYsIDE4OSwgOSwgCi0gICAgMTMsIDIzNiwgMTg4LCA5LCAxMywgMjM2LCAxODcsIDksIDEzLCAyMzYsIDE4NiwgOSwgMTMsIDIzNiwgMTg1LCA5LCAxMywgCi0gICAgMjM2LCAxODQsIDksIDEzLCAyMzYsIDE4MywgOSwgMTMsIDIzNiwgMTgyLCA5LCAxMywgMjM2LCAxODEsIDksIDEzLCAyMzYsIAotICAgIDE4MCwgOSwgMTMsIDIzNiwgMTc5LCA5LCAxMywgMjM2LCAxNzgsIDksIDEzLCAyMzYsIDE3NywgOSwgMTMsIDIzNiwgMTc2LCAKLSAgICA5LCAxMywgMjM2LCAxNzUsIDksIDEzLCAyMzYsIDE3NCwgOSwgMTMsIDIzNiwgMTczLCA5LCAxMywgMjM2LCAxNzIsIDksIAotICAgIDEzLCAyMzYsIDE3MSwgOSwgMTMsIDIzNiwgMTcwLCA5LCAxMywgMjM2LCAxNjksIDksIDEzLCAyMzYsIDE2OCwgOSwgMTMsIAotICAgIDIzNiwgMTY3LCA5LCAxMywgMjM2LCAxNjYsIDksIDEzLCAyMzYsIDE2NSwgOSwgMTMsIDIzNiwgMTY0LCA5LCAxMywgMjM2LCAKLSAgICAxNjMsIDksIDEzLCAyMzYsIDE2MiwgOSwgMTMsIDIzNiwgMTYxLCA5LCAxMywgMjM2LCAxNjAsIDksIDEzLCAyMzYsIDE1OSwgCi0gICAgOSwgMTMsIDIzNiwgMTU4LCA5LCAxMywgMjM2LCAxNTcsIDksIDEzLCAyMzYsIDE1NiwgOSwgMTMsIDIzNiwgMTU1LCA5LCAKLSAgICAxMywgMjM2LCAxNTQsIDksIDEzLCAyMzYsIDE1MywgOSwgMTMsIDIzNiwgMTUyLCA5LCAxMywgMjM2LCAxNTEsIDksIDEzLCAKLSAgICAyMzYsIDE1MCwgOSwgMTMsIDIzNiwgMTQ5LCA5LCAxMywgMjM2LCAxNDgsIDksIDEzLCAyMzYsIDE0NywgOSwgMTMsIDIzNiwgCi0gICAgMTQ2LCA5LCAxMywgMjM2LCAxNDUsIDksIDEzLCAyMzYsIDE0NCwgOSwgMTMsIDIzNiwgMTQzLCA5LCAxMywgMjM2LCAxNDIsIAotICAgIDksIDEzLCAyMzYsIDE0MSwgOSwgMTMsIDIzNiwgMTQwLCA5LCAxMywgMjM2LCAxMzksIDksIDEzLCAyMzYsIDEzOCwgOSwgCi0gICAgMTMsIDIzNiwgMTM3LCA5LCAxMywgMjM2LCAxMzYsIDksIDEzLCAyMzYsIDEzNSwgOSwgMTMsIDIzNiwgMTM0LCA5LCAxMywgCi0gICAgMjM2LCAxMzMsIDksIDEzLCAyMzYsIDEzMiwgOSwgMTMsIDIzNiwgMTMxLCA5LCAxMywgMjM2LCAxMzAsIDksIDEzLCAyMzYsIAotICAgIDEyOSwgOSwgMTMsIDIzNiwgMTI4LCA5LCAxMywgMjM2LCAxMjcsIDksIDEzLCAyMzYsIDEyNiwgOSwgMTMsIDIzNiwgMTI1LCAKLSAgICA5LCAxMywgMjM2LCAxMjQsIDksIDEzLCAyMzYsIDEyMywgOSwgMTMsIDIzNiwgMTIyLCA5LCAxMywgMjM2LCAxMjEsIDksIAotICAgIDEzLCAyMzYsIDEyMCwgOSwgMTMsIDIzNiwgMTE5LCA5LCAxMywgMjM2LCAxMTgsIDksIDEzLCAyMzYsIDExNywgOSwgMTMsIAotICAgIDIzNiwgMTE2LCA5LCAxMywgMjM2LCAxMTUsIDksIDEzLCAyMzYsIDExNCwgOSwgMTMsIDIzNiwgMTEzLCA5LCAxMywgMjM2LCAKLSAgICAxMTIsIDksIDEzLCAyMzYsIDExMSwgOSwgMTMsIDIzNiwgMTEwLCA5LCAxMywgMjM2LCAxMDksIDksIDEzLCAyMzYsIDEwOCwgCi0gICAgOSwgMTMsIDIzNiwgMTA3LCA5LCAxMywgMjM2LCAxMDYsIDksIDEzLCAyMzYsIDEwNSwgOSwgMTMsIDIzNiwgMTA0LCA5LCAKLSAgICAxMywgMjM2LCAxMDMsIDksIDEzLCAyMzYsIDEwMiwgOSwgMTMsIDIzNiwgMTAxLCA5LCAxMywgMjM2LCAxMDAsIDksIDEzLCAKLSAgICAyMzYsIDk5LCA5LCAxMywgMjM2LCA5OCwgOSwgMTMsIDIzNiwgOTcsIDksIDEzLCAyMzYsIDk2LCA5LCAxMywgMjM2LCA5NSwgCi0gICAgOSwgMTMsIDIzNiwgOTQsIDksIDEzLCAyMzYsIDkzLCA5LCAxMywgMjM2LCA5MiwgOSwgMTMsIDIzNiwgOTEsIDksIDEzLCAKLSAgICAyMzYsIDkwLCA5LCAxMywgMjM2LCA4OSwgOSwgMTMsIDIzNiwgODgsIDksIDEzLCAyMzYsIDg3LCA5LCAxMywgMjM2LCA4NiwgCi0gICAgOSwgMTMsIDIzNiwgODUsIDksIDEzLCAyMzYsIDg0LCA5LCAxMywgMjM2LCA4MywgOSwgMTMsIDIzNiwgODIsIDksIDEzLCAKLSAgICAyMzYsIDgxLCA5LCAxMywgMjM2LCA4MCwgOSwgMTMsIDIzNiwgNzksIDksIDEzLCAyMzYsIDc4LCA5LCAxMywgMjM2LCA3NywgCi0gICAgOSwgMTMsIDIzNiwgNzYsIDksIDEzLCAyMzYsIDc1LCA5LCAxMywgMjM2LCA3NCwgOSwgMTMsIDIzNiwgNzMsIDksIDEzLCAKLSAgICAyMzYsIDcyLCA5LCAxMywgMjM2LCA3MSwgOSwgMTMsIDIzNiwgNzAsIDksIDEzLCAyMzYsIDY5LCA5LCAxMywgMjM2LCA2OCwgCi0gICAgOSwgMTMsIDIzNiwgNjcsIDksIDEzLCAyMzYsIDY2LCA5LCAxMywgMjM2LCA2NSwgOSwgMTMsIDIzNiwgNjQsIDksIDEzLCAKLSAgICAyMzYsIDYzLCA5LCAxMywgMjM2LCA2MiwgOSwgMTMsIDIzNiwgNjEsIDksIDEzLCAyMzYsIDYwLCA3LCAzLCAyNiwgMjQ0LCAKLSAgICA5NCwgNywgMywgMjYsIDI0NCwgOTAsIDcsIDMsIDI2LCAyNDQsIDQ1LCA3LCAzLCAyNiwgMjQ0LCA5MywgNywgMywgMjYsIAotICAgIDI0NCwgOTIsIDcsIDMsIDI2LCAxODQsIDIyMywgNCwgMjE4LCA5OSwgNywgMywgMjYsIDIxOSwgMTA3LCAxNDEsIDMsIDI2LCAKLSAgICAyMzEsIDEyMywgMjI4LCAxNTAsIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAyNDUsIDE2OSwgMTQxLCAzLCAyNiwgMjMxLCAxMjMsIAotICAgIDIzNSwgMjI0LCAxNDEsIDMsIDI2LCAyMTQsIDE1NywgMjI4LCAxNTAsIDE0MSwgMywgMjYsIDIzMSwgMTIzLCAyMTMsIDE0OCwgCi0gICAgOTMsIDEsIDIxMiwgMjI1LCAyLCAyNDEsIDE0NCwgOTMsIDIyNSwgMTQ1LCAyMzUsIDUzLCAyMTQsIDI0MywgOTMsIDI2LCAKLSAgICAyMTIsIDI1MywgMjEyLCAyMjUsIDIxMiwgMjI1LCAyMjYsIDExMiwgOTMsIDEsIDI1NCwgNDgsIDI1MywgNzgsIDkzLCAxLCAKLSAgICAyMTMsIDIzMiwgMjU0LCA3OCwgOTMsIDEsIDIxMywgMjMyLCAyNDgsIDEzNCwgOTMsIDEsIDIxMywgMjMyLCAyNDEsIDIyMiwgCi0gICAgOTMsIDEsIDIxMywgMjMyLCAyMzQsIDI1NCwgOTMsIDEsIDIxMywgMjMyLCAyMzMsIDExOCwgOTMsIDEsIDIxMywgMjMyLCAKLSAgICA0MCwgMjMxLCAxMjksIDkzLCAxLCAyMTMsIDIzMiwgMjIzLCAyMTksIDkzLCAxLCAyMTMsIDIzMiwgMjE3LCAyNDUsIDkzLCAKLSAgICAxLCAyNTQsIDQ4LCA5NCwgNTIsIDkzLCAxLCAyMjAsIDIwMSwgMiwgMjIwLCAyMDEsIDI0NywgNzQsIDkzLCAxLCAyMjAsIAotICAgIDIwMSwgMiwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDEsIDIyMCwgMjAxLCAyLCAyNDgsIDE1MSwgMjQsIDIyMCwgMjAxLCAKLSAgICAyNDcsIDc0LCA5MywgMSwgMjIwLCAyMDEsIDIsIDI0OCwgMTUxLCAyNCwgMjIwLCA4NSwgMjQ3LCA3NCwgOTMsIDEsIDEwNiwgCi0gICAgMiwgMjI2LCAxMTIsIDkzLCAxLCAxMDYsIDIsIDIyNCwgMjIwLCA5MywgMSwgMTA2LCAyLCAyMzEsIDIzNCwgOTMsIDEsIAotICAgIDI1MSwgMjA2LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDI0MiwgMTc4LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDI0OCwgMTM1LCAyLCAKLSAgICAyNDgsIDE1MCwgOTMsIDEsIDI0MSwgMjIzLCAyLCAyMzEsIDIzNCwgOTMsIDEsIDIxNCwgMjM3LCAyLCAyNDgsIDE1MCwgOTMsIAotICAgIDEsIDIxMiwgOTEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjE3LCAxODQsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjEyLCAyMjUsIAotICAgIDIsIDI0OCwgMTUwLCA5MywgMSwgNDAsIDIzNCwgMjU1LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIzNCwgMjU1LCAyLCAyNDgsIAotICAgIDE1MCwgOTMsIDEsIDIzMywgMTE5LCAyLCAyNDgsIDE1MCwgOTMsIDEsIDIzMSwgMTMwLCAyLCAyNDgsIDE1MCwgOTMsIDEsIAotICAgIDIyOCwgNTEsIDIsIDI0OCwgMTUwLCA5MywgMSwgMjIyLCAxNjUsIDIsIDI0OCwgMTUwLCA5MywgMSwgNDAsIDIyNiwgOTcsIAotICAgIDIsIDI0OCwgMTUwLCA5MywgMSwgMjI2LCA5NywgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTYsIDEzOCwgMiwgMjQ4LCAxNTAsIAotICAgIDkzLCAxLCAyMjQsIDE4NSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjMsIDIyMCwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMjAsIAotICAgIDIwMSwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTcsIDI0NiwgMiwgMjQ4LCAxNTAsIDkzLCAxLCAyMTQsIDIzNywgMiwgMjQxLCAKLSAgICA0NywgOTMsIDEsIDI1MSwgMjA2LCAyLCAyMjQsIDU5LCA5MywgMSwgMjM0LCAyNTUsIDIsIDIyNCwgNTksIDkzLCAxLCAyMjYsIAotICAgIDk3LCAyLCAyMjQsIDU5LCA5MywgMjYsIDEwNiwgMjMzLCAxMTgsIDEyLCAxLCAxMDYsIDIxNCwgMzEsIDQ4LCAxNywgMTIsIAotICAgIDEsIDEwNiwgMjE0LCAzMSwgNDAsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjQxLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTEsIDI0MSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyNDEsIDEzOCwgMTcsIDEyLCAxLCAyMjYsIDgxLCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMjYsIDgxLCA0MCwgMTcsIDEyLCAxLCAyMjYsIDgxLCA3MCwgMTcsIDEyLCAxLCAyMjYsIDgxLCAKLSAgICAxMzgsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjI5LCA0MCwgMTcsIDEyLCAxLCAyNTEsIAotICAgIDIyOSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyMjksIDEzOCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMjE2LCAxMDgsIDQwLCAxNywgMTIsIDEsIDIxNiwgMTA4LCA3MCwgMTcsIDEyLCAxLCAyMTYsIDEwOCwgMTM4LCAxNywgMTIsIAotICAgIDEsIDIxNywgMjE0LCA0OCwgMTcsIDEyLCAxLCAyMTcsIDIxNCwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTQsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIxNywgMjE0LCAxMzgsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDQ4LCAxNywgMTIsIDEsIDIxNiwgMTEwLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMTYsIDExMCwgNzAsIDE3LCAxMiwgMSwgMjE2LCAxMTAsIDEzOCwgMTcsIDEyLCAxLCAyMTQsIDIyNiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjE0LCAyMjYsIDQwLCAxNywgMTIsIDEsIDIxNCwgMjI2LCA3MCwgMTcsIDEyLCAxLCAyMTQsIAotICAgIDIyNiwgMTM4LCAxNywgMTIsIDEsIDIyNiwgNzksIDQ4LCAxNywgMTIsIDEsIDIyNiwgNzksIDQwLCAxNywgMTIsIDEsIDIyNiwgCi0gICAgNzksIDcwLCAxNywgMTIsIDEsIDIyNiwgNzksIDEzOCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgNDgsIDE3LCAxMiwgMSwgMjQ1LCAKLSAgICAyNTUsIDQwLCAxNywgMTIsIDEsIDI0NSwgMjU1LCA3MCwgMTcsIDEyLCAxLCAyNDUsIDI1NSwgMTM4LCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTUsIDQ4LCAxNywgMTIsIDEsIDIyOCwgMTUsIDQwLCAxNywgMTIsIDEsIDIyOCwgMTUsIDcwLCAxNywgMTIsIDEsIAotICAgIDIyOCwgMTUsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgNDgsIDE3LCAxMiwgMSwgMjE3LCAyMzQsIDQwLCAxNywgMTIsIAotICAgIDEsIDIxNywgMjM0LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDIzNCwgMTM4LCAxNywgMTIsIDEsIDIxNywgMjMyLCA0OCwgMTcsIAotICAgIDEyLCAxLCAyMTcsIDIzMiwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMzIsIDcwLCAxNywgMTIsIDEsIDIxNywgMjMyLCAxMzgsIAotICAgIDE3LCAxMiwgMSwgMjQ4LCA4NCwgNDgsIDE3LCAxMiwgMSwgMjQ4LCA4NCwgNDAsIDE3LCAxMiwgMSwgMjQ4LCAxNDcsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDI0OCwgMTQ3LCA0MCwgMTcsIDEyLCAxLCAyNDYsIDI2LCA0OCwgMTcsIDEyLCAxLCAyNDYsIDI2LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNDgsIDgyLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDgyLCA0MCwgMTcsIDEyLCAxLCAyMzUsIDEyMiwgNDgsIAotICAgIDE3LCAxMiwgMSwgMjM1LCAxMjIsIDQwLCAxNywgMTIsIDEsIDIyMywgNzgsIDQ4LCAxNywgMTIsIDEsIDIyMywgNzgsIDQwLCAKLSAgICAxNywgMTIsIDEsIDIzNCwgMTgxLCA0OCwgMTcsIDEyLCAxLCAyMzQsIDE4MSwgNDAsIDE3LCAxMiwgMSwgMjM0LCAxODEsIAotICAgIDcwLCAxNywgMTIsIDEsIDIzNCwgMTgxLCAxMzgsIDE3LCAxMiwgMSwgMjQzLCA5OCwgNDgsIDE3LCAxMiwgMSwgMjQzLCA5OCwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjQzLCA5OCwgNzAsIDE3LCAxMiwgMSwgMjQzLCA5OCwgMTM4LCAxNywgMTIsIDEsIDI0MiwgODMsIAotICAgIDQ4LCAxNywgMTIsIDEsIDI0MiwgODMsIDQwLCAxNywgMTIsIDEsIDI0MiwgODMsIDcwLCAxNywgMTIsIDEsIDI0MiwgODMsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyMjksIDg5LCA0OCwgMTcsIDEyLCAxLCAyMjksIDg5LCA0MCwgMTcsIDEyLCAxLCAyMjksIDg5LCAKLSAgICA3MCwgMTcsIDEyLCAxLCAyMjksIDg5LCAxMzgsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDI0MiwgMTk1LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjgsIDE3NCwgMjQyLCAxOTUsIDQwLCAxNywgMTIsIDEsIDIyMywgMTE2LCA0OCwgMTcsIDEyLCAxLCAyMjMsIDExNiwgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjIzLCAxMTYsIDcwLCAxNywgMTIsIDEsIDIyMywgMTE2LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDIsIDczLCA3OCwgNDgsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDIsIDczLCA3OCwgNDAsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0MiwgMTQ4LCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgMjQyLCAxNDgsIDQwLCAxNywgMTIsIDEsIDI0MSwgCi0gICAgMjAzLCAyNDIsIDE0OCwgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0MiwgMTQ4LCAxMzgsIDE3LCAxMiwgMSwgMjQxLCAKLSAgICAyMDMsIDI0NywgOTYsIDQ4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCAyNDcsIDk2LCA0MCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgCi0gICAgMjQ3LCA5NiwgNzAsIDE3LCAxMiwgMSwgMjQxLCAyMDMsIDI0NywgOTYsIDEzOCwgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgCi0gICAgNDgsIDE3LCAxMiwgMSwgNzMsIDI1MiwgNTMsIDQwLCAxNywgMTIsIDEsIDczLCAyNTIsIDUzLCAyLCAxOTIsIDc4LCA0OCwgCi0gICAgMTcsIDEyLCAxLCA3MywgMjUyLCA1MywgMiwgMTkyLCA3OCwgNDAsIDE3LCAxMiwgMTYsIDYyLCA0OSwgMTIsIDE2LCA2MiwgCi0gICAgNTUsIDEyLCAxNiwgMTE3LCAxNzYsIDQ5LCAxMiwgMTYsIDExNywgMTc2LCA1NSwgMTIsIDE2LCAxMzMsIDE3NiwgNDksIDEyLCAKLSAgICAxNiwgMTMzLCAxNzYsIDU1LCAxMiwgMTYsIDEzMywgMTc2LCAyMjUsIDE0MSwgMjQ2LCA1OCwgNDksIDEyLCAxNiwgMTMzLCAKLSAgICAxNzYsIDIyNSwgMTQxLCAyNDYsIDU4LCA1NSwgMTIsIDE2LCAyNDMsIDIzNywgMTc2LCA0OSwgMTIsIDE2LCAyNDMsIDIzNywgCi0gICAgMTc2LCA1NSwgMTIsIDE2LCA1MSwgNzEsIDI1MiwgNjAsIDU1LCAxMiwgMTYsIDExNywgMTc2LCAyMTQsIDE2NiwgNDksIDEyLCAKLSAgICAxNiwgMTE3LCAxNzYsIDIxNCwgMTY2LCA1NSwgMTIsIDE2LCAyMjMsIDEzMCwgMTIsIDE2LCAzLCAyMTgsIDMwLCA0OSwgMTIsIAotICAgIDE2LCAzLCAyMTgsIDMwLCA1NSwgMTIsIDEsIDIyOSwgMTYyLCA0OCwgMTcsIDEyLCAxLCAyMjksIDE2MiwgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjI5LCAxNjIsIDcwLCAxNywgMTIsIDEsIDIyOSwgMTYyLCAxMzgsIDE3LCAxMiwgMSwgMTExLCA0OCwgMTcsIDEyLCAxLCAKLSAgICAxMTEsIDQwLCAxNywgMTIsIDEsIDIyNywgMTAwLCA0OCwgMTcsIDEyLCAxLCAyMjcsIDEwMCwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjEyLCAyMDQsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMjA0LCA0MCwgMTcsIDEyLCAxLCAxMTEsIDIsIDE5MiwgNzgsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIxNCwgMjMzLCA0OCwgMTcsIDEyLCAxLCAyMTQsIDIzMywgNDAsIDE3LCAxMiwgMSwgMjM0LCA4MiwgCi0gICAgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDEsIDIzNCwgODIsIDIyNywgMTAwLCA0MCwgMTcsIDEyLCAxLCAyMzQsIDgyLCAyMTIsIAotICAgIDIwNCwgNDgsIDE3LCAxMiwgMSwgMjM0LCA4MiwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDEsIDE5MSwgNDgsIDE3LCAxMiwgMSwgCi0gICAgMTkxLCA0MCwgMTcsIDEyLCAxLCAxOTEsIDcwLCAxNywgMTIsIDEsIDE5MSwgMTM4LCAxNywgMTIsIDEsIDIxNSwgMTc3LCAKLSAgICAyMzQsIDE5MiwgMjM0LCA4MiwgMTA2LCAyMTAsIDcwLCAxNywgMTIsIDEsIDIxNSwgMTc3LCAyMzQsIDE5MiwgMjM0LCA4MiwgCi0gICAgMTA2LCAyMTAsIDEzOCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAKLSAgICAxOTIsIDc4LCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjU0LCAxNDksIDQ4LCAxNywgMTIsIAotICAgIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjU0LCAxNDksIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjE0LCAKLSAgICAxNSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAyMTQsIDE1LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDExMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxMTEsIDQwLCAxNywgMTIsIDI2LCAKLSAgICA3MywgMiwgMTkyLCA3OCwgMiwgMjI3LCAxMDAsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjI3LCAxMDAsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMjEyLCAyMDQsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCAKLSAgICA3OCwgMiwgMjEyLCAyMDQsIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTkxLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgNzMsIDIsIDE5MiwgNzgsIDIsIDE5MSwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxOTEsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMTUsIDE3NywgMjM0LCA4MiwgNzMsIDIsIDE5MiwgNzgsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjE1LCAxNzcsIDIzNCwgODIsIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIxNSwgMTc3LCAKLSAgICAyMzQsIDgyLCA3MywgMiwgMTkyLCA3OCwgMiwgMTA2LCAyMTAsIDcwLCAxNywgMTIsIDEsIDI0NCwgMTM2LCA3MywgNDgsIAotICAgIDE3LCAxMiwgMSwgMjQ0LCAxMzYsIDczLCA0MCwgMTcsIDEyLCAxLCAyNDQsIDEzNiwgNzMsIDcwLCAxNywgMTIsIDEsIDI0NCwgCi0gICAgMTM2LCA3MywgMTM4LCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIAotICAgIDE5MiwgNzgsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAxOTIsIDc4LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCA3MywgNDgsIAotICAgIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMTIxLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDYzLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDczLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNjMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgNzMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDE0NiwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMjE3LCAxNDYsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgCi0gICAgMTQ1LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAxNDUsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAxMjEsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIzNCwgMTM2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIAotICAgIDg2LCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIAotICAgIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxNDUsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAKLSAgICA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTIxLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyMTIsIDEwNSwgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAKLSAgICAyNTQsIDEwNCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAKLSAgICAyMjEsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDQsIDExMiwgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIAotICAgIDIzNCwgMTM2LCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIAotICAgIDEwNiwgMjEwLCA0OCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIAotICAgIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCAxMDYsIAotICAgIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEyMSwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDIxMCwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDQ4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMjEwLCA0OCwgCi0gICAgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDYzLCAyLCAxMjEsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgNjMsIAotICAgIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCA2MywgMiwgNzMsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDIyOCwgMTc0LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIAotICAgIDI0MSwgMjAzLCAyLCAxNDUsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIAotICAgIDIwMywgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNzMsIDQ4LCAxNywgMTIsIDI2LCA3MywgMiwgCi0gICAgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCA2MywgNDgsIDE3LCAxMiwgMjYsIDczLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIxNywgMTU2LCAyLCAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgMjIzLCAKLSAgICAyNDYsIDIsIDIxOCwgMjIzLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAxMDYsIDIxMCwgMiwgMjE4LCAyMjMsIDEwNiwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgMTI4LCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMDksIAotICAgIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDQsIDEzNCwgNDgsIDE3LCAxMiwgMjYsIDIyMSwgMTYsIDIsIDI0OCwgCi0gICAgMTMwLCA0OCwgMTcsIDEyLCAyNiwgMjIxLCAxNiwgMiwgMjM0LCAyMTEsIDQ4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAKLSAgICAyMTgsIDIyMywgMTA2LCA0OCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjUxLCAyMzEsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDczLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIxMiwgMTAyLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDIyOCwgMTc0LCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIyMywgMjQ2LCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIxMiwgMTAyLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDIyOCwgMTc0LCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDczLCA0MCwgCi0gICAgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAxMDYsIDIxMCwgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA2MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDYzLCAyLCAxMDYsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgCi0gICAgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjEyLCAxMDIsIDQwLCAxNywgMTIsIDI2LCAyMjgsIAotICAgIDE3NCwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDI2LCAyMjgsIAotICAgIDE3NCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAxMDYsIAotICAgIDIxMCwgMiwgMjE4LCAyMjMsIDEwNiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDczLCAyLCAyMTIsIDEwMiwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAyMjgsIAotICAgIDE3NCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDczLCAyLCAxOTIsIDc4LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTkyLCA3OCwgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgCi0gICAgNzgsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjUxLCAyMzEsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI1MSwgMjMxLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyNTEsIAotICAgIDIzMSwgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNTEsIAotICAgIDIzMSwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjE3LCAKLSAgICAyMTYsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMTQ2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCA2MywgNzAsIAotICAgIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgCi0gICAgMTM2LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMzQsIAotICAgIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDEyMSwgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTIxLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDYzLCA3MCwgCi0gICAgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjEyLCAxMDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIAotICAgIDI0MiwgMjIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNDQsIAotICAgIDExMiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAKLSAgICAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDI0NCwgMTEyLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAKLSAgICAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMjQsIDIyNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgCi0gICAgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzQsIAotICAgIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgNzAsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAKLSAgICA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDI2LCAKLSAgICA2MywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAyNDEsIDIwMywgNzAsIDE3LCAxMiwgMjYsIDI0MSwgMjAzLCAyLCAKLSAgICAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgMjE4LCAKLSAgICAyMjMsIDEwNiwgNzAsIDE3LCAxMiwgMjYsIDczLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCA3MywgMiwgMTIxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIAotICAgIDIsIDI0MSwgMjAzLCA3MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDE5MiwgNzgsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAKLSAgICAyLCAxOTIsIDc4LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjUxLCAyMzEsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMTcsIDIxNiwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIDEyLCAyNiwgMjE3LCAxNDYsIDIsIDYzLCAxMzgsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMTQ2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCA2MywgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjIsIDg2LCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDEzOCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMjYsIDIzNCwgMjU1LCAyLCAyMzMsIDEyNywgMTM4LCAKLSAgICAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAxMzgsIDE3LCAKLSAgICAxMiwgMjYsIDIyOCwgMTc0LCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMjQxLCAyMDMsIDEzOCwgMTcsIAotICAgIDEyLCAyNiwgNzMsIDIsIDYzLCAxMzgsIDE3LCAxMiwgMjYsIDczLCAyLCAyNDEsIDIwMywgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjEsIDE2LCAyLCAyNDQsIDEzNCwgMTM4LCAxNywgMTIsIDI2LCAyMjEsIDE2LCAyLCAyNDgsIDEzMCwgMTM4LCAxNywgMTIsIAotICAgIDI2LCAyMjEsIDE2LCAyLCAyMzQsIDIxMSwgMTM4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIxOCwgMzAsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDEwNiwgMjEwLCA0OCwgMTcsIAotICAgIDEyLCAyNiwgMjQyLCAyMjEsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgCi0gICAgMTIsIDI2LCAyMjIsIDg2LCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyMCwgMjQwLCAyLCA3MywgNDgsIDE3LCAxMiwgMjYsIDEyMSwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAxMjEsIDIsIDczLCA0OCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDgsIDE3LCAxMiwgMjYsIDE0NSwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMzQsIDEzNiwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE5NiwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgCi0gICAgNzMsIDQ4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTQ1LCA0OCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDEyMSwgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCA2MywgCi0gICAgNDgsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAyMjMsIDI0NiwgNDgsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDIyMywgCi0gICAgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIAotICAgIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAKLSAgICAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCAxMjEsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDE0NSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCAxOTYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAxOTYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjQ4LCAxNjAsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDE0NSwgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMjM0LCAxMzYsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMjIzLCAyNDYsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIAotICAgIDIyMiwgMTk2LCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMjYsIDI0OCwgMTYwLCAyLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyMCwgMjQwLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgCi0gICAgMjIyLCA4NiwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIAotICAgIDI2LCAyMTgsIDMwLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDE0NSwgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMjIsIDg2LCAyLCAxMjEsIDEzOCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDEzOCwgMTcsIDEyLCAyNiwgCi0gICAgMjIwLCAyNDAsIDIsIDE0NSwgMTM4LCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAxMzgsIDE3LCAxMiwgMjYsIAotICAgIDIyMCwgMjQwLCAyLCAyMzQsIDEzNiwgMTM4LCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMTM4LCAxNywgMTIsIDI2LCAKLSAgICAyMTIsIDEwNSwgMiwgNjMsIDEzOCwgMTcsIDEyLCAyNiwgMTA2LCAyLCAyNDQsIDEzMiwgNDAsIDE3LCAxMiwgMjYsIDEwNiwgCi0gICAgMiwgMjQ0LCAxMzIsIDQ4LCAxNywgMjI3LCAxMywgNDIsIDIyNiwgMTMxLCAyMjcsIDEzLCA0NiwgMjI2LCAxMzEsIDEyLCAKLSAgICAyNiwgMjE3LCAyMTYsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCAyLCAxNDUsIAotICAgIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTIxLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgCi0gICAgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAKLSAgICAyMTcsIDIxNiwgMiwgNjMsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIxNywgMjE2LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIAotICAgIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEyMSwgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDEyMSwgMiwgNjMsIDIsIDczLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDg2LCAyLCAxMjEsIAotICAgIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgCi0gICAgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMjIsIDg2LCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgNjMsIDIsIDE0NSwgNzAsIAotICAgIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMiwgODYsIDIsIDYzLCAyLCA2MywgCi0gICAgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAxMjEsIDIsIDEyMSwgNDAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCAKLSAgICAxMjEsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDIyMiwgMTk2LCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIAotICAgIDI0MCwgMiwgMTIxLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIyMCwgMjQwLCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjIwLCAyNDAsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDIzNCwgCi0gICAgMTM2LCA0MCwgMTcsIDEyLCAyNiwgMjIwLCAyNDAsIDIsIDYzLCAyLCAyMzQsIDEzNiwgNzAsIDE3LCAxMiwgMjYsIDIyMCwgCi0gICAgMjQwLCAyLCA2MywgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjQ4LCAxNjAsIDIsIDEyMSwgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDgsIDE2MCwgMiwgMjM0LCAxMzYsIAotICAgIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQ4LCAxNjAsIDIsIDIzNCwgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIxOCwgCi0gICAgMzAsIDIsIDYzLCAyLCAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMTgsIDMwLCAyLCA2MywgMiwgMTIxLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjE4LCAzMCwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIAotICAgIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgMiwgNjMsIDQwLCAxNywgMTIsIDI2LCAyNTQsIDEwNCwgMiwgNjMsIDIsIDYzLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDYzLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAyLCA2MywgCi0gICAgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAyNDIsIDIyMSwgMiwgNjMsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQyLCAKLSAgICAyMjEsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDI0MiwgMjIxLCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgCi0gICAgMTIsIDI2LCAyNDQsIDExMiwgMiwgMjM0LCAxMzYsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjQ0LCAxMTIsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDIyNCwgMjI2LCAyLCA2MywgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAKLSAgICAyMjYsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMjEsIDIsIDYzLCA0MCwgMTcsIDEyLCAKLSAgICAyNiwgMjMzLCAxMjcsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCAxMDYsIAotICAgIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAKLSAgICAyLCAxNDUsIDIsIDE0NSwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAyMzQsIDEzNiwgMiwgNjMsIDQwLCAxNywgMTIsIAotICAgIDI2LCAyMzMsIDEyNywgMiwgMjM0LCAxMzYsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDYzLCAyLCAKLSAgICAxMjEsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIDEyMSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIAotICAgIDIsIDE0NSwgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxMjEsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDEyMSwgMiwgCi0gICAgNzMsIDQwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAxMjEsIDcwLCAxNywgMTIsIDI2LCA2MywgMiwgMTQ1LCAyLCAKLSAgICA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAyMzQsIDEzNiwgMiwgMTQ1LCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgCi0gICAgMTM2LCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDYzLCAyLCAxNDUsIDIsIDIzNCwgMTM2LCA3MCwgMTcsIDEyLCAyNiwgMjQxLCAKLSAgICAyMDMsIDIsIDYzLCAyLCAxNDUsIDcwLCAxNywgMTIsIDI2LCAyNDEsIDIwMywgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAKLSAgICAyNiwgMjI4LCAxNzQsIDIsIDEyMSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTIxLCAyLCAxMDYsIAotICAgIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIAotICAgIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIyOCwgMTc0LCAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjgsIDE3NCwgMiwgNjMsIDIsIDEwNiwgMjEwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDYzLCAyLCA2MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNjMsIDcwLCAKLSAgICAxNywgMTIsIDI2LCAyNTEsIDIzMSwgMiwgMjM0LCAxMzYsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIAotICAgIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMTQ1LCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDIxNywgMjE2LCAyLCAyMzQsIDEzNiwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMTcsIDIxNiwgMiwgMjM0LCAxMzYsIAotICAgIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjE3LCAyMTYsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDIxNywgCi0gICAgMjE2LCAyLCA2MywgMiwgMTA2LCAyMTAsIDQwLCAxNywgMTIsIDI2LCAxNDUsIDIsIDYzLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDE0NSwgMiwgMTIxLCAyLCAxMDYsIDIxMCwgNDAsIDE3LCAxMiwgMjYsIDE0NSwgMiwgNjMsIDIsIDEwNiwgMjEwLCAKLSAgICA0MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDIsIDEwNiwgMjEwLCA0MCwgMTcsIDEyLCAyNiwgMjIyLCAKLSAgICAxOTYsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjAsIDI0MCwgMiwgMTIxLCAyLCA3MywgNDAsIDE3LCAxMiwgCi0gICAgMjYsIDI0OCwgMTYwLCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDE0NSwgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNzMsIDIsIDEyMSwgMiwgNzMsIAotICAgIDQwLCAxNywgMTIsIDI2LCA3MywgMiwgMTQ1LCAyLCA3MywgNDAsIDE3LCAxMiwgMjYsIDczLCAyLCA2MywgMiwgNzMsIDQwLCAKLSAgICAxNywgMTIsIDI2LCA2MywgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCA3MywgNDAsIAotICAgIDE3LCAxMiwgMjYsIDIyOCwgMTc0LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI0LCAyMjYsIDIsIDYzLCAyLCAKLSAgICAxMjEsIDcwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTIxLCAyLCA2MywgNzAsIDE3LCAxMiwgMjYsIDI1NCwgMTA0LCAKLSAgICAyLCA2MywgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMzQsIDI1NSwgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgCi0gICAgMjI4LCAxNzQsIDIsIDE0NSwgMiwgMTIxLCA3MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDIzNCwgMTM2LCAyLCA3MywgNDAsIDE3LCAKLSAgICAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjM0LCAyNTUsIDIsIDYzLCAyLCA2MywgCi0gICAgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxNDUsIDIsIDYzLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIAotICAgIDE0NSwgMiwgMTIxLCA0MCwgMTcsIDEyLCAyNiwgMTQ1LCAyLCAxMjEsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMTIxLCAyLCAKLSAgICAxNDUsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgNjMsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyNDQsIDExMiwgCi0gICAgMiwgNjMsIDIsIDczLCA0MCwgMTcsIDEyLCAyNiwgMjUxLCAyMzEsIDIsIDEyMSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAKLSAgICAyMzQsIDI1NSwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjU0LCAxMDQsIDIsIDE0NSwgMiwgNjMsIDcwLCAxNywgCi0gICAgMTIsIDI2LCAyMjIsIDE5NiwgMiwgNjMsIDIsIDYzLCA3MCwgMTcsIDEyLCAyNiwgMjIyLCA4NiwgMiwgMjM0LCAxMzYsIDIsIAotICAgIDczLCA0MCwgMTcsIDEyLCAyNiwgMjI4LCAxNzQsIDIsIDE0NSwgMiwgNzMsIDQwLCAxNywgMTIsIDI2LCAyMjIsIDE3NSwgCi0gICAgMjE1LCAxMDIsIDI1MywgMTUzLCAyMzQsIDEzLCAyMTksIDcwLCA1LCA0OCwgMTcsIDEyLCAyNiwgMjI0LCAyMjIsIDIxNSwgCi0gICAgMTAyLCAyNTMsIDE1MywgMjM0LCAxMywgMjE5LCA3MCwgNSwgNDgsIDE3LCAxMiwgMjYsIDI1NCwgNjIsIDQ4LCAxNywgMTIsIAotICAgIDI2LCAyNTQsIDkxLCA0OCwgMTcsIDEyLCAyNiwgMjMwLCAyMjMsIDQ4LCAxNywgMTIsIDI2LCAyMjIsIDE3NiwgNDgsIDE3LCAKLSAgICAxMiwgMjYsIDIyNCwgMzUsIDQ4LCAxNywgMTIsIDI2LCAyNTQsIDgwLCA0OCwgMTcsIDEyLCAyNiwgMjE0LCAzMywgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIyMiwgMTc1LCA0OCwgMTcsIDEyLCAyNiwgMjIyLCAxNzQsIDI1NCwgODAsIDIxNCwgMzIsIDEyLCAyNiwgCi0gICAgMjM1LCAxMzQsIDIyMywgMTg3LCA1MiwgMTIsIDI2LCAyNTEsIDE1MywgMjUzLCAyMDksIDI1MywgMjEwLCA0MywgMjIyLCAKLSAgICA3NiwgNDMsIDIyMSwgMjIxLCA0MywgMjIxLCAxNTMsIDQzLCAyMjEsIDE0MiwgNDMsIDIyMSwgMTMxLCA0MywgMjIxLCAxMjAsIAotICAgIDQzLCAyMjEsIDEwOSwgNDMsIDIyMSwgOTgsIDQzLCAyMjEsIDg3LCA0MywgMjIyLCA3NSwgNDMsIDIyMiwgNjQsIDQzLCAKLSAgICAyMjIsIDUzLCA0MywgMjIyLCA0MiwgNDMsIDIyMiwgMzEsIDQzLCAyMjIsIDIwLCA0MywgMjIyLCA5LCAyMjUsIDc0LCAyNDMsIAotICAgIDI0NSwgMzEsIDcxLCAyNDksIDE1NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTA1LCAyNDksIDE1NywgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgMTA1LCAyNDMsIDIwMCwgMjE5LCA2OSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjQ5LCAKLSAgICAxNjQsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDIyMSwgNzAsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0NCwgCi0gICAgMjU0LCA3NywgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMjI0LCAxNTgsIDc3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIAotICAgIDcxLCA0MiwgNjcsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDY3LCAyMzMsIDQ0LCAKLSAgICAyNTEsIDgzLCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxOTksIDI0NSwgMTIwLCAzNywgMjYsIDQyLCAyNDIsIDksIAotICAgIDM3LCAyNiwgNDYsIDI0MiwgOSwgMzcsIDUxLCAyMTcsIDQzLCA0MiwgMjQyLCA5LCAzNywgNTEsIDIxNywgNDMsIDQ2LCAKLSAgICAyNDIsIDksIDM3LCAyMzIsIDM4LCA0MiwgMjQyLCA5LCAzNywgMjMyLCAzOCwgNDYsIDI0MiwgOSwgMzcsIDI0OSwgMTM3LCAKLSAgICAyMzIsIDM3LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCAxMTcsIDYyLCAyMzMsIDgwLCAyMjUsIDc0LCAyNDMsIDI0NSwgCi0gICAgMzEsIDcxLCAyNDUsIDExOCwgMjQ4LCAxMDEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDI0NSwgMTA5LCAyNDgsIAotICAgIDEwMSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgMTE1LCAyMzIsIDI0MiwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgCi0gICAgMjE0LCAxNiwgMTE1LCAyMzIsIDI0MiwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDIyNiwgMTMxLCAyMjUsIDc0LCAKLSAgICAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgMjI2LCAxMzEsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAyNDksIDQwLCAKLSAgICAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCAyNDksIDQwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgCi0gICAgNzEsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDIxNiwgMjE5LCAKLSAgICAyMjAsIDIzMywgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgODMsIDIzMywgNDQsIDEyNSwgMjI1LCA3NCwgCi0gICAgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIDgzLCAyMzMsIDQ0LCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCAKLSAgICA1MSwgMjU0LCAxOSwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNTEsIDI1NCwgMTksIDEyNSwgMjI1LCAKLSAgICA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDYsIAotICAgIDI1NCwgMTksIDEyNSwgMjI1LCA3NCwgMjQzLCAyNDUsIDMxLCA3MSwgNDIsIDI0OSwgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgCi0gICAgMjQ1LCAzMSwgNzEsIDQ2LCAyNDksIDEwMCwgMTI1LCAyMjUsIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0MiwgNjcsIDI0OSwgCi0gICAgMTAwLCAxMjUsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQ2LCA2NywgMjQ5LCAxMDAsIDEyNSwgMjIxLCA1MiwgMjQ3LCAKLSAgICA3NCwgNjcsIDIyMSwgNTIsIDI0NywgNzQsIDIyNSwgNzQsIDI0MywgMjQ1LCAzMSwgNzEsIDQyLCA0MSwgMTI1LCAyMjUsIAotICAgIDc0LCAyNDMsIDI0NSwgMzEsIDcxLCA0NiwgNDEsIDEyNSwgMjQ4LCAxMDAsIDIyNiwgMjQzLCAyNTAsIDEwNiwgMjI2LCAKLSAgICAyNDMsIDIxNCwgMTYsIDIyNiwgMjQzLCA1MSwgMjE0LCAxNiwgMjI2LCAyNDMsIDI0OCwgMTAwLCAxMTUsIDIzMiwgMjQyLCAKLSAgICAyNTAsIDEwNiwgMTE1LCAyMzIsIDI0MiwgMjE0LCAxNiwgMTE1LCAyMzIsIDI0MiwgMywgMjQ5LCAxNTcsIDMsIDEwNSwgCi0gICAgMjQ5LCAxNTcsIDMsIDI0MywgMjAwLCAyMTksIDY5LCAzLCAyMjEsIDcwLCAzLCAyNDksIDE2NCwgMywgMjI0LCAxNTgsIDc3LCAKLSAgICAzLCAyNDQsIDI1NCwgNzcsIDMsIDI0NSwgMTE4LCAyNDgsIDEwMSwgMywgNDIsIDIyNiwgMTMxLCAzLCA0NiwgMjI2LCAxMzEsIAotICAgIDMsIDQyLCAyNDksIDQwLCAxMjUsIDMsIDQ2LCAyNDksIDQwLCAxMjUsIDMsIDQyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDEyNSwgCi0gICAgMywgNDYsIDIxNiwgMjE5LCAyMjAsIDIzMywgMTI1LCAzLCA1MCwgNTIsIDMsIDI1NCwgMzUsIDMsIDI1MywgMTMyLCAzLCAKLSAgICA5NCwgNTIsIDMsIDI0MCwgMTU5LCAzLCAyMzMsIDM5LCA1MiwgMywgMjQyLCAxMDcsIDUyLCAzLCAyNDUsIDYxLCA1MiwgMywgCi0gICAgMjIzLCAyMDMsIDIxOSwgMjMxLCAzLCAyNDcsIDg2LCA1MiwgMywgMjI2LCA1NywgNTIsIDMsIDI0OSwgMTU2LCAyNTMsIAotICAgIDEyMiwgMTIsIDI0NCwgMTMyLCA0OCwgMTcsIDEyLCAyMTcsIDI1MSwgMiwgMjQ0LCAxMzIsIDQ5LCAxMiwgMjQ4LCAxMjgsIAotICAgIDQ4LCAxNywgMTIsIDIxOCwgMjgsIDI0MywgMjI3LCAxMiwgMjM0LCAyMDksIDQ4LCAxNywgMTIsIDI0NCwgMTM0LCA0OCwgCi0gICAgMTcsIDEyLCAyNDQsIDEzNCwgMTM4LCAxNywgMTIsIDI0OCwgMTMwLCA0OCwgMTcsIDEyLCAyNDgsIDEzMCwgMTM4LCAxNywgCi0gICAgMTIsIDIzNCwgMjExLCA0OCwgMTcsIDEyLCAyMzQsIDIxMSwgMTM4LCAxNywgMTIsIDIyMSwgMTYsIDQ4LCAxNywgMTIsIAotICAgIDIyMSwgMTYsIDEzOCwgMTcsIDEyLCAyMTgsIDI0NywgNDgsIDE3LCAxMiwgMjE4LCAyNDcsIDEzOCwgMTcsIDEyLCAxLCAKLSAgICAxOTIsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgNzgsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMjMyLCAzMywgCi0gICAgNzgsIDQwLCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCA3OCwgNDgsIDE3LCAxMiwgMSwgMTA2LCAyLCAxOTIsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMTQsIDE1LCAyLCAxOTIsIDc4LCA0OCwgMTcsIDEyLCAxLCAyMTQsIDE1LCAyLCAxOTIsIDc4LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAxMDYsIDIsIDE5MiwgMjUxLCAyMjAsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMiwgMTkyLCAyNTEsIDIyMCwgCi0gICAgNDAsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDQ4LCAxNywgMTIsIDEsIDczLCAyLCAxOTIsIDc4LCA0MCwgMTcsIDEyLCAKLSAgICAxLCA3MywgMiwgMTkyLCA3OCwgNzAsIDE3LCAxMiwgMSwgNzMsIDIsIDE5MiwgNzgsIDEzOCwgMTcsIDEyLCAxLCAxMDYsIAotICAgIDQ4LCAxNywgMTIsIDEsIDEwNiwgNDAsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDQ4LCAxNywgMTIsIDEsIDI1MSwgMjMxLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTEsIDIzMSwgNzAsIDE3LCAxMiwgMSwgMjUxLCAyMzEsIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgCi0gICAgMjMxLCAyMjgsIDQ4LCAxNywgMTIsIDEsIDIxNywgMjE2LCAyMzEsIDIyOCwgNDAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDIxNywgMjE2LCA0MCwgMTcsIDEyLCAxLCAyMTcsIDIxNiwgNzAsIDE3LCAxMiwgMSwgMjE3LCAyMTYsIAotICAgIDEzOCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgNDgsIDE3LCAxMiwgMSwgMjE3LCAxNDYsIDQwLCAxNywgMTIsIDEsIDIxNywgCi0gICAgMTQ2LCA3MCwgMTcsIDEyLCAxLCAyMTcsIDE0NiwgMTM4LCAxNywgMTIsIDEsIDE0NSwgNDgsIDE3LCAxMiwgMSwgMTQ1LCAKLSAgICA0MCwgMTcsIDEyLCAxLCAxNDUsIDcwLCAxNywgMTIsIDEsIDE0NSwgMTM4LCAxNywgMTIsIDEsIDEyMSwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMTIxLCA0MCwgMTcsIDEyLCAxLCAxMjEsIDcwLCAxNywgMTIsIDEsIDEyMSwgMTM4LCAxNywgMTIsIDEsIDIzNCwgMTM2LCAKLSAgICA0OCwgMTcsIDEyLCAxLCAyMzQsIDEzNiwgNDAsIDE3LCAxMiwgMSwgMjM0LCAxMzYsIDcwLCAxNywgMTIsIDEsIDIzNCwgCi0gICAgMTM2LCAxMzgsIDE3LCAxMiwgMSwgMjQ4LCAxNDEsIDQ4LCAxNywgMTIsIDEsIDI0OCwgMTQxLCA0MCwgMTcsIDEyLCAxLCAKLSAgICAyMTcsIDE1NiwgNDgsIDE3LCAxMiwgMSwgMjE3LCAxNTYsIDQwLCAxNywgMTIsIDEsIDIyMywgMjQ2LCA0OCwgMTcsIDEyLCAKLSAgICAxLCAyMjMsIDI0NiwgNDAsIDE3LCAxMiwgMSwgMjEyLCAxMDIsIDQ4LCAxNywgMTIsIDEsIDIxMiwgMTAyLCA0MCwgMTcsIAotICAgIDEyLCAxLCAyMjIsIDg2LCA0OCwgMTcsIDEyLCAxLCAyMjIsIDg2LCA0MCwgMTcsIDEyLCAxLCAyMjIsIDg2LCA3MCwgMTcsIAotICAgIDEyLCAxLCAyMjIsIDg2LCAxMzgsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDQ4LCAxNywgMTIsIDEsIDIyMCwgMjQwLCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyMjAsIDI0MCwgNzAsIDE3LCAxMiwgMSwgMjIwLCAyNDAsIDEzOCwgMTcsIDEyLCAxLCAyMjIsIDE5NiwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjIyLCAxOTYsIDQwLCAxNywgMTIsIDEsIDIyMiwgMTk2LCA3MCwgMTcsIDEyLCAxLCAyMjIsIAotICAgIDE5NiwgMTM4LCAxNywgMTIsIDEsIDI0OCwgMTYwLCA0OCwgMTcsIDEyLCAxLCAyNDgsIDE2MCwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjQ4LCAxNjAsIDcwLCAxNywgMTIsIDEsIDI0OCwgMTYwLCAxMzgsIDE3LCAxMiwgMSwgMjE4LCAzMCwgNDgsIDE3LCAxMiwgCi0gICAgMSwgMjE4LCAzMCwgNDAsIDE3LCAxMiwgMSwgMjE4LCAzMCwgNzAsIDE3LCAxMiwgMSwgMjE4LCAzMCwgMTM4LCAxNywgMTIsIAotICAgIDEsIDIxMiwgMTA1LCA0OCwgMTcsIDEyLCAxLCAyMTIsIDEwNSwgNDAsIDE3LCAxMiwgMSwgMjEyLCAxMDUsIDcwLCAxNywgCi0gICAgMTIsIDEsIDIxMiwgMTA1LCAxMzgsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDQ4LCAxNywgMTIsIDEsIDI1NCwgMTA0LCA0MCwgCi0gICAgMTcsIDEyLCAxLCAyNTQsIDEwNCwgNzAsIDE3LCAxMiwgMSwgMjU0LCAxMDQsIDEzOCwgMTcsIDEyLCAxLCAyNDIsIDIyMSwgCi0gICAgNDgsIDE3LCAxMiwgMSwgMjQyLCAyMjEsIDQwLCAxNywgMTIsIDEsIDI0MiwgMjIxLCA3MCwgMTcsIDEyLCAxLCAyNDIsIAotICAgIDIyMSwgMTM4LCAxNywgMTIsIDEsIDI0NCwgMTEyLCA0OCwgMTcsIDEyLCAxLCAyNDQsIDExMiwgNDAsIDE3LCAxMiwgMSwgCi0gICAgMjQ0LCAxMTIsIDcwLCAxNywgMTIsIDEsIDI0NCwgMTEyLCAxMzgsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDQ4LCAxNywgMTIsIAotICAgIDEsIDIyNCwgMjI2LCA0MCwgMTcsIDEyLCAxLCAyMjQsIDIyNiwgNzAsIDE3LCAxMiwgMSwgMjI0LCAyMjYsIDEzOCwgMTcsIAotICAgIDEyLCAxLCAyMzQsIDI1NSwgNDgsIDE3LCAxMiwgMSwgMjM0LCAyNTUsIDQwLCAxNywgMTIsIDEsIDIzNCwgMjU1LCA3MCwgCi0gICAgMTcsIDEyLCAxLCAyMzQsIDI1NSwgMTM4LCAxNywgMTIsIDEsIDIzMywgMTI3LCA0OCwgMTcsIDEyLCAxLCAyMzMsIDEyNywgCi0gICAgNDAsIDE3LCAxMiwgMSwgMjMzLCAxMjcsIDcwLCAxNywgMTIsIDEsIDIzMywgMTI3LCAxMzgsIDE3LCAxMiwgMSwgNjMsIDQ4LCAKLSAgICAxNywgMTIsIDEsIDYzLCA0MCwgMTcsIDEyLCAxLCA2MywgNzAsIDE3LCAxMiwgMSwgNjMsIDEzOCwgMTcsIDEyLCAxLCAyMjgsIAotICAgIDE3NCwgNDgsIDE3LCAxMiwgMSwgMjI4LCAxNzQsIDQwLCAxNywgMTIsIDEsIDIyOCwgMTc0LCA3MCwgMTcsIDEyLCAxLCAKLSAgICAyMjgsIDE3NCwgMTM4LCAxNywgMTIsIDEsIDI0MSwgMjAzLCA0OCwgMTcsIDEyLCAxLCAyNDEsIDIwMywgNDAsIDE3LCAxMiwgCi0gICAgMSwgMjQxLCAyMDMsIDcwLCAxNywgMTIsIDEsIDI0MSwgMjAzLCAxMzgsIDE3LCAxMiwgMSwgMjE0LCAxNSwgNDgsIDE3LCAKLSAgICAxMiwgMSwgMjE0LCAxNSwgNDAsIDE3LCAxMiwgMSwgMTA2LCAyMTAsIDQ4LCAxNywgMTIsIDEsIDEwNiwgMjEwLCA0MCwgMTcsIAotICAgIDEyLCAxLCA3MywgNDgsIDE3LCAxMiwgMSwgNzMsIDQwLCAxNywgMTIsIDEsIDczLCA3MCwgMTcsIDEyLCAxLCA3MywgMTM4LCAKLSAgICAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAyLCAyMzIsIDMzLCA3OCwgNDgsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAKLSAgICAyLCAxMDYsIDIsIDIzMiwgMzMsIDc4LCA0MCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCA3OCwgNDgsIAotICAgIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDIsIDE5MiwgNzgsIDQwLCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgCi0gICAgMTA2LCAyLCAxOTIsIDI1MSwgMjIwLCA0OCwgMTcsIDEyLCAyNiwgMjMzLCAxMjcsIDIsIDEwNiwgMiwgMTkyLCAyNTEsIAotICAgIDIyMCwgNDAsIDE3LCAxMiwgMjYsIDIzMywgMTI3LCAyLCAxMDYsIDQ4LCAxNywgMTIsIDI2LCAyMzMsIDEyNywgMiwgMTA2LCAKLSAgICA0MCwgMTcsIDIxMiwgODAsIDIxMywgMjMwLCAyMjgsIDE4NCwgMjE5LCAyMDYsIDEyMCwgMjQ0LCAyNTQsIDc3LCAxMjAsIAotICAgIDIyNCwgMTQzLCA3NywgMTIwLCA1MCwgNTIsIDEyMCwgMjQ3LCA4NiwgNTIsIDEyMCwgMjI2LCA1NywgNTIsIDEyMCwgMjU0LCAKLSAgICAzNSwgMTIwLCAyNTMsIDIyNiwgMTIwLCA0MiwgMjI2LCAxMzEsIDEyMCwgNDYsIDIyNiwgMTMxLCAxMjAsIDI1MywgMTMyLCAKLSAgICAxMjAsIDk0LCA1MiwgMTIwLCAyNDksIDE1NywgMTIwLCAyNDAsIDE1OSwgMTIwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMTIwLCAKLSAgICAyMTksIDIzMSwgMTIwLCAyMSwgMjEyLCA3OSwgMTIwLCAyMSwgMTE2LCAxMjAsIDIxLCAxMDksIDEyMCwgMjEsIDE2NiwgCi0gICAgMTIwLCAyMSwgMTYzLCAxMjAsIDIxLCAxODAsIDEyMCwgMjEsIDE4OSwgMTIwLCAyMSwgMTk4LCAxMjAsIDIxLCAxOTUsIAotICAgIDEyMCwgMjEsIDIwMCwgMTIwLCAyNDksIDE2NCwgMTIwLCAyMjEsIDcwLCAxMjAsIDIzMywgMzksIDUyLCAxMjAsIDI0NSwgCi0gICAgNjEsIDUyLCAxMjAsIDI0MiwgMTA3LCA1MiwgMTIwLCAyMjQsIDE1OCwgNzcsIDEyMCwgMjQ5LCAxNTYsIDI1MywgMTIyLCAKLSAgICAxMjAsIDcsIDYsIDEsIDYxLCAxMjAsIDcsIDYsIDEsIDI1MywgNzQsIDEyMCwgNywgNiwgMSwgMjUwLCAyNTIsIDEyMCwgNywgCi0gICAgNiwgMSwgMjQ5LCAzLCAxMjAsIDcsIDYsIDEsIDc0LCAxMjAsIDcsIDYsIDEsIDI0NCwgMjMwLCAxMjAsIDcsIDYsIDEsIAotICAgIDI0MywgMTc3LCAxMjAsIDcsIDYsIDEsIDI0MiwgNDEsIDEyMCwgNywgNiwgMSwgNzIsIDEyMCwgNywgNiwgMSwgMjM1LCAKLSAgICAxNDIsIDEyMCwgNywgNiwgMSwgMjM1LCAyNywgMTIwLCA3LCA2LCAxLCAxNTAsIDEyMCwgNywgNiwgMSwgMTgzLCAxMjAsIDcsIAotICAgIDYsIDEsIDIwNCwgMTIwLCA3LCA2LCAxLCA3NSwgMTIwLCA3LCA2LCAxLCAyMjYsIDIyOSwgMTIwLCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MCwgMTIwLCA3LCA2LCAxLCAxNDksIDEyMCwgNywgNiwgMSwgMTk3LCAxMjAsIDcsIDYsIDEsIDIxOCwgOTksIDEyMCwgNywgCi0gICAgNiwgMSwgNjksIDEyMCwgNywgNiwgMSwgMjE1LCA3OSwgMTIwLCA3LCA2LCAxLCAyMTQsIDgyLCAxMjAsIDcsIDYsIDEsIAotICAgIDIxMywgMTY2LCAxMjAsIDcsIDYsIDEsIDIxMywgMTA1LCAxMjAsIDcsIDYsIDEsIDIxMiwgMTUyLCAxMjAsIDQyLCA0MSwgCi0gICAgMTI1LCAxMjAsIDIyMywgMjAzLCAyMTksIDIzMSwgMTIwLCA0NiwgNDEsIDEyNSwgMTIwLCAyNDksIDIyNCwgMjU0LCAxNzQsIAotICAgIDEyMCwgMTE1LCAyMzIsIDI0MiwgMTIwLCAyNDIsIDExNCwgMjU0LCAxNzQsIDEyMCwgNywgMywgMSwgNjEsIDEyMCwgNywgMywgCi0gICAgMSwgMjUzLCA3NCwgMTIwLCA3LCAzLCAxLCAyNTAsIDI1MiwgMTIwLCA3LCAzLCAxLCAyNDksIDMsIDEyMCwgNywgMywgMSwgCi0gICAgNzQsIDEyMCwgNywgMywgMSwgMjQ0LCAyMzAsIDEyMCwgNywgMywgMSwgMjQzLCAxNzcsIDEyMCwgNywgMywgMSwgMjQyLCAKLSAgICA0MSwgMTIwLCA3LCAzLCAxLCA3MiwgMTIwLCA3LCAzLCAxLCAyMzUsIDE0MiwgMTIwLCA3LCAzLCAxLCAyMzUsIDI3LCAxMjAsIAotICAgIDcsIDMsIDEsIDE1MCwgMTIwLCA3LCAzLCAxLCAxODMsIDEyMCwgNywgMywgMSwgMjA0LCAxMjAsIDcsIDMsIDEsIDc1LCAKLSAgICAxMjAsIDcsIDMsIDEsIDIyNiwgMjI5LCAxMjAsIDcsIDMsIDEsIDIyNCwgMjQwLCAxMjAsIDcsIDMsIDEsIDE0OSwgMTIwLCAKLSAgICA3LCAzLCAxLCAxOTcsIDEyMCwgNywgMywgMSwgMjE4LCA5OSwgMTIwLCA3LCAzLCAxLCA2OSwgMTIwLCA3LCAzLCAxLCAyMTUsIAotICAgIDc5LCAxMjAsIDcsIDMsIDEsIDIxNCwgODIsIDEyMCwgNywgMywgMSwgMjEzLCAxNjYsIDEyMCwgNywgMywgMSwgMjEzLCAKLSAgICAxMDUsIDEyMCwgNywgMywgMSwgMjEyLCAxNTIsIDEyMCwgNDIsIDI0OSwgNDAsIDEyNSwgMTIwLCA3MSwgMjMyLCAyNDIsIAotICAgIDEyMCwgNDYsIDI0OSwgNDAsIDEyNSwgMTIwLCAyMTcsIDQyLCAxMjAsIDQyLCA2NywgMjI2LCAxMzEsIDEyMCwgNDYsIDY3LCAKLSAgICAyMjYsIDEzMSwgOTgsIDEwNSwgMjQzLCAyMDAsIDIxOSwgNjksIDk4LCA0MiwgMjQ5LCAxMDAsIDEyNSwgOTgsIDQ2LCAyNDksIAotICAgIDEwMCwgMTI1LCA5OCwgMTA1LCAyNDksIDE1NywgOTgsIDU2LCAyMzEsIDM3LCAyNDcsIDc0LCA5OCwgNTYsIDEsIDIxMywgCi0gICAgMjE0LCA5OCwgNTYsIDEsIDMsIDYxLCA5OCwgNTYsIDEsIDMsIDcyLCA5OCwgNTYsIDEsIDMsIDY5LCA5OCwgNTYsIDEsIDMsIAotICAgIDc0LCA5OCwgNTYsIDEsIDMsIDc1LCA5OCwgNTYsIDEsIDMsIDE4NiwgOTgsIDU2LCAxLCAzLCAyMTIsIDIwMywgOTgsIDU2LCAKLSAgICAxLCAzLCAyMTIsIDIzNSwgOTgsIDU2LCAxLCAzLCAyMTYsIDgyLCA5OCwgMjM0LCAyMDYsIDIyNSwgNTcsIDIxOSwgMjE4LCAKLSAgICA3NywgOTgsIDU2LCAxLCA2MSwgOTgsIDU2LCAxLCA3MiwgOTgsIDU2LCAxLCA2OSwgOTgsIDU2LCAxLCA3NCwgOTgsIDU2LCAKLSAgICAxLCA3NSwgOTgsIDU2LCAxLCAxODEsIDk4LCA1NiwgMSwgMjM0LCAxMDEsIDk4LCA1NiwgMSwgMjMzLCAyMzgsIDk4LCA1NiwgCi0gICAgMSwgMjM0LCAxODgsIDk4LCA1NiwgMSwgMjM0LCAzNywgOTgsIDU2LCAxLCAyMjIsIDIwMiwgOTgsIDU2LCAxLCAyMjAsIAotICAgIDExNywgOTgsIDU2LCAxLCAyMTksIDI3LCA5OCwgNTYsIDEsIDIyMiwgMTAwLCA5OCwgNTYsIDEsIDIxOSwgMjQyLCA5OCwgCi0gICAgNTYsIDEsIDIxOCwgNTIsIDk4LCA1NiwgMSwgMjE3LCA3MSwgOTgsIDU2LCAxLCAyMTYsIDgyLCA5OCwgNTYsIDEsIDIxNywgCi0gICAgMjI5LCA5OCwgNTYsIDEsIDEwOCwgOTgsIDU2LCAxLCAyMDUsIDk4LCA1NiwgMSwgMjI5LCA2NCwgOTgsIDU2LCAxLCAyMjgsIAotICAgIDkyLCA5OCwgNTYsIDEsIDIyOSwgMTg3LCA5OCwgNTYsIDEsIDIyOCwgMTg1LCA5OCwgNTYsIDEsIDE1OSwgOTgsIDU2LCAxLCAKLSAgICAyNDEsIDE2NSwgOTgsIDU2LCAxLCAyNDAsIDIxMiwgOTgsIDU2LCAxLCAyNDEsIDIyMiwgOTgsIDU2LCAxLCAyNDEsIDU0LCAKLSAgICA5OCwgNTYsIDEsIDE4OCwgOTgsIDU2LCAxLCAyMzEsIDQyLCA5OCwgNTYsIDEsIDIzMCwgMTcyLCA5OCwgNTYsIDEsIDIzMSwgCi0gICAgMTU2LCA5OCwgNTYsIDEsIDIzMCwgMjMxLCA5OCwgNTYsIDEsIDE4NiwgOTgsIDU2LCAxLCAyMTIsIDIwMywgOTgsIDU2LCAxLCAKLSAgICAyMTIsIDIzNSwgOTgsIDU2LCAxLCAyMDMsIDk4LCA1NiwgMSwgMjIzLCAxODgsIDk4LCA1NiwgMSwgMjIzLCA1MSwgOTgsIAotICAgIDU2LCAxLCAyMjQsIDIxLCA5OCwgNTYsIDEsIDIyMywgMTEyLCA5OCwgNTYsIDEsIDIxNCwgNDksIDk4LCA1NiwgMSwgMjA0LCAKLSAgICA5OCwgNTYsIDIxNCwgMTE2LCAyMTksIDIxOCwgNzcsIDk4LCA1NiwgMjIxLCA3NSwgMjE5LCAyMTgsIDc3LCA5OCwgMjMsIAotICAgIDI0NCwgNzIsIDk4LCAyMywgMSwgMjM0LCA2NywgOTgsIDIzLCAxLCAyMTksIDE1MCwgOTgsIDIzLCAxLCAyMzQsIDYwLCA5OCwgCi0gICAgMjMsIDEsIDIyOSwgNTcsIDk4LCAyMywgMSwgMjI5LCA1NSwgOTgsIDIzLCAxLCAyMjksIDU0LCA5OCwgMjMsIDEsIDIxNywgCi0gICAgNTUsIDk4LCAyMywgMSwgMjE5LCAxMzksIDk4LCAyMywgMSwgMjIzLCAxNzksIDk4LCAyMywgMSwgMjIzLCAxNzQsIDk4LCAKLSAgICAyMywgMSwgMjIzLCAxNzEsIDk4LCAyMywgMSwgMjIzLCAxNjQsIDk4LCAyMywgMSwgMjIzLCAxNTksIDk4LCAyMywgMSwgCi0gICAgMjIzLCAxNTQsIDk4LCAyMywgMSwgMjIzLCAxNjUsIDk4LCAyMywgMSwgMjIzLCAxNzcsIDk4LCAyMywgMSwgMjMxLCAzMCwgCi0gICAgOTgsIDIzLCAxLCAyMjUsIDIyNywgOTgsIDIzLCAxLCAyMTksIDE0NywgOTgsIDIzLCAxLCAyMjUsIDIxNiwgOTgsIDIzLCAxLCAKLSAgICAyMjAsIDc2LCA5OCwgMjMsIDEsIDIxOSwgMTQ0LCA5OCwgMjMsIDEsIDIzNiwgNTEsIDk4LCAyMywgMSwgMjQ5LCAyMzksIAotICAgIDk4LCAyMywgMSwgMjE5LCAxNTQsIDk4LCAyMywgMSwgMjUwLCA0MywgOTgsIDIzLCAxLCAyMzQsIDExNiwgOTgsIDIzLCAxLCAKLSAgICAyMTcsIDEyNiwgOTgsIDIzLCAxLCAyMjYsIDcsIDk4LCAyMywgMSwgMjQxLCAxNTgsIDk4LCAyMywgMSwgNjEsIDk4LCAyMywgCi0gICAgMSwgMjU0LCAxNDgsIDk4LCAyMywgMSwgMTg2LCA5OCwgMjMsIDEsIDIxMywgODAsIDk4LCAyMywgMSwgMjQ1LCA3NiwgOTgsIAotICAgIDIzLCAxLCA3NCwgOTgsIDIzLCAxLCAyMTMsIDI3LCA5OCwgMjMsIDEsIDIxMywgMzgsIDk4LCAyMywgMSwgNzUsIDk4LCAyMywgCi0gICAgMSwgMjE0LCA0OSwgOTgsIDIzLCAxLCAyMTQsIDQ2LCA5OCwgMjMsIDEsIDIyNywgOTksIDk4LCAyMywgMSwgMjEyLCAyMzUsIAotICAgIDk4LCAyMywgMSwgNjksIDk4LCAyMywgMSwgMjEzLCAyNTIsIDk4LCAyMywgMSwgMjE0LCA2LCA5OCwgMjMsIDEsIDIxMywgCi0gICAgMjM1LCA5OCwgMjMsIDEsIDIxMiwgMjAzLCA5OCwgMjMsIDEsIDI0NSwgMjIsIDk4LCAyMywgMSwgMjEyLCAyNTUsIDk4LCAKLSAgICAyMywgMSwgNzIsIDEyMCwgMjUwLCAxMTAsIDUyLCAxMjAsIDIyNSwgMTA4LCA1MiwgMTIwLCAyMjgsIDE2MywgNTIsIDEyMCwgCi0gICAgMjMyLCAzNywgMTIwLCAyNTEsIDYzLCAxMzQsIDEyMCwgMjEzLCAzMSwgNTIsIDEyMCwgMjEzLCAyMDQsIDUyLCA5OCwgMjQzLCAKLSAgICAyNDMsIDE3NywgMjE0LCAyMTYsIDk4LCAxMzIsIDY4LCA5OCwgMjE1LCAxMjQsIDY4LCA5OCwgOTUsIDY4LCA5OCwgMjQ2LCAKLSAgICA1OCwgNjgsIDk4LCA4MywgMjE5LCAxNjYsIDk4LCA2NywgMjQ5LCAyMjgsIDIzNSwgMjAxLCAyNTQsIDEwLCAyNTQsIDI5LCAKLSAgICAyMzUsIDIwMSwgMjU0LCAxMCwgMjIxLCA1NywgMjM1LCAyMDEsIDI1NCwgMTAsIDIxNywgMTg5LCAyMjcsIDExMywgMjIzLCAKLSAgICAyMjQsIDI1MCwgNzgsIDIyMywgMjI0LCAyNTAsIDc4LCA1OCwgNTQsIDQsIDI1MywgNTgsIDYxLCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMjcsIDc0LCA1OCwgNTQsIDQsIDI1MywgMzYsIDcyLCA1OCwgNTQsIDQsIDI1MywgNCwgNzUsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA1NCwgNjksIDU4LCA1NCwgNCwgMjUzLCA3MywgMjQ4LCAxNjQsIDU4LCA1NCwgNCwgMjUzLCAyMCwgMjQ4LCA0MSwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDYwLCAyNDcsIDIxMSwgNTgsIDU0LCA0LCAyNTMsIDUwLCAyNDcsIDk5LCA1OCwgNTQsIDQsIDI1MywgCi0gICAgMTQsIDI0NiwgMzMsIDU4LCA1NCwgNCwgMjUzLCA4LCAyMzUsIDEzOSwgNTgsIDU0LCA0LCAyNTMsIDE5LCAyMzUsIDEyNywgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDI5LCAyMzUsIDcxLCA1OCwgNTQsIDQsIDI1MywgMCwgMjM1LCA1NCwgNTgsIDU0LCA0LCAyNTIsIAotICAgIDI0NCwgMTgxLCA1OCwgNTQsIDQsIDI1MywgMjEsIDIzNCwgMTg4LCA1OCwgNTQsIDQsIDI1MiwgMjU0LCAyMzQsIDEwMSwgCi0gICAgNTgsIDU0LCA0LCAyNTIsIDI1MSwgMjM0LCAzNywgNTgsIDU0LCA0LCAyNTIsIDI0MCwgMjMzLCAyMzgsIDU4LCA1NCwgNCwgCi0gICAgMjUyLCAyNDEsIDE4OCwgNTgsIDU0LCA0LCAyNTMsIDUxLCAyMzEsIDE1NiwgNTgsIDU0LCA0LCAyNTIsIDI0OCwgMjMxLCAKLSAgICA0MiwgNTgsIDU0LCA0LCAyNTMsIDQ5LCAyMzAsIDIzMSwgNTgsIDU0LCA0LCAyNTMsIDQxLCAyMzAsIDE3MiwgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDYyLCAyMDUsIDU4LCA1NCwgNCwgMjUzLCA0MCwgMjI5LCAxODcsIDU4LCA1NCwgNCwgMjUzLCAzNCwgMjI5LCAKLSAgICA2NCwgNTgsIDU0LCA0LCAyNTMsIDEzLCAyMjgsIDE4NSwgNTgsIDU0LCA0LCAyNTMsIDEwLCAyMjgsIDkyLCA1OCwgNTQsIDQsIAotICAgIDI1MywgNjksIDE5MywgNTgsIDU0LCA0LCAyNTIsIDI0OSwgMjI2LCA5NiwgNTgsIDU0LCA0LCAyNTMsIDI2LCAyMjUsIDI0MCwgCi0gICAgNTgsIDU0LCA0LCAyNTMsIDUzLCAyMjUsIDE1MCwgNTgsIDU0LCA0LCAyNTMsIDE1LCAyMjUsIDM1LCA1OCwgNTQsIDQsIAotICAgIDI1MywgNDgsIDIyNCwgMjMyLCA1OCwgNTQsIDQsIDI1MiwgMjQzLCAyMjQsIDIxMywgNTgsIDU0LCA0LCAyNTMsIDQzLCAKLSAgICAyMjQsIDE5OCwgNTgsIDU0LCA0LCAyNTMsIDMyLCAyMjQsIDE4NywgNTgsIDU0LCA0LCAyNTMsIDUsIDIwMywgNTgsIDU0LCAKLSAgICA0LCAyNTMsIDM3LCAyMjQsIDIxLCA1OCwgNTQsIDQsIDI1MywgMTIsIDIyMywgMTg4LCA1OCwgNTQsIDQsIDI1MywgNzEsIAotICAgIDIyMywgMTEyLCA1OCwgNTQsIDQsIDI1MywgMzgsIDIyMywgNTEsIDU4LCA1NCwgNCwgMjUzLCAzMywgMjIyLCAyMDIsIDU4LCAKLSAgICA1NCwgNCwgMjUzLCA1NiwgMjIyLCAxMDAsIDU4LCA1NCwgNCwgMjUzLCAyNCwgMjIwLCAxMTcsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICA1MiwgMjE5LCAyNDIsIDU4LCA1NCwgNCwgMjUzLCA3LCAyMTksIDI3LCA1OCwgNTQsIDQsIDI1MywgNiwgMjE4LCA1MiwgNTgsIAotICAgIDU0LCA0LCAyNTMsIDY3LCAyMTcsIDIyOSwgNTgsIDU0LCA0LCAyNTMsIDI4LCAyMTcsIDcxLCA1OCwgNTQsIDQsIDI1MywgCi0gICAgNjUsIDEwOCwgNTgsIDU0LCA0LCAyNTIsIDI1MiwgMjE2LCA4MiwgNTgsIDU0LCA0LCAyNTMsIDExLCAyMTQsIDQ5LCA1OCwgCi0gICAgNTQsIDQsIDI1MiwgMjQ2LCAyMTQsIDYsIDU4LCA1NCwgNCwgMjUzLCAyNSwgMjEzLCAyMzUsIDU4LCA1NCwgNCwgMjUzLCAKLSAgICAyMywgMjEzLCAyMTQsIDU4LCA1NCwgNCwgMjUzLCA0NywgMjEyLCAxMDksIDU4LCA1NCwgNCwgMjUyLCAyNDcsIDIxMiwgODcsIAotICAgIDU4LCA1NCwgNCwgMjUzLCA0NCwgMjEyLCAxNiwgNTgsIDU0LCA0LCAyNTMsIDM5LCAyNTQsIDIzNCwgNTgsIDU0LCA0LCAKLSAgICAyNTMsIDIyLCAyNTQsIDIzMywgNTgsIDU0LCA0LCAyNTIsIDIzNywgMjUzLCAxMDgsIDU4LCA1NCwgNCwgMjUyLCAyNTAsIAotICAgIDI0NiwgMSwgNTgsIDU0LCA0LCAyNTIsIDIzMywgMjQ2LCAwLCA1OCwgNTQsIDQsIDI1MywgMTcsIDIyOCwgMzEsIDU4LCA1NCwgCi0gICAgNCwgMjUzLCAzNSwgMjI1LCAzNCwgNTgsIDU0LCA0LCAyNTMsIDMsIDIyNSwgMzcsIDU4LCA1NCwgNCwgMjUyLCAyNDUsIAotICAgIDIyNCwgNzYsIDU4LCA1NCwgNCwgMjUzLCAzMSwgMjI0LCA3NSwgNTgsIDU0LCA0LCAyNTIsIDI1MywgMjIzLCAxMTEsIDU4LCAKLSAgICA1NCwgNCwgMjUyLCAyNTUsIDIxOCwgNTAsIDU4LCA1NCwgNCwgMjUyLCAyMzUsIDIxNiwgNDMsIDU4LCA1NCwgNCwgMjUyLCAKLSAgICAyMzIsIDEwOSwgNTgsIDU0LCAxNiwgMjUzLCA0NiwgNTgsIDU0LCAxNiwgMjUzLCA0NSwgNTgsIDU0LCAxNiwgMjUzLCA0MiwgCi0gICAgNTgsIDU0LCAxNiwgMjUzLCAzMCwgNTgsIDU0LCAxNiwgMjUzLCAxOCwgNTgsIDU0LCAxNiwgMjUzLCAxNiwgNTgsIDU0LCAKLSAgICAxNiwgMjUzLCA5LCA1OCwgNTQsIDE2LCAyNTMsIDIsIDU4LCA1NCwgMTYsIDI1MywgMSwgNTgsIDU0LCAxNiwgMjUyLCAyNDIsIAotICAgIDU4LCA1NCwgMTYsIDI1MiwgMjM5LCA1OCwgNTQsIDE2LCAyNTIsIDIzOCwgNTgsIDU0LCAxNiwgMjUyLCAyMzYsIDU4LCA1NCwgCi0gICAgMTYsIDI1MiwgMjM0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMzEsIDIzMSwgMjQ4LCA1OCwgNTQsIDEwMiwgMjUyLCAyMzAsIAotICAgIDIxMywgMjA4LCA1OCwgNTQsIDEwMiwgMjUyLCAyMjksIDI0OCwgMjUsIDU4LCA1NCwgMTAyLCAyNTIsIDIyOCwgMjQ1LCA1OCwgCi0gICAgNTgsIDU0LCAxMDIsIDI1MiwgMjI3LCAyMzEsIDIyMiwgNTgsIDU0LCAxMDIsIDI1MiwgMjI2LCAyMTksIDEwMSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMjI1LCAyNDUsIDQsIDU4LCA1NCwgMTAyLCAyNTIsIDIyNCwgMjI0LCA0NSwgNTgsIDU0LCAxMDIsIDI1MiwgCi0gICAgMjIzLCAyMjAsIDI0MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjIyLCAyNDEsIDIyMSwgNTgsIDU0LCAxMDIsIDI1MiwgMjIxLCAKLSAgICAyMTksIDIxMiwgNTgsIDU0LCAxMDIsIDI1MiwgMjIwLCAyNTEsIDEyNiwgNTgsIDU0LCAxMDIsIDI1MiwgMjE5LCAyNDksIAotICAgIDg0LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTgsIDI1MSwgNDQsIDU4LCA1NCwgMTAyLCAyNTIsIDIxNywgMjEzLCAyNDMsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDIxNiwgMjUyLCA1NiwgNTgsIDU0LCAxMDIsIDI1MiwgMjE1LCAyMjcsIDcxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMTQsIDIxOSwgMTg2LCA1OCwgNTQsIDEwMiwgMjUyLCAyMTMsIDI0OSwgMTEsIDU4LCA1NCwgMjMwLCAyMTIsIAotICAgIDI1MiwgMjEyLCAyMzQsIDIyOSwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMTEsIDIzNCwgMjM3LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMTAsIDIyNywgODQsIDU4LCA1NCwgMTAyLCAyNTIsIDIwOSwgMjEzLCAyMjEsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDIwOCwgNTgsIDU0LCAyMzAsIDIxMiwgMjUyLCAyMDcsIDI1MywgMTg4LCA1OCwgNTQsIDIzMCwgMjEyLCAyNTIsIDIwNiwgCi0gICAgMjMxLCAxMTYsIDU4LCA1NCwgMTAyLCAyNTIsIDIwNSwgMjUxLCA2MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjA0LCAyNDIsIAotICAgIDE0MiwgNTgsIDU0LCAxMDIsIDI1MiwgMjAzLCA1OCwgNTQsIDEwMiwgMjUyLCAyMDIsIDIxMywgMTk5LCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAyMDEsIDU4LCA1NCwgMTAyLCAyNTIsIDIwMCwgNTgsIDU0LCAxMDIsIDI1MiwgMTk5LCAyNDAsIDIzNSwgNTgsIDU0LCAKLSAgICAxMDIsIDI1MiwgMTk4LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTcsIDU4LCA1NCwgMTAyLCAyNTIsIDE5NiwgNTgsIDU0LCAyMzAsIAotICAgIDIxMiwgMjUyLCAxOTQsIDIxNiwgNTYsIDU4LCA1NCwgMTAyLCAyNTIsIDE5MywgNTgsIDU0LCAxMDIsIDI1MiwgMTkyLCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxOTEsIDI0OSwgMTg3LCA1OCwgNTQsIDEwMiwgMjUyLCAxOTAsIDU4LCA1NCwgMTAyLCAyNTIsIAotICAgIDE4OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg4LCAyNDMsIDY5LCA1OCwgNTQsIDEwMiwgMjUyLCAxODcsIDI1MywgMTc1LCA1OCwgCi0gICAgNTQsIDEwMiwgMjUyLCAxODYsIDU4LCA1NCwgMTAyLCAyNTIsIDE4NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTg0LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxODMsIDU4LCA1NCwgMTAyLCAyNTIsIDE4MiwgNTgsIDU0LCAxMDIsIDI1MiwgMTgxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjUyLCAxODAsIDU4LCA1NCwgMTAyLCAyNTIsIDE3OSwgNTgsIDU0LCAxMDIsIDI1MiwgMTc4LCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxNzcsIDIzMCwgMjA0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNzYsIDU4LCA1NCwgMTAyLCAyNTIsIDE3NSwgMjE2LCAxOTMsIAotICAgIDU4LCA1NCwgMTAyLCAyNTIsIDE3NCwgNTgsIDU0LCAxMDIsIDI1MiwgMTczLCA1OCwgNTQsIDEwMiwgMjUyLCAxNzIsIDU4LCAKLSAgICA1NCwgMTAyLCAyNTIsIDE3MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTcwLCA1OCwgNTQsIDEwMiwgMjUyLCAxNjksIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDE2OCwgNTgsIDU0LCAxMDIsIDI1MiwgMTY3LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDE2NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTY0LCA1OCwgNTQsIDEwMiwgMjUyLCAxNjMsIDI0MSwgMTk1LCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxNDIsIDI0MywgMjUzLCA1OCwgNTQsIDEwMiwgMjUyLCAxMzksIDI1MiwgMzYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDEzNCwgMjE5LCAxOTMsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMywgNjgsIDU4LCA1NCwgMTAyLCAyNTIsIDEzMiwgNTgsIAotICAgIDU0LCAxMDIsIDI1MiwgMTMxLCAyMTgsIDE4MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTMwLCA1OCwgNTQsIDEwMiwgMjUyLCAKLSAgICAxMjksIDU4LCA1NCwgMTAyLCAyNTIsIDEyOCwgMjEzLCAyMzksIDI1MCwgNzUsIDU4LCA1NCwgMTAyLCAyNTIsIDEyNywgCi0gICAgMjUwLCA3NSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI2LCAyNTAsIDc2LCAyNDMsIDIyNSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI1LCAKLSAgICAyMTMsIDI0MSwgNTgsIDU0LCAxMDIsIDI1MiwgMTI0LCA1OCwgNTQsIDEwMiwgMjUyLCAxMjMsIDU4LCA1NCwgMjMwLCAyMTIsIAotICAgIDI1MiwgMTIyLCAyNDcsIDE1MCwgNTgsIDU0LCAxMDIsIDI1MiwgMTIxLCA1OCwgNTQsIDEwMiwgMjUyLCAxMjAsIDU4LCA1NCwgCi0gICAgMTAyLCAyNTIsIDExOCwgNTgsIDU0LCAxMDIsIDI1MiwgMTE3LCA1OCwgNTQsIDEwMiwgMjUyLCAxMTYsIDU4LCA1NCwgMTAyLCAKLSAgICAyNTIsIDExNSwgMjQ4LCAxMDQsIDU4LCA1NCwgMTAyLCAyNTIsIDExNCwgNTgsIDU0LCAxMDIsIDI1MiwgMTEzLCA1OCwgNTQsIAotICAgIDEwMiwgMjUyLCAxMTIsIDU4LCA1NCwgMTAyLCAyNTIsIDExMSwgNTgsIDU0LCAxMDIsIDI1MiwgMTEwLCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTk1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTYyLCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTYxLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTYwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIAotICAgIDI1MiwgMTU5LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU4LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgCi0gICAgMTU3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU2LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU1LCAKLSAgICA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTU0LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUzLCA1OCwgNTQsIAotICAgIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUyLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTUxLCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTUwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ5LCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTQ4LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIAotICAgIDI1MiwgMTQ2LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQ1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgCi0gICAgMTQ0LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQzLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQxLCAKLSAgICA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTQwLCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM4LCA1OCwgNTQsIAotICAgIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM3LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTM2LCA1OCwgNTQsIDEwMiwgCi0gICAgMjE0LCAxNjMsIDI1MiwgMTM1LCA1OCwgNTQsIDEwMiwgMjE0LCAxNjMsIDI1MiwgMTE5LCA1OCwgNTQsIDEwMiwgMjE0LCAKLSAgICAxNjMsIDI1MiwgMTA5LCAyNTQsIDE0MSwgMjEzLCAxOTYsIDIyMSwgNTgsIDIzMiwgMjQyLCAyNTQsIDE0MSwgMjEzLCAxOTYsIAotICAgIDIyMSwgNTgsIDI0NywgNzQsIDI1NCwgMTQxLCAyNTAsIDY2LCA3NywgMjU0LCAxNDEsIDUwLCAxMTYsIDI1NCwgMTQxLCA1MCwgCi0gICAgMTA5LCAyNTQsIDE0MSwgNTAsIDE2NiwgMjU0LCAxNDEsIDUwLCAxNjMsIDI1NCwgMTQxLCA1MCwgMTgwLCAyNTQsIDE0MSwgCi0gICAgNTAsIDE4OSwgMjU0LCAxNDEsIDUwLCAxOTgsIDI1NCwgMTQxLCA1MCwgMTk1LCAyNTQsIDE0MSwgNTAsIDIwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMTcsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMTYsIDM4LCAyNTQsIDE0MSwgNTAsIDIxNywgMTE1LCAyNTQsIAotICAgIDE0MSwgNTAsIDI0MywgMjQwLCAyNTQsIDE0MSwgNTAsIDI0NCwgODMsIDI1NCwgMTQxLCA1MCwgMjIwLCAzOSwgMjU0LCAKLSAgICAxNDEsIDUwLCAyMjEsIDM3LCAyNTQsIDE0MSwgNTAsIDI0NSwgMTQxLCAyNTQsIDE0MSwgNTAsIDIyOSwgMjYsIDI1NCwgCi0gICAgMTQxLCA1MCwgMTIyLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAxMTcsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDEzMywgCi0gICAgMjQwLCAyMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyMzcsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDI0NCwgNTAsIDI0MCwgCi0gICAgMjAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNTMsIDI0MCwgMjAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgNDMsIDI0MCwgMjAwLCAKLSAgICAyNTQsIDE0MSwgNTAsIDI0NSwgMTUwLCAyNDAsIDIwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDMxLCAyNDAsIDIwMCwgMjU0LCAKLSAgICAxNDEsIDUwLCAxMjIsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDExNywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMTMzLCAKLSAgICAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyNDMsIDIzNywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQ0LCA1MCwgMjE3LCAKLSAgICAxMDAsIDI1NCwgMTQxLCA1MCwgMjIwLCA1MywgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjIxLCA0MywgMjE3LCAxMDAsIAotICAgIDI1NCwgMTQxLCA1MCwgMjQ1LCAxNTAsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyOSwgMzEsIDIxNywgMTAwLCAyNTQsIAotICAgIDE0MSwgNTAsIDIxNywgMjAxLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMTYsIDM5LCAyMTcsIDEwMCwgMjU0LCAxNDEsIAotICAgIDUwLCAyMTcsIDExNiwgMjE3LCAxMDAsIDI1NCwgMTQxLCA1MCwgMjQzLCAyNDEsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIAotICAgIDI0NCwgODQsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMCwgNDAsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDIyMSwgCi0gICAgMzgsIDIxNywgMTAwLCAyNTQsIDE0MSwgNTAsIDI0NSwgMTQyLCAyMTcsIDEwMCwgMjU0LCAxNDEsIDUwLCAyMjksIDI3LCAKLSAgICAyMTcsIDEwMCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNTIsIDQ4LCAyMTUsIDE0NCwgMjU0LCAxNDEsIDIxMywgMjU1LCAyNDQsIAotICAgIDYxLCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjIyLCA5NSwgMjE5LCA0LCAyNTQsIDE0MSwgMjEzLCAyNTUsIDIxNywgCi0gICAgMTIyLCAyMTksIDQsIDI1NCwgMTQxLCAyMTMsIDI1NSwgMjQzLCAyMzAsIDIxOSwgNCwgMjU0LCAxNDEsIDI0NiwgMzYsIAotICAgIDIzMSwgMTU1LCAyNDQsIDYxLCAyMTksIDQsIDI1NCwgMTQxLCAyMzIsIDIyOCwgMjMxLCAxNTUsIDI0NCwgNjEsIDIxOSwgNCwgCi0gICAgMjU0LCAxNDEsIDIzMSwgMTU1LCAyMjIsIDk1LCAyMTksIDQsIDI1NCwgMTQxLCAyMzEsIDE1NSwgMjE3LCAxMjIsIDIxOSwgCi0gICAgNCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyMjQsIDE2NiwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAKLSAgICAyNDIsIDksIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjQ2LCA1NCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgCi0gICAgMTgwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDgzLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAKLSAgICAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjE3LCAxMDAsIDI1LCAyNTQsIDE2NywgMjUzLCAKLSAgICAxMTAsIDI0NCwgODQsIDIxNywgMTAwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTgsIDE4LCAyNSwgCi0gICAgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgCi0gICAgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMTIyLCAyNDAsIDIwMSwgMjE4LCAxOCwgMjUsIDI1NCwgMTY3LCAKLSAgICAyNTMsIDExMCwgMjQ0LCA1MCwgMjQwLCAyMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjE3LCAKLSAgICAxMDEsIDIxOCwgMTgsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDI0NCwgNTAsIDIxNywgMTAxLCAyMTgsIDE4LCAyNSwgCi0gICAgMjU0LCAxNjcsIDI1MywgMTEwLCAyNDQsIDUwLCAyMTksIDkwLCAyNSwgMjU0LCAxNjcsIDI1MywgMTEwLCAyMTcsIDIwMSwgCi0gICAgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIAotICAgIDExMCwgMTIyLCAyNDAsIDIwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA1MCwgMjQwLCAyMDEsIAotICAgIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDEyMiwgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgCi0gICAgMjUzLCAxMTAsIDIxNywgMjAxLCAyMTcsIDEwMSwgMjE5LCA5MCwgMjUsIDI1NCwgMTY3LCAyNTMsIDExMCwgMjQ0LCA4NCwgCi0gICAgMjE3LCAxMDEsIDIxOSwgOTAsIDI1LCAyNTQsIDE2NywgMjUzLCAxMTAsIDIxNywgMjAxLCAyMzAsIDIzNCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyNDEsIDE4OSwgMTIyLCAyMjUsIDE2NCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTE2LCAyNSwgMjU0LCAxNjcsIAotICAgIDI0MSwgMTg2LCAxMTYsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMTA5LCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMDksIAotICAgIDI1LCAyNTQsIDE2NywgMjQ5LCA4LCAxMTcsIDI0NiwgNTMsIDI1LCAyNTQsIDE2NywgMjQ1LCA2NywgMTE3LCAyNDYsIDUzLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAxODAsIDI1LCAyNTQsIDE2NywgMjE2LCAxNjEsIDIxNywgMjAwLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIxNiwgMTYxLCAyMTcsIDIwMSwgMjU0LCA1MCwgMTcsIDI1LCAyNTQsIDE2NywgMjQxLCAxODYsIDIxNywgMjAwLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIzMSwgMTA4LCAyMTcsIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjE3LCAyMDAsIDI1LCAKLSAgICAyNTQsIDE2NywgMjE3LCAxMzQsIDIxNywgMTE1LCAyNSwgMjU0LCAxNjcsIDIxNiwgMTYxLCAyNDQsIDgzLCAyNSwgMjU0LCAKLSAgICAxNjcsIDIxNiwgMTYxLCAyNDQsIDg0LCAyNTQsIDUwLCAxNywgMjUsIDI1NCwgMTY3LCAyNDEsIDE4NiwgMjQ0LCA4MywgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMjQ0LCA4MywgMjUsIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTIyLCAyNDAsIDIwMCwgMjUsIAotICAgIDI1NCwgMTY3LCAyMTcsIDEzNCwgMTMzLCAyNDAsIDIwMCwgMjUsIDI1NCwgMTY3LCAyNDUsIDY3LCAyNDQsIDUwLCAyNDAsIAotICAgIDIwMCwgMjUsIDI1NCwgMTY3LCAyMTYsIDE2MSwgMjQ0LCA1MCwgMjQwLCAyMDAsIDI1LCAyNTQsIDE2NywgMjE3LCAxMzQsIAotICAgIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDI1MCwgMTU5LCAyNDQsIDUwLCAyNDAsIDIwMCwgMjUsIDI1NCwgCi0gICAgMTY3LCAyMzAsIDQsIDI0NCwgNTAsIDI0MCwgMjAwLCAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAxMjIsIDIxNywgMTAwLCAKLSAgICAyNSwgMjU0LCAxNjcsIDIxNywgMTM0LCAyNDQsIDUwLCAyMTcsIDEwMCwgMjUsIDI1NCwgMTY3LCAyNDgsIDgsIDI0NCwgNTAsIAotICAgIDIzMCwgMjM0LCAyNSwgMjU0LCAxNjcsIDIxOSwgNTgsIDI0NCwgODQsIDIzMCwgMjM0LCAyNSwgMTIyLCAxNTEsIDUyLCAyNSwgCi0gICAgMTIyLCAxNTEsIDUsIDI1NCwgNTAsIDE3LCAyNSwgMTE3LCAyMTcsIDEyMCwgNTIsIDI1LCAxMzMsIDIyNCwgMTY1LCA1MiwgCi0gICAgMjUsIDIxMywgMzYsIDUyLCAyNSwgMjE4LCAxOSwgNTIsIDI1LCAyNDYsIDU1LCA1MiwgMjUsIDIyNywgMTEwLCA1MiwgMjUsIAotICAgIDExNywgMjI3LCAxMDksIDUyLCAyNSwgMTMzLCAyMjcsIDEwOSwgNTIsIDI1LCAyNDMsIDIzNywgMjI3LCAxMDksIDUyLCAyNSwgCi0gICAgMjQ0LCA1MCwgMjI3LCAxMDksIDUyLCAyNSwgMjMxLCAxMDIsIDUyLCAyNSwgMjMzLCAxNzksIDI1MiwgNDgsIDUyLCAyNSwgCi0gICAgMjMyLCAyMjMsIDUyLCAyNSwgMjI2LCAyNTUsIDUyLCAyNSwgMjEzLCAxNDcsIDUyLCAyNSwgMjUzLCAxNTgsIDUyLCAyNSwgCi0gICAgMjUzLCAxNzEsIDUyLCAyNSwgMjQyLCAxMjAsIDUyLCAyNSwgMjE2LCAxNDQsIDI1MiwgNDgsIDUyLCAyNSwgMjEyLCA4MCwgCi0gICAgNTIsIDIyMywgMTAwLCAyMjEsIDM0LCA1MiwgMjIzLCAxMDAsIDIxNSwgMTU1LCA1MiwgMjIzLCAxMDAsIDIyMSwgNjIsIDUyLCAKLSAgICAyMjMsIDEwMCwgMjIxLCAzMiwgNTIsIDIyMywgMTAwLCAyNDcsIDE2NSwgMjIxLCAzMiwgNTIsIDIyMywgMTAwLCAyMjAsIAotICAgIDk0LCA1MiwgMjIzLCAxMDAsIDI0OCwgNCwgNTIsIDIyMywgMTAwLCAyMjQsIDE1MSwgNTIsIDIyMywgMTAwLCAyMjEsIDUwLCAKLSAgICA1MiwgMjIzLCAxMDAsIDI0NiwgMTUsIDUyLCAyMjMsIDEwMCwgMjUzLCAxNTMsIDUyLCAyMjMsIDEwMCwgMjUwLCAxMDUsIAotICAgIDUyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCA4OCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNSwgMTU4LCAyNDEsIAotICAgIDIxOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNywgMjUyLCAyNDEsIDIxOSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgCi0gICAgMTc5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUwLCAzOCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxMywgMjA4LCAyMjYsIAotICAgIDE5LCAyNDcsIDE0MywgNSwgMjQxLCAxOTUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDMsIDYxLCAyMjYsIDE5LCAyNDcsIAotICAgIDE0MywgNSwgMjE3LCA3MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDY4LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCA5NSwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyMCwgMjA5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ5LCAxODEsIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyMzEsIDI0NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIzMSwgMTk5LCAyMjYsIDE5LCAyNDcsIDE0MywgCi0gICAgNSwgMjIyLCAxMzQsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMzMsIDksIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNTEsIAotICAgIDExMywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MCwgMTYzLCAyMjUsIDE2NywgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NywgCi0gICAgODcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDksIDE2MSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyMCwgMTUsIDIyNiwgCi0gICAgMTksIDI0NywgMTQzLCA1LCAyNDksIDE2MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI1MSwgMjM5LCAyMjYsIDE5LCAyNDcsIAotICAgIDE0MywgNSwgMjIwLCAxOTYsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDAsIDIzNSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIAotICAgIDI0MSwgMTYzLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjUxLCA0MSwgMjMzLCA2MCwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIAotICAgIDI1MCwgMTU2LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI0LCA0NSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDI0NSwgMTg2LCAKLSAgICAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQ2LCA2MSwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNiwgNjksIDIyNiwgMTksIAotICAgIDI0NywgMTQzLCA1LCAyNTEsIDI0MiwgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIyNSwgMTY4LCAyMTYsIDE5MywgMjI2LCAxOSwgCi0gICAgMjQ3LCAxNDMsIDUsIDIxNCwgMTQwLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjI2LCAxNDYsIDIyNiwgMTksIDI0NywgMTQzLCAKLSAgICA1LCAyMjMsIDkyLCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjMyLCAyNTIsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMjYsIAotICAgIDIzOSwgMjUyLCAxMDEsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyNDQsIDE3LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMjQyLCAKLSAgICAxMTUsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAyMTksIDU5LCAyMjYsIDE5LCAyNDcsIDE0MywgNSwgMywgMjUzLCA4NCwgCi0gICAgMjI2LCAxOSwgMjQ3LCAxNDMsIDUsIDIxNCwgMTYsIDI1MiwgNjcsIDIyNiwgMTksIDI0NywgMTQzLCA1LCAzNywgMjI3LCAKLSAgICAxMTIsIDkwLCAyMzIsIDEyMCwgMSwgNjEsIDIzMiwgMTIwLCAxLCA3NCwgMjMyLCAxMjAsIDEsIDI1MywgNzQsIDIzMiwgCi0gICAgMTIwLCAxLCAyNTEsIDE5NiwgMjMyLCAxMjAsIDEsIDI0MywgMTc3LCAyMzIsIDEyMCwgMSwgMjQ5LCAzLCAyMzIsIDEyMCwgCi0gICAgMSwgNzIsIDIzMiwgMTIwLCAxLCAyMTQsIDgyLCAyMzIsIDEyMCwgMSwgMjEyLCAxNTIsIDIzMiwgMTIwLCAxLCAyMTcsIAotICAgIDE2MywgMjMyLCAxMjAsIDEsIDIzNSwgMTQyLCAyMzIsIDEyMCwgMSwgMjM1LCAyNywgMjMyLCAxMjAsIDEsIDIyNCwgMjQwLCAKLSAgICAyMzIsIDEyMCwgMSwgMTUwLCAyMzIsIDEyMCwgMSwgMTgzLCAyMzIsIDEyMCwgMSwgMjA0LCAyMzIsIDEyMCwgMSwgMjMwLCAKLSAgICAyMzUsIDIzMiwgMTIwLCAxLCAyMjgsIDE5OSwgMjMyLCAxMjAsIDEsIDY5LCAyMzIsIDEyMCwgMSwgMjI2LCAyMjksIDIzMiwgCi0gICAgMTIwLCAxLCAyMzQsIDU2LCAyMzIsIDEyMCwgMSwgMTQ5LCAyMzIsIDEyMCwgMSwgMTk3LCAyMzIsIDEyMCwgMSwgMjE4LCAKLSAgICA5OSwgMjMyLCAxMjAsIDEsIDIxNiwgMTE4LCAyMzIsIDEyMCwgMSwgMjU0LCAzMiwgMjMyLCAxMjAsIDEsIDI0NSwgMTA4LCAKLSAgICAyMzIsIDEyMCwgMSwgMjQyLCA0MSwgMjMyLCAxMjAsIDEsIDIxMywgMTY2LCAyNTAsIDE2OSwgMSwgNjEsIDI1MCwgMTY5LCAKLSAgICAxLCAyMjYsIDIxNSwgMjUwLCAxNjksIDEsIDI0OSwgMywgMjUwLCAxNjksIDEsIDE1MCwgMjUwLCAxNjksIDEsIDIxNSwgOTAsIAotICAgIDI1MCwgMTY5LCAxLCAxNDksIDI1MCwgMTY5LCAxLCAyMzMsIDg2LCAyNTAsIDE2OSwgMSwgMjU0LCAyMzQsIDI1MCwgMTY5LCAKLSAgICAxLCAyMjQsIDI0MCwgMjUwLCAxNjksIDEsIDI1MywgNzQsIDI1MCwgMTY5LCAxLCAxODMsIDI1MCwgMTY5LCAxLCA3NSwgCi0gICAgMjUwLCAxNjksIDEsIDI0OCwgMTY2LCAyNTAsIDE2OSwgMSwgMjE4LCA5OSwgMjUwLCAxNjksIDEsIDIyMSwgMjYsIDI1MCwgCi0gICAgMTY5LCAxLCAyMjEsIDI1LCAyNTAsIDE2OSwgMSwgMTk3LCAyNTAsIDE2OSwgMSwgMjUwLCAyNTEsIDI1MCwgMTY5LCAxLCAKLSAgICA2OSwgMjUwLCAxNjksIDEsIDIyOCwgMTk5LCAyNTAsIDE2OSwgMSwgMjEzLCAxNjYsIDI1MCwgMTY5LCAxLCAyMDQsIDI1MCwgCi0gICAgMTY5LCAxLCAyMTYsIDExNywgMjUwLCAxNjksIDEsIDIyNiwgMjI5LCAyNTAsIDE2OSwgMSwgMjE5LCAxNTgsIDI1MCwgMTY5LCAKLSAgICAxLCA3MiwgMjUwLCAxNjksIDEsIDc0LCAyNTAsIDE2OSwgMSwgMjE1LCA4NywgMjUwLCAxNjksIDEsIDIzNSwgMjcsIDI1MCwgCi0gICAgMTY5LCAxLCAyMzUsIDE4LCAyNTAsIDE2OSwgMSwgMjI5LCAyMzAsIDI1MCwgMTY5LCAxLCAyMTUsIDkyLCAyNTAsIDE2OSwgCi0gICAgMSwgMjQzLCAxNzcsIDI1MCwgMTY5LCAxLCAyNDMsIDExMiwgMjUwLCAxNjksIDEsIDIxOSwgMTA3LCAyNTAsIDE2OSwgMSwgCi0gICAgMjE5LCAxMDYsIDI1MCwgMTY5LCAxLCAyMjksIDE2MSwgMjUwLCAxNjksIDEsIDIzNiwgMjgsIDI1MCwgMTY5LCAxLCAyNTAsIAotICAgIDI1MCwgMjUwLCAxNjksIDEsIDIxNiwgMTE4LCAyNTAsIDE2OSwgMSwgMjE1LCA4OSwgMjUwLCAxNjksIDEsIDIyMywgODIsIAotICAgIDI1MCwgMTY5LCAxLCAyMzEsIDE5MiwgMjUwLCAxNjksIDEsIDIzMSwgMTkxLCAyNTAsIDE2OSwgMSwgMjMxLCAxOTAsIDI1MCwgCi0gICAgMTY5LCAxLCAyMzEsIDE4OSwgMjUwLCAxNjksIDEsIDIzMywgODUsIDI1MCwgMTY5LCAxLCAyNDUsIDE5MCwgMjUwLCAxNjksIAotICAgIDEsIDIxNSwgODgsIDUzLCAzMiwgMSwgNjEsIDUzLCAzMiwgMSwgMjUxLCAyNTEsIDUzLCAzMiwgMSwgMjM0LCAxODgsIDUzLCAKLSAgICAzMiwgMSwgMjQ4LCA0MSwgNTMsIDMyLCAxLCA3NCwgNTMsIDMyLCAxLCAyMTQsIDIzMiwgNTMsIDMyLCAxLCAyMTIsIDg3LCAKLSAgICA1MywgMzIsIDEsIDI0MSwgMjIyLCA1MywgMzIsIDEsIDIxNywgMTQ4LCA1MywgMzIsIDEsIDcyLCA1MywgMzIsIDEsIDE4MSwgCi0gICAgNTMsIDMyLCAxLCAyNDUsIDEzMSwgNTMsIDMyLCAxLCAyNDUsIDExNywgNTMsIDMyLCAxLCAyNDUsIDEwOCwgNTMsIDMyLCAxLCAKLSAgICAyNDUsIDQwLCA1MywgMzIsIDEsIDc1LCA1MywgMzIsIDEsIDIyNiwgOTYsIDUzLCAzMiwgMSwgMjIwLCAyNDMsIDUzLCAzMiwgCi0gICAgMSwgMjMzLCAyMzgsIDUzLCAzMiwgMSwgMjQ1LCA1NSwgNTMsIDMyLCAxLCAyNDUsIDQ1LCA1MywgMzIsIDEsIDIxNywgMjI5LCAKLSAgICA1MywgMzIsIDEsIDY5LCA1MywgMzIsIDEsIDI0NSwgMTM0LCA1MywgMzIsIDEsIDIyNiwgMTIsIDUzLCAzMiwgMSwgMjM0LCAKLSAgICAxMjUsIDUzLCAzMiwgMSwgMjQ1LCAxNTksIDUzLCAzMiwgMSwgMjQ1LCA0NywgNTMsIDMyLCAxLCAyNTAsIDY3LCA1MywgMzIsIAotICAgIDEsIDIzNiwgMjgsIDUzLCAzMiwgMSwgMjE1LCA5MiwgNTMsIDMyLCAyMjgsIDU0LCAxMTYsIDUzLCAzMiwgMjI4LCA1NCwgCi0gICAgMTgwLCA1MywgMzIsIDIyOCwgNTQsIDIxNywgMjAwLCA1MywgMzIsIDIyOCwgNTQsIDI0NCwgODMsIDI0MiwgMTI5LCAxLCAKLSAgICAyNTQsIDExMSwgMjQyLCAxMjksIDEsIDI1MiwgODIsIDI0MiwgMTI5LCAxLCAyNDIsIDE4NywgMjQyLCAxMjksIDEsIDI0OCwgCi0gICAgMTQ4LCAyNDIsIDEyOSwgMSwgMjU0LCAxMDcsIDI0MiwgMTI5LCAxLCAyMjQsIDIyMywgMjQyLCAxMjksIDEsIDIzNSwgMTUzLCAKLSAgICAyNDIsIDEyOSwgMSwgMjQyLCAyMCwgMjQyLCAxMjksIDEsIDIxNywgMTExLCAyNDIsIDEyOSwgMSwgMjQ1LCAxNDAsIDI0MiwgCi0gICAgMTI5LCAxLCAyMzMsIDIxMSwgMjQyLCAxMjksIDEsIDIzMywgMTM2LCAyNDIsIDEyOSwgMSwgMjMxLCAyNDIsIDI0MiwgMTI5LCAKLSAgICAxLCAyMzAsIDYsIDI0MiwgMTI5LCAxLCAyMzUsIDEyMCwgMjQyLCAxMjksIDEsIDIxNSwgMTA3LCAyNDIsIDEyOSwgMSwgCi0gICAgMjI2LCAxOTYsIDI0MiwgMTI5LCAxLCAyMjksIDI2LCAyNDIsIDEyOSwgMSwgMjI0LCA1NiwgMjQyLCAxMjksIDEsIDIyMiwgCi0gICAgMTM2LCAyNDIsIDEyOSwgMSwgMjE3LCAyMTIsIDI0MiwgMTI5LCAxLCAyMTMsIDIxOSwgMjQyLCAxMjksIDEsIDI0NCwgMTQ2LCAKLSAgICAyNDIsIDEyOSwgMSwgMjM2LCAzMiwgMjQyLCAxMjksIDEsIDI0MCwgMTkxLCAyNDIsIDEyOSwgMSwgMjI3LCA3LCAyNDIsIAotICAgIDEyOSwgMSwgMjI5LCAzMSwgMjQwLCAyMDAsIDIxNSwgMTc5LCAxLCAyNTQsIDU2LCAyMTUsIDE3OSwgMSwgMjUxLCAyMDMsIAotICAgIDIxNSwgMTc5LCAxLCAyNDMsIDg0LCAyMTUsIDE3OSwgMSwgMjM0LCAxMzgsIDIxNSwgMTc5LCAxLCAyNDgsIDUsIDIxNSwgCi0gICAgMTc5LCAxLCAyNDEsIDU0LCAyMTUsIDE3OSwgMSwgMjEzLCAyMTQsIDIxNSwgMTc5LCAxLCAyMTIsIDc4LCAyMTUsIDE3OSwgCi0gICAgMSwgMjQwLCAyMjgsIDIxNSwgMTc5LCAxLCAyMTcsIDE4MywgMjE1LCAxNzksIDEsIDIxMiwgMjI0LCAyMTUsIDE3OSwgMSwgCi0gICAgMjM0LCAyNTQsIDIxNSwgMTc5LCAxLCAyMjAsIDIwMCwgMjE1LCAxNzksIDEsIDIzMywgMTIyLCAyMTUsIDE3OSwgMSwgMjMxLCAKLSAgICAxMjksIDIxNSwgMTc5LCAxLCAyNDcsIDIyOSwgMjE1LCAxNzksIDEsIDIyOCwgNTAsIDIxNSwgMTc5LCAxLCAyMTIsIDgsIAotICAgIDIxNSwgMTc5LCAxLCAyMjIsIDE2MywgMjE1LCAxNzksIDEsIDI1NCwgMTAzLCAyMTUsIDE3OSwgMSwgMjI1LCAzNSwgMjE1LCAKLSAgICAxNzksIDEsIDIyMiwgMTk0LCAyMTUsIDE3OSwgMSwgMjI0LCAxODAsIDIxNSwgMTc5LCAxLCAyMjQsIDM2LCAyMTUsIDE3OSwgCi0gICAgMSwgMjE3LCAxNTIsIDIxNSwgMTc5LCAxLCAyNDIsIDIyMCwgMjE1LCAxNzksIDEsIDEwOCwgMjE1LCAxNzksIDEsIDcyLCAKLSAgICAyMTUsIDE3OSwgMSwgNjksIDIxNSwgMTc5LCAxLCAyMTksIDExNywgMjE1LCAxNzksIDIxMywgMTk2LCAyNDcsIDEyNCwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDYxLCA1MywgMjI2LCA0NSwgNSwgNzIsIDUzLCAyMjYsIDQ1LCA1LCA2OSwgNTMsIDIyNiwgNDUsIDUsIAotICAgIDE4MSwgNTMsIDIyNiwgNDUsIDUsIDIzMywgMjM4LCA1MywgMjI2LCA0NSwgNSwgMjQzLCAxMTAsIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAyNDIsIDkyLCA1MywgMjI2LCA0NSwgNSwgMjEzLCAxNTMsIDUzLCAyMjYsIDQ1LCA1LCAyNTAsIDIxOSwgNTMsIDIyNiwgNDUsIAotICAgIDUsIDIzNSwgMTM5LCA1MywgMjI2LCA0NSwgNSwgMjM1LCAxMTAsIDUzLCAyMjYsIDQ1LCA1LCAyMTgsIDUyLCA1MywgMjI2LCAKLSAgICA0NSwgNSwgMjE2LCA4MiwgNTMsIDIyNiwgNDUsIDUsIDI0OCwgMTY0LCA1MywgMjI2LCA0NSwgNSwgMjQ3LCAyMTEsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyNDYsIDMzLCA1MywgMjI2LCA0NSwgNSwgMjE3LCAxNjEsIDUzLCAyMjYsIDQ1LCA1LCAxOTMsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyNTIsIDEwNywgNTMsIDIyNiwgNDUsIDUsIDI0NCwgMTY0LCA1MywgMjI2LCA0NSwgNSwgMjA1LCA1MywgCi0gICAgMjI2LCA0NSwgNSwgMjI4LCA5MiwgNTMsIDIyNiwgNDUsIDUsIDE4OCwgNTMsIDIyNiwgNDUsIDUsIDIzMSwgNDIsIDUzLCAKLSAgICAyMjYsIDQ1LCA1LCAyMzAsIDE3MiwgNTMsIDIyNiwgNDUsIDUsIDE4NiwgNTMsIDIyNiwgNDUsIDUsIDIxNSwgMSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIxNCwgMTU0LCA1MywgMjI2LCA0NSwgNSwgMjAzLCA1MywgMjI2LCA0NSwgNSwgMjIzLCA1MSwgNTMsIAotICAgIDIyNiwgNDUsIDUsIDIzMywgMTU3LCA1MywgMjI2LCA0NSwgNSwgMjIyLCAyMDIsIDUzLCAyMjYsIDQ1LCA1LCAyMTIsIDEwOSwgCi0gICAgNTMsIDIyNiwgNDUsIDUsIDIyMSwgMjQsIDUzLCAyMjYsIDQ1LCA1LCAyMTksIDE1NywgNTMsIDIyNiwgNDUsIDUsIDE1OSwgCi0gICAgNTMsIDIyNiwgNDUsIDUsIDI1MywgMTAyLCA1MywgMjI2LCA0NSwgNSwgMjUzLCAxMDEsIDUzLCAyMjYsIDQ1LCA1LCAyNTMsIAotICAgIDEwMCwgNTMsIDIyNiwgNDUsIDUsIDIxMywgMTMwLCA1MywgMjI2LCA0NSwgNSwgMjQ4LCAxNDUsIDUzLCAyMjYsIDQ1LCA1LCAKLSAgICAyNDgsIDE0NCwgNTMsIDIyNiwgNDUsIDUsIDI1MiwgODgsIDUzLCAyMjYsIDQ1LCA1LCAyNTEsIDE0LCA1MywgMjI2LCA0NSwgCi0gICAgMjEzLCAxOTYsIDI0NywgMTI0LCA1MywgMjI2LCA0NSwgNTAsIDExNiwgNTMsIDIyNiwgNDUsIDUwLCAxMDksIDUzLCAyMjYsIAotICAgIDQ1LCA1MCwgMjE3LCAyMDAsIDUzLCAyMjYsIDQ1LCA1MCwgMjE2LCAzOCwgNTMsIDIyNiwgNDUsIDUwLCAyNDAsIDIwMCwgCi0gICAgMTcxLCA2LCAxLCAxODQsIDcyLCAxNzEsIDYsIDEsIDE4NCwgNzQsIDE3MSwgNiwgMSwgMTg0LCA2MSwgMTcxLCA2LCAxLCAKLSAgICAxODQsIDI1NCwgMTE0LCAxNzEsIDYsIDEsIDE4NCwgNzUsIDE3MSwgNiwgMSwgMTg0LCAyMjcsIDQ5LCAxNzEsIDYsIDEsIAotICAgIDIyMCwgMTc1LCA3MiwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNzQsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDYxLCAxNzEsIDYsIAotICAgIDEsIDIyMCwgMTc1LCAyNTQsIDExNCwgMTcxLCA2LCAxLCAyMjAsIDE3NSwgNzUsIDE3MSwgNiwgMSwgMjIwLCAxNzUsIDIyNywgCi0gICAgNDksIDE3MSwgNiwgMSwgMjUzLCA4MywgMTcxLCA2LCAxLCAyMjYsIDI0MCwgMTcxLCA2LCAxLCAyMTMsIDE4MywgMTcxLCA2LCAKLSAgICAxLCAyMTMsIDM1LCAxNzEsIDYsIDEsIDI0MiwgNDEsIDE3MSwgNiwgMSwgMjI2LCA4NiwgMTcxLCA2LCAxLCAyNTEsIDI0MiwgCi0gICAgMTcxLCA2LCAxLCAyMTcsIDIxOSwgMTcxLCA2LCAxLCAyNDgsIDI4LCAxNzEsIDYsIDEsIDI1MCwgNjQsIDE3MSwgNiwgMSwgCi0gICAgMjM1LCAxMjUsIDE3MSwgNiwgMSwgMjM0LCAxOTUsIDE3MSwgNiwgMSwgMjQzLCA1OSwgMTcxLCA2LCAxLCAyNDUsIDE1OSwgCi0gICAgMTcxLCA2LCAxLCAyMTQsIDIyNywgMTcxLCA2LCAxLCAyNDUsIDI1LCAxNzEsIDYsIDEsIDIxNywgMTQ3LCAxNzEsIDYsIDEsIAotICAgIDI0NSwgNDUsIDE3MSwgNiwgMSwgMjEyLCA4NSwgMTcxLCA2LCAxLCAyNDUsIDQwLCAxNzEsIDYsIDEsIDIxMiwgNjYsIDE3MSwgCi0gICAgNiwgMSwgMjQ1LCA1NSwgMTcxLCA2LCAxLCAyNDUsIDEzMSwgMTcxLCA2LCAxLCAyNDUsIDExNywgMTcxLCA2LCAxLCAyNDUsIAotICAgIDEwOCwgMTcxLCA2LCAxLCAyNDUsIDk2LCAxNzEsIDYsIDEsIDIyNywgODUsIDE3MSwgNiwgMSwgMjQ1LCA1LCAxNzEsIDMsIAotICAgIDEsIDE4NCwgNzIsIDE3MSwgMywgMSwgMTg0LCA3NCwgMTcxLCAzLCAxLCAxODQsIDYxLCAxNzEsIDMsIDEsIDE4NCwgMjU0LCAKLSAgICAxMTQsIDE3MSwgMywgMSwgMTg0LCA3NSwgMTcxLCAzLCAxLCAxODQsIDIyNywgNDksIDE3MSwgMywgMSwgMjIwLCAxNzUsIAotICAgIDcyLCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA3NCwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgNjEsIDE3MSwgMywgMSwgMjIwLCAKLSAgICAxNzUsIDI1NCwgMTE0LCAxNzEsIDMsIDEsIDIyMCwgMTc1LCA3NSwgMTcxLCAzLCAxLCAyMjAsIDE3NSwgMjI3LCA0OSwgCi0gICAgMTcxLCAzLCAxLCAyNTMsIDgzLCAxNzEsIDMsIDEsIDIyNiwgMjQwLCAxNzEsIDMsIDEsIDIxMywgMTgzLCAxNzEsIDMsIDEsIAotICAgIDIxMywgMzUsIDE3MSwgMywgMSwgMjQyLCA0MSwgMTcxLCAzLCAxLCAyMjYsIDg2LCAxNzEsIDMsIDEsIDI1MSwgMjQyLCAKLSAgICAxNzEsIDMsIDEsIDIxNywgMjE5LCAxNzEsIDMsIDEsIDI0OCwgMjgsIDE3MSwgMywgMSwgMjUwLCA2NCwgMTcxLCAzLCAxLCAKLSAgICAyMzUsIDEyNSwgMTcxLCAzLCAxLCAyMzQsIDE5NSwgMTcxLCAzLCAxLCAyNDMsIDU5LCAxNzEsIDMsIDEsIDI0NSwgMTU5LCAKLSAgICAxNzEsIDMsIDEsIDIxNCwgMjI3LCAxNzEsIDMsIDEsIDI0NSwgMjUsIDE3MSwgMywgMSwgMjE3LCAxNDcsIDE3MSwgMywgMSwgCi0gICAgMjQ1LCA0NSwgMTcxLCAzLCAxLCAyMTIsIDg1LCAxNzEsIDMsIDEsIDI0NSwgNDAsIDE3MSwgMywgMSwgMjEyLCA2NiwgMTcxLCAKLSAgICAzLCAxLCAyNDUsIDU1LCAxNzEsIDMsIDEsIDI0NSwgMTMxLCAxNzEsIDMsIDEsIDI0NSwgMTE3LCAxNzEsIDMsIDEsIDI0NSwgCi0gICAgMTA4LCAxNzEsIDMsIDEsIDI0NSwgOTYsIDE3MSwgMywgMSwgMjI3LCA4NSwgMTcxLCAzLCAxLCAyNDUsIDUsIDIyMCwgMjQ5LCAKLSAgICAxLCAyMjYsIDg0LCAyMjAsIDI0OSwgMSwgMjE2LCAyMTgsIDIyMCwgMjQ5LCAxLCAyMzQsIDEwMCwgMjIwLCAyNDksIDEsIAotICAgIDI0NCwgMTE2LCAyMjAsIDI0OSwgMSwgMjE3LCAxMjUsIDIyMCwgMjQ5LCAxLCAyMTksIDI0MiwgMjIwLCAyNDksIDEsIDIxOCwgCi0gICAgMjE0LCAyMjAsIDI0OSwgMSwgMjQ5LCAyNTQsIDIyMCwgMjQ5LCAxLCAyMTMsIDM3LCAyMjAsIDI0OSwgMSwgMjQwLCAxOTksIAotICAgIDIyMCwgMjQ5LCAxLCAyNTEsIDE4MywgMjIwLCAyNDksIDEsIDI0OCwgNDAsIDIyMCwgMjQ5LCAxLCAyNDMsIDk2LCAyMjAsIAotICAgIDI0OSwgMSwgMjE0LCAxMDQsIDIyMCwgMjQ5LCAxLCAyMTcsIDEyOSwgMjIwLCAyNDksIDEsIDIxMiwgMTQsIDIyMCwgMjQ5LCAKLSAgICAxLCAyMzEsIDE1NCwgMjIwLCAyNDksIDEsIDIzNSwgNTIsIDIyMCwgMjQ5LCAxLCAyMTMsIDIxMiwgMjIwLCAyNDksIDEsIAotICAgIDI0MiwgMjksIDIyMCwgMjQ5LCAxLCAyMzIsIDE5NSwgMjIwLCAyNDksIDEsIDIzMSwgMiwgMjIwLCAyNDksIDEsIDIzNiwgCi0gICAgMzUsIDIyMCwgMjQ5LCAxLCAyNDUsIDE1OCwgMjIwLCAyNDksIDEsIDI1MywgMTQ2LCAyMjAsIDI0OSwgMSwgMjU0LCAxNTIsIAotICAgIDIyMCwgMjQ5LCAxLCAyMjcsIDYyLCAyMjAsIDI0OSwgMSwgMjEzLCAxOTksIDIyMCwgMjQ5LCAxLCAyMjYsIDI1NCwgMjIwLCAKLSAgICAyNDksIDEsIDI1NCwgMTE0LCAyMjAsIDI0OSwgMSwgMjIzLCAxMDksIDIyMCwgMjQ5LCAxLCAyMjgsIDUwLCAyMjAsIDI0OSwgCi0gICAgMSwgMjQ1LCAxNzMsIDIyMCwgMjQ5LCAxLCAyNTQsIDExOSwgMjIwLCAyNDksIDEsIDI0MCwgMTA0LCAyMjAsIDI0OSwgMSwgCi0gICAgMjE1LCAxMzQsIDIyMCwgMjQ5LCAxLCAyMjcsIDExOCwgMjIwLCAyNDksIDEsIDIyNywgNDIsIDIyMCwgMjQ5LCAxLCAyMjcsIAotICAgIDg0LCAyMjAsIDI0OSwgMSwgMjUzLCA4NiwgMjIwLCAyNDksIDEsIDI1MywgMTg5LCAyMjAsIDI0OSwgMSwgMjI3LCAyNCwgCi0gICAgMjIwLCAyNDksIDEsIDI1NCwgMTAwLCAyMjAsIDI0OSwgMSwgMjQ1LCA0OSwgMjIwLCAyNDksIDEsIDI1MywgMTY4LCAyMjAsIAotICAgIDI0OSwgMSwgMjQ1LCAxODMsIDIyMCwgMjQ5LCAxLCAyNDAsIDExMCwgMjIwLCAyNDksIDEsIDIxMywgNCwgMjI3LCA5LCAxLCAKLSAgICAyNTQsIDc4LCAyMjcsIDksIDEsIDI1MiwgMTA3LCAyMjcsIDksIDEsIDIxOCwgNTIsIDIyNywgOSwgMSwgMjM1LCAxMzksIAotICAgIDIyNywgOSwgMSwgMjEzLCAxNTMsIDIyNywgOSwgMSwgMjM0LCAxMzgsIDIyNywgOSwgMSwgMjQ4LCAyNywgMjI3LCA5LCAxLCAKLSAgICAyMDMsIDIyNywgOSwgMSwgMjIyLCAyMDIsIDIyNywgOSwgMSwgMjIwLCAyMDYsIDIyNywgOSwgMSwgMjQ3LCAyMzIsIDIyNywgCi0gICAgOSwgMSwgMjUwLCAxNDgsIDIyNywgOSwgMSwgMjQzLCAxMTAsIDIyNywgOSwgMSwgMjQ0LCAxNjQsIDIyNywgOSwgMSwgMjI0LCAKLSAgICAyMzAsIDIyNywgOSwgMSwgMjM1LCAxMywgMjI3LCA5LCAxLCAyMzMsIDE1MiwgMjI3LCA5LCAxLCAyMzEsIDEzLCAyMjcsIDksIAotICAgIDEsIDIyOCwgMzUsIDIyNywgOSwgMSwgMjE0LCAxNCwgMjI3LCA5LCAxLCAxNTksIDIyNywgOSwgMSwgMTg2LCAyMjcsIDksIAotICAgIDEsIDYxLCAyMjcsIDksIDEsIDc0LCAyMjcsIDksIDEsIDcyLCAyMjcsIDksIDEsIDc1LCAyMjcsIDksIDEsIDY5LCAyMjcsIAotICAgIDksIDEsIDI1NCwgMjMyLCAyMjcsIDksIDEsIDI0NSwgMTY1LCAyMjcsIDksIDEsIDIyNywgNDksIDIyNywgOSwgMjEsIDIxMiwgCi0gICAgNzksIDIyNywgOSwgMjEsIDExNiwgMjI3LCA5LCAyMSwgMTA5LCAyMjcsIDksIDIxLCAxNjYsIDIyNywgOSwgMjEsIDE2MywgCi0gICAgMjI3LCA5LCAyMSwgMTgwLCAyMjcsIDksIDIxLCAxODksIDIyNywgOSwgMjEsIDE5OCwgMjI3LCA5LCAyMSwgMTk1LCAyMjcsIAotICAgIDksIDIxLCAyMDAsIDI0OSwgMTAsIDQsIDYxLCAyNDksIDEwLCA0LCA3NCwgMjQ5LCAxMCwgNCwgNzIsIDI0OSwgMTAsIDQsIAotICAgIDc1LCAyNDksIDEwLCA0LCA2OSwgMjQ5LCAxMCwgNCwgMjM1LCAxMzksIDI0OSwgMTAsIDQsIDIzNSwgNzEsIDI0OSwgMTAsIAotICAgIDQsIDE4MSwgMjQ5LCAxMCwgNCwgMjM0LCAxODgsIDI0OSwgMTAsIDQsIDIzNCwgMTAxLCAyNDksIDEwLCA0LCAyMzQsIDM3LCAKLSAgICAyNDksIDEwLCA0LCAyMzMsIDIzOCwgMjQ5LCAxMCwgNCwgMjMzLCAxNTcsIDI0OSwgMTAsIDQsIDIzMywgODIsIDI0OSwgMTAsIAotICAgIDQsIDIzMywgMTMsIDI0OSwgMTAsIDQsIDIzMiwgMjA4LCAyNDksIDEwLCA0LCAyMzIsIDE1NiwgMjQ5LCAxMCwgNCwgMTg4LCAKLSAgICAyNDksIDEwLCA0LCAyMzEsIDE1NiwgMjQ5LCAxMCwgNCwgMjMxLCA0MiwgMjQ5LCAxMCwgNCwgMjMwLCAyMzEsIDI0OSwgMTAsIAotICAgIDQsIDIzMCwgMTcyLCAyNDksIDEwLCA0LCAyMDUsIDI0OSwgMTAsIDQsIDIyOSwgMTg3LCAyNDksIDEwLCA0LCAyMjksIDY0LCAKLSAgICAyNDksIDEwLCA0LCAyMjgsIDE4NSwgMjQ5LCAxMCwgNCwgMjI4LCA5MiwgMjQ5LCAxMCwgNCwgMTkzLCAyNDksIDEwLCA0LCAKLSAgICAyMjYsIDk2LCAyNDksIDEwLCA0LCAyMjUsIDI0MCwgMjQ5LCAxMCwgNCwgMjI1LCAxNTAsIDI0OSwgMTAsIDQsIDIyNSwgMzUsIAotICAgIDI0OSwgMTAsIDQsIDIwMywgMjQ5LCAxMCwgNCwgMjI0LCAyMSwgMjQ5LCAxMCwgNCwgMjIzLCAxODgsIDI0OSwgMTAsIDQsIAotICAgIDIyMywgMTEyLCAyNDksIDEwLCA0LCAyMjMsIDUxLCAyNDksIDEwLCA0LCAyMjIsIDIwMiwgMjQ5LCAxMCwgNCwgMjIyLCAKLSAgICAxMDAsIDI0OSwgMTAsIDQsIDIyMCwgMTE3LCAyNDksIDEwLCA0LCAyMTksIDI0MiwgMjQ5LCAxMCwgNCwgMjE5LCAyNywgCi0gICAgMjQ5LCAxMCwgNCwgMjE4LCA1MiwgMjQ5LCAxMCwgNCwgMjE3LCAyMjksIDI0OSwgMTAsIDQsIDIxNywgNzEsIDI0OSwgMTAsIAotICAgIDQsIDEwOCwgMjQ5LCAxMCwgNCwgMjE2LCA4MiwgMjQ5LCAxMCwgNCwgMjE0LCA0OSwgMjQ5LCAxMCwgNCwgMjE0LCA2LCAKLSAgICAyNDksIDEwLCA0LCAyMTMsIDIzNSwgMjQ5LCAxMCwgNCwgMjEzLCAyMTQsIDI0OSwgMTAsIDQsIDIxMywgMTUzLCAyNDksIAotICAgIDEwLCA0LCAyMTMsIDE1MCwgMjQ5LCAxMCwgNCwgMjEyLCAxMDksIDI0OSwgMTAsIDQsIDIxMiwgMTYsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMSwgMjU0LCA3NiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNTEsIDIwMiwgMjM1LCAyNTMsIDI1MywgCi0gICAgMTk3LCAxLCAyNDIsIDE3NywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyNDgsIDEzMywgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAKLSAgICAyNDEsIDIyMiwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMTQsIDE0LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIxMiwgOTAsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjQxLCAxODAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE3LCAxNzksIDIzNSwgCi0gICAgMjUzLCAyNTMsIDE5NywgMSwgMjEyLCAyMjMsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjM0LCAyMzAsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMSwgMjMzLCAxMTcsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjMxLCAxMjksIDIzNSwgMjUzLCAyNTMsIAotICAgIDE5NywgMSwgMjI4LCA1MCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAyMjIsIDE2NCwgMjM1LCAyNTMsIDI1MywgMTk3LCAxLCAKLSAgICAyNTMsIDc4LCAyMzUsIDI1MywgMjUzLCAxOTcsIDEsIDIyNiwgOTYsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIyLCAxOTMsIAotICAgIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjI0LCAxNzksIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjIzLCAyMTksIDIzNSwgCi0gICAgMjUzLCAyNTMsIDE5NywgMSwgMjIwLCAyMDAsIDIzNSwgMjUzLCAyNTMsIDE5NywgMSwgMjE3LCAyNDMsIDIzNSwgMjUzLCAKLSAgICAyNTMsIDE5NywgMjIyLCA5MiwgNTIsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDExNiwgMjM1LCAyNTMsIDI1MywgMTk3LCAKLSAgICA1MCwgMTA5LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxNjYsIDIzNSwgMjUzLCAyNTMsIDE5NywgNTAsIDIxNywgMjAwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTYsIDM4LCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMjIsIDI0MCwgMjAwLCAKLSAgICAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAxMjIsIDIxNywgMTAwLCAyMzUsIDI1MywgMjUzLCAxOTcsIDUwLCAyMTcsIDIwMSwgCi0gICAgMjE3LCAxMDAsIDIyNSwgMjUxLCAxLCAyNTQsIDc0LCAyMjUsIDI1MSwgMSwgMjUxLCAyMDUsIDIyNSwgMjUxLCAxLCAyNDMsIAotICAgIDg1LCAyMjUsIDI1MSwgMSwgMjQ4LCA3LCAyMjUsIDI1MSwgMSwgMjQxLCAyMjIsIDIyNSwgMjUxLCAxLCAyMTQsIDIxLCAKLSAgICAyMjUsIDI1MSwgMSwgMjEyLCAxMDMsIDIyNSwgMjUxLCAxLCAyNDEsIDE4MiwgMjI1LCAyNTEsIDEsIDIxNywgMTgzLCAyMjUsIAotICAgIDI1MSwgMSwgMjEyLCAyMjQsIDIyNSwgMjUxLCAxLCAyMzQsIDI1NCwgMjI1LCAyNTEsIDEsIDIzMywgMTIzLCAyMjUsIDI1MSwgCi0gICAgMSwgMjMxLCAxMjksIDIyNSwgMjUxLCAxLCAyMjgsIDUwLCAyMjUsIDI1MSwgMSwgMjIxLCA2NCwgMjI1LCAyNTEsIDEsIAotICAgIDI1NCwgMTAzLCAyMjUsIDI1MSwgMSwgMjI2LCA5NiwgMjI1LCAyNTEsIDEsIDIyMiwgMTk0LCAyMjUsIDI1MSwgMSwgMjI0LCAKLSAgICAxODQsIDIyNSwgMjUxLCAxLCAyMjMsIDkxLCAyMjUsIDI1MSwgMSwgMjIwLCAyMDAsIDIyNSwgMjUxLCAxLCAyMTcsIDI0OCwgCi0gICAgMjI1LCAyNTEsIDUwLCAxMTYsIDIyNSwgMjUxLCA1MCwgMjE3LCAyMDAsIDIyNSwgMjUxLCA1MCwgMjE2LCAzOCwgMjI1LCAKLSAgICAyNTEsIDUwLCAxMjIsIDI0MCwgMjAwLCAyMjUsIDI1MSwgNTAsIDEwOSwgMjI1LCAyNTEsIDUwLCAxNjYsIDIyNSwgMjUxLCAKLSAgICAyMTMsIDE5NiwgMjIxLCA1NywgMjMyLCAxMTksIDEsIDYxLCAyMzIsIDExOSwgMSwgMjUzLCA3NCwgMjMyLCAxMTksIDEsIAotICAgIDI0MywgMTc3LCAyMzIsIDExOSwgMSwgMjQ5LCAzLCAyMzIsIDExOSwgMSwgNzQsIDIzMiwgMTE5LCAxLCAyMTUsIDc5LCAKLSAgICAyMzIsIDExOSwgMSwgNzIsIDIzMiwgMTE5LCAxLCAyMTMsIDEwNSwgMjMyLCAxMTksIDEsIDIzNSwgMjcsIDIzMiwgMTE5LCAKLSAgICAxLCAxNTAsIDIzMiwgMTE5LCAxLCAxODMsIDIzMiwgMTE5LCAxLCAyMDQsIDIzMiwgMTE5LCAxLCA3NSwgMjMyLCAxMTksIDEsIAotICAgIDE0OSwgMjMyLCAxMTksIDEsIDIxOSwgMTU4LCAyMzIsIDExOSwgMSwgMjE4LCA5OSwgMjMyLCAxMTksIDEsIDY5LCAyMzIsIAotICAgIDExOSwgMSwgMjQ0LCAyMzAsIDIzMiwgMTE5LCAxLCAyMjQsIDI0MCwgMjMyLCAxMTksIDEsIDE5NywgMjMyLCAxMTksIDEsIAotICAgIDIxNiwgMTE4LCAyMzIsIDExOSwgMSwgMjU0LCAzMiwgMjMyLCAxMTksIDEsIDI0NSwgMTA4LCAyMzIsIDExOSwgMSwgMjMyLCAKLSAgICAxMjEsIDIzMiwgMTE5LCAxLCAyMjgsIDE5OSwgMjMyLCAxMTksIDEsIDI1MCwgMjUyLCAyMzIsIDExOSwgMjE2LCAxODAsIAotICAgIDc3LCAyMzQsIDEyNiwgMSwgNjEsIDIzNCwgMTI2LCAzMCwgNSwgNzIsIDIzNCwgMTI2LCAzMCwgNSwgNjksIDIzNCwgMTI2LCAKLSAgICAzMCwgNSwgMTYxLCAxNDksIDIzNCwgMTI2LCAzMCwgNSwgNzQsIDIzNCwgMTI2LCAzMCwgNSwgNzUsIDIzNCwgMTI2LCAzMCwgCi0gICAgMjMzLCA0NywgNzcsIDIzNCwgMTI2LCA1LCA1MSwgMjIzLCAxMzEsIDU1LCAyMzQsIDEyNiwgNSwgMjUzLCAyNDIsIDIzNCwgCi0gICAgMTI2LCA1LCAyMTQsIDEyOCwgMjM0LCAxMjYsIDEsIDE4MSwgMjM0LCAxMjYsIDEsIDIzNCwgMTM4LCAyMzQsIDEyNiwgMSwgCi0gICAgMjQzLCAxMTAsIDIzNCwgMTI2LCAxLCAyNDIsIDIyNSwgMjM0LCAxMjYsIDEsIDI1MCwgMjE5LCAyMzQsIDEyNiwgMSwgMjUwLCAKLSAgICA5MiwgMjM0LCAxMjYsIDEsIDIzNSwgMTM5LCAyMzQsIDEyNiwgMSwgMjI4LCAyMywgMjM0LCAxMjYsIDEsIDIxNiwgMTE1LCAKLSAgICAyMzQsIDEyNiwgMSwgMjE2LCAxMDUsIDIzNCwgMTI2LCAxLCAyNDgsIDg2LCAyMzQsIDEyNiwgMSwgMjQ4LCA3MCwgMjM0LCAKLSAgICAxMjYsIDEsIDIyOCwgMTk4LCAyMzQsIDEyNiwgMSwgMjE4LCA1MiwgMjM0LCAxMjYsIDEsIDIxNywgMTYxLCAyMzQsIDEyNiwgCi0gICAgMSwgMjQ4LCAxNjQsIDIzNCwgMTI2LCAxLCAyNDcsIDIzMiwgMjM0LCAxMjYsIDEsIDIwNSwgMjM0LCAxMjYsIDEsIDE5MywgCi0gICAgMjM0LCAxMjYsIDEsIDIyNiwgMjMsIDIzNCwgMTI2LCAxLCAyNTIsIDEwNywgMjM0LCAxMjYsIDEsIDI1MSwgMTk1LCAyMzQsIAotICAgIDEyNiwgMSwgMTg4LCAyMzQsIDEyNiwgMSwgMTg2LCAyMzQsIDEyNiwgMSwgMjAzLCAyMzQsIDEyNiwgMSwgMjMzLCAxNTcsIAotICAgIDIzNCwgMTI2LCAxLCAyMTUsIDEsIDIzNCwgMTI2LCAxLCAyMjEsIDI0LCAyMzQsIDEyNiwgMSwgMjE5LCAxNTcsIDIzNCwgCi0gICAgMTI2LCAxLCAyMjIsIDIwMiwgMjM0LCAxMjYsIDEsIDIxMiwgMTA5LCAyMzQsIDEyNiwgMSwgMTU5LCAyMzQsIDEyNiwgMSwgCi0gICAgMjM0LCA1NSwgMjM0LCAxMjYsIDEsIDIxNiwgODcsIDIzNCwgMTI2LCA1LCAyNTIsIDYwLCA0OSwgMjM0LCAxMjYsIDUsIAotICAgIDI1MCwgMTU0LCAyMzQsIDEyNiwgNSwgNjIsIDU1LCAyMzQsIDEyNiwgMjE0LCAxMzMsIDIzNCwgMTI2LCAyMSwgMTE2LCAKLSAgICAyMzQsIDEyNiwgMjEsIDEwOSwgMjM0LCAxMjYsIDIxLCAxNjYsIDIzNCwgMTI2LCAyMSwgMTYzLCAyMzQsIDEyNiwgNTAsIAotICAgIDIxNywgMjAwLCAyMzQsIDEyNiwgNTAsIDIxNiwgMzgsIDIzNCwgMTI2LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjM0LCAxMjYsIAotICAgIDUwLCAxMjIsIDIxNywgMTAwLCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ3LCA3NCwgMjM0LCAxMjYsIDIyNSwgMjcsIDMsIDI0OSwgCi0gICAgMjI4LCAyMzQsIDEyNiwgMjI1LCAyNywgMjQ5LCAyMjgsIDIzNCwgMTI2LCAyMjUsIDI3LCAyNDksIDc3LCAxMzQsIDIzNCwgCi0gICAgMTI2LCAyMjUsIDI3LCAyMzEsIDI0MywgMjM0LCAxMjYsIDIyNSwgMjcsIDIzMiwgMTcwLCAyMzQsIDEyNiwgMjI1LCAyNywgCi0gICAgMjQ4LCAxMjMsIDIzNCwgMTI2LCAyMjUsIDI3LCA1MSwgMjQ4LCAxMjMsIDIzNCwgMTI2LCAyMjUsIDI3LCAyMzIsIDIzNiwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQxLCAyMjIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzMywgMTE3LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDEsIDE4MCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjMxLCAxMjksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyNCwgMTc5LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTQsIDE0LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjAsIDIwMCwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIzLCAyMTksIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI1MSwgMjAyLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDI0MywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxNDIsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIzNCwgMjMwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMjgsIDUwLCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMzQsIDEyMiwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjIyLCAxOTMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIyMiwgMTY0LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDQsIDEyMywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjU0LCA3OCwgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjUzLCA3NywgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQ3LCAyMzAsIAotICAgIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDI0MiwgMTc3LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDgsIDEzMywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjQyLCAyMTQsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTc5LCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTIsIDg5LCA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyNDcsIDIyNywgCi0gICAgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgMSwgMjEyLCAyMjMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEsIDIxNywgMTUwLCAKLSAgICA1MywgMjE5LCAyMTUsIDI1MywgMjA4LCAxLCAyMTcsIDEzMSwgNTMsIDIxOSwgMjE1LCAyNTMsIDIwOCwgNTAsIDExNiwgNTMsIAotICAgIDIxOSwgMjE1LCAyNTMsIDIwOCwgNTAsIDI0NCwgODMsIDUzLCAyMTksIDIxNSwgMjUzLCAyMDgsIDEyOCwgMjM1LCAyMzUsIAotICAgIDI1MywgODgsIDEsIDYxLCAyNTMsIDg4LCAxLCAyNTQsIDIzMiwgMjUzLCA4OCwgMSwgMjUzLCAyNDAsIDI1MywgODgsIDEsIAotICAgIDI1NCwgMTkxLCAyNTMsIDg4LCAxLCAyNTQsIDMyLCAyNTMsIDg4LCAxLCAyNTQsIDE5MiwgMjUzLCA4OCwgMSwgMjU0LCAKLSAgICAxNDgsIDI1MywgODgsIDEsIDI1NCwgMTQ0LCAyNTMsIDg4LCAxLCA3NCwgMjUzLCA4OCwgMSwgMjQ1LCAxNjUsIDI1MywgODgsIAotICAgIDEsIDc1LCAyNTMsIDg4LCAxLCAyMjcsIDQ5LCAyNTMsIDg4LCAxLCA3MiwgMjUzLCA4OCwgMSwgMjM2LCAyOCwgMjUzLCA4OCwgCi0gICAgMSwgNjksIDI1MywgODgsIDEsIDIxNSwgOTIsIDI1MywgODgsIDEsIDIzNCwgMTg4LCAyNTMsIDg4LCAxLCAyMTMsIDE1MCwgCi0gICAgMjUzLCA4OCwgMSwgMjEzLCAxMTYsIDI1MywgODgsIDEsIDIxMywgMTI1LCAyNTMsIDg4LCAxLCAyNDMsIDM4LCAyNTMsIDg4LCAKLSAgICAxLCAyNDMsIDAsIDI1MywgODgsIDEsIDI0MiwgMjEyLCAyNTMsIDg4LCAxLCAyNTAsIDEyNCwgMjUzLCA4OCwgMSwgMjM1LCAKLSAgICAxMjcsIDI1MywgODgsIDEsIDIxNywgMjI5LCAyNTMsIDg4LCAxLCAyMTcsIDE0OCwgMjUzLCA4OCwgMSwgMjQ4LCA0MSwgCi0gICAgMjUzLCA4OCwgMSwgMjQ3LCAyMjUsIDI1MywgODgsIDEsIDIxNiwgMTEyLCAyNTMsIDg4LCAxLCAyMjYsIDk2LCAyNTMsIDg4LCAKLSAgICAxLCAyNDQsIDEyMywgMjUzLCA4OCwgMSwgMjUxLCAyNTEsIDI1MywgODgsIDEsIDI1MSwgMTkyLCAyNTMsIDg4LCAxLCAyMjksIAotICAgIDE0OCwgMjUzLCA4OCwgMSwgMjI5LCA3MCwgMjUzLCA4OCwgMSwgMjI5LCA3MSwgMjUzLCA4OCwgMSwgMjI5LCAxODcsIDI1MywgCi0gICAgODgsIDEsIDIyOCwgMTcsIDI1MywgODgsIDEsIDIyOCwgMTk3LCAyNTMsIDg4LCAxLCAyMzEsIDE1NiwgMjUzLCA4OCwgMSwgCi0gICAgMjQxLCAxMDIsIDI1MywgODgsIDEsIDIxMiwgMTU5LCAyNTMsIDg4LCAxLCAyMTMsIDM4LCAyNTMsIDg4LCAxLCAyMTQsIAotICAgIDIzMiwgMjUzLCA4OCwgMSwgMjI0LCAyMSwgMjUzLCA4OCwgMSwgMjMzLCA4MiwgMjUzLCA4OCwgMSwgMjIyLCAxMDAsIDI1MywgCi0gICAgODgsIDEsIDIxMiwgODcsIDI1MywgODgsIDEsIDIyMCwgMjQzLCAyNTMsIDg4LCAxLCAyMTIsIDY3LCAyNTMsIDg4LCAxLCAKLSAgICAyMjAsIDEyNCwgMjUzLCA4OCwgMSwgMjE5LCAxMjksIDI1MywgODgsIDEsIDI0MSwgMjIyLCAyNTMsIDg4LCAyNTQsIDE4MSwgCi0gICAgNzcsIDIxNywgMzIsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIDIyNSwgMjYsIDMsIDExNywgMTc2LCAxMTAsIDEyMiwgNjIsIAotICAgIDIyNSwgMjYsIDIzMywgMTA4LCAxMTcsIDE3NiwgMTEwLCAxMjIsIDYyLCAyMjUsIDI2LCAyMzMsIDEwOCwgMTIyLCA2MiwgCi0gICAgMTEwLCAxMTcsIDE3NiwgMjI1LCAyNiwgMjMzLCAxMDgsIDExNywgMjIzLCAxMjksIDExMCwgMTIyLCAyMjMsIDEzMSwgMjI1LCAKLSAgICAyNiwgMjMzLCAxMDgsIDEyMiwgMjIzLCAxMzEsIDExMCwgMTE3LCAyMjMsIDEyOSwgMjI1LCAyNiwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCAxLCAyNTQsIDc2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI1MSwgMjAyLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIAotICAgIDI0MiwgMTc3LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI0OCwgMTMzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI0MSwgCi0gICAgMjIyLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIxNCwgMTQsIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjEyLCA5MCwgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTI2LCAxLCAyNDEsIDE4MCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTcsIDE3OSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCAxLCAyMTIsIDIyMywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMzQsIDIzMCwgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCAxLCAyMzMsIDExNywgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMzEsIDEyOSwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAKLSAgICAyMjgsIDUwLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDIyMiwgMTY0LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDEsIDI1MywgNzgsIAotICAgIDIzNSwgMjE1LCAyMjYsIDEyNiwgMSwgMjI2LCA5NiwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjIsIDE5MywgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTI2LCAxLCAyMjQsIDE3OSwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMjMsIDIxOSwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCAxLCAyMjAsIDIwMCwgMjM1LCAyMTUsIDIyNiwgMTI2LCAxLCAyMTcsIDI0MywgMjM1LCAyMTUsIDIyNiwgCi0gICAgMTI2LCA1MCwgMTE2LCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAxMDksIDIzNSwgMjE1LCAyMjYsIDEyNiwgNTAsIDE2NiwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTYzLCAyMzUsIDIxNSwgMjI2LCAxMjYsIDUwLCAyMTcsIDIwMCwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCA1MCwgMjE2LCAzOCwgMjM1LCAyMTUsIDIyNiwgMTI2LCA1MCwgMTIyLCAyNDAsIDIwMCwgMjM1LCAyMTUsIAotICAgIDIyNiwgMTI2LCA1MCwgMTIyLCAyMTcsIDEwMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNTQsIDc2LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDEsIDI1MSwgMjAyLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MiwgMTc3LCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxOTgsIDEsIDI0OCwgMTMzLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDI0MSwgMjIyLCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIAotICAgIDIxNCwgMTMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjEyLCA5MCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyNDEsIDE4MCwgCi0gICAgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTcsIDE3OSwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMTIsIDIyMywgMjM1LCAKLSAgICAyMTUsIDIyNiwgMTk4LCAxLCAyMzQsIDIzMCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMzMsIDExNywgMjM1LCAyMTUsIAotICAgIDIyNiwgMTk4LCAxLCAyMzEsIDEyOCwgMjM1LCAyMTUsIDIyNiwgMTk4LCAxLCAyMjgsIDUwLCAyMzUsIDIxNSwgMjI2LCAKLSAgICAxOTgsIDEsIDIyMiwgMTY0LCAyMzUsIDIxNSwgMjI2LCAxOTgsIDEsIDIyNiwgOTYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgCi0gICAgMjIyLCAxOTMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjIwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgMSwgMjE3LCAKLSAgICAyNDMsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDExNiwgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgMTA5LCAyMzUsIDIxNSwgCi0gICAgMjI2LCAxOTgsIDUwLCAxNjYsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDE2MywgMjM1LCAyMTUsIDIyNiwgMTk4LCA1MCwgCi0gICAgMjE3LCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDIxNiwgMzgsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEyMiwgCi0gICAgMjQwLCAyMDAsIDIzNSwgMjE1LCAyMjYsIDE5OCwgNTAsIDEyMiwgMjE3LCAxMDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDYxLCAKLSAgICA1MywgMTg1LCAxLCAyMTMsIDI4LCA2MSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDgsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDcyLCA1MywgMTg1LCAxLCAyMTMsIDI4LCA3MiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgNzQsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDc1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMjcsIDk5LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyMjcsIDk5LCAKLSAgICA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE4NSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxODUsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI1NCwgMTQ3LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDE0NywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjU0LCAxMjEsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgMTIxLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0MiwgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjU0LCAxNDIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTYwLCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNTQsIDE2MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxNDYsIDUzLCAxODUsIDEsIDIyNywgMTYsIAotICAgIDI0NCwgMjM2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDQsIDIzNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCA4MywgCi0gICAgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCA4MywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjU0LCAxMjksIDUzLCAxODUsIDEsIAotICAgIDIxMywgMjgsIDI1NCwgMTI5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDE0MCwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgCi0gICAgMjU0LCAxNDAsIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgOTgsIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgOTgsIDUzLCAKLSAgICAxODUsIDEsIDIyNywgMTYsIDI1NCwgODYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1NCwgODYsIDUzLCAxODUsIDEsIDIyNywgCi0gICAgMTYsIDI1NCwgMTM5LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDExOSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAKLSAgICAxMTcsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMzIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTM3LCA1MywgCi0gICAgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEzNywgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA5MCwgNTMsIDE4NSwgMSwgMjEzLCAKLSAgICAyOCwgMjQ1LCA5MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCAxMDUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI0NSwgCi0gICAgMTA1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDc3LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIDc3LCA1MywgMTg1LCAKLSAgICAxLCAyMTMsIDI4LCAyNTQsIDI0LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNDUsIDk2LCA1MywgMTg1LCAxLCAyMTMsIDI4LCAKLSAgICAyNTQsIDEzNiwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjQ1LCA3MCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA0MSwgNTMsIAotICAgIDE4NSwgMSwgMjI3LCAxNiwgMjQwLCAxMDYsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI0NSwgMTcxLCA1MywgMTg1LCAxLCAKLSAgICAyMTMsIDI4LCAyNDUsIDE3MSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAyMTUsIDUzLCAxODUsIDEsIDIxMywgMjgsIAotICAgIDI1MywgMjE1LCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyMzUsIDE3OSwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjM1LCAxNzksIAotICAgIDUzLCAxODUsIDEsIDIyNywgMTYsIDIyNywgMjUsIDUzLCAxODUsIDEsIDIxMywgMjgsIDIyNywgMjUsIDUzLCAxODUsIDEsIAotICAgIDIyNywgMTYsIDI1MywgMjExLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNTMsIDIxMSwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgCi0gICAgMjU0LCAxMzUsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1MywgMTUyLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTQsIDEzMywgCi0gICAgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjUzLCAxNDYsIDUzLCAxODUsIDEsIDIxMywgMjgsIDI1MywgMTQ2LCA1MywgMTg1LCAxLCAKLSAgICAyMjcsIDE2LCAyNDUsIDQwLCA1MywgMTg1LCAxLCAyMTMsIDI4LCAyNDUsIDQwLCA1MywgMTg1LCAxLCAyMjcsIDE2LCAyNTMsIAotICAgIDEyMiwgNTMsIDE4NSwgMSwgMjEzLCAyOCwgMjUzLCAxMjIsIDUzLCAxODUsIDEsIDIyNywgMTYsIDI1NCwgMTMwLCA1MywgCi0gICAgMTg1LCAxLCAyMTMsIDI4LCAyNTQsIDEzMCwgNTMsIDE4NSwgMSwgMjI3LCAxNiwgMjI3LCA4LCA1MywgMTg1LCAxLCAyMjcsIAotICAgIDE2LCAyNTIsIDQ1LCAyMjMsIDM4LCAyMSwgMTE2LCAyMjMsIDM4LCAyMSwgMTA5LCAyMjMsIDM4LCAyMSwgMTY2LCAyMjMsIAotICAgIDM4LCAyMSwgMTYzLCAyMjMsIDM4LCAyMSwgMTgwLCAyMjMsIDM4LCAyMSwgMTg5LCAyMjMsIDM4LCAyMSwgMTk4LCAyMjMsIAotICAgIDM4LCAyMSwgMTk1LCAyMjMsIDM4LCAyMSwgMjAwLCAyMjMsIDM4LCA1MCwgMjE3LCAyMDAsIDIyMywgMzgsIDUwLCAyMTYsIAotICAgIDM4LCAyMjMsIDM4LCA1MCwgMjE3LCAxMTUsIDIyMywgMzgsIDUwLCAyNDMsIDI0MCwgMjIzLCAzOCwgNTAsIDI0NCwgODMsIAotICAgIDIyMywgMzgsIDUwLCAyMjAsIDM5LCAyMjMsIDM4LCA1MCwgMjIxLCAzNywgMjIzLCAzOCwgNTAsIDI0NSwgMTQxLCAyMjMsIAotICAgIDM4LCA1MCwgMjI5LCAyNiwgMjIzLCAzOCwgNTAsIDEyMiwgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAxMTcsIDI0MCwgMjAwLCAKLSAgICAyMjMsIDM4LCA1MCwgMTMzLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDI0MywgMjM3LCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIAotICAgIDI0NCwgNTAsIDI0MCwgMjAwLCAyMjMsIDM4LCA1MCwgMjIwLCA1MywgMjQwLCAyMDAsIDIyMywgMzgsIDUwLCAyMjEsIDQzLCAKLSAgICAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDI0NSwgMTUwLCAyNDAsIDIwMCwgMjIzLCAzOCwgNTAsIDIyOSwgMzEsIDI0MCwgCi0gICAgMjAwLCAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyNDIsIDksIDIyMywgMzgsIDI0MywgMjI4LCAxMjIsIDIyNCwgMTY2LCAKLSAgICAyMjMsIDM4LCAyNDMsIDIyOCwgMTIyLCAyMTcsIDEyMSwgMjIzLCAzOCwgMjQzLCAyMjgsIDExNywgMjE3LCAxMTksIDExMiwgCi0gICAgNSwgMjUwLCAxODcsIDExMiwgNSwgMjUzLCAyNDIsIDExMiwgNSwgMjE0LCAxMjgsIDExMiwgNSwgMjM1LCAxMDQsIDExMiwgCi0gICAgNSwgMjE1LCAxMzIsIDExMiwgMSwgNjEsIDExMiwgMSwgMjU0LCAyMzIsIDExMiwgMSwgNzIsIDExMiwgMSwgMjM2LCAyOCwgCi0gICAgMTEyLCAxLCA2OSwgMTEyLCAxLCAyMTUsIDkyLCAxMTIsIDEsIDE2MSwgMTQ5LCAxMTIsIDEsIDE2MSwgMjIzLCA4MiwgMTEyLCAKLSAgICAxLCAxNjEsIDE1MCwgMTEyLCAxLCAxNjEsIDIzMiwgMjE0LCAxMTIsIDEsIDc0LCAxMTIsIDEsIDI1NCwgMTA4LCAxMTIsIDEsIAotICAgIDc1LCAxMTIsIDEsIDI1MywgMTA4LCAxMTIsIDEsIDE4MSwgMTEyLCAxLCAyMzQsIDEzOCwgMTEyLCAxLCAyNDMsIDExMCwgCi0gICAgMTEyLCAxLCAyNDIsIDIyNSwgMTEyLCAxLCAyMjksIDE1OSwgMTEyLCAxLCAyNTAsIDIxOSwgMTEyLCAxLCAyNTAsIDkyLCAKLSAgICAxMTIsIDEsIDIzNSwgMTM5LCAxMTIsIDEsIDIzNSwgMTE1LCAxMTIsIDEsIDIyOCwgMjMsIDExMiwgMSwgMjE2LCAxMTUsIAotICAgIDExMiwgMSwgMjE2LCAxMDUsIDExMiwgMSwgMjQ4LCA4NiwgMTEyLCAxLCAyNDgsIDcwLCAxMTIsIDEsIDIyOCwgMTk4LCAKLSAgICAxMTIsIDEsIDIxOCwgNTIsIDExMiwgMSwgMjE3LCAxNjEsIDExMiwgMSwgMjQ4LCAxNjQsIDExMiwgMSwgMjQ3LCAyMzIsIAotICAgIDExMiwgMSwgMjA1LCAxMTIsIDEsIDE5MywgMTEyLCAxLCAyMjYsIDIzLCAxMTIsIDEsIDI1MiwgMTA3LCAxMTIsIDEsIDI1MSwgCi0gICAgMTk1LCAxMTIsIDEsIDE4OCwgMTEyLCAxLCAxODYsIDExMiwgMSwgMjAzLCAxMTIsIDEsIDIzMywgMTU3LCAxMTIsIDEsIAotICAgIDIxNSwgMSwgMTEyLCAxLCAyMjEsIDI0LCAxMTIsIDEsIDIxOSwgMTU3LCAxMTIsIDEsIDIyMiwgMjAyLCAxMTIsIDEsIDE1OSwgCi0gICAgMTEyLCAxLCAyMzIsIDIxMywgMTEyLCAxLCA1MywgMTc4LCAyMzIsIDIxMiwgMTEyLCAxLCA1MywgMTc4LCAyMjMsIDgxLCAKLSAgICAxMTIsIDEsIDUzLCAxNzgsIDIyOCwgMTg5LCAxMTIsIDMwLCA1LCAyNTQsIDIzMiwgMTEyLCAzMCwgNSwgMjUxLCAxOTMsIAotICAgIDI1NCwgMjMyLCAxMTIsIDMwLCA1LCA3MiwgMTEyLCAzMCwgNSwgMjM2LCAyOCwgMTEyLCAzMCwgNSwgNjksIDExMiwgMzAsIAotICAgIDUsIDIxNSwgOTIsIDExMiwgMzAsIDUsIDE2MSwgMTQ5LCAxMTIsIDMwLCA1LCAxNjEsIDIyMywgODIsIDExMiwgMzAsIDUsIAotICAgIDE2MSwgMTUwLCAxMTIsIDMwLCA1LCAxNjEsIDIzMiwgMjE0LCAxMTIsIDMwLCA1LCA3NCwgMTEyLCAzMCwgNSwgMjU0LCAKLSAgICAxMDgsIDExMiwgMzAsIDUsIDc1LCAxMTIsIDMwLCA1LCAyNTMsIDEwOCwgMTEyLCAyMTQsIDEzMywgMTEyLCAyNDgsIDEyMywgCi0gICAgMTEyLCA1MSwgMjQ4LCAxMjMsIDExMiwgMjI1LCAyNywgMjQ3LCA3NCwgMTEyLCAyMjUsIDI3LCA1MSwgMjQ3LCA3NCwgMTEyLCAKLSAgICAyMjUsIDI3LCAyMzIsIDI0MiwgMTEyLCAyMjUsIDI3LCAyNDksIDc3LCAxMzQsIDExMiwgMjI1LCAyNywgMjMyLCAxNzAsIAotICAgIDExMiwgNTAsIDExNiwgMTEyLCA1MCwgMTA5LCAxMTIsIDUwLCAxNjYsIDExMiwgNTAsIDE2MywgMTEyLCA1MCwgMTgwLCAKLSAgICAxMTIsIDUwLCAxODksIDExMiwgNTAsIDE5OCwgMTEyLCA1MCwgMTk1LCAxMTIsIDUwLCAyMDAsIDExMiwgNTAsIDIxNywgCi0gICAgMjAwLCAxMTIsIDUwLCAyMTYsIDM4LCAxMTIsIDUwLCAyMTcsIDExNSwgMTEyLCA1MCwgMjQzLCAyNDAsIDExMiwgNTAsIAotICAgIDI0NCwgODMsIDExMiwgNTAsIDIyMCwgMzksIDExMiwgNTAsIDIyMSwgMzcsIDExMiwgNTAsIDI0NSwgMTQxLCAxMTIsIDUwLCAKLSAgICAyMjksIDI2LCAxMTIsIDUwLCAxMjIsIDI0MCwgMjAwLCAxMTIsIDUwLCAxMjIsIDIxNywgMTAwLCAxMTIsIDIxLCAyMTIsIAotICAgIDc5LCAxMTIsIDIxLCAxMTYsIDExMiwgMjEsIDEwOSwgMTEyLCAyMSwgMTY2LCAxMTIsIDIxLCAxNjMsIDExMiwgMjEsIDE4MCwgCi0gICAgMTEyLCAyMSwgMTg5LCAxMTIsIDIxLCAxOTgsIDExMiwgMjEsIDE5NSwgMTEyLCAyMSwgMjAwLCAyMDgsIDUsIDI1MCwgMTg3LCAKLSAgICAyMDgsIDUsIDI1MywgMjQyLCAyMDgsIDUsIDIxNCwgMTI4LCAyMDgsIDEsIDYxLCAyMDgsIDEsIDI1NCwgMjMyLCAyMDgsIDEsIAotICAgIDcyLCAyMDgsIDEsIDIzNiwgMjgsIDIwOCwgMSwgNjksIDIwOCwgMSwgMjE1LCA5MiwgMjA4LCAxLCA3NCwgMjA4LCAxLCAKLSAgICAyNTQsIDEwOCwgMjA4LCAxLCA3NSwgMjA4LCAxLCAyNTMsIDEwOCwgMjA4LCAxLCAxODEsIDIwOCwgMSwgMjM0LCAxMzgsIAotICAgIDIwOCwgMSwgMjQzLCAxMTAsIDIwOCwgMSwgMjQyLCAyMjUsIDIwOCwgMSwgMjI5LCAxNTksIDIwOCwgMSwgMjUwLCAyMTksIAotICAgIDIwOCwgMSwgMjUwLCA5MiwgMjA4LCAxLCAyMzUsIDEzOSwgMjA4LCAxLCAyMzUsIDExNSwgMjA4LCAxLCAyMjgsIDIzLCAKLSAgICAyMDgsIDEsIDIxNiwgMTE1LCAyMDgsIDEsIDIxNiwgMTA1LCAyMDgsIDEsIDI0OCwgODYsIDIwOCwgMSwgMjQ4LCA3NSwgCi0gICAgMjA4LCAxLCAyNDgsIDcwLCAyMDgsIDEsIDIyMywgMTkyLCAyMDgsIDEsIDIyOCwgMTk4LCAyMDgsIDEsIDIxOCwgNTIsIAotICAgIDIwOCwgMSwgMjE3LCAxNjEsIDIwOCwgMSwgMjQ4LCAxNjQsIDIwOCwgMSwgMjQ3LCAyMzIsIDIwOCwgMSwgMjA1LCAyMDgsIAotICAgIDEsIDE5MywgMjA4LCAxLCAyMjYsIDIzLCAyMDgsIDEsIDI1MiwgMTA3LCAyMDgsIDEsIDI1MSwgMTk1LCAyMDgsIDEsIDE4OCwgCi0gICAgMjA4LCAxLCAxODYsIDIwOCwgMSwgMjAzLCAyMDgsIDEsIDIzMywgMTU3LCAyMDgsIDEsIDIxNSwgMSwgMjA4LCAxLCAyMjEsIAotICAgIDI0LCAyMDgsIDEsIDIxOSwgMTU3LCAyMDgsIDEsIDIyMiwgMjAyLCAyMDgsIDEsIDE1OSwgMjA4LCAzMCwgNSwgMjU0LCAKLSAgICAyMzIsIDIwOCwgMzAsIDUsIDcyLCAyMDgsIDMwLCA1LCAyMzYsIDI4LCAyMDgsIDMwLCA1LCA2OSwgMjA4LCAzMCwgNSwgCi0gICAgMjE1LCA5MiwgMjA4LCAzMCwgNSwgNzQsIDIwOCwgMzAsIDUsIDI1NCwgMTA4LCAyMDgsIDMwLCA1LCA3NSwgMjA4LCAzMCwgCi0gICAgNSwgMjUzLCAxMDgsIDIwOCwgNSwgMjE0LCAxMzMsIDIwOCwgNSwgMjI4LCA2MCwgMjA4LCAyNTQsIDE4MSwgNTIsIDIwOCwgCi0gICAgMjQ1LCA4MCwgNTIsIDIwOCwgNTAsIDUyLCAyMDgsIDIyMiwgOTIsIDc3LCAyMDgsIDUxLCAyMjIsIDkyLCA3NywgMjA4LCAKLSAgICAyNDgsIDEyMywgMjA4LCA1MSwgMjQ4LCAxMjMsIDE1LCA1LCA2MSwgMTUsIDUsIDExOCwgMjksIDYxLCAxNSwgNSwgMTE4LCAKLSAgICAyOSwgMjUyLCA5NCwgMTUsIDUsIDExOCwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMTE4LCAyOSwgMTU5LCAxNSwgCi0gICAgNSwgMTE4LCAyOSwgMjM2LCAzMCwgMTUsIDUsIDExOCwgMjksIDIzMywgMTM5LCAyNDIsIDc1LCAxNSwgNSwgMTE4LCAyOSwgCi0gICAgMjMwLCAxMzEsIDE1LCA1LCAxMTgsIDI5LCAyMjIsIDE5MCwgMTUsIDUsIDI1NCwgMjM0LCAxNSwgNSwgMjU0LCAxODUsIDE1LCAKLSAgICA1LCAyNTQsIDE4NiwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyNDYsIDIyLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjU0LCAxODYsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDI1NCwgMTg2LCAyOSwgMTU5LCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjU0LCAKLSAgICAxODYsIDI5LCAyMzYsIDQsIDE1LCA1LCAyNTQsIDE4NiwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjU0LCAxODYsIDI5LCAyMjAsIAotICAgIDIyOCwgMTUsIDUsIDI1NCwgMTg2LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyNTQsIDE4NiwgMjQyLCA3NSwgCi0gICAgMTUsIDUsIDI1NCwgMTgzLCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjU0LCAxODQsIDI5LCAyNDMsIAotICAgIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDI1NCwgCi0gICAgMTg0LCAyOSwgMjIxLCAyMiwgMTUsIDUsIDI1NCwgMTg0LCAyOSwgMjE4LCAyMiwgMTUsIDUsIDI1NCwgMTYwLCAxNSwgNSwgCi0gICAgMjU0LCA5NCwgMTUsIDUsIDI1NCwgOTUsIDI5LCAyNDUsIDUwLCAxNSwgNSwgMjU0LCA5NSwgMjksIDIyMCwgMTkwLCA5NCwgCi0gICAgMjQyLCAxNjYsIDE1LCA1LCAyNTQsIDg2LCAxNSwgNSwgMjU0LCA4NywgMjksIDI1NCwgODYsIDE1LCA1LCAyNTQsIDg3LCAKLSAgICAyOSwgMjQ3LCAxNjgsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMjQyLCAxNjYsIDE1LCA1LCAyNTQsIDg3LCAyOSwgMTU5LCAxNSwgCi0gICAgNSwgMjU0LCA4NywgMjksIDIzNSwgMywgMTUsIDUsIDI1NCwgODcsIDI5LCAyMzQsIDEwMSwgMTUsIDUsIDI1NCwgODcsIDI5LCAKLSAgICAyMjAsIDI0MywgMTUsIDUsIDI1NCwgODcsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDI1NCwgODMsIDE1LCA1LCAyNTQsIDc2LCAKLSAgICAxNSwgNSwgMjU0LCA0MSwgMTUsIDUsIDI1NCwgNDIsIDI5LCAyMjAsIDI0MywgMTUsIDUsIDI1NCwgMzIsIDE1LCA1LCAyNTQsIAotICAgIDMzLCAxMTAsIDI1NCwgMzIsIDE1LCA1LCAyNTQsIDMzLCAxMzMsIDIxNywgMzgsIDE1LCA1LCAyNTQsIDMzLCA5NCwgMjMwLCAKLSAgICAzNSwgMjI3LCAzMCwgMjU0LCAzMywgOTQsIDIzMCwgMzQsIDE1LCA1LCAyNTQsIDMzLCA5NCwgMjMwLCAzNSwgMjE5LCAxNjUsIAotICAgIDE1LCA1LCAyNTQsIDUsIDE1LCA1LCAyNTMsIDIzNSwgMTUsIDUsIDI1MywgMjA1LCAxNSwgNSwgMjUzLCAyMDYsIDI5LCAKLSAgICAyMzMsIDIxNywgMTUsIDUsIDI1MywgMTc5LCAxNSwgNSwgMjUzLCAxNTEsIDE1LCA1LCAyNTMsIDE0NiwgMTUsIDUsIDI1MywgCi0gICAgMTQ3LCAyMTIsIDMzLCAyMTcsIDE5MiwgMTUsIDUsIDI1MywgMTQ3LCAyMzUsIDcsIDIxNywgMTkyLCAxNSwgNSwgMjUzLCAKLSAgICAxNDcsIDExMCwgMjUzLCAxNDcsIDIxNiwgNzgsIDExMCwgMjE2LCA3OCwgMjE2LCA3OCwgMTEwLCAyMTYsIDc4LCAyMjYsIAotICAgIDE0OSwgMTUsIDUsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ2LCAxNSwgNSwgMjUzLCAxNDcsIDExMCwgCi0gICAgMjUzLCAxNDcsIDExMCwgMjUzLCAxNDcsIDI0OSwgNjUsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ3LCAxMTAsIDI1MywgMTQ2LCAKLSAgICAxNSwgNSwgMjUzLCAxNDQsIDE1LCA1LCAyNTMsIDE0MSwgMTUsIDUsIDI1MiwgMTA3LCAxNSwgNSwgMjUyLCA5NCwgMTUsIDUsIAotICAgIDI1MiwgODksIDE1LCA1LCAyNTIsIDg2LCAxNSwgNSwgMjUyLCA4MCwgMTUsIDUsIDI1MiwgODEsIDExMCwgMjUyLCA4MCwgCi0gICAgMTUsIDUsIDI1MiwgNzksIDE1LCA1LCAxMzQsIDE1LCA1LCAyNTIsIDU5LCAxNSwgNSwgMjUxLCAxODQsIDE1LCA1LCAyNTEsIAotICAgIDE4NSwgMjksIDYxLCAxNSwgNSwgMjUxLCAxODUsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjUxLCAxODUsIDI5LCAyMzYsIDMxLCAKLSAgICAyNDIsIDc1LCAxNSwgNSwgMjUxLCA1NCwgMTUsIDUsIDI1MSwgNTUsIDExMCwgMjUxLCA1NSwgMjU0LCAxODUsIDE1LCA1LCAKLSAgICAyNTEsIDU1LCAxMTAsIDI1MSwgNTUsIDIxNSwgMTYwLCAxNSwgNSwgMjUxLCA1NSwgMjQ5LCA2NSwgMjUxLCA1NCwgMTUsIDUsIAotICAgIDI1MSwgMzgsIDE1LCA1LCAyNTEsIDM5LCAxMTAsIDI1MSwgMzgsIDE1LCA1LCAyNTEsIDI3LCAxNSwgNSwgMjUxLCAyNiwgCi0gICAgMTUsIDUsIDI0OCwgMTY0LCAxNSwgNSwgMjQ4LCAxNTUsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDExOCwgOTQsIAotICAgIDIzMSwgMjEwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNTQsIDQxLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgCi0gICAgNzUsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MywgMTExLCA5NCwgMjMxLCAKLSAgICAyMTAsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIAotICAgIDI5LCAyNDIsIDE3MywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjQyLCA4NCwgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMTU5LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMzUsIDE3NywgMTUsIDUsIDI0OCwgCi0gICAgMTU2LCAyMzQsIDc1LCAyOSwgMjM1LCAxNzgsIDk0LCAyMzIsIDE1NiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgCi0gICAgMjM0LCAyNDcsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIDIzMywgMTU3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgCi0gICAgNzUsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMyLCAxNTcsIDk0LCAyMzEsIDIwOSwgCi0gICAgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjMyLCAxNDIsIDE1LCA1LCAyNDgsIDE1NiwgMjM0LCA3NSwgMjksIAotICAgIDIyOSwgMTg3LCAxNSwgNSwgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMjYsIDE1MCwgOTQsIDIyNiwgMTQ5LCAxNSwgNSwgCi0gICAgMjQ4LCAxNTYsIDIzNCwgNzUsIDI5LCAyMjAsIDExNywgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjE4LCAyMiwgCi0gICAgMTUsIDUsIDI0OCwgMTU2LCAyMzQsIDc1LCAyOSwgMjE1LCAxOTgsIDk0LCAyNDIsIDE3MywgMTUsIDUsIDI0OCwgMTU2LCAKLSAgICAyMzQsIDc1LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyNDgsIDEzMiwgMTUsIDUsIDI0OCwgMTExLCAxNSwgNSwgMjQ4LCAxMTAsIAotICAgIDE1LCA1LCAyNDgsIDEwOSwgMTUsIDUsIDI0NywgMjExLCAxNSwgNSwgMjQ3LCAxOTQsIDE1LCA1LCAyNDcsIDE2OSwgMTUsIAotICAgIDUsIDI0NywgMTcwLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDcsIDE2OCwgMTUsIDUsIDI0NywgMTU4LCAxNSwgNSwgMjQ3LCAKLSAgICAxNTksIDIzNCwgMjEzLCAxMTEsIDI0MiwgNzYsIDI0NywgMTM5LCAxNSwgNSwgMjQ3LCAxMzksIDE1LCA1LCAyNDYsIDMzLCAKLSAgICAxNSwgNSwgMjQ2LCAzNCwgMTEwLCAyNDYsIDMzLCAxNSwgNSwgMjQ2LCAzNCwgMjQyLCA3NSwgMTUsIDUsIDI0NiwgMzQsIAotICAgIDIyMCwgMjI1LCAxNSwgNSwgMjQ2LCAzMSwgMTUsIDUsIDI0NiwgMzIsIDI5LCAyNDUsIDM3LCAxNSwgNSwgMjQ2LCAzMCwgCi0gICAgMTUsIDUsIDI0NiwgMjksIDE1LCA1LCAyNDYsIDI4LCAxNSwgNSwgMjQ2LCAyNywgMTUsIDUsIDI0NiwgMjMsIDE1LCA1LCAKLSAgICAyNDYsIDIxLCAxNSwgNSwgMjQ2LCAyMiwgMjQyLCA3NSwgMTUsIDUsIDI0NiwgMjIsIDI0MiwgNzYsIDI0MiwgNzUsIDE1LCAKLSAgICA1LCAyNDYsIDIwLCAxNSwgNSwgMjQ2LCAxMywgMTUsIDUsIDc0LCAxNSwgNSwgMTkxLCAyOSwgMjI2LCAxNDksIDE1LCA1LCAKLSAgICAxOTEsIDExMCwgMTkxLCAyMjgsIDUxLCAxMTAsIDIyOCwgNTAsIDE1LCA1LCAyNDUsIDE5MCwgMTUsIDUsIDI0NSwgMTkxLCAKLSAgICAyOSwgMTE4LCA5NCwgMjQyLCAzMCwgOTQsIDI0OCwgMTY0LCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCAyNDMsIDcyLCAxNSwgNSwgCi0gICAgMjQ1LCAxOTEsIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjQ1LCAxOTEsIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDI0NSwgMTkxLCAKLSAgICAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDUsIDE5MSwgMjksIDY5LCAxNSwgNSwgMjQ1LCAxNjcsIDE1LCA1LCAyNDUsIDE1NywgCi0gICAgMTUsIDUsIDI0NSwgMTMxLCAxNSwgNSwgMjQ1LCAxMDgsIDE1LCA1LCAyNDUsIDEwOSwgMjksIDI0MywgODAsIDE1LCA1LCAKLSAgICAyNDUsIDEwOSwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjQ1LCAxMDksIDI5LCAyMzEsIDE1NiwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyNDksIDY1LCAyNDUsIDEwOCwgMTUsIDUsIDI0NSwgMTA5LCAyMjcsIDMwLCAyNDUsIDEwOCwgMTUsIDUsIAotICAgIDI0NSwgMTA5LCAyMTksIDE2NSwgMTUsIDUsIDI0NSwgNTIsIDE1LCA1LCAyNDUsIDUwLCAxNSwgNSwgMjQ1LCAzNywgMTUsIAotICAgIDUsIDI0NCwgMjM0LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCA2MSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMTE4LCA5NCwgMjMzLCAKLSAgICAxMjgsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDExOCwgOTQsIDIzMywgMTI5LCAyOSwgMjMzLCAxMjgsIDE1LCA1LCAyNDQsIAotICAgIDIzNSwgMjksIDI1NCwgMzIsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0NiwgCi0gICAgMjIsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDI0NiwgMjIsIDI0MiwgNzYsIDI0MiwgNzUsIDE1LCA1LCAyNDQsIAotICAgIDIzNSwgMjksIDE1OSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjQyLCAzMCwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgCi0gICAgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjM0LCAyMTIsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzNCwgMjEzLCAyMTksIDE2NSwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjMzLCAyMzYsIDE1LCA1LCAyNDQsIDIzNSwgMjksIAotICAgIDIzMywgMTU3LCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzMsIDEyOSwgMjksIDIzMywgMTI4LCAxNSwgNSwgMjQ0LCAyMzUsIAotICAgIDI5LCAyMzMsIDEzLCAxNSwgNSwgMjQ0LCAyMzUsIDI5LCAyMzIsIDE1NiwgMTUsIDUsIDI0NCwgMjM1LCAyOSwgMjE1LCAKLSAgICAxOTcsIDE1LCA1LCAyNDQsIDIzNSwgMjksIDIxNSwgMTg4LCAxNSwgNSwgMjQzLCAxMTAsIDE1LCA1LCAyNDMsIDExMSwgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDI0MywgMTA4LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAyNDgsIDE2NSwgOTQsIAotICAgIDE1OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTE4LCA5NCwgMTU5LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAxMTgsIDk0LCAKLSAgICAyMzYsIDMwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTQsIDE4NCwgMjE3LCAxOTMsIDk0LCAyMTgsIDQxLCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTMsIDE0NiwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjUzLCAxNDUsIDk0LCAyNDMsIDk0LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjQzLCAxMDksIAotICAgIDI5LCAyNTIsIDYwLCA5NCwgMjAzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNTEsIDI3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAKLSAgICAyNTEsIDI4LCA5NCwgMjAzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDgsIDE2NCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjQ3LCAyMTEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NywgMTcwLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDMsIDEwOSwgCi0gICAgMjksIDI0NiwgMzEsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0NSwgMTMxLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIAotICAgIDEzMiwgOTQsIDIzMywgMTU3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDUsIDEwOCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgCi0gICAgMjQ1LCAxMDksIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MywgNzIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MiwgMTkwLCAxNSwgNSwgMjQzLCAKLSAgICAxMDksIDI5LCAyNDIsIDE4OCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjQyLCAxODksIDk0LCA2MSwgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQyLCAxNzQsIDk0LCAyMTksIDI3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDMwLCA5NCwgMjMyLCAKLSAgICAxNTcsIDk0LCAyNDUsIDM3LCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIDEyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyNDIsIAotICAgIDEzLCA5NCwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDI0MSwgMTY2LCA5NCwgMjMzLCAxMywgMTUsIDUsIDI0MywgCi0gICAgMTA5LCAyOSwgMjQwLCAyMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDIzNSwgMTY0LCA5NCwgMjQwLCAyMTMsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjM0LCAKLSAgICAyNDcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMzQsIDk4LCAxNSwgNSwgCi0gICAgMjQzLCAxMDksIDI5LCAyMzQsIDk5LCA5NCwgMjMzLCAxMjgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMywgMjM3LCA5NCwgCi0gICAgMjU0LCAzMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjMzLCAxNTcsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMSwgMTU3LCAKLSAgICA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIzMSwgNDIsIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyOCwgNTAsIAotICAgIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMTkzLCAxNSwgCi0gICAgNSwgMjQzLCAxMDksIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDI0MywgMTA5LCAyOSwgMjIyLCAxNDcsIDE1LCA1LCAyNDMsIAotICAgIDEwOSwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMjAsIDI0NCwgOTQsIDIxNiwgNjIsIDE1LCA1LCAKLSAgICAyNDMsIDEwOSwgMjksIDIyMCwgMjEwLCAxNSwgNSwgMjQzLCAxMDksIDI5LCAyMTgsIDI0NCwgMTUsIDUsIDI0MywgMTA5LCAKLSAgICAyOSwgMjE4LCAyMiwgMTUsIDUsIDI0MywgMTA5LCAyOSwgNjksIDE1LCA1LCAyNDMsIDEwOSwgMjksIDIxNSwgMTg4LCAxNSwgCi0gICAgNSwgMjQzLCAxMDksIDI5LCAyMTUsIDE4OSwgOTQsIDI0NiwgMzMsIDE1LCA1LCAyNDMsIDEwOSwgMTEwLCAyNDMsIDEwOCwgCi0gICAgMTUsIDUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMDQsIDI0OSwgNjUsIDI0MywgMTAzLCAxNSwgNSwgMjQzLCAxMDEsIDE1LCAKLSAgICA1LCAyNDMsIDEwMiwgMTEwLCAyNDMsIDEwMiwgMjQzLCA3MywgMTEwLCAyNDMsIDcyLCAxNSwgNSwgMjQzLCA5NCwgMTUsIDUsIAotICAgIDI0MywgOTUsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyNDMsIDkzLCAKLSAgICAxNSwgNSwgMjQzLCA5MSwgMTUsIDUsIDI0MywgODIsIDE1LCA1LCAyNDMsIDgwLCAxNSwgNSwgMjQzLCA4MSwgMjE3LCAxOTIsIAotICAgIDE1LCA1LCAyNDMsIDgxLCAxMTAsIDI0MywgODAsIDE1LCA1LCAyNDMsIDgxLCAyNDksIDY1LCAyNDMsIDgwLCAxNSwgNSwgCi0gICAgMjQzLCA3MiwgMTUsIDUsIDI0MywgNzEsIDE1LCA1LCAyNDMsIDY2LCAxNSwgNSwgMjQzLCAxMiwgMTUsIDUsIDI0MywgMTMsIAotICAgIDI5LCAyMzMsIDIxNywgMTUsIDUsIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDI5LCA3NCwgMTUsIDUsIDI0MiwgMTkxLCAKLSAgICAyOSwgNjksIDE1LCA1LCAyNDIsIDE5MSwgMjQ5LCA2NSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE4OCwgMTUsIDUsIDI0MiwgCi0gICAgMTg5LCAxMTAsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAxODksIDI0OSwgNjUsIDI0MiwgMTg4LCAxNSwgNSwgMjQyLCAxODUsIAotICAgIDE1LCA1LCAyNDIsIDE3MywgMTUsIDUsIDI0MiwgMTc0LCAyNDIsIDc1LCAxNSwgNSwgMjQyLCAxNzEsIDE1LCA1LCAyNDIsIAotICAgIDE3MiwgMjksIDExOCwgOTQsIDIzNiwgMzAsIDE1LCA1LCAyNDIsIDE3MiwgMjksIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjQyLCAxNzIsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjQyLCAxNzIsIDI5LCAyMzIsIDE1NywgOTQsIDIzNiwgMzAsIDE1LCA1LCAKLSAgICAyNDIsIDE3MiwgMjksIDE5MywgMTUsIDUsIDI0MiwgMTY4LCAxNSwgNSwgMjQyLCAxNjYsIDE1LCA1LCAyNDIsIDE2NywgCi0gICAgMjQ5LCA2NSwgMjQyLCAxNjYsIDE1LCA1LCAyNDIsIDE2NywgMjksIDI1MiwgOTQsIDE1LCA1LCAyNDIsIDE2NywgMjksIAotICAgIDIxOCwgMjIsIDE1LCA1LCAyNDIsIDE2NywgMjE3LCAxOTIsIDE1LCA1LCAyNDIsIDkyLCAxNSwgNSwgMjQyLCA5MywgMjQ5LCAKLSAgICA2NSwgMjQyLCA5MiwgMTUsIDUsIDI0MiwgOTAsIDE1LCA1LCAyNDIsIDkxLCAyOSwgMjM0LCAyNDcsIDE1LCA1LCAyNDIsIAotICAgIDkxLCAyOSwgMjM0LCAyNDgsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjQyLCA5MSwgMjksIDIyOCwgNTAsIDE1LCAKLSAgICA1LCAyNDIsIDkxLCAyOSwgMjIyLCAxODAsIDk0LCAyMTYsIDc3LCAxNSwgNSwgMjQyLCA5MSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDI0MiwgODQsIDE1LCA1LCAyNDIsIDg1LCAyOSwgMTE4LCA5NCwgMjMzLCAyMTcsIDE1LCA1LCAyNDIsIDg1LCAyOSwgMjMzLCAKLSAgICAyMTcsIDE1LCA1LCAyNDIsIDg1LCAxMTAsIDI0MiwgODUsIDIzMiwgMTQ5LCAxNSwgNSwgMjQyLCA3OSwgMTUsIDUsIDI0MiwgCi0gICAgNzcsIDE1LCA1LCAyNDIsIDc4LCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyNDIsIDY5LCAxNSwgNSwgMjQyLCA2OCwgMTUsIDUsIAotICAgIDI0MiwgNjUsIDE1LCA1LCAyNDIsIDY0LCAxNSwgNSwgMTU5LCAxNSwgNSwgMjQyLCAzMCwgMjE3LCAxOTIsIDE1LCA1LCAKLSAgICAyNDIsIDMwLCAyNDIsIDc1LCAxNSwgNSwgMjQyLCAxMiwgMTUsIDUsIDI0MSwgMTY1LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAKLSAgICAyNTMsIDE0NiwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI1MiwgOTQsIAotICAgIDE1LCA1LCAyNDEsIDE2NiwgMjksIDI0NywgMTM5LCAxNSwgNSwgMjQxLCAxNjYsIDI5LCAyNDMsIDEwMSwgMTUsIDUsIDI0MSwgCi0gICAgMTY2LCAyOSwgMjM0LCA5MCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjI4LCA1MCwgMTUsIDUsIDI0MSwgMTY2LCAyOSwgMjIwLCAKLSAgICAyNDMsIDE1LCA1LCAyNDEsIDE2NiwgMjksIDY5LCAxNSwgNSwgMjQwLCAyMTIsIDE1LCA1LCAyNDAsIDIwOCwgMTUsIDUsIAotICAgIDI0MCwgMjA5LCAyOSwgMjU0LCAzMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgMjQyLCAxMiwgMTUsIDUsIDI0MCwgMjA5LCAyOSwgCi0gICAgMjM0LCAyMTIsIDE1LCA1LCAyNDAsIDIwOSwgMjksIDIzMiwgMjI2LCAxNSwgNSwgMjQwLCAyMDksIDI5LCAyMTUsIDE4OCwgCi0gICAgMTUsIDUsIDI0MCwgMjA1LCAxNSwgNSwgNzIsIDE1LCA1LCAyNDAsIDE0NiwgNjEsIDE1LCA1LCAyNDAsIDEwOCwgMTUsIDUsIAotICAgIDIzNiwgNTgsIDE1LCA1LCAyMzYsIDU5LCAxMTAsIDIzNiwgNTksIDI1MSwgMjcsIDE1LCA1LCAyMzYsIDU5LCAxMTAsIDIzNiwgCi0gICAgNTksIDIxOSwgMTY1LCAxNSwgNSwgMjM2LCAzMywgMTUsIDUsIDIzNiwgMzAsIDE1LCA1LCAyMzYsIDMxLCAyNDcsIDE5NCwgCi0gICAgMTUsIDUsIDIzNiwgMzEsIDIyMywgMTg4LCAxNSwgNSwgMjM2LCAzMSwgMTEwLCAyMzYsIDMxLCAyMjAsIDE5NCwgMTEwLCAKLSAgICAyMjAsIDE5NCwgMjE1LCAxODksIDExMCwgMjE1LCAxODgsIDE1LCA1LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjM2LCAKLSAgICAyMiwgMTUsIDUsIDIzNiwgMjMsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzNiwgMjEsIDE1LCA1LCAyMzYsIAotICAgIDExLCAxNSwgNSwgMjM2LCAxMiwgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzYsIDEyLCAyNDksIDY1LCAyMzYsIDExLCAxNSwgNSwgCi0gICAgMjM2LCAxMiwgMjI3LCAzMCwgMjM2LCAxMSwgMTUsIDUsIDIzNiwgMTIsIDIxOSwgMTY1LCAxNSwgNSwgMjM2LCA0LCAxNSwgCi0gICAgNSwgMjM1LCAyNTEsIDE1LCA1LCAyMzUsIDE3NywgMTUsIDUsIDIzNSwgMTYzLCAxNSwgNSwgMTgxLCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDYxLCAxNSwgNSwgMjM1LCAxNywgMjksIDI1NCwgMTYwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI1NCwgMTYxLCAKLSAgICA5NCwgMjMzLCAyMzYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUzLCAxNDQsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjUyLCA5NCwgCi0gICAgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNTIsIDc5LCAxNSwgNSwgMjM1LCAxNywgMjksIDEzNCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyNTEsIDE4NCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDUsIDUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDI0NSwgMzcsIDE1LCAKLSAgICA1LCAyMzUsIDE3LCAyOSwgMjQzLCAxMTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQzLCA5NCwgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDI0MywgNzMsIDk0LCAyMjEsIDIzLCA5NCwgNjEsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIAotICAgIDE3LCAyOSwgMjQyLCAxNzMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCAxNjcsIDk0LCAyMjIsIDE0NywgMTUsIDUsIDIzNSwgCi0gICAgMTcsIDI5LCAyNDIsIDE2NywgMjQ5LCA2NSwgMjQyLCAxNjYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjQyLCA5MiwgMTUsIDUsIAotICAgIDIzNSwgMTcsIDI5LCAyNDIsIDY4LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzNiwgMzAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjM2LCAxMSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDEwMSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMzQsIDk4LCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMywgMTMsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMyLCAxNTYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTYsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjMxLCAxNTcsIDk0LCAKLSAgICAyNDYsIDMzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIzMSwgMTU3LCA5NCwgMjQyLCAxOTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgCi0gICAgMjMxLCAxNTcsIDk0LCAyMTcsIDIyOSwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMzEsIDQyLCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIzMSwgNDMsIDk0LCAyMjgsIDQ1LCAxNSwgNSwgMjM1LCAxNywgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjM1LCAxNywgMjksIAotICAgIDIyOCwgNTAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjI1LCAyNDAsIDE1LCA1LCAyMzUsIDE3LCAyOSwgMjIzLCA1MSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMjIsIDIwMiwgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMjIsIDE0NywgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyMjEsIDI0LCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMjQzLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMjEwLCAKLSAgICAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMTUwLCAxNSwgNSwgMjM1LCAxNywgMjksIDIyMCwgMTA4LCAxNSwgNSwgMjM1LCAKLSAgICAxNywgMjksIDIxOCwgMjUyLCAxNSwgNSwgMjM1LCAxNywgMjksIDIxOCwgMSwgMTUsIDUsIDIzNSwgMTcsIDI5LCA2OSwgMTUsIAotICAgIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDE5NywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIzNSwgMTcsIAotICAgIDI5LCAyMTUsIDE2MywgMjksIDE5MywgMTUsIDUsIDIzNSwgMTcsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIzNSwgMTcsIDI5LCAKLSAgICAyMTIsIDM3LCAxNSwgNSwgMjM1LCAxNSwgMTUsIDUsIDIzNSwgMTYsIDI0OSwgNjUsIDIzNSwgMTUsIDE1LCA1LCAyMzUsIDgsIAotICAgIDE1LCA1LCAyMzUsIDUsIDE1LCA1LCAyMzUsIDMsIDE1LCA1LCAyMzUsIDIsIDE1LCA1LCAyMzUsIDAsIDE1LCA1LCAyMzUsIAotICAgIDEsIDExMCwgMjM1LCAwLCAxNSwgNSwgMjM0LCAyNDcsIDE1LCA1LCAyMzQsIDI0OCwgMjksIDIzNiwgMzEsIDI0MiwgNzUsIAotICAgIDE1LCA1LCAyMzQsIDI0MywgMTUsIDUsIDIzNCwgMjQ0LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIzNCwgMjQ0LCAyNDksIDY1LCAKLSAgICAyMzQsIDI0MywgMTUsIDUsIDIzNCwgMjQxLCAxNSwgNSwgMjM0LCAyNDAsIDE1LCA1LCAyMzQsIDIxMiwgMTUsIDUsIDIzNCwgCi0gICAgMjEzLCAyMzMsIDE0MSwgMjksIDExMSwgMTEwLCAyMzMsIDE0MSwgMjksIDY5LCAxNSwgNSwgMjM0LCAyMTMsIDExMCwgMjM0LCAKLSAgICAyMTMsIDIzMywgMTQxLCAyOSwgMTExLCAxMTAsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzQsIDE2MywgMTUsIDUsIAotICAgIDIzNCwgMTAxLCAxNSwgNSwgMjM0LCAxMDIsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjM0LCAxMDIsIDI5LCA2OSwgMTUsIDUsIAotICAgIDIzNCwgMTAyLCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzQsIDk4LCAxNSwgNSwgMjM0LCA5MCwgMTUsIDUsIDIzNCwgNzcsIAotICAgIDE1LCA1LCAyMzQsIDc2LCAxNSwgNSwgMjM0LCA3NCwgMTUsIDUsIDIzNCwgNzUsIDExMCwgMjM0LCA3NCwgMTUsIDUsIDIzMywgCi0gICAgMjM4LCAxNSwgNSwgMjMzLCAyMzksIDExMCwgMjQxLCAxNjYsIDI5LCAyNTMsIDE0NSwgMjMzLCAyMzksIDExMCwgMjQxLCAKLSAgICAxNjYsIDI5LCAyNTMsIDE0NCwgMTUsIDUsIDIzMywgMjM2LCAxNSwgNSwgMjMzLCAyMzQsIDE1LCA1LCAyMzMsIDIzNSwgCi0gICAgMjE0LCAyNDQsIDE3LCAxNSwgNSwgMjMzLCAyMzMsIDE1LCA1LCAyMzMsIDIzMCwgMTUsIDUsIDIzMywgMjMxLCAyNDIsIDc1LCAKLSAgICAxNSwgNSwgMjMzLCAyMjksIDE1LCA1LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMjE4LCAyMjcsIDMwLCAyMzMsIDIxNywgMTUsIAotICAgIDUsIDIzMywgMjEyLCAxNSwgNSwgMjMzLCAxOTQsIDE1LCA1LCAyMzMsIDE1NywgMTUsIDUsIDIzMywgMTQwLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCA2MSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTE4LCA5NCwgMjQ4LCAxNjUsIDk0LCAxNTksIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDI0MywgNzIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExOCwgOTQsIDIzMywgMTI4LCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTQsIDg2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjMzLCAKLSAgICAxNDEsIDI5LCAyNTMsIDE0NywgMjEyLCAzMywgMjE3LCAxOTIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI1MiwgOTQsIDE1LCAKLSAgICA1LCAyMzMsIDE0MSwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDgsIDExMSwgMTUsIDUsIDIzMywgCi0gICAgMTQxLCAyOSwgMjQ1LCAxMDgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDI0MywgMTEwLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAKLSAgICAyNDMsIDcyLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDg0LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDg1LCA5NCwgCi0gICAgMjQyLCA4NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMTU5LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyNDIsIDEyLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyNDEsIDE2NiwgMjksIDIyOCwgNTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMzEsIDI0MiwgCi0gICAgNzUsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTIsIDk0LCAxNTksIAotICAgIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNiwgMTIsIDk0LCAyMzIsIDE1NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjM0LCAKLSAgICAxMDEsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzNCwgOTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMywgMjM2LCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMzMsIDIzMCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMzLCAyMzEsIDk0LCAyNDEsIDE2NiwgOTQsIAotICAgIDYxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjMyLCAyMjYsIDE1LCA1LCAKLSAgICAyMzMsIDE0MSwgMjksIDIzMiwgMTU2LCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMzIsIDE0NCwgMTUsIDUsIDIzMywgMTQxLCAKLSAgICAyOSwgMjMxLCAxNTYsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIzMSwgMTU3LCA5NCwgMjQ1LCAxMDgsIDE1LCA1LCAyMzMsIAotICAgIDE0MSwgMjksIDIzMCwgMTMxLCAxNSwgNSwgMjMzLCAxNDEsIDI5LCAyMjksIDE4NywgMTUsIDUsIDIzMywgMTQxLCAyOSwgCi0gICAgMjIwLCAyNDQsIDk0LCAyMTgsIDI0NCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxOTAsIDk0LCAyNDIsIDE2NywgOTQsIAotICAgIDI0NSwgNTAsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIyMCwgMTkwLCA5NCwgMjQyLCAxNjcsIDIxNywgMTkyLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAyMjAsIDE0OCwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjIwLCAxNDksIDk0LCAyMjAsIDE0OCwgMTUsIAotICAgIDUsIDIzMywgMTQxLCAyOSwgMjE4LCAyNDQsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxOCwgMzMsIDE1LCA1LCAyMzMsIDE0MSwgCi0gICAgMjksIDIxOCwgMjIsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNywgMjMwLCA5NCwgMTE4LCA5NCwgMjE5LCAyOCwgOTQsIAotICAgIDIwNSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgNjksIDE1LCA1LCAyMzMsIDE0MSwgMjksIDExMSwgOTQsIDYxLCAxNSwgNSwgCi0gICAgMjMzLCAxNDEsIDI5LCAxMTEsIDk0LCAxMTEsIDk0LCA2OSwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxOTgsIDk0LCAKLSAgICAyNTMsIDE0NiwgMTUsIDUsIDIzMywgMTQxLCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMzMsIDE0MSwgMjksIDIxNSwgMTAwLCAKLSAgICAxNSwgNSwgMjMzLCAxNDEsIDIxOSwgMTY1LCAxNSwgNSwgMjMzLCAxMzgsIDE1LCA1LCAyMzMsIDEzOSwgMjksIDIyMCwgCi0gICAgMjQzLCAxNSwgNSwgMjMzLCAxMzksIDI5LCAyMjAsIDI0NCwgOTQsIDIxOCwgMjQ0LCAxNSwgNSwgMjMzLCAxMzksIDI0MiwgCi0gICAgNzUsIDE1LCA1LCAyMzMsIDEzOSwgMjQyLCA3NiwgMTEwLCAyMzMsIDEzOSwgMjQyLCA3NiwgMjIwLCAyNDMsIDE1LCA1LCAKLSAgICAyMzMsIDEzNSwgMTUsIDUsIDIzMywgMTI4LCAxNSwgNSwgMjMzLCAxMjksIDI5LCAyMzMsIDEyOCwgMTUsIDUsIDIzMywgCi0gICAgMTI2LCAxNSwgNSwgMjMzLCAxMjcsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIzMywgMTI3LCAyOSwgMjMzLCAyMTgsIDk0LCAKLSAgICAyMjMsIDUxLCAxNSwgNSwgMjMzLCAxMywgMTUsIDUsIDIzMiwgMjU0LCAxNSwgNSwgMjMyLCAyNDUsIDE1LCA1LCAyMzIsIAotICAgIDIyNiwgMTUsIDUsIDIzMiwgMTU2LCAxNSwgNSwgMjMyLCAxNTcsIDI5LCAyNTIsIDk0LCAxNSwgNSwgMjMyLCAxNTQsIDE1LCAKLSAgICA1LCAyMzIsIDE1NSwgMjksIDI1NCwgODYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI1MiwgOTQsIDE1LCA1LCAyMzIsIDE1NSwgCi0gICAgMjksIDI0NSwgMzcsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDI0NSwgMzgsIDIxNywgMTkyLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAKLSAgICAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjQxLCAxNjYsIDI5LCAyNTIsIDk0LCAxNSwgNSwgCi0gICAgMjMyLCAxNTUsIDI5LCAyMzYsIDExLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzUsIDUsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIzNSwgMywgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjM1LCA0LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIzNCwgMTAxLCAxNSwgNSwgMjMyLCAxNTUsIDI5LCAyMzMsIDE1OCwgOTQsIDI1MywgMTQ2LCAxNSwgNSwgMjMyLCAxNTUsIAotICAgIDI5LCAyMzMsIDE0MCwgMTUsIDUsIDIzMiwgMTU1LCAyOSwgMjMxLCAxNTcsIDk0LCAyNDUsIDEwOCwgMTUsIDUsIDIzMiwgCi0gICAgMTU1LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIyOCwgOTIsIDE1LCA1LCAyMzIsIDE1NSwgMjksIAotICAgIDIyMCwgMTE4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMzIsIDE1NSwgMjksIDIyMCwgMTAwLCA5NCwgMjUxLCA1NCwgMTUsIAotICAgIDUsIDIzMiwgMTU1LCAyOSwgMjE2LCA3NywgMTUsIDUsIDIzMiwgMTU1LCAyMTcsIDE5MiwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyNDksIDY1LCAyMzIsIDE1NCwgMTUsIDUsIDIzMiwgMTU1LCAyMjcsIDMwLCAyMzIsIDE1NCwgMTUsIDUsIDIzMiwgMTU1LCAKLSAgICAyMTksIDE2NSwgMTUsIDUsIDIzMiwgMTU1LCAyMjAsIDIyNSwgMTUsIDUsIDIzMiwgMTUzLCAxNSwgNSwgMjMyLCAxNDksIAotICAgIDE1LCA1LCAyMzIsIDE1MCwgMTEwLCAyMzIsIDE0OSwgMTUsIDUsIDIzMiwgMTUwLCAyMjcsIDMwLCAyMzIsIDE0OSwgMTUsIAotICAgIDUsIDIzMiwgMTUwLCAyMjAsIDIyNSwgMTUsIDUsIDIzMiwgMTQ3LCAxNSwgNSwgMjMyLCAxNDQsIDE1LCA1LCAyMzIsIDE0MiwgCi0gICAgMTUsIDUsIDIzMiwgMTQzLCAxMTAsIDIzMiwgMTQyLCAxNSwgNSwgMjMyLCAxNDMsIDExMCwgMjMyLCAxNDMsIDI0MywgNzMsIAotICAgIDExMCwgMjQzLCA3MiwgMTUsIDUsIDE4OCwgMTUsIDUsIDIzMiwgNDMsIDI5LCAyMTgsIDIyLCAxNSwgNSwgMjMyLCA0MywgCi0gICAgMjQyLCA3NSwgMTUsIDUsIDIzMiwgNDIsIDE1LCA1LCAyMzIsIDE1LCAxNSwgNSwgMjMxLCAyMjksIDE1LCA1LCAyMzEsIAotICAgIDIxMCwgMTUsIDUsIDIzMSwgMjA5LCAxNSwgNSwgMjMxLCAxNTYsIDE1LCA1LCAyMzEsIDExMiwgMTUsIDUsIDIzMSwgNDIsIAotICAgIDE1LCA1LCAyMzEsIDEsIDE1LCA1LCAyMzAsIDE3MiwgMTUsIDUsIDIzMCwgMTczLCAxMTAsIDIzMCwgMTcyLCAxNSwgNSwgCi0gICAgMjMwLCAxNjMsIDE1LCA1LCAyMzAsIDE2NCwgMjQyLCA3NSwgMTUsIDUsIDIzMCwgMTQ4LCAxNSwgNSwgMjMwLCAxMzQsIDE1LCAKLSAgICA1LCAyMzAsIDEzMSwgMTUsIDUsIDIzMCwgMTMyLCAyOSwgNjEsIDE1LCA1LCAyMzAsIDEzMiwgMjksIDIzMywgMjE3LCAxNSwgCi0gICAgNSwgMjMwLCAxMzIsIDI5LCAyMTIsIDEwOSwgMTUsIDUsIDIzMCwgMTMyLCAxMTAsIDIzMCwgMTMxLCAxNSwgNSwgMjMwLCAKLSAgICAxMzIsIDExMCwgMjMwLCAxMzIsIDI5LCAxMTgsIDk0LCAyMDUsIDE1LCA1LCAyMzAsIDEzMiwgMjQ5LCA2NSwgMjMwLCAxMzEsIAotICAgIDE1LCA1LCAyMzAsIDEyOSwgMTUsIDUsIDIzMCwgMTMwLCAyOSwgNjEsIDE1LCA1LCAyMzAsIDEzMCwgMjksIDExOCwgOTQsIAotICAgIDI0NywgMjExLCAxNSwgNSwgMjMwLCAxMzAsIDI5LCAyNDcsIDIxMSwgMTUsIDUsIDIzMCwgMTMwLCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjA1LCAxNSwgNSwgMjMwLCA0NSwgMTUsIDUsIDIzMCwgMzQsIDE1LCA1LCAyMzAsIDM1LCAyMzUsIDE5MCwgMTUsIDUsIAotICAgIDIzMCwgMzUsIDI5LCAyMjAsIDE1MSwgMjE3LCAxOTIsIDE1LCA1LCAyMzAsIDM1LCAyMjcsIDMwLCAyMzAsIDM0LCAxNSwgNSwgCi0gICAgMjMwLCAzMywgMTUsIDUsIDIzMCwgMjgsIDIyOCwgMzYsIDE1LCA1LCAyMzAsIDI3LCAxNSwgNSwgMjMwLCAyNiwgMTUsIDUsIAotICAgIDIyOSwgMTg3LCAxNSwgNSwgMjI5LCAxODgsIDI5LCA2MSwgMTUsIDUsIDIyOSwgMTg4LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAKLSAgICAyMjksIDE4OCwgMjIwLCAyMjUsIDE1LCA1LCAyMjksIDY0LCAxNSwgNSwgMjI5LCA2NSwgMjksIDc0LCAxNSwgNSwgMjI5LCAKLSAgICA2MywgMTUsIDUsIDIyOSwgMzQsIDE1LCA1LCAyMjksIDM1LCAyOSwgMjQzLCA4MSwgMjE3LCAxOTIsIDE1LCA1LCAyMjksIAotICAgIDM1LCAyOSwgMjQzLCA3MywgOTQsIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAzMiwgMTUsIDUsIDIyOSwgMzMsIAotICAgIDI5LCAyNTQsIDMyLCAxNSwgNSwgMjI5LCAzMywgMjksIDI1MywgMTQ2LCAxNSwgNSwgMjI5LCAzMywgMjksIDI1MywgMTQ3LCAKLSAgICA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMzEsIDE1NywgCi0gICAgOTQsIDI0MywgODEsIDIxNywgMTkyLCAxNSwgNSwgMjI5LCAzMywgMjksIDIyOSwgMTg3LCAxNSwgNSwgMjI5LCAzMywgMjksIAotICAgIDIyOCwgNTAsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDQsIDk0LCAKLSAgICAxMTgsIDI1NCwgMzIsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjIwLCAyNDQsIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIAotICAgIDI5LCAyMjAsIDI0NCwgOTQsIDI1MywgMTQ3LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMjksIDMzLCAyOSwgMjE1LCAxOTgsIAotICAgIDk0LCAyNTMsIDE0NiwgMTUsIDUsIDIyOSwgMzMsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIDIyOSwgMjEsIDE1LCA1LCAyMjgsIAotICAgIDkyLCAxNSwgNSwgMjI4LCA2NSwgMTUsIDUsIDIyOCwgNTAsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDI0MywgCi0gICAgNzIsIDE1LCA1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMjksIDIzMSwgMjEwLCAxNSwgNSwgMjI4LCA1MSwgMjMzLCAxMzksIDI5LCAKLSAgICAyMjIsIDE3OSwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjIyLCAxODAsIDExMCwgMjI4LCA1MSwgMjMzLCAxMzksIAotICAgIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDIyOCwgNTEsIDIzMywgMTM5LCAyOSwgMjE1LCAxMDAsIDE1LCA1LCAyMjgsIDUxLCAKLSAgICAyMTcsIDE5MiwgMTUsIDUsIDIyOCwgNTEsIDExMCwgMjI4LCA1MCwgMTUsIDUsIDIyOCwgNTEsIDI0OSwgNjUsIDIyOCwgNTAsIAotICAgIDE1LCA1LCAyMjgsIDUxLCAyNDksIDY1LCAyMjgsIDUxLCAyMzMsIDEzOSwgMTEwLCAyMzMsIDEzOCwgMTUsIDUsIDIyOCwgCi0gICAgNDUsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDI1MywgMTQxLCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAKLSAgICAyNTEsIDE4NCwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjQ2LCAyOSwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgCi0gICAgMTg0LCAyOSwgMjQyLCA4NCwgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjM2LCAzMSwgMjQyLCA3NSwgMTUsIDUsIAotICAgIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjM1LCAzLCAxNSwgNSwgMjI4LCA0NiwgMjU0LCAxODQsIDI5LCAyMzMsIDE1NywgCi0gICAgMTUsIDUsIDIyOCwgNDYsIDI1NCwgMTg0LCAyOSwgMjI5LCAxODcsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIAotICAgIDIyMCwgOTcsIDE1LCA1LCAyMjgsIDQ2LCAyNTQsIDE4NCwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjI4LCA0NiwgMjM0LCA3NSwgCi0gICAgMjksIDI1MSwgMTg0LCAxNSwgNSwgMjI4LCA0NiwgMjM0LCA3NSwgMjksIDI1MSwgMTg1LCA2OSwgMTUsIDUsIDE5MywgMTUsIAotICAgIDUsIDIyNiwgMjA0LCAxNSwgNSwgMjI2LCAxNzQsIDE1LCA1LCAyMjYsIDE0OSwgMTUsIDUsIDIyNiwgMzcsIDE1LCA1LCAKLSAgICAyMjUsIDI0MCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgNjEsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDI1NCwgMTg1LCAxNSwgNSwgCi0gICAgMjI1LCAyNDEsIDI5LCAyNTEsIDE4NCwgMTUsIDUsIDIyNSwgMjQxLCAyOSwgMjUxLCA1NCwgMTUsIDUsIDIyNSwgMjQxLCAKLSAgICAyOSwgNzQsIDE1LCA1LCAyMjUsIDI0MSwgMjksIDcyLCAxNSwgNSwgMjI1LCAyNDEsIDI5LCAyNDAsIDEwOCwgMTUsIDUsIAotICAgIDIyNSwgMjQxLCAyOSwgNjksIDE1LCA1LCAyMjUsIDI0MSwgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjI1LCAyNDEsIDI0OSwgCi0gICAgNjUsIDIyNSwgMjQwLCAxNSwgNSwgMjI1LCAxODUsIDE1LCA1LCAyMjUsIDE4NiwgMjksIDIzNCwgMjQzLCAxNSwgNSwgMjI1LCAKLSAgICAxODYsIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIyNSwgMTg2LCAyOSwgMjEyLCAxMDksIDE1LCA1LCAyMjUsIDE4NiwgMjI3LCAKLSAgICAzMCwgMjI1LCAxODUsIDE1LCA1LCAyMDMsIDE1LCA1LCAyMjQsIDcyLCAxNSwgNSwgMjIzLCAxODgsIDE1LCA1LCAyMjMsIAotICAgIDUxLCAxNSwgNSwgMjIyLCAyMDIsIDE1LCA1LCAyMjIsIDE5MSwgMjI4LCAzNiwgMTUsIDUsIDIyMiwgMTkwLCAxNSwgNSwgCi0gICAgMjIyLCAxOTEsIDI5LCA2MSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjQ2LCAzMywgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjQ2LCAKLSAgICAzMSwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMTU5LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMzQsIDI0NywgMTUsIDUsIDIyMiwgCi0gICAgMTkxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAKLSAgICAyMzEsIDQyLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMjgsIDUwLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMjIsIDE3OSwgMTUsIAotICAgIDUsIDIyMiwgMTkxLCAyOSwgMjIwLCAyMTAsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxOCwgNDEsIDE1LCA1LCAyMjIsIDE5MSwgCi0gICAgMjksIDIxNSwgMTk3LCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDE5NCwgMTUsIDUsIDIyMiwgMTkxLCAyOSwgMjE1LCAKLSAgICAxNjcsIDE1LCA1LCAyMjIsIDE5MSwgMjksIDIxNSwgMTIxLCAxNSwgNSwgMjIyLCAxOTEsIDI5LCAyMTUsIDEwMCwgMTUsIDUsIAotICAgIDIyMiwgMTkxLCAxMTAsIDIyMiwgMTkwLCAxNSwgNSwgMjIyLCAxOTEsIDI0MiwgNzUsIDE1LCA1LCAyMjIsIDE3OSwgMTUsIAotICAgIDUsIDIyMiwgMTgwLCAyMzMsIDE0MSwgMjksIDI1MywgMTQ0LCAxNSwgNSwgMjIyLCAxNTUsIDE1LCA1LCAyMjIsIDE0NywgCi0gICAgMTUsIDUsIDIyMSwgMjQsIDE1LCA1LCAyMjEsIDIyLCAxNSwgNSwgMjIxLCAyMywgMjksIDYxLCAxNSwgNSwgMjIxLCAyMywgCi0gICAgMjksIDI1MiwgOTQsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjQyLCAxNjYsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjI5LCAxODcsIAotICAgIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjIwLCAxNDgsIDE1LCA1LCAyMjEsIDIzLCAyOSwgMjE2LCA2MiwgMTUsIDUsIDIyMSwgCi0gICAgMjMsIDI5LCA2OSwgMTUsIDUsIDIyMSwgMjMsIDI5LCAxMTEsIDk0LCA2MSwgMTUsIDUsIDIyMSwgMjEsIDE1LCA1LCAyMjEsIAotICAgIDE5LCAxNSwgNSwgMjIxLCAxLCAxNSwgNSwgMjIwLCAyNDMsIDE1LCA1LCAyMjAsIDI0NCwgMjQwLCAyMTIsIDE1LCA1LCAKLSAgICAyMjAsIDI0NCwgMTEwLCAyMjAsIDI0NCwgMjQzLCAxMDIsIDExMCwgMjQzLCAxMDIsIDI0MywgNzMsIDExMCwgMjQzLCA3MiwgCi0gICAgMTUsIDUsIDIyMCwgMjQ0LCAxMTAsIDIyMCwgMjQ0LCAyMTgsIDQyLCAxMTAsIDIxOCwgNDIsIDI0MywgNzMsIDExMCwgMjQzLCAKLSAgICA3MiwgMTUsIDUsIDIyMCwgMjM2LCAxNSwgNSwgMjIwLCAyMzEsIDE1LCA1LCAyMjAsIDIyOCwgMTUsIDUsIDIyMCwgMjI3LCAKLSAgICAxNSwgNSwgMjIwLCAyMjQsIDE1LCA1LCAyMjAsIDIxMCwgMTUsIDUsIDIyMCwgMjExLCAyOSwgNjEsIDE1LCA1LCAyMjAsIAotICAgIDIxMSwgMjksIDIzNiwgMTEsIDE1LCA1LCAyMjAsIDIwNCwgMTUsIDUsIDIyMCwgMjA1LCAyOSwgNjEsIDE1LCA1LCAyMjAsIAotICAgIDIwNSwgMjksIDI1MiwgODAsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI1MSwgMzgsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDI0NywgCi0gICAgMTU4LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyNDMsIDcyLCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzYsIDMwLCAxNSwgNSwgCi0gICAgMjIwLCAyMDUsIDI5LCAyMzYsIDMxLCAyNDIsIDc1LCAxNSwgNSwgMjIwLCAyMDUsIDI5LCAyMzMsIDIxMiwgMTUsIDUsIAotICAgIDIyMCwgMjA1LCAyOSwgMjMyLCAxNDQsIDE1LCA1LCAyMjAsIDIwNSwgMjksIDIzMCwgMTYzLCAxNSwgNSwgMjIwLCAyMDUsIAotICAgIDI5LCAyMjIsIDE3OSwgMTUsIDUsIDIyMCwgMTk4LCAxNSwgNSwgMjIwLCAxOTMsIDE1LCA1LCAyMjAsIDE5NCwgMjE3LCAKLSAgICAxOTIsIDE1LCA1LCAyMjAsIDE5NCwgMTEwLCAyMjAsIDE5NCwgMjUxLCAyOCwgMTEwLCAyNTEsIDI3LCAxNSwgNSwgMjIwLCAKLSAgICAxODksIDE1LCA1LCAyMjAsIDE1MCwgMTUsIDUsIDIyMCwgMTUxLCAxMTAsIDIzNSwgMTkxLCAyMjAsIDE1MCwgMTUsIDUsIAotICAgIDIyMCwgMTQ4LCAxNSwgNSwgMjIwLCAxNDcsIDE1LCA1LCAyMjAsIDExNywgMTUsIDUsIDIyMCwgMTE4LCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjIwLCAxMDgsIDE1LCA1LCAyMjAsIDEwNiwgMTUsIDUsIDIyMCwgMTA3LCAxMTAsIDIyMCwgMTA3LCAyMjAsIDE0OCwgCi0gICAgMTUsIDUsIDIyMCwgOTksIDE1LCA1LCAyMjAsIDk3LCAxNSwgNSwgMjE5LCAyNywgMTUsIDUsIDIxOSwgMjgsIDExMCwgMjE5LCAKLSAgICAyNywgMTUsIDUsIDIxOCwgMjU1LCAxNSwgNSwgMjE4LCAyNTQsIDE1LCA1LCAyMTgsIDI1MiwgMTUsIDUsIDIxOCwgMjQ0LCAKLSAgICAxNSwgNSwgMjE4LCAyNDMsIDE1LCA1LCAyMTgsIDIxNywgMTUsIDUsIDIxOCwgMjE2LCAxNSwgNSwgMjE4LCA1MiwgMTUsIDUsIAotICAgIDIxOCwgNTMsIDI1MywgMTMyLCAxNSwgNSwgMjE4LCA1MywgMjksIDI0MSwgMTY1LCAxNSwgNSwgMjE4LCA1MywgMjksIDIzMSwgCi0gICAgNDIsIDE1LCA1LCAyMTgsIDUzLCAyNDIsIDc1LCAxNSwgNSwgMjE4LCA0MSwgMTUsIDUsIDIxOCwgNDIsIDExMCwgMjE4LCAKLSAgICA0MiwgMjI5LCA2NSwgMTEwLCAyMjksIDY1LCAyNDcsIDE0MCwgMTEwLCAyNDcsIDEzOSwgMTUsIDUsIDIxOCwgNDIsIDIxOSwgCi0gICAgMTY1LCAxNSwgNSwgMjE4LCAzMywgMTUsIDUsIDEyNiwgMjksIDI1MSwgMTg0LCAxNSwgNSwgMTI2LCAyOSwgMjQyLCA4NCwgCi0gICAgMTUsIDUsIDEyNiwgMjksIDIyMCwgMjQzLCAxNSwgNSwgMTI2LCAyOSwgMjIwLCAxNTAsIDE1LCA1LCAxMjYsIDI5LCAyMTYsIAotICAgIDc3LCAxNSwgNSwgMTI2LCAyOSwgMjE1LCAxODgsIDE1LCA1LCAyMTgsIDIyLCAxNSwgNSwgMjE4LCAxLCAxNSwgNSwgMjE3LCAKLSAgICAyMjksIDE1LCA1LCAyMTcsIDIzMCwgMjQyLCA3NSwgMTUsIDUsIDIxNywgNzEsIDE1LCA1LCAyMTcsIDcyLCAyMTcsIDE5MiwgCi0gICAgMTUsIDUsIDIxNywgNDQsIDE1LCA1LCAyMTcsIDI1LCAxNSwgNSwgMjE3LCAyNiwgMjksIDIxOCwgMjIsIDE1LCA1LCAyMTcsIAotICAgIDI2LCAxMTAsIDIxNywgMjUsIDE1LCA1LCAyMTcsIDI2LCAxMTAsIDIxNywgMjYsIDI0MywgMTAyLCAxMTAsIDI0MywgMTAyLCAKLSAgICAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAyMTYsIDgyLCAxNSwgNSwgMjE2LCA3NywgMTUsIDUsIDIxNiwgNzUsIAotICAgIDE1LCA1LCAyMTYsIDcyLCAxNSwgNSwgMjE2LCA2MiwgMTUsIDUsIDIxNiwgNjMsIDExMCwgMjE2LCA2MywgMjEyLCAxMTAsIAotICAgIDExMCwgMjEyLCAxMDksIDE1LCA1LCA2OSwgMTUsIDUsIDExMSwgMjQyLCA4NCwgMTUsIDUsIDExMSwgMTExLCA2OSwgMTUsIAotICAgIDUsIDExMSwgMTEwLCAxMTEsIDIyNiwgMjE0LCAxMTAsIDIyNiwgMjE0LCAyNDMsIDczLCAxMTAsIDI0MywgNzIsIDE1LCA1LCAKLSAgICAxMTEsIDExMCwgMTExLCAyMTgsIDIxOCwgMTEwLCAyMTgsIDIxNywgMTUsIDUsIDExMSwgMTEwLCAxMTEsIDExMSwgMjIzLCAKLSAgICAyMDIsIDExMCwgMTExLCAyMjMsIDIwMSwgMTUsIDUsIDIxNSwgMTk3LCAxNSwgNSwgMjE1LCAxOTQsIDE1LCA1LCAyMTUsIAotICAgIDE4OCwgMTUsIDUsIDIxNSwgMTg5LCAyMzMsIDIxMiwgMTUsIDUsIDIxNSwgMTg5LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg5LCAyOSwgMjMxLCA0MiwgMTUsIDUsIDIxNSwgMTg5LCAyOSwgMTExLCA5NCwgMTExLCA5NCwgNjksIDE1LCA1LCAyMTUsIAotICAgIDE4OSwgMjksIDExMSwgOTQsIDExMSwgOTQsIDExMSwgMjQyLCA3NSwgMTUsIDUsIDIxNSwgMTg5LCAyNDIsIDc1LCAxNSwgNSwgCi0gICAgMjE1LCAxODksIDIyMCwgMjI1LCAxNSwgNSwgMjE1LCAxODksIDIyMCwgMjI2LCAyOSwgMjUyLCA5NCwgMTUsIDUsIDIxNSwgCi0gICAgMTg0LCAxNSwgNSwgMjE1LCAxNjcsIDE1LCA1LCAyMTUsIDE2OCwgMjksIDIzMywgMTQwLCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAKLSAgICAyMzEsIDE1NywgOTQsIDI0OCwgMTY0LCAxNSwgNSwgMjE1LCAxNjgsIDI5LCAyMjEsIDIyLCAxNSwgNSwgMjE1LCAxNjgsIAotICAgIDI5LCA2OSwgMTUsIDUsIDIxNSwgMTY2LCAxNSwgNSwgMjE1LCAxNjIsIDE1LCA1LCAyMTUsIDE2MywgMjksIDIzNCwgMjEyLCAKLSAgICAxNSwgNSwgMjE1LCAxNjMsIDI5LCAxOTMsIDE1LCA1LCAyMTUsIDE2MCwgMTUsIDUsIDIxNSwgMTYxLCAyNDIsIDc1LCAxNSwgCi0gICAgNSwgMjE1LCAxMjEsIDE1LCA1LCAyMTUsIDEyMiwgMjQ5LCA2NSwgMjE1LCAxMjEsIDE1LCA1LCAyMTUsIDEyMiwgMjIwLCAKLSAgICAyMjUsIDE1LCA1LCAyMTUsIDExOSwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMTE4LCA5NCwgMTU5LCAxNSwgNSwgMjE1LCAxMjAsIAotICAgIDI5LCAxMTgsIDk0LCAyMDUsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDI1NCwgODYsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDE1OSwgCi0gICAgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjI4LCA1MCwgMTUsIDUsIDIxNSwgMTIwLCAyOSwgMjE1LCAxOTcsIDE1LCA1LCAyMTUsIAotICAgIDEyMCwgMjksIDIxNSwgMTk4LCA5NCwgMjUzLCAxNDYsIDE1LCA1LCAyMTUsIDEyMCwgMjksIDIxNSwgMTk4LCA5NCwgMjUxLCAKLSAgICAxODQsIDE1LCA1LCAyMTUsIDExOCwgMTUsIDUsIDIxNSwgMTE1LCAxNSwgNSwgMjE1LCAxMTQsIDE1LCA1LCAyMTUsIDExMCwgCi0gICAgMTUsIDUsIDIxNSwgMTExLCAyOSwgNjEsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI1MywgMTQxLCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAxMzQsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0NiwgMjMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDI0MywgMTEwLCAxNSwgCi0gICAgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDk0LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyNDMsIDgxLCAyMTcsIDE5MiwgMTUsIDUsIAotICAgIDIxNSwgMTExLCAyOSwgMjQzLCA3MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjQyLCA5MiwgMTUsIDUsIDIxNSwgMTExLCAyOSwgCi0gICAgMTU5LCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzYsIDMwLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzYsIDExLCAxNSwgNSwgCi0gICAgMjE1LCAxMTEsIDI5LCAyMzUsIDE2MywgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjM0LCAxMDEsIDE1LCA1LCAyMTUsIDExMSwgCi0gICAgMjksIDIzMiwgMTQyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAyMzEsIDEsIDE1LCA1LCAyMTUsIDExMSwgMjksIDE5MywgMTUsIAotICAgIDUsIDIxNSwgMTExLCAyOSwgMjIwLCAyNDMsIDE1LCA1LCAyMTUsIDExMSwgMjksIDIyMCwgMTA2LCAxNSwgNSwgMjE1LCAKLSAgICAxMTEsIDI5LCAyMTYsIDgyLCAxNSwgNSwgMjE1LCAxMTEsIDI5LCAxMTEsIDk0LCAyNDIsIDg0LCAxNSwgNSwgMjE1LCAxMTEsIAotICAgIDI5LCAyMTUsIDE4OCwgMTUsIDUsIDIxNSwgMTExLCAyOSwgMjE1LCAxMDgsIDE1LCA1LCAyMTUsIDEwOCwgMTUsIDUsIDIxNSwgCi0gICAgMTA5LCAyOSwgNjksIDE1LCA1LCAyMTUsIDEwMCwgMTUsIDUsIDIxNSwgMTAxLCAyOSwgNjEsIDE1LCA1LCAyMTUsIDEwMSwgCi0gICAgMjksIDIzMywgMjM4LCAxNSwgNSwgMjE1LCAxMDEsIDI5LCAyMzMsIDIxNywgMTUsIDUsIDIxNSwgMTAxLCAyOSwgMjE4LCAKLSAgICAyMiwgMTUsIDUsIDIxNSwgOTYsIDE1LCA1LCAyMTUsIDk5LCAxNSwgNSwgMjE1LCA5NywgMTUsIDUsIDIxNSwgOTMsIDE1LCAKLSAgICA1LCAyMTUsIDgyLCAxNSwgNSwgMjE1LCA4MywgMjksIDIzNCwgMjEyLCAxNSwgNSwgMjE1LCA4MSwgMTUsIDUsIDIxMiwgCi0gICAgMTA5LCAxNSwgNSwgMjEyLCAxMTAsIDIxNywgMTkyLCAxNSwgNSwgMjEyLCAxMTAsIDkxLCAyOSwgMjMzLCAyMTcsIDE1LCA1LCAKLSAgICAyMTIsIDEwNiwgMTUsIDUsIDIxMiwgOTksIDE1LCA1LCAyMTIsIDg2LCAxNSwgNSwgMjEyLCAzNywgMTUsIDUsIDIxMiwgMzgsIAotICAgIDExMCwgMjEyLCAzNywgMTUsIDUsIDIxMiwgMzYsIDE1LCA1LCAyMTIsIDM0LCAxNSwgNSwgMjEyLCAzNSwgMjM1LCA3LCAKLSAgICAyMTcsIDE5MiwgMTUsIDUsIDIxMiwgMjksIDE1LCA1LCAyMTIsIDIxLCAxNSwgNSwgMjEyLCA4LCAxNSwgNSwgMjEyLCA2LCAKLSAgICAxNSwgNSwgMjEyLCA3LCAyOSwgNjEsIDE1LCA1LCAyMTIsIDUsIDE1LCA1LCAyMTIsIDQsIDE1LCAxMjgsIDUsIDExNywgCi0gICAgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDEzMywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNTMsIDE0NiwgMTUsIAotICAgIDEyOCwgNSwgMjQ0LCA1MCwgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDIyMCwgNTMsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAKLSAgICAyMjEsIDQzLCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDI1MywgMTQ2LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAKLSAgICAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTMzLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI0NywgMTM5LCAxNSwgCi0gICAgMTI4LCA1LCAyNDQsIDUwLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjIwLCA1MywgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIAotICAgIDIyMSwgNDMsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDUsIDE1MCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDIyOSwgMzEsIAotICAgIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgNjksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDY5LCAxNSwgMTI4LCA1LCAKLSAgICAyMjAsIDUzLCA2OSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgNjksIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCA2OSwgMTUsIDEyOCwgCi0gICAgNSwgMjI5LCAzMSwgNjksIDE1LCAxMjgsIDUsIDEyMiwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMTE3LCAyNDMsIDE0LCAxNSwgCi0gICAgMTI4LCA1LCAxMzMsIDI0MywgMTQsIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAKLSAgICAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNDMsIDE0LCAxNSwgMTI4LCA1LCAyMjEsIDQzLCAyNDMsIDE0LCAxNSwgCi0gICAgMTI4LCA1LCAyNDUsIDE1MCwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMjI5LCAzMSwgMjQzLCAxNCwgMTUsIDEyOCwgNSwgMTIyLCAKLSAgICAyNDMsIDExLCAxNSwgMTI4LCA1LCAxMTcsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDEzMywgMjQzLCAxMSwgMTUsIDEyOCwgNSwgCi0gICAgMjQzLCAyMzcsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDI0MywgMTEsIDE1LCAxMjgsIDUsIDExNywgMjIxLCAxLCAKLSAgICAxNSwgMTI4LCA1LCAxMzMsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMTMzLCAyMjEsIDIsIDIxNCwgMjQ0LCAxNywgMTUsIDEyOCwgCi0gICAgNSwgMjQzLCAyMzcsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIxLCAxLCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAKLSAgICAyMjEsIDEsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIyMSwgMSwgMTUsIDEyOCwgNSwgMjQ1LCAxNTAsIDIyMSwgMSwgMTUsIAotICAgIDEyOCwgNSwgMjI5LCAzMSwgMjIxLCAxLCAxNSwgMTI4LCA1LCAxMjIsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAxMTcsIDIyMCwgCi0gICAgMjUyLCAxNSwgMTI4LCA1LCAxMzMsIDIyMCwgMjUyLCAxNSwgMTI4LCA1LCAxMzMsIDIyMCwgMjUzLCAyMTQsIDI0NCwgMTcsIAotICAgIDE1LCAxMjgsIDUsIDI0MywgMjM3LCAyMjAsIDI1MiwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjIwLCAyNTIsIDE1LCAxMjgsIAotICAgIDUsIDIyMSwgMiwgMjksIDI0MywgOTUsIDk0LCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMjIxLCAyLCAyOSwgMjQzLCA5NSwgCi0gICAgOTQsIDIzMSwgMSwgMTUsIDEyOCwgNSwgMTIyLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMTcsIDI1MSwgMjQsIDE1LCAxMjgsIAotICAgIDUsIDEzMywgMjUxLCAyNCwgMTUsIDEyOCwgNSwgMTMzLCAyNTEsIDI1LCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIDUsIDI0MywgCi0gICAgMjM3LCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTEsIDI0LCAxNSwgMTI4LCA1LCAxMzMsIDIxNCwgMjQ0LCAKLSAgICAyNDMsIDI0NSwgMjQ1LCAzOSwgMTUsIDEyOCwgNSwgMTMzLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDI0NSwgMzYsIDE1LCAxMjgsIAotICAgIDUsIDI0MywgMjM3LCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIzMiwgMjQ2LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NCwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjMyLCAKLSAgICAyNDcsIDYxLCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzIsIDI0NywgMjUzLCA3NCwgMTUsIAotICAgIDEyOCwgNSwgMjIwLCA1MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyNTMsIDE0MywgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAKLSAgICAyNDQsIDI0MywgMjQ1LCAyMzYsIDMsIDE1LCAxMjgsIDUsIDIyMSwgNDMsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCA1LCAKLSAgICA2MSwgMTUsIDEyOCwgNSwgMjIxLCA0MywgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDUsIDI1MywgNzQsIDE1LCAxMjgsIDUsIAotICAgIDI0NSwgMTUwLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDIxNSwgOTUsIDE1LCAxMjgsIDUsIDI0NSwgMTUwLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDIxNSwgOTQsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAxOSwgMTUsIAotICAgIDEyOCwgNSwgMjI5LCAzMSwgMjE0LCAyNDQsIDI0MywgMjQ1LCAyMzYsIDE4LCAxNSwgMTI4LCA1LCAyMjksIDMxLCAyMTQsIAotICAgIDI0NCwgMjQzLCAyNDUsIDIzNiwgMTcsIDE1LCAxMjgsIDUsIDIyOSwgMzEsIDIxNCwgMjQ0LCAyNDMsIDI0NSwgMjM2LCAyMCwgCi0gICAgNjEsIDE1LCAxMjgsIDUsIDExNywgMjUzLCAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAxMzMsIDI1MywgMTQ3LCAyMTcsIAotICAgIDE5MiwgMTUsIDEyOCwgNSwgMjQzLCAyMzcsIDI1MywgMTQ3LCAyMTcsIDE5MiwgMTUsIDEyOCwgNSwgMjQ0LCA1MCwgMjUzLCAKLSAgICAxNDcsIDIxNywgMTkyLCAxNSwgMTI4LCA1LCAyMjAsIDUzLCAyNTMsIDE0NywgMjE3LCAxOTIsIDE1LCAxMjgsIDUsIDEyMiwgCi0gICAgMjUyLCA2OSwgMTUsIDEyOCwgNSwgMTE3LCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAxMzMsIDI1MiwgNjksIDE1LCAxMjgsIDUsIAotICAgIDI0MywgMjM3LCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAyNDMsIDIzNywgMjUyLCA3MCwgMjE0LCAyNDQsIDE3LCAxNSwgMTI4LCAKLSAgICA1LCAyNDQsIDUwLCAyNTIsIDY5LCAxNSwgMTI4LCA1LCAyNDQsIDUwLCAyNTIsIDcwLCAyMTQsIDI0NCwgMTcsIDE1LCAxMjgsIAotICAgIDUsIDIyOSwgNDEsIDE1LCAxMjgsIDUsIDIyOSwgNDIsIDE1LCAxMjgsIDUsIDEyMiwgMjQ1LCAzNSwgMTUsIDEyOCwgNSwgCi0gICAgMTE3LCAyNDUsIDM1LCAxNSwgMTI4LCA1LCAxMjIsIDIxNywgMTIyLCAyNDcsIDEzOSwgMTUsIDEyOCwgNSwgMTE3LCAyMTcsIAotICAgIDEyMCwgMjQ3LCAxMzksIDE1LCAxMjgsIDUsIDI0NCwgNTAsIDIyMCwgNDIsIDI0NywgMTM5LCAxNSwgMTI4LCA1LCAxMjIsIAotICAgIDIxNywgMTIyLCAyMTQsIDI0NCwgMjQzLCAyNDUsIDYxLCAxNSwgMTI4LCA1LCAxMTcsIDIxNywgMTIwLCAyMTQsIDI0NCwgCi0gICAgMjQzLCAyNDUsIDYxLCAxNSwgMTI4LCA1LCAxMjIsIDI0NSwgMTQ2LCAyNTMsIDE0NiwgMTUsIDEyOCwgNSwgMTIyLCAyMjQsIAotICAgIDE2NywgMjUzLCAxNDYsIDE1LCAxMjgsIDUsIDUzLCAyNTMsIDEzNSwgMTIyLCAyMjAsIDQzLCAxNSwgMTI4LCA1LCA1MywgCi0gICAgMjUzLCAxMzUsIDEyMiwgMjI0LCAxNjYsIDE1LCAyMjUsIDI3LCA1LCA1MywgMjUzLCAxMzUsIDIxMywgMTk2LCAyNDcsIAotICAgIDEyNCwgMTUsIDIyNSwgMjcsIDUsIDcxLCAyNDksIDE2NCwgMTUsIDIyNSwgMjcsIDUsIDI0NywgMjA3LCAyNDksIDE2NCwgCi0gICAgMTUsIDIyNSwgMjcsIDUsIDI0NywgMjA3LCAyMTYsIDE3OSwgMTAsIDExLCAyNTUsIDU4LCAxMCwgMTEsIDI1NSwgNTcsIDEwLCAKLSAgICAxMSwgMjU1LCA1NiwgMTAsIDExLCAyNTUsIDU1LCAxMCwgMTEsIDI1NSwgNTQsIDEwLCAxMSwgMjU1LCA1MywgMTAsIDExLCAKLSAgICAyNTUsIDUyLCAxMCwgMTEsIDI1NSwgNTEsIDEwLCAxMSwgMjU1LCA1MCwgMTAsIDExLCAyNTUsIDQ5LCAxMCwgMTEsIDI1NSwgCi0gICAgNDgsIDEwLCAxMSwgMjU1LCA0NywgMTAsIDExLCAyNTUsIDQ2LCAxMCwgMTEsIDI1NSwgNDUsIDEwLCAxMSwgMjU1LCA0NCwgCi0gICAgMTAsIDExLCAyNTUsIDQzLCAxMCwgMTEsIDI1NSwgNDIsIDEwLCAxMSwgMjU1LCA0MSwgMTAsIDExLCAyNTUsIDQwLCAxMCwgCi0gICAgMTEsIDI1NSwgMzksIDEwLCAxMSwgMjU1LCAzOCwgMTAsIDExLCAyNTUsIDM3LCAxMCwgMTEsIDI1NSwgMzYsIDEwLCAxMSwgCi0gICAgMjU1LCAzNSwgMTAsIDExLCAyNTUsIDM0LCAxMCwgMTEsIDI1NSwgMzMsIDEwLCAxMSwgMjU1LCAzMiwgMTAsIDExLCAyNTUsIAotICAgIDMxLCAxMCwgMTEsIDI1NSwgMzAsIDEwLCAxMSwgMjU1LCAyOSwgMTAsIDExLCAyNTUsIDI4LCAxMCwgMTEsIDI1NSwgMjcsIAotICAgIDEwLCAxMSwgMjU1LCAyNiwgMTAsIDExLCAyNTUsIDI1LCAxMCwgMTEsIDI1NSwgMjQsIDEwLCAxMSwgMjU1LCAyMywgMTAsIAotICAgIDExLCAyNTUsIDIyLCAxMCwgMTEsIDI1NSwgMjEsIDEwLCAxMSwgMjU1LCAyMCwgMTAsIDExLCAyNTUsIDE5LCAxMCwgMTEsIAotICAgIDI1NSwgMTgsIDEwLCAxMSwgMjU1LCAxNywgMTAsIDExLCAyNTUsIDE2LCAxMCwgMTEsIDI1NSwgMTUsIDEwLCAxMSwgMjU1LCAKLSAgICAxNCwgMTAsIDExLCAyNTUsIDEzLCAxMCwgMTEsIDI1NSwgMTIsIDEwLCAxMSwgMjU1LCAxMSwgMTAsIDExLCAyNTUsIDEwLCAKLSAgICAxMCwgMTEsIDI1NSwgOSwgMTAsIDExLCAyNTUsIDgsIDEwLCAxMSwgMjU1LCA3LCAxMCwgMTEsIDI1NSwgNiwgMTAsIDExLCAKLSAgICAyNTUsIDUsIDEwLCAxMSwgMjU1LCA0LCAxMCwgMTEsIDI1NSwgMywgMTAsIDExLCAyNTUsIDIsIDEwLCAxMSwgMjU1LCAxLCAKLSAgICAxMCwgMTEsIDI1NSwgMCwgMTAsIDExLCAyNTQsIDI1NSwgMTAsIDExLCAyNTQsIDI1NCwgMTAsIDExLCAyNTQsIDI1MywgMTAsIAotICAgIDExLCAyNTQsIDI1MiwgMTAsIDExLCAyNTQsIDI1MSwgMTAsIDExLCAyNTQsIDI1MCwgMTAsIDExLCAyNTQsIDI0OSwgMTAsIAotICAgIDExLCAyNTQsIDI0OCwgMTAsIDExLCAyNTQsIDI0NywgMTAsIDExLCAyNTQsIDI0NiwgMTAsIDExLCAyNTQsIDI0NSwgMTAsIAotICAgIDExLCAyNTQsIDI0NCwgMTAsIDExLCAyNTQsIDI0MywgMTAsIDExLCAyNTQsIDI0MiwgMTAsIDExLCAyNTQsIDI0MSwgMTAsIAotICAgIDExLCAyNTQsIDI0MCwgMTAsIDExLCAyNTQsIDIzOSwgMTAsIDExLCAyNTQsIDIzOCwgMTAsIDExLCAyNTQsIDIzNywgMTAsIAotICAgIDExLCAyNTQsIDIzNiwgMTAsIDExLCAyNTQsIDIzNSwgMTAsIDExLCAyNTMsIDcyLCAxMCwgMTEsIDI1MywgNzAsIDEwLCAxMSwgCi0gICAgMjUzLCA2OCwgMTAsIDExLCAyNTMsIDY2LCAxMCwgMTEsIDI1MywgNjQsIDEwLCAxMSwgMjUzLCA2MywgMTAsIDExLCAyNTMsIAotICAgIDYxLCAxMCwgMTEsIDI1MywgNTksIDEwLCAxMSwgMjUzLCA1NywgMTAsIDExLCAyNTMsIDU1LCAxMCwgMTEsIDI1MCwgMjQ4LCAKLSAgICAxMCwgMTEsIDI1MCwgMjQ3LCAxMCwgMTEsIDI1MCwgMjQ2LCAxMCwgMTEsIDI1MCwgMjQ1LCAxMCwgMTEsIDI1MCwgMjQ0LCAKLSAgICAxMCwgMTEsIDI1MCwgMjQzLCAxMCwgMTEsIDI1MCwgMjQyLCAxMCwgMTEsIDI1MCwgMjQxLCAxMCwgMTEsIDI1MCwgMjQwLCAKLSAgICAxMCwgMTEsIDI1MCwgMjM5LCAxMCwgMTEsIDI1MCwgMjM4LCAxMCwgMTEsIDI1MCwgMjM3LCAxMCwgMTEsIDI1MCwgMjM2LCAKLSAgICAxMCwgMTEsIDI1MCwgMjM1LCAxMCwgMTEsIDI1MCwgMjM0LCAxMCwgMTEsIDI1MCwgMjMzLCAxMCwgMTEsIDI1MCwgMjMyLCAKLSAgICAxMCwgMTEsIDI1MCwgMjMxLCAxMCwgMTEsIDI1MCwgMjMwLCAxMCwgMTEsIDI1MCwgMjI5LCAxMCwgMTEsIDI1MCwgMjI4LCAKLSAgICAxMCwgMTEsIDI1MCwgMjI3LCAxMCwgMTEsIDI1MCwgMjI2LCAxMCwgMTEsIDI1MCwgMjI1LCAxMCwgMTEsIDI1MCwgMjI0LCAKLSAgICAxMCwgMTEsIDI1MCwgMjIzLCAxMCwgMTEsIDI1MCwgMjIyLCAxMCwgMTEsIDI1MCwgMjIxLCAxMCwgMTEsIDI0OSwgMiwgMTAsIAotICAgIDExLCAyNDksIDEsIDEwLCAxMSwgMjQ5LCAwLCAxMCwgMTEsIDI0OCwgMjU1LCAxMCwgMTEsIDI0OCwgMjU0LCAxMCwgMTEsIAotICAgIDI0OCwgMjUzLCAxMCwgMTEsIDI0OCwgMjUyLCAxMCwgMTEsIDI0OCwgMjUxLCAxMCwgMTEsIDI0OCwgMjUwLCAxMCwgMTEsIAotICAgIDI0OCwgMjQ5LCAxMCwgMTEsIDI0OCwgMjQ4LCAxMCwgMTEsIDI0OCwgMjQ3LCAxMCwgMTEsIDI0OCwgMjQ2LCAxMCwgMTEsIAotICAgIDI0OCwgMjQ1LCAxMCwgMTEsIDI0OCwgMjQ0LCAxMCwgMTEsIDI0OCwgMjQzLCAxMCwgMTEsIDI0OCwgMjQyLCAxMCwgMTEsIAotICAgIDI0OCwgMjQxLCAxMCwgMTEsIDI0OCwgMjQwLCAxMCwgMTEsIDI0OCwgMjM5LCAxMCwgMTEsIDI0OCwgMjM4LCAxMCwgMTEsIAotICAgIDI0OCwgMjM3LCAxMCwgMTEsIDI0OCwgMjM2LCAxMCwgMTEsIDI0OCwgMjM1LCAxMCwgMTEsIDI0OCwgMjM0LCAxMCwgMTEsIAotICAgIDI0OCwgMjMzLCAxMCwgMTEsIDI0OCwgMjMyLCAxMCwgMTEsIDI0OCwgMjMxLCAxMCwgMTEsIDI0OCwgMjMwLCAxMCwgMTEsIAotICAgIDI0OCwgMjI5LCAxMCwgMTEsIDI0OCwgMjI4LCAxMCwgMTEsIDI0OCwgMjI3LCAxMCwgMTEsIDI0OCwgMjI2LCAxMCwgMTEsIAotICAgIDI0OCwgMjI1LCAxMCwgMTEsIDI0OCwgMjI0LCAxMCwgMTEsIDI0OCwgMjIzLCAxMCwgMTEsIDI0OCwgMjIyLCAxMCwgMTEsIAotICAgIDI0OCwgMjIxLCAxMCwgMTEsIDI0OCwgMjIwLCAxMCwgMTEsIDI0OCwgMjE5LCAxMCwgMTEsIDI0OCwgMjE4LCAxMCwgMTEsIAotICAgIDI0OCwgMjE3LCAxMCwgMTEsIDI0OCwgMjE2LCAxMCwgMTEsIDI0OCwgMjE1LCAxMCwgMTEsIDI0OCwgMjE0LCAxMCwgMTEsIAotICAgIDI0OCwgMjEzLCAxMCwgMTEsIDI0OCwgMjEyLCAxMCwgMTEsIDI0OCwgMjExLCAxMCwgMTEsIDI0OCwgMjEwLCAxMCwgMTEsIAotICAgIDI0OCwgMjA5LCAxMCwgMTEsIDI0OCwgMjA4LCAxMCwgMTEsIDI0OCwgMjA3LCAxMCwgMTEsIDI0OCwgMjA2LCAxMCwgMTEsIAotICAgIDI0OCwgMjA1LCAxMCwgMTEsIDI0OCwgMjA0LCAxMCwgMTEsIDI0OCwgMjAzLCAxMCwgMTEsIDI0OCwgMjAyLCAxMCwgMTEsIAotICAgIDI0OCwgMjAxLCAxMCwgMTEsIDI0OCwgMjAwLCAxMCwgMTEsIDI0OCwgMTk5LCAxMCwgMTEsIDI0OCwgMTk4LCAxMCwgMTEsIAotICAgIDI0OCwgMTk3LCAxMCwgMTEsIDI0OCwgMTk2LCAxMCwgMTEsIDI0OCwgMTk1LCAxMCwgMTEsIDI0OCwgMTk0LCAxMCwgMTEsIAotICAgIDI0OCwgMTkzLCAxMCwgMTEsIDI0OCwgMTkyLCAxMCwgMTEsIDI0OCwgMTkxLCAxMCwgMTEsIDI0OCwgMTkwLCAxMCwgMTEsIAotICAgIDI0OCwgMTg5LCAxMCwgMTEsIDI0OCwgMTg4LCAxMCwgMTEsIDI0OCwgMTg3LCAxMCwgMTEsIDI0OCwgMTg2LCAxMCwgMTEsIAotICAgIDI0OCwgMTg1LCAxMCwgMTEsIDI0OCwgMTg0LCAxMCwgMTEsIDI0OCwgMTgzLCAxMCwgMTEsIDI0OCwgMTgyLCAxMCwgMTEsIAotICAgIDI0OCwgMTgxLCAxMCwgMTEsIDI0OCwgMTgwLCAxMCwgMTEsIDI0OCwgMTc5LCAxMCwgMTEsIDI0OCwgMTc4LCAxMCwgMTEsIAotICAgIDI0OCwgMTc3LCAxMCwgMTEsIDI0OCwgMTc2LCAxMCwgMTEsIDI0OCwgMTc1LCAxMCwgMTEsIDI0OCwgMTc0LCAxMCwgMTEsIAotICAgIDI0OCwgMTczLCAxMCwgMTEsIDI0OCwgMTcyLCAxMCwgMTEsIDI0OCwgMTcxLCAxMCwgMTEsIDI0OCwgMTcwLCAxMCwgMTEsIAotICAgIDI0OCwgMTY5LCAxMCwgMTEsIDI0OCwgMTY4LCAxMCwgMTEsIDI0OCwgMTY3LCAxMCwgMTEsIDI0NSwgMjM1LCAxMCwgMTEsIAotICAgIDI0NSwgMjM0LCAxMCwgMTEsIDI0NSwgMjMzLCAxMCwgMTEsIDI0NSwgMjMyLCAxMCwgMTEsIDI0NSwgMjMxLCAxMCwgMTEsIAotICAgIDI0NSwgMjMwLCAxMCwgMTEsIDI0NSwgMjI5LCAxMCwgMTEsIDI0NSwgMjI4LCAxMCwgMTEsIDI0NSwgMjI3LCAxMCwgMTEsIAotICAgIDI0NSwgMjI2LCAxMCwgMTEsIDI0NSwgMjI1LCAxMCwgMTEsIDI0NSwgMjI0LCAxMCwgMTEsIDI0NSwgMjIzLCAxMCwgMTEsIAotICAgIDI0NSwgMjIyLCAxMCwgMTEsIDI0NSwgMjIxLCAxMCwgMTEsIDI0NSwgMjIwLCAxMCwgMTEsIDI0NSwgMjE5LCAxMCwgMTEsIAotICAgIDI0NSwgMjE4LCAxMCwgMTEsIDI0NSwgMjE3LCAxMCwgMTEsIDI0NSwgMjE2LCAxMCwgMTEsIDI0NSwgMjE1LCAxMCwgMTEsIAotICAgIDI0NSwgMjE0LCAxMCwgMTEsIDI0NSwgMjEzLCAxMCwgMTEsIDI0NSwgMjEyLCAxMCwgMTEsIDI0NSwgMjExLCAxMCwgMTEsIAotICAgIDI0NSwgMjEwLCAxMCwgMTEsIDI0NSwgMjA5LCAxMCwgMTEsIDI0NSwgMjA4LCAxMCwgMTEsIDI0NSwgMjA3LCAxMCwgMTEsIAotICAgIDI0NSwgMjA2LCAxMCwgMTEsIDI0NSwgMjA1LCAxMCwgMTEsIDI0NSwgMjA0LCAxMCwgMTEsIDI0NSwgMjAzLCAxMCwgMTEsIAotICAgIDI0NSwgMjAyLCAxMCwgMTEsIDI0NSwgMjAxLCAxMCwgMTEsIDI0NSwgMjAwLCAxMCwgMTEsIDI0NSwgMTk5LCAxMCwgMTEsIAotICAgIDI0NSwgMTk4LCAxMCwgMTEsIDI0NSwgMTk3LCAxMCwgMTEsIDI0NSwgMTk2LCAxMCwgMTEsIDI0NSwgMTk1LCAxMCwgMTEsIAotICAgIDI0NSwgMTk0LCAxMCwgMTEsIDI0NSwgMTkzLCAxMCwgMTEsIDI0NSwgMTkyLCAxMCwgMTEsIDI0NCwgMjI5LCAxMCwgMTEsIAotICAgIDI0NCwgMjI4LCAxMCwgMTEsIDI0NCwgMjI3LCAxMCwgMTEsIDI0NCwgMjI2LCAxMCwgMTEsIDI0NCwgMjI1LCAxMCwgMTEsIAotICAgIDI0NCwgMjI0LCAxMCwgMTEsIDI0NCwgMjIzLCAxMCwgMTEsIDI0NCwgMjIyLCAxMCwgMTEsIDI0NCwgMjIxLCAxMCwgMTEsIAotICAgIDI0NCwgMjIwLCAxMCwgMTEsIDI0NCwgMjE5LCAxMCwgMTEsIDI0NCwgMjE4LCAxMCwgMTEsIDI0NCwgMjE3LCAxMCwgMTEsIAotICAgIDI0NCwgMjE2LCAxMCwgMTEsIDI0NCwgMjE1LCAxMCwgMTEsIDI0NCwgMjE0LCAxMCwgMTEsIDI0NCwgMjEzLCAxMCwgMTEsIAotICAgIDI0NCwgMjEyLCAxMCwgMTEsIDI0NCwgMjExLCAxMCwgMTEsIDI0NCwgMjEwLCAxMCwgMTEsIDI0NCwgMjA5LCAxMCwgMTEsIAotICAgIDI0NCwgMjA4LCAxMCwgMTEsIDI0NCwgMjA3LCAxMCwgMTEsIDI0NCwgMjA2LCAxMCwgMTEsIDI0NCwgMjA1LCAxMCwgMTEsIAotICAgIDI0NCwgMjA0LCAxMCwgMTEsIDI0NCwgMjAzLCAxMCwgMTEsIDI0NCwgMjAyLCAxMCwgMTEsIDI0NCwgMjAxLCAxMCwgMTEsIAotICAgIDI0NCwgMjAwLCAxMCwgMTEsIDI0NCwgMTk5LCAxMCwgMTEsIDI0NCwgMTk4LCAxMCwgMTEsIDI0NCwgMTk3LCAxMCwgMTEsIAotICAgIDI0NCwgMTk2LCAxMCwgMTEsIDI0NCwgMTk1LCAxMCwgMTEsIDI0NCwgMTk0LCAxMCwgMTEsIDI0NCwgMTkzLCAxMCwgMTEsIAotICAgIDI0NCwgMTkyLCAxMCwgMTEsIDI0NCwgMTkxLCAxMCwgMTEsIDI0NCwgMTkwLCAxMCwgMTEsIDI0NCwgMTg5LCAxMCwgMTEsIAotICAgIDI0NCwgMTg4LCAxMCwgMTEsIDI0NCwgMTg3LCAxMCwgMTEsIDI0NCwgMTg2LCAxMCwgMTEsIDI0NCwgMTg1LCAxMCwgMTEsIAotICAgIDI0NCwgMTg0LCAxMCwgMTEsIDI0NCwgMTgzLCAxMCwgMTEsIDI0NCwgMTgyLCAxMCwgMTEsIDI0NCwgMTgxLCAxMCwgMTEsIAotICAgIDI0NCwgMTgwLCAxMCwgMTEsIDI0NCwgMTc5LCAxMCwgMTEsIDI0NCwgMTc4LCAxMCwgMTEsIDI0NCwgMTc3LCAxMCwgMTEsIAotICAgIDI0NCwgMTc2LCAxMCwgMTEsIDI0NCwgMTc1LCAxMCwgMTEsIDI0NCwgMTc0LCAxMCwgMTEsIDI0NCwgMTczLCAxMCwgMTEsIAotICAgIDI0NCwgMTcyLCAxMCwgMTEsIDI0NCwgMTcxLCAxMCwgMTEsIDI0NCwgMTcwLCAxMCwgMTEsIDI0NCwgMTY5LCAxMCwgMTEsIAotICAgIDI0NCwgMTY4LCAxMCwgMTEsIDI0NCwgMTY3LCAxMCwgMTEsIDI0NCwgMTY2LCAxMCwgMTEsIDI0NCwgMTY1LCAxMCwgMTEsIAotICAgIDI0MywgMTc2LCAxMCwgMTEsIDI0MywgMTc1LCAxMCwgMTEsIDI0MywgMTc0LCAxMCwgMTEsIDI0MywgMTczLCAxMCwgMTEsIAotICAgIDI0MywgMTcyLCAxMCwgMTEsIDI0MywgMTcxLCAxMCwgMTEsIDI0MywgMTcwLCAxMCwgMTEsIDI0MywgMTY5LCAxMCwgMTEsIAotICAgIDI0MywgMTY4LCAxMCwgMTEsIDI0MywgMTY3LCAxMCwgMTEsIDI0MywgMTY2LCAxMCwgMTEsIDI0MywgMTY1LCAxMCwgMTEsIAotICAgIDI0MywgMTY0LCAxMCwgMTEsIDI0MywgMTYzLCAxMCwgMTEsIDI0MywgMTYyLCAxMCwgMTEsIDI0MywgMTYxLCAxMCwgMTEsIAotICAgIDI0MywgMTYwLCAxMCwgMTEsIDI0MywgMTU5LCAxMCwgMTEsIDI0MywgMTU4LCAxMCwgMTEsIDI0MywgMTU3LCAxMCwgMTEsIAotICAgIDI0MywgMTU2LCAxMCwgMTEsIDI0MywgMTU1LCAxMCwgMTEsIDI0MywgMTU0LCAxMCwgMTEsIDI0MywgMTUzLCAxMCwgMTEsIAotICAgIDI0MywgMTUyLCAxMCwgMTEsIDI0MywgMTUxLCAxMCwgMTEsIDI0MywgMTUwLCAxMCwgMTEsIDI0MywgMTQ5LCAxMCwgMTEsIAotICAgIDI0MywgMTQ4LCAxMCwgMTEsIDI0MywgMTQ3LCAxMCwgMTEsIDI0MywgMTQ2LCAxMCwgMTEsIDI0MywgMTQ1LCAxMCwgMTEsIAotICAgIDI0MywgMTQ0LCAxMCwgMTEsIDI0MywgMTQzLCAxMCwgMTEsIDI0MywgMTQyLCAxMCwgMTEsIDI0MywgMTQxLCAxMCwgMTEsIAotICAgIDI0MywgMTQwLCAxMCwgMTEsIDI0MywgMTM5LCAxMCwgMTEsIDI0MywgMTM4LCAxMCwgMTEsIDI0MywgMTM3LCAxMCwgMTEsIAotICAgIDI0MywgMTM2LCAxMCwgMTEsIDI0MywgMTM1LCAxMCwgMTEsIDI0MywgMTM0LCAxMCwgMTEsIDI0MywgMTMzLCAxMCwgMTEsIAotICAgIDI0MywgMTMyLCAxMCwgMTEsIDI0MywgMTMxLCAxMCwgMTEsIDI0MywgMTMwLCAxMCwgMTEsIDI0MywgMTI5LCAxMCwgMTEsIAotICAgIDI0MywgMTI4LCAxMCwgMTEsIDI0MywgMTI3LCAxMCwgMTEsIDI0MywgMTI2LCAxMCwgMTEsIDI0MywgMTI1LCAxMCwgMTEsIAotICAgIDI0MywgMTI0LCAxMCwgMTEsIDI0MywgMTIzLCAxMCwgMTEsIDI0MywgMTIyLCAxMCwgMTEsIDI0MywgMTIxLCAxMCwgMTEsIAotICAgIDI0MywgMTIwLCAxMCwgMTEsIDI0MywgMTE5LCAxMCwgMTEsIDI0MywgMTE4LCAxMCwgMTEsIDI0MywgMTE3LCAxMCwgMTEsIAotICAgIDI0MywgMTE2LCAxMCwgMTEsIDI0MywgMTE1LCAxMCwgMTEsIDI0MywgMTE0LCAxMCwgMTEsIDI0MywgMTEzLCAxMCwgMTEsIAotICAgIDI0MiwgMzksIDEwLCAxMSwgMjQyLCAzOCwgMTAsIDExLCAyNDIsIDM3LCAxMCwgMTEsIDI0MiwgMzYsIDEwLCAxMSwgMjQyLCAKLSAgICAzNSwgMTAsIDExLCAyNDIsIDM0LCAxMCwgMTEsIDI0MiwgMzMsIDEwLCAxMSwgMjQyLCAzMiwgMTAsIDExLCAyNDIsIDMxLCAKLSAgICAxMCwgMTEsIDI0MCwgMTMwLCAxMCwgMTEsIDI0MCwgMTI5LCAxMCwgMTEsIDI0MCwgMTI4LCAxMCwgMTEsIDI0MCwgMTI3LCAKLSAgICAxMCwgMTEsIDI0MCwgMTI2LCAxMCwgMTEsIDI0MCwgMTI1LCAxMCwgMTEsIDI0MCwgMTI0LCAxMCwgMTEsIDI0MCwgMTIzLCAKLSAgICAxMCwgMTEsIDI0MCwgMTIyLCAxMCwgMTEsIDI0MCwgMTIxLCAxMCwgMTEsIDI0MCwgMTIwLCAxMCwgMTEsIDI0MCwgMTE5LCAKLSAgICAxMCwgMTEsIDI0MCwgMTE4LCAxMCwgMTEsIDI0MCwgMTE3LCAxMCwgMTEsIDI0MCwgMTE2LCAxMCwgMTEsIDI0MCwgMTE1LCAKLSAgICAxMCwgMTEsIDI0MCwgMTE0LCAxMCwgMTEsIDI0MCwgMTEzLCAxMCwgMTEsIDI0MCwgMTEyLCAxMCwgMTEsIDIzNSwgMjYsIAotICAgIDEwLCAxMSwgMjM1LCAyNSwgMTAsIDExLCAyMzUsIDI0LCAxMCwgMTEsIDIzNSwgMjMsIDEwLCAxMSwgMjM1LCAyMiwgMTAsIAotICAgIDExLCAyMzUsIDIxLCAxMCwgMTEsIDIzNSwgMjAsIDEwLCAxMSwgMjM1LCAxOSwgMTAsIDExLCAyMzMsIDE2OCwgMTAsIDExLCAKLSAgICAyMzMsIDE2NywgMTAsIDExLCAyMzMsIDE2NiwgMTAsIDExLCAyMzMsIDE2NSwgMTAsIDExLCAyMzMsIDE2NCwgMTAsIDExLCAKLSAgICAyMzMsIDE2MywgMTAsIDExLCAyMzMsIDE2MiwgMTAsIDExLCAyMzMsIDE2MSwgMTAsIDExLCAyMzMsIDE2MCwgMTAsIDExLCAKLSAgICAyMzMsIDE1OSwgMTAsIDExLCAyMzIsIDEwOSwgMTAsIDExLCAyMzIsIDEwOCwgMTAsIDExLCAyMzIsIDEwNywgMTAsIDExLCAKLSAgICAyMzIsIDEwNiwgMTAsIDExLCAyMzIsIDEwNSwgMTAsIDExLCAyMzIsIDEwNCwgMTAsIDExLCAyMzIsIDEwMywgMTAsIDExLCAKLSAgICAyMzIsIDEwMiwgMTAsIDExLCAyMzIsIDEwMSwgMTAsIDExLCAyMzIsIDEwMCwgMTAsIDExLCAyMzIsIDk5LCAxMCwgMTEsIAotICAgIDIzMiwgOTgsIDEwLCAxMSwgMjMyLCA5NywgMTAsIDExLCAyMzIsIDk2LCAxMCwgMTEsIDIzMiwgOTUsIDEwLCAxMSwgMjMyLCAKLSAgICA5NCwgMTAsIDExLCAyMzIsIDkzLCAxMCwgMTEsIDIzMiwgOTIsIDEwLCAxMSwgMjMyLCA5MSwgMTAsIDExLCAyMzIsIDkwLCAKLSAgICAxMCwgMTEsIDIzMiwgODksIDEwLCAxMSwgMjMyLCA4OCwgMTAsIDExLCAyMzIsIDg3LCAxMCwgMTEsIDIzMiwgODYsIDEwLCAKLSAgICAxMSwgMjMyLCA4NSwgMTAsIDExLCAyMzIsIDg0LCAxMCwgMTEsIDIzMiwgODMsIDEwLCAxMSwgMjMyLCA4MiwgMTAsIDExLCAKLSAgICAyMzIsIDgxLCAxMCwgMTEsIDIzMiwgODAsIDEwLCAxMSwgMjMyLCA3OSwgMTAsIDExLCAyMzIsIDc4LCAxMCwgMTEsIDIzMiwgCi0gICAgNzcsIDEwLCAxMSwgMjMyLCA3NiwgMTAsIDExLCAyMzIsIDc1LCAxMCwgMTEsIDIzMiwgNzQsIDEwLCAxMSwgMjMyLCA3MywgCi0gICAgMTAsIDExLCAyMzIsIDcyLCAxMCwgMTEsIDIzMiwgNzEsIDEwLCAxMSwgMjMyLCA3MCwgMTAsIDExLCAyMzIsIDY5LCAxMCwgCi0gICAgMTEsIDIzMiwgNjgsIDEwLCAxMSwgMjMyLCA2NywgMTAsIDExLCAyMzIsIDY2LCAxMCwgMTEsIDIzMiwgNjUsIDEwLCAxMSwgCi0gICAgMjMyLCA2NCwgMTAsIDExLCAyMzIsIDYzLCAxMCwgMTEsIDIzMiwgNjIsIDEwLCAxMSwgMjMyLCA2MSwgMTAsIDExLCAyMzIsIAotICAgIDYwLCAxMCwgMTEsIDIzMiwgNTksIDEwLCAxMSwgMjMyLCA1OCwgMTAsIDExLCAyMzIsIDU3LCAxMCwgMTEsIDIzMiwgNTYsIAotICAgIDEwLCAxMSwgMjMyLCA1NSwgMTAsIDExLCAyMzIsIDU0LCAxMCwgMTEsIDIzMiwgNTMsIDEwLCAxMSwgMjMyLCA1MiwgMTAsIAotICAgIDExLCAyMzIsIDUxLCAxMCwgMTEsIDIzMiwgNTAsIDEwLCAxMSwgMjMyLCA0OSwgMTAsIDExLCAyMzIsIDQ4LCAxMCwgMTEsIAotICAgIDIzMiwgNDcsIDEwLCAxMSwgMjMyLCA0NiwgMTAsIDExLCAyMzIsIDQ1LCAxMCwgMTEsIDIzMiwgNDQsIDEwLCAxMSwgMjMwLCAKLSAgICA5NSwgMTAsIDExLCAyMzAsIDk0LCAxMCwgMTEsIDIzMCwgOTMsIDEwLCAxMSwgMjMwLCA5MiwgMTAsIDExLCAyMzAsIDkxLCAKLSAgICAxMCwgMTEsIDIzMCwgOTAsIDEwLCAxMSwgMjMwLCA4OSwgMTAsIDExLCAyMzAsIDg4LCAxMCwgMTEsIDIzMCwgODcsIDEwLCAKLSAgICAxMSwgMjMwLCA4NiwgMTAsIDExLCAyMzAsIDg1LCAxMCwgMTEsIDIzMCwgODQsIDEwLCAxMSwgMjMwLCA4MywgMTAsIDExLCAKLSAgICAyMzAsIDgyLCAxMCwgMTEsIDIzMCwgODEsIDEwLCAxMSwgMjMwLCA4MCwgMTAsIDExLCAyMzAsIDc5LCAxMCwgMTEsIDIzMCwgCi0gICAgNzgsIDEwLCAxMSwgMjMwLCA3NywgMTAsIDExLCAyMzAsIDc2LCAxMCwgMTEsIDIzMCwgNzUsIDEwLCAxMSwgMjMwLCA3NCwgCi0gICAgMTAsIDExLCAyMzAsIDczLCAxMCwgMTEsIDIzMCwgNzIsIDEwLCAxMSwgMjMwLCA3MSwgMTAsIDExLCAyMzAsIDcwLCAxMCwgCi0gICAgMTEsIDIzMCwgNjksIDEwLCAxMSwgMjMwLCA2OCwgMTAsIDExLCAyMzAsIDY3LCAxMCwgMTEsIDIzMCwgNjYsIDEwLCAxMSwgCi0gICAgMjMwLCA2NSwgMTAsIDExLCAyMzAsIDY0LCAxMCwgMTEsIDIzMCwgNjMsIDEwLCAxMSwgMjMwLCA2MiwgMTAsIDExLCAyMzAsIAotICAgIDYxLCAxMCwgMTEsIDIzMCwgNjAsIDEwLCAxMSwgMjMwLCA1OSwgMTAsIDExLCAyMzAsIDU4LCAxMCwgMTEsIDIzMCwgNTcsIAotICAgIDEwLCAxMSwgMjMwLCA1NiwgMTAsIDExLCAyMzAsIDU1LCAxMCwgMTEsIDIzMCwgNTQsIDEwLCAxMSwgMjMwLCA1MywgMTAsIAotICAgIDExLCAyMzAsIDUyLCAxMCwgMTEsIDIzMCwgNTEsIDEwLCAxMSwgMjMwLCA1MCwgMTAsIDExLCAyMzAsIDQ5LCAxMCwgMTEsIAotICAgIDIzMCwgNDgsIDEwLCAxMSwgMjMwLCA0NywgMTAsIDExLCAyMjgsIDIyMiwgMTAsIDExLCAyMjgsIDIyMSwgMTAsIDExLCAKLSAgICAyMjgsIDIyMCwgMTAsIDExLCAyMjgsIDIxOSwgMTAsIDExLCAyMjgsIDIxOCwgMTAsIDExLCAyMjgsIDIxNywgMTAsIDExLCAKLSAgICAyMjgsIDIxNiwgMTAsIDExLCAyMjgsIDIxNSwgMTAsIDExLCAyMjgsIDIxNCwgMTAsIDExLCAyMjgsIDIxMywgMTAsIDExLCAKLSAgICAyMjgsIDIxMiwgMTAsIDExLCAyMjgsIDIxMSwgMTAsIDExLCAyMjgsIDIxMCwgMTAsIDExLCAyMjgsIDIwOSwgMTAsIDExLCAKLSAgICAyMjgsIDIwOCwgMTAsIDExLCAyMjgsIDIwNywgMTAsIDExLCAyMjgsIDIwNiwgMTAsIDExLCAyMjgsIDIwNSwgMTAsIDExLCAKLSAgICAyMjgsIDIwNCwgMTAsIDExLCAyMjgsIDIwMywgMTAsIDExLCAyMjgsIDIwMiwgMTAsIDExLCAyMjgsIDIwMSwgMTAsIDExLCAKLSAgICAyMjgsIDkxLCAxMCwgMTEsIDIyOCwgOTAsIDEwLCAxMSwgMjI4LCA4OSwgMTAsIDExLCAyMjgsIDg4LCAxMCwgMTEsIDIyOCwgCi0gICAgODcsIDEwLCAxMSwgMjI4LCA4NiwgMTAsIDExLCAyMjgsIDg1LCAxMCwgMTEsIDIyOCwgODQsIDEwLCAxMSwgMjI4LCA4MywgCi0gICAgMTAsIDExLCAyMjgsIDgyLCAxMCwgMTEsIDIyOCwgODEsIDEwLCAxMSwgMjI4LCA4MCwgMTAsIDExLCAyMjgsIDc5LCAxMCwgCi0gICAgMTEsIDIyOCwgNzgsIDEwLCAxMSwgMjI4LCA3NywgMTAsIDExLCAyMjgsIDc2LCAxMCwgMTEsIDIyOCwgNzUsIDEwLCAxMSwgCi0gICAgMjI4LCA3NCwgMTAsIDExLCAyMjgsIDczLCAxMCwgMTEsIDIyOCwgNzIsIDEwLCAxMSwgMjI4LCA3MSwgMTAsIDExLCAyMjgsIAotICAgIDcwLCAxMCwgMTEsIDIyOCwgNjksIDEwLCAxMSwgMjI4LCA2OCwgMTAsIDExLCAyMjgsIDY3LCAxMCwgMTEsIDIyOCwgNjYsIAotICAgIDEwLCAxMSwgMjI3LCAxOTYsIDEwLCAxMSwgMjI3LCAxOTUsIDEwLCAxMSwgMjI3LCAxOTQsIDEwLCAxMSwgMjI3LCAxOTMsIAotICAgIDEwLCAxMSwgMjI3LCAxOTIsIDEwLCAxMSwgMjI3LCAxOTEsIDEwLCAxMSwgMjI3LCAxOTAsIDEwLCAxMSwgMjI3LCAxODksIAotICAgIDEwLCAxMSwgMjI3LCAxODgsIDEwLCAxMSwgMjI3LCAxODcsIDEwLCAxMSwgMjI3LCAxODYsIDEwLCAxMSwgMjI3LCAxODUsIAotICAgIDEwLCAxMSwgMjI3LCAxODQsIDEwLCAxMSwgMjI3LCAxODMsIDEwLCAxMSwgMjI3LCAxODIsIDEwLCAxMSwgMjI3LCAxODEsIAotICAgIDEwLCAxMSwgMjI3LCAxODAsIDEwLCAxMSwgMjI3LCAxNzksIDEwLCAxMSwgMjI3LCAxNzgsIDEwLCAxMSwgMjI3LCAxNzcsIAotICAgIDEwLCAxMSwgMjI3LCAxNzYsIDEwLCAxMSwgMjI3LCAxNzUsIDEwLCAxMSwgMjI3LCAxNzQsIDEwLCAxMSwgMjI3LCAxNzMsIAotICAgIDEwLCAxMSwgMjI3LCAxNzIsIDEwLCAxMSwgMjI3LCAxNzEsIDEwLCAxMSwgMjI3LCAxNzAsIDEwLCAxMSwgMjI3LCAxNjksIAotICAgIDEwLCAxMSwgMjI3LCAxNjgsIDEwLCAxMSwgMjI3LCAxNjcsIDEwLCAxMSwgMjI3LCAxNjYsIDEwLCAxMSwgMjI3LCAxNjUsIAotICAgIDEwLCAxMSwgMjI3LCAxNjQsIDEwLCAxMSwgMjI3LCAxNjMsIDEwLCAxMSwgMjI3LCAxNjIsIDEwLCAxMSwgMjI3LCAxNjEsIAotICAgIDEwLCAxMSwgMjI3LCAxNjAsIDEwLCAxMSwgMjI3LCAxNTksIDEwLCAxMSwgMjI3LCAxNTgsIDEwLCAxMSwgMjI3LCAxNTcsIAotICAgIDEwLCAxMSwgMjI3LCAxNTYsIDEwLCAxMSwgMjI3LCAxNTUsIDEwLCAxMSwgMjI3LCAxNTQsIDEwLCAxMSwgMjI3LCAxNTMsIAotICAgIDEwLCAxMSwgMjI3LCAxNTIsIDEwLCAxMSwgMjI3LCAxNTEsIDEwLCAxMSwgMjI3LCAxNTAsIDEwLCAxMSwgMjI3LCAxNDksIAotICAgIDEwLCAxMSwgMjI3LCAxNDgsIDEwLCAxMSwgMjI3LCAxNDcsIDEwLCAxMSwgMjI3LCAxNDYsIDEwLCAxMSwgMjI3LCAxNDUsIAotICAgIDEwLCAxMSwgMjI3LCAxNDQsIDEwLCAxMSwgMjI3LCAxNDMsIDEwLCAxMSwgMjI3LCAxNDIsIDEwLCAxMSwgMjI3LCAxNDEsIAotICAgIDEwLCAxMSwgMjI3LCAxNDAsIDEwLCAxMSwgMjI3LCAxMzksIDEwLCAxMSwgMjI3LCAxMzgsIDEwLCAxMSwgMjI3LCAxMzcsIAotICAgIDEwLCAxMSwgMjI3LCAxMzYsIDEwLCAxMSwgMjI3LCAxMzUsIDEwLCAxMSwgMjI3LCAxMzQsIDEwLCAxMSwgMjI3LCAxMzMsIAotICAgIDEwLCAxMSwgMjI3LCAxMzIsIDEwLCAxMSwgMjI3LCAxMzEsIDEwLCAxMSwgMjI3LCAxMzAsIDEwLCAxMSwgMjI3LCAxMjksIAotICAgIDEwLCAxMSwgMjI3LCAxMjgsIDEwLCAxMSwgMjI3LCAxMjcsIDEwLCAxMSwgMjI3LCAxMjYsIDEwLCAxMSwgMjI3LCAxMjUsIAotICAgIDEwLCAxMSwgMjI3LCAxMjQsIDEwLCAxMSwgMjI3LCAxMjMsIDEwLCAxMSwgMjI3LCAxMjIsIDEwLCAxMSwgMjI2LCAyMjgsIAotICAgIDEwLCAxMSwgMjI2LCAyMjcsIDEwLCAxMSwgMjI2LCAyMjYsIDEwLCAxMSwgMjI2LCAyMjUsIDEwLCAxMSwgMjI2LCAyMjQsIAotICAgIDEwLCAxMSwgMjI2LCAyMjMsIDEwLCAxMSwgMjI2LCAyMjIsIDEwLCAxMSwgMjI2LCAyMjEsIDEwLCAxMSwgMjI2LCAyMjAsIAotICAgIDEwLCAxMSwgMjI2LCAyMTksIDEwLCAxMSwgMjI2LCAyMTgsIDEwLCAxMSwgMjI2LCAyMTcsIDEwLCAxMSwgMjI2LCAyMTYsIAotICAgIDEwLCAxMSwgMjI0LCAyMzksIDEwLCAxMSwgMjI0LCAyMzgsIDEwLCAxMSwgMjI0LCAyMzcsIDEwLCAxMSwgMjI0LCAyMzYsIAotICAgIDEwLCAxMSwgMjI0LCAyMzUsIDEwLCAxMSwgMjI0LCAyMzQsIDEwLCAxMSwgMjI0LCAyMzMsIDEwLCAxMSwgMjI0LCAxMTEsIAotICAgIDEwLCAxMSwgMjI0LCAxMTAsIDEwLCAxMSwgMjI0LCAxMDksIDEwLCAxMSwgMjI0LCAxMDgsIDEwLCAxMSwgMjI0LCAxMDcsIAotICAgIDEwLCAxMSwgMjI0LCAxMDYsIDEwLCAxMSwgMjI0LCAxMDUsIDEwLCAxMSwgMjI0LCAxMDQsIDEwLCAxMSwgMjI0LCAxMDMsIAotICAgIDEwLCAxMSwgMjI0LCAxMDIsIDEwLCAxMSwgMjI0LCAxMDEsIDEwLCAxMSwgMjI0LCAxMDAsIDEwLCAxMSwgMjI0LCA5OSwgCi0gICAgMTAsIDExLCAyMjQsIDk4LCAxMCwgMTEsIDIyNCwgOTcsIDEwLCAxMSwgMjI0LCA5NiwgMTAsIDExLCAyMjQsIDk1LCAxMCwgCi0gICAgMTEsIDIyNCwgOTQsIDEwLCAxMSwgMjI0LCA5MywgMTAsIDExLCAyMjQsIDkyLCAxMCwgMTEsIDIyNCwgOTEsIDEwLCAxMSwgCi0gICAgMjI0LCA5MCwgMTAsIDExLCAyMjQsIDg5LCAxMCwgMTEsIDIyNCwgODgsIDEwLCAxMSwgMjI0LCA4NywgMTAsIDExLCAyMjQsIAotICAgIDg2LCAxMCwgMTEsIDIyNCwgODUsIDEwLCAxMSwgMjI0LCA4NCwgMTAsIDExLCAyMjQsIDgzLCAxMCwgMTEsIDIyNCwgODIsIAotICAgIDEwLCAxMSwgMjI0LCA4MSwgMTAsIDExLCAyMjQsIDgwLCAxMCwgMTEsIDIyNCwgNzksIDEwLCAxMSwgMjI0LCA3OCwgMTAsIAotICAgIDExLCAyMjMsIDEsIDEwLCAxMSwgMjIzLCAwLCAxMCwgMTEsIDIyMiwgMjU1LCAxMCwgMTEsIDIyMiwgMjU0LCAxMCwgMTEsIAotICAgIDIyMiwgMjUzLCAxMCwgMTEsIDIyMiwgMjUyLCAxMCwgMTEsIDIyMiwgMjUxLCAxMCwgMTEsIDIyMiwgMjUwLCAxMCwgMTEsIAotICAgIDIyMiwgMjQ5LCAxMCwgMTEsIDIyMiwgMjQ4LCAxMCwgMTEsIDIyMiwgMjQ3LCAxMCwgMTEsIDIyMiwgMjQ2LCAxMCwgMTEsIAotICAgIDIyMiwgMjQ1LCAxMCwgMTEsIDIyMiwgMjQ0LCAxMCwgMTEsIDIyMiwgMjQzLCAxMCwgMTEsIDIyMiwgMjQyLCAxMCwgMTEsIAotICAgIDIyMiwgMjQxLCAxMCwgMTEsIDIyMiwgMjQwLCAxMCwgMTEsIDIyMiwgMjM5LCAxMCwgMTEsIDIyMiwgMjM4LCAxMCwgMTEsIAotICAgIDIyMiwgMjM3LCAxMCwgMTEsIDIyMiwgMjM2LCAxMCwgMTEsIDIyMiwgMjM1LCAxMCwgMTEsIDIyMiwgMjM0LCAxMCwgMTEsIAotICAgIDIyMiwgMjMzLCAxMCwgMTEsIDIyMiwgMjMyLCAxMCwgMTEsIDIyMiwgMjMxLCAxMCwgMTEsIDIyMiwgMjMwLCAxMCwgMTEsIAotICAgIDIyMiwgMjI5LCAxMCwgMTEsIDIyMiwgMjI4LCAxMCwgMTEsIDIyMiwgMjI3LCAxMCwgMTEsIDIyMiwgMjI2LCAxMCwgMTEsIAotICAgIDIyMiwgMjI1LCAxMCwgMTEsIDIyMiwgMjI0LCAxMCwgMTEsIDIyMiwgMjIzLCAxMCwgMTEsIDIyMiwgMjIyLCAxMCwgMTEsIAotICAgIDIyMiwgMjIxLCAxMCwgMTEsIDIyMiwgMjIwLCAxMCwgMTEsIDIyMiwgMjE5LCAxMCwgMTEsIDIyMiwgMjE4LCAxMCwgMTEsIAotICAgIDIyMiwgMjE3LCAxMCwgMTEsIDIyMiwgMjE2LCAxMCwgMTEsIDIyMiwgMjE1LCAxMCwgMTEsIDIyMiwgMjE0LCAxMCwgMTEsIAotICAgIDIyMiwgMjEzLCAxMCwgMTEsIDIyMiwgMjEyLCAxMCwgMTEsIDIyMiwgMjExLCAxMCwgMTEsIDIyMiwgMjEwLCAxMCwgMTEsIAotICAgIDIyMiwgMjA5LCAxMCwgMTEsIDIyMiwgMjA4LCAxMCwgMTEsIDIyMiwgMjA3LCAxMCwgMTEsIDIyMiwgMjA2LCAxMCwgMTEsIAotICAgIDIyMiwgMjA1LCAxMCwgMTEsIDIyMiwgMjA0LCAxMCwgMTEsIDIxOCwgOTcsIDEwLCAxMSwgMjE4LCA5NiwgMTAsIDExLCAKLSAgICAyMTgsIDk1LCAxMCwgMTEsIDIxOCwgOTQsIDEwLCAxMSwgMjE4LCA5MywgMTAsIDExLCAyMTgsIDkyLCAxMCwgMTEsIDIxOCwgCi0gICAgOTEsIDEwLCAxMSwgMjE4LCA5MCwgMTAsIDExLCAyMTgsIDg5LCAxMCwgMTEsIDIxOCwgODgsIDEwLCAxMSwgMjE4LCA4NywgCi0gICAgMTAsIDExLCAyMTgsIDg2LCAxMCwgMTEsIDIxOCwgODUsIDEwLCAxMSwgMjE4LCA4NCwgMTAsIDExLCAyMTgsIDgzLCAxMCwgCi0gICAgMTEsIDIxOCwgODIsIDEwLCAxMSwgMjE4LCA4MSwgMTAsIDExLCAyMTgsIDgwLCAxMCwgMTEsIDIxOCwgNzksIDEwLCAxMSwgCi0gICAgMjE4LCA3OCwgMTAsIDExLCAyMTgsIDc3LCAxMCwgMTEsIDIxOCwgNzYsIDEwLCAxMSwgMjE4LCA3NSwgMTAsIDExLCAyMTgsIAotICAgIDc0LCAxMCwgMTEsIDIxOCwgNzMsIDEwLCAxMSwgMjE4LCA3MiwgMTAsIDExLCAyMTgsIDcxLCAxMCwgMTEsIDIxOCwgNzAsIAotICAgIDEwLCAxMSwgMjE4LCA2OSwgMTAsIDExLCAyMTgsIDY4LCAxMCwgMTEsIDIxOCwgNjcsIDEwLCAxMSwgMjE4LCA2NiwgMTAsIAotICAgIDExLCAyMTgsIDY1LCAxMCwgMTEsIDIxOCwgNjQsIDEwLCAxMSwgMjE4LCA2MywgMTAsIDExLCAyMTgsIDYyLCAxMCwgMTEsIAotICAgIDIxOCwgNjEsIDEwLCAxMSwgMjE4LCA2MCwgMTAsIDExLCAyMTgsIDU5LCAxMCwgMTEsIDIxOCwgNTgsIDEwLCAxMSwgMjE4LCAKLSAgICA1NywgMTAsIDExLCAyMTgsIDU2LCAxMCwgMTEsIDIxOCwgNTUsIDEwLCAxMSwgMjE4LCA1NCwgMTAsIDExLCAyMTUsIDI0NSwgCi0gICAgMTAsIDExLCAyMTUsIDI0NCwgMTAsIDExLCAyMTUsIDI0MywgMTAsIDExLCAyMTUsIDI0MiwgMTAsIDExLCAyMTUsIDI0MSwgCi0gICAgMTAsIDExLCAyMTUsIDI0MCwgMTAsIDExLCAyMTUsIDIzOSwgMTAsIDExLCAyMTUsIDIzOCwgMTAsIDExLCAyMTUsIDIzNywgCi0gICAgMTAsIDExLCAyMTUsIDIzNiwgMTAsIDExLCAyMTUsIDIzNSwgMTAsIDExLCAyMTUsIDIzNCwgMTAsIDExLCAyMTUsIDIzMywgCi0gICAgMTAsIDExLCAyMTUsIDIzMiwgMTAsIDExLCAyMTUsIDIzMSwgMTAsIDExLCAyMTUsIDIzMCwgMTAsIDExLCAyMTUsIDIyOSwgCi0gICAgMTAsIDExLCAyMTUsIDIyOCwgMTAsIDExLCAyMTUsIDIyNywgMTAsIDExLCAyMTUsIDIyNiwgMTAsIDExLCAyMTUsIDIyNSwgCi0gICAgMTAsIDExLCAyMTUsIDIyNCwgMTAsIDExLCAyMTUsIDIyMywgMTAsIDExLCAyMTUsIDIyMiwgMTAsIDExLCAyMTUsIDIyMSwgCi0gICAgMTAsIDExLCAyMTUsIDIyMCwgMTAsIDExLCAyMTUsIDIxOSwgMTAsIDExLCAyMTUsIDIxOCwgMTAsIDExLCAyMTUsIDIxNywgCi0gICAgMTAsIDExLCAyMTUsIDIxNiwgMTAsIDExLCAyMTUsIDIxNSwgMTAsIDExLCAyMTUsIDIxNCwgMTAsIDExLCAyMTUsIDIxMywgCi0gICAgMTAsIDExLCAyMTUsIDIxMiwgMTAsIDExLCAyMTUsIDIxMSwgMTAsIDExLCAyMTUsIDIxMCwgMTAsIDExLCAyMTUsIDIwOSwgCi0gICAgMTAsIDExLCAyMTUsIDIwOCwgMTAsIDExLCAyMTUsIDIwNywgMTAsIDExLCAyMTUsIDIwNiwgMTAsIDExLCAyMTUsIDIwNSwgCi0gICAgMTAsIDExLCAyMTUsIDIwNCwgMTAsIDExLCAyMTUsIDIwMywgMTAsIDExLCAyMTUsIDIwMiwgMTAsIDExLCAyMTUsIDIwMSwgCi0gICAgMTAsIDExLCAyMTUsIDIwMCwgMTAsIDExLCAyMTUsIDE5OSwgMTAsIDExLCAyMTUsIDc4LCAxMCwgMTEsIDIxNSwgNzcsIDEwLCAKLSAgICAxMSwgMjE1LCA3NiwgMTAsIDExLCAyMTUsIDc1LCAxMCwgMTEsIDIxNSwgNzQsIDEwLCAxMSwgMjE1LCA3MywgMTAsIDExLCAKLSAgICAyMTUsIDcyLCAxMCwgMTEsIDIxNSwgNzEsIDEwLCAxMSwgMjE1LCA3MCwgMTAsIDExLCAyMTUsIDY5LCAxMCwgMTEsIDIxNSwgCi0gICAgNjgsIDEwLCAxMSwgMjE1LCA2NywgMTAsIDExLCAyMTUsIDY2LCAxMCwgMTEsIDIxNSwgNjUsIDEwLCAxMSwgMjE1LCA2NCwgCi0gICAgMTAsIDExLCAyMTUsIDYzLCAxMCwgMTEsIDIxNSwgNjIsIDEwLCAxMSwgMjE1LCA2MSwgMTAsIDExLCAyMTUsIDYwLCAxMCwgCi0gICAgMTEsIDIxNSwgNTksIDEwLCAxMSwgMjE1LCA1OCwgMTAsIDExLCAyMTUsIDU3LCAxMCwgMTEsIDIxNSwgNTYsIDEwLCAxMSwgCi0gICAgMjE1LCA1NSwgMTAsIDExLCAyMTUsIDU0LCAxMCwgMTEsIDIxNSwgNTMsIDEwLCAxMSwgMjE1LCA1MiwgMTAsIDExLCAyMTUsIAotICAgIDUxLCAxMCwgMTEsIDIxNSwgNTAsIDEwLCAxMSwgMjE1LCA0OSwgMTAsIDExLCAyMTUsIDQ4LCAxMCwgMTEsIDIxNSwgNDcsIAotICAgIDEwLCAxMSwgMjE1LCA0NiwgMTAsIDExLCAyMTUsIDQ1LCAxMCwgMTEsIDIxNSwgNDQsIDEwLCAxMSwgMjE1LCA0MywgMTAsIAotICAgIDExLCAyMTUsIDQyLCAxMCwgMTEsIDIxNSwgNDEsIDEwLCAxMSwgMjE1LCA0MCwgMTAsIDExLCAyMTUsIDM5LCAxMCwgMTEsIAotICAgIDIxNSwgMzgsIDEwLCAxMSwgMjE1LCAzNywgMTAsIDExLCAyMTUsIDM2LCAxMCwgMTEsIDIxNSwgMzUsIDEwLCAxMSwgMjE1LCAKLSAgICAzNCwgMTAsIDExLCAyMTUsIDMzLCAxMCwgMTEsIDIxNSwgMzIsIDEwLCAxMSwgMjE1LCAzMSwgMTAsIDExLCAyMTUsIDMwLCAKLSAgICAxMCwgMTEsIDIxNSwgMjksIDEwLCAxMSwgMjE1LCAyOCwgMTAsIDExLCAyMTUsIDI3LCAxMCwgMTEsIDIxNSwgMjYsIDEwLCAKLSAgICAxMSwgMjE1LCAyNSwgMTAsIDExLCAyMTUsIDI0LCAxMCwgMTEsIDIxNSwgMjMsIDEwLCAxMSwgMjE1LCAyMiwgMTAsIDExLCAKLSAgICAyMTUsIDIxLCAxMCwgMTEsIDIxNSwgMjAsIDEwLCAxMSwgMjE1LCAxOSwgMTAsIDExLCAyMTUsIDE4LCAxMCwgMTEsIDIxNSwgCi0gICAgMTcsIDEwLCAxMSwgMjE1LCAxNiwgMTAsIDExLCAyMTUsIDE1LCAxMCwgMTEsIDIxNSwgMTQsIDEwLCAxMSwgMjE1LCAxMywgCi0gICAgMTAsIDExLCAyMTUsIDEyLCAxMCwgMTEsIDIxNSwgMTEsIDEwLCAxMSwgMjE1LCAxMCwgMTAsIDExLCAyMTUsIDksIDEwLCAKLSAgICAxMSwgMjE1LCA4LCAxMCwgMTEsIDIxNSwgNywgMTAsIDExLCAyMTUsIDYsIDEwLCAxMSwgMjE1LCA1LCAxMCwgMTEsIDIxNSwgCi0gICAgNCwgMTAsIDExLCAyMTUsIDMsIDEwLCAxMSwgMjE1LCAyLCAxMCwgMTEsIDIxNCwgODEsIDEwLCAxMSwgMjE0LCA4MCwgMTAsIAotICAgIDExLCAyMTQsIDc5LCAxMCwgMTEsIDIxNCwgNzgsIDEwLCAxMSwgMjE0LCA3NywgMTAsIDExLCAyMTQsIDc2LCAxMCwgMTEsIAotICAgIDIxNCwgNzUsIDEwLCAxMSwgMjE0LCA3NCwgMTAsIDExLCAyMTQsIDczLCAxMCwgMTEsIDIxNCwgNzIsIDEwLCAxMSwgMjE0LCAKLSAgICA3MSwgMTAsIDExLCAyMTQsIDcwLCAxMCwgMTEsIDIxNCwgNjksIDEwLCAxMSwgMjE0LCA2OCwgMTAsIDExLCAyMTQsIDY3LCAKLSAgICAxMCwgMTEsIDIxNCwgNjYsIDEwLCAxMSwgMjE0LCA2NSwgMTAsIDExLCAyMTQsIDY0LCAxMCwgMTEsIDIxNCwgNjMsIDEwLCAKLSAgICAxMSwgMjE0LCA2MiwgMTAsIDExLCAyMTQsIDYxLCAxMCwgMTEsIDIxNCwgNjAsIDEwLCAxMSwgMjE0LCA1OSwgMTAsIDExLCAKLSAgICAyMTQsIDU4LCAxMCwgMTEsIDIxNCwgNTcsIDEwLCAxMSwgMjE0LCA1NiwgMTAsIDExLCAyMTQsIDU1LCAxMCwgMTEsIDIxNCwgCi0gICAgNTQsIDEwLCAxMSwgMjE0LCA1MywgMTAsIDExLCAyMTQsIDUyLCAxMCwgMTEsIDIxNCwgNTEsIDEwLCAxMSwgMjE0LCA1MCwgCi0gICAgMTAsIDExLCAyMTMsIDE2NSwgMTAsIDExLCAyMTMsIDE2NCwgMTAsIDExLCAyMTMsIDE2MywgMTAsIDExLCAyMTMsIDE2MiwgCi0gICAgMTAsIDExLCAyMTMsIDE2MSwgMTAsIDExLCAyMTMsIDE2MCwgMTAsIDExLCAyMTMsIDE1OSwgMTAsIDExLCAyMTMsIDE1OCwgCi0gICAgMTAsIDExLCAyMTMsIDE1NywgMTAsIDExLCAyMTMsIDE1NiwgMTAsIDExLCAyMTMsIDE1NSwgMTAsIDExLCAyMTMsIDE1NCwgCi0gICAgMTAsIDExLCAyMTMsIDEwMywgMTAsIDExLCAyMTMsIDEwMiwgMTAsIDExLCAyMTMsIDEwMSwgMTAsIDExLCAyMTMsIDEwMCwgCi0gICAgMTAsIDExLCAyMTMsIDk5LCAxMCwgMTEsIDIxMywgOTgsIDEwLCAxMSwgMjEzLCA5NywgMTAsIDExLCAyMTMsIDk2LCAxMCwgCi0gICAgMTEsIDIxMywgOTUsIDEwLCAxMSwgMjEyLCAxNTEsIDEwLCAxMSwgMjEyLCAxNTAsIDEwLCAxMSwgMjEyLCAxNDksIDEwLCAKLSAgICAxMSwgMjEyLCAxNDgsIDEwLCAxMSwgMjEyLCAxNDcsIDEwLCAxMSwgMjEyLCAxNDYsIDEwLCAxMSwgMjEyLCAxNDUsIDEwLCAKLSAgICAxMSwgMjEyLCAxNDQsIDEwLCAxMSwgMjEyLCAxNDMsIDEwLCAxMSwgMjEyLCAxNDIsIDEwLCAxMSwgMjEyLCAxNDEsIDEwLCAKLSAgICAxMSwgMjEyLCAxNDAsIDEwLCAxMSwgMjEyLCAxMzksIDEwLCAxMSwgMjEyLCAxMzgsIDEwLCAxMSwgMjEyLCAxMzcsIDEwLCAKLSAgICAxMSwgMjEyLCAxMzYsIDEwLCAxMSwgMjEyLCAxMzUsIDEwLCAxMSwgMjEyLCAxMzQsIDEwLCAxMSwgMjEyLCAxMzMsIDEwLCAKLSAgICAxMSwgMjEyLCAxMzIsIDEwLCAxMSwgMjEyLCAxMzEsIDEwLCAxMSwgMjEyLCAxMzAsIDEwLCAxMSwgMjEyLCAxMjksIDEwLCAKLSAgICAxMSwgMjEyLCAxMjgsIDEwLCAxMSwgMjEyLCAxMjcsIDEwLCAxMSwgMjEyLCAxMjYsIDEwLCAxMSwgMjEyLCAxMjUsIDEwLCAKLSAgICAxMSwgMjEyLCAxMjQsIDEwLCAxMSwgMjEyLCAxMjMsIDEwLCAxMSwgMjEyLCAxMjIsIDEwLCAxMSwgMjEyLCAxMjEsIDEwLCAKLSAgICAxMSwgMjEyLCAxMjAsIDEwLCAxMSwgMjEyLCAxMTksIDEwLCAxMSwgMjEyLCAxMTgsIDEwLCAxMSwgMjEyLCAxMTcsIDEwLCAKLSAgICAxMSwgMjEyLCAxMTYsIDEwLCAxMSwgMjEyLCAxMTUsIDEwLCAxMSwgMjEyLCAxMTQsIDEwLCAxMSwgMjEyLCAxMTMsIDEwLCAKLSAgICAxMSwgMjEyLCAxMTIsIDEwLCAxMSwgMjEyLCAxMTEsIDEwLCAxMSwgMjU0LCAyMzEsIDEwLCAxMSwgMjU0LCAyMzAsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjksIDEwLCAxMSwgMjU0LCAyMjgsIDEwLCAxMSwgMjU0LCAyMjcsIDEwLCAxMSwgMjU0LCAyMjYsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjUsIDEwLCAxMSwgMjU0LCAyMjQsIDEwLCAxMSwgMjU0LCAyMjMsIDEwLCAxMSwgMjU0LCAyMjIsIDEwLCAKLSAgICAxMSwgMjU0LCAyMjEsIDEwLCAxMSwgMjU0LCAyMjAsIDEwLCAxMSwgMjU0LCAyMTksIDEwLCAxMSwgMjU0LCAyMTgsIDEwLCAKLSAgICAxMSwgMjU0LCAyMTcsIDEwLCAxMSwgMjU0LCAyMTYsIDEwLCAxMSwgMjU0LCAyMTUsIDEwLCAxMSwgMjU0LCAyMTQsIDEwLCAKLSAgICAxMSwgMjU0LCAyMTMsIDEwLCAxMSwgMjU0LCAyMTIsIDEwLCAxMSwgMjU0LCAyMTEsIDEwLCAxMSwgMjU0LCAyMTAsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDksIDEwLCAxMSwgMjU0LCAyMDgsIDEwLCAxMSwgMjU0LCAyMDcsIDEwLCAxMSwgMjU0LCAyMDYsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDUsIDEwLCAxMSwgMjU0LCAyMDQsIDEwLCAxMSwgMjU0LCAyMDMsIDEwLCAxMSwgMjU0LCAyMDIsIDEwLCAKLSAgICAxMSwgMjU0LCAyMDEsIDEwLCAxMSwgMjU0LCAyMDAsIDEwLCAxMSwgMjU0LCAxOTksIDEwLCAxMSwgMjU0LCAxOTgsIDIwLCAKLSAgICAxLCAxNTMsIDIyOSwgOTgsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDI0MywgNDYsIDI0NCwgNSwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAxMzEsIDIzMSwgODQsIDIyNSwgMTg5LCAyMCwgMSwgMTUzLCAyMjUsIDEzMSwgMjMxLCA4NCwgMjI1LCAxOTAsIDIwLCAxLCAKLSAgICAxNTMsIDIzMCwgNDQsIDIzMSwgODMsIDIwLCAxLCAxNTMsIDIyMCwgMTQ2LCAyMCwgMSwgMTUzLCAyMTcsIDE5LCAyMzEsIAotICAgIDgzLCAyMCwgMSwgMTUzLCAyMjcsIDIzOCwgMjMxLCA4MywgMjAsIDEsIDE1MywgMjIwLCAxOTksIDIyNiwgMjE0LCAyMjksIAotICAgIDAsIDIwLCAxLCAxNTMsIDIyNSwgMTMxLCAyMjYsIDIxNCwgMjI5LCAxLCAyMjUsIDE4OSwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAxMzEsIDIyNiwgMjE0LCAyMjksIDEsIDIyNSwgMTkwLCAyMCwgMSwgMTUzLCAyMzIsIDIzLCAyMCwgMSwgMTUzLCAyMTYsIAotICAgIDgzLCAyMzIsIDI0LCAyMCwgMSwgMTUzLCAyMjksIDE1NCwgMjAsIDEsIDE1MywgMjMyLCAyMCwgMjAsIDEsIDE1MywgMjMxLCAKLSAgICAyMzksIDIwLCAxLCAxNTMsIDIzMCwgMTE5LCAyMCwgMSwgMTUzLCAyMjEsIDQ1LCAyMCwgMSwgMTUzLCAyMjgsIDk2LCAyMCwgCi0gICAgMSwgMTUzLCAyMzQsIDE1NSwgMjAsIDEsIDE1MywgMjI4LCAyMjUsIDIwLCAxLCAxNTMsIDIxOCwgMjA1LCAyMCwgMSwgMTUzLCAKLSAgICAyMjksIDk3LCAyMCwgMSwgMTUzLCAyMzMsIDExMCwgMjAsIDEsIDE1MywgMjMzLCAzNiwgMjMzLCAyMTAsIDIwLCAxLCAxNTMsIAotICAgIDIyOCwgMTAzLCAyMzEsIDkxLCAyMCwgMSwgMTUzLCAyMzIsIDI3LCAyMCwgMSwgMTUzLCAyMjYsIDExOSwgMjAsIDEsIDE1MywgCi0gICAgMjQyLCAyMDcsIDIwLCAxLCAxNTMsIDIyNiwgMTc3LCAyMCwgMSwgMTUzLCAyMzAsIDIyMSwgMjI5LCAxMzAsIDIwLCAxLCAKLSAgICAxNTMsIDIyNywgMjE5LCAyMzEsIDk0LCAyMCwgMSwgMTUzLCAxMTEsIDIxMiwgMTc5LCAyMzAsIDM4LCAyMCwgMSwgMTUzLCAKLSAgICAyNDIsIDIwOCwgMjAsIDEsIDE1MywgMjI4LCAxMDMsIDIyOCwgMTA0LCAyMCwgMSwgMTUzLCAyMjAsIDU2LCAyMCwgMSwgCi0gICAgMTUzLCAyMzEsIDc2LCAyMCwgMSwgMTUzLCAyMzEsIDk3LCAyMCwgMSwgMTUzLCAyMzAsIDIwMCwgMjAsIDEsIDE1MywgMjM0LCAKLSAgICAyNTMsIDIwLCAxLCAxNTMsIDIyNiwgMjE0LCAyMzMsIDcxLCAyMCwgMSwgMTUzLCAyMjksIDIyOSwgMjMzLCA3MSwgMjAsIDEsIAotICAgIDE1MywgMjI2LCAzNCwgMjAsIDEsIDE1MywgMjMyLCAyMSwgMjAsIDEsIDE1MywgMjI5LCAzOCwgMjAsIDEsIDE1MywgMjI1LCAKLSAgICAyMCwgMjAsIDEsIDE1MywgMjE2LCA4MCwgMjAsIDEsIDE1MywgMjMyLCAxNTIsIDIwLCAxLCAxNTMsIDIxOSwgMjI3LCAyMCwgCi0gICAgMSwgMTUzLCAyMTcsIDE2OSwgMjAsIDEsIDE1MywgMjMyLCAxOCwgMjAsIDEsIDE1MywgMjM0LCAxNjIsIDIwLCAxLCAxNTMsIAotICAgIDIyOSwgMjI1LCAyMCwgMSwgMTUzLCAyMzMsIDIyMiwgMjAsIDEsIDE1MywgMjMwLCAyMDEsIDIwLCAxLCAxNTMsIDIyMCwgCi0gICAgMTQzLCAyMCwgMSwgMTUzLCAyMzIsIDE5MSwgMjAsIDEsIDE1MywgMjQ0LCA2MiwgMjAsIDEsIDE1MywgMjIzLCAxMDEsIDIwLCAKLSAgICAxLCAxNTMsIDIzMywgMjUwLCAyMCwgMSwgMTUzLCAyMTksIDIyMywgMjAsIDEsIDE1MywgMjMxLCAyMzYsIDIyNSwgMjMxLCAKLSAgICAyMCwgMSwgMTUzLCAyMjAsIDE5MiwgMjAsIDEsIDE1MywgMjI4LCAxMDIsIDIwLCAxLCAxNTMsIDIyMCwgMTc3LCAyMjgsIAotICAgIDExMywgMjEyLCAxODcsIDIwLCAxLCAxNTMsIDIyOCwgMSwgMjMwLCAyMTgsIDIwLCAxLCAxNTMsIDIyNiwgMjA5LCAyMCwgMSwgCi0gICAgMTUzLCAyMjgsIDIyNiwgMjAsIDEsIDE1MywgMjE1LCAxNDEsIDIwLCAxLCAxNTMsIDIyOSwgMTMzLCAyMCwgMSwgMTUzLCAKLSAgICAyMzIsIDE3LCAyMCwgMSwgMTUzLCAyMjksIDEyLCAyMCwgMSwgMTUzLCAyMzEsIDE4MiwgMjAsIDEsIDE1MywgMjI4LCAxMiwgCi0gICAgMjAsIDEsIDE1MywgMjE3LCAxNzMsIDIwLCAxLCAxNTMsIDIxOSwgMjIxLCAyMCwgMSwgMTUzLCAyMjYsIDIxMCwgMjAsIDEsIAotICAgIDE1MywgMjI4LCAxMTcsIDIwLCAxLCAxNTMsIDIzMiwgMjUsIDIwLCAxLCAxNTMsIDIyOCwgMTAsIDIwLCAxLCAxNTMsIDIzNCwgCi0gICAgMjIxLCAyMCwgMSwgMTUzLCAyMjgsIDEyMCwgMjAsIDEsIDE1MywgMjE0LCAyMjcsIDIwLCAxLCAxNTMsIDIzMiwgMTU2LCAKLSAgICAyMCwgMSwgMTUzLCAyMjksIDE4MCwgMjAsIDEsIDE1MywgMjMwLCAxNiwgMjAsIDEsIDE1MywgMjMxLCAxODEsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMjgsIDExNSwgMjAsIDEsIDIyNiwgMTQsIDIxNiwgODMsIDIzMiwgMjIsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIAotICAgIDExMSwgMjAsIDEsIDIyNiwgMTQsIDIyMSwgNDksIDIxNiwgODIsIDIwLCAxLCAyMjYsIDE0LCAyMzIsIDE5MywgMjI4LCA5OSwgCi0gICAgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTg4LCAyMzIsIDI2LCAyMCwgMSwgMjI2LCAxNCwgMjM0LCA5NiwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIxMywgNiwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTgzLCAyMCwgMSwgMjI2LCAxNCwgMjM0LCAyNDIsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMjYsIDgzLCAyMCwgMSwgMjI2LCAxNCwgMjEzLCA3NywgMjMzLCA3MSwgMjAsIDEsIDIyNiwgMTQsIDIzMywgCi0gICAgMTI3LCAyMjgsIDExMywgMjI4LCAyMCwgMjAsIDEsIDIyNiwgMTQsIDIyOCwgOTcsIDIyMCwgMjE4LCAyMCwgMSwgMjI2LCAKLSAgICAxNCwgMjI5LCAxOTYsIDIyOSwgMTUsIDIwLCAxLCAyMjYsIDE0LCAyNDIsIDIwNSwgMjAsIDEsIDIyNiwgMTQsIDIyNSwgCi0gICAgMTgxLCAyMCwgMSwgMjI2LCAxNCwgMjE2LCA4MywgMjI4LCAxMTEsIDIwLCAxLCAyMjYsIDE0LCAyMjAsIDIyMywgMjI5LCAKLSAgICAxMCwgMjAsIDEsIDIyNiwgMTQsIDIyMCwgMjE5LCAyMCwgMSwgMjI2LCAxNCwgMjMxLCA4NCwgMjE3LCAxNzIsIDIwLCAxLCAKLSAgICAyMjYsIDE0LCAyMzEsIDE3MCwgMjMxLCAxODQsIDIwLCAxLCAyMjYsIDE0LCAyMjgsIDExLCAyMjgsIDk5LCAyMCwgMSwgCi0gICAgMjI2LCAxNCwgMjM0LCAxNTEsIDIwLCAxLCAyMjYsIDE0LCAyNDIsIDIwNiwgMjAsIDEsIDIyNiwgMTQsIDIzNCwgMTQ3LCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjMzLCAxNTEsIDIwLCAxLCAyMjYsIDE0LCAyMjYsIDEyMSwgMjAsIDEsIDIyNiwgMTQsIDIxNCwgCi0gICAgMTU5LCAyMCwgMSwgMjI2LCAxNCwgMjI5LCA5OSwgMjMwLCAxMTcsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDEzMiwgMjMxLCAKLSAgICAxNjYsIDIwLCAxLCAyMjYsIDE0LCAyMTMsIDE4MSwgMjAsIDEsIDIyNiwgMTQsIDIyMiwgMTgyLCAyMCwgMSwgMjI2LCAxNCwgCi0gICAgMjE4LCA0NSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgOTYsIDIwLCAxLCAyMjYsIDE0LCAyMjksIDExNywgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIyOSwgMTE4LCAyMzMsIDEwNywgMjAsIDEsIDIyNiwgMTQsIDIzMSwgODYsIDIwLCAxLCAyMjYsIDE0LCAyMTgsIAotICAgIDI1MywgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTc0LCAyMCwgMSwgMjI2LCAxNCwgMjMwLCAyMDMsIDIwLCAxLCAyMjYsIDE0LCAKLSAgICAyMjgsIDIxLCAyMCwgMSwgMjI2LCAxNCwgMjI1LCAyNCwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgOTUsIDIyOSwgMTM0LCAyMCwgCi0gICAgMSwgMjI2LCAxNCwgMjQ0LCA5NSwgMjAsIDEsIDIyNiwgMTQsIDIzMSwgMTYxLCAyMCwgMSwgMjI2LCAxNCwgMjQ0LCAxMTYsIAotICAgIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDE1OSwgMjAsIDEsIDIyNiwgMTQsIDIzMiwgNDMsIDIyOSwgNCwgMjAsIDEsIDIyNiwgCi0gICAgMTQsIDIzMiwgNDMsIDIyOCwgMjM2LCAyMCwgMSwgMjI2LCAxNCwgMjMzLCAzNSwgMjAsIDEsIDIyNiwgMTQsIDIyOSwgMTQwLCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjI4LCAxMjIsIDIwLCAxLCAyMjYsIDE0LCAxODgsIDIwLCAxLCAyMjYsIDE0LCAyMzQsIDgzLCAKLSAgICAyMCwgMSwgMjI2LCAxNCwgMjI5LCA4NywgMjAsIDEsIDEzMSwgMjI5LCA5OCwgMjMyLCAyNCwgMjAsIDEsIDEzMSwgMjI3LCAKLSAgICAyMzcsIDIwLCAxLCAxMzEsIDIxMiwgMTg3LCAyMCwgMSwgMTMxLCAyMTQsIDM3LCAyMCwgMSwgMTMxLCAyMjksIDEzMywgMjAsIAotICAgIDEsIDEzMSwgMjI5LCAyMTcsIDIwLCAxLCAxMzEsIDIyOSwgMTA1LCAyMCwgMSwgMTMxLCAyNDIsIDIxNSwgMjAsIDEsIDEzMSwgCi0gICAgMjMxLCAxNzgsIDIwLCAxLCAxMzEsIDI0MywgNTMsIDIwLCAxLCAxMzEsIDIyOCwgMywgMjMwLCAyMzksIDIzMSwgOTgsIDIwLCAKLSAgICAxLCAxMzEsIDIyOCwgOTUsIDIzMSwgMTY5LCAyMCwgMSwgMTMxLCAyMzEsIDE3NSwgMjAsIDEsIDEzMSwgMjI1LCAxODcsIAotICAgIDIwLCAxLCAxMzEsIDIyOSwgMjAyLCAyMCwgMSwgMTMxLCAyMzEsIDE4NiwgMjUwLCAyMTUsIDIwLCAxLCAxMzEsIDIzNCwgCi0gICAgMTQ5LCAyMCwgMSwgMTMxLCAyNDIsIDIxNiwgMjAsIDEsIDEzMSwgMjM0LCAxNTYsIDIwLCAxLCAxMzEsIDIxMiwgMjA0LCAKLSAgICAyMzAsIDE0NiwgMjAsIDEsIDEzMSwgMjI3LCAyMzEsIDIwLCAxLCAxMzEsIDIzMSwgMTYzLCAyMCwgMSwgMTMxLCAyMjgsIAotICAgIDEyMSwgMjAsIDEsIDEzMSwgMjMxLCAxNjksIDIwLCAxLCAxMzEsIDIxMywgNywgMjAsIDEsIDEzMSwgMjM0LCAyLCAyMCwgMSwgCi0gICAgMTMxLCAyMzUsIDE0LCAyMCwgMSwgMTMxLCAyMjEsIDQ0LCAyMCwgMSwgMTMxLCAyMjksIDIxMSwgMjAsIDEsIDEzMSwgMjE4LCAKLSAgICA0MywgMjAsIDEsIDEzMSwgMjI4LCAyNDAsIDIwLCAxLCAxMzEsIDIxNywgMTksIDIxMiwgMTg5LCAyMCwgMSwgMTMxLCAyMTksIAotICAgIDIzLCAyMCwgMSwgMTMxLCAyMjksIDEyNCwgMjI4LCAyMCwgMjAsIDEsIDEzMSwgMjE0LCAxNTgsIDIwLCAxLCAxMzEsIDIzMCwgCi0gICAgMTksIDIwLCAxLCAxMzEsIDIzMiwgNDMsIDIzNCwgMTU4LCAyMCwgMSwgMTMxLCAyMjgsIDEwNCwgMjAsIDEsIDEzMSwgMjI5LCAKLSAgICAxMTksIDIwLCAxLCAxMzEsIDIzMywgMTExLCAyMCwgMSwgMTMxLCAyMzEsIDE3MSwgMjAsIDEsIDEzMSwgMjMxLCA3NSwgMjAsIAotICAgIDEsIDEzMSwgMjI4LCA5OCwgMjAsIDEsIDEzMSwgMjE3LCAxNjgsIDIwLCAxLCAxMzEsIDIyOSwgMTIxLCAyMCwgMSwgMTMxLCAKLSAgICAyNDMsIDIwNCwgMjAsIDEsIDEzMSwgMjI5LCAyMTYsIDIwLCAxLCAxMzEsIDIyOCwgMTIzLCAyMCwgMSwgMTMxLCAyMjgsIAotICAgIDExOSwgMjAsIDEsIDEzMSwgMjUxLCAzNiwgMjAsIDEsIDEzMSwgMjE0LCAxNjAsIDIwLCAxLCAxMzEsIDIzMSwgMTc2LCAyMCwgCi0gICAgMSwgMTMxLCAyMjMsIDUxLCAyMCwgMSwgMTMxLCAyMjksIDE0LCAyMCwgMSwgMTMxLCAyMzMsIDEyNiwgMjAsIDEsIDEzMSwgCi0gICAgMjE3LCAxNywgMjAsIDEsIDEzMSwgMjI4LCAxMDUsIDIyOSwgODcsIDIwLCAxLCAxMzEsIDIyOSwgNiwgMjAsIDEsIDEzMSwgCi0gICAgMjM0LCAxNjIsIDIwLCAxLCAxMzEsIDIyOSwgMTI1LCAyMCwgMSwgMTMxLCAyMzIsIDE3LCAyMCwgMSwgMTMxLCAyMzEsIAotICAgIDE2NCwgMjAsIDEsIDEzMSwgMjMyLCAxNTYsIDIwLCAxLCAxMzEsIDIzMywgMjEwLCAyMCwgMSwgMTMxLCAyMjksIDEyLCAyMCwgCi0gICAgMSwgMTMxLCAyMjksIDg3LCAyMCwgMSwgMTMxLCAyMTMsIDE3MiwgMjAsIDEsIDEzMSwgMjI5LCAxMjIsIDIwLCAxLCAxMzEsIAotICAgIDIyOCwgMTA4LCAyMCwgMSwgMTMxLCAyMjgsIDEwMCwgMjAsIDEsIDEzMSwgMjMzLCAyMjQsIDIyOCwgMjI2LCAyMCwgMSwgCi0gICAgMTMxLCAyMjgsIDEwNiwgMjAsIDEsIDEzMSwgMjI5LCAyMjQsIDIwLCAxLCAxMzEsIDIzMiwgNDMsIDIyOCwgMTExLCAyMCwgCi0gICAgMSwgMTMxLCAyMTMsIDkxLCAyMCwgMSwgMTMxLCAyMjksIDIyMywgMjAsIDEsIDEzMSwgMjIwLCAxNDUsIDIwLCAxLCAxMzEsIAotICAgIDIyMSwgNDcsIDIwLCAxLCAxMzEsIDIzMSwgMTcyLCAyMCwgMSwgMTMxLCAyMzIsIDI0LCAyMCwgMSwgMTMxLCAyMzEsIDE4MiwgCi0gICAgMjAsIDEsIDEzMSwgMjM0LCAxNTAsIDIwLCAxLCAxMzEsIDIzMSwgMTczLCAyMCwgMSwgMTMxLCAyMzQsIDE1NCwgMjAsIDEsIAotICAgIDEzMSwgMjMxLCAxODYsIDIyNSwgMjM1LCAyMCwgMSwgMTMxLCAyMTIsIDE3MSwgMjAsIDEsIDEzMSwgMjI5LCAyLCAyMCwgMSwgCi0gICAgMTMxLCAyMzEsIDMzLCAyMCwgMSwgMTMxLCAyMzAsIDE3MCwgMjAsIDEsIDEzMSwgMjIwLCAxOTUsIDIwLCAxLCAxMzEsIAotICAgIDIzNCwgMTcyLCAyMzMsIDk0LCAyMCwgMSwgMTMxLCAyMzQsIDE3MiwgMjQ0LCAxMjgsIDIwLCAxLCAxMzEsIDIyOSwgMTUyLCAKLSAgICAyMCwgMSwgMTMxLCAyMzAsIDE2LCAyMCwgMSwgMTMxLCAyMzIsIDIyOSwgMjAsIDEsIDEzMSwgMjI1LCAxOTcsIDIwLCAxLCAKLSAgICAxMzEsIDIyNiwgNzQsIDIwLCAxLCAxMzEsIDIxNywgMTgzLCAyMCwgMSwgMTAzLCAyMzEsIDE2MiwgMjAsIDEsIDEwMywgCi0gICAgMjE0LCAzNSwgMjAsIDEsIDEwMywgMjI5LCAwLCAyMCwgMSwgMTAzLCAyMzEsIDgzLCAyMCwgMSwgMTAzLCAyMjgsIDI1NCwgCi0gICAgMjAsIDEsIDEwMywgMjMzLCA3LCAyMCwgMSwgMTAzLCAyMjksIDMsIDIwLCAxLCAxMDMsIDIyOCwgMTE4LCAyMCwgMSwgMTAzLCAKLSAgICAyMjksIDEzOSwgMjAsIDEsIDEwMywgMjI4LCAyMCwgMjAsIDEsIDEwMywgMjEzLCAxODIsIDIwLCAxLCAxMDMsIDIyOSwgOTUsIAotICAgIDIwLCAxLCAxMDMsIDIyMCwgMjQxLCAyMCwgMSwgMTAzLCAyMjksIDEwNiwgMjAsIDEsIDEwMywgMjM0LCAxNTcsIDIwLCAxLCAKLSAgICAxMDMsIDIxNywgMTcwLCAyMCwgMSwgMTAzLCAyMjAsIDIyMSwgMjAsIDEsIDEwMywgMjI5LCAxMSwgMjAsIDEsIDEwMywgCi0gICAgMjE4LCAyNTMsIDIwLCAxLCAxMDMsIDIzNCwgMTYyLCAyMCwgMSwgMTAzLCAyMTMsIDc5LCAyMCwgMSwgMTAzLCAyMzMsIAotICAgIDIyNSwgMjAsIDEsIDEwMywgMjIyLCAxNTAsIDIwLCAxLCAxMDMsIDIzMSwgODgsIDIwLCAxLCAxMDMsIDIyOSwgMjE1LCAyMCwgCi0gICAgMSwgMTAzLCAyMzEsIDI1MSwgMjAsIDEsIDEwMywgMjMxLCA5NCwgMjAsIDEsIDEwMywgMjIxLCA0NiwgMjAsIDEsIDEwMywgCi0gICAgMjEzLCAzMCwgMjAsIDEsIDEwMywgMjI5LCA1LCAyMCwgMSwgMTAzLCAyMzQsIDE1MywgMjMxLCAxNjUsIDIwLCAxLCAxMDMsIAotICAgIDIyOSwgMTAyLCAyMCwgMSwgMTAzLCAyMTYsIDgyLCAyMCwgMSwgMTAzLCAyNDIsIDIyNCwgMjAsIDEsIDEwMywgMjI5LCA5MiwgCi0gICAgMjAsIDEsIDEwMywgMjQ0LCA5NiwgMjAsIDEsIDEwMywgMjI5LCAyMTksIDIwLCAxLCAxMDMsIDIzMSwgNjcsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMzEsIDIwLCAxLCAxMDMsIDIyOSwgMjAxLCAyMCwgMSwgMTAzLCAyMzAsIDIxNywgMjAsIDEsIDEwMywgCi0gICAgMjMxLCA3MSwgMjAsIDEsIDEwMywgMjI1LCA2LCAyMCwgMSwgMTAzLCAyMzEsIDY5LCAyMCwgMSwgMTAzLCAyMzEsIDg1LCAKLSAgICAyMCwgMSwgMTAzLCAyMzIsIDE0MiwgMjAsIDEsIDEwMywgMjI4LCAxMTAsIDIwLCAxLCAxMDMsIDIzMSwgMTg1LCAyMCwgMSwgCi0gICAgMTAzLCAyMzMsIDIwMiwgMjAsIDEsIDEwMywgMjI4LCAxMiwgMjAsIDEsIDEwMywgMjE3LCAxNzMsIDIwLCAxLCAxMDMsIAotICAgIDIxOSwgMjIxLCAyMCwgMSwgMTAzLCAyMTIsIDE3MSwgMjAsIDEsIDEwMywgMjM0LCAxNTQsIDIwLCAxLCAxMDMsIDIyNCwgCi0gICAgNjAsIDIwLCAxLCAxMDMsIDIxNywgMjE4LCAyMCwgMSwgMTAzLCAyMjksIDEwMywgMjAsIDEsIDEwMywgMjMxLCA5MCwgMjAsIAotICAgIDEsIDEwMywgMjI4LCAxMDksIDIwLCAxLCAxMDMsIDIzNCwgMTUyLCAyMCwgMSwgMTAzLCAyMjUsIDE5MSwgMjAsIDEsIDEwMywgCi0gICAgMjI2LCAyOCwgMjAsIDEsIDEwMywgMjI3LCAyNDYsIDIwLCAxLCAxMDMsIDIzMywgMzUsIDIwLCAxLCAxMDMsIDIyOSwgMTQwLCAKLSAgICAyMCwgMSwgMTAzLCAyMzEsIDg3LCAyMCwgMSwgMTAzLCAyMjksIDExNCwgMjAsIDEsIDEwMywgMjEyLCAxODQsIDIwLCAxLCAKLSAgICAxMDMsIDIyNiwgMTQ5LCAyMCwgMSwgMTAzLCAyMTIsIDE4MywgMjAsIDEsIDEwMywgMjI5LCAyMjQsIDIwLCAxLCAxMDMsIAotICAgIDIyOCwgOTksIDIwLCAxLCAxMDMsIDIxOSwgMjUsIDIwLCAxLCAxMDMsIDIzMywgMjI5LCAyMCwgMSwgMTAzLCAyMjksIDEyOSwgCi0gICAgMjAsIDEsIDEwMywgMjI5LCAxMDAsIDIwLCAxLCAxMDMsIDIxNiwgNjYsIDIwLCAxLCAxMDMsIDIzMSwgOTgsIDIwLCAxLCAKLSAgICAxMDMsIDIzMywgMjE5LCAyMCwgMSwgMTAzLCAyMjgsIDEwNywgMjAsIDEsIDEwMywgMjE3LCAxNzEsIDIwLCAxLCAxMDMsIAotICAgIDIzMiwgMTksIDIwLCAxLCAxMDMsIDIyOSwgMTM4LCAyMCwgMSwgMTAzLCAyMzMsIDMwLCAyMCwgMSwgMTAzLCAyMjksIDEyMCwgCi0gICAgMjAsIDEsIDEwMywgMjI4LCAxMTIsIDIwLCAxLCAxMDMsIDIyOCwgMjQwLCAyMCwgMSwgMTAzLCAyNDIsIDIwOSwgMjAsIDEsIAotICAgIDEwMywgMjMzLCAyMzgsIDIwLCAxLCAxMDMsIDIyMywgMjM0LCAyMjcsIDc1LCAyMCwgMSwgMTAzLCAyMTgsIDM1LCAyMCwgMSwgCi0gICAgMTAzLCAyMTYsIDIyMywgMjAsIDEsIDEwMywgMjI4LCAxMCwgMjAsIDEsIDEwMywgMjIzLCAxMzYsIDIwLCAxLCAxMDMsIAotICAgIDIzMywgNzMsIDIwLCAxLCAxMDMsIDIzMSwgMTQ0LCAyMCwgMSwgMTAzLCAxODMsIDIwLCAxLCAxMDMsIDIxOCwgMjA1LCAyMCwgCi0gICAgMSwgMTAzLCAyMzAsIDE3MiwgMjAsIDEsIDEwMywgMjIwLCAyMDcsIDIwLCAxLCAxMDMsIDIyMCwgMjE3LCAyMCwgMSwgMTAzLCAKLSAgICAyMzMsIDE3NywgMjAsIDEsIDEwMywgMjI4LCA5MiwgMjAsIDEsIDEwMywgMjIwLCAxNTAsIDIwLCAxLCAxMDMsIDIyOCwgCi0gICAgMTAxLCAyMCwgMSwgMTAzLCAyMjYsIDg2LCAyMCwgMSwgMTAzLCAyMjksIDY0LCAyMCwgMSwgMTAzLCAyMjAsIDE3NiwgMjAsIAotICAgIDEsIDEwMywgMjI1LCAxOSwgMjAsIDEsIDEwMywgMjMwLCAxMTcsIDIwLCAxLCAxMDMsIDIzMiwgMTc0LCAyMCwgMSwgMTAzLCAKLSAgICAyMjMsIDIzNCwgMjMwLCAxNjYsIDIwLCAxLCAxMDMsIDIxNywgNzEsIDIwLCAxLCAxMDMsIDIyOCwgOTMsIDIwLCAxLCAxMDMsIAotICAgIDIzMSwgMTg2LCAxOTgsIDIwLCAxLCAxMDMsIDIyMiwgMTQ4LCAyMCwgMSwgMTAzLCAyNDQsIDE2MywgMjAsIDEsIDgwLCAKLSAgICAyMjksIDIyMywgMjAsIDEsIDgwLCAyMTYsIDIyOSwgMjAsIDEsIDgwLCAyMzEsIDE3NSwgMjAsIDEsIDgwLCAyMzMsIDExMSwgCi0gICAgMjAsIDEsIDgwLCAyMTQsIDEwOSwgMjAsIDEsIDgwLCAyMzIsIDE3OCwgMjAsIDEsIDgwLCAyMjYsIDIxMywgMjAsIDEsIDgwLCAKLSAgICAyMTksIDIzMCwgMjAsIDEsIDgwLCAyMjQsIDM3LCAyMCwgMSwgODAsIDIyOCwgMTE0LCAyMCwgMSwgODAsIDIyOSwgMTk0LCAKLSAgICAyMCwgMSwgODAsIDIyNSwgMzMsIDIwLCAxLCA4MCwgMjE4LCAxMywgMjAsIDEsIDgwLCAyMjksIDEwOCwgMjAsIDEsIDgwLCAKLSAgICAyMzMsIDI1NCwgMjAsIDEsIDgwLCAyMTMsIDE3NSwgMjAsIDEsIDgwLCAyMjIsIDg5LCAyMCwgMSwgODAsIDIyOSwgMTMwLCAKLSAgICAyMCwgMSwgODAsIDIyNiwgMjEwLCAyMCwgMSwgODAsIDIxNiwgMjMwLCAyMCwgMSwgODAsIDIzMywgMjIzLCAyMCwgMSwgODAsIAotICAgIDIzMiwgMTkyLCAyMCwgMSwgODAsIDIyOCwgMTE3LCAyMCwgMSwgODAsIDIyOSwgODQsIDIwLCAxLCA4MCwgMjMyLCAyNSwgCi0gICAgMjAsIDEsIDgwLCAyMjksIDEwMSwgMjAsIDEsIDgwLCAyMjksIDgzLCAyMCwgMSwgODAsIDIyOCwgMTE2LCAyMCwgMSwgODAsIAotICAgIDIyMywgMTM0LCAyMCwgMSwgODAsIDIyOSwgMiwgMjAsIDEsIDgwLCAyMjYsIDg1LCAyMCwgMSwgODAsIDIyMiwgMjAwLCAyMCwgCi0gICAgMSwgODAsIDIyOSwgMTE1LCAyMCwgMSwgODAsIDIzMSwgNzcsIDIwLCAxLCA4MCwgMjQyLCAyMDMsIDIwLCAxLCA4MCwgMjI5LCAKLSAgICAxMDQsIDIwLCAxLCA4MCwgMjI5LCAxMywgMjAsIDEsIDgwLCAyMzEsIDIzNSwgMjAsIDEsIDgwLCAyMzIsIDE3NiwgMjAsIDEsIAotICAgIDgwLCAyMjksIDEzNSwgMjAsIDEsIDgwLCAyMjksIDIwNywgMjAsIDEsIDgwLCAyMTgsIDM0LCAyMjgsIDk5LCAyMCwgMSwgCi0gICAgODAsIDIyMSwgNDgsIDIwLCAxLCA4MCwgMjI1LCAyOSwgMjAsIDEsIDgwLCAyMjksIDIyNywgMjE5LCAyMzUsIDIwLCAxLCAKLSAgICA4MCwgMjI5LCAxMjMsIDIyOCwgMjAsIDIwLCAxLCA4MCwgMjEyLCAyNTEsIDIwLCAxLCA4MCwgMjQyLCAyMDQsIDIwLCAxLCAKLSAgICA4MCwgMjE2LCA4MSwgMjAsIDEsIDgwLCAyMTMsIDEwLCAyMCwgMSwgODAsIDIyNSwgMTUwLCAyMCwgMSwgODAsIDIxNiwgNzEsIAotICAgIDIwLCAxLCA4MCwgMjM0LCAxNjAsIDIwLCAxLCA4MCwgMjE5LCAyNCwgMjAsIDEsIDgwLCAyMTcsIDE3MiwgMjAsIDEsIDgwLCAKLSAgICAyMTQsIDE2MSwgMjAsIDEsIDgwLCAyMTMsIDI0NywgMjAsIDEsIDgwLCAyMzMsIDE1NCwgMjAsIDEsIDgwLCAyMjUsIDM1LCAKLSAgICAyMCwgMSwgODAsIDIxOCwgNDQsIDIwLCAxLCA4MCwgMjQyLCAyMjMsIDIwLCAxLCA4MCwgMjI5LCAxNDQsIDIwLCAxLCA4MCwgCi0gICAgMjIwLCAyMjAsIDIwLCAxLCA4MCwgMjMxLCA3MiwgMjAsIDEsIDgwLCAyMzEsIDE3OSwgMjAsIDEsIDgwLCAyMjcsIDIzNSwgCi0gICAgMjAsIDEsIDgwLCAyMjgsIDIyMywgMjAsIDEsIDgwLCAyNDMsIDQ5LCAyMCwgMSwgODAsIDIxNiwgNzIsIDIwLCAxLCA4MCwgCi0gICAgMjMzLCAyMzIsIDIwLCAxLCA4MCwgMjEzLCA1NywgMjAsIDEsIDgwLCAyMjgsIDExLCAyNDksIDIwOSwgMjAsIDEsIDgwLCAKLSAgICAyMTIsIDI0MSwgMjAsIDEsIDgwLCAyMzEsIDg5LCAyMCwgMSwgODAsIDIyOSwgMjEyLCAyMCwgMSwgODAsIDIyNSwgMjMyLCAKLSAgICAyMCwgMSwgODAsIDIxMiwgMTg4LCAyMCwgMSwgODAsIDIzMywgMzIsIDIwLCAxLCA4MCwgMjQzLCAyMDQsIDIwLCAxLCA4MCwgCi0gICAgMjQzLCA0OCwgMjAsIDEsIDgwLCAyMjksIDk0LCAyMCwgMSwgODAsIDIzNCwgMTYyLCAyMCwgMSwgODAsIDIzMiwgMjgsIDIwLCAKLSAgICAxLCA4MCwgMjI5LCAxMDcsIDIwLCAxLCA4MCwgMjQyLCAyMTAsIDIwLCAxLCA4MCwgMjQ0LCAxNjQsIDIwLCAxLCA4MCwgCi0gICAgMjI4LCA5NCwgMjAsIDEsIDgwLCAyMjYsIDI5LCAyMCwgMSwgODAsIDIxMywgOCwgMjAsIDEsIDgwLCAyMjksIDEzMSwgMjAsIAotICAgIDEsIDgwLCAyMjgsIDExLCAyNTEsIDIwMCwgMjAsIDEsIDgwLCAyMjcsIDIxNSwgMjAsIDEsIDgwLCAyMjUsIDEyNywgMjAsIAotICAgIDEsIDgwLCAyMzEsIDMzLCAyMCwgMSwgODAsIDI0MywgMjAyLCAyMCwgMSwgODAsIDIzMCwgMzgsIDIwLCAxLCA4MCwgMjMwLCAKLSAgICAxNzAsIDIwLCAxLCA4MCwgMjQyLCAyMDksIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDcyLCAyMCwgMSwgODAsIDIzMCwgMTE4LCAKLSAgICAyMCwgMSwgODAsIDIyNSwgMzIsIDIwLCAxLCA4MCwgMjI5LCA5NiwgMjAsIDEsIDgwLCAyMzMsIDIxMCwgMjAsIDEsIDgwLCAKLSAgICAyMjUsIDIyOSwgMjAsIDEsIDgwLCAyMjgsIDEwMiwgMjAsIDEsIDgwLCAyMTMsIDksIDIwLCAxLCA4MCwgMjI5LCAxMTYsIAotICAgIDIwLCAxLCA4MCwgMjI2LCAyMTQsIDIyNiwgNjIsIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDI1MCwgMjAzLCAyMCwgMSwgODAsIAotICAgIDI0NCwgNiwgMjAsIDEsIDgwLCAyMjksIDcsIDIwLCAxLCA4MCwgNjEsIDIwLCAxLCA4MCwgMjE2LCAyMjMsIDIwLCAxLCA4MCwgCi0gICAgNzUsIDIwLCAxLCA4MCwgNzIsIDIwLCAxLCA4MCwgMjMzLCAxMDksIDIwLCAxLCA4MCwgMjI2LCAyMTQsIDIyNSwgMTU3LCAKLSAgICAyMCwgMSwgODAsIDIxOCwgNDksIDIwLCAxLCA4MCwgMjE4LCAyLCAyMCwgMSwgODAsIDIyOSwgMjI3LCAyMzAsIDEwNiwgCi0gICAgMjQwLCAyMjEsIDIwLCAxLCA4MCwgMjIwLCAxOTUsIDIwLCAxLCA4MCwgMjEzLCA1LCAyMCwgMSwgODAsIDIyOSwgNzcsIDIwLCAKLSAgICAxLCA4MCwgMjEyLCAxOTMsIDIwLCAxLCA4MCwgMjEyLCAyMTgsIDIxOCwgMTg1LCAyMCwgMSwgODAsIDIxMiwgMjE4LCAyNDksIAotICAgIDg2LCAyMCwgMSwgODAsIDIxMiwgMTc4LCAyMCwgMSwgODAsIDIxMiwgMTg2LCAyMCwgMSwgODAsIDIzNCwgMTQ4LCAyMCwgMSwgCi0gICAgODAsIDIyNiwgMjcsIDIwLCAxLCA4MCwgMjI5LCA4LCAyNDUsIDY1LCAyMCwgMSwgODAsIDIyNSwgMzAsIDIwLCAxLCA4MCwgCi0gICAgMjEzLCAxODAsIDIwLCAxLCA4MCwgMjQ0LCAxMTYsIDIwLCAxLCA4MCwgMjE0LCAyMjcsIDIwLCAxLCA4MCwgMjMyLCAxNTYsIAotICAgIDIwLCAxLCA4MCwgMjMxLCA0MiwgMjAsIDEsIDgwLCAyMjMsIDIwNCwgMjAsIDEsIDgwLCAyMjQsIDYxLCAyMCwgMSwgODAsIAotICAgIDIyOSwgNzYsIDIwLCAxLCA4MCwgMjI5LCAxNTksIDIwLCAxLCA4MCwgMjIwLCAxODcsIDIwLCAxLCA4MCwgMjIwLCAxNzYsIAotICAgIDIwLCAxLCA4MCwgMjQzLCAyMDYsIDIyMywgMjM2LCAyMCwgMSwgODAsIDIwNSwgMjAsIDEsIDgwLCAyMjUsIDI0MCwgMjAsIAotICAgIDEsIDgwLCAyMzIsIDE3NCwgMjAsIDEsIDgwLCAyMzQsIDM3LCAyMCwgMSwgODAsIDIzMSwgMTIyLCAyMCwgMSwgODAsIDE4OCwgCi0gICAgMjAsIDEsIDgwLCAyMzEsIDIzMiwgMjAsIDEsIDgwLCAyMTcsIDE3NCwgMjAsIDEsIDgwLCAyMzQsIDEwMSwgMjAsIDEsIDgwLCAKLSAgICAyMzAsIDIyMCwgMjAsIDEsIDgwLCAyMTcsIDIwMCwgMjAsIDEsIDgwLCAyNDQsIDEzNywgMjAsIDEsIDgwLCAyNDIsIDE5OSwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDE4MSwgMjAsIDEsIDIyNiwgMTMsIDY5LCAyMCwgMSwgMjI2LCAxMywgMjMzLCAyMzgsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyNDUsIDE2NSwgMjAsIDEsIDIyNiwgMTMsIDIyNCwgMSwgMjAsIDEsIDIyNiwgMTMsIDIxOCwgMzUsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMjgsIDEwLCAyMCwgMSwgMjI2LCAxMywgMjMzLCAxNTcsIDIwLCAxLCAyMjYsIDEzLCAyMjMsIDEzNiwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyMywgMTgyLCAyMCwgMSwgMjI2LCAxMywgMjMxLCAxNDQsIDIwLCAxLCAyMjYsIDEzLCAyMTgsIAotICAgIDQ5LCAyMCwgMSwgMjI2LCAxMywgMjI5LCAyMjYsIDIwLCAxLCAyMjYsIDEzLCAyMjksIDE0LCAyMCwgMSwgMjI2LCAxMywgCi0gICAgMTgzLCAyMCwgMSwgMjI2LCAxMywgMjE4LCAyMDUsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDIwNywgMjAsIDEsIDIyNiwgMTMsIAotICAgIDIyMCwgMTE3LCAyMCwgMSwgMjI2LCAxMywgMjIxLCA0NCwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTc3LCAyMCwgMSwgMjI2LCAKLSAgICAxMywgMjM0LCAxNjIsIDIwLCAxLCAyMjYsIDEzLCAyMjgsIDY0LCAyMCwgMSwgMjI2LCAxMywgMjI4LCA5MiwgMjAsIDEsIAotICAgIDIyNiwgMTMsIDIyOCwgMjQxLCAyMCwgMSwgMjI2LCAxMywgMjEyLCAyMTcsIDIwLCAxLCAyMjYsIDEzLCAyMjAsIDE1MCwgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDE4NiwgMjAsIDEsIDIyNiwgMTMsIDIyOCwgMTIwLCAyMCwgMSwgMjI2LCAxMywgMjI2LCAyNywgCi0gICAgMjAsIDEsIDIyNiwgMTMsIDIyOCwgMTAxLCAyMCwgMSwgMjI2LCAxMywgMjEzLCAxODAsIDIwLCAxLCAyMjYsIDEzLCAyMjYsIAotICAgIDg2LCAyMCwgMSwgMjI2LCAxMywgMjIzLCA1MSwgMjAsIDEsIDIyNiwgMTMsIDIyOSwgNjQsIDIwLCAxLCAyMjYsIDEzLCAKLSAgICAyMjMsIDIwNCwgMjAsIDEsIDIyNiwgMTMsIDIzNCwgMTcxLCAyMCwgMSwgMjI2LCAxMywgMjI5LCA5MywgMjAsIDEsIDIyNiwgCi0gICAgMTMsIDIyOSwgMTQxLCAyMCwgMSwgMjI2LCAxMywgMjIwLCAxODcsIDIwLCAxLCAyMjYsIDEzLCAyMjUsIDMzLCAyMCwgMSwgCi0gICAgMjI2LCAxMywgMjQ0LCA2LCAyMCwgMSwgMjI2LCAxMywgMjE0LCA0OSwgMjAsIDEsIDIyNiwgMTMsIDIzMywgMTMsIDIwLCAxLCAKLSAgICAyMjYsIDEzLCAyMzIsIDE3NCwgMjAsIDEsIDIyNiwgMTMsIDIzNCwgMzcsIDIwLCAxLCAyMjYsIDEzLCAyMzEsIDE3NywgMjAsIAotICAgIDEsIDIyNiwgMTMsIDIyMywgMjMzLCAyMCwgMSwgMjI2LCAxMywgMTg4LCAyMCwgMSwgMjI2LCAxMywgMjMwLCAyMzEsIDIwLCAKLSAgICAxLCAyMjYsIDEzLCAyMzEsIDE4NSwgMjAsIDEsIDIyNiwgMTMsIDIxNywgMTgzLCAyMCwgMSwgMjI2LCAxMywgMjM0LCA0LCAKLSAgICAyMCwgMSwgMjI2LCAxMywgMjIyLCAxNjYsIDIwLCAxLCAyMjYsIDEzLCAyMTQsIDk4LCA1NiwgMSwgMjUzLCAxOTMsIDc0LCAKLSAgICAxNDIsIDEsIDI1MywgMTkzLCAyMTMsIDM4LCA0NywgMjcsIDE2LCAyMjUsIDM5LCA0NywgMjcsIDE2LCAyNDgsIDEwMywgNDcsIAotICAgIDI3LCAxNiwgMjI2LCA1MCwgNDcsIDI3LCAxNiwgMjI2LCAyMzcsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyMjYsIDIzNywgCi0gICAgMjQ3LCAxNTMsIDQ3LCAyNywgMTYsIDIxNCwgMjQ4LCAyNDUsIDEzNSwgNDcsIDI3LCAxNiwgMjE0LCAyNDgsIDI0NywgMTUzLCAKLSAgICA0NywgMjcsIDE2LCAyMzQsIDIwMiwgNDcsIDI3LCAxNiwgMjE4LCAxMTUsIDQ3LCAyNywgMTYsIDIyNiwgMTM3LCA0NywgMjcsIAotICAgIDE2LCAyMTIsIDIwOCwgNDcsIDI3LCAxNiwgMjEyLCAyMDksIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMzMsIDI0MywgNDcsIAotICAgIDI3LCAxNiwgMjUzLCAyMzYsIDI0NSwgMTM1LCA0NywgMjcsIDE2LCAyNDQsIDI0OSwgMjQ1LCAxMzUsIDQ3LCAyNywgMTYsIAotICAgIDIxNywgMjExLCA0NywgMjcsIDE2LCAyMzQsIDE2NywgNDcsIDI3LCAxNiwgMjUzLCAyMjcsIDQ3LCAyNywgMTYsIDI1MywgCi0gICAgMjI4LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjE4LCAxMjEsIDQ3LCAyNywgMTYsIDIxNywgMTEyLCA0NywgMjcsIDE2LCAKLSAgICAyMjcsIDcyLCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMjUsIDM4LCAKLSAgICA0NywgMjcsIDE2LCAyNTAsIDg1LCA0NywgMjcsIDE2LCAyMTQsIDIzOCwgNDcsIDI3LCAxNiwgMjM1LCAxNjIsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzNCwgMTY4LCAyNTMsIDE5MSwgNDcsIAotICAgIDI3LCAxNiwgMjIyLCAxMzEsIDQ3LCAyNywgMTYsIDIyNiwgMTI4LCA0NywgMjcsIDE2LCAyMTksIDg2LCAyNTMsIDIzMCwgCi0gICAgNDcsIDI3LCAxNiwgMjI2LCAyMzYsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAyMTQsIDI0NywgMjUzLCAxOTEsIDQ3LCAyNywgCi0gICAgMTYsIDI1MywgMjMxLCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjUzLCAyMjUsIDQ3LCAyNywgMTYsIDIzNCwgNDYsIDQ3LCAKLSAgICAyNywgMTYsIDIyMywgMTk5LCA0NywgMjcsIDE2LCAyMjUsIDIzOCwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIxNywgMzYsIAotICAgIDQ3LCAyNywgMTYsIDI1NCwgMzAsIDQ3LCAyNywgMTYsIDIyMiwgNzgsIDQ3LCAyNywgMTYsIDIxOCwgMTI0LCAyNTMsIDE5MSwgCi0gICAgNDcsIDI3LCAxNiwgMjE4LCAxMjQsIDIzMSwgMTA3LCAyMTksIDg0LCA0NywgMjcsIDE2LCAyMjYsIDIzMSwgMjUzLCAxOTEsIAotICAgIDQ3LCAyNywgMTYsIDIxNywgMTQzLCA0NywgMjcsIDE2LCAyMzMsIDUxLCA0NywgMjcsIDE2LCAyNDUsIDI1MiwgNDcsIDI3LCAKLSAgICAxNiwgMjE2LCAxODUsIDQ3LCAyNywgMTYsIDIxNywgMTg1LCA0NywgMjcsIDE2LCAyMzMsIDI0NiwgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAyMzYsIDI0NCwgMjQ5LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI1MywgMTkxLCA0NywgMjcsIDE2LCAKLSAgICAyMzYsIDcsIDQ3LCAyNywgMTYsIDIxNiwgMTU3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjM0LCAyMDUsIDIxNiwgMTU2LCAKLSAgICA0NywgMjcsIDE2LCAyMjYsIDc1LCA0NywgMjcsIDE2LCAyMjUsIDQzLCA0NywgMjcsIDE2LCAyMzQsIDIwLCA0NywgMjcsIAotICAgIDE2LCAyNTAsIDE3LCAyNTMsIDE5MSwgNDcsIDI3LCAxNiwgMjI0LCAzOCwgNDcsIDI3LCAxNiwgMjI2LCAxNDAsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMjYsIDEzOCwgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDI0MCwgMTAyLCA0NywgMjcsIDE2LCAKLSAgICAyMzAsIDIzLCA0NywgMjcsIDE2LCAyMjYsIDMyLCA0NywgMjcsIDE2LCAyMzQsIDIxLCAyNTQsIDU4LCA0NywgMjcsIDE2LCAKLSAgICAyMTYsIDE1NywgMjU0LCA1OCwgNDcsIDI3LCAxNiwgMjE5LCA2MywgNDcsIDI3LCAxNiwgMjQyLCAxMDEsIDQ3LCAyNywgMTYsIAotICAgIDIzNSwgMTYyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI3LCA3MiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMjM3LCAKLSAgICAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI2LCAzMSwgNDcsIDI3LCAxNiwgMjM0LCA3LCA0NywgMjcsIDE2LCAyMjYsIDMwLCAKLSAgICA0NywgMjcsIDE2LCAyMzMsIDI0NSwgNDcsIDI3LCAxNiwgMjI2LCA3NiwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIzNCwgCi0gICAgMTY4LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDI1NCwgNywgNDcsIDI3LCAKLSAgICAxNiwgMjEyLCAyMDYsIDQ3LCAyNywgMTYsIDI1MywgMjI4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjUzLCAyMjksIDIxOCwgCi0gICAgMTIyLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjEyLCAyMDcsIDQ3LCAyNywgMTYsIDIzMywgMjQ0LCA0NywgMjcsIDE2LCAKLSAgICAyNDUsIDEzMCwgNDcsIDI3LCAxNiwgMjUwLCA4NiwgNDcsIDI3LCAxNiwgMjMxLCAxMSwgMjM1LCAxNjEsIDQ3LCAyNywgMTYsIAotICAgIDIxNCwgMjQ4LCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI1LCAyMzgsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMjUsIDQ0LCAKLSAgICAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjI3LCA2OSwgNDcsIDI3LCAxNiwgMjUzLCAyNTEsIDQ3LCAyNywgMTYsIDIzMiwgCi0gICAgMTE4LCA0NywgMjcsIDE2LCAyMjYsIDEzOCwgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDIyNiwgMTQwLCAyMjksIDE3NywgNDcsIAotICAgIDI3LCAxNiwgMjQ1LCAyNiwgMjI2LCAxMzksIDQ3LCAyNywgMTYsIDIzMywgMTc1LCA0NywgMjcsIDE2LCAyNTMsIDI1MiwgCi0gICAgNDcsIDI3LCAxNiwgMjE2LCAxNTcsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyNDUsIDEzMywgNDcsIDI3LCAxNiwgMjE4LCAKLSAgICAxMjQsIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTgsIDExNiwgNDcsIDI3LCAxNiwgMjUwLCAxNywgMjI5LCAxNzcsIDQ3LCAKLSAgICAyNywgMTYsIDI0NSwgNjksIDQ3LCAyNywgMTYsIDIyMiwgNzksIDIyOSwgMTc3LCA0NywgMjcsIDE2LCAyMTMsIDEzOSwgCi0gICAgMjM0LCA0NiwgNDcsIDI3LCAxNiwgMjE2LCAxNTQsIDQ3LCAyNywgMTYsIDIyNSwgNDUsIDQ3LCAyNywgMTYsIDIxNiwgMTU4LCAKLSAgICA0NywgMjcsIDE2LCAyMTYsIDE1NSwgNDcsIDI3LCAxNiwgMjI1LCA0MiwgNDcsIDI3LCAxNiwgMjE2LCAxNTMsIDQ3LCAyNywgCi0gICAgMTYsIDIyNSwgNDEsIDQ3LCAyNywgMTYsIDI0MiwgMTM0LCA0NywgMjcsIDE2LCAyNTMsIDE4NSwgNDcsIDI3LCAxNiwgMjQ1LCAKLSAgICAyNiwgMjUzLCAxODUsIDQ3LCAyNywgMTYsIDIyNiwgMjMxLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgMjE3LCAxNDIsIDI0NSwgCi0gICAgMzQsIDQ3LCAyNywgMTYsIDIxNywgMTQyLCAyNDQsIDI0OCwgNDcsIDI3LCAxNiwgMjE3LCAxNDQsIDI1MywgMjMyLCA0NywgCi0gICAgMjcsIDE2LCAyMTcsIDEzNywgMjM0LCAyNTEsIDI1MywgMjI0LCA0NywgMjcsIDE2LCAyMzQsIDIwNCwgNDcsIDI3LCAxNiwgCi0gICAgMjQ1LCA5NywgNDcsIDI3LCAxNiwgMjEzLCAyLCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjEzLCAyLCAyNTQsIDcsIDQ3LCAKLSAgICAyNywgMTYsIDIxOSwgODUsIDQ3LCAyNywgMTYsIDIzNCwgNDcsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQ3LCAxNTQsIDI1MywgCi0gICAgMTkxLCA0NywgMjcsIDE2LCAyMzMsIDI0NywgMjUzLCAxOTEsIDQ3LCAyNywgMTYsIDIzMywgMjQ3LCAyNTQsIDU4LCA0NywgCi0gICAgMjcsIDE2LCAyMzMsIDI0NywgMjI5LCAxNzcsIDQ3LCAyNywgMTYsIDI1MywgMjMxLCAyMjksIDE3NywgNDcsIDI3LCAxNiwgCi0gICAgMjUzLCAyMzMsIDQ3LCAyNywgMTYsIDI0NywgMTUzLCA0NywgMjcsIDE2LCAyMTYsIDE2OCwgNDcsIDI3LCAxNiwgMjE3LCAKLSAgICAxNzcsIDQ3LCAyNywgMTYsIDIzNCwgMTEsIDQ3LCAyNywgMTYsIDIzMywgNTYsIDI0NSwgOTIsIDI1MCwgOCwgNDcsIDI3LCAKLSAgICAxNiwgMjMzLCA1NiwgMjQ1LCAyNTMsIDI1MCwgOSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjE2LCAxNzAsIDI1MCwgOSwgNDcsIAotICAgIDI3LCAxNiwgMjMzLCA1NiwgMjE3LCAxODcsIDI1MCwgOSwgNDcsIDI3LCAxNiwgMjMzLCA1NiwgMjM2LCAyLCAyNTAsIDgsIAotICAgIDQ3LCAyNywgMTYsIDI0MiwgMTM1LCAyMjksIDE3OCwgMjU0LCA3LCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI2LCAxMjksIAotICAgIDI1MywgMTgxLCA0NywgMjcsIDE2LCAyNDIsIDEzNSwgMjI2LCAxMjksIDI0NywgMjM2LCA0NywgMjcsIDE2LCAyNDcsIDE3NywgCi0gICAgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIDIyNiwgMTI5LCAyNTMsIDE4MiwgMjM0LCAyMDEsIDQ3LCAyNywgMTYsIDI0NywgMTc4LCAKLSAgICAyMjYsIDEyOSwgMjUzLCAxODIsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQ3LCAxNzgsIDIyNiwgMTI5LCAyNDcsIDIzNiwgNDcsIAotICAgIDI3LCAxNiwgMjE2LCAxNzQsIDQ3LCAyNywgMTYsIDI1MywgMTg2LCA0NywgMjcsIDE2LCAyMzYsIDksIDQ3LCAyNywgMTYsIAotICAgIDI0NywgMTk4LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjI1LCAxMzQsIDI1MywgMTg3LCA0NywgMjcsIDE2LCAyNTQsIDExNiwgCi0gICAgMjUzLCAxODQsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyNTMsIDE4NywgNDcsIDI3LCAxNiwgMjU0LCAxMTYsIDIzMSwgMTAxLCAKLSAgICA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjMxLCAxMTAsIDQ3LCAyNywgMTYsIDI1NCwgMTE2LCAyNDIsIDEzNiwgNDcsIDI3LCAKLSAgICAxNiwgMjU0LCAxMTYsIDI0MiwgMTMzLCA0NywgMjcsIDE2LCAyNTQsIDExNiwgMjI1LCAxMzQsIDI0MiwgMTM2LCA0NywgMjcsIAotICAgIDE2LCAyMzEsIDIxNCwgMjI1LCA1MCwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyNTQsIDYwLCAyMjUsIDUwLCAKLSAgICAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDI0NywgMjM1LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIAotICAgIDI1NCwgNjAsIDI0NywgMjM1LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNiwgMTYzLCAyNDAsIDEwMCwgCi0gICAgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIxNiwgMTc1LCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE3LCAxODEsIDI0MCwgMTAwLCAKLSAgICA0NywgMjcsIDE2LCAyMzEsIDIxNCwgMjE3LCAxODEsIDIzMywgNTksIDI0MCwgMTAwLCA0NywgMjcsIDE2LCAyMzEsIDIxNCwgCi0gICAgMjMzLCA1OSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMjUsIDE3MSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIAotICAgIDIzNSwgMTY3LCAyMTcsIDIwNCwgMjQwLCAxMDEsIDQ3LCAyNywgMTYsIDI1MywgMjI5LCAyMTcsIDIwNCwgMjQwLCAxMDEsIAotICAgIDQ3LCAyNywgMTYsIDI0NCwgMTQwLCAyMTcsIDE3OCwgNDcsIDI3LCAxNiwgMjQ0LCAxNDAsIDIzMCwgMjEzLCA0NywgMjcsIAotICAgIDE2LCAyNDQsIDE0MCwgMjQ3LCAxODIsIDQ3LCAyNywgMTYsIDIzMSwgMjE0LCAyMTQsIDI0MiwgMjQwLCAxMDAsIDQ3LCAyNywgCi0gICAgMTYsIDIzMSwgMjE0LCAyMjUsIDQ5LCAyNDAsIDEwMCwgNDcsIDI3LCAxNiwgMjMxLCAyMTQsIDIyNSwgMTcxLCAyMTcsIAotICAgIDE4MSwgMjQwLCAxMDAsIDQ3LCAyNywgMTYsIDI0MiwgMTMxLCAyMzAsIDk4LCAyNTMsIDIzMiwgNDcsIDI3LCAxNiwgMjQyLCAKLSAgICAxMzEsIDIzMCwgOTgsIDI0NywgMTUyLCA0NywgMjcsIDE2LCAyNDUsIDEwNiwgMjM0LCAyNTEsIDI0MywgMjA3LCAyMTQsIAotICAgIDEwNSwgNDcsIDI3LCAxNiwgMjM2LCA4LCA0NywgMjcsIDE2LCAyMzYsIDYsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNTMsIAotICAgIDE5MiwgMjQ3LCAyMzQsIDI0MCwgOTksIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDcsIDE5NiwgMTkzLCA0NywgMjcsIDE2LCAKLSAgICAyNDMsIDIwNywgMjQ3LCAxOTYsIDIzMCwgMjMsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyMzAsIDE4LCAyNDAsIDEwMCwgNDcsIAotICAgIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIyMCwgMzAsIDI0NywgCi0gICAgMTk1LCAyNDcsIDIxMSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDI0NywgMTk2LCAyMzQsIDE4OCwgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyMDcsIDI0NywgMTk2LCAyMTIsIDE2LCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIyOSwgNjUsIDIzNCwgCi0gICAgMjAxLCA0NywgMjcsIDE2LCAyNDMsIDIwNywgMjQ3LCAxOTYsIDIyOSwgNjUsIDI1NCwgNywgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyMDcsIDIzMSwgMjU0LCAyNTAsIDEwLCAyNDcsIDE4MiwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIzMSwgMjU0LCAyNTAsIAotICAgIDEwLCAyMzAsIDIxMywgNDcsIDI3LCAxNiwgMjQ0LCA5MSwgMjIwLCAzMCwgMjUwLCAxMCwgMjE0LCAyNDEsIDQ3LCAyNywgCi0gICAgMTYsIDI0MywgMjA3LCAyMjAsIDMwLCAyNTAsIDEwLCAyMTgsIDEyNSwgNDcsIDI3LCAxNiwgMjQzLCAyMDcsIDIyOSwgMTc5LCAKLSAgICA0NywgMjcsIDE2LCAyNTAsIDExLCAyMTEsIDI0OCwgNDcsIDI3LCAxNiwgMjUwLCAxMSwgMjM0LCA0NSwgNDcsIDI3LCAxNiwgCi0gICAgMjUwLCAxMSwgMjE5LCAxOTcsIDQ3LCAyNywgMTYsIDI0MywgMjA3LCAyNDAsIDE0NiwgMjEzLCAxLCAyMTcsIDE4MiwgNDcsIAotICAgIDI3LCAxNiwgMjQzLCAyMDcsIDI0NSwgMTA3LCAyNTMsIDI1MywgNDcsIDI3LCAxNiwgMjEzLCAxLCAyMTYsIDE2NCwgNDcsIAotICAgIDI3LCAxNiwgMjQ3LCAxOTAsIDIxNiwgMTY0LCA0NywgMjcsIDE2LCAyNDcsIDE5MCwgMjE3LCAxODIsIDQ3LCAyNywgMTYsIAotICAgIDI0NywgMTkwLCAyNTMsIDIzNCwgMjQ1LCAyNTMsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyMzAsIDIxMSwgCi0gICAgMjE3LCAxODYsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDI0NywgMTkwLCAyNDcsIDE3NCwgMjQ1LCAzLCAyNDcsIDkzLCA0NywgCi0gICAgMjcsIDE2LCAyNDcsIDE5MCwgMjE2LCAxNzIsIDIyNywgNzcsIDI0NywgOTMsIDQ3LCAyNywgMTYsIDIxMywgMSwgMjUzLCAKLSAgICAyMzQsIDI0NSwgMjUzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIzMCwgMjExLCAyMTcsIDE4NiwgMjQ3LCA5MywgCi0gICAgNDcsIDI3LCAxNiwgMjEzLCAxLCAyNDcsIDE3NCwgMjQ1LCAzLCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyMTMsIDEsIDIxNiwgCi0gICAgMTcyLCAyMjcsIDc3LCAyNDcsIDkzLCA0NywgMjcsIDE2LCAyNDMsIDI1LCAyNDcsIDE4OSwgNDcsIDI3LCAxNiwgMjQzLCAKLSAgICAyNSwgMjEzLCAwLCA0NywgMjcsIDE2LCAyNDcsIDE5NywgMjUzLCAyMzQsIDIzMSwgMTIsIDQ3LCAyNywgMTYsIDI0NywgCi0gICAgMTk3LCAyNTMsIDIzNCwgMjMxLCAxMzcsIDQ3LCAyNywgMTYsIDI0NywgMTk3LCAyNDcsIDE1MywgNDcsIDI3LCAxNiwgMjQ3LCAKLSAgICAxOTcsIDIxNywgMTM1LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIDEzNSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjE3LCAKLSAgICAxMzYsIDI0NywgMTM4LCA0NywgMjcsIDE2LCAyMjAsIDg5LCAyMTcsIDEzNiwgMjE2LCAxNjUsIDQ3LCAyNywgMTYsIDIyMCwgCi0gICAgODksIDIxNywgMTM2LCAyMTcsIDE3NSwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjUzLCAxNTksIDQ3LCAyNywgMTYsIDIyMCwgCi0gICAgODksIDI1MywgMTYwLCAyNDcsIDEzOCwgNDcsIDI3LCAxNiwgMjIwLCA4OSwgMjUzLCAxNjAsIDIxNiwgMTY1LCA0NywgMjcsIAotICAgIDE2LCAyMjAsIDg5LCAyNTMsIDE2MCwgMjE3LCAxNzUsIDQ3LCAyNywgMTYsIDI0NywgMTc1LCAyNDMsIDYsIDQ3LCAyNywgCi0gICAgMTYsIDI0NywgMTgxLCAyMjcsIDIsIDQ3LCAyNywgMTYsIDIxOSwgNzcsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAxOTMsIDQ3LCAKLSAgICAyNywgMTYsIDI1MywgMTc4LCAyMTQsIDEwNSwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIDI0MywgMTEwLCA0NywgMjcsIDE2LCAKLSAgICAyNTMsIDE3OCwgMjQ3LCAyMTEsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyMzQsIDE4OCwgNDcsIDI3LCAxNiwgMjUzLCAxNzgsIAotICAgIDIxMiwgMTYsIDQ3LCAyNywgMTYsIDI1MywgMTc4LCAyMjksIDY0LCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgMjI5LCAxNzgsIAotICAgIDIzMSwgMTA5LCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDIzMSwgMTA5LCA0NywgMjcsIDE2LCAyMzQsIDE2OCwgCi0gICAgMjI5LCAxNzgsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAyMzQsIDE2OSwgMjI5LCAxNzgsIDIzNCwgMjAxLCA0NywgMjcsIDE2LCAKLSAgICAyMzQsIDQ3LCAyMzQsIDIwMSwgNDcsIDI3LCAxNiwgMjQyLCAxMzUsIDIyOSwgMTc4LCAyMzQsIDIwMSwgMjcsIDE2LCAyMjAsIAotICAgIDgxLCAyNTIsIDU1LCAyNywgMTYsIDUxLCAyNTIsIDU1LCAyNywgMTYsIDQwLCAyNTIsIDU1LCAyNywgMTYsIDIyMywgMjAzLCAKLSAgICA0MCwgMjUyLCA1NSwgMjcsIDE2LCAyNDgsIDEwMCwgMjUyLCA1NSwgMjcsIDE2LCAyMjAsIDE3NSwgMjUyLCA1NSwgMjcsIAotICAgIDE2LCA0MiwgMjIzLCAyMjgsIDUyLCAyNywgMTYsIDQ2LCAyMjMsIDIyOCwgNTIsIDI3LCAxNiwgMjIzLCAyMjgsIDI0NywgCi0gICAgNzIsIDI3LCAxNiwgMjQ4LCAxNDEsIDIyMiwgODIsIDI3LCAxNiwgMjQ4LCAxNjUsIDI1MCwgMTgxLCAyNywgMTYsIDIyMiwgCi0gICAgODIsIDI3LCAxNiwgMjQ5LCAxNzEsIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgODAsIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgCi0gICAgNzksIDI3LCAxNiwgMjIzLCAyMjYsIDI0NCwgNzgsIDI3LCAxNiwgMjQ0LCAxMDAsIDI3LCAxNiwgMjQ0LCAxMDEsIDU1LCAKLSAgICAyNywgMTYsIDI1MSwgNzYsIDc3LCAyNywgMTYsIDI1MCwgMjEwLCAyNywgMTYsIDI1MSwgODYsIDI3LCAxNiwgMTI1LCAyNywgCi0gICAgMTYsIDIyNywgNTksIDIxOSwgMTAyLCAyNywgMTYsIDIxNiwgMjMsIDIxOSwgMTAyLCAyNywgMTYsIDIxNywgOTYsIDIxOSwgCi0gICAgMTAyLCAyNywgMTYsIDI0MywgMjM2LCAyMTksIDEwMiwgMjcsIDE2LCAyNDQsIDQ5LCAyMTksIDEwMiwgMjcsIDE2LCAyMjAsIAotICAgIDUyLCAyMTksIDEwMiwgMjcsIDE2LCAyMjAsIDUwLCAyNDMsIDIyMCwgMjcsIDE2LCAyNDMsIDIzNCwgMjQzLCAyMjAsIDI3LCAKLSAgICAxNiwgMjQzLCAxNzgsIDI0OSwgMjA3LCAyNywgMTYsIDI0MywgMTc4LCAyNDksIDIwOCwgMjI3LCA0LCAyNTQsIDUxLCAyNywgCi0gICAgMTYsIDI0MywgMTc4LCAyNDksIDIwOCwgMjI3LCA0LCAyNTIsIDQyLCAyNywgMTYsIDI1MCwgMjUzLCAyNDksIDIwNywgMjcsIAotICAgIDE2LCAyNDQsIDIzMSwgMjQ5LCAyMDcsIDI3LCAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA4LCAyMjcsIDQsIDI1NCwgNTEsIDI3LCAKLSAgICAxNiwgMjQ0LCAyMzEsIDI0OSwgMjA4LCAyMjcsIDQsIDI1MiwgNDIsIDI3LCAxNiwgMjQ2LCAzOCwgMjQ5LCAyMDYsIDI3LCAKLSAgICAxNiwgMjQ2LCAzOCwgMjQ5LCAyMDUsIDI3LCAxNiwgMjMwLCAxNTUsIDIzMSwgMTU1LCAyMjMsIDIxMywgMjcsIDE2LCA1MSwgCi0gICAgMjIwLCAyNTQsIDI3LCAxNiwgNTEsIDI0NCwgMzQsIDI3LCAxNiwgMjQ0LCAzNSwgMjE1LCAxMzQsIDI3LCAxNiwgMjQ0LCAKLSAgICAzNSwgMjQ2LCA2MCwgMjcsIDE2LCAyMzAsIDksIDIxNSwgMTM0LCAyNywgMTYsIDIzMCwgOSwgMjQ2LCA2MCwgMjcsIDE2LCAKLSAgICAyMjAsIDI1NSwgMjE1LCAxMzQsIDI3LCAxNiwgMjIwLCAyNTUsIDI0NiwgNjAsIDI3LCAxNiwgMjI0LCAxNjcsIDE2MCwgCi0gICAgMjIwLCAyNTQsIDI3LCAxNiwgMjI0LCAxNjcsIDE2MCwgMjQ0LCAzNCwgMjcsIDE2LCAyNDksIDE1NSwgMjE3LCA0MCwgMjcsIAotICAgIDE2LCAyNDksIDI3LCAyMTcsIDQwLCAyNywgMTYsIDIyNywgNCwgMjU0LCA1MSwgMjcsIDE2LCAyMjcsIDQsIDI1MiwgNDIsIAotICAgIDI3LCAxNiwgMjI0LCAxNDksIDI1NCwgNTEsIDI3LCAxNiwgMjI0LCAxNDksIDI1MiwgNDIsIDI3LCAxNiwgMjMwLCAxNTgsIAotICAgIDIyMywgMjEzLCAyNywgMTYsIDIxMywgMjM2LCAyMjMsIDIxMywgMjcsIDE2LCAxNTEsIDIyMywgMjEzLCAyNywgMTYsIDIyNCwgCi0gICAgMTY3LCAyMjMsIDIxMywgMjcsIDE2LCAyNDUsIDE0NiwgMjIzLCAyMTMsIDI3LCAxNiwgMjIwLCA0NiwgMjIzLCAyMTMsIDI3LCAKLSAgICAxNiwgMjE3LCAxMTMsIDIyMywgMjEzLCAyNywgMTYsIDIyMCwgMzgsIDIyMywgMjEzLCAyNywgMTYsIDEyMiwgMjQwLCAyMDEsIAotICAgIDIxNiwgMzYsIDIyMywgMjEzLCAyNywgMTYsIDIxMywgMTY3LCAyMjgsIDE1NCwgMjcsIDE2LCA5NCwgMjI4LCAxNTQsIDI3LCAKLSAgICAxNiwgMjQ5LCAyMjksIDIxMywgMTY3LCAyMjgsIDE1NCwgMjcsIDE2LCA0MSwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgMTYsIAotICAgIDQxLCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTQsIDIxMywgMjM4LCAyNywgCi0gICAgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQyLCAKLSAgICAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQyLCAyNTEsIDE0NCwgMjcsIDE2LCAyMTYsIDE4NCwgCi0gICAgMjI4LCAxNTUsIDQ2LCAyMTMsIDIzOCwgMjcsIDE2LCAyMTYsIDE4NCwgMjI4LCAxNTUsIDQ2LCAyNTEsIDE0NCwgMjcsIDE2LCAKLSAgICAyMTYsIDE4NCwgMjI4LCAxNTUsIDExOSwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIDIyOCwgMTU1LCAxMTksIDI1MSwgCi0gICAgMTQ0LCAyNywgMTYsIDIxNiwgMTg0LCAyMjgsIDE1NSwgMTE0LCA0NiwgMjEzLCAyMzgsIDI3LCAxNiwgMjE2LCAxODQsIAotICAgIDIyOCwgMTU1LCAxMTQsIDQ2LCAyNTEsIDE0NCwgMjcsIDE2LCAyMzAsIDE5OSwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgCi0gICAgMTYsIDIzMCwgMTk5LCAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjE2LCAxODEsIDIyOCwgMTU1LCAxMTksIDIxMywgCi0gICAgMjM4LCAyNywgMTYsIDIxNiwgMTgxLCAyMjgsIDE1NSwgMTE5LCAyNTEsIDE0NCwgMjcsIDE2LCAyMjYsIDEzMiwgMjI4LCAKLSAgICAxNTQsIDI3LCAxNiwgMjE0LCAxMTMsIDIyOCwgMTU0LCAyNywgMTYsIDIyOCwgMTU1LCAyNTEsIDE0NCwgMjcsIDE2LCAyMjgsIAotICAgIDU5LCAyMjgsIDE1NCwgMjcsIDE2LCAyNDksIDE3OCwgMjI4LCAxNTUsIDIxMywgMjM4LCAyNywgMTYsIDI0OSwgMTc4LCAKLSAgICAyMjgsIDE1NSwgMjUxLCAxNDQsIDI3LCAxNiwgMjUxLCA3NCwgMjcsIDE2LCAyMTMsIDIzNiwgMjI4LCAxNTgsIDI3LCAxNiwgCi0gICAgMTUxLCAyMjgsIDE1OCwgMjcsIDE2LCAyMjQsIDE2NywgMjI4LCAxNTgsIDI3LCAxNiwgMjQ1LCAxNDYsIDIyOCwgMTU4LCAKLSAgICAyNywgMTYsIDIyMCwgNDYsIDIyOCwgMTU4LCAyNywgMTYsIDIxNywgMTEzLCAyMjgsIDE1OCwgMjcsIDE2LCAyMjAsIDM4LCAKLSAgICAyMjgsIDE1OCwgMjcsIDE2LCAxMjIsIDI0MCwgMjAxLCAyMTYsIDM2LCAyMjgsIDE1OCwgMjcsIDE2LCAzNywgMjE5LCA3OSwgCi0gICAgMjcsIDE2LCAzNywgMjE5LCAxNzIsIDIxOSwgNzksIDI3LCAxNiwgMzcsIDIxNiwgMTkyLCAyNywgMTYsIDM3LCAyMTYsIAotICAgIDE5MSwgMjcsIDE2LCAzNywgMjE2LCAxOTAsIDI3LCAxNiwgMjQ0LCA3MCwgMjE2LCAxOTIsIDI3LCAxNiwgMjQ0LCA3MCwgCi0gICAgMjE2LCAxOTEsIDI3LCAxNiwgMjQ0LCA3MCwgMjE2LCAxOTAsIDI3LCAxNiwgMzcsIDI1MywgMTA1LCAyNDcsIDc0LCAyNywgCi0gICAgMTYsIDM3LCAyNDQsIDQxLCAyNywgMTYsIDM3LCAyNDQsIDQwLCAyNywgMTYsIDM3LCAyNDQsIDM5LCAyNywgMTYsIDM3LCAKLSAgICAyNDQsIDM4LCAyNywgMTYsIDM3LCAyNDQsIDM3LCAyNywgMTYsIDI1MSwgMjM0LCAyNTEsIDI1MCwgMjcsIDE2LCAyNDUsIAotICAgIDEwMSwgMjUxLCAyNTAsIDI3LCAxNiwgMjUxLCAyMzQsIDIxNywgNjUsIDI3LCAxNiwgMjQ1LCAxMDEsIDIxNywgNjUsIDI3LCAKLSAgICAxNiwgMjUxLCAyMzQsIDIyMCwgOCwgMjcsIDE2LCAyNDUsIDEwMSwgMjIwLCA4LCAyNywgMTYsIDI1MSwgMjM0LCAyMjUsIAotICAgIDI0NywgMjcsIDE2LCAyNDUsIDEwMSwgMjI1LCAyNDcsIDI3LCAxNiwgMzcsIDI1NCwgMTc0LCAyNywgMTYsIDM3LCAyMTksIAotICAgIDEwNCwgMjcsIDE2LCAzNywgMjE3LCAxOTEsIDI3LCAxNiwgMzcsIDIxOSwgMTA1LCAyNywgMTYsIDM3LCAyMzEsIDIyNSwgCi0gICAgMjcsIDE2LCAzNywgMjMxLCAyMjQsIDI3LCAxNiwgMzcsIDI1NCwgMTczLCAyNywgMTYsIDM3LCAyMzIsIDE2NywgMjcsIDE2LCAKLSAgICAyNTMsIDE2OSwgMjE1LCAxMzQsIDI3LCAxNiwgMjUzLCAxNjksIDI0NiwgNjAsIDI3LCAxNiwgMzcsIDI0NywgODksIDI3LCAKLSAgICAxNiwgMzcsIDIyMywgMTI4LCAyNywgMTYsIDM3LCAyNDQsIDI3LCAyNywgMTYsIDM3LCAyMjAsIDQsIDI3LCAxNiwgMzcsIAotICAgIDI1MSwgMjE1LCAyNywgMTYsIDM3LCA1MSwgMjE2LCAyMzIsIDI3LCAxNiwgMzcsIDIxNiwgMTY5LCAyMTYsIDIzMiwgMjcsIAotICAgIDE2LCAyMjMsIDEzMiwgMjcsIDE2LCAyMTksIDIwLCAyNywgMTYsIDIxMiwgMTUyLCAyNywgMTYsIDIyNSwgMjM5LCAyNywgCi0gICAgMTYsIDIzMSwgOTIsIDI3LCAxNiwgMjQzLCAyNDIsIDI3LCAxNiwgMjQ5LCA3OCwgMjcsIDE2LCAyNDgsIDI5LCAyNywgMTYsIAotICAgIDI0MiwgMTI2LCAyMjgsIDE1OSwgMjIwLCAyMywgMjcsIDE2LCAyNDIsIDEyNiwgMjI4LCAxNTksIDIyOCwgMTg2LCAyMjAsIAotICAgIDIzLCAyNywgMTYsIDIxNiwgMjEzLCAyNywgMTYsIDIxNiwgNTksIDI3LCAxNiwgMjM1LCAxOTEsIDIxNiwgNTksIDI3LCAxNiwgCi0gICAgMjE2LCA2MCwgMjIwLCAyMywgMjcsIDE2LCAyMTYsIDYwLCAyMTUsIDEzNCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIDQ0LCAKLSAgICAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDEsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCA0MCwgMjcsIDE2LCAyMjcsIDE1LCAyMTksIAotICAgIDM5LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzgsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNywgMjcsIDE2LCAyMjcsIDE1LCAKLSAgICAyMTksIDM2LCAyNywgMTYsIDIyNywgMTUsIDIxOSwgMzUsIDI3LCAxNiwgMjI3LCAxNSwgMjE5LCAzNCwgMjcsIDE2LCAyMjcsIAotICAgIDE1LCAyMTksIDQzLCAyNywgMTYsIDIyNywgMTUsIDIxOSwgNDIsIDI3LCAxNiwgMjQxLCAyMjksIDI3LCAxNiwgMjI5LCAKLSAgICAxODYsIDI3LCAxNiwgMjQ1LCAxMDEsIDY1LCAyMTksIDczLCAyNywgMTYsIDI0OCwgMjIsIDIyMCwgMjMsIDI3LCAxNiwgMzcsIAotICAgIDExOSwgMjUxLCA5NSwgMjcsIDE2LCAzNywgMTE0LCAyNTEsIDk1LCAyNywgMTYsIDM3LCAyNDEsIDIzOSwgMjcsIDE2LCAzNywgCi0gICAgMjE5LCAyNTEsIDIyNSwgMTc1LCAyNywgMTYsIDIyNiwgOTEsIDc3LCAyNywgMTYsIDIyNiwgOTEsIDExNCwgNzcsIDI3LCAKLSAgICAxNiwgMTUxLCAyMjYsIDkxLCA3NywgMjcsIDE2LCAyNDIsIDE1OCwgMjE1LCAxMzQsIDI3LCAxNiwgMjQyLCAxNTgsIDI0NiwgCi0gICAgNjAsIDI3LCAxNiwgMiwgMjQ0LCA2OSwgMjcsIDE2LCAyNDgsIDEyNSwgMjcsIDE2LCAyNDgsIDEyNiwgMjU0LCA2MywgMjcsIAotICAgIDE2LCAyMzEsIDE5NywgMjcsIDE2LCAyMzIsIDE4MiwgMjcsIDE2LCAyNTEsIDcxLCAyNywgMTYsIDIyMSwgNzQsIDIxMywgCi0gICAgMjM4LCAyNywgMTYsIDIyMSwgNzQsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMCwgMjUzLCAyNywgMTYsIDIzMCwgMjU0LCAyNTEsIAotICAgIDE0NCwgMjcsIDE2LCAyMjEsIDY4LCAyMTMsIDIzOCwgMjcsIDE2LCAyMjEsIDY4LCAyNTEsIDE0NCwgMjcsIDE2LCAyNDMsIAotICAgIDE5MiwgMjEzLCAyMzgsIDI3LCAxNiwgMjQzLCAxOTIsIDI1MSwgMTQ0LCAyNywgMTYsIDIzMiwgMTgzLCAyMjYsIDU1LCAKLSAgICAyMjMsIDIxMywgMjcsIDE2LCAyMzIsIDE4MywgMjM2LCAwLCAyMjMsIDIxMywgMjcsIDE2LCAyNTEsIDcyLCAyMjMsIDIxMywgCi0gICAgMjcsIDE2LCAyMjEsIDc0LCAyMjMsIDIxMywgMjcsIDE2LCAyMzAsIDI1NCwgMjIzLCAyMTMsIDI3LCAxNiwgMjIxLCA2OCwgCi0gICAgMjIzLCAyMTMsIDI3LCAxNiwgMjE3LCAyMDIsIDIyNiwgNTMsIDI0OSwgNDgsIDIyNSwgNTgsIDIyNiwgNTQsIDI3LCAxNiwgCi0gICAgMjE3LCAyMDIsIDIyNiwgNTMsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNSwgMjU1LCAyNywgMTYsIDIxNywgMjAyLCAyMjYsIDUzLCAKLSAgICAyNDksIDQ4LCAyMjUsIDU4LCAyMjYsIDU1LCAyNDcsIDE2MywgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIAotICAgIDIyNSwgNTgsIDIyNiwgNTQsIDI3LCAxNiwgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzUsIDI1NSwgCi0gICAgMjcsIDE2LCAyMTcsIDIwMiwgMjM1LCAyNTQsIDI0OSwgNDgsIDIyNSwgNTgsIDIzNiwgMCwgMjQ3LCAxNjMsIDI3LCAxNiwgCi0gICAgMjE3LCAyMDIsIDIzNSwgMjU0LCAyNDksIDQ4LCAyMjUsIDU4LCAyMzYsIDAsIDI0NywgMTYyLCAyNywgMTYsIDIxNywgMjAyLCAKLSAgICAyMzUsIDI1NCwgMjQ5LCA0OCwgMjI1LCA1OCwgMjM2LCAwLCAyNDcsIDE2MSwgMjcsIDE2LCAyNDksIDczLCAyNywgMTYsIAotICAgIDI0MiwgMTAzLCAyNTAsIDI1MywgMjQ5LCAyMDcsIDI3LCAxNiwgMjQyLCAxMDMsIDI0NCwgMjMxLCAyNDksIDIwNywgMjcsIAotICAgIDE2LCA0MSwgMjUzLCA3NCwgMjcsIDE2LCAyMTQsIDEzMiwgMjcsIDE2LCAyMjUsIDE0OCwgMjcsIDE2LCAyNDksIDE5OCwgCi0gICAgMjcsIDE2LCAyMjIsIDEyMSwgMjcsIDE2LCAyNDksIDIwMiwgMjcsIDE2LCAyMTYsIDIyMCwgMjcsIDE2LCAyMjUsIDEyMiwgCi0gICAgMjcsIDE2LCAyMjUsIDEyMywgMjQ0LCAyOSwgMjcsIDE2LCAyMjIsIDEyMiwgMjQ0LCAyOSwgMjcsIDE2LCAyMTYsIDIyMSwgCi0gICAgMjIzLCAyMTAsIDI3LCAxNiwgMjI2LCAzOSwgMjE5LCAxMSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTc0LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjMsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE1MywgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTQ2LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzgsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDEzMiwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTMxLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzAsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDEyOSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTczLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNzIsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDE3MSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTcwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxNjksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2OCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTY3LCAyNSwgMjE0LCAKLSAgICAxMTgsIDE3NCwgMjE4LCAxNjYsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2NSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgCi0gICAgMTY0LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNjIsIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIDE2MSwgMjUsIDIxNCwgCi0gICAgMTE4LCAxNzQsIDIxOCwgMTYwLCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxNTksIDI1LCAyMTQsIDExOCwgMTc0LCAyMTgsIAotICAgIDE1OCwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM3LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAxMzYsIDI1LCAyMTQsIAotICAgIDExOCwgMTc0LCAyMTgsIDEzNSwgMjUsIDIxNCwgMTE4LCAxNzQsIDIxOCwgMTM0LCAyNSwgMjE0LCAxMTgsIDE3NCwgMjE4LCAKLSAgICAxMzMsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTYzLCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNDYsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzOCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTMxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE3MiwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTcxLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNzAsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE2OSwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTY2LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNjUsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE2NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNTgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTU2LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxNTUsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1NCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTUyLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNTEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE1MCwgMjUsIDIzNSwgCi0gICAgMjExLCAxNzQsIDIxOCwgMTQ5LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDgsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIAotICAgIDE0NywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQ1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxNDQsIDI1LCAyMzUsIAotICAgIDIxMSwgMTc0LCAyMTgsIDE0MywgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTQyLCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAKLSAgICAxNDEsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDE0MCwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgMTM5LCAyNSwgMjM1LCAKLSAgICAyMTEsIDE3NCwgMjE4LCAxMzcsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzNiwgMjUsIDIzNSwgMjExLCAxNzQsIDIxOCwgCi0gICAgMTM1LCAyNSwgMjM1LCAyMTEsIDE3NCwgMjE4LCAxMzQsIDI1LCAyMzUsIDIxMSwgMTc0LCAyMTgsIDEzMywgMzcsIDI1LCAKLSAgICAyNywgMjE2LCAxNjYsIDM3LCAyNSwgMjcsIDIxNywgMTc2LCAzNywgMjUsIDI3LCAyMjYsIDYzLCAyNSwgMjcsIDIzMywgNTUsIAotICAgIDIzMCwgMjEyLCAzMSwgMjQ1LCAxNzksIDI0NywgMTc2LCAzMSwgMjQxLCAyMDYsIDI0NSwgMTc5LCAyNDcsIDE3NiwgMzEsIAotICAgIDI0MCwgMjA0LCAyNDUsIDE3OSwgMjQ3LCAxNzYsIDMxLCAyNDUsIDE3OCwgMjQxLCAyMDcsIDI0NywgMTc2LCAzMSwgMjQ1LCAKLSAgICAxNzgsIDI0MCwgMjAzLCAyNDcsIDE3NiwgMzEsIDI0NSwgMTc5LCAxNzAsIDMxLCAyNTAsIDEwOCwgMTcwLCAzMSwgMjQzLCAKLSAgICAyMDAsIDI0OSwgMjI4LCAxNzAsIDMxLCAyMzAsIDI0NiwgMTcwLCAzMSwgMjUyLCA1MCwgMTcwLCAzMSwgMjM0LCAxODUsIAotICAgIDIyMCwgNywgMTcwLCAzMSwgMjQ5LCAxMTgsIDE3MCwgMzEsIDI1MywgMTQ4LCAxNzAsIDMxLCAyMjcsIDI5LCAxNzAsIDMxLCAKLSAgICAyNTEsIDgwLCAyMjYsIDI1NCwgMTcwLCAzMSwgMjQ4LCAyNCwgMTY3LCAyNDcsIDEzMSwgMTcwLCAzMSwgMjQ3LCAxMjgsIAotICAgIDE3MCwgMzEsIDIxMiwgMjEzLCAxNzAsIDMxLCAyMzUsIDI0MywgMTcwLCAzMSwgMjI2LCA3MiwgMTcwLCAzMSwgMjI0LCAyMCwgCi0gICAgMTcwLCAzMSwgMjQ5LCAxMjgsIDE3MCwgMzEsIDI0MSwgNDYsIDI1MiwgMTAxLCAxNzAsIDMxLCAyMTQsIDQzLCAxNzAsIDMxLCAKLSAgICAyNDQsIDgsIDE3MCwgMzEsIDI1NCwgMTUxLCAxNzAsIDMxLCAyMjMsIDIzOSwgMTcwLCAzMSwgMjIzLCAyMTcsIDE3MCwgMzEsIAotICAgIDI0NSwgMTc3LCAxNzAsIDMxLCAyMzUsIDU2LCAxNzAsIDMxLCAyNDksIDEyMywgMTcwLCAzMSwgMjQ1LCAxMDAsIDE3MCwgCi0gICAgMzEsIDI0NiwgNywgMTcwLCAzMSwgMjUwLCA4MSwgMTcwLCAzMSwgMjQ4LCAzMywgMTcwLCAzMSwgMjIsIDIyMywgMjE2LCAKLSAgICAxNzAsIDMxLCAyMjYsIDIwNSwgMTcwLCAzMSwgMjMzLCA1OCwgMTcwLCAzMSwgMjQ5LCAxOTEsIDE3MCwgMzEsIDIzNCwgODYsIAotICAgIDE3MCwgMzEsIDI0MywgNjIsIDE3MCwgMzEsIDIxOSwgNTIsIDE3MCwgMzEsIDIyNSwgMTYsIDE3MCwgMzEsIDI0MywgMTk5LCAKLSAgICAxNzAsIDMxLCAyMjMsIDIxOCwgMTcwLCAzMSwgMjMzLCA5NSwgMTY3LCAyMzAsIDIyNywgMTcwLCAzMSwgMjIzLCAyMTQsIAotICAgIDE3MCwgMzEsIDI0MiwgMTQ0LCAyMTEsIDIxMSwgMjMxLCAxNDEsIDE3MCwgMzEsIDI0NSwgMTAyLCAxNzAsIDMxLCAyMTksIAotICAgIDY0LCAxNzAsIDMxLCAyNDIsIDEwNSwgMTcwLCAzMSwgMjQ1LCA5NCwgMTcwLCAzMSwgMjI2LCAxMDgsIDE3MCwgMzEsIDIyMywgCi0gICAgMTIyLCAxNzAsIDMxLCAyNDQsIDI4LCAxNzAsIDMxLCAyMTQsIDI0MCwgMTY3LCAyMTQsIDI4LCAxNzAsIDMxLCAyNDksIAotICAgIDEzMiwgMTcwLCAzMSwgMjMxLCAxNTQsIDE3MCwgMzEsIDI0NSwgMjcsIDE3MCwgMzEsIDIxNSwgMTQzLCAxNzAsIDMxLCAKLSAgICAyNDcsIDE2NCwgMTcwLCAzMSwgMjQ5LCAxOTMsIDIzMCwgMTgwLCAxNzAsIDMxLCAyNDIsIDg3LCAxNzAsIDMxLCAyNDMsIAotICAgIDYzLCAyMzUsIDI1MSwgMTcwLCAzMSwgMjMxLCAyMDQsIDE3MCwgMzEsIDI1NCwgMTcwLCAxNzAsIDMxLCAyNDUsIDExNSwgCi0gICAgMTcwLCAzMSwgMjQ2LCA2MywgMTcwLCAzMSwgMjE0LCAyNiwgMTcwLCAzMSwgMjIwLCA3OCwgMTcwLCAzMSwgMjM1LCAyMTksIAotICAgIDE3MCwgMzEsIDI0NywgMjQ5LCAxNzAsIDMxLCAyNDgsIDEwNSwgMTcwLCAzMSwgMjQ3LCAxNjAsIDE3MCwgMzEsIDI0NCwgCi0gICAgMjUyLCAxNzAsIDMxLCAyMjEsIDM2LCAxNzAsIDMxLCAyMTksIDY4LCAxNzAsIDMxLCAyNDEsIDI0MSwgMTcwLCAzMSwgMjQ5LCAKLSAgICAxNTEsIDE3MCwgMzEsIDI0OSwgMTg4LCAxNzAsIDMxLCAyNDQsIDE0NSwgMTcwLCAzMSwgMjU0LCAxMTcsIDE3MCwgMzEsIAotICAgIDI0OSwgMTUwLCAxNzAsIDMxLCAyMjcsIDYzLCAyMTcsIDE0OSwgMjE0LCAyMTksIDE3MCwgMzEsIDI0NywgMTg0LCAxNzAsIAotICAgIDMxLCAyMzMsIDE0NywgMTcwLCAzMSwgMjQzLCAyMzksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDExNiwgCi0gICAgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTA5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAKLSAgICAxNjYsIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIDE0NSwgMjEsIDE2MywgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAKLSAgICAyMSwgMTgwLCAyNDksIDg4LCAyMjMsIDEwMywgMjE1LCAxNDUsIDIxLCAxODksIDI0OSwgODgsIDIyMywgMTAzLCAyMTUsIAotICAgIDE0NSwgMjEsIDE5OCwgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNSwgMTQ1LCAyMSwgMTk1LCAyNDksIDg4LCAyMjMsIDEwMywgCi0gICAgMjE1LCAxNDUsIDIxLCAyMDAsIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDExNiwgMjQ5LCA4OCwgMjIzLCAKLSAgICAxMDMsIDIxNywgMTk2LCAyMSwgMTA5LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxNjYsIDI0OSwgODgsIAotICAgIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE2MywgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTgwLCAyNDksIAotICAgIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAxODksIDI0OSwgODgsIDIyMywgMTAzLCAyMTcsIDE5NiwgMjEsIDE5OCwgCi0gICAgMjQ5LCA4OCwgMjIzLCAxMDMsIDIxNywgMTk2LCAyMSwgMTk1LCAyNDksIDg4LCAyMjMsIDEwMywgMjE3LCAxOTYsIDIxLCAKLSAgICAyMDAsIDE0LCAyMiwgNiwgNjEsIDE0LCAyMiwgNiwgMjUzLCA3NCwgMTQsIDIyLCA2LCAyNTAsIDI1MiwgMTQsIDIyLCA2LCAKLSAgICAyNDksIDMsIDE0LCAyMiwgNiwgNzQsIDE0LCAyMiwgNiwgMjQ0LCAyMzAsIDE0LCAyMiwgNiwgMjQzLCAxNzcsIDE0LCAyMiwgCi0gICAgNiwgMjQyLCA0MSwgMTQsIDIyLCA2LCA3MiwgMTQsIDIyLCA2LCAyMzUsIDE0MiwgMTQsIDIyLCA2LCAyMzUsIDI3LCAxNCwgCi0gICAgMjIsIDYsIDE1MCwgMTQsIDIyLCA2LCAxODMsIDE0LCAyMiwgNiwgMjA0LCAxNCwgMjIsIDYsIDc1LCAxNCwgMjIsIDYsIAotICAgIDIyNiwgMjI5LCAxNCwgMjIsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDYsIDE0OSwgMTQsIDIyLCA2LCAxOTcsIDE0LCAyMiwgNiwgCi0gICAgMjE4LCA5OSwgMTQsIDIyLCA2LCA2OSwgMTQsIDIyLCA2LCAyMTUsIDc5LCAxNCwgMjIsIDYsIDIxNCwgODIsIDE0LCAyMiwgCi0gICAgNiwgMjEzLCAxNjYsIDE0LCAyMiwgNiwgMjEzLCAxMDUsIDE0LCAyMiwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMywgNjEsIDE0LCAKLSAgICAyMiwgMywgMjUzLCA3NCwgMTQsIDIyLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAzLCAyNDksIDMsIDE0LCAyMiwgMywgNzQsIAotICAgIDE0LCAyMiwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMywgMjQzLCAxNzcsIDE0LCAyMiwgMywgMjQyLCA0MSwgMTQsIDIyLCAzLCAKLSAgICA3MiwgMTQsIDIyLCAzLCAyMzUsIDE0MiwgMTQsIDIyLCAzLCAyMzUsIDI3LCAxNCwgMjIsIDMsIDE1MCwgMTQsIDIyLCAzLCAKLSAgICAxODMsIDE0LCAyMiwgMywgMjA0LCAxNCwgMjIsIDMsIDc1LCAxNCwgMjIsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIDMsIDIyNCwgCi0gICAgMjQwLCAxNCwgMjIsIDMsIDE0OSwgMTQsIDIyLCAzLCAxOTcsIDE0LCAyMiwgMywgMjE4LCA5OSwgMTQsIDIyLCAzLCA2OSwgCi0gICAgMTQsIDIyLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDMsIDIxNCwgODIsIDE0LCAyMiwgMywgMjEzLCAxNjYsIDE0LCAyMiwgMywgCi0gICAgMjEzLCAxMDUsIDE0LCAyMiwgMywgMjEyLCAxNTIsIDE0LCAzMiwgNiwgNjEsIDE0LCAzMiwgNiwgMjUzLCA3NCwgMTQsIDMyLCAKLSAgICA2LCAyNTAsIDI1MiwgMTQsIDMyLCA2LCAyNDksIDMsIDE0LCAzMiwgNiwgNzQsIDE0LCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAKLSAgICAzMiwgNiwgMjQzLCAxNzcsIDE0LCAzMiwgNiwgMjQyLCA0MSwgMTQsIDMyLCA2LCA3MiwgMTQsIDMyLCA2LCAyMzUsIDE0MiwgCi0gICAgMTQsIDMyLCA2LCAyMzUsIDI3LCAxNCwgMzIsIDYsIDE1MCwgMTQsIDMyLCA2LCAxODMsIDE0LCAzMiwgNiwgMjA0LCAxNCwgCi0gICAgMzIsIDYsIDc1LCAxNCwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMzIsIDYsIDE0OSwgMTQsIAotICAgIDMyLCA2LCAxOTcsIDE0LCAzMiwgNiwgMjE4LCA5OSwgMTQsIDMyLCA2LCA2OSwgMTQsIDMyLCA2LCAyMTUsIDc5LCAxNCwgCi0gICAgMzIsIDYsIDIxNCwgODIsIDE0LCAzMiwgNiwgMjEzLCAxNjYsIDE0LCAzMiwgNiwgMjEzLCAxMDUsIDE0LCAzMiwgNiwgMjEyLCAKLSAgICAxNTIsIDE0LCAzMiwgMywgNjEsIDE0LCAzMiwgMywgMjUzLCA3NCwgMTQsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDMyLCAzLCAKLSAgICAyNDksIDMsIDE0LCAzMiwgMywgNzQsIDE0LCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAzMiwgMywgMjQzLCAxNzcsIDE0LCAzMiwgCi0gICAgMywgNzIsIDE0LCAzMiwgMywgMjM1LCAxNDIsIDE0LCAzMiwgMywgMjM1LCAyNywgMTQsIDMyLCAzLCAxNTAsIDE0LCAzMiwgCi0gICAgMywgMTgzLCAxNCwgMzIsIDMsIDIwNCwgMTQsIDMyLCAzLCA3NSwgMTQsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDMyLCAzLCAKLSAgICAyMjQsIDI0MCwgMTQsIDMyLCAzLCAxNDksIDE0LCAzMiwgMywgMTk3LCAxNCwgMzIsIDMsIDIxOCwgOTksIDE0LCAzMiwgMywgCi0gICAgNjksIDE0LCAzMiwgMywgMjE1LCA3OSwgMTQsIDMyLCAzLCAyMTQsIDgyLCAxNCwgMzIsIDMsIDIxMywgMTY2LCAxNCwgMzIsIAotICAgIDMsIDIxMywgMTA1LCAxNCwgMzIsIDMsIDIxMiwgMTUyLCAxNCwgMjIsIDMyLCA2LCA2MSwgMTQsIDIyLCAzMiwgNiwgMjUzLCAKLSAgICA3NCwgMTQsIDIyLCAzMiwgNiwgMjUwLCAyNTIsIDE0LCAyMiwgMzIsIDYsIDI0OSwgMywgMTQsIDIyLCAzMiwgNiwgNzQsIAotICAgIDE0LCAyMiwgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMjIsIDMyLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAzMiwgNiwgMjQyLCA0MSwgCi0gICAgMTQsIDIyLCAzMiwgNiwgNzIsIDE0LCAyMiwgMzIsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDMyLCA2LCAyMzUsIDI3LCAxNCwgCi0gICAgMjIsIDMyLCA2LCAxNTAsIDE0LCAyMiwgMzIsIDYsIDE4MywgMTQsIDIyLCAzMiwgNiwgMjA0LCAxNCwgMjIsIDMyLCA2LCAKLSAgICA3NSwgMTQsIDIyLCAzMiwgNiwgMjI2LCAyMjksIDE0LCAyMiwgMzIsIDYsIDIyNCwgMjQwLCAxNCwgMjIsIDMyLCA2LCAxNDksIAotICAgIDE0LCAyMiwgMzIsIDYsIDE5NywgMTQsIDIyLCAzMiwgNiwgMjE4LCA5OSwgMTQsIDIyLCAzMiwgNiwgNjksIDE0LCAyMiwgCi0gICAgMzIsIDYsIDIxNSwgNzksIDE0LCAyMiwgMzIsIDYsIDIxNCwgODIsIDE0LCAyMiwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMjIsIAotICAgIDMyLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAzMiwgNiwgMjEyLCAxNTIsIDE0LCAyMiwgMzIsIDMsIDYxLCAxNCwgMjIsIDMyLCAKLSAgICAzLCAyNTMsIDc0LCAxNCwgMjIsIDMyLCAzLCAyNTAsIDI1MiwgMTQsIDIyLCAzMiwgMywgMjQ5LCAzLCAxNCwgMjIsIDMyLCAKLSAgICAzLCA3NCwgMTQsIDIyLCAzMiwgMywgMjQ0LCAyMzAsIDE0LCAyMiwgMzIsIDMsIDI0MywgMTc3LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyNDIsIDQxLCAxNCwgMjIsIDMyLCAzLCA3MiwgMTQsIDIyLCAzMiwgMywgMjM1LCAxNDIsIDE0LCAyMiwgMzIsIDMsIDIzNSwgCi0gICAgMjcsIDE0LCAyMiwgMzIsIDMsIDE1MCwgMTQsIDIyLCAzMiwgMywgMTgzLCAxNCwgMjIsIDMyLCAzLCAyMDQsIDE0LCAyMiwgCi0gICAgMzIsIDMsIDc1LCAxNCwgMjIsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDIyLCAzMiwgMywgMjI0LCAyNDAsIDE0LCAyMiwgMzIsIAotICAgIDMsIDE0OSwgMTQsIDIyLCAzMiwgMywgMTk3LCAxNCwgMjIsIDMyLCAzLCAyMTgsIDk5LCAxNCwgMjIsIDMyLCAzLCA2OSwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjE1LCA3OSwgMTQsIDIyLCAzMiwgMywgMjE0LCA4MiwgMTQsIDIyLCAzMiwgMywgMjEzLCAxNjYsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMjIsIDMyLCAzLCAyMTIsIDE1MiwgMTQsIDExMywgNiwgNjEsIDE0LCAKLSAgICAxMTMsIDYsIDI1MCwgMjUyLCAxNCwgMTEzLCA2LCAyNDksIDMsIDE0LCAxMTMsIDYsIDI0MywgMTc3LCAxNCwgMTEzLCA2LCAKLSAgICAyMzUsIDE0MiwgMTQsIDExMywgNiwgMjM1LCAyNywgMTQsIDExMywgNiwgMjA0LCAxNCwgMTEzLCA2LCA3NSwgMTQsIDExMywgCi0gICAgNiwgMjI2LCAyMjksIDE0LCAxMTMsIDYsIDIyNCwgMjQwLCAxNCwgMTEzLCA2LCAxOTcsIDE0LCAxMTMsIDYsIDIxOCwgOTksIAotICAgIDE0LCAxMTMsIDYsIDY5LCAxNCwgMTEzLCA2LCAyMTUsIDc5LCAxNCwgMTEzLCA2LCAyMTQsIDgyLCAxNCwgMTEzLCA2LCAKLSAgICAyMTMsIDE2NiwgMTQsIDExMywgNiwgMjEzLCAxMDUsIDE0LCAxMTMsIDYsIDIxMiwgMTUyLCAxNCwgMTEzLCAzLCA2MSwgMTQsIAotICAgIDExMywgMywgMjUzLCA3NCwgMTQsIDExMywgMywgMjUwLCAyNTIsIDE0LCAxMTMsIDMsIDI0OSwgMywgMTQsIDExMywgMywgCi0gICAgMjQ0LCAyMzAsIDE0LCAxMTMsIDMsIDI0MiwgNDEsIDE0LCAxMTMsIDMsIDcyLCAxNCwgMTEzLCAzLCAyMzUsIDE0MiwgMTQsIAotICAgIDExMywgMywgMjM1LCAyNywgMTQsIDExMywgMywgMTUwLCAxNCwgMTEzLCAzLCAxODMsIDE0LCAxMTMsIDMsIDIwNCwgMTQsIAotICAgIDExMywgMywgMjI2LCAyMjksIDE0LCAxMTMsIDMsIDIyNCwgMjQwLCAxNCwgMTEzLCAzLCAxNDksIDE0LCAxMTMsIDMsIDE5NywgCi0gICAgMTQsIDExMywgMywgMjE4LCA5OSwgMTQsIDExMywgMywgNjksIDE0LCAxMTMsIDMsIDIxNSwgNzksIDE0LCAxMTMsIDMsIAotICAgIDIxNCwgODIsIDE0LCAxMTMsIDMsIDIxMywgMTY2LCAxNCwgMTEzLCAzLCAyMTMsIDEwNSwgMTQsIDExMywgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMiwgMTEzLCA2LCA2MSwgMTQsIDIyLCAxMTMsIDYsIDI1MywgNzQsIDE0LCAyMiwgMTEzLCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIyLCAxMTMsIDYsIDI0OSwgMywgMTQsIDIyLCAxMTMsIDYsIDc0LCAxNCwgMjIsIDExMywgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMiwgMTEzLCA2LCAyNDMsIDE3NywgMTQsIDIyLCAxMTMsIDYsIDI0MiwgNDEsIDE0LCAyMiwgMTEzLCA2LCAKLSAgICA3MiwgMTQsIDIyLCAxMTMsIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDExMywgNiwgMjM1LCAyNywgMTQsIDIyLCAxMTMsIDYsIAotICAgIDE1MCwgMTQsIDIyLCAxMTMsIDYsIDE4MywgMTQsIDIyLCAxMTMsIDYsIDIwNCwgMTQsIDIyLCAxMTMsIDYsIDc1LCAxNCwgCi0gICAgMjIsIDExMywgNiwgMjI2LCAyMjksIDE0LCAyMiwgMTEzLCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAxMTMsIDYsIDE0OSwgMTQsIAotICAgIDIyLCAxMTMsIDYsIDE5NywgMTQsIDIyLCAxMTMsIDYsIDIxOCwgOTksIDE0LCAyMiwgMTEzLCA2LCA2OSwgMTQsIDIyLCAKLSAgICAxMTMsIDYsIDIxNSwgNzksIDE0LCAyMiwgMTEzLCA2LCAyMTQsIDgyLCAxNCwgMjIsIDExMywgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAyMiwgMTEzLCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAxMTMsIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDExMywgMywgNjEsIDE0LCAKLSAgICAyMiwgMTEzLCAzLCAyNTMsIDc0LCAxNCwgMjIsIDExMywgMywgMjUwLCAyNTIsIDE0LCAyMiwgMTEzLCAzLCAyNDksIDMsIAotICAgIDE0LCAyMiwgMTEzLCAzLCA3NCwgMTQsIDIyLCAxMTMsIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDExMywgMywgMjQzLCAxNzcsIAotICAgIDE0LCAyMiwgMTEzLCAzLCAyNDIsIDQxLCAxNCwgMjIsIDExMywgMywgNzIsIDE0LCAyMiwgMTEzLCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDIyLCAxMTMsIDMsIDIzNSwgMjcsIDE0LCAyMiwgMTEzLCAzLCAxNTAsIDE0LCAyMiwgMTEzLCAzLCAxODMsIDE0LCAKLSAgICAyMiwgMTEzLCAzLCAyMDQsIDE0LCAyMiwgMTEzLCAzLCA3NSwgMTQsIDIyLCAxMTMsIDMsIDIyNiwgMjI5LCAxNCwgMjIsIAotICAgIDExMywgMywgMjI0LCAyNDAsIDE0LCAyMiwgMTEzLCAzLCAxNDksIDE0LCAyMiwgMTEzLCAzLCAxOTcsIDE0LCAyMiwgMTEzLCAKLSAgICAzLCAyMTgsIDk5LCAxNCwgMjIsIDExMywgMywgNjksIDE0LCAyMiwgMTEzLCAzLCAyMTUsIDc5LCAxNCwgMjIsIDExMywgMywgCi0gICAgMjE0LCA4MiwgMTQsIDIyLCAxMTMsIDMsIDIxMywgMTY2LCAxNCwgMjIsIDExMywgMywgMjEzLCAxMDUsIDE0LCAyMiwgMTEzLCAKLSAgICAzLCAyMTIsIDE1MiwgMTQsIDEyOSwgNiwgNjEsIDE0LCAxMjksIDYsIDI1MywgNzQsIDE0LCAxMjksIDYsIDI0OSwgMywgMTQsIAotICAgIDEyOSwgNiwgNzQsIDE0LCAxMjksIDYsIDI0NCwgMjMwLCAxNCwgMTI5LCA2LCAyNDMsIDE3NywgMTQsIDEyOSwgNiwgMjM1LCAKLSAgICAxNDIsIDE0LCAxMjksIDYsIDIzNSwgMjcsIDE0LCAxMjksIDYsIDE1MCwgMTQsIDEyOSwgNiwgMTgzLCAxNCwgMTI5LCA2LCAKLSAgICAyMDQsIDE0LCAxMjksIDYsIDc1LCAxNCwgMTI5LCA2LCAyMjYsIDIyOSwgMTQsIDEyOSwgNiwgMjI0LCAyNDAsIDE0LCAxMjksIAotICAgIDYsIDE5NywgMTQsIDEyOSwgNiwgMjE4LCA5OSwgMTQsIDEyOSwgNiwgNjksIDE0LCAxMjksIDYsIDIxNSwgNzksIDE0LCAKLSAgICAxMjksIDYsIDIxNCwgODIsIDE0LCAxMjksIDYsIDIxMywgMTY2LCAxNCwgMTI5LCA2LCAyMTMsIDEwNSwgMTQsIDEyOSwgMywgCi0gICAgNjEsIDE0LCAxMjksIDMsIDI1MywgNzQsIDE0LCAxMjksIDMsIDI1MCwgMjUyLCAxNCwgMTI5LCAzLCAyNDksIDMsIDE0LCAKLSAgICAxMjksIDMsIDc0LCAxNCwgMTI5LCAzLCAyNDQsIDIzMCwgMTQsIDEyOSwgMywgMjQzLCAxNzcsIDE0LCAxMjksIDMsIDI0MiwgCi0gICAgNDEsIDE0LCAxMjksIDMsIDcyLCAxNCwgMTI5LCAzLCAyMzUsIDE0MiwgMTQsIDEyOSwgMywgMjM1LCAyNywgMTQsIDEyOSwgCi0gICAgMywgMTUwLCAxNCwgMTI5LCAzLCAxODMsIDE0LCAxMjksIDMsIDIwNCwgMTQsIDEyOSwgMywgNzUsIDE0LCAxMjksIDMsIAotICAgIDIyNiwgMjI5LCAxNCwgMTI5LCAzLCAyMjQsIDI0MCwgMTQsIDEyOSwgMywgMTQ5LCAxNCwgMTI5LCAzLCAxOTcsIDE0LCAKLSAgICAxMjksIDMsIDIxOCwgOTksIDE0LCAxMjksIDMsIDY5LCAxNCwgMTI5LCAzLCAyMTUsIDc5LCAxNCwgMTI5LCAzLCAyMTQsIAotICAgIDgyLCAxNCwgMTI5LCAzLCAyMTMsIDE2NiwgMTQsIDEyOSwgMywgMjEzLCAxMDUsIDE0LCAxMjksIDMsIDIxMiwgMTUyLCAxNCwgCi0gICAgMTg3LCA2LCA2MSwgMTQsIDE4NywgNiwgMjUzLCA3NCwgMTQsIDE4NywgNiwgMjQ5LCAzLCAxNCwgMTg3LCA2LCA3NCwgMTQsIAotICAgIDE4NywgNiwgMjQ0LCAyMzAsIDE0LCAxODcsIDYsIDI0MywgMTc3LCAxNCwgMTg3LCA2LCA3MiwgMTQsIDE4NywgNiwgMjM1LCAKLSAgICAxNDIsIDE0LCAxODcsIDYsIDIzNSwgMjcsIDE0LCAxODcsIDYsIDE1MCwgMTQsIDE4NywgNiwgMTgzLCAxNCwgMTg3LCA2LCAKLSAgICA3NSwgMTQsIDE4NywgNiwgMTk3LCAxNCwgMTg3LCA2LCAyMTgsIDk5LCAxNCwgMTg3LCA2LCA2OSwgMTQsIDE4NywgNiwgCi0gICAgMjE1LCA3OSwgMTQsIDE4NywgNiwgMjE0LCA4MiwgMTQsIDE4NywgNiwgMjEzLCAxNjYsIDE0LCAxODcsIDYsIDIxMywgMTA1LCAKLSAgICAxNCwgMTg3LCAzLCA2MSwgMTQsIDE4NywgMywgMjUzLCA3NCwgMTQsIDE4NywgMywgMjUwLCAyNTIsIDE0LCAxODcsIDMsIAotICAgIDI0OSwgMywgMTQsIDE4NywgMywgNzQsIDE0LCAxODcsIDMsIDI0NCwgMjMwLCAxNCwgMTg3LCAzLCAyNDMsIDE3NywgMTQsIAotICAgIDE4NywgMywgMjQyLCA0MSwgMTQsIDE4NywgMywgNzIsIDE0LCAxODcsIDMsIDIzNSwgMTQyLCAxNCwgMTg3LCAzLCAyMzUsIAotICAgIDI3LCAxNCwgMTg3LCAzLCAxNTAsIDE0LCAxODcsIDMsIDE4MywgMTQsIDE4NywgMywgMjA0LCAxNCwgMTg3LCAzLCA3NSwgCi0gICAgMTQsIDE4NywgMywgMjI2LCAyMjksIDE0LCAxODcsIDMsIDIyNCwgMjQwLCAxNCwgMTg3LCAzLCAxNDksIDE0LCAxODcsIDMsIAotICAgIDE5NywgMTQsIDE4NywgMywgMjE4LCA5OSwgMTQsIDE4NywgMywgNjksIDE0LCAxODcsIDMsIDIxNSwgNzksIDE0LCAxODcsIAotICAgIDMsIDIxNCwgODIsIDE0LCAxODcsIDMsIDIxMywgMTY2LCAxNCwgMTg3LCAzLCAyMTMsIDEwNSwgMTQsIDE4NywgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMiwgMTI5LCA2LCA2MSwgMTQsIDIyLCAxMjksIDYsIDI1MywgNzQsIDE0LCAyMiwgMTI5LCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIyLCAxMjksIDYsIDI0OSwgMywgMTQsIDIyLCAxMjksIDYsIDc0LCAxNCwgMjIsIDEyOSwgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMiwgMTI5LCA2LCAyNDMsIDE3NywgMTQsIDIyLCAxMjksIDYsIDI0MiwgNDEsIDE0LCAyMiwgMTI5LCA2LCAKLSAgICA3MiwgMTQsIDIyLCAxMjksIDYsIDIzNSwgMTQyLCAxNCwgMjIsIDEyOSwgNiwgMjM1LCAyNywgMTQsIDIyLCAxMjksIDYsIAotICAgIDE1MCwgMTQsIDIyLCAxMjksIDYsIDE4MywgMTQsIDIyLCAxMjksIDYsIDIwNCwgMTQsIDIyLCAxMjksIDYsIDc1LCAxNCwgCi0gICAgMjIsIDEyOSwgNiwgMjI2LCAyMjksIDE0LCAyMiwgMTI5LCA2LCAyMjQsIDI0MCwgMTQsIDIyLCAxMjksIDYsIDE0OSwgMTQsIAotICAgIDIyLCAxMjksIDYsIDE5NywgMTQsIDIyLCAxMjksIDYsIDIxOCwgOTksIDE0LCAyMiwgMTI5LCA2LCA2OSwgMTQsIDIyLCAKLSAgICAxMjksIDYsIDIxNSwgNzksIDE0LCAyMiwgMTI5LCA2LCAyMTQsIDgyLCAxNCwgMjIsIDEyOSwgNiwgMjEzLCAxNjYsIDE0LCAKLSAgICAyMiwgMTI5LCA2LCAyMTMsIDEwNSwgMTQsIDIyLCAxMjksIDYsIDIxMiwgMTUyLCAxNCwgMjIsIDEyOSwgMywgNjEsIDE0LCAKLSAgICAyMiwgMTI5LCAzLCAyNTMsIDc0LCAxNCwgMjIsIDEyOSwgMywgMjUwLCAyNTIsIDE0LCAyMiwgMTI5LCAzLCAyNDksIDMsIAotICAgIDE0LCAyMiwgMTI5LCAzLCA3NCwgMTQsIDIyLCAxMjksIDMsIDI0NCwgMjMwLCAxNCwgMjIsIDEyOSwgMywgMjQzLCAxNzcsIAotICAgIDE0LCAyMiwgMTI5LCAzLCAyNDIsIDQxLCAxNCwgMjIsIDEyOSwgMywgNzIsIDE0LCAyMiwgMTI5LCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDIyLCAxMjksIDMsIDIzNSwgMjcsIDE0LCAyMiwgMTI5LCAzLCAxNTAsIDE0LCAyMiwgMTI5LCAzLCAxODMsIDE0LCAKLSAgICAyMiwgMTI5LCAzLCAyMDQsIDE0LCAyMiwgMTI5LCAzLCA3NSwgMTQsIDIyLCAxMjksIDMsIDIyNiwgMjI5LCAxNCwgMjIsIAotICAgIDEyOSwgMywgMjI0LCAyNDAsIDE0LCAyMiwgMTI5LCAzLCAxNDksIDE0LCAyMiwgMTI5LCAzLCAxOTcsIDE0LCAyMiwgMTI5LCAKLSAgICAzLCAyMTgsIDk5LCAxNCwgMjIsIDEyOSwgMywgNjksIDE0LCAyMiwgMTI5LCAzLCAyMTUsIDc5LCAxNCwgMjIsIDEyOSwgMywgCi0gICAgMjE0LCA4MiwgMTQsIDIyLCAxMjksIDMsIDIxMywgMTY2LCAxNCwgMjIsIDEyOSwgMywgMjEzLCAxMDUsIDE0LCAyMiwgMTI5LCAKLSAgICAzLCAyMTIsIDE1MiwgMTQsIDM1LCA2LCA2MSwgMTQsIDM1LCA2LCAyNTMsIDc0LCAxNCwgMzUsIDYsIDI1MCwgMjUyLCAxNCwgCi0gICAgMzUsIDYsIDI0OSwgMywgMTQsIDM1LCA2LCA3NCwgMTQsIDM1LCA2LCAyNDQsIDIzMCwgMTQsIDM1LCA2LCAyNDMsIDE3NywgCi0gICAgMTQsIDM1LCA2LCAyNDIsIDQxLCAxNCwgMzUsIDYsIDcyLCAxNCwgMzUsIDYsIDIzNSwgMTQyLCAxNCwgMzUsIDYsIDIzNSwgCi0gICAgMjcsIDE0LCAzNSwgNiwgMTUwLCAxNCwgMzUsIDYsIDE4MywgMTQsIDM1LCA2LCAyMDQsIDE0LCAzNSwgNiwgNzUsIDE0LCAKLSAgICAzNSwgNiwgMjI2LCAyMjksIDE0LCAzNSwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgNiwgMTQ5LCAxNCwgMzUsIDYsIDE5NywgMTQsIAotICAgIDM1LCA2LCAyMTgsIDk5LCAxNCwgMzUsIDYsIDY5LCAxNCwgMzUsIDYsIDIxNSwgNzksIDE0LCAzNSwgNiwgMjE0LCA4MiwgCi0gICAgMTQsIDM1LCA2LCAyMTMsIDE2NiwgMTQsIDM1LCA2LCAyMTMsIDEwNSwgMTQsIDM1LCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAzLCAKLSAgICA2MSwgMTQsIDM1LCAzLCAyNTMsIDc0LCAxNCwgMzUsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDMsIDI0OSwgMywgMTQsIDM1LCAKLSAgICAzLCA3NCwgMTQsIDM1LCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAzLCAyNDMsIDE3NywgMTQsIDM1LCAzLCAyNDIsIDQxLCAxNCwgCi0gICAgMzUsIDMsIDcyLCAxNCwgMzUsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDMsIDIzNSwgMjcsIDE0LCAzNSwgMywgMTUwLCAxNCwgCi0gICAgMzUsIDMsIDE4MywgMTQsIDM1LCAzLCAyMDQsIDE0LCAzNSwgMywgNzUsIDE0LCAzNSwgMywgMjI2LCAyMjksIDE0LCAzNSwgCi0gICAgMywgMjI0LCAyNDAsIDE0LCAzNSwgMywgMTQ5LCAxNCwgMzUsIDMsIDE5NywgMTQsIDM1LCAzLCAyMTgsIDk5LCAxNCwgMzUsIAotICAgIDMsIDY5LCAxNCwgMzUsIDMsIDIxNSwgNzksIDE0LCAzNSwgMywgMjE0LCA4MiwgMTQsIDM1LCAzLCAyMTMsIDE2NiwgMTQsIAotICAgIDM1LCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAzLCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgNiwgNjEsIDE0LCAzNSwgMjIsIDYsIAotICAgIDI1MywgNzQsIDE0LCAzNSwgMjIsIDYsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCA2LCAyNDksIDMsIDE0LCAzNSwgMjIsIDYsIAotICAgIDc0LCAxNCwgMzUsIDIyLCA2LCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgNiwgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDYsIDI0MiwgCi0gICAgNDEsIDE0LCAzNSwgMjIsIDYsIDcyLCAxNCwgMzUsIDIyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAyNywgCi0gICAgMTQsIDM1LCAyMiwgNiwgMTUwLCAxNCwgMzUsIDIyLCA2LCAxODMsIDE0LCAzNSwgMjIsIDYsIDIwNCwgMTQsIDM1LCAyMiwgCi0gICAgNiwgNzUsIDE0LCAzNSwgMjIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCA2LCAyMjQsIDI0MCwgMTQsIDM1LCAyMiwgNiwgCi0gICAgMTQ5LCAxNCwgMzUsIDIyLCA2LCAxOTcsIDE0LCAzNSwgMjIsIDYsIDIxOCwgOTksIDE0LCAzNSwgMjIsIDYsIDY5LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMTUsIDc5LCAxNCwgMzUsIDIyLCA2LCAyMTQsIDgyLCAxNCwgMzUsIDIyLCA2LCAyMTMsIDE2NiwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDYsIDIxMiwgMTUyLCAxNCwgMzUsIDIyLCAzLCA2MSwgMTQsIDM1LCAKLSAgICAyMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMywgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMsIDI0OSwgMywgMTQsIDM1LCAKLSAgICAyMiwgMywgNzQsIDE0LCAzNSwgMjIsIDMsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzLCAyNDMsIDE3NywgMTQsIDM1LCAyMiwgCi0gICAgMywgMjQyLCA0MSwgMTQsIDM1LCAyMiwgMywgNzIsIDE0LCAzNSwgMjIsIDMsIDIzNSwgMTQyLCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzLCAxNTAsIDE0LCAzNSwgMjIsIDMsIDE4MywgMTQsIDM1LCAyMiwgMywgMjA0LCAxNCwgCi0gICAgMzUsIDIyLCAzLCA3NSwgMTQsIDM1LCAyMiwgMywgMjI2LCAyMjksIDE0LCAzNSwgMjIsIDMsIDIyNCwgMjQwLCAxNCwgMzUsIAotICAgIDIyLCAzLCAxNDksIDE0LCAzNSwgMjIsIDMsIDE5NywgMTQsIDM1LCAyMiwgMywgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMywgCi0gICAgNjksIDE0LCAzNSwgMjIsIDMsIDIxNSwgNzksIDE0LCAzNSwgMjIsIDMsIDIxNCwgODIsIDE0LCAzNSwgMjIsIDMsIDIxMywgCi0gICAgMTY2LCAxNCwgMzUsIDIyLCAzLCAyMTMsIDEwNSwgMTQsIDM1LCAyMiwgMywgMjEyLCAxNTIsIDE0LCAzNSwgMzIsIDYsIDYxLCAKLSAgICAxNCwgMzUsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzUsIDMyLCA2LCAyNTAsIDI1MiwgMTQsIDM1LCAzMiwgNiwgMjQ5LCAzLCAKLSAgICAxNCwgMzUsIDMyLCA2LCA3NCwgMTQsIDM1LCAzMiwgNiwgMjQ0LCAyMzAsIDE0LCAzNSwgMzIsIDYsIDI0MywgMTc3LCAxNCwgCi0gICAgMzUsIDMyLCA2LCAyNDIsIDQxLCAxNCwgMzUsIDMyLCA2LCA3MiwgMTQsIDM1LCAzMiwgNiwgMjM1LCAxNDIsIDE0LCAzNSwgCi0gICAgMzIsIDYsIDIzNSwgMjcsIDE0LCAzNSwgMzIsIDYsIDE1MCwgMTQsIDM1LCAzMiwgNiwgMTgzLCAxNCwgMzUsIDMyLCA2LCAKLSAgICAyMDQsIDE0LCAzNSwgMzIsIDYsIDc1LCAxNCwgMzUsIDMyLCA2LCAyMjYsIDIyOSwgMTQsIDM1LCAzMiwgNiwgMjI0LCAyNDAsIAotICAgIDE0LCAzNSwgMzIsIDYsIDE0OSwgMTQsIDM1LCAzMiwgNiwgMTk3LCAxNCwgMzUsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIAotICAgIDMyLCA2LCA2OSwgMTQsIDM1LCAzMiwgNiwgMjE1LCA3OSwgMTQsIDM1LCAzMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAzMiwgNiwgCi0gICAgMjEzLCAxNjYsIDE0LCAzNSwgMzIsIDYsIDIxMywgMTA1LCAxNCwgMzUsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAzMiwgCi0gICAgMywgNjEsIDE0LCAzNSwgMzIsIDMsIDI1MywgNzQsIDE0LCAzNSwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDMyLCAzLCAKLSAgICAyNDksIDMsIDE0LCAzNSwgMzIsIDMsIDc0LCAxNCwgMzUsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAzMiwgMywgMjQzLCAKLSAgICAxNzcsIDE0LCAzNSwgMzIsIDMsIDI0MiwgNDEsIDE0LCAzNSwgMzIsIDMsIDcyLCAxNCwgMzUsIDMyLCAzLCAyMzUsIDE0MiwgCi0gICAgMTQsIDM1LCAzMiwgMywgMjM1LCAyNywgMTQsIDM1LCAzMiwgMywgMTUwLCAxNCwgMzUsIDMyLCAzLCAxODMsIDE0LCAzNSwgCi0gICAgMzIsIDMsIDIwNCwgMTQsIDM1LCAzMiwgMywgNzUsIDE0LCAzNSwgMzIsIDMsIDIyNiwgMjI5LCAxNCwgMzUsIDMyLCAzLCAKLSAgICAyMjQsIDI0MCwgMTQsIDM1LCAzMiwgMywgMTQ5LCAxNCwgMzUsIDMyLCAzLCAxOTcsIDE0LCAzNSwgMzIsIDMsIDIxOCwgOTksIAotICAgIDE0LCAzNSwgMzIsIDMsIDY5LCAxNCwgMzUsIDMyLCAzLCAyMTUsIDc5LCAxNCwgMzUsIDMyLCAzLCAyMTQsIDgyLCAxNCwgCi0gICAgMzUsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDM1LCAzMiwgMywgMjEzLCAxMDUsIDE0LCAzNSwgMzIsIDMsIDIxMiwgMTUyLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgNjEsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNTMsIDc0LCAxNCwgMzUsIDIyLCAzMiwgNiwgCi0gICAgMjUwLCAyNTIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDksIDMsIDE0LCAzNSwgMjIsIDMyLCA2LCA3NCwgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDI0NCwgMjMwLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQzLCAxNzcsIDE0LCAzNSwgMjIsIDMyLCA2LCAyNDIsIDQxLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgNzIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzUsIDE0MiwgMTQsIDM1LCAyMiwgMzIsIDYsIAotICAgIDIzNSwgMjcsIDE0LCAzNSwgMjIsIDMyLCA2LCAxNTAsIDE0LCAzNSwgMjIsIDMyLCA2LCAxODMsIDE0LCAzNSwgMjIsIDMyLCAKLSAgICA2LCAyMDQsIDE0LCAzNSwgMjIsIDMyLCA2LCA3NSwgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNiwgMjI5LCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgNiwgMjI0LCAyNDAsIDE0LCAzNSwgMjIsIDMyLCA2LCAxNDksIDE0LCAzNSwgMjIsIDMyLCA2LCAxOTcsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCA2LCAyMTgsIDk5LCAxNCwgMzUsIDIyLCAzMiwgNiwgNjksIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTUsIDc5LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjE0LCA4MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxMywgMTY2LCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjEzLCAxMDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTIsIDE1MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDYxLCAxNCwgMzUsIAotICAgIDIyLCAzMiwgMywgMjUzLCA3NCwgMTQsIDM1LCAyMiwgMzIsIDMsIDI1MCwgMjUyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ5LCAKLSAgICAzLCAxNCwgMzUsIDIyLCAzMiwgMywgNzQsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDQsIDIzMCwgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDI0MywgMTc3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQyLCA0MSwgMTQsIDM1LCAyMiwgMzIsIDMsIDcyLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjM1LCAxNDIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzUsIDI3LCAxNCwgMzUsIDIyLCAzMiwgMywgMTUwLCAxNCwgCi0gICAgMzUsIDIyLCAzMiwgMywgMTgzLCAxNCwgMzUsIDIyLCAzMiwgMywgMjA0LCAxNCwgMzUsIDIyLCAzMiwgMywgNzUsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAzLCAyMjYsIDIyOSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNCwgMjQwLCAxNCwgMzUsIDIyLCAzMiwgMywgCi0gICAgMTQ5LCAxNCwgMzUsIDIyLCAzMiwgMywgMTk3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE4LCA5OSwgMTQsIDM1LCAyMiwgMzIsIAotICAgIDMsIDY5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE1LCA3OSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNCwgODIsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyMTMsIDE2NiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxMywgMTA1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjEyLCAKLSAgICAxNTIsIDE0LCAyMzAsIDIwOCwgNiwgNjEsIDE0LCAyMzAsIDIwOCwgNiwgMjUzLCA3NCwgMTQsIDIzMCwgMjA4LCA2LCAyNTAsIAotICAgIDI1MiwgMTQsIDIzMCwgMjA4LCA2LCAyNDksIDMsIDE0LCAyMzAsIDIwOCwgNiwgNzQsIDE0LCAyMzAsIDIwOCwgNiwgMjQ0LCAKLSAgICAyMzAsIDE0LCAyMzAsIDIwOCwgNiwgMjQzLCAxNzcsIDE0LCAyMzAsIDIwOCwgNiwgMjQyLCA0MSwgMTQsIDIzMCwgMjA4LCAKLSAgICA2LCA3MiwgMTQsIDIzMCwgMjA4LCA2LCAyMzUsIDE0MiwgMTQsIDIzMCwgMjA4LCA2LCAyMzUsIDI3LCAxNCwgMjMwLCAyMDgsIAotICAgIDYsIDE1MCwgMTQsIDIzMCwgMjA4LCA2LCAxODMsIDE0LCAyMzAsIDIwOCwgNiwgMjA0LCAxNCwgMjMwLCAyMDgsIDYsIDc1LCAKLSAgICAxNCwgMjMwLCAyMDgsIDYsIDIyNiwgMjI5LCAxNCwgMjMwLCAyMDgsIDYsIDIyNCwgMjQwLCAxNCwgMjMwLCAyMDgsIDYsIAotICAgIDE0OSwgMTQsIDIzMCwgMjA4LCA2LCAxOTcsIDE0LCAyMzAsIDIwOCwgNiwgMjE4LCA5OSwgMTQsIDIzMCwgMjA4LCA2LCA2OSwgCi0gICAgMTQsIDIzMCwgMjA4LCA2LCAyMTUsIDc5LCAxNCwgMjMwLCAyMDgsIDYsIDIxNCwgODIsIDE0LCAyMzAsIDIwOCwgNiwgMjEzLCAKLSAgICAxNjYsIDE0LCAyMzAsIDIwOCwgNiwgMjEzLCAxMDUsIDE0LCAyMzAsIDIwOCwgNiwgMjEyLCAxNTIsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgNjEsIDE0LCAyMzAsIDIwOCwgMywgMjUzLCA3NCwgMTQsIDIzMCwgMjA4LCAzLCAyNTAsIDI1MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyNDksIDMsIDE0LCAyMzAsIDIwOCwgMywgNzQsIDE0LCAyMzAsIDIwOCwgMywgMjQ0LCAyMzAsIDE0LCAyMzAsIDIwOCwgCi0gICAgMywgMjQzLCAxNzcsIDE0LCAyMzAsIDIwOCwgMywgMjQyLCA0MSwgMTQsIDIzMCwgMjA4LCAzLCA3MiwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAyMzUsIDE0MiwgMTQsIDIzMCwgMjA4LCAzLCAyMzUsIDI3LCAxNCwgMjMwLCAyMDgsIDMsIDE1MCwgMTQsIDIzMCwgCi0gICAgMjA4LCAzLCAxODMsIDE0LCAyMzAsIDIwOCwgMywgMjA0LCAxNCwgMjMwLCAyMDgsIDMsIDc1LCAxNCwgMjMwLCAyMDgsIDMsIAotICAgIDIyNiwgMjI5LCAxNCwgMjMwLCAyMDgsIDMsIDIyNCwgMjQwLCAxNCwgMjMwLCAyMDgsIDMsIDE0OSwgMTQsIDIzMCwgMjA4LCAKLSAgICAzLCAxOTcsIDE0LCAyMzAsIDIwOCwgMywgMjE4LCA5OSwgMTQsIDIzMCwgMjA4LCAzLCA2OSwgMTQsIDIzMCwgMjA4LCAzLCAKLSAgICAyMTUsIDc5LCAxNCwgMjMwLCAyMDgsIDMsIDIxNCwgODIsIDE0LCAyMzAsIDIwOCwgMywgMjEzLCAxNjYsIDE0LCAyMzAsIAotICAgIDIwOCwgMywgMjEzLCAxMDUsIDE0LCAyMzAsIDIwOCwgMywgMjEyLCAxNTIsIDE0LCAzMiwgMywgMjQ3LCA3MywgNzIsIDE0LCAKLSAgICAzMiwgMywgMjQ3LCA3MywgMjM1LCAxNDIsIDE0LCAyMiwgNiwgMjU0LCA1MiwgMTQsIDIyLCA2LCAyNTEsIDIwMywgMTQsIAotICAgIDIyLCA2LCAyNDMsIDgzLCAxNCwgMjIsIDYsIDI0OCwgNSwgMTQsIDIyLCA2LCAyNDUsIDYzLCAxNCwgMjIsIDYsIDIxMiwgCi0gICAgNzgsIDE0LCAyMiwgNiwgMjQ1LCAyOCwgMTQsIDIyLCA2LCAyMTcsIDEzMiwgMTQsIDIyLCA2LCAyMzUsIDE4MywgMTQsIDIyLCAKLSAgICA2LCAyMzQsIDIyNywgMTQsIDIyLCA2LCAyMzMsIDEyMiwgMTQsIDIyLCA2LCAyMzAsIDE3MiwgMTQsIDIyLCA2LCAyMjgsIAotICAgIDkyLCAxNCwgMjIsIDYsIDIxMywgMTQ1LCAxNCwgMjIsIDYsIDIyNywgNjUsIDE0LCAyMiwgNiwgMjI1LCAyNDAsIDE0LCAyMiwgCi0gICAgNiwgMjIzLCAxOTAsIDE0LCAyMiwgNiwgMjE3LCAxMzMsIDg3LCAxNCwgMjIsIDYsIDIyMCwgMTAzLCAxNCwgMjIsIDYsIAotICAgIDIxNywgMjQ4LCAxNCwgMjIsIDYsIDIxNSwgMTI4LCAxNCwgMjIsIDYsIDIyNiwgOSwgMTQsIDIyLCA2LCAyNTAsIDQ3LCAxNCwgCi0gICAgMjIsIDYsIDIyNSwgNDYsIDE0LCAyMiwgNiwgMjI3LCA2NywgMTQsIDIyLCAyMzAsIDM5LCAxNCwgMjIsIDMsIDI1NCwgNTIsIAotICAgIDE0LCAyMiwgMywgMjUxLCAyMDMsIDE0LCAyMiwgMywgMjQzLCA4MywgMTQsIDIyLCAzLCAyNDgsIDUsIDE0LCAyMiwgMywgCi0gICAgMjQ1LCA2MywgMTQsIDIyLCAzLCAyMTIsIDc4LCAxNCwgMjIsIDMsIDI0NSwgMjgsIDE0LCAyMiwgMywgMjE3LCAxMzIsIDE0LCAKLSAgICAyMiwgMywgMjM1LCAxODMsIDE0LCAyMiwgMywgMjM0LCAyMjcsIDE0LCAyMiwgMywgMjMzLCAxMjIsIDE0LCAyMiwgMywgCi0gICAgMjMwLCAxNzIsIDE0LCAyMiwgMywgMjI4LCA5MiwgMTQsIDIyLCAzLCAyMTMsIDE0NSwgMTQsIDIyLCAzLCAyMjcsIDY1LCAKLSAgICAxNCwgMjIsIDMsIDIyNSwgMjQwLCAxNCwgMjIsIDMsIDIyMywgMTkwLCAxNCwgMjIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIAotICAgIDIyLCAzLCAyMjAsIDEwMywgMTQsIDIyLCAzLCAyMTcsIDI0OCwgMTQsIDIyLCAzLCAyMTUsIDEyOCwgMTQsIDIyLCAzLCAKLSAgICAyMjYsIDksIDE0LCAyMiwgMywgMjUwLCA0NywgMTQsIDIyLCAzLCAyMjUsIDQ2LCAxNCwgMjIsIDMsIDIyNywgNjcsIDE0LCAKLSAgICAyMiwgMjI2LCAxMjUsIDI0NywgMTg1LCAxNCwgMjIsIDI0NSwgNjQsIDg3LCAxNCwgMjIsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDIyLCAyMzQsIDIyOCwgODcsIDE0LCAyMiwgMjI2LCAxMCwgODcsIDE0LCAyMiwgMjIzLCAxOTEsIDg3LCAxNCwgMjIsIDIyNSwgCi0gICAgMjQxLCA4NywgMTQsIDMyLCA2LCAyNTQsIDUyLCAxNCwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMzIsIDYsIDI0MywgODMsIDE0LCAKLSAgICAzMiwgNiwgMjQ4LCA1LCAxNCwgMzIsIDYsIDI0NSwgNjMsIDE0LCAzMiwgNiwgMjEyLCA3OCwgMTQsIDMyLCA2LCAyNDUsIAotICAgIDI4LCAxNCwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMzIsIDYsIDIzNSwgMTgzLCAxNCwgMzIsIDYsIDIzNCwgMjI3LCAxNCwgCi0gICAgMzIsIDYsIDIzMywgMTIyLCAxNCwgMzIsIDYsIDIzMCwgMTcyLCAxNCwgMzIsIDYsIDIyOCwgOTIsIDE0LCAzMiwgNiwgMjEzLCAKLSAgICAxNDUsIDE0LCAzMiwgNiwgMjI3LCA2NSwgMTQsIDMyLCA2LCAyMjUsIDI0MCwgMTQsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIAotICAgIDMyLCA2LCAyMTcsIDEzMywgODcsIDE0LCAzMiwgNiwgMjIwLCAxMDMsIDE0LCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAzMiwgNiwgCi0gICAgMjE1LCAxMjgsIDE0LCAzMiwgNiwgMjI2LCA5LCAxNCwgMzIsIDYsIDI1MCwgNDcsIDE0LCAzMiwgNiwgMjI1LCA0NiwgMTQsIAotICAgIDMyLCA2LCAyMjcsIDY3LCAxNCwgMzIsIDIzMCwgMzksIDE0LCAzMiwgMywgMjU0LCA1MiwgMTQsIDMyLCAzLCAyNTEsIDIwMywgCi0gICAgMTQsIDMyLCAzLCAyNDMsIDgzLCAxNCwgMzIsIDMsIDI0OCwgNSwgMTQsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMzIsIDMsIAotICAgIDIxMiwgNzgsIDE0LCAzMiwgMywgMjQ1LCAyOCwgMTQsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDMyLCAzLCAyMzUsIDE4MywgCi0gICAgMTQsIDMyLCAzLCAyMzQsIDIyNywgMTQsIDMyLCAzLCAyMzMsIDEyMiwgMTQsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDMyLCAzLCAKLSAgICAyMjgsIDkyLCAxNCwgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMzIsIDMsIDIyNywgNjUsIDE0LCAzMiwgMywgMjI1LCAyNDAsIAotICAgIDE0LCAzMiwgMywgMjIzLCAxOTAsIDE0LCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzIsIDMsIDIyMCwgMTAzLCAxNCwgCi0gICAgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMzIsIDMsIDIxNSwgMTI4LCAxNCwgMzIsIDMsIDIyNiwgOSwgMTQsIDMyLCAzLCAyNTAsIAotICAgIDQ3LCAxNCwgMzIsIDMsIDIyNSwgNDYsIDE0LCAzMiwgMywgMjI3LCA2NywgMTQsIDMyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIAotICAgIDE0LCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAzMiwgMjE3LCAxMzMsIDg3LCAxNCwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDMyLCAKLSAgICAyMjYsIDEwLCA4NywgMTQsIDMyLCAyMjMsIDE5MSwgODcsIDE0LCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNTQsIDUyLCAxNCwgMjIsIDMyLCA2LCAyNTEsIDIwMywgMTQsIDIyLCAzMiwgNiwgMjQzLCA4MywgMTQsIDIyLCAzMiwgNiwgCi0gICAgMjQ4LCA1LCAxNCwgMjIsIDMyLCA2LCAyNDUsIDYzLCAxNCwgMjIsIDMyLCA2LCAyMTIsIDc4LCAxNCwgMjIsIDMyLCA2LCAKLSAgICAyNDUsIDI4LCAxNCwgMjIsIDMyLCA2LCAyMTcsIDEzMiwgMTQsIDIyLCAzMiwgNiwgMjM1LCAxODMsIDE0LCAyMiwgMzIsIDYsIAotICAgIDIzNCwgMjI3LCAxNCwgMjIsIDMyLCA2LCAyMzMsIDEyMiwgMTQsIDIyLCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAyMiwgMzIsIAotICAgIDYsIDIyOCwgOTIsIDE0LCAyMiwgMzIsIDYsIDIxMywgMTQ1LCAxNCwgMjIsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMjIsIDMyLCAKLSAgICA2LCAyMjUsIDI0MCwgMTQsIDIyLCAzMiwgNiwgMjIzLCAxOTAsIDE0LCAyMiwgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIAotICAgIDIyLCAzMiwgNiwgMjIwLCAxMDMsIDE0LCAyMiwgMzIsIDYsIDIxNywgMjQ4LCAxNCwgMjIsIDMyLCA2LCAyMTUsIDEyOCwgCi0gICAgMTQsIDIyLCAzMiwgNiwgMjI2LCA5LCAxNCwgMjIsIDMyLCA2LCAyNTAsIDQ3LCAxNCwgMjIsIDMyLCA2LCAyMjUsIDQ2LCAKLSAgICAxNCwgMjIsIDMyLCA2LCAyMjcsIDY3LCAxNCwgMjIsIDMyLCAyMzAsIDM5LCAxNCwgMjIsIDMyLCAzLCAyNTQsIDUyLCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyNTEsIDIwMywgMTQsIDIyLCAzMiwgMywgMjQzLCA4MywgMTQsIDIyLCAzMiwgMywgMjQ4LCA1LCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyNDUsIDYzLCAxNCwgMjIsIDMyLCAzLCAyMTIsIDc4LCAxNCwgMjIsIDMyLCAzLCAyNDUsIDI4LCAxNCwgCi0gICAgMjIsIDMyLCAzLCAyMTcsIDEzMiwgMTQsIDIyLCAzMiwgMywgMjM1LCAxODMsIDE0LCAyMiwgMzIsIDMsIDIzNCwgMjI3LCAKLSAgICAxNCwgMjIsIDMyLCAzLCAyMzMsIDEyMiwgMTQsIDIyLCAzMiwgMywgMjMwLCAxNzIsIDE0LCAyMiwgMzIsIDMsIDIyOCwgOTIsIAotICAgIDE0LCAyMiwgMzIsIDMsIDIxMywgMTQ1LCAxNCwgMjIsIDMyLCAzLCAyMjcsIDY1LCAxNCwgMjIsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDIyLCAzMiwgMywgMjIzLCAxOTAsIDE0LCAyMiwgMzIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDIyLCAzMiwgMywgMjIwLCAKLSAgICAxMDMsIDE0LCAyMiwgMzIsIDMsIDIxNywgMjQ4LCAxNCwgMjIsIDMyLCAzLCAyMTUsIDEyOCwgMTQsIDIyLCAzMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMjIsIDMyLCAzLCAyNTAsIDQ3LCAxNCwgMjIsIDMyLCAzLCAyMjUsIDQ2LCAxNCwgMjIsIDMyLCAzLCAKLSAgICAyMjcsIDY3LCAxNCwgMjIsIDMyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAyMiwgMzIsIDI0NSwgNjQsIDg3LCAxNCwgMjIsIAotICAgIDMyLCAyMTcsIDEzMywgODcsIDE0LCAyMiwgMzIsIDIzNCwgMjI4LCA4NywgMTQsIDIyLCAzMiwgMjI2LCAxMCwgODcsIDE0LCAKLSAgICAyMiwgMzIsIDIyMywgMTkxLCA4NywgMTQsIDIyLCAzMiwgMjI1LCAyNDEsIDg3LCAxNCwgMzUsIDIyLCA2LCAyNTQsIDUyLCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgNiwgMjQzLCA4MywgMTQsIDM1LCAyMiwgNiwgMjQ4LCA1LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyNDUsIDYzLCAxNCwgMzUsIDIyLCA2LCAyMTIsIDc4LCAxNCwgMzUsIDIyLCA2LCAyNDUsIDI4LCAKLSAgICAxNCwgMzUsIDIyLCA2LCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgNiwgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDYsIDIzNCwgCi0gICAgMjI3LCAxNCwgMzUsIDIyLCA2LCAyMzMsIDEyMiwgMTQsIDM1LCAyMiwgNiwgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDYsIAotICAgIDIyOCwgOTIsIDE0LCAzNSwgMjIsIDYsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCA2LCAyMjcsIDY1LCAxNCwgMzUsIDIyLCA2LCAKLSAgICAyMjUsIDI0MCwgMTQsIDM1LCAyMiwgNiwgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAKLSAgICAyMiwgNiwgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDYsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCA2LCAyMTUsIDEyOCwgMTQsIAotICAgIDM1LCAyMiwgNiwgMjI2LCA5LCAxNCwgMzUsIDIyLCA2LCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCA2LCAyMjUsIDQ2LCAxNCwgCi0gICAgMzUsIDIyLCA2LCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAyMzAsIDM5LCAxNCwgMzUsIDIyLCAzLCAyNTQsIDUyLCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNTEsIDIwMywgMTQsIDM1LCAyMiwgMywgMjQzLCA4MywgMTQsIDM1LCAyMiwgMywgMjQ4LCA1LCAxNCwgMzUsIAotICAgIDIyLCAzLCAyNDUsIDYzLCAxNCwgMzUsIDIyLCAzLCAyMTIsIDc4LCAxNCwgMzUsIDIyLCAzLCAyNDUsIDI4LCAxNCwgMzUsIAotICAgIDIyLCAzLCAyMTcsIDEzMiwgMTQsIDM1LCAyMiwgMywgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMsIDIzNCwgMjI3LCAxNCwgCi0gICAgMzUsIDIyLCAzLCAyMzMsIDEyMiwgMTQsIDM1LCAyMiwgMywgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMsIDIyOCwgOTIsIDE0LCAKLSAgICAzNSwgMjIsIDMsIDIxMywgMTQ1LCAxNCwgMzUsIDIyLCAzLCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzLCAyMjUsIDI0MCwgMTQsIAotICAgIDM1LCAyMiwgMywgMjIzLCAxOTAsIDE0LCAzNSwgMjIsIDMsIDQwLCAyMjAsIDEwMywgMTQsIDM1LCAyMiwgMywgMjIwLCAKLSAgICAxMDMsIDE0LCAzNSwgMjIsIDMsIDIxNywgMjQ4LCAxNCwgMzUsIDIyLCAzLCAyMTUsIDEyOCwgMTQsIDM1LCAyMiwgMywgCi0gICAgMjI2LCA5LCAxNCwgMzUsIDIyLCAzLCAyNTAsIDQ3LCAxNCwgMzUsIDIyLCAzLCAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzLCAKLSAgICAyMjcsIDY3LCAxNCwgMzUsIDIyLCAyMjYsIDEyNSwgMjQ3LCAxODUsIDE0LCAzNSwgMjIsIDI0NSwgNjQsIDg3LCAxNCwgMzUsIAotICAgIDIyLCAyMTcsIDEzMywgODcsIDE0LCAzNSwgMjIsIDIzNCwgMjI4LCA4NywgMTQsIDM1LCAyMiwgMjI2LCAxMCwgODcsIDE0LCAKLSAgICAzNSwgMjIsIDIyMywgMTkxLCA4NywgMTQsIDM1LCAyMiwgMjI1LCAyNDEsIDg3LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjU0LCAKLSAgICA1MiwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MSwgMjAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjQzLCA4MywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDYsIDI0OCwgNSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI0NSwgNjMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTIsIDc4LCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjQ1LCAyOCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMTMyLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjM1LCAxODMsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMzQsIDIyNywgMTQsIDM1LCAyMiwgMzIsIDYsIDIzMywgMTIyLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgNiwgMjMwLCAxNzIsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjgsIDkyLCAxNCwgMzUsIDIyLCAzMiwgCi0gICAgNiwgMjEzLCAxNDUsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMjcsIDY1LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI1LCAyNDAsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCA2LCAyMjMsIDE5MCwgMTQsIDM1LCAyMiwgMzIsIDYsIDIxNywgMTMzLCA4NywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDYsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAzMiwgNiwgMjE3LCAyNDgsIDE0LCAzNSwgMjIsIDMyLCA2LCAyMTUsIDEyOCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDYsIDIyNiwgOSwgMTQsIDM1LCAyMiwgMzIsIDYsIDI1MCwgNDcsIDE0LCAzNSwgMjIsIDMyLCA2LCAKLSAgICAyMjUsIDQ2LCAxNCwgMzUsIDIyLCAzMiwgNiwgMjI3LCA2NywgMTQsIDM1LCAyMiwgMzIsIDIzMCwgMzksIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyNTQsIDUyLCAxNCwgMzUsIDIyLCAzMiwgMywgMjUxLCAyMDMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDMsIDgzLCAKLSAgICAxNCwgMzUsIDIyLCAzMiwgMywgMjQ4LCA1LCAxNCwgMzUsIDIyLCAzMiwgMywgMjQ1LCA2MywgMTQsIDM1LCAyMiwgMzIsIDMsIAotICAgIDIxMiwgNzgsIDE0LCAzNSwgMjIsIDMyLCAzLCAyNDUsIDI4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjE3LCAxMzIsIDE0LCAzNSwgCi0gICAgMjIsIDMyLCAzLCAyMzUsIDE4MywgMTQsIDM1LCAyMiwgMzIsIDMsIDIzNCwgMjI3LCAxNCwgMzUsIDIyLCAzMiwgMywgMjMzLCAKLSAgICAxMjIsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMzAsIDE3MiwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyOCwgOTIsIDE0LCAzNSwgMjIsIAotICAgIDMyLCAzLCAyMTMsIDE0NSwgMTQsIDM1LCAyMiwgMzIsIDMsIDIyNywgNjUsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjUsIDI0MCwgCi0gICAgMTQsIDM1LCAyMiwgMzIsIDMsIDIyMywgMTkwLCAxNCwgMzUsIDIyLCAzMiwgMywgNDAsIDIyMCwgMTAzLCAxNCwgMzUsIDIyLCAKLSAgICAzMiwgMywgMjIwLCAxMDMsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMTcsIDI0OCwgMTQsIDM1LCAyMiwgMzIsIDMsIDIxNSwgCi0gICAgMTI4LCAxNCwgMzUsIDIyLCAzMiwgMywgMjI2LCA5LCAxNCwgMzUsIDIyLCAzMiwgMywgMjUwLCA0NywgMTQsIDM1LCAyMiwgCi0gICAgMzIsIDMsIDIyNSwgNDYsIDE0LCAzNSwgMjIsIDMyLCAzLCAyMjcsIDY3LCAxNCwgMzUsIDIyLCAzMiwgMjI2LCAxMjUsIAotICAgIDI0NywgMTg1LCAxNCwgMzUsIDIyLCAzMiwgMjQ1LCA2NCwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMTcsIDEzMywgODcsIDE0LCAKLSAgICAzNSwgMjIsIDMyLCAyMzQsIDIyOCwgODcsIDE0LCAzNSwgMjIsIDMyLCAyMjYsIDEwLCA4NywgMTQsIDM1LCAyMiwgMzIsIAotICAgIDIyMywgMTkxLCA4NywgMTQsIDM1LCAyMiwgMzIsIDIyNSwgMjQxLCA4NywgMTQsIDIyLCA2LCAyNDcsIDE3OSwgMTQsIDIyLCAKLSAgICAzLCAyNDcsIDE3OSwgMTQsIDIyLCAyMSwgMjEyLCA3OSwgMTQsIDIyLCAyMSwgMTE2LCAxNCwgMjIsIDIxLCAxMDksIDE0LCAKLSAgICAyMiwgMjEsIDE2NiwgMTQsIDIyLCAyMSwgMTYzLCAxNCwgMjIsIDIxLCAxODAsIDE0LCAyMiwgMjEsIDE4OSwgMTQsIDIyLCAKLSAgICAyMSwgMTk4LCAxNCwgMjIsIDIxLCAxOTUsIDE0LCAyMiwgMjEsIDIwMCwgMTQsIDE4NywgMjEsIDIxMiwgNzksIDE0LCAxODcsIAotICAgIDIxLCAxMTYsIDE0LCAxODcsIDIxLCAxMDksIDE0LCAxODcsIDIxLCAxNjYsIDE0LCAxODcsIDIxLCAxNjMsIDE0LCAxODcsIAotICAgIDIxLCAxODAsIDE0LCAxODcsIDIxLCAxODksIDE0LCAxODcsIDIxLCAxOTgsIDE0LCAxODcsIDIxLCAxOTUsIDE0LCAxODcsIAotICAgIDIxLCAyMDAsIDE0LCAzNSwgMjEsIDIxMiwgNzksIDE0LCAzNSwgMjEsIDExNiwgMTQsIDM1LCAyMSwgMTA5LCAxNCwgMzUsIAotICAgIDIxLCAxNjYsIDE0LCAzNSwgMjEsIDE2MywgMTQsIDM1LCAyMSwgMTgwLCAxNCwgMzUsIDIxLCAxODksIDE0LCAzNSwgMjEsIAotICAgIDE5OCwgMTQsIDM1LCAyMSwgMTk1LCAxNCwgMzUsIDIxLCAyMDAsIDE0LCAzNSwgMjIsIDIxLCAyMTIsIDc5LCAxNCwgMzUsIAotICAgIDIyLCAyMSwgMTE2LCAxNCwgMzUsIDIyLCAyMSwgMTA5LCAxNCwgMzUsIDIyLCAyMSwgMTY2LCAxNCwgMzUsIDIyLCAyMSwgCi0gICAgMTYzLCAxNCwgMzUsIDIyLCAyMSwgMTgwLCAxNCwgMzUsIDIyLCAyMSwgMTg5LCAxNCwgMzUsIDIyLCAyMSwgMTk4LCAxNCwgCi0gICAgMzUsIDIyLCAyMSwgMTk1LCAxNCwgMzUsIDIyLCAyMSwgMjAwLCAxNCwgMjMwLCAyMDgsIDIxLCAyMTIsIDc5LCAxNCwgMjMwLCAKLSAgICAyMDgsIDIxLCAxMTYsIDE0LCAyMzAsIDIwOCwgMjEsIDEwOSwgMTQsIDIzMCwgMjA4LCAyMSwgMTY2LCAxNCwgMjMwLCAyMDgsIAotICAgIDIxLCAxNjMsIDE0LCAyMzAsIDIwOCwgMjEsIDE4MCwgMTQsIDIzMCwgMjA4LCAyMSwgMTg5LCAxNCwgMjMwLCAyMDgsIDIxLCAKLSAgICAxOTgsIDE0LCAyMzAsIDIwOCwgMjEsIDE5NSwgMTQsIDIzMCwgMjA4LCAyMSwgMjAwLCAyMzIsIDEwLCA4NSwgMjQ1LCAxNzYsIAotICAgIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjE5LCAyMTUsIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjEzLCAyNTAsIDIxMywgCi0gICAgMjI0LCAyMzIsIDEwLCA4NSwgMjI4LCAxNjcsIDIxMywgMjI0LCAyMzIsIDEwLCA4NSwgMjI0LCA0LCAyNDYsIDUwLCAyMzIsIAotICAgIDEwLCA4NSwgMjQyLCAxMDQsIDI0NiwgNTAsIDIzMiwgMTAsIDg1LCA2NywgMjQ2LCA1MCwgMjMyLCAxMCwgODUsIDEyMiwgCi0gICAgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAxMTcsIDY1LCAyNTAsIDc3LCAyMzIsIDEwLCA4NSwgMTMzLCA2NSwgMjUwLCAKLSAgICA3NywgMjMyLCAxMCwgODUsIDI0MywgMjM3LCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDI0NCwgNTAsIDY1LCAyNTAsIAotICAgIDc3LCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIDI1MCwgNzcsIDIzMiwgMTAsIDg1LCAyMjEsIDQzLCA2NSwgMjUwLCA3NywgCi0gICAgMjMyLCAxMCwgODUsIDI0NSwgMTUwLCA2NSwgMjUwLCA3NywgMjMyLCAxMCwgODUsIDIyOSwgMzEsIDY1LCAyNTAsIDc3LCAKLSAgICAyMzIsIDEwLCA4NSwgMTIyLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIDExNywgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIAotICAgIDg1LCAxMzMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjQzLCAyMzcsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjQ0LCA1MCwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAyMjAsIDUzLCA2NSwgMjUyLCA3MiwgMjMyLCAxMCwgODUsIAotICAgIDIyMSwgNDMsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAyNTIsIDcyLCAyMzIsIDEwLCA4NSwgCi0gICAgMjI5LCAzMSwgNjUsIDI1MiwgNzIsIDIzMiwgMTAsIDg1LCAxMjIsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDExNywgCi0gICAgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMTMzLCA2NSwgMjQ5LCAyMjcsIDIzMiwgMTAsIDg1LCAyNDMsIDIzNywgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQ0LCA1MCwgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjIwLCA1MywgNjUsIAotICAgIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjIxLCA0MywgNjUsIDI0OSwgMjI3LCAyMzIsIDEwLCA4NSwgMjQ1LCAxNTAsIDY1LCAKLSAgICAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyOSwgMzEsIDY1LCAyNDksIDIyNywgMjMyLCAxMCwgODUsIDIyNSwgMTU5LCAyMzIsIAotICAgIDEwLCA4NSwgMjI3LCAyMiwgMjMyLCAxMCwgODUsIDI1MiwgNzMsIDIzMiwgMTAsIDg1LCAyNTAsIDcsIDIzMiwgMTAsIDg1LCAKLSAgICAyMTksIDE3MSwgMjMyLCAxMCwgODUsIDIxOCwgMjQwLCAyMzIsIDEwLCA4NSwgMjUzLCA5NSwgMjMyLCAxMCwgODUsIDIxMywgCi0gICAgMjE3LCAyMzIsIDEwLCA4NSwgMjM1LCA2NSwgMjMyLCAxMCwgODUsIDI1MiwgMTAxLCAxMjcsIDg1LCAxOTksIDI1MiwgMTAxLCAKLSAgICAxMjcsIDg1LCAyNDEsIDMwLCAxMjcsIDg1LCAyNDEsIDI5LCAxMjcsIDg1LCAyNDEsIDI4LCAxMjcsIDg1LCAyNDEsIDI3LCAKLSAgICAxMjcsIDg1LCAyNDEsIDI2LCAxMjcsIDg1LCAyNDEsIDI1LCAxMjcsIDg1LCAyNDEsIDI0LCAxMjcsIDg1LCAyNDEsIDIzLCAKLSAgICAxMjcsIDg1LCAyNDEsIDIyLCAxMjcsIDg1LCAyNDEsIDIxLCAxMjcsIDg1LCAyNDEsIDIwLCAxMjcsIDg1LCAyNDEsIDE5LCAKLSAgICAxMjcsIDg1LCAyNDEsIDE4LCAxMjcsIDg1LCAyNDEsIDE3LCAxMjcsIDg1LCAyNDEsIDE2LCAxMjcsIDg1LCAyNDEsIDE1LCAKLSAgICAxMjcsIDg1LCAyNDEsIDE0LCAxMjcsIDg1LCAyNDEsIDEzLCAxMjcsIDg1LCAyNDEsIDEyLCAxMjcsIDg1LCAyNDEsIDExLCAKLSAgICAxMjcsIDg1LCAyNDEsIDEwLCAxMjcsIDg1LCAyNDEsIDksIDEyNywgODUsIDI0MSwgOCwgMTI3LCA4NSwgMjQxLCA3LCAxMjcsIAotICAgIDg1LCAyNDEsIDYsIDEyNywgODUsIDI0MSwgNSwgMTI3LCA4NSwgMjQxLCA0LCAxMjcsIDg1LCAyNDEsIDMsIDEyNywgODUsIAotICAgIDI0MSwgMiwgMTI3LCA4NSwgMjQxLCAxLCAxMjcsIDg1LCAyNDEsIDAsIDEyNywgODUsIDI0MCwgMjU1LCAxMjcsIDg1LCAKLSAgICAyNDAsIDI1NCwgMTI3LCA4NSwgMjQwLCAyNTMsIDEyNywgODUsIDI0MCwgMjUyLCAxMjcsIDg1LCAyNDAsIDI1MSwgMTI3LCAKLSAgICA4NSwgMjQwLCAyNTAsIDEyNywgODUsIDI0MCwgMjQ5LCAxMjcsIDg1LCAyNDAsIDI0OCwgMTI3LCA4NSwgMjQwLCAyNDcsIAotICAgIDEyNywgODUsIDI0MCwgMjQ2LCAxMjcsIDg1LCAyNDAsIDI0NSwgMTI3LCA4NSwgMjQwLCAyNDQsIDEyNywgODUsIDI0MCwgCi0gICAgMjQzLCAxMjcsIDg1LCAyNDAsIDI0MiwgMTI3LCA4NSwgMjQwLCAyNDEsIDEyNywgODUsIDI0MCwgMjQwLCAxMjcsIDg1LCAKLSAgICAyNDAsIDIzOSwgMTI3LCA4NSwgMjQwLCAyMzgsIDEyNywgODUsIDcxLCAyNTIsIDEwMSwgMTI3LCA4NSwgMjE0LCAyMTUsIAotICAgIDEyNywgODUsIDIxNCwgMjE0LCAxMjcsIDg1LCAyMTQsIDIxMywgMTI3LCA4NSwgMjE0LCAyMTIsIDEyNywgODUsIDIxNCwgCi0gICAgMjExLCAxMjcsIDg1LCAyMTQsIDIxMCwgMTI3LCA4NSwgMjE0LCAyMDksIDEyNywgODUsIDIxNCwgMjA4LCAxMjcsIDg1LCAKLSAgICAyMTQsIDIwNywgMTI3LCA4NSwgMjE0LCAyMDYsIDEyNywgODUsIDIxNCwgMjA1LCAxMjcsIDg1LCAyMTQsIDIwNCwgMTI3LCAKLSAgICA4NSwgMjE0LCAyMDMsIDEyNywgODUsIDIxNCwgMjAyLCAxMjcsIDg1LCAyMTQsIDIwMSwgMTI3LCA4NSwgMjE0LCAyMDAsIAotICAgIDEyNywgODUsIDIxNCwgMTk5LCAxMjcsIDg1LCAyMTQsIDE5OCwgMTI3LCA4NSwgMjE0LCAxOTcsIDEyNywgODUsIDIxNCwgCi0gICAgMTk2LCAxMjcsIDg1LCAyMTQsIDE5NSwgMTI3LCA4NSwgMjE0LCAxOTQsIDEyNywgODUsIDIxNCwgMTkzLCAxMjcsIDg1LCAKLSAgICAyMTQsIDE5MiwgMTI3LCA4NSwgMjE0LCAxOTEsIDEyNywgODUsIDIxNCwgMTkwLCAxMjcsIDg1LCAyMTQsIDE4OSwgMTI3LCAKLSAgICA4NSwgMjE0LCAxODgsIDEyNywgODUsIDIxNCwgMTg3LCAxMjcsIDg1LCAyMTQsIDE4NiwgMTI3LCA4NSwgMjE0LCAxODUsIAotICAgIDEyNywgODUsIDIxNCwgMTg0LCAxMjcsIDg1LCAyMTQsIDE4MywgMTI3LCA4NSwgMjE0LCAxODIsIDEyNywgODUsIDIxNCwgCi0gICAgMTgxLCAxMjcsIDg1LCAyMTQsIDE4MCwgMTI3LCA4NSwgMjE0LCAxNzksIDEyNywgODUsIDIxNCwgMTc4LCAxMjcsIDg1LCAKLSAgICAyMTQsIDE3NywgMTI3LCA4NSwgMjE0LCAxNzYsIDEyNywgODUsIDIxNCwgMTc1LCAxMjcsIDg1LCAyMTQsIDE3NCwgMTI3LCAKLSAgICA4NSwgMjE0LCAxNzMsIDEyNywgODUsIDIxNCwgMTcyLCAxMjcsIDg1LCAyMTQsIDE3MSwgMTI3LCA4NSwgMjE0LCAxNzAsIAotICAgIDEyNywgODUsIDIxNCwgMTY5LCAxMjcsIDg1LCAyMTQsIDE2OCwgMTI3LCA4NSwgMjE0LCAxNjcsIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjUyLCAxMDEsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgCi0gICAgMTc1LCAxMTcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NCwgNTAsIDY1LCAyMTksIAotICAgIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIxLCAKLSAgICA0MywgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAKLSAgICAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDIxOSwgMjAzLCAyMjUsIDE2NSwgMjUwLCAxNzUsIDIxNywgMjAxLCA2NSwgMjE5LCAKLSAgICAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIAotICAgIDQwLCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAyMTksIDIwMywgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjE5LCAyMDMsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyNDEsIAotICAgIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI0NCwgNTAsIDY1LCAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjQxLCAyMDksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0MSwgMjA5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDIxNywgMjAxLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyNDEsIDIwOSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAKLSAgICAyNDEsIDIwOSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQxLCAyMDksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgMjU0LCAxNjksIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIAotICAgIDI1MCwgMTc1LCAxMzMsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NCwgNTAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCAKLSAgICA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0NywgMTk5LCAyMjUsIDE2NSwgMjUwLCAKLSAgICAxNzUsIDI0NSwgMTUwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0NywgMTk5LCAKLSAgICAyMjUsIDE2NSwgMjUwLCAxNzUsIDIxNywgMjAxLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIAotICAgIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQ3LCAxOTksIDIyNSwgMTY1LCAyNTAsIAotICAgIDE3NSwgMjI0LCAxNjAsIDY1LCAyNDcsIDE5OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQ3LCAxOTksIAotICAgIDIyNSwgMTY1LCAyNTAsIDE3NSwgODMsIDIzNSwgNjUsIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjU0LCAxNjksIDY1LCAyNDksIAotICAgIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMTcsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAxMzMsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyNDMsIDIzNywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDI0NCwgNTAsIDY1LCAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMjAsIDUzLCA2NSwgMjQ5LCAxNzksIDIyNSwgCi0gICAgMTY1LCAyNTAsIDE3NSwgMjIxLCA0MywgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIDI0NSwgMTUwLCA2NSwgCi0gICAgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI5LCAzMSwgNjUsIDI0OSwgMTc5LCAyMjUsIDE2NSwgMjUwLCAxNzUsIAotICAgIDIxNywgMjAxLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjM1LCAxMzcsIDY1LCAyNDksIDE3OSwgMjI1LCAKLSAgICAxNjUsIDI1MCwgMTc1LCAyMzQsIDQwLCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgMjI0LCAxNjAsIDY1LCAKLSAgICAyNDksIDE3OSwgMjI1LCAxNjUsIDI1MCwgMTc1LCAyMzQsIDg4LCA2NSwgMjQ5LCAxNzksIDIyNSwgMTY1LCAyNTAsIDE3NSwgCi0gICAgNjcsIDIzNSwgNjUsIDIxLCAyMTIsIDgwLCAyNDMsIDIwMCwgMjE5LCA2OSwgMjEsIDIxMiwgODAsIDI0OSwgMTU3LCAyMSwgCi0gICAgMTIyLCAyNDksIDE1NywgMjEsIDExNywgMjQ5LCAxNTcsIDIxLCAxMzMsIDI0OSwgMTU3LCAyMSwgMjQzLCAyMzcsIDI0OSwgCi0gICAgMTU3LCAyMSwgMjQ0LCA1MCwgMjQ5LCAxNTcsIDIxLCAyMjAsIDUzLCAyNDksIDE1NywgMjEsIDIyMSwgNDMsIDI0OSwgMTU3LCAKLSAgICAyMSwgMjQ1LCAxNTAsIDI0OSwgMTU3LCAyMSwgMjI5LCAzMSwgMjQ5LCAxNTcsIDg2LCA3LCA2LCAxLCA2MSwgODYsIDcsIDYsIAotICAgIDEsIDI1MywgNzQsIDg2LCA3LCA2LCAxLCAyNTAsIDI1MiwgODYsIDcsIDYsIDEsIDI0OSwgMywgODYsIDcsIDYsIDEsIDc0LCAKLSAgICA4NiwgNywgNiwgMSwgMjQ0LCAyMzAsIDg2LCA3LCA2LCAxLCAyNDMsIDE3NywgODYsIDcsIDYsIDEsIDI0MiwgNDEsIDg2LCAKLSAgICA3LCA2LCAxLCA3MiwgODYsIDcsIDYsIDEsIDIzNSwgMTQyLCA4NiwgNywgNiwgMSwgMjM1LCAyNywgODYsIDcsIDYsIDEsIAotICAgIDE1MCwgODYsIDcsIDYsIDEsIDE4MywgODYsIDcsIDYsIDEsIDIwNCwgODYsIDcsIDYsIDEsIDc1LCA4NiwgNywgNiwgMSwgCi0gICAgMjI2LCAyMjksIDg2LCA3LCA2LCAxLCAyMjQsIDI0MCwgODYsIDcsIDYsIDEsIDE0OSwgODYsIDcsIDYsIDEsIDE5NywgODYsIAotICAgIDcsIDYsIDEsIDIxOCwgOTksIDg2LCA3LCA2LCAxLCA2OSwgODYsIDcsIDYsIDEsIDIxNSwgNzksIDg2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCA4NiwgNywgNiwgMSwgMjEzLCAxNjYsIDg2LCA3LCA2LCAxLCAyMTMsIDEwNSwgODYsIDcsIDYsIDEsIDIxMiwgCi0gICAgMTUyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDcsIDYsIDEsIDE5NywgMzYsIDMyLCA3LCA2LCAxLCAyNTAsIAotICAgIDI1MiwgMzYsIDMyLCA3LCA2LCAxLCAxNDksIDM2LCAyNTAsIDEyNSwgMzYsIDIxMywgMTY4LCA5MSwgNywgNiwgMSwgNjEsIAotICAgIDkxLCA3LCA2LCAxLCAyNTMsIDc0LCA5MSwgNywgNiwgMSwgMjUwLCAyNTIsIDkxLCA3LCA2LCAxLCAyNDksIDMsIDkxLCA3LCAKLSAgICA2LCAxLCA3NCwgOTEsIDcsIDYsIDEsIDI0NCwgMjMwLCA5MSwgNywgNiwgMSwgMjQzLCAxNzcsIDkxLCA3LCA2LCAxLCAyNDIsIAotICAgIDQxLCA5MSwgNywgNiwgMSwgNzIsIDkxLCA3LCA2LCAxLCAyMzUsIDE0MiwgOTEsIDcsIDYsIDEsIDIzNSwgMjcsIDkxLCA3LCAKLSAgICA2LCAxLCAxNTAsIDkxLCA3LCA2LCAxLCAxODMsIDkxLCA3LCA2LCAxLCAyMDQsIDkxLCA3LCA2LCAxLCA3NSwgOTEsIDcsIDYsIAotICAgIDEsIDIyNiwgMjI5LCA5MSwgNywgNiwgMSwgMjI0LCAyNDAsIDkxLCA3LCA2LCAxLCAxNDksIDkxLCA3LCA2LCAxLCAxOTcsIAotICAgIDkxLCA3LCA2LCAxLCAyMTgsIDk5LCA5MSwgNywgNiwgMSwgNjksIDkxLCA3LCA2LCAxLCAyMTUsIDc5LCA5MSwgNywgNiwgMSwgCi0gICAgMjE0LCA4MiwgOTEsIDcsIDYsIDEsIDIxMywgMTY2LCA5MSwgNywgNiwgMSwgMjEzLCAxMDUsIDkxLCA3LCA2LCAxLCAyMTIsIAotICAgIDE1MiwgOTEsIDI0MCwgMTkzLCA5MSwgMjMwLCAxMjAsIDkxLCAyMjIsIDEwMiwgOTEsIDIxOSwgMTU4LCA5MSwgMjI1LCA5OCwgCi0gICAgOTEsIDIxNCwgNywgMTQ2LCAzNiwgNywgNiwgMSwgNjEsIDE0NiwgMzYsIDcsIDYsIDEsIDI1MywgNzQsIDE0NiwgMzYsIDcsIAotICAgIDYsIDEsIDI1MCwgMjUyLCAxNDYsIDM2LCA3LCA2LCAxLCAyNDksIDMsIDE0NiwgMzYsIDcsIDYsIDEsIDc0LCAxNDYsIDM2LCAKLSAgICA3LCA2LCAxLCAyNDQsIDIzMCwgMTQ2LCAzNiwgNywgNiwgMSwgMjQzLCAxNzcsIDE0NiwgMzYsIDcsIDYsIDEsIDI0MiwgNDEsIAotICAgIDE0NiwgMzYsIDcsIDYsIDEsIDcyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMzUsIDE0MiwgMTQ2LCAzNiwgNywgNiwgMSwgMjM1LCAKLSAgICAyNywgMTQ2LCAzNiwgNywgNiwgMSwgMTUwLCAxNDYsIDM2LCA3LCA2LCAxLCAxODMsIDE0NiwgMzYsIDcsIDYsIDEsIDIwNCwgCi0gICAgMTQ2LCAzNiwgNywgNiwgMSwgNzUsIDE0NiwgMzYsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDM2LCA3LCA2LCAxLCAyMjQsIAotICAgIDI0MCwgMTQ2LCAzNiwgNywgNiwgMSwgMTQ5LCAxNDYsIDM2LCA3LCA2LCAxLCAxOTcsIDE0NiwgMzYsIDcsIDYsIDEsIDIxOCwgCi0gICAgOTksIDE0NiwgMzYsIDcsIDYsIDEsIDY5LCAxNDYsIDM2LCA3LCA2LCAxLCAyMTUsIDc5LCAxNDYsIDM2LCA3LCA2LCAxLCAKLSAgICAyMTQsIDgyLCAxNDYsIDM2LCA3LCA2LCAxLCAyMTMsIDE2NiwgMTQ2LCAzNiwgNywgNiwgMSwgMjEzLCAxMDUsIDE0NiwgMzYsIAotICAgIDcsIDYsIDEsIDIxMiwgMTUyLCAxNDYsIDkxLCA3LCA2LCAxLCA2MSwgMTQ2LCA5MSwgNywgNiwgMSwgMjUzLCA3NCwgMTQ2LCAKLSAgICA5MSwgNywgNiwgMSwgMjUwLCAyNTIsIDE0NiwgOTEsIDcsIDYsIDEsIDI0OSwgMywgMTQ2LCA5MSwgNywgNiwgMSwgNzQsIAotICAgIDE0NiwgOTEsIDcsIDYsIDEsIDI0NCwgMjMwLCAxNDYsIDkxLCA3LCA2LCAxLCAyNDMsIDE3NywgMTQ2LCA5MSwgNywgNiwgMSwgCi0gICAgMjQyLCA0MSwgMTQ2LCA5MSwgNywgNiwgMSwgNzIsIDE0NiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQyLCAxNDYsIDkxLCA3LCA2LCAKLSAgICAxLCAyMzUsIDI3LCAxNDYsIDkxLCA3LCA2LCAxLCAxNTAsIDE0NiwgOTEsIDcsIDYsIDEsIDE4MywgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjA0LCAxNDYsIDkxLCA3LCA2LCAxLCA3NSwgMTQ2LCA5MSwgNywgNiwgMSwgMjI2LCAyMjksIDE0NiwgOTEsIDcsIDYsIAotICAgIDEsIDIyNCwgMjQwLCAxNDYsIDkxLCA3LCA2LCAxLCAxNDksIDE0NiwgOTEsIDcsIDYsIDEsIDE5NywgMTQ2LCA5MSwgNywgNiwgCi0gICAgMSwgMjE4LCA5OSwgMTQ2LCA5MSwgNywgNiwgMSwgNjksIDE0NiwgOTEsIDcsIDYsIDEsIDIxNSwgNzksIDE0NiwgOTEsIDcsIAotICAgIDYsIDEsIDIxNCwgODIsIDE0NiwgOTEsIDcsIDYsIDEsIDIxMywgMTY2LCAxNDYsIDkxLCA3LCA2LCAxLCAyMTMsIDEwNSwgCi0gICAgMTQ2LCA5MSwgNywgNiwgMSwgMjEyLCAxNTIsIDI0OSwgNjgsIDE0NiwgOTEsIDcsIDYsIDEsIDIyNiwgMjI5LCAxNDYsIDkxLCAKLSAgICAyNDAsIDEwNiwgMTQ2LCA5MSwgMTkzLCAxNDYsIDkxLCAyMjIsIDIwMiwgMTQ2LCA5MSwgMjU0LCAxODUsIDE0NiwgOTEsIAotICAgIDIxNCwgNywgNDEsIDI0NywgMTE2LCA5MSwgMjQ5LCAyMTYsIDkxLCAyNDksIDEwOSwgOTEsIDI0MywgMjIyLCA5MSwgMjQwLCAKLSAgICA5OCwgOTEsIDIyOSwgMTY4LCA5MSwgMjI5LCAxNjEsIDkxLCAyMjcsIDgwLCA5MSwgMjE5LCAyMjIsIDkxLCAxMTQsIDIsIAotICAgIDI0NCwgMjU0LCA3NywgOTEsIDIxNCwgMTAwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA2MSwgMjIzLCAyNTMsIDIzNSwgCi0gICAgMjM2LCAxNiwgMSwgMjUzLCA3NCwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjUwLCAyNTIsIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDI0OSwgMywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzQsIDIyMywgMjUzLCAyMzUsIDIzNiwgCi0gICAgMTYsIDEsIDI0NCwgMjMwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyNDMsIDE3NywgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgMjQyLCA0MSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgNzIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIzNSwgMTQyLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAyMzUsIDI3LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAxNTAsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDE4MywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjA0LCAyMjMsIAotICAgIDI1MywgMjM1LCAyMzYsIDE2LCAxLCA3NSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjI2LCAyMjksIDIyMywgMjUzLCAKLSAgICAyMzUsIDIzNiwgMTYsIDEsIDIyNCwgMjQwLCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAxNDksIDIyMywgMjUzLCAyMzUsIAotICAgIDIzNiwgMTYsIDEsIDE5NywgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjE4LCA5OSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAKLSAgICAxNiwgMSwgNjksIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxNSwgNzksIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIAotICAgIDIxNCwgODIsIDIyMywgMjUzLCAyMzUsIDIzNiwgMTYsIDEsIDIxMywgMTY2LCAyMjMsIDI1MywgMjM1LCAyMzYsIDE2LCAxLCAKLSAgICAyMTMsIDEwNSwgMjIzLCAyNTMsIDIzNSwgMjM2LCAxNiwgMSwgMjEyLCAxNTIsIDQxLCAxNDIsIDI0MSwgNDksIDkxLCA1NiwgCi0gICAgMjM0LCAyNywgOTEsIDU2LCAyMjIsIDIwMiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQzLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNDcsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1NSwgOTEsIDU2LCAyNDgsIDQxLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgCi0gICAgNjIsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0OSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDIxLCA5MSwgOSwgMjE1LCAxNDgsIAotICAgIDIzOCwgNDgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM1LCA5MSwgOSwgMjE1LCAKLSAgICAxNDgsIDIzOCwgMjgsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAzNywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU4LCA5MSwgOSwgCi0gICAgMjE1LCAxNDgsIDIzOCwgNDQsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MCwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM2LCAKLSAgICA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNTksIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAyMiwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIAotICAgIDI3LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA1MCwgOTEsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDUyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA0MSwgOTEsIDksIDIxNSwgCi0gICAgMTQ4LCAyMzgsIDM5LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNjUsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2NCwgOTEsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDE4LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDUsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCA2MywgCi0gICAgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDU0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgNDAsIDkxLCA5LCAyMTUsIDE0OCwgMjM4LCAKLSAgICAxOSwgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDQyLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjQsIDkxLCA5LCAyMTUsIDE0OCwgCi0gICAgMjM4LCAyMywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUzLCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMzEsIDkxLCA5LCAyMTUsIAotICAgIDE0OCwgMjM4LCAzMywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDM0LCA5MSwgOSwgMjE1LCAxNDgsIDIzOCwgMjYsIDkxLCA5LCAKLSAgICAyMTUsIDE0OCwgMjM4LCA1NywgOTEsIDksIDIxNSwgMTQ4LCAyMzgsIDUxLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIAotICAgIDksIDIxNSwgMTQ4LCAyMzgsIDMyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDY0LCAKLSAgICAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDYyLCAyMTYsIDIxOSwgMjIwLCAyMzMsIAotICAgIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDQ2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAKLSAgICAyMzgsIDI5LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDQyLCAyMTYsIDIxOSwgCi0gICAgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDI1LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIAotICAgIDIxNSwgMTQ4LCAyMzgsIDU2LCAyMTYsIDIxOSwgMjIwLCAyMzMsIDI1MSwgODQsIDksIDIxNSwgMTQ4LCAyMzgsIDM4LCAzNiwgCi0gICAgMTQzLCAyNTQsIDE1MCwgMzYsIDE0MywgMjU0LCAxNzIsIDI0OSwgMTQsIDI0NCwgMTEsIDI0OSwgMTkzLCAyMTUsIDE2NCwgCi0gICAgMjI5LCA0NCwgMiwgMjE5LCA5MiwgMjE4LCAyMzMsIDExMCwgMjMwLCAxODQsIDIxOCwgMjMyLCAyNDksIDIxOSwgMjUzLCAKLSAgICAxMjMsIDI0NiwgOSwgMjE4LCAyMzEsIDExMCwgMjUxLCA0NywgMjI0LCA0OSwgMjUxLCA2OCwgMjUzLCAxMjMsIDIyOSwgNDMsIAotICAgIDIxNCwgMjUsIDIxNCwgMTksIDIxNCwgMTEyLCAyMzEsIDgsIDIxNCwgOSwgMjQ1LCAxODAsIDI0MiwgMTU3LCAyNDUsIDEyLCAKLSAgICAyNDUsIDE4MCwgMjQyLCAxNTcsIDI1NCwgMzcsIDI0NSwgMTgwLCAyNDIsIDE1NywgMjUzLCAxNDAsIDI0MiwgMTU3LCAyLCAKLSAgICAyMzEsIDExNSwgMTU2LCAyMzAsIDE5OSwgODcsIDIxNCwgMTEsIDI0OSwgNzcsIDIzMCwgMTk5LCA4NywgMjQ0LCA2MSwgCi0gICAgMjI0LCAxNjcsIDIzMCwgMTk5LCA4NywgMjE0LCAxMSwgMjQyLCAxODYsIDIzMCwgMTk5LCA4NywgMjQzLCAyMDAsIDIzMCwgCi0gICAgMTk5LCA4NywgMjE0LCAzNiwgMjQyLCAxODYsIDIzMCwgMTk5LCA4NywgMjMzLCAxMDMsIDIyNCwgMTY3LCAyMzAsIDE5OSwgCi0gICAgODcsIDIxNCwgMzYsIDI0OSwgNzcsIDIzMCwgMTk5LCA4NywgMjQ5LCA3NywgMjMwLCAxOTgsIDE1NiwgMjMwLCAxOTksIDIsIAotICAgIDI0NCwgMTU4LCAyNDQsIDYxLCAyMjQsIDE2NywgMjMwLCAxOTksIDIsIDI0NCwgMTU4LCAyMzMsIDEwMywgMjI0LCAxNjcsIAotICAgIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjQzLCAyMDAsIDIzMCwgMTk5LCAyLCAyNDQsIDE1OCwgMjE4LCAyMzksIDIsIDI0NCwgCi0gICAgMTU4LCAyNDIsIDE1NSwgMjE5LCA5NSwgMjIwLCAxNzksIDIxOSwgOTUsIDI1MCwgNTMsIDIyMiwgODcsIDI0NSwgNiwgMjE2LCAKLSAgICAxOTMsIDI0OCwgMzUsIDIxNiwgMTkzLCAyMjYsIDE4NiwgMjE2LCAxOTMsIDI1MCwgMjEzLCAyMTYsIDczLCAyNTAsIDU1LCAKLSAgICAyNTEsIDEzMywgMjIzLCA5MywgMjQxLCAxNjQsIDIxOCwgMjM2LCAyNTEsIDEzMywgMjQ1LCAxODQsIDY1LCAyMzIsIDAsIAotICAgIDI0NSwgMTg0LCA2NSwgMjIzLCAxODQsIDI0MSwgMTg4LCAyNDMsIDIzNywgMjMzLCA3OCwgMjQ5LCAxODMsIDIzMSwgMjMzLCAKLSAgICAyMzMsIDc3LCAyNDQsIDE0NCwgMjMzLCA3NywgMjMzLCA3OCwgMjQ0LCAxNiwgMjM1LCAyNTIsIDIxMywgMjI0LCAyMzAsIAotICAgIDEyOCwgMjE2LCAyNDUsIDI1MywgMTA3LCAyNDIsIDExOSwgMjMxLCAxMzEsIDIxNCwgMjMsIDIxOCwgOCwgMjMzLCA1MCwgCi0gICAgMjUyLCA2OCwgMjI1LCAxOTQsIDIyNCwgNCwgMjUzLCAyMjMsIDI0MiwgMTA0LCAyNTMsIDIyMywgMjI2LCA5MiwgMjI2LCAKLSAgICA5MywgMjUwLCA1NiwgMjE5LCA1NCwgMjQyLCA2LCAyMjAsIDE4LCA2NSwgMjI1LCAxNzYsIDIzMSwgMTUyLCAyMjcsIDYzLCAKLSAgICAyNTEsIDExOSwgMjI1LCAxMDksIDIzMywgNjAsIDIyMywgMTg1LCAyNDksIDgyLCAyMjMsIDE4NSwgMjUyLCA3OCwgMjQ5LCAKLSAgICAxMTIsIDIyMywgMTg0LCAyNDksIDM2LCAyNCwgMjIzLCAxODQsIDIxOSwgODEsIDI1MSwgOTMsIDIxOSwgMjAyLCAyNTEsIAotICAgIDc4LCAyNDMsIDIyMSwgMjQzLCAyMTcsIDIyMywgMTA4LCAyMTgsIDE5MSwgMjI1LCAxMTEsIDI0OCwgMTIwLCAyMjcsIDEwMSwgCi0gICAgMjE4LCAyMDgsIDI0MywgMjE4LCAyMjAsIDE1NSwgMjQ0LCA2MCwgMjUwLCAyMDksIDIsIDIxOCwgMTg0LCAyNDcsIDI0MiwgCi0gICAgMjE5LCAyMzYsIDI0MCwgMTA1LCAyNDksIDgxLCAyMjAsIDI1MCwgMjQwLCAxMDQsIDI0MCwgMTA1LCAyNDksIDgxLCAyNDYsIAotICAgIDYyLCAyNDksIDExMSwgMjUwLCAyMSwgMTM0LCAyNTAsIDE4NiwgMjMyLCAxOTQsIDI0OSwgMzAsIDI0MSwgNDEsIDIyNSwgCi0gICAgMTEzLCAyMjAsIDE2NCwgMjUxLCAyMTMsIDI1MSwgODksIDIyNSwgMTE0LCA2NSwgMjQ0LCAyLCAyNDksIDExMCwgMjQzLCAKLSAgICAyNDksIDI0LCAyMzQsIDQxLCAyMTcsIDIyNywgMjEzLCAyMTYsIDI0MSwgMjUyLCAyMjIsIDE4MywgMjUxLCAxMDMsIDI0LCAKLSAgICAyNDksIDQzLCAyMTMsIDIyMiwgMjQyLCAxNjAsIDI0OSwgMTcyLCAyNDIsIDE2MCwgMjE2LCAxNTEsIDI0NiwgNDUsIDI1MSwgCi0gICAgMjM4LCAyMzAsIDE2MywgMjQ5LCAyMDAsIDI1MSwgMjM4LCAyMzAsIDE2MiwgMjUyLCAxMDQsIDI1MSwgMTAyLCAyMjMsIAotICAgIDE4NiwgMjEzLCAxODksIDIyNSwgNzUsIDI1MSwgMTU4LCAyNTAsIDIwOCwgMjM1LCAxMzYsIDI1MCwgMTQsIDIxNiwgMTkzLCAKLSAgICAyNDQsIDEzMCwgMjUwLCAxMywgMjQ0LCA2MywgMjQ0LCA2NCwgMjE5LCAyMDAsIDI1MiwgNzcsIDIyNiwgMTIyLCAyMjUsIAotICAgIDEyNCwgMjQ5LCAxNDMsIDI1MiwgNzgsIDIxOCwgMTAsIDIxNiwgMTkzLCAyNDksIDY4LCAyNDQsIDM2LCAyMjUsIDE5NSwgCi0gICAgMjQ4LCAzMiwgMjM1LCAxMzEsIDI0NywgODUsIDI1MCwgMTY0LCAyMTksIDUzLCAyMTMsIDIyNSwgMjUwLCAzNSwgMjMwLCAKLSAgICAxOTksIDIxNCwgMTQ0LCAyNTAsIDk2LCAyMjIsIDExNywgMjIyLCAxNDEsIDI0MiwgMTI0LCAyNTAsIDE4MywgMjUwLCAxNjUsIAotICAgIDI0MCwgMjMyLCAyNDQsIDk5LCAyMTMsIDI0MSwgMjIzLCAxMDIsIDI0OSwgMTczLCAyNDQsIDU1LCAyMjUsIDEzNiwgMjQsIAotICAgIDI0NCwgNTksIDIzMSwgNDAsIDIzMCwgMTc4LCAyNTAsIDE5OCwgMjQ5LCAyMzIsIDI0MSwgMjE2LCAyNTMsIDE1NiwgMjI2LCAKLSAgICAxODksIDIxNiwgMjI3LCAyNDEsIDIzNCwgMjQ5LCAyMjIsIDIxNywgMTk1LCAyMTcsIDY3LCAyNDksIDIxMywgMjUxLCAxMjUsIAotICAgIDIyNiwgNTIsIDI1MywgMTU1LCAyMTQsIDE1MCwgMjQzLCA4NiwgMjQ3LCAxNDksIDI0MSwgMTQyLCAyMjAsIDEyLCAyMzIsIAotICAgIDM5LCAyNTEsIDE2OCwgMjQzLCA4NywgMjQ3LCAxOTIsIDI1MSwgOTIsIDI0NCwgMjEsIDIyNSwgMTY1LCAyNTAsIDE3MywgCi0gICAgMjcsIDIyOCwgMTU4LCAyMzAsIDE1NSwgMjcsIDIyOCwgMTUzLCAyMjIsIDEzMCwgMjQyLCA4MCwgMjcsIDIzNCwgMTQzLCAKLSAgICAyMTYsIDE0OCwgMjE0LCAxMzUsIDI3LCAyMjIsIDExMSwgMjIzLCAzNSwgMjIwLCAxOTEsIDIsIDIyMiwgMTQzLCAyMTcsIAotICAgIDE5NywgMjI0LCA2OCwgMjQsIDI1MiwgNzgsIDIyMCwgMzMsIDI0LCAyMjAsIDMzLCAyNTEsIDExMiwgMjUyLCA0MywgMjQsIAotICAgIDI0MSwgMzYsIDI1MCwgNTcsIDI0NCwgNDIsIDIxOSwgMjQ3LCAyMjMsIDM2LCAyMTgsIDIxMiwgMjE2LCAxNTIsIDI0MCwgCi0gICAgMjMzLCAyMjQsIDY5LCAyNTQsIDM4LCAyNDQsIDAsIDIyMywgNDcsIDI0NCwgMCwgMjE4LCAxODYsIDI0MCwgMjIyLCAyNTEsIAotICAgIDQ4LCAyNDAsIDIyMiwgMiwgMjQzLCA3MCwgMjI3LCA5NSwgMjUxLCA0OCwgMjM1LCAxMzEsIDIyNSwgMTE5LCAyMjcsIDk0LCAKLSAgICAyNDUsIDExLCAyMjUsIDExOSwgMjI3LCA5NCwgMjQwLCAyMzEsIDI1MiwgNjQsIDI1MywgOTcsIDIxNywgMjA1LCAyMzIsIAotICAgIDM5LCAyNDAsIDIyNywgMjMyLCAxNjYsIDI0MCwgMjI3LCAyNDksIDExNSwgMjE5LCA2NSwgMjIyLCAxMTYsIDI0NywgMjUwLCAKLSAgICAyMTksIDY1LCAyNDQsIDE0OCwgMjM1LCAxNDcsIDIzMywgMTEzLCAyMzUsIDEzMSwgMjUwLCAxNTgsIDI0NSwgMTEsIDI1MCwgCi0gICAgMTU4LCAyMjQsIDMzLCAyMzAsIDE4MiwgMjI2LCAyMzgsIDIxNCwgMjUsIDI1MSwgNTIsIDI0OSwgODQsIDIxNywgNjAsIAotICAgIDIzMywgNDIsIDIyNCwgNzAsIDI1MCwgMTU2LCAyNDYsIDUwLCAyNDksIDc1LCAyMTMsIDI0NCwgMjE5LCAyNTQsIDIxOSwgCi0gICAgMjUyLCAyNDAsIDIzMiwgMjI0LCA0NSwgMjQyLCAxNDYsIDIyMCwgMjM3LCAyMzAsIDIxNSwgMjIzLCA5NiwgMjUwLCA0NSwgCi0gICAgMjQ3LCA5MCwgMjI1LCAyMDUsIDI1MSwgMTI2LCAyNDUsIDEyNiwgMjI3LCAxMDMsIDIxOSwgMTg0LCAyMjAsIDIzMiwgMjUxLCAKLSAgICA1MSwgMjU0LCAzLCAyNDEsIDQwLCAyMzMsIDE0NCwgMjUxLCAyMzYsIDI0NCwgNTksIDIxNiwgMTUxLCAyNDQsIDU5LCAyNTEsIAotICAgIDEzMiwgMjE2LCA1NSwgMjQxLCAyMzIsIDI1MCwgNDYsIDI1MiwgMTA0LCAyNTAsIDQ2LCAyNDMsIDIxMiwgMjUyLCAxMDQsIAotICAgIDI1MCwgNDYsIDI1MSwgMTYwLCAyMjYsIDcwLCAyMzQsIDM1LCAyMjUsIDEyOCwgMjQ2LCA0MiwgMjUwLCAxOTksIDI1MiwgCi0gICAgOTUsIDI1MCwgMTk5LCAyNDcsIDg0LCAyMzAsIDE4MywgMjQ0LCAxNTgsIDI0OSwgODUsIDI0NCwgMTU4LCAyMTcsIDYxLCAKLSAgICAyNDQsIDE1OCwgMjI0LCA3MSwgMjQ0LCAxNTgsIDI1MCwgMTU3LCAyNDQsIDE1OCwgMjQ2LCA1MSwgMjQ0LCAxNTgsIDIxOSwgCi0gICAgMTczLCAyMTMsIDI0NCwgMjQwLCAyMzMsIDI0NCwgMTU4LCAyMzAsIDIxNiwgMjQ0LCAxNTgsIDI0NywgOTEsIDI0NCwgMTU4LCAKLSAgICAyMjUsIDIwNiwgMjQ0LCAxNTgsIDI0MywgMjE1LCAyNDQsIDE1OCwgMjQyLCAzLCAyNDQsIDE1OCwgMjEzLCAyMTEsIDI0NCwgCi0gICAgMTU4LCAyNTEsIDI0NywgMjQ0LCAxNTgsIDIyNiwgMTcyLCAyNDQsIDE1OCwgMjI1LCAyMDYsIDIyOCwgMTY0LCAyMjYsIAotICAgIDEwNiwgMjI1LCA2NywgMjQ0LCAyMzcsIDI0NSwgMTgzLCAyMjgsIDE2NCwgMjMwLCAxODAsIDIxNiwgMjMyLCA2NywgMTE0LCAKLSAgICAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCAxMTksIDIyNSwgMTQxLCAyNTIsIDk5LCAyMzUsIDIzOSwgNjcsIAotICAgIDQyLCAyMjUsIDE0MSwgMjUyLCA5OSwgMjM1LCAyMzksIDY3LCA0NiwgMjI1LCAxNDEsIDI1MiwgOTksIDIzNSwgMjM5LCAKLSAgICAyNDQsIDUzLCAyNDEsIDI1NSwgNTIsIDIxNCwgMTcsIDI0MSwgMjU1LCA1MiwgMjI3LCA4MSwgMjQxLCAyNTUsIDUyLCAyMTcsIAotICAgIDg5LCAxMTQsIDUyLCAyMTcsIDg5LCAxMTksIDUyLCAyNDksIDIxMiwgMjQxLCAyNTAsIDUyLCAyMjcsIDQwLCAyNDEsIDI1MCwgCi0gICAgNTIsIDI0OSwgNjMsIDIxMywgMjA3LCAyNDEsIDIzNCwgMjQ0LCAyMzgsIDIyOSwgMTg1LCAyMTgsIDk4LCAyMzUsIDEyNiwgCi0gICAgMjQ2LCA0NywgMjM0LCA5MSwgMjUxLCAxNzAsIDIxMywgMjA3LCAyNDksIDE4NiwgMjI1LCAxNCwgMjQxLCAyNTMsIDIyNSwgCi0gICAgMTEwLCAyMzEsIDI0MCwgMjIwLCAxODQsIDI1MywgMTE5LCAyMjAsIDE4NCwgMjQxLCAxNTAsIDIyMCwgMTg0LCAyMTMsIAotICAgIDIwNywgMjIyLCAxNTYsIDIxMywgMjA3LCAyNTEsIDExMSwgMjQzLCAyNTQsIDI1MSwgMTksIDIzNSwgMjUyLCAyMjAsIDk1LCAKLSAgICAyNTEsIDE4LCAyMzUsIDI1MiwgMjIwLCA5NSwgMjUxLCA4OCwgMjQyLCAxNzAsIDIzMSwgMjQ4LCAyMTMsIDIwOCwgMjQ0LCAKLSAgICAxNDIsIDIzMSwgMjQ5LCAyNCwgMjEzLCAyMDksIDI0MSwgNDYsIDI0MSwgMjQ5LCAxMTcsIDIzMSwgMTIzLCAyNDEsIDQ2LCAKLSAgICAyNDEsIDI0OSwgMTE3LCAyMTMsIDIwNiwgMjQxLCA0NiwgMjQxLCAyNDksIDIyNSwgMTMzLCAyMjcsIDkzLCAyMTMsIDIwOSwgCi0gICAgMiwgMjUxLCAzNSwgMjQ1LCAxODEsIDI1MSwgNjksIDIsIDIxNCwgMjIzLCAyMjYsIDQ0LCAyLCAyNTEsIDEzNSwgMjQyLCAKLSAgICAxNiwgMjMxLCAyNDksIDIsIDI0MiwgODksIDIyNSwgMjQxLCAyMzEsIDIzNywgMjMxLCAyNDksIDIsIDIxNiwgNjEsIDIyNywgCi0gICAgNzQsIDIzMSwgMjQ4LCAyMjcsIDc0LCAyMTMsIDIwOCwgMjUyLCAxMDMsIDI0OSwgMTI5LCAyMTMsIDE5MiwgMjI1LCA3MCwgCi0gICAgMjM1LCAxMzEsIDIyNywgODksIDIzNSwgMTMxLCAyNDIsIDE0NSwgMjQyLCAxOTgsIDI1MiwgMTA0LCAyNTQsIDIyLCAyNDQsIAotICAgIDI0MiwgMjU0LCA2OSwgMjU0LCA3MCwgMjMwLCAyMDYsIDIzNiwgMSwgMjIwLCAyOCwgMjM1LCAyMjksIDI0NywgMjQxLCAKLSAgICAyMjYsIDQzLCAyNDIsIDg2LCAyNDgsIDEyNCwgMjMyLCAyMzAsIDIzMCwgMzAsIDIyNSwgMTMyLCAyNDQsIDE1OSwgMjMxLCAKLSAgICAyMDUsIDI0MiwgMTUsIDI1MiwgNTgsIDIyNSwgMTM1LCAyMTgsIDExNywgMjI1LCAxOTgsIDIzNCwgNzMsIDc3LCAyMzIsIAotICAgIDE2NiwgMjMzLCAzNCwgMjIzLCAxMzAsIDI0MywgMzAsIDIxOSwgNzEsIDIzNCwgNzIsIDI1MSwgOTcsIDI0OSwgODcsIDIsIAotICAgIDI0MSwgMjExLCAyMTQsIDMsIDI1MSwgMjQ1LCAyNDEsIDIxMSwgMjUxLCA2MywgMjQxLCAyMTEsIDExNywgMjQxLCAyMDksIAotICAgIDIxOSwgMTk4LCAyNDEsIDIxMSwgMjQyLCA5OCwgMjQxLCAyMTEsIDI0MSwgMjEyLCAyLCA2OCwgMjUxLCAxMzEsIDI0MSwgCi0gICAgMjExLCAyNDIsIDEwNCwgMjQxLCAyMTEsIDIxMywgMzMsIDI0MSwgMjExLCAyMjUsIDE1LCAyNDEsIDIxMSwgMjQxLCAyMTIsIAotICAgIDIsIDIyMywgMTg2LCAyMjMsIDE5NywgMjQxLCAyMDksIDI0MSwgMjEyLCAyNDgsIDMyLCAyNDcsIDIwMSwgMjIxLCA1LCAyLCAKLSAgICAxMTgsIDYyLCAyMzUsIDIxMiwgMjQ1LCAxMjksIDE3NywgMjUxLCA0NSwgMjU0LCAyMSwgODcsIDI1MSwgMTIwLCAyMjAsIAotICAgIDIwLCA4NywgMjQ5LCAxNjYsIDg3LCAyMTksIDE3OCwgMjE4LCAxOTMsIDg3LCAyNDYsIDQwLCAyNDgsIDEwMiwgODcsIDIyNSwgCi0gICAgMTk5LCA2NSwgMjI1LCAxMjksIDI0NCwgMzAsIDI1MSwgMTgxLCAyNDcsIDExNywgODcsIDIxOSwgMTkxLCAyNTIsIDc3LCAKLSAgICAyMTcsIDEwMiwgMjUyLCA3NywgNjcsIDI0NCwgMjAsIDI0MCwgMjAxLCAyMjUsIDEzOSwgODcsIDIzMCwgMjE5LCAyNTIsIAotICAgIDkwLCAyNDksIDM5LCAyNDQsIDI1NSwgMTA3LCAyNDcsIDg2LCA1MiwgMjQ5LCA3OSwgMjUwLCAxNzQsIDI1MiwgNjMsIDIsIAotICAgIDIxMywgMzEsIDUyLCAyNTIsIDYzLCAyLCAyNDcsIDg2LCA1MiwgMjUyLCA2MywgMiwgMjQ1LCAxNCwgNTIsIDI1MiwgNjMsIAotICAgIDIsIDIyNSwgMTA4LCA1MiwgMjMwLCAyMTksIDIsIDIxMywgMjIwLCAyNTAsIDc0LCAyLCAyMTUsIDEyNCwgMjE2LCAxODksIAotICAgIDI0LCAyMTMsIDMxLCA1MiwgMjIyLCA5NywgMjI2LCA0MiwgMjQ5LCAxNDcsIDI1MSwgNjcsIDIzMCwgMjU1LCAyNDQsIDI1LCAKLSAgICAyNDcsIDEzNywgMjI3LCAyNywgMjQ3LCAxNDIsIDI0NiwgNCwgMjQ0LCA3NiwgMjQ0LCA5LCAyMjcsIDQwLCAyNDQsIDc2LCAKLSAgICAyNDQsIDksIDIyNiwgMjAxLCAyLCAyNDksIDQxLCAyMjYsIDIwMSwgMjQ0LCAxNTEsIDIxNSwgMTM0LCAyNTAsIDIwNCwgCi0gICAgMjE3LCAyMjYsIDI1MCwgMjA0LCAyNTAsIDE3NSwgMjM1LCAyMzksIDI1MCwgNzQsIDIsIDIxNSwgMTI0LCAyMTYsIDE4OCwgCi0gICAgMjUwLCA3NCwgMiwgMjQ2LCA1OCwgMjE2LCAxODgsIDI1MiwgNjAsIDI1MCwgNzMsIDI0OSwgMTk5LCAyMjUsIDEwLCAyMjMsIAotICAgIDg3LCAyMjUsIDEwLCAyMjYsIDE0NywgMjE5LCA2MSwgMjIzLCA0MiwgMjE2LCAxODAsIDIyMywgNDIsIDI1MSwgMTE2LCAKLSAgICAyMTgsIDM5LCAyMzMsIDc1LCAyMjgsIDE1NiwgMjI4LCAxNTcsIDIsIDI0OCwgMzEsIDI0OSwgODYsIDI0OSwgMTkzLCAyNTEsIAotICAgIDExNywgMjI3LCA0MCwgMjUxLCAxMTcsIDI0MiwgMTA0LCAyNTEsIDExNywgMjUxLCAxMzEsIDI1MSwgMTE3LCAyMjcsIDIzLCAKLSAgICAyNTEsIDExNywgMjUxLCAxMTQsIDIzMCwgMjUsIDI1MiwgOTMsIDIyMiwgMTA1LCAyMzEsIDEyNCwgMjE3LCAyMTAsIDIyNCwgCi0gICAgMTYsIDIyNiwgMTk5LCAyNDQsIDEyNywgMjMyLCAzOSwgMjIyLCAxNDAsIDI1NCwgMCwgMjI1LCAzMSwgMjU0LCAxNTcsIAotICAgIDIzMiwgMTY4LCAyNTAsIDYzLCAyMzEsIDEzNiwgMjI2LCAyNTMsIDIxNiwgMTk2LCAyMzUsIDI0OCwgMjE2LCAxOTYsIDIyNiwgCi0gICAgMjA2LCAyNDUsIDIzNiwgODcsIDIzNSwgMjQ1LCAyNDUsIDc4LCAyNDUsIDc5LCAyLCAyNDYsIDU4LCA3NiwgNDksIDI0OSwgCi0gICAgMTkzLCAyMzIsIDYsIDIsIDIzMiwgMTYyLCAyNDQsIDQyLCAyNDksIDE5MywgMjMyLCA2LCAyLCAyMjQsIDQ4LCAyNDQsIDQyLCAKLSAgICAyMjcsIDQwLCAyMzIsIDYsIDIsIDIyNCwgNDgsIDI0NCwgNDIsIDIyNywgNDAsIDIzMiwgNiwgMiwgMjMyLCAxNjIsIDI0NCwgCi0gICAgNDIsIDIyNSwgMTE2LCAyMjUsIDExNywgMjQwLCAyMzUsIDIyOSwgMTY2LCAyMzAsIDIyOSwgMjI1LCAyNDksIDIzMCwgMjI5LCAKLSAgICAyMjUsIDI1MCwgMiwgOTUsIDc2LCAyNTMsIDEyMywgMjMzLCA3MCwgMjE0LCAxNTMsIDIzMCwgMjI4LCAyMzAsIDIyOSwgCi0gICAgMjI1LCAyNTAsIDIyNywgOTYsIDIyOCwgMTg2LCAyMzAsIDIyOSwgMjI1LCAyNDgsIDI1NCwgMSwgMiwgMjUyLCA0OSwgMjUwLCAKLSAgICAxOTgsIDIxNCwgMTUwLCAyNTAsIDE5OCwgMjE3LCAyMDcsIDIyNCwgNjMsIDIxNCwgMTQ5LCAyMTYsIDI1LCA5NSwgMjUzLCAKLSAgICAxNjIsIDI0OSwgMTk1LCA5NSwgMjQsIDEzMiwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAyNDksIDE5NSwgOTUsIAotICAgIDI0LCAxMzIsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MywgMiwgMzYsIDEyMiwgMjI2LCAyNDQsIDI0OSwgMTk1LCAKLSAgICAyNDYsIDU4LCAyNCwgMjE1LCAxMjQsIDIyNywgNDAsIDI0OSwgMjI5LCAyNTMsIDE2MiwgMjUzLCAyNTUsIDI0NiwgNTgsIAotICAgIDI0LCAyMTUsIDEyNCwgMjI3LCA0MCwgMjQ5LCAyMjksIDI1MywgMTYyLCAxMTUsIDI1MSwgNjYsIDg3LCAxMjQsIDI1MSwgCi0gICAgNjYsIDg3LCAyMTksIDE5NSwgMiwgMjUwLCAxOTIsIDkwLCAyMTksIDE5NCwgMjE5LCAxOTUsIDIsIDEyMiwgMjE5LCAyMTgsIAotICAgIDIxNCwgMTksIDIxOSwgMTk1LCAyLCAxMzMsIDIxOSwgMjE4LCAyMTQsIDE4LCAyNTIsIDM1LCAyNDUsIDEyOSwgMjI1LCAKLSAgICAxNjEsIDIzMywgNjYsIDIzMiwgMTYsIDI0MiwgMTYwLCAyMjMsIDE0NCwgMjMyLCAxNiwgMjQyLCAxNjAsIDIzMiwgMjA0LCAKLSAgICAyLCAyMzUsIDIyMiwgMjI2LCA3NCwgMjQ5LCAxOTMsIDIzMiwgMjA0LCAyLCAyMzQsIDE0NCwgMjM0LCAxNDQsIDIzMiwgCi0gICAgMjAzLCAyMjcsIDQwLCAyMzIsIDIwMywgMjUxLCAyMjEsIDI1MSwgMjIyLCAyLCAyNTAsIDE5MiwgOTAsIDI1MSwgMTE1LCAKLSAgICAyMzIsIDIzMywgODcsIDIyNCwgNjQsIDI1MSwgMTUsIDI1MiwgMTAyLCAyLCAxMzIsIDc2LCA0OSwgMjQ1LCAxMDEsIDIsIAotICAgIDEzMiwgNzYsIDQ5LCAyMjcsIDYzLCAyLCAyNDQsIDI1NCwgMTUyLCAyLCA0MiwgNDYsIDc2LCA0OSwgMjE5LCAyMjUsIDIsIAotICAgIDk1LCA3NiwgNDksIDIxNiwgMjI3LCAyLCAyMTUsIDEyNCwgNzYsIDQ5LCAyMjgsIDE4NiwgMTIyLCAyMTUsIDE1NCwgMjQ1LCAKLSAgICAxNDgsIDg3LCAyMzQsIDE0MiwgMjE3LCAyMDAsIDIzNSwgMjE2LCAxNiwgMzEsIDcsIDYsIDIzMywgMzMsIDIzNSwgMjE2LCAKLSAgICAxNiwgMzEsIDcsIDMsIDIzMywgMzMsIDIzNSwgMjE2LCAxNiwgMzEsIDIyOCwgNTUsIDIzNSwgMjE2LCAxNiwgMzEsIDIxOCwgCi0gICAgMTI4LCAyMzUsIDIxNiwgMTYsIDMxLCA3LCAyMzMsIDMzLCAyNDQsIDY1LCAyNDUsIDEyOSwgMjE2LCAyMjIsIDIxMywgMTg3LCAKLSAgICAyNDIsIDQsIDIyOCwgMzgsIDI0LCAyNTEsIDEyMSwgMjQxLCA1MiwgMjI1LCAxODIsIDIzMSwgMzksIDIxNywgMjA4LCAyNDksIAotICAgIDU0LCAyNTIsIDc4LCAyMjAsIDUzLCAyMjUsIDE0MywgMjE5LCA5NiwgMiwgMjMxLCAzNywgMjQ3LCA3NCwgMjM1LCAxMzEsIAotICAgIDE2LCAzMSwgMjUxLCAyMzMsIDIxNiwgMTc4LCAyNDUsIDExNCwgODMsIDQxLCAyNTEsIDE1LCA2NywgNDEsIDI1MSwgMTUsIAotICAgIDIzMywgMTA4LCAyMjQsIDQsIDI0OSwgMjI4LCAyMzMsIDEwOCwgMjUxLCAxMzEsIDI0OSwgMjI4LCAyMzMsIDEwOCwgMjI3LCAKLSAgICAyMywgMjQ3LCAyMDAsIDIzMywgMTA4LCAyNTEsIDEzMSwgMjQ3LCAyMDAsIDMsIDIyNywgMjMsIDI0NywgMjAwLCAzLCAyNTEsIAotICAgIDEzMSwgMjQ3LCAyMDAsIDIxNSwgMTMzLCAyMjQsIDQsIDIxNiwgMTgzLCAyNDYsIDU5LCAyMjQsIDQsIDIxNiwgMTgzLCAKLSAgICAyMTUsIDEzMywgMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ2LCA1OSwgMywgMjI0LCA0LCAyMTYsIDE4MywgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAxMjIsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDExNywgMjI3LCAxMDYsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMTMzLCAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDMsIDIzNywgMjI3LCAxMDYsIDI0OSwgCi0gICAgMTk3LCAyNDQsIDE1OSwgMjQ0LCA1MCwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIwLCA1MywgMjI3LCAxMDYsIAotICAgIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjIxLCA0MywgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxNTAsIDIyNywgCi0gICAgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyOSwgMzEsIDIyNywgMTA2LCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNywgMjAxLCAKLSAgICAyMjcsIDEwNiwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDEyNSwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgCi0gICAgMjE2LCA0MiwgMjI3LCAxMDYsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI3LCA1OCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMTYsIAotICAgIDIyLCAyNDksIDE5NywgMjQ0LCAxNTksIDIxNywgOTQsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQzLCAyMzMsIDI0OSwgMTk3LCAKLSAgICAyNDQsIDE1OSwgMjQ0LCA0OCwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyMjAsIDQ5LCAyNDksIDE5NywgMjQ0LCAxNTksIDIyMSwgCi0gICAgNDIsIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjQ1LCAxNDksIDI0OSwgMTk3LCAyNDQsIDE1OSwgMjI5LCAzMCwgMjQ5LCAxOTcsIAotICAgIDI0NCwgMTU5LCAyMTcsIDE5OSwgMjQ5LCAxOTcsIDI0NCwgMTU5LCAyNDUsIDEyMywgMjQ5LCAxOTcsIDI0NCwgMTU5LCAKLSAgICAyMTYsIDQwLCAyMzAsIDE4NywgMjQzLCAyMDEsIDIxNiwgMjQ3LCAyMTYsIDIxNSwgMjE5LCA4OCwgNjUsIDIzMywgMTEsIAotICAgIDIyMCwgOTYsIDY1LCAyMzUsIDEzMiwgMjMwLCAxNzYsIDI0MiwgMTAyLCAyNDQsIDE1OSwgMiwgMjIwLCAyLCAyNDQsIDIzNywgCi0gICAgMjQ0LCAxNTksIDIsIDIxNywgMjIyLCA2NSwgMjM1LCA1NiwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAKLSAgICAxODAsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjIwLCAyLCAyNDQsIDIzNywgMjIwLCAKLSAgICAyLCAyNDQsIDE1OSwgMiwgMjI3LCA0MCwgMjMwLCAxODEsIDI0LCAyNDksIDE2OCwgMjE4LCAxOTIsIDIyMCwgMiwgMjQ0LCAKLSAgICAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjE3LCA1OCwgMjQ0LCAyMzcsIDIyMCwgMiwgMjQ0LCAxNTksIDIsIAotICAgIDI0MiwgOCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjQwLCAyMzQsIDIxMywgMjE4LCAyNDQsIDE1OCwgMjIwLCAyLCAyNDQsIAotICAgIDE1OSwgMiwgMjIwLCAyLCAyNDQsIDIzNywgMjQ0LCAxNTksIDIyMiwgMTM1LCAyNDgsIDEzLCAyNDQsIDIsIDIyMywgMjM4LCAKLSAgICAyNDQsIDE1OCwgMjIwLCAyLCAyNDQsIDE1OSwgMiwgMjQxLCAyMTAsIDI0NCwgMjM3LCAyMjAsIDIsIDI0NCwgMTU5LCAyLCAKLSAgICAyMTgsIDIzNCwgMjIwLCAxLCAyNDQsIDE1OCwgMjI5LCAxNjksIDI0NCwgMTU4LCAyMTUsIDE1OCwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTU5LCAyLCAyNDksIDE2OCwgMjE4LCAxOTIsIDIyNiwgNjcsIDI0NCwgMTU4LCAyNDksIDE0MSwgMjQ0LCAxNTgsIDI0NCwgCi0gICAgMTU5LCAyMTcsIDkxLCAxMTgsIDIzNCwgNzIsIDIzNCwgNzEsIDI0NCwgMTU5LCAyLCAyNDksIDE5MywgMjQ0LCAyMzcsIAotICAgIDI0NCwgMTU5LCAyLCAyMTksIDMxLCAyMTYsIDIzMywgMjQsIDIxMywgMjE4LCAyNDQsIDIzOSwgMjQ0LCAxNTksIDIsIDIxOSwgCi0gICAgMzEsIDIxNiwgMjMzLCAyNCwgMjE3LCA1OCwgMjQ0LCAyMzcsIDI0NywgMTQ0LCAyNDQsIDE1OCwgMjU0LCAxNywgMjQ0LCAKLSAgICAxNTgsIDIyNSwgMTA3LCAyNDQsIDE1OCwgMjQ5LCA1NiwgMjQ0LCAxNTgsIDIyNiwgNDYsIDI0NCwgMTU4LCAyNDQsIDE1OSwgCi0gICAgMiwgMjMyLCAxNzksIDY1LCAyMTYsIDE2MiwgMjQ3LCAxNDQsIDI1MSwgMTcsIDIyMywgMjM4LCAyNDQsIDE1OCwgMjQ0LCAKLSAgICAxMjEsIDI0NCwgMTU4LCAyMTQsIDQsIDI0NCwgMTU4LCAyMjAsIDE5LCAyNDQsIDE1OCwgMjE3LCAyNCwgMjQ0LCAxNTgsIAotICAgIDIzMiwgMTY5LCAyNDksIDU2LCAyNDQsIDE1OCwgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgxLCAyNCwgMjQ5LCAKLSAgICAxNjgsIDIxOCwgMTkyLCAyNDQsIDE1OSwgMjIyLCAxMDksIDIzNSwgMjUyLCAyNDQsIDEyMiwgMjUzLCAxMjksIDI0NCwgCi0gICAgMTU4LCAyNDQsIDE4LCAyNDQsIDE1OCwgMjQ3LCAxMTcsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMjEzLCAyMTYsIDIzMCwgMTgwLCAKLSAgICAyNDQsIDE1OSwgMiwgMjMxLCAxNDksIDIzMSwgMjA3LCAyNDIsIDEwMiwgMjUwLCAxNTcsIDI0NCwgMTU5LCAyLCAyMjAsIDIsIAotICAgIDI0NCwgMjM3LCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIxNywgMjIyLCA2NSwgMjM1LCA1NiwgMjIwLCAyLCAyNTAsIDE1NywgCi0gICAgMjQ0LCAxNTksIDIsIDIyNywgNDAsIDIzMCwgMTgwLCAyMjAsIDIsIDI1MCwgMTU3LCAyNDQsIDE1OSwgMiwgMjQxLCAyMTAsIAotICAgIDI0NCwgMjM3LCAyNTAsIDE1NywgMjQ0LCAxNTksIDIsIDIxMywgMTg0LCAyMjAsIDMsIDIzNCwgNzEsIDI1MCwgMTU3LCAKLSAgICAyNDQsIDE1OSwgMiwgMjQ5LCAxOTMsIDI0NCwgMjM3LCAyMjUsIDEwNywgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDksIDU2LCAKLSAgICAyNTAsIDE1NywgMjQ0LCAxNTgsIDIxNCwgNCwgMjUwLCAxNTcsIDI0NCwgMTU4LCAyNDQsIDE1OSwgMiwgMjI4LCAxODYsIAotICAgIDI0MiwgMTM5LCAyNDMsIDEwLCAyNDQsIDE1OSwgMiwgMjI3LCA4MSwgMjQzLCAxMCwgMjI2LCA0NCwgMjUxLCA5NCwgMjQ4LCAKLSAgICAyNiwgMjIyLCA4OCwgMjMwLCAyMTUsIDI0MSwgMjEzLCAyMzAsIDIxNSwgMjE5LCAxOTYsIDIzMCwgMjE1LCAyNDEsIDI0NCwgCi0gICAgMjI2LCA0NCwgMjI0LCA0NywgMTIyLCAyNDEsIDI1NCwgMjI2LCA0NCwgMjI0LCA0NywgMjUxLCAxMDQsIDI0MSwgMjUwLCAKLSAgICAyMzUsIDI1MiwgMjUwLCAxMTMsIDIyNiwgNDQsIDI0MywgMjA4LCAyMjYsIDQ0LCAyLCAyMjUsIDEwNywgMjQ0LCAxNTgsIAotICAgIDIyNiwgNDQsIDIsIDI0NCwgMTAsIDI0MSwgMjQ5LCAyMjMsIDEwNCwgMjQxLCAxOTgsIDIxOSwgODMsIDIzMiwgMjAyLCAKLSAgICAyMjQsIDUzLCAyNTAsIDE3NiwgMjQxLCAxNDgsIDIxNiwgMjA1LCAyNDEsIDE0OCwgMjE2LCAyMDYsIDIsIDI1MSwgNDMsIAotICAgIDIyOCwgMTY0LCAyMTYsIDIwNSwgMjMxLCA5OSwgMTc3LCAyMjQsIDU0LCAyMTksIDg5LCAyMTYsIDIwMywgMjE2LCAyMDQsIAotICAgIDI1MCwgMTc2LCAyNTEsIDIxLCAyMjcsIDYwLCAyNTEsIDIxLCAyMTYsIDE1OSwgMjUxLCAyMiwgMjE5LCA2OSwgMjMxLCAwLCAKLSAgICAyNTQsIDM5LCAyNDQsIDY2LCAyNDUsIDk1LCAyMjUsIDEzMywgMjUwLCAxNzYsIDIyNywgNjAsIDIyNSwgMTMzLCAyNTAsIAotICAgIDE3NiwgMjE3LCAyMzksIDIyNywgNjAsIDIxNywgMjM5LCAyNTMsIDk2LCAyMjcsIDYwLCAyNTMsIDk2LCAyMjQsIDExLCAKLSAgICAyMTQsIDIyNCwgMjQ4LCA5LCAyMTYsIDE1MCwgMjUzLCAxNTcsIDIzMiwgMTcyLCAyMTYsIDIxMSwgMjMwLCAyMDksIDIzMCwgCi0gICAgMTg2LCAyMjQsIDUyLCAyMTgsIDIwNywgMjI0LCA1MiwgMjMwLCAxODYsIDI1MCwgMjE0LCAyNTQsIDEzNCwgMjE2LCAyMDIsIAotICAgIDIyMCwgMTk2LCAyMjMsIDg0LCAyMTksIDE4OSwgMTk5LCAyMTYsIDIwOSwgMjMzLCAyLCA3MSwgMjE2LCAyMDksIDIzMywgMiwgCi0gICAgMjQ5LCAxMjksIDUyLCAyMjUsIDEzMywgMjUwLCAxNjEsIDIyMywgMTk3LCAyMzMsIDIsIDIxNiwgMTgwLCAyNDQsIDQzLCAKLSAgICAyMjcsIDYzLCAyMjUsIDExOCwgMjQ3LCA3NywgMjI4LCAxODYsIDI0NSwgODQsIDUyLCAyMjAsIDAsIDg3LCAyMjgsIDE4NiwgCi0gICAgMjIwLCAwLCA4NywgMjI1LCA5LCAyMzIsIDIyMiwgMjM1LCAyNTIsIDIzNSwgMTU1LCAyMjUsIDE3MywgODcsIDI0NywgMTAwLCAKLSAgICAyMjgsIDE2MywgMjMyLCAyMjIsIDg3LCAyMjUsIDExMiwgMjE0LCAyNSwgODcsIDIyOCwgMTc3LCAyMTQsIDI1LCA4NywgCi0gICAgMjUxLCAxODAsIDIyOCwgMTg2LCAyNTEsIDE3OSwgMjUxLCAxNzgsIDIzMCwgMTg2LCAyNTEsIDE3OCwgMjI2LCA4OCwgMjI4LCAKLSAgICAxODYsIDIyNiwgODcsIDI1MCwgMzcsIDI0OSwgNjQsIDIzMSwgMTIwLCA4NywgMjEzLCAyMDUsIDg3LCAyMjMsIDIxMSwgCi0gICAgMjUyLCAxMDQsIDg3LCAyMTYsIDI0OCwgMjE0LCAyNSwgMjQ5LCAxOTAsIDIyMCwgMTU4LCAyNTIsIDM4LCAyNTIsIDM2LCAKLSAgICAyMjYsIDExNSwgMjQ5LCAxMTYsIDI0OSwgMjgsIDI1MiwgODcsIDI0OSwgMjE1LCA0MiwgMjMyLCAxNDgsIDEwNCwgMTYsIAotICAgIDMxLCAyMjQsIDE0OCwgMTA0LCAxNiwgMzEsIDI1NCwgMTAwLCAxMDQsIDE2LCAzMSwgMjQ0LCA2NSwgMTA0LCAxNiwgMzEsIAotICAgIDI0NSwgMTc5LCAxMDQsIDE2LCAzMSwgMjE0LCAyNCwgMTA0LCAxNiwgMzEsIDI1MywgMjEzLCAxMDQsIDE2LCAzMSwgMjUzLCAKLSAgICAyMTQsIDIyMywgMjU1LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIDIyMywgMjU0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIAotICAgIDIxNCwgMTI0LCAxMDQsIDE2LCAzMSwgMjUzLCAyMTQsIDIxNCwgMTIzLCAxMDQsIDE2LCAzMSwgMjE0LCAxMzgsIDEwNCwgCi0gICAgMTYsIDMxLCAyMTQsIDEzNywgMTA0LCAxNiwgMzEsIDIxNCwgMTM2LCAxMDQsIDE2LCAzMSwgMjE4LCAyNDUsIDEwNCwgMTYsIAotICAgIDMxLCAyMjYsIDEsIDIxOCwgMjQ1LCAxMDQsIDE2LCAzMSwgODMsIDIxOCwgMjQ1LCAxMDQsIDE2LCAzMSwgMjMxLCAxMTksIAotICAgIDIxOSwgMTYsIDEwNCwgMTYsIDMxLCAyMzEsIDExOSwgMjE5LCAxNSwgMTA0LCAxNiwgMzEsIDIzMSwgMTE5LCAyMTksIDE0LCAKLSAgICAxMDQsIDE2LCAzMSwgMjQ5LCAyMzEsIDEwNCwgMTYsIDMxLCAyMjIsIDE3MiwgMTA0LCAxNiwgMzEsIDIyOSwgMTksIDEwNCwgCi0gICAgMTYsIDMxLCAyMTQsIDEyMiwgMTA0LCAxNiwgMzEsIDIxNCwgMTIxLCAxMDQsIDE2LCAzMSwgMjIzLCAxMDUsIDIyMiwgMTcyLCAKLSAgICAxMDQsIDE2LCAzMSwgMjIzLCAxMDUsIDIyMiwgMTcxLCAxMDQsIDE2LCAzMSwgMjQyLCAxNDIsIDEwNCwgMTYsIDMxLCAyMjAsIAotICAgIDkyLCAxMDQsIDE2LCAzMSwgMjM1LCAxNzUsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI3LCAxOSwgMTA0LCAKLSAgICAxNiwgMzEsIDI0OSwgNzQsIDY1LCAyMzUsIDE3NCwgMTA0LCAxNiwgMzEsIDIyMywgMjUxLCA2NSwgMjM1LCAxNzQsIDEwNCwgCi0gICAgMTYsIDMxLCAyNDksIDEwNywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIzNSwgMTczLCAyMjcsIDIwLCAxMDQsIDE2LCAzMSwgCi0gICAgMjE5LCAxNywgNjUsIDI0OSwgMTA2LCAxMDQsIDE2LCAzMSwgMjQ5LCA3NCwgNjUsIDI0OSwgMTA2LCAxMDQsIDE2LCAzMSwgCi0gICAgMjQ5LCA3NCwgNjUsIDI0OSwgMTA1LCAxMDQsIDE2LCAzMSwgMjQ5LCAxMDcsIDI1MywgMjUwLCAxMDQsIDE2LCAzMSwgMjIyLCAKLSAgICAxNzMsIDY1LCAyNDksIDEwNywgMjUzLCAyNTAsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCA2NSwgMjIyLCAxNzMsIDY1LCAyNDksIAotICAgIDEwNiwgMTA0LCAxNiwgMzEsIDIxNCwgMjIwLCAxMDQsIDE2LCAzMSwgMjE3LCAzNywgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIAotICAgIDIzMywgODEsIDIyNywgMjAsIDEwNCwgMTYsIDMxLCAyNTMsIDI0OSwgMjI3LCAyMCwgMTA0LCAxNiwgMzEsIDIxOSwgMTcsIAotICAgIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIyMiwgMTczLCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIDMxLCAyMTksIDE3LCAKLSAgICA2NSwgMjIyLCAxNzMsIDY1LCAyNTMsIDI0OCwgMTA0LCAxNiwgMzEsIDIxNCwgMTM5LCA2NSwgMjUzLCAyNDgsIDEwNCwgMTYsIAotICAgIDMxLCAyMjMsIDI1MSwgNjUsIDI1MywgMjQ4LCAxMDQsIDE2LCAzMSwgMjIzLCAyNTEsIDY1LCAyNTMsIDI0NywgMTA0LCAxNiwgCi0gICAgMzEsIDIyMywgMjUwLCAxMDQsIDE2LCAzMSwgMjIzLCAyNDksIDEwNCwgMTYsIDMxLCAyMjMsIDI0OCwgMTA0LCAxNiwgMzEsIAotICAgIDIyMywgMjQ3LCAxMDQsIDE2LCAzMSwgMjU0LCA2NiwgMTA0LCAxNiwgMzEsIDI1NCwgNjUsIDEwNCwgMTYsIDMxLCAyMzEsIAotICAgIDIyNiwgMTA0LCAxNiwgMzEsIDIyMiwgMTc4LCAxMDQsIDE2LCAzMSwgMjUzLCAxNjEsIDEwNCwgMTYsIDMxLCAyMjQsIDE4LCAKLSAgICAxMDQsIDE2LCAzMSwgMjI0LCAxNywgMTA0LCAxNiwgMzEsIDI1MywgOTksIDEwNCwgMTYsIDMxLCAyNTEsIDE1MiwgMjI3LCAKLSAgICAyMCwgMTA0LCAxNiwgMzEsIDIxOCwgMCwgMTA0LCAxNiwgMzEsIDIxNywgMjU1LCAxMDQsIDE2LCAzMSwgMjI0LCAxNTMsIAotICAgIDIzMiwgMjUxLCAxMDQsIDE2LCAzMSwgMjUxLCAxMDksIDEwNCwgMTYsIDMxLCAyNTEsIDEwOCwgMTA0LCAxNiwgMzEsIDI1MSwgCi0gICAgMTA3LCAxMDQsIDE2LCAzMSwgMjU0LCA0NywgMTA0LCAxNiwgMzEsIDIyNywgODQsIDEwNCwgMTYsIDMxLCAyMTksIDE4MCwgCi0gICAgMTA0LCAxNiwgMzEsIDIxNywgMzUsIDEwNCwgMTYsIDMxLCAyNDIsIDc3LCAxMDQsIDE2LCAzMSwgMjE0LCAxMiwgMTA0LCAKLSAgICAxNiwgMzEsIDIyNSwgMTA2LCAxMDQsIDE2LCAzMSwgMjUwLCAyMDIsIDEwNCwgMTYsIDMxLCAyMTYsIDUwLCAxMDQsIDE2LCAKLSAgICAzMSwgMjUwLCAxNzgsIDIzMCwgMTkyLCAxMDQsIDE2LCAzMSwgMjIyLCAxMjAsIDY1LCAyMzUsIDU4LCAxMDQsIDE2LCAzMSwgCi0gICAgMjUwLCAyMTEsIDEwNCwgMTYsIDMxLCAyMTYsIDE3NywgMTA0LCAxNiwgMzEsIDIxOSwgOTMsIDIxNiwgMTc3LCAxMDQsIDE2LCAKLSAgICAzMSwgMjMyLCAyMDEsIDEwNCwgMTYsIDMxLCAyMTksIDI0MCwgMTA0LCAxNiwgMzEsIDIxNSwgMTEzLCAxMDQsIDE2LCAzMSwgCi0gICAgMjQwLCAyMzMsIDI0NiwgMTksIDEwNCwgMTYsIDMxLCAyNTMsIDE0MiwgMTA0LCAxNiwgMzEsIDIyNSwgMTE0LCAyNTMsIAotICAgIDE0MiwgMTA0LCAxNiwgMzEsIDI1MSwgNzAsIDEwNCwgMTYsIDMxLCAyMjUsIDEwNSwgMjUxLCA3MCwgMTA0LCAxNiwgMzEsIAotICAgIDI1NCwgNDQsIDEwNCwgMTYsIDMxLCAyMTksIDU3LCAyMTgsIDIyNiwgMjE5LCA1NiwgMTA0LCAxNiwgMzEsIDIxOSwgNTcsIAotICAgIDIxOCwgMjI2LCAyMTksIDU1LCAxMDQsIDE2LCAzMSwgMjE5LCAxMywgMTA0LCAxNiwgMzEsIDIyNSwgODAsIDEwNCwgMTYsIAotICAgIDMxLCAyNDcsIDEzMywgMTA0LCAxNiwgMzEsIDI0NywgMTM1LCAxMDQsIDE2LCAzMSwgMjQ3LCAxMzQsIDEwNCwgMTYsIDMxLCAKLSAgICAyMjUsIDE3LCAxMDQsIDE2LCAzMSwgMjI1LCA3LCAxMDQsIDE2LCAzMSwgMjQ5LCA2MiwgMTA0LCAxNiwgMzEsIDI0OSwgNjEsIAotICAgIDEwNCwgMTYsIDMxLCAyNDksIDYwLCAxMDQsIDE2LCAzMSwgMjQ5LCA1OSwgMTA0LCAxNiwgMzEsIDI0OSwgNTgsIDEwNCwgCi0gICAgMTYsIDMxLCAyNTQsIDc3LCAxMDQsIDE2LCAzMSwgMjUyLCAzOSwgNjUsIDIzMSwgMjEyLCAxMDQsIDE2LCAzMSwgMjUyLCAKLSAgICAzOSwgNjUsIDIxNCwgMjQ5LCAxMDQsIDE2LCAzMSwgMjIzLCAyMDksIDEwNCwgMTYsIDMxLCAyNDAsIDIyNSwgMTA0LCAxNiwgCi0gICAgMzEsIDIyOSwgNDMsIDEwNCwgMTYsIDMxLCAyNDgsIDkxLCAxMDQsIDE2LCAzMSwgMjMwLCAyMDQsIDEwNCwgMTYsIDMxLCAKLSAgICAxNTEsIDI0NiwgNDksIDEwNCwgMTYsIDMxLCAxNTEsIDIyNywgMCwgOSwgMTMsIDI0MCwgOTUsIDksIDEzLCAyNDAsIDk0LCAKLSAgICA5LCAxMywgMjQwLCA5MywgOSwgMTMsIDI0MCwgOTIsIDksIDEzLCAyNDAsIDkxLCA5LCAxMywgMjQwLCA5MCwgOSwgMTMsIAotICAgIDI0MCwgODksIDksIDEzLCAyNDAsIDg4LCA5LCAxMywgMjQwLCA4NywgOSwgMTMsIDI0MCwgODYsIDksIDEzLCAyNDAsIDg1LCAKLSAgICA5LCAxMywgMjQwLCA4NCwgOSwgMTMsIDI0MCwgODMsIDksIDEzLCAyNDAsIDgyLCA5LCAxMywgMjQwLCA4MSwgOSwgMTMsIAotICAgIDI0MCwgODAsIDksIDEzLCAyNDAsIDc5LCA5LCAxMywgMjQwLCA3OCwgOSwgMTMsIDI0MCwgNzcsIDksIDEzLCAyNDAsIDc2LCAKLSAgICA5LCAxMywgMjQwLCA3NSwgOSwgMTMsIDI0MCwgNzQsIDksIDEzLCAyNDAsIDczLCA5LCAxMywgMjQwLCA3MiwgOSwgMTMsIAotICAgIDI0MCwgNzEsIDksIDEzLCAyNDAsIDcwLCA5LCAxMywgMjQwLCA2OSwgOSwgMTMsIDI0MCwgNjgsIDksIDEzLCAyNDAsIDY3LCAKLSAgICA5LCAxMywgMjQwLCA2NiwgOSwgMTMsIDI0MCwgNjUsIDksIDEzLCAyNDAsIDY0LCA5LCAxMywgMjQwLCA2MywgOSwgMTMsIAotICAgIDI0MCwgNjIsIDksIDEzLCAyNDAsIDYxLCA5LCAxMywgMjQwLCA2MCwgOSwgMTMsIDI0MCwgNTksIDksIDEzLCAyNDAsIDU4LCAKLSAgICA5LCAxMywgMjQwLCA1NywgOSwgMTMsIDI0MCwgNTYsIDksIDEzLCAyNDAsIDU1LCA5LCAxMywgMjQwLCA1NCwgOSwgMTMsIAotICAgIDI0MCwgNTMsIDksIDEzLCAyNDAsIDUyLCA5LCAxMywgMjQwLCA1MSwgOSwgMTMsIDI0MCwgNTAsIDksIDEzLCAyNDAsIDQ5LCAKLSAgICA5LCAxMywgMjQwLCA0OCwgOSwgMTMsIDI0MCwgNDcsIDksIDEzLCAyNDAsIDQ2LCA5LCAxMywgMjQwLCA0NSwgOSwgMTMsIAotICAgIDI0MCwgNDQsIDksIDEzLCAyNDAsIDQzLCA5LCAxMywgMjQwLCA0MiwgOSwgMTMsIDI0MCwgNDEsIDksIDEzLCAyNDAsIDQwLCAKLSAgICA5LCAxMywgMjQwLCAzOSwgOSwgMTMsIDI0MCwgMzgsIDksIDEzLCAyNDAsIDM3LCA5LCAxMywgMjQwLCAzNiwgOSwgMTMsIAotICAgIDI0MCwgMzUsIDksIDEzLCAyNDAsIDM0LCA5LCAxMywgMjQwLCAzMywgOSwgMTMsIDI0MCwgMzIsIDksIDEzLCAyNDAsIDMxLCAKLSAgICA5LCAxMywgMjQwLCAzMCwgOSwgMTMsIDI0MCwgMjksIDksIDEzLCAyNDAsIDI4LCA5LCAxMywgMjQwLCAyNywgOSwgMTMsIAotICAgIDI0MCwgMjYsIDksIDEzLCAyNDAsIDI1LCA5LCAxMywgMjQwLCAyNCwgOSwgMTMsIDI0MCwgMjMsIDksIDEzLCAyNDAsIDIyLCAKLSAgICA5LCAxMywgMjQwLCAyMSwgOSwgMTMsIDI0MCwgMjAsIDksIDEzLCAyNDAsIDE5LCA5LCAxMywgMjQwLCAxOCwgOSwgMTMsIAotICAgIDI0MCwgMTcsIDksIDEzLCAyNDAsIDE2LCA5LCAxMywgMjQwLCAxNSwgOSwgMTMsIDI0MCwgMTQsIDksIDEzLCAyNDAsIDEzLCAKLSAgICA5LCAxMywgMjQwLCAxMiwgOSwgMTMsIDI0MCwgMTEsIDksIDEzLCAyNDAsIDEwLCA5LCAxMywgMjQwLCA5LCA5LCAxMywgCi0gICAgMjQwLCA4LCA5LCAxMywgMjQwLCA3LCA5LCAxMywgMjQwLCA2LCA5LCAxMywgMjQwLCA1LCA5LCAxMywgMjQwLCA0LCA5LCAKLSAgICAxMywgMjQwLCAzLCA5LCAxMywgMjQwLCAyLCA5LCAxMywgMjQwLCAxLCA5LCAxMywgMjQwLCAwLCA5LCAxMywgMjM5LCAyNTUsIAotICAgIDksIDEzLCAyMzksIDI1NCwgOSwgMTMsIDIzOSwgMjUzLCA5LCAxMywgMjM5LCAyNTIsIDksIDEzLCAyMzksIDI1MSwgOSwgCi0gICAgMTMsIDIzOSwgMjUwLCA5LCAxMywgMjM5LCAyNDksIDksIDEzLCAyMzksIDI0OCwgOSwgMTMsIDIzOSwgMjQ3LCA5LCAxMywgCi0gICAgMjM5LCAyNDYsIDksIDEzLCAyMzksIDI0NSwgOSwgMTMsIDIzOSwgMjQ0LCA5LCAxMywgMjM5LCAyNDMsIDksIDEzLCAyMzksIAotICAgIDI0MiwgOSwgMTMsIDIzOSwgMjQxLCA5LCAxMywgMjM5LCAyNDAsIDksIDEzLCAyMzksIDIzOSwgOSwgMTMsIDIzOSwgMjM4LCAKLSAgICA5LCAxMywgMjM5LCAyMzcsIDksIDEzLCAyMzksIDIzNiwgOSwgMTMsIDIzOSwgMjM1LCA5LCAxMywgMjM5LCAyMzQsIDksIAotICAgIDEzLCAyMzksIDIzMywgOSwgMTMsIDIzOSwgMjMyLCA5LCAxMywgMjM5LCAyMzEsIDksIDEzLCAyMzksIDIzMCwgOSwgMTMsIAotICAgIDIzOSwgMjI5LCA5LCAxMywgMjM5LCAyMjgsIDksIDEzLCAyMzksIDIyNywgOSwgMTMsIDIzOSwgMjI2LCA5LCAxMywgMjM5LCAKLSAgICAyMjUsIDksIDEzLCAyMzksIDIyNCwgOSwgMTMsIDIzOSwgMjIzLCA5LCAxMywgMjM5LCAyMjIsIDksIDEzLCAyMzksIDIyMSwgCi0gICAgOSwgMTMsIDIzOSwgMjIwLCA5LCAxMywgMjM5LCAyMTksIDksIDEzLCAyMzksIDIxOCwgOSwgMTMsIDIzOSwgMjE3LCA5LCAKLSAgICAxMywgMjM5LCAyMTYsIDksIDEzLCAyMzksIDIxNSwgOSwgMTMsIDIzOSwgMjE0LCA5LCAxMywgMjM5LCAyMTMsIDksIDEzLCAKLSAgICAyMzksIDIxMiwgOSwgMTMsIDIzOSwgMjExLCA5LCAxMywgMjM5LCAyMTAsIDksIDEzLCAyMzksIDIwOSwgOSwgMTMsIDIzOSwgCi0gICAgMjA4LCA5LCAxMywgMjM5LCAyMDcsIDksIDEzLCAyMzksIDIwNiwgOSwgMTMsIDIzOSwgMjA1LCA5LCAxMywgMjM5LCAyMDQsIAotICAgIDksIDEzLCAyMzksIDIwMywgOSwgMTMsIDIzOSwgMjAyLCA5LCAxMywgMjM5LCAyMDEsIDksIDEzLCAyMzksIDIwMCwgOSwgCi0gICAgMTMsIDIzOSwgMTk5LCA5LCAxMywgMjM5LCAxOTgsIDksIDEzLCAyMzksIDE5NywgOSwgMTMsIDIzOSwgMTk2LCA5LCAxMywgCi0gICAgMjM5LCAxOTUsIDksIDEzLCAyMzksIDE5NCwgOSwgMTMsIDIzOSwgMTkzLCA5LCAxMywgMjM5LCAxOTIsIDksIDEzLCAyMzksIAotICAgIDE5MSwgOSwgMTMsIDIzOSwgMTkwLCA5LCAxMywgMjM5LCAxODksIDksIDEzLCAyMzksIDE4OCwgOSwgMTMsIDIzOSwgMTg3LCAKLSAgICA5LCAxMywgMjM5LCAxODYsIDksIDEzLCAyMzksIDE4NSwgOSwgMTMsIDIzOSwgMTg0LCA5LCAxMywgMjM5LCAxODMsIDksIAotICAgIDEzLCAyMzksIDE4MiwgOSwgMTMsIDIzOSwgMTgxLCA5LCAxMywgMjM5LCAxODAsIDksIDEzLCAyMzksIDE3OSwgOSwgMTMsIAotICAgIDIzOSwgMTc4LCA5LCAxMywgMjM5LCAxNzcsIDksIDEzLCAyMzksIDE3NiwgOSwgMTMsIDIzOSwgMTc1LCA5LCAxMywgMjM5LCAKLSAgICAxNzQsIDksIDEzLCAyMzksIDE3MywgOSwgMTMsIDIzOSwgMTcyLCA5LCAxMywgMjM5LCAxNzEsIDksIDEzLCAyMzksIDE3MCwgCi0gICAgOSwgMTMsIDIzOSwgMTY5LCA5LCAxMywgMjM5LCAxNjgsIDksIDEzLCAyMzksIDE2NywgOSwgMTMsIDIzOSwgMTY2LCA5LCAKLSAgICAxMywgMjM5LCAxNjUsIDksIDEzLCAyMzksIDE2NCwgOSwgMTMsIDIzOSwgMTYzLCA5LCAxMywgMjM5LCAxNjIsIDksIDEzLCAKLSAgICAyMzksIDE2MSwgOSwgMTMsIDIzOSwgMTYwLCA5LCAxMywgMjM5LCAxNTksIDksIDEzLCAyMzksIDE1OCwgOSwgMTMsIDIzOSwgCi0gICAgMTU3LCA5LCAxMywgMjM5LCAxNTYsIDksIDEzLCAyMzksIDE1NSwgOSwgMTMsIDIzOSwgMTU0LCA5LCAxMywgMjM5LCAxNTMsIAotICAgIDksIDEzLCAyMzksIDE1MiwgOSwgMTMsIDIzOSwgMTUxLCA5LCAxMywgMjM5LCAxNTAsIDksIDEzLCAyMzksIDE0OSwgOSwgCi0gICAgMTMsIDIzOSwgMTQ4LCA5LCAxMywgMjM5LCAxNDcsIDksIDEzLCAyMzksIDE0NiwgOSwgMTMsIDIzOSwgMTQ1LCA5LCAxMywgCi0gICAgMjM5LCAxNDQsIDksIDEzLCAyMzksIDE0MywgOSwgMTMsIDIzOSwgMTQyLCA5LCAxMywgMjM5LCAxNDEsIDksIDEzLCAyMzksIAotICAgIDE0MCwgOSwgMTMsIDIzOSwgMTM5LCA5LCAxMywgMjM5LCAxMzgsIDksIDEzLCAyMzksIDEzNywgOSwgMTMsIDIzOSwgMTM2LCAKLSAgICA5LCAxMywgMjM5LCAxMzUsIDksIDEzLCAyMzksIDEzNCwgOSwgMTMsIDIzOSwgMTMzLCA5LCAxMywgMjM5LCAxMzIsIDksIAotICAgIDEzLCAyMzksIDEzMSwgOSwgMTMsIDIzOSwgMTMwLCA5LCAxMywgMjM5LCAxMjksIDksIDEzLCAyMzksIDEyOCwgOSwgMTMsIAotICAgIDIzOSwgMTI3LCA5LCAxMywgMjM5LCAxMjYsIDksIDEzLCAyMzksIDEyNSwgOSwgMTMsIDIzOSwgMTI0LCA5LCAxMywgMjM5LCAKLSAgICAxMjMsIDksIDEzLCAyMzksIDEyMiwgOSwgMTMsIDIzOSwgMTIxLCA5LCAxMywgMjM5LCAxMjAsIDksIDEzLCAyMzksIDExOSwgCi0gICAgOSwgMTMsIDIzOSwgMTE4LCA5LCAxMywgMjM5LCAxMTcsIDksIDEzLCAyMzksIDExNiwgOSwgMTMsIDIzOSwgMTE1LCA5LCAKLSAgICAxMywgMjM5LCAxMTQsIDksIDEzLCAyMzksIDExMywgOSwgMTMsIDIzOSwgMTEyLCA5LCAxMywgMjM5LCAxMTEsIDksIDEzLCAKLSAgICAyMzksIDExMCwgOSwgMTMsIDIzOSwgMTA5LCA5LCAxMywgMjM5LCAxMDgsIDksIDEzLCAyMzksIDEwNywgOSwgMTMsIDIzOSwgCi0gICAgMTA2LCA5LCAxMywgMjM5LCAxMDUsIDksIDEzLCAyMzksIDEwNCwgOSwgMTMsIDIzOSwgMTAzLCA5LCAxMywgMjM5LCAxMDIsIAotICAgIDksIDEzLCAyMzksIDEwMSwgOSwgMTMsIDIzOSwgMTAwLCA5LCAxMywgMjM5LCA5OSwgOSwgMTMsIDIzOSwgOTgsIDksIDEzLCAKLSAgICAyMzksIDk3LCA5LCAxMywgMjM5LCA5NiwgOSwgMTMsIDIzOSwgOTUsIDksIDEzLCAyMzksIDk0LCA5LCAxMywgMjM5LCA5MywgCi0gICAgOSwgMTMsIDIzOSwgOTIsIDksIDEzLCAyMzksIDkxLCA5LCAxMywgMjM5LCA5MCwgOSwgMTMsIDIzOSwgODksIDksIDEzLCAKLSAgICAyMzksIDg4LCA5LCAxMywgMjM5LCA4NywgOSwgMTMsIDIzOSwgODYsIDksIDEzLCAyMzksIDg1LCA5LCAxMywgMjM5LCA4NCwgCi0gICAgOSwgMTMsIDIzOSwgODMsIDksIDEzLCAyMzksIDgyLCA5LCAxMywgMjM5LCA4MSwgOSwgMTMsIDIzOSwgODAsIDksIDEzLCAKLSAgICAyMzksIDc5LCA5LCAxMywgMjM5LCA3OCwgOSwgMTMsIDIzOSwgNzcsIDksIDEzLCAyMzksIDc2LCA5LCAxMywgMjM5LCA3NSwgCi0gICAgOSwgMTMsIDIzOSwgNzQsIDksIDEzLCAyMzksIDczLCA5LCAxMywgMjM5LCA3MiwgOSwgMTMsIDIzOSwgNzEsIDksIDEzLCAKLSAgICAyMzksIDcwLCA5LCAxMywgMjM5LCA2OSwgOSwgMTMsIDIzOSwgNjgsIDksIDEzLCAyMzksIDY3LCA5LCAxMywgMjM5LCA2NiwgCi0gICAgOSwgMTMsIDIzOSwgNjUsIDksIDEzLCAyMzksIDY0LCA5LCAxMywgMjM5LCA2MywgOSwgMTMsIDIzOSwgNjIsIDksIDEzLCAKLSAgICAyMzksIDYxLCA5LCAxMywgMjM5LCA2MCwgOSwgMTMsIDIzOSwgNTksIDksIDEzLCAyMzksIDU4LCA5LCAxMywgMjM5LCA1NywgCi0gICAgOSwgMTMsIDIzOSwgNTYsIDksIDEzLCAyMzksIDU1LCA5LCAxMywgMjM5LCA1NCwgOSwgMTMsIDIzOSwgNTMsIDksIDEzLCAKLSAgICAyMzksIDUyLCA5LCAxMywgMjM5LCA1MSwgOSwgMTMsIDIzOSwgNTAsIDksIDEzLCAyMzksIDQ5LCA5LCAxMywgMjM5LCA0OCwgCi0gICAgOSwgMTMsIDIzOSwgNDcsIDksIDEzLCAyMzksIDQ2LCA5LCAxMywgMjM5LCA0NSwgOSwgMTMsIDIzOSwgNDQsIDksIDEzLCAKLSAgICAyMzksIDQzLCA5LCAxMywgMjM5LCA0MiwgOSwgMTMsIDIzOSwgNDEsIDksIDEzLCAyMzksIDQwLCA5LCAxMywgMjM5LCAzOSwgCi0gICAgOSwgMTMsIDIzOSwgMzgsIDksIDEzLCAyMzksIDM3LCA5LCAxMywgMjM5LCAzNiwgOSwgMTMsIDIzOSwgMzUsIDksIDEzLCAKLSAgICAyMzksIDM0LCA5LCAxMywgMjM5LCAzMywgOSwgMTMsIDIzOSwgMzIsIDksIDEzLCAyMzksIDMxLCA5LCAxMywgMjM5LCAzMCwgCi0gICAgOSwgMTMsIDIzOSwgMjksIDksIDEzLCAyMzksIDI4LCA5LCAxMywgMjM5LCAyNywgOSwgMTMsIDIzOSwgMjYsIDksIDEzLCAKLSAgICAyMzksIDI1LCA5LCAxMywgMjM5LCAyNCwgOSwgMTMsIDIzOSwgMjMsIDksIDEzLCAyMzksIDIyLCA5LCAxMywgMjM5LCAyMSwgCi0gICAgOSwgMTMsIDIzOSwgMjAsIDksIDEzLCAyMzksIDE5LCA5LCAxMywgMjM5LCAxOCwgOSwgMTMsIDIzOSwgMTcsIDksIDEzLCAKLSAgICAyMzksIDE2LCA5LCAxMywgMjM5LCAxNSwgOSwgMTMsIDIzOSwgMTQsIDksIDEzLCAyMzksIDEzLCA5LCAxMywgMjM5LCAxMiwgCi0gICAgOSwgMTMsIDIzOSwgMTEsIDksIDEzLCAyMzksIDEwLCA5LCAxMywgMjM5LCA5LCA5LCAxMywgMjM5LCA4LCA5LCAxMywgMjM5LCAKLSAgICA3LCA5LCAxMywgMjM5LCA2LCA5LCAxMywgMjM5LCA1LCA5LCAxMywgMjM5LCA0LCA5LCAxMywgMjM5LCAzLCA5LCAxMywgCi0gICAgMjM5LCAyLCA5LCAxMywgMjM5LCAxLCA5LCAxMywgMjM5LCAwLCA5LCAxMywgMjM4LCAyNTUsIDksIDEzLCAyMzgsIDI1NCwgCi0gICAgOSwgMTMsIDIzOCwgMjUzLCA5LCAxMywgMjM4LCAyNTIsIDksIDEzLCAyMzgsIDI1MSwgOSwgMTMsIDIzOCwgMjUwLCA5LCAKLSAgICAxMywgMjM4LCAyNDksIDksIDEzLCAyMzgsIDI0OCwgOSwgMTMsIDIzOCwgMjQ3LCA5LCAxMywgMjM4LCAyNDYsIDksIDEzLCAKLSAgICAyMzgsIDI0NSwgOSwgMTMsIDIzOCwgMjQ0LCA5LCAxMywgMjM4LCAyNDMsIDksIDEzLCAyMzgsIDI0MiwgOSwgMTMsIDIzOCwgCi0gICAgMjQxLCA5LCAxMywgMjM4LCAyNDAsIDksIDEzLCAyMzgsIDIzOSwgOSwgMTMsIDIzOCwgMjM4LCA5LCAxMywgMjM4LCAyMzcsIAotICAgIDksIDEzLCAyMzgsIDIzNiwgOSwgMTMsIDIzOCwgMjM1LCA5LCAxMywgMjM4LCAyMzQsIDksIDEzLCAyMzgsIDIzMywgOSwgCi0gICAgMTMsIDIzOCwgMjMyLCA5LCAxMywgMjM4LCAyMzEsIDksIDEzLCAyMzgsIDIzMCwgOSwgMTMsIDIzOCwgMjI5LCA5LCAxMywgCi0gICAgMjM4LCAyMjgsIDksIDEzLCAyMzgsIDIyNywgOSwgMTMsIDIzOCwgMjI2LCA5LCAxMywgMjM4LCAyMjUsIDksIDEzLCAyMzgsIAotICAgIDIyNCwgOSwgMTMsIDIzOCwgMjIzLCA5LCAxMywgMjM4LCAyMjIsIDksIDEzLCAyMzgsIDIyMSwgOSwgMTMsIDIzOCwgMjIwLCAKLSAgICA5LCAxMywgMjM4LCAyMTksIDksIDEzLCAyMzgsIDIxOCwgOSwgMTMsIDIzOCwgMjE3LCA5LCAxMywgMjM4LCAyMTYsIDksIAotICAgIDEzLCAyMzgsIDIxNSwgOSwgMTMsIDIzOCwgMjE0LCA5LCAxMywgMjM4LCAyMTMsIDksIDEzLCAyMzgsIDIxMiwgOSwgMTMsIAotICAgIDIzOCwgMjExLCA5LCAxMywgMjM4LCAyMTAsIDksIDEzLCAyMzgsIDIwOSwgOSwgMTMsIDIzOCwgMjA4LCA5LCAxMywgMjM4LCAKLSAgICAyMDcsIDksIDEzLCAyMzgsIDIwNiwgOSwgMTMsIDIzOCwgMjA1LCA5LCAxMywgMjM4LCAyMDQsIDksIDEzLCAyMzgsIDIwMywgCi0gICAgOSwgMTMsIDIzOCwgMjAyLCA5LCAxMywgMjM4LCAyMDEsIDksIDEzLCAyMzgsIDIwMCwgOSwgMTMsIDIzOCwgMTk5LCA5LCAKLSAgICAxMywgMjM4LCAxOTgsIDksIDEzLCAyMzgsIDE5NywgOSwgMTMsIDIzOCwgMTk2LCA5LCAxMywgMjM4LCAxOTUsIDksIDEzLCAKLSAgICAyMzgsIDE5NCwgOSwgMTMsIDIzOCwgMTkzLCA5LCAxMywgMjM4LCAxOTIsIDksIDEzLCAyMzgsIDE5MSwgOSwgMTMsIDIzOCwgCi0gICAgMTkwLCA5LCAxMywgMjM4LCAxODksIDksIDEzLCAyMzgsIDE4OCwgOSwgMTMsIDIzOCwgMTg3LCA5LCAxMywgMjM4LCAxODYsIAotICAgIDksIDEzLCAyMzgsIDE4NSwgOSwgMTMsIDIzOCwgMTg0LCA5LCAxMywgMjM4LCAxODMsIDksIDEzLCAyMzgsIDE4MiwgOSwgCi0gICAgMTMsIDIzOCwgMTgxLCA5LCAxMywgMjM4LCAxODAsIDksIDEzLCAyMzgsIDE3OSwgOSwgMTMsIDIzOCwgMTc4LCA5LCAxMywgCi0gICAgMjM4LCAxNzcsIDksIDEzLCAyMzgsIDE3NiwgOSwgMTMsIDIzOCwgMTc1LCA5LCAxMywgMjM4LCAxNzQsIDksIDEzLCAyMzgsIAotICAgIDE3MywgOSwgMTMsIDIzOCwgMTcyLCA5LCAxMywgMjM4LCAxNzEsIDksIDEzLCAyMzgsIDE3MCwgOSwgMTMsIDIzOCwgMTY5LCAKLSAgICA5LCAxMywgMjM4LCAxNjgsIDksIDEzLCAyMzgsIDE2NywgOSwgMTMsIDIzOCwgMTY2LCA5LCAxMywgMjM4LCAxNjUsIDksIAotICAgIDEzLCAyMzgsIDE2NCwgOSwgMTMsIDIzOCwgMTYzLCA5LCAxMywgMjM4LCAxNjIsIDksIDEzLCAyMzgsIDE2MSwgOSwgMTMsIAotICAgIDIzOCwgMTYwLCA5LCAxMywgMjM4LCAxNTksIDksIDEzLCAyMzgsIDE1OCwgOSwgMTMsIDIzOCwgMTU3LCA5LCAxMywgMjM4LCAKLSAgICAxNTYsIDksIDEzLCAyMzgsIDE1NSwgOSwgMTMsIDIzOCwgMTU0LCA5LCAxMywgMjM4LCAxNTMsIDksIDEzLCAyMzgsIDE1MiwgCi0gICAgOSwgMTMsIDIzOCwgMTUxLCA5LCAxMywgMjM4LCAxNTAsIDksIDEzLCAyMzgsIDE0OSwgOSwgMTMsIDIzOCwgMTQ4LCA5LCAKLSAgICAxMywgMjM4LCAxNDcsIDksIDEzLCAyMzgsIDE0NiwgOSwgMTMsIDIzOCwgMTQ1LCA5LCAxMywgMjM4LCAxNDQsIDksIDEzLCAKLSAgICAyMzgsIDE0MywgOSwgMTMsIDIzOCwgMTQyLCA5LCAxMywgMjM4LCAxNDEsIDksIDEzLCAyMzgsIDE0MCwgOSwgMTMsIDIzOCwgCi0gICAgMTM5LCA5LCAxMywgMjM4LCAxMzgsIDksIDEzLCAyMzgsIDEzNywgOSwgMTMsIDIzOCwgMTM2LCA5LCAxMywgMjM4LCAxMzUsIAotICAgIDksIDEzLCAyMzgsIDEzNCwgOSwgMTMsIDIzOCwgMTMzLCA5LCAxMywgMjM4LCAxMzIsIDksIDEzLCAyMzgsIDEzMSwgOSwgCi0gICAgMTMsIDIzOCwgMTMwLCA5LCAxMywgMjM4LCAxMjksIDksIDEzLCAyMzgsIDEyOCwgOSwgMTMsIDIzOCwgMTI3LCA5LCAxMywgCi0gICAgMjM4LCAxMjYsIDksIDEzLCAyMzgsIDEyNSwgOSwgMTMsIDIzOCwgMTI0LCA5LCAxMywgMjM4LCAxMjMsIDksIDEzLCAyMzgsIAotICAgIDEyMiwgOSwgMTMsIDIzOCwgMTIxLCA5LCAxMywgMjM4LCAxMjAsIDksIDEzLCAyMzgsIDExOSwgOSwgMTMsIDIzOCwgMTE4LCAKLSAgICA5LCAxMywgMjM4LCAxMTcsIDksIDEzLCAyMzgsIDExNiwgOSwgMTMsIDIzOCwgMTE1LCA5LCAxMywgMjM4LCAxMTQsIDksIAotICAgIDEzLCAyMzgsIDExMywgOSwgMTMsIDIzOCwgMTEyLCA5LCAxMywgMjM4LCAxMTEsIDksIDEzLCAyMzgsIDExMCwgOSwgMTMsIAotICAgIDIzOCwgMTA5LCA5LCAxMywgMjM4LCAxMDgsIDksIDEzLCAyMzgsIDEwNywgOSwgMTMsIDIzOCwgMTA2LCA5LCAxMywgMjM4LCAKLSAgICAxMDUsIDksIDEzLCAyMzgsIDEwNCwgOSwgMTMsIDIzOCwgMTAzLCA5LCAxMywgMjM4LCAxMDIsIDksIDEzLCAyMzgsIDEwMSwgCi0gICAgOSwgMTMsIDIzOCwgMTAwLCA5LCAxMywgMjM4LCA5OSwgOSwgMTMsIDIzOCwgOTgsIDksIDEzLCAyMzgsIDk3LCA5LCAxMywgCi0gICAgMjM4LCA5NiwgOSwgMTMsIDIzOCwgOTUsIDksIDEzLCAyMzgsIDk0LCA5LCAxMywgMjM4LCA5MywgOSwgMTMsIDIzOCwgOTIsIAotICAgIDksIDEzLCAyMzgsIDkxLCA5LCAxMywgMjM4LCA5MCwgOSwgMTMsIDIzOCwgODksIDksIDEzLCAyMzgsIDg4LCA5LCAxMywgCi0gICAgMjM4LCA4NywgOSwgMTMsIDIzOCwgODYsIDksIDEzLCAyMzgsIDg1LCA5LCAxMywgMjM4LCA4NCwgOSwgMTMsIDIzOCwgODMsIAotICAgIDksIDEzLCAyMzgsIDgyLCA5LCAxMywgMjM4LCA4MSwgOSwgMTMsIDIzOCwgODAsIDksIDEzLCAyMzgsIDc5LCA5LCAxMywgCi0gICAgMjM4LCA3OCwgOSwgMTMsIDIzOCwgNzcsIDksIDEzLCAyMzgsIDc2LCA5LCAxMywgMjM4LCA3NSwgOSwgMTMsIDIzOCwgNzQsIAotICAgIDksIDEzLCAyMzgsIDczLCA5LCAxMywgMjM4LCA3MiwgOSwgMTMsIDIzOCwgNzEsIDksIDEzLCAyMzgsIDcwLCA5LCAxMywgCi0gICAgMjM4LCA2OSwgOSwgMTMsIDIzOCwgNjgsIDksIDEzLCAyMzgsIDY3LCA5LCAxMywgMjM4LCA2NiwgMjMzLCAxMTQsIDIxOCwgCi0gICAgMzMsIDEyNiwgMjE5LCAyMDYsIDEyNiwgMjQ0LCAyNTQsIDc3LCAxMjYsIDIyNCwgMTQzLCA3NywgMTI2LCA1MCwgNTIsIAotICAgIDEyNiwgMjQ3LCA4NiwgNTIsIDEyNiwgMjI2LCA1NywgNTIsIDEyNiwgMjU0LCAzNSwgMTI2LCAyNTMsIDIyNiwgMTI2LCA0MiwgCi0gICAgMjI2LCAxMzEsIDEyNiwgNDYsIDIyNiwgMTMxLCAxMjYsIDI1MywgMTMyLCAxMjYsIDk0LCA1MiwgMTI2LCAyNDksIDE1NywgCi0gICAgMTI2LCAyNDAsIDE1OSwgMTI2LCAyNDMsIDIwMCwgMjE5LCA2OSwgMTI2LCAyMTksIDIzMSwgMTI2LCAyMSwgMjEyLCA3OSwgCi0gICAgMTI2LCAyMSwgMTE2LCAxMjYsIDIxLCAxMDksIDEyNiwgMjEsIDE2NiwgMTI2LCAyMSwgMTYzLCAxMjYsIDIxLCAxODAsIAotICAgIDEyNiwgMjEsIDE4OSwgMTI2LCAyMSwgMTk4LCAxMjYsIDIxLCAxOTUsIDEyNiwgMjEsIDIwMCwgMTI2LCAyNDksIDE2NCwgCi0gICAgMTI2LCAyMjEsIDcwLCAxMjYsIDIzMywgMzksIDUyLCAxMjYsIDI0NSwgNjEsIDUyLCAxMjYsIDI0MiwgMTA3LCA1MiwgMTI2LCAKLSAgICAyMjQsIDE1OCwgNzcsIDEyNiwgMjQ5LCAxNTYsIDI1MywgMTIyLCAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIDEsIAotICAgIDI1MywgNzQsIDEyNiwgNywgNiwgMSwgMjUwLCAyNTIsIDEyNiwgNywgNiwgMSwgMjQ5LCAzLCAxMjYsIDcsIDYsIDEsIDc0LCAKLSAgICAxMjYsIDcsIDYsIDEsIDI0NCwgMjMwLCAxMjYsIDcsIDYsIDEsIDI0MywgMTc3LCAxMjYsIDcsIDYsIDEsIDI0MiwgNDEsIAotICAgIDEyNiwgNywgNiwgMSwgNzIsIDEyNiwgNywgNiwgMSwgMjM1LCAxNDIsIDEyNiwgNywgNiwgMSwgMjM1LCAyNywgMTI2LCA3LCAKLSAgICA2LCAxLCAxNTAsIDEyNiwgNywgNiwgMSwgMTgzLCAxMjYsIDcsIDYsIDEsIDIwNCwgMTI2LCA3LCA2LCAxLCA3NSwgMTI2LCAKLSAgICA3LCA2LCAxLCAyMjYsIDIyOSwgMTI2LCA3LCA2LCAxLCAyMjQsIDI0MCwgMTI2LCA3LCA2LCAxLCAxNDksIDEyNiwgNywgNiwgCi0gICAgMSwgMTk3LCAxMjYsIDcsIDYsIDEsIDIxOCwgOTksIDEyNiwgNywgNiwgMSwgNjksIDEyNiwgNywgNiwgMSwgMjE1LCA3OSwgCi0gICAgMTI2LCA3LCA2LCAxLCAyMTQsIDgyLCAxMjYsIDcsIDYsIDEsIDIxMywgMTY2LCAxMjYsIDcsIDYsIDEsIDIxMywgMTA1LCAKLSAgICAxMjYsIDcsIDYsIDEsIDIxMiwgMTUyLCAxMjYsIDQyLCA0MSwgMTI1LCAxMjYsIDIyMywgMjAzLCAyMTksIDIzMSwgMTI2LCAKLSAgICA0NiwgNDEsIDEyNSwgMTI2LCAyNDksIDIyNCwgMjU0LCAxNzQsIDEyNiwgMTE1LCAyMzIsIDI0MiwgMTI2LCAyNDIsIDExNCwgCi0gICAgMjU0LCAxNzQsIDEyNiwgNywgMywgMSwgNjEsIDEyNiwgNywgMywgMSwgMjUzLCA3NCwgMTI2LCA3LCAzLCAxLCAyNTAsIAotICAgIDI1MiwgMTI2LCA3LCAzLCAxLCAyNDksIDMsIDEyNiwgNywgMywgMSwgNzQsIDEyNiwgNywgMywgMSwgMjQ0LCAyMzAsIDEyNiwgCi0gICAgNywgMywgMSwgMjQzLCAxNzcsIDEyNiwgNywgMywgMSwgMjQyLCA0MSwgMTI2LCA3LCAzLCAxLCA3MiwgMTI2LCA3LCAzLCAxLCAKLSAgICAyMzUsIDE0MiwgMTI2LCA3LCAzLCAxLCAyMzUsIDI3LCAxMjYsIDcsIDMsIDEsIDE1MCwgMTI2LCA3LCAzLCAxLCAxODMsIAotICAgIDEyNiwgNywgMywgMSwgMjA0LCAxMjYsIDcsIDMsIDEsIDc1LCAxMjYsIDcsIDMsIDEsIDIyNiwgMjI5LCAxMjYsIDcsIDMsIAotICAgIDEsIDIyNCwgMjQwLCAxMjYsIDcsIDMsIDEsIDE0OSwgMTI2LCA3LCAzLCAxLCAxOTcsIDEyNiwgNywgMywgMSwgMjE4LCA5OSwgCi0gICAgMTI2LCA3LCAzLCAxLCA2OSwgMTI2LCA3LCAzLCAxLCAyMTUsIDc5LCAxMjYsIDcsIDMsIDEsIDIxNCwgODIsIDEyNiwgNywgCi0gICAgMywgMSwgMjEzLCAxNjYsIDEyNiwgNywgMywgMSwgMjEzLCAxMDUsIDEyNiwgNywgMywgMSwgMjEyLCAxNTIsIDEyNiwgNDIsIAotICAgIDI0OSwgNDAsIDEyNSwgMTI2LCA3MSwgMjMyLCAyNDIsIDEyNiwgNDYsIDI0OSwgNDAsIDEyNSwgMTI2LCAyMTcsIDQyLCAKLSAgICAyNTAsIDE5NCwgMjE4LCAzMywgNDMsIDIyMSwgMjU0LCA0MywgMjIxLCAyNDMsIDQzLCAyMjEsIDIzMiwgNDMsIDIyMSwgCi0gICAgMjIwLCA0MywgMjIxLCAyMDksIDQzLCAyMjEsIDE5OCwgNDMsIDIyMSwgMTg3LCA0MywgMjIxLCAxNzYsIDQzLCAyMjEsIAotICAgIDE2NSwgNDMsIDIyMSwgMTU3LCA0MywgMjIxLCAxNTYsIDQzLCAyMjEsIDE1NSwgNDMsIDIyMSwgMTU0LCA0MywgMjIxLCAKLSAgICAxNTIsIDQzLCAyMjEsIDE1MSwgNDMsIDIyMSwgMTUwLCA0MywgMjIxLCAxNDksIDQzLCAyMjEsIDE0OCwgNDMsIDIyMSwgCi0gICAgMTQ3LCA0MywgMjIxLCAxNDYsIDQzLCAyMjEsIDE0NSwgNDMsIDIyMSwgMTQ0LCA0MywgMjIxLCAxNDMsIDQzLCAyMjEsIAotICAgIDE0MSwgNDMsIDIyMSwgMTQwLCA0MywgMjIxLCAxMzksIDQzLCAyMjEsIDEzOCwgNDMsIDIyMSwgMTM3LCA0MywgMjIxLCAKLSAgICAxMzYsIDQzLCAyMjEsIDEzNSwgNDMsIDIyMSwgMTM0LCA0MywgMjIxLCAxMzMsIDQzLCAyMjEsIDEzMiwgNDMsIDIyMSwgCi0gICAgMTMwLCA0MywgMjIxLCAxMjksIDQzLCAyMjEsIDEyOCwgNDMsIDIyMSwgMTI3LCA0MywgMjIxLCAxMjYsIDQzLCAyMjEsIAotICAgIDEyNSwgNDMsIDIyMSwgMTI0LCA0MywgMjIxLCAxMjMsIDQzLCAyMjEsIDEyMiwgNDMsIDIyMSwgMTIxLCA0MywgMjIxLCAKLSAgICAxMTksIDQzLCAyMjEsIDExOCwgNDMsIDIyMSwgMTE3LCA0MywgMjIxLCAxMTYsIDQzLCAyMjEsIDExNSwgNDMsIDIyMSwgCi0gICAgMTE0LCA0MywgMjIxLCAxMTMsIDQzLCAyMjEsIDExMiwgNDMsIDIyMSwgMTExLCA0MywgMjIxLCAxMTAsIDQzLCAyMjEsIAotICAgIDEwOCwgNDMsIDIyMSwgMTA3LCA0MywgMjIxLCAxMDYsIDQzLCAyMjEsIDEwNSwgNDMsIDIyMSwgMTA0LCA0MywgMjIxLCAKLSAgICAxMDMsIDQzLCAyMjEsIDEwMiwgNDMsIDIyMSwgMTAxLCA0MywgMjIxLCAxMDAsIDQzLCAyMjEsIDk5LCA0MywgMjIxLCA5NywgCi0gICAgNDMsIDIyMSwgOTYsIDQzLCAyMjEsIDk1LCA0MywgMjIxLCA5NCwgNDMsIDIyMSwgOTMsIDQzLCAyMjEsIDkyLCA0MywgMjIxLCAKLSAgICA5MSwgNDMsIDIyMSwgOTAsIDQzLCAyMjEsIDg5LCA0MywgMjIxLCA4OCwgNDMsIDIyMSwgODYsIDQzLCAyMjEsIDg1LCA0MywgCi0gICAgMjIxLCA4NCwgNDMsIDIyMSwgODMsIDQzLCAyMjEsIDgyLCA0MywgMjIxLCA4MSwgNDMsIDIyMSwgODAsIDQzLCAyMjEsIDc5LCAKLSAgICA0MywgMjIxLCA3OCwgNDMsIDIyMSwgNzcsIDQzLCAyMjIsIDc0LCA0MywgMjIyLCA3MywgNDMsIDIyMiwgNzIsIDQzLCAyMjIsIAotICAgIDcxLCA0MywgMjIyLCA3MCwgNDMsIDIyMiwgNjksIDQzLCAyMjIsIDY4LCA0MywgMjIyLCA2NywgNDMsIDIyMiwgNjYsIDQzLCAKLSAgICAyMjIsIDY1LCA0MywgMjIyLCA2MywgNDMsIDIyMiwgNjIsIDQzLCAyMjIsIDYxLCA0MywgMjIyLCA2MCwgNDMsIDIyMiwgNTksIAotICAgIDQzLCAyMjIsIDU4LCA0MywgMjIyLCA1NywgNDMsIDIyMiwgNTYsIDQzLCAyMjIsIDU1LCA0MywgMjIyLCA1NCwgNDMsIDIyMiwgCi0gICAgNTIsIDQzLCAyMjIsIDUxLCA0MywgMjIyLCA1MCwgNDMsIDIyMiwgNDksIDQzLCAyMjIsIDQ4LCA0MywgMjIyLCA0NywgNDMsIAotICAgIDIyMiwgNDYsIDQzLCAyMjIsIDQ1LCA0MywgMjIyLCA0NCwgNDMsIDIyMiwgNDMsIDQzLCAyMjIsIDQxLCA0MywgMjIyLCA0MCwgCi0gICAgNDMsIDIyMiwgMzksIDQzLCAyMjIsIDM4LCA0MywgMjIyLCAzNywgNDMsIDIyMiwgMzYsIDQzLCAyMjIsIDM1LCA0MywgMjIyLCAKLSAgICAzNCwgNDMsIDIyMiwgMzMsIDQzLCAyMjIsIDMyLCA0MywgMjIyLCAzMCwgNDMsIDIyMiwgMjksIDQzLCAyMjIsIDI4LCA0MywgCi0gICAgMjIyLCAyNywgNDMsIDIyMiwgMjYsIDQzLCAyMjIsIDI1LCA0MywgMjIyLCAyNCwgNDMsIDIyMiwgMjMsIDQzLCAyMjIsIDIyLCAKLSAgICA0MywgMjIyLCAyMSwgNDMsIDIyMiwgMTksIDQzLCAyMjIsIDE4LCA0MywgMjIyLCAxNywgNDMsIDIyMiwgMTYsIDQzLCAyMjIsIAotICAgIDE1LCA0MywgMjIyLCAxNCwgNDMsIDIyMiwgMTMsIDQzLCAyMjIsIDEyLCA0MywgMjIyLCAxMSwgNDMsIDIyMiwgMTAsIDQzLCAKLSAgICAyMjIsIDgsIDQzLCAyMjIsIDcsIDQzLCAyMjIsIDYsIDQzLCAyMjIsIDUsIDQzLCAyMjIsIDQsIDQzLCAyMjIsIDMsIDQzLCAKLSAgICAyMjIsIDIsIDQzLCAyMjIsIDEsIDQzLCAyMjIsIDAsIDQzLCAyMjEsIDI1NSwgNDMsIDIyMSwgMjUzLCA0MywgMjIxLCAyNTIsIAotICAgIDQzLCAyMjEsIDI1MSwgNDMsIDIyMSwgMjUwLCA0MywgMjIxLCAyNDksIDQzLCAyMjEsIDI0OCwgNDMsIDIyMSwgMjQ3LCA0MywgCi0gICAgMjIxLCAyNDYsIDQzLCAyMjEsIDI0NSwgNDMsIDIyMSwgMjQ0LCA0MywgMjIxLCAyNDIsIDQzLCAyMjEsIDI0MSwgNDMsIAotICAgIDIyMSwgMjQwLCA0MywgMjIxLCAyMzksIDQzLCAyMjEsIDIzOCwgNDMsIDIyMSwgMjM3LCA0MywgMjIxLCAyMzYsIDQzLCAKLSAgICAyMjEsIDIzNSwgNDMsIDIyMSwgMjM0LCA0MywgMjIxLCAyMzMsIDQzLCAyMjEsIDIzMSwgNDMsIDIyMSwgMjMwLCA0MywgCi0gICAgMjIxLCAyMjksIDQzLCAyMjEsIDIyOCwgNDMsIDIyMSwgMjI3LCA0MywgMjIxLCAyMjYsIDQzLCAyMjEsIDIyNSwgNDMsIAotICAgIDIyMSwgMjI0LCA0MywgMjIxLCAyMjMsIDQzLCAyMjEsIDIyMiwgNDMsIDIyMSwgMjE5LCA0MywgMjIxLCAyMTgsIDQzLCAKLSAgICAyMjEsIDIxNywgNDMsIDIyMSwgMjE2LCA0MywgMjIxLCAyMTUsIDQzLCAyMjEsIDIxNCwgNDMsIDIyMSwgMjEzLCA0MywgCi0gICAgMjIxLCAyMTIsIDQzLCAyMjEsIDIxMSwgNDMsIDIyMSwgMjEwLCA0MywgMjIxLCAyMDgsIDQzLCAyMjEsIDIwNywgNDMsIAotICAgIDIyMSwgMjA2LCA0MywgMjIxLCAyMDUsIDQzLCAyMjEsIDIwNCwgNDMsIDIyMSwgMjAzLCA0MywgMjIxLCAyMDIsIDQzLCAKLSAgICAyMjEsIDIwMSwgNDMsIDIyMSwgMjAwLCA0MywgMjIxLCAxOTksIDQzLCAyMjEsIDE5NywgNDMsIDIyMSwgMTk2LCA0MywgCi0gICAgMjIxLCAxOTUsIDQzLCAyMjEsIDE5NCwgNDMsIDIyMSwgMTkzLCA0MywgMjIxLCAxOTIsIDQzLCAyMjEsIDE5MSwgNDMsIAotICAgIDIyMSwgMTkwLCA0MywgMjIxLCAxODksIDQzLCAyMjEsIDE4OCwgNDMsIDIyMSwgMTg2LCA0MywgMjIxLCAxODUsIDQzLCAKLSAgICAyMjEsIDE4NCwgNDMsIDIyMSwgMTgzLCA0MywgMjIxLCAxODIsIDQzLCAyMjEsIDE4MSwgNDMsIDIyMSwgMTgwLCA0MywgCi0gICAgMjIxLCAxNzksIDQzLCAyMjEsIDE3OCwgNDMsIDIyMSwgMTc3LCA0MywgMjIxLCAxNzUsIDQzLCAyMjEsIDE3NCwgNDMsIAotICAgIDIyMSwgMTczLCA0MywgMjIxLCAxNzIsIDQzLCAyMjEsIDE3MSwgNDMsIDIyMSwgMTcwLCA0MywgMjIxLCAxNjksIDQzLCAKLSAgICAyMjEsIDE2OCwgNDMsIDIyMSwgMTY3LCA0MywgMjIxLCAxNjYsIDQzLCAyMjEsIDE2NCwgNDMsIDIyMSwgMTYzLCA0MywgCi0gICAgMjIxLCAxNjIsIDQzLCAyMjEsIDE2MSwgNDMsIDIyMSwgMTYwLCA0MywgMjIxLCAxNTksIDQzLCAyMjEsIDE1OCwgCisgICAgMCwgMjE5LCAxOCwgMjQ1LCAzMSwgNzgsIDIyMywgMjU0LCA3OCwgNTQsIDUwLCAyNDcsIDEzMiwgNTAsIDIyNSwgMTgyLCAKKyAgICA1MCwgMjU0LCAxMjYsIDI1NCwgNTcsIDQzLCAyMjYsIDMsIDQ0LCAyMjYsIDMsIDI1MywgMjE2LCA5NiwgNTAsIDI0OSwgCisgICAgMjE5LCAyNDAsIDE2NywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMTksIDQ2LCAyMSwgMjEwLCA4NiwgMjEsIDExMCwgMjEsIAorICAgIDEwNSwgMjEsIDE1OCwgMjEsIDE2MSwgMjEsIDE4OSwgMjEsIDE5NCwgMjEsIDE5OCwgMjEsIDE5NSwgMjEsIDIwMCwgMjQ5LCAKKyAgICAyMjYsIDIyMCwgMTUwLCAyMzMsIDE1LCA1MCwgMjQ1LCA5OCwgNTAsIDI0MiwgMTMwLCA1MCwgMjI0LCAxMywgNzgsIDI0OSwgCisgICAgMjE3LCAyNTMsIDIwNiwgNywgNiwgMSwgNjEsIDcsIDYsIDEsIDI1MywgMTU4LCA3LCA2LCAxLCAyNTEsIDY2LCA3LCA2LCAxLCAKKyAgICAyNDksIDYwLCA3LCA2LCAxLCA3NSwgNywgNiwgMSwgMjQ1LCA2LCA3LCA2LCAxLCAyNDMsIDIwMiwgNywgNiwgMSwgMjQyLCAKKyAgICA2MCwgNywgNiwgMSwgNzMsIDcsIDYsIDEsIDIzNSwgMTQ0LCA3LCA2LCAxLCAyMzUsIDIzLCA3LCA2LCAxLCAxNTYsIDcsIDYsIAorICAgIDEsIDE5MywgNywgNiwgMSwgMjMwLCAyNSwgNywgNiwgMSwgNzYsIDcsIDYsIDEsIDIyNiwgMTA1LCA3LCA2LCAxLCAyMjQsIAorICAgIDk2LCA3LCA2LCAxLCAxNTMsIDcsIDYsIDEsIDIyMiwgOTEsIDcsIDYsIDEsIDIxNywgMTUyLCA3LCA2LCAxLCA3MCwgNywgNiwgCisgICAgMSwgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMiwgOTgsIDcsIDYsIDEsIDIxMSwgMTc4LCA3LCA2LCAxLCAyMTEsIDExNywgNywgCisgICAgNiwgMSwgMjEwLCAxNTksIDQzLCA0MiwgMTI3LCAyMjMsIDUwLCAyMTksIDQ2LCA0NCwgNDIsIDEyNywgMjUwLCAzMSwgMjU1LCAKKyAgICAxNCwgMTIxLCAyMzIsIDIxMywgMjQyLCAxMzcsIDI1NSwgMTQsIDcsIDQsIDEsIDYxLCA3LCA0LCAxLCAyNTMsIDE1OCwgNywgCisgICAgNCwgMSwgMjUxLCA2NiwgNywgNCwgMSwgMjQ5LCA2MCwgNywgNCwgMSwgNzUsIDcsIDQsIDEsIDI0NSwgNiwgNywgNCwgMSwgCisgICAgMjQzLCAyMDIsIDcsIDQsIDEsIDI0MiwgNjAsIDcsIDQsIDEsIDczLCA3LCA0LCAxLCAyMzUsIDE0NCwgNywgNCwgMSwgMjM1LCAKKyAgICAyMywgNywgNCwgMSwgMTU2LCA3LCA0LCAxLCAxOTMsIDcsIDQsIDEsIDIzMCwgMjUsIDcsIDQsIDEsIDc2LCA3LCA0LCAxLCAKKyAgICAyMjYsIDEwNSwgNywgNCwgMSwgMjI0LCA5NiwgNywgNCwgMSwgMTUzLCA3LCA0LCAxLCAyMjIsIDkxLCA3LCA0LCAxLCAyMTcsIAorICAgIDE1MiwgNywgNCwgMSwgNzAsIDcsIDQsIDEsIDIxNCwgMTA1LCA3LCA0LCAxLCAyMTIsIDk4LCA3LCA0LCAxLCAyMTEsIDE3OCwgCisgICAgNywgNCwgMSwgMjExLCAxMTcsIDcsIDQsIDEsIDIxMCwgMTU5LCA0MywgMjQ5LCA5OSwgMTI3LCA2NywgMjMyLCAyMTMsIDQ0LCAKKyAgICAyNDksIDk5LCAxMjcsIDE4MiwgMjI4LCA3MywgMjE5LCAxOCwgMjM1LCAxOTMsIDI0NSwgMzEsIDc4LCAyNTAsIDE3NiwgNTAsIAorICAgIDIyNCwgMjI4LCA1MCwgMjQ5LCA5OCwgNTAsIDIxMSwgNDAsIDUwLCAyNTEsIDEzNSwgMTMwLCAyMjEsIDE3MywgNTAsIDI0OCwgCisgICAgMSwgMjQ5LCAxNjMsIDUwLCAyNDQsIDEzNiwgMjI2LCAxNTQsIDIzNSwgMjM4LCAyMzMsIDQyLCA1MiwgMjU0LCAxMTAsIAorICAgIDIyMywgMjU0LCA3OCwgMjI4LCA1MiwgNTAsIDIxOSwgNTIsIDI0MCwgMTY4LCAyMjMsIDEwMiwgNTAsIDIzMSwgMjMyLCAKKyAgICAyNDgsIDcxLCA1MCwgMjI1LCAyMSwgNTAsIDIxOCwgMjMsIDEwNSwgMjE4LCAyMywgMTU4LCAyNTUsIDMsIDI1NSwgMTQsIAorICAgIDIzMCwgMjI4LCA1MCwgMjI1LCA2OCwgNTAsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjUwLCAxODMsIDIxOCwgMjMsIDExMCwgCisgICAgMjMxLCAxNDgsIDIyNiwgMTU0LCAyMzUsIDIzOCwgMjIyLCAyNDcsIDUyLCAyNTQsIDExMCwgMjIzLCAyNTQsIDc4LCAyMTIsIAorICAgIDExNCwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMjEyLCAxMTQsIDI0NCwgCisgICAgMiwgMTM0LCAyMjQsIDE5LCAyMzUsIDE5MywgMjI0LCAxMywgNzgsIDcsIDYsIDEsIDExNSwgMiwgMjQyLCAxMzYsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzAsIDcsIDYsIDEsIDExNSwgMiwgMTgyLCA3LCA2LCAxLCAKKyAgICAxMTUsIDIsIDI0OCwgMSwgNywgNiwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNDgsIDcsIDYsIDEsIDI1NCwgMjQzLCA3LCA2LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMTYwLCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTYwLCAyLCAxNDIsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMTYwLCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAKKyAgICAyNDIsIDEzNiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDI1MCwgMzAsIDcsIDYsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDI0NSwgNTksIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE4MiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTQ0LCAyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMCwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAxODIsIDcsIDYsIDEsIDE0NCwgMiwgMjQ4LCAxLCAyMzAsIDg0LCA1MCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICA5MSwgNywgNiwgMSwgMTA0LCAyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAyLCAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgCisgICAgMjUwLCAzMCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDIxNiwgMTUxLCA3LCA0LCAxLCAyMjAsIDc2LCAyMjIsIDkxLCA3LCA0LCAxLCAxMTUsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDMwLCA3LCA0LCAxLCAxMTUsIDIsIDE4MiwgNywgNCwgMSwgCisgICAgMTE1LCAyLCAyNDgsIDEsIDcsIDQsIDEsIDExNSwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA0LCAxLCAyNTQsIDI0MywgNywgNCwgCisgICAgMSwgMjUxLCA2NywgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDE2MCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgMTQyLCAKKyAgICA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDE2MCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgCisgICAgMjQyLCAxMzYsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAxNDIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyNTAsIDMwLCA3LCA0LCAKKyAgICAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyNDUsIDU5LCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAxODIsIDcsIDQsIAorICAgIDEsIDE0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDI1MCwgMzAsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMTgyLCA3LCA0LCAxLCAxNDQsIDIsIDI0OCwgMSwgMjQ3LCAxNjksIDUwLCA3LCA0LCAxLCAxNDQsIAorICAgIDIsIDkxLCA3LCA0LCAxLCAxMDQsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDE0MiwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyNTAsIDMwLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDE0MiwgNywgNCwgMSwgCisgICAgMjE2LCAxNTEsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDExNSwgMiwgMjMxLCAyMzIsIDcsIDQsIAorICAgIDEsIDExNSwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAKKyAgICAxNDYsIDcsIDYsIDEsIDExNSwgMiwgMjI2LCAyMjQsIDcsIDQsIDEsIDExNSwgMiwgMjI2LCAyMjQsIDcsIDYsIDEsIDI1MSwgCisgICAgNjcsIDIsIDE0MiwgNywgNCwgMSwgMjUxLCA2NywgMiwgMTQyLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAyNTAsIDMwLCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyNTEsIDY3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMjUxLCA2NywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyNDksIDYxLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDI0OSwgCisgICAgNjEsIDIsIDkxLCA3LCA0LCAxLCAyNDksIDYxLCAyLCA5MSwgNywgNiwgMSwgMTYwLCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMTYwLCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTYwLCAyLCAyNTEsIDE0NiwgCisgICAgNywgNiwgMSwgMTYwLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgCisgICAgMjI0LCA3LCA0LCAxLCAxNjAsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgCisgICAgMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDI1MSwgMTQ2LCA3LCA2LCAKKyAgICAxLCAyNDMsIDIwMywgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwMywgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAKKyAgICAzMCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjQyLCA2MSwgMiwgOTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjEsIDIsIDkxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMTgyLCA3LCA2LCAxLCAKKyAgICAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMiwgNywgNiwgMSwgMjQwLCAxNTQsIAorICAgIDIsIDI1MSwgMTQ2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUxLCAxNDYsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyMjYsIAorICAgIDIyNCwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgMjI0LCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgNTksIDQ4LCA3LCA0LCAKKyAgICAxLCAyNDcsIDExOSwgNzMsIDcsIDYsIDI3LCAyMzYsIDMxLCA3LCA0LCAyNywgMjM2LCAzMSwgNywgNiwgMSwgMjM1LCAxNDUsIAorICAgIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDE4MywgCisgICAgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIzMywgMjM5LCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgCisgICAgMTQyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMTQyLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAxODMsIDcsIDQsIDEsIAorICAgIDIzMywgMTQ5LCAyLCAyNTAsIDE4MywgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIAorICAgIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAxNDIsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDE0MiwgNywgNiwgMSwgMjMwLCAyNiwgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyNTAsIAorICAgIDIzNCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzMCwgMjYsIDIyNCwgMjA0LCAyNTEsIDc4LCAKKyAgICAyNTQsIDU3LCA3LCA2LCAxLCAyNDUsIDEzOCwgNywgNCwgMSwgMjQ1LCAxMzgsIDcsIDYsIDEsIDE0NCwgMiwgMjMxLCAyMzIsIAorICAgIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDE0NCwgMiwgMjUxLCAxNDYsIDcsIDQsIDEsIDE0NCwgMiwgCisgICAgMjUxLCAxNDYsIDcsIDYsIDEsIDE0NCwgMiwgNTIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA1MiwgMTQyLCA3LCA2LCAyNywgCisgICAgMjI2LCAyMzQsIDcsIDQsIDI3LCAyMjYsIDIzNCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDE0MiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDE0MiwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMTgzLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMjUwLCAKKyAgICAxODMsIDcsIDYsIDEsIDIyMywgMjI0LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDI1MCwgMjM0LCA3LCAKKyAgICA2LCAxLCAyMjIsIDkyLCAyLCAxNDIsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDE0MiwgNywgNiwgMSwgMjIyLCA5MiwgMiwgCisgICAgMjUwLCAzMCwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjUwLCAzMCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjUwLCAxODMsIDcsIAorICAgIDQsIDEsIDIyMiwgOTIsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjIyLCAKKyAgICA5MiwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDI1MCwgMTgzLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyNTAsIDIzNCwgCisgICAgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDkxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgOTEsIDcsIDYsIDEsIDEwNCwgMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAxMDQsIDIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMTA0LCAyLCAyNTEsIDE0NiwgNywgNCwgMSwgMTA0LCAyLCAyNTEsIDE0NiwgNywgNiwgMSwgMTA0LCAKKyAgICAyLCAyMjIsIDIzNCwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjIyLCAyMzQsIDQ4LCA3LCA2LCAxLCAxMDQsIDIsIDUyLCAxNDIsIAorICAgIDcsIDQsIDEsIDEwNCwgMiwgNTIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyMjYsIDIyNCwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjUwLCAzMCwgNywgNCwgMSwgMjEyLCA5OSwgMiwgMjUwLCAzMCwgNywgCisgICAgNiwgMSwgMjExLCAxMTgsIDIsIDI1MCwgMzAsIDcsIDQsIDEsIDIxMSwgMTE4LCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMTEsIAorICAgIDExOCwgMiwgMjQ4LCAxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMTQyLCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgMTQyLCA3LCAKKyAgICA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTAsIAorICAgIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTk5LCAyMjIsIDkxLCAKKyAgICA3LCA0LCAxLCA1NywgMiwgOTEsIDcsIDYsIDEsIDU3LCAyLCAxMDMsIDcsIDYsIDEsIDU3LCAyLCAyMTYsIDExLCA3LCA0LCAKKyAgICAxLCA1NywgMiwgMjE2LCAxMSwgNywgNiwgMSwgMTM4LCAxOTQsIDcsIDQsIDEsIDEzOCwgMTk0LCA3LCA2LCAxLCAyMDQsIAorICAgIDc2LCA3LCA2LCAxLCAyNTEsIDY3LCAyLCAxMDMsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDEwMywgNywgNiwgMSwgMjU0LCAKKyAgICAyMTksIDI0OSwgNjAsIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDEwMywgNywgNiwgMSwgMjQ5LCA2MSwgMiwgMjE2LCAxMSwgNywgCisgICAgNCwgMSwgMjQ5LCA2MSwgMiwgMjE2LCAxMSwgNywgNCwgMSwgMjE1LCA5NCwgMjQ4LCA1NCwgNywgNiwgMSwgMjIzLCA0OSwgCisgICAgNzUsIDcsIDYsIDEsIDIyMSwgMTk1LCA3LCA2LCAxLCAyMDQsIDc1LCA3LCA2LCAxLCAyNDUsIDcsIDIsIDEwMywgNywgNCwgCisgICAgMSwgMjQ1LCA3LCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAxMDMsIDcsIDYsIDEsIDI0MywgMTA3LCA3LCA0LCAxLCAKKyAgICAyNDAsIDIwMSwgNywgNiwgMSwgMjM1LCAxODUsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNiwgMSwgMjM1LCAyNCwgCisgICAgMiwgMTAzLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAxMDMsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxMzAsIDcsIDQsIDEsIAorICAgIDIzMywgMTAwLCAyLCA5MSwgNywgNiwgMSwgMjE1LCA5NCwgMTkzLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA0MywgMTAzLCA3LCAKKyAgICA0LCAxLCAyMzAsIDI2LCAyLCAxOTksIDQ0LCAyMzMsIDM2LCA3LCA2LCAxLCAxNDQsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQwLCAyNDgsIDcsIDQsIDEsIDE0NCwgMiwgMjQwLCAyNDgsIDcsIDYsIDEsIDIyNiwgMjE5LCA3LCA0LCAKKyAgICAxLCAyMjYsIDIxOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDEwMywgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDEwMywgNywgMSwgCisgICAgMjEwLCAyMTQsIDcsIDYsIDEsIDEzOCwgMTA1LCA3LCA0LCAxLCAxMzgsIDEwNSwgNywgNiwgMSwgMjQ1LCA3NSwgNywgMSwgCisgICAgMjIzLCA0OSwgMjQ1LCA3NiwgMjMyLCAxMjMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMjYsIDY2LCAxMDMsIDcsIDYsIDEsIAorICAgIDIxNywgMTUzLCAyLCAxMDMsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAxMDMsIDcsIDYsIDEsIDIxNywgMTUzLCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDgsIDcsIDYsIDEsIAorICAgIDIxNCwgMTU3LCA3LCA2LCAxLCAyMTQsIDEwNiwgMiwgMTAzLCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTAzLCA3LCA0LCAxLCAKKyAgICAyMTEsIDExOCwgMiwgMTAzLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgOTEsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCA5MSwgNywgCisgICAgNiwgMSwgMjQ1LCA4LCA3LCA2LCAxLCAyNDUsIDksIDIyMywgNDgsIDcsIDQsIDEsIDI0NSwgOSwgMjIzLCA0OCwgNywgNCwgCisgICAgMSwgMjQ1LCA5LCAyLCAyMTcsIDc3LCA3LCAxLCAxMTMsIDIsIDkxLCA3LCA2LCAxLCAxMzgsIDE4OSwgNywgNCwgMSwgMTM4LCAKKyAgICAxODksIDcsIDEsIDIzNSwgMTkzLCAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCAxLCAyMTEsIDE4MSwgNywgMSwgCisgICAgMjQ4LCA0NywgMjUwLCAxMSwgNywgMSwgMjMzLCA3NywgMjUwLCAxMSwgNywgMSwgMjU0LCAxMzcsIDI1MCwgMTEsIDcsIDEsIAorICAgIDIyMywgNTUsIDI1MCwgMTEsIDcsIDYsIDEsIDI0NiwgNDAsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyNDksIDYxLCAyLCA0LCAKKyAgICAxLCAyMTAsIDE2MCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0NiwgNDAsIDIsIDI1MCwgMjM0LCA3LCA2LCAxLCAyMzIsIAorICAgIDE4OCwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMzIsIDE4OCwgNywgNiwgMSwgCisgICAgMjI4LCAxODYsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDQsIDEsIDIzNSwgMTQ0LCA3LCA0LCAxLCAyMjgsIDE4NiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTE1LCAyLCAyNTAsIDIzNCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIAorICAgIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAyMzQsIDcsIAorICAgIDQsIDEsIDE0NCwgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDEwNCwgMiwgMjUwLCAKKyAgICAyMzQsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgCisgICAgMjMxLCAyMzIsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDI0OCwgMiwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMTA0LCAyLCAyNDgsIDIsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjE1LCA5NCwgNzUsIDcsIDYsIDEsIDExNSwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAKKyAgICAyMzIsIDcsIDQsIDEsIDExNSwgMiwgMjQ4LCAyLCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDExNSwgMiwgNTksIDc3LCAyMiwgCisgICAgMjMxLCAyMzIsIDcsIDQsIDEsIDExNSwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIDI1NCwgMjQ0LCAyLCAKKyAgICAyMzEsIDIzMiwgNywgNCwgMSwgMjU0LCAyNDQsIDIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgOTEsIDcsIDQsIAorICAgIDEsIDI0MywgMjAzLCAyLCA5MSwgNywgNiwgMSwgMjQzLCAyMDMsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgCisgICAgMjUwLCAyMzQsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDI1MCwgMjM0LCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyNTAsIDIzNCwgCisgICAgNywgNiwgMSwgMTQ0LCAyLCAyMjYsIDIyNCwgNywgNCwgMSwgMTQ0LCAyLCAyMjYsIDIyNCwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyMjYsIDIyNSwgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAxNDQsIDIsIDIyNiwgMjI1LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDI0NSwgOSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjUwLCAyMzQsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCAKKyAgICAyNTAsIDIzNCwgNywgNiwgMSwgMjQ2LCAzOSwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNCwgMSwgMjEwLCAxNTksIDcsIDQsIDEsIAorICAgIDI0NiwgMzksIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAxNDIsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAxNDIsIDcsIDYsIDEsIAorICAgIDI0MCwgMTk5LCA3LCA2LCAxLCAyMTEsIDE4MSwgNywgNiwgMSwgMjMwLCAyNiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIzMCwgCisgICAgMjYsIDIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTE1LCAyLCAKKyAgICAyMjIsIDIzNCwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDI1NCwgMjQ0LCAyLCAxNDIsIDcsIDQsIDEsIDI1NCwgMjQ0LCAyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgMjE4LCAxMDMsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjE4LCAxMDMsIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDExNSwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMTUsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTE1LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDExNSwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAKKyAgICAxLCAxNjAsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgCisgICAgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA0LCAxLCAxNjAsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMjQwLCAKKyAgICAxNTQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzNSwgMTkzLCAyNTEsIDE0NiwgNywgNCwgMSwgMTQ0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDYsIDEsIDIyMywgCisgICAgMjI0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCA1MiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIyMywgCisgICAgMjI0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIAorICAgIDYsIDEsIDEwNCwgMiwgNTIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxMDQsIDIsIDUyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTA0LCAKKyAgICAyLCAyMzUsIDE5MywgMjUxLCAxNDYsIDcsIDQsIDEsIDEwNCwgMiwgMjM1LCAxOTMsIDI1MSwgMTQ2LCA3LCA2LCAxLCAyMjIsIAorICAgIDkyLCAyLCAyNDksIDIyMCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDI0OSwgMjIwLCA1MSwgNywgNiwgMSwgMjE3LCAKKyAgICAxNTMsIDIsIDI0OSwgMjIwLCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0OSwgMjIwLCA1MSwgNywgNiwgMSwgMjEwLCAKKyAgICAyMzEsIDcsIDQsIDEsIDIxMCwgMjMxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTAsIDIzNCwgNywgNCwgMSwgMjQyLCA2MSwgCisgICAgMiwgMjUwLCAyMzQsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDE5OSwgNDQsIDIzMywgMzYsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIAorICAgIDI0OSwgMTAwLCA3LCA2LCAxLCAyMjYsIDEzNCwgNywgNCwgMSwgMjI2LCAxMzQsIDcsIDYsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAxMDMsIDcsIDYsIDEsIDExNSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAxMTUsIDIsIAorICAgIDU5LCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDE4MywgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDE4MywgNywgNiwgMSwgCisgICAgMTQ0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgNCwgMSwgMTQ0LCAyLCAyNDgsIDIsIDIyLCAyMzEsIDIzMiwgNywgCisgICAgNiwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgMjE2LCA4OSwgMjIsIDIzMSwgCisgICAgMjMyLCA3LCA2LCAxLCAxNDQsIDIsIDU5LCA0OCwgNywgNCwgMSwgMTQ0LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDc3LCAyMiwgMjMxLCAyMzIsIDcsIDYsIDEsIAorICAgIDIxMSwgMTE4LCAyLCAyMzEsIDIzMiwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMzMsIDE0OSwgCisgICAgMiwgMjQ5LCAxMDAsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgMjQ5LCAKKyAgICAxMDAsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NCwgNywgNCwgMSwgMjQ4LCAxNDMsIDI0NywgMjIwLCA3LCA0LCAxLCAKKyAgICAyMjQsIDMxLCAyNDcsIDIyMCwgNywgNiwgMSwgMTE1LCAyLCA5MSwgNywgNiwgMSwgMjUxLCA2NywgMiwgOTEsIDcsIDQsIDEsIAorICAgIDI1MSwgNjcsIDIsIDkxLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMTMwLCA3LCA2LCAxLCAyMTcsIDE1MywgMiwgMjQ3LCAKKyAgICAyNTUsIDkxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAyMTcsIDI1MCwgMjE3LCA3NywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDIxNywgMjUwLCAyMTcsIDc3LCA3LCA2LCAxLCAyNDIsIDE4MCwgMjE4LCAxMjksIDcsIDQsIDEsIDI0MiwgMTgwLCAyMTgsIAorICAgIDEyOSwgNywgNiwgMSwgNTcsIDIsIDkxLCA3LCA2LCAxLCAxMDQsIDEzMCwgNywgNiwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIAorICAgIDcsIDYsIDEsIDE2MCwgMiwgOTEsIDcsIDQsIDEsIDE2MCwgMiwgOTEsIDcsIDYsIDEsIDIzNSwgMTQ1LCAyLCA5MSwgNywgNCwgCisgICAgMSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA2LCAxLCA0LCAyMjQsIDk3LCAyLCAyNDEsIDUyLCAyMTcsIDc3LCA3LCA0LCAxLCAKKyAgICAyMjQsIDk3LCAyLCAyNDEsIDUyLCAyMTcsIDc3LCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgOTEsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCA5MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDkxLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgOTEsIDcsIDQsIDEsIAorICAgIDIxNSwgOTQsIDYxLCA3LCA0LCAxLCAyNTQsIDE0MywgNywgNCwgMSwgMjE1LCA5NCwgMjU0LCAxNDMsIDcsIDQsIDEsIDU3LCAKKyAgICAyLCAxMDMsIDcsIDQsIDEsIDIwNCwgNzYsIDcsIDQsIDEsIDI1MSwgNjcsIDIsIDI0OSwgMTAwLCA3LCA0LCAxLCAyNDksIAorICAgIDYxLCAyLCAyMTcsIDc3LCA3LCA0LCAxLCAyNDksIDYxLCAyLCAxMDMsIDcsIDQsIDEsIDIyMywgNDksIDc1LCA3LCA0LCAxLCAKKyAgICAyMjEsIDE5NSwgNywgNCwgMSwgMjIxLCAxOTYsIDIsIDEwMywgNywgNCwgMSwgMjA0LCA3NSwgNywgNCwgMSwgMjIzLCA0OSwgCisgICAgMjA0LCA3NSwgNywgNCwgMSwgMjIzLCA0OSwgMjA0LCAxNjAsIDIsIDEwMywgNywgNCwgMSwgMjUwLCAwLCAyMjMsIDQ5LCAKKyAgICAyMDQsIDc1LCA3LCA0LCAxLCAyNDcsIDExOSwgMjM1LCAxNDUsIDIsIDkxLCA3LCA0LCAxLCAyNDMsIDIwMywgMiwgMTAzLCAKKyAgICA3LCA0LCAxLCAxMTksIDI0MywgMjAyLCA3LCAxLCA0LCA2LCAyNDMsIDIwMiwgNywgNCwgMSwgMjQzLCAxMDcsIDcsIDQsIDEsIAorICAgIDIyMywgMTUxLCAyNDAsIDI0OCwgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MCwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMTAzLCAKKyAgICA3LCA0LCAxLCAyNDEsIDIwOCwgMiwgMTAzLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMTg1LCAKKyAgICA3LCAxLCA0LCA2LCA3MywgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAKKyAgICAyLCAyNTIsIDQxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyMzMsIDEsIDcsIDQsIDEsIAorICAgIDIxNSwgOTQsIDE5MywgNywgNCwgMSwgMjE1LCA5NCwgMjMyLCA1MCwgMiwgMTk5LCAyMzMsIDM2LCA3LCA0LCAxLCAyMzIsIAorICAgIDUwLCAyLCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIyMywgNTUsIAorICAgIDEwMywgNywgMSwgNCwgNiwgMjMwLCAyNSwgNywgNCwgMSwgMjUyLCAxMzQsIDc2LCA3LCAxLCA0LCA2LCAyMjYsIDIzNCwgNywgCisgICAgNCwgMSwgMjUwLCAwLCAyMjYsIDIwMSwgNywgNCwgMSwgMjI1LCAxMzMsIDcsIDQsIDEsIDIxNSwgOTQsIDE1MywgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIAorICAgIDEwMywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDE5OSwgMjMzLCAzNiwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIAorICAgIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNDQsIDg3LCA3LCA0LCAxLCAyMjMsIDQ5LCAyMjMsIDIyNCwgMiwgMjQ0LCA4NywgNywgCisgICAgMSwgNCwgNiwgMTUzLCA3LCAxLCA0LCA2LCAyMzUsIDE5MywgMTUzLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCAxMDMsIDcsIDQsIAorICAgIDEsIDI0NSwgNzUsIDcsIDQsIDEsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgMjE4LCAxMDMsIDIyLCAxMDMsIDcsIDQsIDEsIAorICAgIDIxOCwgMjMxLCAyMjMsIDQ5LCAyNDUsIDc1LCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE1LCAKKyAgICA5NCwgMjE3LCAxNTIsIDcsIDQsIDEsIDIxNywgMTUzLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDEwNCwgMTMwLCA3LCAKKyAgICA0LCAxLCAyMTQsIDE1NywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDEwMywgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDUsIDcsIAorICAgIDQsIDEsIDIxNSwgOTQsIDIxMiwgOTgsIDcsIDQsIDEsIDIxNSwgOTQsIDIxMSwgMTE3LCA3LCAxLCA0LCA2LCAyMTEsIDExNywgCisgICAgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMjEwLCAxNjAsIDIsIDI0OSwgMTAwLCA3LCA0LCAKKyAgICAxLCAyNDUsIDgsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjQ5LCAxMDAsIDcsIDEsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgMSwgCisgICAgMjI1LCAxMzksIDIxMywgMTM1LCAyNDMsIDI0OSwgNywgMSwgMjM1LCAxOTMsIDI0MiwgMTgwLCAyMTgsIDEyOSwgNywgMSwgCisgICAgMjE4LCAxMTAsIDI1MSwgNjYsIDcsIDEsIDI1MSwgMjQ2LCAyNTAsIDExLCA3LCAxLCA0LCA2LCAyNTMsIDE1OCwgNywgNCwgCisgICAgMSwgMjUwLCAwLCAyMDQsIDc1LCA3LCAxLCA0LCA2LCAyNDMsIDIwMywgMiwgMTAzLCA3LCAxLCA0LCA2LCAyNDIsIDYwLCA3LCAKKyAgICA0LCAxLCAyMzUsIDE0NSwgMiwgMjQ5LCAxMjcsIDcsIDQsIDEsIDIxNSwgOTQsIDIzNSwgMjMsIDcsIDEsIDQsIDYsIDE1NiwgCisgICAgNywgNCwgMSwgMjI0LCA5NywgMiwgMTAzLCA3LCAxLCAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCAxLCAyMjMsIDQ5LCAKKyAgICAyNDIsIDE4MCwgMjE4LCAxMzAsIDIsIDkxLCA3LCA0LCAxLCAyNDYsIDQwLCAyNDcsIDIyMCwgNywgNCwgMSwgMjQ4LCAyNiwgCisgICAgMjQ3LCAyMjAsIDcsIDQsIDEsIDI0NiwgNDAsIDI0NywgMjIxLCAyLCAyNDksIDEwMCwgNywgNCwgMSwgMjE1LCAxODUsIAorICAgIDI0NywgMjIwLCA3LCA0LCAxLCAyMTYsIDIzNSwgMjQ3LCAyMjAsIDcsIDQsIDEsIDIxNywgMjksIDI0NywgMjIxLCAyLCAKKyAgICAyNDksIDEwMCwgNywgNCwgMSwgMjQ0LCAxMzQsIDI0NywgMjIwLCA3LCA0LCAxLCAyMzIsIDEwMCwgMjQ3LCAyMjAsIDcsIDQsIAorICAgIDEsIDIzMiwgNTEsIDI0NywgMjIwLCA3LCAxLCAyNTEsIDI0NiwgMjI1LCAxODEsIDcsIDEsIDI1MSwgMjU0LCAyMjUsIDE4MSwgCisgICAgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MSwgMiwgMjQ0LCA4NywgNywgNCwgMSwgMjE1LCA5NCwgMjQyLCA2MSwgMiwgMjQ0LCAKKyAgICA4OCwgMjIsIDIxNywgNzcsIDU4LCAxLCA0LCAyNDIsIDYwLCA1OCwgMSwgNCwgMjQyLCA2MSwgMiwgMTAzLCA1OCwgMSwgNCwgCisgICAgMjM1LCAxNDQsIDU4LCAxLCA0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAxNTMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMjMsIAorICAgIDIyNCwgMiwgMTAzLCA1OCwgMSwgNCwgNiwgMjM1LCAxOTMsIDE1MywgNTgsIDEsIDQsIDIxMiwgOTgsIDU4LCAxLCA0LCAKKyAgICAyMTEsIDExNywgNTgsIDEsIDIyNCwgMTkwLCA1OCwgMSwgNTIsIDIyNCwgMTkwLCA1OCwgMSwgMjE1LCA5NCwgMjQ5LCAyMTksIAorICAgIDU4LCAxLCAyNTQsIDU3LCA1OCwgMSwgMjIzLCA0OSwgMjQ5LCAyMTksIDU4LCAxLCA0NCwgMTYzLCAyMjIsIDIzMywgNTgsIAorICAgIDEsIDQzLCAxNjMsIDIyMiwgMjMzLCA1OCwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA1OCwgMSwgMjIzLCA0OSwgMjQyLCAKKyAgICAxODAsIDIxOCwgMTI5LCA1OCwgMSwgNDMsIDI1MywgMjQ5LCA1OCwgMSwgNDQsIDI1MywgMjQ5LCA1OCwgMSwgMTIwLCAyNTMsIAorICAgIDI0OSwgNTgsIDEsIDEyNCwgMjUzLCAyNDksIDU4LCAxLCAyNTAsIDMxLCAyNTUsIDE0LCAyNTAsIDIzNCwgNTgsIDEsIDY3LCAKKyAgICAyMzIsIDIxMywgNTgsIDEsIDIzMSwgMjMyLCA1OCwgMSwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjQyLCAxMzcsIDI1NSwgCisgICAgMTQsIDU4LCAxLCAxMjEsIDY3LCAyMzIsIDIxMywgNTgsIDEsIDEyMSwgMjMxLCAyMzIsIDU4LCAxLCAxMjEsIDI0MiwgMTM3LCAKKyAgICAyNTUsIDE0LCA1OCwgMSwgMTIxLCAyNTUsIDMsIDI1NSwgMTQsIDU4LCAxLCAyMTUsIDIyMiwgMjQ5LCAyMjYsIDU4LCAxLCAKKyAgICAxNjMsIDIxNSwgMjIyLCAyNDksIDIyNiwgNTgsIDEsIDI1MCwgMTczLCA0NCwgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDI1MCwgCisgICAgMTczLCA0MywgMTYzLCAyMjIsIDIzMywgNTgsIDEsIDEyMCwgMjE3LCA4NywgNTgsIDEsIDEyNCwgMjE3LCA4NywgNTgsIDEsIAorICAgIDk2LCA1MCwgNTgsIDEsIDIzMCwgMTgyLCA1MCwgMjUxLCAxNDYsIDU5LCA0OCwgMjIyLCAyMzQsIDQ4LCAyMjYsIDIyNCwgNCwgCisgICAgMTgyLCA1MiwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMjIzLCAzNiwgMTAzLCA1OCwgMSwgMjQ5LCAxMzEsIDI1NSwgMTQsIAorICAgIDU4LCAxLCA0LCAyNDMsIDEwNywgNTgsIDEsIDQsIDE1NiwgNTgsIDEsIDQsIDIyMiwgOTEsIDU4LCAxLCA0LCAyMTEsIDE3OCwgCisgICAgNTgsIDEsIDQsIDIyMywgNDksIDI0MiwgMTgwLCAyMTgsIDEyOSwgNTgsIDEsIDI0NSwgMjAsIDEzOCwgMTMwLCA1OCwgMSwgCisgICAgMTI1LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMTM4LCAxMzAsIDU4LCAxLCAKKyAgICAyNDUsIDE5LCAxMzgsIDEzMCwgNTgsIDEsIDIxMCwgMjU0LCAyNDgsIDQ0LCAxMzgsIDc4LCA1OCwgMSwgMjExLCA3MCwgCisgICAgMjQ4LCA0NCwgMTM4LCA3OCwgNTgsIDEsIDIxMywgMTMzLCA1OCwgMSwgMjE0LCAxODYsIDU4LCAxLCA1MiwgMjU0LCA1NywgCisgICAgNTgsIDEsIDEyMSwgMTI0LCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgMTIwLCAyNTMsIDI0OSwgNTgsIDEsIDEyMSwgNDMsIAorICAgIDI1MywgMjQ5LCA1OCwgMSwgMTIxLCA0NCwgMjUzLCAyNDksIDU4LCAxLCAxMjEsIDIyMiwgMjMzLCA1OCwgMSwgMjMwLCAKKyAgICAyMjQsIDI0MiwgMTM3LCAyNTUsIDE0LCA1OCwgMSwgMjMwLCAyMjQsIDUyLCAyNDIsIDEzNywgMjU1LCAxNCwgNTgsIDEsIAorICAgIDIzMCwgMjI0LCA1MiwgMjU1LCAzLCAyNTUsIDE0LCA1OCwgMSwgMTIxLCAxODIsIDU4LCAxLCAyMjMsIDE1NywgMjQ5LCAKKyAgICAyMjYsIDU4LCAxLCAyNTIsIDU4LCAxMjUsIDIxNiwgMzAsIDU4LCAxLCAyNDUsIDE0MywgMTI1LCAyMTYsIDMwLCA1OCwgMSwgCisgICAgMjUyLCA1OCwgMTIxLCAyMTYsIDMwLCA1OCwgMSwgMjQ1LCAxNDMsIDEyMSwgMjE2LCAzMCwgNTgsIDEsIDIyMCwgNTQsIDU4LCAKKyAgICAxLCAyMDQsIDIyMCwgNTQsIDU4LCAxLCAxMjEsIDQzLCA3NCwgMzgsIDI0MiwgMTM3LCAyNTUsIDE0LCAzOCwgMjU1LCAzLCAKKyAgICAyNTUsIDE0LCAzOCwgMjUwLCAzMSwgMjU1LCAxNCwgMzgsIDE4MiwgMzgsIDIzMSwgMjMyLCAzOCwgMjI2LCAxMTksIDM4LCAKKyAgICAyNTEsIDE0NiwgMzgsIDU5LCA0OCwgMzgsIDI0OCwgMSwgMzgsIDI0MSwgNTIsIDQ4LCAzOCwgMjIyLCAyMzQsIDQ4LCAzOCwgCisgICAgNTIsIDI1NSwgMywgMjU1LCAxNCwgMzgsIDI1MCwgMjM0LCAzOCwgNjcsIDIzMiwgMjE0LCA0OCwgMzgsIDUyLCA2NywgMjMyLCAKKyAgICAyMTQsIDQ4LCAzOCwgNTIsIDI0MiwgMTM3LCAyNTUsIDE0LCAzOCwgMjUwLCAyNTUsIDM4LCAyMzUsIDE5MywgMjUxLCAxNDYsIAorICAgIDM4LCAyMTUsIDk0LCAyNDksIDIyMCwgNDgsIDM4LCAyNDksIDIyMCwgNDgsIDM4LCAyMjMsIDQ5LCAyNDksIDIyMCwgNDgsIAorICAgIDM4LCAyNDksIDIyMCwgNzcsIDIyMiwgMjUxLCAzOCwgMjQyLCAxMzcsIDI1NSwgMTUsIDUxLCAzOCwgMjU1LCAzLCAyNTUsIAorICAgIDE1LCA1MSwgMzgsIDQzLCAyMTcsIDg4LCA1MSwgMzgsIDQ0LCAyMTcsIDg4LCA1MSwgMzgsIDQzLCAyNTQsIDExMCwgNDgsIAorICAgIDM4LCAyNDAsIDI0OCwgMzgsIDQzLCAxNjMsIDIyMiwgMjM0LCA1MSwgMzgsIDEyMCwgMjE3LCA4OCwgNTEsIDM4LCAxMjQsIAorICAgIDIxNywgODgsIDUxLCAzOCwgOTYsIDUsIDUxLCAzOCwgMjMwLCAxODIsIDUsIDUxLCAzOCwgMjI2LCA2NCwgMjQxLCA1MiwgCisgICAgNTEsIDM4LCAyMjMsIDU1LCAyNDEsIDUyLCA1MSwgMzgsIDU5LCA1MSwgMzgsIDI0OCwgMiwgNTEsIDM4LCAyMjIsIDIzNCwgCisgICAgNTEsIDM4LCAyNDksIDIyMCwgNTEsIDM4LCAyNTAsIDE4MywgMzgsIDIyNiwgMjI0LCAzOCwgNjcsIDIzMiwgMjE0LCA1MSwgCisgICAgMzgsIDI1MSwgMTQwLCA1MSwgMzgsIDIzNSwgMTkzLCA1MiwgMjU0LCAyNCwgNTEsIDM4LCAyNTAsIDIzNSwgNTEsIDM4LCAKKyAgICAyNTAsIDMxLCAyNTUsIDE1LCA1MSwgMzgsIDI1MSwgMTQ3LCA1MSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0NywgNTEsIDM4LCAKKyAgICAyMTYsIDg5LCA1MSwgMzgsIDIzMSwgMjMzLCA1MSwgMzgsIDEyMSwgMjMyLCAyMTMsIDM4LCA1MiwgMTIxLCAyMzIsIDIxMywgCisgICAgMzgsIDIxNiwgODksIDIyNiwgMTIwLCAzOCwgMjE5LCAyNTEsIDIxOCwgMTAzLCAyMjYsIDEyMCwgMzgsIDE5OSwgMjE4LCAKKyAgICAxMDMsIDIyNiwgMTIwLCAzOCwgMjE5LCAyNTEsIDIxOSwgNDcsIDIyNiwgMTIwLCAzOCwgMTk5LCAyMTksIDQ3LCAyMjYsIAorICAgIDEyMCwgMzgsIDQ0LCAxNjMsIDIyMiwgMjM0LCA1MSwgMzgsIDIzNSwgMTkzLCAyNTEsIDE0MCwgNTEsIDM4LCA0MiwgNTEsIAorICAgIDM4LCAyMjEsIDE4MCwgNTEsIDM4LCAyMTEsIDE3OSwgNDgsIDM4LCA2NywgMTgyLCAzOCwgNTIsIDIyNiwgMTE5LCAzOCwgCisgICAgMjQyLCAxMzcsIDEzOCwgNzgsIDM4LCAyNTUsIDMsIDEzOCwgNzgsIDM4LCAyNiwgMjI1LCAxNzUsIDM4LCAyNiwgMjM0LCAyLCAKKyAgICAzOCwgMjYsIDI0NywgMjUyLCAyMTYsIDE4LCAzOCwgMjYsIDIxMCwgMjE5LCAzOCwgMjUxLCAxNDAsIDQ4LCAzOCwgMjQ1LCAKKyAgICA5OCwgNSwgNTEsIDM4LCA1MiwgNjcsIDIzMiwgMjE0LCA1MSwgMzgsIDQzLCAyNTQsIDExMCwgNTEsIDM4LCAyMjgsIDUyLCAKKyAgICAyMTYsIDg5LCA0OCwgMzgsIDI0MSwgNTgsIDQ4LCAzOCwgMjU0LCAxNDgsIDEyOCwgMjE2LCA0MiwgNDgsIDM4LCA0MywgNDQsIAorICAgIDgwLCA1MSwgMzgsIDIxNCwgMTUzLCA4MCwgNTEsIDM4LCAyNDIsIDE0MiwgMjM1LCA2MywgMzgsIDQ0LCAyNTMsIDI1MCwgCisgICAgNDgsIDM4LCA0MywgMTYzLCAyMjIsIDIzNCwgNDgsIDM4LCAyNDQsIDEzMSwgMzgsIDIxMSwgMTc5LCA1MSwgMzgsIDQzLCAKKyAgICAyNTMsIDI1MCwgNTEsIDM4LCA0NCwgMjUzLCAyNTAsIDUxLCAzOCwgNDQsIDI1MywgMjUwLCAyMiwgMTIwLCAyNTMsIDI1MCwgCisgICAgNTEsIDM4LCA0NCwgMTYzLCAyMjIsIDIzNCwgNDgsIDM4LCA1OSwgNzcsIDIyMiwgMjUxLCAzOCwgMjUzLCAyMTcsIDUxLCAKKyAgICAzOCwgNTIsIDIyMiwgMjM0LCA1MSwgMzgsIDIxMCwgMzUsIDQ4LCAzOCwgNTIsIDI1MSwgMTQ3LCA1MSwgMzgsIDUyLCAyNTEsIAorICAgIDE0NiwgMzgsIDUyLCAyMzEsIDIzMiwgMzgsIDUyLCAyMzEsIDIzMywgNTEsIDM4LCA1MiwgMTgyLCAzOCwgNTIsIDIzNSwgCisgICAgMTkzLCAyNTEsIDE0NiwgMzgsIDUyLCA5NywgODAsIDUxLCAzOCwgNywgNCwgMSwgNjEsIDM4LCA3LCA0LCAxLCA3NSwgMzgsIAorICAgIDcsIDQsIDEsIDczLCAzOCwgNywgNCwgMSwgNzYsIDM4LCA3LCA0LCAxLCA3MCwgMzgsIDcsIDQsIDEsIDI1MSwgNjYsIDM4LCAKKyAgICA3LCA0LCAxLCAyNDksIDYwLCAzOCwgNywgNCwgMSwgMjQyLCA2MCwgMzgsIDcsIDQsIDEsIDE5MywgMzgsIDcsIDQsIDEsIAorICAgIDE1MywgMzgsIDcsIDQsIDEsIDIxNywgMTUyLCAzOCwgNywgNCwgMSwgMjE0LCAxMDUsIDM4LCA3LCA0LCAxLCAyMTEsIDE3OCwgCisgICAgMjYsIDYsIDEsIDI0MSwgMTk2LCAyNiwgNCwgMSwgMjQxLCAxOTYsIDI2LCA2LCAxLCAyNTQsIDIzLCAyMjEsIDI0NiwgMjYsIAorICAgIDQsIDEsIDI1NCwgMjMsIDIyMSwgMjQ2LCAyNiwgMjI3LCAxOTgsIDUwLCAyNiwgMjMyLCAxMDgsIDIyNywgMTk4LCA1MCwgCisgICAgMjYsIDYsIDEsIDIyNiwgNTEsIDI0NywgMjI3LCAyNiwgNCwgMSwgMjI2LCA1MSwgMjQ3LCAyMjcsIDI2LCAyMTAsIDIxOSwgCisgICAgMjYsIDQsIDIyMywgNDksIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDQsIDI0NiwgMTE4LCAyMzIsIDgzLCAyMTksIAorICAgIDE3OCwgODcsIDI2LCA0LCAyMjMsIDQ5LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAyNiwgMjI0LCAxMywgCisgICAgNzgsIDI2LCAyMTYsIDE4LCAyNiwgMjQ3LCAyNTIsIDIxNiwgMTgsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE2LCAxOCwgCisgICAgMjYsIDI1NCwgOTcsIDIxNywgMiwgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjQ1LCA2NCwgCisgICAgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTYsIDE4LCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDIxNiwgCisgICAgMTgsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIDE4LCAyNiwgCisgICAgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjE2LCAxOCwgMjYsIDYsIDEsIDI1NCwgMTQzLCAyNiwgNiwgMSwgCisgICAgMjUyLCAyNiwgMjYsIDYsIDEsIDI0MywgMTA3LCAyNiwgNiwgMSwgMjQ4LCA1NCwgMjYsIDYsIDEsIDI0NSwgMTAwLCAyNiwgCisgICAgNiwgMSwgMjEwLCA4NSwgMjYsIDYsIDEsIDI0NSwgNjMsIDI2LCA2LCAxLCAyMTYsIDE3OSwgMjYsIDYsIDEsIDIzNSwgMTg1LCAKKyAgICAyNiwgNiwgMSwgMjM0LCAyMjIsIDI2LCA2LCAxLCAyMzMsIDk4LCAyNiwgNiwgMSwgMjMwLCAxMDIsIDI2LCA2LCAxLCAyMjcsIAorICAgIDIzNywgMjYsIDYsIDEsIDIxMSwgMTU3LCAyNiwgNiwgMSwgMjI2LCAxOTksIDI2LCA2LCAxLCAyMjUsIDEwOCwgMjYsIDYsIAorICAgIDEsIDIyMywgMzcsIDI2LCA2LCAxLCAyMTksIDE3NywgMjYsIDYsIDEsIDIxNywgNDEsIDI2LCA2LCAxLCAyMTQsIDE1NywgCisgICAgMjYsIDYsIDEsIDIyNSwgMTMzLCAyNiwgNiwgMSwgMjUwLCAxMTAsIDI2LCA2LCAxLCAyMjQsIDE2MSwgMjYsIDYsIDEsIAorICAgIDIyNiwgMjAxLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUxLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0NywgCisgICAgMjUxLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjE2LCAxOCwgMjYsIAorICAgIDQsIDEsIDI0NSwgNjQsIDIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE2LCAxOCwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU4LCAyLCAyNDcsIDI1MiwgMjIsIDIxNiwgMTgsIDI2LCA0LCAxLCAyNTQsIDE0MywgMjYsIDQsIDEsIDI1MiwgMjYsIDI2LCAKKyAgICA0LCAxLCAyNDMsIDEwNywgMjYsIDQsIDEsIDI0OCwgNTQsIDI2LCA0LCAxLCAyNDUsIDEwMCwgMjYsIDQsIDEsIDIxMCwgODUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDYzLCAyNiwgNCwgMSwgMjE2LCAxNzksIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjYsIDQsIDEsIDIzNCwgCisgICAgMjIyLCAyNiwgNCwgMSwgMjMzLCA5OCwgMjYsIDQsIDEsIDIzMCwgMTAyLCAyNiwgNCwgMSwgMjI3LCAyMzcsIDI2LCA0LCAxLCAKKyAgICAyMTEsIDE1NywgMjYsIDQsIDEsIDIyNiwgMTk5LCAyNiwgNCwgMSwgMjI1LCAxMDgsIDI2LCA0LCAxLCAyMjMsIDM3LCAyNiwgCisgICAgNCwgMSwgNDAsIDIxOSwgMTc3LCAyNiwgNCwgMSwgMjE5LCAxNzcsIDI2LCA0LCAxLCAyMTcsIDQxLCAyNiwgNCwgMSwgMjE0LCAKKyAgICAxNTcsIDI2LCA0LCAxLCAyMjUsIDEzMywgMjYsIDQsIDEsIDI1MCwgMTEwLCAyNiwgNCwgMSwgMjI0LCAxNjEsIDI2LCA0LCAKKyAgICAxLCAyMjYsIDIwMSwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDcsIDI1MSwgMjYsIDQsIDEsIDIxNCwgMTU4LCAyLCAyNDcsIAorICAgIDI1MSwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTYsIDE4LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNiwgMTgsIDI2LCAKKyAgICA0LCAxLCAyMjYsIDIwMiwgMiwgMjE2LCAxOCwgMjYsIDYsIDIzNCwgMjQ3LCA4NywgMjYsIDI1MiwgMjcsIDg3LCAyNiwgCisgICAgMjE2LCAxODAsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0MSwgNTIsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI1NSwgMywgMjIsIAorICAgIDI0MSwgNTIsIDg3LCAyNiwgMjE0LCAxNTgsIDIsIDI0OCwgMiwgMjIsIDI0MSwgNTIsIDg3LCAyNiwgMjI1LCAxMzQsIDg3LCAKKyAgICAyNiwgMjI1LCAxMDksIDg3LCAyNiwgMjM0LCAyNDcsIDg3LCAyNiwgMSwgMjU0LCAyMywgMjM0LCA2LCAyNiwgNCwgMSwgCisgICAgMjU0LCAyMywgMjM0LCA2LCAyNiwgMSwgMjE4LCAxMzcsIDI2LCA0LCAxLCAyMTgsIDEzNywgMjYsIDEsIDI0NywgMjI3LCAKKyAgICAyNiwgNCwgMSwgMjQ3LCAyMjcsIDI2LCAxLCAyMzQsIDYsIDI2LCA0LCAxLCAyMzQsIDYsIDI2LCAxLCAyMjEsIDI0NiwgMjYsIAorICAgIDQsIDEsIDIyMSwgMjQ2LCA4MSwgNiwgMSwgMjIwLCA1NSwgODEsIDQsIDEsIDIyMCwgNTUsIDgxLCA2LCAxLCAyNDQsIDE0MCwgCisgICAgODEsIDQsIDEsIDI0NCwgMTQwLCA4MSwgNiwgMSwgMjM0LCAxMTcsIDgxLCA0LCAxLCAyMzQsIDExNywgODEsIDYsIDEsIAorICAgIDI0MSwgNDUsIDgxLCA0LCAxLCAyNDEsIDQ1LCA4MSwgNiwgMSwgMjQzLCAxMDIsIDgxLCA0LCAxLCAyNDMsIDEwMiwgODEsIAorICAgIDYsIDEsIDIyMCwgMjIsIDgxLCA0LCAxLCAyMjAsIDIyLCA4MSwgNiwgMSwgMjQ4LCA2OSwgODEsIDQsIDEsIDI0OCwgNjksIAorICAgIDI2LCAyMzQsIDIyMywgODcsIDI2LCAyMjMsIDM4LCA4NywgMjYsIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDEsIDIxMCwgCisgICAgMjI0LCAyNiwgNiwgMjE2LCAxODAsIDg3LCAyNiwgMjMyLCA4MywgMjQ1LCAxMDEsIDg3LCAyNiwgMjIzLCA0OSwgMjMyLCAKKyAgICA4MywgMjQ1LCAxMDEsIDg3LCAyNiwgNiwgMSwgMjIwLCA3LCAyNiwgNCwgMSwgMjIwLCA3LCAyNiwgNiwgMjMyLCA4MywgCisgICAgMjE5LCAxNzgsIDg3LCAyNiwgNiwgMSwgMjIxLCAyNDMsIDI2LCA0LCAxLCAyMjEsIDI0MywgMjYsIDIyMywgMzgsIDIsIAorICAgIDIxOCwgMTAzLCA4NywgMjYsIDYsIDIyMywgNDksIDIzMiwgODMsIDIxOSwgMTc4LCA4NywgMjYsIDYsIDI0NiwgMTE4LCAKKyAgICAyMzIsIDgzLCAyMTksIDE3OCwgODcsIDI2LCA2LCAyMjMsIDQ5LCAyNDYsIDExOCwgMjMyLCA4MywgMjE5LCAxNzgsIDg3LCAKKyAgICAzMywgNiwgMSwgMjM2LCA2MSwgMiwgMjQyLCAxMzYsIDMzLCA2LCAxLCAyMzUsIDE4OSwgMzMsIDYsIDEsIDI0NywgMTYyLCAKKyAgICAzMywgNiwgMSwgMjQyLCAxODcsIDMzLCA2LCAxLCAyMTQsIDIwMiwgMjM2LCA2MCwgMzMsIDYsIDEsIDI0NiwgMzYsIDMzLCAKKyAgICA2LCAxLCAyNTEsIDc2LCA3MywgMzMsIDYsIDEsIDIxMSwgOCwgMzMsIDYsIDEsIDIzNSwgMTI2LCAzMywgNiwgMSwgMjMyLCAKKyAgICAxODcsIDMzLCA2LCAxLCAyMjgsIDE3OCwgMzMsIDYsIDEsIDIxNSwgMTc0LCAzMywgNiwgMSwgMjM0LCA0OCwgMzMsIDYsIDEsIAorICAgIDI0MCwgMTU0LCAyLCAyNDIsIDEzNiwgMzMsIDYsIDEsIDIxOSwgMjUxLCA3MCwgMzMsIDYsIDEsIDI0NiwgMzIsIDMzLCA2LCAKKyAgICAxLCA2MSwgMzMsIDYsIDEsIDI1MiwgNzUsIDMzLCA2LCAxLCAyMTMsIDI1NSwgMzMsIDYsIDEsIDI0MiwgMjM2LCAzMywgNiwgCisgICAgMSwgMjQ4LCA5MCwgMzMsIDYsIDEsIDIzNiwgNjAsIDMzLCA2LCAxLCAyMTAsIDc0LCAzMywgNiwgMSwgMjEwLCA5NCwgMzMsIAorICAgIDYsIDEsIDczLCAzMywgNiwgMSwgMjE5LCAyNTEsIDczLCAzMywgNiwgMSwgMTc2LCAzMywgNiwgMSwgMjQ1LCAxNzQsIDMzLCAKKyAgICA2LCAxLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDI0NSwgMTUwLCAzMywgNiwgMSwgNzYsIDMzLCA2LCAxLCAyMjUsIDIyMSwgMzMsIAorICAgIDYsIDEsIDI0NSwgOTIsIDMzLCA2LCAxLCAyNDUsIDgyLCAzMywgNiwgMSwgMjE3LCAyMiwgMzMsIDYsIDEsIDcwLCAzMywgNiwgCisgICAgMSwgMjQ1LCAyMDIsIDMzLCA2LCAxLCAxNjIsIDMzLCA2LCAxLCAyMTUsIDE3OCwgMzMsIDYsIDEsIDI1MCwgMTMxLCAzMywgCisgICAgNiwgMSwgMjIwLCAxMDIsIDMzLCA2LCAxLCAyMjAsIDY1LCAzMywgNiwgMSwgMjQyLCAzLCA1MCwgMzMsIDYsIDEsIDIxMSwgCisgICAgMjcsIDMzLCA2LCAxLCAyMTksIDUyLCA1MCwgMzMsIDYsIDEsIDc1LCAzMywgNiwgMSwgMjEwLCAyMTIsIDMzLCA2LCAxLCAKKyAgICAxOTEsIDMzLCA0LCAxLCA2MSwgMzMsIDQsIDEsIDI1MiwgNzUsIDMzLCA0LCAxLCAyMTMsIDI1NSwgMzMsIDQsIDEsIDI0MiwgCisgICAgMjM2LCAzMywgNCwgMSwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIzNiwgNjAsIDMzLCA0LCAxLCAyMTAsIDc0LCAzMywgNCwgMSwgCisgICAgMjEwLCA5NCwgMzMsIDQsIDEsIDczLCAzMywgNCwgMSwgMjE5LCAyNTEsIDczLCAzMywgNCwgMSwgMTc2LCAzMywgNCwgMSwgCisgICAgMjQ1LCAxNzQsIDMzLCA0LCAxLCAyNDUsIDE1OSwgMzMsIDQsIDEsIDI0NSwgMTUwLCAzMywgNCwgMSwgNzYsIDMzLCA0LCAxLCAKKyAgICAyMjUsIDIyMSwgMzMsIDQsIDEsIDI0NSwgOTIsIDMzLCA0LCAxLCAyNDUsIDgyLCAzMywgNCwgMSwgMjE3LCAyMiwgMzMsIDQsIAorICAgIDEsIDcwLCAzMywgNCwgMSwgMjQ1LCAyMDIsIDMzLCA0LCAxLCAxNjIsIDMzLCA0LCAxLCAyMTUsIDE3OCwgMzMsIDQsIDEsIAorICAgIDI1MCwgMTMxLCAzMywgNCwgMSwgMjIwLCAxMDIsIDMzLCA0LCAxLCAyMjAsIDY1LCAzMywgNCwgMSwgMjQyLCAzLCA1MCwgCisgICAgMzMsIDQsIDEsIDIxMSwgMjcsIDMzLCA0LCAxLCAyMTksIDUyLCA1MCwgMzMsIDQsIDEsIDc1LCAzMywgNCwgMSwgMjEwLCAKKyAgICAyMTIsIDMzLCA0LCAxLCAxOTEsIDMzLCA0LCAxLCAyMzYsIDYxLCAyLCAyNDIsIDEzNiwgMzMsIDQsIDEsIDIzNSwgMTg5LCAKKyAgICAzMywgNCwgMSwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyNDIsIDE4NywgMzMsIDQsIDEsIDIxNCwgMjAyLCAyMzYsIDYwLCAzMywgCisgICAgNCwgMSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDI1MSwgNzYsIDczLCAzMywgNCwgMSwgMjExLCA4LCAzMywgNCwgMSwgMjM1LCAKKyAgICAxMjYsIDMzLCA0LCAxLCAyMzIsIDE4NywgMzMsIDQsIDEsIDIyOCwgMTc4LCAzMywgNCwgMSwgMjE1LCAxNzQsIDMzLCA0LCAKKyAgICAxLCAyMzQsIDQ4LCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDI0MiwgMTM2LCAzMywgNCwgMSwgMjE5LCAyNTEsIDcwLCAzMywgCisgICAgNCwgMSwgMjQ2LCAzMiwgMzMsIDYsIDEsIDIyNiwgMjAxLCAzMywgNCwgMSwgMjI2LCAyMDEsIDMzLCA2LCAxLCAyMTEsIDU5LCAKKyAgICAzMywgNCwgMSwgMjExLCA1OSwgMzMsIDYsIDEsIDIzNSwgMTgzLCA3NSwgMzMsIDQsIDEsIDIzNSwgMTgzLCA3NSwgMzMsIDYsIAorICAgIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAKKyAgICAyMzIsIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyMzUsIDE4MywgMjMyLCAxOTIsIDIxMCwgMTgzLCAzMywgNiwgMSwgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNCwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAzMywgNiwgMSwgMjM1LCAxODMsIAorICAgIDI1MSwgMjQ5LCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTEsIDI0OSwgMjEwLCAxODMsIDMzLCA2LCAxLCAKKyAgICAyMzMsIDIzMywgMzMsIDQsIDEsIDIzMywgMjMzLCAzMywgNiwgMSwgMjI0LCAxNjEsIDMzLCA0LCAxLCAyMjQsIDE2MSwgMzMsIAorICAgIDYsIDEsIDI0NCwgODIsIDMzLCA0LCAxLCAyNDQsIDgyLCAzMywgNiwgMSwgMjM1LCAxNDYsIDMzLCA0LCAxLCAyMzUsIDE0NiwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTQ3LCAyLCA1MiwgMjQyLCAxMzcsIDI1NSwgMTQsIDMzLCA0LCAxLCAyMzUsIDE0NywgMiwgNTIsIAorICAgIDI0MiwgMTM3LCAyNTUsIDE0LCAzMywgNiwgMSwgMjE0LCAyMDUsIDMzLCA0LCAxLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDIyMiwgCisgICAgMTg1LCAyMjYsIDIwMSwgMzMsIDQsIDEsIDIyMiwgMTg1LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMTYsIAorICAgIDY1LCAzMywgNCwgMSwgMjI2LCAyMDIsIDIsIDIxNiwgNjUsIDMzLCA2LCAxLCAyMjYsIDE0MCwgMzMsIDQsIDEsIDIyNiwgCisgICAgMTQwLCAzMywgNiwgMSwgMjM0LCA2LCAzMywgNCwgMSwgMjM0LCA2LCAzMywgMjE2LCAxNDYsIDUwLCAzOCwgMzMsIDIxNiwgCisgICAgNjUsIDM4LCAzMywgMjI2LCA2NSwgMzgsIDMzLCAyNDgsIDE1NCwgMjI1LCAxOCwgMzgsIDMzLCAyMjQsIDE1NSwgMjI1LCAKKyAgICAxOCwgMzgsIDMzLCAyMjUsIDMsIDM4LCAzMywgMjQwLCAyMTEsIDIxNiwgMTQ2LCA1MCwgMzgsIDMzLCAyMzAsIDE5MSwgNTAsIAorICAgIDMzLCA2LCAxLCAyMTksIDI1MSwgMjQwLCAxNTQsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyMTksIDI1MSwgMjQwLCAxNTQsIAorICAgIDIsIDIxNywgNzcsIDMzLCA2LCAxLCAyMjAsIDE0NiwgNTAsIDMzLCA0LCAxLCAyMjAsIDE0NiwgNTAsIDMzLCA2LCAxLCAKKyAgICAyNDUsIDkzLCAyLCAyMTYsIDExNCwgMzMsIDQsIDEsIDI0NSwgOTMsIDIsIDIxNiwgMTE0LCAzMywgNiwgMSwgMjQyLCAyMzcsIAorICAgIDIsIDIxNCwgMTU2LCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDIxNCwgMTU2LCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDkxLCAKKyAgICAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDkxLCAzMywgNiwgMSwgMjQyLCAyMzcsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA0LCAKKyAgICAxLCAyNDIsIDIzNywgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDYsIDEsIDIxMCwgNzUsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAKKyAgICAyMTAsIDc1LCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDIxMCwgOTUsIDIsIAorICAgIDI0OCwgMzksIDMzLCA2LCAxLCAyMzUsIDEzLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjM1LCAxMywgMiwgMjQ4LCAzOSwgCisgICAgMzMsIDYsIDEsIDIzNSwgMTMsIDIsIDY3LCA5MSwgMzMsIDQsIDEsIDIzNSwgMTMsIDIsIDY3LCA5MSwgMzMsIDYsIDEsIAorICAgIDIzNSwgMTMsIDIsIDkxLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgOTEsIDMzLCA2LCAxLCAyNTIsIDEyNCwgMTc2LCAzMywgNCwgCisgICAgMSwgMjUyLCAxMjQsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQ1LCAxNTEsIDIsIAorICAgIDI0OCwgMzksIDMzLCA2LCAyNywgMjQ1LCAxNTEsIDI0MiwgMjM2LCAzMywgNCwgMjcsIDI0NSwgMTUxLCAyNDIsIDIzNiwgCisgICAgMzMsIDYsIDEsIDIyNSwgMjIyLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjI1LCAyMjIsIDIsIDIzMCwgMjI0LCAKKyAgICAxMDMsIDMzLCA2LCAxLCAyNTUsIDIwLCAxNjIsIDMzLCA0LCAxLCAyNTUsIDIwLCAxNjIsIDMzLCA2LCAxLCAyNDUsIDgzLCAKKyAgICAyLCAyNDgsIDM5LCAzMywgNCwgMSwgMjQ1LCA4MywgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIxNywgMjMsIDIsIDI0OCwgMzksIAorICAgIDMzLCA0LCAxLCAyMTcsIDIzLCAyLCAyNDgsIDM5LCAzMywgNiwgMSwgMjE4LCAxMjEsIDcwLCAzMywgNCwgMSwgMjE4LCAKKyAgICAxMjEsIDcwLCAzMywgNiwgMSwgMjE4LCAxMjEsIDEwNCwgMiwgOTEsIDMzLCA0LCAxLCAyMTgsIDEyMSwgMTA0LCAyLCA5MSwgCisgICAgMzMsIDYsIDEsIDI0MiwgNDksIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCAyNDgsIDM5LCAzMywgNiwgMjcsIAorICAgIDIxNywgMjMsIDIxNSwgMTc4LCAzMywgNCwgMjcsIDIxNywgMjMsIDIxNSwgMTc4LCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIAorICAgIDI0OCwgMzksIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDI1MCwgMTMyLCAyLCA2NywgOTEsIAorICAgIDMzLCA0LCAxLCAyNTAsIDEzMiwgMiwgNjcsIDkxLCAzMywgNiwgMSwgMjIwLCAzMywgMzMsIDQsIDEsIDIyMCwgMzMsIDMzLCAKKyAgICA2LCAxLCAyNTUsIDIwLCAyNTAsIDEzMSwgMzMsIDQsIDEsIDI1NSwgMjAsIDI1MCwgMTMxLCAzMywgNiwgMSwgMjU1LCAyMCwgCisgICAgMjUwLCAxMzIsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyNTUsIDIwLCAyNTAsIDEzMiwgMiwgMjQ4LCAzOSwgMzMsIDEsIAorICAgIDIyNiwgNTgsIDMzLCA2LCAxLCAyMTAsIDc1LCAyLCAyNTEsIDE0NiwgMzMsIDQsIDEsIDIxMCwgNzUsIDIsIDI1MSwgMTQ2LCAKKyAgICAzMywgNiwgMSwgMjM1LCAxMywgMiwgMTAzLCAzMywgNCwgMSwgMjM1LCAxMywgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNzUsIAorICAgIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAyNDUsIDE3NSwgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDI0NSwgMTUxLCAyLCAxMDMsIAorICAgIDMzLCA0LCAxLCAyNDUsIDE1MSwgMiwgMTAzLCAzMywgNiwgMSwgMjQ1LCAxNTEsIDIsIDIxNywgNzcsIDMzLCA0LCAxLCAKKyAgICAyNDUsIDE1MSwgMiwgMjE3LCA3NywgMzMsIDYsIDEsIDIzNCwgMTI3LCAyNTAsIDEzMSwgMzMsIDQsIDEsIDIzNCwgMTI3LCAKKyAgICAyNTAsIDEzMSwgMzMsIDYsIDEsIDI0NSwgMTYwLCAyLCAyMTcsIDc3LCAzMywgNCwgMSwgMjQ1LCAxNjAsIDIsIDIxNywgNzcsIAorICAgIDMzLCA0LCAxLCAyMjYsIDU4LCAzMywgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NiwgMzMsIDQsIDEsIDExNSwgMiwgMjUxLCAKKyAgICAxNDYsIDMzLCA2LCAxLCAxMTUsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDExNSwgMiwgMjQ4LCAxLCAzMywgNiwgMjcsIDExNSwgCisgICAgMjM2LCA2MCwgMzMsIDQsIDI3LCAxMTUsIDIzNiwgNjAsIDMzLCA2LCAxLCAyMzYsIDYxLCAyLCAyNTEsIDE0NiwgMzMsIDQsIAorICAgIDEsIDIzNiwgNjEsIDIsIDI1MSwgMTQ2LCAzMywgNiwgMSwgMjIxLCAxOTUsIDMzLCA0LCAxLCAyMjEsIDE5NSwgMzMsIDYsIAorICAgIDEsIDIyMSwgMTk2LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjEwLCA3NSwgCisgICAgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjEwLCA3NSwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAxLCAKKyAgICAzMywgNCwgMSwgMjEwLCA5NSwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMjU1LCAyMCwgMjQ2LCAzNiwgMzMsIDQsIDEsIDI1NSwgCisgICAgMjAsIDI0NiwgMzYsIDMzLCA2LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAyMzIsIDMzLCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKKyAgICAyMzIsIDMzLCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjQwLCAxNTQsIDIsIDI0OCwgMSwgMzMsIDYsIAorICAgIDEsIDE0NCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAyNTIsIDEzNCwgNzYsIDMzLCAKKyAgICA0LCAxLCAyNTIsIDEzNCwgNzYsIDMzLCA2LCAxLCAyNTIsIDEzNCwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA0LCAxLCAyNTIsIAorICAgIDEzNCwgMTQ0LCAyLCAyNDgsIDEsIDMzLCA2LCAxLCAxNjAsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDE2MCwgMiwgMjQ4LCAxLCAKKyAgICAzMywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMiwgMzMsIDQsIDEsIDEwNCwgMiwgMjMxLCAyMzIsIDMzLCA2LCAxLCAxMDQsIDIsIAorICAgIDI0OCwgMSwgMzMsIDQsIDEsIDEwNCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgMTA0LCAyLCA1MiwgMTQyLCAzMywgNCwgMSwgCisgICAgMTA0LCAyLCA1MiwgMTQyLCAzMywgNiwgMSwgMjUwLCAxMzIsIDIsIDI0OCwgMSwgMzMsIDQsIDEsIDI1MCwgMTMyLCAyLCAKKyAgICAyNDgsIDEsIDMzLCA2LCAxLCAyNDIsIDIzNywgMiwgMjQ4LCAzOSwgMzMsIDQsIDEsIDI0MiwgMjM3LCAyLCAyNDgsIDM5LCAKKyAgICAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjQ4LCAxLCAzMywgNCwgMSwgMjExLCAyOCwgMiwgMjQ4LCAxLCAzMywgNiwgMSwgCisgICAgMjQyLCAyMzcsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCAzMywgNCwgMSwgMjQyLCAyMzcsIDIsIDIxOCwgMTAzLCAyMiwgMTAzLCAKKyAgICAzMywgNiwgMSwgMjQyLCA0OSwgMiwgMTAzLCAzMywgNCwgMSwgMjQyLCA0OSwgMiwgMTAzLCAzMywgNiwgMSwgMjQyLCA0OSwgCisgICAgMiwgOTEsIDMzLCA0LCAxLCAyNDIsIDQ5LCAyLCA5MSwgMzMsIDYsIDEsIDIzNCwgMTQsIDI0OCwgOTAsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE0LCAyNDgsIDkwLCAzMywgNiwgMSwgMjM0LCAxNCwgMjQ3LCAxNjIsIDMzLCA0LCAxLCAyMzQsIDE0LCAyNDcsIAorICAgIDE2MiwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxMCwgMjcsIDMzLCA0LCAxLCAyMzQsIDE0LCAyMTAsIDI3LCAzMywgNiwgMSwgCisgICAgMjM0LCAxNCwgMjQ2LCAzMCwgMzMsIDQsIDEsIDIzNCwgMTQsIDI0NiwgMzAsIDMzLCA2LCAxLCAyMzQsIDE0LCAyMzIsIAorICAgIDE4NywgMzMsIDQsIDEsIDIzNCwgMTQsIDIzMiwgMTg3LCAzMywgNiwgMSwgMjM0LCAxNCwgMjI4LCAxNzgsIDMzLCA0LCAxLCAKKyAgICAyMzQsIDE0LCAyMjgsIDE3OCwgMzMsIDYsIDEsIDIzNCwgMTQsIDIxOSwgMTA5LCAzMywgNCwgMSwgMjM0LCAxNCwgMjE5LCAKKyAgICAxMDksIDMzLCA2LCAxLCAyMzQsIDE0LCAyMTYsIDYwLCAzMywgNCwgMSwgMjM0LCAxNCwgMjE2LCA2MCwgMzMsIDYsIDEsIAorICAgIDIyMywgNDksIDIxMCwgOTQsIDMzLCA0LCAxLCAyMjMsIDQ5LCAyMTAsIDk0LCAzMywgNiwgMSwgMjQ1LCAxNzUsIDIsIDEwMywgCisgICAgMzMsIDQsIDEsIDI0NSwgMTc1LCAyLCAxMDMsIDMzLCA2LCAxLCAyMzIsIDI1NCwgMzMsIDQsIDEsIDIzMiwgMjU0LCAzMywgCisgICAgNiwgMSwgMjIzLCAzOSwgMzMsIDQsIDEsIDIyMywgMzksIDMzLCA2LCAxLCAyMTEsIDkyLCAzMywgNCwgMSwgMjExLCA5MiwgCisgICAgMzMsIDYsIDEsIDIyNCwgODgsIDMzLCA0LCAxLCAyMjQsIDg4LCAzMywgNiwgMSwgMjEyLCAyMiwgMzMsIDQsIDEsIDIxMiwgCisgICAgMjIsIDMzLCA2LCAxLCAyNTQsIDE2NiwgMTc2LCAzMywgNCwgMSwgMjU0LCAxNjYsIDE3NiwgMzMsIDYsIDEsIDI0NSwgMTc1LCAKKyAgICAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNCwgMSwgMjQ1LCAxNzUsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyNDUsIAorICAgIDE1MSwgMiwgMjMwLCAyMjQsIDEwMywgMzMsIDQsIDEsIDI0NSwgMTUxLCAyLCAyMzAsIDIyNCwgMTAzLCAzMywgNiwgMSwgCisgICAgMjI1LCAyMjIsIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMjUsIDIyMiwgMiwgMjQ4LCAzOSwgMzMsIDYsIDEsIDIyMCwgMzQsIAorICAgIDIsIDI0OCwgMzksIDMzLCA0LCAxLCAyMjAsIDM0LCAyLCAyNDgsIDM5LCAxNTAsIDYsIDEsIDI1MywgMTY0LCAxNTAsIDYsIAorICAgIDEsIDI1MiwgMzksIDE1MCwgNiwgMSwgMjQyLCAyMDMsIDE1MCwgNiwgMSwgMjQ4LCAyMjEsIDE1MCwgNiwgMSwgMjQ1LCAKKyAgICAyMTMsIDE1MCwgNiwgMSwgMjEwLCAxMTYsIDE1MCwgNiwgMSwgMjQ1LCAxOTcsIDE1MCwgNiwgMSwgMjQ1LCA2NSwgMTUwLCAKKyAgICA2LCAxLCAxMTEsIDE1MCwgNiwgMSwgMjEwLCA3NCwgMTUwLCA2LCAxLCAyMzUsIDIyNywgMTUwLCA2LCAxLCAyMzIsIDE5MCwgCisgICAgMTUwLCA2LCAxLCAyMTEsIDE2MCwgMTUwLCA2LCAxLCAyNTEsIDMzLCAxNTAsIDYsIDEsIDIzNCwgMTY1LCAxNTAsIDYsIDEsIAorICAgIDI0MSwgNjgsIDE1MCwgNiwgMSwgMjM1LCAxNDEsIDE1MCwgNiwgMSwgMjQyLCAyNDYsIDE1MCwgNiwgMSwgMjUwLCAxMjYsIAorICAgIDE1MCwgNiwgMSwgMjMxLCA1OCwgMTUwLCA2LCAxLCAyMTEsIDgsIDE1MCwgNiwgMSwgMjI4LCAzOSwgMTUwLCA2LCAxLCAKKyAgICAyMjAsIDEwMiwgMTUwLCA2LCAxLCAyMTMsIDEzOCwgMTUwLCA2LCAxLCAyNTAsIDE1NywgMTUwLCA2LCAxLCAyMjUsIDIwNSwgCisgICAgMTUwLCA2LCAxLCAyMzUsIDExMCwgMTUwLCA2LCAxLCAyMDUsIDE1MCwgNiwgMSwgMjIxLCAxNjEsIDE1MCwgNiwgMSwgMjEzLCAKKyAgICAxNzksIDE1MCwgNiwgMSwgMjE2LCA2MiwgMTUwLCA2LCAxLCAyMjMsIDk1LCAxNTAsIDYsIDEsIDI0OSwgMjM4LCAxNTAsIDYsIAorICAgIDEsIDIxMCwgMjQ5LCAxNTAsIDYsIDEsIDIyNSwgNDYsIDE1MCwgNiwgMSwgMjM0LCAxNzYsIDE1MCwgNiwgMSwgMjI2LCAKKyAgICAyMjIsIDE1MCwgNiwgMSwgMjQ0LCAxNDIsIDE1MCwgNTgsIDEsIDQzLCAxNjMsIDIyMiwgMjMzLCAxNTAsIDI1NCwgNTcsIAorICAgIDE1MCwgMjQ1LCAxNTQsIDc4LCAxNTAsIDI0NSwgMzEsIDc4LCAxNTAsIDI0OSwgMjE5LCAxNTAsIDIyNCwgMTMsIDc4LCAKKyAgICAxNTAsIDI1NSwgMjEsIDc4LCAxNTAsIDQsIDEsIDI1MywgMTY0LCAxNTAsIDQsIDEsIDI1MiwgMzksIDE1MCwgNCwgMSwgCisgICAgMjQyLCAyMDMsIDE1MCwgNCwgMSwgMjQ4LCAyMjEsIDE1MCwgNCwgMSwgMjQ1LCAyMTMsIDE1MCwgNCwgMSwgMjEwLCAxMTYsIAorICAgIDE1MCwgNCwgMSwgMjQ1LCAxOTcsIDE1MCwgNCwgMSwgMjQ1LCA2NSwgMTUwLCA0LCAxLCAxMTEsIDE1MCwgNCwgMSwgMjEwLCAKKyAgICA3NCwgMTUwLCA0LCAxLCAyMzUsIDIyNywgMTUwLCA0LCAxLCAyMzIsIDE5MCwgMTUwLCA0LCAxLCAyMTEsIDE2MCwgMTUwLCAKKyAgICA0LCAxLCAyNTEsIDMzLCAxNTAsIDQsIDEsIDIzNCwgMTY1LCAxNTAsIDQsIDEsIDI0MSwgNjgsIDE1MCwgNCwgMSwgMjM1LCAKKyAgICAxNDEsIDE1MCwgNCwgMSwgMjQyLCAyNDYsIDE1MCwgNCwgMSwgMjUwLCAxMjYsIDE1MCwgNCwgMSwgMjMxLCA1OCwgMTUwLCAKKyAgICA0LCAxLCAyMTEsIDgsIDE1MCwgNCwgMSwgMjI4LCAzOSwgMTUwLCA0LCAxLCAyMjAsIDEwMiwgMTUwLCA0LCAxLCAyMTMsIAorICAgIDEzOCwgMTUwLCA0LCAxLCAyNTAsIDE1NywgMTUwLCA0LCAxLCAyMjUsIDIwNSwgMTUwLCA0LCAxLCAyMzUsIDExMCwgMTUwLCAKKyAgICA0LCAxLCAyMDUsIDE1MCwgNCwgMSwgMjIxLCAxNjEsIDE1MCwgNCwgMSwgMjEzLCAxNzksIDE1MCwgNCwgMSwgMjE2LCA2MiwgCisgICAgMTUwLCA0LCAxLCAyMjMsIDk1LCAxNTAsIDQsIDEsIDI0OSwgMjM4LCAxNTAsIDQsIDEsIDIxMCwgMjQ5LCAxNTAsIDQsIDEsIAorICAgIDIyNSwgNDYsIDE1MCwgNCwgMSwgMjM0LCAxNzYsIDE1MCwgNCwgMSwgMjI2LCAyMjIsIDE1MCwgNCwgMSwgMjQ0LCAxNDIsIAorICAgIDE1MCwgNCwgMjcsIDI0NSwgMjE0LCAyMTAsIDI0OSwgMTUwLCAyNDMsIDIyOSwgMjE4LCAxMjksIDE1MCwgMjQwLCAxNjgsIAorICAgIDE1MCwgMjQ2LCA5NSwgNTAsIDk0LCAyNTUsIDE1LCAyNDUsIDU3LCA5NCwgMjU1LCAxNSwgMjIxLCAxNjIsIDk0LCAyNTUsIAorICAgIDE1LCAyMjAsIDg4LCA5NCwgMjU1LCAxNSwgMjEwLCAxMDQsIDIyNCwgNzEsIDk0LCAyNTUsIDE1LCAyMTAsIDEwNCwgMjQzLCAKKyAgICAxMjUsIDk0LCAyNTUsIDE1LCAyMTYsIDc1LCA5NCwgMjU1LCAxNSwgMjIzLCA0NywgOTQsIDI1NSwgMTUsIDIxMCwgMTAzLCAKKyAgICA5NCwgMjU1LCAxNSwgMjI1LCAyNDUsIDk0LCAyNTUsIDE1LCAyMTEsIDIwLCA5NCwgMjU1LCAxNSwgMjE2LCAyMTQsIDk0LCAKKyAgICAyNTUsIDE1LCAyNDMsIDQxLCA5NCwgMjU1LCAxNSwgMjQzLCA0MiwgMjMwLCA2OSwgOTQsIDI1NSwgMTUsIDI0MywgMzksIAorICAgIDk0LCAyNTUsIDE1LCAyMjQsIDcyLCAyMjYsIDE2LCA5NCwgMjU1LCAxNSwgMjE2LCAyNTMsIDI0MywgNTYsIDk0LCAyNTUsIAorICAgIDE1LCAyMjUsIDIyNiwgOTQsIDI1NSwgMTUsIDI1MywgMjAwLCAyNDIsIDQxLCA5NCwgMjU1LCAxNSwgMjMwLCA3OSwgOTQsIAorICAgIDI1NSwgMTUsIDIzMSwgMjA4LCA5NCwgMjU1LCAxNSwgMjMxLCA0OSwgOTQsIDI1NSwgMTUsIDIzMSwgNTAsIDIzNCwgMTc3LCAKKyAgICA5NCwgMjU1LCAxNSwgMjQ4LCAxNjMsIDk0LCAyNTUsIDE1LCAyMjQsIDgzLCA5NCwgMjU1LCAxNSwgMjE2LCAyNTMsIDIyNCwgCisgICAgNjcsIDk0LCAyNTUsIDE1LCAyMTEsIDMwLCAyNTIsIDQwLCAyMTAsIDIzMCwgOTQsIDI1NSwgMTUsIDIyNiwgMjA3LCA5NCwgCisgICAgMjU1LCAxNSwgMjM2LCAxOSwgOTQsIDI1NSwgMTUsIDI0OCwgNzAsIDk0LCAyNTUsIDE1LCAyMTAsIDMzLCA5NCwgMTY0LCAKKyAgICAyMzEsIDE0MywgMjUwLCAzNSwgOTQsIDIyNSwgMTEsIDIyMCwgMzYsIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjIxLCAxNjIsIAorICAgIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjI1LCAyMzksIDk0LCAyMjUsIDExLCAyNDEsIDI1MCwgMjI0LCA3NiwgOTQsIDIyNSwgCisgICAgMTEsIDI0MSwgMTU4LCA5NCwgMjI1LCAxMSwgMjE1LCAxNzYsIDk0LCAyMjUsIDExLCAyMjEsIDE2MiwgOTQsIDIyNSwgMTEsIAorICAgIDIyNSwgMjM5LCA5NCwgMjI1LCAxMSwgMjI0LCA3NiwgOTQsIDIyNSwgMTEsIDI0MSwgNjEsIDk0LCAyMjUsIDExLCAyNDEsIAorICAgIDYyLCAyNDEsIDI1MiwgMzEsIDIxNCwgMywgOTQsIDIyNSwgMTEsIDIyNCwgMTcsIDk0LCAyMjUsIDExLCAyNDgsIDIwOCwgCisgICAgMTc3LCAyMzEsIDE3MSwgOTQsIDIyNSwgMTEsIDIzMSwgMzgsIDk0LCAyMjQsIDE0MSwgMjMxLCAxNjgsIDk0LCAyMjUsIDExLCAKKyAgICAyMjMsIDE2OSwgOTQsIDIyNCwgMTQxLCAyMjUsIDI0NywgOTQsIDIyNSwgMTEsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgCisgICAgMjI1LCAxMSwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMjI0LCAxNDEsIDIxOSwgNTMsIDIyNSwgMjQxLCA5NCwgMTY0LCAKKyAgICAyMTQsIDE2MCwgMjQ3LCAxMjAsIDk0LCAxNjQsIDIzMiwgMTA4LCAyNDcsIDEyMCwgOTQsIDIyNCwgMTQxLCAyMjcsIDE5NSwgCisgICAgMjQyLCA0MCwgOTQsIDIyNSwgMTEsIDIyNCwgNzcsIDIyNCwgNzEsIDk0LCAxLCAyNTQsIDE3MCwgOTQsIDEsIDI1MiwgMjgsIAorICAgIDk0LCAxLCAyNDIsIDIwMSwgOTQsIDEsIDI0OCwgMTg5LCA5NCwgMSwgMjQxLCAyMzgsIDk0LCAxLCAyMTQsIDMsIDk0LCAxLCAKKyAgICAyMTAsIDk3LCA5NCwgMSwgMjQxLCAxOTcsIDk0LCAxLCAyMTYsIDIzMCwgOTQsIDEsIDIxMCwgMjMzLCA5NCwgMSwgNDAsIAorICAgIDIzNCwgMjUwLCA5NCwgMSwgMjM0LCAyNTAsIDk0LCAxLCAyMzMsIDk0LCA5NCwgMSwgNDAsIDIzMSwgNjUsIDk0LCAxLCAKKyAgICAyMzEsIDY1LCA5NCwgMSwgNDAsIDIyNywgMTk0LCA5NCwgMSwgMjI3LCAxOTQsIDk0LCAxLCAyMjEsIDI0OSwgOTQsIDEsIAorICAgIDI1MywgMTYyLCA5NCwgMSwgNDAsIDIyNSwgMjIxLCA5NCwgMSwgMjI1LCAyMjEsIDk0LCAxLCA0MCwgMjE1LCAxNzksIDk0LCAKKyAgICAxLCAyMTUsIDE3OSwgOTQsIDEsIDIyNCwgMzksIDk0LCAxLCAyMjMsIDY3LCA5NCwgMSwgMjIwLCAyMCwgOTQsIDEsIDIxNywgCisgICAgMzgsIDk0LCAyNywgMjExLCA2LCA1MiwgMjE0LCAzLCA5NCwgMjcsIDIxMSwgNiwgMjE0LCA0LCAyMTAsIDIzMywgOTQsIDI3LCAKKyAgICAyMTEsIDYsIDUyLCAyMTAsIDIzMywgOTQsIDIyNCwgMTQxLCAyNDMsIDQxLCA5NCwgMjI0LCAxNDEsIDI0MywgMzksIDEwLCAKKyAgICA1NCwgNTAsIDEwLCA1LCAyMjEsIDI0MiwgMTAsIDI0NCwgMzAsIDIzMSwgMTU0LCAxMCwgNSwgMjIyLCAyMywgMTAsIDUsIAorICAgIDIyMSwgMjQ1LCAyNTQsIDM3LCAyNDksIDEwOSwgMjIyLCAxOTMsIDI1NCwgMzcsIDI0NCwgNCwgMjIyLCAxOTMsIDEwLCAKKyAgICAyMjMsIDEzNCwgMjU0LCAzNywgMjI1LCAxODMsIDIzMCwgMTkzLCA1MCwgMjU0LCAzNywgMjI1LCAxODMsIDIxNiwgMjQ4LCAKKyAgICAyMTYsIDE0OCwgNTAsIDI1NCwgMjIxLCA1MCwgMTAsIDI0OSwgMjE5LCAxMCwgMjQ4LCAxNTAsIDIyMCwgMTM3LCAxMCwgCisgICAgMjI1LCAxMywgMjEzLCAyNDEsIDUwLCAxMCwgNSwgMjMwLCAxNzQsIDEwLCA1LCAyMjIsIDMsIDI1NCwgMTcyLCAyMTIsIDQ1LCAKKyAgICAxMCwgNSwgMjU0LCAxNzIsIDI1MywgMjIxLCAxMCwgNSwgMjIzLCAxNjcsIDI1NCwgMTcxLCAxMCwgNSwgMjIzLCAxNzUsIAorICAgIDI1NCwgMTUyLCAyNTQsIDEwNCwgMTAsIDUsIDIxNywgNzAsIDEwLCA0LCAxMjUsIDIxNywgODAsIDEwLCA0LCAxMjUsIDI3LCAKKyAgICAxMTIsIDIsIDIzMywgMTAzLCAyLCAyMTEsIDQzLCAxMCwgNCwgMTI1LCAyMTAsIDEwOCwgMTAsIDQsIDI0NCwgMTY1LCAxMCwgCisgICAgNCwgMjQ4LCAxODQsIDEwLCA0LCAyMzQsIDIwNSwgMTAsIDIyMCwgMTUwLCAxMCwgMjE1LCAyMTEsIDU5LCAyMjQsIDE0MSwgCisgICAgNzgsIDEwLCAyMjQsIDEzLCA3OCwgMTAsIDEsIDIzNCwgMjA5LCAyMTEsIDQzLCAxMCwgMSwgMjQyLCAxOSwgMTAsIDEsIAorICAgIDExMiwgMiwgMjMxLCAyMjgsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjEyLCAzMSwgMiwgMjAyLCA0OCwgCisgICAgMTAsIDEsIDExMiwgMiwgMjAyLCA1MSwgMTAsIDEsIDc5LCAyLCAyMDIsIDQ4LCAxMCwgMSwgMjU0LCAxNzAsIDEwLCAxLCAKKyAgICAyNTIsIDU0LCAxMCwgMSwgMjE3LCA4LCAyMzEsIDE2NCwgMTAsIDEsIDIxNywgNywgMTAsIDEsIDIxNiwgMTkyLCAxMCwgMSwgCisgICAgMjM1LCAxMjMsIDEwLCAxLCAyNDIsIDM3LCAxMCwgMSwgMjM0LCAxMjksIDEwLCAxLCAyNDgsIDE5NSwgMTAsIDEsIDIxNiwgCisgICAgMjAyLCAxMCwgMSwgMjIzLCA5NSwgMTAsIDEsIDIxMCwgMTA4LCAxMCwgMSwgMjIxLCAxNjYsIDEwLCAxLCAyMjAsIDU5LCAKKyAgICAxMCwgMSwgMjIyLCAyNiwgMTAsIDEsIDI0OCwgMjE2LCAxMCwgMSwgMjE3LCA4MCwgMTAsIDEsIDIxMCwgMTExLCAxMCwgMSwgCisgICAgMjU0LCAxOTYsIDEwLCAxLCAyNDIsIDI0NCwgMTAsIDEsIDIzNCwgMTc1LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyMzQsIAorICAgIDE3NSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgNzksIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgCisgICAgMjE3LCA0MywgMTAsIDEsIDI0NCwgMTQyLCAxMCwgMSwgMjI0LCA4MSwgMTAsIDEsIDIzNCwgMjUwLCAxMCwgMSwgMjMzLCAKKyAgICAxMDIsIDEwLCAxLCAyMzEsIDc4LCAxMCwgMSwgMjI4LCA2MiwgMTAsIDEsIDI0MSwgMjE4LCAxMCwgMSwgMjEyLCAzMCwgMTAsIAorICAgIDEsIDExMiwgMjMxLCAxOTIsIDEwLCAxLCAyMTEsIDQzLCAxMCwgMjQ0LCAxNjMsIDEwLCAyNDgsIDE4MiwgMTAsIDIzNCwgCisgICAgMjAzLCAxMCwgMjQ0LCAxNjUsIDEwLCAyNDgsIDE4NCwgMTAsIDIzNCwgMjA1LCAxMCwgMjIwLCA5MywgMTAsIDIxOCwgNDUsIAorICAgIDEwLCAyMzEsIDIyNiwgNDgsIDEwLCAyMDIsIDQ4LCAxMCwgMjAyLCA1MSwgMTAsIDIxOCwgNjUsIDI1NCwgMTcwLCAxMCwgCisgICAgMjM1LCAxOTMsIDI0OCwgMTg0LCAxMCwgMTY0LCAyMjgsIDYzLCAyNDIsIDIxOCwgMTAsIDIwOSwgMjU1LCAxMCwgMjUsIDUsIAorICAgIDQsIDIxNCwgMTA2LCA0OCwgMTAsIDI1LCA1LCAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDQ4LCAxMCwgMjUsIDUsIDU5LCA1MSwgCisgICAgMTAsIDIyMywgNDksIDI0OCwgMTg0LCAxMCwgMjQ0LCAxNjYsIDIsIDExMywgMjQ3LCAxMTgsIDEwLCAyMTIsIDMyLCAyMDIsIAorICAgIDUxLCAyNTQsIDM3LCAyMSwgMjEwLCA4NiwgMjU0LCAzNywgMjEsIDExMCwgMjU0LCAzNywgMjEsIDEwNSwgMjU0LCAzNywgCisgICAgMjEsIDE1OCwgMjU0LCAzNywgMjEsIDE2MSwgMjU0LCAzNywgMjEsIDE4OSwgMjU0LCAzNywgMjEsIDE5NCwgMjU0LCAzNywgCisgICAgMjEsIDE5OCwgMjU0LCAzNywgMjEsIDE5NSwgMjU0LCAzNywgMjEsIDIwMCwgMTAsIDIyNSwgMTgyLCA1MCwgMTAsIDI0OCwgCisgICAgODMsIDIyMCwgMTM3LCAxMCwgMjE2LCAxNDYsIDIyMCwgMTM3LCAxMCwgMjQ0LCA4MSwgMjI1LCA5LCAyMTgsIDE1NiwgMTAsIAorICAgIDEsIDI0NywgMTE5LCAyNTIsIDU0LCAxMCwgMSwgMjQ3LCAxMTksIDIyNCwgODEsIDEwLCAxLCAyMTgsIDIzLCAyNTQsIDE3MCwgCisgICAgMTAsIDEsIDExMiwgMjEyLCA0NiwgMTAsIDEsIDExMiwgMiwgMjEyLCAzMiwgMjAyLCA0OCwgMTAsIDEsIDExMiwgMiwgMjEyLCAKKyAgICAzMiwgMjAyLCA1MSwgMTAsIDEsIDEyNSwgMjQyLCAxOSwgMTAsIDEsIDEyNSwgMjAyLCAyNTQsIDE3MCwgMTAsIDEsIDEyNSwgCisgICAgMjAyLCAyMTIsIDMwLCAxMCwgMSwgMTA0LCAyLCAyMDIsIDQ4LCAxMCwgMSwgMTI1LCAyMDIsIDIxMSwgNDMsIDEwLCAxLCAKKyAgICAyMTUsIDE0OCwgMTAsIDEsIDIxNSwgMTQ2LCAxMCwgMSwgMjUyLCA2NCwgMTAsIDEsIDIxNywgOCwgMiwgMjIyLCAyMzMsIAorICAgIDEwLCAxLCAyMTcsIDgsIDIsIDEzNCwgMTcwLCA3NywgMjQ2LCAxMDMsIDEwLCAxLCAyMjUsIDIwNSwgMTAsIDEsIDIxNywgNSwgCisgICAgMTAsIDEsIDI1MiwgNTIsIDEwLCAxLCAxMjIsIDIsIDIwMiwgNDgsIDEwLCAxLCAxMjIsIDIsIDExMywgMTcwLCA2NywgNDgsIAorICAgIDEwLCAxLCAyMjcsIDE1MywgMTAsIDEsIDI0NiwgNDMsIDEwLCAxLCAxMjIsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIxNywgCisgICAgMjYsIDEwLCAxLCAyMTcsIDI0LCAxMCwgMSwgMjQ4LCAxMzAsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjIyLCAyMzMsIDEwLCAxLCAKKyAgICAyNDgsIDE5NiwgMiwgNTksIDUxLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNCwgMjE3LCA4MCwgMTAsIAorICAgIDEsIDI0OCwgMjAxLCAxMCwgMSwgMjQ4LCAxMzIsIDEwLCAxLCAyNDYsIDcwLCAxMCwgMSwgMjQ4LCAxOTYsIDIsIDEzNCwgCisgICAgMTcwLCA3NywgMjQ2LCAxMDMsIDEwLCAxLCAyNDgsIDE5NiwgMiwgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDIyMiwgMTcxLCAKKyAgICAxMCwgMSwgMjIzLCA5NiwgMiwgNCwgMjE0LCAxMDUsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMjIsIDIzMywgMTAsIDEsIDIyMywgCisgICAgOTYsIDIsIDU5LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDQsIDIxNCwgMTA2LCA1MSwgMTAsIDEsIDIyMywgOTYsIDIsIDU5LCAKKyAgICAyNTIsIDQzLCAyMiwgNTksIDQ4LCAxMCwgMSwgMjIzLCA5NiwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjM1LCAxMjAsIAorICAgIDEwLCAxLCAyMjMsIDk2LCAyLCAyNDQsIDExLCAxNzAsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDU5LCAyNTIsIDQzLCAyMiwgCisgICAgNTksIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDEzNCwgMTcwLCA1MSwgMTAsIDEsIDIyMSwgMTY3LCAyLCAxMzQsIDE3MCwgCisgICAgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIyMiwgMjcsIDIsIDExMywgMTcwLCA1MSwgMTAsIDEsIDIyMiwgCisgICAgMjcsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIxNywgODEsIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAKKyAgICAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxLCAyNDQsIDE0MywgMiwgNTksIDIzMCwgCisgICAgMTA5LCA1MSwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgNTEsIDEwLCAxLCAyMTMsIDI0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCAKKyAgICAxMzQsIDE3MCwgNTEsIDEwLCAxLCAyMjUsIDIwMywgMTAsIDEsIDIyNCwgODIsIDIsIDU5LCA0OCwgMTAsIDEsIDIyNCwgODIsIAorICAgIDIsIDEzNCwgMTcwLCA0OCwgMTAsIDEsIDIzNCwgMTc0LCAxMCwgMSwgMjE3LCAyNTAsIDIzNCwgMjUwLCAxMCwgMSwgMjM0LCAKKyAgICAyNTEsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjM0LCAyNTEsIDIsIDU5LCA0OCwgMTAsIDEsIDIyOSwgNzksIDEwLCAxLCAyMzQsIAorICAgIDI1MSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgMjQzLCAxMjIsIDEwLCAxLCAyNDMsIDEyMywgMiwgMjIyLCAyMzMsIDEwLCAKKyAgICAxLCAyMjksIDIsIDEwLCAxLCAyNDMsIDEyMywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjQyLCAxMDEsIDEwLCAxLCAyNDMsIAorICAgIDEyMywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjMzLCAxMDMsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDIsIDU5LCA0OCwgMTAsIDEsIDIzMywgMTAzLCAyLCAxMzQsIDE3MCwgNDgsIDEwLCAxLCAyMzMsIDEwMywgMiwgMTM0LCAKKyAgICAxNzAsIDUxLCAxMCwgMSwgMjI4LCA2MywgMiwgNTksIDUxLCAxMCwgMSwgMjI4LCA2MywgMjQyLCAyMTgsIDEwLCAxLCAyMjIsIAorICAgIDIxNCwgMTAsIDEsIDIyOCwgNjMsIDIsIDIyMiwgMjMzLCAxMCwgMSwgMjI4LCA2MywgMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQxLCAxMCwgMSwgMjE3LCAyNywgMiwgNTksIDQ4LCAxMCwgMSwgMjQxLCAyMTksIDIsIDc5LCAKKyAgICA0OCwgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MSwgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgMiwgMjAyLCA0OCwgMTAsIAorICAgIDEsIDIxNywgOCwgMjMxLCAxNjUsIDI0MiwgMTcxLCAxMCwgMSwgMjEyLCAzMSwgMiwgMjIyLCAyMzMsIDEwLCAxLCAyMzQsIAorICAgIDczLCAyMjYsIDIzNCwgMTAsIDEsIDIyNiwgMjM0LCAxMCwgMSwgNzAsIDEwLCAxLCAyMTAsIDIxMiwgMTAsIDEsIDIzNCwgCisgICAgNzMsIDIxMCwgMjEyLCAxMCwgMSwgMjEyLCAzMSwgMiwgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMjEzLCAyNTUsIDEwLCAxLCAKKyAgICAyNDQsIDE2OCwgMjExLCA0MywgMTAsIDEsIDc5LCAyLCAyMTcsIDc3LCAxMCwgMSwgNzksIDIsIDQsIDIxNCwgMTA1LCAxMCwgCisgICAgMSwgMjEyLCAzMSwgMiwgNTksIDQ4LCAxMCwgMSwgNzUsIDEwLCAxLCA3OSwgMiwgMTM0LCAxNzAsIDUxLCAxMCwgMSwgNzksIAorICAgIDI1MiwgMTMyLCAxMCwgMSwgNzksIDI1MiwgMTMzLCAyLCAyMDIsIDQ4LCAxMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAxMCwgMSwgCisgICAgMjU0LCAyNDMsIDEwLCA0LCAxMjUsIDI3LCAyMjIsIDI3LCAyLCAyMzMsIDEwMywgMiwgMTEyLCAyMzEsIDE5MiwgMTAsIDQsIAorICAgIDEyNSwgMjcsIDIyNCwgODIsIDIsIDIzMywgMTAzLCAyLCAxMTIsIDIzMSwgMTkyLCAxMCwgNCwgMTI1LCA2NiwgNjUsIDE3LCAKKyAgICAxMCwgNCwgMTI1LCAyMzMsIDEwMywgMjU0LCAxNzAsIDEwLCA0LCAxMjUsIDIzNSwgMTIzLCAxMCwgNCwgMTI1LCAxMzQsIAorICAgIDI0NywgMTE4LCAxMCwgNCwgMTI1LCAyMjEsIDE2NiwgMTAsIDI0NSwgMTQzLCA2NCwgMjUzLCAxNjYsIDEwLCAyMTgsIDE1MiwgCisgICAgNjQsIDIyMiwgMTM4LCAyNDUsIDE3NSwgMjQxLCAxNTUsIDEwLCA0LCAxMjUsIDIyMiwgMTgzLCAyMTAsIDg2LCAxMCwgNCwgCisgICAgMTI1LCAyMTQsIDE1OSwgMjIzLCAxMTUsIDIxMCwgODYsIDEwLCA0LCAxMjUsIDI0NywgMTE5LCAyNDEsIDIzNiwgNjQsIAorICAgIDIzNCwgMTI5LCAxMCwgNCwgMTI1LCA2NiwgNTMsIDE3LCAxMCwgNCwgMTIxLCAyMjEsIDE2NiwgMTAsIDQsIDEyNSwgMjMxLCAKKyAgICAyMjcsIDEwLCA0LCAyMTIsIDMwLCAxMCwgNCwgMjExLCA0MywgMTAsIDQsIDEyNSwgMjExLCA0MywgMTAsIDQsIDEyNSwgCisgICAgMjI4LCA2MiwgMTAsIDIyNSwgNDEsIDY0LCAyMjIsIDEzLCAxMCwgMjQ1LCAxNTIsIDI1MCwgMTc1LCAxMjEsIDIxOCwgMTI5LCAKKyAgICAxMCwgMjQ1LCAxNTIsIDI1MCwgMTc1LCAxMjUsIDIxOCwgMTI5LCAxMCwgMjIyLCAxODMsIDEyNSwgMjE4LCAxMzAsIDIsIAorICAgIDI0NCwgMTA0LCAyNTAsIDE3NCwgMTAsIDQsIDEyMSwgMjMxLCA3OCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAyMzUsIDE5MywgCisgICAgMjE0LCAxMDUsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMzUsIDE5MywgMjE0LCAxMDUsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAyMTAsIDg2LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEwLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTA1LCAyNDUsIDIyLCAKKyAgICAyNTQsIDM3LCAyMSwgMTU4LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTYxLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTg5LCAKKyAgICAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTk0LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTk4LCAyNDUsIDIyLCAyNTQsIDM3LCAKKyAgICAyMSwgMTk1LCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMjAwLCAxMCwgMSwgMjIwLCA2MCwgMiwgNTksIDUxLCAxMCwgMSwgCisgICAgMjQ4LCAyMTcsIDIsIDU5LCA1MSwgMTAsIDEsIDI0MiwgMjQ1LCAyLCA1OSwgNTEsIDEwLCA1LCAyMTksIDE1OCwgMjU0LCAKKyAgICAxMjYsIDEwLCA1LCAyMTksIDE1OCwgMjI0LCAyMzUsIDIzMSwgNTgsIDEwLCAxLCAyNDEsIDIxOSwgMiwgMjM1LCAxOTMsIAorICAgIDIxNCwgMTA1LCAxODgsIDI0NSwgMTQzLCA2NCwgMjI2LCAxNCwgMTg4LCAyMTgsIDE5LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDE4OCwgMjE4LCA2NywgMjQzLCAyMjksIDIxOCwgMTI5LCAxODgsIDIxOCwgMTksIDI0OSwgMjI2LCAxODgsIDIxOCwgNjcsIAorICAgIDI0OSwgMjI2LCAxODgsIDIwMywgMjQ5LCAyMjYsIDE4OCwgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMzMsIDQ2LCAxODgsIDI0OSwgCisgICAgMjI3LCAyMTksIDEwNiwgMjIyLCAyNTEsIDE4OCwgMjE4LCAxOSwgMjQ5LCAyMjcsIDIxOSwgMTA2LCAyMzMsIDQ2LCAxODgsIAorICAgIDIxOCwgNjcsIDI0OSwgMjI3LCAyMTksIDEwNiwgMjIyLCAyNTEsIDE4OCwgMjQ5LCAxODAsIDE4OCwgMjQyLCAxLCAyMjYsIAorICAgIDI1MCwgMTg4LCAyNDIsIDEsIDIzMSwgMzYsIDE4OCwgMjQyLCAxLCAyNTMsIDIxOCwgMTg4LCAyNTUsIDIxLCA3OCwgMTg4LCAKKyAgICAxLCAyNTQsIDE3NCwgMTg4LCAxLCAyMTgsIDIzLCAyNTQsIDE3NCwgMTg4LCAxLCAyNTIsIDI1LCAxODgsIDEsIDI0MywgCisgICAgMTEzLCAxODgsIDEsIDI0MywgMTE0LCAyNDMsIDkxLCAxODgsIDEsIDI0OCwgMTkyLCAxODgsIDEsIDI0NywgMTE5LCAyNDgsIAorICAgIDE5MywgMjIyLCAyMjksIDE4OCwgMSwgMjQxLCAyMzgsIDE4OCwgMSwgMjEyLCAzMCwgMTg4LCAxLCAyMTAsIDEwOCwgMTg4LCAKKyAgICAxLCAyNDEsIDE5NSwgMTg4LCAxLCAyMTYsIDIyNiwgMTg4LCAxLCAyMTYsIDIyNywgMjQzLCA5MSwgMTg4LCAxLCAyMTAsIAorICAgIDE5OSwgMTg4LCAxLCAyMTAsIDIwMCwgMjQxLCAyMzgsIDE4OCwgMSwgMjM0LCAyMjUsIDE4OCwgMSwgMjMzLCAxMDEsIDE4OCwgCisgICAgMSwgMjMwLCAxOTAsIDE4OCwgMSwgMjI3LCAxOTQsIDE4OCwgMSwgMjIwLCAxNDMsIDE4OCwgMSwgNDAsIDIyMCwgMTQzLCAKKyAgICAxODgsIDEsIDc1LCAxODgsIDEsIDIyNSwgMjIxLCAxODgsIDEsIDIyMywgNDksIDIyNSwgMjIxLCAxODgsIDEsIDIyMiwgMjQsIAorICAgIDE4OCwgMSwgMjI0LCA3NSwgMTg4LCAxLCAyMjIsIDIyOSwgMTg4LCAxLCAyMjAsIDIwLCAxODgsIDEsIDIxNywgMzYsIDE4OCwgCisgICAgMSwgMjI1LCAxNjksIDI1MiwgMTIsIDE4OCwgMSwgMjI1LCAxNjksIDI0MiwgMjQyLCAxODgsIDEsIDIyNSwgMTY5LCAyNDgsIAorICAgIDIwLCAxODgsIDIyNCwgMTUxLCA0OCwgMTg4LCAyMjQsIDE1MSwgNTEsIDE4OCwgMjI0LCAxNTEsIDI0NiwgMTE3LCAxODgsIAorICAgIDIxMCwgMTcsIDQ4LCAxODgsIDIxMCwgMTcsIDUxLCAxODgsIDIxMCwgMTcsIDI0NiwgMTE3LCAxODgsIDIyMywgMTMxLCA0OCwgCisgICAgMTg4LCAyMjMsIDEzMSwgNTEsIDE4OCwgMjQ2LCAxMTgsIDIxMCwgMjQsIDI0MSwgNDQsIDE4OCwgMjQ2LCAxMTgsIDIxMCwgCisgICAgMjQsIDI1NCwgMTA1LCAxODgsIDI0MSwgMjQxLCA0OCwgMTg4LCAyNDEsIDI0MSwgNTEsIDE4OCwgMjQxLCAyNDAsIDI0NiwgCisgICAgMTE3LCAxODgsIDI0NSwgNzksIDQ4LCAxODgsIDI0NSwgNzksIDUxLCAxODgsIDIyMiwgMTA3LCAxODgsIDI0NCwgMTM2LCAKKyAgICAyNDcsIDEyMCwgMTg4LCAyMjMsIDI0OCwgMTg4LCAyMjIsIDEzNCwgMTg4LCAxMTMsIDY3LCAxNzAsIDQ4LCAxODgsIDExMywgCisgICAgNjcsIDE3MCwgNTEsIDE4OCwgMTM0LCAxNzAsIDQ4LCAxODgsIDEzNCwgMTcwLCA1MSwgMTg4LCAyMjYsIDI0OCwgMjMyLCAKKyAgICAyMTQsIDQ4LCAxODgsIDIyNiwgMjQ4LCAyMzIsIDIxNCwgNTEsIDE4OCwgMjMwLCA1NiwgMTg4LCAyNTIsIDEzMSwgMTg4LCAKKyAgICAxLCAyMTksIDQ5LCAyMTAsIDgwLCAxODgsIDEsIDIxOSwgNDksIDIzNCwgMTIyLCAxODgsIDEsIDIxOSwgNDksIDI0NCwgCisgICAgMTU0LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDI0MCwgMjUwLCA1MSwgMTAsIDEsIDI1MiwgNTUsIDIsIDU5LCAKKyAgICAyNTIsIDQzLCAyMiwgMTM0LCAxNzAsIDQ4LCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIAorICAgIDUxLCAxMCwgMSwgMjUyLCA1NSwgMiwgMTM0LCAxNzAsIDIyNSwgNywgMjE0LCAxNTMsIDI1MiwgNDMsIDIyLCAxMTMsIDE3MCwgCisgICAgNDgsIDEwLCAxLCAyNTIsIDU1LCAyLCAxMTMsIDE3MCwgMjUyLCA0MywgMjIsIDU5LCA0OCwgMTAsIDEsIDI1MiwgNTUsIDIsIAorICAgIDIzNSwgMTkzLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAyNTIsIDU1LCAyLCA0LCAyMTQsIDEwNSwgMTAsIDEsIDEyMiwgMiwgCisgICAgMTEzLCAxNzAsIDQ4LCAxMCwgMSwgMTIyLCAyLCAxMzQsIDE3MCwgMjI1LCA3LCAyMTQsIDE1MywgNTEsIDEwLCAxLCAyNDgsIAorICAgIDE5NiwgMiwgMTEzLCAxNzAsIDIxMywgMTg5LCAyNTIsIDQzLCAyMiwgNCwgMjE3LCA4MCwgMTAsIDEsIDI0OCwgMTk2LCAyLCAKKyAgICAyMzUsIDE5MywgNCwgMjE0LCAxMDYsIDUxLCAxMCwgMSwgMjIzLCA5NiwgMiwgOTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgCisgICAgMjQ0LCAxMSwgMTcwLCA0OCwgMTAsIDEsIDI1NCwgMTk3LCAyLCAxMTMsIDE3MCwgNDgsIDEwLCAxLCAyNTQsIDE5NywgMiwgCisgICAgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDQ4LCAxMCwgMSwgMjU0LCAxOTcsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgCisgICAgNDgsIDEwLCAxLCAyNDQsIDE0MywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgMjQ0LCAxNDMsIDIsIDEzNCwgMTcwLCAyMjUsIAorICAgIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDIzNCwgMTc1LCAyLCA1OSwgNDgsIDEwLCAxLCAyMzQsIDE3NSwgMiwgMTM0LCAKKyAgICAxNzAsIDQ4LCAxMCwgMSwgMjM0LCAxNzUsIDIsIDEzNCwgMTcwLCAyMjUsIDcsIDIxNCwgMTUzLCA1MSwgMTAsIDEsIDY2LCAKKyAgICAyLCA1OSwgNDgsIDEwLCAxLCA2NiwgMiwgNTksIDUxLCAxMCwgMSwgMjI4LCA2MywgMiwgMTEzLCAxNzAsIDUxLCAxMCwgMSwgCisgICAgMjI4LCA2MywgMiwgNCwgMjE3LCA4MCwgMTAsIDEsIDIyOCwgNjMsIDIsIDQsIDIxNCwgMTA1LCAxMCwgMSwgMjMzLCAxMDMsIAorICAgIDIsIDEzMCwgMTAsIDEsIDIyMywgOTYsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAKKyAgICAyMDIsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDExMywgMTcwLCAyMTMsIDE4OSwgNDgsIDEwLCAxLCAxMjIsIDIsIDQsIAorICAgIDEwLCAxLCAyMTcsIDgxLCA1MSwgMTAsIDEsIDEyMiwgMiwgNCwgMTAsIDEsIDIxNywgODEsIDIyLCAxMTMsIDI0NywgMTE4LCAKKyAgICAxMCwgMSwgMjIxLCAxNjcsIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgMTAsIDEsIDIyMywgOTYsIAorICAgIDIsIDQsIDEwLCAxLCAyMTcsIDgxLCAyMiwgMTEzLCAyNDcsIDExOCwgMTAsIDEsIDEyMiwgMiwgNCwgMTAsIDEsIDIxNywgCisgICAgODEsIDQ4LCAxMCwgMSwgMTEyLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTEzLCA0OCwgMTAsIDEsIDExMiwgMiwgMjQ1LCAKKyAgICAyMiwgMjU0LCAzNywgMjEsIDEzNCwgNDgsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAKKyAgICAxMTMsIDQ4LCAxMCwgMSwgMjQ0LCAxNjgsIDc5LCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgMTM0LCA0OCwgMTAsIDEsIAorICAgIDI0NCwgMTY4LCA3OSwgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDI0NCwgMTEsIDUxLCAxMCwgMSwgMjEyLCAzMSwgMiwgCisgICAgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAyMTIsIDMxLCAyLCAyNDUsIDIyLCAyNTQsIDM3LCAyMSwgCisgICAgMTM0LCA0OCwgMTAsIDEsIDc5LCAyNTIsIDEzMywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDExMywgNDgsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzMsIDIsIDI0NSwgMjIsIDI1NCwgMzcsIDIxLCAxMzQsIDQ4LCAxMCwgMSwgMTIyLCAyLCAyNDUsIDIyLCAKKyAgICAyNTQsIDM3LCAyMSwgMjQ0LCAxMSwgNTEsIDEwLCAxLCAyMjEsIDE2NywgMiwgMjQ1LCAyMiwgMjU0LCAzNywgMjEsIDI0NCwgCisgICAgMTEsIDQ4LCAxMCwgMSwgMjIxLCAxNjcsIDIsIDIzNSwgMTkzLCAyMTQsIDEwNSwgMTAsIDEsIDIzNCwgMjUxLCAyLCAxMTMsIAorICAgIDE3MCwgNDgsIDIxNiwgMjA1LCAxLCAyNDIsIDQ2LCAyMTYsIDIwNSwgMSwgMjIwLCA2OCwgMjE2LCAyMDUsIDEsIDIyOCwgCisgICAgNjEsIDIxNiwgMjA1LCAxLCAyMjMsIDE4NCwgMjE2LCAyMDUsIDEsIDI1MiwgMTg5LCAyMTYsIDIwNSwgMSwgMjMyLCAyNTEsIAorICAgIDIxNiwgMjA1LCAxLCAyMzUsIDgsIDIxNiwgMjA1LCAxLCAyNTQsIDE1OSwgMjE2LCAyMDUsIDEsIDIxNCwgMjUsIDIxNiwgCisgICAgMjA1LCAxLCAyMzEsIDc3LCAyMTYsIDIwNSwgMSwgMjQ0LCAxOTQsIDIxNiwgMjA1LCAxLCAyNDgsIDIzLCAyMTYsIDIwNSwgCisgICAgMSwgMjE2LCAyMDcsIDIxNiwgMjA1LCAxLCAyMzMsIDEzMSwgMjE2LCAyMDUsIDEsIDI0MywgMTMxLCAyMTYsIDIwNSwgMSwgCisgICAgMjQyLCAxNzcsIDIxNiwgMjA1LCAxLCAyMjEsIDE2NSwgMjE2LCAyMDUsIDEsIDI0OCwgMTQ4LCAyMTYsIDIwNSwgMSwgMjEwLCAKKyAgICAxMDAsIDIxNiwgMjA1LCAxLCAyMTcsIDM3LCAyMTYsIDIwNSwgMSwgMjExLCAxMDMsIDIxNiwgMjA1LCAxLCAyMjUsIDIzMywgCisgICAgMjE2LCAyMDUsIDEsIDIzNSwgMTI4LCAyMTYsIDIwNSwgMSwgMjUwLCAxMzQsIDIxNiwgMjA1LCAxLCAyMTUsIDE1NSwgMjE2LCAKKyAgICAyMDUsIDEsIDI0MSwgMTg4LCAyMTYsIDIwNSwgMSwgMjM0LCAxMzEsIDIxNiwgMjA1LCAxLCAyMTYsIDIwNiwgMjE2LCAyMDUsIAorICAgIDEsIDIxMCwgMTE1LCAyMTYsIDIwNSwgMSwgMjIwLCA1OCwgMjE2LCAyMDUsIDEsIDIyMiwgMzAsIDIxNiwgMjA1LCAxLCAKKyAgICAyNDgsIDIxOSwgMjE2LCAyMDUsIDEsIDExMSwgMjE2LCAyMDUsIDEsIDIxMCwgMjMsIDIxNiwgMjA1LCAxLCAyNTQsIDE5MywgCisgICAgMjE2LCAyMDUsIDEsIDI0MiwgMjQzLCAyMTYsIDIwNSwgMSwgMjI0LCA4NSwgMjE2LCAyMDUsIDEsIDIxMiwgNjMsIDIxNiwgCisgICAgMjA1LCAyNTUsIDIyLCAyMTYsIDIwNSwgMjU1LCAzOCwgMjE2LCAyMDUsIDI0MCwgMTE0LCAyMTYsIDIwNSwgMjQ1LCAyMDgsIAorICAgIDIxNiwgMjA1LCAyMTQsIDIyMiwgMjE2LCAyMDUsIDIyNiwgMTgyLCAyMTYsIDIwNSwgMjQ1LCAyMTYsIDIxNiwgMjA1LCAKKyAgICAyNDUsIDE2LCAyMTYsIDIwNSwgMjI2LCAyNDcsIDIxNiwgMjA1LCAyMjYsIDI1NSwgMjE2LCAyMDUsIDIxOCwgNDUsIDIxNiwgCisgICAgMjA1LCAxLCAyMjksIDIyNSwgMjI4LCAxMzcsIDIxLCAyMTAsIDg2LCAyMjgsIDEzNywgMjEsIDExMCwgMjI4LCAxMzcsIDIxLCAKKyAgICAxMDUsIDIyOCwgMTM3LCAyMSwgMTU4LCAyMjgsIDEzNywgMjEsIDE2MSwgMjI4LCAxMzcsIDIxLCAxODksIDIyOCwgMTM3LCAKKyAgICAyMSwgMTk0LCAyMjgsIDEzNywgMjEsIDE5OCwgMjI4LCAxMzcsIDIxLCAxOTUsIDIyOCwgMTM3LCAyMSwgMjAwLCAyMjgsIAorICAgIDEzNywgMSwgNjEsIDIyOCwgMTM3LCAxLCAyNDUsIDIwOSwgMjI4LCAxMzcsIDEsIDczLCAyMjgsIDEzNywgMSwgNzUsIDIyOCwgCisgICAgMTM3LCAxLCA3MCwgMjI4LCAxMzcsIDEsIDIyNiwgMTgzLCAyMjgsIDEzNywgMSwgNzYsIDIyOCwgMTM3LCAxLCAyNDgsIAorICAgIDIwOSwgMjI4LCAxMzcsIDEsIDIzMCwgMjUsIDIyOCwgMTM3LCAxLCAyNTIsIDE5MSwgMjI4LCAxMzcsIDEsIDE5MCwgMjI4LCAKKyAgICAxMzcsIDEsIDIxNywgMTA1LCAyMjgsIDEzNywgMSwgMjM1LCAxNDEsIDIyOCwgMTM3LCAxLCAyNTAsIDE1NywgMjI4LCAxMzcsIAorICAgIDEsIDI0OCwgMjIxLCAyMjgsIDEzNywgMSwgMjA1LCAyMjgsIDEzNywgMSwgMjIyLCAxNzksIDIyOCwgMTM3LCAxLCAyMDYsIAorICAgIDIyOCwgMTM3LCAxLCAyNDMsIDc5LCAyMjgsIDEzNywgMSwgMjQ0LCAxOTYsIDIyOCwgMTM3LCAxLCAxNzYsIDIyOCwgMTM3LCAKKyAgICAxLCAyMzMsIDEzNSwgMjI4LCAxMzcsIDEsIDIyOSwgMjI5LCAyMTEsIDIyMywgMjI4LCAxMzcsIDEsIDE4NCwgMjI4LCAxMzcsIAorICAgIDEsIDIyNywgMTY1LCAyMjgsIDEzNywgMSwgMTk3LCAyMjgsIDEzNywgMSwgMTYyLCAyMjgsIDEzNywgMSwgMjEyLCA2NSwgCisgICAgMjI4LCAxMzcsIDEsIDE5MSwgMjI4LCAxMzcsIDEsIDIyNywgMTY2LCAyMTEsIDIyMywgMjI4LCAxMzcsIDEsIDIzNSwgNjEsIAorICAgIDIzNSwgMTQxLCAyMjgsIDEzNywgMSwgMjM1LCA2MSwgMjUwLCAxNTcsIDIyOCwgMTM3LCAxLCAyMzUsIDYxLCAyMDUsIDIyOCwgCisgICAgMTM3LCAzOCwgMjE5LCAyNTEsIDEyNSwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAyMTksIDI1MSwgMTIxLCAyMTYsIDMwLCAKKyAgICAyMjgsIDEzNywgMzgsIDIxOSwgMjUxLCAyMjIsIDIyOCwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAxOTksIDI0OCwgMzgsIAorICAgIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAxMjUsIDIxNiwgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAxMjEsIDIxNiwgCisgICAgMzAsIDIyOCwgMTM3LCAzOCwgMTk5LCAyMjIsIDIyOCwgMjE2LCAzMCwgMjI4LCAxMzcsIDM4LCAyMjksIDE5MywgNzgsIAorICAgIDIyOCwgMTM3LCAzOCwgNTIsIDU5LCA0OCwgMjI4LCAxMzcsIDEyNSwgMTM4LCAyNTQsIDU3LCAyMjgsIDEzNywgMTIxLCAKKyAgICAxMzgsIDI1NCwgNTcsIDIyOCwgMTM3LCAxNiwgMjI2LCAxODQsIDI0OCwgNTAsIDIyOCwgMTM3LCAxNiwgMjQzLCA3OCwgCisgICAgMjI4LCAxMzcsIDI0OSwgMjE5LCAyMjgsIDEzNywgMjQ1LCAzMSwgNzgsIDIyOCwgMTM3LCAyMzMsIDEwOCwgMjIxLCAyNTIsIAorICAgIDEsIDI1NCwgMTc2LCAyMjEsIDI1MiwgMSwgMjUxLCAyMjgsIDIyMSwgMjUyLCAxLCAyNDMsIDExMiwgMjIxLCAyNTIsIDEsIAorICAgIDI0OCwgMTk0LCAyMjEsIDI1MiwgMSwgMjM1LCAxNTIsIDIyMSwgMjUyLCAxLCAyNTIsIDE4OSwgMjIxLCAyNTIsIDEsIDIxMCwgCisgICAgODksIDIyMSwgMjUyLCAxLCAyMzUsIDE2MCwgMjIxLCAyNTIsIDEsIDIxNiwgNjcsIDIyMSwgMjUyLCAxLCAyMTAsIDE4MiwgCisgICAgMjIxLCAyNTIsIDEsIDIzNSwgOSwgMjIxLCAyNTIsIDEsIDIzMywgMTI4LCAyMjEsIDI1MiwgMSwgMjMwLCAxOTAsIDIyMSwgCisgICAgMjUyLCAxLCAyMjcsIDE5NCwgMjIxLCAyNTIsIDEsIDIxOSwgMTU2LCAyMjEsIDI1MiwgMSwgMjM1LCAyNTUsIDIyMSwgMjUyLCAKKyAgICAxLCAyNDQsIDEyMSwgMjIxLCAyNTIsIDEsIDIxNSwgMTgxLCAyMjEsIDI1MiwgMSwgMjI0LCAxMCwgMjIxLCAyNTIsIDEsIAorICAgIDIyMiwgMjI5LCAyMjEsIDI1MiwgMSwgMjIwLCA4NSwgMjIxLCAyNTIsIDEsIDIxNywgMTAwLCAyMjEsIDI1MiwgMTY0LCAKKyAgICAyMzUsIDI1NSwgMjIxLCAyNTIsIDE2NCwgMjM1LCAyNTQsIDIyMSwgMjUyLCAxNjQsIDIyNiwgMjQzLCAyMjEsIDI1MiwgCisgICAgMTY0LCAyNDgsIDIwNywgMjIxLCAyNTIsIDU4LCAxLCAyNDUsIDEwNSwgMjEwLCAxODIsIDIyMSwgMjUyLCAxNjQsIDI0NSwgCisgICAgMTA1LCAyMTAsIDE4MiwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDc1LCAyMjEsIDI1MiwgMjUsIDUsIDc1LCAyMjEsIDI1MiwgCisgICAgMjUsIDUsIDIyNiwgMTE4LCAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDE5OSwgMjU1LCA3MywgMjIxLCAyNTIsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDIyNiwgMTE4LCA2MSwgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDYxLCAyMjEsIAorICAgIDI1MiwgMjUsIDUsIDYxLCAyMjEsIDI1MiwgNTgsIDEsIDIxOSwgMjUxLCA2MSwgMjIxLCAyNTIsIDI1LCA1LCAyMTksIDI1MSwgCisgICAgNjEsIDIyMSwgMjUyLCAyNSwgNSwgMTk5LCA3MCwgMjIxLCAyNTIsIDI1LCA1LCA3MCwgMjIxLCAyNTIsIDU4LCAxLCA3MywgCisgICAgMjIxLCAyNTIsIDI1LCA1LCAxOTksIDczLCAyMjEsIDI1MiwgMjUsIDUsIDczLCAyMjEsIDI1MiwgMjUsIDUsIDc2LCAyMjEsIAorICAgIDI1MiwgMjUsIDUsIDIxOCwgNDUsIDIyMSwgMjUyLCAxNjQsIDIyOSwgOTIsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjI5LCA5MiwgCisgICAgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDIxOCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDExNCwgMjIxLCAyNTIsIAorICAgIDIyNCwgMTQxLCAyNTIsIDExNCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTMsIDIwMSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAKKyAgICAyMjAsIDgsIDIyMSwgMjUyLCAyNTUsIDIxLCA3OCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMzEsIDY4LCAyMjQsIDQ1LCAyMjEsIAorICAgIDI1MiwgMjI0LCAxNDEsIDIxMCwgMzEsIDIyMSwgMjUyLCAyMjQsIDE0MSwgMjI0LCA0NSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAKKyAgICAyMTAsIDExNCwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyMTUsIDkwLCAyMjEsIDI1MiwgMjI0LCAxNDEsIDI1NCwgOSwgMjIxLCAKKyAgICAyNTIsIDIyNCwgMTQxLCAyMTksIDUzLCAyMzEsIDE0NSwgMjIxLCAyNTIsIDIyNCwgMTQxLCAyNTQsIDEwMCwgMjMxLCAxODIsIAorICAgIDEsIDI0MiwgMjQsIDIzMSwgMTgyLCAxLCAyNTUsIDI1LCAyMzEsIDE4MiwgMSwgMjU0LCAyMTYsIDIzMSwgMTgyLCAxLCAKKyAgICAyNTQsIDI1NSwgMjMxLCAxODIsIDEsIDI1NCwgMjA5LCAyMzEsIDE4MiwgMSwgMjE0LCAxMjQsIDIzMSwgMTgyLCAxLCAyNTMsIAorICAgIDE2MCwgMjMxLCAxODIsIDEsIDIzNSwgMTYwLCAyMzEsIDE4MiwgMSwgMjUzLCAxOTgsIDIzMSwgMTgyLCAxLCAyNTQsIDE4MSwgCisgICAgMjMxLCAxODIsIDEsIDI1NCwgMTg2LCAyMzEsIDE4MiwgMSwgMjU0LCAxNzgsIDIzMSwgMTgyLCAxLCAyNTQsIDEzNiwgMjMxLCAKKyAgICAxODIsIDEsIDI1NCwgMTIzLCAyMzEsIDE4MiwgMSwgMjUzLCAyMzcsIDIzMSwgMTgyLCAxLCAyMzUsIDI1NSwgMjMxLCAxODIsIAorICAgIDEsIDI1NCwgNzIsIDIzMSwgMTgyLCAxLCAyNTMsIDIwOCwgMjMxLCAxODIsIDEsIDI1NCwgNDUsIDIzMSwgMTgyLCAxLCAKKyAgICAyNTQsIDQxLCAyMzEsIDE4MiwgMSwgMjUzLCAyMzEsIDIzMSwgMTgyLCAxLCAyNTMsIDIwNiwgMjMxLCAxODIsIDEsIDI0NiwgCisgICAgNTUsIDIzMSwgMTgyLCAxLCAyMzUsIDIsIDIzMSwgMTgyLCAxLCAyNTQsIDE5NiwgMjMxLCAxODIsIDI1NCwgMjIyLCA3OCwgCisgICAgMjMxLCAxODIsIDIxMywgMTM2LCA3OCwgMjMxLCAxODIsIDI0MywgNTMsIDc4LCAyMzEsIDE4MiwgMjI0LCAxNDAsIDEwLCAxLCAKKyAgICAyNTIsIDU1LCAyLCA0LCAyMTQsIDEwNiwgNTEsIDEwLCAxLCAxNTEsIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDIxNywgODEsIAorICAgIDIsIDExMywgMTcwLCA0OCwgMTAsIDEsIDI0NCwgMTQzLCAyLCA1OSwgMjUyLCA0MywgMjIsIDEzNCwgMTcwLCA0OCwgMTAsIAorICAgIDEsIDIyNCwgODIsIDIsIDU5LCA1MSwgMTAsIDEsIDIzMywgMTAzLCAyLCA1MiwgMTMwLCAxMCwgMSwgNjYsIDIsIDEzNCwgCisgICAgMTcwLCA0OCwgMTAsIDEsIDc5LCAyLCAxMTMsIDE3MCwgMjUyLCA0MywgMjIsIDIwMiwgNDgsIDEwLCAxLCA3OSwgMiwgMTEzLCAKKyAgICAxNzAsIDI1MiwgNDMsIDIyLCA1OSwgNDgsIDEwLCAxLCAyMjMsIDk2LCAyLCAyMzIsIDEyMywgMTAsIDEsIDIxMiwgMzEsIDIsIAorICAgIDU5LCAyMTEsIDIzMSwgMTAsIDEsIDIyMiwgMjAxLCAyMTEsIDQzLCAxMCwgMjQ5LCA5OSwgMjQ0LCAxNjUsIDEwLCAyNDksIAorICAgIDk5LCAyNDgsIDE4NCwgMTAsIDI0OSwgOTksIDIzNCwgMjA1LCAxMCwgMjQ5LCA5OSwgMjQ0LCAxNjMsIDEwLCAyNDksIDk5LCAKKyAgICAyNDgsIDE4MiwgMTAsIDI0OSwgOTksIDIzNCwgMjAzLCAxMCwgMTM4LCAxMjMsIDU5LCA0OCwgMTAsIDEzOCwgMTEzLCAxNzAsIAorICAgIDQ4LCAxMCwgMTM4LCAyMzIsIDEyNCwgNDgsIDEwLCAxMzgsIDEyMywgNTksIDUxLCAxMCwgMTM4LCAxMTMsIDE3MCwgNTEsIAorICAgIDEwLCAxMzgsIDIzMiwgMTI0LCA1MSwgMTAsIDIwNCwgMjQ0LCAxNjMsIDEwLCAyMDQsIDI0OCwgMTgyLCAxMCwgMjA0LCAKKyAgICAyMzQsIDIwMywgMTAsIDQsIDEyNSwgMjEyLCAzMCwgMTAsIDI0NCwgMTY2LCAyLCAyMjIsIDIzMywgMTAsIDI0NCwgMTY2LCAKKyAgICAyLCA1OSwgNDgsIDEwLCAyMzQsIDIwNiwgMiwgNTksIDUxLCAxMCwgNDMsIDI1MywgMjUwLCA0OCwgMTAsIDQ0LCAyNTMsIAorICAgIDI1MCwgNDgsIDEwLCA0MywgMjUzLCAyNTAsIDUxLCAxMCwgNDQsIDI1MywgMjUwLCA1MSwgMTAsIDUyLCA0NCwgMjUzLCAKKyAgICAyNTAsIDQ4LCAxMCwgNTIsIDQ0LCAyNTMsIDI1MCwgNzcsIDIsIDI0NywgMTIwLCAxMCwgNDQsIDI1MywgMjUwLCA3NywgMiwgCisgICAgMjQ3LCAxMjAsIDEwLCAyNDgsIDE4NSwgMiwgMjQ3LCAxMjAsIDg0LCA1LCAyMzUsIDE5MywgMjUwLCAyNTUsIDg0LCA1LCAKKyAgICAyNTAsIDI1NSwgODQsIDUsIDI1NCwgNzUsIDg0LCA1LCAyMTMsIDE0NywgODQsIDEsIDIxOSwgMjUxLCA2MSwgODQsIDEsIAorICAgIDYxLCA4NCwgMSwgMjU1LCA3MywgODQsIDEsIDczLCA4NCwgMSwgMjM2LCAzMywgODQsIDEsIDcwLCA4NCwgMSwgMjE0LCAKKyAgICAxMTgsIDg0LCAxLCAxNDksIDE1MywgODQsIDEsIDE0OSwgMTU2LCA4NCwgMSwgMjUxLCAyLCA3NSwgODQsIDEsIDIxOSwgCisgICAgMjUxLCA3NSwgODQsIDEsIDc1LCA4NCwgMSwgMjU0LCAyMDEsIDg0LCAxLCAyNTEsIDIsIDc2LCA4NCwgMSwgMjE5LCAyNTEsIAorICAgIDc2LCA4NCwgMSwgNzYsIDg0LCAxLCAyNTMsIDE5MiwgODQsIDEsIDE3NiwgODQsIDEsIDIzNCwgMTMyLCA4NCwgMSwgMjQzLCAKKyAgICAxMzUsIDg0LCAxLCAyNDIsIDI0OSwgODQsIDEsIDIyOSwgNzcsIDg0LCAxLCAyNTEsIDMzLCA4NCwgMSwgMjUwLCAxNTcsIAorICAgIDg0LCAxLCAyMzUsIDE0MSwgODQsIDEsIDIzNSwgMTE0LCA4NCwgMSwgMjI3LCAxNjUsIDg0LCAxLCAyMTUsIDE1NiwgODQsIAorICAgIDEsIDIxNSwgMTQ0LCA4NCwgMSwgMjQ4LCAxMzUsIDg0LCAxLCAyNDgsIDExOSwgODQsIDEsIDIyOCwgMTEwLCA4NCwgMSwgCisgICAgMjE3LCAxMDUsIDg0LCAxLCAyMTYsIDIwOCwgODQsIDEsIDI0OCwgMjIxLCA4NCwgMSwgMjQ4LCAyNSwgODQsIDEsIDE5NywgCisgICAgODQsIDEsIDIyOCwgOTIsIDg0LCAxLCAxOTAsIDg0LCAxLCAyMjUsIDE0NywgODQsIDEsIDI1MiwgMTkxLCA4NCwgMSwgMjUyLCAKKyAgICAxOCwgODQsIDEsIDE4NCwgODQsIDEsIDE5MSwgODQsIDEsIDIwNSwgODQsIDEsIDIyMiwgMTc5LCA4NCwgMSwgMjMzLCAxMzUsIAorICAgIDg0LCAxLCAyMzIsIDE4NCwgODQsIDEsIDIzMiwgMTc1LCA4NCwgMSwgMjE0LCAyNywgODQsIDEsIDIyMCwgMTAyLCA4NCwgMSwgCisgICAgMjE4LCAyMjMsIDg0LCAxLCAyMDYsIDg0LCAxLCAxNjIsIDg0LCAyNSwgNSwgMjI2LCAyMzQsIDg0LCAyNSwgNSwgMjI2LCAKKyAgICAxODEsIDg0LCA1LCAyMjcsIDIwNSwgODQsIDUsIDI1MywgMTc1LCA4NCwgMjUsIDUsIDI1NSwgNzMsIDg0LCAyNSwgNSwgNzMsIAorICAgIDg0LCAyNSwgNSwgMjM2LCAzMywgODQsIDI1LCA1LCA3MCwgODQsIDI1LCA1LCAyMTQsIDExOCwgODQsIDI1LCA1LCAxNDksIAorICAgIDE1MywgODQsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA4NCwgMjUsIDUsIDI1MSwgMiwgNzUsIDg0LCAyNSwgNSwgMjE5LCAKKyAgICAyNTEsIDc1LCA4NCwgMjUsIDUsIDc1LCA4NCwgMjUsIDUsIDI1NCwgMjAxLCA4NCwgMjUsIDUsIDI1MSwgMiwgNzYsIDg0LCAKKyAgICAyNSwgNSwgMjE5LCAyNTEsIDc2LCA4NCwgMjUsIDUsIDc2LCA4NCwgMjUsIDUsIDI1MywgMTkyLCA4NCwgNSwgMjEzLCAxNTIsIAorICAgIDg0LCAyNSwgNSwgMjI0LCAxODUsIDc1LCA4NCwgMjUsIDUsIDI1MywgMTcxLCA4NCwgMjI2LCAyMDQsIDg0LCAyMTgsIDExMSwgCisgICAgNSwgMjE0LCAyMTYsIDg0LCAyMTgsIDExMSwgNSwgMjU0LCA3NywgODQsIDI0MiwgMTM3LCAyNTUsIDE0LCA4NCwgMjU1LCAzLCAKKyAgICAyNTUsIDE0LCA4NCwgMjUsIDUsIDI1MSwgMiwgMTk5LCA3NSwgODQsIDI1LCA1LCAyMTQsIDIxNCwgODQsIDI1LCA1LCAyMTQsIAorICAgIDExNywgODQsIDEsIDIyNCwgODgsIDg0LCAxLCAyMzQsIDExNSwgODQsIDEsIDI0MiwgMjI2LCA4NCwgMSwgMjEwLCAxMTYsIAorICAgIDg0LCAxLCAyNDgsIDEyNCwgODQsIDEsIDIyMywgMzksIDg0LCAxLCAyNDQsIDE5NiwgODQsIDEsIDIxMCwgMTY4LCA4NCwgMSwgCisgICAgMTQ5LCAyMjIsIDE4MCwgODQsIDEsIDE0OSwgMjMyLCAxODUsIDg0LCAyNSwgNSwgMTQ5LCAxNTYsIDg0LCAyNSwgNSwgMTQ5LCAKKyAgICAyMzIsIDE4NSwgODQsIDI0OCwgMTc4LCA4NCwgNTIsIDI0OCwgMTc4LCA4NCwgMjEsIDIxMCwgODYsIDg0LCAyMSwgMTEwLCAKKyAgICA4NCwgMjEsIDEwNSwgODQsIDIxLCAxNTgsIDg0LCAyMSwgMTYxLCA4NCwgMjEsIDE4OSwgODQsIDIxLCAxOTQsIDg0LCAyMSwgCisgICAgMTk4LCA4NCwgMjEsIDE5NSwgODQsIDIxLCAyMDAsIDg0LCAyNTUsIDIxLCA1MCwgODQsIDUsIDEyNSwgMjE5LCAxNywgMjQ3LCAKKyAgICAxMjAsIDg0LCAxLCAyNTEsIDIsIDYxLCA4NCwgMSwgMjI2LCAyMzQsIDg0LCAxLCAyMjYsIDE4MSwgODQsIDEsIDI1MywgCisgICAgMTcxLCA4NCwgMSwgMjE0LCAyMTQsIDg0LCAxLCAyMTQsIDExNywgODQsIDEsIDIxMCwgODIsIDg0LCAxLCAxMTQsIDE5MSwgCisgICAgODQsIDEsIDI0MywgMjksIDg0LCAxLCAyMzUsIDk2LCA4NCwgMSwgMjQyLCAxODAsIDIxOCwgMTI5LCA4NCwgMSwgMjQ4LCAKKyAgICAxMjUsIDg0LCAxLCAyNTIsIDExMSwgMTQ2LCA1LCAyNTAsIDI1NSwgMTQ2LCA1LCAyNTQsIDc1LCAxNDYsIDUsIDIxMywgCisgICAgMTQ3LCAxNDYsIDEsIDYxLCAxNDYsIDEsIDI1NSwgNzMsIDE0NiwgMSwgNzMsIDE0NiwgMSwgMjM2LCAzMywgMTQ2LCAxLCAKKyAgICA3MCwgMTQ2LCAxLCAyMTQsIDExOCwgMTQ2LCAxLCAxNDksIDE1MywgMTQ2LCAxLCAxNDksIDE1NiwgMTQ2LCAxLCA3NSwgCisgICAgMTQ2LCAxLCAyNTQsIDIwMSwgMTQ2LCAxLCA3NiwgMTQ2LCAxLCAyNTMsIDE5MiwgMTQ2LCAxLCAxNzYsIDE0NiwgMSwgMjM0LCAKKyAgICAxMzIsIDE0NiwgMSwgMjQzLCAxMzUsIDE0NiwgMSwgMjQyLCAyNDksIDE0NiwgMSwgMjI5LCA3NywgMTQ2LCAxLCAyNTEsIAorICAgIDMzLCAxNDYsIDEsIDI1MCwgMTU3LCAxNDYsIDEsIDIzNSwgMTQxLCAxNDYsIDEsIDIzNSwgMTE0LCAxNDYsIDEsIDIyNywgCisgICAgMTY1LCAxNDYsIDEsIDIxNSwgMTU2LCAxNDYsIDEsIDIxNSwgMTQ0LCAxNDYsIDEsIDI0OCwgMTM1LCAxNDYsIDEsIDI0OCwgCisgICAgMTE5LCAxNDYsIDEsIDIyOCwgMTEwLCAxNDYsIDEsIDIxNywgMTA1LCAxNDYsIDEsIDIxNiwgMjA4LCAxNDYsIDEsIDI0OCwgCisgICAgMjIxLCAxNDYsIDEsIDI0OCwgMjUsIDE0NiwgMSwgMTk3LCAxNDYsIDEsIDE5MCwgMTQ2LCAxLCAyMjUsIDE0NywgMTQ2LCAxLCAKKyAgICAyNTIsIDE5MSwgMTQ2LCAxLCAyNTIsIDE4LCAxNDYsIDEsIDE4NCwgMTQ2LCAxLCAxOTEsIDE0NiwgMSwgMjA1LCAxNDYsIDEsIAorICAgIDIzMywgMTM1LCAxNDYsIDEsIDIyMCwgMTAyLCAxNDYsIDEsIDIxOCwgMjIzLCAxNDYsIDEsIDIwNiwgMTQ2LCAxLCAxNjIsIAorICAgIDE0NiwgNSwgMjI3LCAyMDUsIDE0NiwgNSwgMjUzLCAxNzUsIDE0NiwgMjUsIDUsIDI1NSwgNzMsIDE0NiwgMjUsIDUsIDczLCAKKyAgICAxNDYsIDI1LCA1LCAyMzYsIDMzLCAxNDYsIDI1LCA1LCA3MCwgMTQ2LCAyNSwgNSwgMjE0LCAxMTgsIDE0NiwgMjUsIDUsIAorICAgIDE0OSwgMTUzLCAxNDYsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNDYsIDI1LCA1LCA3NSwgMTQ2LCAyNSwgNSwgMjU0LCAKKyAgICAyMDEsIDE0NiwgMjUsIDUsIDc2LCAxNDYsIDI1LCA1LCAyNTMsIDE5MiwgMTQ2LCA1LCAyMTMsIDE1MiwgMTQ2LCAxLCAyMzQsIAorICAgIDEyNCwgMjE3LCAxMDUsIDE0NiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAxNDYsIDEsIDIyMiwgMTc5LCAxNDYsIDEsIDIyMywgCisgICAgMzksIDE0NiwgMSwgMjEwLCAxNjgsIDE0NiwgMSwgMTQ5LCAyMjIsIDE4MCwgMTQ2LCAxLCAxNDksIDIzMiwgMTg1LCAxNDYsIAorICAgIDI1LCA1LCAxNDksIDE1NiwgMTQ2LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTQ2LCAyMSwgMjEwLCA4NiwgMTQ2LCAyMSwgCisgICAgMTEwLCAxNDYsIDIxLCAxMDUsIDE0NiwgMjEsIDE1OCwgMTQ2LCAyMSwgMTYxLCAxNDYsIDIxLCAxODksIDE0NiwgMjEsIAorICAgIDE5NCwgMTQ2LCAyMSwgMTk4LCAxNDYsIDIxLCAxOTUsIDE0NiwgMjEsIDIwMCwgMTQ2LCAxLCAyMjMsIDE4OCwgMiwgMjMwLCAKKyAgICAyMjQsIDI0NywgMjU0LCAxNDYsIDEsIDIyMywgMTg4LCAyLCAyMzIsIDEwOCwgMjQ3LCAyNTQsIDE0NiwgMjIyLCAxMTgsIAorICAgIDc4LCAxNDYsIDIyMiwgMTE4LCA1MCwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTEwLCAxNDYsIDI0OSwgOTgsIDIyNywgCisgICAgMTk3LCAxMDUsIDE0NiwgMjQ5LCA5OCwgMjI3LCAxOTcsIDE1OCwgMTQ2LCAyNDksIDk4LCAyMjcsIDE5NywgMTYxLCAxNDYsIAorICAgIDI0OSwgOTgsIDIyNywgMTk3LCAxMjMsIDIzMywgMTYsIDIxNiwgMjAxLCAyMTYsIDE5NiwgMjQ4LCA0OCwgMTQ2LCAyNDksIAorICAgIDk4LCAyNDgsIDQ5LCAyMTksIDExOSwgMTQ2LCAyMzUsIDE2MSwgMTQ2LCAyNDMsIDEwMywgNzgsIDE4MywgNSwgMjU0LCAKKyAgICAyNTQsIDI1MSwgMjQzLCAxODMsIDUsIDI1MSwgMjQzLCAxODMsIDUsIDIxMywgMTQ3LCAxODMsIDEsIDYxLCAxODMsIDEsIAorICAgIDI1NSwgNzMsIDE4MywgMSwgNzMsIDE4MywgMSwgMjM2LCAzMywgMTgzLCAxLCA3MCwgMTgzLCAxLCAyMTQsIDExOCwgMTgzLCAKKyAgICAxLCAyNDUsIDIwOSwgMTgzLCAxLCAyNTQsIDIwMSwgMTgzLCAxLCAyMjYsIDE4MywgMTgzLCAxLCAyNTMsIDE5MiwgMTgzLCAKKyAgICAxLCAxNzYsIDE4MywgMSwgMjM0LCAxMzIsIDE4MywgMSwgMjQzLCAxMzUsIDE4MywgMSwgMjQyLCAyNDksIDE4MywgMSwgCisgICAgMjI5LCA3NywgMTgzLCAxLCAyNTEsIDMzLCAxODMsIDEsIDI1MCwgMTU3LCAxODMsIDEsIDIzNSwgMTQxLCAxODMsIDEsIAorICAgIDIzNSwgMTE0LCAxODMsIDEsIDIyNywgMTY1LCAxODMsIDEsIDIxNSwgMTU2LCAxODMsIDEsIDIxNSwgMTQ0LCAxODMsIDEsIAorICAgIDI0OCwgMTM1LCAxODMsIDEsIDI0OCwgMTE5LCAxODMsIDEsIDIyOCwgMTEwLCAxODMsIDEsIDIxNywgMTA1LCAxODMsIDEsIAorICAgIDIxNiwgMjA4LCAxODMsIDEsIDI0OCwgMjIxLCAxODMsIDEsIDI0OCwgMjUsIDE4MywgMSwgMTk3LCAxODMsIDEsIDE5MCwgCisgICAgMTgzLCAxLCAyMjUsIDE0NywgMTgzLCAxLCAyNTIsIDE5MSwgMTgzLCAxLCAyNTIsIDE4LCAxODMsIDEsIDE4NCwgMTgzLCAxLCAKKyAgICAxOTEsIDE4MywgMSwgMjA1LCAxODMsIDEsIDIzMywgMTM1LCAxODMsIDEsIDIzMiwgMTg0LCAxODMsIDEsIDIxNCwgMjcsIAorICAgIDE4MywgMSwgMjIwLCAxMDIsIDE4MywgMSwgMjA2LCAxODMsIDEsIDE2MiwgMTgzLCA1LCAyMjcsIDIwNSwgMTgzLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTgzLCAyNSwgNSwgNzMsIDE4MywgMjUsIDUsIDIzNiwgMzMsIDE4MywgMjUsIDUsIDcwLCAxODMsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTgzLCAyNSwgNSwgMjQ1LCAyMDksIDE4MywgMjUsIDUsIDI1NCwgMjAxLCAxODMsIDI1LCA1LCAyMjYsIAorICAgIDE4MywgMTgzLCAyNSwgNSwgMjUzLCAxOTIsIDE4MywgNSwgMjEzLCAxNTIsIDE4MywgNSwgMjE0LCAyMTgsIDE4MywgMSwgCisgICAgMjM0LCAxMTUsIDE4MywgMSwgMjQyLCAyMjYsIDE4MywgMSwgMjEwLCAxMTYsIDE4MywgMSwgMjIyLCAxNzksIDE4MywgMSwgCisgICAgMjQ0LCAxOTYsIDE4MywgMjEsIDIxMCwgODYsIDE4MywgMjEsIDExMCwgMTgzLCAyMSwgMTA1LCAxODMsIDIxLCAxNTgsIAorICAgIDE4MywgMjEsIDE2MSwgMTgzLCAyMSwgMTg5LCAxODMsIDIxLCAxOTQsIDE4MywgMjEsIDE5OCwgMTgzLCAyMSwgMTk1LCAKKyAgICAxODMsIDIxLCAyMDAsIDE4MywgMjE2LCA3NCwgMTgzLCAyNTQsIDI1MywgMTgzLCAyMzUsIDE3OCwgMTgzLCAyMTQsIDE0NiwgCisgICAgMTgzLCAyNDUsIDE4MSwgMjI2LCAxODgsIDE4MywgNSwgMjExLCA3OCwgMTcxLCA1LCAyNTAsIDI1NSwgMTcxLCA1LCAyNTQsIAorICAgIDc1LCAxNzEsIDUsIDIxMywgMTQ3LCAxNzEsIDEsIDYxLCAxNzEsIDEsIDI1NSwgNzMsIDE3MSwgMSwgNzMsIDE3MSwgMSwgCisgICAgMjM2LCAzMywgMTcxLCAxLCA3MCwgMTcxLCAxLCAyMTQsIDExOCwgMTcxLCAxLCAxNDksIDE1MywgMTcxLCAxLCAxNDksIAorICAgIDE1NiwgMTcxLCAyNSwgMjUxLCAyLCA3NSwgMTcxLCAxLCA3NSwgMTcxLCAxLCAyNTQsIDIwMSwgMTcxLCAyNSwgMjUxLCAyLCAKKyAgICA3NiwgMTcxLCAxLCA3NiwgMTcxLCAxLCAyNTMsIDE5MiwgMTcxLCAxLCAxNzYsIDE3MSwgMSwgMjM0LCAxMzIsIDE3MSwgMSwgCisgICAgMjQzLCAxMzUsIDE3MSwgMSwgMjQyLCAyNDksIDE3MSwgMSwgMjI5LCA3NywgMTcxLCAxLCAyNTEsIDMzLCAxNzEsIDEsIAorICAgIDI1MCwgMTU3LCAxNzEsIDEsIDIzNSwgMTQxLCAxNzEsIDEsIDIzNSwgMTE0LCAxNzEsIDEsIDIyNywgMTY1LCAxNzEsIDEsIAorICAgIDIxNSwgMTU2LCAxNzEsIDEsIDIxNSwgMTQ0LCAxNzEsIDEsIDI0OCwgMTM1LCAxNzEsIDEsIDI0OCwgMTE5LCAxNzEsIDEsIAorICAgIDIyOCwgMTEwLCAxNzEsIDEsIDIxNywgMTA1LCAxNzEsIDEsIDIxNiwgMjA4LCAxNzEsIDEsIDI0OCwgMjIxLCAxNzEsIDEsIAorICAgIDI0OCwgMjUsIDE3MSwgMSwgMTk3LCAxNzEsIDEsIDE5MCwgMTcxLCAxLCAyMjUsIDE0NywgMTcxLCAxLCAyNTIsIDE5MSwgCisgICAgMTcxLCAxLCAyNTIsIDE4LCAxNzEsIDEsIDE4NCwgMTcxLCAxLCAxOTEsIDE3MSwgMSwgMjA1LCAxNzEsIDEsIDIzMywgMTM1LCAKKyAgICAxNzEsIDEsIDIzMiwgMTg0LCAxNzEsIDEsIDIxNCwgMjcsIDE3MSwgMSwgMjIwLCAxMDIsIDE3MSwgMSwgMjE4LCAyMjMsIAorICAgIDE3MSwgMSwgMjA2LCAxNzEsIDEsIDE2MiwgMTcxLCA1LCAyMjcsIDIwNSwgMTcxLCA1LCAyNTMsIDE3NSwgMTcxLCAyNSwgNSwgCisgICAgMjU1LCA3MywgMTcxLCAyNSwgNSwgNzMsIDE3MSwgMjUsIDUsIDIzNiwgMzMsIDE3MSwgMjUsIDUsIDcwLCAxNzEsIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgMTcxLCAyNSwgNSwgMTQ5LCAxNTMsIDE3MSwgMjUsIDUsIDE0OSwgMjIyLCAxODAsIDE3MSwgMjUsIDUsIAorICAgIDI1MSwgMiwgNzUsIDE3MSwgMjUsIDUsIDc1LCAxNzEsIDI1LCA1LCAyNTQsIDIwMSwgMTcxLCAyNSwgNSwgMjUxLCAyLCA3NiwgCisgICAgMTcxLCAyNSwgNSwgNzYsIDE3MSwgMjUsIDUsIDI1MywgMTkyLCAxNzEsIDUsIDIxMywgMTUyLCAxNzEsIDIyNiwgMjA0LCAKKyAgICAxNzEsIDEsIDE0OSwgMjIyLCAxODAsIDE3MSwgMSwgMTQ5LCAyMzIsIDE4NSwgMTcxLCAyNSwgNSwgMTQ5LCAxNTYsIDE3MSwgCisgICAgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3MSwgMjEsIDIxMCwgODYsIDE3MSwgMjEsIDExMCwgMTcxLCAyMSwgMTA1LCAxNzEsIAorICAgIDIxLCAxNTgsIDE3MSwgMjEsIDE2MSwgMTcxLCAyMSwgMTg5LCAxNzEsIDIxLCAxOTQsIDE3MSwgMjEsIDE5OCwgMTcxLCAyMSwgCisgICAgMTk1LCAxNzEsIDIxLCAyMDAsIDE3MSwgMjU1LCAyMSwgNTAsIDE3MSwgMjIyLCAxMTgsIDUwLCAxNTcsIDUsIDI1MCwgMjU1LCAKKyAgICAxNTcsIDUsIDI1NCwgNzUsIDE1NywgNSwgMjEzLCAxNDcsIDE1NywgMSwgNjEsIDE1NywgMSwgMjU1LCA3MywgMTU3LCAxLCAKKyAgICA3MywgMTU3LCAxLCAyMzYsIDMzLCAxNTcsIDEsIDcwLCAxNTcsIDEsIDIxNCwgMTE4LCAxNTcsIDEsIDE0OSwgMTUzLCAxNTcsIAorICAgIDEsIDE0OSwgMTU2LCAxNTcsIDEsIDc1LCAxNTcsIDEsIDI1NCwgMjAxLCAxNTcsIDEsIDc2LCAxNTcsIDEsIDI1MywgMTkyLCAKKyAgICAxNTcsIDEsIDE3NiwgMTU3LCAxLCAyMzQsIDEzMiwgMTU3LCAxLCAyNDMsIDEzNSwgMTU3LCAxLCAyNDIsIDI0OSwgMTU3LCAKKyAgICAxLCAyMjksIDc3LCAxNTcsIDEsIDI1MSwgMzMsIDE1NywgMSwgMjUwLCAxNTcsIDE1NywgMSwgMjM1LCAxNDEsIDE1NywgMSwgCisgICAgMjM1LCAxMTQsIDE1NywgMSwgMjI3LCAxNjUsIDE1NywgMSwgMjE1LCAxNTYsIDE1NywgMSwgMjE1LCAxNDQsIDE1NywgMSwgCisgICAgMjQ4LCAxMzUsIDE1NywgMSwgMjQ4LCAxMTksIDE1NywgMSwgMjI4LCAxMTAsIDE1NywgMSwgMjE3LCAxMDUsIDE1NywgMSwgCisgICAgMjE2LCAyMDgsIDE1NywgMSwgMjQ4LCAyMjEsIDE1NywgMSwgMjQ4LCAyNSwgMTU3LCAxLCAxOTcsIDE1NywgMSwgMTkwLCAKKyAgICAxNTcsIDEsIDIyNSwgMTQ3LCAxNTcsIDEsIDI1MiwgMTkxLCAxNTcsIDEsIDI1MiwgMTgsIDE1NywgMSwgMTg0LCAxNTcsIDEsIAorICAgIDE5MSwgMTU3LCAxLCAyMDUsIDE1NywgMSwgMjMzLCAxMzUsIDE1NywgMSwgMjMyLCAxODQsIDE1NywgMSwgMjE0LCAyNywgCisgICAgMTU3LCAxLCAyMjAsIDEwMiwgMTU3LCAxLCAyMTgsIDIyMywgMTU3LCAxLCAyMDYsIDE1NywgMSwgMTYyLCAxNTcsIDUsIAorICAgIDIyNywgMjA1LCAxNTcsIDUsIDI1MywgMTc1LCAxNTcsIDI1LCA1LCAyNTUsIDczLCAxNTcsIDI1LCA1LCA3MywgMTU3LCAyNSwgCisgICAgNSwgMjM2LCAzMywgMTU3LCAyNSwgNSwgNzAsIDE1NywgMjUsIDUsIDIxNCwgMTE4LCAxNTcsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTU3LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTU3LCAyNSwgNSwgNzUsIDE1NywgMjUsIDUsIDI1NCwgMjAxLCAxNTcsIDI1LCAKKyAgICA1LCA3NiwgMTU3LCAyNSwgNSwgMjUzLCAxOTIsIDE1NywgNSwgMjEzLCAxNTIsIDE1NywgMjU0LCAyMDIsIDIzMywgMjMsIAorICAgIDc4LCAxNTcsIDI1MywgMTkzLCAyMzMsIDIzLCA3OCwgMTU3LCAxLCAyMjIsIDE3OSwgMTU3LCAxLCAyMjMsIDM5LCAxNTcsIAorICAgIDEsIDIxMCwgMTY4LCAxNTcsIDEsIDE0OSwgMjIyLCAxODAsIDE1NywgMSwgMTQ5LCAyMzIsIDE4NSwgMTU3LCAyNSwgNSwgCisgICAgMTQ5LCAxNTYsIDE1NywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE1NywgMjEsIDIxMCwgODYsIDE1NywgMjEsIDExMCwgMTU3LCAKKyAgICAyMSwgMTA1LCAxNTcsIDIxLCAxNTgsIDE1NywgMjEsIDE2MSwgMTU3LCAyMSwgMTg5LCAxNTcsIDIxLCAxOTQsIDE1NywgMjEsIAorICAgIDE5OCwgMTU3LCAyMSwgMTk1LCAxNTcsIDIxLCAyMDAsIDE1NywgMjM1LCAxNjEsIDE1NywgMSwgMjEyLCA2NSwgMTU3LCAKKyAgICAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMTU3LCAyNDQsIDIsIDEyMywgMjQyLCAyNywgMTU3LCAyNDQsIDIsIDEzNCwgMjI0LCAKKyAgICAxOSwgMTU3LCAyNDQsIDIsIDEyMywgMjE5LCAxMTcsIDE1NywgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAxNTcsIDI0NCwgMiwgCisgICAgMTM0LCAyMTksIDExNiwgMzYsIDUsIDI1NCwgNzUsIDM2LCA1LCAyMTMsIDE0NywgMzYsIDEsIDYxLCAzNiwgMSwgMjU1LCAKKyAgICA3MywgMzYsIDEsIDczLCAzNiwgMSwgMjM2LCAzMywgMzYsIDEsIDcwLCAzNiwgMSwgMjE0LCAxMTgsIDM2LCAxLCA3NSwgMzYsIAorICAgIDEsIDI0NSwgMjA5LCAzNiwgMSwgMjU0LCAyMDEsIDM2LCAxLCA3NiwgMzYsIDEsIDIyNiwgMTgzLCAzNiwgMSwgMjUzLCAKKyAgICAxOTIsIDM2LCAxLCAxNzYsIDM2LCAxLCAyMjksIDc3LCAzNiwgMSwgMjUxLCAzMywgMzYsIDEsIDIzNSwgMTQxLCAzNiwgMSwgCisgICAgMjI3LCAxNjUsIDM2LCAxLCAyMTUsIDE1NiwgMzYsIDEsIDIyOCwgMTEwLCAzNiwgMSwgMjE3LCAxMDUsIDM2LCAxLCAxOTcsIAorICAgIDM2LCAxLCAyMjgsIDkyLCAzNiwgMSwgMTkwLCAzNiwgMSwgMTg0LCAzNiwgMSwgMTkxLCAzNiwgMSwgMjA1LCAzNiwgMSwgCisgICAgMjIyLCAxNzksIDM2LCAxLCAyMzMsIDEzNSwgMzYsIDEsIDIzMiwgMTg0LCAzNiwgMSwgMjMyLCAxNzUsIDM2LCAxLCAyMTQsIAorICAgIDI3LCAzNiwgMSwgMjIwLCAxMDIsIDM2LCAxLCAyMTgsIDIyMywgMzYsIDEsIDIwNiwgMzYsIDEsIDE2MiwgMzYsIDI1LCA1LCAKKyAgICAyNTUsIDczLCAzNiwgMjUsIDUsIDczLCAzNiwgMjUsIDUsIDIzNiwgMzMsIDM2LCAyNSwgNSwgNzAsIDM2LCAyNSwgNSwgCisgICAgMjE0LCAxMTgsIDM2LCAyNSwgNSwgNzUsIDM2LCAyNSwgNSwgMjQ1LCAyMDksIDM2LCAyNSwgNSwgMjU0LCAyMDEsIDM2LCAKKyAgICAyNSwgNSwgNzYsIDM2LCAyNSwgNSwgMjI2LCAxODMsIDM2LCAyNSwgNSwgMjUzLCAxOTIsIDM2LCA1LCAyMTMsIDE1MiwgMzYsIAorICAgIDIyNiwgMjA0LCAzNiwgMjUzLCAxOTMsIDIzMywgMjMsIDc4LCAzNiwgMjEsIDIxMCwgODYsIDM2LCAyMSwgMTEwLCAzNiwgCisgICAgMjEsIDEwNSwgMzYsIDIxLCAxNTgsIDM2LCAyMSwgMTYxLCAzNiwgMjEsIDE4OSwgMzYsIDIxLCAxOTQsIDM2LCAyMSwgMTk4LCAKKyAgICAzNiwgMjEsIDE5NSwgMzYsIDIxLCAyMDAsIDM2LCA1NCwgMjE2LCAyNDcsIDM2LCA1NCwgMTIzLCAyNDAsIDIxMCwgMzYsIAorICAgIDU0LCAxMjMsIDIxNiwgMTQ3LCAzNiwgMjQ4LCAxNDYsIDUwLCAzNiwgMjMwLCAxMzUsIDUwLCAzNiwgMjExLCA0NSwgNTAsIAorICAgIDM2LCAyNDgsIDg3LCA1MCwgMzYsIDI0OSwgMTM5LCA1MCwgMzYsIDI1MywgMjM4LCA3NywgNTAsIDM2LCAyMjIsIDExOCwgCisgICAgNTAsIDM2LCA1NCwgNTAsIDE0OCwgNSwgMjUwLCAyNTUsIDE0OCwgNSwgMjU0LCA3NSwgMTQ4LCA1LCAyMTMsIDE0NywgMTQ4LCAKKyAgICAxLCA2MSwgMTQ4LCAxLCAyNTUsIDczLCAxNDgsIDEsIDczLCAxNDgsIDEsIDIzNiwgMzMsIDE0OCwgMSwgNzAsIDE0OCwgMSwgCisgICAgMjE0LCAxMTgsIDE0OCwgMSwgMTQ5LCAxNTMsIDE0OCwgMSwgMTQ5LCAxNTYsIDE0OCwgMSwgNzUsIDE0OCwgMSwgMjQ1LCAKKyAgICAyMDksIDE0OCwgMSwgMjU0LCAyMDEsIDE0OCwgMSwgNzYsIDE0OCwgMSwgMjI2LCAxODMsIDE0OCwgMSwgMjUzLCAxOTIsIAorICAgIDE0OCwgMSwgMTc2LCAxNDgsIDEsIDIzNCwgMTMyLCAxNDgsIDEsIDI0MywgMTM1LCAxNDgsIDEsIDI0MiwgMjQ5LCAxNDgsIAorICAgIDEsIDIyOSwgNzcsIDE0OCwgMSwgMjUxLCAzMywgMTQ4LCAxLCAyNTAsIDE1NywgMTQ4LCAxLCAyMzUsIDE0MSwgMTQ4LCAxLCAKKyAgICAyMzUsIDExNCwgMTQ4LCAxLCAyMjcsIDE2NSwgMTQ4LCAxLCAyMTUsIDE1NiwgMTQ4LCAxLCAyMTUsIDE0NCwgMTQ4LCAxLCAKKyAgICAyNDgsIDEzNSwgMTQ4LCAxLCAyNDgsIDExOSwgMTQ4LCAxLCAyMjgsIDExMCwgMTQ4LCAxLCAyMTcsIDEwNSwgMTQ4LCAxLCAKKyAgICAyMTYsIDIwOCwgMTQ4LCAxLCAyNDgsIDIyMSwgMTQ4LCAxLCAyNDgsIDI1LCAxNDgsIDEsIDE5NywgMTQ4LCAxLCAxOTAsIAorICAgIDE0OCwgMSwgMjI1LCAxNDcsIDE0OCwgMSwgMjUyLCAxOTEsIDE0OCwgMSwgMjUyLCAxOCwgMTQ4LCAxLCAxODQsIDE0OCwgMSwgCisgICAgMTkxLCAxNDgsIDEsIDIwNSwgMTQ4LCAxLCAyMjIsIDE3OSwgMTQ4LCAxLCAyMzMsIDEzNSwgMTQ4LCAxLCAyMzIsIDE4NCwgCisgICAgMTQ4LCAxLCAyMTQsIDI3LCAxNDgsIDEsIDIyMCwgMTAyLCAxNDgsIDEsIDIxOCwgMjIzLCAxNDgsIDEsIDIwNiwgMTQ4LCAxLCAKKyAgICAxNjIsIDE0OCwgNSwgMjUzLCAxNzUsIDE0OCwgMjUsIDUsIDI1NSwgNzMsIDE0OCwgMjUsIDUsIDczLCAxNDgsIDI1LCA1LCAKKyAgICAyMzYsIDMzLCAxNDgsIDI1LCA1LCA3MCwgMTQ4LCAyNSwgNSwgMjE0LCAxMTgsIDE0OCwgMjUsIDUsIDE0OSwgMTUzLCAxNDgsIAorICAgIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAxNDgsIDI1LCA1LCA3NSwgMTQ4LCAyNSwgNSwgMjQ1LCAyMDksIDE0OCwgMjUsIDUsIAorICAgIDI1NCwgMjAxLCAxNDgsIDI1LCA1LCA3NiwgMTQ4LCAyNSwgNSwgMjI2LCAxODMsIDE0OCwgMjUsIDUsIDI1MywgMTkyLCAKKyAgICAxNDgsIDUsIDIxMywgMTUyLCAxNDgsIDIzMywgMjMsIDc4LCAxNDgsIDI1NCwgMjAyLCAyMzMsIDIzLCA3OCwgMTQ4LCAxLCAKKyAgICAyMTUsIDE4MywgMTQ4LCAxLCAyNDYsIDM4LCAxNDgsIDEsIDE0OSwgMjIyLCAxODAsIDE0OCwgMSwgMTQ5LCAyMzIsIDE4NSwgCisgICAgMTQ4LCAyNSwgNSwgMTQ5LCAxNTYsIDE0OCwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE0OCwgMjEsIDIxMCwgODYsIDE0OCwgCisgICAgMjEsIDExMCwgMTQ4LCAyMSwgMTA1LCAxNDgsIDIxLCAxNTgsIDE0OCwgMjEsIDE2MSwgMTQ4LCAyMSwgMTg5LCAxNDgsIDIxLCAKKyAgICAxOTQsIDE0OCwgMjEsIDE5OCwgMTQ4LCAyMSwgMTk1LCAxNDgsIDIxLCAyMDAsIDE0OCwgMjQ0LCAyLCAyMSwgMjEwLCA4NywgCisgICAgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMjMsIDMxLCAyMjYsIDIzNywgMjI0LCAKKyAgICAyMjMsIDY0LCAxNjEsIDE0OCwgMjQ0LCAyLCAyMSwgMTEzLCAzMSwgMjI2LCAyMzcsIDIyNCwgMjIzLCA2NCwgMTYxLCAxNDgsIAorICAgIDI0NCwgMiwgMjEsIDEzNCwgMzEsIDIyNiwgMjM3LCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMjMsIAorICAgIDMxLCAyNDUsIDQyLCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMTMsIDMxLCAyNDUsIDQyLCAyMjQsIAorICAgIDIyMywgNjQsIDE2MSwgMTQ4LCAyNDQsIDIsIDIxLCAxMzQsIDMxLCAyNDUsIDQyLCAyMjQsIDIyMywgNjQsIDE2MSwgMTQ4LCAKKyAgICA1LCAyMTUsIDg0LCAxNjUsIDUsIDI1NCwgNzUsIDE2NSwgNSwgMjEzLCAxNDcsIDE2NSwgMSwgNjEsIDE2NSwgMSwgMjU1LCAKKyAgICA3MywgMTY1LCAxLCA3MywgMTY1LCAxLCAyMzYsIDMzLCAxNjUsIDEsIDcwLCAxNjUsIDEsIDIxNCwgMTE4LCAxNjUsIDEsIAorICAgIDE0OSwgMTUzLCAxNjUsIDEsIDE0OSwgMTU2LCAxNjUsIDEsIDc1LCAxNjUsIDEsIDI0NSwgMjA5LCAxNjUsIDEsIDI1NCwgCisgICAgMjAxLCAxNjUsIDEsIDc2LCAxNjUsIDEsIDIyNiwgMTgzLCAxNjUsIDEsIDI1MywgMTkyLCAxNjUsIDEsIDE3NiwgMTY1LCAxLCAKKyAgICAyMzQsIDEzMiwgMTY1LCAxLCAyNDMsIDEzNSwgMTY1LCAxLCAyNDIsIDI0OSwgMTY1LCAxLCAyMjksIDc3LCAxNjUsIDEsIAorICAgIDI1MSwgMzMsIDE2NSwgMSwgMjUwLCAxNTcsIDE2NSwgMSwgMjM1LCAxNDEsIDE2NSwgMSwgMjM1LCAxMTQsIDE2NSwgMSwgCisgICAgMjI3LCAxNjUsIDE2NSwgMSwgMjE1LCAxNTYsIDE2NSwgMSwgMjE1LCAxNDQsIDE2NSwgMSwgMjQ4LCAxMzUsIDE2NSwgMSwgCisgICAgMjQ4LCAxMTksIDE2NSwgMSwgMjI4LCAxMTAsIDE2NSwgMSwgMjE3LCAxMDUsIDE2NSwgMSwgMjE2LCAyMDgsIDE2NSwgMSwgCisgICAgMjQ4LCAyMjEsIDE2NSwgMSwgMjQ4LCAyNSwgMTY1LCAxLCAxOTcsIDE2NSwgMSwgMTkwLCAxNjUsIDEsIDIyNSwgMTQ3LCAKKyAgICAxNjUsIDEsIDI1MiwgMTkxLCAxNjUsIDEsIDI1MiwgMTgsIDE2NSwgMSwgMTg0LCAxNjUsIDEsIDE5MSwgMTY1LCAxLCAyMDUsIAorICAgIDE2NSwgMSwgMjIyLCAxNzksIDE2NSwgMSwgMjMzLCAxMzUsIDE2NSwgMSwgMjMyLCAxODQsIDE2NSwgMSwgMjE0LCAyNywgCisgICAgMTY1LCAxLCAyMjAsIDEwMiwgMTY1LCAxLCAyMTgsIDIyMywgMTY1LCAxLCAyMDYsIDE2NSwgMSwgMTYyLCAxNjUsIDUsIAorICAgIDIyNywgMjA1LCAxNjUsIDUsIDI1MywgMTc1LCAxNjUsIDI1LCA1LCAyNTUsIDczLCAxNjUsIDI1LCA1LCA3MywgMTY1LCAyNSwgCisgICAgNSwgMjM2LCAzMywgMTY1LCAyNSwgNSwgNzAsIDE2NSwgMjUsIDUsIDIxNCwgMTE4LCAxNjUsIDI1LCA1LCAxNDksIDE1MywgCisgICAgMTY1LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTY1LCAyNSwgNSwgNzUsIDE2NSwgMjUsIDUsIDI0NSwgMjA5LCAxNjUsIDI1LCAKKyAgICA1LCAyNTQsIDIwMSwgMTY1LCAyNSwgNSwgNzYsIDE2NSwgMjUsIDUsIDIyNiwgMTgzLCAxNjUsIDI1LCA1LCAyNTMsIDE5MiwgCisgICAgMTY1LCA1LCAyMTMsIDE1MiwgMTY1LCAyMzMsIDIzLCA3OCwgMTY1LCAyNTQsIDIwMiwgMjMzLCAyMywgNzgsIDE2NSwgMSwgCisgICAgMjQ0LCAxOTYsIDE2NSwgMSwgMTQ5LCAyMjIsIDE4MCwgMTY1LCAxLCAxNDksIDIzMiwgMTg1LCAxNjUsIDI1LCA1LCAxNDksIAorICAgIDE1NiwgMTY1LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTY1LCAyMSwgMjEwLCA4NiwgMTY1LCAyMSwgMTEwLCAxNjUsIDIxLCAKKyAgICAxMDUsIDE2NSwgMjEsIDE1OCwgMTY1LCAyMSwgMTYxLCAxNjUsIDIxLCAxODksIDE2NSwgMjEsIDE5NCwgMTY1LCAyMSwgCisgICAgMTk4LCAxNjUsIDIxLCAxOTUsIDE2NSwgMjEsIDIwMCwgMTY1LCA1LCAyMzUsIDEwMiwgMTY1LCA1LCAyMTQsIDE2MSwgMTM2LCAKKyAgICA1LCAyNTQsIDc1LCAxMzYsIDUsIDIxMywgMTQ3LCAxMzYsIDEsIDYxLCAxMzYsIDEsIDI1NSwgNzMsIDEzNiwgMSwgNzMsIAorICAgIDEzNiwgMSwgMjM2LCAzMywgMTM2LCAxLCA3MCwgMTM2LCAxLCAyMTQsIDExOCwgMTM2LCAxLCAxNDksIDE1MywgMTM2LCAxLCAKKyAgICAxNDksIDE1NiwgMTM2LCAxLCA3NSwgMTM2LCAxLCAyNDUsIDIwOSwgMTM2LCAxLCAyNTQsIDIwMSwgMTM2LCAxLCA3NiwgCisgICAgMTM2LCAxLCAyMjYsIDE4MywgMTM2LCAxLCAyNTMsIDE5MiwgMTM2LCAxLCAxNzYsIDEzNiwgMSwgMjM0LCAxMzIsIDEzNiwgCisgICAgMSwgMjQzLCAxMzUsIDEzNiwgMSwgMjQyLCAyNDksIDEzNiwgMSwgMjI5LCA3NywgMTM2LCAxLCAyNTEsIDMzLCAxMzYsIDEsIAorICAgIDI1MCwgMTU3LCAxMzYsIDEsIDIzNSwgMTQxLCAxMzYsIDEsIDIzNSwgMTE0LCAxMzYsIDEsIDIyNywgMTY1LCAxMzYsIDEsIAorICAgIDIxNSwgMTU2LCAxMzYsIDEsIDIxNSwgMTQ0LCAxMzYsIDEsIDI0OCwgMTM1LCAxMzYsIDEsIDI0OCwgMTE5LCAxMzYsIDEsIAorICAgIDIyOCwgMTEwLCAxMzYsIDEsIDIxNywgMTA1LCAxMzYsIDEsIDIxNiwgMjA4LCAxMzYsIDEsIDI0OCwgMjIxLCAxMzYsIDEsIAorICAgIDI0OCwgMjUsIDEzNiwgMSwgMTk3LCAxMzYsIDEsIDIyOCwgOTIsIDEzNiwgMSwgMTkwLCAxMzYsIDEsIDIyNSwgMTQ3LCAKKyAgICAxMzYsIDEsIDI1MiwgMTkxLCAxMzYsIDEsIDI1MiwgMTgsIDEzNiwgMSwgMTg0LCAxMzYsIDEsIDE5MSwgMTM2LCAxLCAyMDUsIAorICAgIDEzNiwgMSwgMjIyLCAxNzksIDEzNiwgMSwgMjMzLCAxMzUsIDEzNiwgMSwgMjMyLCAxODQsIDEzNiwgMSwgMjMyLCAxNzUsIAorICAgIDEzNiwgMSwgMjE0LCAyNywgMTM2LCAxLCAyMjAsIDEwMiwgMTM2LCAxLCAyMTgsIDIyMywgMTM2LCAxLCAyMDYsIDEzNiwgMSwgCisgICAgMTYyLCAxMzYsIDEsIDIxNSwgMTI1LCAxMzYsIDUsIDI1MywgMTc1LCAxMzYsIDI1LCA1LCAyNTUsIDczLCAxMzYsIDI1LCA1LCAKKyAgICA3MywgMTM2LCAyNSwgNSwgMjM2LCAzMywgMTM2LCAyNSwgNSwgNzAsIDEzNiwgMjUsIDUsIDIxNCwgMTE4LCAxMzYsIDI1LCAKKyAgICA1LCAxNDksIDE1MywgMTM2LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgMTM2LCAyNSwgNSwgNzUsIDEzNiwgMjUsIDUsIDI0NSwgCisgICAgMjA5LCAxMzYsIDI1LCA1LCAyNTQsIDIwMSwgMTM2LCAyNSwgNSwgNzYsIDEzNiwgMjUsIDUsIDIyNiwgMTgzLCAxMzYsIDI1LCAKKyAgICA1LCAyNTMsIDE5MiwgMTM2LCA1LCAyMTMsIDE1MiwgMTM2LCAxLCA1OSwgMjIzLCA3MywgMTM2LCAyNTMsIDE5MywgMjMzLCAKKyAgICAyMywgNzgsIDEzNiwgMSwgMTQ5LCAyMjIsIDE4MCwgMTM2LCAxLCAxNDksIDIzMiwgMTg1LCAxMzYsIDI1LCA1LCAxNDksIAorICAgIDE1NiwgMTM2LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTM2LCAyMSwgMjEwLCA4NiwgMTM2LCAyMSwgMTEwLCAxMzYsIDIxLCAKKyAgICAxMDUsIDEzNiwgMjEsIDE1OCwgMTM2LCAyMSwgMTYxLCAxMzYsIDIxLCAxODksIDEzNiwgMjEsIDE5NCwgMTM2LCAyMSwgCisgICAgMTk4LCAxMzYsIDIxLCAxOTUsIDEzNiwgMjEsIDIwMCwgMTM2LCA1NCwgMjE2LCAyNDcsIDEzNiwgNTQsIDEyMywgMjQwLCAKKyAgICAyMTAsIDEzNiwgNTQsIDEyMywgMjE2LCAxNDcsIDEzNiwgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDEzNiwgMjQ0LCAyLCAxMjMsIAorICAgIDI0MiwgMjcsIDEzNiwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDEzNiwgMjQ4LCAxNTAsIDc4LCAxMzYsIDEsIDI1MCwgOTksIAorICAgIDIyOCwgMTExLCAxMzYsIDEsIDI1MCwgOTksIDIzMCwgMjUsIDEzNiwgMSwgMjUwLCA5OSwgMjIyLCAxODAsIDEzNiwgMSwgCisgICAgMjUwLCA5OSwgMTU2LCAxMzYsIDEsIDI1MCwgOTksIDIzMiwgMTg1LCAxMzYsIDEsIDI1MCwgOTksIDIzNSwgMjMsIDE3NSwgCisgICAgNSwgMjU0LCA3NCwgMTc1LCA1LCAyMTMsIDE0NiwgMTc1LCAxLCAyNTMsIDE2NSwgMTc1LCAxLCAyNTUsIDI3LCAxNzUsIDEsIAorICAgIDI1NCwgMjIzLCAxNzUsIDEsIDI1NCwgMjM4LCAxNzUsIDEsIDIzNSwgMTUxLCAxNzUsIDEsIDIzNiwgMzIsIDE3NSwgMSwgCisgICAgMjE0LCAxMTAsIDE3NSwgMSwgMjE0LCAxMTIsIDE3NSwgMSwgMjM1LCAxNzMsIDE3NSwgMSwgMjM1LCAxNzQsIDE3NSwgMSwgCisgICAgMjM2LCAxOCwgMTc1LCAxLCAyMzYsIDIwLCAxNzUsIDEsIDI0NSwgMTcsIDE3NSwgMSwgMjQ1LCAyMDQsIDE3NSwgMSwgMjU0LCAKKyAgICAxODgsIDE3NSwgMSwgMjI2LCAxMDgsIDE3NSwgMSwgMjI2LCAxNzcsIDE3NSwgMSwgMjUzLCAxNzgsIDE3NSwgMSwgMjU0LCAKKyAgICAxNDYsIDIzNCwgMTg3LCAxNzUsIDEsIDIzMSwgMjA5LCAyMzQsIDE4NywgMTc1LCAxLCAyNTQsIDE0NiwgMjQzLCA4MiwgCisgICAgMTc1LCAxLCAyMzEsIDIwOSwgMjQzLCA4MiwgMTc1LCAxLCAyMzQsIDIyOSwgMjI5LCAyMjIsIDE3NSwgMSwgMjIxLCAyMzYsIAorICAgIDI0MywgODIsIDE3NSwgMSwgMjU0LCAxNDYsIDI1MCwgMjE2LCAxNzUsIDEsIDIzMSwgMjA5LCAyNTAsIDIxNiwgMTc1LCAxLCAKKyAgICAyNTQsIDE0NiwgMjM1LCAxMjcsIDE3NSwgMSwgMjMxLCAyMDksIDIzNSwgMTI3LCAxNzUsIDEsIDIxNywgOTgsIDIyOSwgCisgICAgMjIyLCAxNzUsIDEsIDIxNywgOTgsIDIyMSwgMjM1LCAyMjksIDIyMywgMTc1LCAxLCAyMjEsIDIzNiwgMjM1LCAxMjcsIAorICAgIDE3NSwgMSwgMjU0LCAxNDYsIDIxNSwgMTUyLCAxNzUsIDEsIDIzMSwgMjA5LCAyMTUsIDE1MiwgMTc1LCAxLCAyNTQsIDE0NiwgCisgICAgMjQ4LCAxMjYsIDE3NSwgMSwgMjMxLCAyMDksIDI0OCwgMTI2LCAxNzUsIDEsIDIzMCwgNTMsIDIyOSwgMTgwLCAxNzUsIDEsIAorICAgIDIyMSwgMjM2LCAyNDgsIDEyNiwgMTc1LCAxLCAyNTQsIDE0NiwgMjE3LCAzMCwgMTc1LCAxLCAyMzEsIDIwOSwgMjE3LCAzMCwgCisgICAgMTc1LCAxLCAyNTQsIDE0NiwgMjQ4LCAxNDQsIDE3NSwgMSwgMjMxLCAyMDksIDI0OCwgMTQ0LCAxNzUsIDEsIDI0OCwgMTc0LCAKKyAgICAyMjksIDE4MCwgMTc1LCAxLCAyMjEsIDIzNiwgMjQ4LCAxNDQsIDE3NSwgMSwgMjU0LCAxNDYsIDIyNSwgMjI4LCAxNzUsIDEsIAorICAgIDIzMSwgMjA5LCAyMjUsIDIyOCwgMTc1LCAxLCAyNTQsIDE0NiwgMjUyLCAxMTIsIDE3NSwgMSwgMjMxLCAyMDksIDI1MiwgCisgICAgMTEyLCAxNzUsIDEsIDIzMSwgMTMxLCAxNzUsIDEsIDI1NCwgMTMxLCAyNTIsIDExMiwgMTc1LCAxLCAyMTEsIDUxLCAxNzUsIAorICAgIDEsIDIyMywgMTMzLCAxNzUsIDEsIDI0OCwgMTc0LCAyMzMsIDY3LCAxNzUsIDEsIDIxNCwgMSwgMTc1LCAxLCAyMTcsIDk4LCAKKyAgICAyMjEsIDIxMCwgMTc1LCAxLCAyMzAsIDUzLCAyMjEsIDIxMCwgMTc1LCAxLCAyNDgsIDE3NCwgMjIxLCAyMTAsIDE3NSwgMSwgCisgICAgMjQxLCAyNDIsIDE3NSwgMSwgMjMwLCA1MywgMjMzLCA2NywgMTc1LCAxLCAyNDQsIDE1NiwgMTc1LCA1LCAyNTQsIDE3NywgCisgICAgMTc1LCAyNSwgNSwgMjU0LCAyMzMsIDE3NSwgMjUsIDUsIDIzNCwgMTU1LCAyNTQsIDI0MCwgMTc1LCAyNSwgNSwgMjQ3LCAKKyAgICAyMjgsIDI1NCwgMjQwLCAxNzUsIDI1LCA1LCAyMzQsIDE1NSwgMjM1LCAxNzAsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMzUsIAorICAgIDE3MCwgMTc1LCAyNSwgNSwgMjM0LCAxNTUsIDIyNiwgODgsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyMjYsIDg4LCAxNzUsIAorICAgIDI1LCA1LCAyNDMsIDEyNCwgMTc1LCAyNSwgNSwgMjM0LCAxNSwgMTc1LCAyNSwgNSwgMjQ3LCAyMjgsIDIzNCwgMTUsIDE3NSwgCisgICAgMjUsIDUsIDIzNCwgMTcsIDI0OCwgNjcsIDE3NSwgMjUsIDUsIDIzNCwgMTYsIDI0MiwgNDcsIDI1NCwgMjMzLCAxNzUsIDI1LCAKKyAgICA1LCAyMzQsIDE2LCAyNDIsIDQ3LCAyNDcsIDIyOCwgMjU0LCAyMzMsIDE3NSwgMjUsIDUsIDIzNCwgMTYsIDI0MiwgNDcsIAorICAgIDI0MywgODEsIDE3NSwgMjUsIDUsIDI0MywgODEsIDE3NSwgMjUsIDUsIDI0NywgMjI4LCAyNDMsIDEyNCwgMTc1LCAyNSwgNSwgCisgICAgMjQ3LCAyMjgsIDI0MywgODEsIDE3NSwgMjI0LCAxNDEsIDIzMywgMjA3LCAxNjgsIDEzNSwgMjM0LCAyOSwgMjM0LCAyNDYsIAorICAgIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCAxMjgsIDE2OCwgMTM1LCAyMzQsIDEwNiwgMjM0LCA5OSwgMTY4LCAxMzUsIDIzNCwgCisgICAgMTA2LCAyMzQsIDk1LCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIzNCwgMTAzLCAxNjgsIDEzNSwgMjM0LCAxMDYsIDIyMywgMTU0LCAKKyAgICAxNjgsIDEzNSwgMjI5LCA1LCAyMjgsIDI0OCwgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgMTQ3LCAxNjgsIDEzNSwgMjUwLCAKKyAgICA4NywgMjUwLCA5NSwgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgMTQ2LCAxNjgsIDEzNSwgMjE5LCA1OSwgMjE5LCA1OCwgCisgICAgMTY4LCAxMzUsIDI1MCwgODcsIDI1MCwgODMsIDE2OCwgMTM1LCAyMTAsIDI0NSwgMjEwLCAyNTIsIDE2OCwgMTM1LCAyNDcsIAorICAgIDE0NiwgMjUwLCAxNTQsIDE2OCwgMTM1LCAyMTYsIDQyLCAyMjUsIDIzOCwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMTYsIDIwMCwgCisgICAgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMjksIDIwMSwgMTY4LCAxMzUsIDIxNiwgMTU3LCAyMjUsIDExMSwgMTY4LCAxMzUsIAorICAgIDIyOCwgNzUsIDIyOSwgOTgsIDE2OCwgMTM1LCAyNDcsIDE0NiwgMjQ4LCA2OCwgMTY4LCAxMzUsIDIxNiwgNDIsIDIxNywgCisgICAgNTUsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAxMzEsIDE2OCwgMTM1LCAyMTYsIDE1NywgMjE2LCAyMDQsIDE2OCwgMTM1LCAKKyAgICAyMTYsIDE1NywgMjE2LCAxNTQsIDE2OCwgMTM1LCAyMjgsIDc1LCAyMjcsIDIzNywgMTY4LCAxMzUsIDI1MSwgMjA2LCAyNTIsIAorICAgIDE2NCwgMTY4LCAxMzUsIDIyNSwgMTcsIDIyNSwgNDIsIDE2OCwgMTM1LCAyMjUsIDEyMiwgMjI1LCAxMTMsIDE2OCwgMTM1LCAKKyAgICAyNDQsIDQ0LCAyNDQsIDE5NiwgMTY4LCAxMzUsIDIyNSwgMTIyLCAyMjUsIDE0MSwgMTY4LCAxMzUsIDI0NCwgNDQsIDI0NCwgCisgICAgMTczLCAxNjgsIDEzNSwgMjI1LCAxMjIsIDIyMSwgMjQ3LCAxNjgsIDEzNSwgMjMwLCAxNjIsIDE4NCwgMTY4LCAxMzUsIAorICAgIDIxMCwgMjQ1LCAyMTEsIDc5LCAxNjgsIDEzNSwgMjIyLCAyMTIsIDIyMiwgMTM5LCAxNjgsIDEzNSwgMjIyLCAxNDAsIDE2OCwgCisgICAgMTM1LCAyMzIsIDE1NywgMjMyLCAyMDYsIDE2OCwgMTM1LCAyMzIsIDk4LCAxNjgsIDEzNSwgMjExLCAyMjgsIDIxMiwgNjEsIAorICAgIDE2OCwgMTM1LCAyMTksIDU5LCAyMjIsIDYsIDE2OCwgMTM1LCAyMTksIDU5LCAyMjIsIDExNCwgMTY4LCAxMzUsIDIxOSwgCisgICAgNTksIDIxOCwgODIsIDE2OCwgMTM1LCAyNDEsIDY5LCAyNDEsIDE1OSwgMTY4LCAxMzUsIDIzMiwgMTU3LCAyNTAsIDY4LCAKKyAgICAxNjgsIDEzNSwgMTQ0LCAyNTQsIDExNSwgMTY4LCAxMzUsIDI0MSwgNjksIDIyOCwgNzAsIDE2OCwgMTM1LCAyMjYsIDY4LCAKKyAgICAxNjgsIDEzNSwgMjIxLCAyMzAsIDYxLCAxNjgsIDEzNSwgMjMxLCAyMDQsIDI0MiwgMTcsIDE2OCwgMTM1LCAyMjEsIDIzMCwgCisgICAgMjU1LCA3MywgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDEzNiwgMTY4LCAxMzUsIDIyMSwgMjMwLCA3MywgMTY4LCAxMzUsIAorICAgIDIyMSwgMjMwLCAyMzYsIDMzLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgMjE0LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgCisgICAgMjEyLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDcwLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDIxNCwgMTE4LCAxNjgsIDEzNSwgMjI1LCAKKyAgICAxMjQsIDE2OCwgMjQ5LCA5OCwgMTYsIDI1MiwgMTY1LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDc1LCAxNjgsIDEzNSwgMjIxLCAKKyAgICAyMzAsIDI1NCwgMjQzLCAxNjgsIDEzNSwgMjIxLCAyMzAsIDc2LCAxNjgsIDEzNSwgMjIxLCAyMzAsIDI1NCwgMjAyLCAyMzEsIAorICAgIDE5OCwgMTY4LCAxMzUsIDIyMSwgMjMwLCAyNTQsIDIwMiwgMjMxLCAxOTksIDE2OCwgMTM1LCAyMzMsIDEwNiwgMTY4LCAKKyAgICAxMzUsIDIzMSwgMTk1LCAxNjgsIDEzNSwgMjMxLCAxOTYsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjQ1LCAxODAsIDE2OCwgCisgICAgMTM1LCAyMzEsIDIwNCwgMjE2LCAxNTYsIDE2OCwgMTM1LCAyMzEsIDIwNCwgMjE1LCAyMjgsIDE2OCwgMTM1LCAyMzEsIAorICAgIDIwNCwgMjUwLCAxMzUsIDE2OCwgMTM1LCAyMTYsIDE5OCwgMTY4LCAxMzUsIDIyOCwgMjA1LCAxNjgsIDEzNSwgMjExLCA3MywgCisgICAgMTY4LCAxMzUsIDI0NCwgMzUsIDE2OCwgMjEsIDIxMCwgODYsIDE2OCwgMjEsIDExMCwgMTY4LCAyMSwgMTA1LCAxNjgsIDIxLCAKKyAgICAxNTgsIDE2OCwgMjEsIDE2MSwgMTY4LCAyMSwgMTg5LCAxNjgsIDIxLCAxOTQsIDE2OCwgMjEsIDE5OCwgMTY4LCAyMSwgCisgICAgMTk1LCAxNjgsIDIxLCAyMDAsIDE2OCwgMTM1LCAyNTQsIDExMSwgMTY4LCAxMzUsIDIzNCwgMTA0LCAyMDksIDIwOSwgMSwgCisgICAgMjM0LCAyOCwgMjA5LCAyMDksIDEsIDIzNCwgMTA2LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgMjM0LCAxMDYsIDIxNywgNjIsIAorICAgIDIwOSwgMjA5LCAxLCAyMjksIDQsIDIwOSwgMjA5LCAxLCAyNDksIDIzOCwgMjA5LCAyMDksIDEsIDIxOSwgNTksIDIxNywgCisgICAgNjIsIDIwOSwgMjA5LCAxLCAyMjcsIDEzNCwgMjA5LCAyMDksIDEsIDI0NywgMTQ1LCAyMDksIDIwOSwgMSwgMTExLCAyMDksIAorICAgIDIwOSwgMSwgMjE2LCAxNTcsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMTYsIDE1NywgMjE3LCA2MiwgMjA5LCAyMDksIDEsIAorICAgIDIyOCwgNzQsIDIwOSwgMjA5LCAxLCAyNTEsIDIwNSwgMjA5LCAyMDksIDEsIDIyNSwgMTYsIDIwOSwgMjA5LCAxLCAyMjUsIAorICAgIDEyMiwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDIxNywgNjIsIDIwOSwgMjA5LCAxLCAyMjUsIDEyMiwgMjE3LCAKKyAgICA2MiwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDIxOCwgMzUsIDIwOSwgMjA5LCAxLCAyMzAsIDE2MSwgMjA5LCAyMDksIDEsIAorICAgIDIxMCwgMjQ0LCAyMDksIDIwOSwgMSwgMjMyLCAxNTcsIDIzMiwgMjA2LCAyMDksIDIwOSwgMSwgMjMyLCAxNTcsIDIzMiwgCisgICAgMTIxLCAyMDksIDIwOSwgMSwgMjExLCAyMjcsIDIwOSwgMjA5LCAxLCAyMTksIDU5LCAyMTgsIDM1LCAyMDksIDIwOSwgMSwgCisgICAgMjQxLCA2OSwgMjE4LCAzNSwgMjA5LCAyMDksIDEsIDc2LCAyMDksIDIwOSwgMSwgMjQxLCA2OSwgMjE3LCA2MiwgMjA5LCAKKyAgICAyMDksIDI0NSwgMTYzLCAyMDksIDIwOSwgMjUsIDUsIDYxLCAyMDksIDIwOSwgMjUsIDUsIDIzMSwgMjA0LCAyMzQsIDIzNCwgCisgICAgMjA5LCAyMDksIDI1LCA1LCAyNTUsIDczLCAyMDksIDIwOSwgMjUsIDUsIDI1NCwgMTM2LCAyMDksIDIwOSwgMjUsIDUsIDczLCAKKyAgICAyMDksIDIwOSwgMjUsIDUsIDIzNiwgMzMsIDIwOSwgMjA5LCAyNSwgNSwgMjExLCAxMTcsIDIwOSwgMjA5LCAyNSwgNSwgCisgICAgMjEwLCAxNjksIDIwOSwgMjA5LCAyNSwgNSwgNzAsIDIwOSwgMjA5LCAyNSwgNSwgMjE0LCAxMTgsIDIwOSwgMjA5LCAyNSwgCisgICAgNSwgMjMxLCAyMDQsIDIzNCwgMTMsIDIwOSwgMjA5LCAyMjAsIDE0NSwgNSwgMjMyLCAxNTYsIDIwOSwgMjA5LCAyMjAsIAorICAgIDE0NSwgNSwgMjI3LCAxMzQsIDIwOSwgMjA5LCAyNSwgNSwgNzUsIDIwOSwgMjA5LCAyNSwgNSwgMjQ1LCAxOTUsIDIwOSwgCisgICAgMjA5LCAyNSwgNSwgNzYsIDIwOSwgMjA5LCAyNSwgNSwgMjUzLCAxNjcsIDIwOSwgMjA5LCAyNSwgNSwgMjU0LCAyMDEsIAorICAgIDIwOSwgMjA5LCAyMzQsIDI5LCAyMzMsIDEzNSwgMjA5LCAyMDksIDEzOCwgMjMxLCAyMDQsIDI0NSwgMTgwLCAyMDksIDIwOSwgCisgICAgMTM4LCAyMzEsIDIwNCwgMjE2LCAxNTYsIDIwOSwgMjA5LCAxMzgsIDIzMSwgMjA0LCAyMTYsIDExNywgMjA5LCAyMDksIAorICAgIDEzOCwgMjMxLCAyMDQsIDI1MCwgMjIzLCAyMDksIDIwOSwgMjUxLCA0LCA3OCwgMjA5LCAyMDksIDIyOCwgMjE0LCAyMDksIAorICAgIDIwOSwgMjEsIDIxMCwgODYsIDIwOSwgMjA5LCAyMSwgMTEwLCAyMDksIDIwOSwgMjEsIDEwNSwgMjA5LCAyMDksIDIxLCAKKyAgICAxNTgsIDIwOSwgMjA5LCAyMSwgMTYxLCAyMDksIDIwOSwgMjEsIDE4OSwgMjA5LCAyMDksIDIxLCAxOTQsIDIwOSwgMjA5LCAKKyAgICAyMSwgMTk4LCAyMDksIDIwOSwgMjEsIDE5NSwgMjA5LCAyMDksIDIxLCAyMDAsIDIwOSwgMjA5LCAyNDEsIDY5LCAyMjgsIAorICAgIDc0LCAyMDksIDIwOSwgMjQxLCA2OSwgMjMwLCAxNjEsIDIwOSwgMjA5LCAxLCAyMzQsIDEwNywgMjQyLCAxNzQsIDIwOSwgCisgICAgMjA5LCAxLCAyMzQsIDEwNywgMjI3LCAxMzQsIDYzLCAzLCAyMjYsIDIwNCwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgCisgICAgMjMwLCAyNDgsIDIxNSwgMTg5LCA2MSwgNjMsIDE2NCwgMjQyLCAxMTUsIDIxMSwgMCwgMjMwLCAyNDgsIDI1NSwgMTU5LCAKKyAgICAyMjIsIDIxNiwgMjUyLCA3NywgMTg0LCA2MywgMTY0LCAyNDIsIDExNSwgMjExLCAwLCAyMzAsIDI0OCwgMjU1LCAxNTksIAorICAgIDI0MiwgMTE1LCAyMTUsIDE3MywgMTg0LCA2MywgMTY0LCA2NSwgMjExLCAwLCAyMzAsIDI0OCwgMjMxLCA5MywgMTg0LCA2MywgCisgICAgMTY0LCAyNDksIDI1MiwgMjExLCAwLCAyMzAsIDI0OCwgMjIwLCAxMDksIDE4NCwgNjMsIDE2NCwgMjUwLCAyMzksIDIxMSwgCisgICAgMCwgMjMwLCAyNDgsIDIyNSwgMTEyLCAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIxMSwgMCwgMjMwLCAyNDgsIDIxNSwgMTczLCAKKyAgICAyMjAsIDk2LCAxODQsIDYzLCAxNjQsIDIyMSwgMjA4LCAyMjAsIDk1LCA2MywgMTY0LCAyNTEsIDEyOCwgMjExLCAwLCAyMzAsIAorICAgIDI0NywgNjMsIDE2NCwgMjUxLCAyMjMsIDIyMCwgMywgMjExLCAwLCAyMzAsIDI0NywgNjMsIDE2NCwgMjM1LCAxOTcsIDIxNSwgCisgICAgMTcyLCA2MywgMTY0LCAyNDgsIDYxLCAyMTUsIDE3MywgMjUxLCAxMjcsIDYzLCAxNjQsIDIyMCwgOTUsIDYzLCAxNjQsIAorICAgIDIyNywgMTM5LCAyMjAsIDk1LCA2MywgMTY0LCAyMTUsIDE3MywgMjIwLCA5NSwgNjMsIDE2NCwgMjI3LCAxMzksIDIxNSwgCisgICAgMTczLCAyMjAsIDk1LCA2MywgMTY0LCAyMjIsIDIzNiwgMjUwLCAxMjIsIDIxOCwgMjM2LCAyMjAsIDk1LCA2MywgMTY0LCAKKyAgICAyMjMsIDQyLCAyNDIsIDE0NiwgMjIwLCA5NSwgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjMxLCAKKyAgICA5MiwgMTk5LCAyNTEsIDcsIDYzLCAxNjQsIDI0MiwgMTE1LCAyMTUsIDE3MiwgNjMsIDIzMiwgMTQ0LCA1LCAyNTAsIDE1NSwgCisgICAgMjIyLCAxNDMsIDYzLCAyMzIsIDE0NCwgNSwgMjMyLCAyNTIsIDIyMiwgMTQzLCA2MywgMjUzLCAyMTIsIDUsIDIyMCwgMTA1LCAKKyAgICAyNDMsIDY1LCAyNTUsIDE2NCwgMjIyLCAxNDMsIDYzLCAyNTMsIDIxMiwgNSwgMjU1LCAxNjEsIDE5MCwgNjMsIDI1MywgCisgICAgMjEyLCA1LCAyMjEsIDE4MiwgMjE1LCAxNjgsIDYzLCA1LCAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MywgNjQsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDI0MiwgMTc2LCA2MywgNSwgMjIzLCAxMzAsIDI0NywgMTU5LCAyNDIsIDExNiwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQzLCA2NCwgNjMsIDUsIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxNzYsIDYzLCA1LCAKKyAgICAyMjMsIDEzMCwgMjQ3LCAxNTksIDIyMywgMTMwLCAyMjksIDIxOCwgNjMsIDIxLCAyMTAsIDg2LCA2MywgMjEsIDExMCwgNjMsIAorICAgIDIxLCAxMDUsIDYzLCAyMSwgMTU4LCA2MywgMjEsIDE2MSwgNjMsIDIxLCAxODksIDYzLCAyMSwgMTk0LCA2MywgMjEsIDE5OCwgCisgICAgNjMsIDIxLCAxOTUsIDYzLCAyMSwgMjAwLCA2MywgMjEsIDE2MywgMTEwLCA2MywgMjEsIDE2MywgMTA1LCA2MywgMjEsIAorICAgIDE2MywgMTU4LCA2MywgMjEsIDE2MywgMTYxLCA2MywgMjEsIDE2MywgMTg5LCA2MywgMjEsIDE2MywgMTk0LCA2MywgMjEsIAorICAgIDE2MywgMTk4LCA2MywgMjEsIDE2MywgMTk1LCA2MywgMjEsIDE2MywgMjAwLCA2MywgMjEsIDE2MywgMjEwLCA4NiwgNjMsIAorICAgIDE2NCwgMjUxLCAxMzAsIDIyMiwgMTQzLCA2MywgMTY0LCAyMjksIDY4LCAyNTEsIDY4LCAyMjcsIDE0OSwgMjEwLCAyNSwgCisgICAgNjMsIDE2NCwgMjUwLCAyMzksIDI1NSwgMTYzLCAyMjIsIDE0NCwgMjUxLCA2OSwgMjMwLCAyMDIsIDI1MSwgNywgNjMsIAorICAgIDE2NCwgMjI5LCA2OCwgMjUxLCA2OCwgMjIwLCAxMDYsIDIyMiwgMTQzLCA2MywgMTY0LCAyNTAsIDEzMiwgMjMwLCAyNDcsIAorICAgIDYzLCAxNjQsIDIxNSwgMTg0LCAyNTUsIDE2MCwgNjMsIDE2NCwgMjQyLCAxMDAsIDIyMiwgMTQ0LCAyNDIsIDYzLCA2MywgCisgICAgMTY0LCAyNDIsIDEwMCwgMjIyLCAxNDQsIDI0MiwgNjksIDYzLCAxNjQsIDI1NCwgMTE2LCAyMzQsIDEyMywgMjQyLCA2MywgCisgICAgNjMsIDE2NCwgMjU0LCAxMTYsIDIzNCwgMTIzLCAyNDIsIDY5LCA2MywgNSwgMjExLCA2NSwgMjE1LCAxNzEsIDYzLCA1LCAKKyAgICAyMzEsIDE2NywgMjE1LCAxNzEsIDYzLCAxLCAxNzYsIDYzLCAxLCAyMzQsIDEzMiwgNjMsIDEsIDI0MywgMTM1LCA2MywgMSwgCisgICAgMjQyLCAyNDksIDYzLCAxLCAyMjksIDc3LCA2MywgMSwgMjUxLCAzMywgNjMsIDEsIDI1MCwgMTU3LCA2MywgMSwgMjM1LCAKKyAgICAxNDEsIDYzLCAxLCAyMjcsIDE2NSwgNjMsIDEsIDIxNSwgMTU2LCA2MywgMSwgMjE1LCAxNDQsIDYzLCAxLCAyNDgsIDEzNSwgCisgICAgNjMsIDEsIDI0OCwgMTE5LCA2MywgMSwgMjI4LCAxMTAsIDYzLCAxLCAyMTcsIDEwNSwgNjMsIDEsIDIxNiwgMjA4LCA2MywgCisgICAgMSwgMjQ4LCAyMjEsIDYzLCAxLCAyNDgsIDI1LCA2MywgMSwgMTk3LCA2MywgMSwgMTkwLCA2MywgMSwgMjI1LCAxNDcsIDYzLCAKKyAgICAxLCAyNTIsIDE5MSwgNjMsIDEsIDI1MiwgMTgsIDYzLCAxLCAxODQsIDYzLCAxLCAyMTUsIDE4MywgNjMsIDEsIDIxNSwgCisgICAgMTc1LCA2MywgMSwgMjQ2LCAzOCwgNjMsIDEsIDI0NiwgMzMsIDYzLCAxLCAyMTIsIDY1LCA2MywgMSwgMjEwLCA4MiwgNjMsIAorICAgIDEsIDIxMCwgMTE2LCA2MywgMSwgMjU1LCAxNjYsIDYzLCAxLCAxOTEsIDYzLCAxLCAyMDUsIDYzLCAxLCAyMzMsIDEzNSwgCisgICAgNjMsIDEsIDIyMCwgMTAyLCA2MywgMSwgMjE4LCAyMjMsIDYzLCAxLCAyMDYsIDYzLCAxLCAxNjIsIDYzLCAxLCA2MSwgNjMsIAorICAgIDEsIDIzMywgMjMxLCA2MywgMSwgMjQ0LCA3NywgMjA1LCA2MywgMSwgMjM0LCA0NiwgNjMsIDEsIDIyMiwgMTc5LCA2MywgCisgICAgMjUsIDUsIDI1NSwgNzMsIDYzLCAyNSwgNSwgNzMsIDYzLCAyNSwgNSwgMjM2LCAzMywgNjMsIDI1LCA1LCA3MCwgNjMsIDI1LCAKKyAgICA1LCAyMTQsIDExOCwgNjMsIDI1LCA1LCAxNDksIDE1MywgNjMsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCA2MywgMjUsIDUsIAorICAgIDE0OSwgMTU2LCA2MywgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDYzLCAyNSwgNSwgNzUsIDYzLCAyNSwgNSwgMjQ1LCAyMDksIAorICAgIDYzLCAyNSwgNSwgNzYsIDYzLCAyNSwgNSwgMjI2LCAxODMsIDYzLCA1LCAyMjIsIDIyMSwgMjE4LCA4NCwgMjI5LCA3OCwgCisgICAgMjIyLCAyMTEsIDYzLCA1LCAyMjIsIDIxNiwgMjUyLCA3NiwgNjMsIDI1LCA1LCAyMjMsIDQ5LCA3MywgNjMsIDI1LCA1LCAKKyAgICAyMjMsIDQ5LCAyMzYsIDMzLCA2MywgNSwgMjI3LCAxNDksIDIxMCwgMjYsIDIyOSwgMjI2LCAyNDgsIDIyMSwgNjMsIDUsIAorICAgIDIxOSwgNzEsIDIzMywgNjAsIDYzLCAxNjQsIDI0MiwgMjksIDYzLCAxNjQsIDIyNiwgNTcsIDYzLCA1LCAyMzMsIDYzLCAKKyAgICAyMjIsIDE0MywgNjMsIDUsIDIxMSwgNzAsIDIyMiwgMTQzLCA2MywgNSwgMjMzLCA2NCwgMjE1LCAxODQsIDI1MSwgNywgNjMsIAorICAgIDUsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDUsIDI0MiwgMTE5LCAyNTEsIDgsIDIyMywgNDAsIDYzLCA1LCAyNDIsIDExOSwgCisgICAgMjMxLCA4NSwgMjIzLCA0MCwgNjMsIDUsIDIzNSwgMTkzLCAyMzEsIDk1LCAyNTEsIDcsIDYzLCAyMTgsIDczLCA1LCAyMzMsIAorICAgIDY0LCAyMTUsIDE4NCwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgMjMxLCA5NSwgMjUxLCA3LCA2MywgMjE4LCA3MywgNSwgCisgICAgMjM1LCAxOTMsIDIzMSwgOTUsIDI1MSwgNywgNjMsIDIxOCwgNzMsIDEsIDE3NiwgNjMsIDIxOCwgNzMsIDEsIDIzNCwgMTMyLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjQzLCAxMzUsIDYzLCAyMTgsIDczLCAxLCAyNDIsIDI0OSwgNjMsIDIxOCwgNzMsIDEsIDIyOSwgCisgICAgNzcsIDYzLCAyMTgsIDczLCAxLCAyNTEsIDMzLCA2MywgMjE4LCA3MywgMSwgMjUwLCAxNTcsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMzUsIDE0MSwgNjMsIDIxOCwgNzMsIDEsIDIyNywgMTY1LCA2MywgMjE4LCA3MywgMSwgMjE1LCAxNTYsIDYzLCAyMTgsIAorICAgIDczLCAxLCAyMTUsIDE0NCwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMTM1LCA2MywgMjE4LCA3MywgMSwgMjQ4LCAxMTksIDYzLCAKKyAgICAyMTgsIDczLCAxLCAyMjgsIDExMCwgNjMsIDIxOCwgNzMsIDEsIDIxNywgMTA1LCA2MywgMjE4LCA3MywgMSwgMjE2LCAyMDgsIAorICAgIDYzLCAyMTgsIDczLCAxLCAyNDgsIDIyMSwgNjMsIDIxOCwgNzMsIDEsIDI0OCwgMjUsIDYzLCAyMTgsIDczLCAxLCAxOTcsIAorICAgIDYzLCAyMTgsIDczLCAxLCAxOTAsIDYzLCAyMTgsIDczLCAxLCAyMjUsIDE0NywgNjMsIDIxOCwgNzMsIDEsIDI1MiwgMTkxLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjUyLCAxOCwgNjMsIDIxOCwgNzMsIDEsIDE4NCwgNjMsIDIxOCwgNzMsIDEsIDIxNSwgMTgzLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjE1LCAxNzUsIDYzLCAyMTgsIDczLCAxLCAyNDYsIDM4LCA2MywgMjE4LCA3MywgMSwgMjQ2LCAKKyAgICAzMywgNjMsIDIxOCwgNzMsIDEsIDIxMiwgNjUsIDYzLCAyMTgsIDczLCAxLCAyMTAsIDgyLCA2MywgMjE4LCA3MywgMSwgCisgICAgMjEwLCAxMTYsIDYzLCAyMTgsIDczLCAxLCAyNTUsIDE2NiwgNjMsIDIxOCwgNzMsIDEsIDE5MSwgNjMsIDIxOCwgNzMsIDEsIAorICAgIDIwNSwgNjMsIDIxOCwgNzMsIDEsIDIzMywgMTM1LCA2MywgMjE4LCA3MywgMSwgMjIwLCAxMDIsIDYzLCAyMTgsIDczLCAxLCAKKyAgICAyMTgsIDIyMywgNjMsIDIxOCwgNzMsIDEsIDIwNiwgNjMsIDIxOCwgNzMsIDEsIDE2MiwgNjMsIDIxOCwgNzMsIDEsIDYxLCAKKyAgICA2MywgMjE4LCA3MywgMSwgMjMzLCAyMzEsIDYzLCAyMTgsIDczLCAxLCAyNDQsIDc3LCAyMTIsIDY1LCA2MywgMjE4LCA3MywgCisgICAgMSwgMjQ0LCA3NywgMTkxLCA2MywgMjE4LCA3MywgMSwgMjQ0LCA3NywgMjA1LCA2MywgMjMzLCAyMTgsIDIyMiwgMTQxLCAKKyAgICAyMzQsIDEzMiwgNjMsIDIzMywgMjE4LCAyMjIsIDE0MSwgMjM0LCAxMzMsIDI1MSwgNjksIDIzMCwgMjAyLCAyNTEsIDcsIAorICAgIDYzLCAyNTAsIDI1MiwgNSwgMTE0LCAyNTIsIDcwLCA2MywgMjUwLCAyNTIsIDUsIDE5MiwgMjUyLCA3MCwgNjMsIDI1MCwgCisgICAgMjUyLCA1LCAyNTAsIDI1MywgMjE3LCAyMCwgNjMsIDI1MCwgMjUyLCA1LCAyMjEsIDIwNywgMjU1LCAxNjUsIDYzLCAxNiwgCisgICAgMjQ2LCA5MSwgMjUxLCAxMjUsIDYzLCAxNiwgMjIzLCAxMjksIDIyMiwgMjIyLCA2MywgMTYsIDIyNiwgNzcsIDI0MywgNjMsIAorICAgIDYzLCAxNiwgMjIzLCAxMjksIDIyMiwgMjIzLCAyMjMsIDQyLCAyNDIsIDE0NSwgNjMsIDE2LCAyMjUsIDExMiwgMTkwLCA2MywgCisgICAgMTYsIDIyOCwgNTksIDI1MSwgMTI1LCA2MywgMTYsIDIyOCwgNTksIDI1MSwgMTI2LCAyMjcsIDEzOSwgMjU1LCAxNjIsIDYzLCAKKyAgICAxNiwgMjI4LCA1OSwgMjUxLCAxMjYsIDI0MiwgMTE3LCAyNTUsIDE2MiwgNjMsIDE2LCAyMjgsIDU5LCAyNTEsIDEyNiwgCisgICAgMjUxLCA2OSwgMjU1LCAxNjIsIDYzLCA1LCAyMjMsIDEzMCwgMjI5LCAyMTksIDIyMywgMTMwLCAyNDcsIDE1OCwgNjMsIDUsIAorICAgIDIyMywgMTMwLCAyMjksIDIxOSwgMjQyLCAxMTYsIDYzLCAxNjQsIDI1MSwgMTI5LCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIAorICAgIDI0OCwgMjIzLCA0MSwgNjMsIDE2NCwgMjMwLCAxNjMsIDIxMSwgMCwgMjQyLCAyMTUsIDIzMCwgMjQ4LCAyMjMsIDQxLCA2MywgCisgICAgMTY0LCAyMjcsIDEzOSwgMjE1LCAxNzIsIDYzLCAxNjQsIDY1LCAyNTEsIDE1MiwgMjIyLCAyMTMsIDIxMSwgMCwgMjMwLCAKKyAgICAyNDgsIDIzMSwgOTMsIDE4NCwgNjMsIDE2NCwgMjQ5LCAyNTIsIDI1MSwgMTUyLCAyMjIsIDIxMywgMjExLCAwLCAyMzAsIAorICAgIDI0OCwgMjIwLCAxMDksIDE4NCwgMjIyLCAyNTAsIDIxNywgMjU1LCA1MCwgMjMzLCA0NSwgMjE3LCAyNTUsIDUwLCAyMjIsIAorICAgIDI1MCwgMjE3LCAyNTUsIDUsIDIsIDI0NywgMTE4LCAyMzMsIDQ1LCAyMTcsIDI1NSwgNSwgMiwgMjQ3LCAxMTgsIDYzLCAKKyAgICAxNjQsIDIzMywgNTUsIDIzMSwgOTYsIDIyMiwgMTQzLCA2MywgMTY0LCAyMTUsIDI1MCwgMjMxLCA5NiwgMjIyLCAxNDMsIAorICAgIDY4LCAxLCAxNzYsIDY4LCAxLCAyMzQsIDEzMiwgNjgsIDEsIDI0MywgMTM1LCA2OCwgMSwgMjQyLCAyNDksIDY4LCAxLCAKKyAgICAyMjksIDc3LCA2OCwgMSwgMjUxLCAzMywgNjgsIDEsIDI1MCwgMTU3LCA2OCwgMSwgMjM1LCAxNDEsIDY4LCAxLCAyMzUsIAorICAgIDExNCwgNjgsIDEsIDIyNywgMTY1LCA2OCwgMSwgMjI4LCA3NiwgNjgsIDEsIDIxNSwgMTU2LCA2OCwgMSwgMjE1LCAxNDQsIAorICAgIDY4LCAxLCAyNDgsIDEzNSwgNjgsIDEsIDI0OCwgMTE5LCA2OCwgMSwgMjI4LCAxMTAsIDY4LCAxLCAyMTcsIDEwNSwgNjgsIAorICAgIDEsIDIxNiwgMjA4LCA2OCwgMSwgMjQ4LCAyMjEsIDY4LCAxLCAyNDgsIDI1LCA2OCwgMSwgMTk3LCA2OCwgMSwgMTkwLCA2OCwgCisgICAgMSwgMjI1LCAxNDcsIDY4LCAxLCAyNTIsIDE5MSwgNjgsIDEsIDI1MiwgMTgsIDY4LCAxLCAxODQsIDY4LCAxLCAxOTEsIDY4LCAKKyAgICAxLCAyMDUsIDY4LCAxLCAyMzMsIDEzNSwgNjgsIDEsIDIxMiwgNjUsIDY4LCAxLCAyMDYsIDY4LCAxLCAxNjIsIDY4LCAxLCAKKyAgICAyMzIsIDE4NCwgNjgsIDEsIDYxLCA2OCwgMSwgMjIwLCA4NiwgNjEsIDY4LCAxLCA3MywgNjgsIDEsIDIzNiwgMzMsIDY4LCAKKyAgICAxLCA3MCwgNjgsIDEsIDIxNCwgMTE4LCA2OCwgMSwgNzUsIDY4LCAxLCAyMzAsIDE1MSwgNzUsIDY4LCAxLCA3NiwgNjgsIDEsIAorICAgIDI1MywgMTkyLCA2OCwgMjUsIDUsIDIxNywgNjQsIDI1NSwgNzMsIDY4LCAyNSwgNSwgMjU1LCA3MywgNjgsIDI1LCA1LCA3MywgCisgICAgNjgsIDI1LCA1LCAyMzYsIDMzLCA2OCwgMjUsIDUsIDcwLCA2OCwgMjUsIDUsIDIxNCwgMTE4LCA2OCwgMjUsIDUsIDc1LCAKKyAgICA2OCwgMjUsIDUsIDI1NCwgMjAxLCA2OCwgMjUsIDUsIDIzMCwgMTUxLCAyMzYsIDMzLCA2OCwgMjUsIDUsIDIzMCwgMTUxLCAKKyAgICA3NiwgNjgsIDI1LCA1LCAxNjAsIDQ4LCA2OCwgNSwgMjU0LCA3NSwgNjgsIDUsIDU5LCA1MSwgNjgsIDUsIDIxMywgMTQ3LCAKKyAgICA2OCwgNSwgMjEzLCAxNTIsIDY4LCA1LCAyNTMsIDIzNSwgNjgsIDExNiwgNSwgMTQ3LCAxOTEsIDY4LCAxMTYsIDUsIDE0NywgCisgICAgMjA1LCA2OCwgMTE2LCA1LCAxNDcsIDIxMiwgNjUsIDY4LCAxMTYsIDUsIDE0NywgMTYyLCA2OCwgMSwgMjQyLCAxMzIsIAorICAgIDIwNiwgNjgsIDIxLCAyMTAsIDg2LCA2OCwgMjEsIDExMCwgNjgsIDIxLCAxMDUsIDY4LCAyMSwgMTU4LCA2OCwgMjEsIDE2MSwgCisgICAgNjgsIDIxLCAxODksIDY4LCAyMSwgMTk0LCA2OCwgMjEsIDE5OCwgNjgsIDIxLCAxOTUsIDY4LCAyMSwgMjAwLCA2OCwgNSwgCisgICAgMjMyLCAxOTIsIDIyMSwgMTcyLCA2OCwgNSwgMjIxLCAxNzIsIDY4LCAxNiwgMjMyLCAxNTMsIDY4LCAxNiwgMjQ5LCAyMTMsIAorICAgIDY4LCAxNiwgMjU0LCAyMjAsIDY4LCAxNiwgMjQzLCA0OCwgNjgsIDEsIDIyMCwgMTAyLCA2OCwgMSwgMjE4LCAyMjMsIDY4LCAKKyAgICAxLCAxNDksIDE1MywgNjgsIDEsIDE0OSwgMjIyLCAxODAsIDY4LCAxLCAxNDksIDE1NiwgNjgsIDEsIDE0OSwgMjMyLCAxODUsIAorICAgIDY4LCAyNSwgNSwgMTQ5LCAxNTMsIDY4LCAyNSwgNSwgMTQ5LCAyMjIsIDE4MCwgNjgsIDI1LCA1LCAxNDksIDE1NiwgNjgsIAorICAgIDI1LCA1LCAxNDksIDIzMiwgMTg1LCA2OCwgMSwgMjMwLCAxNTEsIDIyOSwgNzcsIDY4LCAxLCAyMzAsIDE1MSwgMjM1LCAKKyAgICAxMTQsIDY4LCAxLCAyMzAsIDE1MSwgMjUyLCAxMTEsIDY4LCAxLCAyMzAsIDE1MSwgMjUyLCAxMDYsIDY4LCAxMTYsIDUsIAorICAgIDIzMCwgMTUxLCAxNDcsIDE5NywgNjgsIDExNiwgNSwgMjMwLCAxNTEsIDE0NywgMTg0LCA2OCwgMTE2LCA1LCAyMzAsIDE1MSwgCisgICAgMTQ3LCAyMzMsIDEzNSwgNjgsIDEsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjIwLCAxMDIsIDY4LCAyNSwgNSwgMjIwLCAxMDgsIAorICAgIDIzNCwgMjEzLCAyNDUsIDU1LCA2OCwgMTM4LCAxNjQsIDIyMCwgMTA4LCAyMzQsIDIxMywgMjQxLCAyNDcsIDY4LCAxMzgsIAorICAgIDE2NCwgMjIwLCAxMDgsIDIzNCwgMjEzLCAyMzQsIDE4MywgMjI1LCAxMjEsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA4LCAKKyAgICAyMzQsIDIxMywgMjE2LCAyMDgsIDY4LCAxLCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIDIxMywgMjI0LCAxMTQsIDY4LCAyNSwgCisgICAgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDI0NSwgNTUsIDY4LCAyNSwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAKKyAgICAyMTMsIDIxNCwgMjE0LCA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjksIDY4LCA1LCAyMTIsIDcsIAorICAgIDIyNCwgMTA4LCAyMzQsIDIxMywgMjE2LCAyOCwgNjgsIDUsIDIxMiwgNywgMjI0LCAxMDgsIDIzNCwgMjEzLCAyMTYsIDI3LCAKKyAgICA2OCwgNSwgMjEyLCA3LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIxNiwgMjYsIDY4LCA1LCAyMTIsIDcsIDIyNCwgMTA4LCAyMzQsIAorICAgIDIxMywgMjE2LCAyNSwgNjgsIDEsIDI0NSwgMjE5LCAyMjQsIDEwOCwgMjM0LCAyMTMsIDIyOCwgMTEwLCA2OCwgMSwgMjQ1LCAKKyAgICAyMTksIDIyNCwgMTA4LCAyMzQsIDIxMywgMjEwLCAxNzYsIDY4LCAxLCAyNDUsIDIxOSwgMjI0LCAxMDgsIDIzNCwgMjEzLCAKKyAgICAyNDIsIDIxNywgNjgsIDI1LCA1LCAyNDMsIDU5LCAyMzQsIDIxMywgNzMsIDY4LCAyNSwgNSwgMjM0LCAxODgsIDIyNiwgCisgICAgMjM0LCA2OCwgMjUsIDUsIDIzNCwgMTg4LCA3MCwgNjgsIDI1LCA1LCAyMzQsIDE4OCwgMjQ1LCAyMDksIDY4LCAxLCAyMjAsIAorICAgIDg2LCAxNzYsIDY4LCAxLCAyMjAsIDg2LCAyMzQsIDEzMiwgNjgsIDEsIDIyMCwgODYsIDI0MywgMTM1LCA2OCwgMSwgMjIwLCAKKyAgICA4NiwgMjUxLCAzMywgNjgsIDEsIDIyMCwgODYsIDIxMCwgMTE2LCA2OCwgMSwgMjIwLCA4NiwgMjI3LCAxNjUsIDY4LCAxLCAKKyAgICAyMjAsIDg2LCAyNDgsIDIyMSwgNjgsIDEsIDIyMCwgODYsIDE5NywgNjgsIDEsIDIyMCwgODYsIDIyNSwgMTQ3LCA2OCwgMSwgCisgICAgMjIwLCA4NiwgMjQ0LCAxOTYsIDY4LCAxLCAyMjAsIDg2LCAyNTIsIDE5MSwgNjgsIDEsIDIyMCwgODYsIDIxNiwgMjA4LCAKKyAgICA2OCwgMSwgMjIwLCA4NiwgMTYyLCA2OCwgMTE2LCA1LCAyMjAsIDg2LCAxNDcsIDIxMiwgNjUsIDY4LCAyNSwgNSwgMjIwLCAKKyAgICA4NiwgMjU1LCA3MywgNjgsIDI1LCA1LCAyMjAsIDg2LCA3NSwgNjgsIDI1LCA1LCAyMjAsIDg2LCAxNjAsIDQ4LCA2OCwgMjUsIAorICAgIDUsIDIyMCwgODYsIDQwLCAyMTEsIDExNywgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjgsIDY4LCA1LCAyMjAsIDg2LCAyMTYsIAorICAgIDI3LCA2OCwgNSwgMjIwLCA4NiwgMjE2LCAyNSwgNjgsIDUsIDIyMCwgODYsIDIxNiwgMjQsIDY4LCA1LCAyMjAsIDg2LCAKKyAgICAyNDksIDE1MiwgMjE2LCAyOCwgNjgsIDUsIDIyMCwgODYsIDI0OSwgMTUyLCAyMTYsIDI3LCA2OCwgNSwgMjIwLCA4NiwgCisgICAgMjQ5LCAxNTIsIDI0NSwgMTUzLCAyMTYsIDMwLCA2OCwgMSwgMjIyLCAxMjgsIDIyNiwgNjMsIDI0NCwgMTk2LCA2OCwgNSwgCisgICAgMjIyLCAxMjgsIDIyNiwgNjMsIDIxNiwgMjUsIDY4LCAyMjAsIDg2LCAyMSwgMjEwLCA4NiwgNjgsIDIyMCwgODYsIDIxLCAKKyAgICAxMTAsIDY4LCAyMjAsIDg2LCAyMSwgMTA1LCA2OCwgMjIwLCA4NiwgMjEsIDE1OCwgNjgsIDIyMCwgODYsIDIxLCAxNjEsIAorICAgIDY4LCAyMjAsIDg2LCAyMSwgMTg5LCA2OCwgMjIwLCA4NiwgMjEsIDE5NCwgNjgsIDIyMCwgODYsIDIxLCAxOTgsIDY4LCAKKyAgICAyMjAsIDg2LCAyMSwgMTk1LCA2OCwgMjIwLCA4NiwgMjEsIDIwMCwgNjgsIDUsIDIzNCwgMTI2LCAyMTYsIDI5LCA2OCwgNSwgCisgICAgMjM0LCAxMjYsIDIxNiwgMjcsIDY4LCAyNSwgNSwgMjU0LCAxOTAsIDYxLCA2OCwgMjUsIDUsIDI1NCwgMTkwLCAyNTQsIAorICAgIDIwMSwgNjgsIDE2LCAyMjAsIDg2LCAxMTAsIDY4LCAxNiwgMjIwLCA4NiwgMjQ1LCAzMCwgOTgsIDYsIDEsIDI1NCwgMTIzLCAKKyAgICA5OCwgNiwgMSwgMjUyLCAxNTIsIDk4LCA2LCAxLCAyNDMsIDEwNiwgOTgsIDYsIDEsIDI0NywgMTI4LCA5OCwgNiwgMSwgCisgICAgMjQ1LCAxNTAsIDk4LCA2LCAxLCAyMTMsIDE2MCwgOTgsIDYsIDEsIDIxMCwgODksIDk4LCA2LCAxLCAyMTcsIDYwLCA5OCwgCisgICAgNiwgMSwgMjM1LCAyNTUsIDk4LCA2LCAxLCAyMzQsIDIzNCwgOTgsIDYsIDEsIDIzMywgODEsIDk4LCA2LCAxLCAyMzEsIAorICAgIDE4NSwgOTgsIDYsIDEsIDIyOSwgMTk1LCA5OCwgNiwgMSwgMjI2LCAxOTYsIDk4LCA2LCAxLCAyMjYsIDE3LCA5OCwgNiwgMSwgCisgICAgMjEwLCA3OCwgOTgsIDYsIDEsIDIyMywgMTcxLCA5OCwgNiwgMSwgMjIxLCAyNDMsIDk4LCA2LCAxLCAyMTcsIDUwLCA5OCwgCisgICAgNiwgMSwgMjE0LCAxOTAsIDk4LCA2LCAxLCAyMjUsIDE0MCwgOTgsIDYsIDEsIDIzNCwgMTIxLCA5OCwgNiwgMSwgMjQyLCAKKyAgICAyNDEsIDk4LCA2LCAxLCAyMjQsIDczLCA5OCwgNiwgMSwgMjIwLCAyMCwgOTgsIDYsIDEsIDI1MCwgOTcsIDk4LCA2LCAxLCAKKyAgICAyNTEsIDcsIDk4LCA2LCAxLCAyMzUsIDEwMCwgOTgsIDYsIDEsIDI1MCwgNDAsIDk4LCA2LCAxLCAyNTAsIDE0MywgOTgsIDYsIAorICAgIDEsIDIxMSwgMTYzLCA5OCwgNiwgMSwgMjM1LCAxMTEsIDk4LCA2LCAxLCAyNDIsIDQzLCA5OCwgNiwgMSwgMjQxLCAyMzgsIAorICAgIDk4LCA2LCAxLCAyNDEsIDE3NSwgOTgsIDYsIDEsIDIxMiwgMjIsIDk4LCA2LCAxLCAyNDIsIDQsIDk4LCA2LCAxLCAyNDEsIAorICAgIDY1LCA5OCwgNiwgMSwgMjEwLCAyNDYsIDk4LCA2LCAxLCAyNTQsIDIzMiwgOTgsIDEsIDI1NCwgMTIzLCA5OCwgMSwgMjUyLCAKKyAgICAxNTIsIDk4LCAxLCAyNDMsIDEwNiwgOTgsIDEsIDI0NywgMTI4LCA5OCwgMSwgMjQ1LCAxNTAsIDk4LCAxLCAyMTMsIDE2MCwgCisgICAgOTgsIDEsIDIxMCwgODksIDk4LCAxLCAyMTcsIDYwLCA5OCwgMSwgMjM1LCAyNTUsIDk4LCAxLCAyMzQsIDIzNCwgOTgsIDEsIAorICAgIDIzMywgODEsIDk4LCAxLCAyMzEsIDE4NSwgOTgsIDEsIDIyOSwgMTk1LCA5OCwgMSwgMjI2LCAxOTYsIDk4LCAxLCAyMjYsIAorICAgIDE3LCA5OCwgMSwgMjEwLCA3OCwgOTgsIDEsIDIyMywgMTcxLCA5OCwgMSwgMjIxLCAyNDMsIDk4LCAxLCAyMTcsIDUwLCA5OCwgCisgICAgMSwgMjE0LCAxOTAsIDk4LCAxLCAyMjUsIDE0MCwgOTgsIDEsIDIzNCwgMTIxLCA5OCwgMSwgMjQyLCAyNDEsIDk4LCAxLCAKKyAgICAyMjQsIDczLCA5OCwgMSwgMjIwLCAyMCwgOTgsIDEsIDI1MCwgOTcsIDk4LCAxLCAyNTEsIDcsIDk4LCAxLCAyMzUsIDEwMCwgCisgICAgOTgsIDEsIDI1MCwgNDAsIDk4LCAxLCAyNTAsIDE0MywgOTgsIDEsIDIxMSwgMTYzLCA5OCwgMSwgMjM1LCAxMTEsIDk4LCAxLCAKKyAgICAyNDIsIDQzLCA5OCwgMSwgMjQxLCAyMzgsIDk4LCAxLCAyNDEsIDE3NSwgOTgsIDEsIDIxMiwgMjIsIDk4LCAxLCAyNDIsIDQsIAorICAgIDk4LCAxLCAyNDEsIDY1LCA5OCwgMSwgMjQ0LCAxMjEsIDk4LCAxLCAyMTAsIDI0NiwgOTgsIDEsIDI0NSwgMTY1LCA5OCwgMSwgCisgICAgMjE1LCA5NCwgMjQzLCAxMDYsIDk4LCAxLCAyNTQsIDE5NiwgOTgsIDIyNiwgMTUsIDIyMCwgMTM3LCA1OCwgMSwgOTgsIAorICAgIDIyOSwgMTk1LCA5OCwgMSwgMjU0LCAyMzIsIDk4LCAxLCAyNDIsIDMsIDUwLCA5OCwgMSwgMjMzLCAxMjcsIDUwLCAyNCwgCisgICAgMTAwLCAyMzQsIDU4LCAyNCwgMTAwLCAyMTgsIDIxNSwgMjQsIDEwMCwgMjI4LCAyMjYsIDI0LCAxMDAsIDIxNiwgMTAxLCAKKyAgICAyNCwgMTAwLCAyMTgsIDIwNCwgMjQsIDEwMCwgMjIzLCAyNiwgMjQsIDEwMCwgMjMwLCAyMTcsIDI0LCAxMDAsIDIyNSwgOTUsIAorICAgIDI0LCAxMDAsIDIxOCwgMjEyLCAyNCwgMTAwLCAyMTksIDE0OCwgMjQsIDEwMCwgMjE4LCAyMDksIDI0LCAxMDAsIDIzNiwgCisgICAgNTYsIDI0LCAxMDAsIDI1MCwgNDYsIDI0LCAxMDAsIDIxOCwgMjE5LCAyNCwgMTAwLCAyNTAsIDEwNiwgMjQsIDEwMCwgMjM0LCAKKyAgICAxMTAsIDI0LCAxMDAsIDIxNiwgMTczLCAyNCwgMTAwLCAyMjUsIDEzMSwgMjQsIDEwMCwgMjQxLCAxNzIsIDI0LCAxMDAsIAorICAgIDIyOCwgMjIyLCAyNCwgMTAwLCAyMTgsIDIxMywgMjQsIDEwMCwgMjI4LCAyMTYsIDI0LCAxMDAsIDIyOCwgMjIwLCAyNCwgCisgICAgMTAwLCAyMTYsIDk4LCAyNCwgMTAwLCAyMjMsIDE0LCAyNCwgMTAwLCAyMTgsIDIxMSwgMjQsIDEwMCwgMjIzLCAyNCwgMjQsIAorICAgIDEwMCwgMjM0LCAyMTgsIDI0LCAxMDAsIDIzMCwgMjEwLCAyNCwgMTAwLCAyMzQsIDIyMSwgMjQsIDEwMCwgMjI1LCA5MCwgCisgICAgMjQsIDEwMCwgMjI1LCA4OCwgMjQsIDEwMCwgMjI1LCA3NiwgMjQsIDEwMCwgMjI1LCA4NCwgMjQsIDEwMCwgMjI1LCA4MiwgCisgICAgMjQsIDEwMCwgMjI1LCA3OSwgMjQsIDEwMCwgMjI1LCA4MSwgMjQsIDEwMCwgMjI1LCA3OCwgMjQsIDEwMCwgMjI1LCA4MywgCisgICAgMjQsIDEwMCwgMjI1LCA5MywgMjQsIDEwMCwgMjI1LCA5NCwgMjQsIDEwMCwgMjI1LCA3NywgMjQsIDEwMCwgMjI1LCA4NywgCisgICAgMjQsIDEwMCwgMjM0LCAyMTksIDI0LCAxMDAsIDIzNCwgMjE3LCAyNCwgMTAwLCAyMTksIDE0MSwgMjQsIDEwMCwgMjE5LCAKKyAgICAxMzksIDI0LCAxMDAsIDIxOSwgMTMxLCAyNCwgMTAwLCAyMTksIDEzNCwgMjQsIDEwMCwgMjE5LCAxNDAsIDI0LCAxMDAsIAorICAgIDIxOSwgMTM2LCAyNCwgMTAwLCAyMTksIDEzNSwgMjQsIDEwMCwgMjE5LCAxMzMsIDI0LCAxMDAsIDIxOSwgMTQ0LCAyNCwgCisgICAgMTAwLCAyMTksIDE0NiwgMjQsIDEwMCwgMjE5LCAxNDcsIDI0LCAxMDAsIDIxOSwgMTQyLCAyNCwgMTAwLCAyMTksIDEzMiwgCisgICAgMjQsIDEwMCwgMjE5LCAxMzcsIDI0LCAxMDAsIDIxOSwgMTQ1LCAyNCwgMTAwLCAyNTAsIDkwLCAyNCwgMTAwLCAyNTAsIDg4LCAKKyAgICAyNCwgMTAwLCAyNTAsIDE2OCwgMjQsIDEwMCwgMjUwLCAxNjYsIDI0LCAxMDAsIDIyNiwgMzIsIDI0LCAxMDAsIDIzNiwgNTEsIAorICAgIDI0LCAxMDAsIDIzNiwgNDIsIDI0LCAxMDAsIDIzNiwgNTAsIDI0LCAxMDAsIDIzNiwgNDcsIDI0LCAxMDAsIDIzNiwgNDUsIAorICAgIDI0LCAxMDAsIDIzNiwgNDksIDI0LCAxMDAsIDIxOCwgMjE2LCAyNCwgMTAwLCAyMzYsIDU0LCAyNCwgMTAwLCAyMzYsIDU1LCAKKyAgICAyNCwgMTAwLCAyMzYsIDQzLCAyNCwgMTAwLCAyMzYsIDQ4LCAyNCwgMTAwLCAyMTEsIDI2LCAyNCwgMTAwLCAyNTAsIDQ1LCAKKyAgICAyNCwgMTAwLCAyNTAsIDkxLCAyNCwgMTAwLCAyNTAsIDg5LCAyNCwgMTAwLCAyNTAsIDE2OSwgMjQsIDEwMCwgMjUwLCAxNjcsIAorICAgIDI0LCAxMDAsIDI1MCwgMTA0LCAyNCwgMTAwLCAyNTAsIDEwNSwgMjQsIDEwMCwgMjUwLCA5MiwgMjQsIDEwMCwgMjUwLCAKKyAgICAxNzAsIDI0LCAxMDAsIDIyNSwgMTI5LCAyNCwgMTAwLCAyMzQsIDIyMCwgMjQsIDEwMCwgMjE4LCAyMTcsIDI0LCAxMDAsIAorICAgIDIxMSwgMzIsIDI0LCAxMDAsIDIzNCwgNDksIDI0LCAxMDAsIDIyOCwgMjE4LCAyNCwgMTAwLCAyMjgsIDIyNCwgMjQsIDEwMCwgCisgICAgMjI4LCAyMjMsIDI0LCAxMDAsIDIxNiwgOTUsIDI0LCAxMDAsIDI0NCwgMTAzLCAyNCwgMTQzLCAyNDQsIDEwMywgMjQsIAorICAgIDE0MywgNjEsIDI0LCAxNDMsIDI1NCwgMjQzLCAyNCwgMTQzLCAxOTEsIDI0LCAxNDMsIDIxMSwgOTIsIDI0LCAxNDMsIDI0NSwgCisgICAgMTE3LCAyNCwgMTQzLCA3NSwgMjQsIDE0MywgMjExLCAzNiwgMjQsIDE0MywgMjExLCA0NywgMjQsIDE0MywgNzYsIDI0LCAKKyAgICAxNDMsIDIxMiwgNjUsIDI0LCAxNDMsIDIxMiwgNjIsIDI0LCAxNDMsIDIyNiwgMjM0LCAyNCwgMTQzLCAyMTAsIDI0NCwgMjQsIAorICAgIDE0MywgNzAsIDI0LCAxNDMsIDIxMiwgMTEsIDI0LCAxNDMsIDIxMiwgMjIsIDI0LCAxNDMsIDIxMSwgMjUwLCAyNCwgMTQzLCAKKyAgICAyMTAsIDIxMiwgMjQsIDE0MywgMjQ1LCA1NSwgMjQsIDE0MywgMjExLCA4LCAyNCwgMTQzLCA3MywgMjQsIDE0MywgMjU1LCAKKyAgICAxNTcsIDI0LCAxNDMsIDI1NSwgMTU2LCAyNCwgMTQzLCAyMTEsIDEwNiwgMjQsIDE0MywgMjExLCAxMDQsIDI0LCAxNDMsIAorICAgIDI0NSwgMTE1LCAyNCwgMTQzLCAyNDUsIDExNCwgMjQsIDE0MywgMjQ1LCAxMTYsIDI0LCAxNDMsIDIxMSwgMzUsIDI0LCAKKyAgICAxNDMsIDIxMSwgMzQsIDI0LCAxNDMsIDIyNywgODQsIDI0LCAxNDMsIDIyNywgODUsIDI0LCAxNDMsIDIyNywgNzgsIDI0LCAKKyAgICAxNDMsIDIyNywgODMsIDI0LCAxNDMsIDIyNywgODEsIDI0LCAxNDMsIDIxMCwgMjM4LCAyNCwgMTQzLCAyMTAsIDIzNywgMjQsIAorICAgIDE0MywgMjEwLCAyMzYsIDI0LCAxNDMsIDIxMCwgMjM5LCAyNCwgMTQzLCAyMTAsIDI0MCwgMjQsIDE0MywgMjE1LCAzMCwgCisgICAgMjQsIDE0MywgMjE1LCAyOSwgMjQsIDE0MywgMjE1LCAyNywgMjQsIDE0MywgMjE1LCAyNCwgMjQsIDE0MywgMjE1LCAyNSwgCisgICAgMjQsIDE0MywgMjEwLCAyMTEsIDI0LCAxNDMsIDIxMCwgMjA4LCAyNCwgMTQzLCAyMTAsIDIwOSwgMjQsIDE0MywgMjEwLCAKKyAgICAyMDMsIDI0LCAxNDMsIDIxMCwgMjA0LCAyNCwgMTQzLCAyMTAsIDIwNSwgMjQsIDE0MywgMjEwLCAyMDcsIDI0LCAxNDMsIAorICAgIDI0NSwgNDksIDI0LCAxNDMsIDI0NSwgNTEsIDI0LCAxNDMsIDIxMSwgNywgMjQsIDE0MywgMjQwLCAxNTMsIDI0LCAxNDMsIAorICAgIDI0MCwgMTQ1LCAyNCwgMTQzLCAyNDAsIDE0OCwgMjQsIDE0MywgMjQwLCAxNDYsIDI0LCAxNDMsIDI0MCwgMTUwLCAyNCwgCisgICAgMTQzLCAyNDAsIDE1MiwgMjQsIDE0MywgMjU0LCAzNCwgMjQsIDE0MywgMjU0LCAzMSwgMjQsIDE0MywgMjU0LCAyOSwgMjQsIAorICAgIDE0MywgMjU0LCAzMCwgMjQsIDE0MywgMjE4LCAyMjAsIDI0LCAxNDMsIDI1NSwgMTU4LCAyNCwgMTQzLCAyMTEsIDEwNSwgCisgICAgMjQsIDE0MywgMjExLCAzMywgMjQsIDE0MywgMjI3LCA4MCwgMjQsIDE0MywgMjI3LCA3OSwgMjQsIDkwLCAyMzQsIDU4LCAKKyAgICAyNCwgOTAsIDIxOCwgMjE1LCAyNCwgOTAsIDIzNCwgNTEsIDI0LCA5MCwgMjI4LCAyMjYsIDI0LCA5MCwgMjI4LCAyMjQsIAorICAgIDI0LCA5MCwgMjI4LCAyMjMsIDI0LCA5MCwgMjE2LCAxMDEsIDI0LCA5MCwgMjIzLCAyNiwgMjQsIDkwLCAyMjMsIDIxLCAyNCwgCisgICAgOTAsIDIyMywgMTgsIDI0LCA5MCwgMjIzLCAxMSwgMjQsIDkwLCAyMjMsIDYsIDI0LCA5MCwgMjIzLCAxLCAyNCwgOTAsIAorICAgIDIyMywgMTIsIDI0LCA5MCwgMjIzLCAyNCwgMjQsIDkwLCAyMzAsIDIxNywgMjQsIDkwLCAyMjUsIDk1LCAyNCwgOTAsIDIyNSwgCisgICAgODQsIDI0LCA5MCwgMjE5LCAxNDgsIDI0LCA5MCwgMjE4LCAyMDksIDI0LCA5MCwgMjM2LCA1NiwgMjQsIDkwLCAyNTAsIDQ2LCAKKyAgICAyNCwgOTAsIDI1MCwgMTA2LCAyNCwgOTAsIDIzNCwgMTEwLCAyNCwgOTAsIDIxNiwgMTczLCAyNCwgOTAsIDIyNSwgMTMxLCAKKyAgICAyNCwgOTAsIDI0MSwgMTcyLCAyNCwgOTAsIDIzNCwgNTIsIDI0LCA5MCwgMjM0LCA1MCwgMjQsIDkwLCAyMjgsIDIyMiwgMjQsIAorICAgIDkwLCAyMjgsIDIxNiwgMjQsIDkwLCAyMjgsIDIxOCwgMjQsIDkwLCAyMjgsIDIyMSwgMjQsIDkwLCAyMjgsIDIxNywgMjQsIAorICAgIDkwLCAyMTYsIDk4LCAyNCwgOTAsIDIxNiwgOTUsIDI0LCA5MCwgMjIzLCAxOSwgMjQsIDkwLCAyMjMsIDE0LCAyNCwgOTAsIAorICAgIDIyMywgMCwgMjQsIDkwLCAyMjIsIDI1NSwgMjQsIDkwLCAyMTgsIDIxMSwgMjQsIDkwLCAyMjMsIDE2LCAyNCwgOTAsIDIyMywgCisgICAgMTUsIDI0LCA5MCwgMjIzLCA4LCAyNCwgOTAsIDIyMywgMTAsIDI0LCA5MCwgMjIzLCAyMywgMjQsIDkwLCAyMjMsIDMsIDI0LCAKKyAgICA5MCwgMjIzLCAxMywgMjQsIDkwLCAyMjMsIDIyLCAyNCwgOTAsIDIyMiwgMjU0LCAyNCwgOTAsIDIzMCwgMjEzLCAyNCwgOTAsIAorICAgIDIzMCwgMjA4LCAyNCwgOTAsIDIzMCwgMjEwLCAyNCwgOTAsIDIzMCwgMjA3LCAyNCwgOTAsIDIzMCwgMjA1LCAyNCwgOTAsIAorICAgIDIzMCwgMjExLCAyNCwgOTAsIDIzMCwgMjE2LCAyNCwgOTAsIDIzMCwgMjE0LCAyNCwgOTAsIDIzNCwgMjIxLCAyNCwgOTAsIAorICAgIDIyNSwgODYsIDI0LCA5MCwgMjI1LCA4NywgMjQsIDkwLCAyMjUsIDkyLCAyNCwgOTAsIDIzNCwgMjE5LCAyNCwgOTAsIDIxOSwgCisgICAgMTQxLCAyNCwgOTAsIDIxOSwgMTMxLCAyNCwgOTAsIDIxOSwgMTM0LCAyNCwgOTAsIDIxOSwgMTM2LCAyNCwgOTAsIDIyNiwgCisgICAgMzIsIDI0LCA5MCwgMjM2LCA1MSwgMjQsIDkwLCAyMzYsIDQ0LCAyNCwgOTAsIDIxOCwgMjE2LCAyNCwgOTAsIDIzNiwgNTIsIAorICAgIDI0LCA5MCwgMjExLCAyNiwgMjQsIDkwLCAyMTEsIDIyLCAyNCwgOTAsIDIxMSwgMjMsIDI0LCA5MCwgMjI1LCAxMjksIDI0LCAKKyAgICA5MCwgMjM0LCAyMjAsIDI0LCA5MCwgMjQxLCAxNzAsIDI0LCA5MCwgMjQxLCAxNjgsIDI0LCA5MCwgMjQxLCAxNzEsIDI0LCAKKyAgICA5MCwgMjQxLCAxNjksIDI0LCA5MCwgMjExLCAzMiwgMjQsIDkwLCAyMzQsIDU0LCAyNCwgOTAsIDIzNCwgNTMsIDI0LCA5MCwgCisgICAgMjM0LCA1NywgMjQsIDkwLCAyMzQsIDU1LCAyNCwgOTAsIDIzNCwgNTYsIDI0LCA5MCwgMjE4LCAyMTMsIDI5LCAzLCAxNjIsIAorICAgIDI5LCAzLCAyNDAsIDIyMiwgMjksIDMsIDI0MSwgMTgwLCAyOSwgMywgMjQyLCA0NiwgMjksIDMsIDI0MSwgMjIwLCAyOSwgMywgCisgICAgMjQxLCAyMzgsIDI5LCAzLCAyNDEsIDY4LCAyOSwgMywgMjQxLCA2NywgMjksIDMsIDIzMywgMTM1LCAyOSwgMywgMjMyLCAKKyAgICA5OCwgMjksIDMsIDIzMiwgMjQxLCAyOSwgMywgMjMzLCAxMzQsIDI5LCAzLCAyMzMsIDUwLCAyOSwgMywgMjMzLCA1OCwgMjksIAorICAgIDMsIDIzMiwgMTU2LCAyOSwgMywgMjMyLCA3MCwgMjksIDMsIDI0MSwgMTg5LCAyOSwgMywgMjQxLCAxODMsIDI5LCAzLCAKKyAgICAyNDEsIDE4NSwgMjksIDMsIDI0MSwgMTg4LCAyOSwgMywgMjQxLCAxODYsIDI5LCAzLCAyNDEsIDE4NywgMjksIDMsIDI0MSwgCisgICAgMTg0LCAyOSwgMywgMjQxLCAxODIsIDI5LCAzLCAxODQsIDI5LCAzLCAyMzAsIDEwMiwgMjksIDMsIDIzMCwgMjMwLCAyOSwgCisgICAgMywgMjMxLCAyMzcsIDI5LCAzLCAyMzEsIDgwLCAyOSwgMywgMjMxLCA5MSwgMjksIDMsIDIzMCwgMTYxLCAyOSwgMywgMjMwLCAKKyAgICA0MiwgMjksIDMsIDIxNywgMTYzLCAyOSwgMywgMjE3LCAxNTcsIDI5LCAzLCAyMTcsIDE1OSwgMjksIDMsIDIxNywgMTYyLCAKKyAgICAyOSwgMywgMjE3LCAxNjAsIDI5LCAzLCAyMTcsIDE2MSwgMjksIDMsIDIxNywgMTU4LCAyOSwgMywgMjE3LCAxNTYsIDI5LCAKKyAgICAzLCAyMDUsIDI5LCAzLCAyMjIsIDE0MCwgMjksIDMsIDIyMywgMzUsIDI5LCAzLCAyMjMsIDE4NCwgMjksIDMsIDIyMywgCisgICAgMTA4LCAyOSwgMywgMjIzLCAxMjgsIDI5LCAzLCAyMjIsIDIxMSwgMjksIDMsIDIyMiwgMTA5LCAyOSwgMywgMjA2LCAyOSwgCisgICAgMywgMjE4LCA4MywgMjksIDMsIDIxOSwgMTkxLCAyOSwgMywgMjIyLCAzMSwgMjksIDMsIDIyMSwgMTcwLCAyOSwgMywgMjIxLCAKKyAgICAxODEsIDI5LCAzLCAyMTksIDU4LCAyOSwgMywgMjE3LCAyNTMsIDI5LCAzLCAyMjAsIDEwMiwgMjksIDMsIDIxOSwgMjI1LCAKKyAgICAyOSwgMywgMjIwLCAzMiwgMjksIDMsIDIyMCwgOTgsIDI5LCAzLCAyMjAsIDYxLCAyOSwgMywgMjIwLCA2MywgMjksIDMsIAorICAgIDIyMCwgNywgMjksIDMsIDIxOSwgMjA4LCAyOSwgMywgMjI0LCA4OCwgMjksIDMsIDIyNCwgMzAsIDI5LCAzLCAyMjQsIDUzLCAKKyAgICAyOSwgMywgMjI0LCA4NywgMjksIDMsIDIyNCwgNjgsIDI5LCAzLCAyMjQsIDY5LCAyOSwgMywgMjI0LCA0MiwgMjksIDMsIAorICAgIDIyNCwgNDEsIDI5LCAzLCAyMjMsIDI0MiwgMjksIDMsIDIyMywgMjM4LCAyOSwgMywgMjIzLCAyNDEsIDI5LCAzLCAyMjMsIAorICAgIDIzOSwgMjksIDMsIDIyMywgMjQwLCAyOSwgMywgMjI0LCA2NSwgMjksIDMsIDIyNCwgNTksIDI5LCAzLCAyMjQsIDYxLCAyOSwgCisgICAgMywgMjI0LCA2NCwgMjksIDMsIDIyNCwgNjIsIDI5LCAzLCAyMjQsIDYzLCAyOSwgMywgMjI0LCA2MCwgMjksIDMsIDIyNCwgCisgICAgNTgsIDI5LCAzLCAyMjQsIDU0LCAyOSwgMywgMjI0LCA1NywgMjksIDMsIDIyNCwgNTUsIDI5LCAzLCAyMjQsIDU2LCAyOSwgCisgICAgMywgMjUyLCAxOTEsIDI5LCAzLCAyNTEsIDEyNSwgMjksIDMsIDI1MiwgNiwgMjksIDMsIDI1MiwgMTg5LCAyOSwgMywgMjUyLCAKKyAgICA2NiwgMjksIDMsIDI1MiwgNzUsIDI5LCAzLCAyNTEsIDIwNSwgMjksIDMsIDI1MSwgODMsIDI5LCAzLCAyMTQsIDI3LCAyOSwgCisgICAgMywgMjEyLCAxMTYsIDI5LCAzLCAyMTMsIDE3NiwgMjksIDMsIDIxNCwgMjYsIDI5LCAzLCAyMTMsIDI1MCwgMjksIDMsIAorICAgIDIxMywgMjU1LCAyOSwgMywgMjEzLCAxMzgsIDI5LCAzLCAyMTIsIDEwNywgMjksIDMsIDIxNywgMTA1LCAyOSwgMywgMjE1LCAKKyAgICAxMTgsIDI5LCAzLCAyMTYsIDExNywgMjksIDMsIDIxNywgMTAxLCAyOSwgMywgMjE3LCAxMSwgMjksIDMsIDIxNywgMjIsIAorICAgIDI5LCAzLCAxMTEsIDI5LCAzLCAyMTUsIDgwLCAyOSwgMywgMjUxLCAzMywgMjksIDMsIDI0OSwgMTEyLCAyOSwgMywgMjUwLCAKKyAgICA1MSwgMjksIDMsIDI1MSwgMzIsIDI5LCAzLCAyNTAsIDE4MiwgMjksIDMsIDI1MCwgMTkwLCAyOSwgMywgMjQ5LCAyMzgsIAorICAgIDI5LCAzLCAyNDksIDgxLCAyOSwgMywgMjExLCAxNjUsIDI5LCAzLCAyMTEsIDE0MSwgMjksIDMsIDIxMSwgMTU3LCAyOSwgMywgCisgICAgMjExLCAxNjQsIDI5LCAzLCAyMTEsIDE2MSwgMjksIDMsIDIxMSwgMTYyLCAyOSwgMywgMjExLCAxNDgsIDI5LCAzLCAyMTEsIAorICAgIDE0NywgMjksIDMsIDIxMSwgMTM2LCAyOSwgMywgMjExLCAxMzIsIDI5LCAzLCAyMTEsIDEzNSwgMjksIDMsIDIxMSwgMTMzLCAKKyAgICAyOSwgMywgMjExLCAxMzQsIDI5LCAzLCAxOTcsIDI5LCAzLCAyMjcsIDIzNywgMjksIDMsIDIyOCwgMjMzLCAyOSwgMywgCisgICAgMjI5LCAyMjUsIDI5LCAzLCAyMjksIDEwMywgMjksIDMsIDIyOSwgMTA3LCAyOSwgMywgMjI4LCA3NCwgMjksIDMsIDIyNywgCisgICAgMTc0LCAyOSwgMywgMjI3LCAxNjUsIDI5LCAzLCAyMjcsIDEyOCwgMjksIDMsIDIyNywgMTQ4LCAyOSwgMywgMjI3LCAxNjQsIAorICAgIDI5LCAzLCAyMjcsIDE1NSwgMjksIDMsIDIyNywgMTU2LCAyOSwgMywgMjI3LCAxMzQsIDI5LCAzLCAyMjcsIDExOSwgMjksIAorICAgIDMsIDI0MiwgMTgwLCA2MSwgMjksIDMsIDI0MiwgMTgwLCA3MCwgMjksIDMsIDI0MiwgMTgwLCA3MywgMjksIDMsIDI0MiwgCisgICAgMTgwLCAyNTUsIDczLCAyOSwgMywgMjQyLCAxODAsIDI0NSwgMjA5LCAyOSwgMywgMjQyLCAxODAsIDc1LCAyOSwgMywgMjQyLCAKKyAgICAxODAsIDc2LCAyOSwgMywgMjQyLCAxODAsIDIxMiwgNjUsIDI5LCAzLCAxNzYsIDI5LCAzLCAyMzMsIDIxNywgMjksIDMsIAorICAgIDIzNCwgOTIsIDI5LCAzLCAyMzUsIDEwLCAyOSwgMywgMjM0LCAxODEsIDI5LCAzLCAyMzQsIDE4MiwgMjksIDMsIDIzNCwgCisgICAgMjgsIDI5LCAzLCAyMzQsIDI3LCAyOSwgMywgMjMzLCAxODIsIDI5LCAzLCAyMzMsIDE3NiwgMjksIDMsIDIzMywgMTgxLCAKKyAgICAyOSwgMywgMjMzLCAxNzcsIDI5LCAzLCAyMzMsIDE3OCwgMjksIDMsIDIzMywgMTcxLCAyOSwgMywgMjMzLCAxNjUsIDI5LCAKKyAgICAzLCAyMzMsIDE2NywgMjksIDMsIDIzMywgMTcwLCAyOSwgMywgMjMzLCAxNjgsIDI5LCAzLCAyMzMsIDE2OSwgMjksIDMsIAorICAgIDIzMywgMTY2LCAyOSwgMywgMjMzLCAxNjQsIDI5LCAzLCAyMzMsIDE2MCwgMjksIDMsIDIzMywgMTYzLCAyOSwgMywgMjMzLCAKKyAgICAxNjEsIDI5LCAzLCAyMzMsIDE2MiwgMjksIDMsIDIxMiwgNjUsIDI5LCAzLCAyMTEsIDE5NSwgMjksIDMsIDIxMSwgMjUwLCAKKyAgICAyOSwgMywgMjEyLCA2NCwgMjksIDMsIDIxMiwgMTcsIDI5LCAzLCAyMTIsIDIyLCAyOSwgMywgMjExLCAyMjcsIDI5LCAzLCAKKyAgICAyMTEsIDIyNiwgMjksIDMsIDIyNSwgMTM5LCA2MSwgMjksIDMsIDIyNSwgMTM5LCA3MCwgMjksIDMsIDIyNSwgMTM5LCA3MywgCisgICAgMjksIDMsIDIyNSwgMTM5LCAyNTUsIDczLCAyOSwgMywgMjI1LCAxMzksIDI0NSwgMjA5LCAyOSwgMywgMjI1LCAxMzksIDc1LCAKKyAgICAyOSwgMywgMjI1LCAxMzksIDc2LCAyOSwgMywgMjEwLCAxMTYsIDI5LCAzLCAyMTAsIDEzLCAyOSwgMywgMjEwLCA0NCwgMjksIAorICAgIDMsIDIxMCwgMTE1LCAyOSwgMywgMjEwLCA5MiwgMjksIDMsIDIxMCwgOTQsIDI5LCAzLCAyMTAsIDIzLCAyOSwgMywgMjEwLCAKKyAgICAwLCAyOSwgMywgMjEwLCA4MiwgMjksIDMsIDIxMCwgNjIsIDI5LCAzLCAyMTAsIDY5LCAyOSwgMywgMjEwLCA4MSwgMjksIDMsIAorICAgIDIxMCwgNzMsIDI5LCAzLCAyMTAsIDc0LCAyOSwgMywgMjEwLCA2NywgMjksIDMsIDIxMCwgNTMsIDI5LCAzLCAxOTEsIDI5LCAKKyAgICAzLCAyMTAsIDIxMiwgMjksIDMsIDIxMSwgOCwgMjksIDMsIDIxMSwgMTAzLCAyOSwgMywgMjExLCA0NCwgMjksIDMsIDIxMSwgCisgICAgNDcsIDI5LCAzLCAyMTAsIDI0NCwgMjksIDMsIDIxMCwgMjM1LCAyOSwgMywgMjQ4LCAyMjEsIDI5LCAzLCAyNDYsIDc4LCAKKyAgICAyOSwgMywgMjQ4LCAzLCAyOSwgMywgMjQ4LCAyMjAsIDI5LCAzLCAyNDgsIDc3LCAyOSwgMywgMjQ4LCA5MCwgMjksIDMsIAorICAgIDI0NywgMTQ1LCAyOSwgMywgMjQ2LCA0NywgMjksIDMsIDI0OCwgMTM1LCAyOSwgMywgMjQ4LCAxMDAsIDI5LCAzLCAyNDgsIAorICAgIDExMiwgMjksIDMsIDI0OCwgMTM0LCAyOSwgMywgMjQ4LCAxMjIsIDI5LCAzLCAyNDgsIDEyMywgMjksIDMsIDI0OCwgMTA1LCAKKyAgICAyOSwgMywgMjQ4LCA5MSwgMjksIDMsIDIzNSwgMTQxLCAyOSwgMywgMjM1LCA1MSwgMjksIDMsIDIzNSwgMTA4LCAyOSwgMywgCisgICAgMjM1LCAxNDAsIDI5LCAzLCAyMzUsIDEyNCwgMjksIDMsIDIzNSwgMTI2LCAyOSwgMywgMjM1LCA2OCwgMjksIDMsIDIzNSwgCisgICAgMzEsIDI5LCAzLCAyNDMsIDEzNSwgMjksIDMsIDI0MiwgMTEzLCAyOSwgMywgMjQyLCAyMTQsIDI5LCAzLCAyNDMsIDEzMiwgCisgICAgMjksIDMsIDI0MywgNTUsIDI5LCAzLCAyNDMsIDYyLCAyOSwgMywgMjQyLCAxNzQsIDI5LCAzLCAyNDIsIDE3MywgMjksIDMsIAorICAgIDI0MiwgNzgsIDI5LCAzLCAyNDIsIDc0LCAyOSwgMywgMjQyLCA3NywgMjksIDMsIDI0MiwgNzUsIDI5LCAzLCAyNDIsIDc2LCAKKyAgICAyOSwgMywgMjQzLCAyOSwgMjksIDMsIDI0MywgOSwgMjksIDMsIDI0MywgMTksIDI5LCAzLCAyNDMsIDI4LCAyOSwgMywgCisgICAgMjQzLCAyMywgMjksIDMsIDI0MywgMjQsIDI5LCAzLCAyNDMsIDEzLCAyOSwgMywgMjQyLCAyNTQsIDI5LCAzLCAyMTYsIAorICAgIDIwOCwgMjksIDMsIDIxNiwgMTM2LCAyOSwgMywgMjE2LCAxNzUsIDI5LCAzLCAyMTYsIDIwNywgMjksIDMsIDIxNiwgMTk0LCAKKyAgICAyOSwgMywgMjE2LCAxOTUsIDI5LCAzLCAyMTYsIDE1NiwgMjksIDMsIDIxNiwgMTI4LCAyOSwgMywgMjUwLCAxNTcsIDI5LCAKKyAgICAzLCAyNTAsIDY5LCAyOSwgMywgMjUwLCAxMTAsIDI5LCAzLCAyNTAsIDE1NiwgMjksIDMsIDI1MCwgMTI4LCAyOSwgMywgCisgICAgMjUwLCAxMzEsIDI5LCAzLCAyNTAsIDg2LCAyOSwgMywgMjUwLCA1OCwgMjksIDMsIDIyNSwgMTQ3LCAyOSwgMywgMjI1LCAKKyAgICAxMTQsIDI5LCAzLCAyMjUsIDEzMywgMjksIDMsIDIyNSwgMTQ2LCAyOSwgMywgMjI1LCAxMzUsIDI5LCAzLCAyMjUsIDEzNiwgCisgICAgMjksIDMsIDIyNSwgMTIxLCAyOSwgMywgMjI1LCAxMTAsIDI5LCAzLCAyMTUsIDE4MywgMjksIDMsIDIxNSwgMTYzLCAyOSwgCisgICAgMywgMjE1LCAxNjcsIDI5LCAzLCAyMTUsIDE4MiwgMjksIDMsIDIxNSwgMTc3LCAyOSwgMywgMjE1LCAxNzgsIDI5LCAzLCAKKyAgICAyMTUsIDE2NiwgMjksIDMsIDIxNSwgMTYxLCAyOSwgMywgMjE1LCAzOSwgMjksIDMsIDIxNSwgMzEsIDI5LCAzLCAyMTUsIAorICAgIDM1LCAyOSwgMywgMjE1LCAzOCwgMjksIDMsIDIxNSwgMzYsIDI5LCAzLCAyMTUsIDM3LCAyOSwgMywgMjE1LCAzMywgMjksIAorICAgIDMsIDIxNSwgMzIsIDI5LCAzLCAyNDQsIDE5NiwgMjksIDMsIDI0MywgMjM0LCAyOSwgMywgMjQ0LCAxMjEsIDI5LCAzLCAKKyAgICAyNDQsIDE5NSwgMjksIDMsIDI0NCwgMTQ3LCAyOSwgMywgMjQ0LCAxNTQsIDI5LCAzLCAyNDQsIDQzLCAyOSwgMywgMjQzLCAKKyAgICAyMTMsIDI5LCAzLCAxOTAsIDI5LCAzLCAyMjQsIDE1MCwgMjksIDMsIDIyNSwgMTA4LCAyOSwgMywgMjI2LCA4OSwgMjksIDMsIAorICAgIDIyNSwgMjExLCAyOSwgMywgMjI1LCAyMjEsIDI5LCAzLCAyMjUsIDE2LCAyOSwgMywgMjI0LCAxMTQsIDI5LCAzLCAyMjIsIAorICAgIDk5LCAyOSwgMywgMjMwLCAzMSwgMjksIDMsIDI0MywgMjA3LCAyOSwgMzgsIDI0MywgNTMsIDIyLCAyNSwgMjMzLCAyMywgCisgICAgNzgsIDI5LCAzOCwgMjUsIDIzMywgMjMsIDc4LCAyOSwgMzgsIDI0MywgNTMsIDc4LCAyOSwgMjIxLCAxNzMsIDc4LCAyOSwgCisgICAgMjExLCAyMDgsIDI5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDI5LCAyNDksIDIxOSwgMjksIDIyMCwgMTUwLCAyOSwgMjQ5LCAKKyAgICAyMjYsIDI5LCAyMjQsIDE5OSwgMjQ5LCAyMjYsIDI5LCAyMjQsIDEzLCA3OCwgMjksIDIyNiwgMTUsIDIyMCwgMTM3LCAyOSwgCisgICAgMjEsIDExMCwgMjksIDIxLCAxMDUsIDI5LCAyMSwgMTU4LCAyOSwgMjEsIDE2MSwgMjksIDIxLCAxODksIDI5LCAyMSwgMTk0LCAKKyAgICAyOSwgMjEsIDE5OCwgMjksIDIxLCAxOTUsIDI5LCAyMSwgMjAwLCAyOSwgNTQsIDIxNiwgMjQ3LCAyOSwgNTQsIDIxNSwgNzMsIAorICAgIDI5LCA1NCwgMjE2LCAxNjIsIDI5LCA1NCwgMjQ0LCAxNSwgMjksIDU0LCAyNDQsIDExNCwgMjksIDU0LCAyMTksIDExMSwgCisgICAgMjksIDU0LCAyMjAsIDExNiwgMjksIDU0LCAyNDUsIDE4NCwgMjksIDU0LCAyMjgsIDE5NSwgMjksIDU0LCAyNDAsIDIxMCwgCisgICAgMjksIDU0LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDI5LCAzLCAyMjEsIDE3NywgMjMwLCA0MiwgMjksIDMsIDIzMCwgMzgsIDI5LCAKKyAgICAzLCAyMzAsIDM5LCAyOSwgMywgMjMwLCA0MCwgMjksIDMsIDIyMSwgMTc3LCAyNTEsIDgzLCAyOSwgMywgMjUxLCA4MCwgMjksIAorICAgIDMsIDI1MSwgODEsIDI5LCAzLCAyNTEsIDgyLCAyOSwgMywgMjIxLCAxNzcsIDI0MywgMjEzLCAyOSwgMywgMjQzLCAyMDksIAorICAgIDI5LCAzLCAyNDMsIDIxMCwgMjksIDMsIDI0MywgMjExLCAyOSwgMywgMjIxLCAxNzcsIDIyNCwgMTE0LCAyOSwgMywgMjI0LCAKKyAgICAxMTAsIDI5LCAzLCAyMjQsIDExMSwgMjksIDMsIDIyNCwgMTEyLCAyOSwgMjE2LCAzMSwgMTY0LCAyMTAsIDI0NywgMjksIAorICAgIDIxNiwgMzEsIDE2NCwgMjQ4LCA0MSwgMjksIDIxNiwgMzEsIDE2NCwgMjIyLCAyMzgsIDI5LCAyMTYsIDMxLCAxNjQsIDIxOSwgCisgICAgMjUxLCAyMjIsIDIzOCwgMjksIDIxNiwgMzEsIDE2NCwgMjQ3LCAyMzUsIDI5LCAyMTYsIDMxLCAxNjQsIDIzNCwgMTY0LCAKKyAgICAyOSwgMjE2LCAzMSwgMTY0LCAyNTAsIDk0LCAyOSwgMjE2LCAzMSwgMTY0LCAyNDEsIDE3NywgMjksIDIxNiwgMzEsIDE2NCwgCisgICAgMjQ4LCA0MCwgMjksIDIxNiwgMzEsIDE2NCwgMjMzLCAxOTQsIDE2OSwgMSwgNjEsIDE2OSwgMSwgNzUsIDE2OSwgMSwgNzMsIAorICAgIDE2OSwgMSwgNzYsIDE2OSwgMSwgNzAsIDE2OSwgMSwgMjE0LCAxMDUsIDE2OSwgMSwgMjQzLCAxMzUsIDE2OSwgMSwgMTc2LCAKKyAgICAxNjksIDEsIDI0MywgNjIsIDE2OSwgMSwgMjQyLCAyMTQsIDE2OSwgMSwgMjQyLCAxNzQsIDE2OSwgMSwgMjQyLCAxMTMsIAorICAgIDE2OSwgMSwgMjQyLCA3OSwgMTY5LCAxLCAxNjIsIDE2OSwgMSwgMjQxLCAyMzgsIDE2OSwgMSwgMjQxLCAxODAsIDE2OSwgMSwgCisgICAgMjQxLCA2OCwgMTY5LCAxLCAyNDAsIDIyMiwgMTY5LCAxLCAyNDAsIDIwMSwgMTY5LCAxLCAyMzMsIDEzNSwgMTY5LCAxLCAKKyAgICAyMzMsIDU4LCAxNjksIDEsIDIzMiwgMjQxLCAxNjksIDEsIDIzMiwgMTU2LCAxNjksIDEsIDIzMiwgOTgsIDE2OSwgMSwgCisgICAgMjMyLCA3MSwgMTY5LCAxLCAxODQsIDE2OSwgMSwgMjMxLCA5MSwgMTY5LCAxLCAyMzAsIDIzMCwgMTY5LCAxLCAyMzAsIAorICAgIDE2MSwgMTY5LCAxLCAyMzAsIDEwMiwgMTY5LCAxLCAxOTcsIDE2OSwgMSwgMjQxLCA5MCwgMTY5LCAxLCAyMjksIDIxMywgCisgICAgMTY5LCAxLCAyMjksIDEwNywgMTY5LCAxLCAyMjgsIDIzMywgMTY5LCAxLCAyMjgsIDc0LCAxNjksIDEsIDIyNywgMjM3LCAKKyAgICAxNjksIDEsIDIyNywgMTc2LCAxNjksIDEsIDIyNCwgMjksIDE2OSwgMSwgMjI0LCAxNiwgMTY5LCAxLCAyMjQsIDksIDE2OSwgCisgICAgMSwgMjI0LCAxLCAxNjksIDEsIDIyMywgMjQ2LCAxNjksIDEsIDIyMywgMjQ0LCAxNjksIDEsIDIwNiwgMTY5LCAxLCAyMjIsIAorICAgIDkxLCAxNjksIDEsIDIyMSwgMTgxLCAxNjksIDEsIDIxOSwgMTkxLCAxNjksIDEsIDIxOSwgNTgsIDE2OSwgMSwgMjE4LCA4MywgCisgICAgMTY5LCAxLCAyMTgsIDIsIDE2OSwgMSwgMjQ4LCAyMjEsIDE2OSwgMSwgMjE3LCAxMDUsIDE2OSwgMSwgMjQ4LCA5MCwgMTY5LCAKKyAgICAxLCAyMTcsIDIyLCAxNjksIDEsIDI0OCwgMywgMTY5LCAxLCAyMTYsIDExNywgMTY5LCAxLCAyNDcsIDE0NSwgMTY5LCAxLCAKKyAgICAyNDYsIDc4LCAxNjksIDEsIDI0NiwgNTAsIDE2OSwgMSwgMjQ3LCAxNTYsIDE2OSwgMSwgMjE2LCA1OSwgMTY5LCAxLCAyMTYsIAorICAgIDU4LCAxNjksIDEsIDIxNiwgNDcsIDE2OSwgMSwgMjE2LCA0NiwgMTY5LCAxLCAyMTYsIDQ1LCAxNjksIDEsIDIxNiwgNDQsIAorICAgIDE2OSwgMSwgMjE1LCAxODMsIDE2OSwgMSwgMjE1LCAxNzgsIDE2OSwgMSwgMjE1LCAxNjcsIDE2OSwgMSwgMjE1LCAxNjYsIAorICAgIDE2OSwgMSwgMjE1LCAxNjMsIDE2OSwgMSwgMjE1LCAxNjIsIDE2OSwgMSwgMjEyLCA2NSwgMTY5LCAxLCAyMTIsIDIyLCAKKyAgICAxNjksIDEsIDIxMSwgMjUwLCAxNjksIDEsIDIxMSwgMjI3LCAxNjksIDEsIDIxMSwgMTk1LCAxNjksIDEsIDIxMSwgMTgzLCAKKyAgICAxNjksIDEsIDE5MSwgMTY5LCAxLCAyMTEsIDQ3LCAxNjksIDEsIDIxMSwgOCwgMTY5LCAxLCAyMTAsIDI0NCwgMTY5LCAxLCAKKyAgICAyMTAsIDIxMiwgMTY5LCAxLCAyMTAsIDE3NywgMTgsIDE5LCAyNDAsIDE2OCwgMTgsIDE5LCA3NSwgMTgsIDE5LCAyNTUsIAorICAgIDM3LCAxOCwgMTksIDczLCAxOCwgMTksIDIzNiwgMzMsIDE4LCAxOSwgNzYsIDE4LCAxOSwgMjI2LCAxODMsIDE4LCAxOSwgCisgICAgMjExLCAxMTYsIDIyNiwgMTgzLCAxOCwgMTksIDcyLCAyNDUsIDIwOSwgMTgsIDE5LCA3MiwgNzMsIDE4LCAxOSwgNjEsIDE4LCAKKyAgICAxOSwgMjU1LCA3MywgMTgsIDE5LCAyMTIsIDIyLCAxOCwgMTksIDE1OSwgMjEyLCAyMiwgMTgsIDE5LCAyMTEsIDI1MCwgMTgsIAorICAgIDE5LCAxNTksIDIxMSwgMjUwLCAxOCwgMTksIDIxMSwgMjQyLCAxOCwgMTksIDE1OSwgMjExLCAyNDIsIDE4LCAxOSwgMjExLCAKKyAgICAyMjcsIDE4LCAxOSwgMTU5LCAyMTEsIDIyNywgMTgsIDE5LCAyMTEsIDIxNSwgMTgsIDE5LCAxNTksIDIxMSwgMjE1LCAxOCwgCisgICAgMTksIDIyOSwgMTkwLCAyMTEsIDIxNSwgMTgsIDE5LCAyMTIsIDY1LCAxOCwgMTksIDE1OSwgMjEyLCA2NSwgMTgsIDE5LCAKKyAgICAyMTIsIDY0LCAxOCwgMTksIDE1OSwgMjEyLCA2NCwgMTgsIDE5LCAyMjksIDE5MCwgMjEyLCA2NCwgMTgsIDE5LCAyNTQsIAorICAgIDIwMSwgMTgsIDE5LCAyMTEsIDExNiwgMjEyLCA5OCwgMTgsIDE5LCAyNDIsIDE4MCwgMjE4LCAxMjksIDE4LCAxOSwgNDAsIAorICAgIDE0MiwgMTgsIDE5LCA0MCwgMjQyLCAxMzYsIDE4LCAxOSwgNDAsIDI1MSwgMTc1LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIAorICAgIDQwLCAyMTYsIDE0LCAxNjMsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCA0NCwgMTYzLCAyMjIsIDIzMywgMTgsIDE5LCA0MCwgCisgICAgMjIyLCAyMzMsIDE4LCAxOSwgNDAsIDUyLCAxNDIsIDE4LCAxOSwgNDAsIDUyLCAyMTksIDI1MSwgNjcsIDIxOCwgOTAsIDE4LCAKKyAgICAxOSwgNDAsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMTgsIDE5LCA0MCwgMjE5LCAyNTEsIDIwMywgOTEsIDE4LCAxOSwgNDAsIAorICAgIDIyNSwgMjIsIDE4LCAxOSwgNDAsIDEyNCwgMjE3LCA4NywgMTgsIDE5LCAyNDUsIDE1MCwgMTgsIDE5LCAyMzUsIDI1NSwgCisgICAgMTgsIDE5LCAyMjYsIDE5NiwgMTgsIDE5LCAyNTQsIDEyMywgMTgsIDE5LCAyMjUsIDIyMSwgMTgsIDE5LCAyMjYsIDg3LCAKKyAgICAxOCwgMTksIDIyNSwgMTA4LCAxOCwgMTksIDIyNSwgNzEsIDE4LCAxOSwgMjI1LCAxNiwgMTgsIDE5LCAyMjQsIDI0OSwgMTgsIAorICAgIDE5LCAyMTEsIDExNiwgMjI0LCAyNDksIDE4LCAxOSwgNzIsIDI0MSwgMjIwLCAxOCwgMTksIDcyLCAyNDEsIDE4MCwgMTgsIAorICAgIDE5LCAxOTAsIDE4LCAxOSwgMjI2LCA4OSwgMTgsIDE5LCAyMjQsIDExMiwgMTgsIDE5LCAxNTksIDIyNCwgMTEyLCAxOCwgCisgICAgMTksIDIyNCwgMTEwLCAxOCwgMTksIDE1OSwgMjI0LCAxMTAsIDE4LCAxOSwgMjI0LCAxMDksIDE4LCAxOSwgMTU5LCAyMjQsIAorICAgIDEwOSwgMTgsIDE5LCAyMjQsIDEwNywgMTgsIDE5LCAxNTksIDIyNCwgMTA3LCAxOCwgMTksIDIyNCwgMTA2LCAxOCwgMTksIAorICAgIDE1OSwgMjI0LCAxMDYsIDE4LCAxOSwgMjI0LCAxMTQsIDE4LCAxOSwgMTU5LCAyMjQsIDExNCwgMTgsIDE5LCAyMjQsIDExMywgCisgICAgMTgsIDE5LCAxNTksIDIyNCwgMTEzLCAxOCwgMTksIDIxMSwgMTE2LCAyMjQsIDExMywgMTgsIDE5LCAyMjYsIDEwNSwgMTgsIAorICAgIDE5LCAxNTksIDIyNiwgMTA1LCAxOCwgMTksIDcyLCAyNDIsIDYwLCAxOCwgMTksIDIxNywgMjIsIDE4LCAxOSwgMjE3LCA5OSwgCisgICAgMTgsIDE5LCAyMTYsIDExNywgMTgsIDE5LCAyMTYsIDEwMywgMTgsIDE5LCAxMTEsIDE4LCAxOSwgMjE2LCAxNywgMTgsIDE5LCAKKyAgICAyMTEsIDExNiwgMjE2LCAxNywgMTgsIDE5LCA3MiwgMjQ4LCA3NywgMTgsIDE5LCA3MiwgMjQ4LCAzLCAxOCwgMTksIDIxNywgCisgICAgMTA1LCAxOCwgMTksIDIxNywgMTAxLCAxOCwgMTksIDIxNSwgNzgsIDE4LCAxOSwgMTU5LCAyMTUsIDc4LCAxOCwgMTksIAorICAgIDIxNSwgNjIsIDE4LCAxOSwgMTU5LCAyMTUsIDYyLCAxOCwgMTksIDIxNSwgNjEsIDE4LCAxOSwgMTU5LCAyMTUsIDYxLCAxOCwgCisgICAgMTksIDEwNSwgMTgsIDE5LCAxNTksIDEwNSwgMTgsIDE5LCAyMTUsIDU0LCAxOCwgMTksIDE1OSwgMjE1LCA1NCwgMTgsIDE5LCAKKyAgICAyMTUsIDgwLCAxOCwgMTksIDE1OSwgMjE1LCA4MCwgMTgsIDE5LCAyMTUsIDc5LCAxOCwgMTksIDE1OSwgMjE1LCA3OSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjE1LCA3OSwgMTgsIDE5LCAyMTcsIDE1MiwgMTgsIDE5LCAyMTUsIDE1MSwgMTgsIDE5LCAyMTUsIAorICAgIDEzNSwgMTgsIDE5LCAyMTUsIDEzMywgMTgsIDE5LCAyMTUsIDE1NiwgMTgsIDE5LCAyMzQsIDE4MiwgMTgsIDE5LCAyMzUsIAorICAgIDcsIDE4LCAxOSwgMjM0LCA5MiwgMTgsIDE5LCAyMzQsIDgzLCAxOCwgMTksIDIzNCwgMjgsIDE4LCAxOSwgMjM0LCAxMCwgCisgICAgMTgsIDE5LCAyMTEsIDExNiwgMjM0LCAxMCwgMTgsIDE5LCAxNzYsIDE4LCAxOSwgMjM1LCAxMCwgMTgsIDE5LCAyMzMsIAorICAgIDE3OCwgMTgsIDE5LCAxNTksIDIzMywgMTc4LCAxOCwgMTksIDIzMywgMTc2LCAxOCwgMTksIDE1OSwgMjMzLCAxNzYsIDE4LCAKKyAgICAxOSwgMjMzLCAxNzUsIDE4LCAxOSwgMTU5LCAyMzMsIDE3NSwgMTgsIDE5LCAyMzMsIDE3NCwgMTgsIDE5LCAxNTksIDIzMywgCisgICAgMTc0LCAxOCwgMTksIDIzMywgMTczLCAxOCwgMTksIDE1OSwgMjMzLCAxNzMsIDE4LCAxOSwgMjMzLCAxODIsIDE4LCAxOSwgCisgICAgMTU5LCAyMzMsIDE4MiwgMTgsIDE5LCAyMzMsIDE4MSwgMTgsIDE5LCAxNTksIDIzMywgMTgxLCAxOCwgMTksIDIyOSwgMTkwLCAKKyAgICAyMzMsIDE4MSwgMTgsIDE5LCAyMzUsIDIzLCAxOCwgMTksIDIzMywgMTgzLCAxOCwgMTksIDIxOSwgMjcsIDIzNCwgMTc2LCAKKyAgICAxOCwgMTksIDIxOSwgMjcsIDIzNCwgODQsIDE4LCAxOSwgMjE5LCAyNywgMjM0LCAyMywgMTgsIDE5LCAyMTksIDI3LCAyMzQsIAorICAgIDI0OCwgMTgsIDE5LCAyNTAsIDE5MCwgMTgsIDE5LCAyNTEsIDMxLCAxOCwgMTksIDI1MCwgNTEsIDE4LCAxOSwgMjUwLCA0MSwgCisgICAgMTgsIDE5LCAyNDksIDIzOCwgMTgsIDE5LCAyNDksIDE3NCwgMTgsIDE5LCAyMTEsIDExNiwgMjQ5LCAxNzQsIDE4LCAxOSwgCisgICAgMjUxLCAzMywgMTgsIDE5LCAyNTEsIDMyLCAxOCwgMTksIDI0OSwgNzksIDE4LCAxOSwgMTU5LCAyNDksIDc5LCAxOCwgMTksIAorICAgIDI0OSwgNzcsIDE4LCAxOSwgMTU5LCAyNDksIDc3LCAxOCwgMTksIDI0OSwgNzYsIDE4LCAxOSwgMTU5LCAyNDksIDc2LCAxOCwgCisgICAgMTksIDI0OSwgNzUsIDE4LCAxOSwgMTU5LCAyNDksIDc1LCAxOCwgMTksIDI0OSwgNzQsIDE4LCAxOSwgMTU5LCAyNDksIDc0LCAKKyAgICAxOCwgMTksIDI0OSwgODEsIDE4LCAxOSwgMTU5LCAyNDksIDgxLCAxOCwgMTksIDI0OSwgODAsIDE4LCAxOSwgMTU5LCAyNDksIAorICAgIDgwLCAxOCwgMTksIDIyOSwgMTkwLCAyNDksIDgwLCAxOCwgMTksIDI1MSwgNjYsIDE4LCAxOSwgMjIxLCAyMDksIDIxNiwgCisgICAgMjEwLCAxOCwgMTksIDIzMSwgOTEsIDE4LCAxOSwgMjMxLCAyMzYsIDE4LCAxOSwgMjMwLCAyMzAsIDE4LCAxOSwgMjMwLCAKKyAgICAyMDEsIDE4LCAxOSwgMjMwLCAxNjEsIDE4LCAxOSwgMjMwLCAxMzIsIDE4LCAxOSwgMjExLCAxMTYsIDIzMCwgMTMyLCAxOCwgCisgICAgMTksIDE4NCwgMTgsIDE5LCAyMzEsIDIzNywgMTgsIDE5LCAyMzAsIDQwLCAxOCwgMTksIDE1OSwgMjMwLCA0MCwgMTgsIDE5LCAKKyAgICAyMzAsIDM4LCAxOCwgMTksIDE1OSwgMjMwLCAzOCwgMTgsIDE5LCAyMzAsIDM3LCAxOCwgMTksIDE1OSwgMjMwLCAzNywgMTgsIAorICAgIDE5LCAyMzAsIDM2LCAxOCwgMTksIDE1OSwgMjMwLCAzNiwgMTgsIDE5LCAyMzAsIDM1LCAxOCwgMTksIDE1OSwgMjMwLCAzNSwgCisgICAgMTgsIDE5LCAyMzAsIDQyLCAxOCwgMTksIDE1OSwgMjMwLCA0MiwgMTgsIDE5LCAyMzAsIDQxLCAxOCwgMTksIDE1OSwgMjMwLCAKKyAgICA0MSwgMTgsIDE5LCAyMjksIDE5MCwgMjMwLCA0MSwgMTgsIDE5LCAxOTMsIDE4LCAxOSwgMTU5LCAxOTMsIDE4LCAxOSwgCisgICAgMjMwLCAyMzQsIDE4LCAxOSwgMjUzLCAyMDUsIDE5MywgMTgsIDE5LCAyMjEsIDIwOSwgMTkzLCAxOCwgMTksIDIyOSwgMTA3LCAKKyAgICAxOCwgMTksIDIyOSwgMjI0LCAxOCwgMTksIDIyOCwgMjMzLCAxOCwgMTksIDIyOCwgMjA4LCAxOCwgMTksIDIyOCwgNzQsIAorICAgIDE4LCAxOSwgMjI4LCA2NCwgMTgsIDE5LCAyMTEsIDExNiwgMjI4LCA2NCwgMTgsIDE5LCAxOTcsIDE4LCAxOSwgMjI5LCAKKyAgICAyMjUsIDE4LCAxOSwgMjI3LCAxNzIsIDE4LCAxOSwgMTU5LCAyMjcsIDE3MiwgMTgsIDE5LCAyMjcsIDE3NCwgMTgsIDE5LCAKKyAgICAxNTksIDIyNywgMTc0LCAxOCwgMTksIDIyNywgMTczLCAxOCwgMTksIDE1OSwgMjI3LCAxNzMsIDE4LCAxOSwgMjI5LCAxOTAsIAorICAgIDIyNywgMTczLCAxOCwgMTksIDIzMCwgMjUsIDE4LCAxOSwgNzIsIDIyOSwgNzksIDE4LCAxOSwgMjI4LCAyMzgsIDE4LCAxOSwgCisgICAgMjMzLCA1OCwgMTgsIDE5LCAyMzMsIDEzMywgMTgsIDE5LCAyMzIsIDI0MSwgMTgsIDE5LCAyMzIsIDIyNywgMTgsIDE5LCAKKyAgICAyMzIsIDE1NiwgMTgsIDE5LCAyMzIsIDEyNywgMTgsIDE5LCAyMTEsIDExNiwgMjMyLCAxMjcsIDE4LCAxOSwgMjMzLCAxMzUsIAorICAgIDE4LCAxOSwgMjMzLCAxMzQsIDE4LCAxOSwgMjMyLCA2OCwgMTgsIDE5LCAxNTksIDIzMiwgNjgsIDE4LCAxOSwgMjMyLCA2NywgCisgICAgMTgsIDE5LCAxNTksIDIzMiwgNjcsIDE4LCAxOSwgMjMyLCA2NiwgMTgsIDE5LCAxNTksIDIzMiwgNjYsIDE4LCAxOSwgMjMyLCAKKyAgICA2NSwgMTgsIDE5LCAxNTksIDIzMiwgNjUsIDE4LCAxOSwgMjMyLCA2NCwgMTgsIDE5LCAxNTksIDIzMiwgNjQsIDE4LCAxOSwgCisgICAgMjMyLCA3MCwgMTgsIDE5LCAxNTksIDIzMiwgNzAsIDE4LCAxOSwgMjMyLCA2OSwgMTgsIDE5LCAxNTksIDIzMiwgNjksIDE4LCAKKyAgICAxOSwgMTU2LCAxOCwgMTksIDE1OSwgMTU2LCAxOCwgMTksIDE0NywgMTU2LCAxOCwgMTksIDIyMSwgMTgxLCAxOCwgMTksIAorICAgIDIyMiwgMjksIDE4LCAxOSwgMjE5LCAxOTEsIDE4LCAxOSwgMjE5LCAxNzUsIDE4LCAxOSwgMjE5LCA1OCwgMTgsIDE5LCAKKyAgICAyMTksIDQwLCAxOCwgMTksIDIxMSwgMTE2LCAyMTksIDQwLCAxOCwgMTksIDIwNiwgMTgsIDE5LCAyMjIsIDMxLCAxOCwgMTksIAorICAgIDIxNywgMjQ5LCAxOCwgMTksIDE1OSwgMjE3LCAyNDksIDE4LCAxOSwgMjE3LCAyNDMsIDE4LCAxOSwgMTU5LCAyMTcsIDI0MywgCisgICAgMTgsIDE5LCAyMTcsIDI0MiwgMTgsIDE5LCAxNTksIDIxNywgMjQyLCAxOCwgMTksIDIxNywgMjM4LCAxOCwgMTksIDE1OSwgCisgICAgMjE3LCAyMzgsIDE4LCAxOSwgMjE3LCAyMzcsIDE4LCAxOSwgMTU5LCAyMTcsIDIzNywgMTgsIDE5LCAyMTcsIDI1MywgMTgsIAorICAgIDE5LCAxNTksIDIxNywgMjUzLCAxOCwgMTksIDIxNywgMjUyLCAxOCwgMTksIDE1OSwgMjE3LCAyNTIsIDE4LCAxOSwgMjI5LCAKKyAgICAxOTAsIDIxNywgMjUyLCAxOCwgMTksIDIyMiwgOTEsIDE4LCAxOSwgMjUzLCAyMDUsIDIyMiwgOTEsIDE4LCAxOSwgMjE3LCAKKyAgICAyNTQsIDE4LCAxOSwgMjUxLCAyMTgsIDIyMiwgOTEsIDE4LCAxOSwgMjMwLCAxMjcsIDIxOSwgMTA4LCAxOCwgMTksIDIyOSwgCisgICAgMTkwLCAyMTksIDk5LCAxOCwgMTksIDIyOSwgMTkwLCAyMjIsIDg5LCAxOCwgMTksIDIyOSwgMTkwLCAyMTgsIDIzNSwgMTgsIAorICAgIDE5LCAyMjksIDE5MCwgMjE4LCA4NiwgMTgsIDE5LCAyMjksIDE5MCwgMjE5LCA5OCwgMTgsIDE5LCAyMjksIDE5MCwgMjIxLCAKKyAgICAxODQsIDE4LCAxOSwgMjIwLCA2MywgMTgsIDE5LCAyMjAsIDMyLCAxOCwgMTksIDIyMCwgMjcsIDE4LCAxOSwgMjIwLCA3LCAKKyAgICAxOCwgMTksIDIyMCwgMSwgMTgsIDE5LCAyMjAsIDEwMiwgMTgsIDE5LCAyMjAsIDk4LCAxOCwgMTksIDIxOSwgMjA2LCAxOCwgCisgICAgMTksIDE1OSwgMjE5LCAyMDYsIDE4LCAxOSwgMjE5LCAyMDUsIDE4LCAxOSwgMTU5LCAyMTksIDIwNSwgMTgsIDE5LCAyMTksIAorICAgIDIwNCwgMTgsIDE5LCAxNTksIDIxOSwgMjA0LCAxOCwgMTksIDIxOSwgMjAzLCAxOCwgMTksIDE1OSwgMjE5LCAyMDMsIDE4LCAKKyAgICAxOSwgMjE5LCAyMDIsIDE4LCAxOSwgMTU5LCAyMTksIDIwMiwgMTgsIDE5LCAyMTksIDIwOCwgMTgsIDE5LCAxNTksIDIxOSwgCisgICAgMjA4LCAxOCwgMTksIDIxOSwgMjA3LCAxOCwgMTksIDE1OSwgMjE5LCAyMDcsIDE4LCAxOSwgMjIwLCAxMDQsIDE4LCAxOSwgCisgICAgMjExLCA0NywgMTgsIDE5LCAyMTEsIDEwMSwgMTgsIDE5LCAyMTEsIDgsIDE4LCAxOSwgMjEwLCAyNTUsIDE4LCAxOSwgMjEwLCAKKyAgICAyNDQsIDE4LCAxOSwgMjEwLCAyMjksIDE4LCAxOSwgMjExLCAxMTYsIDIxMCwgMjI5LCAxOCwgMTksIDE5MSwgMTgsIDE5LCAKKyAgICAyMTEsIDEwMywgMTgsIDE5LCAyMTAsIDE3NCwgMTgsIDE5LCAxNTksIDIxMCwgMTc0LCAxOCwgMTksIDIxMCwgMTczLCAxOCwgCisgICAgMTksIDE1OSwgMjEwLCAxNzMsIDE4LCAxOSwgMjEwLCAxNzIsIDE4LCAxOSwgMTU5LCAyMTAsIDE3MiwgMTgsIDE5LCAyMTAsIAorICAgIDE3MSwgMTgsIDE5LCAxNTksIDIxMCwgMTcxLCAxOCwgMTksIDIxMCwgMTcwLCAxOCwgMTksIDE1OSwgMjEwLCAxNzAsIDE4LCAKKyAgICAxOSwgMjEwLCAxNzYsIDE4LCAxOSwgMTU5LCAyMTAsIDE3NiwgMTgsIDE5LCAyMTAsIDE3NSwgMTgsIDE5LCAxNTksIDIxMCwgCisgICAgMTc1LCAxOCwgMTksIDIyOSwgMTkwLCAyMTAsIDE3NSwgMTgsIDE5LCAyMTEsIDExNywgMTgsIDE5LCAyNTIsIDQsIDIxMSwgCisgICAgMTE3LCAxOCwgMTksIDE1OSwgMjExLCAxMTcsIDE4LCAxOSwgMjIxLCAyMDksIDIxMSwgOCwgMTgsIDE5LCAyMjMsIDEyOCwgCisgICAgMTgsIDE5LCAyMjMsIDIyMywgMjIzLCAxMjgsIDE4LCAxOSwgMTU5LCAyMzMsIDU4LCAxOCwgMTksIDIyMywgMTgzLCAxOCwgCisgICAgMTksIDIyMywgMzUsIDE4LCAxOSwgMjIyLCAyMzksIDE4LCAxOSwgMjIyLCAyMTEsIDE4LCAxOSwgMjIyLCAxOTcsIDE4LCAKKyAgICAxOSwgMTU5LCAyMzIsIDE1NiwgMTgsIDE5LCAyMDUsIDE4LCAxOSwgMjIzLCAxODQsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNSwgCisgICAgMTgsIDE5LCAyMjIsIDEwOCwgMTgsIDE5LCAxNTksIDIyMiwgMTA4LCAxOCwgMTksIDE1MywgMTgsIDE5LCAxNTksIDE1MywgCisgICAgMTgsIDE5LCAxNDcsIDE1MywgMTgsIDE5LCAyNDQsIDE1NCwgMTgsIDE5LCAyNDQsIDE5MywgMTgsIDE5LCAyNDQsIDEyMSwgCisgICAgMTgsIDE5LCAyNDQsIDEwOCwgMTgsIDE5LCAyNDQsIDQzLCAxOCwgMTksIDI0NCwgMzQsIDE4LCAxOSwgMjQ0LCAxOTYsIDE4LCAKKyAgICAxOSwgMjQ0LCAxOTUsIDE4LCAxOSwgMjQzLCAyMTIsIDE4LCAxOSwgMTU5LCAyNDMsIDIxMiwgMTgsIDE5LCAyNDUsIDYsIAorICAgIDE4LCAxOSwgMjE2LCAxOTUsIDE4LCAxOSwgMjMwLCAyMywgMjE2LCAxOTUsIDE4LCAxOSwgMjE2LCAxNzUsIDE4LCAxOSwgCisgICAgMjMwLCAyMywgMjE2LCAxNzUsIDE4LCAxOSwgMjE2LCAxNzEsIDE4LCAxOSwgMjMwLCAyMywgMjE2LCAxNzEsIDE4LCAxOSwgCisgICAgMjE2LCAxNTYsIDE4LCAxOSwgMjE2LCAxNTMsIDE4LCAxOSwgMjE2LCAyMDgsIDE4LCAxOSwgMjE2LCAyMDcsIDE4LCAxOSwgCisgICAgMjE2LCAxMjcsIDE4LCAxOSwgMTU5LCAyMTYsIDEyNywgMTgsIDE5LCAyMTYsIDIxMCwgMTgsIDE5LCAyMTUsIDE0MiwgMTgsIAorICAgIDE5LCAyMTUsIDE0MCwgMTgsIDE5LCAyMTUsIDEzOSwgMTgsIDE5LCAyMTUsIDE0NCwgMTgsIDE5LCAyMTUsIDE0NSwgMTgsIAorICAgIDE5LCAyMTUsIDUyLCAxOCwgMTksIDIxNSwgNTEsIDE4LCAxOSwgMjE1LCA1MCwgMTgsIDE5LCAyMTUsIDUzLCAxOCwgMTksIAorICAgIDIyNywgMTkzLCAyNDEsIDIzOCwgMTgsIDE5LCAyMjcsIDE5MywgMjQxLCAxODAsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MSwgCisgICAgMTYxLCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDY4LCAxOCwgMTksIDIyNywgMTkzLCAyNDEsIDUzLCAxOCwgMTksIDIyNywgCisgICAgMTkzLCAxNjIsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNDYsIDE4LCAxOSwgMjI3LCAxOTMsIDI0MiwgNjAsIDE4LCAxOSwgCisgICAgMjI3LCAxOTIsIDI0MiwgNjAsIDE4LCAxOSwgMjQxLCAxNTQsIDE4LCAxOSwgMjI0LCA4NCwgMTgsIDE5LCAyMjQsIDUzLCAKKyAgICAxOCwgMTksIDIyNCwgNDgsIDE4LCAxOSwgMjI0LCA0MiwgMTgsIDE5LCAyMjQsIDM3LCAxOCwgMTksIDIyNCwgODgsIDE4LCAKKyAgICAxOSwgMjI0LCA4NywgMTgsIDE5LCAyMjQsIDk2LCAxOCwgMTksIDIxNiwgNTUsIDE4LCAxOSwgMjE2LCA1MywgMTgsIDE5LCAKKyAgICAyMTYsIDUyLCAxOCwgMTksIDIxNiwgNTYsIDE4LCAxOSwgMTU5LCAyMjMsIDEyOCwgMTgsIDE5LCAxNTksIDIyMywgMzUsIAorICAgIDE4LCAxOSwgMTU5LCAyMjIsIDIxMSwgMTgsIDE5LCAxNTksIDIwNSwgMTgsIDE5LCAyMjksIDc1LCAxOCwgMTksIDIyOSwgCisgICAgMjcsIDE4LCAxOSwgMjI5LCAyMywgMTgsIDE5LCAyMjksIDQsIDE4LCAxOSwgMjI4LCAyNTUsIDE4LCAxOSwgMjI5LCA3NywgCisgICAgMTgsIDE5LCAyMjksIDc2LCAxOCwgMTksIDIyOSwgNzksIDE4LCAxOSwgMjI4LCAxMDMsIDE4LCAxOSwgMjIxLCAyMDksIAorICAgIDIyMCwgNjMsIDE4LCAxOSwgMjIxLCAyMDksIDIyMCwgMzIsIDE4LCAxOSwgMjIxLCAyMDksIDIyMCwgNywgMTgsIDE5LCAKKyAgICAyMjEsIDIwOSwgMjIwLCAxMDIsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTk1LCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIAorICAgIDE3NSwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxNTYsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMjA4LCAxOCwgMTksIDIxMSwgCisgICAgMjEzLCAyMTYsIDIxMCwgMTgsIDE5LCAyMzIsIDI0OCwgMTgsIDE5LCAyMzIsIDI0NywgMTgsIDE5LCAyMzIsIDI0NiwgMTgsIAorICAgIDE5LCAyMzIsIDI0NSwgMTgsIDE5LCAyMzIsIDI1NCwgMTgsIDE5LCAyMzIsIDI1MywgMTgsIDE5LCAyMzIsIDI1NSwgMTgsIAorICAgIDE5LCAyMTYsIDIwOSwgMjE2LCAxOTUsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTc1LCAxOCwgMTksIDIxNiwgMjA5LCAKKyAgICAyMTYsIDE3MSwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAxNTYsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgMTUzLCAxOCwgMTksIAorICAgIDIxNiwgMjA5LCAyMTYsIDIwOCwgMTgsIDE5LCAyMTYsIDIwOSwgMjE2LCAyMDcsIDE4LCAxOSwgMjE2LCAyMDksIDIxNiwgCisgICAgMjEwLCAxOCwgMTksIDI1NCwgMTg5LCAyNTMsIDE1OCwgMTgsIDE5LCAyNTEsIDIxOCwgNzUsIDE4LCAxOSwgMjUxLCAyMTgsIAorICAgIDczLCAxOCwgMTksIDI1MSwgMjE4LCA3NiwgMTgsIDE5LCAyNTEsIDIxOCwgNjEsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMiwgCisgICAgMjIsIDE4LCAxOSwgMjUxLCAyMTgsIDIxMSwgMjUwLCAxOCwgMTksIDI1MSwgMjE4LCAyMTEsIDIyNywgMTgsIDE5LCAyNTEsIAorICAgIDIxOCwgMjEyLCA2NSwgMTgsIDE5LCAyNTEsIDIxOCwgMjI5LCAxMDcsIDE4LCAxOSwgMjUxLCAyMTgsIDIyOCwgMjMzLCAxOCwgCisgICAgMTksIDI1MSwgMjE4LCAyMjgsIDc0LCAxOCwgMTksIDI1MSwgMjE4LCAxOTcsIDE4LCAxOSwgMjUxLCAyMTgsIDIzNCwgMTgyLCAKKyAgICAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDkyLCAxOCwgMTksIDI1MSwgMjE4LCAyMzQsIDI4LCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICAxNzYsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgMjM4LCAxOCwgMTksIDIyMSwgMjA5LCAyNDEsIDE4MCwgMTgsIDE5LCAyMjEsIAorICAgIDIwOSwgMjQxLCA2OCwgMTgsIDE5LCAyMjEsIDIwOSwgMTYyLCAxOCwgMTksIDcyLCAyNDIsIDIyMCwgMTgsIDE5LCA3MiwgCisgICAgMjQyLCAyMjQsIDE4LCAxOSwgNzIsIDI0MiwgMjM2LCAxOCwgMTksIDcyLCAyNDIsIDIzNSwgMTgsIDE5LCA3MiwgMjQyLCAKKyAgICAyMjUsIDE4LCAxOSwgNzIsIDI0MiwgMjQ5LCAxOCwgMTksIDcyLCAyMjIsIDE0MCwgMTgsIDE5LCA3MiwgMjIyLCAyMTEsIAorICAgIDE4LCAxOSwgNzIsIDIyMywgMTI4LCAxOCwgMTksIDcyLCAyMjMsIDEwOCwgMTgsIDE5LCA3MiwgMjIzLCAzNSwgMTgsIDE5LCAKKyAgICA3MiwgMjA1LCAxOCwgMTksIDcyLCAyMTEsIDE5NSwgMTgsIDE5LCA3MiwgMjExLCAyMjcsIDE4LCAxOSwgNzIsIDIxMiwgMjIsIAorICAgIDE4LCAxOSwgNzIsIDIxMiwgMTcsIDE4LCAxOSwgNzIsIDIxMSwgMjUwLCAxOCwgMTksIDcyLCAyMTIsIDY1LCAxOCwgMTksIAorICAgIDcyLCAyNDAsIDE5NCwgMTgsIDE5LCA3MiwgMjQwLCAxOTUsIDE4LCAxOSwgNzIsIDI0MCwgMTk4LCAxOCwgMTksIDcyLCAKKyAgICAyNDAsIDE5NywgMTgsIDE5LCA3MiwgMjQwLCAxOTYsIDE4LCAxOSwgNzIsIDI0MCwgMjAwLCAxOCwgMTksIDcyLCAyMTYsIAorICAgIDEzNiwgMTgsIDE5LCA3MiwgMjE2LCAxNTYsIDE4LCAxOSwgNzIsIDIxNiwgMTk1LCAxOCwgMTksIDcyLCAyMTYsIDE5NCwgCisgICAgMTgsIDE5LCA3MiwgMjE2LCAxNzUsIDE4LCAxOSwgNzIsIDIxNiwgMjA4LCAxOCwgMTksIDcyLCAyMTUsIDEyMywgMTgsIDE5LCAKKyAgICA3MiwgMjE1LCAxMzMsIDE4LCAxOSwgNzIsIDIxNSwgMTUxLCAxOCwgMTksIDcyLCAyMTUsIDE1MCwgMTgsIDE5LCA3MiwgCisgICAgMjE1LCAxMzUsIDE4LCAxOSwgNzIsIDIxNSwgMTU2LCAxOCwgMTksIDcyLCAyMjQsIDE1MCwgMTgsIDE5LCA3MiwgMjI1LCAKKyAgICAxNiwgMTgsIDE5LCA3MiwgMjI1LCAyMjEsIDE4LCAxOSwgNzIsIDIyNSwgMjExLCAxOCwgMTksIDcyLCAyMjUsIDEwOCwgMTgsIAorICAgIDE5LCA3MiwgMTkwLCAxOCwgMTksIDcyLCAyMjYsIDEwNSwgMTgsIDE5LCA3MiwgMjQyLCAxMTMsIDE4LCAxOSwgNzIsIDI0MiwgCisgICAgMTc0LCAxOCwgMTksIDcyLCAyNDMsIDYyLCAxOCwgMTksIDcyLCAyNDMsIDU1LCAxOCwgMTksIDcyLCAyNDIsIDIxNCwgMTgsIAorICAgIDE5LCA3MiwgMjQzLCAxMzUsIDE4LCAxOSwgNzIsIDIzNCwgMTAwLCAxOCwgMTksIDcyLCAyMzQsIDEwNSwgMTgsIDE5LCA3MiwgCisgICAgMjM0LCAxMTksIDE4LCAxOSwgNzIsIDIzNCwgMTE4LCAxOCwgMTksIDcyLCAyMzQsIDExMiwgMTgsIDE5LCA3MiwgMjM0LCAKKyAgICAxMzIsIDE4LCAxOSwgNzIsIDIzNCwgNDEsIDE4LCAxOSwgNzIsIDIzNCwgNDIsIDE4LCAxOSwgNzIsIDIzNCwgNDUsIDE4LCAKKyAgICAxOSwgNzIsIDIzNCwgNDQsIDE4LCAxOSwgNzIsIDIzNCwgNDMsIDE4LCAxOSwgNzIsIDIzNCwgNDYsIDE4LCAxOSwgNzIsIAorICAgIDIzNCwgNDcsIDE4LCAxOSwgNzIsIDIyNywgMjM3LCAxOCwgMTksIDcyLCAyMjgsIDc0LCAxOCwgMTksIDcyLCAyMjksIDEwNywgCisgICAgMTgsIDE5LCA3MiwgMjI5LCAxMDMsIDE4LCAxOSwgNzIsIDIyOCwgMjMzLCAxOCwgMTksIDcyLCAxOTcsIDE4LCAxOSwgNzIsIAorICAgIDIzMCwgMTAyLCAxOCwgMTksIDcyLCAyMzAsIDE2MSwgMTgsIDE5LCA3MiwgMjMxLCA5MSwgMTgsIDE5LCA3MiwgMjMxLCA4MCwgCisgICAgMTgsIDE5LCA3MiwgMjMwLCAyMzAsIDE4LCAxOSwgNzIsIDE4NCwgMTgsIDE5LCA3MiwgMjEwLCAyMTIsIDE4LCAxOSwgNzIsIAorICAgIDIxMCwgMjQ0LCAxOCwgMTksIDcyLCAyMTEsIDQ3LCAxOCwgMTksIDcyLCAyMTEsIDQ0LCAxOCwgMTksIDcyLCAyMTEsIDgsIAorICAgIDE4LCAxOSwgNzIsIDE5MSwgMTgsIDE5LCA3MiwgMjM1LCA1MSwgMTgsIDE5LCAyMjEsIDIwOSwgMjM1LCA1MSwgMTgsIDE5LCAKKyAgICA3MiwgMjM1LCA2OCwgMTgsIDE5LCA3MiwgMjM1LCAxMjYsIDE4LCAxOSwgNzIsIDIzNSwgMTI0LCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDEwOCwgMTgsIDE5LCAyMjEsIDIwOSwgMjM1LCAxMDgsIDE4LCAxOSwgNzIsIDIzNSwgMTQxLCAxOCwgMTksIDcyLCAyMzUsIAorICAgIDgxLCAxOCwgMTksIDcyLCAyMzUsIDg1LCAxOCwgMTksIDcyLCAyMzUsIDk1LCAxOCwgMTksIDcyLCAyMzUsIDk0LCAxOCwgCisgICAgMTksIDcyLCAyMzUsIDkzLCAxOCwgMTksIDcyLCAyMzUsIDk2LCAxOCwgMTksIDcyLCAyMzIsIDk4LCAxOCwgMTksIDcyLCAKKyAgICAyMzIsIDE1NiwgMTgsIDE5LCA3MiwgMjMzLCA1OCwgMTgsIDE5LCA3MiwgMjMzLCA1MCwgMTgsIDE5LCA3MiwgMjMyLCAyNDEsIAorICAgIDE4LCAxOSwgNzIsIDIzMywgMTM1LCAxOCwgMTksIDcyLCAyNDcsIDE0OSwgMTgsIDE5LCA3MiwgMjQ3LCAxNTAsIDE4LCAxOSwgCisgICAgNzIsIDI0NywgMTU1LCAxOCwgMTksIDcyLCAyNDcsIDE1NCwgMTgsIDE5LCA3MiwgMjQ3LCAxNTEsIDE4LCAxOSwgNzIsIAorICAgIDI0NywgMTU2LCAxOCwgMTksIDcyLCAyMzIsIDI0NCwgMTgsIDE5LCA3MiwgMjMyLCAyNDYsIDE4LCAxOSwgNzIsIDIzMiwgCisgICAgMjUwLCAxOCwgMTksIDcyLCAyMzIsIDI0OSwgMTgsIDE5LCA3MiwgMjMyLCAyNDgsIDE4LCAxOSwgNzIsIDIzMiwgMjU0LCAKKyAgICAxOCwgMTksIDcyLCAyMTYsIDUwLCAxOCwgMTksIDcyLCAyMTYsIDUyLCAxOCwgMTksIDcyLCAyMTYsIDU1LCAxOCwgMTksIAorICAgIDcyLCAyMTYsIDU0LCAxOCwgMTksIDcyLCAyMTYsIDUzLCAxOCwgMTksIDcyLCAyMTYsIDU2LCAxOCwgMTksIDcyLCAyMTYsIAorICAgIDQ1LCAxOCwgMTksIDcyLCAyMTYsIDQ2LCAxOCwgMTksIDcyLCAyMTYsIDU4LCAxOCwgMTksIDcyLCAyMTYsIDU3LCAxOCwgCisgICAgMTksIDcyLCAyMTYsIDQ3LCAxOCwgMTksIDcyLCAyMTYsIDU5LCAxOCwgMTksIDcyLCAyMTAsIDEzLCAxOCwgMTksIDcyLCAKKyAgICAyMTAsIDIzLCAxOCwgMTksIDcyLCAyMTAsIDk0LCAxOCwgMTksIDcyLCAyMTAsIDkyLCAxOCwgMTksIDcyLCAyMTAsIDQ0LCAKKyAgICAxOCwgMTksIDcyLCAyMTAsIDExNiwgMTgsIDE5LCA3MiwgMjEwLCAxNTksIDE4LCAxOSwgNzIsIDY1LCAyMTAsIDE1OSwgMTgsIAorICAgIDE5LCA3MiwgMjQ2LCAyOCwgMTgsIDE5LCA3MiwgMjQ2LCAyOSwgMTgsIDE5LCA3MiwgMjQ2LCAzNiwgMTgsIDE5LCA3MiwgCisgICAgMjQ2LCAzNSwgMTgsIDE5LCA3MiwgMjQ2LCAzMSwgMTgsIDE5LCA3MiwgMjQ2LCAzOCwgMTgsIDE5LCA3MiwgMjE4LCA4MywgCisgICAgMTgsIDE5LCA3MiwgMjE5LCA1OCwgMTgsIDE5LCA3MiwgMjIxLCAxODEsIDE4LCAxOSwgNzIsIDIyMSwgMTcwLCAxOCwgMTksIAorICAgIDcyLCAyMTksIDE5MSwgMTgsIDE5LCA3MiwgMjA2LCAxOCwgMTksIDcyLCAyMTksIDIyNSwgMTgsIDE5LCA3MiwgMjIwLCA3LCAKKyAgICAxOCwgMTksIDcyLCAyMjAsIDYzLCAxOCwgMTksIDcyLCAyMjAsIDYxLCAxOCwgMTksIDcyLCAyMjAsIDMyLCAxOCwgMTksIAorICAgIDcyLCAyMjAsIDEwMiwgMTgsIDE5LCA3MiwgMjIwLCAxMDQsIDE4LCAxOSwgNzIsIDIxNSwgMTYzLCAxOCwgMTksIDcyLCAKKyAgICAyMTUsIDE2NiwgMTgsIDE5LCA3MiwgMjE1LCAxNzgsIDE4LCAxOSwgNzIsIDIxNSwgMTc3LCAxOCwgMTksIDcyLCAyMTUsIAorICAgIDE2NywgMTgsIDE5LCA3MiwgMjE1LCAxODMsIDE4LCAxOSwgNzIsIDI1MCwgNjksIDE4LCAxOSwgNzIsIDI1MCwgODYsIDE4LCAKKyAgICAxOSwgNzIsIDI1MCwgMTMxLCAxOCwgMTksIDcyLCAyNTAsIDEyOCwgMTgsIDE5LCA3MiwgMjUwLCAxMTAsIDE4LCAxOSwgNzIsIAorICAgIDI1MCwgMTU3LCAxOCwgMTksIDcyLCAyMTUsIDEyNiwgMTgsIDE5LCA3MiwgMjE1LCAxMjcsIDE4LCAxOSwgNzIsIDIxNSwgCisgICAgMTMwLCAxOCwgMTksIDcyLCAyMTUsIDEyOSwgMTgsIDE5LCA3MiwgMjE1LCAxMjgsIDE4LCAxOSwgNzIsIDIxNSwgMTMxLCAKKyAgICAxOCwgMTksIDI1MCwgMTExLCA1MCwgMTgsIDE5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDE4LCAxOSwgMjI0LCA4MCwgMTgsIAorICAgIDE5LCAyMjksIDczLCAxOCwgMTksIDIyOCwgMTAwLCAxOCwgMTksIDIyOCwgOTksIDE4LCAxOSwgMjI4LCA5OCwgMTgsIDE5LCAKKyAgICAyMjgsIDk3LCAxOCwgMTksIDIyOCwgMTAyLCAxOCwgMTksIDIyOCwgMTAxLCAxOCwgMTksIDIxMSwgMjEzLCAyMTYsIDEyNSwgCisgICAgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjQsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTIzLCAxOCwgMTksIDIxMSwgMjEzLCAKKyAgICAyMTYsIDEyMiwgMTgsIDE5LCAyMTEsIDIxMywgMjE2LCAxMjEsIDE4LCAxOSwgMjExLCAyMTMsIDIxNiwgMTI4LCAxOCwgMTksIAorICAgIDIxMSwgMjEzLCAyMTYsIDEyNywgMTgsIDE5LCAyMTEsIDIxMywgNDAsIDIxNiwgMjEwLCAxOCwgMTksIDI1MSwgMjE4LCAKKyAgICAyMTIsIDk4LCAyMjYsIDIyNiwgMjE5LCAxOSwgNzgsIDIyNiwgMjI2LCAxLCAyNTIsIDQ4LCAyMjYsIDIyNiwgMSwgMjMyLCAKKyAgICA4NywgMjI2LCAyMjYsIDEsIDI0NCwgMTUxLCAyMjYsIDIyNiwgMSwgMjIyLCAxNSwgMjI2LCAyMjYsIDEsIDIyOCwgMTkzLCAKKyAgICAyMjYsIDIyNiwgMSwgMjE0LCAyMjYsIDIyNiwgMjI2LCAxLCAyNDgsIDE5NywgMjI2LCAyMjYsIDEsIDIxNiwgODAsIDIyNiwgCisgICAgMjI2LCAxLCAyNDksIDIyOSwgMjI2LCAyMjYsIDEsIDI1MCwgMTgwLCAyMjYsIDIyNiwgMSwgMjMwLCA5MSwgMjI2LCAyMjYsIAorICAgIDEsIDI0MiwgMTU2LCAyMjYsIDIyNiwgMSwgMjI5LCA2MywgMjI2LCAyMjYsIDEsIDIxOCwgMTIyLCAyMjYsIDIyNiwgMSwgCisgICAgMjIyLCAxMzUsIDIyNiwgMjI2LCAxLCAyNTQsIDE5OCwgMjI2LCAyMjYsIDEsIDIyNiwgMTg3LCAyMjYsIDIyNiwgMSwgMjE0LCAKKyAgICAxNTAsIDIyNiwgMjI2LCAxLCAyNDUsIDIzMSwgMjI2LCAyMjYsIDEsIDIzNSwgMTg4LCAyMjYsIDIyNiwgMSwgMjQ1LCAyMzIsIAorICAgIDIyNiwgMjI2LCAxLCAyMjYsIDE1OCwgMjI2LCAyMjYsIDEsIDIxNCwgMjA2LCAyMjYsIDIyNiwgMSwgMjM2LCAzOSwgMjI2LCAKKyAgICAyMjYsIDEsIDI0NSwgMjI5LCAyMjYsIDIyNiwgMSwgMjI1LCAyMDIsIDIyNiwgMjI2LCAyNDQsIDE1MCwgNzgsIDIyNiwgCisgICAgMjI2LCAyMjMsIDQ5LCAyNDQsIDE1MCwgNzgsIDE3OCwgMSwgMjQ0LCAxNDEsIDI0NCwgMTMzLCAyNDQsIDE1NSwgMjQ1LCA2LCAKKyAgICAxNzgsIDEsIDIxNCwgMTA1LCAxNzgsIDEsIDIxNCwgMTM1LCAyMTQsIDE1MSwgNzAsIDE3OCwgMSwgMjEwLCAyMTQsIDE3OCwgCisgICAgMSwgMjExLCAxMTcsIDE3OCwgMSwgMjEyLCA5OCwgMTc4LCAxLCAyMTYsIDEzMCwgMjE2LCAxMjksIDIxNiwgMTUxLCAxNzgsIAorICAgIDEsIDI0NSwgNTksIDE3OCwgMSwgMjU0LCA5MywgNjEsIDE3OCwgMSwgMjI2LCAxNDMsIDc2LCAxNzgsIDEsIDI1NSwgMTcsIAorICAgIDYxLCAxNzgsIDEsIDI1NCwgMjI3LCAxNzgsIDEsIDIzMiwgMTMzLCA3NiwgMTc4LCAxLCAyMTksIDI0NCwgNzYsIDE3OCwgMSwgCisgICAgNzYsIDE3OCwgMSwgMjI2LCAyMzQsIDE3OCwgMSwgMjI2LCAxOTYsIDE3OCwgMSwgMjIzLCAxNjQsIDIyMywgMTc3LCAyMjMsIAorICAgIDk0LCAxNTMsIDE3OCwgMSwgMjM0LCAxOTMsIDE3OCwgMSwgMjUwLCAxNzcsIDE3OCwgMSwgMjM0LCAxOTQsIDIzNSwgMjMsIAorICAgIDE3OCwgMSwgMjQzLCAyMDIsIDE3OCwgMSwgMjQ1LCAxMzgsIDE3OCwgMSwgMjQzLCA1OCwgMjQyLCA2NiwgMjQzLCAyMDIsIAorICAgIDE3OCwgMSwgMjQzLCA5NiwgMTc4LCAxLCAyMTEsIDE4OCwgMjExLCAxODIsIDIxMiwgOTgsIDE3OCwgMSwgMjQyLCAzOCwgCisgICAgMjQyLCA2MCwgMTc4LCAxLCAyNDIsIDQyLCAyNDIsIDYwLCAxNzgsIDEsIDIzMiwgMTM1LCAyNDIsIDYwLCAxNzgsIDEsIAorICAgIDIxOSwgMjQ3LCAyNDIsIDYwLCAxNzgsIDEsIDIyOSwgMTg1LCAyMjcsIDE1NywgMjI5LCAxODYsIDIzMCwgMjUsIDE3OCwgMSwgCisgICAgMjE5LCAyNDUsIDIzMCwgMjUsIDE3OCwgMSwgMjQ2LCAxMTUsIDE3OCwgMSwgMjM1LCAxNjgsIDIzNSwgMTcyLCAyMzUsIAorICAgIDE2MiwgNzMsIDE3OCwgMSwgNzUsIDE3OCwgMSwgMjM1LCAxMTcsIDIzNSwgMTQ0LCAxNzgsIDEsIDI0MywgNDMsIDE3OCwgMSwgCisgICAgMjMyLCAxMzYsIDI1NCwgMjQzLCAxNzgsIDEsIDIxOSwgMjQ5LCA2MSwgMTc4LCAxLCAyMzUsIDE1NCwgMjQ1LCAxMTMsIAorICAgIDE3OCwgMSwgMjI1LCAxNjQsIDIyNSwgMTg2LCAyMjYsIDEwNSwgMTc4LCAxLCAyNTQsIDE2MywgMjQ1LCAxMTEsIDE3OCwgMSwgCisgICAgMjE5LCAyNCwgMjIyLCA5MSwgMTc4LCAxLCAyMTksIDE3OSwgMjMyLCAxMzIsIDIyMiwgOTEsIDE3OCwgMSwgMjE5LCAyNDMsIAorICAgIDIyMiwgOTEsIDE3OCwgMSwgMjUxLCA2NiwgMTc4LCAxLCAyMTAsIDE1OSwgMTc4LCAxLCAyMTYsIDYzLCAyMTYsIDczLCAKKyAgICAyMTUsIDQxLCAyMTcsIDE1MiwgMTc4LCAxLCAyMTksIDI0MiwgMjE3LCAxNTIsIDE3OCwgMSwgMjQ5LCA2MCwgMTc4LCAxLCAKKyAgICAyNTIsIDMxLCAyNTIsIDM0LCAyNTEsIDIyNCwgMjUzLCAxNTgsIDE3OCwgMSwgMjE5LCAyNDgsIDI1MywgMTU4LCAxNzgsIDEsIAorICAgIDI0NiwgMTE0LCAxNzgsIDEsIDIyNiwgMTcxLCAxNzgsIDEsIDI0NSwgMTk2LCAyNDUsIDE5OCwgNzUsIDE3OCwgMSwgMjMxLCAKKyAgICAxNzgsIDIzMSwgMTg2LCAxOTMsIDE3OCwgMSwgMjMyLCAxMzQsIDE5MywgMTc4LCAxLCAyMTksIDI0NiwgMTkzLCAxNzgsIDEsIAorICAgIDIzMywgNzMsIDIzMywgMTE0LCAyMzIsIDE0MywgMTU2LCAxNzgsIDEsIDI0NiwgMTE2LCAxNzgsIDEsIDIzNSwgMjMwLCAKKyAgICAxNzgsIDEsIDIzNSwgMjMxLCAxNzgsIDEsIDI0OCwgMjEwLCAyNDgsIDIxNSwgMjQ5LCA2MCwgMTc4LCAxLCAyMjYsIDEzOCwgCisgICAgMjQ1LCA1OCwgNzYsIDE3OCwgMSwgMjQ1LCAyMjcsIDE3OCwgMSwgMjM1LCAxODcsIDE3OCwgMSwgMjQ5LCA3OCwgMTc4LCAxLCAKKyAgICAyNTEsIDE3LCAxNzgsIDEsIDI1MCwgMTg5LCAxNzgsIDEsIDIxOCwgMTYxLCAxNzgsIDEsIDIzMiwgMTMxLCAxNzgsIDEsIAorICAgIDIxOSwgMjQxLCAxNzgsIDEsIDI0MCwgMTEwLCAxNzgsIDEsIDIyNCwgOTYsIDE3OCwgMSwgMjExLCAxNzgsIDE3OCwgMjE5LCAKKyAgICAxNTUsIDIyNCwgMTQwLCAxNzgsIDIzMCwgODUsIDIyNCwgMTQwLCAxNzgsIDI0OSwgMTMxLCAyMjQsIDE0MCwgMTc4LCAyNTQsIAorICAgIDYsIDg3LCAxNzgsIDIxNSwgODIsIDg3LCAxNzgsIDI1MiwgNDYsIDg3LCAyMTcsIDgzLCAxLCA2MSwgMjE3LCA4MywgMSwgCisgICAgNzMsIDIxNywgODMsIDEsIDcwLCAyMTcsIDgzLCAxLCAxNzYsIDIxNywgODMsIDEsIDI0MywgMTM1LCAyMTcsIDgzLCAxLCAKKyAgICAyMjksIDc3LCAyMTcsIDgzLCAxLCAyMTcsIDEwNSwgMjE3LCA4MywgMSwgMjQ4LCAyMjEsIDIxNywgODMsIDEsIDE5NywgCisgICAgMjE3LCA4MywgMSwgMTkwLCAyMTcsIDgzLCAxLCAyNTIsIDE5MSwgMjE3LCA4MywgMSwgMTg0LCAyMTcsIDgzLCAxLCAxOTEsIAorICAgIDIxNywgODMsIDEsIDIzMywgMTM1LCAyMTcsIDgzLCAxLCAyMTIsIDY1LCAyMTcsIDgzLCAxLCAyMDYsIDIxNywgODMsIDEsIAorICAgIDE2MiwgMjE3LCA4MywgMjUsIDUsIDczLCAyMTcsIDgzLCAyNSwgNSwgNzAsIDIxNywgODMsIDUsIDIxMywgMTUyLCAyNDIsIAorICAgIDcsIDEsIDYxLCAyNDIsIDcsIDEsIDczLCAyNDIsIDcsIDEsIDcwLCAyNDIsIDcsIDEsIDE3NiwgMjQyLCA3LCAxLCAyNDMsIAorICAgIDEzNSwgMjQyLCA3LCAxLCAyMjksIDc3LCAyNDIsIDcsIDEsIDIxNywgMTA1LCAyNDIsIDcsIDEsIDI0OCwgMjIxLCAyNDIsIAorICAgIDcsIDEsIDE5NywgMjQyLCA3LCAxLCAxOTAsIDI0MiwgNywgMSwgMjUyLCAxOTEsIDI0MiwgNywgMSwgMTg0LCAyNDIsIDcsIAorICAgIDEsIDE5MSwgMjQyLCA3LCAxLCAyMDUsIDI0MiwgNywgMSwgMjMzLCAxMzUsIDI0MiwgNywgMSwgMjEyLCA2NSwgMjQyLCA3LCAKKyAgICAxLCAyMDYsIDI0MiwgNywgMSwgMTYyLCAyNDIsIDcsIDI1LCA1LCA3MywgMjQyLCA3LCAyNSwgNSwgNzAsIDI0MiwgNywgNSwgCisgICAgMjI2LCA0OSwgMjI1LCAxMjYsIDIxOSwgMTU1LCAyMjQsIDE0MCwgMjI1LCAxMjYsIDUyLCAyMjQsIDE0MCwgMjUxLCAxMjAsIAorICAgIDEsIDYxLCAyNTEsIDEyMCwgMSwgNzMsIDI1MSwgMTIwLCAxLCA3MCwgMjUxLCAxMjAsIDEsIDE3NiwgMjUxLCAxMjAsIDEsIAorICAgIDI0MywgMTM1LCAyNTEsIDEyMCwgMSwgMjI5LCA3NywgMjUxLCAxMjAsIDEsIDIxNywgMTA1LCAyNTEsIDEyMCwgMSwgMjQ4LCAKKyAgICAyMjEsIDI1MSwgMTIwLCAxLCAxOTcsIDI1MSwgMTIwLCAxLCAxOTAsIDI1MSwgMTIwLCAxLCAyNTIsIDE5MSwgMjUxLCAxMjAsIAorICAgIDEsIDE4NCwgMjUxLCAxMjAsIDEsIDE5MSwgMjUxLCAxMjAsIDEsIDIwNSwgMjUxLCAxMjAsIDEsIDIzMywgMTM1LCAyNTEsIAorICAgIDEyMCwgMSwgMjEyLCA2NSwgMjUxLCAxMjAsIDEsIDIwNiwgMjUxLCAxMjAsIDEsIDE2MiwgMjUxLCAxMjAsIDI1LCA1LCA3MywgCisgICAgMjUxLCAxMjAsIDI1LCA1LCA3MCwgMjE3LCA4MiwgMSwgNjEsIDIxNywgODIsIDEsIDczLCAyMTcsIDgyLCAxLCA3MCwgMjE3LCAKKyAgICA4MiwgMSwgMTc2LCAyMTcsIDgyLCAxLCAyNDMsIDEzNSwgMjE3LCA4MiwgMSwgMjI5LCA3NywgMjE3LCA4MiwgMSwgMjE3LCAKKyAgICAxMDUsIDIxNywgODIsIDEsIDI0OCwgMjIxLCAyMTcsIDgyLCAxLCAxOTcsIDIxNywgODIsIDEsIDE5MCwgMjE3LCA4MiwgMSwgCisgICAgMjUyLCAxOTEsIDIxNywgODIsIDEsIDE4NCwgMjE3LCA4MiwgMSwgMTkxLCAyMTcsIDgyLCAxLCAyMzMsIDEzNSwgMjE3LCAKKyAgICA4MiwgMSwgMjEyLCA2NSwgMjE3LCA4MiwgMSwgMjA2LCAyMTcsIDgyLCAyNSwgNSwgNzMsIDIxNywgODIsIDI1LCA1LCA3MCwgCisgICAgNjksIDEsIDE3NiwgNjksIDEsIDIzNCwgMTMyLCA2OSwgMSwgMjM0LCAyOCwgNjksIDEsIDIzNCwgMTA1LCA2OSwgMSwgMjI5LCAKKyAgICA0LCA2OSwgMSwgMjUxLCAzMywgNjksIDEsIDI1MCwgMTU3LCA2OSwgMSwgMjQ5LCAyMzgsIDY5LCAxLCAyNTAsIDg2LCA2OSwgCisgICAgMSwgMjI3LCAxMzQsIDY5LCAxLCAyNDgsIDIyMSwgNjksIDEsIDIxNSwgMTQ0LCA2OSwgMSwgMjQ3LCAxNDUsIDY5LCAxLCAKKyAgICAyMTUsIDEzOSwgNjksIDEsIDIyOCwgODAsIDY5LCAxLCAyMTcsIDEwNSwgNjksIDEsIDIxNiwgMjA4LCA2OSwgMSwgMTExLCAKKyAgICA2OSwgMSwgMjE2LCAxNTYsIDY5LCAxLCAyMjgsIDc0LCA2OSwgMSwgMjUyLCAxOTEsIDY5LCAxLCAyMjUsIDE0NywgNjksIDEsIAorICAgIDIyNSwgMTYsIDY5LCAxLCAyMjUsIDEyMSwgNjksIDEsIDIzMCwgMTYxLCA2OSwgMSwgMjEwLCAyNDQsIDY5LCAxLCAyMjIsIAorICAgIDIxMSwgNjksIDEsIDIzMiwgMTU2LCA2OSwgMSwgMjEzLCAxMzgsIDY5LCAxLCAyMjAsIDEwMiwgNjksIDEsIDIxOCwgMTg0LCAKKyAgICA2OSwgMSwgMjA2LCA2OSwgMSwgMTYyLCA2OSwgMSwgMjMzLCAxMzUsIDY5LCAxLCAyMjQsIDg4LCA2OSwgMjM1LCAyNDMsIAorICAgIDI1LCAyMjQsIDc0LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDg3LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDUzLCA2OSwgCisgICAgMjM1LCAyNDMsIDI1LCAyMjQsIDQ4LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDMwLCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIAorICAgIDIsIDY5LCAyMzUsIDI0MywgMjUsIDIyMywgMjQ2LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjMsIDI0NSwgNjksIDIzNSwgMjQzLCAKKyAgICAyNSwgMjIyLCAxMDAsIDY5LCAyMzUsIDI0MywgMjUsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDIzMiwgNjIsIDY5LCAKKyAgICAyMzUsIDI0MywgMjUsIDIzMiwgNTIsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgNjksIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgCisgICAgODAsIDY5LCAyMzUsIDI0MywgMjUsIDIyNCwgMzgsIDIxNSwgNDksIDExMCwgNjksIDIzNSwgMjQzLCAyNSwgMjI0LCAzOCwgCisgICAgMjE1LCA0OSwgMTA1LCA2OSwgMjM1LCAyNDMsIDI1LCAyMjQsIDcwLCA2OSwgMjUsIDIzNSwgMjI5LCAyNTQsIDQ1LCA2OSwgCisgICAgMjUsIDIzNSwgMjI5LCAyNTUsIDczLCA2OSwgMjUsIDUsIDI1NSwgNzMsIDY5LCAyNSwgNSwgNzMsIDY5LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgNjksIDI1LCA1LCAyMTEsIDExNywgNjksIDI1LCA1LCAyMTAsIDE2OSwgNjksIDI1LCA1LCA3MCwgNjksIDI1LCA1LCAKKyAgICAyMTQsIDExOCwgNjksIDI1LCA1LCAyMTQsIDIyOSwgNjksIDI1LCA1LCAyMjYsIDIzNCwgNjksIDI1LCA1LCAxOTEsIDY5LCAKKyAgICAyNSwgNSwgMjM2LCA2MCwgNjksIDI1LCA1LCA3NSwgNjksIDI1LCA1LCAyNTQsIDI0MywgNjksIDI1LCA1LCAyNTQsIDIwMSwgCisgICAgNjksIDI1LCA1LCAyMjYsIDE4MywgNjksIDI1LCA1LCAyNTMsIDE5MiwgNjksIDUsIDIyOCwgMjA2LCA2OSwgNSwgMjIzLCAKKyAgICAxMjYsIDY5LCA1LCAyMTAsIDE4MCwgNjksIDUsIDIzMCwgNTIsIDY5LCA1LCAyMTUsIDIxMywgNjksIDUsIDI1MiwgMTQzLCAKKyAgICA2OSwgNSwgMjIyLCAyMDYsIDY5LCA1LCAyMTYsIDQwLCA2OSwgNSwgMjM0LCAyNDEsIDY5LCA1LCAyNTQsIDIwMywgNjksIDUsIAorICAgIDIyMSwgMjQ0LCAyMjEsIDIzOCwgNjksIDUsIDIxMywgMTQ5LCA2OSwgNSwgMjQ5LCAyMzIsIDY5LCA1LCAyNTIsIDExNywgCisgICAgNjksIDUsIDIzNCwgMTI1LCA2OSwgNSwgMjUyLCAxMzcsIDY5LCA1LCAyNTEsIDksIDIyNSwgNzIsIDIzMywgMTg3LCA2OSwgCisgICAgNSwgMjMzLCAzMCwgMjE2LCAxNywgNjksIDUsIDI1MiwgMjAsIDY5LCA1LCAyMjUsIDEyMywgMjMwLCA5OSwgNjksIDUsIAorICAgIDIzNCwgOSwgNjksIDI0OSwgOTgsIDE2LCAyMjMsIDI4LCA2OSwgNSwgMjUzLCAxNzQsIDY5LCA1LCAyNTMsIDE5NSwgNjksIAorICAgIDIxLCAyMTAsIDg2LCA2OSwgMjEsIDExMCwgNjksIDIxLCAxMDUsIDY5LCAyMSwgMTU4LCA2OSwgMjEsIDE2MSwgNjksIDIxLCAKKyAgICAxODksIDY5LCAyMSwgMTk0LCA2OSwgMjEsIDE5OCwgNjksIDIxLCAxOTUsIDY5LCAyMSwgMjAwLCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMTksIDQzLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMzAsIDcxLCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyMjUsIDcxLCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyNTIsIDQ5LCA2OSwgMTYsIDIzMywgMzAsIAorICAgIDI1MywgMTk3LCAyNTEsIDEwMywgNjksIDE2LCAyMzMsIDMwLCAyNTMsIDE5NywgMjI0LCAyMTUsIDY5LCAxNiwgMjMzLCAzMCwgCisgICAgMjUzLCAxOTcsIDIyNCwgMjA5LCA2OSwgMTYsIDIzMywgMzAsIDI1MywgMTk3LCAyMjQsIDIwNywgNjksIDE2LCAyMzMsIDMwLCAKKyAgICAyNTMsIDE5NywgMjI0LCAyMTMsIDY5LCAxNiwgMjMzLCAzMCwgMjUzLCAxOTcsIDIyNCwgMjExLCA4MywgMjUxLCAyMzYsIAorICAgIDgzLCAyNDUsIDE2MywgODMsIDI0OSwgMjE5LCA4MywgMjQzLCAyMjksIDIxOCwgMTI5LCA4MywgMjQ5LCAyMjYsIDgzLCAKKyAgICAyNDQsIDExLCAyNDcsIDExOCwgODMsIDIxNiwgMzksIDIxOSwgNTIsIDI0MCwgMTY4LCA4MywgMjE5LCAxOTAsIDMsIDI1MSwgCisgICAgMTcyLCAyMzEsIDE1NCwgODMsIDIzMSwgMTgzLCAyNDksIDIxOSwgODMsIDIzMSwgMTgzLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDgzLCAyMjgsIDE5MSwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAxNTcsIDExMCwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAKKyAgICAxNTcsIDEwNSwgODMsIDI0MywgMjUzLCA0NSwgMjIxLCAxNTcsIDE1OCwgODMsIDI1LCAyMjAsIDEzNywgODMsIDIxLCAyMTAsIAorICAgIDg2LCA4MywgMjEsIDExMCwgODMsIDIxLCAxMDUsIDgzLCAyMSwgMTU4LCA4MywgMjEsIDE2MSwgODMsIDIxLCAxODksIDgzLCAKKyAgICAyMSwgMTk0LCA4MywgMjEsIDE5OCwgODMsIDIxLCAxOTUsIDgzLCAyMSwgMjAwLCA4MywgMSwgNjEsIDgzLCAxLCA3NSwgODMsIAorICAgIDEsIDczLCA4MywgMSwgNzYsIDgzLCAxLCA3MCwgODMsIDEsIDIyNiwgMjM0LCA4MywgMSwgMjE0LCAyMTQsIDgzLCAxLCAKKyAgICAyNDUsIDIwOSwgODMsIDEsIDE5NywgODMsIDEsIDI1NCwgMTE1LCA4MywgMSwgMjUyLCAxOTEsIDgzLCAxLCAxOTAsIDgzLCAKKyAgICAxLCAyMjQsIDg4LCA4MywgMSwgMjQzLCAxMzUsIDgzLCAxLCAxODQsIDgzLCAxLCAyMzMsIDEzNSwgODMsIDEsIDIwNiwgODMsIAorICAgIDEsIDIyMCwgMTAyLCA4MywgMSwgMjE3LCAxMDUsIDgzLCAxLCAyNDgsIDIyMSwgODMsIDEsIDI1MCwgMTU3LCA4MywgMSwgCisgICAgMjM1LCAxNDEsIDgzLCAxLCAxOTEsIDgzLCAxLCAyMDUsIDgzLCAxLCAyMTIsIDY1LCA4MywgMSwgMjQ0LCAxOTYsIDgzLCAxLCAKKyAgICAxNzYsIDgzLCAxLCAyMzQsIDEzMiwgODMsIDEsIDIxNSwgMTgzLCA4MywgMSwgMjEwLCAxMTYsIDgzLCAxLCAyNDIsIDQ2LCAKKyAgICA4MywgMSwgMjEwLCAxNiwgODMsIDEsIDIzMiwgMjU0LCA4MywgMSwgMjEwLCA2OSwgODMsIDEsIDI1MCwgMTEwLCA4MywgMSwgCisgICAgMjE2LCAzOSwgMTk5LCAyNSwgNTAsIDgzLCAxLCAyMTYsIDM5LCA3NSwgODMsIDEsIDIxNiwgMzksIDczLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgNzYsIDgzLCAxLCAyMTYsIDM5LCA3MCwgODMsIDEsIDIxNiwgMzksIDIyNiwgMjM0LCA4MywgMSwgMjE2LCAzOSwgCisgICAgMjE0LCAyMTQsIDgzLCAxLCAyMTYsIDM5LCAyNTQsIDExNSwgODMsIDEsIDIxNiwgMzksIDI1MiwgMTkxLCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMTkwLCA4MywgMSwgMjE2LCAzOSwgMjI0LCA4OCwgODMsIDEsIDIxNiwgMzksIDI0MywgMTM1LCA4MywgMSwgMjE2LCAKKyAgICAzOSwgMTg0LCA4MywgMSwgMjE2LCAzOSwgMjE3LCAxMDUsIDgzLCAxLCAyMTYsIDM5LCAyNDgsIDIyMSwgODMsIDEsIDIxNiwgCisgICAgMzksIDI1MCwgMTU3LCA4MywgMSwgMjE2LCAzOSwgMjM1LCAxNDEsIDgzLCAxLCAyMTYsIDM5LCAyMTUsIDE4MywgODMsIDEsIAorICAgIDIxNiwgMzksIDE5MSwgODMsIDEsIDIxNiwgMzksIDIxMiwgNjUsIDgzLCAxLCAyMTYsIDM5LCAxNzYsIDgzLCAxLCAyMTYsIAorICAgIDM5LCAyNDMsIDEzMiwgODMsIDEsIDIxNiwgMzksIDI0MiwgNDYsIDgzLCAxLCAyMTYsIDM5LCAyMzUsIDEwNywgODMsIDEsIAorICAgIDIxNiwgMzksIDIyOCwgMjMxLCA4MywgMSwgMjE2LCAzOSwgMjQ2LCAzOCwgODMsIDEsIDIxOSwgMTkwLCA3NSwgODMsIDEsIAorICAgIDIxOSwgMTkwLCA3MywgODMsIDEsIDIxOSwgMTkwLCAyMzUsIDE1MiwgODMsIDEsIDIxOSwgMTkwLCAyMTQsIDIxNCwgODMsIAorICAgIDEsIDIxOSwgMTkwLCA3MCwgODMsIDEsIDIxOSwgMTkwLCAyNTQsIDExNSwgODMsIDEsIDIxOSwgMTkwLCAxNzYsIDgzLCAxLCAKKyAgICAyMTksIDE5MCwgMjQzLCAxMzUsIDgzLCAxLCAyMTksIDE5MCwgMTYyLCA4MywgMSwgMjE5LCAxOTAsIDE5MCwgODMsIDEsIAorICAgIDIxOSwgMTkwLCAyMjAsIDEwMiwgODMsIDEsIDIxOSwgMTkwLCAyMTcsIDEwNSwgODMsIDEsIDIxOSwgMTkwLCAyNDgsIDIyMSwgCisgICAgODMsIDEsIDIxOSwgMTkwLCAyMzUsIDE0MSwgODMsIDEsIDIxOSwgMTkwLCAyNDQsIDE5NiwgODMsIDEsIDIxOSwgMTkwLCAKKyAgICAyNDMsIDEzMiwgODMsIDEsIDIxOSwgMTkwLCAyNDIsIDQ2LCA4MywgMSwgMjE5LCAxOTAsIDIxNSwgMTgzLCA4MywgMSwgCisgICAgMjE5LCAxOTAsIDIxMCwgMTE2LCA4MywgMSwgMjE5LCAxOTAsIDIyMywgMTg0LCA4MywgMSwgMjE5LCAxOTAsIDI1MCwgMTU3LCAKKyAgICA4MywgMSwgMjE5LCAxOTAsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgNzMsIDgzLCAxLCAyMzEsIDE4MywgMTc2LCA4MywgCisgICAgMSwgMjMxLCAxODMsIDIwNSwgODMsIDEsIDIzMSwgMTgzLCAyNDQsIDE5NiwgODMsIDEsIDIzMSwgMTgzLCAyMTAsIDgyLCAKKyAgICA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTQsIDc2LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMywgCisgICAgMTQ4LCAxMTAsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDI0OCwgMTg2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTQsIDIyNCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjM1LCAxOTMsIDIxNCwgMjI0LCA4MywgMSwgMjU0LCAxNjIsIAorICAgIDI0MywgMTE2LCAyNTIsIDE1NSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTM0LCAyNTIsIDE1NSwgODMsIDEsIDI1NCwgCisgICAgMTYyLCAyNDMsIDExNiwgNjEsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDczLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAxNzYsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIyOSwgNzcsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDI1MSwgMzMsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNSwgMTU2LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAKKyAgICAyMTUsIDE0NCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAxMzUsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIyOCwgMTEwLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTcsIDEwNSwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgCisgICAgMjQ4LCAyMjEsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDE5MCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjI1LCAKKyAgICAxNDcsIDgzLCAxLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxOCwgMjIzLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIAorICAgIDgyLCA4MywgMSwgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIDExNiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjU0LCAKKyAgICAyMDksIDgzLCAxLCAyMTYsIDM5LCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjE2LCAzOSwgMjU0LCAKKyAgICAxNjIsIDI0MywgMTE2LCAyMTAsIDgyLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQyLCAyNDksIAorICAgIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMjksIDc3LCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAKKyAgICAyNDMsIDExNiwgMjUxLCAzMywgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzNSwgMTE0LCA4MywgMSwgCisgICAgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjE1LCAxNTYsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAyNDgsIDExOSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxNywgMTA1LCA4MywgMSwgMjMxLCAKKyAgICAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ4LCAyNSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIAorICAgIDIxOCwgMjIzLCA4MywgMSwgMjMxLCAxODMsIDI1NCwgMTYyLCAyNDMsIDExNiwgMjQ5LCA3MiwgODMsIDEsIDIzMSwgMTgzLCAKKyAgICAyNTQsIDE2MiwgMjQzLCAxMTYsIDIxMCwgODIsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyMTAsIAorICAgIDExNiwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTYzLCA3MCwgODMsIDEsIDI1NCwgMTYyLCAyNDMsIDExNiwgMTYzLCAKKyAgICAxOTEsIDgzLCAxLCAyMzEsIDE4MywgMjU0LCAxNjIsIDI0MywgMTE2LCAyNTIsIDE4LCA4MywgMSwgMjU0LCAxNjIsIDI0MywgCisgICAgMTE2LCAyNDgsIDIxMSwgODMsIDEsIDIzMSwgMTgzLCAyNTQsIDE2MiwgMjQzLCAxMTYsIDIzMiwgMjU0LCAxOCwgMTksIAorICAgIDIyNiwgMTA5LCAxOCwgMTksIDI1MywgMTY3LCAxOCwgMTksIDI1NSwgMjgsIDE4LCAxOSwgMjEyLCAyNSwgMTgsIDE5LCAKKyAgICAyMjQsIDIyMSwgMTgsIDE5LCAyMjUsIDIyOSwgMTgsIDE5LCAyMjQsIDEwNSwgMTgsIDE5LCAyMTcsIDMxLCAxOCwgMTksIAorICAgIDIzNCwgMTg5LCAxOCwgMTksIDIzMywgMTc5LCAxOCwgMTksIDIzMSwgMTMyLCAxOCwgMTksIDIyOCwgMzcsIDE4LCAxOSwgCisgICAgMjI5LCAxODEsIDE4LCAxOSwgMjMzLCA2OCwgMTgsIDE5LCAyMTksIDIyLCAxOCwgMTksIDIyMSwgMjExLCAxOCwgMTksIAorICAgIDIxOSwgMjMyLCAxOCwgMTksIDIyMCwgNjYsIDE4LCAxOSwgMjE5LCAyMDEsIDE4LCAxOSwgMjEwLCAyMjAsIDE4LCAxOSwgCisgICAgMjExLCA1MiwgMTgsIDE5LCAyMjMsIDEzNCwgMTgsIDE5LCAyMjcsIDE3MSwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNzEsIAorICAgIDE4LCAxOSwgMjI3LCAxNzAsIDE4LCAxOSwgMjI2LCAyMTYsIDIyNywgMTcwLCAxOCwgMTksIDIyNywgMTY5LCAxOCwgMTksIAorICAgIDIyNiwgMjE2LCAyMjcsIDE2OSwgMTgsIDE5LCAyMjcsIDE2OCwgMTgsIDE5LCAyMjYsIDIxNiwgMjI3LCAxNjgsIDE4LCAxOSwgCisgICAgMjIyLCAxMDUsIDE4LCAxOSwgMjIyLCAxMDQsIDE4LCAxOSwgMjIyLCAxMDMsIDE4LCAxOSwgMjIyLCAxMDIsIDE4LCAxOSwgCisgICAgMjIyLCAxMDEsIDE4LCAxOSwgMjIyLCAxMDksIDE4LCAxOSwgMjI2LCAyMTYsIDIyNiwgMTA1LCAxOCwgMTksIDIyNiwgMjE2LCAKKyAgICAyMTcsIDE1MiwgMTgsIDE5LCAyMjYsIDIxNiwgMjM1LCAyMywgMTgsIDE5LCAyMjYsIDIxNiwgMjUxLCA2NiwgMTgsIDE5LCAKKyAgICAyMjYsIDIxNiwgMTkzLCAxOCwgMTksIDIyNiwgMjE2LCAyMzAsIDI1LCAxOCwgMTksIDIyNiwgMjE2LCAyMjIsIDkxLCAxOCwgCisgICAgMTksIDIyNiwgMjE2LCAyMjAsIDEwNCwgMTgsIDE5LCAyNDUsIDIxOSwgMjEyLCA5OCwgMTgsIDE5LCAyMTIsIDcsIDIxMiwgCisgICAgOTgsIDE4LCAxOSwgNDAsIDQsIDIyMiwgMjMzLCAxOCwgMTksIDQwLCAyMjMsIDE1NywgMjQ3LCAxMjAsIDE4LCAxOSwgMjIzLCAKKyAgICAyMjMsIDIyMiwgMTA2LCAxOCwgMTksIDE1OSwgMjMyLCAxMjcsIDE4LCAxOSwgMTU5LCAyMzMsIDEzNCwgMTgsIDE5LCAyMTYsIAorICAgIDEyNiwgMTgsIDE5LCAyMTYsIDEyOCwgMTgsIDE5LCAyMTUsIDEzNiwgMTgsIDE5LCAyMTUsIDEzOCwgMTgsIDE5LCAyMTUsIAorICAgIDE0MywgMTgsIDE5LCAyMTYsIDQ5LCAxOCwgMTksIDIxNiwgNTEsIDE4LCAxOSwgMjIxLCAyMDksIDIxOSwgMjA2LCAxOCwgCisgICAgMTksIDIyMSwgMjA5LCAyMjAsIDEsIDE4LCAxOSwgMjIxLCAyMDksIDI0MSwgNTMsIDE4LCAxOSwgNzIsIDI0MiwgNzMsIDE4LCAKKyAgICAxOSwgNzIsIDI0OCwgNTIsIDI0MywgNTUsIDE4LCAxOSwgNzIsIDI0MywgMTMyLCAxOCwgMTksIDcyLCAyNDIsIDc4LCAxOCwgCisgICAgMTksIDIyMSwgMjA5LCAyMzUsIDMzLCAxOCwgMTksIDcyLCAyMzUsIDMxLCAxOCwgMTksIDI1MiwgNjgsIDI0OCwgNTIsIAorICAgIDE1NiwgMTgsIDE5LCAyNTIsIDY4LCAyNDgsIDUyLCAxNTMsIDE4LCAxOSwgNzIsIDI0OCwgNDcsIDIyMiwgOTEsIDIzMiwgCisgICAgMjIzLCAyMTMsIDEyMiwgMjMzLCAxMCwgMjMyLCAyMjMsIDEsIDE3NiwgMjMyLCAyMjMsIDEsIDIzNCwgMTMyLCAyMzIsIAorICAgIDIyMywgMSwgMjQzLCAxMzUsIDIzMiwgMjIzLCAxLCAyNDIsIDI0OSwgMjMyLCAyMjMsIDEsIDIyOSwgNzcsIDIzMiwgMjIzLCAKKyAgICAxLCAyNTEsIDMzLCAyMzIsIDIyMywgMSwgMjUwLCAxNTcsIDIzMiwgMjIzLCAxLCAyMzUsIDE0MSwgMjMyLCAyMjMsIDEsIAorICAgIDIzNSwgMTE0LCAyMzIsIDIyMywgMSwgMjExLCA3MSwgMjMyLCAyMjMsIDEsIDIxNywgMTA1LCAyMzIsIDIyMywgMSwgMjE2LCAKKyAgICAyMDgsIDIzMiwgMjIzLCAxLCAyNDgsIDIyMSwgMjMyLCAyMjMsIDEsIDI0OCwgMjUsIDIzMiwgMjIzLCAxLCAxOTcsIDIzMiwgCisgICAgMjIzLCAxLCAxOTAsIDIzMiwgMjIzLCAxLCAyMjUsIDE0NywgMjMyLCAyMjMsIDEsIDI1MiwgMTkxLCAyMzIsIDIyMywgMSwgCisgICAgMjUyLCAxOCwgMjMyLCAyMjMsIDEsIDE4NCwgMjMyLCAyMjMsIDEsIDE5MSwgMjMyLCAyMjMsIDEsIDIwNSwgMjMyLCAyMjMsIAorICAgIDEsIDIzMywgMTM1LCAyMzIsIDIyMywgMSwgMjEyLCA2NSwgMjMyLCAyMjMsIDEsIDIyMCwgMTAyLCAyMzIsIDIyMywgMSwgCisgICAgMjE4LCAyMjMsIDIzMiwgMjIzLCAxLCAyMDYsIDIzMiwgMjIzLCAxLCAxNjIsIDIzMiwgMjIzLCAyNSwgNSwgNjEsIDIzMiwgCisgICAgMjIzLCAyNSwgNSwgNzMsIDIzMiwgMjIzLCAyNSwgNSwgNzAsIDIzMiwgMjIzLCAyNSwgNSwgMjQ1LCAyMDksIDIzMiwgMjIzLCAKKyAgICAyNSwgNSwgMjU0LCAyMDEsIDIzMiwgMjIzLCAyNSwgNSwgMjI2LCAxODMsIDIzMiwgMjIzLCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDIzMiwgMjIzLCAyNSwgNSwgNzUsIDIzMiwgMjIzLCAyNSwgNSwgNzYsIDIzMiwgMjIzLCAyMTgsIDczLCAxLCAxOTEsIDIzMiwgCisgICAgMjIzLCAyMTgsIDczLCAxLCAyMDUsIDIzMiwgMjIzLCAyMTgsIDczLCAxLCAyMTIsIDY1LCAyMzIsIDIyMywgNCwgMSwgMTc2LCAKKyAgICAyMzIsIDIyMywgNCwgMSwgMjI5LCA3NywgMjMyLCAyMjMsIDQsIDEsIDI1NCwgNzUsIDIzMiwgMjIzLCA0LCAxLCAyMTcsIAorICAgIDEwNSwgMjMyLCAyMjMsIDQsIDEsIDE5NywgMjMyLCAyMjMsIDQsIDEsIDE5MCwgMjMyLCAyMjMsIDQsIDEsIDE4NCwgMjMyLCAKKyAgICAyMjMsIDQsIDEsIDIwNSwgMjMyLCAyMjMsIDQsIDEsIDIzMywgMTM1LCAyMzIsIDIyMywgNSwgMjMwLCA4OSwgMjMyLCAyMjMsIAorICAgIDUsIDIzNCwgMTcxLCAyMzIsIDIyMywgNSwgMjIyLCAzMiwgMjMyLCAyMjMsIDUsIDIzMiwgMTI3LCAyMzIsIDIyMywgMjQ1LCAKKyAgICAzMSwgNzgsIDIzMiwgMjIzLCAyMjQsIDEzLCA3OCwgMjMyLCAyMjMsIDIxLCAyMTAsIDg2LCAyMzIsIDIyMywgMjEsIDExMCwgCisgICAgMjMyLCAyMjMsIDIxLCAxMDUsIDIzMiwgMjIzLCAyMSwgMTU4LCAyMzIsIDIyMywgMjEsIDE2MSwgMjMyLCAyMjMsIDIxLCAKKyAgICAxODksIDIzMiwgMjIzLCAyMSwgMTk0LCAyMzIsIDIyMywgMjEsIDE5OCwgMjMyLCAyMjMsIDIxLCAxOTUsIDIzMiwgMjIzLCAKKyAgICAyMSwgMjAwLCAzOSwgMjMzLCA1OSwgMSwgMTc2LCAzOSwgMjMzLCA1OSwgMSwgMjExLCAxNjUsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAyMjksIDc3LCAzOSwgMjMzLCA1OSwgMSwgMjE1LCAxODMsIDM5LCAyMzMsIDU5LCAxLCAyMDYsIDM5LCAyMzMsIDU5LCAxLCAKKyAgICAxOTEsIDM5LCAyMzMsIDU5LCAxLCAyMTcsIDEwNSwgMzksIDIzMywgNTksIDEsIDIxNiwgMjA4LCAzOSwgMjMzLCA1OSwgMSwgCisgICAgMjMzLCAxMzUsIDM5LCAyMzMsIDU5LCAxLCAxOTAsIDM5LCAyMzMsIDU5LCAxLCAyMjUsIDE0NywgMzksIDIzMywgNTksIDEsIAorICAgIDE4NCwgMzksIDIzMywgNTksIDEsIDI0NCwgMTk2LCAzOSwgMjMzLCA1OSwgMSwgMjE0LCAyNywgMzksIDIzMywgNTksIDEsIAorICAgIDE2MiwgMzksIDIzMywgNTksIDEsIDIyNCwgODgsIDM5LCAyMzMsIDU5LCAxLCAyMzQsIDEzMiwgMzksIDIzMywgNTksIDEsIAorICAgIDIxNSwgMTc1LCAzOSwgMjMzLCA1OSwgMSwgMTk3LCAzOSwgMjMzLCA1OSwgMSwgNjEsIDM5LCAyMzMsIDU5LCAxLCA3MywgCisgICAgMzksIDIzMywgNTksIDEsIDI0NSwgMjA5LCAzOSwgMjMzLCA1OSwgMSwgMjQ1LCAxOTcsIDM5LCAyMzMsIDU5LCAxLCA3MCwgCisgICAgMzksIDIzMywgNTksIDEsIDIyNiwgMTgzLCAzOSwgMjMzLCA1OSwgMSwgNzYsIDM5LCAyMzMsIDU5LCAxLCAyMTQsIDIxNCwgCisgICAgMzksIDIzMywgNTksIDEsIDc1LCAzOSwgMjMzLCA1OSwgMSwgMjUzLCAxOTAsIDM5LCAyMzMsIDU5LCAxLCAyNTQsIDIwMSwgCisgICAgMzksIDIzMywgNTksIDEsIDIxNiwgMjgsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI3LCAzOSwgMjMzLCA1OSwgMSwgMjE2LCAKKyAgICAyNiwgMzksIDIzMywgNTksIDEsIDIxNiwgMjUsIDM5LCAyMzMsIDU5LCAxLCAyMTYsIDI0LCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyNSwgMjI0LCA4OCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNCwgODgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxNzYsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIyOSwgNzcsIDE2NiwgMzksIAorICAgIDE3MywgMSwgMTIxLCAxNzYsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMTEsIDE2NSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIAorICAgIDIyOSwgNzcsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTUsIDE4MywgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDIwNiwgMTY2LCAKKyAgICAzOSwgMTczLCAxLCAxMjUsIDE5MSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNSwgMTgzLCAxNjYsIDM5LCAxNzMsIDEsIAorICAgIDEyMSwgMjA2LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjE3LCAxMDUsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAyMTYsIDIwOCwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE5NywgMTY2LCAzOSwgMTczLCAxLCAKKyAgICAxMjEsIDIxNywgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMjE2LCAyMDgsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxOTcsIAorICAgIDE2NiwgMzksIDE3MywgMSwgMTI1LCAxOTAsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMjUsIDE0NywgMTY2LCAzOSwgMTczLCAKKyAgICAxLCAxMjUsIDE4NCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDE5MCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIyNSwgMTQ3LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgMTg0LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjQ0LCAxOTYsIDE2NiwgMzksIDE3MywgCisgICAgMSwgMTI1LCAyMTQsIDI3LCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxMzUsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAKKyAgICAyNDQsIDE5NiwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIxNCwgMjcsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyMzMsIDEzNSwgCisgICAgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDE2MiwgMTY2LCAzOSwgMTczLCAxLCAxMjUsIDI0OCwgMjIxLCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyNSwgMjUyLCAxOTEsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAxNjIsIDE2NiwgMzksIDE3MywgMSwgMTIxLCAyNDgsIAorICAgIDIyMSwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDI1MiwgMTkxLCAxNjYsIDM5LCAxNzMsIDEsIDEyNSwgMjMzLCAxODQsIDE2NiwgCisgICAgMzksIDE3MywgMSwgMTI1LCAyMTEsIDEzOCwgMTY2LCAzOSwgMTczLCAxLCAxMjEsIDIzMywgMTg0LCAxNjYsIDM5LCAxNzMsIAorICAgIDEsIDEyMSwgMjExLCAxMzgsIDE2NiwgMzksIDE3MywgMSwgMTI1LCAyMTgsIDgyLCAxNjYsIDM5LCAxNzMsIDEsIDEyMSwgCisgICAgMjE4LCA4MiwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjUsIDIxOSwgMjM5LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDczLCAKKyAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMzYsIDMzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCA3MCwgMTY2LCAzOSwgMTczLCAyNSwgCisgICAgNSwgMjE0LCAxMTgsIDE2NiwgMzksIDE3MywgMjUsIDUsIDc1LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTQsIDI0MywgMTY2LCAKKyAgICAzOSwgMTczLCAyNSwgNSwgNzYsIDE2NiwgMzksIDE3MywgMjUsIDUsIDIyNywgMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCisgICAgMjE0LCAyMTQsIDE2NiwgMzksIDE3MywgMjUsIDUsIDI1MywgMTY3LCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyNTUsIDI4LCAKKyAgICAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDExMSwgMTY2LCAzOSwgMTczLCAyNSwgNSwgMjI2LCAxMDksIDE2NiwgMzksIAorICAgIDE3MywgMjUsIDUsIDIyNiwgMjUzLCAxNjYsIDM5LCAxNzMsIDI1LCA1LCAyMTQsIDIxMCwgMTY2LCAzOSwgMTczLCAyNSwgNSwgCisgICAgMjM1LCAxNTIsIDE2NiwgMzksIDE3MywgMSwgNDAsIDIxNCwgMTA1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMjksIDc5LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEsIDQwLCAyMzAsIDI1LCAxNjYsIDM5LCAxNzMsIDEsIDQwLCAxOTMsIDE2NiwgMzksIDE3MywgMSwgCisgICAgNDAsIDIzNSwgMjMsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI0OSwgNjAsIDE2NiwgMzksIDE3MywgMSwgNDAsIDI1MywgMTU4LCAKKyAgICAxNjYsIDM5LCAxNzMsIDEzOCwgMjMxLCAxNTgsIDE2NiwgMzksIDE3MywgMTM4LCAyMzEsIDE1NywgMTY2LCAzOSwgMTczLCAKKyAgICAyMSwgMjEwLCA4NiwgMTY2LCAzOSwgMTczLCAyMSwgMTEwLCAxNjYsIDM5LCAxNzMsIDIxLCAxMDUsIDE2NiwgMzksIDE3MywgCisgICAgMjEsIDE1OCwgMTY2LCAzOSwgMTczLCAyMSwgMTYxLCAxNjYsIDM5LCAxNzMsIDIxLCAxODksIDE2NiwgMzksIDE3MywgMjEsIAorICAgIDE5NCwgMTY2LCAzOSwgMTczLCAyMSwgMTk4LCAxNjYsIDM5LCAxNzMsIDIxLCAxOTUsIDE2NiwgMzksIDE3MywgMjEsIDIwMCwgCisgICAgMTY2LCAzOSwgMTczLCA4OSwgMjEsIDExMCwgMTY2LCAzOSwgMTczLCA1LCAyMzMsIDEyMCwgMTY2LCAzOSwgMTczLCA1LCAKKyAgICAyMzMsIDExOSwgNjksIDE2LCAyMjUsIDIzNiwgNjksIDE2LCAyMzAsIDcyLCAyMzQsIDI1LCA2OSwgMTYsIDIyNSwgNzIsIAorICAgIDIzNCwgMjUsIDY5LCAxNiwgMjUyLCA1MCwgMjM0LCAyNSwgNjksIDE2LCAyNTEsIDEwNCwgMjM0LCAyNSwgNjksIDE2LCAKKyAgICAyMjQsIDIxNiwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIxMCwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIwOCwgMjM0LCAyNSwgCisgICAgNjksIDE2LCAyMjQsIDIxNCwgMjM0LCAyNSwgNjksIDE2LCAyMjQsIDIxMiwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE3MywgCisgICAgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2OSwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2OCwgMjM0LCAyNSwgNjksIDE2LCAKKyAgICAyNDgsIDE3MSwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE3MCwgMjM0LCAyNSwgNjksIDE2LCAyNDgsIDE2NywgMjM0LCAyNSwgCisgICAgNjksIDE2LCAyMTUsIDg3LCA2OSwgMTYsIDIzMCwgNzIsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNSwgNzIsIDIyMiwgMjA1LCAKKyAgICA2OSwgMTYsIDI1MiwgNTAsIDIyMiwgMjA1LCA2OSwgMTYsIDI1MSwgMTA0LCAyMjIsIDIwNSwgNjksIDE2LCAyMjQsIDIxNiwgCisgICAgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTAsIDIyMiwgMjA1LCA2OSwgMTYsIDIyNCwgMjA4LCAyMjIsIDIwNSwgNjksIDE2LCAKKyAgICAyMjQsIDIxNCwgMjIyLCAyMDUsIDY5LCAxNiwgMjI0LCAyMTIsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgMTczLCAyMjIsIAorICAgIDIwNSwgNjksIDE2LCAyNDgsIDE2OSwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNjgsIDIyMiwgMjA1LCA2OSwgMTYsIDI0OCwgCisgICAgMTcxLCAyMjIsIDIwNSwgNjksIDE2LCAyNDgsIDE3MCwgMjIyLCAyMDUsIDY5LCAxNiwgMjQ4LCAxNjcsIDIyMiwgMjA1LCAKKyAgICAyNTEsIDEyMSwgMSwgMTc2LCAyNTEsIDEyMSwgMSwgMjQzLCAxMzUsIDI1MSwgMTIxLCAxLCAyMjksIDc3LCAyNTEsIDEyMSwgCisgICAgMSwgMjI5LCAyMiwgMjUxLCAxMjEsIDEsIDE5MCwgMjUxLCAxMjEsIDEsIDI1MiwgMTkxLCAyNTEsIDEyMSwgMSwgMTg0LCAKKyAgICAyNTEsIDEyMSwgMSwgMjMwLCAxMDUsIDI1MSwgMTIxLCAxLCAyMTcsIDEwNSwgMjUxLCAxMjEsIDEsIDI0OCwgMjIxLCAyNTEsIAorICAgIDEyMSwgMSwgMTk3LCAyNTEsIDEyMSwgMSwgMjI4LCAzNiwgMjUxLCAxMjEsIDEsIDI1MSwgMzMsIDI1MSwgMTIxLCAxLCAKKyAgICAyMzUsIDE0MSwgMjUxLCAxMjEsIDEsIDIyNywgMTY1LCAyNTEsIDEyMSwgMSwgMjI3LCAxNTgsIDI1MSwgMTIxLCAxLCAxOTEsIAorICAgIDI1MSwgMTIxLCAxLCAyMDUsIDI1MSwgMTIxLCAxLCAyMzMsIDEzNSwgMjUxLCAxMjEsIDEsIDIxNCwgMjcsIDI1MSwgMTIxLCAKKyAgICAxLCAyMDYsIDI1MSwgMTIxLCAxLCA2MSwgMjUxLCAxMjEsIDEsIDE2MiwgMjUxLCAxMjEsIDI1LCA1LCA3MywgMjUxLCAxMjEsIAorICAgIDI1LCA1LCA3MCwgMjUxLCAxMjEsIDI1LCA1LCA3NSwgMjUxLCAxMjEsIDI1LCA1LCA3NiwgMjUxLCAxMjEsIDI1LCA1LCAKKyAgICAyNTQsIDI0MywgMjUxLCAxMjEsIDIyNiwgNjAsIDI1MSwgMTIxLCAyNDUsIDE0MywgNjQsIDIyMSwgMTcyLCAzOSwgODksIDEsIAorICAgIDEyNSwgMTc2LCAzOSwgODksIDEsIDEyNSwgMjM0LCAxMzIsIDM5LCA4OSwgMSwgMTI1LCAyMzMsIDE3MSwgMzksIDg5LCAxLCAKKyAgICAxMjEsIDE3NiwgMzksIDg5LCAxLCAxMjEsIDIzMywgMTcxLCAzOSwgODksIDEsIDEyMSwgMjM0LCAxMzIsIDM5LCA4OSwgMSwgCisgICAgMjI5LCA3NywgMzksIDg5LCAxLCAxMjUsIDI1MSwgMzMsIDM5LCA4OSwgMSwgMTI1LCAyNTAsIDE1NywgMzksIDg5LCAxLCAKKyAgICAxMjEsIDI1MSwgMzMsIDM5LCA4OSwgMSwgMTIxLCAyMDYsIDM5LCA4OSwgMSwgMTIxLCAyNTAsIDE1NywgMzksIDg5LCAxLCAKKyAgICAyMjcsIDE2NSwgMzksIDg5LCAxLCAyMjMsIDE0MCwgMzksIDg5LCAxLCAxMjUsIDIyMywgMTM4LCAzOSwgODksIDEsIDI0OCwgCisgICAgMjIxLCAzOSwgODksIDEsIDEyMSwgMjIzLCAxMzgsIDM5LCA4OSwgMSwgMjIzLCAxNDksIDM5LCA4OSwgMSwgMTI1LCAyMTcsIAorICAgIDEwNSwgMzksIDg5LCAxLCAxMjUsIDIxNiwgMjA4LCAzOSwgODksIDEsIDEyMSwgMjE3LCAxMDUsIDM5LCA4OSwgMSwgMTIxLCAKKyAgICAyMTYsIDIwOCwgMzksIDg5LCAxLCAxOTcsIDM5LCA4OSwgMSwgMjUyLCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAxOTAsIDM5LCAKKyAgICA4OSwgMSwgMTI1LCAyMjUsIDE0NywgMzksIDg5LCAxLCAxMjUsIDI0NCwgMTk2LCAzOSwgODksIDEsIDEyMSwgMTkwLCAzOSwgCisgICAgODksIDEsIDEyMSwgMjQ0LCAxOTYsIDM5LCA4OSwgMSwgMTIxLCAyMjUsIDE0NywgMzksIDg5LCAxLCAxODQsIDM5LCA4OSwgCisgICAgMSwgMTIxLCAxOTEsIDM5LCA4OSwgMSwgMTI1LCAxOTEsIDM5LCA4OSwgMSwgMjA1LCAzOSwgODksIDEsIDIyMiwgMTM3LCAKKyAgICAzOSwgODksIDEsIDIzMywgMTM1LCAzOSwgODksIDEsIDIzMiwgOTMsIDM5LCA4OSwgMSwgMjEyLCA2NSwgMzksIDg5LCAxLCAKKyAgICAxMjUsIDIyMCwgMTAyLCAzOSwgODksIDEsIDEyNSwgMjE4LCAyMjMsIDM5LCA4OSwgMSwgMTI1LCAyMDYsIDM5LCA4OSwgMSwgCisgICAgMTI1LCAxNjIsIDM5LCA4OSwgMSwgMjMyLCAxODQsIDM5LCA4OSwgMSwgNjEsIDM5LCA4OSwgMSwgMTIxLCAxNjIsIDM5LCAKKyAgICA4OSwgMSwgNzMsIDM5LCA4OSwgMSwgMjM2LCAzMywgMzksIDg5LCAxLCA3MCwgMzksIDg5LCAxLCAyMTQsIDExOCwgMzksIAorICAgIDg5LCAxLCAyNDUsIDIwOSwgMzksIDg5LCAxLCAyMjYsIDE4MywgMzksIDg5LCAxLCAyMzMsIDEyMCwgMzksIDg5LCAxLCAKKyAgICAyNDIsIDEzMiwgMjA2LCAzOSwgODksIDExNiwgNSwgMTQ3LCAyMDUsIDM5LCA4OSwgMTE2LCA1LCAxNDcsIDIzMywgMTM1LCAKKyAgICAzOSwgODksIDExNiwgNSwgMjMzLCAxMzYsIDIxNywgNTgsIDIzMywgMTA5LCAzOSwgODksIDUsIDIzMSwgMjA0LCAyMzQsIAorICAgIDIzMSwgMjMzLCAxMDksIDM5LCA4OSwgMTE2LCA1LCA0MCwgMjI5LCA3NywgMzksIDg5LCAxMTYsIDUsIDEyMSwgMTkwLCAzOSwgCisgICAgODksIDExNiwgNSwgMTI1LCAyMjMsIDEzOSwgMTc3LCAxMjEsIDE5MCwgMzksIDg5LCAxMTYsIDUsIDE4NCwgMzksIDg5LCAKKyAgICAxMTYsIDUsIDI1MiwgMTkxLCAzOSwgODksIDExNiwgNSwgMjA2LCAzOSwgODksIDUsIDIyMiwgMTAsIDM5LCA4OSwgMjUsIDUsIAorICAgIDYxLCAzOSwgODksIDI1LCA1LCAyMzEsIDIwNCwgMjIxLCAyMjYsIDM5LCA4OSwgMjUsIDUsIDI1NSwgNzMsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIxNywgNjQsIDI1NSwgNzMsIDM5LCA4OSwgMjUsIDUsIDczLCAzOSwgODksIDI1LCA1LCAyMzYsIDMzLCAzOSwgCisgICAgODksIDI1LCA1LCAyMTQsIDIxNCwgMzksIDg5LCAyNSwgNSwgMjE0LCAxMTcsIDM5LCA4OSwgMjUsIDUsIDcwLCAzOSwgODksIAorICAgIDI1LCA1LCAyMTQsIDExOCwgMzksIDg5LCAyNSwgNSwgNzYsIDM5LCA4OSwgMjUsIDUsIDIyNywgMSwgNTEsIDM5LCA4OSwgCisgICAgMjUsIDUsIDIyNiwgMTA5LCAzOSwgODksIDI1LCA1LCA3NSwgMzksIDg5LCAyNSwgNSwgMjU0LCAyNDMsIDM5LCA4OSwgMjUsIAorICAgIDUsIDIyNiwgMTgzLCAzOSwgODksIDI1LCA1LCAyNTQsIDIwMSwgMzksIDg5LCAyNSwgNSwgODksIDI1NCwgMjAxLCAzOSwgCisgICAgODksIDI1LCA1LCAyMjcsIDEsIDQ4LCAzOSwgODksIDUsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDg5LCA1LCAyMTYsIDI5LCAKKyAgICAzOSwgODksIDUsIDIxNiwgMjgsIDM5LCA4OSwgNSwgMjM0LCA5NywgMjE2LCAyNywgMzksIDg5LCA1LCAyMzQsIDk3LCAyMTYsIAorICAgIDI2LCAzOSwgODksIDUsIDIzNCwgOTcsIDIxNiwgMjUsIDM5LCA4OSwgNSwgMjIzLCAxODgsIDI0MiwgNDUsIDM5LCA4OSwgNSwgCisgICAgMjMxLCAyMDQsIDIyMSwgMjUzLCAzOSwgODksIDUsIDIzNCwgOTYsIDIzNCwgMjE1LCAzOSwgODksIDM4LCAyNDksIDExNSwgCisgICAgMjQ3LCAxMjAsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDIxMCwgODYsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDExMCwgMzksIDg5LCAKKyAgICAyNDEsIDQ2LCAyMSwgMTA1LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxNTgsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE2MSwgMzksIAorICAgIDg5LCAyNDEsIDQ2LCAyMSwgMTg5LCAzOSwgODksIDI0MSwgNDYsIDIxLCAxOTQsIDM5LCA4OSwgMjQxLCA0NiwgMjEsIDE5OCwgCisgICAgMzksIDg5LCAyNDEsIDQ2LCAyMSwgMTk1LCAzOSwgODksIDI0MSwgNDYsIDIxLCAyMDAsIDM5LCA4OSwgODksIDIxLCAyMTAsIAorICAgIDg2LCAzOSwgODksIDg5LCAyMSwgMTEwLCAzOSwgODksIDg5LCAyMSwgMTA1LCAzOSwgODksIDg5LCAyMSwgMTU4LCAzOSwgCisgICAgODksIDg5LCAyMSwgMTYxLCAzOSwgODksIDg5LCAyMSwgMTg5LCAzOSwgODksIDg5LCAyMSwgMTk0LCAzOSwgODksIDg5LCAKKyAgICAyMSwgMTk4LCAzOSwgODksIDg5LCAyMSwgMTk1LCAzOSwgODksIDg5LCAyMSwgMjAwLCAzOSwgODksIDUsIDIxMSwgMjQ5LCAKKyAgICAzOSwgODksIDUsIDIxMSwgMjQ4LCAzOSwgODksIDUsIDIyMSwgMjE1LCAzOSwgODksIDUsIDIzNCwgMTYwLCAzOSwgODksIDUsIAorICAgIDI0MCwgMjMyLCAzOSwgODksIDUsIDI0NywgMTM0LCAzOSwgODksIDUsIDIyMywgNDksIDIyMiwgMTg3LCAyMjMsIDE0OSwgCisgICAgMzksIDg5LCA1LCAyMzEsIDIwNCwgMjExLCA3MiwgMzksIDg5LCA1LCAyMzUsIDYsIDM5LCA4OSwgNSwgMjM1LCA1LCAzOSwgCisgICAgODksIDUsIDIyMSwgMjIyLCAzOSwgODksIDUsIDIyMSwgMjIxLCAzOSwgODksIDUsIDI0MiwgOSwgMzksIDg5LCA1LCAyNTEsIAorICAgIDMwLCAxMDIsIDUsIDIxNCwgMjAwLCAyMjMsIDMwLCAxMDIsIDUsIDIxNCwgMjAwLCAyNTEsIDEsIDEwMiwgNSwgMjUwLCAKKyAgICAxODYsIDEwMiwgNSwgMjE4LCAxNSwgMTAyLCA1LCAyNTEsIDIzMywgMTAyLCAxLCAyNTQsIDE4NCwgMTAyLCAxLCAyNTQsIAorICAgIDE4NSwgMjE3LCAxMywgMTAyLCAxLCAyMzYsIDI5LCAxMDIsIDEsIDIzNiwgMzAsIDIxNywgMTMsIDEwMiwgMSwgMjE0LCAKKyAgICAyMDMsIDEwMiwgMSwgMjE0LCAyMDQsIDIxNywgMTMsIDEwMiwgMSwgMjIzLCAxODgsIDIyMywgNzksIDEwMiwgMSwgMjIzLCAKKyAgICAxODgsIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMSwgMjMzLCAxMzYsIDIzMywgMjQsIDEwMiwgMSwgMjMzLCAxMzYsIDIzMywgCisgICAgMjUsIDIxNywgMTMsIDEwMiwgMSwgMjQ1LCAxNzksIDEwMiwgMSwgMjU0LCAxOTksIDEwMiwgMSwgMjI2LCAyMTIsIDEwMiwgCisgICAgMSwgMjI2LCAyMTMsIDIxNywgMTMsIDEwMiwgMSwgMTc2LCAxMDIsIDEsIDIzNSwgMTMsIDIzMSwgMjA3LCAxMDIsIDEsIAorICAgIDI0MywgMTM1LCAxMDIsIDEsIDI0MywgMTM2LCAyNDIsIDE2MSwgMTAyLCAxLCAyMjksIDc3LCAxMDIsIDEsIDI1MSwgMzMsIAorICAgIDEwMiwgMSwgMjUxLCAzNCwgMjMzLCAxMjMsIDEwMiwgMSwgMjM1LCAxNDEsIDEwMiwgMSwgMjM1LCAxNDIsIDIzNSwgMTE4LCAKKyAgICAxMDIsIDEsIDIyNywgMTY1LCAxMDIsIDEsIDIxNywgMTA2LCAyMzMsIDc2LCAxMDIsIDEsIDIxNywgMTA2LCAyMzAsIDY3LCAKKyAgICAyMzEsIDIwNywgMTAyLCAxLCAyNDgsIDIyMiwgMjMwLCA2NywgMjU0LCAxNDUsIDEwMiwgMSwgMjQ4LCAyMjIsIDIzMCwgNjcsIAorICAgIDIzMSwgMjA3LCAxMDIsIDEsIDIyOSwgMjI5LCAyMjMsIDE1MiwgMTAyLCAxLCAyMTcsIDEwNSwgMTAyLCAxLCAyMTcsIDEwNiwgCisgICAgMjE3LCAzNSwgMTAyLCAxLCAyNDgsIDIyMSwgMTAyLCAxLCAyNDgsIDIyMiwgMjMxLCAyMjUsIDEwMiwgMSwgMTk3LCAxMDIsIAorICAgIDEsIDE5MCwgMTAyLCAxLCAyMjYsIDkwLCAyMzQsIDIyNiwgMTAyLCAxLCAyNTIsIDE5MSwgMTAyLCAxLCAyNTIsIDE5MiwgCisgICAgMjM0LCAxNzIsIDEwMiwgMSwgMTg0LCAxMDIsIDEsIDE5MSwgMTAyLCAxLCAyMDUsIDEwMiwgMSwgMjMzLCAxMzUsIDEwMiwgCisgICAgMSwgMjEyLCA2NSwgMTAyLCAxLCAyMjIsIDM0LCAyMjIsIDIwLCAxMDIsIDEsIDIyMiwgMzQsIDIyMSwgMjMzLCAxMDIsIDEsIAorICAgIDIwNiwgMTAyLCAxLCAxNjIsIDEwMiwgNSwgMjIzLCA3MCwgMTAyLCAyNSwgNSwgMjE3LCAxMywgMTAyLCAyNSwgNSwgMjE0LCAKKyAgICAxOTksIDEwMiwgMjUsIDUsIDIxNCwgMjAwLCAyMjEsIDIyOSwgMTAyLCAyNSwgNSwgMjE4LCA0NywgMTAyLCAyNSwgNSwgCisgICAgMjE4LCA0OCwgMjM2LCAyMSwgMTAyLCAyNSwgNSwgMjIzLCAxODgsIDIyMywgNzksIDEwMiwgMjUsIDUsIDIyMywgMTg4LCAKKyAgICAyMjMsIDgwLCAyMTcsIDEzLCAxMDIsIDI1LCA1LCAyMzMsIDEzNiwgMjMzLCAyNCwgMTAyLCAyNSwgNSwgMjMzLCAxMzYsIAorICAgIDIzMywgMjUsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNywgNjUsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDIyMywgNzksIDEwMiwgCisgICAgMjUsIDUsIDIxNywgNjYsIDIxNywgMTMsIDEwMiwgMjUsIDUsIDIxNywgNjYsIDIyMywgODAsIDIxNywgMTMsIDEwMiwgMjUsIAorICAgIDUsIDIyNSwgMTg0LCAxMDIsIDI1LCA1LCAyMjUsIDE4NSwgMjE3LCAxMywgMTAyLCAyNTQsIDI1MCwgMjU0LCAyNDksIDEwMiwgCisgICAgMSwgMjM0LCAyNTEsIDIyMSwgMjI4LCAxMDIsIDEsIDIzNCwgMTAyLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTUsIDM0LCAyMjEsIAorICAgIDIyOCwgMTAyLCAxLCAyNDUsIDIwMywgMjIxLCAyMjgsIDEwMiwgMSwgMjE0LCAwLCAyMjEsIDIyOCwgMTAyLCAxLCAyMTAsIAorICAgIDEwNywgMjIxLCAyMjgsIDEwMiwgMSwgMjUzLCAyMDksIDIyMSwgMjI4LCAxMDIsIDIxLCAyMTAsIDg2LCAxMDIsIDIxLCAKKyAgICAxMTAsIDEwMiwgMjEsIDEwNSwgMTAyLCAyMSwgMTU4LCAxMDIsIDIxLCAxNjEsIDEwMiwgMjEsIDE4OSwgMTAyLCAyMSwgCisgICAgMTk0LCAxMDIsIDIxLCAxOTgsIDEwMiwgMjEsIDE5NSwgMTAyLCAyMSwgMjAwLCAxMDIsIDIyNiwgMjksIDEwMiwgMjI2LCAKKyAgICA1NSwgMTAyLCAyMTEsIDIzOCwgMTAyLCAyNTAsIDIzNiwgMjI2LCA0OCwgMTAyLCAyNTAsIDIzNiwgMjE5LCAxNzIsIDEwMiwgCisgICAgMjUwLCAyMzYsIDIyNiwgMiwgMTAyLCAyMjYsIDU0LCAxMDIsIDI4LCAxNiwgMjQ3LCAxMjYsIDEwMiwgMjgsIDE2LCAyNDgsIAorICAgIDUxLCAxMDIsIDI4LCAxNiwgMjQ2LCA2NCwgMTAyLCAyOCwgMTYsIDI0OCwgMTc2LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzcsIAorICAgIDIxOCwgMTUsIDEwMiwgMjgsIDE2LCAyNDcsIDIwNSwgMTAyLCAyOCwgMTYsIDI0OCwgMjE0LCAxMDIsIDI4LCAxNiwgMjQ4LCAKKyAgICAzMywgMTAyLCAyOCwgMTYsIDI0OCwgMTk4LCAxMDIsIDI4LCAxNiwgMjQ4LCAxNzcsIDI0MywgNTcsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjE3LCA5LCAxMDIsIDI4LCAxNiwgMzgsIDI0NSwgMTQxLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgMTY3LCAxMDIsIAorICAgIDI4LCAxNiwgMzgsIDIzNCwgMTY5LCAxMDIsIDI4LCAxNiwgMzgsIDIzNSwgMTIyLCAxMDIsIDI4LCAxNiwgMzgsIDIzNCwgCisgICAgMTY4LCAyLCAyMzUsIDEyMiwgMTAyLCAyOCwgMTYsIDM4LCAyMzQsIDE3MCwgMiwgMjM1LCAxMjIsIDEwMiwgMjgsIDE2LCAKKyAgICAzOCwgMjUyLCAzNywgMTAyLCAyOCwgMTYsIDM4LCAyNDIsIDE2NSwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyMDQsIDI0NiwgCisgICAgNzQsIDEwMiwgMjgsIDE2LCAyMjIsIDI0OSwgMjA0LCAyNDgsIDIxMiwgMTAyLCAyOCwgMTYsIDIyMiwgMjQ5LCAyNTAsIDAsIAorICAgIDIxNSwgMTExLCAxMDIsIDI4LCAxNiwgMjIyLCAyNDksIDI1MCwgMCwgMjE3LCA3MywgMTAyLCAyOCwgMTYsIDIzMywgNDQsIAorICAgIDIwNCwgMjI2LCA0MywgMTAyLCAyOCwgMTYsIDIzMywgNDQsIDIwNCwgMjI0LCAxMzksIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAKKyAgICAyNTAsIDAsIDIyNSwgMzgsIDEwMiwgMjgsIDE2LCAyMzMsIDQ0LCAyNTAsIDAsIDIyNSwgMjYsIDEwMiwgMjgsIDE2LCAyMzMsIAorICAgIDQ0LCAyMDQsIDIyNSwgNjEsIDIwNywgNSwgMjI2LCAyNiwgMjA3LCA1LCAyMjYsIDM5LCAyMDcsIDUsIDIyNiwgMzUsIDIwNywgCisgICAgMSwgNjEsIDIwNywgMSwgNzMsIDIwNywgMSwgNzAsIDIwNywgMSwgMjU0LCAyNDMsIDIwNywgMSwgNzYsIDIwNywgMSwgNzUsIAorICAgIDIwNywgMSwgMjQ1LCA1NSwgMjA3LCAxLCAxNzYsIDIwNywgMSwgMjI0LCA4OCwgMjA3LCAxLCAyNDMsIDEzNSwgMjA3LCAxLCAKKyAgICAyMjksIDc3LCAyMDcsIDEsIDI1MSwgMzMsIDIwNywgMSwgMjM1LCAxNDEsIDIwNywgMSwgMjEwLCAxMTYsIDIwNywgMSwgCisgICAgMjI3LCAxNjUsIDIwNywgMSwgMjE3LCAxMDUsIDIwNywgMSwgMjQ4LCAyMjEsIDIwNywgMSwgMTk3LCAyMDcsIDEsIDE5MCwgCisgICAgMjA3LCAxLCAyNDQsIDE5NiwgMjA3LCAxLCAyMTQsIDI3LCAyMDcsIDEsIDI1MiwgMTkxLCAyMDcsIDEsIDE4NCwgMjA3LCAxLCAKKyAgICAxOTEsIDIwNywgMSwgMjA1LCAyMDcsIDEsIDIzMywgMTM1LCAyMDcsIDEsIDIxMiwgNjUsIDIwNywgMSwgMjA2LCAyMDcsIDEsIAorICAgIDIxMSwgMTY1LCAyMDcsIDEsIDE2MiwgMjA3LCAxMTYsIDUsIDIyNiwgNTIsIDIwNywgMTE2LCA1LCAyMjYsIDI4LCAyMDcsIAorICAgIDExNiwgNSwgMjI2LCAyNSwgMjA3LCAyNSwgNSwgMjI2LCA0MiwgMjA3LCAyNSwgNSwgMjI2LCAyNCwgMjA3LCAyNSwgNSwgCisgICAgMjI2LCA0NiwgMjA3LCAyNSwgNSwgMjI2LCAzNCwgMjA3LCAyNSwgNSwgMjI2LCA1MywgMjA3LCAyNSwgNSwgMjI2LCA0NCwgCisgICAgMjA3LCA1LCAyMjYsIDU2LCAyMDcsIDUsIDIxMywgMTUyLCAyMDcsIDExNiwgNSwgMjI1LCAyNDgsIDE4NCwgMjA3LCAxMTYsIAorICAgIDUsIDIyNSwgMjQ4LCAyMTIsIDY1LCAyMDcsIDEsIDIzNCwgMTMyLCAyMDcsIDEsIDIxNywgMjMxLCAyMDcsIDIxLCAyMTAsIAorICAgIDg2LCAyMDcsIDIxLCAxMTAsIDIwNywgMjEsIDEwNSwgMjA3LCAyMSwgMTU4LCAyMDcsIDIxLCAxNjEsIDIwNywgMjEsIDE4OSwgCisgICAgMjA3LCAyMSwgMTk0LCAyMDcsIDIxLCAxOTgsIDIwNywgMjEsIDE5NSwgMjA3LCAyMSwgMjAwLCAyMDcsIDI1MywgMTc1LCAKKyAgICAyMDcsIDEsIDIyMywgNTIsIDIwNywgMSwgMjMzLCA3LCAyMDcsIDEsIDI1MiwgMTgsIDIwNywgMSwgNDAsIDIzNSwgMjMsIAorICAgIDIwNywgMSwgNDAsIDE5MywgMjUyLCAxMjAsIDEsIDYxLCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDYxLCAyNTIsIDEyMCwgMSwgCisgICAgMTYyLCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDE2MiwgMjUyLCAxMjAsIDEsIDIzMSwgMTgxLCAxNjIsIDI1MiwgMTIwLCAxLCAKKyAgICAyNTIsIDE5MSwgMjUyLCAxMjAsIDEsIDIzNCwgMjEyLCAyNTIsIDE5MSwgMjUyLCAxMjAsIDEsIDE5MCwgMjUyLCAxMjAsIDEsIAorICAgIDIxOSwgMTY0LCAxOTAsIDI1MiwgMTIwLCAxLCAxOTcsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMTk3LCAyNTIsIDEyMCwgMSwgCisgICAgMjEyLCA2NSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyMTIsIDY1LCAyNTIsIDEyMCwgMSwgMjI2LCA2NywgMjEyLCA2NSwgCisgICAgMjUyLCAxMjAsIDEsIDI0MywgMTM1LCAyNTIsIDEyMCwgMSwgMjE5LCAxNjQsIDI0MywgMTM1LCAyNTIsIDEyMCwgMSwgMjM1LCAKKyAgICAxNDEsIDI1MiwgMTIwLCAxLCAyNDgsIDIyMSwgMjUyLCAxMjAsIDEsIDIwNSwgMjUyLCAxMjAsIDEsIDIxOSwgMTY0LCAyMDUsIAorICAgIDI1MiwgMTIwLCAxLCAxODQsIDI1MiwgMTIwLCAxLCAyMTksIDE2NCwgMTg0LCAyNTIsIDEyMCwgMSwgMjE5LCAyNiwgMjE3LCAKKyAgICAxMDUsIDI1MiwgMTIwLCAxLCAyMjgsIDU1LCAyMTcsIDEwNSwgMjUyLCAxMjAsIDEsIDIwNiwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAyMDYsIDI1MiwgMTIwLCAxLCAyMzEsIDE4MSwgMjA2LCAyNTIsIDEyMCwgMSwgMTkxLCAyNTIsIDEyMCwgMSwgMjE5LCAKKyAgICAxNjQsIDE5MSwgMjUyLCAxMjAsIDEsIDIyOSwgNzcsIDI1MiwgMTIwLCAxLCAyMzMsIDEzNSwgMjUyLCAxMjAsIDEsIDIxOSwgCisgICAgMTY0LCAyMzMsIDEzNSwgMjUyLCAxMjAsIDEsIDIyNywgMTY1LCAyNTIsIDEyMCwgMSwgMjUxLCAzMywgMjUyLCAxMjAsIDEsIAorICAgIDIyOSwgMTQ4LCAyNTIsIDEyMCwgMSwgMjMxLCAxMjQsIDI1MiwgMTIwLCAxLCA3MywgMjUyLCAxMjAsIDEsIDcwLCAyNTIsIAorICAgIDEyMCwgNSwgMjE2LCAzMywgMjUyLCAxMjAsIDI1LCA1LCA3NSwgMjUyLCAxMjAsIDI1LCA1LCAyMjYsIDY3LCA3NSwgMjUyLCAKKyAgICAxMjAsIDI1LCA1LCAyNDUsIDIwOSwgMjUyLCAxMjAsIDI1LCA1LCA3MywgMjUyLCAxMjAsIDI1LCA1LCAyMzQsIDIxMiwgNzMsIAorICAgIDI1MiwgMTIwLCAyNSwgNSwgNzYsIDI1MiwgMTIwLCAyNSwgNSwgMjM0LCAyMTIsIDc2LCAyNTIsIDEyMCwgMjUsIDUsIDcwLCAKKyAgICAyNTIsIDEyMCwgMjUsIDUsIDEwNCwgMzEsIDIxOSwgMTY0LCAyMDYsIDI1MiwgMTIwLCAxMTYsIDUsIDIyOSwgNzksIDI1MiwgCisgICAgMTIwLCAxMTYsIDUsIDI0MiwgNjAsIDI1MiwgMTIwLCAyMjYsIDM3LCAyNTIsIDEyMCwgMjI2LCAzMywgMjUyLCAxMjAsIDE2LCAKKyAgICAyNTEsIDI0MSwgMjI5LCAyMjksIDIzMSwgMzcsIDI1MiwgMTIwLCAxNiwgMjUxLCAyNDEsIDIyNSwgNjQsIDI1MiwgMTIwLCAKKyAgICAxNiwgMjUxLCAyNDEsIDIzNSwgNDgsIDI1MiwgMTIwLCAxNiwgMjUxLCAyNDEsIDIyNiwgMzcsIDE5NiwgMSwgMTc2LCAxOTYsIAorICAgIDEsIDIzNCwgMzksIDE5NiwgMSwgMjM0LCAxMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDE5NiwgMSwgMjQyLCAxODYsIDE5NiwgMSwgCisgICAgMjI5LCA3NywgMTk2LCAxLCAyNTEsIDMzLCAxOTYsIDEsIDI1MCwgMTU3LCAxOTYsIDEsIDIzNSwgMTQxLCAxOTYsIDEsIAorICAgIDIyNywgMTY1LCAxOTYsIDEsIDIxNywgMTA1LCAxOTYsIDEsIDIxNiwgMjA4LCAxOTYsIDEsIDI0OCwgMjIxLCAxOTYsIDEsIAorICAgIDE5NywgMTk2LCAxLCAxOTAsIDE5NiwgMSwgMjI1LCA0MiwgMTk2LCAxLCAyMjUsIDE0NywgMTk2LCAxLCAyNDQsIDE5NiwgCisgICAgMTk2LCAxLCAyNDQsIDc1LCAxOTYsIDEsIDI1MiwgMTkxLCAxOTYsIDEsIDI1MSwgMjIyLCAxOTYsIDEsIDE4NCwgMTk2LCAxLCAKKyAgICAyMzAsIDE2OCwgMTk2LCAxLCAyMTUsIDE4MywgMTk2LCAxLCAyMTUsIDE3NSwgMTk2LCAxLCAyNDYsIDM4LCAxOTYsIDEsIAorICAgIDE5MSwgMTk2LCAxLCAyMDUsIDE5NiwgMSwgMjMzLCAxMzUsIDE5NiwgMSwgMTYyLCAxOTYsIDEsIDI0MSwgMTUzLCAxOTYsIAorICAgIDEsIDIxNCwgMjcsIDE5NiwgMSwgMjA2LCAxOTYsIDEsIDIyMCwgMTAyLCAxOTYsIDEsIDIxMiwgNjUsIDE5NiwgMSwgNjEsIAorICAgIDE5NiwgMjE4LCA3MywgMSwgMTkxLCAxOTYsIDIxOCwgNzMsIDEsIDIwNSwgMTk2LCAyNSwgNSwgMjU1LCA3MywgMTk2LCAyNSwgCisgICAgNSwgNzMsIDE5NiwgMjUsIDUsIDc2LCAxOTYsIDI1LCA1LCAyMjYsIDE4MywgMTk2LCAyNSwgNSwgNzAsIDE5NiwgMjUsIDUsIAorICAgIDIxNCwgMTE4LCAxOTYsIDI1LCA1LCA3NSwgMTk2LCAxMTYsIDUsIDIzNSwgMjMsIDE5NiwgMTE2LCA1LCAxOTMsIDE5NiwgCisgICAgMTE2LCA1LCAxNTYsIDE5NiwgMTE2LCA1LCAyMzAsIDI1LCAxOTYsIDExNiwgNSwgMjI2LCAxMDUsIDE5NiwgMTE2LCA1LCAKKyAgICAxNTMsIDE5NiwgMTE2LCA1LCAyMTcsIDE1MiwgMTk2LCAxMTYsIDUsIDIyNywgMTQyLCAxOTYsIDExNiwgNSwgMjM0LCAyMzAsIAorICAgIDE5NiwgNSwgMjIzLCAxNTAsIDE5NiwgNSwgMjI3LCAyMDUsIDE5NiwgMjI0LCAxNDEsIDIxNywgMTAzLCAxOTYsIDIyNCwgCisgICAgMTQxLCAyMjcsIDE1MiwgMjE2LCAxMjAsIDIxNywgMTAzLCAxOTYsIDIyNCwgMTQxLCAyNTAsIDE2NCwgMTk2LCAyMjQsIAorICAgIDE0MSwgMjE1LCAxNzAsIDI1MCwgMTY0LCAxOTYsIDIyNCwgMTQxLCAyMTUsIDE2OSwgMTk2LCAyMSwgMjEwLCA4NiwgMTk2LCAKKyAgICAyMSwgMTEwLCAxOTYsIDIxLCAxMDUsIDE5NiwgMjEsIDE1OCwgMTk2LCAyMSwgMTYxLCAxOTYsIDIxLCAxODksIDE5NiwgMjEsIAorICAgIDE5NCwgMTk2LCAyMSwgMTk4LCAxOTYsIDIxLCAxOTUsIDE5NiwgMjEsIDIwMCwgMTk2LCAxLCAyMTUsIDE1NiwgMTk2LCAxLCAKKyAgICAyMTUsIDE0NCwgMTk2LCAxLCAyNDgsIDEzNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMjEwLCA4NiwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAyMSwgMTEwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxMDUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIAorICAgIDE1OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTYxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAxODksIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMjEsIDE5NCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMSwgMTk4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDIxLCAKKyAgICAxOTUsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjEsIDIwMCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIDEzNSwgMjI2LCAKKyAgICAyMTAsIDI1MCwgMTAzLCAxLCAyNTMsIDIwNiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDIxNiwgMjI2LCAyMTAsIAorICAgIDI1MCwgMTAzLCAxLCAyNTQsIDExNSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTQsIDE3OCwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMzMsIDEzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDM1LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIAorICAgIDI1NSwgMzYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjU1LCAzNCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyNTUsIDI5LCAKKyAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzMiwgMjQxLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDIzNSwgMTcxLCAyMjYsIAorICAgIDIxMCwgMjUwLCAxMDMsIDEsIDIzNiwgMzQsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjM1LCAxOTAsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjM1LCAxNzksIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCA5OCwgMjI2LCAyMTAsIDI1MCwgCisgICAgMTAzLCAxLCAyMTQsIDIyMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDIxOSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAKKyAgICAyMTQsIDE2OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMTQsIDExMSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAxLCAyMzMsIAorICAgIDU4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTA4LCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMjEyLCAKKyAgICAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgMTUwLCAyMjYsIDIxMCwgMjUwLCAxMDMsIDEsIDI0NSwgODYsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMSwgMjMyLCAxNTYsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMzcsIDIyNiwgMjEwLCAKKyAgICAyNTAsIDEwMywgMSwgMjI2LCAyNTIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMSwgMjI2LCAxMjUsIDIyNiwgMjEwLCAyNTAsIAorICAgIDEwMywgMSwgMjI2LCAyMjIsIDIyNiwgMjEwLCAyNTAsIDEwMywgMjMwLCAxMDMsIDIxNSwgMTIxLCAyMjYsIDIxMCwgMjUwLCAKKyAgICAxMDMsIDI0MywgMTMwLCAyMTUsIDEyMiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMzAsIDEwMSwgMjE1LCAxMjIsIDIyNiwgCisgICAgMjEwLCAyNTAsIDEwMywgMjIzLCA5MiwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjUsIDE0NSwgMjI2LCAyMTAsIDI1MCwgMTAzLCAKKyAgICAyNTQsIDIwOCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIDE0MSwgMjMwLCA5OCwgMjI2LCAyMTAsIDI1MCwgMTAzLCAyMjQsIAorICAgIDE0MSwgNTIsIDIzMCwgOTgsIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAyMTgsIDgsIDIwNywgMjI0LCAxNDEsIDI1MSwgCisgICAgMjQxLCAyMjYsIDM4LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjI0LCAxMjksIDIwNywgMjI0LCAxNDEsIDI1MSwgMjQxLCAKKyAgICAyNTEsIDE5LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjMzLCA4LCAyMjEsIDIyNSwgMjA3LCAyMjQsIDE0MSwgMjUxLCAKKyAgICAyNDEsIDIzNSwgMTMsIDIyMSwgMjI1LCAyMDcsIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjQ4LCAyMjIsIDIyMSwgMjI1LCAyMDcsIAorICAgIDIyNCwgMTQxLCAyNTEsIDI0MSwgMjUyLCAxOTIsIDIyMSwgMjI1LCAyMTMsIDI1MiwgMTM4LCAyMzQsIDIxMCwgMjEzLCAKKyAgICAyNTIsIDEzOCwgMjIwLCA3NywgMjEzLCAyNTIsIDEzOCwgMjI0LCAxOTgsIDIxMywgMjUyLCA1LCAyMjgsIDIwOSwgMjEzLCAKKyAgICAyNTIsIDUsIDIxMSwgODAsIDIzMCwgMjIyLCAyMTgsIDAsIDIxMywgMjUyLCAxMzgsIDIxMSwgODAsIDI1NCwgMjEzLCAyMzUsIAorICAgIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTEsIDgwLCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAKKyAgICAyMTEsIDgwLCAyMzQsIDE5OCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDEzOCwgMjUxLCAyLCA1MSwgMjEzLCAyNTIsIAorICAgIDEzOCwgMjExLCA4MCwgMjM0LCAxOTgsIDIzNSwgMjQzLCAyMTgsIDEsIDIyMSwgMTk3LCAyMTMsIDI1MiwgMTM4LCA1MiwgCisgICAgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMTUsIDIxMSwgMjE4LCAwLCAyMTMsIDI1MiwgMTM4LCAyMzQsIDE5OCwgMjU0LCAKKyAgICA3NywgMjEzLCAyNTIsIDEzOCwgNTksIDUxLCAyMTMsIDI1MiwgMTM4LCAxMTMsIDE3MCwgNTEsIDIxMywgMjUyLCAxMzgsIAorICAgIDEzNCwgMTcwLCA1MSwgMjEzLCAyNTIsIDEzOCwgMjIyLCAyNDAsIDIzNCwgMjA5LCAyMzUsIDI0MywgMjE4LCAwLCAyMTMsIAorICAgIDI1MiwgMTM4LCAyNTMsIDIwNCwgMjM1LCAyNDMsIDIxOCwgMCwgMjEzLCAyNTIsIDUsIDIxMywgMTQ4LCAyMTgsIDAsIDIxMywgCisgICAgMjUyLCA1LCAyMTMsIDE0OCwgMjE0LCAyMTYsIDIxMywgMjUyLCA1LCAyMjMsIDQ5LCAyMTMsIDE0OCwgMjE0LCAyMTYsIAorICAgIDIxMywgMjUyLCA1LCAyMTMsIDE0OCwgMjU0LCA3NywgMjEzLCAyNTIsIDUsIDIyMywgNDksIDIxMywgMTQ4LCAyNTQsIDc3LCAKKyAgICAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDIxNCwgMjE3LCAyLCAyMTcsIDc3LCAyMTMsIDI1MiwgNSwgMjEzLCAxNDgsIDI1NCwgCisgICAgNzgsIDIsIDIxNywgNzcsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyNTQsIDkxLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjUyLCAKKyAgICAxNjYsIDIxMywgMjUyLCA1LCAyNTQsIDc2LCAyMTQsIDIwLCAyMTMsIDI1MiwgNSwgMjU0LCA3NiwgMjE0LCAyMSwgMiwgCisgICAgMjE3LCA3NywgMjEzLCAyNTIsIDUsIDIxNiwgNjgsIDIxMywgMjUyLCA1LCAyNDEsIDE5MSwgMTk5LCAyNTQsIDc1LCAyMTMsIAorICAgIDI1MiwgNSwgMTk5LCAyNTQsIDc1LCAyMTMsIDI1MiwgNSwgMjIyLCAxNDIsIDE5OSwgMjU0LCA3NSwgMjEzLCAyNTIsIDUsIAorICAgIDI1NCwgNzYsIDIxNCwgMjIzLCAyMzAsIDkwLCAyMTMsIDI1MiwgNSwgMjU0LCAyMCwgMjEzLCAyNTIsIDUsIDIyMiwgMTg3LCAKKyAgICAyNTQsIDIwLCAyMTMsIDI1MiwgMTM4LCAyNTEsIDIsIDQ4LCAyMTMsIDI1MiwgNSwgMjM1LCAxMDIsIDIxMywgMjUyLCA1LCAKKyAgICAyMTQsIDE2MSwgNywgMSwgNCwgNiwgNjEsIDcsIDEsIDQsIDYsIDI1NCwgMjQzLCA3LCA0LCAxLCAyMTUsIDk0LCAyNTQsIAorICAgIDI0MywgNywgMSwgNCwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA3LCAxLCA0LCA2LCAyNTEsIDY2LCA3LCAxLCA0LCA2LCAKKyAgICAyNDksIDYwLCA3LCAxLCA0LCA2LCAyNDUsIDU5LCA3LCAxLCA0LCA2LCA3NSwgNywgNCwgMSwgMjE1LCA5NCwgMjA0LCA3NSwgCisgICAgNywgNCwgMSwgMjE1LCA5NCwgNzMsIDcsIDEsIDQsIDYsIDIzNSwgMTQ0LCA3LCAxLCA0LCA2LCAyMzUsIDIzLCA3LCAxLCA0LCAKKyAgICA2LCAyMzMsIDE0OSwgMiwgOTEsIDcsIDEsIDQsIDYsIDE5MywgNywgMSwgNCwgNiwgMjIzLCA0OSwgMjMwLCAyNSwgNywgMSwgCisgICAgNCwgNiwgNzYsIDcsIDEsIDQsIDYsIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCA3NiwgNywgNCwgMSwgMjE5LCAxODcsIAorICAgIDIwNCwgNzYsIDcsIDQsIDEsIDIxOSwgMTg3LCAxNDQsIDIsIDkxLCA3LCA0LCAxLCAyMTUsIDk0LCAyMjYsIDIzNCwgNywgMSwgCisgICAgNCwgNiwgMjI2LCAxMzQsIDcsIDQsIDEsIDIxNiwgMTQsIDE2MywgNzYsIDcsIDQsIDEsIDI1MSwgMTc1LCAxNjMsIDc2LCA3LCAKKyAgICAxLCA0LCA2LCAyMjYsIDEwNSwgNywgMSwgNCwgNiwgMjIzLCA0OSwgMTUzLCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxNTMsIDcsIAorICAgIDEsIDQsIDYsIDIxNywgMTUyLCA3LCAxLCA0LCA2LCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDcwLCA3LCA0LCAxLCAyMTksIAorICAgIDE4NywgMjQ4LCAwLCA3MCwgNywgNCwgMSwgMjE5LCAxODcsIDIxNSwgOTQsIDE5MywgNywgMSwgNCwgNiwgMjE0LCAxMDUsIAorICAgIDcsIDEsIDQsIDYsIDIxMiwgOTgsIDcsIDEsIDQsIDYsIDIxMCwgMTU5LCA3LCAxLCA0LCA2LCAyNDUsIDgsIDcsIDEsIDIxMywgCisgICAgMTM1LCAyMzMsIDgyLCAyMTgsIDI1MCwgNywgMSwgMjU0LCAxOTYsIDI2LCAxLCA0LCA2LCAyNDMsIDEwNywgMjYsIDEsIDQsIAorICAgIDYsIDIzMywgOTgsIDI2LCAxLCA0LCA2LCAyMjUsIDEwOCwgMjYsIDEsIDQsIDYsIDIyMywgMzcsIDI2LCAxLCA0LCA2LCAKKyAgICAyMjQsIDE2MSwgMzMsIDEsIDQsIDYsIDI0NSwgMTc0LCA1OCwgMSwgNiwgNjEsIDU4LCAxLCA2LCAyNTQsIDI0MywgNTgsIDEsIAorICAgIDYsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjUyLCAxMzQsIDI1MywgMTU4LCA1OCwgMSwgNiwgMjQ5LCA2MCwgNTgsIDEsIDYsIAorICAgIDc1LCA1OCwgMSwgNiwgMjIzLCA0OSwgNzUsIDU4LCAxLCA2LCAyNDMsIDIwMiwgNTgsIDEsIDYsIDI0MiwgNjAsIDU4LCAxLCAKKyAgICA2LCA3MywgNTgsIDEsIDYsIDIzNSwgMTQ0LCA1OCwgMSwgNiwgMjM1LCAyMywgNTgsIDEsIDYsIDE1NiwgNTgsIDEsIDYsIAorICAgIDE5MywgNTgsIDEsIDYsIDIzMCwgMjUsIDU4LCAxLCA2LCAyMjMsIDQ5LCAyMzAsIDI1LCA1OCwgMSwgNiwgNzYsIDU4LCAxLCAKKyAgICA2LCAyMjYsIDEzNCwgNTgsIDEsIDYsIDIyNiwgMTA1LCA1OCwgMSwgNiwgMTUzLCA1OCwgMSwgNiwgMjE3LCAxNTIsIDU4LCAKKyAgICAxLCA2LCA3MCwgNTgsIDEsIDYsIDIxMiwgOTgsIDU4LCAxLCA0LCA2MSwgNTgsIDEsIDQsIDIxNSwgOTQsIDYxLCA1OCwgMSwgCisgICAgNCwgMjU0LCAxNDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyNTQsIDI0MywgNTgsIDEsIDQsIDI1MywgMTU4LCA1OCwgMSwgNCwgCisgICAgMjQ5LCA2MCwgNTgsIDEsIDQsIDc1LCA1OCwgMSwgNCwgMjIxLCAxOTUsIDU4LCAxLCA0LCAyMDQsIDc1LCA1OCwgMSwgNCwgCisgICAgMjE1LCA5NCwgMjA0LCA3NSwgNTgsIDEsIDQsIDI0MywgMjAyLCA1OCwgMSwgNCwgMjE1LCA5NCwgNzMsIDU4LCAxLCA0LCAKKyAgICAyMzUsIDIzLCA1OCwgMSwgNCwgMTkzLCA1OCwgMSwgNCwgMjQ1LCAxMzgsIDU4LCAxLCA0LCA3NiwgNTgsIDEsIDQsIDIwNCwgCisgICAgNzYsIDU4LCAxLCA0LCAyMTYsIDE0LCAxNjMsIDc2LCA1OCwgMSwgNCwgMjUxLCAxNzUsIDE2MywgNzYsIDU4LCAxLCA0LCAKKyAgICAyMjYsIDEwNSwgNTgsIDEsIDQsIDIxNywgMTUyLCA1OCwgMSwgNCwgNzAsIDU4LCAxLCA0LCAyMTksIDE4NywgNzAsIDU4LCAKKyAgICAxLCA0LCAyMTUsIDk0LCAxOTMsIDU4LCAxLCA0LCAyMTQsIDEwNSwgNTgsIDEsIDQsIDI1NCwgMTk2LCA1OCwgMSwgNCwgCisgICAgMjUyLCAyNiwgNTgsIDEsIDQsIDI2LCAyNDMsIDEwNywgNTgsIDEsIDQsIDI0OCwgNTQsIDU4LCAxLCA0LCAyNiwgMjI1LCAKKyAgICAxMzMsIDU4LCAxLCA0LCAyNTAsIDExMCwgNywgMjE4LCA2NSwgNCwgMSwgNzMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1MywgNywgCisgICAgMjE4LCA2NSwgNCwgMSwgNzAsIDcsIDIxOCwgNjUsIDQsIDEsIDIxNCwgMTA1LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjUyLCAKKyAgICAyNiwgMjYsIDIxOCwgNjUsIDQsIDEsIDI0MywgMTA3LCAyNiwgMjE4LCA2NSwgNCwgMSwgMjIzLCAzNywgMjYsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIyNSwgMTMzLCAyNiwgMjE4LCA2NSwgNCwgMSwgMjUwLCAxMTAsIDcsIDQsIDEsIDIxNCwgMjE0LCA3LCA0LCAxLCAKKyAgICA1NywgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjQ1LCAKKyAgICA3LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMzAsIAorICAgIDI2LCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMjYsIDEwNiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjIzLCAKKyAgICAyMjQsIDIsIDIzMCwgMjI0LCAxODIsIDcsIDQsIDEsIDIyMywgMjI0LCAyLCAyNDQsIDg4LCAyMiwgMjMwLCAyMjQsIDE4MiwgCisgICAgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDIzMCwgMjI0LCAxODIsIAorICAgIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyMzAsIDIyNCwgMTgyLCA3LCA0LCAxLCAyMTUsIDk0LCAyNDMsIDIwMiwgNTgsIDEsIAorICAgIDMzLCAyNDUsIDE1MCwgNywgNCwgMSwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA0LCAxLCAyMTYsIDIxMSwgMiwgMjE4LCAKKyAgICAxMDcsIDcsIDQsIDYsIDEsIDI0MCwgMTU0LCAyLCA5MSwgNywgNCwgMSwgMjM1LCAxODYsIDIsIDkxLCA3LCA0LCAxLCAyMjYsIAorICAgIDEwNiwgMiwgOTEsIDcsIDQsIDYsIDEsIDEwNCwgMiwgOTEsIDcsIDQsIDEsIDIxNCwgMTU4LCAyLCA5MSwgNywgNCwgMSwgCisgICAgNTcsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDUsIDcsIAorICAgIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjQzLCAyMDMsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjM1LCAyNCwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyMzIsIDUwLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjI2LCAxMDYsIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgNjYsIDEwMywgNywgNCwgMSwgMjIyLCA5MiwgMiwgCisgICAgMjI2LCA2NiwgMTAzLCA3LCA0LCAxLCAyNDUsIDc2LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxMSwgMTc5LCAyLCAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAKKyAgICAyMjYsIDY2LCAxMDMsIDcsIDQsIDEsIDExNSwgMiwgMjIzLCA1NSwgMTAzLCA3LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjIzLCAKKyAgICA1NSwgMTAzLCA3LCA0LCAxLCAyNDksIDYxLCAyLCAyNDEsIDUyLCAyMiwgMjE3LCA3NywgNywgNCwgMSwgMTYwLCAyLCAyMjMsIAorICAgIDU1LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTYwLCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIyMywgNDksIDIwNCwgMTYwLCAKKyAgICAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIyMSwgMTk2LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0MCwgMTU0LCAKKyAgICAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0NSwgNzYsIDIsIAorICAgIDIyMywgNTUsIDEwMywgNywgNCwgMSwgMTA0LCAyLCAyMjMsIDU1LCAxMDMsIDcsIDQsIDEsIDI0NSwgOSwgMiwgMjIzLCA1NSwgCisgICAgMTAzLCA1OCwgMSwgNCwgMjE1LCA5NCwgMjU0LCAxNDMsIDU4LCAxLCA0LCAyNTEsIDY2LCA1OCwgMSwgNCwgMjUxLCA2NywgCisgICAgMiwgMjQ5LCAxMDAsIDU4LCAxLCA0LCAyNDUsIDU5LCA1OCwgMSwgNCwgMjIzLCA0OSwgMjA0LCA3NSwgNTgsIDEsIDQsIAorICAgIDI0NSwgNiwgNTgsIDEsIDQsIDI0NywgMTE5LCAyMzUsIDE0NSwgMiwgOTEsIDU4LCAxLCA0LCAxMTksIDI0MywgMjAyLCA1OCwgCisgICAgMSwgNCwgMjE1LCA5NCwgMjQyLCA2MCwgNTgsIDEsIDQsIDI0MCwgMTU0LCAyLCA5MSwgNTgsIDEsIDQsIDIzNSwgMTg1LCAKKyAgICA1OCwgMSwgNCwgNiwgNzMsIDU4LCAxLCA0LCA2LCAyNDAsIDE1NCwgMiwgOTEsIDU4LCAxLCA0LCAyMzUsIDE0NSwgMiwgCisgICAgMjQ5LCAxMjcsIDU4LCAxLCA0LCAyMzMsIDE0OSwgMiwgMjIzLCA1NSwgMTAzLCA1OCwgMSwgNCwgMjMzLCAxNDksIDIsIAorICAgIDIyNiwgNjYsIDEwMywgNTgsIDEsIDQsIDYsIDE1NiwgNTgsIDEsIDQsIDIzMiwgNTAsIDIsIDEwMywgNTgsIDEsIDQsIDIxNSwgCisgICAgOTQsIDIzMiwgNTAsIDIsIDE5OSwgMjMzLCAzNiwgNTgsIDEsIDQsIDIzMCwgMjYsIDIsIDQzLCAxMDMsIDU4LCAxLCA0LCAKKyAgICAyMzAsIDI2LCAyLCAyMjMsIDU1LCAxMDMsIDU4LCAxLCA0LCA2LCAyMzAsIDI1LCA1OCwgMSwgNCwgMjUyLCAxMzQsIDc2LCAKKyAgICA1OCwgMSwgNCwgMjI1LCAxMzMsIDU4LCAxLCA0LCAyMjIsIDkyLCAyLCAxMDMsIDU4LCAxLCA0LCAyNDUsIDc1LCA1OCwgMSwgCisgICAgNCwgMjE3LCAxNTMsIDIsIDIyNiwgNjYsIDEwMywgNTgsIDEsIDQsIDEwNCwgMTMwLCA1OCwgMSwgNCwgMjE0LCAxNTcsIDU4LCAKKyAgICAxLCA0LCA2LCA3MCwgNTgsIDEsIDQsIDIxNCwgMTA2LCAyLCAxMDMsIDU4LCAxLCA0LCAyMTUsIDk0LCAyMTQsIDEwNSwgNTgsIAorICAgIDEsIDQsIDIxMCwgMTU5LCA1OCwgMSwgNCwgMjEwLCAxNjAsIDIsIDIyMywgNTUsIDEwMywgNTgsIDEsIDQsIDIxMCwgMTYwLCAKKyAgICAyLCAyNDksIDEwMCwgNTgsIDEsIDQsIDI0NSwgOCwgNTgsIDEsIDQsIDIxNiwgMTc5LCAzOCwgMjQ2LCAxMTgsIDI0MiwgCisgICAgMTM3LCAyNTUsIDE0LCAzOCwgMjQ2LCAxMTgsIDI1NSwgMywgMjU1LCAxNCwgMzgsIDIxOSwgNjksIDUxLCAzOCwgMjE4LCA2LCAKKyAgICA3OCwgMzgsIDIzMSwgMjMxLCAzOCwgMjQyLCAxMzQsIDM4LCAyMzEsIDIyOSwgMzgsIDI1NSwgMSwgMzgsIDI0MiwgMTM1LCAKKyAgICAzOCwgMjU1LCAyLCAzOCwgNywgNCwgMSwgMjIzLCAyMjQsIDUxLCAzOCwgMjUxLCAxNDUsIDM4LCAyMzEsIDIzMCwgMzgsIAorICAgIDUyLCAyNTAsIDMxLCA0OCwgMzgsIDIyNiwgMjI1LCA0OCwgMzgsIDIxMCwgMzUsIDUxLCAzOCwgMjM1LCAxNzIsIDUxLCAzOCwgCisgICAgMjE0LCAxNTEsIDQ4LCAzOCwgMjE0LCAxMzQsIDQ4LCAzOCwgNywgNCwgMSwgMjQ0LCA2MywgMjA0LCAxMTUsIDQ4LCAzOCwgCisgICAgNywgNCwgMSwgMjU0LCAyNDMsIDM4LCA3LCA0LCAxLCAyNTQsIDczLCAzOCwgNywgNCwgMSwgMjUzLCAxNzYsIDM4LCA3LCA0LCAKKyAgICAxLCAyNTEsIDY3LCAyNTAsIDE4MywgMzgsIDcsIDQsIDEsIDIzNSwgMjEzLCAyNDksIDYwLCAzOCwgNywgNCwgMSwgMjQ1LCAKKyAgICA1OSwgMzgsIDcsIDQsIDEsIDI0MywgMjAyLCAzOCwgNywgMSwgNCwgNiwgMjQzLCAyMDIsIDM4LCA3LCA0LCAxLCAyMzUsIAorICAgIDIzLCAzOCwgNywgNCwgMSwgMTU2LCAzOCwgNywgMSwgNCwgNiwgMTU2LCAzOCwgNywgMSwgNCwgNiwgMTkzLCAzOCwgNywgNCwgCisgICAgMSwgMjMwLCAyNSwgMzgsIDcsIDEsIDQsIDYsIDIzMCwgMjUsIDM4LCA3LCAxLCA0LCA2LCAxNTMsIDM4LCA3LCA0LCAxLCAKKyAgICAyMjMsIDIyNCwgMjIyLCAxODYsIDM4LCA3LCA0LCAxLCAyMjIsIDkxLCAzOCwgNywgNCwgMSwgMTk5LCAyMjIsIDkxLCAzOCwgCisgICAgNywgNCwgMSwgMjEwLCAxNTksIDM4LCA1MiwgMjM1LCAxOTMsIDI1MSwgMTQ3LCA1MSwgMzgsIDI1NCwgMTQ4LCAxMjgsIAorICAgIDIxNiwgNDIsIDUxLCAzOCwgNDMsIDI1MywgMjUwLCA0OCwgMzgsIDQ0LCAyNTMsIDI1MCwgMjIsIDEyNCwgMjUzLCAyNTAsIAorICAgIDUxLCA3LCA2LCAxLCAxMTUsIDIsIDIyMiwgMjM0LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyMjIsIDIzNCwgNTEsIDcsIDYsIAorICAgIDEsIDU3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDU3LCAyLCA1OSwgNDgsIDcsIDYsIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDQsIAorICAgIDEsIDU3LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDU3LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDU3LCAyLCAyMzIsIDIxNCwgCisgICAgNTEsIDcsIDYsIDEsIDI1MSwgNjcsIDIsIDI1MCwgMTg0LCAyMiwgMTQyLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAyNTAsIAorICAgIDE4NCwgMjIsIDE0MiwgNywgNiwgMSwgMjQ5LCA2MSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDksIDYxLCAyLCA1OSwgNDgsIAorICAgIDcsIDYsIDEsIDI0OSwgNjEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDksIAorICAgIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjQ5LCA2MSwgCisgICAgMiwgMjUwLCAxODMsIDcsIDQsIDEsIDI0OSwgNjEsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDksIDYxLCAyLCAyNTAsIDMxLCAKKyAgICA1MSwgNywgNCwgMSwgMjQ5LCA2MSwgMiwgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDE2MCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIAorICAgIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAKKyAgICAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIAorICAgIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMTg0LCAyMiwgMjUxLCAxNDYsIDcsIDQsIDEsIAorICAgIDE2MCwgMiwgMjUwLCAxODQsIDIyLCAyNTEsIDE0NiwgNywgNiwgMSwgMjQ1LCA3LCAyLCA1OSwgNDgsIDcsIDQsIDEsIDI0NSwgCisgICAgNywgMiwgNTksIDQ4LCA3LCA2LCAxLCAyNDMsIDIwMywgMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMjQyLCA2MSwgMiwgNTksIDQ4LCA3LCA0LCAxLCAyNDIsIDYxLCAyLCA1OSwgNDgsIDcsIDYsIDEsIAorICAgIDI0MiwgNjEsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgNTksIDUxLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAKKyAgICAyNDgsIDEsIDcsIDQsIDEsIDI0MiwgNjEsIDIsIDI0OCwgMSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjUwLCAxODMsIDcsIDQsIAorICAgIDEsIDI0MiwgNjEsIDIsIDI1MCwgMTgzLCA3LCA2LCAxLCAyNDIsIDYxLCAyLCAyNTEsIDE0NywgNTEsIDcsIDQsIDEsIDI0MiwgCisgICAgNjEsIDIsIDI1MSwgMTQ3LCA1MSwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgMjE2LCA4OSwgNTEsIDcsIDYsIDEsIDI0MCwgMTU0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDQsIDEsIDI0MCwgCisgICAgMTU0LCAyLCAyNDgsIDIsIDIyLCAxNDIsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDE0MiwgNywgNCwgMSwgMjM1LCAyNCwgMiwgCisgICAgMTQyLCA3LCA2LCAxLCAyMzUsIDI0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDU5LCA1MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzUsIDI0LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDIzMywgMTQ5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMywgMTQ5LCAyLCAKKyAgICA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgNTksIDI1MiwgNDMsIDIyLCAyMzEsIAorICAgIDIzMiwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDIzMiwgMjE0LCAKKyAgICA1MSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMzMsIDE0OSwgMiwgMjUwLCAzMSwgNTEsIAorICAgIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE0MiwgNywgNCwgMSwgMjMyLCA1MCwgMiwgMTQyLCA3LCA2LCAxLCAyMzIsIDUwLCAyLCAKKyAgICA1OSwgNDgsIDcsIDQsIDEsIDIzMiwgNTAsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjMyLCA1MCwgMiwgNTksIDUxLCA3LCA0LCAKKyAgICAxLCAyMzIsIDUwLCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIzMCwgMjYsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjMwLCAyNiwgMiwgCisgICAgNTksIDQ4LCA3LCA2LCAxLCAyMzAsIDI2LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIzMCwgMjYsIDIsIDU5LCA1MSwgNywgNiwgCisgICAgMSwgMjMwLCAyNiwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDIzMCwgMjYsIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMzAsIDI2LCAyLCAyNTAsIDMxLCA1MSwgNywgNiwgMSwgMTQ0LCAKKyAgICAyLCAyMTYsIDg5LCAyMiwgMTQyLCA3LCA0LCAxLCAxNDQsIDIsIDIxNiwgODksIDIyLCAxNDIsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMjE2LCA4OSwgMjIsIDI0OCwgMSwgNywgNCwgMSwgMTQ0LCAyLCAyMTYsIDg5LCAyMiwgMjQ4LCAxLCA3LCA2LCAxLCAxNDQsIAorICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyMzEsIDIzMywgMjIsIDE0MiwgNywgNiwgCisgICAgMSwgMjI2LCAxMDYsIDIsIDE0MiwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDE0MiwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDU5LCAKKyAgICA0OCwgNywgNCwgMSwgMjI2LCAxMDYsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCA0OCwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjIzLCAyMjQsIDIsIAorICAgIDU5LCA1MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDU5LCAyNTIsIDQzLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDIyMywgCisgICAgMjI0LCAyLCA1OSwgMjUyLCA0MywgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCAKKyAgICA0LCAxLCAyMjMsIDIyNCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDQsIDEsIAorICAgIDIyMiwgOTIsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjIyLCA5MiwgMiwgNTksIDUxLCA3LCA0LCAxLCAyMjIsIDkyLCAyLCA1OSwgCisgICAgNTEsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDI1NSwgMywgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MiwgMiwgMjU1LCAzLCAKKyAgICAyMiwgNTksIDQ4LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyNTAsIDIzNSwgMjIsIDU5LCA0OCwgNywgNCwgMSwgMjIyLCA5MiwgCisgICAgMiwgMjUwLCAyMzUsIDIyLCA1OSwgNDgsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDU5LCAyNTIsIDQzLCAyMiwgNTksIDQ4LCA3LCAKKyAgICA0LCAxLCAyMjIsIDkyLCAyLCA1OSwgMjUyLCA0MywgMjIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTMsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIAorICAgIDIzMiwgMjE0LCA1MSwgNywgNiwgMSwgMjE3LCAxNTMsIDIsIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAyMTcsIDE1MywgMiwgCisgICAgMjUwLCAzMSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQ4LCAyLCA1MSwgNywgNCwgMSwgMTA0LCAyLCAyNDgsIDIsIDUxLCA3LCAKKyAgICA2LCAxLCAxMDQsIDIsIDIxNiwgODksIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDIxNiwgODksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIAorICAgIDI1MCwgMzEsIDUxLCA3LCA0LCAxLCAxMDQsIDIsIDI1MCwgMzEsIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDIxNiwgODksIDIyLCAKKyAgICAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjE2LCA4OSwgMjIsIDE0MiwgNywgNiwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIAorICAgIDI0OCwgMSwgNywgNCwgMSwgMTA0LCAyLCAyMzEsIDIzMywgMjIsIDI0OCwgMSwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDE4MiwgCisgICAgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDE4MiwgNywgNiwgMSwgMjE0LCAxMDYsIDIsIDU5LCA1MSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDYsIDIsIDU5LCA1MSwgNywgNiwgMSwgMjEyLCA5OSwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDI0MiwgCisgICAgMTM2LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxNDIsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDE0MiwgNywgNiwgMSwgMjEyLCAKKyAgICA5OSwgMiwgMjQ4LCAxLCA3LCA0LCAxLCAyMTIsIDk5LCAyLCAyNDgsIDEsIDcsIDYsIDEsIDIxMiwgOTksIDIsIDU5LCA0OCwgCisgICAgNywgNCwgMSwgMjEyLCA5OSwgMiwgNTksIDQ4LCA3LCA2LCAxLCAyMTIsIDk5LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMiwgCisgICAgOTksIDIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxNzksIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxNzksIDIsIDU5LCAKKyAgICA0OCwgNywgNiwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNCwgMSwgMjExLCAxNzksIDIsIDI0OCwgMSwgNywgNiwgMSwgCisgICAgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIDU5LCA0OCwgNywgNiwgMSwgMjEwLCAxNjAsIDIsIAorICAgIDI1MCwgMzAsIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNTAsIDMwLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAyMTAsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAyMTAsIDE2MCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAKKyAgICAyMTAsIDE2MCwgMiwgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAyNDIsIDYxLCAyLCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIAorICAgIDIxNywgMTUzLCAyLCAyNDgsIDEsIDcsIDQsIDEsIDIxMiwgOTksIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMjExLCAKKyAgICAxMTgsIDIsIDIyMiwgMjM0LCA0OCwgNywgNCwgMSwgMTE1LCAyLCA0NCwgMTYzLCAyMjIsIDIzMywgNywgNCwgMSwgMTk5LCAKKyAgICAyMjIsIDkyLCAyLCA1OSwgNDgsIDcsIDQsIDEsIDE5OSwgMjIyLCA5MiwgMiwgMjQ3LCAyNTUsIDkxLCA3LCA0LCAxLCAxOTksIAorICAgIDIyMiwgOTIsIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDIyMCwgNzYsIDIyMiwgOTEsIDcsIDQsIDEsIDI0OCwgNTQsIDcsIDYsIAorICAgIDEsIDExNSwgMiwgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTE1LCAyLCAyNDEsIDUyLCA0OCwgCisgICAgNywgNCwgMSwgMTE1LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMTQyLCA3LCA0LCAxLCAKKyAgICAxMTUsIDIsIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAKKyAgICAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxMTUsIDIsIDI1MCwgMzEsIAorICAgIDIyLCAxODIsIDcsIDQsIDEsIDExNSwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNiwgMSwgMTE1LCAyLCAyNTAsIDMxLCAyMiwgCisgICAgNTksIDUxLCA3LCA0LCAxLCAxMTUsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIAorICAgIDIyLCAxNDIsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAxNDIsIDcsIDYsIDEsIDExNSwgMiwgMjUxLCAxNDcsIAorICAgIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIAorICAgIDI1MSwgMTQ3LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDExNSwgMiwgMjUxLCAxNDcsIDIyLCAyNDEsIDUyLCA0OCwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE4MiwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDE4MiwgNywgCisgICAgNiwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDU5LCA1MSwgNywgNCwgMSwgMTE1LCAyLCAyNTEsIDE0NywgMjIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMTYwLCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE2MCwgMiwgNTksIDUxLCA3LCA2LCAxLCAxNjAsIDIsIAorICAgIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNjAsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNjAsIDIsIDE4MiwgNywgNCwgMSwgCisgICAgMTYwLCAyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAKKyAgICAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIAorICAgIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMTgyLCA3LCAKKyAgICA0LCAxLCAxNjAsIDIsIDI1MCwgMzEsIDIyLCAxODIsIDcsIDYsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgNTksIDUxLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjQxLCA1MiwgNDgsIDcsIAorICAgIDQsIDEsIDI0MCwgMTU0LCAyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCisgICAgMjQwLCAxNTQsIDIsIDU5LCA1MSwgNywgNiwgMSwgMTQ0LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgNTksIDUxLCA3LCAKKyAgICA2LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA0LCAxLCAxNDQsIDIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDI1MCwgMzEsIDIyLCAxNDIsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAKKyAgICAxNDQsIDIsIDI1MCwgMzEsIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDYsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDE4MiwgNywgNCwgMSwgMTQ0LCAyLCAyNTAsIDMxLCAyMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxNDQsIDIsIDI1MCwgMzEsIDIyLCA1OSwgNTEsIDcsIDQsIDEsIDE0NCwgMiwgMjUwLCAzMSwgMjIsIDU5LCAKKyAgICA1MSwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIAorICAgIDE0MiwgNywgNiwgMSwgMTQ0LCAyLCAyNDAsIDI0OSwgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAKKyAgICAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE0NCwgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMTQ0LCAKKyAgICAyLCAyNDAsIDI0OSwgMjIsIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA0LCAKKyAgICAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgMTgyLCA3LCA2LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCAKKyAgICA0LCAxLCAxNDQsIDIsIDI0MCwgMjQ5LCAyMiwgNTksIDUxLCA3LCA2LCAxLCAxMDQsIDIsIDU5LCA1MSwgNywgNCwgMSwgCisgICAgMTA0LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgMiwgMjQxLCA1MiwgCisgICAgNDgsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAxNDIsIDcsIDQsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAKKyAgICAxNDIsIDcsIDYsIDEsIDEwNCwgMiwgMjQwLCAyNDksIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgCisgICAgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMDQsIDIsIDI0MCwgMjQ5LCAyMiwgMjQxLCA1MiwgNDgsIDcsIDQsIDEsIDEwNCwgCisgICAgMiwgMjQwLCAyNDksIDIyLCAyNDEsIDUyLCA0OCwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNCwgCisgICAgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDE4MiwgNywgNiwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgCisgICAgNCwgMSwgMTA0LCAyLCAyNDAsIDI0OSwgMjIsIDU5LCA1MSwgNywgNiwgMSwgMjExLCAxMTgsIDIsIDI0MiwgMTM2LCA3LCA0LCAKKyAgICAxLCAyMTEsIDExOCwgMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCA1OSwgNTEsIDcsIDQsIDEsIDIxMSwgCisgICAgMTE4LCAyLCA1OSwgNTEsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyNDEsIDUyLCA0OCwgNywgNCwgMSwgMjExLCAxMTgsIDIsIAorICAgIDI0MSwgNTIsIDQ4LCA3LCA2LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA0LCAxLCAyMTEsIDExOCwgMiwgMTgyLCA3LCA2LCAKKyAgICAxLCAyMzAsIDIyMywgMjMyLCAxODUsIDcsIDQsIDEsIDIzMCwgMjIzLCAyMzIsIDE4NSwgNywgNiwgMSwgMjMwLCAyMjMsIAorICAgIDIxNCwgMTA1LCA3LCA0LCAxLCAyMzAsIDIyMywgMjE0LCAxMDUsIDcsIDYsIDEsIDIxMSwgMTE4LCAyLCAyMzIsIDEyMywgNywgCisgICAgNCwgMSwgMjExLCAxMTgsIDIsIDIzMiwgMTIzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIAorICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgCisgICAgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAKKyAgICAyNDgsIDE1MywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAKKyAgICAxMTAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAKKyAgICAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDI0NSwgMTAxLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgCisgICAgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTQsIDI2LCAKKyAgICA2LCAxLCAyNDUsIDEwMSwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDEzLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI0NSwgMTAxLCAyLCAKKyAgICAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCAxMDEsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIAorICAgIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgCisgICAgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAKKyAgICAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI0NSwgNjQsIAorICAgIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc1LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCisgICAgMTU0LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgCisgICAgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIAorICAgIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU0LCAyNiwgNCwgMSwgMjM1LCAxODYsIAorICAgIDIsIDI0OCwgMTUzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgCisgICAgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIAorICAgIDExMCwgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjM1LCAxODYsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyNDgsIDE1MywgMjYsIDYsIAorICAgIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAKKyAgICAyMzUsIDE4NiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIDIwMCwgMiwgCisgICAgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIAorICAgIDQsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgCisgICAgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTQsIDI2LCA2LCAxLCAyMjYsIDIwMCwgCisgICAgMiwgMjQ4LCAxNTMsIDI2LCA2LCAxLCAyMjYsIDIwMCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgCisgICAgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDAsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgCisgICAgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAKKyAgICAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDQsIDEsIAorICAgIDIxNCwgMTU4LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgCisgICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDIxNCwgCisgICAgMTU4LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTUzLCAyNiwgNiwgCisgICAgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjE0LCAxNTgsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTQsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTMsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAKKyAgICAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIDE3NSwgCisgICAgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc1LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIAorICAgIDIyNCwgMTU0LCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTUzLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTMsIDI2LCA2LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIAorICAgIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDIyNiwgMTEwLCAyNiwgNCwgMSwgMjQ1LCAxMDEsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyNDUsIAorICAgIDEwMSwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIzNSwgMTg2LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDQsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjI2LCAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgCisgICAgNCwgMSwgMjE0LCAxNTgsIDIsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAKKyAgICAyMjYsIDIwMiwgMiwgMjE0LCAxMywgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyMjYsIDExMCwgMjYsIDQsIDEsIDI1NCwgCisgICAgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgCisgICAgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDI0OCwgMTU0LCAKKyAgICAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgCisgICAgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjUsIDE3NiwgMjIsIAorICAgIDIxMCwgMjE5LCAyNiwgNiwgMSwgMjU0LCAxNDQsIDIsIDIyNCwgMTU1LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNTQsIAorICAgIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIxNCwgCisgICAgMTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgMjIsIDIxNCwgMTQsIDIyLCAyMjQsIAorICAgIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAKKyAgICAxLCAyNTQsIDE0NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjU0LCAxNDQsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzYsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIxMCwgMjE5LCAKKyAgICAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIDIyNCwgCisgICAgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAKKyAgICAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAKKyAgICAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgCisgICAgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgMjQ4LCAxNTQsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIAorICAgIDI0NSwgNjQsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjQ1LCA2NCwgMiwgCisgICAgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIAorICAgIDIyNiwgMTExLCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNiwgMTExLCAyMiwgCisgICAgMjI0LCAxNjcsIDI2LCA2LCAxLCAyNDUsIDY0LCAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCAKKyAgICA2LCAxLCAyNDUsIDY0LCAyLCAyNDgsIDE1NCwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA0LCAxLCAyMjYsIAorICAgIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNCwgMTU1LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgCisgICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjE0LCAxNCwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIAorICAgIDIsIDIyNCwgMTU1LCAyMiwgMjI2LCAxMTEsIDIyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDIyNiwgMjAyLCAyLCAyNDgsIDE1NCwgCisgICAgMjIsIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjUsIAorICAgIDE3NiwgMjIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzYsIDIyLCAKKyAgICAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAyLCAyLCAyMjQsIDE1NSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMTQsIAorICAgIDE0LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIDIyLCAyMTQsIDE0LCAyMiwgMjI0LCAKKyAgICAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMSwgMjIsIDIyNCwgMTY3LCAyNiwgNiwgCisgICAgMSwgMjI2LCAyMDIsIDIsIDI0OCwgMTU0LCAyMiwgMjI2LCAxMTEsIDIyLCAyMjQsIDE2NywgMjYsIDYsIDEsIDIyNiwgMjAyLCAKKyAgICAyLCAyMjQsIDE1NSwgMjIsIDIyNSwgMTc2LCAyMiwgMjI0LCAxNjcsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjQ4LCAxNTQsIAorICAgIDIyLCAyMjUsIDE3NiwgMjIsIDIyNCwgMTY3LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxMywgMTIwLCAyNiwgNCwgMSwgCisgICAgMjU0LCAxNDQsIDIsIDIzMSwgMjMyLCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIxNCwgMTQsIDIyLCAyMTAsIDIxOSwgMjYsIAorICAgIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIDExMSwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjU0LCAxNDQsIDIsIDIyNSwgMTc2LCAKKyAgICAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgCisgICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyNTQsIDE0NCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDI1NCwgMTQ0LCAyLCAyMjQsIDE2NywgMjYsIDIzNCwgMiwgMjYsIDIyNCwgMTY3LCAyNiwgMjI0LCAKKyAgICAxNTQsIDI2LCAyMjUsIDE3NSwgMjYsIDI0NywgMjUyLCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTQsIAorICAgIDE0LCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMTAsIDIxOSwgMjYsIDQsIDEsIDI0NSwgNjQsIDIsIAorICAgIDIyNiwgMTExLCAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyNDUsIDY0LCAyLCAyMjUsIDE3NSwgMjYsIDQsIDEsIDI0NSwgCisgICAgNjQsIDIsIDIyNSwgMTc2LCAyMiwgMjEwLCAyMTksIDI2LCA2LCAxLCAyNDUsIDEwMSwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIAorICAgIDI0NSwgMTAxLCAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyNDUsIDY0LCAKKyAgICAyLCAyMjYsIDExMCwgMjYsIDYsIDEsIDI0NSwgNjQsIDIsIDIyNCwgMTY3LCAyNiwgMjI0LCAxNTUsIDIyLCAyMTQsIDEzLCAKKyAgICAyNiwgMjI0LCAxNTUsIDIyLCAyMjYsIDExMCwgMjYsIDIyNCwgMTU1LCAyMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIAorICAgIDE4NiwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjMxLCAyMzIsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgCisgICAgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjM1LCAxODYsIDIsIDI0NywgMjUyLCAyMiwgMjI2LCAxMTAsIDI2LCAKKyAgICA0LCAxLCAyMzUsIDE4NiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMzUsIDE4NiwgMiwgMjQ3LCAyNTIsIDIyLCAyMjUsIAorICAgIDE3NSwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTMsIDEyMCwgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMzEsIDIzMiwgCisgICAgMjYsIDYsIDEsIDIzNSwgMTg2LCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjM1LCAxODYsIDIsIDIyNiwgMTEwLCAyNiwgMjQ4LCAKKyAgICAxNTQsIDIyLCAyMTQsIDEzLCAyNiwgMjQ4LCAxNTQsIDIyLCAyMjYsIDExMCwgMjYsIDI0OCwgMTU0LCAyMiwgMjI1LCAxNzUsIAorICAgIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA0LCAxLCAyMTQsIDE1OCwgMiwgMjMxLCAyMzIsIDI2LCA0LCAKKyAgICAxLCAyMTQsIDE1OCwgMiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKKyAgICAyMiwgMjI2LCAxMTAsIDI2LCA0LCAxLCAyMjMsIDM4LCAyLCAyMjQsIDE1NCwgMjYsIDQsIDEsIDIyMywgMzgsIDIsIDI0OCwgCisgICAgMTUzLCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDIyNSwgMTc1LCAyNiwgNCwgMSwgMjE0LCAxNTgsIDIsIDI0NywgMjUyLCAKKyAgICAyMiwgMjI1LCAxNzUsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjEzLCAxMjAsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgCisgICAgMjMxLCAyMzIsIDI2LCA2LCAxLCAyMTQsIDE1OCwgMiwgMjE0LCAxMywgMjYsIDYsIDEsIDIxNCwgMTU4LCAyLCAyMjYsIAorICAgIDExMCwgMjYsIDYsIDEsIDIyMywgMzgsIDIsIDI0OCwgMTUzLCAyNiwgMjQ3LCAyNTIsIDIyLCAyMTQsIDEzLCAyNiwgMjQ3LCAKKyAgICAyNTIsIDIyLCAyMjYsIDExMCwgMjYsIDIxNCwgMTMsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjE0LCAxNCwgMjIsIDIxMCwgCisgICAgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIxMCwgMjE5LCAyNiwgNCwgMSwgMjI2LCAyMDIsIDIsIDIyNiwgMTExLCAKKyAgICAyMiwgMjEwLCAyMTksIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgMjI1LCAxNzUsIDI2LCA0LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI1LCAxNzYsIDIyLCAyMTAsIDIxOSwgMjYsIDYsIDEsIDIyNiwgMjAwLCAyLCAyMTQsIDEzLCAyNiwgNiwgMSwgMjI2LCAKKyAgICAyMDAsIDIsIDIyNiwgMTEwLCAyNiwgNiwgMSwgMjI2LCAyMDIsIDIsIDIxNCwgMTMsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgCisgICAgMjI2LCAxMTAsIDI2LCA2LCAxLCAyMjYsIDIwMiwgMiwgMjI0LCAxNjcsIDI2LCAyMjYsIDExMCwgMjYsIDI0OCwgMTUzLCAKKyAgICAyNDUsIDE1MSwgMjI0LCAyNywgMjQ1LCAxNjAsIDIyNCwgMjcsIDI0NSwgMTUxLCAyMTksIDE4LCAyNDUsIDE2MCwgMjE5LCAKKyAgICAxOCwgMjE2LCAxNDEsIDIxOSwgMTgsIDI0NCwgOSwgMjE5LCAxOCwgMjE5LCAxMjMsIDIxOSwgMTgsIDI0NCwgMTEyLCAyMTksIAorICAgIDE4LCAyMjQsIDE0MSwgMjE5LCAxOCwgMjE2LCAxNzAsIDIxOSwgMTgsIDI0MiwgMzUsIDIxOSwgMTgsIDIxMCwgODcsIDIxMSwgCisgICAgMjQ1LCAyMTksIDE4LCAyMTAsIDg3LCAyMTEsIDI0NSwgMjI4LCA2NywgMjEwLCA4NywgMjExLCAyNDUsIDIzNSwgNjMsIAorICAgIDIzMywgMzgsIDc4LCAyMjIsIDI0MywgNzgsIDI0MCwgMTY4LCAyMjgsIDY4LCAyNDAsIDE2OCwgMjQ0LCAxMTIsIDI0OCwgCisgICAgMTU2LCAyNDUsIDE1MSwgMjQ4LCAxNTYsIDI0NSwgMTYwLCAyNDgsIDE1NiwgMjAzLCAxMzAsIDUyLCA2NywgMjMyLCAyMTMsIAorICAgIDUyLCAxMjEsIDIzMiwgMjEzLCA0MywgMjE5LCAxNTUsIDIyMywgMjU0LCA3OCwgNDQsIDIxOSwgMTU1LCAyMjMsIDI1NCwgCisgICAgNzgsIDIxOSwgMTU1LCAyMzIsIDEwOSwgMjIzLCAyNTQsIDc4LCAyMTksIDE1NSwgMjQxLCAxNjMsIDIyMywgMjU0LCA3OCwgCisgICAgNDMsIDUyLCAyMjMsIDI1NCwgNzgsIDQ0LCA1MiwgMjIzLCAyNTQsIDc4LCA1MiwgMjMyLCAxMDksIDIyMywgMjU0LCA3OCwgCisgICAgNTIsIDI0MSwgMTYzLCAyMjMsIDI1NCwgNzgsIDI0OCwgMjA1LCA1MiwgMjQ4LCAyMDUsIDI1MSwgMTEzLCAyMTUsIDIyMiwgCisgICAgMjUxLCAxMTMsIDEyMywgNTksIDIzMywgNTYsIDExMywgNTksIDIzMywgNTYsIDIwMywgMjQ1LCAxNjMsIDI0MCwgMTY2LCAKKyAgICAyMjUsIDEwLCAyMzIsIDIxNCwgMjIwLCAxMzcsIDIyNiwgMTUsIDIyMCwgMTM3LCAyMzMsIDM4LCAyNDUsIDE1OCwgMjIyLCAKKyAgICAyNDMsIDI0NSwgMTU4LCAyMjQsIDI0NiwgMjQ3LCAxOTYsIDI0NCwgMTksIDIzMywgMzgsIDIyNiwgMTE3LCAyMjIsIDI0MywgCisgICAgMjI2LCAxMTcsIDIyOSwgMTk0LCAyMjgsIDczLCAyMTksIDE4LCAyMjUsIDE4MywgMjMwLCAxOTMsIDUwLCAyMjUsIDE4MywgCisgICAgMjE2LCAyNDgsIDIxNiwgMTQ4LCA1MCwgMjI0LCAxOTAsIDUyLCAyMjQsIDE5MCwgMjE1LCAyMTEsIDIyNCwgMTkwLCAyMjMsIAorICAgIDQ5LCAyMjQsIDE5MCwgMjIzLCA0OSwgNTIsIDIyNCwgMTkwLCAyMjMsIDQ5LCAyMTUsIDIxMSwgMjI0LCAxOTAsIDI1MCwgCisgICAgMjM4LCAyMTksIDE1NSwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCA3OCwgMjE5LCAxNTUsIDIyMiwgMjQ3LCAyNTQsIAorICAgIDExMCwgMjIzLCAyNTQsIDc4LCAyMjMsIDEwNywgNzgsIDUyLCAyNDUsIDMxLCA3OCwgMjM1LCAyMDEsIDIyNiwgMTE5LCAKKyAgICAyMTQsIDE4MCwgMTM1LCAyMTYsIDExMSwgMjUwLCAyMzksIDIzNSwgMjE2LCAyMjUsIDEwLCAyNTMsIDIxNCwgMjQwLCAxNjksIAorICAgIDI1MSwgMTEzLCAyNDQsIDIsIDIxOSwgOTUsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIyNCwgNywgNDQsIDQyLCAyNTEsIDE1OCwgCisgICAgMiwgMjI0LCA3LCA1MiwgMjI0LCAxMywgNzgsIDIyNCwgMTMsIDI0NSwgMzEsIDc4LCAyNDUsIDMxLCAyMjQsIDEzLCA3OCwgCisgICAgMjE2LCA3MCwgNSwgMjQ1LCA2NSwgMjIzLCA0OSwgMjI1LCA2OCwgNTAsIDg1LCAxNDAsIDI1MSwgMTEzLCA4NSwgOTcsIAorICAgIDI1MSwgMTEzLCAxMjEsIDI1MywgMjE2LCAyMjMsIDQ5LCAyMjAsIDE1MCwgMjUwLCAxLCAyMTQsIDE2MywgMTEzLCAyNTMsIAorICAgIDIxNSwgMjU0LCAxNTgsIDIxMywgMTg4LCAyNDksIDIxNywgMjMwLCAxODIsIDUwLCAyMTcsIDIzNCwgMjQ4LCAxNTYsIDIzNSwgCisgICAgMTkzLCAyMTQsIDE4MCwgMjQ0LCA1MiwgMjI0LCAxNDEsIDc4LCAxMzQsIDU5LCAyMjQsIDE0MCwgMjI0LCAyNCwgMjI0LCAKKyAgICAxOTAsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDIyNCwgMTQwLCAxMTMsIDU5LCAyMjQsIDE0MCwgCisgICAgMjQ0LCAxMSwgNTksIDc4LCAyNDYsIDExOCwgMjQ5LCAxMzAsIDIxNSwgMjIxLCA2NywgMjQ0LCAxMSwgMjQ3LCAxMTgsIAorICAgIDIzMSwgODIsIDExLCAyMTksIDE4LCAyMTEsIDIwOSwgMjM1LCA2MywgMjQzLCAyMjcsIDI1NCwgNTIsIDIzNSwgMTkxLCAKKyAgICAyMTYsIDg1LCAyMzUsIDE5MSwgMjIwLCAxMzcsIDIzNSwgMTkxLCAyMjUsIDIyLCAyMzUsIDIyOCwgMjE3LCAxODIsIDIxNywgCisgICAgMjUxLCAyNTUsIDUsIDIxNywgMTgyLCAyMTcsIDI1MSwgMjM1LCAyMjgsIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyNTUsIDUsIAorICAgIDEwLCAyNDQsIDIwLCAyMjAsIDgwLCAyMjksIDE4OSwgMjEsIDIyMCwgODEsIDIyOCwgNjksIDIxLCAyMjAsIDgxLCAyMTgsIAorICAgIDIzLCAyMTAsIDg2LCAyMTgsIDIzLCA3LCA0LCAxLCA3MywgMjE4LCAyMywgMTYxLCAyMTgsIDIzLCAxODksIDIxOCwgMjMsIAorICAgIDE5NCwgMjE4LCAyMywgMTk4LCAyMTgsIDIzLCAxOTUsIDIxOCwgMjMsIDIwMCwgMjE4LCAyMywgOTYsIDUwLCAyMTgsIDIzLCAKKyAgICAyMzAsIDE4MSwgMjE4LCAyMywgMjQ1LCA5OCwgNTAsIDIxOCwgMjMsIDQzLCAyMjYsIDMsIDIxOCwgMjMsIDQ0LCAyMjYsIDMsIAorICAgIDIxOCwgMjMsIDcsIDQsIDEsIDIzMCwgMjUsIDIxOCwgNjUsIDIxMCwgODYsIDIxOCwgNjUsIDExMCwgMjE4LCA2NSwgMTA1LCAKKyAgICAyMTgsIDY1LCAxNTgsIDIxOCwgNjUsIDE2MSwgMjE4LCA2NSwgMTg5LCAyMTgsIDY1LCAxOTQsIDIxOCwgNjUsIDE5OCwgCisgICAgMjE4LCA2NSwgMTk1LCAyMTgsIDY1LCAyMDAsIDIxOCwgNjUsIDk2LCA1MCwgMjE4LCA2NSwgMjMwLCAxODEsIDIxOCwgNjUsIAorICAgIDI0NSwgOTgsIDUwLCAyMTgsIDY1LCA0MywgMjI2LCAzLCAyMTgsIDY1LCA0NCwgMjI2LCAzLCA3LCAyMTgsIDY1LCA0LCAxLCAKKyAgICA2MSwgNywgMjE4LCA2NSwgNCwgMSwgNzUsIDcsIDIxOCwgNjUsIDQsIDEsIDc2LCA3LCAyMTgsIDY1LCA0LCAxLCAyMTEsIAorICAgIDE3OCwgNywgMjE4LCA2NSwgNCwgMSwgMjIxLCAxOTUsIDcsIDIxOCwgNjUsIDQsIDEsIDI0MiwgNjAsIDcsIDIxOCwgNjUsIAorICAgIDQsIDEsIDIzNSwgMjMsIDcsIDIxOCwgNjUsIDQsIDEsIDE1NiwgNywgMjE4LCA2NSwgNCwgMSwgMTkzLCA3LCAyMTgsIDY1LCAKKyAgICA0LCAxLCAyMzAsIDI1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMjYsIDEwNSwgNywgMjE4LCA2NSwgNCwgMSwgMjIyLCA5MSwgNywgCisgICAgMjE4LCA2NSwgNCwgMSwgMjE3LCAxNTIsIDI0NSwgNDYsIDUwLCAyNDksIDIyNywgNTAsIDI0OSwgMTE3LCA1MCwgMjQzLCAKKyAgICAyNTEsIDI0MywgMjU0LCA1MCwgMjMyLCAxOTgsIDUwLCAyMzAsIDE5NCwgNTAsIDIyOSwgMjEwLCA1MCwgMjI1LCAxNjIsIAorICAgIDUwLCAyMjIsIDExOCwgNTAsIDIxMSwgMjE3LCA1MCwgMTY2LCAyMjAsIDQ5LCA1MCwgMjQ3LCAxMjcsIDUwLCAyNDUsIDQ3LCAKKyAgICA1MCwgMjM0LCA3NiwgNTAsIDIxNSwgMTEyLCA1MCwgMjQ2LCAxMDEsIDUwLCAyNDMsIDQwLCAyMjUsIDE5MywgNTAsIDIyNSwgCisgICAgMTYwLCA1MCwgMjQyLCAxMDksIDUwLCAyNTMsIDE4MiwgNTAsIDI0MCwgMjI4LCA1MCwgMjUwLCAxODUsIDUwLCAyMzIsIAorICAgIDE5MSwgMjE2LCAzLCA1MCwgMjE5LCAwLCA1MCwgMjE2LCAyNDUsIDUwLCAyMzUsIDI0MSwgMjIyLCAxMTgsIDUwLCAzOCwgCisgICAgNDMsIDI0MSwgMjU1LCA0OCwgMzgsIDQ0LCAyNDEsIDI1NSwgNDgsIDM4LCAxOTksIDY3LCAyMzIsIDIxNCwgMjI2LCAxMjAsIAorICAgIDM4LCAyMTksIDI1MSwgNjcsIDIzMiwgMjE0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDgwLCA0OCwgMzgsIDI1MCwgMiwgCisgICAgODAsIDQ4LCAzOCwgNDMsIDgwLCA0OCwgMzgsIDQ0LCA4MCwgNDgsIDM4LCAyMjIsIDIzNCwgMjI2LCAxMjAsIDM4LCAyNTAsIAorICAgIDIsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDI1NCwgODgsIDIyMiwgMjM0LCAyMjYsIDEyMCwgMzgsIDEzNCwgMTcwLCA0OCwgCisgICAgMzgsIDI0NCwgMTEsIDE3MCwgNDgsIDM4LCAyNDUsIDE0NiwgMjUwLCAzNSwgMzgsIDI0NSwgMTQ2LCAyMTgsIDIzNCwgMzgsIAorICAgIDI0NSwgMTQ2LCAyNDcsIDI0OCwgMzgsIDI0NSwgMTQ2LCAyNTAsIDM2LCAyNTIsIDE4MCwgMzgsIDQzLCA0NCwgODAsIDQ4LCAKKyAgICAzOCwgMjQ1LCAxNDYsIDIyMSwgMTg4LCAzOCwgMjQ1LCAxNDYsIDIzNCwgMTM1LCAzOCwgMjQ1LCAxNDYsIDIxNCwgMTU1LCAKKyAgICAyMjUsIDcsIDIxNSwgMjI1LCAzOCwgMjIzLCA1MCwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA1MiwgNjcsIDIxOCwgMTAzLCAKKyAgICAyMjYsIDEyMCwgMzgsIDI1NCwgOTgsIDg3LCAzOCwgMjE1LCAyMTEsIDIxNCwgMTgyLCAzOCwgMjExLCAyNDcsIDI1MSwgCisgICAgMTQwLCA0OCwgMzgsIDE0MCwgODAsIDIyNiwgMTIwLCAzOCwgMTk5LCA1MiwgMjE5LCA0NywgMjI2LCAxMjAsIDM4LCA5NywgCisgICAgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgMzgsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAorICAgIDEwMywgMzgsIDQzLCA4MCwgNTEsIDM4LCA0NCwgODAsIDUxLCAzOCwgMjUzLCAyMTcsIDQ4LCAyNTUsIDExLCAyMjYsIDIzMSwgCisgICAgMjU0LCAyNTEsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMTgsIDc0LCAxMzksIDYsIDI1MSwgNjYsIDI0OCwgNzEsIDI1MCwgMTc4LCAKKyAgICAyNTAsIDE3NSwgMjMyLCAyMTQsIDg3LCAyNTAsIDI0MCwgMjI2LCAyMzEsIDI1MSwgMjYsIDIxNCwgMTg5LCAyNDUsIDQ4LCAKKyAgICAyNDksIDE5MSwgMjIxLCAxODUsIDI0OCwgNzEsIDI0NCwgMTc5LCAxMTksIDQsIDI0MywgMjAyLCAxMTksIDYsIDI0MiwgNjAsIAorICAgIDI1MSwgMjE5LCA2LCAyNDIsIDYwLCAxMzksIDYsIDI0MiwgNjAsIDIyNSwgMzcsIDI0OSwgMTkxLCAyMjUsIDM3LCAyNDksIAorICAgIDE5MiwgMTE3LCAxMTMsIDIyNSwgMTA4LCAxMTksIDYsIDczLCAyNTEsIDIxOSwgNiwgNzMsIDExOSwgNiwgMTU2LCAxMTksIAorICAgIDQsIDE1NiwgMjMzLCAxNDksIDU3LCAyNTIsIDE0MSwgODcsIDEzOSwgNiwgMjMwLCAyNSwgMjI3LCAxOTYsIDUwLCAyMTksIAorICAgIDMxLCAyMjMsIDExOSwgMjQ5LCAxNjIsIDExOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI2LCAxMDUsIDEzOSwgNiwgMjI0LCAKKyAgICA5NiwgMTE5LCA2LCAxNTMsIDI1MSwgMjE5LCA2LCAxNTMsIDEzOSwgNiwgMTUzLCAyMjQsIDE5NiwgMjE3LCA3MSwgMjIzLCAKKyAgICA2MiwgMjIwLCAxMzIsIDc4LCAyMTcsIDEsIDUwLCAyMTUsIDI1MywgMTY0LCA1MCwgMjEzLCAyNDAsIDEzOSwgNiwgMjEwLCAKKyAgICAxNTksIDIyNiwgMTMzLCA1MCwgMjI2LCAyMjEsIDUwLCAyMzUsIDE5MywgMjI2LCAyMjEsIDUwLCAyNTEsIDIxOSwgNiwgCisgICAgMjEwLCAxNTksIDIxNSwgOTQsIDI2LCA0LCAxLCAyMzUsIDE4NSwgMjM0LCAxNzMsIDUwLCAyNTQsIDEwNywgNTAsIDExOSwgCisgICAgNiwgMjUzLCAxNTgsIDI1MSwgMjE5LCA2LCAyNTEsIDY2LCAyNDUsIDY4LCA4NywgMTE5LCA0LCA3NSwgMTE5LCA2LCA3NSwgCisgICAgMTE5LCA2LCAyNDUsIDYsIDIxNSwgOTQsIDYsIDI0NSwgNiwgMTE5LCA2LCAxOTMsIDExOSwgNCwgNzYsIDExMiwgODcsIAorICAgIDI1MiwgMjksIDg3LCAyNDIsIDIwMiwgODcsIDI0OCwgMTkwLCA4NywgMjM1LCAyMzIsIDIxOSwgMjksIDIyMiwgMTg3LCA2LCAKKyAgICAyMjQsIDk2LCAyNDQsIDE4MiwgNTAsIDEzOSwgNCwgMjI1LCAxMDgsIDEzOSwgNCwgMjQzLCAxMDcsIDEzOSwgNiwgMjQzLCAKKyAgICAxMDcsIDEzOSwgNiwgMjI1LCAxMDgsIDEzOSwgMjMwLCAyNCwgMjE4LCA0MCwgMjE1LCA5NCwgMzUsIDYsIDI0MywgMjAyLCAKKyAgICAyMTUsIDk0LCAzNSwgNiwgMTU2LCAyMjMsIDQ5LCAzNSwgNiwgMTU2LCAyMTUsIDk0LCAzNSwgNiwgMjExLCAxMTcsIDEzOSwgCisgICAgMzIsIDYsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDI0OSwgNjAsIDEzOSwgMzIsIDQsIDc1LCAxMzksIDMyLCA0LCA3MywgMTM5LCAKKyAgICAzMiwgNCwgMjM1LCAxNDQsIDIyNCwgMTcwLCAyMzIsIDIxMywgMjE1LCA5NCwgMjU0LCAxMjYsIDIyNSwgMTgzLCA1MCwgCisgICAgMjU0LCAxODAsIDIxNSwgOTQsIDQsIDI0NSwgNiwgMTYsIDMxLCAyMjEsIDI1MiwgMjE5LCAyOSwgMjEyLCAxMTQsIDI0NCwgCisgICAgMiwgMTIzLCAyMjAsIDExOCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMjgsIDE5NCwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAKKyAgICAyMTYsIDI0MSwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyMTYsIDE2OCwgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyMTYsIAorICAgIDE2NiwgMjEyLCAxMTQsIDI0NCwgMiwgMTIzLCAyNDQsIDExNywgMjEyLCAxMTQsIDI0NCwgMiwgMTEzLCAyNDQsIDExNiwgCisgICAgMjEyLCAxMTQsIDI0NCwgMiwgMTM0LCAyNDQsIDExNiwgMjEyLCAxMTQsIDI0NCwgMiwgMjQ0LCAxMSwgMjQ0LCAxMTYsIAorICAgIDIxMiwgMTE0LCAyNDQsIDIsIDEyMywgMjE5LCAxMTUsIDIxMiwgMTE0LCAyNDQsIDIsIDI0NCwgODEsIDIxOSwgMTEzLCAKKyAgICAyMTIsIDExNCwgMjQ0LCAyLCAxMjMsIDI0NSwgMTg4LCAyMTIsIDExNCwgMjQ0LCAyLCAxMzQsIDI0NSwgMTg2LCAyMTIsIAorICAgIDExNCwgMjQ0LCAyLCAyNDQsIDgxLCAyNDUsIDE4NiwgMjEyLCAxMTQsIDI0NCwgMiwgMjIwLCAxMjIsIDI0NSwgMTg2LCAKKyAgICAyNDQsIDIsIDIyNywgMTk3LCAxMTAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgCisgICAgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTYxLCAyMjIsIDE5OCwgMjI3LCAxOTgsIAorICAgIDE4OSwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTk4LCAyMjIsIDE5OCwgMjI3LCAKKyAgICAxOTgsIDE5NSwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMDAsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAyNDQsIDExNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIAorICAgIDI0MCwgMjEwLCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTEwLCAKKyAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEwNSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxNTgsIDQsIDIyMiwgMTk4LCAyMjcsIAorICAgIDE5OCwgMTYxLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE4OSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAxOTQsIDQsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMTk4LCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDE5NSwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAKKyAgICAyMDAsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE2LCAyNDcsIDQsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjQ1LCAxNjcsIDQsIAorICAgIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjE1LCA3NiwgNCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNCwgNCwgMjIyLCAKKyAgICAxOTgsIDIyNywgMTk4LCAxMjMsIDI0MCwgMjEwLCA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDI0NCwgODEsIDI0MCwgMjEwLCAKKyAgICA0LCAyMjIsIDE5OCwgMjI3LCAxOTgsIDEyMywgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyMTYsIDE0OCwgCisgICAgMjUxLCA2NywgMjQ5LCA2MCwgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDgxLCAyMTYsIDE0NywgMjIyLCAxOTgsIDIyNywgCisgICAgMTk4LCAyMTYsIDI0OCwgMjE2LCAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMjIzLCA0OSwgMTIzLCAyNDAsIDIxMCwgNywgCisgICAgNCwgMSwgMjIzLCA0OSwgMjUxLCA2NiwgMjIyLCAxOTgsIDIyNywgMTk4LCAyMTksIDEyNSwgMjMzLCA3OCwgMTcsIDIyMiwgCisgICAgMTk4LCAyMjcsIDE5OCwgMjQ0LCAxMTUsIDI0NSwgMjI2LCAxNywgMjIyLCAxOTgsIDIyNywgMTk4LCAyNDQsIDExNSwgMjE2LCAKKyAgICAxNDcsIDIyMiwgMTk4LCAyMjcsIDE5OCwgMTIzLCAyNDAsIDIxMSwgMjE2LCAxNDcsIDIxMiwgMTE0LCAyNDQsIDIsIDIxMCwgCisgICAgODcsIDIxNiwgMTY2LCAxNDAsIDc0LCAyMTQsIDE1MywgNzQsIDk3LCA3NCwgMjQ2LCAxMDQsIDc0LCA0MywgNDQsIDc0LCAKKyAgICAxMjAsIDEyNCwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDc0LCAyMTksIDI4LCAyMTIsIDksIDc0LCAxNDAsIDgwLCAyLCA5MSwgOTcsIDgwLCAyLCA5MSwgMTQwLCAyMTIsIAorICAgIDM2LCA3NCwgOTcsIDIxMiwgMzYsIDc0LCAxNDAsIDExMywgMjQxLCAyMzQsIDc0LCAyMTQsIDE1MywgMTEzLCAyNDEsIDIzNCwgCisgICAgNzQsIDk3LCAxMTMsIDI0MSwgMjM0LCA3NCwgMjQ2LCAxMDQsIDExMywgMjQxLCAyMzQsIDc0LCAxNDAsIDgwLCAyLCAyMTcsIAorICAgIDc3LCA5NywgODAsIDIsIDIxNywgNzcsIDE0MCwgODAsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCA4MCwgMjQzLCAyNDMsIAorICAgIDEzMCwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAyNDYsIDEwNCwgODAsIDI0MywgMjQzLCAxMzAsIDEyMCwgMTI0LCA4MCwgMiwgCisgICAgMjUyLCAxMjcsIDE0MCwgODAsIDIsIDEwMywgOTcsIDgwLCAyLCAxMDMsIDE0MCwgODAsIDIsIDIzMiwgMTIzLCA5NywgODAsIAorICAgIDIsIDIzMiwgMTIzLCA0MywgNDQsIDIxMiwgMzYsIDc0LCA0MywgNDQsIDgwLCAyLCA5MSwgMjQ2LCAxMDQsIDIxMCwgMzUsIAorICAgIDc0LCAyMTQsIDE1MywgODAsIDIsIDIxNiwgNzcsIDIzMywgMzcsIDIxNCwgMTUzLCA4MCwgMiwgMjE2LCA3NywgMjIyLCAKKyAgICAyNDEsIDI0NiwgMTA0LCA4MCwgMiwgMjE2LCA3NywgMjMzLCAzNywgMjQ2LCAxMDQsIDgwLCAyLCAyMTYsIDc3LCAyMjIsIAorICAgIDI0MSwgOTcsIDgwLCAyLCAyNDksIDE2MSwgMjQ2LCAxMDMsIDI0NiwgMTA0LCA4MCwgMiwgMjQ5LCAxNjEsIDIzMywgMzcsIAorICAgIDI1NCwgODgsIDIxNiwgMTQsIDIyMCwgMTUzLCA3NCwgMjUwLCAyLCAyMTYsIDE0LCAyMjAsIDE1MywgNzQsIDIyOCwgNTYsIAorICAgIDIxMiwgOSwgODAsIDIxNiwgNDIsIDE5OSwgMTMwLCAxNDAsIDgwLCAyMTYsIDQyLCAyNTIsIDE0MSwgMTE3LCA5NywgODAsIAorICAgIDIxNiwgNDIsIDEzMCwgMjU0LCA4OCwgMjA0LCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyMDQsIDI1MCwgMzYsIDc0LCAxNDAsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjE0LCAxNTIsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwMywgCisgICAgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAKKyAgICAxMzksIDIzMywgMzcsIDk3LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIxNCwgMTUyLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAyNDYsIDEwMywgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMjIyLCAyNDEsIDI0NiwgMTA0LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDIzMywgMzcsIDk3LCA4MCwgMTE3LCAxNDAsIDc0LCAyMTQsIDE1MywgODAsIDE0MCwgNjQsIAorICAgIDI0NiwgMTA0LCA3NCwgMTQwLCA4MCwgMTE3LCA5NywgNzQsIDE0MCwgMjI2LCA3MCwgMjUzLCAyNDcsIDIxNCwgMTUzLCAKKyAgICAyMjYsIDcwLCAyNTMsIDI0NywgOTcsIDIyNiwgNzAsIDI1MywgMjQ3LCAyNDYsIDEwNCwgMjI2LCA3MCwgMjUzLCAyNDcsIAorICAgIDE0MCwgMjQxLCAyNTUsIDExNywgOTcsIDI0MSwgMjU0LCA5NywgMjQxLCAyNTUsIDExNywgMTQwLCAyNDEsIDI1NCwgMTQwLCAKKyAgICA1MiwgODAsIDIsIDkxLCA0MywgNDQsIDUyLCA4MCwgMiwgOTEsIDk3LCA1MiwgODAsIDIsIDkxLCAxNDAsIDUyLCA3NCwgCisgICAgMjE0LCAxNTMsIDUyLCA3NCwgOTcsIDUyLCA3NCwgMjQ2LCAxMDQsIDUyLCA3NCwgNDMsIDQ0LCA1MiwgNzQsIDEyMCwgMTI0LCAKKyAgICA1MiwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNTIsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyNDUsIAorICAgIDIyMCwgNTIsIDc0LCAyMTksIDI4LCAyMTIsIDksIDUyLCA3NCwgMTQwLCAyMTUsIDIxMSwgNzQsIDk3LCAyMTUsIDIxMSwgCisgICAgNzQsIDE0MCwgMjE4LCAyMzAsIDc0LCA5NywgMjE4LCAyMzAsIDc0LCAyMTQsIDE1MywgODAsIDIsIDUyLCA5MSwgMjQ2LCAKKyAgICAxMDQsIDgwLCAyLCA1MiwgOTEsIDE0MCwgMjQ4LCAxNTUsIDc0LCAyMTQsIDE1MywgMjQ4LCAxNTUsIDc0LCA5NywgMjQ4LCAKKyAgICAxNTUsIDc0LCAyNDYsIDEwNCwgMjQ4LCAxNTUsIDc0LCAxNDAsIDgwLCAyMTYsIDQyLCAxMzAsIDk3LCA4MCwgMjE2LCA0MiwgCisgICAgMTMwLCAxNDAsIDcxLCA3NCwgMjE0LCAxNTMsIDcxLCA3NCwgOTcsIDcxLCA3NCwgMjQ2LCAxMDQsIDcxLCA3NCwgMjE0LCAKKyAgICAxNTMsIDcxLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDcxLCA4MCwgMjI2LCAxOTcsIDIyNSwgMjE0LCAyMTQsIAorICAgIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgMjI1LCAyMTUsIDIsIDIwMywgMTMwLCAyMTQsIDE1MywgNzEsIDgwLCAyMjYsIDE5NywgCisgICAgMjI1LCAyMTUsIDIsIDY3LCAxMzAsIDIxNCwgMTUzLCA3MSwgNTIsIDc0LCAyMTQsIDE1MywgNzEsIDUyLCA4MCwgMjI2LCAKKyAgICAxOTcsIDIyNSwgMjE0LCA5NywgNzEsIDgwLCAyNDMsIDI0MywgMjEyLCA1NiwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjE2LCAKKyAgICA0MiwgMjQ5LCAxNjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgMjE2LCA0MiwgMjQ5LCAxNjAsIDEyMCwgMTI0LCA3MSwgNzQsIAorICAgIDQ0LCA4MCwgMiwgNCwgMjUwLCAzNSwgMjQ2LCAxMDQsIDgwLCAxNDAsIDY0LCAyMTQsIDE1MywgNzQsIDEzNCwgOTcsIDI1MywgCisgICAgMjQ3LCAxNDAsIDgwLCAyLCA2NywgOTEsIDk3LCA4MCwgMiwgNjcsIDkxLCA0MywgNDQsIDgwLCAyLCA2NywgOTEsIDE0MCwgCisgICAgODAsIDIsIDUyLCA2NywgOTEsIDk3LCA4MCwgMiwgNTIsIDY3LCA5MSwgNDMsIDQ0LCA4MCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAKKyAgICAyMjYsIDE3MywgNzQsIDk3LCAyMjYsIDE3MywgNzQsIDQzLCA0NCwgMjI2LCAxNzMsIDc0LCAzMSwgMjU0LCAxNTQsIDI0OSwgCisgICAgMjE0LCAyMjUsIDI1MywgMjQ3LCAyMzMsIDIxNiwgMTg3LCAyNDUsIDI3LCAyMTYsIDE4NywgMjQ3LCAxMzgsIDIyOCwgNTIsIAorICAgIDI0NSwgMjgsIDI0NSwgMTUyLCAyMjAsIDEyNywgMjM1LCAyNDUsIDIyOSwgMjIxLCAyNDUsIDE3MCwgMjI2LCAyMzEsIDIyOCwgCisgICAgNTIsIDI1NCwgMTI0LCAyNDUsIDE3MCwgMjI2LCAyMzEsIDQsIDI0NSwgMTcwLCAyMjYsIDIzMSwgMjQ5LCAxODYsIDI1MywgCisgICAgMjM4LCAyMzEsIDYyLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMzEsIDYyLCA0LCAyNDksIAorICAgIDE4NiwgMjUzLCAyMzgsIDIzMSwgNjIsIDI0NSwgMTQzLCA2NCwgMjI0LCAxNzIsIDIzMCwgMjQsIDIyNCwgMTgwLCAyMzAsIAorICAgIDI0LCAyNDksIDE2NSwgMjMwLCAyNCwgMjE4LCA0MCwgMjMwLCAxODIsIDUwLCAyMzAsIDE4MCwgNTAsIDU5LCAyMjUsIDIyLCAKKyAgICAyNDcsIDE2OSwgMjE5LCA5NSwgMjIwLCAxMjgsIDIzMCwgMTgxLCAyNTMsIDIxNywgMjI2LCAxNjcsIDIyMiwgMjM0LCAyMjYsIAorICAgIDE2NywgMjUxLCAxMTQsIDIyNiwgMTY3LCA0MiwgMjIyLCAxOTMsIDI0OSwgMTA5LCAyMjIsIDE5MywgMjQ0LCA0LCAyMjIsIAorICAgIDE5MywgMjI0LCAxNjgsIDExMSwgMjM1LCAyMzQsIDQ0LCAyNTQsIDEwOSwgMjU0LCAxMDksIDIzMSwgODgsIDI1NCwgMTA5LCAKKyAgICAyMTgsIDI1NSwgMjU0LCAxMDksIDI0NywgMTcxLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ3LCAxNzQsIDIyNiwgOCwgMTExLCAKKyAgICAyMjgsIDUyLCAyMjYsIDgsIDExMSwgMjMyLCAxNDYsIDI1NCwgMTE4LCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIzNSwgMTk4LCAKKyAgICAyMTQsIDE3NSwgMjM1LCAyMTEsIDUyLCAyMzUsIDIxMSwgMjE1LCAyMTEsIDIzNSwgMjExLCAyNDksIDE4MiwgMjM1LCAyMTEsIAorICAgIDIxOCwgMTMsIDIzNSwgMjExLCAyMTMsIDEyOSwgMjM1LCAyMTEsIDI1MCwgMiwgMjM1LCAyMTEsIDI1MCwgMiwgMjQ5LCAKKyAgICAxODIsIDIzNSwgMjExLCAyNTQsIDg4LCAyNDksIDE4MiwgMjM1LCAyMTEsIDIxNiwgMTg2LCAyNTIsIDY3LCAyMjMsIDEzNywgCisgICAgMjI0LCAxNjksIDU5LCAyMzAsIDE4MSwgMjQ1LCAzMywgMjQzLCA0NiwgMjI0LCAxNjksIDI0MSwgNTcsIDIxNiwgODksIAorICAgIDIyNiwgMTY3LCAyMjMsIDQ5LCAxODIsIDIzNSwgMTkzLCAyMzMsIDY1LCAyMjIsIDkxLCAyMTksIDE1NywgMjEyLCAzNSwgCisgICAgMjExLCAyMDAsIDIyNCwgMTgwLCAyMjgsIDUyLCAxODIsIDIzMCwgMTgyLCAxODIsIDI1MywgMjEwLCAxMjgsIDExMSwgMjI4LCAKKyAgICA1MiwgMjUzLCAyMTAsIDEyOCwgMTExLCAyNTQsIDQ4LCAxMjgsIDExMSwgMjU0LCA0OCwgMjUxLCA4OCwgMjI4LCA1MiwgCisgICAgMjU1LCA0LCAxMjgsIDExMSwgMjI5LCAxMDAsIDI1NCwgNDgsIDIyOCwgNTksIDI1NSwgNCwgMTI4LCAxMTEsIDI1NCwgMTQ4LCAKKyAgICAxMjgsIDExMSwgMjI4LCA1MiwgMjU0LCAxNDgsIDEyOCwgMTExLCAyNTQsIDE0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyMTUsIAorICAgIDIxMSwgMTgyLCAyNTQsIDE1NSwgMTI4LCAxMTEsIDI0NSwgOTQsIDExMSwgMjQzLCA0NSwgMjQ1LCA5NCwgMTExLCAyNDcsIAorICAgIDIzNCwgMjUyLCAyMywgMjU0LCA1MCwgMjE2LCAxOTYsIDIzMiwgMjIxLCAyNDMsIDQ1LCAxMjgsIDExMSwgMjU0LCA0OCwgCisgICAgMTI4LCAyMTYsIDQyLCAxNzcsIDIxNiwgMTk2LCAyMzYsIDE1LCAyMjYsIDIzMSwgMjM2LCAxNSwgNjQsIDE3NywgMjU0LCAKKyAgICA0OCwgMTI4LCAxMTEsIDI0OSwgMjI3LCAyNDUsIDk3LCAyNDUsIDk4LCAyNDksIDIyNiwgMjIyLCAyMzQsIDIzNiwgMCwgCisgICAgMTI4LCAxMTEsIDIyMiwgMjM0LCAxMjgsIDExMSwgMjQ5LCAxNTQsIDExMSwgMjQ1LCA2NywgMjQ1LCA5NiwgMTExLCAyMTgsIAorICAgIDE1NywgMjQ1LCA5NywgMjQ4LCA1NSwgMTI4LCAxMTEsIDEyOCwgMjE2LCA0MiwgMjUxLCA3OCwgMjQ4LCA3MiwgMjMxLCA4OCwgCisgICAgMjUxLCA3NywgMjI0LCAxMSwgMTI4LCAxMTEsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDAsIDEwNCwgMTExLCAyMjgsIDUyLCAKKyAgICAyNDAsIDEwNCwgMTExLCAyMTgsIDEwOSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDEyOCwgMTExLCAyNDIsIDEzMCwgCisgICAgMTc3LCAxMjgsIDExMSwgMjMzLCAxNSwgMTE3LCAxMjgsIDExMSwgMjQyLCAxMzAsIDExNywgMTI4LCAxMTEsIDIzMywgMTUsIAorICAgIDI1MSwgODgsIDIyOCwgNTIsIDEyOCwgMTExLCAyNDIsIDEzMCwgMjUxLCA4OCwgMjI4LCA1MiwgMTI4LCAxMTEsIDIzMCwgCisgICAgOTcsIDIzMywgMTQsIDIzMCwgOTcsIDI0MiwgMTI5LCAyNTIsIDIzLCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIyOCwgNTIsIAorICAgIDIzMywgMTQsIDIyOCwgNTIsIDI0MiwgMTI5LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMTI4LCAxMTEsIDIyOSwgCisgICAgMTAwLCAyNDIsIDEzMCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIzMywgMTUsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDIsIDEzMCwgCisgICAgMTc3LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAyMzMsIDE1LCAyMjgsIDU5LCAyNDUsIDk0LCAxMTEsIDIyOSwgMTAwLCAKKyAgICAyNDIsIDEzMCwgMjI4LCA1OSwgMjQ1LCA5NCwgMTExLCAyMzMsIDE1LCAxNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgMTc3LCAKKyAgICAyMzMsIDE0LCAyMjksIDEwMCwgMjMzLCAxNSwgMjI4LCA1OSwgMjQyLCAxMjksIDIyOSwgMTAwLCAyNDIsIDEzMCwgMjI4LCAKKyAgICA1OSwgMjMzLCAxNCwgMjI0LCAyMDIsIDIxOCwgNTUsIDIyNCwgMjAzLCAxNzcsIDEyOCwgMTExLCAyMTgsIDU2LCAxNzcsIAorICAgIDEyOCwgMTExLCAyMjQsIDIwMywgMTc3LCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDE3NywgMjQ1LCA5NCwgMTExLCAyNDcsIAorICAgIDEzOCwgMjI4LCA1MiwgMjI0LCAyMDUsIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU3LCAyMTgsIDY0LCAyMjYsIDIzMSwgCisgICAgMjE4LCAyMiwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCA2NCwgMjI2LCAyMzEsIDIyOCwgNTIsIDExNSwgMjE4LCAKKyAgICAyMiwgMjI2LCAyMzEsIDIxOCwgNjQsIDY0LCAxNzcsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjI5LCAxMDAsIDExNSwgMjE4LCA2NCwgNjQsIDIyOCwgNTksIDEyOCwgMTExLCAyMjksIDEwMCwgMTE1LCAyMTgsIDIyLCAKKyAgICA2NCwgMjI4LCA1OSwgMTI4LCAxMTEsIDIxOCwgNjQsIDY0LCAyLCAyMjgsIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDIsIAorICAgIDIyOCwgNTIsIDEyOCwgMTExLCAyMzAsIDgxLCAyMzAsIDgyLCAyMzAsIDgzLCAyMzAsIDgyLCAyMTQsIDE3NSwgNDIsIDIzNiwgCisgICAgMTUsIDIyNiwgMjMxLCA0MiwgMjI2LCAxNTAsIDIyNiwgMjMxLCA0MiwgMjM2LCAxNSwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAKKyAgICAyMjYsIDE1MCwgNjQsIDE3NywgMTI4LCAxMTEsIDQyLCAyNTAsIDI1MSwgNDIsIDI0OSwgMTAyLCAzNywgMjI1LCAyMiwgMzcsIAorICAgIDIzMCwgMTgxLCAzNywgMjE2LCA4NSwgMzcsIDI0NywgMTY5LCAyMTksIDk1LCAzNywgNTksIDIyNiwgMTY3LCAzNywgMjIyLCAKKyAgICAyMzQsIDIyNiwgMTY3LCAzNywgMjUzLCAyMTcsIDIyNiwgMTY3LCAzNywgMjQ1LCA5NywgMzcsIDI0OCwgMTU2LCA5MiwgCisgICAgMjI1LCAyMiwgOTIsIDIzMCwgMTgxLCA5MiwgMjE2LCA4NSwgOTIsIDU5LCAyMjYsIDE2NywgNDQsIDIxNywgODcsIDQzLCAKKyAgICAyMTcsIDg3LCAxMjQsIDIxNywgODcsIDEyMCwgMjE3LCA4NywgMjUzLCAyMjAsIDIzMCwgMTU2LCAyMTUsIDE5MSwgMjQ0LCAKKyAgICAyNSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgNDQsIDIxNSwgOTMsIDUyLCA2NywgMjUyLCAxNDEsIDUyLCA0NCwgMjE1LCAKKyAgICA5MywgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgMTYzLCAyMjgsIDUyLCAyMTUsIDE5MSwgMjQ3LCAxMzgsIDIyOCwgNTIsIAorICAgIDI0NCwgMjYsIDIyOSwgMTAyLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDQsIDIxNSwgOTMsIDIyNCwgMjAzLCAyMTQsIDE4NCwgCisgICAgMjIzLCA5MSwgMjE4LCA1NiwgMjE0LCAxODQsIDIyMywgOTEsIDIyOCwgNTcsIDIxOCwgNzcsIDIyNiwgMjMxLCAyNDksIAorICAgIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTcsIDIxOCwgNzcsIDY0LCAxNzcsIDEyOCwgMTExLCAKKyAgICAyNDksIDE4NiwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzcsIDE3NywgMTI4LCAxMTEsIDIyNiwgMTUwLCAyMjYsIDIzMSwgCisgICAgMjM2LCAxNSwgMjI2LCAyMzEsIDIzMCwgODcsIDI0MSwgMjAwLCAyNDksIDE5NiwgMjMxLCAxMzcsIDIzNSwgMjA4LCAyMTEsIAorICAgIDE0NSwgMjI5LCAyMDIsIDIyOCwgNTgsIDQ0LCAyNTQsIDExMCwgMiwgMjU0LCAyNSwgNDQsIDIxNSwgMjI1LCAyMzAsIDI0LCAKKyAgICAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMCwgMjQsIDIzMiwgMTQ2LCAyMjYsIDE1OCwgMjMwLCAyNCwgMjM1LCAxOTgsIDIzMCwgCisgICAgMjQsIDIxNCwgMTc1LCAyNDcsIDI0OSwgMjI2LCAxNjcsIDU5LCAyMjYsIDE2NywgMjE4LCAxNTcsIDIyNiwgMTY3LCAyNDcsIAorICAgIDE2OSwgMjE2LCA4NSwgMjUxLCAxNjQsIDQzLCAyMjgsIDU3LCAyNDQsIDE4MSwgMjIwLCAxNDksIDIyNCwgMTgwLCA0NCwgCisgICAgMjI4LCA1NywgMjQ0LCAxODEsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDMsIDIyMCwgMTQ5LCAyMjQsIDE4MCwgNDQsIDIyMCwgCisgICAgMTQ5LCAyMjQsIDE4MCwgMjIzLCA0OSwgMjE2LCA4OSwgMjQ1LCA5NywgMjQ5LCA5OSwgMjMyLCAxNDYsIDIyNiwgMTU4LCAKKyAgICAyNDksIDk5LCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMTgsIDYzLCA1MiwgMjE4LCAyMSwgNTIsIDIzNSwgMTk4LCA1MiwgCisgICAgMjE0LCAxNzUsIDIyNSwgNDcsIDEyOCwgMjIsIDIyNiwgOCwgMTExLCAyMzMsIDE1LCAyLCAyNDcsIDEyMCwgMjQyLCAxMzAsIAorICAgIDIsIDI0NywgMTIwLCAyMTMsIDE4NywgMjMwLCA5NywgMjMzLCAxNCwgMjEzLCAxODcsIDIzMCwgOTcsIDI0MiwgMTI5LCAKKyAgICAyMzMsIDE1LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMjksIDI0MiwgMTMwLCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAKKyAgICAxNCwgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDEyOCwgMjE2LCA0MiwgMTc3LCAyNDIsIDEyOSwgMTI4LCAyMTYsIAorICAgIDQyLCAxNzcsIDIyNCwgMjAyLCAxMjgsIDIxNiwgNDIsIDE3NywgMjE4LCA1NSwgMjQ3LCAxMzgsIDIyOCwgNTIsIDIyNCwgCisgICAgMjA2LCAxNzcsIDI0NSwgOTksIDI0NywgMTM4LCAyMjgsIDUyLCAyMTgsIDU4LCAxNzcsIDI0NSwgOTksIDIyOCwgNTIsIDQyLCAKKyAgICAyMzYsIDE1LCA2NCwgMTc3LCAxMjgsIDExMSwgMjI4LCA1MiwgNDIsIDIyNiwgMTUwLCA2NCwgMTc3LCAxMjgsIDExMSwgNDIsIAorICAgIDIzNiwgMTUsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgMTExLCA0MiwgMjI2LCAxNTAsIDY0LCAxNzcsIDIyOCwgNTIsIDEyOCwgCisgICAgMTExLCAyMzMsIDE1LCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDI0MiwgMTMwLCAyNTEsIDg4LCAyMjgsIDUyLCAKKyAgICAyNDUsIDk0LCAxMTEsIDIyNCwgMjAzLCAyNTEsIDg4LCAyMjgsIDUyLCAyNDUsIDk0LCAxMTEsIDIxOCwgNTYsIDI1MSwgODgsIAorICAgIDIyOCwgNTIsIDI0NSwgOTQsIDExMSwgMjI4LCA1MiwgMjI4LCA1NywgMjE4LCA3NywgMjI2LCAyMzEsIDI0NywgMTM4LCAKKyAgICAyMjgsIDUyLCAyNDksIDE4OCwgMjUzLCAyMzgsIDIyOCwgNTcsIDIxOCwgNzYsIDIyOCwgNTIsIDIyOCwgNTcsIDIxOCwgNzcsIAorICAgIDY0LCAxNzcsIDEyOCwgMTExLCAyNDcsIDEzOCwgMjI4LCA1MiwgMjQ5LCAxODgsIDI1MywgMjM4LCAyMjgsIDU3LCAyMTgsIAorICAgIDc3LCAxNzcsIDI0NSwgOTksIDY3LCAyNDUsIDE2MywgMjMwLCAyMjIsIDIwMywgMjQ1LCAxNjMsIDEyMCwgNDQsIDI0NywgCisgICAgMjU1LCAyNDUsIDE2MywgMTI0LCA0NCwgMjQ3LCAyNTUsIDI0NSwgMTYzLCAyNDUsIDE3MCwgNjQsIDIsIDE5OSwgMjAzLCAKKyAgICA5MSwgMjQ1LCAxNzAsIDY0LCAyLCA2NywgMjUyLCAxNDEsIDI1MywgMjA3LCAyNDUsIDE0MywgNjQsIDIwMywgOTEsIDQsIAorICAgIDI0NSwgMTcwLCA2NCwgMiwgNjcsIDI1MiwgMTQxLCAyNTMsIDIwNywgMjQ1LCAxNDMsIDY0LCAyMDMsIDkxLCAyNDUsIDE3MCwgCisgICAgNjQsIDIsIDU5LCA0OCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgNCwgMjQ1LCAxNzAsIDY0LCAyLCAyMjYsIDEyMywgCisgICAgMjQ1LCAxNzAsIDY0LCAyLCAyMTQsIDE4MywgMjQ1LCAxNzAsIDY0LCAyLCAxMTMsIDIwMywgMjE4LCA5MCwgMjQ5LCAxODYsIAorICAgIDIsIDE5OSwgMjAzLCA5MSwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCAKKyAgICA5MSwgNCwgMjQ5LCAxODYsIDIsIDY3LCAyNTIsIDE0MSwgMjUzLCAyMDcsIDI0NSwgMTQzLCA2NCwgMjAzLCA5MSwgMjQ5LCAKKyAgICAxODYsIDIsIDIyNiwgMTIzLCA0LCAyNDksIDE4NiwgMiwgMjI2LCAxMjMsIDIxMCwgMTYwLCAxODcsIDI1MiwgMTczLCAyMzEsIAorICAgIDYxLCAyNDcsIDI1MCwgNTAsIDI0NSwgMTcyLCA3NCwgMjQwLCAyMzQsIDEyMCwgMjUzLCAyNDksIDEyNCwgMjUzLCAyNDksIAorICAgIDIyNCwgMTc1LCAyMjUsIDE2NSwgMjEyLCAzMiwgMjMyLCAyMTMsIDQzLCAyNTAsIDE4MSwgNDQsIDI1MCwgMTgxLCA0MywgCisgICAgMjQ0LCA1NywgNDQsIDI0NCwgNTcsIDI1MSwgMTc1LCA0NCwgMjQ5LCAxMzIsIDI1MSwgMTc1LCA0MywgMjQ5LCAxMzIsIAorICAgIDIxNiwgMTQsIDQ0LCAyNDksIDEzMiwgMjE2LCAxNCwgNDMsIDI0OSwgMTMyLCAyMjMsIDQ5LCAyMjgsIDUyLCA1MCwgNDIsIAorICAgIDIzMiwgMTA0LCAyNTQsIDI1LCAyMjEsIDE2NCwgMjIxLCAxNzEsIDIxNywgMSwgMjIzLCAxMjAsIDIyNCwgMjQxLCAyMzUsIAorICAgIDIzOCwgMjEzLCAxNjUsIDIxOCwgMjM0LCAyMjUsIDQxLCA2NCwgMjM1LCAyMDcsIDUwLCAyMTUsIDk0LCAyMjgsIDUyLCA1MCwgCisgICAgMjEyLCA0MiwgMjQwLCAyMzYsIDIxNiwgMTQsIDQzLCAyNDksIDE2MCwgMjE2LCAxNCwgNDQsIDI0OSwgMTYwLCAyNTEsIAorICAgIDE3NSwgNDMsIDI0OSwgMTYwLCAyNTEsIDE3NSwgNDQsIDI0OSwgMTYwLCAyMTYsIDE0LCAxNjMsIDIzNSwgMjExLCAyNTEsIAorICAgIDE3NSwgMTYzLCAyMzUsIDIxMSwgMjQzLCAyNDAsIDIxOSwgNzUsIDEyMCwgMjUzLCAyNTAsIDI1MiwgMjQsIDExMywgMjAzLCAKKyAgICAyNTIsIDEyOSwgMjI2LCAxNjAsIDIzNCwgMTM4LCAyNDUsIDkwLCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDIxMSwgCisgICAgMTc5LCAyMzYsIDAsIDExNSwgMjIzLCAxMTcsIDI1MSwgMTYzLCAyMzQsIDEzNywgMjMzLCA0MiwgMjU0LCAxMTAsIDEyNywgCisgICAgMjIyLCAyNDcsIDI1NCwgMTEwLCAxMjcsIDI0NSwgOTAsIDIxNiwgNDIsIDIxNiwgMTk2LCAyMzMsIDQ2LCAyNTIsIDM1LCAKKyAgICAyMjIsIDIzMywgMjQ5LCA3MCwgMjU0LCAxNTUsIDI1NCwgMSwgMjE3LCAxODEsIDIxNiwgNCwgMjIyLCAxMjMsIDI0NywgCisgICAgMjE1LCAyMjYsIDE1MSwgMjQ5LCAxOTgsIDIxNywgNTIsIDIxOSwgODYsIDI0OSwgMTUxLCAyNDksIDE1MCwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyNDAsIDE1MSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMTgsIDIyOCwgMjI0LCAyNywgMjU0LCAKKyAgICA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgCisgICAgMTc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0NywgMjQ4LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjUwLCAzNSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNTAsIDM2LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTAsIDM2LCAyMzUsIDU2LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIxOSwgOTYsIDEzMCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTIsIDE4MSwgMTMwLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDIxOSwgOTUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgCisgICAgMjUyLCAxODAsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjMzLCAxNCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyMjQsIDI4LCAyNDIsIDEyOSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxNDAsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgOTcsIDIxNCwgMTksIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMTQwLCA3NCwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCA5NywgNzQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjUyLCAxODAsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAKKyAgICAyNDgsIDU1LCAyMTgsIDEzNSwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAxMjQsIDI1MCwgMjM4LCAyNTQsIAorICAgIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIDI0OCwgNTQsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyMTcsIDg4LCAKKyAgICAyMzUsIDU2LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxNCwgMTUzLCAyMTQsIDE5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDIyNCwgMjgsIDIxNCwgMTUzLCA3NCwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIyNiwgMTIzLCAKKyAgICAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI0OCwgNjYsIDIxOCwgMTM1LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDEyMCwgMjUwLCAyMzgsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ4LCA2NSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAxMjAsIDIxNywgODgsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ2LCAxMDQsIDIxNCwgMTksIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ2LCAxMDQsIDc0LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMywgCisgICAgMjUzLCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDgsIDU1LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNDcsIDI0OSwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjM1LCA1NywgMjE0LCAxODMsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjUwLCAzNiwgMjE0LCAxODMsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAKKyAgICAyMjAsIDUsIDIzNSwgNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjIzLCAyNTMsIDIyNCwgMjcsIDI1NCwgNjYsIDI0MywgCisgICAgMjI1LCAxNiwgMjUwLCAzNiwgMjE4LCAxNTYsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjI0LCAyOCwgMjQ5LCAyMjYsIAorICAgIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTIwLCAyMTcsIDg4LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ4LCAKKyAgICA2NiwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIxOCwgMTU3LCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAKKyAgICAxNiwgMjM1LCA1NywgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDI1MCwgMzYsIDI0OCwgMSwgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAxMjQsIDIyMCwgNSwgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgNDMsIDIyMCwgNSwgCisgICAgMjE4LCAxMzUsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjE2LCA4OSwgMjQ4LCAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI0MiwgMTMwLCAyNDgsIDEsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjQ5LCAyMjAsIDEzMCwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyNDgsIDY2LCAxODIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMjEwLCAzNCwgMjU0LCA2NiwgMjQzLCAyMjUsIAorICAgIDE2LCAyMTgsIDEzNiwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyMCwgMTUxLCAyMTQsIDE4MywgMjU0LCA2NiwgCisgICAgMjQzLCAyMjUsIDE2LCAyMjQsIDI4LCAyMjgsIDUyLCAyNDUsIDk5LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjgsIAorICAgIDIyNCwgMTIsIDI1NCwgNjYsIDI0MywgMjI1LCAxNiwgMTI0LCAyNTAsIDIzOSwgMTgyLCAyNTQsIDY2LCAyNDMsIDIyNSwgCisgICAgMTYsIDEyMCwgMjUwLCAyMzksIDE4MiwgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyMzUsIDE4NSwgMjU0LCA2NiwgMjQzLCAKKyAgICAyMjUsIDE2LCAyMjMsIDM3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAxLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIAorICAgIDI1NCwgMTQ0LCAyMTQsIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNDUsIDEwMSwgMjE0LCAxODMsIDI1NCwgNjYsIAorICAgIDI0MywgMjI1LCAxNiwgMjM1LCAxODYsIDIxNCwgMTgzLCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNiwgMjAyLCAyMTQsIAorICAgIDE4MywgMjU0LCA2NiwgMjQzLCAyMjUsIDE2LCAyNTQsIDE0MywgMjI4LCA1MiwgMjUwLCAxMzAsIDc4LCA0NCwgMjU0LCAKKyAgICAxMTAsIDIsIDI0NiwgMTA0LCAyMTAsIDM1LCA3NCwgMjE5LCAyMzUsIDIwNCwgMjUxLCAxNjMsIDI1MiwgNDUsIDg3LCA2NywgCisgICAgMjMyLCAyMTQsIDIsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM1LCAyMTYsIDg3LCAyNDksIDE4MywgMjE0LCAxODEsIDg3LCAKKyAgICAyNDcsIDE4OSwgMjE0LCAxODEsIDg3LCAyNDUsIDE1NCwgODcsIDI0OSwgMjEwLCA4NywgNzEsIDQyLCAyLCAyNTAsIDE3NSwgCisgICAgNjcsIDIzMiwgMjEzLCAyNDUsIDEzMCwgODcsIDI1NCwgMTM5LCAyMzQsIDEzOSwgODcsIDI0MSwgMjEzLCA4NywgMzcsIAorICAgIDIwMywgMjUyLCAxNDEsIDIsIDIyOCwgNTAsIDM3LCAyMTUsIDIyNiwgMjQ2LCAxMDYsIDI1MSwgMTM1LCAyNTAsIDM2LCAyLCAKKyAgICAyMjgsIDU0LCA3NCwgMjE0LCAxNzksIDg3LCAyMzAsIDEzNywgODcsIDI0MCwgMTY0LCA4NywgMjI2LCAxNzQsIDI0MiwgNTksIAorICAgIDg3LCAyMjYsIDE3NCwgMjMzLCAxNDcsIDg3LCAyMjUsIDI0NCwgODcsIDIyNSwgMjQzLCA4NywgMjQ3LCAxOTcsIDI0OSwgCisgICAgOTcsIDE2LCAyNDQsIDIwLCAxMDUsIDIxOSwgNTAsIDg3LCAyNTQsIDY2LCAyNDMsIDIyNSwgMTYsIDIyNCwgMjcsIDI0OCwgCisgICAgODMsIDIyMCwgMTM4LCAyMzQsIDEzOSwgODcsIDIyNCwgMTkyLCAyMjYsIDc1LCAyMjksIDgyLCAyMjYsIDc1LCAyMjQsIAorICAgIDE4OCwgMjIxLCAxODksIDg3LCAyNTAsIDE3LCAyMjEsIDE4OSwgODcsIDQzLCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIDQzLCAKKyAgICAyMjYsIDQsIDI0NSwgMjEsIDQzLCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQ0LCAyMjYsIDQsIDIxNCwgMTYwLCAxMDMsIAorICAgIDQ0LCAyMjYsIDQsIDI0NSwgMjEsIDQ0LCAyMjYsIDQsIDIzMiwgMTA4LCAxMDMsIDQzLCA0MiwgMjUxLCAxNTgsIDIxNCwgCisgICAgMTYwLCAyNDksIDE2MCwgNDMsIDQyLCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDMsIDQyLCAyNTEsIDE1OCwgMjMyLCAxMDgsIAorICAgIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyMTQsIDE2MCwgMjQ5LCAxNjAsIDQ0LCA0MiwgMjUxLCAxNTgsIDI0NSwgCisgICAgMjEsIDQ0LCA0MiwgMjUxLCAxNTgsIDIzMiwgMTA4LCAyNDksIDE2MCwgNDMsIDI0OSwgOTksIDI1MSwgMTU4LCAyMTQsIAorICAgIDE2MCwgMTAzLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDMsIDI0OSwgOTksIDI1MSwgCisgICAgMTU4LCAyMzIsIDEwOCwgMTAzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjQ1LCAyMSwgNDQsIDI0OSwgOTksIDI1MSwgMTU4LCAKKyAgICAyMTQsIDE2MCwgMTAzLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIzMCwgMjI0LCAyMjUsIDEwMSwgNDQsIDI0OSwgOTksIAorICAgIDI1MSwgMTU4LCAyMzIsIDEwOCwgMTAzLCAyMzUsIDIxMiwgMjQ1LCAyMSwgMjAzLCAyMzIsIDIxNCwgMjQ1LCAyMSwgMjE0LCAKKyAgICAxNjAsIDQzLCAxNzcsIDIzMiwgMTA4LCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyMSwgMTcyLCAyMTQsIDE2MCwgNDQsIAorICAgIDE3NywgMjMyLCAxMDgsIDQzLCAyNDksIDk5LCAyNTEsIDE1OCwgMjIxLCAxNzIsIDIxOCwgNDEsIDIxNiwgMTMsIDIxOCwgCisgICAgNDEsIDI1MSwgMTc0LCAyMTYsIDE0LCA0MiwgMTI3LCAyNTEsIDE3NSwgNDIsIDEyNywgMjUxLCAxNzUsIDQyLCAyNTEsIAorICAgIDE1OCwgMTE3LCAyMTYsIDE0LCA0MiwgMTI3LCAzNCwgMTYsIDI1MSwgMTc0LCA0MywgNjcsIDkzLCAyMzIsIDIxMywgNDQsIAorICAgIDY3LCA5MywgMjMyLCAyMTMsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjEyLCAyMDMsIDIyMSwgMjA1LCAyMzIsIDIxMSwgMjAzLCAKKyAgICAyMjEsIDIwNSwgMjMyLCAyMTAsIDIwMywgMjIxLCAyMDUsIDIzMiwgMjA5LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIAorICAgIDIxNiwgMTQsIDIyMiwgMjUxLCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMjIsIDI1MSwgMTc1LCAyMjIsIDI1MSwgMjQ4LCA0NiwgCisgICAgMTYsIDE5MiwgNjcsIDIsIDI1MCwgMzUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjUwLCAzNSwgMjQ4LCAKKyAgICA0NiwgMTYsIDE5MiwgMTIwLCAyMiwgMjAzLCAyLCAyNTAsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCA2NywgMiwgMjE1LCAyMjUsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIAorICAgIDIwMywgMiwgMjE1LCAyMjUsIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjEyLCAzNSwgMjQ4LCA0NiwgMTYsIDE5MiwgCisgICAgMTI0LCAyMiwgMjAzLCAyLCAyMTIsIDM1LCAyNDgsIDQ2LCAxNiwgMTkyLCAxMjAsIDIyLCAyMDMsIDIsIDIxMiwgMzUsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDEyNCwgMjIsIDI0MSwgNDQsIDI0OCwgNDYsIDE2LCAxOTIsIDEyMCwgMjIsIDI0MSwgNDQsIAorICAgIDI0OCwgNDYsIDE2LCAxOTIsIDY3LCAyMiwgMjE2LCAxNCwgMjMzLCA0NiwgMjQ4LCA0NiwgMTYsIDE5MiwgNjcsIDIyLCAKKyAgICAyNTEsIDE3NSwgMjMzLCA0NiwgNDIsIDI0NCwgMzIsIDIyMywgNTQsIDg3LCAyNDUsIDE4MiwgODcsIDY3LCAyMzIsIDIxNCwgCisgICAgMjQ1LCAyMSwgMjMxLCAzMywgMjUxLCAxNDYsIDIzMSwgMzMsIDE5OSwgMTE3LCAyMTksIDI1MCwgMjMxLCAzMywgMjE5LCAKKyAgICAyNTEsIDExNywgMjMyLCAxMzcsIDIzMSwgMzMsIDE5OSwgMTE3LCAxMTMsIDIxOSwgMjM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgCisgICAgMjM4LCAxMTcsIDIzMiwgMTM3LCAyMzEsIDMzLCAxMTMsIDIxOSwgMjM4LCAyMzUsIDY0LCAyMzEsIDMzLCAyMTUsIDIwOCwgCisgICAgMjMxLCAzMywgMjE2LCAyMjMsIDIzMSwgMzMsIDIyNSwgMTg4LCAyNDUsIDIyNCwgMjQyLCAxMjIsIDI0MywgMjE5LCAyMTYsIAorICAgIDE0LCAyMjYsIDMsIDI1MSwgMTc1LCAyMjYsIDMsIDIxNiwgMTQsIDI0OSwgOTksIDEyNywgMjUxLCAxNzUsIDI0OSwgOTksIAorICAgIDEyNywgMjE2LCAxNCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI1MSwgMTc1LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNzEsIAorICAgIDIxNSwgMjM5LCAyNTIsIDM1LCAyMjIsIDIzNCwgMiwgMjUwLCAzNSwgMjE4LCAxMjAsIDI0NCwgNjQsIDI1NSwgMTcsIDI0OSwgCisgICAgOTYsIDI0NSwgMTcxLCAyMzUsIDE5OCwgMjQ4LCA4MywgMjQ1LCAyNCwgODcsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI1LCAKKyAgICA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgMjI1LCA4NSwgMjE0LCAxNjIsIDUyLCAyMTUsIDIyNSwgODUsIDI0NiwgMTA1LCA1MiwgCisgICAgMjE1LCAyMjUsIDg1LCAyMjIsIDI0NywgNTIsIDIxNSwgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjMzLCA0MiwgNTIsIDIxNSwgCisgICAgMjI2LCAyLCA2NywgMTMwLCA4NSwgMjIyLCAyNDcsIDIxNSwgMjI2LCAyLCA1MiwgNjcsIDEzMCwgMjU0LCAxNzMsIDI1MCwgCisgICAgMywgMjE4LCAxMjYsIDIxNiwgODYsIDI1MCwgMywgMjQwLCAyMzcsIDIsIDI0NCwgNTAsIDIyMSwgMjQxLCAxNiwgMzEsIAorICAgIDIyNywgMjAyLCAxNiwgMzEsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDE2LCAzMSwgMjE4LCAxNTIsIDY0LCAyMTYsIDIxMiwgCisgICAgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNiwgMjEyLCAxNiwgMzEsIDI0NSwgMTQzLCA2NCwgMjE1LCAyNDMsIDE2LCAzMSwgCisgICAgMjQ1LCAxMzIsIDE2LCAzMSwgMjU1LCA3LCAxNiwgMzEsIDI1MiwgNDQsIDE2LCAzMSwgMjUyLCAxNzksIDE2LCAzMSwgMjAzLCAKKyAgICAyMTcsIDg5LCAxNiwgMzEsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTYsIDMxLCA2NywgMjE3LCA4OSwgMTYsIDMxLCAyNDQsIAorICAgIDIwLCAyNDQsIDE0NSwgMTYsIDMxLCAyNTAsIDIzMCwgMjIzLCA1MywgMTYsIDMxLCAyMjAsIDI4LCAyMjYsIDEzMCwgMTYsIAorICAgIDMxLCAyMjAsIDI4LCAyMzUsIDI1NSwgMTYsIDMxLCAyNDgsIDE1MSwgMjMyLCAyMDQsIDI0NSwgNzcsIDE2LCAzMSwgMjQ4LCAKKyAgICAzMSwgMjQ5LCAxNzgsIDExMCwgMTYsIDMxLCAyNDgsIDMxLCAyNDksIDE3OCwgMTA1LCAxNiwgMzEsIDI0OCwgMzEsIDI0OSwgCisgICAgMTc4LCAxNTgsIDE2LCAzMSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDE2MSwgMTYsIDMxLCAxNTIsIDI1NSwgNywgMTYsIDMxLCAKKyAgICAyMTcsIDE3NywgMjM2LCA2MiwgMTYsIDMxLCAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMTYsIDMxLCAyNTEsIAorICAgIDUsIDE2LCAzMSwgMjQ1LCAxNDMsIDY0LCAyMzEsIDgxLCAxNiwgMzEsIDIxOCwgNjEsIDE2LCAzMSwgMjQ1LCA3NywgMTYsIAorICAgIDMxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDE2LCAzMSwgMjQyLCAxMjEsIDIyMCwgMTM3LCAxNiwgMzEsIDIyMywgMTIxLCAKKyAgICAyMjAsIDEzNywgMTYsIDMxLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDE2LCAzMSwgMjE5LCAxOCwgMTYsIDMxLCAyNDgsIDYzLCAKKyAgICAyNTEsIDIxNiwgODcsIDIwNCwgMjUxLCAxNjMsIDE2LCAzMSwgMjI5LCA4NSwgMTYsIDMxLCAyNDgsIDY0LCAyNDQsIDIwLCAKKyAgICAxMDUsIDE2LCAzMSwgMjE4LCA2MiwgMjQ0LCAyMCwgMTA1LCAyMjYsIDI0MSwgMTAzLCAyMjYsIDI0MSwgMjUwLCAxNTIsIAorICAgIDIyNiwgMjQxLCAyNDQsIDIzLCAyMjYsIDI0MSwgMjM1LCAxOTMsIDI0NCwgMjMsIDIyNiwgMjQxLCAyNTIsIDQyLCAyNTEsIAorICAgIDEyNCwgMjI2LCAyNDEsIDI1MSwgMTcwLCAyMTYsIDExMSwgMjI2LCAyNDEsIDI1MSwgMTU1LCAyNTIsIDE0NiwgMjQwLCAKKyAgICAxMDMsIDIyNiwgMjQxLCAyNTQsIDEyNywgNjQsIDI1MCwgMTI5LCAyMjYsIDI0MSwgMjQ4LCAxNTYsIDIyNiwgMjQxLCAyNDksIAorICAgIDg3LCAyNTUsIDExLCAyMjcsIDIwMCwgMjI2LCAyNDEsIDUyLCAyNTIsIDE4MCwgMzcsIDIxLCAxMTAsIDM3LCAyMSwgMTA1LCAKKyAgICAzNywgMjEsIDE1OCwgMzcsIDIxLCAxNjEsIDM3LCAyMSwgMTg5LCAzNywgMjEsIDE5NCwgMzcsIDIxLCAxOTgsIDM3LCAyMSwgCisgICAgMTk1LCAzNywgMjEsIDIwMCwgMzcsIDU0LCAyMTYsIDI0NywgMzcsIDU0LCAyNDUsIDE2NywgMzcsIDU0LCAyMTUsIDc2LCAKKyAgICAzNywgNTQsIDIxNiwgMTY0LCAzNywgNTQsIDI0NCwgNSwgMzcsIDU0LCAyNDQsIDExOCwgMzcsIDU0LCAyMTksIDExOSwgMzcsIAorICAgIDU0LCAyMjAsIDExOSwgMzcsIDU0LCAyNDUsIDE5MCwgMzcsIDU0LCAyMjgsIDE5NywgMzcsIDU0LCAyMTUsIDczLCA4OCwgCisgICAgMjEsIDExMCwgODgsIDIxLCAxMDUsIDg4LCAyMSwgMTU4LCA4OCwgMjEsIDE2MSwgODgsIDIxLCAxODksIDg4LCAyMSwgMTk0LCAKKyAgICA4OCwgMjEsIDE5OCwgODgsIDIxLCAxOTUsIDg4LCAyMSwgMjAwLCA4OCwgNTQsIDIxNiwgMjQ3LCA4OCwgNTQsIDI0NSwgCisgICAgMTY3LCA4OCwgNTQsIDIxNSwgNzYsIDg4LCA1NCwgMjE2LCAxNjQsIDg4LCA1NCwgMjQ0LCA1LCA4OCwgNTQsIDI0NCwgMTE4LCAKKyAgICA4OCwgNTQsIDIxOSwgMTE5LCA4OCwgNTQsIDIyMCwgMTE5LCA4OCwgNTQsIDI0NSwgMTkwLCA4OCwgNTQsIDIyOCwgMTk3LCAKKyAgICA4OCwgNTQsIDIxNSwgNzMsIDIxLCAxMjMsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDExMywgMjQzLCAyMjksIDIxOCwgCisgICAgMTI5LCAyMSwgMTM0LCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyNDQsIDExLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAKKyAgICAyNDQsIDgxLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMTksIDEyNSwgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjIwLCAKKyAgICAxMjIsIDI0MywgMjI5LCAyMTgsIDEyOSwgMjEsIDI0NSwgMTkzLCAyNDMsIDIyOSwgMjE4LCAxMjksIDIxLCAyMjgsIDIwMCwgCisgICAgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjE2LCAyNDgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDI0NSwgMTY4LCAyNDMsIAorICAgIDIyOSwgMjE4LCAxMjksIDU0LCAyMTUsIDc3LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyMTYsIDE2NSwgMjQzLCAyMjksIAorICAgIDIxOCwgMTI5LCA1NCwgMjQ0LCA2LCAyNDMsIDIyOSwgMjE4LCAxMjksIDU0LCAyNDQsIDExOSwgMjQzLCAyMjksIDIxOCwgCisgICAgMTI5LCA1NCwgMjE5LCAxMjAsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIDIyMCwgMTIwLCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDU0LCAyNDUsIDE5MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA1NCwgMjI4LCAxOTgsIDI0MywgMjI5LCAyMTgsIDEyOSwgNTQsIAorICAgIDIxNSwgNzQsIDI0MywgMjI5LCAyMTgsIDEyOSwgODgsIDcsIDQsIDEsIDYxLCA4OCwgNywgNCwgMSwgMjUzLCAxNTgsIDg4LCAKKyAgICA3LCA0LCAxLCAyNTEsIDY2LCA4OCwgNywgNCwgMSwgMjQ5LCA2MCwgODgsIDcsIDQsIDEsIDc1LCA4OCwgNywgNCwgMSwgCisgICAgMjQ1LCA2LCA4OCwgNywgNCwgMSwgMjQzLCAyMDIsIDg4LCA3LCA0LCAxLCAyNDIsIDYwLCA4OCwgNywgNCwgMSwgNzMsIDg4LCAKKyAgICA3LCA0LCAxLCAyMzUsIDE0NCwgODgsIDcsIDQsIDEsIDIzNSwgMjMsIDg4LCA3LCA0LCAxLCAxNTYsIDg4LCA3LCA0LCAxLCAKKyAgICAxOTMsIDg4LCA3LCA0LCAxLCAyMzAsIDI1LCA4OCwgNywgNCwgMSwgNzYsIDg4LCA3LCA0LCAxLCAyMjYsIDEwNSwgODgsIDcsIAorICAgIDQsIDEsIDIyNCwgOTYsIDg4LCA3LCA0LCAxLCAxNTMsIDg4LCA3LCA0LCAxLCAyMjIsIDkxLCA4OCwgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDg4LCA3LCA0LCAxLCA3MCwgODgsIDcsIDQsIDEsIDIxNCwgMTA1LCA4OCwgNywgNCwgMSwgMjEyLCA5OCwgODgsIDcsIAorICAgIDQsIDEsIDIxMSwgMTc4LCA4OCwgNywgNCwgMSwgMjExLCAxMTcsIDg4LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDYsIAorICAgIDEsIDYxLCAzNywgNywgNiwgMSwgMjUzLCAxNTgsIDM3LCA3LCA2LCAxLCAyNTEsIDY2LCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgMzcsIDcsIDYsIDEsIDc1LCAzNywgNywgNiwgMSwgMjQ1LCA2LCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDM3LCA3LCA2LCAxLCAKKyAgICAyNDIsIDYwLCAzNywgNywgNiwgMSwgNzMsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgMzcsIDcsIDYsIDEsIDIzNSwgMjMsIAorICAgIDM3LCA3LCA2LCAxLCAxNTYsIDM3LCA3LCA2LCAxLCAxOTMsIDM3LCA3LCA2LCAxLCAyMzAsIDI1LCAzNywgNywgNiwgMSwgCisgICAgNzYsIDM3LCA3LCA2LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDYsIDEsIDIyNCwgOTYsIDM3LCA3LCA2LCAxLCAxNTMsIDM3LCA3LCAKKyAgICA2LCAxLCAyMjIsIDkxLCAzNywgNywgNiwgMSwgMjE3LCAxNTIsIDM3LCA3LCA2LCAxLCA3MCwgMzcsIDcsIDYsIDEsIDIxNCwgCisgICAgMTA1LCAzNywgNywgNiwgMSwgMjEyLCA5OCwgMzcsIDcsIDYsIDEsIDIxMSwgMTc4LCAzNywgNywgNiwgMSwgMjExLCAxMTcsIAorICAgIDM3LCA3LCA2LCAxLCAyMTAsIDE1OSwgMzcsIDcsIDQsIDEsIDYxLCAzNywgNywgNCwgMSwgMjUzLCAxNTgsIDM3LCA3LCA0LCAKKyAgICAxLCAyNTEsIDY2LCAzNywgNywgNCwgMSwgMjQ5LCA2MCwgMzcsIDcsIDQsIDEsIDc1LCAzNywgNywgNCwgMSwgMjQ1LCA2LCAKKyAgICAzNywgNywgNCwgMSwgMjQzLCAyMDIsIDM3LCA3LCA0LCAxLCAyNDIsIDYwLCAzNywgNywgNCwgMSwgNzMsIDM3LCA3LCA0LCAKKyAgICAxLCAyMzUsIDE0NCwgMzcsIDcsIDQsIDEsIDIzNSwgMjMsIDM3LCA3LCA0LCAxLCAxNTYsIDM3LCA3LCA0LCAxLCAxOTMsIAorICAgIDM3LCA3LCA0LCAxLCAyMzAsIDI1LCAzNywgNywgNCwgMSwgNzYsIDM3LCA3LCA0LCAxLCAyMjYsIDEwNSwgMzcsIDcsIDQsIAorICAgIDEsIDIyNCwgOTYsIDM3LCA3LCA0LCAxLCAxNTMsIDM3LCA3LCA0LCAxLCAyMjIsIDkxLCAzNywgNywgNCwgMSwgMjE3LCAKKyAgICAxNTIsIDM3LCA3LCA0LCAxLCA3MCwgMzcsIDcsIDQsIDEsIDIxNCwgMTA1LCAzNywgNywgNCwgMSwgMjEyLCA5OCwgMzcsIDcsIAorICAgIDQsIDEsIDIxMSwgMTc4LCAzNywgNywgNCwgMSwgMjExLCAxMTcsIDM3LCA3LCA0LCAxLCAyMTAsIDE1OSwgMzcsIDIxLCAKKyAgICAyMTAsIDg2LCAxNTIsIDM3LCA1NCwgMjQ1LCAxNjcsIDE1MiwgMzcsIDU0LCAyMTUsIDc2LCAxNTIsIDM3LCA1NCwgMjE2LCAKKyAgICAxNjQsIDE1MiwgMzcsIDU0LCAyNDQsIDUsIDE1MiwgMzcsIDU0LCAyNDQsIDExOCwgMTUyLCAzNywgNTQsIDIxOSwgMTE5LCAKKyAgICAxNTIsIDM3LCA1NCwgMjIwLCAxMTksIDE1MiwgMzcsIDU0LCAyNDUsIDE5MCwgMTUyLCAzNywgNTQsIDIyOCwgMTk3LCAxNTIsIAorICAgIDM3LCA1NCwgMjE1LCA3MywgNTIsIDM3LCAyMSwgMTEwLCA1MiwgMzcsIDIxLCAxMDUsIDUyLCAzNywgMjEsIDE1OCwgNTIsIAorICAgIDM3LCAyMSwgMTYxLCA1MiwgMzcsIDIxLCAxODksIDUyLCAzNywgMjEsIDE5NCwgNTIsIDM3LCAyMSwgMTk4LCA1MiwgMzcsIAorICAgIDIxLCAxOTUsIDUyLCAzNywgMjEsIDIwMCwgNTIsIDM3LCA1NCwgMjE2LCAyNDcsIDE1MiwgMzcsIDIxLCAyMTAsIDg2LCA5MywgCisgICAgOTksIDE5MiwgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDI0MSwgNDQsIDkzLCA5OSwgMTkyLCAyMTMsIDIzOSwgOTMsIDk5LCAKKyAgICAxMTQsIDIxMywgMjM5LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDExNCwgCisgICAgMjE1LCAyMTEsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjE1LCAyMTEsIDI0OCwgMTU3LCAyMTMsIDIzOSwgCisgICAgOTMsIDk5LCAxMTQsIDIxNSwgMjExLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgMTkyLCAyMjQsIDI0LCAyNDgsIAorICAgIDE1NywgMjQxLCA0NCwgOTMsIDk5LCAxMTQsIDIyNCwgMjQsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjI0LCAKKyAgICAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIDExNCwgMjI0LCAyNCwgMjQ4LCAxNTcsIDIxMywgMjM5LCA5MywgOTksIAorICAgIDE5MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAKKyAgICAxMTQsIDIyLCA0NCwgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyNCwgCisgICAgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTI0LCAxMTQsIDIyLCAKKyAgICA0MywgMjMyLCAyMzAsIDkzLCA5OSwgMTE0LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMTIwLCAyMiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0NCwgMjMyLCAKKyAgICAyMzAsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDIzMywgNDYsIDkzLCAKKyAgICA5OSwgMTIwLCAxOTIsIDIyLCA0MywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCA0MywgMjMyLCAyMzAsIDkzLCAKKyAgICA5OSwgMTE0LCAxMjAsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgNjcsIDIyLCAyMjIsIDI1MSwgOTMsIDk5LCA2NywgCisgICAgMTkyLCAyMiwgNDQsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAyMiwgNDQsIDEyNCwgMjMyLCAyMzAsIDkzLCA5OSwgCisgICAgMTI0LCAxMTQsIDIyLCA0NCwgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCA2NywgMTE0LCAyMiwgNDQsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDEyNCwgMTkyLCAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxOTIsIDIyLCA0NCwgMTI0LCAyNDEsIAorICAgIDIyMSwgOTMsIDk5LCAxMTQsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgCisgICAgNjcsIDE5MiwgMjIsIDQzLCAyNDEsIDIyMSwgOTMsIDk5LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgCisgICAgOTksIDEyNCwgMTE0LCAyMiwgNDMsIDEyMCwgMjMyLCAyMzAsIDkzLCA5OSwgNjcsIDExNCwgMjIsIDQzLCAyMzIsIDIzMCwgCisgICAgOTMsIDk5LCAxMjQsIDE5MiwgMjIsIDQzLCAxMjAsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgNDMsIDEyNCwgCisgICAgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCA2NywgMjIsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAxMjQsIDIyLCAyNDEsIDQ0LCAKKyAgICA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgMTI0LCAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTE0LCAyMiwgNDMsIDEyNCwgCisgICAgMjMyLCAyMzAsIDkzLCA5OSwgMTI0LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMjAzLCAKKyAgICAyMzIsIDIzMCwgOTMsIDk5LCA0NCwgMTkyLCAyMiwgNDMsIDEyNCwgMjQxLCAyMjEsIDkzLCA5OSwgNDMsIDE5MiwgMjIsIAorICAgIDQ0LCAxMjQsIDI0MSwgMjIxLCA5MywgOTksIDExNCwgMTI0LCAyMiwgMjQxLCA0NCwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIAorICAgIDI0MSwgNDQsIDkzLCA5OSwgNDMsIDExNCwgMjIsIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCA0MywgCisgICAgMTIwLCAyMzIsIDIzMCwgOTMsIDk5LCAxMjAsIDE5MiwgMjIsIDIwMywgMjQxLCAyMjEsIDkzLCA5OSwgMTIwLCAxMTQsIDIyLCAKKyAgICAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgMTIwLCAyNDEsIDIyMSwgOTMsIDk5LCA0MywgMTkyLCAKKyAgICAyMiwgNDQsIDEyMCwgMjQxLCAyMjEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNjcsIAorICAgIDIyLCAyNDEsIDQ0LCA5MywgOTksIDQzLCAxMTQsIDIyLCA0NCwgNjcsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMTQsIDIyLCAKKyAgICA0MywgNjcsIDIzMiwgMjMwLCA5MywgOTksIDY3LCAxOTIsIDIyLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTE0LCAKKyAgICAyMiwgMTI0LCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDEyNCwgMTE0LCAyMiwgMTIwLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDY3LCAxMTQsIDIyLCAyMDMsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjAsIDExNCwgMjIsIDQ0LCAxMjQsIDIzMiwgMjMwLCAKKyAgICA5MywgOTksIDQ0LCAxMjAsIDExNCwgMjIsIDQzLCAxMjQsIDIzMiwgMjMwLCA5MywgOTksIDQzLCAxMjQsIDExNCwgMjIsIAorICAgIDQ0LCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIDQ0LCAxMjQsIDExNCwgMjIsIDQzLCAxMjAsIDIzMiwgMjMwLCA5MywgOTksIAorICAgIDEyNCwgMTkyLCAyMiwgMTIwLCAyMDMsIDI0MSwgMjIxLCA5MywgOTksIDEyMCwgMTkyLCAyMiwgMTI0LCAyMDMsIDI0MSwgCisgICAgMjIxLCA5MywgOTksIDQ0LCAxOTIsIDIyLCA0MywgNjcsIDI0MSwgMjIxLCA5MywgOTksIDQzLCAxOTIsIDIyLCA0NCwgNjcsIAorICAgIDI0MSwgMjIxLCA5MywgOTksIDExNCwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyNDEsIAorICAgIDQ0LCA5MywgOTksIDExNCwgNTIsIDI0OCwgMTU3LCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgNTIsIDI0OCwgMTU3LCAyMTMsIAorICAgIDIzOSwgOTMsIDk5LCAxMTQsIDUyLCAyNDgsIDE1NywgMjEzLCAyMzksIDkzLCA5OSwgNTIsIDI0MSwgNDQsIDkzLCA5OSwgCisgICAgNTIsIDIxMywgMjM5LCA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTI0LCA1MiwgCisgICAgMjIsIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTI0LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTI0LCAyMTksIDE1NSwgCisgICAgMjIsIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjQsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAKKyAgICAyMzMsIDQ2LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCA0NCwgMjQ2LCAxMTMsIDkzLCA5OSwgMTIwLCA1MiwgMjIsIAorICAgIDQ0LCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgMTIwLCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgMTIwLCAyMTksIDE1NSwgMjIsIAorICAgIDQzLCAyNDYsIDExMywgOTMsIDk5LCAxMjAsIDUyLCAyMiwgNDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAKKyAgICAyMzMsIDQ2LCA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDQ0LCAyNDYsIDExMywgOTMsIDk5LCA2NywgNTIsIDIyLCA0NCwgCisgICAgMjE5LCAxNTQsIDkzLCA5OSwgNTIsIDY3LCAyMiwgMjIyLCAyNTEsIDkzLCA5OSwgNjcsIDIxOSwgMTU1LCAyMiwgNDMsIAorICAgIDI0NiwgMTEzLCA5MywgOTksIDY3LCA1MiwgMjIsIDQzLCAyMTksIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyMzMsIDQ2LCAKKyAgICA5MywgOTksIDEyNCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgMTEzLCA5MywgOTksIDEyNCwgNTIsIDIyLCAyMDMsIDIxOSwgCisgICAgMTU0LCA5MywgOTksIDUyLCAxMjQsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDEyMCwgMjE5LCAxNTUsIDIyLCAyMDMsIDI0NiwgCisgICAgMTEzLCA5MywgOTksIDEyMCwgNTIsIDIyLCAyMDMsIDIxOSwgMTU0LCA5MywgOTksIDUyLCAxMjAsIDIyLCAyNDEsIDQ0LCAKKyAgICA5MywgOTksIDY3LCAyMTksIDE1NSwgMjIsIDIwMywgMjQ2LCAxMTMsIDkzLCA5OSwgNjcsIDUyLCAyMiwgMjAzLCAyMTksIAorICAgIDE1NCwgOTMsIDk5LCA1MiwgNjcsIDIyLCAyNDEsIDQ0LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTI0LCAyMiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTkyLCAyNTQsIDI2LCAxMjQsIDIyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjU0LCAyNiwgMTIwLCAKKyAgICAyMiwgMjMzLCA0NiwgOTMsIDk5LCAxOTIsIDI1NCwgMjYsIDEyMCwgMjIsIDIyMiwgMjUxLCA5MywgOTksIDE5MiwgMjQ3LCAKKyAgICAyNTUsIDIxNCwgMTYwLCA0NCwgMjE2LCA0MiwgMjMyLCAxMDgsIDIzMywgNDYsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgCisgICAgMjE0LCAxNjAsIDQzLCAyMTYsIDQyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDkzLCA5OSwgMTkyLCAyNDcsIDI1NSwgMjQ5LCAKKyAgICAxMzAsIDkzLCA5OSwgMTkyLCAyMzMsIDQ2LCA5MywgOTksIDE5MiwgMjE0LCAxNjMsIDkzLCA5OSwgMTkyLCAyMjIsIDI1MSwgCisgICAgOTMsIDk5LCAxOTIsIDI0NiwgMTA2LCA5MywgOTksIDExNCwgMjMzLCA0NiwgOTMsIDk5LCAxMTQsIDIxNCwgMTYzLCA5MywgCisgICAgOTksIDExNCwgMjIyLCAyNTEsIDkzLCA5OSwgMTE0LCAyNDYsIDEwNiwgOTMsIDk5LCAxOTIsIDQzLCAyMiwgMTE0LCAyMjIsIAorICAgIDI1MSwgOTMsIDk5LCAxOTIsIDEyMCwgMjIsIDExNCwgMjQ2LCAxMDYsIDkzLCA5OSwgMTE0LCA0MywgMjIsIDE5MiwgMjIyLCAKKyAgICAyNTEsIDkzLCA5OSwgMTE0LCAxMjAsIDIyLCAxOTIsIDI0NiwgMTA2LCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIxMywgMjMyLCAKKyAgICAxMDgsIDEyMywgMjQ1LCAxODksIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTIzLCAyMjQsIDIyLCAyNTEsIDIxMywgMjMyLCAxMDgsIAorICAgIDEzNCwgMjQ1LCAxODcsIDI1MSwgMjEzLCAyMzIsIDEwOCwgMTYzLCAyNTEsIDIxMywgMjMyLCAxMDgsIDI0NCwgODEsIDI0NSwgCisgICAgMTg3LCAyNTEsIDIxMywgMjMyLCAxMDgsIDEzNCwgMjI0LCAyMCwgMjUxLCAyMTMsIDIzMiwgMTA4LCAyMjAsIDEyMiwgMjQ1LCAKKyAgICAxODcsIDI1MSwgMjEzLCAyNDMsIDIyOSwgMjUxLCAyMTMsIDQzLCAyMjAsIDEyMiwgMjQ1LCAxODcsIDI1MSwgMjEzLCA0MywgCisgICAgMTM0LCAyMjQsIDIwLCAyNTEsIDIxMywgNDMsIDI0NCwgODEsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDE2MywgMjUxLCAKKyAgICAyMTMsIDQzLCAxMzQsIDI0NSwgMTg3LCAyNTEsIDIxMywgNDMsIDEyMywgMjI0LCAyMiwgMjUxLCAyMTMsIDQzLCAxMjMsIAorICAgIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDE2MywgMjUxLCAyMTMsIDE5MiwgMjIwLCA5MiwgMjMxLCA4MiwgMjIwLCA5MiwgCisgICAgMjQ4LCAxNjIsIDIyMCwgOTIsIDIxNCwgMTYwLCAxMjMsIDI0NSwgMTg5LCAyNTEsIDIxMywgNDQsIDEyMywgMjQ1LCAxODksIAorICAgIDI1MSwgMjEzLCAyMjQsIDI2LCAyMzIsIDEwOCwgMjMzLCA0NiwgMjI0LCAyNiwgMjMyLCAxMDgsIDIyMiwgMjUxLCAyMjQsIAorICAgIDI2LCAyMTQsIDE2MCwgMjMzLCA0NiwgMjI0LCAyNiwgMjE0LCAxNjAsIDQzLCAyMiwgMjMyLCAxMDgsIDQzLCAyMiwgMjMyLCAKKyAgICAxMDgsIDIyMiwgMjUxLCAyMjQsIDI2LCAyMTQsIDE2MCwgNDMsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIAorICAgIDIxNCwgMTYwLCA0MywgMjIsIDIxNCwgMTYwLCA0NCwgMjIsIDIzMiwgMTA4LCAyMzMsIDQ2LCAyMjQsIDI2LCAyMTQsIDE2MCwgCisgICAgNDMsIDIyLCAyMTQsIDE2MCwgNDQsIDIyLCAyMzIsIDEwOCwgMjIyLCAyNTEsIDIyNCwgMjYsIDIxNCwgMTYwLCAyMjIsIAorICAgIDI1MSwgMjI0LCAyNiwgMjE0LCAxNjAsIDQ0LCAyMiwgMjMyLCAxMDgsIDIzMywgNDYsIDIyNCwgMjYsIDIxNCwgMTYwLCA0NCwgCisgICAgMjIsIDIzMiwgMTA4LCA0MywgMjIsIDIzMiwgMTA4LCAyMjIsIDI1MSwgODUsIDIxOCwgMjM0LCA3MSwgMjE4LCAyMzQsIDcxLCAKKyAgICA0MiwgMiwgMjIyLCAxODMsIDI0OSwgMTU5LCA3MSwgNDIsIDI0OSwgMTg3LCA4NSwgNCwgMjE4LCAyMzQsIDQyLCAyLCAyMDMsIAorICAgIDI0NCwgMTA1LCA0MiwgMiwgNjcsIDI0NCwgMTA1LCA0MiwgMiwgMjI2LCAxNDQsIDI0OSwgMTI2LCAyNDQsIDEwNSwgNDIsIAorICAgIDIsIDIxNCwgMTYwLCA0MywgMjE2LCA0MiwgMjMyLCAxMDgsIDQ0LCAyNDQsIDEwNSwgNDIsIDIsIDIxNCwgMTYwLCA0NCwgCisgICAgMjE2LCA0MiwgMjMyLCAxMDgsIDQzLCAyNDQsIDEwNSwgNDIsIDIsIDI0NywgMjU1LCAyNDksIDEyNiwgMjQ0LCAxMDUsIDg1LCAKKyAgICA0LCAyMTgsIDIzNCwgNzEsIDQsIDIxOCwgMjM0LCA4NSwgMjIzLCAxMTYsIDcxLCAyMjMsIDExNiwgODUsIDY3LCAyMjMsIAorICAgIDExNiwgNzEsIDY3LCAyMjMsIDExNiwgODUsIDIyNiwgNiwgNzEsIDIyNiwgNiwgODUsIDIxNCwgMTYyLCAyMTUsIDIyNSwgCisgICAgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNSwgODUsIDIxNCwgMTYyLCA0LCAyMTUsIDIyNSwgNzEsIDIxNCwgMTYyLCA0LCAyMTUsIAorICAgIDIyNSwgODUsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCA0LCAKKyAgICAyMTUsIDIyNSwgNzEsIDIyMiwgMjQ3LCA0LCAyMTUsIDIyNSwgODUsIDIyMiwgMjQ3LCAyMjUsIDgsIDcxLCAyMjIsIDI0NywgCisgICAgMjI1LCA4LCA4NSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDIxNSwgMjI1LCA4NSwgMjQ2LCAxMDUsIDQsIAorICAgIDIxNSwgMjI1LCA3MSwgMjQ2LCAxMDUsIDQsIDIxNSwgMjI1LCA4NSwgMjMzLCA0MiwgMjE1LCAyMjUsIDcxLCAyMzMsIDQyLCAKKyAgICAyMTUsIDIyNSwgODUsIDIzMywgNDIsIDQsIDIxNSwgMjI1LCA3MSwgMjMzLCA0MiwgNCwgMjE1LCAyMjUsIDg1LCAyMzMsIAorICAgIDQyLCAyMjUsIDgsIDcxLCAyMzMsIDQyLCAyMjUsIDgsIDg1LCAyNDcsIDI0OCwgNzEsIDI0NywgMjQ4LCA3MSwgMjQ3LCAKKyAgICAyNDksIDI0OSwgMTg3LCA4NSwgNCwgMjQ3LCAyNDgsIDI0NCwgODksIDIzMiwgMTA0LCA3MSwgMjUwLCAzNSwgMjQ2LCAxMTgsIAorICAgIDI1MCwgMzUsIDI1MCwgMzYsIDIsIDY3LCAyNDQsIDEwNSwgMjUxLCAxMTEsIDg1LCAyNTAsIDM1LCAyNTAsIDM2LCAyLCA0MywgCisgICAgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI1MCwgMzYsIDIsIDIzMiwgMTA4LCAxNjMsIAorICAgIDI1MSwgMjIxLCAyNTAsIDM2LCAyLCAyMTQsIDE2MCwgMTYzLCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAKKyAgICAyMjQsIDI2LCAyNTEsIDIyMSwgMjUwLCAzNiwgMiwgMjU0LCAxNTUsIDI1MSwgODgsIDIxNCwgMTYwLCA0MywgMjI0LCAyNiwgCisgICAgMjUxLCAyMjEsIDQzLCAxNjMsIDg1LCAyNTAsIDM1LCA0NCwgMTYzLCA4NSwgMjUwLCAzNSwgMjM1LCAxOTQsIDI1MSwgMTEzLCAKKyAgICAyMzUsIDE5NCwgNzEsIDI1MCwgMzUsIDIxNCwgMTYwLCAxNjMsIDIzNSwgMTk0LCA3MSwgMjUwLCAzNSwgMjMyLCAxMDgsIAorICAgIDE2MywgMjM1LCAxOTQsIDcxLCAyNTAsIDM1LCAyMTQsIDE2MCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgCisgICAgMTYwLCA0NCwgMjI0LCAyNiwgMjUwLCAzMywgMjU0LCAyNSwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI2LCAyNTAsIDMzLCAyNTQsIAorICAgIDI1LCAyMzIsIDEwOCwgNDMsIDIyNCwgMjYsIDI1MCwgMzMsIDI1NCwgMjUsIDIxNCwgMTYwLCAxNjMsIDI1MCwgMzUsIDIzMiwgCisgICAgMTA4LCAxNjMsIDI1MCwgMzUsIDg1LCAyMzIsIDEwOCwgNDQsIDIxNSwgMjI1LCA4NSwgMjMyLCAxMDgsIDQzLCAyMTUsIAorICAgIDIyNSwgODUsIDIxNCwgMTYwLCA0MywgMjE1LCAyMjUsIDg1LCAyMTQsIDE2MCwgNDQsIDIxNSwgMjI1LCA3MSwgMjUxLCAKKyAgICAxMTMsIDQyLCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDQ0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjE0LCAxNjAsIAorICAgIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgNDIsIDIsIDIzMiwgMTA4LCA0NCwgMjQ3LCAyNTUsIDE2MywgMjUxLCAKKyAgICAyMjEsIDcxLCA0MiwgMiwgNjcsIDI1MSwgMjMyLCAyMzIsIDIxMywgNzEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgMjQ3LCAKKyAgICAxMjAsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDIxNCwgMTYyLCAyMTUsIDIyNiwgMiwgNDQsIAorICAgIDE2MywgMjUxLCAyMjEsIDIzMywgODUsIDI1MCwgMzUsIDcxLCA0MiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgCisgICAgNDIsIDIsIDIzMiwgMTA4LCA0MywgMjI0LCAyNSwgNzEsIDQyLCAyLCAyMzIsIDEwOCwgNDQsIDIyNCwgMjUsIDcxLCA0MiwgCisgICAgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAKKyAgICAzNiwgMiwgMjMyLCAxMDgsIDQzLCAyMjQsIDI1LCA3MSwgMjUwLCAzNiwgMiwgMjMyLCAxMDgsIDQ0LCAyMjQsIDI1LCA3MSwgCisgICAgMjUwLCAzNiwgMiwgMjE0LCAxNjAsIDQ0LCAyMjQsIDI1LCAyMTQsIDE2MCwgNDMsIDIxNSwgMjI1LCAyMTQsIDE2MCwgNDQsIAorICAgIDIxNSwgMjI1LCAyMzIsIDEwOCwgNDMsIDIxNSwgMjI1LCA3MSwgMjMxLCA4MiwgMjE4LCAyMzQsIDg1LCAyMzEsIDgyLCAKKyAgICAyMTgsIDIzNCwgNzEsIDIzMSwgODIsIDQsIDIxOCwgMjM0LCA4NSwgMjMxLCA4MiwgNCwgMjE4LCAyMzQsIDIzMiwgMTA4LCAKKyAgICA0NCwgMjE1LCAyMjUsIDg1LCAyMTgsIDM4LCAyLCAyMjMsIDEzMiwgMjQ5LCAyNDcsIDIxNCwgMTk0LCAyMTksIDYwLCAyNDksIAorICAgIDIyMiwgODUsIDIxOCwgMTU2LCA3MSwgMjE4LCAxNTYsIDIzMiwgMjI4LCAyMTYsIDEzMiwgMjE4LCAzNywgMjUzLCAyMzQsIAorICAgIDIyOCwgNzEsIDI0OCwgMzgsIDIyOCwgNzEsIDI0OSwgMTk1LCAyMjYsIDE2MywgODUsIDIxNywgMCwgNzEsIDIxNywgMCwgCisgICAgMjUyLCAxNTYsIDI1MSwgMTYzLCAyNTIsIDE1NiwgOTMsIDIsIDI1MCwgMTI5LCAyNTIsIDE1NiwgOTMsIDIsIDIxMSwgMTc4LCAKKyAgICAyMjEsIDI1NCwgMjE0LCAxOTUsIDIsIDIyMywgMTYwLCAyNDYsIDg0LCAyNDAsIDI0MywgMjUyLCAyMiwgNzEsIDIyMCwgMiwgCisgICAgMjI1LCAxMDEsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCAyMjAsIDg3LCAyMjMsIDQ5LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAKKyAgICAyMjgsIDI1MSwgMTEzLCA4NSwgNDMsIDIyNSwgNywgMjM1LCAyNDIsIDg1LCA0NCwgMjI1LCA3LCAyMzUsIDI0MiwgNzEsIAorICAgIDQzLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgMTIwLCAyMjUsIDcsIDIzNSwgMjQyLCA3MSwgNDQsIDIyNSwgNywgMjM1LCAKKyAgICAyNDIsIDcxLCAxMjQsIDIyNSwgNywgMjM1LCAyNDIsIDIxOSwgMTAxLCAyMiwgMjQ5LCAxMjksIDI1MCwgMjE5LCA1MCwgCisgICAgMjIzLCAxNzIsIDUwLCAyNTEsIDIzOSwgNTAsIDI1MSwgMjUsIDI1NCwgMTAyLCAyMjYsIDE0NSwgMjQ5LCAxMzAsIDI1MCwgCisgICAgMTExLCAyMjMsIDM3LCAyNDksIDEzMSwgNjQsIDIzMiwgMTE4LCAyNDksIDEzMSwgNjQsIDIzNSwgMTE2LCAyMTgsIDE1NywgCisgICAgMjIsIDI0OSwgMTM2LCAyNDQsIDE2OCwgODcsIDI1NCwgMjQ4LCAyMjAsIDg5LCAyNDIsIDIyLCAyMiwgMjE5LCAxODksIAorICAgIDIyNSwgMjIwLCA4NywgMjEwLCAyNTQsIDIxMSwgNjksIDIxNSwgMjE1LCAzMSwgMjQxLCAyMjMsIDIxNSwgMjE1LCAzMSwgCisgICAgMjMzLCAxMDcsIDIxNSwgMjE1LCAzMSwgMjQ0LCA5NiwgMjE1LCAyMTUsIDMxLCAyMTYsIDEzMywgMjE1LCAyMTUsIDMxLCAKKyAgICAyMTEsIDIzOSwgMjE1LCAyMTUsIDMxLCAyMTIsIDQwLCAyMTUsIDIxNSwgMzEsIDIzMCwgMTE1LCAyMTUsIDIxNSwgMzEsIAorICAgIDI0NSwgMjIzLCAyMTIsIDEsIDY0LCAyNDgsIDE4LCA3MSwgMjQzLCAyMzksIDI0NCwgMTkwLCA3MSwgMjE5LCA3NCwgMjQ0LCAKKyAgICAxOTAsIDg1LCAyMTksIDc0LCAyNDQsIDE5MCwgNzEsIDIxOCwgMzgsIDIsIDIyMywgMTMyLCAyNDQsIDkyLCAyMjQsIDIyLCAKKyAgICAyMzAsIDEyOCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAxMjgsIDIzMSwgNTQsIDI0NCwgMTM4LCA1MCwgMjQ1LCAyMjMsIAorICAgIDIzMSwgMTkwLCA1MCwgMjM1LCAzOCwgMjIxLCAyMjAsIDIxNCwgMTQ1LCAyMjksIDkzLCAyMjUsIDIwLCAyNTQsIDEyLCAKKyAgICAyMTcsIDQwLCAyNDMsIDUyLCAyNTEsIDMsIDIzMywgMTksIDIxMywgMTUwLCAyMzIsIDIzOCwgMjIxLCAxOTEsIDIyMiwgMTksIAorICAgIDI1MCwgMjQ4LCAyNTQsIDQyLCAyMjUsIDUyLCA3MSwgMjUwLCAxMTcsIDIzNCwgNzgsIDcxLCAyNTAsIDExNywgMjI0LCAxNCwgCisgICAgNzEsIDI1MCwgMTE3LCAyMjIsIDE5NSwgNzEsIDI1MCwgMTE3LCAyNTEsIDIzMSwgNzEsIDI1MCwgMTE3LCAyMzQsIDMwLCAKKyAgICA3MSwgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjUwLCAxMTcsIDIzNCwgNzgsIDg1LCAyNTAsIDExNywgMjI0LCAxNCwgODUsIAorICAgIDI1MCwgMTE3LCAyMjIsIDE5NSwgODUsIDI1MCwgMTE3LCAyNTEsIDIzMSwgODUsIDI1MCwgMTE3LCAyMzQsIDMwLCA4NSwgCisgICAgMjUwLCAxMTcsIDIyNSwgMjMxLCA4NSwgMjE5LCAxNiwgMjE4LCA1MCwgNzEsIDI0MSwgMjI4LCAyMTgsIDUwLCA3MSwgMjQ3LCAKKyAgICAyNDksIDIxOCwgNTAsIDg1LCAyNDksIDI0NSwgMjE4LCA1MCwgNzEsIDIxOSwgMTYsIDIxOCwgNTAsIDg1LCAyNDEsIDIyOCwgCisgICAgMjE4LCA1MCwgODUsIDI0NywgMjQ5LCAyMTgsIDUwLCA3MSwgMjQ5LCAyNDUsIDIxOCwgNTAsIDI0MCwgMjQzLCAyMTgsIAorICAgIDIzOCwgMjI0LCAyMiwgMjI4LCA0NywgMjQ1LCAxODksIDIyOCwgNDcsIDI1MiwgNzMsIDI0NSwgMTg5LCAyMjgsIDQyLCAKKyAgICAyNTIsIDczLCAyMTksIDExOCwgMjI4LCA0MiwgMjMwLCA1NywgMjQ0LCA2NiwgNTAsIDIzMCwgNTcsIDIyOSwgMTg4LCA1MCwgCisgICAgMjMwLCA1NywgMjIwLCA3NiwgNTAsIDIxMiwgOSwgMTg4LCAyNDksIDEzMCwgMjQ1LCAyMjAsIDE4OCwgMjQ5LCAxMzAsIAorICAgIDIxNCwgMTcxLCAyMjMsIDExMiwgODcsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDgsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDcsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDYsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDUsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDQsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDIxNSwgNDMsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgMzEsIDIxNSwgNDIsIDIyNSwgMzQsIDIyMywgMTEyLCAxNiwgCisgICAgMzEsIDI0MywgNTAsIDIzMSwgMTM4LCA4NSwgMjE0LCAxNzEsIDIyMywgMTEyLCA4NywgMjIzLCAxMTMsIDIyNiwgMjAsIDg3LCAKKyAgICAyMjUsIDI1MiwgMjI2LCAyMCwgODcsIDIyNSwgMTc0LCAyMjYsIDIwLCA1MCwgMjExLCAyNTUsIDg3LCAyNDcsIDI0MSwgCisgICAgMjQ0LCAxODksIDI0NywgMjQxLCAyNDQsIDE4OCwgMjQ3LCAyNDEsIDI0NCwgMTg3LCAyNDcsIDI0MSwgMjQ0LCAxODYsIAorICAgIDI0NywgMjQxLCAyNDQsIDE4NSwgMjQ3LCAyNDEsIDI0NCwgMTg0LCA3MSwgMjUwLCAzNiwgMiwgNTksIDIyMiwgMjUxLCA3MSwgCisgICAgMjUwLCAzNiwgMiwgMTEzLCAyNDcsIDExOCwgODUsIDI1MCwgMzYsIDIsIDcxLCA1OSwgMjIyLCAyNTEsIDg1LCAyNTAsIDM2LCAKKyAgICAyLCAxMTMsIDcxLCAyNDcsIDExOCwgMjMwLCAxNDIsIDMxLCAyMTEsIDY5LCAyMzAsIDE0MiwgMzEsIDIxMCwgMjUzLCAyNDcsIAorICAgIDIyNCwgMzEsIDI0MiwgMTMxLCAyMTEsIDY5LCAyNDcsIDIyNCwgMzEsIDIzMywgMTMsIDIxMCwgMjUzLCAyNDcsIDIyNCwgCisgICAgMzEsIDIzMywgMTMsIDIxMSwgNjksIDI0NywgMjI0LCAzMSwgMjQyLCAxMzEsIDIxMCwgMjUzLCA3MSwgMjQ0LCA3MywgODUsIAorICAgIDI0NCwgNzMsIDI0MiwgMjIsIDIyLCAyMjUsIDEwNCwgMjU0LCAxMjAsIDI0OSwgMTI4LCAyMTcsIDIzNSwgMjE4LCAxNjQsIAorICAgIDY0LCAyNTQsIDIyNiwgMjIxLCAyMDYsIDI1NCwgMTY5LCAyNDQsIDUxLCAyNDMsIDYwLCAyMTgsIDE2NCwgNjQsIDI0MSwgCisgICAgMjAyLCAyNTMsIDE5OSwgODcsIDI0NCwgNjIsIDIyNiwgMTI2LCA3MSwgMjE4LCAxNTYsIDEzNCwgMjMyLCAyMDgsIDI0OSwgCisgICAgMTc1LCAyMjIsIDI1MSwgMTM0LCAyMzIsIDIwOCwgMjQ5LCAxNzUsIDIzMywgNDYsIDIxMiwgNTAsIDUwLCAxMjUsIDIxMywgCisgICAgMTMwLCA1MCwgMjQ2LCAxMTAsIDI0NCwgMTM4LCA1MCwgMjQ2LCAxMTAsIDIzMSwgMTkwLCA1MCwgMjM1LCAyMDMsIDI0NCwgCisgICAgMTM4LCAyMiwgMjMxLCAxOTAsIDUwLCAyMzEsIDE5MCwgMjIsIDI0NCwgMTM4LCA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAKKyAgICA1MCwgMjMxLCAxOTAsIDIsIDIxOCwgMTAzLCAyMiwgMjMxLCAxOTAsIDIyLCAyNDQsIDEzOCwgNTAsIDY3LCAyMzEsIDE5MCwgCisgICAgMiwgMjE4LCAxMDMsIDUwLCAyMDMsIDIzMSwgMTkwLCAyLCAyMTgsIDEwMywgNTAsIDIzMSwgODIsIDcxLCAyNTAsIDM1LCAKKyAgICAyMzEsIDgyLCA4NSwgMjUwLCAzNSwgMjMxLCA4MiwgNCwgNzEsIDI1MCwgMzUsIDIzMSwgMTUzLCA4NywgMjQ3LCAxNjcsIAorICAgIDg3LCAyMTQsIDE2OSwgMjI1LCAyNTEsIDg3LCAyNDksIDIzMSwgMjQzLCAyMjQsIDIxNCwgMTQxLCAyMjksIDg4LCAyNTAsIAorICAgIDE2MSwgMjI2LCA2MSwgMjM1LCA0NCwgMjEzLCAxODUsIDI1MCwgOTMsIDg1LCAyMzAsIDEyOSwgMjMyLCAyMjUsIDIyMCwgCisgICAgMTEyLCAyMjAsIDE0NywgMjI0LCA1LCAyMjAsIDEzMCwgMjE5LCA1NSwgMjUyLCAxNTksIDI1MiwgMTI2LCA5MiwgMjM0LCAKKyAgICAxMzgsIDcxLCAyNDYsIDkzLCAyMzEsIDE4NSwgNzEsIDI0NiwgOTMsIDIzNCwgNzgsIDg1LCAyNDYsIDkzLCAyMzEsIDE4NSwgCisgICAgODUsIDI0NiwgOTMsIDIzNCwgNzgsIDIxOSwgNjEsIDIxMSwgMjMwLCAyMTksIDY0LCAyMTgsIDM4LCAyNTIsIDUxLCAyNDksIAorICAgIDI0NywgMjIzLCAxNTksIDg1LCAyMTksIDYwLCAyMTYsIDEzNCwgMjQ5LCAyNDgsIDIyLCAyMjMsIDE1OSwgMjE1LCA5NCwgCisgICAgNzEsIDIyMCwgMiwgMjI1LCAxMDEsIDIxNSwgOTQsIDg1LCAyMjAsIDIsIDIyNSwgMTAxLCA3MSwgMjQ3LCAyNDksIDIzNiwgCisgICAgMCwgMjE4LCAyMzQsIDI0OSwgMTI1LCAyMzMsIDkxLCAyNDcsIDE5MywgMjUwLCAyNDQsIDIyNiwgMTY2LCAyMjUsIDEwNCwgCisgICAgMjUwLCAyNDUsIDIxOSwgODgsIDI0MSwgMjEyLCAyLCA3MSwgMjQ5LCAxMzAsIDM3LCAyNDksIDEyNSwgMjMzLCA5MSwgMjUwLCAKKyAgICAxNTMsIDIyOCwgNzUsIDI0NSwgMTI0LCAyNTQsIDE0MSwgMjI2LCAxOTEsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAorICAgIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgNzEsIDIxNSwgNTUsIDQzLCAyMTIsIDI2LCAyMTUsIDI1MSwgODUsIAorICAgIDQzLCAyMzMsIDkyLCAyMzEsIDUzLCA3MSwgNDMsIDIzMywgOTIsIDIzMSwgNTMsIDI0NiwgODksIDIxOSwgODIsIDUwLCAKKyAgICAxMTQsIDcxLCAyNDYsIDEwNSwgMjE1LCAyMjUsIDQzLCAyNTAsIDAsIDI0NSwgMTI0LCA5MiwgMjIxLCAyNTQsIDI0NCwgCisgICAgMTc1LCAyNDcsIDI1NSwgMjM2LCAwLCA3MSwgMjUwLCAzNiwgMjM2LCAwLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTUsIDE5MiwgCisgICAgMjIzLCA2MCwgNDMsIDI0NSwgMTIzLCAyMjMsIDYwLCA0MywgMjQ1LCAxMjIsIDI1MywgMjExLCAxNiwgMzEsIDIxNCwgMTQ1LCAKKyAgICAxMTQsIDI1MCwgMzYsIDIsIDIxOCwgMTAzLCAyMiwgMTEzLCAxNzAsIDQ4LCAyMjUsIDE4OSwgMjIyLCAyNDgsIDIzNSwgCisgICAgMjA1LCAyMjUsIDE4OSwgMjMzLCA0MywgMjM1LCAyMDUsIDIyNSwgMTg5LCAyMzUsIDE5MywgMjI1LCAxODksIDg1LCAyNDksIAorICAgIDEzMSwgMjI2LCAxOTcsIDIyMCwgMjksIDIyMCwgMTcsIDIxOSwgMjI5LCAyNTAsIDYxLCAyNTAsIDIyNiwgMjQxLCAxNTcsIAorICAgIDIxOSwgMTI2LCAyNDMsIDYxLCAyMTEsIDIzMCwgMjQwLCAyMjAsIDI0MywgNjEsIDIsIDI0MiwgMTIsIDIzMSwgMTczLCAxNiwgCisgICAgMzEsIDIzMiwgMjI5LCAyMzAsIDExNSwgMjE0LCAxOTUsIDIyNiwgMTk3LCAyNDIsIDEyMiwgMjQ0LCAxMiwgMjQ0LCA3NCwgCisgICAgMjM2LCAwLCAyNDEsIDU5LCAyNDQsIDEyOSwgMjIyLCAxNCwgNDIsIDI0NCwgMTEsIDI0OSwgMTU5LCAyMTksIDEwNCwgMjQwLCAKKyAgICAxMTIsIDIxOSwgMTA3LCAyMjUsIDE2OCwgMiwgMjUyLCAxNTksIDIxNiwgMjQyLCAyMzUsIDEzMSwgMjUyLCAxNDYsIDg3LCAKKyAgICAyNDEsIDIzMSwgMjQyLCAxMzMsIDg3LCAyNDMsIDIzMiwgMjI0LCAxNDIsIDI0OSwgMTAzLCAyMjYsIDE5NywgODUsIDIxOCwgCisgICAgMjM0LCA3MSwgMjQ0LCA3NCwgMiwgMjAzLCAyMzAsIDIyNCwgODUsIDIxOCwgMTA0LCAyMTQsIDE2MCwgMjUxLCAyMTcsIAorICAgIDIyMSwgMTkzLCA4NSwgMjIxLCAxOTMsIDIzMiwgMTA4LCAyNTEsIDIxNywgMjIxLCAxOTMsIDcxLCAyMjEsIDE5MywgNzEsIAorICAgIDExNCwgMjUwLCAxMzAsIDc4LCAyMTcsIDEsIDIzMiwgMTU0LCA1MCwgMjE3LCA1MywgMjQ2LCA4OCwgMjU0LCAxOTEsIDI0NSwgCisgICAgMTE5LCAyMjMsIDE1NywgMjQ0LCA4NSwgMjIzLCAxNTcsIDI0MiwgMTUsIDIxMywgMTc0LCAyNDIsIDE1LCAyMTEsIDE5OCwgCisgICAgMjQyLCAxNSwgMjMyLCAxMDgsIDQ0LCAyMjUsIDE5OCwgMjI1LCAxOTgsIDIxNCwgMTYwLCA0NCwgMjI1LCAxOTgsIDcxLCAKKyAgICAyMjgsIDIzMCwgODUsIDIyOCwgMjMwLCAyNTAsIDEzMCwgNzgsIDExNCwgMjUwLCAxMzAsIDc4LCAyMzAsIDg0LCAyMTEsIAorICAgIDE3OCwgMTE0LCAyMzAsIDg0LCAyMTEsIDE3OCwgMjUyLCAxNTYsIDIxMSwgMTc4LCAxMTQsIDI1MiwgMTU2LCAyMTEsIDE3OCwgCisgICAgMjI2LCAxMjYsIDI2LCAyNDksIDEzMCwgMTE0LCAyNiwgMjQ5LCAxMzAsIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCAxMTQsIAorICAgIDIwNCwgMjUwLCAxNzUsIDI0OSwgMTMwLCA3LCAyNDksIDEzMCwgMjIwLCA5MSwgNzEsIDcsIDI0OSwgMTMwLCAyMjYsIDEyNiwgCisgICAgNywgMjQ5LCAxMzAsIDIzMSwgMTg3LCAyNDksIDEzMCwgMjE4LCAxNTcsIDY0LCAyNDgsIDE0OSwgMjQ0LCAxMSwgMjE3LCAKKyAgICAxNSwgMjUzLCAyMTYsIDI0NCwgMTEsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMTE0LCAyNDQsIDExLCAyNTIsIDE1NywgMjUzLCAKKyAgICAyMTYsIDI0NCwgMTEsIDI0OSwgMjQzLCAyNTMsIDIxNiwgODUsIDI0NCwgMTEsIDIyNSwgOSwgMjE4LCAxNTYsIDcxLCAyNDQsIAorICAgIDExLCAyMjUsIDksIDIxOCwgMTU2LCAyMTksIDExLCAyMTgsIDExMSwgMjI2LCAxMjYsIDcxLCAyMTgsIDE1NiwgMzcsIDcxLCAKKyAgICAyMTgsIDE1NiwgMjA0LCAyNTAsIDE3NSwgODUsIDIxOCwgMTU2LCA4NSwgMjUwLCAxNzUsIDcxLCAyMTgsIDE1NiwgMjI2LCAKKyAgICAxMjYsIDg1LCAyMTgsIDE1NiwgMTE0LCAyMjYsIDEyNiwgODUsIDIxOCwgMTU2LCAyMjUsIDYwLCAyMTgsIDE1NiwgMjIwLCAKKyAgICA5MSwgNzEsIDIxOCwgMTU2LCAxMTQsIDI1MywgMjE2LCAyMDQsIDI1MCwgMTc1LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxOCwgCisgICAgMjQ0LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjUsIDYwLCAKKyAgICAyMTgsIDE1NiwgMjE5LCAxMjUsIDIyNSwgOSwgODUsIDIxOCwgMTU2LCAyNDUsIDE5MywgMjI1LCA5LCAyMjMsIDExNCwgODUsIAorICAgIDIxOCwgMTU2LCAxMTQsIDI0NSwgMTkzLCAyMjUsIDksIDIyMywgMTE0LCA4NSwgMjE4LCAxNTYsIDIxNSwgNzcsIDIyNSwgOSwgCisgICAgODUsIDIxOCwgMTU2LCAyMTksIDEyMCwgMjI1LCA5LCAyNTMsIDIxNiwgMjE3LCAxNSwgMjUzLCAyMTYsIDIwNCwgMjUwLCAKKyAgICAxNzUsIDIxNywgMTUsIDI1MywgMjE2LCAxMTQsIDIxNywgMTUsIDI1MywgMjE2LCAyMTksIDEyNSwgMjI1LCAxNTcsIDg1LCAKKyAgICAyMiwgNzEsIDI0NCwgNTQsIDg1LCAyNDQsIDU0LCA3MSwgMjQ0LCA1NCwgMjQ1LCAxOTMsIDIyNSwgMTU3LCAyMjYsIDEyNiwgCisgICAgODUsIDI0NCwgNTQsIDM3LCAyMDQsIDI1MCwgMTc1LCAyNDUsIDE5MywgMjI1LCA5LCAyMTgsIDE1NiwgMTE0LCAyMTcsIDE1LCAKKyAgICAyMjUsIDYwLCAyNTMsIDIxNiwgMjE5LCA2MiwgMjE2LCAxMDUsIDIxNSwgMjE4LCAyMTksIDYyLCAxMTQsIDI1MCwgMTE0LCAKKyAgICAyMTksIDYyLCAyMTksIDEzLCAxMTQsIDIxOSwgMTMsIDI1MiwgMTU3LCAyNTMsIDIxNiwgMjQ1LCAxOTMsIDIxNywgMTUsIAorICAgIDIyNCwgMTcxLCAyNTMsIDIxNiwgMTE0LCAyNDUsIDE5MywgMjE3LCAxNSwgMjI0LCAxNzEsIDI1MywgMjE2LCAyNDksIDEzMSwgCisgICAgNzgsIDIyMCwgOTEsIDcxLCAyNTAsIDM1LCAxNTIsIDkyLCAyNDksIDEzMSwgNzgsIDIzMiwgMTA4LCA0NCwgMjQ2LCA4NiwgCisgICAgNzEsIDIxOCwgMjM0LCAyMTQsIDE2MCwgNDQsIDI0NiwgODYsIDcxLCAyMTgsIDIzNCwgMjMyLCAxMDgsIDQ0LCAyMjAsIDkxLCAKKyAgICA3MSwgMjE4LCAyMzQsIDIxNCwgMTYwLCA0NCwgMjIwLCA5MSwgNzEsIDIxOCwgMjM0LCA4NSwgMjI0LCAxMywgMTY0LCAyMjYsIAorICAgIDE0NywgNzEsIDIyNCwgMTMsIDE2NCwgMjI2LCAxNDcsIDcxLCAyNDUsIDMxLCAxNjQsIDIyNiwgMTQ3LCA4NSwgMjQ3LCAKKyAgICAyNDksIDIzMCwgMTgyLCA3MSwgMjExLCAxNzgsIDExNCwgMjQ1LCAzMSwgMTY0LCA4NywgMTkyLCA2NywgMTMwLCAyMzEsIAorICAgIDgyLCA2NywgMTMwLCAxMTQsIDY3LCAxMzAsIDExNCwgMjE5LCAxNTUsIDIxNSwgOTQsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCAyMTksIDE1NSwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDUyLCAKKyAgICAyMTUsIDk0LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgNTIsIDI0OSwgMjIwLCAyMjMsIDI1NCwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCAxMjEsIDIxOSwgMTU1LCAyNDksIDIyMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIAorICAgIDExNCwgMTIxLCA1MiwgMjQ5LCAyMjAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAyNDksIDkxLCAyMTgsIDE0MCwgMjI2LCAKKyAgICAxNSwgNSwgMjI2LCAxNDcsIDExNCwgMjQ1LCAzMSwgMTY0LCAyMjYsIDE0NywgMTE0LCAyNDEsIDIyOCwgMjQ1LCAzMSwgCisgICAgMTY0LCAyMjYsIDE0NywgMTE0LCA4NSwgMjQxLCAyMjcsIDIyMiwgMTg3LCAxMTQsIDg1LCAyNDEsIDIyOCwgMjUxLCAxMTMsIAorICAgIDI0NCwgNTUsIDI0MSwgMjI3LCAyMjIsIDE4NywgMjQ0LCA1NSwgMjQxLCAyMjgsIDI1MSwgMTEzLCAyMzEsIDgyLCA0MywgCisgICAgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgNDQsIDIyNiwgNCwgMjI2LCAxNDcsIDIzMSwgODIsIDI0NCwgNjMsIDQzLCAKKyAgICAyMjYsIDQsIDIyNiwgMTQ3LCAyMzEsIDgyLCAyNDQsIDYzLCA0NCwgMjI2LCA0LCAyMjYsIDE0NywgMjMxLCA4MiwgMjMzLCAKKyAgICA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMjMxLCA4MiwgMjIyLCAyNDcsIDI1NCwgMTEwLCAyNTEsIDE1OCwgCisgICAgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDIyMywgMjU0LCAxNjQsIDIyNiwgMTQ3LCAxMTQsIDIyMiwgMjQ3LCAKKyAgICAyNTQsIDExMCwgMjIzLCAyNTQsIDE2NCwgMjI2LCAxNDcsIDExNCwgMjMzLCA0MiwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIAorICAgIDE0NywgMTE0LCAyMjIsIDI0NywgMjU0LCAxMTAsIDI1MSwgMTU4LCAyMjYsIDE0NywgMTkyLCA0MywgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAyNTEsIDE1OCwgMjI2LCAxNDcsIDE5MiwgNDQsIDIxNiwgNiwgMjIwLCA1MywgMjUxLCAxNTgsIDIyNiwgMTQ3LCAKKyAgICAyMzEsIDgyLCA0MywgMjQ5LCA5OSwgMjUxLCAxNTgsIDIyNiwgMTQ3LCAyMzEsIDgyLCA0NCwgMjQ5LCA5OSwgMjUxLCAxNTgsIAorICAgIDIyNiwgMTQ3LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAxMDUsIDI0NywgCisgICAgMjA0LCAxNTIsIDM3LCAyMSwgMTU4LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDIxLCAKKyAgICAxODksIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMTk0LCAyNDcsIDIwNCwgMTUyLCAzNywgMjEsIDE5OCwgMjQ3LCAyMDQsIAorICAgIDE1MiwgMzcsIDIxLCAxOTUsIDI0NywgMjA0LCAxNTIsIDM3LCAyMSwgMjAwLCAyNDcsIDIwNCwgMTUyLCAzNywgNTQsIDIxNiwgCisgICAgMjQ3LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTEwLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMzcsIAorICAgIDM1LCAyMSwgMTU4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTYxLCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTg5LCAyNDcsIAorICAgIDIwNCwgMzcsIDM1LCAyMSwgMTk0LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMTk4LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgCisgICAgMTk1LCAyNDcsIDIwNCwgMzcsIDM1LCAyMSwgMjAwLCAyNDcsIDIwNCwgMzcsIDM1LCA1NCwgMjE2LCAyNDcsIDI0NywgMjA0LCAKKyAgICAxNTIsIDM3LCAzNSwgMjEsIDExMCwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTA1LCAyNDcsIDIwNCwgMTUyLCAzNywgCisgICAgMzUsIDIxLCAxNTgsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE2MSwgMjQ3LCAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgCisgICAgMTg5LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAxOTQsIDI0NywgMjA0LCAxNTIsIDM3LCAzNSwgMjEsIDE5OCwgMjQ3LCAKKyAgICAyMDQsIDE1MiwgMzcsIDM1LCAyMSwgMTk1LCAyNDcsIDIwNCwgMTUyLCAzNywgMzUsIDIxLCAyMDAsIDI0NywgMjA0LCAxNTIsIAorICAgIDM3LCAzNSwgNTQsIDIxNiwgMjQ3LCAxMTQsIDIxMSwgMjQ2LCA5NywgNzQsIDExNCwgOTYsIDUwLCAxMTQsIDIzMCwgMTgyLCAKKyAgICA1MCwgMTE0LCAyNDcsIDE2OSwgNTAsIDExNCwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAxMTQsIDk3LCA3NCwgMTE0LCAyMjgsIAorICAgIDU2LCAyNDUsIDIyMCwgNzQsIDI0NiwgOTgsIDIyNSwgMTEsIDk3LCA3NCwgMTE0LCAyMjIsIDE4NCwgOTcsIDc0LCAyMTUsIAorICAgIDIyNCwgOTcsIDc0LCAxMTQsIDIxNSwgMjI0LCA5NywgNzQsIDI0OCwgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCAxMTQsIDI0OCwgCisgICAgMTU1LCAyMTUsIDIyNCwgOTcsIDc0LCA4NSwgOTcsIDc0LCAyMTYsIDE0NCwgMjE2LCAxMiwgOTcsIDI1MywgMjQ5LCAyMTYsIAorICAgIDE0NCwgMjUxLCAxNzMsIDk3LCAyNTMsIDI0OSwgODUsIDk3LCAyNTMsIDI0OSwgMTE0LCA4NSwgMjQ5LCA5MSwgMjQ2LCAKKyAgICAxMDQsIDIyLCA5NywgNzQsIDExNCwgODUsIDI0OSwgOTEsIDIxNCwgMTUzLCAyMiwgOTcsIDc0LCAyMTgsIDIzMSwgODUsIAorICAgIDk3LCA3NCwgMTE0LCAyNDksIDIwNiwgODUsIDk3LCA3NCwgMjIyLCAyNDYsIDcxLCA5NywgNzQsIDIzMywgNDEsIDcxLCA5NywgCisgICAgNzQsIDI1MiwgMTgzLCAyMjAsIDkxLCA3MSwgOTcsIDc0LCAyNDMsIDI0MSwgMjIwLCA5MSwgNzEsIDk3LCA3NCwgMTE0LCAKKyAgICAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDExNCwgMjE0LCAxNjAsIDIyMiwgMjQ1LCA3MSwgOTcsIDc0LCAyMjgsIAorICAgIDQ5LCAyMzIsIDEwOCwgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDI0OSwgOTksIDIzMiwgMTIzLCAyMjgsIDQ5LCAyMTQsIDE2MCwgCisgICAgMjIyLCAyNDUsIDcxLCA5NywgNzQsIDM3LCAxMTQsIDcxLCA5NywgNzQsIDIxMSwgMjUyLCA5NywgNzQsIDI1MSwgMjIwLCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDI1MSwgMjIwLCA5NywgNzQsIDI1MSwgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAorICAgIDExNCwgMjUxLCAyMjAsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMTE0LCAyNTEsIDIyMCwgOTcsIDc0LCAxMTQsIDI1MSwgCisgICAgMjIwLCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIDIxNywgMTcsIDk3LCA3NCwgMTE0LCAyMTcsIDE2LCA5NywgNzQsIDIxMiwgCisgICAgMTgsIDk3LCA3NCwgMTE0LCAyMTIsIDE4LCA5NywgNzQsIDIyNiwgMTcyLCA5NywgNzQsIDUyLCAyNDksIDk5LCAyMzIsIAorICAgIDEyMywgMTM0LCAyNDcsIDIxNCwgMjU0LCAxMDksIDcxLCAyMTUsIDIyNiwgMjQ5LCAxODcsIDQsIDcxLCAyMTUsIDIyNSwgCisgICAgMjI1LCAxNzEsIDIwNCwgMjE4LCA2MywgMjA0LCAyMTgsIDIxLCA0MywgMjIyLCA5MCwgMjUyLCAxNzMsIDI0OCwgNjAsIDQ0LCAKKyAgICAyMjIsIDkwLCAyNTIsIDE3MywgMjQ4LCA2MCwgMTc3LCAyLCA1OSwgMjM1LCAyMTUsIDIyMywgNTAsIDIxOSwgNDcsIDIyNCwgCisgICAgMjAxLCAyMTgsIDYzLCAyMTgsIDIyLCAyMjQsIDIwMSwgMjE5LCA0NiwgNjcsIDI1MiwgMTQxLCAyLCAyMDMsIDkxLCAxMSwgCisgICAgMjIyLCAyMjgsIDI0NywgMjU0LCAxOTksIDI0NywgMTY4LCAxMSwgMjQ0LCAxNzUsIDI0NywgMjU0LCA5MiwgMjMyLCAxNDYsIAorICAgIDI1NCwgMTE4LCA5MiwgMjMyLCAxNDYsIDIyNiwgMTU4LCA3MSwgMjQ3LCAyNDksIDIsIDI1MCwgMTczLCAyNDcsIDEyMCwgCisgICAgMjIsIDIsIDI0NywgMTIwLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyMTQsIDE1MiwgMjMyLCAxMDgsIDQ0LCAyNDksIAorICAgIDE2MSwgMiwgMjQ3LCAxMjAsIDIxNCwgMTYwLCA0MywgMjQ5LCAxNjEsIDIsIDI0NywgMTIwLCA0MywgMjI2LCAxMjgsIDIzNSwgCisgICAgNjYsIDQ0LCAyMjYsIDEyOCwgMjM1LCA2NiwgMjQzLCAyMjksIDIyNiwgMTI4LCAyMzUsIDY2LCAyMzMsIDg1LCAxMjAsIAorICAgIDIxNywgODcsIDIzMywgODUsIDEyNCwgMjE3LCA4NywgNDMsIDIyLCA0NCwgNTIsIDIxNSwgOTMsIDQzLCAyMiwgNDQsIDIxNywgCisgICAgODcsIDQzLCAyMzAsIDg3LCAxOTksIDQ0LCAyMTcsIDg3LCAxOTksIDQzLCAyMTcsIDg3LCAxMjAsIDIxNywgODgsIDIsIAorICAgIDI1MCwgMzYsIDQ4LCAyMzIsIDEwNSwgMjQ3LCAxNzMsIDI1MSwgNzgsIDIwMywgMjIyLCAxMzMsIDcxLCAyNDksIDIwNSwgCisgICAgMjQ3LCAyNDgsIDcxLCAyNDksIDIwNSwgMjQ3LCAyNDksIDIsIDE0MCwgMjE2LCAxMTQsIDcxLCAyNDksIDIwNSwgMjQ3LCAKKyAgICAyNDksIDIsIDk3LCAyMTYsIDExNCwgNzEsIDQyLCAyLCAxNDAsIDIxNiwgMTE0LCA3MSwgNDIsIDIsIDk3LCAyMTYsIDExNCwgCisgICAgMTEsIDQzLCA3MSwgNDIsIDEyNywgMTEsIDQ0LCA3MSwgNDIsIDEyNywgMTEsIDQzLCAyNTQsIDExMCwgMTI3LCAxMSwgNDQsIAorICAgIDI1NCwgMTEwLCAxMjcsIDExLCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDExLCAKKyAgICA0MywgNzEsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCAxMSwgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMTEsIDQzLCAKKyAgICAyNDQsIDYzLCAyMjYsIDMsIDExLCA0NCwgMjQ0LCA2MywgMjI2LCAzLCAyMTQsIDE1MywgMjI0LCAyNCwgNzQsIDI0NiwgCisgICAgMTA0LCAyMjQsIDI0LCA3NCwgMjU0LCA4OCwgMjQzLCA5OCwgMjUwLCAzNiwgNzQsIDI1MCwgMiwgMjQzLCA5OCwgMjUwLCAKKyAgICAzNiwgNzQsIDQ0LCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCA3NCwgMTk5LCA5NywgNzQsIDE5OSwgNDMsIDQ0LCAKKyAgICA3NCwgMTk5LCAxNDAsIDUyLCA3NCwgMTk5LCA5NywgNTIsIDc0LCAxOTksIDQzLCA0NCwgNTIsIDc0LCAxOTksIDE0MCwgODAsIAorICAgIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDgwLCAyNDMsIDI0MywgMTMwLCAxOTksIDE0MCwgNTIsIDgwLCAyNDMsIDI0MywgCisgICAgMTMwLCAxOTksIDk3LCA1MiwgODAsIDI0MywgMjQzLCAxMzAsIDE5OSwgOTcsIDIxOCwgMjMwLCA3NCwgNDYsIDQ3LCAyNTEsIAorICAgIDIxNSwgNDYsIDQ3LCAyNDcsIDExNywgNDYsIDQ3LCAyNDYsIDI0NSwgNDYsIDQ3LCAyNDcsIDExNiwgNDYsIDQ3LCAyNDYsIAorICAgIDE4MSwgNDYsIDQ3LCAyNDcsIDUyLCA0NiwgNDcsIDI0NiwgMjQ0LCA0NiwgNDcsIDI0NywgMTE1LCA0NiwgNDcsIDI0NiwgCisgICAgMTQ5LCA0NiwgNDcsIDI0NywgMjAsIDQ2LCA0NywgMjQ2LCAyMTIsIDQ2LCA0NywgMjQ3LCA4MywgNDYsIDQ3LCAyNDYsIAorICAgIDE4MCwgNDYsIDQ3LCAyNDcsIDUxLCA0NiwgNDcsIDI0NiwgMjQzLCA0NiwgNDcsIDI0NywgMTE0LCA0NiwgNDcsIDI0NiwgCisgICAgMTMzLCA0NiwgNDcsIDI0NywgNCwgNDYsIDQ3LCAyNDYsIDE5NiwgNDYsIDQ3LCAyNDcsIDY3LCA0NiwgNDcsIDI0NiwgMTY0LCAKKyAgICA0NiwgNDcsIDI0NywgMzUsIDQ2LCA0NywgMjQ2LCAyMjcsIDQ2LCA0NywgMjQ3LCA5OCwgNDYsIDQ3LCAyNDYsIDE0OCwgNDYsIAorICAgIDQ3LCAyNDcsIDE5LCA0NiwgNDcsIDI0NiwgMjExLCA0NiwgNDcsIDI0NywgODIsIDQ2LCA0NywgMjQ2LCAxNzksIDQ2LCA0NywgCisgICAgMjQ3LCA1MCwgNDYsIDQ3LCAyNDYsIDI0MiwgNDYsIDQ3LCAyNDcsIDExMywgNDYsIDQ3LCAyNDYsIDEyNSwgNDYsIDQ3LCAKKyAgICAyNDYsIDI1MiwgNDYsIDQ3LCAyNDYsIDE4OCwgNDYsIDQ3LCAyNDcsIDU5LCA0NiwgNDcsIDI0NiwgMTU2LCA0NiwgNDcsIAorICAgIDI0NywgMjcsIDQ2LCA0NywgMjQ2LCAyMTksIDQ2LCA0NywgMjQ3LCA5MCwgNDYsIDQ3LCAyNDYsIDE0MCwgNDYsIDQ3LCAKKyAgICAyNDcsIDExLCA0NiwgNDcsIDI0NiwgMjAzLCA0NiwgNDcsIDI0NywgNzQsIDQ2LCA0NywgMjQ2LCAxNzEsIDQ2LCA0NywgCisgICAgMjQ3LCA0MiwgNDYsIDQ3LCAyNDYsIDIzNCwgNDYsIDQ3LCAyNDcsIDEwNSwgNDYsIDQ3LCAyNDYsIDEzMiwgNDYsIDQ3LCAKKyAgICAyNDcsIDMsIDQ2LCA0NywgMjQ2LCAxOTUsIDQ2LCA0NywgMjQ3LCA2NiwgNDYsIDQ3LCAyNDYsIDE2MywgNDYsIDQ3LCAyNDcsIAorICAgIDM0LCA0NiwgNDcsIDI0NiwgMjI2LCA0NiwgNDcsIDI0NywgOTcsIDQ2LCA0NywgMjQ2LCAxNDcsIDQ2LCA0NywgMjQ3LCAxOCwgCisgICAgNDYsIDQ3LCAyNDYsIDIxMCwgNDYsIDQ3LCAyNDcsIDgxLCA0NiwgNDcsIDI0NiwgMTc4LCA0NiwgNDcsIDI0NywgNDksIDQ2LCAKKyAgICA0NywgMjQ2LCAyNDEsIDQ2LCA0NywgMjQ3LCAxMTIsIDQ2LCA0NywgMjQ2LCAxMjEsIDQ2LCA0NywgMjQ2LCAyNDgsIDQ2LCAKKyAgICA0NywgMjQ2LCAxODQsIDQ2LCA0NywgMjQ3LCA1NSwgNDYsIDQ3LCAyNDYsIDE1MiwgNDYsIDQ3LCAyNDcsIDIzLCA0NiwgNDcsIAorICAgIDI0NiwgMjE1LCA0NiwgNDcsIDI0NywgODYsIDQ2LCA0NywgMjQ2LCAxMzYsIDQ2LCA0NywgMjQ3LCA3LCA0NiwgNDcsIDI0NiwgCisgICAgMTk5LCA0NiwgNDcsIDI0NywgNzAsIDQ2LCA0NywgMjQ2LCAxNjcsIDQ2LCA0NywgMjQ3LCAzOCwgNDYsIDQ3LCAyNDYsIAorICAgIDIzMCwgNDYsIDQ3LCAyNDcsIDEwMSwgNDYsIDQ3LCAyNDYsIDEyOCwgNDYsIDQ3LCAyNDYsIDI1NSwgNDYsIDQ3LCAyNDYsIAorICAgIDE5MSwgNDYsIDQ3LCAyNDcsIDYyLCA0NiwgNDcsIDI0NiwgMTU5LCA0NiwgNDcsIDI0NywgMzAsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMjIsIDQ2LCA0NywgMjQ3LCA5MywgNDYsIDQ3LCAyNDYsIDE0MywgNDYsIDQ3LCAyNDcsIDE0LCA0NiwgNDcsIDI0NiwgCisgICAgMjA2LCA0NiwgNDcsIDI0NywgNzcsIDQ2LCA0NywgMjQ2LCAxNzQsIDQ2LCA0NywgMjQ3LCA0NSwgNDYsIDQ3LCAyNDYsIAorICAgIDIzNywgNDYsIDQ3LCAyNDcsIDEwOCwgNDYsIDQ3LCAyNDYsIDEyNCwgNDYsIDQ3LCAyNDYsIDI1MSwgNDYsIDQ3LCAyNDYsIAorICAgIDE4NywgNDYsIDQ3LCAyNDcsIDU4LCA0NiwgNDcsIDI0NiwgMTU1LCA0NiwgNDcsIDI0NywgMjYsIDQ2LCA0NywgMjQ2LCAKKyAgICAyMTgsIDQ2LCA0NywgMjQ3LCA4OSwgNDYsIDQ3LCAyNDYsIDEzOSwgNDYsIDQ3LCAyNDcsIDEwLCA0NiwgNDcsIDI0NiwgCisgICAgMjAyLCA0NiwgNDcsIDI0NywgNzMsIDQ2LCA0NywgMjQ2LCAxNzAsIDQ2LCA0NywgMjQ3LCA0MSwgNDYsIDQ3LCAyNDYsIAorICAgIDIzMywgNDYsIDQ3LCAyNDcsIDEwNCwgNDYsIDQ3LCAyNDYsIDEzMSwgNDYsIDQ3LCAyNDcsIDIsIDQ2LCA0NywgMjQ2LCAKKyAgICAxOTQsIDQ2LCA0NywgMjQ3LCA2NSwgNDYsIDQ3LCAyNDYsIDE2MiwgNDYsIDQ3LCAyNDcsIDMzLCA0NiwgNDcsIDI0NiwgCisgICAgMjI1LCA0NiwgNDcsIDI0NywgOTYsIDQ2LCA0NywgMjQ2LCAxNDYsIDQ2LCA0NywgMjQ3LCAxNywgNDYsIDQ3LCAyNDYsIAorICAgIDIwOSwgNDYsIDQ3LCAyNDcsIDgwLCA0NiwgNDcsIDI0NiwgMTc3LCA0NiwgNDcsIDI0NywgNDgsIDQ2LCA0NywgMjQ2LCAKKyAgICAyNDAsIDQ2LCA0NywgMjQ3LCAxMTEsIDQ2LCA0NywgMjQ2LCAxMTksIDQ2LCA0NywgMjQ2LCAyNDYsIDQ2LCA0NywgMjQ2LCAKKyAgICAxODIsIDQ2LCA0NywgMjQ3LCA1MywgNDYsIDQ3LCAyNDYsIDE1MCwgNDYsIDQ3LCAyNDcsIDIxLCA0NiwgNDcsIDI0NiwgCisgICAgMjEzLCA0NiwgNDcsIDI0NywgODQsIDQ2LCA0NywgMjQ2LCAxMzQsIDQ2LCA0NywgMjQ3LCA1LCA0NiwgNDcsIDI0NiwgMTk3LCAKKyAgICA0NiwgNDcsIDI0NywgNjgsIDQ2LCA0NywgMjQ2LCAxNjUsIDQ2LCA0NywgMjQ3LCAzNiwgNDYsIDQ3LCAyNDYsIDIyOCwgNDYsIAorICAgIDQ3LCAyNDcsIDk5LCA0NiwgNDcsIDI0NiwgMTI2LCA0NiwgNDcsIDI0NiwgMjUzLCA0NiwgNDcsIDI0NiwgMTg5LCA0NiwgCisgICAgNDcsIDI0NywgNjAsIDQ2LCA0NywgMjQ2LCAxNTcsIDQ2LCA0NywgMjQ3LCAyOCwgNDYsIDQ3LCAyNDYsIDIyMCwgNDYsIDQ3LCAKKyAgICAyNDcsIDkxLCA0NiwgNDcsIDI0NiwgMTQxLCA0NiwgNDcsIDI0NywgMTIsIDQ2LCA0NywgMjQ2LCAyMDQsIDQ2LCA0NywgCisgICAgMjQ3LCA3NSwgNDYsIDQ3LCAyNDYsIDE3MiwgNDYsIDQ3LCAyNDcsIDQzLCA0NiwgNDcsIDI0NiwgMjM1LCA0NiwgNDcsIAorICAgIDI0NywgMTA2LCA0NiwgNDcsIDI0NiwgMTIyLCA0NiwgNDcsIDI0NiwgMjQ5LCA0NiwgNDcsIDI0NiwgMTg1LCA0NiwgNDcsIAorICAgIDI0NywgNTYsIDQ2LCA0NywgMjQ2LCAxNTMsIDQ2LCA0NywgMjQ3LCAyNCwgNDYsIDQ3LCAyNDYsIDIxNiwgNDYsIDQ3LCAKKyAgICAyNDcsIDg3LCA0NiwgNDcsIDI0NiwgMTM3LCA0NiwgNDcsIDI0NywgOCwgNDYsIDQ3LCAyNDYsIDIwMCwgNDYsIDQ3LCAyNDcsIAorICAgIDcxLCA0NiwgNDcsIDI0NiwgMTY4LCA0NiwgNDcsIDI0NywgMzksIDQ2LCA0NywgMjQ2LCAyMzEsIDQ2LCA0NywgMjQ3LCAKKyAgICAxMDIsIDQ2LCA0NywgMjQ2LCAxMjksIDQ2LCA0NywgMjQ3LCAwLCA0NiwgNDcsIDI0NiwgMTkyLCA0NiwgNDcsIDI0NywgNjMsIAorICAgIDQ2LCA0NywgMjQ2LCAxNjAsIDQ2LCA0NywgMjQ3LCAzMSwgNDYsIDQ3LCAyNDYsIDIyMywgNDYsIDQ3LCAyNDcsIDk0LCA0NiwgCisgICAgNDcsIDI0NiwgMTQ0LCA0NiwgNDcsIDI0NywgMTUsIDQ2LCA0NywgMjQ2LCAyMDcsIDQ2LCA0NywgMjQ3LCA3OCwgNDYsIDQ3LCAKKyAgICAyNDYsIDE3NSwgNDYsIDQ3LCAyNDcsIDQ2LCA0NiwgNDcsIDI0NiwgMjM4LCA0NiwgNDcsIDI0NywgMTA5LCA0NiwgNDcsIAorICAgIDI0NiwgMTIwLCA0NiwgNDcsIDI0NiwgMjQ3LCA0NiwgNDcsIDI0NiwgMTgzLCA0NiwgNDcsIDI0NywgNTQsIDQ2LCA0NywgCisgICAgMjQ2LCAxNTEsIDQ2LCA0NywgMjQ3LCAyMiwgNDYsIDQ3LCAyNDYsIDIxNCwgNDYsIDQ3LCAyNDcsIDg1LCA0NiwgNDcsIAorICAgIDI0NiwgMTM1LCA0NiwgNDcsIDI0NywgNiwgNDYsIDQ3LCAyNDYsIDE5OCwgNDYsIDQ3LCAyNDcsIDY5LCA0NiwgNDcsIDI0NiwgCisgICAgMTY2LCA0NiwgNDcsIDI0NywgMzcsIDQ2LCA0NywgMjQ2LCAyMjksIDQ2LCA0NywgMjQ3LCAxMDAsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjcsIDQ2LCA0NywgMjQ2LCAyNTQsIDQ2LCA0NywgMjQ2LCAxOTAsIDQ2LCA0NywgMjQ3LCA2MSwgNDYsIDQ3LCAyNDYsIAorICAgIDE1OCwgNDYsIDQ3LCAyNDcsIDI5LCA0NiwgNDcsIDI0NiwgMjIxLCA0NiwgNDcsIDI0NywgOTIsIDQ2LCA0NywgMjQ2LCAKKyAgICAxNDIsIDQ2LCA0NywgMjQ3LCAxMywgNDYsIDQ3LCAyNDYsIDIwNSwgNDYsIDQ3LCAyNDcsIDc2LCA0NiwgNDcsIDI0NiwgCisgICAgMTczLCA0NiwgNDcsIDI0NywgNDQsIDQ2LCA0NywgMjQ2LCAyMzYsIDQ2LCA0NywgMjQ3LCAxMDcsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMjMsIDQ2LCA0NywgMjQ2LCAyNTAsIDQ2LCA0NywgMjQ2LCAxODYsIDQ2LCA0NywgMjQ3LCA1NywgNDYsIDQ3LCAyNDYsIAorICAgIDE1NCwgNDYsIDQ3LCAyNDcsIDI1LCA0NiwgNDcsIDI0NiwgMjE3LCA0NiwgNDcsIDI0NywgODgsIDQ2LCA0NywgMjQ2LCAKKyAgICAxMzgsIDQ2LCA0NywgMjQ3LCA5LCA0NiwgNDcsIDI0NiwgMjAxLCA0NiwgNDcsIDI0NywgNzIsIDQ2LCA0NywgMjQ2LCAxNjksIAorICAgIDQ2LCA0NywgMjQ3LCA0MCwgNDYsIDQ3LCAyNDYsIDIzMiwgNDYsIDQ3LCAyNDcsIDEwMywgNDYsIDQ3LCAyNDYsIDEzMCwgCisgICAgNDYsIDQ3LCAyNDcsIDEsIDQ2LCA0NywgMjQ2LCAxOTMsIDQ2LCA0NywgMjQ3LCA2NCwgNDYsIDQ3LCAyNDYsIDE2MSwgNDYsIAorICAgIDQ3LCAyNDcsIDMyLCA0NiwgNDcsIDI0NiwgMjI0LCA0NiwgNDcsIDI0NywgOTUsIDQ2LCA0NywgMjQ2LCAxNDUsIDQ2LCA0NywgCisgICAgMjQ3LCAxNiwgNDYsIDQ3LCAyNDYsIDIwOCwgNDYsIDQ3LCAyNDcsIDc5LCA0NiwgNDcsIDI0NiwgMTc2LCA0NiwgNDcsIAorICAgIDI0NywgNDcsIDQ2LCA0NywgMjQ2LCAyMzksIDQ2LCA0NywgMjQ3LCAxMTAsIDk3LCAyMTUsIDU4LCA4MCwgMiwgNjcsIDkxLCAKKyAgICA5NywgMjE1LCA1OCwgODAsIDIsIDUyLCA2NywgOTEsIDE0MCwgNTIsIDgwLCAyLCA2NywgOTEsIDk3LCA1MiwgODAsIDIsIAorICAgIDY3LCA5MSwgNDMsIDQ0LCA1MiwgODAsIDIsIDY3LCA5MSwgOTcsIDIxNSwgNTgsIDgwLCAyNDMsIDI0MywgMTMwLCAxNDAsIAorICAgIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgOTcsIDUyLCA4MCwgMjQzLCAyNDMsIDEzMCwgMjQ2LCAxMDQsIDgwLCAyLCAyMDMsIAorICAgIDkxLCAyMTQsIDE1MywgODAsIDIsIDIwMywgOTEsIDIxNCwgMTUzLCAyMTUsIDIxMSwgNzQsIDI0NiwgMTA0LCAyMTUsIDIxMSwgCisgICAgNzQsIDE0MCwgNTIsIDI0OCwgMTU3LCA3NCwgOTcsIDUyLCAyNDgsIDE1NywgNzQsIDE0MCwgMjE1LCAyMTEsIDI0OCwgMTU3LCAKKyAgICA3NCwgOTcsIDIxNSwgMjExLCAyNDgsIDE1NywgNzQsIDk3LCAyMTUsIDU4LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCA5NywgCisgICAgODAsIDIsIDI0NiwgMTE4LCAyMTgsIDEzOSwgMjE0LCAxNTMsIDgwLCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCA4MCwgMjE2LCAKKyAgICA0MiwgMTMwLCA5NywgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgOTcsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIAorICAgIDkxLCA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzcsIDk3LCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAKKyAgICA5NywgMjE1LCA1OCwgODAsIDIsIDIxNywgNzgsIDIsIDUyLCA2NywgOTEsIDE0MCwgMjUzLCAyNTEsIDk3LCAyNTMsIDI1MSwgCisgICAgMTQwLCA1MiwgMjUzLCAyNTEsIDk3LCA1MiwgMjUzLCAyNTEsIDE0MCwgODAsIDIxNiwgNDIsIDg1LCAyNDcsIDI0OCwgOTcsIAorICAgIDgwLCAyMTYsIDQyLCA4NSwgMjQ3LCAyNDgsIDE0MCwgODAsIDI0MywgMjQzLCAyNTIsIDE0MSwgMjE2LCA0MiwgODUsIDI0NywgCisgICAgMjQ4LCA5NywgODAsIDI0MywgMjQzLCAyNTIsIDE0MSwgMjE2LCA0MiwgODUsIDI0NywgMjQ4LCAyMjgsIDU2LCAyMTIsIDksIAorICAgIDIyLCAyMTksIDI4LCAyNDUsIDIyMCwgNzQsIDIyOCwgNTYsIDI0NSwgMjIwLCAyMiwgMjE5LCAyOCwgMjEyLCA5LCA3NCwgCisgICAgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMiwgMTAzLCAyMjgsIDU2LCAyNDUsIDIyMCwgODAsIDIsIDEwMywgMjE5LCAyOCwgMjQ1LCAKKyAgICAyMjAsIDgwLCAyLCAxMDMsIDIxOSwgMjgsIDIxMiwgOSwgODAsIDIsIDEwMywgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjIsIAorICAgIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyMiwgMjE5LCAyOCwgMjQ1LCAyMjAsIDc0LCAKKyAgICAyMTksIDI4LCAyNDUsIDIyMCwgODAsIDIyLCAyMTksIDI4LCAyMTIsIDksIDc0LCAyMTksIDI4LCAyMTIsIDksIDgwLCAyMiwgCisgICAgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjIyLCAyMjgsIDI0NywgMjU1LCAyNDksIDEyNSwgMjQ0LCAxNzUsIDI0NywgMjU0LCAKKyAgICAyNDQsIDE3NSwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMjIsIDIyOCwgMjQ3LCAyNTQsIDIxOSwgMjgsIDI0NSwgMjIwLCA4MCwgCisgICAgMjQ5LCAxMjUsIDIyOCwgNTYsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIDgwLCAyNDksIDEyNSwgMjE5LCAKKyAgICAyOCwgMjQ1LCAyMjAsIDc0LCAyNDQsIDE3NSwgMjQ3LCAyNTUsIDI0OSwgMTI1LCAyMjgsIDU2LCAyNDUsIDIyMCwgNzQsIAorICAgIDIyMiwgMjI4LCAyNDcsIDI1NSwgMjQ5LCAxMjUsIDIxOSwgMjgsIDI0NSwgMjIwLCA3NCwgMjI4LCA1NiwgMjQ1LCAyMjAsIAorICAgIDgwLCAyNDksIDEyNSwgMjI4LCA1NiwgMjEyLCA5LCA3NCwgMjI4LCA1NiwgMjEyLCA5LCA4MCwgMjQ5LCAxMjUsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3NCwgMjEyLCAzNiwgODAsIDIyNSwgNywgMjQ3LCAxOTUsIDIyMiwgMjUxLCA4MCwgMjI1LCA3LCAKKyAgICA5NywgMjE2LCAxODgsIDI0OSwgOTAsIDIxNCwgMTUyLCA4MCwgMjI1LCA3LCA5NywgMjE2LCAxODgsIDI0OSwgOTAsIDI0NiwgCisgICAgMTAzLCA4MCwgMjI1LCA3LCAyNDYsIDEwNCwgMjE2LCAxODgsIDI0OSwgOTAsIDIzMywgMzcsIDgwLCAyMjUsIDcsIDI0NiwgCisgICAgMTA0LCAyMTYsIDE4OCwgMjQ5LCA5MCwgMjIyLCAyNDEsIDIyMiwgMjQ0LCAyNTQsIDI2LCAyNTAsIDIsIDc0LCAyMzMsIDQwLCAKKyAgICAyNTQsIDI2LCAyNTQsIDg4LCA3NCwgMjE2LCAxNCwgMjU0LCAyNiwgMjU0LCA4OCwgNzQsIDI1MSwgMTc1LCAyNTQsIDI2LCAKKyAgICAyNTQsIDg4LCA3NCwgMjE2LCAxNCwgMjU0LCAyNiwgMjUwLCAyLCA4MCwgMiwgMjMwLCAxODEsIDIxNiwgMTQsIDI1NCwgMjYsIAorICAgIDI1NCwgODgsIDgwLCAyLCAyMjUsIDIyLCAyMzIsIDEwOCwgNDQsIDIyMCwgMTUyLCAyNTAsIDIsIDc0LCAyMzIsIDEwOCwgCisgICAgNDMsIDIyMCwgMTUyLCAyNTQsIDg4LCA3NCwgMjU0LCA4OCwgMjUwLCAwLCAyNTAsIDM2LCA3NCwgMjUwLCAyLCAyNTAsIDAsIAorICAgIDI1MCwgMzYsIDc0LCA5NywgODAsIDc3LCAyMTksIDI1MSwgMTQwLCA3NCwgMTQwLCA4MCwgNzcsIDIxOSwgMjUxLCA5NywgCisgICAgNzQsIDIxOSwgMjUxLCA5NywgODAsIDc3LCAxNDAsIDc0LCA5NywgODAsIDIsIDk2LCA1MSwgMTQwLCA4MCwgMiwgOTYsIDUxLCAKKyAgICA5NywgODAsIDIxNiwgMTM5LCAyMTEsIDE3OCwgNDMsIDQ0LCA4MCwgMjE2LCAxMzksIDQsIDI1MCwgMzUsIDIxNCwgMTUzLCAKKyAgICAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDQsIDI1MCwgMzUsIDQzLCAyNTIsIDEzOSwgMTIwLCA0NCwgMjUyLCAxMzksIDEyNCwgCisgICAgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTI0LCA0NCwgMjUyLCAxMzksIDEyMCwgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIAorICAgIDQ0LCAxMjQsIDI1MiwgMTM5LCA0MywgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIDQzLCAxMjQsIDI1MiwgMTM5LCA0NCwgCisgICAgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTIwLCA0NCwgMjUyLCAxMzksIDEyMCwgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIAorICAgIDQ0LCAxMjQsIDI1MiwgMTM5LCA0NCwgMjQxLCAyNTQsIDQzLCAyNTIsIDEzOSwgMTI0LCA0NCwgMjUyLCAxMzksIDEyNCwgCisgICAgMjQxLCAyNTQsIDEyMCwgMjUyLCAxMzksIDQzLCAxMjQsIDI1MiwgMTM5LCA0MywgMjQxLCAyNTQsIDE0MCwgMjQxLCAyNTUsIAorICAgIDIsIDI1MiwgMTM5LCAxMjAsIDIxNiwgNDIsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCAyMTYsIDQyLCAKKyAgICAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyMTYsIDQyLCAxMzAsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDIxNiwgCisgICAgNDIsIDEzMCwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyMTYsIDQyLCAxMzAsIDIxNCwgMTUzLCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyMTYsIDQyLCAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAKKyAgICAyMTYsIDQyLCAxMzAsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDI0MywgMjQzLCAxMzAsIDk3LCAyNDEsIAorICAgIDI1NSwgMiwgMjUyLCAxMzksIDEyMCwgMjQzLCAyNDMsIDEzMCwgMjE0LCAxNTMsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgCisgICAgNDQsIDI0MywgMjQzLCAxMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQ0LCAyNDMsIDI0MywgMTMwLCAKKyAgICAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNDMsIDI0MywgMTMwLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgCisgICAgMTM5LCAxMjQsIDI0MywgMjQzLCAxMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNDMsIDI0MywgCisgICAgMTMwLCAyNDYsIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCA0MywgMjQzLCAyNDMsIDEzMCwgMTQwLCAyNDEsIDI1NSwgCisgICAgMiwgMjUyLCAxMzksIDEyMCwgNzcsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIDEwNiwgMjE0LCAxNTMsIAorICAgIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgCisgICAgMjUxLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyNDYsIAorICAgIDEwNiwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgNDMsIDI1MiwgMzAsIDI0NiwgMTA0LCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIyMiwgMjUxLCAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgOTcsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjE0LCAxNjMsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDc3LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAyNDYsIDEwNiwgOTcsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTIwLCA3NywgMTQwLCAyNDEsIDI1NSwgMiwgCisgICAgMjUyLCAxMzksIDIxNCwgMTYzLCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDc3LCAxNDAsIDI0MSwgMjU1LCAyLCAKKyAgICAyNTIsIDEzOSwgMjQ2LCAxMDYsIDE0MCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjAsIDc3LCAxOTksIDI0OCwgMTU2LCAKKyAgICAxNDAsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgMTI0LCAyNTIsIDQzLCAxOTksIDI0OCwgMTU2LCA5NywgMjQxLCAyNTUsIDIsIAorICAgIDI1MiwgMTM5LCAxMjAsIDc3LCAxOTksIDI0OCwgMTU2LCA5NywgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAxMjQsIDI1MiwgCisgICAgNDMsIDE5OSwgMjQ4LCAxNTYsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDQzLCAyNTIsIDMwLCAyNDYsIAorICAgIDEwNCwgMjQxLCAyNTUsIDIsIDI1MiwgMTM5LCAyMjIsIDI1MSwgMjQ2LCAxMDQsIDI0MSwgMjU1LCAyLCAyNTIsIDEzOSwgCisgICAgNDMsIDI1MiwgMzAsIDIxNCwgMTUzLCAyNDEsIDI1NSwgMiwgMjUyLCAxMzksIDIyMiwgMjUxLCA0NCwgNTIsIDgwLCAyLCAKKyAgICAyMjIsIDE4MywgMjQxLCAyMzUsIDI0NSwgOTgsIDUsIDc3LCA5NywgNzQsIDIxNiwgODksIDIyNiwgMTY4LCA3NywgOTcsIAorICAgIDc0LCAxNDAsIDgwLCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDk3LCA4MCwgNzcsIDIxNiwgODksIDIyNiwgMTY3LCA5NywgCisgICAgODAsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDIzMywgMTUsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCAyMTYsIDEzOSwgMjMzLCAKKyAgICAxNCwgMjQyLCAxMzAsIDc3LCA5NywgNzQsIDIxOCwgNjQsIDc3LCA5NywgNzQsIDE0MCwgODAsIDIxNiwgMTM5LCAyMTgsIAorICAgIDYzLCAyMTgsIDIyLCA3NywgMTQwLCA3NCwgNDMsIDI0NCwgOTEsIDIxNywgNzcsIDQ0LCAyNDQsIDkxLCAyMTcsIDc3LCAKKyAgICAxMjAsIDI0NCwgOTEsIDIxNywgNzcsIDEyNCwgMjQ0LCA5MSwgMjE3LCA3NywgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgCisgICAgMjQ4LCA2MCwgMjEwLCAxNjAsIDE4NywgMjE4LCAyNDIsIDIxMCwgMTYwLCAxODcsIDIxNSwgNDksIDI0OSwgMjI2LCA0MywgCisgICAgNzEsIDI0OSwgOTksIDEyNywgNDQsIDcxLCAyNDksIDk5LCAxMjcsIDQzLCA3MSwgMjI2LCAzLCA0NCwgNzEsIDIyNiwgMywgCisgICAgMjEwLCAxNjAsIDE4NywgNDMsIDIzNiwgMTUsIDEyNywgMjEwLCAxNjAsIDE4NywgNDQsIDIzNiwgMTUsIDEyNywgMjEwLCAKKyAgICAxNjAsIDE4NywgNDMsIDI1MSwgMjQyLCAxMjcsIDIxMCwgMTYwLCAxODcsIDQ0LCAyNTEsIDI0MiwgMTI3LCA0MywgNDIsIAorICAgIDI1MSwgMTU4LCAyLCAyMTQsIDE4MywgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE0LCAxODMsIDQzLCA0MiwgMjUxLCAxNTgsIAorICAgIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDIxNiwgMTQsIDI0OSwgMTYwLCA0NCwgNDIsIDI1MSwgMTU4LCAyLCAyMTYsIDExNSwgCisgICAgMjM2LCAwLCAyNTEsIDE3NSwgMjQ5LCAxNjAsIDQzLCA0MiwgMjUxLCAxNTgsIDIsIDIxNiwgMTE1LCAyMzYsIDAsIDI1MSwgCisgICAgMTc1LCAyNDksIDE2MCwgNDQsIDQyLCAyNTEsIDE1OCwgMiwgMjE2LCAxMTUsIDIzNiwgMCwgMjE2LCAxNCwgMjQ5LCAxNjAsIAorICAgIDQzLCAyNTQsIDExMCwgMjUxLCAxNTgsIDIsIDI0NywgMTIwLCA0NCwgMjU0LCAxMTAsIDI1MSwgMTU4LCAyLCAyNDcsIDEyMCwgCisgICAgNDMsIDI1NCwgMjYsIDIzMywgMTUsIDEyNywgNDQsIDI1NCwgMjYsIDI0MiwgMTMwLCAxMjcsIDUyLCA0MywgMjU0LCAyNiwgCisgICAgMjQyLCAxMzAsIDEyNywgNTIsIDQ0LCAyNTQsIDI2LCAyMzMsIDE1LCAxMjcsIDQzLCA4NSwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQ0LCA4NSwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDI0NiwgMTE4LCAyNDQsIDEzNSwgNjcsIDIxMCwgMzUsIDIzMiwgCisgICAgMjEzLCAyMzEsIDg4LCAyNTQsIDExMCwgMjI2LCAxNzAsIDIzMywgNDYsIDQ0LCAyNTQsIDExMCwgMjE0LCAxMiwgMiwgMjE4LCAKKyAgICAyMzQsIDIzMSwgODgsIDQ0LCAyNTQsIDExMCwgMiwgMjQ3LCAxMjAsIDI1NCwgMTEwLCAyLCAyMjIsIDkyLCAyMzUsIDIxNSwgCisgICAgMjU1LCAzLCAyNTQsIDEwOSwgMjE4LCAyNTUsIDI1NCwgMTEwLCAyMjYsIDE3MCwgMjMzLCA0NiwgMjE4LCAyNTUsIDI1NCwgCisgICAgMTEwLCAyMjYsIDE3MCwgMjE0LCAxNjMsIDIxNSwgOTQsIDI1NCwgMTA5LCAyMjMsIDQ5LCAyNTQsIDEwOSwgMjU0LCAxMTAsIAorICAgIDIsIDIxNCwgMTgzLCAyMjMsIDQ5LCAyNTQsIDExMCwgMiwgMjE0LCAxODMsIDIyNiwgMjQ4LCAyNTQsIDExMCwgMjI2LCAKKyAgICAxNzAsIDIxNCwgMTYzLCAyMjYsIDI0OCwgMjU0LCAxMTAsIDIyNiwgMTcwLCAyNDYsIDEwNiwgMjMxLCA4OCwgMjU0LCAxMTAsIAorICAgIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjAsIDIyLCAyMjIsIDI1MSwgMjMxLCA4OCwgCisgICAgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCAxMjAsIDIyLCAyMzMsIDQ2LCAKKyAgICAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDEyNCwgMjIsIAorICAgIDIyMiwgMjUxLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIAorICAgIDcsIDEyNCwgMjIsIDIzMywgNDYsIDIzMSwgODgsIDI1NCwgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgCisgICAgODAsIDIyNSwgNywgNDQsIDIyLCAyMTQsIDE2MywgMjMxLCA4OCwgMjU0LCAxMTAsIDIsIDIwNCwgMjU0LCA1LCAyNDUsIAorICAgIDE0MCwgMjM2LCAwLCA4MCwgMjI1LCA3LCA0MywgMjIsIDIxNCwgMTYzLCAyMzEsIDg4LCAyNTQsIDExMCwgMiwgMjA0LCAKKyAgICAyNTQsIDUsIDI0NSwgMTQwLCAyMzYsIDAsIDgwLCAyMjUsIDcsIDQ0LCAyMiwgMjQ2LCAxMDYsIDIzMSwgODgsIDI1NCwgCisgICAgMTEwLCAyLCAyMDQsIDI1NCwgNSwgMjQ1LCAxNDAsIDIzNiwgMCwgODAsIDIyNSwgNywgNDMsIDIyLCAyNDYsIDEwNiwgMjIzLCAKKyAgICA0OSwgMjQ1LCAxNTIsIDIyMCwgMTI3LCAyNDUsIDE1MiwgMjIwLCAxMjgsIDIsIDIyNiwgMTIzLCAyNDUsIDE1MiwgMjIwLCAKKyAgICAxMjgsIDIsIDQsIDI1MCwgMzYsIDQ4LCAyNDUsIDE1MiwgMjIwLCAxMjgsIDIsIDQ0LCA4MCwgNDgsIDI0NSwgMTUyLCAyMjAsIAorICAgIDEyOCwgMiwgNDMsIDgwLCA0OCwgMjUwLCAzNiwgMiwgMjAzLCAxMzAsIDM3LCA2NywgMTMwLCAzNywgMjI2LCA3LCAzNywgCisgICAgMjIzLCA1MCwgMjE5LCA0NiwgMzcsIDIyNSwgMTcxLCAyNTAsIDM2LCAyNDcsIDE3MywgMjUxLCA3OCwgMjAzLCAyNTIsIAorICAgIDE0MSwgMjIsIDIxNiwgMTQsIDE2MywgMjQ3LCAxNzMsIDI1MSwgNzgsIDY3LCAxMzAsIDI1MCwgMzYsIDIsIDIxOCwgMjQsIAorICAgIDIxMSwgMTc4LCAzNywgMjU0LCA4NywgMjQ3LCAxNjksIDUwLCAxMjAsIDgwLCAyMTYsIDEzOSwgMjUwLCAzNSwgMzcsIDcxLCAKKyAgICAyNTEsIDExMywgMzcsIDI1MSwgMTEzLCAzNywgMjMzLCAxNCwgMzcsIDI0MiwgMTI5LCAyNTAsIDM2LCAyLCA0LCAyNTAsIAorICAgIDM2LCAyMTYsIDQyLCAyMTYsIDE5NiwgMjIyLCAyNTEsIDI1MCwgMzYsIDIsIDExMywgMjAzLCAyMTgsIDkxLCAyMTYsIDQyLCAKKyAgICAyMTYsIDE5NiwgMjIyLCAyNTEsIDkyLCAyMjIsIDIyOCwgMjQ3LCAyNTUsIDIxOSwgOTUsIDkyLCAyNDQsIDE3NSwgMjQ3LCAKKyAgICAyNTUsIDIxOSwgOTUsIDkyLCAyNTMsIDIxNiwgOTIsIDQsIDI1MCwgMzUsIDkyLCAyMTgsIDIzNCwgMTEzLCAyMzUsIDY1LCAKKyAgICAyMTgsIDIzMiwgMjE1LCAyMjYsIDIsIDU5LCA0OCwgMjE1LCAyMjYsIDIsIDIxNCwgMTgzLCAyMjIsIDkyLCAyMzYsIDAsIAorICAgIDIxNSwgMjI1LCAyMTUsIDIyNiwgMiwgMjIwLCAxMzQsIDI1MywgMjA3LCAyNTEsIDE3NCwgNDQsIDIxNSwgMjI2LCA3NywgCisgICAgNDMsIDIxNSwgMjI1LCA0MywgMjE1LCAyMjYsIDI1MiwgMzAsIDY3LCAxMzAsIDY3LCAyNTIsIDE0MSwgMjUyLCAzMCwgNDQsIAorICAgIDIxNSwgMjI1LCAyNTEsIDE2NSwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDI1MSwgMTY1LCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgCisgICAgODUsIDI1MSwgMTY0LCAzMCwgMiwgNDMsIDE2MywgMjUxLCAyMjEsIDMwLCAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgNzEsIAorICAgIDI0MCwgMjM2LCA4NSwgMjQwLCAyMzYsIDQzLCAyMTEsIDI0NCwgMjQ0LCAxMzUsIDQ0LCAyMTEsIDI0NCwgMjQ0LCAxMzUsIAorICAgIDQzLCA1MiwgMjExLCAyNDQsIDI0NCwgMTM1LCA0NCwgNTIsIDIxMSwgMjQ0LCAyNDQsIDEzNSwgMjM1LCAyNDgsIDIzNSwgCisgICAgMjM0LCAyMTYsIDExMiwgMTE3LCAyMzUsIDIzNCwgMjM1LCAyMzUsIDIyOSwgMTAyLCAyLCA2NywgMTMwLCAyNDYsIDExMiwgCisgICAgMjMwLCA4NywgNDIsIDIsIDI0OSwgMTgxLCAyMjYsIDEyNywgMjM1LCAyNDYsIDI1MywgMjM3LCAyMTksIDIxOSwgMjI0LCAKKyAgICAxODAsIDI0NSwgOTgsIDUsIDIyLCAyMTksIDk3LCAyMjYsIDcsIDI0NSwgOTgsIDUsIDIyLCAyMTksIDk3LCAyMjYsIDgsIDIsIAorICAgIDIxNiwgODksIDQ4LCAyNDAsIDEwNCwgMjE2LCA0MiwgMjIsIDIxOSwgOTcsIDIyNiwgNywgMjQyLCAxODMsIDIxOCwgMTU1LCAKKyAgICAyMTYsIDE4NSwgMjQ2LCAxMDUsIDIxNSwgMjI2LCAyLCA0MywgMTYzLCAyNTEsIDIyMSwgMjQ2LCAxMDUsIDIxNSwgMjI2LCAKKyAgICAyLCA0NCwgMTYzLCAyNTEsIDIyMSwgODUsIDI0NywgMjQ5LCAyLCAxMjQsIDc0LCA4NSwgMjMyLCAxMDQsIDcxLCAyNTAsIAorICAgIDM2LCAyLCAxMjQsIDc0LCA4NSwgMjUwLCAzNiwgMiwgMTI0LCA3NCwgMjQ1LCA4NSwgNzEsIDIxOCwgMjM0LCAyNDUsIDg1LCAKKyAgICA4NSwgMjE4LCAyMzQsIDI0NSwgODUsIDcxLCAyNDcsIDI0OCwgMjQ1LCA4NSwgODUsIDI0NywgMjQ4LCAyNDUsIDg1LCA3MSwgCisgICAgMjUwLCAzNSwgMjQ1LCA4NSwgODUsIDI1MCwgMzUsIDIyMiwgMTMyLCAyMjMsIDUwLCAyMTksIDQ3LCAyMjYsIDE2NywgMjE5LCAKKyAgICA0NywgMiwgMjI2LCAxMjMsIDIyMywgNTAsIDIxOSwgNDcsIDIsIDIwMywgOTEsIDI1MSwgMjQ5LCAyMTksIDQ2LCAyNTEsIAorICAgIDI0OSwgMjIzLCA1MCwgMjE5LCA0NiwgNTIsIDIyNSwgMjIsIDIxNSwgMjExLCAyMjUsIDIyLCAyMzMsIDQyLCAyNDksIDkxLCAKKyAgICAyNTQsIDExMCwgMTI3LCAyMjIsIDI0NywgMjQ5LCA5MSwgMjU0LCAxMTAsIDEyNywgMjE2LCA3OCwgMjMwLCAxNzksIDIzMCwgCisgICAgMjQsIDM3LCA1OSwgMjI2LCAxNjcsIDIzMCwgMjQsIDM3LCA5NiwgMjI2LCAxNjcsIDIzMCwgMjQsIDM3LCAzMCwgMjI2LCAKKyAgICAxNjcsIDIzMCwgMjQsIDIxNCwgMTc2LCAyMjYsIDE2OCwgMiwgMjQ3LCAxMjAsIDIzMCwgMjQsIDIxNCwgMTc2LCAyMjYsIAorICAgIDE2OCwgMiwgMjI1LCAyMiwgMjMwLCAyNCwgNDIsIDIzNSwgMTk5LCAyMjYsIDE2NywgMjMwLCAyNCwgNDIsIDIxNCwgMTc2LCAKKyAgICAyMjYsIDE2NywgMTEzLCAyMzIsIDE0NiwgMjIsIDIyNiwgMTY3LCAxMTMsIDIzMiwgMTQ2LCAxNzcsIDIyNiwgMTY3LCAyMzAsIAorICAgIDI0LCAzMCwgMjI2LCAxNjcsIDIzMCwgMTU0LCAxMTMsIDIxOCwgNDMsIDIxOCwgNDEsIDIsIDIzNSwgMjExLCAyMjQsIDI0LCAKKyAgICAyMzUsIDIxMiwgMjI2LCAxNjcsIDI0NCwgOTksIDIyNSwgMjU1LCAyMzUsIDIxMSwgMjM1LCAyMTIsIDIsIDUyLCA5MSwgCisgICAgMjM1LCAyMTIsIDI1MywgMTczLCAyLCAyMTksIDk1LCAyNTAsIDMyLCAyNDMsIDIyNiwgMjU0LCA4OCwgMjM1LCAyMDksIAorICAgIDIzMiwgMjE0LCAyMzUsIDIxMCwgMiwgMjIzLCAxMTUsIDIyNSwgMjM3LCAyNTQsIDIsIDIyNSwgMSwgMjMyLCAyMTQsIDIzNSwgCisgICAgMjEwLCAyLCAyMjAsIDE1MiwgMjI1LCAyMzcsIDI1NCwgMiwgMjI1LCAxLCAyMzIsIDIxNCwgMjM1LCAyMTAsIDIyOCwgNTIsIAorICAgIDIzNSwgMjUwLCAyMTYsIDE5NiwgMjI1LCAxLCAyMzUsIDIxMiwgMjU0LCAyLCAxMTUsIDIyNSwgMTEsIDIyNiwgMTY3LCAKKyAgICAyMjQsIDE4LCAyMzUsIDIxMiwgMjI2LCAxNjcsIDIzNSwgMjEyLCAyLCAxNDAsIDgwLCAyLCAxMDMsIDIzNSwgMjEyLCAyLCAKKyAgICAzMCwgNTAsIDIzNSwgMjEyLCAyLCAyMzUsIDE5OCwgMjM1LCAyMTIsIDIsIDIxNCwgMTc1LCAyMzUsIDIxMiwgMiwgMjI2LCAKKyAgICAxMjMsIDIzNSwgMjEyLCAyLCAyMTQsIDE4MywgMjM1LCA2NiwgMjMzLCA4NSwgNDMsIDIxNSwgMjI2LCAyMjYsIDE2NywgCisgICAgMjEwLCAxNjAsIDE4NywgMjIxLCAyMDEsIDI0OSwgMjA5LCAyMTAsIDE2MCwgMTg3LCAyMjEsIDIwMSwgMjI1LCA1NiwgMjEwLCAKKyAgICAxNjAsIDE4NywgMjIxLCAyMDEsIDIyNCwgMTc2LCA5NiwgNSwgMiwgNCwgMjUwLCAzNiwgNDgsIDk2LCA1LCAyLCAyNTAsIAorICAgIDMxLCAyNTUsIDE1LCA0OCwgOTYsIDUsIDIsIDIxNiwgODksIDQ4LCA5NiwgNSwgMiwgNTksIDUxLCA5NiwgNSwgMiwgMjE2LCAKKyAgICA4OSwgNTEsIDk2LCA1LCAyLCAyMTgsIDY1LCAxMDUsIDk2LCA1LCAyLCA4NSwgMjE1LCAyMjUsIDIzMCwgMTgyLCA1LCAyLCAKKyAgICAyNDksIDIyMCwgNDgsIDIzMCwgMTgyLCA1LCAyLCA1OSwgNTEsIDIzMCwgMTgyLCA1LCAyLCAyNDQsIDE3NSwgMjQ3LCAxMTgsIAorICAgIDIzMCwgMTgyLCA1LCAyLCAyMjIsIDIyOCwgMjQ3LCAxMTgsIDk2LCA1LCAyMzYsIDAsIDQzLCAxNjMsIDI1MCwgMzUsIDk2LCAKKyAgICA1LCAyMzYsIDAsIDQ0LCAxNjMsIDI1MCwgMzUsIDIxMywgMjU0LCAxNzcsIDI0OSwgMTMxLCAyMjQsIDE4MCwgMjMwLCA4NCwgCisgICAgNSwgMiwgNTksIDQ4LCAyMzAsIDg0LCA1LCAyLCAyMTQsIDE4MywgMjIwLCAxNDksIDIyNCwgMTgxLCAyLCAyNTEsIDE3NSwgCisgICAgMjQ5LCAyNTUsIDIxOSwgNzcsIDIyNCwgMTgwLCAyMzAsIDg0LCA1LCAyMzYsIDAsIDQzLCAxNjMsIDI1MCwgMzUsIDIzMCwgCisgICAgODQsIDUsIDIzNiwgMCwgNDQsIDE2MywgMjUwLCAzNSwgMzcsIDIzMCwgODQsIDUsIDIsIDI1MCwgMzEsIDI1NSwgMTQsIAorICAgIDIzMCwgODQsIDUsIDIzNiwgMCwgNTIsIDI1MCwgMzUsIDM3LCAyNDcsIDE2OSwgNTAsIDk2LCA1LCAyMzYsIDAsIDIxNSwgCisgICAgMjI1LCAyMzAsIDE4MiwgNSwgMjM2LCAwLCAyMTUsIDIyNSwgMjMwLCA4NCwgNSwgMjM2LCAwLCAyMTUsIDIyNSwgMjM1LCAKKyAgICAyMDYsIDIyNCwgMTgwLCAyMjIsIDI0MiwgMjM1LCAyMDYsIDIyNCwgMTgwLCAyMTAsIDE2MCwgMTg3LCAyMjMsIDkwLCAyNDksIAorICAgIDIwOSwgMjU0LCAxMzQsIDE3NywgMjQ5LCAxNjUsIDIzNSwgMTk5LCAyLCAyNDcsIDEyMCwgMjE0LCAxNzYsIDIsIDIzMCwgCisgICAgMTgyLCA1MCwgMjE0LCAxNzYsIDIsIDIyNiwgMTIzLCAyMzUsIDE5OSwgMiwgMjI2LCAxMjMsIDIzNSwgMTk5LCAyLCAyMzIsIAorICAgIDE0NiwgMjU0LCAxMTgsIDIxNCwgMTc2LCAyLCAyMzIsIDE0NiwgMjI2LCAxNTgsIDIxNCwgMTc2LCA3NywgMjM1LCAxOTgsIAorICAgIDIzNSwgMTk5LCA3NywgMjE0LCAxNzUsIDIxNCwgMTc2LCA3NywgMjUyLCAxNDEsIDc3LCAyMzUsIDE5OCwgMjM1LCAxOTksIAorICAgIDc3LCAyNTIsIDE0MSwgNzcsIDIxNCwgMTc1LCAyMTQsIDE3NiwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDIsIDIxNCwgMTc1LCAKKyAgICAyMzUsIDE5OSwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDIsIDIzNSwgMTk4LCAyNTAsIDAsIDIxNCwgMTc2LCAyLCAyMjAsIAorICAgIDEzMywgMjUwLCAwLCAyMzUsIDE5OSwgMiwgMjIwLCAxMzMsIDUyLCA0MiwgMjM1LCAxOTgsIDUyLCA0MiwgMjE0LCAxNzUsIAorICAgIDI1MCwgMCwgMjE0LCAxNzYsIDIsIDIyMCwgMTM0LCAyMiwgMjE5LCA3NywgMjI0LCAxODAsIDIzMiwgMTQ2LCAyMiwgMiwgCisgICAgNTksIDQ4LCAyMzIsIDE0NiwgMTc3LCAyLCA1OSwgNDgsIDUyLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDUyLCAyMzIsIDE0NiwgCisgICAgMjI2LCAxNTgsIDExMywgMjM1LCAyMDAsIDIzMiwgMTQ2LCAyNTQsIDExOCwgMTEzLCAyMzUsIDIwMCwgMjMyLCAxNDYsIAorICAgIDIyNiwgMTU4LCAyMTksIDg1LCAyMzMsIDg1LCAyMjYsIDE1OCwgMjE5LCA4NSwgMjMzLCA4NSwgMjU0LCAxMTgsIDIzMiwgCisgICAgMTQ2LCAxNzcsIDIyNiwgMTIxLCAyMzIsIDE0NiwgMjU0LCAxMTgsIDIzMiwgMTQ2LCAyMiwgMiwgMjMwLCAyMjQsIDIxOCwgCisgICAgMTM5LCAyMzIsIDE0NiwgMTc3LCAyLCAyMzAsIDIyNCwgMjE4LCAxMzksIDIzMiwgMTQ2LCAyMiwgMiwgMjAzLCAyNDgsIAorICAgIDE1NiwgMjMyLCAxNDYsIDE3NywgMiwgMjAzLCAyNDgsIDE1NiwgMjMyLCAxNDYsIDIyLCAyLCA1MiwgMjI2LCAxMjMsIDIzMiwgCisgICAgMTQ2LCAyMiwgMiwgMjE0LCAxODMsIDIzMiwgMTQ2LCAyMiwgMiwgNTIsIDIxNCwgMTgzLCA0LCAyMTMsIDI1MSwgMiwgMjE0LCAKKyAgICAxODMsIDIzMiwgMTQ2LCAxNzcsIDIsIDUyLCAyMjYsIDEyMywgMjMyLCAxNDYsIDE3NywgMiwgNTIsIDIxNCwgMTgzLCAyMTAsIAorICAgIDE2MCwgMTg3LCAyNDcsIDEyOSwgMjU0LCA3OSwgMjEwLCAxNjAsIDE4NywgMjIzLCAxNDgsIDI1NCwgNzksIDI0NSwgOTgsIAorICAgIDUsIDIsIDU5LCA1MSwgMjQwLCAxMDQsIDIsIDU5LCA0OCwgMjE1LCAyMTEsIDIwMywgMjUyLCAxNDEsIDIsIDUyLCA2NywgCisgICAgOTEsIDIxNSwgMjExLCAyMDMsIDI1MiwgMTQxLCAyLCAyMTUsIDIxMSwgNjcsIDkxLCAyMTYsIDg5LCAyMjYsIDE2OCwgMiwgCisgICAgNTksIDQ4LCAyMTYsIDg5LCAyMjYsIDE2OCwgMiwgMjIyLCAyMjgsIDI0NywgMTE4LCAyMTksIDE2MiwgMjMwLCAxODIsIAorICAgIDIxOSwgMTYxLCAyNDksIDE5OSwgMiwgNTksIDQ4LCAyNDUsIDk4LCAyLCAyNTMsIDIxNiwgMjU0LCAxNDgsIDEyOCwgMjE2LCAKKyAgICA0MiwgMiwgMjUwLCAzMSwgMjU1LCAxNCwgMjU0LCA0OCwgMTI4LCAxNzcsIDEyOCwgMTExLCAyNDUsIDk4LCA1LCA3NywgOTYsIAorICAgIDUwLCA5NiwgNSwgNzcsIDI0NSwgOTgsIDUwLCAyNDUsIDk4LCA1LCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDUyLCAyNDksIAorICAgIDIyNywgMjQ1LCA5OSwgMTEzLCAyNDksIDE5NCwgMjQ1LCA5OCwgMjE5LCAxNzYsIDEzNCwgMjQ5LCAxOTQsIDI0NSwgOTgsIAorICAgIDIxOSwgMTc2LCAyNDUsIDk4LCA1LCAyLCAxMTMsIDE3MCwgNzcsIDIyLCAxMTMsIDE3MCwgNTEsIDI0NSwgOTQsIDIsIDI0NCwgCisgICAgMTEsIDE3MCwgNDgsIDIzMywgMTUsIDIsIDI1MCwgMzYsIDIzNSwgMjE1LCAyNDIsIDEzMCwgMiwgMjUwLCAzNiwgMjM1LCAKKyAgICAyMTUsIDIzMywgMTUsIDIsIDIyNCwgMTMsIDE2NCwgNDgsIDI0MiwgMTMwLCAyLCAyMjQsIDEzLCAxNjQsIDQ4LCAyMzMsIAorICAgIDE1LCAxNzcsIDIxOSwgOTcsIDEyOCwgMTExLCAyNDIsIDEzMCwgMTc3LCAyMTksIDk3LCAxMjgsIDExMSwgMjMzLCAxNSwgCisgICAgMTc3LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDIsIDU5LCAyMzUsIDIxNSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAKKyAgICAyMTYsIDQyLCAyLCA1OSwgMjM1LCAyMTUsIDIzMywgMTUsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIAorICAgIDI0MiwgMTMwLCAxNzcsIDIxOSwgOTcsIDEyOCwgMjE2LCA0MiwgMiwgNTksIDQ4LCAyMzMsIDE1LCAxNzcsIDIxOSwgOTcsIAorICAgIDEyOCwgMjE2LCA0MiwgMiwgNTksIDc3LCAyMjIsIDI1MSwgMjQyLCAxMzAsIDE3NywgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAKKyAgICAyLCA1OSwgNzcsIDIzMywgNDYsIDIzMywgMTUsIDE3NywgMjU0LCA0OSwgMjQyLCAxMzAsIDE3NywgMjU0LCA0OSwgMjMzLCAKKyAgICAxNSwgMjIsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgMjQyLCAxMzAsIDIyLCAyMTksIDE1MywgMjI4LCA1MiwgCisgICAgMTI4LCAxMTEsIDIzMywgMTUsIDIyLCAyMjgsIDUyLCAyNTQsIDQ5LCAyNDIsIDEzMCwgMjIsIDIyOCwgNTIsIDI1NCwgNDksIAorICAgIDIzMywgMTUsIDc3LCAyNDYsIDExMSwgMTI4LCA3NywgMjQyLCAxMjksIDI0MiwgMTMwLCA3NywgMjQ2LCAxMTEsIDEyOCwgCisgICAgNzcsIDIzMywgMTQsIDIzMywgMTUsIDc3LCAyMTksIDE2MiwgMTc3LCAyNDUsIDk5LCAyNDIsIDEzMCwgNzcsIDIxOSwgMTYyLCAKKyAgICAxNzcsIDI0NSwgOTksIDIzMywgMTUsIDc3LCAyMTksIDE2MiwgNzcsIDI0MiwgMTI5LCAyNDIsIDEzMCwgNzcsIDIxOSwgCisgICAgMTYyLCA3NywgMjMzLCAxNCwgMjMzLCAxNSwgNzcsIDI0MiwgMTMwLCA3NywgMjQ2LCAxMTEsIDI0NSwgOTksIDI0MiwgMTMwLCAKKyAgICA3NywgMjMzLCAxNSwgNzcsIDI0NiwgMTExLCAyNDUsIDk5LCAyMzMsIDE1LCA3NywgMjE5LCA5NywgMTI4LCA3NywgMjQyLCAKKyAgICAxMzAsIDc3LCAyMTksIDk3LCAyNDUsIDk5LCAyNDIsIDEzMCwgNzcsIDIxOSwgOTcsIDEyOCwgNzcsIDIzMywgMTUsIDc3LCAKKyAgICAyMTksIDk3LCAyNDUsIDk5LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNCwgMjE5LCA5NywgMTI4LCAyMTYsIAorICAgIDQyLCAxNzcsIDI0MiwgMTI5LCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjMzLCAxNSwgMiwgNTksIDIzNSwgMjE1LCAKKyAgICAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIDE3NywgMjQyLCAxMzAsIDIsIDU5LCAyMzUsIDIxNSwgMjQ2LCAxMTEsIDEyOCwgCisgICAgMjE2LCA0MiwgMTc3LCAyMzMsIDE0LCAyNDYsIDExMSwgMTI4LCAyMTYsIDQyLCAxNzcsIDI0MiwgMTI5LCAyNDYsIDExMSwgCisgICAgMjE5LCA5NywgMTI4LCAyMTYsIDQyLCAxNzcsIDIzMywgMTQsIDI0NiwgMTExLCAyMTksIDk3LCAxMjgsIDIxNiwgNDIsIAorICAgIDE3NywgMjQyLCAxMjksIDIxOSwgMTYyLCAxNzcsIDIzMywgMTQsIDIxOSwgMTYyLCAxNzcsIDI0MiwgMTI5LCAyMTksIDE2MiwgCisgICAgNzcsIDIzMywgMTUsIDc3LCAyNDUsIDk4LCA1MCwgMjE5LCAxNjIsIDc3LCAyNDIsIDEzMCwgNzcsIDI0NSwgOTgsIDUwLCAKKyAgICA1MiwgMjI5LCA5MSwgMjMzLCAxNCwgNTIsIDIyOSwgOTEsIDI0MiwgMTI5LCA1MiwgMjI5LCA5MSwgMjMzLCAxNSwgMiwgCisgICAgMjE0LCAxODMsIDI0MiwgMTMwLCAyMjYsIDEyMSwgMjMzLCAxNCwgMjQyLCAxMzAsIDI1MiwgMzAsIDIzMywgMTQsIDIzMywgCisgICAgMTUsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MiwgMjQyLCAxMzAsIDI1MCwgMCwgMjUxLCA3OCwgMjQ5LCA5MiwgMjMzLCAKKyAgICAxNSwgMjUwLCAwLCAyNTEsIDc4LCAyNDksIDkzLCA3NywgMjE5LCA5NywgMjQ1LCA5OSwgMjQyLCAxMzAsIDI1MCwgMCwgCisgICAgMjUxLCA3OCwgMjQ5LCA5MywgNzcsIDIxOSwgOTcsIDI0NSwgOTksIDIxOSwgNzgsIDIxNiwgMjAwLCAyMzMsIDgzLCAyMTYsIAorICAgIDIwMCwgMjE5LCA3OCwgMjE2LCAyMDEsIDE3NywgMTI4LCAxMTEsIDIzMywgODMsIDIxNiwgMjAxLCAxNzcsIDEyOCwgMTExLCAKKyAgICAyNDUsIDk4LCA1LCAyLCAyNTEsIDEwOCwgNDgsIDIyNCwgMjAzLCA3NywgMjE5LCAxNTMsIDI0NSwgOTgsIDUwLCAyMTgsIAorICAgIDU2LCA3NywgMjE5LCAxNTMsIDI0NSwgOTgsIDUwLCAyMjQsIDIwMywgNzcsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgCisgICAgMjE4LCA1NiwgNzcsIDIxOSwgMTUzLCAyMjgsIDUyLCAxMjgsIDExMSwgMjI0LCAyMDMsIDc3LCAyNDUsIDk4LCA1MCwgMjE4LCAKKyAgICA1NiwgNzcsIDI0NSwgOTgsIDUwLCAyMjQsIDIwMywgNzcsIDIyOCwgNTIsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjI4LCAKKyAgICA1MiwgMTI4LCAxMTEsIDIyNCwgMjAzLCA3NywgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTgsIDU2LCA3NywgMjU0LCAxNDgsIAorICAgIDEyOCwgMTExLCAyMjQsIDIwMywgNzcsIDIyOCwgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA1NiwgNzcsIDIyOCwgCisgICAgNTIsIDI1NCwgMTQ4LCAxMjgsIDExMSwgNTIsIDIyNCwgMjAyLCA1MiwgMjE4LCA1NSwgMjE4LCA2NCwgMiwgMjQ3LCAxMjAsIAorICAgIDIxOCwgMjIsIDIsIDI0NywgMTIwLCAyMTgsIDY0LCAyLCA5NiwgNSwgNTEsIDIxOCwgMjIsIDIsIDk2LCA1LCA1MSwgMjE4LCAKKyAgICA2NCwgMiwgMjMwLCA4NCwgNSwgNTEsIDIxOCwgMjIsIDIsIDIzMCwgODQsIDUsIDUxLCAyMTgsIDY0LCA2NCwgMTc3LCAxMjgsIAorICAgIDIxNiwgNDIsIDIsIDU5LCA0OCwgMjE4LCAyMiwgNjQsIDE3NywgMTI4LCAyMTYsIDQyLCAyLCA1OSwgNDgsIDIxOCwgNjQsIAorICAgIDY0LCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgMjIsIDY0LCA3NywgMjQ1LCA5OCwgNTAsIDIxOCwgNjQsIDY0LCA3NywgMjE2LCAKKyAgICA4OSwgMjI2LCAxNjcsIDIxOCwgMjIsIDY0LCA3NywgMjE2LCA4OSwgMjI2LCAxNjcsIDIxOCwgNjQsIDY0LCA3NywgMjU0LCAKKyAgICAxNDgsIDEyOCwgMTExLCAyMTgsIDIyLCA2NCwgNzcsIDI1NCwgMTQ4LCAxMjgsIDExMSwgMjE4LCA2NCwgNjQsIDc3LCAyMjgsIAorICAgIDUyLCAxMjgsIDExMSwgMjE4LCAyMiwgNjQsIDc3LCAyMjgsIDUyLCAxMjgsIDExMSwgNDIsIDQzLCAyMDQsIDkzLCAyMjYsIAorICAgIDE2NywgNDIsIDQ0LCAyMDQsIDkzLCAyMjYsIDE2NywgMjUwLCAwLCAyMTgsIDYzLCAyNTAsIDAsIDIxOCwgMjEsIDI1MCwgMCwgCisgICAgMjE4LCA2NCwgMTc3LCAxMjgsIDExMSwgMjUwLCAwLCAyMTgsIDIyLCAxNzcsIDEyOCwgMTExLCAyMTgsIDY0LCA3NywgMjE4LCAKKyAgICAyMSwgMjE4LCAyMiwgNzcsIDIxOCwgNjMsIDIxOCwgNjQsIDc3LCAyMTgsIDYzLCAyMTgsIDIyLCA3NywgMjE4LCAyMSwgCisgICAgMjE4LCAyMiwgMjUyLCAzMCwgMjE4LCA2MywgMjE4LCAyMiwgMjUyLCAzMCwgMjIsIDIzNSwgNjUsIDI1MSwgNzgsIDI0OCwgCisgICAgMTU3LCAyLCAyMTgsIDYzLCAyNDUsIDE3MCwgNjQsIDIyNiwgMTcwLCAyNDYsIDEwMywgMjI1LCA0OCwgMiwgMjE3LCAxMiwgCisgICAgMjE2LCAxMywgMjE1LCAyNDAsIDIzNSwgMTk4LCAyNDQsIDIxLCAyMjgsIDY1LCAyMTksIDI1MSwgNDMsIDIxNywgODcsIAorICAgIDIxOSwgMjUxLCAxMjQsIDIxNywgODcsIDIxOSwgMjUxLCAxMjAsIDIxNywgODcsIDIyNSwgMTcyLCAyLCAyMjIsIDkxLCA2NywgCisgICAgMjUyLCAxNDEsIDIxNSwgMjExLCA0NCwgMjE1LCA5MywgNTIsIDY3LCAyNTIsIDE0MSwgNDMsIDIxNSwgOTMsIDY3LCAyNTIsIAorICAgIDE0MSwgNTIsIDQzLCAyMTUsIDkzLCA1MiwgNjcsIDI1MiwgMTQxLCA1MiwgNDMsIDIxNSwgOTMsIDE5OSwgMjQ4LCAxNTcsIAorICAgIDI0MywgMjQzLCA0MywgMjMxLCA2MywgNjQsIDUyLCAyMTMsIDIzOSwgMjE5LCAyNTEsIDEyNCwgMjE3LCA4OCwgMiwgMjI2LCAKKyAgICAxMjMsIDIxOSwgMjUxLCAxMjAsIDIxNywgODgsIDIsIDIxNCwgMTgzLCAyMTksIDI1MSwgMTIwLCAyMTcsIDg4LCA3NywgCisgICAgMjE5LCAyNTEsIDEyNCwgMjE3LCA4NywgNTIsIDEyNCwgMjE3LCA4NywgNTIsIDEyMCwgMjE3LCA4NywgNTIsIDIxOCwgMTAzLCAKKyAgICAyMjgsIDUyLCA1MCwgMjIzLCA0OSwgNTIsIDIxOCwgMTAzLCAyMjgsIDUyLCA1MCwgMjQ3LCAxMzgsIDIyOCwgNTIsIDI0NywgCisgICAgMTc1LCAyLCAyMjMsIDQ5LCAyMjksIDEwMSwgMjE5LCA5NSwgNjcsIDIzMiwgMjE0LCAyLCAyNTAsIDM2LCA0OCwgNjcsIAorICAgIDIzMiwgMjE0LCAyLCAyNTAsIDM2LCA1MSwgMTI0LCAyMTcsIDg4LCAyLCAyNTAsIDM2LCA1MSwgMjI2LCA4LCAyLCAyMDMsIAorICAgIDkxLCAyMjYsIDgsIDIsIDIxNiwgODksIDIyNiwgMTY3LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAyNTEsIDI0NCwgMjIzLCAKKyAgICA5MSwgMjE1LCAyMTEsIDY3LCAyNTIsIDE0MSwgMiwgMjAzLCA5MSwgMjE1LCAyMTEsIDI0OSwgMjI3LCAyMjYsIDE2NywgCisgICAgMjE1LCAyMTEsIDIyOSwgOTEsIDIzMywgMTQsIDIxNSwgMjExLCAyMjksIDkxLCAyNDIsIDEyOSwgMjQ2LCAxMTEsIDIxOSwgCisgICAgOTcsIDIzMywgMTUsIDE3NywgMTI4LCAxMTEsIDI0NiwgMTExLCAyMTksIDk3LCAyNDIsIDEzMCwgMTc3LCAxMjgsIDExMSwgCisgICAgMjE1LCAyMTEsIDIxOSwgNDcsIDI1MSwgMjQ0LCAyMjMsIDkxLCAyMzMsIDg1LCAyMTUsIDIxMSwgNjcsIDI1MiwgMTQxLCAKKyAgICAyMjYsIDE2NywgNTIsIDIxOSwgNDcsIDIyNiwgMTY3LCA3MSwgNjcsIDEzMCwgMjMwLCAyNCwgNzEsIDY3LCAxMzAsIDIyOCwgCisgICAgNTYsIDI0NSwgMjIwLCA3MSwgNzQsIDIyOCwgNTYsIDIxMiwgOSwgNzEsIDc0LCAyMTksIDI4LCAyNDUsIDIyMCwgNzEsIDc0LCAKKyAgICAyMTksIDI4LCAyMTIsIDksIDcxLCA3NCwgNDMsIDQ0LCA3MSwgNzQsIDE0MCwgODUsIDc0LCAyMTQsIDE1MywgODUsIDc0LCAKKyAgICAyNDYsIDEwNCwgODUsIDc0LCAyMjgsIDU2LCAyNDUsIDIyMCwgODUsIDc0LCAyMjgsIDU2LCAyMTIsIDksIDg1LCA3NCwgCisgICAgMjE5LCAyOCwgMjQ1LCAyMjAsIDg1LCA3NCwgMjE5LCAyOCwgMjEyLCA5LCA4NSwgNzQsIDQzLCA0NCwgODUsIDc0LCAxMjAsIAorICAgIDEyNCwgODUsIDc0LCA5NywgODAsIDIsIDIxNiwgNzcsIDI0NiwgMTAzLCA5NywgODAsIDIsIDIxNiwgNzcsIDIxNCwgMTUyLCAKKyAgICAxNDAsIDgwLCAyLCAyMTYsIDc3LCAyNDYsIDEwMywgMTQwLCA4MCwgMiwgMjE2LCA3NywgMjE0LCAxNTIsIDQyLCAyLCAyMTYsIAorICAgIDE0LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjUxLCAxNzUsIDE2MywgMjUxLCAyMjEsIDQyLCAyLCAyMTQsIDE2MCwgNDQsIAorICAgIDI0NywgMjU1LCAxNjMsIDI1MSwgMjIxLCA0MiwgMiwgMjMyLCAxMDgsIDQzLCAyNDcsIDI1NSwgMTYzLCAyNTEsIDIyMSwgCisgICAgMjQ3LCAyNDksIDIsIDQzLCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgMiwgNDQsIDE2MywgMjUxLCAyMjEsIDI0NywgMjQ5LCAKKyAgICAyLCAyMTYsIDE0LCAxNjMsIDI1MSwgMjIxLCAyNDcsIDI0OSwgMiwgMjUxLCAxNzUsIDE2MywgMjUxLCAyMjEsIDI0NiwgCisgICAgMTE4LCAyMTgsIDIzNCwgODUsIDIzMywgODUsIDIxOCwgMjM0LCA3MSwgMjMzLCA4NSwgMjE4LCAyMzQsIDg1LCAyMTMsIAorICAgIDE4NywgNCwgMjE4LCAyMzQsIDcxLCAyMTMsIDE4NywgNCwgMjE4LCAyMzQsIDg1LCAyMjUsIDE5MCwgNzEsIDIyNSwgMTkwLCAKKyAgICA3MSwgMjQxLCAxOTMsIDg1LCAyNDEsIDE5MywgMjAzLCA4NSwgMjQxLCAxOTMsIDg1LCAyMzMsIDg1LCAyNTAsIDM1LCA4NSwgCisgICAgMjMxLCA4MiwgMjQ3LCAyNDgsIDcxLCAyMzEsIDgyLCAyNDcsIDI0OCwgODUsIDIzMSwgODIsIDIzMiwgMTA0LCA3MSwgMjMxLCAKKyAgICA4MiwgMjMyLCAxMDQsIDg1LCA0LCAyNDcsIDI0OCwgODUsIDQsIDIzMiwgMTA0LCA3MSwgNCwgMjMyLCAxMDQsIDg1LCAyMDMsIAorICAgIDI0NSwgMTY0LCA3MSwgMjAzLCAyNDUsIDE2NCwgODUsIDY3LCAyNDUsIDE2NCwgNzEsIDY3LCAyNDUsIDE2NCwgNDMsIDgwLCAKKyAgICAyLCA0LCAyNTAsIDM1LCAxMzQsIDE0MCwgMjUzLCAyNDcsIDQzLCA4MCwgMiwgMzcsIDIyNSwgMjIsIDE5OSwgMTQwLCAyMTgsIAorICAgIDIzMCwgNzQsIDE0MCwgMjE1LCA1OCwgODAsIDIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgNTIsIDY3LCA5MSwgCisgICAgMTQwLCAyMTUsIDU4LCA4MCwgMjQzLCAyNDMsIDEzMCwgMTQwLCAyMTUsIDU4LCAyMTUsIDIxMSwgMjQ4LCAxNTcsIDc0LCAKKyAgICAxNDAsIDgwLCAyLCAyNDYsIDExOCwgMjE4LCAxMzksIDE0MCwgODAsIDIsIDIxNywgNzgsIDIsIDY3LCA5MSwgMTQwLCA4MCwgCisgICAgMiwgMjE3LCA3OCwgMiwgNTIsIDY3LCA5MSwgMTQwLCAyMTUsIDU4LCA4MCwgMiwgMjE3LCA3NywgMTQwLCAyMTUsIDU4LCAKKyAgICA4MCwgMiwgMjE3LCA3OCwgMiwgNjcsIDkxLCAxNDAsIDIxNSwgNTgsIDgwLCAyLCAyMTcsIDc4LCAyLCA1MiwgNjcsIDkxLCAKKyAgICAxNDAsIDgwLCAyMTYsIDEzOSwgMjExLCAxNzgsIDIxMiwgMzYsIDgwLCAyMjUsIDcsIDI0NywgMTk1LCAyMzMsIDQ2LCAyNDUsIAorICAgIDk4LCA1LCA3NywgMTQwLCA3NCwgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAxNjgsIDc3LCAxNDAsIDc0LCAxNDAsIDgwLCA3NywgCisgICAgMjIzLCA1MCwgMjU0LCAxNDgsIDEyOCwgMTExLCA5NywgODAsIDIxNiwgMTM5LCAyNDIsIDEyOSwgOTcsIDgwLCAyMTYsIAorICAgIDEzOSwgMjE4LCAyMSwgMTQwLCAyMjQsIDI0LCA3NCwgOTcsIDIyNCwgMjQsIDc0LCAyMjMsIDUwLCAyMTYsIDg5LCAyMjYsIAorICAgIDE2OCwgNzcsIDk3LCA3NCwgOTcsIDgwLCA3NywgMjIzLCA1MCwgMjU0LCAxNDgsIDEyOCwgMTExLCAyMTYsIDg5LCAyMjYsIAorICAgIDE2OCwgNzcsIDE0MCwgNzQsIDE0MCwgODAsIDc3LCAyNTQsIDE0OCwgMTI4LCAxMTEsIDE0MCwgODAsIDc3LCAyMjMsIDUwLCAKKyAgICAyMTYsIDg5LCAyMjYsIDE2NywgOTcsIDgwLCA3NywgMjIzLCA1MCwgMjE2LCA4OSwgMjI2LCAxNjcsIDcxLCAyMzEsIDgyLCAKKyAgICAyMTgsIDE1NiwgODUsIDQsIDIxOCwgMTU2LCA3MSwgNCwgMjE4LCAxNTYsIDg1LCAyMjIsIDI0NywgMjI1LCAxOTAsIDcxLCAKKyAgICAyMjIsIDI0NywgMjI1LCAxOTAsIDExNCwgMjMzLCA4NSwgMjUwLCAzNSwgMTE0LCAyMjYsIDEyNCwgMiwgMjI2LCAxMjQsIAorICAgIDIzNSwgMjE1LCAxMTQsIDI1MCwgMzYsIDIsIDI1MCwgMzYsIDIzNSwgMjE1LCAxMTQsIDI1MCwgMzUsIDExNCwgMzcsIDIyMSwgCisgICAgMjU0LCAxNDUsIDYsIDEsIDI1MywgMTU5LCAxNDUsIDYsIDEsIDI1MSwgMTE3LCAxNDUsIDYsIDEsIDIxMywgMjUzLCAxNDUsIAorICAgIDYsIDEsIDI0MiwgMTg1LCAxNDUsIDYsIDEsIDI0NywgMTQwLCAxNDUsIDYsIDEsIDIxMSwgMjEsIDE0NSwgNiwgMSwgMjEwLCAKKyAgICA2OCwgMTQ1LCA2LCAxLCAyNDYsIDM0LCAxNDUsIDYsIDEsIDIxMCwgOTEsIDE0NSwgNiwgMSwgMjM1LCAxNDgsIDE0NSwgNiwgCisgICAgMSwgNjUsIDIzNSwgMTQ4LCAxNDUsIDYsIDEsIDczLCAxNDUsIDYsIDEsIDI0NywgMTYwLCAxNDUsIDYsIDEsIDIzNCwgMjQwLCAKKyAgICAxNDUsIDYsIDEsIDIzMiwgMTg2LCAxNDUsIDYsIDEsIDIzMCwgMjksIDE0NSwgNiwgMSwgMjI5LCAxOTEsIDE0NSwgNiwgMSwgCisgICAgMjI2LCAxODUsIDE0NSwgNiwgMSwgMjI1LCA0LCAxNDUsIDYsIDEsIDIyMiwgMjI3LCAxNDUsIDYsIDEsIDIxOSwgODMsIAorICAgIDE0NSwgNiwgMSwgMjE1LCA4MSwgMTQ1LCA2LCAxLCAyMTQsIDIwMSwgMTQ1LCA2LCAxLCAyNDMsIDI0NiwgMTQ1LCA2LCAxLCAKKyAgICAyNDEsIDE5OSwgMTQ1LCA2LCAxLCAyMjYsIDEzNSwgMTQ1LCA2LCAxLCAyMjUsIDIyMSwgMTQ1LCA2LCAxLCAyMTksIDIyOCwgCisgICAgMTQ1LCA2LCAxLCAyMTUsIDE2NywgMTQ1LCA2LCAxLCAyNTAsIDc1LCAxNDUsIDYsIDEsIDIyMCwgMTAyLCAxNDUsIDYsIDEsIAorICAgIDIxMSwgMjcsIDE0NSwgNiwgMSwgMjExLCAyOSwgMTQ1LCA2LCAxLCAyMTEsIDU3LCAxNDUsIDYsIDEsIDIxOCwgMjUzLCAKKyAgICAxNjIsIDE0NSwgNiwgMSwgMjEwLCAyMTIsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODMsIDE0NSwgNiwgMSwgNCwgMjEwLCAxODQsIAorICAgIDIsIDIxNywgNzcsIDE0NSwgNiwgMSwgMjEwLCAyNDQsIDE0NSwgNiwgMSwgMjM1LCAxODQsIDQsIDIxMCwgMTgzLCAxNDUsIAorICAgIDYsIDEsIDI1MSwgMjQ5LCAyMTAsIDE4MywgMTQ1LCA2LCAxLCAyMzUsIDE4NCwgMjUxLCAyNDksIDIxMCwgMTgzLCAxNDUsIAorICAgIDYsIDEsIDI0NCwgODIsIDE0NSwgNiwgMSwgMjM1LCAxNDYsIDE0NSwgNiwgMSwgMjE5LCAyMjcsIDE0NSwgNiwgMSwgMjE1LCAKKyAgICAyMDIsIDYxLCAxNDUsIDYsIDEsIDIzMywgNzUsIDIzMCwgMjksIDE0NSwgNCwgMSwgMjUzLCAxNTksIDE0NSwgNCwgMSwgCisgICAgMjUxLCAxMTcsIDE0NSwgNCwgMSwgMjEzLCAyNTMsIDE0NSwgNCwgMSwgMjQyLCAxODUsIDE0NSwgNCwgMSwgMjQ3LCAxNDAsIAorICAgIDE0NSwgNCwgMSwgMjExLCAyMSwgMTQ1LCA0LCAxLCAyMTAsIDY4LCAxNDUsIDQsIDEsIDI0NiwgMzQsIDE0NSwgNCwgMSwgCisgICAgMjEwLCA5MSwgMTQ1LCA0LCAxLCAyMzUsIDE0OCwgMTQ1LCA0LCAxLCA2NSwgMjM1LCAxNDgsIDE0NSwgNCwgMSwgNzMsIAorICAgIDE0NSwgNCwgMSwgMjQ3LCAxNjAsIDE0NSwgNCwgMSwgMjM0LCAyNDAsIDE0NSwgNCwgMSwgMjMyLCAxODYsIDE0NSwgNCwgMSwgCisgICAgMjMwLCAyOSwgMTQ1LCA0LCAxLCAyMjksIDE5MSwgMTQ1LCA0LCAxLCAyMjYsIDE4NSwgMTQ1LCA0LCAxLCAyMjUsIDQsIAorICAgIDE0NSwgNCwgMSwgMjIyLCAyMjcsIDE0NSwgNCwgMSwgMjE5LCA4MywgMTQ1LCA0LCAxLCAyMTUsIDgxLCAxNDUsIDQsIDEsIAorICAgIDIxNCwgMjAxLCAxNDUsIDQsIDEsIDI0MywgMjQ2LCAxNDUsIDQsIDEsIDI0MSwgMTk5LCAxNDUsIDQsIDEsIDIyNiwgMTM1LCAKKyAgICAxNDUsIDQsIDEsIDIyNSwgMjIxLCAxNDUsIDQsIDEsIDIxOSwgMjI4LCAxNDUsIDQsIDEsIDIxNSwgMTY3LCAxNDUsIDQsIDEsIAorICAgIDI1MCwgNzUsIDE0NSwgNCwgMSwgMjIwLCAxMDIsIDE0NSwgNCwgMSwgMjExLCAyNywgMTQ1LCA0LCAxLCAyMTEsIDI5LCAKKyAgICAxNDUsIDQsIDEsIDIxMSwgNTcsIDE0NSwgNCwgMSwgMjE4LCAyNTMsIDE2MiwgMTQ1LCA0LCAxLCAyMTAsIDIxMiwgMTQ1LCAKKyAgICA0LCAxLCA0LCAyMTAsIDE4MywgMTQ1LCA0LCAxLCA0LCAyMTAsIDE4NCwgMiwgMjE3LCA3NywgMTQ1LCA0LCAxLCAyMTAsIAorICAgIDI0NCwgMTQ1LCA0LCAxLCAyMzUsIDE4NCwgNCwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjUxLCAyNDksIDIxMCwgMTgzLCAKKyAgICAxNDUsIDQsIDEsIDIzNSwgMTg0LCAyNTEsIDI0OSwgMjEwLCAxODMsIDE0NSwgNCwgMSwgMjQ0LCA4MiwgMTQ1LCA0LCAxLCAKKyAgICAyMzUsIDE0NiwgMTQ1LCA0LCAxLCAyMTksIDIyNywgMTQ1LCA0LCAxLCAyMTUsIDIwMiwgNjEsIDE0NSwgNCwgMSwgMjMzLCAKKyAgICA3NSwgMjMwLCAyOSwgNywgNiwgMSwgMjMzLCAxNDksIDIsIDUyLCAxMzAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCA1MiwgCisgICAgMTMwLCA3LCA2LCAxLCAyMzMsIDE0OSwgMiwgMjMwLCAyMjQsIDE4MiwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDkxLCA3LCA2LCAKKyAgICAxLCAyMjMsIDIyNCwgMiwgMjE3LCA3NywgNywgNCwgMSwgMTE1LCAyLCA5MSwgNywgNCwgMSwgMjE3LCAxNTMsIDIsIDI0NywgCisgICAgMjU1LCA5MSwgNywgNiwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjQyLCA2MSwgMiwgMjQ4LCAzOSwgNywgCisgICAgNiwgMSwgMjM1LCAyNCwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjM1LCAyNCwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjEwLCAKKyAgICAxNjAsIDIsIDI0OCwgMzksIDcsIDQsIDEsIDIxMCwgMTYwLCAyLCAyNDgsIDM5LCA3LCA2LCAxLCAyNTQsIDE0MywgNywgNiwgCisgICAgMSwgMjMyLCA1MCwgMiwgMTAzLCA3LCA2LCAxLCAyMTUsIDk0LCA2MSwgNywgNiwgMSwgMjE1LCA5NCwgMjU0LCAxNDMsIDcsIAorICAgIDQsIDEsIDIxNCwgMTA2LCAyLCA0NCwgMTAzLCA3LCA2LCAxLCAyMTIsIDk5LCAyLCAxMDMsIDcsIDQsIDEsIDIxMiwgOTksIAorICAgIDIsIDEwMywgNywgNCwgMSwgMjE0LCAxMDYsIDIsIDI0OSwgMTAwLCA3LCA2LCAxLCAxNjMsIDI0MiwgNjAsIDcsIDQsIDEsIAorICAgIDE2MywgMjQyLCA2MCwgNywgNCwgMSwgMjE3LCA3NSwgMjI1LCAxMzMsIDcsIDQsIDEsIDE2MCwgMiwgMjI4LCA1MCwgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjIzLCAyMjQsIDIsIDIxNywgNzcsIDcsIDQsIDEsIDE0NCwgMiwgMTIxLCAyMjIsIDIzNCwgMjM1LCAKKyAgICAyMTUsIDcsIDEsIDQsIDYsIDIxNSwgOTQsIDc1LCA3LCAyMTgsIDY1LCA0LCAxLCAyMzUsIDE0NCwgNTgsIDEsIDYsIDIxNCwgCisgICAgMTA1LCA3LCA2LCAxLCAyMjIsIDkyLCAyLCAyMTcsIDI1MCwgMjE3LCA3NywgNywgNiwgMSwgMjEwLCAxNjAsIDIsIDIxNywgCisgICAgMjUwLCAyMTcsIDc3LCA4MSwgNiwgMSwgMjU0LCAxNjQsIDgxLCA0LCAxLCAyNTQsIDE2NCwgODEsIDYsIDEsIDIxMywgMTczLCAKKyAgICA4MSwgNCwgMSwgMjEzLCAxNzMsIDgxLCA2LCAxLCAyNDMsIDEwNywgODEsIDQsIDEsIDI0MywgMTA3LCA4MSwgNiwgMSwgCisgICAgMjQ4LCAxOTEsIDgxLCA0LCAxLCAyNDgsIDE5MSwgODEsIDYsIDEsIDI0NSwgMTk0LCA4MSwgNCwgMSwgMjQ1LCAxOTQsIDgxLCAKKyAgICA2LCAxLCAyMTksIDMzLCA4MSwgNCwgMSwgMjE5LCAzMywgODEsIDYsIDEsIDIxMCwgMTAxLCA4MSwgNCwgMSwgMjEwLCAxMDEsIAorICAgIDgxLCA2LCAxLCAyNDEsIDI0OCwgODEsIDQsIDEsIDI0MSwgMjQ4LCA4MSwgNiwgMSwgMjE2LCAxNzcsIDgxLCA0LCAxLCAKKyAgICAyMTYsIDE3NywgODEsIDYsIDEsIDI0MCwgMTE2LCA4MSwgNCwgMSwgMjQwLCAxMTYsIDgxLCA2LCAxLCAyMzQsIDIyNywgODEsIAorICAgIDQsIDEsIDIzNCwgMjI3LCA4MSwgNiwgMSwgMjMzLCA3MiwgODEsIDQsIDEsIDIzMywgNzIsIDgxLCA2LCAxLCAyMzAsIDIzMCwgCisgICAgODEsIDQsIDEsIDIzMCwgMjMwLCA4MSwgNiwgMSwgMjI4LCAyMzMsIDgxLCA0LCAxLCAyMjgsIDIzMywgODEsIDYsIDEsIAorICAgIDIzMywgMjMzLCA4MSwgNCwgMSwgMjMzLCAyMzMsIDgxLCA2LCAxLCA3NiwgODEsIDQsIDEsIDc2LCA4MSwgNiwgMSwgMjI1LCAKKyAgICAxMDgsIDgxLCA0LCAxLCAyMjUsIDEwOCwgODEsIDYsIDEsIDIyMiwgMjExLCA4MSwgNCwgMSwgMjIyLCAyMTEsIDgxLCA2LCAKKyAgICAxLCAyMTksIDE2NSwgODEsIDQsIDEsIDIxOSwgMTY1LCA4MSwgNiwgMSwgMjE3LCA0MSwgODEsIDQsIDEsIDIxNywgNDEsIAorICAgIDgxLCA2LCAxLCAyMTQsIDIyOSwgODEsIDQsIDEsIDIxNCwgMjI5LCA4MSwgNiwgMSwgMjQ0LCAxMjEsIDgxLCA0LCAxLCAKKyAgICAyNDQsIDEyMSwgODEsIDYsIDEsIDIzNCwgMTEyLCA4MSwgNCwgMSwgMjM0LCAxMTIsIDgxLCA2LCAxLCAyMjQsIDE2MSwgODEsIAorICAgIDQsIDEsIDIyNCwgMTYxLCA4MSwgNiwgMSwgMjI2LCAxNzgsIDgxLCA0LCAxLCAyMjYsIDE3OCwgODEsIDYsIDEsIDI0NywgCisgICAgMjUzLCAyNTQsIDE3MCwgODEsIDQsIDEsIDI0NywgMjUzLCAyNTQsIDE3MCwgODEsIDYsIDEsIDU1LCA4MSwgMjU0LCAxOTYsIAorICAgIDgxLCA0LCAxLCA1NSwgODEsIDI1NCwgMTk2LCA4MSwgNiwgMSwgMjQ5LCAxMTUsIDI0NSwgMTk0LCA4MSwgNCwgMSwgMjQ5LCAKKyAgICAxMTUsIDI0NSwgMTk0LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDIzNCwgMjI3LCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDIzNCwgCisgICAgMjI3LCA4MSwgNiwgMSwgMjQ3LCAyNTMsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDIyOCwgMjMzLCA4MSwgNiwgCisgICAgMSwgMjQ5LCAxMTUsIDIyOCwgMjMzLCA4MSwgNCwgMSwgMjQ5LCAxMTUsIDIyOCwgMjMzLCA4MSwgNiwgMSwgNTUsIDgxLCAKKyAgICAyMjYsIDE3OCwgODEsIDQsIDEsIDU1LCA4MSwgMjI2LCAxNzgsIDgxLCA2LCAxLCAyMjEsIDI0NiwgODEsIDQsIDEsIDIyMSwgCisgICAgMjQ2LCA4MSwgNiwgMSwgMjQ5LCAxMjgsIDIyMCwgNTUsIDgxLCA0LCAxLCAyNDksIDEyOCwgMjIwLCA1NSwgODEsIDYsIDEsIAorICAgIDU1LCA4MSwgMjIwLCA1NSwgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCA1NSwgODEsIDYsIDEsIDU1LCA4MSwgMjQ1LCA3NSwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjQ1LCA3NSwgODEsIDYsIDEsIDI1NCwgMTgyLCAyMzQsIDExNywgODEsIDQsIDEsIDI1NCwgCisgICAgMTgyLCAyMzQsIDExNywgODEsIDYsIDEsIDI0NywgMjUzLCAyNDEsIDQ1LCA4MSwgNCwgMSwgMjQ3LCAyNTMsIDI0MSwgNDUsIAorICAgIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgNDUsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgNDUsIDgxLCA2LCAxLCA1NSwgODEsIAorICAgIDE2MiwgODEsIDQsIDEsIDU1LCA4MSwgMTYyLCA4MSwgNiwgMSwgMjMzLCAxNDgsIDE2MiwgODEsIDQsIDEsIDIzMywgMTQ4LCAKKyAgICAxNjIsIDgxLCA2LCAxLCA1NSwgODEsIDI0MSwgMjE3LCA4MSwgNCwgMSwgNTUsIDgxLCAyNDEsIDIxNywgODEsIDYsIDEsIAorICAgIDU1LCA4MSwgMjQxLCAyNTEsIDgxLCA0LCAxLCA1NSwgODEsIDI0MSwgMjUxLCA4MSwgNiwgMSwgNTUsIDgxLCAyNDMsIDEwMiwgCisgICAgODEsIDQsIDEsIDU1LCA4MSwgMjQzLCAxMDIsIDgxLCA2LCAxLCA1NSwgODEsIDI0NywgMTYzLCA4MSwgNCwgMSwgNTUsIDgxLCAKKyAgICAyNDcsIDE2MywgODEsIDYsIDEsIDU1LCA4MSwgMjIwLCAyMiwgODEsIDQsIDEsIDU1LCA4MSwgMjIwLCAyMiwgODEsIDYsIDEsIAorICAgIDU1LCAyMjcsIDIwOCwgMjIwLCAyMiwgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjIwLCAyMiwgODEsIDYsIDEsIDU1LCAKKyAgICAyMjcsIDIwOCwgMjI5LCAyNywgODEsIDQsIDEsIDU1LCAyMjcsIDIwOCwgMjI5LCAyNywgODEsIDYsIDEsIDU1LCAyMjcsIAorICAgIDIwOCwgMjI3LCAxNDgsIDgxLCA0LCAxLCA1NSwgMjI3LCAyMDgsIDIyNywgMTQ4LCA4MSwgNiwgMSwgNTUsIDIyNywgMjA4LCAKKyAgICAyMTIsIDM3LCA4MSwgNCwgMSwgNTUsIDIyNywgMjA4LCAyMTIsIDM3LCA4MSwgMTYsIDIzNCwgMjQ2LCA4MSwgMTYsIDIzMCwgCisgICAgMjMxLCAyMjIsIDIxMSwgODEsIDE2LCAyMjUsIDEwOSwgMjIyLCAyMTEsIDgxLCAxNiwgMjE4LCAxNDcsIDgxLCAxNiwgMjE3LCAKKyAgICA0MiwgMjIyLCAyMTEsIDgxLCAxNiwgMjM0LCAxMTMsIDIyMiwgMjExLCA4MSwgMTYsIDIyMCwgMjMsIDIxOSwgMTY1LCA4MSwgCisgICAgNiwgMSwgMjQ5LCAxMTUsIDIyMCwgNTUsIDgxLCA0LCAxLCAyNDksIDExNSwgMjIwLCA1NSwgODEsIDYsIDEsIDI0OSwgMTE1LCAKKyAgICAyNDMsIDEwMiwgODEsIDQsIDEsIDI0OSwgMTE1LCAyNDMsIDEwMiwgODEsIDM4LCAyMjgsIDIzNCwgNDgsIDgxLCAzOCwgCisgICAgMjE4LCAyNDcsIDI1MywgMjI0LCA4MSwgMzgsIDIxOCwgMjQ3LCAyMzMsIDIxLCA4MSwgNiwgMSwgMjUxLCAxOTksIDIzNCwgCisgICAgMTE3LCA4MSwgNCwgMSwgMjUxLCAxOTksIDIzNCwgMTE3LCA4MSwgNTUsIDIyNywgMjA4LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDgxLCA1NSwgMjI3LCAyMDgsIDI0NywgMTk3LCAyMjQsIDEzLCA3OCwgODEsIDU1LCAyMjcsIDIwOCwgMjM1LCAyMzcsIDIyNCwgCisgICAgMTMsIDc4LCA4MSwgNTUsIDIyNywgMjA4LCAyMTMsIDI0MSwgMjQ3LCAxNzIsIDgxLCAyNDQsIDIsIDEyMywgMjQyLCAyNywgCisgICAgODEsIDI0MywgMjI5LCAyMTgsIDEyOSwgODEsIDIzMCwgMTI0LCAyNDcsIDE3MiwgOTgsIDQsIDEsIDI1NCwgMTIzLCA5OCwgCisgICAgNCwgMSwgMjUyLCAxNTIsIDk4LCA0LCAxLCAyNDMsIDEwNiwgOTgsIDQsIDEsIDI0NywgMTI4LCA5OCwgNCwgMSwgMjQ1LCAKKyAgICAxNTAsIDk4LCA0LCAxLCAyMTMsIDE2MCwgOTgsIDQsIDEsIDIxMCwgODksIDk4LCA0LCAxLCAyMTcsIDYwLCA5OCwgNCwgMSwgCisgICAgMjM1LCAyNTUsIDk4LCA0LCAxLCAyMzQsIDIzNCwgOTgsIDQsIDEsIDIzMywgODEsIDk4LCA0LCAxLCAyMzEsIDE4NSwgOTgsIAorICAgIDQsIDEsIDIyOSwgMTk1LCA5OCwgNCwgMSwgMjI2LCAxOTYsIDk4LCA0LCAxLCAyMjYsIDE3LCA5OCwgNCwgMSwgMjEwLCA3OCwgCisgICAgOTgsIDQsIDEsIDIyMywgMTcxLCA5OCwgNCwgMSwgMjIxLCAyNDMsIDk4LCA0LCAxLCAyMTcsIDUwLCA5OCwgNCwgMSwgMjE0LCAKKyAgICAxOTAsIDk4LCA0LCAxLCAyMjUsIDE0MCwgOTgsIDQsIDEsIDIzNCwgMTIxLCA5OCwgNCwgMSwgMjQyLCAyNDEsIDk4LCA0LCAKKyAgICAxLCAyMjQsIDczLCA5OCwgNCwgMSwgMjIwLCAyMCwgOTgsIDQsIDEsIDI1MCwgOTcsIDk4LCA0LCAxLCAyNTEsIDcsIDk4LCAKKyAgICA0LCAxLCAyMzUsIDEwMCwgOTgsIDQsIDEsIDI1MCwgNDAsIDk4LCA0LCAxLCAyNTAsIDE0MywgOTgsIDQsIDEsIDIxMSwgCisgICAgMTYzLCA5OCwgNCwgMSwgMjM1LCAxMTEsIDk4LCA0LCAxLCAyNDIsIDQzLCA5OCwgNCwgMSwgMjQxLCAyMzgsIDk4LCA0LCAxLCAKKyAgICAyNDEsIDE3NSwgOTgsIDQsIDEsIDIxMiwgMjIsIDk4LCA0LCAxLCAyNDIsIDQsIDk4LCA0LCAxLCAyNDEsIDY1LCA5OCwgNCwgCisgICAgMSwgMjEwLCAyNDYsIDk4LCA0LCAxLCAyNTQsIDIzMiwgMjE2LCAxMDgsIDEsIDE5MSwgMjE2LCAxMDgsIDEsIDIxMSwgOTksIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDk4LCAyMTYsIDEwOCwgMSwgMjExLCA4OCwgMjE2LCAxMDgsIDEsIDIxMSwgODYsIDIxNiwgCisgICAgMTA4LCAxLCAyNTIsIDMyLCAyNTUsIDE2LCAyMTEsIDgxLCAyMTYsIDEwOCwgMSwgMjExLCA4MSwgMjE2LCAxMDgsIDEsIAorICAgIDIxMSwgOTYsIDIxNiwgMTA4LCAxLCAyMTEsIDkzLCAyMTYsIDEwOCwgMSwgMjExLCA5NSwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgOTQsIDIxNiwgMTA4LCAxLCAyMTEsIDEyLCAyMTYsIDEwOCwgMSwgMjExLCA5MCwgMjE2LCAxMDgsIDEsIDIxMSwgNzksIAorICAgIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCA3OSwgMjE2LCAxMDgsIDEsIDIxMSwgNzYsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDg0LCAyMTYsIDEwOCwgMSwgMjUyLCAzMiwgMjU1LCAxNiwgMjExLCA4NCwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIAorICAgIDg0LCAyMTYsIDEwOCwgMSwgMjExLCA4MywgMjE2LCAxMDgsIDEsIDIxMSwgMTAzLCAyMTYsIDEwOCwgMSwgMjExLCA3NywgCisgICAgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDc3LCAyMTYsIDEwOCwgMSwgMjExLCA2NiwgMjE2LCAxMDgsIDEsIDIxNSwgCisgICAgMTE1LCAyMTEsIDY2LCAyMTYsIDEwOCwgMSwgMjExLCA4LCAyMTYsIDEwOCwgMSwgMjExLCA0OSwgMjE2LCAxMDgsIDEsIAorICAgIDI1NCwgMjA3LCAyMTEsIDQ5LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgNDksIDIxNiwgMTA4LCAxLCAyMTEsIDc1LCAKKyAgICAyMTYsIDEwOCwgMSwgMjExLCA3NCwgMjE2LCAxMDgsIDEsIDIxMSwgNzEsIDIxNiwgMTA4LCAxLCAyMTUsIDExNSwgMjExLCAKKyAgICA4NSwgMjE2LCAxMDgsIDEsIDIxNSwgMTE1LCAyMTEsIDY5LCAyMTYsIDEwOCwgMSwgMjExLCA2NywgMjE2LCAxMDgsIDEsIAorICAgIDIxMCwgMjEyLCAyMTYsIDEwOCwgMSwgMjExLCA2NCwgMjE2LCAxMDgsIDEsIDIxMSwgNjMsIDIxNiwgMTA4LCAxLCAyMTEsIAorICAgIDg3LCAyMTYsIDEwOCwgMSwgMjE1LCAxMTUsIDIxMSwgODcsIDIxNiwgMTA4LCAxLCAyNTMsIDE2MywgMjExLCA4NywgMjE2LCAKKyAgICAxMDgsIDEsIDIxMSwgNjIsIDIxNiwgMTA4LCAxLCAyMTEsIDYwLCAyMTYsIDEwOCwgMSwgMjExLCA2MSwgMjE2LCAxMDgsIDEsIAorICAgIDIxMSwgNTksIDIxNiwgMTA4LCAxLCAyMTEsIDU4LCAyMTYsIDEwOCwgMSwgMjExLCA5NywgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgNTYsIDIxNiwgMTA4LCAxLCAyMTEsIDU0LCAyMTYsIDEwOCwgMSwgMjExLCA1MywgMjE2LCAxMDgsIDEsIDIxMSwgNTIsIAorICAgIDIxNiwgMTA4LCAxLCAyMTEsIDUwLCAyMTYsIDEwOCwgMSwgMjE3LCAzNCwgMjExLCA1MCwgMjE2LCAxMDgsIDEsIDIxMSwgCisgICAgNDgsIDIxNiwgMTA4LCAxLCAyMTEsIDQ3LCAyMTYsIDEwOCwgMSwgMjEwLCAyNDQsIDIxNiwgMTA4LCA1OCwgMSwgMjMzLCAKKyAgICAxMjYsIDc4LCAyMTYsIDEwOCwgMjIwLCAxMzgsIDc4LCAyMTYsIDEwOCwgMTE2LCAyMzUsIDYzLCAyOSwgMywgMjMyLCAxNTUsIAorICAgIDI5LCAzLCAyMzAsIDE2MCwgMjksIDMsIDIyMiwgMjA5LCAyOSwgMywgMjE5LCA1NywgMjksIDMsIDIyMCwgNiwgMjksIDMsIAorICAgIDI1MSwgMjA0LCAyOSwgMywgMjE2LCA0MSwgMjksIDMsIDI0OSwgMjM3LCAyOSwgMywgMjI4LCA3MiwgMjksIDMsIDIyNywgCisgICAgMTMzLCAyOSwgMywgMjQyLCAxODAsIDIyNywgMCwgMjksIDMsIDIxMCwgMjIsIDI5LCAzLCAyNDcsIDE0MywgMjksIDMsIAorICAgIDI0OCwgMTA0LCAyOSwgMywgMjM1LCA2NywgMjksIDMsIDIxNiwgMTU1LCAyOSwgMywgMjUwLCA4NSwgMjksIDMsIDIyNSwgCisgICAgMTIwLCAyOSwgMywgMjI1LCAxNSwgMjksIDMsIDI0MiwgMjU1LCAyOSwgMywgMjQyLCAyNTEsIDI5LCAzLCAyNDIsIDI1MiwgCisgICAgMjksIDMsIDI0MiwgMjUzLCAyOSwgMywgMjE4LCAyMjMsIDI5LCAzLCAyMTgsIDE3OSwgMjksIDMsIDIxOCwgMTkyLCAyOSwgCisgICAgMywgMjE4LCAyMjIsIDI5LCAzLCAyMTgsIDE5NiwgMjksIDMsIDIxOCwgMTk3LCAyOSwgMywgMjE4LCAxODQsIDI5LCAzLCAKKyAgICAyNTAsIDIxMywgMjksIDMsIDI1MCwgMTkyLCAyOSwgMywgMjUwLCAxOTQsIDI5LCAzLCAyNTAsIDIxMiwgMjksIDMsIDI1MCwgCisgICAgMjEwLCAyOSwgMywgMjUwLCAyMTEsIDI5LCAzLCAyNTAsIDE5MywgMjksIDMsIDIwOSwgMjQzLCAyOSwgMywgMjA5LCAyMjEsIAorICAgIDI5LCAzLCAyMDksIDIzNCwgMjksIDMsIDIwOSwgMjQyLCAyOSwgMywgMjA5LCAyMzcsIDI5LCAzLCAyMDksIDIzOCwgMjksIAorICAgIDMsIDIwOSwgMjI2LCAyOSwgMywgMjUwLCAyMDgsIDI5LCAzLCAyNTAsIDE5NSwgMjksIDMsIDI1MCwgMTk3LCAyOSwgMywgCisgICAgMjUwLCAyMDcsIDI5LCAzLCAyNTAsIDIwNSwgMjksIDMsIDI1MCwgMjA2LCAyOSwgMywgMjUwLCAxOTYsIDI5LCAzLCAyMjMsIAorICAgIDIzNiwgMjksIDMsIDIyMywgMjI2LCAyOSwgMywgMjIzLCAyMzIsIDI5LCAzLCAyMjMsIDIzNSwgMjksIDMsIDIyMywgMjMzLCAKKyAgICAyOSwgMywgMjIzLCAyMzQsIDI5LCAzLCAyMjMsIDIzMSwgMjksIDMsIDIzMywgMTU5LCAyOSwgMywgMjMzLCAxNTEsIDI5LCAKKyAgICAzLCAyMzMsIDE1NCwgMjksIDMsIDIzMywgMTU4LCAyOSwgMywgMjMzLCAxNTUsIDI5LCAzLCAyMzMsIDE1NiwgMjksIDMsIAorICAgIDIzMywgMTUyLCAyOSwgMywgMjExLCAxMzAsIDI5LCAzLCAyMTEsIDEyMCwgMjksIDMsIDIxMSwgMTI2LCAyOSwgMywgMjExLCAKKyAgICAxMjksIDI5LCAzLCAyMTEsIDEyNywgMjksIDMsIDIxMSwgMTI4LCAyOSwgMywgMjExLCAxMjUsIDI5LCAzLCAyNDIsIDcxLCAKKyAgICAyOSwgMywgMjQyLCA2MiwgMjksIDMsIDI0MiwgNjUsIDI5LCAzLCAyNDIsIDcwLCAyOSwgMywgMjQyLCA2NywgMjksIDMsIAorICAgIDI0MiwgNjgsIDI5LCAzLCAyNDIsIDY0LCAzOCwgMzMsIDEsIDI1MiwgNzUsIDM4LCAzMywgMSwgMjEzLCAyNTUsIDM4LCAzMywgCisgICAgMSwgMjQyLCAyMzYsIDM4LCAzMywgMSwgMjQ4LCA5MCwgMzgsIDMzLCAxLCAyMTAsIDc0LCAzOCwgMzMsIDEsIDIxMCwgOTQsIAorICAgIDM4LCAzMywgMSwgMTc2LCAzOCwgMzMsIDEsIDI0NSwgMTc0LCAzOCwgMzMsIDEsIDI0NSwgMTU5LCAzOCwgMzMsIDEsIDI0NSwgCisgICAgMTUwLCAzOCwgMzMsIDEsIDc2LCAzOCwgMzMsIDEsIDIyNSwgMjIxLCAzOCwgMzMsIDEsIDI0NSwgOTIsIDM4LCAzMywgMSwgCisgICAgMjQ1LCA4MiwgMzgsIDMzLCAxLCAyMTcsIDIyLCAzOCwgMzMsIDEsIDE2MiwgMzgsIDMzLCAxLCAyMTUsIDE3OCwgMzgsIDMzLCAKKyAgICAxLCAyNTAsIDEzMSwgMzgsIDMzLCAxLCAyMjAsIDEwMiwgMzgsIDMzLCAxLCAyMjAsIDY1LCAzOCwgMzMsIDEsIDI0NCwgODIsIAorICAgIDM4LCAzMywgMSwgMjQ1LCA4MSwgMzgsIDMzLCAxLCA2MSwgMzgsIDMzLCAxLCAyMzYsIDYwLCAzOCwgMzMsIDEsIDI0NywgCisgICAgMTYxLCAzOCwgMzMsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzgsIDMzLCAxLCAyMTEsIDU5LCAzOCwgMzMsIDEsIDIxMCwgCisgICAgMjEyLCAzOCwgMzMsIDEsIDIzNSwgMTgzLCA2MSwgMzgsIDMzLCAxLCAyMzIsIDE5MiwgMjEwLCAxODMsIDM4LCAzMywgMSwgCisgICAgMjUxLCAyNDksIDIxMCwgMTgzLCAzOCwgMzMsIDEsIDIzNSwgMTgzLCAyNTEsIDI0OSwgMjEwLCAxODMsIDQ0LCAyNTQsIAorICAgIDExMCwgMjE4LCA2MCwgMjMxLCAxNTQsIDQ0LCAyNTQsIDExMCwgMjQ2LCAxMTgsIDIxOCwgNjAsIDIzMSwgMTU0LCA0MywgCisgICAgMjE4LCA2MCwgMTI3LCA0NCwgMjE4LCA2MCwgMTI3LCA0MywgMjQ2LCAxMTgsIDIxOCwgNjAsIDEyNywgNDQsIDI0NiwgMTE4LCAKKyAgICAyMTgsIDYwLCAxMjcsIDIyMywgMTU3LCAyMzUsIDIwMiwgMjMxLCAxNTQsIDIyMywgMTU3LCAyNDYsIDExOCwgMjM1LCAyMDIsIAorICAgIDIzMSwgMTU0LCAyNDYsIDExOCwgMjE1LCAyNDEsIDIzMSwgMTU0LCA0MywgMjE1LCAyNDEsIDEyNywgNDQsIDIxNSwgMjQxLCAKKyAgICAxMjcsIDIyMywgMTU3LCAyMTgsIDIzNCwgNDMsIDIyMywgMTU3LCAyMjYsIDE5OCwgMTI3LCA0NCwgMjIzLCAxNTcsIDIyNiwgCisgICAgMTk4LCAxMjcsIDI0NSwgMjEwLCAyNDksIDE1OCwgMjI2LCAxMywgMjQ0LCAyMiwgMjI2LCAxMywgMjIzLCA0OSwgMjQ0LCAKKyAgICAyMiwgMjI2LCAxMywgMjQwLCAxNjUsIDI0NiwgMTE4LCAyMjYsIDI1MSwgMjQ2LCAxMDQsIDI1NCwgMTE5LCAyMTQsIDE1MywgCisgICAgMjU0LCAxMTksIDI0NiwgMTE4LCAyMjIsIDI0NywgMjU0LCAxMDksIDUyLCAyMjYsIDI0OCwgMjQwLCAxNjgsIDIzNSwgMTkzLCAKKyAgICAyMzUsIDIwMSwgMjI2LCA1OSwgMjUxLCAxNTQsIDI0MCwgMTY5LCAyLCAyNDgsIDEsIDIxNiwgODksIDIsIDIyMiwgMjM0LCAKKyAgICA0OCwgNDMsIDEyMSwgMjI2LCA1LCAxMjcsIDQ0LCAxMjEsIDIyNiwgNSwgMTI3LCAyMTYsIDg5LCAyLCA1OSwgNDgsIDIxNiwgCisgICAgODksIDIsIDU5LCA1MSwgNDMsIDY3LCAyNTIsIDE0MSwgMiwgMjI0LCA3LCA0NCwgNjcsIDI1MiwgMTQxLCAyLCAyMjQsIDcsIAorICAgIDIxNiwgMTQsIDQzLCAxNjMsIDEyNywgMjE2LCAxNCwgNDQsIDE2MywgMTI3LCAyNTEsIDE3NSwgNDMsIDE2MywgMTI3LCAKKyAgICAyNTEsIDE3NSwgNDQsIDE2MywgMTI3LCA0MywgMjE5LCAxODcsIDEwNCwgMTI3LCA0NCwgMjE5LCAxODcsIDEwNCwgMTI3LCAKKyAgICA0MywgNTIsIDIyNiwgMywgNDQsIDUyLCAyMjYsIDMsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgMTQwLCAxMjMsIAorICAgIDU5LCAxMTcsIDExMywgMTcwLCAyMjQsIDE0MCwgOTIsIDI0NCwgMTEsIDU5LCAyMjQsIDE0MCwgMjQ0LCA4MSwgNTksIDc4LCAKKyAgICAyMjMsIDQ5LCAyMjQsIDEzLCA3OCwgNjcsIDE4MiwgMjIyLCAyMzQsIDIyNSwgMTAsIDIxMSwgMjA5LCAyMjAsIDEzOCwgCisgICAgMjMwLCAyMjQsIDI0NywgMTIwLCAyMTUsIDk0LCAyNDksIDIxOSwgMjIzLCAxNTcsIDI0NywgMTIwLCAyMjMsIDE1NywgMjQ5LCAKKyAgICAyMTksIDIxNSwgOTQsIDIyMCwgMTUwLCAyNDgsIDIwNiwgMiwgNDMsIDI0MiwgMTA4LCAyNDgsIDIwNiwgMiwgNDQsIDI0MiwgCisgICAgMTA4LCAyMTUsIDk0LCAyNDgsIDIwNSwgMjE2LCAxNCwgMTYzLCAyMjEsIDE3MywgNTAsIDIxNSwgNTksIDI0OCwgMTU2LCAKKyAgICAyMTYsIDE0MywgMjQ4LCAxNTYsIDksIDM0LCAyMjMsIDc2LCA5LCAzNCwgMjUwLCAxMCwgOSwgMzQsIDIyMSwgMTc2LCAxMTAsIAorICAgIDksIDM0LCAyMjEsIDE3NiwgMTA1LCA5LCAzNCwgMjIxLCAxNzYsIDE1OCwgOSwgMzQsIDIyNSwgMTY3LCA5LCAzNCwgMjUxLCAKKyAgICAxNjMsIDksIDM0LCAyMTcsIDkyLCA5LCAzNCwgMjM0LCAzMywgMTEwLCA5LCAzNCwgMjM0LCAzMywgMTA1LCA5LCAzNCwgCisgICAgMjQ3LCAxNzAsIDksIDM0LCAyMjEsIDE3OSwgOSwgMzQsIDQsIDExMCwgOSwgMzQsIDQsIDEwNSwgOSwgMzQsIDIzMywgOTcsIAorICAgIDExMCwgOSwgMzQsIDIzMywgOTcsIDEwNSwgOSwgMzQsIDIzMywgOTcsIDE1OCwgOSwgMzQsIDIzMywgOTcsIDE2MSwgOSwgCisgICAgMzQsIDIxOSwgNjgsIDksIDM0LCAyMTYsIDE0NSwgOSwgMzQsIDIxOSwgNjYsIDExMCwgOSwgMzQsIDIxOSwgNjYsIDEwNSwgCisgICAgOSwgMzQsIDI0MSwgMjI4LCAxMTAsIDksIDM0LCAyNDEsIDIyOCwgMTA1LCA5LCAzNCwgMjQyLCAxNSwgOSwgMzQsIDIyMywgCisgICAgMTQ3LCA5LCAzNCwgMjUwLCA4MiwgOSwgMzQsIDIxOCwgMzcsIDksIDM0LCAyMzAsIDEyOCwgOSwgMzQsIDI0OCwgODgsIDksIAorICAgIDM0LCAyMzAsIDEyMCwgOSwgMzQsIDI1MCwgMjUsIDksIDM0LCAyMTIsIDQxLCAxMTAsIDksIDM0LCAyMTIsIDQxLCAxMDUsIAorICAgIDksIDM0LCAyNDQsIDk2LCA5LCAzNCwgMjI1LCAyMzIsIDExMCwgOSwgMzQsIDIyNSwgMjMyLCAxMDUsIDksIDM0LCAyMTksIAorICAgIDE2MCwgMTYzLCAyMTUsIDIzNiwgMjE1LCAxODgsIDksIDM0LCAyNDksIDE0NSwgOSwgMzQsIDI0NywgMTM2LCA5LCAzNCwgCisgICAgMjM1LCAxMzcsIDksIDM0LCAyNTEsIDE5OCwgNjQsIDI0OSwgMjUwLCA5LCAzNCwgMjQ1LCAxNSwgOSwgMzQsIDIxOCwgMjQ5LCAKKyAgICAxMTAsIDksIDM0LCAyMTgsIDI0OSwgMTA1LCA5LCAzNCwgMjUyLCAxNTQsIDksIDM0LCAyMTksIDE2NywgOSwgMzQsIDI1MSwgCisgICAgNjMsIDIxOSwgMTY3LCA5LCAzNCwgMjI5LCA5MCwgMTEwLCA5LCAzNCwgMjI5LCA5MCwgMTA1LCA5LCAzNCwgMjI5LCA5MCwgCisgICAgMTU4LCA5LCAzNCwgMjI5LCA5MCwgMTYxLCA5LCAzNCwgMjMxLCA0NiwgOSwgMzQsIDIyMCwgNTcsIDksIDM0LCAyMjMsIAorICAgIDE1MywgOSwgMzQsIDI0NSwgMzcsIDksIDM0LCAyMjYsIDIwOSwgOSwgMzQsIDI1MSwgMTMzLCAxMTAsIDksIDM0LCAyNTEsIAorICAgIDEzMywgMTA1LCA5LCAzNCwgMjMxLCA4NiwgOSwgMzQsIDIzMCwgMTIzLCA5LCAzNCwgMjQyLCAxNDAsIDExMCwgOSwgMzQsIAorICAgIDI0MiwgMTQwLCAxMDUsIDksIDM0LCAyNDIsIDE0MCwgMTU4LCA5LCAzNCwgMjE2LCAxMDYsIDksIDM0LCAyNDksIDI0OSwgOSwgCisgICAgMzQsIDIxMiwgOSwgMTEwLCA5LCAzNCwgMjEyLCA5LCAxMDUsIDksIDM0LCAyNTEsIDYzLCAyMjEsIDE3MCwgOSwgMzQsIAorICAgIDIxOSwgMTYwLCAyNDAsIDI0OCwgOSwgMzQsIDI0MCwgMjQ4LCA5LCAzNCwgMjUxLCA2MywgMjE5LCAyLCA5LCAzNCwgMjUxLCAKKyAgICA2MywgMjIwLCA1MiwgOSwgMzQsIDI0NCwgMzIsIDksIDM0LCAyNTEsIDYzLCAyNTAsIDIyOCwgOSwgMzQsIDIxOSwgMTYwLCAKKyAgICAyMTIsIDU3LCA5LCAzNCwgMjEyLCA1OCwgMTEwLCA5LCAzNCwgMjEyLCA1OCwgMTA1LCA5LCAzNCwgMjUwLCAyNywgOSwgMzQsIAorICAgIDI1MSwgNjMsIDI0MiwgMTY2LCA5LCAzNCwgMTk5LCAxMTAsIDksIDM0LCAxOTksIDEwNSwgOSwgMzQsIDI1MSwgNjMsIDIzMiwgCisgICAgMTM3LCA5LCAzNCwgMjUxLCA2MywgMjQzLCA4OCwgOSwgMzQsIDIzMCwgMTE5LCAxMTAsIDksIDM0LCAyMzAsIDExOSwgMTA1LCAKKyAgICA5LCAzNCwgMjIzLCAxNTksIDksIDM0LCAyNTEsIDIwNywgOSwgMzQsIDI1MSwgNjMsIDIxNywgNTYsIDIzMywgNTIsIDksIAorICAgIDM0LCAyNTEsIDYzLCAyMzMsIDUzLCA5LCAzNCwgMjUxLCA2MywgMjExLCAyMzksIDksIDM0LCAyNTEsIDYzLCAyNDQsIDQ2LCAKKyAgICA5LCAzNCwgMjQ1LCAyMTgsIDExMCwgOSwgMzQsIDI0NSwgMjE4LCAxMDUsIDksIDM0LCAyNDUsIDIxOCwgMTU4LCA5LCAzNCwgCisgICAgMjUxLCA2MywgMjQ1LCAyMTcsIDksIDM0LCAyNDEsIDIzNSwgOSwgMzQsIDI1MSwgNjMsIDI0MCwgMjQ1LCA5LCAzNCwgMjUxLCAKKyAgICAxOTQsIDksIDM0LCAyNDIsIDIyMiwgOSwgMzQsIDI1MSwgNjMsIDI0NCwgOTAsIDksIDM0LCAyNTEsIDYzLCAyNTEsIDIzNywgCisgICAgOSwgMzQsIDI1MSwgNjMsIDIyMiwgMSwgOSwgMzQsIDIxOSwgMTYwLCAyMTIsIDIsIDksIDM0LCAyMTksIDE2MCwgMjExLCAKKyAgICA0MSwgOSwgMzQsIDI1MSwgNjMsIDI0MywgMjQ0LCA5LCAzNCwgMjM1LCAxNDMsIDI0NSwgNDEsIDksIDM0LCAyNTEsIDYzLCAKKyAgICAyNDUsIDQxLCA5LCAzNCwgMjM1LCAxNDMsIDIxNiwgMTUsIDksIDM0LCAyNTEsIDYzLCAyMTYsIDE1LCA5LCAzNCwgMjM1LCAKKyAgICAxNDMsIDI0NiwgOTYsIDksIDM0LCAyNTEsIDYzLCAyNDYsIDk2LCA5LCAzNCwgMjE1LCA5MSwgOSwgMzQsIDIzNSwgMTQzLCAKKyAgICAyMTUsIDkxLCA5LCAzNCwgMjUxLCA2MywgMjE1LCA5MSwgNjAsIDM0LCAxMTAsIDYwLCAzNCwgMjMyLCAyMTMsIDYwLCAzNCwgCisgICAgMjQ3LCAxMjAsIDYwLCAzNCwgMjE5LCA5NSwgNjAsIDM0LCAyMjEsIDE3NSwgNjAsIDM0LCAxMDMsIDYwLCAzNCwgMTA1LCAKKyAgICA2MCwgMzQsIDIzMiwgMjM3LCA2MCwgMzQsIDIzMSwgMTg1LCA2MCwgMzQsIDIzMywgMzMsIDYwLCAzNCwgMjQ1LCAxMjksIAorICAgIDYwLCAzNCwgMTk1LCA2MCwgMzQsIDEyNCwgMjUxLCAxNjMsIDYwLCAzNCwgMjQ5LCAxNDcsIDYwLCAzNCwgMjQwLCAxMTEsIAorICAgIDYwLCAzNCwgMjE3LCA5MiwgNjAsIDM0LCAyMDQsIDI1MSwgMTYzLCA2MCwgMzQsIDIzNCwgMzIsIDYwLCAzNCwgMjI0LCAKKyAgICAyMjQsIDYwLCAzNCwgMjExLCAyMDIsIDYwLCAzNCwgMjE4LCAyNDMsIDYwLCAzNCwgNDQsIDIwNCwgMjUxLCAxNjMsIDYwLCAKKyAgICAzNCwgMjQxLCAxNzYsIDI0NSwgMTQ1LCA2MCwgMzQsIDIxNiwgMjQ3LCA2MCwgMzQsIDI0NywgMTcwLCA2MCwgMzQsIDIyMSwgCisgICAgMTc5LCA2MCwgMzQsIDI1MCwgMTAsIDYwLCAzNCwgMjI0LCAxODIsIDYwLCAzNCwgMjU0LCAyMTUsIDYwLCAzNCwgMjMwLCAKKyAgICAxMTAsIDYwLCAzNCwgMjQ1LCAxNDUsIDYwLCAzNCwgMjQ1LCAyMjMsIDYwLCAzNCwgMjIxLCAyMDAsIDYwLCAzNCwgMjQyLCAKKyAgICAxNzQsIDYwLCAzNCwgMjQyLCAxNzUsIDIxOSwgODEsIDYwLCAzNCwgMjQ1LCA0MCwgNjAsIDM0LCAyNTEsIDI0OCwgNjAsIAorICAgIDM0LCAyMTEsIDIyMSwgNjAsIDM0LCAyNTAsIDEwMSwgNjAsIDM0LCAyMjIsIDE5NiwgNjAsIDM0LCAyMzUsIDI1MSwgNjAsIAorICAgIDM0LCAyMTksIDc5LCA2MCwgMzQsIDIzMywgOTYsIDYwLCAzNCwgMjQ5LCAxNTYsIDYwLCAzNCwgMjE4LCAyMzcsIDYwLCAzNCwgCisgICAgMjMwLCAxMTUsIDYwLCAzNCwgMjIyLCAyMjQsIDYwLCAzNCwgMjExLCAyMDYsIDYwLCAzNCwgMjI2LCAxOTAsIDYwLCAzNCwgCisgICAgMjE1LCA5NywgNjAsIDM0LCAyNDYsIDgwLCA2MCwgMzQsIDIxOSwgMjUxLCAyMTYsIDE0NSwgNjAsIDM0LCAyNDYsIDExOCwgCisgICAgMjUwLCAxMCwgNjAsIDM0LCAxOTksIDIxOCwgMTA4LCA2MCwgMzQsIDExMywgMjQyLCAxMCwgNjAsIDM0LCAyMjAsIDAsIDYwLCAKKyAgICAzNCwgMjUxLCAxNjksIDYwLCAzNCwgMjE5LCA2NSwgNjAsIDM0LCAyNTEsIDEzNywgNjAsIDM0LCAyMTgsIDEzOCwgNjAsIAorICAgIDM0LCAyNDEsIDIyNywgNjAsIDM0LCAyNDIsIDI4LCA2MCwgMzQsIDI0NywgMTIzLCA2MCwgMzQsIDI0MiwgMTUsIDYwLCAzNCwgCisgICAgMjUxLCAxNTQsIDYwLCAzNCwgMjIzLCAxNDcsIDYwLCAzNCwgMjIxLCAxODcsIDYwLCAzNCwgMjQ3LCAxOTksIDYwLCAzNCwgCisgICAgMjUzLCAxNjgsIDYwLCAzNCwgMjE4LCAyMzQsIDYwLCAzNCwgMjI4LCA1MSwgNjAsIDM0LCAyMTgsIDM3LCA2MCwgMzQsIAorICAgIDIyMSwgMjExLCA2MCwgMzQsIDIzMCwgMTI4LCA2MCwgMzQsIDIxNSwgMjM1LCA2MCwgMzQsIDIzMywgMTIyLCA2MCwgMzQsIAorICAgIDIxOCwgMTI5LCA2MCwgMzQsIDI0OCwgODgsIDYwLCAzNCwgMjEyLCAyMSwgNjAsIDM0LCAyNDcsIDE0NiwgMjI4LCA1MSwgCisgICAgNjAsIDM0LCAyNDksIDIxNSwgNjAsIDM0LCAyNDMsIDIyMiwgNjAsIDM0LCAyNTAsIDIxLCA2MCwgMzQsIDIxOCwgMTQyLCAKKyAgICA2MCwgMzQsIDIxMiwgNDAsIDYwLCAzNCwgMjQ0LCA5NiwgNjAsIDM0LCAyNTAsIDE4LCA2MCwgMzQsIDI0NCwgMTYxLCA2MCwgCisgICAgMzQsIDUyLCAyMTEsIDE3OCwgNjAsIDM0LCAxNjMsIDIxNSwgMjM2LCAyMTUsIDE4OCwgNjAsIDM0LCAyMTksIDg5LCA2MCwgCisgICAgMzQsIDI0NCwgMTcxLCA2MCwgMzQsIDI0OSwgMTQ1LCA2MCwgMzQsIDI0NywgMTM2LCA2MCwgMzQsIDIyNCwgMTc5LCA2MCwgCisgICAgMzQsIDIzNSwgMTM3LCA2MCwgMzQsIDIzMSwgNjcsIDYwLCAzNCwgMjE2LCA4OCwgNjAsIDM0LCAyMTcsIDI0NSwgNjAsIDM0LCAKKyAgICAyMzIsIDIzMSwgNjAsIDM0LCAyMTQsIDEzMSwgNjAsIDM0LCAyNDQsIDEyMCwgNjAsIDM0LCAyNTEsIDE5OCwgNjQsIDI0OSwgCisgICAgMjUwLCA2MCwgMzQsIDIxOSwgMTg4LCA2MCwgMzQsIDI0NiwgMTE4LCAyMTYsIDI0MiwgNjAsIDM0LCAyMTEsIDI1MywgNjAsIAorICAgIDM0LCAyMTksIDEwMywgNjAsIDM0LCAyNDcsIDE4NywgNjAsIDM0LCAyNDUsIDE1LCA2MCwgMzQsIDIxOSwgNSwgNjAsIDM0LCAKKyAgICA3NCwgNjAsIDM0LCAyMTgsIDEzMSwgNjAsIDM0LCAyMTgsIDI0OCwgNjAsIDM0LCAyMTUsIDI1NSwgNjAsIDM0LCAyNDIsIAorICAgIDE0NywgNjAsIDM0LCAyNTAsIDIxOCwgNjAsIDM0LCAyMTgsIDE2MCwgNjAsIDM0LCAyNTIsIDE1NCwgNjAsIDM0LCAyMjMsIAorICAgIDMxLCA2MCwgMzQsIDIxOSwgMTY3LCA2MCwgMzQsIDIzNSwgMTMwLCA2MCwgMzQsIDIyOSwgODksIDYwLCAzNCwgMjIwLCA1NywgCisgICAgNjAsIDM0LCAyNDQsIDE0OSwgNjAsIDM0LCAyMjYsIDIwOSwgNjAsIDM0LCAyNTQsIDExOCwgNjAsIDM0LCAyMjUsIDI5LCAKKyAgICA2MCwgMzQsIDI0NSwgMjI3LCA2MCwgMzQsIDI1MSwgMTMyLCA2MCwgMzQsIDIzMSwgODYsIDYwLCAzNCwgMjMwLCAxODMsIAorICAgIDYwLCAzNCwgMjIwLCAxNTYsIDYwLCAzNCwgMjUzLCAyNTIsIDYwLCAzNCwgMjMwLCAxMjMsIDYwLCAzNCwgMjE2LCAxOSwgCisgICAgNjAsIDM0LCAyMjYsIDE2NSwgNjAsIDM0LCAyNTEsIDIwMSwgNjAsIDM0LCAyMTgsIDEyNywgNjAsIDM0LCAyNDksIDIyNSwgCisgICAgNjAsIDM0LCAyNDIsIDEzOSwgNjAsIDM0LCAyMTYsIDEwNiwgNjAsIDM0LCAyMzUsIDIxNywgNjAsIDM0LCAyNTEsIDIxMSwgCisgICAgNjAsIDM0LCAyMTIsIDU4LCAyNDUsIDE0NSwgNjAsIDM0LCAyNDksIDI0OSwgNjAsIDM0LCAyMTIsIDgsIDYwLCAzNCwgMjIxLCAKKyAgICAxNzAsIDYwLCAzNCwgMjQwLCAyNDgsIDYwLCAzNCwgMjE5LCAyLCA2MCwgMzQsIDIxNCwgMjIsIDYwLCAzNCwgMjUyLCA3MiwgCisgICAgNjAsIDM0LCAyMjUsIDczLCA2MCwgMzQsIDI1MiwgMTc0LCA2MCwgMzQsIDIyMCwgNTIsIDYwLCAzNCwgMjIzLCAxMTAsIDYwLCAKKyAgICAzNCwgMjIyLCAxMjYsIDYwLCAzNCwgMjQ0LCAzMiwgNjAsIDM0LCAyNTEsIDIwMCwgNjAsIDM0LCAyNTAsIDIyOCwgNjAsIAorICAgIDM0LCAyNTEsIDIyNiwgNjAsIDM0LCAyMzAsIDEyNSwgNjAsIDM0LCAyMTIsIDU3LCA2MCwgMzQsIDI1MCwgMjcsIDYwLCAzNCwgCisgICAgMjExLCAyMzYsIDYwLCAzNCwgMjQ3LCAxODAsIDYwLCAzNCwgMjEzLCAxNjEsIDYwLCAzNCwgMjQyLCAxNjYsIDYwLCAzNCwgCisgICAgMjMyLCAxMzcsIDYwLCAzNCwgMjQzLCA4OCwgNjAsIDM0LCAyMzAsIDExOCwgNjAsIDM0LCAyMTksIDk0LCA2MCwgMzQsIAorICAgIDIxOSwgMjUxLCAyMTcsIDc2LCAyNTEsIDIzNywgNjAsIDM0LCAyMjMsIDE1OSwgNjAsIDM0LCAyNTEsIDIwNywgNjAsIDM0LCAKKyAgICAyMTEsIDE5NywgNjAsIDM0LCAyNDQsIDE5MCwgNjAsIDM0LCAyMzMsIDUyLCA2MCwgMzQsIDIxNywgNTYsIDIzMywgNTIsIAorICAgIDYwLCAzNCwgMjMzLCA0OCwgNjAsIDM0LCAyMTksIDMwLCA2MCwgMzQsIDIzMywgNTMsIDYwLCAzNCwgMjExLCAyMzksIDYwLCAKKyAgICAzNCwgMjQ0LCA0NiwgNjAsIDM0LCAyNDUsIDIxNywgNjAsIDM0LCAyNDEsIDIzNSwgNjAsIDM0LCAyNDQsIDAsIDYwLCAzNCwgCisgICAgMjQwLCAyNDUsIDYwLCAzNCwgMjUxLCAxOTQsIDYwLCAzNCwgMjE3LCA2MywgNjAsIDM0LCAyNDIsIDM0LCA2MCwgMzQsIAorICAgIDI0NCwgMTEzLCA2MCwgMzQsIDIyMiwgMjgsIDIxMSwgMjM2LCA2MCwgMzQsIDI1MCwgMjIwLCA2MCwgMzQsIDI0MiwgMjIyLCAKKyAgICA2MCwgMzQsIDI0NCwgOTAsIDYwLCAzNCwgMjUxLCAyMzcsIDYwLCAzNCwgMjIyLCAxLCA2MCwgMzQsIDI0OCwgNzQsIDYwLCAKKyAgICAzNCwgMjEyLCAyLCA2MCwgMzQsIDI0MSwgMjEwLCA2MCwgMzQsIDIxMSwgNDEsIDYwLCAzNCwgMjMwLCAxOTIsIDYwLCAzNCwgCisgICAgMjUxLCAyMjEsIDYwLCAzNCwgMjQ1LCAxNTUsIDYwLCAzNCwgMjQzLCAyNDQsIDYwLCAzNCwgMjE1LCAyMDksIDYwLCAzNCwgCisgICAgMjQ2LCA4MiwgNjAsIDM0LCAyMjMsIDE0MSwgNjAsIDM0LCAyMjgsIDUzLCA2MCwgMzQsIDI0NSwgNDEsIDYwLCAzNCwgMjE2LCAKKyAgICAxNSwgNjAsIDM0LCAyNDYsIDk2LCA2MCwgMzQsIDIxNSwgOTEsIDYwLCAzNCwgMjQ0LCA0OCwgMTA5LCAyNDgsIDM3LCAxMzUsIAorICAgIDQzLCAyMTYsIDQyLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDc3LCAyMTYsIDQyLCA1MSwgMTA5LCAyNDgsIDM3LCAKKyAgICAxMzUsIDQzLCAyMTYsIDQyLCAyMzAsIDIyNCwgMjIsIDIyMiwgMjUxLCAxMDksIDI0OCwgMzcsIDEzNSwgNzcsIDIxNiwgNDIsIAorICAgIDIzMCwgMjI0LCAyMiwgNTEsIDEwOSwgMjQ4LCAzNywgMTM1LCAyNDMsIDIyOSwgMjE4LCAxMCwgMTA5LCAyNDgsIDM3LCAKKyAgICAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCA0OCwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCA1MSwgCisgICAgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAyMzMsIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAKKyAgICAxMSwgMjQzLCAyNDMsIDIxNCwgMTYwLCAyMzMsIDQ2LCAxMDksIDI0OCwgMzcsIDEzNSwgMjE4LCAxMSwgMjQzLCAyNDMsIAorICAgIDIxNCwgMTYwLCAyMjIsIDI1MSwgMTA5LCAyNDgsIDM3LCAxMzUsIDIxOCwgMTEsIDI0MywgMjQzLCAyMzIsIDEwOCwgMjMzLCAKKyAgICA0NiwgMTA5LCAyNDgsIDM3LCAxMzUsIDIyNiwgMTIyLCAxMDksIDIxOSwgMTgsIDEwOSwgMjQ5LCAyMTksIDEwOSwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCAyNDcsIDE3NywgNzgsIDIzNSwgMTMxLCAyMzUsIDIzNiwgMjE4LCAxNTksIDg3LCAxMDksIDIzNSwgCisgICAgMTU4LCA3OCwgMTA5LCAyNDksIDI1MiwgNzgsIDEwOSwgNTQsIDIxMCwgODYsIDQzLCAyNTQsIDExMCwgMTI3LCA0NCwgMjU0LCAKKyAgICAxMTAsIDEyNywgNDMsIDUyLCAyNTQsIDExMCwgMTI3LCA0NCwgNTIsIDI1NCwgMTEwLCAxMjcsIDQzLCAyNDksIDE2MSwgCisgICAgMTI3LCA0NCwgMjQ5LCAxNjEsIDEyNywgNDMsIDcxLCAyNDksIDE2MSwgMTI3LCA0NCwgNzEsIDI0OSwgMTYxLCAxMjcsIDQzLCAKKyAgICA4NSwgMjMzLCAyMCwgMTI3LCA0NCwgODUsIDIzMywgMjAsIDEyNywgMjI0LCAyMzcsIDc4LCAyNDMsIDMyLCA3OCwgNDMsIAorICAgIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAxMjcsIDQzLCA3MSwgMjMzLCAyMCwgMTI3LCA0NCwgCisgICAgNzEsIDIzMywgMjAsIDEyNywgNDMsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgNDQsIDcxLCAyMTYsIDYsIDIyMCwgNTMsIAorICAgIDEyNywgNDMsIDcxLCA0MiwgMTI3LCA0NCwgNzEsIDQyLCAxMjcsIDIxMiwgMzYsIDI0OCwgMTU2LCAyMjMsIDQ5LCA1MiwgCisgICAgMjI0LCAxOTEsIDIyMywgMjU0LCA3OCwgNTIsIDIyNCwgMTkxLCAyMjMsIDI1NCwgNzgsIDEyMSwgNTIsIDIyNCwgMTkxLCAKKyAgICAyMjMsIDI1NCwgNzgsIDIyNCwgMjM3LCAxNjQsIDI0NCwgMTkwLCAyNDIsIDgsIDIyNywgMTk4LCAxMTAsIDI0MiwgOCwgCisgICAgMjI3LCAxOTgsIDEwNSwgMjQyLCA4LCAyMjcsIDE5OCwgMTU4LCAyNDIsIDgsIDIyNywgMTk4LCAxNjEsIDI0MiwgOCwgMjI3LCAKKyAgICAxOTgsIDE4OSwgMjQyLCA4LCAyMjcsIDE5OCwgMTk0LCAyNDIsIDgsIDIyNywgMTk4LCAxOTgsIDI0MiwgOCwgMjI3LCAxOTgsIAorICAgIDE5NSwgMjQyLCA4LCAyMjcsIDE5OCwgMjAwLCAxMDksIDIzMywgMywgMTM4LCA3OCwgMTA5LCAyMjIsIDIyOCwgMTM4LCA3OCwgCisgICAgMTA5LCAyNDgsIDQ0LCAxMzgsIDc4LCAxMDksIDI0NSwgMTI4LCAxMzgsIDc4LCAyNCwgMjE5LCAxNTUsIDU5LCAxMzgsIDc4LCAKKyAgICAyNCwgNTIsIDU5LCAxMzgsIDc4LCAyMTIsIDMyLCAyNDgsIDE1NiwgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCA3OCwgNjcsIAorICAgIDIzNCwgMjMzLCAyMjMsIDc3LCAyLCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDY3LCAyMzQsIDIzMywgMjIzLCA3NywgMTY0LCAKKyAgICAyMTQsIDE2MCwgMjQyLCAyNywgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAyLCAyMTMsIDEzNSwgMjE5LCAzMSwgMTY0LCAyMTQsIAorICAgIDE2MCwgMjQyLCAyNywgNjcsIDIzNCwgMjMzLCAyMjMsIDc3LCAxNjQsIDIzMiwgMTA4LCAyNDIsIDI3LCAzNywgMjI0LCAKKyAgICAyMzcsIDc4LCAxMDksIDIxNywgMywgMjMyLCAyMTQsIDI0NCwgMTQ2LCAyMjAsIDEzOCwgODcsIDI0MiwgOCwgMjI3LCAxOTgsIAorICAgIDIxNiwgMjQ3LCAyNDIsIDgsIDIyNywgMTk4LCAyMTUsIDczLCAyNDIsIDgsIDIyNywgMTk4LCAyMTYsIDE2MiwgNjcsIDEwOSwgCisgICAgMjM1LCAxNTgsIDc4LCAyMzEsIDE0MCwgNzgsIDIyNSwgMjU1LCAyNTQsIDE0MCwgNzgsIDEwOSwgNDUsIDIzNSwgMjM4LCAKKyAgICAxMDksIDE2MywgMjQ0LCAxMDYsIDIxOSwgMTgsIDE0MSwgMSwgNCwgNjEsIDE0MSwgMSwgNjEsIDE0MSwgMSwgNCwgNzMsIAorICAgIDE0MSwgMSwgNzMsIDE0MSwgMSwgNCwgNzAsIDE0MSwgMSwgNzAsIDE0MSwgMSwgNCwgNzUsIDE0MSwgMSwgNzUsIDE0MSwgMSwgCisgICAgNCwgNzYsIDE0MSwgMSwgNzYsIDE0MSwgMSwgMTc2LCAxNDEsIDEsIDI0MywgMTM1LCAxNDEsIDEsIDIzNCwgOTIsIDE0MSwgCisgICAgMSwgMjQyLCAyMTQsIDE0MSwgMSwgMjMzLCAyMTcsIDE0MSwgMSwgMjQyLCAxMTMsIDE0MSwgMSwgMjM0LCAxODIsIDE0MSwgCisgICAgMSwgMjQzLCA2MiwgMTQxLCAxLCAyMzQsIDI4LCAxNDEsIDEsIDI0MiwgMTc0LCAxNDEsIDEsIDIwNiwgMTQxLCAxLCAyMTAsIAorICAgIDExNiwgMTQxLCAxLCAyMTksIDE5MSwgMTQxLCAxLCAyMTAsIDQ0LCAxNDEsIDEsIDIxOCwgODMsIDE0MSwgMSwgMjEwLCAxMywgCisgICAgMTQxLCAxLCAyMjEsIDE4MSwgMTQxLCAxLCAyMTAsIDk0LCAxNDEsIDEsIDIxOSwgNTgsIDE0MSwgMSwgMjEwLCAyMywgMTQxLCAKKyAgICAxLCAyMTcsIDEwNSwgMTQxLCAxLCAyNDgsIDIyMSwgMTQxLCAxLCAyMTYsIDExNywgMTQxLCAxLCAyNDgsIDMsIDE0MSwgMSwgCisgICAgNCwgMjE1LCAxMTgsIDE0MSwgMSwgMjE1LCAxMTgsIDE0MSwgMSwgMjQ2LCA3OCwgMTQxLCAxLCAyMTcsIDIyLCAxNDEsIDEsIAorICAgIDI0OCwgOTAsIDE0MSwgMSwgMTExLCAxNDEsIDEsIDI0NywgMTQ1LCAxNDEsIDEsIDE5NywgMTQxLCAxLCAyMjgsIDIzMywgCisgICAgMTQxLCAxLCAyMjcsIDIzNywgMTQxLCAxLCAyMjksIDEwNywgMTQxLCAxLCAyMjgsIDc0LCAxNDEsIDEsIDE2MiwgMTQxLCAxLCAKKyAgICAyNTIsIDE5MSwgMTQxLCAxLCAxOTAsIDE0MSwgMSwgMjQxLCAxODAsIDE0MSwgMSwgMjUyLCA2LCAxNDEsIDEsIDIyNSwgCisgICAgMTA4LCAxNDEsIDEsIDI0MCwgMjIyLCAxNDEsIDEsIDI1MSwgMTI1LCAxNDEsIDEsIDIyNCwgMTUwLCAxNDEsIDEsIDI0MSwgCisgICAgMjM4LCAxNDEsIDEsIDI1MiwgNzUsIDE0MSwgMSwgMjI1LCAyMjEsIDE0MSwgMSwgMjQxLCA2OCwgMTQxLCAxLCAyNTEsIAorICAgIDIwNSwgMTQxLCAxLCAyMjUsIDE2LCAxNDEsIDEsIDE4NCwgMTQxLCAxLCAyMzAsIDIzMCwgMTQxLCAxLCAyMzAsIDEwMiwgCisgICAgMTQxLCAxLCAyMzEsIDkxLCAxNDEsIDEsIDIzMCwgMTYxLCAxNDEsIDEsIDQsIDE5MSwgMTQxLCAxLCAxOTEsIDE0MSwgMSwgCisgICAgNCwgMjEwLCAyMTIsIDE0MSwgMSwgMjEwLCAyMTIsIDE0MSwgMSwgNCwgMjEwLCAyNDQsIDE0MSwgMSwgMjEwLCAyNDQsIAorICAgIDE0MSwgMSwgMjA1LCAxNDEsIDEsIDIyMywgMzUsIDE0MSwgMSwgMjIyLCAxNDAsIDE0MSwgMSwgMjIzLCAxMjgsIDE0MSwgMSwgCisgICAgMjIyLCAyMTEsIDE0MSwgMSwgNCwgMjEyLCA2NSwgMTQxLCAxLCAyMTIsIDY1LCAxNDEsIDEsIDIxMSwgMjUwLCAxNDEsIDEsIAorICAgIDIxMiwgMjIsIDE0MSwgMSwgMjExLCAyMjcsIDE0MSwgMSwgMjMwLCAyNSwgMTQxLCAxLCAyMTIsIDExNiwgMTQxLCAxLCA0LCAKKyAgICAxNzYsIDE0MSwgMSwgNCwgMjM0LCAxODIsIDM4LCAyMzQsIDIwMSwgMjEzLCAxMzUsIDIxOSwgMzEsIDc4LCAzOCwgMjM0LCAKKyAgICAyMDEsIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMjM0LCAyMDEsIDIxMywgMTM1LCAyMTksIDMxLCA3OCwgMjM0LCAyMDEsIAorICAgIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMTQxLCAyMzUsIDE1OCwgNzgsIDE0MSwgMjEzLCAxMzUsIDIzNSwgMTU4LCA3OCwgCisgICAgMTQxLCAyNDcsIDIyMSwgMjEwLCAyMjUsIDIzNCwgMjAxLCA1MiwgMjQwLCAxNjgsIDU2LCAxLCA0LCA2MSwgNTYsIDEsIDYxLCAKKyAgICA1NiwgMSwgNCwgNzMsIDU2LCAxLCA3MywgNTYsIDEsIDQsIDcwLCA1NiwgMSwgNzAsIDU2LCAxLCA0LCA3NSwgNTYsIDEsIAorICAgIDc1LCA1NiwgMSwgNCwgNzYsIDU2LCAxLCA3NiwgNTYsIDEsIDE3NiwgNTYsIDEsIDI0MywgMTM1LCA1NiwgMSwgMjM0LCA5MiwgCisgICAgNTYsIDEsIDI0MiwgMjE0LCA1NiwgMSwgMjMzLCAyMTcsIDU2LCAxLCAyNDIsIDExMywgNTYsIDEsIDIzNCwgMTgyLCA1NiwgCisgICAgMSwgMjQzLCA2MiwgNTYsIDEsIDIzNCwgMjgsIDU2LCAxLCAyNDIsIDE3NCwgNTYsIDEsIDIwNiwgNTYsIDEsIDIxMCwgMTE2LCAKKyAgICA1NiwgMSwgMjE5LCAxOTEsIDU2LCAxLCAyMTAsIDQ0LCA1NiwgMSwgMjE4LCA4MywgNTYsIDEsIDIxMCwgMTMsIDU2LCAxLCAKKyAgICAyMjEsIDE4MSwgNTYsIDEsIDIxMCwgOTQsIDU2LCAxLCAyMTksIDU4LCA1NiwgMSwgMjEwLCAyMywgNTYsIDEsIDIxNywgCisgICAgMTA1LCA1NiwgMSwgMjQ4LCAyMjEsIDU2LCAxLCAyMTYsIDExNywgNTYsIDEsIDI0OCwgMywgNTYsIDEsIDQsIDIxNSwgMTE4LCAKKyAgICA1NiwgMSwgMjE1LCAxMTgsIDU2LCAxLCAyNDYsIDc4LCA1NiwgMSwgMjE3LCAyMiwgNTYsIDEsIDI0OCwgOTAsIDU2LCAxLCAKKyAgICAxMTEsIDU2LCAxLCAyNDcsIDE0NSwgNTYsIDEsIDE5NywgNTYsIDEsIDIyOCwgMjMzLCA1NiwgMSwgMjI3LCAyMzcsIDU2LCAKKyAgICAxLCAyMjksIDEwNywgNTYsIDEsIDIyOCwgNzQsIDU2LCAxLCAxNjIsIDU2LCAxLCAyNTIsIDE5MSwgNTYsIDEsIDE5MCwgNTYsIAorICAgIDEsIDI0MSwgMTgwLCA1NiwgMSwgMjUyLCA2LCA1NiwgMSwgMjI1LCAxMDgsIDU2LCAxLCAyNDAsIDIyMiwgNTYsIDEsIDI1MSwgCisgICAgMTI1LCA1NiwgMSwgMjI0LCAxNTAsIDU2LCAxLCAyNDEsIDIzOCwgNTYsIDEsIDI1MiwgNzUsIDU2LCAxLCAyMjUsIDIyMSwgCisgICAgNTYsIDEsIDI0MSwgNjgsIDU2LCAxLCAyNTEsIDIwNSwgNTYsIDEsIDIyNSwgMTYsIDU2LCAxLCAxODQsIDU2LCAxLCAyMzAsIAorICAgIDIzMCwgNTYsIDEsIDIzMCwgMTAyLCA1NiwgMSwgMjMxLCA5MSwgNTYsIDEsIDIzMCwgMTYxLCA1NiwgMSwgNCwgMTkxLCA1NiwgCisgICAgMSwgMTkxLCA1NiwgMSwgNCwgMjEwLCAyMTIsIDU2LCAxLCAyMTAsIDIxMiwgNTYsIDEsIDQsIDIxMCwgMjQ0LCA1NiwgMSwgCisgICAgMjEwLCAyNDQsIDU2LCAxLCAyMDUsIDU2LCAxLCAyMjMsIDM1LCA1NiwgMSwgMjIyLCAxNDAsIDU2LCAxLCAyMjMsIDEyOCwgCisgICAgNTYsIDEsIDIyMiwgMjExLCA1NiwgMSwgNCwgMjEyLCA2NSwgNTYsIDEsIDIxMiwgNjUsIDU2LCAxLCAyMTEsIDI1MCwgNTYsIAorICAgIDEsIDIxMiwgMjIsIDU2LCAxLCAyMTEsIDIyNywgNTYsIDEsIDIzMCwgMjUsIDU2LCAxLCAyMTIsIDExNiwgNTYsIDEsIDQsIAorICAgIDE3NiwgNTYsIDEsIDQsIDIzNCwgMTgyLCA1NiwgMSwgMjE0LCAyNywgNTYsIDEsIDIxMywgMTc2LCA1NiwgMSwgMjEzLCAKKyAgICAyNTUsIDU2LCAxLCAyMTMsIDEzOCwgNTYsIDIzMCwgMjI0LCAyNDcsIDEyMCwgMjM0LCAyMDEsIDIyNCwgMTczLCAyMTksIAorICAgIDMxLCA3OCwgNTYsIDIzNSwgMTU4LCA3OCwgNTYsIDIxMywgMTM1LCAyMzUsIDE1OCwgNzgsIDU2LCAyNDcsIDIyMSwgMjMzLCAKKyAgICAyNTUsIDI1MSwgMTg0LCAxLCAyNTMsIDE1OCwgMjUxLCAxODQsIDEsIDIyNiwgMTA1LCAyNTEsIDE4NCwgMSwgMTkzLCAyNTEsIAorICAgIDE4NCwgMSwgMjQ1LCA2LCAyNTEsIDE4NCwgMSwgMjQ5LCA2MCwgMjUxLCAxODQsIDEsIDIxNywgMTUyLCAyNTEsIDE4NCwgMSwgCisgICAgMjMwLCAyNSwgMjUxLCAxODQsIDEsIDE1NiwgMjUxLCAxODQsIDEsIDI0MywgMjAyLCAyNTEsIDE4NCwgMSwgMjM1LCAyMywgCisgICAgMjUxLCAxODQsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyMzUsIDE0NCwgMjUxLCAxODQsIDEsIDIyNCwgOTYsIDI1MSwgCisgICAgMTg0LCAxLCAyMTEsIDE3OCwgMjUxLCAxODQsIDEsIDIxMCwgODMsIDI1MSwgMTg0LCAxLCAyNTAsIDE1OCwgMjUxLCAxODQsIAorICAgIDEsIDIyMCwgMTA0LCAyNTEsIDE4NCwgMSwgMTUzLCAyNTEsIDE4NCwgMSwgMjEwLCAxNTksIDI1MSwgMTg0LCAxLCAyNTEsIAorICAgIDY2LCAyNTEsIDE4NCwgMSwgMjIyLCA5MSwgMjUxLCAxODQsIDEsIDYxLCAyNTEsIDE4NCwgMSwgNzYsIDI1MSwgMTg0LCAxLCAKKyAgICA3NSwgMjUxLCAxODQsIDEsIDI0NSwgMTk3LCAyNTEsIDE4NCwgMSwgMjU0LCAyMDEsIDI1MSwgMTg0LCAxLCAyNDUsIDE5NSwgCisgICAgMjUxLCAxODQsIDEsIDI1MywgMTkyLCAyNTEsIDE4NCwgMSwgMjI2LCAxMzQsIDI1MSwgMTg0LCAxLCAyNTQsIDEyMywgMjUxLCAKKyAgICAxODQsIDEsIDI0NSwgMTUwLCAyNTEsIDE4NCwgMSwgMjU0LCAxMTUsIDI1MSwgMTg0LCAxLCAyNDUsIDEzOCwgMjUxLCAxODQsIAorICAgIDEsIDI0NSwgOTIsIDI1MSwgMTg0LCAxLCA3MywgMjUxLCAxODQsIDEsIDcwLCAyNTEsIDE4NCwgMSwgMjM1LCAxNTYsIDI1MSwgCisgICAgMTg0LCAxLCAyMTQsIDEwNSwgMjUxLCAxODQsIDEsIDIyOSwgNzksIDI1MSwgMTg0LCAxLCAyNDIsIDE3OCwgMjUxLCAxODQsIAorICAgIDEsIDIzNiwgMzQsIDI0LCAxLCAyMzQsIDU4LCAyNCwgMSwgMjE4LCAyMTUsIDI0LCAxLCAyMzQsIDUxLCAyNCwgMSwgMjI4LCAKKyAgICAyMjYsIDI0LCAxLCAyMjgsIDIyNCwgMjQsIDEsIDIyOCwgMjIzLCAyNCwgMSwgMjE2LCAxMDEsIDI0LCAxLCAyMTgsIDIwNCwgCisgICAgMjQsIDEsIDIyMywgMjYsIDI0LCAxLCAyMjMsIDIxLCAyNCwgMSwgMjIzLCAxOCwgMjQsIDEsIDIyMywgMTEsIDI0LCAxLCAKKyAgICAyMjMsIDYsIDI0LCAxLCAyMjMsIDEsIDI0LCAxLCAyMjMsIDEyLCAyNCwgMSwgMjIzLCAyNCwgMjQsIDEsIDIzMCwgMjE3LCAKKyAgICAyNCwgMSwgMjI1LCA5NSwgMjQsIDEsIDIxOCwgMjEyLCAyNCwgMSwgMjI1LCA4NCwgMjQsIDEsIDIxOSwgMTQ4LCAyNCwgMSwgCisgICAgMjE4LCAyMDksIDI0LCAxLCAyMzYsIDU2LCAyNCwgMSwgMjUwLCA0NiwgMjQsIDEsIDIxOCwgMjE5LCAyNCwgMSwgMjUwLCAKKyAgICAxMDYsIDI0LCAxLCAyMzQsIDExMCwgMjQsIDEsIDIxNiwgMTczLCAyNCwgMSwgMjI1LCAxMzEsIDI0LCAxLCAyNDEsIDE3MiwgCisgICAgMjQsIDEsIDYxLCAyNCwgMSwgMjU0LCAyNDMsIDI0LCAxLCAxOTEsIDI0LCAxLCAyMTEsIDkyLCAyNCwgMSwgMjQ1LCAxMTcsIAorICAgIDI0LCAxLCA3NSwgMjQsIDEsIDIxMSwgMzYsIDI0LCAxLCAyMTEsIDQ3LCAyNCwgMSwgNzYsIDI0LCAxLCAyMTIsIDY1LCAyNCwgCisgICAgMSwgMjEyLCA2MiwgMjQsIDEsIDIyNiwgMjM0LCAyNCwgMSwgMjEwLCAyNDQsIDI0LCAxLCA3MCwgMjQsIDEsIDIxMiwgMTEsIAorICAgIDI0LCAxLCAyMTIsIDIyLCAyNCwgMSwgMjExLCAyNTAsIDI0LCAxLCAyMTAsIDIxMiwgMjQsIDEsIDI0NSwgNTUsIDI0LCAxLCAKKyAgICAyMTEsIDgsIDI0LCAxLCA3MywgMjQsIDI0NCwgMTAzLCAyNCwgMSwgMjE4LCAyMTMsIDI0LCAxLCAyMjgsIDIxNiwgMjQsIDEsIAorICAgIDIyOCwgMjE4LCAyNCwgMSwgMjI4LCAyMjEsIDI0LCAxLCAyMjMsIDE5LCAyNCwgMSwgMjIzLCAwLCAyNCwgMSwgMjIzLCA4LCAKKyAgICAyNCwgMSwgMjIzLCAxMywgMjQsIDEsIDIyMiwgMjU0LCAyNCwgMSwgMjMwLCAyMTAsIDI0LCAxLCAyMzAsIDIwNywgMjQsIDEsIAorICAgIDIzMCwgMjExLCAyNCwgMSwgMjM0LCAyMjEsIDI0LCAxLCAyMjUsIDkwLCAyNCwgMSwgMjI1LCA3NiwgMjQsIDEsIDIyNSwgCisgICAgODIsIDI0LCAxLCAyMjUsIDc5LCAyNCwgMSwgMjI1LCA5MywgMjQsIDEsIDIyNSwgNzcsIDI0LCAxLCAyMzQsIDIxOSwgMjQsIAorICAgIDEsIDIzNCwgMjE3LCAyNCwgMSwgMjE5LCAxNDEsIDI0LCAxLCAyMTksIDEzOSwgMjQsIDEsIDIxOSwgMTMxLCAyNCwgMSwgCisgICAgMjE5LCAxMzYsIDI0LCAxLCAyMTksIDE0NiwgMjQsIDEsIDIyNiwgMzIsIDI0LCAxLCAyMTgsIDIxNiwgMjQsIDEsIDIxMSwgCisgICAgMjYsIDI0LCAxLCAyMTEsIDIyLCAyNCwgMSwgMjExLCAyMywgMjQsIDEsIDIzNCwgMjIwLCAyNCwgMSwgMjE4LCAyMTcsIDI0LCAKKyAgICAxLCAyMTEsIDMyLCAyNCwgMSwgMjEwLCAyMzgsIDI0LCAxLCAyMTAsIDIzNywgMjQsIDEsIDIxMCwgMjQwLCAyNCwgMSwgCisgICAgMjEwLCAyMDMsIDI0LCAxLCAyMTAsIDIwNCwgMjQsIDEsIDIxMCwgMjA3LCAyNCwgMSwgMjU0LCAzNCwgMjQsIDEsIDI1NCwgCisgICAgMjgsIDEwOSwgMjU0LCA5OSwgMjMyLCAyMDMsIDc4LCAxMDksIDI1NCwgOTksIDIyMywgNTAsIDc4LCAxMDksIDI1NCwgOTksIAorICAgIDEyMywgNzgsIDEwOSwgMjU0LCA5OSwgMTEzLCA3OCwgMTA5LCAyNTQsIDk5LCAxMzQsIDc4LCAxMDksIDI1NCwgOTksIDI0NCwgCisgICAgMTEsIDc4LCAxMDksIDI1NCwgOTksIDIxNiwgMTQsIDc4LCAxMDksIDI1NCwgOTksIDIzMCwgMjI0LCA3OCwgMTA5LCAyNTQsIAorICAgIDk5LCAyNTEsIDE3NSwgNzgsIDEwOSwgMjU0LCA5OSwgMjQ0LCA5MiwgNzgsIDEwOSwgMjU0LCA5OSwgMjIxLCAxNzYsIDc4LCAKKyAgICAxMDksIDI1NCwgOTksIDIxNiwgMTY5LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDQsIDQsIDc4LCAxMDksIDI1NCwgOTksIDI0MSwgCisgICAgMjI0LCA3OCwgMTA5LCAyNTQsIDk5LCAyNDUsIDIyNCwgNzgsIDEwOSwgMjU0LCA5OSwgMjMxLCAxODYsIDc4LCAyNTEsIAorICAgIDE4NCwgMSwgMjUxLCAxMjUsIDI1MSwgMTg0LCAxLCAyMTAsIDQ0LCAyNTEsIDE4NCwgMSwgMjM1LCAxMDgsIDI1MSwgMTg0LCAKKyAgICAxLCAyNDIsIDExMywgMjUxLCAxODQsIDEsIDI0NSwgMjA5LCAyNTEsIDE4NCwgMSwgMjQ1LCAxMzUsIDI1MSwgMTg0LCAxLCAKKyAgICAyMjYsIDE4MywgMjUxLCAxODQsIDEsIDIyNiwgMTg3LCAyNTEsIDE4NCwgMSwgMjM1LCAxNzksIDI1MSwgMTg0LCAxLCAyNTQsIAorICAgIDEwMSwgMjUxLCAxODQsIDEsIDIzNSwgMjI0LCAyNTEsIDE4NCwgMSwgMjE0LCAxNjgsIDI1MSwgMTg0LCAxLCAyMzYsIDE2LCAKKyAgICAyNTEsIDE4NCwgMSwgMjI5LCA1NywgMjUxLCAxODQsIDEsIDI1NCwgMTk1LCAyNTEsIDE4NCwgMSwgMjUzLCAxODcsIDI1MSwgCisgICAgMTg0LCAxLCAyNTQsIDEzNiwgMjUxLCAxODQsIDEsIDIyNiwgMjA0LCAyNTEsIDE4NCwgMSwgMjI2LCAxODksIDI1MSwgMTg0LCAKKyAgICAxLCAyMzUsIDIyMSwgMjUxLCAxODQsIDQwLCAxLCAyMjYsIDEwNSwgMjUxLCAxODQsIDQwLCAxLCAyMTcsIDE1MiwgMjUxLCAKKyAgICAxODQsIDQwLCAxLCAyMzUsIDIzLCAyNTEsIDE4NCwgNDAsIDEsIDI0MiwgNjAsIDI1MSwgMTg0LCAxLCAyNDIsIDI1MCwgCisgICAgMjUxLCAxODQsIDEsIDIzMiwgMjU1LCAyNTEsIDE4NCwgMSwgMjA5LCAyNTAsIDksIDIxOCwgMTAzLCAyMTcsIDE1MiwgOSwgCisgICAgMjE4LCAxMDMsIDIxMiwgNCwgOSwgMjE4LCAxMDMsIDIxMSwgMTU4LCA5LCAyMTgsIDEwMywgMjUxLCA3OSwgOSwgMjE4LCAKKyAgICAxMDMsIDIxNywgMjU0LCA5LCAyMTgsIDEwMywgMjQwLCAxNTgsIDksIDIxOCwgMTAzLCAyNDAsIDE2MiwgOSwgMjE4LCAxMDMsIAorICAgIDI0MCwgMjMxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTksIDksIDIxOCwgMTAzLCAyMTcsIDE1NSwgOSwgMjE4LCAxMDMsIDI0MCwgCisgICAgMTYxLCA5LCAyMTgsIDEwMywgMjQwLCAxNTcsIDksIDIxOCwgMTAzLCAyNDAsIDIyOSwgOSwgMjE4LCAxMDMsIDI0MCwgMTYwLCAKKyAgICA5LCAyMTgsIDEwMywgMjQwLCAxNTYsIDksIDIxOCwgMTAzLCAyMzAsIDI1LCA5LCAyMTgsIDEwMywgMjQyLCA2MCwgOSwgCisgICAgMjE4LCAxMDMsIDIyMiwgOTEsIDksIDIxOCwgMTAzLCAyMjYsIDEwNSwgOSwgMjE4LCAxMDMsIDIxOSwgMjEsIDksIDIxOCwgCisgICAgMTAzLCAyNDksIDYwLCA5LCAyMTgsIDEwMywgMjQwLCAxNjMsIDksIDIxOCwgMTAzLCAyNDEsIDE5MCwgOSwgMjE4LCAxMDMsIAorICAgIDIxNywgMTY0LCA5LCAyMTgsIDEwMywgMjE3LCAyMzMsIDksIDIxOCwgMTAzLCAyMTgsIDE2OCwgOSwgMjE4LCAxMDMsIDIyMCwgCisgICAgMTEwLCA5LCAyMTgsIDEwMywgMjI1LCAyMjQsIDksIDIxOCwgMTAzLCAyMjQsIDk4LCA5LCAyMTgsIDEwMywgMjE2LCA0MywgCisgICAgOSwgMjE4LCAxMDMsIDIxNywgMTU0LCA5LCAyMTgsIDEwMywgMjE3LCAyNDQsIDksIDIxOCwgMTAzLCAyNDAsIDE3MCwgOSwgCisgICAgMjE4LCAxMDMsIDI0MCwgMTU1LCA5LCAyMTgsIDEwMywgMjI1LCAxNDksIDksIDIxOCwgMTAzLCAyMjQsIDk2LCA1NiwgMSwgCisgICAgNCwgMjMzLCAyMTcsIDU2LCAxLCA0LCAyMTksIDE5MSwgNTYsIDEsIDQsIDIxOCwgODMsIDU2LCAxLCA0LCAxMTEsIDU2LCAxLCAKKyAgICA0LCAyMjcsIDIzNywgNTYsIDEsIDQsIDE2MiwgNTYsIDEsIDQsIDI0MSwgMTgwLCA1NiwgMSwgNCwgMjQwLCAyMjIsIDU2LCAKKyAgICAxLCA0LCAyNDEsIDIzOCwgNTYsIDEsIDQsIDI0MSwgNjgsIDU2LCAxLCA0LCAyMzAsIDEwMiwgNTYsIDEsIDQsIDIwNSwgNTYsIAorICAgIDEsIDQsIDIyMywgMzUsIDU2LCAxLCA0LCAyMjIsIDE0MCwgNTYsIDEsIDQsIDIyMywgMTI4LCA1NiwgMSwgNCwgMjIyLCAKKyAgICAyMTEsIDg4LCAyNCwgMjM0LCA1OCwgODgsIDI0LCAyMjgsIDIyNiwgODgsIDI0LCAyMTYsIDEwMSwgODgsIDI0LCAyMjMsIAorICAgIDI2LCA4OCwgMjQsIDIzMCwgMjE3LCA4OCwgMjQsIDIyNSwgOTUsIDg4LCAyNCwgMjE5LCAxNDgsIDg4LCAyNCwgMjM2LCA1NiwgCisgICAgODgsIDI0LCAyNTAsIDQ2LCA4OCwgMjQsIDI1MCwgMTA2LCA4OCwgMjQsIDIzNCwgMTEwLCA4OCwgMjQsIDIxNiwgMTczLCAKKyAgICA4OCwgMjQsIDIyNSwgMTMxLCA4OCwgMjQsIDI0MSwgMTcyLCA4OCwgMjQsIDIzNCwgNTksIDYxLCA4OCwgMjQsIDIyOCwgCisgICAgMjI3LCA2MSwgODgsIDI0LCAyMTYsIDEwMiwgNjEsIDg4LCAyNCwgMjIzLCAyNywgNjEsIDg4LCAyNCwgMjMwLCAyMTgsIDYxLCAKKyAgICA4OCwgMjQsIDIyNSwgOTYsIDYxLCA4OCwgMjQsIDIxOSwgMTQ5LCA2MSwgODgsIDI0LCAyMzYsIDU3LCA2MSwgODgsIDI0LCAKKyAgICAyNTAsIDQ3LCA2MSwgODgsIDI0LCAyNTAsIDEwNywgNjEsIDg4LCAyNCwgMjM0LCAxMTEsIDYxLCA4OCwgMjQsIDIxNiwgCisgICAgMTc0LCA2MSwgODgsIDI0LCAyMjUsIDEzMiwgNjEsIDg4LCAyNCwgMjQxLCAxNzMsIDYxLCA4OCwgMjQsIDI1MCwgNDcsIDcwLCAKKyAgICA4OCwgMjM0LCAzLCAxMzUsIDIyNiwgMjE3LCA4OCwgMjM0LCAzLCAxMzUsIDE0NCwgMjQwLCAyMjIsIDg4LCAxNTQsIDExMCwgCisgICAgODgsIDE1NCwgMTA1LCA4OCwgMTU0LCAxNTgsIDg4LCAxNTQsIDE2MSwgODgsIDE1NCwgMTg5LCA4OCwgMTU0LCAxOTQsIDg4LCAKKyAgICAxNTQsIDE5OCwgODgsIDE1NCwgMTk1LCA4OCwgMTU0LCAyMDAsIDg4LCAxNTQsIDIxNiwgMjQ3LCA4OCwgMTU0LCAyMzAsIAorICAgIDEyOCwgODgsIDE1NCwgMjQ0LCA5NiwgODgsIDE1NCwgMjEyLCA0MCwgODgsIDE1NCwgMjExLCAyMTQsIDg4LCAxNTQsIDIzMSwgCisgICAgMzksIDg4LCAxNTQsIDI0NSwgMjIzLCA4OCwgMTU0LCAyMTgsIDM3LCA4OCwgMTU0LCAyMTgsIDEzMiwgODgsIDE1NCwgMjQxLCAKKyAgICAyNDQsIDg4LCAxNTQsIDIxOSwgNTQsIDg4LCAxNTQsIDIyOSwgMjA0LCA4OCwgMTU0LCAyMTksIDQsIDg4LCAxNTQsIDI0NCwgCisgICAgMTAyLCA4OCwgMTU0LCAyNDksIDIwMCwgODgsIDE1NCwgMjMzLCAxMjUsIDg4LCAxNTQsIDIyMywgNzEsIDg4LCAxNTQsIAorICAgIDI1MSwgMTUsIDg4LCAxNTQsIDIxOCwgODcsIDg4LCAxNTQsIDIxOCwgMjAsIDg4LCAxNTQsIDI0NSwgMTI3LCA4OCwgMTU0LCAKKyAgICAyMjMsIDYzLCA4OCwgMTU0LCAyNTQsIDE1MCwgODgsIDE1NCwgMjQ0LCAxMjgsIDg4LCAxNTQsIDIyMywgNjEsIDg4LCAxNTQsIAorICAgIDIyMCwgMTU2LCA4OCwgMTU0LCAyMjMsIDEyNywgMzcsIDE1NCwgMjI0LCAxMiwgMzcsIDE1NCwgMjM0LCA4MCwgMzcsIDE1NCwgCisgICAgMjIxLCAxOTgsIDM3LCAxNTQsIDIzMywgMjU1LCAzNywgNTQsIDIxNiwgMjQ4LCAyMjYsIDE5NywgODUsIDIxOCwgMjM0LCAKKyAgICAzNywgNTQsIDIxNSwgNzQsIDIyNiwgMTk3LCA4NSwgMjE4LCAyMzQsIDM3LCA1NCwgMjE2LCAxNjMsIDIyNiwgMTk3LCA4NSwgCisgICAgMjE4LCAyMzQsIDM3LCA1NCwgMjQ0LCAxNiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDQsIDExNSwgMjI2LCAKKyAgICAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMTksIDExMiwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyMjAsIAorICAgIDExNywgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgMzcsIDU0LCAyNDUsIDE4NSwgMjI2LCAxOTcsIDg1LCAyMTgsIDIzNCwgCisgICAgMjI1LCAyNTEsIDUwLCAzNywgNTQsIDIxNSwgNzQsIDExMCwgMzcsIDU0LCAyMTUsIDc0LCAxMDUsIDM3LCA1NCwgMjE1LCAKKyAgICA3NCwgMTU4LCAzNywgNTQsIDIxNSwgNzQsIDE2MSwgMzcsIDU0LCAyMTUsIDc0LCAxODksIDM3LCA1NCwgMjE1LCA3NCwgCisgICAgMTk0LCAzNywgNTQsIDIxNSwgNzQsIDE5OCwgMzcsIDU0LCAyMTUsIDc0LCAxOTUsIDM3LCA1NCwgMjE1LCA3NCwgMjAwLCAKKyAgICAzNywgNTQsIDIxNiwgMTYyLCAzNywgNTQsIDIxNiwgMTYzLCAxMTAsIDM3LCA1NCwgMjE2LCAxNjMsIDEwNSwgMzcsIDU0LCAKKyAgICAyMTYsIDE2MywgMTU4LCAzNywgNTQsIDIxNiwgMTYzLCAxNjEsIDM3LCA1NCwgMjE2LCAxNjMsIDE4OSwgMzcsIDI0LCAyMzQsIAorICAgIDU4LCAzNywgMjQsIDIyOCwgMjI2LCAzNywgMjQsIDIxNiwgMTAxLCAzNywgMjQsIDIyMywgMjYsIDM3LCAyNCwgMjMwLCAKKyAgICAyMTcsIDM3LCAyNCwgMjI1LCA5NSwgMzcsIDI0LCAyMTksIDE0OCwgMzcsIDI0LCAyMzYsIDU2LCAzNywgMjQsIDI1MCwgNDYsIAorICAgIDM3LCAyNCwgMjUwLCAxMDYsIDM3LCAyNCwgMjM0LCAxMTAsIDM3LCAyNCwgMjE2LCAxNzMsIDM3LCAyNCwgMjI1LCAxMzEsIAorICAgIDM3LCAyNCwgMjQxLCAxNzIsIDM3LCAyNCwgMjM0LCA1OSwgNjEsIDM3LCAyNCwgMjI4LCAyMjcsIDYxLCAzNywgMjQsIDIxNiwgCisgICAgMTAyLCA2MSwgMzcsIDI0LCAyMjMsIDI3LCA2MSwgMzcsIDI0LCAyMzAsIDIxOCwgNjEsIDM3LCAyNCwgMjI1LCA5NiwgNjEsIAorICAgIDM3LCAyNCwgMjE5LCAxNDksIDYxLCAzNywgMjQsIDIzNiwgNTcsIDYxLCAzNywgMjQsIDI1MCwgNDcsIDYxLCAzNywgMjQsIAorICAgIDI1MCwgMTA3LCA2MSwgMzcsIDI0LCAyMzQsIDExMSwgNjEsIDM3LCAyNCwgMjE2LCAxNzQsIDYxLCAzNywgMjQsIDIyNSwgCisgICAgMTMyLCA2MSwgMzcsIDI0LCAyNDEsIDE3MywgNjEsIDM3LCAyMzQsIDMsIDEzNSwgMjUwLCAxNDgsIDM3LCAyMzQsIDMsIAorICAgIDEzNSwgMjM1LCA0NywgMzcsIDI0LCAyMzYsIDU3LCA3MCwgMjM0LCAzLCAyMTgsIDE1OSwgODcsIDM3LCAxNTQsIDExMCwgCisgICAgMzcsIDE1NCwgMTA1LCAzNywgMTU0LCAxNTgsIDM3LCAxNTQsIDE2MSwgMzcsIDE1NCwgMTg5LCAzNywgMTU0LCAxOTQsIDM3LCAKKyAgICAxNTQsIDE5OCwgMzcsIDE1NCwgMTk1LCAzNywgMTU0LCAyMDAsIDM3LCAxNTQsIDIxNiwgMjQ3LCAzNywgMTU0LCAyMzAsIAorICAgIDEyOCwgMzcsIDE1NCwgMjQ0LCA5NiwgMzcsIDE1NCwgMjEyLCA0MCwgMzcsIDE1NCwgMjExLCAyMTQsIDM3LCAxNTQsIDIzMSwgCisgICAgMzksIDM3LCAxNTQsIDI0NSwgMjIzLCAzNywgMTU0LCAyMTgsIDM3LCAzNywgMTU0LCAyMTgsIDEzMiwgMzcsIDE1NCwgMjQxLCAKKyAgICAyNDQsIDM3LCAxNTQsIDIxOSwgNTQsIDM3LCAxNTQsIDIyOSwgMjA0LCAzNywgMTU0LCAyMTksIDQsIDM3LCAxNTQsIDI0NCwgCisgICAgMTAyLCAzNywgMTU0LCAyNDksIDIwMCwgMzcsIDE1NCwgMjMzLCAxMjUsIDM3LCAxNTQsIDIyMSwgMTc0LCAzNywgMTU0LCAKKyAgICAyMzEsIDE4OSwgMzcsIDE1NCwgMjQ0LCAxMzcsIDM3LCAxNTQsIDIxOCwgNDksIDM3LCAxNTQsIDI0NSwgMzQsIDM3LCAxNTQsIAorICAgIDIyNCwgMTg3LCAzNywgMTU0LCAyNTMsIDE5NiwgMzcsIDE1NCwgMjM1LCAxNTksIDM3LCAxNTQsIDIyMywgNjEsIDM3LCAKKyAgICAxNTQsIDI0OSwgMTY0LCAzNywgMTU0LCAyNDksIDE1NSwgMzcsIDE1NCwgMjQxLCAxNjUsIDM3LCAxNTQsIDI1MCwgMTc0LCAKKyAgICAzNywgMTU0LCAyMzIsIDExMCwgMzcsIDE1NCwgMjMzLCA0NiwgMzcsIDE1NCwgMjIyLCAyNTEsIDM3LCAxNTQsIDIzMSwgODMsIAorICAgIDM3LCAxNTQsIDIyMywgODcsIDM3LCAxNTQsIDIxOCwgODcsIDM3LCAxNTQsIDIxOCwgMjAsIDM3LCAxNTQsIDI0NSwgMTI3LCAKKyAgICAzNywgMTU0LCAyMjMsIDYzLCAzNywgMTU0LCAyNTQsIDE1MCwgMzcsIDE1NCwgMjI4LCAyMTIsIDM3LCA1NCwgMjE2LCAxNjMsIAorICAgIDE5NCwgMzcsIDU0LCAyMTYsIDE2MywgMTk4LCAzNywgNTQsIDIxNiwgMTYzLCAxOTUsIDM3LCA1NCwgMjE2LCAxNjMsIDIwMCwgCisgICAgMzcsIDU0LCAyNDQsIDE1LCAzNywgNTQsIDI0NCwgMTYsIDExMCwgMzcsIDU0LCAyNDQsIDE2LCAxMDUsIDM3LCA1NCwgMjQ0LCAKKyAgICAxNiwgMTU4LCAzNywgNTQsIDI0NCwgMTYsIDE2MSwgMzcsIDU0LCAyNDQsIDE2LCAxODksIDM3LCA1NCwgMjQ0LCAxNiwgCisgICAgMTk0LCAzNywgNTQsIDI0NCwgMTYsIDE5OCwgMzcsIDU0LCAyNDQsIDE2LCAxOTUsIDM3LCA1NCwgMjQ0LCAxNiwgMjAwLCAKKyAgICAzNywgNTQsIDI0NCwgMTE0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMzUsIDEzMywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgCisgICAgMjQ0LCAxNDgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIzMSwgMTYwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNTQsIDQ3LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyMzEsIDEzMiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjM1LCA0NSwgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjM1LCA0NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjUzLCAxODgsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDIyMCwgCisgICAgMTM2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyMjYsIDIzOSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjI4LCA0MCwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCA4NSwgNDIsIDI0MSwgMTkwLCA0MiwgMjQ1LCA4OCwgNDIsIDI0NSwgNDMsIDIzMiwgCisgICAgMjE5LCAyMzIsIDI0MCwgNTAsIDM3LCA1NiwgNjEsIDM3LCA1NiwgNzMsIDM3LCA1NiwgNzAsIDM3LCA1NiwgNzUsIDM3LCAKKyAgICA1NiwgNzYsIDM3LCA1NiwgMTc2LCAzNywgNTYsIDIzNCwgOTIsIDM3LCA1NiwgMjMzLCAyMTcsIDM3LCA1NiwgMjM0LCAxODIsIAorICAgIDM3LCA1NiwgMjM0LCAyOCwgMzcsIDU2LCAyMDYsIDM3LCA1NiwgMjE5LCAxOTEsIDM3LCA1NiwgMjE4LCA4MywgMzcsIDU2LCAKKyAgICAyMjEsIDE4MSwgMzcsIDU2LCAyMTksIDU4LCAzNywgNTYsIDIxNywgMTA1LCAzNywgNTYsIDIxNiwgMTE3LCAzNywgNTYsIAorICAgIDIxNSwgMTE4LCAzNywgNTYsIDIxNywgMjIsIDM3LCA1NiwgMTExLCAzNywgNTYsIDE5NywgMzcsIDU2LCAyMjgsIDIzMywgCisgICAgMzcsIDU2LCAyMjcsIDIzNywgMzcsIDU2LCAyMjksIDEwNywgMzcsIDU2LCAyMjgsIDc0LCAzNywgNTYsIDE2MiwgMzcsIDU2LCAKKyAgICAyNDEsIDE4MCwgMzcsIDU2LCAyNDAsIDIyMiwgMzcsIDU2LCAyNDEsIDIzOCwgMzcsIDU2LCAyNDEsIDY4LCAzNywgNTYsIAorICAgIDE4NCwgMzcsIDU2LCAyMzAsIDIzMCwgMzcsIDU2LCAyMzAsIDEwMiwgMzcsIDU2LCAyMzEsIDkxLCAzNywgNTYsIDIzMCwgCisgICAgMTYxLCAzNywgNTYsIDE5MSwgMzcsIDU2LCAyMTAsIDIxMiwgMzcsIDU2LCAyMTAsIDI0NCwgMzcsIDU2LCAyMDUsIDM3LCAKKyAgICA1NiwgMjIzLCAzNSwgMzcsIDU2LCAyMjIsIDE0MCwgMzcsIDU2LCAyMjMsIDEyOCwgMzcsIDU2LCAyMjIsIDIxMSwgMzcsIAorICAgIDU2LCAyMTIsIDY1LCAzNywgNTYsIDIxMSwgMjUwLCAzNywgNTYsIDIxMiwgMjIsIDM3LCA1NiwgMjExLCAyMjcsIDQyLCAKKyAgICAyNTQsIDcxLCA0MiwgMjUzLCAyMzksIDQyLCAyNTQsIDk1LCA0MiwgMjU1LCAzMSwgNDIsIDIzNSwgMjI2LCA0MiwgMjM1LCAKKyAgICAxOTYsIDQyLCAyMTQsIDE2NiwgNDIsIDI0NSwgNjYsIDQyLCAyNDUsIDIwNiwgNDIsIDIyNiwgMTg2LCA0MiwgMjI2LCAxODAsIAorICAgIDQyLCAyMzQsIDI0NSwgNDIsIDIzNCwgMjE0LCA0MiwgMjM0LCAyMTEsIDQyLCAyNDMsIDkyLCA0MiwgMjQzLCAxMDEsIDQyLCAKKyAgICAyNDIsIDIwNCwgNDIsIDI0MiwgMjAwLCA0MiwgMjMzLCAxNTAsIDQyLCAyNDIsIDE5MywgNDIsIDIzNCwgNzIsIDQyLCAyMzQsIAorICAgIDcxLCA0MiwgMjM0LCA3MCwgNDIsIDIzNCwgNjksIDQyLCAyNDIsIDg2LCA0MiwgMjQyLCA4NSwgNDIsIDIzMywgMTkzLCA0MiwgCisgICAgMjMzLCAxOTUsIDQyLCAyMzQsIDE3OCwgNDIsIDIzNCwgMSwgNDIsIDIzNCwgOCwgNDIsIDIyMiwgMTYsIDQyLCAyMjEsIAorICAgIDIzNywgNDIsIDIxOSwgMTI5LCA0MiwgMjIwLCAxNDEsIDQyLCAyMjAsIDE0MCwgNDIsIDI0OCwgMjE4LCA0MiwgMjQ4LCAzNiwgCisgICAgNDIsIDI0NywgMTIxLCA0MiwgMjE2LCAzMiwgNDIsIDIyOSwgMjAwLCA0MiwgMjI4LCA0MSwgNDIsIDI0MiwgMzIsIDQyLCAKKyAgICAyMjYsIDg0LCA0MiwgMjI2LCA4MywgNDIsIDI1MiwgMTg4LCA0MiwgMjI1LCAxMDUsIDQyLCAyMjUsIDY5LCA0MiwgMjI1LCAKKyAgICA3MCwgNDIsIDI1MSwgMjM0LCA0MiwgMjQwLCAyMjEsIDQyLCAyNDAsIDIxNywgNDIsIDI1MSwgOTEsIDQyLCAyNDAsIDIwNCwgCisgICAgNDIsIDI0MSwgMjE1LCA0MiwgMjI1LCAxNTksIDQyLCAyMjUsIDE5NCwgNDIsIDI0MSwgMTk4LCA0MiwgMjI1LCAxOTEsIDQyLCAKKyAgICAyMjUsIDIwNywgNDIsIDI1MiwgNjEsIDQyLCAyMjUsIDYsIDQyLCAyNTEsIDE4MCwgNDIsIDI0MSwgNTYsIDQyLCAyMjQsIAorICAgIDI1MCwgNDIsIDI0MSwgNDgsIDQyLCAyNDEsIDUwLCA0MiwgMjMxLCAyMDEsIDQyLCAyMzEsIDE5NywgNDIsIDIzMSwgMjA2LCAKKyAgICA0MiwgMjMxLCAxNTAsIDQyLCAyMzEsIDE3NSwgNDIsIDIzMCwgMTk3LCA0MiwgMjMwLCAxNzYsIDQyLCAyMzAsIDE3NSwgNDIsIAorICAgIDIzMSwgNzQsIDQyLCAyMzEsIDcxLCA0MiwgMjMxLCA3NSwgNDIsIDIxMSwgMTAyLCA0MiwgMjExLCAxMDAsIDQyLCAyMTAsIAorICAgIDIwMSwgNDIsIDIyMiwgMjI2LCA0MiwgMjIyLCAyMzAsIDQyLCAyMjIsIDExNywgNDIsIDIyMiwgMTExLCA0MiwgMjIzLCA4NSwgCisgICAgNDIsIDIyMywgODIsIDQyLCAyMTIsIDM4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjEwLCA4NiwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDExMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDEwNSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE1OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE2MSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE4OSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NCwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5OCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDE5NSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIwMCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNiwgMjQ3LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjQ1LCAxNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAKKyAgICAyMTUsIDc2LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE2LCAxNjQsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIAorICAgIDI0MCwgMjM5LCAyNDQsIDUsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDQsIDExOCwgMTA5LCAyMTcsIDMsIAorICAgIDE2LCAzMSwgMjQwLCAyMzksIDIxOSwgMTE5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjIwLCAxMTksIDEwOSwgCisgICAgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyNDUsIDE5MCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIyOCwgCisgICAgMTk3LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDAsIDIzOSwgMjE1LCA3MywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAKKyAgICAyMzksIDIxNSwgNjcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0MCwgMjM5LCAyMTUsIDYzLCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDAsIDIzOSwgMjE1LCA2NCwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQwLCAyMzksIDIxNSwgNjksIDQyLCAyNDAsIAorICAgIDIzMCwgNDIsIDI0OCwgMjIxLCA0MiwgMjUzLCAxOTIsIDQyLCAxMzAsIDQyLCAyMjYsIDEyNSwgNDIsIDIyNSwgMjI1LCA0MiwgCisgICAgMjQ3LCAxNDcsIDQyLCAyNDcsIDE0OCwgMjE4LCAyMzMsIDQyLCAyNDcsIDE0OCwgMjQ5LCAxMDgsIDQyLCAyMzUsIDE1NiwgCisgICAgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyNDEsIDIxNiwgNDIsIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDE3NCwgNDIsIAorICAgIDI0NSwgOTEsIDIyOSwgMjA1LCAyMTcsIDc0LCA0MiwgMjQ1LCA5MSwgMjI5LCAyMDUsIDIzMSwgNzAsIDQyLCAyNDksIDE1NywgCisgICAgNDIsIDIyNiwgOTAsIDI1NCwgMTI1LCA0MiwgMTk3LCA0MiwgMjMwLCAxMDMsIDYxLCA0MiwgMTg0LCA0MiwgMTc2LCA0MiwgCisgICAgMjM0LCAxODUsIDQyLCAyMzEsIDEyOSwgNDIsIDI0MywgODAsIDQyLCAyNTEsIDE4LCA0MiwgMjM0LCAxODQsIDQyLCAyMjUsIAorICAgIDE1MCwgNDIsIDIyOSwgODEsIDQyLCAyMzAsIDEwMywgMjQ1LCA2LCA0MiwgMjMwLCAxMDMsIDI0MywgMjAyLCA0MiwgMjMxLCAKKyAgICAxNSwgNDIsIDIzNCwgMTM0LCA0MiwgMjQwLCAxNjMsIDQyLCAyMzQsIDk0LCA0MiwgMjMwLCAyMzIsIDQyLCAyNDIsIDIxNiwgCisgICAgNDIsIDIxNiwgMTE5LCA0MiwgMjMwLCAxMDMsIDE1NiwgNDIsIDIzMCwgMTY5LCA0MiwgMjQ3LCAxNTcsIDQyLCAyMzQsIDQwLCAKKyAgICA0MiwgMjQ0LCA0NSwgNDIsIDIyOCwgMTEyLCA0MiwgMjMwLCAxMDMsIDE5MywgNDIsIDIzMCwgMTY2LCA0MiwgMjQ5LCAyMzksIAorICAgIDQyLCAyMzQsIDM0LCA0MiwgMjMwLCAxNjcsIDIxOCwgMjMzLCA0MiwgMjQ5LCAyNDAsIDIxOCwgMjMzLCA0MiwgMjMyLCA1MCwgCisgICAgMjE4LCAyMzMsIDQyLCAyMzQsIDM1LCAyMTgsIDIzMywgNDIsIDIzMCwgMTY3LCAyNDksIDEwOCwgNDIsIDI0OSwgMjQwLCAKKyAgICAyNDksIDEwOCwgNDIsIDIzMiwgNTAsIDI0OSwgMTA4LCA0MiwgMjM0LCAzNSwgMjQ5LCAxMDgsIDQyLCAyMzIsIDUwLCAxMTcsIAorICAgIDIyMiwgOTEsIDQyLCAyMzIsIDUwLCAxMTcsIDIyMiwgOTIsIDIxOCwgMjMzLCA0MiwgMTkwLCA0MiwgMjMzLCAyNTEsIDQyLCAKKyAgICAyMzAsIDEwNSwgNDIsIDI0MiwgMTUxLCA0MiwgMjIzLCAxNzYsIDQyLCAyMjMsIDE3NywgMTE3LCAyMjIsIDkxLCA0MiwgCisgICAgMjIzLCAxNzcsIDExNywgMjIyLCA5MiwgMjE4LCAyMzMsIDQyLCAyMjQsIDE2MiwgNDIsIDIyOCwgMTMsIDQyLCAyMzAsIAorICAgIDEwMywgMjIyLCA5MSwgNDIsIDIzMCwgMTA0LCA0MiwgMjI0LCAxMTYsIDQyLCAyMjcsIDE3NiwgNDIsIDIzMCwgMTAzLCAKKyAgICAyMTQsIDEwNSwgNDIsIDIzMCwgNDksIDQyLCAyMzMsIDE4NSwgNDIsIDIzMCwgNTAsIDIzMSwgNzQsIDQyLCAyMjQsIDExNSwgCisgICAgNDIsIDIyNywgMTc1LCA0MiwgMjMwLCAxMDMsIDIxMiwgOTgsIDQyLCAyMzAsIDQzLCA0MiwgMjMzLCAxODMsIDQyLCAyMzAsIAorICAgIDQ0LCAyMzEsIDc0LCA0MiwgMjM1LCAyNCwgMjI2LCAyMjAsIDQyLCAyMzIsIDUwLCAyMjYsIDIyMCwgNDIsIDI1NCwgMTM2LCAKKyAgICA0MiwgMjUxLCAxNjAsIDQyLCAyNTAsIDIxNCwgNDIsIDI1MCwgMTkxLCA0MiwgMjUxLCA2NywgMTE3LCAyMzQsIDEzNCwgNDIsIAorICAgIDI0OSwgMjM4LCA0MiwgMjQ4LCAxNDIsIDQyLCAyNDIsIDcyLCA0MiwgMTYyLCA0MiwgMjQwLCAyMzEsIDQyLCAyMzUsIDI1NSwgCisgICAgNDIsIDIzNCwgNDcsIDQyLCAyMzQsIDM1LCAyNTAsIDI1MCwgNDIsIDIzMywgMjE5LCA0MiwgMjMyLCAxNTksIDQyLCAyMzIsIAorICAgIDE1OCwgNDIsIDIzMiwgMTQ3LCA0MiwgMjMyLCA2MywgNDIsIDIzMSwgMTMwLCAyMTksIDc5LCA0MiwgMjMwLCAxOTYsIDQyLCAKKyAgICAyMzAsIDE1MiwgNDIsIDIyNSwgMTQ4LCA0MiwgMjI1LCAxOSwgNDIsIDIyNCwgMjE5LCA0MiwgMjI0LCAyMTcsIDQyLCAyMTgsIAorICAgIDIyNywgNDIsIDIxOCwgMiwgNDIsIDIxMiwgMjQsIDQyLCAyMTQsIDEwNiwgMTE3LCAxOTMsIDQyLCAxMTUsIDExNywgMTkzLCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTEwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTA1LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTU4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTYxLCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTg5LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk0LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk4LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMTk1LCAKKyAgICAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjAwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE2LCAKKyAgICAyNDcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyNDUsIDE2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDYsIDIxNSwgNzYsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2NCwgMTA5LCAyMTcsIDMsIDE2LCAKKyAgICAzMSwgMjQ4LCAxNDYsIDI0NCwgNSwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NCwgMTE4LCAxMDksIDIxNywgCisgICAgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE5LCAxMTksIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMjAsIDExOSwgCisgICAgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDI0NSwgMTkwLCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgCisgICAgMjI4LCAxOTcsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDczLCAxMDksIDIxNywgMywgMTYsIDMxLCAKKyAgICAyNDgsIDE0NiwgMjE1LCA2NywgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNjMsIDEwOSwgMjE3LCAzLCAKKyAgICAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY0LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2OSwgMTA5LCAKKyAgICAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAxNDYsIDIxNSwgNzAsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIAorICAgIDY1LCAxMDksIDIxNywgMywgMTYsIDMxLCAyNDgsIDE0NiwgMjE1LCA2NiwgMTA5LCAyMTcsIDMsIDE2LCAzMSwgMjQ4LCAKKyAgICAxNDYsIDIxNSwgNzIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTUsIDY4LCAxMDksIDIxNywgMywgMTYsIAorICAgIDMxLCAyNDgsIDE0NiwgMjE2LCAxNjIsIDEwOSwgMjE3LCAzLCAxNiwgMzEsIDI0OCwgMTQ2LCAyMTYsIDE2MSwgNDIsIDI0MywgCisgICAgMTE4LCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDksIDE0MCwgMjQxLCAyMjMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIyMywgMTIyLCAyNDUsIDIyMywgMjQxLCAxOTIsIDMxLCAyNDcsIDIzMSwgMjUzLCAyMDcsIDIxNiwgMTk2LCAyNTIsIDU2LCAKKyAgICAyNDEsIDE5MiwgMzEsIDIxMCwgMjIzLCAyNDQsIDM4LCAyNDEsIDE5MiwgMzEsIDIxMiwgNTksIDI0MSwgMTkyLCAzMSwgCisgICAgMjQ5LCAyMDMsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1NCwgMywgMjQxLCAxOTIsIDMxLCAyNDEsIDYwLCAyMTYsIDM4LCAKKyAgICAyNDEsIDE5MiwgMzEsIDQsIDIxNywgNjEsIDI0MSwgMTkyLCAzMSwgMjE1LCAyMzcsIDI0MSwgMTkyLCAzMSwgMjI1LCAyMTksIAorICAgIDI0MSwgMTkyLCAzMSwgMjE4LCAxNTgsIDI0MSwgMTkyLCAzMSwgMjQ0LCAxMzksIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIAorICAgIDIyNCwgMjQwLCAyNDEsIDE5MiwgMzEsIDIzMCwgMTU1LCAyNDEsIDE5MiwgMzEsIDI0NSwgMTI2LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0NCwgMzksIDI0MSwgMTkyLCAzMSwgMjExLCAyMDcsIDIyNiwgMTk3LCAyMTYsIDE5NiwgMjQ4LCA4NiwgMjQxLCAxOTIsIAorICAgIDMxLCAyNTQsIDUxLCAyNDEsIDE5MiwgMzEsIDI0OSwgMTg1LCAyNDEsIDE5MiwgMzEsIDI1MSwgMjI3LCAyMTYsIDEzOCwgCisgICAgMjQxLCAxOTIsIDMxLCAyNDIsIDE0OSwgMjQxLCAxOTIsIDMxLCAyMTgsIDI0NSwgMjU0LCA3MCwgMjQxLCAxOTIsIDMxLCAKKyAgICAyMjMsIDUzLCAyNDEsIDE5MiwgMzEsIDIzNSwgMjIwLCAyNDEsIDE5MiwgMzEsIDI0MiwgMTMyLCAyMTcsIDYxLCAyNDEsIAorICAgIDE5MiwgMzEsIDIzMCwgMTExLCAyNDksIDE1OSwgMjQxLCAxOTIsIDMxLCAyNDIsIDEzMiwgMjI0LCAxOTcsIDI0MSwgMTkyLCAKKyAgICAzMSwgMjE2LCAxOTYsIDI1NSwgMTgsIDIxMiwgNDAsIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MCwgOCwgMjQ0LCA5NiwgCisgICAgMjQxLCAxOTIsIDMxLCAyMzUsIDIzMywgMjQxLCAxOTIsIDMxLCAyNDYsIDU3LCAyNDEsIDE5MiwgMzEsIDIyMywgNTYsIAorICAgIDI0MSwgMTkyLCAzMSwgMjQyLCAxMzIsIDIyNCwgMjI0LCAyNDEsIDE5MiwgMzEsIDIyNCwgMTc3LCAyNDEsIDE5MiwgMzEsIAorICAgIDI0OCwgMTYxLCA2NCwgMjE2LCAxOTYsIDIzMiwgMjMwLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAyNDQsIDE3NCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMjYsIDE2MywgMjQxLCAxOTIsIDMxLCAyMjYsIDI0NCwgMjQxLCAxOTIsIDMxLCAyNDgsIDU5LCAyNDEsIAorICAgIDE5MiwgMzEsIDI0OCwgNzksIDI0MSwgMTkyLCAzMSwgMjM1LCAyNDcsIDI0MSwgMTkyLCAzMSwgMjUxLCAxNDksIDI0MSwgCisgICAgMTkyLCAzMSwgMjQ5LCAyMjEsIDIxNiwgNDIsIDIzMSwgNzYsIDI0MSwgMTkyLCAzMSwgMjQzLCA4NywgMjE2LCAzOCwgMjQxLCAKKyAgICAxOTIsIDMxLCAyMjQsIDEyNSwgMjE0LCAxNTQsIDI0MSwgMTkyLCAzMSwgMjI2LCAxNjIsIDI0MSwgMTkyLCAzMSwgMjE2LCAKKyAgICAxOTYsIDIxMiwgMTMsIDI0MSwgMTkyLCAzMSwgMjIzLCA0NSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjUwLCAyMjAsIAorICAgIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIDI1MywgMjU1LCAyMTYsIDEzMywgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjM0LCAKKyAgICAxNzksIDIxOCwgMTM0LCAyMzAsIDExNSwgMjQxLCAxOTIsIDMxLCAyNDgsIDMyLCAyNDEsIDE5MiwgMzEsIDIxNiwgMTk2LCAKKyAgICAyMzEsIDE1MiwgMjMxLCAyMDIsIDI0MSwgMTkyLCAzMSwgMjU1LCAxOSwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjEyLCAKKyAgICA1NCwgMjQxLCAxOTIsIDMxLCAyMTYsIDE5NiwgMjQzLCA0NywgMjExLCAyMzksIDI0MSwgMTkyLCAzMSwgMjE2LCAxOTYsIAorICAgIDIzNSwgNTIsIDIzMywgMTA3LCAyNDEsIDE5MiwgMzEsIDI0NywgMTg0LCAyNDEsIDE5MiwgMzEsIDIzMiwgMjIwLCAyNDEsIAorICAgIDE5MiwgMzEsIDIzNSwgMjIzLCAyMTUsIDE4NywgMjQxLCAxOTIsIDMxLCA0LCAyMjQsIDE5NywgMjQxLCAxOTIsIDMxLCAKKyAgICAyNTQsIDIxNywgMjQ5LCAyMTIsIDI0MSwgMTkyLCAzMSwgMjUyLCA1OSwgMjQ5LCAyMTIsIDgsIDMsIDIzNSwgMTYwLCA4LCAKKyAgICAzLCAyMzUsIDE1MywgOCwgMywgNzMsIDgsIDMsIDIzNSwgMTgyLCA4LCAzLCAyMzYsIDU4LCA4LCAzLCAyMzYsIDQxLCA4LCAKKyAgICAzLCAyMzYsIDYwLCA4LCAzLCAyMzYsIDU5LCA4LCAzLCAyNTMsIDIwNiwgOCwgMywgMjUzLCAxNjksIDgsIDMsIDYxLCA4LCAKKyAgICAzLCAyNTQsIDcyLCA4LCAzLCAyMTQsIDE2NCwgOCwgMywgMjE0LCAxNjcsIDgsIDMsIDIxNCwgMTY1LCA4LCAzLCAyMjYsIAorICAgIDE0MCwgOCwgMywgMjI2LCAxMTQsIDgsIDMsIDc2LCA4LCAzLCAyMjYsIDE3NSwgOCwgMywgMjQ1LCAzNSwgOCwgMywgNzUsIAorICAgIDgsIDMsIDIxMSwgMTk1LCA4LCAzLCAyNTEsIDIyOCwgOCwgMywgMjUxLCAyMjUsIDgsIDMsIDI1MiwgNiwgOCwgMywgMjUxLCAKKyAgICAyMzgsIDgsIDMsIDI1MSwgMjUxLCA4LCAzLCAyNTEsIDI1MCwgOCwgMywgMjUxLCAyNTMsIDgsIDMsIDI1MSwgMjUyLCA4LCAKKyAgICAzLCAyNTIsIDEyMSwgOCwgMywgMjUyLCAxMTMsIDgsIDMsIDI1MiwgMTkxLCA4LCAzLCAyNTIsIDE0MiwgOCwgMywgMjUxLCAKKyAgICAxMDEsIDgsIDMsIDI1MSwgMTA1LCA4LCAzLCAyNTEsIDEwMiwgOCwgMywgMjUxLCAxNzksIDgsIDMsIDI1MSwgMTYzLCA4LCAKKyAgICAzLCAyNTEsIDIwNSwgOCwgMywgMjUxLCAxODUsIDgsIDMsIDI1MiwgMjEsIDgsIDMsIDI1MiwgNzUsIDgsIDMsIDI1MiwgMzMsIAorICAgIDgsIDMsIDI1MSwgODcsIDgsIDMsIDI1MSwgODQsIDgsIDMsIDI1MSwgMTI1LCA4LCAzLCAyNTEsIDEwMCwgOCwgMywgMjUxLCAKKyAgICA5NCwgOCwgMywgMjUxLCA5OCwgOCwgMywgMjUxLCA3MiwgOCwgMywgMjUxLCA3MCwgOCwgMywgMjUxLCA3NywgOCwgMywgCisgICAgMjUxLCA3NSwgOCwgMywgMjUxLCA3MywgOCwgMywgMjUxLCA3NCwgOCwgMywgMjI1LCA0OSwgOCwgMywgMjI1LCA0NSwgOCwgCisgICAgMywgMjI1LCAxMDgsIDgsIDMsIDIyNSwgNTksIDgsIDMsIDIyNSwgNzUsIDgsIDMsIDIyNSwgMTAyLCA4LCAzLCAyMjUsIDk4LCAKKyAgICA4LCAzLCAyMjUsIDI0MCwgOCwgMywgMjI1LCAyMzAsIDgsIDMsIDE5MCwgOCwgMywgMjI2LCAyMSwgOCwgMywgMjI0LCAxMzUsIAorICAgIDgsIDMsIDIyNCwgMTM3LCA4LCAzLCAyMjQsIDEzNiwgOCwgMywgMjI0LCAyMzMsIDgsIDMsIDIyNCwgMjIyLCA4LCAzLCAKKyAgICAyMjUsIDE2LCA4LCAzLCAyMjQsIDI0NSwgOCwgMywgMjI0LCAxMjEsIDgsIDMsIDIyNCwgMTE3LCA4LCAzLCAyMjQsIDE1MCwgCisgICAgOCwgMywgMjI0LCAxMzQsIDgsIDMsIDIyNCwgMTI2LCA4LCAzLCAyMjQsIDEzMiwgOCwgMywgMjI0LCAxMDAsIDgsIDMsIAorICAgIDIyNCwgOTksIDgsIDMsIDIyNCwgMTA0LCA4LCAzLCAyMjQsIDEwMywgOCwgMywgMjI0LCAxMDEsIDgsIDMsIDIyNCwgMTAyLCAKKyAgICA4LCAzLCAyNTIsIDk2LCA4LCAzLCAyNTIsIDk1LCA4LCAzLCAyNTIsIDEwMiwgOCwgMywgMjUyLCA5NywgOCwgMywgMjUyLCAKKyAgICA5OSwgOCwgMywgMjUyLCA5OCwgOCwgMywgMjUyLCAxMDEsIDgsIDMsIDI1MiwgMTAwLCA4LCAzLCAyNTIsIDEwOCwgOCwgMywgCisgICAgMjUyLCAxMDcsIDgsIDMsIDI1MiwgMTExLCA4LCAzLCAyNTIsIDEwOSwgOCwgMywgMjUyLCA4NywgOCwgMywgMjUyLCA4OSwgCisgICAgOCwgMywgMjUyLCA4OCwgOCwgMywgMjUyLCA5MiwgOCwgMywgMjUyLCA5MSwgOCwgMywgMjUyLCA5NCwgOCwgMywgMjUyLCAKKyAgICA5MywgOCwgMywgMjUyLCAxMDMsIDgsIDMsIDI1MiwgMTA2LCA4LCAzLCAyNTIsIDEwNCwgOCwgMywgMjUyLCA4MywgOCwgMywgCisgICAgMjUyLCA4MiwgOCwgMywgMjUyLCA5MCwgOCwgMywgMjUyLCA4NiwgOCwgMywgMjUyLCA4NCwgOCwgMywgMjUyLCA4NSwgOCwgCisgICAgMywgMjUyLCA3OSwgOCwgMywgMjUyLCA3OCwgOCwgMywgMjUyLCA4MSwgOCwgMywgMjUyLCA4MCwgOCwgMywgMjI5LCAxNjksIAorICAgIDgsIDMsIDIyOSwgMTY4LCA4LCAzLCAyMjksIDE3NCwgOCwgMywgMjI5LCAxNzAsIDgsIDMsIDIyOSwgMTcxLCA4LCAzLCAKKyAgICAyMjksIDE3MywgOCwgMywgMjI5LCAxNzIsIDgsIDMsIDIyOSwgMTc3LCA4LCAzLCAyMjksIDE3NiwgOCwgMywgMjI5LCAxNzksIAorICAgIDgsIDMsIDIyOSwgMTc4LCA4LCAzLCAyMjksIDE2NSwgOCwgMywgMjI5LCAxNjQsIDgsIDMsIDIyOSwgMTY3LCA4LCAzLCAKKyAgICAyMjksIDE2NiwgOCwgMywgMjI5LCAxNTgsIDgsIDMsIDIyOSwgMTU3LCA4LCAzLCAyMjksIDE2MiwgOCwgMywgMjI5LCAxNjEsIAorICAgIDgsIDMsIDIyOSwgMTU5LCA4LCAzLCAyMjksIDE2MCwgOCwgMywgMjI5LCAxNTIsIDgsIDMsIDIyOSwgMTUxLCA4LCAzLCAKKyAgICAyMjksIDE1NiwgOCwgMywgMjI5LCAxNTUsIDgsIDMsIDIyOSwgMTUzLCA4LCAzLCAyMjksIDE1NCwgOCwgMywgMjQxLCAxMTAsIAorICAgIDgsIDMsIDI0MSwgMTA5LCA4LCAzLCAyNDEsIDExNSwgOCwgMywgMjQxLCAxMTEsIDgsIDMsIDI0MSwgMTEyLCA4LCAzLCAKKyAgICAyNDEsIDExNCwgOCwgMywgMjQxLCAxMTMsIDgsIDMsIDI0MSwgMTE4LCA4LCAzLCAyNDEsIDExNywgOCwgMywgMjQxLCAxMjAsIAorICAgIDgsIDMsIDI0MSwgMTE5LCA4LCAzLCAyNDEsIDEwMSwgOCwgMywgMjQxLCAxMDMsIDgsIDMsIDI0MSwgMTAyLCA4LCAzLCAKKyAgICAyNDEsIDEwNiwgOCwgMywgMjQxLCAxMDUsIDgsIDMsIDI0MSwgMTA4LCA4LCAzLCAyNDEsIDEwNywgOCwgMywgMjQxLCA5NywgCisgICAgOCwgMywgMjQxLCA5NiwgOCwgMywgMjQxLCAxMDQsIDgsIDMsIDI0MSwgMTAwLCA4LCAzLCAyNDEsIDk4LCA4LCAzLCAyNDEsIAorICAgIDk5LCA4LCAzLCAyNDEsIDkxLCA4LCAzLCAyNDEsIDk1LCA4LCAzLCAyNDEsIDk0LCA4LCAzLCAyNDEsIDkyLCA4LCAzLCAKKyAgICAyNDEsIDkzLCA4LCAzLCAyMzAsIDE3MiwgOCwgMywgMjMwLCAxNzEsIDgsIDMsIDIzMCwgMjMwLCA4LCAzLCAyMzAsIDE3OCwgCisgICAgOCwgMywgMjMwLCAyMDMsIDgsIDMsIDIzMCwgMjIxLCA4LCAzLCAyMzAsIDIxOSwgOCwgMywgMjMxLCAxMzksIDgsIDMsIAorICAgIDIzMSwgMTM0LCA4LCAzLCAxODQsIDgsIDMsIDIzMSwgMTcyLCA4LCAzLCAyMzAsIDc0LCA4LCAzLCAyMzAsIDczLCA4LCAzLCAKKyAgICAyMzAsIDc3LCA4LCAzLCAyMzAsIDc1LCA4LCAzLCAyMzAsIDEyMSwgOCwgMywgMjMwLCAxMDcsIDgsIDMsIDIzMCwgMTYxLCAKKyAgICA4LCAzLCAyMzAsIDEyNiwgOCwgMywgMjMxLCAyNiwgOCwgMywgMjMxLCA5MSwgOCwgMywgMjMwLCA1NSwgOCwgMywgMjMwLCAKKyAgICA1MSwgOCwgMywgMjMwLCAxMDIsIDgsIDMsIDIzMCwgNzAsIDgsIDMsIDIzMCwgNjMsIDgsIDMsIDIzMCwgNjgsIDgsIDMsIAorICAgIDIzMCwgMjgsIDgsIDMsIDIzMCwgMjcsIDgsIDMsIDIzMCwgMzMsIDgsIDMsIDIzMCwgMzAsIDgsIDMsIDI0NCwgODMsIDgsIAorICAgIDMsIDI0NCwgNzgsIDgsIDMsIDI0NCwgMTIxLCA4LCAzLCAyNDQsIDk4LCA4LCAzLCAyNDQsIDE2NywgOCwgMywgMjQ0LCAKKyAgICAxNTgsIDgsIDMsIDI0NCwgMTk2LCA4LCAzLCAyNDQsIDE3MCwgOCwgMywgMjQ0LCAzLCA4LCAzLCAyNDQsIDQzLCA4LCAzLCAKKyAgICAyNDQsIDI3LCA4LCAzLCAyNDMsIDIxOCwgOCwgMywgMjQzLCAyMTcsIDgsIDMsIDI0MywgMjM0LCA4LCAzLCAyNDMsIDIyMywgCisgICAgOCwgMywgMjQzLCAyMjEsIDgsIDMsIDI0MywgMjIyLCA4LCAzLCAyNDMsIDIwNSwgOCwgMywgMjQzLCAyMDQsIDgsIDMsIAorICAgIDI0MywgMjA4LCA4LCAzLCAyNDMsIDIwNiwgOCwgMywgMjEzLCAxNDQsIDgsIDMsIDIxMywgMTM5LCA4LCAzLCAyMTMsIDE3NiwgCisgICAgOCwgMywgMjEzLCAxNTMsIDgsIDMsIDIxMywgMTY2LCA4LCAzLCAyMTMsIDE2MywgOCwgMywgMjEzLCAxNjgsIDgsIDMsIAorICAgIDIxMywgMTY3LCA4LCAzLCAyMTQsIDcsIDgsIDMsIDIxNCwgMiwgOCwgMywgMjE0LCAyNywgOCwgMywgMjE0LCAxOCwgOCwgMywgCisgICAgMjEzLCAxMjUsIDgsIDMsIDIxMywgMTIxLCA4LCAzLCAyMTMsIDEzOCwgOCwgMywgMjEzLCAxMjYsIDgsIDMsIDIxMywgMTc4LCAKKyAgICA4LCAzLCAyMTMsIDI0NCwgOCwgMywgMjEyLCAxMTAsIDgsIDMsIDIxMiwgMTA4LCA4LCAzLCAyMTIsIDExNiwgOCwgMywgCisgICAgMjEyLCAxMTMsIDgsIDMsIDIxMiwgMTExLCA4LCAzLCAyMTIsIDExMiwgOCwgMywgMjEyLCAxMDIsIDgsIDMsIDIxMiwgMTAxLCAKKyAgICA4LCAzLCAyMTIsIDEwNiwgOCwgMywgMjEyLCAxMDUsIDgsIDMsIDIxMiwgMTAzLCA4LCAzLCAyMTIsIDEwNCwgOCwgMywgCisgICAgMjQ3LCAxNzgsIDgsIDMsIDI0NywgMTY2LCA4LCAzLCAyNDgsIDMsIDgsIDMsIDI0NywgMjAzLCA4LCAzLCAyNDcsIDIzNiwgCisgICAgOCwgMywgMjQ3LCAyNDAsIDgsIDMsIDI0NywgMjM5LCA4LCAzLCAyNDgsIDE1MiwgOCwgMywgMjQ4LCAxNDcsIDgsIDMsIAorICAgIDI0OCwgMjIxLCA4LCAzLCAyNDgsIDE3MiwgOCwgMywgMjQ2LCA2MiwgOCwgMywgMjQ2LCA2MywgOCwgMywgMjQ3LCAxMjAsIAorICAgIDgsIDMsIDI0NiwgMTAyLCA4LCAzLCAyNDcsIDE0NSwgOCwgMywgMjQ3LCAxMjIsIDgsIDMsIDI0OCwgMzAsIDgsIDMsIDI0OCwgCisgICAgOTAsIDgsIDMsIDI0OCwgNDUsIDgsIDMsIDI0NiwgNTMsIDgsIDMsIDI0NiwgNTEsIDgsIDMsIDI0NiwgNzgsIDgsIDMsIAorICAgIDI0NiwgNjEsIDgsIDMsIDI0NiwgNTYsIDgsIDMsIDI0NiwgNTksIDgsIDMsIDIxNiwgNjcsIDgsIDMsIDIxNiwgNjEsIDgsIAorICAgIDMsIDIxNiwgMTE3LCA4LCAzLCAyMTYsIDc2LCA4LCAzLCAyMTYsIDEwOSwgOCwgMywgMjE2LCAxMTEsIDgsIDMsIDIxNiwgCisgICAgMTEwLCA4LCAzLCAyMTcsIDQ2LCA4LCAzLCAyMTcsIDMzLCA4LCAzLCAyMTcsIDEwNSwgOCwgMywgMjE3LCA1NCwgOCwgMywgCisgICAgMjE1LCAxMDIsIDgsIDMsIDIxNSwgMTAxLCA4LCAzLCAyMTUsIDEwNCwgOCwgMywgMjE1LCAxMDMsIDgsIDMsIDIxNiwgNSwgCisgICAgOCwgMywgMjE2LCAxLCA4LCAzLCAxMTEsIDgsIDMsIDIxNiwgMTMsIDgsIDMsIDIxNiwgMjEzLCA4LCAzLCAyMTcsIDIyLCA4LCAKKyAgICAzLCAyMTYsIDIzNywgOCwgMywgMjE1LCA4OCwgOCwgMywgMjE1LCA4MywgOCwgMywgMjE1LCAxMTgsIDgsIDMsIDIxNSwgCisgICAgMTAwLCA4LCAzLCAyMTUsIDg5LCA4LCAzLCAyMTUsIDk4LCA4LCAzLCAyNDgsIDEwNywgOCwgMywgMjQ4LCAxMDYsIDgsIDMsIAorICAgIDI0OCwgMTEyLCA4LCAzLCAyNDgsIDEwOCwgOCwgMywgMjQ4LCAxMDksIDgsIDMsIDI0OCwgMTExLCA4LCAzLCAyNDgsIDExMCwgCisgICAgOCwgMywgMjQ4LCAxMjgsIDgsIDMsIDI0OCwgMTI3LCA4LCAzLCAyNDgsIDEzNSwgOCwgMywgMjQ4LCAxMjksIDgsIDMsIAorICAgIDI0OCwgOTcsIDgsIDMsIDI0OCwgOTksIDgsIDMsIDI0OCwgOTgsIDgsIDMsIDI0OCwgMTAyLCA4LCAzLCAyNDgsIDEwMSwgOCwgCisgICAgMywgMjQ4LCAxMDUsIDgsIDMsIDI0OCwgMTAzLCA4LCAzLCAyNDgsIDEyMCwgOCwgMywgMjQ4LCAxMjMsIDgsIDMsIDI0OCwgCisgICAgMTIxLCA4LCAzLCAyNDgsIDkzLCA4LCAzLCAyNDgsIDkyLCA4LCAzLCAyNDgsIDEwMCwgOCwgMywgMjQ4LCA5NiwgOCwgMywgCisgICAgMjQ4LCA5NCwgOCwgMywgMjQ4LCA5NSwgOCwgMywgMjI5LCAxMjYsIDgsIDMsIDIyOSwgMTI1LCA4LCAzLCAyMjksIDEzMywgCisgICAgOCwgMywgMjI5LCAxMjgsIDgsIDMsIDIyOSwgMTI5LCA4LCAzLCAyMjksIDEzMCwgOCwgMywgMjI5LCAxNDIsIDgsIDMsIAorICAgIDIyOSwgMTQxLCA4LCAzLCAyMjksIDE0OCwgOCwgMywgMjI5LCAxNDMsIDgsIDMsIDIyOSwgMTE4LCA4LCAzLCAyMjksIDExNywgCisgICAgOCwgMywgMjI5LCAxMjQsIDgsIDMsIDIyOSwgMTE5LCA4LCAzLCAyMjksIDEzNCwgOCwgMywgMjI5LCAxNDAsIDgsIDMsIAorICAgIDIyOSwgMTM4LCA4LCAzLCAyMjksIDExMCwgOCwgMywgMjI5LCAxMDksIDgsIDMsIDIyOSwgMTE1LCA4LCAzLCAyMjksIDExMywgCisgICAgOCwgMywgMjI5LCAxMTEsIDgsIDMsIDIyOSwgMTEyLCA4LCAzLCAyNDEsIDc3LCA4LCAzLCAyNDEsIDc2LCA4LCAzLCAyNDEsIAorICAgIDgzLCA4LCAzLCAyNDEsIDc4LCA4LCAzLCAyNDEsIDgwLCA4LCAzLCAyNDEsIDc5LCA4LCAzLCAyNDEsIDgyLCA4LCAzLCAKKyAgICAyNDEsIDgxLCA4LCAzLCAyNDEsIDg4LCA4LCAzLCAyNDEsIDg3LCA4LCAzLCAyNDEsIDkwLCA4LCAzLCAyNDEsIDg5LCA4LCAKKyAgICAzLCAyNDEsIDcxLCA4LCAzLCAyNDEsIDcyLCA4LCAzLCAyNDEsIDc0LCA4LCAzLCAyNDEsIDczLCA4LCAzLCAyNDEsIDc1LCAKKyAgICA4LCAzLCAyNDEsIDg0LCA4LCAzLCAyNDEsIDg2LCA4LCAzLCAyNDEsIDg1LCA4LCAzLCAyNDEsIDcwLCA4LCAzLCAyMjgsIAorICAgIDE4OSwgOCwgMywgMjI4LCAxODcsIDgsIDMsIDIyOCwgMjMzLCA4LCAzLCAyMjgsIDE5MiwgOCwgMywgMjI4LCAyMTUsIDgsIAorICAgIDMsIDIyOCwgMjI5LCA4LCAzLCAyMjgsIDIyOCwgOCwgMywgMjI5LCAxODMsIDgsIDMsIDE5NywgOCwgMywgMjI5LCAxOTcsIAorICAgIDgsIDMsIDIyNywgMTg2LCA4LCAzLCAyMjcsIDE4OCwgOCwgMywgMjI3LCAxODcsIDgsIDMsIDIyOCwgNTEsIDgsIDMsIDIyOCwgCisgICAgMzgsIDgsIDMsIDIyOCwgNzQsIDgsIDMsIDIyOCwgNjAsIDgsIDMsIDIyOSwgODMsIDgsIDMsIDIyOSwgMTA3LCA4LCAzLCAKKyAgICAyMjksIDk0LCA4LCAzLCAyMjcsIDE4MSwgOCwgMywgMjI3LCAxNzcsIDgsIDMsIDIyNywgMjM3LCA4LCAzLCAyMjcsIDE4NSwgCisgICAgOCwgMywgMjI3LCAxODMsIDgsIDMsIDIyNywgMTg0LCA4LCAzLCAyNDEsIDE0MSwgOCwgMywgMjQxLCAxNDAsIDgsIDMsIAorICAgIDI0MSwgMTQ2LCA4LCAzLCAyNDEsIDE0MiwgOCwgMywgMjQxLCAxNDMsIDgsIDMsIDI0MSwgMTQ1LCA4LCAzLCAyNDEsIDE0NCwgCisgICAgOCwgMywgMjQxLCAxNTEsIDgsIDMsIDI0MSwgMTUwLCA4LCAzLCAyNDEsIDE1MywgOCwgMywgMjQxLCAxNTIsIDgsIDMsIAorICAgIDI0MSwgMTMzLCA4LCAzLCAyNDEsIDEzNSwgOCwgMywgMjQxLCAxMzQsIDgsIDMsIDI0MSwgMTM3LCA4LCAzLCAyNDEsIDEzOSwgCisgICAgOCwgMywgMjQxLCAxMzgsIDgsIDMsIDI0MSwgMTQ3LCA4LCAzLCAyNDEsIDE0OSwgOCwgMywgMjQxLCAxNDgsIDgsIDMsIAorICAgIDI0MSwgMTI5LCA4LCAzLCAyNDEsIDEyOCwgOCwgMywgMjQxLCAxMzYsIDgsIDMsIDI0MSwgMTMyLCA4LCAzLCAyNDEsIDEzMCwgCisgICAgOCwgMywgMjQxLCAxMzEsIDgsIDMsIDI0MSwgMTIzLCA4LCAzLCAyNDEsIDEyMiwgOCwgMywgMjQxLCAxMjcsIDgsIDMsIAorICAgIDI0MSwgMTI2LCA4LCAzLCAyNDEsIDEyNCwgOCwgMywgMjQxLCAxMjUsIDgsIDMsIDIzMiwgMTk1LCA4LCAzLCAyMzIsIDE4OSwgCisgICAgOCwgMywgMjMyLCAyNDEsIDgsIDMsIDIzMiwgMjAyLCA4LCAzLCAyMzIsIDIzMywgOCwgMywgMjMyLCAyMzIsIDgsIDMsIAorICAgIDIzMiwgMjM2LCA4LCAzLCAyMzIsIDIzNCwgOCwgMywgMjMzLCA3OSwgOCwgMywgMjMzLCA2OSwgOCwgMywgMjMzLCAxMzUsIAorICAgIDgsIDMsIDIzMywgODgsIDgsIDMsIDIzMiwgNzksIDgsIDMsIDIzMiwgNzgsIDgsIDMsIDIzMiwgODEsIDgsIDMsIDIzMiwgCisgICAgODAsIDgsIDMsIDIzMiwgMTE2LCA4LCAzLCAyMzIsIDEwNiwgOCwgMywgMjMyLCAxNTYsIDgsIDMsIDIzMiwgMTIwLCA4LCAzLCAKKyAgICAyMzMsIDIsIDgsIDMsIDIzMywgNTgsIDgsIDMsIDIzMywgMTcsIDgsIDMsIDIzMiwgNzQsIDgsIDMsIDIzMiwgNzIsIDgsIDMsIAorICAgIDIzMiwgOTgsIDgsIDMsIDIzMiwgNzcsIDgsIDMsIDIzMiwgNzUsIDgsIDMsIDIzMiwgNzYsIDgsIDMsIDIzMiwgNTQsIDgsIAorICAgIDMsIDIzMiwgNTMsIDgsIDMsIDIzMiwgNjIsIDgsIDMsIDIzMiwgNTcsIDgsIDMsIDIzMiwgNTUsIDgsIDMsIDIzMiwgNTYsIAorICAgIDgsIDMsIDI0MiwgMTg5LCA4LCAzLCAyNDIsIDE4OCwgOCwgMywgMjQyLCAyMTQsIDgsIDMsIDI0MiwgMTk5LCA4LCAzLCAKKyAgICAyNDIsIDIwNiwgOCwgMywgMjQyLCAyMDUsIDgsIDMsIDI0MiwgMjA4LCA4LCAzLCAyNDIsIDIwNywgOCwgMywgMjQzLCA4OSwgCisgICAgOCwgMywgMjQzLCA4NCwgOCwgMywgMjQzLCAxMzUsIDgsIDMsIDI0MywgOTksIDgsIDMsIDI0MiwgOTEsIDgsIDMsIDI0MiwgCisgICAgOTAsIDgsIDMsIDI0MiwgOTMsIDgsIDMsIDI0MiwgOTIsIDgsIDMsIDI0MiwgMTU0LCA4LCAzLCAyNDIsIDE1MiwgOCwgMywgCisgICAgMjQyLCAxNzQsIDgsIDMsIDI0MiwgMTYyLCA4LCAzLCAyNDMsIDMzLCA4LCAzLCAyNDMsIDMxLCA4LCAzLCAyNDMsIDYyLCA4LCAKKyAgICAzLCAyNDMsIDQ0LCA4LCAzLCAyNDIsIDgxLCA4LCAzLCAyNDIsIDgwLCA4LCAzLCAyNDIsIDExMywgOCwgMywgMjQyLCA4OSwgCisgICAgOCwgMywgMjQyLCA4MiwgOCwgMywgMjQyLCA4OCwgOCwgMywgMjM0LCA2MSwgOCwgMywgMjM0LCA2MCwgOCwgMywgMjM0LCAKKyAgICA5MiwgOCwgMywgMjM0LCA3NSwgOCwgMywgMjM0LCA4NSwgOCwgMywgMjM0LCA4OCwgOCwgMywgMjM0LCA4NiwgOCwgMywgCisgICAgMjM0LCAyMDIsIDgsIDMsIDIzNCwgMTkwLCA4LCAzLCAxNzYsIDgsIDMsIDIzNCwgMjI4LCA4LCAzLCAyMzMsIDIwMCwgOCwgCisgICAgMywgMjMzLCAyMDUsIDgsIDMsIDIzMywgMjAyLCA4LCAzLCAyMzQsIDAsIDgsIDMsIDIzMywgMjUyLCA4LCAzLCAyMzQsIDI4LCAKKyAgICA4LCAzLCAyMzQsIDcsIDgsIDMsIDIzNCwgMTU2LCA4LCAzLCAyMzQsIDE0MCwgOCwgMywgMjM0LCAxODIsIDgsIDMsIDIzNCwgCisgICAgMTU5LCA4LCAzLCAyMzMsIDE4OSwgOCwgMywgMjMzLCAxODYsIDgsIDMsIDIzMywgMjE3LCA4LCAzLCAyMzMsIDE5OSwgOCwgCisgICAgMywgMjMzLCAxOTIsIDgsIDMsIDIzMywgMTk2LCA4LCAzLCAyNDMsIDE1LCA4LCAzLCAyNDMsIDE0LCA4LCAzLCAyNDMsIDE5LCAKKyAgICA4LCAzLCAyNDMsIDE2LCA4LCAzLCAyNDMsIDE4LCA4LCAzLCAyNDMsIDE3LCA4LCAzLCAyNDMsIDI2LCA4LCAzLCAyNDMsIAorICAgIDI1LCA4LCAzLCAyNDMsIDI5LCA4LCAzLCAyNDMsIDI3LCA4LCAzLCAyNDMsIDYsIDgsIDMsIDI0MywgNSwgOCwgMywgMjQzLCAKKyAgICA4LCA4LCAzLCAyNDMsIDcsIDgsIDMsIDI0MywgMTEsIDgsIDMsIDI0MywgMTAsIDgsIDMsIDI0MywgMTMsIDgsIDMsIDI0MywgCisgICAgMTIsIDgsIDMsIDI0MywgMjEsIDgsIDMsIDI0MywgMjAsIDgsIDMsIDI0MywgMjQsIDgsIDMsIDI0MywgMjIsIDgsIDMsIAorICAgIDI0MywgMSwgOCwgMywgMjQzLCAwLCA4LCAzLCAyNDMsIDksIDgsIDMsIDI0MywgNCwgOCwgMywgMjQzLCAyLCA4LCAzLCAKKyAgICAyNDMsIDMsIDgsIDMsIDIzMCwgMjQ5LCA4LCAzLCAyMzAsIDI1MCwgOCwgMywgMjMxLCAxMiwgOCwgMywgMjMxLCAxMSwgOCwgCisgICAgMywgMjMxLCAxNCwgOCwgMywgMjMxLCAxMywgOCwgMywgMjMwLCAyNDAsIDgsIDMsIDIzMCwgMjQyLCA4LCAzLCAyMzAsIAorICAgIDI0MSwgOCwgMywgMjMwLCAyNDUsIDgsIDMsIDIzMCwgMjQ0LCA4LCAzLCAyMzAsIDI0NywgOCwgMywgMjMwLCAyNDYsIDgsIAorICAgIDMsIDIzMCwgMjUxLCA4LCAzLCAyMzAsIDI1MywgOCwgMywgMjMwLCAyNTIsIDgsIDMsIDIzMCwgMjM2LCA4LCAzLCAyMzAsIAorICAgIDIzNSwgOCwgMywgMjMwLCAyNDMsIDgsIDMsIDIzMCwgMjM5LCA4LCAzLCAyMzAsIDIzNywgOCwgMywgMjMwLCAyMzgsIDgsIAorICAgIDMsIDI0MCwgMTgwLCA4LCAzLCAyNDAsIDE3OSwgOCwgMywgMjQwLCAxODYsIDgsIDMsIDI0MCwgMTgxLCA4LCAzLCAyNDAsIAorICAgIDE4MywgOCwgMywgMjQwLCAxODIsIDgsIDMsIDI0MCwgMTg1LCA4LCAzLCAyNDAsIDE4NCwgOCwgMywgMjQwLCAxOTEsIDgsIAorICAgIDMsIDI0MCwgMTkwLCA4LCAzLCAyNDAsIDE5MywgOCwgMywgMjQwLCAxOTIsIDgsIDMsIDI0MCwgMTcyLCA4LCAzLCAyNDAsIAorICAgIDE3MSwgOCwgMywgMjQwLCAxNzQsIDgsIDMsIDI0MCwgMTczLCA4LCAzLCAyNDAsIDE3NiwgOCwgMywgMjQwLCAxNzUsIDgsIAorICAgIDMsIDI0MCwgMTc4LCA4LCAzLCAyNDAsIDE3NywgOCwgMywgMjQwLCAxODcsIDgsIDMsIDI0MCwgMTg5LCA4LCAzLCAyNDAsIAorICAgIDE4OCwgOCwgMywgMjI5LCAyNCwgOCwgMywgMjI5LCAyNiwgOCwgMywgMjI5LCAyNSwgOCwgMywgMjI5LCA2NywgOCwgMywgCisgICAgMjI5LCA2NSwgOCwgMywgMjI5LCA3NywgOCwgMywgMjI5LCA3MCwgOCwgMywgMjI4LCAyNDMsIDgsIDMsIDIyOCwgMjQyLCA4LCAKKyAgICAzLCAyMjgsIDI0NCwgOCwgMywgMjI4LCAyNTIsIDgsIDMsIDIyOCwgMjQ5LCA4LCAzLCAyMjksIDQsIDgsIDMsIDIyOCwgCisgICAgMjU0LCA4LCAzLCAyMjksIDU4LCA4LCAzLCAyMjksIDY0LCA4LCAzLCAyMjksIDYwLCA4LCAzLCAyNDEsIDE1NiwgOCwgMywgCisgICAgMjQxLCAxNjYsIDgsIDMsIDI0MSwgMTc1LCA4LCAzLCAyNDEsIDI1MSwgOCwgMywgMjQxLCAyNDMsIDgsIDMsIDE2MiwgOCwgCisgICAgMywgMjQyLCA2LCA4LCAzLCAyNDAsIDIwNiwgOCwgMywgMjQwLCAyMDUsIDgsIDMsIDI0MCwgMjA4LCA4LCAzLCAyNDAsIAorICAgIDIwNywgOCwgMywgMjQwLCAyNDIsIDgsIDMsIDI0MCwgMjMzLCA4LCAzLCAyNDEsIDY4LCA4LCAzLCAyNDEsIDQ3LCA4LCAzLCAKKyAgICAyNDEsIDE5NCwgOCwgMywgMjQxLCAyMzgsIDgsIDMsIDI0MSwgMjA2LCA4LCAzLCAyMTIsIDQzLCA4LCAzLCAyMTIsIDI4LCAKKyAgICA4LCAzLCAyMTIsIDY1LCA4LCAzLCAyMTIsIDUxLCA4LCAzLCAyMTEsIDE4NSwgOCwgMywgMjExLCAxODcsIDgsIDMsIDIxMSwgCisgICAgMTg2LCA4LCAzLCAyMTEsIDIwMywgOCwgMywgMjExLCAyMjcsIDgsIDMsIDIxMSwgMjEwLCA4LCAzLCAyMTIsIDUsIDgsIDMsIAorICAgIDIxMiwgMjIsIDgsIDMsIDIxMiwgMTAsIDgsIDMsIDIxMCwgMzAsIDgsIDMsIDIxMCwgMjksIDgsIDMsIDIxMCwgNDQsIDgsIAorICAgIDMsIDIxMCwgMzIsIDgsIDMsIDIxMCwgMzcsIDgsIDMsIDIxMCwgMzksIDgsIDMsIDIxMCwgMzgsIDgsIDMsIDIxMCwgMTAyLCAKKyAgICA4LCAzLCAyMTAsIDk5LCA4LCAzLCAyMTAsIDExNiwgOCwgMywgMjEwLCAxMDUsIDgsIDMsIDIxMCwgNiwgOCwgMywgMjEwLCAKKyAgICA4LCA4LCAzLCAyMTAsIDcsIDgsIDMsIDIxMCwgMTksIDgsIDMsIDIxMCwgMTgsIDgsIDMsIDIxMCwgMjMsIDgsIDMsIDIxMCwgCisgICAgMjAsIDgsIDMsIDIxMCwgODQsIDgsIDMsIDIxMCwgOTQsIDgsIDMsIDIxMCwgODgsIDgsIDMsIDIxMCwgMiwgOCwgMywgMjEwLCAKKyAgICAxLCA4LCAzLCAyMTAsIDEzLCA4LCAzLCAyMTAsIDUsIDgsIDMsIDIxMCwgMywgOCwgMywgMjEwLCA0LCA4LCAzLCAyMDksIAorICAgIDI0NSwgOCwgMywgMjA5LCAyNDQsIDgsIDMsIDIwOSwgMjUwLCA4LCAzLCAyMDksIDI0OCwgOCwgMywgMjA5LCAyNDYsIDgsIAorICAgIDMsIDIwOSwgMjQ3LCA4LCAzLCAyNTAsIDI4LCA4LCAzLCAyNTAsIDI0LCA4LCAzLCAyNTAsIDUxLCA4LCAzLCAyNTAsIDM3LCAKKyAgICA4LCAzLCAyNTAsIDQ4LCA4LCAzLCAyNTAsIDQyLCA4LCAzLCAyNTAsIDUwLCA4LCAzLCAyNTAsIDQ5LCA4LCAzLCAyNTAsIAorICAgIDIyNCwgOCwgMywgMjUwLCAyMTcsIDgsIDMsIDI1MSwgMzMsIDgsIDMsIDI1MCwgMjUxLCA4LCAzLCAyNDksIDEwNCwgOCwgMywgCisgICAgMjQ5LCAxMDYsIDgsIDMsIDI0OSwgMTA1LCA4LCAzLCAyNDksIDE1MywgOCwgMywgMjQ5LCAxNDQsIDgsIDMsIDI0OSwgMjM4LCAKKyAgICA4LCAzLCAyNDksIDE2OSwgOCwgMywgMjUwLCAxNjAsIDgsIDMsIDI1MCwgMTkwLCA4LCAzLCAyNTAsIDE2NSwgOCwgMywgCisgICAgMjQ5LCA4NCwgOCwgMywgMjQ5LCA4MiwgOCwgMywgMjQ5LCAxMTIsIDgsIDMsIDI0OSwgMTAyLCA4LCAzLCAyNDksIDg5LCA4LCAKKyAgICAzLCAyNDksIDEwMSwgOCwgMywgMjQ5LCA2MywgOCwgMywgMjQ5LCA2MiwgOCwgMywgMjQ5LCA3MywgOCwgMywgMjQ5LCA2OSwgCisgICAgOCwgMywgMjQ5LCA2NCwgOCwgMywgMjQ5LCA2NiwgOCwgMywgMjA5LCAyMjgsIDgsIDMsIDIwOSwgMjI3LCA4LCAzLCAyMDksIAorICAgIDIzNCwgOCwgMywgMjA5LCAyMjksIDgsIDMsIDIwOSwgMjMxLCA4LCAzLCAyMDksIDIzMCwgOCwgMywgMjA5LCAyMzMsIDgsIAorICAgIDMsIDIwOSwgMjMyLCA4LCAzLCAyMDksIDI0MCwgOCwgMywgMjA5LCAyMzksIDgsIDMsIDIwOSwgMjQzLCA4LCAzLCAyMDksIAorICAgIDI0MSwgOCwgMywgMjA5LCAyMjQsIDgsIDMsIDIwOSwgMjI2LCA4LCAzLCAyMDksIDIyNSwgOCwgMywgMjA5LCAyMzUsIDgsIAorICAgIDMsIDIwOSwgMjM4LCA4LCAzLCAyMDksIDIzNiwgOCwgMywgMjA5LCAyMTcsIDgsIDMsIDIwOSwgMjIxLCA4LCAzLCAyMDksIAorICAgIDIyMCwgOCwgMywgMjA5LCAyMTgsIDgsIDMsIDIwOSwgMjE5LCA4LCAzLCAyMDksIDIxMSwgOCwgMywgMjA5LCAyMTAsIDgsIAorICAgIDMsIDIwOSwgMjE2LCA4LCAzLCAyMDksIDIxNCwgOCwgMywgMjA5LCAyMTIsIDgsIDMsIDIwOSwgMjEzLCA4LCAzLCAyMjcsIAorICAgIDEwNCwgOCwgMywgMjI3LCAxMDMsIDgsIDMsIDIyNywgMTA5LCA4LCAzLCAyMjcsIDEwNSwgOCwgMywgMjI3LCAxMDYsIDgsIAorICAgIDMsIDIyNywgMTA4LCA4LCAzLCAyMjcsIDEwNywgOCwgMywgMjI3LCAxMTQsIDgsIDMsIDIyNywgMTEzLCA4LCAzLCAyMjcsIAorICAgIDExNywgOCwgMywgMjI3LCAxMTYsIDgsIDMsIDIyNywgOTcsIDgsIDMsIDIyNywgOTgsIDgsIDMsIDIyNywgMTAxLCA4LCAzLCAKKyAgICAyMjcsIDEwMiwgOCwgMywgMjI3LCAxMTAsIDgsIDMsIDIyNywgMTEyLCA4LCAzLCAyMjcsIDkyLCA4LCAzLCAyMjcsIDEwMCwgCisgICAgOCwgMywgMjI3LCA5NiwgOCwgMywgMjI3LCA5MywgOCwgMywgMjI3LCA5NCwgOCwgMywgMjI3LCA4NywgOCwgMywgMjI3LCAKKyAgICA4NiwgOCwgMywgMjI3LCA5MSwgOCwgMywgMjI3LCA5MCwgOCwgMywgMjI3LCA4OCwgOCwgMywgMjI3LCA4OSwgOCwgMywgCisgICAgMjE5LCAxMjcsIDgsIDMsIDE5NCwgOCwgMywgMjE5LCAxOTEsIDgsIDMsIDIxOSwgMTMwLCA4LCAzLCAyMTksIDE4MywgOCwgCisgICAgMywgMjE5LCAxODYsIDgsIDMsIDIxOSwgMTg0LCA4LCAzLCAyMjEsIDIyNiwgOCwgMywgMjIxLCAyMTQsIDgsIDMsIDIwNiwgCisgICAgOCwgMywgMjIxLCAyMzQsIDgsIDMsIDIxOCwgMjgsIDgsIDMsIDIxOCwgMzAsIDgsIDMsIDIxOCwgMjksIDgsIDMsIDIxOSwgCisgICAgMzQsIDgsIDMsIDIxOSwgMjMsIDgsIDMsIDIxOSwgNTgsIDgsIDMsIDIxOSwgMzgsIDgsIDMsIDIyMCwgMTE0LCA4LCAzLCAKKyAgICAyMjEsIDE4MSwgOCwgMywgMjIwLCAxMzksIDgsIDMsIDIxOCwgNSwgOCwgMywgMjE4LCAzLCA4LCAzLCAyMTgsIDgzLCA4LCAKKyAgICAzLCAyMTgsIDI3LCA4LCAzLCAyMTgsIDksIDgsIDMsIDIxOCwgMTcsIDgsIDMsIDIxNywgMTY2LCA4LCAzLCAyMTcsIDE2NSwgCisgICAgOCwgMywgMjE3LCAyMzIsIDgsIDMsIDIxNywgMTczLCA4LCAzLCAyMTcsIDE2OCwgOCwgMywgMjE3LCAxNzIsIDgsIDMsIAorICAgIDIxOCwgMTg2LCA4LCAzLCAyMTgsIDE4NSwgOCwgMywgMjE4LCAxOTIsIDgsIDMsIDIxOCwgMTg3LCA4LCAzLCAyMTgsIDE4OSwgCisgICAgOCwgMywgMjE4LCAxOTEsIDgsIDMsIDIxOCwgMTkwLCA4LCAzLCAyMTgsIDIwMCwgOCwgMywgMjE4LCAxOTgsIDgsIDMsIAorICAgIDIxOCwgMjIzLCA4LCAzLCAyMTgsIDIwMSwgOCwgMywgMjE4LCAxODEsIDgsIDMsIDIxOCwgMTgwLCA4LCAzLCAyMTgsIDE4NCwgCisgICAgOCwgMywgMjE4LCAxODIsIDgsIDMsIDIxOCwgMTk0LCA4LCAzLCAyMTgsIDE5NywgOCwgMywgMjE4LCAxOTUsIDgsIDMsIAorICAgIDIxOCwgMTc3LCA4LCAzLCAyMTgsIDE3NSwgOCwgMywgMjE4LCAxNzksIDgsIDMsIDIxOCwgMTc4LCA4LCAzLCAyMTgsIDE3MCwgCisgICAgOCwgMywgMjE4LCAxNjksIDgsIDMsIDIxOCwgMTc0LCA4LCAzLCAyMTgsIDE3MywgOCwgMywgMjE4LCAxNzEsIDgsIDMsIAorICAgIDIxOCwgMTcyLCA4LCAzLCAyMTAsIDc3LCA4LCAzLCAyMTAsIDc2LCA4LCAzLCAyMTAsIDgyLCA4LCAzLCAyMTAsIDc5LCA4LCAKKyAgICAzLCAyMTAsIDU5LCA4LCAzLCAyMTAsIDYxLCA4LCAzLCAyMTAsIDYwLCA4LCAzLCAyMTAsIDY0LCA4LCAzLCAyMTAsIDYzLCAKKyAgICA4LCAzLCAyMTAsIDY3LCA4LCAzLCAyMTAsIDY1LCA4LCAzLCAyMTAsIDcxLCA4LCAzLCAyMTAsIDcwLCA4LCAzLCAyMTAsIAorICAgIDc0LCA4LCAzLCAyMTAsIDcyLCA4LCAzLCAyMTAsIDU1LCA4LCAzLCAyMTAsIDU0LCA4LCAzLCAyMTAsIDYyLCA4LCAzLCAKKyAgICAyMTAsIDU4LCA4LCAzLCAyMTAsIDU2LCA4LCAzLCAyMTAsIDU3LCA4LCAzLCAyMTAsIDQ3LCA4LCAzLCAyMTAsIDQ2LCA4LCAKKyAgICAzLCAyMTAsIDUxLCA4LCAzLCAyMTAsIDUwLCA4LCAzLCAyMTAsIDQ4LCA4LCAzLCAyMTAsIDQ5LCA4LCAzLCAyNTAsIDEzNiwgCisgICAgOCwgMywgMjUwLCAxMzMsIDgsIDMsIDI1MCwgMTU3LCA4LCAzLCAyNTAsIDE0NCwgOCwgMywgMjUwLCA2NSwgOCwgMywgMjUwLCAKKyAgICA2NCwgOCwgMywgMjUwLCA2NywgOCwgMywgMjUwLCA2NiwgOCwgMywgMjUwLCA3OSwgOCwgMywgMjUwLCA3OCwgOCwgMywgCisgICAgMjUwLCA4NiwgOCwgMywgMjUwLCA4MSwgOCwgMywgMjUwLCAxMTUsIDgsIDMsIDI1MCwgMTEzLCA4LCAzLCAyNTAsIDEzMSwgCisgICAgOCwgMywgMjUwLCAxMjEsIDgsIDMsIDI1MCwgNTksIDgsIDMsIDI1MCwgNjksIDgsIDMsIDI1MCwgNjMsIDgsIDMsIDI1MCwgCisgICAgNjAsIDgsIDMsIDI1MCwgNjIsIDgsIDMsIDI1MCwgNTMsIDgsIDMsIDI1MCwgNTIsIDgsIDMsIDI1MCwgNTcsIDgsIDMsIAorICAgIDI1MCwgNTYsIDgsIDMsIDI1MCwgNTQsIDgsIDMsIDI1MCwgNTUsIDgsIDMsIDIyMiwgMTc1LCA4LCAzLCAyMjIsIDE3OSwgOCwgCisgICAgMywgMjIyLCAxNTgsIDgsIDMsIDIyMiwgMTU5LCA4LCAzLCAyMjIsIDE2MiwgOCwgMywgMjIyLCAxNjEsIDgsIDMsIDIyMiwgCisgICAgMTY1LCA4LCAzLCAyMjIsIDE2MywgOCwgMywgMjIyLCAxNjksIDgsIDMsIDIyMiwgMTY4LCA4LCAzLCAyMjIsIDE3NCwgOCwgCisgICAgMywgMjIyLCAxNzAsIDgsIDMsIDIyMiwgMTU0LCA4LCAzLCAyMjIsIDE1MiwgOCwgMywgMjIyLCAxNjAsIDgsIDMsIDIyMiwgCisgICAgMTU3LCA4LCAzLCAyMjIsIDE1NSwgOCwgMywgMjIyLCAxNTYsIDgsIDMsIDIyMiwgMTQ3LCA4LCAzLCAyMjIsIDE0NiwgOCwgCisgICAgMywgMjIyLCAxNTEsIDgsIDMsIDIyMiwgMTUwLCA4LCAzLCAyMjIsIDE0OCwgOCwgMywgMjIyLCAxNDksIDgsIDMsIDIyOCwgCisgICAgMzQsIDgsIDMsIDIyOCwgMzMsIDgsIDMsIDIyOCwgMzYsIDgsIDMsIDIyOCwgMzUsIDgsIDMsIDIyOCwgMjYsIDgsIDMsIAorICAgIDIyOCwgMjgsIDgsIDMsIDIyOCwgMjcsIDgsIDMsIDIyOCwgMzAsIDgsIDMsIDIyOCwgMjksIDgsIDMsIDIyOCwgMzIsIDgsIAorICAgIDMsIDIyOCwgMzEsIDgsIDMsIDIyOCwgMjEsIDgsIDMsIDIyOCwgMjAsIDgsIDMsIDIyOCwgMjUsIDgsIDMsIDIyOCwgMjQsIAorICAgIDgsIDMsIDIyOCwgMjIsIDgsIDMsIDIyOCwgMjMsIDgsIDMsIDIyOCwgMTUsIDgsIDMsIDIyOCwgMTQsIDgsIDMsIDIyOCwgCisgICAgMTksIDgsIDMsIDIyOCwgMTgsIDgsIDMsIDIyOCwgMTYsIDgsIDMsIDIyOCwgMTcsIDgsIDMsIDIyMCwgNzIsIDgsIDMsIAorICAgIDIyMCwgNjcsIDgsIDMsIDIyMCwgMTAyLCA4LCAzLCAyMjAsIDgzLCA4LCAzLCAyMTksIDIxNSwgOCwgMywgMjE5LCAyMTcsIAorICAgIDgsIDMsIDIxOSwgMjE2LCA4LCAzLCAyMTksIDIzNiwgOCwgMywgMjE5LCAyMzMsIDgsIDMsIDIyMCwgNywgOCwgMywgMjE5LCAKKyAgICAyNTQsIDgsIDMsIDIyMCwgNDIsIDgsIDMsIDIyMCwgMzUsIDgsIDMsIDIyMCwgNjMsIDgsIDMsIDIyMCwgNTAsIDgsIDMsIAorICAgIDIxOSwgMjExLCA4LCAzLCAyMTksIDIwOSwgOCwgMywgMjE5LCAyMjUsIDgsIDMsIDIxOSwgMjE0LCA4LCAzLCAyMTksIDIxMiwgCisgICAgOCwgMywgMjE5LCAyMTMsIDgsIDMsIDIxOSwgMTk0LCA4LCAzLCAyMTksIDE5MywgOCwgMywgMjE5LCAyMDAsIDgsIDMsIAorICAgIDIxOSwgMTk3LCA4LCAzLCAyMTksIDE5NSwgOCwgMywgMjE5LCAxOTYsIDgsIDMsIDIyMywgMTQxLCA4LCAzLCAyMjMsIDEzNSwgCisgICAgOCwgMywgMjA1LCA4LCAzLCAyMjMsIDE0NywgOCwgMywgMjIyLCAxMjAsIDgsIDMsIDIyMiwgMTIyLCA4LCAzLCAyMjIsIAorICAgIDEyMSwgOCwgMywgMjIyLCAxODgsIDgsIDMsIDIyMiwgMTgxLCA4LCAzLCAyMjIsIDIxMSwgOCwgMywgMjIyLCAxOTIsIDgsIAorICAgIDMsIDIyMywgNDMsIDgsIDMsIDIyMywgMTI4LCA4LCAzLCAyMjMsIDgxLCA4LCAzLCAyMjIsIDExMywgOCwgMywgMjIyLCAKKyAgICAxMTAsIDgsIDMsIDIyMiwgMTQwLCA4LCAzLCAyMjIsIDExOSwgOCwgMywgMjIyLCAxMTUsIDgsIDMsIDIyMiwgMTE2LCA4LCAKKyAgICAzLCAyMjIsIDk1LCA4LCAzLCAyMjIsIDk0LCA4LCAzLCAyMjIsIDEwMCwgOCwgMywgMjIyLCA5OCwgOCwgMywgMjIyLCA5NiwgCisgICAgOCwgMywgMjIyLCA5NywgOCwgMywgMjM1LCA5OCwgOCwgMywgMjM1LCA5NywgOCwgMywgMjM1LCAxMDgsIDgsIDMsIDIzNSwgCisgICAgOTksIDgsIDMsIDIzNSwgMTA0LCA4LCAzLCAyMzUsIDEwMywgOCwgMywgMjM1LCAxMDYsIDgsIDMsIDIzNSwgMTA1LCA4LCAzLCAKKyAgICAyMzUsIDQxLCA4LCAzLCAyMzUsIDQwLCA4LCAzLCAyMzUsIDQzLCA4LCAzLCAyMzUsIDQyLCA4LCAzLCAyMzUsIDU2LCA4LCAKKyAgICAzLCAyMzUsIDU0LCA4LCAzLCAyMzUsIDY4LCA4LCAzLCAyMzUsIDU4LCA4LCAzLCAyMzUsIDM0LCA4LCAzLCAyMzUsIDMyLCAKKyAgICA4LCAzLCAyMzUsIDUxLCA4LCAzLCAyMzUsIDM5LCA4LCAzLCAyMzUsIDM2LCA4LCAzLCAyMzUsIDM3LCA4LCAzLCAyMzUsIAorICAgIDI2LCA4LCAzLCAyMzUsIDI1LCA4LCAzLCAyMzUsIDMwLCA4LCAzLCAyMzUsIDI5LCA4LCAzLCAyMzUsIDI3LCA4LCAzLCAKKyAgICAyMzUsIDI4LCA4LCAzLCAyMjQsIDQ2LCA4LCAzLCAyMjQsIDQ0LCA4LCAzLCAyMjQsIDUzLCA4LCAzLCAyMjQsIDQ3LCA4LCAKKyAgICAzLCAyMjQsIDUwLCA4LCAzLCAyMjQsIDQ5LCA4LCAzLCAyMjQsIDUyLCA4LCAzLCAyMjQsIDUxLCA4LCAzLCAyMjMsIDI1NSwgCisgICAgOCwgMywgMjIzLCAyNTIsIDgsIDMsIDIyNCwgMSwgOCwgMywgMjI0LCAwLCA4LCAzLCAyMjQsIDMzLCA4LCAzLCAyMjQsIDMyLCAKKyAgICA4LCAzLCAyMjQsIDQyLCA4LCAzLCAyMjQsIDM2LCA4LCAzLCAyMjMsIDI0NywgOCwgMywgMjIzLCAyNDMsIDgsIDMsIDIyNCwgCisgICAgMzAsIDgsIDMsIDIyMywgMjUxLCA4LCAzLCAyMjMsIDI0OSwgOCwgMywgMjIzLCAyNTAsIDgsIDMsIDIyMywgMjI3LCA4LCAzLCAKKyAgICAyMjMsIDIyNSwgOCwgMywgMjIzLCAyMzcsIDgsIDMsIDIyMywgMjMwLCA4LCAzLCAyMjMsIDIyOCwgOCwgMywgMjIzLCAyMjksIAorICAgIDgsIDMsIDIzNSwgODcsIDgsIDMsIDIzNSwgODYsIDgsIDMsIDIzNSwgOTMsIDgsIDMsIDIzNSwgODgsIDgsIDMsIDIzNSwgCisgICAgOTAsIDgsIDMsIDIzNSwgODksIDgsIDMsIDIzNSwgOTIsIDgsIDMsIDIzNSwgOTEsIDgsIDMsIDIzNSwgNzgsIDgsIDMsIAorICAgIDIzNSwgODAsIDgsIDMsIDIzNSwgNzksIDgsIDMsIDIzNSwgODMsIDgsIDMsIDIzNSwgODIsIDgsIDMsIDIzNSwgODUsIDgsIAorICAgIDMsIDIzNSwgODQsIDgsIDMsIDIzNSwgNzQsIDgsIDMsIDIzNSwgNzMsIDgsIDMsIDIzNSwgODEsIDgsIDMsIDIzNSwgNzcsIAorICAgIDgsIDMsIDIzNSwgNzUsIDgsIDMsIDIzNSwgNzYsIDgsIDMsIDIzNSwgNzAsIDgsIDMsIDIzNSwgNjksIDgsIDMsIDIzNSwgCisgICAgNzIsIDgsIDMsIDIzNSwgNzEsIDgsIDMsIDIyOCwgMTYyLCA4LCAzLCAyMjgsIDE2MSwgOCwgMywgMjI4LCAxNjksIDgsIDMsIAorICAgIDIyOCwgMTYzLCA4LCAzLCAyMjgsIDE2NSwgOCwgMywgMjI4LCAxNjQsIDgsIDMsIDIyOCwgMTY4LCA4LCAzLCAyMjgsIDE2NiwgCisgICAgOCwgMywgMjI4LCAxNTEsIDgsIDMsIDIyOCwgMTUyLCA4LCAzLCAyMjgsIDE1NywgOCwgMywgMjI4LCAxNTYsIDgsIDMsIAorICAgIDIyOCwgMTYwLCA4LCAzLCAyMjgsIDE1OCwgOCwgMywgMjI4LCAxNDYsIDgsIDMsIDIyOCwgMTU1LCA4LCAzLCAyMjgsIDE1MCwgCisgICAgOCwgMywgMjI4LCAxNDcsIDgsIDMsIDIyOCwgMTQ4LCA4LCAzLCAyMjgsIDE0MSwgOCwgMywgMjI4LCAxNDAsIDgsIDMsIAorICAgIDIyOCwgMTQ1LCA4LCAzLCAyMjgsIDE0NCwgOCwgMywgMjI4LCAxNDIsIDgsIDMsIDIyOCwgMTQzLCA4LCAzLCAyMjcsIDEzNywgCisgICAgOCwgMywgMjI3LCAxMzYsIDgsIDMsIDIyNywgMTQ4LCA4LCAzLCAyMjcsIDE0MSwgOCwgMywgMjI3LCAxNDUsIDgsIDMsIAorICAgIDIyNywgMTQ0LCA4LCAzLCAyMjcsIDE0NywgOCwgMywgMjI3LCAxNDYsIDgsIDMsIDIyNywgMTI0LCA4LCAzLCAyMjcsIDEyNiwgCisgICAgOCwgMywgMjI3LCAxMjUsIDgsIDMsIDIyNywgMTMwLCA4LCAzLCAyMjcsIDEyOSwgOCwgMywgMjI3LCAxMzQsIDgsIDMsIAorICAgIDIyNywgMTMxLCA4LCAzLCAyMjcsIDEyMiwgOCwgMywgMjI3LCAxMjAsIDgsIDMsIDIyNywgMTI4LCA4LCAzLCAyMjcsIDEyMywgCisgICAgOCwgMywgMjExLCAxNTAsIDgsIDMsIDIxMSwgMTQ5LCA4LCAzLCAyMTEsIDE1NywgOCwgMywgMjExLCAxNTIsIDgsIDMsIAorICAgIDIxMSwgMTU0LCA4LCAzLCAyMTEsIDE1MywgOCwgMywgMjExLCAxNTYsIDgsIDMsIDIxMSwgMTU1LCA4LCAzLCAyMTEsIDEzOSwgCisgICAgOCwgMywgMjExLCAxNDAsIDgsIDMsIDIxMSwgMTQ0LCA4LCAzLCAyMTEsIDE0MywgOCwgMywgMjExLCAxNDgsIDgsIDMsIAorICAgIDIxMSwgMTQ2LCA4LCAzLCAyMTEsIDEyMSwgOCwgMywgMjExLCAxMTksIDgsIDMsIDIxMSwgMTMxLCA4LCAzLCAyMTEsIDEyNCwgCisgICAgOCwgMywgMjExLCAxMjIsIDgsIDMsIDIxMSwgMTIzLCA4LCAzLCAyMTAsIDI1MCwgOCwgMywgMjEwLCAyNDgsIDgsIDMsIAorICAgIDIxMSwgOCwgOCwgMywgMjEwLCAyNTEsIDgsIDMsIDIxMSwgMiwgOCwgMywgMjExLCAxLCA4LCAzLCAyMTEsIDUsIDgsIDMsIAorICAgIDIxMSwgMywgOCwgMywgMjEwLCAxOTEsIDgsIDMsIDIxMCwgMTkwLCA4LCAzLCAyMTAsIDE5NCwgOCwgMywgMjEwLCAxOTIsIAorICAgIDgsIDMsIDIxMCwgMjI0LCA4LCAzLCAyMTAsIDIyMSwgOCwgMywgMjEwLCAyNDQsIDgsIDMsIDIxMCwgMjI4LCA4LCAzLCAKKyAgICAyMTAsIDE4MiwgOCwgMywgMjEwLCAxNzgsIDgsIDMsIDIxMCwgMjEyLCA4LCAzLCAyMTAsIDE4OSwgOCwgMywgMjEwLCAxODUsIAorICAgIDgsIDMsIDIxMCwgMTg2LCA4LCAzLCAyMTAsIDE2MiwgOCwgMywgMjEwLCAxNjEsIDgsIDMsIDIxMCwgMTY5LCA4LCAzLCAKKyAgICAyMTAsIDE2NSwgOCwgMywgMjEwLCAxNjMsIDgsIDMsIDIxMCwgMTY0LCA4LCAzNCwgMjI0LCAzMywgOCwgMzQsIDIzMiwgCisgICAgMjQxLCA4LCAzNCwgMjM0LCA2MSwgOCwgMzQsIDIyNywgMTQxLCA4LCAzNCwgMjQ5LCA2OSwgOCwgMzQsIDIxOCwgMTkyLCA4LCAKKyAgICAzNCwgMjQzLCAxMiwgOCwgMzQsIDI0MywgNDQsIDgsIDM0LCAyMzAsIDIzMCwgOCwgMzQsIDI0MCwgMTgwLCA4LCAzNCwgCisgICAgMjMyLCA1NiwgOCwgMzQsIDI1MiwgODMsIDgsIDM0LCAyMzAsIDEyNiwgOCwgMzQsIDIxMCwgMjQ0LCA4LCAzNCwgMjI0LCAKKyAgICAxMjEsIDgsIDM0LCAyNDAsIDE3NCwgOCwgMzQsIDIxNywgNDYsIDgsIDM0LCAyNDMsIDEzNSwgOCwgMzQsIDIxMCwgNSwgOCwgCisgICAgMzQsIDI0OSwgNjMsIDgsIDM0LCAyNDgsIDk1LCA4LCAzNCwgMjUxLCA5OCwgOCwgMzQsIDI0MywgOCwgOCwgMzQsIDIyNywgCisgICAgMTMxLCA4LCAzNCwgMjE1LCAxMTgsIDgsIDM0LCAyMjYsIDE3NSwgOCwgMzQsIDIzNSwgNzQsIDgsIDM0LCAyMTAsIDE5LCA4LCAKKyAgICAzNCwgMjI0LCAxMDAsIDgsIDM0LCAyNDEsIDEwOCwgOCwgMzQsIDIxMCwgMjUwLCA4LCAzNCwgMjEyLCAxMTIsIDgsIDM0LCAKKyAgICAyMTksIDIwMCwgOCwgMzQsIDIxMywgMjQ0LCA4LCAzNCwgMjEwLCAxMTYsIDgsIDM0LCAyMzUsIDY4LCA4LCAzNCwgMjI3LCAKKyAgICA5NiwgOCwgMzQsIDIzNSwgNzIsIDgsIDM0LCAyNDIsIDE1NCwgOCwgMzQsIDIzNSwgOTIsIDgsIDM0LCAyMTEsIDIyNywgOCwgCisgICAgMzQsIDI0NiwgNzgsIDgsIDM0LCAyMTksIDIxMywgOCwgMzQsIDIzMiwgMjM2LCA4LCAzNCwgMjQ5LCA3MywgOCwgMzQsIAorICAgIDI0OSwgMTA1LCA4LCAzNCwgMjUwLCAzNywgOCwgMzQsIDI0MCwgMTc3LCA4LCAzNCwgMjIwLCA3MiwgOCwgMzQsIDIxMCwgNCwgCisgICAgOCwgMzQsIDIxOSwgMjU0LCA4LCAzNCwgMjUwLCAxMzEsIDgsIDM0LCAyMDksIDIzMSwgOCwgMzQsIDIyOSwgMTczLCA4LCAKKyAgICAzNCwgMjM0LCAxODIsIDIzMiwgMTk2LCAxLCAyNTIsIDE5MSwgMjMyLCAxOTYsIDEsIDE5MCwgMjMyLCAxOTYsIDEsIDIyNSwgCisgICAgMTQ3LCAyMzIsIDE5NiwgMSwgMjQ4LCAyMjEsIDIzMiwgMTk2LCAxLCAyMTcsIDEwNSwgMjMyLCAxOTYsIDEsIDIxNiwgMjA4LCAKKyAgICAyMzIsIDE5NiwgMSwgMjQzLCAxMzUsIDIzMiwgMTk2LCAxLCAxNzYsIDIzMiwgMTk2LCAxLCAyMzQsIDEzMiwgMjMyLCAxOTYsIAorICAgIDEsIDIzNSwgMTQxLCAyMzIsIDE5NiwgMSwgMjUxLCAzMywgMjMyLCAxOTYsIDEsIDI1MCwgMTU3LCAyMzIsIDE5NiwgMSwgCisgICAgMjQ2LCAzOCwgMjMyLCAxOTYsIDEsIDIxNSwgMTgzLCAyMzIsIDE5NiwgMSwgMjE1LCAxNzUsIDIzMiwgMTk2LCAxLCAxODQsIAorICAgIDIzMiwgMTk2LCAxLCAxOTcsIDIzMiwgMTk2LCAxLCAyMzMsIDEzNSwgMjMyLCAxOTYsIDEsIDIwNiwgMjMyLCAxOTYsIDEsIAorICAgIDIxMCwgODIsIDIzMiwgMTk2LCAxLCAyMTAsIDExNiwgMjMyLCAxOTYsIDEsIDIyOSwgNzcsIDIzMiwgMTk2LCAxLCAxNjIsIAorICAgIDIzMiwgMTk2LCAxLCAyMTEsIDE2NSwgMjMyLCAxOTYsIDEsIDI0MSwgMTg5LCAyMzIsIDE5NiwgMSwgMjQ0LCAxOTYsIDIzMiwgCisgICAgMTk2LCAxLCAyMTIsIDY1LCAyMzIsIDE5NiwgMSwgMjIwLCAxMDIsIDIzMiwgMTk2LCAxLCAxOTEsIDIzMiwgMTk2LCAxLCAKKyAgICAyNDIsIDI0OSwgMjMyLCAxOTYsIDEsIDYxLCAyMzIsIDE5NiwgMSwgMjU0LCAyNDMsIDIzMiwgMTk2LCAxLCA3NSwgMjMyLCAKKyAgICAxOTYsIDEsIDI0NSwgNTUsIDIzMiwgMTk2LCAxLCA3MywgMjMyLCAxOTYsIDEsIDc2LCAyMzIsIDE5NiwgMSwgNzAsIDIzMiwgCisgICAgMTk2LCAxLCAyMTQsIDIxNCwgMjMyLCAxOTYsIDEsIDIxNCwgMjA4LCAyMzIsIDE5NiwgMSwgMjI2LCAyMzQsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDIxNiwgMTE3LCAyMzIsIDE5NiwgMSwgMTM4LCAyMjksIDIyOSwgMjI1LCAxNiwgMjMyLCAxOTYsIAorICAgIDEsIDEzOCwgMjMwLCAzMiwgMjQ5LCA3MiwgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjUxLCAyMDUsIDIzMiwgMTk2LCAKKyAgICAxLCAxMzgsIDIzMCwgMzIsIDE5NywgMjMyLCAxOTYsIDEsIDEzOCwgMjMwLCAzMiwgMjM1LCAxMTUsIDIzMiwgMTk2LCAyMjQsIAorICAgIDE0MSwgMjQ5LCAyMTksIDIzMiwgMTk2LCAyMjQsIDE0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMywgMjQ1LCAyMDksIAorICAgIDQxLCAzLCAyNDUsIDIwNSwgNDEsIDMsIDI0MSwgMjIwLCA0MSwgMywgMjEyLCAxNywgNDEsIDMsIDIxMiwgMTYsIDQxLCAzLCAKKyAgICAyMjUsIDIxMSwgNDEsIDMsIDI1MiwgMTMsIDQxLCAzLCAyNTIsIDY2LCA0MSwgMywgMjMxLCAxMTYsIDQxLCAzLCAyMzMsIAorICAgIDI0NywgNDEsIDMsIDIzMSwgNiwgNDEsIDMsIDI0MywgNzUsIDQxLCAzLCAyNDQsIDE0NywgNDEsIDMsIDIxMywgMjUwLCA0MSwgCisgICAgMywgMjE3LCAxMSwgNDEsIDMsIDIxNiwgMTk0LCA0MSwgMywgMjQ4LCAxNiwgNDEsIDMsIDI0OCwgMTMsIDQxLCAzLCAyMzMsIAorICAgIDUwLCA0MSwgMywgMjIzLCAxMDgsIDQxLCAzLCAyNDgsIDc3LCA0MSwgMywgMjI5LCAxMzksIDQxLCAzLCAyMjEsIDE3MCwgCisgICAgNDEsIDMsIDIyMCwgNjEsIDQxLCAzLCAyMTAsIDkyLCA0MSwgMywgMjEwLCA3MywgNDEsIDMsIDI1MCwgMTgyLCA0MSwgMywgCisgICAgMjM1LCAxMjQsIDQxLCAzLCAyMjgsIDE3NiwgNDEsIDMsIDIxMSwgNDQsIDQxLCAzLCAyMzQsIDE4MSwgNDEsIDMsIDIyOSwgCisgICAgNTEsIDQxLCAzLCAyNDMsIDU1LCA0MSwgMywgMjMxLCA4MCwgNDEsIDMsIDIyOSwgMTAzLCA0MSwgMywgMjI3LCAxNTUsIDQxLCAKKyAgICAzLCA3MywgNDEsIDMsIDIzNSwgMjU1LCA0MSwgMywgMjQxLCAxODAsIDQxLCAzLCAyNDEsIDE2MCwgNDEsIDMsIDIxMSwgCisgICAgMjUwLCA0MSwgMywgMjExLCAyNDEsIDQxLCAzLCAyMjUsIDEwOCwgNDEsIDMsIDI1MiwgMTEsIDQxLCAzLCAyNTIsIDYsIDQxLCAKKyAgICAzLCAyMzEsIDEwOSwgNDEsIDMsIDIzMywgMjQ0LCA0MSwgMywgMjMxLCAzLCA0MSwgMywgMjQzLCA3MSwgNDEsIDMsIDI0NCwgCisgICAgMTIxLCA0MSwgMywgMjEzLCAxNzYsIDQxLCAzLCAyMTYsIDExNywgNDEsIDMsIDIxNiwgMTc1LCA0MSwgMywgMjQ4LCA4LCAKKyAgICA0MSwgMywgMjQ4LCAxMiwgNDEsIDMsIDIzMiwgMjQxLCA0MSwgMywgMjIzLCAzNSwgNDEsIDMsIDI0OCwgMywgNDEsIDMsIAorICAgIDIyOSwgMTMzLCA0MSwgMywgMjE5LCAxOTEsIDQxLCAzLCAyMjAsIDMyLCA0MSwgMywgMjEwLCA0NCwgNDEsIDMsIDIxMCwgCisgICAgNjksIDQxLCAzLCAyNTAsIDUxLCA0MSwgMywgMjM1LCAxMDgsIDQxLCAzLCAyMjgsIDE2OSwgNDEsIDMsIDIxMSwgOCwgNDEsIAorICAgIDMsIDIzNCwgOTIsIDQxLCAzLCAyMjksIDQzLCA0MSwgMywgMjQyLCAyMTQsIDQxLCAzLCAyMzAsIDIzMCwgNDEsIDMsIDIyOCwgCisgICAgMjMzLCA0MSwgMywgMjI3LCAxNDgsIDQxLCAzLCA2MSwgNDEsIDMsIDI1NCwgMTIzLCA0MSwgMywgMjI5LCA3MiwgNDEsIDMsIAorICAgIDE2MiwgNDEsIDMsIDI0MiwgMTgsIDQxLCAzLCAyMTIsIDY1LCA0MSwgMywgMjEyLCA1NSwgNDEsIDMsIDE5MCwgNDEsIDMsIAorICAgIDI1MiwgMTgsIDQxLCAzLCAyNTIsIDE5MSwgNDEsIDMsIDIzMSwgMTI0LCA0MSwgMywgMjMzLCAyNTEsIDQxLCAzLCAyMzMsIAorICAgIDI1MCwgNDEsIDMsIDIzMSwgMTAsIDQxLCAzLCAyNDMsIDc5LCA0MSwgMywgMjQ0LCAxOTYsIDQxLCAzLCAyMTQsIDI3LCA0MSwgCisgICAgMywgMjE3LCAxMDUsIDQxLCAzLCAyMTYsIDIwOCwgNDEsIDMsIDI0OCwgMjUsIDQxLCAzLCAyNDgsIDE1LCA0MSwgMywgMjMzLCAKKyAgICAxMzUsIDQxLCAzLCAyMDUsIDQxLCAzLCAyNDgsIDIyMSwgNDEsIDMsIDIyOSwgMTQ4LCA0MSwgMywgMjA2LCA0MSwgMywgCisgICAgMjIwLCAxMDIsIDQxLCAzLCAyMTAsIDExNiwgNDEsIDMsIDIxMCwgODIsIDQxLCAzLCAyNTEsIDMzLCA0MSwgMywgMjM1LCAKKyAgICAxNDEsIDQxLCAzLCAyMjgsIDE4NSwgNDEsIDMsIDE5MSwgNDEsIDMsIDE3NiwgNDEsIDMsIDIzNCwgMjM0LCA0MSwgMywgCisgICAgMjI5LCA1NiwgNDEsIDMsIDI0MywgMTM1LCA0MSwgMywgMTg0LCA0MSwgMywgMTk3LCA0MSwgMywgMjI3LCAxNjUsIDQxLCAzLCAKKyAgICAyMjYsIDE4MywgNDEsIDMsIDIyNiwgMTc5LCA0MSwgMywgMjQxLCA1MywgNDEsIDMsIDIxMSwgMjE1LCA0MSwgMywgMjExLCAKKyAgICAyMTEsIDQxLCAzLCAyMjQsIDI0OSwgNDEsIDMsIDI1MiwgOSwgNDEsIDMsIDI1MSwgMTkzLCA0MSwgMywgMjMxLCAxMDQsIAorICAgIDQxLCAzLCAyMzMsIDI0MiwgNDEsIDMsIDIzMCwgMjU1LCA0MSwgMywgMjQzLCA2NywgNDEsIDMsIDI0NCwgMzQsIDQxLCAzLCAKKyAgICAyMTMsIDEyNywgNDEsIDMsIDIxNiwgMTcsIDQxLCAzLCAyMTYsIDE1MywgNDEsIDMsIDI0OCwgNiwgNDEsIDMsIDI0OCwgMTAsIAorICAgIDQxLCAzLCAyMzIsIDEyNywgNDEsIDMsIDIyMiwgMTk3LCA0MSwgMywgMjQ3LCAxMjUsIDQxLCAzLCAyMjksIDEyMCwgNDEsIAorICAgIDMsIDIxOSwgNDAsIDQxLCAzLCAyMjAsIDEsIDQxLCAzLCAyMTAsIDIxLCA0MSwgMywgMjEwLCA2NiwgNDEsIDMsIDI0OSwgCisgICAgMTc0LCA0MSwgMywgMjM1LCA1OSwgNDEsIDMsIDIyOCwgMTU5LCA0MSwgMywgMjEwLCAyMjksIDQxLCAzLCAyMzQsIDEwLCAKKyAgICA0MSwgMywgMjI5LCA0MSwgNDEsIDMsIDI0MiwgMTY0LCA0MSwgMywgMjMwLCAxMzIsIDQxLCAzLCAyMjgsIDY0LCA0MSwgMywgCisgICAgMjI3LCAxMzIsIDQxLCAzLCA3MCwgNDEsIDMsIDIxNCwgMTkwLCA0MSwgMywgMjQwLCAyMjIsIDQxLCAzLCAyNDAsIDIxMiwgCisgICAgNDEsIDMsIDIxMSwgMTk1LCA0MSwgMywgMjExLCAxODksIDQxLCAzLCAyMjQsIDE1MCwgNDEsIDMsIDI1MiwgOCwgNDEsIDMsIAorICAgIDI1MSwgMTI1LCA0MSwgMywgMjMxLCAxMDMsIDQxLCAzLCAyMzMsIDI0MCwgNDEsIDMsIDIzMCwgMjU0LCA0MSwgMywgMjQzLCAKKyAgICA2NiwgNDEsIDMsIDI0MywgMjM0LCA0MSwgMywgMjEyLCAxMTYsIDQxLCAzLCAyMTUsIDExOCwgNDEsIDMsIDIxNiwgMTM2LCAKKyAgICA0MSwgMywgMjQ4LCA0LCA0MSwgMywgMjQ4LCA5LCA0MSwgMywgMjMyLCA5OCwgNDEsIDMsIDIyMiwgMTQwLCA0MSwgMywgCisgICAgMjQ2LCA3OCwgNDEsIDMsIDIyOSwgMTE1LCA0MSwgMywgMjE4LCA4MywgNDEsIDMsIDIxOSwgMjI1LCA0MSwgMywgMjEwLCAKKyAgICAxMywgNDEsIDMsIDIxMCwgNjIsIDQxLCAzLCAyNDksIDExMiwgNDEsIDMsIDIzNSwgNTEsIDQxLCAzLCAyMjgsIDE1NSwgNDEsIAorICAgIDMsIDIxMCwgMjEyLCA0MSwgMywgMjMzLCAyMTcsIDQxLCAzLCAyMjksIDQwLCA0MSwgMywgMjQyLCAxMTMsIDQxLCAzLCAKKyAgICAyMzAsIDEwMiwgNDEsIDMsIDIyNywgMjM3LCA0MSwgMywgMjI3LCAxMjgsIDQxLCAzLCA3NiwgNDEsIDMsIDIyNiwgMTk2LCAKKyAgICA0MSwgMywgMjI5LCAwLCA0MSwgMywgMjQxLCA2OCwgNDEsIDMsIDI0MSwgNTYsIDQxLCAzLCAyMTEsIDIyNywgNDEsIDMsIAorICAgIDIxMSwgMjE2LCA0MSwgMywgMjI1LCAxNiwgNDEsIDMsIDI1MiwgMTAsIDQxLCAzLCAyNTEsIDIwNSwgNDEsIDMsIDIzMSwgCisgICAgMTA1LCA0MSwgMywgMjMzLCAyNDMsIDQxLCAzLCAyMzEsIDEsIDQxLCAzLCAyNDMsIDY5LCA0MSwgMywgMjQzLCA2OCwgNDEsIAorICAgIDMsIDI0NCwgNDMsIDQxLCAzLCAyMTMsIDEzOCwgNDEsIDMsIDExMSwgNDEsIDMsIDIxNiwgMTU2LCA0MSwgMywgMjQ4LCA3LCAKKyAgICA0MSwgMywgMjQ4LCAxMSwgNDEsIDMsIDIzMiwgMTU2LCA0MSwgMywgMjIyLCAyMTEsIDQxLCAzLCAyNDcsIDE0NSwgNDEsIDMsIAorICAgIDIyOSwgMTI0LCA0MSwgMywgMjE5LCA1OCwgNDEsIDMsIDIyMCwgNywgNDEsIDMsIDIxMCwgMjMsIDQxLCAzLCAyMTAsIDY3LCAKKyAgICA0MSwgMywgMjQ5LCAyMzgsIDQxLCAzLCAyMzUsIDY4LCA0MSwgMywgMjI4LCAxNjAsIDQxLCAzLCAyMTAsIDI0NCwgNDEsIDMsIAorICAgIDIzNCwgMjgsIDQxLCAzLCAyMjksIDQyLCA0MSwgMywgMjQyLCAxNzQsIDQxLCAzLCAyMzAsIDE2MSwgNDEsIDMsIDIyOCwgCisgICAgNzQsIDQxLCAzLCAyMjcsIDEzNCwgNDEsIDMsIDc1LCA0MSwgMywgMjQ1LCAxNTAsIDQxLCAzLCAyMjksIDYxLCA0MSwgMywgCisgICAgMjQxLCAyMzgsIDQxLCAzLCAyNDEsIDIwOSwgNDEsIDMsIDIxMiwgMjIsIDQxLCAzLCAyMTIsIDEyLCA0MSwgMywgMjI1LCAKKyAgICAyMjEsIDQxLCAzLCAyNTIsIDE0LCA0MSwgMywgMjUyLCA3NSwgNDEsIDMsIDIzMSwgMTE3LCA0MSwgMywgMjMzLCAyNDgsIAorICAgIDQxLCAzLCAyMzMsIDI0NiwgNDEsIDMsIDIzMSwgNywgNDEsIDMsIDI0MywgNzYsIDQxLCAzLCAyNDMsIDc0LCA0MSwgMywgCisgICAgMjQ0LCAxNTQsIDQxLCAzLCAyMTMsIDI1NSwgNDEsIDMsIDIxNywgMjIsIDQxLCAzLCAyMTYsIDE5NSwgNDEsIDMsIDI0OCwgCisgICAgMTcsIDQxLCAzLCAyNDgsIDE0LCA0MSwgMywgMjMzLCA1OCwgNDEsIDMsIDIyMywgMTI4LCA0MSwgMywgMjQ4LCA5MCwgNDEsIAorICAgIDMsIDIyOSwgMTQwLCA0MSwgMywgMjIxLCAxODEsIDQxLCAzLCAyMjAsIDYzLCA0MSwgMywgMjEwLCA5NCwgNDEsIDMsIDIxMCwgCisgICAgNzQsIDQxLCAzLCAyNTAsIDE5MCwgNDEsIDMsIDIzNSwgMTI2LCA0MSwgMywgMjI4LCAxNzgsIDQxLCAzLCAyMTEsIDQ3LCAKKyAgICA0MSwgMywgMjM0LCAxODIsIDQxLCAzLCAyMjksIDUyLCA0MSwgMywgMjI5LCA0OCwgNDEsIDMsIDI0MywgNjIsIDQxLCAzLCAKKyAgICAyNDMsIDUxLCA0MSwgMywgMjMxLCA5MSwgNDEsIDMsIDIyOSwgMTA3LCA0MSwgMywgMjI3LCAxNTYsIDQxLCAzLCAyMjksIAorICAgIDc5LCA0MSwgMywgMjMzLCAyMiwgNDEsIDI0OSwgMjE5LCA0MSwgMjQzLCAyMjksIDIxOCwgMTI5LCA0MSwgMjI0LCAxMywgCisgICAgNzgsIDQxLCAzLCAyMjksIDEyMywgMjQ0LCAxOTYsIDQxLCAzLCAyMjksIDEyMywgMTc2LCA0MSwgMywgMjI5LCAxMjMsIAorICAgIDIxOSwgNDAsIDQxLCAxNiwgMjQ0LCAxNDQsIDQxLCAxNiwgMjM0LCAxODAsIDQxLCAxNiwgMjE2LCA4MSwgNDEsIDE2LCAKKyAgICAyMjgsIDIwOCwgNDEsIDE2LCAyNTIsIDE0NywgNDEsIDE2LCAyNDQsIDE5NSwgNDEsIDE2LCAyMTcsIDEwMSwgNDEsIDE2LCAKKyAgICAyNDgsIDE3NiwgNDEsIDE2LCAyNDcsIDEyNCwgNDEsIDE2LCAyMzMsIDIwNiwgNDEsIDE2LCAyMTYsIDIxLCA0MSwgMTYsIAorICAgIDI0NywgMTQ0LCA0MSwgMTYsIDIzNSwgNjAsIDQxLCAyMSwgMjEwLCA4NiwgNDEsIDIxLCAxMTAsIDQxLCAyMSwgMTA1LCA0MSwgCisgICAgMjEsIDE1OCwgNDEsIDIxLCAxNjEsIDQxLCAyMSwgMTg5LCA0MSwgMjEsIDE5NCwgNDEsIDIxLCAxOTgsIDQxLCAyMSwgMTk1LCAKKyAgICA0MSwgMjEsIDIwMCwgNDEsIDMsIDIyOSwgMTIzLCAxODQsIDQxLCAzLCAyMjksIDEyMywgMjQ3LCAxNDUsIDMzLCA2LCAxLCAKKyAgICAyMTAsIDkwLCAzMywgNCwgMSwgMjEwLCA5MCwgMzMsIDYsIDEsIDI0NiwgMzQsIDMzLCA0LCAxLCAyNDYsIDM0LCAzMywgNiwgCisgICAgMSwgMjIzLCA0OSwgMjQ2LCAzNiwgMzMsIDQsIDEsIDIyMywgNDksIDI0NiwgMzYsIDMzLCA2LCAxLCAyMzUsIDE4NSwgMzMsIAorICAgIDQsIDEsIDIzNSwgMTg1LCAzMywgNiwgMSwgMjQ3LCAxNjEsIDMzLCA0LCAxLCAyNDcsIDE2MSwgMzMsIDYsIDEsIDIzMCwgCisgICAgMTQwLCAyMTQsIDIwNSwgMzMsIDQsIDEsIDIzMCwgMTQwLCAyMTQsIDIwNSwgMzMsIDYsIDEsIDI1MSwgMTM2LCAyMjYsIAorICAgIDIwMSwgMzMsIDQsIDEsIDI1MSwgMTM2LCAyMjYsIDIwMSwgMzMsIDYsIDEsIDIyOSwgODcsIDIxMSwgMzEsIDMzLCA0LCAxLCAKKyAgICAyMjksIDg3LCAyMTEsIDMxLCAzMywgNiwgMSwgMjExLCAyOCwgMiwgMjUyLCAxODUsIDIxMSwgMzEsIDMzLCA0LCAxLCAyMTEsIAorICAgIDI4LCAyLCAyNTIsIDE4NSwgMjExLCAzMSwgMzMsIDYsIDEsIDIzNSwgMTgzLCAyMTEsIDU5LCAzMywgNCwgMSwgMjM1LCAKKyAgICAxODMsIDIxMSwgNTksIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTAsIDIxMiwgMzMsIDQsIDEsIDIyMywgNDksIDIxMCwgMjEyLCAKKyAgICAzMywgNiwgMSwgMjM1LCAxODMsIDYxLCAzMywgNCwgMSwgMjM1LCAxODMsIDYxLCAzMywgNiwgMSwgMjUwLCAwLCAyMzIsIAorICAgIDE5MiwgMjEwLCAxODMsIDMzLCA0LCAxLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIDI1MSwgMjE0LCAKKyAgICAyMTAsIDE4MywgMzMsIDQsIDEsIDI1MSwgMjE0LCAyMTAsIDE4MywgMzMsIDYsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgCisgICAgMTkyLCAyMTAsIDE4MywgMzMsIDQsIDEsIDIzNSwgMTgzLCAyNTAsIDAsIDIzMiwgMTkyLCAyMTAsIDE4MywgMzMsIDYsIDEsIAorICAgIDIxMCwgMjQ2LCAzMywgNCwgMSwgMjEwLCAyNDYsIDMzLCA2LCAxLCAyMjMsIDQ5LCAyMTUsIDE3OCwgMzMsIDQsIDEsIDIyMywgCisgICAgNDksIDIxNSwgMTc4LCAzMywgNiwgMSwgMjE5LCA1MiwgMjQ4LCA5MCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0OCwgOTAsIDMzLCAKKyAgICA2LCAxLCAyMTksIDUyLCAyNDUsIDE3NCwgMzMsIDQsIDEsIDIxOSwgNTIsIDI0NSwgMTc0LCAzMywgNiwgMSwgMjE5LCA1MiwgCisgICAgMjQ1LCAxNTksIDMzLCA0LCAxLCAyMTksIDUyLCAyNDUsIDE1OSwgMzMsIDYsIDEsIDIzMCwgMTQ0LCA3NiwgMzMsIDQsIDEsIAorICAgIDIzMCwgMTQ0LCA3NiwgMzMsIDYsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDQsIDEsIDI1MSwgMjQwLCA3NiwgMzMsIDYsIDEsIAorICAgIDUyLCAyMzAsIDE0NCwgNzYsIDMzLCA0LCAxLCA1MiwgMjMwLCAxNDQsIDc2LCAzMywgMSwgMjMwLCA4NiwgNzYsIDM4LCAzMywgCisgICAgMjEyLCAxMDAsIDM4LCAzMywgMjE2LCAyNDgsIDIzMCwgMTkxLCA1MCwgMzgsIDMzLCAyNDAsIDIxMSwgMjMwLCAxOTEsIDUwLCAKKyAgICAzOCwgMzMsIDIxNiwgMTQ4LCAyMzAsIDE5MSwgNTAsIDIxOSwgOTMsIDI1MywgMjE2LCAzOCwgMzMsIDEsIDIxNCwgMjAyLCAKKyAgICAyMzYsIDYwLCAzOCwgMzMsIDEsIDczLCAzOCwgMzMsIDEsIDIxMSwgOCwgMzgsIDMzLCAxLCA3MCwgMzgsIDMzLCAxLCAyNDIsIAorICAgIDMsIDUwLCAzOCwgMzMsIDEsIDIxMSwgMjcsIDM4LCAzMywgMSwgMjE5LCA1MiwgNTAsIDM4LCAzMywgMSwgMjI2LCAyMDEsIAorICAgIDM4LCAzMywgMjM0LCAxOTIsIDM4LCAzMywgMjI1LCAyMjcsIDMzLCAyMzQsIDE5MiwgMzMsIDIyNSwgMjI3LCAzMywgNiwgMSwgCisgICAgMjQ2LCA0NiwgMzMsIDQsIDEsIDI0NiwgNDYsIDMzLCA2LCAxLCAyNDYsIDI3LCAzMywgNCwgMSwgMjQ2LCAyNywgMzMsIDYsIAorICAgIDEsIDIxMCwgNTIsIDMzLCA0LCAxLCAyMTAsIDUyLCAzMywgNiwgMSwgMjUwLCAyMDYsIDMzLCA0LCAxLCAyNTAsIDIwNiwgCisgICAgMzMsIDYsIDEsIDI0NiwgMjUsIDMzLCA0LCAxLCAyNDYsIDI1LCAzMywgNiwgMSwgMjE3LCAyMywgMiwgMjMwLCAyMjQsIAorICAgIDEwMywgMzMsIDQsIDEsIDIxNywgMjMsIDIsIDIzMCwgMjI0LCAxMDMsIDMzLCA2LCAxLCAyMTUsIDc4LCAzMywgNCwgMSwgCisgICAgMjE1LCA3OCwgMzMsIDYsIDEsIDIxNSwgMTYwLCAzMywgNCwgMSwgMjE1LCAxNjAsIDMzLCA2LCAxLCAyMTUsIDE2NCwgMzMsIAorICAgIDQsIDEsIDIxNSwgMTY0LCAzMywgNiwgMSwgMjE3LCAyOCwgMzMsIDQsIDEsIDIxNywgMjgsIDMzLCA2LCAxLCAyNDAsIDE5OCwgCisgICAgMzMsIDQsIDEsIDI0MCwgMTk4LCAzMywgNiwgMSwgMjE5LCAyMDYsIDMzLCA0LCAxLCAyMTksIDIwNiwgMzgsIDMzLCAxLCAKKyAgICAyMzUsIDE4MywgNzUsIDIwLCAxLCA2MSwgMjAsIDEsIDE3NiwgMjAsIDEsIDcwLCAyMCwgMSwgMjMzLCAyMTcsIDIwLCAxLCAKKyAgICAyNDUsIDIwOSwgMjAsIDEsIDIyMywgMTA4LCAyMCwgMSwgMjE3LCA4NiwgMjAsIDEsIDc2LCAyMCwgMSwgMjI3LCAxNDgsIAorICAgIDIwLCAxLCA3MywgMjAsIDEsIDIzMywgMTM1LCAyMCwgMSwgMTkwLCAyMCwgMSwgMjIyLCAyMzksIDIwLCAxLCAyMjMsIDI5LCAKKyAgICAyMCwgMSwgMjMzLCA0OSwgMjAsIDEsIDIzMSwgNzksIDIwLCAxLCAyMTcsIDEwMSwgMjAsIDEsIDIyOSwgMTQ2LCAyMCwgMSwgCisgICAgMjI4LCAxODMsIDIwLCAxLCAxOTMsIDIwLCAxLCAyMTgsIDQsIDIwLCAxLCAyMzAsIDEwMiwgMjAsIDEsIDIyMCwgMjcsIDIwLCAKKyAgICAxLCAyMTksIDE5MSwgMjAsIDEsIDIyMCwgMzcsIDIwLCAxLCAyMjAsIDEyMywgMjAsIDEsIDIzMywgMTU1LCAyMCwgMSwgCisgICAgMjM0LCAxNTYsIDIwLCAxLCAyMjcsIDIwOSwgMjAsIDEsIDIyNywgMjM3LCAyMCwgMSwgMjI4LCAxNTQsIDIwLCAxLCAyMTAsIAorICAgIDIyNiwgMjAsIDEsIDIxOSwgMjI1LCAyMCwgMSwgMjEwLCAxODcsIDIwLCAxLCAxOTEsIDIwLCAxLCAyMjgsIDksIDIwLCAxLCAKKyAgICAyMzQsIDE0MiwgMjAsIDEsIDIyNSwgMTUxLCAyMCwgMSwgMjI4LCAxNzYsIDIwLCAxLCAyMjcsIDI0NiwgMjAsIDEsIDIyNCwgCisgICAgMTQ0LCAyMCwgMSwgMjExLCAxOTIsIDIwLCAxLCAyMjUsIDIxMSwgMjAsIDEsIDI0NCwgMTQ3LCAyMCwgMSwgMjIyLCAxNDAsIAorICAgIDIwLCAxLCAyMzIsIDk4LCAyMCwgMSwgMjMwLCAyMzAsIDIwLCAxLCAyMjgsIDIzMywgMjAsIDEsIDIyMywgNTEsIDIwLCAxLCAKKyAgICAyMjMsIDE3MSwgMjAsIDEsIDIzNCwgMTY1LCAyMCwgMSwgMjI5LCA3LCAyMCwgMSwgMjI5LCA1NiwgMjAsIDEsIDIyOSwgNzcsIAorICAgIDIwLCAxLCAyMjAsIDcsIDIwLCAxLCAyMjQsIDE0NywgMjAsIDEsIDI0MywgMjM0LCAyMCwgMSwgMjQ0LCAzNywgMjAsIDEsIAorICAgIDIxMiwgNjUsIDIwLCAxLCAxOTcsIDIwLCAxLCAyMzIsIDI0MSwgMjAsIDEsIDIyNSwgMTA4LCAyMCwgMSwgMjMyLCAxMTksIAorICAgIDIwLCAxLCAyMzQsIDI4LCAyMCwgMSwgMjMxLCAxMTQsIDIwLCAxLCAyMjMsIDgzLCAyMCwgMSwgMjMxLCA1OCwgMjAsIDEsIAorICAgIDE4NCwgMjAsIDEsIDIxNiwgMTE3LCAyMCwgMSwgMjM0LCA5MiwgMjAsIDEsIDIzMCwgMTYxLCAyMCwgMSwgMjMxLCAxMjIsIAorICAgIDIwLCAxLCAyMTYsIDIzMCwgMjAsIDEsIDIzMywgMjUxLCAyMCwgMSwgMjE2LCAyNDcsIDIwLCAxLCAyMjcsIDIzOCwgMjAsIAorICAgIDEsIDIyMSwgMjUxLCAyMCwgMSwgMjQ0LCAxOTIsIDIwLCAxLCAyMzMsIDI1MywgMjAsIDEsIDIzNCwgMjQsIDIwLCAzOCwgCisgICAgMTY0LCAyMzQsIDUsIDIwLCAzOCwgMTY0LCAyMTUsIDExMCwgMjAsIDIyOCwgMTgyLCAyMCwgMjQzLCAyMjksIDIxOCwgMTI5LCAKKyAgICAyMCwgMjQ5LCAyMjYsIDIwLCAyNDksIDIxOSwgMjAsIDIyMCwgMTUwLCAyMCwgMjI0LCAxMywgNzgsIDU4LCAxLCAyNTAsIAorICAgIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjUsIDYxLCA1OCwgMSwgMjUwLCA5NiwgMTM4LCAyMTEsIDcwLCAyMjUsIDYxLCA1OCwgMSwgCisgICAgMjUwLCA5NiwgMTM4LCAyMTAsIDI1NCwgMjIwLCA4NCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjExLCA3MCwgMjIwLCA4NCwgCisgICAgNTgsIDEsIDI1MCwgOTYsIDEzOCwgMjEwLCAyNTQsIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMSwgNzAsIAorICAgIDIyNCwgMzAsIDU4LCAxLCAyNTAsIDk2LCAxMzgsIDIxMCwgMjU0LCAyMjIsIDE0MCwgNTgsIDEsIDI1MCwgOTYsIDEzOCwgCisgICAgMjExLCA3MCwgMjIyLCAxNDAsIDU4LCAxLCAyNDUsIDIwLCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDI0NiwgCisgICAgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDIzMCwgMjI1LCAyNDYsIDExOCwgMTM4LCAxMzAsIDU4LCAxLCAxMjEsIDI0NiwgMTE4LCAKKyAgICAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NiwgMTE4LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMjAsIDI0NiwgMTE4LCAKKyAgICAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyNSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAKKyAgICAyMjUsIDI0NiwgMTE4LCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDEyMSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgMjQ1LCAxOSwgMjQ2LCAxMTgsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjQ1LCAyMCwgMjMzLCAKKyAgICAzOSwgMTM4LCAxMzAsIDU4LCAxLCAxMjUsIDIzMywgMzksIDEzOCwgMTMwLCA1OCwgMSwgMjMwLCAyMjUsIDIzMywgMzksIAorICAgIDEzOCwgMTMwLCA1OCwgMSwgMTIxLCAyMzMsIDM5LCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDIzMywgMzksIDEzOCwgCisgICAgMTMwLCA1OCwgMSwgNTksIDY3LCAxMzAsIDU4LCAxLCA1OSwgMjE5LCA5NSwgNTgsIDEsIDU5LCAyMDMsIDEzMCwgNTgsIDEsIAorICAgIDIzMiwgMTA4LCA0NCwgMjQ5LCAxNjEsIDI1NCwgMTA5LCA1OCwgMSwgMjIzLCAxNTcsIDEyMCwgNzQsIDU4LCAxLCAyMjMsIAorICAgIDE1NywgMTI0LCA3NCwgNTgsIDEsIDIyMywgMTU3LCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIyMywgMTU3LCAyMzUsIDE5MywgCisgICAgMjQ1LCAzMSwgNzgsIDU4LCAxLCAxMjEsIDIzNSwgMTkzLCAyNDUsIDMxLCA3OCwgNTgsIDEsIDIxOCwgMTExLCAyMiwgMTI1LCAKKyAgICAyMTYsIDMwLCA1OCwgMSwgMjE4LCAxMTEsIDIyLCAxMjEsIDIxNiwgMzAsIDcsIDYsIDEsIDI0NSwgMTk5LCAyNTQsIDE3MCwgCisgICAgNywgNCwgMSwgMjQ1LCAxOTksIDI1NCwgMTcwLCA3LCA2LCAxLCAyNDUsIDE5OSwgMjU0LCAxOTYsIDcsIDQsIDEsIDI0NSwgCisgICAgMTk5LCAyNTQsIDE5NiwgNywgNiwgMSwgMjQxLCAyMDcsIDcsIDQsIDEsIDI0MSwgMjA3LCA3LCA2LCAxLCAyMTUsIDQwLCA3LCAKKyAgICA0LCAxLCAyMTUsIDQwLCA3LCA2LCAxLCAyMTUsIDIyOSwgNywgNCwgMSwgMjE1LCAyMjksIDcsIDYsIDEsIDI0OSwgMTEwLCAKKyAgICA3LCA0LCAxLCAyNDksIDExMCwgNywgNiwgMSwgMjQ5LCAxMTEsIDIsIDI0OSwgMjE5LCA3LCA0LCAxLCAyNDksIDExMSwgMiwgCisgICAgMjQ5LCAyMTksIDcsIDEsIDQsIDYsIDI0NSwgNiwgNywgMSwgNCwgNiwgMjIyLCA5MSwgNywgNiwgMSwgMjU1LCA3MywgNywgCisgICAgNCwgMSwgMjU1LCA3MywgNywgNiwgMSwgMjU0LCA3MywgNywgNCwgMSwgMjU0LCA3MywgNywgNiwgMSwgMjUzLCAxOTIsIDcsIAorICAgIDQsIDEsIDI1MywgMTkyLCA3LCA2LCAxLCAyNTMsIDE3NiwgNywgNCwgMSwgMjUzLCAxNzYsIDcsIDYsIDEsIDI1MywgMTc3LCAKKyAgICAyLCAyMDMsIDEzMCwgNywgNCwgMSwgMjUzLCAxNzcsIDIsIDIwMywgMTMwLCA3LCA2LCAxLCAyNTMsIDE2NywgNywgNCwgMSwgCisgICAgMjUzLCAxNjcsIDcsIDYsIDEsIDIyMywgNDksIDI1MSwgNjcsIDIsIDI0NywgMTIwLCA3LCA0LCAxLCAyMjMsIDQ5LCAyNTEsIAorICAgIDY3LCAyLCAyNDcsIDEyMCwgNywgNiwgMSwgMjM1LCAyNCwgMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDkxLCA3LCA2LCAKKyAgICAxLCAyMzUsIDI0LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDI0NywgMjU1LCA5MSwgNywgNiwgMSwgCisgICAgMjM1LCAyNCwgMiwgMjE4LCAxMDMsIDIyLCAyNDcsIDI1NSwgOTEsIDcsIDQsIDEsIDIzNSwgMjQsIDIsIDIxOCwgMTAzLCAKKyAgICAyMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA0LCAxLCAyNTEsIDEzNSwgMTU2LCA3LCA2LCAKKyAgICAxLCAyMzMsIDE0OSwgMiwgMTI1LCA5MSwgNywgNCwgMSwgMjMzLCAxNDksIDIsIDEyNSwgOTEsIDcsIDYsIDEsIDE0NCwgMiwgCisgICAgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDQsIDEsIDE0NCwgMiwgMTk5LCAyMTgsIDEwMywgMjI2LCAxMjAsIDcsIDYsIAorICAgIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDQsIDEsIDE0NCwgMiwgMjMyLCAxMjMsIDcsIDYsIDEsIDIyNiwgMTgzLCA3LCA0LCAKKyAgICAxLCAyMjYsIDE4MywgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNCwgMSwgCisgICAgMjI2LCAxMDYsIDIsIDIxOCwgMTAzLCAyMTYsIDEzOSwgMjQ4LCAzOSwgNywgNiwgMSwgMjI2LCAxMDYsIDIsIDI0NCwgNTMsIAorICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyNDQsIDUzLCA3LCA2LCAxLCAyMjYsIDEwNiwgMiwgMjE4LCAyMjksIDIxNywgNzcsIAorICAgIDcsIDQsIDEsIDIyNiwgMTA2LCAyLCAyMTgsIDIyOSwgMjE3LCA3NywgNywgNiwgMSwgMjI0LCA5NywgMiwgMjE4LCAxMDMsIAorICAgIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMjQsIDk3LCAyLCAyMTgsIDEwMywgMjE2LCAxMzksIDI0OCwgMzksIDcsIAorICAgIDYsIDEsIDIyNCwgOTcsIDIsIDI0NywgMjU1LCA5MSwgNywgNCwgMSwgMjI0LCA5NywgMiwgMjQ3LCAyNTUsIDkxLCA3LCA2LCAKKyAgICAxLCAyMjMsIDIyNCwgMjIyLCAxODYsIDcsIDQsIDEsIDIyMywgMjI0LCAyMjIsIDE4NiwgNywgNiwgMSwgMjIyLCAxMzAsIAorICAgIDIyMiwgMTg2LCA3LCA0LCAxLCAyMjIsIDEzMCwgMjIyLCAxODYsIDcsIDYsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgCisgICAgOTEsIDcsIDQsIDEsIDIxNCwgMTA2LCAyLCAyNDcsIDI1NSwgOTEsIDcsIDYsIDEsIDIxMiwgMTA2LCA3LCA0LCAxLCAyMTIsIAorICAgIDEwNiwgNywgNiwgMSwgMjEzLCAxNDUsIDIxMCwgMTU5LCA3LCA0LCAxLCAyMTMsIDE0NSwgMjEwLCAxNTksIDcsIDYsIDEsIAorICAgIDIxNiwgMTUyLCAyLCA5MSwgNywgNCwgMSwgMjE2LCAxNTIsIDIsIDkxLCA3LCA2LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAKKyAgICAxMDMsIDIxNiwgMTM5LCAyNDgsIDM5LCA3LCA0LCAxLCAyMTYsIDE1MiwgMiwgMjE4LCAxMDMsIDIxNiwgMTM5LCAyNDgsIAorICAgIDM5LCA3LCA2LCAxLCAyMTMsIDI0NSwgNywgNCwgMSwgMjEzLCAyNDUsIDcsIDYsIDEsIDI0NSwgNjUsIDcsIDQsIDEsIDI0NSwgCisgICAgNjUsIDcsIDYsIDEsIDIzNSwgMTcxLCA3LCA0LCAxLCAyMzUsIDE3MSwgNywgNiwgMSwgMjQ5LCAyMDcsIDcsIDQsIDEsIAorICAgIDI0OSwgMjA3LCA1OCwgMSwgMjE0LCAxMzMsIDcsIDQsIDEsIDI0NiwgNjksIDcsIDQsIDEsIDIzMiwgODQsIDcsIDQsIDEsIAorICAgIDIzMCwgODAsIDcsIDQsIDEsIDIyNywgMjAxLCA3LCA0LCAxLCAyMjIsIDEyOSwgNywgMSwgNCwgNiwgMjIyLCAxMjksIDcsIAorICAgIDQsIDEsIDIxNSwgMTA4LCA3LCA0LCAxLCAyMTQsIDE5NywgNywgNiwgMSwgMjM1LCAyMTMsIDI0OSwgNjAsIDcsIDQsIDEsIAorICAgIDIzNSwgMjEzLCAyNDksIDYwLCA3LCA2LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCA3LCA0LCAxLCAyMzUsIDIxMywgMjQ1LCA2LCAKKyAgICA3LCA2LCAxLCAyMzUsIDIxMywgMjQzLCAyMDIsIDcsIDYsIDEsIDIxNSwgOTQsIDIzNSwgMjEzLCAyNDMsIDIwMiwgNywgNCwgCisgICAgMSwgMjE1LCA5NCwgMjM1LCAyMTMsIDI0MywgMjAyLCA3LCA2LCAxLCAyMTUsIDk0LCAxNTYsIDcsIDQsIDEsIDIxNSwgOTQsIAorICAgIDE1NiwgNywgNiwgMSwgMjM1LCAyMTMsIDE1MywgNywgNCwgMSwgMjM1LCAyMTMsIDE1MywgNywgNiwgMSwgMjM1LCAyMTMsIAorICAgIDIyMiwgOTEsIDcsIDQsIDEsIDIzNSwgMjEzLCAyMjIsIDkxLCA3LCA2LCAxLCAyMzUsIDIxMywgMjE3LCAxNTIsIDcsIDQsIAorICAgIDEsIDIzNSwgMjEzLCAyMTcsIDE1MiwgNTgsIDEsIDEyMSwgMjUwLCAzMSwgMjU1LCAxNCwgNTgsIDEsIDI0OSwgMjI2LCA1OCwgCisgICAgMSwgMjE5LCAyNTEsIDI0NSwgOTgsIDUwLCA3LCA2LCAxLCAyMjEsIDI1NSwgNywgNCwgMSwgMjIxLCAyNTUsIDcsIDYsIDEsIAorICAgIDIxNSwgOTQsIDI0MiwgNjAsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAyMjMsIDU1LCAyNDEsIDUyLCAyMiwgMjUyLCA0MSwgNywgCisgICAgNiwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNCwgMSwgMjMwLCAyNiwgMiwgMjQ4LCAzOSwgNywgNiwgMSwgMjUxLCAKKyAgICA2NywgMiwgMTMwLCA3LCA0LCAxLCAyNTEsIDY3LCAyLCAxMzAsIDcsIDYsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIAorICAgIDcsIDQsIDEsIDI0MywgMjAzLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDIzNSwgMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgCisgICAgNCwgMSwgMjM1LCAyNCwgMiwgMjI2LCAyNDgsIDkxLCA3LCA2LCAxLCAyMzAsIDI2LCAyLCAyMjYsIDI0OCwgOTEsIDcsIDQsIAorICAgIDEsIDIzMCwgMjYsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNCwgMSwgCisgICAgMjIzLCAyMjQsIDIsIDIyNiwgMjQ4LCA5MSwgNywgNiwgMSwgMjIyLCA5MiwgMiwgMjI2LCAyNDgsIDkxLCA3LCA0LCAxLCAKKyAgICAyMjIsIDkyLCAyLCAyMjYsIDI0OCwgOTEsIDcsIDYsIDEsIDI0MiwgNjEsIDIsIDEwMywgNTgsIDEsIDYsIDI0MiwgNjEsIDIsIAorICAgIDkxLCA1OCwgMSwgNCwgMjcsIDIyNiwgMjM0LCA3LCAxLCA0LCA2LCAyMTUsIDk0LCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAKKyAgICAyMjMsIDQ5LCAyNDUsIDYsIDcsIDI0NSwgMTAzLCAxLCAyMjMsIDQ5LCAyMjYsIDEwNSwgNywgMjQ1LCAxMDMsIDEsIDIzNSwgCisgICAgMTkzLCAxOTMsIDcsIDI0NSwgMTAzLCAxLCAyNDAsIDE1NCwgMjMyLCAxMjksIDcsIDI0NSwgMTAzLCAxLCAyNTQsIDIzLCAKKyAgICAxOTMsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgNzMsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgNSwgMjQ2LCA0OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3MCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NSwgCisgICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCA3NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCA1LCAyNDEsIDI1MywgMjE3LCAyMzAsIAorICAgIDIyOSwgMjE0LCAxLCAyMzQsIDI4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDI0MiwgMTc0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0MiwgMjI0LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDUsIAorICAgIDI1NCwgNzUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjQ5LCAyMzgsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjUwLCA4NiwgCisgICAgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMzUsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIzNSwgMTA5LCAyMTcsIAorICAgIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTMzLCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIxNSwgMTM5LCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDI0OCwgMTA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI0OCwgMTE0LCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDEsIDExMSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyMTYsIDE1NiwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDcsIAorICAgIDE0NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDgsIDcsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjI4LCA3NCwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAxLCAyMjUsIDE2LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDIyNSwgMTIxLCAyMTcsIDIzMCwgCisgICAgMjI5LCAyMTQsIDEsIDI1MSwgMjA1LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDEsIDI1MiwgMTAsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMSwgMjMwLCAxNjEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAyMTEsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgCisgICAgMjMyLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjIyLCAxNjUsIDIxNywgMjMwLCAyMjksIDIxNCwgMSwgMjE5LCAKKyAgICA1OCwgMjE3LCAyMzAsIDIyOSwgMjE0LCAxLCAyNDEsIDY4LCAyMTcsIDIzMCwgMjI5LCAyMTQsIDI1LCA1LCA2MSwgMjE3LCAKKyAgICAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgNzMsIDIxNywgMjMwLCAyMjksIDIxNCwgMjUsIDUsIDcwLCAyMTcsIDIzMCwgMjI5LCAKKyAgICAyMTQsIDI1LCA1LCA3NSwgMjE3LCAyMzAsIDIyOSwgMjE0LCAyNSwgNSwgMjI2LCAxODMsIDIxNywgMjMwLCAyMjksIDIxNCwgCisgICAgMjI1LCAxMiwgMjMxLCAxNTgsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTcsIDIxNywgMjMwLCAyMjksIAorICAgIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTYsIDIxNywgMjMwLCAyMjksIDIxNCwgMjI1LCAxMiwgMjMxLCAxNTUsIDIyOCwgNTYsIAorICAgIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjI0LCAyMSwgMjI4LCA1NiwgMjM1LCAyNDAsIDI0NCwgMiwgMTIzLCAyNDIsIDI3LCAKKyAgICAyMjgsIDU2LCAyMzUsIDI0MCwgMjQ0LCAyLCAxMzQsIDIyNCwgMTksIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgCisgICAgMjE5LCAxMTcsIDIyOCwgNTYsIDIzNSwgMjQwLCAyNDQsIDIsIDEyMywgMjQ1LCAxODgsIDIyOCwgNTYsIDIzNSwgMjQwLCAKKyAgICAyNDQsIDIsIDEzNCwgMjE5LCAxMTYsIDIyOCwgNTYsIDIzNSwgMjQwLCAyMjQsIDIyLCA3OCwgMjI4LCA1NiwgMjM1LCAyNDAsIAorICAgIDIyNSwgNDAsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjIyLCAxMTgsIDc4LCAyMjgsIDU2LCAyMzUsIDI0MCwgMjI0LCAyMywgCisgICAgNzgsIDIyNSwgMTQ0LCAxLCAxNzYsIDIyNSwgMTQ0LCAxLCAyMzQsIDEzMiwgMjI1LCAxNDQsIDEsIDI0MywgMTM1LCAyMjUsIAorICAgIDE0NCwgMSwgMjI5LCA3NywgMjI1LCAxNDQsIDEsIDI1MSwgMzMsIDIyNSwgMTQ0LCAxLCAyNTAsIDE1NywgMjI1LCAxNDQsIAorICAgIDEsIDIzNSwgMTQxLCAyMjUsIDE0NCwgMSwgMjI3LCAxNjUsIDIyNSwgMTQ0LCAxLCAyMTcsIDEwNSwgMjI1LCAxNDQsIDEsIAorICAgIDIxNiwgMjA4LCAyMjUsIDE0NCwgMSwgMjQ4LCAyMjEsIDIyNSwgMTQ0LCAxLCAxOTcsIDIyNSwgMTQ0LCAxLCAxOTAsIDIyNSwgCisgICAgMTQ0LCAxLCAyMjUsIDE0NywgMjI1LCAxNDQsIDEsIDI1MiwgMTkxLCAyMjUsIDE0NCwgMSwgMTg0LCAyMjUsIDE0NCwgMSwgCisgICAgMjE1LCAxODMsIDIyNSwgMTQ0LCAxLCAyMTUsIDE3NSwgMjI1LCAxNDQsIDEsIDI0NiwgMzgsIDIyNSwgMTQ0LCAxLCAyMTIsIAorICAgIDY1LCAyMjUsIDE0NCwgMSwgMjEwLCA4MiwgMjI1LCAxNDQsIDEsIDIxMCwgMTE2LCAyMjUsIDE0NCwgMSwgNCwgNjEsIDIyNSwgCisgICAgMTQ0LCAxLCAxOTEsIDIyNSwgMTQ0LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAyMzMsIDEzNSwgMjI1LCAxNDQsIDEsIDIyMCwgCisgICAgMTAyLCAyMjUsIDE0NCwgMSwgMjA2LCAyMjUsIDE0NCwgMSwgMTYyLCAyMjUsIDE0NCwgMSwgNjEsIDIyNSwgMTQ0LCAxLCAKKyAgICA3MywgMjI1LCAxNDQsIDEsIDcwLCAyMjUsIDE0NCwgMSwgNzUsIDIyNSwgMTQ0LCAxLCA3NiwgMjI1LCAxNDQsIDEsIDIyNCwgCisgICAgODgsIDIyNSwgMTQ0LCAxLCAyMTEsIDE2NSwgMjI1LCAxNDQsIDEsIDI0NCwgMTk2LCAyMjUsIDE0NCwgMSwgMjQzLCAyOSwgCisgICAgMjI1LCAxNDQsIDEsIDI0NSwgMjA5LCAyMjUsIDE0NCwgMjE4LCA3MywgMSwgMjEyLCA2NSwgMjI1LCAxNDQsIDIxOCwgNzMsIAorICAgIDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxNSwgMTU2LCAyMjUsIDE0NCwgMSwgMjE1LCAxNDQsIDIyNSwgMTQ0LCAxLCAyNDgsIAorICAgIDEzNSwgMjI1LCAxNDQsIDEsIDIyOCwgMTEwLCAyMjUsIDE0NCwgMSwgMjU0LCAxNDEsIDE5MSwgMjI1LCAxNDQsIDEsIDIxMywgCisgICAgMTM0LCAyMjAsIDEwMiwgMjI1LCAxNDQsIDEsIDIxMywgMTM1LCAxNjIsIDIyNSwgMTQ0LCAxLCAyNTMsIDIyMywgMjQ0LCAKKyAgICAxOTYsIDIyNSwgMTQ0LCAyMTgsIDczLCAxLCAyMDUsIDIyNSwgMTQ0LCAyMTgsIDI1LCAxLCAyMDUsIDIyNSwgMTQ0LCAxLCAKKyAgICAyNTAsIDI1NSwgMjI1LCAxNDQsIDIxOSwgMTU1LCAyNDEsIDIzNiwgNzgsIDIyNSwgMTQ0LCA1MiwgMjQxLCAyMzYsIDc4LCAKKyAgICAyMjUsIDE0NCwgMTY0LCAyMjAsIDk1LCAyMjUsIDE0NCwgMTY0LCA1MiwgMjIwLCA5NSwgMTc5LCA1LCAyNTQsIDc1LCAxNzksIAorICAgIDUsIDIxMywgMTQ3LCAxNzksIDEsIDYxLCAxNzksIDEsIDI1NSwgNzMsIDE3OSwgMSwgNzMsIDE3OSwgMSwgMjM2LCAzMywgCisgICAgMTc5LCAxLCA3MCwgMTc5LCAxLCAyMTQsIDExOCwgMTc5LCAxLCAxNDksIDE1MywgMTc5LCAxLCAxNDksIDIyMiwgMTgwLCAKKyAgICAxNzksIDEsIDE0OSwgMTU2LCAxNzksIDEsIDE0OSwgMjMyLCAxODUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjQ1LCAyMDksIAorICAgIDE3OSwgMSwgMjU0LCAyMDEsIDE3OSwgMSwgNzYsIDE3OSwgMSwgMjI2LCAxODMsIDE3OSwgMSwgMjUzLCAxOTIsIDE3OSwgMSwgCisgICAgMTc2LCAxNzksIDEsIDIzNCwgMTMyLCAxNzksIDEsIDI0MywgMTM1LCAxNzksIDEsIDI0MiwgMjQ5LCAxNzksIDEsIDIyOSwgCisgICAgNzcsIDE3OSwgMSwgMjUxLCAzMywgMTc5LCAxLCAyNTAsIDE1NywgMTc5LCAxLCAyMzUsIDE0MSwgMTc5LCAxLCAyMzUsIAorICAgIDExNCwgMTc5LCAxLCAyMjcsIDE2NSwgMTc5LCAxLCAyMTUsIDE1NiwgMTc5LCAxLCAyMTUsIDE0NCwgMTc5LCAxLCAyNDgsIAorICAgIDEzNSwgMTc5LCAxLCAyNDgsIDExOSwgMTc5LCAxLCAyMjgsIDExMCwgMTc5LCAxLCAyMTcsIDEwNSwgMTc5LCAxLCAyMTYsIAorICAgIDIwOCwgMTc5LCAxLCAyNDgsIDIyMSwgMTc5LCAxLCAyNDgsIDI1LCAxNzksIDEsIDE5NywgMTc5LCAxLCAxOTAsIDE3OSwgMSwgCisgICAgMjI1LCAxNDcsIDE3OSwgMSwgMjUyLCAxOTEsIDE3OSwgMSwgMjUyLCAxOCwgMTc5LCAxLCAxODQsIDE3OSwgMSwgMTkxLCAKKyAgICAxNzksIDEsIDIwNSwgMTc5LCAxLCAyMzMsIDEzNSwgMTc5LCAxLCAyMTQsIDI3LCAxNzksIDEsIDIyMCwgMTAyLCAxNzksIDEsIAorICAgIDIxOCwgMjIzLCAxNzksIDEsIDIwNiwgMTc5LCAxLCAxNjIsIDE3OSwgMSwgMjMyLCAxODQsIDE3OSwgMTE2LCA1LCAyNDIsIAorICAgIDQ0LCAxNzksIDI1LCA1LCAyNTUsIDczLCAxNzksIDI1LCA1LCA3MywgMTc5LCAyNSwgNSwgMjM2LCAzMywgMTc5LCAyNSwgNSwgCisgICAgNzAsIDE3OSwgMjUsIDUsIDIxNCwgMTE4LCAxNzksIDI1LCA1LCAxNDksIDE1MywgMTc5LCAyNSwgNSwgMTQ5LCAyMjIsIAorICAgIDE4MCwgMTc5LCAyNSwgNSwgMTQ5LCAxNTYsIDE3OSwgMjUsIDUsIDE0OSwgMjMyLCAxODUsIDE3OSwgMjUsIDUsIDc1LCAKKyAgICAxNzksIDI1LCA1LCAyNDUsIDIwOSwgMTc5LCAyNSwgNSwgMjU0LCAyMDEsIDE3OSwgMjUsIDUsIDc2LCAxNzksIDI1LCA1LCAKKyAgICAyMjYsIDE4MywgMTc5LCAyNSwgNSwgMjUzLCAxOTIsIDE3OSwgNSwgMjEzLCAxNTIsIDE3OSwgMjQ4LCAxNzgsIDE3OSwgNTIsIAorICAgIDI0OCwgMTc4LCAxNzksIDIxLCAyMTAsIDg2LCAxNzksIDIxLCAxMTAsIDE3OSwgMjEsIDEwNSwgMTc5LCAyMSwgMTU4LCAKKyAgICAxNzksIDIxLCAxNjEsIDE3OSwgMjEsIDE4OSwgMTc5LCAyMSwgMTk0LCAxNzksIDIxLCAxOTgsIDE3OSwgMjEsIDE5NSwgCisgICAgMTc5LCAyMSwgMjAwLCAzOCwgODQsIDIxLCAyMTAsIDg2LCAzOCwgODQsIDIxLCAxMTAsIDM4LCA4NCwgMjEsIDEwNSwgMzgsIAorICAgIDg0LCAyMSwgMTU4LCAzOCwgODQsIDIxLCAxNjEsIDM4LCA4NCwgMjEsIDE4OSwgMzgsIDg0LCAyMSwgMTk0LCAzOCwgODQsIAorICAgIDIxLCAxOTgsIDM4LCA4NCwgMjEsIDE5NSwgMzgsIDg0LCAyMSwgMjAwLCAzOCwgODQsIDEsIDYxLCAzOCwgODQsIDEsIDcwLCAKKyAgICAzOCwgODQsIDEsIDE3NiwgMzgsIDg0LCAxLCAxOTcsIDM4LCA4NCwgMSwgMTkwLCAzOCwgODQsIDEsIDIwNSwgMzgsIDg0LCAKKyAgICAxLCAyMTMsIDE3NiwgMzgsIDg0LCA1LCAyNTMsIDE3NSwgODQsIDUsIDIxOSwgMTcsIDI1MCwgMjU1LCA4NCwgNSwgMjUxLCAKKyAgICAwLCAyMTMsIDE1MiwgODQsIDUsIDUyLCAyNTEsIDAsIDIxMywgMTUyLCA4NCwgNSwgMjUxLCAwLCAxMDUsIDg0LCA1LCAyNTEsIAorICAgIDAsIDE1OCwgODQsIDUsIDI1MSwgMCwgMjUzLCAxNzUsIDg0LCA1LCAyMjQsIDEyNCwgODQsIDI0MywgMTAwLCAyNDQsIDEwMywgCisgICAgODQsIDI1MCwgMjM4LCA4NCwgMjQxLCAyMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDIxMCwgODYsIDIzNCwgMTg4LCAKKyAgICAyMzIsIDI0MiwgMjEsIDExMCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTA1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAKKyAgICAxNTgsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE2MSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgMTg5LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDIxLCAxOTQsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjEsIDE5OCwgMjM0LCAxODgsIDIzMiwgMjQyLCAyMSwgCisgICAgMTk1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDIxLCAyMDAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTc2LCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDIzNCwgMTMyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0MywgMTM1LCAyMzQsIDE4OCwgMjMyLCAKKyAgICAyNDIsIDEsIDIyOSwgNzcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjA2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyMCwgCisgICAgMTAyLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxMCwgMTE2LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNywgMTY1LCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIxNywgMTA1LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0MCwgMjI2LCAyMzQsIAorICAgIDE4OCwgMjMyLCAyNDIsIDEsIDE5NywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxOTAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgMjI1LCAxNDcsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMTg0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI0OCwgMjIxLCAKKyAgICAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDI1MiwgMTkxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIwNSwgMjM0LCAxODgsIAorICAgIDIzMiwgMjQyLCAxLCAxOTEsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjMzLCAxMzUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgCisgICAgMjEyLCA2NSwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyMTYsIDIwOCwgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAxNjIsIAorICAgIDIzNCwgMTg4LCAyMzIsIDI0MiwgMSwgMjE0LCAyNywgMjM0LCAxODgsIDIzMiwgMjQyLCAxLCAyNTEsIDMzLCAyMzQsIDE4OCwgCisgICAgMjMyLCAyNDIsIDEsIDYxLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNiwgMjM0LCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIAorICAgIDczLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEsIDIyNiwgMTgzLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDI1LCAyMTQsIDIxNCwgCisgICAgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzUsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMjUsIDcwLCAyMzQsIDE4OCwgMjMyLCAKKyAgICAyNDIsIDI1LCAyNDUsIDIwOSwgMjM0LCAxODgsIDIzMiwgMjQyLCAyNSwgNzYsIDIzNCwgMTg4LCAyMzIsIDI0MiwgMTM4LCAKKyAgICAyMjUsIDMwLCAyMzQsIDE4OCwgMjMyLCAyNDIsIDEzOCwgMjUxLCAxMiwgMjM0LCAxODgsIDIzMiwgMjQyLCAxMzgsIDI1MSwgCisgICAgMTMsIDIyNSwgMzAsIDIzNCwgMTg4LCAyMzIsIDI0MiwgNSwgMjQ5LCA3NywgMjM0LCAxODgsIDIzMiwgMjQyLCA1LCAyMTksIAorICAgIDE5OSwgMjIzLCA5MywgMSwgMTc2LCAyMjMsIDkzLCAxLCAyNDMsIDEzNSwgMjIzLCA5MywgMSwgMjI5LCA3NywgMjIzLCA5MywgCisgICAgMSwgMjE3LCAxMDUsIDIyMywgOTMsIDEsIDI0OCwgMjIxLCAyMjMsIDkzLCAxLCAxOTcsIDIyMywgOTMsIDEsIDE5MCwgMjIzLCAKKyAgICA5MywgMSwgMjUyLCAxOTEsIDIyMywgOTMsIDEsIDE4NCwgMjIzLCA5MywgMSwgMjUxLCAzMywgMjIzLCA5MywgMSwgMjM1LCAKKyAgICAxNDEsIDIyMywgOTMsIDEsIDIyNywgMTY1LCAyMjMsIDkzLCAxLCAyMDYsIDIyMywgOTMsIDEsIDIwNSwgMjIzLCA5MywgMSwgCisgICAgMjMzLCAxMzUsIDIyMywgOTMsIDEsIDE5MSwgMjIzLCA5MywgMSwgMjEyLCA2NSwgMjIzLCA5MywgMSwgMTYyLCAyMjMsIDkzLCAKKyAgICAxLCAyMzEsIDEyNCwgMjIzLCA5MywgMSwgMjI5LCA1NiwgMjIzLCA5MywgMSwgMjI5LCAxNDgsIDIyMywgOTMsIDEsIDIyNywgCisgICAgMTM1LCAyMjMsIDkzLCAxLCA2MSwgMjIzLCA5MywgMjUsIDUsIDczLCAyMjMsIDkzLCAyNSwgNSwgNzAsIDIyMywgOTMsIDI1LCAKKyAgICA1LCA3NSwgMjIzLCA5MywgMjUsIDUsIDI1NCwgMjAxLCAyMjMsIDkzLCAyNSwgNSwgNzYsIDIyMywgOTMsIDI1LCA1LCAyNTMsIAorICAgIDE5MiwgMjIzLCA5MywgMjUsIDUsIDI0NSwgNTUsIDIyMywgOTMsIDI1LCA1LCAyNDUsIDIzMywgMjIzLCA5MywgMTE2LCA1LCAKKyAgICAyMjksIDc5LCAyMjMsIDkzLCAxMTYsIDUsIDIzMCwgMjUsIDIyMywgOTMsIDExNiwgNSwgMTUzLCAyMjMsIDkzLCAxMTYsIDUsIAorICAgIDI0MiwgNjAsIDIyMywgOTMsIDIxMywgMTUyLCAyMjMsIDkzLCAyMjEsIDE3MywgNzgsIDI0LCAxMDAsIDIxNiwgOTcsIDI0LCAKKyAgICAxMDAsIDIxNiwgOTYsIDI0LCAxMDAsIDIxNiwgOTQsIDI0LCAxMDAsIDIxNiwgOTksIDI0LCAxMDAsIDIyMywgMjEsIDI0LCAKKyAgICAxMDAsIDIyMywgNSwgMjQsIDEwMCwgMjIzLCAwLCAyNCwgMTAwLCAyMjMsIDIsIDI0LCAxMDAsIDIyMywgMTgsIDI0LCAxMDAsIAorICAgIDIyMywgMTEsIDI0LCAxMDAsIDIyMywgNCwgMjQsIDEwMCwgMjIzLCAyMywgMjQsIDEwMCwgMjIzLCA2LCAyNCwgMTAwLCAKKyAgICAyMjMsIDI1LCAyNCwgMTAwLCAyMjMsIDIyLCAyNCwgMTAwLCAyMzAsIDIxMywgMjQsIDEwMCwgMjMwLCAyMDQsIDI0LCAxMDAsIAorICAgIDIzMCwgMjA3LCAyNCwgMTAwLCAyMjUsIDgwLCAyNCwgMTAwLCAyMjUsIDkxLCAyNCwgMTAwLCAyMjUsIDkyLCAyNCwgMTAwLCAKKyAgICAyMTgsIDIwNywgMjQsIDEwMCwgMjM2LCA0NiwgMjQsIDEwMCwgMjM2LCA1MywgMjQsIDEwMCwgMjE4LCAyMTgsIDI0LCAxMDAsIAorICAgIDIxOCwgMjA1LCAyNCwgMTAwLCAyMjUsIDEzMCwgMjQsIDEwMCwgMjQxLCAxNjcsIDI0LCAxMDAsIDIxOCwgMjAyLCAxNTUsIAorICAgIDUsIDIyNiwgMjcsIDE1NSwgNSwgMjUwLCAxODcsIDE1NSwgNSwgMjMzLCA2NiwgMTU1LCA1LCAyMTEsIDI0MywgMTU1LCAxLCAKKyAgICA2MSwgMTU1LCAxLCAyNDAsIDE1NCwgMjM0LCAxOTEsIDE1NSwgMSwgNzMsIDE1NSwgMSwgMjM2LCAzMywgMTU1LCAxLCA3MCwgCisgICAgMTU1LCAxLCAyMjYsIDkwLCAyNTAsIDE2MywgMTU1LCAxLCAyMjksIDc4LCAyMzMsIDI4LCAxNTUsIDEsIDIyOSwgNzgsIAorICAgIDIzMywgMjksIDIyMywgMTQyLCAxNTUsIDEsIDc1LCAxNTUsIDEsIDI1NCwgMjAxLCAxNTUsIDEsIDc2LCAxNTUsIDEsIDE3NiwgCisgICAgMTU1LCAxLCAyMzUsIDEzLCAyMjEsIDIyOCwgMTU1LCAxLCAyMzUsIDEzLCAyMzAsIDY2LCAxNTUsIDEsIDI0MywgMTM1LCAKKyAgICAxNTUsIDEsIDI0MywgMTM2LCAyMzAsIDY2LCAxNTUsIDEsIDIyOSwgNzcsIDE1NSwgMSwgMjUxLCAzMywgMTU1LCAxLCAyNTEsIAorICAgIDM0LCAyMzAsIDY2LCAxNTUsIDEsIDIzNSwgMTQxLCAxNTUsIDEsIDIyNywgMTY2LCAyMzAsIDY2LCAxNTUsIDEsIDIzNSwgCisgICAgMTQyLCAyMzEsIDIwNywgMTU1LCAxLCAyMjcsIDE2NSwgMTU1LCAxLCAyMTUsIDE1NiwgMTU1LCAxLCAyMTUsIDE1NywgMjMxLCAKKyAgICAyMDcsIDE1NSwgMSwgMjQ4LCAxMzUsIDE1NSwgMSwgMjQ4LCAxMzYsIDIzMSwgMjA3LCAxNTUsIDEsIDIyOSwgMjI5LCAyMzAsIAorICAgIDY2LCAxNTUsIDEsIDIxNywgMTA1LCAxNTUsIDEsIDIxNywgMTA2LCAyMzAsIDY2LCAxNTUsIDEsIDI0OCwgMjIxLCAxNTUsIAorICAgIDEsIDI0OCwgMjIyLCAyMzEsIDIwNywgMTU1LCAxLCAxOTcsIDE1NSwgMSwgMTkwLCAxNTUsIDEsIDIyNiwgOTAsIDIzMCwgCisgICAgNjYsIDE1NSwgMSwgMjUyLCAxOTEsIDE1NSwgMSwgMjUyLCAxOTIsIDIzMCwgNjYsIDE1NSwgMSwgMTg0LCAxNTUsIDEsIAorICAgIDE5MSwgMTU1LCAxLCAyMDUsIDE1NSwgMSwgMjIzLCAxODgsIDI1NCwgMjEwLCAxNTUsIDEsIDIzMywgMTM1LCAxNTUsIDEsIAorICAgIDIxMiwgNjUsIDE1NSwgMSwgMjIyLCAzNCwgMjMwLCA2NiwgMTU1LCAxLCAyMjIsIDM0LCAyMzEsIDIwNywgMTU1LCAxLCAKKyAgICAyMDYsIDE1NSwgMSwgMTYyLCAxNTUsIDUsIDI1MCwgMTg4LCAyMTYsIDI1MCwgMTU1LCAyNSwgNSwgMjE3LCA0NywgMTU1LCAKKyAgICAyNSwgNSwgMjE2LCAzNSwgMTU1LCAyNSwgNSwgMjExLCAxOTAsIDE1NSwgMjUsIDUsIDIxMSwgMTkxLCAyMzEsIDY5LCAxNTUsIAorICAgIDI1LCA1LCAyMTgsIDQ3LCAxNTUsIDI1LCA1LCAyMTgsIDQ4LCAyMzEsIDU3LCAxNTUsIDI1LCA1LCAyMTcsIDY1LCAxNTUsIAorICAgIDI1LCA1LCAyNDcsIDE5NCwgMjMwLCA2NSwgMTU1LCAyNSwgNSwgMjI1LCAxODQsIDE1NSwgMTE2LCA1LCAyMzQsIDE1OCwgCisgICAgMTU1LCAxMTYsIDUsIDIyNSwgMTk2LCAxNTUsIDExNiwgNSwgMjUxLCAxOSwgMTU1LCAyMjYsIDQwLCAxNTUsIDQzLCAyMjMsIAorICAgIDY5LCAxNTUsIDQ0LCAyMjMsIDY5LCAxNTUsIDIyNiwgNzksIDI1NCwgMTE3LCAxNTUsIDIyNiwgNzksIDIzMSwgMjI0LCAKKyAgICAxNTUsIDIyNiwgNzksIDIzMiwgODgsIDE1NSwgMjI2LCA3OSwgMjExLCAyMzgsIDE1NSwgMjI2LCA3OSwgMjI2LCA0MSwgCisgICAgMTU1LCAyMjYsIDc5LCAyMzIsIDIwNSwgMTU1LCAyMjYsIDc5LCAyMzIsIDgyLCAxNTUsIDIyNiwgNzksIDI1NCwgMjQ5LCAKKyAgICAxNTUsIDIyNiwgNzksIDI1NCwgMjUwLCAyNTQsIDI0OSwgMTU1LCAyMjYsIDc5LCAyMjUsIDUxLCAxNTUsIDIxNSwgOTQsIAorICAgIDIyNiwgNzksIDIyNSwgNTEsIDE1NSwgMjI2LCAzNiwgMTU1LCAyMSwgMjEwLCA4NiwgMTU1LCAyMSwgMTEwLCAxNTUsIDIxLCAKKyAgICAxMDUsIDE1NSwgMjEsIDE1OCwgMTU1LCAyMSwgMTYxLCAxNTUsIDIxLCAxODksIDE1NSwgMjEsIDE5NCwgMTU1LCAyMSwgCisgICAgMTk4LCAxNTUsIDIxLCAxOTUsIDE1NSwgMjEsIDIwMCwgMTU1LCAyMjYsIDc5LCAyMTYsIDY5LCAyMTUsIDEwNiwgMTU1LCAKKyAgICAyMjYsIDc5LCAyMzUsIDE2NywgMTcyLCAxLCA2MSwgMTcyLCAxLCA3MywgMTcyLCAxLCA3MCwgMTcyLCAxLCA3NSwgMTcyLCAKKyAgICAxLCAyNTQsIDIwMSwgMTcyLCAxLCA3NiwgMTcyLCAxLCAxNzYsIDE3MiwgMSwgMjM0LCAxMzIsIDE3MiwgMSwgMjQzLCAxMzUsIAorICAgIDE3MiwgMSwgMjQyLCAyNDksIDE3MiwgMSwgMjI4LCAyNDUsIDE3MiwgMSwgMjI5LCA3NywgMTcyLCAxLCAyNTAsIDE1NywgCisgICAgMTcyLCAxLCAyNTAsIDExMiwgMTcyLCAxLCAyMzUsIDE0MSwgMTcyLCAxLCAyMzUsIDExNCwgMTcyLCAxLCAyMjgsIDIzNSwgCisgICAgMTcyLCAxLCAyMjgsIDIzNywgMTcyLCAxLCAyMjgsIDIzNiwgMTcyLCAxLCAyMTcsIDEwNSwgMTcyLCAxLCAyMTYsIDIwOCwgCisgICAgMTcyLCAxLCAyNDgsIDIyMSwgMTcyLCAxLCAyNDgsIDI1LCAxNzIsIDEsIDIyNywgMjA3LCAxNzIsIDEsIDE5NywgMTcyLCAxLCAKKyAgICAyNDgsIDEzNSwgMTcyLCAxLCAxOTAsIDE3MiwgMSwgMjI0LCAyMjAsIDE3MiwgMSwgMjI1LCAxNDcsIDE3MiwgMSwgMjUyLCAKKyAgICAxOTEsIDE3MiwgMSwgMjUyLCAxOCwgMTcyLCAxLCAyMzAsIDk1LCAxNzIsIDEsIDE4NCwgMTcyLCAxLCAyNTIsIDExMSwgCisgICAgMTcyLCAxLCAxOTEsIDE3MiwgMSwgMjA1LCAxNzIsIDEsIDIzMywgMTM1LCAxNzIsIDEsIDIxNCwgMjcsIDE3MiwgMSwgMjE4LCAKKyAgICAyMjMsIDE3MiwgMSwgMjA2LCAxNzIsIDEsIDE2MiwgMTcyLCAyNSwgNSwgMjU1LCA3MywgMTcyLCAyNSwgNSwgNzMsIDE3MiwgCisgICAgMjUsIDUsIDIzNiwgMzMsIDE3MiwgMjUsIDUsIDI0NSwgMTk1LCAxNzIsIDI1LCA1LCA3MCwgMTcyLCAyNSwgNSwgMjI2LCAKKyAgICAyMzQsIDE3MiwgMjUsIDUsIDc2LCAxNzIsIDI1LCA1LCAyNTQsIDIwMSwgMTcyLCAyNSwgNSwgMjUzLCAxOTIsIDE3MiwgMjUsIAorICAgIDUsIDIxNCwgMjE0LCAxNzIsIDExNiwgNSwgMTkxLCAxNzIsIDExNiwgNSwgMjA1LCAxNzIsIDExNiwgNSwgMjMzLCAxMzUsIAorICAgIDE3MiwgMTE2LCA1LCAyMTIsIDY1LCAxNzIsIDEsIDQwLCAyMzUsIDIzLCAxNzIsIDEsIDQwLCAyNDMsIDIwMiwgMTcyLCAxLCAKKyAgICA0MCwgMjI5LCA3OSwgMTcyLCAxMTYsIDUsIDQwLCAyMjksIDc5LCAxNzIsIDEsIDQwLCAyNTAsIDE1OCwgMTcyLCAxLCA0MCwgCisgICAgMjE3LCAxNTIsIDE3MiwgMSwgNDAsIDIzMCwgMjUsIDE3MiwgMSwgNDAsIDIyNiwgMTA1LCAxNzIsIDEsIDQwLCAyMTEsIAorICAgIDExNywgMTcyLCAxLCA0MCwgMTUzLCAxNzIsIDEsIDQwLCAxNTYsIDE3MiwgMSwgNDAsIDIxOCwgMjI2LCAxNzIsIDExNiwgNSwgCisgICAgNDAsIDE5MywgMTcyLCAxMTYsIDUsIDQwLCAyNDIsIDYwLCAxNzIsIDIxLCAyMTAsIDg2LCAxNzIsIDIxLCAxMTAsIDE3MiwgCisgICAgMjEsIDEwNSwgMTcyLCAyMSwgMTU4LCAxNzIsIDIxLCAxNjEsIDE3MiwgMjEsIDE4OSwgMTcyLCAyMSwgMTk0LCAxNzIsIDIxLCAKKyAgICAxOTgsIDE3MiwgMjEsIDE5NSwgMTcyLCAyMSwgMjAwLCAxNzIsIDIyNCwgMTQxLCAyMTgsIDI1MSwgMTcyLCAyMjQsIDE0MSwgCisgICAgMjQ4LCAxNzgsIDE3MiwgMjI0LCAxNDEsIDUyLCAyNDgsIDE3OCwgMTcyLCAyMjQsIDE0MSwgMjE1LCAyMTEsIDI0OCwgMTc4LCAKKyAgICA2OCwgMSwgMjM0LCAxMjYsIDI0MywgMTM1LCA2OCwgMSwgMjM0LCAxMjYsIDI1MSwgMzMsIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMjUwLCAxNTcsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxNDEsIDY4LCAxLCAyMzQsIDEyNiwgMjM1LCAxMTQsIDY4LCAxLCAKKyAgICAyMzQsIDEyNiwgMjI3LCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNTYsIDY4LCAxLCAyMzQsIDEyNiwgMjE1LCAxNDQsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMzUsIDY4LCAxLCAyMzQsIDEyNiwgMjQ4LCAxMTksIDY4LCAxLCAyMzQsIDEyNiwgCisgICAgMjQ4LCAyNSwgNjgsIDEsIDIzNCwgMTI2LCAxOTcsIDY4LCAxLCAyMzQsIDEyNiwgMjA2LCA2OCwgMSwgMjM0LCAxMjYsIAorICAgIDE2MiwgNjgsIDEsIDIzNCwgMTI2LCAyNDEsIDE4OSwgNjgsIDEsIDIzNCwgMTI2LCAyNDQsIDE5NiwgNjgsIDU4LCAxLCAKKyAgICAyMzQsIDEyNiwgMjIzLCAxMDksIDY4LCAxLCAyMzQsIDEyNiwgMjExLCAxNjUsIDY4LCAxLCAyMzQsIDEyNiwgMjEwLCAxMTYsIAorICAgIDY4LCAxLCAyMzQsIDEyNiwgMjA1LCA2OCwgMjMyLCAxNDUsIDIzNCwgMTI2LCAyMjYsIDI1MywgNjgsIDIzMiwgMTQ1LCAKKyAgICAyMzQsIDEyNiwgMjI0LCA0MywgNjgsIDIzMiwgMTQ1LCAyMzQsIDEyNiwgMjQxLCAxMjEsIDY4LCAxNiwgMjU0LCAxOTAsIAorICAgIDI0NSwgMzAsIDY4LCAxNiwgMjU0LCAxOTAsIDExMCwgNjgsIDE2LCAyNTQsIDE5MCwgMTA1LCA2OCwgMSwgMjU0LCAxOTAsIAorICAgIDIwNSwgNjgsIDUsIDIyNiwgMjMsIDIzNCwgMjEzLCAyMTYsIDMwLCAzOSwgMjA4LCAxLCAxMjEsIDIzNCwgMjgsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjM0LCAyOCwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDEwNSwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIAorICAgIDEwNSwgMzksIDIwOCwgMSwgMTIxLCAyMzQsIDExNCwgMzksIDIwOCwgMSwgMTI1LCAyMzQsIDExNCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTI1LCAyNDIsIDE3NCwgMzksIDIwOCwgMSwgMTIxLCAyMjksIDQsIDM5LCAKKyAgICAyMDgsIDEsIDEyNSwgMjI5LCA0LCAzOSwgMjA4LCAxLCAxMjEsIDI0OSwgMjM4LCAzOSwgMjA4LCAxLCAxMjUsIDI0OSwgCisgICAgMjM4LCAzOSwgMjA4LCAxLCAxMjEsIDI1MCwgODYsIDM5LCAyMDgsIDEsIDEyNSwgMjUwLCA4NiwgMzksIDIwOCwgMSwgMTIxLCAKKyAgICAyMTksIDU4LCAzOSwgMjA4LCAxLCAxMjUsIDIxOSwgNTgsIDM5LCAyMDgsIDEsIDEyMSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgMjI3LCAxMzQsIDM5LCAyMDgsIDEsIDEyMSwgMjQ3LCAxNDUsIDM5LCAyMDgsIDEsIDEyNSwgMjQ3LCAxNDUsIDM5LCAKKyAgICAyMDgsIDEsIDEyMSwgMTExLCAzOSwgMjA4LCAxLCAxMjUsIDExMSwgMzksIDIwOCwgMSwgMTIxLCAyMTYsIDE1NiwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMTYsIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMjgsIDc0LCAzOSwgMjA4LCAxLCAxMjUsIDIyOCwgCisgICAgNzQsIDM5LCAyMDgsIDEsIDEyMSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIDEyNSwgMjUxLCAyMDUsIDM5LCAyMDgsIDEsIAorICAgIDEyMSwgMjI1LCAxNiwgMzksIDIwOCwgMSwgMTI1LCAyMjUsIDE2LCAzOSwgMjA4LCAxLCAxMjEsIDIyNSwgMTIxLCAzOSwgCisgICAgMjA4LCAxLCAxMjUsIDIyNSwgMTIxLCAzOSwgMjA4LCAxLCAxMjEsIDI0NCwgNDMsIDM5LCAyMDgsIDEsIDEyNSwgMjQ0LCAKKyAgICA0MywgMzksIDIwOCwgMSwgMTIxLCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgMTI1LCAyMzAsIDE2MSwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTI1LCAyMTAsIDI0NCwgMzksIDIwOCwgMSwgMTIxLCAyMjIsIDIxMSwgMzksIAorICAgIDIwOCwgMSwgMTI1LCAyMjIsIDIxMSwgMzksIDIwOCwgMSwgMTIxLCAyMzIsIDE1NiwgMzksIDIwOCwgMSwgMTI1LCAyMzIsIAorICAgIDE1NiwgMzksIDIwOCwgMSwgMTIxLCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgMTI1LCAyMTMsIDEzOCwgMzksIDIwOCwgMSwgCisgICAgMTIxLCAyNDEsIDY4LCAzOSwgMjA4LCAxLCAxMjUsIDI0MSwgNjgsIDM5LCAyMDgsIDEsIDEyMSwgNzYsIDM5LCAyMDgsIDEsIAorICAgIDEyNSwgNzYsIDM5LCAyMDgsIDIzMSwgMjA0LCAyMzQsIDIzMCwgMzksIDIwOCwgMjUsIDI1NSwgNzMsIDM5LCAyMDgsIDI1LCAKKyAgICA3MywgMzksIDIwOCwgMjUsIDIxNCwgMjE0LCAzOSwgMjA4LCAyNSwgNzAsIDM5LCAyMDgsIDI1LCA3NSwgMzksIDIwOCwgMjUsIAorICAgIDc2LCAzOSwgMjA4LCAyMzEsIDIwNCwgMjM0LCAxMDgsIDM5LCAyMDgsIDI1LCAyNDAsIDExOSwgMzksIDIwOCwgMjUsIDIxNCwgCisgICAgMjEzLCAzOSwgMjA4LCAyNSwgMjE0LCAyMjksIDM5LCAyMDgsIDI1LCAyNTMsIDE5MCwgMzksIDIwOCwgMjUsIDI1MywgMTY3LCAKKyAgICAzOSwgMjA4LCAyNSwgMjU0LCAxMjMsIDM5LCAyMDgsIDI1LCAyNTQsIDEzNiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgCisgICAgMjQ1LCAxODAsIDM5LCAyMDgsIDEzOCwgMjMxLCAyMDQsIDIyNywgMjA2LCAzOSwgMjA4LCAxMzgsIDIzMSwgMjA0LCAyMTYsIAorICAgIDE1NiwgMzksIDIwOCwgMTM4LCAyMzEsIDIwNCwgMjE5LCA0MiwgMzksIDIwOCwgMTYsIDIzNCwgMTMsIDM5LCAyMDgsIDE2LCAKKyAgICAyMjcsIDIwNiwgMzksIDIwOCwgMTYsIDIyMSwgMjUzLCAzOSwgMjA4LCAxNiwgMjQxLCA2OSwgMjQxLCA2NCwgMzksIDIwOCwgCisgICAgMTYsIDIzNCwgMjIsIDIzNCwgMjEsIDE4NiwgMTg1LCAxLCA3NSwgMTg2LCAxODUsIDEsIDc2LCAxODYsIDE4NSwgMSwgMjUwLCAKKyAgICAxNTcsIDE4NiwgMTg1LCAxLCAyMjcsIDE2NSwgMTg2LCAxODUsIDEsIDIxNSwgMTU2LCAxODYsIDE4NSwgMSwgMjE1LCAxNDQsIAorICAgIDE4NiwgMTg1LCAxLCAyNDgsIDEzNSwgMTg2LCAxODUsIDEsIDI0OCwgMTE5LCAxODYsIDE4NSwgMSwgMjI4LCAxMTAsIDE4NiwgCisgICAgMTg1LCAxLCAyMjAsIDEwMiwgMTg2LCAxODUsIDEsIDIxOCwgMjIzLCAxODYsIDE4NSwgMjUsIDUsIDIzNiwgMzMsIDE4NiwgCisgICAgMTg1LCAyNSwgNSwgMjE0LCAxMTgsIDE4NiwgMTg1LCAyNSwgNSwgMjU1LCAzNywgMTg2LCAxODUsIDI1LCA1LCAyNTMsIAorICAgIDE5MiwgMTg2LCAxODUsIDI1LCA1LCAyNTUsIDMwLCAxODYsIDE4NSwgMjUwLCAxMjUsIDE4NiwgMTg1LCAyNTQsIDIwNiwgCisgICAgMjM0LCA5OCwgMTg2LCAxODUsIDI1NCwgMTAzLCAxODYsIDE4NSwgMywgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyMTEsIAorICAgIDIwOSwgMjIzLCA3NCwgNzgsIDE4NiwgMTg1LCAyNSwgNSwgMjEzLCAxNDcsIDE4NiwgMTg1LCAyMTMsIDE1MiwgMjksIDMsIAorICAgIDIxNSwgMTM3LCAyOSwgMywgMjE1LCAxNDAsIDI5LCAzLCAyMTUsIDE0MywgMjksIDMsIDIxNSwgMTQxLCAyOSwgMywgMjE1LCAKKyAgICAxNDIsIDI5LCAzLCAyMTUsIDEzOSwgMjksIDMsIDI0OCwgMTEzLCAyOSwgMywgMjQ4LCAxMTUsIDI5LCAzLCAyNDgsIDExOCwgCisgICAgMjksIDMsIDI0OCwgMTE2LCAyOSwgMywgMjQ4LCAxMTcsIDI5LCAzLCAyNDgsIDExNCwgMjksIDMsIDI0NiwgMjgsIDI5LCAzLCAKKyAgICAyNDYsIDMxLCAyOSwgMywgMjQ2LCAzNywgMjksIDMsIDI0NiwgMzUsIDI5LCAzLCAyNDYsIDM2LCAyOSwgMywgMjQ2LCAyOSwgCisgICAgMjksIDMsIDI1MCwgMjA0LCAyOSwgMywgMjUwLCAxOTgsIDI5LCAzLCAyNTAsIDIwMCwgMjksIDMsIDI1MCwgMjAzLCAyOSwgCisgICAgMywgMjUwLCAyMDEsIDI5LCAzLCAyNTAsIDIwMiwgMjksIDMsIDI1MCwgMTk5LCAyOSwgMywgMjUyLCAxMTEsIDI5LCAzLCAKKyAgICAyNTIsIDkwLCAyOSwgMywgMjUyLCAxMDIsIDI5LCAzLCAyNTIsIDExMCwgMjksIDMsIDI1MiwgMTA1LCAyOSwgMywgMjUyLCAKKyAgICAxMDYsIDI5LCAzLCAyNTIsIDk0LCAxODYsIDE4NSwgMSwgMjM0LCAxOSwgMTg2LCAxODUsIDEsIDIyMSwgMjUzLCAxODYsIAorICAgIDE4NSwgMSwgMjMzLCAxMDksIDE4NiwgMTg1LCAxLCAyMzAsIDE3MiwgMTg2LCAxODUsIDEsIDE5MCwgMTg2LCAxODUsIDEsIAorICAgIDE5NywgMTg2LCAxODUsIDEsIDI1MCwgMTAyLCAxODYsIDE4NSwgMSwgMjE2LCA5MCwgMTg2LCAxODUsIDEsIDIzNCwgMTAxLCAKKyAgICAxODYsIDE4NSwgMSwgMjI4LCAyNTAsIDE4NiwgMTg1LCAxLCAyMTYsIDE1MCwgMTg2LCAxODUsIDEsIDIxMiwgNjAsIDE4NiwgCisgICAgMTg1LCAxLCAyMTEsIDY5LCAxODYsIDE4NSwgMSwgMjQwLCAyMTYsIDE4NiwgMTg1LCAxLCAyMTQsIDE5MCwgMTg2LCAxODUsIAorICAgIDEsIDczLCAxODYsIDE4NSwgMSwgMjI1LCAxNDIsIDE4NiwgMTg1LCAxLCAyNTMsIDIwMiwgMTg2LCAxODUsIDEsIDI0MiwgCisgICAgMTY3LCAxODYsIDE4NSwgMSwgMjM1LCAxMTIsIDE4NiwgMTg1LCAxLCAyMjMsIDE2NiwgMTg2LCAxODUsIDEsIDI1MiwgMTkxLCAKKyAgICAxODYsIDE4NSwgMSwgMjM1LCAxMDAsIDE4NiwgMTg1LCAxLCAyNDcsIDIxOSwgMTg2LCAxODUsIDEsIDI0MiwgMjIxLCAxODYsIAorICAgIDE4NSwgMSwgMjQ4LCA1LCAxODYsIDE4NSwgMSwgMjUyLCAxNiwgMTg2LCAxODUsIDEsIDIzNCwgMjAsIDIzMiwgMTI4LCAKKyAgICAxODYsIDE4NSwgMSwgMjMzLCAxMTAsIDIzMiwgMTI4LCAxODYsIDE4NSwgMSwgMjMwLCAxNzMsIDIzMiwgMTI4LCAxODYsIAorICAgIDE4NSwgMSwgMjI2LCA5MCwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAyMjksIDIyOSwgMjMyLCAxMjgsIDE4NiwgMTg1LCAxLCAKKyAgICAyMTYsIDkxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDIyOCwgMjUxLCAyMzIsIDEyOCwgMTg2LCAxODUsIDEsIDI0MCwgCisgICAgMTU0LCAyMzIsIDEyOCwgMTg2LCAxODUsIDI1LCA1LCAyMjYsIDE5NSwgMTg2LCAxODUsIDI1LCA1LCAyMzUsIDI1MywgMTg2LCAKKyAgICAxODUsIDI1LCA1LCAyNTQsIDEyMiwgMTg2LCAxODUsIDI1LCA1LCAyMTEsIDM4LCAxODYsIDE4NSwgMjUsIDUsIDIxOSwgMzIsIAorICAgIDE4NiwgMTg1LCAyNSwgNSwgMjE0LCAxODcsIDE4NiwgMTg1LCAyNSwgNSwgMjUwLCAxMjMsIDE4NiwgMTg1LCAyNSwgNSwgCisgICAgMjI3LCAxOTEsIDE4NiwgMTg1LCAyNTAsIDEyNCwgMTg2LCAxODUsIDIzMiwgODUsIDIzNSwgMTUwLCAxODYsIDE4NSwgMjU0LCAKKyAgICA0NiwgMjM1LCAxNTAsIDE4NiwgMTg1LCAyMSwgMjEwLCA4NiwgMTg2LCAxODUsIDIxLCAxMTAsIDE4NiwgMTg1LCAyMSwgCisgICAgMTA1LCAxODYsIDE4NSwgMjEsIDE1OCwgMTg2LCAxODUsIDIxLCAxNjEsIDE4NiwgMTg1LCAyMSwgMTg5LCAxODYsIDE4NSwgCisgICAgMjEsIDE5NCwgMTg2LCAxODUsIDIxLCAxOTgsIDE4NiwgMTg1LCAyMSwgMTk1LCAxODYsIDE4NSwgMjEsIDIwMCwgMjQsIAorICAgIDE0MywgMjI3LCA3NywgMjQsIDE0MywgMjI3LCA4MiwgMjQsIDE0MywgMjEwLCAyNDMsIDI0LCAxNDMsIDIxMCwgMjQyLCAyNCwgCisgICAgMTQzLCAyMTAsIDI0MSwgMjQsIDE0MywgMjE1LCAyMywgMjQsIDE0MywgMjE1LCAyNiwgMjQsIDE0MywgMjEwLCAyMTAsIDI0LCAKKyAgICAxNDMsIDIxMCwgMjA2LCAyNCwgMTQzLCAyNDUsIDU0LCAyNCwgMTQzLCAyNDUsIDUyLCAyNCwgMTQzLCAyNDUsIDUzLCAyNCwgCisgICAgMTQzLCAyNDUsIDUwLCAyNCwgMTQzLCAyNDAsIDE0NCwgMjQsIDE0MywgMjQwLCAxNDMsIDI0LCAxNDMsIDI0MCwgMTQxLCAKKyAgICAyNCwgMTQzLCAyNDAsIDE0MiwgMjQsIDE0MywgMjQwLCAxNDcsIDI0LCAxNDMsIDI0MCwgMTQwLCAyNCwgMTQzLCAyNDAsIAorICAgIDEzOSwgMjQsIDE0MywgMjQwLCAxNDksIDI0LCAxNDMsIDI1NCwgMzMsIDI0LCAxNDMsIDI1NCwgMzIsIDI0LCA5MCwgMjI4LCAKKyAgICAyMTksIDI0LCA5MCwgMjI4LCAyMjUsIDI0LCA5MCwgMjE4LCAyMDQsIDI0LCA5MCwgMjE4LCAyMDMsIDI0LCA5MCwgMjE2LCAKKyAgICA5NiwgMjQsIDkwLCAyMTYsIDk0LCAyNCwgOTAsIDIxNiwgOTMsIDI0LCA5MCwgMjE2LCA5OSwgMjQsIDkwLCAyMTYsIDEwMCwgCisgICAgMjQsIDkwLCAyMTYsIDkyLCAyNCwgOTAsIDIyMywgNSwgMjQsIDkwLCAyMjMsIDIwLCAyNCwgOTAsIDIxOCwgMjEwLCAyNCwgCisgICAgOTAsIDIyMywgMTcsIDI0LCA5MCwgMjIzLCA3LCAyNCwgOTAsIDIyMywgOSwgMjQsIDkwLCAyMjIsIDI1MiwgMjQsIDkwLCAKKyAgICAyMjIsIDI1MywgMjQsIDkwLCAyMzQsIDIxOCwgMjQsIDkwLCAyMzAsIDIxMiwgMjQsIDkwLCAyMzAsIDIwNiwgMjQsIDkwLCAKKyAgICAyMTgsIDIxNCwgMjQsIDkwLCAyMzAsIDIwOSwgMjQsIDkwLCAyMzAsIDIxNSwgMjQsIDkwLCAyMjUsIDc2LCAyNCwgOTAsIAorICAgIDIyNSwgODUsIDI0LCA5MCwgMjI1LCA4OSwgMjQsIDkwLCAyMTgsIDIxMiwgMjQsIDkwLCAyMjUsIDc5LCAyNCwgOTAsIDIyNSwgCisgICAgOTMsIDI0LCA5MCwgMjI1LCA5NCwgMjQsIDkwLCAyMTksIDE0MCwgMjQsIDkwLCAyMTksIDE0MywgMjQsIDkwLCAyMTgsIAorICAgIDIwOCwgMjQsIDkwLCAyMTgsIDIwNiwgMjQsIDkwLCAyMTksIDEzOCwgMjQsIDkwLCAyMTksIDE0NiwgMjQsIDkwLCAyMTksIAorICAgIDE0NywgMjQsIDkwLCAyMTksIDEzMiwgMjQsIDkwLCAyMTksIDE0NSwgMjQsIDkwLCAyMjYsIDMwLCAyNCwgOTAsIDIyNiwgCisgICAgMzEsIDI0LCA5MCwgMjExLCAyNCwgMjQsIDkwLCAyMTEsIDI1LCAyNCwgOTAsIDI1MCwgNDQsIDI0LCA5MCwgMjUwLCA0MywgCisgICAgMjQsIDkwLCAyMTgsIDIxOSwgMjQsIDkwLCAyMjUsIDEyOCwgMjQsIDkwLCAyMjUsIDEyNywgOSwgMTQsIDIzOCwgMjQsIDksIAorICAgIDE0LCAyMzgsIDIzLCA5LCAxNCwgMjM4LCAyMiwgOSwgMTQsIDIzOCwgMjEsIDksIDE0LCAyMzgsIDIwLCA5LCAxNCwgMjM4LCAKKyAgICAxOSwgOSwgMTQsIDIzOCwgMTgsIDksIDE0LCAyMzgsIDE3LCA5LCAxNCwgMjM4LCAxNiwgOSwgMTQsIDIzOCwgMTUsIDksIAorICAgIDE0LCAyMzgsIDE0LCA5LCAxNCwgMjM4LCAxMywgOSwgMTQsIDIzOCwgMTIsIDksIDE0LCAyMzgsIDExLCA5LCAxNCwgMjM4LCAKKyAgICAxMCwgOSwgMTQsIDIzOCwgOSwgOSwgMTQsIDIzOCwgOCwgOSwgMTQsIDIzOCwgNywgOSwgMTQsIDIzOCwgNiwgOSwgMTQsIAorICAgIDIzOCwgNSwgOSwgMTQsIDIzOCwgNCwgOSwgMTQsIDIzOCwgMywgOSwgMTQsIDIzOCwgMiwgOSwgMTQsIDIzOCwgMSwgOSwgCisgICAgMTQsIDIzOCwgMCwgOSwgMTQsIDIzNywgMjU1LCA5LCAxNCwgMjM3LCAyNTQsIDksIDE0LCAyMzcsIDI1MywgOSwgMTQsIAorICAgIDIzNywgMjUyLCA5LCAxNCwgMjM3LCAyNTEsIDksIDE0LCAyMzcsIDI1MCwgOSwgMTQsIDIzNywgMjQ5LCA5LCAxNCwgMjM3LCAKKyAgICAyNDgsIDksIDE0LCAyMzcsIDI0NywgOSwgMTQsIDIzNywgMjQ2LCA5LCAxNCwgMjM3LCAyNDUsIDksIDE0LCAyMzcsIDI0NCwgCisgICAgOSwgMTQsIDIzNywgMjQzLCA5LCAxNCwgMjM3LCAyNDIsIDksIDE0LCAyMzcsIDI0MSwgOSwgMTQsIDIzNywgMjQwLCA5LCAKKyAgICAxNCwgMjM3LCAyMzksIDksIDE0LCAyMzcsIDIzOCwgOSwgMTQsIDIzNywgMjM3LCA5LCAxNCwgMjM3LCAyMzYsIDksIDE0LCAKKyAgICAyMzcsIDIzNSwgOSwgMTQsIDIzNywgMjM0LCA5LCAxNCwgMjM3LCAyMzMsIDksIDE0LCAyMzcsIDIzMiwgOSwgMTQsIDIzNywgCisgICAgMjMxLCA5LCAxNCwgMjM3LCAyMzAsIDksIDE0LCAyMzcsIDIyOSwgOSwgMTQsIDIzNywgMjI4LCA5LCAxNCwgMjM3LCAyMjcsIAorICAgIDksIDE0LCAyMzcsIDIyNiwgOSwgMTQsIDIzNywgMjI1LCA5LCAxNCwgMjM3LCAyMjQsIDksIDE0LCAyMzcsIDIyMywgOSwgCisgICAgMTQsIDIzNywgMjIyLCA5LCAxNCwgMjM3LCAyMjEsIDksIDE0LCAyMzcsIDIyMCwgOSwgMTQsIDIzNywgMjE5LCA5LCAxNCwgCisgICAgMjM3LCAyMTgsIDksIDE0LCAyMzcsIDIxNywgOSwgMTQsIDIzNywgMjE2LCA5LCAxNCwgMjM3LCAyMTUsIDksIDE0LCAyMzcsIAorICAgIDIxNCwgOSwgMTQsIDIzNywgMjEzLCA5LCAxNCwgMjM3LCAyMTIsIDksIDE0LCAyMzcsIDIxMSwgOSwgMTQsIDIzNywgMjEwLCAKKyAgICA5LCAxNCwgMjM3LCAyMDksIDksIDE0LCAyMzcsIDIwOCwgOSwgMTQsIDIzNywgMjA3LCA5LCAxNCwgMjM3LCAyMDYsIDksIAorICAgIDE0LCAyMzcsIDIwNSwgOSwgMTQsIDIzNywgMjA0LCA5LCAxNCwgMjM3LCAyMDMsIDksIDE0LCAyMzcsIDIwMiwgOSwgMTQsIAorICAgIDIzNywgMjAxLCA5LCAxNCwgMjM3LCAyMDAsIDksIDE0LCAyMzcsIDE5OSwgOSwgMTQsIDIzNywgMTk4LCA5LCAxNCwgMjM3LCAKKyAgICAxOTcsIDksIDE0LCAyMzcsIDE5NiwgOSwgMTQsIDIzNywgMTk1LCA5LCAxNCwgMjM3LCAxOTQsIDksIDE0LCAyMzcsIDE5MywgCisgICAgOSwgMTQsIDIzNywgMTkyLCA5LCAxNCwgMjM3LCAxOTEsIDksIDE0LCAyMzcsIDE5MCwgOSwgMTQsIDIzNywgMTg5LCA5LCAKKyAgICAxNCwgMjM3LCAxODgsIDksIDE0LCAyMzcsIDE4NywgOSwgMTQsIDIzNywgMTg2LCA5LCAxNCwgMjM3LCAxODUsIDksIDE0LCAKKyAgICAyMzcsIDE4NCwgOSwgMTQsIDIzNywgMTgzLCA5LCAxNCwgMjM3LCAxODIsIDksIDE0LCAyMzcsIDE4MSwgOSwgMTQsIDIzNywgCisgICAgMTgwLCA5LCAxNCwgMjM3LCAxNzksIDksIDE0LCAyMzcsIDE3OCwgOSwgMTQsIDIzNywgMTc3LCA5LCAxNCwgMjM3LCAxNzYsIAorICAgIDksIDE0LCAyMzcsIDE3NSwgOSwgMTQsIDIzNywgMTc0LCA5LCAxNCwgMjM3LCAxNzMsIDksIDE0LCAyMzcsIDE3MiwgOSwgCisgICAgMTQsIDIzNywgMTcxLCA5LCAxNCwgMjM3LCAxNzAsIDksIDE0LCAyMzcsIDE2OSwgOSwgMTQsIDIzNywgMTY4LCA5LCAxNCwgCisgICAgMjM3LCAxNjcsIDksIDE0LCAyMzcsIDE2NiwgOSwgMTQsIDIzNywgMTY1LCA5LCAxNCwgMjM3LCAxNjQsIDksIDE0LCAyMzcsIAorICAgIDE2MywgOSwgMTQsIDIzNywgMTYyLCA5LCAxNCwgMjM3LCAxNjEsIDksIDE0LCAyMzcsIDE2MCwgOSwgMTQsIDIzNywgMTU5LCAKKyAgICA5LCAxNCwgMjM3LCAxNTgsIDksIDE0LCAyMzcsIDE1NywgOSwgMTQsIDIzNywgMTU2LCA5LCAxNCwgMjM3LCAxNTUsIDksIAorICAgIDE0LCAyMzcsIDE1NCwgOSwgMTQsIDIzNywgMTUzLCA5LCAxNCwgMjM3LCAxNTIsIDksIDE0LCAyMzcsIDE1MSwgOSwgMTQsIAorICAgIDIzNywgMTUwLCA5LCAxNCwgMjM3LCAxNDksIDksIDE0LCAyMzcsIDE0OCwgOSwgMTQsIDIzNywgMTQ3LCA5LCAxNCwgMjM3LCAKKyAgICAxNDYsIDksIDE0LCAyMzcsIDE0NSwgOSwgMTQsIDIzNywgMTQ0LCA5LCAxNCwgMjM3LCAxNDMsIDksIDE0LCAyMzcsIDE0MiwgCisgICAgOSwgMTQsIDIzNywgMTQxLCA5LCAxNCwgMjM3LCAxNDAsIDksIDE0LCAyMzcsIDEzOSwgOSwgMTQsIDIzNywgMTM4LCA5LCAKKyAgICAxNCwgMjM3LCAxMzcsIDksIDE0LCAyMzcsIDEzNiwgOSwgMTQsIDIzNywgMTM1LCA5LCAxNCwgMjM3LCAxMzQsIDksIDE0LCAKKyAgICAyMzcsIDEzMywgOSwgMTQsIDIzNywgMTMyLCA5LCAxNCwgMjM3LCAxMzEsIDksIDE0LCAyMzcsIDEzMCwgOSwgMTQsIDIzNywgCisgICAgMTI5LCA5LCAxNCwgMjM3LCAxMjgsIDksIDE0LCAyMzcsIDEyNywgOSwgMTQsIDIzNywgMTI2LCA5LCAxNCwgMjM3LCAxMjUsIAorICAgIDksIDE0LCAyMzcsIDEyNCwgOSwgMTQsIDIzNywgMTIzLCA5LCAxNCwgMjM3LCAxMjIsIDksIDE0LCAyMzcsIDEyMSwgOSwgCisgICAgMTQsIDIzNywgMTIwLCA5LCAxNCwgMjM3LCAxMTksIDksIDE0LCAyMzcsIDExOCwgOSwgMTQsIDIzNywgMTE3LCA5LCAxNCwgCisgICAgMjM3LCAxMTYsIDksIDE0LCAyMzcsIDExNSwgOSwgMTQsIDIzNywgMTE0LCA5LCAxNCwgMjM3LCAxMTMsIDksIDE0LCAyMzcsIAorICAgIDExMiwgOSwgMTQsIDIzNywgMTExLCA5LCAxNCwgMjM3LCAxMTAsIDksIDE0LCAyMzcsIDEwOSwgOSwgMTQsIDIzNywgMTA4LCAKKyAgICA5LCAxNCwgMjM3LCAxMDcsIDksIDE0LCAyMzcsIDEwNiwgOSwgMTQsIDIzNywgMTA1LCA5LCAxNCwgMjM3LCAxMDQsIDksIAorICAgIDE0LCAyMzcsIDEwMywgOSwgMTQsIDIzNywgMTAyLCA5LCAxNCwgMjM3LCAxMDEsIDksIDE0LCAyMzcsIDEwMCwgOSwgMTQsIAorICAgIDIzNywgOTksIDksIDE0LCAyMzcsIDk4LCA5LCAxNCwgMjM3LCA5NywgOSwgMTQsIDIzNywgOTYsIDksIDE0LCAyMzcsIDk1LCAKKyAgICA5LCAxNCwgMjM3LCA5NCwgOSwgMTQsIDIzNywgOTMsIDksIDE0LCAyMzcsIDkyLCA5LCAxNCwgMjM3LCA5MSwgOSwgMTQsIAorICAgIDIzNywgOTAsIDksIDE0LCAyMzcsIDg5LCA5LCAxNCwgMjM3LCA4OCwgOSwgMTQsIDIzNywgODcsIDksIDE0LCAyMzcsIDg2LCAKKyAgICA5LCAxNCwgMjM3LCA4NSwgOSwgMTQsIDIzNywgODQsIDksIDE0LCAyMzcsIDgzLCA5LCAxNCwgMjM3LCA4MiwgOSwgMTQsIAorICAgIDIzNywgODEsIDksIDE0LCAyMzcsIDgwLCA5LCAxNCwgMjM3LCA3OSwgOSwgMTQsIDIzNywgNzgsIDksIDE0LCAyMzcsIDc3LCAKKyAgICA5LCAxNCwgMjM3LCA3NiwgOSwgMTQsIDIzNywgNzUsIDksIDE0LCAyMzcsIDc0LCA5LCAxNCwgMjM3LCA3MywgOSwgMTQsIAorICAgIDIzNywgNzIsIDksIDE0LCAyMzcsIDcxLCA5LCAxNCwgMjM3LCA3MCwgOSwgMTQsIDIzNywgNjksIDksIDE0LCAyMzcsIDY4LCAKKyAgICA5LCAxNCwgMjM3LCA2NywgOSwgMTQsIDIzNywgNjYsIDksIDE0LCAyMzcsIDY1LCA5LCAxNCwgMjM3LCA2NCwgOSwgMTQsIAorICAgIDIzNywgNjMsIDksIDE0LCAyMzcsIDYyLCA5LCAxNCwgMjM3LCA2MSwgOSwgMTQsIDIzNywgNjAsIDksIDE0LCAyMzcsIDU5LCAKKyAgICA5LCAxNCwgMjM3LCA1OCwgOSwgMTQsIDIzNywgNTcsIDksIDE0LCAyMzcsIDU2LCA5LCAxNCwgMjM3LCA1NSwgOSwgMTQsIAorICAgIDIzNywgNTQsIDksIDE0LCAyMzcsIDUzLCA5LCAxNCwgMjM3LCA1MiwgOSwgMTQsIDIzNywgNTEsIDksIDE0LCAyMzcsIDUwLCAKKyAgICA5LCAxNCwgMjM3LCA0OSwgOSwgMTQsIDIzNywgNDgsIDksIDE0LCAyMzcsIDQ3LCA5LCAxNCwgMjM3LCA0NiwgOSwgMTQsIAorICAgIDIzNywgNDUsIDksIDE0LCAyMzcsIDQ0LCA5LCAxNCwgMjM3LCA0MywgOSwgMTQsIDIzNywgNDIsIDksIDE0LCAyMzcsIDQxLCAKKyAgICA5LCAxNCwgMjM3LCA0MCwgOSwgMTQsIDIzNywgMzksIDksIDE0LCAyMzcsIDM4LCA5LCAxNCwgMjM3LCAzNywgOSwgMTQsIAorICAgIDIzNywgMzYsIDksIDE0LCAyMzcsIDM1LCA5LCAxNCwgMjM3LCAzNCwgOSwgMTQsIDIzNywgMzMsIDksIDE0LCAyMzcsIDMyLCAKKyAgICA5LCAxNCwgMjM3LCAzMSwgOSwgMTQsIDIzNywgMzAsIDksIDE0LCAyMzcsIDI5LCA5LCAxNCwgMjM3LCAyOCwgOSwgMTQsIAorICAgIDIzNywgMjcsIDksIDE0LCAyMzcsIDI2LCA5LCAxNCwgMjM3LCAyNSwgOSwgMTQsIDIzNywgMjQsIDksIDE0LCAyMzcsIDIzLCAKKyAgICA5LCAxNCwgMjM3LCAyMiwgOSwgMTQsIDIzNywgMjEsIDksIDE0LCAyMzcsIDIwLCA5LCAxNCwgMjM3LCAxOSwgOSwgMTQsIAorICAgIDIzNywgMTgsIDksIDE0LCAyMzcsIDE3LCA5LCAxNCwgMjM3LCAxNiwgOSwgMTQsIDIzNywgMTUsIDksIDE0LCAyMzcsIDE0LCAKKyAgICA5LCAxNCwgMjM3LCAxMywgOSwgMTQsIDIzNywgMTIsIDksIDE0LCAyMzcsIDExLCA5LCAxNCwgMjM3LCAxMCwgOSwgMTQsIAorICAgIDIzNywgOSwgOSwgMTQsIDIzNywgOCwgOSwgMTQsIDIzNywgNywgOSwgMTQsIDIzNywgNiwgOSwgMTQsIDIzNywgNSwgOSwgCisgICAgMTQsIDIzNywgNCwgOSwgMTQsIDIzNywgMywgOSwgMTQsIDIzNywgMiwgOSwgMTQsIDIzNywgMSwgOSwgMTQsIDIzNywgMCwgCisgICAgOSwgMTQsIDIzNiwgMjU1LCA5LCAxNCwgMjM2LCAyNTQsIDksIDE0LCAyMzYsIDI1MywgOSwgMTQsIDIzNiwgMjUyLCA5LCAKKyAgICAxNCwgMjM2LCAyNTEsIDksIDE0LCAyMzYsIDI1MCwgOSwgMTQsIDIzNiwgMjQ5LCA5LCAxNCwgMjM2LCAyNDgsIDksIDE0LCAKKyAgICAyMzYsIDI0NywgOSwgMTQsIDIzNiwgMjQ2LCA5LCAxNCwgMjM2LCAyNDUsIDksIDE0LCAyMzYsIDI0NCwgOSwgMTQsIDIzNiwgCisgICAgMjQzLCA5LCAxNCwgMjM2LCAyNDIsIDksIDE0LCAyMzYsIDI0MSwgOSwgMTQsIDIzNiwgMjQwLCA5LCAxNCwgMjM2LCAyMzksIAorICAgIDksIDE0LCAyMzYsIDIzOCwgOSwgMTQsIDIzNiwgMjM3LCA5LCAxNCwgMjM2LCAyMzYsIDksIDE0LCAyMzYsIDIzNSwgOSwgCisgICAgMTQsIDIzNiwgMjM0LCA5LCAxNCwgMjM2LCAyMzMsIDksIDE0LCAyMzYsIDIzMiwgOSwgMTQsIDIzNiwgMjMxLCA5LCAxNCwgCisgICAgMjM2LCAyMzAsIDksIDE0LCAyMzYsIDIyOSwgOSwgMTQsIDIzNiwgMjI4LCA5LCAxNCwgMjM2LCAyMjcsIDksIDE0LCAyMzYsIAorICAgIDIyNiwgOSwgMTQsIDIzNiwgMjI1LCA5LCAxNCwgMjM2LCAyMjQsIDksIDE0LCAyMzYsIDIyMywgOSwgMTQsIDIzNiwgMjIyLCAKKyAgICA5LCAxNCwgMjM2LCAyMjEsIDksIDE0LCAyMzYsIDIyMCwgOSwgMTQsIDIzNiwgMjE5LCA5LCAxNCwgMjM2LCAyMTgsIDksIAorICAgIDE0LCAyMzYsIDIxNywgOSwgMTQsIDIzNiwgMjE2LCA5LCAxNCwgMjM2LCAyMTUsIDksIDE0LCAyMzYsIDIxNCwgOSwgMTQsIAorICAgIDIzNiwgMjEzLCA5LCAxNCwgMjM2LCAyMTIsIDksIDE0LCAyMzYsIDIxMSwgOSwgMTQsIDIzNiwgMjEwLCA5LCAxNCwgMjM2LCAKKyAgICAyMDksIDksIDE0LCAyMzYsIDIwOCwgOSwgMTQsIDIzNiwgMjA3LCA5LCAxNCwgMjM2LCAyMDYsIDksIDE0LCAyMzYsIDIwNSwgCisgICAgOSwgMTQsIDIzNiwgMjA0LCA5LCAxNCwgMjM2LCAyMDMsIDksIDE0LCAyMzYsIDIwMiwgOSwgMTQsIDIzNiwgMjAxLCA5LCAKKyAgICAxNCwgMjM2LCAyMDAsIDksIDE0LCAyMzYsIDE5OSwgOSwgMTQsIDIzNiwgMTk4LCA5LCAxNCwgMjM2LCAxOTcsIDksIDE0LCAKKyAgICAyMzYsIDE5NiwgOSwgMTQsIDIzNiwgMTk1LCA5LCAxNCwgMjM2LCAxOTQsIDksIDE0LCAyMzYsIDE5MywgOSwgMTQsIDIzNiwgCisgICAgMTkyLCA5LCAxNCwgMjM2LCAxOTEsIDksIDE0LCAyMzYsIDE5MCwgOSwgMTQsIDIzNiwgMTg5LCA5LCAxNCwgMjM2LCAxODgsIAorICAgIDksIDE0LCAyMzYsIDE4NywgOSwgMTQsIDIzNiwgMTg2LCA5LCAxNCwgMjM2LCAxODUsIDksIDE0LCAyMzYsIDE4NCwgOSwgCisgICAgMTQsIDIzNiwgMTgzLCA5LCAxNCwgMjM2LCAxODIsIDksIDE0LCAyMzYsIDE4MSwgOSwgMTQsIDIzNiwgMTgwLCA5LCAxNCwgCisgICAgMjM2LCAxNzksIDksIDE0LCAyMzYsIDE3OCwgOSwgMTQsIDIzNiwgMTc3LCA5LCAxNCwgMjM2LCAxNzYsIDksIDE0LCAyMzYsIAorICAgIDE3NSwgOSwgMTQsIDIzNiwgMTc0LCA5LCAxNCwgMjM2LCAxNzMsIDksIDE0LCAyMzYsIDE3MiwgOSwgMTQsIDIzNiwgMTcxLCAKKyAgICA5LCAxNCwgMjM2LCAxNzAsIDksIDE0LCAyMzYsIDE2OSwgOSwgMTQsIDIzNiwgMTY4LCA5LCAxNCwgMjM2LCAxNjcsIDksIAorICAgIDE0LCAyMzYsIDE2NiwgOSwgMTQsIDIzNiwgMTY1LCA5LCAxNCwgMjM2LCAxNjQsIDksIDE0LCAyMzYsIDE2MywgOSwgMTQsIAorICAgIDIzNiwgMTYyLCA5LCAxNCwgMjM2LCAxNjEsIDksIDE0LCAyMzYsIDE2MCwgOSwgMTQsIDIzNiwgMTU5LCA5LCAxNCwgMjM2LCAKKyAgICAxNTgsIDksIDE0LCAyMzYsIDE1NywgOSwgMTQsIDIzNiwgMTU2LCA5LCAxNCwgMjM2LCAxNTUsIDksIDE0LCAyMzYsIDE1NCwgCisgICAgOSwgMTQsIDIzNiwgMTUzLCA5LCAxNCwgMjM2LCAxNTIsIDksIDE0LCAyMzYsIDE1MSwgOSwgMTQsIDIzNiwgMTUwLCA5LCAKKyAgICAxNCwgMjM2LCAxNDksIDksIDE0LCAyMzYsIDE0OCwgOSwgMTQsIDIzNiwgMTQ3LCA5LCAxNCwgMjM2LCAxNDYsIDksIDE0LCAKKyAgICAyMzYsIDE0NSwgOSwgMTQsIDIzNiwgMTQ0LCA5LCAxNCwgMjM2LCAxNDMsIDksIDE0LCAyMzYsIDE0MiwgOSwgMTQsIDIzNiwgCisgICAgMTQxLCA5LCAxNCwgMjM2LCAxNDAsIDksIDE0LCAyMzYsIDEzOSwgOSwgMTQsIDIzNiwgMTM4LCA5LCAxNCwgMjM2LCAxMzcsIAorICAgIDksIDE0LCAyMzYsIDEzNiwgOSwgMTQsIDIzNiwgMTM1LCA5LCAxNCwgMjM2LCAxMzQsIDksIDE0LCAyMzYsIDEzMywgOSwgCisgICAgMTQsIDIzNiwgMTMyLCA5LCAxNCwgMjM2LCAxMzEsIDksIDE0LCAyMzYsIDEzMCwgOSwgMTQsIDIzNiwgMTI5LCA5LCAxNCwgCisgICAgMjM2LCAxMjgsIDksIDE0LCAyMzYsIDEyNywgOSwgMTQsIDIzNiwgMTI2LCA5LCAxNCwgMjM2LCAxMjUsIDksIDE0LCAyMzYsIAorICAgIDEyNCwgOSwgMTQsIDIzNiwgMTIzLCA5LCAxNCwgMjM2LCAxMjIsIDksIDE0LCAyMzYsIDEyMSwgOSwgMTQsIDIzNiwgMTIwLCAKKyAgICA5LCAxNCwgMjM2LCAxMTksIDksIDE0LCAyMzYsIDExOCwgOSwgMTQsIDIzNiwgMTE3LCA5LCAxNCwgMjM2LCAxMTYsIDksIAorICAgIDE0LCAyMzYsIDExNSwgOSwgMTQsIDIzNiwgMTE0LCA5LCAxNCwgMjM2LCAxMTMsIDksIDE0LCAyMzYsIDExMiwgOSwgMTQsIAorICAgIDIzNiwgMTExLCA5LCAxNCwgMjM2LCAxMTAsIDksIDE0LCAyMzYsIDEwOSwgOSwgMTQsIDIzNiwgMTA4LCA5LCAxNCwgMjM2LCAKKyAgICAxMDcsIDksIDE0LCAyMzYsIDEwNiwgOSwgMTQsIDIzNiwgMTA1LCA5LCAxNCwgMjM2LCAxMDQsIDksIDE0LCAyMzYsIDEwMywgCisgICAgOSwgMTQsIDIzNiwgMTAyLCA5LCAxNCwgMjM2LCAxMDEsIDksIDE0LCAyMzYsIDEwMCwgOSwgMTQsIDIzNiwgOTksIDksIDE0LCAKKyAgICAyMzYsIDk4LCA5LCAxNCwgMjM2LCA5NywgOSwgMTQsIDIzNiwgOTYsIDksIDE0LCAyMzYsIDk1LCA5LCAxNCwgMjM2LCA5NCwgCisgICAgOSwgMTQsIDIzNiwgOTMsIDksIDE0LCAyMzYsIDkyLCA5LCAxNCwgMjM2LCA5MSwgOSwgMTQsIDIzNiwgOTAsIDksIDE0LCAKKyAgICAyMzYsIDg5LCA5LCAxNCwgMjM2LCA4OCwgOSwgMTQsIDIzNiwgODcsIDksIDE0LCAyMzYsIDg2LCA5LCAxNCwgMjM2LCA4NSwgCisgICAgOSwgMTQsIDIzNiwgODQsIDksIDE0LCAyMzYsIDgzLCA5LCAxNCwgMjM2LCA4MiwgOSwgMTQsIDIzNiwgODEsIDksIDE0LCAKKyAgICAyMzYsIDgwLCA5LCAxNCwgMjM2LCA3OSwgOSwgMTQsIDIzNiwgNzgsIDksIDE0LCAyMzYsIDc3LCA5LCAxNCwgMjM2LCA3NiwgCisgICAgOSwgMTQsIDIzNiwgNzUsIDksIDE0LCAyMzYsIDc0LCA5LCAxNCwgMjM2LCA3MywgOSwgMTQsIDIzNiwgNzIsIDksIDE0LCAKKyAgICAyMzYsIDcxLCA5LCAxNCwgMjM2LCA3MCwgOSwgMTQsIDIzNiwgNjksIDksIDE0LCAyMzYsIDY4LCA5LCAxNCwgMjM2LCA2NywgCisgICAgOSwgMTQsIDIzNiwgNjYsIDksIDE0LCAyMzYsIDY1LCA3LCA0LCAyNywgMjQ0LCAxMjUsIDcsIDQsIDI3LCAyNDQsIDEyMSwgCisgICAgNywgNCwgMjcsIDI0NCwgNzYsIDcsIDQsIDI3LCAyNDQsIDEyNCwgNywgNCwgMjcsIDI0NCwgMTIzLCA3LCA0LCAyNywgMTk5LCAKKyAgICAyMjIsIDkyLCAyMTcsIDE1MiwgNywgNCwgMjcsIDIxOCwgMTY4LCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMjgsIDM5LCAxNTAsIAorICAgIDQsIDI3LCAyMzEsIDU5LCAyNDUsIDIxMywgMTUwLCA0LCAyNywgMjMxLCA1OSwgMjM1LCAyMjcsIDE1MCwgNCwgMjcsIDIxMywgCisgICAgMTgwLCAyMjgsIDM5LCAxNTAsIDQsIDI3LCAyMzEsIDU5LCAyMTEsIDE2MCwgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDEsIAorICAgIDE1OCwgOTQsIDIyNSwgMTEsIDIzNSwgNTAsIDIxNCwgMTEsIDk0LCAyNywgMjExLCA2LCAyMTAsIDIzNCwgMjEwLCAyMzQsIAorICAgIDIyNSwgMjM5LCA5NCwgMSwgMjU0LCAxMzksIDI1MywgMTYyLCA5NCwgMSwgMjExLCAyNDcsIDI1NCwgMTcwLCA5NCwgMSwgCisgICAgMjExLCAyNDcsIDI0OCwgMTg5LCA5NCwgMSwgMjExLCAyNDcsIDI0MSwgMjM4LCA5NCwgMSwgMjExLCAyNDcsIDIzNCwgMjUwLCAKKyAgICA5NCwgMSwgMjExLCAyNDcsIDIzMywgOTQsIDk0LCAxLCAyMTEsIDI0NywgNDAsIDIzMSwgNjUsIDk0LCAxLCAyMTEsIDI0NywgCisgICAgMjIzLCA2NywgOTQsIDEsIDIxMSwgMjQ3LCAyMTcsIDM4LCA5NCwgMSwgMjU0LCAxMzksIDk2LCA1MCwgOTQsIDEsIDIyMCwgCisgICAgMjEsIDIsIDIyMCwgMjEsIDI0NywgMTIwLCA5NCwgMSwgMjIwLCAyMSwgMiwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMSwgCisgICAgMjIwLCAyMSwgMiwgMjQ4LCAyMDgsIDIyLCAyMjAsIDIxLCAyNDcsIDEyMCwgOTQsIDEsIDIyMCwgMjEsIDIsIDI0OCwgMjA4LCAKKyAgICAyMiwgMjE5LCAxNTksIDI0NywgMTIwLCA5NCwgMSwgMTEyLCAyLCAyMjUsIDIzOSwgOTQsIDEsIDExMiwgMiwgMjI0LCA3NiwgCisgICAgOTQsIDEsIDExMiwgMiwgMjMxLCAxNzEsIDk0LCAxLCAyNTIsIDI5LCAyLCAyNDgsIDIwNywgOTQsIDEsIDI0MiwgMjAyLCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDI0OCwgMTkwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDI0MSwgMjM5LCAyLCAyMzEsIDE3MSwgOTQsIAorICAgIDEsIDIxNCwgNCwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMTAsIDk4LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxNiwgMjMxLCAyLCAKKyAgICAyNDgsIDIwNywgOTQsIDEsIDIxMCwgMjM0LCAyLCAyNDgsIDIwNywgOTQsIDEsIDQwLCAyMzQsIDI1MSwgMiwgMjQ4LCAyMDcsIAorICAgIDk0LCAxLCAyMzQsIDI1MSwgMiwgMjQ4LCAyMDcsIDk0LCAxLCAyMzMsIDk1LCAyLCAyNDgsIDIwNywgOTQsIDEsIDIzMSwgCisgICAgNjYsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjI3LCAxOTUsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjIxLCAyNTAsIDIsIDI0OCwgCisgICAgMjA3LCA5NCwgMSwgNDAsIDIyNSwgMjIyLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNSwgMjIyLCAyLCAyNDgsIDIwNywgOTQsIAorICAgIDEsIDIxNSwgMTgwLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIyNCwgNDAsIDIsIDI0OCwgMjA3LCA5NCwgMSwgMjIzLCA2OCwgMiwgCisgICAgMjQ4LCAyMDcsIDk0LCAxLCAyMjAsIDIxLCAyLCAyNDgsIDIwNywgOTQsIDEsIDIxNywgMzksIDIsIDI0OCwgMjA3LCA5NCwgCisgICAgMSwgMjE0LCA0LCAyLCAyNDEsIDYxLCA5NCwgMSwgMjUyLCAyOSwgMiwgMjIzLCAxNjksIDk0LCAxLCAyMzQsIDI1MSwgMiwgCisgICAgMjIzLCAxNjksIDk0LCAxLCAyMjUsIDIyMiwgMiwgMjIzLCAxNjksIDk0LCAyNywgMTEyLCAyMzMsIDk0LCAxMCwgMSwgMTEyLCAKKyAgICAyMTIsIDQ3LCA1MywgMTcsIDEwLCAxLCAxMTIsIDIxMiwgNDcsIDQwLCAxNywgMTAsIDEsIDI1MiwgNjUsIDUzLCAxNywgMTAsIAorICAgIDEsIDI1MiwgNjUsIDQwLCAxNywgMTAsIDEsIDI1MiwgNjUsIDY1LCAxNywgMTAsIDEsIDI1MiwgNjUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyMjUsIDIwNiwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDYsIDQwLCAxNywgMTAsIDEsIDIyNSwgMjA2LCA2NSwgMTcsIAorICAgIDEwLCAxLCAyMjUsIDIwNiwgMTQ3LCAxNywgMTAsIDEsIDI1MiwgNTMsIDUzLCAxNywgMTAsIDEsIDI1MiwgNTMsIDQwLCAxNywgCisgICAgMTAsIDEsIDI1MiwgNTMsIDY1LCAxNywgMTAsIDEsIDI1MiwgNTMsIDE0NywgMTcsIDEwLCAxLCAyMTUsIDE0NywgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjE1LCAxNDcsIDQwLCAxNywgMTAsIDEsIDIxNSwgMTQ3LCA2NSwgMTcsIDEwLCAxLCAyMTUsIDE0NywgMTQ3LCAKKyAgICAxNywgMTAsIDEsIDIxNywgNiwgNTMsIDE3LCAxMCwgMSwgMjE3LCA2LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDYsIDY1LCAxNywgCisgICAgMTAsIDEsIDIxNywgNiwgMTQ3LCAxNywgMTAsIDEsIDIxNSwgMTQ5LCA1MywgMTcsIDEwLCAxLCAyMTUsIDE0OSwgNDAsIDE3LCAKKyAgICAxMCwgMSwgMjE1LCAxNDksIDY1LCAxNywgMTAsIDEsIDIxNSwgMTQ5LCAxNDcsIDE3LCAxMCwgMSwgMjEzLCAyNDksIDUzLCAKKyAgICAxNywgMTAsIDEsIDIxMywgMjQ5LCA0MCwgMTcsIDEwLCAxLCAyMTMsIDI0OSwgNjUsIDE3LCAxMCwgMSwgMjEzLCAyNDksIAorICAgIDE0NywgMTcsIDEwLCAxLCAyMjUsIDIwNCwgNTMsIDE3LCAxMCwgMSwgMjI1LCAyMDQsIDQwLCAxNywgMTAsIDEsIDIyNSwgCisgICAgMjA0LCA2NSwgMTcsIDEwLCAxLCAyMjUsIDIwNCwgMTQ3LCAxNywgMTAsIDEsIDI0NiwgNDQsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0NiwgNDQsIDQwLCAxNywgMTAsIDEsIDI0NiwgNDQsIDY1LCAxNywgMTAsIDEsIDI0NiwgNDQsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyMjcsIDE1NCwgNTMsIDE3LCAxMCwgMSwgMjI3LCAxNTQsIDQwLCAxNywgMTAsIDEsIDIyNywgMTU0LCA2NSwgMTcsIDEwLCAKKyAgICAxLCAyMjcsIDE1NCwgMTQ3LCAxNywgMTAsIDEsIDIxNywgMjcsIDUzLCAxNywgMTAsIDEsIDIxNywgMjcsIDQwLCAxNywgMTAsIAorICAgIDEsIDIxNywgMjcsIDY1LCAxNywgMTAsIDEsIDIxNywgMjcsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDI1LCA1MywgMTcsIDEwLCAKKyAgICAxLCAyMTcsIDI1LCA0MCwgMTcsIDEwLCAxLCAyMTcsIDI1LCA2NSwgMTcsIDEwLCAxLCAyMTcsIDI1LCAxNDcsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAxMzMsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTMzLCA0MCwgMTcsIDEwLCAxLCAyNDgsIDIwMiwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjQ4LCAyMDIsIDQwLCAxNywgMTAsIDEsIDI0NiwgNzEsIDUzLCAxNywgMTAsIDEsIDI0NiwgNzEsIDQwLCAxNywgCisgICAgMTAsIDEsIDI0OCwgMTMxLCA1MywgMTcsIDEwLCAxLCAyNDgsIDEzMSwgNDAsIDE3LCAxMCwgMSwgMjM1LCAxMjEsIDUzLCAKKyAgICAxNywgMTAsIDEsIDIzNSwgMTIxLCA0MCwgMTcsIDEwLCAxLCAyMjIsIDE3MiwgNTMsIDE3LCAxMCwgMSwgMjIyLCAxNzIsIAorICAgIDQwLCAxNywgMTAsIDEsIDIzNCwgMTc1LCA1MywgMTcsIDEwLCAxLCAyMzQsIDE3NSwgNDAsIDE3LCAxMCwgMSwgMjM0LCAKKyAgICAxNzUsIDY1LCAxNywgMTAsIDEsIDIzNCwgMTc1LCAxNDcsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDUzLCAxNywgMTAsIDEsIAorICAgIDI0MywgMTIzLCA0MCwgMTcsIDEwLCAxLCAyNDMsIDEyMywgNjUsIDE3LCAxMCwgMSwgMjQzLCAxMjMsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDIsIDEwMiwgNTMsIDE3LCAxMCwgMSwgMjQyLCAxMDIsIDQwLCAxNywgMTAsIDEsIDI0MiwgMTAyLCA2NSwgMTcsIAorICAgIDEwLCAxLCAyNDIsIDEwMiwgMTQ3LCAxNywgMTAsIDEsIDIyOSwgMywgNTMsIDE3LCAxMCwgMSwgMjI5LCAzLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMjksIDMsIDY1LCAxNywgMTAsIDEsIDIyOSwgMywgMTQ3LCAxNywgMTAsIDEsIDIyOCwgNjMsIDI0MiwgMjE5LCAKKyAgICA1MywgMTcsIDEwLCAxLCAyMjgsIDYzLCAyNDIsIDIxOSwgNDAsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDUzLCAxNywgMTAsIDEsIAorICAgIDIyMiwgMjE1LCA0MCwgMTcsIDEwLCAxLCAyMjIsIDIxNSwgNjUsIDE3LCAxMCwgMSwgMjIyLCAyMTUsIDE0NywgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIxOSwgMiwgNzksIDc3LCA1MywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMiwgNzksIDc3LCA0MCwgMTcsIDEwLCAKKyAgICAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDIsIDE3MiwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0MiwgMTcyLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQyLCAxNzIsIDE0NywgMTcsIDEwLCAxLCAKKyAgICAyNDEsIDIxOSwgMjQ3LCAxNDIsIDUzLCAxNywgMTAsIDEsIDI0MSwgMjE5LCAyNDcsIDE0MiwgNDAsIDE3LCAxMCwgMSwgCisgICAgMjQxLCAyMTksIDI0NywgMTQyLCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMjQ3LCAxNDIsIDE0NywgMTcsIDEwLCAxLCAKKyAgICA3OSwgMjUyLCAxMzMsIDUzLCAxNywgMTAsIDEsIDc5LCAyNTIsIDEzMywgNDAsIDE3LCAxMCwgMSwgNzksIDI1MiwgMTMzLCAKKyAgICAyLCAyMDIsIDc3LCA1MywgMTcsIDEwLCAxLCA3OSwgMjUyLCAxMzMsIDIsIDIwMiwgNzcsIDQwLCAxNywgMTAsIDE2LCA1OSwgCisgICAgNDgsIDEwLCAxNiwgNTksIDUxLCAxMCwgMTYsIDExMywgMTcwLCA0OCwgMTAsIDE2LCAxMTMsIDE3MCwgNTEsIDEwLCAxNiwgCisgICAgMTM0LCAxNzAsIDQ4LCAxMCwgMTYsIDEzNCwgMTcwLCA1MSwgMTAsIDE2LCAxMzQsIDE3MCwgMjI1LCA3LCAyNDYsIDEwNCwgCisgICAgNDgsIDEwLCAxNiwgMTM0LCAxNzAsIDIyNSwgNywgMjQ2LCAxMDQsIDUxLCAxMCwgMTYsIDI0NCwgMTEsIDE3MCwgNDgsIDEwLCAKKyAgICAxNiwgMjQ0LCAxMSwgMTcwLCA1MSwgMTAsIDE2LCA1MiwgNjcsIDI1MiwgMTQxLCA1MSwgMTAsIDE2LCAxMTMsIDE3MCwgCisgICAgMjEzLCAxODksIDQ4LCAxMCwgMTYsIDExMywgMTcwLCAyMTMsIDE4OSwgNTEsIDEwLCAxNiwgMjIyLCAyMzMsIDEwLCAxNiwgCisgICAgNCwgMjE3LCA4MSwgNDgsIDEwLCAxNiwgNCwgMjE3LCA4MSwgNTEsIDEwLCAxLCAyMjksIDgwLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjksIDgwLCA0MCwgMTcsIDEwLCAxLCAyMjksIDgwLCA2NSwgMTcsIDEwLCAxLCAyMjksIDgwLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMTA0LCA1MywgMTcsIDEwLCAxLCAxMDQsIDQwLCAxNywgMTAsIDEsIDIyNiwgMjM1LCA1MywgMTcsIDEwLCAxLCAyMjYsIAorICAgIDIzNSwgNDAsIDE3LCAxMCwgMSwgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDEsIDIxMCwgMjEzLCA0MCwgMTcsIDEwLCAxLCAKKyAgICAxMDQsIDIsIDIwMiwgNzcsIDUzLCAxNywgMTAsIDEsIDIxNCwgMCwgNTMsIDE3LCAxMCwgMSwgMjE0LCAwLCA0MCwgMTcsIAorICAgIDEwLCAxLCAyMzQsIDczLCAyMjYsIDIzNSwgNTMsIDE3LCAxMCwgMSwgMjM0LCA3MywgMjI2LCAyMzUsIDQwLCAxNywgMTAsIAorICAgIDEsIDIzNCwgNzMsIDIxMCwgMjEzLCA1MywgMTcsIDEwLCAxLCAyMzQsIDczLCAyMTAsIDIxMywgNDAsIDE3LCAxMCwgMSwgCisgICAgMTYwLCA1MywgMTcsIDEwLCAxLCAxNjAsIDQwLCAxNywgMTAsIDEsIDE2MCwgNjUsIDE3LCAxMCwgMSwgMTYwLCAxNDcsIDE3LCAKKyAgICAxMCwgMSwgMjE0LCAyMDcsIDIzNCwgMTg2LCAyMzQsIDczLCAxMTIsIDIzMSwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyMTQsIAorICAgIDIwNywgMjM0LCAxODYsIDIzNCwgNzMsIDExMiwgMjMxLCAxOTMsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxMTIsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgCisgICAgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjU0LCAyNDQsIDQwLCAKKyAgICAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEyLCAzMSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAKKyAgICAyLCAyMTIsIDMxLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDEwNCwgNTMsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAyLCAxMDQsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzUsIDUzLCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjI2LCAyMzUsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgCisgICAgMjEwLCAyMTMsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjEwLCAyMTMsIDQwLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgMjAyLCA3NywgMiwgMTYwLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE2MCwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAxNjAsIDY1LCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIAorICAgIDIwMiwgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgCisgICAgNzcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMTQsIDIwNywgMjM0LCA3MywgNzksIDIsIDIwMiwgNzcsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgNTMsIDE3LCAxMCwgMSwgMjQ0LCAxNjgsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAxLCAyNDQsIDE2OCwgNzksIDY1LCAxNywgMTAsIDEsIDI0NCwgMTY4LCA3OSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDEyMiwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjUyLCA1NSwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjUyLCAKKyAgICA1NSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgCisgICAgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDIzNCwgCisgICAgMTMwLCA1MywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTEyLCAyMzEsIAorICAgIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTUxLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDExMiwgMjMxLCAxOTMsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMTYsIDE5MywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgCisgICAgMjcsIDE1MSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAxMjIsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNjYsIAorICAgIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDEyMiwgNTMsIAorICAgIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAxNTEsIDUzLCAxNywgCisgICAgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIyLCAyNywgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjQ4LCAKKyAgICAyMTcsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDI0OCwgCisgICAgMjE3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIAorICAgIDY2LCA1MywgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgCisgICAgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0MiwgMjQ1LCAyLCAxNTEsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMTUxLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgCisgICAgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTIyLCA1MywgMTcsIDEwLCAKKyAgICAyNywgMjI0LCA4MiwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjQsIDgyLCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIAorICAgIDEwLCAyNywgMjI0LCA4MiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjM0LCAyNTEsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMjIsIDUzLCAxNywgMTAsIDI3LCAyMzQsIAorICAgIDI1MSwgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgCisgICAgMjcsIDIzNCwgMjUxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMzMsIDEwMywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIAorICAgIDI3LCAyMzMsIDEwMywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgNTMsIDE3LCAxMCwgMjcsIDY2LCAyLCA2NiwgNTMsIDE3LCAKKyAgICAxMCwgMjcsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgNjYsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgCisgICAgMjI4LCA2MywgMiwgMTUxLCA1MywgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgMjI4LCAKKyAgICA2MywgMiwgMjM0LCAxMzAsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgNTMsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI0MSwgCisgICAgMjE5LCAyLCAxNTEsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAxNTEsIDUzLCAxNywgMTAsIDI3LCA3OSwgMiwgMTIyLCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDIzNCwgMTMwLCA1MywgMTcsIAorICAgIDEwLCAyNywgNzksIDIsIDY2LCA1MywgMTcsIDEwLCAyNywgNzksIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAKKyAgICA3OSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMTYsIDIwMywgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgCisgICAgMjIzLCA5NiwgMiwgMjE4LCAyMywgMTEyLCA1MywgMTcsIDEwLCAyNywgMTEyLCAyMzEsIDE5MywgMiwgMjE4LCAyMywgMTEyLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgMjQ4LCAxODMsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyMzQsIAorICAgIDIwNCwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0NCwgMTY2LCA1MywgMTcsIDEwLCAyNywgMjIwLCA5NCwgMiwgCisgICAgMjQ4LCAxODUsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDk0LCAyLCAyMzQsIDIwNiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIAorICAgIDIsIDIxOCwgMjMsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDY2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCAKKyAgICA3NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDIyMywgOTYsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMTAsIDEwOSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI1MiwgNTUsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIxNywgOCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjEwLCAxMDksIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjE3LCA4LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDIxNiwgMTkzLCAyLCAyMjMsIDk2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjE2LCAxOTMsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIDIsIDIyOCwgNjMsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMTYsIDE5MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIAorICAgIDc5LCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDExMiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAyMzMsIAorICAgIDEwMywgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAorICAgIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTEyLCA0MCwgMTcsIDEwLCAyNywgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2MywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDIxMCwgMTA5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyMjgsIDYzLCA0MCwgMTcsIDEwLCAKKyAgICAyNywgMjI4LCA2MywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMTEyLCAyMzEsIDE5MywgMiwgMjE4LCAyMywgMTEyLCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIyMywgOTYsIAorICAgIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMjEwLCAxMDksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDQwLCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjI4LCA2MywgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgNzksIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDIwMiwgNzcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAKKyAgICAyMDIsIDc3LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIAorICAgIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMjAyLCA3NywgMiwgMjQxLCAyMTksIAorICAgIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNTIsIDU1LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyNTIsIDU1LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjQxLCAyMTksIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIAorICAgIDIxNywgOCwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIxNywgCisgICAgOCwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjE2LCAxOTMsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDY2LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMTIyLCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjM0LCAKKyAgICAxMzAsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIAorICAgIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgCisgICAgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMTIyLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDY2LCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjEwLCAxMTIsIDIsIDY2LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjU0LCAxOTcsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAKKyAgICAyNDQsIDE0MywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgCisgICAgMTQzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDI0NCwgMTQzLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgCisgICAgODIsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIAorICAgIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIzNCwgMjUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjM0LCAKKyAgICAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgCisgICAgNjYsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDEyMiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgCisgICAgNjUsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDY1LCAKKyAgICAxNywgMTAsIDI3LCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgCisgICAgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIAorICAgIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI0MSwgMjE5LCAyLCAyMTgsIAorICAgIDIzLCAxMTIsIDY1LCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDc5LCAyLCAyMzQsIDEzMCwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDc5LCAKKyAgICAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDc5LCAyLCAyMDIsIDc3LCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCA3OSwgCisgICAgMiwgMjAyLCA3NywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjUyLCA1NSwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjUyLCA1NSwgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIDIxNiwgMTkzLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMTYsIDE5MywgMiwgMjQxLCAyMTksIDE0NywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI3LCAyMjAsIDYwLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgMjMzLCAxMDMsIDE0NywgCisgICAgMTcsIDEwLCAyNywgMjM0LCAyNTEsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCA2NiwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCA2NiwgMTQ3LCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAyNDEsIDIxOSwgMTQ3LCAxNywgCisgICAgMTAsIDI3LCA3OSwgMiwgNjYsIDE0NywgMTcsIDEwLCAyNywgNzksIDIsIDI0MSwgMjE5LCAxNDcsIDE3LCAxMCwgMjcsIAorICAgIDIyMCwgOTQsIDIsIDI0NCwgMTY2LCAxNDcsIDE3LCAxMCwgMjcsIDIyMCwgOTQsIDIsIDI0OCwgMTg1LCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMCwgOTQsIDIsIDIzNCwgMjA2LCAxNDcsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDExMiwgMjMxLCAxOTMsIDUzLCAKKyAgICAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCAxMTIsIDIzMSwgMTkzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDUzLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTEyLCAKKyAgICAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgCisgICAgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDEyMiwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAxNTEsIDIsIDc5LCA1MywgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDExMiwgCisgICAgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDI3LCAyMzQsIDEzMCwgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA1MywgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNzksIDUzLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgCisgICAgMiwgMTEyLCAyMzEsIDE5MywgNTMsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCA3OSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgCisgICAgNjAsIDIsIDE1MSwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgNTMsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIAorICAgIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDUzLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAKKyAgICAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAKKyAgICAyLCAyMjMsIDk2LCA1MywgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDIyMywgOTYsIDUzLCAxNywgMTAsIDI3LCAyMTcsIAorICAgIDgxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyNTQsIDE5NywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA3OSwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIxLCAxNjcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNzksIAorICAgIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAxMjIsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMTUxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMTUxLCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjM0LCAxMzAsIDIsIDc5LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyMiwgMjcsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjQ4LCAyMTcsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgCisgICAgNzksIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDQwLCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCAyMjMsIDk2LCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgMjIzLCA5NiwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMjMsIDk2LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCA2NiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAyNDEsIDIxOSwgNjUsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDI0MSwgMjE5LCA2NSwgMTcsIAorICAgIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCAxNDcsIDE3LCAxMCwgCisgICAgMjcsIDIyMSwgMTY3LCAyLCAxMjIsIDE0NywgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDIzNCwgMTMwLCAxNDcsIDE3LCAKKyAgICAxMCwgMjcsIDIyMCwgNjAsIDIsIDE1MSwgMTQ3LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxMjIsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjIwLCA2MCwgMiwgMjM0LCAxMzAsIDE0NywgMTcsIDEwLCAyNywgMjE3LCA4MSwgMiwgNjYsIDE0NywgMTcsIDEwLCAKKyAgICAyNywgMjEwLCAxMTIsIDIsIDY2LCAxNDcsIDE3LCAxMCwgMjcsIDExMiwgMiwgMjQ0LCAxNjQsIDQwLCAxNywgMTAsIDI3LCAKKyAgICAxMTIsIDIsIDI0NCwgMTY0LCA1MywgMTcsIDIyNiwgMTQ2LCA0MywgMjI2LCAzLCAyMjYsIDE0NiwgNDQsIDIyNiwgMywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDEyMiwgMiwgMTUxLCA0MCwgCisgICAgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTIyLCAyLCAKKyAgICA2NiwgNjUsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAKKyAgICAyLCA2NiwgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4LCAyLCA2NiwgMiwgMjM0LCAxMzAsIDY1LCAxNywgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAxNTEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAxMjIsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDEyMiwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTIyLCAKKyAgICAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMjEsIAorICAgIDE2NywgMiwgMTUxLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCAxMjIsIAorICAgIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAyLCA2NiwgCisgICAgMiwgMTUxLCA2NSwgMTcsIDEwLCAyNywgMjIxLCAxNjcsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMSwgMTY3LCAKKyAgICAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIAorICAgIDIyMiwgMjcsIDIsIDEyMiwgMiwgMTIyLCA2NSwgMTcsIDEwLCAyNywgMjIyLCAyNywgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDIyMCwgNjAsIDIsIDEyMiwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMjAsIDYwLCAyLCAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIAorICAgIDIsIDIzNCwgMTMwLCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDIsIDIzNCwgMTMwLCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjIwLCA2MCwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjIwLCA2MCwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjQ4LCAyMTcsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAyMzQsIAorICAgIDEzMCwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyNDgsIDIxNywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgCisgICAgMjE3LCA4MSwgMiwgNjYsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDIxNywgODEsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMTcsIDgxLCAyLCA2NiwgMiwgNzksIDQwLCAKKyAgICAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgMTUxLCAyLCA2NiwgNDAsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgCisgICAgNjYsIDQwLCAxNywgMTAsIDI3LCAyNTQsIDE5NywgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjU0LCAxOTcsIDIsIAorICAgIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjQyLCAyNDUsIDIsIDY2LCAyLCA2NiwgNDAsIDE3LCAxMCwgCisgICAgMjcsIDI0MiwgMjQ1LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyNDIsIDI0NSwgMiwgNjYsIDIsIDExMiwgMjMxLCAKKyAgICAxOTMsIDQwLCAxNywgMTAsIDI3LCAyNDQsIDE0MywgMiwgMjM0LCAxMzAsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAKKyAgICAxNDMsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjQsIDgyLCAyLCA2NiwgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTIyLCAyLCA2NiwgCisgICAgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIAorICAgIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDE1MSwgNjUsIDE3LCAKKyAgICAxMCwgMjcsIDIzMywgMTAzLCAyLCAxNTEsIDIsIDE1MSwgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAyMzQsIDEzMCwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMjM0LCAxMzAsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjMzLCAKKyAgICAxMDMsIDIsIDY2LCAyLCAxMjIsIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIDIsIDEyMiwgNjUsIDE3LCAxMCwgCisgICAgMjcsIDY2LCAyLCAxMjIsIDIsIDE1MSwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxMjIsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgNjYsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgMTAsIAorICAgIDI3LCA2NiwgMiwgMTUxLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAyMzQsIDEzMCwgMiwgMTUxLCA2NSwgMTcsIAorICAgIDEwLCAyNywgNjYsIDIsIDIzNCwgMTMwLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDY2LCAyLCAxNTEsIDIsIDIzNCwgMTMwLCAKKyAgICA2NSwgMTcsIDEwLCAyNywgMjQxLCAyMTksIDIsIDY2LCAyLCAxNTEsIDY1LCAxNywgMTAsIDI3LCAyNDEsIDIxOSwgMiwgNjYsIAorICAgIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIAorICAgIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAxMCwgMjcsIDIyOCwgNjMsIDIsIDE1MSwgMiwgNjYsIDQwLCAxNywgCisgICAgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDY2LCA2NSwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMTIsIAorICAgIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgCisgICAgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAKKyAgICAyNywgNzksIDIsIDY2LCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1MiwgNTUsIDIsIDIzNCwgMTMwLCAyLCA3OSwgNDAsIAorICAgIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIxNywgOCwgMiwgMTUxLCAyLCAKKyAgICAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCAyMzQsIDEzMCwgMiwgNzksIDQwLCAxNywgMTAsIAorICAgIDI3LCAyMTcsIDgsIDIsIDIzNCwgMTMwLCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgMjE3LCA4LCAyLCA2NiwgCisgICAgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMTcsIDgsIDIsIDY2LCAyLCAxMTIsIDIzMSwgMTkzLCA0MCwgMTcsIDEwLCAyNywgCisgICAgMTUxLCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAxNTEsIDIsIDEyMiwgMiwgMTEyLCAyMzEsIDE5MywgNDAsIDE3LCAKKyAgICAxMCwgMjcsIDE1MSwgMiwgNjYsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAKKyAgICAxMzAsIDIsIDExMiwgMjMxLCAxOTMsIDQwLCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCAxMjIsIDIsIDc5LCA0MCwgMTcsIAorICAgIDEwLCAyNywgMjIwLCA2MCwgMiwgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI0OCwgMjE3LCAyLCAxMjIsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgNjYsIAorICAgIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgNzksIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA3OSwgMiwgMTUxLCAyLCAKKyAgICA3OSwgNDAsIDE3LCAxMCwgMjcsIDc5LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCA2NiwgMiwgNjYsIDIsIDc5LCAKKyAgICA0MCwgMTcsIDEwLCAyNywgMjI0LCA4MiwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTIyLCAKKyAgICAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyNCwgODIsIDIsIDY2LCAyLCAxMjIsIDY1LCAxNywgMTAsIDI3LCAyMzMsIDEwMywgCisgICAgMiwgMTIyLCAyLCA2NiwgNjUsIDE3LCAxMCwgMjcsIDI1NCwgMTk3LCAyLCA2NiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAKKyAgICAyMzQsIDI1MSwgMiwgNjYsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgMTUxLCAyLCAxMjIsIDY1LCAxNywgCisgICAgMTAsIDI3LCA2NiwgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgMiwgNjYsIAorICAgIDY1LCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDE1MSwgCisgICAgMiwgNjYsIDQwLCAxNywgMTAsIDI3LCAyMjgsIDYzLCAyLCAxNTEsIDIsIDEyMiwgNDAsIDE3LCAxMCwgMjcsIDE1MSwgMiwgCisgICAgMTIyLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDEyMiwgMiwgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDY2LCAyLCAKKyAgICAxNTEsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjQ0LCAxNDMsIDIsIDY2LCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDI1MiwgCisgICAgNTUsIDIsIDEyMiwgMiwgNzksIDQwLCAxNywgMTAsIDI3LCAyMzQsIDI1MSwgMiwgNjYsIDIsIDY2LCA2NSwgMTcsIDEwLCAKKyAgICAyNywgMjU0LCAxOTcsIDIsIDE1MSwgMiwgNjYsIDY1LCAxNywgMTAsIDI3LCAyMjIsIDI3LCAyLCA2NiwgMiwgNjYsIDY1LCAKKyAgICAxNywgMTAsIDI3LCAyMjEsIDE2NywgMiwgMjM0LCAxMzAsIDIsIDc5LCA0MCwgMTcsIDEwLCAyNywgMjI4LCA2MywgMiwgCisgICAgMTUxLCAyLCA3OSwgNDAsIDE3LCAxMCwgMjcsIDIyMiwgNCwgMjE0LCAxMjgsIDI1MywgMjM4LCAyMzQsIDQsIDIxOCwgMTMwLCAKKyAgICA1LCA1MywgMTcsIDEwLCAyNywgMjI0LCA3OCwgMjE0LCAxMjgsIDI1MywgMjM4LCAyMzQsIDQsIDIxOCwgMTMwLCA1LCA1MywgCisgICAgMTcsIDEwLCAyNywgMjU0LCAxNTMsIDUzLCAxNywgMTAsIDI3LCAyNTQsIDE4MywgNTMsIDE3LCAxMCwgMjcsIDIzMCwgMTUzLCAKKyAgICA1MywgMTcsIDEwLCAyNywgMjIyLCA1LCA1MywgMTcsIDEwLCAyNywgMjIzLCAxNDMsIDUzLCAxNywgMTAsIDI3LCAyNTQsIAorICAgIDE3MiwgNTMsIDE3LCAxMCwgMjcsIDIxMiwgNDksIDUzLCAxNywgMTAsIDI3LCAyMjIsIDQsIDUzLCAxNywgMTAsIDI3LCAKKyAgICAyMjIsIDMsIDI1NCwgMTcyLCAyMTIsIDQ4LCAxMCwgMjcsIDIzNSwgMTM0LCAyMjMsIDM0LCA1MCwgMTAsIDI3LCAyNTEsIAorICAgIDIzMCwgMjU0LCAzOSwgMjU0LCA0MCwgNDUsIDIyMSwgMTU2LCA0NSwgMjIxLCA0NSwgNDUsIDIyMCwgMjMzLCA0NSwgMjIwLCAKKyAgICAyMjIsIDQ1LCAyMjAsIDIxMSwgNDUsIDIyMCwgMjAwLCA0NSwgMjIwLCAxODksIDQ1LCAyMjAsIDE3OCwgNDUsIDIyMCwgCisgICAgMTY3LCA0NSwgMjIxLCAxNTUsIDQ1LCAyMjEsIDE0NCwgNDUsIDIyMSwgMTMzLCA0NSwgMjIxLCAxMjIsIDQ1LCAyMjEsIAorICAgIDExMSwgNDUsIDIyMSwgMTAwLCA0NSwgMjIxLCA4OSwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ5LCAyMTksIDIyNCwgCisgICAgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDEwOSwgMjQ5LCAyMTksIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDEwOSwgMjQzLCAKKyAgICAyMjksIDIxOCwgMTI5LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyNDksIDIyNiwgMjI0LCAxOTQsIDI0NCwgMjAsIAorICAgIDMxLCA2NywgMjIwLCAxNTAsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMzEsIDc4LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCAyMjQsIDEzLCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIDcxLCAyMzMsIDIwLCAxMjcsIAorICAgIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA3MSwgMjMzLCAyMCwgMjUxLCAxNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAKKyAgICAzMSwgNjcsIDIwMywgMjQ1LCAxNjMsIDM4LCAyNywgNDMsIDI0MiwgMjcsIDM4LCAyNywgNDQsIDI0MiwgMjcsIDM4LCA1MiwgCisgICAgMjE2LCA4OSwgNDMsIDI0MiwgMjcsIDM4LCA1MiwgMjE2LCA4OSwgNDQsIDI0MiwgMjcsIDM4LCAyMzEsIDIzMywgNDMsIAorICAgIDI0MiwgMjcsIDM4LCAyMzEsIDIzMywgNDQsIDI0MiwgMjcsIDM4LCAyNDksIDE5NywgMjMxLCAyMzIsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDExMywgNTksIDIzMywgNTYsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDI0NSwgMTYwLCAKKyAgICAyNDgsIDE1NiwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgMjQ1LCAxNTEsIDI0OCwgMTU2LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCAxMjEsIDIzMiwgMjEzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAyMTIsIDMyLCAxMjEsIDIzMiwgCisgICAgMjEzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjI2LCAzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCAKKyAgICA0NCwgMjI2LCAzLCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjQ5LCA5OSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAKKyAgICAyMCwgMzEsIDY3LCA0NCwgMjQ5LCA5OSwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjE2LCA2LCAyMjAsIAorICAgIDUzLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyMTYsIDYsIDIyMCwgNTMsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDMsIDg1LCAyMzMsIDIwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA4NSwgCisgICAgMjMzLCAyMCwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIDY3LCA0MywgNTIsIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAKKyAgICAyNDQsIDIwLCAzMSwgNjcsIDQ0LCA1MiwgMjU0LCAxMTAsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDMsIAorICAgIDI1NCwgMTEwLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQ0LCAyNTQsIDExMCwgMTI3LCAyMjQsIDE5NCwgCisgICAgMjQ0LCAyMCwgMzEsIDY3LCA0MywgMjQ5LCAxNjEsIDEyNywgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDI0OSwgCisgICAgMTYxLCAxMjcsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA3MSwgMjQ5LCAxNjEsIDEyNywgMjI0LCAxOTQsIAorICAgIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyNDksIDE2MSwgMTI3LCAyMjAsIDEzMSwgMjQ3LCAxMjAsIDcxLCAyMjAsIDEzMSwgCisgICAgMjQ3LCAxMjAsIDIyNCwgMTk0LCAyNDQsIDIwLCAzMSwgNjcsIDQzLCA0MiwgMTI3LCAyMjQsIDE5NCwgMjQ0LCAyMCwgMzEsIAorICAgIDY3LCA0NCwgNDIsIDEyNywgMjQ4LCAxNTUsIDIyNiwgMTE5LCAyNTAsIDE3MiwgMjI2LCAxMTksIDIxMiwgMzIsIDIyNiwgCisgICAgMTE5LCA1MiwgMjEyLCAzMiwgMjI2LCAxMTksIDI0OCwgMTU1LCAxMjEsIDIzMiwgMjEzLCAyNTAsIDE3MiwgMTIxLCAyMzIsIAorICAgIDIxMywgMjEyLCAzMiwgMTIxLCAyMzIsIDIxMywgNCwgMjQ5LCAyMTksIDQsIDEwOSwgMjQ5LCAyMTksIDQsIDI0MywgMjI5LCAKKyAgICAyMTgsIDEyOSwgNCwgMjIwLCAxNTAsIDQsIDI0OSwgMjI2LCA0LCAyMjQsIDEzLCA3OCwgNCwgMjQ1LCAzMSwgNzgsIDQsIAorICAgIDI0NSwgMTYwLCAyNDgsIDE1NiwgNCwgNDMsIDIyNiwgMywgNCwgNDQsIDIyNiwgMywgNCwgNDMsIDI0OSwgOTksIDEyNywgNCwgCisgICAgNDQsIDI0OSwgOTksIDEyNywgNCwgNDMsIDIxNiwgNiwgMjIwLCA1MywgMTI3LCA0LCA0NCwgMjE2LCA2LCAyMjAsIDUzLCAKKyAgICAxMjcsIDQsIDU0LCA1MCwgNCwgMjU0LCAxMjYsIDQsIDI1MywgMjE2LCA0LCA5NiwgNTAsIDQsIDI0MCwgMTY3LCA0LCAyMzMsIAorICAgIDE1LCA1MCwgNCwgMjQyLCAxMzAsIDUwLCA0LCAyNDUsIDk4LCA1MCwgNCwgMjIzLCA1MCwgMjE5LCA0NiwgNCwgMjQ3LCAKKyAgICAxMzIsIDUwLCA0LCAyMjUsIDE4MiwgNTAsIDQsIDI0OSwgMjE3LCAyNTMsIDIwNiwgMTAsIDI0NCwgMTY0LCA1MywgMTcsIAorICAgIDEwLCAyMTcsIDQ0LCAyLCAyNDQsIDE2NCwgNDgsIDEwLCAyNDgsIDE4MywgNTMsIDE3LCAxMCwgMjE3LCA3OCwgMjQ0LCAxLCAKKyAgICAxMCwgMjM0LCAyMDQsIDUzLCAxNywgMTAsIDI0NCwgMTY2LCA1MywgMTcsIDEwLCAyNDQsIDE2NiwgMTQ3LCAxNywgMTAsIAorICAgIDI0OCwgMTg1LCA1MywgMTcsIDEwLCAyNDgsIDE4NSwgMTQ3LCAxNywgMTAsIDIzNCwgMjA2LCA1MywgMTcsIDEwLCAyMzQsIAorICAgIDIwNiwgMTQ3LCAxNywgMTAsIDIyMCwgOTQsIDUzLCAxNywgMTAsIDIyMCwgOTQsIDE0NywgMTcsIDEwLCAyMTgsIDQ2LCA1MywgCisgICAgMTcsIDEwLCAyMTgsIDQ2LCAxNDcsIDE3LCAxMCwgMSwgMjAyLCA1MywgMTcsIDEwLCAxLCAxMTIsIDIsIDIzMSwgMjI4LCAKKyAgICA3NywgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMzEsIDIyOCwgNzcsIDQwLCAxNywgMTAsIDEsIDExMiwgMiwgMjAyLCA3NywgCisgICAgNTMsIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDc3LCA1MywgCisgICAgMTcsIDEwLCAxLCAyMTIsIDMxLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAxLCAxMTIsIDIsIDIwMiwgMjUyLCA0MywgNTMsIAorICAgIDE3LCAxMCwgMSwgMTEyLCAyLCAyMDIsIDI1MiwgNDMsIDQwLCAxNywgMTAsIDEsIDc5LCAyLCAyMDIsIDc3LCA1MywgMTcsIAorICAgIDEwLCAxLCA3OSwgMiwgMjAyLCA3NywgNDAsIDE3LCAxMCwgMSwgNzksIDIsIDIwMiwgNzcsIDY1LCAxNywgMTAsIDEsIDc5LCAKKyAgICAyLCAyMDIsIDc3LCAxNDcsIDE3LCAxMCwgMSwgMTEyLCA1MywgMTcsIDEwLCAxLCAxMTIsIDQwLCAxNywgMTAsIDEsIDI1MiwgCisgICAgNTUsIDUzLCAxNywgMTAsIDEsIDI1MiwgNTUsIDQwLCAxNywgMTAsIDEsIDI1MiwgNTUsIDY1LCAxNywgMTAsIDEsIDI1MiwgCisgICAgNTUsIDE0NywgMTcsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY1LCA1MywgMTcsIDEwLCAxLCAyMTcsIDgsIDIzMSwgMTY1LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMTcsIDgsIDUzLCAxNywgMTAsIDEsIDIxNywgOCwgNDAsIDE3LCAxMCwgMSwgMjE3LCA4LCA2NSwgCisgICAgMTcsIDEwLCAxLCAyMTcsIDgsIDE0NywgMTcsIDEwLCAxLCAyMTYsIDE5MywgNTMsIDE3LCAxMCwgMSwgMjE2LCAxOTMsIDQwLCAKKyAgICAxNywgMTAsIDEsIDIxNiwgMTkzLCA2NSwgMTcsIDEwLCAxLCAyMTYsIDE5MywgMTQ3LCAxNywgMTAsIDEsIDE1MSwgNTMsIAorICAgIDE3LCAxMCwgMSwgMTUxLCA0MCwgMTcsIDEwLCAxLCAxNTEsIDY1LCAxNywgMTAsIDEsIDE1MSwgMTQ3LCAxNywgMTAsIDEsIAorICAgIDEyMiwgNTMsIDE3LCAxMCwgMSwgMTIyLCA0MCwgMTcsIDEwLCAxLCAxMjIsIDY1LCAxNywgMTAsIDEsIDEyMiwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIzNCwgMTMwLCA1MywgMTcsIDEwLCAxLCAyMzQsIDEzMCwgNDAsIDE3LCAxMCwgMSwgMjM0LCAxMzAsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIzNCwgMTMwLCAxNDcsIDE3LCAxMCwgMSwgMjQ4LCAxOTYsIDUzLCAxNywgMTAsIDEsIDI0OCwgMTk2LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMTYsIDIwMywgNTMsIDE3LCAxMCwgMSwgMjE2LCAyMDMsIDQwLCAxNywgMTAsIDEsIDIyMywgOTYsIAorICAgIDUzLCAxNywgMTAsIDEsIDIyMywgOTYsIDQwLCAxNywgMTAsIDEsIDIxMCwgMTA5LCA1MywgMTcsIDEwLCAxLCAyMTAsIDEwOSwgCisgICAgNDAsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDUzLCAxNywgMTAsIDEsIDIyMSwgMTY3LCA0MCwgMTcsIDEwLCAxLCAyMjEsIAorICAgIDE2NywgNjUsIDE3LCAxMCwgMSwgMjIxLCAxNjcsIDE0NywgMTcsIDEwLCAxLCAyMjAsIDYwLCA1MywgMTcsIDEwLCAxLCAKKyAgICAyMjAsIDYwLCA0MCwgMTcsIDEwLCAxLCAyMjAsIDYwLCA2NSwgMTcsIDEwLCAxLCAyMjAsIDYwLCAxNDcsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyNywgNTMsIDE3LCAxMCwgMSwgMjIyLCAyNywgNDAsIDE3LCAxMCwgMSwgMjIyLCAyNywgNjUsIDE3LCAxMCwgMSwgCisgICAgMjIyLCAyNywgMTQ3LCAxNywgMTAsIDEsIDI0OCwgMjE3LCA1MywgMTcsIDEwLCAxLCAyNDgsIDIxNywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQ4LCAyMTcsIDY1LCAxNywgMTAsIDEsIDI0OCwgMjE3LCAxNDcsIDE3LCAxMCwgMSwgMjE3LCA4MSwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjE3LCA4MSwgNDAsIDE3LCAxMCwgMSwgMjE3LCA4MSwgNjUsIDE3LCAxMCwgMSwgMjE3LCA4MSwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIxMCwgMTEyLCA1MywgMTcsIDEwLCAxLCAyMTAsIDExMiwgNDAsIDE3LCAxMCwgMSwgMjEwLCAxMTIsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIxMCwgMTEyLCAxNDcsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDUzLCAxNywgMTAsIDEsIDI1NCwgMTk3LCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyNTQsIDE5NywgNjUsIDE3LCAxMCwgMSwgMjU0LCAxOTcsIDE0NywgMTcsIDEwLCAxLCAyNDIsIAorICAgIDI0NSwgNTMsIDE3LCAxMCwgMSwgMjQyLCAyNDUsIDQwLCAxNywgMTAsIDEsIDI0MiwgMjQ1LCA2NSwgMTcsIDEwLCAxLCAKKyAgICAyNDIsIDI0NSwgMTQ3LCAxNywgMTAsIDEsIDI0NCwgMTQzLCA1MywgMTcsIDEwLCAxLCAyNDQsIDE0MywgNDAsIDE3LCAxMCwgCisgICAgMSwgMjQ0LCAxNDMsIDY1LCAxNywgMTAsIDEsIDI0NCwgMTQzLCAxNDcsIDE3LCAxMCwgMSwgMjI0LCA4MiwgNTMsIDE3LCAKKyAgICAxMCwgMSwgMjI0LCA4MiwgNDAsIDE3LCAxMCwgMSwgMjI0LCA4MiwgNjUsIDE3LCAxMCwgMSwgMjI0LCA4MiwgMTQ3LCAxNywgCisgICAgMTAsIDEsIDIzNCwgMjUxLCA1MywgMTcsIDEwLCAxLCAyMzQsIDI1MSwgNDAsIDE3LCAxMCwgMSwgMjM0LCAyNTEsIDY1LCAKKyAgICAxNywgMTAsIDEsIDIzNCwgMjUxLCAxNDcsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDUzLCAxNywgMTAsIDEsIDIzMywgMTAzLCAKKyAgICA0MCwgMTcsIDEwLCAxLCAyMzMsIDEwMywgNjUsIDE3LCAxMCwgMSwgMjMzLCAxMDMsIDE0NywgMTcsIDEwLCAxLCA2NiwgNTMsIAorICAgIDE3LCAxMCwgMSwgNjYsIDQwLCAxNywgMTAsIDEsIDY2LCA2NSwgMTcsIDEwLCAxLCA2NiwgMTQ3LCAxNywgMTAsIDEsIDIyOCwgCisgICAgNjMsIDUzLCAxNywgMTAsIDEsIDIyOCwgNjMsIDQwLCAxNywgMTAsIDEsIDIyOCwgNjMsIDY1LCAxNywgMTAsIDEsIDIyOCwgCisgICAgNjMsIDE0NywgMTcsIDEwLCAxLCAyNDEsIDIxOSwgNTMsIDE3LCAxMCwgMSwgMjQxLCAyMTksIDQwLCAxNywgMTAsIDEsIAorICAgIDI0MSwgMjE5LCA2NSwgMTcsIDEwLCAxLCAyNDEsIDIxOSwgMTQ3LCAxNywgMTAsIDEsIDIxMiwgMzEsIDUzLCAxNywgMTAsIAorICAgIDEsIDIxMiwgMzEsIDQwLCAxNywgMTAsIDEsIDExMiwgMjMxLCAxOTMsIDUzLCAxNywgMTAsIDEsIDExMiwgMjMxLCAxOTMsIAorICAgIDQwLCAxNywgMTAsIDEsIDc5LCA1MywgMTcsIDEwLCAxLCA3OSwgNDAsIDE3LCAxMCwgMSwgNzksIDY1LCAxNywgMTAsIDEsIAorICAgIDc5LCAxNDcsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNTMsIDE3LCAxMCwgMjcsIAorICAgIDIzMywgMTAzLCAyLCAxMTIsIDIsIDIzMSwgMjI4LCA3NywgNDAsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAyLCAxMTIsIDIsIAorICAgIDIwMiwgNzcsIDUzLCAxNywgMTAsIDI3LCAyMzMsIDEwMywgMiwgMTEyLCAyLCAyMDIsIDc3LCA0MCwgMTcsIDEwLCAyNywgCisgICAgMjMzLCAxMDMsIDIsIDExMiwgMiwgMjAyLCAyNTIsIDQzLCA1MywgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgMiwgCisgICAgMjAyLCAyNTIsIDQzLCA0MCwgMTcsIDEwLCAyNywgMjMzLCAxMDMsIDIsIDExMiwgNTMsIDE3LCAxMCwgMjcsIDIzMywgMTAzLCAKKyAgICAyLCAxMTIsIDQwLCAxNywgMjEwLCA4NywgMjExLCAyNDUsIDIyOCwgNzMsIDIxOSwgMTgsIDEyNiwgMjQ1LCAzMSwgNzgsIAorICAgIDEyNiwgMjIzLCAyNTQsIDc4LCAxMjYsIDU0LCA1MCwgMTI2LCAyNDcsIDEzMiwgNTAsIDEyNiwgMjI1LCAxODIsIDUwLCAKKyAgICAxMjYsIDI1NCwgMTI2LCAxMjYsIDI1NCwgNTcsIDEyNiwgNDMsIDIyNiwgMywgMTI2LCA0NCwgMjI2LCAzLCAxMjYsIDI1MywgCisgICAgMjE2LCAxMjYsIDk2LCA1MCwgMTI2LCAyNDksIDIxOSwgMTI2LCAyNDAsIDE2NywgMTI2LCAyNDMsIDIyOSwgMjE4LCAxMjksIAorICAgIDEyNiwgMjE5LCA0NiwgMTI2LCAyMSwgMjEwLCA4NiwgMTI2LCAyMSwgMTEwLCAxMjYsIDIxLCAxMDUsIDEyNiwgMjEsIDE1OCwgCisgICAgMTI2LCAyMSwgMTYxLCAxMjYsIDIxLCAxODksIDEyNiwgMjEsIDE5NCwgMTI2LCAyMSwgMTk4LCAxMjYsIDIxLCAxOTUsIAorICAgIDEyNiwgMjEsIDIwMCwgMTI2LCAyNDksIDIyNiwgMTI2LCAyMjAsIDE1MCwgMTI2LCAyMzMsIDE1LCA1MCwgMTI2LCAyNDUsIAorICAgIDk4LCA1MCwgMTI2LCAyNDIsIDEzMCwgNTAsIDEyNiwgMjI0LCAxMywgNzgsIDEyNiwgMjQ5LCAyMTcsIDI1MywgMjA2LCAKKyAgICAxMjYsIDcsIDYsIDEsIDYxLCAxMjYsIDcsIDYsIDEsIDI1MywgMTU4LCAxMjYsIDcsIDYsIDEsIDI1MSwgNjYsIDEyNiwgNywgCisgICAgNiwgMSwgMjQ5LCA2MCwgMTI2LCA3LCA2LCAxLCA3NSwgMTI2LCA3LCA2LCAxLCAyNDUsIDYsIDEyNiwgNywgNiwgMSwgMjQzLCAKKyAgICAyMDIsIDEyNiwgNywgNiwgMSwgMjQyLCA2MCwgMTI2LCA3LCA2LCAxLCA3MywgMTI2LCA3LCA2LCAxLCAyMzUsIDE0NCwgCisgICAgMTI2LCA3LCA2LCAxLCAyMzUsIDIzLCAxMjYsIDcsIDYsIDEsIDE1NiwgMTI2LCA3LCA2LCAxLCAxOTMsIDEyNiwgNywgNiwgCisgICAgMSwgMjMwLCAyNSwgMTI2LCA3LCA2LCAxLCA3NiwgMTI2LCA3LCA2LCAxLCAyMjYsIDEwNSwgMTI2LCA3LCA2LCAxLCAyMjQsIAorICAgIDk2LCAxMjYsIDcsIDYsIDEsIDE1MywgMTI2LCA3LCA2LCAxLCAyMjIsIDkxLCAxMjYsIDcsIDYsIDEsIDIxNywgMTUyLCAKKyAgICAxMjYsIDcsIDYsIDEsIDcwLCAxMjYsIDcsIDYsIDEsIDIxNCwgMTA1LCAxMjYsIDcsIDYsIDEsIDIxMiwgOTgsIDEyNiwgNywgCisgICAgNiwgMSwgMjExLCAxNzgsIDEyNiwgNywgNiwgMSwgMjExLCAxMTcsIDEyNiwgNywgNiwgMSwgMjEwLCAxNTksIDEyNiwgNDMsIAorICAgIDQyLCAxMjcsIDEyNiwgMjIzLCA1MCwgMjE5LCA0NiwgMTI2LCA0NCwgNDIsIDEyNywgMTI2LCAyNTAsIDMxLCAyNTUsIDE0LCAKKyAgICAxMjYsIDEyMSwgMjMyLCAyMTMsIDEyNiwgMjQyLCAxMzcsIDI1NSwgMTQsIDEyNiwgNywgNCwgMSwgNjEsIDEyNiwgNywgNCwgCisgICAgMSwgMjUzLCAxNTgsIDEyNiwgNywgNCwgMSwgMjUxLCA2NiwgMTI2LCA3LCA0LCAxLCAyNDksIDYwLCAxMjYsIDcsIDQsIDEsIAorICAgIDc1LCAxMjYsIDcsIDQsIDEsIDI0NSwgNiwgMTI2LCA3LCA0LCAxLCAyNDMsIDIwMiwgMTI2LCA3LCA0LCAxLCAyNDIsIDYwLCAKKyAgICAxMjYsIDcsIDQsIDEsIDczLCAxMjYsIDcsIDQsIDEsIDIzNSwgMTQ0LCAxMjYsIDcsIDQsIDEsIDIzNSwgMjMsIDEyNiwgNywgCisgICAgNCwgMSwgMTU2LCAxMjYsIDcsIDQsIDEsIDE5MywgMTI2LCA3LCA0LCAxLCAyMzAsIDI1LCAxMjYsIDcsIDQsIDEsIDc2LCAKKyAgICAxMjYsIDcsIDQsIDEsIDIyNiwgMTA1LCAxMjYsIDcsIDQsIDEsIDIyNCwgOTYsIDEyNiwgNywgNCwgMSwgMTUzLCAxMjYsIDcsIAorICAgIDQsIDEsIDIyMiwgOTEsIDEyNiwgNywgNCwgMSwgMjE3LCAxNTIsIDEyNiwgNywgNCwgMSwgNzAsIDEyNiwgNywgNCwgMSwgCisgICAgMjE0LCAxMDUsIDEyNiwgNywgNCwgMSwgMjEyLCA5OCwgMTI2LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI2LCA3LCA0LCAxLCAKKyAgICAyMTEsIDExNywgMTI2LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI2LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjYsIDY3LCAyMzIsIAorICAgIDIxMywgMTI2LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjYsIDE4MiwgMTI2LCA0MywgNzEsIDIyNiwgMywgMTI2LCA0NCwgNzEsIAorICAgIDIyNiwgMywgMTAxLCAxMDksIDI0MywgMjI5LCAyMTgsIDEyOSwgMTAxLCA0MywgMjQ5LCAxNjEsIDEyNywgMTAxLCA0NCwgCisgICAgMjQ5LCAxNjEsIDEyNywgMTAxLCAxMDksIDI0OSwgMjE5LCAxMDEsIDU2LCAyMzAsIDIyNCwgMjQ3LCAxMjAsIDEwMSwgNTYsIAorICAgIDEsIDIxMSwgMjI3LCAxMDEsIDU2LCAxLCA0LCA2MSwgMTAxLCA1NiwgMSwgNCwgNzMsIDEwMSwgNTYsIDEsIDQsIDcwLCAKKyAgICAxMDEsIDU2LCAxLCA0LCA3NSwgMTAxLCA1NiwgMSwgNCwgNzYsIDEwMSwgNTYsIDEsIDQsIDE5MSwgMTAxLCA1NiwgMSwgNCwgCisgICAgMjEwLCAyMTIsIDEwMSwgNTYsIDEsIDQsIDIxMCwgMjQ0LCAxMDEsIDU2LCAxLCA0LCAyMTUsIDExOCwgMTAxLCAyMzQsIAorICAgIDIwMSwgMjI0LCAxNzMsIDIxOSwgMzEsIDc4LCAxMDEsIDU2LCAxLCA2MSwgMTAxLCA1NiwgMSwgNzMsIDEwMSwgNTYsIDEsIAorICAgIDcwLCAxMDEsIDU2LCAxLCA3NSwgMTAxLCA1NiwgMSwgNzYsIDEwMSwgNTYsIDEsIDE3NiwgMTAxLCA1NiwgMSwgMjM0LCA5MiwgCisgICAgMTAxLCA1NiwgMSwgMjMzLCAyMTcsIDEwMSwgNTYsIDEsIDIzNCwgMTgyLCAxMDEsIDU2LCAxLCAyMzQsIDI4LCAxMDEsIDU2LCAKKyAgICAxLCAyMDYsIDEwMSwgNTYsIDEsIDIxOSwgMTkxLCAxMDEsIDU2LCAxLCAyMTgsIDgzLCAxMDEsIDU2LCAxLCAyMjEsIDE4MSwgCisgICAgMTAxLCA1NiwgMSwgMjE5LCA1OCwgMTAxLCA1NiwgMSwgMjE3LCAxMDUsIDEwMSwgNTYsIDEsIDIxNiwgMTE3LCAxMDEsIDU2LCAKKyAgICAxLCAyMTUsIDExOCwgMTAxLCA1NiwgMSwgMjE3LCAyMiwgMTAxLCA1NiwgMSwgMTExLCAxMDEsIDU2LCAxLCAxOTcsIDEwMSwgCisgICAgNTYsIDEsIDIyOCwgMjMzLCAxMDEsIDU2LCAxLCAyMjcsIDIzNywgMTAxLCA1NiwgMSwgMjI5LCAxMDcsIDEwMSwgNTYsIDEsIAorICAgIDIyOCwgNzQsIDEwMSwgNTYsIDEsIDE2MiwgMTAxLCA1NiwgMSwgMjQxLCAxODAsIDEwMSwgNTYsIDEsIDI0MCwgMjIyLCAKKyAgICAxMDEsIDU2LCAxLCAyNDEsIDIzOCwgMTAxLCA1NiwgMSwgMjQxLCA2OCwgMTAxLCA1NiwgMSwgMTg0LCAxMDEsIDU2LCAxLCAKKyAgICAyMzAsIDIzMCwgMTAxLCA1NiwgMSwgMjMwLCAxMDIsIDEwMSwgNTYsIDEsIDIzMSwgOTEsIDEwMSwgNTYsIDEsIDIzMCwgCisgICAgMTYxLCAxMDEsIDU2LCAxLCAxOTEsIDEwMSwgNTYsIDEsIDIxMCwgMjEyLCAxMDEsIDU2LCAxLCAyMTAsIDI0NCwgMTAxLCAKKyAgICA1NiwgMSwgMjA1LCAxMDEsIDU2LCAxLCAyMjMsIDM1LCAxMDEsIDU2LCAxLCAyMjIsIDE0MCwgMTAxLCA1NiwgMSwgMjIzLCAKKyAgICAxMjgsIDEwMSwgNTYsIDEsIDIyMiwgMjExLCAxMDEsIDU2LCAxLCAyMTIsIDY1LCAxMDEsIDU2LCAxLCAyMzAsIDI1LCAxMDEsIAorICAgIDU2LCAyMTMsIDEzNSwgMjE5LCAzMSwgNzgsIDEwMSwgNTYsIDIyMCwgMTU1LCAyMTksIDMxLCA3OCwgMTAxLCAyNCwgMjQ0LCAKKyAgICAxMDMsIDEwMSwgMjQsIDEsIDIzNCwgNTgsIDEwMSwgMjQsIDEsIDIxOCwgMjE1LCAxMDEsIDI0LCAxLCAyMzQsIDUxLCAxMDEsIAorICAgIDI0LCAxLCAyMjgsIDIyNiwgMTAxLCAyNCwgMSwgMjI4LCAyMjQsIDEwMSwgMjQsIDEsIDIyOCwgMjIzLCAxMDEsIDI0LCAxLCAKKyAgICAyMTYsIDEwMSwgMTAxLCAyNCwgMSwgMjE4LCAyMDQsIDEwMSwgMjQsIDEsIDIyMywgMjYsIDEwMSwgMjQsIDEsIDIyMywgMjEsIAorICAgIDEwMSwgMjQsIDEsIDIyMywgMTgsIDEwMSwgMjQsIDEsIDIyMywgMTEsIDEwMSwgMjQsIDEsIDIyMywgNiwgMTAxLCAyNCwgMSwgCisgICAgMjIzLCAxLCAxMDEsIDI0LCAxLCAyMjMsIDEyLCAxMDEsIDI0LCAxLCAyMjMsIDI0LCAxMDEsIDI0LCAxLCAyMzAsIDIxNywgCisgICAgMTAxLCAyNCwgMSwgMjI1LCA5NSwgMTAxLCAyNCwgMSwgMjE4LCAyMTIsIDEwMSwgMjQsIDEsIDIyNSwgODQsIDEwMSwgMjQsIAorICAgIDEsIDIxOSwgMTQ4LCAxMDEsIDI0LCAxLCAyMTgsIDIwOSwgMTAxLCAyNCwgMSwgMjM2LCA1NiwgMTAxLCAyNCwgMSwgMjUwLCAKKyAgICA0NiwgMTAxLCAyNCwgMSwgMjE4LCAyMTksIDEwMSwgMjQsIDEsIDI1MCwgMTA2LCAxMDEsIDI0LCAxLCAyMzQsIDExMCwgCisgICAgMTAxLCAyNCwgMSwgMjE2LCAxNzMsIDEwMSwgMjQsIDEsIDIyNSwgMTMxLCAxMDEsIDI0LCAxLCAyNDEsIDE3MiwgMTAxLCAKKyAgICAyNCwgMSwgNjEsIDEwMSwgMjQsIDEsIDI1NCwgMjQzLCAxMDEsIDI0LCAxLCAxOTEsIDEwMSwgMjQsIDEsIDIxMSwgOTIsIAorICAgIDEwMSwgMjQsIDEsIDI0NSwgMTE3LCAxMDEsIDI0LCAxLCA3NSwgMTAxLCAyNCwgMSwgMjExLCAzNiwgMTAxLCAyNCwgMSwgCisgICAgMjExLCA0NywgMTAxLCAyNCwgMSwgNzYsIDEwMSwgMjQsIDEsIDIxMiwgNjUsIDEwMSwgMjQsIDEsIDIxMiwgNjIsIDEwMSwgCisgICAgMjQsIDEsIDIyNiwgMjM0LCAxMDEsIDI0LCAxLCAyMTAsIDI0NCwgMTAxLCAyNCwgMSwgNzAsIDEwMSwgMjQsIDEsIDIxMiwgCisgICAgMTEsIDEwMSwgMjQsIDEsIDIxMiwgMjIsIDEwMSwgMjQsIDEsIDIxMSwgMjUwLCAxMDEsIDI0LCAxLCAyMTAsIDIxMiwgMTAxLCAKKyAgICAyNCwgMSwgMjQ1LCA1NSwgMTAxLCAyNCwgMSwgMjExLCA4LCAxMDEsIDI0LCAxLCA3MywgMTI2LCAyNTAsIDE3NiwgNTAsIAorICAgIDEyNiwgMjI0LCAyMjgsIDUwLCAxMjYsIDIyOCwgNTIsIDUwLCAxMjYsIDIzMSwgMjMyLCAxMjYsIDI1MSwgMTM1LCAxMzAsIAorICAgIDEyNiwgMjExLCA0MCwgNTAsIDEyNiwgMjExLCAyMTcsIDUwLCAxMDEsIDI0NCwgMTgsIDE5MiwgMjEzLCAyMzksIDEwMSwgCisgICAgMTQwLCA3NCwgMTAxLCAyMTQsIDE1MywgNzQsIDEwMSwgOTcsIDc0LCAxMDEsIDI0NiwgMTA0LCA3NCwgMTAxLCA4NSwgMjE4LCAKKyAgICAyMzQsIDEwMSwgNzEsIDI1MCwgMzUsIDIzNSwgMjA0LCAyNTQsIDk5LCAyNTQsIDEyMCwgMjM1LCAyMDQsIDI1NCwgOTksIAorICAgIDIyMCwgMTM3LCAyMzUsIDIwNCwgMjU0LCA5OSwgMjE2LCAyMzYsIDIyNiwgMjQ5LCAyMjMsIDcyLCAyNTAsIDE0MiwgMjIzLCAKKyAgICA3MiwgMjUwLCAxNDIsIDYyLCA1NywgMywgMjUzLCAxNDIsIDYxLCA2MiwgNTcsIDMsIDI1MywgMTExLCA3NSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDEyMCwgNzMsIDYyLCA1NywgMywgMjUzLCA4OCwgNzYsIDYyLCA1NywgMywgMjUzLCAxMzgsIDcwLCA2MiwgNTcsIAorICAgIDMsIDI1MywgMTU3LCAyNDgsIDIyMSwgNjIsIDU3LCAzLCAyNTMsIDEwNCwgMjQ4LCA5MCwgNjIsIDU3LCAzLCAyNTMsIDE0NCwgCisgICAgMjQ4LCAzLCA2MiwgNTcsIDMsIDI1MywgMTM0LCAyNDcsIDE0NSwgNjIsIDU3LCAzLCAyNTMsIDk4LCAyNDYsIDc4LCA2MiwgCisgICAgNTcsIDMsIDI1MywgOTIsIDIzNSwgMTQxLCA2MiwgNTcsIDMsIDI1MywgMTAzLCAyMzUsIDEyNiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDExMywgMjM1LCA2OCwgNjIsIDU3LCAzLCAyNTMsIDg0LCAyMzUsIDUxLCA2MiwgNTcsIDMsIDI1MywgNzIsIDE3NiwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEwNSwgMjM0LCAxODIsIDYyLCA1NywgMywgMjUzLCA4MiwgMjM0LCA5MiwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDc5LCAyMzQsIDI4LCA2MiwgNTcsIDMsIDI1MywgNjgsIDIzMywgMjE3LCA2MiwgNTcsIDMsIDI1MywgNjksIDE4NCwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEzNSwgMjMxLCA5MSwgNjIsIDU3LCAzLCAyNTMsIDc2LCAyMzAsIDIzMCwgNjIsIDU3LCAzLCAyNTMsIAorICAgIDEzMywgMjMwLCAxNjEsIDYyLCA1NywgMywgMjUzLCAxMjUsIDIzMCwgMTAyLCA2MiwgNTcsIDMsIDI1MywgMTQ2LCAxOTcsIAorICAgIDYyLCA1NywgMywgMjUzLCAxMjQsIDIyOSwgMTA3LCA2MiwgNTcsIDMsIDI1MywgMTE4LCAyMjgsIDIzMywgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDk3LCAyMjgsIDc0LCA2MiwgNTcsIDMsIDI1MywgOTQsIDIyNywgMjM3LCA2MiwgNTcsIDMsIDI1MywgMTUzLCAxOTAsIAorICAgIDYyLCA1NywgMywgMjUzLCA3NywgMjI1LCAyMjEsIDYyLCA1NywgMywgMjUzLCAxMTAsIDIyNSwgMTA4LCA2MiwgNTcsIDMsIAorICAgIDI1MywgMTM3LCAyMjUsIDE2LCA2MiwgNTcsIDMsIDI1MywgOTksIDIyNCwgMTUwLCA2MiwgNTcsIDMsIDI1MywgMTMyLCAKKyAgICAyMjQsIDg4LCA2MiwgNTcsIDMsIDI1MywgNzEsIDIyNCwgNjksIDYyLCA1NywgMywgMjUzLCAxMjcsIDIyNCwgNTMsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMTYsIDIyNCwgNDIsIDYyLCA1NywgMywgMjUzLCA4OSwgMjA1LCA2MiwgNTcsIDMsIDI1MywgMTIxLCAKKyAgICAyMjMsIDEyOCwgNjIsIDU3LCAzLCAyNTMsIDk2LCAyMjMsIDM1LCA2MiwgNTcsIDMsIDI1MywgMTU1LCAyMjIsIDIxMSwgNjIsIAorICAgIDU3LCAzLCAyNTMsIDEyMiwgMjIyLCAxNDAsIDYyLCA1NywgMywgMjUzLCAxMTcsIDIwNiwgNjIsIDU3LCAzLCAyNTMsIDE0MCwgCisgICAgMjIxLCAxODEsIDYyLCA1NywgMywgMjUzLCAxMDgsIDIxOSwgMTkxLCA2MiwgNTcsIDMsIDI1MywgMTM2LCAyMTksIDU4LCAKKyAgICA2MiwgNTcsIDMsIDI1MywgOTEsIDIxOCwgODMsIDYyLCA1NywgMywgMjUzLCA5MCwgMjE3LCAxMDUsIDYyLCA1NywgMywgCisgICAgMjUzLCAxNTEsIDIxNywgMjIsIDYyLCA1NywgMywgMjUzLCAxMTIsIDIxNiwgMTE3LCA2MiwgNTcsIDMsIDI1MywgMTQ5LCAKKyAgICAxMTEsIDYyLCA1NywgMywgMjUzLCA4MCwgMjE1LCAxMTgsIDYyLCA1NywgMywgMjUzLCA5NSwgMjEyLCA2NSwgNjIsIDU3LCAKKyAgICAzLCAyNTMsIDc0LCAyMTIsIDIyLCA2MiwgNTcsIDMsIDI1MywgMTA5LCAyMTEsIDI1MCwgNjIsIDU3LCAzLCAyNTMsIDEwNywgCisgICAgMjExLCAyMjcsIDYyLCA1NywgMywgMjUzLCAxMzEsIDIxMCwgMTE2LCA2MiwgNTcsIDMsIDI1MywgNzUsIDIxMCwgOTQsIDYyLCAKKyAgICA1NywgMywgMjUzLCAxMjgsIDIxMCwgMjMsIDYyLCA1NywgMywgMjUzLCAxMjMsIDI1NSwgNzUsIDYyLCA1NywgMywgMjUzLCAKKyAgICAxMDYsIDI1NSwgNzQsIDYyLCA1NywgMywgMjUzLCA2NSwgMjUzLCAxOTIsIDYyLCA1NywgMywgMjUzLCA3OCwgMjQ2LCA0NiwgCisgICAgNjIsIDU3LCAzLCAyNTMsIDYxLCAyNDYsIDQ1LCA2MiwgNTcsIDMsIDI1MywgMTAxLCAyMjcsIDE3NCwgNjIsIDU3LCAzLCAKKyAgICAyNTMsIDExOSwgMjI0LCAxNDgsIDYyLCA1NywgMywgMjUzLCA4NywgMjI0LCAxNTIsIDYyLCA1NywgMywgMjUzLCA3MywgCisgICAgMjIzLCAxODYsIDYyLCA1NywgMywgMjUzLCAxMTUsIDIyMywgMTg1LCA2MiwgNTcsIDMsIDI1MywgODEsIDIyMiwgMjEwLCAKKyAgICA2MiwgNTcsIDMsIDI1MywgODMsIDIxNywgMTAyLCA2MiwgNTcsIDMsIDI1MywgNjMsIDIxNSwgNzgsIDYyLCA1NywgMywgCisgICAgMjUzLCA2MCwgMTA1LCA2MiwgNTcsIDE2LCAyNTMsIDEzMCwgNjIsIDU3LCAxNiwgMjUzLCAxMjksIDYyLCA1NywgMTYsIAorICAgIDI1MywgMTI2LCA2MiwgNTcsIDE2LCAyNTMsIDExNCwgNjIsIDU3LCAxNiwgMjUzLCAxMDIsIDYyLCA1NywgMTYsIDI1MywgCisgICAgMTAwLCA2MiwgNTcsIDE2LCAyNTMsIDkzLCA2MiwgNTcsIDE2LCAyNTMsIDg2LCA2MiwgNTcsIDE2LCAyNTMsIDg1LCA2MiwgCisgICAgNTcsIDE2LCAyNTMsIDcwLCA2MiwgNTcsIDE2LCAyNTMsIDY3LCA2MiwgNTcsIDE2LCAyNTMsIDY2LCA2MiwgNTcsIDE2LCAKKyAgICAyNTMsIDY0LCA2MiwgNTcsIDE2LCAyNTMsIDYyLCA2MiwgNTcsIDEwNiwgMjUzLCA1OSwgMjMxLCAxODUsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDU4LCAyMTEsIDIyMSwgNjIsIDU3LCAxMDYsIDI1MywgNTcsIDI0OCwgNzQsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDU2LCAyNDUsIDk1LCA2MiwgNTcsIDEwNiwgMjUzLCA1NSwgMjMxLCAxNTksIDYyLCA1NywgMTA2LCAyNTMsIDU0LCAyMTgsIAorICAgIDE2MiwgNjIsIDU3LCAxMDYsIDI1MywgNTMsIDI0NSwgMzcsIDYyLCA1NywgMTA2LCAyNTMsIDUyLCAyMjMsIDE1MywgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgNTEsIDIyMCwgNjIsIDYyLCA1NywgMTA2LCAyNTMsIDUwLCAyNDEsIDIzNywgNjIsIDU3LCAxMDYsIAorICAgIDI1MywgNDksIDIxOSwgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDQ4LCAyNTEsIDIwMywgNjIsIDU3LCAxMDYsIDI1MywgNDcsIAorICAgIDI0OSwgMTQ1LCA2MiwgNTcsIDEwNiwgMjUzLCA0NiwgMjUxLCAxMTUsIDYyLCA1NywgMTA2LCAyNTMsIDQ1LCAyMTIsIDIsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDQ0LCAyNTIsIDEzNiwgNjIsIDU3LCAxMDYsIDI1MywgNDMsIDIyNiwgMjA1LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCA0MiwgMjE4LCAyNTQsIDYyLCA1NywgMTA2LCAyNTMsIDQxLCAyNDksIDY4LCA2MiwgNTcsIDIzMCwgMTQyLCAKKyAgICAyNTMsIDQwLCAyMzQsIDIyNCwgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAzOSwgMjM0LCAyMzIsIDYyLCA1NywgMTA2LCAyNTMsIAorICAgIDM4LCAyMjYsIDIxOCwgNjIsIDU3LCAxMDYsIDI1MywgMzcsIDIxMSwgMjM2LCA2MiwgNTcsIDEwNiwgMjUzLCAzNiwgNjIsIAorICAgIDU3LCAyMzAsIDE0MiwgMjUzLCAzNSwgMjU0LCAxNywgNjIsIDU3LCAyMzAsIDE0MiwgMjUzLCAzNCwgMjMxLCA1MiwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgMzMsIDI1MSwgMTM0LCA2MiwgNTcsIDEwNiwgMjUzLCAzMiwgMjQyLCAxNjYsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDMxLCA2MiwgNTcsIDEwNiwgMjUzLCAzMCwgMjExLCAyMTIsIDYyLCA1NywgMTA2LCAyNTMsIDI5LCA2MiwgNTcsIAorICAgIDEwNiwgMjUzLCAyOCwgNjIsIDU3LCAxMDYsIDI1MywgMjcsIDI0MCwgMjQ4LCA2MiwgNTcsIDEwNiwgMjUzLCAyNiwgNjIsIAorICAgIDU3LCAxMDYsIDI1MywgMjUsIDYyLCA1NywgMTA2LCAyNTMsIDI0LCA2MiwgNTcsIDIzMCwgMTQyLCAyNTMsIDIyLCAyMTUsIAorICAgIDkyLCA2MiwgNTcsIDEwNiwgMjUzLCAyMSwgNjIsIDU3LCAxMDYsIDI1MywgMjAsIDYyLCA1NywgMTA2LCAyNTMsIDE5LCAKKyAgICAyNDksIDI1MCwgNjIsIDU3LCAxMDYsIDI1MywgMTgsIDYyLCA1NywgMTA2LCAyNTMsIDE3LCA2MiwgNTcsIDEwNiwgMjUzLCAKKyAgICAxNiwgMjQzLCA5MywgNjIsIDU3LCAxMDYsIDI1MywgMTUsIDI1NCwgNCwgNjIsIDU3LCAxMDYsIDI1MywgMTQsIDYyLCA1NywgCisgICAgMTA2LCAyNTMsIDEzLCA2MiwgNTcsIDEwNiwgMjUzLCAxMiwgNjIsIDU3LCAxMDYsIDI1MywgMTEsIDYyLCA1NywgMTA2LCAKKyAgICAyNTMsIDEwLCA2MiwgNTcsIDEwNiwgMjUzLCA5LCA2MiwgNTcsIDEwNiwgMjUzLCA4LCA2MiwgNTcsIDEwNiwgMjUzLCA3LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUzLCA2LCA2MiwgNTcsIDEwNiwgMjUzLCA1LCAyMzAsIDEzNCwgNjIsIDU3LCAxMDYsIDI1MywgNCwgCisgICAgNjIsIDU3LCAxMDYsIDI1MywgMywgMjE1LCAyMzUsIDYyLCA1NywgMTA2LCAyNTMsIDIsIDYyLCA1NywgMTA2LCAyNTMsIDEsIAorICAgIDYyLCA1NywgMTA2LCAyNTMsIDAsIDYyLCA1NywgMTA2LCAyNTIsIDI1NSwgNjIsIDU3LCAxMDYsIDI1MiwgMjU0LCA2MiwgCisgICAgNTcsIDEwNiwgMjUyLCAyNTMsIDYyLCA1NywgMTA2LCAyNTIsIDI1MiwgNjIsIDU3LCAxMDYsIDI1MiwgMjUxLCA2MiwgNTcsIAorICAgIDEwNiwgMjUyLCAyNTAsIDYyLCA1NywgMTA2LCAyNTIsIDI0OSwgNjIsIDU3LCAxMDYsIDI1MiwgMjQ4LCA2MiwgNTcsIDEwNiwgCisgICAgMjUyLCAyNDcsIDI0MSwgMjExLCA2MiwgNTcsIDEwNiwgMjUyLCAyMjYsIDI0NCwgMjgsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIyMywgMjUyLCAxMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxOCwgMjE5LCA1LCA2MiwgNTcsIDEwNiwgMjUyLCAyMTcsIDc0LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAyMTYsIDYyLCA1NywgMTA2LCAyNTIsIDIxNSwgMjE3LCAyMzYsIDYyLCA1NywgMTA2LCAyNTIsIAorICAgIDIxNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjEzLCA2MiwgNTcsIDEwNiwgMjUyLCAyMTIsIDIxMSwgMjU0LCAyNTAsIDEzOSwgCisgICAgNjIsIDU3LCAxMDYsIDI1MiwgMjExLCAyNTAsIDEzOSwgNjIsIDU3LCAxMDYsIDI1MiwgMjEwLCAyNTAsIDE0MCwgMjQzLCAKKyAgICAyNTUsIDYyLCA1NywgMTA2LCAyNTIsIDIwOSwgMjEyLCAwLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDgsIDYyLCA1NywgMTA2LCAKKyAgICAyNTIsIDIwNywgNjIsIDU3LCAyMzAsIDE0MiwgMjUyLCAyMDYsIDI0NywgMTk4LCA2MiwgNTcsIDEwNiwgMjUyLCAyMDUsIAorICAgIDYyLCA1NywgMTA2LCAyNTIsIDIwNCwgNjIsIDU3LCAxMDYsIDI1MiwgMjAyLCA2MiwgNTcsIDEwNiwgMjUyLCAyMDEsIDYyLCAKKyAgICA1NywgMTA2LCAyNTIsIDIwMCwgNjIsIDU3LCAxMDYsIDI1MiwgMTk5LCAyNDgsIDE1OSwgNjIsIDU3LCAxMDYsIDI1MiwgCisgICAgMTk4LCA2MiwgNTcsIDEwNiwgMjUyLCAxOTcsIDYyLCA1NywgMTA2LCAyNTIsIDE5NiwgNjIsIDU3LCAxMDYsIDI1MiwgMTk1LCAKKyAgICA2MiwgNTcsIDEwNiwgMjUyLCAxOTQsIDYyLCA1NywgMTA2LCAyMTMsIDE4NiwgMjUzLCAyMywgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDI0NiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0NSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKKyAgICAyNTIsIDI0NCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAorICAgIDI0MiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDI0MCwgCisgICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzOCwgNjIsIDU3LCAKKyAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNiwgNjIsIDU3LCAxMDYsIAorICAgIDIxMywgMTg2LCAyNTIsIDIzNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzNCwgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDIzMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAKKyAgICAyNTIsIDIzMSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIzMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIAorICAgIDIyOSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyOCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNywgCisgICAgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNSwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyNCwgNjIsIDU3LCAKKyAgICAxMDYsIDIxMywgMTg2LCAyNTIsIDIyMiwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIyMSwgNjIsIDU3LCAxMDYsIAorICAgIDIxMywgMTg2LCAyNTIsIDIyMCwgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDIxOSwgNjIsIDU3LCAxMDYsIDIxMywgCisgICAgMTg2LCAyNTIsIDIwMywgNjIsIDU3LCAxMDYsIDIxMywgMTg2LCAyNTIsIDE5MywgMjU0LCAyMzYsIDIxMSwgMjA5LCAyMjAsIAorICAgIDEzOCwgMjMyLCAyMTMsIDI1NCwgMjM2LCAyMTEsIDIwOSwgMjIwLCAxMzgsIDI0NywgMTIwLCAyNTQsIDIzNiwgMjUwLCAKKyAgICAxMzAsIDc4LCAyNTQsIDIzNiwgNTQsIDExMCwgMjU0LCAyMzYsIDU0LCAxMDUsIDI1NCwgMjM2LCA1NCwgMTU4LCAyNTQsIAorICAgIDIzNiwgNTQsIDE2MSwgMjU0LCAyMzYsIDU0LCAxODksIDI1NCwgMjM2LCA1NCwgMTk0LCAyNTQsIDIzNiwgNTQsIDE5OCwgCisgICAgMjU0LCAyMzYsIDU0LCAxOTUsIDI1NCwgMjM2LCA1NCwgMjAwLCAyNTQsIDIzNiwgNTQsIDIxNiwgMjQ3LCAyNTQsIDIzNiwgCisgICAgNTQsIDIxNSwgNzMsIDI1NCwgMjM2LCA1NCwgMjE2LCAxNjIsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxNSwgMjU0LCAyMzYsIDU0LCAKKyAgICAyNDQsIDExNCwgMjU0LCAyMzYsIDU0LCAyMTksIDExMSwgMjU0LCAyMzYsIDU0LCAyMjAsIDExNiwgMjU0LCAyMzYsIDU0LCAKKyAgICAyNDUsIDE4NCwgMjU0LCAyMzYsIDU0LCAyMjgsIDE5NSwgMjU0LCAyMzYsIDU0LCAxMjMsIDI0MCwgMjEwLCAyNTQsIDIzNiwgCisgICAgNTQsIDExMywgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMTM0LCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDQsIDExLCAKKyAgICAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyNDQsIDgxLCAyNDAsIDIxMCwgMjU0LCAyMzYsIDU0LCAyMTksIDEyNSwgMjQwLCAKKyAgICAyMTAsIDI1NCwgMjM2LCA1NCwgMjIwLCAxMjIsIDI0MCwgMjEwLCAyNTQsIDIzNiwgNTQsIDI0NSwgMTkzLCAyNDAsIDIxMCwgCisgICAgMjU0LCAyMzYsIDU0LCAyMjgsIDIwMCwgMjQwLCAyMTAsIDI1NCwgMjM2LCA1NCwgMTIzLCAyMTYsIDE0NywgMjU0LCAyMzYsIAorICAgIDU0LCAxMTMsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDEzNCwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMSwgCisgICAgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCA4MSwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjE5LCAxMjUsIDIxNiwgCisgICAgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyMCwgMTIyLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyNDUsIDE5MywgMjE2LCAxNDcsIAorICAgIDI1NCwgMjM2LCA1NCwgMjI4LCAyMDAsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjU0LCAKKyAgICAyMzYsIDU0LCAyMTUsIDc0LCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMTYsIDE2MywgMjE2LCAxNDcsIDI1NCwgMjM2LCAKKyAgICA1NCwgMjQ0LCAxNiwgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ0LCAxMTUsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIAorICAgIDIxOSwgMTEyLCAyMTYsIDE0NywgMjU0LCAyMzYsIDU0LCAyMjAsIDExNywgMjE2LCAxNDcsIDI1NCwgMjM2LCA1NCwgMjQ1LCAKKyAgICAxODUsIDIxNiwgMTQ3LCAyNTQsIDIzNiwgNTQsIDIyOCwgMTk2LCAyMTYsIDE0NywgMjU0LCAyMzYsIDIxMiwgMTQsIDI1MiwgCisgICAgMTI4LCAyMTQsIDE3MywgMjU0LCAyMzYsIDIxMiwgMTQsIDI0NCwgOTIsIDIxOCwgNTksIDI1NCwgMjM2LCAyMTIsIDE0LCAKKyAgICAyMjEsIDE3NiwgMjE4LCA1OSwgMjU0LCAyMzYsIDIxMiwgMTQsIDIxNiwgMTY5LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjEyLCAKKyAgICAxNCwgMjQ0LCA0LCAyMTgsIDU5LCAyNTQsIDIzNiwgMjQ2LCA4MSwgMjMxLCA5MCwgMjQ0LCA5MiwgMjE4LCA1OSwgMjU0LCAKKyAgICAyMzYsIDIzMiwgMTk5LCAyMzEsIDkwLCAyNDQsIDkyLCAyMTgsIDU5LCAyNTQsIDIzNiwgMjMxLCA5MCwgMjIxLCAxNzYsIAorICAgIDIxOCwgNTksIDI1NCwgMjM2LCAyMzEsIDkwLCAyMTYsIDE2OSwgMjE4LCA1OSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjI0LCAyMSwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjQyLCAyNywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjQ2LCAxMDAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxODksIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNCwgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCA4MSwgMjE2LCAKKyAgICAxNDcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIAorICAgIDgxLCAyMTcsIDY3LCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgCisgICAgMTk0LCAyNDQsIDExNSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgMjQwLCAyMTEsIDIxNywgNjcsIDI2LCAKKyAgICAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMSwgMjE3LCA2NywgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDEyMywgCisgICAgMjE2LCAxNDgsIDIxNywgNjcsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyMTYsIDE0OCwgMjE3LCA2NywgMjYsIAorICAgIDI1NSwgNiwgMjUzLCAxOTQsIDI0NCwgODEsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIxOCwgCisgICAgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjQ0LCAxMTUsIDIxOCwgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMTIzLCAKKyAgICAyNDAsIDIxMSwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDgxLCAyNDAsIDIxMSwgMjE4LCAxNTAsIAorICAgIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAxMjMsIDIxNiwgMTQ4LCAyMTgsIDE1MCwgMjYsIDI1NSwgNiwgMjUzLCAxOTQsIDIxNiwgCisgICAgMjQ4LCAyMTYsIDE0OCwgMjE4LCAxNTAsIDI2LCAyNTUsIDYsIDI1MywgMTk0LCAyNDQsIDExNSwgMjE2LCAxNDgsIDIxOCwgCisgICAgMTUwLCAyNiwgMjU1LCA2LCAyNTMsIDE5NCwgMjE2LCAyNDgsIDIzMCwgMTY0LCAyNiwgMjU1LCA2LCAyNDEsIDIwNSwgMTIzLCAKKyAgICAyMjUsIDMxLCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTEwLCAyNiwgMjU1LCA2LCAyNDEsIDIwMSwgMTEwLCAyNiwgMjU1LCAKKyAgICA2LCAyNDUsIDEwNCwgMTA1LCAyNiwgMjU1LCA2LCAyMTYsIDE4MSwgMTA1LCAyNiwgMjU1LCA2LCAyNDksIDY1LCAxMTMsIAorICAgIDI0NiwgOTksIDI2LCAyNTUsIDYsIDI0NSwgMTA0LCAxMTMsIDI0NiwgOTksIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAxODksIAorICAgIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjE1LCAyMDMsIDIxNiwgMjQ4LCAyNTQsIDE0MSwgCisgICAgMTcsIDI2LCAyNTUsIDYsIDI0MSwgMjAxLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjMxLCA0MSwgMjE2LCAyNDcsIDI2LCAKKyAgICAyNTUsIDYsIDIxNiwgMTgxLCAyMTYsIDI0NywgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDIxNiwgMTYyLCAyNiwgMjU1LCA2LCAKKyAgICAyMTUsIDIwMywgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyNDQsIDExNSwgMjU0LCAxNDEsIDE3LCAyNiwgCisgICAgMjU1LCA2LCAyNDEsIDIwMSwgMjQ0LCAxMTQsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDExNCwgMjYsIDI1NSwgNiwgCisgICAgMjE2LCAxODEsIDEyMywgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAxMzQsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAKKyAgICAyNDUsIDEwNCwgMjQ0LCA4MSwgMjQwLCAyMTAsIDI2LCAyNTUsIDYsIDIxNSwgMjAzLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIAorICAgIDI1NSwgNiwgMjE2LCAxODEsIDI0NCwgODEsIDI0MCwgMjEwLCAyNiwgMjU1LCA2LCAyNTAsIDIyNywgMjQ0LCA4MSwgMjQwLCAKKyAgICAyMTAsIDI2LCAyNTUsIDYsIDIyOSwgMTgyLCAyNDQsIDgxLCAyNDAsIDIxMCwgMjYsIDI1NSwgNiwgMjE2LCAxODEsIDEyMywgCisgICAgMjE2LCAxNDcsIDI2LCAyNTUsIDYsIDIxNiwgMTgxLCAyNDQsIDgxLCAyMTYsIDE0NywgMjYsIDI1NSwgNiwgMjQ4LCA1NywgCisgICAgMjQ0LCA4MSwgMjMwLCAxNjQsIDI2LCAyNTUsIDYsIDIxOCwgMTE4LCAyNDQsIDExNSwgMjMwLCAxNjQsIDI2LCAxMjMsIAorICAgIDE2MywgNTAsIDI2LCAxMjMsIDE2MywgNSwgMjU0LCAxNDEsIDE3LCAyNiwgMTEzLCAyMTYsIDE2NywgNTAsIDI2LCAxMzQsIAorICAgIDIyNCwgMjAsIDUwLCAyNiwgMjExLCA0NSwgNTAsIDI2LCAyMTcsIDY4LCA1MCwgMjYsIDI0NiwgMTAxLCA1MCwgMjYsIDIyNiwgCisgICAgMjQ2LCA1MCwgMjYsIDExMywgMjI2LCAyNDUsIDUwLCAyNiwgMTM0LCAyMjYsIDI0NSwgNTAsIDI2LCAyNDQsIDExLCAyMjYsIAorICAgIDI0NSwgNTAsIDI2LCAyNDQsIDgxLCAyMjYsIDI0NSwgNTAsIDI2LCAyMzEsIDM1LCA1MCwgMjYsIDIzMywgMTU3LCAyNTIsIAorICAgIDEyOCwgNTAsIDI2LCAyMzIsIDE5NCwgNTAsIDI2LCAyMjYsIDEzMSwgNTAsIDI2LCAyMTEsIDE1OSwgNTAsIDI2LCAyNTMsIAorICAgIDI0MywgNTAsIDI2LCAyNTQsIDAsIDUwLCAyNiwgMjQyLCAxNDQsIDUwLCAyNiwgMjE1LCAxODYsIDI1MiwgMTI4LCA1MCwgCisgICAgMjYsIDIxMCwgODcsIDUwLCAyMjIsIDE5OCwgMjIwLCAxMTMsIDUwLCAyMjIsIDE5OCwgMjE0LCAxODUsIDUwLCAyMjIsIAorICAgIDE5OCwgMjIwLCAxNDIsIDUwLCAyMjIsIDE5OCwgMjIwLCAxMTEsIDUwLCAyMjIsIDE5OCwgMjQ3LCAyMTMsIDIyMCwgMTExLCAKKyAgICA1MCwgMjIyLCAxOTgsIDIxOSwgMTY4LCA1MCwgMjIyLCAxOTgsIDI0OCwgNTMsIDUwLCAyMjIsIDE5OCwgMjI0LCA2LCA1MCwgCisgICAgMjIyLCAxOTgsIDIyMCwgMTI5LCA1MCwgMjIyLCAxOTgsIDI0NiwgNjAsIDUwLCAyMjIsIDE5OCwgMjUzLCAyMzgsIDUwLCAKKyAgICAyMjIsIDE5OCwgMjUwLCAxNzEsIDUwLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNSwgMjEzLCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIyNSwgMjQsIDI0MSwgMjM1LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIxNywgNDUsIDI0MSwgMjM1LCAyMjUsIAorICAgIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMjQ3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MCwgMTAxLCAyMjUsIDE0MywgCisgICAgMjQ3LCAxOTEsIDUsIDIxMSwgMjIxLCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0MSwgMjExLCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDI0MywgODUsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE2LCAxMTYsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgNzQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjUxLCAxNjksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIwLCAyOSwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNDksIDI0NCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMzEsIDE4NCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyMzEsIDEzNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMjEsIDIxNiwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyMzIsIDIzNywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTEsIDE4OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAKKyAgICAyNTAsIDIzMSwgMjI1LCAzNSwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDcsIDEzMywgMjI1LCAxNDMsIDI0NywgMTkxLCAKKyAgICA1LCAyNDksIDIyMywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTksIDg3LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0OSwgCisgICAgMjI0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI1MiwgNjMsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjIwLCAxNiwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyNDAsIDI0OCwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDEsIDE3OCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyNTEsIDExMiwgMjMzLCAzNiwgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNTAsIDIyNCwgMjI1LCAKKyAgICAxNDMsIDI0NywgMTkxLCA1LCAyMjMsIDE1MywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyNDUsIDIzMCwgMjI1LCAxNDMsIAorICAgIDI0NywgMTkxLCA1LCAyNDYsIDEwNywgMjI1LCAxNDMsIDI0NywgMTkxLCA1LCAyMTUsIDEwNSwgMjI1LCAxNDMsIDI0NywgCisgICAgMTkxLCA1LCAyNTIsIDY2LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNSwgMzYsIDIxNSwgMjM1LCAyMjUsIDE0MywgMjQ3LCAKKyAgICAxOTEsIDUsIDIxMywgMTU5LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDIyNiwgMTgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjIyLCAxOTAsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjMyLCAyMjQsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjI2LCAKKyAgICAxMTUsIDI1MiwgMTg0LCAyMjUsIDE0MywgMjQ3LCAxOTEsIDUsIDI0NCwgNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgCisgICAgMjQyLCAxMzgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjE4LCAxMTksIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgNCwgMjUzLCAKKyAgICAxNjgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMjEyLCAzMiwgMjUyLCAxNDgsIDIyNSwgMTQzLCAyNDcsIDE5MSwgNSwgMzgsIAorICAgIDIyNiwgMjQ4LCA5MSwgMjMyLCA2MCwgMSwgNjEsIDIzMiwgNjAsIDEsIDc1LCAyMzIsIDYwLCAxLCAyNTMsIDE1OCwgMjMyLCAKKyAgICA2MCwgMSwgMjUyLCAxOSwgMjMyLCA2MCwgMSwgMjQzLCAyMDIsIDIzMiwgNjAsIDEsIDI0OSwgNjAsIDIzMiwgNjAsIDEsIAorICAgIDczLCAyMzIsIDYwLCAxLCAyMTIsIDk4LCAyMzIsIDYwLCAxLCAyMTAsIDE1OSwgMjMyLCA2MCwgMSwgMjE2LCAyMTAsIDIzMiwgCisgICAgNjAsIDEsIDIzNSwgMTQ0LCAyMzIsIDYwLCAxLCAyMzUsIDIzLCAyMzIsIDYwLCAxLCAyMjQsIDk2LCAyMzIsIDYwLCAxLCAKKyAgICAxNTYsIDIzMiwgNjAsIDEsIDE5MywgMjMyLCA2MCwgMSwgMjMwLCAyNSwgMjMyLCA2MCwgMSwgMjMwLCAxNjYsIDIzMiwgNjAsIAorICAgIDEsIDIyOCwgMTExLCAyMzIsIDYwLCAxLCA3MCwgMjMyLCA2MCwgMSwgMjI2LCAxMDUsIDIzMiwgNjAsIDEsIDIzNCwgNDcsIAorICAgIDIzMiwgNjAsIDEsIDE1MywgMjMyLCA2MCwgMSwgMjIyLCA5MSwgMjMyLCA2MCwgMSwgMjE3LCAxNTIsIDIzMiwgNjAsIDEsIAorICAgIDIxNSwgMTU5LCAyMzIsIDYwLCAxLCAyNTQsIDEyMywgMjMyLCA2MCwgMSwgMjQ1LCAxNTAsIDIzMiwgNjAsIDEsIDI0MiwgCisgICAgNjAsIDIzMiwgNjAsIDEsIDIxMSwgMTc4LCAyNTAsIDIzNywgMSwgNjEsIDI1MCwgMjM3LCAxLCAyMjYsIDkxLCAyNTAsIAorICAgIDIzNywgMSwgMjQ5LCA2MCwgMjUwLCAyMzcsIDEsIDE1NiwgMjUwLCAyMzcsIDEsIDIxNCwgMTE2LCAyNTAsIDIzNywgMSwgCisgICAgMTUzLCAyNTAsIDIzNywgMSwgMjMzLCA2MiwgMjUwLCAyMzcsIDEsIDI1NSwgNzUsIDI1MCwgMjM3LCAxLCAyMjQsIDk2LCAKKyAgICAyNTAsIDIzNywgMSwgMjUzLCAxNTgsIDI1MCwgMjM3LCAxLCAxOTMsIDI1MCwgMjM3LCAxLCA3NiwgMjUwLCAyMzcsIDEsIAorICAgIDI0OCwgMjIzLCAyNTAsIDIzNywgMSwgMjE3LCAxNTIsIDI1MCwgMjM3LCAxLCAyMjAsIDEwNCwgMjUwLCAyMzcsIDEsIDIyMCwgCisgICAgMTAzLCAyNTAsIDIzNywgMSwgMjIyLCA5MSwgMjUwLCAyMzcsIDEsIDI1MSwgNjUsIDI1MCwgMjM3LCAxLCA3MCwgMjUwLCAKKyAgICAyMzcsIDEsIDIyOCwgMTExLCAyNTAsIDIzNywgMSwgMjExLCAxNzgsIDI1MCwgMjM3LCAxLCAyMzAsIDI1LCAyNTAsIDIzNywgCisgICAgMSwgMjE1LCAxNTgsIDI1MCwgMjM3LCAxLCAyMjYsIDEwNSwgMjUwLCAyMzcsIDEsIDIxOCwgMjI2LCAyNTAsIDIzNywgMSwgCisgICAgNzMsIDI1MCwgMjM3LCAxLCA3NSwgMjUwLCAyMzcsIDEsIDIxNCwgMTEzLCAyNTAsIDIzNywgMSwgMjM1LCAyMywgMjUwLCAKKyAgICAyMzcsIDEsIDIzNSwgMTQsIDI1MCwgMjM3LCAxLCAyMjksIDE1MCwgMjUwLCAyMzcsIDEsIDIxNCwgMTE4LCAyNTAsIDIzNywgCisgICAgMSwgMjQzLCAyMDIsIDI1MCwgMjM3LCAxLCAyNDMsIDEzNywgMjUwLCAyMzcsIDEsIDIxOCwgMTY4LCAyNTAsIDIzNywgMSwgCisgICAgMjE4LCAxNjcsIDI1MCwgMjM3LCAxLCAyMjksIDc5LCAyNTAsIDIzNywgMSwgMjM2LCAzMywgMjUwLCAyMzcsIDEsIDI1MSwgCisgICAgNjQsIDI1MCwgMjM3LCAxLCAyMTUsIDE1OSwgMjUwLCAyMzcsIDEsIDIxNCwgMTE1LCAyNTAsIDIzNywgMSwgMjIyLCAxODAsIAorICAgIDI1MCwgMjM3LCAxLCAyMzEsIDEyOSwgMjUwLCAyMzcsIDEsIDIzMSwgMTI4LCAyNTAsIDIzNywgMSwgMjMxLCAxMjcsIDI1MCwgCisgICAgMjM3LCAxLCAyMzEsIDEyNiwgMjUwLCAyMzcsIDEsIDIzMywgNjEsIDI1MCwgMjM3LCAxLCAyNDUsIDIzNCwgMjUwLCAyMzcsIAorICAgIDEsIDIxNCwgMTE0LCA1NSwgMzIsIDEsIDYxLCA1NSwgMzIsIDEsIDI1MiwgNzUsIDU1LCAzMiwgMSwgMjM0LCAxODIsIDU1LCAKKyAgICAzMiwgMSwgMjQ4LCA5MCwgNTUsIDMyLCAxLCA3NSwgNTUsIDMyLCAxLCAyMTMsIDI1NSwgNTUsIDMyLCAxLCAyMTAsIDk0LCAKKyAgICA1NSwgMzIsIDEsIDI0MSwgMjM4LCA1NSwgMzIsIDEsIDIxNiwgMTk1LCA1NSwgMzIsIDEsIDczLCA1NSwgMzIsIDEsIDE3NiwgCisgICAgNTUsIDMyLCAxLCAyNDUsIDE3NCwgNTUsIDMyLCAxLCAyNDUsIDE1OSwgNTUsIDMyLCAxLCAyNDUsIDE1MCwgNTUsIDMyLCAxLCAKKyAgICAyNDUsIDc1LCA1NSwgMzIsIDEsIDc2LCA1NSwgMzIsIDEsIDIyNSwgMjIxLCA1NSwgMzIsIDEsIDIyMCwgNjMsIDU1LCAzMiwgCisgICAgMSwgMjMzLCAyMTcsIDU1LCAzMiwgMSwgMjQ1LCA5MiwgNTUsIDMyLCAxLCAyNDUsIDgyLCA1NSwgMzIsIDEsIDIxNywgMjIsIAorICAgIDU1LCAzMiwgMSwgNzAsIDU1LCAzMiwgMSwgMjQ1LCAxNzcsIDU1LCAzMiwgMSwgMjI1LCAxMzYsIDU1LCAzMiwgMSwgMjM0LCAKKyAgICAxMTksIDU1LCAzMiwgMSwgMjQ1LCAyMDIsIDU1LCAzMiwgMSwgMjQ1LCA4NCwgNTUsIDMyLCAxLCAyNTAsIDEzMSwgNTUsIAorICAgIDMyLCAxLCAyMzYsIDMzLCA1NSwgMzIsIDEsIDIxNCwgMTE4LCA1NSwgMzIsIDIyNywgMTk4LCAxMTAsIDU1LCAzMiwgMjI3LCAKKyAgICAxOTgsIDE4OSwgNTUsIDMyLCAyMjcsIDE5OCwgMjE2LCAyNDcsIDU1LCAzMiwgMjI3LCAxOTgsIDI0NCwgMTE0LCAyNDIsIAorICAgIDE1MywgMSwgMjU0LCAyMDQsIDI0MiwgMTUzLCAxLCAyNTIsIDE2MywgMjQyLCAxNTMsIDEsIDI0MiwgMjExLCAyNDIsIDE1MywgCisgICAgMSwgMjQ4LCAyMDQsIDI0MiwgMTUzLCAxLCAyNTQsIDIwMCwgMjQyLCAxNTMsIDEsIDIyNCwgNzksIDI0MiwgMTUzLCAxLCAKKyAgICAyMzUsIDE1NSwgMjQyLCAxNTMsIDEsIDI0MiwgMzksIDI0MiwgMTUzLCAxLCAyMTYsIDE1OCwgMjQyLCAxNTMsIDEsIDI0NSwgCisgICAgMTgzLCAyNDIsIDE1MywgMSwgMjMzLCAxOTAsIDI0MiwgMTUzLCAxLCAyMzMsIDExMywgMjQyLCAxNTMsIDEsIDIzMSwgMTc5LCAKKyAgICAyNDIsIDE1MywgMSwgMjI5LCAxODQsIDI0MiwgMTUzLCAxLCAyMzUsIDExOSwgMjQyLCAxNTMsIDEsIDIxNCwgMTM2LCAyNDIsIAorICAgIDE1MywgMSwgMjI2LCA2OSwgMjQyLCAxNTMsIDEsIDIyOCwgMTk1LCAyNDIsIDE1MywgMSwgMjIzLCAxNjUsIDI0MiwgMTUzLCAKKyAgICAxLCAyMjEsIDIxOCwgMjQyLCAxNTMsIDEsIDIxNywgNCwgMjQyLCAxNTMsIDEsIDIxMSwgMjM0LCAyNDIsIDE1MywgMSwgCisgICAgMjQ0LCAxNzgsIDI0MiwgMTUzLCAxLCAyMzYsIDM3LCAyNDIsIDE1MywgMSwgMjQwLCAxOTksIDI0MiwgMTUzLCAxLCAyMjYsIAorICAgIDEzOSwgMjQyLCAxNTMsIDEsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjE0LCAyMDksIDEsIDI1NCwgMTQ3LCAyMTQsIDIwOSwgMSwgCisgICAgMjUyLCAyNiwgMjE0LCAyMDksIDEsIDI0MywgMTA4LCAyMTQsIDIwOSwgMSwgMjM0LCAxMzIsIDIxNCwgMjA5LCAxLCAyNDgsIAorICAgIDU0LCAyMTQsIDIwOSwgMSwgMjQxLCA2OCwgMjE0LCAyMDksIDEsIDIxMSwgMjI3LCAyMTQsIDIwOSwgMSwgMjEwLCA4NSwgCisgICAgMjE0LCAyMDksIDEsIDI0MCwgMjQxLCAyMTQsIDIwOSwgMSwgMjE2LCAyMzAsIDIxNCwgMjA5LCAxLCAyMTAsIDIzMywgMjE0LCAKKyAgICAyMDksIDEsIDIzNCwgMjUwLCAyMTQsIDIwOSwgMSwgMjIwLCAyMCwgMjE0LCAyMDksIDEsIDIzMywgOTgsIDIxNCwgMjA5LCAKKyAgICAxLCAyMzEsIDY1LCAyMTQsIDIwOSwgMSwgMjQ4LCAyMSwgMjE0LCAyMDksIDEsIDIyNywgMTk0LCAyMTQsIDIwOSwgMSwgCisgICAgMjEwLCAxMywgMjE0LCAyMDksIDEsIDIyMSwgMjQ4LCAyMTQsIDIwOSwgMSwgMjU0LCAxOTYsIDIxNCwgMjA5LCAxLCAyMjQsIAorICAgIDE1MCwgMjE0LCAyMDksIDEsIDIyMiwgMjUsIDIxNCwgMjA5LCAxLCAyMjQsIDM1LCAyMTQsIDIwOSwgMSwgMjIzLCAxNDQsIAorICAgIDIxNCwgMjA5LCAxLCAyMTYsIDE5OSwgMjE0LCAyMDksIDEsIDI0MiwgMjQ0LCAyMTQsIDIwOSwgMSwgMTExLCAyMTQsIDIwOSwgCisgICAgMSwgNzMsIDIxNCwgMjA5LCAxLCA3MCwgMjE0LCAyMDksIDEsIDIxOCwgMTc5LCAyMTQsIDIwOSwgMjExLCAyMDksIDI0NywgCisgICAgMTcyLCA1NSwgMjI1LCAxNjksIDUsIDYxLCA1NSwgMjI1LCAxNjksIDUsIDczLCA1NSwgMjI1LCAxNjksIDUsIDcwLCA1NSwgCisgICAgMjI1LCAxNjksIDUsIDE3NiwgNTUsIDIyNSwgMTY5LCA1LCAyMzMsIDIxNywgNTUsIDIyNSwgMTY5LCA1LCAyNDMsIDEzNSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyNDIsIDExMywgNTUsIDIyNSwgMTY5LCA1LCAyMTEsIDE2NSwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNTEsIDMzLCA1NSwgMjI1LCAxNjksIDUsIDIzNSwgMTQxLCA1NSwgMjI1LCAxNjksIDUsIDIzNSwgMTA4LCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDIxNywgMTA1LCA1NSwgMjI1LCAxNjksIDUsIDIxNSwgMTE4LCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMjIxLCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMywgNTUsIDIyNSwgMTY5LCA1LCAyNDYsIDc4LCA1NSwgMjI1LCAxNjksIDUsIDIxNiwgCisgICAgMjA4LCA1NSwgMjI1LCAxNjksIDUsIDE5MCwgNTUsIDIyNSwgMTY5LCA1LCAyNTIsIDE5MSwgNTUsIDIyNSwgMTY5LCA1LCAKKyAgICAyNDQsIDE5NiwgNTUsIDIyNSwgMTY5LCA1LCAxOTcsIDU1LCAyMjUsIDE2OSwgNSwgMjI3LCAyMzcsIDU1LCAyMjUsIDE2OSwgCisgICAgNSwgMTg0LCA1NSwgMjI1LCAxNjksIDUsIDIzMCwgMjMwLCA1NSwgMjI1LCAxNjksIDUsIDIzMCwgMTAyLCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDE5MSwgNTUsIDIyNSwgMTY5LCA1LCAyMTQsIDI3LCA1NSwgMjI1LCAxNjksIDUsIDIxMywgMTc2LCA1NSwgCisgICAgMjI1LCAxNjksIDUsIDIwNSwgNTUsIDIyNSwgMTY5LCA1LCAyMjIsIDE0MCwgNTUsIDIyNSwgMTY5LCA1LCAyMzMsIDEzNSwgCisgICAgNTUsIDIyNSwgMTY5LCA1LCAyMDYsIDU1LCAyMjUsIDE2OSwgNSwgMjEwLCAxMTYsIDU1LCAyMjUsIDE2OSwgNSwgMjIwLCAKKyAgICAxMDIsIDU1LCAyMjUsIDE2OSwgNSwgMjE4LCAyMjMsIDU1LCAyMjUsIDE2OSwgNSwgMTYyLCA1NSwgMjI1LCAxNjksIDUsIAorICAgIDI1MywgMTg2LCA1NSwgMjI1LCAxNjksIDUsIDI1MywgMTg1LCA1NSwgMjI1LCAxNjksIDUsIDI1MywgMTg0LCA1NSwgMjI1LCAKKyAgICAxNjksIDUsIDIxMSwgMTQyLCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMjAwLCA1NSwgMjI1LCAxNjksIDUsIDI0OCwgMTk5LCAKKyAgICA1NSwgMjI1LCAxNjksIDUsIDI1MiwgMTcwLCA1NSwgMjI1LCAxNjksIDUsIDI1MSwgODUsIDU1LCAyMjUsIDE2OSwgMjExLCAKKyAgICAyMDksIDI0NywgMTcyLCA1NSwgMjI1LCAxNjksIDU0LCAxMTAsIDU1LCAyMjUsIDE2OSwgNTQsIDEwNSwgNTUsIDIyNSwgCisgICAgMTY5LCA1NCwgMjE2LCAyNDcsIDU1LCAyMjUsIDE2OSwgNTQsIDIxNSwgNzMsIDU1LCAyMjUsIDE2OSwgNTQsIDI0MCwgMjEwLCAKKyAgICAxODEsIDYsIDEsIDE5OSwgNzMsIDE4MSwgNiwgMSwgMTk5LCA3NSwgMTgxLCA2LCAxLCAxOTksIDYxLCAxODEsIDYsIDEsIAorICAgIDE5OSwgMjU0LCAyMDksIDE4MSwgNiwgMSwgMTk5LCA3NiwgMTgxLCA2LCAxLCAxOTksIDIyNiwgMTgzLCAxODEsIDYsIDEsIAorICAgIDIxOSwgMjUxLCA3MywgMTgxLCA2LCAxLCAyMTksIDI1MSwgNzUsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDYxLCAxODEsIDYsIAorICAgIDEsIDIxOSwgMjUxLCAyNTQsIDIwOSwgMTgxLCA2LCAxLCAyMTksIDI1MSwgNzYsIDE4MSwgNiwgMSwgMjE5LCAyNTEsIDIyNiwgCisgICAgMTgzLCAxODEsIDYsIDEsIDI1MywgMTY3LCAxODEsIDYsIDEsIDIyNiwgMTE2LCAxODEsIDYsIDEsIDIxMSwgMTk1LCAxODEsIAorICAgIDYsIDEsIDIxMSwgNDQsIDE4MSwgNiwgMSwgMjQyLCA2MCwgMTgxLCA2LCAxLCAyMjUsIDIxMSwgMTgxLCA2LCAxLCAyNTIsIAorICAgIDY2LCAxODEsIDYsIDEsIDIxNywgMTEsIDE4MSwgNiwgMSwgMjQ4LCA3NywgMTgxLCA2LCAxLCAyNTAsIDEyOCwgMTgxLCA2LCAKKyAgICAxLCAyMzUsIDEyNCwgMTgxLCA2LCAxLCAyMzQsIDE4OSwgMTgxLCA2LCAxLCAyNDMsIDgzLCAxODEsIDYsIDEsIDI0NSwgCisgICAgMjAyLCAxODEsIDYsIDEsIDIxMywgMjUwLCAxODEsIDYsIDEsIDI0NSwgNTksIDE4MSwgNiwgMSwgMjE2LCAxOTQsIDE4MSwgCisgICAgNiwgMSwgMjQ1LCA4MiwgMTgxLCA2LCAxLCAyMTAsIDkyLCAxODEsIDYsIDEsIDI0NSwgNzUsIDE4MSwgNiwgMSwgMjEwLCAKKyAgICA3MywgMTgxLCA2LCAxLCAyNDUsIDkyLCAxODEsIDYsIDEsIDI0NSwgMTc0LCAxODEsIDYsIDEsIDI0NSwgMTU5LCAxODEsIDYsIAorICAgIDEsIDI0NSwgMTUwLCAxODEsIDYsIDEsIDI0NSwgMTM4LCAxODEsIDYsIDEsIDIyNiwgMjE5LCAxODEsIDYsIDEsIDI0NSwgCisgICAgMzgsIDE4MSwgNCwgMSwgMTk5LCA3MywgMTgxLCA0LCAxLCAxOTksIDc1LCAxODEsIDQsIDEsIDE5OSwgNjEsIDE4MSwgNCwgCisgICAgMSwgMTk5LCAyNTQsIDIwOSwgMTgxLCA0LCAxLCAxOTksIDc2LCAxODEsIDQsIDEsIDE5OSwgMjI2LCAxODMsIDE4MSwgNCwgCisgICAgMSwgMjE5LCAyNTEsIDczLCAxODEsIDQsIDEsIDIxOSwgMjUxLCA3NSwgMTgxLCA0LCAxLCAyMTksIDI1MSwgNjEsIDE4MSwgCisgICAgNCwgMSwgMjE5LCAyNTEsIDI1NCwgMjA5LCAxODEsIDQsIDEsIDIxOSwgMjUxLCA3NiwgMTgxLCA0LCAxLCAyMTksIDI1MSwgCisgICAgMjI2LCAxODMsIDE4MSwgNCwgMSwgMjUzLCAxNjcsIDE4MSwgNCwgMSwgMjI2LCAxMTYsIDE4MSwgNCwgMSwgMjExLCAxOTUsIAorICAgIDE4MSwgNCwgMSwgMjExLCA0NCwgMTgxLCA0LCAxLCAyNDIsIDYwLCAxODEsIDQsIDEsIDIyNSwgMjExLCAxODEsIDQsIDEsIAorICAgIDI1MiwgNjYsIDE4MSwgNCwgMSwgMjE3LCAxMSwgMTgxLCA0LCAxLCAyNDgsIDc3LCAxODEsIDQsIDEsIDI1MCwgMTI4LCAKKyAgICAxODEsIDQsIDEsIDIzNSwgMTI0LCAxODEsIDQsIDEsIDIzNCwgMTg5LCAxODEsIDQsIDEsIDI0MywgODMsIDE4MSwgNCwgMSwgCisgICAgMjQ1LCAyMDIsIDE4MSwgNCwgMSwgMjEzLCAyNTAsIDE4MSwgNCwgMSwgMjQ1LCA1OSwgMTgxLCA0LCAxLCAyMTYsIDE5NCwgCisgICAgMTgxLCA0LCAxLCAyNDUsIDgyLCAxODEsIDQsIDEsIDIxMCwgOTIsIDE4MSwgNCwgMSwgMjQ1LCA3NSwgMTgxLCA0LCAxLCAKKyAgICAyMTAsIDczLCAxODEsIDQsIDEsIDI0NSwgOTIsIDE4MSwgNCwgMSwgMjQ1LCAxNzQsIDE4MSwgNCwgMSwgMjQ1LCAxNTksIAorICAgIDE4MSwgNCwgMSwgMjQ1LCAxNTAsIDE4MSwgNCwgMSwgMjQ1LCAxMzgsIDE4MSwgNCwgMSwgMjI2LCAyMTksIDE4MSwgNCwgMSwgCisgICAgMjQ1LCAzOCwgMjIwLCA2OSwgMSwgMjI1LCAyMDksIDIyMCwgNjksIDEsIDIxNiwgNSwgMjIwLCA2OSwgMSwgMjM0LCA5MSwgCisgICAgMjIwLCA2OSwgMSwgMjQ0LCAxNDcsIDIyMCwgNjksIDEsIDIxNiwgMTcyLCAyMjAsIDY5LCAxLCAyMTksIDU4LCAyMjAsIDY5LCAKKyAgICAxLCAyMTgsIDE0LCAyMjAsIDY5LCAxLCAyNTAsIDYxLCAyMjAsIDY5LCAxLCAyMTEsIDQ2LCAyMjAsIDY5LCAxLCAyNDAsIAorICAgIDIwOSwgMjIwLCA2OSwgMSwgMjUyLCA1LCAyMjAsIDY5LCAxLCAyNDgsIDg5LCAyMjAsIDY5LCAxLCAyNDMsIDEyMSwgMjIwLCAKKyAgICA2OSwgMSwgMjEzLCAxMjMsIDIyMCwgNjksIDEsIDIxNiwgMTc2LCAyMjAsIDY5LCAxLCAyMTAsIDIxLCAyMjAsIDY5LCAxLCAKKyAgICAyMzEsIDg5LCAyMjAsIDY5LCAxLCAyMzUsIDQ5LCAyMjAsIDY5LCAxLCAyMTEsIDIyNSwgMjIwLCA2OSwgMSwgMjQyLCA0OCwgCisgICAgMjIwLCA2OSwgMSwgMjMyLCAxNDIsIDIyMCwgNjksIDEsIDIzMCwgMTg5LCAyMjAsIDY5LCAxLCAyMzYsIDQwLCAyMjAsIDY5LCAKKyAgICAxLCAyNDUsIDIwMSwgMjIwLCA2OSwgMSwgMjUzLCAyMzEsIDIyMCwgNjksIDEsIDI1NCwgMjQ3LCAyMjAsIDY5LCAxLCAyMjYsIAorICAgIDE5NiwgMjIwLCA2OSwgMSwgMjExLCAyMTIsIDIyMCwgNjksIDEsIDIyNiwgMTMwLCAyMjAsIDY5LCAxLCAyNTQsIDIwOSwgCisgICAgMjIwLCA2OSwgMSwgMjIyLCAyMDgsIDIyMCwgNjksIDEsIDIyNywgMTk0LCAyMjAsIDY5LCAxLCAyNDUsIDIxNywgMjIwLCAKKyAgICA2OSwgMSwgMjU0LCAyMTQsIDIyMCwgNjksIDEsIDI0MCwgMTExLCAyMjAsIDY5LCAxLCAyMTQsIDE2MywgMjIwLCA2OSwgMSwgCisgICAgMjI2LCAyNTQsIDIyMCwgNjksIDEsIDIyNiwgMTc2LCAyMjAsIDY5LCAxLCAyMjYsIDIxOCwgMjIwLCA2OSwgMSwgMjUzLCAKKyAgICAxNzAsIDIyMCwgNjksIDEsIDI1NCwgMTksIDIyMCwgNjksIDEsIDIyNiwgMTU4LCAyMjAsIDY5LCAxLCAyNTQsIDE5MiwgCisgICAgMjIwLCA2OSwgMSwgMjQ1LCA4NiwgMjIwLCA2OSwgMSwgMjUzLCAyNTMsIDIyMCwgNjksIDEsIDI0NSwgMjI3LCAyMjAsIDY5LCAKKyAgICAxLCAyNDAsIDExOCwgMjIwLCA2OSwgMSwgMjExLCAxMywgMjI2LCAxNDEsIDEsIDI1NCwgMTcwLCAyMjYsIDE0MSwgMSwgCisgICAgMjUyLCAxOTEsIDIyNiwgMTQxLCAxLCAyMTcsIDEwNSwgMjI2LCAxNDEsIDEsIDIzNSwgMTQxLCAyMjYsIDE0MSwgMSwgMjExLCAKKyAgICAxNjUsIDIyNiwgMTQxLCAxLCAyMzQsIDEzMiwgMjI2LCAxNDEsIDEsIDI0OCwgNzYsIDIyNiwgMTQxLCAxLCAyMDUsIDIyNiwgCisgICAgMTQxLCAxLCAyMDYsIDIyNiwgMTQxLCAxLCAyMjAsIDI2LCAyMjYsIDE0MSwgMSwgMjQ4LCAyNSwgMjI2LCAxNDEsIDEsIAorICAgIDI1MCwgMjE1LCAyMjYsIDE0MSwgMSwgMjQzLCAxMzUsIDIyNiwgMTQxLCAxLCAyNDQsIDE5NiwgMjI2LCAxNDEsIDEsIDIyNCwgCisgICAgODYsIDIyNiwgMTQxLCAxLCAyMzUsIDksIDIyNiwgMTQxLCAxLCAyMzMsIDEzMCwgMjI2LCAxNDEsIDEsIDIzMCwgMjAwLCAKKyAgICAyMjYsIDE0MSwgMSwgMjI3LCAxNzgsIDIyNiwgMTQxLCAxLCAyMTIsIDMwLCAyMjYsIDE0MSwgMSwgMTYyLCAyMjYsIDE0MSwgCisgICAgMSwgMTkxLCAyMjYsIDE0MSwgMSwgNjEsIDIyNiwgMTQxLCAxLCA3NSwgMjI2LCAxNDEsIDEsIDczLCAyMjYsIDE0MSwgMSwgCisgICAgNzYsIDIyNiwgMTQxLCAxLCA3MCwgMjI2LCAxNDEsIDEsIDI1NSwgNzMsIDIyNiwgMTQxLCAxLCAyNDUsIDIwOSwgMjI2LCAKKyAgICAxNDEsIDEsIDIyNiwgMTgzLCAyMjYsIDE0MSwgMjEsIDIxMCwgODYsIDIyNiwgMTQxLCAyMSwgMTEwLCAyMjYsIDE0MSwgMjEsIAorICAgIDEwNSwgMjI2LCAxNDEsIDIxLCAxNTgsIDIyNiwgMTQxLCAyMSwgMTYxLCAyMjYsIDE0MSwgMjEsIDE4OSwgMjI2LCAxNDEsIAorICAgIDIxLCAxOTQsIDIyNiwgMTQxLCAyMSwgMTk4LCAyMjYsIDE0MSwgMjEsIDE5NSwgMjI2LCAxNDEsIDIxLCAyMDAsIDI0OSwgCisgICAgNjcsIDMsIDYxLCAyNDksIDY3LCAzLCA3NSwgMjQ5LCA2NywgMywgNzMsIDI0OSwgNjcsIDMsIDc2LCAyNDksIDY3LCAzLCAKKyAgICA3MCwgMjQ5LCA2NywgMywgMjM1LCAxNDEsIDI0OSwgNjcsIDMsIDIzNSwgNjgsIDI0OSwgNjcsIDMsIDE3NiwgMjQ5LCA2NywgCisgICAgMywgMjM0LCAxODIsIDI0OSwgNjcsIDMsIDIzNCwgOTIsIDI0OSwgNjcsIDMsIDIzNCwgMjgsIDI0OSwgNjcsIDMsIDIzMywgCisgICAgMjE3LCAyNDksIDY3LCAzLCAyMzMsIDEzNSwgMjQ5LCA2NywgMywgMjMzLCA1OCwgMjQ5LCA2NywgMywgMjMyLCAyNDEsIAorICAgIDI0OSwgNjcsIDMsIDIzMiwgMTU2LCAyNDksIDY3LCAzLCAyMzIsIDk4LCAyNDksIDY3LCAzLCAxODQsIDI0OSwgNjcsIDMsIAorICAgIDIzMSwgOTEsIDI0OSwgNjcsIDMsIDIzMCwgMjMwLCAyNDksIDY3LCAzLCAyMzAsIDE2MSwgMjQ5LCA2NywgMywgMjMwLCAKKyAgICAxMDIsIDI0OSwgNjcsIDMsIDE5NywgMjQ5LCA2NywgMywgMjI5LCAxMDcsIDI0OSwgNjcsIDMsIDIyOCwgMjMzLCAyNDksIAorICAgIDY3LCAzLCAyMjgsIDc0LCAyNDksIDY3LCAzLCAyMjcsIDIzNywgMjQ5LCA2NywgMywgMTkwLCAyNDksIDY3LCAzLCAyMjUsIAorICAgIDIyMSwgMjQ5LCA2NywgMywgMjI1LCAxMDgsIDI0OSwgNjcsIDMsIDIyNSwgMTYsIDI0OSwgNjcsIDMsIDIyNCwgMTUwLCAKKyAgICAyNDksIDY3LCAzLCAyMDUsIDI0OSwgNjcsIDMsIDIyMywgMTI4LCAyNDksIDY3LCAzLCAyMjMsIDM1LCAyNDksIDY3LCAzLCAKKyAgICAyMjIsIDIxMSwgMjQ5LCA2NywgMywgMjIyLCAxNDAsIDI0OSwgNjcsIDMsIDIwNiwgMjQ5LCA2NywgMywgMjIxLCAxODEsIAorICAgIDI0OSwgNjcsIDMsIDIxOSwgMTkxLCAyNDksIDY3LCAzLCAyMTksIDU4LCAyNDksIDY3LCAzLCAyMTgsIDgzLCAyNDksIDY3LCAKKyAgICAzLCAyMTcsIDEwNSwgMjQ5LCA2NywgMywgMjE3LCAyMiwgMjQ5LCA2NywgMywgMjE2LCAxMTcsIDI0OSwgNjcsIDMsIDExMSwgCisgICAgMjQ5LCA2NywgMywgMjE1LCAxMTgsIDI0OSwgNjcsIDMsIDIxMiwgNjUsIDI0OSwgNjcsIDMsIDIxMiwgMjIsIDI0OSwgNjcsIAorICAgIDMsIDIxMSwgMjUwLCAyNDksIDY3LCAzLCAyMTEsIDIyNywgMjQ5LCA2NywgMywgMjExLCAxNjUsIDI0OSwgNjcsIDMsIDIxMSwgCisgICAgMTYyLCAyNDksIDY3LCAzLCAyMTAsIDExNiwgMjQ5LCA2NywgMywgMjEwLCAyMywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNTQsIAorICAgIDE2OCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNTIsIDI1LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MiwgMjAxLCAyMzYsIDEsIAorICAgIDI1NCwgMjcsIDEsIDI0OCwgMTg4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDI0MSwgMjM4LCAyMzYsIDEsIDI1NCwgMjcsIDEsIAorICAgIDIxMiwgMzAsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjEwLCA5NywgMjM2LCAxLCAyNTQsIDI3LCAxLCAyNDEsIDE5NSwgMjM2LCAKKyAgICAxLCAyNTQsIDI3LCAxLCAyMTYsIDIyNiwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTAsIDIzMiwgMjM2LCAxLCAyNTQsIDI3LCAKKyAgICAxLCAyMzQsIDIyNSwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMzMsIDkzLCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIzMSwgNjUsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI3LCAxOTQsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIxLCAyNDksIDIzNiwgMSwgMjU0LCAKKyAgICAyNywgMSwgMjUzLCAxNjIsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjI1LCAyMjEsIDIzNiwgMSwgMjU0LCAyNywgMSwgMjIyLCAKKyAgICAyNCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMjQsIDM0LCAyMzYsIDEsIDI1NCwgMjcsIDEsIDIyMywgNjcsIDIzNiwgMSwgCisgICAgMjU0LCAyNywgMSwgMjIwLCAyMCwgMjM2LCAxLCAyNTQsIDI3LCAxLCAyMTcsIDM2LCAyMzYsIDEsIDI1NCwgMjcsIDIyMSwgCisgICAgMTczLCA1MCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMTEwLCAyMzYsIDEsIDI1NCwgMjcsIDU0LCAxMDUsIDIzNiwgMSwgMjU0LCAKKyAgICAyNywgNTQsIDE1OCwgMjM2LCAxLCAyNTQsIDI3LCA1NCwgMjE2LCAyNDcsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNSwgNzMsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEyMywgMjQwLCAyMTAsIDIzNiwgMSwgMjU0LCAyNywgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDIzNiwgMSwgMjU0LCAyNywgNTQsIDIxNiwgMjQ4LCAyMTYsIDE0NywgMjI1LCAxMTksIDEsIDI1NCwgMTY1LCAyMjUsIDExOSwgCisgICAgMSwgMjUyLCAyOCwgMjI1LCAxMTksIDEsIDI0MywgMTA5LCAyMjUsIDExOSwgMSwgMjQ4LCA1NiwgMjI1LCAxMTksIDEsIAorICAgIDI0MSwgMjM4LCAyMjUsIDExOSwgMSwgMjEyLCAzNywgMjI1LCAxMTksIDEsIDIxMCwgMTEwLCAyMjUsIDExOSwgMSwgMjQxLCAKKyAgICAxOTcsIDIyNSwgMTE5LCAxLCAyMTYsIDIzMCwgMjI1LCAxMTksIDEsIDIxMCwgMjMzLCAyMjUsIDExOSwgMSwgMjM0LCAyNTAsIAorICAgIDIyNSwgMTE5LCAxLCAyMzMsIDk5LCAyMjUsIDExOSwgMSwgMjMxLCA2NSwgMjI1LCAxMTksIDEsIDIyNywgMTk0LCAyMjUsIAorICAgIDExOSwgMSwgMjIwLCAxNDQsIDIyNSwgMTE5LCAxLCAyNTQsIDE5NiwgMjI1LCAxMTksIDEsIDIyNSwgMjIxLCAyMjUsIDExOSwgCisgICAgMSwgMjIyLCAyNSwgMjI1LCAxMTksIDEsIDIyNCwgMzksIDIyNSwgMTE5LCAxLCAyMjIsIDE4OSwgMjI1LCAxMTksIDEsIAorICAgIDIyMCwgMjAsIDIyNSwgMTE5LCAxLCAyMTcsIDQxLCAyMjUsIDExOSwgNTQsIDExMCwgMjI1LCAxMTksIDU0LCAyMTYsIDI0NywgCisgICAgMjI1LCAxMTksIDU0LCAyMTUsIDczLCAyMjUsIDExOSwgNTQsIDEyMywgMjQwLCAyMTAsIDIyNSwgMTE5LCA1NCwgMTA1LCAKKyAgICAyMjUsIDExOSwgNTQsIDE1OCwgMjI1LCAxMTksIDIxMSwgMjA5LCAyMjAsIDEzNywgMjMyLCA1OSwgMSwgNjEsIDIzMiwgNTksIAorICAgIDEsIDI1MywgMTU4LCAyMzIsIDU5LCAxLCAyNDMsIDIwMiwgMjMyLCA1OSwgMSwgMjQ5LCA2MCwgMjMyLCA1OSwgMSwgNzUsIAorICAgIDIzMiwgNTksIDEsIDIxNCwgMTA1LCAyMzIsIDU5LCAxLCA3MywgMjMyLCA1OSwgMSwgMjExLCAxMTcsIDIzMiwgNTksIDEsIAorICAgIDIzNSwgMjMsIDIzMiwgNTksIDEsIDE1NiwgMjMyLCA1OSwgMSwgMTkzLCAyMzIsIDU5LCAxLCAyMzAsIDI1LCAyMzIsIDU5LCAKKyAgICAxLCA3NiwgMjMyLCA1OSwgMSwgMTUzLCAyMzIsIDU5LCAxLCAyMTgsIDIyNiwgMjMyLCA1OSwgMSwgMjE3LCAxNTIsIDIzMiwgCisgICAgNTksIDEsIDcwLCAyMzIsIDU5LCAxLCAyNDUsIDYsIDIzMiwgNTksIDEsIDIyNCwgOTYsIDIzMiwgNTksIDEsIDIyMiwgOTEsIAorICAgIDIzMiwgNTksIDEsIDIxNSwgMTU5LCAyMzIsIDU5LCAxLCAyNTQsIDEyMywgMjMyLCA1OSwgMSwgMjQ1LCAxNTAsIDIzMiwgCisgICAgNTksIDEsIDIzMiwgNjIsIDIzMiwgNTksIDEsIDIyOCwgMTExLCAyMzIsIDU5LCAxLCAyNTEsIDY2LCAyMzIsIDU5LCAyMTUsIAorICAgIDIyMiwgNzgsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA2MSwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDc1LCAyMzEsIDQ4LCAKKyAgICAyNDEsIDE3NCwgMSwgNzMsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCA3NiwgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDE5MSwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIxMiwgNjUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyNTIsIDE5MSwgMjMxLCA0OCwgCisgICAgMjQxLCAxNzQsIDEsIDI1MiwgMTkwLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTkwLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMTg0LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMTk3LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjI5LCAyMjgsIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyMjksIDEwNywgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIyOSwgMTA2LCAyMzEsIDQ4LCAyNDEsIDE3NCwgCisgICAgMSwgMjA1LCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjIzLCAxODcsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMzMsIDEzNSwgCisgICAgMjMxLCA0OCwgMjQxLCAxNzQsIDEsIDIzNCwgMTMyLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjQxLCAxODksIDIzMSwgNDgsIAorICAgIDI0MSwgMTc0LCAxLCAyMDYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjIsIDMzLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMjIxLCAxODEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAxNzYsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMjQsIDg4LCAyMzEsIAorICAgIDQ4LCAyNDEsIDE3NCwgMSwgMjE3LCAxMDUsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDEwNCwgMjMxLCA0OCwgMjQxLCAKKyAgICAxNzQsIDEsIDIxNywgMjIsIDIzMSwgNDgsIDI0MSwgMTc0LCAxLCAyMTcsIDIxLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgCisgICAgMTExLCAyMzEsIDQ4LCAyNDEsIDE3NCwgMSwgMjQ4LCAyMjEsIDIzMSwgNDgsIDI0MSwgMTc0LCAxNiwgMjEzLCAxNzAsIAorICAgIDIzMSwgNDgsIDI0MSwgMTc0LCAxNiwgMjEzLCAxNjksIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDYxLCAyMzEsIDQ4LCAyNDksIAorICAgIDk0LCAxLCA3NSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgNzMsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDc2LCAyMzEsIDQ4LCAKKyAgICAyNDksIDk0LCAxLCAxOTEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDIxMiwgNjUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI1MiwgCisgICAgMTkxLCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAxOTAsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE4NCwgMjMxLCA0OCwgMjQ5LCAKKyAgICA5NCwgMSwgMTk3LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMjksIDEwNywgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjA1LCAyMzEsIAorICAgIDQ4LCAyNDksIDk0LCAxLCAyMzMsIDEzNSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjM0LCAxMzIsIDIzMSwgNDgsIDI0OSwgCisgICAgOTQsIDEsIDI0MSwgMTg5LCAyMzEsIDQ4LCAyNDksIDk0LCAxLCAyMDYsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDI1NCwgMjMsIAorICAgIDIwNiwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjIxLCAxODEsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDE3NiwgMjMxLCA0OCwgCisgICAgMjQ5LCA5NCwgMSwgMjI0LCA4OCwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjE3LCAxMDUsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIAorICAgIDIxNywgMjIsIDIzMSwgNDgsIDI0OSwgOTQsIDEsIDExMSwgMjMxLCA0OCwgMjQ5LCA5NCwgMSwgMjQ4LCAyMjEsIDIzMSwgCisgICAgNDgsIDI0OSwgOTQsIDIzMiwgMTQ1LCAyMjIsIDIxNywgMjMxLCA0OCwgMjQ5LCA5NCwgMjMyLCAxNDUsIDIzNiwgNiwgMjM0LCAKKyAgICAxMjAsIDEsIDYxLCAyMzQsIDEyMCwgMjUsIDUsIDczLCAyMzQsIDEyMCwgMjUsIDUsIDcwLCAyMzQsIDEyMCwgMjUsIDUsIAorICAgIDE0OSwgMTUzLCAyMzQsIDEyMCwgMjUsIDUsIDc1LCAyMzQsIDEyMCwgMjUsIDUsIDc2LCAyMzQsIDEyMCwgMjUsIDIzMywgCisgICAgMjMsIDc4LCAyMzQsIDEyMCwgNSwgNTIsIDIyMiwgMjM0LCA1MSwgMjM0LCAxMjAsIDUsIDI1NCwgNzUsIDIzNCwgMTIwLCA1LCAKKyAgICAyMTMsIDE0NywgMjM0LCAxMjAsIDEsIDE3NiwgMjM0LCAxMjAsIDEsIDIzNCwgMTMyLCAyMzQsIDEyMCwgMSwgMjQzLCAxMzUsIAorICAgIDIzNCwgMTIwLCAxLCAyNDIsIDI0OSwgMjM0LCAxMjAsIDEsIDI1MSwgMzMsIDIzNCwgMTIwLCAxLCAyNTAsIDE1NywgMjM0LCAKKyAgICAxMjAsIDEsIDIzNSwgMTQxLCAyMzQsIDEyMCwgMSwgMjI3LCAxNjUsIDIzNCwgMTIwLCAxLCAyMTUsIDE1NiwgMjM0LCAxMjAsIAorICAgIDEsIDIxNSwgMTQ0LCAyMzQsIDEyMCwgMSwgMjQ4LCAxMzUsIDIzNCwgMTIwLCAxLCAyNDgsIDExOSwgMjM0LCAxMjAsIDEsIAorICAgIDIyOCwgMTEwLCAyMzQsIDEyMCwgMSwgMjE3LCAxMDUsIDIzNCwgMTIwLCAxLCAyMTYsIDIwOCwgMjM0LCAxMjAsIDEsIDI0OCwgCisgICAgMjIxLCAyMzQsIDEyMCwgMSwgMjQ4LCAyNSwgMjM0LCAxMjAsIDEsIDE5NywgMjM0LCAxMjAsIDEsIDE5MCwgMjM0LCAxMjAsIAorICAgIDEsIDIyNSwgMTQ3LCAyMzQsIDEyMCwgMSwgMjUyLCAxOTEsIDIzNCwgMTIwLCAxLCAyNTIsIDE4LCAyMzQsIDEyMCwgMSwgCisgICAgMTg0LCAyMzQsIDEyMCwgMSwgMTkxLCAyMzQsIDEyMCwgMSwgMjA1LCAyMzQsIDEyMCwgMSwgMjMzLCAxMzUsIDIzNCwgMTIwLCAKKyAgICAxLCAyMTQsIDI3LCAyMzQsIDEyMCwgMSwgMjIwLCAxMDIsIDIzNCwgMTIwLCAxLCAyMTgsIDIyMywgMjM0LCAxMjAsIDEsIAorICAgIDIwNiwgMjM0LCAxMjAsIDEsIDIxMCwgMTE2LCAyMzQsIDEyMCwgMSwgMTYyLCAyMzQsIDEyMCwgMSwgMjM0LCA0NiwgMjM0LCAKKyAgICAxMjAsIDEsIDIxNSwgMTI0LCAyMzQsIDEyMCwgNSwgMjUyLCAxNDEsIDQ4LCAyMzQsIDEyMCwgNSwgMjUwLCAyMjEsIDIzNCwgCisgICAgMTIwLCA1LCA1OSwgNTEsIDIzNCwgMTIwLCAyMTMsIDE1MiwgMjM0LCAxMjAsIDIxLCAxMTAsIDIzNCwgMTIwLCAyMSwgMTA1LCAKKyAgICAyMzQsIDEyMCwgMjEsIDE1OCwgMjM0LCAxMjAsIDIxLCAxNjEsIDIzNCwgMTIwLCA1NCwgMjE2LCAyNDcsIDIzNCwgMTIwLCAKKyAgICA1NCwgMjE1LCA3MywgMjM0LCAxMjAsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzQsIDEyMCwgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ3LCAxMjAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgNCwgMjUwLCAzNSwgMjM0LCAxMjAsIAorICAgIDIyNCwgMTQxLCAyNTAsIDM1LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDI0OSwgMTM3LCAxMzAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgCisgICAgMjMxLCAxODAsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjMyLCAxMTUsIDIzNCwgMTIwLCAyMjQsIDE0MSwgMjQ4LCAxNzgsIAorICAgIDIzNCwgMTIwLCAyMjQsIDE0MSwgNTIsIDI0OCwgMTc4LCAyMzQsIDEyMCwgMjI0LCAxNDEsIDIzMiwgMjA3LCA1NSwgMjE5LCAKKyAgICAyOCwgMjU0LCAzOCwgMSwgMjQxLCAyMzgsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzMsIDkzLCA1NSwgMjE5LCAyOCwgCisgICAgMjU0LCAzOCwgMSwgMjQxLCAxOTUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzEsIDY1LCA1NSwgMjE5LCAyOCwgMjU0LCAKKyAgICAzOCwgMSwgMjI0LCAzNCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMiwgMzAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAKKyAgICAxLCAyMjAsIDIwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIzLCA2NywgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIAorICAgIDI1MiwgMjUsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTcsIDM2LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIxLCAKKyAgICAyMjYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMzQsIDIyNSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIyNywgCisgICAgMTk0LCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjM0LCAxMTYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMjIsIDI0LCAKKyAgICA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjIxLCAyNDksIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDQsIDE1NCwgNTUsIAorICAgIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI1NCwgMTcwLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjUzLCAxNjEsIDU1LCAKKyAgICAyMTksIDI4LCAyNTQsIDM4LCAxLCAyNDgsIDIyLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgMSwgMjQyLCAyMDEsIDU1LCAyMTksIAorICAgIDI4LCAyNTQsIDM4LCAxLCAyNDgsIDE4OCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDI0MiwgMjM4LCA1NSwgMjE5LCAyOCwgCisgICAgMjU0LCAzOCwgMSwgMjE2LCAyMjYsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTAsIDk2LCA1NSwgMjE5LCAyOCwgMjU0LCAKKyAgICAzOCwgMSwgMjQ4LCAxOSwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDEsIDIxMCwgMjMyLCA1NSwgMjE5LCAyOCwgMjU0LCAzOCwgCisgICAgMSwgMjE2LCAxOTcsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxLCAyMTYsIDE3OCwgNTUsIDIxOSwgMjgsIDI1NCwgMzgsIDU0LCAKKyAgICAxMTAsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCA1NCwgMjQ0LCAxMTQsIDU1LCAyMTksIDI4LCAyNTQsIDM4LCAxMzIsIDIzNSwgCisgICAgMjM4LCAyNTMsIDE3MiwgMSwgNjEsIDI1MywgMTcyLCAxLCAyNTUsIDczLCAyNTMsIDE3MiwgMSwgMjU0LCA3MywgMjUzLCAKKyAgICAxNzIsIDEsIDI1NSwgMzIsIDI1MywgMTcyLCAxLCAyNTQsIDEyMywgMjUzLCAxNzIsIDEsIDI1NSwgMzMsIDI1MywgMTcyLCAKKyAgICAxLCAyNTQsIDI0MywgMjUzLCAxNzIsIDEsIDI1NCwgMjM5LCAyNTMsIDE3MiwgMSwgNzUsIDI1MywgMTcyLCAxLCAyNDUsIAorICAgIDIwOSwgMjUzLCAxNzIsIDEsIDc2LCAyNTMsIDE3MiwgMSwgMjI2LCAxODMsIDI1MywgMTcyLCAxLCA3MywgMjUzLCAxNzIsIAorICAgIDEsIDIzNiwgMzMsIDI1MywgMTcyLCAxLCA3MCwgMjUzLCAxNzIsIDEsIDIxNCwgMTE4LCAyNTMsIDE3MiwgMSwgMjM0LCAKKyAgICAxODIsIDI1MywgMTcyLCAxLCAyMTEsIDE2MiwgMjUzLCAxNzIsIDEsIDIxMSwgMTI4LCAyNTMsIDE3MiwgMSwgMjExLCAxMzcsIAorICAgIDI1MywgMTcyLCAxLCAyNDMsIDYyLCAyNTMsIDE3MiwgMSwgMjQzLCAyNCwgMjUzLCAxNzIsIDEsIDI0MiwgMjM2LCAyNTMsIAorICAgIDE3MiwgMSwgMjUwLCAxOTAsIDI1MywgMTcyLCAxLCAyMzUsIDEyNiwgMjUzLCAxNzIsIDEsIDIxNywgMjIsIDI1MywgMTcyLCAKKyAgICAxLCAyMTYsIDE5NSwgMjUzLCAxNzIsIDEsIDI0OCwgOTAsIDI1MywgMTcyLCAxLCAyNDgsIDE3LCAyNTMsIDE3MiwgMSwgCisgICAgMjE1LCAxNTEsIDI1MywgMTcyLCAxLCAyMjUsIDIyMSwgMjUzLCAxNzIsIDEsIDI0NCwgMTU0LCAyNTMsIDE3MiwgMSwgMjUyLCAKKyAgICA3NSwgMjUzLCAxNzIsIDEsIDI1MiwgMTQsIDI1MywgMTcyLCAxLCAyMjksIDY0LCAyNTMsIDE3MiwgMSwgMjI4LCAyMzksIAorICAgIDI1MywgMTcyLCAxLCAyMjgsIDI0MCwgMjUzLCAxNzIsIDEsIDIyOSwgMTA3LCAyNTMsIDE3MiwgMSwgMjI3LCAxNTYsIDI1MywgCisgICAgMTcyLCAxLCAyMjgsIDEwNSwgMjUzLCAxNzIsIDEsIDIzMSwgOTEsIDI1MywgMTcyLCAxLCAyNDEsIDExNiwgMjUzLCAxNzIsIAorICAgIDEsIDIxMCwgMTY2LCAyNTMsIDE3MiwgMSwgMjExLCA0NywgMjUzLCAxNzIsIDEsIDIxMywgMjU1LCAyNTMsIDE3MiwgMSwgCisgICAgMjIzLCAxMjgsIDI1MywgMTcyLCAxLCAyMzMsIDU4LCAyNTMsIDE3MiwgMSwgMjIxLCAxODEsIDI1MywgMTcyLCAxLCAyMTAsIAorICAgIDk0LCAyNTMsIDE3MiwgMSwgMjIwLCA2MywgMjUzLCAxNzIsIDEsIDIxMCwgNzQsIDI1MywgMTcyLCAxLCAyMTksIDE5OCwgCisgICAgMjUzLCAxNzIsIDEsIDIxOCwgMTkzLCAyNTMsIDE3MiwgMSwgMjQxLCAyMzgsIDI1MywgMTcyLCAyNTUsIDIxLCA3OCwgMjE2LCAKKyAgICA3OSwgMTEzLCAxNzAsIDExNywgMTIzLCA1OSwgMjI0LCAxNDAsIDQsIDExMywgMTcwLCAxMTcsIDEyMywgNTksIDIyNCwgCisgICAgMTQwLCAyMzMsIDg1LCAxMTMsIDE3MCwgMTE3LCAxMjMsIDU5LCAyMjQsIDE0MCwgMjMzLCA4NSwgMTIzLCA1OSwgMTE3LCAKKyAgICAxMTMsIDE3MCwgMjI0LCAxNDAsIDIzMywgODUsIDExMywgMjIyLCAyMzIsIDExNywgMTIzLCAyMjIsIDIzNCwgMjI0LCAxNDAsIAorICAgIDIzMywgODUsIDEyMywgMjIyLCAyMzQsIDExNywgMTEzLCAyMjIsIDIzMiwgMjI0LCAxNDAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgCisgICAgMSwgMjU0LCAxNjgsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjUyLCAyNSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDIsIAorICAgIDIwMSwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDgsIDE4OCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyNDEsIDIzOCwgCisgICAgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMTIsIDMwLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIxMCwgOTcsIDIzNSwgMjE4LCAKKyAgICAyMjUsIDI1NCwgMSwgMjQxLCAxOTUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjE2LCAyMjYsIDIzNSwgMjE4LCAyMjUsIAorICAgIDI1NCwgMSwgMjEwLCAyMzIsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjM0LCAyMjUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgCisgICAgMjMzLCA5MywgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMzEsIDY1LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyNywgMTk0LCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMSwgMjQ5LCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDI1MywgMTYyLCAyMzUsIAorICAgIDIxOCwgMjI1LCAyNTQsIDEsIDIyNSwgMjIxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDEsIDIyMiwgMjQsIDIzNSwgMjE4LCAKKyAgICAyMjUsIDI1NCwgMSwgMjI0LCAzNCwgMjM1LCAyMTgsIDIyNSwgMjU0LCAxLCAyMjMsIDY3LCAyMzUsIDIxOCwgMjI1LCAyNTQsIAorICAgIDEsIDIyMCwgMjAsIDIzNSwgMjE4LCAyMjUsIDI1NCwgMSwgMjE3LCAzNiwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTEwLCAKKyAgICAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAxMDUsIDIzNSwgMjE4LCAyMjUsIDI1NCwgNTQsIDE1OCwgMjM1LCAyMTgsIDIyNSwgCisgICAgMjU0LCA1NCwgMTYxLCAyMzUsIDIxOCwgMjI1LCAyNTQsIDU0LCAyMTYsIDI0NywgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgCisgICAgMjE1LCA3MywgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgMTIzLCAyNDAsIDIxMCwgMjM1LCAyMTgsIDIyNSwgMjU0LCA1NCwgCisgICAgMTIzLCAyMTYsIDE0NywgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI1NCwgMTY4LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjUyLCAKKyAgICAyNSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDI0MiwgMjAxLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQ4LCAxODgsIDIzNSwgCisgICAgMjE4LCAyMjYsIDcyLCAxLCAyNDEsIDIzOCwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxMiwgMjksIDIzNSwgMjE4LCAyMjYsIAorICAgIDcyLCAxLCAyMTAsIDk3LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjQxLCAxOTUsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAKKyAgICAyMTYsIDIyNiwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIxMCwgMjMyLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjM0LCAyMjUsIAorICAgIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMzMsIDkzLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjMxLCA2NCwgMjM1LCAyMTgsIAorICAgIDIyNiwgNzIsIDEsIDIyNywgMTk0LCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjIxLCAyNDksIDIzNSwgMjE4LCAyMjYsIDcyLCAKKyAgICAxLCAyMjUsIDIyMSwgMjM1LCAyMTgsIDIyNiwgNzIsIDEsIDIyMiwgMjQsIDIzNSwgMjE4LCAyMjYsIDcyLCAxLCAyMjAsIAorICAgIDIwLCAyMzUsIDIxOCwgMjI2LCA3MiwgMSwgMjE3LCAzNiwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxMTAsIDIzNSwgMjE4LCAKKyAgICAyMjYsIDcyLCA1NCwgMTA1LCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDE1OCwgMjM1LCAyMTgsIDIyNiwgNzIsIDU0LCAxNjEsIAorICAgIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMjE2LCAyNDcsIDIzNSwgMjE4LCAyMjYsIDcyLCA1NCwgMjE1LCA3MywgMjM1LCAKKyAgICAyMTgsIDIyNiwgNzIsIDU0LCAxMjMsIDI0MCwgMjEwLCAyMzUsIDIxOCwgMjI2LCA3MiwgNTQsIDEyMywgMjE2LCAxNDcsIAorICAgIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCA2MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgNjEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIAorICAgIDI1NCwgMjQzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgNzMsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDczLCA1NSwgMjAxLCAxLCAKKyAgICAyMTEsIDM3LCA3NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDc2LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAyMzQsIAorICAgIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDIyNiwgMjM0LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU1LCAyNSwgNTUsIDIwMSwgMSwgCisgICAgMjExLCAzNywgMjU1LCAyNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjQyLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDI0MiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjE2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIxNiwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjM3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNywgNTUsIDIwMSwgCisgICAgMSwgMjI2LCAxNDksIDI1NCwgMjU1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDI1NSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNDksIDI1NCwgMjQxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMiwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCAKKyAgICAxMiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1MywgMTY3LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDE2NywgNTUsIAorICAgIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI0LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNCwgNTUsIDIwMSwgMSwgCisgICAgMjI2LCAxNDksIDI1NCwgMjM1LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDIyNiwgMjMzLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyMjYsIDIzMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMTc4LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDE3OCwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjM0LCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQ1LCAxNjEsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNDUsIDE1OSwgNTUsIDIwMSwgMSwgMjI2LCAKKyAgICAxNDksIDI1NCwgMTIzLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjU0LCAyMzIsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgCisgICAgMjMyLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxMzEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTMxLCA1NSwgCisgICAgMjAxLCAxLCAyMjYsIDE0OSwgMjQ1LCAxNDcsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTQ3LCA1NSwgMjAxLCAxLCAKKyAgICAyMjYsIDE0OSwgMjQ1LCAxMTgsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI0NSwgMTE4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAKKyAgICAyNTQsIDExNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTM4LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIzMSwgCisgICAgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMTA4LCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjI2LCAxNzUsIDU1LCAyMDEsIAorICAgIDEsIDIyNiwgMTQ5LCAyNDAsIDExMywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI0NSwgMjE1LCA1NSwgMjAxLCAxLCAyMTEsIAorICAgIDM3LCAyNDUsIDIxNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgNDUsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1NCwgCisgICAgNDUsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyMzUsIDE4MSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjM1LCAxODEsIDU1LCAKKyAgICAyMDEsIDEsIDIyNiwgMTQ5LCAyMjYsIDE1OSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjI2LCAxNTksIDU1LCAyMDEsIDEsIAorICAgIDIyNiwgMTQ5LCAyNTQsIDQxLCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDQxLCA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgCisgICAgMjU0LCAyMzAsIDU1LCAyMDEsIDEsIDIyNiwgMTQ5LCAyNTMsIDIzNywgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI4LCAKKyAgICA1NSwgMjAxLCAxLCAyMjYsIDE0OSwgMjUzLCAyMzEsIDU1LCAyMDEsIDEsIDIxMSwgMzcsIDI1MywgMjMxLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjQ1LCA3NSwgNTUsIDIwMSwgMSwgMjExLCAzNywgMjQ1LCA3NSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIAorICAgIDI1MywgMjA2LCA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTMsIDIwNiwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDI1NCwgMjI1LCAKKyAgICA1NSwgMjAxLCAxLCAyMTEsIDM3LCAyNTQsIDIyNSwgNTUsIDIwMSwgMSwgMjI2LCAxNDksIDIyNiwgMTQwLCA1NSwgMjAxLCAKKyAgICAxLCAyMjYsIDE0OSwgMjUyLCAxMjUsIDIyMiwgMTI3LCAyMSwgMTEwLCAyMjIsIDEyNywgMjEsIDEwNSwgMjIyLCAxMjcsIAorICAgIDIxLCAxNTgsIDIyMiwgMTI3LCAyMSwgMTYxLCAyMjIsIDEyNywgMjEsIDE4OSwgMjIyLCAxMjcsIDIxLCAxOTQsIDIyMiwgCisgICAgMTI3LCAyMSwgMTk4LCAyMjIsIDEyNywgMjEsIDE5NSwgMjIyLCAxMjcsIDIxLCAyMDAsIDIyMiwgMTI3LCA1NCwgMjE2LCAKKyAgICAyNDcsIDIyMiwgMTI3LCA1NCwgMjE1LCA3MywgMjIyLCAxMjcsIDU0LCAyMTYsIDE2MiwgMjIyLCAxMjcsIDU0LCAyNDQsIAorICAgIDE1LCAyMjIsIDEyNywgNTQsIDI0NCwgMTE0LCAyMjIsIDEyNywgNTQsIDIxOSwgMTExLCAyMjIsIDEyNywgNTQsIDIyMCwgCisgICAgMTE2LCAyMjIsIDEyNywgNTQsIDI0NSwgMTg0LCAyMjIsIDEyNywgNTQsIDIyOCwgMTk1LCAyMjIsIDEyNywgNTQsIDEyMywgCisgICAgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgMTEzLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAxMzQsIDI0MCwgMjEwLCAyMjIsIAorICAgIDEyNywgNTQsIDI0NCwgMTEsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDI0NCwgODEsIDI0MCwgMjEwLCAyMjIsIDEyNywgCisgICAgNTQsIDIxOSwgMTI1LCAyNDAsIDIxMCwgMjIyLCAxMjcsIDU0LCAyMjAsIDEyMiwgMjQwLCAyMTAsIDIyMiwgMTI3LCA1NCwgCisgICAgMjQ1LCAxOTMsIDI0MCwgMjEwLCAyMjIsIDEyNywgNTQsIDIyOCwgMjAwLCAyNDAsIDIxMCwgMjIyLCAxMjcsIDI0NCwgMiwgCisgICAgMTIzLCAyNDIsIDI3LCAyMjIsIDEyNywgMjQ0LCAyLCAxMjMsIDIyNCwgMjEsIDIyMiwgMTI3LCAyNDQsIDIsIDEyMywgMjE2LCAKKyAgICAxNjgsIDIyMiwgMTI3LCAyNDQsIDIsIDExMywgMjE2LCAxNjYsIDExOCwgNSwgMjUwLCAyNTUsIDExOCwgNSwgMjU0LCA3NSwgCisgICAgMTE4LCA1LCAyMTMsIDE0NywgMTE4LCA1LCAyMzUsIDEwMiwgMTE4LCA1LCAyMTQsIDE2MSwgMTE4LCAxLCA2MSwgMTE4LCAxLCAKKyAgICAyNTUsIDczLCAxMTgsIDEsIDczLCAxMTgsIDEsIDIzNiwgMzMsIDExOCwgMSwgNzAsIDExOCwgMSwgMjE0LCAxMTgsIDExOCwgCisgICAgMSwgMTQ5LCAxNTMsIDExOCwgMSwgMTQ5LCAyMjIsIDE4MCwgMTE4LCAxLCAxNDksIDE1NiwgMTE4LCAxLCAxNDksIDIzMiwgCisgICAgMTg1LCAxMTgsIDEsIDc1LCAxMTgsIDEsIDI1NCwgMjAxLCAxMTgsIDEsIDc2LCAxMTgsIDEsIDI1MywgMTkyLCAxMTgsIDEsIAorICAgIDE3NiwgMTE4LCAxLCAyMzQsIDEzMiwgMTE4LCAxLCAyNDMsIDEzNSwgMTE4LCAxLCAyNDIsIDI0OSwgMTE4LCAxLCAyMjksIAorICAgIDc3LCAxMTgsIDEsIDI1MSwgMzMsIDExOCwgMSwgMjUwLCAxNTcsIDExOCwgMSwgMjM1LCAxNDEsIDExOCwgMSwgMjM1LCAKKyAgICAxMTQsIDExOCwgMSwgMjI3LCAxNjUsIDExOCwgMSwgMjE1LCAxNTYsIDExOCwgMSwgMjE1LCAxNDQsIDExOCwgMSwgMjQ4LCAKKyAgICAxMzUsIDExOCwgMSwgMjQ4LCAxMTksIDExOCwgMSwgMjI4LCAxMTAsIDExOCwgMSwgMjE3LCAxMDUsIDExOCwgMSwgMjE2LCAKKyAgICAyMDgsIDExOCwgMSwgMjQ4LCAyMjEsIDExOCwgMSwgMjQ4LCAyNSwgMTE4LCAxLCAxOTcsIDExOCwgMSwgMTkwLCAxMTgsIDEsIAorICAgIDIyNSwgMTQ3LCAxMTgsIDEsIDI1MiwgMTkxLCAxMTgsIDEsIDI1MiwgMTgsIDExOCwgMSwgMTg0LCAxMTgsIDEsIDE5MSwgCisgICAgMTE4LCAxLCAyMDUsIDExOCwgMSwgMjMzLCAxMzUsIDExOCwgMSwgMjE0LCAyNywgMTE4LCAxLCAyMjAsIDEwMiwgMTE4LCAxLCAKKyAgICAyMTgsIDIyMywgMTE4LCAxLCAyMDYsIDExOCwgMSwgMTYyLCAxMTgsIDEsIDIzMiwgMTg0LCAxMTgsIDEsIDU1LCAzNiwgCisgICAgMjMyLCAxNzUsIDExOCwgMSwgNTUsIDM2LCAyMjIsIDE3OSwgMTE4LCAxLCA1NSwgMzYsIDIyOCwgOTIsIDExOCwgMjUsIDUsIAorICAgIDI1NSwgNzMsIDExOCwgMjUsIDUsIDI1MiwgMTUsIDI1NSwgNzMsIDExOCwgMjUsIDUsIDczLCAxMTgsIDI1LCA1LCAyMzYsIAorICAgIDMzLCAxMTgsIDI1LCA1LCA3MCwgMTE4LCAyNSwgNSwgMjE0LCAxMTgsIDExOCwgMjUsIDUsIDE0OSwgMTUzLCAxMTgsIDI1LCAKKyAgICA1LCAxNDksIDIyMiwgMTgwLCAxMTgsIDI1LCA1LCAxNDksIDE1NiwgMTE4LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTE4LCAKKyAgICAyNSwgNSwgNzUsIDExOCwgMjUsIDUsIDI1NCwgMjAxLCAxMTgsIDI1LCA1LCA3NiwgMTE4LCAyNSwgNSwgMjUzLCAxOTIsIAorICAgIDExOCwgMjEzLCAxNTIsIDExOCwgMjQ4LCAxNzgsIDExOCwgNTIsIDI0OCwgMTc4LCAxMTgsIDIyNCwgMTQxLCAyNDcsIDEyMCwgCisgICAgMTE4LCAyMjQsIDE0MSwgNTIsIDI0NywgMTIwLCAxMTgsIDIyNCwgMTQxLCAyMzIsIDIxMywgMTE4LCAyMjQsIDE0MSwgMjQ5LCAKKyAgICAxMzcsIDEzMCwgMTE4LCAyMjQsIDE0MSwgMjMyLCAxMTUsIDExOCwgNTQsIDExMCwgMTE4LCA1NCwgMTA1LCAxMTgsIDU0LCAKKyAgICAxNTgsIDExOCwgNTQsIDE2MSwgMTE4LCA1NCwgMTg5LCAxMTgsIDU0LCAxOTQsIDExOCwgNTQsIDE5OCwgMTE4LCA1NCwgCisgICAgMTk1LCAxMTgsIDU0LCAyMDAsIDExOCwgNTQsIDIxNiwgMjQ3LCAxMTgsIDU0LCAyMTUsIDczLCAxMTgsIDU0LCAyMTYsIAorICAgIDE2MiwgMTE4LCA1NCwgMjQ0LCAxNSwgMTE4LCA1NCwgMjQ0LCAxMTQsIDExOCwgNTQsIDIxOSwgMTExLCAxMTgsIDU0LCAKKyAgICAyMjAsIDExNiwgMTE4LCA1NCwgMjQ1LCAxODQsIDExOCwgNTQsIDIyOCwgMTk1LCAxMTgsIDU0LCAxMjMsIDI0MCwgMjEwLCAKKyAgICAxMTgsIDU0LCAxMjMsIDIxNiwgMTQ3LCAxMTgsIDIxLCAyMTAsIDg2LCAxMTgsIDIxLCAxMTAsIDExOCwgMjEsIDEwNSwgCisgICAgMTE4LCAyMSwgMTU4LCAxMTgsIDIxLCAxNjEsIDExOCwgMjEsIDE4OSwgMTE4LCAyMSwgMTk0LCAxMTgsIDIxLCAxOTgsIAorICAgIDExOCwgMjEsIDE5NSwgMTE4LCAyMSwgMjAwLCAyMzQsIDI0NCwgNSwgMjUwLCAyNTUsIDIzNCwgMjQ0LCA1LCAyNTQsIDc1LCAKKyAgICAyMzQsIDI0NCwgNSwgMjEzLCAxNDcsIDIzNCwgMjQ0LCAxLCA2MSwgMjM0LCAyNDQsIDEsIDI1NSwgNzMsIDIzNCwgMjQ0LCAKKyAgICAxLCA3MywgMjM0LCAyNDQsIDEsIDIzNiwgMzMsIDIzNCwgMjQ0LCAxLCA3MCwgMjM0LCAyNDQsIDEsIDIxNCwgMTE4LCAyMzQsIAorICAgIDI0NCwgMSwgNzUsIDIzNCwgMjQ0LCAxLCAyNTQsIDIwMSwgMjM0LCAyNDQsIDEsIDc2LCAyMzQsIDI0NCwgMSwgMjUzLCAKKyAgICAxOTIsIDIzNCwgMjQ0LCAxLCAxNzYsIDIzNCwgMjQ0LCAxLCAyMzQsIDEzMiwgMjM0LCAyNDQsIDEsIDI0MywgMTM1LCAyMzQsIAorICAgIDI0NCwgMSwgMjQyLCAyNDksIDIzNCwgMjQ0LCAxLCAyMjksIDc3LCAyMzQsIDI0NCwgMSwgMjUxLCAzMywgMjM0LCAyNDQsIAorICAgIDEsIDI1MCwgMTU3LCAyMzQsIDI0NCwgMSwgMjM1LCAxNDEsIDIzNCwgMjQ0LCAxLCAyMzUsIDExNCwgMjM0LCAyNDQsIDEsIAorICAgIDIyNywgMTY1LCAyMzQsIDI0NCwgMSwgMjE1LCAxNTYsIDIzNCwgMjQ0LCAxLCAyMTUsIDE0NCwgMjM0LCAyNDQsIDEsIDI0OCwgCisgICAgMTM1LCAyMzQsIDI0NCwgMSwgMjQ4LCAxMjQsIDIzNCwgMjQ0LCAxLCAyNDgsIDExOSwgMjM0LCAyNDQsIDEsIDIyMywgMzksIAorICAgIDIzNCwgMjQ0LCAxLCAyMjgsIDExMCwgMjM0LCAyNDQsIDEsIDIxNywgMTA1LCAyMzQsIDI0NCwgMSwgMjE2LCAyMDgsIDIzNCwgCisgICAgMjQ0LCAxLCAyNDgsIDIyMSwgMjM0LCAyNDQsIDEsIDI0OCwgMjUsIDIzNCwgMjQ0LCAxLCAxOTcsIDIzNCwgMjQ0LCAxLCAKKyAgICAxOTAsIDIzNCwgMjQ0LCAxLCAyMjUsIDE0NywgMjM0LCAyNDQsIDEsIDI1MiwgMTkxLCAyMzQsIDI0NCwgMSwgMjUyLCAxOCwgCisgICAgMjM0LCAyNDQsIDEsIDE4NCwgMjM0LCAyNDQsIDEsIDE5MSwgMjM0LCAyNDQsIDEsIDIwNSwgMjM0LCAyNDQsIDEsIDIzMywgCisgICAgMTM1LCAyMzQsIDI0NCwgMSwgMjE0LCAyNywgMjM0LCAyNDQsIDEsIDIyMCwgMTAyLCAyMzQsIDI0NCwgMSwgMjE4LCAyMjMsIAorICAgIDIzNCwgMjQ0LCAxLCAyMDYsIDIzNCwgMjQ0LCAxLCAxNjIsIDIzNCwgMjQ0LCAyNSwgNSwgMjU1LCA3MywgMjM0LCAyNDQsIAorICAgIDI1LCA1LCA3MywgMjM0LCAyNDQsIDI1LCA1LCAyMzYsIDMzLCAyMzQsIDI0NCwgMjUsIDUsIDcwLCAyMzQsIDI0NCwgMjUsIAorICAgIDUsIDIxNCwgMTE4LCAyMzQsIDI0NCwgMjUsIDUsIDc1LCAyMzQsIDI0NCwgMjUsIDUsIDI1NCwgMjAxLCAyMzQsIDI0NCwgCisgICAgMjUsIDUsIDc2LCAyMzQsIDI0NCwgMjUsIDUsIDI1MywgMTkyLCAyMzQsIDI0NCwgNSwgMjEzLCAxNTIsIDIzNCwgMjQ0LCA1LCAKKyAgICAyMjcsIDIwNSwgMjM0LCAyNDQsIDI1NSwgMjEsIDUwLCAyMzQsIDI0NCwgMjQ1LCAxMjEsIDUwLCAyMzQsIDI0NCwgNTQsIAorICAgIDUwLCAyMzQsIDI0NCwgMjIxLCAxNzMsIDc4LCAyMzQsIDI0NCwgNTIsIDIyMSwgMTczLCA3OCwgMjM0LCAyNDQsIDI0OCwgCisgICAgMTc4LCAyMzQsIDI0NCwgNTIsIDI0OCwgMTc4LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjIsIDE4LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMTcsIDgwLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyNTIsIDE2OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjUxLCAKKyAgICAyMywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQ4LCAyMDMsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0MywgMTIwLCAyMTksIAorICAgIDM2LCAyMTksIDQ0LCAxLCAyMzEsIDIxMCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI5LCA3NCwgMjE5LCAzNiwgMjE5LCA0NCwgCisgICAgMSwgMjMzLCAxMTIsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIyOSwgMjEzLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTQsIDI0LCAKKyAgICAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjYsIDczLCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTEsIDg0LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMjMsIDE2OCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjQyLCAzNywgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjM0LCAKKyAgICAyNDgsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDIzNSwgMTM2LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMjcsIDE2MiwgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMSwgMjU0LCAyMDksIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0NSwgMjA3LCAyMTksIDM2LCAyMTksIAorICAgIDQ0LCAxLCAyMzYsIDM0LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMTQsIDIwOCwgMjE5LCAzNiwgMjE5LCA0NCwgMSwgMjI2LCAKKyAgICAyMjIsIDIxOSwgMzYsIDIxOSwgNDQsIDEsIDI0NSwgMTk3LCAyMTksIDM2LCAyMTksIDQ0LCAxLCAyMzEsIDIyMywgMjE5LCAKKyAgICAzNiwgMjE5LCA0NCwgMjEsIDIxMCwgODYsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxMTAsIDIxOSwgMzYsIDIxOSwgNDQsIAorICAgIDIxLCAxMDUsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxNTgsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxNjEsIDIxOSwgMzYsIAorICAgIDIxOSwgNDQsIDIxLCAxODksIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTQsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTgsIAorICAgIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAxOTUsIDIxOSwgMzYsIDIxOSwgNDQsIDIxLCAyMDAsIDI1MCwgMTUxLCA1LCAyNTAsIAorICAgIDI1NSwgMjUwLCAxNTEsIDUsIDI1NCwgNzUsIDI1MCwgMTUxLCA1LCAyMTMsIDE0NywgMjUwLCAxNTEsIDEsIDI1NSwgNzMsIAorICAgIDI1MCwgMTUxLCAxLCA3MywgMjUwLCAxNTEsIDEsIDcwLCAyNTAsIDE1MSwgMSwgNzUsIDI1MCwgMTUxLCAxLCAyMzUsIDEwLCAKKyAgICAyNTAsIDE1MSwgMSwgMjM0LCAxMzEsIDI1MCwgMTUxLCAxLCAyNDMsIDEzMiwgMjUwLCAxNTEsIDEsIDI0MiwgMjQ4LCAyNTAsIAorICAgIDE1MSwgMSwgMjI5LCA3NiwgMjUwLCAxNTEsIDEsIDI1MSwgMzIsIDI1MCwgMTUxLCAxLCAyNTAsIDE1NiwgMjUwLCAxNTEsIAorICAgIDEsIDIzNSwgMTQwLCAyNTAsIDE1MSwgMSwgMjM1LCAxMTMsIDI1MCwgMTUxLCAxLCAyMjcsIDE2NCwgMjUwLCAxNTEsIDEsIAorICAgIDIxNSwgMTU1LCAyNTAsIDE1MSwgMSwgMjE1LCAxNDMsIDI1MCwgMTUxLCAxLCAyNDgsIDEzNCwgMjUwLCAxNTEsIDEsIDI0OCwgCisgICAgMTE4LCAyNTAsIDE1MSwgMSwgMjI4LCAxMDksIDI1MCwgMTUxLCAxLCAyMTcsIDEwMSwgMjUwLCAxNTEsIDEsIDIxNiwgMjA3LCAKKyAgICAyNTAsIDE1MSwgMSwgMjQ4LCAyMjAsIDI1MCwgMTUxLCAxLCAyNDgsIDI0LCAyNTAsIDE1MSwgMSwgMjI5LCAyMjUsIDI1MCwgCisgICAgMTUxLCAxLCAyMjYsIDg5LCAyNTAsIDE1MSwgMSwgMjI1LCAxNDYsIDI1MCwgMTUxLCAxLCAyNTIsIDE4OSwgMjUwLCAxNTEsIAorICAgIDEsIDI1MiwgMTcsIDI1MCwgMTUxLCAxLCAyMzEsIDIzNywgMjUwLCAxNTEsIDEsIDIxMCwgMTY3LCAyNTAsIDE1MSwgMSwgCisgICAgMjExLCAxMDMsIDI1MCwgMTUxLCAxLCAyMjMsIDE4NCwgMjUwLCAxNTEsIDEsIDIzMywgMTM0LCAyNTAsIDE1MSwgMSwgMjEyLCAKKyAgICA2NCwgMjUwLCAxNTEsIDEsIDIyMiwgMzEsIDI1MCwgMTUxLCAxLCAyNDIsIDQ2LCAyNTAsIDE1MSwgMjUsIDUsIDYxLCAyNTAsIAorICAgIDE1MSwgMjUsIDUsIDczLCAyNTAsIDE1MSwgMjUsIDUsIDIzNiwgMzMsIDI1MCwgMTUxLCAyNSwgNSwgNzAsIDI1MCwgMTUxLCAKKyAgICAyNSwgNSwgMjE0LCAxMTgsIDI1MCwgMTUxLCAyNSwgNSwgNzUsIDI1MCwgMTUxLCAyNSwgNSwgMjU0LCAyMDEsIDI1MCwgCisgICAgMTUxLCAyNSwgNSwgNzYsIDI1MCwgMTUxLCAyNSwgNSwgMjUzLCAxOTIsIDI1MCwgMTUxLCAyNSwgNSwgMjI2LCAyMTksIAorICAgIDI1MCwgMTUxLCAxNDQsIDc4LCAyNTAsIDE1MSwgMjUzLCAxOTMsIDc4LCAyNTAsIDE1MSwgMjEzLCAxNTIsIDI1MCwgMTUxLCAKKyAgICAyMzEsIDIzNSwgMjUwLCAxNTEsIDIxLCAyMTAsIDg2LCAyNTAsIDE1MSwgMjEsIDExMCwgMjUwLCAxNTEsIDIxLCAxMDUsIAorICAgIDI1MCwgMTUxLCAyMSwgMTU4LCAyNTAsIDE1MSwgMjEsIDE2MSwgMjUwLCAxNTEsIDIxLCAxODksIDI1MCwgMTUxLCAyMSwgCisgICAgMTk0LCAyNTAsIDE1MSwgMjEsIDE5OCwgMjUwLCAxNTEsIDIxLCAxOTUsIDI1MCwgMTUxLCAyMSwgMjAwLCAyNTAsIDE1MSwgCisgICAgMjIxLCAxNzMsIDc4LCAyNTAsIDE1MSwgMjQ4LCAxNzgsIDI1MCwgMTUxLCA1MiwgMjQ4LCAxNzgsIDI1MCwgMTUxLCAyMjQsIAorICAgIDEzLCA3OCwgMTc0LCA1LCAyNTAsIDI1NSwgMTc0LCA1LCAyNTQsIDc1LCAxNzQsIDUsIDIxMywgMTQ3LCAxNzQsIDEsIDYxLCAKKyAgICAxNzQsIDEsIDI1NSwgNzMsIDE3NCwgMSwgNzMsIDE3NCwgMSwgMjM2LCAzMywgMTc0LCAxLCA3MCwgMTc0LCAxLCAyMTQsIAorICAgIDExOCwgMTc0LCAxLCAxNDksIDE1MywgMTc0LCAxLCAxNDksIDIyMiwgMTgwLCAxNzQsIDEsIDE0OSwgMTU2LCAxNzQsIDEsIAorICAgIDE0OSwgMjMyLCAxODUsIDE3NCwgMSwgNzUsIDE3NCwgMSwgMjU0LCAyMDEsIDE3NCwgMSwgNzYsIDE3NCwgMSwgMjUzLCAKKyAgICAxOTIsIDE3NCwgMSwgMTc2LCAxNzQsIDEsIDIzNCwgMTMyLCAxNzQsIDEsIDI0MywgMTM1LCAxNzQsIDEsIDI0MiwgMjQ5LCAKKyAgICAxNzQsIDEsIDIyOSwgNzcsIDE3NCwgMSwgMjUxLCAzMywgMTc0LCAxLCAyNTAsIDE1NywgMTc0LCAxLCAyMzUsIDE0MSwgCisgICAgMTc0LCAxLCAyMzUsIDExNCwgMTc0LCAxLCAyMjcsIDE2NSwgMTc0LCAxLCAyMTUsIDE1NiwgMTc0LCAxLCAyMTUsIDE0NCwgCisgICAgMTc0LCAxLCAyNDgsIDEzNSwgMTc0LCAxLCAyNDgsIDExOSwgMTc0LCAxLCAyMjgsIDExMCwgMTc0LCAxLCAyMTcsIDEwNSwgCisgICAgMTc0LCAxLCAyMTYsIDIwOCwgMTc0LCAxLCAyNDgsIDIyMSwgMTc0LCAxLCAyNDgsIDI1LCAxNzQsIDEsIDE5NywgMTc0LCAxLCAKKyAgICAxOTAsIDE3NCwgMSwgMjI1LCAxNDcsIDE3NCwgMSwgMjUyLCAxOTEsIDE3NCwgMSwgMjUyLCAxOCwgMTc0LCAxLCAxODQsIAorICAgIDE3NCwgMSwgMTkxLCAxNzQsIDEsIDIwNSwgMTc0LCAxLCAyMzMsIDEzNSwgMTc0LCAxLCAyMzIsIDE4NCwgMTc0LCAxLCAKKyAgICAyMTQsIDI3LCAxNzQsIDEsIDIyMCwgMTAyLCAxNzQsIDEsIDIxOCwgMjIzLCAxNzQsIDEsIDIwNiwgMTc0LCAxLCAxNjIsIAorICAgIDE3NCwgMjUsIDUsIDI1NSwgNzMsIDE3NCwgMjUsIDUsIDczLCAxNzQsIDI1LCA1LCAyMzYsIDMzLCAxNzQsIDI1LCA1LCA3MCwgCisgICAgMTc0LCAyNSwgNSwgMjE0LCAxMTgsIDE3NCwgMjUsIDUsIDE0OSwgMTUzLCAxNzQsIDI1LCA1LCAxNDksIDIyMiwgMTgwLCAKKyAgICAxNzQsIDI1LCA1LCAxNDksIDE1NiwgMTc0LCAyNSwgNSwgMTQ5LCAyMzIsIDE4NSwgMTc0LCAyNSwgNSwgNzUsIDE3NCwgMjUsIAorICAgIDUsIDI1NCwgMjAxLCAxNzQsIDI1LCA1LCA3NiwgMTc0LCAyNSwgNSwgMjUzLCAxOTIsIDE3NCwgNSwgMjEzLCAxNTIsIDE3NCwgCisgICAgNSwgMjUzLCAxNzUsIDE3NCwgNSwgMjM1LCAxMDIsIDE3NCwgNSwgMjE0LCAxNjEsIDE3NCwgMjI2LCAyMDQsIDE3NCwgMjQ4LCAKKyAgICAxNzgsIDE3NCwgNTIsIDI0OCwgMTc4LCAxNzQsIDI1NSwgMjEsIDUwLCAxNzQsIDIyMCwgMTM3LCAxNzQsIDIxLCAyMTAsIAorICAgIDg2LCAxNzQsIDIxLCAxMTAsIDE3NCwgMjEsIDEwNSwgMTc0LCAyMSwgMTU4LCAxNzQsIDIxLCAxNjEsIDE3NCwgMjEsIDE4OSwgCisgICAgMTc0LCAyMSwgMTk0LCAxNzQsIDIxLCAxOTgsIDE3NCwgMjEsIDE5NSwgMTc0LCAyMSwgMjAwLCAyMTcsIDY5LCAxLCA2MSwgCisgICAgMjE3LCA2OSwgMSwgMjU1LCA3MywgMjE3LCA2OSwgMSwgNzMsIDIxNywgNjksIDEsIDIzNiwgMzMsIDIxNywgNjksIDEsIDcwLCAKKyAgICAyMTcsIDY5LCAxLCAyMTQsIDExOCwgMjE3LCA2OSwgMSwgNzUsIDIxNywgNjksIDEsIDI1NCwgMjAxLCAyMTcsIDY5LCAxLCAKKyAgICA3NiwgMjE3LCA2OSwgMSwgMjUzLCAxOTIsIDIxNywgNjksIDEsIDE3NiwgMjE3LCA2OSwgMSwgMjM0LCAxMzIsIDIxNywgNjksIAorICAgIDEsIDI0MywgMTM1LCAyMTcsIDY5LCAxLCAyNDIsIDI0OSwgMjE3LCA2OSwgMSwgMjI5LCA3NywgMjE3LCA2OSwgMSwgMjUxLCAKKyAgICAzMywgMjE3LCA2OSwgMSwgMjUwLCAxNTcsIDIxNywgNjksIDEsIDIzNSwgMTQxLCAyMTcsIDY5LCAxLCAyMzUsIDExNCwgCisgICAgMjE3LCA2OSwgMSwgMjI3LCAxNjUsIDIxNywgNjksIDEsIDIxNSwgMTU2LCAyMTcsIDY5LCAxLCAyMTUsIDE0NCwgMjE3LCAKKyAgICA2OSwgMSwgMjQ4LCAxMzUsIDIxNywgNjksIDEsIDI0OCwgMTE5LCAyMTcsIDY5LCAxLCAyMjgsIDExMCwgMjE3LCA2OSwgMSwgCisgICAgMjE3LCAxMDUsIDIxNywgNjksIDEsIDIxNiwgMjA4LCAyMTcsIDY5LCAxLCAyNDgsIDIyMSwgMjE3LCA2OSwgMSwgMjQ4LCAKKyAgICAyNSwgMjE3LCA2OSwgMSwgMTk3LCAyMTcsIDY5LCAxLCAxOTAsIDIxNywgNjksIDEsIDIyNSwgMTQ3LCAyMTcsIDY5LCAxLCAKKyAgICAyNTIsIDE5MSwgMjE3LCA2OSwgMSwgMjUyLCAxOCwgMjE3LCA2OSwgMSwgMTg0LCAyMTcsIDY5LCAxLCAxOTEsIDIxNywgNjksIAorICAgIDEsIDIwNSwgMjE3LCA2OSwgMSwgMjMzLCAxMzUsIDIxNywgNjksIDEsIDIxNCwgMjcsIDIxNywgNjksIDEsIDIyMCwgMTAyLCAKKyAgICAyMTcsIDY5LCAxLCAyMDYsIDIxNywgNjksIDEsIDE2MiwgMjE3LCA2OSwgMSwgMjIyLCAxNzksIDIxNywgNjksIDUsIDI1NCwgCisgICAgNzUsIDIxNywgNjksIDUsIDIxMywgMTQ3LCAyMTcsIDY5LCAyNSwgNSwgMjU1LCA3MywgMjE3LCA2OSwgMjUsIDUsIDczLCAKKyAgICAyMTcsIDY5LCAyNSwgNSwgMjM2LCAzMywgMjE3LCA2OSwgMjUsIDUsIDcwLCAyMTcsIDY5LCAyNSwgNSwgMjE0LCAxMTgsIAorICAgIDIxNywgNjksIDI1LCA1LCA3NSwgMjE3LCA2OSwgMjUsIDUsIDI1NCwgMjAxLCAyMTcsIDY5LCAyNSwgNSwgNzYsIDIxNywgCisgICAgNjksIDI1LCA1LCAyNTMsIDE5MiwgMjE3LCA2OSwgNSwgMjEzLCAxNTIsIDIxNywgNjksIDUsIDIyNywgMjA1LCAyMTcsIDY5LCAKKyAgICAyMSwgMjEwLCA4NiwgMjE3LCA2OSwgMjEsIDExMCwgMjE3LCA2OSwgMjEsIDEwNSwgMjE3LCA2OSwgMjEsIDE1OCwgMjE3LCAKKyAgICA2OSwgMjEsIDE2MSwgMjE3LCA2OSwgMjEsIDE4OSwgMjE3LCA2OSwgMjEsIDE5NCwgMjE3LCA2OSwgMjEsIDE5OCwgMjE3LCAKKyAgICA2OSwgMjEsIDE5NSwgMjE3LCA2OSwgMjEsIDIwMCwgMTUsIDUsIDYxLCAxNSwgNSwgMTE1LCAzMCwgNjEsIDE1LCA1LCAxMTUsIAorICAgIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDExNSwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDExNSwgMzAsIDE2MiwgCisgICAgMTUsIDUsIDExNSwgMzAsIDIzNiwgMzUsIDE1LCA1LCAxMTUsIDMwLCAyMzMsIDExNiwgMjQyLCA5NCwgMTUsIDUsIDExNSwgCisgICAgMzAsIDIzMCwgNjEsIDE1LCA1LCAxMTUsIDMwLCAyMjIsIDIxLCAxNSwgNSwgMjU1LCA3NSwgMTUsIDUsIDI1NSwgMjUsIDE1LCAKKyAgICA1LCAyNTUsIDI2LCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyNTUsIDI2LCAzMCwgMjQ2LCA2NywgMjQyLCA5NCwgMTUsIDUsIAorICAgIDI1NSwgMjYsIDMwLCAyNDMsIDExOCwgMTUsIDUsIDI1NSwgMjYsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyNTUsIDI2LCAzMCwgMTYyLCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyNTUsIDI2LCAKKyAgICAzMCwgMjM2LCA5LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjU1LCAyNiwgMzAsIDIyMCwgNDgsIAorICAgIDE1LCA1LCAyNTUsIDI2LCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgNzAsIDE1LCA1LCAyNTUsIDI2LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjU1LCAyMywgMTUsIDUsIDI1NSwgMjQsIDMwLCAyNTIsIDE2MCwgMTUsIDUsIDI1NSwgMjQsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyNTUsIDI0LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIyMCwgCisgICAgMTAwLCAxNSwgNSwgMjU1LCAyNCwgMzAsIDIxNywgNzIsIDE1LCA1LCAyNTQsIDI1NSwgMTUsIDUsIDI1NCwgMTg2LCAxNSwgCisgICAgNSwgMjU0LCAxODcsIDMwLCAyNDUsIDg3LCAxNSwgNSwgMjU0LCAxODcsIDMwLCAyMjAsIDEwLCA5NiwgMjQyLCAxOTAsIDE1LCAKKyAgICA1LCAyNTQsIDE3OCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjU0LCAxNzgsIDE1LCA1LCAyNTQsIDE3OSwgMzAsIDI0NywgCisgICAgMjE2LCAxNSwgNSwgMjU0LCAxNzksIDMwLCAyNDIsIDE5MCwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMTYyLCAxNSwgNSwgMjU0LCAKKyAgICAxNzksIDMwLCAyMzQsIDI1NSwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDI1NCwgMTc5LCAzMCwgCisgICAgMjIwLCA2MywgMTUsIDUsIDI1NCwgMTc5LCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyNTQsIDE3NSwgMTUsIDUsIDI1NCwgMTY4LCAKKyAgICAxNSwgNSwgMjU0LCAxMzIsIDE1LCA1LCAyNTQsIDEzMywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNTQsIDEyMywgMTUsIDUsIAorICAgIDI1NCwgMTI0LCAxMTcsIDI1NCwgMTIzLCAxNSwgNSwgMjU0LCAxMjQsIDEzNCwgMjE2LCA4NSwgMTUsIDUsIDI1NCwgMTI0LCAKKyAgICA5NiwgMjI5LCAyMTcsIDIyNiwgMTY0LCAyNTQsIDEyNCwgOTYsIDIyOSwgMjE2LCAxNSwgNSwgMjU0LCAxMjQsIDk2LCAyMjksIAorICAgIDIxNywgMjE4LCAyMzMsIDE1LCA1LCAyNTQsIDk0LCAxNSwgNSwgMjU0LCA2NywgMTUsIDUsIDI1NCwgMzUsIDE1LCA1LCAKKyAgICAyNTQsIDM2LCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyNTQsIDgsIDE1LCA1LCAyNTMsIDIzNiwgMTUsIDUsIDI1MywgMjMxLCAKKyAgICAxNSwgNSwgMjUzLCAyMzIsIDIxMCwgNDAsIDIxNiwgMjM5LCAxNSwgNSwgMjUzLCAyMzIsIDIzNSwgMywgMjE2LCAyMzksIAorICAgIDE1LCA1LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMjE1LCAxMTQsIDExNywgMjE1LCAxMTQsIDIxNSwgMTE0LCAxMTcsIAorICAgIDIxNSwgMTE0LCAyMjYsIDIxLCAxNSwgNSwgMjUzLCAyMzIsIDExNywgMjUzLCAyMzIsIDExNywgMjUzLCAyMzEsIDE1LCA1LCAKKyAgICAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMTE3LCAyNTMsIDIzMiwgMjQ5LCAxMjUsIDI1MywgMjMyLCAxMTcsIDI1MywgCisgICAgMjMyLCAxMTcsIDI1MywgMjMxLCAxNSwgNSwgMjUzLCAyMjksIDE1LCA1LCAyNTMsIDIyNiwgMTUsIDUsIDI1MiwgMTkxLCAKKyAgICAxNSwgNSwgMjUyLCAxNzYsIDE1LCA1LCAyNTIsIDE3MSwgMTUsIDUsIDI1MiwgMTY3LCAxNSwgNSwgMjUyLCAxNjEsIDE1LCAKKyAgICA1LCAyNTIsIDE2MiwgMTE3LCAyNTIsIDE2MSwgMTUsIDUsIDI1MiwgMTYwLCAxNSwgNSwgMTMwLCAxNSwgNSwgMjUyLCAxNDAsIAorICAgIDE1LCA1LCAyNTIsIDYsIDE1LCA1LCAyNTIsIDcsIDMwLCA2MSwgMTUsIDUsIDI1MiwgNywgMzAsIDI0MywgOTYsIDE1LCA1LCAKKyAgICAyNTIsIDcsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjUxLCAxMjUsIDE1LCA1LCAyNTEsIDEyNiwgMTE3LCAyNTEsIAorICAgIDEyNiwgMjU1LCAyNSwgMTUsIDUsIDI1MSwgMTI2LCAxMTcsIDI1MSwgMTI2LCAyMTQsIDE5MCwgMTUsIDUsIDI1MSwgMTI2LCAKKyAgICAyNDksIDEyNSwgMjUxLCAxMjUsIDE1LCA1LCAyNTEsIDEwOSwgMTUsIDUsIDI1MSwgMTEwLCAxMTcsIDI1MSwgMTA5LCAxNSwgCisgICAgNSwgMjUxLCA5OCwgMTUsIDUsIDI1MSwgOTcsIDE1LCA1LCAyNDgsIDIyMSwgMTUsIDUsIDI0OCwgMjEyLCAxNSwgNSwgMjQ4LCAKKyAgICAyMTMsIDIzNCwgNjYsIDMwLCAxMTUsIDk2LCAyMzEsIDE0NywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjU0LCAKKyAgICAxMzIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI1MiwgMTYwLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIAorICAgIDMwLCAyNTIsIDYsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDI0MywgMTM1LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgCisgICAgNjYsIDMwLCAyNDMsIDEzNiwgOTYsIDIzMSwgMTQ3LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyNDIsIDIxNCwgCisgICAgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIAorICAgIDI0MiwgMTAzLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAxNjIsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgCisgICAgMzAsIDIzNSwgMTc5LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzUsIDE4MCwgOTYsIDIzMiwgOTgsIDE1LCA1LCAKKyAgICAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzMsIDEzNSwgCisgICAgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCA5OCwgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjMyLCAKKyAgICA5OSwgOTYsIDIzMSwgMTQ2LCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMzIsIDg0LCAxNSwgNSwgMjQ4LCAyMTMsIAorICAgIDIzNCwgNjYsIDMwLCAyMjksIDEwNywgMTUsIDUsIDI0OCwgMjEzLCAyMzQsIDY2LCAzMCwgMjI2LCAyMiwgOTYsIDIyNiwgCisgICAgMjEsIDE1LCA1LCAyNDgsIDIxMywgMjM0LCA2NiwgMzAsIDIxOSwgMTkxLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAKKyAgICAyMTcsIDcyLCAxNSwgNSwgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTQsIDIzMSwgOTYsIDI0MiwgMTk3LCAxNSwgNSwgCisgICAgMjQ4LCAyMTMsIDIzNCwgNjYsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDI0OCwgMTg3LCAxNSwgNSwgMjQ4LCAxNjYsIDE1LCA1LCAKKyAgICAyNDgsIDE2NSwgMTUsIDUsIDI0OCwgMTY0LCAxNSwgNSwgMjQ4LCAzLCAxNSwgNSwgMjQ3LCAyNDIsIDE1LCA1LCAyNDcsIAorICAgIDIxNywgMTUsIDUsIDI0NywgMjE4LCAzMCwgMjIwLCA2MywgMTUsIDUsIDI0NywgMjE2LCAxNSwgNSwgMjQ3LCAyMDYsIDE1LCAKKyAgICA1LCAyNDcsIDIwNywgMjM0LCAyMDgsIDEwNCwgMjQyLCA5NSwgMjQ3LCAxODcsIDE1LCA1LCAyNDcsIDE4NywgMTUsIDUsIAorICAgIDI0NiwgNzgsIDE1LCA1LCAyNDYsIDc5LCAxMTcsIDI0NiwgNzgsIDE1LCA1LCAyNDYsIDc5LCAyNDIsIDk0LCAxNSwgNSwgCisgICAgMjQ2LCA3OSwgMjIwLCA0NSwgMTUsIDUsIDI0NiwgNzYsIDE1LCA1LCAyNDYsIDc3LCAzMCwgMjQ1LCA3MiwgMTUsIDUsIAorICAgIDI0NiwgNzUsIDE1LCA1LCAyNDYsIDc0LCAxNSwgNSwgMjQ2LCA3MywgMTUsIDUsIDI0NiwgNzIsIDE1LCA1LCAyNDYsIDY4LCAKKyAgICAxNSwgNSwgMjQ2LCA2NiwgMTUsIDUsIDI0NiwgNjcsIDI0MiwgOTQsIDE1LCA1LCAyNDYsIDY3LCAyNDIsIDk1LCAyNDIsIAorICAgIDk0LCAxNSwgNSwgMjQ2LCA2NSwgMTUsIDUsIDI0NiwgNTgsIDE1LCA1LCA3NSwgMTUsIDUsIDE2MCwgMzAsIDIyNiwgMjEsIAorICAgIDE1LCA1LCAxNjAsIDExNywgMTYwLCAyMjcsIDE5NSwgMTE3LCAyMjcsIDE5NCwgMTUsIDUsIDI0NSwgMjM0LCAxNSwgNSwgCisgICAgMjQ1LCAyMzUsIDMwLCAxMTUsIDk2LCAyNDIsIDQ5LCA5NiwgMjQ4LCAyMjEsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDI0MywgCisgICAgOTYsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjQ1LCAyMzUsIDMwLCAyMjIsIDgsIDE1LCA1LCAKKyAgICAyNDUsIDIzNSwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDUsIDIzNSwgMzAsIDcwLCAxNSwgNSwgMjQ1LCAyMTEsIDE1LCA1LCAKKyAgICAyNDUsIDIwMCwgMTUsIDUsIDI0NSwgMTc0LCAxNSwgNSwgMjQ1LCAxNTAsIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDI0MywgCisgICAgMTA0LCAxNSwgNSwgMjQ1LCAxNTEsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyNDUsIDE1MSwgMzAsIDIzMSwgCisgICAgOTEsIDE1LCA1LCAyNDUsIDE1MSwgMjQ5LCAxMjUsIDI0NSwgMTUwLCAxNSwgNSwgMjQ1LCAxNTEsIDIyNiwgMTY0LCAyNDUsIAorICAgIDE1MCwgMTUsIDUsIDI0NSwgMTUxLCAyMTgsIDIzMywgMTUsIDUsIDI0NSwgODksIDE1LCA1LCAyNDUsIDg3LCAxNSwgNSwgCisgICAgMjQ1LCA3MiwgMTUsIDUsIDI0NSwgMTAsIDE1LCA1LCAyNDUsIDExLCAzMCwgNjEsIDE1LCA1LCAyNDUsIDExLCAzMCwgMTE1LCAKKyAgICA5NiwgMjMzLCAxMDQsIDE1LCA1LCAyNDUsIDExLCAzMCwgMTE1LCA5NiwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIAorICAgIDI0NSwgMTEsIDMwLCAyNTQsIDEyMywgMTUsIDUsIDI0NSwgMTEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyNDYsIDY3LCAyNDIsIDk0LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI0NiwgNjcsIDI0MiwgOTUsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyNDUsIDExLCAzMCwgMTYyLCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDI0MiwgNDksIDI0MiwgOTQsIDE1LCA1LCAyNDUsIDExLCAKKyAgICAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzQsIDIwNywgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzQsIDIwOCwgMjE4LCAyMzMsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMzLCAyMTUsIDE1LCA1LCAyNDUsIDExLCAzMCwgCisgICAgMjMzLCAxMzUsIDE1LCA1LCAyNDUsIDExLCAzMCwgMjMzLCAxMDUsIDMwLCAyMzMsIDEwNCwgMTUsIDUsIDI0NSwgMTEsIDMwLCAKKyAgICAyMzIsIDI0MSwgMTUsIDUsIDI0NSwgMTEsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjQ1LCAxMSwgMzAsIDIxNCwgMjMwLCAxNSwgCisgICAgNSwgMjQ1LCAxMSwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNiwgMjQyLCA5NCwgMTUsIAorICAgIDUsIDI0MywgMTMzLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxMTUsIDk2LCAyNDgsIDIyMiwgOTYsIDE2MiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMTE1LCA5NiwgMTYyLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAxMTUsIDk2LCAyMzYsIDM1LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNTUsIDI0LCAyMTYsIDI0MCwgOTYsIDIxNywgOTMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1NCwgMTIzLCAKKyAgICAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTMsIDIzMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUzLCAyMzAsIDk2LCAyNDMsIAorICAgIDExOCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI1MiwgMTQxLCA5NiwgCisgICAgMjA1LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTEsIDk4LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNTEsIDk5LCA5NiwgMjA1LCAKKyAgICAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDgsIDIyMSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ4LCAzLCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDcsIDIxOCwgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0NiwgNzYsIDE1LCA1LCAyNDMsIAorICAgIDEzNCwgMzAsIDI0NSwgMTc0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDUsIDE3NSwgOTYsIDIzMywgMTM1LCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyNDUsIDE1MCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQ1LCAxNTEsIDMwLCAyNDMsIDEwNSwgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAyMTQsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgMjEyLCAxNSwgNSwgCisgICAgMjQzLCAxMzQsIDMwLCAyNDIsIDIxMywgOTYsIDYxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDIsIDE5OCwgOTYsIDIxOCwgCisgICAgODMsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDI0MiwgNDksIDk2LCAyMzIsIDk5LCA5NiwgMjQ1LCA3MiwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjQyLCAzMCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjQyLCAzMSwgOTYsIDIzMywgMTM1LCAxNSwgNSwgMjQzLCAKKyAgICAxMzQsIDMwLCAyNDEsIDE4MSwgOTYsIDIzMiwgMjQxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyNDAsIDIxOCwgMTUsIDUsIAorICAgIDI0MywgMTM0LCAzMCwgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjM1LCAxNjYsIDk2LCAyNDAsIAorICAgIDIyMywgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0MywgMTM0LCAzMCwgCisgICAgMjM0LCAyMDcsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgODksIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzNCwgOTAsIDk2LCAKKyAgICAyMzMsIDEwNCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjMzLCAyMTYsIDk2LCAyNTQsIDEyMywgMTUsIDUsIDI0MywgMTM0LCAKKyAgICAzMCwgMjMzLCAxMzUsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIzMSwgOTIsIDk2LCAyNDUsIDE1MCwgMTUsIDUsIDI0MywgCisgICAgMTM0LCAzMCwgMjMwLCAyMzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMjcsIDE5NSwgMTE3LCAyMjcsIDE5NCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMTkwLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAKKyAgICAyMjIsIDgsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIyMSwgMjMxLCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDYzLCAxNSwgCisgICAgNSwgMjQzLCAxMzQsIDMwLCAyMjAsIDY0LCA5NiwgMjE1LCA5OCwgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjIwLCAzMCwgMTUsIAorICAgIDUsIDI0MywgMTM0LCAzMCwgMjE4LCA0MywgMTUsIDUsIDI0MywgMTM0LCAzMCwgMjE3LCA3MiwgMTUsIDUsIDI0MywgMTM0LCAKKyAgICAzMCwgNzAsIDE1LCA1LCAyNDMsIDEzNCwgMzAsIDIxNCwgMjE5LCAxNSwgNSwgMjQzLCAxMzQsIDMwLCAyMTQsIDIyMCwgOTYsIAorICAgIDI0NiwgNzgsIDE1LCA1LCAyNDMsIDEzNCwgMTE3LCAyNDMsIDEzMywgMTUsIDUsIDI0MywgMTI4LCAxNSwgNSwgMjQzLCAKKyAgICAxMjksIDI0OSwgMTI1LCAyNDMsIDEyOCwgMTUsIDUsIDI0MywgMTI2LCAxNSwgNSwgMjQzLCAxMjcsIDExNywgMjQzLCAxMjcsIAorICAgIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDI0MywgMTE4LCAxNSwgNSwgMjQzLCAxMTksIDI0MywgMTI3LCAxMTcsIAorICAgIDI0MywgMTI3LCAyNDMsIDk3LCAxMTcsIDI0MywgOTYsIDE1LCA1LCAyNDMsIDExNywgMTUsIDUsIDI0MywgMTE1LCAxNSwgNSwgCisgICAgMjQzLCAxMDYsIDE1LCA1LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MywgMTA1LCAKKyAgICAxMTcsIDI0MywgMTA0LCAxNSwgNSwgMjQzLCAxMDUsIDI0OSwgMTI1LCAyNDMsIDEwNCwgMTUsIDUsIDI0MywgOTYsIDE1LCAKKyAgICA1LCAyNDMsIDk1LCAxNSwgNSwgMjQzLCA5MCwgMTUsIDUsIDI0MywgMzYsIDE1LCA1LCAyNDMsIDM3LCAzMCwgMjMzLCAxOTYsIAorICAgIDE1LCA1LCAyNDIsIDIxNCwgMTUsIDUsIDI0MiwgMjE1LCAzMCwgNzUsIDE1LCA1LCAyNDIsIDIxNSwgMzAsIDcwLCAxNSwgNSwgCisgICAgMjQyLCAyMTUsIDI0OSwgMTI1LCAyNDIsIDIxNCwgMTUsIDUsIDI0MiwgMjEyLCAxNSwgNSwgMjQyLCAyMTMsIDExNywgMjQyLCAKKyAgICAyMTIsIDE1LCA1LCAyNDIsIDIxMywgMjQ5LCAxMjUsIDI0MiwgMjEyLCAxNSwgNSwgMjQyLCAyMDksIDE1LCA1LCAyNDIsIAorICAgIDE5NywgMTUsIDUsIDI0MiwgMTk4LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAxOTUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDExNSwgCisgICAgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDI0MiwgMTk2LCAKKyAgICAzMCwgMjM2LCAzNSwgMTUsIDUsIDI0MiwgMTk2LCAzMCwgMjMyLCA5OSwgOTYsIDIzNiwgMzUsIDE1LCA1LCAyNDIsIDE5NiwgCisgICAgMzAsIDE5MCwgMTUsIDUsIDI0MiwgMTkyLCAxNSwgNSwgMjQyLCAxOTAsIDE1LCA1LCAyNDIsIDE5MSwgMjQ5LCAxMjUsIAorICAgIDI0MiwgMTkwLCAxNSwgNSwgMjQyLCAxOTEsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDI0MiwgMTkxLCAzMCwgMjE3LCA3MiwgCisgICAgMTUsIDUsIDI0MiwgMTkxLCAyMTYsIDIzOSwgMTUsIDUsIDI0MiwgMTEzLCAxNSwgNSwgMjQyLCAxMTQsIDI0OSwgMTI1LCAKKyAgICAyNDIsIDExMywgMTUsIDUsIDI0MiwgMTExLCAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMzQsIDI0MiwgMTUsIDUsIDI0MiwgCisgICAgMTEyLCAzMCwgMjM0LCAyNDMsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAxMTIsIDMwLCAyMjcsIDE5NCwgCisgICAgMTUsIDUsIDI0MiwgMTEyLCAzMCwgMjIyLCA5LCA5NiwgMjE1LCAxMTMsIDE1LCA1LCAyNDIsIDExMiwgMjQyLCA5NCwgMTUsIAorICAgIDUsIDI0MiwgMTAzLCAxNSwgNSwgMjQyLCAxMDQsIDMwLCAxMTUsIDk2LCAyMzMsIDE5NiwgMTUsIDUsIDI0MiwgMTA0LCAzMCwgCisgICAgMjMzLCAxOTYsIDE1LCA1LCAyNDIsIDEwNCwgMTE3LCAyNDIsIDEwNCwgMjMyLCA5MSwgMTUsIDUsIDI0MiwgOTgsIDE1LCA1LCAKKyAgICAyNDIsIDk2LCAxNSwgNSwgMjQyLCA5NywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyNDIsIDg4LCAxNSwgNSwgMjQyLCA4NywgMTUsIAorICAgIDUsIDI0MiwgODQsIDE1LCA1LCAyNDIsIDgzLCAxNSwgNSwgMTYyLCAxNSwgNSwgMjQyLCA0OSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyNDIsIDQ5LCAyNDIsIDk0LCAxNSwgNSwgMjQyLCAzMCwgMTUsIDUsIDI0MSwgMTgwLCAxNSwgNSwgMjQxLCAxODEsIDMwLCAKKyAgICAyNTMsIDIzMSwgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDI1MiwgMTc2LCAKKyAgICAxNSwgNSwgMjQxLCAxODEsIDMwLCAyNDcsIDE4NywgMTUsIDUsIDI0MSwgMTgxLCAzMCwgMjQzLCAxMjYsIDE1LCA1LCAyNDEsIAorICAgIDE4MSwgMzAsIDIzNCwgODEsIDE1LCA1LCAyNDEsIDE4MSwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjQxLCAxODEsIDMwLCAKKyAgICAyMjAsIDYzLCAxNSwgNSwgMjQxLCAxODEsIDMwLCA3MCwgMTUsIDUsIDI0MCwgMjIyLCAxNSwgNSwgMjQwLCAyMTgsIDE1LCAKKyAgICA1LCAyNDAsIDIxOSwgMzAsIDI1NCwgMTIzLCAxNSwgNSwgMjQwLCAyMTksIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjQwLCAyMTksIAorICAgIDMwLCAyMzQsIDIwNywgMTUsIDUsIDI0MCwgMjE5LCAzMCwgMjMyLCAxOTcsIDE1LCA1LCAyNDAsIDIxOSwgMzAsIDIxNCwgCisgICAgMjE5LCAxNSwgNSwgMjQwLCAyMTUsIDE1LCA1LCA3MywgMTUsIDUsIDI0MCwgMTU0LCA2MSwgMTUsIDUsIDI0MCwgMTE1LCAKKyAgICAxNSwgNSwgMjM2LCA2MywgMTUsIDUsIDIzNiwgNjQsIDExNywgMjM2LCA2NCwgMjUxLCA5OCwgMTUsIDUsIDIzNiwgNjQsIAorICAgIDExNywgMjM2LCA2NCwgMjE4LCAyMzMsIDE1LCA1LCAyMzYsIDM4LCAxNSwgNSwgMjM2LCAzNSwgMTUsIDUsIDIzNiwgMzYsIAorICAgIDI0NywgMjQyLCAxNSwgNSwgMjM2LCAzNiwgMjIzLCAzNSwgMTUsIDUsIDIzNiwgMzYsIDExNywgMjM2LCAzNiwgMjIwLCAxNCwgCisgICAgMTE3LCAyMjAsIDE0LCAyMTQsIDIyMCwgMTE3LCAyMTQsIDIxOSwgMTUsIDUsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAKKyAgICAyMzYsIDI3LCAxNSwgNSwgMjM2LCAyOCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIzNiwgMjYsIDE1LCA1LCAKKyAgICAyMzYsIDE2LCAxNSwgNSwgMjM2LCAxNywgMzAsIDIxNywgNzIsIDE1LCA1LCAyMzYsIDE3LCAyNDksIDEyNSwgMjM2LCAxNiwgCisgICAgMTUsIDUsIDIzNiwgMTcsIDIyNiwgMTY0LCAyMzYsIDE2LCAxNSwgNSwgMjM2LCAxNywgMjE4LCAyMzMsIDE1LCA1LCAyMzYsIAorICAgIDksIDE1LCA1LCAyMzUsIDI1NSwgMTUsIDUsIDIzNSwgMTc5LCAxNSwgNSwgMjM1LCAxNjUsIDE1LCA1LCAxNzYsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgNjEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjU0LCAyNTUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjU1LCAKKyAgICAwLCA5NiwgMjMzLCAyMTUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUzLCAyMjksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUyLCAKKyAgICAxNzYsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjUyLCAxNjAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMTMwLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDI1MiwgNiwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyNDUsIDg3LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0NSwgNzIsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCAxMzUsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQzLCAxMTgsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjQzLCAxMDUsIDIxNiwgMjM5LCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MywgOTYsIDE1LCA1LCAyMzUsIDEzLCAKKyAgICAzMCwgMjQzLCA5NywgOTYsIDIyMCwgMTAxLCA5NiwgNjEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAyMTQsIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjQyLCAxOTcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjQyLCAxOTEsIDk2LCAyMjEsIDIzMSwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyNDIsIDE5MSwgMjQ5LCAxMjUsIDI0MiwgMTkwLCAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgMTEzLCAKKyAgICAxNSwgNSwgMjM1LCAxMywgMzAsIDI0MiwgODcsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIzNSwgMTMsIAorICAgIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgMjQyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzNCwgOTIsIAorICAgIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjM0LCA4OSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMzIsIDI0MSwgMTUsIDUsIDIzNSwgCisgICAgMTMsIDMwLCAyMzIsIDk4LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMSwgOTEsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCAKKyAgICA5MiwgOTYsIDI0NiwgNzgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjMxLCA5MiwgOTYsIDI0MiwgMjE0LCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMSwgOTIsIDk2LCAyMTcsIDIyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIzMCwgMjMxLCA5NiwgMjI3LCAxODksIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjI3LCAxOTQsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjI1LCAxMDgsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIyLCAKKyAgICAxNDAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjA2LCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMSwgMjMxLCAxNSwgNSwgMjM1LCAKKyAgICAxMywgMzAsIDIyMCwgMTAyLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIyMCwgNjMsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjIwLCAKKyAgICAzMCwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTksIDIyNSwgMTUsIDUsIDIzNSwgMTMsIDMwLCAyMTksIDE4MiwgMTUsIDUsIAorICAgIDIzNSwgMTMsIDMwLCAyMTgsIDUxLCAxNSwgNSwgMjM1LCAxMywgMzAsIDIxNywgNTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgCisgICAgNzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAyMTksIDE1LCA1LCAKKyAgICAyMzUsIDEzLCAzMCwgMjE0LCAxOTMsIDMwLCAxOTAsIDE1LCA1LCAyMzUsIDEzLCAzMCwgMjE0LCAxMjYsIDE1LCA1LCAyMzUsIAorICAgIDEzLCAzMCwgMjEwLCA0NCwgMTUsIDUsIDIzNSwgMTEsIDE1LCA1LCAyMzUsIDEyLCAyNDksIDEyNSwgMjM1LCAxMSwgMTUsIAorICAgIDUsIDIzNSwgNCwgMTUsIDUsIDIzNSwgMSwgMTUsIDUsIDIzNCwgMjU1LCAxNSwgNSwgMjM0LCAyNTQsIDE1LCA1LCAyMzQsIAorICAgIDI1MiwgMTUsIDUsIDIzNCwgMjUzLCAxMTcsIDIzNCwgMjUyLCAxNSwgNSwgMjM0LCAyNDIsIDE1LCA1LCAyMzQsIDI0MywgCisgICAgMzAsIDIzNiwgMzYsIDI0MiwgOTQsIDE1LCA1LCAyMzQsIDIzOCwgMTUsIDUsIDIzNCwgMjM5LCAzMCwgMjUyLCAxNzYsIDE1LCAKKyAgICA1LCAyMzQsIDIzOSwgMjQ5LCAxMjUsIDIzNCwgMjM4LCAxNSwgNSwgMjM0LCAyMzYsIDE1LCA1LCAyMzQsIDIzNSwgMTUsIDUsIAorICAgIDIzNCwgMjA3LCAxNSwgNSwgMjM0LCAyMDgsIDIzMywgMTE4LCAzMCwgMTA0LCAxMTcsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCAKKyAgICA1LCAyMzQsIDIwOCwgMTE3LCAyMzQsIDIwOCwgMjMzLCAxMTgsIDMwLCAxMDQsIDExNywgMjMzLCAxMTgsIDMwLCA3MCwgMTUsIAorICAgIDUsIDIzNCwgMTU3LCAxNSwgNSwgMjM0LCA5MiwgMTUsIDUsIDIzNCwgOTMsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzNCwgCisgICAgOTMsIDMwLCA3MCwgMTUsIDUsIDIzNCwgOTMsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIzNCwgODksIDE1LCA1LCAyMzQsIDgxLCAKKyAgICAxNSwgNSwgMjM0LCA2OCwgMTUsIDUsIDIzNCwgNjcsIDE1LCA1LCAyMzQsIDY1LCAxNSwgNSwgMjM0LCA2NiwgMTE3LCAyMzQsIAorICAgIDY1LCAxNSwgNSwgMjMzLCAyMTcsIDE1LCA1LCAyMzMsIDIxOCwgMTE3LCAyNDEsIDE4MSwgMzAsIDI1MywgMjMwLCAyMzMsIAorICAgIDIxOCwgMTE3LCAyNDEsIDE4MSwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDIxMywgMTUsIAorICAgIDUsIDIzMywgMjE0LCAyMTQsIDEyLCAxNywgMTUsIDUsIDIzMywgMjEyLCAxNSwgNSwgMjMzLCAyMDksIDE1LCA1LCAyMzMsIAorICAgIDIxMCwgMjQyLCA5NCwgMTUsIDUsIDIzMywgMjA4LCAxNSwgNSwgMjMzLCAxOTYsIDE1LCA1LCAyMzMsIDE5NywgMjI2LCAKKyAgICAxNjQsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxOTEsIDE1LCA1LCAyMzMsIDE3MiwgMTUsIDUsIDIzMywgMTM1LCAxNSwgNSwgCisgICAgMjMzLCAxMTcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAxMTUsIDk2LCAyNDgsIAorICAgIDIyMiwgOTYsIDE2MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTE1LCA5NiwgMjQzLCA5NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMTE1LCA5NiwgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI1NCwgMTc4LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyNTQsIDEyMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjUzLCAyMzIsIDIxMCwgNDAsIDIxNiwgMjM5LCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjUyLCA2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDgsIAorICAgIDE2NiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjQ1LCAxNTAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDI0MywgMTM1LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDIsIDEwMywgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjQyLCAxMDQsIDk2LCAyNDIsIDEwMywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyNDIsIDMwLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyNDEsIDE4MSwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzYsIDE2LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMzYsIDE3LCA5NiwgMTYyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzYsIDE3LCA5NiwgMjMyLCA5OCwgMTUsIDUsIAorICAgIDIzMywgMTE4LCAzMCwgMjM0LCA5MiwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjM0LCA4MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgCisgICAgMjMzLCAyMTUsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMjA5LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMzMsIDIxMCwgCisgICAgOTYsIDI0MSwgMTgxLCA5NiwgNjEsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIzMywgMTE3LCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAKKyAgICAyMzIsIDE5NywgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMyLCA5OCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMyLCA4NiwgMTUsIAorICAgIDUsIDIzMywgMTE4LCAzMCwgMjMxLCA5MSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjMxLCA5MiwgOTYsIDI0NSwgMTUwLCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMzAsIDYxLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMjksIDEwNywgMTUsIDUsIDIzMywgMTE4LCAKKyAgICAzMCwgMjIwLCA2NCwgOTYsIDIxOCwgNDMsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MSwgOTYsIAorICAgIDI0NSwgODcsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIyMCwgMTAsIDk2LCAyNDIsIDE5MSwgMjE2LCAyMzksIDE1LCA1LCAKKyAgICAyMzMsIDExOCwgMzAsIDIxOSwgMjIzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTksIDIyNCwgOTYsIDIxOSwgMjIzLCAxNSwgCisgICAgNSwgMjMzLCAxMTgsIDMwLCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTcsIDg0LCAxNSwgNSwgMjMzLCAxMTgsIAorICAgIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjMzLCAxMTgsIDMwLCAyMTcsIDIzLCA5NiwgMTE1LCA5NiwgMjE4LCA4NCwgOTYsIDE5NywgCisgICAgMTUsIDUsIDIzMywgMTE4LCAzMCwgNzAsIDE1LCA1LCAyMzMsIDExOCwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjMzLCAKKyAgICAxMTgsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIAorICAgIDIzMSwgMTUsIDUsIDIzMywgMTE4LCAzMCwgMjE0LCAyMTksIDE1LCA1LCAyMzMsIDExOCwgMzAsIDIxNCwgMTI2LCAxNSwgNSwgCisgICAgMjMzLCAxMTgsIDIxOCwgMjMzLCAxNSwgNSwgMjMzLCAxMTUsIDE1LCA1LCAyMzMsIDExNiwgMzAsIDIyMCwgNjMsIDE1LCA1LCAKKyAgICAyMzMsIDExNiwgMzAsIDIyMCwgNjQsIDk2LCAyMTgsIDQzLCAxNSwgNSwgMjMzLCAxMTYsIDI0MiwgOTQsIDE1LCA1LCAyMzMsIAorICAgIDExNiwgMjQyLCA5NSwgMTE3LCAyMzMsIDExNiwgMjQyLCA5NSwgMjIwLCA2MywgMTUsIDUsIDIzMywgMTExLCAxNSwgNSwgCisgICAgMjMzLCAxMDQsIDE1LCA1LCAyMzMsIDEwNSwgMzAsIDIzMywgMTA0LCAxNSwgNSwgMjMzLCAxMDIsIDE1LCA1LCAyMzMsIAorICAgIDEwMywgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjMzLCAxMDMsIDMwLCAyMzMsIDE5NywgOTYsIDIyMiwgMTQwLCAxNSwgNSwgCisgICAgMjMyLCAyNDEsIDE1LCA1LCAyMzIsIDIyNiwgMTUsIDUsIDIzMiwgMjE2LCAxNSwgNSwgMjMyLCAxOTcsIDE1LCA1LCAyMzIsIAorICAgIDk4LCAxNSwgNSwgMjMyLCA5OSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAKKyAgICAyNTQsIDE3OCwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDUsIDcyLCAxNSwgCisgICAgNSwgMjMyLCA5NywgMzAsIDI0NSwgNzMsIDIxNiwgMjM5LCAxNSwgNSwgMjMyLCA5NywgMzAsIDI0MywgMTA1LCAyMTYsIAorICAgIDIzOSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyNDEsIDE4MSwgMzAsIDI1MiwgMTc2LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNiwgCisgICAgMTYsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjM1LCAxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNCwgMjU1LCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMzAsIDIzNSwgMCwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjMyLCA5NywgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjMzLCAxMzYsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgOTcsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMzEsIDkyLCA5NiwgMjQ1LCAxNTAsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjI5LCAxMDcsIDE1LCA1LCAyMzIsIAorICAgIDk3LCAzMCwgMjI3LCAyMzcsIDE1LCA1LCAyMzIsIDk3LCAzMCwgMjE5LCAxOTIsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIzMiwgCisgICAgOTcsIDMwLCAyMTksIDE3NCwgOTYsIDI1MSwgMTI1LCAxNSwgNSwgMjMyLCA5NywgMzAsIDIxNSwgMTEzLCAxNSwgNSwgMjMyLCAKKyAgICA5NywgMjE2LCAyMzksIDE1LCA1LCAyMzIsIDk3LCAyNDksIDEyNSwgMjMyLCA5NiwgMTUsIDUsIDIzMiwgOTcsIDIyNiwgCisgICAgMTY0LCAyMzIsIDk2LCAxNSwgNSwgMjMyLCA5NywgMjE4LCAyMzMsIDE1LCA1LCAyMzIsIDk3LCAyMjAsIDQ1LCAxNSwgNSwgCisgICAgMjMyLCA5NSwgMTUsIDUsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAxMTcsIDIzMiwgOTEsIDE1LCA1LCAyMzIsIDkyLCAKKyAgICAyMjYsIDE2NCwgMjMyLCA5MSwgMTUsIDUsIDIzMiwgOTIsIDIyMCwgNDUsIDE1LCA1LCAyMzIsIDg5LCAxNSwgNSwgMjMyLCAKKyAgICA4NiwgMTUsIDUsIDIzMiwgODQsIDE1LCA1LCAyMzIsIDg1LCAxMTcsIDIzMiwgODQsIDE1LCA1LCAyMzIsIDg1LCAxMTcsIAorICAgIDIzMiwgODUsIDI0MywgOTcsIDExNywgMjQzLCA5NiwgMTUsIDUsIDE4NCwgMTUsIDUsIDIzMSwgMjM5LCAzMCwgMjE3LCA3MiwgCisgICAgMTUsIDUsIDIzMSwgMjM5LCAyNDIsIDk0LCAxNSwgNSwgMjMxLCAyMzgsIDE1LCA1LCAyMzEsIDIxMCwgMTUsIDUsIDIzMSwgCisgICAgMTY2LCAxNSwgNSwgMjMxLCAxNDcsIDE1LCA1LCAyMzEsIDE0NiwgMTUsIDUsIDIzMSwgOTEsIDE1LCA1LCAyMzEsIDQ3LCAKKyAgICAxNSwgNSwgMjMwLCAyMzAsIDE1LCA1LCAyMzAsIDE4OCwgMTUsIDUsIDIzMCwgMTAyLCAxNSwgNSwgMjMwLCAxMDMsIDExNywgCisgICAgMjMwLCAxMDIsIDE1LCA1LCAyMzAsIDkzLCAxNSwgNSwgMjMwLCA5NCwgMjQyLCA5NCwgMTUsIDUsIDIzMCwgNzgsIDE1LCA1LCAKKyAgICAyMzAsIDY0LCAxNSwgNSwgMjMwLCA2MSwgMTUsIDUsIDIzMCwgNjIsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjIsIDMwLCAyMzMsIAorICAgIDE5NiwgMTUsIDUsIDIzMCwgNjIsIDMwLCAyMTAsIDExNiwgMTUsIDUsIDIzMCwgNjIsIDExNywgMjMwLCA2MSwgMTUsIDUsIAorICAgIDIzMCwgNjIsIDExNywgMjMwLCA2MiwgMzAsIDExNSwgOTYsIDE5NywgMTUsIDUsIDIzMCwgNjIsIDI0OSwgMTI1LCAyMzAsIAorICAgIDYxLCAxNSwgNSwgMjMwLCA1OSwgMTUsIDUsIDIzMCwgNjAsIDMwLCA2MSwgMTUsIDUsIDIzMCwgNjAsIDMwLCAxMTUsIDk2LCAKKyAgICAyNDgsIDMsIDE1LCA1LCAyMzAsIDYwLCAzMCwgMjQ4LCAzLCAxNSwgNSwgMjMwLCA2MCwgMjQyLCA5NCwgMTUsIDUsIDE5NywgCisgICAgMTUsIDUsIDIyOSwgMjI3LCAxNSwgNSwgMjI5LCAyMTYsIDE1LCA1LCAyMjksIDIxNywgMjM1LCAxOTIsIDE1LCA1LCAyMjksIAorICAgIDIxNywgMzAsIDIxOSwgMjI2LCAyMTYsIDIzOSwgMTUsIDUsIDIyOSwgMjE3LCAyMjYsIDE2NCwgMjI5LCAyMTYsIDE1LCA1LCAKKyAgICAyMjksIDIxNSwgMTUsIDUsIDIyOSwgMjA4LCAyMjcsIDE4MCwgMTUsIDUsIDIyOSwgMjA3LCAxNSwgNSwgMjI5LCAyMDYsIAorICAgIDE1LCA1LCAyMjksIDEwNywgMTUsIDUsIDIyOSwgMTA4LCAzMCwgNjEsIDE1LCA1LCAyMjksIDEwOCwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjI5LCAxMDgsIDIyMCwgNDUsIDE1LCA1LCAyMjgsIDIzMywgMTUsIDUsIDIyOCwgMjM0LCAzMCwgNzUsIDE1LCAKKyAgICA1LCAyMjgsIDIzMiwgMTUsIDUsIDIyOCwgMjAzLCAxNSwgNSwgMjI4LCAyMDQsIDMwLCAyNDMsIDEwNSwgMjE2LCAyMzksIAorICAgIDE1LCA1LCAyMjgsIDIwNCwgMzAsIDI0MywgOTcsIDk2LCAyNDMsIDEwNSwgMjE2LCAyMzksIDE1LCA1LCAyMjgsIDIwMSwgCisgICAgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjU0LCAxMjMsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAKKyAgICAyMDIsIDMwLCAyNTMsIDIzMiwgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyNDIsIDEwMywgMTUsIDUsIAorICAgIDIyOCwgMjAyLCAzMCwgMjMxLCA5MiwgOTYsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjI5LCAKKyAgICAxMDcsIDE1LCA1LCAyMjgsIDIwMiwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDYzLCAxNSwgNSwgCisgICAgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCA5NiwgMTE1LCAyNTQsIDEyMywgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjIwLCA2NCwgCisgICAgOTYsIDI1MywgMjMxLCAxNSwgNSwgMjI4LCAyMDIsIDMwLCAyMjAsIDY0LCA5NiwgMjUzLCAyMzIsIDk2LCAyNTMsIDIzMSwgCisgICAgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjE0LCAyMzEsIDk2LCAyNTMsIDIzMSwgMTUsIDUsIDIyOCwgMjAyLCAzMCwgMjE0LCAKKyAgICAxMjYsIDE1LCA1LCAyMjgsIDE5MCwgMTUsIDUsIDIyNywgMjM3LCAxNSwgNSwgMjI3LCAyMTAsIDE1LCA1LCAyMjcsIDE5NCwgCisgICAgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDI0MywgOTYsIDE1LCA1LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAKKyAgICAyMzEsIDE0NywgMTUsIDUsIDIyNywgMTk1LCAyMzMsIDExNiwgMzAsIDIyMiwgOCwgMTUsIDUsIDIyNywgMTk1LCAyMzMsIAorICAgIDExNiwgMzAsIDIyMiwgOSwgMTE3LCAyMjcsIDE5NSwgMjMzLCAxMTYsIDMwLCAyMjIsIDgsIDE1LCA1LCAyMjcsIDE5NSwgCisgICAgMjMzLCAxMTYsIDMwLCAyMTQsIDEyNiwgMTUsIDUsIDIyNywgMTk1LCAyMTYsIDIzOSwgMTUsIDUsIDIyNywgMTk1LCAxMTcsIAorICAgIDIyNywgMTk0LCAxNSwgNSwgMjI3LCAxOTUsIDI0OSwgMTI1LCAyMjcsIDE5NCwgMTUsIDUsIDIyNywgMTk1LCAyNDksIDEyNSwgCisgICAgMjI3LCAxOTUsIDIzMywgMTE2LCAxMTcsIDIzMywgMTE1LCAxNSwgNSwgMjI3LCAxODksIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAKKyAgICAyNCwgMzAsIDI1MywgMjI2LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyNTIsIDYsIDE1LCA1LCAyMjcsIDE5MCwgCisgICAgMjU1LCAyNCwgMzAsIDI0NiwgNzQsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgMzAsIDI0MiwgMTAzLCAxNSwgNSwgMjI3LCAKKyAgICAxOTAsIDI1NSwgMjQsIDMwLCAyMzYsIDM2LCAyNDIsIDk0LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMzQsIAorICAgIDI1NSwgMTUsIDUsIDIyNywgMTkwLCAyNTUsIDI0LCAzMCwgMjMzLCAxMzUsIDE1LCA1LCAyMjcsIDE5MCwgMjU1LCAyNCwgCisgICAgMzAsIDIyOSwgMTA3LCAxNSwgNSwgMjI3LCAxOTAsIDI1NSwgMjQsIDMwLCAyMTksIDE3MSwgMTUsIDUsIDIyNywgMTkwLCAKKyAgICAyNTUsIDI0LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjcsIDE5MCwgMjM0LCA2NiwgMzAsIDI1MiwgNiwgMTUsIDUsIDIyNywgCisgICAgMTkwLCAyMzQsIDY2LCAzMCwgMjUyLCA3LCA3MCwgMTUsIDUsIDE5MCwgMTUsIDUsIDIyNiwgODAsIDE1LCA1LCAyMjYsIDQ3LCAKKyAgICAxNSwgNSwgMjI2LCAyMSwgMTUsIDUsIDIyNSwgMTYxLCAxNSwgNSwgMjI1LCAxMDgsIDE1LCA1LCAyMjUsIDEwOSwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNTUsIDI1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCAyNTIsIDYsIDE1LCA1LCAKKyAgICAyMjUsIDEwOSwgMzAsIDI1MSwgMTI1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3NSwgMTUsIDUsIDIyNSwgMTA5LCAzMCwgNzMsIAorICAgIDE1LCA1LCAyMjUsIDEwOSwgMzAsIDI0MCwgMTE1LCAxNSwgNSwgMjI1LCAxMDksIDMwLCA3MCwgMTUsIDUsIDIyNSwgMTA5LCAKKyAgICAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjUsIDEwOSwgMjQ5LCAxMjUsIDIyNSwgMTA4LCAxNSwgNSwgMjI1LCA1MywgMTUsIDUsIAorICAgIDIyNSwgNTQsIDMwLCAyMzQsIDIzOCwgMTUsIDUsIDIyNSwgNTQsIDMwLCAyMTQsIDIxOSwgMTUsIDUsIDIyNSwgNTQsIDMwLCAKKyAgICAyMTAsIDExNiwgMTUsIDUsIDIyNSwgNTQsIDIyNiwgMTY0LCAyMjUsIDUzLCAxNSwgNSwgMjA1LCAxNSwgNSwgMjIzLCAxODIsIAorICAgIDE1LCA1LCAyMjMsIDM1LCAxNSwgNSwgMjIyLCAxNDAsIDE1LCA1LCAyMDYsIDE1LCA1LCAyMjIsIDIyLCAyMjcsIDE4MCwgCisgICAgMTUsIDUsIDIyMiwgMjEsIDE1LCA1LCAyMjIsIDIyLCAzMCwgNjEsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjQ2LCA3OCwgMTUsIAorICAgIDUsIDIyMiwgMjIsIDMwLCAyNDYsIDc2LCAxNSwgNSwgMjIyLCAyMiwgMzAsIDE2MiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAKKyAgICAyMzQsIDI0MiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMzMsIDE5NiwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMzIsIDg0LCAxNSwgCisgICAgNSwgMjIyLCAyMiwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIyNywgMTk0LCAxNSwgNSwgMjIyLCAyMiwgCisgICAgMzAsIDIyMiwgOCwgMTUsIDUsIDIyMiwgMjIsIDMwLCAyMjAsIDMwLCAxNSwgNSwgMjIyLCAyMiwgMzAsIDIxNywgOTMsIDE1LCAKKyAgICA1LCAyMjIsIDIyLCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAyMjUsIDE1LCA1LCAyMjIsIDIyLCAKKyAgICAzMCwgMjE0LCAxOTcsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAxNTAsIDE1LCA1LCAyMjIsIDIyLCAzMCwgMjE0LCAxMjYsIAorICAgIDE1LCA1LCAyMjIsIDIyLCAxMTcsIDIyMiwgMjEsIDE1LCA1LCAyMjIsIDIyLCAyNDIsIDk0LCAxNSwgNSwgMjIyLCA4LCAxNSwgCisgICAgNSwgMjIyLCA5LCAyMzMsIDExOCwgMzAsIDI1MywgMjI5LCAxNSwgNSwgMjIxLCAyMzksIDE1LCA1LCAyMjEsIDIzMSwgMTUsIAorICAgIDUsIDIyMCwgMTAyLCAxNSwgNSwgMjIwLCAxMDAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDYxLCAxNSwgNSwgMjIwLCAxMDEsIAorICAgIDMwLCAyNTIsIDE3NiwgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjQyLCAxOTAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDIyOSwgCisgICAgMTA3LCAxNSwgNSwgMjIwLCAxMDEsIDMwLCAyMTksIDIyMywgMTUsIDUsIDIyMCwgMTAxLCAzMCwgMjE1LCA5OCwgMTUsIDUsIAorICAgIDIyMCwgMTAxLCAzMCwgNzAsIDE1LCA1LCAyMjAsIDEwMSwgMzAsIDEwNCwgOTYsIDYxLCAxNSwgNSwgMjIwLCA5OSwgMTUsIAorICAgIDUsIDIyMCwgOTcsIDE1LCA1LCAyMjAsIDc4LCAxNSwgNSwgMjIwLCA2MywgMTUsIDUsIDIyMCwgNjQsIDI0MCwgMjIyLCAxNSwgCisgICAgNSwgMjIwLCA2NCwgMTE3LCAyMjAsIDY0LCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAKKyAgICAxNSwgNSwgMjIwLCA2NCwgMTE3LCAyMjAsIDY0LCAyMTcsIDk0LCAxMTcsIDIxNywgOTQsIDI0MywgOTcsIDExNywgMjQzLCAKKyAgICA5NiwgMTUsIDUsIDIyMCwgNTYsIDE1LCA1LCAyMjAsIDUxLCAxNSwgNSwgMjIwLCA0OCwgMTUsIDUsIDIyMCwgNDcsIDE1LCAKKyAgICA1LCAyMjAsIDQ0LCAxNSwgNSwgMjIwLCAzMCwgMTUsIDUsIDIyMCwgMzEsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMzEsIDMwLCAKKyAgICAyMzYsIDE2LCAxNSwgNSwgMjIwLCAyNCwgMTUsIDUsIDIyMCwgMjUsIDMwLCA2MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNTIsIAorICAgIDE2MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNTEsIDEwOSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyNDcsIDIwNiwgMTUsIDUsIAorICAgIDIyMCwgMjUsIDMwLCAyNDMsIDk2LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzNiwgMzUsIDE1LCA1LCAyMjAsIDI1LCAzMCwgCisgICAgMjM2LCAzNiwgMjQyLCA5NCwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzMsIDE5MSwgMTUsIDUsIDIyMCwgMjUsIDMwLCAyMzIsIAorICAgIDg2LCAxNSwgNSwgMjIwLCAyNSwgMzAsIDIzMCwgOTMsIDE1LCA1LCAyMjAsIDI1LCAzMCwgMjIyLCA4LCAxNSwgNSwgMjIwLCAKKyAgICAxOCwgMTUsIDUsIDIyMCwgMTMsIDE1LCA1LCAyMjAsIDE0LCAyMTYsIDIzOSwgMTUsIDUsIDIyMCwgMTQsIDExNywgMjIwLCAKKyAgICAxNCwgMjUxLCA5OSwgMTE3LCAyNTEsIDk4LCAxNSwgNSwgMjIwLCA5LCAxNSwgNSwgMjE5LCAyMjUsIDE1LCA1LCAyMTksIAorICAgIDIyNiwgMTE3LCAyMzUsIDE5MywgMjE5LCAyMjUsIDE1LCA1LCAyMTksIDIyMywgMTUsIDUsIDIxOSwgMjIyLCAxNSwgNSwgCisgICAgMjE5LCAxOTEsIDE1LCA1LCAyMTksIDE5MiwgMjQyLCA5NCwgMTUsIDUsIDIxOSwgMTgyLCAxNSwgNSwgMjE5LCAxODAsIDE1LCAKKyAgICA1LCAyMTksIDE4MSwgMTE3LCAyMTksIDE4MSwgMjE5LCAyMjMsIDE1LCA1LCAyMTksIDE3MywgMTUsIDUsIDIxOSwgMTcxLCAKKyAgICAxNSwgNSwgMjE4LCA4MywgMTUsIDUsIDIxOCwgODQsIDExNywgMjE4LCA4MywgMTUsIDUsIDIxOCwgNTQsIDE1LCA1LCAyMTgsIAorICAgIDUzLCAxNSwgNSwgMjE4LCA1MSwgMTUsIDUsIDIxOCwgNDMsIDE1LCA1LCAyMTgsIDQyLCAxNSwgNSwgMjE4LCAxNywgMTUsIAorICAgIDUsIDIxOCwgMTYsIDE1LCA1LCAyMTcsIDEwNSwgMTUsIDUsIDIxNywgMTA2LCAyNTMsIDIxNiwgMTUsIDUsIDIxNywgMTA2LCAKKyAgICAzMCwgMjQxLCAxODAsIDE1LCA1LCAyMTcsIDEwNiwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjE3LCAxMDYsIDI0MiwgOTQsIAorICAgIDE1LCA1LCAyMTcsIDkzLCAxNSwgNSwgMjE3LCA5NCwgMTE3LCAyMTcsIDk0LCAyMjgsIDIzNCwgMTE3LCAyMjgsIDIzNCwgCisgICAgMjQ3LCAxODgsIDExNywgMjQ3LCAxODcsIDE1LCA1LCAyMTcsIDk0LCAyMTgsIDIzMywgMTUsIDUsIDIxNywgODQsIDE1LCA1LCAKKyAgICAxMjksIDMwLCAyNTIsIDYsIDE1LCA1LCAxMjksIDMwLCAyNDIsIDEwMywgMTUsIDUsIDEyOSwgMzAsIDIyMCwgNjMsIDE1LCAKKyAgICA1LCAxMjksIDMwLCAyMTksIDIyNSwgMTUsIDUsIDEyOSwgMzAsIDIxNSwgMTEzLCAxNSwgNSwgMTI5LCAzMCwgMjE0LCAyMTksIAorICAgIDE1LCA1LCAyMTcsIDcyLCAxNSwgNSwgMjE3LCA1MCwgMTUsIDUsIDIxNywgMjIsIDE1LCA1LCAyMTcsIDIzLCAyNDIsIDk0LCAKKyAgICAxNSwgNSwgMjE2LCAxMTcsIDE1LCA1LCAyMTYsIDExOCwgMjE2LCAyMzksIDE1LCA1LCAyMTYsIDkwLCAxNSwgNSwgMjE2LCAKKyAgICA3MiwgMTUsIDUsIDIxNiwgNzMsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjE2LCA3MywgMTE3LCAyMTYsIDcyLCAxNSwgNSwgCisgICAgMjE2LCA3MywgMTE3LCAyMTYsIDczLCAyNDMsIDEyNywgMTE3LCAyNDMsIDEyNywgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAKKyAgICAxNSwgNSwgMjE1LCAxMTgsIDE1LCA1LCAyMTUsIDExMywgMTUsIDUsIDIxNSwgMTExLCAxNSwgNSwgMjE1LCAxMDgsIDE1LCAKKyAgICA1LCAyMTUsIDk4LCAxNSwgNSwgMjE1LCA5OSwgMTE3LCAyMTUsIDk5LCAyMTAsIDExNywgMTE3LCAyMTAsIDExNiwgMTUsIDUsIAorICAgIDcwLCAxNSwgNSwgMTA0LCAyNDIsIDEwMywgMTUsIDUsIDEwNCwgMTA0LCA3MCwgMTUsIDUsIDEwNCwgMTE3LCAxMDQsIDIyNiwgCisgICAgOTAsIDExNywgMjI2LCA5MCwgMjQzLCA5NywgMTE3LCAyNDMsIDk2LCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMjE4LCAxOCwgCisgICAgMTE3LCAyMTgsIDE3LCAxNSwgNSwgMTA0LCAxMTcsIDEwNCwgMTA0LCAyMjMsIDQ5LCAxMTcsIDEwNCwgMjIzLCA0OCwgMTUsIAorICAgIDUsIDIxNCwgMjMwLCAxNSwgNSwgMjE0LCAyMjUsIDE1LCA1LCAyMTQsIDIxOSwgMTUsIDUsIDIxNCwgMjIwLCAyMzMsIDE5MSwgCisgICAgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMTQsIDIyMCwgMzAsIDIzMCwgMjMwLCAxNSwgNSwgMjE0LCAKKyAgICAyMjAsIDMwLCAxMDQsIDk2LCAxMDQsIDk2LCA3MCwgMTUsIDUsIDIxNCwgMjIwLCAzMCwgMTA0LCA5NiwgMTA0LCA5NiwgCisgICAgMTA0LCAyNDIsIDk0LCAxNSwgNSwgMjE0LCAyMjAsIDI0MiwgOTQsIDE1LCA1LCAyMTQsIDIyMCwgMjIwLCA0NSwgMTUsIDUsIAorICAgIDIxNCwgMjIwLCAyMjAsIDQ2LCAzMCwgMjUyLCAxNzYsIDE1LCA1LCAyMTQsIDIxNSwgMTUsIDUsIDIxNCwgMTk3LCAxNSwgNSwgCisgICAgMjE0LCAxOTgsIDMwLCAyMzMsIDExNywgMTUsIDUsIDIxNCwgMTk4LCAzMCwgMjMxLCA5MiwgOTYsIDI0OCwgMjIxLCAxNSwgCisgICAgNSwgMjE0LCAxOTgsIDMwLCAyMjAsIDEwMCwgMTUsIDUsIDIxNCwgMTk4LCAzMCwgNzAsIDE1LCA1LCAyMTQsIDE5NiwgMTUsIAorICAgIDUsIDIxNCwgMTkyLCAxNSwgNSwgMjE0LCAxOTMsIDMwLCAyMzQsIDIwNywgMTUsIDUsIDIxNCwgMTkzLCAzMCwgMTkwLCAxNSwgCisgICAgNSwgMjE0LCAxOTAsIDE1LCA1LCAyMTQsIDE5MSwgMjQyLCA5NCwgMTUsIDUsIDIxNCwgMTUwLCAxNSwgNSwgMjE0LCAxNTEsIAorICAgIDI0OSwgMTI1LCAyMTQsIDE1MCwgMTUsIDUsIDIxNCwgMTUxLCAyMjAsIDQ1LCAxNSwgNSwgMjE0LCAxNDgsIDE1LCA1LCAKKyAgICAyMTQsIDE0OSwgMzAsIDExNSwgOTYsIDE2MiwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTE1LCA5NiwgMTk3LCAxNSwgNSwgCisgICAgMjE0LCAxNDksIDMwLCAyNTQsIDE3OCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMTYyLCAxNSwgNSwgMjE0LCAxNDksIDMwLCAKKyAgICAyMjcsIDE5NCwgMTUsIDUsIDIxNCwgMTQ5LCAzMCwgMjE0LCAyMzAsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCAKKyAgICA5NiwgMjUzLCAyMzEsIDE1LCA1LCAyMTQsIDE0OSwgMzAsIDIxNCwgMjMxLCA5NiwgMjUyLCA2LCAxNSwgNSwgMjE0LCAxNDcsIAorICAgIDE1LCA1LCAyMTQsIDE0NCwgMTUsIDUsIDIxNCwgMTQzLCAxNSwgNSwgMjE0LCAxMzksIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDYxLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNTMsIDIyNiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTMwLCAxNSwgNSwgMjE0LCAKKyAgICAxNDAsIDMwLCAyNDYsIDY4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyNDMsIDEzNSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjQzLCAxMTgsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDI0MywgMTA1LCAyMTYsIDIzOSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjQzLCA5NiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjQyLCAxMTMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDE2MiwgMTUsIDUsIAorICAgIDIxNCwgMTQwLCAzMCwgMjM2LCAzNSwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMjM2LCAxNiwgMTUsIDUsIDIxNCwgMTQwLCAzMCwgCisgICAgMjM1LCAxNjUsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzNCwgOTIsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIzMiwgODQsIDE1LCAKKyAgICA1LCAyMTQsIDE0MCwgMzAsIDIzMCwgMTg4LCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAxOTAsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIAorICAgIDIyMCwgNjMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxOSwgMTgwLCAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTUsIDExOCwgCisgICAgMTUsIDUsIDIxNCwgMTQwLCAzMCwgMTA0LCA5NiwgMjQyLCAxMDMsIDE1LCA1LCAyMTQsIDE0MCwgMzAsIDIxNCwgMjE5LCAKKyAgICAxNSwgNSwgMjE0LCAxNDAsIDMwLCAyMTQsIDEzNywgMTUsIDUsIDIxNCwgMTM3LCAxNSwgNSwgMjE0LCAxMzgsIDMwLCA3MCwgCisgICAgMTUsIDUsIDIxNCwgMTI2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCA2MSwgMTUsIDUsIDIxNCwgMTI3LCAzMCwgMjMzLCAyMTcsIAorICAgIDE1LCA1LCAyMTQsIDEyNywgMzAsIDIzMywgMTk2LCAxNSwgNSwgMjE0LCAxMjcsIDMwLCAyMTcsIDcyLCAxNSwgNSwgMjE0LCAKKyAgICAxMjIsIDE1LCA1LCAyMTQsIDEyNSwgMTUsIDUsIDIxNCwgMTIzLCAxNSwgNSwgMjE0LCAxMTksIDE1LCA1LCAyMTQsIDEwOCwgCisgICAgMTUsIDUsIDIxNCwgMTA5LCAzMCwgMjM0LCAyMDcsIDE1LCA1LCAyMTQsIDEwNywgMTUsIDUsIDIxMCwgMTE2LCAxNSwgNSwgCisgICAgMjEwLCAxMTcsIDIxNiwgMjM5LCAxNSwgNSwgMjEwLCAxMTcsIDkyLCAzMCwgMjMzLCAxOTYsIDE1LCA1LCAyMTAsIDExMywgCisgICAgMTUsIDUsIDIxMCwgMTA2LCAxNSwgNSwgMjEwLCA5MywgMTUsIDUsIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQ1LCAxMTcsIAorICAgIDIxMCwgNDQsIDE1LCA1LCAyMTAsIDQzLCAxNSwgNSwgMjEwLCA0MSwgMTUsIDUsIDIxMCwgNDIsIDIzNSwgMywgMjE2LCAKKyAgICAyMzksIDE1LCA1LCAyMTAsIDM2LCAxNSwgNSwgMjEwLCAyOCwgMTUsIDUsIDIxMCwgMTMsIDE1LCA1LCAyMTAsIDExLCAxNSwgCisgICAgNSwgMjEwLCAxMiwgMzAsIDYxLCAxNSwgNSwgMjEwLCAxMCwgMTUsIDUsIDIxMCwgOSwgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIAorICAgIDIzMSwgMTUsIDEzMiwgNSwgMTM0LCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjUzLCAyMzEsIDE1LCAxMzIsIAorICAgIDUsIDI0NCwgODEsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMTksIDEyNSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDIyMCwgCisgICAgMTIyLCAyNTMsIDIzMSwgMTUsIDEzMiwgNSwgMjQ1LCAxOTMsIDI1MywgMjMxLCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjUzLCAKKyAgICAyMzEsIDE1LCAxMzIsIDUsIDEzNCwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI0NywgMTg3LCAxNSwgMTMyLCAKKyAgICA1LCAyNDQsIDgxLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyMjAsIAorICAgIDEyMiwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAyNDcsIDE4NywgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI0NywgCisgICAgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDExLCA3MCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgNzAsIDE1LCAxMzIsIDUsIDIxOSwgCisgICAgMTI1LCA3MCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDcwLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgNzAsIDE1LCAxMzIsIDUsIAorICAgIDIyOCwgMjAwLCA3MCwgMTUsIDEzMiwgNSwgMTIzLCAyNDMsIDM4LCAxNSwgMTMyLCA1LCAxMTMsIDI0MywgMzgsIDE1LCAKKyAgICAxMzIsIDUsIDEzNCwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgCisgICAgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI0MywgMzgsIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyNDMsIDM4LCAKKyAgICAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjQzLCAzOCwgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDI0MywgMzgsIDE1LCAxMzIsIDUsIAorICAgIDEyMywgMjQzLCAzNSwgMTUsIDEzMiwgNSwgMTEzLCAyNDMsIDM1LCAxNSwgMTMyLCA1LCAxMzQsIDI0MywgMzUsIDE1LCAKKyAgICAxMzIsIDUsIDI0NCwgMTEsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI0MywgMzUsIDE1LCAxMzIsIDUsIDExMywgCisgICAgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAxMzQsIDIyMCwgNzksIDIxNCwgMTIsIDE3LCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMjAsIDc4LCAxNSwgMTMyLCA1LCAKKyAgICAyMTksIDEyNSwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMjIwLCAxMjIsIDIyMCwgNzgsIDE1LCAxMzIsIDUsIDI0NSwgMTkzLCAKKyAgICAyMjAsIDc4LCAxNSwgMTMyLCA1LCAyMjgsIDIwMCwgMjIwLCA3OCwgMTUsIDEzMiwgNSwgMTIzLCAyMjAsIDczLCAxNSwgCisgICAgMTMyLCA1LCAxMTMsIDIyMCwgNzMsIDE1LCAxMzIsIDUsIDEzNCwgMjIwLCA3MywgMTUsIDEzMiwgNSwgMTM0LCAyMjAsIDc0LCAKKyAgICAyMTQsIDEyLCAxNywgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjIwLCA3MywgMTUsIDEzMiwgNSwgMjQ0LCA4MSwgMjIwLCA3MywgCisgICAgMTUsIDEzMiwgNSwgMjIwLCA3OSwgMzAsIDI0MywgMTE5LCA5NiwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIDIyMCwgNzksIDMwLCAKKyAgICAyNDMsIDExOSwgOTYsIDIzMCwgMTg4LCAxNSwgMTMyLCA1LCAxMjMsIDI1MSwgOTUsIDE1LCAxMzIsIDUsIDExMywgMjUxLCAKKyAgICA5NSwgMTUsIDEzMiwgNSwgMTM0LCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMzQsIDI1MSwgOTYsIDIxNCwgMTIsIDE3LCAxNSwgCisgICAgMTMyLCA1LCAyNDQsIDExLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyNTEsIDk1LCAxNSwgMTMyLCA1LCAxMzQsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDI0NSwgNzQsIDE1LCAxMzIsIDUsIDEzNCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjQ1LCA3MSwgCisgICAgMTUsIDEzMiwgNSwgMjQ0LCAxMSwgMjE0LCAxMiwgMjQ0LCAyMCwgMjMyLCAyMTcsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIAorICAgIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE1LCAxNSwgMTMyLCA1LCAyNDQsIDExLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzIsIAorICAgIDIxOCwgNjEsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDIxNCwgMTIsIDI0NCwgMjAsIDIzMiwgMjE4LCAyNTMsIDE1OCwgMTUsIAorICAgIDEzMiwgNSwgMjE5LCAxMjUsIDIxNCwgMTIsIDI0NCwgMjAsIDI1MywgMjI4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAKKyAgICAxMiwgMjQ0LCAyMCwgMjM2LCA4LCAxNSwgMTMyLCA1LCAyMjAsIDEyMiwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAxMCwgNjEsIAorICAgIDE1LCAxMzIsIDUsIDIyMCwgMTIyLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDEwLCAyNTMsIDE1OCwgMTUsIDEzMiwgNSwgCisgICAgMjQ1LCAxOTMsIDIxNCwgMTIsIDI0NCwgMjAsIDIxNCwgMTIxLCAxNSwgMTMyLCA1LCAyNDUsIDE5MywgMjE0LCAxMiwgMjQ0LCAKKyAgICAyMCwgMjE0LCAxMjAsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDI0LCAxNSwgMTMyLCAKKyAgICA1LCAyMjgsIDIwMCwgMjE0LCAxMiwgMjQ0LCAyMCwgMjM2LCAyMywgMTUsIDEzMiwgNSwgMjI4LCAyMDAsIDIxNCwgMTIsIAorICAgIDI0NCwgMjAsIDIzNiwgMjIsIDE1LCAxMzIsIDUsIDIyOCwgMjAwLCAyMTQsIDEyLCAyNDQsIDIwLCAyMzYsIDI1LCA2MSwgCisgICAgMTUsIDEzMiwgNSwgMTEzLCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDEzNCwgMjUzLCAyMzIsIDIxNiwgMjM5LCAKKyAgICAxNSwgMTMyLCA1LCAyNDQsIDExLCAyNTMsIDIzMiwgMjE2LCAyMzksIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MywgMjMyLCAKKyAgICAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMjE5LCAxMjUsIDI1MywgMjMyLCAyMTYsIDIzOSwgMTUsIDEzMiwgNSwgMTIzLCAyNTIsIAorICAgIDE1MCwgMTUsIDEzMiwgNSwgMTEzLCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgMTM0LCAyNTIsIDE1MCwgMTUsIDEzMiwgNSwgCisgICAgMjQ0LCAxMSwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDI0NCwgMTEsIDI1MiwgMTUxLCAyMTQsIDEyLCAxNywgMTUsIDEzMiwgCisgICAgNSwgMjQ0LCA4MSwgMjUyLCAxNTAsIDE1LCAxMzIsIDUsIDI0NCwgODEsIDI1MiwgMTUxLCAyMTQsIDEyLCAxNywgMTUsIAorICAgIDEzMiwgNSwgMjI4LCAyMTAsIDE1LCAxMzIsIDUsIDIyOCwgMjExLCAxNSwgMTMyLCA1LCAxMjMsIDI0NSwgNzAsIDE1LCAKKyAgICAxMzIsIDUsIDExMywgMjQ1LCA3MCwgMTUsIDEzMiwgNSwgMTIzLCAyMTYsIDE2OSwgMjQ3LCAxODcsIDE1LCAxMzIsIDUsIAorICAgIDExMywgMjE2LCAxNjcsIDI0NywgMTg3LCAxNSwgMTMyLCA1LCAyNDQsIDgxLCAyMTksIDExNCwgMjQ3LCAxODcsIDE1LCAKKyAgICAxMzIsIDUsIDEyMywgMjE2LCAxNjksIDIxNCwgMTIsIDI0NCwgMjAsIDYxLCAxNSwgMTMyLCA1LCAxMTMsIDIxNiwgMTY3LCAKKyAgICAyMTQsIDEyLCAyNDQsIDIwLCA2MSwgMTUsIDEzMiwgNSwgMTIzLCAyNDUsIDE4OSwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIAorICAgIDEyMywgMjI0LCAyMiwgMjUzLCAyMzEsIDE1LCAxMzIsIDUsIDU1LCAyNTMsIDIxOSwgMTIzLCAyMTksIDExNSwgMTUsIDEzMiwgCisgICAgNSwgNTUsIDI1MywgMjE5LCAxMjMsIDIyNCwgMjEsIDE1LCAyMjQsIDE0MSwgNSwgNTUsIDI1MywgMjE5LCAyMTEsIDIwOSwgCisgICAgMjQ3LCAxNzIsIDE1LCAyMjQsIDE0MSwgNSwgNjcsIDI0OSwgMjI2LCAxNSwgMjI0LCAxNDEsIDUsIDI0NywgMjU1LCAyNDksIAorICAgIDIyNiwgMTUsIDIyNCwgMTQxLCA1LCAyNDcsIDI1NSwgMjE1LCAyMjEsIDEyLCAxMywgMjU1LCAxNTUsIDEyLCAxMywgMjU1LCAKKyAgICAxNTQsIDEyLCAxMywgMjU1LCAxNTMsIDEyLCAxMywgMjU1LCAxNTIsIDEyLCAxMywgMjU1LCAxNTEsIDEyLCAxMywgMjU1LCAKKyAgICAxNTAsIDEyLCAxMywgMjU1LCAxNDksIDEyLCAxMywgMjU1LCAxNDgsIDEyLCAxMywgMjU1LCAxNDcsIDEyLCAxMywgMjU1LCAKKyAgICAxNDYsIDEyLCAxMywgMjU1LCAxNDUsIDEyLCAxMywgMjU1LCAxNDQsIDEyLCAxMywgMjU1LCAxNDMsIDEyLCAxMywgMjU1LCAKKyAgICAxNDIsIDEyLCAxMywgMjU1LCAxNDEsIDEyLCAxMywgMjU1LCAxNDAsIDEyLCAxMywgMjU1LCAxMzksIDEyLCAxMywgMjU1LCAKKyAgICAxMzgsIDEyLCAxMywgMjU1LCAxMzcsIDEyLCAxMywgMjU1LCAxMzYsIDEyLCAxMywgMjU1LCAxMzUsIDEyLCAxMywgMjU1LCAKKyAgICAxMzQsIDEyLCAxMywgMjU1LCAxMzMsIDEyLCAxMywgMjU1LCAxMzIsIDEyLCAxMywgMjU1LCAxMzEsIDEyLCAxMywgMjU1LCAKKyAgICAxMzAsIDEyLCAxMywgMjU1LCAxMjksIDEyLCAxMywgMjU1LCAxMjgsIDEyLCAxMywgMjU1LCAxMjcsIDEyLCAxMywgMjU1LCAKKyAgICAxMjYsIDEyLCAxMywgMjU1LCAxMjUsIDEyLCAxMywgMjU1LCAxMjQsIDEyLCAxMywgMjU1LCAxMjMsIDEyLCAxMywgMjU1LCAKKyAgICAxMjIsIDEyLCAxMywgMjU1LCAxMjEsIDEyLCAxMywgMjU1LCAxMjAsIDEyLCAxMywgMjU1LCAxMTksIDEyLCAxMywgMjU1LCAKKyAgICAxMTgsIDEyLCAxMywgMjU1LCAxMTcsIDEyLCAxMywgMjU1LCAxMTYsIDEyLCAxMywgMjU1LCAxMTUsIDEyLCAxMywgMjU1LCAKKyAgICAxMTQsIDEyLCAxMywgMjU1LCAxMTMsIDEyLCAxMywgMjU1LCAxMTIsIDEyLCAxMywgMjU1LCAxMTEsIDEyLCAxMywgMjU1LCAKKyAgICAxMTAsIDEyLCAxMywgMjU1LCAxMDksIDEyLCAxMywgMjU1LCAxMDgsIDEyLCAxMywgMjU1LCAxMDcsIDEyLCAxMywgMjU1LCAKKyAgICAxMDYsIDEyLCAxMywgMjU1LCAxMDUsIDEyLCAxMywgMjU1LCAxMDQsIDEyLCAxMywgMjU1LCAxMDMsIDEyLCAxMywgMjU1LCAKKyAgICAxMDIsIDEyLCAxMywgMjU1LCAxMDEsIDEyLCAxMywgMjU1LCAxMDAsIDEyLCAxMywgMjU1LCA5OSwgMTIsIDEzLCAyNTUsIAorICAgIDk4LCAxMiwgMTMsIDI1NSwgOTcsIDEyLCAxMywgMjU1LCA5NiwgMTIsIDEzLCAyNTUsIDk1LCAxMiwgMTMsIDI1NSwgOTQsIAorICAgIDEyLCAxMywgMjU1LCA5MywgMTIsIDEzLCAyNTUsIDkyLCAxMiwgMTMsIDI1NSwgOTEsIDEyLCAxMywgMjU1LCA5MCwgMTIsIAorICAgIDEzLCAyNTUsIDg5LCAxMiwgMTMsIDI1NSwgODgsIDEyLCAxMywgMjU1LCA4NywgMTIsIDEzLCAyNTUsIDg2LCAxMiwgMTMsIAorICAgIDI1NSwgODUsIDEyLCAxMywgMjU1LCA4NCwgMTIsIDEzLCAyNTUsIDgzLCAxMiwgMTMsIDI1NSwgODIsIDEyLCAxMywgMjU1LCAKKyAgICA4MSwgMTIsIDEzLCAyNTUsIDgwLCAxMiwgMTMsIDI1NSwgNzksIDEyLCAxMywgMjU1LCA3OCwgMTIsIDEzLCAyNTUsIDc3LCAKKyAgICAxMiwgMTMsIDI1NSwgNzYsIDEyLCAxMywgMjUzLCAxNTYsIDEyLCAxMywgMjUzLCAxNTQsIDEyLCAxMywgMjUzLCAxNTIsIAorICAgIDEyLCAxMywgMjUzLCAxNTAsIDEyLCAxMywgMjUzLCAxNDgsIDEyLCAxMywgMjUzLCAxNDcsIDEyLCAxMywgMjUzLCAxNDUsIAorICAgIDEyLCAxMywgMjUzLCAxNDMsIDEyLCAxMywgMjUzLCAxNDEsIDEyLCAxMywgMjUzLCAxMzksIDEyLCAxMywgMjUxLCA2MiwgCisgICAgMTIsIDEzLCAyNTEsIDYxLCAxMiwgMTMsIDI1MSwgNjAsIDEyLCAxMywgMjUxLCA1OSwgMTIsIDEzLCAyNTEsIDU4LCAxMiwgCisgICAgMTMsIDI1MSwgNTcsIDEyLCAxMywgMjUxLCA1NiwgMTIsIDEzLCAyNTEsIDU1LCAxMiwgMTMsIDI1MSwgNTQsIDEyLCAxMywgCisgICAgMjUxLCA1MywgMTIsIDEzLCAyNTEsIDUyLCAxMiwgMTMsIDI1MSwgNTEsIDEyLCAxMywgMjUxLCA1MCwgMTIsIDEzLCAyNTEsIAorICAgIDQ5LCAxMiwgMTMsIDI1MSwgNDgsIDEyLCAxMywgMjUxLCA0NywgMTIsIDEzLCAyNTEsIDQ2LCAxMiwgMTMsIDI1MSwgNDUsIAorICAgIDEyLCAxMywgMjUxLCA0NCwgMTIsIDEzLCAyNTEsIDQzLCAxMiwgMTMsIDI1MSwgNDIsIDEyLCAxMywgMjUxLCA0MSwgMTIsIAorICAgIDEzLCAyNTEsIDQwLCAxMiwgMTMsIDI1MSwgMzksIDEyLCAxMywgMjUxLCAzOCwgMTIsIDEzLCAyNTEsIDM3LCAxMiwgMTMsIAorICAgIDI1MSwgMzYsIDEyLCAxMywgMjUxLCAzNSwgMTIsIDEzLCAyNDksIDU5LCAxMiwgMTMsIDI0OSwgNTgsIDEyLCAxMywgMjQ5LCAKKyAgICA1NywgMTIsIDEzLCAyNDksIDU2LCAxMiwgMTMsIDI0OSwgNTUsIDEyLCAxMywgMjQ5LCA1NCwgMTIsIDEzLCAyNDksIDUzLCAKKyAgICAxMiwgMTMsIDI0OSwgNTIsIDEyLCAxMywgMjQ5LCA1MSwgMTIsIDEzLCAyNDksIDUwLCAxMiwgMTMsIDI0OSwgNDksIDEyLCAKKyAgICAxMywgMjQ5LCA0OCwgMTIsIDEzLCAyNDksIDQ3LCAxMiwgMTMsIDI0OSwgNDYsIDEyLCAxMywgMjQ5LCA0NSwgMTIsIDEzLCAKKyAgICAyNDksIDQ0LCAxMiwgMTMsIDI0OSwgNDMsIDEyLCAxMywgMjQ5LCA0MiwgMTIsIDEzLCAyNDksIDQxLCAxMiwgMTMsIDI0OSwgCisgICAgNDAsIDEyLCAxMywgMjQ5LCAzOSwgMTIsIDEzLCAyNDksIDM4LCAxMiwgMTMsIDI0OSwgMzcsIDEyLCAxMywgMjQ5LCAzNiwgCisgICAgMTIsIDEzLCAyNDksIDM1LCAxMiwgMTMsIDI0OSwgMzQsIDEyLCAxMywgMjQ5LCAzMywgMTIsIDEzLCAyNDksIDMyLCAxMiwgCisgICAgMTMsIDI0OSwgMzEsIDEyLCAxMywgMjQ5LCAzMCwgMTIsIDEzLCAyNDksIDI5LCAxMiwgMTMsIDI0OSwgMjgsIDEyLCAxMywgCisgICAgMjQ5LCAyNywgMTIsIDEzLCAyNDksIDI2LCAxMiwgMTMsIDI0OSwgMjUsIDEyLCAxMywgMjQ5LCAyNCwgMTIsIDEzLCAyNDksIAorICAgIDIzLCAxMiwgMTMsIDI0OSwgMjIsIDEyLCAxMywgMjQ5LCAyMSwgMTIsIDEzLCAyNDksIDIwLCAxMiwgMTMsIDI0OSwgMTksIAorICAgIDEyLCAxMywgMjQ5LCAxOCwgMTIsIDEzLCAyNDksIDE3LCAxMiwgMTMsIDI0OSwgMTYsIDEyLCAxMywgMjQ5LCAxNSwgMTIsIAorICAgIDEzLCAyNDksIDE0LCAxMiwgMTMsIDI0OSwgMTMsIDEyLCAxMywgMjQ5LCAxMiwgMTIsIDEzLCAyNDksIDExLCAxMiwgMTMsIAorICAgIDI0OSwgMTAsIDEyLCAxMywgMjQ5LCA5LCAxMiwgMTMsIDI0OSwgOCwgMTIsIDEzLCAyNDksIDcsIDEyLCAxMywgMjQ5LCA2LCAKKyAgICAxMiwgMTMsIDI0OSwgNSwgMTIsIDEzLCAyNDksIDQsIDEyLCAxMywgMjQ5LCAzLCAxMiwgMTMsIDI0OSwgMiwgMTIsIDEzLCAKKyAgICAyNDksIDEsIDEyLCAxMywgMjQ5LCAwLCAxMiwgMTMsIDI0OCwgMjU1LCAxMiwgMTMsIDI0OCwgMjU0LCAxMiwgMTMsIDI0OCwgCisgICAgMjUzLCAxMiwgMTMsIDI0OCwgMjUyLCAxMiwgMTMsIDI0OCwgMjUxLCAxMiwgMTMsIDI0OCwgMjUwLCAxMiwgMTMsIDI0OCwgCisgICAgMjQ5LCAxMiwgMTMsIDI0OCwgMjQ4LCAxMiwgMTMsIDI0OCwgMjQ3LCAxMiwgMTMsIDI0OCwgMjQ2LCAxMiwgMTMsIDI0OCwgCisgICAgMjQ1LCAxMiwgMTMsIDI0OCwgMjQ0LCAxMiwgMTMsIDI0OCwgMjQzLCAxMiwgMTMsIDI0OCwgMjQyLCAxMiwgMTMsIDI0OCwgCisgICAgMjQxLCAxMiwgMTMsIDI0OCwgMjQwLCAxMiwgMTMsIDI0OCwgMjM5LCAxMiwgMTMsIDI0OCwgMjM4LCAxMiwgMTMsIDI0OCwgCisgICAgMjM3LCAxMiwgMTMsIDI0OCwgMjM2LCAxMiwgMTMsIDI0OCwgMjM1LCAxMiwgMTMsIDI0OCwgMjM0LCAxMiwgMTMsIDI0OCwgCisgICAgMjMzLCAxMiwgMTMsIDI0OCwgMjMyLCAxMiwgMTMsIDI0OCwgMjMxLCAxMiwgMTMsIDI0OCwgMjMwLCAxMiwgMTMsIDI0OCwgCisgICAgMjI5LCAxMiwgMTMsIDI0OCwgMjI4LCAxMiwgMTMsIDI0OCwgMjI3LCAxMiwgMTMsIDI0OCwgMjI2LCAxMiwgMTMsIDI0OCwgCisgICAgMjI1LCAxMiwgMTMsIDI0OCwgMjI0LCAxMiwgMTMsIDI0NiwgMjMsIDEyLCAxMywgMjQ2LCAyMiwgMTIsIDEzLCAyNDYsIDIxLCAKKyAgICAxMiwgMTMsIDI0NiwgMjAsIDEyLCAxMywgMjQ2LCAxOSwgMTIsIDEzLCAyNDYsIDE4LCAxMiwgMTMsIDI0NiwgMTcsIDEyLCAKKyAgICAxMywgMjQ2LCAxNiwgMTIsIDEzLCAyNDYsIDE1LCAxMiwgMTMsIDI0NiwgMTQsIDEyLCAxMywgMjQ2LCAxMywgMTIsIDEzLCAKKyAgICAyNDYsIDEyLCAxMiwgMTMsIDI0NiwgMTEsIDEyLCAxMywgMjQ2LCAxMCwgMTIsIDEzLCAyNDYsIDksIDEyLCAxMywgMjQ2LCAKKyAgICA4LCAxMiwgMTMsIDI0NiwgNywgMTIsIDEzLCAyNDYsIDYsIDEyLCAxMywgMjQ2LCA1LCAxMiwgMTMsIDI0NiwgNCwgMTIsIAorICAgIDEzLCAyNDYsIDMsIDEyLCAxMywgMjQ2LCAyLCAxMiwgMTMsIDI0NiwgMSwgMTIsIDEzLCAyNDYsIDAsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTUsIDEyLCAxMywgMjQ1LCAyNTQsIDEyLCAxMywgMjQ1LCAyNTMsIDEyLCAxMywgMjQ1LCAyNTIsIDEyLCAxMywgMjQ1LCAKKyAgICAyNTEsIDEyLCAxMywgMjQ1LCAyNTAsIDEyLCAxMywgMjQ1LCAyNDksIDEyLCAxMywgMjQ1LCAyNDgsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDcsIDEyLCAxMywgMjQ1LCAyNDYsIDEyLCAxMywgMjQ1LCAyNDUsIDEyLCAxMywgMjQ1LCAyNDQsIDEyLCAxMywgMjQ1LCAKKyAgICAyNDMsIDEyLCAxMywgMjQ1LCAyNDIsIDEyLCAxMywgMjQ1LCAyNDEsIDEyLCAxMywgMjQ1LCAyNDAsIDEyLCAxMywgMjQ1LCAKKyAgICAyMzksIDEyLCAxMywgMjQ1LCAyMzgsIDEyLCAxMywgMjQ1LCAyMzcsIDEyLCAxMywgMjQ1LCAyMzYsIDEyLCAxMywgMjQ1LCAKKyAgICA1LCAxMiwgMTMsIDI0NSwgNCwgMTIsIDEzLCAyNDUsIDMsIDEyLCAxMywgMjQ1LCAyLCAxMiwgMTMsIDI0NSwgMSwgMTIsIAorICAgIDEzLCAyNDUsIDAsIDEyLCAxMywgMjQ0LCAyNTUsIDEyLCAxMywgMjQ0LCAyNTQsIDEyLCAxMywgMjQ0LCAyNTMsIDEyLCAxMywgCisgICAgMjQ0LCAyNTIsIDEyLCAxMywgMjQ0LCAyNTEsIDEyLCAxMywgMjQ0LCAyNTAsIDEyLCAxMywgMjQ0LCAyNDksIDEyLCAxMywgCisgICAgMjQ0LCAyNDgsIDEyLCAxMywgMjQ0LCAyNDcsIDEyLCAxMywgMjQ0LCAyNDYsIDEyLCAxMywgMjQ0LCAyNDUsIDEyLCAxMywgCisgICAgMjQ0LCAyNDQsIDEyLCAxMywgMjQ0LCAyNDMsIDEyLCAxMywgMjQ0LCAyNDIsIDEyLCAxMywgMjQ0LCAyNDEsIDEyLCAxMywgCisgICAgMjQ0LCAyNDAsIDEyLCAxMywgMjQ0LCAyMzksIDEyLCAxMywgMjQ0LCAyMzgsIDEyLCAxMywgMjQ0LCAyMzcsIDEyLCAxMywgCisgICAgMjQ0LCAyMzYsIDEyLCAxMywgMjQ0LCAyMzUsIDEyLCAxMywgMjQ0LCAyMzQsIDEyLCAxMywgMjQ0LCAyMzMsIDEyLCAxMywgCisgICAgMjQ0LCAyMzIsIDEyLCAxMywgMjQ0LCAyMzEsIDEyLCAxMywgMjQ0LCAyMzAsIDEyLCAxMywgMjQ0LCAyMjksIDEyLCAxMywgCisgICAgMjQ0LCAyMjgsIDEyLCAxMywgMjQ0LCAyMjcsIDEyLCAxMywgMjQ0LCAyMjYsIDEyLCAxMywgMjQ0LCAyMjUsIDEyLCAxMywgCisgICAgMjQ0LCAyMjQsIDEyLCAxMywgMjQ0LCAyMjMsIDEyLCAxMywgMjQ0LCAyMjIsIDEyLCAxMywgMjQ0LCAyMjEsIDEyLCAxMywgCisgICAgMjQ0LCAyMjAsIDEyLCAxMywgMjQ0LCAyMTksIDEyLCAxMywgMjQ0LCAyMTgsIDEyLCAxMywgMjQ0LCAyMTcsIDEyLCAxMywgCisgICAgMjQ0LCAyMTYsIDEyLCAxMywgMjQ0LCAyMTUsIDEyLCAxMywgMjQ0LCAyMTQsIDEyLCAxMywgMjQ0LCAyMTMsIDEyLCAxMywgCisgICAgMjQ0LCAyMTIsIDEyLCAxMywgMjQ0LCAyMTEsIDEyLCAxMywgMjQ0LCAyMTAsIDEyLCAxMywgMjQ0LCAyMDksIDEyLCAxMywgCisgICAgMjQ0LCAyMDgsIDEyLCAxMywgMjQ0LCAyMDcsIDEyLCAxMywgMjQ0LCAyMDYsIDEyLCAxMywgMjQ0LCAyMDUsIDEyLCAxMywgCisgICAgMjQ0LCAyMDQsIDEyLCAxMywgMjQ0LCAyMDMsIDEyLCAxMywgMjQ0LCAyMDIsIDEyLCAxMywgMjQ0LCAyMDEsIDEyLCAxMywgCisgICAgMjQ0LCAyMDAsIDEyLCAxMywgMjQ0LCAxOTksIDEyLCAxMywgMjQ0LCAxOTgsIDEyLCAxMywgMjQ0LCAxOTcsIDEyLCAxMywgCisgICAgMjQzLCAyMDEsIDEyLCAxMywgMjQzLCAyMDAsIDEyLCAxMywgMjQzLCAxOTksIDEyLCAxMywgMjQzLCAxOTgsIDEyLCAxMywgCisgICAgMjQzLCAxOTcsIDEyLCAxMywgMjQzLCAxOTYsIDEyLCAxMywgMjQzLCAxOTUsIDEyLCAxMywgMjQzLCAxOTQsIDEyLCAxMywgCisgICAgMjQzLCAxOTMsIDEyLCAxMywgMjQzLCAxOTIsIDEyLCAxMywgMjQzLCAxOTEsIDEyLCAxMywgMjQzLCAxOTAsIDEyLCAxMywgCisgICAgMjQzLCAxODksIDEyLCAxMywgMjQzLCAxODgsIDEyLCAxMywgMjQzLCAxODcsIDEyLCAxMywgMjQzLCAxODYsIDEyLCAxMywgCisgICAgMjQzLCAxODUsIDEyLCAxMywgMjQzLCAxODQsIDEyLCAxMywgMjQzLCAxODMsIDEyLCAxMywgMjQzLCAxODIsIDEyLCAxMywgCisgICAgMjQzLCAxODEsIDEyLCAxMywgMjQzLCAxODAsIDEyLCAxMywgMjQzLCAxNzksIDEyLCAxMywgMjQzLCAxNzgsIDEyLCAxMywgCisgICAgMjQzLCAxNzcsIDEyLCAxMywgMjQzLCAxNzYsIDEyLCAxMywgMjQzLCAxNzUsIDEyLCAxMywgMjQzLCAxNzQsIDEyLCAxMywgCisgICAgMjQzLCAxNzMsIDEyLCAxMywgMjQzLCAxNzIsIDEyLCAxMywgMjQzLCAxNzEsIDEyLCAxMywgMjQzLCAxNzAsIDEyLCAxMywgCisgICAgMjQzLCAxNjksIDEyLCAxMywgMjQzLCAxNjgsIDEyLCAxMywgMjQzLCAxNjcsIDEyLCAxMywgMjQzLCAxNjYsIDEyLCAxMywgCisgICAgMjQzLCAxNjUsIDEyLCAxMywgMjQzLCAxNjQsIDEyLCAxMywgMjQzLCAxNjMsIDEyLCAxMywgMjQzLCAxNjIsIDEyLCAxMywgCisgICAgMjQzLCAxNjEsIDEyLCAxMywgMjQzLCAxNjAsIDEyLCAxMywgMjQzLCAxNTksIDEyLCAxMywgMjQzLCAxNTgsIDEyLCAxMywgCisgICAgMjQzLCAxNTcsIDEyLCAxMywgMjQzLCAxNTYsIDEyLCAxMywgMjQzLCAxNTUsIDEyLCAxMywgMjQzLCAxNTQsIDEyLCAxMywgCisgICAgMjQzLCAxNTMsIDEyLCAxMywgMjQzLCAxNTIsIDEyLCAxMywgMjQzLCAxNTEsIDEyLCAxMywgMjQzLCAxNTAsIDEyLCAxMywgCisgICAgMjQzLCAxNDksIDEyLCAxMywgMjQzLCAxNDgsIDEyLCAxMywgMjQzLCAxNDcsIDEyLCAxMywgMjQzLCAxNDYsIDEyLCAxMywgCisgICAgMjQzLCAxNDUsIDEyLCAxMywgMjQzLCAxNDQsIDEyLCAxMywgMjQzLCAxNDMsIDEyLCAxMywgMjQzLCAxNDIsIDEyLCAxMywgCisgICAgMjQzLCAxNDEsIDEyLCAxMywgMjQzLCAxNDAsIDEyLCAxMywgMjQzLCAxMzksIDEyLCAxMywgMjQzLCAxMzgsIDEyLCAxMywgCisgICAgMjQyLCA1OCwgMTIsIDEzLCAyNDIsIDU3LCAxMiwgMTMsIDI0MiwgNTYsIDEyLCAxMywgMjQyLCA1NSwgMTIsIDEzLCAyNDIsIAorICAgIDU0LCAxMiwgMTMsIDI0MiwgNTMsIDEyLCAxMywgMjQyLCA1MiwgMTIsIDEzLCAyNDIsIDUxLCAxMiwgMTMsIDI0MiwgNTAsIAorICAgIDEyLCAxMywgMjQwLCAxMzgsIDEyLCAxMywgMjQwLCAxMzcsIDEyLCAxMywgMjQwLCAxMzYsIDEyLCAxMywgMjQwLCAxMzUsIAorICAgIDEyLCAxMywgMjQwLCAxMzQsIDEyLCAxMywgMjQwLCAxMzMsIDEyLCAxMywgMjQwLCAxMzIsIDEyLCAxMywgMjQwLCAxMzEsIAorICAgIDEyLCAxMywgMjQwLCAxMzAsIDEyLCAxMywgMjQwLCAxMjksIDEyLCAxMywgMjQwLCAxMjgsIDEyLCAxMywgMjQwLCAxMjcsIAorICAgIDEyLCAxMywgMjQwLCAxMjYsIDEyLCAxMywgMjQwLCAxMjUsIDEyLCAxMywgMjQwLCAxMjQsIDEyLCAxMywgMjQwLCAxMjMsIAorICAgIDEyLCAxMywgMjQwLCAxMjIsIDEyLCAxMywgMjQwLCAxMjEsIDEyLCAxMywgMjQwLCAxMjAsIDEyLCAxMywgMjM1LCAyMiwgCisgICAgMTIsIDEzLCAyMzUsIDIxLCAxMiwgMTMsIDIzNSwgMjAsIDEyLCAxMywgMjM1LCAxOSwgMTIsIDEzLCAyMzUsIDE4LCAxMiwgCisgICAgMTMsIDIzNSwgMTcsIDEyLCAxMywgMjM1LCAxNiwgMTIsIDEzLCAyMzUsIDE1LCAxMiwgMTMsIDIzMywgMTQ2LCAxMiwgMTMsIAorICAgIDIzMywgMTQ1LCAxMiwgMTMsIDIzMywgMTQ0LCAxMiwgMTMsIDIzMywgMTQzLCAxMiwgMTMsIDIzMywgMTQyLCAxMiwgMTMsIAorICAgIDIzMywgMTQxLCAxMiwgMTMsIDIzMywgMTQwLCAxMiwgMTMsIDIzMywgMTM5LCAxMiwgMTMsIDIzMywgMTM4LCAxMiwgMTMsIAorICAgIDIzMywgMTM3LCAxMiwgMTMsIDIzMiwgNDksIDEyLCAxMywgMjMyLCA0OCwgMTIsIDEzLCAyMzIsIDQ3LCAxMiwgMTMsIDIzMiwgCisgICAgNDYsIDEyLCAxMywgMjMyLCA0NSwgMTIsIDEzLCAyMzIsIDQ0LCAxMiwgMTMsIDIzMiwgNDMsIDEyLCAxMywgMjMyLCA0MiwgCisgICAgMTIsIDEzLCAyMzIsIDQxLCAxMiwgMTMsIDIzMiwgNDAsIDEyLCAxMywgMjMyLCAzOSwgMTIsIDEzLCAyMzIsIDM4LCAxMiwgCisgICAgMTMsIDIzMiwgMzcsIDEyLCAxMywgMjMyLCAzNiwgMTIsIDEzLCAyMzIsIDM1LCAxMiwgMTMsIDIzMiwgMzQsIDEyLCAxMywgCisgICAgMjMyLCAzMywgMTIsIDEzLCAyMzIsIDMyLCAxMiwgMTMsIDIzMiwgMzEsIDEyLCAxMywgMjMyLCAzMCwgMTIsIDEzLCAyMzIsIAorICAgIDI5LCAxMiwgMTMsIDIzMiwgMjgsIDEyLCAxMywgMjMyLCAyNywgMTIsIDEzLCAyMzIsIDI2LCAxMiwgMTMsIDIzMiwgMjUsIAorICAgIDEyLCAxMywgMjMyLCAyNCwgMTIsIDEzLCAyMzIsIDIzLCAxMiwgMTMsIDIzMiwgMjIsIDEyLCAxMywgMjMyLCAyMSwgMTIsIAorICAgIDEzLCAyMzIsIDIwLCAxMiwgMTMsIDIzMiwgMTksIDEyLCAxMywgMjMyLCAxOCwgMTIsIDEzLCAyMzIsIDE3LCAxMiwgMTMsIAorICAgIDIzMiwgMTYsIDEyLCAxMywgMjMyLCAxNSwgMTIsIDEzLCAyMzIsIDE0LCAxMiwgMTMsIDIzMiwgMTMsIDEyLCAxMywgMjMyLCAKKyAgICAxMiwgMTIsIDEzLCAyMzIsIDExLCAxMiwgMTMsIDIzMiwgMTAsIDEyLCAxMywgMjMyLCA5LCAxMiwgMTMsIDIzMiwgOCwgMTIsIAorICAgIDEzLCAyMzIsIDcsIDEyLCAxMywgMjMyLCA2LCAxMiwgMTMsIDIzMiwgNSwgMTIsIDEzLCAyMzIsIDQsIDEyLCAxMywgMjMyLCAKKyAgICAzLCAxMiwgMTMsIDIzMiwgMiwgMTIsIDEzLCAyMzIsIDEsIDEyLCAxMywgMjMyLCAwLCAxMiwgMTMsIDIzMSwgMjU1LCAxMiwgCisgICAgMTMsIDIzMSwgMjU0LCAxMiwgMTMsIDIzMSwgMjUzLCAxMiwgMTMsIDIzMSwgMjUyLCAxMiwgMTMsIDIzMSwgMjUxLCAxMiwgCisgICAgMTMsIDIzMSwgMjUwLCAxMiwgMTMsIDIzMSwgMjQ5LCAxMiwgMTMsIDIzMSwgMjQ4LCAxMiwgMTMsIDIzMSwgMjQ3LCAxMiwgCisgICAgMTMsIDIzMSwgMjQ2LCAxMiwgMTMsIDIzMSwgMjQ1LCAxMiwgMTMsIDIzMSwgMjQ0LCAxMiwgMTMsIDIzMSwgMjQzLCAxMiwgCisgICAgMTMsIDIzMSwgMjQyLCAxMiwgMTMsIDIzMSwgMjQxLCAxMiwgMTMsIDIzMSwgMjQwLCAxMiwgMTMsIDIzMCwgMjIsIDEyLCAKKyAgICAxMywgMjMwLCAyMSwgMTIsIDEzLCAyMzAsIDIwLCAxMiwgMTMsIDIzMCwgMTksIDEyLCAxMywgMjMwLCAxOCwgMTIsIDEzLCAKKyAgICAyMzAsIDE3LCAxMiwgMTMsIDIzMCwgMTYsIDEyLCAxMywgMjMwLCAxNSwgMTIsIDEzLCAyMzAsIDE0LCAxMiwgMTMsIDIzMCwgCisgICAgMTMsIDEyLCAxMywgMjMwLCAxMiwgMTIsIDEzLCAyMzAsIDExLCAxMiwgMTMsIDIzMCwgMTAsIDEyLCAxMywgMjMwLCA5LCAKKyAgICAxMiwgMTMsIDIzMCwgOCwgMTIsIDEzLCAyMzAsIDcsIDEyLCAxMywgMjMwLCA2LCAxMiwgMTMsIDIzMCwgNSwgMTIsIDEzLCAKKyAgICAyMzAsIDQsIDEyLCAxMywgMjMwLCAzLCAxMiwgMTMsIDIzMCwgMiwgMTIsIDEzLCAyMzAsIDEsIDEyLCAxMywgMjMwLCAwLCAKKyAgICAxMiwgMTMsIDIyOSwgMjU1LCAxMiwgMTMsIDIyOSwgMjU0LCAxMiwgMTMsIDIyOSwgMjUzLCAxMiwgMTMsIDIyOSwgMjUyLCAKKyAgICAxMiwgMTMsIDIyOSwgMjUxLCAxMiwgMTMsIDIyOSwgMjUwLCAxMiwgMTMsIDIyOSwgMjQ5LCAxMiwgMTMsIDIyOSwgMjQ4LCAKKyAgICAxMiwgMTMsIDIyOSwgMjQ3LCAxMiwgMTMsIDIyOSwgMjQ2LCAxMiwgMTMsIDIyOSwgMjQ1LCAxMiwgMTMsIDIyOSwgMjQ0LCAKKyAgICAxMiwgMTMsIDIyOSwgMjQzLCAxMiwgMTMsIDIyOSwgMjQyLCAxMiwgMTMsIDIyOSwgMjQxLCAxMiwgMTMsIDIyOSwgMjQwLCAKKyAgICAxMiwgMTMsIDIyOSwgMjM5LCAxMiwgMTMsIDIyOSwgMjM4LCAxMiwgMTMsIDIyOSwgMjM3LCAxMiwgMTMsIDIyOSwgMjM2LCAKKyAgICAxMiwgMTMsIDIyOSwgMjM1LCAxMiwgMTMsIDIyOSwgMjM0LCAxMiwgMTMsIDIyOSwgMjMzLCAxMiwgMTMsIDIyOSwgMjMyLCAKKyAgICAxMiwgMTMsIDIyOSwgMjMxLCAxMiwgMTMsIDIyOSwgMjMwLCAxMiwgMTMsIDIyOCwgMTM0LCAxMiwgMTMsIDIyOCwgMTMzLCAKKyAgICAxMiwgMTMsIDIyOCwgMTMyLCAxMiwgMTMsIDIyOCwgMTMxLCAxMiwgMTMsIDIyOCwgMTMwLCAxMiwgMTMsIDIyOCwgMTI5LCAKKyAgICAxMiwgMTMsIDIyOCwgMTI4LCAxMiwgMTMsIDIyOCwgMTI3LCAxMiwgMTMsIDIyOCwgMTI2LCAxMiwgMTMsIDIyOCwgMTI1LCAKKyAgICAxMiwgMTMsIDIyOCwgMTI0LCAxMiwgMTMsIDIyOCwgMTIzLCAxMiwgMTMsIDIyOCwgMTIyLCAxMiwgMTMsIDIyOCwgMTIxLCAKKyAgICAxMiwgMTMsIDIyOCwgMTIwLCAxMiwgMTMsIDIyOCwgMTE5LCAxMiwgMTMsIDIyOCwgMTE4LCAxMiwgMTMsIDIyOCwgMTE3LCAKKyAgICAxMiwgMTMsIDIyOCwgMTE2LCAxMiwgMTMsIDIyOCwgMTE1LCAxMiwgMTMsIDIyOCwgMTE0LCAxMiwgMTMsIDIyOCwgMTEzLCAKKyAgICAxMiwgMTMsIDIyNywgMjM2LCAxMiwgMTMsIDIyNywgMjM1LCAxMiwgMTMsIDIyNywgMjM0LCAxMiwgMTMsIDIyNywgMjMzLCAKKyAgICAxMiwgMTMsIDIyNywgMjMyLCAxMiwgMTMsIDIyNywgMjMxLCAxMiwgMTMsIDIyNywgMjMwLCAxMiwgMTMsIDIyNywgMjI5LCAKKyAgICAxMiwgMTMsIDIyNywgMjI4LCAxMiwgMTMsIDIyNywgMjI3LCAxMiwgMTMsIDIyNywgMjI2LCAxMiwgMTMsIDIyNywgMjI1LCAKKyAgICAxMiwgMTMsIDIyNywgMjI0LCAxMiwgMTMsIDIyNywgMjIzLCAxMiwgMTMsIDIyNywgMjIyLCAxMiwgMTMsIDIyNywgMjIxLCAKKyAgICAxMiwgMTMsIDIyNywgMjIwLCAxMiwgMTMsIDIyNywgMjE5LCAxMiwgMTMsIDIyNywgMjE4LCAxMiwgMTMsIDIyNywgMjE3LCAKKyAgICAxMiwgMTMsIDIyNywgMjE2LCAxMiwgMTMsIDIyNywgMjE1LCAxMiwgMTMsIDIyNywgMjE0LCAxMiwgMTMsIDIyNywgMjEzLCAKKyAgICAxMiwgMTMsIDIyNywgMjEyLCAxMiwgMTMsIDIyNywgMjExLCAxMiwgMTMsIDIyNywgNzYsIDEyLCAxMywgMjI3LCA3NSwgMTIsIAorICAgIDEzLCAyMjcsIDc0LCAxMiwgMTMsIDIyNywgNzMsIDEyLCAxMywgMjI3LCA3MiwgMTIsIDEzLCAyMjcsIDcxLCAxMiwgMTMsIAorICAgIDIyNywgNzAsIDEyLCAxMywgMjI3LCA2OSwgMTIsIDEzLCAyMjcsIDY4LCAxMiwgMTMsIDIyNywgNjcsIDEyLCAxMywgMjI3LCAKKyAgICA2NiwgMTIsIDEzLCAyMjcsIDY1LCAxMiwgMTMsIDIyNywgNjQsIDEyLCAxMywgMjI3LCA2MywgMTIsIDEzLCAyMjcsIDYyLCAKKyAgICAxMiwgMTMsIDIyNywgNjEsIDEyLCAxMywgMjI3LCA2MCwgMTIsIDEzLCAyMjcsIDU5LCAxMiwgMTMsIDIyNywgNTgsIDEyLCAKKyAgICAxMywgMjI3LCA1NywgMTIsIDEzLCAyMjcsIDU2LCAxMiwgMTMsIDIyNywgNTUsIDEyLCAxMywgMjI3LCA1NCwgMTIsIDEzLCAKKyAgICAyMjcsIDUzLCAxMiwgMTMsIDIyNywgNTIsIDEyLCAxMywgMjI3LCA1MSwgMTIsIDEzLCAyMjcsIDUwLCAxMiwgMTMsIDIyNywgCisgICAgNDksIDEyLCAxMywgMjI3LCA0OCwgMTIsIDEzLCAyMjcsIDQ3LCAxMiwgMTMsIDIyNywgNDYsIDEyLCAxMywgMjI3LCA0NSwgCisgICAgMTIsIDEzLCAyMjcsIDQ0LCAxMiwgMTMsIDIyNywgNDMsIDEyLCAxMywgMjI3LCA0MiwgMTIsIDEzLCAyMjcsIDQxLCAxMiwgCisgICAgMTMsIDIyNywgNDAsIDEyLCAxMywgMjI3LCAzOSwgMTIsIDEzLCAyMjcsIDM4LCAxMiwgMTMsIDIyNywgMzcsIDEyLCAxMywgCisgICAgMjI3LCAzNiwgMTIsIDEzLCAyMjcsIDM1LCAxMiwgMTMsIDIyNywgMzQsIDEyLCAxMywgMjI3LCAzMywgMTIsIDEzLCAyMjcsIAorICAgIDMyLCAxMiwgMTMsIDIyNywgMzEsIDEyLCAxMywgMjI3LCAzMCwgMTIsIDEzLCAyMjcsIDI5LCAxMiwgMTMsIDIyNywgMjgsIAorICAgIDEyLCAxMywgMjI3LCAyNywgMTIsIDEzLCAyMjcsIDI2LCAxMiwgMTMsIDIyNywgMjUsIDEyLCAxMywgMjI3LCAyNCwgMTIsIAorICAgIDEzLCAyMjcsIDIzLCAxMiwgMTMsIDIyNywgMjIsIDEyLCAxMywgMjI3LCAyMSwgMTIsIDEzLCAyMjcsIDIwLCAxMiwgMTMsIAorICAgIDIyNywgMTksIDEyLCAxMywgMjI3LCAxOCwgMTIsIDEzLCAyMjcsIDE3LCAxMiwgMTMsIDIyNywgMTYsIDEyLCAxMywgMjI3LCAKKyAgICAxNSwgMTIsIDEzLCAyMjcsIDE0LCAxMiwgMTMsIDIyNywgMTMsIDEyLCAxMywgMjI3LCAxMiwgMTIsIDEzLCAyMjcsIDExLCAKKyAgICAxMiwgMTMsIDIyNywgMTAsIDEyLCAxMywgMjI3LCA5LCAxMiwgMTMsIDIyNywgOCwgMTIsIDEzLCAyMjcsIDcsIDEyLCAxMywgCisgICAgMjI3LCA2LCAxMiwgMTMsIDIyNywgNSwgMTIsIDEzLCAyMjcsIDQsIDEyLCAxMywgMjI3LCAzLCAxMiwgMTMsIDIyNywgMiwgCisgICAgMTIsIDEzLCAyMjYsIDEwNCwgMTIsIDEzLCAyMjYsIDEwMywgMTIsIDEzLCAyMjYsIDEwMiwgMTIsIDEzLCAyMjYsIDEwMSwgCisgICAgMTIsIDEzLCAyMjYsIDEwMCwgMTIsIDEzLCAyMjYsIDk5LCAxMiwgMTMsIDIyNiwgOTgsIDEyLCAxMywgMjI2LCA5NywgMTIsIAorICAgIDEzLCAyMjYsIDk2LCAxMiwgMTMsIDIyNiwgOTUsIDEyLCAxMywgMjI2LCA5NCwgMTIsIDEzLCAyMjYsIDkzLCAxMiwgMTMsIAorICAgIDIyNiwgOTIsIDEyLCAxMywgMjI0LCA5NSwgMTIsIDEzLCAyMjQsIDk0LCAxMiwgMTMsIDIyNCwgOTMsIDEyLCAxMywgMjI0LCAKKyAgICA5MiwgMTIsIDEzLCAyMjQsIDkxLCAxMiwgMTMsIDIyNCwgOTAsIDEyLCAxMywgMjI0LCA4OSwgMTIsIDEzLCAyMjMsIDIyMiwgCisgICAgMTIsIDEzLCAyMjMsIDIyMSwgMTIsIDEzLCAyMjMsIDIyMCwgMTIsIDEzLCAyMjMsIDIxOSwgMTIsIDEzLCAyMjMsIDIxOCwgCisgICAgMTIsIDEzLCAyMjMsIDIxNywgMTIsIDEzLCAyMjMsIDIxNiwgMTIsIDEzLCAyMjMsIDIxNSwgMTIsIDEzLCAyMjMsIDIxNCwgCisgICAgMTIsIDEzLCAyMjMsIDIxMywgMTIsIDEzLCAyMjMsIDIxMiwgMTIsIDEzLCAyMjMsIDIxMSwgMTIsIDEzLCAyMjMsIDIxMCwgCisgICAgMTIsIDEzLCAyMjMsIDIwOSwgMTIsIDEzLCAyMjMsIDIwOCwgMTIsIDEzLCAyMjMsIDIwNywgMTIsIDEzLCAyMjMsIDIwNiwgCisgICAgMTIsIDEzLCAyMjMsIDIwNSwgMTIsIDEzLCAyMjMsIDIwNCwgMTIsIDEzLCAyMjMsIDIwMywgMTIsIDEzLCAyMjMsIDIwMiwgCisgICAgMTIsIDEzLCAyMjMsIDIwMSwgMTIsIDEzLCAyMjMsIDIwMCwgMTIsIDEzLCAyMjMsIDE5OSwgMTIsIDEzLCAyMjMsIDE5OCwgCisgICAgMTIsIDEzLCAyMjMsIDE5NywgMTIsIDEzLCAyMjMsIDE5NiwgMTIsIDEzLCAyMjMsIDE5NSwgMTIsIDEzLCAyMjMsIDE5NCwgCisgICAgMTIsIDEzLCAyMjMsIDE5MywgMTIsIDEzLCAyMjMsIDE5MiwgMTIsIDEzLCAyMjMsIDE5MSwgMTIsIDEzLCAyMjMsIDE5MCwgCisgICAgMTIsIDEzLCAyMjMsIDE4OSwgMTIsIDEzLCAyMjIsIDg4LCAxMiwgMTMsIDIyMiwgODcsIDEyLCAxMywgMjIyLCA4NiwgMTIsIAorICAgIDEzLCAyMjIsIDg1LCAxMiwgMTMsIDIyMiwgODQsIDEyLCAxMywgMjIyLCA4MywgMTIsIDEzLCAyMjIsIDgyLCAxMiwgMTMsIAorICAgIDIyMiwgODEsIDEyLCAxMywgMjIyLCA4MCwgMTIsIDEzLCAyMjIsIDc5LCAxMiwgMTMsIDIyMiwgNzgsIDEyLCAxMywgMjIyLCAKKyAgICA3NywgMTIsIDEzLCAyMjIsIDc2LCAxMiwgMTMsIDIyMiwgNzUsIDEyLCAxMywgMjIyLCA3NCwgMTIsIDEzLCAyMjIsIDczLCAKKyAgICAxMiwgMTMsIDIyMiwgNzIsIDEyLCAxMywgMjIyLCA3MSwgMTIsIDEzLCAyMjIsIDcwLCAxMiwgMTMsIDIyMiwgNjksIDEyLCAKKyAgICAxMywgMjIyLCA2OCwgMTIsIDEzLCAyMjIsIDY3LCAxMiwgMTMsIDIyMiwgNjYsIDEyLCAxMywgMjIyLCA2NSwgMTIsIDEzLCAKKyAgICAyMjIsIDY0LCAxMiwgMTMsIDIyMiwgNjMsIDEyLCAxMywgMjIyLCA2MiwgMTIsIDEzLCAyMjIsIDYxLCAxMiwgMTMsIDIyMiwgCisgICAgNjAsIDEyLCAxMywgMjIyLCA1OSwgMTIsIDEzLCAyMjIsIDU4LCAxMiwgMTMsIDIyMiwgNTcsIDEyLCAxMywgMjIyLCA1NiwgCisgICAgMTIsIDEzLCAyMjIsIDU1LCAxMiwgMTMsIDIyMiwgNTQsIDEyLCAxMywgMjIyLCA1MywgMTIsIDEzLCAyMjIsIDUyLCAxMiwgCisgICAgMTMsIDIyMiwgNTEsIDEyLCAxMywgMjIyLCA1MCwgMTIsIDEzLCAyMjIsIDQ5LCAxMiwgMTMsIDIyMiwgNDgsIDEyLCAxMywgCisgICAgMjIyLCA0NywgMTIsIDEzLCAyMjIsIDQ2LCAxMiwgMTMsIDIyMiwgNDUsIDEyLCAxMywgMjIyLCA0NCwgMTIsIDEzLCAyMjIsIAorICAgIDQzLCAxMiwgMTMsIDIyMiwgNDIsIDEyLCAxMywgMjIyLCA0MSwgMTIsIDEzLCAyMjIsIDQwLCAxMiwgMTMsIDIyMiwgMzksIAorICAgIDEyLCAxMywgMjIyLCAzOCwgMTIsIDEzLCAyMjIsIDM3LCAxMiwgMTMsIDIyMiwgMzYsIDEyLCAxMywgMjIyLCAzNSwgMTIsIAorICAgIDEzLCAyMTcsIDE1MCwgMTIsIDEzLCAyMTcsIDE0OSwgMTIsIDEzLCAyMTcsIDE0OCwgMTIsIDEzLCAyMTcsIDE0NywgMTIsIAorICAgIDEzLCAyMTcsIDE0NiwgMTIsIDEzLCAyMTcsIDE0NSwgMTIsIDEzLCAyMTcsIDE0NCwgMTIsIDEzLCAyMTcsIDE0MywgMTIsIAorICAgIDEzLCAyMTcsIDE0MiwgMTIsIDEzLCAyMTcsIDE0MSwgMTIsIDEzLCAyMTcsIDE0MCwgMTIsIDEzLCAyMTcsIDEzOSwgMTIsIAorICAgIDEzLCAyMTcsIDEzOCwgMTIsIDEzLCAyMTcsIDEzNywgMTIsIDEzLCAyMTcsIDEzNiwgMTIsIDEzLCAyMTcsIDEzNSwgMTIsIAorICAgIDEzLCAyMTcsIDEzNCwgMTIsIDEzLCAyMTcsIDEzMywgMTIsIDEzLCAyMTcsIDEzMiwgMTIsIDEzLCAyMTcsIDEzMSwgMTIsIAorICAgIDEzLCAyMTcsIDEzMCwgMTIsIDEzLCAyMTcsIDEyOSwgMTIsIDEzLCAyMTcsIDEyOCwgMTIsIDEzLCAyMTcsIDEyNywgMTIsIAorICAgIDEzLCAyMTcsIDEyNiwgMTIsIDEzLCAyMTcsIDEyNSwgMTIsIDEzLCAyMTcsIDEyNCwgMTIsIDEzLCAyMTcsIDEyMywgMTIsIAorICAgIDEzLCAyMTcsIDEyMiwgMTIsIDEzLCAyMTcsIDEyMSwgMTIsIDEzLCAyMTcsIDEyMCwgMTIsIDEzLCAyMTcsIDExOSwgMTIsIAorICAgIDEzLCAyMTcsIDExOCwgMTIsIDEzLCAyMTcsIDExNywgMTIsIDEzLCAyMTcsIDExNiwgMTIsIDEzLCAyMTcsIDExNSwgMTIsIAorICAgIDEzLCAyMTcsIDExNCwgMTIsIDEzLCAyMTcsIDExMywgMTIsIDEzLCAyMTcsIDExMiwgMTIsIDEzLCAyMTcsIDExMSwgMTIsIAorICAgIDEzLCAyMTcsIDExMCwgMTIsIDEzLCAyMTcsIDEwOSwgMTIsIDEzLCAyMTcsIDEwOCwgMTIsIDEzLCAyMTcsIDEwNywgMTIsIAorICAgIDEzLCAyMTUsIDIyLCAxMiwgMTMsIDIxNSwgMjEsIDEyLCAxMywgMjE1LCAyMCwgMTIsIDEzLCAyMTUsIDE5LCAxMiwgMTMsIAorICAgIDIxNSwgMTgsIDEyLCAxMywgMjE1LCAxNywgMTIsIDEzLCAyMTUsIDE2LCAxMiwgMTMsIDIxNSwgMTUsIDEyLCAxMywgMjE1LCAKKyAgICAxNCwgMTIsIDEzLCAyMTUsIDEzLCAxMiwgMTMsIDIxNSwgMTIsIDEyLCAxMywgMjE1LCAxMSwgMTIsIDEzLCAyMTUsIDEwLCAKKyAgICAxMiwgMTMsIDIxNSwgOSwgMTIsIDEzLCAyMTUsIDgsIDEyLCAxMywgMjE1LCA3LCAxMiwgMTMsIDIxNSwgNiwgMTIsIDEzLCAKKyAgICAyMTUsIDUsIDEyLCAxMywgMjE1LCA0LCAxMiwgMTMsIDIxNSwgMywgMTIsIDEzLCAyMTUsIDIsIDEyLCAxMywgMjE1LCAxLCAKKyAgICAxMiwgMTMsIDIxNSwgMCwgMTIsIDEzLCAyMTQsIDI1NSwgMTIsIDEzLCAyMTQsIDI1NCwgMTIsIDEzLCAyMTQsIDI1MywgMTIsIAorICAgIDEzLCAyMTQsIDI1MiwgMTIsIDEzLCAyMTQsIDI1MSwgMTIsIDEzLCAyMTQsIDI1MCwgMTIsIDEzLCAyMTQsIDI0OSwgMTIsIAorICAgIDEzLCAyMTQsIDI0OCwgMTIsIDEzLCAyMTQsIDI0NywgMTIsIDEzLCAyMTQsIDI0NiwgMTIsIDEzLCAyMTQsIDI0NSwgMTIsIAorICAgIDEzLCAyMTQsIDI0NCwgMTIsIDEzLCAyMTQsIDI0MywgMTIsIDEzLCAyMTQsIDI0MiwgMTIsIDEzLCAyMTQsIDI0MSwgMTIsIAorICAgIDEzLCAyMTQsIDI0MCwgMTIsIDEzLCAyMTQsIDIzOSwgMTIsIDEzLCAyMTQsIDIzOCwgMTIsIDEzLCAyMTQsIDIzNywgMTIsIAorICAgIDEzLCAyMTQsIDIzNiwgMTIsIDEzLCAyMTQsIDIzNSwgMTIsIDEzLCAyMTQsIDIzNCwgMTIsIDEzLCAyMTQsIDIzMywgMTIsIAorICAgIDEzLCAyMTQsIDIzMiwgMTIsIDEzLCAyMTQsIDEwNCwgMTIsIDEzLCAyMTQsIDEwMywgMTIsIDEzLCAyMTQsIDEwMiwgMTIsIAorICAgIDEzLCAyMTQsIDEwMSwgMTIsIDEzLCAyMTQsIDEwMCwgMTIsIDEzLCAyMTQsIDk5LCAxMiwgMTMsIDIxNCwgOTgsIDEyLCAxMywgCisgICAgMjE0LCA5NywgMTIsIDEzLCAyMTQsIDk2LCAxMiwgMTMsIDIxNCwgOTUsIDEyLCAxMywgMjE0LCA5NCwgMTIsIDEzLCAyMTQsIAorICAgIDkzLCAxMiwgMTMsIDIxNCwgOTIsIDEyLCAxMywgMjE0LCA5MSwgMTIsIDEzLCAyMTQsIDkwLCAxMiwgMTMsIDIxNCwgODksIAorICAgIDEyLCAxMywgMjE0LCA4OCwgMTIsIDEzLCAyMTQsIDg3LCAxMiwgMTMsIDIxNCwgODYsIDEyLCAxMywgMjE0LCA4NSwgMTIsIAorICAgIDEzLCAyMTQsIDg0LCAxMiwgMTMsIDIxNCwgODMsIDEyLCAxMywgMjE0LCA4MiwgMTIsIDEzLCAyMTQsIDgxLCAxMiwgMTMsIAorICAgIDIxNCwgODAsIDEyLCAxMywgMjE0LCA3OSwgMTIsIDEzLCAyMTQsIDc4LCAxMiwgMTMsIDIxNCwgNzcsIDEyLCAxMywgMjE0LCAKKyAgICA3NiwgMTIsIDEzLCAyMTQsIDc1LCAxMiwgMTMsIDIxNCwgNzQsIDEyLCAxMywgMjE0LCA3MywgMTIsIDEzLCAyMTQsIDcyLCAKKyAgICAxMiwgMTMsIDIxNCwgNzEsIDEyLCAxMywgMjE0LCA3MCwgMTIsIDEzLCAyMTQsIDY5LCAxMiwgMTMsIDIxNCwgNjgsIDEyLCAKKyAgICAxMywgMjE0LCA2NywgMTIsIDEzLCAyMTQsIDY2LCAxMiwgMTMsIDIxNCwgNjUsIDEyLCAxMywgMjE0LCA2NCwgMTIsIDEzLCAKKyAgICAyMTQsIDYzLCAxMiwgMTMsIDIxNCwgNjIsIDEyLCAxMywgMjE0LCA2MSwgMTIsIDEzLCAyMTQsIDYwLCAxMiwgMTMsIDIxNCwgCisgICAgNTksIDEyLCAxMywgMjE0LCA1OCwgMTIsIDEzLCAyMTQsIDU3LCAxMiwgMTMsIDIxNCwgNTYsIDEyLCAxMywgMjE0LCA1NSwgCisgICAgMTIsIDEzLCAyMTQsIDU0LCAxMiwgMTMsIDIxNCwgNTMsIDEyLCAxMywgMjE0LCA1MiwgMTIsIDEzLCAyMTQsIDUxLCAxMiwgCisgICAgMTMsIDIxNCwgNTAsIDEyLCAxMywgMjE0LCA0OSwgMTIsIDEzLCAyMTQsIDQ4LCAxMiwgMTMsIDIxNCwgNDcsIDEyLCAxMywgCisgICAgMjE0LCA0NiwgMTIsIDEzLCAyMTQsIDQ1LCAxMiwgMTMsIDIxNCwgNDQsIDEyLCAxMywgMjE0LCA0MywgMTIsIDEzLCAyMTQsIAorICAgIDQyLCAxMiwgMTMsIDIxNCwgNDEsIDEyLCAxMywgMjE0LCA0MCwgMTIsIDEzLCAyMTQsIDM5LCAxMiwgMTMsIDIxNCwgMzgsIAorICAgIDEyLCAxMywgMjE0LCAzNywgMTIsIDEzLCAyMTQsIDM2LCAxMiwgMTMsIDIxNCwgMzUsIDEyLCAxMywgMjE0LCAzNCwgMTIsIAorICAgIDEzLCAyMTQsIDMzLCAxMiwgMTMsIDIxNCwgMzIsIDEyLCAxMywgMjE0LCAzMSwgMTIsIDEzLCAyMTQsIDMwLCAxMiwgMTMsIAorICAgIDIxNCwgMjksIDEyLCAxMywgMjE0LCAyOCwgMTIsIDEzLCAyMTIsIDk3LCAxMiwgMTMsIDIxMiwgOTYsIDEyLCAxMywgMjEyLCAKKyAgICA5NSwgMTIsIDEzLCAyMTIsIDk0LCAxMiwgMTMsIDIxMiwgOTMsIDEyLCAxMywgMjEyLCA5MiwgMTIsIDEzLCAyMTIsIDkxLCAKKyAgICAxMiwgMTMsIDIxMiwgOTAsIDEyLCAxMywgMjEyLCA4OSwgMTIsIDEzLCAyMTIsIDg4LCAxMiwgMTMsIDIxMiwgODcsIDEyLCAKKyAgICAxMywgMjEyLCA4NiwgMTIsIDEzLCAyMTIsIDg1LCAxMiwgMTMsIDIxMiwgODQsIDEyLCAxMywgMjEyLCA4MywgMTIsIDEzLCAKKyAgICAyMTIsIDgyLCAxMiwgMTMsIDIxMiwgODEsIDEyLCAxMywgMjEyLCA4MCwgMTIsIDEzLCAyMTIsIDc5LCAxMiwgMTMsIDIxMiwgCisgICAgNzgsIDEyLCAxMywgMjEyLCA3NywgMTIsIDEzLCAyMTIsIDc2LCAxMiwgMTMsIDIxMiwgNzUsIDEyLCAxMywgMjEyLCA3NCwgCisgICAgMTIsIDEzLCAyMTIsIDczLCAxMiwgMTMsIDIxMiwgNzIsIDEyLCAxMywgMjEyLCA3MSwgMTIsIDEzLCAyMTIsIDcwLCAxMiwgCisgICAgMTMsIDIxMiwgNjksIDEyLCAxMywgMjEyLCA2OCwgMTIsIDEzLCAyMTIsIDY3LCAxMiwgMTMsIDIxMiwgNjYsIDEyLCAxMywgCisgICAgMjExLCAxNzcsIDEyLCAxMywgMjExLCAxNzYsIDEyLCAxMywgMjExLCAxNzUsIDEyLCAxMywgMjExLCAxNzQsIDEyLCAxMywgCisgICAgMjExLCAxNzMsIDEyLCAxMywgMjExLCAxNzIsIDEyLCAxMywgMjExLCAxNzEsIDEyLCAxMywgMjExLCAxNzAsIDEyLCAxMywgCisgICAgMjExLCAxNjksIDEyLCAxMywgMjExLCAxNjgsIDEyLCAxMywgMjExLCAxNjcsIDEyLCAxMywgMjExLCAxNjYsIDEyLCAxMywgCisgICAgMjExLCAxMTUsIDEyLCAxMywgMjExLCAxMTQsIDEyLCAxMywgMjExLCAxMTMsIDEyLCAxMywgMjExLCAxMTIsIDEyLCAxMywgCisgICAgMjExLCAxMTEsIDEyLCAxMywgMjExLCAxMTAsIDEyLCAxMywgMjExLCAxMDksIDEyLCAxMywgMjExLCAxMDgsIDEyLCAxMywgCisgICAgMjExLCAxMDcsIDEyLCAxMywgMjEwLCAxNTgsIDEyLCAxMywgMjEwLCAxNTcsIDEyLCAxMywgMjEwLCAxNTYsIDEyLCAxMywgCisgICAgMjEwLCAxNTUsIDEyLCAxMywgMjEwLCAxNTQsIDEyLCAxMywgMjEwLCAxNTMsIDEyLCAxMywgMjEwLCAxNTIsIDEyLCAxMywgCisgICAgMjEwLCAxNTEsIDEyLCAxMywgMjEwLCAxNTAsIDEyLCAxMywgMjEwLCAxNDksIDEyLCAxMywgMjEwLCAxNDgsIDEyLCAxMywgCisgICAgMjEwLCAxNDcsIDEyLCAxMywgMjEwLCAxNDYsIDEyLCAxMywgMjEwLCAxNDUsIDEyLCAxMywgMjEwLCAxNDQsIDEyLCAxMywgCisgICAgMjEwLCAxNDMsIDEyLCAxMywgMjEwLCAxNDIsIDEyLCAxMywgMjEwLCAxNDEsIDEyLCAxMywgMjEwLCAxNDAsIDEyLCAxMywgCisgICAgMjEwLCAxMzksIDEyLCAxMywgMjEwLCAxMzgsIDEyLCAxMywgMjEwLCAxMzcsIDEyLCAxMywgMjEwLCAxMzYsIDEyLCAxMywgCisgICAgMjEwLCAxMzUsIDEyLCAxMywgMjEwLCAxMzQsIDEyLCAxMywgMjEwLCAxMzMsIDEyLCAxMywgMjEwLCAxMzIsIDEyLCAxMywgCisgICAgMjEwLCAxMzEsIDEyLCAxMywgMjEwLCAxMzAsIDEyLCAxMywgMjEwLCAxMjksIDEyLCAxMywgMjEwLCAxMjgsIDEyLCAxMywgCisgICAgMjEwLCAxMjcsIDEyLCAxMywgMjEwLCAxMjYsIDEyLCAxMywgMjEwLCAxMjUsIDEyLCAxMywgMjEwLCAxMjQsIDEyLCAxMywgCisgICAgMjEwLCAxMjMsIDEyLCAxMywgMjEwLCAxMjIsIDEyLCAxMywgMjEwLCAxMjEsIDEyLCAxMywgMjEwLCAxMjAsIDEyLCAxMywgCisgICAgMjEwLCAxMTksIDEyLCAxMywgMjEwLCAxMTgsIDEyLCAxMywgMjU1LCA3MiwgMTIsIDEzLCAyNTUsIDcxLCAxMiwgMTMsIAorICAgIDI1NSwgNzAsIDEyLCAxMywgMjU1LCA2OSwgMTIsIDEzLCAyNTUsIDY4LCAxMiwgMTMsIDI1NSwgNjcsIDEyLCAxMywgMjU1LCAKKyAgICA2NiwgMTIsIDEzLCAyNTUsIDY1LCAxMiwgMTMsIDI1NSwgNjQsIDEyLCAxMywgMjU1LCA2MywgMTIsIDEzLCAyNTUsIDYyLCAKKyAgICAxMiwgMTMsIDI1NSwgNjEsIDEyLCAxMywgMjU1LCA2MCwgMTIsIDEzLCAyNTUsIDU5LCAxMiwgMTMsIDI1NSwgNTgsIDEyLCAKKyAgICAxMywgMjU1LCA1NywgMTIsIDEzLCAyNTUsIDU2LCAxMiwgMTMsIDI1NSwgNTUsIDEyLCAxMywgMjU1LCA1NCwgMTIsIDEzLCAKKyAgICAyNTUsIDUzLCAxMiwgMTMsIDI1NSwgNTIsIDEyLCAxMywgMjU1LCA1MSwgMTIsIDEzLCAyNTUsIDUwLCAxMiwgMTMsIDI1NSwgCisgICAgNDksIDEyLCAxMywgMjU1LCA0OCwgMTIsIDEzLCAyNTUsIDQ3LCAxMiwgMTMsIDI1NSwgNDYsIDEyLCAxMywgMjU1LCA0NSwgCisgICAgMTIsIDEzLCAyNTUsIDQ0LCAxMiwgMTMsIDI1NSwgNDMsIDEyLCAxMywgMjU1LCA0MiwgMTIsIDEzLCAyNTUsIDQxLCAxMiwgCisgICAgMTMsIDI1NSwgNDAsIDEyLCAxMywgMjU1LCAzOSwgMjAsIDEsIDE2NywgMjI5LCAxMiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCisgICAgMjQzLCA3MCwgMjQ0LCAzNiwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIzMSwgMTcsIDIyNSwgNTcsIDIwLCAxLCAxNjcsIAorICAgIDIyNCwgMjUxLCAyMzEsIDE3LCAyMjUsIDU4LCAyMCwgMSwgMTY3LCAyMjksIDIyNiwgMjMxLCAxNiwgMjAsIDEsIDE2NywgCisgICAgMjE5LCAyMjEsIDIwLCAxLCAxNjcsIDIxNiwgNjYsIDIzMSwgMTYsIDIwLCAxLCAxNjcsIDIyNywgMTE4LCAyMzEsIDE2LCAKKyAgICAyMCwgMSwgMTY3LCAyMjAsIDE5LCAyMjYsIDkwLCAyMjgsIDE2OSwgMjAsIDEsIDE2NywgMjI0LCAyNTEsIDIyNiwgOTAsIAorICAgIDIyOCwgMTcwLCAyMjUsIDU3LCAyMCwgMSwgMTY3LCAyMjQsIDI1MSwgMjI2LCA5MCwgMjI4LCAxNzAsIDIyNSwgNTgsIDIwLCAKKyAgICAxLCAxNjcsIDIzMSwgMjE4LCAyMCwgMSwgMTY3LCAyMTUsIDExOSwgMjMxLCAyMTksIDIwLCAxLCAxNjcsIDIyOSwgNzEsIAorICAgIDIwLCAxLCAxNjcsIDIzMSwgMjE1LCAyMCwgMSwgMTY3LCAyMzEsIDE3NiwgMjAsIDEsIDE2NywgMjMwLCA0OCwgMjAsIDEsIAorICAgIDE2NywgMjIwLCAxMjQsIDIwLCAxLCAxNjcsIDIyNywgMjQxLCAyMCwgMSwgMTY3LCAyMzQsIDE0OSwgMjAsIDEsIDE2NywgCisgICAgMjI4LCAxMzgsIDIwLCAxLCAxNjcsIDIxOCwgNCwgMjAsIDEsIDE2NywgMjI5LCAxMSwgMjAsIDEsIDE2NywgMjMzLCA4NywgCisgICAgMjAsIDEsIDE2NywgMjMzLCAxMiwgMjMzLCAxODksIDIwLCAxLCAxNjcsIDIyNywgMjQ4LCAyMzEsIDI0LCAyMCwgMSwgMTY3LCAKKyAgICAyMzEsIDIyMiwgMjAsIDEsIDE2NywgMjI1LCAyNDYsIDIwLCAxLCAxNjcsIDI0MiwgMjMxLCAyMCwgMSwgMTY3LCAyMjYsIAorICAgIDUwLCAyMCwgMSwgMTY3LCAyMzAsIDE1MSwgMjI5LCA0NSwgMjAsIDEsIDE2NywgMjI3LCA5OSwgMjMxLCAyNywgMjAsIDEsIAorICAgIDE2NywgMTA0LCAyMTAsIDE4OCwgMjI5LCAyMjAsIDIwLCAxLCAxNjcsIDI0MiwgMjMyLCAyMCwgMSwgMTY3LCAyMjcsIDI0OCwgCisgICAgMjI3LCAyNDksIDIwLCAxLCAxNjcsIDIxOSwgMTI4LCAyMCwgMSwgMTY3LCAyMzEsIDksIDIwLCAxLCAxNjcsIDIzMSwgMzAsIAorICAgIDIwLCAxLCAxNjcsIDIzMCwgMTMwLCAyMCwgMSwgMTY3LCAyMzQsIDI0OSwgMjAsIDEsIDE2NywgMjI2LCA5MCwgMjMzLCA0NywgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxNDksIDIzMywgNDcsIDIwLCAxLCAxNjcsIDIyNSwgMTU4LCAyMCwgMSwgMTY3LCAyMzEsIAorICAgIDIxNiwgMjAsIDEsIDE2NywgMjI4LCAyMDcsIDIwLCAxLCAxNjcsIDIyNCwgMTM0LCAyMCwgMSwgMTY3LCAyMTUsIDExNiwgCisgICAgMjAsIDEsIDE2NywgMjMyLCA5NCwgMjAsIDEsIDE2NywgMjE5LCA0MSwgMjAsIDEsIDE2NywgMjE2LCAyMTYsIDIwLCAxLCAKKyAgICAxNjcsIDIzMSwgMjEzLCAyMCwgMSwgMTY3LCAyMzQsIDE1NiwgMjAsIDEsIDE2NywgMjI5LCAxNDUsIDIwLCAxLCAxNjcsIAorICAgIDIzMywgMjAxLCAyMCwgMSwgMTY3LCAyMzAsIDEzMSwgMjAsIDEsIDE2NywgMjE5LCAyMTgsIDIwLCAxLCAxNjcsIDIzMiwgCisgICAgMTM4LCAyMCwgMSwgMTY3LCAyNDQsIDkzLCAyMCwgMSwgMTY3LCAyMjIsIDE5OSwgMjAsIDEsIDE2NywgMjMzLCAyNDEsIDIwLCAKKyAgICAxLCAxNjcsIDIxOSwgMzcsIDIwLCAxLCAxNjcsIDIzMSwgMTczLCAyMjUsIDk5LCAyMCwgMSwgMTY3LCAyMjAsIDEyLCAyMCwgCisgICAgMSwgMTY3LCAyMjcsIDI0NywgMjAsIDEsIDE2NywgMjE5LCAyNTMsIDIyOCwgMiwgMjEwLCAxOTYsIDIwLCAxLCAxNjcsIAorICAgIDIyNywgMTM4LCAyMzAsIDE0OCwgMjAsIDEsIDE2NywgMjI2LCA4NSwgMjAsIDEsIDE2NywgMjI4LCAxMzksIDIwLCAxLCAKKyAgICAxNjcsIDIxNCwgMTcwLCAyMCwgMSwgMTY3LCAyMjksIDQ4LCAyMCwgMSwgMTY3LCAyMzEsIDIxMiwgMjAsIDEsIDE2NywgCisgICAgMjI4LCAxODEsIDIwLCAxLCAxNjcsIDIzMSwgMTE5LCAyMCwgMSwgMTY3LCAyMjcsIDE1MSwgMjAsIDEsIDE2NywgMjE2LCAKKyAgICAyMjAsIDIwLCAxLCAxNjcsIDIxOSwgMzQsIDIwLCAxLCAxNjcsIDIyNiwgODYsIDIwLCAxLCAxNjcsIDIyOCwgNiwgMjAsIDEsIAorICAgIDE2NywgMjMxLCAyMjAsIDIwLCAxLCAxNjcsIDIyNywgMTQ4LCAyMCwgMSwgMTY3LCAyMzQsIDIxNiwgMjAsIDEsIDE2NywgCisgICAgMjI4LCA5LCAyMCwgMSwgMTY3LCAyMTMsIDI1MCwgMjAsIDEsIDE2NywgMjMyLCA5OCwgMjAsIDEsIDE2NywgMjI5LCA5OCwgCisgICAgMjAsIDEsIDE2NywgMjI5LCAxOTYsIDIwLCAxLCAxNjcsIDIzMSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIyOCwgNCwgMjAsIAorICAgIDEsIDIyNSwgMTM4LCAyMTUsIDExOSwgMjMxLCAyMTcsIDIwLCAxLCAyMjUsIDEzOCwgMjE5LCAxODUsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjIwLCAxMjgsIDIxNSwgMTE4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMiwgMTQwLCAyMjcsIDI0NCwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMzEsIDEyNSwgMjMxLCAyMjEsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCA4NywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIAorICAgIDE1LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTIwLCAyMCwgMSwgMjI1LCAxMzgsIDIzNCwgMjM3LCAyMCwgMSwgMjI1LCAKKyAgICAxMzgsIDIyNSwgMjA4LCAyMCwgMSwgMjI1LCAxMzgsIDIxMSwgODksIDIzMywgNDcsIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAKKyAgICAxMDMsIDIyOCwgMiwgMjI3LCAxNjAsIDIwLCAxLCAyMjUsIDEzOCwgMjI3LCAyNDIsIDIyMCwgMzgsIDIwLCAxLCAyMjUsIAorICAgIDEzOCwgMjI5LCAxMTYsIDIyOCwgMTg0LCAyMCwgMSwgMjI1LCAxMzgsIDI0MiwgMjI5LCAyMCwgMSwgMjI1LCAxMzgsIDIyNSwgCisgICAgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjE1LCAxMTksIDIyOCwgMCwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDQzLCAyMjgsIAorICAgIDE3OSwgMjAsIDEsIDIyNSwgMTM4LCAyMjAsIDM5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTcsIDIxNiwgMjE5LCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIzMSwgMTA3LCAyMzEsIDEyMSwgMjAsIDEsIDIyNSwgMTM4LCAyMjcsIDE0OSwgMjI3LCAyNDQsIDIwLCAxLCAKKyAgICAyMjUsIDEzOCwgMjM0LCAxNDUsIDIwLCAxLCAyMjUsIDEzOCwgMjQyLCAyMzAsIDIwLCAxLCAyMjUsIDEzOCwgMjM0LCAxNDEsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjMzLCAxMjksIDIwLCAxLCAyMjUsIDEzOCwgMjI1LCAyNDksIDIwLCAxLCAyMjUsIDEzOCwgCisgICAgMjEzLCAxODIsIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCAxMywgMjMwLCA0NiwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDQ3LCAKKyAgICAyMzEsIDEwMywgMjAsIDEsIDIyNSwgMTM4LCAyMTEsIDE5MywgMjAsIDEsIDIyNSwgMTM4LCAyMjIsIDExLCAyMCwgMSwgCisgICAgMjI1LCAxMzgsIDIxNywgOTcsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyOSwgMjAsIDEsIDIyNSwgMTM4LCAyMjksIDMyLCAKKyAgICAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMzMsIDIzMywgODQsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAxOSwgMjAsIDEsIDIyNSwgCisgICAgMTM4LCAyMTgsIDUyLCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgMTExLCAyMCwgMSwgMjI1LCAxMzgsIDIzMCwgMTMzLCAyMCwgCisgICAgMSwgMjI1LCAxMzgsIDIyNywgMTYzLCAyMCwgMSwgMjI1LCAxMzgsIDIyNCwgMTM4LCAyMCwgMSwgMjI1LCAxMzgsIDIzMSwgCisgICAgMjgsIDIyOSwgNDksIDIwLCAxLCAyMjUsIDEzOCwgMjQ0LCAxMjYsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCA5OCwgMjAsIDEsIAorICAgIDIyNSwgMTM4LCAyNDQsIDE0NywgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDE1MywgMjAsIDEsIDIyNSwgMTM4LCAyMzEsIDIzOSwgCisgICAgMjI4LCAxNzMsIDIwLCAxLCAyMjUsIDEzOCwgMjMxLCAyMzksIDIyOCwgMTQ5LCAyMCwgMSwgMjI1LCAxMzgsIDIzMywgMTEsIAorICAgIDIwLCAxLCAyMjUsIDEzOCwgMjI5LCA1NSwgMjAsIDEsIDIyNSwgMTM4LCAyMjgsIDExLCAyMCwgMSwgMjI1LCAxMzgsIDE4NCwgCisgICAgMjAsIDEsIDIyNSwgMTM4LCAyMzQsIDc0LCAyMCwgMSwgMjI1LCAxMzgsIDIyOSwgMSwgMjAsIDEsIDEzNywgMjI5LCAxMiwgCisgICAgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIyNywgMTE3LCAyMCwgMSwgMTM3LCAyMTAsIDE5NiwgMjAsIDEsIDEzNywgMjEyLCAKKyAgICA1MywgMjAsIDEsIDEzNywgMjI5LCA0OCwgMjAsIDEsIDEzNywgMjI5LCAxMzcsIDIwLCAxLCAxMzcsIDIyOSwgMTksIDIwLCAKKyAgICAxLCAxMzcsIDI0MiwgMjM5LCAyMCwgMSwgMTM3LCAyMzEsIDExNSwgMjAsIDEsIDEzNywgMjQzLCA3NywgMjAsIDEsIDEzNywgCisgICAgMjI3LCAxNDAsIDIzMCwgMTcwLCAyMzEsIDMxLCAyMCwgMSwgMTM3LCAyMjcsIDI0MCwgMjMxLCAxMDYsIDIwLCAxLCAxMzcsIAorICAgIDIzMSwgMTEyLCAyMCwgMSwgMTM3LCAyMjUsIDU1LCAyMCwgMSwgMTM3LCAyMjksIDEyMiwgMjAsIDEsIDEzNywgMjMxLCAKKyAgICAxMjMsIDI1MSwgMjksIDIwLCAxLCAxMzcsIDIzNCwgMTQzLCAyMCwgMSwgMTM3LCAyNDIsIDI0MCwgMjAsIDEsIDEzNywgCisgICAgMjM0LCAxNTAsIDIwLCAxLCAxMzcsIDIxMCwgMjEzLCAyMzAsIDc2LCAyMCwgMSwgMTM3LCAyMjcsIDExMSwgMjAsIDEsIAorICAgIDEzNywgMjMxLCAxMDAsIDIwLCAxLCAxMzcsIDIyOCwgMTAsIDIwLCAxLCAxMzcsIDIzMSwgMTA2LCAyMCwgMSwgMTM3LCAKKyAgICAyMTEsIDE2LCAyMCwgMSwgMTM3LCAyMzMsIDI0OSwgMjAsIDEsIDEzNywgMjM1LCAxMCwgMjAsIDEsIDEzNywgMjIwLCAxMjMsIAorICAgIDIwLCAxLCAxMzcsIDIyOSwgMTMxLCAyMCwgMSwgMTM3LCAyMTcsIDk1LCAyMCwgMSwgMTM3LCAyMjgsIDE1MywgMjAsIDEsIAorICAgIDEzNywgMjE2LCA2NiwgMjEwLCAxOTgsIDIwLCAxLCAxMzcsIDIxOCwgNzksIDIwLCAxLCAxMzcsIDIyOSwgMzksIDIyNywgCisgICAgMTYwLCAyMCwgMSwgMTM3LCAyMTMsIDE4MSwgMjAsIDEsIDEzNywgMjI5LCAxOTksIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAKKyAgICAyMzQsIDE1MiwgMjAsIDEsIDEzNywgMjI3LCAyNDksIDIwLCAxLCAxMzcsIDIyOSwgMzQsIDIwLCAxLCAxMzcsIDIzMywgODgsIAorICAgIDIwLCAxLCAxMzcsIDIzMSwgMTA4LCAyMCwgMSwgMTM3LCAyMzEsIDgsIDIwLCAxLCAxMzcsIDIyNywgMjQzLCAyMCwgMSwgCisgICAgMTM3LCAyMTYsIDIxNSwgMjAsIDEsIDEzNywgMjI5LCAzNiwgMjAsIDEsIDEzNywgMjQzLCAyMzMsIDIwLCAxLCAxMzcsIAorICAgIDIyOSwgMTM2LCAyMCwgMSwgMTM3LCAyMjgsIDEyLCAyMCwgMSwgMTM3LCAyMjgsIDgsIDIwLCAxLCAxMzcsIDI1MSwgMTA3LCAKKyAgICAyMCwgMSwgMTM3LCAyMTMsIDE4MywgMjAsIDEsIDEzNywgMjMxLCAxMTMsIDIwLCAxLCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgCisgICAgMTM3LCAyMjgsIDE4MywgMjAsIDEsIDEzNywgMjMzLCAxMDIsIDIwLCAxLCAxMzcsIDIxNiwgNjQsIDIwLCAxLCAxMzcsIAorICAgIDIyNywgMjUwLCAyMjksIDEsIDIwLCAxLCAxMzcsIDIyOCwgMTc1LCAyMCwgMSwgMTM3LCAyMzQsIDE1NiwgMjAsIDEsIDEzNywgCisgICAgMjI5LCA0MCwgMjAsIDEsIDEzNywgMjMxLCAyMTIsIDIwLCAxLCAxMzcsIDIzMSwgMTAxLCAyMCwgMSwgMTM3LCAyMzIsIDk4LCAKKyAgICAyMCwgMSwgMTM3LCAyMzMsIDE4OSwgMjAsIDEsIDEzNywgMjI4LCAxODEsIDIwLCAxLCAxMzcsIDIyOSwgMSwgMjAsIDEsIAorICAgIDEzNywgMjExLCAxODQsIDIwLCAxLCAxMzcsIDIyOSwgMzcsIDIwLCAxLCAxMzcsIDIyNywgMjUzLCAyMCwgMSwgMTM3LCAKKyAgICAyMjcsIDI0NSwgMjAsIDEsIDEzNywgMjMzLCAyMDMsIDIyOCwgMTM5LCAyMCwgMSwgMTM3LCAyMjcsIDI1MSwgMjAsIDEsIAorICAgIDEzNywgMjI5LCAxNDQsIDIwLCAxLCAxMzcsIDIzMSwgMjM5LCAyMjgsIDAsIDIwLCAxLCAxMzcsIDIxMSwgMTAzLCAyMCwgMSwgCisgICAgMTM3LCAyMjksIDE0MywgMjAsIDEsIDEzNywgMjE5LCAyMjAsIDIwLCAxLCAxMzcsIDIyMCwgMTI2LCAyMCwgMSwgMTM3LCAKKyAgICAyMzEsIDEwOSwgMjAsIDEsIDEzNywgMjMxLCAyMTksIDIwLCAxLCAxMzcsIDIzMSwgMTE5LCAyMCwgMSwgMTM3LCAyMzQsIAorICAgIDE0NCwgMjAsIDEsIDEzNywgMjMxLCAxMTAsIDIwLCAxLCAxMzcsIDIzNCwgMTQ4LCAyMCwgMSwgMTM3LCAyMzEsIDEyMywgCisgICAgMjI1LCAxMDMsIDIwLCAxLCAxMzcsIDIxMCwgMTc5LCAyMCwgMSwgMTM3LCAyMjgsIDE3MSwgMjAsIDEsIDEzNywgMjMwLCAKKyAgICAyMjAsIDIwLCAxLCAxMzcsIDIzMCwgMTAwLCAyMCwgMSwgMTM3LCAyMjAsIDE1LCAyMCwgMSwgMTM3LCAyMzQsIDE2NiwgCisgICAgMjMzLCA3MCwgMjAsIDEsIDEzNywgMjM0LCAxNjYsIDI0NCwgMTYwLCAyMCwgMSwgMTM3LCAyMjksIDY5LCAyMCwgMSwgMTM3LCAKKyAgICAyMjksIDE5NiwgMjAsIDEsIDEzNywgMjMyLCAyMDAsIDIwLCAxLCAxMzcsIDIyNSwgNjUsIDIwLCAxLCAxMzcsIDIyNSwgCisgICAgMTk5LCAyMCwgMSwgMTM3LCAyMTYsIDIzMCwgMjAsIDEsIDEwNywgMjMxLCA5OSwgMjAsIDEsIDEwNywgMjEyLCA1MSwgMjAsIAorICAgIDEsIDEwNywgMjI4LCAxNjksIDIwLCAxLCAxMDcsIDIzMSwgMTYsIDIwLCAxLCAxMDcsIDIyOCwgMTY3LCAyMCwgMSwgMTA3LCAKKyAgICAyMzIsIDIzNSwgMjAsIDEsIDEwNywgMjI4LCAxNzIsIDIwLCAxLCAxMDcsIDIyOCwgNywgMjAsIDEsIDEwNywgMjI5LCA1NCwgCisgICAgMjAsIDEsIDEwNywgMjI3LCAxNjAsIDIwLCAxLCAxMDcsIDIxMSwgMTk0LCAyMCwgMSwgMTA3LCAyMjksIDksIDIwLCAxLCAKKyAgICAxMDcsIDIyMCwgNjEsIDIwLCAxLCAxMDcsIDIyOSwgMjAsIDIwLCAxLCAxMDcsIDIzNCwgMTUxLCAyMCwgMSwgMTA3LCAyMTYsIAorICAgIDIxNywgMjAsIDEsIDEwNywgMjIwLCA0MSwgMjAsIDEsIDEwNywgMjI4LCAxODAsIDIwLCAxLCAxMDcsIDIxOCwgNTIsIDIwLCAKKyAgICAxLCAxMDcsIDIzNCwgMTU2LCAyMCwgMSwgMTA3LCAyMTEsIDkxLCAyMCwgMSwgMTA3LCAyMzMsIDIwNCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzQsIDIwLCAxLCAxMDcsIDIzMSwgMjEsIDIwLCAxLCAxMDcsIDIyOSwgMTM1LCAyMCwgMSwgMTA3LCAyMzEsIAorICAgIDE4OCwgMjAsIDEsIDEwNywgMjMxLCAyNywgMjAsIDEsIDEwNywgMjIwLCAxMjUsIDIwLCAxLCAxMDcsIDIxMSwgMzksIDIwLCAKKyAgICAxLCAxMDcsIDIyOCwgMTc0LCAyMCwgMSwgMTA3LCAyMzQsIDE0NywgMjMxLCAxMDIsIDIwLCAxLCAxMDcsIDIyOSwgMTYsIAorICAgIDIwLCAxLCAxMDcsIDIxNSwgMTE4LCAyMCwgMSwgMTA3LCAyNDIsIDI0OCwgMjAsIDEsIDEwNywgMjI5LCA2LCAyMCwgMSwgCisgICAgMTA3LCAyNDQsIDEyNywgMjAsIDEsIDEwNywgMjI5LCAxMzksIDIwLCAxLCAxMDcsIDIzMSwgMCwgMjAsIDEsIDEwNywgMjMzLCAKKyAgICA1LCAyMCwgMSwgMTA3LCAyMjksIDEyMSwgMjAsIDEsIDEwNywgMjMwLCAxNDcsIDIwLCAxLCAxMDcsIDIzMSwgNCwgMjAsIDEsIAorICAgIDEwNywgMjI0LCAxMTgsIDIwLCAxLCAxMDcsIDIzMSwgMiwgMjAsIDEsIDEwNywgMjMxLCAxOCwgMjAsIDEsIDEwNywgMjMyLCAKKyAgICA4NCwgMjAsIDEsIDEwNywgMjI3LCAyNTUsIDIwLCAxLCAxMDcsIDIzMSwgMTIyLCAyMCwgMSwgMTA3LCAyMzMsIDE4MCwgMjAsIAorICAgIDEsIDEwNywgMjI3LCAxNTEsIDIwLCAxLCAxMDcsIDIxNiwgMjIwLCAyMCwgMSwgMTA3LCAyMTksIDM0LCAyMCwgMSwgMTA3LCAKKyAgICAyMTAsIDE3OSwgMjAsIDEsIDEwNywgMjM0LCAxNDgsIDIwLCAxLCAxMDcsIDIyMywgMTcwLCAyMCwgMSwgMTA3LCAyMTcsIAorICAgIDEwLCAyMCwgMSwgMTA3LCAyMjksIDE3LCAyMCwgMSwgMTA3LCAyMzEsIDIzLCAyMCwgMSwgMTA3LCAyMjcsIDI1NCwgMjAsIAorICAgIDEsIDEwNywgMjM0LCAxNDYsIDIwLCAxLCAxMDcsIDIyNSwgNTksIDIwLCAxLCAxMDcsIDIyNSwgMTUyLCAyMCwgMSwgMTA3LCAKKyAgICAyMjcsIDEyNywgMjAsIDEsIDEwNywgMjMzLCAxMSwgMjAsIDEsIDEwNywgMjI5LCA1NSwgMjAsIDEsIDEwNywgMjMxLCAyMCwgCisgICAgMjAsIDEsIDEwNywgMjI5LCAyOSwgMjAsIDEsIDEwNywgMjEwLCAxOTMsIDIwLCAxLCAxMDcsIDIyNiwgMjEsIDIwLCAxLCAKKyAgICAxMDcsIDIxMCwgMTkyLCAyMCwgMSwgMTA3LCAyMjksIDE0NCwgMjAsIDEsIDEwNywgMjI3LCAyNDQsIDIwLCAxLCAxMDcsIAorICAgIDIxOCwgODEsIDIwLCAxLCAxMDcsIDIzMywgMjA4LCAyMCwgMSwgMTA3LCAyMjksIDQ0LCAyMCwgMSwgMTA3LCAyMjksIDE0LCAKKyAgICAyMCwgMSwgMTA3LCAyMTUsIDEwMiwgMjAsIDEsIDEwNywgMjMxLCAzMSwgMjAsIDEsIDEwNywgMjMzLCAxOTgsIDIwLCAxLCAKKyAgICAxMDcsIDIyNywgMjUyLCAyMCwgMSwgMTA3LCAyMTYsIDIxOCwgMjAsIDEsIDEwNywgMjMxLCAyMTQsIDIwLCAxLCAxMDcsIAorICAgIDIyOSwgNTMsIDIwLCAxLCAxMDcsIDIzMywgNCwgMjAsIDEsIDEwNywgMjI5LCAzNSwgMjAsIDEsIDEwNywgMjI4LCAxLCAyMCwgCisgICAgMSwgMTA3LCAyMjgsIDE1MywgMjAsIDEsIDEwNywgMjQyLCAyMzMsIDIwLCAxLCAxMDcsIDIzMywgMjE3LCAyMCwgMSwgMTA3LCAKKyAgICAyMjMsIDg0LCAyMjYsIDIwOSwgMjAsIDEsIDEwNywgMjE3LCA4NiwgMjAsIDEsIDEwNywgMjE2LCAxMCwgMjAsIDEsIDEwNywgCisgICAgMjI3LCAxNDgsIDIwLCAxLCAxMDcsIDIyMiwgMjM5LCAyMCwgMSwgMTA3LCAyMzMsIDQ5LCAyMCwgMSwgMTA3LCAyMzEsIDc5LCAKKyAgICAyMCwgMSwgMTA3LCAxOTMsIDIwLCAxLCAxMDcsIDIxOCwgNCwgMjAsIDEsIDEwNywgMjMwLCAxMDIsIDIwLCAxLCAxMDcsIAorICAgIDIyMCwgMjcsIDIwLCAxLCAxMDcsIDIyMCwgMzcsIDIwLCAxLCAxMDcsIDIzMywgMTU1LCAyMCwgMSwgMTA3LCAyMjcsIDIzNywgCisgICAgMjAsIDEsIDEwNywgMjE5LCAyMjUsIDIwLCAxLCAxMDcsIDIyNywgMjQ2LCAyMCwgMSwgMTA3LCAyMjUsIDIxMSwgMjAsIDEsIAorICAgIDEwNywgMjI4LCAyMzMsIDIwLCAxLCAxMDcsIDIxOSwgMjUyLCAyMCwgMSwgMTA3LCAyMjQsIDEzMywgMjAsIDEsIDEwNywgCisgICAgMjMwLCA0NiwgMjAsIDEsIDEwNywgMjMyLCAxMTksIDIwLCAxLCAxMDcsIDIyMywgODQsIDIzMCwgOTYsIDIwLCAxLCAxMDcsIAorICAgIDIxNiwgMTE3LCAyMCwgMSwgMTA3LCAyMjcsIDIzOCwgMjAsIDEsIDEwNywgMjMxLCAxMjMsIDE5OCwgMjAsIDEsIDEwNywgCisgICAgMjIxLCAyMzIsIDIwLCAxLCAxMDcsIDI0NCwgMTk1LCAyMCwgMSwgODIsIDIyOSwgMTQzLCAyMCwgMSwgODIsIDIxNiwgMTYsIAorICAgIDIwLCAxLCA4MiwgMjMxLCAxMTIsIDIwLCAxLCA4MiwgMjMzLCA4OCwgMjAsIDEsIDgyLCAyMTMsIDEyOCwgMjAsIDEsIDgyLCAKKyAgICAyMzIsIDEyNSwgMjAsIDEsIDgyLCAyMjYsIDg5LCAyMCwgMSwgODIsIDIxOSwgNDUsIDIwLCAxLCA4MiwgMjIzLCAxNDUsIAorICAgIDIwLCAxLCA4MiwgMjI4LCAzLCAyMCwgMSwgODIsIDIyOSwgMTE0LCAyMCwgMSwgODIsIDIyNCwgMTQ3LCAyMCwgMSwgODIsIAorICAgIDIxNywgNjIsIDIwLCAxLCA4MiwgMjI5LCAyMiwgMjAsIDEsIDgyLCAyMzMsIDI0NSwgMjAsIDEsIDgyLCAyMTEsIDE4NywgCisgICAgMjAsIDEsIDgyLCAyMjEsIDE3MCwgMjAsIDEsIDgyLCAyMjksIDQ1LCAyMCwgMSwgODIsIDIyNiwgODYsIDIwLCAxLCA4MiwgCisgICAgMjE2LCAxNywgMjAsIDEsIDgyLCAyMzMsIDIwMiwgMjAsIDEsIDgyLCAyMzIsIDEzOSwgMjAsIDEsIDgyLCAyMjgsIDYsIDIwLCAKKyAgICAxLCA4MiwgMjI4LCAyNTQsIDIwLCAxLCA4MiwgMjMxLCAyMjAsIDIwLCAxLCA4MiwgMjI5LCAxNSwgMjAsIDEsIDgyLCAyMjgsIAorICAgIDI1MywgMjAsIDEsIDgyLCAyMjgsIDUsIDIwLCAxLCA4MiwgMjIyLCAyMzcsIDIwLCAxLCA4MiwgMjI4LCAxNzEsIDIwLCAxLCAKKyAgICA4MiwgMjI1LCAyMTAsIDIwLCAxLCA4MiwgMjIyLCAzMSwgMjAsIDEsIDgyLCAyMjksIDMwLCAyMCwgMSwgODIsIDIzMSwgMTAsIAorICAgIDIwLCAxLCA4MiwgMjQyLCAyMjcsIDIwLCAxLCA4MiwgMjI5LCAxOCwgMjAsIDEsIDgyLCAyMjgsIDE4MiwgMjAsIDEsIDgyLCAKKyAgICAyMzEsIDE3MiwgMjAsIDEsIDgyLCAyMzIsIDEyMSwgMjAsIDEsIDgyLCAyMjksIDUwLCAyMCwgMSwgODIsIDIyOSwgMTI3LCAKKyAgICAyMCwgMSwgODIsIDIxNywgODUsIDIyNywgMjQ0LCAyMCwgMSwgODIsIDIyMCwgMTI3LCAyMCwgMSwgODIsIDIyNCwgMTQzLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMTQ3LCAyMTksIDUxLCAyMCwgMSwgODIsIDIyOSwgMzgsIDIyNywgMTYwLCAyMCwgMSwgODIsIAorICAgIDIxMSwgNCwgMjAsIDEsIDgyLCAyNDIsIDIyOCwgMjAsIDEsIDgyLCAyMTUsIDExNywgMjAsIDEsIDgyLCAyMTEsIDE5LCAyMCwgCisgICAgMSwgODIsIDIyNSwgMTYsIDIwLCAxLCA4MiwgMjE1LCAxMDcsIDIwLCAxLCA4MiwgMjM0LCAxNTQsIDIwLCAxLCA4MiwgMjE4LCAKKyAgICA4MCwgMjAsIDEsIDgyLCAyMTYsIDIxOSwgMjAsIDEsIDgyLCAyMTMsIDE4NCwgMjAsIDEsIDgyLCAyMTIsIDYsIDIwLCAxLCAKKyAgICA4MiwgMjMzLCAxMzIsIDIwLCAxLCA4MiwgMjI0LCAxNTAsIDIwLCAxLCA4MiwgMjE3LCA5NiwgMjAsIDEsIDgyLCAyNDIsIAorICAgIDI0NywgMjAsIDEsIDgyLCAyMjksIDU5LCAyMCwgMSwgODIsIDIyMCwgNDAsIDIwLCAxLCA4MiwgMjMxLCA1LCAyMCwgMSwgCisgICAgODIsIDIzMSwgMTE2LCAyMCwgMSwgODIsIDIyNywgMTE1LCAyMCwgMSwgODIsIDIyOCwgMTM2LCAyMCwgMSwgODIsIDI0MywgCisgICAgNzMsIDIwLCAxLCA4MiwgMjE1LCAxMDgsIDIwLCAxLCA4MiwgMjMzLCAyMTEsIDIwLCAxLCA4MiwgMjExLCA2NywgMjAsIDEsIAorICAgIDgyLCAyMjcsIDE0OSwgMjUwLCAxNiwgMjAsIDEsIDgyLCAyMTAsIDI1MCwgMjAsIDEsIDgyLCAyMzEsIDIyLCAyMCwgMSwgCisgICAgODIsIDIyOSwgMTMyLCAyMCwgMSwgODIsIDIyNSwgMTAwLCAyMCwgMSwgODIsIDIxMCwgMTk3LCAyMCwgMSwgODIsIDIzMywgCisgICAgNiwgMjAsIDEsIDgyLCAyNDMsIDIzMywgMjAsIDEsIDgyLCAyNDMsIDcyLCAyMCwgMSwgODIsIDIyOSwgOCwgMjAsIDEsIDgyLCAKKyAgICAyMzQsIDE1NiwgMjAsIDEsIDgyLCAyMzEsIDIyMywgMjAsIDEsIDgyLCAyMjksIDIxLCAyMCwgMSwgODIsIDI0MiwgMjM0LCAKKyAgICAyMCwgMSwgODIsIDI0NCwgMTk2LCAyMCwgMSwgODIsIDIyNywgMjM5LCAyMCwgMSwgODIsIDIyNSwgMTUzLCAyMCwgMSwgODIsIAorICAgIDIxMSwgMTcsIDIwLCAxLCA4MiwgMjI5LCA0NiwgMjAsIDEsIDgyLCAyMjcsIDE0OSwgMjUyLCAyMywgMjAsIDEsIDgyLCAKKyAgICAyMjcsIDk1LCAyMCwgMSwgODIsIDIyNCwgMjQ3LCAyMCwgMSwgODIsIDIzMCwgMjIwLCAyMCwgMSwgODIsIDI0MywgMjMxLCAKKyAgICAyMCwgMSwgODIsIDIyOSwgMjIwLCAyMCwgMSwgODIsIDIzMCwgMTAwLCAyMCwgMSwgODIsIDI0MiwgMjMzLCAyMCwgMSwgODIsIAorICAgIDI0MywgMjM1LCA3MywgMjAsIDEsIDgyLCAyMzAsIDQ3LCAyMCwgMSwgODIsIDIyNCwgMTQ2LCAyMCwgMSwgODIsIDIyOSwgCisgICAgMTAsIDIwLCAxLCA4MiwgMjMzLCAxODksIDIwLCAxLCA4MiwgMjI1LCA5NywgMjAsIDEsIDgyLCAyMjcsIDI0NywgMjAsIDEsIAorICAgIDgyLCAyMTEsIDE4LCAyMCwgMSwgODIsIDIyOSwgMzEsIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAxODcsIDIwLCAxLCA4MiwgCisgICAgMjQzLCAyMzUsIDI1MSwgMTUsIDIwLCAxLCA4MiwgMjQ0LCAzNywgMjAsIDEsIDgyLCAyMjgsIDE3NiwgMjAsIDEsIDgyLCAKKyAgICA2MSwgMjAsIDEsIDgyLCAyMTYsIDEwLCAyMCwgMSwgODIsIDc2LCAyMCwgMSwgODIsIDczLCAyMCwgMSwgODIsIDIzMywgODYsIAorICAgIDIwLCAxLCA4MiwgMjI2LCA5MCwgMjI1LCAyMywgMjAsIDEsIDgyLCAyMTcsIDEwMSwgMjAsIDEsIDgyLCAyMTcsIDUxLCAyMCwgCisgICAgMSwgODIsIDIyOSwgMTQ3LCAyMzAsIDM0LCAyNDAsIDIzNCwgMjAsIDEsIDgyLCAyMjAsIDE1LCAyMCwgMSwgODIsIDIxMSwgCisgICAgMTQsIDIwLCAxLCA4MiwgMjI4LCAyNDcsIDIwLCAxLCA4MiwgMjEwLCAyMDIsIDIwLCAxLCA4MiwgMjEwLCAyMjcsIDIxNywgCisgICAgMjQwLCAyMCwgMSwgODIsIDIxMCwgMjI3LCAyNDksIDE0NywgMjAsIDEsIDgyLCAyMTAsIDE4NywgMjAsIDEsIDgyLCAyMTAsIAorICAgIDE5NSwgMjAsIDEsIDgyLCAyMzQsIDE0MiwgMjAsIDEsIDgyLCAyMjUsIDE1MSwgMjAsIDEsIDgyLCAyMjgsIDE3NywgMjQ1LCAKKyAgICAxMDIsIDIwLCAxLCA4MiwgMjI0LCAxNDQsIDIwLCAxLCA4MiwgMjExLCAxOTIsIDIwLCAxLCA4MiwgMjQ0LCAxNDcsIDIwLCAKKyAgICAxLCA4MiwgMjEzLCAyNTAsIDIwLCAxLCA4MiwgMjMyLCA5OCwgMjAsIDEsIDgyLCAyMzAsIDIzMCwgMjAsIDEsIDgyLCAyMjMsIAorICAgIDUxLCAyMCwgMSwgODIsIDIyMywgMTcxLCAyMCwgMSwgODIsIDIyOCwgMjQ2LCAyMCwgMSwgODIsIDIyOSwgNzcsIDIwLCAxLCAKKyAgICA4MiwgMjIwLCA3LCAyMCwgMSwgODIsIDIxOSwgMjUyLCAyMCwgMSwgODIsIDI0MywgMjM1LCAyMjMsIDg2LCAyMCwgMSwgODIsIAorICAgIDE5NywgMjAsIDEsIDgyLCAyMjUsIDEwOCwgMjAsIDEsIDgyLCAyMzIsIDExOSwgMjAsIDEsIDgyLCAyMzQsIDI4LCAyMCwgMSwgCisgICAgODIsIDIzMSwgNTgsIDIwLCAxLCA4MiwgMTg0LCAyMCwgMSwgODIsIDIzMSwgMTY5LCAyMCwgMSwgODIsIDIxNiwgMjIxLCAKKyAgICAyMCwgMSwgODIsIDIzNCwgOTIsIDIwLCAxLCA4MiwgMjMwLCAxNTAsIDIwLCAxLCA4MiwgMjE2LCAyNDcsIDIwLCAxLCA4MiwgCisgICAgMjQ0LCAxNjksIDIwLCAxLCA4MiwgMjQyLCAyMjMsIDIwLCAxLCAyMjUsIDEzNywgMTc2LCAyMCwgMSwgMjI1LCAxMzcsIDcwLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIzMywgMjE3LCAyMCwgMSwgMjI1LCAxMzcsIDI0NSwgMjA5LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyMywgMTA4LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgODYsIDIwLCAxLCAyMjUsIDEzNywgMjI3LCAxNDgsIDIwLCAxLCAKKyAgICAyMjUsIDEzNywgMjMzLCAxMzUsIDIwLCAxLCAyMjUsIDEzNywgMjIyLCAyMzksIDIwLCAxLCAyMjUsIDEzNywgMjIzLCAyOSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzEsIDc5LCAyMCwgMSwgMjI1LCAxMzcsIDIxNywgMTAxLCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyOSwgMTQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMTgzLCAyMCwgMSwgMjI1LCAxMzcsIDE5MywgMjAsIDEsIDIyNSwgCisgICAgMTM3LCAyMTgsIDQsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCAyNywgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDE5MSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAyMjAsIDEyMywgMjAsIDEsIDIyNSwgMTM3LCAyMzMsIDE1NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDE1NiwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIwOSwgMjAsIDEsIDIyNSwgMTM3LCAyMjcsIDIzNywgMjAsIDEsIDIyNSwgMTM3LCAKKyAgICAyMjgsIDE1NCwgMjAsIDEsIDIyNSwgMTM3LCAyMTAsIDIyNiwgMjAsIDEsIDIyNSwgMTM3LCAyMTksIDIyNSwgMjAsIDEsIAorICAgIDIyNSwgMTM3LCAxOTEsIDIwLCAxLCAyMjUsIDEzNywgMjI4LCA5LCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMTUxLCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDIyNywgMjQ2LCAyMCwgMSwgMjI1LCAxMzcsIDIxMSwgMTkyLCAyMCwgMSwgMjI1LCAxMzcsIDIyNSwgMjExLCAKKyAgICAyMCwgMSwgMjI1LCAxMzcsIDIyMiwgMTQwLCAyMCwgMSwgMjI1LCAxMzcsIDIyOCwgMjMzLCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIyMywgNTEsIDIwLCAxLCAyMjUsIDEzNywgMjM0LCAxNjUsIDIwLCAxLCAyMjUsIDEzNywgMjI5LCA3LCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIyOSwgNTYsIDIwLCAxLCAyMjUsIDEzNywgMjIwLCA3LCAyMCwgMSwgMjI1LCAxMzcsIDIyNCwgMTQ3LCAyMCwgMSwgCisgICAgMjI1LCAxMzcsIDI0NCwgMzcsIDIwLCAxLCAyMjUsIDEzNywgMjEyLCA2NSwgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDI0MSwgCisgICAgMjAsIDEsIDIyNSwgMTM3LCAyMzIsIDExOSwgMjAsIDEsIDIyNSwgMTM3LCAyMzQsIDI4LCAyMCwgMSwgMjI1LCAxMzcsIAorICAgIDIzMSwgMTE0LCAyMCwgMSwgMjI1LCAxMzcsIDIyMywgODMsIDIwLCAxLCAyMjUsIDEzNywgMTg0LCAyMCwgMSwgMjI1LCAKKyAgICAxMzcsIDIzMCwgMTYxLCAyMCwgMSwgMjI1LCAxMzcsIDIzMSwgMTIyLCAyMCwgMSwgMjI1LCAxMzcsIDIxNiwgMjMwLCAyMCwgCisgICAgMSwgMjI1LCAxMzcsIDIzMywgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIyMSwgMjUxLCAyMCwgMSwgMjI1LCAxMzcsIDIxMiwgCisgICAgMTE1LCA5NSwgMSwgMTkwLCA5NSwgMSwgMjUyLCAxOTEsIDk1LCAxLCA4LCAxOTAsIDk1LCAxLCAyMjUsIDQyLCA5NSwgMSwgCisgICAgMTg0LCA5NSwgMSwgMjMwLCAyMzMsIDk1LCAxLCAyNTQsIDIzLCAxODQsIDk1LCAxLCAyNDQsIDE5NiwgOTUsIDEsIDIxNCwgCisgICAgMjcsIDk1LCAxLCAyMTMsIDE3NywgOTUsIDEsIDIxNywgMTA1LCA5NSwgMSwgMjQ4LCAyMjEsIDk1LCAxLCA4LCAyMTUsIAorICAgIDE1NiwgOTUsIDEsIDgsIDIxNywgMTA1LCA5NSwgMSwgMjE1LCAxNTYsIDk1LCAxLCAyNDgsIDEzNSwgOTUsIDEsIDE5NywgCisgICAgOTUsIDEsIDIyOCwgMjM3LCA5NSwgMSwgOCwgMjI4LCAxMTAsIDk1LCAxLCAyNTQsIDIzLCAxOTcsIDk1LCAxLCAyMjgsIAorICAgIDExMCwgOTUsIDEsIDIyOCwgOTYsIDk1LCAxLCAyMzMsIDEzNSwgOTUsIDEsIDIzMiwgNjEsIDk1LCAxLCAyMzIsIDI1NCwgCisgICAgOTUsIDEsIDIzMiwgMjQzLCA5NSwgMSwgMjE2LCA1NiwgOTUsIDEsIDI0NywgMTUzLCA5NSwgMSwgMjE2LCA0OCwgOTUsIDEsIAorICAgIDI0NywgMTUyLCA5NSwgMSwgMTc2LCA5NSwgMSwgMjQzLCAxMzUsIDk1LCAxLCA4LCAxNzYsIDk1LCAxLCAyMjQsIDg4LCA5NSwgCisgICAgMSwgMjI0LCA2NiwgOTUsIDEsIDIyOSwgNzcsIDk1LCAxLCAyMjksIDI4LCA5NSwgMSwgMjU0LCAyMywgMjI5LCA3NywgOTUsIAorICAgIDEsIDE2MiwgOTUsIDEsIDIxMSwgMTY1LCA5NSwgMSwgMjQyLCAyNDksIDk1LCAxLCAyNDIsIDIyNiwgOTUsIDEsIDIxNSwgCisgICAgMTY1LCA5NSwgMSwgMjQ2LCAyNiwgOTUsIDEsIDIyNywgMTY1LCA5NSwgMSwgMjI3LCAxNTAsIDk1LCAxLCAyMTUsIDE3NSwgCisgICAgOTUsIDEsIDI0NiwgMzMsIDk1LCAxLCA4LCAyMTUsIDE3NSwgOTUsIDEsIDgsIDI0NiwgMzMsIDk1LCAxLCAyMjMsIDEwNiwgCisgICAgMjE1LCAxNzUsIDk1LCAxLCAyMjAsIDEwMiwgOTUsIDEsIDIxOCwgMjIzLCA5NSwgMSwgMjEwLCA4MiwgOTUsIDEsIDIxMCwgCisgICAgMTQsIDk1LCAxLCAyMTUsIDE4MywgOTUsIDEsIDI0NiwgMzgsIDk1LCAxLCA4LCAyMTUsIDE4MywgOTUsIDEsIDIwNiwgOTUsIAorICAgIDEsIDIxMCwgMTE2LCA5NSwgMSwgMjEwLCAxNSwgOTUsIDEsIDIwOSwgMjQzLCA5NSwgMSwgMjA5LCAyMjMsIDk1LCAxLCAKKyAgICAyNTQsIDIzLCAyMDksIDI0MywgOTUsIDEsIDIwOSwgMjE1LCA5NSwgMSwgMjA5LCAyMjIsIDk1LCAxLCAyMTIsIDY1LCA5NSwgCisgICAgMSwgMjU0LCAyMDksIDk1LCAxLCAyNDEsIDE4OSwgOTUsIDEsIDIyOSwgMTkyLCA5NSwgNSwgMjUzLCAyMjIsIDk1LCA1LCAKKyAgICAyMjMsIDEwNiwgMjEzLCAxMzMsIDk1LCA1LCAyMjMsIDEwNiwgMjUzLCAyMjIsIDk1LCAyNSwgNSwgNjEsIDk1LCAyNSwgNSwgCisgICAgMjU1LCA3MywgOTUsIDI1LCA1LCAyNTQsIDIwNSwgOTUsIDI1LCA1LCAyNTQsIDEyMywgOTUsIDI1LCA1LCAyNTQsIDExNSwgCisgICAgOTUsIDI1LCA1LCA3NiwgOTUsIDI1LCA1LCAyMjYsIDE4MywgOTUsIDI1LCA1LCAyMTEsIDIyNywgOTUsIDI1LCA1LCAyMTIsIAorICAgIDk4LCA5NSwgMjUsIDUsIDc1LCA5NSwgMjUsIDUsIDI0NSwgMTUwLCA5NSwgMjUsIDUsIDI0NSwgMTM4LCA5NSwgMjUsIDUsIAorICAgIDIyNiwgMjMyLCA5NSwgMjUsIDUsIDczLCA5NSwgMjUsIDUsIDI0MCwgMTE5LCA5NSwgMjUsIDUsIDI0MCwgMTE4LCA5NSwgCisgICAgMjUsIDUsIDI0MCwgMTE3LCA5NSwgMjUsIDUsIDIzNSwgMTg5LCA5NSwgMjUsIDUsIDIzNiwgNjAsIDk1LCAyNSwgNSwgMjM2LCAKKyAgICAzMywgOTUsIDI1LCA1LCAyMzUsIDE1NiwgOTUsIDI1LCA1LCAyMzUsIDIzMSwgOTUsIDI1LCA1LCA3MCwgOTUsIDI1LCA1LCAKKyAgICAyMTQsIDIyOSwgOTUsIDI1LCA1LCAyMTQsIDIyOCwgOTUsIDI1LCA1LCAyMTQsIDIyNywgOTUsIDI1LCA1LCAyMTQsIDExOCwgCisgICAgOTUsIDI1LCA1LCAyMTQsIDIxMSwgOTUsIDI1LCA1LCAyMTQsIDE3OCwgOTUsIDI1LCA1LCAyMTEsIDExNywgOTUsIDI1LCA1LCAKKyAgICAyMTEsIDgsIDk1LCAyNSwgNSwgMjU0LCAyNDMsIDk1LCAyNSwgNSwgMjU0LCAyMzksIDk1LCAyNSwgNSwgMjQ1LCA4NiwgOTUsIAorICAgIDI1LCA1LCAyMjIsIDE4MywgMjQ1LCA4NiwgOTUsIDI1LCA1LCAyNDUsIDkyLCA5NSwgMjUsIDUsIDIyMiwgMTgzLCAyNDUsIAorICAgIDkyLCA5NSwgMjUsIDUsIDI1NCwgMjAxLCA5NSwgMjUsIDUsIDI0NSwgMTk1LCA5NSwgMjUsIDUsIDI1MywgMTkyLCA5NSwgCisgICAgMjUsIDUsIDIyNiwgMTM0LCA5NSwgMjUsIDUsIDIzMCwgMjUsIDk1LCAyNSwgNSwgMjI5LCA3OSwgOTUsIDEzOCwgMjIyLCAKKyAgICAyNTEsIDk1LCAxMzgsIDIxNiwgMTQsIDIyMiwgMjUxLCA5NSwgMTM4LCA0OCwgOTUsIDEzOCwgNTEsIDk1LCAxLCAyMTYsIAorICAgIDI4LCA5NSwgMSwgMjE2LCAyNywgOTUsIDEsIDIxNiwgMjYsIDk1LCAxLCAyMTYsIDI1LCA5NSwgMSwgMjE2LCAyNCwgOTUsIAorICAgIDEsIDIxNiwgMjMsIDk1LCAxLCAyMTYsIDIyLCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjksIDk1LCAxLCAyMjMsIDEwNiwgCisgICAgMjE2LCAyOCwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDI2LCA5NSwgMSwgMjIzLCAxMDYsIDIxNiwgMjUsIDk1LCAxLCAyMjMsIAorICAgIDEwNiwgMjE2LCAyNCwgOTUsIDEsIDIyMywgMTA2LCAyMTYsIDIyLCA1NiwgMSwgMjU0LCAyMywgNzUsIDE0MSwgMSwgMjU0LCAKKyAgICAyMywgMjExLCA0NywgNDksIDI4LCAxNiwgMjI0LCAxNTQsIDQ5LCAyOCwgMTYsIDI0OCwgMTU4LCA0OSwgMjgsIDE2LCAyMjUsIAorICAgIDE3NSwgNDksIDI4LCAxNiwgMjI2LCAxMTMsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMjYsIDExMywgMjQ3LCAyMDEsIDQ5LCAKKyAgICAyOCwgMTYsIDIxNCwgMTYsIDI0NSwgMTc4LCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyNDcsIDIwMSwgNDksIDI4LCAxNiwgCisgICAgMjM0LCAxOTcsIDQ5LCAyOCwgMTYsIDIxNywgMTY5LCA0OSwgMjgsIDE2LCAyMjYsIDksIDQ5LCAyOCwgMTYsIDIxMCwgMjE3LCAKKyAgICA0OSwgMjgsIDE2LCAyMTAsIDIxOCwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDIzMywgMjM0LCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDY4LCAyNDUsIDE3OCwgNDksIDI4LCAxNiwgMjQ1LCAyNiwgMjQ1LCAxNzgsIDQ5LCAyOCwgMTYsIDIxNywgMiwgNDksIDI4LCAKKyAgICAxNiwgMjM0LCAxNjEsIDQ5LCAyOCwgMTYsIDI1NCwgNTgsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDI0NywgMjAxLCA0OSwgMjgsIAorICAgIDE2LCAyMTcsIDE3NSwgNDksIDI4LCAxNiwgMjE2LCAxNTksIDQ5LCAyOCwgMTYsIDIyNiwgMjA2LCAyNTQsIDIxLCA0OSwgCisgICAgMjgsIDE2LCAyNDIsIDE1OSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjI0LCAxNTMsIDQ5LCAyOCwgMTYsIDI1MCwgMTQ5LCAKKyAgICA0OSwgMjgsIDE2LCAyMTQsIDYsIDQ5LCAyOCwgMTYsIDIzNSwgMTY0LCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgCisgICAgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIyMSwgMjEzLCA0OSwgMjgsIDE2LCAKKyAgICAyMjYsIDAsIDQ5LCAyOCwgMTYsIDIxOCwgMTQ2LCAyNTQsIDYxLCA0OSwgMjgsIDE2LCAyMjYsIDExMiwgMjU0LCAyMSwgNDksIAorICAgIDI4LCAxNiwgMjE0LCAxNSwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCA2MiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICA1NiwgNDksIDI4LCAxNiwgMjM0LCAzNywgNDksIDI4LCAxNiwgMjIzLCA0NiwgNDksIDI4LCAxNiwgMjI1LCAxMDYsIDI1NCwgCisgICAgMjEsIDQ5LCAyOCwgMTYsIDIxNiwgODMsIDQ5LCAyOCwgMTYsIDI1NCwgMTIxLCA0OSwgMjgsIDE2LCAyMjEsIDE1OSwgNDksIAorICAgIDI4LCAxNiwgMjE3LCAxNzgsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIxNywgMTc4LCAyMzEsIDQwLCAyMTgsIDE0NCwgNDksIAorICAgIDI4LCAxNiwgMjI2LCAxMDcsIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIDIxNiwgMTkwLCA0OSwgMjgsIDE2LCAyMzMsIDI3LCA0OSwgCisgICAgMjgsIDE2LCAyNDYsIDQxLCA0OSwgMjgsIDE2LCAyMTUsIDIyNywgNDksIDI4LCAxNiwgMjE2LCAyMzIsIDQ5LCAyOCwgMTYsIAorICAgIDIzMywgMjM3LCA0OSwgMjgsIDE2LCAyNTQsIDY4LCAyNDUsIDI2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCisgICAgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjM2LCAxMiwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDI1NCwgMjEsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMjAwLCAyMTUsIDE5OCwgNDksIDI4LCAxNiwgMjI1LCAyMDAsIDQ5LCAyOCwgMTYsIDIyNCwgMTU4LCA0OSwgMjgsIAorICAgIDE2LCAyMzQsIDExLCA0OSwgMjgsIDE2LCAyNTAsIDgwLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMjMsIDE0NiwgNDksIDI4LCAKKyAgICAxNiwgMjI2LCAxMiwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjI2LCAxMCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjQwLCAxMDksIAorICAgIDQ5LCAyOCwgMTYsIDIyOSwgMjAzLCA0OSwgMjgsIDE2LCAyMjUsIDE1NiwgNDksIDI4LCAxNiwgMjM0LCAxMiwgMjU0LCAKKyAgICAxNDksIDQ5LCAyOCwgMTYsIDIxNSwgMTk5LCAyNTQsIDE0OSwgNDksIDI4LCAxNiwgMjE4LCAxMjMsIDQ5LCAyOCwgMTYsIAorICAgIDI0MiwgMTIzLCA0OSwgMjgsIDE2LCAyMzUsIDE2NCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjI2LCAyMDYsIDIyOSwgOTUsIAorICAgIDQ5LCAyOCwgMTYsIDIyNiwgMTEzLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjUsIDE1NSwgNDksIDI4LCAxNiwgMjMzLCAKKyAgICAyNTQsIDQ5LCAyOCwgMTYsIDIyNSwgMTU0LCA0OSwgMjgsIDE2LCAyMzMsIDIzNiwgNDksIDI4LCAxNiwgMjI1LCAyMDEsIAorICAgIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgCisgICAgMjI5LCA5NiwgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjEwLCAyMTUsIDQ5LCAyOCwgMTYsIDI1NCwgNTksIDIyOSwgOTUsIDQ5LCAKKyAgICAyOCwgMTYsIDI1NCwgNjAsIDIxNywgMTc2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMTAsIDIxNiwgNDksIDI4LCAxNiwgCisgICAgMjMzLCAyMzUsIDQ5LCAyOCwgMTYsIDI0NSwgMTczLCA0OSwgMjgsIDE2LCAyNTAsIDE1MCwgNDksIDI4LCAxNiwgMjMwLCAKKyAgICAxOTgsIDIzNSwgMTYzLCA0OSwgMjgsIDE2LCAyMTQsIDE2LCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjUsIDEwNiwgMjI5LCAKKyAgICA5NSwgNDksIDI4LCAxNiwgMjI0LCAxNTksIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIyNiwgMjAzLCA0OSwgMjgsIDE2LCAyNTQsIAorICAgIDg0LCA0OSwgMjgsIDE2LCAyMzIsIDU4LCA0OSwgMjgsIDE2LCAyMjYsIDEwLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyMjYsIAorICAgIDEyLCAyMjksIDk1LCA0OSwgMjgsIDE2LCAyNDUsIDYwLCAyMjYsIDExLCA0OSwgMjgsIDE2LCAyMzMsIDE1MywgNDksIDI4LCAKKyAgICAxNiwgMjU0LCA4NSwgNDksIDI4LCAxNiwgMjE1LCAxOTksIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgMTc2LCA0OSwgMjgsIAorICAgIDE2LCAyMTcsIDE3OCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjE3LCAxNzAsIDQ5LCAyOCwgMTYsIDI1MCwgODAsIDIyOSwgCisgICAgOTUsIDQ5LCAyOCwgMTYsIDI0NSwgMTA2LCA0OSwgMjgsIDE2LCAyMjEsIDE2MCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjExLCAKKyAgICAxNTEsIDIzNCwgMzcsIDQ5LCAyOCwgMTYsIDIxNSwgMTk2LCA0OSwgMjgsIDE2LCAyMjQsIDE2MCwgNDksIDI4LCAxNiwgCisgICAgMjE1LCAyMDAsIDQ5LCAyOCwgMTYsIDIxNSwgMTk3LCA0OSwgMjgsIDE2LCAyMjQsIDE1NywgNDksIDI4LCAxNiwgMjE1LCAKKyAgICAxOTUsIDQ5LCAyOCwgMTYsIDIyNCwgMTU2LCA0OSwgMjgsIDE2LCAyNDIsIDE1OCwgNDksIDI4LCAxNiwgMjU0LCAxNCwgNDksIAorICAgIDI4LCAxNiwgMjQ1LCA2MCwgMjU0LCAxNCwgNDksIDI4LCAxNiwgMjI2LCAxMDcsIDIyOSwgOTUsIDQ5LCAyOCwgMTYsIDIxNiwgCisgICAgMTg5LCAyNDUsIDY5LCA0OSwgMjgsIDE2LCAyMTYsIDE4OSwgMjQ1LCAyNSwgNDksIDI4LCAxNiwgMjE2LCAxOTEsIDI1NCwgCisgICAgNjMsIDQ5LCAyOCwgMTYsIDIxNiwgMTg0LCAyMzQsIDI0NywgMjU0LCA1NSwgNDksIDI4LCAxNiwgMjM0LCAxOTksIDQ5LCAKKyAgICAyOCwgMTYsIDI0NSwgMTM5LCA0OSwgMjgsIDE2LCAyMTEsIDExLCAyMzQsIDE5NiwgNDksIDI4LCAxNiwgMjExLCAxMSwgCisgICAgMjU0LCA5NiwgNDksIDI4LCAxNiwgMjE4LCAxNDUsIDQ5LCAyOCwgMTYsIDIzNCwgMzgsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjAyLCAyNTQsIDIxLCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgMjU0LCAyMSwgNDksIDI4LCAxNiwgMjMzLCAyMzgsIAorICAgIDI1NCwgMTQ5LCA0OSwgMjgsIDE2LCAyMzMsIDIzOCwgMjI5LCA5NSwgNDksIDI4LCAxNiwgMjU0LCA2MiwgMjI5LCA5NSwgCisgICAgNDksIDI4LCAxNiwgMjU0LCA2NCwgNDksIDI4LCAxNiwgMjQ3LCAyMDEsIDQ5LCAyOCwgMTYsIDIxNSwgMjEwLCA0OSwgMjgsIAorICAgIDE2LCAyMTYsIDIyNCwgNDksIDI4LCAxNiwgMjM0LCAyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAyNDUsIDEzNCwgMjUwLCA3MSwgCisgICAgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjQ2LCA0MiwgMjUwLCA3MiwgNDksIDI4LCAxNiwgMjMzLCAzMiwgMjE1LCAyMTIsIAorICAgIDI1MCwgNzIsIDQ5LCAyOCwgMTYsIDIzMywgMzIsIDIxNiwgMjM0LCAyNTAsIDcyLCA0OSwgMjgsIDE2LCAyMzMsIDMyLCAKKyAgICAyMzYsIDcsIDI1MCwgNzEsIDQ5LCAyOCwgMTYsIDI0MiwgMTU5LCAyMjksIDk2LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1OSwgMjI2LCAxLCAyNTQsIDEwLCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI2LCAxLCAyNDgsIDI5LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDIyNSwgNDksIDI4LCAxNiwgMjQ3LCAyMjYsIDIyNiwgMSwgMjU0LCAxMSwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIAorICAgIDI0NywgMjI2LCAyMjYsIDEsIDI1NCwgMTEsIDI1NCwgOTYsIDQ5LCAyOCwgMTYsIDI0NywgMjI2LCAyMjYsIDEsIDI0OCwgCisgICAgMjksIDQ5LCAyOCwgMTYsIDIxNSwgMjE2LCA0OSwgMjgsIDE2LCAyNTQsIDE1LCA0OSwgMjgsIDE2LCAyMzYsIDE0LCA0OSwgCisgICAgMjgsIDE2LCAyNDcsIDI0NiwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIyNSwgMCwgMjU0LCAxNiwgNDksIDI4LCAxNiwgMjU0LCAKKyAgICAyMTEsIDI1NCwgMTMsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyNTQsIDE2LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjMxLCAKKyAgICAzNCwgNDksIDI4LCAxNiwgMjU0LCAyMTEsIDIzMSwgNDUsIDQ5LCAyOCwgMTYsIDI1NCwgMjExLCAyNDIsIDE2MCwgNDksIAorICAgIDI4LCAxNiwgMjU0LCAyMTEsIDI0MiwgMTU3LCA0OSwgMjgsIDE2LCAyNTQsIDIxMSwgMjI1LCAwLCAyNDIsIDE2MCwgNDksIAorICAgIDI4LCAxNiwgMjMxLCAxNTEsIDIyNCwgMTY1LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDI1NCwgMTUxLCAKKyAgICAyMjQsIDE2NSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyNDgsIDI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgCisgICAgMjMxLCAxNTEsIDI1NCwgMTUxLCAyNDgsIDI4LCAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNSwgMjA1LCAKKyAgICAyNDAsIDEwNywgNDksIDI4LCAxNiwgMjMxLCAxNTEsIDIxNSwgMjE3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE2LCAyMjgsIAorICAgIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE2LCAyMjgsIDIzMywgMzUsIDI0MCwgMTA3LCA0OSwgMjgsIDE2LCAKKyAgICAyMzEsIDE1MSwgMjMzLCAzNSwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMjUsIDM5LCAyNDAsIDEwNywgNDksIAorICAgIDI4LCAxNiwgMjM1LCAxNjksIDIxNiwgMjUxLCAyNDAsIDEwOCwgNDksIDI4LCAxNiwgMjU0LCA2MCwgMjE2LCAyNTEsIDI0MCwgCisgICAgMTA4LCA0OSwgMjgsIDE2LCAyNDQsIDE3MiwgMjE2LCAyMjUsIDQ5LCAyOCwgMTYsIDI0NCwgMTcyLCAyMzAsIDE0MywgNDksIAorICAgIDI4LCAxNiwgMjQ0LCAxNzIsIDI0NywgMjMwLCA0OSwgMjgsIDE2LCAyMzEsIDE1MSwgMjE0LCAxMCwgMjQwLCAxMDcsIDQ5LCAKKyAgICAyOCwgMTYsIDIzMSwgMTUxLCAyMjQsIDE2NCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDIzMSwgMTUxLCAyMjUsIDM5LCAyMTYsIAorICAgIDIyOCwgMjQwLCAxMDcsIDQ5LCAyOCwgMTYsIDI0MiwgMTU1LCAyMzAsIDI2LCAyNTQsIDYzLCA0OSwgMjgsIDE2LCAyNDIsIAorICAgIDE1NSwgMjMwLCAyNiwgMjQ3LCAyMDAsIDQ5LCAyOCwgMTYsIDI0NSwgMTQ4LCAyMzQsIDI0NywgMjQzLCAyMzYsIDIxMywgCisgICAgMTI0LCA0OSwgMjgsIDE2LCAyMzYsIDEzLCA0OSwgMjgsIDE2LCAyMzYsIDExLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjU0LCAKKyAgICAyMiwgMjQ4LCAyNywgMjQwLCAxMDYsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMTkwLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOSwgMjAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjI5LCAxOTgsIDI0MCwgMTA3LCAKKyAgICA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDI0OCwgMywgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAKKyAgICAyNDcsIDI0MywgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIzNCwgMTgyLCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDcsIDI0NCwgMjI4LCAyMzQsIAorICAgIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjQ3LCAyNDQsIDIyOCwgMjM0LCAyNTQsIDk2LCA0OSwgMjgsIDE2LCAKKyAgICAyNDMsIDIzNiwgMjMxLCAxOTEsIDI1MCwgNzMsIDI0NywgMjMwLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgMjMxLCAxOTEsIAorICAgIDI1MCwgNzMsIDIzMCwgMTQzLCA0OSwgMjgsIDE2LCAyNDQsIDEyMiwgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgNDksIAorICAgIDI4LCAxNiwgMjQzLCAyMzYsIDIxOSwgMTAyLCAyNTAsIDczLCAyMTcsIDE3OSwgNDksIDI4LCAxNiwgMjQzLCAyMzYsIDIyOSwgCisgICAgOTcsIDQ5LCAyOCwgMTYsIDI1MCwgNzQsIDIwOSwgMjQ5LCA0OSwgMjgsIDE2LCAyNTAsIDc0LCAyMzQsIDM2LCA0OSwgMjgsIAorICAgIDE2LCAyNTAsIDc0LCAyMTksIDksIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDAsIDE1NCwgMjExLCAxMCwgMjE2LCAyMjksIAorICAgIDQ5LCAyOCwgMTYsIDI0MywgMjM2LCAyNDUsIDE0OSwgMjU0LCA4NiwgNDksIDI4LCAxNiwgMjExLCAxMCwgMjE1LCAyMDYsIAorICAgIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMTUsIDIwNiwgNDksIDI4LCAxNiwgMjQ3LCAyMzgsIDIxNiwgMjI5LCA0OSwgMjgsIAorICAgIDE2LCAyNDcsIDIzOCwgMjU0LCA2NSwgMjQ2LCA0MiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDI0NywgMjM4LCAyMzAsIDE0MSwgCisgICAgMjE2LCAyMzMsIDI0NywgMTM5LCA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjQ3LCAyMjIsIDI0NSwgMzYsIDI0NywgMTM5LCAKKyAgICA0OSwgMjgsIDE2LCAyNDcsIDIzOCwgMjE1LCAyMTQsIDIyNiwgMjExLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAxMCwgCisgICAgMjU0LCA2NSwgMjQ2LCA0MiwgMjQ3LCAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDIzMCwgMTQxLCAyMTYsIDIzMywgMjQ3LCAKKyAgICAxMzksIDQ5LCAyOCwgMTYsIDIxMSwgMTAsIDI0NywgMjIyLCAyNDUsIDM2LCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjExLCAKKyAgICAxMCwgMjE1LCAyMTQsIDIyNiwgMjExLCAyNDcsIDEzOSwgNDksIDI4LCAxNiwgMjQzLCA0OSwgMjQ3LCAyMzcsIDQ5LCAyOCwgCisgICAgMTYsIDI0MywgNDksIDIxMSwgOSwgNDksIDI4LCAxNiwgMjQ3LCAyNDUsIDI1NCwgNjUsIDIzMCwgMTk5LCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDI0NSwgMjU0LCA2NSwgMjMxLCA3MywgNDksIDI4LCAxNiwgMjQ3LCAyNDUsIDI0NywgMjAxLCA0OSwgMjgsIDE2LCAKKyAgICAyNDcsIDI0NSwgMjE2LCAxODIsIDQ5LCAyOCwgMTYsIDIxOSwgMTYzLCAyMTYsIDE4MiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIAorICAgIDIxNiwgMTgzLCAyNDcsIDE4NiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDIxNiwgMTgzLCAyMTUsIDIwNywgNDksIDI4LCAxNiwgCisgICAgMjE5LCAxNjMsIDIxNiwgMTgzLCAyMTYsIDIyMiwgNDksIDI4LCAxNiwgMjE5LCAxNjMsIDI1MywgMjQ0LCA0OSwgMjgsIDE2LCAKKyAgICAyMTksIDE2MywgMjUzLCAyNDUsIDI0NywgMTg2LCA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDUsIDIxNSwgMjA3LCAKKyAgICA0OSwgMjgsIDE2LCAyMTksIDE2MywgMjUzLCAyNDUsIDIxNiwgMjIyLCA0OSwgMjgsIDE2LCAyNDcsIDIyMywgMjQzLCAzMCwgCisgICAgNDksIDI4LCAxNiwgMjQ3LCAyMjksIDIyNiwgMTM0LCA0OSwgMjgsIDE2LCAyMTgsIDEzNywgNDksIDI4LCAxNiwgMjU0LCA3LCAKKyAgICAxOTAsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjEzLCAxMjQsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjQzLCAxMzUsIDQ5LCAyOCwgCisgICAgMTYsIDI1NCwgNywgMjQ4LCAzLCA0OSwgMjgsIDE2LCAyNTQsIDcsIDIzNCwgMTgyLCA0OSwgMjgsIDE2LCAyNTQsIDcsIAorICAgIDIxMCwgMjMsIDQ5LCAyOCwgMTYsIDI1NCwgNywgMjI4LCAyMzMsIDQ5LCAyOCwgMTYsIDIzNCwgMTYyLCAyMjksIDk2LCAKKyAgICAyMzEsIDQ0LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NiwgMjMxLCA0NCwgNDksIDI4LCAxNiwgMjM0LCAxNjIsIAorICAgIDIyOSwgOTYsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyMzQsIDE2MywgMjI5LCA5NiwgMjM0LCAxOTYsIDQ5LCAyOCwgMTYsIAorICAgIDIzNCwgMzgsIDIzNCwgMTk2LCA0OSwgMjgsIDE2LCAyNDIsIDE1OSwgMjI5LCA5NiwgMjM0LCAxOTYsIDI4LCAxNiwgMjE5LCAKKyAgICAxNTUsIDI1MiwgMTM1LCAyOCwgMTYsIDUyLCAyNTIsIDEzNSwgMjgsIDE2LCA0MCwgMjUyLCAxMzUsIDI4LCAxNiwgMjIzLCAKKyAgICA1MCwgNDAsIDI1MiwgMTM1LCAyOCwgMTYsIDI0OCwgMTU1LCAyNTIsIDEzNSwgMjgsIDE2LCAyMTksIDI1MSwgMjUyLCAxMzUsIAorICAgIDI4LCAxNiwgNDMsIDIyMywgNzcsIDUwLCAyOCwgMTYsIDQ0LCAyMjMsIDc3LCA1MCwgMjgsIDE2LCAyMjMsIDc3LCAyNDcsIAorICAgIDExOCwgMjgsIDE2LCAyNDgsIDE5NiwgMjIxLCAxNjMsIDI4LCAxNiwgMjQ4LCAyMjIsIDI1MCwgMjQ5LCAyOCwgMTYsIDIyMSwgCisgICAgMTYzLCAyOCwgMTYsIDI0OSwgMjM0LCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgMTExLCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgCisgICAgMTEwLCAyOCwgMTYsIDIyMywgNzUsIDI0NCwgMTA5LCAyOCwgMTYsIDI0NCwgMTMxLCAyOCwgMTYsIDI0NCwgMTMyLCA1MSwgCisgICAgMjgsIDE2LCAyNTEsIDE0OCwgNzgsIDI4LCAxNiwgMjUxLCAyNCwgMjgsIDE2LCAyNTEsIDE1OSwgMjgsIDE2LCAxMjcsIDI4LCAKKyAgICAxNiwgMjI2LCAxOTMsIDIxOCwgMTYzLCAyOCwgMTYsIDIxNSwgNTcsIDIxOCwgMTYzLCAyOCwgMTYsIDIxNiwgMTQyLCAyMTgsIAorICAgIDE2MywgMjgsIDE2LCAyNDQsIDEwLCAyMTgsIDE2MywgMjgsIDE2LCAyNDQsIDgwLCAyMTgsIDE2MywgMjgsIDE2LCAyMTksIAorICAgIDEyNCwgMjE4LCAxNjMsIDI4LCAxNiwgMjE5LCAxMjIsIDI0MywgMjUwLCAyOCwgMTYsIDI0NCwgOCwgMjQzLCAyNTAsIDI4LCAKKyAgICAxNiwgMjQzLCAyMDMsIDI1MCwgMTQsIDI4LCAxNiwgMjQzLCAyMDMsIDI1MCwgMTUsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIAorICAgIDE2LCAyNDMsIDIwMywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgMTYsIDI1MSwgNjcsIDI1MCwgMTQsIDI4LCAKKyAgICAxNiwgMjQ1LCA3LCAyNTAsIDE0LCAyOCwgMTYsIDI0NSwgNywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1NCwgMTQyLCAyOCwgMTYsIAorICAgIDI0NSwgNywgMjUwLCAxNSwgMjI2LCAxMzYsIDI1MiwgMTIyLCAyOCwgMTYsIDI0NiwgODMsIDI1MCwgMTMsIDI4LCAxNiwgCisgICAgMjQ2LCA4MywgMjUwLCAxMiwgMjgsIDE2LCAyMzAsIDg1LCAyMzEsIDkwLCAyMjMsIDYxLCAyOCwgMTYsIDUyLCAyMjAsIDc1LCAKKyAgICAyOCwgMTYsIDUyLCAyNDQsIDY1LCAyOCwgMTYsIDI0NCwgNjYsIDIxNCwgMTYzLCAyOCwgMTYsIDI0NCwgNjYsIDI0NiwgCisgICAgMTA2LCAyOCwgMTYsIDIyOSwgMTg4LCAyMTQsIDE2MywgMjgsIDE2LCAyMjksIDE4OCwgMjQ2LCAxMDYsIDI4LCAxNiwgMjIwLCAKKyAgICA3NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjIwLCA3NiwgMjQ2LCAxMDYsIDI4LCAxNiwgMjI0LCAyMiwgMTM4LCAyMjAsIDc1LCAKKyAgICAyOCwgMTYsIDIyNCwgMjIsIDEzOCwgMjQ0LCA2NSwgMjgsIDE2LCAyNDksIDIxNiwgMjE2LCA4NywgMjgsIDE2LCAyNDksIAorICAgIDg1LCAyMTYsIDg3LCAyOCwgMTYsIDIyNiwgMTM2LCAyNTQsIDE0MiwgMjgsIDE2LCAyMjYsIDEzNiwgMjUyLCAxMjIsIDI4LCAKKyAgICAxNiwgMjI0LCA0LCAyNTQsIDE0MiwgMjgsIDE2LCAyMjQsIDQsIDI1MiwgMTIyLCAyOCwgMTYsIDIzMCwgODgsIDIyMywgNjEsIAorICAgIDI4LCAxNiwgMjExLCAyNTEsIDIyMywgNjEsIDI4LCAxNiwgMTYzLCAyMjMsIDYxLCAyOCwgMTYsIDIyNCwgMjIsIDIyMywgCisgICAgNjEsIDI4LCAxNiwgMjQ1LCAxODksIDIyMywgNjEsIDI4LCAxNiwgMjE5LCAxMTgsIDIyMywgNjEsIDI4LCAxNiwgMjE2LCAKKyAgICAxNjAsIDIyMywgNjEsIDI4LCAxNiwgMjE5LCAxMTAsIDIyMywgNjEsIDI4LCAxNiwgMTIzLCAyNDAsIDIxMSwgMjE1LCA3MSwgCisgICAgMjIzLCA2MSwgMjgsIDE2LCAyMTEsIDE3OSwgMjI4LCA0MywgMjgsIDE2LCA5NiwgMjI4LCA0MywgMjgsIDE2LCAyNTAsIDM2LCAKKyAgICAyMTEsIDE3OSwgMjI4LCA0MywgMjgsIDE2LCA0MiwgMjI4LCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgNDIsIDIyOCwgNDQsIAorICAgIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAKKyAgICAyMjgsIDQ0LCAxMjAsIDI1MSwgMjIxLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0MywgMjExLCAyNTMsIDI4LCAxNiwgCisgICAgMjE1LCAyMjYsIDIyOCwgNDQsIDQzLCAyNTEsIDIyMSwgMjgsIDE2LCAyMTUsIDIyNiwgMjI4LCA0NCwgNDQsIDIxMSwgMjUzLCAKKyAgICAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCA0NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyNCwgCisgICAgMjExLCAyNTMsIDI4LCAxNiwgMjE1LCAyMjYsIDIyOCwgNDQsIDEyNCwgMjUxLCAyMjEsIDI4LCAxNiwgMjE1LCAyMjYsIAorICAgIDIyOCwgNDQsIDEyMCwgNDQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjI2LCAyMjgsIDQ0LCAxMjAsIDQ0LCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMzAsIDEyOSwgMjI4LCA0NCwgMjExLCAyNTMsIDI4LCAxNiwgMjMwLCAxMjksIDIyOCwgNDQsIDI1MSwgMjIxLCAKKyAgICAyOCwgMTYsIDIxNSwgMjIzLCAyMjgsIDQ0LCAxMjQsIDIxMSwgMjUzLCAyOCwgMTYsIDIxNSwgMjIzLCAyMjgsIDQ0LCAxMjQsIAorICAgIDI1MSwgMjIxLCAyOCwgMTYsIDIyNiwgNCwgMjI4LCA0MywgMjgsIDE2LCAyMTMsIDEzMiwgMjI4LCA0MywgMjgsIDE2LCAKKyAgICAyMjgsIDQ0LCAyNTEsIDIyMSwgMjgsIDE2LCAyMjcsIDIwMywgMjI4LCA0MywgMjgsIDE2LCAyNDksIDI0MSwgMjI4LCA0NCwgCisgICAgMjExLCAyNTMsIDI4LCAxNiwgMjQ5LCAyNDEsIDIyOCwgNDQsIDI1MSwgMjIxLCAyOCwgMTYsIDI1MSwgMTQ2LCAyOCwgMTYsIAorICAgIDIxMSwgMjUxLCAyMjgsIDQ3LCAyOCwgMTYsIDE2MywgMjI4LCA0NywgMjgsIDE2LCAyMjQsIDIyLCAyMjgsIDQ3LCAyOCwgCisgICAgMTYsIDI0NSwgMTg5LCAyMjgsIDQ3LCAyOCwgMTYsIDIxOSwgMTE4LCAyMjgsIDQ3LCAyOCwgMTYsIDIxNiwgMTYwLCAyMjgsIAorICAgIDQ3LCAyOCwgMTYsIDIxOSwgMTEwLCAyMjgsIDQ3LCAyOCwgMTYsIDEyMywgMjQwLCAyMTEsIDIxNSwgNzEsIDIyOCwgNDcsIAorICAgIDI4LCAxNiwgMzgsIDIxOCwgMTM5LCAyOCwgMTYsIDM4LCAyMTgsIDI0MCwgMjE4LCAxMzksIDI4LCAxNiwgMzgsIDIxNSwgCisgICAgMjM0LCAyOCwgMTYsIDM4LCAyMTUsIDIzMywgMjgsIDE2LCAzOCwgMjE1LCAyMzIsIDI4LCAxNiwgMjQ0LCAxMDEsIDIxNSwgCisgICAgMjM0LCAyOCwgMTYsIDI0NCwgMTAxLCAyMTUsIDIzMywgMjgsIDE2LCAyNDQsIDEwMSwgMjE1LCAyMzIsIDI4LCAxNiwgMzgsIAorICAgIDI1MywgMTg5LCAyNDcsIDEyMCwgMjgsIDE2LCAzOCwgMjQ0LCA3MiwgMjgsIDE2LCAzOCwgMjQ0LCA3MSwgMjgsIDE2LCAzOCwgCisgICAgMjQ0LCA3MCwgMjgsIDE2LCAzOCwgMjQ0LCA2OSwgMjgsIDE2LCAzOCwgMjQ0LCA2OCwgMjgsIDE2LCAyNTIsIDU4LCAyNTIsIAorICAgIDc0LCAyOCwgMTYsIDI0NSwgMTQzLCAyNTIsIDc0LCAyOCwgMTYsIDI1MiwgNTgsIDIxNiwgMTExLCAyOCwgMTYsIDI0NSwgCisgICAgMTQzLCAyMTYsIDExMSwgMjgsIDE2LCAyNTIsIDU4LCAyMTksIDgwLCAyOCwgMTYsIDI0NSwgMTQzLCAyMTksIDgwLCAyOCwgCisgICAgMTYsIDI1MiwgNTgsIDIyNSwgMTE1LCAyOCwgMTYsIDI0NSwgMTQzLCAyMjUsIDExNSwgMjgsIDE2LCAzOCwgMjU1LCAxNCwgCisgICAgMjgsIDE2LCAzOCwgMjE4LCAxNjUsIDI4LCAxNiwgMzgsIDIxNiwgMjM4LCAyOCwgMTYsIDM4LCAyMTgsIDE2NiwgMjgsIDE2LCAKKyAgICAzOCwgMjMxLCAxNjIsIDI4LCAxNiwgMzgsIDIzMSwgMTYxLCAyOCwgMTYsIDM4LCAyNTUsIDEzLCAyOCwgMTYsIDM4LCAyMzIsIAorICAgIDExMiwgMjgsIDE2LCAyNTMsIDI1NCwgMjE0LCAxNjMsIDI4LCAxNiwgMjUzLCAyNTQsIDI0NiwgMTA2LCAyOCwgMTYsIDM4LCAKKyAgICAyNDcsIDEzNSwgMjgsIDE2LCAzOCwgMjIyLCAyMzEsIDI4LCAxNiwgMzgsIDI0NCwgNTgsIDI4LCAxNiwgMzgsIDIxOSwgNzYsIAorICAgIDI4LCAxNiwgMzgsIDI1MiwgMzgsIDI4LCAxNiwgMzgsIDUyLCAyMTYsIDE5LCAyOCwgMTYsIDM4LCAyMTUsIDIxMSwgMjE2LCAKKyAgICAxOSwgMjgsIDE2LCAyMjIsIDIzNSwgMjgsIDE2LCAyMTgsIDc1LCAyOCwgMTYsIDIxMCwgMTU5LCAyOCwgMTYsIDIyNSwgCisgICAgMTA3LCAyOCwgMTYsIDIzMSwgMjUsIDI4LCAxNiwgMjQ0LCAxNywgMjgsIDE2LCAyNDksIDEzOCwgMjgsIDE2LCAyNDgsIDc4LCAKKyAgICAyOCwgMTYsIDI0MiwgMTUwLCAyMjgsIDQ4LCAyMTksIDk1LCAyOCwgMTYsIDI0MiwgMTUwLCAyMjgsIDQ4LCAyMjgsIDc1LCAKKyAgICAyMTksIDk1LCAyOCwgMTYsIDIxNiwgMCwgMjgsIDE2LCAyMTUsIDk1LCAyOCwgMTYsIDIzNSwgMTkzLCAyMTUsIDk1LCAyOCwgCisgICAgMTYsIDIxNSwgOTYsIDIxOSwgOTUsIDI4LCAxNiwgMjE1LCA5NiwgMjE0LCAxNjMsIDI4LCAxNiwgMjI2LCAxNDgsIDIxOCwgCisgICAgMTAyLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk5LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk4LCAyOCwgMTYsIDIyNiwgCisgICAgMTQ4LCAyMTgsIDk3LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk2LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDk1LCAyOCwgCisgICAgMTYsIDIyNiwgMTQ4LCAyMTgsIDk0LCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDkzLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIAorICAgIDkyLCAyOCwgMTYsIDIyNiwgMTQ4LCAyMTgsIDEwMSwgMjgsIDE2LCAyMjYsIDE0OCwgMjE4LCAxMDAsIDI4LCAxNiwgMjQxLCAKKyAgICAyNDUsIDI4LCAxNiwgMjI5LCAxMDUsIDI4LCAxNiwgMjQ1LCAxNDMsIDY0LCAyMTgsIDEzMywgMjgsIDE2LCAyNDgsIDcxLCAKKyAgICAyMTksIDk1LCAyOCwgMTYsIDM4LCAxMjQsIDI1MSwgMTY5LCAyOCwgMTYsIDM4LCAxMjAsIDI1MSwgMTY5LCAyOCwgMTYsIAorICAgIDM4LCAyNDIsIDAsIDI4LCAxNiwgMzgsIDIxOSwgNjcsIDIyNSwgNDMsIDI4LCAxNiwgMjI1LCAyMTYsIDc4LCAyOCwgMTYsIAorICAgIDIyNSwgMjE2LCAxMjAsIDc4LCAyOCwgMTYsIDE2MywgMjI1LCAyMTYsIDc4LCAyOCwgMTYsIDI0MiwgMTgyLCAyMTQsIDE2MywgCisgICAgMjgsIDE2LCAyNDIsIDE4MiwgMjQ2LCAxMDYsIDI4LCAxNiwgMiwgMjQ0LCAxMDAsIDI4LCAxNiwgMjQ4LCAxODAsIDI4LCAKKyAgICAxNiwgMjQ4LCAxODEsIDI1NCwgMTU0LCAyOCwgMTYsIDIzMSwgMTMzLCAyOCwgMTYsIDIzMiwgMTI5LCAyOCwgMTYsIDI1MSwgCisgICAgMTQzLCAyOCwgMTYsIDIyMCwgMTU0LCAyMTEsIDI1MywgMjgsIDE2LCAyMjAsIDE1NCwgMjUxLCAyMjEsIDI4LCAxNiwgMjMwLCAKKyAgICAxODQsIDI4LCAxNiwgMjMwLCAxODUsIDI1MSwgMjIxLCAyOCwgMTYsIDIyMCwgMTQ4LCAyMTEsIDI1MywgMjgsIDE2LCAyMjAsIAorICAgIDE0OCwgMjUxLCAyMjEsIDI4LCAxNiwgMjQzLCAyMjAsIDIxMSwgMjUzLCAyOCwgMTYsIDI0MywgMjIwLCAyNTEsIDIyMSwgCisgICAgMjgsIDE2LCAyMzIsIDEzMCwgMjI1LCAxODAsIDIyMywgNjEsIDI4LCAxNiwgMjMyLCAxMzAsIDIzNiwgNCwgMjIzLCA2MSwgCisgICAgMjgsIDE2LCAyNTEsIDE0NCwgMjIzLCA2MSwgMjgsIDE2LCAyMjAsIDE1NCwgMjIzLCA2MSwgMjgsIDE2LCAyMzAsIDE4NSwgCisgICAgMjIzLCA2MSwgMjgsIDE2LCAyMjAsIDE0OCwgMjIzLCA2MSwgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAKKyAgICAyMjQsIDE3NCwgMjI1LCAxNzksIDI4LCAxNiwgMjE2LCAyNDksIDIyNSwgMTc4LCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgCisgICAgMywgMjgsIDE2LCAyMTYsIDI0OSwgMjI1LCAxNzgsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjI1LCAxODAsIDI0NywgMjExLCAKKyAgICAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgMjI1LCAxNzksIDI4LCAxNiwgMjE2LCAyNDksIAorICAgIDIzNiwgMiwgMjQ5LCAxMDcsIDIyNCwgMTc0LCAyMzYsIDMsIDI4LCAxNiwgMjE2LCAyNDksIDIzNiwgMiwgMjQ5LCAxMDcsIAorICAgIDIyNCwgMTc0LCAyMzYsIDQsIDI0NywgMjExLCAyOCwgMTYsIDIxNiwgMjQ5LCAyMzYsIDIsIDI0OSwgMTA3LCAyMjQsIDE3NCwgCisgICAgMjM2LCA0LCAyNDcsIDIxMCwgMjgsIDE2LCAyMTYsIDI0OSwgMjM2LCAyLCAyNDksIDEwNywgMjI0LCAxNzQsIDIzNiwgNCwgCisgICAgMjQ3LCAyMDksIDI4LCAxNiwgMjQ5LCAxMzMsIDI4LCAxNiwgMjQyLCAxMjYsIDI1MSwgNjcsIDI1MCwgMTQsIDI4LCAxNiwgCisgICAgMjQyLCAxMjYsIDI0NSwgNywgMjUwLCAxNCwgMjgsIDE2LCA0MiwgMjUzLCAxNTgsIDI4LCAxNiwgMjEzLCAxNTEsIDI4LCAKKyAgICAxNiwgMjI1LCAxNCwgMjgsIDE2LCAyNTAsIDUsIDI4LCAxNiwgMjIxLCAyMDMsIDI4LCAxNiwgMjUwLCA5LCAyOCwgMTYsIAorICAgIDIxNiwgNywgMjgsIDE2LCAyMjQsIDI0MiwgMjgsIDE2LCAyMjQsIDI0MywgMjQ0LCA2MCwgMjgsIDE2LCAyMjEsIDIwNCwgCisgICAgMjQ0LCA2MCwgMjgsIDE2LCAyMTYsIDgsIDIyMywgNTgsIDI4LCAxNiwgMjI1LCAxNjMsIDIxOCwgNjYsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyOSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE4LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMDgsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIwMSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTkzLCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAxODcsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE4NiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMTg1LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxODQsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIyOCwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMjI3LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDIyNSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjI0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMjMsIDI2LCAyMTMsIAorICAgIDEzNywgMTg3LCAyMTcsIDIyMiwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjIxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAKKyAgICAyMjAsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxOSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMjE3LCAyNiwgMjEzLCAKKyAgICAxMzcsIDE4NywgMjE3LCAyMTYsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDIxNSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgCisgICAgMjE0LCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAyMTMsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIDE5MiwgMjYsIDIxMywgCisgICAgMTM3LCAxODcsIDIxNywgMTkxLCAyNiwgMjEzLCAxMzcsIDE4NywgMjE3LCAxOTAsIDI2LCAyMTMsIDEzNywgMTg3LCAyMTcsIAorICAgIDE4OSwgMjYsIDIxMywgMTM3LCAxODcsIDIxNywgMTg4LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjksIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIxOCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjAxLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTMsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE4NiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg1LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMjcsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyNiwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjI1LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMjQsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIyMSwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMjIwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDIxNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMTIsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDIxMSwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjEwLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAyMDksIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMjA2LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAyMDUsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwNCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgCisgICAgMjAzLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAyMDIsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDIwMCwgMjYsIDIzNSwgCisgICAgMjE0LCAxODcsIDIxNywgMTk5LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTgsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIAorICAgIDE5NywgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTk2LCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAxOTUsIDI2LCAyMzUsIAorICAgIDIxNCwgMTg3LCAyMTcsIDE5NCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTkyLCAyNiwgMjM1LCAyMTQsIDE4NywgMjE3LCAKKyAgICAxOTEsIDI2LCAyMzUsIDIxNCwgMTg3LCAyMTcsIDE5MCwgMjYsIDIzNSwgMjE0LCAxODcsIDIxNywgMTg5LCAyNiwgMjM1LCAKKyAgICAyMTQsIDE4NywgMjE3LCAxODgsIDM4LCAyNiwgMjgsIDIxNSwgMjA4LCAzOCwgMjYsIDI4LCAyMTYsIDIyMywgMzgsIDI2LCAKKyAgICAyOCwgMjI1LCAxODgsIDI2LCAyOCwgMjMzLCAzMSwgMjMwLCAxNDIsIDMxLCAyNDUsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDEsIAorICAgIDIyMiwgMjQ1LCAyMjMsIDI0NywgMjI0LCAzMSwgMjQwLCAyMTQsIDI0NSwgMjIzLCAyNDcsIDIyNCwgMzEsIDI0NSwgMjIyLCAKKyAgICAyNDEsIDIyMywgMjQ3LCAyMjQsIDMxLCAyNDUsIDIyMiwgMjQwLCAyMTMsIDI0NywgMjI0LCAzMSwgMjQ1LCAyMjMsIDE4MCwgCisgICAgMzEsIDI1MCwgMTc0LCAxODAsIDMxLCAyNDMsIDIyOSwgMjUwLCAzNSwgMTgwLCAzMSwgMjMwLCAxNzcsIDE4MCwgMzEsIAorICAgIDI1MiwgMTMwLCAxODAsIDMxLCAyMzQsIDE3OSwgMjE5LCA3OSwgMTgwLCAzMSwgMjQ5LCAxNzksIDE4MCwgMzEsIDI1MywgCisgICAgMjMzLCAxODAsIDMxLCAyMjYsIDE2MywgMTgwLCAzMSwgMjUxLCAxNTMsIDIyNiwgMTMwLCAxODAsIDMxLCAyNDgsIDczLCAKKyAgICAxNzcsIDI0NywgMTc5LCAxODAsIDMxLCAyNDcsIDE3NiwgMTgwLCAzMSwgMjEwLCAyMjIsIDE4MCwgMzEsIDIzNSwgMjQ3LCAKKyAgICAxODAsIDMxLCAyMjUsIDE5NywgMTgwLCAzMSwgMjIzLCAxMjcsIDE4MCwgMzEsIDI0OSwgMTg5LCAxODAsIDMxLCAyNDEsIAorICAgIDYwLCAyNTIsIDE4NCwgMTgwLCAzMSwgMjEyLCA1OSwgMTgwLCAzMSwgMjQ0LCAzOSwgMTgwLCAzMSwgMjU0LCAyNDYsIDE4MCwgCisgICAgMzEsIDIyMywgODksIDE4MCwgMzEsIDIyMywgNjUsIDE4MCwgMzEsIDI0NSwgMjIxLCAxODAsIDMxLCAyMzUsIDUzLCAxODAsIAorICAgIDMxLCAyNDksIDE4NCwgMTgwLCAzMSwgMjQ1LCAxNDIsIDE4MCwgMzEsIDI0NiwgNTIsIDE4MCwgMzEsIDI1MCwgMTQ1LCAKKyAgICAxODAsIDMxLCAyNDgsIDgyLCAxODAsIDMxLCAyMywgMjIzLCA2NCwgMTgwLCAzMSwgMjI2LCA4MSwgMTgwLCAzMSwgMjMzLCAKKyAgICAzNCwgMTgwLCAzMSwgMjQ5LCAyNTQsIDE4MCwgMzEsIDIzNCwgNzcsIDE4MCwgMzEsIDI0MywgODYsIDE4MCwgMzEsIDIxOCwgCisgICAgMTEyLCAxODAsIDMxLCAyMjQsIDEzMCwgMTgwLCAzMSwgMjQzLCAyMjgsIDE4MCwgMzEsIDIyMywgNjYsIDE4MCwgMzEsIAorICAgIDIzMywgNzEsIDE3NywgMjMwLCAxNTcsIDE4MCwgMzEsIDIyMywgNjIsIDE4MCwgMzEsIDI0MiwgMTY4LCAyMTYsIDQyLCAKKyAgICAyMzEsIDc2LCAxODAsIDMxLCAyNDUsIDE0NCwgMTgwLCAzMSwgMjE4LCAxMjQsIDE4MCwgMzEsIDI0MiwgMTI4LCAxODAsIAorICAgIDMxLCAyNDUsIDEzNiwgMTgwLCAzMSwgMjI1LCAyMzUsIDE4MCwgMzEsIDIyMiwgMjI1LCAxODAsIDMxLCAyNDQsIDU5LCAKKyAgICAxODAsIDMxLCAyMTQsIDgsIDE3NywgMjEyLCA0NCwgMTgwLCAzMSwgMjQ5LCAxOTMsIDE4MCwgMzEsIDIzMSwgODksIDE4MCwgCisgICAgMzEsIDI0NSwgNjEsIDE4MCwgMzEsIDIxNCwgMTcyLCAxODAsIDMxLCAyNDcsIDIxMiwgMTgwLCAzMSwgMjUwLCAwLCAyMzAsIAorICAgIDExMCwgMTgwLCAzMSwgMjQyLCAxMDYsIDE4MCwgMzEsIDI0MywgODcsIDIzNSwgMjU1LCAxODAsIDMxLCAyMzEsIDE0MSwgCisgICAgMTgwLCAzMSwgMjU1LCAxMCwgMTgwLCAzMSwgMjQ1LCAxNTcsIDE4MCwgMzEsIDI0NiwgMTA5LCAxODAsIDMxLCAyMTIsIDQyLCAKKyAgICAxODAsIDMxLCAyMTksIDE1MCwgMTgwLCAzMSwgMjM1LCAyMjIsIDE4MCwgMzEsIDI0OCwgNDIsIDE4MCwgMzEsIDI0OCwgCisgICAgMTYwLCAxODAsIDMxLCAyNDcsIDIwOCwgMTgwLCAzMSwgMjQ1LCAyOSwgMTgwLCAzMSwgMjIwLCAxMTUsIDE4MCwgMzEsIAorICAgIDIxOCwgMTI4LCAxODAsIDMxLCAyNDIsIDIsIDE4MCwgMzEsIDI0OSwgMjEyLCAxODAsIDMxLCAyNDksIDI1MSwgMTgwLCAzMSwgCisgICAgMjQ0LCAxNzcsIDE4MCwgMzEsIDI1NCwgMjEyLCAxODAsIDMxLCAyNDksIDIxMSwgMTgwLCAzMSwgMjI2LCAxOTcsIDIxNiwgCisgICAgMTk2LCAyMTMsIDI0MiwgMTgwLCAzMSwgMjQ3LCAyMzIsIDE4MCwgMzEsIDIzMywgMTI0LCAxODAsIDMxLCAyNDQsIDEzLCAKKyAgICAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTEwLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgCisgICAgMTA1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTU4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAKKyAgICAyMSwgMTYxLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTg5LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgCisgICAgMTc0LCAyMSwgMTk0LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMTk4LCAyNDksIDE0OSwgMjIyLCAyMDIsIAorICAgIDIxNCwgMTc0LCAyMSwgMTk1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNCwgMTc0LCAyMSwgMjAwLCAyNDksIDE0OSwgMjIyLCAKKyAgICAyMDIsIDIxNiwgMjQzLCAyMSwgMTEwLCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTA1LCAyNDksIDE0OSwgCisgICAgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTU4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTYxLCAyNDksIAorICAgIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTg5LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTk0LCAKKyAgICAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMTk4LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgCisgICAgMTk1LCAyNDksIDE0OSwgMjIyLCAyMDIsIDIxNiwgMjQzLCAyMSwgMjAwLCAxMSwgMjMsIDYsIDYxLCAxMSwgMjMsIDYsIAorICAgIDI1MywgMTU4LCAxMSwgMjMsIDYsIDI1MSwgNjYsIDExLCAyMywgNiwgMjQ5LCA2MCwgMTEsIDIzLCA2LCA3NSwgMTEsIDIzLCAKKyAgICA2LCAyNDUsIDYsIDExLCAyMywgNiwgMjQzLCAyMDIsIDExLCAyMywgNiwgMjQyLCA2MCwgMTEsIDIzLCA2LCA3MywgMTEsIAorICAgIDIzLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCA2LCAyMzUsIDIzLCAxMSwgMjMsIDYsIDE1NiwgMTEsIDIzLCA2LCAxOTMsIDExLCAKKyAgICAyMywgNiwgMjMwLCAyNSwgMTEsIDIzLCA2LCA3NiwgMTEsIDIzLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCA2LCAyMjQsIDk2LCAKKyAgICAxMSwgMjMsIDYsIDE1MywgMTEsIDIzLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDYsIDIxNywgMTUyLCAxMSwgMjMsIDYsIDcwLCAKKyAgICAxMSwgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDYsIDIxMiwgOTgsIDExLCAyMywgNiwgMjExLCAxNzgsIDExLCAyMywgNiwgCisgICAgMjExLCAxMTcsIDExLCAyMywgNiwgMjEwLCAxNTksIDExLCAyMywgNCwgNjEsIDExLCAyMywgNCwgMjUzLCAxNTgsIDExLCAKKyAgICAyMywgNCwgMjUxLCA2NiwgMTEsIDIzLCA0LCAyNDksIDYwLCAxMSwgMjMsIDQsIDc1LCAxMSwgMjMsIDQsIDI0NSwgNiwgMTEsIAorICAgIDIzLCA0LCAyNDMsIDIwMiwgMTEsIDIzLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDQsIDczLCAxMSwgMjMsIDQsIDIzNSwgMTQ0LCAKKyAgICAxMSwgMjMsIDQsIDIzNSwgMjMsIDExLCAyMywgNCwgMTU2LCAxMSwgMjMsIDQsIDE5MywgMTEsIDIzLCA0LCAyMzAsIDI1LCAKKyAgICAxMSwgMjMsIDQsIDc2LCAxMSwgMjMsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDQsIDIyNCwgOTYsIDExLCAyMywgNCwgMTUzLCAKKyAgICAxMSwgMjMsIDQsIDIyMiwgOTEsIDExLCAyMywgNCwgMjE3LCAxNTIsIDExLCAyMywgNCwgNzAsIDExLCAyMywgNCwgMjE0LCAKKyAgICAxMDUsIDExLCAyMywgNCwgMjEyLCA5OCwgMTEsIDIzLCA0LCAyMTEsIDE3OCwgMTEsIDIzLCA0LCAyMTEsIDExNywgMTEsIAorICAgIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDMyLCA2LCA2MSwgMTEsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDMyLCA2LCAyNTEsIDY2LCAKKyAgICAxMSwgMzIsIDYsIDI0OSwgNjAsIDExLCAzMiwgNiwgNzUsIDExLCAzMiwgNiwgMjQ1LCA2LCAxMSwgMzIsIDYsIDI0MywgCisgICAgMjAyLCAxMSwgMzIsIDYsIDI0MiwgNjAsIDExLCAzMiwgNiwgNzMsIDExLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAzMiwgNiwgCisgICAgMjM1LCAyMywgMTEsIDMyLCA2LCAxNTYsIDExLCAzMiwgNiwgMTkzLCAxMSwgMzIsIDYsIDIzMCwgMjUsIDExLCAzMiwgNiwgCisgICAgNzYsIDExLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDMyLCA2LCAxNTMsIDExLCAzMiwgNiwgCisgICAgMjIyLCA5MSwgMTEsIDMyLCA2LCAyMTcsIDE1MiwgMTEsIDMyLCA2LCA3MCwgMTEsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDMyLCAKKyAgICA2LCAyMTIsIDk4LCAxMSwgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMzIsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzIsIDQsIDYxLCAxMSwgMzIsIDQsIDI1MywgMTU4LCAxMSwgMzIsIDQsIDI1MSwgNjYsIDExLCAzMiwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDMyLCA0LCA3NSwgMTEsIDMyLCA0LCAyNDUsIDYsIDExLCAzMiwgNCwgMjQzLCAyMDIsIDExLCAzMiwgCisgICAgNCwgNzMsIDExLCAzMiwgNCwgMjM1LCAxNDQsIDExLCAzMiwgNCwgMjM1LCAyMywgMTEsIDMyLCA0LCAxNTYsIDExLCAzMiwgCisgICAgNCwgMTkzLCAxMSwgMzIsIDQsIDIzMCwgMjUsIDExLCAzMiwgNCwgNzYsIDExLCAzMiwgNCwgMjI2LCAxMDUsIDExLCAzMiwgCisgICAgNCwgMjI0LCA5NiwgMTEsIDMyLCA0LCAxNTMsIDExLCAzMiwgNCwgMjIyLCA5MSwgMTEsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIAorICAgIDMyLCA0LCA3MCwgMTEsIDMyLCA0LCAyMTQsIDEwNSwgMTEsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzIsIDQsIDIxMSwgMTc4LCAKKyAgICAxMSwgMzIsIDQsIDIxMSwgMTE3LCAxMSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMjMsIDMyLCA2LCA2MSwgMTEsIDIzLCAzMiwgCisgICAgNiwgMjUzLCAxNTgsIDExLCAyMywgMzIsIDYsIDI1MSwgNjYsIDExLCAyMywgMzIsIDYsIDI0OSwgNjAsIDExLCAyMywgMzIsIAorICAgIDYsIDc1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIDYsIDExLCAyMywgMzIsIDYsIDI0MywgMjAyLCAxMSwgMjMsIDMyLCA2LCAKKyAgICAyNDIsIDYwLCAxMSwgMjMsIDMyLCA2LCA3MywgMTEsIDIzLCAzMiwgNiwgMjM1LCAxNDQsIDExLCAyMywgMzIsIDYsIDIzNSwgCisgICAgMjMsIDExLCAyMywgMzIsIDYsIDE1NiwgMTEsIDIzLCAzMiwgNiwgMTkzLCAxMSwgMjMsIDMyLCA2LCAyMzAsIDI1LCAxMSwgCisgICAgMjMsIDMyLCA2LCA3NiwgMTEsIDIzLCAzMiwgNiwgMjI2LCAxMDUsIDExLCAyMywgMzIsIDYsIDIyNCwgOTYsIDExLCAyMywgCisgICAgMzIsIDYsIDE1MywgMTEsIDIzLCAzMiwgNiwgMjIyLCA5MSwgMTEsIDIzLCAzMiwgNiwgMjE3LCAxNTIsIDExLCAyMywgMzIsIAorICAgIDYsIDcwLCAxMSwgMjMsIDMyLCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAzMiwgNiwgMjEyLCA5OCwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjExLCAxNzgsIDExLCAyMywgMzIsIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDMyLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAzMiwgCisgICAgNCwgNjEsIDExLCAyMywgMzIsIDQsIDI1MywgMTU4LCAxMSwgMjMsIDMyLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyNDksIDYwLCAxMSwgMjMsIDMyLCA0LCA3NSwgMTEsIDIzLCAzMiwgNCwgMjQ1LCA2LCAxMSwgMjMsIDMyLCA0LCAyNDMsIAorICAgIDIwMiwgMTEsIDIzLCAzMiwgNCwgMjQyLCA2MCwgMTEsIDIzLCAzMiwgNCwgNzMsIDExLCAyMywgMzIsIDQsIDIzNSwgMTQ0LCAKKyAgICAxMSwgMjMsIDMyLCA0LCAyMzUsIDIzLCAxMSwgMjMsIDMyLCA0LCAxNTYsIDExLCAyMywgMzIsIDQsIDE5MywgMTEsIDIzLCAKKyAgICAzMiwgNCwgMjMwLCAyNSwgMTEsIDIzLCAzMiwgNCwgNzYsIDExLCAyMywgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMjMsIDMyLCAKKyAgICA0LCAyMjQsIDk2LCAxMSwgMjMsIDMyLCA0LCAxNTMsIDExLCAyMywgMzIsIDQsIDIyMiwgOTEsIDExLCAyMywgMzIsIDQsIAorICAgIDIxNywgMTUyLCAxMSwgMjMsIDMyLCA0LCA3MCwgMTEsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAyMywgMzIsIDQsIDIxMiwgCisgICAgOTgsIDExLCAyMywgMzIsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDMyLCA0LCAyMTEsIDExNywgMTEsIDIzLCAzMiwgNCwgMjEwLCAKKyAgICAxNTksIDExLCAxMTksIDYsIDYxLCAxMSwgMTE5LCA2LCAyNTEsIDY2LCAxMSwgMTE5LCA2LCAyNDksIDYwLCAxMSwgMTE5LCAKKyAgICA2LCAyNDMsIDIwMiwgMTEsIDExOSwgNiwgMjM1LCAxNDQsIDExLCAxMTksIDYsIDIzNSwgMjMsIDExLCAxMTksIDYsIDIzMCwgCisgICAgMjUsIDExLCAxMTksIDYsIDc2LCAxMSwgMTE5LCA2LCAyMjYsIDEwNSwgMTEsIDExOSwgNiwgMjI0LCA5NiwgMTEsIDExOSwgCisgICAgNiwgMjIyLCA5MSwgMTEsIDExOSwgNiwgMjE3LCAxNTIsIDExLCAxMTksIDYsIDcwLCAxMSwgMTE5LCA2LCAyMTQsIDEwNSwgCisgICAgMTEsIDExOSwgNiwgMjEyLCA5OCwgMTEsIDExOSwgNiwgMjExLCAxNzgsIDExLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMTE5LCAKKyAgICA2LCAyMTAsIDE1OSwgMTEsIDExOSwgNCwgNjEsIDExLCAxMTksIDQsIDI1MywgMTU4LCAxMSwgMTE5LCA0LCAyNTEsIDY2LCAKKyAgICAxMSwgMTE5LCA0LCAyNDksIDYwLCAxMSwgMTE5LCA0LCAyNDUsIDYsIDExLCAxMTksIDQsIDI0MiwgNjAsIDExLCAxMTksIDQsIAorICAgIDczLCAxMSwgMTE5LCA0LCAyMzUsIDE0NCwgMTEsIDExOSwgNCwgMjM1LCAyMywgMTEsIDExOSwgNCwgMTU2LCAxMSwgMTE5LCAKKyAgICA0LCAxOTMsIDExLCAxMTksIDQsIDIzMCwgMjUsIDExLCAxMTksIDQsIDIyNiwgMTA1LCAxMSwgMTE5LCA0LCAyMjQsIDk2LCAKKyAgICAxMSwgMTE5LCA0LCAxNTMsIDExLCAxMTksIDQsIDIyMiwgOTEsIDExLCAxMTksIDQsIDIxNywgMTUyLCAxMSwgMTE5LCA0LCAKKyAgICA3MCwgMTEsIDExOSwgNCwgMjE0LCAxMDUsIDExLCAxMTksIDQsIDIxMiwgOTgsIDExLCAxMTksIDQsIDIxMSwgMTc4LCAxMSwgCisgICAgMTE5LCA0LCAyMTEsIDExNywgMTEsIDExOSwgNCwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA2LCA2MSwgMTEsIDIzLCAxMTksIAorICAgIDYsIDI1MywgMTU4LCAxMSwgMjMsIDExOSwgNiwgMjUxLCA2NiwgMTEsIDIzLCAxMTksIDYsIDI0OSwgNjAsIDExLCAyMywgCisgICAgMTE5LCA2LCA3NSwgMTEsIDIzLCAxMTksIDYsIDI0NSwgNiwgMTEsIDIzLCAxMTksIDYsIDI0MywgMjAyLCAxMSwgMjMsIAorICAgIDExOSwgNiwgMjQyLCA2MCwgMTEsIDIzLCAxMTksIDYsIDczLCAxMSwgMjMsIDExOSwgNiwgMjM1LCAxNDQsIDExLCAyMywgCisgICAgMTE5LCA2LCAyMzUsIDIzLCAxMSwgMjMsIDExOSwgNiwgMTU2LCAxMSwgMjMsIDExOSwgNiwgMTkzLCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjMwLCAyNSwgMTEsIDIzLCAxMTksIDYsIDc2LCAxMSwgMjMsIDExOSwgNiwgMjI2LCAxMDUsIDExLCAyMywgMTE5LCA2LCAKKyAgICAyMjQsIDk2LCAxMSwgMjMsIDExOSwgNiwgMTUzLCAxMSwgMjMsIDExOSwgNiwgMjIyLCA5MSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIxNywgMTUyLCAxMSwgMjMsIDExOSwgNiwgNzAsIDExLCAyMywgMTE5LCA2LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDYsIAorICAgIDIxMiwgOTgsIDExLCAyMywgMTE5LCA2LCAyMTEsIDE3OCwgMTEsIDIzLCAxMTksIDYsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgCisgICAgNiwgMjEwLCAxNTksIDExLCAyMywgMTE5LCA0LCA2MSwgMTEsIDIzLCAxMTksIDQsIDI1MywgMTU4LCAxMSwgMjMsIDExOSwgCisgICAgNCwgMjUxLCA2NiwgMTEsIDIzLCAxMTksIDQsIDI0OSwgNjAsIDExLCAyMywgMTE5LCA0LCA3NSwgMTEsIDIzLCAxMTksIDQsIAorICAgIDI0NSwgNiwgMTEsIDIzLCAxMTksIDQsIDI0MywgMjAyLCAxMSwgMjMsIDExOSwgNCwgMjQyLCA2MCwgMTEsIDIzLCAxMTksIAorICAgIDQsIDczLCAxMSwgMjMsIDExOSwgNCwgMjM1LCAxNDQsIDExLCAyMywgMTE5LCA0LCAyMzUsIDIzLCAxMSwgMjMsIDExOSwgNCwgCisgICAgMTU2LCAxMSwgMjMsIDExOSwgNCwgMTkzLCAxMSwgMjMsIDExOSwgNCwgMjMwLCAyNSwgMTEsIDIzLCAxMTksIDQsIDc2LCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjI2LCAxMDUsIDExLCAyMywgMTE5LCA0LCAyMjQsIDk2LCAxMSwgMjMsIDExOSwgNCwgMTUzLCAKKyAgICAxMSwgMjMsIDExOSwgNCwgMjIyLCA5MSwgMTEsIDIzLCAxMTksIDQsIDIxNywgMTUyLCAxMSwgMjMsIDExOSwgNCwgNzAsIAorICAgIDExLCAyMywgMTE5LCA0LCAyMTQsIDEwNSwgMTEsIDIzLCAxMTksIDQsIDIxMiwgOTgsIDExLCAyMywgMTE5LCA0LCAyMTEsIAorICAgIDE3OCwgMTEsIDIzLCAxMTksIDQsIDIxMSwgMTE3LCAxMSwgMjMsIDExOSwgNCwgMjEwLCAxNTksIDExLCAxMzMsIDYsIDYxLCAKKyAgICAxMSwgMTMzLCA2LCAyNTMsIDE1OCwgMTEsIDEzMywgNiwgMjQ5LCA2MCwgMTEsIDEzMywgNiwgNzUsIDExLCAxMzMsIDYsIAorICAgIDI0NSwgNiwgMTEsIDEzMywgNiwgMjQzLCAyMDIsIDExLCAxMzMsIDYsIDIzNSwgMTQ0LCAxMSwgMTMzLCA2LCAyMzUsIDIzLCAKKyAgICAxMSwgMTMzLCA2LCAxNTYsIDExLCAxMzMsIDYsIDE5MywgMTEsIDEzMywgNiwgMjMwLCAyNSwgMTEsIDEzMywgNiwgNzYsIAorICAgIDExLCAxMzMsIDYsIDIyNiwgMTA1LCAxMSwgMTMzLCA2LCAyMjQsIDk2LCAxMSwgMTMzLCA2LCAyMjIsIDkxLCAxMSwgMTMzLCAKKyAgICA2LCAyMTcsIDE1MiwgMTEsIDEzMywgNiwgNzAsIDExLCAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMTMzLCA2LCAyMTIsIDk4LCAKKyAgICAxMSwgMTMzLCA2LCAyMTEsIDE3OCwgMTEsIDEzMywgNiwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDYxLCAxMSwgMTMzLCA0LCAKKyAgICAyNTMsIDE1OCwgMTEsIDEzMywgNCwgMjUxLCA2NiwgMTEsIDEzMywgNCwgMjQ5LCA2MCwgMTEsIDEzMywgNCwgNzUsIDExLCAKKyAgICAxMzMsIDQsIDI0NSwgNiwgMTEsIDEzMywgNCwgMjQzLCAyMDIsIDExLCAxMzMsIDQsIDI0MiwgNjAsIDExLCAxMzMsIDQsIAorICAgIDczLCAxMSwgMTMzLCA0LCAyMzUsIDE0NCwgMTEsIDEzMywgNCwgMjM1LCAyMywgMTEsIDEzMywgNCwgMTU2LCAxMSwgMTMzLCAKKyAgICA0LCAxOTMsIDExLCAxMzMsIDQsIDIzMCwgMjUsIDExLCAxMzMsIDQsIDc2LCAxMSwgMTMzLCA0LCAyMjYsIDEwNSwgMTEsIAorICAgIDEzMywgNCwgMjI0LCA5NiwgMTEsIDEzMywgNCwgMTUzLCAxMSwgMTMzLCA0LCAyMjIsIDkxLCAxMSwgMTMzLCA0LCAyMTcsIAorICAgIDE1MiwgMTEsIDEzMywgNCwgNzAsIDExLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMTMzLCA0LCAyMTIsIDk4LCAxMSwgMTMzLCAKKyAgICA0LCAyMTEsIDE3OCwgMTEsIDEzMywgNCwgMjExLCAxMTcsIDExLCAxMzMsIDQsIDIxMCwgMTU5LCAxMSwgMTM5LCA2LCA2MSwgCisgICAgMTEsIDEzOSwgNiwgMjUzLCAxNTgsIDExLCAxMzksIDYsIDI0OSwgNjAsIDExLCAxMzksIDYsIDc1LCAxMSwgMTM5LCA2LCAKKyAgICAyNDUsIDYsIDExLCAxMzksIDYsIDI0MywgMjAyLCAxMSwgMTM5LCA2LCA3MywgMTEsIDEzOSwgNiwgMjM1LCAxNDQsIDExLCAKKyAgICAxMzksIDYsIDIzNSwgMjMsIDExLCAxMzksIDYsIDE1NiwgMTEsIDEzOSwgNiwgMTkzLCAxMSwgMTM5LCA2LCA3NiwgMTEsIAorICAgIDEzOSwgNiwgMjIyLCA5MSwgMTEsIDEzOSwgNiwgMjE3LCAxNTIsIDExLCAxMzksIDYsIDcwLCAxMSwgMTM5LCA2LCAyMTQsIAorICAgIDEwNSwgMTEsIDEzOSwgNiwgMjEyLCA5OCwgMTEsIDEzOSwgNiwgMjExLCAxNzgsIDExLCAxMzksIDYsIDIxMSwgMTE3LCAxMSwgCisgICAgMTM5LCA0LCA2MSwgMTEsIDEzOSwgNCwgMjUzLCAxNTgsIDExLCAxMzksIDQsIDI1MSwgNjYsIDExLCAxMzksIDQsIDI0OSwgCisgICAgNjAsIDExLCAxMzksIDQsIDc1LCAxMSwgMTM5LCA0LCAyNDUsIDYsIDExLCAxMzksIDQsIDI0MywgMjAyLCAxMSwgMTM5LCA0LCAKKyAgICAyNDIsIDYwLCAxMSwgMTM5LCA0LCA3MywgMTEsIDEzOSwgNCwgMjM1LCAxNDQsIDExLCAxMzksIDQsIDIzNSwgMjMsIDExLCAKKyAgICAxMzksIDQsIDE1NiwgMTEsIDEzOSwgNCwgMTkzLCAxMSwgMTM5LCA0LCAyMzAsIDI1LCAxMSwgMTM5LCA0LCA3NiwgMTEsIAorICAgIDEzOSwgNCwgMjI2LCAxMDUsIDExLCAxMzksIDQsIDIyNCwgOTYsIDExLCAxMzksIDQsIDE1MywgMTEsIDEzOSwgNCwgMjIyLCAKKyAgICA5MSwgMTEsIDEzOSwgNCwgMjE3LCAxNTIsIDExLCAxMzksIDQsIDcwLCAxMSwgMTM5LCA0LCAyMTQsIDEwNSwgMTEsIDEzOSwgCisgICAgNCwgMjEyLCA5OCwgMTEsIDEzOSwgNCwgMjExLCAxNzgsIDExLCAxMzksIDQsIDIxMSwgMTE3LCAxMSwgMTM5LCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDIzLCAxMzMsIDYsIDYxLCAxMSwgMjMsIDEzMywgNiwgMjUzLCAxNTgsIDExLCAyMywgMTMzLCA2LCAyNTEsIAorICAgIDY2LCAxMSwgMjMsIDEzMywgNiwgMjQ5LCA2MCwgMTEsIDIzLCAxMzMsIDYsIDc1LCAxMSwgMjMsIDEzMywgNiwgMjQ1LCA2LCAKKyAgICAxMSwgMjMsIDEzMywgNiwgMjQzLCAyMDIsIDExLCAyMywgMTMzLCA2LCAyNDIsIDYwLCAxMSwgMjMsIDEzMywgNiwgNzMsIAorICAgIDExLCAyMywgMTMzLCA2LCAyMzUsIDE0NCwgMTEsIDIzLCAxMzMsIDYsIDIzNSwgMjMsIDExLCAyMywgMTMzLCA2LCAxNTYsIAorICAgIDExLCAyMywgMTMzLCA2LCAxOTMsIDExLCAyMywgMTMzLCA2LCAyMzAsIDI1LCAxMSwgMjMsIDEzMywgNiwgNzYsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMjYsIDEwNSwgMTEsIDIzLCAxMzMsIDYsIDIyNCwgOTYsIDExLCAyMywgMTMzLCA2LCAxNTMsIDExLCAyMywgCisgICAgMTMzLCA2LCAyMjIsIDkxLCAxMSwgMjMsIDEzMywgNiwgMjE3LCAxNTIsIDExLCAyMywgMTMzLCA2LCA3MCwgMTEsIDIzLCAKKyAgICAxMzMsIDYsIDIxNCwgMTA1LCAxMSwgMjMsIDEzMywgNiwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDYsIDIxMSwgMTc4LCAxMSwgCisgICAgMjMsIDEzMywgNiwgMjExLCAxMTcsIDExLCAyMywgMTMzLCA2LCAyMTAsIDE1OSwgMTEsIDIzLCAxMzMsIDQsIDYxLCAxMSwgCisgICAgMjMsIDEzMywgNCwgMjUzLCAxNTgsIDExLCAyMywgMTMzLCA0LCAyNTEsIDY2LCAxMSwgMjMsIDEzMywgNCwgMjQ5LCA2MCwgCisgICAgMTEsIDIzLCAxMzMsIDQsIDc1LCAxMSwgMjMsIDEzMywgNCwgMjQ1LCA2LCAxMSwgMjMsIDEzMywgNCwgMjQzLCAyMDIsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyNDIsIDYwLCAxMSwgMjMsIDEzMywgNCwgNzMsIDExLCAyMywgMTMzLCA0LCAyMzUsIDE0NCwgMTEsIAorICAgIDIzLCAxMzMsIDQsIDIzNSwgMjMsIDExLCAyMywgMTMzLCA0LCAxNTYsIDExLCAyMywgMTMzLCA0LCAxOTMsIDExLCAyMywgCisgICAgMTMzLCA0LCAyMzAsIDI1LCAxMSwgMjMsIDEzMywgNCwgNzYsIDExLCAyMywgMTMzLCA0LCAyMjYsIDEwNSwgMTEsIDIzLCAKKyAgICAxMzMsIDQsIDIyNCwgOTYsIDExLCAyMywgMTMzLCA0LCAxNTMsIDExLCAyMywgMTMzLCA0LCAyMjIsIDkxLCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjE3LCAxNTIsIDExLCAyMywgMTMzLCA0LCA3MCwgMTEsIDIzLCAxMzMsIDQsIDIxNCwgMTA1LCAxMSwgMjMsIAorICAgIDEzMywgNCwgMjEyLCA5OCwgMTEsIDIzLCAxMzMsIDQsIDIxMSwgMTc4LCAxMSwgMjMsIDEzMywgNCwgMjExLCAxMTcsIDExLCAKKyAgICAyMywgMTMzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCA2LCA2MSwgMTEsIDM1LCA2LCAyNTMsIDE1OCwgMTEsIDM1LCA2LCAyNTEsIAorICAgIDY2LCAxMSwgMzUsIDYsIDI0OSwgNjAsIDExLCAzNSwgNiwgNzUsIDExLCAzNSwgNiwgMjQ1LCA2LCAxMSwgMzUsIDYsIDI0MywgCisgICAgMjAyLCAxMSwgMzUsIDYsIDI0MiwgNjAsIDExLCAzNSwgNiwgNzMsIDExLCAzNSwgNiwgMjM1LCAxNDQsIDExLCAzNSwgNiwgCisgICAgMjM1LCAyMywgMTEsIDM1LCA2LCAxNTYsIDExLCAzNSwgNiwgMTkzLCAxMSwgMzUsIDYsIDIzMCwgMjUsIDExLCAzNSwgNiwgCisgICAgNzYsIDExLCAzNSwgNiwgMjI2LCAxMDUsIDExLCAzNSwgNiwgMjI0LCA5NiwgMTEsIDM1LCA2LCAxNTMsIDExLCAzNSwgNiwgCisgICAgMjIyLCA5MSwgMTEsIDM1LCA2LCAyMTcsIDE1MiwgMTEsIDM1LCA2LCA3MCwgMTEsIDM1LCA2LCAyMTQsIDEwNSwgMTEsIDM1LCAKKyAgICA2LCAyMTIsIDk4LCAxMSwgMzUsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDYsIDIxMSwgMTE3LCAxMSwgMzUsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzUsIDQsIDYxLCAxMSwgMzUsIDQsIDI1MywgMTU4LCAxMSwgMzUsIDQsIDI1MSwgNjYsIDExLCAzNSwgNCwgCisgICAgMjQ5LCA2MCwgMTEsIDM1LCA0LCA3NSwgMTEsIDM1LCA0LCAyNDUsIDYsIDExLCAzNSwgNCwgMjQzLCAyMDIsIDExLCAzNSwgCisgICAgNCwgMjQyLCA2MCwgMTEsIDM1LCA0LCA3MywgMTEsIDM1LCA0LCAyMzUsIDE0NCwgMTEsIDM1LCA0LCAyMzUsIDIzLCAxMSwgCisgICAgMzUsIDQsIDE1NiwgMTEsIDM1LCA0LCAxOTMsIDExLCAzNSwgNCwgMjMwLCAyNSwgMTEsIDM1LCA0LCA3NiwgMTEsIDM1LCA0LCAKKyAgICAyMjYsIDEwNSwgMTEsIDM1LCA0LCAyMjQsIDk2LCAxMSwgMzUsIDQsIDE1MywgMTEsIDM1LCA0LCAyMjIsIDkxLCAxMSwgMzUsIAorICAgIDQsIDIxNywgMTUyLCAxMSwgMzUsIDQsIDcwLCAxMSwgMzUsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDQsIDIxMiwgOTgsIDExLCAKKyAgICAzNSwgNCwgMjExLCAxNzgsIDExLCAzNSwgNCwgMjExLCAxMTcsIDExLCAzNSwgNCwgMjEwLCAxNTksIDExLCAzNSwgMjMsIDYsIAorICAgIDYxLCAxMSwgMzUsIDIzLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgNiwgMjUxLCA2NiwgMTEsIDM1LCAyMywgNiwgMjQ5LCAKKyAgICA2MCwgMTEsIDM1LCAyMywgNiwgNzUsIDExLCAzNSwgMjMsIDYsIDI0NSwgNiwgMTEsIDM1LCAyMywgNiwgMjQzLCAyMDIsIAorICAgIDExLCAzNSwgMjMsIDYsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDYsIDczLCAxMSwgMzUsIDIzLCA2LCAyMzUsIDE0NCwgMTEsIAorICAgIDM1LCAyMywgNiwgMjM1LCAyMywgMTEsIDM1LCAyMywgNiwgMTU2LCAxMSwgMzUsIDIzLCA2LCAxOTMsIDExLCAzNSwgMjMsIAorICAgIDYsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDYsIDc2LCAxMSwgMzUsIDIzLCA2LCAyMjYsIDEwNSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjI0LCA5NiwgMTEsIDM1LCAyMywgNiwgMTUzLCAxMSwgMzUsIDIzLCA2LCAyMjIsIDkxLCAxMSwgMzUsIDIzLCA2LCAyMTcsIAorICAgIDE1MiwgMTEsIDM1LCAyMywgNiwgNzAsIDExLCAzNSwgMjMsIDYsIDIxNCwgMTA1LCAxMSwgMzUsIDIzLCA2LCAyMTIsIDk4LCAKKyAgICAxMSwgMzUsIDIzLCA2LCAyMTEsIDE3OCwgMTEsIDM1LCAyMywgNiwgMjExLCAxMTcsIDExLCAzNSwgMjMsIDYsIDIxMCwgCisgICAgMTU5LCAxMSwgMzUsIDIzLCA0LCA2MSwgMTEsIDM1LCAyMywgNCwgMjUzLCAxNTgsIDExLCAzNSwgMjMsIDQsIDI1MSwgNjYsIAorICAgIDExLCAzNSwgMjMsIDQsIDI0OSwgNjAsIDExLCAzNSwgMjMsIDQsIDc1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDYsIDExLCAzNSwgCisgICAgMjMsIDQsIDI0MywgMjAyLCAxMSwgMzUsIDIzLCA0LCAyNDIsIDYwLCAxMSwgMzUsIDIzLCA0LCA3MywgMTEsIDM1LCAyMywgCisgICAgNCwgMjM1LCAxNDQsIDExLCAzNSwgMjMsIDQsIDIzNSwgMjMsIDExLCAzNSwgMjMsIDQsIDE1NiwgMTEsIDM1LCAyMywgNCwgCisgICAgMTkzLCAxMSwgMzUsIDIzLCA0LCAyMzAsIDI1LCAxMSwgMzUsIDIzLCA0LCA3NiwgMTEsIDM1LCAyMywgNCwgMjI2LCAxMDUsIAorICAgIDExLCAzNSwgMjMsIDQsIDIyNCwgOTYsIDExLCAzNSwgMjMsIDQsIDE1MywgMTEsIDM1LCAyMywgNCwgMjIyLCA5MSwgMTEsIAorICAgIDM1LCAyMywgNCwgMjE3LCAxNTIsIDExLCAzNSwgMjMsIDQsIDcwLCAxMSwgMzUsIDIzLCA0LCAyMTQsIDEwNSwgMTEsIDM1LCAKKyAgICAyMywgNCwgMjEyLCA5OCwgMTEsIDM1LCAyMywgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDQsIDIxMSwgMTE3LCAxMSwgMzUsIAorICAgIDIzLCA0LCAyMTAsIDE1OSwgMTEsIDM1LCAzMiwgNiwgNjEsIDExLCAzNSwgMzIsIDYsIDI1MywgMTU4LCAxMSwgMzUsIDMyLCAKKyAgICA2LCAyNTEsIDY2LCAxMSwgMzUsIDMyLCA2LCAyNDksIDYwLCAxMSwgMzUsIDMyLCA2LCA3NSwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjQ1LCA2LCAxMSwgMzUsIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDM1LCAzMiwgNiwgMjQyLCA2MCwgMTEsIDM1LCAzMiwgNiwgCisgICAgNzMsIDExLCAzNSwgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDMyLCA2LCAyMzUsIDIzLCAxMSwgMzUsIDMyLCA2LCAxNTYsIAorICAgIDExLCAzNSwgMzIsIDYsIDE5MywgMTEsIDM1LCAzMiwgNiwgMjMwLCAyNSwgMTEsIDM1LCAzMiwgNiwgNzYsIDExLCAzNSwgCisgICAgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDMyLCA2LCAyMjQsIDk2LCAxMSwgMzUsIDMyLCA2LCAxNTMsIDExLCAzNSwgMzIsIAorICAgIDYsIDIyMiwgOTEsIDExLCAzNSwgMzIsIDYsIDIxNywgMTUyLCAxMSwgMzUsIDMyLCA2LCA3MCwgMTEsIDM1LCAzMiwgNiwgCisgICAgMjE0LCAxMDUsIDExLCAzNSwgMzIsIDYsIDIxMiwgOTgsIDExLCAzNSwgMzIsIDYsIDIxMSwgMTc4LCAxMSwgMzUsIDMyLCA2LCAKKyAgICAyMTEsIDExNywgMTEsIDM1LCAzMiwgNiwgMjEwLCAxNTksIDExLCAzNSwgMzIsIDQsIDYxLCAxMSwgMzUsIDMyLCA0LCAyNTMsIAorICAgIDE1OCwgMTEsIDM1LCAzMiwgNCwgMjUxLCA2NiwgMTEsIDM1LCAzMiwgNCwgMjQ5LCA2MCwgMTEsIDM1LCAzMiwgNCwgNzUsIAorICAgIDExLCAzNSwgMzIsIDQsIDI0NSwgNiwgMTEsIDM1LCAzMiwgNCwgMjQzLCAyMDIsIDExLCAzNSwgMzIsIDQsIDI0MiwgNjAsIAorICAgIDExLCAzNSwgMzIsIDQsIDczLCAxMSwgMzUsIDMyLCA0LCAyMzUsIDE0NCwgMTEsIDM1LCAzMiwgNCwgMjM1LCAyMywgMTEsIAorICAgIDM1LCAzMiwgNCwgMTU2LCAxMSwgMzUsIDMyLCA0LCAxOTMsIDExLCAzNSwgMzIsIDQsIDIzMCwgMjUsIDExLCAzNSwgMzIsIAorICAgIDQsIDc2LCAxMSwgMzUsIDMyLCA0LCAyMjYsIDEwNSwgMTEsIDM1LCAzMiwgNCwgMjI0LCA5NiwgMTEsIDM1LCAzMiwgNCwgCisgICAgMTUzLCAxMSwgMzUsIDMyLCA0LCAyMjIsIDkxLCAxMSwgMzUsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAzMiwgNCwgNzAsIAorICAgIDExLCAzNSwgMzIsIDQsIDIxNCwgMTA1LCAxMSwgMzUsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDMyLCA0LCAyMTEsIDE3OCwgCisgICAgMTEsIDM1LCAzMiwgNCwgMjExLCAxMTcsIDExLCAzNSwgMzIsIDQsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNiwgNjEsIAorICAgIDExLCAzNSwgMjMsIDMyLCA2LCAyNTMsIDE1OCwgMTEsIDM1LCAyMywgMzIsIDYsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCAyNDksIDYwLCAxMSwgMzUsIDIzLCAzMiwgNiwgNzUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDYsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyNDMsIDIwMiwgMTEsIDM1LCAyMywgMzIsIDYsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDMyLCA2LCA3MywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIzNSwgMTQ0LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjM1LCAyMywgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDE1NiwgMTEsIDM1LCAyMywgMzIsIDYsIDE5MywgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA2LCA3NiwgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI0LCA5NiwgMTEsIDM1LCAKKyAgICAyMywgMzIsIDYsIDE1MywgMTEsIDM1LCAyMywgMzIsIDYsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDE1MiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDYsIDcwLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyMTIsIDk4LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTEsIDExNywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDIxMCwgMTU5LCAxMSwgMzUsIDIzLCAzMiwgNCwgNjEsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTMsIAorICAgIDE1OCwgMTEsIDM1LCAyMywgMzIsIDQsIDI1MSwgNjYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDksIDYwLCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgNzUsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDUsIDYsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDMsIDIwMiwgMTEsIAorICAgIDM1LCAyMywgMzIsIDQsIDI0MiwgNjAsIDExLCAzNSwgMjMsIDMyLCA0LCA3MywgMTEsIDM1LCAyMywgMzIsIDQsIDIzNSwgCisgICAgMTQ0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAyMywgMTEsIDM1LCAyMywgMzIsIDQsIDE1NiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDE5MywgMTEsIDM1LCAyMywgMzIsIDQsIDIzMCwgMjUsIDExLCAzNSwgMjMsIDMyLCA0LCA3NiwgMTEsIDM1LCAyMywgCisgICAgMzIsIDQsIDIyNiwgMTA1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI0LCA5NiwgMTEsIDM1LCAyMywgMzIsIDQsIDE1MywgMTEsIAorICAgIDM1LCAyMywgMzIsIDQsIDIyMiwgOTEsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTcsIDE1MiwgMTEsIDM1LCAyMywgMzIsIDQsIAorICAgIDcwLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE0LCAxMDUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTIsIDk4LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjExLCAxNzgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMTEsIDExNywgMTEsIDM1LCAyMywgMzIsIDQsIDIxMCwgCisgICAgMTU5LCAxMSwgMjMwLCAxMzgsIDYsIDYxLCAxMSwgMjMwLCAxMzgsIDYsIDI1MywgMTU4LCAxMSwgMjMwLCAxMzgsIDYsIAorICAgIDI1MSwgNjYsIDExLCAyMzAsIDEzOCwgNiwgMjQ5LCA2MCwgMTEsIDIzMCwgMTM4LCA2LCA3NSwgMTEsIDIzMCwgMTM4LCA2LCAKKyAgICAyNDUsIDYsIDExLCAyMzAsIDEzOCwgNiwgMjQzLCAyMDIsIDExLCAyMzAsIDEzOCwgNiwgMjQyLCA2MCwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCA3MywgMTEsIDIzMCwgMTM4LCA2LCAyMzUsIDE0NCwgMTEsIDIzMCwgMTM4LCA2LCAyMzUsIDIzLCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDE1NiwgMTEsIDIzMCwgMTM4LCA2LCAxOTMsIDExLCAyMzAsIDEzOCwgNiwgMjMwLCAyNSwgMTEsIDIzMCwgCisgICAgMTM4LCA2LCA3NiwgMTEsIDIzMCwgMTM4LCA2LCAyMjYsIDEwNSwgMTEsIDIzMCwgMTM4LCA2LCAyMjQsIDk2LCAxMSwgMjMwLCAKKyAgICAxMzgsIDYsIDE1MywgMTEsIDIzMCwgMTM4LCA2LCAyMjIsIDkxLCAxMSwgMjMwLCAxMzgsIDYsIDIxNywgMTUyLCAxMSwgCisgICAgMjMwLCAxMzgsIDYsIDcwLCAxMSwgMjMwLCAxMzgsIDYsIDIxNCwgMTA1LCAxMSwgMjMwLCAxMzgsIDYsIDIxMiwgOTgsIDExLCAKKyAgICAyMzAsIDEzOCwgNiwgMjExLCAxNzgsIDExLCAyMzAsIDEzOCwgNiwgMjExLCAxMTcsIDExLCAyMzAsIDEzOCwgNiwgMjEwLCAKKyAgICAxNTksIDExLCAyMzAsIDEzOCwgNCwgNjEsIDExLCAyMzAsIDEzOCwgNCwgMjUzLCAxNTgsIDExLCAyMzAsIDEzOCwgNCwgCisgICAgMjUxLCA2NiwgMTEsIDIzMCwgMTM4LCA0LCAyNDksIDYwLCAxMSwgMjMwLCAxMzgsIDQsIDc1LCAxMSwgMjMwLCAxMzgsIDQsIAorICAgIDI0NSwgNiwgMTEsIDIzMCwgMTM4LCA0LCAyNDMsIDIwMiwgMTEsIDIzMCwgMTM4LCA0LCAyNDIsIDYwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDczLCAxMSwgMjMwLCAxMzgsIDQsIDIzNSwgMTQ0LCAxMSwgMjMwLCAxMzgsIDQsIDIzNSwgMjMsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgMTU2LCAxMSwgMjMwLCAxMzgsIDQsIDE5MywgMTEsIDIzMCwgMTM4LCA0LCAyMzAsIDI1LCAxMSwgMjMwLCAKKyAgICAxMzgsIDQsIDc2LCAxMSwgMjMwLCAxMzgsIDQsIDIyNiwgMTA1LCAxMSwgMjMwLCAxMzgsIDQsIDIyNCwgOTYsIDExLCAyMzAsIAorICAgIDEzOCwgNCwgMTUzLCAxMSwgMjMwLCAxMzgsIDQsIDIyMiwgOTEsIDExLCAyMzAsIDEzOCwgNCwgMjE3LCAxNTIsIDExLCAKKyAgICAyMzAsIDEzOCwgNCwgNzAsIDExLCAyMzAsIDEzOCwgNCwgMjE0LCAxMDUsIDExLCAyMzAsIDEzOCwgNCwgMjEyLCA5OCwgMTEsIAorICAgIDIzMCwgMTM4LCA0LCAyMTEsIDE3OCwgMTEsIDIzMCwgMTM4LCA0LCAyMTEsIDExNywgMTEsIDIzMCwgMTM4LCA0LCAyMTAsIAorICAgIDE1OSwgMTEsIDMyLCA0LCAyNDcsIDExOSwgNzMsIDExLCAzMiwgNCwgMjQ3LCAxMTksIDIzNSwgMTQ0LCAxMSwgMjMsIDYsIAorICAgIDI1NCwgMTQzLCAxMSwgMjMsIDYsIDI1MiwgMjYsIDExLCAyMywgNiwgMjQzLCAxMDcsIDExLCAyMywgNiwgMjQ4LCA1NCwgCisgICAgMTEsIDIzLCA2LCAyNDUsIDEwMCwgMTEsIDIzLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDYsIDI0NSwgNjMsIDExLCAyMywgNiwgCisgICAgMjE2LCAxNzksIDExLCAyMywgNiwgMjM1LCAxODUsIDExLCAyMywgNiwgMjM0LCAyMjIsIDExLCAyMywgNiwgMjMzLCA5OCwgCisgICAgMTEsIDIzLCA2LCAyMzAsIDEwMiwgMTEsIDIzLCA2LCAyMjcsIDIzNywgMTEsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDIzLCA2LCAKKyAgICAyMjYsIDE5OSwgMTEsIDIzLCA2LCAyMjUsIDEwOCwgMTEsIDIzLCA2LCAyMjMsIDM3LCAxMSwgMjMsIDYsIDIxNiwgMTgwLCAKKyAgICA4NywgMTEsIDIzLCA2LCAyMTksIDE3NywgMTEsIDIzLCA2LCAyMTcsIDQxLCAxMSwgMjMsIDYsIDIxNCwgMTU3LCAxMSwgMjMsIAorICAgIDYsIDIyNSwgMTMzLCAxMSwgMjMsIDYsIDI1MCwgMTEwLCAxMSwgMjMsIDYsIDIyNCwgMTYxLCAxMSwgMjMsIDYsIDIyNiwgCisgICAgMjAxLCAxMSwgMjMsIDIyOSwgMjIxLCAxMSwgMjMsIDQsIDI1NCwgMTQzLCAxMSwgMjMsIDQsIDI1MiwgMjYsIDExLCAyMywgCisgICAgNCwgMjQzLCAxMDcsIDExLCAyMywgNCwgMjQ4LCA1NCwgMTEsIDIzLCA0LCAyNDUsIDEwMCwgMTEsIDIzLCA0LCAyMTAsIDg1LCAKKyAgICAxMSwgMjMsIDQsIDI0NSwgNjMsIDExLCAyMywgNCwgMjE2LCAxNzksIDExLCAyMywgNCwgMjM1LCAxODUsIDExLCAyMywgNCwgCisgICAgMjM0LCAyMjIsIDExLCAyMywgNCwgMjMzLCA5OCwgMTEsIDIzLCA0LCAyMzAsIDEwMiwgMTEsIDIzLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDIzLCA0LCAyMTEsIDE1NywgMTEsIDIzLCA0LCAyMjYsIDE5OSwgMTEsIDIzLCA0LCAyMjUsIDEwOCwgMTEsIDIzLCA0LCAKKyAgICAyMjMsIDM3LCAxMSwgMjMsIDQsIDQwLCAyMTksIDE3NywgMTEsIDIzLCA0LCAyMTksIDE3NywgMTEsIDIzLCA0LCAyMTcsIAorICAgIDQxLCAxMSwgMjMsIDQsIDIxNCwgMTU3LCAxMSwgMjMsIDQsIDIyNSwgMTMzLCAxMSwgMjMsIDQsIDI1MCwgMTEwLCAxMSwgCisgICAgMjMsIDQsIDIyNCwgMTYxLCAxMSwgMjMsIDQsIDIyNiwgMjAxLCAxMSwgMjMsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDIzLCAKKyAgICAyNDUsIDEwMSwgODcsIDExLCAyMywgMjE2LCAxODAsIDg3LCAxMSwgMjMsIDIzNCwgMjIzLCA4NywgMTEsIDIzLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAyMywgMjIzLCAzOCwgODcsIDExLCAyMywgMjI1LCAxMDksIDg3LCAxMSwgMzIsIDYsIDI1NCwgMTQzLCAKKyAgICAxMSwgMzIsIDYsIDI1MiwgMjYsIDExLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAzMiwgNiwgMjQ4LCA1NCwgMTEsIDMyLCA2LCAKKyAgICAyNDUsIDEwMCwgMTEsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMzIsIDYsIDI0NSwgNjMsIDExLCAzMiwgNiwgMjE2LCAxNzksIAorICAgIDExLCAzMiwgNiwgMjM1LCAxODUsIDExLCAzMiwgNiwgMjM0LCAyMjIsIDExLCAzMiwgNiwgMjMzLCA5OCwgMTEsIDMyLCA2LCAKKyAgICAyMzAsIDEwMiwgMTEsIDMyLCA2LCAyMjcsIDIzNywgMTEsIDMyLCA2LCAyMTEsIDE1NywgMTEsIDMyLCA2LCAyMjYsIDE5OSwgCisgICAgMTEsIDMyLCA2LCAyMjUsIDEwOCwgMTEsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDMyLCAKKyAgICA2LCAyMTksIDE3NywgMTEsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMzIsIDYsIDIyNSwgCisgICAgMTMzLCAxMSwgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMzIsIDYsIDIyNCwgMTYxLCAxMSwgMzIsIDYsIDIyNiwgMjAxLCAxMSwgCisgICAgMzIsIDIyOSwgMjIxLCAxMSwgMzIsIDQsIDI1NCwgMTQzLCAxMSwgMzIsIDQsIDI1MiwgMjYsIDExLCAzMiwgNCwgMjQzLCAKKyAgICAxMDcsIDExLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIDMyLCA0LCAyNDUsIDEwMCwgMTEsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzIsIAorICAgIDQsIDI0NSwgNjMsIDExLCAzMiwgNCwgMjE2LCAxNzksIDExLCAzMiwgNCwgMjM1LCAxODUsIDExLCAzMiwgNCwgMjM0LCAKKyAgICAyMjIsIDExLCAzMiwgNCwgMjMzLCA5OCwgMTEsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDMyLCA0LCAyMjcsIDIzNywgMTEsIAorICAgIDMyLCA0LCAyMTEsIDE1NywgMTEsIDMyLCA0LCAyMjYsIDE5OSwgMTEsIDMyLCA0LCAyMjUsIDEwOCwgMTEsIDMyLCA0LCAKKyAgICAyMjMsIDM3LCAxMSwgMzIsIDQsIDQwLCAyMTksIDE3NywgMTEsIDMyLCA0LCAyMTksIDE3NywgMTEsIDMyLCA0LCAyMTcsIAorICAgIDQxLCAxMSwgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMzIsIDQsIDIyNSwgMTMzLCAxMSwgMzIsIDQsIDI1MCwgMTEwLCAxMSwgCisgICAgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMzIsIDQsIDIyNiwgMjAxLCAxMSwgMzIsIDIyNSwgMjUzLCAyNDcsIDIzMywgMTEsIDMyLCAKKyAgICAyNDUsIDEwMSwgODcsIDExLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMzIsIDIzNCwgMjIzLCA4NywgMTEsIDMyLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAzMiwgMjIzLCAzOCwgODcsIDExLCAzMiwgMjI1LCAxMDksIDg3LCAxMSwgMjMsIDMyLCA2LCAyNTQsIAorICAgIDE0MywgMTEsIDIzLCAzMiwgNiwgMjUyLCAyNiwgMTEsIDIzLCAzMiwgNiwgMjQzLCAxMDcsIDExLCAyMywgMzIsIDYsIDI0OCwgCisgICAgNTQsIDExLCAyMywgMzIsIDYsIDI0NSwgMTAwLCAxMSwgMjMsIDMyLCA2LCAyMTAsIDg1LCAxMSwgMjMsIDMyLCA2LCAyNDUsIAorICAgIDYzLCAxMSwgMjMsIDMyLCA2LCAyMTYsIDE3OSwgMTEsIDIzLCAzMiwgNiwgMjM1LCAxODUsIDExLCAyMywgMzIsIDYsIDIzNCwgCisgICAgMjIyLCAxMSwgMjMsIDMyLCA2LCAyMzMsIDk4LCAxMSwgMjMsIDMyLCA2LCAyMzAsIDEwMiwgMTEsIDIzLCAzMiwgNiwgMjI3LCAKKyAgICAyMzcsIDExLCAyMywgMzIsIDYsIDIxMSwgMTU3LCAxMSwgMjMsIDMyLCA2LCAyMjYsIDE5OSwgMTEsIDIzLCAzMiwgNiwgCisgICAgMjI1LCAxMDgsIDExLCAyMywgMzIsIDYsIDIyMywgMzcsIDExLCAyMywgMzIsIDYsIDIxNiwgMTgwLCA4NywgMTEsIDIzLCAKKyAgICAzMiwgNiwgMjE5LCAxNzcsIDExLCAyMywgMzIsIDYsIDIxNywgNDEsIDExLCAyMywgMzIsIDYsIDIxNCwgMTU3LCAxMSwgMjMsIAorICAgIDMyLCA2LCAyMjUsIDEzMywgMTEsIDIzLCAzMiwgNiwgMjUwLCAxMTAsIDExLCAyMywgMzIsIDYsIDIyNCwgMTYxLCAxMSwgCisgICAgMjMsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIDIzLCAzMiwgMjI5LCAyMjEsIDExLCAyMywgMzIsIDQsIDI1NCwgMTQzLCAxMSwgCisgICAgMjMsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMjMsIDMyLCA0LCAyNDMsIDEwNywgMTEsIDIzLCAzMiwgNCwgMjQ4LCA1NCwgMTEsIAorICAgIDIzLCAzMiwgNCwgMjQ1LCAxMDAsIDExLCAyMywgMzIsIDQsIDIxMCwgODUsIDExLCAyMywgMzIsIDQsIDI0NSwgNjMsIDExLCAKKyAgICAyMywgMzIsIDQsIDIxNiwgMTc5LCAxMSwgMjMsIDMyLCA0LCAyMzUsIDE4NSwgMTEsIDIzLCAzMiwgNCwgMjM0LCAyMjIsIAorICAgIDExLCAyMywgMzIsIDQsIDIzMywgOTgsIDExLCAyMywgMzIsIDQsIDIzMCwgMTAyLCAxMSwgMjMsIDMyLCA0LCAyMjcsIDIzNywgCisgICAgMTEsIDIzLCAzMiwgNCwgMjExLCAxNTcsIDExLCAyMywgMzIsIDQsIDIyNiwgMTk5LCAxMSwgMjMsIDMyLCA0LCAyMjUsIAorICAgIDEwOCwgMTEsIDIzLCAzMiwgNCwgMjIzLCAzNywgMTEsIDIzLCAzMiwgNCwgNDAsIDIxOSwgMTc3LCAxMSwgMjMsIDMyLCA0LCAKKyAgICAyMTksIDE3NywgMTEsIDIzLCAzMiwgNCwgMjE3LCA0MSwgMTEsIDIzLCAzMiwgNCwgMjE0LCAxNTcsIDExLCAyMywgMzIsIDQsIAorICAgIDIyNSwgMTMzLCAxMSwgMjMsIDMyLCA0LCAyNTAsIDExMCwgMTEsIDIzLCAzMiwgNCwgMjI0LCAxNjEsIDExLCAyMywgMzIsIAorICAgIDQsIDIyNiwgMjAxLCAxMSwgMjMsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAyMywgMzIsIDI0NSwgMTAxLCA4NywgCisgICAgMTEsIDIzLCAzMiwgMjE2LCAxODAsIDg3LCAxMSwgMjMsIDMyLCAyMzQsIDIyMywgODcsIDExLCAyMywgMzIsIDIyNSwgMTM0LCAKKyAgICA4NywgMTEsIDIzLCAzMiwgMjIzLCAzOCwgODcsIDExLCAyMywgMzIsIDIyNSwgMTA5LCA4NywgMTEsIDM1LCAyMywgNiwgCisgICAgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDYsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDYsIDI0MywgMTA3LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyNDgsIDU0LCAxMSwgMzUsIDIzLCA2LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgNiwgMjEwLCA4NSwgMTEsIDM1LCAyMywgNiwgCisgICAgMjQ1LCA2MywgMTEsIDM1LCAyMywgNiwgMjE2LCAxNzksIDExLCAzNSwgMjMsIDYsIDIzNSwgMTg1LCAxMSwgMzUsIDIzLCA2LCAKKyAgICAyMzQsIDIyMiwgMTEsIDM1LCAyMywgNiwgMjMzLCA5OCwgMTEsIDM1LCAyMywgNiwgMjMwLCAxMDIsIDExLCAzNSwgMjMsIDYsIAorICAgIDIyNywgMjM3LCAxMSwgMzUsIDIzLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgNiwgMjI2LCAxOTksIDExLCAzNSwgMjMsIAorICAgIDYsIDIyNSwgMTA4LCAxMSwgMzUsIDIzLCA2LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCA2LCAyMTYsIDE4MCwgODcsIDExLCAzNSwgCisgICAgMjMsIDYsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCA2LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCA2LCAyMTQsIDE1NywgMTEsIDM1LCAKKyAgICAyMywgNiwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDYsIDI1MCwgMTEwLCAxMSwgMzUsIDIzLCA2LCAyMjQsIDE2MSwgMTEsIAorICAgIDM1LCAyMywgNiwgMjI2LCAyMDEsIDExLCAzNSwgMjMsIDIyOSwgMjIxLCAxMSwgMzUsIDIzLCA0LCAyNTQsIDE0MywgMTEsIAorICAgIDM1LCAyMywgNCwgMjUyLCAyNiwgMTEsIDM1LCAyMywgNCwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDQsIDI0OCwgNTQsIDExLCAKKyAgICAzNSwgMjMsIDQsIDI0NSwgMTAwLCAxMSwgMzUsIDIzLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCA0LCAyNDUsIDYzLCAxMSwgCisgICAgMzUsIDIzLCA0LCAyMTYsIDE3OSwgMTEsIDM1LCAyMywgNCwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDQsIDIzNCwgMjIyLCAKKyAgICAxMSwgMzUsIDIzLCA0LCAyMzMsIDk4LCAxMSwgMzUsIDIzLCA0LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgNCwgMjI3LCAyMzcsIAorICAgIDExLCAzNSwgMjMsIDQsIDIxMSwgMTU3LCAxMSwgMzUsIDIzLCA0LCAyMjYsIDE5OSwgMTEsIDM1LCAyMywgNCwgMjI1LCAKKyAgICAxMDgsIDExLCAzNSwgMjMsIDQsIDIyMywgMzcsIDExLCAzNSwgMjMsIDQsIDQwLCAyMTksIDE3NywgMTEsIDM1LCAyMywgNCwgCisgICAgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDQsIDIxNywgNDEsIDExLCAzNSwgMjMsIDQsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCA0LCAKKyAgICAyMjUsIDEzMywgMTEsIDM1LCAyMywgNCwgMjUwLCAxMTAsIDExLCAzNSwgMjMsIDQsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAKKyAgICA0LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMjI1LCAyNTMsIDI0NywgMjMzLCAxMSwgMzUsIDIzLCAyNDUsIDEwMSwgODcsIAorICAgIDExLCAzNSwgMjMsIDIxNiwgMTgwLCA4NywgMTEsIDM1LCAyMywgMjM0LCAyMjMsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDEzNCwgCisgICAgODcsIDExLCAzNSwgMjMsIDIyMywgMzgsIDg3LCAxMSwgMzUsIDIzLCAyMjUsIDEwOSwgODcsIDExLCAzNSwgMjMsIDMyLCA2LCAKKyAgICAyNTQsIDE0MywgMTEsIDM1LCAyMywgMzIsIDYsIDI1MiwgMjYsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDMsIDEwNywgMTEsIAorICAgIDM1LCAyMywgMzIsIDYsIDI0OCwgNTQsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDEwMCwgMTEsIDM1LCAyMywgMzIsIDYsIAorICAgIDIxMCwgODUsIDExLCAzNSwgMjMsIDMyLCA2LCAyNDUsIDYzLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxNzksIDExLCAzNSwgCisgICAgMjMsIDMyLCA2LCAyMzUsIDE4NSwgMTEsIDM1LCAyMywgMzIsIDYsIDIzNCwgMjIyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjMzLCAKKyAgICA5OCwgMTEsIDM1LCAyMywgMzIsIDYsIDIzMCwgMTAyLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI3LCAyMzcsIDExLCAzNSwgMjMsIAorICAgIDMyLCA2LCAyMTEsIDE1NywgMTEsIDM1LCAyMywgMzIsIDYsIDIyNiwgMTk5LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjI1LCAKKyAgICAxMDgsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjMsIDM3LCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE2LCAxODAsIDg3LCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjE5LCAxNzcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMTcsIDQxLCAxMSwgMzUsIDIzLCAzMiwgNiwgMjE0LCAKKyAgICAxNTcsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjUsIDEzMywgMTEsIDM1LCAyMywgMzIsIDYsIDI1MCwgMTEwLCAxMSwgMzUsIAorICAgIDIzLCAzMiwgNiwgMjI0LCAxNjEsIDExLCAzNSwgMjMsIDMyLCA2LCAyMjYsIDIwMSwgMTEsIDM1LCAyMywgMzIsIDIyOSwgCisgICAgMjIxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjU0LCAxNDMsIDExLCAzNSwgMjMsIDMyLCA0LCAyNTIsIDI2LCAxMSwgMzUsIDIzLCAKKyAgICAzMiwgNCwgMjQzLCAxMDcsIDExLCAzNSwgMjMsIDMyLCA0LCAyNDgsIDU0LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCAxMDAsIAorICAgIDExLCAzNSwgMjMsIDMyLCA0LCAyMTAsIDg1LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjQ1LCA2MywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIxNiwgMTc5LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjM1LCAxODUsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzQsIDIyMiwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIzMywgOTgsIDExLCAzNSwgMjMsIDMyLCA0LCAyMzAsIDEwMiwgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDIyNywgMjM3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjExLCAxNTcsIDExLCAzNSwgMjMsIDMyLCA0LCAyMjYsIDE5OSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIyNSwgMTA4LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjIzLCAzNywgMTEsIDM1LCAyMywgMzIsIAorICAgIDQsIDQwLCAyMTksIDE3NywgMTEsIDM1LCAyMywgMzIsIDQsIDIxOSwgMTc3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjE3LCA0MSwgCisgICAgMTEsIDM1LCAyMywgMzIsIDQsIDIxNCwgMTU3LCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI1LCAxMzMsIDExLCAzNSwgMjMsIDMyLCAKKyAgICA0LCAyNTAsIDExMCwgMTEsIDM1LCAyMywgMzIsIDQsIDIyNCwgMTYxLCAxMSwgMzUsIDIzLCAzMiwgNCwgMjI2LCAyMDEsIAorICAgIDExLCAzNSwgMjMsIDMyLCAyMjUsIDI1MywgMjQ3LCAyMzMsIDExLCAzNSwgMjMsIDMyLCAyNDUsIDEwMSwgODcsIDExLCAzNSwgCisgICAgMjMsIDMyLCAyMTYsIDE4MCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMzQsIDIyMywgODcsIDExLCAzNSwgMjMsIDMyLCAyMjUsIAorICAgIDEzNCwgODcsIDExLCAzNSwgMjMsIDMyLCAyMjMsIDM4LCA4NywgMTEsIDM1LCAyMywgMzIsIDIyNSwgMTA5LCA4NywgMTEsIAorICAgIDIzLCA2LCAyNDcsIDIyNywgMTEsIDIzLCA0LCAyNDcsIDIyNywgMTEsIDIzLCAyMSwgMjEwLCA4NiwgMTEsIDIzLCAyMSwgCisgICAgMTEwLCAxMSwgMjMsIDIxLCAxMDUsIDExLCAyMywgMjEsIDE1OCwgMTEsIDIzLCAyMSwgMTYxLCAxMSwgMjMsIDIxLCAxODksIAorICAgIDExLCAyMywgMjEsIDE5NCwgMTEsIDIzLCAyMSwgMTk4LCAxMSwgMjMsIDIxLCAxOTUsIDExLCAyMywgMjEsIDIwMCwgMTEsIAorICAgIDEzOSwgMjEsIDIxMCwgODYsIDExLCAxMzksIDIxLCAxMTAsIDExLCAxMzksIDIxLCAxMDUsIDExLCAxMzksIDIxLCAxNTgsIAorICAgIDExLCAxMzksIDIxLCAxNjEsIDExLCAxMzksIDIxLCAxODksIDExLCAxMzksIDIxLCAxOTQsIDExLCAxMzksIDIxLCAxOTgsIAorICAgIDExLCAxMzksIDIxLCAxOTUsIDExLCAxMzksIDIxLCAyMDAsIDExLCAzNSwgMjEsIDIxMCwgODYsIDExLCAzNSwgMjEsIDExMCwgCisgICAgMTEsIDM1LCAyMSwgMTA1LCAxMSwgMzUsIDIxLCAxNTgsIDExLCAzNSwgMjEsIDE2MSwgMTEsIDM1LCAyMSwgMTg5LCAxMSwgCisgICAgMzUsIDIxLCAxOTQsIDExLCAzNSwgMjEsIDE5OCwgMTEsIDM1LCAyMSwgMTk1LCAxMSwgMzUsIDIxLCAyMDAsIDExLCAzNSwgCisgICAgMjMsIDIxLCAyMTAsIDg2LCAxMSwgMzUsIDIzLCAyMSwgMTEwLCAxMSwgMzUsIDIzLCAyMSwgMTA1LCAxMSwgMzUsIDIzLCAKKyAgICAyMSwgMTU4LCAxMSwgMzUsIDIzLCAyMSwgMTYxLCAxMSwgMzUsIDIzLCAyMSwgMTg5LCAxMSwgMzUsIDIzLCAyMSwgMTk0LCAKKyAgICAxMSwgMzUsIDIzLCAyMSwgMTk4LCAxMSwgMzUsIDIzLCAyMSwgMTk1LCAxMSwgMzUsIDIzLCAyMSwgMjAwLCAxMSwgMjMwLCAKKyAgICAxMzgsIDIxLCAyMTAsIDg2LCAxMSwgMjMwLCAxMzgsIDIxLCAxMTAsIDExLCAyMzAsIDEzOCwgMjEsIDEwNSwgMTEsIDIzMCwgCisgICAgMTM4LCAyMSwgMTU4LCAxMSwgMjMwLCAxMzgsIDIxLCAxNjEsIDExLCAyMzAsIDEzOCwgMjEsIDE4OSwgMTEsIDIzMCwgMTM4LCAKKyAgICAyMSwgMTk0LCAxMSwgMjMwLCAxMzgsIDIxLCAxOTgsIDExLCAyMzAsIDEzOCwgMjEsIDE5NSwgMTEsIDIzMCwgMTM4LCAyMSwgCisgICAgMjAwLCAxMCwgMTEsIDI1NCwgMTcwLCAxMCwgMTEsIDI1MiwgNTQsIDEwLCAxMSwgMjM1LCAxMjMsIDEwLCAxMSwgMjQ4LCAKKyAgICAxOTUsIDEwLCAxMSwgMjEyLCAzMCwgMTAsIDExLCAyMTAsIDEwOCwgMTAsIDExLCAyNDIsIDM3LCAxMCwgMTEsIDIxNywgODAsIAorICAgIDEwLCAxMSwgMjExLCA0MywgMTAsIDExLCAyMzQsIDI1MCwgMTAsIDExLCAyMzMsIDEwMiwgMTAsIDExLCAyMzEsIDc4LCAxMCwgCisgICAgMTEsIDIyOCwgNjIsIDEwLCAxMSwgMjIxLCAxNjYsIDEwLCAxMSwgMjU0LCAxOTYsIDEwLCAxMSwgMjQ0LCAxNDIsIDEwLCAKKyAgICAxMSwgMjIyLCAyNiwgMTAsIDExLCAyMjQsIDgxLCAxMCwgMTEsIDIyMywgOTUsIDEwLCAxMSwgMjIwLCA1OSwgMTAsIDExLCAKKyAgICAyMTcsIDcsIDEwLCAxMSwgMjE2LCAxOTIsIDEwLCAxMSwgMjM0LCAxMjksIDEwLCAxMSwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMjQ4LCAyMTYsIDEwLCAxMSwgMjEwLCAxMTEsIDEwLCAxMSwgMjQyLCAyNDQsIDEwLCAxMSwgMjQ3LCAxMTksIDI1MiwgNTQsIAorICAgIDEwLCAxMSwgMjQ3LCAxMTksIDIyOCwgNjIsIDEwLCAxMSwgMjQ3LCAxMTksIDI0NCwgMTQyLCAxMCwgMTEsIDI0NywgMTE5LCAKKyAgICAyMjQsIDgxLCAxMCwgMTEsIDY1LCAyNTIsIDU0LCAxMCwgMTEsIDY1LCAyMzUsIDEyMywgMTAsIDExLCA2NSwgMjQxLCAyMTgsIAorICAgIDEwLCAxMSwgNjUsIDI0MiwgMzcsIDEwLCAxMSwgNjUsIDIxMSwgNDMsIDEwLCAxMSwgNjUsIDIzNCwgMjUwLCAxMCwgMTEsIAorICAgIDY1LCAyMzMsIDEwMiwgMTAsIDExLCA2NSwgMjMxLCA3OCwgMTAsIDExLCA2NSwgMjI4LCA2MiwgMTAsIDExLCA2NSwgMjIxLCAKKyAgICAxNjYsIDEwLCAxMSwgNjUsIDI1NCwgMTk2LCAxMCwgMTEsIDY1LCAyNDQsIDE0MiwgMTAsIDExLCA2NSwgMjIyLCAyNiwgMTAsIAorICAgIDExLCA2NSwgMjI0LCA4MSwgMTAsIDExLCA2NSwgMjIwLCA1OSwgMTAsIDExLCA2NSwgMjE3LCA3LCAxMCwgMTEsIDY1LCAKKyAgICAyMTYsIDE5MiwgMTAsIDExLCA2NSwgMjM0LCAxMjksIDEwLCAxMSwgNjUsIDI0OCwgMjE2LCAxMCwgMTEsIDY1LCAyNDIsIAorICAgIDI0NCwgMTAsIDExLCAyMTcsIDc2LCAyMzUsIDEyMywgMTAsIDExLCAyMTcsIDc2LCAyNDIsIDM3LCAxMCwgMTEsIDIxNywgCisgICAgNzYsIDIxMSwgNDMsIDEwLCAxMSwgMjE3LCA3NiwgMjMzLCAxMDIsIDEwLCAxMSwgMjE3LCA3NiwgMjI4LCA2MiwgMTAsIDExLCAKKyAgICAyMTcsIDc2LCAyMjEsIDE2NiwgMTAsIDExLCAyMTcsIDc2LCAyNTQsIDE5NiwgMTAsIDExLCAyMTcsIDc2LCAyMjIsIDI2LCAKKyAgICAxMCwgMTEsIDIxNywgNzYsIDIyNCwgODEsIDEwLCAxMSwgMjE3LCA3NiwgMjIwLCA1OSwgMTAsIDExLCAyMTcsIDc2LCAyMzQsIAorICAgIDEyOSwgMTAsIDExLCAyMTcsIDc2LCAyNDgsIDIxNiwgMTAsIDExLCAyMTcsIDc2LCAyNDIsIDI0NCwgMTAsIDExLCAyMTcsIAorICAgIDc2LCAyNDcsIDExOSwgMjI4LCA2MiwgMTAsIDExLCAyMTcsIDc2LCAyNDcsIDExOSwgMjI0LCA4MSwgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjUyLCA1NCwgMTAsIDExLCAyMTgsIDExMCwgMjM1LCAxMjMsIDEwLCAxMSwgMjE4LCAxMTAsIDI0MSwgMjE4LCAxMCwgCisgICAgMTEsIDIxOCwgMTEwLCAyNDIsIDM3LCAxMCwgMTEsIDIxOCwgMTEwLCAyMTcsIDgwLCAxMCwgMTEsIDIxOCwgMTEwLCAyMTEsIAorICAgIDQzLCAxMCwgMTEsIDIxOCwgMTEwLCAyMzQsIDI1MCwgMTAsIDExLCAyMTgsIDExMCwgMjMxLCA3OCwgMTAsIDExLCAyMTgsIAorICAgIDExMCwgMjI4LCA2MiwgMTAsIDExLCAyMTgsIDExMCwgMjIxLCAxNjYsIDEwLCAxMSwgMjE4LCAxMTAsIDI1NCwgMTk2LCAxMCwgCisgICAgMTEsIDIxOCwgMTEwLCAyNDQsIDE0MiwgMTAsIDExLCAyMTgsIDExMCwgMjIyLCAyNiwgMTAsIDExLCAyMTgsIDExMCwgMjI0LCAKKyAgICA4MSwgMTAsIDExLCAyMTgsIDExMCwgMjIwLCA1OSwgMTAsIDExLCAyMTgsIDExMCwgMjE3LCA3LCAxMCwgMTEsIDIxOCwgCisgICAgMTEwLCAyMTYsIDE5MiwgMTAsIDExLCAyMTgsIDExMCwgMjM0LCAxMjksIDEwLCAxMSwgMjE4LCAxMTAsIDI0OCwgMjE2LCAKKyAgICAxMCwgMTEsIDIxOCwgMTEwLCAyMTAsIDExMSwgMTAsIDExLCAyMTgsIDExMCwgMjQyLCAyNDQsIDEwLCAxMSwgMjE4LCAxMTAsIAorICAgIDI0NywgMTE5LCAyNTIsIDU0LCAxMCwgMTEsIDIxOCwgMTEwLCAyNDcsIDExOSwgMjQ0LCAxNDIsIDEwLCAxMSwgMjMyLCAKKyAgICAxMjIsIDI1NCwgMTcwLCAxMCwgMTEsIDIzMiwgMTIyLCAyNTIsIDU0LCAxMCwgMTEsIDIzMiwgMTIyLCAyMzUsIDEyMywgMTAsIAorICAgIDExLCAyMzIsIDEyMiwgMjQ4LCAxOTUsIDEwLCAxMSwgMjMyLCAxMjIsIDI0MSwgMjE4LCAxMCwgMTEsIDIzMiwgMTIyLCAKKyAgICAyMTIsIDMwLCAxMCwgMTEsIDIzMiwgMTIyLCAyMTAsIDEwOCwgMTAsIDExLCAyMzIsIDEyMiwgMjQyLCAzNywgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjE3LCA4MCwgMTAsIDExLCAyMzIsIDEyMiwgMjExLCA0MywgMTAsIDExLCAyMzIsIDEyMiwgMjMzLCAxMDIsIAorICAgIDEwLCAxMSwgMjMyLCAxMjIsIDIzMSwgNzgsIDEwLCAxMSwgMjMyLCAxMjIsIDIyOCwgNjIsIDEwLCAxMSwgMjMyLCAxMjIsIAorICAgIDIyMSwgMTY2LCAxMCwgMTEsIDIzMiwgMTIyLCAyNTQsIDE5NiwgMTAsIDExLCAyMzIsIDEyMiwgMjQ0LCAxNDIsIDEwLCAxMSwgCisgICAgMjMyLCAxMjIsIDIyMiwgMjYsIDEwLCAxMSwgMjMyLCAxMjIsIDIyNCwgODEsIDEwLCAxMSwgMjMyLCAxMjIsIDIyMywgOTUsIAorICAgIDEwLCAxMSwgMjMyLCAxMjIsIDIyMCwgNTksIDEwLCAxMSwgMjMyLCAxMjIsIDIxNywgNywgMTAsIDExLCAyMzIsIDEyMiwgCisgICAgMjE2LCAxOTIsIDEwLCAxMSwgMjMyLCAxMjIsIDIzNCwgMTI5LCAxMCwgMTEsIDIzMiwgMTIyLCAyMTYsIDIwMiwgMTAsIDExLCAKKyAgICAyMzIsIDEyMiwgMjQ4LCAyMTYsIDEwLCAxMSwgMjMyLCAxMjIsIDIxMCwgMTExLCAxMCwgMTEsIDIzMiwgMTIyLCAyNDIsIAorICAgIDI0NCwgMTAsIDExLCAxMzksIDI1MiwgNTQsIDEwLCAxMSwgMTM5LCAyMzUsIDEyMywgMTAsIDExLCAxMzksIDI0OCwgMTk1LCAKKyAgICAxMCwgMTEsIDEzOSwgMjEyLCAzMCwgMTAsIDExLCAxMzksIDIxMCwgMTA4LCAxMCwgMTEsIDEzOSwgMjQyLCAzNywgMTAsIAorICAgIDExLCAxMzksIDIxNywgODAsIDEwLCAxMSwgMTM5LCAyMTEsIDQzLCAxMCwgMTEsIDEzOSwgMjMzLCAxMDIsIDEwLCAxMSwgCisgICAgMTM5LCAyMzEsIDc4LCAxMCwgMTEsIDEzOSwgMjI4LCA2MiwgMTAsIDExLCAxMzksIDIyMSwgMTY2LCAxMCwgMTEsIDEzOSwgCisgICAgMjU0LCAxOTYsIDEwLCAxMSwgMTM5LCAyNDQsIDE0MiwgMTAsIDExLCAxMzksIDIyMiwgMjYsIDEwLCAxMSwgMTM5LCAyMjQsIAorICAgIDgxLCAxMCwgMTEsIDEzOSwgMjIzLCA5NSwgMTAsIDExLCAxMzksIDIyMCwgNTksIDEwLCAxMSwgMTM5LCAyMTcsIDcsIDEwLCAKKyAgICAxMSwgMTM5LCAyMTYsIDE5MiwgMTAsIDExLCAxMzksIDIzNCwgMTI5LCAxMCwgMTEsIDEzOSwgMjE2LCAyMDIsIDEwLCAxMSwgCisgICAgMTM5LCAyNDgsIDIxNiwgMTAsIDExLCAxMzksIDIxMCwgMTExLCAxMCwgMTEsIDEzOSwgMjQyLCAyNDQsIDEwLCAxMSwgMjI2LCAKKyAgICAxNjgsIDY2LCAyLCAxMjIsIDIsIDIxNywgNDMsIDEwLCAxMSwgMjI2LCAxNjgsIDEyMiwgMiwgMjQ4LCAxOTUsIDIzMSwgCisgICAgMjA1LCA4NiwgMjQ1LCAyMjAsIDIxMSwgMjM5LCAyMzEsIDIwNSwgODYsIDIxOSwgMjgsIDIxMSwgMjM5LCAyMzEsIDIwNSwgCisgICAgODYsIDIxMiwgOSwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjI4LCA1NiwgMjExLCAyMzksIDIzMSwgMjA1LCA4NiwgMjIzLCAKKyAgICAxMTEsIDI0NiwgOTYsIDIzMSwgMjA1LCA4NiwgMjQyLCAxMjcsIDI0NiwgOTYsIDIzMSwgMjA1LCA4NiwgNzEsIDI0NiwgOTYsIAorICAgIDIzMSwgMjA1LCA4NiwgMTIzLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMTEzLCA2NCwgMjUwLCAxNDEsIDIzMSwgCisgICAgMjA1LCA4NiwgMTM0LCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjQ0LCAxMSwgNjQsIDI1MCwgMTQxLCAyMzEsIAorICAgIDIwNSwgODYsIDI0NCwgODEsIDY0LCAyNTAsIDE0MSwgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MCwgMTQxLCAKKyAgICAyMzEsIDIwNSwgODYsIDIyMCwgMTIyLCA2NCwgMjUwLCAxNDEsIDIzMSwgMjA1LCA4NiwgMjQ1LCAxOTMsIDY0LCAyNTAsIAorICAgIDE0MSwgMjMxLCAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIDI1MCwgMTQxLCAyMzEsIDIwNSwgODYsIDEyMywgNjQsIDI1MiwgCisgICAgMTUzLCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MiwgMTUzLCAyMzEsIDIwNSwgODYsIDEzNCwgNjQsIDI1MiwgMTUzLCAKKyAgICAyMzEsIDIwNSwgODYsIDI0NCwgMTEsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUyLCAxNTMsIAorICAgIDIzMSwgMjA1LCA4NiwgMjE5LCAxMjUsIDY0LCAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAyMjAsIDEyMiwgNjQsIDI1MiwgCisgICAgMTUzLCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUyLCAxNTMsIDIzMSwgMjA1LCA4NiwgMjI4LCAyMDAsIDY0LCAKKyAgICAyNTIsIDE1MywgMjMxLCAyMDUsIDg2LCAxMjMsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDExMywgNjQsIDI1MCwgMzQsIAorICAgIDIzMSwgMjA1LCA4NiwgMTM0LCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyNDQsIDExLCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyNDQsIDgxLCA2NCwgMjUwLCAzNCwgMjMxLCAyMDUsIDg2LCAyMTksIDEyNSwgNjQsIDI1MCwgMzQsIDIzMSwgCisgICAgMjA1LCA4NiwgMjIwLCAxMjIsIDY0LCAyNTAsIDM0LCAyMzEsIDIwNSwgODYsIDI0NSwgMTkzLCA2NCwgMjUwLCAzNCwgMjMxLCAKKyAgICAyMDUsIDg2LCAyMjgsIDIwMCwgNjQsIDI1MCwgMzQsIDIzMSwgMjA1LCA4NiwgMjI1LCAyNSwgMjMxLCAyMDUsIDg2LCAyMjYsIAorICAgIDE1NiwgMjMxLCAyMDUsIDg2LCAyNTIsIDE1NCwgMjMxLCAyMDUsIDg2LCAyNTAsIDcwLCAyMzEsIDIwNSwgODYsIDIxOCwgCisgICAgMjM5LCAyMzEsIDIwNSwgODYsIDIxOCwgMzksIDIzMSwgMjA1LCA4NiwgMjUzLCAxNzksIDIzMSwgMjA1LCA4NiwgMjExLCAKKyAgICAyMzIsIDIzMSwgMjA1LCA4NiwgMjM1LCA2MiwgMjMxLCAyMDUsIDg2LCAyNTIsIDE4NCwgMTMxLCA4NiwgMjAzLCAyNTIsIAorICAgIDE4NCwgMTMxLCA4NiwgMjQxLCA0MywgMTMxLCA4NiwgMjQxLCA0MiwgMTMxLCA4NiwgMjQxLCA0MSwgMTMxLCA4NiwgMjQxLCAKKyAgICA0MCwgMTMxLCA4NiwgMjQxLCAzOSwgMTMxLCA4NiwgMjQxLCAzOCwgMTMxLCA4NiwgMjQxLCAzNywgMTMxLCA4NiwgMjQxLCAKKyAgICAzNiwgMTMxLCA4NiwgMjQxLCAzNSwgMTMxLCA4NiwgMjQxLCAzNCwgMTMxLCA4NiwgMjQxLCAzMywgMTMxLCA4NiwgMjQxLCAKKyAgICAzMiwgMTMxLCA4NiwgMjQxLCAzMSwgMTMxLCA4NiwgMjQxLCAzMCwgMTMxLCA4NiwgMjQxLCAyOSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyOCwgMTMxLCA4NiwgMjQxLCAyNywgMTMxLCA4NiwgMjQxLCAyNiwgMTMxLCA4NiwgMjQxLCAyNSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyNCwgMTMxLCA4NiwgMjQxLCAyMywgMTMxLCA4NiwgMjQxLCAyMiwgMTMxLCA4NiwgMjQxLCAyMSwgMTMxLCA4NiwgMjQxLCAKKyAgICAyMCwgMTMxLCA4NiwgMjQxLCAxOSwgMTMxLCA4NiwgMjQxLCAxOCwgMTMxLCA4NiwgMjQxLCAxNywgMTMxLCA4NiwgMjQxLCAKKyAgICAxNiwgMTMxLCA4NiwgMjQxLCAxNSwgMTMxLCA4NiwgMjQxLCAxNCwgMTMxLCA4NiwgMjQxLCAxMywgMTMxLCA4NiwgMjQxLCAKKyAgICAxMiwgMTMxLCA4NiwgMjQxLCAxMSwgMTMxLCA4NiwgMjQxLCAxMCwgMTMxLCA4NiwgMjQxLCA5LCAxMzEsIDg2LCAyNDEsIDgsIAorICAgIDEzMSwgODYsIDI0MSwgNywgMTMxLCA4NiwgMjQxLCA2LCAxMzEsIDg2LCAyNDEsIDUsIDEzMSwgODYsIDI0MSwgNCwgMTMxLCAKKyAgICA4NiwgMjQxLCAzLCAxMzEsIDg2LCAyNDEsIDIsIDEzMSwgODYsIDI0MSwgMSwgMTMxLCA4NiwgMjQxLCAwLCAxMzEsIDg2LCAKKyAgICAyNDAsIDI1NSwgMTMxLCA4NiwgMjQwLCAyNTQsIDEzMSwgODYsIDI0MCwgMjUzLCAxMzEsIDg2LCAyNDAsIDI1MiwgMTMxLCAKKyAgICA4NiwgMjQwLCAyNTEsIDEzMSwgODYsIDY3LCAyNTIsIDE4NCwgMTMxLCA4NiwgMjEzLCAyMzgsIDEzMSwgODYsIDIxMywgCisgICAgMjM3LCAxMzEsIDg2LCAyMTMsIDIzNiwgMTMxLCA4NiwgMjEzLCAyMzUsIDEzMSwgODYsIDIxMywgMjM0LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIzMywgMTMxLCA4NiwgMjEzLCAyMzIsIDEzMSwgODYsIDIxMywgMjMxLCAxMzEsIDg2LCAyMTMsIDIzMCwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMjksIDEzMSwgODYsIDIxMywgMjI4LCAxMzEsIDg2LCAyMTMsIDIyNywgMTMxLCA4NiwgMjEzLCAyMjYsIAorICAgIDEzMSwgODYsIDIxMywgMjI1LCAxMzEsIDg2LCAyMTMsIDIyNCwgMTMxLCA4NiwgMjEzLCAyMjMsIDEzMSwgODYsIDIxMywgCisgICAgMjIyLCAxMzEsIDg2LCAyMTMsIDIyMSwgMTMxLCA4NiwgMjEzLCAyMjAsIDEzMSwgODYsIDIxMywgMjE5LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIxOCwgMTMxLCA4NiwgMjEzLCAyMTcsIDEzMSwgODYsIDIxMywgMjE2LCAxMzEsIDg2LCAyMTMsIDIxNSwgMTMxLCAKKyAgICA4NiwgMjEzLCAyMTQsIDEzMSwgODYsIDIxMywgMjEzLCAxMzEsIDg2LCAyMTMsIDIxMiwgMTMxLCA4NiwgMjEzLCAyMTEsIAorICAgIDEzMSwgODYsIDIxMywgMjEwLCAxMzEsIDg2LCAyMTMsIDIwOSwgMTMxLCA4NiwgMjEzLCAyMDgsIDEzMSwgODYsIDIxMywgCisgICAgMjA3LCAxMzEsIDg2LCAyMTMsIDIwNiwgMTMxLCA4NiwgMjEzLCAyMDUsIDEzMSwgODYsIDIxMywgMjA0LCAxMzEsIDg2LCAKKyAgICAyMTMsIDIwMywgMTMxLCA4NiwgMjEzLCAyMDIsIDEzMSwgODYsIDIxMywgMjAxLCAxMzEsIDg2LCAyMTMsIDIwMCwgMTMxLCAKKyAgICA4NiwgMjEzLCAxOTksIDEzMSwgODYsIDIxMywgMTk4LCAxMzEsIDg2LCAyMTMsIDE5NywgMTMxLCA4NiwgMjEzLCAxOTYsIAorICAgIDEzMSwgODYsIDIxMywgMTk1LCAxMzEsIDg2LCAyMTMsIDE5NCwgMTMxLCA4NiwgMjEzLCAxOTMsIDEzMSwgODYsIDIxMywgCisgICAgMTkyLCAxMzEsIDg2LCAyMTMsIDE5MSwgMTMxLCA4NiwgMjEzLCAxOTAsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTIsIDE4NCwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMTMsIDY0LCAyMTksIAorICAgIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAKKyAgICAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ0LCA4MSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTksIAorICAgIDEyNSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyNDUsIDE5MywgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIDIxOSwgMTUsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMTYsIDI0OCwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzUsIDEzOSwgCisgICAgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjE5LCAxNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIyNCwgMTUsIDY0LCAyMTksIDE1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjM0LCA3OSwgNjQsIDIxOSwgMTUsIDIyNSwgMzMsIAorICAgIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIDI0MSwgMjI1LCAKKyAgICAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDExLCA2NCwgCisgICAgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAKKyAgICAyMTksIDEyNSwgNjQsIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDEsIDIyNSwgMjI1LCAKKyAgICAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgNjQsIAorICAgIDI0MSwgMjI1LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyNDEsIDIyNSwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDIzNSwgMTM5LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQxLCAyMjUsIDIyNSwgCisgICAgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgMjQxLCAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgMjQxLCAKKyAgICAyMjUsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNTUsIDksIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAyNDMsIDExMywgNjQsIAorICAgIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMTM0LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIAorICAgIDExLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyNDQsIDgxLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMTksIDEyNSwgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjIwLCAxMjIsIDY0LCAyNDcsIDI0NywgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDI0NSwgMTkzLCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjgsIDIwMCwgCisgICAgNjQsIDI0NywgMjQ3LCAyMjUsIDMzLCAyNTAsIDI0MywgMjE2LCAyNDgsIDY0LCAyNDcsIDI0NywgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDIzNSwgMTM5LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDMxLCA2NCwgMjQ3LCAyNDcsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjQsIDE1LCA2NCwgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCAyMzQsIDc5LCA2NCwgCisgICAgMjQ3LCAyNDcsIDIyNSwgMzMsIDI1MCwgMjQzLCA4NSwgMjM1LCA2MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI1NSwgOSwgNjQsIAorICAgIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMTEzLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgMjQzLCAxMzQsIAorICAgIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDI0NCwgMTEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAKKyAgICAyNDMsIDI0NCwgODEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIxOSwgMTI1LCA2NCwgMjQ5LCAyNDIsIAorICAgIDIyNSwgMzMsIDI1MCwgMjQzLCAyMjAsIDEyMiwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjQ1LCAxOTMsIAorICAgIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIyOCwgMjAwLCA2NCwgMjQ5LCAyNDIsIDIyNSwgMzMsIDI1MCwgCisgICAgMjQzLCAyMTYsIDI0OCwgNjQsIDI0OSwgMjQyLCAyMjUsIDMzLCAyNTAsIDI0MywgMjM1LCAxMzksIDY0LCAyNDksIDI0MiwgCisgICAgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgMzEsIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIyNCwgMTUsIDY0LCAKKyAgICAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIDIzNCwgNzksIDY0LCAyNDksIDI0MiwgMjI1LCAzMywgMjUwLCAyNDMsIAorICAgIDcxLCAyMzUsIDYyLCAyMSwgMjEwLCA4NywgMjQzLCAyMjksIDIxOCwgMTI5LCAyMSwgMjEwLCA4NywgMjQ5LCAyMTksIDIxLCAKKyAgICAxMjMsIDI0OSwgMjE5LCAyMSwgMTEzLCAyNDksIDIxOSwgMjEsIDEzNCwgMjQ5LCAyMTksIDIxLCAyNDQsIDExLCAyNDksIAorICAgIDIxOSwgMjEsIDI0NCwgODEsIDI0OSwgMjE5LCAyMSwgMjE5LCAxMjUsIDI0OSwgMjE5LCAyMSwgMjIwLCAxMjIsIDI0OSwgCisgICAgMjE5LCAyMSwgMjQ1LCAxOTMsIDI0OSwgMjE5LCAyMSwgMjI4LCAyMDAsIDI0OSwgMjE5LCA4OCwgNywgNiwgMSwgNjEsIDg4LCAKKyAgICA3LCA2LCAxLCAyNTMsIDE1OCwgODgsIDcsIDYsIDEsIDI1MSwgNjYsIDg4LCA3LCA2LCAxLCAyNDksIDYwLCA4OCwgNywgNiwgCisgICAgMSwgNzUsIDg4LCA3LCA2LCAxLCAyNDUsIDYsIDg4LCA3LCA2LCAxLCAyNDMsIDIwMiwgODgsIDcsIDYsIDEsIDI0MiwgNjAsIAorICAgIDg4LCA3LCA2LCAxLCA3MywgODgsIDcsIDYsIDEsIDIzNSwgMTQ0LCA4OCwgNywgNiwgMSwgMjM1LCAyMywgODgsIDcsIDYsIAorICAgIDEsIDE1NiwgODgsIDcsIDYsIDEsIDE5MywgODgsIDcsIDYsIDEsIDIzMCwgMjUsIDg4LCA3LCA2LCAxLCA3NiwgODgsIDcsIAorICAgIDYsIDEsIDIyNiwgMTA1LCA4OCwgNywgNiwgMSwgMjI0LCA5NiwgODgsIDcsIDYsIDEsIDE1MywgODgsIDcsIDYsIDEsIDIyMiwgCisgICAgOTEsIDg4LCA3LCA2LCAxLCAyMTcsIDE1MiwgODgsIDcsIDYsIDEsIDcwLCA4OCwgNywgNiwgMSwgMjE0LCAxMDUsIDg4LCA3LCAKKyAgICA2LCAxLCAyMTIsIDk4LCA4OCwgNywgNiwgMSwgMjExLCAxNzgsIDg4LCA3LCA2LCAxLCAyMTEsIDExNywgODgsIDcsIDYsIDEsIAorICAgIDIxMCwgMTU5LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA3LCA2LCAxLCAyMjIsIDkxLCAzNywgMzIsIDcsIDYsIDEsIAorICAgIDI1MSwgNjYsIDM3LCAzMiwgNywgNiwgMSwgMTUzLCAzNywgMjUwLCAxOTEsIDM3LCAyMTEsIDE4MCwgOTIsIDcsIDYsIDEsIAorICAgIDYxLCA5MiwgNywgNiwgMSwgMjUzLCAxNTgsIDkyLCA3LCA2LCAxLCAyNTEsIDY2LCA5MiwgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgOTIsIDcsIDYsIDEsIDc1LCA5MiwgNywgNiwgMSwgMjQ1LCA2LCA5MiwgNywgNiwgMSwgMjQzLCAyMDIsIDkyLCA3LCA2LCAxLCAKKyAgICAyNDIsIDYwLCA5MiwgNywgNiwgMSwgNzMsIDkyLCA3LCA2LCAxLCAyMzUsIDE0NCwgOTIsIDcsIDYsIDEsIDIzNSwgMjMsIAorICAgIDkyLCA3LCA2LCAxLCAxNTYsIDkyLCA3LCA2LCAxLCAxOTMsIDkyLCA3LCA2LCAxLCAyMzAsIDI1LCA5MiwgNywgNiwgMSwgCisgICAgNzYsIDkyLCA3LCA2LCAxLCAyMjYsIDEwNSwgOTIsIDcsIDYsIDEsIDIyNCwgOTYsIDkyLCA3LCA2LCAxLCAxNTMsIDkyLCA3LCAKKyAgICA2LCAxLCAyMjIsIDkxLCA5MiwgNywgNiwgMSwgMjE3LCAxNTIsIDkyLCA3LCA2LCAxLCA3MCwgOTIsIDcsIDYsIDEsIDIxNCwgCisgICAgMTA1LCA5MiwgNywgNiwgMSwgMjEyLCA5OCwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCA5MiwgNywgNiwgMSwgMjExLCAxMTcsIAorICAgIDkyLCA3LCA2LCAxLCAyMTAsIDE1OSwgOTIsIDI0MCwgMjAxLCA5MiwgMjMwLCA0OSwgOTIsIDIyMSwgMTgzLCA5MiwgMjE4LCAKKyAgICAyMjYsIDkyLCAyMjQsIDIxOCwgOTIsIDIxMiwgMjMsIDE1MiwgMzcsIDcsIDYsIDEsIDYxLCAxNTIsIDM3LCA3LCA2LCAxLCAKKyAgICAyNTMsIDE1OCwgMTUyLCAzNywgNywgNiwgMSwgMjUxLCA2NiwgMTUyLCAzNywgNywgNiwgMSwgMjQ5LCA2MCwgMTUyLCAzNywgCisgICAgNywgNiwgMSwgNzUsIDE1MiwgMzcsIDcsIDYsIDEsIDI0NSwgNiwgMTUyLCAzNywgNywgNiwgMSwgMjQzLCAyMDIsIDE1MiwgCisgICAgMzcsIDcsIDYsIDEsIDI0MiwgNjAsIDE1MiwgMzcsIDcsIDYsIDEsIDczLCAxNTIsIDM3LCA3LCA2LCAxLCAyMzUsIDE0NCwgCisgICAgMTUyLCAzNywgNywgNiwgMSwgMjM1LCAyMywgMTUyLCAzNywgNywgNiwgMSwgMTU2LCAxNTIsIDM3LCA3LCA2LCAxLCAxOTMsIAorICAgIDE1MiwgMzcsIDcsIDYsIDEsIDIzMCwgMjUsIDE1MiwgMzcsIDcsIDYsIDEsIDc2LCAxNTIsIDM3LCA3LCA2LCAxLCAyMjYsIAorICAgIDEwNSwgMTUyLCAzNywgNywgNiwgMSwgMjI0LCA5NiwgMTUyLCAzNywgNywgNiwgMSwgMTUzLCAxNTIsIDM3LCA3LCA2LCAxLCAKKyAgICAyMjIsIDkxLCAxNTIsIDM3LCA3LCA2LCAxLCAyMTcsIDE1MiwgMTUyLCAzNywgNywgNiwgMSwgNzAsIDE1MiwgMzcsIDcsIDYsIAorICAgIDEsIDIxNCwgMTA1LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTIsIDk4LCAxNTIsIDM3LCA3LCA2LCAxLCAyMTEsIDE3OCwgMTUyLCAKKyAgICAzNywgNywgNiwgMSwgMjExLCAxMTcsIDE1MiwgMzcsIDcsIDYsIDEsIDIxMCwgMTU5LCAyMjMsIDE1NywgMjMxLCA5NywgNTAsIAorICAgIDIyMywgMTU3LCAyMzEsIDk0LCA1MCwgMTUyLCA5MiwgNywgNiwgMSwgNjEsIDE1MiwgOTIsIDcsIDYsIDEsIDI1MywgMTU4LCAKKyAgICAxNTIsIDkyLCA3LCA2LCAxLCAyNTEsIDY2LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDksIDYwLCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICA3NSwgMTUyLCA5MiwgNywgNiwgMSwgMjQ1LCA2LCAxNTIsIDkyLCA3LCA2LCAxLCAyNDMsIDIwMiwgMTUyLCA5MiwgNywgNiwgCisgICAgMSwgMjQyLCA2MCwgMTUyLCA5MiwgNywgNiwgMSwgNzMsIDE1MiwgOTIsIDcsIDYsIDEsIDIzNSwgMTQ0LCAxNTIsIDkyLCA3LCAKKyAgICA2LCAxLCAyMzUsIDIzLCAxNTIsIDkyLCA3LCA2LCAxLCAxNTYsIDE1MiwgOTIsIDcsIDYsIDEsIDE5MywgMTUyLCA5MiwgNywgCisgICAgNiwgMSwgMjMwLCAyNSwgMTUyLCA5MiwgNywgNiwgMSwgNzYsIDE1MiwgOTIsIDcsIDYsIDEsIDIyNiwgMTA1LCAxNTIsIDkyLCAKKyAgICA3LCA2LCAxLCAyMjQsIDk2LCAxNTIsIDkyLCA3LCA2LCAxLCAxNTMsIDE1MiwgOTIsIDcsIDYsIDEsIDIyMiwgOTEsIDE1MiwgCisgICAgOTIsIDcsIDYsIDEsIDIxNywgMTUyLCAxNTIsIDkyLCA3LCA2LCAxLCA3MCwgMTUyLCA5MiwgNywgNiwgMSwgMjE0LCAxMDUsIAorICAgIDE1MiwgOTIsIDcsIDYsIDEsIDIxMiwgOTgsIDE1MiwgOTIsIDcsIDYsIDEsIDIxMSwgMTc4LCAxNTIsIDkyLCA3LCA2LCAxLCAKKyAgICAyMTEsIDExNywgMTUyLCA5MiwgNywgNiwgMSwgMjEwLCAxNTksIDI0OSwgMTI4LCAxNTIsIDkyLCA3LCA2LCAxLCAyMjYsIAorICAgIDEwNSwgMTUyLCA5MiwgMjQwLCAxMTMsIDE1MiwgOTIsIDE5MCwgMTUyLCA5MiwgMjA2LCAxNTIsIDkyLCAyNTUsIDI1LCAKKyAgICAxNTIsIDkyLCAyMTIsIDIzLCA0MiwgMjQ3LCAxNjQsIDkyLCAyNTAsIDIzLCA5MiwgMjQ5LCAxNzAsIDkyLCAyNDMsIDI1MiwgCisgICAgOTIsIDI0MCwgMTA1LCA5MiwgMjI5LCA4NiwgOTIsIDIyOSwgNzksIDkyLCAyMjYsIDIxNCwgOTIsIDIxOSwgMzUsIDkyLCAKKyAgICAxMjAsIDIsIDI0NSwgMzEsIDc4LCA5MiwgMjEzLCAxMTksIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDYxLCAyMjMsIAorICAgIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyNTMsIDE1OCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjUxLCA2NiwgMjIzLCAKKyAgICAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjQ5LCA2MCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzUsIDIyMywgMTAzLCAKKyAgICAyMzUsIDIzOSwgMTYsIDEsIDI0NSwgNiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjQzLCAyMDIsIDIyMywgMTAzLCAKKyAgICAyMzUsIDIzOSwgMTYsIDEsIDI0MiwgNjAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDczLCAyMjMsIDEwMywgMjM1LCAKKyAgICAyMzksIDE2LCAxLCAyMzUsIDE0NCwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjM1LCAyMywgMjIzLCAxMDMsIDIzNSwgCisgICAgMjM5LCAxNiwgMSwgMTU2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAxOTMsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIAorICAgIDEsIDIzMCwgMjUsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDc2LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAKKyAgICAyMjYsIDEwNSwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjI0LCA5NiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgCisgICAgMTUzLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMjIsIDkxLCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTcsIAorICAgIDE1MiwgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgNzAsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxNCwgMTA1LCAKKyAgICAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTIsIDk4LCAyMjMsIDEwMywgMjM1LCAyMzksIDE2LCAxLCAyMTEsIDE3OCwgCisgICAgMjIzLCAxMDMsIDIzNSwgMjM5LCAxNiwgMSwgMjExLCAxMTcsIDIyMywgMTAzLCAyMzUsIDIzOSwgMTYsIDEsIDIxMCwgMTU5LCAKKyAgICA0MiwgMTQxLCAyNDEsIDYzLCA5MiwgNTYsIDIzNCwgMTgsIDkyLCA1NiwgMjA2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTAsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDYyLCA5MiwgNTYsIDI0OCwgOTAsIDkyLCAKKyAgICA5LCAyMTQsIDE3NywgMjM4LCA2OSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjgsIAorICAgIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1NSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgCisgICAgNDIsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzNSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQ0LCA5MiwgOSwgMjE0LCAxNzcsIAorICAgIDIzOCwgNjUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MSwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY3LCA5MiwgOSwgMjE0LCAKKyAgICAxNzcsIDIzOCwgNDMsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA2NiwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDI5LCA5MiwgOSwgCisgICAgMjE0LCAxNzcsIDIzOCwgMzQsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAyNywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDU3LCAKKyAgICA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzNywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIAorICAgIDQ4LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDYsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA3MiwgOTIsIDksIDIxNCwgMTc3LCAKKyAgICAyMzgsIDcxLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgMjUsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA1MiwgOTIsIDksIDIxNCwgCisgICAgMTc3LCAyMzgsIDcwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjEsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCA0NywgOTIsIDksIAorICAgIDIxNCwgMTc3LCAyMzgsIDI2LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDksIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAzMSwgCisgICAgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDMwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNjAsIDkyLCA5LCAyMTQsIDE3NywgMjM4LCAKKyAgICAzOCwgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDQwLCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNDEsIDkyLCA5LCAyMTQsIDE3NywgCisgICAgMjM4LCAzMywgOTIsIDksIDIxNCwgMTc3LCAyMzgsIDY0LCA5MiwgOSwgMjE0LCAxNzcsIDIzOCwgNTgsIDIxNiwgNiwgMjIwLCAKKyAgICA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDM5LCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAyMTQsIAorICAgIDE3NywgMjM4LCA3MSwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNjksIDIxNiwgNiwgCisgICAgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDUzLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCAzNiwgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNDksIDIxNiwgCisgICAgNiwgMjIwLCA1MywgMjUxLCAxNTcsIDksIDIxNCwgMTc3LCAyMzgsIDMyLCAyMTYsIDYsIDIyMCwgNTMsIDI1MSwgMTU3LCA5LCAKKyAgICAyMTQsIDE3NywgMjM4LCA2MywgMjE2LCA2LCAyMjAsIDUzLCAyNTEsIDE1NywgOSwgMjE0LCAxNzcsIDIzOCwgNDUsIDM3LCAKKyAgICAxNTQsIDI1NCwgMjQ1LCAzNywgMTU0LCAyNTUsIDEyLCAyNDksIDcxLCAyNDQsIDQyLCAyNTAsIDAsIDIxNCwgMTk0LCAyMjgsIAorICAgIDIxMywgMiwgMjE4LCAxNTMsIDIxOCwgMzMsIDExNywgMjMwLCAxMTQsIDIxOCwgMzIsIDI1MCwgMjYsIDI1MywgMjA3LCAKKyAgICAyNDYsIDU0LCAyMTgsIDMxLCAxMTcsIDI1MSwgMTE4LCAyMjMsIDE1OCwgMjUxLCAxNDAsIDI1MywgMjA3LCAyMjgsIDIxMiwgCisgICAgMjEyLCA0MSwgMjEyLCAzNSwgMjEzLCAxMzEsIDIzMCwgMTk1LCAyMTIsIDI1LCAyNDUsIDIyNCwgMjQyLCAxODEsIDI0NSwgCisgICAgNDUsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjU0LCAxMjgsIDI0NSwgMjI0LCAyNDIsIDE4MSwgMjUzLCAyMjUsIDI0MiwgMTgxLCAKKyAgICAyLCAyMzEsIDUxLCAxNjYsIDIzMCwgMTI5LCA4NywgMjEyLCAyNywgMjQ5LCAxMzcsIDIzMCwgMTI5LCA4NywgMjQ0LCA5MiwgCisgICAgMjI0LCAyMiwgMjMwLCAxMjksIDg3LCAyMTIsIDI3LCAyNDIsIDIxMCwgMjMwLCAxMjksIDg3LCAyNDMsIDIyOSwgMjMwLCAKKyAgICAxMjksIDg3LCAyMTIsIDUyLCAyNDIsIDIxMCwgMjMwLCAxMjksIDg3LCAyMzMsIDgwLCAyMjQsIDIyLCAyMzAsIDEyOSwgODcsIAorICAgIDIxMiwgNTIsIDI0OSwgMTM3LCAyMzAsIDEyOSwgODcsIDI0OSwgMTM3LCAyMzAsIDEyOCwgMTY2LCAyMzAsIDEyOSwgMiwgCisgICAgMjQ0LCAxOTAsIDI0NCwgOTIsIDIyNCwgMjIsIDIzMCwgMTI5LCAyLCAyNDQsIDE5MCwgMjMzLCA4MCwgMjI0LCAyMiwgMjMwLCAKKyAgICAxMjksIDIsIDI0NCwgMTkwLCAyNDMsIDIyOSwgMjMwLCAxMjksIDIsIDI0NCwgMTkwLCAyMTgsIDM4LCAyLCAyNDQsIDE5MCwgCisgICAgMjQyLCAxNzksIDIxOCwgMTU2LCAyMTksIDI1NSwgMjE4LCAxNTYsIDI1MCwgMTE2LCAyMjEsIDE2OCwgMjQ1LCAzOSwgMjE1LCAKKyAgICAyMzUsIDI0OCwgODQsIDIxNSwgMjM1LCAyMjYsIDU5LCAyMTUsIDIzNSwgMjUxLCAyNywgMjE1LCAxMDksIDI1MCwgMTE4LCAKKyAgICAyNTEsIDIxMCwgMjIyLCAxOTEsIDI0MSwgMTc5LCAyMTgsIDM2LCAyNTEsIDIxMCwgMjQ1LCAyMjgsIDY0LCAyMzEsIDE5NCwgCisgICAgMjQ1LCAyMjgsIDY0LCAyMjMsIDMxLCAyNDEsIDIwNCwgMjQ0LCAxMSwgMjMzLCA1NCwgMjQ5LCAyNDYsIDIzMSwgMTcwLCAKKyAgICAyMzMsIDUzLCAyNDQsIDE3NiwgMjMzLCA1MywgMjMzLCA1NCwgMjQ0LCA0NywgMjM2LCAwLCAyMTEsIDIzOSwgMjMwLCA1OCwgCisgICAgMjE2LCAzNCwgMjUzLCAxOTEsIDI0MiwgMTQzLCAyMzEsIDY3LCAyMTIsIDM5LCAyMTcsIDU3LCAyMzMsIDI2LCAyNTIsIAorICAgIDE0OSwgMjI1LCA2MiwgMjIzLCAxMTEsIDI1NCwgNTQsIDI0MiwgMTI3LCAyNTQsIDU0LCAyMjUsIDIxNywgMjI1LCAyMTgsIAorICAgIDI1MCwgMTE5LCAyMTgsIDExNCwgMjQyLCAyMywgMjE5LCA5MCwgNjQsIDIyNSwgNDQsIDIzMSwgODcsIDIyNiwgMTk3LCAKKyAgICAyNTEsIDE5NCwgMjI0LCAyMjksIDIzMywgMzYsIDIyMywgMzIsIDI0OSwgMTQyLCAyMjMsIDMyLCAyNTIsIDE1OSwgMjQ5LCAKKyAgICAxNzMsIDIyMywgMzEsIDI0OSwgOTUsIDIyLCAyMjMsIDMxLCAyMTgsIDE0MSwgMjUxLCAxNjcsIDIxOSwgMTQsIDI1MSwgCisgICAgMTUxLCAyNDMsIDI1MSwgMjQzLCAyNDcsIDIyMiwgMjA3LCAyMTcsIDI0NiwgMjI0LCAyMzEsIDI0OCwgMTc1LCAyMjYsIAorICAgIDIzNiwgMjE4LCA3LCAyNDMsIDI0OCwgMjE5LCAyMzAsIDI0NCwgOTEsIDI1MSwgMjEsIDIsIDIxNywgMjM5LCAyNDgsIDM1LCAKKyAgICAyMTksIDUyLCAyNDAsIDExMiwgMjQ5LCAxNDEsIDIyMCwgNzAsIDI0MCwgMTExLCAyNDAsIDExMiwgMjQ5LCAxNDEsIDI0NiwgCisgICAgMTA4LCAyNDksIDE3MiwgMjUwLCA4NCwgMTMwLCAyNTAsIDI1NCwgMjMyLCAxNDEsIDI0OSwgODgsIDI0MSwgNTUsIDIyNCwgCisgICAgMjMzLCAyMTksIDI0MCwgMjUyLCAzNiwgMjUxLCAxNjMsIDIyNCwgMjM0LCA2NCwgMjQ0LCAzMywgMjQ5LCAxNzEsIDI0NCwgCisgICAgMjQsIDIyLCAyMzQsIDMyLCAyMTcsIDE5LCAyMTEsIDIzMCwgMjQyLCAxMywgMjIyLCAxMiwgMjUxLCAxNzcsIDIyLCAyNDksIAorICAgIDEwMiwgMjExLCAyMzcsIDI0MiwgMTg0LCAyNDksIDIzNSwgMjQyLCAxODQsIDIxNSwgMTkzLCAyNDYsIDkwLCAyNTIsIDYyLCAKKyAgICAyMzAsIDkzLCAyNTAsIDcsIDI1MiwgNjIsIDIzMCwgOTIsIDI1MiwgMTg3LCAyNTEsIDE3NiwgMjIzLCAzMywgMjExLCAyMDEsIAorICAgIDIyNCwgMTk1LCAyNTEsIDIzNSwgMjUxLCAyMCwgMjM1LCAxMzgsIDI1MCwgNzcsIDIxNSwgMjM1LCAyNDQsIDE2MiwgMjUwLCAKKyAgICA3NiwgMjQ0LCA5NCwgMjQ0LCA5NSwgMjE5LCAxMiwgMjUyLCAxNTgsIDIyNSwgMjUwLCAyMjQsIDI0NCwgMjQ5LCAyMDQsIAorICAgIDI1MiwgMTU5LCAyMTcsIDU5LCAyMTUsIDIzNSwgMjQ5LCAxMjgsIDI0NCwgNjcsIDIyNSwgNjMsIDI0OCwgODEsIDIzNSwgCisgICAgMTMxLCAyNDcsIDEzMSwgMjUwLCAyMzIsIDIxOCwgMTEzLCAyMTEsIDI0MCwgMjUwLCA5OCwgMjMwLCAxMjksIDIxMywgMTY0LCAKKyAgICAyNTAsIDE2MiwgMjIxLCAxOTksIDIyMSwgMjI0LCAyNDIsIDE0OCwgMjUwLCAyNTEsIDI1MCwgMjMzLCAyNDAsIDI0NSwgCisgICAgMjQ0LCAxMzAsIDIxMiwgMCwgMjIyLCAyMDAsIDI0OSwgMjM2LCAyNDQsIDg2LCAyMjUsIDIsIDIyLCAyNDQsIDkwLCAyMzAsIAorICAgIDIyNywgMjMwLCAxMDgsIDI1MSwgMTAsIDI1MCwgMzksIDI0MSwgMjMyLCAyNTMsIDI0MSwgMjI2LCA2MiwgMjE2LCAxNCwgCisgICAgMjQxLCAyNTEsIDI1MCwgMjksIDIxNiwgMjQyLCAyMTYsIDExMywgMjUwLCAyMCwgMjUxLCAyMDIsIDIyNSwgMTc3LCAyNTMsIAorICAgIDI0MCwgMjEzLCAxNzIsIDI0MywgMTEwLCAyNDcsIDE5NywgMjQxLCAxNTYsIDIxOSwgODQsIDIzMSwgMjM0LCAyNTEsIDI0NSwgCisgICAgMjQzLCAxMTEsIDI0NywgMjQwLCAyNTEsIDE2NiwgMjQ0LCA1MiwgMjI1LCAzMywgMjUwLCAyNDEsIDI4LCAyMjgsIDQ3LCAKKyAgICAyMzAsIDg1LCAyOCwgMjI4LCA0MiwgMjIxLCAyMTIsIDI0MiwgOTksIDI4LCAyMzQsIDEzNywgMjE1LCAxOTAsIDIxMywgCisgICAgMTU0LCAyOCwgMjIxLCAxOTIsIDIyMiwgMTI0LCAyMjAsIDExLCAyLCAyMjEsIDIyNywgMjE2LCAyNDQsIDIyMywgMTc4LCAKKyAgICAyMiwgMjUyLCAxNTksIDIxOSwgMTA1LCAyMiwgMjE5LCAxMDUsIDI1MSwgMTg3LCAyNTIsIDEyMywgMjIsIDI0MSwgNDksIAorICAgIDI1MCwgMTIwLCAyNDQsIDczLCAyMTksIDYzLCAyMjIsIDEyNSwgMjE4LCAxMiwgMjE1LCAxOTQsIDI0MCwgMjQ2LCAyMjMsIAorICAgIDE3OSwgMjU0LCAxMjksIDI0NCwgMzEsIDIyMiwgMTM2LCAyNDQsIDMxLCAyMTcsIDI0MSwgMjQwLCAyMzUsIDI1MSwgMTE5LCAKKyAgICAyNDAsIDIzNSwgMiwgMjQzLCA5NCwgMjI2LCAyMjksIDI1MSwgMTE5LCAyMzUsIDEzMSwgMjI0LCAyMzksIDIyNiwgMjI4LCAKKyAgICAyNDUsIDQ0LCAyMjQsIDIzOSwgMjI2LCAyMjgsIDI0MCwgMjQ0LCAyNTIsIDE0NSwgMjUzLCAxODEsIDIxNiwgMjUyLCAyMzEsIAorICAgIDIzNCwgMjQwLCAyNDAsIDIzMiwgMTExLCAyNDAsIDI0MCwgMjQ5LCAxNzYsIDIxOCwgMTI1LCAyMjEsIDE5OCwgMjQ4LCA0MywgCisgICAgMjE4LCAxMjUsIDI0NCwgMTgwLCAyMzUsIDE0OSwgMjMzLCA4OSwgMjM1LCAxMzEsIDI1MCwgMjI2LCAyNDUsIDQ0LCAyNTAsIAorICAgIDIyNiwgMjIzLCAxNDEsIDIzMCwgMTEyLCAyMjYsIDExNCwgMjEyLCA0MSwgMjUxLCAxMjMsIDI0OSwgMTQ1LCAyMTYsIDEwNiwgCisgICAgMjMzLCAxOCwgMjIzLCAxODAsIDI1MCwgMjI0LCAyNDYsIDk2LCAyNDksIDEzNSwgMjEyLCAzLCAyMTksIDcwLCAyMTksIDY4LCAKKyAgICAyNDAsIDI0NSwgMjIzLCAxNTMsIDI0MiwgMTcwLCAyMjAsIDU3LCAyMzAsIDE0NSwgMjIyLCAxOTQsIDI1MCwgMTA4LCAyNDcsIAorICAgIDEzNiwgMjI1LCA3MywgMjUxLCAyMDMsIDI0NSwgMTY5LCAyMjYsIDIzOCwgMjE4LCAyNTIsIDIyMCwgNTIsIDI1MSwgMTIyLCAKKyAgICAyNTQsIDkyLCAyNDEsIDU0LCAyMzMsIDEyMSwgMjUyLCA2MCwgMjQ0LCA5MCwgMjE1LCAxOTMsIDI0NCwgOTAsIDI1MSwgCisgICAgMjA5LCAyMTUsIDkxLCAyNDEsIDI0OSwgMjUwLCAxMDksIDI1MiwgMTg3LCAyNTAsIDEwOSwgMjQzLCAyNDIsIDI1MiwgMTg3LCAKKyAgICAyNTAsIDEwOSwgMjUxLCAyMzcsIDIyNSwgMTk1LCAyMzQsIDI2LCAyMjQsIDI0OCwgMjQ2LCA4NywgMjUxLCAxMSwgMjUyLCAKKyAgICAxNzcsIDI1MSwgMTEsIDI0NywgMTMwLCAyMzAsIDExMywgMjQ0LCAxOTAsIDI0OSwgMTQ2LCAyNDQsIDE5MCwgMjE2LCAxMDcsIAorICAgIDI0NCwgMTkwLCAyMjMsIDE4MSwgMjQ0LCAxOTAsIDI1MCwgMjI1LCAyNDQsIDE5MCwgMjQ2LCA5NywgMjQ0LCAxOTAsIDIxOCwgCisgICAgMjQxLCAyMTIsIDMsIDI0MCwgMjQ2LCAyNDQsIDE5MCwgMjMwLCAxNDYsIDI0NCwgMTkwLCAyNDcsIDEzNywgMjQ0LCAxOTAsIAorICAgIDIyNSwgNzQsIDI0NCwgMTkwLCAyNDMsIDI0NSwgMjQ0LCAxOTAsIDI0MiwgMjAsIDI0NCwgMTkwLCAyMTEsIDIyNCwgMjQ0LCAKKyAgICAxOTAsIDI1MiwgNzEsIDI0NCwgMTkwLCAyMjYsIDQ1LCAyNDQsIDE5MCwgMjI1LCA3NCwgMjI4LCA1MywgMjI1LCAyMzIsIAorICAgIDIyNCwgMTg2LCAyNDUsIDEzLCAyNDUsIDIyNywgMjI4LCA1MywgMjMwLCAxMTAsIDIxNiwgMTksIDcxLCAxMjAsIDIyNSwgNywgCisgICAgMjUyLCAxODIsIDIzNSwgMjQyLCA3MSwgMTI0LCAyMjUsIDcsIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDQzLCAyMjUsIDcsIAorICAgIDI1MiwgMTgyLCAyMzUsIDI0MiwgNzEsIDQ0LCAyMjUsIDcsIDI1MiwgMTgyLCAyMzUsIDI0MiwgMjQ0LCA4NCwgMjQyLCAxNiwgCisgICAgNTAsIDIxMiwgMzMsIDI0MiwgMTYsIDUwLCAyMjYsIDIxNSwgMjQyLCAxNiwgNTAsIDIxNiwgMTM1LCAxMjAsIDUwLCAyMTYsIAorICAgIDEzNSwgMTI0LCA1MCwgMjUwLCAxOSwgMjQyLCAxMSwgNTAsIDIwNCwgMjQyLCAxMSwgNTAsIDI0OSwgMTIzLCAyMTEsIDIyMCwgCisgICAgMjQxLCAyNTEsIDI0NSwgMTQsIDIyOSwgMTA0LCAyMTcsIDE1MSwgMjM1LCAxMjUsIDI0NiwgOTIsIDIzNCwgODIsIDI1MSwgCisgICAgMjQ3LCAyMTEsIDIyMCwgMjQ5LCAyNDksIDIyNCwgMTI3LCAyNDIsIDE0LCAyMjQsIDIzMCwgMjMxLCAxNzcsIDIyMCwgNCwgCisgICAgMjUzLCAyMDMsIDIyMCwgNCwgMjQxLCAxNjQsIDIyMCwgNCwgMjExLCAyMjAsIDIyMSwgMjQwLCAyMTEsIDIyMCwgMjUxLCAKKyAgICAxODYsIDI0NCwgMjksIDI1MSwgOTAsIDIzNiwgMCwgMjE5LCAxNjksIDI1MSwgODksIDIzNiwgMCwgMjE5LCAxNjksIDI1MSwgCisgICAgMTYyLCAyNDIsIDE5NCwgMjMxLCAxODUsIDIxMSwgMjIxLCAyNDQsIDE3NCwgMjMxLCAxODYsIDIyLCAyMTEsIDIyMiwgMjQxLCAKKyAgICA2MCwgMjQyLCAxMCwgMTEzLCAyMzEsIDU5LCAyNDEsIDYwLCAyNDIsIDEwLCAxMTMsIDIxMSwgMjE5LCAyNDEsIDYwLCAyNDIsIAorICAgIDEwLCAyMjQsIDI1NSwgMjI2LCAyMjcsIDIxMSwgMjIyLCAyLCAyNTEsIDEwNiwgMjQ1LCAyMjUsIDI1MSwgMTQxLCAyLCAKKyAgICAyMTMsIDI0NiwgMjI1LCAxNjgsIDIsIDI1MSwgMjEyLCAyNDIsIDM0LCAyMzEsIDE4NiwgMiwgMjQyLCAxMTAsIDIyNSwgCisgICAgMTA5LCAyMzEsIDE3NCwgMjMxLCAxODYsIDIsIDIxNSwgOTcsIDIyNiwgMjA4LCAyMzEsIDE4NSwgMjI2LCAyMDgsIDIxMSwgCisgICAgMjIxLCAyNTIsIDE4NiwgMjQ5LCAxOTAsIDIxMSwgMjA1LCAyMjQsIDE4OSwgMjM1LCAxMzEsIDIyNiwgMjIzLCAyMzUsIAorICAgIDEzMSwgMjQyLCAxNjksIDI0MiwgMjIyLCAyNTIsIDE4NywgMjU0LCAxMTMsIDI0NSwgMTgsIDI1NCwgMTYwLCAyNTQsIDE2MSwgCisgICAgMjMwLCAxMzYsIDIzNiwgNSwgMjE5LCAxMDAsIDIzNSwgMjMyLCAyNDgsIDM0LCAyMjUsIDE2NywgMjQyLCAxMDUsIDI0OCwgCisgICAgMTc5LCAyMzIsIDIwMSwgMjI5LCAyMTEsIDIyNCwgMjU0LCAyNDQsIDE5MSwgMjMxLCAxNDIsIDI0MiwgMzMsIDI1MiwgMTM4LCAKKyAgICAyMjUsIDEsIDIxNywgMTcxLCAyMjUsIDY2LCAyMzQsIDY0LCA3OCwgMjMyLCAxMTEsIDIzMywgMTAsIDIyMiwgMjMzLCAyNDMsIAorICAgIDU0LCAyMTgsIDEzMSwgMjM0LCA2MywgMjUxLCAxNzEsIDI0OSwgMTQ4LCAyLCAyNDEsIDIyNywgMjEyLCAxOSwgMjUyLCA2OSwgCisgICAgMjQxLCAyMjcsIDI1MSwgMTM1LCAyNDEsIDIyNywgMTEzLCAyNDEsIDIyNSwgMjE5LCAxMCwgMjQxLCAyMjcsIDI0MiwgMTIwLCAKKyAgICAyNDEsIDIyNywgMjQxLCAyMjgsIDIsIDc0LCAyNTEsIDIwOCwgMjQxLCAyMjcsIDI0MiwgMTI3LCAyNDEsIDIyNywgMjExLCAKKyAgICA0MiwgMjQxLCAyMjcsIDIyNCwgMTI4LCAyNDEsIDIyNywgMjQxLCAyMjgsIDIsIDIyMywgMzMsIDIyMywgNDQsIDI0MSwgCisgICAgMjI1LCAyNDEsIDIyOCwgMjQ4LCA4MSwgMjQ3LCAyNDksIDIyMCwgODIsIDIsIDExNSwgNTksIDIzNSwgMjE1LCAyNDUsIAorICAgIDE3MiwgMTkyLCAyNTEsIDExNiwgMjU0LCAxMTIsIDg3LCAyNTEsIDE5NSwgMjE5LCA5MiwgODcsIDI0OSwgMjI4LCA4NywgCisgICAgMjE4LCAyNDYsIDIxNywgMjQ4LCA4NywgMjQ2LCA4NSwgMjQ4LCAxNTcsIDg3LCAyMjUsIDY3LCA2NCwgMjI0LCAyNDksIAorICAgIDI0NCwgNjEsIDI1MiwgMywgMjQ3LCAxNjUsIDg3LCAyMTksIDMsIDI1MiwgMTU4LCAyMTYsIDE0OSwgMjUyLCAxNTgsIDcxLCAKKyAgICAyNDQsIDUxLCAyNDAsIDIxMSwgMjI1LCA1LCA4NywgMjMwLCAxNDksIDI1MiwgMTcyLCAyNDksIDk4LCAyNDUsIDMyLCAxMTQsIAorICAgIDI0NywgMTMyLCA1MCwgMjQ5LCAxMzksIDI1MCwgMjQyLCAyNTIsIDE0NCwgMiwgMjExLCA0MCwgNTAsIDI1MiwgMTQ0LCAyLCAKKyAgICAyNDcsIDEzMiwgNTAsIDI1MiwgMTQ0LCAyLCAyNDUsIDQ3LCA1MCwgMjUyLCAxNDQsIDIsIDIyNCwgMjI4LCA1MCwgMjMwLCAKKyAgICAxNDksIDIsIDIxMSwgMjM1LCAyNTAsIDEzOCwgMiwgMjE0LCAxNTMsIDIxNSwgMjMxLCAyMiwgMjExLCA0MCwgNTAsIDIyMSwgCisgICAgMTc4LCAyMjUsIDE2NiwgMjQ5LCAyMDgsIDI1MSwgMTM5LCAyMzAsIDE4NiwgMjQ0LCA1NiwgMjQ3LCAxODUsIDIyNiwgMTYxLCAKKyAgICAyNDcsIDE5MCwgMjQ2LCA0OSwgMjQ0LCAxMDcsIDI0NCwgNDAsIDIwNCwgMjQ0LCAxMDcsIDI0NCwgNDAsIDIyNiwgNzYsIDIsIAorICAgIDI0OSwgMTAwLCAyMjYsIDc2LCAyNDQsIDE4MywgMjE0LCAxNjMsIDI1MSwgMTYsIDIxNywgMTgsIDI1MSwgMTYsIDI1MCwgCisgICAgMjQzLCAyMzUsIDI0MiwgMjUwLCAxMzgsIDIsIDIxNCwgMTUzLCAyMTUsIDIzMCwgMjUwLCAxMzgsIDIsIDI0NiwgMTA0LCAKKyAgICAyMTUsIDIzMCwgMjUyLCAxNDEsIDI1MCwgMTM3LCAyNTAsIDYsIDIyNCwgMTIzLCAyMjIsIDE4NSwgMjI0LCAxMjMsIDIyNiwgCisgICAgMTksIDIxOCwgMTIxLCAyMjIsIDEzMSwgMjE1LCAyMjIsIDIyMiwgMTMxLCAyNTEsIDE5MSwgMjE3LCA5MSwgMjMzLCA1MSwgCisgICAgMjI4LCA0NSwgMjI4LCA0NiwgMiwgMjQ4LCA4MCwgMjQ5LCAxNDcsIDI1MCwgMCwgMjUxLCAxOTIsIDIwNCwgMjUxLCAxOTIsIAorICAgIDI0MiwgMTI3LCAyNTEsIDE5MiwgMjUxLCAyMDgsIDI1MSwgMTkyLCAyMjYsIDE1NywgMjUxLCAxOTIsIDI1MSwgMTg5LCAKKyAgICAyMjksIDIwNSwgMjUyLCAxNzUsIDIyMSwgMTg2LCAyMzEsIDYwLCAyMTcsIDEsIDIyMywgMTIzLCAyMjYsIDc0LCAyNDQsIAorICAgIDE1OSwgMjMxLCAyMzQsIDIyMSwgMjIzLCAyNTQsIDg5LCAyMjQsIDE0NSwgMjU0LCAyNTIsIDIzMiwgMTEzLCAyNTAsIDEyNywgCisgICAgMjMxLCA3MiwgMjI2LCAxMjksIDIxNSwgMjM4LCAyMzUsIDI1MiwgMjE1LCAyMzgsIDIyNiwgODIsIDI0NiwgMjQsIDg3LCAKKyAgICAyMzUsIDI0OSwgMjQ1LCAxMTksIDI0NSwgMTIwLCAyLCAyNDYsIDEwNCwgODAsIDQ4LCAyNTAsIDAsIDIzMSwgMjAwLCAyLCAKKyAgICAyMzIsIDEwNywgMjQ0LCA3MywgMjUwLCAwLCAyMzEsIDIwMCwgMiwgMjIzLCAxNTcsIDI0NCwgNzMsIDIwNCwgMjMxLCAyMDAsIAorICAgIDIsIDIyMywgMTU3LCAyNDQsIDczLCAyMDQsIDIzMSwgMjAwLCAyLCAyMzIsIDEwNywgMjQ0LCA3MywgMjI0LCAyMzYsIDIyNCwgCisgICAgMjM3LCAyNDAsIDI0OCwgMjI5LCA4NCwgMjMwLCAxNTksIDIyNSwgMTE3LCAyMzAsIDE1OSwgMjI1LCAxMTgsIDIsIDk3LCAKKyAgICA4MCwgMjUzLCAyMDcsIDIzMywgNDYsIDIxMywgMTc1LCAyMzAsIDE1OCwgMjMwLCAxNTksIDIyNSwgMTE4LCAyMjYsIDIzMCwgCisgICAgMjI4LCA3NSwgMjMwLCAxNTksIDIyNSwgMTE2LCAyNTQsIDkwLCAyLCAyNTIsIDEyOSwgMjUxLCAxMCwgMjEzLCAxNzIsIAorICAgIDI1MSwgMTAsIDIxNiwgMjU0LCAyMjMsIDE3MywgMjEzLCAxNzEsIDIxNSwgNjAsIDk3LCAyNTMsIDI0NywgMjUwLCAyLCA5NywgCisgICAgMjIsIDE0MCwgMjA0LCAyNTAsIDM2LCAyNTMsIDI0NywgMjUwLCAyLCA5NywgMjIsIDE0MCwgMjA0LCAyNTAsIDM2LCAyNTMsIAorICAgIDI0OCwgMiwgMzcsIDEyMywgMjI2LCAxMjAsIDI1MCwgMiwgMjQ2LCAxMDQsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDM2LCAKKyAgICAyNTMsIDI0NywgMjU0LCA4OCwgMjQ2LCAxMDQsIDIyLCAyMTQsIDE1MywgMjA0LCAyNTAsIDM2LCAyNTMsIDI0NywgMTIxLCAKKyAgICAyNTEsIDEzOCwgODcsIDEyNSwgMjUxLCAxMzgsIDg3LCAyMTksIDcsIDIsIDI1MSwgNCwgOTEsIDIxOSwgNiwgMjE5LCA3LCAKKyAgICAyLCAxMjMsIDIxOSwgMzEsIDIxMiwgMzUsIDIxOSwgNywgMiwgMTM0LCAyMTksIDMxLCAyMTIsIDM0LCAyNTIsIDExNSwgCisgICAgMjQ1LCAxNzIsIDIyNSwgMjcsIDIzMywgNDIsIDIzMSwgMjExLCAyNDIsIDE4NCwgMjIyLCAyNDcsIDIzMSwgMjExLCAyNDIsIAorICAgIDE4NCwgMjMyLCAxNTIsIDIsIDIzNSwgMjI1LCAyMjUsIDE5OSwgMjUwLCAwLCAyMzIsIDE1MiwgMiwgMjM0LCAxMzgsIDIzNCwgCisgICAgMTM4LCAyMzIsIDE1MSwgMjA0LCAyMzIsIDE1MSwgMjUyLCA0NCwgMjUyLCA0NSwgMiwgMjUxLCA0LCA5MSwgMjUxLCAxOTAsIAorICAgIDIzMiwgMjA0LCA4NywgMjIzLCAxNzQsIDI1MSwgODYsIDI1MiwgMTg1LCAyLCAxNDAsIDgwLCA0OCwgMjQ1LCAxNDMsIDIsIAorICAgIDE0MCwgODAsIDQ4LCAyMjYsIDE5NywgMiwgMjQ1LCAzMSwgMTY0LCAyLCA0MywgNDQsIDgwLCA0OCwgMjE5LCAzOSwgMiwgCisgICAgOTcsIDgwLCA0OCwgMjE2LCAxNCwgMiwgMjE0LCAxNTMsIDgwLCA0OCwgMjI4LCA3NSwgMTIzLCAyMTQsIDE4NCwgMjQ1LCAKKyAgICAxOTEsIDg3LCAyMzQsIDEzNiwgMjE2LCAyNDcsIDIzNSwgMjE5LCAxNiwgMzEsIDcsIDYsIDIzMywgOSwgMjM1LCAyMTksIAorICAgIDE2LCAzMSwgNywgNCwgMjMzLCA5LCAyMzUsIDIxOSwgMTYsIDMxLCAyMjcsIDE5OSwgMjM1LCAyMTksIDE2LCAzMSwgMjE3LCAKKyAgICAxODMsIDIzNSwgMjE5LCAxNiwgMzEsIDcsIDIzMywgOSwgMjQ0LCA5NiwgMjQ1LCAxNzIsIDIxNiwgOSwgMjExLCAxOTksIAorICAgIDI0MiwgMjEsIDIyNywgMTgyLCAyMiwgMjUxLCAxOTcsIDI0MSwgNjYsIDIyNSwgNTAsIDIzMCwgMjI2LCAyMTYsIDI1NSwgCisgICAgMjQ5LCAxMTQsIDI1MiwgMTU5LCAyMTksIDEyNSwgMjI1LCA5LCAyMTgsIDE1NywgMiwgMjMwLCAyMjQsIDI0NywgMTIwLCAKKyAgICAyMzUsIDEzMSwgMTYsIDMxLCAyNTIsIDU3LCAyMTUsIDIyMCwgMjQ1LCAxNTYsIDg1LCA0MiwgMjUxLCA4NiwgNzEsIDQyLCAKKyAgICAyNTEsIDg2LCAyMzMsIDg1LCAyMjMsIDExMSwgMjUwLCAzNSwgMjMzLCA4NSwgMjUxLCAyMDgsIDI1MCwgMzUsIDIzMywgODUsIAorICAgIDIyNiwgMTU3LCAyNDcsIDI0OCwgMjMzLCA4NSwgMjUxLCAyMDgsIDI0NywgMjQ4LCA0LCAyMjYsIDE1NywgMjQ3LCAyNDgsIAorICAgIDQsIDI1MSwgMjA4LCAyNDcsIDI0OCwgMjE0LCAxNjIsIDIyMywgMTExLCAyMTUsIDIyNSwgMjQ2LCAxMDUsIDIyMywgMTExLCAKKyAgICAyMTUsIDIyNSwgMjE0LCAxNjIsIDQsIDIyMywgMTExLCAyMTUsIDIyNSwgMjQ2LCAxMDUsIDQsIDIyMywgMTExLCAyMTUsIAorICAgIDIyNSwgMzcsIDI0OSwgMTMxLCAyMjQsIDI1MiwgMjQ5LCAxMzEsIDIyNCwgMjUzLCAyLCAyNDIsIDI2LCA1MSwgMjQ5LCAKKyAgICAxMzEsIDIyNCwgMjUyLCAyMjgsIDQ5LCA0MywgMjIwLCAxNTMsIDIsIDEzNCwgMjQ3LCAxMTgsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDEyMywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDExMywgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDEzNCwgCisgICAgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NCwgMTEsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDgxLCAKKyAgICAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE5LCAxMjUsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMjAsIAorICAgIDEyMiwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NSwgMTkzLCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgCisgICAgMjI4LCAyMDAsIDIyNiwgMjQyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIDI0OCwgMjI2LCAyNDIsIDI1MCwgNCwgMjQ0LCAKKyAgICAxOTEsIDI0NSwgMTY4LCAyMjYsIDI0MiwgMjUwLCA0LCAyNDQsIDE5MSwgMjE1LCA3NywgMjI2LCAyNDIsIDI1MCwgNCwgCisgICAgMjQ0LCAxOTEsIDIyNiwgMTkyLCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDU2LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTYsIAorICAgIDE0MCwgMjUwLCA0LCAyNDQsIDE5MSwgMjQ0LCA3LCAyNTAsIDQsIDI0NCwgMTkxLCAyNDQsIDc5LCAyNTAsIDQsIDI0NCwgCisgICAgMTkxLCAyMTksIDEyMSwgMjUwLCA0LCAyNDQsIDE5MSwgMjIwLCAxMjEsIDI1MCwgNCwgMjQ0LCAxOTEsIDI0NSwgMTkyLCAKKyAgICAyNTAsIDQsIDI0NCwgMTkxLCAyMjgsIDE5OSwgMjUwLCA0LCAyNDQsIDE5MSwgMjE2LCAyNDYsIDI1MCwgNCwgMjQ0LCAxOTEsIAorICAgIDI0NSwgMTY2LCAyNTAsIDQsIDI0NCwgMTkxLCAyMTUsIDc1LCAyMzAsIDExNywgMjQzLCAyMzAsIDIxNiwgMzYsIDIxNiwgMiwgCisgICAgMjE4LCAxNDgsIDY0LCAyMzIsIDIzOSwgMjE5LCAxNzAsIDY0LCAyMzUsIDEzMiwgMjMwLCAxMDYsIDI0MiwgMTI0LCAyNDQsIAorICAgIDE5MCwgMjQyLCAxMjQsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNDQsIDE5MSwgMiwgMjE3LCAxNCwgNjQsIAorICAgIDIzNSwgNTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAKKyAgICAyMzAsIDExMSwgMjIsIDIxOSwgNzQsIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTExLCAyMiwgCisgICAgMjQ5LCAyMzAsIDIxNywgMjQ3LCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjA0LCAyMzAsIDExMSwgMjIsIDIxNiwgMTA0LCAKKyAgICAyNDUsIDEzLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQyLCAyNSwgMjE5LCA3NCwgMjQ0LCAxOTEsIDIsIDI0MCwgMjQ3LCAKKyAgICAyMTEsIDIzMywgMjQ0LCAxOTAsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMTksIDc0LCAyNDUsIDEzLCAyNDQsIDE5MSwgCisgICAgMjIxLCAyMTcsIDI0OCwgNjIsIDI0NCwgMzMsIDIyMywgODgsIDI0NCwgMTkwLCAyMTksIDc0LCAyNDQsIDE5MSwgMiwgMjQxLCAKKyAgICAyMjYsIDI0NSwgMTMsIDIxOSwgNzQsIDI0NCwgMTkxLCAyLCAyMTgsIDM0LCAyMTksIDczLCAyNDQsIDE5MCwgMjI5LCA4NywgCisgICAgMjQ0LCAxOTAsIDI0NSwgMjMsIDI0NCwgMTkwLCAyMTQsIDE4OCwgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyNDksIDIzMCwgCisgICAgMjE3LCAyNDcsIDIyNSwgMTkyLCAyNDQsIDE5MCwgMjQ5LCAyMDEsIDI0NCwgMTkwLCAyNDksIDIwMiwgMjQ0LCAxOTAsIAorICAgIDIzNCwgNjIsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMjE2LCAxMzcsIDExNSwgMjM0LCA2MywgMjM0LCA2MiwgMjQ0LCAxOTEsIAorICAgIDIsIDIxOSwgNzQsIDI0NSwgMTMsIDIzNCwgNjIsIDI0NCwgMTkxLCAyLCAyNTAsIDAsIDI0NSwgMTMsIDI0NCwgMTkxLCAyLCAKKyAgICAyMTgsIDg4LCAyMTYsIDE5LCAyNDQsIDE5MSwgMiwgMjE4LCA4OCwgMjE2LCAyMCwgMjIsIDIxMSwgMjMzLCAyNDUsIDE1LCAKKyAgICAyNDQsIDE5MSwgMiwgMjE4LCA4OCwgMjE2LCAyMCwgMjIsIDIxNiwgMTA0LCAyNDUsIDEzLCAyNDcsIDE5MiwgMjQ0LCAxOTAsIAorICAgIDIxMSwgMjA0LCAyNDQsIDE5MCwgMjU0LCAxMDgsIDI0NCwgMTkwLCAyMjQsIDIyNywgMjQ0LCAxOTAsIDI0OSwgMTE2LCAKKyAgICAyNDQsIDE5MCwgMjI1LCAxNzAsIDI0NCwgMTkwLCAyNDQsIDE5MSwgMiwgMjMyLCAxMjYsIDY0LCAyMTUsIDIwNCwgMjQ3LCAKKyAgICAxOTIsIDI1MSwgODgsIDIyMywgODgsIDI0NCwgMTkwLCAyNDMsIDIzOSwgMjQ0LCAxOTEsIDIsIDIwNCwgMjMwLCAxMTAsIAorICAgIDI1NCwgMTA2LCAyNDQsIDE5MCwgMjQ0LCAxNTIsIDI0NCwgMTkwLCAyMTIsIDIwLCAyNDQsIDE5MCwgMjE5LCA5MSwgMjQ0LCAKKyAgICAxOTAsIDIxNiwgNzEsIDI0NCwgMTkwLCAyNDIsIDEyNSwgMjQ0LCAxOTAsIDIzMiwgMTE0LCAyNDksIDExNiwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyNDAsIDIwMywgMjQ0LCAxOTAsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgCisgICAgMTExLCAyMiwgMjQ5LCAyMzAsIDIxNywgMjQ3LCAyNDQsIDE5MSwgMjIxLCAxOTAsIDIzNiwgMCwgMjQ0LCAxNTMsIDI1MywgCisgICAgMjEzLCAyNDQsIDE5MCwgMjQ0LCA0OSwgMjQ0LCAxOTAsIDIxOSwgOTIsIDI0NCwgMTkwLCAyNDcsIDE2NSwgMjQ0LCAxOTAsIAorICAgIDI0NCwgMTkxLCAyMTEsIDIzMCwgMjMwLCAxMTAsIDI0NCwgMTkxLCAyLCAyMzEsIDg0LCAyMzEsIDE0NCwgMjQyLCAxMjQsIAorICAgIDI1MCwgMjI1LCAyNDQsIDE5MSwgMiwgMjE5LCA3NCwgMjQ1LCAxMywgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMTcsIDE0LCAKKyAgICA2NCwgMjM1LCA1MywgMjE5LCA3NCwgMjUwLCAyMjUsIDI0NCwgMTkxLCAyLCAyMDQsIDIzMCwgMTEwLCAyMTksIDc0LCAyNTAsIAorICAgIDIyNSwgMjQ0LCAxOTEsIDIsIDI0MSwgMjI2LCAyNDUsIDEzLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDIxMSwgMTk2LCAKKyAgICAyMTksIDc1LCAyMzQsIDYyLCAyNTAsIDIyNSwgMjQ0LCAxOTEsIDIsIDI1MCwgMCwgMjQ1LCAxMywgMjI0LCAyMjcsIDI1MCwgCisgICAgMjI1LCAyNDQsIDE5MCwgMjQ5LCAxMTYsIDI1MCwgMjI1LCAyNDQsIDE5MCwgMjEyLCAyMCwgMjUwLCAyMjUsIDI0NCwgMTkwLCAKKyAgICAyNDQsIDE5MSwgMiwgMjI4LCA3NSwgMjQyLCAxNjMsIDI0MywgMzQsIDI0NCwgMTkxLCAyLCAyMjYsIDIxNSwgMjQzLCAzNCwgCisgICAgMjI1LCAxNjgsIDI1MSwgMTY4LCAyNDgsIDc1LCAyMjEsIDE2OSwgMjMwLCAxNDUsIDI0MSwgMjI5LCAyMzAsIDE0NSwgMjE5LCAKKyAgICA4LCAyMzAsIDE0NSwgMjQyLCA1LCAyMjUsIDE2OCwgMjIzLCAxNTYsIDEyMywgMjQyLCAxNSwgMjI1LCAxNjgsIDIyMywgCisgICAgMTU2LCAyNTEsIDE3OCwgMjQyLCAxMSwgMjM2LCAwLCAyNTAsIDE3OSwgMjI1LCAxNjgsIDI0MywgMjM4LCAyMjUsIDE2OCwgCisgICAgMiwgMjI0LCAyMjcsIDI0NCwgMTkwLCAyMjUsIDE2OCwgMiwgMjQ0LCA0MSwgMjQyLCAxMCwgMjIyLCAyMDMsIDI0MSwgMjE0LCAKKyAgICAyMTgsIDE0MywgMjMyLCAxNDksIDIyMywgMTYyLCAyNTAsIDI0NCwgMjQxLCAxNjIsIDIxNSwgMjQ4LCAyNDEsIDE2MiwgCisgICAgMjE1LCAyNDksIDIsIDI1MSwgMTE0LCAyMjgsIDUzLCAyMTUsIDI0OCwgMjMxLCAzMiwgMTkyLCAyMjMsIDE2MywgMjE4LCAKKyAgICAxNDksIDIxNSwgMjQ2LCAyMTUsIDI0NywgMjUwLCAyNDQsIDI1MSwgOTIsIDIyNiwgMTk0LCAyNTEsIDkyLCAyMTUsIDIwMSwgCisgICAgMjUxLCA5MywgMjE4LCAxMjksIDIzMCwgMTg3LCAyNTQsIDEzMCwgMjQ0LCA5NywgMjQ1LCAxMzcsIDIyNCwgMjU1LCAyNTAsIAorICAgIDI0NCwgMjI2LCAxOTQsIDIyNCwgMjU1LCAyNTAsIDI0NCwgMjE3LCAzMiwgMjI2LCAxOTQsIDIxNywgMzIsIDI1MywgMTgwLCAKKyAgICAyMjYsIDE5NCwgMjUzLCAxODAsIDIyMywgMTE4LCAyMTMsIDI0NywgMjQ4LCA1OCwgMjE1LCAxOTIsIDI1MywgMjQyLCAyMzIsIAorICAgIDExNywgMjE1LCAyNTQsIDIzMCwgMTM5LCAyMzAsIDExNiwgMjIzLCAxNjEsIDIxOCwgNiwgMjIzLCAxNjEsIDIzMCwgMTE2LCAKKyAgICAyNTEsIDI4LCAyNTQsIDIyOSwgMjE1LCAyNDUsIDIyMCwgMTYsIDIyMiwgMTgyLCAyMTksIDEsIDIwMywgMjE1LCAyNTIsIAorICAgIDIzMiwgMjMwLCA2NywgMjE1LCAyNTIsIDIzMiwgMjMwLCAyNDksIDE5MCwgNTAsIDIyNCwgMjU1LCAyNTAsIDIyOSwgMjIzLCAKKyAgICA0NCwgMjMyLCAyMzAsIDIxNSwgMjIyLCAyNDQsIDc0LCAyMjYsIDE5NywgMjI0LCAyMzgsIDI0NywgMTIzLCAyMjgsIDc1LCAKKyAgICAyNDUsIDEyNSwgNTAsIDIxOSwgNzIsIDg3LCAyMjgsIDc1LCAyMTksIDcyLCA4NywgMjI0LCAxMjIsIDIzMiwgMTkzLCAyMzYsIAorICAgIDAsIDIzNSwgMTU3LCAyMjUsIDQxLCA4NywgMjQ3LCAxNDYsIDIyOCwgNTIsIDIzMiwgMTkzLCA4NywgMjI0LCAyMzIsIDIxMiwgCisgICAgNDEsIDg3LCAyMjgsIDY2LCAyMTIsIDQxLCA4NywgMjUyLCAyLCAyMjgsIDc1LCAyNTIsIDEsIDI1MiwgMCwgMjMwLCAxMTYsIAorICAgIDI1MiwgMCwgMjI1LCAyMTMsIDIyOCwgNzUsIDIyNSwgMjEyLCAyNTAsIDEwMCwgMjQ5LCAxMjQsIDIzMSwgNTYsIDg3LCAKKyAgICAyMTEsIDIxOCwgODcsIDIyMywgNTksIDI1MiwgMTg3LCA4NywgMjE2LCAzNywgMjEyLCA0MSwgMjQ5LCAyNTMsIDIxOSwgCisgICAgMjM0LCAyNTIsIDExOCwgMjUyLCAxMTYsIDIyNSwgMjQyLCAyNDksIDE3NywgMjQ5LCA4NiwgMjUyLCAxNjksIDI1MCwgMjIsIAorICAgIDQzLCAyMzIsIDkwLCAxMDgsIDE2LCAzMSwgMjI0LCAzLCAxMDgsIDE2LCAzMSwgMjU0LCAxOTIsIDEwOCwgMTYsIDMxLCAKKyAgICAyNDQsIDk2LCAxMDgsIDE2LCAzMSwgMjQ1LCAyMjMsIDEwOCwgMTYsIDMxLCAyMTIsIDQwLCAxMDgsIDE2LCAzMSwgMjU0LCAKKyAgICA0MywgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIyMywgMTA1LCAxMDgsIDE2LCAzMSwgMjU0LCA0NCwgMjIzLCAxMDQsIDEwOCwgCisgICAgMTYsIDMxLCAyNTQsIDQ0LCAyMTMsIDE0MywgMTA4LCAxNiwgMzEsIDI1NCwgNDQsIDIxMywgMTQyLCAxMDgsIDE2LCAzMSwgCisgICAgMjEzLCAxNTcsIDEwOCwgMTYsIDMxLCAyMTMsIDE1NiwgMTA4LCAxNiwgMzEsIDIxMywgMTU1LCAxMDgsIDE2LCAzMSwgMjE4LCAKKyAgICA0NCwgMTA4LCAxNiwgMzEsIDIyNSwgMTI1LCAyMTgsIDQ0LCAxMDgsIDE2LCAzMSwgODUsIDIxOCwgNDQsIDEwOCwgMTYsIAorICAgIDMxLCAyMzEsIDU1LCAyMTgsIDcxLCAxMDgsIDE2LCAzMSwgMjMxLCA1NSwgMjE4LCA3MCwgMTA4LCAxNiwgMzEsIDIzMSwgCisgICAgNTUsIDIxOCwgNjksIDEwOCwgMTYsIDMxLCAyNTAsIDM4LCAxMDgsIDE2LCAzMSwgMjIyLCAxLCAxMDgsIDE2LCAzMSwgMjI4LCAKKyAgICAxODgsIDEwOCwgMTYsIDMxLCAyMTMsIDE0MSwgMTA4LCAxNiwgMzEsIDIxMywgMTQwLCAxMDgsIDE2LCAzMSwgMjIyLCAyMDQsIAorICAgIDIyMiwgMSwgMTA4LCAxNiwgMzEsIDIyMiwgMjA0LCAyMjIsIDAsIDEwOCwgMTYsIDMxLCAyNDIsIDE2NiwgMTA4LCAxNiwgCisgICAgMzEsIDIxOSwgMTY2LCAxMDgsIDE2LCAzMSwgMjM1LCAxNzcsIDIyNiwgMTUzLCAxMDgsIDE2LCAzMSwgMjM1LCAxNzcsIAorICAgIDIyNiwgMTUyLCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyMzUsIDE3NiwgMTA4LCAxNiwgMzEsIDIyMywgMTAxLCA2NCwgCisgICAgMjM1LCAxNzYsIDEwOCwgMTYsIDMxLCAyNDksIDE2OCwgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyMzUsIDE3NSwgMjI2LCAKKyAgICAxNTMsIDEwOCwgMTYsIDMxLCAyMTgsIDcyLCA2NCwgMjQ5LCAxNjcsIDEwOCwgMTYsIDMxLCAyNDksIDEzNCwgNjQsIDI0OSwgCisgICAgMTY3LCAxMDgsIDE2LCAzMSwgMjQ5LCAxMzQsIDY0LCAyNDksIDE2NiwgMTA4LCAxNiwgMzEsIDI0OSwgMTY4LCAyNTQsIDgzLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIyLCAyLCA2NCwgMjQ5LCAxNjgsIDI1NCwgODMsIDEwOCwgMTYsIDMxLCAyMTgsIDcyLCA2NCwgCisgICAgMjIyLCAyLCA2NCwgMjQ5LCAxNjcsIDEwOCwgMTYsIDMxLCAyMTMsIDI0MywgMTA4LCAxNiwgMzEsIDIxNiwgODQsIDIyNiwgCisgICAgMTUzLCAxMDgsIDE2LCAzMSwgMjMzLCA1NywgMjI2LCAxNTMsIDEwOCwgMTYsIDMxLCAyNTQsIDgyLCAyMjYsIDE1MywgMTA4LCAKKyAgICAxNiwgMzEsIDIxOCwgNzIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjIyLCAyLCA2NCwgMjU0LCA4MSwgMTA4LCAxNiwgCisgICAgMzEsIDIxOCwgNzIsIDY0LCAyMjIsIDIsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjEzLCAxNTgsIDY0LCAyNTQsIDgxLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAyNTQsIDgxLCAxMDgsIDE2LCAzMSwgMjIzLCAxMDEsIDY0LCAyNTQsIDgwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjIzLCAxMDAsIDEwOCwgMTYsIDMxLCAyMjMsIDk5LCAxMDgsIDE2LCAzMSwgMjIzLCA5OCwgMTA4LCAKKyAgICAxNiwgMzEsIDIyMywgOTcsIDEwOCwgMTYsIDMxLCAyNTQsIDE1NywgMTA4LCAxNiwgMzEsIDI1NCwgMTU2LCAxMDgsIDE2LCAKKyAgICAzMSwgMjMxLCAxNjMsIDEwOCwgMTYsIDMxLCAyMjIsIDcsIDEwOCwgMTYsIDMxLCAyNTMsIDI0NiwgMTA4LCAxNiwgMzEsIAorICAgIDIyMywgMTI1LCAxMDgsIDE2LCAzMSwgMjIzLCAxMjQsIDEwOCwgMTYsIDMxLCAyNTMsIDE4MywgMTA4LCAxNiwgMzEsIDI1MSwgCisgICAgMjI5LCAyMjYsIDE1MywgMTA4LCAxNiwgMzEsIDIxNywgNDksIDEwOCwgMTYsIDMxLCAyMTcsIDQ4LCAxMDgsIDE2LCAzMSwgCisgICAgMjI0LCA4LCAyMzIsIDIyMiwgMTA4LCAxNiwgMzEsIDI1MSwgMTgzLCAxMDgsIDE2LCAzMSwgMjUxLCAxODIsIDEwOCwgMTYsIAorICAgIDMxLCAyNTEsIDE4MSwgMTA4LCAxNiwgMzEsIDI1NCwgMTM4LCAxMDgsIDE2LCAzMSwgMjI2LCAyMTgsIDEwOCwgMTYsIDMxLCAKKyAgICAyMTgsIDI0OCwgMTA4LCAxNiwgMzEsIDIxNiwgODIsIDEwOCwgMTYsIDMxLCAyNDIsIDk2LCAxMDgsIDE2LCAzMSwgMjEyLCAKKyAgICAyOCwgMTA4LCAxNiwgMzEsIDIyNCwgMjI2LCAxMDgsIDE2LCAzMSwgMjUxLCAxNCwgMTA4LCAxNiwgMzEsIDIxNSwgODYsIAorICAgIDEwOCwgMTYsIDMxLCAyNTAsIDI0NiwgMjMwLCAxMjIsIDEwOCwgMTYsIDMxLCAyMjEsIDIwMiwgNjQsIDIzNSwgNTUsIDEwOCwgCisgICAgMTYsIDMxLCAyNTEsIDI1LCAxMDgsIDE2LCAzMSwgMjE1LCAyMTksIDEwOCwgMTYsIDMxLCAyMTgsIDE1NCwgMjE1LCAyMTksIAorICAgIDEwOCwgMTYsIDMxLCAyMzIsIDE0OCwgMTA4LCAxNiwgMzEsIDIxOSwgNTYsIDEwOCwgMTYsIDMxLCAyMTQsIDE0MiwgMTA4LCAKKyAgICAxNiwgMzEsIDI0MCwgMjQ2LCAyNDYsIDY0LCAxMDgsIDE2LCAzMSwgMjUzLCAyMjcsIDEwOCwgMTYsIDMxLCAyMjQsIDIzNCwgCisgICAgMjUzLCAyMjcsIDEwOCwgMTYsIDMxLCAyNTEsIDE0MiwgMTA4LCAxNiwgMzEsIDIyNCwgMjI1LCAyNTEsIDE0MiwgMTA4LCAKKyAgICAxNiwgMzEsIDI1NCwgMTM1LCAxMDgsIDE2LCAzMSwgMjE4LCAxMTcsIDIxOCwgMjYsIDIxOCwgMTE2LCAxMDgsIDE2LCAzMSwgCisgICAgMjE4LCAxMTcsIDIxOCwgMjYsIDIxOCwgMTE1LCAxMDgsIDE2LCAzMSwgMjE4LCA2OCwgMTA4LCAxNiwgMzEsIDIyNCwgMjAwLCAKKyAgICAxMDgsIDE2LCAzMSwgMjQ3LCAxODEsIDEwOCwgMTYsIDMxLCAyNDcsIDE4MywgMTA4LCAxNiwgMzEsIDI0NywgMTgyLCAxMDgsIAorICAgIDE2LCAzMSwgMjI0LCAxMzEsIDEwOCwgMTYsIDMxLCAyMjQsIDEyMCwgMTA4LCAxNiwgMzEsIDI0OSwgMTIyLCAxMDgsIDE2LCAKKyAgICAzMSwgMjQ5LCAxMjEsIDEwOCwgMTYsIDMxLCAyNDksIDEyMCwgMTA4LCAxNiwgMzEsIDI0OSwgMTE5LCAxMDgsIDE2LCAzMSwgCisgICAgMjQ5LCAxMTgsIDEwOCwgMTYsIDMxLCAyNTQsIDE2OSwgMTA4LCAxNiwgMzEsIDI1MiwgMTE5LCA2NCwgMjMxLCAxNDksIAorICAgIDEwOCwgMTYsIDMxLCAyNTIsIDExOSwgNjQsIDIxNCwgMTcsIDEwOCwgMTYsIDMxLCAyMjMsIDU3LCAxMDgsIDE2LCAzMSwgCisgICAgMjQwLCAyMzgsIDEwOCwgMTYsIDMxLCAyMjgsIDIxMiwgMTA4LCAxNiwgMzEsIDI0OCwgMTQ1LCAxMDgsIDE2LCAzMSwgMjMwLCAKKyAgICAxMzQsIDEwOCwgMTYsIDMxLCAxNjMsIDI0NiwgOTQsIDEwOCwgMTYsIDMxLCAxNjMsIDIyNiwgMTMyLCA5LCAxNCwgMjQwLCAKKyAgICAxMDIsIDksIDE0LCAyNDAsIDEwMSwgOSwgMTQsIDI0MCwgMTAwLCA5LCAxNCwgMjQwLCA5OSwgOSwgMTQsIDI0MCwgOTgsIDksIAorICAgIDE0LCAyNDAsIDk3LCA5LCAxNCwgMjQwLCA5NiwgOSwgMTQsIDI0MCwgOTUsIDksIDE0LCAyNDAsIDk0LCA5LCAxNCwgMjQwLCAKKyAgICA5MywgOSwgMTQsIDI0MCwgOTIsIDksIDE0LCAyNDAsIDkxLCA5LCAxNCwgMjQwLCA5MCwgOSwgMTQsIDI0MCwgODksIDksIAorICAgIDE0LCAyNDAsIDg4LCA5LCAxNCwgMjQwLCA4NywgOSwgMTQsIDI0MCwgODYsIDksIDE0LCAyNDAsIDg1LCA5LCAxNCwgMjQwLCAKKyAgICA4NCwgOSwgMTQsIDI0MCwgODMsIDksIDE0LCAyNDAsIDgyLCA5LCAxNCwgMjQwLCA4MSwgOSwgMTQsIDI0MCwgODAsIDksIAorICAgIDE0LCAyNDAsIDc5LCA5LCAxNCwgMjQwLCA3OCwgOSwgMTQsIDI0MCwgNzcsIDksIDE0LCAyNDAsIDc2LCA5LCAxNCwgMjQwLCAKKyAgICA3NSwgOSwgMTQsIDI0MCwgNzQsIDksIDE0LCAyNDAsIDczLCA5LCAxNCwgMjQwLCA3MiwgOSwgMTQsIDI0MCwgNzEsIDksIAorICAgIDE0LCAyNDAsIDcwLCA5LCAxNCwgMjQwLCA2OSwgOSwgMTQsIDI0MCwgNjgsIDksIDE0LCAyNDAsIDY3LCA5LCAxNCwgMjQwLCAKKyAgICA2NiwgOSwgMTQsIDI0MCwgNjUsIDksIDE0LCAyNDAsIDY0LCA5LCAxNCwgMjQwLCA2MywgOSwgMTQsIDI0MCwgNjIsIDksIAorICAgIDE0LCAyNDAsIDYxLCA5LCAxNCwgMjQwLCA2MCwgOSwgMTQsIDI0MCwgNTksIDksIDE0LCAyNDAsIDU4LCA5LCAxNCwgMjQwLCAKKyAgICA1NywgOSwgMTQsIDI0MCwgNTYsIDksIDE0LCAyNDAsIDU1LCA5LCAxNCwgMjQwLCA1NCwgOSwgMTQsIDI0MCwgNTMsIDksIAorICAgIDE0LCAyNDAsIDUyLCA5LCAxNCwgMjQwLCA1MSwgOSwgMTQsIDI0MCwgNTAsIDksIDE0LCAyNDAsIDQ5LCA5LCAxNCwgMjQwLCAKKyAgICA0OCwgOSwgMTQsIDI0MCwgNDcsIDksIDE0LCAyNDAsIDQ2LCA5LCAxNCwgMjQwLCA0NSwgOSwgMTQsIDI0MCwgNDQsIDksIAorICAgIDE0LCAyNDAsIDQzLCA5LCAxNCwgMjQwLCA0MiwgOSwgMTQsIDI0MCwgNDEsIDksIDE0LCAyNDAsIDQwLCA5LCAxNCwgMjQwLCAKKyAgICAzOSwgOSwgMTQsIDI0MCwgMzgsIDksIDE0LCAyNDAsIDM3LCA5LCAxNCwgMjQwLCAzNiwgOSwgMTQsIDI0MCwgMzUsIDksIAorICAgIDE0LCAyNDAsIDM0LCA5LCAxNCwgMjQwLCAzMywgOSwgMTQsIDI0MCwgMzIsIDksIDE0LCAyNDAsIDMxLCA5LCAxNCwgMjQwLCAKKyAgICAzMCwgOSwgMTQsIDI0MCwgMjksIDksIDE0LCAyNDAsIDI4LCA5LCAxNCwgMjQwLCAyNywgOSwgMTQsIDI0MCwgMjYsIDksIAorICAgIDE0LCAyNDAsIDI1LCA5LCAxNCwgMjQwLCAyNCwgOSwgMTQsIDI0MCwgMjMsIDksIDE0LCAyNDAsIDIyLCA5LCAxNCwgMjQwLCAKKyAgICAyMSwgOSwgMTQsIDI0MCwgMjAsIDksIDE0LCAyNDAsIDE5LCA5LCAxNCwgMjQwLCAxOCwgOSwgMTQsIDI0MCwgMTcsIDksIAorICAgIDE0LCAyNDAsIDE2LCA5LCAxNCwgMjQwLCAxNSwgOSwgMTQsIDI0MCwgMTQsIDksIDE0LCAyNDAsIDEzLCA5LCAxNCwgMjQwLCAKKyAgICAxMiwgOSwgMTQsIDI0MCwgMTEsIDksIDE0LCAyNDAsIDEwLCA5LCAxNCwgMjQwLCA5LCA5LCAxNCwgMjQwLCA4LCA5LCAxNCwgCisgICAgMjQwLCA3LCA5LCAxNCwgMjQwLCA2LCA5LCAxNCwgMjQwLCA1LCA5LCAxNCwgMjQwLCA0LCA5LCAxNCwgMjQwLCAzLCA5LCAKKyAgICAxNCwgMjQwLCAyLCA5LCAxNCwgMjQwLCAxLCA5LCAxNCwgMjQwLCAwLCA5LCAxNCwgMjM5LCAyNTUsIDksIDE0LCAyMzksIAorICAgIDI1NCwgOSwgMTQsIDIzOSwgMjUzLCA5LCAxNCwgMjM5LCAyNTIsIDksIDE0LCAyMzksIDI1MSwgOSwgMTQsIDIzOSwgMjUwLCAKKyAgICA5LCAxNCwgMjM5LCAyNDksIDksIDE0LCAyMzksIDI0OCwgOSwgMTQsIDIzOSwgMjQ3LCA5LCAxNCwgMjM5LCAyNDYsIDksIAorICAgIDE0LCAyMzksIDI0NSwgOSwgMTQsIDIzOSwgMjQ0LCA5LCAxNCwgMjM5LCAyNDMsIDksIDE0LCAyMzksIDI0MiwgOSwgMTQsIAorICAgIDIzOSwgMjQxLCA5LCAxNCwgMjM5LCAyNDAsIDksIDE0LCAyMzksIDIzOSwgOSwgMTQsIDIzOSwgMjM4LCA5LCAxNCwgMjM5LCAKKyAgICAyMzcsIDksIDE0LCAyMzksIDIzNiwgOSwgMTQsIDIzOSwgMjM1LCA5LCAxNCwgMjM5LCAyMzQsIDksIDE0LCAyMzksIDIzMywgCisgICAgOSwgMTQsIDIzOSwgMjMyLCA5LCAxNCwgMjM5LCAyMzEsIDksIDE0LCAyMzksIDIzMCwgOSwgMTQsIDIzOSwgMjI5LCA5LCAKKyAgICAxNCwgMjM5LCAyMjgsIDksIDE0LCAyMzksIDIyNywgOSwgMTQsIDIzOSwgMjI2LCA5LCAxNCwgMjM5LCAyMjUsIDksIDE0LCAKKyAgICAyMzksIDIyNCwgOSwgMTQsIDIzOSwgMjIzLCA5LCAxNCwgMjM5LCAyMjIsIDksIDE0LCAyMzksIDIyMSwgOSwgMTQsIDIzOSwgCisgICAgMjIwLCA5LCAxNCwgMjM5LCAyMTksIDksIDE0LCAyMzksIDIxOCwgOSwgMTQsIDIzOSwgMjE3LCA5LCAxNCwgMjM5LCAyMTYsIAorICAgIDksIDE0LCAyMzksIDIxNSwgOSwgMTQsIDIzOSwgMjE0LCA5LCAxNCwgMjM5LCAyMTMsIDksIDE0LCAyMzksIDIxMiwgOSwgCisgICAgMTQsIDIzOSwgMjExLCA5LCAxNCwgMjM5LCAyMTAsIDksIDE0LCAyMzksIDIwOSwgOSwgMTQsIDIzOSwgMjA4LCA5LCAxNCwgCisgICAgMjM5LCAyMDcsIDksIDE0LCAyMzksIDIwNiwgOSwgMTQsIDIzOSwgMjA1LCA5LCAxNCwgMjM5LCAyMDQsIDksIDE0LCAyMzksIAorICAgIDIwMywgOSwgMTQsIDIzOSwgMjAyLCA5LCAxNCwgMjM5LCAyMDEsIDksIDE0LCAyMzksIDIwMCwgOSwgMTQsIDIzOSwgMTk5LCAKKyAgICA5LCAxNCwgMjM5LCAxOTgsIDksIDE0LCAyMzksIDE5NywgOSwgMTQsIDIzOSwgMTk2LCA5LCAxNCwgMjM5LCAxOTUsIDksIAorICAgIDE0LCAyMzksIDE5NCwgOSwgMTQsIDIzOSwgMTkzLCA5LCAxNCwgMjM5LCAxOTIsIDksIDE0LCAyMzksIDE5MSwgOSwgMTQsIAorICAgIDIzOSwgMTkwLCA5LCAxNCwgMjM5LCAxODksIDksIDE0LCAyMzksIDE4OCwgOSwgMTQsIDIzOSwgMTg3LCA5LCAxNCwgMjM5LCAKKyAgICAxODYsIDksIDE0LCAyMzksIDE4NSwgOSwgMTQsIDIzOSwgMTg0LCA5LCAxNCwgMjM5LCAxODMsIDksIDE0LCAyMzksIDE4MiwgCisgICAgOSwgMTQsIDIzOSwgMTgxLCA5LCAxNCwgMjM5LCAxODAsIDksIDE0LCAyMzksIDE3OSwgOSwgMTQsIDIzOSwgMTc4LCA5LCAKKyAgICAxNCwgMjM5LCAxNzcsIDksIDE0LCAyMzksIDE3NiwgOSwgMTQsIDIzOSwgMTc1LCA5LCAxNCwgMjM5LCAxNzQsIDksIDE0LCAKKyAgICAyMzksIDE3MywgOSwgMTQsIDIzOSwgMTcyLCA5LCAxNCwgMjM5LCAxNzEsIDksIDE0LCAyMzksIDE3MCwgOSwgMTQsIDIzOSwgCisgICAgMTY5LCA5LCAxNCwgMjM5LCAxNjgsIDksIDE0LCAyMzksIDE2NywgOSwgMTQsIDIzOSwgMTY2LCA5LCAxNCwgMjM5LCAxNjUsIAorICAgIDksIDE0LCAyMzksIDE2NCwgOSwgMTQsIDIzOSwgMTYzLCA5LCAxNCwgMjM5LCAxNjIsIDksIDE0LCAyMzksIDE2MSwgOSwgCisgICAgMTQsIDIzOSwgMTYwLCA5LCAxNCwgMjM5LCAxNTksIDksIDE0LCAyMzksIDE1OCwgOSwgMTQsIDIzOSwgMTU3LCA5LCAxNCwgCisgICAgMjM5LCAxNTYsIDksIDE0LCAyMzksIDE1NSwgOSwgMTQsIDIzOSwgMTU0LCA5LCAxNCwgMjM5LCAxNTMsIDksIDE0LCAyMzksIAorICAgIDE1MiwgOSwgMTQsIDIzOSwgMTUxLCA5LCAxNCwgMjM5LCAxNTAsIDksIDE0LCAyMzksIDE0OSwgOSwgMTQsIDIzOSwgMTQ4LCAKKyAgICA5LCAxNCwgMjM5LCAxNDcsIDksIDE0LCAyMzksIDE0NiwgOSwgMTQsIDIzOSwgMTQ1LCA5LCAxNCwgMjM5LCAxNDQsIDksIAorICAgIDE0LCAyMzksIDE0MywgOSwgMTQsIDIzOSwgMTQyLCA5LCAxNCwgMjM5LCAxNDEsIDksIDE0LCAyMzksIDE0MCwgOSwgMTQsIAorICAgIDIzOSwgMTM5LCA5LCAxNCwgMjM5LCAxMzgsIDksIDE0LCAyMzksIDEzNywgOSwgMTQsIDIzOSwgMTM2LCA5LCAxNCwgMjM5LCAKKyAgICAxMzUsIDksIDE0LCAyMzksIDEzNCwgOSwgMTQsIDIzOSwgMTMzLCA5LCAxNCwgMjM5LCAxMzIsIDksIDE0LCAyMzksIDEzMSwgCisgICAgOSwgMTQsIDIzOSwgMTMwLCA5LCAxNCwgMjM5LCAxMjksIDksIDE0LCAyMzksIDEyOCwgOSwgMTQsIDIzOSwgMTI3LCA5LCAKKyAgICAxNCwgMjM5LCAxMjYsIDksIDE0LCAyMzksIDEyNSwgOSwgMTQsIDIzOSwgMTI0LCA5LCAxNCwgMjM5LCAxMjMsIDksIDE0LCAKKyAgICAyMzksIDEyMiwgOSwgMTQsIDIzOSwgMTIxLCA5LCAxNCwgMjM5LCAxMjAsIDksIDE0LCAyMzksIDExOSwgOSwgMTQsIDIzOSwgCisgICAgMTE4LCA5LCAxNCwgMjM5LCAxMTcsIDksIDE0LCAyMzksIDExNiwgOSwgMTQsIDIzOSwgMTE1LCA5LCAxNCwgMjM5LCAxMTQsIAorICAgIDksIDE0LCAyMzksIDExMywgOSwgMTQsIDIzOSwgMTEyLCA5LCAxNCwgMjM5LCAxMTEsIDksIDE0LCAyMzksIDExMCwgOSwgCisgICAgMTQsIDIzOSwgMTA5LCA5LCAxNCwgMjM5LCAxMDgsIDksIDE0LCAyMzksIDEwNywgOSwgMTQsIDIzOSwgMTA2LCA5LCAxNCwgCisgICAgMjM5LCAxMDUsIDksIDE0LCAyMzksIDEwNCwgOSwgMTQsIDIzOSwgMTAzLCA5LCAxNCwgMjM5LCAxMDIsIDksIDE0LCAyMzksIAorICAgIDEwMSwgOSwgMTQsIDIzOSwgMTAwLCA5LCAxNCwgMjM5LCA5OSwgOSwgMTQsIDIzOSwgOTgsIDksIDE0LCAyMzksIDk3LCA5LCAKKyAgICAxNCwgMjM5LCA5NiwgOSwgMTQsIDIzOSwgOTUsIDksIDE0LCAyMzksIDk0LCA5LCAxNCwgMjM5LCA5MywgOSwgMTQsIDIzOSwgCisgICAgOTIsIDksIDE0LCAyMzksIDkxLCA5LCAxNCwgMjM5LCA5MCwgOSwgMTQsIDIzOSwgODksIDksIDE0LCAyMzksIDg4LCA5LCAKKyAgICAxNCwgMjM5LCA4NywgOSwgMTQsIDIzOSwgODYsIDksIDE0LCAyMzksIDg1LCA5LCAxNCwgMjM5LCA4NCwgOSwgMTQsIDIzOSwgCisgICAgODMsIDksIDE0LCAyMzksIDgyLCA5LCAxNCwgMjM5LCA4MSwgOSwgMTQsIDIzOSwgODAsIDksIDE0LCAyMzksIDc5LCA5LCAKKyAgICAxNCwgMjM5LCA3OCwgOSwgMTQsIDIzOSwgNzcsIDksIDE0LCAyMzksIDc2LCA5LCAxNCwgMjM5LCA3NSwgOSwgMTQsIDIzOSwgCisgICAgNzQsIDksIDE0LCAyMzksIDczLCA5LCAxNCwgMjM5LCA3MiwgOSwgMTQsIDIzOSwgNzEsIDksIDE0LCAyMzksIDcwLCA5LCAKKyAgICAxNCwgMjM5LCA2OSwgOSwgMTQsIDIzOSwgNjgsIDksIDE0LCAyMzksIDY3LCA5LCAxNCwgMjM5LCA2NiwgOSwgMTQsIDIzOSwgCisgICAgNjUsIDksIDE0LCAyMzksIDY0LCA5LCAxNCwgMjM5LCA2MywgOSwgMTQsIDIzOSwgNjIsIDksIDE0LCAyMzksIDYxLCA5LCAKKyAgICAxNCwgMjM5LCA2MCwgOSwgMTQsIDIzOSwgNTksIDksIDE0LCAyMzksIDU4LCA5LCAxNCwgMjM5LCA1NywgOSwgMTQsIDIzOSwgCisgICAgNTYsIDksIDE0LCAyMzksIDU1LCA5LCAxNCwgMjM5LCA1NCwgOSwgMTQsIDIzOSwgNTMsIDksIDE0LCAyMzksIDUyLCA5LCAKKyAgICAxNCwgMjM5LCA1MSwgOSwgMTQsIDIzOSwgNTAsIDksIDE0LCAyMzksIDQ5LCA5LCAxNCwgMjM5LCA0OCwgOSwgMTQsIDIzOSwgCisgICAgNDcsIDksIDE0LCAyMzksIDQ2LCA5LCAxNCwgMjM5LCA0NSwgOSwgMTQsIDIzOSwgNDQsIDksIDE0LCAyMzksIDQzLCA5LCAKKyAgICAxNCwgMjM5LCA0MiwgOSwgMTQsIDIzOSwgNDEsIDksIDE0LCAyMzksIDQwLCA5LCAxNCwgMjM5LCAzOSwgOSwgMTQsIDIzOSwgCisgICAgMzgsIDksIDE0LCAyMzksIDM3LCA5LCAxNCwgMjM5LCAzNiwgOSwgMTQsIDIzOSwgMzUsIDksIDE0LCAyMzksIDM0LCA5LCAKKyAgICAxNCwgMjM5LCAzMywgOSwgMTQsIDIzOSwgMzIsIDksIDE0LCAyMzksIDMxLCA5LCAxNCwgMjM5LCAzMCwgOSwgMTQsIDIzOSwgCisgICAgMjksIDksIDE0LCAyMzksIDI4LCA5LCAxNCwgMjM5LCAyNywgOSwgMTQsIDIzOSwgMjYsIDksIDE0LCAyMzksIDI1LCA5LCAKKyAgICAxNCwgMjM5LCAyNCwgOSwgMTQsIDIzOSwgMjMsIDksIDE0LCAyMzksIDIyLCA5LCAxNCwgMjM5LCAyMSwgOSwgMTQsIDIzOSwgCisgICAgMjAsIDksIDE0LCAyMzksIDE5LCA5LCAxNCwgMjM5LCAxOCwgOSwgMTQsIDIzOSwgMTcsIDksIDE0LCAyMzksIDE2LCA5LCAKKyAgICAxNCwgMjM5LCAxNSwgOSwgMTQsIDIzOSwgMTQsIDksIDE0LCAyMzksIDEzLCA5LCAxNCwgMjM5LCAxMiwgOSwgMTQsIDIzOSwgCisgICAgMTEsIDksIDE0LCAyMzksIDEwLCA5LCAxNCwgMjM5LCA5LCA5LCAxNCwgMjM5LCA4LCA5LCAxNCwgMjM5LCA3LCA5LCAxNCwgCisgICAgMjM5LCA2LCA5LCAxNCwgMjM5LCA1LCA5LCAxNCwgMjM5LCA0LCA5LCAxNCwgMjM5LCAzLCA5LCAxNCwgMjM5LCAyLCA5LCAKKyAgICAxNCwgMjM5LCAxLCA5LCAxNCwgMjM5LCAwLCA5LCAxNCwgMjM4LCAyNTUsIDksIDE0LCAyMzgsIDI1NCwgOSwgMTQsIDIzOCwgCisgICAgMjUzLCA5LCAxNCwgMjM4LCAyNTIsIDksIDE0LCAyMzgsIDI1MSwgOSwgMTQsIDIzOCwgMjUwLCA5LCAxNCwgMjM4LCAyNDksIAorICAgIDksIDE0LCAyMzgsIDI0OCwgOSwgMTQsIDIzOCwgMjQ3LCA5LCAxNCwgMjM4LCAyNDYsIDksIDE0LCAyMzgsIDI0NSwgOSwgCisgICAgMTQsIDIzOCwgMjQ0LCA5LCAxNCwgMjM4LCAyNDMsIDksIDE0LCAyMzgsIDI0MiwgOSwgMTQsIDIzOCwgMjQxLCA5LCAxNCwgCisgICAgMjM4LCAyNDAsIDksIDE0LCAyMzgsIDIzOSwgOSwgMTQsIDIzOCwgMjM4LCA5LCAxNCwgMjM4LCAyMzcsIDksIDE0LCAyMzgsIAorICAgIDIzNiwgOSwgMTQsIDIzOCwgMjM1LCA5LCAxNCwgMjM4LCAyMzQsIDksIDE0LCAyMzgsIDIzMywgOSwgMTQsIDIzOCwgMjMyLCAKKyAgICA5LCAxNCwgMjM4LCAyMzEsIDksIDE0LCAyMzgsIDIzMCwgOSwgMTQsIDIzOCwgMjI5LCA5LCAxNCwgMjM4LCAyMjgsIDksIAorICAgIDE0LCAyMzgsIDIyNywgOSwgMTQsIDIzOCwgMjI2LCA5LCAxNCwgMjM4LCAyMjUsIDksIDE0LCAyMzgsIDIyNCwgOSwgMTQsIAorICAgIDIzOCwgMjIzLCA5LCAxNCwgMjM4LCAyMjIsIDksIDE0LCAyMzgsIDIyMSwgOSwgMTQsIDIzOCwgMjIwLCA5LCAxNCwgMjM4LCAKKyAgICAyMTksIDksIDE0LCAyMzgsIDIxOCwgOSwgMTQsIDIzOCwgMjE3LCA5LCAxNCwgMjM4LCAyMTYsIDksIDE0LCAyMzgsIDIxNSwgCisgICAgOSwgMTQsIDIzOCwgMjE0LCA5LCAxNCwgMjM4LCAyMTMsIDksIDE0LCAyMzgsIDIxMiwgOSwgMTQsIDIzOCwgMjExLCA5LCAKKyAgICAxNCwgMjM4LCAyMTAsIDksIDE0LCAyMzgsIDIwOSwgOSwgMTQsIDIzOCwgMjA4LCA5LCAxNCwgMjM4LCAyMDcsIDksIDE0LCAKKyAgICAyMzgsIDIwNiwgOSwgMTQsIDIzOCwgMjA1LCA5LCAxNCwgMjM4LCAyMDQsIDksIDE0LCAyMzgsIDIwMywgOSwgMTQsIDIzOCwgCisgICAgMjAyLCA5LCAxNCwgMjM4LCAyMDEsIDksIDE0LCAyMzgsIDIwMCwgOSwgMTQsIDIzOCwgMTk5LCA5LCAxNCwgMjM4LCAxOTgsIAorICAgIDksIDE0LCAyMzgsIDE5NywgOSwgMTQsIDIzOCwgMTk2LCA5LCAxNCwgMjM4LCAxOTUsIDksIDE0LCAyMzgsIDE5NCwgOSwgCisgICAgMTQsIDIzOCwgMTkzLCA5LCAxNCwgMjM4LCAxOTIsIDksIDE0LCAyMzgsIDE5MSwgOSwgMTQsIDIzOCwgMTkwLCA5LCAxNCwgCisgICAgMjM4LCAxODksIDksIDE0LCAyMzgsIDE4OCwgOSwgMTQsIDIzOCwgMTg3LCA5LCAxNCwgMjM4LCAxODYsIDksIDE0LCAyMzgsIAorICAgIDE4NSwgOSwgMTQsIDIzOCwgMTg0LCA5LCAxNCwgMjM4LCAxODMsIDksIDE0LCAyMzgsIDE4MiwgOSwgMTQsIDIzOCwgMTgxLCAKKyAgICA5LCAxNCwgMjM4LCAxODAsIDksIDE0LCAyMzgsIDE3OSwgOSwgMTQsIDIzOCwgMTc4LCA5LCAxNCwgMjM4LCAxNzcsIDksIAorICAgIDE0LCAyMzgsIDE3NiwgOSwgMTQsIDIzOCwgMTc1LCA5LCAxNCwgMjM4LCAxNzQsIDksIDE0LCAyMzgsIDE3MywgOSwgMTQsIAorICAgIDIzOCwgMTcyLCA5LCAxNCwgMjM4LCAxNzEsIDksIDE0LCAyMzgsIDE3MCwgOSwgMTQsIDIzOCwgMTY5LCA5LCAxNCwgMjM4LCAKKyAgICAxNjgsIDksIDE0LCAyMzgsIDE2NywgOSwgMTQsIDIzOCwgMTY2LCA5LCAxNCwgMjM4LCAxNjUsIDksIDE0LCAyMzgsIDE2NCwgCisgICAgOSwgMTQsIDIzOCwgMTYzLCA5LCAxNCwgMjM4LCAxNjIsIDksIDE0LCAyMzgsIDE2MSwgOSwgMTQsIDIzOCwgMTYwLCA5LCAKKyAgICAxNCwgMjM4LCAxNTksIDksIDE0LCAyMzgsIDE1OCwgOSwgMTQsIDIzOCwgMTU3LCA5LCAxNCwgMjM4LCAxNTYsIDksIDE0LCAKKyAgICAyMzgsIDE1NSwgOSwgMTQsIDIzOCwgMTU0LCA5LCAxNCwgMjM4LCAxNTMsIDksIDE0LCAyMzgsIDE1MiwgOSwgMTQsIDIzOCwgCisgICAgMTUxLCA5LCAxNCwgMjM4LCAxNTAsIDksIDE0LCAyMzgsIDE0OSwgOSwgMTQsIDIzOCwgMTQ4LCA5LCAxNCwgMjM4LCAxNDcsIAorICAgIDksIDE0LCAyMzgsIDE0NiwgOSwgMTQsIDIzOCwgMTQ1LCA5LCAxNCwgMjM4LCAxNDQsIDksIDE0LCAyMzgsIDE0MywgOSwgCisgICAgMTQsIDIzOCwgMTQyLCA5LCAxNCwgMjM4LCAxNDEsIDksIDE0LCAyMzgsIDE0MCwgOSwgMTQsIDIzOCwgMTM5LCA5LCAxNCwgCisgICAgMjM4LCAxMzgsIDksIDE0LCAyMzgsIDEzNywgOSwgMTQsIDIzOCwgMTM2LCA5LCAxNCwgMjM4LCAxMzUsIDksIDE0LCAyMzgsIAorICAgIDEzNCwgOSwgMTQsIDIzOCwgMTMzLCA5LCAxNCwgMjM4LCAxMzIsIDksIDE0LCAyMzgsIDEzMSwgOSwgMTQsIDIzOCwgMTMwLCAKKyAgICA5LCAxNCwgMjM4LCAxMjksIDksIDE0LCAyMzgsIDEyOCwgOSwgMTQsIDIzOCwgMTI3LCA5LCAxNCwgMjM4LCAxMjYsIDksIAorICAgIDE0LCAyMzgsIDEyNSwgOSwgMTQsIDIzOCwgMTI0LCA5LCAxNCwgMjM4LCAxMjMsIDksIDE0LCAyMzgsIDEyMiwgOSwgMTQsIAorICAgIDIzOCwgMTIxLCA5LCAxNCwgMjM4LCAxMjAsIDksIDE0LCAyMzgsIDExOSwgOSwgMTQsIDIzOCwgMTE4LCA5LCAxNCwgMjM4LCAKKyAgICAxMTcsIDksIDE0LCAyMzgsIDExNiwgOSwgMTQsIDIzOCwgMTE1LCA5LCAxNCwgMjM4LCAxMTQsIDksIDE0LCAyMzgsIDExMywgCisgICAgOSwgMTQsIDIzOCwgMTEyLCA5LCAxNCwgMjM4LCAxMTEsIDksIDE0LCAyMzgsIDExMCwgOSwgMTQsIDIzOCwgMTA5LCA5LCAKKyAgICAxNCwgMjM4LCAxMDgsIDksIDE0LCAyMzgsIDEwNywgOSwgMTQsIDIzOCwgMTA2LCA5LCAxNCwgMjM4LCAxMDUsIDksIDE0LCAKKyAgICAyMzgsIDEwNCwgOSwgMTQsIDIzOCwgMTAzLCA5LCAxNCwgMjM4LCAxMDIsIDksIDE0LCAyMzgsIDEwMSwgOSwgMTQsIDIzOCwgCisgICAgMTAwLCA5LCAxNCwgMjM4LCA5OSwgOSwgMTQsIDIzOCwgOTgsIDksIDE0LCAyMzgsIDk3LCA5LCAxNCwgMjM4LCA5NiwgOSwgCisgICAgMTQsIDIzOCwgOTUsIDksIDE0LCAyMzgsIDk0LCA5LCAxNCwgMjM4LCA5MywgOSwgMTQsIDIzOCwgOTIsIDksIDE0LCAyMzgsIAorICAgIDkxLCA5LCAxNCwgMjM4LCA5MCwgOSwgMTQsIDIzOCwgODksIDksIDE0LCAyMzgsIDg4LCA5LCAxNCwgMjM4LCA4NywgOSwgCisgICAgMTQsIDIzOCwgODYsIDksIDE0LCAyMzgsIDg1LCA5LCAxNCwgMjM4LCA4NCwgOSwgMTQsIDIzOCwgODMsIDksIDE0LCAyMzgsIAorICAgIDgyLCA5LCAxNCwgMjM4LCA4MSwgOSwgMTQsIDIzOCwgODAsIDksIDE0LCAyMzgsIDc5LCA5LCAxNCwgMjM4LCA3OCwgOSwgCisgICAgMTQsIDIzOCwgNzcsIDksIDE0LCAyMzgsIDc2LCA5LCAxNCwgMjM4LCA3NSwgOSwgMTQsIDIzOCwgNzQsIDksIDE0LCAyMzgsIAorICAgIDczLCAyMzMsIDkwLCAyMTcsIDg0LCAxMjksIDIxOSwgMTgsIDEyOSwgMjQ1LCAzMSwgNzgsIDEyOSwgMjIzLCAyNTQsIDc4LCAKKyAgICAxMjksIDU0LCA1MCwgMTI5LCAyNDcsIDEzMiwgNTAsIDEyOSwgMjI1LCAxODIsIDUwLCAxMjksIDI1NCwgMTI2LCAxMjksIAorICAgIDI1NCwgNTcsIDEyOSwgNDMsIDIyNiwgMywgMTI5LCA0NCwgMjI2LCAzLCAxMjksIDI1MywgMjE2LCAxMjksIDk2LCA1MCwgCisgICAgMTI5LCAyNDksIDIxOSwgMTI5LCAyNDAsIDE2NywgMTI5LCAyNDMsIDIyOSwgMjE4LCAxMjksIDEyOSwgMjE5LCA0NiwgMTI5LCAKKyAgICAyMSwgMjEwLCA4NiwgMTI5LCAyMSwgMTEwLCAxMjksIDIxLCAxMDUsIDEyOSwgMjEsIDE1OCwgMTI5LCAyMSwgMTYxLCAxMjksIAorICAgIDIxLCAxODksIDEyOSwgMjEsIDE5NCwgMTI5LCAyMSwgMTk4LCAxMjksIDIxLCAxOTUsIDEyOSwgMjEsIDIwMCwgMTI5LCAKKyAgICAyNDksIDIyNiwgMTI5LCAyMjAsIDE1MCwgMTI5LCAyMzMsIDE1LCA1MCwgMTI5LCAyNDUsIDk4LCA1MCwgMTI5LCAyNDIsIAorICAgIDEzMCwgNTAsIDEyOSwgMjI0LCAxMywgNzgsIDEyOSwgMjQ5LCAyMTcsIDI1MywgMjA2LCAxMjksIDcsIDYsIDEsIDYxLCAKKyAgICAxMjksIDcsIDYsIDEsIDI1MywgMTU4LCAxMjksIDcsIDYsIDEsIDI1MSwgNjYsIDEyOSwgNywgNiwgMSwgMjQ5LCA2MCwgCisgICAgMTI5LCA3LCA2LCAxLCA3NSwgMTI5LCA3LCA2LCAxLCAyNDUsIDYsIDEyOSwgNywgNiwgMSwgMjQzLCAyMDIsIDEyOSwgNywgCisgICAgNiwgMSwgMjQyLCA2MCwgMTI5LCA3LCA2LCAxLCA3MywgMTI5LCA3LCA2LCAxLCAyMzUsIDE0NCwgMTI5LCA3LCA2LCAxLCAKKyAgICAyMzUsIDIzLCAxMjksIDcsIDYsIDEsIDE1NiwgMTI5LCA3LCA2LCAxLCAxOTMsIDEyOSwgNywgNiwgMSwgMjMwLCAyNSwgCisgICAgMTI5LCA3LCA2LCAxLCA3NiwgMTI5LCA3LCA2LCAxLCAyMjYsIDEwNSwgMTI5LCA3LCA2LCAxLCAyMjQsIDk2LCAxMjksIDcsIAorICAgIDYsIDEsIDE1MywgMTI5LCA3LCA2LCAxLCAyMjIsIDkxLCAxMjksIDcsIDYsIDEsIDIxNywgMTUyLCAxMjksIDcsIDYsIDEsIAorICAgIDcwLCAxMjksIDcsIDYsIDEsIDIxNCwgMTA1LCAxMjksIDcsIDYsIDEsIDIxMiwgOTgsIDEyOSwgNywgNiwgMSwgMjExLCAKKyAgICAxNzgsIDEyOSwgNywgNiwgMSwgMjExLCAxMTcsIDEyOSwgNywgNiwgMSwgMjEwLCAxNTksIDEyOSwgNDMsIDQyLCAxMjcsIAorICAgIDEyOSwgMjIzLCA1MCwgMjE5LCA0NiwgMTI5LCA0NCwgNDIsIDEyNywgMTI5LCAyNTAsIDMxLCAyNTUsIDE0LCAxMjksIDEyMSwgCisgICAgMjMyLCAyMTMsIDEyOSwgMjQyLCAxMzcsIDI1NSwgMTQsIDEyOSwgNywgNCwgMSwgNjEsIDEyOSwgNywgNCwgMSwgMjUzLCAKKyAgICAxNTgsIDEyOSwgNywgNCwgMSwgMjUxLCA2NiwgMTI5LCA3LCA0LCAxLCAyNDksIDYwLCAxMjksIDcsIDQsIDEsIDc1LCAxMjksIAorICAgIDcsIDQsIDEsIDI0NSwgNiwgMTI5LCA3LCA0LCAxLCAyNDMsIDIwMiwgMTI5LCA3LCA0LCAxLCAyNDIsIDYwLCAxMjksIDcsIAorICAgIDQsIDEsIDczLCAxMjksIDcsIDQsIDEsIDIzNSwgMTQ0LCAxMjksIDcsIDQsIDEsIDIzNSwgMjMsIDEyOSwgNywgNCwgMSwgCisgICAgMTU2LCAxMjksIDcsIDQsIDEsIDE5MywgMTI5LCA3LCA0LCAxLCAyMzAsIDI1LCAxMjksIDcsIDQsIDEsIDc2LCAxMjksIDcsIAorICAgIDQsIDEsIDIyNiwgMTA1LCAxMjksIDcsIDQsIDEsIDIyNCwgOTYsIDEyOSwgNywgNCwgMSwgMTUzLCAxMjksIDcsIDQsIDEsIAorICAgIDIyMiwgOTEsIDEyOSwgNywgNCwgMSwgMjE3LCAxNTIsIDEyOSwgNywgNCwgMSwgNzAsIDEyOSwgNywgNCwgMSwgMjE0LCAKKyAgICAxMDUsIDEyOSwgNywgNCwgMSwgMjEyLCA5OCwgMTI5LCA3LCA0LCAxLCAyMTEsIDE3OCwgMTI5LCA3LCA0LCAxLCAyMTEsIAorICAgIDExNywgMTI5LCA3LCA0LCAxLCAyMTAsIDE1OSwgMTI5LCA0MywgMjQ5LCA5OSwgMTI3LCAxMjksIDY3LCAyMzIsIDIxMywgCisgICAgMTI5LCA0NCwgMjQ5LCA5OSwgMTI3LCAxMjksIDE4MiwgMjUxLCA2LCAyMTcsIDg0LCA0NSwgMjIxLCA3OCwgNDUsIDIyMSwgCisgICAgNjcsIDQ1LCAyMjEsIDU2LCA0NSwgMjIxLCA0NCwgNDUsIDIyMSwgMzMsIDQ1LCAyMjEsIDIyLCA0NSwgMjIxLCAxMSwgNDUsIAorICAgIDIyMSwgMCwgNDUsIDIyMCwgMjQ1LCA0NSwgMjIwLCAyMzcsIDQ1LCAyMjAsIDIzNiwgNDUsIDIyMCwgMjM1LCA0NSwgMjIwLCAKKyAgICAyMzQsIDQ1LCAyMjAsIDIzMiwgNDUsIDIyMCwgMjMxLCA0NSwgMjIwLCAyMzAsIDQ1LCAyMjAsIDIyOSwgNDUsIDIyMCwgCisgICAgMjI4LCA0NSwgMjIwLCAyMjcsIDQ1LCAyMjAsIDIyNiwgNDUsIDIyMCwgMjI1LCA0NSwgMjIwLCAyMjQsIDQ1LCAyMjAsIAorICAgIDIyMywgNDUsIDIyMCwgMjIxLCA0NSwgMjIwLCAyMjAsIDQ1LCAyMjAsIDIxOSwgNDUsIDIyMCwgMjE4LCA0NSwgMjIwLCAKKyAgICAyMTcsIDQ1LCAyMjAsIDIxNiwgNDUsIDIyMCwgMjE1LCA0NSwgMjIwLCAyMTQsIDQ1LCAyMjAsIDIxMywgNDUsIDIyMCwgCisgICAgMjEyLCA0NSwgMjIwLCAyMTAsIDQ1LCAyMjAsIDIwOSwgNDUsIDIyMCwgMjA4LCA0NSwgMjIwLCAyMDcsIDQ1LCAyMjAsIAorICAgIDIwNiwgNDUsIDIyMCwgMjA1LCA0NSwgMjIwLCAyMDQsIDQ1LCAyMjAsIDIwMywgNDUsIDIyMCwgMjAyLCA0NSwgMjIwLCAKKyAgICAyMDEsIDQ1LCAyMjAsIDE5OSwgNDUsIDIyMCwgMTk4LCA0NSwgMjIwLCAxOTcsIDQ1LCAyMjAsIDE5NiwgNDUsIDIyMCwgCisgICAgMTk1LCA0NSwgMjIwLCAxOTQsIDQ1LCAyMjAsIDE5MywgNDUsIDIyMCwgMTkyLCA0NSwgMjIwLCAxOTEsIDQ1LCAyMjAsIAorICAgIDE5MCwgNDUsIDIyMCwgMTg4LCA0NSwgMjIwLCAxODcsIDQ1LCAyMjAsIDE4NiwgNDUsIDIyMCwgMTg1LCA0NSwgMjIwLCAKKyAgICAxODQsIDQ1LCAyMjAsIDE4MywgNDUsIDIyMCwgMTgyLCA0NSwgMjIwLCAxODEsIDQ1LCAyMjAsIDE4MCwgNDUsIDIyMCwgCisgICAgMTc5LCA0NSwgMjIwLCAxNzcsIDQ1LCAyMjAsIDE3NiwgNDUsIDIyMCwgMTc1LCA0NSwgMjIwLCAxNzQsIDQ1LCAyMjAsIAorICAgIDE3MywgNDUsIDIyMCwgMTcyLCA0NSwgMjIwLCAxNzEsIDQ1LCAyMjAsIDE3MCwgNDUsIDIyMCwgMTY5LCA0NSwgMjIwLCAKKyAgICAxNjgsIDQ1LCAyMjAsIDE2NiwgNDUsIDIyMCwgMTY1LCA0NSwgMjIwLCAxNjQsIDQ1LCAyMjAsIDE2MywgNDUsIDIyMCwgCisgICAgMTYyLCA0NSwgMjIwLCAxNjEsIDQ1LCAyMjAsIDE2MCwgNDUsIDIyMCwgMTU5LCA0NSwgMjIwLCAxNTgsIDQ1LCAyMjAsIAorICAgIDE1NywgNDUsIDIyMSwgMTU0LCA0NSwgMjIxLCAxNTMsIDQ1LCAyMjEsIDE1MiwgNDUsIDIyMSwgMTUxLCA0NSwgMjIxLCAKKyAgICAxNTAsIDQ1LCAyMjEsIDE0OSwgNDUsIDIyMSwgMTQ4LCA0NSwgMjIxLCAxNDcsIDQ1LCAyMjEsIDE0NiwgNDUsIDIyMSwgCisgICAgMTQ1LCA0NSwgMjIxLCAxNDMsIDQ1LCAyMjEsIDE0MiwgNDUsIDIyMSwgMTQxLCA0NSwgMjIxLCAxNDAsIDQ1LCAyMjEsIAorICAgIDEzOSwgNDUsIDIyMSwgMTM4LCA0NSwgMjIxLCAxMzcsIDQ1LCAyMjEsIDEzNiwgNDUsIDIyMSwgMTM1LCA0NSwgMjIxLCAKKyAgICAxMzQsIDQ1LCAyMjEsIDEzMiwgNDUsIDIyMSwgMTMxLCA0NSwgMjIxLCAxMzAsIDQ1LCAyMjEsIDEyOSwgNDUsIDIyMSwgCisgICAgMTI4LCA0NSwgMjIxLCAxMjcsIDQ1LCAyMjEsIDEyNiwgNDUsIDIyMSwgMTI1LCA0NSwgMjIxLCAxMjQsIDQ1LCAyMjEsIAorICAgIDEyMywgNDUsIDIyMSwgMTIxLCA0NSwgMjIxLCAxMjAsIDQ1LCAyMjEsIDExOSwgNDUsIDIyMSwgMTE4LCA0NSwgMjIxLCAKKyAgICAxMTcsIDQ1LCAyMjEsIDExNiwgNDUsIDIyMSwgMTE1LCA0NSwgMjIxLCAxMTQsIDQ1LCAyMjEsIDExMywgNDUsIDIyMSwgCisgICAgMTEyLCA0NSwgMjIxLCAxMTAsIDQ1LCAyMjEsIDEwOSwgNDUsIDIyMSwgMTA4LCA0NSwgMjIxLCAxMDcsIDQ1LCAyMjEsIAorICAgIDEwNiwgNDUsIDIyMSwgMTA1LCA0NSwgMjIxLCAxMDQsIDQ1LCAyMjEsIDEwMywgNDUsIDIyMSwgMTAyLCA0NSwgMjIxLCAKKyAgICAxMDEsIDQ1LCAyMjEsIDk5LCA0NSwgMjIxLCA5OCwgNDUsIDIyMSwgOTcsIDQ1LCAyMjEsIDk2LCA0NSwgMjIxLCA5NSwgNDUsIAorICAgIDIyMSwgOTQsIDQ1LCAyMjEsIDkzLCA0NSwgMjIxLCA5MiwgNDUsIDIyMSwgOTEsIDQ1LCAyMjEsIDkwLCA0NSwgMjIxLCA4OCwgCisgICAgNDUsIDIyMSwgODcsIDQ1LCAyMjEsIDg2LCA0NSwgMjIxLCA4NSwgNDUsIDIyMSwgODQsIDQ1LCAyMjEsIDgzLCA0NSwgMjIxLCAKKyAgICA4MiwgNDUsIDIyMSwgODEsIDQ1LCAyMjEsIDgwLCA0NSwgMjIxLCA3OSwgNDUsIDIyMSwgNzcsIDQ1LCAyMjEsIDc2LCA0NSwgCisgICAgMjIxLCA3NSwgNDUsIDIyMSwgNzQsIDQ1LCAyMjEsIDczLCA0NSwgMjIxLCA3MiwgNDUsIDIyMSwgNzEsIDQ1LCAyMjEsIDcwLCAKKyAgICA0NSwgMjIxLCA2OSwgNDUsIDIyMSwgNjgsIDQ1LCAyMjEsIDY2LCA0NSwgMjIxLCA2NSwgNDUsIDIyMSwgNjQsIDQ1LCAyMjEsIAorICAgIDYzLCA0NSwgMjIxLCA2MiwgNDUsIDIyMSwgNjEsIDQ1LCAyMjEsIDYwLCA0NSwgMjIxLCA1OSwgNDUsIDIyMSwgNTgsIDQ1LCAKKyAgICAyMjEsIDU3LCA0NSwgMjIxLCA1NSwgNDUsIDIyMSwgNTQsIDQ1LCAyMjEsIDUzLCA0NSwgMjIxLCA1MiwgNDUsIDIyMSwgNTEsIAorICAgIDQ1LCAyMjEsIDUwLCA0NSwgMjIxLCA0OSwgNDUsIDIyMSwgNDgsIDQ1LCAyMjEsIDQ3LCA0NSwgMjIxLCA0NiwgNDUsIDIyMSwgCisgICAgNDMsIDQ1LCAyMjEsIDQyLCA0NSwgMjIxLCA0MSwgNDUsIDIyMSwgNDAsIDQ1LCAyMjEsIDM5LCA0NSwgMjIxLCAzOCwgNDUsIAorICAgIDIyMSwgMzcsIDQ1LCAyMjEsIDM2LCA0NSwgMjIxLCAzNSwgNDUsIDIyMSwgMzQsIDQ1LCAyMjEsIDMyLCA0NSwgMjIxLCAzMSwgCisgICAgNDUsIDIyMSwgMzAsIDQ1LCAyMjEsIDI5LCA0NSwgMjIxLCAyOCwgNDUsIDIyMSwgMjcsIDQ1LCAyMjEsIDI2LCA0NSwgMjIxLCAKKyAgICAyNSwgNDUsIDIyMSwgMjQsIDQ1LCAyMjEsIDIzLCA0NSwgMjIxLCAyMSwgNDUsIDIyMSwgMjAsIDQ1LCAyMjEsIDE5LCA0NSwgCisgICAgMjIxLCAxOCwgNDUsIDIyMSwgMTcsIDQ1LCAyMjEsIDE2LCA0NSwgMjIxLCAxNSwgNDUsIDIyMSwgMTQsIDQ1LCAyMjEsIDEzLCAKKyAgICA0NSwgMjIxLCAxMiwgNDUsIDIyMSwgMTAsIDQ1LCAyMjEsIDksIDQ1LCAyMjEsIDgsIDQ1LCAyMjEsIDcsIDQ1LCAyMjEsIDYsIAorICAgIDQ1LCAyMjEsIDUsIDQ1LCAyMjEsIDQsIDQ1LCAyMjEsIDMsIDQ1LCAyMjEsIDIsIDQ1LCAyMjEsIDEsIDQ1LCAyMjAsIDI1NSwgCisgICAgNDUsIDIyMCwgMjU0LCA0NSwgMjIwLCAyNTMsIDQ1LCAyMjAsIDI1MiwgNDUsIDIyMCwgMjUxLCA0NSwgMjIwLCAyNTAsIDQ1LCAKKyAgICAyMjAsIDI0OSwgNDUsIDIyMCwgMjQ4LCA0NSwgMjIwLCAyNDcsIDQ1LCAyMjAsIDI0NiwgNDUsIDIyMCwgMjQ0LCA0NSwgCisgICAgMjIwLCAyNDMsIDQ1LCAyMjAsIDI0MiwgNDUsIDIyMCwgMjQxLCA0NSwgMjIwLCAyNDAsIDQ1LCAyMjAsIDIzOSwgNDUsIAorICAgIDIyMCwgMjM4LCAyMjcsIDIwMiwgMjI3LCAyMDQsIDIxOCwgMTUyLCA2NCwgMjQxLCAyMzMsIDIxOSwgNDgsIDIxOCwgMTUyLCAKKyAgICA2NCwgMjE2LCAyMTIsIDIxOCwgODUsIDI0NSwgMTQzLCA2NCwgMjE2LCAyMTIsIDI0NSwgNTYsIDI0NSwgMTQzLCA2NCwgCisgICAgMjE1LCAyNDMsIDI0NSwgMTA5LCAyNDUsIDEzMiwgMjQ1LCAxMzMsIDI1NSwgNywgMjU1LCA4LCAyNTQsIDE2NywgMjUyLCAKKyAgICA0NywgMjUyLCAxNzksIDI1MSwgMTMxLCAxMzUsIDIxNywgODksIDIwMywgMjE3LCA4OSwgMjQwLCAyMjcsIDIxNywgOTMsIAorICAgIDIzMiwgMjE0LCAyNDQsIDE0NSwgMTY2LCAyMzIsIDIxMywgMjQ1LCAxNDMsIDY0LCAyMzIsIDIxMywgMjMzLCAwLCAyMjgsIAorICAgIDEzNSwgMjQ1LCAxMTIsIDIzMiwgMjE0LCAyMTcsIDg5LCA2NywgMjE3LCA4OSwgMjEyLCAxMTgsIDI0NCwgMjAsIDI0NCwgCisgICAgMTQ1LCAyNDQsIDEyNSwgMjUwLCAyMzAsIDIyMywgNTMsIDI0OSwgMTQzLCAyMjAsIDI4LCAyMjYsIDEzMCwgMjMyLCAxNTAsIAorICAgIDExMCwgMjE5LCA1OCwgMjIwLCAyOCwgMjM1LCAyNTUsIDIzMiwgMTUwLCAyMTAsIDg2LCAyMTksIDE5MSwgMjQ4LCAxNTEsIAorICAgIDIzMiwgMjA0LCAyNDUsIDc3LCAyNDcsIDE1NSwgMjQ4LCAzMSwgMjQ5LCAxNzgsIDExMCwgMjQ4LCAxNDEsIDI0OCwgMzEsIAorICAgIDI0OSwgMTc4LCAxMDUsIDI0OCwgMTQwLCAyNDgsIDMxLCAyNDksIDE3OCwgMTU4LCAyNDgsIDEzOSwgMjQ4LCAzMSwgMjQ5LCAKKyAgICAxNzgsIDE2MSwgMjQ4LCAxMzgsIDE1MiwgMjU1LCA3LCAyMjksIDIwOSwgMjE3LCAxNzcsIDIzNiwgNjIsIDIxNywgMTgwLCAKKyAgICAyNDUsIDE0MywgNjQsIDIxNSwgMjQ0LCAyNTEsIDIxMywgMjQ1LCA2MiwgMjUxLCA1LCAyNTEsIDcsIDI0NSwgMTQzLCA2NCwgCisgICAgMjMxLCA4MSwgMjQ1LCAxMTAsIDIxOCwgNjEsIDIxOCwgNzgsIDI0NSwgNzcsIDI0NSwgNzgsIDIzNSwgMjMyLCAyMjAsIAorICAgIDEzOCwgMTYxLCAyNDQsIDEwNywgMjIwLCAxMzcsIDI0MywgMjM3LCAyMzUsIDIzMiwgMjIwLCAxMzgsIDE1OCwgMjQyLCAKKyAgICAxMjEsIDIyMCwgMTM3LCAyNDIsIDExOCwgMjM1LCAyMzIsIDIyMCwgMTM4LCAxMDUsIDIyMywgMTIxLCAyMjAsIDEzNywgCisgICAgMjIyLCAxNDUsIDIzNSwgMjMyLCAyMjAsIDEzOCwgMTEwLCAyMTQsIDE3NCwgMjIwLCAxMzcsIDIxNCwgMTMzLCAyMTksIDIxLCAKKyAgICAyNDgsIDYzLCAyNDgsIDY1LCAyMjYsIDc4LCAyNTAsIDE0MiwgMjI2LCA4MCwgMTI1LCAyMjYsIDI0MCwgMjI0LCAxOTMsIAorICAgIDI0MSwgNDcsIDI1MSwgMTUwLCAyMjUsIDE3MywgMjQxLCAyMDMsIDI1MSwgMTYxLCAyMjgsIDc1LCAyNTEsIDE1MCwgMjQxLCAKKyAgICAyMDMsIDIyOSwgMTc1LCAyMzUsIDI0MiwgMjM1LCAyNDQsIDIyOSwgODIsIDIzMiwgMjEzLCAyMjksIDk5LCAyMTgsIDE1MiwgCisgICAgNjQsIDIyMSwgMTU4LCAyNTQsIDE4LCAyMTgsIDIyMywgMjQ1LCAxNDMsIDY0LCAyMjEsIDE1OCwgMjU0LCAxOCwgMjQ1LCAKKyAgICA4MCwgMTM1LCAyMTcsIDkwLCAyMjAsIDEyNywgMjAzLCAyMTcsIDkwLCAyMjAsIDEyNywgMjQwLCAyMjQsIDEzNSwgMjE3LCAKKyAgICA5MCwgMiwgMjM1LCAzNSwgMjAzLCAyMTcsIDkwLCAyLCAyMzUsIDM1LCAyNDAsIDIyNSwgMjMyLCAyMTQsIDIxNywgOTAsIAorICAgIDIyMCwgMTI3LCA2NywgMjE3LCA5MCwgMjIwLCAxMjcsIDIxMiwgMTE3LCAyMjUsIDI1MywgMjMyLCAyMTQsIDI0NCwgMTQsIAorICAgIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjQ2LCAxMDYsIDIyNSwgMzIsIDIyNSwgMjUzLCAyMzIsIDIxNCwgMjUyLCAxNzgsIDIyNSwgCisgICAgMjUzLCAyMzIsIDIxNCwgMjE0LCAxNjMsIDIyNSwgMjgsIDIyMywgNTAsIDIzMiwgMjE0LCAyNDQsIDE0NSwgMjIzLCA1MCwgCisgICAgMjM1LCAyNDIsIDIyMywgMzUsIDIxOSwgMTU1LCAyMjAsIDI4LCAxMDUsIDIxOSwgMTUyLCAyMTgsIDIyNSwgMjE5LCAxNTUsIAorICAgIDIyMCwgMjgsIDE1OCwgMjE5LCAxNTEsIDIxOCwgMjI0LCAyNDgsIDMxLCAyNDksIDE3OCwgMjE4LCAxMDUsIDI0OCwgMTM3LCAKKyAgICAyMjQsIDE4MywgMjE0LCAxMzIsIDExMCwgMjI0LCAxODMsIDIxNCwgMTMwLCAyMjQsIDE0OSwgMjI0LCAxODMsIDIxNCwgCisgICAgMTMyLCAxMDUsIDIyNCwgMTgzLCAyMTQsIDEyOSwgMjI0LCAxNDgsIDIyMCwgMTI4LCAyMTUsIDI0MiwgMjE4LCAxNTEsIAorICAgIDIxOCwgODksIDI1MSwgNiwgMjUwLCAxNDIsIDI1MCwgMjA5LCAyMzEsIDQzLCAyMTIsIDU5LCAyMzAsIDQzLCAyMTgsIDE1MiwgCisgICAgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyMTgsIDE1MiwgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyMTksIDIwLCAyNDUsIAorICAgIDE0MywgNjQsIDI0MiwgMTA3LCAyNTQsIDE4LCAyNDUsIDE0MywgNjQsIDIyNCwgMTY2LCAyNTQsIDE4LCAyNDUsIDEwNywgCisgICAgMjE4LCAxNTIsIDY0LCAyMTgsIDEwNSwgMjE5LCAzNSwgMjE5LCAxNTUsIDI0MiwgMTQxLCAxMzUsIDIzNSwgMTk1LCAyMjAsIAorICAgIDEwNywgMjE5LCAxNTUsIDEzNSwgMjM1LCAxOTUsIDIyMSwgMTk0LCAyNDksIDE3OCwgMjIwLCAxMzUsIDIzNSwgMTk1LCAKKyAgICAyNDksIDExMywgMjE4LCAxMDYsIDIxNiwgMjM2LCAyMTgsIDE2OCwgMjI2LCAxNjksIDIxNywgMTY3LCAyNDksIDIxOCwgCisgICAgMjI2LCAxNDIsIDIyNCwgMTg0LCAyMzEsIDQyLCAyMjUsIDE5LCAyNTQsIDUzLCAyMjQsIDE3OCwgMjQ5LCAyMTgsIDI1NCwgCisgICAgNjksIDIyOSwgMTYzLCAyMTksIDIwMCwgNywgNiwgMSwgMjQyLCAyNDksIDcsIDQsIDEsIDI0MiwgMjQ5LCAyNTAsIDE1OSwgCisgICAgMTY1LCAxLCAyMzIsIDE3NSwgMjA5LCAyMDksIDEsIDI0NCwgNDQsIDI0NCwgMzYsIDIwOSwgMjA5LCAxLCAyNDQsIDQ0LCAKKyAgICAyNDQsIDE1NywgMjA5LCAyMDksIDEsIDIyMiwgMjExLCAyMDksIDIwOSwgMSwgMjMyLCAxNTYsIDYzLCAxNjQsIDI1MSwgCisgICAgMjIzLCAyMjAsIDMsIDI0MiwgMjE1LCAyMzAsIDI0OCwgMjIzLCA0MSwgMjQzLCAyMTYsIDI0MywgMjE1LCAyNDMsIDIxNCwgCisgICAgMjMwLCA0NSwgMjA5LCAyNTEsIDIwOSwgMjUyLCAyMDksIDI1NCwgMjMyLCAxMDIsIDIyMiwgMjE5LCAyMzIsIDEwMywgMjIyLCAKKyAgICAyMjAsIDIyNSwgMjIzLCAyMzIsIDEwMSwgMjIyLCAyMTgsIDIyOCwgMTA2LCAyMzAsIDE2NSwgMjExLCAyMjksIDIxMiwgMTUsIAorICAgIDI0NSwgMTYyLCAyNDMsIDIyNiwgMjMwLCAyMjksIDIyNiwgMTk3LCAyMTQsIDEzNCwgODcsIDIzMCwgMjI5LCAyNDgsIDE1NywgCisgICAgODcsIDgsIDMsIDIzNSwgMTU4LCA3OCwgMjI0LCAxOTQsIDI0NCwgMjAsIDMxLCA2NywgNDQsIDcxLCAyMzMsIDIwLCAxMjcsIAorICAgIDIxMywgMTE4LCAyMTMsIDcsIDIxMiwgMTk1LCAyMTIsIDE4NCwgMjEyLCAxNzMsIDIxMiwgMTYyLCAyMTIsIDE1MSwgMjEyLCAKKyAgICAxNDAsIDIxMiwgMTI5LCAyMTMsIDExNywgMjEzLCAxMDYsIDIxMywgOTUsIDIxMywgODQsIDIxMywgNzMsIDIxMywgNjIsIAorICAgIDIxMywgNTEsIDI1MSwgNzEsIDIyNiwgMTU1LCA3OCwgMjUxLCAxOTYsIDIwOSwgMjUzLCA0OSwgMjgsIDE2LCAyNDMsIDIzNiwgCisgICAgMjE5LCAxMDIsIDI1MCwgNzMsIDIxNCwgOSwgMjEzLCA0MCwgMjEzLCAyOSwgMjEzLCAxOCwgMjEzLCA2LCAyMTIsIDI1MSwgCisgICAgMjEyLCAyNDAsIDIxMiwgMjI5LCAyMTIsIDIxOCwgMjEyLCAyMDcsIDIxMiwgMTk5LCAyMTIsIDE5OCwgMjEyLCAxOTcsIAorICAgIDIxMiwgMTk2LCAyMTIsIDE5NCwgMjEyLCAxOTMsIDIxMiwgMTkyLCAyMTIsIDE5MSwgMjEyLCAxOTAsIDIxMiwgMTg5LCAKKyAgICAyMTIsIDE4OCwgMjEyLCAxODcsIDIxMiwgMTg2LCAyMTIsIDE4NSwgMjEyLCAxODMsIDIxMiwgMTgyLCAyMTIsIDE4MSwgCisgICAgMjEyLCAxODAsIDIxMiwgMTc5LCAyMTIsIDE3OCwgMjEyLCAxNzcsIDIxMiwgMTc2LCAyMTIsIDE3NSwgMjEyLCAxNzQsIAorICAgIDIxMiwgMTcyLCAyMTIsIDE3MSwgMjEyLCAxNzAsIDIxMiwgMTY5LCAyMTIsIDE2OCwgMjEyLCAxNjcsIDIxMiwgMTY2LCAKKyAgICAyMTIsIDE2NSwgMjEyLCAxNjQsIDIxMiwgMTYzLCAyMTIsIDE2MSwgMjEyLCAxNjAsIDIxMiwgMTU5LCAyMTIsIDE1OCwgCisgICAgMjEyLCAxNTcsIDIxMiwgMTU2LCAyMTIsIDE1NSwgMjEyLCAxNTQsIDIxMiwgMTUzLCAyMTIsIDE1MiwgMjEyLCAxNTAsIAorICAgIDIxMiwgMTQ5LCAyMTIsIDE0OCwgMjEyLCAxNDcsIDIxMiwgMTQ2LCAyMTIsIDE0NSwgMjEyLCAxNDQsIDIxMiwgMTQzLCAKKyAgICAyMTIsIDE0MiwgMjEyLCAxNDEsIDIxMiwgMTM5LCAyMTIsIDEzOCwgMjEyLCAxMzcsIDIxMiwgMTM2LCAyMTIsIDEzNSwgCisgICAgMjEyLCAxMzQsIDIxMiwgMTMzLCAyMTIsIDEzMiwgMjEyLCAxMzEsIDIxMiwgMTMwLCAyMTIsIDEyOCwgMjEyLCAxMjcsIAorICAgIDIxMiwgMTI2LCAyMTIsIDEyNSwgMjEyLCAxMjQsIDIxMiwgMTIzLCAyMTIsIDEyMiwgMjEyLCAxMjEsIDIxMiwgMTIwLCAKKyAgICAyMTIsIDExOSwgMjEzLCAxMTYsIDIxMywgMTE1LCAyMTMsIDExNCwgMjEzLCAxMTMsIDIxMywgMTEyLCAyMTMsIDExMSwgCisgICAgMjEzLCAxMTAsIDIxMywgMTA5LCAyMTMsIDEwOCwgMjEzLCAxMDcsIDIxMywgMTA1LCAyMTMsIDEwNCwgMjEzLCAxMDMsIAorICAgIDIxMywgMTAyLCAyMTMsIDEwMSwgMjEzLCAxMDAsIDIxMywgOTksIDIxMywgOTgsIDIxMywgOTcsIDIxMywgOTYsIDIxMywgCisgICAgOTQsIDIxMywgOTMsIDIxMywgOTIsIDIxMywgOTEsIDIxMywgOTAsIDIxMywgODksIDIxMywgODgsIDIxMywgODcsIDIxMywgCisgICAgODYsIDIxMywgODUsIDIxMywgODMsIDIxMywgODIsIDIxMywgODEsIDIxMywgODAsIDIxMywgNzksIDIxMywgNzgsIDIxMywgCisgICAgNzcsIDIxMywgNzYsIDIxMywgNzUsIDIxMywgNzQsIDIxMywgNzIsIDIxMywgNzEsIDIxMywgNzAsIDIxMywgNjksIDIxMywgCisgICAgNjgsIDIxMywgNjcsIDIxMywgNjYsIDIxMywgNjUsIDIxMywgNjQsIDIxMywgNjMsIDIxMywgNjEsIDIxMywgNjAsIDIxMywgCisgICAgNTksIDIxMywgNTgsIDIxMywgNTcsIDIxMywgNTYsIDIxMywgNTUsIDIxMywgNTQsIDIxMywgNTMsIDIxMywgNTIsIDIxMywgCisgICAgNTAsIDIxMywgNDksIDIxMywgNDgsIDIxMywgNDcsIDIxMywgNDYsIDIxMywgNDUsIDIxMywgNDQsIDIxMywgNDMsIDIxMywgCisgICAgNDIsIDIxMywgNDEsIDIxMywgMzksIDIxMywgMzgsIDIxMywgMzcsIDIxMywgMzYsIDIxMywgMzUsIDIxMywgMzQsIDIxMywgCisgICAgMzMsIDIxMywgMzIsIDIxMywgMzEsIDIxMywgMzAsIDIxMywgMjgsIDIxMywgMjcsIDIxMywgMjYsIDIxMywgMjUsIDIxMywgCisgICAgMjQsIDIxMywgMjMsIDIxMywgMjIsIDIxMywgMjEsIDIxMywgMjAsIDIxMywgMTksIDIxMywgMTcsIDIxMywgMTYsIDIxMywgCisgICAgMTUsIDIxMywgMTQsIDIxMywgMTMsIDIxMywgMTIsIDIxMywgMTEsIDIxMywgMTAsIDIxMywgOSwgMjEzLCA4LCAyMTMsIDUsIAorICAgIDIxMywgNCwgMjEzLCAzLCAyMTMsIDIsIDIxMywgMSwgMjEzLCAwLCAyMTIsIDI1NSwgMjEyLCAyNTQsIDIxMiwgMjUzLCAKKyAgICAyMTIsIDI1MiwgMjEyLCAyNTAsIDIxMiwgMjQ5LCAyMTIsIDI0OCwgMjEyLCAyNDcsIDIxMiwgMjQ2LCAyMTIsIDI0NSwgCisgICAgMjEyLCAyNDQsIDIxMiwgMjQzLCAyMTIsIDI0MiwgMjEyLCAyNDEsIDIxMiwgMjM5LCAyMTIsIDIzOCwgMjEyLCAyMzcsIAorICAgIDIxMiwgMjM2LCAyMTIsIDIzNSwgMjEyLCAyMzQsIDIxMiwgMjMzLCAyMTIsIDIzMiwgMjEyLCAyMzEsIDIxMiwgMjMwLCAKKyAgICAyMTIsIDIyOCwgMjEyLCAyMjcsIDIxMiwgMjI2LCAyMTIsIDIyNSwgMjEyLCAyMjQsIDIxMiwgMjIzLCAyMTIsIDIyMiwgCisgICAgMjEyLCAyMjEsIDIxMiwgMjIwLCAyMTIsIDIxOSwgMjEyLCAyMTcsIDIxMiwgMjE2LCAyMTIsIDIxNSwgMjEyLCAyMTQsIAorICAgIDIxMiwgMjEzLCAyMTIsIDIxMiwgMjEyLCAyMTEsIDIxMiwgMjEwLCAyMTIsIDIwOSwgMjEyLCAyMDgsIDIxMiwgMjA2LCAKKyAgICAyMTIsIDIwNSwgMjEyLCAyMDQsIDIxMiwgMjAzLCAyMTIsIDIwMiwgMjEyLCAyMDEsIDIxMiwgMjAwLCA3LCA2LCAxLCAxMTUsIAorICAgIDIsIDIzMSwgMjMzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDExNSwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNiwgCisgICAgMSwgMTYwLCAyLCA2NywgMjMyLCAyMTQsIDUxLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIAorICAgIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDE2MCwgMiwgNjcsIDIzMiwgCisgICAgMjE0LCAyNTIsIDQzLCAyMiwgMjQyLCAxMzYsIDcsIDYsIDEsIDE2MCwgMiwgNjcsIDIzMiwgMjE0LCAyNTIsIDQzLCAyMiwgCisgICAgMTQyLCA3LCA0LCAxLCAxNjAsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNiwgMSwgMTYwLCAyLCAKKyAgICAyNTAsIDMxLCAyMiwgMjMxLCAyMzIsIDcsIDQsIDEsIDE2MCwgMiwgMjUwLCAzMSwgMjIsIDIzMSwgMjMyLCA3LCA2LCAxLCAKKyAgICAxNjAsIDIsIDI1MCwgMzEsIDIyLCAyNTAsIDIzNCwgNywgNCwgMSwgMTYwLCAyLCAyNTAsIDMxLCAyMiwgMjUwLCAyMzQsIDcsIAorICAgIDYsIDEsIDI0MCwgMTU0LCAyLCAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjMxLCAKKyAgICAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMjI5LCAKKyAgICA4MCwgMiwgMjE2LCA4OSwgNDgsIDcsIDYsIDEsIDE0NCwgMiwgNjcsIDIzMiwgMjE0LCA1MSwgNywgNCwgMSwgMTQ0LCAyLCAKKyAgICA2NywgMjMyLCAyMTQsIDUxLCA3LCA2LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCAKKyAgICA3LCA0LCAxLCAxNDQsIDIsIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxNDQsIDIsIAorICAgIDY3LCAyMzIsIDIxNCwgMjUyLCA0MywgMjIsIDE0MiwgNywgNCwgMSwgMTQ0LCAyLCA2NywgMjMyLCAyMTQsIDI1MiwgNDMsIAorICAgIDIyLCAxNDIsIDcsIDYsIDEsIDIyMiwgOTIsIDIsIDY3LCAyMzIsIDIxNCwgNTEsIDcsIDQsIDEsIDIyMiwgOTIsIDIsIDY3LCAKKyAgICAyMzIsIDIxNCwgNTEsIDcsIDYsIDEsIDEwNCwgMiwgMjMxLCAyMzMsIDIyLCAyNDIsIDEzNiwgNywgNCwgMSwgMTA0LCAyLCAKKyAgICAyMzEsIDIzMywgMjIsIDI0MiwgMTM2LCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxMTUsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMTUsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA2LCAxLCAxNjAsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIAorICAgIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA2LCAxLCAxNjAsIDIsIDU5LCA3NywgMjIsIDE0MiwgNywgNCwgMSwgMTYwLCAyLCAKKyAgICA1OSwgNzcsIDIyLCAxNDIsIDcsIDYsIDEsIDE2MCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA0LCAxLCAxNjAsIDIsIDU5LCAKKyAgICA3NywgMjIsIDE4MiwgNywgNCwgMSwgMjQwLCAxNTQsIDIsIDU5LCA3NywgMjIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyNDAsIAorICAgIDE1NCwgMiwgNTksIDc3LCAyMiwgMTgyLCA3LCA2LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCAxNDIsIDcsIDQsIAorICAgIDEsIDI0MCwgMTU0LCAyLCAyMjYsIDIyNSwgMjIsIDU5LCA3NywgMjIsIDE0MiwgNywgNiwgMSwgMjQwLCAxNTQsIDIsIDIyNiwgCisgICAgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAyNDAsIDE1NCwgMiwgMjI2LCAyMjUsIDIyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIAorICAgIDEsIDIzNSwgMTQ1LCAyLCAxODIsIDcsIDQsIDEsIDIzNSwgMTQ1LCAyLCA1OSwgNzcsIDIyLCAxODIsIDcsIDYsIDEsIDIzMywgCisgICAgMTQ5LCAyLCAxODIsIDcsIDQsIDEsIDIzMywgMTQ5LCAyLCAxODIsIDcsIDYsIDEsIDIzMiwgNTAsIDIsIDE4MiwgNywgNCwgCisgICAgMSwgMjMyLCA1MCwgMiwgMTgyLCA3LCA2LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCA3LCA0LCAxLCAyMjMsIDIyNCwgMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIyNiwgMjI1LCAyMiwgMTgyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTQyLCAKKyAgICA3LCA2LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCA3LCA0LCAxLCAxMDQsIDIsIDIzMSwgMjMzLCAyMiwgMTgyLCAKKyAgICA3LCA0LCAxLCAyNTQsIDI0NCwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIwNCwgMTQ0LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgCisgICAgMjA0LCAxNDQsIDIsIDE0MiwgNywgNCwgMSwgMjE1LCA5NCwgMjE0LCAxMDYsIDIsIDI0MiwgMTM2LCA3LCA0LCAxLCAyMTUsIAorICAgIDk0LCAyMTQsIDEwNiwgMiwgMTQyLCA3LCA0LCAxLCAyMjEsIDE5NiwgMiwgMjQyLCAxMzYsIDcsIDQsIDEsIDIyMSwgMTk2LCAKKyAgICAyLCAxNDIsIDcsIDQsIDEsIDI0MSwgNTEsIDIyMSwgMTk2LCAyLCAyNDIsIDEzNiwgNywgNCwgMSwgMjQxLCA1MSwgMjIxLCAKKyAgICAxOTYsIDIsIDE0MiwgMTQ2LCAxLCAyMzQsIDEwOSwgMzYsIDExNiwgMjM1LCAyMywgMzYsIDExNiwgMjI5LCA3OSwgMzYsIAorICAgIDExNiwgMjUxLCA2NiwgMzYsIDExNiwgMjI3LCAxNjcsIDM2LCAxMTYsIDIxNSwgMTU5LCAzNiwgMTE2LCAyMjgsIDExMSwgCisgICAgMzYsIDExNiwgMjE3LCAxNTIsIDM2LCAxMTYsIDIzMCwgMjUsIDM2LCAxMTYsIDIyNiwgMTA1LCAzNiwgMTE2LCAxOTMsIDM2LCAKKyAgICAxMTYsIDIxMSwgMTE3LCAzNiwgMTE2LCAxNTMsIDM2LCAxMTYsIDE1NiwgMzYsIDExNiwgMjE0LCAxMDUsIDM2LCAxMTYsIAorICAgIDIzMiwgMTc2LCAzNiwgMTE2LCAyMzIsIDE4NSwgMzYsIDExNiwgMjIyLCAxODAsIDM2LCAxMTYsIDIyOCwgOTMsIDM2LCAKKyAgICAxMTYsIDIzNSwgMTQ0LCAzNiwgMTE2LCAyMjAsIDEwNCwgMzYsIDExNiwgMjE4LCAyMjYsIDM2LCAxMTYsIDIyMiwgOTEsIAorICAgIDM2LCAxMTYsIDI0MiwgNjAsIDM2LCAxMTYsIDIzMywgMjMyLCAzNiwgMywgMjM1LCAxMCwgMzYsIDMsIDIzNCwgOTIsIDM2LCAKKyAgICAzLCAyMzQsIDgzLCAzNiwgMywgMjMzLCAyMTcsIDM2LCAzLCAyMzMsIDE4OCwgMzYsIDMsIDIzNCwgMTgyLCAzNiwgMywgCisgICAgMjM0LCAxODEsIDM2LCAzLCAyMzQsIDI0NiwgMzYsIDMsIDIzNCwgMjgsIDM2LCAzLCAyMzQsIDEwLCAzNiwgMywgMjM0LCAKKyAgICAxOTUsIDM2LCAzLCAyMjksIDc2LCAzNiwgMywgMjI5LCAyNywgMzYsIDMsIDIyOSwgMjMsIDM2LCAzLCAyMjgsIDI0OCwgMzYsIAorICAgIDMsIDIyOCwgMjQxLCAzNiwgMywgMjI5LCA2NCwgMzYsIDMsIDIyOSwgNjIsIDM2LCAzLCAyMjksIDczLCAzNiwgMywgMjI5LCAKKyAgICA0LCAzNiwgMywgMjI4LCAyNTUsIDM2LCAzLCAyMjksIDY2LCAzNiwgMywgMjUxLCAzMiwgMzYsIDMsIDI1MCwgNTEsIDM2LCAKKyAgICAzLCAyNTAsIDQxLCAzNiwgMywgMjQ5LCAxMTIsIDM2LCAzLCAyNDksIDgzLCAzNiwgMywgMjUwLCAxOTAsIDM2LCAzLCAyNTAsIAorICAgIDE4MiwgMzYsIDMsIDI1MSwgMjIsIDM2LCAzLCAyNDksIDIzOCwgMzYsIDMsIDI0OSwgMTc0LCAzNiwgMywgMjUwLCAyMjIsIAorICAgIDM2LCAzLCAyMjcsIDE2NCwgMzYsIDMsIDIyNywgMTQ4LCAzNiwgMywgMjI3LCAxNDMsIDM2LCAzLCAyMjcsIDEyOCwgMzYsIAorICAgIDMsIDIyNywgMTIxLCAzNiwgMywgMjI3LCAxNTYsIDM2LCAzLCAyMjcsIDE1NSwgMzYsIDMsIDIyNywgMTYxLCAzNiwgMywgCisgICAgMjI3LCAxMzQsIDM2LCAzLCAyMjcsIDEzMiwgMzYsIDMsIDIyNywgMTU5LCAzNiwgMywgMjE1LCAxNTUsIDM2LCAzLCAyMTUsIAorICAgIDEzNSwgMzYsIDMsIDIxNSwgMTM0LCAzNiwgMywgMjE1LCAxMjMsIDM2LCAzLCAyMTUsIDEyMCwgMzYsIDMsIDIxNSwgMTUxLCAKKyAgICAzNiwgMywgMjE1LCAxNTAsIDM2LCAzLCAyMTUsIDE1NCwgMzYsIDMsIDIxNSwgMTMzLCAzNiwgMywgMjE1LCAxMzIsIDM2LCAKKyAgICAzLCAyMTUsIDE1MywgMzYsIDMsIDIyOCwgMTA5LCAzNiwgMywgMjI4LCA5NSwgMzYsIDMsIDIyOCwgOTQsIDM2LCAzLCAyMjgsIAorICAgIDc4LCAzNiwgMywgMjI4LCA3NywgMzYsIDMsIDIyOCwgMTA1LCAzNiwgMywgMjI4LCAxMDQsIDM2LCAzLCAyMjgsIDEwOCwgCisgICAgMzYsIDMsIDIyOCwgODAsIDM2LCAzLCAyMjgsIDc5LCAzNiwgMywgMjI4LCAxMDcsIDM2LCAzLCAyMTcsIDEwMSwgMzYsIDMsIAorICAgIDIxNiwgMTE3LCAzNiwgMywgMjE2LCAxMDMsIDM2LCAzLCAyMTUsIDExOCwgMzYsIDMsIDIxNSwgODUsIDM2LCAzLCAyMTcsIAorICAgIDIyLCAzNiwgMywgMjE3LCAxMSwgMzYsIDMsIDIxNywgNzksIDM2LCAzLCAxMTEsIDM2LCAzLCAyMTYsIDE3LCAzNiwgMywgCisgICAgMjE3LCA0MSwgMzYsIDMsIDIyOSwgMjI1LCAzNiwgMywgMjI4LCAyMzMsIDM2LCAzLCAyMjgsIDIwOCwgMzYsIDMsIDIyNywgCisgICAgMjM3LCAzNiwgMywgMjI3LCAxNzksIDM2LCAzLCAyMjksIDEwNywgMzYsIDMsIDIyOSwgMTAzLCAzNiwgMywgMjI5LCAyMTIsIAorICAgIDM2LCAzLCAyMjgsIDc0LCAzNiwgMywgMjI4LCA2NCwgMzYsIDMsIDIyOSwgMTg3LCAzNiwgMywgMjI2LCA4OSwgMzYsIDMsIAorICAgIDIyNSwgMTA4LCAzNiwgMywgMjI1LCA3MSwgMzYsIDMsIDIyNCwgMTUwLCAzNiwgMywgMjI0LCAxMTksIDM2LCAzLCAyMjUsIAorICAgIDIyMSwgMzYsIDMsIDIyNSwgMjExLCAzNiwgMywgMjI2LCA3MSwgMzYsIDMsIDIyNSwgMTYsIDM2LCAzLCAyMjQsIDI0OSwgCisgICAgMzYsIDMsIDIyNSwgMjM0LCAzNiwgMywgMjMxLCAyMzcsIDM2LCAzLCAyMzAsIDIzMCwgMzYsIDMsIDIzMCwgMjAxLCAzNiwgCisgICAgMywgMjMwLCAxMDIsIDM2LCAzLCAyMzAsIDU0LCAzNiwgMywgMjMxLCA5MSwgMzYsIDMsIDIzMSwgODAsIDM2LCAzLCAyMzEsIAorICAgIDIwMywgMzYsIDMsIDIzMCwgMTYxLCAzNiwgMywgMjMwLCAxMzIsIDM2LCAzLCAyMzEsIDEzNSwgMzYsIDMsIDIxMSwgMTAzLCAKKyAgICAzNiwgMywgMjExLCA4LCAzNiwgMywgMjEwLCAyNTUsIDM2LCAzLCAyMTAsIDIxMiwgMzYsIDMsIDIxMCwgMTgxLCAzNiwgMywgCisgICAgMjExLCA0NywgMzYsIDMsIDIxMSwgNDQsIDM2LCAzLCAyMTEsIDgyLCAzNiwgMywgMjEwLCAyNDQsIDM2LCAzLCAyMTAsIAorICAgIDIyOSwgMzYsIDMsIDIxMSwgNTUsIDM2LCAzLCAyMjMsIDE4NCwgMzYsIDMsIDIyMywgMzUsIDM2LCAzLCAyMjIsIDIzOSwgCisgICAgMzYsIDMsIDIyMiwgMTQwLCAzNiwgMywgMjIyLCAxMTIsIDM2LCAzLCAyMjMsIDEyOCwgMzYsIDMsIDIyMywgMTA4LCAzNiwgCisgICAgMywgMjIzLCAxNjYsIDM2LCAzLCAyMjIsIDIxMSwgMzYsIDMsIDIyMiwgMTk3LCAzNiwgMywgMjIzLCAxMzYsIDM2LCAzLCAKKyAgICAyMzMsIDEzNCwgMzYsIDMsIDIzMiwgMjQxLCAzNiwgMywgMjMyLCAyMjcsIDM2LCAzLCAyMzIsIDk4LCAzNiwgMywgMjMyLCAKKyAgICA3MywgMzYsIDMsIDIzMywgNTgsIDM2LCAzLCAyMzMsIDUwLCAzNiwgMywgMjMzLCAxMDksIDM2LCAzLCAyMzIsIDE1NiwgMzYsIAorICAgIDMsIDIzMiwgMTI3LCAzNiwgMywgMjMzLCA3NCwgMzYsIDMsIDIxNCwgMjYsIDM2LCAzLCAyMTMsIDE3NiwgMzYsIDMsIDIxMywgCisgICAgMTYyLCAzNiwgMywgMjEyLCAxMTYsIDM2LCAzLCAyMTIsIDEwOSwgMzYsIDMsIDIxMywgMjU1LCAzNiwgMywgMjEzLCAyNTAsIAorICAgIDM2LCAzLCAyMTQsIDIzLCAzNiwgMywgMjEzLCAxMzgsIDM2LCAzLCAyMTMsIDEyNywgMzYsIDMsIDIxNCwgNSwgMzYsIDMsIAorICAgIDIzMiwgMTc0LCAzNiwgMywgMjMyLCAxNjksIDM2LCAzLCAyMzIsIDE2OCwgMzYsIDMsIDIzMiwgMTY1LCAzNiwgMywgMjMyLCAKKyAgICAxNjQsIDM2LCAzLCAyMzIsIDE3MSwgMzYsIDMsIDIzMiwgMTcwLCAzNiwgMywgMjMyLCAxNzMsIDM2LCAzLCAyMzIsIDE2NywgCisgICAgMzYsIDMsIDIzMiwgMTY2LCAzNiwgMywgMjMyLCAxNzIsIDM2LCAzLCAyMzIsIDE4MywgMzYsIDMsIDIzMiwgMTc4LCAzNiwgCisgICAgMywgMjMyLCAxNzcsIDM2LCAzLCAyMzIsIDE2MSwgMzYsIDMsIDIzMiwgMTYwLCAzNiwgMywgMjMyLCAxODAsIDM2LCAzLCAKKyAgICAyMzIsIDE3OSwgMzYsIDMsIDIzMiwgMTgyLCAzNiwgMywgMjMyLCAxNjMsIDM2LCAzLCAyMzIsIDE2MiwgMzYsIDMsIDIzMiwgCisgICAgMTgxLCAzNiwgMywgMjIyLCAxNzgsIDM2LCAzLCAyMjIsIDE2NywgMzYsIDMsIDIyMiwgMTY2LCAzNiwgMywgMjIyLCAxNjAsIAorICAgIDM2LCAzLCAyMjIsIDE1MywgMzYsIDMsIDIyMiwgMTc0LCAzNiwgMywgMjIyLCAxNzMsIDM2LCAzLCAyMjIsIDE3NywgMzYsIAorICAgIDMsIDIyMiwgMTY1LCAzNiwgMywgMjIyLCAxNjQsIDM2LCAzLCAyMjIsIDE3NiwgMzYsIDMsIDIyOCwgOTEsIDM2LCAzLCAKKyAgICAyMjgsIDg2LCAzNiwgMywgMjI4LCA4NSwgMzYsIDMsIDIyOCwgODIsIDM2LCAzLCAyMjgsIDgxLCAzNiwgMywgMjI4LCA4OCwgCisgICAgMzYsIDMsIDIyOCwgODcsIDM2LCAzLCAyMjgsIDkwLCAzNiwgMywgMjI4LCA4NCwgMzYsIDMsIDIyOCwgODMsIDM2LCAzLCAKKyAgICAyMjgsIDg5LCAzNiwgMywgMjM1LCAxNDAsIDM2LCAzLCAyMzUsIDEwOCwgMzYsIDMsIDIzNSwgMTAxLCAzNiwgMywgMjM1LCAKKyAgICA1MSwgMzYsIDMsIDIzNSwgMzMsIDM2LCAzLCAyMzUsIDEyNiwgMzYsIDMsIDIzNSwgMTI0LCAzNiwgMywgMjM1LCAxMzUsIAorICAgIDM2LCAzLCAyMzUsIDY4LCAzNiwgMywgMjM1LCA1OSwgMzYsIDMsIDIzNSwgMTI5LCAzNiwgMywgMjIwLCA5OCwgMzYsIDMsIAorICAgIDIyMCwgMzIsIDM2LCAzLCAyMjAsIDI3LCAzNiwgMywgMjE5LCAyMjUsIDM2LCAzLCAyMTksIDIxMCwgMzYsIDMsIDIyMCwgCisgICAgNjMsIDM2LCAzLCAyMjAsIDYxLCAzNiwgMywgMjIwLCA5MCwgMzYsIDMsIDIyMCwgNywgMzYsIDMsIDIyMCwgMSwgMzYsIDMsIAorICAgIDIyMCwgNzEsIDM2LCAzLCAyMTgsIDIyMiwgMzYsIDMsIDIxOCwgMTkyLCAzNiwgMywgMjE4LCAxODgsIDM2LCAzLCAyMTgsIAorICAgIDE3OSwgMzYsIDMsIDIxOCwgMTc2LCAzNiwgMywgMjE4LCAxOTcsIDM2LCAzLCAyMTgsIDE5NiwgMzYsIDMsIDIxOCwgMjIxLCAKKyAgICAzNiwgMywgMjE4LCAxODQsIDM2LCAzLCAyMTgsIDE4MywgMzYsIDMsIDIxOCwgMTk5LCAzNiwgMywgMjIyLCAzMSwgMzYsIDMsIAorICAgIDIxOSwgMTkxLCAzNiwgMywgMjE5LCAxNzUsIDM2LCAzLCAyMTgsIDgzLCAzNiwgMywgMjE4LCA0LCAzNiwgMywgMjIxLCAKKyAgICAxODEsIDM2LCAzLCAyMjEsIDE3MCwgMzYsIDMsIDIyMiwgMTcsIDM2LCAzLCAyMTksIDU4LCAzNiwgMywgMjE5LCA0MCwgMzYsIAorICAgIDMsIDIyMSwgMjE5LCAzNiwgMywgMjQyLCA0NiwgMzYsIDMsIDI0MSwgMTgwLCAzNiwgMywgMjQxLCAxNjEsIDM2LCAzLCAKKyAgICAyNDAsIDIyMiwgMzYsIDMsIDI0MCwgMjAyLCAzNiwgMywgMjQxLCAyMzgsIDM2LCAzLCAyNDEsIDIyMCwgMzYsIDMsIDI0MiwgCisgICAgMzYsIDM2LCAzLCAyNDEsIDY4LCAzNiwgMywgMjQxLCA1MywgMzYsIDMsIDI0MSwgMjQ2LCAzNiwgMywgMjMzLCAyMzEsIDM2LCAKKyAgICAzLCAyMzMsIDIzMCwgMzYsIDMsIDIzMywgMjI1LCAzNiwgMywgMjMzLCAyMjQsIDM2LCAzLCAyMzMsIDIyMSwgMzYsIDMsIAorICAgIDIzMywgMjIwLCAzNiwgMywgMjMzLCAyMjcsIDM2LCAzLCAyMzMsIDIyNiwgMzYsIDMsIDIzMywgMjI5LCAzNiwgMywgMjMzLCAKKyAgICAyMjMsIDM2LCAzLCAyMzMsIDIyMiwgMzYsIDMsIDIzMywgMjI4LCAzNiwgMywgMjE5LCAyMzEsIDE3NSwgMTE2LCA1LCAyMTEsIAorICAgIDY4LCAxNzUsIDExNiwgNSwgMjIzLCAxNTUsIDE3NSwgMTE2LCA1LCAyMjMsIDc4LCA5OCwgMSwgMjE1LCAyOCwgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDE3NiwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTMyLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgCisgICAgMjM0LCAyOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIzNCwgMTA1LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI5LCA0LCAKKyAgICA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjUxLCAzMywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDI1MCwgMTU3LCA2OSwgMTE2LCAKKyAgICA1LCAyNDksIDIzMywgMjQ5LCAyMzgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTAsIDg2LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjI3LCAxMzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNDgsIDIyMSwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNSwgCisgICAgMTQ0LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjQ3LCAxNDUsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTUsIDEzOSwgNjksIAorICAgIDExNiwgNSwgMjQ5LCAyMzMsIDE5NywgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIxNywgMTA1LCA2OSwgMTE2LCA1LCAyNDksIAorICAgIDIzMywgMjE2LCAyMDgsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxMTEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTYsIDE1NiwgCisgICAgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyOCwgNzQsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyNTIsIDE5MSwgNjksIDExNiwgCisgICAgNSwgMjQ5LCAyMzMsIDIyNSwgMTQ3LCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjI1LCAxNiwgNjksIDExNiwgNSwgMjQ5LCAKKyAgICAyMzMsIDIyNSwgMTIxLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMwLCAxNjEsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMTAsIAorICAgIDI0NCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMiwgMjExLCA2OSwgMTE2LCA1LCAyNDksIDIzMywgMjMyLCAxNTYsIDY5LCAKKyAgICAxMTYsIDUsIDI0OSwgMjMzLCAyMTMsIDEzOCwgNjksIDExNiwgNSwgMjQ5LCAyMzMsIDIyMCwgMTAyLCA2OSwgMTE2LCA1LCAKKyAgICAyNDksIDIzMywgMjE4LCAyMjMsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMDYsIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAxNjIsIAorICAgIDY5LCAxMTYsIDUsIDI0OSwgMjMzLCAyMzMsIDEzNSwgNjksIDI1LCA1LCAyNDksIDIzMywgMjI0LCA4OCwgNjksIDIzNSwgCisgICAgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyNCwgMzAsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAyMjIsIDEwMCwgCisgICAgNjksIDIzNSwgMjQzLCAyNSwgNSwgMjQ5LCAyMzMsIDIyMiwgOTMsIDY5LCAyMzUsIDI0MywgMjUsIDUsIDI0OSwgMjMzLCAKKyAgICAyMjQsIDY5LCA2OSwgMjUsIDUsIDIyNiwgMjA0LCA2OSwgMjUsIDUsIDI1NSwgMzQsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgCisgICAgNzcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOSwgMjcsIDE0MSwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCAxNDEsIDEsIDI1MSwgCisgICAgMjU1LCAyMjksIDY0LCAxNDEsIDEsIDI1MSwgMjU1LCAyMjksIDQsIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA3NywgNTYsIDEsIAorICAgIDI1MSwgMjU1LCAyMjksIDI3LCA1NiwgMSwgMjUxLCAyNTUsIDIyOCwgMjQ4LCA1NiwgMSwgMjUxLCAyNTUsIDIyOSwgNjQsIAorICAgIDU2LCAxLCAyNTEsIDI1NSwgMjI5LCA0LCA1NiwgMSwgMjU0LCAxOTQsIDI1MCwgMTkwLCA1NiwgMSwgMjU0LCAxOTQsIDIxNSwgCisgICAgMTE4LCA1NiwgMSwgMjU0LCAxOTQsIDExMSwgNTYsIDEsIDI1NCwgMTk0LCAyMjYsIDEwNSwgNTgsIDEsIDI0NSwgMjAsIAorICAgIDI0NSwgMTksIDI0OSwgMTgyLCAxMzgsIDEzMCwgNTgsIDEsIDI0NSwgMTksIDI0NSwgMjAsIDI0OSwgMTgyLCAxMzgsIDEzMCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rX29mZnNldDFbXSA9IHsKQEAgLTEzMTI3LDQ4NyArMTM4MjQsNDg4IEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgCiAgICAgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgCiAgICAgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCA3NCwgCi0gICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgMTcsIDg3LCA4OCwgODksIDkwLCA5MSwgCi0gICAgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIAotICAgIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIDEyMSwgMTIyLCAKLSAgICAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTI4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMjksIDEzMCwgCi0gICAgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAotICAgIDE0NSwgMTQ2LCAxNywgMTQ3LCAxNDgsIDE0OSwgMTUwLCAxNTEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE1MiwgMTcsIAotICAgIDE1MywgMTcsIDE1NCwgMTcsIDE1NSwgMTcsIDE1NiwgMTcsIDE3LCAxNywgMTU3LCAxNywgMTcsIDE3LCAxNTgsIDE1OSwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTYwLCAxNjEsIDE2MiwgMTYzLCAxNjQsIAotICAgIDE2NSwgMTY2LCAxNywgMTY3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIAotICAgIDE3NCwgMTc1LCAxNzYsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNzcsIAotICAgIDE3OCwgMTc5LCAxODAsIDE4MSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE4MiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE3LCAxODgsIAotICAgIDE3LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDE3LCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgCi0gICAgMjA3LCAyMDgsIDIwOSwgMjEwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyMTEsIDIxMiwgMjEzLCAKLSAgICAyMTQsIDIxNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjE2LCAxNywgMjE3LCAyMTgsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLCA5MiwgCisgICAgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTA0LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAKKyAgICAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLCAxMjIsIDEyMywgCisgICAgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDEyOSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTMwLCAxMzEsIAorICAgIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAKKyAgICAxNDYsIDE0NywgODcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNTMsIDg3LCAKKyAgICAxNTQsIDE1NSwgMTU2LCA4NywgMTU3LCA4NywgMTU4LCA4NywgODcsIDg3LCAxNTksIDg3LCA4NywgODcsIDE2MCwgMTYxLCAKKyAgICAxNjIsIDE2MywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTY0LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAorICAgIDE2OSwgMTcwLCAxNzEsIDg3LCAxNzIsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgCisgICAgMTc5LCAxODAsIDE4MSwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE4MiwgCisgICAgMTgzLCAxODQsIDE4NSwgMTg2LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAxODcsIDE4OCwgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICAxODksIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgCisgICAgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCA4NywgMTk1LCAKKyAgICA4NywgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgMjA0LCAyMDUsIDg3LCA4NywgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDg3LCAyMTEsIDIxMiwgMjEzLCAyMTQsIAorICAgIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAyMjAsIDIyMSwgCisgICAgMjIyLCAyMjMsIDIyNCwgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCAKKyAgICA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgMjI1LCA4NywgMjI2LCAyMjcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDIzNSwgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIDg3LCA4NywgODcsIAorICAgIDg3LCA4NywgODcsIDg3LCAKIH07CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQgcGhyYXNlYm9va19vZmZzZXQyW10gPSB7CkBAIC0xMzYxNSwyODAzICsxNDMxMywzMDE1IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMywgNiwgOSwgMTEsIDE0LCAxNywgMTksIDIxLCAyNCwgMjcsIDI5LCAzMSwgCiAgICAgMzMsIDM1LCAzOSwgNDEsIDQ0LCA0NiwgNDgsIDUwLCA1MiwgNTQsIDU2LCA1OCwgNjAsIDYyLCA2NCwgNjYsIDY5LCA3MiwgCiAgICAgNzUsIDc4LCA4MiwgODYsIDkxLCA5NiwgMTAxLCAxMDUsIDExMCwgMTE1LCAxMjAsIDEyNCwgMTI5LCAxMzQsIDEzOCwgMTQyLCAKLSAgICAxNDYsIDE1MCwgMTU1LCAxNjAsIDE2NCwgMTY4LCAxNzMsIDE3NywgMTgyLCAxODcsIDE5MiwgMTk3LCAyMDIsIDIwNSwgCi0gICAgMjA5LCAyMTIsIDIxNiwgMjE5LCAyMjMsIDIyNywgMjMyLCAyMzcsIDI0MiwgMjQ2LCAyNTEsIDI1NiwgMjYxLCAyNjUsIAotICAgIDI3MCwgMjc1LCAyNzksIDI4MywgMjg3LCAyOTEsIDI5NiwgMzAxLCAzMDUsIDMwOSwgMzE0LCAzMTgsIDMyMywgMzI4LCAKLSAgICAzMzMsIDMzOCwgMzQzLCAzNDcsIDM1MCwgMzU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTYsIDM2MCwgMzY1LCAKLSAgICAzNjgsIDM3MSwgMzc0LCAzNzcsIDM4MCwgMzgzLCAzODUsIDM4OCwgMzk0LCA0MDIsIDQwNSwgNDA5LCA0MTIsIDQxNCwgCi0gICAgNDE3LCA0MjAsIDQyMywgNDI2LCA0MzAsIDQzMywgNDM2LCA0NDAsIDQ0MiwgNDQ1LCA0NTEsIDQ1OSwgNDY2LCA0NzMsIAotICAgIDQ4MCwgNDg1LCA0OTIsIDQ5OCwgNTA1LCA1MTIsIDUxOSwgNTI3LCA1MzIsIDU0MCwgNTQ3LCA1NTMsIDU2MCwgNTY3LCAKLSAgICA1NzUsIDU4MiwgNTkwLCA1OTgsIDYwMywgNjExLCA2MTgsIDYyNCwgNjMxLCA2MzgsIDY0NSwgNjQ4LCA2NTQsIDY2MSwgCi0gICAgNjY3LCA2NzQsIDY4MSwgNjg4LCA2OTMsIDY5OSwgNzA2LCA3MTIsIDcxOSwgNzI2LCA3MzMsIDc0MSwgNzQ2LCA3NTQsIAotICAgIDc2MSwgNzY3LCA3NzQsIDc4MSwgNzg5LCA3OTYsIDgwNCwgODEyLCA4MTcsIDgyNSwgODMyLCA4MzgsIDg0NSwgODUyLCAKLSAgICA4NTksIDg2MiwgODY4LCA4NzUsIDg4MSwgODg4LCA4OTUsIDkwMiwgOTA3LCA5MTUsIDkyMiwgOTI5LCA5MzYsIDk0MywgCi0gICAgOTUwLCA5NTcsIDk2NCwgOTcxLCA5NzksIDk4NywgOTk1LCAxMDAzLCAxMDExLCAxMDE5LCAxMDI3LCAxMDM1LCAxMDQyLCAKLSAgICAxMDQ5LCAxMDU2LCAxMDYzLCAxMDcwLCAxMDc3LCAxMDg0LCAxMDkxLCAxMDk4LCAxMTA1LCAxMTEyLCAxMTE5LCAxMTI3LCAKLSAgICAxMTM1LCAxMTQzLCAxMTUxLCAxMTU5LCAxMTY3LCAxMTc1LCAxMTgzLCAxMTkxLCAxMTk5LCAxMjA2LCAxMjEzLCAxMjIxLCAKLSAgICAxMjI5LCAxMjM3LCAxMjQ1LCAxMjUzLCAxMjYxLCAxMjY5LCAxMjc3LCAxMjg1LCAxMjkxLCAxMjk2LCAxMzAxLCAxMzA5LCAKLSAgICAxMzE3LCAxMzI1LCAxMzMzLCAxMzM4LCAxMzQ1LCAxMzUyLCAxMzYwLCAxMzY4LCAxMzc2LCAxMzg0LCAxMzk0LCAxNDA0LCAKLSAgICAxNDExLCAxNDE4LCAxNDI1LCAxNDMyLCAxNDQwLCAxNDQ4LCAxNDU2LCAxNDY0LCAxNDc1LCAxNDgwLCAxNDg1LCAxNDkyLCAKLSAgICAxNDk5LCAxNTA2LCAxNTEzLCAxNTIwLCAxNTI3LCAxNTMyLCAxNTM3LCAxNTQ0LCAxNTUxLCAxNTU5LCAxNTY3LCAxNTc1LCAKLSAgICAxNTgzLCAxNTkwLCAxNTk3LCAxNjA1LCAxNjEzLCAxNjIxLCAxNjI5LCAxNjM3LCAxNjQ1LCAxNjUzLCAxNjYxLCAxNjY5LCAKLSAgICAxNjc3LCAxNjg0LCAxNjkxLCAxNjk4LCAxNzA1LCAxNzEyLCAxNzE5LCAxNzI2LCAxNzMzLCAxNzQxLCAxNzQ5LCAxNzU2LCAKLSAgICAxNzYzLCAxNzcwLCAxNzc3LCAxNzg1LCAxNzkzLCAxODAxLCAxODA5LCAxODE3LCAxODI0LCAxODMxLCAxODM5LCAxODQ3LCAKLSAgICAxODU1LCAxODYzLCAxODY4LCAxODc0LCAxODgwLCAxODg3LCAxODk0LCAxODk5LCAxOTA0LCAxOTEwLCAxOTE3LCAxOTI0LCAKLSAgICAxOTMxLCAxOTM4LCAxOTQ2LCAxOTU0LCAxOTYxLCAxOTY3LCAxOTcyLCAxOTc4LCAxOTg1LCAxOTkyLCAxOTk5LCAyMDA0LCAKLSAgICAyMDA5LCAyMDE0LCAyMDIxLCAyMDI4LCAyMDM1LCAyMDQyLCAyMDQ5LCAyMDU1LCAyMDYzLCAyMDczLCAyMDgyLCAyMDg5LCAKLSAgICAyMDk2LCAyMTAxLCAyMTA2LCAyMTEzLCAyMTIwLCAyMTI0LCAyMTI5LCAyMTM0LCAyMTM5LCAyMTQ3LCAyMTU2LCAyMTYzLCAKLSAgICAyMTcwLCAyMTc5LCAyMTg2LCAyMTkzLCAyMTk4LCAyMjA1LCAyMjEyLCAyMjE5LCAyMjI2LCAyMjMzLCAyMjM4LCAyMjQ1LCAKLSAgICAyMjUyLCAyMjYwLCAyMjY1LCAyMjcwLCAyMjc1LCAyMjg1LCAyMjg5LCAyMjk1LCAyMzAxLCAyMzA3LCAyMzEzLCAyMzIxLCAKLSAgICAyMzM0LCAyMzQyLCAyMzQ3LCAyMzU3LCAyMzYyLCAyMzY3LCAyMzc3LCAyMzgyLCAyMzg5LCAyMzk2LCAyNDA0LCAyNDEyLCAKLSAgICAyNDE5LCAyNDI2LCAyNDMzLCAyNDQwLCAyNDUwLCAyNDYwLCAyNDY5LCAyNDc4LCAyNDg4LCAyNDk4LCAyNTA4LCAyNTE4LCAKLSAgICAyNTI0LCAyNTM0LCAyNTQ0LCAyNTU0LCAyNTY0LCAyNTcyLCAyNTgwLCAyNTg3LCAyNTk0LCAyNjAyLCAyNjEwLCAyNjE4LCAKLSAgICAyNjI2LCAyNjMzLCAyNjQwLCAyNjUwLCAyNjYwLCAyNjY4LCAyNjc2LCAyNjg0LCAyNjg5LCAyNjk5LCAyNzA0LCAyNzExLCAKLSAgICAyNzE4LCAyNzIzLCAyNzI4LCAyNzM2LCAyNzQ0LCAyNzU0LCAyNzY0LCAyNzcxLCAyNzc4LCAyNzg3LCAyNzk2LCAyODA0LCAKLSAgICAyODEyLCAyODIxLCAyODMwLCAyODM4LCAyODQ2LCAyODU1LCAyODY0LCAyODczLCAyODgyLCAyODkyLCAyOTAyLCAyOTEwLCAKLSAgICAyOTE4LCAyOTI3LCAyOTM2LCAyOTQ1LCAyOTU0LCAyOTY0LCAyOTc0LCAyOTgyLCAyOTkwLCAyOTk5LCAzMDA4LCAzMDE3LCAKLSAgICAzMDI2LCAzMDM1LCAzMDQ0LCAzMDQ5LCAzMDU0LCAzMDYyLCAzMDcwLCAzMDgwLCAzMDg4LCAzMDkzLCAzMDk4LCAzMTA1LCAKLSAgICAzMTEyLCAzMTE5LCAzMTI2LCAzMTMzLCAzMTQwLCAzMTUwLCAzMTYwLCAzMTcwLCAzMTgwLCAzMTg3LCAzMTk0LCAzMjA0LCAKLSAgICAzMjE0LCAzMjIyLCAzMjMwLCAzMjM4LCAzMjQ2LCAzMjU0LCAzMjYxLCAzMjY4LCAzMjc1LCAzMjgxLCAzMjg4LCAzMjk1LCAKLSAgICAzMzAyLCAzMzExLCAzMzIxLCAzMzMxLCAzMzM4LCAzMzQ1LCAzMzUxLCAzMzU2LCAzMzYzLCAzMzY5LCAzMzc1LCAzMzgyLCAKLSAgICAzMzg5LCAzNDAwLCAzNDEwLCAzNDE3LCAzNDI0LCAzNDMxLCAzNDM4LCAzNDQ0LCAzNDQ5LCAzNDU2LCAzNDYyLCAzNDY4LCAKLSAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE1LCAzNTIzLCAzNTMzLCAzNTQzLCAzNTUyLCAzNTU5LCAKLSAgICAzNTY1LCAzNTcxLCAzNTc2LCAzNTgzLCAzNTkwLCAzNTk3LCAzNjA0LCAzNjExLCAzNjE2LCAzNjIxLCAzNjMxLCAzNjM5LCAKLSAgICAzNjQ4LCAzNjUzLCAzNjU5LCAzNjcwLCAzNjc3LCAzNjg1LCAzNjk0LCAzNjk5LCAzNzA1LCAzNzExLCAzNzE4LCAzNzIzLCAKLSAgICAzNzI5LCAzNzQwLCAzNzQ5LCAzNzU4LCAzNzY2LCAzNzc0LCAzNzg0LCAzNzg5LCAzNzk2LCAzODAzLCAzODA4LCAzODIwLCAKLSAgICAzODI5LCAzODM3LCAzODQ0LCAzODUzLCAzODU4LCAzODYzLCAzODcwLCAzODc3LCAzODg0LCAzODkxLCAzODk3LCAzOTA2LCAKLSAgICAzOTE0LCAzOTE5LCAzOTI3LCAzOTMzLCAzOTQxLCAzOTQ5LCAzOTU1LCAzOTYxLCAzOTY3LCAzOTc1LCAzOTgzLCAzOTg5LCAKLSAgICAzOTk3LCA0MDA0LCA0MDA5LCA0MDE2LCA0MDI0LCA0MDM0LCA0MDQxLCA0MDQ4LCA0MDU4LCA0MDY1LCA0MDcyLCA0MDgyLCAKLSAgICA0MDg5LCA0MDk2LCA0MTAzLCA0MTA5LCA0MTE1LCA0MTI1LCA0MTM4LCA0MTQzLCA0MTUwLCA0MTU1LCA0MTU5LCA0MTY1LCAKLSAgICA0MTc0LCA0MTgxLCA0MTg2LCA0MTkxLCA0MTk1LCA0MjAwLCA0MjA2LCA0MjEwLCA0MjE2LCA0MjIyLCA0MjI4LCA0MjM0LCAKLSAgICA0MjQyLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY4LCA0MjcwLCA0Mjc1LCA0Mjc5LCA0Mjg1LCA0MjkxLCA0Mjk3LCAKLSAgICA0MzAyLCA0MzA5LCA0MzE2LCA0MzIyLCA0MzI5LCA0MzM3LCA0MzQ1LCA0MzUwLCA0MzU1LCA0MzU5LCA0MzY0LCA0MzY2LCAKLSAgICA0MzY4LCA0MzcxLCA0MzczLCA0Mzc2LCA0MzgxLCA0Mzg2LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA1LCA0NDEwLCA0NDE5LCAKLSAgICA0NDI1LCA0NDMwLCA0NDM2LCA0NDQxLCA0NDQ3LCA0NDU1LCA0NDYzLCA0NDY3LCA0NDcxLCA0NDc2LCA0NDgyLCA0NDg4LCAKLSAgICA0NDk0LCA0NTAwLCA0NTA1LCA0NTEzLCA0NTIyLCA0NTMxLCA0NTM2LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCA0NTcwLCAKLSAgICA0NTc0LCA0NTgwLCA0NTg1LCA0NTkwLCA0NTk1LCA0NjAwLCA0NjAzLCA0NjA2LCA0NjA5LCA0NjEyLCA0NjE1LCA0NjE4LCAKLSAgICA0NjIyLCA0NjI2LCA0NjMyLCA0NjM1LCA0NjQwLCA0NjQ2LCA0NjUyLCA0NjU1LCA0NjYwLCA0NjY2LCA0NjcwLCA0Njc2LCAKLSAgICA0NjgyLCA0Njg4LCA0Njk0LCA0Njk5LCA0NzA0LCA0NzA5LCA0NzEyLCA0NzE4LCA0NzIzLCA0NzI4LCA0NzMyLCA0NzM3LCAKLSAgICA0NzQzLCA0NzQ5LCA0NzUyLCA0NzU2LCA0NzYwLCA0NzY0LCA0NzY3LCA0NzcwLCA0Nzc1LCA0Nzc5LCA0Nzg2LCA0NzkwLCAKLSAgICA0Nzk2LCA0ODAwLCA0ODA2LCA0ODEwLCA0ODE0LCA0ODE4LCA0ODIzLCA0ODI4LCA0ODM1LCA0ODQxLCA0ODQ4LCA0ODU0LCAKLSAgICA0ODYwLCA0ODY2LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgxLCA0ODg1LCA0ODkwLCA0ODk1LCA0ODk5LCA0OTAzLCA0OTA5LCAKLSAgICA0OTEzLCA0OTE3LCA0OTIyLCA0OTI4LCA0OTMzLCA0OTM5LCA0OTQzLCA0OTUwLCA0OTU1LCA0OTYwLCA0OTY1LCA0OTcwLCAKLSAgICA0OTc2LCA0OTc5LCA0OTgzLCA0OTg4LCA0OTkzLCA1MDAyLCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCA1MDI2LCA1MDMxLCAKLSAgICA1MDM1LCA1MDM5LCA1MDQ0LCA1MDQ4LCA1MDU0LCA1MDU5LCA1MDY0LCA1MDY5LCA1MDc0LCA1MDc5LCA1MDg0LCA1MDkwLCAKLSAgICA1MDk2LCA1MTAyLCA1MTA3LCA1MTEyLCA1MTE4LCA1MTI0LCA1MTMwLCA1MTM1LCA1MTQwLCA1MTQ3LCA1MTU0LCA1MTU4LCAKLSAgICA1MTY0LCA1MTcxLCAwLCAwLCA1MTc4LCA1MTgxLCA1MTkwLCA1MTk5LCA1MjEwLCAwLCAwLCAwLCAwLCAwLCA1MjE0LCAKLSAgICA1MjE3LCA1MjIyLCA1MjMwLCA1MjM1LCA1MjQzLCA1MjUxLCAwLCA1MjU5LCAwLCA1MjY3LCA1Mjc1LCA1MjgzLCA1Mjk0LCAKLSAgICA1Mjk5LCA1MzA0LCA1MzA5LCA1MzE0LCA1MzE5LCA1MzI0LCA1MzI5LCA1MzM0LCA1MzM5LCA1MzQ0LCA1MzQ5LCA1MzU0LCAKLSAgICA1MzU5LCA1MzY0LCA1MzY5LCA1Mzc0LCAwLCA1Mzc5LCA1Mzg0LCA1Mzg5LCA1Mzk0LCA1Mzk5LCA1NDA0LCA1NDA5LCAKLSAgICA1NDE0LCA1NDIyLCA1NDMwLCA1NDM4LCA1NDQ2LCA1NDU0LCA1NDYyLCA1NDczLCA1NDc4LCA1NDgzLCA1NDg4LCA1NDkzLCAKLSAgICA1NDk4LCA1NTAzLCA1NTA4LCA1NTEzLCA1NTE4LCA1NTIzLCA1NTI4LCA1NTMzLCA1NTM4LCA1NTQzLCA1NTQ4LCA1NTUzLCAKLSAgICA1NTU4LCA1NTY0LCA1NTY5LCA1NTc0LCA1NTc5LCA1NTg0LCA1NTg5LCA1NTk0LCA1NTk5LCA1NjA3LCA1NjE1LCA1NjIzLCAKLSAgICA1NjMxLCA1NjM5LCA1NjQ0LCA1NjQ4LCA1NjUyLCA1NjU5LCA1NjY5LCA1Njc5LCA1NjgzLCA1Njg3LCA1NjkxLCA1Njk3LCAKLSAgICA1NzA0LCA1NzA4LCA1NzEzLCA1NzE3LCA1NzIyLCA1NzI2LCA1NzMxLCA1NzM1LCA1NzQwLCA1NzQ1LCA1NzUwLCA1NzU1LCAKLSAgICA1NzYwLCA1NzY1LCA1NzcwLCA1Nzc1LCA1NzgwLCA1Nzg1LCA1NzkwLCA1Nzk1LCA1ODAwLCA1ODA1LCA1ODEwLCA1ODE0LCAKLSAgICA1ODE4LCA1ODI0LCA1ODI4LCA1ODMzLCA1ODM5LCA1ODQ3LCA1ODUyLCA1ODU3LCA1ODY0LCA1ODY5LCA1ODc0LCA1ODgxLCAKLSAgICA1ODkwLCA1ODk5LCA1OTEwLCA1OTE4LCA1OTIzLCA1OTI4LCA1OTMzLCA1OTQwLCA1OTQ1LCA1OTUxLCA1OTU2LCA1OTYxLCAKLSAgICA1OTY2LCA1OTcxLCA1OTc2LCA1OTgxLCA1OTg5LCA1OTk1LCA2MDAwLCA2MDA0LCA2MDA5LCA2MDE0LCA2MDE5LCA2MDI0LCAKLSAgICA2MDI5LCA2MDM0LCA2MDM5LCA2MDQzLCA2MDQ5LCA2MDUzLCA2MDU4LCA2MDYzLCA2MDY4LCA2MDcyLCA2MDc3LCA2MDgyLCAKLSAgICA2MDg3LCA2MDkyLCA2MDk2LCA2MTAxLCA2MTA1LCA2MTEwLCA2MTE1LCA2MTIwLCA2MTI1LCA2MTMxLCA2MTM2LCA2MTQyLCAKLSAgICA2MTQ2LCA2MTUxLCA2MTU1LCA2MTU5LCA2MTY0LCA2MTY5LCA2MTc0LCA2MTc5LCA2MTg0LCA2MTg5LCA2MTk0LCA2MTk4LCAKLSAgICA2MjA0LCA2MjA4LCA2MjEzLCA2MjE4LCA2MjIzLCA2MjI3LCA2MjMyLCA2MjM3LCA2MjQyLCA2MjQ3LCA2MjUxLCA2MjU2LCAKLSAgICA2MjYwLCA2MjY1LCA2MjcwLCA2Mjc1LCA2MjgwLCA2Mjg2LCA2MjkxLCA2Mjk3LCA2MzAxLCA2MzA2LCA2MzEwLCA2MzE4LCAKLSAgICA2MzIzLCA2MzI4LCA2MzMzLCA2MzQwLCA2MzQ1LCA2MzUxLCA2MzU2LCA2MzYxLCA2MzY2LCA2MzcxLCA2Mzc2LCA2MzgxLCAKLSAgICA2Mzg5LCA2Mzk1LCA2NDAwLCA2NDA1LCA2NDEwLCA2NDE1LCA2NDIwLCA2NDI2LCA2NDMyLCA2NDM5LCA2NDQ2LCA2NDU1LCAKLSAgICA2NDY0LCA2NDcxLCA2NDc4LCA2NDg3LCA2NDk2LCA2NTAxLCA2NTA2LCA2NTExLCA2NTE2LCA2NTIxLCA2NTI2LCA2NTMxLCAKLSAgICA2NTM2LCA2NTQ3LCA2NTU4LCA2NTYzLCA2NTY4LCA2NTc1LCA2NTgyLCA2NTkwLCA2NTk4LCA2NjAzLCA2NjA4LCA2NjEzLCAKLSAgICA2NjE4LCA2NjIyLCA2NjI2LCA2NjMwLCA2NjM1LCA2NjQxLCA2NjQ1LCA2NjUyLCA2NjU3LCA2NjY3LCA2Njc3LCA2NjgzLCAKLSAgICA2Njg5LCA2Njk3LCA2NzA1LCA2NzEzLCA2NzIxLCA2NzI4LCA2NzM1LCA2NzQ0LCA2NzUzLCA2NzYxLCA2NzY5LCA2Nzc3LCAKLSAgICA2Nzg1LCA2NzkzLCA2ODAxLCA2ODA5LCA2ODE3LCA2ODI0LCA2ODMxLCA2ODM3LCA2ODQzLCA2ODUxLCA2ODU5LCA2ODY2LCAKLSAgICA2ODczLCA2ODgyLCA2ODkxLCA2ODk3LCA2OTAzLCA2OTExLCA2OTE5LCA2OTI3LCA2OTM1LCA2OTQxLCA2OTQ3LCA2OTU1LCAKLSAgICA2OTYzLCA2OTcxLCA2OTc5LCA2OTg2LCA2OTkzLCA3MDAxLCA3MDA5LCA3MDE3LCA3MDI1LCA3MDMwLCA3MDM1LCA3MDQyLCAKLSAgICA3MDQ5LCA3MDU5LCA3MDY5LCA3MDczLCA3MDgxLCA3MDg5LCA3MDk2LCA3MTAzLCA3MTExLCA3MTE5LCA3MTI2LCA3MTMzLCAKLSAgICA3MTQxLCA3MTQ5LCA3MTU2LCA3MTYzLCA3MTcxLCA3MTc5LCA3MTg0LCA3MTkxLCA3MTk4LCA3MjA1LCA3MjEyLCA3MjE4LCAKLSAgICA3MjI0LCA3MjMyLCA3MjQwLCA3MjQ1LCA3MjUwLCA3MjU4LCA3MjY2LCA3Mjc0LCA3MjgyLCA3MjkwLCA3Mjk4LCA3MzA1LCAKLSAgICA3MzEyLCA3MzIwLCA3MzI4LCA3MzM2LCA3MzQ0LCA3MzUxLCA3MzU4LCA3MzY0LCA3MzcwLCA3Mzc5LCA3Mzg4LCA3Mzk1LCAKLSAgICA3NDAyLCA3NDA5LCA3NDE2LCA3NDIzLCA3NDMwLCA3NDM3LCA3NDQ0LCA3NDUyLCA3NDYwLCA3NDY4LCA3NDc2LCA3NDg0LCAKLSAgICA3NDkyLCA3NTAyLCA3NTEyLCA3NTE5LCA3NTI2LCA3NTMzLCA3NTQwLCA3NTQ3LCA3NTU0LCA3NTYxLCA3NTY4LCA3NTc1LCAKLSAgICA3NTgyLCA3NTg5LCA3NTk2LCA3NjAzLCA3NjEwLCA3NjE3LCA3NjI0LCA3NjMxLCA3NjM4LCA3NjQ1LCA3NjUyLCA3NjU5LCAKLSAgICA3NjY2LCA3NjczLCA3NjgwLCA3Njg1LCA3NjkwLCA3Njk1LCA3NzAwLCA3NzA1LCA3NzEwLCA3NzE1LCA3NzIwLCA3NzI1LCAKLSAgICA3NzMwLCA3NzM2LCA3NzQyLCA3NzUxLCA3NzYwLCA3NzY5LCA3Nzc4LCA3Nzg2LCA3Nzk0LCA3ODAyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA3ODEwLCA3ODE1LCA3ODIwLCA3ODI1LCA3ODMwLCA3ODM1LCA3ODQwLCA3ODQ1LCA3ODUwLCAKLSAgICA3ODU0LCA3ODU5LCA3ODY0LCA3ODY5LCA3ODc0LCA3ODc5LCA3ODg0LCA3ODg5LCA3ODk0LCA3ODk5LCA3OTA0LCA3OTA5LCAKLSAgICA3OTE0LCA3OTE5LCA3OTI0LCA3OTI5LCA3OTM0LCA3OTM5LCA3OTQ0LCA3OTQ4LCA3OTUzLCA3OTU4LCA3OTYzLCA3OTY4LCAKLSAgICA3OTczLCA3OTc4LCA3OTgzLCA3OTg4LCA3OTkzLCAwLCAwLCA3OTk4LCA4MDA1LCA4MDA4LCA4MDEyLCA4MDE2LCA4MDE5LCAKLSAgICA4MDIzLCAwLCA4MDI3LCA4MDMyLCA4MDM3LCA4MDQyLCA4MDQ3LCA4MDUyLCA4MDU3LCA4MDYyLCA4MDY3LCA4MDcxLCAKLSAgICA4MDc2LCA4MDgxLCA4MDg2LCA4MDkxLCA4MDk2LCA4MTAxLCA4MTA2LCA4MTExLCA4MTE2LCA4MTIxLCA4MTI2LCA4MTMxLCAKLSAgICA4MTM2LCA4MTQxLCA4MTQ2LCA4MTUxLCA4MTU2LCA4MTYxLCA4MTY1LCA4MTcwLCA4MTc1LCA4MTgwLCA4MTg1LCA4MTkwLCAKLSAgICA4MTk1LCA4MjAwLCA4MjA1LCA4MjEwLCA4MjE1LCAwLCA4MjIyLCA4MjI3LCAwLCAwLCAwLCAwLCAwLCAwLCA4MjMwLCAKLSAgICA4MjM1LCA4MjQwLCA4MjQ1LCA4MjUyLCA4MjU5LCA4MjY0LCA4MjY5LCA4Mjc0LCA4Mjc5LCA4Mjg0LCA4Mjg5LCA4Mjk0LCAKLSAgICA4MzAxLCA4MzA2LCA4MzEzLCA4MzIwLCA4MzI1LCA4MzMyLCA4MzM3LCA4MzQyLCA4MzQ3LCA4MzU0LCA4MzU5LCA4MzY0LCAKLSAgICA4MzcxLCA4MzgwLCA4Mzg1LCA4MzkwLCA4Mzk1LCA4NDAwLCA4NDA2LCA4NDExLCA4NDE4LCA4NDI1LCA4NDMyLCA4NDM3LCAKLSAgICA4NDQyLCA4NDQ3LCA4NDUyLCA4NDU3LCA4NDYyLCA4NDcyLCA4NDc3LCA4NDg1LCA4NDkwLCA4NDk1LCA4NTAwLCA4NTA1LCAKLSAgICA4NTEyLCA4NTE5LCA4NTI2LCA4NTMyLCA4NTM4LCA4NTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTUyLCA4NTU2LCAKLSAgICA4NTYwLCA4NTY0LCA4NTY4LCA4NTcyLCA4NTc2LCA4NTgwLCA4NTg0LCA4NTg4LCA4NTkyLCA4NTk3LCA4NjAxLCA4NjA1LCAKLSAgICA4NjEwLCA4NjE0LCA4NjE5LCA4NjIzLCA4NjI3LCA4NjMxLCA4NjM2LCA4NjQwLCA4NjQ1LCA4NjQ5LCA4NjUzLCA4NjU3LCAKLSAgICA4NjYxLCAwLCAwLCAwLCAwLCAwLCA4NjY1LCA4NjcyLCA4NjgwLCA4Njg3LCA4NjkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4Njk3LCA4NzAwLCA4NzA0LCA4NzA5LCAwLCAwLCA4NzEzLCA4NzE5LCA4NzI1LCA4NzI4LCA4NzM1LCAKLSAgICA4NzQ0LCA4NzQ3LCA4NzUwLCA4NzU1LCA4NzYxLCA4NzY1LCA4NzczLCA4Nzc5LCA4Nzg1LCA4NzkzLCA4Nzk3LCA4ODAyLCAKLSAgICA4ODEzLCA4ODE4LCA4ODIyLCA4ODI2LCA4ODMwLCAwLCAwLCA4ODMzLCA4ODQwLCA4ODQ0LCA4ODUwLCA4ODU0LCA4ODYxLCAKLSAgICA4ODY3LCA4ODc0LCA4ODgwLCA4ODg2LCA4ODkwLCA4ODk0LCA4OTAwLCA4OTA0LCA4OTA4LCA4OTEyLCA4OTE2LCA4OTIwLCAKLSAgICA4OTI0LCA4OTI4LCA4OTMyLCA4OTM2LCA4OTQwLCA4OTQ0LCA4OTQ4LCA4OTUyLCA4OTU2LCA4OTYwLCA4OTY0LCA4OTY4LCAKLSAgICA4OTc2LCA4OTg0LCA4OTk0LCA5MDAzLCA5MDEyLCA5MDE1LCA5MDE5LCA5MDIzLCA5MDI3LCA5MDMxLCA5MDM1LCA5MDM5LCAKLSAgICA5MDQzLCA5MDQ3LCA5MDUyLCA5MDU2LCA5MDU5LCA5MDYyLCA5MDY1LCA5MDY4LCA5MDcxLCA5MDc0LCA5MDc3LCA5MDgwLCAKLSAgICA5MDg0LCA5MDg3LCA5MDkwLCA5MDk1LCA5MTAwLCA5MTA2LCA5MTA5LCA5MTE2LCA5MTI1LCA5MTMwLCA5MTM1LCA5MTQyLCAKLSAgICA5MTQ3LCA5MTUyLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTcyLCA5MTc2LCA5MTgwLCA5MTg0LCA5MTg4LCA5MTkyLCAKLSAgICA5MTk3LCA5MjAyLCA5MjA5LCA5MjE1LCA5MjIxLCA5MjI3LCA5MjMyLCA5MjQwLCA5MjQ4LCA5MjUzLCA5MjU5LCA5MjY1LCAKLSAgICA5MjcxLCA5Mjc3LCA5MjgxLCA5Mjg1LCA5Mjg5LCA5Mjk2LCA5MzA2LCA5MzEwLCA5MzE0LCA5MzE4LCA5MzI0LCA5MzMyLCAKLSAgICA5MzM2LCA5MzQwLCA5MzQ3LCA5MzUxLCA5MzU1LCA5MzU5LCA5MzY2LCA5MzczLCA5Mzg1LCA5Mzg5LCA5MzkzLCA5Mzk3LCAKLSAgICA5NDA3LCA5NDE2LCA5NDIwLCA5NDI4LCA5NDM1LCA5NDQyLCA5NDUxLCA5NDYyLCA5NDcwLCA5NDc0LCA5NDgzLCA5NDk0LCAKLSAgICA5NTAyLCA5NTE1LCA5NTIzLCA5NTMxLCA5NTM5LCA5NTQ3LCA5NTUzLCA5NTYyLCA5NTY5LCA5NTczLCA5NTgxLCA5NTg1LCAKLSAgICA5NTkyLCA5NjAwLCA5NjA0LCA5NjEwLCA5NjE3LCA5NjI0LCA5NjI4LCA5NjM2LCA5NjQwLCA5NjQ3LCA5NjUxLCA5NjU5LCAKLSAgICA5NjYzLCA5NjcxLCA5Njc5LCA5Njg2LCA5Njk0LCA5NzAyLCA5NzA5LCA5NzE1LCA5NzE5LCA5NzI2LCA5NzM0LCA5NzQwLCAKLSAgICA5NzQ3LCA5NzU0LCA5NzYwLCA5NzY5LCA5Nzc3LCA5Nzg0LCA5NzkwLCA5Nzk0LCA5Nzk3LCA5ODAxLCA5ODA3LCA5ODE1LCAKLSAgICA5ODE5LCA5ODI1LCA5ODMxLCA5ODM4LCA5ODQ1LCA5ODQ4LCA5ODU1LCA5ODYwLCA5ODY4LCA5ODczLCA5ODc3LCA5ODkwLCAKLSAgICA5OTAzLCA5OTA5LCA5OTE2LCA5OTIxLCA5OTI3LCA5OTMyLCA5OTM4LCA5OTQ4LCA5OTU1LCA5OTY0LCA5OTc0LCA5OTgwLCAKLSAgICA5OTg1LCA5OTkwLCA5OTk0LCA5OTk4LCAxMDAwMywgMTAwMDgsIDEwMDE0LCAxMDAyMiwgMTAwMzAsIDEwMDQxLCAxMDA0NiwgCi0gICAgMTAwNTUsIDEwMDY0LCAxMDA3MSwgMTAwNzcsIDEwMDgzLCAxMDA4OSwgMTAwOTUsIDEwMTAxLCAxMDEwNywgMTAxMTMsIAotICAgIDEwMTE5LCAxMDEyNSwgMTAxMzIsIDEwMTM5LCAxMDE0NiwgMTAxNTIsIDEwMTYwLCAxMDE2OSwgMTAxNzUsIDEwMTgyLCAKLSAgICAxMDE4OSwgMTAxOTQsIDEwMTk5LCAxMDIwMywgMTAyMTAsIDEwMjE3LCAxMDIyNiwgMTAyMzUsIDEwMjM4LCAxMDI0MywgCi0gICAgMTAyNDgsIDAsIDEwMjUzLCAxMDI1NywgMTAyNjEsIDEwMjY3LCAxMDI3MSwgMTAyNzUsIDEwMjgxLCAxMDI4NSwgMTAyOTMsIAotICAgIDEwMjk3LCAxMDMwMSwgMTAzMDUsIDEwMzA5LCAxMDMxMywgMTAzMTksIDEwMzIzLCAxMDMyOSwgMTAzMzMsIDEwMzM3LCAKLSAgICAxMDM0MSwgMTAzNDUsIDEwMzQ5LCAxMDM1NCwgMTAzNTcsIDEwMzYxLCAxMDM2NywgMTAzNzEsIDEwMzc1LCAxMDM3OSwgCi0gICAgMTAzODMsIDEwMzg3LCAxMDM5MywgMTAzOTksIDEwNDA1LCAxMDQwOSwgMTA0MTMsIDEwNDE4LCAxMDQyMiwgMTA0MjYsIAotICAgIDEwNDMxLCAxMDQzNSwgMTA0MzksIDEwNDQ2LCAxMDQ1MywgMTA0NTcsIDEwNDYxLCAxMDQ2NiwgMTA0NzAsIDEwNDc0LCAKLSAgICAxMDQ3NywgMTA0ODIsIDEwNDg1LCAxMDQ4OCwgMTA0OTMsIDEwNDk4LCAxMDUwMiwgMTA1MDYsIDEwNTEyLCAxMDUxOCwgCi0gICAgMTA1MjEsIDAsIDAsIDEwNTI0LCAxMDUzMCwgMTA1MzYsIDEwNTQyLCAxMDU1MiwgMTA1NjQsIDEwNTc2LCAxMDU5MywgCi0gICAgMTA2MDUsIDEwNjE2LCAxMDYyNCwgMTA2MzEsIDEwNjQyLCAxMDY1NywgMTA2NjgsIDEwNjc0LCAxMDY4MywgMTA2OTEsIAotICAgIDEwNzAzLCAxMDcxMywgMTA3MjEsIDEwNzMzLCAxMDc0MCwgMTA3NDgsIDEwNzYwLCAxMDc2NiwgMTA3NzIsIDEwNzgwLCAKLSAgICAxMDc4OCwgMTA3OTYsIDEwODAyLCAxMDgxMiwgMTA4MTksIDEwODI5LCAxMDgzOSwgMTA4NTIsIDEwODY2LCAxMDg4MCwgCi0gICAgMTA4OTAsIDEwOTAxLCAxMDkxMiwgMTA5MjUsIDEwOTM4LCAxMDk1MiwgMTA5NjQsIDEwOTc2LCAxMDk4OSwgMTEwMDIsIAotICAgIDExMDE0LCAxMTAyNywgMTEwMzYsIDExMDQ0LCAxMTA0OSwgMTEwNTQsIDExMDU5LCAxMTA2NCwgMTEwNjksIDExMDc0LCAKLSAgICAxMTA3OSwgMTEwODQsIDExMDg5LCAxMTA5NCwgMTEwOTksIDExMTA0LCAxMTEwOSwgMTExMTQsIDExMTE5LCAxMTEyNCwgCi0gICAgMTExMjksIDExMTM0LCAxMTEzOSwgMTExNDQsIDExMTQ5LCAxMTE1NCwgMTExNTksIDExMTY0LCAxMTE2OSwgMTExNzQsIAotICAgIDExMTc5LCAxMTE4NCwgMTExODksIDExMTk0LCAxMTE5OSwgMTEyMDQsIDExMjA4LCAxMTIxMywgMTEyMTgsIDExMjIzLCAKLSAgICAxMTIyOCwgMTEyMzMsIDExMjM3LCAxMTI0MSwgMTEyNDUsIDExMjQ5LCAxMTI1MywgMTEyNTcsIDExMjYxLCAxMTI2NSwgCi0gICAgMTEyNjksIDExMjczLCAxMTI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEyODIsIAotICAgIDExMjg3LCAxMTI5MSwgMTEyOTUsIDExMjk5LCAxMTMwMywgMTEzMDcsIDExMzExLCAxMTMxNSwgMTEzMTksIDExMzIzLCAKLSAgICAxMTMyNywgMTEzMzIsIDExMzM2LCAxMTM0MCwgMTEzNDQsIDExMzQ5LCAxMTM1MywgMTEzNTgsIDExMzYyLCAxMTM2NywgCi0gICAgMTEzNzEsIDExMzc2LCAxMTM4MSwgMTEzODYsIDExMzkxLCAxMTM5NSwgMTE0MDAsIDExNDA1LCAxMTQxMCwgMTE0MTUsIAotICAgIDExNDE5LCAxMTQyNCwgMTE0MzEsIDExNDM1LCAxMTQ0MCwgMTE0NDQsIDExNDQ4LCAxMTQ1MywgMTE0NTcsIDExNDY0LCAKLSAgICAxMTQ3MSwgMTE0NzgsIDExNDg0LCAxMTQ5MiwgMTE1MDAsIDExNTA5LCAxMTUxNywgMTE1MjQsIDExNTMxLCAxMTUzOSwgCi0gICAgMTE1NDUsIDExNTUxLCAxMTU1NywgMTE1NjMsIDExNTcwLCAxMTU3NSwgMTE1NzksIDExNTg0LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMTU4OCwgMTE1OTMsIDExNTk4LCAxMTYwMywgMTE2MDgsIDExNjEzLCAxMTYxOCwgMTE2MjMsIDExNjI4LCAxMTYzMywgCi0gICAgMTE2MzgsIDExNjQzLCAxMTY0OCwgMTE2NTMsIDExNjU4LCAxMTY2MywgMTE2NjgsIDExNjczLCAxMTY3OCwgMTE2ODMsIAotICAgIDExNjg4LCAxMTY5MywgMTE2OTgsIDExNzAzLCAxMTcwOCwgMTE3MTMsIDExNzE4LCAxMTcyNiwgMTE3MzMsIDExNzM5LCAKLSAgICAxMTc0NCwgMTE3NTIsIDExNzU5LCAxMTc2NSwgMTE3NzIsIDExNzc4LCAxMTc4MywgMTE3OTAsIDExNzk3LCAxMTgwMywgCi0gICAgMTE4MDgsIDExODEzLCAxMTgxOSwgMTE4MjQsIDExODI5LCAxMTgzNSwgMCwgMCwgMTE4NDAsIDExODQ2LCAxMTg1MiwgCi0gICAgMTE4NTgsIDExODY0LCAxMTg3MCwgMTE4NzYsIDExODgxLCAxMTg4OSwgMTE4OTUsIDExOTAxLCAxMTkwNywgMTE5MTMsIAotICAgIDExOTE5LCAxMTkyNywgMCwgMTE5MzMsIDExOTM4LCAxMTk0MywgMTE5NDgsIDExOTUzLCAxMTk1OCwgMTE5NjMsIDExOTY4LCAKLSAgICAxMTk3MywgMTE5NzgsIDExOTgzLCAxMTk4OCwgMTE5OTMsIDExOTk4LCAxMjAwMywgMTIwMDgsIDEyMDEzLCAxMjAxOCwgCi0gICAgMTIwMjMsIDEyMDI4LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA0OCwgMTIwNTMsIDEyMDU4LCAxMjA2MywgMTIwNjgsIDAsIAotICAgIDAsIDEyMDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjA3NywgMTIwODMsIAotICAgIDEyMDg3LCAxMjA5MSwgMTIwOTUsIDEyMTAwLCAxMjEwMywgMTIxMDcsIDEyMTEwLCAxMjExNCwgMTIxMTcsIDEyMTIxLCAKLSAgICAxMjEyNSwgMTIxMjksIDEyMTM0LCAxMjEzOSwgMTIxNDIsIDEyMTQ2LCAxMjE1MSwgMTIxNTYsIDEyMTU5LCAxMjE2MywgCi0gICAgMTIxNjYsIDEyMTcwLCAxMjE3NCwgMTIxNzgsIDEyMTgyLCAxMjE4NiwgMTIxOTAsIDEyMTk0LCAxMjE5OCwgMTIyMDIsIAotICAgIDEyMjA2LCAxMjIxMCwgMTIyMTQsIDEyMjE4LCAxMjIyMiwgMTIyMjYsIDEyMjMwLCAxMjIzNCwgMTIyMzgsIDEyMjQxLCAKLSAgICAxMjI0NSwgMTIyNDgsIDEyMjUyLCAxMjI1NiwgMTIyNjAsIDEyMjYzLCAxMjI2NiwgMTIyNjksIDEyMjczLCAxMjI3NywgCi0gICAgMTIyODEsIDEyMjg1LCAxMjI4OSwgMTIyOTMsIDEyMjk3LCAxMjMwMSwgMTIzMDQsIDEyMzA5LCAxMjMxNCwgMTIzMTgsIAotICAgIDEyMzIyLCAxMjMyNywgMTIzMzEsIDEyMzM2LCAxMjM0MCwgMTIzNDUsIDEyMzUwLCAxMjM1NiwgMTIzNjIsIDEyMzY4LCAKLSAgICAxMjM3MiwgMTIzNzcsIDEyMzgzLCAxMjM4OSwgMTIzOTMsIDEyMzk4LCAxMjQwMiwgMTI0MDgsIDEyNDEzLCAxMjQxNiwgCi0gICAgMTI0MjIsIDEyNDI4LCAxMjQzMywgMTI0MzgsIDEyNDQ1LCAxMjQ1MCwgMTI0NTUsIDEyNDU5LCAxMjQ2MywgMTI0NjcsIAotICAgIDEyNDcxLCAxMjQ3NSwgMTI0NzksIDEyNDgzLCAxMjQ4NywgMTI0OTIsIDEyNDk3LCAxMjUwMiwgMTI1MDgsIDEyNTExLCAKLSAgICAxMjUxNSwgMTI1MTksIDEyNTIyLCAxMjUyNSwgMTI1MjgsIDEyNTMxLCAxMjUzNCwgMTI1MzcsIDEyNTQwLCAxMjU0MywgCi0gICAgMTI1NDYsIDEyNTUwLCAxMjU1NywgMTI1NjIsIDEyNTY2LCAxMjU3MCwgMTI1NzQsIDEyNTc4LCAwLCAxMjU4MiwgMTI1ODYsIAotICAgIDEyNTkwLCAxMjU5NCwgMTI1OTgsIDEyNjA0LCAxMjYwOCwgMCwgMTI2MTIsIDEyNjE2LCAxMjYyMCwgMCwgMTI2MjQsIAotICAgIDEyNjI3LCAxMjYzMSwgMTI2MzQsIDEyNjM4LCAxMjY0MSwgMTI2NDUsIDEyNjQ5LCAwLCAwLCAxMjY1MywgMTI2NTYsIDAsIAotICAgIDAsIDEyNjYwLCAxMjY2MywgMTI2NjcsIDEyNjcwLCAxMjY3NCwgMTI2NzgsIDEyNjgyLCAxMjY4NiwgMTI2OTAsIDEyNjk0LCAKLSAgICAxMjY5OCwgMTI3MDIsIDEyNzA2LCAxMjcxMCwgMTI3MTQsIDEyNzE4LCAxMjcyMiwgMTI3MjYsIDEyNzMwLCAxMjczNCwgCi0gICAgMTI3MzgsIDEyNzQyLCAwLCAxMjc0NSwgMTI3NDgsIDEyNzUyLCAxMjc1NiwgMTI3NjAsIDEyNzYzLCAxMjc2NiwgMCwgCi0gICAgMTI3NjksIDAsIDAsIDAsIDEyNzczLCAxMjc3NywgMTI3ODEsIDEyNzg1LCAwLCAwLCAxMjc4OCwgMTI3OTIsIDEyNzk2LCAKLSAgICAxMjgwMSwgMTI4MDUsIDEyODEwLCAxMjgxNCwgMTI4MTksIDEyODI0LCAwLCAwLCAxMjgzMCwgMTI4MzQsIDAsIDAsIAotICAgIDEyODM5LCAxMjg0MywgMTI4NDgsIDEyODUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjg1OCwgMCwgMCwgMCwgMCwgCi0gICAgMTI4NjQsIDEyODY4LCAwLCAxMjg3MiwgMTI4NzYsIDEyODgxLCAxMjg4NiwgMTI4OTEsIDAsIDAsIDEyODk3LCAxMjkwMSwgCi0gICAgMTI5MDQsIDEyOTA3LCAxMjkxMCwgMTI5MTMsIDEyOTE2LCAxMjkxOSwgMTI5MjIsIDEyOTI1LCAxMjkyOCwgMTI5MzcsIAotICAgIDEyOTQ2LCAxMjk1MCwgMTI5NTQsIDEyOTYwLCAxMjk2NiwgMTI5NzIsIDEyOTc4LCAxMjk5MiwgMTI5OTksIDEzMDAyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzAwNiwgMTMwMTIsIDEzMDE2LCAwLCAxMzAyMCwgMTMwMjMsIDEzMDI3LCAxMzAzMCwgMTMwMzQsIAotICAgIDEzMDM3LCAwLCAwLCAwLCAwLCAxMzA0MSwgMTMwNDUsIDAsIDAsIDEzMDQ5LCAxMzA1MywgMTMwNTcsIDEzMDYwLCAxMzA2NCwgCi0gICAgMTMwNjgsIDEzMDcyLCAxMzA3NiwgMTMwODAsIDEzMDg0LCAxMzA4OCwgMTMwOTIsIDEzMDk2LCAxMzEwMCwgMTMxMDQsIAotICAgIDEzMTA4LCAxMzExMiwgMTMxMTYsIDEzMTIwLCAxMzEyNCwgMTMxMjgsIDEzMTMyLCAwLCAxMzEzNSwgMTMxMzgsIDEzMTQyLCAKLSAgICAxMzE0NiwgMTMxNTAsIDEzMTUzLCAxMzE1NiwgMCwgMTMxNTksIDEzMTYzLCAwLCAxMzE2NywgMTMxNzEsIDAsIDEzMTc1LCAKLSAgICAxMzE3OSwgMCwgMCwgMTMxODIsIDAsIDEzMTg2LCAxMzE5MSwgMTMxOTUsIDEzMjAwLCAxMzIwNCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyMDksIDEzMjE0LCAwLCAwLCAxMzIxOSwgMTMyMjQsIDEzMjI5LCAwLCAwLCAwLCAxMzIzMywgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTMyMzcsIDEzMjQxLCAxMzI0NSwgMTMyNDksIDAsIDEzMjUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzI1NywgCi0gICAgMTMyNjEsIDEzMjY0LCAxMzI2NywgMTMyNzAsIDEzMjczLCAxMzI3NiwgMTMyNzksIDEzMjgyLCAxMzI4NSwgMTMyODgsIAotICAgIDEzMjkxLCAxMzI5NCwgMTMyOTcsIDEzMzAwLCAxMzMwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMzMDksIDEzMzEzLCAxMzMxNywgMCwgMTMzMjEsIDEzMzI0LCAxMzMyOCwgMTMzMzEsIDEzMzM1LCAxMzMzOCwgMTMzNDIsIAotICAgIDEzMzQ2LCAxMzM1MCwgMCwgMTMzNTUsIDEzMzU4LCAxMzM2MiwgMCwgMTMzNjcsIDEzMzcwLCAxMzM3NCwgMTMzNzcsIAotICAgIDEzMzgxLCAxMzM4NSwgMTMzODksIDEzMzkzLCAxMzM5NywgMTM0MDEsIDEzNDA1LCAxMzQwOSwgMTM0MTMsIDEzNDE3LCAKLSAgICAxMzQyMSwgMTM0MjUsIDEzNDI5LCAxMzQzMywgMTM0MzcsIDEzNDQxLCAxMzQ0NSwgMTM0NDksIDAsIDEzNDUyLCAxMzQ1NSwgCi0gICAgMTM0NTksIDEzNDYzLCAxMzQ2NywgMTM0NzAsIDEzNDczLCAwLCAxMzQ3NiwgMTM0ODAsIDAsIDEzNDg0LCAxMzQ4OCwgCi0gICAgMTM0OTIsIDEzNDk2LCAxMzUwMCwgMCwgMCwgMTM1MDMsIDEzNTA3LCAxMzUxMSwgMTM1MTYsIDEzNTIwLCAxMzUyNSwgCi0gICAgMTM1MjksIDEzNTM0LCAxMzUzOSwgMTM1NDUsIDAsIDEzNTUxLCAxMzU1NSwgMTM1NjAsIDAsIDEzNTY2LCAxMzU3MCwgCi0gICAgMTM1NzUsIDAsIDAsIDEzNTc5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzU4MiwgCi0gICAgMTM1ODcsIDEzNTkyLCAxMzU5NywgMCwgMCwgMTM2MDMsIDEzNjA3LCAxMzYxMCwgMTM2MTMsIDEzNjE2LCAxMzYxOSwgCi0gICAgMTM2MjIsIDEzNjI1LCAxMzYyOCwgMTM2MzEsIDAsIDEzNjM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxMzYzOCwgMTM2NDIsIDEzNjQ2LCAwLCAxMzY1MCwgMTM2NTMsIDEzNjU3LCAxMzY2MCwgMTM2NjQsIAotICAgIDEzNjY3LCAxMzY3MSwgMTM2NzUsIDAsIDAsIDEzNjc5LCAxMzY4MiwgMCwgMCwgMTM2ODYsIDEzNjg5LCAxMzY5MywgCi0gICAgMTM2OTYsIDEzNzAwLCAxMzcwNCwgMTM3MDgsIDEzNzEyLCAxMzcxNiwgMTM3MjAsIDEzNzI0LCAxMzcyOCwgMTM3MzIsIAotICAgIDEzNzM2LCAxMzc0MCwgMTM3NDQsIDEzNzQ4LCAxMzc1MiwgMTM3NTYsIDEzNzYwLCAxMzc2NCwgMTM3NjgsIDAsIDEzNzcxLCAKLSAgICAxMzc3NCwgMTM3NzgsIDEzNzgyLCAxMzc4NiwgMTM3ODksIDEzNzkyLCAwLCAxMzc5NSwgMTM3OTksIDAsIDEzODAzLCAKLSAgICAxMzgwNywgMTM4MTEsIDEzODE1LCAxMzgxOSwgMCwgMCwgMTM4MjIsIDEzODI2LCAxMzgzMCwgMTM4MzUsIDEzODM5LCAKLSAgICAxMzg0NCwgMTM4NDgsIDEzODUzLCAxMzg1OCwgMCwgMCwgMTM4NjQsIDEzODY4LCAwLCAwLCAxMzg3MywgMTM4NzcsIAotICAgIDEzODgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzg4NiwgMTM4OTIsIDAsIDAsIDAsIDAsIDEzODk4LCAxMzkwMiwgMCwgCi0gICAgMTM5MDYsIDEzOTEwLCAxMzkxNSwgMTM5MjAsIDEzOTI1LCAwLCAwLCAxMzkzMSwgMTM5MzUsIDEzOTM4LCAxMzk0MSwgCi0gICAgMTM5NDQsIDEzOTQ3LCAxMzk1MCwgMTM5NTMsIDEzOTU2LCAxMzk1OSwgMTM5NjIsIDEzOTY1LCAxMzk2OSwgMTM5NzUsIAotICAgIDEzOTgxLCAxMzk4NywgMTM5OTMsIDEzOTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDAwNSwgMTQwMDksIAotICAgIDAsIDE0MDEzLCAxNDAxNiwgMTQwMjAsIDE0MDIzLCAxNDAyNywgMTQwMzAsIDAsIDAsIDAsIDE0MDM0LCAxNDAzNywgCi0gICAgMTQwNDEsIDAsIDE0MDQ1LCAxNDA0OCwgMTQwNTIsIDE0MDU2LCAwLCAwLCAwLCAxNDA1OSwgMTQwNjMsIDAsIDE0MDY3LCAwLCAKLSAgICAxNDA3MSwgMTQwNzUsIDAsIDAsIDAsIDE0MDc5LCAxNDA4MywgMCwgMCwgMCwgMTQwODcsIDE0MDkwLCAxNDA5NCwgMCwgMCwgCi0gICAgMCwgMTQwOTcsIDE0MTAwLCAxNDEwMywgMTQxMDYsIDE0MTEwLCAxNDExNCwgMTQxMTgsIDE0MTIyLCAxNDEyNiwgMTQxMzAsIAotICAgIDE0MTM0LCAxNDEzOCwgMCwgMCwgMCwgMCwgMTQxNDEsIDE0MTQ2LCAxNDE1MCwgMTQxNTUsIDE0MTU5LCAwLCAwLCAwLCAKLSAgICAxNDE2NCwgMTQxNjgsIDE0MTczLCAwLCAxNDE3OCwgMTQxODIsIDE0MTg3LCAxNDE5MiwgMCwgMCwgMTQxOTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE0MTk5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDIwNSwgMTQyMDksIAotICAgIDE0MjEyLCAxNDIxNSwgMTQyMTgsIDE0MjIxLCAxNDIyNCwgMTQyMjcsIDE0MjMwLCAxNDIzMywgMTQyMzYsIDE0MjQwLCAKLSAgICAxNDI0NSwgMTQyNTAsIDE0MjU0LCAxNDI1OCwgMTQyNjIsIDE0MjY2LCAxNDI3MCwgMTQyNzUsIDE0Mjc5LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNDI4MiwgMTQyODYsIDE0MjkwLCAwLCAxNDI5NCwgMTQyOTcsIDE0MzAxLCAxNDMwNCwgMTQzMDgsIAotICAgIDE0MzExLCAxNDMxNSwgMTQzMTksIDAsIDE0MzIzLCAxNDMyNiwgMTQzMzAsIDAsIDE0MzM0LCAxNDMzNywgMTQzNDEsIAotICAgIDE0MzQ1LCAxNDM0OCwgMTQzNTIsIDE0MzU2LCAxNDM2MCwgMTQzNjQsIDE0MzY4LCAxNDM3MiwgMTQzNzYsIDE0MzgwLCAKLSAgICAxNDM4NCwgMTQzODgsIDE0MzkyLCAxNDM5NiwgMTQ0MDAsIDE0NDA0LCAxNDQwOCwgMTQ0MTIsIDE0NDE2LCAxNDQyMCwgMCwgCi0gICAgMTQ0MjMsIDE0NDI2LCAxNDQzMCwgMTQ0MzQsIDE0NDM4LCAxNDQ0MSwgMTQ0NDQsIDE0NDQ3LCAxNDQ1MSwgMTQ0NTUsIDAsIAotICAgIDE0NDU5LCAxNDQ2MywgMTQ0NjcsIDE0NDcxLCAxNDQ3NSwgMCwgMCwgMCwgMTQ0NzgsIDE0NDgyLCAxNDQ4NywgMTQ0OTEsIAotICAgIDE0NDk2LCAxNDUwMCwgMTQ1MDUsIDE0NTEwLCAwLCAxNDUxNiwgMTQ1MjAsIDE0NTI1LCAwLCAxNDUzMCwgMTQ1MzQsIAotICAgIDE0NTM5LCAxNDU0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1NDgsIDE0NTUyLCAwLCAxNDU1OCwgMTQ1NjIsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0NTY2LCAxNDU3MSwgMTQ1NzYsIDE0NTgxLCAwLCAwLCAxNDU4NywgMTQ1OTEsIDE0NTk0LCAxNDU5NywgCi0gICAgMTQ2MDAsIDE0NjAzLCAxNDYwNiwgMTQ2MDksIDE0NjEyLCAxNDYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2MTgsIAotICAgIDE0NjMxLCAxNDY0MywgMTQ2NTUsIDE0NjY3LCAxNDY3OSwgMTQ2OTEsIDE0NzAzLCAwLCAwLCAxNDcwNywgMTQ3MTEsIDAsIAotICAgIDE0NzE1LCAxNDcxOCwgMTQ3MjIsIDE0NzI1LCAxNDcyOSwgMTQ3MzIsIDE0NzM2LCAxNDc0MCwgMCwgMTQ3NDQsIDE0NzQ3LCAKLSAgICAxNDc1MSwgMCwgMTQ3NTUsIDE0NzU4LCAxNDc2MiwgMTQ3NjYsIDE0NzY5LCAxNDc3MywgMTQ3NzcsIDE0NzgxLCAxNDc4NSwgCi0gICAgMTQ3ODksIDE0NzkzLCAxNDc5NywgMTQ4MDEsIDE0ODA1LCAxNDgwOSwgMTQ4MTMsIDE0ODE3LCAxNDgyMSwgMTQ4MjUsIAotICAgIDE0ODI5LCAxNDgzMywgMTQ4MzcsIDE0ODQxLCAwLCAxNDg0NCwgMTQ4NDcsIDE0ODUxLCAxNDg1NSwgMTQ4NTksIDE0ODYyLCAKLSAgICAxNDg2NSwgMTQ4NjgsIDE0ODcyLCAxNDg3NiwgMCwgMTQ4ODAsIDE0ODg0LCAxNDg4OCwgMTQ4OTIsIDE0ODk2LCAwLCAwLCAKLSAgICAxNDg5OSwgMTQ5MDMsIDE0OTA3LCAxNDkxMiwgMTQ5MTYsIDE0OTIxLCAxNDkyNSwgMTQ5MzAsIDE0OTM1LCAwLCAxNDk0MSwgCi0gICAgMTQ5NDUsIDE0OTUwLCAwLCAxNDk1NSwgMTQ5NTksIDE0OTY0LCAxNDk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5NzMsIAotICAgIDE0OTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDk4MywgMCwgMTQ5ODcsIDE0OTkyLCAxNDk5NywgMTUwMDIsIDAsIDAsIAotICAgIDE1MDA4LCAxNTAxMiwgMTUwMTUsIDE1MDE4LCAxNTAyMSwgMTUwMjQsIDE1MDI3LCAxNTAzMCwgMTUwMzMsIDE1MDM2LCAwLCAKLSAgICAxNTAzOSwgMTUwNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDQ3LCAxNTA1MSwgCi0gICAgMCwgMTUwNTUsIDE1MDU4LCAxNTA2MiwgMTUwNjUsIDE1MDY5LCAxNTA3MiwgMTUwNzYsIDE1MDgwLCAwLCAxNTA4NCwgCi0gICAgMTUwODcsIDE1MDkxLCAwLCAxNTA5NSwgMTUwOTgsIDE1MTAyLCAxNTEwNiwgMTUxMDksIDE1MTEzLCAxNTExNywgMTUxMjEsIAotICAgIDE1MTI1LCAxNTEyOSwgMTUxMzMsIDE1MTM3LCAxNTE0MSwgMTUxNDUsIDE1MTQ5LCAxNTE1MywgMTUxNTcsIDE1MTYxLCAKLSAgICAxNTE2NSwgMTUxNjksIDE1MTczLCAxNTE3NywgMTUxODEsIDE1MTg0LCAxNTE4OCwgMTUxOTEsIDE1MTk1LCAxNTE5OSwgCi0gICAgMTUyMDMsIDE1MjA2LCAxNTIwOSwgMTUyMTIsIDE1MjE2LCAxNTIyMCwgMTUyMjQsIDE1MjI4LCAxNTIzMiwgMTUyMzYsIAotICAgIDE1MjQwLCAxNTI0NCwgMTUyNDcsIDAsIDAsIDE1MjUxLCAxNTI1NSwgMTUyNjAsIDE1MjY0LCAxNTI2OSwgMTUyNzMsIAotICAgIDE1Mjc4LCAxNTI4MywgMCwgMTUyODksIDE1MjkzLCAxNTI5OCwgMCwgMTUzMDMsIDE1MzA3LCAxNTMxMiwgMTUzMTcsIAotICAgIDE1MzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzMzIsIAotICAgIDE1MzM3LCAxNTM0MiwgMTUzNDcsIDAsIDAsIDE1MzUzLCAxNTM1NywgMTUzNjAsIDE1MzYzLCAxNTM2NiwgMTUzNjksIAotICAgIDE1MzcyLCAxNTM3NSwgMTUzNzgsIDE1MzgxLCAxNTM4NCwgMTUzODgsIDE1MzkzLCAxNTM5OCwgMTU0MDQsIDE1NDEwLCAwLCAKLSAgICAwLCAwLCAxNTQxNiwgMTU0MjAsIDE1NDI2LCAxNTQzMSwgMTU0MzcsIDE1NDQyLCAxNTQ0OCwgMCwgMCwgMTU0NTQsIAotICAgIDE1NDU4LCAwLCAxNTQ2MiwgMTU0NjYsIDE1NDcwLCAxNTQ3NCwgMTU0NzgsIDE1NDgyLCAxNTQ4NiwgMTU0OTAsIDE1NDk0LCAKLSAgICAxNTQ5OCwgMTU1MDIsIDE1NTA2LCAxNTUxMCwgMTU1MTQsIDE1NTE4LCAxNTUyMiwgMTU1MjYsIDE1NTMwLCAwLCAwLCAwLCAKLSAgICAxNTUzNCwgMTU1NDAsIDE1NTQ2LCAxNTU1MiwgMTU1NTgsIDE1NTY0LCAxNTU3MCwgMTU1NzYsIDE1NTgyLCAxNTU4OCwgCi0gICAgMTU1OTQsIDE1NjAwLCAxNTYwOCwgMTU2MTQsIDE1NjIwLCAxNTYyNiwgMTU2MzIsIDE1NjM4LCAxNTY0NCwgMTU2NTAsIAotICAgIDE1NjU2LCAxNTY2MiwgMTU2NjgsIDE1Njc0LCAwLCAxNTY4MCwgMTU2ODYsIDE1NjkyLCAxNTY5OCwgMTU3MDQsIDE1NzEwLCAKLSAgICAxNTcxNCwgMTU3MjAsIDE1NzI0LCAwLCAxNTcyOCwgMCwgMCwgMTU3MzQsIDE1NzM4LCAxNTc0NCwgMTU3NTAsIDE1NzU2LCAKLSAgICAxNTc2MCwgMTU3NjYsIDAsIDAsIDAsIDE1NzcwLCAwLCAwLCAwLCAwLCAxNTc3NCwgMTU3NzksIDE1Nzg2LCAxNTc5MywgCi0gICAgMTU4MDAsIDE1ODA3LCAwLCAxNTgxNCwgMCwgMTU4MjEsIDE1ODI2LCAxNTgzMSwgMTU4MzgsIDE1ODQ1LCAxNTg1NCwgCi0gICAgMTU4NjUsIDE1ODc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNTg3OSwgMTU4ODYsIDE1ODkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTg5OCwgMTU5MDQsIAotICAgIDE1OTEwLCAxNTkxNiwgMTU5MjIsIDE1OTI4LCAxNTkzNCwgMTU5NDAsIDE1OTQ2LCAxNTk1MiwgMTU5NTgsIDE1OTY0LCAKLSAgICAxNTk3MCwgMTU5NzYsIDE1OTgyLCAxNTk4OCwgMTU5OTQsIDE2MDAwLCAxNjAwNiwgMTYwMTIsIDE2MDE4LCAxNjAyNCwgCi0gICAgMTYwMzAsIDE2MDM2LCAxNjA0MiwgMTYwNDgsIDE2MDU0LCAxNjA2MCwgMTYwNjYsIDE2MDcyLCAxNjA3OCwgMTYwODQsIAotICAgIDE2MDkwLCAxNjA5NSwgMTYxMDEsIDE2MTA3LCAxNjExMSwgMTYxMTcsIDE2MTIxLCAxNjEyNywgMTYxMzMsIDE2MTM5LCAKLSAgICAxNjE0NSwgMTYxNTEsIDE2MTU3LCAxNjE2MiwgMTYxNjgsIDE2MTcyLCAxNjE3NywgMTYxODMsIDE2MTg5LCAxNjE5NSwgCi0gICAgMTYyMDAsIDE2MjA2LCAxNjIxMiwgMTYyMTgsIDE2MjIzLCAxNjIyOSwgMCwgMCwgMCwgMCwgMTYyMzMsIDE2MjM5LCAKLSAgICAxNjI0NCwgMTYyNTAsIDE2MjU1LCAxNjI2MywgMTYyNzEsIDE2Mjc1LCAxNjI3OSwgMTYyODMsIDE2Mjg5LCAxNjI5NSwgCi0gICAgMTYzMDEsIDE2MzA3LCAxNjMxMSwgMTYzMTUsIDE2MzE5LCAxNjMyMywgMTYzMjcsIDE2MzMwLCAxNjMzMywgMTYzMzYsIAotICAgIDE2MzM5LCAxNjM0MiwgMTYzNDUsIDE2MzQ4LCAxNjM1MSwgMTYzNTQsIDE2MzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNjM2MiwgMTYzNjcsIDAsIDE2Mzc0LCAwLCAwLCAxNjM4MSwgMTYzODYsIDAsIDE2MzkxLCAwLCAKLSAgICAwLCAxNjM5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY0MDMsIDE2NDA4LCAxNjQxMiwgMTY0MTksIDAsIDE2NDI2LCAxNjQzMSwgCi0gICAgMTY0MzYsIDE2NDQxLCAxNjQ0OCwgMTY0NTUsIDE2NDYyLCAwLCAxNjQ2OSwgMTY0NzQsIDE2NDc5LCAwLCAxNjQ4NiwgMCwgCi0gICAgMTY0OTMsIDAsIDAsIDE2NDk4LCAxNjUwNSwgMCwgMTY1MTIsIDE2NTE2LCAxNjUyMywgMTY1MjcsIDE2NTMyLCAxNjU0MCwgCi0gICAgMTY1NDYsIDE2NTUyLCAxNjU1NywgMTY1NjMsIDE2NTY5LCAxNjU3NSwgMTY1ODAsIDAsIDE2NTg2LCAxNjU5NCwgMTY2MDEsIAotICAgIDAsIDAsIDE2NjA4LCAxNjYxMywgMTY2MTksIDE2NjI0LCAxNjYzMCwgMCwgMTY2MzYsIDAsIDE2NjQyLCAxNjY0OSwgCi0gICAgMTY2NTYsIDE2NjYzLCAxNjY3MCwgMTY2NzUsIDAsIDAsIDE2Njc5LCAxNjY4NCwgMTY2ODgsIDE2NjkyLCAxNjY5NiwgCi0gICAgMTY3MDAsIDE2NzA0LCAxNjcwOCwgMTY3MTIsIDE2NzE2LCAwLCAwLCAxNjcyMCwgMTY3MjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE2NzMyLCAxNjczNiwgMTY3NDcsIDE2NzYyLCAxNjc3NywgMTY3ODcsIDE2Nzk4LCAxNjgxMSwgCi0gICAgMTY4MjIsIDE2ODI4LCAxNjgzNiwgMTY4NDYsIDE2ODUyLCAxNjg2MCwgMTY4NjQsIDE2ODcwLCAxNjg3NiwgMTY4ODQsIAotICAgIDE2ODk0LCAxNjkwMiwgMTY5MTUsIDE2OTIxLCAxNjkyOSwgMTY5MzcsIDE2OTQ5LCAxNjk1NiwgMTY5NjQsIDE2OTcyLCAKLSAgICAxNjk4MCwgMTY5ODgsIDE2OTk2LCAxNzAwNCwgMTcwMTQsIDE3MDE4LCAxNzAyMSwgMTcwMjQsIDE3MDI3LCAxNzAzMCwgCi0gICAgMTcwMzMsIDE3MDM2LCAxNzAzOSwgMTcwNDIsIDE3MDQ1LCAxNzA0OSwgMTcwNTMsIDE3MDU3LCAxNzA2MSwgMTcwNjUsIAotICAgIDE3MDY5LCAxNzA3MywgMTcwNzcsIDE3MDgxLCAxNzA4NiwgMTcwOTIsIDE3MTAyLCAxNzExNiwgMTcxMjYsIDE3MTMyLCAKLSAgICAxNzEzOCwgMTcxNDYsIDE3MTU0LCAxNzE2MiwgMTcxNzAsIDE3MTc2LCAxNzE4MiwgMTcxODUsIDE3MTg5LCAxNzE5MywgCi0gICAgMTcxOTcsIDE3MjAxLCAxNzIwNSwgMTcyMDksIDAsIDE3MjEzLCAxNzIxNywgMTcyMjEsIDE3MjI1LCAxNzIyOSwgMTcyMzMsIAotICAgIDE3MjM3LCAxNzI0MSwgMTcyNDUsIDE3MjQ5LCAxNzI1MywgMTcyNTYsIDE3MjU5LCAxNzI2MywgMTcyNjcsIDE3MjcxLCAKLSAgICAxNzI3NCwgMTcyNzgsIDE3MjgyLCAxNzI4NiwgMTcyOTAsIDE3Mjk0LCAxNzI5OCwgMTczMDIsIDE3MzA2LCAxNzMwOSwgCi0gICAgMTczMTIsIDE3MzE2LCAxNzMyMCwgMTczMjQsIDE3MzI4LCAxNzMzMSwgMTczMzQsIDE3MzM4LCAxNzM0MywgMTczNDcsIDAsIAotICAgIDAsIDAsIDAsIDE3MzUxLCAxNzM1NiwgMTczNjAsIDE3MzY1LCAxNzM2OSwgMTczNzQsIDE3Mzc5LCAxNzM4NSwgMTczOTAsIAotICAgIDE3Mzk2LCAxNzQwMCwgMTc0MDUsIDE3NDA5LCAxNzQxNCwgMTc0MjQsIDE3NDMwLCAxNzQzNiwgMTc0NDMsIDE3NDUzLCAKLSAgICAxNzQ1OSwgMTc0NjMsIDE3NDY3LCAxNzQ3MywgMTc0NzksIDE3NDg3LCAxNzQ5MywgMTc1MDEsIDE3NTA5LCAxNzUxNywgCi0gICAgMTc1MjcsIDE3NTM1LCAxNzU0NSwgMTc1NTAsIDE3NTU2LCAxNzU2MiwgMTc1NjgsIDE3NTc0LCAxNzU4MCwgMTc1ODYsIDAsIAotICAgIDE3NTkyLCAxNzU5OCwgMTc2MDQsIDE3NjEwLCAxNzYxNiwgMTc2MjIsIDE3NjI4LCAxNzYzNCwgMTc2NDAsIDE3NjQ2LCAKLSAgICAxNzY1MiwgMTc2NTcsIDE3NjYyLCAxNzY2OCwgMTc2NzQsIDE3NjgwLCAxNzY4NSwgMTc2OTEsIDE3Njk3LCAxNzcwMywgCi0gICAgMTc3MDksIDE3NzE1LCAxNzcyMSwgMTc3MjcsIDE3NzMzLCAxNzczOCwgMTc3NDMsIDE3NzQ5LCAxNzc1NSwgMTc3NjEsIAotICAgIDE3NzY3LCAxNzc3MiwgMTc3NzcsIDE3NzgzLCAxNzc5MSwgMTc3OTgsIDAsIDE3ODA1LCAxNzgxMiwgMTc4MjUsIDE3ODMyLCAKLSAgICAxNzgzOSwgMTc4NDcsIDE3ODU1LCAxNzg2MSwgMTc4NjcsIDE3ODczLCAxNzg4MywgMTc4ODgsIDE3ODk0LCAxNzkwNCwgCi0gICAgMTc5MTQsIDAsIDE3OTI0LCAxNzkzNCwgMTc5NDIsIDE3OTU0LCAxNzk2NiwgMTc5NzIsIDE3OTg2LCAxODAwMSwgMTgwMDYsIAotICAgIDE4MDExLCAxODAxOSwgMTgwMjcsIDE4MDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODA0MywgCi0gICAgMTgwNDYsIDE4MDUwLCAxODA1NCwgMTgwNTgsIDE4MDYyLCAxODA2NiwgMTgwNzAsIDE4MDc0LCAxODA3OCwgMTgwODIsIAotICAgIDE4MDg2LCAxODA5MCwgMTgwOTQsIDE4MDk4LCAxODEwMiwgMTgxMDYsIDE4MTEwLCAxODExNCwgMTgxMTgsIDE4MTIyLCAKLSAgICAxODEyNSwgMTgxMjgsIDE4MTMyLCAxODEzNiwgMTgxNDAsIDE4MTQzLCAxODE0NiwgMTgxNDksIDE4MTUzLCAxODE1NywgCi0gICAgMTgxNjEsIDE4MTY0LCAxODE2OCwgMTgxNzEsIDE4MTc2LCAxODE3OSwgMTgxODMsIDE4MTg2LCAxODE5MCwgMTgxOTMsIAotICAgIDE4MTk4LCAxODIwMSwgMTgyMDUsIDE4MjEyLCAxODIxNywgMTgyMjEsIDE4MjI2LCAxODIzMCwgMTgyMzUsIDE4MjM5LCAKLSAgICAxODI0NCwgMTgyNTEsIDE4MjU3LCAxODI2MiwgMTgyNjYsIDE4MjcwLCAxODI3NCwgMTgyNzgsIDE4MjgyLCAxODI4OCwgCi0gICAgMTgyOTQsIDE4MzAxLCAxODMwNywgMTgzMTMsIDE4MzE3LCAxODMyMCwgMTgzMjMsIDE4MzI2LCAxODMyOSwgMTgzMzIsIAotICAgIDE4MzM1LCAxODMzOCwgMTgzNDEsIDE4MzQ0LCAxODM1MCwgMTgzNTQsIDE4MzU4LCAxODM2MiwgMTgzNjYsIDE4MzcwLCAKLSAgICAxODM3NCwgMTgzNzgsIDE4MzgyLCAxODM4NywgMTgzOTEsIDE4Mzk2LCAxODQwMSwgMTg0MDcsIDE4NDEyLCAxODQxOCwgCi0gICAgMTg0MjQsIDE4NDMwLCAxODQzNiwgMTg0NDIsIDE4NDUwLCAxODQ1OCwgMTg0NjcsIDE4NDc1LCAxODQ4NCwgMTg0OTMsIAotICAgIDE4NTA0LCAxODUxNCwgMTg1MjQsIDE4NTM1LCAxODU0NiwgMTg1NTYsIDE4NTY2LCAxODU3NiwgMTg1ODYsIDE4NTk2LCAKLSAgICAxODYwNiwgMTg2MTYsIDE4NjI2LCAxODYzNCwgMTg2NDEsIDE4NjQ3LCAxODY1NCwgMTg2NTksIDE4NjY1LCAxODY3MSwgCi0gICAgMTg2NzcsIDE4NjgzLCAxODY4OSwgMTg2OTUsIDE4NzAwLCAxODcwNiwgMTg3MTIsIDE4NzE4LCAxODcyNCwgMTg3MjksIAotICAgIDE4NzM4LCAxODc0NSwgMTg3NTEsIDE4NzU4LCAxODc2NiwgMTg3NzIsIDE4Nzc4LCAxODc4NCwgMTg3OTAsIDE4Nzk4LCAKLSAgICAxODgwNiwgMTg4MTYsIDE4ODI0LCAxODgzMiwgMTg4MzgsIDE4ODQzLCAxODg0OCwgMTg4NTMsIDE4ODU4LCAxODg2MywgCi0gICAgMTg4NjgsIDE4ODczLCAxODg3OCwgMTg4ODMsIDE4ODg5LCAxODg5NSwgMTg5MDEsIDE4OTA4LCAxODkxMywgMTg5MTksIAotICAgIDE4OTI0LCAxODkyOSwgMTg5MzQsIDE4OTM5LCAxODk0NCwgMTg5NDksIDE4OTU0LCAxODk1OSwgMTg5NjQsIDE4OTY5LCAKLSAgICAxODk3NCwgMTg5NzksIDE4OTg0LCAxODk4OSwgMTg5OTQsIDE4OTk5LCAxOTAwNCwgMTkwMDksIDE5MDE0LCAxOTAxOSwgCi0gICAgMTkwMjQsIDE5MDI5LCAxOTAzNCwgMTkwMzksIDE5MDQ0LCAxOTA0OSwgMTkwNTQsIDE5MDU5LCAxOTA2NCwgMTkwNjksIAotICAgIDE5MDc0LCAxOTA3OSwgMTkwODQsIDE5MDg5LCAxOTA5NCwgMTkwOTksIDE5MTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxOTEwOSwgMTkxMTMsIDE5MTE3LCAxOTEyMSwgMTkxMjUsIDE5MTI5LCAxOTEzMywgMTkxMzcsIDE5MTQxLCAKLSAgICAxOTE0NSwgMTkxNDksIDE5MTUzLCAxOTE1NywgMTkxNjEsIDE5MTY1LCAxOTE2OSwgMTkxNzMsIDE5MTc3LCAxOTE4MSwgCi0gICAgMTkxODUsIDE5MTg5LCAxOTE5MywgMTkxOTcsIDE5MjAxLCAxOTIwNSwgMTkyMDksIDE5MjEzLCAxOTIxNywgMTkyMjEsIAotICAgIDE5MjI1LCAxOTIyOSwgMTkyMzMsIDE5MjM3LCAxOTI0MSwgMTkyNDUsIDE5MjQ5LCAxOTI1MywgMTkyNTcsIDE5MjYxLCAKLSAgICAxOTI2NSwgMTkyNjksIDE5MjczLCAxOTI3OSwgMTkyODMsIDE5Mjg4LCAwLCAwLCAwLCAxOTI5MywgMTkyOTcsIDE5MzAxLCAKLSAgICAxOTMwNSwgMTkzMDksIDE5MzEzLCAxOTMxNywgMTkzMjEsIDE5MzI1LCAxOTMyOSwgMTkzMzMsIDE5MzM3LCAxOTM0MSwgCi0gICAgMTkzNDUsIDE5MzQ5LCAxOTM1MywgMTkzNTcsIDE5MzYxLCAxOTM2NSwgMTkzNjksIDE5MzczLCAxOTM3NywgMTkzODEsIAotICAgIDE5Mzg1LCAxOTM4OSwgMTkzOTMsIDE5Mzk3LCAxOTQwMSwgMTk0MDUsIDE5NDA5LCAxOTQxMywgMTk0MTcsIDE5NDIxLCAKLSAgICAxOTQyNSwgMTk0MjksIDE5NDMzLCAxOTQzNywgMTk0NDEsIDE5NDQ1LCAxOTQ0OSwgMTk0NTMsIDE5NDU3LCAxOTQ2MSwgCi0gICAgMTk0NjUsIDE5NDY5LCAxOTQ3MywgMTk0NzcsIDE5NDgxLCAxOTQ4NSwgMTk0ODksIDE5NDkzLCAxOTQ5NywgMTk1MDEsIAotICAgIDE5NTA1LCAxOTUwOSwgMTk1MTMsIDE5NTE3LCAxOTUyMSwgMTk1MjUsIDE5NTI5LCAxOTUzMywgMTk1MzcsIDE5NTQxLCAKLSAgICAxOTU0NSwgMTk1NDksIDE5NTUzLCAxOTU1NywgMTk1NjEsIDE5NTY1LCAxOTU2OSwgMTk1NzMsIDE5NTc3LCAxOTU4MSwgCi0gICAgMTk1ODUsIDE5NTg5LCAxOTU5MywgMTk1OTcsIDE5NjAxLCAxOTYwNSwgMTk2MDksIDE5NjEzLCAxOTYxNywgMTk2MjEsIAotICAgIDE5NjI1LCAxOTYyOSwgMTk2MzMsIDE5NjM3LCAxOTY0MSwgMTk2NDUsIDE5NjQ5LCAxOTY1MywgMTk2NTcsIDE5NjYxLCAKLSAgICAxOTY2NSwgMTk2NjksIDE5NjczLCAxOTY3NywgMTk2ODEsIDE5Njg0LCAxOTY4OCwgMTk2OTEsIDE5Njk1LCAxOTY5OSwgCi0gICAgMTk3MDIsIDE5NzA2LCAxOTcxMCwgMTk3MTMsIDE5NzE3LCAxOTcyMSwgMTk3MjUsIDE5NzI5LCAxOTczMiwgMTk3MzYsIAotICAgIDE5NzQwLCAxOTc0NCwgMTk3NDgsIDE5NzUyLCAxOTc1NiwgMTk3NTksIDE5NzYzLCAxOTc2NywgMTk3NzEsIDE5Nzc1LCAKLSAgICAxOTc3OSwgMTk3ODMsIDE5Nzg3LCAxOTc5MSwgMTk3OTUsIDE5Nzk5LCAxOTgwMywgMTk4MDcsIDE5ODExLCAxOTgxNSwgCi0gICAgMTk4MTksIDE5ODIzLCAxOTgyNywgMTk4MzEsIDE5ODM1LCAxOTgzOSwgMTk4NDMsIDE5ODQ3LCAxOTg1MSwgMTk4NTUsIAotICAgIDE5ODU5LCAxOTg2MywgMTk4NjcsIDE5ODcxLCAxOTg3NSwgMTk4NzksIDE5ODgzLCAxOTg4NywgMTk4OTEsIDE5ODk1LCAKLSAgICAxOTg5OSwgMTk5MDMsIDE5OTA3LCAxOTkxMSwgMTk5MTUsIDE5OTE5LCAxOTkyMywgMTk5MjcsIDE5OTMxLCAxOTkzNSwgCi0gICAgMTk5MzksIDE5OTQzLCAxOTk0NywgMTk5NTEsIDE5OTU1LCAxOTk1OSwgMTk5NjMsIDE5OTY3LCAxOTk3MSwgMTk5NzUsIAotICAgIDE5OTc5LCAxOTk4MywgMTk5ODcsIDE5OTkxLCAxOTk5NSwgMTk5OTksIDIwMDAzLCAyMDAwNywgMjAwMTEsIDIwMDE1LCAKLSAgICAyMDAxOSwgMjAwMjMsIDIwMDI3LCAyMDAzMSwgMjAwMzUsIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAyMDA1NSwgCi0gICAgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgMjAwOTUsIAotICAgIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIDIwMTM1LCAKLSAgICAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAyMDE3NSwgCi0gICAgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAyMDE5OSwgMjAyMDMsIDIwMjA3LCAyMDIxMSwgMjAyMTUsIAotICAgIDIwMjE5LCAyMDIyMywgMjAyMjcsIDIwMjMxLCAyMDIzNSwgMjAyMzksIDIwMjQzLCAyMDI0NywgMjAyNTEsIDIwMjU1LCAKLSAgICAyMDI1OSwgMjAyNjMsIDIwMjY3LCAyMDI3MSwgMjAyNzUsIDIwMjc5LCAyMDI4MywgMjAyODcsIDIwMjkxLCAyMDI5NSwgCi0gICAgMjAyOTksIDIwMzAzLCAyMDMwNywgMjAzMTEsIDIwMzE0LCAyMDMxOCwgMjAzMjIsIDIwMzI2LCAyMDMzMCwgMjAzMzQsIAotICAgIDIwMzM4LCAyMDM0MiwgMjAzNDYsIDIwMzUwLCAyMDM1NCwgMjAzNTgsIDIwMzYyLCAyMDM2NiwgMjAzNzAsIDIwMzc0LCAKLSAgICAyMDM3OCwgMjAzODIsIDIwMzg2LCAyMDM5MCwgMjAzOTQsIDIwMzk4LCAyMDQwMiwgMjA0MDYsIDIwNDA5LCAyMDQxMywgCi0gICAgMjA0MTcsIDIwNDIxLCAyMDQyNSwgMjA0MjksIDIwNDMzLCAyMDQzNywgMjA0NDEsIDIwNDQ1LCAyMDQ0OSwgMjA0NTMsIAotICAgIDIwNDU3LCAyMDQ2MSwgMjA0NjUsIDIwNDY5LCAyMDQ3MiwgMjA0NzYsIDIwNDgwLCAyMDQ4NCwgMjA0ODgsIDIwNDkyLCAKLSAgICAyMDQ5NiwgMjA1MDAsIDIwNTA0LCAyMDUwOCwgMjA1MTIsIDIwNTE2LCAyMDUyMCwgMjA1MjQsIDIwNTI4LCAyMDUzMiwgCi0gICAgMjA1MzYsIDIwNTQwLCAyMDU0NCwgMjA1NDgsIDIwNTUyLCAyMDU1NiwgMjA1NjAsIDIwNTY0LCAyMDU2OCwgMjA1NzIsIAotICAgIDIwNTc2LCAyMDU4MCwgMjA1ODQsIDIwNTg4LCAyMDU5MiwgMjA1OTYsIDAsIDIwNjAwLCAyMDYwNCwgMjA2MDgsIDIwNjEyLCAKLSAgICAwLCAwLCAyMDYxNiwgMjA2MjAsIDIwNjI0LCAyMDYyOCwgMjA2MzIsIDIwNjM2LCAyMDY0MCwgMCwgMjA2NDQsIDAsIAotICAgIDIwNjQ4LCAyMDY1MiwgMjA2NTYsIDIwNjYwLCAwLCAwLCAyMDY2NCwgMjA2NjgsIDIwNjcyLCAyMDY3NiwgMjA2ODAsIAotICAgIDIwNjg0LCAyMDY4OCwgMjA2OTIsIDIwNjk2LCAyMDcwMCwgMjA3MDQsIDIwNzA4LCAyMDcxMiwgMjA3MTYsIDIwNzIwLCAKLSAgICAyMDcyNCwgMjA3MjgsIDIwNzMyLCAyMDczNiwgMjA3NDAsIDIwNzQ0LCAyMDc0OCwgMjA3NTIsIDIwNzU1LCAyMDc1OSwgCi0gICAgMjA3NjMsIDIwNzY3LCAyMDc3MSwgMjA3NzUsIDIwNzc5LCAyMDc4MywgMjA3ODcsIDIwNzkxLCAyMDc5NSwgMjA3OTksIAotICAgIDIwODAzLCAyMDgwNywgMjA4MTEsIDIwODE1LCAyMDgxOSwgMjA4MjMsIDAsIDIwODI3LCAyMDgzMSwgMjA4MzUsIDIwODM5LCAKLSAgICAwLCAwLCAyMDg0MywgMjA4NDYsIDIwODUwLCAyMDg1NCwgMjA4NTgsIDIwODYyLCAyMDg2NiwgMjA4NzAsIDIwODc0LCAKLSAgICAyMDg3OCwgMjA4ODIsIDIwODg2LCAyMDg5MCwgMjA4OTQsIDIwODk4LCAyMDkwMiwgMjA5MDYsIDIwOTExLCAyMDkxNiwgCi0gICAgMjA5MjEsIDIwOTI3LCAyMDkzMywgMjA5MzgsIDIwOTQzLCAyMDk0OSwgMjA5NTIsIDIwOTU2LCAyMDk2MCwgMjA5NjQsIAotICAgIDIwOTY4LCAyMDk3MiwgMjA5NzYsIDIwOTgwLCAwLCAyMDk4NCwgMjA5ODgsIDIwOTkyLCAyMDk5NiwgMCwgMCwgMjEwMDAsIAotICAgIDIxMDA0LCAyMTAwOCwgMjEwMTIsIDIxMDE2LCAyMTAyMCwgMjEwMjQsIDAsIDIxMDI4LCAwLCAyMTAzMiwgMjEwMzYsIAotICAgIDIxMDQwLCAyMTA0NCwgMCwgMCwgMjEwNDgsIDIxMDUyLCAyMTA1NiwgMjEwNjAsIDIxMDY0LCAyMTA2OCwgMjEwNzIsIAotICAgIDIxMDc2LCAyMTA4MCwgMjEwODUsIDIxMDkwLCAyMTA5NSwgMjExMDEsIDIxMTA3LCAyMTExMiwgMCwgMjExMTcsIDIxMTIxLCAKLSAgICAyMTEyNSwgMjExMjksIDIxMTMzLCAyMTEzNywgMjExNDEsIDIxMTQ1LCAyMTE0OSwgMjExNTMsIDIxMTU3LCAyMTE2MSwgCi0gICAgMjExNjUsIDIxMTY5LCAyMTE3MywgMjExNzcsIDIxMTgxLCAyMTE4NCwgMjExODgsIDIxMTkyLCAyMTE5NiwgMjEyMDAsIAotICAgIDIxMjA0LCAyMTIwOCwgMjEyMTIsIDIxMjE2LCAyMTIyMCwgMjEyMjQsIDIxMjI4LCAyMTIzMiwgMjEyMzYsIDIxMjQwLCAKLSAgICAyMTI0NCwgMjEyNDgsIDIxMjUyLCAyMTI1NiwgMjEyNjAsIDIxMjY0LCAyMTI2OCwgMjEyNzIsIDIxMjc2LCAyMTI4MCwgCi0gICAgMjEyODQsIDIxMjg4LCAyMTI5MiwgMjEyOTYsIDIxMzAwLCAyMTMwNCwgMjEzMDgsIDIxMzEyLCAyMTMxNiwgMjEzMjAsIAotICAgIDIxMzI0LCAyMTMyOCwgMjEzMzIsIDIxMzM2LCAyMTM0MCwgMCwgMjEzNDQsIDIxMzQ4LCAyMTM1MiwgMjEzNTYsIDAsIDAsIAotICAgIDIxMzYwLCAyMTM2NCwgMjEzNjgsIDIxMzcyLCAyMTM3NiwgMjEzODAsIDIxMzg0LCAyMTM4OCwgMjEzOTIsIDIxMzk2LCAKLSAgICAyMTQwMCwgMjE0MDQsIDIxNDA4LCAyMTQxMiwgMjE0MTYsIDIxNDIwLCAyMTQyNCwgMjE0MjgsIDIxNDMyLCAyMTQzNiwgCi0gICAgMjE0NDAsIDIxNDQ0LCAyMTQ0OCwgMjE0NTIsIDIxNDU2LCAyMTQ2MCwgMjE0NjQsIDIxNDY4LCAyMTQ3MiwgMjE0NzYsIAotICAgIDIxNDgwLCAyMTQ4NCwgMjE0ODgsIDIxNDkyLCAyMTQ5NiwgMjE1MDAsIDIxNTA0LCAyMTUwOCwgMjE1MTIsIDIxNTE2LCAKLSAgICAyMTUyMCwgMjE1MjQsIDIxNTI4LCAyMTUzMiwgMjE1MzYsIDIxNTQwLCAyMTU0NCwgMjE1NDgsIDIxNTUyLCAyMTU1NiwgCi0gICAgMjE1NjAsIDIxNTY0LCAyMTU2OCwgMjE1NzIsIDIxNTc2LCAyMTU4MCwgMjE1ODQsIDIxNTg3LCAyMTU5MSwgMjE1OTUsIAotICAgIDIxNTk5LCAyMTYwMywgMjE2MDcsIDIxNjExLCAyMTYxNSwgMjE2MTksIDIxNjIzLCAwLCAwLCAyMTYyNywgMjE2MzYsIAotICAgIDIxNjQyLCAyMTY0NywgMjE2NTEsIDIxNjU0LCAyMTY1OSwgMjE2NjIsIDIxNjY1LCAyMTY2OCwgMjE2NzMsIDIxNjc3LCAKLSAgICAyMTY4MiwgMjE2ODUsIDIxNjg4LCAyMTY5MSwgMjE2OTQsIDIxNjk3LCAyMTcwMCwgMjE3MDMsIDIxNzA2LCAyMTcwOSwgCi0gICAgMjE3MTMsIDIxNzE3LCAyMTcyMSwgMjE3MjUsIDIxNzI5LCAyMTczMywgMjE3MzcsIDIxNzQxLCAyMTc0NSwgMjE3NDksIDAsIAotICAgIDAsIDAsIDIxNzU1LCAyMTc2MSwgMjE3NjUsIDIxNzY5LCAyMTc3MywgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIAotICAgIDIxNzk3LCAyMTgwMSwgMjE4MDUsIDIxODA5LCAyMTgxNSwgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzMsIDIxODM5LCAKLSAgICAyMTg0NSwgMjE4NTMsIDIxODU5LCAyMTg2NSwgMjE4NzEsIDIxODc3LCAyMTg4MywgMCwgMCwgMCwgMCwgMCwgMCwgMjE4ODksIAotICAgIDIxODkyLCAyMTg5NSwgMjE4OTgsIDIxOTAxLCAyMTkwNCwgMjE5MDgsIDIxOTEyLCAyMTkxNSwgMjE5MTksIDIxOTIzLCAKLSAgICAyMTkyNywgMjE5MzEsIDIxOTM1LCAyMTkzOCwgMjE5NDIsIDIxOTQ2LCAyMTk1MCwgMjE5NTQsIDIxOTU4LCAyMTk2MiwgCi0gICAgMjE5NjYsIDIxOTcwLCAyMTk3NCwgMjE5NzgsIDIxOTgyLCAyMTk4NSwgMjE5ODksIDIxOTkzLCAyMTk5NywgMjIwMDEsIAotICAgIDIyMDA0LCAyMjAwOCwgMjIwMTIsIDIyMDE2LCAyMjAyMCwgMjIwMjQsIDIyMDI4LCAyMjAzMiwgMjIwMzYsIDIyMDQwLCAKLSAgICAyMjA0NCwgMjIwNDgsIDIyMDUyLCAyMjA1NiwgMjIwNjAsIDIyMDYzLCAyMjA2NywgMjIwNzEsIDIyMDc1LCAyMjA3OSwgCi0gICAgMjIwODMsIDIyMDg3LCAyMjA5MSwgMjIwOTUsIDIyMDk5LCAyMjEwMywgMjIxMDcsIDIyMTExLCAyMjExNSwgMjIxMTksIAotICAgIDIyMTIzLCAyMjEyNywgMjIxMzEsIDIyMTM1LCAyMjEzOSwgMjIxNDMsIDIyMTQ3LCAyMjE1MSwgMjIxNTUsIDIyMTU5LCAKLSAgICAyMjE2MywgMjIxNjcsIDIyMTcxLCAyMjE3NSwgMjIxNzksIDIyMTgzLCAyMjE4NywgMjIxOTEsIDIyMTk1LCAyMjE5OCwgCi0gICAgMjIyMDIsIDIyMjA2LCAyMjIxMCwgMjIyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIyMjE4LCAKLSAgICAyMjIyMiwgMjIyMjUsIDIyMjI5LCAyMjIzMiwgMjIyMzYsIDIyMjM5LCAyMjI0MywgMjIyNDksIDIyMjU0LCAyMjI1OCwgCi0gICAgMjIyNjEsIDIyMjY1LCAyMjI2OSwgMjIyNzQsIDIyMjc4LCAyMjI4MywgMjIyODcsIDIyMjkyLCAyMjI5NiwgMjIzMDEsIAotICAgIDIyMzA1LCAyMjMxMCwgMjIzMTYsIDIyMzIwLCAyMjMyNSwgMjIzMjksIDIyMzM0LCAyMjM0MCwgMjIzNDQsIDIyMzUwLCAKLSAgICAyMjM1NiwgMjIzNjAsIDIyMzY1LCAyMjM3MywgMjIzODEsIDIyMzg4LCAyMjM5MywgMjIzOTgsIDIyNDA3LCAyMjQxNCwgCi0gICAgMjI0MjEsIDIyNDI2LCAyMjQzMiwgMjI0MzYsIDIyNDQwLCAyMjQ0NCwgMjI0NDgsIDIyNDUyLCAyMjQ1NiwgMjI0NjAsIAotICAgIDIyNDY0LCAyMjQ2OCwgMjI0NzIsIDIyNDc4LCAyMjQ4MywgMjI0ODgsIDIyNDkxLCAyMjQ5NSwgMjI0OTksIDIyNTA0LCAKLSAgICAyMjUwOCwgMjI1MTMsIDIyNTE3LCAyMjUyMiwgMjI1MjYsIDIyNTMxLCAyMjUzNSwgMjI1NDAsIDIyNTQ0LCAyMjU0OSwgCi0gICAgMjI1NTMsIDIyNTU4LCAyMjU2NCwgMjI1NjgsIDIyNTczLCAyMjU3OCwgMjI1ODIsIDIyNTg2LCAyMjU5MCwgMjI1OTQsIAotICAgIDIyNTk3LCAyMjYwMSwgMjI2MDcsIDIyNjEyLCAyMjYxNywgMjI2MjEsIDIyNjI1LCAyMjYyOSwgMjI2MzQsIDIyNjM4LCAKLSAgICAyMjY0MywgMjI2NDcsIDIyNjUyLCAyMjY1NSwgMjI2NTksIDIyNjYzLCAyMjY2OCwgMjI2NzIsIDIyNjc3LCAyMjY4MSwgCi0gICAgMjI2ODYsIDIyNjkyLCAyMjY5NiwgMjI3MDAsIDIyNzA0LCAyMjcwOCwgMjI3MTIsIDIyNzE2LCAyMjcyMCwgMjI3MjQsIAotICAgIDIyNzI4LCAyMjczMiwgMjI3MzYsIDIyNzQyLCAyMjc0NSwgMjI3NDksIDIyNzUzLCAyMjc1OCwgMjI3NjIsIDIyNzY3LCAKLSAgICAyMjc3MSwgMjI3NzYsIDIyNzgwLCAyMjc4NSwgMjI3ODksIDIyNzk0LCAyMjc5OCwgMjI4MDMsIDIyODA3LCAyMjgxMiwgCi0gICAgMjI4MTgsIDIyODIyLCAyMjgyNiwgMjI4MzIsIDIyODM4LCAyMjg0NCwgMjI4NTAsIDIyODU0LCAyMjg1OCwgMjI4NjIsIAotICAgIDIyODY2LCAyMjg3MCwgMjI4NzQsIDIyODgwLCAyMjg4NCwgMjI4ODgsIDIyODkyLCAyMjg5NywgMjI5MDEsIDIyOTA2LCAKLSAgICAyMjkxMCwgMjI5MTUsIDIyOTE5LCAyMjkyNCwgMjI5MjgsIDIyOTMzLCAyMjkzNywgMjI5NDIsIDIyOTQ2LCAyMjk1MSwgCi0gICAgMjI5NTcsIDIyOTYxLCAyMjk2NywgMjI5NzEsIDIyOTc1LCAyMjk3OSwgMjI5ODMsIDIyOTg3LCAyMjk5MSwgMjI5OTcsIAotICAgIDIzMDAwLCAyMzAwNCwgMjMwMDgsIDIzMDEzLCAyMzAxNywgMjMwMjIsIDIzMDI2LCAyMzAzMSwgMjMwMzUsIDIzMDQwLCAKLSAgICAyMzA0NCwgMjMwNDksIDIzMDUzLCAyMzA1OCwgMjMwNjIsIDIzMDY3LCAyMzA3MywgMjMwNzYsIDIzMDgwLCAyMzA4NCwgCi0gICAgMjMwODksIDIzMDk0LCAyMzA5OCwgMjMxMDIsIDIzMTA2LCAyMzExMCwgMjMxMTQsIDIzMTE4LCAyMzEyNCwgMjMxMjcsIAotICAgIDIzMTMxLCAyMzEzNSwgMjMxNDAsIDIzMTQ0LCAyMzE0OSwgMjMxNTMsIDIzMTU4LCAyMzE2NCwgMjMxNjcsIDIzMTcyLCAKLSAgICAyMzE3NiwgMjMxODAsIDIzMTg0LCAyMzE4OCwgMjMxOTIsIDIzMTk2LCAyMzIwMCwgMjMyMDYsIDIzMjEwLCAyMzIxNCwgCi0gICAgMjMyMTgsIDIzMjIzLCAyMzIyNywgMjMyMzIsIDIzMjM2LCAyMzI0MSwgMjMyNDUsIDIzMjUwLCAyMzI1NCwgMjMyNTksIAotICAgIDIzMjYzLCAyMzI2OCwgMjMyNzIsIDIzMjc3LCAyMzI4MCwgMjMyODQsIDIzMjg4LCAyMzI5MiwgMjMyOTYsIDIzMzAwLCAKLSAgICAyMzMwNCwgMjMzMDgsIDIzMzEyLCAyMzMxOCwgMjMzMjIsIDIzMzI2LCAyMzMzMCwgMjMzMzUsIDIzMzM5LCAyMzM0NCwgCi0gICAgMjMzNDgsIDIzMzUzLCAyMzM1NywgMjMzNjIsIDIzMzY2LCAyMzM3MSwgMjMzNzUsIDIzMzgwLCAyMzM4NCwgMjMzODksIAotICAgIDIzMzk1LCAyMzM5OCwgMjM0MDMsIDIzNDA3LCAyMzQxMiwgMjM0MTgsIDIzNDI0LCAyMzQzMCwgMjM0MzYsIDIzNDQyLCAKLSAgICAyMzQ0OCwgMjM0NTQsIDIzNDU4LCAyMzQ2MiwgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgMjM0NzgsIDIzNDgyLCAyMzQ4NiwgCi0gICAgMjM0OTEsIDIzNDk1LCAyMzUwMCwgMjM1MDQsIDIzNTA5LCAyMzUxMywgMjM1MTgsIDIzNTIyLCAyMzUyNywgMjM1MzEsIAotICAgIDIzNTM2LCAyMzU0MCwgMjM1NDUsIDIzNTQ5LCAyMzU1MywgMjM1NTcsIDIzNTYxLCAyMzU2NSwgMjM1NjksIDIzNTczLCAKLSAgICAyMzU3OSwgMjM1ODIsIDIzNTg2LCAyMzU5MCwgMjM1OTUsIDIzNTk5LCAyMzYwNCwgMjM2MDgsIDIzNjEzLCAyMzYxNywgCi0gICAgMjM2MjIsIDIzNjI2LCAyMzYzMSwgMjM2MzUsIDIzNjQwLCAyMzY0NCwgMjM2NDksIDIzNjU1LCAyMzY1OSwgMjM2NjUsIAotICAgIDIzNjcwLCAyMzY3NiwgMjM2ODAsIDIzNjg2LCAyMzY5MSwgMjM2OTUsIDIzNjk5LCAyMzcwMywgMjM3MDcsIDIzNzExLCAKLSAgICAyMzcxNiwgMjM3MTksIDIzNzIzLCAyMzcyOCwgMjM3MzIsIDIzNzM3LCAyMzc0MCwgMjM3NDQsIDIzNzQ4LCAyMzc1MiwgCi0gICAgMjM3NTYsIDIzNzYwLCAyMzc2NCwgMjM3NjgsIDIzNzcyLCAyMzc3NiwgMjM3ODAsIDIzNzg0LCAyMzc4OSwgMjM3OTMsIAotICAgIDIzNzk3LCAyMzgwMywgMjM4MDcsIDIzODEzLCAyMzgxNywgMjM4MjMsIDIzODI3LCAyMzgzMSwgMjM4MzUsIDIzODM5LCAKLSAgICAyMzg0MywgMjM4NDgsIDIzODUyLCAyMzg1NiwgMjM4NjAsIDIzODY0LCAyMzg2OCwgMjM4NzIsIDIzODc2LCAyMzg4MCwgCi0gICAgMjM4ODQsIDIzODg4LCAyMzg5NCwgMjM5MDAsIDIzOTA2LCAyMzkxMiwgMjM5MTgsIDIzOTIzLCAyMzkyOSwgMjM5MzUsIAotICAgIDIzOTQxLCAyMzk0NSwgMjM5NDksIDIzOTUzLCAyMzk1NywgMjM5NjEsIDIzOTY1LCAyMzk2OSwgMjM5NzMsIDIzOTc3LCAKLSAgICAyMzk4MSwgMjM5ODUsIDIzOTg5LCAyMzk5MywgMjM5OTgsIDI0MDAzLCAyNDAwOCwgMjQwMTIsIDI0MDE2LCAyNDAyMCwgCi0gICAgMjQwMjQsIDI0MDI4LCAyNDAzMiwgMjQwMzYsIDI0MDQwLCAyNDA0NCwgMjQwNDgsIDI0MDU0LCAyNDA2MCwgMjQwNjYsIAotICAgIDI0MDcyLCAyNDA3OCwgMjQwODQsIDI0MDkwLCAyNDA5NiwgMjQxMDIsIDI0MTA2LCAyNDExMCwgMjQxMTQsIDI0MTE4LCAKLSAgICAyNDEyMiwgMjQxMjYsIDI0MTMwLCAyNDEzNiwgMjQxNDIsIDI0MTQ4LCAyNDE1NCwgMjQxNjAsIDI0MTY2LCAyNDE3MiwgCi0gICAgMjQxNzgsIDI0MTg0LCAyNDE4OSwgMjQxOTQsIDI0MTk5LCAyNDIwNCwgMjQyMTAsIDI0MjE2LCAyNDIyMiwgMjQyMjgsIAotICAgIDI0MjM0LCAyNDI0MCwgMjQyNDYsIDI0MjUxLCAyNDI1NywgMjQyNjMsIDI0MjY5LCAyNDI3NCwgMjQyODAsIDI0Mjg2LCAKLSAgICAyNDI5MiwgMjQyOTcsIDI0MzAyLCAyNDMwNywgMjQzMTIsIDI0MzE3LCAyNDMyMiwgMjQzMjcsIDI0MzMyLCAyNDMzNywgCi0gICAgMjQzNDIsIDI0MzQ3LCAyNDM1MiwgMjQzNTYsIDI0MzYxLCAyNDM2NiwgMjQzNzEsIDI0Mzc2LCAyNDM4MSwgMjQzODYsIAotICAgIDI0MzkxLCAyNDM5NiwgMjQ0MDEsIDI0NDA2LCAyNDQxMSwgMjQ0MTYsIDI0NDIxLCAyNDQyNiwgMjQ0MzEsIDI0NDM2LCAKLSAgICAyNDQ0MSwgMjQ0NDYsIDI0NDUxLCAyNDQ1NiwgMjQ0NjEsIDI0NDY2LCAyNDQ3MSwgMjQ0NzYsIDI0NDgxLCAyNDQ4NiwgCi0gICAgMjQ0OTEsIDI0NDk2LCAyNDUwMSwgMjQ1MDUsIDI0NTEwLCAyNDUxNSwgMjQ1MjAsIDI0NTI1LCAyNDUzMCwgMjQ1MzUsIAotICAgIDI0NTQwLCAyNDU0NSwgMjQ1NTAsIDI0NTU1LCAyNDU2MCwgMjQ1NjUsIDI0NTcwLCAyNDU3NSwgMjQ1ODAsIDI0NTg1LCAKLSAgICAyNDU5MCwgMjQ1OTUsIDI0NjAwLCAyNDYwNSwgMjQ2MTAsIDI0NjE1LCAyNDYyMCwgMjQ2MjUsIDI0NjMwLCAyNDYzNCwgCi0gICAgMjQ2MzksIDI0NjQ0LCAyNDY0OSwgMjQ2NTQsIDI0NjU5LCAyNDY2MywgMjQ2NjgsIDI0NjczLCAyNDY3OCwgMjQ2ODMsIAotICAgIDI0Njg4LCAyNDY5MiwgMjQ2OTcsIDI0NzAzLCAyNDcwOCwgMjQ3MTMsIDI0NzE4LCAyNDcyMywgMjQ3MjksIDI0NzM0LCAKLSAgICAyNDczOSwgMjQ3NDQsIDI0NzQ5LCAyNDc1NCwgMjQ3NTksIDI0NzY0LCAyNDc2OSwgMjQ3NzQsIDI0Nzc5LCAyNDc4NCwgCi0gICAgMjQ3ODksIDI0Nzk0LCAyNDc5OSwgMjQ4MDQsIDI0ODA5LCAyNDgxNCwgMjQ4MTksIDI0ODI0LCAyNDgyOSwgMjQ4MzQsIAotICAgIDI0ODM5LCAyNDg0NCwgMjQ4NDksIDI0ODU0LCAyNDg1OSwgMjQ4NjQsIDI0ODY5LCAyNDg3NCwgMjQ4NzksIDI0ODg0LCAKLSAgICAyNDg4OSwgMjQ4OTQsIDI0ODk5LCAyNDkwNCwgMjQ5MDksIDI0OTE0LCAyNDkxOSwgMjQ5MjQsIDI0OTI5LCAyNDkzNCwgCi0gICAgMjQ5MzksIDI0OTQ0LCAyNDk0OSwgMjQ5NTUsIDI0OTYwLCAyNDk2NSwgMjQ5NzAsIDI0OTc1LCAyNDk4MCwgMjQ5ODUsIAotICAgIDI0OTkwLCAyNDk5NSwgMjUwMDAsIDI1MDA1LCAyNTAxMCwgMjUwMTUsIDI1MDIwLCAyNTAyNSwgMjUwMzAsIDI1MDM1LCAKLSAgICAyNTA0MCwgMjUwNDUsIDI1MDUwLCAyNTA1NSwgMjUwNjAsIDI1MDY1LCAyNTA3MCwgMjUwNzUsIDI1MDgwLCAyNTA4NSwgCi0gICAgMjUwOTAsIDI1MDk1LCAyNTEwMCwgMjUxMDUsIDI1MTEwLCAyNTExNSwgMjUxMjAsIDI1MTI1LCAyNTEzMCwgMjUxMzUsIAotICAgIDI1MTQwLCAyNTE0NSwgMjUxNTEsIDI1MTU1LCAyNTE1OSwgMjUxNjMsIDI1MTY3LCAyNTE3MSwgMjUxNzUsIDI1MTc5LCAKLSAgICAyNTE4MywgMjUxODksIDI1MTk1LCAyNTIwMSwgMjUyMDcsIDI1MjEzLCAyNTIxOSwgMjUyMjUsIDI1MjMyLCAyNTIzOCwgCi0gICAgMjUyNDMsIDI1MjQ4LCAyNTI1MywgMjUyNTgsIDI1MjYzLCAyNTI2OCwgMjUyNzMsIDI1Mjc4LCAyNTI4MywgMjUyODgsIAotICAgIDI1MjkzLCAyNTI5OCwgMjUzMDMsIDI1MzA4LCAyNTMxMywgMjUzMTgsIDI1MzIzLCAyNTMyOCwgMjUzMzMsIDI1MzM4LCAKLSAgICAyNTM0MywgMjUzNDgsIDI1MzUzLCAyNTM1OCwgMjUzNjMsIDI1MzY4LCAyNTM3MywgMjUzNzgsIDAsIDAsIDAsIDI1Mzg1LCAKLSAgICAyNTM5NSwgMjUzOTksIDI1NDA2LCAyNTQxMCwgMjU0MTQsIDI1NDE4LCAyNTQyNiwgMjU0MzAsIDI1NDM1LCAyNTQ0MCwgCi0gICAgMjU0NDUsIDI1NDQ5LCAyNTQ1NCwgMjU0NTksIDI1NDYyLCAyNTQ2NiwgMjU0NzAsIDI1NDc5LCAyNTQ4MywgMjU0ODcsIAotICAgIDI1NDkzLCAyNTQ5NywgMjU1MDEsIDI1NTA5LCAyNTUxMywgMjU1MjEsIDI1NTI3LCAyNTUzMywgMjU1MzksIDI1NTQ1LCAKLSAgICAyNTU1NCwgMjU1NTksIDI1NTYzLCAyNTU3MiwgMjU1NzUsIDI1NTgxLCAyNTU4NSwgMjU1OTEsIDI1NTk2LCAyNTYwMiwgCi0gICAgMjU2MTAsIDI1NjE2LCAyNTYyMSwgMjU2MjgsIDI1NjMzLCAyNTYzNywgMjU2NDEsIDI1NjUxLCAyNTY1NywgMjU2NjEsIAotICAgIDI1NjcxLCAyNTY3NywgMjU2ODEsIDI1Njg1LCAyNTY5MiwgMjU2OTksIDI1NzA0LCAyNTcwOSwgMjU3MTgsIDI1NzIyLCAKLSAgICAyNTcyNiwgMjU3MzAsIDI1NzM4LCAyNTc0NSwgMjU3NDksIDI1NzUzLCAyNTc1NywgMjU3NjEsIDI1NzY1LCAyNTc2OSwgCi0gICAgMjU3NzMsIDI1Nzc3LCAyNTc4MSwgMjU3ODUsIDI1Nzg5LCAyNTc5NCwgMjU3OTksIDI1ODA0LCAyNTgwOCwgMjU4MTIsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1ODE2LCAyNTgyMCwgMjU4MjQsIDI1ODI4LCAKLSAgICAyNTgzMiwgMjU4MzcsIDI1ODQyLCAyNTg0NywgMjU4NTIsIDI1ODU2LCAyNTg2MCwgMjU4NjUsIDI1ODY5LCAwLCAyNTg3MywgCi0gICAgMjU4NzgsIDI1ODgzLCAyNTg4OCwgMjU4OTIsIDI1ODk3LCAyNTkwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjU5MDcsIDI1OTExLCAyNTkxNSwgMjU5MTksIDI1OTIzLCAyNTkyOCwgMjU5MzMsIDI1OTM4LCAyNTk0MywgMjU5NDcsIAotICAgIDI1OTUxLCAyNTk1NiwgMjU5NjAsIDI1OTY0LCAyNTk2OCwgMjU5NzMsIDI1OTc4LCAyNTk4MywgMjU5ODcsIDI1OTkyLCAKLSAgICAyNTk5NywgMjYwMDIsIDI2MDA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjAxMywgMjYwMTcsIDI2MDIxLCAKLSAgICAyNjAyNSwgMjYwMjksIDI2MDM0LCAyNjAzOSwgMjYwNDQsIDI2MDQ5LCAyNjA1MywgMjYwNTcsIDI2MDYyLCAyNjA2NiwgCi0gICAgMjYwNzAsIDI2MDc0LCAyNjA3OSwgMjYwODQsIDI2MDg5LCAyNjA5MywgMjYwOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDI2MTAzLCAyNjEwNywgMjYxMTEsIDI2MTE1LCAyNjExOSwgMjYxMjQsIDI2MTI5LCAyNjEzNCwgCi0gICAgMjYxMzksIDI2MTQzLCAyNjE0NywgMjYxNTIsIDI2MTU2LCAwLCAyNjE2MCwgMjYxNjUsIDI2MTcwLCAwLCAyNjE3NSwgCi0gICAgMjYxODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MTg1LCAyNjE4OCwgMjYxOTIsIDI2MTk2LCAKLSAgICAyNjIwMCwgMjYyMDQsIDI2MjA4LCAyNjIxMiwgMjYyMTYsIDI2MjIwLCAyNjIyNCwgMjYyMjgsIDI2MjMyLCAyNjIzNiwgCi0gICAgMjYyNDAsIDI2MjQ0LCAyNjI0OCwgMjYyNTIsIDI2MjU1LCAyNjI1OSwgMjYyNjMsIDI2MjY3LCAyNjI3MSwgMjYyNzUsIAotICAgIDI2Mjc5LCAyNjI4MywgMjYyODcsIDI2MjkxLCAyNjI5NSwgMjYyOTksIDI2MzAzLCAyNjMwNywgMjYzMTEsIDI2MzE0LCAKLSAgICAyNjMxOCwgMjYzMjIsIDI2MzI4LCAyNjMzNCwgMjYzNDAsIDI2MzQ2LCAyNjM1MiwgMjYzNTgsIDI2MzY0LCAyNjM3MCwgCi0gICAgMjYzNzYsIDI2MzgyLCAyNjM4OCwgMjYzOTQsIDI2NDAwLCAyNjQwNiwgMjY0MTUsIDI2NDI0LCAyNjQzMCwgMjY0MzYsIAotICAgIDI2NDQyLCAyNjQ0NywgMjY0NTEsIDI2NDU2LCAyNjQ2MSwgMjY0NjYsIDI2NDcwLCAyNjQ3NSwgMjY0ODAsIDI2NDg1LCAKLSAgICAyNjQ4OSwgMjY0OTQsIDI2NDk4LCAyNjUwMywgMjY1MDgsIDI2NTEzLCAyNjUxOCwgMjY1MjIsIDI2NTI2LCAyNjUzMCwgCi0gICAgMjY1MzQsIDI2NTM4LCAyNjU0MiwgMjY1NDYsIDI2NTUwLCAyNjU1NCwgMjY1NTgsIDI2NTY0LCAyNjU2OCwgMjY1NzIsIAotICAgIDI2NTc2LCAyNjU4MCwgMjY1ODQsIDI2NTkyLCAyNjU5OCwgMjY2MDIsIDI2NjA4LCAyNjYxMiwgMjY2MTgsIDI2NjIyLCAwLCAKLSAgICAwLCAyNjYyNiwgMjY2MzAsIDI2NjMzLCAyNjYzNiwgMjY2MzksIDI2NjQyLCAyNjY0NSwgMjY2NDgsIDI2NjUxLCAyNjY1NCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMjY2NTcsIDI2NjY1LCAyNjY3MywgMjY2ODEsIDI2Njg5LCAyNjY5NywgMjY3MDUsIDI2NzEzLCAKLSAgICAyNjcyMSwgMjY3MjksIDAsIDAsIDAsIDAsIDAsIDAsIDI2NzM3LCAyNjc0MCwgMjY3NDMsIDI2NzQ2LCAyNjc1MSwgMjY3NTQsIAotICAgIDI2NzU5LCAyNjc2NiwgMjY3NzQsIDI2Nzc5LCAyNjc4NiwgMjY3ODksIDI2Nzk2LCAyNjgwMywgMjY4MTAsIDAsIDI2ODE0LCAKLSAgICAyNjgxOCwgMjY4MjEsIDI2ODI0LCAyNjgyNywgMjY4MzAsIDI2ODMzLCAyNjgzNiwgMjY4MzksIDI2ODQyLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAyNjg0NSwgMjY4NDgsIDI2ODUxLCAyNjg1NCwgMjY4NTcsIDI2ODYwLCAyNjg2NCwgMjY4NjgsIDI2ODcyLCAKLSAgICAyNjg3NSwgMjY4NzksIDI2ODgzLCAyNjg4NiwgMjY4OTAsIDI2ODk0LCAyNjg5NywgMjY5MDEsIDI2OTA1LCAyNjkwOSwgCi0gICAgMjY5MTMsIDI2OTE3LCAyNjkyMSwgMjY5MjUsIDI2OTI4LCAyNjkzMSwgMjY5MzUsIDI2OTM5LCAyNjk0MiwgMjY5NDYsIAotICAgIDI2OTUwLCAyNjk1NCwgMjY5NTgsIDI2OTYyLCAyNjk2NiwgMjY5NzAsIDI2OTc0LCAyNjk4MSwgMjY5ODYsIDI2OTkxLCAKLSAgICAyNjk5NiwgMjcwMDEsIDI3MDA3LCAyNzAxMywgMjcwMTksIDI3MDI1LCAyNzAzMCwgMjcwMzYsIDI3MDQyLCAyNzA0NywgCi0gICAgMjcwNTMsIDI3MDU5LCAyNzA2NSwgMjcwNzEsIDI3MDc3LCAyNzA4MiwgMjcwODgsIDI3MDkzLCAyNzA5OSwgMjcxMDUsIAotICAgIDI3MTExLCAyNzExNywgMjcxMjMsIDI3MTI4LCAyNzEzMywgMjcxMzksIDI3MTQ1LCAyNzE1MCwgMjcxNTYsIDI3MTYxLCAKLSAgICAyNzE2NywgMjcxNzIsIDI3MTc3LCAyNzE4MywgMjcxODksIDI3MTk1LCAyNzIwMSwgMjcyMDcsIDI3MjEzLCAyNzIxOSwgCi0gICAgMjcyMjUsIDI3MjMxLCAyNzIzNywgMjcyNDMsIDI3MjQ5LCAyNzI1NCwgMjcyNTksIDI3MjY0LCAyNzI3MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjcyNzYsIDI3Mjg1LCAyNzI5NCwgMjczMDIsIDI3MzEwLCAyNzMyMCwgMjczMjgsIDI3MzM3LCAKLSAgICAyNzM0NCwgMjczNTEsIDI3MzU4LCAyNzM2NiwgMjczNzQsIDI3MzgyLCAyNzM5MCwgMjczOTgsIDI3NDA2LCAyNzQxNCwgCi0gICAgMjc0MjIsIDI3NDI5LCAyNzQzNywgMjc0NDUsIDI3NDUzLCAyNzQ2MSwgMjc0NjksIDI3NDc5LCAyNzQ4OSwgMjc0OTksIAotICAgIDI3NTA5LCAyNzUxOSwgMjc1MjksIDI3NTM5LCAyNzU0OSwgMjc1NTksIDI3NTY5LCAyNzU3OSwgMjc1ODksIDI3NTk5LCAKLSAgICAyNzYwOSwgMjc2MTcsIDI3NjI1LCAyNzYzNSwgMjc2NDMsIDAsIDAsIDAsIDAsIDAsIDI3NjUzLCAyNzY1NywgMjc2NjEsIAotICAgIDI3NjY1LCAyNzY2OSwgMjc2NzMsIDI3Njc3LCAyNzY4MSwgMjc2ODUsIDI3Njg5LCAyNzY5MywgMjc2OTcsIDI3NzAxLCAKLSAgICAyNzcwNSwgMjc3MDksIDI3NzEzLCAyNzcxNywgMjc3MjEsIDI3NzI1LCAyNzcyOSwgMjc3MzMsIDI3NzM3LCAyNzc0MSwgCi0gICAgMjc3NDUsIDI3NzUxLCAyNzc1NSwgMjc3NjEsIDI3NzY1LCAyNzc3MSwgMjc3NzUsIDI3NzgxLCAyNzc4NSwgMjc3ODksIAotICAgIDI3NzkzLCAyNzc5NywgMjc4MDEsIDI3ODA1LCAyNzgxMSwgMjc4MTcsIDI3ODIzLCAyNzgyOSwgMjc4MzQsIDI3ODM5LCAKLSAgICAyNzg0NCwgMjc4NTAsIDI3ODU2LCAyNzg2MiwgMjc4NjgsIDI3ODc1LCAyNzg4MSwgMjc4ODYsIDI3ODkxLCAyNzg5NSwgCi0gICAgMjc4OTksIDI3OTAzLCAyNzkwNywgMjc5MTEsIDI3OTE1LCAyNzkxOSwgMjc5MjUsIDI3OTMxLCAyNzkzNywgMjc5NDIsIAotICAgIDI3OTQ5LCAyNzk1NCwgMjc5NTksIDI3OTY1LCAyNzk3MCwgMjc5NzcsIDI3OTg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNzk5MCwgMjc5OTUsIDI3OTk4LCAyODAwMiwgMjgwMDYsIDI4MDEwLCAyODAxNCwgMjgwMTgsIDI4MDIyLCAKLSAgICAyODAyNiwgMjgwMzAsIDI4MDM0LCAyODAzOCwgMjgwNDIsIDI4MDQ2LCAyODA1MCwgMjgwNTMsIDI4MDU2LCAyODA2MCwgCi0gICAgMjgwNjQsIDI4MDY4LCAyODA3MSwgMjgwNzQsIDI4MDc3LCAyODA4MSwgMjgwODUsIDI4MDg5LCAyODA5MywgMjgwOTcsIDAsIAotICAgIDAsIDAsIDI4MTAwLCAyODEwNCwgMjgxMDgsIDI4MTEyLCAyODExNywgMjgxMjIsIDI4MTI3LCAyODEzMiwgMjgxMzYsIAotICAgIDI4MTQwLCAyODE0NSwgMjgxNTAsIDAsIDAsIDAsIDAsIDI4MTU2LCAyODE2MCwgMjgxNjUsIDI4MTcwLCAyODE3NSwgCi0gICAgMjgxNzksIDI4MTgzLCAyODE4NywgMjgxOTEsIDI4MTk2LCAyODIwMCwgMjgyMDQsIDAsIDAsIDAsIDAsIDI4MjA4LCAwLCAwLCAKLSAgICAwLCAyODIxMiwgMjgyMTYsIDI4MjIwLCAyODIyNCwgMjgyMjcsIDI4MjMwLCAyODIzMywgMjgyMzYsIDI4MjM5LCAyODI0MiwgCi0gICAgMjgyNDUsIDI4MjQ4LCAyODI1MSwgMjgyNTYsIDI4MjYyLCAyODI2OCwgMjgyNzQsIDI4MjgwLCAyODI4NSwgMjgyOTEsIAotICAgIDI4Mjk3LCAyODMwMywgMjgzMDgsIDI4MzE0LCAyODMxOSwgMjgzMjUsIDI4MzMxLCAyODMzNiwgMjgzNDIsIDI4MzQ4LCAKLSAgICAyODM1NCwgMjgzNTksIDI4MzY0LCAyODM2OSwgMjgzNzUsIDI4MzgxLCAyODM4NiwgMjgzOTIsIDI4Mzk3LCAyODQwMywgCi0gICAgMjg0MDgsIDI4NDE0LCAwLCAwLCAyODQyMCwgMjg0MjYsIDI4NDMyLCAyODQzOCwgMjg0NDQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDI4NDUwLCAyODQ1NywgMjg0NjQsIDI4NDcwLCAyODQ3NywgMjg0ODQsIDI4NDkwLCAyODQ5NywgCi0gICAgMjg1MDQsIDI4NTExLCAyODUxOCwgMjg1MjQsIDI4NTMxLCAyODUzOCwgMjg1NDQsIDI4NTUxLCAyODU1OCwgMjg1NjQsIAotICAgIDI4NTcxLCAyODU3OCwgMjg1ODQsIDI4NTkwLCAyODU5NywgMjg2MDMsIDI4NjA5LCAyODYxNiwgMjg2MjIsIDI4NjI5LCAKLSAgICAyODYzNiwgMjg2NDMsIDI4NjUwLCAyODY1NywgMjg2NjQsIDI4NjcwLCAyODY3NywgMjg2ODQsIDI4NjkwLCAyODY5NywgCi0gICAgMjg3MDQsIDI4NzExLCAyODcxOCwgMjg3MjUsIDI4NzMyLCAyODczOSwgMCwgMCwgMCwgMCwgMjg3NDYsIDI4NzU0LCAKLSAgICAyODc2MSwgMjg3NjgsIDI4Nzc0LCAyODc4MSwgMjg3ODcsIDI4Nzk0LCAyODgwMCwgMjg4MDcsIDI4ODE0LCAyODgyMSwgCi0gICAgMjg4MjgsIDI4ODM1LCAyODg0MiwgMjg4NDksIDI4ODU2LCAyODg2MywgMjg4NzAsIDI4ODc3LCAyODg4MywgMjg4ODksIAotICAgIDI4ODk2LCAyODkwMywgMjg5MTAsIDI4OTE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyODkyMiwgMjg5MjgsIDI4OTMzLCAyODkzOCwgCi0gICAgMjg5NDMsIDI4OTQ4LCAyODk1MywgMjg5NTgsIDI4OTYzLCAyODk2OCwgMjg5NzMsIDAsIDAsIDAsIDI4OTc5LCAyODk4NSwgCi0gICAgMjg5OTEsIDI4OTk1LCAyOTAwMSwgMjkwMDcsIDI5MDEzLCAyOTAxOSwgMjkwMjUsIDI5MDMxLCAyOTAzNywgMjkwNDMsIAotICAgIDI5MDQ5LCAyOTA1NSwgMjkwNjEsIDI5MDY3LCAyOTA3MywgMjkwNzksIDI5MDg1LCAyOTA4OSwgMjkwOTUsIDI5MTAxLCAKLSAgICAyOTEwNywgMjkxMTMsIDI5MTE5LCAyOTEyNSwgMjkxMzEsIDI5MTM3LCAyOTE0MywgMjkxNDksIDI5MTU1LCAyOTE2MSwgCi0gICAgMjkxNjcsIDI5MTczLCAyOTE3OSwgMjkxODMsIDI5MTg4LCAyOTE5MywgMjkxOTgsIDI5MjAyLCAyOTIwNywgMjkyMTEsIAotICAgIDI5MjE2LCAyOTIyMSwgMjkyMjYsIDI5MjMwLCAyOTIzNSwgMjkyNDAsIDI5MjQ1LCAyOTI1MCwgMjkyNTUsIDI5MjU5LCAKLSAgICAyOTI2MywgMjkyNjgsIDI5MjczLCAyOTI3OCwgMjkyODIsIDI5Mjg2LCAyOTI5MSwgMjkyOTYsIDI5MzAxLCAyOTMwNiwgMCwgCi0gICAgMCwgMjkzMTIsIDI5MzE2LCAyOTMyMywgMjkzMjgsIDI5MzM0LCAyOTM0MCwgMjkzNDUsIDI5MzUxLCAyOTM1NywgMjkzNjIsIAotICAgIDI5MzY4LCAyOTM3NCwgMjkzODAsIDI5Mzg2LCAyOTM5MiwgMjkzOTcsIDI5NDAyLCAyOTQwOCwgMjk0MTMsIDI5NDE5LCAKLSAgICAyOTQyNCwgMjk0MzAsIDI5NDM2LCAyOTQ0MiwgMjk0NDgsIDI5NDUyLCAyOTQ1NywgMjk0NjIsIDI5NDY4LCAyOTQ3NCwgCi0gICAgMjk0NzksIDI5NDg1LCAyOTQ5MSwgMjk0OTUsIDI5NTAwLCAyOTUwNSwgMjk1MDksIDI5NTE0LCAyOTUxOSwgMjk1MjQsIAotICAgIDI5NTI5LCAyOTUzNSwgMjk1NDEsIDI5NTQ3LCAyOTU1MiwgMjk1NTcsIDI5NTYxLCAyOTU2NiwgMjk1NzAsIDI5NTc1LCAKLSAgICAyOTU3OSwgMjk1ODQsIDI5NTg5LCAyOTU5NCwgMjk1OTksIDI5NjA2LCAyOTYxMywgMjk2MjEsIDI5NjMyLCAyOTY0MSwgCi0gICAgMjk2NDksIDI5NjU2LCAyOTY2NywgMjk2NzMsIDI5NjgwLCAwLCAyOTY4NywgMjk2OTIsIDI5Njk3LCAyOTcwNSwgMjk3MTEsIAotICAgIDI5NzE5LCAyOTcyNCwgMjk3MzAsIDI5NzM2LCAyOTc0MiwgMjk3NDcsIDI5NzUzLCAyOTc1OCwgMjk3NjUsIDI5NzcxLCAKLSAgICAyOTc3NiwgMjk3ODIsIDI5Nzg4LCAyOTc5NCwgMjk4MDEsIDI5ODA4LCAyOTgxNSwgMjk4MjAsIDI5ODI1LCAyOTgzMiwgCi0gICAgMjk4MzksIDI5ODQ2LCAyOTg1MywgMjk4NjAsIDAsIDAsIDI5ODY3LCAyOTg3NCwgMjk4ODEsIDI5ODg3LCAyOTg5MywgCi0gICAgMjk4OTksIDI5OTA1LCAyOTkxMSwgMjk5MTcsIDI5OTIzLCAyOTkyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMjk5MzUsIDI5OTQxLCAKLSAgICAyOTk0NiwgMjk5NTEsIDI5OTU2LCAyOTk2MSwgMjk5NjYsIDI5OTcxLCAyOTk3NiwgMjk5ODEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDI5OTg2LCAyOTk5MSwgMjk5OTYsIDMwMDAxLCAzMDAwNiwgMzAwMTEsIDMwMDE2LCAzMDAyNSwgMzAwMzIsIDMwMDM3LCAKLSAgICAzMDA0MiwgMzAwNDcsIDMwMDUyLCAzMDA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAwNjIsIDMwMDY4LCAKLSAgICAzMDA3NCwgMzAwNzgsIDMwMDgyLCAzMDA4NiwgMzAwOTAsIDMwMDk2LCAzMDEwMCwgMzAxMDYsIDMwMTEwLCAzMDExNiwgCi0gICAgMzAxMjIsIDMwMTMwLCAzMDEzNiwgMzAxNDQsIDMwMTQ4LCAzMDE1MiwgMzAxNTYsIDMwMTYyLCAzMDE2NSwgMzAxNzEsIAotICAgIDMwMTc1LCAzMDE4MSwgMzAxODUsIDMwMTg5LCAzMDE5NSwgMzAxOTksIDMwMjA1LCAzMDIwOSwgMzAyMTUsIDMwMjIzLCAKLSAgICAzMDIzMSwgMzAyMzksIDMwMjQ1LCAzMDI0OSwgMzAyNTUsIDMwMjU5LCAzMDI2NSwgMzAyNjgsIDMwMjcxLCAzMDI3NywgCi0gICAgMzAyODEsIDMwMjg3LCAzMDI5MCwgMzAyOTMsIDMwMjk2LCAzMDMwMCwgMzAzMDQsIDMwMzEwLCAzMDMxNiwgMzAzMjAsIAotICAgIDMwMzIzLCAzMDMyNywgMzAzMzIsIDMwMzM3LCAzMDM0NCwgMzAzNDksIDMwMzU2LCAzMDM2MywgMzAzNzIsIDMwMzc5LCAKLSAgICAzMDM4OCwgMzAzOTMsIDMwNDAwLCAzMDQwNywgMzA0MTYsIDMwNDIxLCAzMDQyOCwgMzA0MzMsIDMwNDM5LCAzMDQ0NSwgCi0gICAgMzA0NTEsIDMwNDU3LCAzMDQ2MywgMzA0NjksIDAsIDAsIDAsIDAsIDMwNDc1LCAzMDQ3OSwgMzA0ODIsIDMwNDg1LCAKLSAgICAzMDQ4OCwgMzA0OTEsIDMwNDk0LCAzMDQ5NywgMzA1MDAsIDMwNTAzLCAzMDUwNiwgMzA1MDksIDMwNTEyLCAzMDUxNSwgCi0gICAgMzA1MjAsIDMwNTI1LCAzMDUzMCwgMzA1MzMsIDMwNTM4LCAzMDU0MywgMzA1NDgsIDMwNTUzLCAzMDU2MCwgMzA1NjUsIAotICAgIDMwNTcwLCAzMDU3NSwgMzA1ODAsIDMwNTg3LCAzMDU5MywgMzA1OTksIDMwNjA1LCAzMDYxMSwgMzA2MTcsIDMwNjI2LCAKLSAgICAzMDYzNSwgMzA2NDEsIDMwNjQ3LCAzMDY1NiwgMzA2NjUsIDMwNjc0LCAzMDY4MywgMzA2OTIsIDMwNzAxLCAzMDcxMCwgCi0gICAgMzA3MTksIDAsIDAsIDAsIDMwNzI4LCAzMDczMywgMzA3MzgsIDMwNzQzLCAzMDc0NywgMzA3NTEsIDMwNzU1LCAzMDc2MCwgCi0gICAgMzA3NjQsIDMwNzY4LCAzMDc3MywgMzA3NzcsIDMwNzgyLCAzMDc4NywgMzA3OTIsIDMwNzk3LCAzMDgwMiwgMzA4MDcsIAotICAgIDMwODEyLCAzMDgxNywgMzA4MjIsIDMwODI2LCAzMDgzMCwgMzA4MzUsIDMwODQwLCAzMDg0NSwgMzA4NDksIDMwODUzLCAKLSAgICAzMDg1NywgMzA4NjIsIDMwODY3LCAzMDg3MiwgMzA4NzcsIDMwODgxLCAzMDg4OCwgMzA4OTUsIDMwOTAyLCAzMDkwOCwgCi0gICAgMzA5MTQsIDMwOTIwLCAzMDkyNiwgMzA5MzIsIDMwOTM4LCAwLCAwLCAwLCAzMDk0MywgMzA5NDgsIDMwOTUzLCAzMDk1OCwgCi0gICAgMzA5NjIsIDMwOTY2LCAzMDk3MCwgMzA5NzQsIDMwOTc4LCAzMDk4MiwgMzA5ODYsIDMwOTkwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzMDk5NCwgMzA5OTgsIDMxMDA0LCAzMTAwOCwgMzEwMTQsIDMxMDIwLCAzMTAyNSwgMzEwMzIsIDMxMDM2LCAzMTA0MiwgCi0gICAgMzEwNDYsIDMxMDUyLCAzMTA1NywgMzEwNjQsIDMxMDcxLCAzMTA3NiwgMzEwODMsIDMxMDg4LCAzMTA5MywgMzEwOTcsIAotICAgIDMxMTAzLCAzMTEwNywgMzExMTMsIDMxMTIwLCAzMTEyNywgMzExMzIsIDMxMTM5LCAzMTE0NiwgMzExNTAsIDMxMTU2LCAKLSAgICAzMTE2MSwgMzExNjYsIDMxMTczLCAzMTE3OCwgMzExODMsIDMxMTg4LCAzMTE5MywgMzExOTcsIDMxMjAxLCAzMTIwNiwgCi0gICAgMzEyMTEsIDMxMjE4LCAzMTIyNCwgMzEyMjksIDMxMjM2LCAzMTI0MSwgMzEyNDgsIDMxMjUzLCAzMTI2MywgMzEyNzAsIAotICAgIDMxMjc3LCAzMTI4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzEyODUsIDMxMjk0LCAzMTMwMSwgMzEzMDgsIDMxMzE1LCAKLSAgICAzMTMxOCwgMzEzMjIsIDMxMzI2LCAzMTMzMCwgMzEzMzQsIDMxMzM4LCAzMTM0MiwgMzEzNDYsIDMxMzUwLCAzMTM1NCwgCi0gICAgMzEzNTgsIDMxMzYyLCAzMTM2NiwgMzEzNjksIDMxMzcyLCAzMTM3NiwgMzEzODAsIDMxMzg0LCAzMTM4OCwgMzEzOTIsIAotICAgIDMxMzk2LCAzMTM5OSwgMzE0MDMsIDMxNDA3LCAzMTQxMSwgMzE0MTUsIDMxNDE4LCAzMTQyMSwgMzE0MjUsIDMxNDI4LCAKLSAgICAzMTQzMiwgMzE0MzYsIDMxNDQwLCAzMTQ0NCwgMzE0NDgsIDMxNDUxLCAzMTQ1NiwgMzE0NjEsIDMxNDY2LCAzMTQ3MCwgCi0gICAgMzE0NzQsIDMxNDc5LCAzMTQ4MywgMzE0ODgsIDMxNDkyLCAzMTQ5OCwgMzE1MDMsIDMxNTA4LCAzMTUxMywgMzE1MTksIAotICAgIDMxNTI0LCAzMTUzMCwgMzE1MzYsIDMxNTQyLCAzMTU0NiwgMCwgMCwgMCwgMzE1NTAsIDMxNTU1LCAzMTU2NCwgMzE1NjksIAotICAgIDMxNTc2LCAzMTU4MSwgMzE1ODUsIDMxNTg4LCAzMTU5MSwgMzE1OTQsIDMxNTk3LCAzMTYwMCwgMzE2MDMsIDMxNjA2LCAKLSAgICAzMTYwOSwgMCwgMCwgMCwgMzE2MTIsIDMxNjE2LCAzMTYyMCwgMzE2MjQsIDMxNjMxLCAzMTYzNywgMzE2NDMsIDMxNjQ5LCAKLSAgICAzMTY1NSwgMzE2NjEsIDMxNjY3LCAzMTY3MywgMzE2NzksIDMxNjg1LCAzMTY5MiwgMzE2OTksIDMxNzA2LCAzMTcxMywgCi0gICAgMzE3MjAsIDMxNzI3LCAzMTczNCwgMzE3NDEsIDMxNzQ4LCAzMTc1NSwgMzE3NjIsIDMxNzY5LCAzMTc3NiwgMzE3ODMsIAotICAgIDMxNzkwLCAzMTc5NywgMzE4MDQsIDMxODExLCAzMTgxOCwgMzE4MjUsIDMxODMyLCAzMTgzOSwgMzE4NDYsIDMxODUzLCAKLSAgICAzMTg2MCwgMzE4NjcsIDMxODc0LCAzMTg4MSwgMzE4ODgsIDMxODk1LCAzMTkwMywgMzE5MTEsIDMxOTE5LCAzMTkyNSwgCi0gICAgMzE5MzEsIDMxOTM3LCAzMTk0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5NTQsIDMxOTU5LCAzMTk2NCwgMzE5NjksIAotICAgIDMxOTc0LCAzMTk4MywgMzE5OTQsIDMyMDAzLCAzMjAxNCwgMzIwMjAsIDMyMDMzLCAzMjAzOSwgMzIwNDYsIDMyMDUzLCAKLSAgICAzMjA1OCwgMzIwNjQsIDMyMDcwLCAzMjA4MSwgMzIwOTAsIDMyMDk3LCAzMjEwNCwgMzIxMTMsIDMyMTIwLCAzMjEyOSwgCi0gICAgMzIxMzksIDMyMTQ5LCAzMjE1NiwgMzIxNjMsIDMyMTcwLCAzMjE4MCwgMzIxODUsIDMyMTkzLCAzMjE5OSwgMzIyMDcsIAotICAgIDMyMjE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjIyMSwgMzIyMjYsIDMyMjMyLCAzMjIzOSwgCi0gICAgMzIyNDcsIDMyMjUzLCAzMjI1OSwgMzIyNjUsIDMyMjcwLCAzMjI3OCwgMzIyODQsIDMyMjkwLCAzMjI5NiwgMzIzMDQsIAotICAgIDMyMzA5LCAzMjMxNiwgMzIzMjEsIDMyMzI4LCAzMjMzNCwgMzIzNDIsIDMyMzUwLCAzMjM1NywgMzIzNjMsIDMyMzcwLCAKLSAgICAzMjM3NywgMzIzODMsIDMyMzkwLCAzMjM5NywgMzI0MDMsIDMyNDA4LCAzMjQxNCwgMzI0MjIsIDMyNDMwLCAzMjQzNiwgCi0gICAgMzI0NDIsIDMyNDQ4LCAzMjQ1NCwgMzI0NjIsIDMyNDY2LCAzMjQ3MiwgMzI0NzgsIDMyNDg0LCAzMjQ5MCwgMzI0OTYsIAotICAgIDMyNTAyLCAzMjUwNiwgMzI1MTEsIDMyNTE2LCAzMjUyMywgMzI1MjgsIDMyNTMyLCAzMjUzOCwgMzI1NDMsIDMyNTQ4LCAKLSAgICAzMjU1MiwgMzI1NTcsIDMyNTYyLCAzMjU2NiwgMzI1NzAsIDMyNTc0LCAzMjU4MCwgMzI1ODQsIDMyNTg5LCAzMjU5NCwgCi0gICAgMzI1OTgsIDMyNjAzLCAzMjYwNywgMzI2MTIsIDMyNjE2LCAzMjYyMiwgMzI2MjcsIDMyNjM0LCAzMjYzOSwgMzI2NDQsIAotICAgIDMyNjQ4LCAzMjY1MywgMzI2NTksIDMyNjY3LCAzMjY3MiwgMzI2NzgsIDMyNjgzLCAzMjY4NywgMzI2OTIsIDMyNjk2LCAKLSAgICAzMjcwMiwgMzI3MDksIDMyNzE2LCAzMjcyMSwgMzI3MjYsIDMyNzMwLCAzMjczNiwgMzI3NDIsIDMyNzQ3LCAzMjc1MiwgCi0gICAgMzI3NTcsIDMyNzYzLCAzMjc2OCwgMzI3NzQsIDMyNzc5LCAzMjc4NSwgMzI3OTEsIDMyNzk3LCAzMjgwNCwgMzI4MTEsIAotICAgIDMyODE4LCAzMjgyNSwgMzI4MzIsIDMyODM5LCAzMjg0NCwgMzI4NTMsIDMyODYzLCAzMjg3MywgMzI4ODMsIDMyODkzLCAKLSAgICAzMjkwMywgMzI5MTMsIDMyOTI2LCAzMjkzNiwgMzI5NDYsIDMyOTU2LCAzMjk2MywgMzI5NjgsIDMyOTc1LCAzMjk4MywgCi0gICAgMzI5OTEsIDMyOTk4LCAzMzAwNSwgMzMwMTIsIDMzMDE5LCAzMzAyNywgMzMwMzYsIDMzMDQ1LCAzMzA1NCwgMzMwNjMsIAotICAgIDMzMDcyLCAzMzA4MSwgMzMwOTAsIDMzMDk5LCAzMzEwOCwgMzMxMTcsIDMzMTI2LCAzMzEzNSwgMzMxNDQsIDMzMTUzLCAKLSAgICAzMzE2MSwgMzMxNzAsIDMzMTgxLCAzMzE4OSwgMzMxOTksIDMzMjExLCAzMzIyMCwgMzMyMjksIDMzMjM5LCAzMzI0OCwgCi0gICAgMzMyNTYsIDMzMjY1LCAzMzI3MiwgMzMyNzcsIDMzMjg1LCAzMzI5MCwgMzMyOTgsIDMzMzAzLCAzMzMxMiwgMzMzMTgsIAotICAgIDMzMzI1LCAzMzMzMiwgMzMzMzcsIDMzMzQyLCAzMzM1MCwgMzMzNTgsIDMzMzY3LCAzMzM3NiwgMzMzODEsIDMzMzg4LCAKLSAgICAzMzM5OSwgMzM0MDcsIDMzNDE2LCAzMzQyMSwgMzM0MjcsIDMzNDMyLCAzMzQzOSwgMzM0NDQsIDMzNDUzLCAzMzQ1OCwgCi0gICAgMzM0NjMsIDMzNDY4LCAzMzQ3NSwgMzM0ODIsIDMzNDg3LCAzMzQ5NiwgMzM1MDQsIDMzNTA5LCAzMzUxNCwgMzM1MjEsIAotICAgIDMzNTI4LCAzMzUzMiwgMzM1MzYsIDMzNTM5LCAzMzU0MiwgMzM1NDUsIDMzNTQ4LCAzMzU1MSwgMzM1NTQsIDMzNTYxLCAKLSAgICAzMzU2NCwgMzM1NjcsIDMzNTcyLCAzMzU3NiwgMzM1ODAsIDMzNTg0LCAzMzU4OCwgMzM1OTIsIDMzNjAyLCAzMzYwOCwgCi0gICAgMzM2MTQsIDMzNjIwLCAzMzYyOCwgMzM2MzYsIDMzNjQyLCAzMzY0OCwgMzM2NTUsIDMzNjYxLCAzMzY2NiwgMzM2NzIsIAotICAgIDMzNjc4LCAzMzY4MywgMzM2ODksIDMzNjk1LCAzMzcwMywgMzM3MDgsIDMzNzE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMzcyMCwgMzM3MjcsIDMzNzM0LCAzMzczOSwgMzM3NDgsIAotICAgIDMzNzU2LCAzMzc2NCwgMzM3NzEsIDMzNzc4LCAzMzc4NSwgMzM3OTIsIDMzODAwLCAzMzgwOCwgMzM4MTgsIDMzODI4LCAKLSAgICAzMzgzNiwgMzM4NDQsIDMzODUyLCAzMzg2MCwgMzM4NjksIDMzODc4LCAzMzg4NiwgMzM4OTQsIDMzOTAzLCAzMzkxMiwgCi0gICAgMzM5MjIsIDMzOTMyLCAzMzk0MSwgMzM5NTAsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgyLCAzMzk5MiwgMzQwMDIsIAotICAgIDM0MDEwLCAzNDAxOCwgMzQwMjYsIDM0MDM0LCAzNDA0MiwgMzQwNTAsIDM0MDU4LCAzNDA2NiwgMzQwNzQsIDM0MDgyLCAKLSAgICAzNDA5MCwgMzQwOTgsIDM0MTA3LCAzNDExNiwgMzQxMjUsIDM0MTM0LCAzNDE0NCwgMzQxNTQsIDM0MTYxLCAzNDE2OCwgCi0gICAgMzQxNzYsIDM0MTg0LCAzNDE5MywgMzQyMDIsIDM0MjEwLCAzNDIxOCwgMzQyMzAsIDM0MjQyLCAzNDI1MSwgMzQyNjAsIAotICAgIDM0MjY5LCAzNDI3OCwgMzQyODUsIDM0MjkyLCAzNDMwMCwgMzQzMDgsIDM0MzE2LCAzNDMyNCwgMzQzMzIsIDM0MzQwLCAKLSAgICAzNDM0OCwgMzQzNTYsIDM0MzY1LCAzNDM3NCwgMzQzODMsIDM0MzkyLCAzNDQwMSwgMzQ0MTAsIDM0NDIwLCAzNDQzMCwgCi0gICAgMzQ0NDAsIDM0NDUwLCAzNDQ1OSwgMzQ0NjgsIDM0NDc1LCAzNDQ4MiwgMzQ0OTAsIDM0NDk4LCAzNDUwNiwgMzQ1MTQsIAotICAgIDM0NTIyLCAzNDUzMCwgMzQ1NDIsIDM0NTU0LCAzNDU2MywgMzQ1NzIsIDM0NTgwLCAzNDU4OCwgMzQ1OTYsIDM0NjA0LCAKLSAgICAzNDYxNSwgMzQ2MjYsIDM0NjM3LCAzNDY0OCwgMzQ2NjAsIDM0NjcyLCAzNDY4MCwgMzQ2ODgsIDM0Njk2LCAzNDcwNCwgCi0gICAgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ4LCAzNDc1NiwgMzQ3NjQsIDM0NzcyLCAzNDc4MCwgMzQ3ODgsIAotICAgIDM0Nzk3LCAzNDgwNiwgMzQ4MTYsIDM0ODI2LCAzNDgzNCwgMzQ4NDIsIDM0ODUwLCAzNDg1OCwgMzQ4NjYsIDM0ODc0LCAKLSAgICAzNDg4MSwgMzQ4ODgsIDM0ODk2LCAzNDkwNCwgMzQ5MTIsIDM0OTIwLCAzNDkyOCwgMzQ5MzYsIDM0OTQ0LCAzNDk1MiwgCi0gICAgMzQ5NjAsIDM0OTY4LCAzNDk3NiwgMzQ5ODQsIDM0OTkyLCAzNTAwMCwgMzUwMDgsIDM1MDE2LCAzNTAyNSwgMzUwMzQsIAotICAgIDM1MDQzLCAzNTA1MSwgMzUwNjAsIDM1MDY5LCAzNTA3OCwgMzUwODcsIDM1MDk3LCAzNTEwNiwgMzUxMTIsIDM1MTE3LCAKLSAgICAzNTEyNCwgMzUxMzEsIDM1MTM5LCAzNTE0NywgMzUxNTYsIDM1MTY1LCAzNTE3NSwgMzUxODUsIDM1MTk2LCAzNTIwNywgCi0gICAgMzUyMTcsIDM1MjI3LCAzNTIzNywgMzUyNDcsIDM1MjU2LCAzNTI2NSwgMzUyNzUsIDM1Mjg1LCAzNTI5NiwgMzUzMDcsIAotICAgIDM1MzE3LCAzNTMyNywgMzUzMzcsIDM1MzQ3LCAzNTM1NCwgMzUzNjEsIDM1MzY5LCAzNTM3NywgMzUzODQsIDM1MzkxLCAKLSAgICAzNTQwMCwgMzU0MDksIDM1NDE5LCAzNTQyOSwgMzU0NDAsIDM1NDUxLCAzNTQ2MSwgMzU0NzEsIDM1NDgxLCAzNTQ5MSwgCi0gICAgMzU1MDAsIDM1NTA5LCAzNTUxNywgMzU1MjUsIDM1NTMyLCAzNTUzOSwgMzU1NDcsIDM1NTU1LCAzNTU2NCwgMzU1NzMsIAotICAgIDM1NTgzLCAzNTU5MywgMzU2MDQsIDM1NjE1LCAzNTYyNSwgMzU2MzUsIDM1NjQ1LCAzNTY1NSwgMzU2NjQsIDM1NjczLCAKLSAgICAzNTY4MywgMzU2OTMsIDM1NzA0LCAzNTcxNSwgMzU3MjUsIDM1NzM1LCAzNTc0NSwgMzU3NTUsIDM1NzYyLCAzNTc2OSwgCi0gICAgMzU3NzcsIDM1Nzg1LCAzNTc5NCwgMzU4MDMsIDM1ODEzLCAzNTgyMywgMzU4MzQsIDM1ODQ1LCAzNTg1NSwgMzU4NjUsIAotICAgIDM1ODc1LCAzNTg4NSwgMzU4OTMsIDM1OTAxLCAzNTkwOSwgMzU5MTcsIDM1OTI2LCAzNTkzNSwgMzU5NDMsIDM1OTUxLCAKLSAgICAzNTk1OCwgMzU5NjUsIDM1OTcyLCAzNTk3OSwgMzU5ODcsIDM1OTk1LCAzNjAwMywgMzYwMTEsIDM2MDIyLCAzNjAzMiwgCi0gICAgMzYwNDMsIDM2MDUzLCAzNjA2NCwgMzYwNzQsIDM2MDgyLCAzNjA5MCwgMzYxMDEsIDM2MTExLCAzNjEyMiwgMzYxMzIsIAotICAgIDM2MTQzLCAzNjE1MywgMzYxNjEsIDM2MTY5LCAzNjE4MCwgMzYxOTAsIDM2MjAxLCAwLCAwLCAzNjIxMSwgMzYyMTksIAotICAgIDM2MjI3LCAzNjIzOCwgMzYyNDgsIDM2MjU5LCAwLCAwLCAzNjI2OSwgMzYyNzcsIDM2Mjg1LCAzNjI5NiwgMzYzMDYsIAotICAgIDM2MzE3LCAzNjMyNywgMzYzMzgsIDM2MzQ4LCAzNjM1NiwgMzYzNjQsIDM2Mzc1LCAzNjM4NSwgMzYzOTYsIDM2NDA2LCAKLSAgICAzNjQxNywgMzY0MjcsIDM2NDM1LCAzNjQ0MywgMzY0NTQsIDM2NDY0LCAzNjQ3NSwgMzY0ODUsIDM2NDk2LCAzNjUwNiwgCi0gICAgMzY1MTQsIDM2NTIyLCAzNjUzMywgMzY1NDMsIDM2NTU0LCAzNjU2NCwgMzY1NzUsIDM2NTg1LCAzNjU5MywgMzY2MDEsIAotICAgIDM2NjEyLCAzNjYyMiwgMzY2MzMsIDAsIDAsIDM2NjQzLCAzNjY1MSwgMzY2NTksIDM2NjcwLCAzNjY4MCwgMzY2OTEsIDAsIAotICAgIDAsIDM2NzAxLCAzNjcwOSwgMzY3MTcsIDM2NzI4LCAzNjczOCwgMzY3NDksIDM2NzU5LCAzNjc3MCwgMCwgMzY3ODAsIDAsIAotICAgIDM2Nzg4LCAwLCAzNjc5OCwgMCwgMzY4MDgsIDM2ODE4LCAzNjgyNiwgMzY4MzQsIDM2ODQ1LCAzNjg1NSwgMzY4NjYsIAotICAgIDM2ODc2LCAzNjg4NywgMzY4OTcsIDM2OTA1LCAzNjkxMywgMzY5MjQsIDM2OTM0LCAzNjk0NSwgMzY5NTUsIDM2OTY2LCAKLSAgICAzNjk3NiwgMzY5ODQsIDM2OTkyLCAzNzAwMCwgMzcwMDgsIDM3MDE2LCAzNzAyNCwgMzcwMzIsIDM3MDQwLCAzNzA0OCwgCi0gICAgMzcwNTYsIDM3MDY0LCAzNzA3MiwgMzcwODAsIDAsIDAsIDM3MDg4LCAzNzA5OSwgMzcxMDksIDM3MTIzLCAzNzEzNiwgCi0gICAgMzcxNTAsIDM3MTYzLCAzNzE3NywgMzcxOTAsIDM3MjAxLCAzNzIxMSwgMzcyMjUsIDM3MjM4LCAzNzI1MiwgMzcyNjUsIAotICAgIDM3Mjc5LCAzNzI5MiwgMzczMDMsIDM3MzEzLCAzNzMyNywgMzczNDAsIDM3MzU0LCAzNzM2NywgMzczODEsIDM3Mzk0LCAKLSAgICAzNzQwNSwgMzc0MTUsIDM3NDI5LCAzNzQ0MiwgMzc0NTYsIDM3NDY5LCAzNzQ4MywgMzc0OTYsIDM3NTA3LCAzNzUxNywgCi0gICAgMzc1MzEsIDM3NTQ0LCAzNzU1OCwgMzc1NzEsIDM3NTg1LCAzNzU5OCwgMzc2MDksIDM3NjE5LCAzNzYzMywgMzc2NDYsIAotICAgIDM3NjYwLCAzNzY3MywgMzc2ODcsIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI3LCAzNzczNSwgMCwgMzc3NDYsIDM3NzU0LCAKLSAgICAzNzc2NSwgMzc3NzMsIDM3NzgxLCAzNzc4OSwgMzc3OTcsIDM3ODA1LCAzNzgwOCwgMzc4MTEsIDM3ODE0LCAzNzgxNywgCi0gICAgMzc4MjMsIDM3ODM0LCAzNzg0MiwgMCwgMzc4NTMsIDM3ODYxLCAzNzg3MiwgMzc4ODAsIDM3ODg4LCAzNzg5NiwgMzc5MDQsIAotICAgIDM3OTEyLCAzNzkxOCwgMzc5MjQsIDM3OTMwLCAzNzkzOCwgMzc5NDYsIDM3OTU3LCAwLCAwLCAzNzk2OCwgMzc5NzYsIAotICAgIDM3OTg3LCAzNzk5NSwgMzgwMDMsIDM4MDExLCAwLCAzODAxOSwgMzgwMjQsIDM4MDI5LCAzODAzNCwgMzgwNDIsIDM4MDUwLCAKLSAgICAzODA2MSwgMzgwNzIsIDM4MDgwLCAzODA4OCwgMzgwOTYsIDM4MTA3LCAzODExNSwgMzgxMjMsIDM4MTMxLCAzODEzOSwgCi0gICAgMzgxNDcsIDM4MTUzLCAzODE1OSwgMCwgMCwgMzgxNjIsIDM4MTczLCAzODE4MSwgMCwgMzgxOTIsIDM4MjAwLCAzODIxMSwgCi0gICAgMzgyMTksIDM4MjI3LCAzODIzNSwgMzgyNDMsIDM4MjUxLCAzODI1NCwgMCwgMzgyNTcsIDM4MjYxLCAzODI2NSwgMzgyNjksIAotICAgIDM4MjczLCAzODI3NywgMzgyODEsIDM4Mjg1LCAzODI4OSwgMzgyOTMsIDM4Mjk3LCAzODMwMSwgMzgzMDcsIDM4MzEzLCAKLSAgICAzODMxOSwgMzgzMjIsIDM4MzI1LCAzODMyNywgMzgzMzEsIDM4MzM1LCAzODMzOSwgMzgzNDMsIDM4MzQ1LCAzODM0OSwgCi0gICAgMzgzNTMsIDM4MzU5LCAzODM2NSwgMzgzNzIsIDM4Mzc5LCAzODM4NCwgMzgzODksIDM4Mzk1LCAzODQwMSwgMzg0MDMsIAotICAgIDM4NDA2LCAzODQwOCwgMzg0MTIsIDM4NDE2LCAzODQyMCwgMzg0MjMsIDM4NDI3LCAzODQzMSwgMzg0MzUsIDM4NDM5LCAKLSAgICAzODQ0MywgMzg0NDksIDM4NDUzLCAzODQ1NywgMzg0NjMsIDM4NDY4LCAzODQ3NSwgMzg0NzcsIDM4NDgwLCAzODQ4NCwgCi0gICAgMzg0ODgsIDM4NDkzLCAzODQ5OSwgMzg1MDEsIDM4NTEwLCAzODUxOSwgMzg1MjIsIDM4NTI2LCAzODUyOCwgMzg1MzAsIAotICAgIDM4NTMyLCAzODUzNSwgMzg1NDEsIDM4NTQzLCAzODU0NywgMzg1NTEsIDM4NTU4LCAzODU2NSwgMzg1NjksIDM4NTc0LCAKLSAgICAzODU3OSwgMzg1ODQsIDM4NTg5LCAzODU5MywgMzg1OTcsIDM4NjAwLCAzODYwNCwgMzg2MDgsIDM4NjE1LCAzODYyMCwgCi0gICAgMzg2MjQsIDM4NjI4LCAzODYzMywgMzg2MzcsIDM4NjQxLCAzODY0NiwgMzg2NTEsIDM4NjU1LCAzODY1OSwgMzg2NjMsIAotICAgIDM4NjY1LCAzODY3MCwgMzg2NzUsIDM4Njc5LCAzODY4MywgMzg2ODcsIDM4NjkxLCAwLCAwLCAwLCAwLCAwLCAzODY5NSwgCi0gICAgMzg3MDEsIDM4NzA3LCAzODcxNCwgMzg3MjEsIDM4NzI2LCAzODczMSwgMzg3MzUsIDAsIDAsIDM4NzQxLCAzODc0NCwgCi0gICAgMzg3NDcsIDM4NzUwLCAzODc1MywgMzg3NTYsIDM4NzU5LCAzODc2MywgMzg3NjcsIDM4NzcyLCAzODc3NywgMzg3ODIsIAotICAgIDM4Nzg4LCAzODc5MiwgMzg3OTUsIDM4Nzk4LCAzODgwMSwgMzg4MDQsIDM4ODA3LCAzODgxMCwgMzg4MTMsIDM4ODE2LCAKLSAgICAzODgxOSwgMzg4MjMsIDM4ODI3LCAzODgzMiwgMzg4MzcsIDAsIDM4ODQyLCAzODg0OCwgMzg4NTQsIDM4ODYwLCAzODg2NywgCi0gICAgMzg4NzQsIDM4ODgxLCAzODg4OCwgMzg4OTQsIDM4OTAwLCAzODkwNiwgMzg5MTMsIDM4OTE5LCAwLCAwLCAwLCAzODkyNiwgCi0gICAgMzg5MjksIDM4OTMyLCAzODkzNSwgMzg5NDAsIDM4OTQzLCAzODk0NiwgMzg5NDksIDM4OTUyLCAzODk1NSwgMzg5NTgsIAotICAgIDM4OTYyLCAzODk2NSwgMzg5NjgsIDM4OTcxLCAzODk3NCwgMzg5NzcsIDM4OTgyLCAzODk4NSwgMzg5ODgsIDM4OTkxLCAKLSAgICAzODk5NCwgMzg5OTcsIDM5MDAyLCAzOTAwNSwgMzkwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MDEzLCAzOTAxOCwgMzkwMjMsIDM5MDMwLCAzOTAzOCwgMzkwNDMsIAotICAgIDM5MDQ4LCAzOTA1MiwgMzkwNTYsIDM5MDYxLCAzOTA2OCwgMzkwNzUsIDM5MDc5LCAzOTA4NCwgMzkwODksIDM5MDk0LCAKLSAgICAzOTA5OSwgMzkxMDYsIDM5MTExLCAzOTExNiwgMzkxMjEsIDM5MTMwLCAzOTEzNywgMzkxNDQsIDM5MTQ4LCAzOTE1MywgCi0gICAgMzkxNTksIDM5MTY0LCAzOTE3MSwgMzkxNzksIDM5MTg3LCAzOTE5MSwgMzkxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5MTk5LCAzOTIwMywgMzkyMTEsIDM5MjE1LCAzOTIxOSwgMzkyMjQsIDM5MjI4LCAKLSAgICAzOTIzMiwgMzkyMzYsIDM5MjM4LCAzOTI0MiwgMzkyNDYsIDM5MjUwLCAzOTI1NSwgMzkyNTksIDM5MjYzLCAzOTI3MSwgCi0gICAgMzkyNzQsIDM5Mjc4LCAzOTI4MSwgMzkyODQsIDM5MjkwLCAzOTI5MywgMzkyOTYsIDM5MzAyLCAzOTMwNiwgMzkzMTAsIAotICAgIDM5MzE0LCAzOTMxNywgMzkzMjEsIDM5MzI0LCAzOTMyOCwgMzkzMzAsIDM5MzMzLCAzOTMzNiwgMzkzNDAsIDM5MzQyLCAKLSAgICAzOTM0NiwgMzkzNDksIDM5MzUyLCAzOTM1NywgMzkzNjIsIDM5MzY5LCAzOTM3MiwgMzkzNzUsIDM5Mzc5LCAzOTM4NCwgCi0gICAgMzkzODcsIDM5MzkwLCAzOTM5MywgMzkzOTcsIDM5NDAyLCAzOTQwNSwgMzk0MDgsIDM5NDEwLCAzOTQxMywgMzk0MTYsIAotICAgIDM5NDE5LCAzOTQyMywgMzk0MjgsIDM5NDMxLCAzOTQzNSwgMzk0MzksIDM5NDQzLCAzOTQ0NywgMzk0NTIsIDM5NDU4LCAKLSAgICAzOTQ2MywgMzk0NjgsIDM5NDc0LCAzOTQ3OSwgMzk0ODQsIDM5NDg4LCAzOTQ5MiwgMzk0OTcsIDM5NTAxLCAzOTUwNSwgCi0gICAgMzk1MDgsIDM5NTEwLCAzOTUxNSwgMzk1MjEsIDM5NTI4LCAzOTUzNSwgMzk1NDIsIDM5NTQ5LCAzOTU1NiwgMzk1NjMsIAotICAgIDM5NTcwLCAzOTU3NywgMzk1ODUsIDM5NTkyLCAzOTYwMCwgMzk2MDcsIDM5NjE0LCAzOTYyMiwgMzk2MzAsIDM5NjM1LCAKLSAgICAzOTY0MCwgMzk2NDUsIDM5NjUwLCAzOTY1NSwgMzk2NjAsIDM5NjY1LCAzOTY3MCwgMzk2NzUsIDM5NjgwLCAzOTY4NiwgCi0gICAgMzk2OTIsIDM5Njk4LCAzOTcwNCwgMzk3MTEsIDM5NzE5LCAzOTcyNiwgMzk3MzIsIDM5NzM4LCAzOTc0NCwgMzk3NTAsIAotICAgIDM5NzU2LCAzOTc2MiwgMzk3NjgsIDM5Nzc0LCAzOTc4MCwgMzk3ODcsIDM5Nzk0LCAzOTgwMSwgMzk4MDgsIDM5ODE2LCAKLSAgICAzOTgyNSwgMzk4MzMsIDM5ODQ0LCAzOTg1MiwgMzk4NjAsIDM5ODY5LCAzOTg3NiwgMzk4ODUsIDM5ODk0LCAzOTkwMiwgCi0gICAgMzk5MTEsIDAsIDAsIDAsIDAsIDAsIDAsIDM5OTE5LCAzOTkyMSwgMzk5MjQsIDM5OTI2LCAzOTkyOSwgMzk5MzIsIDM5OTM1LCAKLSAgICAzOTk0MCwgMzk5NDUsIDM5OTUwLCAzOTk1NSwgMzk5NTksIDM5OTYzLCAzOTk2NywgMzk5NzEsIDM5OTc2LCAzOTk4MiwgCi0gICAgMzk5ODcsIDM5OTkzLCAzOTk5OCwgNDAwMDMsIDQwMDA4LCA0MDAxNCwgNDAwMTksIDQwMDI1LCA0MDAzMSwgNDAwMzUsIAotICAgIDQwMDM5LCA0MDA0NCwgNDAwNDksIDQwMDU0LCA0MDA1OSwgNDAwNjQsIDQwMDcyLCA0MDA4MCwgNDAwODgsIDQwMDk2LCAKLSAgICA0MDEwMywgNDAxMTEsIDQwMTE4LCA0MDEyNSwgNDAxMzQsIDQwMTQ2LCA0MDE1MywgNDAxNjAsIDQwMTY3LCA0MDE3NCwgCi0gICAgNDAxODIsIDQwMTkwLCA0MDE5NywgNDAyMDQsIDQwMjEyLCA0MDIyMCwgNDAyMjUsIDQwMjMzLCA0MDIzOCwgNDAyNDMsIAotICAgIDQwMjQ5LCA0MDI1NCwgNDAyNjAsIDQwMjY3LCA0MDI3NCwgNDAyNzksIDQwMjg1LCA0MDI5MCwgNDAyOTMsIDQwMjk3LCAKLSAgICA0MDMwMCwgNDAzMDQsIDQwMzA4LCA0MDMxMiwgNDAzMTgsIDQwMzI0LCA0MDMzMCwgNDAzMzYsIDQwMzQwLCA0MDM0NCwgCi0gICAgNDAzNDgsIDQwMzUyLCA0MDM1OCwgNDAzNjQsIDQwMzY4LCA0MDM3MywgNDAzNzcsIDQwMzgyLCA0MDM4NywgNDAzOTIsIAotICAgIDQwMzk1LCA0MDM5OSwgNDA0MDIsIDQwNDA2LCA0MDQxMywgNDA0MjEsIDQwNDMyLCA0MDQ0MywgNDA0NDgsIDQwNDU3LCAKLSAgICA0MDQ2NCwgNDA0NzMsIDQwNDgyLCA0MDQ4NiwgNDA0OTIsIDQwNTAwLCA0MDUwNCwgNDA1MDksIDQwNTE0LCA0MDUyMCwgCi0gICAgNDA1MjYsIDQwNTMyLCA0MDUzOSwgNDA1NDMsIDQwNTQ3LCA0MDU1MiwgNDA1NTUsIDQwNTU3LCA0MDU2MSwgNDA1NjUsIAotICAgIDQwNTczLCA0MDU3NywgNDA1NzksIDQwNTgxLCA0MDU4NSwgNDA1OTMsIDQwNTk4LCA0MDYwNCwgNDA2MTQsIDQwNjIxLCAKLSAgICA0MDYyNiwgNDA2MzAsIDQwNjM0LCA0MDYzOCwgNDA2NDEsIDQwNjQ0LCA0MDY0NywgNDA2NTEsIDQwNjU1LCA0MDY1OSwgCi0gICAgNDA2NjMsIDQwNjY3LCA0MDY3MCwgNDA2NzQsIDQwNjc4LCA0MDY4MSwgNDA2ODMsIDQwNjg2LCA0MDY4OCwgNDA2OTIsIAotICAgIDQwNjk2LCA0MDY5OCwgNDA3MDQsIDQwNzA3LCA0MDcxMiwgNDA3MTYsIDQwNzIwLCA0MDcyMiwgNDA3MjQsIDQwNzI2LCAKLSAgICA0MDcyOSwgNDA3MzMsIDQwNzM3LCA0MDc0MSwgNDA3NDUsIDQwNzQ5LCA0MDc1NSwgNDA3NjEsIDQwNzYzLCA0MDc2NSwgCi0gICAgNDA3NjcsIDQwNzY5LCA0MDc3MiwgNDA3NzQsIDQwNzc4LCA0MDc4MCwgNDA3ODQsIDQwNzg4LCA0MDc5MywgNDA3OTcsIAotICAgIDQwODAxLCA0MDgwNSwgNDA4MDksIDQwODEzLCA0MDgxOSwgNDA4MjMsIDQwODMzLCA0MDg0MywgNDA4NDcsIDQwODUzLCAKLSAgICA0MDg1OSwgNDA4NjMsIDQwODY3LCA0MDg3MCwgNDA4NzUsIDQwODc5LCA0MDg4NSwgNDA4ODksIDQwOTAxLCA0MDkwOSwgCi0gICAgNDA5MTMsIDQwOTE3LCA0MDkyMywgNDA5MjcsIDQwOTMwLCA0MDkzMiwgNDA5MzUsIDQwOTM5LCA0MDk0MywgNDA5NTAsIAotICAgIDQwOTU0LCA0MDk1OCwgNDA5NjIsIDQwOTY1LCA0MDk3MCwgNDA5NzUsIDQwOTgwLCA0MDk4NSwgNDA5OTAsIDQwOTk1LCAKLSAgICA0MTAwMywgNDEwMTEsIDQxMDE1LCA0MTAxOSwgNDEwMjEsIDQxMDI2LCA0MTAzMCwgNDEwMzQsIDQxMDQyLCA0MTA1MCwgCi0gICAgNDEwNTYsIDQxMDYyLCA0MTA3MSwgNDEwODAsIDQxMDg1LCA0MTA5MCwgNDEwOTgsIDQxMTA2LCA0MTEwOCwgNDExMTAsIAotICAgIDQxMTE1LCA0MTEyMCwgNDExMjYsIDQxMTMyLCA0MTEzOCwgNDExNDQsIDQxMTQ4LCA0MTE1MiwgNDExNTksIDQxMTY2LCAKLSAgICA0MTE3MiwgNDExNzgsIDQxMTg4LCA0MTE5OCwgNDEyMDYsIDQxMjE0LCA0MTIxNiwgNDEyMjAsIDQxMjI0LCA0MTIyOSwgCi0gICAgNDEyMzQsIDQxMjQxLCA0MTI0OCwgNDEyNTEsIDQxMjU0LCA0MTI1NywgNDEyNjAsIDQxMjYzLCA0MTI2OCwgNDEyNzIsIAotICAgIDQxMjc3LCA0MTI4MiwgNDEyODUsIDQxMjg4LCA0MTI5MSwgNDEyOTQsIDQxMjk3LCA0MTMwMSwgNDEzMDQsIDQxMzA3LCAKLSAgICA0MTMxMCwgNDEzMTMsIDQxMzE1LCA0MTMxNywgNDEzMTksIDQxMzIxLCA0MTMyOSwgNDEzMzcsIDQxMzQzLCA0MTM0NywgCi0gICAgNDEzNTMsIDQxMzYzLCA0MTM2OSwgNDEzNzUsIDQxMzgxLCA0MTM4OSwgNDEzOTcsIDQxNDA4LCA0MTQxMiwgNDE0MTYsIAotICAgIDQxNDE4LCA0MTQyNCwgNDE0MjYsIDQxNDI4LCA0MTQzMCwgNDE0MzIsIDQxNDM4LCA0MTQ0MSwgNDE0NDcsIDQxNDUzLCAKLSAgICA0MTQ1NywgNDE0NjEsIDQxNDY1LCA0MTQ2OCwgNDE0NzIsIDQxNDc2LCA0MTQ3OCwgNDE0ODcsIDQxNDk2LCA0MTUwMSwgCi0gICAgNDE1MDYsIDQxNTEyLCA0MTUxOCwgNDE1MjQsIDQxNTI3LCA0MTUzMCwgNDE1MzMsIDQxNTM2LCA0MTUzOCwgNDE1NDMsIAotICAgIDQxNTQ4LCA0MTU1MywgNDE1NTksIDQxNTY1LCA0MTU3MywgNDE1ODEsIDQxNTg3LCA0MTU5MywgNDE1OTksIDQxNjA1LCAKLSAgICA0MTYxNCwgNDE2MjMsIDQxNjMyLCA0MTY0MSwgNDE2NTAsIDQxNjU5LCA0MTY2OCwgNDE2NzcsIDQxNjg2LCA0MTY5NSwgCi0gICAgNDE3MDMsIDQxNzE1LCA0MTcyNSwgNDE3NDAsIDQxNzQzLCA0MTc0OCwgNDE3NTQsIDQxNzYwLCA0MTc2NywgNDE3ODEsIAotICAgIDQxNzk2LCA0MTgwMiwgNDE4MDgsIDQxODE1LCA0MTgyMSwgNDE4MjksIDQxODM1LCA0MTg0OCwgNDE4NjIsIDQxODY3LCAKLSAgICA0MTg3MywgNDE4ODAsIDQxODgzLCA0MTg4NiwgNDE4ODgsIDQxODkxLCA0MTg5NCwgNDE4OTYsIDQxODk4LCA0MTkwMiwgCi0gICAgNDE5MDUsIDQxOTA4LCA0MTkxMSwgNDE5MTQsIDQxOTE5LCA0MTkyNCwgNDE5MjksIDQxOTM0LCA0MTkzOSwgNDE5NDIsIAotICAgIDQxOTQ0LCA0MTk0NiwgNDE5NDgsIDQxOTUyLCA0MTk1NiwgNDE5NjAsIDQxOTY2LCA0MTk3MSwgNDE5NzMsIDQxOTc1LCAKLSAgICA0MTk4MCwgNDE5ODUsIDQxOTkwLCA0MTk5NSwgNDIwMDAsIDQyMDA1LCA0MjAwNywgNDIwMDksIDQyMDE4LCA0MjAyMiwgCi0gICAgNDIwMzAsIDQyMDM5LCA0MjA0MSwgNDIwNDYsIDQyMDUxLCA0MjA1OSwgNDIwNjMsIDQyMDY1LCA0MjA2OSwgNDIwNzEsIAotICAgIDQyMDc1LCA0MjA3OSwgNDIwODMsIDQyMDg1LCA0MjA4NywgNDIwODksIDQyMDk0LCA0MjEwMSwgNDIxMDgsIDQyMTE1LCAKLSAgICA0MjEyMiwgNDIxMjksIDQyMTM2LCA0MjE0MywgNDIxNTAsIDQyMTU2LCA0MjE2MiwgNDIxNjksIDQyMTc2LCA0MjE4MywgCi0gICAgNDIxOTAsIDQyMTk2LCA0MjIwMiwgNDIyMDksIDQyMjE2LCA0MjIyMywgNDIyMzEsIDQyMjM4LCA0MjI0NiwgNDIyNTMsIAotICAgIDQyMjYxLCA0MjI2OCwgNDIyNzYsIDQyMjg0LCA0MjI5MSwgNDIyOTksIDQyMzA2LCA0MjMxNCwgNDIzMjEsIDQyMzI5LCAKLSAgICA0MjMzNiwgNDIzNDMsIDQyMzUwLCA0MjM1NywgNDIzNjQsIDQyMzcyLCA0MjM3OSwgNDIzODYsIDQyMzkzLCA0MjQwMSwgCi0gICAgNDI0MDgsIDQyNDE1LCA0MjQyMiwgNDI0MjksIDQyNDM3LCA0MjQ0NSwgNDI0NTIsIDQyNDU5LCA0MjQ2NSwgNDI0NzIsIAotICAgIDQyNDc3LCA0MjQ4NCwgNDI0OTEsIDQyNTAwLCA0MjUwNywgNDI1MTUsIDQyNTIzLCA0MjUyOCwgNDI1MzMsIDQyNTM4LCAKLSAgICA0MjU0NSwgNDI1NTIsIDQyNTU5LCA0MjU2NiwgNDI1NzEsIDQyNTc2LCA0MjU4NSwgNDI1OTEsIDQyNTk0LCA0MjYwMiwgCi0gICAgNDI2MDUsIDQyNjEwLCA0MjYxNSwgNDI2MTgsIDQyNjIxLCA0MjYyOSwgNDI2MzIsIDQyNjM3LCA0MjY0MCwgNDI2NDcsIAotICAgIDQyNjUyLCA0MjY2MCwgNDI2NjMsIDQyNjY2LCA0MjY2OSwgNDI2NzQsIDQyNjc5LCA0MjY4MiwgNDI2ODUsIDQyNjkzLCAKLSAgICA0MjY5NiwgNDI3MDEsIDQyNzA4LCA0MjcxMiwgNDI3MTYsIDQyNzIxLCA0MjcyNiwgNDI3MzIsIDQyNzM3LCA0Mjc0MywgCi0gICAgNDI3NDksIDQyNzU0LCA0Mjc2MCwgNDI3NjgsIDQyNzc0LCA0Mjc4MiwgNDI3OTAsIDQyNzk2LCA0MjgwNCwgNDI4MTIsIAotICAgIDQyODIxLCA0MjgyOSwgNDI4MzUsIDQyODQzLCA0Mjg1MiwgNDI4NjAsIDQyODY0LCA0Mjg2OSwgNDI4ODIsIDQyODk1LCAKLSAgICA0Mjg5OSwgNDI5MDMsIDQyOTA3LCA0MjkxMSwgNDI5MjEsIDQyOTI1LCA0MjkzMCwgNDI5MzUsIDQyOTQwLCA0Mjk0NSwgCi0gICAgNDI5NTAsIDQyOTU1LCA0Mjk2NSwgNDI5NzUsIDQyOTgzLCA0Mjk5MywgNDMwMDMsIDQzMDExLCA0MzAyMSwgNDMwMzEsIAotICAgIDQzMDM5LCA0MzA0OSwgNDMwNTksIDQzMDY3LCA0MzA3NSwgNDMwODUsIDQzMDk1LCA0MzA5OCwgNDMxMDEsIDQzMTA0LCAKLSAgICA0MzEwOSwgNDMxMTMsIDQzMTE5LCA0MzEyNiwgNDMxMzMsIDQzMTQxLCA0MzE0OCwgNDMxNTIsIDQzMTU2LCA0MzE2MCwgCi0gICAgNDMxNjQsIDQzMTY2LCA0MzE3MCwgNDMxNzQsIDQzMTc5LCA0MzE4NCwgNDMxOTEsIDQzMTk4LCA0MzIwMSwgNDMyMDgsIAotICAgIDQzMjEwLCA0MzIxMiwgNDMyMTYsIDQzMjIwLCA0MzIyNSwgNDMyMzEsIDQzMjM3LCA0MzI0MywgNDMyNDksIDQzMjU4LCAKLSAgICA0MzI2NywgNDMyNzYsIDQzMjgwLCA0MzI4MiwgNDMyODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMjkzLCA0MzI5NywgNDMzMDQsIDQzMzExLCA0MzMxOCwgNDMzMjUsIDQzMzI5LCA0MzMzMywgNDMzMzcsIDQzMzQxLCAKLSAgICA0MzM0NiwgNDMzNTIsIDQzMzU3LCA0MzM2MywgNDMzNjksIDQzMzc1LCA0MzM4MSwgNDMzODksIDQzMzk2LCA0MzQwMywgCi0gICAgNDM0MTAsIDQzNDE3LCA0MzQyMiwgNDM0MjgsIDQzNDM3LCA0MzQ0MSwgNDM0NDgsIDQzNDUyLCA0MzQ1NiwgNDM0NjIsIAotICAgIDQzNDY4LCA0MzQ3NCwgNDM0ODAsIDQzNDg0LCA0MzQ4OCwgNDM0OTEsIDQzNDk1LCA0MzQ5OSwgNDM1MDYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQzNTEzLCAKLSAgICA0MzUxNiwgNDM1MjAsIDQzNTI0LCA0MzUzMCwgNDM1MzYsIDQzNTQyLCA0MzU1MCwgNDM1NTcsIDQzNTYxLCA0MzU2OSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDM1NzQsIDQzNTc3LCAKLSAgICA0MzU4MCwgNDM1ODMsIDQzNTg2LCA0MzU4OSwgNDM1OTIsIDQzNTk1LCA0MzU5OCwgNDM2MDEsIDQzNjA1LCA0MzYwOSwgCi0gICAgNDM2MTMsIDQzNjE3LCA0MzYyMSwgNDM2MjUsIDQzNjI5LCA0MzYzMywgNDM2MzcsIDQzNjQxLCA0MzY0NSwgNDM2NDgsIAotICAgIDQzNjUxLCA0MzY1NCwgNDM2NTcsIDQzNjYwLCA0MzY2MywgNDM2NjYsIDQzNjY5LCA0MzY3MiwgNDM2NzYsIDQzNjgwLCAKLSAgICA0MzY4NCwgNDM2ODgsIDQzNjkyLCA0MzY5NiwgNDM3MDAsIDQzNzA0LCA0MzcwOCwgNDM3MTIsIDQzNzE2LCA0MzcyMiwgCi0gICAgNDM3MjgsIDQzNzM0LCA0Mzc0MSwgNDM3NDgsIDQzNzU1LCA0Mzc2MiwgNDM3NjksIDQzNzc2LCA0Mzc4MywgNDM3OTAsIAotICAgIDQzNzk3LCA0MzgwNCwgNDM4MTEsIDQzODE4LCA0MzgyNSwgNDM4MzIsIDQzODM5LCA0Mzg0NiwgNDM4NTMsIDQzODU4LCAKLSAgICA0Mzg2NCwgNDM4NzAsIDQzODc2LCA0Mzg4MSwgNDM4ODcsIDQzODkzLCA0Mzg5OSwgNDM5MDQsIDQzOTEwLCA0MzkxNiwgCi0gICAgNDM5MjEsIDQzOTI2LCA0MzkzMSwgNDM5MzYsIDQzOTQyLCA0Mzk0OCwgNDM5NTMsIDQzOTU4LCA0Mzk2NCwgNDM5NjksIAotICAgIDQzOTc1LCA0Mzk4MSwgNDM5ODcsIDQzOTkzLCA0Mzk5OSwgNDQwMDQsIDQ0MDEwLCA0NDAxNiwgNDQwMjIsIDQ0MDI3LCAKLSAgICA0NDAzMywgNDQwMzksIDQ0MDQ1LCA0NDA1MCwgNDQwNTYsIDQ0MDYyLCA0NDA2NywgNDQwNzIsIDQ0MDc3LCA0NDA4MiwgCi0gICAgNDQwODgsIDQ0MDk0LCA0NDA5OSwgNDQxMDQsIDQ0MTEwLCA0NDExNSwgNDQxMjEsIDQ0MTI3LCA0NDEzMywgNDQxMzksIAotICAgIDQ0MTQ1LCA0NDE1MCwgNDQxNTYsIDQ0MTYyLCA0NDE2OCwgNDQxNzMsIDQ0MTc5LCA0NDE4NSwgNDQxOTEsIDQ0MTk2LCAKLSAgICA0NDIwMiwgNDQyMDgsIDQ0MjEzLCA0NDIxOCwgNDQyMjMsIDQ0MjI4LCA0NDIzNCwgNDQyNDAsIDQ0MjQ1LCA0NDI1MCwgCi0gICAgNDQyNTYsIDQ0MjYxLCA0NDI2NywgNDQyNzMsIDQ0Mjc5LCA0NDI4NSwgNDQyOTEsIDQ0Mjk1LCA0NDMwMCwgNDQzMDUsIAotICAgIDQ0MzEwLCA0NDMxNSwgNDQzMjAsIDQ0MzI1LCA0NDMzMCwgNDQzMzUsIDQ0MzQwLCA0NDM0NSwgNDQzNDksIDQ0MzUzLCAKLSAgICA0NDM1NywgNDQzNjEsIDQ0MzY1LCA0NDM2OSwgNDQzNzMsIDQ0Mzc3LCA0NDM4MSwgNDQzODYsIDQ0MzkxLCA0NDM5NiwgCi0gICAgNDQ0MDEsIDQ0NDA2LCA0NDQxMSwgNDQ0MjAsIDQ0NDI5LCA0NDQzOCwgNDQ0NDcsIDQ0NDU2LCA0NDQ2NSwgNDQ0NzQsIAotICAgIDQ0NDgzLCA0NDQ5MCwgNDQ0OTgsIDQ0NTA2LCA0NDUxMywgNDQ1MjAsIDQ0NTI4LCA0NDUzNiwgNDQ1NDMsIDQ0NTUwLCAKLSAgICA0NDU1OCwgNDQ1NjYsIDQ0NTczLCA0NDU4MCwgNDQ1ODgsIDQ0NTk2LCA0NDYwMywgNDQ2MTAsIDQ0NjE4LCA0NDYyNywgCi0gICAgNDQ2MzYsIDQ0NjQ0LCA0NDY1MywgNDQ2NjIsIDQ0NjY5LCA0NDY3NiwgNDQ2ODQsIDQ0NjkzLCA0NDcwMiwgNDQ3MTAsIAotICAgIDQ0NzE5LCA0NDcyOCwgNDQ3MzUsIDQ0NzQyLCA0NDc1MSwgNDQ3NjAsIDQ0NzY4LCA0NDc3NiwgNDQ3ODUsIDQ0Nzk0LCAKLSAgICA0NDgwMSwgNDQ4MDgsIDQ0ODE3LCA0NDgyNiwgNDQ4MzQsIDQ0ODQyLCA0NDg1MSwgNDQ4NjAsIDQ0ODY3LCA0NDg3NCwgCi0gICAgNDQ4ODMsIDQ0ODkyLCA0NDkwMCwgNDQ5MDksIDQ0OTE4LCA0NDkyNiwgNDQ5MzYsIDQ0OTQ2LCA0NDk1NiwgNDQ5NjYsIAotICAgIDQ0OTc1LCA0NDk4NCwgNDQ5OTMsIDQ1MDAyLCA0NTAwOSwgNDUwMTcsIDQ1MDI1LCA0NTAzMywgNDUwNDEsIDQ1MDQ2LCAKLSAgICA0NTA1MSwgNDUwNjAsIDQ1MDY4LCA0NTA3NSwgNDUwODQsIDQ1MDkyLCA0NTA5OSwgNDUxMDgsIDQ1MTE2LCA0NTEyMywgCi0gICAgNDUxMzIsIDQ1MTQwLCA0NTE0NywgNDUxNTYsIDQ1MTY0LCA0NTE3MSwgNDUxODAsIDQ1MTg4LCA0NTE5NSwgNDUyMDQsIAotICAgIDQ1MjEyLCA0NTIxOSwgNDUyMjgsIDQ1MjM2LCA0NTI0MywgNDUyNTIsIDQ1MjYwLCA0NTI2NywgNDUyNzYsIDQ1Mjg1LCAKLSAgICA0NTI5NCwgNDUzMDMsIDQ1MzE3LCA0NTMzMSwgNDUzMzgsIDQ1MzQzLCA0NTM0OCwgNDUzNTMsIDQ1MzU4LCA0NTM2MywgCi0gICAgNDUzNjgsIDQ1MzczLCA0NTM3OCwgNDUzODYsIDQ1Mzk0LCA0NTQwMiwgNDU0MTAsIDQ1NDE1LCA0NTQyMiwgNDU0MjksIAotICAgIDQ1NDM2LCA0NTQ0MSwgNDU0NDksIDQ1NDU2LCA0NTQ2NCwgNDU0NjgsIDQ1NDc1LCA0NTQ4MSwgNDU0ODgsIDQ1NDkyLCAKLSAgICA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCA0NTUxNCwgNDU1MTcsIDQ1NTIxLCA0NTUyNSwgNDU1MzIsIDQ1NTM4LCA0NTU0NCwgCi0gICAgNDU1NTAsIDQ1NTU2LCA0NTU3MCwgNDU1ODAsIDQ1NTk0LCA0NTYwOCwgNDU2MTQsIDQ1NjI0LCA0NTYzOCwgNDU2NDEsIAotICAgIDQ1NjQ0LCA0NTY1MSwgNDU2NTksIDQ1NjY0LCA0NTY2OSwgNDU2NzcsIDQ1Njg5LCA0NTcwMSwgNDU3MDksIDQ1NzEzLCAKLSAgICA0NTcxNywgNDU3MjAsIDQ1NzIzLCA0NTcyNywgNDU3MzEsIDQ1NzM0LCA0NTczNywgNDU3NDIsIDQ1NzQ3LCA0NTc1MywgCi0gICAgNDU3NTksIDQ1NzY0LCA0NTc2OSwgNDU3NzUsIDQ1NzgxLCA0NTc4NiwgNDU3OTEsIDQ1Nzk2LCA0NTgwMSwgNDU4MDcsIAotICAgIDQ1ODEzLCA0NTgxOCwgNDU4MjMsIDQ1ODI5LCA0NTgzNSwgNDU4NDAsIDQ1ODQ1LCA0NTg0OCwgNDU4NTEsIDQ1ODYwLCAKLSAgICA0NTg2MiwgNDU4NjQsIDQ1ODY3LCA0NTg3MSwgNDU4NzcsIDQ1ODc5LCA0NTg4MiwgNDU4ODksIDQ1ODk2LCA0NTkwNCwgCi0gICAgNDU5MTIsIDQ1OTIyLCA0NTkzNiwgNDU5NDEsIDQ1OTQ2LCA0NTk1MCwgNDU5NTUsIDQ1OTYzLCA0NTk3MSwgNDU5ODAsIAotICAgIDQ1OTg5LCA0NTk5OCwgNDYwMDcsIDQ2MDEyLCA0NjAxNywgNDYwMjMsIDQ2MDI5LCA0NjAzNSwgNDYwNDEsIDQ2MDQ0LCAKLSAgICA0NjA1MCwgNDYwNTYsIDQ2MDY2LCA0NjA3NiwgNDYwODQsIDQ2MDkyLCA0NjEwMSwgNDYxMTAsIDQ2MTE0LCA0NjEyMiwgCi0gICAgNDYxMzAsIDQ2MTM4LCA0NjE0NiwgNDYxNTUsIDQ2MTY0LCA0NjE3MywgNDYxODIsIDQ2MTg3LCA0NjE5MiwgNDYxOTcsIAotICAgIDQ2MjAyLCA0NjIwNywgNDYyMTMsIDQ2MjE5LCA0NjIyNCwgNDYyMzAsIDQ2MjMyLCA0NjIzNCwgNDYyMzYsIDQ2MjM4LCAKLSAgICA0NjI0MSwgNDYyNDQsIDQ2MjQ2LCA0NjI0OCwgNDYyNTAsIDQ2MjU0LCA0NjI1OCwgNDYyNjAsIDQ2MjYyLCA0NjI2NSwgCi0gICAgNDYyNjgsIDQ2MjcyLCA0NjI3OCwgNDYyODQsIDQ2Mjg2LCA0NjI5MywgNDYyOTcsIDQ2MzAyLCA0NjMwNywgNDYzMDksIAotICAgIDQ2MzE5LCA0NjMyNSwgNDYzMzEsIDQ2MzM3LCA0NjM0MywgNDYzNDksIDQ2MzU1LCA0NjM2MCwgNDYzNjMsIDQ2MzY2LCAKLSAgICA0NjM2OSwgNDYzNzEsIDQ2MzczLCA0NjM3NywgNDYzODEsIDQ2Mzg2LCA0NjM5MSwgNDYzOTYsIDQ2Mzk5LCA0NjQwMywgCi0gICAgNDY0MDgsIDQ2NDExLCA0NjQxNSwgNDY0MjAsIDQ2NDI1LCA0NjQzMCwgNDY0MzUsIDQ2NDQwLCA0NjQ0NSwgNDY0NTAsIAotICAgIDQ2NDU1LCA0NjQ2MCwgNDY0NjUsIDQ2NDcwLCA0NjQ3NSwgNDY0ODEsIDQ2NDg3LCA0NjQ5MywgNDY0OTUsIDQ2NDk4LCAKLSAgICA0NjUwMCwgNDY1MDMsIDQ2NTA1LCA0NjUwNywgNDY1MDksIDQ2NTExLCA0NjUxMywgNDY1MTUsIDQ2NTE3LCA0NjUxOSwgCi0gICAgNDY1MjEsIDQ2NTIzLCA0NjUyNSwgNDY1MjcsIDQ2NTI5LCA0NjUzMSwgNDY1MzMsIDQ2NTM1LCA0NjUzNywgNDY1NDIsIAotICAgIDQ2NTQ3LCA0NjU1MiwgNDY1NTcsIDQ2NTYyLCA0NjU2NywgNDY1NzIsIDQ2NTc3LCA0NjU4MiwgNDY1ODcsIDQ2NTkyLCAKLSAgICA0NjU5NywgNDY2MDIsIDQ2NjA3LCA0NjYxMiwgNDY2MTcsIDQ2NjIyLCA0NjYyNywgNDY2MzIsIDQ2NjM3LCA0NjY0MSwgCi0gICAgNDY2NDUsIDQ2NjQ5LCA0NjY1NSwgNDY2NjEsIDQ2NjY2LCA0NjY3MSwgNDY2NzYsIDQ2NjgxLCA0NjY4NiwgNDY2OTEsIAotICAgIDQ2Njk5LCA0NjcwNywgNDY3MTUsIDQ2NzIzLCA0NjczMSwgNDY3MzksIDQ2NzQ3LCA0Njc1NSwgNDY3NjEsIDQ2NzY2LCAKLSAgICA0Njc3MSwgNDY3NzYsIDQ2Nzc5LCA0Njc4MywgNDY3ODcsIDQ2NzkxLCA0Njc5NSwgNDY3OTksIDQ2ODAzLCA0NjgxMCwgCi0gICAgNDY4MTcsIDQ2ODI1LCA0NjgzMywgNDY4MzgsIDQ2ODQzLCA0Njg1MCwgNDY4NTcsIDQ2ODY0LCA0Njg3MSwgNDY4NzQsIAotICAgIDQ2ODc3LCA0Njg4MiwgNDY4ODQsIDQ2ODg4LCA0Njg5MywgNDY4OTUsIDQ2ODk3LCA0Njg5OSwgNDY5MDEsIDQ2OTA2LCAKLSAgICA0NjkwOSwgNDY5MTEsIDQ2OTE2LCA0NjkyMywgNDY5MzAsIDQ2OTMzLCA0NjkzNywgNDY5NDIsIDQ2OTQ3LCA0Njk1NSwgCi0gICAgNDY5NjEsIDQ2OTY3LCA0Njk3OSwgNDY5ODYsIDQ2OTkzLCA0Njk5OCwgNDcwMDMsIDQ3MDA5LCA0NzAxMiwgNDcwMTUsIAotICAgIDQ3MDIwLCA0NzAyMiwgNDcwMjYsIDQ3MDI4LCA0NzAzMCwgNDcwMzIsIDQ3MDM0LCA0NzAzNiwgNDcwMzgsIDQ3MDQzLCAKLSAgICA0NzA0NSwgNDcwNDcsIDQ3MDQ5LCA0NzA1MSwgNDcwNTUsIDQ3MDU3LCA0NzA2MCwgNDcwNjUsIDQ3MDcwLCA0NzA3NSwgCi0gICAgNDcwODAsIDQ3MDg2LCA0NzA5MiwgNDcwOTQsIDQ3MDk3LCA0NzEwNCwgNDcxMTEsIDQ3MTE4LCA0NzEyNSwgNDcxMjksIAotICAgIDQ3MTMzLCA0NzEzNSwgNDcxMzcsIDQ3MTQxLCA0NzE0NywgNDcxNTIsIDQ3MTU0LCA0NzE1OCwgNDcxNjcsIDQ3MTc1LCAKLSAgICA0NzE4MywgNDcxODksIDQ3MTk1LCA0NzIwMCwgNDcyMDYsIDQ3MjExLCA0NzIxNCwgNDcyMjgsIDQ3MjMxLCA0NzIzNiwgCi0gICAgNDcyNDEsIDQ3MjQ3LCA0NzI1NywgNDcyNTksIDQ3MjY1LCA0NzI3MSwgNDcyNzUsIDQ3MjgyLCA0NzI4NiwgNDcyODgsIAotICAgIDQ3MjkwLCA0NzI5NCwgNDczMDAsIDQ3MzA1LCA0NzMxMSwgNDczMTMsIDQ3MzE5LCA0NzMyMSwgNDczMjcsIDQ3MzI5LCAKLSAgICA0NzMzMSwgNDczMzYsIDQ3MzM4LCA0NzM0MiwgNDczNDcsIDQ3MzQ5LCA0NzM1NCwgNDczNTksIDQ3MzYzLCA0NzM3MCwgMCwgCi0gICAgNDczODAsIDQ3Mzg2LCA0NzM4OSwgNDczOTUsIDQ3Mzk4LCA0NzQwMywgNDc0MDgsIDQ3NDEyLCA0NzQxNCwgNDc0MTYsIAotICAgIDQ3NDIwLCA0NzQyNCwgNDc0MjgsIDQ3NDMyLCA0NzQzNywgNDc0MzksIDQ3NDQ0LCA0NzQ0NywgNDc0NTAsIDQ3NDUzLCAKLSAgICA0NzQ1NywgNDc0NjEsIDQ3NDY2LCA0NzQ3MCwgNDc0NzUsIDQ3NDgwLCA0NzQ4NCwgNDc0OTAsIDQ3NDk3LCA0NzUwMCwgCi0gICAgNDc1MDYsIDQ3NTExLCA0NzUxNSwgNDc1MjAsIDQ3NTI2LCA0NzUzMiwgNDc1MzksIDQ3NTQ1LCA0NzU1MiwgNDc1NTksIAotICAgIDQ3NTYxLCA0NzU2OCwgNDc1NzIsIDQ3NTc5LCA0NzU4NSwgNDc1OTAsIDQ3NTk2LCA0NzYwMCwgNDc2MDUsIDQ3NjA4LCAKLSAgICA0NzYxNCwgNDc2MjAsIDQ3NjI3LCA0NzYzNSwgNDc2NDIsIDQ3NjUxLCA0NzY2MSwgNDc2NjgsIDQ3Njc0LCA0NzY3OCwgCi0gICAgNDc2ODYsIDQ3NjkxLCA0NzcwMCwgNDc3MDMsIDQ3NzA2LCA0NzcxNSwgNDc3MjYsIDQ3NzMzLCA0NzczNSwgNDc3NDEsIAotICAgIDQ3NzQ2LCA0Nzc0OCwgNDc3NTEsIDQ3NzU1LCA0Nzc2MywgNDc3NzIsIDQ3Nzc1LCA0Nzc4MCwgNDc3ODUsIDQ3NzkzLCAKLSAgICA0NzgwMSwgNDc4MDksIDQ3ODE3LCA0NzgyMywgNDc4MjksIDQ3ODM1LCA0Nzg0MywgNDc4NDgsIDQ3ODUxLCA0Nzg1NSwgCi0gICAgNDc4NTgsIDQ3ODcwLCA0Nzg4MCwgNDc4OTEsIDQ3OTAwLCA0NzkxMSwgNDc5MjEsIDQ3OTMwLCA0NzkzNiwgNDc5NDQsIAotICAgIDQ3OTQ4LCA0Nzk1NiwgNDc5NjAsIDQ3OTY4LCA0Nzk3NSwgNDc5ODIsIDQ3OTkxLCA0ODAwMCwgNDgwMTAsIDQ4MDIwLCAKLSAgICA0ODAzMCwgNDgwNDAsIDQ4MDQ5LCA0ODA1OCwgNDgwNjgsIDQ4MDc4LCA0ODA4NywgNDgwOTYsIDQ4MTAyLCA0ODEwOCwgCi0gICAgNDgxMTQsIDQ4MTIwLCA0ODEyNiwgNDgxMzIsIDQ4MTM4LCA0ODE0NCwgNDgxNTAsIDQ4MTU3LCA0ODE2MywgNDgxNjksIAotICAgIDQ4MTc1LCA0ODE4MSwgNDgxODcsIDQ4MTkzLCA0ODE5OSwgNDgyMDUsIDQ4MjExLCA0ODIxOCwgNDgyMjUsIDQ4MjMyLCAKLSAgICA0ODIzOSwgNDgyNDYsIDQ4MjUzLCA0ODI2MCwgNDgyNjcsIDQ4Mjc0LCA0ODI4MSwgNDgyODksIDQ4Mjk0LCA0ODI5NywgCi0gICAgNDgzMDEsIDQ4MzA1LCA0ODMxMSwgNDgzMTQsIDQ4MzIwLCA0ODMyNiwgNDgzMzEsIDQ4MzM1LCA0ODM0MCwgNDgzNDYsIAotICAgIDQ4MzUzLCA0ODM1NiwgNDgzNjMsIDQ4MzcwLCA0ODM3NCwgNDgzODMsIDQ4MzkyLCA0ODM5NywgNDg0MDMsIDQ4NDA4LCAKLSAgICA0ODQxMywgNDg0MjAsIDQ4NDI3LCA0ODQzNSwgNDg0NDMsIDQ4NDUyLCA0ODQ1NiwgNDg0NjUsIDQ4NDcwLCA0ODQ3NCwgCi0gICAgNDg0ODEsIDQ4NDg1LCA0ODQ5MiwgNDg1MDAsIDQ4NTA1LCA0ODUxMywgNDg1MTcsIDQ4NTIyLCA0ODUyNiwgNDg1MzEsIAotICAgIDQ4NTM1LCA0ODU0MCwgNDg1NDUsIDQ4NTU0LCA0ODU1NiwgNDg1NjAsIDQ4NTY0LCA0ODU3MSwgNDg1NzgsIDQ4NTgzLCAKLSAgICA0ODU5MSwgNDg1OTcsIDAsIDQ4NjAzLCAwLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCA0ODYyNCwgNDg2MjgsIDQ4NjM1LCAKLSAgICA0ODY0MywgNDg2NTEsIDQ4NjU2LCA0ODY2MSwgNDg2NjcsIDQ4NjcyLCA0ODY3NywgNDg2ODMsIDQ4Njg4LCA0ODY5MSwgCi0gICAgNDg2OTUsIDQ4Njk5LCA0ODcwNiwgNDg3MTUsIDQ4NzIwLCA0ODcyOSwgNDg3MzgsIDQ4NzQ0LCA0ODc1MCwgNDg3NTUsIAotICAgIDQ4NzYwLCA0ODc2NSwgNDg3NzAsIDQ4Nzc2LCA0ODc4MiwgNDg3OTAsIDQ4Nzk4LCA0ODgwNCwgNDg4MTAsIDQ4ODE1LCAKLSAgICA0ODgyMCwgNDg4MjcsIDQ4ODM0LCA0ODg0MCwgNDg4NDMsIDQ4ODQ2LCA0ODg1MCwgNDg4NTQsIDQ4ODU4LCA0ODg2MywgCi0gICAgNDg4NjksIDQ4ODc1LCA0ODg4MiwgNDg4ODksIDQ4ODk0LCA0ODg5OCwgNDg5MDIsIDQ4OTA2LCA0ODkxMCwgNDg5MTQsIAotICAgIDQ4OTE4LCA0ODkyMiwgNDg5MjYsIDQ4OTMwLCA0ODkzNCwgNDg5MzgsIDQ4OTQyLCA0ODk0NiwgNDg5NTAsIDQ4OTU0LCAKLSAgICA0ODk1OCwgNDg5NjIsIDQ4OTY2LCA0ODk3MCwgNDg5NzQsIDQ4OTc4LCA0ODk4MiwgNDg5ODYsIDQ4OTkwLCA0ODk5NCwgCi0gICAgNDg5OTgsIDQ5MDAyLCA0OTAwNiwgNDkwMTAsIDQ5MDE0LCA0OTAxOCwgNDkwMjIsIDQ5MDI2LCA0OTAzMCwgNDkwMzQsIAotICAgIDQ5MDM4LCA0OTA0MiwgNDkwNDYsIDQ5MDUwLCA0OTA1NCwgNDkwNTgsIDQ5MDYyLCA0OTA2NiwgNDkwNzAsIDQ5MDc0LCAKLSAgICA0OTA3OCwgNDkwODIsIDQ5MDg2LCA0OTA5MCwgNDkwOTQsIDQ5MDk4LCA0OTEwMiwgNDkxMDYsIDQ5MTEwLCA0OTExNCwgCi0gICAgNDkxMTgsIDQ5MTIyLCA0OTEyNiwgNDkxMzAsIDQ5MTM0LCA0OTEzOCwgNDkxNDIsIDQ5MTQ2LCA0OTE1MCwgNDkxNTQsIAotICAgIDQ5MTU4LCA0OTE2MiwgNDkxNjYsIDQ5MTcwLCA0OTE3NCwgNDkxNzgsIDQ5MTgyLCA0OTE4NiwgNDkxOTAsIDQ5MTk0LCAKLSAgICA0OTE5OCwgNDkyMDIsIDQ5MjA2LCA0OTIxMCwgNDkyMTQsIDQ5MjE4LCA0OTIyMiwgNDkyMjYsIDQ5MjMwLCA0OTIzNCwgCi0gICAgNDkyMzgsIDQ5MjQyLCA0OTI0NiwgNDkyNTAsIDQ5MjU0LCA0OTI1OCwgNDkyNjIsIDQ5MjY2LCA0OTI3MCwgNDkyNzQsIAotICAgIDQ5Mjc4LCA0OTI4MiwgNDkyODYsIDQ5MjkwLCA0OTI5NCwgNDkyOTgsIDQ5MzAyLCA0OTMwNiwgNDkzMTAsIDQ5MzE0LCAKLSAgICA0OTMxOCwgNDkzMjIsIDQ5MzI2LCA0OTMzMCwgNDkzMzQsIDQ5MzM4LCA0OTM0MiwgNDkzNDYsIDQ5MzUwLCA0OTM1NCwgCi0gICAgNDkzNTgsIDQ5MzYyLCA0OTM2NiwgNDkzNzAsIDQ5Mzc0LCA0OTM3OCwgNDkzODIsIDQ5Mzg2LCA0OTM5MCwgNDkzOTQsIAotICAgIDQ5Mzk4LCA0OTQwMiwgNDk0MDYsIDQ5NDEwLCA0OTQxNCwgNDk0MTgsIDQ5NDIyLCA0OTQyNiwgNDk0MzAsIDQ5NDM0LCAKLSAgICA0OTQzOCwgNDk0NDIsIDQ5NDQ2LCA0OTQ1MCwgNDk0NTQsIDQ5NDU4LCA0OTQ2MiwgNDk0NjYsIDQ5NDcwLCA0OTQ3NCwgCi0gICAgNDk0NzgsIDQ5NDgyLCA0OTQ4NiwgNDk0OTAsIDQ5NDk0LCA0OTQ5OCwgNDk1MDIsIDQ5NTA2LCA0OTUxMCwgNDk1MTQsIAotICAgIDQ5NTE4LCA0OTUyMiwgNDk1MjYsIDQ5NTMwLCA0OTUzNCwgNDk1MzgsIDQ5NTQyLCA0OTU0NiwgNDk1NTAsIDQ5NTU0LCAKLSAgICA0OTU1OCwgNDk1NjIsIDQ5NTY2LCA0OTU3MCwgNDk1NzQsIDQ5NTc4LCA0OTU4MiwgNDk1ODYsIDQ5NTkwLCA0OTU5NCwgCi0gICAgNDk1OTgsIDQ5NjAyLCA0OTYwNiwgNDk2MTAsIDQ5NjE0LCA0OTYxOCwgNDk2MjIsIDQ5NjI2LCA0OTYzMCwgNDk2MzQsIAotICAgIDQ5NjM4LCA0OTY0MiwgNDk2NDYsIDQ5NjUwLCA0OTY1NCwgNDk2NTgsIDQ5NjYyLCA0OTY2NiwgNDk2NzAsIDQ5Njc0LCAKLSAgICA0OTY3OCwgNDk2ODIsIDQ5Njg2LCA0OTY5MCwgNDk2OTQsIDQ5Njk4LCA0OTcwMiwgNDk3MDYsIDQ5NzEwLCA0OTcxNCwgCi0gICAgNDk3MTgsIDQ5NzIyLCA0OTcyNiwgNDk3MzAsIDQ5NzM0LCA0OTczOCwgNDk3NDIsIDQ5NzQ2LCA0OTc1MCwgNDk3NTQsIAotICAgIDQ5NzU4LCA0OTc2MiwgNDk3NjYsIDQ5NzcwLCA0OTc3NCwgNDk3NzgsIDQ5NzgyLCA0OTc4NiwgNDk3OTAsIDQ5Nzk0LCAKLSAgICA0OTc5OCwgNDk4MDIsIDQ5ODA2LCA0OTgxMCwgNDk4MTQsIDQ5ODE4LCA0OTgyMiwgNDk4MjYsIDQ5ODMwLCA0OTgzNCwgCi0gICAgNDk4MzgsIDQ5ODQyLCA0OTg0NiwgNDk4NTAsIDQ5ODU0LCA0OTg1OCwgNDk4NjIsIDQ5ODY2LCA0OTg3MCwgNDk4NzQsIAotICAgIDQ5ODc4LCA0OTg4MiwgNDk4ODYsIDQ5ODkwLCA0OTg5NCwgNDk4OTgsIDQ5OTAyLCA0OTkwNiwgNDk5MTAsIDQ5OTE0LCAKLSAgICA0OTkxOCwgNDk5MjUsIDQ5OTMzLCA0OTkzOSwgNDk5NDUsIDQ5OTUyLCA0OTk1OSwgNDk5NjUsIDQ5OTcxLCA0OTk3NywgCi0gICAgNDk5ODMsIDQ5OTg4LCA0OTk5MywgNDk5OTgsIDUwMDAzLCA1MDAwOSwgNTAwMTUsIDUwMDIzLCA1MDAzMCwgNTAwMzYsIAotICAgIDUwMDQyLCA1MDA1MCwgNTAwNTksIDUwMDY2LCA1MDA3NiwgNTAwODcsIDUwMDkwLCA1MDA5MywgNTAwOTcsIDUwMTAxLCAKLSAgICA1MDEwOCwgNTAxMTUsIDUwMTI2LCA1MDEzNywgNTAxNDcsIDUwMTU3LCA1MDE2NCwgNTAxNzEsIDUwMTc4LCA1MDE4NSwgCi0gICAgNTAxOTYsIDUwMjA3LCA1MDIxOCwgNTAyMjksIDUwMjM5LCA1MDI0OSwgNTAyNjEsIDUwMjczLCA1MDI4NCwgNTAyOTUsIAotICAgIDUwMzA3LCA1MDMxOSwgNTAzMjgsIDUwMzM4LCA1MDM0OCwgNTAzNTksIDUwMzcwLCA1MDM3NywgNTAzODQsIDUwMzkxLCAKLSAgICA1MDM5OCwgNTA0MDgsIDUwNDE4LCA1MDQyNiwgNTA0MzQsIDUwNDQxLCA1MDQ0OCwgNTA0NTUsIDUwNDYyLCA1MDQ2OSwgCi0gICAgNTA0NzQsIDUwNDc5LCA1MDQ4NSwgNTA0OTMsIDUwNTAzLCA1MDUxMSwgNTA1MTksIDUwNTI3LCA1MDUzNSwgNTA1NDMsIAotICAgIDUwNTUxLCA1MDU1OSwgNTA1NjcsIDUwNTc2LCA1MDU4NSwgNTA1OTUsIDUwNjA1LCA1MDYxNCwgNTA2MjMsIDUwNjMzLCAKLSAgICA1MDY0MywgNTA2NTIsIDUwNjYxLCA1MDY3MSwgNTA2ODEsIDUwNjkwLCA1MDY5OSwgNTA3MDksIDUwNzE5LCA1MDczMywgCi0gICAgNTA3NTAsIDUwNzY0LCA1MDc4MSwgNTA3OTUsIDUwODA5LCA1MDgyMywgNTA4MzcsIDUwODQ3LCA1MDg1OCwgNTA4NjgsIAotICAgIDUwODc5LCA1MDg5NiwgNTA5MTMsIDUwOTIxLCA1MDkyNywgNTA5MzQsIDUwOTQxLCA1MDk0OCwgNTA5NTUsIDUwOTYwLCAKLSAgICA1MDk2NiwgNTA5NzEsIDUwOTc2LCA1MDk4MiwgNTA5ODcsIDUwOTkyLCA1MDk5NywgNTEwMDIsIDUxMDA3LCA1MTAxNCwgCi0gICAgNTEwMTksIDUxMDI2LCA1MTAzMSwgNTEwMzYsIDUxMDQwLCA1MTA0NCwgNTEwNTEsIDUxMDU4LCA1MTA2NSwgNTEwNzIsIAotICAgIDUxMDc5LCA1MTA4NiwgNTEwOTksIDUxMTEyLCA1MTEyNSwgNTExMzgsIDUxMTQ2LCA1MTE1NCwgNTExNjAsIDUxMTY2LCAKLSAgICA1MTE3MywgNTExODAsIDUxMTg3LCA1MTE5NCwgNTExOTgsIDUxMjAzLCA1MTIxMSwgNTEyMTksIDUxMjI3LCA1MTIzNCwgCi0gICAgNTEyMzgsIDUxMjQ2LCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NywgNTEyNzQsIDUxMjgyLCA1MTI5MCwgNTEzMTAsIAotICAgIDUxMzMwLCA1MTM1MCwgNTEzNzAsIDUxMzkwLCA1MTQxMCwgNTE0MzAsIDUxNDUwLCA1MTQ1NiwgNTE0NjMsIDUxNDcyLCAKLSAgICA1MTQ4MCwgNTE0ODgsIDUxNDkzLCA1MTQ5NiwgNTE0OTksIDUxNTA0LCA1MTUwNywgNTE1MjYsIDUxNTMzLCA1MTUzOSwgCi0gICAgNTE1NDUsIDUxNTQ5LCA1MTU1MiwgNTE1NTUsIDUxNTU4LCA1MTU3MCwgNTE1ODMsIDUxNTkwLCA1MTU5NywgNTE2MDAsIAotICAgIDUxNjA0LCA1MTYwNywgNTE2MTIsIDUxNjE3LCA1MTYyMiwgNTE2MjgsIDUxNjM3LCA1MTY0NCwgNTE2NTEsIDUxNjU5LCAKLSAgICA1MTY2NiwgNTE2NzMsIDUxNjc2LCA1MTY4MiwgNTE2ODgsIDUxNjkxLCA1MTY5NCwgNTE2OTksIDUxNzA0LCA1MTcxMCwgCi0gICAgNTE3MTYsIDUxNzIwLCA1MTcyNSwgNTE3MzIsIDUxNzM2LCA1MTc0MiwgNTE3NDYsIDUxNzUwLCA1MTc1OCwgNTE3NzAsIAotICAgIDUxNzc5LCA1MTc4MywgNTE3ODUsIDUxNzk0LCA1MTgwMywgNTE4MDksIDUxODEyLCA1MTgxOCwgNTE4MjQsIDUxODI5LCAKLSAgICA1MTgzNCwgNTE4MzksIDUxODQ0LCA1MTg0OSwgNTE4NTQsIDUxODU2LCA1MTg2MiwgNTE4NjcsIDUxODc0LCA1MTg3OCwgCi0gICAgNTE4ODQsIDUxODg3LCA1MTg5MSwgNTE4OTgsIDUxOTA1LCA1MTkwNywgNTE5MDksIDUxOTE1LCA1MTkyMSwgNTE5MjcsIAotICAgIDUxOTM2LCA1MTk0NSwgNTE5NTIsIDUxOTU5LCA1MTk2NSwgNTE5NzEsIDUxOTc2LCA1MTk4MSwgNTE5ODYsIDUxOTkyLCAKLSAgICA1MTk5OCwgNTIwMDMsIDUyMDEwLCA1MjAxNCwgNTIwMTgsIDUyMDMxLCA1MjA0NCwgNTIwNTYsIDUyMDY1LCA1MjA3MSwgCi0gICAgNTIwNzgsIDUyMDgzLCA1MjA4OCwgNTIwOTMsIDUyMDk4LCA1MjEwMywgNTIxMDUsIDUyMTEyLCA1MjExOSwgNTIxMjYsIAotICAgIDUyMTMzLCA1MjE0MCwgNTIxNDgsIDUyMTU0LCA1MjE1OSwgNTIxNjUsIDUyMTcxLCA1MjE3NywgNTIxODQsIDUyMTkwLCAKLSAgICA1MjE5OCwgNTIyMDYsIDUyMjE0LCA1MjIyMiwgNTIyMjksIDUyMjM1LCA1MjI0MSwgNTIyNTAsIDUyMjU0LCA1MjI2MywgCi0gICAgNTIyNzIsIDUyMjgxLCA1MjI4OSwgNTIyOTMsIDUyMjk5LCA1MjMwNiwgNTIzMTMsIDUyMzE3LCA1MjMyMywgNTIzMzAsIAotICAgIDUyMzM1LCA1MjM0MCwgNTIzNDYsIDUyMzUxLCA1MjM1NiwgNTIzNjMsIDUyMzcwLCA1MjM3NSwgNTIzODAsIDUyMzg4LCAKLSAgICA1MjM5NiwgNTI0MDYsIDUyNDE2LCA1MjQyMywgNTI0MzAsIDUyNDM0LCA1MjQzOCwgNTI0NTAsIDUyNDU2LCA1MjQ2MiwgCi0gICAgNTI0NjcsIDUyNDcyLCA1MjQ3OSwgNTI0ODYsIDUyNDkyLCA1MjQ5OCwgNTI1MDcsIDUyNTE1LCA1MjUyMywgNTI1MzAsIAotICAgIDUyNTM3LCA1MjU0NCwgNTI1NTAsIDUyNTU3LCA1MjU2MywgNTI1NzAsIDUyNTc3LCA1MjU4NCwgNTI1OTEsIDUyNTk3LCAKLSAgICA1MjYwMiwgNTI2MTEsIDUyNjIxLCA1MjYyOCwgNTI2MzcsIDUyNjQzLCA1MjY0OCwgNTI2NTMsIDUyNjYzLCA1MjY2OSwgCi0gICAgNTI2NzUsIDUyNjgxLCA1MjY4OSwgNTI2OTQsIDUyNzAxLCA1MjcwOCwgNTI3MTksIDUyNzI2LCA1MjczMywgNTI3NDAsIAotICAgIDUyNzQ3LCA1Mjc1NCwgNTI3NjEsIDUyNzY4LCA1Mjc4MCwgNTI3OTIsIDUyODAzLCA1MjgxNCwgNTI4MjcsIDUyODQwLCAKLSAgICA1Mjg0NSwgNTI4NTAsIDUyODU5LCA1Mjg2OCwgNTI4NzUsIDUyODgyLCA1Mjg5MSwgNTI5MDAsIDUyOTA4LCA1MjkxNiwgCi0gICAgNTI5MjQsIDUyOTMyLCA1Mjk0MiwgNTI5NTIsIDUyOTY2LCA1Mjk4MCwgNTI5ODgsIDUyOTk2LCA1MzAwOCwgNTMwMjAsIAotICAgIDUzMDI4LCA1MzAzNiwgNTMwNDYsIDUzMDU2LCA1MzA2MSwgNTMwNjYsIDUzMDc1LCA1MzA4NCwgNTMwODksIDUzMDk0LCAKLSAgICA1MzEwMiwgNTMxMDgsIDUzMTE0LCA1MzEyMiwgNTMxMzAsIDUzMTQzLCA1MzE1NiwgNTMxNjAsIDUzMTY0LCA1MzE3MSwgCi0gICAgNTMxNzgsIDUzMTg1LCA1MzE5MywgNTMyMDEsIDUzMjEwLCA1MzIxOSwgNTMyMjUsIDUzMjMxLCA1MzIzOCwgNTMyNDUsIAotICAgIDUzMjUyLCA1MzI1OSwgNTMyNjgsIDUzMjc3LCA1MzI4MCwgNTMyODMsIDUzMjg4LCA1MzI5MywgNTMyOTksIDUzMzA1LCAKLSAgICA1MzMxMiwgNTMzMTksIDUzMzI5LCA1MzMzOSwgNTMzNDYsIDUzMzUzLCA1MzM2MSwgNTMzNjksIDUzMzc3LCA1MzM4NSwgCi0gICAgNTMzOTMsIDUzNDAxLCA1MzQwOCwgNTM0MTUsIDUzNDE5LCA1MzQyMywgNTM0MzAsIDUzNDM3LCA1MzQ0MiwgNTM0NDcsIAotICAgIDUzNDUyLCA1MzQ1NywgNTM0NjMsIDUzNDc3LCA1MzQ4NCwgNTM0OTEsIDUzNDk1LCA1MzQ5NywgNTM0OTksIDUzNTA0LCAKLSAgICA1MzUwOSwgNTM1MTQsIDUzNTE4LCA1MzUyNiwgNTM1MzMsIDUzNTQwLCA1MzU0OCwgNTM1NjAsIDUzNTY4LCA1MzU3NiwgCi0gICAgNTM1ODcsIDUzNTkxLCA1MzU5NSwgNTM2MDEsIDUzNjA5LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzY0MywgNTM2NDgsIAotICAgIDUzNjU1LCA1MzY2NCwgNTM2NzIsIDUzNjc4LCA1MzY4NCwgNTM2OTAsIDUzNjk5LCA1MzcwOCwgNTM3MTYsIDUzNzI1LCAKLSAgICA1MzczMCwgNTM3MzMsIDUzNzM4LCA1Mzc0NCwgNTM3NTAsIDUzNzU2LCA1Mzc2MiwgNTM3NjYsIDUzNzY5LCA1Mzc3MywgCi0gICAgNTM3NzcsIDUzNzgzLCA1Mzc4OSwgNTM3OTUsIDUzODAxLCA1MzgwNSwgNTM4MDksIDUzODE2LCA1MzgyMywgNTM4MzAsIAotICAgIDUzODM3LCA1Mzg0NCwgNTM4NTEsIDUzODYxLCA1Mzg3MSwgNTM4NzgsIDUzODg1LCA1Mzg5MywgNTM5MDEsIDUzOTA1LCAKLSAgICA1MzkxMCwgNTM5MTUsIDUzOTIxLCA1MzkyNywgNTM5MzAsIDUzOTMzLCA1MzkzNiwgNTM5MzksIDUzOTQzLCA1Mzk0OCwgCi0gICAgNTM5NTMsIDUzOTU4LCA1Mzk2MywgNTM5NjgsIDUzOTcyLCA1Mzk3NiwgNTM5ODAsIDUzOTg0LCA1Mzk4OCwgNTM5OTIsIAotICAgIDUzOTk2LCA1NDAwMiwgNTQwMDYsIDU0MDEyLCA1NDAxNywgNTQwMjQsIDU0MDMyLCA1NDAzOSwgNTQwNDcsIDU0MDU0LCAKLSAgICA1NDA2MiwgNTQwNzEsIDU0MDc4LCA1NDA4OCwgNTQwOTksIDU0MTA1LCA1NDExNCwgNTQxMjAsIDU0MTI5LCA1NDEzOCwgCi0gICAgNTQxNDQsIDU0MTUwLCA1NDE1NCwgNTQxNTgsIDU0MTY3LCA1NDE3NiwgNTQxODMsIDU0MTkwLCA1NDE5OSwgMCwgMCwgMCwgCi0gICAgNTQyMDgsIDU0MjEzLCA1NDIxNywgNTQyMjEsIDU0MjI2LCA1NDIzMSwgNTQyMzYsIDU0MjQ0LCA1NDI1MiwgNTQyNTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0MjU5LCA1NDI2NCwgNTQyNjksIDU0Mjc0LCA1NDI3OSwgCi0gICAgNTQyODQsIDU0Mjg5LCA1NDI5NCwgNTQyOTksIDU0MzA0LCA1NDMwOSwgNTQzMTUsIDU0MzE5LCA1NDMyNCwgNTQzMjksIAotICAgIDU0MzM0LCA1NDMzOSwgNTQzNDQsIDU0MzQ5LCA1NDM1NCwgNTQzNTksIDU0MzY0LCA1NDM2OSwgNTQzNzQsIDU0Mzc5LCAKLSAgICA1NDM4NCwgNTQzODksIDU0Mzk0LCA1NDM5OSwgNTQ0MDQsIDU0NDA5LCA1NDQxNCwgNTQ0MTksIDU0NDI0LCA1NDQyOSwgCi0gICAgNTQ0MzUsIDU0NDQwLCA1NDQ0NiwgNTQ0NTUsIDU0NDYwLCA1NDQ2OCwgNTQ0NzUsIDU0NDg0LCA1NDQ4OSwgNTQ0OTQsIAotICAgIDU0NDk5LCA1NDUwNSwgMCwgNTQ1MTIsIDU0NTE3LCA1NDUyMiwgNTQ1MjcsIDU0NTMyLCA1NDUzNywgNTQ1NDIsIDU0NTQ3LCAKLSAgICA1NDU1MiwgNTQ1NTcsIDU0NTYyLCA1NDU2OCwgNTQ1NzIsIDU0NTc3LCA1NDU4MiwgNTQ1ODcsIDU0NTkyLCA1NDU5NywgCi0gICAgNTQ2MDIsIDU0NjA3LCA1NDYxMiwgNTQ2MTcsIDU0NjIyLCA1NDYyNywgNTQ2MzIsIDU0NjM3LCA1NDY0MiwgNTQ2NDcsIAotICAgIDU0NjUyLCA1NDY1NywgNTQ2NjIsIDU0NjY3LCA1NDY3MiwgNTQ2NzcsIDU0NjgyLCA1NDY4OCwgNTQ2OTMsIDU0Njk5LCAKLSAgICA1NDcwOCwgNTQ3MTMsIDU0NzIxLCA1NDcyOCwgNTQ3MzcsIDU0NzQyLCA1NDc0NywgNTQ3NTIsIDU0NzU4LCAwLCA1NDc2NSwgCi0gICAgNTQ3NzMsIDU0NzgxLCA1NDc5MSwgNTQ3OTgsIDU0ODA2LCA1NDgxMiwgNTQ4MjEsIDU0ODI5LCA1NDgzNywgNTQ4NDUsIAotICAgIDU0ODUzLCA1NDg2MSwgNTQ4NjksIDU0ODc0LCA1NDg4MSwgNTQ4ODcsIDU0ODk0LCA1NDkwMiwgNTQ5MDksIDU0OTE2LCAKLSAgICA1NDkyNCwgNTQ5MzAsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTYwLCA1NDk3MCwgNTQ5NzcsIDU0OTg0LCA1NDk4OSwgCi0gICAgNTQ5OTksIDU1MDA5LCA1NTAxNCwgNTUwMTksIDU1MDI0LCA1NTAyOSwgNTUwMzQsIDU1MDM5LCA1NTA0NCwgNTUwNDksIAotICAgIDU1MDU0LCA1NTA1OSwgNTUwNjQsIDU1MDY5LCA1NTA3NCwgNTUwNzksIDU1MDg0LCA1NTA4OSwgNTUwOTQsIDU1MDk5LCAKLSAgICA1NTEwNCwgNTUxMDksIDU1MTE0LCA1NTExOSwgNTUxMjQsIDU1MTI5LCA1NTEzNCwgNTUxMzksIDU1MTQ0LCA1NTE0OSwgCi0gICAgNTUxNTQsIDU1MTU5LCA1NTE2MywgNTUxNjcsIDU1MTcyLCA1NTE3NywgNTUxODIsIDU1MTg3LCA1NTE5MiwgNTUxOTcsIAotICAgIDU1MjAyLCA1NTIwNywgNTUyMTIsIDU1MjE3LCA1NTIyMiwgNTUyMjcsIDU1MjMyLCA1NTIzNywgNTUyNDIsIDU1MjQ3LCAKLSAgICA1NTI1MiwgNTUyNTcsIDU1MjY0LCA1NTI3MSwgNTUyNzgsIDU1Mjg1LCA1NTI5MiwgNTUyOTksIDU1MzA2LCA1NTMxMywgCi0gICAgNTUzMjAsIDU1MzI3LCA1NTMzNCwgNTUzNDEsIDU1MzQ4LCA1NTM1NSwgNTUzNjAsIDU1MzY1LCA1NTM3MiwgNTUzNzksIAotICAgIDU1Mzg2LCA1NTM5MywgNTU0MDAsIDU1NDA3LCA1NTQxNCwgNTU0MjEsIDU1NDI4LCA1NTQzNSwgNTU0NDIsIDU1NDQ5LCAKLSAgICA1NTQ1NSwgNTU0NjEsIDU1NDY3LCA1NTQ3MywgNTU0ODAsIDU1NDg3LCA1NTQ5NCwgNTU1MDEsIDU1NTA4LCA1NTUxNSwgCi0gICAgNTU1MjIsIDU1NTI5LCA1NTUzNiwgNTU1NDMsIDU1NTUxLCA1NTU1OSwgNTU1NjcsIDU1NTc1LCA1NTU4MywgNTU1OTEsIAotICAgIDU1NTk5LCA1NTYwNywgNTU2MTEsIDU1NjE3LCA1NTYyMywgNTU2MjcsIDU1NjMzLCA1NTYzOSwgNTU2NDUsIDU1NjUyLCAKLSAgICA1NTY1OSwgNTU2NjYsIDU1NjczLCA1NTY3OCwgNTU2ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1NjkwLCA1NTY5OCwgCi0gICAgNTU3MDcsIDU1NzE2LCA1NTcyNCwgNTU3MzAsIDU1NzM1LCA1NTc0MCwgNTU3NDUsIDU1NzUwLCA1NTc1NSwgNTU3NjAsIAotICAgIDU1NzY1LCA1NTc3MCwgNTU3NzUsIDU1NzgwLCA1NTc4NSwgNTU3OTAsIDU1Nzk1LCA1NTgwMCwgNTU4MDUsIDU1ODEwLCAKLSAgICA1NTgxNSwgNTU4MjAsIDU1ODI1LCA1NTgzMCwgNTU4MzUsIDU1ODQwLCA1NTg0NSwgNTU4NTAsIDU1ODU1LCA1NTg2MCwgCi0gICAgNTU4NjUsIDU1ODcwLCA1NTg3NSwgNTU4ODAsIDU1ODg1LCA1NTg5MCwgNTU4OTUsIDU1OTAwLCA1NTkwNSwgNTU5MTAsIAotICAgIDU1OTE1LCA1NTkyMCwgNTU5MjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1OTMwLCA1NTkzNCwgNTU5MzksIAotICAgIDU1OTQ0LCA1NTk0OSwgNTU5NTQsIDU1OTYzLCA1NTk2OCwgNTU5NzMsIDU1OTc4LCA1NTk4MywgNTU5ODgsIDU1OTkzLCAKLSAgICA1NTk5OCwgNTYwMDMsIDU2MDEwLCA1NjAxNSwgNTYwMjAsIDU2MDI5LCA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgCi0gICAgNTYwNTgsIDU2MDYzLCA1NjA3MCwgNTYwNzUsIDU2MDgwLCA1NjA4NywgNTYwOTQsIDU2MDk5LCA1NjEwNCwgNTYxMDksIAotICAgIDU2MTE2LCA1NjEyMywgNTYxMjgsIDU2MTMzLCA1NjEzOCwgNTYxNDMsIDU2MTQ4LCA1NjE1NSwgNTYxNjIsIDU2MTY3LCAKLSAgICA1NjE3MiwgNTYxNzcsIDU2MTgyLCA1NjE4NywgNTYxOTIsIDU2MTk3LCA1NjIwMiwgNTYyMDcsIDU2MjEyLCA1NjIxNywgCi0gICAgNTYyMjQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2MjI5LCA1NjIzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTYyNDEsIDU2MjQ3LCA1NjI1MSwgNTYyNTUsIDU2MjU5LCA1NjI2MywgNTYyNjcsIDU2MjcxLCAKLSAgICA1NjI3NSwgNTYyNzksIDU2MjgzLCA1NjI4NywgNTYyOTMsIDU2Mjk3LCA1NjMwMSwgNTYzMDUsIDU2MzA5LCA1NjMxMywgCi0gICAgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMjksIDU2MzMzLCA1NjMzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTYzNDEsIDU2MzQ1LCA1NjM0OSwgNTYzNTMsIDU2MzU3LCA1NjM2MSwgNTYzNjUsIDAsIDU2MzY5LCA1NjM3MywgNTYzNzcsIAotICAgIDU2MzgxLCA1NjM4NSwgNTYzODksIDU2MzkzLCAwLCA1NjM5NywgNTY0MDEsIDU2NDA1LCA1NjQwOSwgNTY0MTMsIDU2NDE3LCAKLSAgICA1NjQyMSwgMCwgNTY0MjUsIDU2NDI5LCA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NSwgNTY0NDksIDAsIDU2NDUzLCAKLSAgICA1NjQ1NywgNTY0NjEsIDU2NDY1LCA1NjQ2OSwgNTY0NzMsIDU2NDc3LCAwLCA1NjQ4MSwgNTY0ODUsIDU2NDg5LCA1NjQ5MywgCi0gICAgNTY0OTcsIDU2NTAxLCA1NjUwNSwgMCwgNTY1MDksIDU2NTEzLCA1NjUxNywgNTY1MjEsIDU2NTI1LCA1NjUyOSwgNTY1MzMsIAotICAgIDAsIDU2NTM3LCA1NjU0MSwgNTY1NDUsIDU2NTQ5LCA1NjU1MywgNTY1NTcsIDU2NTYxLCAwLCA1NjU2NSwgNTY1NzAsIAotICAgIDU2NTc1LCA1NjU4MCwgNTY1ODUsIDU2NTkwLCA1NjU5NSwgNTY1OTksIDU2NjA0LCA1NjYwOSwgNTY2MTQsIDU2NjE4LCAKLSAgICA1NjYyMywgNTY2MjgsIDU2NjMzLCA1NjYzOCwgNTY2NDIsIDU2NjQ3LCA1NjY1MiwgNTY2NTcsIDU2NjYyLCA1NjY2NywgCi0gICAgNTY2NzIsIDU2Njc2LCA1NjY4MSwgNTY2ODYsIDU2NjkzLCA1NjY5OCwgNTY3MDMsIDU2NzA5LCA1NjcxNiwgNTY3MjMsIAotICAgIDU2NzMyLCA1NjczOSwgNTY3NDgsIDU2NzUyLCA1Njc1NiwgNTY3NjIsIDU2NzY4LCA1Njc3NCwgNTY3ODIsIDU2Nzg4LCAKLSAgICA1Njc5MiwgNTY3OTYsIDU2ODAwLCA1NjgwNiwgNTY4MTIsIDU2ODE2LCA1NjgxOCwgNTY4MjIsIDU2ODI4LCA1NjgzMCwgCi0gICAgNTY4MzQsIDU2ODM4LCA1Njg0MiwgNTY4NDgsIDU2ODUzLCA1Njg1NywgNTY4NjEsIDU2ODY2LCA1Njg3MiwgNTY4NzcsIAotICAgIDU2ODgyLCA1Njg4NywgNTY4OTIsIDU2ODk5LCA1NjkwNiwgNTY5MTEsIDU2OTE2LCA1NjkyMSwgNTY5MjYsIDU2OTMxLCAKLSAgICA1NjkzNiwgNTY5NDAsIDU2OTQ0LCA1Njk1MSwgNTY5NTgsIDU2OTY0LCA1Njk2OCwgNTY5NzMsIDU2OTc2LCA1Njk4MCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTY5ODgsIDU2OTkyLCA1Njk5NiwgNTcwMDEsIDU3MDA2LCA1NzAxMSwgNTcwMTUsIDU3MDE5LCAKLSAgICA1NzAyMywgNTcwMjgsIDU3MDMzLCA1NzAzNywgNTcwNDEsIDU3MDQ1LCA1NzA0OSwgNTcwNTQsIDU3MDU5LCA1NzA2NCwgCi0gICAgNTcwNjksIDU3MDczLCA1NzA3NywgNTcwODIsIDU3MDg3LCA1NzA5MiwgNTcwOTcsIDU3MTAxLCAwLCA1NzEwNSwgNTcxMDksIAotICAgIDU3MTEzLCA1NzExNywgNTcxMjEsIDU3MTI1LCA1NzEyOSwgNTcxMzQsIDU3MTM5LCA1NzE0MywgNTcxNDgsIDU3MTUzLCAKLSAgICA1NzE2MiwgNTcxNjYsIDU3MTcwLCA1NzE3NCwgNTcxODEsIDU3MTg1LCA1NzE5MCwgNTcxOTUsIDU3MTk5LCA1NzIwMywgCi0gICAgNTcyMDksIDU3MjE0LCA1NzIxOSwgNTcyMjQsIDU3MjI5LCA1NzIzMywgNTcyMzcsIDU3MjQxLCA1NzI0NSwgNTcyNDksIAotICAgIDU3MjU0LCA1NzI1OSwgNTcyNjMsIDU3MjY3LCA1NzI3MiwgNTcyNzcsIDU3MjgyLCA1NzI4NiwgNTcyOTAsIDU3Mjk1LCAKLSAgICA1NzMwMCwgNTczMDYsIDU3MzEyLCA1NzMxNiwgNTczMjIsIDU3MzI4LCA1NzMzMiwgNTczMzgsIDU3MzQ0LCA1NzM0OSwgCi0gICAgNTczNTQsIDU3MzU4LCA1NzM2NCwgNTczNjgsIDU3MzcyLCA1NzM3OCwgNTczODQsIDU3Mzg5LCA1NzM5NCwgNTczOTgsIAotICAgIDU3NDAyLCA1NzQxMCwgNTc0MTYsIDU3NDIyLCA1NzQyOCwgNTc0MzMsIDU3NDM4LCA1NzQ0MywgNTc0NDksIDU3NDUzLCAKLSAgICA1NzQ1OSwgNTc0NjMsIDU3NDY3LCA1NzQ3MywgNTc0NzksIDU3NDg1LCA1NzQ5MSwgNTc0OTcsIDU3NTAzLCA1NzUwOSwgCi0gICAgNTc1MTUsIDU3NTIxLCA1NzUyNywgNTc1MzMsIDU3NTM5LCA1NzU0MywgNTc1NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU3NTU1LCA1NzU1OCwgNTc1NjIsIDU3NTY2LCA1NzU3MCwgNTc1NzQsIDU3NTc3LCA1NzU4MCwgCi0gICAgNTc1ODQsIDU3NTg4LCA1NzU5MiwgNTc1OTYsIDU3NTk5LCA1NzYwNCwgNTc2MDgsIDU3NjEyLCA1NzYxNiwgNTc2MjIsIAotICAgIDU3NjI2LCA1NzYzMCwgNTc2MzQsIDU3NjM4LCA1NzY0NSwgNTc2NTEsIDU3NjU1LCA1NzY1OSwgNTc2NjMsIDU3NjY3LCAKLSAgICA1NzY3MSwgNTc2NzUsIDU3Njc5LCA1NzY4MywgNTc2ODcsIDU3NjkxLCA1NzY5NSwgNTc3MDEsIDU3NzA1LCA1NzcwOSwgCi0gICAgNTc3MTMsIDU3NzE3LCA1NzcyMSwgNTc3MjUsIDU3NzI5LCA1NzczMywgNTc3MzcsIDU3NzQxLCA1Nzc0NSwgNTc3NDksIAotICAgIDU3NzUzLCA1Nzc1NywgNTc3NjEsIDU3NzY1LCA1Nzc3MSwgNTc3NzcsIDU3NzgyLCA1Nzc4NywgNTc3OTEsIDU3Nzk1LCAKLSAgICA1Nzc5OSwgNTc4MDMsIDU3ODA3LCA1NzgxMSwgNTc4MTUsIDU3ODE5LCA1NzgyMywgNTc4MjcsIDU3ODMxLCA1NzgzNSwgCi0gICAgNTc4MzksIDU3ODQzLCA1Nzg0NywgNTc4NTEsIDU3ODU1LCA1Nzg1OSwgNTc4NjMsIDU3ODY3LCA1Nzg3MSwgNTc4NzUsIAotICAgIDU3ODc5LCA1Nzg4MywgNTc4ODksIDU3ODkzLCA1Nzg5NywgNTc5MDEsIDU3OTA1LCA1NzkwOSwgNTc5MTMsIDU3OTE3LCAKLSAgICA1NzkyMSwgNTc5MjYsIDU3OTMzLCA1NzkzNywgNTc5NDEsIDU3OTQ1LCA1Nzk0OSwgNTc5NTMsIDU3OTU3LCA1Nzk2MSwgCi0gICAgNTc5NjUsIDU3OTY5LCA1Nzk3MywgNTc5NzcsIDU3OTgxLCA1Nzk4OCwgNTc5OTIsIDU3OTk4LCA1ODAwMiwgNTgwMDYsIAotICAgIDU4MDEwLCA1ODAxNCwgNTgwMTgsIDU4MDIxLCA1ODAyNSwgNTgwMjksIDU4MDMzLCA1ODAzNywgNTgwNDEsIDU4MDQ1LCAKLSAgICA1ODA0OSwgNTgwNTMsIDU4MDU3LCA1ODA2MSwgNTgwNjUsIDU4MDY5LCA1ODA3MywgNTgwNzcsIDU4MDgxLCA1ODA4NSwgCi0gICAgNTgwODksIDU4MDkzLCA1ODA5NywgNTgxMDEsIDU4MTA1LCA1ODEwOSwgNTgxMTMsIDU4MTE3LCA1ODEyMSwgNTgxMjUsIAotICAgIDU4MTI5LCA1ODEzMywgNTgxMzcsIDU4MTQxLCA1ODE0NSwgNTgxNDksIDU4MTU1LCA1ODE1OSwgNTgxNjMsIDU4MTY3LCAKLSAgICA1ODE3MSwgNTgxNzUsIDU4MTc5LCA1ODE4MywgNTgxODcsIDU4MTkxLCA1ODE5NSwgNTgxOTksIDU4MjAzLCA1ODIwNywgCi0gICAgNTgyMTEsIDU4MjE1LCA1ODIxOSwgNTgyMjMsIDU4MjI3LCA1ODIzMSwgNTgyMzUsIDU4MjM5LCA1ODI0MywgNTgyNDcsIAotICAgIDU4MjUxLCA1ODI1NSwgNTgyNTksIDU4MjYzLCA1ODI3MSwgNTgyNzUsIDU4Mjc5LCA1ODI4MywgNTgyODcsIDU4MjkxLCAKLSAgICA1ODI5NywgNTgzMDEsIDU4MzA1LCA1ODMwOSwgNTgzMTMsIDU4MzE3LCA1ODMyMSwgNTgzMjUsIDU4MzI5LCA1ODMzMywgCi0gICAgNTgzMzcsIDU4MzQxLCA1ODM0NSwgNTgzNDksIDU4MzU1LCA1ODM1OSwgNTgzNjMsIDU4MzY3LCA1ODM3MSwgNTgzNzUsIAotICAgIDU4Mzc5LCA1ODM4MywgNTgzODcsIDU4MzkxLCA1ODM5NSwgNTgzOTksIDU4NDAzLCA1ODQwNywgNTg0MTEsIDU4NDE1LCAKLSAgICA1ODQxOSwgNTg0MjMsIDU4NDI3LCA1ODQzMSwgNTg0MzUsIDU4NDM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1ODQ0MywgNTg0NTIsIDU4NDYwLCAKLSAgICA1ODQ3MiwgNTg0ODMsIDU4NDkxLCA1ODUwMCwgNTg1MDksIDU4NTE5LCA1ODUzMSwgNTg1NDMsIDU4NTU1LCAwLCAwLCAwLCAKLSAgICAwLCA1ODU2MSwgNTg1NjQsIDU4NTY3LCA1ODU3MiwgNTg1NzUsIDU4NTgyLCA1ODU4NiwgNTg1OTAsIDU4NTk0LCA1ODU5OCwgCi0gICAgNTg2MDIsIDU4NjA3LCA1ODYxMiwgNTg2MTYsIDU4NjIwLCA1ODYyNSwgNTg2MzAsIDU4NjM1LCA1ODY0MCwgNTg2NDMsIAotICAgIDU4NjQ2LCA1ODY1MiwgNTg2NTgsIDU4NjYzLCA1ODY2OCwgNTg2NzUsIDU4NjgyLCA1ODY4NiwgNTg2OTAsIDU4Njk0LCAKLSAgICA1ODcwMiwgNTg3MDgsIDU4NzE1LCA1ODcyMCwgNTg3MjUsIDU4NzMwLCA1ODczNSwgNTg3NDAsIDU4NzQ1LCA1ODc1MCwgCi0gICAgNTg3NTUsIDU4NzYwLCA1ODc2NSwgNTg3NzAsIDU4Nzc1LCA1ODc4MCwgNTg3ODUsIDU4NzkxLCA1ODc5NiwgNTg4MDAsIAotICAgIDU4ODA2LCA1ODgxNywgNTg4MjcsIDU4ODQyLCA1ODg1MiwgNTg4NTYsIDU4ODY1LCA1ODg3MSwgNTg4NzcsIDU4ODgzLCAKLSAgICA1ODg4OCwgNTg4OTEsIDU4ODk2LCA1ODkwMCwgMCwgNTg5MDYsIDU4OTEwLCA1ODkxMywgNTg5MTcsIDU4OTIwLCA1ODkyNCwgCi0gICAgNTg5MjcsIDU4OTMxLCA1ODkzNCwgNTg5MzgsIDU4OTQxLCA1ODk0NCwgNTg5NDgsIDU4OTUyLCA1ODk1NiwgNTg5NjAsIAotICAgIDU4OTY0LCA1ODk2OCwgNTg5NzIsIDU4OTc2LCA1ODk4MCwgNTg5ODQsIDU4OTg4LCA1ODk5MiwgNTg5OTYsIDU5MDAwLCAKLSAgICA1OTAwNCwgNTkwMDgsIDU5MDEyLCA1OTAxNiwgNTkwMjAsIDU5MDI0LCA1OTAyOCwgNTkwMzIsIDU5MDM2LCA1OTA0MSwgCi0gICAgNTkwNDUsIDU5MDQ5LCA1OTA1MywgNTkwNTcsIDU5MDYwLCA1OTA2NCwgNTkwNjcsIDU5MDcxLCA1OTA3NSwgNTkwNzksIAotICAgIDU5MDgzLCA1OTA4NiwgNTkwOTAsIDU5MDkzLCA1OTA5NywgNTkxMDEsIDU5MTA1LCA1OTEwOSwgNTkxMTMsIDU5MTE3LCAKLSAgICA1OTEyMSwgNTkxMjUsIDU5MTI5LCA1OTEzMywgNTkxMzcsIDU5MTQxLCA1OTE0NCwgNTkxNDgsIDU5MTUyLCA1OTE1NiwgCi0gICAgNTkxNjAsIDU5MTY0LCA1OTE2NywgNTkxNzIsIDU5MTc2LCA1OTE4MSwgNTkxODUsIDU5MTg4LCA1OTE5MiwgNTkxOTYsIAotICAgIDU5MjAwLCA1OTIwNCwgNTkyMDksIDU5MjEzLCA1OTIxNywgNTkyMjEsIDU5MjI1LCA1OTIyOCwgNTkyMzIsIDU5MjM2LCAwLCAKLSAgICAwLCA1OTI0MSwgNTkyNDksIDU5MjU3LCA1OTI2NCwgNTkyNzEsIDU5Mjc1LCA1OTI4MSwgNTkyODYsIDU5MjkxLCA1OTI5NSwgCi0gICAgNTkyOTgsIDU5MzAyLCA1OTMwNSwgNTkzMDksIDU5MzEyLCA1OTMxNiwgNTkzMTksIDU5MzIzLCA1OTMyNiwgNTkzMjksIAotICAgIDU5MzMzLCA1OTMzNywgNTkzNDEsIDU5MzQ1LCA1OTM0OSwgNTkzNTMsIDU5MzU3LCA1OTM2MSwgNTkzNjUsIDU5MzY5LCAKLSAgICA1OTM3MywgNTkzNzcsIDU5MzgxLCA1OTM4NSwgNTkzODksIDU5MzkzLCA1OTM5NywgNTk0MDEsIDU5NDA1LCA1OTQwOSwgCi0gICAgNTk0MTMsIDU5NDE3LCA1OTQyMSwgNTk0MjYsIDU5NDMwLCA1OTQzNCwgNTk0MzgsIDU5NDQyLCA1OTQ0NSwgNTk0NDksIAotICAgIDU5NDUyLCA1OTQ1NiwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzEsIDU5NDc1LCA1OTQ3OCwgNTk0ODIsIDU5NDg2LCAKLSAgICA1OTQ5MCwgNTk0OTQsIDU5NDk4LCA1OTUwMiwgNTk1MDYsIDU5NTEwLCA1OTUxNCwgNTk1MTgsIDU5NTIyLCA1OTUyNiwgCi0gICAgNTk1MjksIDU5NTMzLCA1OTUzNywgNTk1NDEsIDU5NTQ1LCA1OTU0OSwgNTk1NTIsIDU5NTU3LCA1OTU2MSwgNTk1NjYsIAotICAgIDU5NTcwLCA1OTU3MywgNTk1NzcsIDU5NTgxLCA1OTU4NSwgNTk1ODksIDU5NTk0LCA1OTU5OCwgNTk2MDIsIDU5NjA2LCAKLSAgICA1OTYxMCwgNTk2MTMsIDU5NjE3LCA1OTYyMSwgNTk2MjYsIDU5NjMwLCA1OTYzNCwgNTk2MzgsIDU5NjQyLCA1OTY0NywgCi0gICAgNTk2NTQsIDU5NjU4LCA1OTY2NCwgMCwgMCwgMCwgMCwgMCwgNTk2NjksIDU5NjczLCA1OTY3NywgNTk2ODAsIDU5Njg0LCAKLSAgICA1OTY4OCwgNTk2OTIsIDU5Njk1LCA1OTY5OCwgNTk3MDIsIDU5NzA2LCA1OTcxMCwgNTk3MTQsIDU5NzE4LCA1OTcyMiwgCi0gICAgNTk3MjYsIDU5NzMwLCA1OTczNCwgNTk3MzcsIDU5NzQxLCA1OTc0NSwgNTk3NDgsIDU5NzUxLCA1OTc1NCwgNTk3NTcsIAotICAgIDU5NzYxLCA1OTc2NSwgNTk3NjksIDU5NzczLCA1OTc3NywgNTk3ODEsIDU5Nzg1LCA1OTc4OSwgNTk3OTMsIDU5Nzk3LCAKLSAgICA1OTgwMCwgNTk4MDMsIDU5ODA3LCA1OTgxMSwgNTk4MTUsIDU5ODE5LCAwLCAwLCAwLCA1OTgyMywgNTk4MjcsIDU5ODMxLCAKLSAgICA1OTgzNSwgNTk4MzksIDU5ODQzLCA1OTg0NywgNTk4NTEsIDU5ODU1LCA1OTg1OSwgNTk4NjMsIDU5ODY3LCA1OTg3MSwgCi0gICAgNTk4NzUsIDU5ODc5LCA1OTg4MywgNTk4ODcsIDU5ODkxLCA1OTg5NSwgNTk4OTksIDU5OTAzLCA1OTkwNywgNTk5MTEsIAotICAgIDU5OTE1LCA1OTkxOSwgNTk5MjMsIDU5OTI3LCA1OTkzMSwgNTk5MzUsIDU5OTM5LCA1OTk0MywgNTk5NDYsIDU5OTUwLCAKLSAgICA1OTk1MywgNTk5NTcsIDU5OTYxLCA1OTk2NCwgNTk5NjgsIDU5OTcyLCA1OTk3NSwgNTk5NzksIDU5OTgzLCA1OTk4NywgCi0gICAgNTk5OTEsIDU5OTk0LCA1OTk5OCwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTQsIDYwMDE4LCA2MDAyMSwgNjAwMjQsIAotICAgIDYwMDI4LCA2MDAzMiwgNjAwMzYsIDYwMDQwLCA2MDA0NCwgNjAwNDgsIDYwMDUyLCA2MDA1NiwgNjAwNjAsIDYwMDY0LCAKLSAgICA2MDA2OCwgNjAwNzIsIDYwMDc2LCA2MDA4MCwgNjAwODQsIDYwMDg4LCA2MDA5MiwgNjAwOTYsIDYwMTAwLCA2MDEwNCwgCi0gICAgNjAxMDgsIDYwMTEyLCA2MDExNiwgNjAxMjAsIDYwMTI0LCA2MDEyOCwgNjAxMzIsIDYwMTM2LCA2MDE0MCwgNjAxNDQsIAotICAgIDYwMTQ4LCA2MDE1MiwgNjAxNTYsIDYwMTYwLCA2MDE2NCwgNjAxNjgsIDYwMTcyLCA2MDE3NiwgNjAxODAsIDYwMTg0LCAKLSAgICA2MDE4OCwgMCwgNjAxOTIsIDYwMTk4LCA2MDIwNCwgNjAyMDksIDYwMjE0LCA2MDIxOSwgNjAyMjUsIDYwMjMxLCA2MDIzNywgCi0gICAgNjAyNDMsIDYwMjQ5LCA2MDI1NSwgNjAyNjEsIDYwMjY3LCA2MDI3MywgNjAyNzksIDYwMjg1LCA2MDI4OSwgNjAyOTMsIAotICAgIDYwMjk3LCA2MDMwMSwgNjAzMDUsIDYwMzA5LCA2MDMxMywgNjAzMTcsIDYwMzIxLCA2MDMyNSwgNjAzMjksIDYwMzMzLCAKLSAgICA2MDMzNywgNjAzNDEsIDYwMzQ1LCA2MDM0OSwgNjAzNTMsIDYwMzU3LCA2MDM2MSwgNjAzNjUsIDYwMzcwLCA2MDM3NSwgCi0gICAgNjAzODAsIDYwMzg1LCA2MDM4OSwgNjAzOTMsIDAsIDAsIDAsIDAsIDAsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDEyLCAKLSAgICA2MDQxNywgNjA0MjIsIDYwNDI3LCA2MDQzMiwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTIsIDYwNDU3LCA2MDQ2MiwgCi0gICAgNjA0NjcsIDYwNDcyLCA2MDQ3NiwgNjA0ODEsIDYwNDg1LCA2MDQ5MCwgNjA0OTUsIDYwNTAwLCA2MDUwNSwgNjA1MTAsIAotICAgIDYwNTE1LCA2MDUyMCwgNjA1MjUsIDYwNTMwLCA2MDUzNSwgNjA1NDAsIDYwNTQ1LCA2MDU1MCwgNjA1NTUsIDYwNTYwLCAKLSAgICA2MDU2NSwgNjA1NzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYwNTc1LCA2MDU4MCwgNjA1ODUsIAotICAgIDYwNTkwLCA2MDU5NCwgNjA1OTksIDYwNjAzLCA2MDYwOCwgNjA2MTMsIDYwNjE4LCA2MDYyMywgNjA2MjgsIDYwNjMyLCAKLSAgICA2MDYzNywgNjA2NDIsIDYwNjQ3LCA2MDY1MiwgNjA2NTYsIDYwNjYwLCA2MDY2NCwgNjA2NjgsIDYwNjcyLCA2MDY3NiwgCi0gICAgNjA2ODAsIDYwNjg0LCA2MDY4OCwgNjA2OTIsIDYwNjk2LCA2MDcwMCwgNjA3MDQsIDYwNzA4LCA2MDcxMywgNjA3MTgsIAotICAgIDYwNzIzLCA2MDcyOCwgNjA3MzMsIDYwNzM4LCA2MDc0MywgNjA3NDgsIDYwNzUzLCA2MDc1OCwgNjA3NjMsIDYwNzY4LCAKLSAgICA2MDc3MywgNjA3NzgsIDYwNzgzLCA2MDc4OSwgMCwgNjA3OTYsIDYwNzk5LCA2MDgwMiwgNjA4MDUsIDYwODA4LCA2MDgxMSwgCi0gICAgNjA4MTQsIDYwODE3LCA2MDgyMCwgNjA4MjMsIDYwODI3LCA2MDgzMSwgNjA4MzUsIDYwODM5LCA2MDg0MywgNjA4NDcsIAotICAgIDYwODUxLCA2MDg1NSwgNjA4NTksIDYwODYzLCA2MDg2NywgNjA4NzEsIDYwODc1LCA2MDg3OSwgNjA4ODMsIDYwODg3LCAKLSAgICA2MDg5MSwgNjA4OTUsIDYwODk5LCA2MDkwMywgNjA5MDcsIDYwOTExLCA2MDkxNSwgNjA5MTksIDYwOTIzLCA2MDkyNywgCi0gICAgNjA5MzEsIDYwOTM1LCA2MDkzOSwgNjA5NDMsIDYwOTQ3LCA2MDk1NiwgNjA5NjUsIDYwOTc0LCA2MDk4MywgNjA5OTIsIAotICAgIDYxMDAxLCA2MTAxMCwgNjEwMTksIDYxMDIyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCAKLSAgICA2MTA1NywgNjEwNjIsIDYxMDY3LCA2MTA3MSwgNjEwNzYsIDYxMDgxLCA2MTA4NiwgNjEwOTEsIDYxMDk2LCA2MTEwMCwgCi0gICAgNjExMDQsIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIAotICAgIDYxMTQ0LCA2MTE0OCwgNjExNTIsIDYxMTU3LCA2MTE2MiwgNjExNjcsIDYxMTcyLCA2MTE3NywgNjExODIsIDYxMTg3LCAKLSAgICA2MTE5MiwgNjExOTcsIDYxMjAyLCA2MTIwNywgNjEyMTIsIDYxMjE3LCA2MTIyMiwgNjEyMjgsIDYxMjM0LCA2MTIzOSwgCi0gICAgNjEyNDQsIDYxMjQ3LCA2MTI1MCwgNjEyNTMsIDYxMjU2LCA2MTI1OSwgNjEyNjIsIDYxMjY1LCA2MTI2OCwgNjEyNzEsIAotICAgIDYxMjc1LCA2MTI3OSwgNjEyODMsIDYxMjg3LCA2MTI5MSwgNjEyOTUsIDYxMjk5LCA2MTMwMywgNjEzMDcsIDYxMzExLCAKLSAgICA2MTMxNSwgNjEzMTksIDYxMzIzLCA2MTMyNywgNjEzMzEsIDYxMzM1LCA2MTMzOSwgNjEzNDMsIDYxMzQ3LCA2MTM1MSwgCi0gICAgNjEzNTUsIDYxMzU5LCA2MTM2MywgNjEzNjcsIDYxMzcxLCA2MTM3NSwgNjEzNzksIDYxMzgzLCA2MTM4NywgNjEzOTEsIAotICAgIDYxMzk1LCA2MTM5OSwgNjE0MDMsIDYxNDA3LCA2MTQxMSwgNjE0MTUsIDYxNDE5LCA2MTQyMywgNjE0MjcsIDYxNDMxLCAKLSAgICA2MTQzNiwgNjE0NDEsIDYxNDQ2LCA2MTQ1MSwgNjE0NTUsIDYxNDYwLCA2MTQ2NSwgNjE0NzAsIDYxNDc1LCA2MTQ4MCwgCi0gICAgNjE0ODUsIDYxNDkwLCA2MTQ5NSwgNjE1MDAsIDYxNTA0LCA2MTUxMCwgNjE1MTYsIDYxNTIyLCA2MTUyOCwgNjE1MzQsIAotICAgIDYxNTQwLCA2MTU0NiwgNjE1NTIsIDYxNTU4LCA2MTU2NCwgNjE1NzAsIDYxNTc2LCA2MTU3OSwgNjE1ODIsIDYxNTg1LCAKLSAgICA2MTU5MCwgNjE1OTMsIDYxNTk2LCA2MTU5OSwgNjE2MDIsIDYxNjA1LCA2MTYwOCwgNjE2MTIsIDYxNjE2LCA2MTYyMCwgCi0gICAgNjE2MjQsIDYxNjI4LCA2MTYzMiwgNjE2MzYsIDYxNjQwLCA2MTY0NCwgNjE2NDgsIDYxNjUyLCA2MTY1NiwgNjE2NjAsIAotICAgIDYxNjYzLCA2MTY2NiwgNjE2NzAsIDYxNjc0LCA2MTY3OCwgNjE2ODIsIDYxNjg1LCA2MTY4OSwgNjE2OTMsIDYxNjk3LCAKLSAgICA2MTcwMSwgNjE3MDQsIDYxNzA4LCA2MTcxMiwgNjE3MTYsIDYxNzIwLCA2MTcyMywgNjE3MjcsIDYxNzMxLCA2MTczNCwgCi0gICAgNjE3MzgsIDYxNzQyLCA2MTc0NiwgNjE3NTAsIDYxNzU0LCA2MTc1OCwgNjE3NjIsIDAsIDYxNzY2LCA2MTc2OSwgNjE3NzIsIAotICAgIDYxNzc1LCA2MTc3OCwgNjE3ODEsIDYxNzg0LCA2MTc4NywgNjE3OTAsIDYxNzkzLCA2MTc5NiwgNjE3OTksIDYxODAyLCAKLSAgICA2MTgwNSwgNjE4MDgsIDYxODExLCA2MTgxNCwgNjE4MTcsIDYxODIwLCA2MTgyMywgNjE4MjYsIDYxODI5LCA2MTgzMiwgCi0gICAgNjE4MzUsIDYxODM4LCA2MTg0MSwgNjE4NDQsIDYxODQ3LCA2MTg1MCwgNjE4NTMsIDYxODU2LCA2MTg1OSwgNjE4NjIsIAotICAgIDYxODY1LCA2MTg2OCwgNjE4NzEsIDYxODc0LCA2MTg3NywgNjE4ODAsIDYxODgzLCA2MTg4NiwgNjE4ODksIDYxODkyLCAKLSAgICA2MTg5NSwgNjE4OTgsIDYxOTAxLCA2MTkwNCwgNjE5MDcsIDYxOTEwLCA2MTkxMywgNjE5MTYsIDYxOTE5LCA2MTkyMiwgCi0gICAgNjE5MjUsIDYxOTI4LCA2MTkzMSwgNjE5MzQsIDYxOTM3LCA2MTk0MCwgNjE5NDMsIDYxOTQ2LCA2MTk0OSwgNjE5NTIsIAotICAgIDYxOTU1LCA2MTk1OCwgNjE5NjEsIDYxOTY0LCA2MTk2NywgNjE5NzAsIDYxOTczLCA2MTk3NiwgNjE5NzksIDYxOTgyLCAKLSAgICA2MTk4NSwgNjE5ODgsIDYxOTkxLCA2MTk5NCwgNjE5OTcsIDYyMDAwLCA2MjAwMywgNjIwMDYsIDYyMDA5LCA2MjAxMiwgCi0gICAgNjIwMTUsIDYyMDE4LCA2MjAyMSwgNjIwMjQsIDYyMDI3LCA2MjAzMCwgNjIwMzgsIDYyMDQ1LCA2MjA1MiwgNjIwNTksIAotICAgIDYyMDY2LCA2MjA3MywgNjIwODAsIDYyMDg3LCA2MjA5NCwgNjIxMDEsIDYyMTA5LCA2MjExNywgNjIxMjUsIDYyMTMzLCAKLSAgICA2MjE0MSwgNjIxNDksIDYyMTU3LCA2MjE2NSwgNjIxNzMsIDYyMTgxLCA2MjE4OSwgNjIxOTcsIDYyMjA1LCA2MjIxMywgCi0gICAgNjIyMjEsIDYyMjI0LCA2MjIyNywgNjIyMzAsIDYyMjMyLCA2MjIzNSwgNjIyMzgsIDYyMjQxLCA2MjI0NiwgNjIyNTEsIAotICAgIDYyMjU0LCA2MjI2MSwgNjIyNjgsIDYyMjc1LCA2MjI4MiwgNjIyODUsIDYyMjkwLCA2MjI5MiwgNjIyOTYsIDYyMjk4LCAKLSAgICA2MjMwMCwgNjIzMDMsIDYyMzA2LCA2MjMwOSwgNjIzMTIsIDYyMzE1LCA2MjMxOCwgNjIzMjEsIDYyMzI2LCA2MjMzMSwgCi0gICAgNjIzMzQsIDYyMzM3LCA2MjM0MCwgNjIzNDMsIDYyMzQ2LCA2MjM0OSwgNjIzNTIsIDYyMzU2LCA2MjM1OSwgNjIzNjIsIAotICAgIDYyMzY1LCA2MjM2OCwgNjIzNzEsIDYyMzc1LCA2MjM3OCwgNjIzODEsIDYyMzg0LCA2MjM4OSwgNjIzOTQsIDYyMzk5LCAKLSAgICA2MjQwNCwgNjI0MDksIDYyNDE0LCA2MjQxOSwgNjI0MjQsIDYyNDI5LCA2MjQzNywgNjI0MzksIDYyNDQyLCA2MjQ0NSwgCi0gICAgNjI0NDgsIDYyNDUxLCA2MjQ1NiwgNjI0NjQsIDYyNDY3LCA2MjQ3MCwgNjI0NzQsIDYyNDc3LCA2MjQ4MCwgNjI0ODMsIAotICAgIDYyNDg4LCA2MjQ5MSwgNjI0OTQsIDYyNDk5LCA2MjUwMiwgNjI1MDUsIDYyNTEwLCA2MjUxMywgNjI1MTYsIDYyNTIxLCAKLSAgICA2MjUyNiwgNjI1MzEsIDYyNTM0LCA2MjUzNywgNjI1NDAsIDYyNTQzLCA2MjU0OSwgNjI1NTIsIDYyNTU1LCA2MjU1OCwgCi0gICAgNjI1NjAsIDYyNTYzLCA2MjU2NiwgNjI1NjksIDYyNTc0LCA2MjU3NywgNjI1ODAsIDYyNTgzLCA2MjU4NiwgNjI1ODksIAotICAgIDYyNTk0LCA2MjU5NywgNjI2MDAsIDYyNjAzLCA2MjYwNiwgNjI2MDksIDYyNjEyLCA2MjYxNSwgNjI2MTgsIDYyNjIxLCAKLSAgICA2MjYyNiwgNjI2MzAsIDYyNjM3LCA2MjY0NCwgNjI2NTEsIDYyNjU4LCA2MjY2NSwgNjI2NzIsIDYyNjc5LCA2MjY4NiwgCi0gICAgNjI2OTMsIDYyNzAxLCA2MjcwOSwgNjI3MTcsIDYyNzI1LCA2MjczMywgNjI3NDEsIDYyNzQ5LCA2Mjc1NywgNjI3NjUsIAotICAgIDYyNzczLCA2Mjc4MSwgNjI3ODksIDYyNzk3LCA2MjgwNSwgNjI4MTMsIDYyODIxLCA2MjgyOSwgNjI4MzcsIDYyODQ1LCAKLSAgICA2Mjg1MywgNjI4NjEsIDYyODY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNDcsIDE1MSwgMTU2LCAxNjEsIDE2NSwgMTcwLCAxNzUsIDE3OSwgMTg0LCAxODksIDE5NCwgMTk5LCAyMDQsIDIwNywgCisgICAgMjExLCAyMTQsIDIxOCwgMjIxLCAyMjUsIDIyOSwgMjM0LCAyMzksIDI0NCwgMjQ4LCAyNTMsIDI1OCwgMjYzLCAyNjcsIAorICAgIDI3MiwgMjc3LCAyODEsIDI4NSwgMjkwLCAyOTQsIDI5OSwgMzA0LCAzMDgsIDMxMywgMzE4LCAzMjIsIDMyNywgMzMyLCAKKyAgICAzMzcsIDM0MiwgMzQ3LCAzNTEsIDM1NCwgMzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNTksIDM2MywgMzY4LCAKKyAgICAzNzEsIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODgsIDM5MSwgMzk3LCA0MDUsIDQwOCwgNDEyLCA0MTUsIDQxNywgCisgICAgNDIwLCA0MjMsIDQyNiwgNDI5LCA0MzMsIDQzNiwgNDM5LCA0NDMsIDQ0NSwgNDQ4LCA0NTQsIDQ2MiwgNDY5LCA0NzYsIAorICAgIDQ4MywgNDg4LCA0OTUsIDUwMSwgNTA4LCA1MTQsIDUyMSwgNTI5LCA1MzQsIDU0MiwgNTQ5LCA1NTUsIDU2MiwgNTY5LCAKKyAgICA1NzcsIDU4NCwgNTkyLCA2MDAsIDYwNSwgNjEyLCA2MTksIDYyNSwgNjMyLCA2MzgsIDY0NSwgNjQ4LCA2NTQsIDY2MSwgCisgICAgNjY3LCA2NzQsIDY4MSwgNjg4LCA2OTMsIDcwMCwgNzA3LCA3MTMsIDcyMCwgNzI2LCA3MzMsIDc0MSwgNzQ2LCA3NTQsIAorICAgIDc2MSwgNzY3LCA3NzQsIDc4MSwgNzg5LCA3OTYsIDgwNCwgODEyLCA4MTcsIDgyNCwgODMxLCA4MzcsIDg0NCwgODUwLCAKKyAgICA4NTcsIDg2MCwgODY2LCA4NzMsIDg3OSwgODg2LCA4OTMsIDkwMCwgOTA1LCA5MTMsIDkyMCwgOTI3LCA5MzQsIDk0MSwgCisgICAgOTQ4LCA5NTUsIDk2MiwgOTY5LCA5NzcsIDk4NSwgOTkzLCAxMDAxLCAxMDA5LCAxMDE3LCAxMDI1LCAxMDMzLCAxMDQwLCAKKyAgICAxMDQ3LCAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI1LCAKKyAgICAxMTMzLCAxMTQxLCAxMTQ5LCAxMTU3LCAxMTY1LCAxMTczLCAxMTgxLCAxMTg5LCAxMTk3LCAxMjA0LCAxMjExLCAxMjE4LCAKKyAgICAxMjI1LCAxMjMzLCAxMjQxLCAxMjQ5LCAxMjU3LCAxMjY1LCAxMjczLCAxMjgxLCAxMjg3LCAxMjkyLCAxMjk3LCAxMzA1LCAKKyAgICAxMzEzLCAxMzIxLCAxMzI5LCAxMzM0LCAxMzQxLCAxMzQ4LCAxMzU2LCAxMzY0LCAxMzcyLCAxMzgwLCAxMzkwLCAxNDAwLCAKKyAgICAxNDA3LCAxNDE0LCAxNDIxLCAxNDI4LCAxNDM2LCAxNDQ0LCAxNDUyLCAxNDYwLCAxNDcxLCAxNDc2LCAxNDgxLCAxNDg4LCAKKyAgICAxNDk1LCAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTI4LCAxNTMzLCAxNTQwLCAxNTQ3LCAxNTU1LCAxNTYzLCAxNTcxLCAKKyAgICAxNTc5LCAxNTg2LCAxNTkzLCAxNjAxLCAxNjA5LCAxNjE3LCAxNjI1LCAxNjMzLCAxNjQxLCAxNjQ5LCAxNjU3LCAxNjY1LCAKKyAgICAxNjczLCAxNjgwLCAxNjg3LCAxNjkzLCAxNjk5LCAxNzA2LCAxNzEzLCAxNzIwLCAxNzI3LCAxNzM1LCAxNzQzLCAxNzUwLCAKKyAgICAxNzU3LCAxNzY0LCAxNzcxLCAxNzc5LCAxNzg3LCAxNzk1LCAxODAzLCAxODExLCAxODE4LCAxODI1LCAxODMzLCAxODQxLCAKKyAgICAxODQ5LCAxODU3LCAxODYzLCAxODY5LCAxODc1LCAxODgyLCAxODg5LCAxODk0LCAxODk5LCAxOTA0LCAxOTExLCAxOTE4LCAKKyAgICAxOTI1LCAxOTMyLCAxOTQwLCAxOTQ4LCAxOTU1LCAxOTYxLCAxOTY2LCAxOTcxLCAxOTc4LCAxOTg1LCAxOTkyLCAxOTk3LCAKKyAgICAyMDAyLCAyMDA3LCAyMDE0LCAyMDIxLCAyMDI4LCAyMDM1LCAyMDQyLCAyMDQ4LCAyMDU2LCAyMDY2LCAyMDc0LCAyMDgxLCAKKyAgICAyMDg4LCAyMDkzLCAyMDk4LCAyMTA1LCAyMTEyLCAyMTE2LCAyMTIxLCAyMTI2LCAyMTMxLCAyMTM5LCAyMTQ4LCAyMTU1LCAKKyAgICAyMTYyLCAyMTcxLCAyMTc4LCAyMTg1LCAyMTkwLCAyMTk3LCAyMjA0LCAyMjExLCAyMjE4LCAyMjI1LCAyMjMwLCAyMjM3LCAKKyAgICAyMjQ0LCAyMjUyLCAyMjU3LCAyMjYyLCAyMjY3LCAyMjc3LCAyMjgxLCAyMjg3LCAyMjkzLCAyMjk5LCAyMzA1LCAyMzEzLCAKKyAgICAyMzI2LCAyMzM0LCAyMzM5LCAyMzQ5LCAyMzU0LCAyMzU5LCAyMzY5LCAyMzc0LCAyMzgxLCAyMzg4LCAyMzk2LCAyNDA0LCAKKyAgICAyNDExLCAyNDE4LCAyNDI1LCAyNDMyLCAyNDQyLCAyNDUyLCAyNDYxLCAyNDcwLCAyNDgwLCAyNDkwLCAyNTAwLCAyNTEwLCAKKyAgICAyNTE2LCAyNTI2LCAyNTM2LCAyNTQ2LCAyNTU2LCAyNTY0LCAyNTcyLCAyNTc5LCAyNTg2LCAyNTk0LCAyNjAyLCAyNjEwLCAKKyAgICAyNjE4LCAyNjI1LCAyNjMyLCAyNjQyLCAyNjUyLCAyNjYwLCAyNjY4LCAyNjc2LCAyNjgxLCAyNjkxLCAyNjk2LCAyNzAzLCAKKyAgICAyNzEwLCAyNzE1LCAyNzIwLCAyNzI4LCAyNzM2LCAyNzQ2LCAyNzU2LCAyNzYzLCAyNzcwLCAyNzc5LCAyNzg4LCAyNzk2LCAKKyAgICAyODA0LCAyODEzLCAyODIyLCAyODMwLCAyODM4LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODg0LCAyODk0LCAyOTAyLCAKKyAgICAyOTEwLCAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU2LCAyOTY2LCAyOTc0LCAyOTgyLCAyOTkxLCAzMDAwLCAzMDA5LCAKKyAgICAzMDE4LCAzMDI3LCAzMDM2LCAzMDQxLCAzMDQ2LCAzMDU0LCAzMDYyLCAzMDcyLCAzMDgwLCAzMDg1LCAzMDkwLCAzMDk3LCAKKyAgICAzMTA0LCAzMTExLCAzMTE4LCAzMTI1LCAzMTMyLCAzMTQyLCAzMTUyLCAzMTYyLCAzMTcyLCAzMTc5LCAzMTg2LCAzMTk2LCAKKyAgICAzMjA2LCAzMjE0LCAzMjIyLCAzMjMwLCAzMjM4LCAzMjQ2LCAzMjUzLCAzMjYwLCAzMjY3LCAzMjczLCAzMjgwLCAzMjg3LCAKKyAgICAzMjk0LCAzMzAzLCAzMzEzLCAzMzIzLCAzMzMwLCAzMzM3LCAzMzQzLCAzMzQ4LCAzMzU1LCAzMzYxLCAzMzY3LCAzMzc0LCAKKyAgICAzMzgxLCAzMzkyLCAzNDAyLCAzNDA5LCAzNDE2LCAzNDIzLCAzNDMwLCAzNDM2LCAzNDQxLCAzNDQ4LCAzNDU0LCAzNDU5LCAKKyAgICAzNDY3LCAzNDc1LCAzNDgyLCAzNDg4LCAzNDkzLCAzNTAwLCAzNTA1LCAzNTEyLCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ2LCAKKyAgICAzNTUyLCAzNTU4LCAzNTYzLCAzNTcwLCAzNTc3LCAzNTg0LCAzNTkxLCAzNTk4LCAzNjAzLCAzNjA4LCAzNjE3LCAzNjI1LCAKKyAgICAzNjM0LCAzNjM5LCAzNjQ1LCAzNjU2LCAzNjYzLCAzNjcxLCAzNjgwLCAzNjg2LCAzNjkyLCAzNjk4LCAzNzA1LCAzNzEwLCAKKyAgICAzNzE2LCAzNzI3LCAzNzM2LCAzNzQ1LCAzNzUzLCAzNzYxLCAzNzcxLCAzNzc2LCAzNzgzLCAzNzkwLCAzNzk1LCAzODA3LCAKKyAgICAzODE2LCAzODI0LCAzODMxLCAzODQwLCAzODQ1LCAzODUwLCAzODU3LCAzODY0LCAzODcxLCAzODc4LCAzODg0LCAzODkzLCAKKyAgICAzOTAxLCAzOTA2LCAzOTE0LCAzOTIwLCAzOTI4LCAzOTM2LCAzOTQyLCAzOTQ4LCAzOTU0LCAzOTYxLCAzOTY5LCAzOTc1LCAKKyAgICAzOTgzLCAzOTkwLCAzOTk1LCA0MDAyLCA0MDEwLCA0MDIwLCA0MDI3LCA0MDM0LCA0MDQ0LCA0MDUxLCA0MDU4LCA0MDY4LCAKKyAgICA0MDc1LCA0MDgyLCA0MDg5LCA0MDk1LCA0MTAxLCA0MTExLCA0MTI0LCA0MTI5LCA0MTM2LCA0MTQxLCA0MTQ1LCA0MTUxLCAKKyAgICA0MTYwLCA0MTY3LCA0MTcyLCA0MTc3LCA0MTgxLCA0MTg2LCA0MTkyLCA0MTk2LCA0MjAyLCA0MjA4LCA0MjE0LCA0MjIwLCAKKyAgICA0MjI4LCA0MjMzLCA0MjM4LCA0MjQzLCA0MjQ4LCA0MjU0LCA0MjU2LCA0MjYxLCA0MjY1LCA0MjcxLCA0Mjc3LCA0MjgzLCAKKyAgICA0Mjg4LCA0Mjk1LCA0MzAyLCA0MzA4LCA0MzE1LCA0MzIzLCA0MzMxLCA0MzM2LCA0MzQxLCA0MzQ1LCA0MzUwLCA0MzUyLCAKKyAgICA0MzU0LCA0MzU3LCA0MzU5LCA0MzYxLCA0MzY2LCA0MzcxLCA0Mzc3LCA0MzgyLCA0Mzg2LCA0MzkxLCA0Mzk2LCA0NDA1LCAKKyAgICA0NDExLCA0NDE2LCA0NDIyLCA0NDI3LCA0NDMzLCA0NDQxLCA0NDQ5LCA0NDUzLCA0NDU3LCA0NDYyLCA0NDY4LCA0NDc0LCAKKyAgICA0NDgwLCA0NDg2LCA0NDkxLCA0NDk5LCA0NTA4LCA0NTE3LCA0NTIxLCA0NTI3LCA0NTM0LCA0NTQxLCA0NTQ4LCA0NTU1LCAKKyAgICA0NTU5LCA0NTY0LCA0NTY5LCA0NTc0LCA0NTc5LCA0NTg0LCA0NTg2LCA0NTg5LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCAKKyAgICA0NjA1LCA0NjA5LCA0NjE1LCA0NjE4LCA0NjIzLCA0NjI5LCA0NjM1LCA0NjM4LCA0NjQzLCA0NjQ5LCA0NjUzLCA0NjU5LCAKKyAgICA0NjY1LCA0NjcxLCA0Njc3LCA0NjgyLCA0Njg3LCA0NjkyLCA0Njk1LCA0NzAxLCA0NzA2LCA0NzExLCA0NzE1LCA0NzIwLCAKKyAgICA0NzI2LCA0NzMyLCA0NzM1LCA0NzM5LCA0NzQzLCA0NzQ3LCA0NzUwLCA0NzUzLCA0NzU4LCA0NzYyLCA0NzY5LCA0NzczLCAKKyAgICA0Nzc5LCA0NzgzLCA0Nzg5LCA0NzkzLCA0Nzk3LCA0ODAxLCA0ODA2LCA0ODExLCA0ODE4LCA0ODI0LCA0ODMxLCA0ODM3LCAKKyAgICA0ODQzLCA0ODQ5LCA0ODUyLCA0ODU2LCA0ODYwLCA0ODYzLCA0ODY3LCA0ODcyLCA0ODc3LCA0ODgxLCA0ODg1LCA0ODkxLCAKKyAgICA0ODk1LCA0ODk5LCA0OTA0LCA0OTEwLCA0OTE1LCA0OTIxLCA0OTI1LCA0OTMyLCA0OTM3LCA0OTQyLCA0OTQ3LCA0OTUyLCAKKyAgICA0OTU4LCA0OTYxLCA0OTY1LCA0OTcwLCA0OTc1LCA0OTg0LCA0OTkwLCA0OTk1LCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCAKKyAgICA1MDE3LCA1MDIxLCA1MDI2LCA1MDI5LCA1MDM1LCA1MDQwLCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcxLCAKKyAgICA1MDc3LCA1MDgzLCA1MDg4LCA1MDkzLCA1MDk5LCA1MTA1LCA1MTExLCA1MTE2LCA1MTIxLCA1MTI4LCA1MTM1LCA1MTM5LCAKKyAgICA1MTQ1LCA1MTUyLCAwLCAwLCA1MTU5LCA1MTYyLCA1MTcxLCA1MTgwLCA1MTkxLCAwLCAwLCAwLCAwLCAwLCA1MTk1LCAKKyAgICA1MTk4LCA1MjAzLCA1MjExLCA1MjE2LCA1MjI0LCA1MjMyLCAwLCA1MjQwLCAwLCA1MjQ4LCA1MjU2LCA1MjY0LCA1Mjc1LCAKKyAgICA1MjgwLCA1Mjg1LCA1MjkwLCA1Mjk1LCA1MzAwLCA1MzA1LCA1MzEwLCA1MzE1LCA1MzIwLCA1MzI1LCA1MzMwLCA1MzM1LCAKKyAgICA1MzQwLCA1MzQ1LCA1MzUwLCA1MzU1LCAwLCA1MzYwLCA1MzY1LCA1MzcwLCA1Mzc1LCA1MzgwLCA1Mzg1LCA1MzkwLCAKKyAgICA1Mzk1LCA1NDAzLCA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDU0LCA1NDU5LCA1NDY0LCA1NDY5LCA1NDc0LCAKKyAgICA1NDc5LCA1NDg0LCA1NDg5LCA1NDk0LCA1NDk5LCA1NTA0LCA1NTA5LCA1NTE0LCA1NTE5LCA1NTI0LCA1NTI5LCA1NTM0LCAKKyAgICA1NTM5LCA1NTQ1LCA1NTUwLCA1NTU1LCA1NTYwLCA1NTY1LCA1NTcwLCA1NTc1LCA1NTgwLCA1NTg4LCA1NTk2LCA1NjA0LCAKKyAgICA1NjEyLCA1NjIwLCA1NjI1LCA1NjI5LCA1NjMzLCA1NjQwLCA1NjUwLCA1NjYwLCA1NjY0LCA1NjY4LCA1NjcyLCA1Njc4LCAKKyAgICA1Njg1LCA1Njg5LCA1Njk0LCA1Njk4LCA1NzAzLCA1NzA3LCA1NzEyLCA1NzE2LCA1NzIxLCA1NzI2LCA1NzMxLCA1NzM2LCAKKyAgICA1NzQxLCA1NzQ2LCA1NzUxLCA1NzU2LCA1NzYxLCA1NzY2LCA1NzcxLCA1Nzc2LCA1NzgxLCA1Nzg2LCA1NzkxLCA1Nzk1LCAKKyAgICA1Nzk5LCA1ODA1LCA1ODA5LCA1ODE0LCA1ODIwLCA1ODI4LCA1ODMzLCA1ODM4LCA1ODQ1LCA1ODUwLCA1ODU1LCA1ODYyLCAKKyAgICA1ODcxLCA1ODgwLCA1ODkxLCA1ODk5LCA1OTA0LCA1OTA5LCA1OTE0LCA1OTIxLCA1OTI2LCA1OTMyLCA1OTM3LCA1OTQyLCAKKyAgICA1OTQ3LCA1OTUyLCA1OTU3LCA1OTYyLCA1OTcwLCA1OTc2LCA1OTgxLCA1OTg1LCA1OTkwLCA1OTk1LCA2MDAwLCA2MDA1LCAKKyAgICA2MDEwLCA2MDE1LCA2MDIwLCA2MDI0LCA2MDMwLCA2MDM0LCA2MDM5LCA2MDQ0LCA2MDQ5LCA2MDUzLCA2MDU4LCA2MDYzLCAKKyAgICA2MDY4LCA2MDczLCA2MDc3LCA2MDgyLCA2MDg2LCA2MDkxLCA2MDk2LCA2MTAxLCA2MTA2LCA2MTEyLCA2MTE3LCA2MTIzLCAKKyAgICA2MTI3LCA2MTMyLCA2MTM2LCA2MTQwLCA2MTQ1LCA2MTUwLCA2MTU1LCA2MTYwLCA2MTY1LCA2MTcwLCA2MTc1LCA2MTc5LCAKKyAgICA2MTg1LCA2MTg5LCA2MTk0LCA2MTk5LCA2MjA0LCA2MjA4LCA2MjEzLCA2MjE4LCA2MjIzLCA2MjI4LCA2MjMyLCA2MjM3LCAKKyAgICA2MjQxLCA2MjQ2LCA2MjUxLCA2MjU2LCA2MjYxLCA2MjY3LCA2MjcyLCA2Mjc4LCA2MjgyLCA2Mjg3LCA2MjkxLCA2Mjk5LCAKKyAgICA2MzA0LCA2MzA5LCA2MzE0LCA2MzIxLCA2MzI2LCA2MzMyLCA2MzM3LCA2MzQyLCA2MzQ3LCA2MzUyLCA2MzU3LCA2MzYyLCAKKyAgICA2MzcwLCA2Mzc2LCA2MzgxLCA2Mzg2LCA2MzkxLCA2Mzk2LCA2NDAxLCA2NDA3LCA2NDEzLCA2NDIwLCA2NDI3LCA2NDM2LCAKKyAgICA2NDQ1LCA2NDUyLCA2NDU5LCA2NDY4LCA2NDc3LCA2NDgyLCA2NDg3LCA2NDkyLCA2NDk3LCA2NTAyLCA2NTA3LCA2NTEyLCAKKyAgICA2NTE3LCA2NTI4LCA2NTM5LCA2NTQ0LCA2NTQ5LCA2NTU2LCA2NTYzLCA2NTcxLCA2NTc5LCA2NTg0LCA2NTg5LCA2NTk0LCAKKyAgICA2NTk5LCA2NjAzLCA2NjA3LCA2NjExLCA2NjE3LCA2NjIzLCA2NjI3LCA2NjM0LCA2NjM5LCA2NjQ5LCA2NjU5LCA2NjY1LCAKKyAgICA2NjcxLCA2Njc5LCA2Njg3LCA2Njk1LCA2NzAzLCA2NzEwLCA2NzE3LCA2NzI2LCA2NzM1LCA2NzQzLCA2NzUxLCA2NzU5LCAKKyAgICA2NzY3LCA2Nzc1LCA2NzgzLCA2NzkxLCA2Nzk5LCA2ODA2LCA2ODEzLCA2ODE5LCA2ODI1LCA2ODMzLCA2ODQxLCA2ODQ4LCAKKyAgICA2ODU1LCA2ODY0LCA2ODczLCA2ODc5LCA2ODg1LCA2ODkzLCA2OTAxLCA2OTA5LCA2OTE3LCA2OTIzLCA2OTI5LCA2OTM3LCAKKyAgICA2OTQ1LCA2OTUzLCA2OTYxLCA2OTY4LCA2OTc1LCA2OTgzLCA2OTkxLCA2OTk5LCA3MDA3LCA3MDEyLCA3MDE3LCA3MDI0LCAKKyAgICA3MDMxLCA3MDQxLCA3MDUxLCA3MDU1LCA3MDYzLCA3MDcxLCA3MDc4LCA3MDg1LCA3MDkzLCA3MTAxLCA3MTA4LCA3MTE1LCAKKyAgICA3MTIzLCA3MTMxLCA3MTM4LCA3MTQ1LCA3MTUzLCA3MTYxLCA3MTY2LCA3MTczLCA3MTgwLCA3MTg3LCA3MTk0LCA3MjAwLCAKKyAgICA3MjA2LCA3MjE0LCA3MjIyLCA3MjI3LCA3MjMyLCA3MjQwLCA3MjQ4LCA3MjU2LCA3MjY0LCA3MjcyLCA3MjgwLCA3Mjg3LCAKKyAgICA3Mjk0LCA3MzAyLCA3MzEwLCA3MzE4LCA3MzI2LCA3MzMzLCA3MzQwLCA3MzQ2LCA3MzUyLCA3MzYxLCA3MzcwLCA3Mzc3LCAKKyAgICA3Mzg0LCA3MzkxLCA3Mzk4LCA3NDA1LCA3NDEyLCA3NDE5LCA3NDI2LCA3NDM0LCA3NDQyLCA3NDUwLCA3NDU4LCA3NDY2LCAKKyAgICA3NDc0LCA3NDg0LCA3NDk0LCA3NTAxLCA3NTA4LCA3NTE1LCA3NTIyLCA3NTI5LCA3NTM2LCA3NTQzLCA3NTUwLCA3NTU3LCAKKyAgICA3NTY0LCA3NTcxLCA3NTc4LCA3NTg1LCA3NTkyLCA3NTk5LCA3NjA2LCA3NjEzLCA3NjIwLCA3NjI3LCA3NjM0LCA3NjQxLCAKKyAgICA3NjQ4LCA3NjU1LCA3NjYyLCA3NjY3LCA3NjcyLCA3Njc3LCA3NjgyLCA3Njg3LCA3NjkyLCA3Njk3LCA3NzAyLCA3NzA3LCAKKyAgICA3NzEyLCA3NzE4LCA3NzI0LCA3NzMzLCA3NzQyLCA3NzUxLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA3NzkyLCA3Nzk3LCA3ODAyLCA3ODA3LCA3ODEyLCA3ODE3LCA3ODIyLCA3ODI3LCA3ODMyLCAKKyAgICA3ODM2LCA3ODQxLCA3ODQ2LCA3ODUxLCA3ODU2LCA3ODYxLCA3ODY2LCA3ODcxLCA3ODc2LCA3ODgxLCA3ODg2LCA3ODkxLCAKKyAgICA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMwLCA3OTM1LCA3OTQwLCA3OTQ1LCA3OTUwLCAKKyAgICA3OTU1LCA3OTYwLCA3OTY1LCA3OTcwLCA3OTc1LCAwLCAwLCA3OTgwLCA3OTg3LCA3OTkwLCA3OTk0LCA3OTk4LCA4MDAxLCAKKyAgICA4MDA1LCAwLCA4MDA5LCA4MDE0LCA4MDE5LCA4MDI0LCA4MDI5LCA4MDM0LCA4MDM5LCA4MDQ0LCA4MDQ5LCA4MDUzLCAKKyAgICA4MDU4LCA4MDYzLCA4MDY4LCA4MDczLCA4MDc4LCA4MDgzLCA4MDg4LCA4MDkzLCA4MDk4LCA4MTAzLCA4MTA4LCA4MTEzLCAKKyAgICA4MTE4LCA4MTIzLCA4MTI4LCA4MTMzLCA4MTM4LCA4MTQzLCA4MTQ3LCA4MTUyLCA4MTU3LCA4MTYyLCA4MTY3LCA4MTcyLCAKKyAgICA4MTc3LCA4MTgyLCA4MTg3LCA4MTkyLCA4MTk3LCAwLCA4MjA0LCA4MjA5LCAwLCAwLCAwLCAwLCA4MjEyLCAwLCA4MjE2LCAKKyAgICA4MjIxLCA4MjI2LCA4MjMxLCA4MjM4LCA4MjQ1LCA4MjUwLCA4MjU1LCA4MjYwLCA4MjY1LCA4MjcwLCA4Mjc1LCA4MjgwLCAKKyAgICA4Mjg3LCA4MjkyLCA4Mjk5LCA4MzA2LCA4MzExLCA4MzE4LCA4MzIzLCA4MzI4LCA4MzMzLCA4MzQwLCA4MzQ1LCA4MzUwLCAKKyAgICA4MzU3LCA4MzY2LCA4MzcxLCA4Mzc2LCA4MzgxLCA4Mzg2LCA4MzkyLCA4Mzk3LCA4NDA0LCA4NDExLCA4NDE4LCA4NDIzLCAKKyAgICA4NDI4LCA4NDMzLCA4NDM4LCA4NDQzLCA4NDQ4LCA4NDU4LCA4NDYzLCA4NDcxLCA4NDc2LCA4NDgxLCA4NDg2LCA4NDkxLCAKKyAgICA4NDk4LCA4NTA1LCA4NTEyLCA4NTE4LCA4NTI0LCA4NTMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NTM4LCA4NTQyLCAKKyAgICA4NTQ2LCA4NTUwLCA4NTU0LCA4NTU4LCA4NTYyLCA4NTY2LCA4NTcwLCA4NTc0LCA4NTc4LCA4NTgzLCA4NTg3LCA4NTkxLCAKKyAgICA4NTk2LCA4NjAwLCA4NjA1LCA4NjA5LCA4NjEzLCA4NjE3LCA4NjIyLCA4NjI2LCA4NjMxLCA4NjM1LCA4NjM5LCA4NjQzLCAKKyAgICA4NjQ3LCAwLCAwLCAwLCAwLCAwLCA4NjUxLCA4NjU4LCA4NjY2LCA4NjczLCA4Njc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4NjgzLCA4Njg2LCA4NjkwLCA4Njk1LCA4Njk5LCAwLCA4NzAzLCA4NzA5LCA4NzE1LCA4NzE4LCAKKyAgICA4NzI1LCA4NzM0LCA4NzM3LCA4NzQwLCA4NzQ1LCA4NzUxLCA4NzU1LCA4NzYzLCA4NzY5LCA4Nzc1LCA4NzgzLCA4Nzg3LCAKKyAgICA4NzkyLCA4ODAzLCA4ODA4LCA4ODEyLCA4ODE2LCA4ODIwLCAwLCAwLCA4ODIzLCA4ODMwLCA4ODM0LCA4ODQwLCA4ODQ0LCAKKyAgICA4ODUxLCA4ODU3LCA4ODY0LCA4ODcwLCA4ODc2LCA4ODgwLCA4ODg0LCA4ODkwLCA4ODk0LCA4ODk4LCA4OTAyLCA4OTA2LCAKKyAgICA4OTEwLCA4OTE0LCA4OTE4LCA4OTIyLCA4OTI2LCA4OTMwLCA4OTM0LCA4OTM4LCA4OTQyLCA4OTQ2LCA4OTUwLCA4OTU0LCAKKyAgICA4OTU4LCA4OTY2LCA4OTc0LCA4OTg0LCA4OTkzLCA5MDAyLCA5MDA1LCA5MDA5LCA5MDEzLCA5MDE3LCA5MDIxLCA5MDI1LCAKKyAgICA5MDI5LCA5MDMzLCA5MDM3LCA5MDQyLCA5MDQ2LCA5MDQ5LCA5MDUyLCA5MDU1LCA5MDU4LCA5MDYxLCA5MDY0LCA5MDY3LCAKKyAgICA5MDcwLCA5MDc0LCA5MDc3LCA5MDgwLCA5MDg1LCA5MDkwLCA5MDk2LCA5MDk5LCA5MTA2LCA5MTE1LCA5MTIwLCA5MTI1LCAKKyAgICA5MTMyLCA5MTM3LCA5MTQyLCA5MTQ2LCA5MTUwLCA5MTU0LCA5MTU4LCA5MTYyLCA5MTY2LCA5MTcwLCA5MTc0LCA5MTc4LCAKKyAgICA5MTgyLCA5MTg3LCA5MTkyLCA5MTk5LCA5MjA1LCA5MjExLCA5MjE3LCA5MjIyLCA5MjMwLCA5MjM4LCA5MjQzLCA5MjQ5LCAKKyAgICA5MjU1LCA5MjYxLCA5MjY3LCA5MjcxLCA5Mjc1LCA5Mjc5LCA5Mjg2LCA5Mjk2LCA5MzAwLCA5MzA0LCA5MzA4LCA5MzE0LCAKKyAgICA5MzIyLCA5MzI2LCA5MzMwLCA5MzM3LCA5MzQxLCA5MzQ1LCA5MzQ5LCA5MzU2LCA5MzYzLCA5Mzc1LCA5Mzc5LCA5MzgzLCAKKyAgICA5Mzg3LCA5Mzk3LCA5NDA2LCA5NDEwLCA5NDE4LCA5NDI1LCA5NDMyLCA5NDQxLCA5NDUyLCA5NDYwLCA5NDY0LCA5NDczLCAKKyAgICA5NDg0LCA5NDkyLCA5NTA1LCA5NTEzLCA5NTIxLCA5NTI5LCA5NTM3LCA5NTQzLCA5NTUyLCA5NTU5LCA5NTYzLCA5NTcxLCAKKyAgICA5NTc1LCA5NTgyLCA5NTkwLCA5NTk0LCA5NjAwLCA5NjA3LCA5NjE0LCA5NjE4LCA5NjI2LCA5NjMwLCA5NjM3LCA5NjQxLCAKKyAgICA5NjQ5LCA5NjUzLCA5NjYxLCA5NjY5LCA5Njc2LCA5Njg0LCA5NjkyLCA5Njk5LCA5NzA1LCA5NzA5LCA5NzE2LCA5NzI0LCAKKyAgICA5NzMwLCA5NzM3LCA5NzQ0LCA5NzUwLCA5NzU5LCA5NzY3LCA5Nzc0LCA5NzgwLCA5Nzg0LCA5Nzg3LCA5NzkxLCA5Nzk3LCAKKyAgICA5ODA1LCA5ODA5LCA5ODE1LCA5ODIxLCA5ODI4LCA5ODM1LCA5ODM4LCA5ODQ1LCA5ODUwLCA5ODU4LCA5ODYzLCA5ODY3LCAKKyAgICA5ODgwLCA5ODkzLCA5ODk5LCA5OTA2LCA5OTExLCA5OTE3LCA5OTIyLCA5OTI4LCA5OTM4LCA5OTQ1LCA5OTU0LCA5OTY0LCAKKyAgICA5OTcwLCA5OTc1LCA5OTgwLCA5OTg0LCA5OTg4LCA5OTkzLCA5OTk4LCAxMDAwNCwgMTAwMTIsIDEwMDIwLCAxMDAzMSwgCisgICAgMTAwMzYsIDEwMDQ1LCAxMDA1NCwgMTAwNjEsIDEwMDY3LCAxMDA3MywgMTAwNzksIDEwMDg1LCAxMDA5MSwgMTAwOTcsIAorICAgIDEwMTAzLCAxMDEwOSwgMTAxMTUsIDEwMTIyLCAxMDEyOSwgMTAxMzYsIDEwMTQyLCAxMDE1MCwgMTAxNTksIDEwMTY1LCAKKyAgICAxMDE3MiwgMTAxNzksIDEwMTg0LCAxMDE4OSwgMTAxOTMsIDEwMjAwLCAxMDIwNywgMTAyMTYsIDEwMjI1LCAxMDIyOCwgCisgICAgMTAyMzMsIDEwMjM4LCAwLCAxMDI0MywgMTAyNDcsIDEwMjUxLCAxMDI1NywgMTAyNjEsIDEwMjY1LCAxMDI3MSwgMTAyNzUsIAorICAgIDEwMjgzLCAxMDI4NywgMTAyOTEsIDEwMjk1LCAxMDI5OSwgMTAzMDMsIDEwMzA5LCAxMDMxMywgMTAzMTksIDEwMzIzLCAKKyAgICAxMDMyNywgMTAzMzEsIDEwMzM1LCAxMDMzOSwgMTAzNDQsIDEwMzQ3LCAxMDM1MSwgMTAzNTcsIDEwMzYxLCAxMDM2NSwgCisgICAgMTAzNjksIDEwMzczLCAxMDM3NywgMTAzODMsIDEwMzg5LCAxMDM5NSwgMTAzOTksIDEwNDAzLCAxMDQwOCwgMTA0MTIsIAorICAgIDEwNDE2LCAxMDQyMSwgMTA0MjUsIDEwNDI5LCAxMDQzNiwgMTA0NDMsIDEwNDQ3LCAxMDQ1MSwgMTA0NTYsIDEwNDYwLCAKKyAgICAxMDQ2NCwgMTA0NjcsIDEwNDcyLCAxMDQ3NSwgMTA0NzgsIDEwNDgzLCAxMDQ4OCwgMTA0OTIsIDEwNDk2LCAxMDUwMiwgCisgICAgMTA1MDgsIDEwNTExLCAwLCAwLCAxMDUxNCwgMTA1MjAsIDEwNTI2LCAxMDUzMiwgMTA1NDIsIDEwNTU0LCAxMDU2NiwgCisgICAgMTA1ODMsIDEwNTk1LCAxMDYwNiwgMTA2MTQsIDEwNjIxLCAxMDYzMiwgMTA2NDcsIDEwNjU4LCAxMDY2NCwgMTA2NzMsIAorICAgIDEwNjgxLCAxMDY5MywgMTA3MDMsIDEwNzExLCAxMDcyMywgMTA3MzAsIDEwNzM4LCAxMDc1MCwgMTA3NTYsIDEwNzYyLCAKKyAgICAxMDc3MCwgMTA3NzgsIDEwNzg2LCAxMDc5MiwgMTA4MDIsIDEwODA5LCAxMDgxOSwgMTA4MjksIDEwODQyLCAxMDg1NiwgCisgICAgMTA4NzAsIDEwODgwLCAxMDg5MSwgMTA5MDIsIDEwOTE1LCAxMDkyOCwgMTA5NDIsIDEwOTU0LCAxMDk2NiwgMTA5NzksIAorICAgIDEwOTkyLCAxMTAwNCwgMTEwMTcsIDExMDI2LCAxMTAzNCwgMTEwMzksIDExMDQ0LCAxMTA0OSwgMTEwNTQsIDExMDU5LCAKKyAgICAxMTA2NCwgMTEwNjksIDExMDc0LCAxMTA3OSwgMTEwODQsIDExMDg5LCAxMTA5NCwgMTEwOTksIDExMTA0LCAxMTEwOSwgCisgICAgMTExMTQsIDExMTE5LCAxMTEyNCwgMTExMjksIDExMTM0LCAxMTEzOSwgMTExNDQsIDExMTQ5LCAxMTE1NCwgMTExNTksIAorICAgIDExMTY0LCAxMTE2OSwgMTExNzQsIDExMTc5LCAxMTE4NCwgMTExODksIDExMTk0LCAxMTE5OCwgMTEyMDMsIDExMjA4LCAKKyAgICAxMTIxMywgMTEyMTgsIDExMjIzLCAxMTIyNywgMTEyMzEsIDExMjM1LCAxMTIzOSwgMTEyNDMsIDExMjQ3LCAxMTI1MSwgCisgICAgMTEyNTUsIDExMjU5LCAxMTI2MywgMTEyNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMjcyLCAxMTI3NywgMTEyODEsIDExMjg1LCAxMTI4OSwgMTEyOTMsIDExMjk3LCAxMTMwMSwgMTEzMDUsIDExMzA5LCAKKyAgICAxMTMxMywgMTEzMTcsIDExMzIyLCAxMTMyNiwgMTEzMzAsIDExMzM0LCAxMTMzOSwgMTEzNDMsIDExMzQ4LCAxMTM1MywgCisgICAgMTEzNTgsIDExMzYyLCAxMTM2NywgMTEzNzIsIDExMzc3LCAxMTM4MiwgMTEzODYsIDExMzkxLCAxMTM5NSwgMTE0MDAsIAorICAgIDExNDA1LCAxMTQwOSwgMTE0MTQsIDExNDIxLCAxMTQyNSwgMTE0MzAsIDExNDM0LCAxMTQzOCwgMTE0NDMsIDExNDQ3LCAKKyAgICAxMTQ1NCwgMTE0NjEsIDExNDY4LCAxMTQ3NCwgMTE0ODIsIDExNDkwLCAxMTQ5OSwgMTE1MDcsIDExNTE0LCAxMTUyMSwgCisgICAgMTE1MjksIDExNTM1LCAxMTU0MSwgMTE1NDcsIDExNTUzLCAxMTU2MCwgMTE1NjUsIDExNTY5LCAxMTU3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTE1NzgsIDExNTgzLCAxMTU4OCwgMTE1OTMsIDExNTk4LCAxMTYwMywgMTE2MDgsIDExNjEzLCAxMTYxOCwgCisgICAgMTE2MjMsIDExNjI4LCAxMTYzMywgMTE2MzgsIDExNjQzLCAxMTY0OCwgMTE2NTMsIDExNjU4LCAxMTY2MywgMTE2NjgsIAorICAgIDExNjczLCAxMTY3OCwgMTE2ODMsIDExNjg4LCAxMTY5MywgMTE2OTgsIDExNzAzLCAxMTcwOCwgMTE3MTYsIDExNzIzLCAKKyAgICAxMTcyOSwgMTE3MzQsIDExNzQyLCAxMTc0OSwgMTE3NTUsIDExNzYyLCAxMTc2OCwgMTE3NzMsIDExNzgwLCAxMTc4NywgCisgICAgMTE3OTMsIDExNzk4LCAxMTgwMywgMTE4MDksIDExODE0LCAxMTgxOSwgMTE4MjUsIDAsIDAsIDExODMwLCAxMTgzNiwgCisgICAgMTE4NDIsIDExODQ4LCAxMTg1NCwgMTE4NjAsIDExODY2LCAxMTg3MSwgMTE4NzksIDExODg1LCAxMTg5MSwgMTE4OTcsIAorICAgIDExOTAzLCAxMTkwOSwgMTE5MTcsIDAsIDExOTIzLCAxMTkyOCwgMTE5MzMsIDExOTM4LCAxMTk0MywgMTE5NDgsIDExOTUzLCAKKyAgICAxMTk1OCwgMTE5NjMsIDExOTY4LCAxMTk3MywgMTE5NzgsIDExOTgzLCAxMTk4OCwgMTE5OTMsIDExOTk4LCAxMjAwMywgCisgICAgMTIwMDgsIDEyMDEzLCAxMjAxOCwgMTIwMjMsIDEyMDI4LCAxMjAzMywgMTIwMzgsIDEyMDQzLCAxMjA0OCwgMTIwNTMsIAorICAgIDEyMDU4LCAwLCAwLCAxMjA2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjI4NzIsIDYyODgxLCA2Mjg5MCwgNjI5MDEsIDYyOTA4LCA2MjkxMywgNjI5MTgsIDYyOTI1LCA2MjkzMiwgNjI5MzgsIAotICAgIDYyOTQzLCA2Mjk0OCwgNjI5NTMsIDYyOTU4LCA2Mjk2NSwgNjI5NzAsIDYyOTc1LCA2Mjk4MCwgNjI5OTEsIDYyOTk2LCAKLSAgICA2MzAwMSwgNjMwMDgsIDYzMDEzLCA2MzAyMCwgNjMwMjUsIDYzMDMwLCA2MzAzNywgNjMwNDQsIDYzMDUxLCA2MzA2MCwgCi0gICAgNjMwNjksIDYzMDc0LCA2MzA3OSwgNjMwODQsIDYzMDkxLCA2MzA5NiwgNjMxMDYsIDYzMTEzLCA2MzExOCwgNjMxMjMsIAotICAgIDYzMTI4LCA2MzEzMywgNjMxMzgsIDYzMTQzLCA2MzE1MiwgNjMxNTksIDYzMTY2LCA2MzE3MSwgNjMxNzgsIDYzMTgzLCAKLSAgICA2MzE5MCwgNjMxOTksIDYzMjEwLCA2MzIxNSwgNjMyMjQsIDYzMjI5LCA2MzIzNiwgNjMyNDUsIDYzMjU0LCA2MzI1OSwgCi0gICAgNjMyNjQsIDYzMjcxLCA2MzI3NywgNjMyODQsIDYzMjkxLCA2MzI5NSwgNjMyOTksIDYzMzAyLCA2MzMwNiwgNjMzMTAsIAotICAgIDYzMzE0LCA2MzMxOCwgNjMzMjIsIDYzMzI2LCA2MzMzMCwgNjMzMzMsIDYzMzM3LCA2MzM0MSwgNjMzNDUsIDYzMzQ5LCAKLSAgICA2MzM1MywgNjMzNTcsIDYzMzYwLCA2MzM2NCwgNjMzNjgsIDYzMzcxLCA2MzM3NSwgNjMzNzksIDYzMzgzLCA2MzM4NywgCi0gICAgNjMzOTEsIDYzMzk1LCA2MzM5OSwgNjM0MDMsIDYzNDA3LCA2MzQxMSwgNjM0MTUsIDYzNDE5LCA2MzQyMywgNjM0MjcsIAotICAgIDYzNDMxLCA2MzQzNSwgNjM0MzksIDYzNDQzLCA2MzQ0NywgNjM0NTEsIDYzNDU1LCA2MzQ1OSwgNjM0NjMsIDYzNDY3LCAKLSAgICA2MzQ3MSwgNjM0NzUsIDYzNDc5LCA2MzQ4MywgNjM0ODcsIDYzNDkxLCA2MzQ5NSwgNjM0OTksIDYzNTAzLCA2MzUwNywgCi0gICAgNjM1MTEsIDYzNTE1LCA2MzUxOSwgNjM1MjMsIDYzNTI3LCA2MzUzMSwgNjM1MzUsIDYzNTM5LCA2MzU0MywgNjM1NDcsIAotICAgIDYzNTUwLCA2MzU1NCwgNjM1NTgsIDYzNTYyLCA2MzU2NiwgNjM1NzAsIDYzNTc0LCA2MzU3OCwgNjM1ODIsIDYzNTg2LCAKLSAgICA2MzU5MCwgNjM1OTQsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjEwLCA2MzYxNCwgNjM2MTgsIDYzNjIyLCA2MzYyNiwgCi0gICAgNjM2MzAsIDYzNjM0LCA2MzYzOCwgNjM2NDIsIDYzNjQ2LCA2MzY1MCwgNjM2NTQsIDYzNjU4LCA2MzY2MiwgNjM2NjYsIAotICAgIDYzNjcwLCA2MzY3NCwgNjM2NzgsIDYzNjgyLCA2MzY4NiwgNjM2OTAsIDYzNjk0LCA2MzY5OCwgNjM3MDIsIDYzNzA2LCAKLSAgICA2MzcxMCwgNjM3MTQsIDYzNzE4LCA2MzcyMiwgNjM3MjYsIDYzNzMwLCA2MzczNCwgNjM3MzgsIDYzNzQyLCA2Mzc0NiwgCi0gICAgNjM3NTAsIDYzNzU0LCA2Mzc1OCwgNjM3NjIsIDYzNzY2LCA2Mzc3MCwgNjM3NzQsIDYzNzc4LCA2Mzc4MiwgNjM3ODYsIAotICAgIDYzNzkwLCA2Mzc5NCwgNjM3OTgsIDYzODAyLCA2MzgwNiwgNjM4MTAsIDYzODE0LCA2MzgxOCwgNjM4MjIsIDYzODI2LCAKLSAgICA2MzgzMCwgNjM4MzQsIDYzODM4LCA2Mzg0MiwgNjM4NDYsIDYzODUwLCA2Mzg1NCwgNjM4NTgsIDYzODYyLCA2Mzg2NiwgCi0gICAgNjM4NzAsIDYzODc0LCA2Mzg3OCwgNjM4ODIsIDYzODg2LCA2Mzg5MCwgNjM4OTQsIDYzODk4LCA2MzkwMiwgNjM5MDYsIAotICAgIDYzOTEwLCA2MzkxNCwgNjM5MTgsIDYzOTIyLCA2MzkyNiwgNjM5MzAsIDYzOTM0LCA2MzkzOCwgNjM5NDIsIDYzOTQ2LCAKLSAgICA2Mzk1MCwgNjM5NTQsIDYzOTU4LCA2Mzk2MiwgNjM5NjYsIDYzOTcwLCA2Mzk3NCwgNjM5NzgsIDYzOTgyLCA2Mzk4NiwgCi0gICAgNjM5OTAsIDYzOTk0LCA2Mzk5OCwgNjQwMDIsIDY0MDA2LCA2NDAxMCwgNjQwMTQsIDY0MDE4LCA2NDAyMSwgNjQwMjUsIAotICAgIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgNjQwNjEsIDY0MDY1LCAKLSAgICA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4MSwgNjQwODUsIDY0MDg5LCA2NDA5MywgNjQwOTcsIDY0MTAxLCA2NDEwNSwgCi0gICAgNjQxMDksIDY0MTEzLCA2NDExNywgNjQxMjEsIDY0MTI1LCA2NDEyOSwgNjQxMzMsIDY0MTM3LCA2NDE0MSwgNjQxNDUsIAotICAgIDY0MTQ5LCA2NDE1MywgNjQxNTcsIDY0MTYxLCA2NDE2NSwgNjQxNjksIDY0MTczLCA2NDE3NywgNjQxODEsIDY0MTg1LCAKLSAgICA2NDE4OSwgNjQxOTMsIDY0MTk3LCA2NDIwMSwgNjQyMDUsIDY0MjA5LCA2NDIxMywgNjQyMTcsIDY0MjIxLCA2NDIyNSwgCi0gICAgNjQyMjksIDY0MjMzLCA2NDIzNywgNjQyNDEsIDY0MjQ1LCA2NDI0OSwgNjQyNTMsIDY0MjU3LCA2NDI2MSwgNjQyNjUsIAotICAgIDY0MjY5LCA2NDI3MywgNjQyNzcsIDY0MjgxLCA2NDI4NSwgNjQyODksIDY0MjkzLCA2NDI5NywgNjQzMDEsIDY0MzA1LCAKLSAgICA2NDMwOSwgNjQzMTMsIDY0MzE3LCA2NDMyMSwgNjQzMjUsIDY0MzI5LCA2NDMzMywgNjQzMzcsIDY0MzQxLCA2NDM0NSwgCi0gICAgNjQzNDksIDY0MzUzLCA2NDM1NywgNjQzNjEsIDY0MzY1LCA2NDM2OSwgNjQzNzMsIDY0Mzc3LCA2NDM4MSwgNjQzODUsIAotICAgIDY0Mzg5LCA2NDM5MywgNjQzOTcsIDY0NDAxLCA2NDQwNSwgNjQ0MDksIDY0NDEzLCA2NDQxNywgNjQ0MjEsIDY0NDI1LCAKLSAgICA2NDQyOSwgNjQ0MzMsIDY0NDM3LCA2NDQ0MSwgNjQ0NDUsIDY0NDQ5LCA2NDQ1MywgNjQ0NTcsIDY0NDYxLCA2NDQ2NSwgCi0gICAgNjQ0NjksIDY0NDczLCA2NDQ3NywgNjQ0ODEsIDY0NDg0LCA2NDQ4OCwgNjQ0OTIsIDY0NDk2LCA2NDUwMCwgNjQ1MDQsIAotICAgIDY0NTA4LCA2NDUxMiwgNjQ1MTYsIDY0NTIwLCA2NDUyNCwgNjQ1MjgsIDY0NTMyLCA2NDUzNiwgNjQ1NDAsIDY0NTQ0LCAKLSAgICA2NDU0OCwgNjQ1NTIsIDY0NTU2LCA2NDU2MCwgNjQ1NjQsIDY0NTY4LCA2NDU3MiwgNjQ1NzYsIDY0NTgwLCA2NDU4NCwgCi0gICAgNjQ1ODgsIDY0NTkyLCA2NDU5NiwgNjQ2MDAsIDY0NjA0LCA2NDYwOCwgNjQ2MTIsIDY0NjE2LCA2NDYyMCwgNjQ2MjQsIAotICAgIDY0NjI4LCA2NDYzMiwgNjQ2MzYsIDY0NjQwLCA2NDY0NCwgNjQ2NDgsIDY0NjUyLCA2NDY1NiwgNjQ2NjAsIDY0NjY0LCAKLSAgICA2NDY2OCwgNjQ2NzIsIDY0Njc2LCA2NDY4MCwgNjQ2ODQsIDY0Njg4LCA2NDY5MiwgNjQ2OTYsIDY0NzAwLCA2NDcwNCwgCi0gICAgNjQ3MDgsIDY0NzEyLCA2NDcxNiwgNjQ3MjAsIDY0NzI0LCA2NDcyOCwgNjQ3MzIsIDY0NzM2LCA2NDc0MCwgNjQ3NDQsIAotICAgIDY0NzQ4LCA2NDc1MiwgNjQ3NTYsIDY0NzYwLCA2NDc2NCwgNjQ3NjgsIDY0NzcyLCA2NDc3NiwgNjQ3ODAsIDY0Nzg0LCAKLSAgICA2NDc4OCwgNjQ3OTIsIDY0Nzk2LCA2NDgwMCwgNjQ4MDQsIDY0ODA4LCA2NDgxMiwgNjQ4MTYsIDY0ODIwLCA2NDgyNCwgCi0gICAgNjQ4MjgsIDY0ODMyLCA2NDgzNiwgNjQ4NDAsIDY0ODQzLCA2NDg0NywgNjQ4NTEsIDY0ODU1LCA2NDg1OSwgNjQ4NjMsIAotICAgIDY0ODY3LCA2NDg3MSwgNjQ4NzUsIDY0ODc5LCA2NDg4MywgNjQ4ODcsIDY0ODkxLCA2NDg5NSwgNjQ4OTksIDY0OTAzLCAKLSAgICA2NDkwNywgNjQ5MTEsIDY0OTE1LCA2NDkxOSwgNjQ5MjMsIDY0OTI3LCA2NDkzMSwgNjQ5MzUsIDY0OTM5LCA2NDk0MywgCi0gICAgNjQ5NDcsIDY0OTUxLCA2NDk1NSwgNjQ5NTksIDY0OTYzLCA2NDk2NywgNjQ5NzEsIDY0OTc1LCA2NDk3OSwgNjQ5ODMsIAotICAgIDY0OTg3LCA2NDk5MSwgNjQ5OTUsIDY0OTk5LCA2NTAwMywgNjUwMDcsIDY1MDExLCA2NTAxNSwgNjUwMTksIDY1MDIzLCAKLSAgICA2NTAyNywgNjUwMzEsIDY1MDM1LCA2NTAzOSwgNjUwNDMsIDY1MDQ3LCA2NTA1MSwgNjUwNTUsIDY1MDU5LCA2NTA2MywgCi0gICAgNjUwNjcsIDY1MDcxLCA2NTA3NSwgNjUwNzksIDY1MDgzLCA2NTA4NywgNjUwOTEsIDY1MDk1LCA2NTA5OSwgNjUxMDMsIAotICAgIDY1MTA3LCA2NTExMSwgNjUxMTUsIDY1MTE5LCA2NTEyMywgNjUxMjcsIDY1MTMxLCA2NTEzNSwgNjUxMzksIDY1MTQzLCAKLSAgICA2NTE0NywgNjUxNTEsIDY1MTU1LCA2NTE1OSwgNjUxNjMsIDY1MTY3LCA2NTE3MSwgNjUxNzUsIDY1MTc5LCA2NTE4MywgCi0gICAgNjUxODcsIDY1MTkxLCA2NTE5NSwgNjUxOTksIDY1MjAzLCA2NTIwNywgNjUyMTEsIDY1MjE1LCA2NTIxOSwgNjUyMjMsIAotICAgIDY1MjI3LCA2NTIzMSwgNjUyMzUsIDY1MjM5LCA2NTI0MywgNjUyNDcsIDY1MjUxLCA2NTI1NSwgNjUyNTksIDY1MjYzLCAKLSAgICA2NTI2NywgNjUyNzEsIDY1Mjc1LCA2NTI3OSwgNjUyODMsIDY1Mjg3LCA2NTI5MSwgNjUyOTUsIDY1Mjk5LCA2NTMwMywgCi0gICAgNjUzMDcsIDY1MzExLCA2NTMxNSwgNjUzMTksIDY1MzIzLCA2NTMyNywgNjUzMzEsIDY1MzM1LCA2NTMzOCwgNjUzNDIsIAotICAgIDY1MzQ2LCA2NTM1MCwgNjUzNTQsIDY1MzU4LCA2NTM2MiwgNjUzNjYsIDY1MzcwLCA2NTM3NCwgNjUzNzgsIDY1MzgyLCAKLSAgICA2NTM4NiwgNjUzOTAsIDY1Mzk0LCA2NTM5OCwgNjU0MDIsIDY1NDA2LCA2NTQxMCwgNjU0MTQsIDY1NDE4LCA2NTQyMiwgCi0gICAgNjU0MjYsIDY1NDMwLCA2NTQzNCwgNjU0MzgsIDY1NDQyLCA2NTQ0NiwgNjU0NTAsIDY1NDU0LCA2NTQ1OCwgNjU0NjIsIAotICAgIDY1NDY2LCA2NTQ3MCwgNjU0NzQsIDY1NDc4LCA2NTQ4MiwgNjU0ODYsIDY1NDkwLCA2NTQ5NCwgNjU0OTgsIDY1NTAyLCAKLSAgICA2NTUwNiwgNjU1MTAsIDY1NTE0LCA2NTUxOCwgNjU1MjIsIDY1NTI2LCA2NTUzMCwgNjU1MzQsIDY1NTM4LCA2NTU0MiwgCi0gICAgNjU1NDYsIDY1NTUwLCA2NTU1NCwgNjU1NTgsIDY1NTYyLCA2NTU2NiwgNjU1NzAsIDY1NTc0LCA2NTU3OCwgNjU1ODIsIAotICAgIDY1NTg2LCA2NTU5MCwgNjU1OTQsIDY1NTk4LCA2NTYwMiwgNjU2MDYsIDY1NjEwLCA2NTYxNCwgNjU2MTgsIDY1NjIyLCAKLSAgICA2NTYyNiwgNjU2MzAsIDY1NjM0LCA2NTYzOCwgNjU2NDIsIDY1NjQ2LCA2NTY1MCwgNjU2NTQsIDY1NjU4LCA2NTY2MiwgCi0gICAgNjU2NjYsIDY1NjcwLCA2NTY3NCwgNjU2NzgsIDY1NjgyLCA2NTY4NiwgNjU2OTAsIDY1Njk0LCA2NTY5OCwgNjU3MDIsIAotICAgIDY1NzA2LCA2NTcxMCwgNjU3MTQsIDY1NzE4LCA2NTcyMiwgNjU3MjYsIDY1NzMwLCA2NTczNCwgNjU3MzgsIDY1NzQyLCAKLSAgICA2NTc0NiwgNjU3NTAsIDY1NzU0LCA2NTc1OCwgNjU3NjIsIDY1NzY2LCA2NTc3MCwgNjU3NzQsIDY1Nzc4LCA2NTc4MiwgCi0gICAgNjU3ODYsIDY1NzkwLCA2NTc5MywgNjU3OTcsIDY1ODAxLCA2NTgwNSwgNjU4MDksIDY1ODEzLCA2NTgxNywgNjU4MjEsIAotICAgIDY1ODI1LCA2NTgyOSwgNjU4MzMsIDY1ODM3LCA2NTg0MSwgNjU4NDUsIDY1ODQ5LCA2NTg1MywgNjU4NTcsIDY1ODYxLCAKLSAgICA2NTg2NSwgNjU4NjksIDY1ODczLCA2NTg3NywgNjU4ODEsIDY1ODg1LCA2NTg4OSwgNjU4OTMsIDY1ODk3LCA2NTkwMSwgCi0gICAgNjU5MDUsIDY1OTA5LCA2NTkxMywgNjU5MTcsIDY1OTIxLCA2NTkyNSwgNjU5MjksIDY1OTMzLCA2NTkzNywgNjU5NDEsIAotICAgIDY1OTQ1LCA2NTk0OSwgNjU5NTMsIDY1OTU3LCA2NTk2MSwgNjU5NjUsIDY1OTY5LCA2NTk3MywgNjU5NzcsIDY1OTgxLCAKLSAgICA2NTk4NSwgNjU5ODksIDY1OTkzLCA2NTk5NywgNjYwMDEsIDY2MDA1LCA2NjAwOSwgNjYwMTMsIDY2MDE3LCA2NjAyMSwgCi0gICAgNjYwMjUsIDY2MDI5LCA2NjAzMywgNjYwMzcsIDY2MDQxLCA2NjA0NSwgNjYwNDksIDY2MDUzLCA2NjA1NywgNjYwNjEsIAotICAgIDY2MDY1LCA2NjA2OSwgNjYwNzMsIDY2MDc3LCA2NjA4MSwgNjYwODUsIDY2MDg5LCA2NjA5MywgNjYwOTcsIDY2MTAxLCAKLSAgICA2NjEwNSwgNjYxMDksIDY2MTEzLCA2NjExNywgNjYxMjEsIDY2MTI1LCA2NjEyOSwgNjYxMzMsIDY2MTM3LCA2NjE0MSwgCi0gICAgNjYxNDUsIDY2MTQ5LCA2NjE1MywgNjYxNTcsIDY2MTYxLCA2NjE2NSwgNjYxNjksIDY2MTczLCA2NjE3NywgNjYxODEsIAotICAgIDY2MTg1LCA2NjE4OSwgNjYxOTMsIDY2MTk3LCA2NjIwMSwgNjYyMDUsIDY2MjA5LCA2NjIxMywgNjYyMTcsIDY2MjIxLCAKLSAgICA2NjIyNSwgNjYyMjksIDY2MjMzLCA2NjIzNywgNjYyNDEsIDY2MjQ1LCA2NjI0OSwgNjYyNTMsIDY2MjU3LCA2NjI2MSwgCi0gICAgNjYyNjUsIDY2MjY5LCA2NjI3MywgNjYyNzcsIDY2MjgxLCA2NjI4NSwgNjYyODksIDY2MjkzLCA2NjI5NywgNjYzMDEsIAotICAgIDY2MzA1LCA2NjMwOSwgNjYzMTMsIDY2MzE3LCA2NjMyMSwgNjYzMjUsIDY2MzI5LCA2NjMzMywgNjYzMzcsIDY2MzQxLCAKLSAgICA2NjM0NSwgNjYzNDksIDY2MzUzLCA2NjM1NywgNjYzNjEsIDY2MzY1LCA2NjM2OSwgNjYzNzMsIDY2Mzc3LCA2NjM4MSwgCi0gICAgNjYzODUsIDY2Mzg5LCA2NjM5MywgNjYzOTYsIDY2NDAwLCA2NjQwNCwgNjY0MDgsIDY2NDEyLCA2NjQxNiwgNjY0MjAsIAotICAgIDY2NDI0LCA2NjQyOCwgNjY0MzIsIDY2NDM2LCA2NjQ0MCwgNjY0NDQsIDY2NDQ4LCA2NjQ1MiwgNjY0NTYsIDY2NDYwLCAKLSAgICA2NjQ2NCwgNjY0NjgsIDY2NDcyLCA2NjQ3NiwgNjY0ODAsIDY2NDg0LCA2NjQ4OCwgNjY0OTIsIDY2NDk2LCA2NjUwMCwgCi0gICAgNjY1MDQsIDY2NTA4LCA2NjUxMiwgNjY1MTYsIDY2NTIwLCA2NjUyNCwgNjY1MjgsIDY2NTMyLCA2NjUzNiwgNjY1NDAsIAotICAgIDY2NTQ0LCA2NjU0OCwgNjY1NTIsIDY2NTU2LCA2NjU2MCwgNjY1NjQsIDY2NTY4LCA2NjU3MiwgNjY1NzYsIDY2NTgwLCAKLSAgICA2NjU4NCwgNjY1ODgsIDY2NTkyLCA2NjU5NiwgNjY2MDAsIDY2NjA0LCA2NjYwOCwgNjY2MTIsIDY2NjE2LCA2NjYyMCwgCi0gICAgNjY2MjQsIDY2NjI4LCA2NjYzMiwgNjY2MzYsIDY2NjQwLCA2NjY0NCwgNjY2NDgsIDY2NjUyLCA2NjY1NiwgNjY2NjAsIAotICAgIDY2NjY0LCA2NjY2OCwgNjY2NzIsIDY2Njc2LCA2NjY4MCwgNjY2ODQsIDY2Njg4LCA2NjY5MiwgNjY2OTYsIDY2NzAwLCAKLSAgICA2NjcwNCwgNjY3MDgsIDY2NzEyLCA2NjcxNiwgNjY3MjAsIDY2NzI0LCA2NjcyOCwgNjY3MzIsIDY2NzM2LCA2Njc0MCwgCi0gICAgNjY3NDQsIDY2NzQ4LCA2Njc1MiwgNjY3NTYsIDY2NzYwLCA2Njc2NCwgNjY3NjgsIDY2NzcyLCA2Njc3NiwgNjY3ODAsIAotICAgIDY2Nzg0LCA2Njc4OCwgNjY3OTIsIDY2Nzk2LCA2NjgwMCwgNjY4MDQsIDY2ODA4LCA2NjgxMiwgNjY4MTYsIDY2ODIwLCAKLSAgICA2NjgyNCwgNjY4MjgsIDY2ODMyLCA2NjgzNiwgNjY4NDAsIDY2ODQ0LCA2Njg0OCwgNjY4NTIsIDY2ODU2LCA2Njg2MCwgCi0gICAgNjY4NjQsIDY2ODY4LCA2Njg3MiwgNjY4NzYsIDY2ODgwLCA2Njg4NCwgNjY4ODgsIDY2ODkyLCA2Njg5NiwgNjY5MDAsIAotICAgIDY2OTA0LCA2NjkwOCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCA2NjkzMiwgNjY5MzYsIDY2OTQwLCAKLSAgICA2Njk0NCwgNjY5NDgsIDY2OTUyLCA2Njk1NiwgNjY5NjAsIDY2OTY0LCA2Njk2OCwgNjY5NzIsIDY2OTc2LCA2Njk4MCwgCi0gICAgNjY5ODQsIDY2OTg4LCA2Njk5MiwgNjY5OTYsIDY3MDAwLCA2NzAwNCwgNjcwMDgsIDY3MDEyLCA2NzAxNiwgNjcwMjAsIAotICAgIDY3MDI0LCA2NzAyOCwgNjcwMzIsIDY3MDM2LCA2NzA0MCwgNjcwNDQsIDY3MDQ4LCA2NzA1MiwgNjcwNTYsIDY3MDYwLCAKLSAgICA2NzA2NCwgNjcwNjgsIDY3MDcyLCA2NzA3NiwgNjcwODAsIDY3MDg0LCA2NzA4OCwgNjcwOTIsIDY3MDk2LCA2NzEwMCwgCi0gICAgNjcxMDQsIDY3MTA4LCA2NzExMiwgNjcxMTYsIDY3MTIwLCA2NzEyNCwgNjcxMjgsIDY3MTMyLCA2NzEzNiwgNjcxNDAsIAotICAgIDY3MTQ0LCA2NzE0OCwgNjcxNTIsIDY3MTU1LCA2NzE1OSwgNjcxNjMsIDY3MTY3LCA2NzE3MSwgNjcxNzUsIDY3MTc5LCAKLSAgICA2NzE4MywgNjcxODcsIDY3MTkxLCA2NzE5NSwgNjcxOTksIDY3MjAzLCA2NzIwNywgNjcyMTEsIDY3MjE1LCA2NzIxOSwgCi0gICAgNjcyMjMsIDY3MjI3LCA2NzIzMSwgNjcyMzUsIDY3MjM5LCA2NzI0MywgNjcyNDcsIDY3MjUxLCA2NzI1NSwgNjcyNTksIAotICAgIDY3MjYzLCA2NzI2NywgNjcyNzEsIDY3Mjc1LCA2NzI3OSwgNjcyODMsIDY3Mjg3LCA2NzI5MSwgNjcyOTUsIDY3Mjk5LCAKLSAgICA2NzMwMywgNjczMDcsIDY3MzExLCA2NzMxNSwgNjczMTksIDY3MzIzLCA2NzMyNywgNjczMzEsIDY3MzM1LCA2NzMzOSwgCi0gICAgNjczNDMsIDY3MzQ3LCA2NzM1MSwgNjczNTUsIDY3MzU5LCA2NzM2MywgNjczNjcsIDY3MzcxLCA2NzM3NSwgNjczNzksIAotICAgIDY3MzgzLCA2NzM4NywgNjczOTEsIDY3Mzk1LCA2NzM5OSwgNjc0MDMsIDY3NDA3LCA2NzQxMSwgNjc0MTUsIDY3NDE5LCAKLSAgICA2NzQyMywgNjc0MjcsIDY3NDMxLCA2NzQzNSwgNjc0MzksIDY3NDQzLCA2NzQ0NywgNjc0NTEsIDY3NDU1LCA2NzQ1OSwgCi0gICAgNjc0NjMsIDY3NDY3LCA2NzQ3MSwgNjc0NzUsIDY3NDc5LCA2NzQ4MywgNjc0ODcsIDY3NDkxLCA2NzQ5NSwgNjc0OTksIAotICAgIDY3NTAzLCA2NzUwNywgNjc1MTEsIDY3NTE1LCA2NzUxOSwgNjc1MjMsIDY3NTI3LCA2NzUzMSwgNjc1MzUsIDY3NTM5LCAKLSAgICA2NzU0MywgNjc1NDcsIDY3NTUxLCA2NzU1NSwgNjc1NTksIDY3NTYzLCA2NzU2NywgNjc1NzEsIDY3NTc1LCA2NzU3OSwgCi0gICAgNjc1ODMsIDY3NTg3LCA2NzU5MSwgNjc1OTUsIDY3NTk5LCA2NzYwMywgNjc2MDcsIDY3NjExLCA2NzYxNSwgNjc2MTksIAotICAgIDY3NjIzLCA2NzYyNywgNjc2MzEsIDY3NjM1LCA2NzYzOSwgNjc2NDMsIDY3NjQ3LCA2NzY1MSwgNjc2NTUsIDY3NjU5LCAKLSAgICA2NzY2MywgNjc2NjcsIDY3NjcxLCA2NzY3NSwgNjc2NzksIDY3NjgzLCA2NzY4NywgNjc2OTEsIDY3Njk1LCA2NzY5OSwgCi0gICAgNjc3MDMsIDY3NzA3LCA2NzcxMSwgNjc3MTUsIDY3NzE5LCA2NzcyMywgNjc3MjcsIDY3NzMxLCA2NzczNSwgNjc3MzksIAotICAgIDY3NzQzLCA2Nzc0NywgNjc3NTEsIDY3NzU1LCA2Nzc1OSwgNjc3NjMsIDY3NzY3LCA2Nzc3MSwgNjc3NzUsIDY3Nzc5LCAKLSAgICA2Nzc4MywgNjc3ODcsIDY3NzkxLCA2Nzc5NSwgNjc3OTksIDY3ODAzLCA2NzgwNywgNjc4MTEsIDY3ODE1LCA2NzgxOSwgCi0gICAgNjc4MjMsIDY3ODI3LCA2NzgzMSwgNjc4MzUsIDY3ODM5LCA2Nzg0MywgNjc4NDcsIDY3ODUxLCA2Nzg1NSwgNjc4NTksIAotICAgIDY3ODYzLCA2Nzg2NywgNjc4NzEsIDY3ODc1LCA2Nzg3OSwgNjc4ODMsIDY3ODg3LCA2Nzg5MSwgNjc4OTUsIDY3ODk5LCAKLSAgICA2NzkwMywgNjc5MDcsIDY3OTExLCA2NzkxNSwgNjc5MTksIDY3OTIzLCA2NzkyNywgNjc5MzEsIDY3OTM1LCAwLCAwLCAwLCAKLSAgICA2NzkzOSwgNjc5NDMsIDY3OTQ3LCA2Nzk1MSwgNjc5NTUsIDY3OTU5LCA2Nzk2MywgNjc5NjcsIDY3OTcxLCA2Nzk3NSwgCi0gICAgNjc5NzksIDY3OTgzLCA2Nzk4NywgNjc5OTEsIDY3OTk1LCA2Nzk5OSwgNjgwMDMsIDY4MDA3LCA2ODAxMSwgNjgwMTUsIAotICAgIDY4MDE5LCA2ODAyMywgNjgwMjcsIDY4MDMxLCA2ODAzNSwgNjgwMzksIDY4MDQzLCA2ODA0NywgNjgwNTEsIDY4MDU1LCAKLSAgICA2ODA1OSwgNjgwNjMsIDY4MDY3LCA2ODA3MSwgNjgwNzUsIDY4MDc5LCA2ODA4MywgNjgwODcsIDY4MDkxLCA2ODA5NSwgCi0gICAgNjgwOTksIDY4MTAzLCA2ODEwNywgNjgxMTEsIDY4MTE1LCA2ODExOSwgNjgxMjMsIDY4MTI3LCA2ODEzMSwgNjgxMzUsIAotICAgIDY4MTM5LCA2ODE0MywgNjgxNDcsIDY4MTUxLCA2ODE1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjgxNTksIAotICAgIDY4MTY0LCA2ODE2OCwgNjgxNzMsIDY4MTc4LCA2ODE4MywgNjgxODgsIDY4MTkzLCA2ODE5NywgNjgyMDIsIDY4MjA3LCAKLSAgICA2ODIxMiwgNjgyMTcsIDY4MjIyLCA2ODIyNywgNjgyMzIsIDY4MjM2LCA2ODI0MCwgNjgyNDUsIDY4MjUwLCA2ODI1NSwgCi0gICAgNjgyNjAsIDY4MjY1LCA2ODI2OSwgNjgyNzQsIDY4Mjc5LCA2ODI4NCwgNjgyODksIDY4Mjk0LCA2ODI5OCwgNjgzMDMsIAotICAgIDY4MzA3LCA2ODMxMiwgNjgzMTYsIDY4MzIxLCA2ODMyNSwgNjgzMjksIDY4MzMzLCA2ODMzOCwgNjgzNDMsIDY4MzQ4LCAKLSAgICA2ODM1NiwgNjgzNjQsIDY4MzcyLCA2ODM4MCwgNjgzODcsIDY4Mzk1LCA2ODQwMSwgNjg0MDksIDY4NDEzLCA2ODQxNywgCi0gICAgNjg0MjEsIDY4NDI1LCA2ODQyOSwgNjg0MzMsIDY4NDM3LCA2ODQ0MSwgNjg0NDUsIDY4NDQ5LCA2ODQ1MywgNjg0NTcsIAotICAgIDY4NDYxLCA2ODQ2NSwgNjg0NjksIDY4NDczLCA2ODQ3NywgNjg0ODEsIDY4NDg1LCA2ODQ4OSwgNjg0OTMsIDY4NDk3LCAKLSAgICA2ODUwMSwgNjg1MDUsIDY4NTA5LCA2ODUxMywgNjg1MTcsIDY4NTIxLCA2ODUyNSwgNjg1MjksIDY4NTMzLCA2ODUzNywgCi0gICAgNjg1NDEsIDY4NTQ1LCA2ODU0OSwgNjg1NTMsIDY4NTU2LCA2ODU2MCwgNjg1NjQsIDY4NTY4LCA2ODU3MiwgNjg1NzYsIAotICAgIDY4NTgwLCA2ODU4NCwgNjg1ODgsIDY4NTkyLCA2ODU5NiwgNjg2MDAsIDY4NjA0LCA2ODYwOCwgNjg2MTIsIDY4NjE2LCAKLSAgICA2ODYyMCwgNjg2MjQsIDY4NjI4LCA2ODYzMiwgNjg2MzYsIDY4NjQwLCA2ODY0NCwgNjg2NDgsIDY4NjUyLCA2ODY1NiwgCi0gICAgNjg2NjAsIDY4NjY0LCA2ODY2OCwgNjg2NzIsIDY4Njc2LCA2ODY4MCwgNjg2ODQsIDY4Njg4LCA2ODY5MiwgNjg2OTYsIAotICAgIDY4NzAwLCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNCwgNjg3MTgsIDY4NzIyLCA2ODcyNiwgNjg3MjksIDY4NzMzLCAKLSAgICA2ODczNywgNjg3NDEsIDY4NzQ1LCA2ODc0OSwgNjg3NTMsIDY4NzU3LCA2ODc2MSwgNjg3NjUsIDY4NzY5LCA2ODc3MywgCi0gICAgNjg3NzcsIDY4NzgxLCA2ODc4NSwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgNjg4MDAsIDY4ODA0LCA2ODgwOCwgNjg4MTIsIAotICAgIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI3LCA2ODgzMCwgNjg4MzQsIDY4ODM4LCA2ODg0MiwgNjg4NDUsIDY4ODQ4LCAKLSAgICA2ODg1MiwgNjg4NTYsIDY4ODYwLCA2ODg2NCwgNjg4NjgsIDY4ODcyLCA2ODg3NiwgNjg4ODAsIDY4ODg0LCA2ODg4OCwgCi0gICAgNjg4OTIsIDY4ODk2LCA2ODkwMCwgNjg5MDQsIDY4OTA4LCA2ODkxMiwgNjg5MTYsIDY4OTIwLCA2ODkyNCwgNjg5MjgsIAotICAgIDY4OTMyLCA2ODkzNiwgNjg5NDAsIDY4OTQ0LCA2ODk0OCwgNjg5NTIsIDY4OTU2LCA2ODk2MCwgNjg5NjQsIDY4OTY4LCAKLSAgICA2ODk3MiwgNjg5NzYsIDY4OTgwLCA2ODk4NCwgNjg5ODgsIDY4OTkyLCA2ODk5NiwgNjg5OTksIDY5MDAzLCA2OTAwNywgCi0gICAgNjkwMTEsIDY5MDE1LCA2OTAxOSwgNjkwMjMsIDY5MDI3LCA2OTAzMSwgNjkwMzUsIDY5MDM5LCA2OTA0MywgNjkwNDcsIAotICAgIDY5MDUxLCA2OTA1NSwgNjkwNTksIDY5MDYzLCA2OTA2NywgNjkwNzEsIDY5MDc1LCA2OTA3OSwgNjkwODMsIDY5MDg3LCAKLSAgICA2OTA5MSwgNjkwOTUsIDY5MDk5LCA2OTEwMywgNjkxMDcsIDY5MTExLCA2OTExNSwgNjkxMTksIDY5MTIzLCA2OTEyNywgCi0gICAgNjkxMzEsIDY5MTM1LCA2OTEzOSwgNjkxNDMsIDY5MTQ2LCA2OTE1MCwgNjkxNTQsIDY5MTU4LCA2OTE2MiwgNjkxNjYsIAotICAgIDY5MTcwLCA2OTE3NCwgNjkxNzgsIDY5MTgyLCA2OTE4NiwgNjkxOTAsIDY5MTk0LCA2OTE5OCwgNjkyMDIsIDY5MjA2LCAKLSAgICA2OTIxMCwgNjkyMTMsIDY5MjE3LCA2OTIyMSwgNjkyMjUsIDY5MjI5LCA2OTIzMywgNjkyMzcsIDY5MjQxLCA2OTI0NSwgCi0gICAgNjkyNDksIDY5MjUzLCA2OTI1NywgNjkyNjEsIDY5MjY1LCA2OTI2OSwgNjkyNzMsIDY5Mjc3LCA2OTI4MSwgNjkyODUsIAotICAgIDY5Mjg5LCA2OTI5MywgNjkyOTcsIDY5MzAwLCA2OTMwNCwgNjkzMDgsIDY5MzEyLCA2OTMxNiwgNjkzMjAsIDY5MzI0LCAKLSAgICA2OTMyOCwgNjkzMzIsIDY5MzM2LCA2OTM0MCwgNjkzNDQsIDY5MzQ4LCA2OTM1MiwgNjkzNTYsIDY5MzYwLCA2OTM2NCwgCi0gICAgNjkzNjgsIDY5MzcyLCA2OTM3NiwgNjkzODAsIDY5Mzg0LCA2OTM4OCwgNjkzOTIsIDY5Mzk2LCA2OTQwMCwgNjk0MDQsIAotICAgIDY5NDA4LCA2OTQxMiwgNjk0MTYsIDY5NDIwLCA2OTQyNCwgNjk0MjgsIDY5NDMyLCA2OTQzNiwgNjk0NDAsIDY5NDQ0LCAKLSAgICA2OTQ0OCwgNjk0NTIsIDY5NDU2LCA2OTQ2MCwgNjk0NjQsIDY5NDY4LCA2OTQ3MiwgNjk0NzUsIDY5NDgwLCA2OTQ4NCwgCi0gICAgNjk0OTAsIDY5NDk1LCA2OTUwMSwgNjk1MDUsIDY5NTA5LCA2OTUxMywgNjk1MTcsIDY5NTIxLCA2OTUyNSwgNjk1MjksIAotICAgIDY5NTMzLCA2OTUzNywgNjk1NDEsIDY5NTQ1LCA2OTU0OSwgNjk1NTMsIDY5NTU3LCA2OTU2MCwgNjk1NjMsIDY5NTY2LCAKLSAgICA2OTU2OSwgNjk1NzIsIDY5NTc1LCA2OTU3OCwgNjk1ODEsIDY5NTg0LCA2OTU4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjk1OTUsIDY5NjAwLCA2OTYwNSwgNjk2MTAsIDY5NjE1LCAKLSAgICA2OTYyMiwgNjk2MjksIDY5NjM0LCA2OTYzOSwgNjk2NDQsIDY5NjQ5LCA2OTY1NiwgNjk2NjMsIDY5NjcwLCA2OTY3NywgCi0gICAgNjk2ODQsIDY5NjkxLCA2OTcwMSwgNjk3MTEsIDY5NzE4LCA2OTcyNSwgNjk3MzIsIDY5NzM5LCA2OTc0NSwgNjk3NTEsIAotICAgIDY5NzYwLCA2OTc2OSwgNjk3NzYsIDY5NzgzLCA2OTc5NCwgNjk4MDUsIDY5ODEwLCA2OTgxNSwgNjk4MjIsIDY5ODI5LCAKLSAgICA2OTgzNiwgNjk4NDMsIDY5ODUwLCA2OTg1NywgNjk4NjQsIDY5ODcxLCA2OTg3NywgNjk4ODMsIDY5ODg5LCA2OTg5NSwgCi0gICAgNjk5MDIsIDY5OTA5LCA2OTkxNCwgNjk5MTgsIDY5OTI1LCA2OTkzMiwgNjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDY5OTQzLCA2OTk0NywgNjk5NTEsIDY5OTU0LCA2OTk1NywgNjk5NjIsIDY5OTY3LCA2OTk3MiwgNjk5NzcsIDY5OTgyLCAKLSAgICA2OTk4NywgNjk5OTIsIDY5OTk3LCA3MDAwMiwgNzAwMDcsIDcwMDE2LCA3MDAyNSwgNzAwMzAsIDcwMDM1LCA3MDA0MCwgCi0gICAgNzAwNDUsIDcwMDUwLCA3MDA1NSwgNzAwNjAsIDcwMDY1LCA3MDA3MCwgNzAwNzUsIDcwMDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA3MDA4NSwgNzAwODgsIDcwMDkxLCA3MDA5NCwgNzAwOTgsIDcwMTAyLCA3MDEwNiwgNzAxMTAsIDcwMTEzLCAKLSAgICA3MDExNywgNzAxMjAsIDcwMTI0LCA3MDEyNywgNzAxMzEsIDcwMTM1LCA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MSwgCi0gICAgNzAxNTUsIDcwMTU4LCA3MDE2MiwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxNzgsIDcwMTgyLCA3MDE4NiwgNzAxOTAsIAotICAgIDcwMTk0LCA3MDE5OCwgNzAyMDIsIDcwMjA2LCA3MDIxMCwgNzAyMTQsIDcwMjE3LCA3MDIyMSwgNzAyMjUsIDcwMjI5LCAKLSAgICA3MDIzMywgNzAyMzcsIDcwMjQxLCA3MDI0NSwgNzAyNDksIDcwMjUzLCA3MDI1NywgNzAyNjEsIDcwMjY1LCA3MDI2OSwgCi0gICAgNzAyNzMsIDcwMjc3LCA3MDI4MSwgNzAyODUsIDcwMjg5LCA3MDI5MywgNzAyOTcsIDcwMzAxLCA3MDMwNSwgNzAzMDksIAotICAgIDcwMzEzLCA3MDMxNiwgNzAzMjAsIDcwMzI0LCA3MDMyOCwgNzAzMzIsIDcwMzM2LCA3MDM0MCwgNzAzNDQsIDcwMzQ3LCAKLSAgICA3MDM1MSwgNzAzNTUsIDcwMzU5LCA3MDM2MywgNzAzNjcsIDcwMzcxLCA3MDM3NSwgNzAzNzksIDcwMzgzLCA3MDM4NywgCi0gICAgNzAzOTEsIDcwMzk1LCA3MDQwMCwgNzA0MDUsIDcwNDA4LCA3MDQxMywgNzA0MTYsIDcwNDE5LCA3MDQyMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzA0MjYsIDcwNDM1LCA3MDQ0NCwgNzA0NTMsIDcwNDYyLCA3MDQ3MSwgNzA0ODAsIDcwNDg5LCAKLSAgICA3MDQ5OCwgNzA1MDYsIDcwNTEzLCA3MDUyMSwgNzA1MjgsIDcwNTM2LCA3MDU0NiwgNzA1NTUsIDcwNTY1LCA3MDU3NCwgCi0gICAgNzA1ODQsIDcwNTkyLCA3MDU5OSwgNzA2MDcsIDcwNjE0LCA3MDYyMiwgNzA2MjcsIDcwNjMyLCA3MDYzNywgNzA2NDYsIAotICAgIDcwNjUyLCA3MDY1OCwgNzA2NjUsIDcwNjc0LCA3MDY4MiwgNzA2OTAsIDcwNjk4LCA3MDcwNSwgNzA3MTIsIDcwNzE5LCAKLSAgICA3MDcyNiwgNzA3MzEsIDcwNzM2LCA3MDc0MSwgNzA3NDYsIDcwNzUxLCA3MDc1NiwgNzA3NjEsIDcwNzY2LCA3MDc3NCwgCi0gICAgNzA3ODIsIDcwNzg4LCA3MDc5MywgNzA3OTgsIDcwODAzLCA3MDgwOCwgNzA4MTMsIDcwODE4LCA3MDgyMywgNzA4MjgsIAotICAgIDcwODMzLCA3MDg0MSwgNzA4NDksIDcwODU0LCA3MDg1OSwgNzA4NjksIDcwODc5LCA3MDg4NiwgNzA4OTMsIDcwOTAyLCAKLSAgICA3MDkxMSwgNzA5MjMsIDcwOTM1LCA3MDk0MSwgNzA5NDcsIDcwOTU1LCA3MDk2MywgNzA5NzMsIDcwOTgzLCA3MDk5MCwgCi0gICAgNzA5OTcsIDcxMDAyLCA3MTAwNywgNzEwMTksIDcxMDMxLCA3MTAzOSwgNzEwNDcsIDcxMDU3LCA3MTA2NywgNzEwNzksIAotICAgIDcxMDkxLCA3MTEwMCwgNzExMDksIDcxMTE2LCA3MTEyMywgNzExMzAsIDcxMTM3LCA3MTE0NiwgNzExNTUsIDcxMTYwLCAKLSAgICA3MTE2NSwgNzExNzIsIDcxMTc5LCA3MTE4NiwgNzExOTMsIDcxMjA1LCA3MTIxNywgNzEyMjIsIDcxMjI3LCA3MTIzMiwgCi0gICAgNzEyMzcsIDcxMjQyLCA3MTI0NywgNzEyNTIsIDcxMjU3LCA3MTI2MSwgNzEyNjYsIDcxMjcxLCA3MTI3NiwgNzEyODEsIAotICAgIDcxMjg2LCA3MTI5MiwgNzEyOTcsIDcxMzAyLCA3MTMwOSwgNzEzMTYsIDcxMzIzLCA3MTMzMCwgNzEzMzcsIDcxMzQ2LCAKLSAgICA3MTM1NSwgNzEzNjEsIDcxMzY3LCA3MTM3MywgNzEzNzksIDcxMzg1LCA3MTM5MSwgNzEzOTgsIDcxNDA1LCA3MTQxMiwgCi0gICAgNzE0MTYsIDcxNDIzLCA3MTQyOCwgNzE0MzMsIDcxNDQwLCAwLCA3MTQ1MywgNzE0NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcxNDY5LCA3MTQ3OCwgNzE0ODcsIDcxNDk2LCA3MTUwNSwgNzE1MTQsIDcxNTIzLCAKLSAgICA3MTUzMiwgNzE1NDEsIDcxNTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjA2NywgMCwgMTIwNzYsIDEyMDgzLCAxMjA5MSwgMTIxMDMsIDEyMTEwLCAxMjExNywgMTIxMjQsIDEyMTM1LCAxMjE0NiwgCisgICAgMTIxNTMsIDEyMTYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE2NywgMTIxNzIsIDEyMTc3LCAxMjE4MiwgMTIxODcsIAorICAgIDEyMTkyLCAxMjE5NywgMTIyMDIsIDEyMjA3LCAxMjIxMiwgMTIyMTcsIDEyMjIyLCAxMjIyNywgMTIyMzEsIDEyMjM1LCAKKyAgICAxMjIzOSwgMTIyNDQsIDEyMjUwLCAxMjI1NiwgMTIyNjIsIDEyMjY3LCAxMjI3MiwgMTIyNzcsIDEyMjgyLCAxMjI4OCwgCisgICAgMTIyOTcsIDEyMzA1LCAwLCAxMjMxMSwgMTIzMTcsIDEyMzIxLCAxMjMyNSwgMTIzMjksIDEyMzM0LCAxMjMzNywgMTIzNDEsIAorICAgIDEyMzQ0LCAxMjM0OCwgMTIzNTEsIDEyMzU1LCAxMjM1OSwgMTIzNjMsIDEyMzY4LCAxMjM3MywgMTIzNzYsIDEyMzgwLCAKKyAgICAxMjM4NSwgMTIzOTAsIDEyMzkzLCAxMjM5NywgMTI0MDAsIDEyNDA0LCAxMjQwOCwgMTI0MTIsIDEyNDE2LCAxMjQyMCwgCisgICAgMTI0MjQsIDEyNDI4LCAxMjQzMiwgMTI0MzYsIDEyNDQwLCAxMjQ0NCwgMTI0NDgsIDEyNDUyLCAxMjQ1NiwgMTI0NjAsIAorICAgIDEyNDY0LCAxMjQ2OCwgMTI0NzIsIDEyNDc1LCAxMjQ3OSwgMTI0ODIsIDEyNDg2LCAxMjQ5MCwgMTI0OTQsIDEyNDk3LCAKKyAgICAxMjUwMCwgMTI1MDMsIDEyNTA3LCAxMjUxMSwgMTI1MTUsIDEyNTE5LCAxMjUyMywgMTI1MjcsIDEyNTMxLCAxMjUzNCwgCisgICAgMTI1MzcsIDEyNTQyLCAxMjU0NywgMTI1NTEsIDEyNTU1LCAxMjU2MCwgMTI1NjQsIDEyNTY5LCAxMjU3MywgMTI1NzgsIAorICAgIDEyNTgzLCAxMjU4OSwgMTI1OTUsIDEyNjAxLCAxMjYwNSwgMTI2MTAsIDEyNjE2LCAxMjYyMiwgMTI2MjYsIDEyNjMxLCAKKyAgICAxMjYzNSwgMTI2NDEsIDEyNjQ2LCAxMjY0OSwgMTI2NTUsIDEyNjYxLCAxMjY2NiwgMTI2NzEsIDEyNjc4LCAxMjY4MywgCisgICAgMTI2ODgsIDEyNjkyLCAxMjY5NiwgMTI3MDAsIDEyNzA0LCAxMjcwOCwgMTI3MTIsIDEyNzE2LCAxMjcyMCwgMTI3MjUsIAorICAgIDEyNzMwLCAxMjczNSwgMTI3NDEsIDEyNzQ0LCAxMjc0OCwgMTI3NTIsIDEyNzU1LCAxMjc1OCwgMTI3NjEsIDEyNzY0LCAKKyAgICAxMjc2NywgMTI3NzAsIDEyNzczLCAxMjc3NiwgMTI3NzksIDEyNzgzLCAxMjc5MCwgMTI3OTUsIDEyNzk5LCAxMjgwMywgCisgICAgMTI4MDcsIDEyODExLCAwLCAxMjgxNSwgMTI4MTksIDEyODIzLCAxMjgyNywgMTI4MzEsIDEyODM3LCAxMjg0MSwgMCwgCisgICAgMTI4NDUsIDEyODQ5LCAxMjg1MywgMCwgMTI4NTcsIDEyODYwLCAxMjg2NCwgMTI4NjcsIDEyODcxLCAxMjg3NCwgMTI4NzgsIAorICAgIDEyODgyLCAwLCAwLCAxMjg4NiwgMTI4ODksIDAsIDAsIDEyODkzLCAxMjg5NiwgMTI5MDAsIDEyOTAzLCAxMjkwNywgCisgICAgMTI5MTEsIDEyOTE1LCAxMjkxOSwgMTI5MjMsIDEyOTI3LCAxMjkzMSwgMTI5MzUsIDEyOTM5LCAxMjk0MywgMTI5NDcsIAorICAgIDEyOTUxLCAxMjk1NSwgMTI5NTksIDEyOTYzLCAxMjk2NywgMTI5NzEsIDEyOTc1LCAwLCAxMjk3OCwgMTI5ODEsIDEyOTg1LCAKKyAgICAxMjk4OSwgMTI5OTMsIDEyOTk2LCAxMjk5OSwgMCwgMTMwMDIsIDAsIDAsIDAsIDEzMDA2LCAxMzAxMCwgMTMwMTQsIAorICAgIDEzMDE3LCAwLCAwLCAxMzAyMCwgMTMwMjQsIDEzMDI4LCAxMzAzMywgMTMwMzcsIDEzMDQyLCAxMzA0NiwgMTMwNTEsIAorICAgIDEzMDU2LCAwLCAwLCAxMzA2MiwgMTMwNjYsIDAsIDAsIDEzMDcxLCAxMzA3NSwgMTMwODAsIDEzMDg0LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMzA5MCwgMCwgMCwgMCwgMCwgMTMwOTYsIDEzMTAwLCAwLCAxMzEwNCwgMTMxMDgsIDEzMTEzLCAKKyAgICAxMzExOCwgMTMxMjMsIDAsIDAsIDEzMTI5LCAxMzEzMywgMTMxMzYsIDEzMTM5LCAxMzE0MiwgMTMxNDUsIDEzMTQ4LCAKKyAgICAxMzE1MSwgMTMxNTQsIDEzMTU3LCAxMzE2MCwgMTMxNjksIDEzMTc4LCAxMzE4MiwgMTMxODYsIDEzMTkyLCAxMzE5OCwgCisgICAgMTMyMDQsIDEzMjEwLCAxMzIyNCwgMTMyMzEsIDEzMjM0LCAwLCAwLCAwLCAwLCAwLCAxMzIzOCwgMTMyNDQsIDEzMjQ4LCAwLCAKKyAgICAxMzI1MiwgMTMyNTUsIDEzMjU5LCAxMzI2MiwgMTMyNjYsIDEzMjY5LCAwLCAwLCAwLCAwLCAxMzI3MywgMTMyNzcsIDAsIDAsIAorICAgIDEzMjgxLCAxMzI4NSwgMTMyODksIDEzMjkyLCAxMzI5NiwgMTMzMDAsIDEzMzA0LCAxMzMwOCwgMTMzMTIsIDEzMzE2LCAKKyAgICAxMzMyMCwgMTMzMjQsIDEzMzI4LCAxMzMzMiwgMTMzMzYsIDEzMzQwLCAxMzM0NCwgMTMzNDgsIDEzMzUyLCAxMzM1NiwgCisgICAgMTMzNjAsIDEzMzY0LCAwLCAxMzM2NywgMTMzNzAsIDEzMzc0LCAxMzM3OCwgMTMzODIsIDEzMzg1LCAxMzM4OCwgMCwgCisgICAgMTMzOTEsIDEzMzk1LCAwLCAxMzM5OSwgMTM0MDMsIDAsIDEzNDA3LCAxMzQxMCwgMCwgMCwgMTM0MTMsIDAsIDEzNDE3LCAKKyAgICAxMzQyMiwgMTM0MjYsIDEzNDMxLCAxMzQzNSwgMCwgMCwgMCwgMCwgMTM0NDAsIDEzNDQ1LCAwLCAwLCAxMzQ1MCwgMTM0NTUsIAorICAgIDEzNDYwLCAwLCAwLCAwLCAxMzQ2NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM0NjgsIDEzNDcyLCAxMzQ3NiwgMTM0ODAsIAorICAgIDAsIDEzNDg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ4OCwgMTM0OTIsIDEzNDk1LCAxMzQ5OCwgMTM1MDEsIDEzNTA0LCAKKyAgICAxMzUwNywgMTM1MTAsIDEzNTEzLCAxMzUxNiwgMTM1MTksIDEzNTIyLCAxMzUyNSwgMTM1MjgsIDEzNTMxLCAxMzUzNiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1NDAsIDEzNTQ0LCAxMzU0OCwgMCwgMTM1NTIsIDEzNTU1LCAKKyAgICAxMzU1OSwgMTM1NjIsIDEzNTY2LCAxMzU2OSwgMTM1NzMsIDEzNTc3LCAxMzU4MSwgMCwgMTM1ODYsIDEzNTg5LCAxMzU5MywgCisgICAgMCwgMTM1OTgsIDEzNjAxLCAxMzYwNSwgMTM2MDgsIDEzNjEyLCAxMzYxNiwgMTM2MjAsIDEzNjI0LCAxMzYyOCwgMTM2MzIsIAorICAgIDEzNjM2LCAxMzY0MCwgMTM2NDQsIDEzNjQ4LCAxMzY1MiwgMTM2NTYsIDEzNjYwLCAxMzY2NCwgMTM2NjgsIDEzNjcyLCAKKyAgICAxMzY3NiwgMTM2ODAsIDAsIDEzNjgzLCAxMzY4NiwgMTM2OTAsIDEzNjk0LCAxMzY5OCwgMTM3MDEsIDEzNzA0LCAwLCAKKyAgICAxMzcwNywgMTM3MTEsIDAsIDEzNzE1LCAxMzcxOSwgMTM3MjMsIDEzNzI3LCAxMzczMCwgMCwgMCwgMTM3MzMsIDEzNzM3LCAKKyAgICAxMzc0MSwgMTM3NDYsIDEzNzUwLCAxMzc1NSwgMTM3NTksIDEzNzY0LCAxMzc2OSwgMTM3NzUsIDAsIDEzNzgxLCAxMzc4NSwgCisgICAgMTM3OTAsIDAsIDEzNzk2LCAxMzgwMCwgMTM4MDUsIDAsIDAsIDEzODA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzgxMiwgMTM4MTcsIDEzODIyLCAxMzgyNywgMCwgMCwgMTM4MzMsIDEzODM3LCAxMzg0MCwgCisgICAgMTM4NDMsIDEzODQ2LCAxMzg0OSwgMTM4NTIsIDEzODU1LCAxMzg1OCwgMTM4NjEsIDEzODY0LCAxMzg2OCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM4NzIsIDEzODc2LCAxMzg4MCwgMCwgMTM4ODQsIDEzODg3LCAKKyAgICAxMzg5MSwgMTM4OTQsIDEzODk4LCAxMzkwMSwgMTM5MDUsIDEzOTA5LCAwLCAwLCAxMzkxMywgMTM5MTYsIDAsIDAsIAorICAgIDEzOTIwLCAxMzkyMywgMTM5MjcsIDEzOTMwLCAxMzkzNCwgMTM5MzgsIDEzOTQyLCAxMzk0NiwgMTM5NTAsIDEzOTU0LCAKKyAgICAxMzk1OCwgMTM5NjIsIDEzOTY2LCAxMzk3MCwgMTM5NzQsIDEzOTc4LCAxMzk4MiwgMTM5ODYsIDEzOTkwLCAxMzk5NCwgCisgICAgMTM5OTgsIDE0MDAyLCAwLCAxNDAwNSwgMTQwMDgsIDE0MDEyLCAxNDAxNiwgMTQwMjAsIDE0MDIzLCAxNDAyNiwgMCwgCisgICAgMTQwMjksIDE0MDMzLCAwLCAxNDAzNywgMTQwNDEsIDE0MDQ1LCAxNDA0OSwgMTQwNTIsIDAsIDAsIDE0MDU1LCAxNDA1OSwgCisgICAgMTQwNjMsIDE0MDY4LCAxNDA3MiwgMTQwNzcsIDE0MDgxLCAxNDA4NiwgMTQwOTEsIDAsIDAsIDE0MDk3LCAxNDEwMSwgMCwgCisgICAgMCwgMTQxMDYsIDE0MTEwLCAxNDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQxMTksIDE0MTI1LCAwLCAwLCAwLCAwLCAKKyAgICAxNDEzMSwgMTQxMzUsIDAsIDE0MTM5LCAxNDE0MywgMTQxNDgsIDE0MTUzLCAxNDE1OCwgMCwgMCwgMTQxNjQsIDE0MTY4LCAKKyAgICAxNDE3MSwgMTQxNzQsIDE0MTc3LCAxNDE4MCwgMTQxODMsIDE0MTg2LCAxNDE4OSwgMTQxOTIsIDE0MTk1LCAxNDE5OCwgCisgICAgMTQyMDIsIDE0MjA4LCAxNDIxNCwgMTQyMjAsIDE0MjI2LCAxNDIzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQyMzgsIDE0MjQyLCAwLCAxNDI0NiwgMTQyNDksIDE0MjUzLCAxNDI1NiwgMTQyNjAsIDE0MjYzLCAwLCAwLCAwLCAKKyAgICAxNDI2NywgMTQyNzAsIDE0Mjc0LCAwLCAxNDI3OCwgMTQyODEsIDE0Mjg1LCAxNDI4OSwgMCwgMCwgMCwgMTQyOTIsIAorICAgIDE0Mjk2LCAwLCAxNDMwMCwgMCwgMTQzMDQsIDE0MzA4LCAwLCAwLCAwLCAxNDMxMiwgMTQzMTYsIDAsIDAsIDAsIDE0MzIwLCAKKyAgICAxNDMyMywgMTQzMjcsIDAsIDAsIDAsIDE0MzMwLCAxNDMzMywgMTQzMzYsIDE0MzM5LCAxNDM0MywgMTQzNDcsIDE0MzUxLCAKKyAgICAxNDM1NSwgMTQzNTksIDE0MzYzLCAxNDM2NywgMTQzNzAsIDAsIDAsIDAsIDAsIDE0MzczLCAxNDM3OCwgMTQzODIsIAorICAgIDE0Mzg3LCAxNDM5MSwgMCwgMCwgMCwgMTQzOTYsIDE0NDAwLCAxNDQwNSwgMCwgMTQ0MTAsIDE0NDE0LCAxNDQxOSwgCisgICAgMTQ0MjQsIDAsIDAsIDE0NDI4LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQ0MzcsIDE0NDQxLCAxNDQ0NCwgMTQ0NDcsIDE0NDUwLCAxNDQ1MywgMTQ0NTYsIDE0NDU5LCAKKyAgICAxNDQ2MiwgMTQ0NjUsIDE0NDY4LCAxNDQ3MiwgMTQ0NzcsIDE0NDgyLCAxNDQ4NiwgMTQ0OTAsIDE0NDk0LCAxNDQ5OCwgCisgICAgMTQ1MDIsIDE0NTA3LCAxNDUxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1MTQsIDE0NTE4LCAxNDUyMiwgMCwgMTQ1MjYsIAorICAgIDE0NTI5LCAxNDUzMywgMTQ1MzYsIDE0NTQwLCAxNDU0MywgMTQ1NDcsIDE0NTUxLCAwLCAxNDU1NSwgMTQ1NTgsIDE0NTYyLCAKKyAgICAwLCAxNDU2NiwgMTQ1NjksIDE0NTczLCAxNDU3NywgMTQ1ODAsIDE0NTg0LCAxNDU4OCwgMTQ1OTIsIDE0NTk2LCAxNDYwMCwgCisgICAgMTQ2MDQsIDE0NjA4LCAxNDYxMiwgMTQ2MTYsIDE0NjIwLCAxNDYyNCwgMTQ2MjgsIDE0NjMyLCAxNDYzNiwgMTQ2NDAsIAorICAgIDE0NjQ0LCAxNDY0OCwgMTQ2NTIsIDAsIDE0NjU1LCAxNDY1OCwgMTQ2NjIsIDE0NjY2LCAxNDY3MCwgMTQ2NzMsIDE0Njc2LCAKKyAgICAxNDY3OSwgMTQ2ODMsIDE0Njg3LCAwLCAxNDY5MSwgMTQ2OTUsIDE0Njk5LCAxNDcwMywgMTQ3MDYsIDAsIDAsIDAsIAorICAgIDE0NzA5LCAxNDcxMywgMTQ3MTgsIDE0NzIyLCAxNDcyNywgMTQ3MzEsIDE0NzM2LCAxNDc0MSwgMCwgMTQ3NDcsIDE0NzUxLCAKKyAgICAxNDc1NiwgMCwgMTQ3NjEsIDE0NzY1LCAxNDc3MCwgMTQ3NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0Nzc5LCAxNDc4MywgCisgICAgMCwgMTQ3ODksIDE0NzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDc5NywgMTQ4MDIsIDE0ODA3LCAxNDgxMiwgMCwgMCwgCisgICAgMTQ4MTgsIDE0ODIyLCAxNDgyNSwgMTQ4MjgsIDE0ODMxLCAxNDgzNCwgMTQ4MzcsIDE0ODQwLCAxNDg0MywgMTQ4NDYsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODQ5LCAxNDg2MiwgMTQ4NzQsIDE0ODg2LCAxNDg5OCwgMTQ5MTAsIDE0OTIyLCAKKyAgICAxNDkzNCwgMCwgMCwgMTQ5MzgsIDE0OTQyLCAwLCAxNDk0NiwgMTQ5NDksIDE0OTUzLCAxNDk1NiwgMTQ5NjAsIDE0OTYzLCAKKyAgICAxNDk2NywgMTQ5NzEsIDAsIDE0OTc1LCAxNDk3OCwgMTQ5ODIsIDAsIDE0OTg2LCAxNDk4OSwgMTQ5OTMsIDE0OTk3LCAKKyAgICAxNTAwMCwgMTUwMDQsIDE1MDA4LCAxNTAxMiwgMTUwMTYsIDE1MDIwLCAxNTAyNCwgMTUwMjgsIDE1MDMyLCAxNTAzNiwgCisgICAgMTUwNDAsIDE1MDQ0LCAxNTA0OCwgMTUwNTIsIDE1MDU2LCAxNTA2MCwgMTUwNjQsIDE1MDY4LCAxNTA3MiwgMCwgMTUwNzUsIAorICAgIDE1MDc4LCAxNTA4MiwgMTUwODYsIDE1MDkwLCAxNTA5MywgMTUwOTYsIDE1MDk5LCAxNTEwMywgMTUxMDcsIDAsIDE1MTExLCAKKyAgICAxNTExNSwgMTUxMTksIDE1MTIzLCAxNTEyNiwgMCwgMCwgMTUxMjksIDE1MTMzLCAxNTEzNywgMTUxNDIsIDE1MTQ2LCAKKyAgICAxNTE1MSwgMTUxNTUsIDE1MTYwLCAxNTE2NSwgMCwgMTUxNzEsIDE1MTc1LCAxNTE4MCwgMCwgMTUxODUsIDE1MTg5LCAKKyAgICAxNTE5NCwgMTUxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjAzLCAxNTIwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTUyMTMsIDAsIDE1MjE3LCAxNTIyMiwgMTUyMjcsIDE1MjMyLCAwLCAwLCAxNTIzOCwgMTUyNDIsIDE1MjQ1LCAxNTI0OCwgCisgICAgMTUyNTEsIDE1MjU0LCAxNTI1NywgMTUyNjAsIDE1MjYzLCAxNTI2NiwgMCwgMTUyNjksIDE1MjczLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTI3NywgMTUyODEsIDAsIDE1Mjg1LCAxNTI4OCwgMTUyOTIsIAorICAgIDE1Mjk1LCAxNTI5OSwgMTUzMDIsIDE1MzA2LCAxNTMxMCwgMCwgMTUzMTQsIDE1MzE3LCAxNTMyMSwgMCwgMTUzMjUsIAorICAgIDE1MzI4LCAxNTMzMiwgMTUzMzYsIDE1MzM5LCAxNTM0MywgMTUzNDcsIDE1MzUxLCAxNTM1NSwgMTUzNTksIDE1MzYzLCAKKyAgICAxNTM2NywgMTUzNzEsIDE1Mzc1LCAxNTM3OSwgMTUzODMsIDE1Mzg3LCAxNTM5MSwgMTUzOTUsIDE1Mzk5LCAxNTQwMywgCisgICAgMTU0MDcsIDE1NDExLCAxNTQxNCwgMTU0MTgsIDE1NDIxLCAxNTQyNSwgMTU0MjksIDE1NDMzLCAxNTQzNiwgMTU0MzksIAorICAgIDE1NDQyLCAxNTQ0NiwgMTU0NTAsIDE1NDU0LCAxNTQ1OCwgMTU0NjIsIDE1NDY2LCAxNTQ3MCwgMTU0NzMsIDE1NDc2LCAwLCAKKyAgICAwLCAxNTQ4MCwgMTU0ODQsIDE1NDg5LCAxNTQ5MywgMTU0OTgsIDE1NTAyLCAxNTUwNywgMTU1MTIsIDAsIDE1NTE4LCAKKyAgICAxNTUyMiwgMTU1MjcsIDAsIDE1NTMyLCAxNTUzNiwgMTU1NDEsIDE1NTQ2LCAxNTU1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTU1NTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTYxLCAxNTU2NiwgMTU1NzEsIDE1NTc2LCAwLCAwLCAKKyAgICAxNTU4MiwgMTU1ODYsIDE1NTg5LCAxNTU5MiwgMTU1OTUsIDE1NTk4LCAxNTYwMSwgMTU2MDQsIDE1NjA3LCAxNTYxMCwgCisgICAgMTU2MTMsIDE1NjE3LCAxNTYyMiwgMTU2MjcsIDE1NjMzLCAxNTYzOSwgMCwgMCwgMCwgMTU2NDUsIDE1NjQ5LCAxNTY1NSwgCisgICAgMTU2NjEsIDE1NjY3LCAxNTY3MiwgMTU2NzgsIDAsIDAsIDE1Njg0LCAxNTY4OCwgMCwgMTU2OTIsIDE1Njk2LCAxNTcwMCwgCisgICAgMTU3MDQsIDE1NzA4LCAxNTcxMiwgMTU3MTYsIDE1NzIwLCAxNTcyNCwgMTU3MjgsIDE1NzMyLCAxNTczNiwgMTU3NDAsIAorICAgIDE1NzQ0LCAxNTc0OCwgMTU3NTIsIDE1NzU2LCAxNTc2MCwgMCwgMCwgMCwgMTU3NjQsIDE1NzcwLCAxNTc3NiwgMTU3ODIsIAorICAgIDE1Nzg4LCAxNTc5NCwgMTU4MDAsIDE1ODA2LCAxNTgxMiwgMTU4MTgsIDE1ODI0LCAxNTgzMCwgMTU4MzgsIDE1ODQ0LCAKKyAgICAxNTg1MCwgMTU4NTYsIDE1ODYyLCAxNTg2OCwgMTU4NzQsIDE1ODgwLCAxNTg4NiwgMTU4OTIsIDE1ODk4LCAxNTkwNCwgMCwgCisgICAgMTU5MTAsIDE1OTE2LCAxNTkyMiwgMTU5MjgsIDE1OTM0LCAxNTk0MCwgMTU5NDQsIDE1OTUwLCAxNTk1NCwgMCwgMTU5NTgsIAorICAgIDAsIDAsIDE1OTY0LCAxNTk2OCwgMTU5NzQsIDE1OTgwLCAxNTk4NiwgMTU5OTAsIDE1OTk2LCAwLCAwLCAwLCAxNjAwMCwgMCwgCisgICAgMCwgMCwgMCwgMTYwMDQsIDE2MDA5LCAxNjAxNiwgMTYwMjMsIDE2MDMwLCAxNjAzNywgMCwgMTYwNDQsIDAsIDE2MDUxLCAKKyAgICAxNjA1NiwgMTYwNjEsIDE2MDY4LCAxNjA3NSwgMTYwODQsIDE2MDk1LCAxNjEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYxMDksIDE2MTE2LCAxNjEyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTYxMjgsIDE2MTM0LCAxNjE0MCwgMTYxNDYsIDE2MTUyLCAxNjE1OCwgMTYxNjQsIDE2MTcwLCAKKyAgICAxNjE3NiwgMTYxODIsIDE2MTg4LCAxNjE5NCwgMTYyMDAsIDE2MjA2LCAxNjIxMiwgMTYyMTgsIDE2MjI0LCAxNjIzMCwgCisgICAgMTYyMzYsIDE2MjQyLCAxNjI0OCwgMTYyNTQsIDE2MjYwLCAxNjI2NiwgMTYyNzIsIDE2Mjc4LCAxNjI4NCwgMTYyOTAsIAorICAgIDE2Mjk2LCAxNjMwMiwgMTYzMDgsIDE2MzE0LCAxNjMyMCwgMTYzMjUsIDE2MzMxLCAxNjMzNywgMTYzNDEsIDE2MzQ3LCAKKyAgICAxNjM1MSwgMTYzNTcsIDE2MzYzLCAxNjM2OSwgMTYzNzUsIDE2MzgxLCAxNjM4NywgMTYzOTIsIDE2Mzk4LCAxNjQwMiwgCisgICAgMTY0MDcsIDE2NDEzLCAxNjQxOSwgMTY0MjUsIDE2NDMwLCAxNjQzNiwgMTY0NDIsIDE2NDQ4LCAxNjQ1MywgMTY0NTksIDAsIAorICAgIDAsIDAsIDAsIDE2NDYzLCAxNjQ2OSwgMTY0NzQsIDE2NDgwLCAxNjQ4NSwgMTY0OTMsIDE2NTAxLCAxNjUwNSwgMTY1MDksIAorICAgIDE2NTEzLCAxNjUxOSwgMTY1MjUsIDE2NTMxLCAxNjUzNywgMTY1NDEsIDE2NTQ1LCAxNjU0OSwgMTY1NTMsIDE2NTU3LCAKKyAgICAxNjU2MCwgMTY1NjMsIDE2NTY2LCAxNjU2OSwgMTY1NzIsIDE2NTc1LCAxNjU3OCwgMTY1ODEsIDE2NTg0LCAxNjU4OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1OTIsIDE2NTk3LCAwLCAxNjYwNCwgMCwgMCwgMTY2MTEsIAorICAgIDE2NjE2LCAwLCAxNjYyMSwgMCwgMCwgMTY2MjgsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjMzLCAxNjYzOCwgMTY2NDIsIAorICAgIDE2NjQ5LCAwLCAxNjY1NiwgMTY2NjEsIDE2NjY2LCAxNjY3MSwgMTY2NzgsIDE2Njg1LCAxNjY5MiwgMCwgMTY2OTksIAorICAgIDE2NzA0LCAxNjcwOSwgMCwgMTY3MTYsIDAsIDE2NzIzLCAwLCAwLCAxNjcyOCwgMTY3MzUsIDAsIDE2NzQyLCAxNjc0NiwgCisgICAgMTY3NTMsIDE2NzU3LCAxNjc2MiwgMTY3NzAsIDE2Nzc2LCAxNjc4MiwgMTY3ODcsIDE2NzkzLCAxNjc5OSwgMTY4MDUsIAorICAgIDE2ODEwLCAwLCAxNjgxNiwgMTY4MjQsIDE2ODMxLCAwLCAwLCAxNjgzOCwgMTY4NDMsIDE2ODQ5LCAxNjg1NCwgMTY4NjAsIAorICAgIDAsIDE2ODY2LCAwLCAxNjg3MiwgMTY4NzksIDE2ODg2LCAxNjg5MywgMTY5MDAsIDE2OTA1LCAwLCAwLCAxNjkwOSwgCisgICAgMTY5MTQsIDE2OTE4LCAxNjkyMiwgMTY5MjYsIDE2OTMwLCAxNjkzNCwgMTY5MzgsIDE2OTQyLCAxNjk0NiwgMCwgMCwgCisgICAgMTY5NTAsIDE2OTU2LCAxNjk2MiwgMTY5NjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2OTc2LCAxNjk4MCwgMTY5OTEsIAorICAgIDE3MDA2LCAxNzAyMSwgMTcwMzEsIDE3MDQyLCAxNzA1NSwgMTcwNjYsIDE3MDcyLCAxNzA4MCwgMTcwOTAsIDE3MDk2LCAKKyAgICAxNzEwNCwgMTcxMDgsIDE3MTE0LCAxNzEyMCwgMTcxMjgsIDE3MTM4LCAxNzE0NiwgMTcxNTksIDE3MTY1LCAxNzE3MywgCisgICAgMTcxODEsIDE3MTkzLCAxNzIwMCwgMTcyMDgsIDE3MjE2LCAxNzIyNCwgMTcyMzIsIDE3MjQwLCAxNzI0OCwgMTcyNTgsIAorICAgIDE3MjYyLCAxNzI2NSwgMTcyNjgsIDE3MjcxLCAxNzI3NCwgMTcyNzcsIDE3MjgwLCAxNzI4MywgMTcyODYsIDE3Mjg5LCAKKyAgICAxNzI5MywgMTcyOTcsIDE3MzAxLCAxNzMwNSwgMTczMDksIDE3MzEzLCAxNzMxNywgMTczMjEsIDE3MzI1LCAxNzMzMCwgCisgICAgMTczMzYsIDE3MzQ2LCAxNzM2MCwgMTczNzAsIDE3Mzc2LCAxNzM4MiwgMTczOTAsIDE3Mzk4LCAxNzQwNiwgMTc0MTQsIAorICAgIDE3NDIwLCAxNzQyNiwgMTc0MjksIDE3NDMzLCAxNzQzNywgMTc0NDEsIDE3NDQ1LCAxNzQ0OSwgMTc0NTMsIDAsIDE3NDU3LCAKKyAgICAxNzQ2MSwgMTc0NjUsIDE3NDY5LCAxNzQ3MywgMTc0NzcsIDE3NDgxLCAxNzQ4NSwgMTc0ODksIDE3NDkzLCAxNzQ5NywgCisgICAgMTc1MDAsIDE3NTAzLCAxNzUwNywgMTc1MTEsIDE3NTE1LCAxNzUxOCwgMTc1MjIsIDE3NTI2LCAxNzUzMCwgMTc1MzQsIAorICAgIDE3NTM4LCAxNzU0MiwgMTc1NDYsIDE3NTUwLCAxNzU1MywgMTc1NTYsIDE3NTYwLCAxNzU2NCwgMTc1NjgsIDE3NTcxLCAKKyAgICAxNzU3NCwgMTc1NzcsIDE3NTgxLCAxNzU4NiwgMTc1OTAsIDAsIDAsIDAsIDAsIDE3NTk0LCAxNzU5OSwgMTc2MDMsIAorICAgIDE3NjA4LCAxNzYxMiwgMTc2MTcsIDE3NjIyLCAxNzYyOCwgMTc2MzMsIDE3NjM5LCAxNzY0MywgMTc2NDgsIDE3NjUyLCAKKyAgICAxNzY1NywgMTc2NjcsIDE3NjczLCAxNzY3OSwgMTc2ODYsIDE3Njk2LCAxNzcwMiwgMTc3MDYsIDE3NzEwLCAxNzcxNiwgCisgICAgMTc3MjIsIDE3NzMwLCAxNzczNiwgMTc3NDQsIDE3NzUyLCAxNzc2MCwgMTc3NzAsIDE3Nzc4LCAxNzc4OCwgMTc3OTMsIAorICAgIDE3Nzk5LCAxNzgwNSwgMTc4MTEsIDE3ODE3LCAxNzgyMywgMTc4MjksIDAsIDE3ODM1LCAxNzg0MSwgMTc4NDcsIDE3ODUzLCAKKyAgICAxNzg1OSwgMTc4NjUsIDE3ODcxLCAxNzg3NywgMTc4ODMsIDE3ODg5LCAxNzg5NSwgMTc5MDAsIDE3OTA1LCAxNzkxMSwgCisgICAgMTc5MTcsIDE3OTIzLCAxNzkyOCwgMTc5MzQsIDE3OTQwLCAxNzk0NiwgMTc5NTIsIDE3OTU4LCAxNzk2NCwgMTc5NzAsIAorICAgIDE3OTc2LCAxNzk4MSwgMTc5ODYsIDE3OTkyLCAxNzk5OCwgMTgwMDQsIDE4MDA5LCAxODAxNCwgMTgwMTksIDE4MDI1LCAKKyAgICAxODAzMywgMTgwNDAsIDAsIDE4MDQ3LCAxODA1NCwgMTgwNjcsIDE4MDc0LCAxODA4MSwgMTgwODksIDE4MDk3LCAxODEwMywgCisgICAgMTgxMDksIDE4MTE1LCAxODEyNSwgMTgxMzAsIDE4MTM2LCAxODE0NiwgMTgxNTYsIDAsIDE4MTY2LCAxODE3NiwgMTgxODQsIAorICAgIDE4MTk2LCAxODIwOCwgMTgyMTQsIDE4MjI4LCAxODI0MywgMTgyNDgsIDE4MjUzLCAxODI2MSwgMTgyNjksIDE4Mjc3LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxODI4NSwgMTgyODgsIDE4MjkyLCAxODI5NiwgMTgzMDAsIAorICAgIDE4MzA0LCAxODMwOCwgMTgzMTIsIDE4MzE2LCAxODMyMCwgMTgzMjQsIDE4MzI4LCAxODMzMiwgMTgzMzYsIDE4MzQwLCAKKyAgICAxODM0NCwgMTgzNDgsIDE4MzUyLCAxODM1NiwgMTgzNjAsIDE4MzY0LCAxODM2NywgMTgzNzAsIDE4Mzc0LCAxODM3OCwgCisgICAgMTgzODIsIDE4Mzg1LCAxODM4OCwgMTgzOTEsIDE4Mzk1LCAxODM5OSwgMTg0MDIsIDE4NDA1LCAxODQwOSwgMTg0MTIsIAorICAgIDE4NDE3LCAxODQyMCwgMTg0MjQsIDE4NDI3LCAxODQzMSwgMTg0MzQsIDE4NDM5LCAxODQ0MiwgMTg0NDYsIDE4NDUzLCAKKyAgICAxODQ1OCwgMTg0NjIsIDE4NDY3LCAxODQ3MSwgMTg0NzYsIDE4NDgwLCAxODQ4NSwgMTg0OTIsIDE4NDk4LCAxODUwMywgCisgICAgMTg1MDcsIDE4NTExLCAxODUxNSwgMTg1MTksIDE4NTIzLCAxODUyOCwgMTg1MzMsIDE4NTM5LCAxODU0NCwgMTg1NDksIAorICAgIDE4NTUzLCAxODU1NiwgMTg1NTksIDE4NTYyLCAxODU2NSwgMTg1NjgsIDE4NTcxLCAxODU3NCwgMTg1NzcsIDE4NTgwLCAKKyAgICAxODU4NiwgMTg1OTAsIDE4NTk0LCAxODU5OCwgMTg2MDIsIDE4NjA2LCAxODYxMCwgMTg2MTQsIDE4NjE4LCAxODYyMywgCisgICAgMTg2MjcsIDE4NjMyLCAxODYzNywgMTg2NDMsIDE4NjQ4LCAxODY1NCwgMTg2NjAsIDE4NjY2LCAxODY3MiwgMTg2NzgsIAorICAgIDE4Njg1LCAxODY5MiwgMTg3MDAsIDE4NzA4LCAxODcxNywgMTg3MjYsIDE4NzM3LCAxODc0NywgMTg3NTcsIDE4NzY4LCAKKyAgICAxODc3OSwgMTg3ODksIDE4Nzk5LCAxODgwOSwgMTg4MTksIDE4ODI5LCAxODgzOSwgMTg4NDksIDE4ODU5LCAxODg2NywgCisgICAgMTg4NzQsIDE4ODgwLCAxODg4NywgMTg4OTIsIDE4ODk4LCAxODkwNCwgMTg5MTAsIDE4OTE2LCAxODkyMiwgMTg5MjgsIAorICAgIDE4OTMzLCAxODkzOSwgMTg5NDUsIDE4OTUxLCAxODk1NywgMTg5NjIsIDE4OTcwLCAxODk3NywgMTg5ODMsIDE4OTkwLCAKKyAgICAxODk5OCwgMTkwMDQsIDE5MDEwLCAxOTAxNiwgMTkwMjIsIDE5MDMwLCAxOTAzOCwgMTkwNDgsIDE5MDU2LCAxOTA2NCwgCisgICAgMTkwNzAsIDE5MDc1LCAxOTA4MCwgMTkwODUsIDE5MDkwLCAxOTA5NSwgMTkxMDAsIDE5MTA1LCAxOTExMCwgMTkxMTUsIAorICAgIDE5MTIxLCAxOTEyNywgMTkxMzMsIDE5MTQwLCAxOTE0NSwgMTkxNTEsIDE5MTU2LCAxOTE2MSwgMTkxNjYsIDE5MTcxLCAKKyAgICAxOTE3NiwgMTkxODEsIDE5MTg2LCAxOTE5MSwgMTkxOTYsIDE5MjAxLCAxOTIwNiwgMTkyMTEsIDE5MjE2LCAxOTIyMSwgCisgICAgMTkyMjYsIDE5MjMxLCAxOTIzNiwgMTkyNDEsIDE5MjQ2LCAxOTI1MSwgMTkyNTYsIDE5MjYxLCAxOTI2NiwgMTkyNzEsIAorICAgIDE5Mjc2LCAxOTI4MSwgMTkyODYsIDE5MjkxLCAxOTI5NiwgMTkzMDEsIDE5MzA2LCAxOTMxMSwgMTkzMTYsIDE5MzIxLCAKKyAgICAxOTMyNiwgMTkzMzEsIDE5MzM2LCAwLCAxOTM0MSwgMCwgMCwgMCwgMCwgMCwgMTkzNDYsIDAsIDAsIDE5MzUxLCAxOTM1NSwgCisgICAgMTkzNTksIDE5MzYzLCAxOTM2NywgMTkzNzEsIDE5Mzc1LCAxOTM3OSwgMTkzODMsIDE5Mzg3LCAxOTM5MSwgMTkzOTUsIAorICAgIDE5Mzk5LCAxOTQwMywgMTk0MDcsIDE5NDExLCAxOTQxNSwgMTk0MTksIDE5NDIzLCAxOTQyNywgMTk0MzEsIDE5NDM1LCAKKyAgICAxOTQzOSwgMTk0NDMsIDE5NDQ3LCAxOTQ1MSwgMTk0NTUsIDE5NDU5LCAxOTQ2MywgMTk0NjcsIDE5NDcxLCAxOTQ3NSwgCisgICAgMTk0NzksIDE5NDgzLCAxOTQ4NywgMTk0OTEsIDE5NDk1LCAxOTQ5OSwgMTk1MDMsIDE5NTA3LCAxOTUxMSwgMTk1MTUsIAorICAgIDE5NTIxLCAxOTUyNSwgMTk1MzAsIDE5NTM1LCAxOTUzOSwgMTk1NDQsIDE5NTQ5LCAxOTU1MywgMTk1NTcsIDE5NTYxLCAKKyAgICAxOTU2NSwgMTk1NjksIDE5NTczLCAxOTU3NywgMTk1ODEsIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgCisgICAgMTk2MDUsIDE5NjA5LCAxOTYxMywgMTk2MTcsIDE5NjIxLCAxOTYyNSwgMTk2MjksIDE5NjMzLCAxOTYzNywgMTk2NDEsIAorICAgIDE5NjQ1LCAxOTY0OSwgMTk2NTMsIDE5NjU3LCAxOTY2MSwgMTk2NjUsIDE5NjY5LCAxOTY3MywgMTk2NzcsIDE5NjgxLCAKKyAgICAxOTY4NSwgMTk2ODksIDE5NjkzLCAxOTY5NywgMTk3MDEsIDE5NzA1LCAxOTcwOSwgMTk3MTMsIDE5NzE3LCAxOTcyMSwgCisgICAgMTk3MjUsIDE5NzI5LCAxOTczMywgMTk3MzcsIDE5NzQxLCAxOTc0NSwgMTk3NDksIDE5NzUzLCAxOTc1NywgMTk3NjEsIAorICAgIDE5NzY1LCAxOTc2OSwgMTk3NzMsIDE5Nzc3LCAxOTc4MSwgMTk3ODUsIDE5Nzg5LCAxOTc5MywgMTk3OTcsIDE5ODAxLCAKKyAgICAxOTgwNSwgMTk4MDksIDE5ODEzLCAxOTgxNywgMTk4MjEsIDE5ODI1LCAxOTgyOSwgMTk4MzMsIDE5ODM3LCAxOTg0MSwgCisgICAgMTk4NDUsIDE5ODQ5LCAxOTg1MywgMTk4NTcsIDE5ODYxLCAxOTg2NSwgMTk4NjksIDE5ODczLCAxOTg3NywgMTk4ODEsIAorICAgIDE5ODg1LCAxOTg4OSwgMTk4OTMsIDE5ODk3LCAxOTkwMSwgMTk5MDUsIDE5OTA5LCAxOTkxMywgMTk5MTcsIDE5OTIxLCAKKyAgICAxOTkyNSwgMTk5MjksIDE5OTMzLCAxOTkzNywgMTk5NDAsIDE5OTQ0LCAxOTk0NywgMTk5NTEsIDE5OTU1LCAxOTk1OCwgCisgICAgMTk5NjIsIDE5OTY2LCAxOTk2OSwgMTk5NzMsIDE5OTc3LCAxOTk4MSwgMTk5ODUsIDE5OTg4LCAxOTk5MiwgMTk5OTYsIAorICAgIDIwMDAwLCAyMDAwNCwgMjAwMDgsIDIwMDEyLCAyMDAxNSwgMjAwMTksIDIwMDIzLCAyMDAyNywgMjAwMzEsIDIwMDM1LCAKKyAgICAyMDAzOSwgMjAwNDMsIDIwMDQ3LCAyMDA1MSwgMjAwNTUsIDIwMDU5LCAyMDA2MywgMjAwNjcsIDIwMDcxLCAyMDA3NSwgCisgICAgMjAwNzksIDIwMDgzLCAyMDA4NywgMjAwOTEsIDIwMDk1LCAyMDA5OSwgMjAxMDMsIDIwMTA3LCAyMDExMSwgMjAxMTUsIAorICAgIDIwMTE5LCAyMDEyMywgMjAxMjcsIDIwMTMxLCAyMDEzNSwgMjAxMzksIDIwMTQzLCAyMDE0NywgMjAxNTEsIDIwMTU1LCAKKyAgICAyMDE1OSwgMjAxNjMsIDIwMTY3LCAyMDE3MSwgMjAxNzUsIDIwMTc5LCAyMDE4MywgMjAxODcsIDIwMTkxLCAyMDE5NSwgCisgICAgMjAxOTksIDIwMjAzLCAyMDIwNywgMjAyMTEsIDIwMjE1LCAyMDIxOSwgMjAyMjMsIDIwMjI3LCAyMDIzMSwgMjAyMzUsIAorICAgIDIwMjM5LCAyMDI0MywgMjAyNDcsIDIwMjUxLCAyMDI1NSwgMjAyNTksIDIwMjYzLCAyMDI2NywgMjAyNzEsIDIwMjc1LCAKKyAgICAyMDI3OSwgMjAyODMsIDIwMjg3LCAyMDI5MSwgMjAyOTUsIDIwMjk5LCAyMDMwMywgMjAzMDcsIDIwMzExLCAyMDMxNSwgCisgICAgMjAzMTksIDIwMzIzLCAyMDMyNywgMjAzMzEsIDIwMzM1LCAyMDMzOSwgMjAzNDMsIDIwMzQ3LCAyMDM1MSwgMjAzNTUsIAorICAgIDIwMzU5LCAyMDM2MywgMjAzNjcsIDIwMzcxLCAyMDM3NSwgMjAzNzksIDIwMzgzLCAyMDM4NywgMjAzOTEsIDIwMzk1LCAKKyAgICAyMDM5OSwgMjA0MDMsIDIwNDA3LCAyMDQxMSwgMjA0MTUsIDIwNDE5LCAyMDQyMywgMjA0MjcsIDIwNDMxLCAyMDQzNSwgCisgICAgMjA0MzksIDIwNDQzLCAyMDQ0NywgMjA0NTEsIDIwNDU1LCAyMDQ1OSwgMjA0NjMsIDIwNDY3LCAyMDQ3MSwgMjA0NzUsIAorICAgIDIwNDc5LCAyMDQ4MywgMjA0ODcsIDIwNDkxLCAyMDQ5NSwgMjA0OTksIDIwNTAzLCAyMDUwNywgMjA1MTEsIDIwNTE1LCAKKyAgICAyMDUxOSwgMjA1MjMsIDIwNTI3LCAyMDUzMSwgMjA1MzUsIDIwNTM5LCAyMDU0MywgMjA1NDcsIDIwNTUxLCAyMDU1NSwgCisgICAgMjA1NTksIDIwNTYzLCAyMDU2NywgMjA1NzAsIDIwNTc0LCAyMDU3OCwgMjA1ODIsIDIwNTg2LCAyMDU5MCwgMjA1OTQsIAorICAgIDIwNTk4LCAyMDYwMiwgMjA2MDYsIDIwNjEwLCAyMDYxNCwgMjA2MTgsIDIwNjIyLCAyMDYyNiwgMjA2MzAsIDIwNjM0LCAKKyAgICAyMDYzOCwgMjA2NDIsIDIwNjQ2LCAyMDY1MCwgMjA2NTQsIDIwNjU4LCAyMDY2MiwgMjA2NjUsIDIwNjY5LCAyMDY3MywgCisgICAgMjA2NzcsIDIwNjgxLCAyMDY4NSwgMjA2ODksIDIwNjkzLCAyMDY5NywgMjA3MDEsIDIwNzA1LCAyMDcwOSwgMjA3MTMsIAorICAgIDIwNzE3LCAyMDcyMSwgMjA3MjUsIDIwNzI4LCAyMDczMiwgMjA3MzYsIDIwNzQwLCAyMDc0NCwgMjA3NDgsIDIwNzUyLCAKKyAgICAyMDc1NiwgMjA3NTksIDIwNzYzLCAyMDc2NywgMjA3NzEsIDIwNzc1LCAyMDc3OSwgMjA3ODMsIDIwNzg3LCAyMDc5MSwgCisgICAgMjA3OTUsIDIwNzk5LCAyMDgwMywgMjA4MDcsIDIwODExLCAyMDgxNSwgMjA4MTksIDIwODIzLCAyMDgyNywgMjA4MzEsIAorICAgIDIwODM1LCAyMDgzOSwgMjA4NDMsIDIwODQ3LCAyMDg1MSwgMCwgMjA4NTUsIDIwODU5LCAyMDg2MywgMjA4NjcsIDAsIDAsIAorICAgIDIwODcxLCAyMDg3NSwgMjA4NzksIDIwODgzLCAyMDg4NywgMjA4OTEsIDIwODk1LCAwLCAyMDg5OSwgMCwgMjA5MDMsIAorICAgIDIwOTA3LCAyMDkxMSwgMjA5MTUsIDAsIDAsIDIwOTE5LCAyMDkyMywgMjA5MjcsIDIwOTMxLCAyMDkzNSwgMjA5MzksIAorICAgIDIwOTQzLCAyMDk0NywgMjA5NTEsIDIwOTU1LCAyMDk1OSwgMjA5NjMsIDIwOTY3LCAyMDk3MSwgMjA5NzUsIDIwOTc5LCAKKyAgICAyMDk4MywgMjA5ODcsIDIwOTkxLCAyMDk5NSwgMjA5OTksIDIxMDAzLCAyMTAwNywgMjEwMTAsIDIxMDE0LCAyMTAxOCwgCisgICAgMjEwMjIsIDIxMDI2LCAyMTAzMCwgMjEwMzQsIDIxMDM4LCAyMTA0MiwgMjEwNDYsIDIxMDUwLCAyMTA1NCwgMjEwNTgsIAorICAgIDIxMDYyLCAyMTA2NiwgMjEwNzAsIDIxMDc0LCAyMTA3OCwgMCwgMjEwODIsIDIxMDg2LCAyMTA5MCwgMjEwOTQsIDAsIDAsIAorICAgIDIxMDk4LCAyMTEwMSwgMjExMDUsIDIxMTA5LCAyMTExMywgMjExMTcsIDIxMTIxLCAyMTEyNSwgMjExMjksIDIxMTMzLCAKKyAgICAyMTEzNywgMjExNDEsIDIxMTQ1LCAyMTE0OSwgMjExNTMsIDIxMTU3LCAyMTE2MSwgMjExNjYsIDIxMTcxLCAyMTE3NiwgCisgICAgMjExODIsIDIxMTg4LCAyMTE5MywgMjExOTgsIDIxMjA0LCAyMTIwNywgMjEyMTEsIDIxMjE1LCAyMTIxOSwgMjEyMjMsIAorICAgIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDAsIDIxMjM5LCAyMTI0MywgMjEyNDcsIDIxMjUxLCAwLCAwLCAyMTI1NSwgMjEyNTksIAorICAgIDIxMjYzLCAyMTI2NywgMjEyNzEsIDIxMjc1LCAyMTI3OSwgMCwgMjEyODMsIDAsIDIxMjg3LCAyMTI5MSwgMjEyOTUsIAorICAgIDIxMjk5LCAwLCAwLCAyMTMwMywgMjEzMDcsIDIxMzExLCAyMTMxNSwgMjEzMTksIDIxMzIzLCAyMTMyNywgMjEzMzEsIAorICAgIDIxMzM1LCAyMTM0MCwgMjEzNDUsIDIxMzUwLCAyMTM1NiwgMjEzNjIsIDIxMzY3LCAwLCAyMTM3MiwgMjEzNzYsIDIxMzgwLCAKKyAgICAyMTM4NCwgMjEzODgsIDIxMzkyLCAyMTM5NiwgMjE0MDAsIDIxNDA0LCAyMTQwOCwgMjE0MTIsIDIxNDE2LCAyMTQyMCwgCisgICAgMjE0MjQsIDIxNDI4LCAyMTQzMiwgMjE0MzYsIDIxNDM5LCAyMTQ0MywgMjE0NDcsIDIxNDUxLCAyMTQ1NSwgMjE0NTksIAorICAgIDIxNDYzLCAyMTQ2NywgMjE0NzEsIDIxNDc1LCAyMTQ3OSwgMjE0ODMsIDIxNDg3LCAyMTQ5MSwgMjE0OTUsIDIxNDk5LCAKKyAgICAyMTUwMywgMjE1MDcsIDIxNTExLCAyMTUxNSwgMjE1MTksIDIxNTIzLCAyMTUyNywgMjE1MzEsIDIxNTM1LCAyMTUzOSwgCisgICAgMjE1NDMsIDIxNTQ3LCAyMTU1MSwgMjE1NTUsIDIxNTU5LCAyMTU2MywgMjE1NjcsIDIxNTcxLCAyMTU3NSwgMjE1NzksIAorICAgIDIxNTgzLCAyMTU4NywgMjE1OTEsIDIxNTk1LCAwLCAyMTU5OSwgMjE2MDMsIDIxNjA3LCAyMTYxMSwgMCwgMCwgMjE2MTUsIAorICAgIDIxNjE5LCAyMTYyMywgMjE2MjcsIDIxNjMxLCAyMTYzNSwgMjE2MzksIDIxNjQzLCAyMTY0NywgMjE2NTEsIDIxNjU1LCAKKyAgICAyMTY1OSwgMjE2NjMsIDIxNjY3LCAyMTY3MSwgMjE2NzUsIDIxNjc5LCAyMTY4MywgMjE2ODcsIDIxNjkxLCAyMTY5NSwgCisgICAgMjE2OTksIDIxNzAzLCAyMTcwNywgMjE3MTEsIDIxNzE1LCAyMTcxOSwgMjE3MjMsIDIxNzI3LCAyMTczMSwgMjE3MzUsIAorICAgIDIxNzM5LCAyMTc0MywgMjE3NDcsIDIxNzUxLCAyMTc1NSwgMjE3NTksIDIxNzYzLCAyMTc2NywgMjE3NzEsIDIxNzc1LCAKKyAgICAyMTc3OSwgMjE3ODMsIDIxNzg3LCAyMTc5MSwgMjE3OTUsIDIxNzk5LCAyMTgwMywgMjE4MDcsIDIxODExLCAyMTgxNSwgCisgICAgMjE4MTksIDIxODIzLCAyMTgyNywgMjE4MzEsIDIxODM1LCAyMTgzOSwgMjE4NDIsIDIxODQ2LCAyMTg1MCwgMjE4NTQsIAorICAgIDIxODU4LCAyMTg2MiwgMjE4NjYsIDIxODcwLCAyMTg3NCwgMjE4NzgsIDAsIDAsIDIxODgyLCAyMTg5MSwgMjE4OTcsIAorICAgIDIxOTAyLCAyMTkwNiwgMjE5MDksIDIxOTE0LCAyMTkxNywgMjE5MjAsIDIxOTIzLCAyMTkyOCwgMjE5MzIsIDIxOTM3LCAKKyAgICAyMTk0MCwgMjE5NDMsIDIxOTQ2LCAyMTk0OSwgMjE5NTIsIDIxOTU1LCAyMTk1OCwgMjE5NjEsIDIxOTY0LCAyMTk2OCwgCisgICAgMjE5NzIsIDIxOTc2LCAyMTk4MCwgMjE5ODQsIDIxOTg4LCAyMTk5MiwgMjE5OTYsIDIyMDAwLCAyMjAwNCwgMCwgMCwgMCwgCisgICAgMjIwMTAsIDIyMDE2LCAyMjAyMCwgMjIwMjQsIDIyMDI4LCAyMjAzNCwgMjIwMzgsIDIyMDQyLCAyMjA0NiwgMjIwNTIsIAorICAgIDIyMDU2LCAyMjA2MCwgMjIwNjQsIDIyMDcwLCAyMjA3NCwgMjIwNzgsIDIyMDgyLCAyMjA4OCwgMjIwOTQsIDIyMTAwLCAKKyAgICAyMjEwOCwgMjIxMTQsIDIyMTIwLCAyMjEyNiwgMjIxMzIsIDIyMTM4LCAwLCAwLCAwLCAwLCAwLCAwLCAyMjE0NCwgMjIxNDcsIAorICAgIDIyMTUwLCAyMjE1MywgMjIxNTYsIDIyMTU5LCAyMjE2MywgMjIxNjcsIDIyMTcwLCAyMjE3NCwgMjIxNzgsIDIyMTgyLCAKKyAgICAyMjE4NiwgMjIxOTAsIDIyMTkzLCAyMjE5NywgMjIyMDEsIDIyMjA1LCAyMjIwOSwgMjIyMTMsIDIyMjE3LCAyMjIyMSwgCisgICAgMjIyMjUsIDIyMjI5LCAyMjIzMywgMjIyMzcsIDIyMjQwLCAyMjI0NCwgMjIyNDgsIDIyMjUyLCAyMjI1NiwgMjIyNTksIAorICAgIDIyMjYzLCAyMjI2NywgMjIyNzEsIDIyMjc1LCAyMjI3OSwgMjIyODMsIDIyMjg3LCAyMjI5MSwgMjIyOTUsIDIyMjk5LCAKKyAgICAyMjMwMywgMjIzMDcsIDIyMzExLCAyMjMxNCwgMjIzMTgsIDIyMzIyLCAyMjMyNiwgMjIzMzAsIDIyMzM0LCAyMjMzOCwgCisgICAgMjIzNDIsIDIyMzQ2LCAyMjM1MCwgMjIzNTQsIDIyMzU4LCAyMjM2MiwgMjIzNjYsIDIyMzcwLCAyMjM3NCwgMjIzNzgsIAorICAgIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk0LCAyMjM5OCwgMjI0MDIsIDIyNDA2LCAyMjQxMCwgMjI0MTQsIDIyNDE4LCAKKyAgICAyMjQyMiwgMjI0MjYsIDIyNDMwLCAyMjQzNCwgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDUzLCAyMjQ1NywgCisgICAgMjI0NjEsIDIyNDY1LCAyMjQ2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjI0NzMsIDIyNDc3LCAKKyAgICAyMjQ4MCwgMjI0ODQsIDIyNDg3LCAyMjQ5MSwgMjI0OTQsIDIyNDk4LCAyMjUwNCwgMjI1MDksIDIyNTEzLCAyMjUxNiwgCisgICAgMjI1MjAsIDIyNTI0LCAyMjUyOSwgMjI1MzMsIDIyNTM4LCAyMjU0MiwgMjI1NDcsIDIyNTUxLCAyMjU1NiwgMjI1NjAsIAorICAgIDIyNTY1LCAyMjU3MSwgMjI1NzUsIDIyNTgwLCAyMjU4NCwgMjI1ODksIDIyNTk1LCAyMjU5OSwgMjI2MDUsIDIyNjExLCAKKyAgICAyMjYxNSwgMjI2MjAsIDIyNjI4LCAyMjYzNiwgMjI2NDMsIDIyNjQ4LCAyMjY1MywgMjI2NjIsIDIyNjY5LCAyMjY3NiwgCisgICAgMjI2ODEsIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgMjI3MTksIAorICAgIDIyNzIzLCAyMjcyNywgMjI3MzMsIDIyNzM4LCAyMjc0MywgMjI3NDYsIDIyNzUwLCAyMjc1NCwgMjI3NTksIDIyNzYzLCAKKyAgICAyMjc2OCwgMjI3NzIsIDIyNzc3LCAyMjc4MSwgMjI3ODYsIDIyNzkwLCAyMjc5NSwgMjI3OTksIDIyODA0LCAyMjgwOCwgCisgICAgMjI4MTMsIDIyODE5LCAyMjgyMywgMjI4MjgsIDIyODMzLCAyMjgzNywgMjI4NDEsIDIyODQ1LCAyMjg0OSwgMjI4NTIsIAorICAgIDIyODU2LCAyMjg2MiwgMjI4NjcsIDIyODcyLCAyMjg3NiwgMjI4ODAsIDIyODg0LCAyMjg4OSwgMjI4OTMsIDIyODk4LCAKKyAgICAyMjkwMiwgMjI5MDcsIDIyOTEwLCAyMjkxNCwgMjI5MTgsIDIyOTIzLCAyMjkyNywgMjI5MzIsIDIyOTM2LCAyMjk0MSwgCisgICAgMjI5NDcsIDIyOTUxLCAyMjk1NSwgMjI5NTksIDIyOTYzLCAyMjk2NywgMjI5NzEsIDIyOTc1LCAyMjk3OSwgMjI5ODMsIAorICAgIDIyOTg3LCAyMjk5MSwgMjI5OTcsIDIzMDAwLCAyMzAwNCwgMjMwMDgsIDIzMDEzLCAyMzAxNywgMjMwMjIsIDIzMDI2LCAKKyAgICAyMzAzMSwgMjMwMzUsIDIzMDQwLCAyMzA0NCwgMjMwNDksIDIzMDUzLCAyMzA1OCwgMjMwNjIsIDIzMDY3LCAyMzA3MywgCisgICAgMjMwNzcsIDIzMDgxLCAyMzA4NywgMjMwOTMsIDIzMDk5LCAyMzEwNSwgMjMxMDksIDIzMTEzLCAyMzExNywgMjMxMjEsIAorICAgIDIzMTI1LCAyMzEyOSwgMjMxMzUsIDIzMTM5LCAyMzE0MywgMjMxNDcsIDIzMTUyLCAyMzE1NiwgMjMxNjEsIDIzMTY1LCAKKyAgICAyMzE3MCwgMjMxNzQsIDIzMTc5LCAyMzE4MywgMjMxODgsIDIzMTkyLCAyMzE5NywgMjMyMDEsIDIzMjA2LCAyMzIxMiwgCisgICAgMjMyMTYsIDIzMjIyLCAyMzIyNiwgMjMyMzAsIDIzMjM0LCAyMzIzOCwgMjMyNDIsIDIzMjQ2LCAyMzI1MiwgMjMyNTUsIAorICAgIDIzMjU5LCAyMzI2MywgMjMyNjgsIDIzMjcyLCAyMzI3NywgMjMyODEsIDIzMjg2LCAyMzI5MCwgMjMyOTUsIDIzMjk5LCAKKyAgICAyMzMwNCwgMjMzMDgsIDIzMzEzLCAyMzMxNywgMjMzMjIsIDIzMzI4LCAyMzMzMSwgMjMzMzUsIDIzMzM5LCAyMzM0NCwgCisgICAgMjMzNDksIDIzMzUzLCAyMzM1NywgMjMzNjEsIDIzMzY1LCAyMzM2OSwgMjMzNzMsIDIzMzc5LCAyMzM4MiwgMjMzODYsIAorICAgIDIzMzkwLCAyMzM5NSwgMjMzOTksIDIzNDA0LCAyMzQwOCwgMjM0MTMsIDIzNDE5LCAyMzQyMywgMjM0MjgsIDIzNDMyLCAKKyAgICAyMzQzNiwgMjM0NDAsIDIzNDQ0LCAyMzQ0OCwgMjM0NTIsIDIzNDU2LCAyMzQ2MiwgMjM0NjYsIDIzNDcwLCAyMzQ3NCwgCisgICAgMjM0NzksIDIzNDgzLCAyMzQ4OCwgMjM0OTIsIDIzNDk3LCAyMzUwMSwgMjM1MDYsIDIzNTEwLCAyMzUxNSwgMjM1MTksIAorICAgIDIzNTI0LCAyMzUyOCwgMjM1MzMsIDIzNTM2LCAyMzU0MCwgMjM1NDQsIDIzNTQ4LCAyMzU1MiwgMjM1NTYsIDIzNTYwLCAKKyAgICAyMzU2NCwgMjM1NjgsIDIzNTc0LCAyMzU3NywgMjM1ODEsIDIzNTg1LCAyMzU5MCwgMjM1OTQsIDIzNTk5LCAyMzYwMywgCisgICAgMjM2MDgsIDIzNjEyLCAyMzYxNywgMjM2MjEsIDIzNjI2LCAyMzYzMCwgMjM2MzUsIDIzNjM5LCAyMzY0NCwgMjM2NTAsIAorICAgIDIzNjU0LCAyMzY2MCwgMjM2NjQsIDIzNjcwLCAyMzY3NiwgMjM2ODIsIDIzNjg4LCAyMzY5NCwgMjM3MDAsIDIzNzA2LCAKKyAgICAyMzcxMiwgMjM3MTYsIDIzNzIwLCAyMzcyNCwgMjM3MjgsIDIzNzMyLCAyMzczNiwgMjM3NDAsIDIzNzQ0LCAyMzc0OSwgCisgICAgMjM3NTMsIDIzNzU4LCAyMzc2MiwgMjM3NjcsIDIzNzcxLCAyMzc3NiwgMjM3ODAsIDIzNzg1LCAyMzc4OSwgMjM3OTQsIAorICAgIDIzNzk4LCAyMzgwMywgMjM4MDcsIDIzODExLCAyMzgxNSwgMjM4MTksIDIzODIzLCAyMzgyNywgMjM4MzEsIDIzODM3LCAKKyAgICAyMzg0MCwgMjM4NDQsIDIzODQ4LCAyMzg1MywgMjM4NTcsIDIzODYyLCAyMzg2NiwgMjM4NzEsIDIzODc1LCAyMzg4MCwgCisgICAgMjM4ODQsIDIzODg5LCAyMzg5MywgMjM4OTgsIDIzOTAyLCAyMzkwNywgMjM5MTMsIDIzOTE3LCAyMzkyMywgMjM5MjgsIAorICAgIDIzOTM0LCAyMzkzOCwgMjM5NDQsIDIzOTQ5LCAyMzk1MywgMjM5NTcsIDIzOTYxLCAyMzk2NSwgMjM5NjksIDIzOTc0LCAKKyAgICAyMzk3NywgMjM5ODEsIDIzOTg2LCAyMzk5MCwgMjM5OTUsIDIzOTk4LCAyNDAwMiwgMjQwMDYsIDI0MDEwLCAyNDAxNCwgCisgICAgMjQwMTgsIDI0MDIyLCAyNDAyNiwgMjQwMzAsIDI0MDM0LCAyNDAzOCwgMjQwNDIsIDI0MDQ3LCAyNDA1MSwgMjQwNTUsIAorICAgIDI0MDYxLCAyNDA2NSwgMjQwNzEsIDI0MDc1LCAyNDA4MSwgMjQwODUsIDI0MDg5LCAyNDA5MywgMjQwOTcsIDI0MTAxLCAKKyAgICAyNDEwNiwgMjQxMTAsIDI0MTE0LCAyNDExOCwgMjQxMjIsIDI0MTI2LCAyNDEzMCwgMjQxMzQsIDI0MTM4LCAyNDE0MiwgCisgICAgMjQxNDYsIDI0MTUyLCAyNDE1OCwgMjQxNjQsIDI0MTcwLCAyNDE3NiwgMjQxODEsIDI0MTg3LCAyNDE5MywgMjQxOTksIAorICAgIDI0MjAzLCAyNDIwNywgMjQyMTEsIDI0MjE1LCAyNDIxOSwgMjQyMjMsIDI0MjI3LCAyNDIzMSwgMjQyMzUsIDI0MjM5LCAKKyAgICAyNDI0MywgMjQyNDcsIDI0MjUxLCAyNDI1NiwgMjQyNjEsIDI0MjY2LCAyNDI3MCwgMjQyNzQsIDI0Mjc4LCAyNDI4MiwgCisgICAgMjQyODYsIDI0MjkwLCAyNDI5NCwgMjQyOTgsIDI0MzAyLCAyNDMwNiwgMjQzMTIsIDI0MzE4LCAyNDMyNCwgMjQzMzAsIAorICAgIDI0MzM2LCAyNDM0MiwgMjQzNDgsIDI0MzU0LCAyNDM2MCwgMjQzNjQsIDI0MzY4LCAyNDM3MiwgMjQzNzYsIDI0MzgwLCAKKyAgICAyNDM4NCwgMjQzODgsIDI0Mzk0LCAyNDQwMCwgMjQ0MDYsIDI0NDEyLCAyNDQxOCwgMjQ0MjQsIDI0NDMwLCAyNDQzNiwgCisgICAgMjQ0NDIsIDI0NDQ3LCAyNDQ1MiwgMjQ0NTcsIDI0NDYyLCAyNDQ2OCwgMjQ0NzQsIDI0NDgwLCAyNDQ4NiwgMjQ0OTIsIAorICAgIDI0NDk4LCAyNDUwNCwgMjQ1MDksIDI0NTE1LCAyNDUyMSwgMjQ1MjcsIDI0NTMyLCAyNDUzOCwgMjQ1NDQsIDI0NTUwLCAKKyAgICAyNDU1NSwgMjQ1NjAsIDI0NTY1LCAyNDU3MCwgMjQ1NzUsIDI0NTgwLCAyNDU4NSwgMjQ1OTAsIDI0NTk1LCAyNDYwMCwgCisgICAgMjQ2MDUsIDI0NjEwLCAyNDYxNCwgMjQ2MTksIDI0NjI0LCAyNDYyOSwgMjQ2MzQsIDI0NjM5LCAyNDY0NCwgMjQ2NDksIAorICAgIDI0NjU0LCAyNDY1OSwgMjQ2NjQsIDI0NjY5LCAyNDY3NCwgMjQ2NzksIDI0Njg0LCAyNDY4OSwgMjQ2OTQsIDI0Njk5LCAKKyAgICAyNDcwNCwgMjQ3MDksIDI0NzE0LCAyNDcxOSwgMjQ3MjQsIDI0NzI5LCAyNDczNCwgMjQ3MzksIDI0NzQ0LCAyNDc0OSwgCisgICAgMjQ3NTQsIDI0NzU5LCAyNDc2MywgMjQ3NjgsIDI0NzczLCAyNDc3OCwgMjQ3ODMsIDI0Nzg4LCAyNDc5MywgMjQ3OTgsIAorICAgIDI0ODAzLCAyNDgwOCwgMjQ4MTMsIDI0ODE4LCAyNDgyMywgMjQ4MjgsIDI0ODMzLCAyNDgzOCwgMjQ4NDMsIDI0ODQ4LCAKKyAgICAyNDg1MywgMjQ4NTgsIDI0ODYzLCAyNDg2OCwgMjQ4NzMsIDI0ODc4LCAyNDg4MywgMjQ4ODgsIDI0ODkyLCAyNDg5NywgCisgICAgMjQ5MDIsIDI0OTA3LCAyNDkxMiwgMjQ5MTcsIDI0OTIxLCAyNDkyNiwgMjQ5MzEsIDI0OTM2LCAyNDk0MSwgMjQ5NDYsIAorICAgIDI0OTUwLCAyNDk1NSwgMjQ5NjEsIDI0OTY2LCAyNDk3MSwgMjQ5NzYsIDI0OTgxLCAyNDk4NywgMjQ5OTIsIDI0OTk3LCAKKyAgICAyNTAwMiwgMjUwMDcsIDI1MDEyLCAyNTAxNywgMjUwMjIsIDI1MDI3LCAyNTAzMiwgMjUwMzcsIDI1MDQyLCAyNTA0NywgCisgICAgMjUwNTIsIDI1MDU3LCAyNTA2MiwgMjUwNjcsIDI1MDcyLCAyNTA3NywgMjUwODIsIDI1MDg3LCAyNTA5MiwgMjUwOTcsIAorICAgIDI1MTAyLCAyNTEwNywgMjUxMTIsIDI1MTE3LCAyNTEyMiwgMjUxMjcsIDI1MTMyLCAyNTEzNywgMjUxNDIsIDI1MTQ3LCAKKyAgICAyNTE1MiwgMjUxNTcsIDI1MTYyLCAyNTE2NywgMjUxNzIsIDI1MTc3LCAyNTE4MiwgMjUxODcsIDI1MTkyLCAyNTE5NywgCisgICAgMjUyMDIsIDI1MjA3LCAyNTIxMywgMjUyMTgsIDI1MjIzLCAyNTIyOCwgMjUyMzMsIDI1MjM4LCAyNTI0MywgMjUyNDgsIAorICAgIDI1MjUzLCAyNTI1OCwgMjUyNjMsIDI1MjY4LCAyNTI3MiwgMjUyNzcsIDI1MjgyLCAyNTI4NywgMjUyOTIsIDI1Mjk3LCAKKyAgICAyNTMwMiwgMjUzMDcsIDI1MzEyLCAyNTMxNywgMjUzMjIsIDI1MzI3LCAyNTMzMiwgMjUzMzcsIDI1MzQyLCAyNTM0NywgCisgICAgMjUzNTIsIDI1MzU3LCAyNTM2MiwgMjUzNjcsIDI1MzcyLCAyNTM3NywgMjUzODIsIDI1Mzg3LCAyNTM5MiwgMjUzOTcsIAorICAgIDI1NDAyLCAyNTQwOCwgMjU0MTIsIDI1NDE2LCAyNTQyMCwgMjU0MjQsIDI1NDI4LCAyNTQzMiwgMjU0MzYsIDI1NDQwLCAKKyAgICAyNTQ0NiwgMjU0NTIsIDI1NDU4LCAyNTQ2NCwgMjU0NzAsIDI1NDc2LCAyNTQ4MiwgMjU0ODksIDI1NDk1LCAyNTUwMCwgCisgICAgMjU1MDUsIDI1NTEwLCAyNTUxNSwgMjU1MjAsIDI1NTI1LCAyNTUzMCwgMjU1MzUsIDI1NTQwLCAyNTU0NSwgMjU1NTAsIAorICAgIDI1NTU1LCAyNTU2MCwgMjU1NjUsIDI1NTcwLCAyNTU3NSwgMjU1ODAsIDI1NTg1LCAyNTU5MCwgMjU1OTUsIDI1NjAwLCAKKyAgICAyNTYwNSwgMjU2MTAsIDI1NjE1LCAyNTYyMCwgMjU2MjUsIDI1NjMwLCAyNTYzNSwgMCwgMCwgMCwgMjU2NDIsIDI1NjUyLCAKKyAgICAyNTY1NiwgMjU2NjMsIDI1NjY3LCAyNTY3MSwgMjU2NzUsIDI1NjgzLCAyNTY4NywgMjU2OTIsIDI1Njk3LCAyNTcwMiwgCisgICAgMjU3MDYsIDI1NzExLCAyNTcxNiwgMjU3MTksIDI1NzIzLCAyNTcyNywgMjU3MzYsIDI1NzQwLCAyNTc0NCwgMjU3NTAsIAorICAgIDI1NzU0LCAyNTc1OCwgMjU3NjYsIDI1NzcwLCAyNTc3OCwgMjU3ODQsIDI1NzkwLCAyNTc5NiwgMjU4MDIsIDI1ODEyLCAKKyAgICAyNTgxOCwgMjU4MjIsIDI1ODMxLCAyNTgzNCwgMjU4NDAsIDI1ODQ0LCAyNTg1MCwgMjU4NTUsIDI1ODYxLCAyNTg2OSwgCisgICAgMjU4NzUsIDI1ODgxLCAyNTg4OSwgMjU4OTUsIDI1ODk5LCAyNTkwMywgMjU5MTMsIDI1OTE5LCAyNTkyMywgMjU5MzMsIAorICAgIDI1OTM5LCAyNTk0MywgMjU5NDcsIDI1OTU0LCAyNTk2MSwgMjU5NjYsIDI1OTcxLCAyNTk4MCwgMjU5ODQsIDI1OTg4LCAKKyAgICAyNTk5MiwgMjYwMDAsIDI2MDA3LCAyNjAxMSwgMjYwMTUsIDI2MDE5LCAyNjAyMywgMjYwMjcsIDI2MDMxLCAyNjAzNSwgCisgICAgMjYwMzksIDI2MDQzLCAyNjA0NywgMjYwNTEsIDI2MDU2LCAyNjA2MSwgMjYwNjYsIDI2MDcwLCAyNjA3NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYwNzgsIDI2MDgyLCAyNjA4NiwgMjYwOTAsIDI2MDk0LCAKKyAgICAyNjA5OSwgMjYxMDQsIDI2MTA5LCAyNjExNCwgMjYxMTgsIDI2MTIyLCAyNjEyNywgMjYxMzEsIDAsIDI2MTM1LCAyNjE0MCwgCisgICAgMjYxNDUsIDI2MTQ5LCAyNjE1MywgMjYxNTgsIDI2MTYzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNjE2OCwgMjYxNzIsIDI2MTc2LCAyNjE4MCwgMjYxODQsIDI2MTg5LCAyNjE5NCwgMjYxOTksIDI2MjA0LCAyNjIwOCwgCisgICAgMjYyMTIsIDI2MjE3LCAyNjIyMSwgMjYyMjUsIDI2MjI5LCAyNjIzNCwgMjYyMzksIDI2MjQzLCAyNjI0NywgMjYyNTIsIAorICAgIDI2MjU3LCAyNjI2MiwgMjYyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MjczLCAyNjI3NywgMjYyODEsIAorICAgIDI2Mjg1LCAyNjI4OSwgMjYyOTQsIDI2Mjk5LCAyNjMwNCwgMjYzMDksIDI2MzEzLCAyNjMxNywgMjYzMjIsIDI2MzI2LCAKKyAgICAyNjMzMCwgMjYzMzQsIDI2MzM5LCAyNjM0NCwgMjYzNDgsIDI2MzUyLCAyNjM1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjYzNjIsIDI2MzY2LCAyNjM3MCwgMjYzNzQsIDI2Mzc4LCAyNjM4MywgMjYzODgsIDI2MzkzLCAKKyAgICAyNjM5OCwgMjY0MDIsIDI2NDA2LCAyNjQxMSwgMjY0MTUsIDAsIDI2NDE5LCAyNjQyNCwgMjY0MjksIDAsIDI2NDMzLCAKKyAgICAyNjQzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY0NDMsIDI2NDQ2LCAyNjQ1MCwgMjY0NTQsIAorICAgIDI2NDU4LCAyNjQ2MiwgMjY0NjYsIDI2NDcwLCAyNjQ3NCwgMjY0NzgsIDI2NDgyLCAyNjQ4NiwgMjY0OTAsIDI2NDk0LCAKKyAgICAyNjQ5OCwgMjY1MDIsIDI2NTA2LCAyNjUxMCwgMjY1MTMsIDI2NTE3LCAyNjUyMSwgMjY1MjUsIDI2NTI5LCAyNjUzMywgCisgICAgMjY1MzcsIDI2NTQxLCAyNjU0NSwgMjY1NDksIDI2NTUzLCAyNjU1NywgMjY1NjEsIDI2NTY1LCAyNjU2OCwgMjY1NzEsIAorICAgIDI2NTc1LCAyNjU3OSwgMjY1ODUsIDI2NTkxLCAyNjU5NywgMjY2MDMsIDI2NjA5LCAyNjYxNSwgMjY2MjEsIDI2NjI3LCAKKyAgICAyNjYzMywgMjY2MzksIDI2NjQ1LCAyNjY1MSwgMjY2NTcsIDI2NjYzLCAyNjY3MiwgMjY2ODEsIDI2Njg3LCAyNjY5MywgCisgICAgMjY2OTksIDI2NzA0LCAyNjcwOCwgMjY3MTMsIDI2NzE4LCAyNjcyMywgMjY3MjcsIDI2NzMyLCAyNjczNywgMjY3NDIsIAorICAgIDI2NzQ2LCAyNjc1MSwgMjY3NTUsIDI2NzYwLCAyNjc2NSwgMjY3NzAsIDI2Nzc1LCAyNjc3OSwgMjY3ODMsIDI2Nzg3LCAKKyAgICAyNjc5MSwgMjY3OTUsIDI2Nzk5LCAyNjgwMywgMjY4MDcsIDI2ODExLCAyNjgxNSwgMjY4MjEsIDI2ODI1LCAyNjgyOSwgCisgICAgMjY4MzMsIDI2ODM3LCAyNjg0MSwgMjY4NDksIDI2ODU1LCAyNjg1OSwgMjY4NjUsIDI2ODY5LCAyNjg3NSwgMjY4NzksIDAsIAorICAgIDAsIDI2ODgzLCAyNjg4NywgMjY4OTAsIDI2ODkzLCAyNjg5NiwgMjY4OTksIDI2OTAyLCAyNjkwNSwgMjY5MDgsIDI2OTExLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNjkxNCwgMjY5MjIsIDI2OTMwLCAyNjkzOCwgMjY5NDYsIDI2OTU0LCAyNjk2MiwgMjY5NzAsIAorICAgIDI2OTc4LCAyNjk4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5OTQsIDI2OTk3LCAyNzAwMCwgMjcwMDMsIDI3MDA4LCAyNzAxMSwgCisgICAgMjcwMTYsIDI3MDIzLCAyNzAzMSwgMjcwMzYsIDI3MDQzLCAyNzA0NiwgMjcwNTMsIDI3MDYwLCAyNzA2NywgMCwgMjcwNzEsIAorICAgIDI3MDc1LCAyNzA3OCwgMjcwODEsIDI3MDg0LCAyNzA4NywgMjcwOTAsIDI3MDkzLCAyNzA5NiwgMjcwOTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI3MTAyLCAyNzEwNSwgMjcxMDgsIDI3MTExLCAyNzExNCwgMjcxMTcsIDI3MTIxLCAyNzEyNSwgMjcxMjksIAorICAgIDI3MTMyLCAyNzEzNiwgMjcxNDAsIDI3MTQzLCAyNzE0NywgMjcxNTEsIDI3MTU0LCAyNzE1OCwgMjcxNjEsIDI3MTY1LCAKKyAgICAyNzE2OSwgMjcxNzMsIDI3MTc3LCAyNzE4MSwgMjcxODQsIDI3MTg3LCAyNzE5MSwgMjcxOTUsIDI3MTk4LCAyNzIwMiwgCisgICAgMjcyMDYsIDI3MjEwLCAyNzIxNCwgMjcyMTgsIDI3MjIyLCAyNzIyNiwgMjcyMzAsIDI3MjM3LCAyNzI0MiwgMjcyNDcsIAorICAgIDI3MjUyLCAyNzI1NywgMjcyNjMsIDI3MjY5LCAyNzI3NSwgMjcyODEsIDI3Mjg2LCAyNzI5MiwgMjcyOTgsIDI3MzAzLCAKKyAgICAyNzMwOSwgMjczMTUsIDI3MzIxLCAyNzMyNywgMjczMzMsIDI3MzM4LCAyNzM0NCwgMjczNDksIDI3MzU1LCAyNzM2MSwgCisgICAgMjczNjcsIDI3MzczLCAyNzM3OSwgMjczODQsIDI3Mzg5LCAyNzM5NSwgMjc0MDEsIDI3NDA2LCAyNzQxMiwgMjc0MTcsIAorICAgIDI3NDIzLCAyNzQyOCwgMjc0MzMsIDI3NDM5LCAyNzQ0NSwgMjc0NTEsIDI3NDU3LCAyNzQ2MywgMjc0NjksIDI3NDc1LCAKKyAgICAyNzQ4MSwgMjc0ODcsIDI3NDkzLCAyNzQ5OSwgMjc1MDUsIDI3NTEwLCAyNzUxNSwgMjc1MjAsIDI3NTI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNzUzMiwgMjc1NDEsIDI3NTUwLCAyNzU1OCwgMjc1NjYsIDI3NTc2LCAyNzU4NCwgMjc1OTMsIAorICAgIDI3NjAwLCAyNzYwNywgMjc2MTQsIDI3NjIyLCAyNzYzMCwgMjc2MzgsIDI3NjQ2LCAyNzY1NCwgMjc2NjIsIDI3NjcwLCAKKyAgICAyNzY3OCwgMjc2ODUsIDI3NjkzLCAyNzcwMSwgMjc3MDksIDI3NzE3LCAyNzcyNSwgMjc3MzUsIDI3NzQ1LCAyNzc1NSwgCisgICAgMjc3NjUsIDI3Nzc1LCAyNzc4NSwgMjc3OTUsIDI3ODA1LCAyNzgxNSwgMjc4MjUsIDI3ODM1LCAyNzg0NSwgMjc4NTUsIAorICAgIDI3ODY1LCAyNzg3MywgMjc4ODEsIDI3ODkxLCAyNzg5OSwgMCwgMCwgMCwgMCwgMCwgMjc5MDksIDI3OTEzLCAyNzkxNywgCisgICAgMjc5MjEsIDI3OTI1LCAyNzkyOSwgMjc5MzMsIDI3OTM3LCAyNzk0MSwgMjc5NDUsIDI3OTQ5LCAyNzk1MywgMjc5NTcsIAorICAgIDI3OTYxLCAyNzk2NSwgMjc5NjksIDI3OTczLCAyNzk3NywgMjc5ODEsIDI3OTg1LCAyNzk4OSwgMjc5OTMsIDI3OTk3LCAKKyAgICAyODAwMSwgMjgwMDcsIDI4MDExLCAyODAxNywgMjgwMjEsIDI4MDI3LCAyODAzMSwgMjgwMzcsIDI4MDQxLCAyODA0NSwgCisgICAgMjgwNDksIDI4MDUzLCAyODA1NywgMjgwNjEsIDI4MDY3LCAyODA3MywgMjgwNzksIDI4MDg1LCAyODA5MCwgMjgwOTYsIAorICAgIDI4MTAyLCAyODEwOCwgMjgxMTQsIDI4MTIwLCAyODEyNiwgMjgxMzMsIDI4MTM5LCAyODE0NCwgMjgxNDksIDI4MTUzLCAKKyAgICAyODE1NywgMjgxNjEsIDI4MTY1LCAyODE2OSwgMjgxNzMsIDI4MTc3LCAyODE4MywgMjgxODksIDI4MTk1LCAyODIwMCwgCisgICAgMjgyMDcsIDI4MjEyLCAyODIxNywgMjgyMjMsIDI4MjI4LCAyODIzNSwgMjgyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI4MjQ5LCAyODI1NSwgMjgyNTksIDI4MjY0LCAyODI2OSwgMjgyNzQsIDI4Mjc5LCAyODI4NCwgMjgyODksIAorICAgIDI4Mjk0LCAyODI5OSwgMjgzMDQsIDI4MzA5LCAyODMxNCwgMjgzMTksIDI4MzI0LCAyODMyOCwgMjgzMzIsIDI4MzM3LCAKKyAgICAyODM0MiwgMjgzNDcsIDI4MzUxLCAyODM1NSwgMjgzNTksIDI4MzY0LCAyODM2OSwgMjgzNzQsIDI4Mzc5LCAyODM4MywgMCwgCisgICAgMCwgMCwgMjgzODcsIDI4MzkyLCAyODM5NywgMjg0MDIsIDI4NDA4LCAyODQxNCwgMjg0MjAsIDI4NDI2LCAyODQzMSwgCisgICAgMjg0MzYsIDI4NDQyLCAyODQ0OCwgMCwgMCwgMCwgMCwgMjg0NTUsIDI4NDYwLCAyODQ2NiwgMjg0NzIsIDI4NDc4LCAKKyAgICAyODQ4MywgMjg0ODgsIDI4NDkzLCAyODQ5OCwgMjg1MDQsIDI4NTA5LCAyODUxNCwgMCwgMCwgMCwgMCwgMjg1MTksIDAsIDAsIAorICAgIDAsIDI4NTI0LCAyODUyOSwgMjg1MzQsIDI4NTM5LCAyODU0MywgMjg1NDcsIDI4NTUxLCAyODU1NSwgMjg1NTksIDI4NTYzLCAKKyAgICAyODU2NywgMjg1NzEsIDI4NTc1LCAyODU4MCwgMjg1ODYsIDI4NTkyLCAyODU5OCwgMjg2MDMsIDI4NjA4LCAyODYxNCwgCisgICAgMjg2MjAsIDI4NjI2LCAyODYzMSwgMjg2MzcsIDI4NjQyLCAyODY0OCwgMjg2NTQsIDI4NjU5LCAyODY2NSwgMjg2NzEsIAorICAgIDI4Njc3LCAyODY4MiwgMjg2ODcsIDI4NjkyLCAyODY5OCwgMjg3MDQsIDI4NzA5LCAyODcxNSwgMjg3MjAsIDI4NzI2LCAKKyAgICAyODczMSwgMjg3MzcsIDAsIDAsIDI4NzQzLCAyODc0OSwgMjg3NTUsIDI4NzYxLCAyODc2NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMjg3NzMsIDI4NzgwLCAyODc4NywgMjg3OTMsIDI4ODAwLCAyODgwNywgMjg4MTMsIDI4ODIwLCAKKyAgICAyODgyNywgMjg4MzQsIDI4ODQwLCAyODg0NiwgMjg4NTMsIDI4ODU5LCAyODg2NSwgMjg4NzIsIDI4ODc5LCAyODg4NSwgCisgICAgMjg4OTIsIDI4ODk5LCAyODkwNSwgMjg5MTEsIDI4OTE4LCAyODkyNCwgMjg5MzAsIDI4OTM3LCAyODk0MywgMjg5NTAsIAorICAgIDI4OTU3LCAyODk2NCwgMjg5NzEsIDI4OTc4LCAyODk4NSwgMjg5OTEsIDI4OTk4LCAyOTAwNSwgMjkwMTEsIDI5MDE4LCAKKyAgICAyOTAyNSwgMjkwMzIsIDI5MDM5LCAyOTA0NiwgMjkwNTMsIDI5MDYwLCAwLCAwLCAwLCAwLCAyOTA2NywgMjkwNzUsIAorICAgIDI5MDgyLCAyOTA4OSwgMjkwOTUsIDI5MTAyLCAyOTEwOCwgMjkxMTUsIDI5MTIxLCAyOTEyOCwgMjkxMzUsIDI5MTQyLCAKKyAgICAyOTE0OSwgMjkxNTYsIDI5MTYzLCAyOTE3MCwgMjkxNzcsIDI5MTg0LCAyOTE5MSwgMjkxOTgsIDI5MjA1LCAyOTIxMSwgCisgICAgMjkyMTgsIDI5MjI1LCAyOTIzMiwgMjkyMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDI5MjQ0LCAyOTI1MCwgMjkyNTUsIDI5MjYwLCAKKyAgICAyOTI2NSwgMjkyNzAsIDI5Mjc1LCAyOTI4MCwgMjkyODUsIDI5MjkwLCAyOTI5NSwgMCwgMCwgMCwgMjkzMDEsIDI5MzA3LCAKKyAgICAyOTMxMywgMjkzMTcsIDI5MzIzLCAyOTMyOSwgMjkzMzUsIDI5MzQxLCAyOTM0NywgMjkzNTMsIDI5MzU5LCAyOTM2NSwgCisgICAgMjkzNzEsIDI5Mzc3LCAyOTM4MywgMjkzODksIDI5Mzk1LCAyOTQwMSwgMjk0MDcsIDI5NDExLCAyOTQxNywgMjk0MjMsIAorICAgIDI5NDI5LCAyOTQzNSwgMjk0NDEsIDI5NDQ3LCAyOTQ1MywgMjk0NTksIDI5NDY1LCAyOTQ3MSwgMjk0NzcsIDI5NDgzLCAKKyAgICAyOTQ4OSwgMjk0OTUsIDI5NTAxLCAyOTUwNSwgMjk1MTAsIDI5NTE1LCAyOTUyMCwgMjk1MjQsIDI5NTI5LCAyOTUzMywgCisgICAgMjk1MzgsIDI5NTQzLCAyOTU0OCwgMjk1NTIsIDI5NTU3LCAyOTU2MiwgMjk1NjcsIDI5NTcyLCAyOTU3NywgMjk1ODEsIAorICAgIDI5NTg1LCAyOTU5MCwgMjk1OTUsIDI5NTk5LCAyOTYwMywgMjk2MDcsIDI5NjEyLCAyOTYxNywgMjk2MjIsIDI5NjI3LCAwLCAKKyAgICAwLCAyOTYzMywgMjk2MzcsIDI5NjQ0LCAyOTY0OSwgMjk2NTUsIDI5NjYxLCAyOTY2NiwgMjk2NzIsIDI5Njc4LCAyOTY4MywgCisgICAgMjk2ODksIDI5Njk1LCAyOTcwMSwgMjk3MDYsIDI5NzEyLCAyOTcxNywgMjk3MjIsIDI5NzI4LCAyOTczMywgMjk3MzksIAorICAgIDI5NzQ0LCAyOTc1MCwgMjk3NTYsIDI5NzYyLCAyOTc2OCwgMjk3NzIsIDI5Nzc3LCAyOTc4MiwgMjk3ODgsIDI5Nzk0LCAKKyAgICAyOTc5OSwgMjk4MDUsIDI5ODExLCAyOTgxNSwgMjk4MjAsIDI5ODI1LCAyOTgyOSwgMjk4MzQsIDI5ODM5LCAyOTg0NCwgCisgICAgMjk4NDksIDI5ODU1LCAyOTg2MSwgMjk4NjYsIDI5ODcxLCAyOTg3NiwgMjk4ODAsIDI5ODg1LCAyOTg4OSwgMjk4OTQsIAorICAgIDI5ODk4LCAyOTkwMywgMjk5MDgsIDI5OTEzLCAyOTkxOCwgMjk5MjQsIDI5OTMwLCAyOTkzNywgMjk5NDcsIDI5OTU2LCAKKyAgICAyOTk2MywgMjk5NjksIDI5OTc5LCAyOTk4NCwgMjk5OTAsIDAsIDI5OTk1LCAzMDAwMCwgMzAwMDUsIDMwMDEzLCAzMDAxOSwgCisgICAgMzAwMjcsIDMwMDMyLCAzMDAzOCwgMzAwNDQsIDMwMDUwLCAzMDA1NSwgMzAwNjEsIDMwMDY2LCAzMDA3MywgMzAwNzksIAorICAgIDMwMDg0LCAzMDA5MCwgMzAwOTYsIDMwMTAyLCAzMDEwOSwgMzAxMTYsIDMwMTIzLCAzMDEyOCwgMzAxMzMsIDMwMTQwLCAKKyAgICAzMDE0NywgMzAxNTQsIDMwMTYxLCAzMDE2OCwgMCwgMCwgMzAxNzUsIDMwMTgyLCAzMDE4OSwgMzAxOTUsIDMwMjAxLCAKKyAgICAzMDIwNywgMzAyMTMsIDMwMjE5LCAzMDIyNSwgMzAyMzEsIDMwMjM3LCAwLCAwLCAwLCAwLCAwLCAwLCAzMDI0MywgMzAyNDksIAorICAgIDMwMjU0LCAzMDI1OSwgMzAyNjQsIDMwMjY5LCAzMDI3NCwgMzAyNzksIDMwMjg0LCAzMDI4OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzAyOTQsIDMwMjk5LCAzMDMwNCwgMzAzMDksIDMwMzE0LCAzMDMxOSwgMzAzMjQsIDMwMzMzLCAzMDM0MCwgMzAzNDUsIAorICAgIDMwMzUwLCAzMDM1NSwgMzAzNjAsIDMwMzY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTU1OSwgNzE1NjYsIDcxNTc0LCA3MTU4MiwgCi0gICAgNzE1ODksIDcxNTk3LCA3MTYwNCwgNzE2MTAsIDcxNjE2LCA3MTYyMywgNzE2MjksIDcxNjM1LCA3MTY0MSwgNzE2NDgsIAotICAgIDcxNjU1LCA3MTY2MiwgNzE2NjksIDcxNjc2LCA3MTY4MywgNzE2OTAsIDcxNjk3LCA3MTcwNCwgNzE3MTEsIDcxNzE4LCAKLSAgICA3MTcyNSwgNzE3MzIsIDcxNzM5LCA3MTc0NSwgNzE3NTIsIDcxNzU5LCA3MTc2NiwgNzE3NzMsIDcxNzgwLCA3MTc4NywgCi0gICAgNzE3OTQsIDcxODAxLCA3MTgwOCwgNzE4MTUsIDcxODIyLCA3MTgyOSwgNzE4MzYsIDcxODQzLCA3MTg1MCwgNzE4NTcsIAotICAgIDcxODY0LCA3MTg3MSwgNzE4NzksIDcxODg3LCA3MTg5NSwgNzE5MDMsIDAsIDAsIDAsIDAsIDcxOTExLCA3MTkyMCwgCi0gICAgNzE5MjksIDcxOTM4LCA3MTk0NywgNzE5NTYsIDcxOTY1LCA3MTk3MiwgNzE5NzksIDcxOTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3MTk5MywgNzE5OTcsIDcyMDAyLCA3MjAwNywgNzIwMTIsIDcyMDE3LCA3MjAyMiwgNzIwMjcsIDcyMDMyLCA3MjAzNywgCi0gICAgNzIwNDIsIDcyMDQ3LCA3MjA1MSwgNzIwNTUsIDcyMDYwLCA3MjA2NSwgNzIwNjksIDcyMDc0LCA3MjA3OSwgNzIwODQsIAotICAgIDcyMDg5LCA3MjA5NCwgNzIwOTksIDcyMTA0LCA3MjEwOCwgNzIxMTIsIDcyMTE3LCA3MjEyMiwgNzIxMjcsIDcyMTMxLCAKLSAgICA3MjEzNSwgNzIxMzksIDcyMTQzLCA3MjE0NywgNzIxNTEsIDcyMTU2LCA3MjE2MSwgNzIxNjYsIDcyMTcxLCA3MjE3NiwgCi0gICAgNzIxODMsIDcyMTg5LCA3MjE5NCwgNzIxOTksIDcyMjA0LCA3MjIwOSwgNzIyMTUsIDcyMjIyLCA3MjIyOCwgNzIyMzUsIAotICAgIDcyMjQxLCA3MjI0NywgNzIyNTIsIDcyMjU5LCA3MjI2NSwgNzIyNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyMjc2LCAKLSAgICA3MjI4MCwgNzIyODQsIDcyMjg3LCA3MjI5MSwgNzIyOTQsIDcyMjk4LCA3MjMwMSwgNzIzMDUsIDcyMzA5LCA3MjMxNCwgCi0gICAgNzIzMTgsIDcyMzIzLCA3MjMyNiwgNzIzMzAsIDcyMzM0LCA3MjMzNywgNzIzNDEsIDcyMzQ1LCA3MjM0OCwgNzIzNTIsIAotICAgIDcyMzU2LCA3MjM2MCwgNzIzNjQsIDcyMzY4LCA3MjM3MiwgNzIzNzYsIDcyMzgwLCA3MjM4NCwgNzIzODgsIDcyMzkyLCAKLSAgICA3MjM5NiwgNzI0MDAsIDcyNDA0LCA3MjQwOCwgNzI0MTIsIDcyNDE2LCA3MjQyMCwgNzI0MjMsIDcyNDI2LCA3MjQzMCwgCi0gICAgNzI0MzQsIDcyNDM4LCA3MjQ0MSwgNzI0NDQsIDcyNDQ3LCA3MjQ1MSwgNzI0NTUsIDcyNDU5LCA3MjQ2MywgNzI0NjcsIAotICAgIDcyNDcwLCA3MjQ3NCwgNzI0ODAsIDcyNDg1LCA3MjQ4OSwgNzI0OTQsIDcyNDk4LCA3MjUwMywgNzI1MDgsIDcyNTE0LCAKLSAgICA3MjUxOSwgNzI1MjUsIDcyNTI5LCA3MjUzNCwgNzI1MzksIDcyNTQzLCA3MjU0OCwgNzI1NTMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDcyNTU3LCA3MjU2MCwgNzI1NjQsIDcyNTY4LCA3MjU3MSwgNzI1NzQsIDcyNTc3LCA3MjU4MCwgNzI1ODMsIAotICAgIDcyNTg2LCA3MjU4OSwgNzI1OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNTk1LCA3MjYwMCwgNzI2MDQsIDcyNjA4LCA3MjYxMiwgCi0gICAgNzI2MTYsIDcyNjIwLCA3MjYyNCwgNzI2MjgsIDcyNjMyLCA3MjYzNiwgNzI2NDAsIDcyNjQ0LCA3MjY0OCwgNzI2NTIsIAotICAgIDcyNjU2LCA3MjY2MCwgNzI2NjUsIDcyNjcwLCA3MjY3NiwgNzI2ODIsIDcyNjg5LCA3MjY5NCwgNzI2OTksIDcyNzA1LCAKLSAgICA3MjcwOSwgNzI3MTQsIDcyNzE3LCAwLCAwLCAwLCAwLCA3MjcyMCwgNzI3MjcsIDcyNzMzLCA3MjczOSwgNzI3NDUsIAotICAgIDcyNzUxLCA3Mjc1NywgNzI3NjMsIDcyNzY5LCA3Mjc3NSwgNzI3ODEsIDcyNzg3LCA3Mjc5NCwgNzI4MDEsIDcyODA4LCAKLSAgICA3MjgxNSwgNzI4MjIsIDcyODI5LCA3MjgzNiwgNzI4NDMsIDcyODUwLCA3Mjg1NiwgNzI4NjIsIDcyODY5LCA3Mjg3NSwgCi0gICAgNzI4ODIsIDcyODg5LCA3Mjg5NSwgNzI5MDEsIDcyOTA4LCA3MjkxNSwgNzI5MjIsIDcyOTI4LCA3MjkzNSwgNzI5NDIsIAotICAgIDcyOTQ4LCA3Mjk1NSwgNzI5NjEsIDcyOTY4LCA3Mjk3NSwgNzI5ODEsIDcyOTg3LCA3Mjk5NCwgNzMwMDAsIDczMDA3LCAKLSAgICA3MzAxNCwgNzMwMjMsIDczMDMwLCA3MzAzNywgNzMwNDEsIDczMDQ2LCA3MzA1MSwgNzMwNTYsIDczMDYxLCA3MzA2NSwgCi0gICAgNzMwNjksIDczMDc0LCA3MzA3OCwgNzMwODMsIDczMDg4LCA3MzA5MywgNzMwOTgsIDczMTAyLCA3MzEwNywgNzMxMTEsIAotICAgIDczMTE2LCA3MzEyMCwgNzMxMjUsIDczMTMwLCA3MzEzNSwgNzMxNDAsIDczMTQ0LCA3MzE0OSwgNzMxNTQsIDczMTU5LCAKLSAgICA3MzE2NSwgNzMxNzAsIDczMTc2LCA3MzE4MiwgNzMxODgsIDczMTk1LCA3MzIwMSwgNzMyMDcsIDczMjE0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzIxOCwgNzMyMjMsIDczMjI3LCA3MzIzMSwgNzMyMzUsIDczMjM5LCA3MzI0MywgCi0gICAgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIAotICAgIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCA3MzMwMywgNzMzMDcsIDczMzExLCA3MzMxNSwgNzMzMTksIDczMzIzLCAKLSAgICA3MzMyNywgNzMzMzEsIDczMzM1LCAwLCAwLCAwLCA3MzMzOSwgNzMzNDMsIDczMzQ3LCA3MzM1MSwgNzMzNTUsIDczMzU4LCAKLSAgICA3MzM2NCwgNzMzNjcsIDczMzcxLCA3MzM3NCwgNzMzODAsIDczMzg2LCA3MzM5NCwgNzMzOTcsIDczNDAxLCA3MzQwNCwgCi0gICAgNzM0MDcsIDczNDEzLCA3MzQxOSwgNzM0MjMsIDczNDI5LCA3MzQzMywgNzM0MzcsIDczNDQzLCA3MzQ0NywgNzM0NTMsIAotICAgIDczNDU5LCA3MzQ2MywgNzM0NjcsIDczNDczLCA3MzQ3NywgNzM0ODMsIDczNDg5LCA3MzQ5MywgNzM0OTksIDczNTAzLCAKLSAgICA3MzUwOSwgNzM1MTIsIDczNTE1LCA3MzUyMSwgNzM1MjUsIDczNTMxLCA3MzUzNCwgNzM1MzcsIDczNTQwLCA3MzU0NiwgCi0gICAgNzM1NTAsIDczNTU0LCA3MzU2MCwgNzM1NjYsIDczNTcwLCA3MzU3MywgNzM1NzksIDczNTg0LCA3MzU4OSwgNzM1OTQsIAotICAgIDczNjAxLCA3MzYwNiwgNzM2MTMsIDczNjE4LCA3MzYyNSwgNzM2MzAsIDczNjM2LCA3MzY0MiwgNzM2NDgsIDczNjUxLCAKLSAgICA3MzY1NSwgNzM2NTksIDczNjY0LCA3MzY2OSwgNzM2NzQsIDczNjc5LCA3MzY4NCwgNzM2ODksIDczNjk0LCA3MzY5OSwgCi0gICAgNzM3MDYsIDczNzExLCAwLCA3MzcxOCwgNzM3MjEsIDczNzI1LCA3MzcyOCwgNzM3MzEsIDczNzM0LCA3MzczNywgNzM3NDAsIAotICAgIDczNzQzLCA3Mzc0NiwgNzM3NDksIDAsIDAsIDAsIDAsIDczNzUyLCA3Mzc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAzNzAsIDMwMzc2LCAKKyAgICAzMDM4MiwgMzAzODYsIDMwMzkwLCAzMDM5NCwgMzAzOTgsIDMwNDA0LCAzMDQwOCwgMzA0MTQsIDMwNDE4LCAzMDQyNCwgCisgICAgMzA0MzAsIDMwNDM4LCAzMDQ0NCwgMzA0NTIsIDMwNDU2LCAzMDQ2MCwgMzA0NjQsIDMwNDcwLCAzMDQ3MywgMzA0NzksIAorICAgIDMwNDgzLCAzMDQ4OSwgMzA0OTMsIDMwNDk3LCAzMDUwMywgMzA1MDcsIDMwNTEzLCAzMDUxNywgMzA1MjMsIDMwNTMxLCAKKyAgICAzMDUzOSwgMzA1NDcsIDMwNTUzLCAzMDU1NywgMzA1NjMsIDMwNTY3LCAzMDU3MywgMzA1NzYsIDMwNTc5LCAzMDU4NSwgCisgICAgMzA1ODksIDMwNTk1LCAzMDU5OCwgMzA2MDEsIDMwNjA0LCAzMDYwOCwgMzA2MTIsIDMwNjE4LCAzMDYyNCwgMzA2MjcsIAorICAgIDMwNjMwLCAzMDYzNCwgMzA2MzksIDMwNjQ0LCAzMDY1MSwgMzA2NTYsIDMwNjYzLCAzMDY3MCwgMzA2NzksIDMwNjg2LCAKKyAgICAzMDY5NSwgMzA3MDAsIDMwNzA3LCAzMDcxNCwgMzA3MjMsIDMwNzI4LCAzMDczNSwgMzA3NDAsIDMwNzQ2LCAzMDc1MiwgCisgICAgMzA3NTgsIDMwNzY0LCAzMDc3MCwgMzA3NzYsIDAsIDAsIDAsIDAsIDMwNzgyLCAzMDc4NiwgMzA3ODksIDMwNzkyLCAKKyAgICAzMDc5NSwgMzA3OTgsIDMwODAxLCAzMDgwNCwgMzA4MDcsIDMwODEwLCAzMDgxMywgMzA4MTYsIDMwODE5LCAzMDgyMiwgCisgICAgMzA4MjcsIDMwODMyLCAzMDgzNywgMzA4NDAsIDMwODQ1LCAzMDg1MCwgMzA4NTUsIDMwODYwLCAzMDg2NywgMzA4NzIsIAorICAgIDMwODc3LCAzMDg4MiwgMzA4ODcsIDMwODk0LCAzMDkwMCwgMzA5MDYsIDMwOTEyLCAzMDkxOCwgMzA5MjQsIDMwOTMzLCAKKyAgICAzMDk0MiwgMzA5NDgsIDMwOTU0LCAzMDk2MiwgMzA5NzAsIDMwOTc5LCAzMDk4OCwgMzA5OTYsIDMxMDA0LCAzMTAxMywgCisgICAgMzEwMjIsIDAsIDAsIDAsIDMxMDMwLCAzMTAzNCwgMzEwMzgsIDMxMDQyLCAzMTA0NSwgMzEwNDgsIDMxMDUxLCAzMTA1NSwgCisgICAgMzEwNTgsIDMxMDYxLCAzMTA2NSwgMzEwNjgsIDMxMDcyLCAzMTA3NiwgMzEwODAsIDMxMDg0LCAzMTA4OCwgMzEwOTIsIAorICAgIDMxMDk2LCAzMTEwMCwgMzExMDQsIDMxMTA3LCAzMTExMCwgMzExMTQsIDMxMTE4LCAzMTEyMiwgMzExMjUsIDMxMTI4LCAKKyAgICAzMTEzMSwgMzExMzUsIDMxMTM5LCAzMTE0MiwgMzExNDYsIDMxMTQ5LCAzMTE1NCwgMzExNTksIDMxMTY0LCAzMTE2OSwgCisgICAgMzExNzQsIDMxMTc5LCAzMTE4NCwgMzExODksIDMxMTk0LCAzMTE5OCwgMzEyMDIsIDMxMjA4LCAzMTIxNSwgMzEyMTksIAorICAgIDMxMjIzLCAzMTIyNywgMzEyMzAsIDMxMjMzLCAzMTIzNiwgMzEyMzksIDMxMjQyLCAzMTI0NSwgMzEyNDgsIDMxMjUxLCAKKyAgICAzMTI1NCwgMzEyNTcsIDMxMjYxLCAzMTI2NSwgMzEyNjksIDMxMjc0LCAzMTI3OCwgMzEyODIsIDMxMjg4LCAzMTI5MiwgCisgICAgMzEyOTgsIDMxMzA0LCAzMTMwOSwgMzEzMTYsIDMxMzIwLCAzMTMyNiwgMzEzMzAsIDMxMzM2LCAzMTM0MSwgMzEzNDgsIAorICAgIDMxMzU1LCAzMTM2MCwgMzEzNjcsIDMxMzcyLCAzMTM3NywgMzEzODEsIDMxMzg3LCAzMTM5MSwgMzEzOTcsIDMxNDA0LCAKKyAgICAzMTQxMSwgMzE0MTUsIDMxNDIxLCAzMTQyNywgMzE0MzEsIDMxNDM3LCAzMTQ0MiwgMzE0NDcsIDMxNDU0LCAzMTQ1OSwgCisgICAgMzE0NjQsIDMxNDY5LCAzMTQ3NCwgMzE0NzgsIDMxNDgyLCAzMTQ4NywgMzE0OTIsIDMxNDk5LCAzMTUwNSwgMzE1MTAsIAorICAgIDMxNTE3LCAzMTUyMiwgMzE1MjksIDMxNTM0LCAzMTU0MywgMzE1NDksIDMxNTU1LCAzMTU1OSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMzE1NjMsIDMxNTcyLCAzMTU3OSwgMzE1ODYsIDMxNTkzLCAzMTU5NiwgMzE2MDAsIDMxNjA0LCAzMTYwOCwgCisgICAgMzE2MTIsIDMxNjE2LCAzMTYyMCwgMzE2MjQsIDMxNjI4LCAzMTYzMiwgMzE2MzYsIDMxNjQwLCAzMTY0NCwgMzE2NDcsIAorICAgIDMxNjUwLCAzMTY1NCwgMzE2NTgsIDMxNjYyLCAzMTY2NiwgMzE2NzAsIDMxNjc0LCAzMTY3NywgMzE2ODEsIDMxNjg1LCAKKyAgICAzMTY4OSwgMzE2OTMsIDMxNjk2LCAzMTY5OSwgMzE3MDMsIDMxNzA2LCAzMTcxMCwgMzE3MTQsIDMxNzE3LCAzMTcyMSwgCisgICAgMzE3MjUsIDMxNzI4LCAzMTczMywgMzE3MzgsIDMxNzQzLCAzMTc0NywgMzE3NTEsIDMxNzU2LCAzMTc2MCwgMzE3NjUsIAorICAgIDMxNzY5LCAzMTc3NCwgMzE3NzgsIDMxNzgyLCAzMTc4NywgMzE3OTIsIDMxNzk2LCAzMTgwMSwgMzE4MDYsIDMxODExLCAKKyAgICAzMTgxNSwgMCwgMCwgMCwgMzE4MTksIDMxODI0LCAzMTgzMywgMzE4MzgsIDMxODQ1LCAzMTg1MCwgMzE4NTQsIDMxODU3LCAKKyAgICAzMTg2MCwgMzE4NjMsIDMxODY2LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMCwgMCwgMCwgMzE4ODEsIDMxODg1LCAKKyAgICAzMTg4OSwgMzE4OTMsIDMxOTAwLCAzMTkwNiwgMzE5MTIsIDMxOTE4LCAzMTkyNCwgMzE5MzAsIDMxOTM2LCAzMTk0MiwgCisgICAgMzE5NDgsIDMxOTU0LCAzMTk2MSwgMzE5NjgsIDMxOTc1LCAzMTk4MiwgMzE5ODksIDMxOTk2LCAzMjAwMywgMzIwMTAsIAorICAgIDMyMDE3LCAzMjAyNCwgMzIwMzEsIDMyMDM4LCAzMjA0NSwgMzIwNTIsIDMyMDU5LCAzMjA2NiwgMzIwNzMsIDMyMDgwLCAKKyAgICAzMjA4NywgMzIwOTQsIDMyMTAxLCAzMjEwOCwgMzIxMTUsIDMyMTIyLCAzMjEyOSwgMzIxMzYsIDMyMTQzLCAzMjE1MCwgCisgICAgMzIxNTcsIDMyMTY0LCAzMjE3MiwgMzIxODAsIDMyMTg4LCAzMjE5NCwgMzIyMDAsIDMyMjA2LCAzMjIxNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyMjMsIDMyMjMwLCAzMjIzNywgMzIyNDQsIDMyMjUxLCAKKyAgICAzMjI2MCwgMzIyNjksIDMyMjc4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjI4NywgMzIyOTIsIDMyMjk3LCAzMjMwMiwgCisgICAgMzIzMDcsIDMyMzE2LCAzMjMyNywgMzIzMzYsIDMyMzQ3LCAzMjM1MywgMzIzNjYsIDMyMzcyLCAzMjM3OSwgMzIzODYsIAorICAgIDMyMzkxLCAzMjM5NywgMzI0MDMsIDMyNDE0LCAzMjQyMywgMzI0MzAsIDMyNDM3LCAzMjQ0NiwgMzI0NTMsIDMyNDYyLCAKKyAgICAzMjQ3MiwgMzI0ODIsIDMyNDg5LCAzMjQ5NiwgMzI1MDMsIDMyNTEzLCAzMjUxOCwgMzI1MjYsIDMyNTMyLCAzMjU0MCwgCisgICAgMzI1NDksIDMyNTU0LCAzMjU2MSwgMzI1NjcsIDMyNTcyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjU3NywgCisgICAgMzI1ODIsIDMyNTg4LCAzMjU5NSwgMzI2MDMsIDMyNjA5LCAzMjYxNSwgMzI2MjEsIDMyNjI2LCAzMjYzMywgMzI2MzksIAorICAgIDMyNjQ1LCAzMjY1MSwgMzI2NTksIDMyNjY0LCAzMjY3MiwgMzI2NzcsIDMyNjgzLCAzMjY4OSwgMzI2OTYsIDMyNzA0LCAKKyAgICAzMjcxMSwgMzI3MTcsIDMyNzI0LCAzMjczMSwgMzI3MzcsIDMyNzQ0LCAzMjc1MSwgMzI3NTcsIDMyNzYyLCAzMjc2OCwgCisgICAgMzI3NzYsIDMyNzg0LCAzMjc5MCwgMzI3OTYsIDMyODAyLCAzMjgwOCwgMzI4MTYsIDMyODIwLCAzMjgyNiwgMzI4MzIsIAorICAgIDMyODM4LCAzMjg0NCwgMzI4NTAsIDMyODU2LCAzMjg2MCwgMzI4NjUsIDMyODcwLCAzMjg3NywgMzI4ODIsIDMyODg2LCAKKyAgICAzMjg5MiwgMzI4OTcsIDMyOTAyLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMCwgMzI5MjQsIDMyOTI5LCAzMjkzNiwgCisgICAgMzI5NDAsIDMyOTQ1LCAzMjk1MCwgMzI5NTQsIDMyOTU5LCAzMjk2MywgMzI5NjgsIDMyOTcyLCAzMjk3OCwgMzI5ODMsIAorICAgIDMyOTkwLCAzMjk5NSwgMzMwMDAsIDMzMDA0LCAzMzAwOSwgMzMwMTQsIDMzMDIxLCAzMzAyNiwgMzMwMzIsIDMzMDM3LCAKKyAgICAzMzA0MSwgMzMwNDYsIDMzMDUwLCAzMzA1NSwgMzMwNjIsIDMzMDY5LCAzMzA3NCwgMzMwNzksIDMzMDgzLCAzMzA4OSwgCisgICAgMzMwOTUsIDMzMTAwLCAzMzEwNSwgMzMxMTAsIDMzMTE2LCAzMzEyMSwgMzMxMjcsIDMzMTMyLCAzMzEzOCwgMzMxNDQsIAorICAgIDMzMTUwLCAzMzE1NywgMzMxNjQsIDMzMTcxLCAzMzE3OCwgMzMxODUsIDMzMTkyLCAzMzE5NywgMzMyMDUsIDMzMjE0LCAKKyAgICAzMzIyMywgMzMyMzIsIDMzMjQxLCAzMzI1MCwgMzMyNTksIDMzMjcxLCAzMzI4MCwgMzMyODksIDMzMjk4LCAzMzMwNSwgCisgICAgMzMzMTAsIDMzMzE3LCAzMzMyNSwgMzMzMzMsIDMzMzQwLCAzMzM0NywgMzMzNTQsIDMzMzYxLCAzMzM2OSwgMzMzNzgsIAorICAgIDMzMzg3LCAzMzM5NiwgMzM0MDUsIDMzNDE0LCAzMzQyMywgMzM0MzIsIDMzNDQxLCAzMzQ1MCwgMzM0NTksIDMzNDY4LCAKKyAgICAzMzQ3NywgMzM0ODYsIDMzNDk1LCAzMzUwMywgMzM1MTIsIDMzNTIzLCAzMzUzMSwgMzM1NDAsIDMzNTUxLCAzMzU2MCwgCisgICAgMzM1NjksIDMzNTc4LCAzMzU4NywgMzM1OTUsIDMzNjA0LCAzMzYxMSwgMzM2MTYsIDMzNjI0LCAzMzYyOSwgMzM2MzYsIAorICAgIDMzNjQxLCAzMzY1MCwgMzM2NTYsIDMzNjYzLCAzMzY3MCwgMzM2NzUsIDMzNjgwLCAzMzY4OCwgMzM2OTYsIDMzNzA1LCAKKyAgICAzMzcxNCwgMzM3MTksIDMzNzI2LCAzMzczNywgMzM3NDUsIDMzNzU0LCAzMzc2MCwgMzM3NjYsIDMzNzcxLCAzMzc3OCwgCisgICAgMzM3ODMsIDMzNzkyLCAzMzc5NywgMzM4MDIsIDMzODA3LCAzMzgxNCwgMzM4MjEsIDMzODI2LCAzMzgzNSwgMzM4NDMsIAorICAgIDMzODQ4LCAzMzg1MywgMzM4NjAsIDMzODY3LCAzMzg3MSwgMzM4NzUsIDMzODc4LCAzMzg4MSwgMzM4ODQsIDMzODg3LCAKKyAgICAzMzg5MCwgMzM4OTMsIDMzOTAwLCAzMzkwMywgMzM5MDYsIDMzOTExLCAzMzkxNSwgMzM5MTksIDMzOTIzLCAzMzkyNywgCisgICAgMzM5MzEsIDMzOTQwLCAzMzk0NiwgMzM5NTIsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgwLCAzMzk4NiwgMzM5OTMsIAorICAgIDMzOTk5LCAzNDAwNCwgMzQwMTAsIDM0MDE2LCAzNDAyMiwgMzQwMjksIDM0MDM1LCAzNDA0MywgMzQwNDksIDM0MDU2LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA2MiwgMzQwNjksIAorICAgIDM0MDc2LCAzNDA4MSwgMzQwOTAsIDM0MDk4LCAzNDEwNiwgMzQxMTMsIDM0MTIwLCAzNDEyNywgMzQxMzQsIDM0MTQyLCAKKyAgICAzNDE1MCwgMzQxNjAsIDM0MTcwLCAzNDE3OCwgMzQxODYsIDM0MTk0LCAzNDIwMiwgMzQyMTEsIDM0MjIwLCAzNDIyOCwgCisgICAgMzQyMzYsIDM0MjQ1LCAzNDI1NCwgMzQyNjQsIDM0Mjc0LCAzNDI4MywgMzQyOTIsIDM0MzAwLCAzNDMwOCwgMzQzMTYsIAorICAgIDM0MzI0LCAzNDMzNCwgMzQzNDQsIDM0MzUyLCAzNDM2MCwgMzQzNjgsIDM0Mzc2LCAzNDM4NCwgMzQzOTIsIDM0NDAwLCAKKyAgICAzNDQwOCwgMzQ0MTYsIDM0NDI0LCAzNDQzMiwgMzQ0NDAsIDM0NDQ5LCAzNDQ1OCwgMzQ0NjcsIDM0NDc2LCAzNDQ4NiwgCisgICAgMzQ0OTYsIDM0NTAzLCAzNDUxMCwgMzQ1MTgsIDM0NTI2LCAzNDUzNSwgMzQ1NDQsIDM0NTUyLCAzNDU2MCwgMzQ1NzIsIAorICAgIDM0NTg0LCAzNDU5MywgMzQ2MDIsIDM0NjExLCAzNDYyMCwgMzQ2MjcsIDM0NjM0LCAzNDY0MiwgMzQ2NTAsIDM0NjU4LCAKKyAgICAzNDY2NiwgMzQ2NzQsIDM0NjgyLCAzNDY5MCwgMzQ2OTgsIDM0NzA3LCAzNDcxNiwgMzQ3MjUsIDM0NzM0LCAzNDc0MywgCisgICAgMzQ3NTIsIDM0NzYyLCAzNDc3MiwgMzQ3ODIsIDM0NzkyLCAzNDgwMSwgMzQ4MTAsIDM0ODE3LCAzNDgyNCwgMzQ4MzIsIAorICAgIDM0ODQwLCAzNDg0OCwgMzQ4NTYsIDM0ODY0LCAzNDg3MiwgMzQ4ODQsIDM0ODk2LCAzNDkwNSwgMzQ5MTQsIDM0OTIyLCAKKyAgICAzNDkzMCwgMzQ5MzgsIDM0OTQ2LCAzNDk1NywgMzQ5NjgsIDM0OTc5LCAzNDk5MCwgMzUwMDIsIDM1MDE0LCAzNTAyMiwgCisgICAgMzUwMzAsIDM1MDM4LCAzNTA0NiwgMzUwNTUsIDM1MDY0LCAzNTA3MywgMzUwODIsIDM1MDkwLCAzNTA5OCwgMzUxMDYsIAorICAgIDM1MTE0LCAzNTEyMiwgMzUxMzAsIDM1MTM5LCAzNTE0OCwgMzUxNTgsIDM1MTY4LCAzNTE3NSwgMzUxODIsIDM1MTkwLCAKKyAgICAzNTE5OCwgMzUyMDYsIDM1MjE0LCAzNTIyMSwgMzUyMjgsIDM1MjM2LCAzNTI0NCwgMzUyNTIsIDM1MjYwLCAzNTI2OCwgCisgICAgMzUyNzYsIDM1Mjg0LCAzNTI5MiwgMzUzMDAsIDM1MzA4LCAzNTMxNiwgMzUzMjQsIDM1MzMyLCAzNTM0MCwgMzUzNDgsIAorICAgIDM1MzU2LCAzNTM2NSwgMzUzNzQsIDM1MzgzLCAzNTM5MSwgMzU0MDAsIDM1NDA5LCAzNTQxOCwgMzU0MjcsIDM1NDM3LCAKKyAgICAzNTQ0NiwgMzU0NTMsIDM1NDU4LCAzNTQ2NSwgMzU0NzIsIDM1NDgwLCAzNTQ4OCwgMzU0OTcsIDM1NTA2LCAzNTUxNiwgCisgICAgMzU1MjYsIDM1NTM3LCAzNTU0OCwgMzU1NTcsIDM1NTY2LCAzNTU3NiwgMzU1ODYsIDM1NTk1LCAzNTYwNCwgMzU2MTQsIAorICAgIDM1NjI0LCAzNTYzNSwgMzU2NDYsIDM1NjU1LCAzNTY2NCwgMzU2NzQsIDM1Njg0LCAzNTY5MSwgMzU2OTgsIDM1NzA2LCAKKyAgICAzNTcxNCwgMzU3MjAsIDM1NzI2LCAzNTczNSwgMzU3NDQsIDM1NzU0LCAzNTc2NCwgMzU3NzUsIDM1Nzg2LCAzNTc5NSwgCisgICAgMzU4MDQsIDM1ODE0LCAzNTgyNCwgMzU4MzMsIDM1ODQyLCAzNTg1MCwgMzU4NTgsIDM1ODY1LCAzNTg3MiwgMzU4ODAsIAorICAgIDM1ODg4LCAzNTg5NywgMzU5MDYsIDM1OTE2LCAzNTkyNiwgMzU5MzcsIDM1OTQ4LCAzNTk1NywgMzU5NjYsIDM1OTc2LCAKKyAgICAzNTk4NiwgMzU5OTUsIDM2MDA0LCAzNjAxNCwgMzYwMjQsIDM2MDM1LCAzNjA0NiwgMzYwNTUsIDM2MDY0LCAzNjA3NCwgCisgICAgMzYwODQsIDM2MDkxLCAzNjA5OCwgMzYxMDYsIDM2MTE0LCAzNjEyMywgMzYxMzIsIDM2MTQyLCAzNjE1MiwgMzYxNjMsIAorICAgIDM2MTc0LCAzNjE4MywgMzYxOTIsIDM2MjAyLCAzNjIxMiwgMzYyMjAsIDM2MjI4LCAzNjIzNiwgMzYyNDQsIDM2MjUzLCAKKyAgICAzNjI2MiwgMzYyNjksIDM2Mjc2LCAzNjI4MywgMzYyOTAsIDM2Mjk3LCAzNjMwNCwgMzYzMTIsIDM2MzIwLCAzNjMyOCwgCisgICAgMzYzMzYsIDM2MzQ3LCAzNjM1OCwgMzYzNjksIDM2MzgwLCAzNjM5MSwgMzY0MDIsIDM2NDEwLCAzNjQxOCwgMzY0MjksIAorICAgIDM2NDQwLCAzNjQ1MSwgMzY0NjIsIDM2NDczLCAzNjQ4NCwgMzY0OTIsIDM2NTAwLCAzNjUxMSwgMzY1MjIsIDM2NTMzLCAwLCAKKyAgICAwLCAzNjU0NCwgMzY1NTIsIDM2NTYwLCAzNjU3MSwgMzY1ODIsIDM2NTkzLCAwLCAwLCAzNjYwNCwgMzY2MTIsIDM2NjIwLCAKKyAgICAzNjYzMSwgMzY2NDIsIDM2NjUzLCAzNjY2NCwgMzY2NzUsIDM2Njg2LCAzNjY5NCwgMzY3MDIsIDM2NzEzLCAzNjcyNCwgCisgICAgMzY3MzUsIDM2NzQ2LCAzNjc1NywgMzY3NjgsIDM2Nzc2LCAzNjc4NCwgMzY3OTUsIDM2ODA2LCAzNjgxNywgMzY4MjgsIAorICAgIDM2ODM5LCAzNjg1MCwgMzY4NTgsIDM2ODY2LCAzNjg3NywgMzY4ODgsIDM2ODk5LCAzNjkxMCwgMzY5MjEsIDM2OTMyLCAKKyAgICAzNjk0MCwgMzY5NDgsIDM2OTU5LCAzNjk3MCwgMzY5ODEsIDAsIDAsIDM2OTkyLCAzNzAwMCwgMzcwMDgsIDM3MDE5LCAKKyAgICAzNzAzMCwgMzcwNDEsIDAsIDAsIDM3MDUyLCAzNzA2MCwgMzcwNjgsIDM3MDc5LCAzNzA5MCwgMzcxMDEsIDM3MTEyLCAKKyAgICAzNzEyMywgMCwgMzcxMzQsIDAsIDM3MTQyLCAwLCAzNzE1MywgMCwgMzcxNjQsIDM3MTc1LCAzNzE4MywgMzcxOTEsIAorICAgIDM3MjAyLCAzNzIxMywgMzcyMjQsIDM3MjM1LCAzNzI0NiwgMzcyNTcsIDM3MjY1LCAzNzI3MywgMzcyODQsIDM3Mjk1LCAKKyAgICAzNzMwNiwgMzczMTcsIDM3MzI4LCAzNzMzOSwgMzczNDcsIDM3MzU1LCAzNzM2MywgMzczNzEsIDM3Mzc5LCAzNzM4NywgCisgICAgMzczOTUsIDM3NDAzLCAzNzQxMSwgMzc0MTksIDM3NDI3LCAzNzQzNSwgMzc0NDMsIDAsIDAsIDM3NDUxLCAzNzQ2MiwgCisgICAgMzc0NzMsIDM3NDg3LCAzNzUwMSwgMzc1MTUsIDM3NTI5LCAzNzU0MywgMzc1NTcsIDM3NTY4LCAzNzU3OSwgMzc1OTMsIAorICAgIDM3NjA3LCAzNzYyMSwgMzc2MzUsIDM3NjQ5LCAzNzY2MywgMzc2NzQsIDM3Njg1LCAzNzY5OSwgMzc3MTMsIDM3NzI3LCAKKyAgICAzNzc0MSwgMzc3NTUsIDM3NzY5LCAzNzc4MCwgMzc3OTEsIDM3ODA1LCAzNzgxOSwgMzc4MzMsIDM3ODQ3LCAzNzg2MSwgCisgICAgMzc4NzUsIDM3ODg2LCAzNzg5NywgMzc5MTEsIDM3OTI1LCAzNzkzOSwgMzc5NTMsIDM3OTY3LCAzNzk4MSwgMzc5OTIsIAorICAgIDM4MDAzLCAzODAxNywgMzgwMzEsIDM4MDQ1LCAzODA1OSwgMzgwNzMsIDM4MDg3LCAzODA5NSwgMzgxMDMsIDM4MTE0LCAKKyAgICAzODEyMiwgMCwgMzgxMzMsIDM4MTQxLCAzODE1MiwgMzgxNjAsIDM4MTY4LCAzODE3NiwgMzgxODQsIDM4MTkyLCAzODE5NSwgCisgICAgMzgxOTgsIDM4MjAxLCAzODIwNCwgMzgyMTAsIDM4MjIxLCAzODIyOSwgMCwgMzgyNDAsIDM4MjQ4LCAzODI1OSwgMzgyNjcsIAorICAgIDM4Mjc1LCAzODI4MywgMzgyOTEsIDM4Mjk5LCAzODMwNSwgMzgzMTEsIDM4MzE3LCAzODMyNSwgMzgzMzMsIDM4MzQ0LCAwLCAKKyAgICAwLCAzODM1NSwgMzgzNjMsIDM4Mzc0LCAzODM4MiwgMzgzOTAsIDM4Mzk4LCAwLCAzODQwNiwgMzg0MTIsIDM4NDE4LCAKKyAgICAzODQyNCwgMzg0MzIsIDM4NDQwLCAzODQ1MSwgMzg0NjIsIDM4NDcwLCAzODQ3OCwgMzg0ODYsIDM4NDk3LCAzODUwNSwgCisgICAgMzg1MTMsIDM4NTIxLCAzODUyOSwgMzg1MzcsIDM4NTQzLCAzODU0OSwgMCwgMCwgMzg1NTIsIDM4NTYzLCAzODU3MSwgMCwgCisgICAgMzg1ODIsIDM4NTkwLCAzODYwMSwgMzg2MDksIDM4NjE3LCAzODYyNSwgMzg2MzMsIDM4NjQxLCAzODY0NCwgMCwgMzg2NDcsIAorICAgIDM4NjUxLCAzODY1NSwgMzg2NTksIDM4NjYzLCAzODY2NywgMzg2NzEsIDM4Njc1LCAzODY3OSwgMzg2ODMsIDM4Njg3LCAKKyAgICAzODY5MSwgMzg2OTcsIDM4NzAzLCAzODcwOSwgMzg3MTIsIDM4NzE1LCAzODcxNywgMzg3MjEsIDM4NzI1LCAzODcyOSwgCisgICAgMzg3MzMsIDM4NzM1LCAzODczOSwgMzg3NDMsIDM4NzQ5LCAzODc1NSwgMzg3NjIsIDM4NzY5LCAzODc3NCwgMzg3NzksIAorICAgIDM4Nzg1LCAzODc5MSwgMzg3OTMsIDM4Nzk2LCAzODc5OCwgMzg4MDIsIDM4ODA2LCAzODgxMCwgMzg4MTMsIDM4ODE3LCAKKyAgICAzODgyMSwgMzg4MjUsIDM4ODI5LCAzODgzMywgMzg4MzksIDM4ODQzLCAzODg0NywgMzg4NTMsIDM4ODU4LCAzODg2NSwgCisgICAgMzg4NjcsIDM4ODcwLCAzODg3NCwgMzg4NzgsIDM4ODgzLCAzODg4OSwgMzg4OTEsIDM4OTAwLCAzODkwOSwgMzg5MTIsIAorICAgIDM4OTE2LCAzODkxOCwgMzg5MjAsIDM4OTIyLCAzODkyNSwgMzg5MzEsIDM4OTMzLCAzODkzNywgMzg5NDEsIDM4OTQ4LCAKKyAgICAzODk1NSwgMzg5NTksIDM4OTY0LCAzODk2OSwgMzg5NzQsIDM4OTc5LCAzODk4MywgMzg5ODcsIDM4OTkwLCAzODk5NCwgCisgICAgMzg5OTgsIDM5MDA1LCAzOTAxMCwgMzkwMTQsIDM5MDE4LCAzOTAyMywgMzkwMjcsIDM5MDMxLCAzOTAzNiwgMzkwNDEsIAorICAgIDM5MDQ1LCAzOTA0OSwgMzkwNTMsIDM5MDU1LCAzOTA2MCwgMzkwNjUsIDM5MDY5LCAzOTA3MywgMzkwNzcsIDM5MDgxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzOTA4NSwgMzkwOTEsIDM5MDk3LCAzOTEwNCwgMzkxMTEsIDM5MTE2LCAzOTEyMSwgMzkxMjUsIDAsIDAsIAorICAgIDM5MTMxLCAzOTEzNCwgMzkxMzcsIDM5MTQwLCAzOTE0MywgMzkxNDYsIDM5MTQ5LCAzOTE1MywgMzkxNTcsIDM5MTYyLCAKKyAgICAzOTE2NywgMzkxNzIsIDM5MTc5LCAzOTE4MywgMzkxODYsIDM5MTg5LCAzOTE5MiwgMzkxOTUsIDM5MTk4LCAzOTIwMSwgCisgICAgMzkyMDQsIDM5MjA3LCAzOTIxMCwgMzkyMTQsIDM5MjE4LCAzOTIyMywgMzkyMjgsIDAsIDM5MjMzLCAzOTIzOSwgMzkyNDUsIAorICAgIDM5MjUxLCAzOTI1OCwgMzkyNjUsIDM5MjcyLCAzOTI3OSwgMzkyODUsIDM5MjkxLCAzOTI5OCwgMzkzMDUsIDM5MzEyLCAwLCAKKyAgICAwLCAwLCAzOTMxOSwgMzkzMjIsIDM5MzI1LCAzOTMyOCwgMzkzMzMsIDM5MzM2LCAzOTMzOSwgMzkzNDIsIDM5MzQ1LCAKKyAgICAzOTM0OCwgMzkzNTEsIDM5MzU1LCAzOTM1OCwgMzkzNjEsIDM5MzY0LCAzOTM2NywgMzkzNzAsIDM5Mzc1LCAzOTM3OCwgCisgICAgMzkzODEsIDM5Mzg0LCAzOTM4NywgMzkzOTAsIDM5Mzk1LCAzOTM5OCwgMzk0MDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NDA2LCAzOTQxMSwgMzk0MTYsIDM5NDIzLCAKKyAgICAzOTQzMSwgMzk0MzYsIDM5NDQxLCAzOTQ0NSwgMzk0NDksIDM5NDU0LCAzOTQ2MSwgMzk0NjgsIDM5NDcyLCAzOTQ3NywgCisgICAgMzk0ODIsIDM5NDg3LCAzOTQ5MiwgMzk0OTksIDM5NTA0LCAzOTUwOSwgMzk1MTQsIDM5NTIzLCAzOTUzMCwgMzk1MzcsIAorICAgIDM5NTQxLCAzOTU0NiwgMzk1NTIsIDM5NTU3LCAzOTU2NCwgMzk1NzMsIDM5NTgyLCAzOTU4NiwgMzk1OTAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NTk0LCAzOTU5OCwgMzk2MDYsIDM5NjEwLCAzOTYxNCwgCisgICAgMzk2MTksIDM5NjIzLCAzOTYyNywgMzk2MzEsIDM5NjMzLCAzOTYzNywgMzk2NDEsIDM5NjQ1LCAzOTY1MCwgMzk2NTQsIAorICAgIDM5NjU4LCAzOTY2NiwgMzk2NjksIDM5NjczLCAzOTY3NiwgMzk2NzksIDM5Njg1LCAzOTY4OSwgMzk2OTIsIDM5Njk4LCAKKyAgICAzOTcwMiwgMzk3MDYsIDM5NzEwLCAzOTcxMywgMzk3MTcsIDM5NzIwLCAzOTcyNCwgMzk3MjYsIDM5NzI5LCAzOTczMiwgCisgICAgMzk3MzYsIDM5NzM4LCAzOTc0MiwgMzk3NDUsIDM5NzQ4LCAzOTc1MywgMzk3NTgsIDM5NzY1LCAzOTc2OCwgMzk3NzEsIAorICAgIDM5Nzc1LCAzOTc4MCwgMzk3ODMsIDM5Nzg2LCAzOTc4OSwgMzk3OTMsIDM5Nzk4LCAzOTgwMSwgMzk4MDQsIDM5ODA2LCAKKyAgICAzOTgwOSwgMzk4MTIsIDM5ODE1LCAzOTgxOSwgMzk4MjQsIDM5ODI3LCAzOTgzMSwgMzk4MzUsIDM5ODM5LCAzOTg0MywgCisgICAgMzk4NDgsIDM5ODU0LCAzOTg1OSwgMzk4NjQsIDM5ODcwLCAzOTg3NSwgMzk4ODAsIDM5ODg0LCAzOTg4OCwgMzk4OTMsIAorICAgIDM5ODk3LCAzOTkwMSwgMzk5MDQsIDM5OTA2LCAzOTkxMSwgMzk5MTcsIDM5OTI0LCAzOTkzMSwgMzk5MzgsIDM5OTQ1LCAKKyAgICAzOTk1MiwgMzk5NTksIDM5OTY2LCAzOTk3MywgMzk5ODEsIDM5OTg4LCAzOTk5NiwgNDAwMDMsIDQwMDEwLCA0MDAxOCwgCisgICAgNDAwMjYsIDQwMDMxLCA0MDAzNiwgNDAwNDEsIDQwMDQ2LCA0MDA1MSwgNDAwNTYsIDQwMDYxLCA0MDA2NiwgNDAwNzEsIAorICAgIDQwMDc2LCA0MDA4MiwgNDAwODgsIDQwMDk0LCA0MDEwMCwgNDAxMDcsIDQwMTE1LCA0MDEyMiwgNDAxMjgsIDQwMTM0LCAKKyAgICA0MDE0MCwgNDAxNDYsIDQwMTUyLCA0MDE1OCwgNDAxNjQsIDQwMTcwLCA0MDE3NiwgNDAxODMsIDQwMTkwLCA0MDE5NywgCisgICAgNDAyMDQsIDQwMjEyLCA0MDIyMSwgNDAyMjksIDQwMjQwLCA0MDI0OCwgNDAyNTYsIDQwMjY1LCA0MDI3MiwgNDAyODEsIAorICAgIDQwMjkwLCA0MDI5OCwgNDAzMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDQwMzE1LCA0MDMxNywgNDAzMjAsIDQwMzIyLCA0MDMyNSwgCisgICAgNDAzMjgsIDQwMzMxLCA0MDMzNiwgNDAzNDEsIDQwMzQ2LCA0MDM1MSwgNDAzNTUsIDQwMzU5LCA0MDM2MywgNDAzNjcsIAorICAgIDQwMzcyLCA0MDM3OCwgNDAzODMsIDQwMzg5LCA0MDM5NCwgNDAzOTksIDQwNDA0LCA0MDQxMCwgNDA0MTUsIDQwNDIxLCAKKyAgICA0MDQyNywgNDA0MzEsIDQwNDM1LCA0MDQ0MCwgNDA0NDUsIDQwNDUwLCA0MDQ1NSwgNDA0NjAsIDQwNDY4LCA0MDQ3NiwgCisgICAgNDA0ODQsIDQwNDkyLCA0MDQ5OSwgNDA1MDcsIDQwNTE0LCA0MDUyMSwgNDA1MzAsIDQwNTQyLCA0MDU0OCwgNDA1NTQsIAorICAgIDQwNTYyLCA0MDU3MCwgNDA1NzksIDQwNTg4LCA0MDU5NiwgNDA2MDQsIDQwNjEzLCA0MDYyMiwgNDA2MjcsIDQwNjM1LCAKKyAgICA0MDY0MCwgNDA2NDUsIDQwNjUxLCA0MDY1NiwgNDA2NjIsIDQwNjY5LCA0MDY3NiwgNDA2ODEsIDQwNjg3LCA0MDY5MiwgCisgICAgNDA2OTUsIDQwNjk5LCA0MDcwMiwgNDA3MDYsIDQwNzEwLCA0MDcxNCwgNDA3MjAsIDQwNzI2LCA0MDczMiwgNDA3MzgsIAorICAgIDQwNzQyLCA0MDc0NiwgNDA3NTAsIDQwNzU0LCA0MDc2MCwgNDA3NjYsIDQwNzcwLCA0MDc3NSwgNDA3NzksIDQwNzg0LCAKKyAgICA0MDc4OSwgNDA3OTQsIDQwNzk3LCA0MDgwMSwgNDA4MDQsIDQwODA4LCA0MDgxNSwgNDA4MjMsIDQwODM0LCA0MDg0NSwgCisgICAgNDA4NTAsIDQwODU5LCA0MDg2NiwgNDA4NzUsIDQwODg0LCA0MDg4OCwgNDA4OTQsIDQwOTAyLCA0MDkwNiwgNDA5MTEsIAorICAgIDQwOTE2LCA0MDkyMiwgNDA5MjgsIDQwOTM0LCA0MDk0MSwgNDA5NDUsIDQwOTQ5LCA0MDk1NCwgNDA5NTcsIDQwOTU5LCAKKyAgICA0MDk2MywgNDA5NjcsIDQwOTc1LCA0MDk3OSwgNDA5ODEsIDQwOTgzLCA0MDk4NywgNDA5OTUsIDQxMDAwLCA0MTAwNiwgCisgICAgNDEwMTYsIDQxMDIzLCA0MTAyOCwgNDEwMzIsIDQxMDM2LCA0MTA0MCwgNDEwNDMsIDQxMDQ2LCA0MTA0OSwgNDEwNTMsIAorICAgIDQxMDU3LCA0MTA2MSwgNDEwNjUsIDQxMDY5LCA0MTA3MiwgNDEwNzYsIDQxMDgwLCA0MTA4MywgNDEwODUsIDQxMDg4LCAKKyAgICA0MTA5MCwgNDEwOTQsIDQxMDk4LCA0MTEwMCwgNDExMDYsIDQxMTA5LCA0MTExNCwgNDExMTgsIDQxMTIyLCA0MTEyNCwgCisgICAgNDExMjYsIDQxMTI4LCA0MTEzMSwgNDExMzUsIDQxMTM5LCA0MTE0MywgNDExNDcsIDQxMTUxLCA0MTE1NywgNDExNjMsIAorICAgIDQxMTY1LCA0MTE2NywgNDExNjksIDQxMTcxLCA0MTE3NCwgNDExNzYsIDQxMTgwLCA0MTE4MiwgNDExODYsIDQxMTg5LCAKKyAgICA0MTE5NSwgNDExOTksIDQxMjAzLCA0MTIwNiwgNDEyMDksIDQxMjEzLCA0MTIxOSwgNDEyMjMsIDQxMjMzLCA0MTI0MywgCisgICAgNDEyNDcsIDQxMjUzLCA0MTI1OSwgNDEyNjIsIDQxMjY2LCA0MTI2OSwgNDEyNzQsIDQxMjc4LCA0MTI4NCwgNDEyODgsIAorICAgIDQxMzAwLCA0MTMwOCwgNDEzMTIsIDQxMzE2LCA0MTMyMiwgNDEzMjYsIDQxMzI5LCA0MTMzMSwgNDEzMzQsIDQxMzM4LCAKKyAgICA0MTM0MiwgNDEzNDksIDQxMzUzLCA0MTM1NywgNDEzNjEsIDQxMzY0LCA0MTM2OSwgNDEzNzQsIDQxMzc5LCA0MTM4NCwgCisgICAgNDEzODksIDQxMzk0LCA0MTQwMiwgNDE0MTAsIDQxNDE0LCA0MTQxOCwgNDE0MjAsIDQxNDI1LCA0MTQyOSwgNDE0MzMsIAorICAgIDQxNDQxLCA0MTQ0OSwgNDE0NTUsIDQxNDYxLCA0MTQ3MCwgNDE0NzksIDQxNDg0LCA0MTQ4OSwgNDE0OTcsIDQxNTA1LCAKKyAgICA0MTUwNywgNDE1MDksIDQxNTE0LCA0MTUxOSwgNDE1MjUsIDQxNTMxLCA0MTUzNywgNDE1NDMsIDQxNTQ3LCA0MTU1MSwgCisgICAgNDE1NTgsIDQxNTY1LCA0MTU3MSwgNDE1NzcsIDQxNTg3LCA0MTU5NywgNDE2MDUsIDQxNjEzLCA0MTYxNSwgNDE2MTksIAorICAgIDQxNjIzLCA0MTYyOCwgNDE2MzMsIDQxNjQwLCA0MTY0NywgNDE2NTAsIDQxNjUzLCA0MTY1NiwgNDE2NTksIDQxNjYyLCAKKyAgICA0MTY2NywgNDE2NzEsIDQxNjc2LCA0MTY4MSwgNDE2ODQsIDQxNjg3LCA0MTY5MCwgNDE2OTMsIDQxNjk2LCA0MTcwMCwgCisgICAgNDE3MDMsIDQxNzA2LCA0MTcwOSwgNDE3MTIsIDQxNzE0LCA0MTcxNiwgNDE3MTgsIDQxNzIwLCA0MTcyOCwgNDE3MzYsIAorICAgIDQxNzQyLCA0MTc0NiwgNDE3NTIsIDQxNzYyLCA0MTc2OCwgNDE3NzQsIDQxNzgwLCA0MTc4OCwgNDE3OTYsIDQxODA3LCAKKyAgICA0MTgxMSwgNDE4MTUsIDQxODE3LCA0MTgyMywgNDE4MjUsIDQxODI3LCA0MTgyOSwgNDE4MzEsIDQxODM3LCA0MTg0MCwgCisgICAgNDE4NDYsIDQxODUyLCA0MTg1NiwgNDE4NjAsIDQxODY0LCA0MTg2NywgNDE4NzEsIDQxODc1LCA0MTg3NywgNDE4ODYsIAorICAgIDQxODk1LCA0MTkwMCwgNDE5MDUsIDQxOTExLCA0MTkxNywgNDE5MjMsIDQxOTI2LCA0MTkyOSwgNDE5MzIsIDQxOTM1LCAKKyAgICA0MTkzNywgNDE5NDIsIDQxOTQ3LCA0MTk1MiwgNDE5NTgsIDQxOTY0LCA0MTk3MiwgNDE5ODAsIDQxOTg2LCA0MTk5MiwgCisgICAgNDE5OTgsIDQyMDA0LCA0MjAxMywgNDIwMjIsIDQyMDMxLCA0MjA0MCwgNDIwNDksIDQyMDU4LCA0MjA2NywgNDIwNzYsIAorICAgIDQyMDg1LCA0MjA5NCwgNDIxMDIsIDQyMTE0LCA0MjEyNCwgNDIxMzksIDQyMTQyLCA0MjE0NywgNDIxNTMsIDQyMTU5LCAKKyAgICA0MjE2NiwgNDIxODAsIDQyMTk1LCA0MjIwMSwgNDIyMDcsIDQyMjE0LCA0MjIyMCwgNDIyMjgsIDQyMjM0LCA0MjI0NywgCisgICAgNDIyNjEsIDQyMjY2LCA0MjI3MiwgNDIyNzksIDQyMjgyLCA0MjI4NSwgNDIyODcsIDQyMjkwLCA0MjI5MywgNDIyOTUsIAorICAgIDQyMjk3LCA0MjMwMSwgNDIzMDQsIDQyMzA3LCA0MjMxMCwgNDIzMTMsIDQyMzE4LCA0MjMyMywgNDIzMjgsIDQyMzMzLCAKKyAgICA0MjMzOCwgNDIzNDEsIDQyMzQzLCA0MjM0NSwgNDIzNDcsIDQyMzUxLCA0MjM1NSwgNDIzNTksIDQyMzY1LCA0MjM3MCwgCisgICAgNDIzNzIsIDQyMzc0LCA0MjM3OSwgNDIzODQsIDQyMzg5LCA0MjM5NCwgNDIzOTksIDQyNDA0LCA0MjQwNiwgNDI0MDgsIAorICAgIDQyNDE3LCA0MjQyMSwgNDI0MjksIDQyNDM4LCA0MjQ0MCwgNDI0NDUsIDQyNDUwLCA0MjQ1OCwgNDI0NjIsIDQyNDY0LCAKKyAgICA0MjQ2OCwgNDI0NzAsIDQyNDc0LCA0MjQ3OCwgNDI0ODIsIDQyNDg0LCA0MjQ4NiwgNDI0ODgsIDQyNDk1LCA0MjUwNCwgCisgICAgNDI1MTMsIDQyNTIyLCA0MjUzMSwgNDI1NDAsIDQyNTQ5LCA0MjU1OCwgNDI1NjcsIDQyNTc1LCA0MjU4MywgNDI1OTIsIAorICAgIDQyNjAxLCA0MjYxMCwgNDI2MTksIDQyNjI3LCA0MjYzNSwgNDI2NDQsIDQyNjUzLCA0MjY2MiwgNDI2NzIsIDQyNjgxLCAKKyAgICA0MjY5MSwgNDI3MDAsIDQyNzEwLCA0MjcxOSwgNDI3MjksIDQyNzM5LCA0Mjc0OCwgNDI3NTgsIDQyNzY3LCA0Mjc3NywgCisgICAgNDI3ODYsIDQyNzk2LCA0MjgwNSwgNDI4MTQsIDQyODIzLCA0MjgzMiwgNDI4NDEsIDQyODUxLCA0Mjg2MCwgNDI4NjksIAorICAgIDQyODc4LCA0Mjg4OCwgNDI4OTcsIDQyOTA2LCA0MjkxNSwgNDI5MjQsIDQyOTM0LCA0Mjk0NCwgNDI5NTMsIDQyOTYyLCAKKyAgICA0Mjk3MCwgNDI5NzgsIDQyOTg1LCA0Mjk5MywgNDMwMDIsIDQzMDEzLCA0MzAyMiwgNDMwMzEsIDQzMDQwLCA0MzA0NywgCisgICAgNDMwNTQsIDQzMDYxLCA0MzA3MCwgNDMwNzksIDQzMDg4LCA0MzA5NywgNDMxMDQsIDQzMTA5LCA0MzExOCwgNDMxMjMsIAorICAgIDQzMTI2LCA0MzEzNCwgNDMxMzcsIDQzMTQyLCA0MzE0NywgNDMxNTAsIDQzMTUzLCA0MzE2MSwgNDMxNjQsIDQzMTY5LCAKKyAgICA0MzE3MiwgNDMxNzksIDQzMTg0LCA0MzE5MiwgNDMxOTUsIDQzMTk4LCA0MzIwMSwgNDMyMDYsIDQzMjExLCA0MzIxNCwgCisgICAgNDMyMTcsIDQzMjI1LCA0MzIyOCwgNDMyMzUsIDQzMjQyLCA0MzI0NiwgNDMyNTAsIDQzMjU1LCA0MzI2MCwgNDMyNjYsIAorICAgIDQzMjcxLCA0MzI3NywgNDMyODMsIDQzMjg4LCA0MzI5NCwgNDMzMDIsIDQzMzA4LCA0MzMxNiwgNDMzMjQsIDQzMzMwLCAKKyAgICA0MzMzOCwgNDMzNDYsIDQzMzU1LCA0MzM2MywgNDMzNjksIDQzMzc3LCA0MzM4NiwgNDMzOTQsIDQzMzk4LCA0MzQwMywgCisgICAgNDM0MTYsIDQzNDI5LCA0MzQzMywgNDM0MzcsIDQzNDQxLCA0MzQ0NSwgNDM0NTUsIDQzNDU5LCA0MzQ2NCwgNDM0NjksIAorICAgIDQzNDc0LCA0MzQ3OSwgNDM0ODQsIDQzNDg5LCA0MzQ5OSwgNDM1MDksIDQzNTE3LCA0MzUyNywgNDM1MzcsIDQzNTQ1LCAKKyAgICA0MzU1NSwgNDM1NjUsIDQzNTczLCA0MzU4MywgNDM1OTMsIDQzNjAxLCA0MzYwOSwgNDM2MTksIDQzNjI5LCA0MzYzMiwgCisgICAgNDM2MzUsIDQzNjM4LCA0MzY0MywgNDM2NDcsIDQzNjUzLCA0MzY2MCwgNDM2NjcsIDQzNjc1LCA0MzY4MiwgNDM2ODYsIAorICAgIDQzNjkwLCA0MzY5NCwgNDM2OTgsIDQzNzAwLCA0MzcwNCwgNDM3MDgsIDQzNzEzLCA0MzcxOCwgNDM3MjUsIDQzNzMyLCAKKyAgICA0MzczNSwgNDM3NDIsIDQzNzQ0LCA0Mzc0NiwgNDM3NTAsIDQzNzU0LCA0Mzc1OSwgNDM3NjUsIDQzNzcxLCA0Mzc3NywgCisgICAgNDM3ODMsIDQzNzkyLCA0MzgwMSwgNDM4MTAsIDQzODE0LCA0MzgxNiwgNDM4MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDQzODI3LCA0MzgzMSwgNDM4MzgsIDQzODQ1LCA0Mzg1MiwgNDM4NTksIDQzODYzLCA0Mzg2NywgCisgICAgNDM4NzEsIDQzODc1LCA0Mzg4MCwgNDM4ODYsIDQzODkxLCA0Mzg5NywgNDM5MDMsIDQzOTA5LCA0MzkxNSwgNDM5MjMsIAorICAgIDQzOTMwLCA0MzkzNywgNDM5NDQsIDQzOTUxLCA0Mzk1NiwgNDM5NjIsIDQzOTcxLCA0Mzk3NSwgNDM5ODIsIDQzOTg2LCAKKyAgICA0Mzk5MCwgNDM5OTYsIDQ0MDAyLCA0NDAwOCwgNDQwMTQsIDQ0MDE4LCA0NDAyMiwgNDQwMjUsIDQ0MDI4LCA0NDAzMiwgCisgICAgNDQwMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ0MDQ2LCA0NDA0OSwgNDQwNTMsIDQ0MDU3LCA0NDA2MywgNDQwNjksIDQ0MDc1LCA0NDA4MywgNDQwOTAsIAorICAgIDQ0MDk0LCA0NDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNDQxMDcsIDQ0MTEwLCA0NDExMywgNDQxMTYsIDQ0MTE5LCA0NDEyMiwgNDQxMjUsIDQ0MTI4LCA0NDEzMSwgNDQxMzQsIAorICAgIDQ0MTM4LCA0NDE0MiwgNDQxNDYsIDQ0MTUwLCA0NDE1NCwgNDQxNTgsIDQ0MTYyLCA0NDE2NiwgNDQxNzAsIDQ0MTc0LCAKKyAgICA0NDE3OCwgNDQxODEsIDQ0MTg0LCA0NDE4NywgNDQxOTAsIDQ0MTkzLCA0NDE5NiwgNDQxOTksIDQ0MjAyLCA0NDIwNSwgCisgICAgNDQyMDksIDQ0MjEzLCA0NDIxNywgNDQyMjEsIDQ0MjI1LCA0NDIyOSwgNDQyMzMsIDQ0MjM3LCA0NDI0MSwgNDQyNDUsIAorICAgIDQ0MjQ5LCA0NDI1NSwgNDQyNjEsIDQ0MjY3LCA0NDI3NCwgNDQyODEsIDQ0Mjg4LCA0NDI5NSwgNDQzMDIsIDQ0MzA5LCAKKyAgICA0NDMxNiwgNDQzMjMsIDQ0MzMwLCA0NDMzNywgNDQzNDQsIDQ0MzUxLCA0NDM1OCwgNDQzNjUsIDQ0MzcyLCA0NDM3OSwgCisgICAgNDQzODYsIDQ0MzkxLCA0NDM5NywgNDQ0MDMsIDQ0NDA5LCA0NDQxNCwgNDQ0MjAsIDQ0NDI2LCA0NDQzMiwgNDQ0MzcsIAorICAgIDQ0NDQzLCA0NDQ0OSwgNDQ0NTQsIDQ0NDU5LCA0NDQ2NSwgNDQ0NzAsIDQ0NDc2LCA0NDQ4MiwgNDQ0ODcsIDQ0NDkzLCAKKyAgICA0NDQ5OSwgNDQ1MDQsIDQ0NTEwLCA0NDUxNiwgNDQ1MjIsIDQ0NTI4LCA0NDUzNCwgNDQ1MzksIDQ0NTQ1LCA0NDU1MSwgCisgICAgNDQ1NTcsIDQ0NTYyLCA0NDU2OCwgNDQ1NzQsIDQ0NTgwLCA0NDU4NSwgNDQ1OTEsIDQ0NTk3LCA0NDYwMiwgNDQ2MDcsIAorICAgIDQ0NjEzLCA0NDYxOCwgNDQ2MjQsIDQ0NjMwLCA0NDYzNSwgNDQ2NDEsIDQ0NjQ3LCA0NDY1MiwgNDQ2NTgsIDQ0NjY0LCAKKyAgICA0NDY3MCwgNDQ2NzYsIDQ0NjgyLCA0NDY4NywgNDQ2OTMsIDQ0Njk5LCA0NDcwNSwgNDQ3MTAsIDQ0NzE2LCA0NDcyMiwgCisgICAgNDQ3MjgsIDQ0NzMzLCA0NDczOSwgNDQ3NDUsIDQ0NzUwLCA0NDc1NSwgNDQ3NjEsIDQ0NzY2LCA0NDc3MiwgNDQ3NzgsIAorICAgIDQ0NzgzLCA0NDc4OSwgNDQ3OTUsIDQ0ODAwLCA0NDgwNiwgNDQ4MTIsIDQ0ODE4LCA0NDgyNCwgNDQ4MzAsIDQ0ODM0LCAKKyAgICA0NDgzOSwgNDQ4NDQsIDQ0ODQ5LCA0NDg1NCwgNDQ4NTksIDQ0ODY0LCA0NDg2OSwgNDQ4NzQsIDQ0ODc5LCA0NDg4NCwgCisgICAgNDQ4ODgsIDQ0ODkyLCA0NDg5NiwgNDQ5MDAsIDQ0OTA0LCA0NDkwOCwgNDQ5MTIsIDQ0OTE2LCA0NDkyMCwgNDQ5MjUsIAorICAgIDQ0OTMwLCA0NDkzNSwgNDQ5NDAsIDQ0OTQ1LCA0NDk1MCwgNDQ5NTksIDQ0OTY4LCA0NDk3NywgNDQ5ODYsIDQ0OTk1LCAKKyAgICA0NTAwNCwgNDUwMTMsIDQ1MDIyLCA0NTAyOSwgNDUwMzcsIDQ1MDQ1LCA0NTA1MiwgNDUwNTksIDQ1MDY3LCA0NTA3NSwgCisgICAgNDUwODIsIDQ1MDg5LCA0NTA5NywgNDUxMDUsIDQ1MTEyLCA0NTExOSwgNDUxMjcsIDQ1MTM1LCA0NTE0MiwgNDUxNDksIAorICAgIDQ1MTU3LCA0NTE2NiwgNDUxNzUsIDQ1MTgzLCA0NTE5MiwgNDUyMDEsIDQ1MjA4LCA0NTIxNSwgNDUyMjMsIDQ1MjMyLCAKKyAgICA0NTI0MSwgNDUyNDksIDQ1MjU4LCA0NTI2NywgNDUyNzQsIDQ1MjgxLCA0NTI5MCwgNDUyOTksIDQ1MzA3LCA0NTMxNSwgCisgICAgNDUzMjQsIDQ1MzMzLCA0NTM0MCwgNDUzNDcsIDQ1MzU2LCA0NTM2NSwgNDUzNzMsIDQ1MzgxLCA0NTM5MCwgNDUzOTksIAorICAgIDQ1NDA2LCA0NTQxMywgNDU0MjIsIDQ1NDMxLCA0NTQzOSwgNDU0NDgsIDQ1NDU3LCA0NTQ2NSwgNDU0NzUsIDQ1NDg1LCAKKyAgICA0NTQ5NSwgNDU1MDUsIDQ1NTE0LCA0NTUyMywgNDU1MzIsIDQ1NTQxLCA0NTU0OCwgNDU1NTYsIDQ1NTY0LCA0NTU3MiwgCisgICAgNDU1ODAsIDQ1NTg1LCA0NTU5MCwgNDU1OTksIDQ1NjA3LCA0NTYxNCwgNDU2MjMsIDQ1NjMxLCA0NTYzOCwgNDU2NDcsIAorICAgIDQ1NjU1LCA0NTY2MiwgNDU2NzEsIDQ1Njc5LCA0NTY4NiwgNDU2OTUsIDQ1NzAzLCA0NTcxMCwgNDU3MTksIDQ1NzI3LCAKKyAgICA0NTczNCwgNDU3NDMsIDQ1NzUxLCA0NTc1OCwgNDU3NjcsIDQ1Nzc1LCA0NTc4MiwgNDU3OTEsIDQ1Nzk5LCA0NTgwNiwgCisgICAgNDU4MTUsIDQ1ODI0LCA0NTgzMywgNDU4NDIsIDQ1ODU2LCA0NTg3MCwgNDU4NzcsIDQ1ODgyLCA0NTg4NywgNDU4OTIsIAorICAgIDQ1ODk3LCA0NTkwMiwgNDU5MDcsIDQ1OTEyLCA0NTkxNywgNDU5MjUsIDQ1OTMzLCA0NTk0MSwgNDU5NDksIDQ1OTU0LCAKKyAgICA0NTk2MSwgNDU5NjgsIDQ1OTc1LCA0NTk4MCwgNDU5ODgsIDQ1OTk1LCA0NjAwMywgNDYwMDcsIDQ2MDE0LCA0NjAyMCwgCisgICAgNDYwMjcsIDQ2MDMxLCA0NjAzNywgNDYwNDMsIDQ2MDQ5LCA0NjA1MywgNDYwNTYsIDQ2MDYwLCA0NjA2NCwgNDYwNzEsIAorICAgIDQ2MDc3LCA0NjA4MywgNDYwODksIDQ2MDk1LCA0NjEwOSwgNDYxMTksIDQ2MTMzLCA0NjE0NywgNDYxNTMsIDQ2MTYzLCAKKyAgICA0NjE3NywgNDYxODAsIDQ2MTgzLCA0NjE5MCwgNDYxOTgsIDQ2MjAzLCA0NjIwOCwgNDYyMTYsIDQ2MjI4LCA0NjI0MCwgCisgICAgNDYyNDgsIDQ2MjUyLCA0NjI1NiwgNDYyNTksIDQ2MjYyLCA0NjI2NiwgNDYyNzAsIDQ2MjczLCA0NjI3NiwgNDYyODEsIAorICAgIDQ2Mjg2LCA0NjI5MiwgNDYyOTgsIDQ2MzAzLCA0NjMwOCwgNDYzMTQsIDQ2MzIwLCA0NjMyNSwgNDYzMzAsIDQ2MzM1LCAKKyAgICA0NjM0MCwgNDYzNDYsIDQ2MzUyLCA0NjM1NywgNDYzNjIsIDQ2MzY4LCA0NjM3NCwgNDYzNzksIDQ2Mzg0LCA0NjM4NywgCisgICAgNDYzOTAsIDQ2Mzk5LCA0NjQwMSwgNDY0MDMsIDQ2NDA2LCA0NjQxMCwgNDY0MTYsIDQ2NDE4LCA0NjQyMSwgNDY0MjgsIAorICAgIDQ2NDM1LCA0NjQ0MywgNDY0NTEsIDQ2NDYxLCA0NjQ3NSwgNDY0ODAsIDQ2NDg1LCA0NjQ4OSwgNDY0OTQsIDQ2NTAyLCAKKyAgICA0NjUxMCwgNDY1MTksIDQ2NTI4LCA0NjUzNywgNDY1NDYsIDQ2NTUxLCA0NjU1NiwgNDY1NjIsIDQ2NTY4LCA0NjU3NCwgCisgICAgNDY1ODAsIDQ2NTgzLCA0NjU4OSwgNDY1OTUsIDQ2NjA1LCA0NjYxNSwgNDY2MjMsIDQ2NjMxLCA0NjY0MCwgNDY2NDksIAorICAgIDQ2NjUzLCA0NjY2MSwgNDY2NjksIDQ2Njc3LCA0NjY4NSwgNDY2OTQsIDQ2NzAzLCA0NjcxMiwgNDY3MjEsIDQ2NzI2LCAKKyAgICA0NjczMSwgNDY3MzYsIDQ2NzQxLCA0Njc0NiwgNDY3NTIsIDQ2NzU4LCA0Njc2MywgNDY3NjksIDQ2NzcxLCA0Njc3MywgCisgICAgNDY3NzUsIDQ2Nzc3LCA0Njc4MCwgNDY3ODMsIDQ2Nzg1LCA0Njc4NywgNDY3ODksIDQ2NzkzLCA0Njc5NywgNDY3OTksIAorICAgIDQ2ODAxLCA0NjgwNCwgNDY4MDcsIDQ2ODExLCA0NjgxNywgNDY4MjMsIDQ2ODI1LCA0NjgzMiwgNDY4MzYsIDQ2ODQxLCAKKyAgICA0Njg0NiwgNDY4NDgsIDQ2ODU4LCA0Njg2NCwgNDY4NzAsIDQ2ODc2LCA0Njg4MiwgNDY4ODgsIDQ2ODk0LCA0Njg5OSwgCisgICAgNDY5MDIsIDQ2OTA1LCA0NjkwOCwgNDY5MTAsIDQ2OTEyLCA0NjkxNiwgNDY5MjAsIDQ2OTI1LCA0NjkzMCwgNDY5MzUsIAorICAgIDQ2OTM4LCA0Njk0MiwgNDY5NDcsIDQ2OTUwLCA0Njk1NCwgNDY5NTksIDQ2OTY0LCA0Njk2OSwgNDY5NzQsIDQ2OTc5LCAKKyAgICA0Njk4NCwgNDY5ODksIDQ2OTk0LCA0Njk5OSwgNDcwMDQsIDQ3MDA5LCA0NzAxNCwgNDcwMjAsIDQ3MDI2LCA0NzAzMiwgCisgICAgNDcwMzQsIDQ3MDM3LCA0NzAzOSwgNDcwNDIsIDQ3MDQ0LCA0NzA0NiwgNDcwNDgsIDQ3MDUwLCA0NzA1MiwgNDcwNTQsIAorICAgIDQ3MDU2LCA0NzA1OCwgNDcwNjAsIDQ3MDYyLCA0NzA2NCwgNDcwNjYsIDQ3MDY4LCA0NzA3MCwgNDcwNzIsIDQ3MDc0LCAKKyAgICA0NzA3NiwgNDcwODEsIDQ3MDg2LCA0NzA5MSwgNDcwOTYsIDQ3MTAxLCA0NzEwNiwgNDcxMTEsIDQ3MTE2LCA0NzEyMSwgCisgICAgNDcxMjYsIDQ3MTMxLCA0NzEzNiwgNDcxNDEsIDQ3MTQ2LCA0NzE1MSwgNDcxNTYsIDQ3MTYxLCA0NzE2NiwgNDcxNzEsIAorICAgIDQ3MTc2LCA0NzE4MCwgNDcxODQsIDQ3MTg4LCA0NzE5NCwgNDcyMDAsIDQ3MjA1LCA0NzIxMCwgNDcyMTUsIDQ3MjIwLCAKKyAgICA0NzIyNSwgNDcyMzAsIDQ3MjM4LCA0NzI0NiwgNDcyNTQsIDQ3MjYyLCA0NzI3MCwgNDcyNzgsIDQ3Mjg2LCA0NzI5NCwgCisgICAgNDczMDAsIDQ3MzA1LCA0NzMxMCwgNDczMTUsIDQ3MzE4LCA0NzMyMiwgNDczMjYsIDQ3MzMwLCA0NzMzNCwgNDczMzgsIAorICAgIDQ3MzQyLCA0NzM0OSwgNDczNTYsIDQ3MzY0LCA0NzM3MiwgNDczNzcsIDQ3MzgyLCA0NzM4OSwgNDczOTYsIDQ3NDAzLCAKKyAgICA0NzQxMCwgNDc0MTMsIDQ3NDE2LCA0NzQyMSwgNDc0MjMsIDQ3NDI3LCA0NzQzMiwgNDc0MzQsIDQ3NDM2LCA0NzQzOCwgCisgICAgNDc0NDAsIDQ3NDQ1LCA0NzQ0OCwgNDc0NTAsIDQ3NDU1LCA0NzQ2MiwgNDc0NjksIDQ3NDcyLCA0NzQ3NiwgNDc0ODEsIAorICAgIDQ3NDg2LCA0NzQ5NCwgNDc1MDAsIDQ3NTA2LCA0NzUxOCwgNDc1MjUsIDQ3NTMyLCA0NzUzNywgNDc1NDIsIDQ3NTQ4LCAKKyAgICA0NzU1MSwgNDc1NTQsIDQ3NTU5LCA0NzU2MSwgNDc1NjUsIDQ3NTY3LCA0NzU2OSwgNDc1NzEsIDQ3NTczLCA0NzU3NSwgCisgICAgNDc1NzcsIDQ3NTgyLCA0NzU4NCwgNDc1ODYsIDQ3NTg4LCA0NzU5MCwgNDc1OTQsIDQ3NTk2LCA0NzU5OSwgNDc2MDQsIAorICAgIDQ3NjA5LCA0NzYxNCwgNDc2MTksIDQ3NjI1LCA0NzYzMSwgNDc2MzMsIDQ3NjM2LCA0NzY0MywgNDc2NTAsIDQ3NjU3LCAKKyAgICA0NzY2NCwgNDc2NjgsIDQ3NjcyLCA0NzY3NCwgNDc2NzYsIDQ3NjgwLCA0NzY4NiwgNDc2OTEsIDQ3NjkzLCA0NzY5NywgCisgICAgNDc3MDYsIDQ3NzE0LCA0NzcyMiwgNDc3MjgsIDQ3NzM0LCA0NzczOSwgNDc3NDUsIDQ3NzUwLCA0Nzc1MywgNDc3NjcsIAorICAgIDQ3NzcwLCA0Nzc3NSwgNDc3ODAsIDQ3Nzg2LCA0Nzc5NiwgNDc3OTgsIDQ3ODA0LCA0NzgxMCwgNDc4MTQsIDQ3ODIxLCAKKyAgICA0NzgyNSwgNDc4MjcsIDQ3ODI5LCA0NzgzMywgNDc4MzksIDQ3ODQ0LCA0Nzg1MCwgNDc4NTIsIDQ3ODU4LCA0Nzg2MCwgCisgICAgNDc4NjYsIDQ3ODY4LCA0Nzg3MCwgNDc4NzUsIDQ3ODc3LCA0Nzg4MSwgNDc4ODYsIDQ3ODg4LCA0Nzg5MywgNDc4OTgsIAorICAgIDQ3OTAyLCA0NzkwOSwgMCwgNDc5MTksIDQ3OTI1LCA0NzkyOCwgNDc5MzQsIDQ3OTM3LCA0Nzk0MiwgNDc5NDcsIDQ3OTUxLCAKKyAgICA0Nzk1MywgNDc5NTUsIDQ3OTU5LCA0Nzk2MywgNDc5NjcsIDQ3OTcxLCA0Nzk3NiwgNDc5NzgsIDQ3OTgzLCA0Nzk4NiwgCisgICAgNDc5ODksIDQ3OTkyLCA0Nzk5NiwgNDgwMDAsIDQ4MDA1LCA0ODAwOSwgNDgwMTQsIDQ4MDE5LCA0ODAyMywgNDgwMjgsIAorICAgIDQ4MDM0LCA0ODAzNywgNDgwNDMsIDQ4MDQ4LCA0ODA1MiwgNDgwNTcsIDQ4MDYzLCA0ODA2OSwgNDgwNzYsIDQ4MDgyLCAKKyAgICA0ODA4OSwgNDgwOTYsIDQ4MDk4LCA0ODEwNSwgNDgxMDksIDQ4MTE1LCA0ODEyMSwgNDgxMjYsIDQ4MTMyLCA0ODEzNiwgCisgICAgNDgxNDEsIDQ4MTQ0LCA0ODE0OSwgNDgxNTUsIDQ4MTYyLCA0ODE3MCwgNDgxNzcsIDQ4MTg2LCA0ODE5NiwgNDgyMDMsIAorICAgIDQ4MjA5LCA0ODIxMywgNDgyMjAsIDQ4MjI1LCA0ODIzNCwgNDgyMzcsIDQ4MjQwLCA0ODI0OSwgNDgyNTksIDQ4MjY2LCAKKyAgICA0ODI2OCwgNDgyNzQsIDQ4Mjc5LCA0ODI4MSwgNDgyODQsIDQ4Mjg4LCA0ODI5NiwgNDgzMDUsIDQ4MzA4LCA0ODMxMywgCisgICAgNDgzMTgsIDQ4MzI2LCA0ODMzNCwgNDgzNDIsIDQ4MzUwLCA0ODM1NiwgNDgzNjIsIDQ4MzY4LCA0ODM3NiwgNDgzODEsIAorICAgIDQ4Mzg0LCA0ODM4OCwgNDgzOTEsIDQ4NDAzLCA0ODQxMywgNDg0MjQsIDQ4NDMzLCA0ODQ0NCwgNDg0NTQsIDQ4NDYzLCAKKyAgICA0ODQ2OSwgNDg0NzcsIDQ4NDgxLCA0ODQ4OSwgNDg0OTMsIDQ4NTAxLCA0ODUwOCwgNDg1MTUsIDQ4NTI0LCA0ODUzMywgCisgICAgNDg1NDMsIDQ4NTUzLCA0ODU2MywgNDg1NzMsIDQ4NTgyLCA0ODU5MSwgNDg2MDEsIDQ4NjExLCA0ODYyMCwgNDg2MjksIAorICAgIDQ4NjM1LCA0ODY0MSwgNDg2NDcsIDQ4NjUzLCA0ODY1OSwgNDg2NjUsIDQ4NjcxLCA0ODY3NywgNDg2ODMsIDQ4NjkwLCAKKyAgICA0ODY5NiwgNDg3MDIsIDQ4NzA4LCA0ODcxNCwgNDg3MjAsIDQ4NzI2LCA0ODczMiwgNDg3MzgsIDQ4NzQ0LCA0ODc1MSwgCisgICAgNDg3NTgsIDQ4NzY1LCA0ODc3MiwgNDg3NzksIDQ4Nzg2LCA0ODc5MywgNDg4MDAsIDQ4ODA3LCA0ODgxNCwgNDg4MjIsIAorICAgIDQ4ODI3LCA0ODgzMCwgNDg4MzQsIDQ4ODM4LCA0ODg0NCwgNDg4NDcsIDQ4ODUzLCA0ODg1OSwgNDg4NjQsIDQ4ODY4LCAKKyAgICA0ODg3MywgNDg4NzksIDQ4ODg2LCA0ODg4OSwgNDg4OTYsIDQ4OTAzLCA0ODkwNywgNDg5MTYsIDQ4OTI1LCA0ODkzMCwgCisgICAgNDg5MzYsIDQ4OTQxLCA0ODk0NiwgNDg5NTMsIDQ4OTYwLCA0ODk2OCwgNDg5NzYsIDQ4OTg1LCA0ODk4OSwgNDg5OTgsIAorICAgIDQ5MDAzLCA0OTAwNywgNDkwMTQsIDQ5MDE4LCA0OTAyNSwgNDkwMzMsIDQ5MDM4LCA0OTA0NiwgNDkwNTAsIDQ5MDU1LCAKKyAgICA0OTA1OSwgNDkwNjQsIDQ5MDY4LCA0OTA3MywgNDkwNzgsIDQ5MDg3LCA0OTA4OSwgNDkwOTIsIDQ5MDk1LCA0OTEwMiwgCisgICAgNDkxMDksIDQ5MTE0LCA0OTEyMiwgNDkxMjgsIDQ5MTM0LCA0OTEzOSwgNDkxNDIsIDQ5MTQ3LCA0OTE1MiwgNDkxNTcsIAorICAgIDQ5MTY1LCA0OTE2OSwgNDkxNzYsIDQ5MTg0LCA0OTE5MiwgNDkxOTcsIDQ5MjAyLCA0OTIwOCwgNDkyMTMsIDQ5MjE4LCAKKyAgICA0OTIyNCwgNDkyMjksIDQ5MjMyLCA0OTIzNiwgNDkyNDAsIDQ5MjQ3LCA0OTI1NiwgNDkyNjEsIDQ5MjcwLCA0OTI3OSwgCisgICAgNDkyODUsIDQ5MjkxLCA0OTI5NiwgNDkzMDEsIDQ5MzA2LCA0OTMxMSwgNDkzMTcsIDQ5MzIzLCA0OTMzMSwgNDkzMzksIAorICAgIDQ5MzQ1LCA0OTM1MSwgNDkzNTYsIDQ5MzYxLCA0OTM2OCwgNDkzNzUsIDQ5MzgxLCA0OTM4NCwgNDkzODcsIDQ5MzkxLCAKKyAgICA0OTM5NSwgNDkzOTksIDQ5NDA0LCA0OTQxMCwgNDk0MTYsIDQ5NDIzLCA0OTQzMCwgNDk0MzUsIDQ5NDM5LCA0OTQ0MywgCisgICAgNDk0NDcsIDQ5NDUxLCA0OTQ1NSwgNDk0NTksIDQ5NDYzLCA0OTQ2NywgNDk0NzEsIDQ5NDc1LCA0OTQ3OSwgNDk0ODMsIAorICAgIDQ5NDg3LCA0OTQ5MSwgNDk0OTUsIDQ5NDk5LCA0OTUwMywgNDk1MDcsIDQ5NTExLCA0OTUxNSwgNDk1MTksIDQ5NTIzLCAKKyAgICA0OTUyNywgNDk1MzEsIDQ5NTM1LCA0OTUzOSwgNDk1NDMsIDQ5NTQ3LCA0OTU1MSwgNDk1NTUsIDQ5NTU5LCA0OTU2MywgCisgICAgNDk1NjcsIDQ5NTcxLCA0OTU3NSwgNDk1NzksIDQ5NTgzLCA0OTU4NywgNDk1OTEsIDQ5NTk1LCA0OTU5OSwgNDk2MDMsIAorICAgIDQ5NjA3LCA0OTYxMSwgNDk2MTUsIDQ5NjE5LCA0OTYyMywgNDk2MjcsIDQ5NjMxLCA0OTYzNSwgNDk2MzksIDQ5NjQzLCAKKyAgICA0OTY0NywgNDk2NTEsIDQ5NjU1LCA0OTY1OSwgNDk2NjMsIDQ5NjY3LCA0OTY3MSwgNDk2NzUsIDQ5Njc5LCA0OTY4MywgCisgICAgNDk2ODcsIDQ5NjkxLCA0OTY5NSwgNDk2OTksIDQ5NzAzLCA0OTcwNywgNDk3MTEsIDQ5NzE1LCA0OTcxOSwgNDk3MjMsIAorICAgIDQ5NzI3LCA0OTczMSwgNDk3MzUsIDQ5NzM5LCA0OTc0MywgNDk3NDcsIDQ5NzUxLCA0OTc1NSwgNDk3NTksIDQ5NzYzLCAKKyAgICA0OTc2NywgNDk3NzEsIDQ5Nzc1LCA0OTc3OSwgNDk3ODMsIDQ5Nzg3LCA0OTc5MSwgNDk3OTUsIDQ5Nzk5LCA0OTgwMywgCisgICAgNDk4MDcsIDQ5ODExLCA0OTgxNSwgNDk4MTksIDQ5ODIzLCA0OTgyNywgNDk4MzEsIDQ5ODM1LCA0OTgzOSwgNDk4NDMsIAorICAgIDQ5ODQ3LCA0OTg1MSwgNDk4NTUsIDQ5ODU5LCA0OTg2MywgNDk4NjcsIDQ5ODcxLCA0OTg3NSwgNDk4NzksIDQ5ODgzLCAKKyAgICA0OTg4NywgNDk4OTEsIDQ5ODk1LCA0OTg5OSwgNDk5MDMsIDQ5OTA3LCA0OTkxMSwgNDk5MTUsIDQ5OTE5LCA0OTkyMywgCisgICAgNDk5MjcsIDQ5OTMxLCA0OTkzNSwgNDk5MzksIDQ5OTQzLCA0OTk0NywgNDk5NTEsIDQ5OTU1LCA0OTk1OSwgNDk5NjMsIAorICAgIDQ5OTY3LCA0OTk3MSwgNDk5NzUsIDQ5OTc5LCA0OTk4MywgNDk5ODcsIDQ5OTkxLCA0OTk5NSwgNDk5OTksIDUwMDAzLCAKKyAgICA1MDAwNywgNTAwMTEsIDUwMDE1LCA1MDAxOSwgNTAwMjMsIDUwMDI3LCA1MDAzMSwgNTAwMzUsIDUwMDM5LCA1MDA0MywgCisgICAgNTAwNDcsIDUwMDUxLCA1MDA1NSwgNTAwNTksIDUwMDYzLCA1MDA2NywgNTAwNzEsIDUwMDc1LCA1MDA3OSwgNTAwODMsIAorICAgIDUwMDg3LCA1MDA5MSwgNTAwOTUsIDUwMDk5LCA1MDEwMywgNTAxMDcsIDUwMTExLCA1MDExNSwgNTAxMTksIDUwMTIzLCAKKyAgICA1MDEyNywgNTAxMzEsIDUwMTM1LCA1MDEzOSwgNTAxNDMsIDUwMTQ3LCA1MDE1MSwgNTAxNTUsIDUwMTU5LCA1MDE2MywgCisgICAgNTAxNjcsIDUwMTcxLCA1MDE3NSwgNTAxNzksIDUwMTgzLCA1MDE4NywgNTAxOTEsIDUwMTk1LCA1MDE5OSwgNTAyMDMsIAorICAgIDUwMjA3LCA1MDIxMSwgNTAyMTUsIDUwMjE5LCA1MDIyMywgNTAyMjcsIDUwMjMxLCA1MDIzNSwgNTAyMzksIDUwMjQzLCAKKyAgICA1MDI0NywgNTAyNTEsIDUwMjU1LCA1MDI1OSwgNTAyNjMsIDUwMjY3LCA1MDI3MSwgNTAyNzUsIDUwMjc5LCA1MDI4MywgCisgICAgNTAyODcsIDUwMjkxLCA1MDI5NSwgNTAyOTksIDUwMzAzLCA1MDMwNywgNTAzMTEsIDUwMzE1LCA1MDMxOSwgNTAzMjMsIAorICAgIDUwMzI3LCA1MDMzMSwgNTAzMzUsIDUwMzM5LCA1MDM0MywgNTAzNDcsIDUwMzUxLCA1MDM1NSwgNTAzNTksIDUwMzYzLCAKKyAgICA1MDM2NywgNTAzNzEsIDUwMzc1LCA1MDM3OSwgNTAzODMsIDUwMzg3LCA1MDM5MSwgNTAzOTUsIDUwMzk5LCA1MDQwMywgCisgICAgNTA0MDcsIDUwNDExLCA1MDQxNSwgNTA0MTksIDUwNDIzLCA1MDQyNywgNTA0MzEsIDUwNDM1LCA1MDQzOSwgNTA0NDMsIAorICAgIDUwNDQ3LCA1MDQ1MSwgNTA0NTUsIDUwNDU5LCA1MDQ2NiwgNTA0NzQsIDUwNDgwLCA1MDQ4NiwgNTA0OTMsIDUwNTAwLCAKKyAgICA1MDUwNiwgNTA1MTIsIDUwNTE4LCA1MDUyNCwgNTA1MjksIDUwNTM0LCA1MDUzOSwgNTA1NDQsIDUwNTUwLCA1MDU1NiwgCisgICAgNTA1NjQsIDUwNTcxLCA1MDU3NywgNTA1ODMsIDUwNTkxLCA1MDYwMCwgNTA2MDcsIDUwNjE3LCA1MDYyOCwgNTA2MzEsIAorICAgIDUwNjM0LCA1MDYzOCwgNTA2NDIsIDUwNjQ5LCA1MDY1NiwgNTA2NjcsIDUwNjc4LCA1MDY4OCwgNTA2OTgsIDUwNzA1LCAKKyAgICA1MDcxMiwgNTA3MTksIDUwNzI2LCA1MDczNywgNTA3NDgsIDUwNzU5LCA1MDc3MCwgNTA3ODAsIDUwNzkwLCA1MDgwMiwgCisgICAgNTA4MTQsIDUwODI1LCA1MDgzNiwgNTA4NDgsIDUwODYwLCA1MDg2OSwgNTA4NzksIDUwODg5LCA1MDkwMCwgNTA5MTEsIAorICAgIDUwOTE4LCA1MDkyNSwgNTA5MzIsIDUwOTM5LCA1MDk0OSwgNTA5NTksIDUwOTY3LCA1MDk3NSwgNTA5ODIsIDUwOTg5LCAKKyAgICA1MDk5NiwgNTEwMDMsIDUxMDEwLCA1MTAxNSwgNTEwMjAsIDUxMDI2LCA1MTAzNCwgNTEwNDQsIDUxMDU0LCA1MTA2NCwgCisgICAgNTEwNzQsIDUxMDg0LCA1MTA5NCwgNTExMDQsIDUxMTE0LCA1MTEyNCwgNTExMzQsIDUxMTQ0LCA1MTE1NSwgNTExNjYsIAorICAgIDUxMTc2LCA1MTE4NiwgNTExOTcsIDUxMjA4LCA1MTIxOCwgNTEyMjgsIDUxMjM5LCA1MTI1MCwgNTEyNjAsIDUxMjcwLCAKKyAgICA1MTI4MSwgNTEyOTIsIDUxMzA4LCA1MTMyNywgNTEzNDMsIDUxMzYyLCA1MTM3OCwgNTEzOTQsIDUxNDEwLCA1MTQyNiwgCisgICAgNTE0MzcsIDUxNDQ5LCA1MTQ2MCwgNTE0NzIsIDUxNDkxLCA1MTUxMCwgNTE1MTgsIDUxNTI0LCA1MTUzMSwgNTE1MzgsIAorICAgIDUxNTQ1LCA1MTU1MiwgNTE1NTcsIDUxNTYzLCA1MTU2OCwgNTE1NzMsIDUxNTc5LCA1MTU4NCwgNTE1ODksIDUxNTk0LCAKKyAgICA1MTU5OSwgNTE2MDQsIDUxNjExLCA1MTYxNiwgNTE2MjMsIDUxNjI4LCA1MTYzMywgNTE2MzcsIDUxNjQxLCA1MTY0OCwgCisgICAgNTE2NTUsIDUxNjYyLCA1MTY2OSwgNTE2NzYsIDUxNjgzLCA1MTY5NiwgNTE3MDksIDUxNzIyLCA1MTczNSwgNTE3NDMsIAorICAgIDUxNzUxLCA1MTc1NywgNTE3NjMsIDUxNzcwLCA1MTc3NywgNTE3ODQsIDUxNzkxLCA1MTc5NSwgNTE4MDAsIDUxODA4LCAKKyAgICA1MTgxNiwgNTE4MjQsIDUxODMxLCA1MTgzNSwgNTE4NDMsIDUxODUxLCA1MTg1NSwgNTE4NTksIDUxODY0LCA1MTg3MSwgCisgICAgNTE4NzksIDUxODg3LCA1MTkwNiwgNTE5MjUsIDUxOTQ0LCA1MTk2MywgNTE5ODIsIDUyMDAxLCA1MjAyMCwgNTIwMzksIAorICAgIDUyMDQ1LCA1MjA1MiwgNTIwNjEsIDUyMDY5LCA1MjA3NywgNTIwODIsIDUyMDg1LCA1MjA4OCwgNTIwOTMsIDUyMDk2LCAKKyAgICA1MjExNSwgNTIxMjIsIDUyMTI4LCA1MjEzNCwgNTIxMzgsIDUyMTQxLCA1MjE0NCwgNTIxNDcsIDUyMTU5LCA1MjE3MiwgCisgICAgNTIxNzksIDUyMTg2LCA1MjE4OSwgNTIxOTMsIDUyMTk2LCA1MjIwMSwgNTIyMDYsIDUyMjExLCA1MjIxNywgNTIyMjYsIAorICAgIDUyMjMzLCA1MjI0MCwgNTIyNDgsIDUyMjU1LCA1MjI2MiwgNTIyNjUsIDUyMjcxLCA1MjI3NywgNTIyODAsIDUyMjgzLCAKKyAgICA1MjI4OCwgNTIyOTMsIDUyMjk5LCA1MjMwNSwgNTIzMDksIDUyMzE0LCA1MjMyMSwgNTIzMjUsIDUyMzMxLCA1MjMzNSwgCisgICAgNTIzMzksIDUyMzQ3LCA1MjM1OSwgNTIzNjgsIDUyMzcyLCA1MjM3NCwgNTIzODMsIDUyMzkyLCA1MjM5OCwgNTI0MDEsIAorICAgIDUyNDA3LCA1MjQxMywgNTI0MTgsIDUyNDIzLCA1MjQyOCwgNTI0MzMsIDUyNDM4LCA1MjQ0MywgNTI0NDUsIDUyNDUxLCAKKyAgICA1MjQ1NiwgNTI0NjMsIDUyNDY3LCA1MjQ3MywgNTI0NzYsIDUyNDgwLCA1MjQ4NywgNTI0OTQsIDUyNDk2LCA1MjQ5OCwgCisgICAgNTI1MDQsIDUyNTEwLCA1MjUxNiwgNTI1MjUsIDUyNTM0LCA1MjU0MSwgNTI1NDgsIDUyNTU0LCA1MjU2MCwgNTI1NjUsIAorICAgIDUyNTcwLCA1MjU3NSwgNTI1ODEsIDUyNTg3LCA1MjU5MiwgNTI1OTksIDUyNjAzLCA1MjYwNywgNTI2MjAsIDUyNjMzLCAKKyAgICA1MjY0NSwgNTI2NTQsIDUyNjYwLCA1MjY2NywgNTI2NzIsIDUyNjc3LCA1MjY4MiwgNTI2ODcsIDUyNjkyLCA1MjY5NCwgCisgICAgNTI3MDEsIDUyNzA4LCA1MjcxNSwgNTI3MjIsIDUyNzI5LCA1MjczNywgNTI3NDMsIDUyNzQ4LCA1Mjc1NCwgNTI3NjAsIAorICAgIDUyNzY2LCA1Mjc3MywgNTI3NzksIDUyNzg3LCA1Mjc5NSwgNTI4MDMsIDUyODExLCA1MjgxOCwgNTI4MjQsIDUyODMwLCAKKyAgICA1MjgzOSwgNTI4NDMsIDUyODUyLCA1Mjg2MSwgNTI4NzAsIDUyODc4LCA1Mjg4MiwgNTI4ODgsIDUyODk1LCA1MjkwMiwgCisgICAgNTI5MDYsIDUyOTEyLCA1MjkxOSwgNTI5MjQsIDUyOTI5LCA1MjkzNSwgNTI5NDAsIDUyOTQ1LCA1Mjk1MiwgNTI5NTksIAorICAgIDUyOTY0LCA1Mjk2OSwgNTI5NzcsIDUyOTg1LCA1Mjk5NSwgNTMwMDUsIDUzMDEyLCA1MzAxOSwgNTMwMjMsIDUzMDI3LCAKKyAgICA1MzAzOSwgNTMwNDUsIDUzMDUxLCA1MzA1NiwgNTMwNjEsIDUzMDY4LCA1MzA3NSwgNTMwODEsIDUzMDg3LCA1MzA5NiwgCisgICAgNTMxMDQsIDUzMTEyLCA1MzExOSwgNTMxMjYsIDUzMTMzLCA1MzEzOSwgNTMxNDYsIDUzMTUyLCA1MzE1OSwgNTMxNjYsIAorICAgIDUzMTczLCA1MzE4MCwgNTMxODYsIDUzMTkxLCA1MzIwMCwgNTMyMTAsIDUzMjE3LCA1MzIyNiwgNTMyMzIsIDUzMjM3LCAKKyAgICA1MzI0MiwgNTMyNTIsIDUzMjU4LCA1MzI2NCwgNTMyNzAsIDUzMjc4LCA1MzI4MywgNTMyOTAsIDUzMjk3LCA1MzMwOCwgCisgICAgNTMzMTUsIDUzMzIyLCA1MzMyOSwgNTMzMzYsIDUzMzQzLCA1MzM1MCwgNTMzNTcsIDUzMzY5LCA1MzM4MSwgNTMzOTIsIAorICAgIDUzNDAzLCA1MzQxNiwgNTM0MjksIDUzNDM0LCA1MzQzOSwgNTM0NDgsIDUzNDU3LCA1MzQ2NCwgNTM0NzEsIDUzNDgwLCAKKyAgICA1MzQ4OSwgNTM0OTcsIDUzNTA1LCA1MzUxMywgNTM1MjEsIDUzNTMxLCA1MzU0MSwgNTM1NTUsIDUzNTY5LCA1MzU3NywgCisgICAgNTM1ODUsIDUzNTk3LCA1MzYwOSwgNTM2MTcsIDUzNjI1LCA1MzYzNSwgNTM2NDUsIDUzNjUwLCA1MzY1NSwgNTM2NjQsIAorICAgIDUzNjczLCA1MzY3OCwgNTM2ODMsIDUzNjkxLCA1MzY5NywgNTM3MDMsIDUzNzExLCA1MzcxOSwgNTM3MzIsIDUzNzQ1LCAKKyAgICA1Mzc0OSwgNTM3NTMsIDUzNzYwLCA1Mzc2NywgNTM3NzQsIDUzNzgyLCA1Mzc5MCwgNTM3OTksIDUzODA4LCA1MzgxNCwgCisgICAgNTM4MjAsIDUzODI3LCA1MzgzNCwgNTM4NDEsIDUzODQ4LCA1Mzg1NywgNTM4NjYsIDUzODY5LCA1Mzg3MiwgNTM4NzcsIAorICAgIDUzODgyLCA1Mzg4OCwgNTM4OTQsIDUzOTAxLCA1MzkwOCwgNTM5MTgsIDUzOTI4LCA1MzkzNSwgNTM5NDIsIDUzOTUwLCAKKyAgICA1Mzk1OCwgNTM5NjYsIDUzOTc0LCA1Mzk4MiwgNTM5OTAsIDUzOTk2LCA1NDAwMiwgNTQwMDYsIDU0MDEwLCA1NDAxNywgCisgICAgNTQwMjQsIDU0MDI5LCA1NDAzNCwgNTQwMzksIDU0MDQ0LCA1NDA1MCwgNTQwNjQsIDU0MDcxLCA1NDA3OCwgNTQwODIsIAorICAgIDU0MDg0LCA1NDA4NiwgNTQwOTEsIDU0MDk2LCA1NDEwMSwgNTQxMDYsIDU0MTE0LCA1NDEyMSwgNTQxMjgsIDU0MTM2LCAKKyAgICA1NDE0OCwgNTQxNTYsIDU0MTY0LCA1NDE3NSwgNTQxNzksIDU0MTgzLCA1NDE4OSwgNTQxOTcsIDU0MjEwLCA1NDIxNywgCisgICAgNTQyMjQsIDU0MjMxLCA1NDIzNiwgNTQyNDMsIDU0MjUyLCA1NDI2MCwgNTQyNjYsIDU0MjcyLCA1NDI3OCwgNTQyODcsIAorICAgIDU0Mjk2LCA1NDMwNCwgNTQzMTMsIDU0MzE4LCA1NDMyMSwgNTQzMjYsIDU0MzMyLCA1NDMzOCwgNTQzNDQsIDU0MzUwLCAKKyAgICA1NDM1NCwgNTQzNTcsIDU0MzYxLCA1NDM2NSwgNTQzNzEsIDU0Mzc3LCA1NDM4MywgNTQzODksIDU0MzkzLCA1NDM5NywgCisgICAgNTQ0MDQsIDU0NDExLCA1NDQxOCwgNTQ0MjUsIDU0NDMyLCA1NDQzOSwgNTQ0NDksIDU0NDU5LCA1NDQ2NiwgNTQ0NzMsIAorICAgIDU0NDgxLCA1NDQ4OSwgNTQ0OTMsIDU0NDk4LCA1NDUwMywgNTQ1MDksIDU0NTE1LCA1NDUxOCwgNTQ1MjEsIDU0NTI0LCAKKyAgICA1NDUyNywgNTQ1MzEsIDU0NTM2LCA1NDU0MSwgNTQ1NDYsIDU0NTUxLCA1NDU1NiwgNTQ1NjAsIDU0NTY0LCA1NDU2OCwgCisgICAgNTQ1NzIsIDU0NTc2LCA1NDU4MCwgNTQ1ODQsIDU0NTkwLCA1NDU5NCwgNTQ2MDAsIDU0NjA1LCA1NDYxMiwgNTQ2MjAsIAorICAgIDU0NjI3LCA1NDYzNSwgNTQ2NDIsIDU0NjUwLCA1NDY1OSwgNTQ2NjYsIDU0Njc2LCA1NDY4NywgNTQ2OTMsIDU0NzAyLCAKKyAgICA1NDcwOCwgNTQ3MTcsIDU0NzI2LCA1NDczMiwgNTQ3MzgsIDU0NzQyLCA1NDc0NiwgNTQ3NTUsIDU0NzY0LCA1NDc3MSwgCisgICAgNTQ3NzgsIDU0Nzg3LCAwLCAwLCAwLCA1NDc5NiwgNTQ4MDEsIDU0ODA1LCA1NDgwOSwgNTQ4MTQsIDU0ODE5LCA1NDgyNCwgCisgICAgNTQ4MzIsIDU0ODQwLCA1NDg0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTQ4NDcsIDU0ODUyLCA1NDg1NywgNTQ4NjIsIDU0ODY3LCA1NDg3MiwgNTQ4NzcsIDU0ODgyLCAKKyAgICA1NDg4NywgNTQ4OTIsIDU0ODk3LCA1NDkwMywgNTQ5MDcsIDU0OTEyLCA1NDkxNywgNTQ5MjIsIDU0OTI3LCA1NDkzMiwgCisgICAgNTQ5MzcsIDU0OTQyLCA1NDk0NywgNTQ5NTIsIDU0OTU3LCA1NDk2MiwgNTQ5NjcsIDU0OTcyLCA1NDk3NywgNTQ5ODIsIAorICAgIDU0OTg3LCA1NDk5MiwgNTQ5OTcsIDU1MDAyLCA1NTAwNywgNTUwMTIsIDU1MDE3LCA1NTAyMywgNTUwMjgsIDU1MDM0LCAKKyAgICA1NTA0MywgNTUwNDgsIDU1MDU2LCA1NTA2MywgNTUwNzIsIDU1MDc3LCA1NTA4MiwgNTUwODcsIDU1MDkzLCAwLCA1NTEwMCwgCisgICAgNTUxMDUsIDU1MTEwLCA1NTExNSwgNTUxMjAsIDU1MTI1LCA1NTEzMCwgNTUxMzUsIDU1MTQwLCA1NTE0NSwgNTUxNTAsIAorICAgIDU1MTU2LCA1NTE2MCwgNTUxNjUsIDU1MTcwLCA1NTE3NSwgNTUxODAsIDU1MTg1LCA1NTE5MCwgNTUxOTUsIDU1MjAwLCAKKyAgICA1NTIwNSwgNTUyMTAsIDU1MjE1LCA1NTIyMCwgNTUyMjUsIDU1MjMwLCA1NTIzNSwgNTUyNDAsIDU1MjQ1LCA1NTI1MCwgCisgICAgNTUyNTUsIDU1MjYwLCA1NTI2NSwgNTUyNzAsIDU1Mjc2LCA1NTI4MSwgNTUyODcsIDU1Mjk2LCA1NTMwMSwgNTUzMDksIAorICAgIDU1MzE2LCA1NTMyNSwgNTUzMzAsIDU1MzM1LCA1NTM0MCwgNTUzNDYsIDAsIDU1MzUzLCA1NTM2MSwgNTUzNjksIDU1Mzc4LCAKKyAgICA1NTM4NSwgNTUzOTMsIDU1Mzk5LCA1NTQwOCwgNTU0MTYsIDU1NDI0LCA1NTQzMiwgNTU0NDAsIDU1NDQ4LCA1NTQ1NiwgCisgICAgNTU0NjEsIDU1NDY4LCA1NTQ3NCwgNTU0ODEsIDU1NDg5LCA1NTQ5NiwgNTU1MDMsIDU1NTExLCA1NTUxNywgNTU1MjMsIAorICAgIDU1NTMwLCA1NTUzNywgNTU1NDcsIDU1NTU3LCA1NTU2NCwgNTU1NzEsIDU1NTc2LCA1NTU4NiwgNTU1OTYsIDU1NjAxLCAKKyAgICA1NTYwNiwgNTU2MTEsIDU1NjE2LCA1NTYyMSwgNTU2MjYsIDU1NjMxLCA1NTYzNiwgNTU2NDEsIDU1NjQ2LCA1NTY1MSwgCisgICAgNTU2NTYsIDU1NjYxLCA1NTY2NiwgNTU2NzEsIDU1Njc2LCA1NTY4MSwgNTU2ODYsIDU1NjkxLCA1NTY5NiwgNTU3MDEsIAorICAgIDU1NzA2LCA1NTcxMSwgNTU3MTYsIDU1NzIxLCA1NTcyNiwgNTU3MzEsIDU1NzM2LCA1NTc0MSwgNTU3NDYsIDU1NzUwLCAKKyAgICA1NTc1NCwgNTU3NTksIDU1NzY0LCA1NTc2OSwgNTU3NzQsIDU1Nzc5LCA1NTc4NCwgNTU3ODksIDU1Nzk0LCA1NTc5OSwgCisgICAgNTU4MDQsIDU1ODA5LCA1NTgxNCwgNTU4MTksIDU1ODI0LCA1NTgyOSwgNTU4MzQsIDU1ODM5LCA1NTg0NCwgNTU4NTEsIAorICAgIDU1ODU4LCA1NTg2NSwgNTU4NzIsIDU1ODc5LCA1NTg4NiwgNTU4OTMsIDU1OTAwLCA1NTkwNywgNTU5MTQsIDU1OTIxLCAKKyAgICA1NTkyOCwgNTU5MzUsIDU1OTQyLCA1NTk0NywgNTU5NTIsIDU1OTU5LCA1NTk2NiwgNTU5NzMsIDU1OTgwLCA1NTk4NywgCisgICAgNTU5OTQsIDU2MDAxLCA1NjAwOCwgNTYwMTUsIDU2MDIyLCA1NjAyOSwgNTYwMzYsIDU2MDQyLCA1NjA0OCwgNTYwNTQsIAorICAgIDU2MDYwLCA1NjA2NywgNTYwNzQsIDU2MDgxLCA1NjA4OCwgNTYwOTUsIDU2MTAyLCA1NjEwOSwgNTYxMTYsIDU2MTIzLCAKKyAgICA1NjEzMCwgNTYxMzgsIDU2MTQ2LCA1NjE1NCwgNTYxNjIsIDU2MTcwLCA1NjE3OCwgNTYxODYsIDU2MTk0LCA1NjE5OCwgCisgICAgNTYyMDQsIDU2MjEwLCA1NjIxNCwgNTYyMjAsIDU2MjI2LCA1NjIzMiwgNTYyMzksIDU2MjQ2LCA1NjI1MywgNTYyNjAsIAorICAgIDU2MjY1LCA1NjI3MSwgNTYyNzcsIDU2Mjg0LCAwLCAwLCAwLCAwLCAwLCA1NjI5MSwgNTYyOTksIDU2MzA4LCA1NjMxNywgCisgICAgNTYzMjUsIDU2MzMxLCA1NjMzNiwgNTYzNDEsIDU2MzQ2LCA1NjM1MSwgNTYzNTYsIDU2MzYxLCA1NjM2NiwgNTYzNzEsIAorICAgIDU2Mzc2LCA1NjM4MSwgNTYzODYsIDU2MzkxLCA1NjM5NiwgNTY0MDEsIDU2NDA2LCA1NjQxMSwgNTY0MTYsIDU2NDIxLCAKKyAgICA1NjQyNiwgNTY0MzEsIDU2NDM2LCA1NjQ0MSwgNTY0NDYsIDU2NDUxLCA1NjQ1NiwgNTY0NjEsIDU2NDY2LCA1NjQ3MSwgCisgICAgNTY0NzYsIDU2NDgxLCA1NjQ4NiwgNTY0OTEsIDU2NDk2LCA1NjUwMSwgNTY1MDYsIDU2NTExLCA1NjUxNiwgNTY1MjEsIAorICAgIDU2NTI2LCAwLCA1NjUzMSwgMCwgMCwgMCwgMCwgMCwgNTY1MzYsIDAsIDAsIDU2NTQxLCA1NjU0NSwgNTY1NTAsIDU2NTU1LCAKKyAgICA1NjU2MCwgNTY1NjUsIDU2NTc0LCA1NjU3OSwgNTY1ODQsIDU2NTg5LCA1NjU5NCwgNTY1OTksIDU2NjA0LCA1NjYwOSwgCisgICAgNTY2MTQsIDU2NjIxLCA1NjYyNiwgNTY2MzEsIDU2NjQwLCA1NjY0NywgNTY2NTIsIDU2NjU3LCA1NjY2MiwgNTY2NjksIAorICAgIDU2Njc0LCA1NjY4MSwgNTY2ODYsIDU2NjkxLCA1NjY5OCwgNTY3MDUsIDU2NzEwLCA1NjcxNSwgNTY3MjAsIDU2NzI3LCAKKyAgICA1NjczNCwgNTY3MzksIDU2NzQ0LCA1Njc0OSwgNTY3NTQsIDU2NzU5LCA1Njc2NiwgNTY3NzMsIDU2Nzc4LCA1Njc4MywgCisgICAgNTY3ODgsIDU2NzkzLCA1Njc5OCwgNTY4MDMsIDU2ODA4LCA1NjgxMywgNTY4MTgsIDU2ODIzLCA1NjgyOCwgNTY4MzUsIAorICAgIDU2ODQwLCA1Njg0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTY4NTAsIDU2ODU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1Njg2MiwgNTY4NjcsIDU2ODcxLCA1Njg3NSwgNTY4NzksIDU2ODgzLCA1Njg4NywgNTY4OTEsIAorICAgIDU2ODk1LCA1Njg5OSwgNTY5MDMsIDU2OTA3LCA1NjkxMywgNTY5MTcsIDU2OTIxLCA1NjkyNSwgNTY5MjksIDU2OTMzLCAKKyAgICA1NjkzNywgNTY5NDEsIDU2OTQ1LCA1Njk0OSwgNTY5NTMsIDU2OTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1Njk2MSwgNTY5NjUsIDU2OTY5LCA1Njk3MywgNTY5NzcsIDU2OTgxLCA1Njk4NSwgMCwgNTY5ODksIDU2OTkzLCA1Njk5NywgCisgICAgNTcwMDEsIDU3MDA1LCA1NzAwOSwgNTcwMTMsIDAsIDU3MDE3LCA1NzAyMSwgNTcwMjUsIDU3MDI5LCA1NzAzMywgNTcwMzcsIAorICAgIDU3MDQxLCAwLCA1NzA0NSwgNTcwNDksIDU3MDUzLCA1NzA1NywgNTcwNjEsIDU3MDY1LCA1NzA2OSwgMCwgNTcwNzMsIAorICAgIDU3MDc3LCA1NzA4MSwgNTcwODUsIDU3MDg5LCA1NzA5MywgNTcwOTcsIDAsIDU3MTAxLCA1NzEwNSwgNTcxMDksIDU3MTEzLCAKKyAgICA1NzExNywgNTcxMjEsIDU3MTI1LCAwLCA1NzEyOSwgNTcxMzMsIDU3MTM3LCA1NzE0MSwgNTcxNDUsIDU3MTQ5LCA1NzE1MywgCisgICAgMCwgNTcxNTcsIDU3MTYxLCA1NzE2NSwgNTcxNjksIDU3MTczLCA1NzE3NywgNTcxODEsIDAsIDU3MTg1LCA1NzE5MCwgCisgICAgNTcxOTUsIDU3MjAwLCA1NzIwNSwgNTcyMTAsIDU3MjE1LCA1NzIxOSwgNTcyMjQsIDU3MjI5LCA1NzIzNCwgNTcyMzgsIAorICAgIDU3MjQzLCA1NzI0OCwgNTcyNTMsIDU3MjU4LCA1NzI2MiwgNTcyNjcsIDU3MjcyLCA1NzI3NywgNTcyODIsIDU3Mjg3LCAKKyAgICA1NzI5MiwgNTcyOTYsIDU3MzAxLCA1NzMwNiwgNTczMTMsIDU3MzE4LCA1NzMyMywgNTczMjksIDU3MzM2LCA1NzM0MywgCisgICAgNTczNTIsIDU3MzU5LCA1NzM2OCwgNTczNzIsIDU3Mzc2LCA1NzM4MiwgNTczODgsIDU3Mzk0LCA1NzQwMiwgNTc0MDgsIAorICAgIDU3NDEyLCA1NzQxNiwgNTc0MjAsIDU3NDI2LCA1NzQzMiwgNTc0MzYsIDU3NDM4LCA1NzQ0MiwgNTc0NDgsIDU3NDUwLCAKKyAgICA1NzQ1NCwgNTc0NTgsIDU3NDYyLCA1NzQ2OCwgNTc0NzMsIDU3NDc3LCA1NzQ4MSwgNTc0ODYsIDU3NDkyLCA1NzQ5NywgCisgICAgNTc1MDIsIDU3NTA3LCA1NzUxMiwgNTc1MTksIDU3NTI2LCA1NzUzMSwgNTc1MzYsIDU3NTQxLCA1NzU0NiwgNTc1NTEsIAorICAgIDU3NTU2LCA1NzU2MCwgNTc1NjQsIDU3NTcxLCA1NzU3OCwgNTc1ODQsIDU3NTg4LCA1NzU5MywgNTc1OTUsIDU3NTk5LCAKKyAgICA1NzYwNywgNTc2MTEsIDU3NjE1LCA1NzYxOSwgNTc2MjMsIDU3NjI5LCA1NzYzNSwgNTc2MzksIDU3NjQ1LCA1NzY0OSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc2NTMsIDU3NjU3LCAKKyAgICA1NzY2MSwgNTc2NjYsIDU3NjcxLCA1NzY3NiwgNTc2ODAsIDU3Njg0LCA1NzY4OCwgNTc2OTMsIDU3Njk4LCA1NzcwMiwgCisgICAgNTc3MDYsIDU3NzEwLCA1NzcxNCwgNTc3MTksIDU3NzI0LCA1NzcyOSwgNTc3MzQsIDU3NzM4LCA1Nzc0MiwgNTc3NDcsIAorICAgIDU3NzUyLCA1Nzc1NywgNTc3NjIsIDU3NzY2LCAwLCA1Nzc3MCwgNTc3NzQsIDU3Nzc4LCA1Nzc4MiwgNTc3ODYsIDU3NzkwLCAKKyAgICA1Nzc5NCwgNTc3OTksIDU3ODA0LCA1NzgwOCwgNTc4MTMsIDU3ODE4LCA1NzgyNywgNTc4MzEsIDU3ODM1LCA1NzgzOSwgCisgICAgNTc4NDYsIDU3ODUwLCA1Nzg1NSwgNTc4NjAsIDU3ODY0LCA1Nzg2OCwgNTc4NzQsIDU3ODc5LCA1Nzg4NCwgNTc4ODksIAorICAgIDU3ODk0LCA1Nzg5OCwgNTc5MDIsIDU3OTA2LCA1NzkxMCwgNTc5MTQsIDU3OTE5LCA1NzkyNCwgNTc5MjgsIDU3OTMyLCAKKyAgICA1NzkzNywgNTc5NDIsIDU3OTQ3LCA1Nzk1MSwgNTc5NTUsIDU3OTYwLCA1Nzk2NSwgNTc5NzEsIDU3OTc3LCA1Nzk4MSwgCisgICAgNTc5ODcsIDU3OTkzLCA1Nzk5NywgNTgwMDMsIDU4MDA5LCA1ODAxNCwgNTgwMTksIDU4MDIzLCA1ODAyOSwgNTgwMzMsIAorICAgIDU4MDM3LCA1ODA0MywgNTgwNDksIDU4MDU0LCA1ODA1OSwgNTgwNjMsIDU4MDY3LCA1ODA3NSwgNTgwODEsIDU4MDg3LCAKKyAgICA1ODA5MywgNTgwOTgsIDU4MTAzLCA1ODEwOCwgNTgxMTQsIDU4MTE4LCA1ODEyNCwgNTgxMjgsIDU4MTMyLCA1ODEzOCwgCisgICAgNTgxNDQsIDU4MTUwLCA1ODE1NiwgNTgxNjIsIDU4MTY4LCA1ODE3NCwgNTgxODAsIDU4MTg2LCA1ODE5MiwgNTgxOTgsIAorICAgIDU4MjA0LCA1ODIwOCwgNTgyMTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU4MjIwLCA1ODIyMywgCisgICAgNTgyMjcsIDU4MjMxLCA1ODIzNSwgNTgyMzksIDU4MjQyLCA1ODI0NSwgNTgyNDksIDU4MjUzLCA1ODI1NywgNTgyNjEsIAorICAgIDU4MjY0LCA1ODI2OSwgNTgyNzMsIDU4Mjc3LCA1ODI4MSwgNTgyODYsIDU4MjkwLCA1ODI5NCwgNTgyOTgsIDU4MzAyLCAKKyAgICA1ODMwOCwgNTgzMTQsIDU4MzE4LCA1ODMyMiwgNTgzMjYsIDU4MzMwLCA1ODMzNCwgNTgzMzgsIDU4MzQyLCA1ODM0NiwgCisgICAgNTgzNTAsIDU4MzU0LCA1ODM1OCwgNTgzNjQsIDU4MzY4LCA1ODM3MiwgNTgzNzYsIDU4MzgwLCA1ODM4NCwgNTgzODgsIAorICAgIDU4MzkyLCA1ODM5NiwgNTg0MDAsIDU4NDA0LCA1ODQwOCwgNTg0MTIsIDU4NDE2LCA1ODQyMCwgNTg0MjQsIDU4NDI4LCAKKyAgICA1ODQzNCwgNTg0NDAsIDU4NDQ1LCA1ODQ1MCwgNTg0NTQsIDU4NDU4LCA1ODQ2MiwgNTg0NjYsIDU4NDcwLCA1ODQ3NCwgCisgICAgNTg0NzgsIDU4NDgyLCA1ODQ4NiwgNTg0OTAsIDU4NDk0LCA1ODQ5OCwgNTg1MDIsIDU4NTA2LCA1ODUxMCwgNTg1MTQsIAorICAgIDU4NTE4LCA1ODUyMiwgNTg1MjYsIDU4NTMwLCA1ODUzNCwgNTg1MzgsIDU4NTQyLCA1ODU0NiwgNTg1NTIsIDU4NTU2LCAKKyAgICA1ODU2MCwgNTg1NjQsIDU4NTY4LCA1ODU3MiwgNTg1NzYsIDU4NTgwLCA1ODU4NCwgNTg1ODksIDU4NTk2LCA1ODYwMCwgCisgICAgNTg2MDQsIDU4NjA4LCA1ODYxMiwgNTg2MTYsIDU4NjIwLCA1ODYyNCwgNTg2MjgsIDU4NjMyLCA1ODYzNiwgNTg2NDAsIAorICAgIDU4NjQ0LCA1ODY1MSwgNTg2NTUsIDU4NjYxLCA1ODY2NSwgNTg2NjksIDU4NjczLCA1ODY3NywgNTg2ODEsIDU4Njg0LCAKKyAgICA1ODY4OCwgNTg2OTIsIDU4Njk2LCA1ODcwMCwgNTg3MDQsIDU4NzA4LCA1ODcxMiwgNTg3MTYsIDU4NzIwLCA1ODcyNCwgCisgICAgNTg3MjgsIDU4NzMyLCA1ODczNiwgNTg3NDAsIDU4NzQ0LCA1ODc0OCwgNTg3NTIsIDU4NzU2LCA1ODc2MCwgNTg3NjQsIAorICAgIDU4NzY4LCA1ODc3MiwgNTg3NzYsIDU4NzgwLCA1ODc4NCwgNTg3ODgsIDU4NzkyLCA1ODc5NiwgNTg4MDAsIDU4ODA0LCAKKyAgICA1ODgwOCwgNTg4MTIsIDU4ODE4LCA1ODgyMiwgNTg4MjYsIDU4ODMwLCA1ODgzNCwgNTg4MzgsIDU4ODQyLCA1ODg0NiwgCisgICAgNTg4NTAsIDU4ODU0LCA1ODg1OCwgNTg4NjIsIDU4ODY2LCA1ODg3MCwgNTg4NzQsIDU4ODc4LCA1ODg4MiwgNTg4ODYsIAorICAgIDU4ODkwLCA1ODg5NCwgNTg4OTgsIDU4OTAyLCA1ODkwNiwgNTg5MTAsIDU4OTE0LCA1ODkxOCwgNTg5MjIsIDU4OTI2LCAKKyAgICA1ODkzNCwgNTg5MzgsIDU4OTQyLCA1ODk0NiwgNTg5NTAsIDU4OTU0LCA1ODk2MCwgNTg5NjQsIDU4OTY4LCA1ODk3MiwgCisgICAgNTg5NzYsIDU4OTgwLCA1ODk4NCwgNTg5ODgsIDU4OTkyLCA1ODk5NiwgNTkwMDAsIDU5MDA0LCA1OTAwOCwgNTkwMTIsIAorICAgIDU5MDE4LCA1OTAyMiwgNTkwMjYsIDU5MDMwLCA1OTAzNCwgNTkwMzgsIDU5MDQyLCA1OTA0NiwgNTkwNTAsIDU5MDU0LCAKKyAgICA1OTA1OCwgNTkwNjIsIDU5MDY2LCA1OTA3MCwgNTkwNzQsIDU5MDc4LCA1OTA4MiwgNTkwODYsIDU5MDkwLCA1OTA5NCwgCisgICAgNTkwOTgsIDU5MTAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1OTEwNiwgNTkxMTUsIDU5MTIzLCA1OTEzNSwgNTkxNDYsIDU5MTU0LCA1OTE2MywgNTkxNzIsIAorICAgIDU5MTgyLCA1OTE5NCwgNTkyMDYsIDU5MjE4LCAwLCAwLCAwLCAwLCA1OTIyNCwgNTkyMjcsIDU5MjMwLCA1OTIzNSwgCisgICAgNTkyMzgsIDU5MjQ1LCA1OTI0OSwgNTkyNTMsIDU5MjU3LCA1OTI2MSwgNTkyNjUsIDU5MjcwLCA1OTI3NSwgNTkyNzksIAorICAgIDU5MjgzLCA1OTI4OCwgNTkyOTMsIDU5Mjk4LCA1OTMwMywgNTkzMDYsIDU5MzA5LCA1OTMxNSwgNTkzMjEsIDU5MzI2LCAKKyAgICA1OTMzMSwgNTkzMzgsIDU5MzQ1LCA1OTM0OSwgNTkzNTMsIDU5MzU3LCA1OTM2NSwgNTkzNzEsIDU5Mzc4LCA1OTM4MywgCisgICAgNTkzODgsIDU5MzkzLCA1OTM5OCwgNTk0MDMsIDU5NDA4LCA1OTQxMywgNTk0MTgsIDU5NDIzLCA1OTQyOCwgNTk0MzMsIAorICAgIDU5NDM4LCA1OTQ0MywgNTk0NDgsIDU5NDU0LCA1OTQ1OSwgNTk0NjMsIDU5NDY5LCA1OTQ4MCwgNTk0OTAsIDU5NTA1LCAKKyAgICA1OTUxNSwgNTk1MTksIDU5NTI5LCA1OTUzNSwgNTk1NDEsIDU5NTQ3LCA1OTU1MiwgNTk1NTUsIDU5NTYwLCA1OTU2NCwgMCwgCisgICAgNTk1NzAsIDU5NTc0LCA1OTU3NywgNTk1ODEsIDU5NTg0LCA1OTU4OCwgNTk1OTEsIDU5NTk1LCA1OTU5OCwgNTk2MDIsIAorICAgIDU5NjA1LCA1OTYwOCwgNTk2MTIsIDU5NjE2LCA1OTYyMCwgNTk2MjQsIDU5NjI4LCA1OTYzMiwgNTk2MzYsIDU5NjQwLCAKKyAgICA1OTY0NCwgNTk2NDcsIDU5NjUxLCA1OTY1NSwgNTk2NTksIDU5NjYzLCA1OTY2NywgNTk2NzEsIDU5Njc1LCA1OTY3OSwgCisgICAgNTk2ODMsIDU5Njg3LCA1OTY5MSwgNTk2OTUsIDU5Njk5LCA1OTcwNCwgNTk3MDgsIDU5NzEyLCA1OTcxNiwgNTk3MjAsIAorICAgIDU5NzIzLCA1OTcyNywgNTk3MzAsIDU5NzM0LCA1OTczOCwgNTk3NDIsIDU5NzQ2LCA1OTc0OSwgNTk3NTMsIDU5NzU2LCAKKyAgICA1OTc2MCwgNTk3NjQsIDU5NzY4LCA1OTc3MiwgNTk3NzYsIDU5NzgwLCA1OTc4NCwgNTk3ODgsIDU5NzkyLCA1OTc5NiwgCisgICAgNTk4MDAsIDU5ODA0LCA1OTgwNywgNTk4MTEsIDU5ODE1LCA1OTgxOSwgNTk4MjMsIDU5ODI3LCA1OTgzMCwgNTk4MzUsIAorICAgIDU5ODM5LCA1OTg0NCwgNTk4NDgsIDU5ODUxLCA1OTg1NSwgNTk4NTksIDU5ODYzLCA1OTg2NywgNTk4NzIsIDU5ODc2LCAKKyAgICA1OTg4MCwgNTk4ODQsIDU5ODg4LCA1OTg5MiwgNTk4OTYsIDU5OTAwLCAwLCAwLCA1OTkwNSwgNTk5MTMsIDU5OTIxLCAKKyAgICA1OTkyOCwgNTk5MzUsIDU5OTM5LCA1OTk0NSwgNTk5NTAsIDU5OTU1LCA1OTk1OSwgNTk5NjIsIDU5OTY2LCA1OTk2OSwgCisgICAgNTk5NzMsIDU5OTc2LCA1OTk4MCwgNTk5ODMsIDU5OTg3LCA1OTk5MCwgNTk5OTMsIDU5OTk3LCA2MDAwMSwgNjAwMDUsIAorICAgIDYwMDA5LCA2MDAxMywgNjAwMTcsIDYwMDIxLCA2MDAyNSwgNjAwMjksIDYwMDMyLCA2MDAzNiwgNjAwNDAsIDYwMDQ0LCAKKyAgICA2MDA0OCwgNjAwNTIsIDYwMDU2LCA2MDA2MCwgNjAwNjQsIDYwMDY4LCA2MDA3MiwgNjAwNzYsIDYwMDgwLCA2MDA4NCwgCisgICAgNjAwODksIDYwMDkzLCA2MDA5NywgNjAxMDEsIDYwMTA1LCA2MDEwOCwgNjAxMTIsIDYwMTE1LCA2MDExOSwgNjAxMjMsIAorICAgIDYwMTI3LCA2MDEzMSwgNjAxMzQsIDYwMTM4LCA2MDE0MSwgNjAxNDUsIDYwMTQ5LCA2MDE1MywgNjAxNTcsIDYwMTYxLCAKKyAgICA2MDE2NSwgNjAxNjksIDYwMTczLCA2MDE3NywgNjAxODEsIDYwMTg1LCA2MDE4OSwgNjAxOTIsIDYwMTk2LCA2MDIwMCwgCisgICAgNjAyMDQsIDYwMjA4LCA2MDIxMiwgNjAyMTUsIDYwMjIwLCA2MDIyNCwgNjAyMjksIDYwMjMzLCA2MDIzNiwgNjAyNDAsIAorICAgIDYwMjQ0LCA2MDI0OCwgNjAyNTIsIDYwMjU3LCA2MDI2MSwgNjAyNjUsIDYwMjY5LCA2MDI3MywgNjAyNzcsIDYwMjgxLCAKKyAgICA2MDI4NSwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA2LCA2MDMxMSwgNjAzMTgsIDYwMzIyLCA2MDMyOCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNjAzMzMsIDYwMzM4LCA2MDM0MywgNjAzNDcsIDYwMzUyLCA2MDM1NywgNjAzNjIsIDYwMzY3LCAKKyAgICA2MDM3MSwgNjAzNzYsIDYwMzgxLCA2MDM4NiwgNjAzOTEsIDYwMzk2LCA2MDQwMSwgNjA0MDYsIDYwNDExLCA2MDQxNiwgCisgICAgNjA0MjAsIDYwNDI1LCA2MDQzMCwgNjA0MzUsIDYwNDM5LCA2MDQ0MywgNjA0NDcsIDYwNDUyLCA2MDQ1NywgNjA0NjIsIAorICAgIDYwNDY3LCA2MDQ3MiwgNjA0NzcsIDYwNDgyLCA2MDQ4NywgNjA0OTIsIDYwNDk3LCA2MDUwMSwgNjA1MDUsIDYwNTEwLCAKKyAgICA2MDUxNSwgNjA1MjAsIDYwNTI1LCAwLCAwLCAwLCA2MDUzMCwgNjA1MzQsIDYwNTM4LCA2MDU0MiwgNjA1NDYsIDYwNTUwLCAKKyAgICA2MDU1NCwgNjA1NTgsIDYwNTYyLCA2MDU2NiwgNjA1NzAsIDYwNTc0LCA2MDU3OCwgNjA1ODIsIDYwNTg2LCA2MDU5MCwgCisgICAgNjA1OTQsIDYwNTk4LCA2MDYwMiwgNjA2MDYsIDYwNjEwLCA2MDYxNCwgNjA2MTgsIDYwNjIyLCA2MDYyNiwgNjA2MzAsIAorICAgIDYwNjM0LCA2MDYzOCwgNjA2NDIsIDYwNjQ2LCA2MDY1MCwgNjA2NTMsIDYwNjU3LCA2MDY2MCwgNjA2NjQsIDYwNjY4LCAKKyAgICA2MDY3MSwgNjA2NzUsIDYwNjc5LCA2MDY4MiwgNjA2ODYsIDYwNjkwLCA2MDY5NCwgNjA2OTgsIDYwNzAxLCA2MDcwNSwgCisgICAgNjA3MDksIDYwNzEzLCA2MDcxNywgNjA3MjEsIDYwNzI1LCA2MDcyOCwgNjA3MzEsIDYwNzM1LCA2MDczOSwgNjA3NDMsIAorICAgIDYwNzQ3LCA2MDc1MSwgNjA3NTUsIDYwNzU5LCA2MDc2MywgNjA3NjcsIDYwNzcxLCA2MDc3NSwgNjA3NzksIDYwNzgzLCAKKyAgICA2MDc4NywgNjA3OTEsIDYwNzk1LCA2MDc5OSwgNjA4MDMsIDYwODA3LCA2MDgxMSwgNjA4MTUsIDYwODE5LCA2MDgyMywgCisgICAgNjA4MjcsIDYwODMxLCA2MDgzNSwgNjA4MzksIDYwODQzLCA2MDg0NywgNjA4NTEsIDYwODU1LCA2MDg1OSwgNjA4NjMsIAorICAgIDYwODY3LCA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4MywgNjA4ODcsIDYwODkxLCA2MDg5NSwgMCwgNjA4OTksIDYwOTA1LCAKKyAgICA2MDkxMSwgNjA5MTYsIDYwOTIxLCA2MDkyNiwgNjA5MzIsIDYwOTM4LCA2MDk0NCwgNjA5NTAsIDYwOTU2LCA2MDk2MiwgCisgICAgNjA5NjgsIDYwOTc0LCA2MDk4MCwgNjA5ODYsIDYwOTkyLCA2MDk5NywgNjEwMDIsIDYxMDA3LCA2MTAxMiwgNjEwMTcsIAorICAgIDYxMDIyLCA2MTAyNywgNjEwMzIsIDYxMDM3LCA2MTA0MiwgNjEwNDcsIDYxMDUyLCA2MTA1NywgNjEwNjIsIDYxMDY3LCAKKyAgICA2MTA3MiwgNjEwNzcsIDYxMDgyLCA2MTA4NywgNjEwOTIsIDYxMDk4LCA2MTEwNCwgNjExMTAsIDYxMTE2LCA2MTEyMSwgCisgICAgNjExMjYsIDAsIDAsIDAsIDAsIDAsIDYxMTMxLCA2MTEzNiwgNjExNDEsIDYxMTQ2LCA2MTE1MSwgNjExNTYsIDYxMTYxLCAKKyAgICA2MTE2NiwgNjExNzEsIDYxMTc2LCA2MTE4MSwgNjExODYsIDYxMTkxLCA2MTE5NiwgNjEyMDEsIDYxMjA2LCA2MTIxMSwgCisgICAgNjEyMTYsIDYxMjIxLCA2MTIyNiwgNjEyMzEsIDYxMjM2LCA2MTI0MSwgNjEyNDYsIDYxMjUxLCA2MTI1NiwgNjEyNjEsIAorICAgIDYxMjY2LCA2MTI3MSwgNjEyNzYsIDYxMjgxLCA2MTI4NiwgNjEyOTEsIDYxMjk2LCA2MTMwMSwgNjEzMDYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxMzExLCA2MTMxNiwgNjEzMjEsIDYxMzI2LCA2MTMzMCwgNjEzMzUsIAorICAgIDYxMzM5LCA2MTM0NCwgNjEzNDksIDYxMzU0LCA2MTM1OSwgNjEzNjQsIDYxMzY4LCA2MTM3MywgNjEzNzgsIDYxMzgzLCAKKyAgICA2MTM4OCwgNjEzOTIsIDYxMzk2LCA2MTQwMCwgNjE0MDQsIDYxNDA4LCA2MTQxMiwgNjE0MTYsIDYxNDIwLCA2MTQyNCwgCisgICAgNjE0MjgsIDYxNDMyLCA2MTQzNiwgNjE0NDAsIDYxNDQ0LCA2MTQ0OSwgNjE0NTQsIDYxNDU5LCA2MTQ2NCwgNjE0NjksIAorICAgIDYxNDc0LCA2MTQ3OSwgNjE0ODQsIDYxNDg5LCA2MTQ5NCwgNjE0OTksIDYxNTA0LCA2MTUwOSwgNjE1MTQsIDYxNTE5LCAKKyAgICA2MTUyNSwgMCwgNjE1MzIsIDYxNTM1LCA2MTUzOCwgNjE1NDEsIDYxNTQ0LCA2MTU0NywgNjE1NTAsIDYxNTUzLCA2MTU1NiwgCisgICAgNjE1NTksIDYxNTYzLCA2MTU2NywgNjE1NzEsIDYxNTc1LCA2MTU3OSwgNjE1ODMsIDYxNTg3LCA2MTU5MSwgNjE1OTUsIAorICAgIDYxNTk5LCA2MTYwMywgNjE2MDcsIDYxNjExLCA2MTYxNSwgNjE2MTksIDYxNjIzLCA2MTYyNywgNjE2MzEsIDYxNjM1LCAKKyAgICA2MTYzOSwgNjE2NDMsIDYxNjQ3LCA2MTY1MSwgNjE2NTUsIDYxNjU5LCA2MTY2MywgNjE2NjcsIDYxNjcxLCA2MTY3NSwgCisgICAgNjE2NzksIDYxNjgzLCA2MTY5MiwgNjE3MDEsIDYxNzEwLCA2MTcxOSwgNjE3MjgsIDYxNzM3LCA2MTc0NiwgNjE3NTUsIAorICAgIDYxNzU4LCA2MTc2MywgNjE3NjgsIDYxNzczLCA2MTc3OCwgNjE3ODMsIDYxNzg4LCA2MTc5MywgNjE3OTgsIDYxODAzLCAKKyAgICA2MTgwNywgNjE4MTIsIDYxODE3LCA2MTgyMiwgNjE4MjcsIDYxODMyLCA2MTgzNiwgNjE4NDAsIDYxODQ0LCA2MTg0OCwgCisgICAgNjE4NTIsIDYxODU2LCA2MTg2MCwgNjE4NjQsIDYxODY4LCA2MTg3MiwgNjE4NzYsIDYxODgwLCA2MTg4NCwgNjE4ODgsIAorICAgIDYxODkzLCA2MTg5OCwgNjE5MDMsIDYxOTA4LCA2MTkxMywgNjE5MTgsIDYxOTIzLCA2MTkyOCwgNjE5MzMsIDYxOTM4LCAKKyAgICA2MTk0MywgNjE5NDgsIDYxOTUzLCA2MTk1OCwgNjE5NjQsIDYxOTcwLCA2MTk3NSwgNjE5ODAsIDYxOTgzLCA2MTk4NiwgCisgICAgNjE5ODksIDYxOTkyLCA2MTk5NSwgNjE5OTgsIDYyMDAxLCA2MjAwNCwgNjIwMDcsIDYyMDExLCA2MjAxNSwgNjIwMTksIAorICAgIDYyMDIzLCA2MjAyNywgNjIwMzEsIDYyMDM1LCA2MjAzOSwgNjIwNDMsIDYyMDQ3LCA2MjA1MSwgNjIwNTUsIDYyMDU5LCAKKyAgICA2MjA2MywgNjIwNjcsIDYyMDcxLCA2MjA3NSwgNjIwNzksIDYyMDgzLCA2MjA4NywgNjIwOTEsIDYyMDk1LCA2MjA5OSwgCisgICAgNjIxMDMsIDYyMTA3LCA2MjExMSwgNjIxMTUsIDYyMTE5LCA2MjEyMywgNjIxMjcsIDYyMTMxLCA2MjEzNSwgNjIxMzksIAorICAgIDYyMTQzLCA2MjE0NywgNjIxNTEsIDYyMTU1LCA2MjE1OSwgNjIxNjMsIDYyMTY3LCA2MjE3MiwgNjIxNzcsIDYyMTgyLCAKKyAgICA2MjE4NywgNjIxOTEsIDYyMTk2LCA2MjIwMSwgNjIyMDYsIDYyMjExLCA2MjIxNiwgNjIyMjEsIDYyMjI2LCA2MjIzMSwgCisgICAgNjIyMzYsIDYyMjQwLCA2MjI0NywgNjIyNTQsIDYyMjYxLCA2MjI2OCwgNjIyNzUsIDYyMjgyLCA2MjI4OSwgNjIyOTYsIAorICAgIDYyMzAzLCA2MjMxMCwgNjIzMTcsIDYyMzI0LCA2MjMyNywgNjIzMzAsIDYyMzMzLCA2MjMzOCwgNjIzNDEsIDYyMzQ0LCAKKyAgICA2MjM0NywgNjIzNTAsIDYyMzUzLCA2MjM1NiwgNjIzNjAsIDYyMzY0LCA2MjM2OCwgNjIzNzIsIDYyMzc1LCA2MjM3OSwgCisgICAgNjIzODMsIDYyMzg3LCA2MjM5MSwgNjIzOTUsIDYyMzk5LCA2MjQwMywgNjI0MDcsIDYyNDEwLCA2MjQxMywgNjI0MTcsIAorICAgIDYyNDIxLCA2MjQyNSwgNjI0MjksIDYyNDMyLCA2MjQzNiwgNjI0NDAsIDYyNDQ0LCA2MjQ0OCwgNjI0NTEsIDYyNDU1LCAKKyAgICA2MjQ1OSwgNjI0NjMsIDYyNDY3LCA2MjQ3MCwgNjI0NzQsIDYyNDc4LCA2MjQ4MSwgNjI0ODUsIDYyNDg5LCA2MjQ5MywgCisgICAgNjI0OTcsIDYyNTAxLCA2MjUwNSwgNjI1MDksIDAsIDYyNTEzLCA2MjUxNiwgNjI1MTksIDYyNTIyLCA2MjUyNSwgNjI1MjgsIAorICAgIDYyNTMxLCA2MjUzNCwgNjI1MzcsIDYyNTQwLCA2MjU0MywgNjI1NDYsIDYyNTQ5LCA2MjU1MiwgNjI1NTUsIDYyNTU4LCAKKyAgICA2MjU2MSwgNjI1NjQsIDYyNTY3LCA2MjU3MCwgNjI1NzMsIDYyNTc2LCA2MjU3OSwgNjI1ODIsIDYyNTg1LCA2MjU4OCwgCisgICAgNjI1OTEsIDYyNTk0LCA2MjU5NywgNjI2MDAsIDYyNjAzLCA2MjYwNiwgNjI2MDksIDYyNjEyLCA2MjYxNSwgNjI2MTgsIAorICAgIDYyNjIxLCA2MjYyNCwgNjI2MjcsIDYyNjMwLCA2MjYzMywgNjI2MzYsIDYyNjM5LCA2MjY0MiwgNjI2NDUsIDYyNjQ4LCAKKyAgICA2MjY1MSwgNjI2NTQsIDYyNjU3LCA2MjY2MCwgNjI2NjMsIDYyNjY2LCA2MjY2OSwgNjI2NzIsIDYyNjc1LCA2MjY3OCwgCisgICAgNjI2ODEsIDYyNjg0LCA2MjY4NywgNjI2OTAsIDYyNjkzLCA2MjY5NiwgNjI2OTksIDYyNzAyLCA2MjcwNSwgNjI3MDgsIAorICAgIDYyNzExLCA2MjcxNCwgNjI3MTcsIDYyNzIwLCA2MjcyMywgNjI3MjYsIDYyNzI5LCA2MjczMiwgNjI3MzUsIDYyNzM4LCAKKyAgICA2Mjc0MSwgNjI3NDQsIDYyNzQ3LCA2Mjc1MCwgNjI3NTMsIDYyNzU2LCA2Mjc1OSwgNjI3NjIsIDYyNzY1LCA2Mjc2OCwgCisgICAgNjI3NzEsIDYyNzc0LCA2Mjc3NywgNjI3ODYsIDYyNzk0LCA2MjgwMiwgNjI4MTAsIDYyODE4LCA2MjgyNiwgNjI4MzQsIAorICAgIDYyODQyLCA2Mjg1MCwgNjI4NTgsIDYyODY3LCA2Mjg3NiwgNjI4ODUsIDYyODk0LCA2MjkwMywgNjI5MTIsIDYyOTIxLCAKKyAgICA2MjkzMCwgNjI5MzksIDYyOTQ4LCA2Mjk1NywgNjI5NjYsIDYyOTc1LCA2Mjk4NCwgNjI5OTMsIDYyOTk2LCA2Mjk5OSwgCisgICAgNjMwMDIsIDYzMDA0LCA2MzAwNywgNjMwMTAsIDYzMDEzLCA2MzAxOCwgNjMwMjMsIDYzMDI2LCA2MzAzMywgNjMwNDAsIAorICAgIDYzMDQ3LCA2MzA1NCwgNjMwNTcsIDYzMDYyLCA2MzA2NCwgNjMwNjgsIDYzMDcwLCA2MzA3MiwgNjMwNzUsIDYzMDc4LCAKKyAgICA2MzA4MSwgNjMwODQsIDYzMDg3LCA2MzA5MCwgNjMwOTMsIDYzMDk4LCA2MzEwMywgNjMxMDYsIDYzMTA5LCA2MzExMiwgCisgICAgNjMxMTUsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIDYzMTI4LCA2MzEzMSwgNjMxMzQsIDYzMTM3LCA2MzE0MCwgNjMxNDMsIAorICAgIDYzMTQ3LCA2MzE1MCwgNjMxNTMsIDYzMTU2LCA2MzE2MSwgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCAKKyAgICA2MzE5MSwgNjMxOTYsIDYzMjAyLCA2MzIxMCwgNjMyMTIsIDYzMjE1LCA2MzIxOCwgNjMyMjEsIDYzMjI0LCA2MzIzMCwgCisgICAgNjMyMzgsIDYzMjQxLCA2MzI0NCwgNjMyNDksIDYzMjUyLCA2MzI1NSwgNjMyNTgsIDYzMjYzLCA2MzI2NiwgNjMyNjksIAorICAgIDYzMjc0LCA2MzI3NywgNjMyODAsIDYzMjg1LCA2MzI4OCwgNjMyOTEsIDYzMjk2LCA2MzMwMSwgNjMzMDYsIDYzMzA5LCAKKyAgICA2MzMxMiwgNjMzMTUsIDYzMzE4LCA2MzMyNCwgNjMzMjcsIDYzMzMwLCA2MzMzMywgNjMzMzUsIDYzMzM4LCA2MzM0MSwgCisgICAgNjMzNDQsIDYzMzQ5LCA2MzM1MiwgNjMzNTUsIDYzMzU4LCA2MzM2MSwgNjMzNjQsIDYzMzY5LCA2MzM3MiwgNjMzNzUsIAorICAgIDYzMzc4LCA2MzM4MSwgNjMzODQsIDYzMzg3LCA2MzM5MCwgNjMzOTMsIDYzMzk2LCA2MzQwMSwgNjM0MDUsIDYzNDEzLCAKKyAgICA2MzQyMSwgNjM0MjksIDYzNDM3LCA2MzQ0NSwgNjM0NTMsIDYzNDYxLCA2MzQ2OSwgNjM0NzcsIDYzNDg2LCA2MzQ5NSwgCisgICAgNjM1MDQsIDYzNTEzLCA2MzUyMiwgNjM1MzEsIDYzNTQwLCA2MzU0OSwgNjM1NTgsIDYzNTY3LCA2MzU3NiwgNjM1ODUsIAorICAgIDYzNTk0LCA2MzYwMywgNjM2MTIsIDYzNjIxLCA2MzYzMCwgNjM2MzksIDYzNjQ4LCA2MzY1NywgNjM2NjYsIDYzNjc1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MzY3OCwgNjM2ODcsIDYzNjk2LCA2MzcwNywgCisgICAgNjM3MTQsIDYzNzE5LCA2MzcyNCwgNjM3MzEsIDYzNzM4LCA2Mzc0NCwgNjM3NDksIDYzNzU0LCA2Mzc1OSwgNjM3NjQsIAorICAgIDYzNzcxLCA2Mzc3NiwgNjM3ODEsIDYzNzg2LCA2Mzc5NywgNjM4MDIsIDYzODA3LCA2MzgxNCwgNjM4MTksIDYzODI2LCAKKyAgICA2MzgzMSwgNjM4MzYsIDYzODQzLCA2Mzg1MCwgNjM4NTcsIDYzODY2LCA2Mzg3NSwgNjM4ODAsIDYzODg1LCA2Mzg5MCwgCisgICAgNjM4OTcsIDYzOTAyLCA2MzkxMiwgNjM5MTksIDYzOTI0LCA2MzkyOSwgNjM5MzQsIDYzOTM5LCA2Mzk0NCwgNjM5NDksIAorICAgIDYzOTU4LCA2Mzk2NSwgNjM5NzIsIDYzOTc3LCA2Mzk4NCwgNjM5ODksIDYzOTk2LCA2NDAwNSwgNjQwMTYsIDY0MDIxLCAKKyAgICA2NDAzMCwgNjQwMzUsIDY0MDQyLCA2NDA1MSwgNjQwNjAsIDY0MDY1LCA2NDA3MCwgNjQwNzcsIDY0MDgzLCA2NDA5MCwgCisgICAgNjQwOTcsIDY0MTAxLCA2NDEwNSwgNjQxMDgsIDY0MTEyLCA2NDExNiwgNjQxMjAsIDY0MTI0LCA2NDEyOCwgNjQxMzIsIAorICAgIDY0MTM2LCA2NDEzOSwgNjQxNDMsIDY0MTQ3LCA2NDE1MSwgNjQxNTUsIDY0MTU5LCA2NDE2MywgNjQxNjYsIDY0MTcwLCAKKyAgICA2NDE3NCwgNjQxNzcsIDY0MTgxLCA2NDE4NSwgNjQxODksIDY0MTkzLCA2NDE5NywgNjQyMDEsIDY0MjA1LCA2NDIwOSwgCisgICAgNjQyMTMsIDY0MjE3LCA2NDIyMSwgNjQyMjUsIDY0MjI5LCA2NDIzMywgNjQyMzcsIDY0MjQxLCA2NDI0NSwgNjQyNDksIAorICAgIDY0MjUzLCA2NDI1NywgNjQyNjEsIDY0MjY1LCA2NDI2OSwgNjQyNzMsIDY0Mjc3LCA2NDI4MSwgNjQyODUsIDY0Mjg5LCAKKyAgICA2NDI5MywgNjQyOTcsIDY0MzAxLCA2NDMwNSwgNjQzMDksIDY0MzEzLCA2NDMxNywgNjQzMjEsIDY0MzI1LCA2NDMyOSwgCisgICAgNjQzMzMsIDY0MzM3LCA2NDM0MSwgNjQzNDUsIDY0MzQ5LCA2NDM1MywgNjQzNTYsIDY0MzYwLCA2NDM2NCwgNjQzNjgsIAorICAgIDY0MzcyLCA2NDM3NiwgNjQzODAsIDY0Mzg0LCA2NDM4OCwgNjQzOTIsIDY0Mzk2LCA2NDQwMCwgNjQ0MDQsIDY0NDA4LCAKKyAgICA2NDQxMiwgNjQ0MTYsIDY0NDIwLCA2NDQyNCwgNjQ0MjgsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgCisgICAgNjQ0NTIsIDY0NDU2LCA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIAorICAgIDY0NDkyLCA2NDQ5NiwgNjQ1MDAsIDY0NTA0LCA2NDUwOCwgNjQ1MTIsIDY0NTE2LCA2NDUyMCwgNjQ1MjQsIDY0NTI4LCAKKyAgICA2NDUzMiwgNjQ1MzYsIDY0NTQwLCA2NDU0NCwgNjQ1NDgsIDY0NTUyLCA2NDU1NiwgNjQ1NjAsIDY0NTY0LCA2NDU2OCwgCisgICAgNjQ1NzIsIDY0NTc2LCA2NDU4MCwgNjQ1ODQsIDY0NTg4LCA2NDU5MiwgNjQ1OTYsIDY0NjAwLCA2NDYwNCwgNjQ2MDgsIAorICAgIDY0NjEyLCA2NDYxNiwgNjQ2MjAsIDY0NjI0LCA2NDYyOCwgNjQ2MzIsIDY0NjM2LCA2NDY0MCwgNjQ2NDQsIDY0NjQ4LCAKKyAgICA2NDY1MiwgNjQ2NTYsIDY0NjYwLCA2NDY2NCwgNjQ2NjgsIDY0NjcyLCA2NDY3NiwgNjQ2ODAsIDY0Njg0LCA2NDY4OCwgCisgICAgNjQ2OTIsIDY0Njk2LCA2NDcwMCwgNjQ3MDQsIDY0NzA4LCA2NDcxMiwgNjQ3MTYsIDY0NzIwLCA2NDcyNCwgNjQ3MjgsIAorICAgIDY0NzMyLCA2NDczNiwgNjQ3NDAsIDY0NzQ0LCA2NDc0OCwgNjQ3NTIsIDY0NzU2LCA2NDc2MCwgNjQ3NjQsIDY0NzY4LCAKKyAgICA2NDc3MiwgNjQ3NzYsIDY0NzgwLCA2NDc4NCwgNjQ3ODgsIDY0NzkyLCA2NDc5NiwgNjQ4MDAsIDY0ODA0LCA2NDgwOCwgCisgICAgNjQ4MTIsIDY0ODE2LCA2NDgyMCwgNjQ4MjQsIDY0ODI3LCA2NDgzMSwgNjQ4MzUsIDY0ODM5LCA2NDg0MywgNjQ4NDcsIAorICAgIDY0ODUxLCA2NDg1NSwgNjQ4NTksIDY0ODYzLCA2NDg2NywgNjQ4NzEsIDY0ODc1LCA2NDg3OSwgNjQ4ODMsIDY0ODg3LCAKKyAgICA2NDg5MSwgNjQ4OTUsIDY0ODk5LCA2NDkwMywgNjQ5MDcsIDY0OTExLCA2NDkxNSwgNjQ5MTksIDY0OTIzLCA2NDkyNywgCisgICAgNjQ5MzEsIDY0OTM1LCA2NDkzOSwgNjQ5NDMsIDY0OTQ3LCA2NDk1MSwgNjQ5NTUsIDY0OTU5LCA2NDk2MywgNjQ5NjcsIAorICAgIDY0OTcxLCA2NDk3NSwgNjQ5NzksIDY0OTgzLCA2NDk4NywgNjQ5OTEsIDY0OTk1LCA2NDk5OSwgNjUwMDMsIDY1MDA3LCAKKyAgICA2NTAxMSwgNjUwMTUsIDY1MDE5LCA2NTAyMywgNjUwMjcsIDY1MDMxLCA2NTAzNSwgNjUwMzksIDY1MDQzLCA2NTA0NywgCisgICAgNjUwNTEsIDY1MDU1LCA2NTA1OSwgNjUwNjMsIDY1MDY3LCA2NTA3MSwgNjUwNzUsIDY1MDc5LCA2NTA4MywgNjUwODcsIAorICAgIDY1MDkxLCA2NTA5NSwgNjUwOTksIDY1MTAzLCA2NTEwNywgNjUxMTEsIDY1MTE1LCA2NTExOSwgNjUxMjMsIDY1MTI3LCAKKyAgICA2NTEzMSwgNjUxMzUsIDY1MTM5LCA2NTE0MywgNjUxNDcsIDY1MTUxLCA2NTE1NSwgNjUxNTksIDY1MTYzLCA2NTE2NywgCisgICAgNjUxNzEsIDY1MTc1LCA2NTE3OSwgNjUxODMsIDY1MTg3LCA2NTE5MSwgNjUxOTUsIDY1MTk5LCA2NTIwMywgNjUyMDcsIAorICAgIDY1MjExLCA2NTIxNSwgNjUyMTksIDY1MjIzLCA2NTIyNywgNjUyMzEsIDY1MjM1LCA2NTIzOSwgNjUyNDMsIDY1MjQ3LCAKKyAgICA2NTI1MSwgNjUyNTUsIDY1MjU5LCA2NTI2MywgNjUyNjcsIDY1MjcxLCA2NTI3NSwgNjUyNzksIDY1MjgzLCA2NTI4NywgCisgICAgNjUyOTAsIDY1Mjk0LCA2NTI5OCwgNjUzMDIsIDY1MzA2LCA2NTMxMCwgNjUzMTQsIDY1MzE4LCA2NTMyMiwgNjUzMjYsIAorICAgIDY1MzMwLCA2NTMzNCwgNjUzMzgsIDY1MzQyLCA2NTM0NiwgNjUzNTAsIDY1MzU0LCA2NTM1OCwgNjUzNjIsIDY1MzY2LCAKKyAgICA2NTM3MCwgNjUzNzQsIDY1Mzc4LCA2NTM4MiwgNjUzODYsIDY1MzkwLCA2NTM5NCwgNjUzOTgsIDY1NDAyLCA2NTQwNiwgCisgICAgNjU0MTAsIDY1NDE0LCA2NTQxOCwgNjU0MjIsIDY1NDI2LCA2NTQzMCwgNjU0MzQsIDY1NDM4LCA2NTQ0MiwgNjU0NDYsIAorICAgIDY1NDUwLCA2NTQ1NCwgNjU0NTgsIDY1NDYyLCA2NTQ2NiwgNjU0NzAsIDY1NDc0LCA2NTQ3OCwgNjU0ODIsIDY1NDg2LCAKKyAgICA2NTQ5MCwgNjU0OTQsIDY1NDk4LCA2NTUwMiwgNjU1MDYsIDY1NTEwLCA2NTUxNCwgNjU1MTgsIDY1NTIyLCA2NTUyNiwgCisgICAgNjU1MzAsIDY1NTM0LCA2NTUzOCwgNjU1NDIsIDY1NTQ2LCA2NTU1MCwgNjU1NTQsIDY1NTU4LCA2NTU2MiwgNjU1NjYsIAorICAgIDY1NTcwLCA2NTU3NCwgNjU1NzgsIDY1NTgyLCA2NTU4NiwgNjU1OTAsIDY1NTk0LCA2NTU5OCwgNjU2MDIsIDY1NjA2LCAKKyAgICA2NTYxMCwgNjU2MTQsIDY1NjE4LCA2NTYyMiwgNjU2MjYsIDY1NjMwLCA2NTYzNCwgNjU2MzgsIDY1NjQyLCA2NTY0NiwgCisgICAgNjU2NDksIDY1NjUzLCA2NTY1NywgNjU2NjEsIDY1NjY1LCA2NTY2OSwgNjU2NzMsIDY1Njc3LCA2NTY4MSwgNjU2ODUsIAorICAgIDY1Njg5LCA2NTY5MywgNjU2OTcsIDY1NzAxLCA2NTcwNSwgNjU3MDksIDY1NzEzLCA2NTcxNywgNjU3MjEsIDY1NzI1LCAKKyAgICA2NTcyOSwgNjU3MzMsIDY1NzM3LCA2NTc0MSwgNjU3NDUsIDY1NzQ5LCA2NTc1MywgNjU3NTcsIDY1NzYxLCA2NTc2NSwgCisgICAgNjU3NjksIDY1NzczLCA2NTc3NywgNjU3ODEsIDY1Nzg1LCA2NTc4OSwgNjU3OTMsIDY1Nzk3LCA2NTgwMSwgNjU4MDUsIAorICAgIDY1ODA5LCA2NTgxMywgNjU4MTcsIDY1ODIxLCA2NTgyNSwgNjU4MjksIDY1ODMzLCA2NTgzNywgNjU4NDEsIDY1ODQ1LCAKKyAgICA2NTg0OSwgNjU4NTMsIDY1ODU3LCA2NTg2MSwgNjU4NjUsIDY1ODY5LCA2NTg3MywgNjU4NzcsIDY1ODgxLCA2NTg4NSwgCisgICAgNjU4ODksIDY1ODkzLCA2NTg5NywgNjU5MDEsIDY1OTA1LCA2NTkwOSwgNjU5MTMsIDY1OTE3LCA2NTkyMSwgNjU5MjUsIAorICAgIDY1OTI5LCA2NTkzMywgNjU5MzcsIDY1OTQxLCA2NTk0NSwgNjU5NDksIDY1OTUzLCA2NTk1NywgNjU5NjEsIDY1OTY1LCAKKyAgICA2NTk2OSwgNjU5NzMsIDY1OTc3LCA2NTk4MSwgNjU5ODUsIDY1OTg5LCA2NTk5MywgNjU5OTcsIDY2MDAxLCA2NjAwNSwgCisgICAgNjYwMDksIDY2MDEzLCA2NjAxNywgNjYwMjEsIDY2MDI1LCA2NjAyOSwgNjYwMzMsIDY2MDM3LCA2NjA0MSwgNjYwNDUsIAorICAgIDY2MDQ5LCA2NjA1MywgNjYwNTcsIDY2MDYxLCA2NjA2NSwgNjYwNjksIDY2MDczLCA2NjA3NywgNjYwODEsIDY2MDg1LCAKKyAgICA2NjA4OSwgNjYwOTMsIDY2MDk3LCA2NjEwMSwgNjYxMDUsIDY2MTA5LCA2NjExMywgNjYxMTcsIDY2MTIxLCA2NjEyNSwgCisgICAgNjYxMjksIDY2MTMzLCA2NjEzNywgNjYxNDEsIDY2MTQ0LCA2NjE0OCwgNjYxNTIsIDY2MTU2LCA2NjE2MCwgNjYxNjQsIAorICAgIDY2MTY4LCA2NjE3MiwgNjYxNzYsIDY2MTgwLCA2NjE4NCwgNjYxODgsIDY2MTkyLCA2NjE5NiwgNjYyMDAsIDY2MjA0LCAKKyAgICA2NjIwOCwgNjYyMTIsIDY2MjE2LCA2NjIyMCwgNjYyMjQsIDY2MjI4LCA2NjIzMiwgNjYyMzYsIDY2MjQwLCA2NjI0NCwgCisgICAgNjYyNDgsIDY2MjUyLCA2NjI1NiwgNjYyNjAsIDY2MjY0LCA2NjI2OCwgNjYyNzIsIDY2Mjc2LCA2NjI4MCwgNjYyODQsIAorICAgIDY2Mjg4LCA2NjI5MiwgNjYyOTYsIDY2MzAwLCA2NjMwNCwgNjYzMDgsIDY2MzEyLCA2NjMxNiwgNjYzMjAsIDY2MzI0LCAKKyAgICA2NjMyOCwgNjYzMzIsIDY2MzM2LCA2NjM0MCwgNjYzNDQsIDY2MzQ4LCA2NjM1MiwgNjYzNTYsIDY2MzYwLCA2NjM2NCwgCisgICAgNjYzNjgsIDY2MzcyLCA2NjM3NiwgNjYzODAsIDY2Mzg0LCA2NjM4OCwgNjYzOTIsIDY2Mzk2LCA2NjQwMCwgNjY0MDQsIAorICAgIDY2NDA4LCA2NjQxMiwgNjY0MTYsIDY2NDIwLCA2NjQyNCwgNjY0MjgsIDY2NDMyLCA2NjQzNiwgNjY0NDAsIDY2NDQ0LCAKKyAgICA2NjQ0OCwgNjY0NTIsIDY2NDU2LCA2NjQ2MCwgNjY0NjQsIDY2NDY4LCA2NjQ3MiwgNjY0NzYsIDY2NDgwLCA2NjQ4NCwgCisgICAgNjY0ODgsIDY2NDkyLCA2NjQ5NiwgNjY1MDAsIDY2NTA0LCA2NjUwOCwgNjY1MTIsIDY2NTE2LCA2NjUyMCwgNjY1MjQsIAorICAgIDY2NTI4LCA2NjUzMiwgNjY1MzYsIDY2NTQwLCA2NjU0NCwgNjY1NDgsIDY2NTUyLCA2NjU1NiwgNjY1NjAsIDY2NTY0LCAKKyAgICA2NjU2OCwgNjY1NzIsIDY2NTc2LCA2NjU4MCwgNjY1ODQsIDY2NTg4LCA2NjU5MiwgNjY1OTYsIDY2NTk5LCA2NjYwMywgCisgICAgNjY2MDcsIDY2NjExLCA2NjYxNSwgNjY2MTksIDY2NjIzLCA2NjYyNywgNjY2MzEsIDY2NjM1LCA2NjYzOSwgNjY2NDMsIAorICAgIDY2NjQ3LCA2NjY1MSwgNjY2NTUsIDY2NjU5LCA2NjY2MywgNjY2NjcsIDY2NjcxLCA2NjY3NSwgNjY2NzksIDY2NjgzLCAKKyAgICA2NjY4NywgNjY2OTEsIDY2Njk1LCA2NjY5OSwgNjY3MDMsIDY2NzA3LCA2NjcxMSwgNjY3MTUsIDY2NzE5LCA2NjcyMywgCisgICAgNjY3MjcsIDY2NzMxLCA2NjczNSwgNjY3MzksIDY2NzQzLCA2Njc0NywgNjY3NTEsIDY2NzU1LCA2Njc1OSwgNjY3NjMsIAorICAgIDY2NzY3LCA2Njc3MSwgNjY3NzUsIDY2Nzc5LCA2Njc4MywgNjY3ODcsIDY2NzkxLCA2Njc5NSwgNjY3OTksIDY2ODAzLCAKKyAgICA2NjgwNywgNjY4MTEsIDY2ODE1LCA2NjgxOSwgNjY4MjMsIDY2ODI3LCA2NjgzMSwgNjY4MzUsIDY2ODM5LCA2Njg0MywgCisgICAgNjY4NDcsIDY2ODUxLCA2Njg1NSwgNjY4NTksIDY2ODYzLCA2Njg2NywgNjY4NzEsIDY2ODc1LCA2Njg3OSwgNjY4ODMsIAorICAgIDY2ODg3LCA2Njg5MSwgNjY4OTUsIDY2ODk5LCA2NjkwMywgNjY5MDcsIDY2OTExLCA2NjkxNSwgNjY5MTksIDY2OTIzLCAKKyAgICA2NjkyNywgNjY5MzEsIDY2OTM1LCA2NjkzOSwgNjY5NDMsIDY2OTQ3LCA2Njk1MSwgNjY5NTUsIDY2OTU5LCA2Njk2MywgCisgICAgNjY5NjcsIDY2OTcxLCA2Njk3NSwgNjY5NzksIDY2OTgzLCA2Njk4NywgNjY5OTEsIDY2OTk1LCA2Njk5OSwgNjcwMDMsIAorICAgIDY3MDA3LCA2NzAxMSwgNjcwMTUsIDY3MDE5LCA2NzAyMywgNjcwMjcsIDY3MDMxLCA2NzAzNSwgNjcwMzksIDY3MDQzLCAKKyAgICA2NzA0NywgNjcwNTEsIDY3MDU1LCA2NzA1OSwgNjcwNjMsIDY3MDY3LCA2NzA3MSwgNjcwNzUsIDY3MDc5LCA2NzA4MywgCisgICAgNjcwODcsIDY3MDkxLCA2NzA5NSwgNjcwOTksIDY3MTAzLCA2NzEwNywgNjcxMTEsIDY3MTE1LCA2NzExOSwgNjcxMjMsIAorICAgIDY3MTI3LCA2NzEzMSwgNjcxMzUsIDY3MTM5LCA2NzE0MywgNjcxNDcsIDY3MTUxLCA2NzE1NSwgNjcxNTksIDY3MTYzLCAKKyAgICA2NzE2NywgNjcxNzEsIDY3MTc1LCA2NzE3OSwgNjcxODMsIDY3MTg3LCA2NzE5MSwgNjcxOTUsIDY3MTk5LCA2NzIwMiwgCisgICAgNjcyMDYsIDY3MjEwLCA2NzIxNCwgNjcyMTgsIDY3MjIyLCA2NzIyNiwgNjcyMzAsIDY3MjMzLCA2NzIzNywgNjcyNDEsIAorICAgIDY3MjQ1LCA2NzI0OSwgNjcyNTMsIDY3MjU3LCA2NzI2MSwgNjcyNjUsIDY3MjY5LCA2NzI3MywgNjcyNzcsIDY3MjgxLCAKKyAgICA2NzI4NSwgNjcyODksIDY3MjkzLCA2NzI5NywgNjczMDEsIDY3MzA1LCA2NzMwOSwgNjczMTMsIDY3MzE3LCA2NzMyMSwgCisgICAgNjczMjUsIDY3MzI5LCA2NzMzMywgNjczMzcsIDY3MzQxLCA2NzM0NSwgNjczNDksIDY3MzUzLCA2NzM1NywgNjczNjEsIAorICAgIDY3MzY1LCA2NzM2OSwgNjczNzMsIDY3Mzc3LCA2NzM4MSwgNjczODUsIDY3Mzg5LCA2NzM5MywgNjczOTcsIDY3NDAxLCAKKyAgICA2NzQwNSwgNjc0MDksIDY3NDEzLCA2NzQxNywgNjc0MjEsIDY3NDI1LCA2NzQyOSwgNjc0MzMsIDY3NDM3LCA2NzQ0MSwgCisgICAgNjc0NDUsIDY3NDQ5LCA2NzQ1MywgNjc0NTcsIDY3NDYxLCA2NzQ2NSwgNjc0NjksIDY3NDczLCA2NzQ3NywgNjc0ODEsIAorICAgIDY3NDg1LCA2NzQ4OSwgNjc0OTMsIDY3NDk3LCA2NzUwMSwgNjc1MDUsIDY3NTA5LCA2NzUxMywgNjc1MTcsIDY3NTIxLCAKKyAgICA2NzUyNSwgNjc1MjksIDY3NTMzLCA2NzUzNywgNjc1NDEsIDY3NTQ1LCA2NzU0OSwgNjc1NTMsIDY3NTU3LCA2NzU2MSwgCisgICAgNjc1NjUsIDY3NTY5LCA2NzU3MywgNjc1NzcsIDY3NTgxLCA2NzU4NSwgNjc1ODksIDY3NTkzLCA2NzU5NywgNjc2MDEsIAorICAgIDY3NjA1LCA2NzYwOSwgNjc2MTMsIDY3NjE3LCA2NzYyMSwgNjc2MjUsIDY3NjI5LCA2NzYzMywgNjc2MzcsIDY3NjQxLCAKKyAgICA2NzY0NSwgNjc2NDksIDY3NjUzLCA2NzY1NywgNjc2NjEsIDY3NjY1LCA2NzY2OSwgNjc2NzMsIDY3Njc3LCA2NzY4MSwgCisgICAgNjc2ODUsIDY3Njg5LCA2NzY5MywgNjc2OTcsIDY3NzAxLCA2NzcwNSwgNjc3MDksIDY3NzEzLCA2NzcxNywgNjc3MjEsIAorICAgIDY3NzI1LCA2NzcyOSwgNjc3MzMsIDY3NzM3LCA2Nzc0MSwgNjc3NDUsIDY3NzQ5LCA2Nzc1MywgNjc3NTcsIDY3NzYxLCAKKyAgICA2Nzc2NSwgNjc3NjksIDY3NzczLCA2Nzc3NywgNjc3ODEsIDY3Nzg1LCA2Nzc4OSwgNjc3OTMsIDY3Nzk3LCA2NzgwMSwgCisgICAgNjc4MDUsIDY3ODA5LCA2NzgxMywgNjc4MTcsIDY3ODIxLCA2NzgyNSwgNjc4MjksIDY3ODMzLCA2NzgzNywgNjc4NDEsIAorICAgIDY3ODQ1LCA2Nzg0OSwgNjc4NTMsIDY3ODU3LCA2Nzg2MSwgNjc4NjUsIDY3ODY5LCA2Nzg3MywgNjc4NzcsIDY3ODgxLCAKKyAgICA2Nzg4NSwgNjc4ODksIDY3ODkzLCA2Nzg5NywgNjc5MDEsIDY3OTA1LCA2NzkwOSwgNjc5MTMsIDY3OTE3LCA2NzkyMSwgCisgICAgNjc5MjUsIDY3OTI5LCA2NzkzMywgNjc5MzcsIDY3OTQxLCA2Nzk0NSwgNjc5NDksIDY3OTUzLCA2Nzk1NywgNjc5NjAsIAorICAgIDY3OTY0LCA2Nzk2OCwgNjc5NzIsIDY3OTc2LCA2Nzk4MCwgNjc5ODQsIDY3OTg4LCA2Nzk5MiwgNjc5OTYsIDY4MDAwLCAKKyAgICA2ODAwNCwgNjgwMDgsIDY4MDEyLCA2ODAxNiwgNjgwMjAsIDY4MDI0LCA2ODAyOCwgNjgwMzIsIDY4MDM2LCA2ODA0MCwgCisgICAgNjgwNDQsIDY4MDQ4LCA2ODA1MiwgNjgwNTYsIDY4MDYwLCA2ODA2NCwgNjgwNjgsIDY4MDcyLCA2ODA3NiwgNjgwODAsIAorICAgIDY4MDg0LCA2ODA4OCwgNjgwOTIsIDY4MDk2LCA2ODEwMCwgNjgxMDQsIDY4MTA4LCA2ODExMiwgNjgxMTYsIDY4MTIwLCAKKyAgICA2ODEyNCwgNjgxMjgsIDY4MTMyLCA2ODEzNiwgNjgxNDAsIDY4MTQ0LCA2ODE0OCwgNjgxNTIsIDY4MTU2LCA2ODE2MCwgCisgICAgNjgxNjQsIDY4MTY4LCA2ODE3MiwgNjgxNzYsIDY4MTgwLCA2ODE4NCwgNjgxODgsIDY4MTkyLCA2ODE5NiwgNjgyMDAsIAorICAgIDY4MjA0LCA2ODIwOCwgNjgyMTIsIDY4MjE2LCA2ODIyMCwgNjgyMjQsIDY4MjI4LCA2ODIzMiwgNjgyMzYsIDY4MjQwLCAKKyAgICA2ODI0NCwgNjgyNDgsIDY4MjUyLCA2ODI1NiwgNjgyNjAsIDY4MjY0LCA2ODI2OCwgNjgyNzIsIDY4Mjc2LCA2ODI4MCwgCisgICAgNjgyODQsIDY4Mjg4LCA2ODI5MiwgNjgyOTYsIDY4MzAwLCA2ODMwNCwgNjgzMDgsIDY4MzEyLCA2ODMxNiwgNjgzMjAsIAorICAgIDY4MzI0LCA2ODMyOCwgNjgzMzIsIDY4MzM2LCA2ODM0MCwgNjgzNDQsIDY4MzQ4LCA2ODM1MiwgNjgzNTYsIDY4MzYwLCAKKyAgICA2ODM2NCwgNjgzNjgsIDY4MzcyLCA2ODM3NiwgNjgzODAsIDY4Mzg0LCA2ODM4OCwgNjgzOTIsIDY4Mzk2LCA2ODQwMCwgCisgICAgNjg0MDQsIDY4NDA4LCA2ODQxMiwgNjg0MTYsIDY4NDIwLCA2ODQyNCwgNjg0MjgsIDY4NDMyLCA2ODQzNiwgNjg0NDAsIAorICAgIDY4NDQ0LCA2ODQ0OCwgNjg0NTIsIDY4NDU2LCA2ODQ2MCwgNjg0NjQsIDY4NDY4LCA2ODQ3MiwgNjg0NzYsIDY4NDgwLCAKKyAgICA2ODQ4NCwgNjg0ODgsIDY4NDkyLCA2ODQ5NiwgNjg1MDAsIDY4NTA0LCA2ODUwOCwgNjg1MTIsIDY4NTE2LCA2ODUyMCwgCisgICAgNjg1MjQsIDY4NTI4LCA2ODUzMiwgNjg1MzYsIDY4NTQwLCA2ODU0NCwgNjg1NDgsIDY4NTUyLCA2ODU1NiwgNjg1NjAsIAorICAgIDY4NTY0LCA2ODU2OCwgNjg1NzIsIDY4NTc2LCA2ODU4MCwgNjg1ODQsIDY4NTg4LCA2ODU5MiwgNjg1OTYsIDY4NjAwLCAKKyAgICA2ODYwNCwgNjg2MDgsIDY4NjEyLCA2ODYxNiwgNjg2MjAsIDY4NjI0LCA2ODYyOCwgNjg2MzIsIDY4NjM2LCA2ODY0MCwgCisgICAgNjg2NDQsIDY4NjQ4LCA2ODY1MiwgNjg2NTYsIDY4NjYwLCA2ODY2NCwgNjg2NjgsIDY4NjcyLCA2ODY3NiwgNjg2ODAsIAorICAgIDY4Njg0LCA2ODY4OCwgNjg2OTIsIDY4Njk2LCA2ODcwMCwgNjg3MDQsIDY4NzA4LCA2ODcxMiwgNjg3MTYsIDY4NzIwLCAKKyAgICA2ODcyNCwgNjg3MjgsIDY4NzMyLCA2ODczNiwgNjg3NDAsIDAsIDAsIDAsIDY4NzQ0LCA2ODc0OCwgNjg3NTIsIDY4NzU2LCAKKyAgICA2ODc2MCwgNjg3NjQsIDY4NzY4LCA2ODc3MiwgNjg3NzYsIDY4NzgwLCA2ODc4NCwgNjg3ODgsIDY4NzkyLCA2ODc5NiwgCisgICAgNjg4MDAsIDY4ODA0LCA2ODgwOCwgNjg4MTIsIDY4ODE2LCA2ODgyMCwgNjg4MjQsIDY4ODI4LCA2ODgzMiwgNjg4MzYsIAorICAgIDY4ODQwLCA2ODg0NCwgNjg4NDgsIDY4ODUyLCA2ODg1NiwgNjg4NjAsIDY4ODY0LCA2ODg2OCwgNjg4NzIsIDY4ODc2LCAKKyAgICA2ODg4MCwgNjg4ODQsIDY4ODg4LCA2ODg5MiwgNjg4OTYsIDY4OTAwLCA2ODkwNCwgNjg5MDgsIDY4OTEyLCA2ODkxNiwgCisgICAgNjg5MjAsIDY4OTI0LCA2ODkyOCwgNjg5MzIsIDY4OTM2LCA2ODk0MCwgNjg5NDQsIDY4OTQ4LCA2ODk1MiwgNjg5NTYsIAorICAgIDY4OTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2ODk2NCwgNjg5NjksIDY4OTczLCA2ODk3OCwgNjg5ODMsIAorICAgIDY4OTg4LCA2ODk5MywgNjg5OTgsIDY5MDAyLCA2OTAwNywgNjkwMTIsIDY5MDE3LCA2OTAyMiwgNjkwMjcsIDY5MDMyLCAKKyAgICA2OTAzNywgNjkwNDEsIDY5MDQ1LCA2OTA1MCwgNjkwNTQsIDY5MDU5LCA2OTA2NCwgNjkwNjksIDY5MDczLCA2OTA3OCwgCisgICAgNjkwODMsIDY5MDg4LCA2OTA5MywgNjkwOTgsIDY5MTAyLCA2OTEwNywgNjkxMTEsIDY5MTE2LCA2OTEyMCwgNjkxMjUsIAorICAgIDY5MTI5LCA2OTEzMywgNjkxMzcsIDY5MTQyLCA2OTE0NywgNjkxNTIsIDY5MTYwLCA2OTE2OCwgNjkxNzYsIDY5MTg0LCAKKyAgICA2OTE5MSwgNjkxOTksIDY5MjA1LCA2OTIxMywgNjkyMTcsIDY5MjIxLCA2OTIyNSwgNjkyMjksIDY5MjMzLCA2OTIzNywgCisgICAgNjkyNDEsIDY5MjQ1LCA2OTI0OSwgNjkyNTMsIDY5MjU3LCA2OTI2MSwgNjkyNjUsIDY5MjY5LCA2OTI3MywgNjkyNzcsIAorICAgIDY5MjgxLCA2OTI4NSwgNjkyODksIDY5MjkzLCA2OTI5NywgNjkzMDEsIDY5MzA1LCA2OTMwOSwgNjkzMTMsIDY5MzE3LCAKKyAgICA2OTMyMSwgNjkzMjUsIDY5MzI5LCA2OTMzMywgNjkzMzcsIDY5MzQxLCA2OTM0NSwgNjkzNDksIDY5MzUzLCA2OTM1NywgCisgICAgNjkzNjAsIDY5MzY0LCA2OTM2OCwgNjkzNzIsIDY5Mzc2LCA2OTM4MCwgNjkzODQsIDY5Mzg4LCA2OTM5MiwgNjkzOTYsIAorICAgIDY5NDAwLCA2OTQwNCwgNjk0MDgsIDY5NDEyLCA2OTQxNiwgNjk0MjAsIDY5NDI0LCA2OTQyOCwgNjk0MzIsIDY5NDM2LCAKKyAgICA2OTQ0MCwgNjk0NDQsIDY5NDQ4LCA2OTQ1MiwgNjk0NTYsIDY5NDYwLCA2OTQ2NCwgNjk0NjgsIDY5NDcyLCA2OTQ3NiwgCisgICAgNjk0ODAsIDY5NDg0LCA2OTQ4OCwgNjk0OTIsIDY5NDk2LCA2OTUwMCwgNjk1MDQsIDY5NTA3LCA2OTUxMSwgNjk1MTUsIAorICAgIDY5NTE4LCA2OTUyMiwgNjk1MjYsIDY5NTMwLCA2OTUzMywgNjk1MzcsIDY5NTQxLCA2OTU0NSwgNjk1NDksIDY5NTUzLCAKKyAgICA2OTU1NywgNjk1NjEsIDY5NTY1LCA2OTU2OSwgNjk1NzMsIDY5NTc3LCA2OTU4MSwgNjk1ODUsIDY5NTg5LCA2OTU5MiwgCisgICAgNjk1OTYsIDY5NjAwLCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNSwgNjk2MTksIDY5NjIzLCA2OTYyNywgNjk2MzAsIAorICAgIDY5NjMzLCA2OTYzNywgNjk2NDEsIDY5NjQ1LCA2OTY0OCwgNjk2NTEsIDY5NjU1LCA2OTY1OSwgNjk2NjMsIDY5NjY3LCAKKyAgICA2OTY3MSwgNjk2NzUsIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIDY5NzAzLCA2OTcwNywgCisgICAgNjk3MTEsIDY5NzE1LCA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCA2OTc0MywgNjk3NDcsIAorICAgIDY5NzUxLCA2OTc1NSwgNjk3NTksIDY5NzYzLCA2OTc2NywgNjk3NzEsIDY5Nzc1LCA2OTc3OSwgNjk3ODMsIDY5Nzg3LCAKKyAgICA2OTc5MSwgNjk3OTUsIDY5Nzk5LCA2OTgwMiwgNjk4MDYsIDY5ODEwLCA2OTgxNCwgNjk4MTgsIDY5ODIyLCA2OTgyNiwgCisgICAgNjk4MzAsIDY5ODM0LCA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCA2OTg2MiwgNjk4NjYsIAorICAgIDY5ODcwLCA2OTg3NCwgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgNjk5MDIsIDY5OTA2LCAKKyAgICA2OTkxMCwgNjk5MTQsIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIDY5OTQyLCA2OTk0NiwgCisgICAgNjk5NDksIDY5OTUzLCA2OTk1NywgNjk5NjEsIDY5OTY1LCA2OTk2OSwgNjk5NzMsIDY5OTc3LCA2OTk4MSwgNjk5ODUsIAorICAgIDY5OTg5LCA2OTk5MywgNjk5OTcsIDcwMDAxLCA3MDAwNSwgNzAwMDksIDcwMDEzLCA3MDAxNiwgNzAwMjAsIDcwMDI0LCAKKyAgICA3MDAyOCwgNzAwMzIsIDcwMDM2LCA3MDA0MCwgNzAwNDQsIDcwMDQ4LCA3MDA1MiwgNzAwNTYsIDcwMDYwLCA3MDA2NCwgCisgICAgNzAwNjgsIDcwMDcyLCA3MDA3NiwgNzAwODAsIDcwMDg0LCA3MDA4OCwgNzAwOTIsIDcwMDk2LCA3MDEwMCwgNzAxMDMsIAorICAgIDcwMTA3LCA3MDExMSwgNzAxMTUsIDcwMTE5LCA3MDEyMywgNzAxMjcsIDcwMTMxLCA3MDEzNSwgNzAxMzksIDcwMTQzLCAKKyAgICA3MDE0NywgNzAxNTEsIDcwMTU1LCA3MDE1OSwgNzAxNjMsIDcwMTY3LCA3MDE3MSwgNzAxNzUsIDcwMTc5LCA3MDE4MywgCisgICAgNzAxODcsIDcwMTkxLCA3MDE5NSwgNzAxOTksIDcwMjAzLCA3MDIwNywgNzAyMTEsIDcwMjE1LCA3MDIxOSwgNzAyMjMsIAorICAgIDcwMjI3LCA3MDIzMSwgNzAyMzUsIDcwMjM5LCA3MDI0MywgNzAyNDcsIDcwMjUxLCA3MDI1NSwgNzAyNTksIDcwMjYzLCAKKyAgICA3MDI2NywgNzAyNzEsIDcwMjc1LCA3MDI3OCwgNzAyODMsIDcwMjg3LCA3MDI5MywgNzAyOTgsIDcwMzA0LCA3MDMwOCwgCisgICAgNzAzMTIsIDcwMzE2LCA3MDMyMCwgNzAzMjQsIDcwMzI4LCA3MDMzMiwgNzAzMzYsIDcwMzQwLCA3MDM0NCwgNzAzNDgsIAorICAgIDcwMzUyLCA3MDM1NiwgNzAzNjAsIDcwMzYzLCA3MDM2NiwgNzAzNjksIDcwMzcyLCA3MDM3NSwgNzAzNzgsIDcwMzgxLCAKKyAgICA3MDM4NCwgNzAzODcsIDcwMzkyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MDM5OCwgNzA0MDMsIDcwNDA4LCA3MDQxMywgNzA0MTgsIDcwNDI1LCA3MDQzMiwgNzA0MzcsIDcwNDQyLCAKKyAgICA3MDQ0NywgNzA0NTIsIDcwNDU5LCA3MDQ2NiwgNzA0NzMsIDcwNDgwLCA3MDQ4NywgNzA0OTQsIDcwNTA0LCA3MDUxNCwgCisgICAgNzA1MjEsIDcwNTI4LCA3MDUzNSwgNzA1NDIsIDcwNTQ4LCA3MDU1NCwgNzA1NjMsIDcwNTcyLCA3MDU3OSwgNzA1ODYsIAorICAgIDcwNTk3LCA3MDYwOCwgNzA2MTMsIDcwNjE4LCA3MDYyNSwgNzA2MzIsIDcwNjM5LCA3MDY0NiwgNzA2NTMsIDcwNjYwLCAKKyAgICA3MDY2NywgNzA2NzQsIDcwNjgwLCA3MDY4NiwgNzA2OTIsIDcwNjk4LCA3MDcwNSwgNzA3MTIsIDcwNzE3LCA3MDcyMSwgCisgICAgNzA3MjgsIDcwNzM1LCA3MDc0MiwgNzA3NDYsIDcwNzUzLCA3MDc1NywgNzA3NjIsIDcwNzY2LCA3MDc3MiwgNzA3NzcsIAorICAgIDcwNzgzLCA3MDc4OCwgNzA3OTIsIDcwNzk2LCA3MDc5OSwgNzA4MDIsIDcwODA3LCA3MDgxMiwgNzA4MTcsIDcwODIyLCAKKyAgICA3MDgyNywgNzA4MzIsIDcwODM3LCA3MDg0MiwgNzA4NDcsIDcwODUyLCA3MDg2MSwgNzA4NzAsIDcwODc1LCA3MDg4MCwgCisgICAgNzA4ODUsIDcwODkwLCA3MDg5NSwgNzA5MDAsIDcwOTA1LCA3MDkxMCwgNzA5MTUsIDcwOTIwLCA3MDkyNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNzA5MzAsIDcwOTM2LCA3MDkzOSwgNzA5NDIsIDcwOTQ1LCA3MDk0OSwgNzA5NTMsIDcwOTU3LCAKKyAgICA3MDk2MSwgNzA5NjQsIDcwOTY4LCA3MDk3MSwgNzA5NzUsIDcwOTc4LCA3MDk4MiwgNzA5ODYsIDcwOTkwLCA3MDk5NCwgCisgICAgNzA5OTgsIDcxMDAyLCA3MTAwNiwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIAorICAgIDcxMDM3LCA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjgsIDcxMDcyLCAKKyAgICA3MTA3NiwgNzEwODAsIDcxMDg0LCA3MTA4OCwgNzEwOTIsIDcxMDk2LCA3MTEwMCwgNzExMDQsIDcxMTA4LCA3MTExMiwgCisgICAgNzExMTYsIDcxMTIwLCA3MTEyNCwgNzExMjgsIDcxMTMyLCA3MTEzNiwgNzExNDAsIDcxMTQ0LCA3MTE0OCwgNzExNTIsIAorICAgIDcxMTU2LCA3MTE2MCwgNzExNjQsIDcxMTY3LCA3MTE3MSwgNzExNzUsIDcxMTc5LCA3MTE4MywgNzExODcsIDcxMTkxLCAKKyAgICA3MTE5NSwgNzExOTgsIDcxMjAyLCA3MTIwNiwgNzEyMTAsIDcxMjE0LCA3MTIxOCwgNzEyMjIsIDcxMjI2LCA3MTIzMCwgCisgICAgNzEyMzQsIDcxMjM4LCA3MTI0MiwgNzEyNDYsIDcxMjUxLCA3MTI1NiwgNzEyNTksIDcxMjY0LCA3MTI2NywgNzEyNzAsIAorICAgIDcxMjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTI3NywgNzEyODYsIDcxMjk1LCA3MTMwNCwgNzEzMTMsIDcxMzIyLCAKKyAgICA3MTMzMSwgNzEzNDAsIDcxMzQ5LCA3MTM1NywgNzEzNjQsIDcxMzcyLCA3MTM3OSwgNzEzODcsIDcxMzk3LCA3MTQwNiwgCisgICAgNzE0MTYsIDcxNDI1LCA3MTQzNSwgNzE0NDMsIDcxNDUwLCA3MTQ1OCwgNzE0NjUsIDcxNDczLCA3MTQ3OCwgNzE0ODMsIAorICAgIDcxNDg4LCA3MTQ5NywgNzE1MDMsIDcxNTA5LCA3MTUxNiwgNzE1MjUsIDcxNTMzLCA3MTU0MSwgNzE1NDksIDcxNTU2LCAKKyAgICA3MTU2MywgNzE1NzAsIDcxNTc3LCA3MTU4MiwgNzE1ODcsIDcxNTkyLCA3MTU5NywgNzE2MDIsIDcxNjA3LCA3MTYxMiwgCisgICAgNzE2MTcsIDcxNjI1LCA3MTYzMywgNzE2MzksIDcxNjQ1LCA3MTY1MCwgNzE2NTUsIDcxNjYwLCA3MTY2NSwgNzE2NzAsIAorICAgIDcxNjc1LCA3MTY4MCwgNzE2ODUsIDcxNjkzLCA3MTcwMSwgNzE3MDYsIDcxNzExLCA3MTcyMSwgNzE3MzEsIDcxNzM4LCAKKyAgICA3MTc0NSwgNzE3NTQsIDcxNzYzLCA3MTc3NSwgNzE3ODcsIDcxNzkzLCA3MTc5OSwgNzE4MDcsIDcxODE1LCA3MTgyNSwgCisgICAgNzE4MzUsIDcxODQyLCA3MTg0OSwgNzE4NTQsIDcxODU5LCA3MTg3MSwgNzE4ODMsIDcxODkxLCA3MTg5OSwgNzE5MDksIAorICAgIDcxOTE5LCA3MTkzMSwgNzE5NDMsIDcxOTUyLCA3MTk2MSwgNzE5NjgsIDcxOTc1LCA3MTk4MiwgNzE5ODksIDcxOTk4LCAKKyAgICA3MjAwNywgNzIwMTIsIDcyMDE3LCA3MjAyNCwgNzIwMzEsIDcyMDM4LCA3MjA0NSwgNzIwNTcsIDcyMDY5LCA3MjA3NCwgCisgICAgNzIwNzksIDcyMDg0LCA3MjA4OSwgNzIwOTQsIDcyMDk5LCA3MjEwNCwgNzIxMDksIDcyMTEzLCA3MjExOCwgNzIxMjMsIAorICAgIDcyMTI4LCA3MjEzMywgNzIxMzgsIDcyMTQ0LCA3MjE0OSwgNzIxNTQsIDcyMTYxLCA3MjE2OCwgNzIxNzUsIDcyMTgyLCAKKyAgICA3MjE4OSwgNzIxOTgsIDcyMjA3LCA3MjIxMywgNzIyMTksIDcyMjI1LCA3MjIzMSwgNzIyMzgsIDcyMjQ1LCA3MjI1MiwgCisgICAgNzIyNTksIDcyMjY2LCA3MjI3MCwgNzIyNzcsIDcyMjgyLCA3MjI4NywgNzIyOTQsIDAsIDcyMzA3LCA3MjMxNSwgNzIzMjMsIAorICAgIDcyMzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjMzNywgNzIzNDYsIDcyMzU1LCA3MjM2NCwgCisgICAgNzIzNzMsIDcyMzgyLCA3MjM5MSwgNzI0MDAsIDcyNDA5LCA3MjQxOCwgNzI0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcyNDM0LCAKKyAgICA3MjQ0MSwgNzI0NDcsIDcyNDU0LCA3MjQ2MiwgNzI0NzAsIDcyNDc3LCA3MjQ4NSwgNzI0OTIsIDcyNDk4LCA3MjUwNCwgCisgICAgNzI1MTEsIDcyNTE3LCA3MjUyMywgNzI1MjksIDcyNTM2LCA3MjU0MywgNzI1NTAsIDcyNTU3LCA3MjU2NCwgNzI1NzEsIAorICAgIDcyNTc4LCA3MjU4NSwgNzI1OTIsIDcyNTk5LCA3MjYwNiwgNzI2MTMsIDcyNjIwLCA3MjYyNywgNzI2MzMsIDcyNjQwLCAKKyAgICA3MjY0NywgNzI2NTQsIDcyNjYxLCA3MjY2OCwgNzI2NzUsIDcyNjgyLCA3MjY4OSwgNzI2OTYsIDcyNzAzLCA3MjcxMCwgCisgICAgNzI3MTcsIDcyNzI0LCA3MjczMSwgNzI3MzgsIDcyNzQ1LCA3Mjc1MiwgNzI3NTksIDcyNzY3LCA3Mjc3NSwgNzI3ODMsIAorICAgIDcyNzkxLCAwLCAwLCAwLCAwLCA3Mjc5OSwgNzI4MDgsIDcyODE3LCA3MjgyNiwgNzI4MzUsIDcyODQ0LCA3Mjg1MywgCisgICAgNzI4NjAsIDcyODY3LCA3Mjg3NCwgMCwgMCwgMCwgMCwgMCwgMCwgNzI4ODEsIDcyODg1LCA3Mjg5MCwgNzI4OTUsIDcyOTAwLCAKKyAgICA3MjkwNSwgNzI5MTAsIDcyOTE1LCA3MjkyMCwgNzI5MjUsIDcyOTMwLCA3MjkzNSwgNzI5MzksIDcyOTQzLCA3Mjk0OCwgCisgICAgNzI5NTMsIDcyOTU3LCA3Mjk2MiwgNzI5NjcsIDcyOTcyLCA3Mjk3NywgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIAorICAgIDczMDAwLCA3MzAwNSwgNzMwMTAsIDczMDE0LCA3MzAxOCwgNzMwMjIsIDczMDI2LCA3MzAzMCwgNzMwMzQsIDczMDM4LCAKKyAgICA3MzA0MywgNzMwNDgsIDczMDUzLCA3MzA1OCwgNzMwNjMsIDczMDcwLCA3MzA3NiwgNzMwODEsIDczMDg2LCA3MzA5MSwgCisgICAgNzMwOTYsIDczMTAyLCA3MzEwOSwgNzMxMTUsIDczMTIyLCA3MzEyOCwgNzMxMzQsIDczMTM5LCA3MzE0NiwgNzMxNTIsIAorICAgIDczMTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzE2MywgNzMxNjcsIDczMTcxLCA3MzE3NCwgNzMxNzgsIDczMTgxLCAKKyAgICA3MzE4NSwgNzMxODgsIDczMTkyLCA3MzE5NiwgNzMyMDEsIDczMjA1LCA3MzIxMCwgNzMyMTMsIDczMjE3LCA3MzIyMSwgCisgICAgNzMyMjQsIDczMjI4LCA3MzIzMiwgNzMyMzUsIDczMjM5LCA3MzI0MywgNzMyNDcsIDczMjUxLCA3MzI1NSwgNzMyNTksIAorICAgIDczMjYzLCA3MzI2NywgNzMyNzEsIDczMjc1LCA3MzI3OSwgNzMyODMsIDczMjg3LCA3MzI5MSwgNzMyOTUsIDczMjk5LCAKKyAgICA3MzMwMywgNzMzMDcsIDczMzEwLCA3MzMxMywgNzMzMTcsIDczMzIxLCA3MzMyNSwgNzMzMjgsIDczMzMxLCA3MzMzNCwgCisgICAgNzMzMzgsIDczMzQyLCA3MzM0NiwgNzMzNTAsIDczMzUzLCA3MzM1NiwgNzMzNjAsIDczMzY1LCA3MzM3MCwgNzMzNzQsIAorICAgIDczMzc5LCA3MzM4MywgNzMzODgsIDczMzkzLCA3MzM5OSwgNzM0MDQsIDczNDEwLCA3MzQxNCwgNzM0MTksIDczNDI0LCAKKyAgICA3MzQyOCwgNzM0MzMsIDczNDM4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzQ0MiwgNzM0NDUsIDczNDQ5LCAKKyAgICA3MzQ1MywgNzM0NTYsIDczNDU5LCA3MzQ2MiwgNzM0NjUsIDczNDY4LCA3MzQ3MSwgNzM0NzQsIDczNDc3LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA3MzQ4MCwgNzM0ODUsIDczNDg5LCA3MzQ5MywgNzM0OTcsIDczNTAxLCA3MzUwNSwgNzM1MDksIDczNTEzLCAKKyAgICA3MzUxNywgNzM1MjEsIDczNTI1LCA3MzUyOSwgNzM1MzMsIDczNTM3LCA3MzU0MSwgNzM1NDUsIDczNTUwLCA3MzU1NSwgCisgICAgNzM1NjEsIDczNTY3LCA3MzU3NCwgNzM1NzksIDczNTg0LCA3MzU5MCwgNzM1OTQsIDczNTk5LCA3MzYwMiwgMCwgMCwgMCwgCisgICAgMCwgNzM2MDUsIDczNjEyLCA3MzYxOCwgNzM2MjQsIDczNjMwLCA3MzYzNiwgNzM2NDIsIDczNjQ4LCA3MzY1NCwgNzM2NjAsIAorICAgIDczNjY2LCA3MzY3MiwgNzM2NzksIDczNjg2LCA3MzY5MywgNzM2OTksIDczNzA2LCA3MzcxMywgNzM3MjAsIDczNzI3LCAKKyAgICA3MzczNCwgNzM3NDAsIDczNzQ2LCA3Mzc1MywgNzM3NTksIDczNzY2LCA3Mzc3MywgNzM3NzksIDczNzg1LCA3Mzc5MiwgCisgICAgNzM3OTksIDczODA2LCA3MzgxMiwgNzM4MTksIDczODI2LCA3MzgzMiwgNzM4MzksIDczODQ1LCA3Mzg1MiwgNzM4NTksIAorICAgIDczODY1LCA3Mzg3MSwgNzM4NzgsIDczODg0LCA3Mzg5MSwgNzM4OTgsIDczOTA3LCA3MzkxNCwgNzM5MjEsIDczOTI1LCAKKyAgICA3MzkzMCwgNzM5MzUsIDczOTQwLCA3Mzk0NSwgNzM5NDksIDczOTUzLCA3Mzk1OCwgNzM5NjIsIDczOTY3LCA3Mzk3MiwgCisgICAgNzM5NzcsIDczOTgxLCA3Mzk4NSwgNzM5OTAsIDczOTk0LCA3Mzk5OSwgNzQwMDMsIDc0MDA4LCA3NDAxMywgNzQwMTgsIAorICAgIDc0MDIzLCA3NDAyNywgNzQwMzIsIDc0MDM3LCA3NDA0MiwgNzQwNDgsIDc0MDUzLCA3NDA1OSwgNzQwNjUsIDc0MDcxLCAKKyAgICA3NDA3NywgNzQwODMsIDc0MDg4LCA3NDA5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQwOTgsIAorICAgIDc0MTAzLCA3NDEwNywgNzQxMTEsIDc0MTE1LCA3NDExOSwgNzQxMjMsIDc0MTI3LCA3NDEzMSwgNzQxMzUsIDc0MTM5LCAKKyAgICA3NDE0MywgNzQxNDcsIDc0MTUxLCA3NDE1NSwgNzQxNTksIDc0MTYzLCA3NDE2NywgNzQxNzEsIDc0MTc1LCA3NDE3OSwgCisgICAgNzQxODMsIDc0MTg3LCA3NDE5MSwgNzQxOTUsIDc0MTk5LCA3NDIwMywgNzQyMDcsIDc0MjExLCA3NDIxNSwgMCwgMCwgMCwgCisgICAgNzQyMTksIDc0MjIzLCA3NDIyNywgNzQyMzEsIDc0MjM1LCA3NDIzOCwgNzQyNDQsIDc0MjQ3LCA3NDI1MSwgNzQyNTQsIAorICAgIDc0MjYwLCA3NDI2NiwgNzQyNzQsIDc0Mjc3LCA3NDI4MSwgNzQyODQsIDc0Mjg3LCA3NDI5MywgNzQyOTksIDc0MzAzLCAKKyAgICA3NDMwOSwgNzQzMTMsIDc0MzE3LCA3NDMyMywgNzQzMjcsIDc0MzMzLCA3NDMzOSwgNzQzNDMsIDc0MzQ3LCA3NDM1MywgCisgICAgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzMsIDc0Mzc5LCA3NDM4MywgNzQzODksIDc0MzkyLCA3NDM5NSwgNzQ0MDEsIAorICAgIDc0NDA1LCA3NDQxMSwgNzQ0MTQsIDc0NDE3LCA3NDQyMCwgNzQ0MjYsIDc0NDMwLCA3NDQzNCwgNzQ0NDAsIDc0NDQ2LCAKKyAgICA3NDQ0OSwgNzQ0NTIsIDc0NDU4LCA3NDQ2MywgNzQ0NjgsIDc0NDczLCA3NDQ4MCwgNzQ0ODUsIDc0NDkyLCA3NDQ5NywgCisgICAgNzQ1MDQsIDc0NTA5LCA3NDUxNCwgNzQ1MTksIDc0NTI0LCA3NDUyNywgNzQ1MzEsIDc0NTM1LCA3NDU0MCwgNzQ1NDUsIAorICAgIDc0NTUwLCA3NDU1NSwgNzQ1NjAsIDc0NTY1LCA3NDU3MCwgNzQ1NzUsIDc0NTgyLCA3NDU4NywgMCwgNzQ1OTQsIDc0NTk3LCAKKyAgICA3NDYwMSwgNzQ2MDQsIDc0NjA3LCA3NDYxMCwgNzQ2MTMsIDc0NjE2LCA3NDYxOSwgNzQ2MjIsIDc0NjI1LCAwLCAwLCAwLCAKKyAgICAwLCA3NDYyOCwgNzQ2MzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0NjQwLCA3NDY0MywgNzQ2NDYsIDc0NjQ5LCA3NDY1MiwgCisgICAgNzQ2NTYsIDc0NjU5LCA3NDY2MiwgNzQ2NjYsIDc0NjcwLCA3NDY3NCwgNzQ2NzgsIDc0NjgyLCA3NDY4NiwgNzQ2OTAsIAorICAgIDc0Njk0LCA3NDY5OCwgNzQ3MDIsIDc0NzA2LCA3NDcxMCwgNzQ3MTQsIDc0NzE4LCA3NDcyMiwgNzQ3MjYsIDc0NzMwLCAKKyAgICA3NDczMywgNzQ3MzcsIDc0NzQwLCA3NDc0NCwgNzQ3NDgsIDc0NzUyLCA3NDc1NiwgNzQ3NjAsIDc0NzYzLCA3NDc2NywgCisgICAgNzQ3NzAsIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OCwgNzQ3OTEsIDc0Nzk2LCA3NDgwMCwgNzQ4MDUsIAorICAgIDc0ODEwLCA3NDgxNCwgNzQ4MTksIDc0ODIzLCA3NDgyOCwgNzQ4MzMsIDc0ODM4LCA3NDg0MiwgNzQ4NDYsIDc0ODUxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDg1NiwgNzQ4NjEsIDc0ODY2LCA3NDg3MSwgNzQ4NzcsIDc0ODgyLCA3NDg4NywgCisgICAgNzQ4OTIsIDc0ODk3LCA3NDkwMiwgNzQ5MDYsIDc0OTEwLCA3NDkxNSwgNzQ5MjAsIDAsIDAsIDc0OTI2LCA3NDkzMCwgCisgICAgNzQ5MzMsIDc0OTM2LCA3NDkzOSwgNzQ5NDIsIDc0OTQ1LCA3NDk0OCwgNzQ5NTEsIDc0OTU0LCAwLCAwLCA3NDk1NywgCisgICAgNzQ5NjIsIDc0OTY3LCA3NDk3MywgNzQ5ODAsIDc0OTg2LCA3NDk5MiwgNzQ5OTgsIDc1MDA0LCA3NTAxMCwgNzUwMTYsIAorICAgIDc1MDIyLCA3NTAyOCwgNzUwMzQsIDc1MDQwLCA3NTA0NiwgNzUwNTEsIDc1MDU2LCA3NTA2MSwgNzUwNjcsIDc1MDczLCAKKyAgICA3NTA4MCwgNzUwODYsIDc1MDkyLCA3NTA5NywgNzUxMDQsIDc1MTExLCA3NTExOCwgNzUxMjQsIDc1MTI5LCA3NTEzNCwgCisgICAgNzUxMzksIDAsIDAsIDAsIDAsIDc1MTQ3LCA3NTE1MywgNzUxNTksIDc1MTY1LCA3NTE3MSwgNzUxNzcsIDc1MTgzLCAKKyAgICA3NTE4OSwgNzUxOTUsIDc1MjAxLCA3NTIwNywgNzUyMTMsIDc1MjE5LCA3NTIyNSwgNzUyMzEsIDc1MjM3LCA3NTI0MywgCisgICAgNzUyNDksIDc1MjU1LCA3NTI2MSwgNzUyNjcsIDc1MjcyLCA3NTI3NywgNzUyODMsIDc1Mjg5LCA3NTI5NSwgNzUzMDEsIAorICAgIDc1MzA3LCA3NTMxMywgNzUzMTksIDc1MzI1LCA3NTMzMSwgNzUzMzcsIDc1MzQzLCA3NTM0OSwgNzUzNTUsIDc1MzYxLCAKKyAgICA3NTM2NywgNzUzNzMsIDc1Mzc5LCA3NTM4NSwgNzUzOTEsIDc1Mzk3LCA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgCisgICAgNzU0MjYsIDc1NDMxLCA3NTQzNywgNzU0NDIsIDc1NDQ2LCA3NTQ1MSwgNzU0NTUsIDc1NDU5LCA3NTQ2MywgNzU0NjksIAorICAgIDc1NDc0LCA3NTQ3OSwgNzU0ODQsIDc1NDg5LCA3NTQ5NCwgNzU0OTksIDc1NTA0LCA3NTUxMSwgNzU1MTgsIDc1NTI1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3Mzc2NCwgNzM3NjcsIDczNzcwLCA3Mzc3MywgNzM3NzYsIDczNzgwLCA3Mzc4MywgNzM3ODYsIDczNzkwLCA3Mzc5NCwgCi0gICAgNzM3OTgsIDczODAyLCA3MzgwNiwgNzM4MTAsIDczODE0LCA3MzgxOCwgNzM4MjIsIDczODI2LCA3MzgzMCwgNzM4MzQsIAotICAgIDczODM4LCA3Mzg0MiwgNzM4NDYsIDczODUwLCA3Mzg1NCwgNzM4NTcsIDczODYxLCA3Mzg2NCwgNzM4NjgsIDczODcyLCAKLSAgICA3Mzg3NiwgNzM4ODAsIDczODg0LCA3Mzg4NywgNzM4OTEsIDczODk0LCA3Mzg5NywgNzM5MDEsIDczOTA1LCA3MzkwOSwgCi0gICAgNzM5MTMsIDczOTE2LCA3MzkyMSwgNzM5MjUsIDczOTMwLCA3MzkzNSwgNzM5MzksIDczOTQ0LCA3Mzk0OCwgNzM5NTMsIAotICAgIDczOTU4LCA3Mzk2MywgNzM5NjgsIDczOTczLCA3Mzk3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzM5ODUsIAotICAgIDczOTkwLCA3Mzk5NSwgNzQwMDAsIDc0MDA3LCA3NDAxMiwgNzQwMTcsIDc0MDIxLCA3NDAyNiwgNzQwMzEsIDc0MDM1LCAKLSAgICA3NDAzOSwgNzQwNDQsIDc0MDUwLCAwLCAwLCA3NDA1NywgNzQwNjEsIDc0MDY0LCA3NDA2NywgNzQwNzAsIDc0MDczLCAKLSAgICA3NDA3NiwgNzQwNzksIDc0MDgyLCA3NDA4NSwgMCwgMCwgNzQwODgsIDc0MDkzLCA3NDA5OCwgNzQxMDQsIDc0MTExLCAKLSAgICA3NDExNywgNzQxMjMsIDc0MTI5LCA3NDEzNSwgNzQxNDEsIDc0MTQ3LCA3NDE1MywgNzQxNTksIDc0MTY1LCA3NDE3MSwgCi0gICAgNzQxNzcsIDc0MTgyLCA3NDE4OCwgNzQxOTMsIDc0MTk5LCA3NDIwNSwgNzQyMTIsIDc0MjE4LCA3NDIyNCwgNzQyMjksIAotICAgIDc0MjM2LCA3NDI0MywgNzQyNTAsIDc0MjU2LCA3NDI2MSwgNzQyNjYsIDc0MjcxLCAwLCAwLCAwLCAwLCA3NDI3OSwgCi0gICAgNzQyODUsIDc0MjkxLCA3NDI5NywgNzQzMDMsIDc0MzA5LCA3NDMxNSwgNzQzMjEsIDc0MzI3LCA3NDMzMywgNzQzMzksIAotICAgIDc0MzQ1LCA3NDM1MSwgNzQzNTcsIDc0MzYzLCA3NDM2OSwgNzQzNzUsIDc0MzgxLCA3NDM4NywgNzQzOTMsIDc0Mzk5LCAKLSAgICA3NDQwNCwgNzQ0MDksIDc0NDE1LCA3NDQyMSwgNzQ0MjcsIDc0NDMzLCA3NDQzOSwgNzQ0NDUsIDc0NDUxLCA3NDQ1NywgCi0gICAgNzQ0NjMsIDc0NDY5LCA3NDQ3NSwgNzQ0ODEsIDc0NDg3LCA3NDQ5MywgNzQ0OTksIDc0NTA1LCA3NDUxMSwgNzQ1MTcsIAotICAgIDc0NTIzLCA3NDUyOSwgNzQ1MzUsIDc0NTQxLCA3NDU0NywgNzQ1NTMsIDc0NTU4LCA3NDU2MywgNzQ1NjksIDc0NTc0LCAKLSAgICA3NDU3OCwgNzQ1ODMsIDc0NTg3LCA3NDU5MSwgNzQ1OTUsIDc0NjAxLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMSwgCi0gICAgNzQ2MjYsIDc0NjMxLCA3NDYzNiwgNzQ2NDMsIDc0NjUwLCA3NDY1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQ2NjQsIDc0NjY5LCA3NDY3NCwgNzQ2NzksIAotICAgIDc0Njg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDY5MywgNzQ2OTcsIDc0NzAxLCA3NDcwNSwgNzQ3MDksIAotICAgIDc0NzEzLCAwLCAwLCA3NDcxNywgNzQ3MjEsIDc0NzI1LCA3NDcyOSwgNzQ3MzMsIDc0NzM3LCAwLCAwLCA3NDc0MSwgCi0gICAgNzQ3NDUsIDc0NzQ5LCA3NDc1MywgNzQ3NTcsIDc0NzYxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NDc2NSwgCi0gICAgNzQ3NjksIDc0NzczLCA3NDc3NywgNzQ3ODEsIDc0Nzg1LCA3NDc4OSwgMCwgNzQ3OTMsIDc0Nzk3LCA3NDgwMSwgNzQ4MDUsIAotICAgIDc0ODA5LCA3NDgxMywgNzQ4MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc1NTMyLCA3NTUzNywgNzU1NDIsIDc1NTQ3LCA3NTU1NCwgNzU1NjEsIDc1NTY1LCA3NTU2OSwgNzU1NzQsIDc1NTc5LCAKKyAgICA3NTU4NCwgNzU1ODksIDc1NTk0LCA3NTU5OSwgNzU2MDQsIDc1NjA5LCA3NTYxNCwgNzU2MjAsIDc1NjI2LCA3NTYzMiwgCisgICAgNzU2MzgsIDc1NjQ0LCA3NTY0OCwgNzU2NTQsIDc1NjU4LCA3NTY2NCwgNzU2NzEsIDc1Njc3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3NTY4MSwgNzU2ODUsIDc1Njg5LCA3NTY5MywgNzU2OTcsIDc1NzAxLCAwLCAwLCA3NTcwNSwgNzU3MDksIAorICAgIDc1NzEzLCA3NTcxNywgNzU3MjEsIDc1NzI1LCAwLCAwLCA3NTcyOSwgNzU3MzMsIDc1NzM3LCA3NTc0MSwgNzU3NDUsIAorICAgIDc1NzQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTc1MywgNzU3NTcsIDc1NzYxLCA3NTc2NSwgNzU3NjksIAorICAgIDc1NzczLCA3NTc3NywgMCwgNzU3ODEsIDc1Nzg1LCA3NTc4OSwgNzU3OTMsIDc1Nzk3LCA3NTgwMSwgNzU4MDUsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc0ODIxLCA3NDgyOCwgNzQ4MzUsIDc0ODQyLCA3NDg0OSwgNzQ4NTUsIDc0ODYxLCAKLSAgICA3NDg2OCwgNzQ4NzUsIDc0ODgyLCA3NDg4OSwgNzQ4OTYsIDc0OTAzLCA3NDkxMCwgNzQ5MTcsIDc0OTI0LCA3NDkzMCwgCi0gICAgNzQ5MzcsIDc0OTQ0LCA3NDk1MSwgNzQ5NTgsIDc0OTY1LCA3NDk3MiwgNzQ5NzksIDc0OTg2LCA3NDk5MywgNzUwMDAsIAotICAgIDc1MDA3LCA3NTAxNiwgNzUwMjUsIDc1MDM0LCA3NTA0MywgNzUwNTIsIDc1MDYxLCA3NTA3MCwgNzUwNzksIDc1MDg3LCAKLSAgICA3NTA5NSwgNzUxMDMsIDc1MTExLCA3NTExOSwgNzUxMjcsIDc1MTM1LCA3NTE0MywgNzUxNDksIDc1MTU3LCAwLCAwLCAKLSAgICA3NTE2NSwgNzUxNzIsIDc1MTc4LCA3NTE4NCwgNzUxOTAsIDc1MTk2LCA3NTIwMiwgNzUyMDgsIDc1MjE0LCA3NTIyMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNzU4MDksIDc1ODE0LCA3NTgxOSwgNzU4MjQsIDc1ODI5LCA3NTgzMywgNzU4MzcsIDc1ODQyLCA3NTg0NywgNzU4NTIsIAorICAgIDc1ODU3LCA3NTg2MiwgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODIsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIDc1OTAxLCAKKyAgICA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ4LCA3NTk1NSwgCisgICAgNzU5NjIsIDc1OTY5LCA3NTk3NiwgNzU5ODMsIDc1OTkwLCA3NTk5NywgNzYwMDMsIDc2MDA5LCA3NjAxNSwgNzYwMjEsIAorICAgIDc2MDI3LCA3NjAzMywgNzYwMzksIDc2MDQ1LCA3NjA0OSwgNzYwNTUsIDAsIDAsIDc2MDYxLCA3NjA2NiwgNzYwNzAsIAorICAgIDc2MDc0LCA3NjA3OCwgNzYwODIsIDc2MDg2LCA3NjA5MCwgNzYwOTQsIDc2MDk4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjEwMiwgCisgICAgNzYxMDYsIDc2MTEwLCA3NjExNCwgNzYxMTgsIDc2MTIyLCA3NjEyNiwgNzYxMzAsIDc2MTM0LCA3NjEzOCwgNzYxNDIsIAorICAgIDc2MTQ2LCA3NjE1MCwgNzYxNTQsIDc2MTU4LCA3NjE2MiwgNzYxNjYsIDc2MTcwLCA3NjE3NCwgNzYxNzgsIDc2MTgyLCAKKyAgICA3NjE4NiwgNzYxOTAsIDAsIDAsIDAsIDAsIDc2MTk0LCA3NjE5OCwgNzYyMDIsIDc2MjA2LCA3NjIxMCwgNzYyMTQsIAorICAgIDc2MjE4LCA3NjIyMiwgNzYyMjYsIDc2MjMwLCA3NjIzNCwgNzYyMzgsIDc2MjQyLCA3NjI0NiwgNzYyNTAsIDc2MjU0LCAKKyAgICA3NjI1OCwgNzYyNjIsIDc2MjY2LCA3NjI3MCwgNzYyNzQsIDc2Mjc4LCA3NjI4MiwgNzYyODYsIDc2MjkwLCA3NjI5NCwgCisgICAgNzYyOTgsIDc2MzAyLCA3NjMwNiwgNzYzMTAsIDc2MzE0LCA3NjMxOCwgNzYzMjIsIDc2MzI2LCA3NjMzMCwgNzYzMzQsIAorICAgIDc2MzM4LCA3NjM0MiwgNzYzNDYsIDc2MzUwLCA3NjM1NCwgNzYzNTgsIDc2MzYyLCA3NjM2NiwgNzYzNzAsIDc2Mzc0LCAKKyAgICA3NjM3OCwgNzYzODIsIDc2Mzg2LCAwLCAwLCAwLCAwLCA3NjM5MCwgNzYzOTQsIDc2Mzk4LCA3NjQwMiwgNzY0MDYsIAorICAgIDc2NDEwLCA3NjQxNCwgNzY0MTgsIDc2NDIyLCA3NjQyNiwgNzY0MzAsIDc2NDM0LCA3NjQzOCwgNzY0NDIsIDc2NDQ2LCAKKyAgICA3NjQ1MCwgNzY0NTQsIDc2NDU4LCA3NjQ2MiwgNzY0NjYsIDc2NDcwLCA3NjQ3NCwgNzY0NzgsIDc2NDgyLCA3NjQ4NiwgCisgICAgNzY0OTAsIDc2NDk0LCA3NjQ5OCwgNzY1MDIsIDc2NTA2LCA3NjUxMCwgNzY1MTQsIDc2NTE4LCA3NjUyMiwgNzY1MjYsIAorICAgIDc2NTMwLCA3NjUzNCwgNzY1MzgsIDc2NTQyLCA3NjU0NiwgNzY1NTAsIDc2NTU0LCA3NjU1OCwgNzY1NjIsIDc2NTY2LCAKKyAgICA3NjU3MCwgNzY1NzQsIDc2NTc4LCA3NjU4MiwgNzY1ODYsIDc2NTkwLCA3NjU5NCwgNzY1OTgsIDc2NjAyLCA3NjYwNiwgCisgICAgNzY2MTAsIDc2NjE0LCA3NjYxOCwgNzY2MjIsIDc2NjI2LCA3NjYzMCwgNzY2MzQsIDc2NjM4LCA3NjY0MiwgNzY2NDYsIAorICAgIDc2NjUwLCA3NjY1NCwgNzY2NTgsIDc2NjYyLCA3NjY2NiwgNzY2NzAsIDc2Njc0LCA3NjY3OCwgNzY2ODIsIDc2Njg2LCAKKyAgICA3NjY5MCwgNzY2OTQsIDc2Njk4LCA3NjcwMiwgNzY3MDYsIDc2NzEwLCA3NjcxNCwgNzY3MTgsIDc2NzIyLCA3NjcyNiwgCisgICAgNzY3MzAsIDc2NzM0LCA3NjczOCwgNzY3NDIsIDc2NzQ2LCA3Njc1MCwgNzY3NTQsIDc2NzU4LCA3Njc2MiwgNzY3NjYsIAorICAgIDc2NzcwLCA3Njc3NCwgNzY3NzgsIDc2NzgyLCA3Njc4NiwgNzY3OTAsIDc2Nzk0LCA3Njc5OCwgNzY4MDIsIDc2ODA2LCAKKyAgICA3NjgxMCwgNzY4MTQsIDc2ODE4LCA3NjgyMiwgNzY4MjYsIDc2ODMwLCA3NjgzNCwgNzY4MzgsIDc2ODQyLCA3Njg0NiwgCisgICAgNzY4NTAsIDc2ODU0LCA3Njg1OCwgNzY4NjIsIDc2ODY2LCA3Njg3MCwgNzY4NzQsIDc2ODc4LCA3Njg4MiwgNzY4ODYsIAorICAgIDc2ODkwLCA3Njg5NCwgNzY4OTgsIDc2OTAyLCA3NjkwNiwgNzY5MTAsIDc2OTE0LCA3NjkxOCwgNzY5MjIsIDc2OTI2LCAKKyAgICA3NjkzMCwgNzY5MzQsIDc2OTM4LCA3Njk0MiwgNzY5NDYsIDc2OTUwLCA3Njk1NCwgNzY5NTgsIDc2OTYyLCA3Njk2NiwgCisgICAgNzY5NzAsIDc2OTc0LCA3Njk3OCwgNzY5ODIsIDc2OTg2LCA3Njk5MCwgNzY5OTQsIDc2OTk4LCA3NzAwMiwgNzcwMDYsIAorICAgIDc3MDEwLCA3NzAxNCwgNzcwMTgsIDc3MDIyLCA3NzAyNiwgNzcwMzAsIDc3MDM0LCA3NzAzOCwgNzcwNDIsIDc3MDQ2LCAKKyAgICA3NzA1MCwgNzcwNTQsIDc3MDU4LCA3NzA2MiwgNzcwNjYsIDc3MDcwLCA3NzA3NCwgNzcwNzgsIDc3MDgyLCA3NzA4NiwgCisgICAgNzcwOTAsIDc3MDk0LCA3NzA5OCwgNzcxMDIsIDc3MTA2LCA3NzExMCwgNzcxMTQsIDc3MTE4LCA3NzEyMiwgNzcxMjYsIAorICAgIDc3MTMwLCA3NzEzNCwgNzcxMzgsIDc3MTQyLCA3NzE0NiwgNzcxNTAsIDc3MTU0LCA3NzE1OCwgNzcxNjIsIDc3MTY2LCAKKyAgICA3NzE3MCwgNzcxNzQsIDc3MTc4LCA3NzE4MiwgNzcxODYsIDc3MTkwLCA3NzE5NCwgNzcxOTgsIDc3MjAyLCA3NzIwNiwgCisgICAgNzcyMTAsIDc3MjE0LCA3NzIxOCwgNzcyMjIsIDc3MjI2LCA3NzIzMCwgNzcyMzQsIDc3MjM4LCA3NzI0MiwgNzcyNDYsIAorICAgIDc3MjUwLCA3NzI1NCwgNzcyNTgsIDc3MjYyLCA3NzI2NiwgNzcyNzAsIDc3Mjc0LCA3NzI3OCwgNzcyODIsIDc3Mjg2LCAKKyAgICA3NzI5MCwgNzcyOTQsIDc3Mjk4LCA3NzMwMiwgNzczMDYsIDc3MzEwLCA3NzMxNCwgNzczMTgsIDc3MzIyLCA3NzMyNiwgCisgICAgNzczMzAsIDc3MzM0LCA3NzMzOCwgNzczNDIsIDc3MzQ2LCA3NzM1MCwgNzczNTQsIDc3MzU4LCA3NzM2MiwgNzczNjYsIAorICAgIDc3MzcwLCA3NzM3NCwgNzczNzgsIDc3MzgyLCA3NzM4NiwgNzczOTAsIDc3Mzk0LCA3NzM5OCwgNzc0MDIsIDc3NDA2LCAKKyAgICA3NzQxMCwgNzc0MTQsIDc3NDE4LCA3NzQyMiwgNzc0MjYsIDc3NDMwLCA3NzQzNCwgNzc0MzgsIDc3NDQyLCA3NzQ0NiwgCisgICAgNzc0NTAsIDc3NDU0LCA3NzQ1OCwgNzc0NjIsIDc3NDY2LCA3NzQ3MCwgNzc0NzQsIDc3NDc4LCA3NzQ4MiwgNzc0ODYsIAorICAgIDc3NDkwLCA3NzQ5NCwgNzc0OTgsIDc3NTAyLCA3NzUwNiwgNzc1MTAsIDc3NTE0LCA3NzUxOCwgNzc1MjIsIDc3NTI2LCAKKyAgICA3NzUzMCwgNzc1MzQsIDc3NTM4LCA3NzU0MiwgNzc1NDYsIDc3NTUwLCA3NzU1NCwgNzc1NTgsIDc3NTYyLCA3NzU2NiwgCisgICAgNzc1NzAsIDc3NTc0LCA3NzU3OCwgNzc1ODIsIDc3NTg2LCA3NzU5MCwgNzc1OTQsIDc3NTk4LCA3NzYwMiwgNzc2MDYsIAorICAgIDc3NjEwLCA3NzYxNCwgNzc2MTgsIDc3NjIyLCA3NzYyNiwgNzc2MzAsIDc3NjM0LCA3NzYzOCwgNzc2NDIsIDc3NjQ2LCAKKyAgICA3NzY1MCwgNzc2NTQsIDc3NjU4LCA3NzY2MiwgNzc2NjYsIDc3NjcwLCA3NzY3NCwgNzc2NzgsIDc3NjgyLCA3NzY4NiwgCisgICAgNzc2OTAsIDc3Njk0LCA3NzY5OCwgNzc3MDIsIDc3NzA2LCA3NzcxMCwgNzc3MTQsIDc3NzE4LCA3NzcyMiwgNzc3MjYsIAorICAgIDc3NzMwLCA3NzczNCwgNzc3MzgsIDc3NzQyLCA3Nzc0NiwgNzc3NTAsIDc3NzU0LCA3Nzc1OCwgNzc3NjIsIDc3NzY2LCAKKyAgICA3Nzc3MCwgNzc3NzQsIDc3Nzc4LCA3Nzc4MiwgNzc3ODYsIDc3NzkwLCA3Nzc5NCwgNzc3OTgsIDc3ODAyLCA3NzgwNiwgCisgICAgNzc4MTAsIDc3ODE0LCA3NzgxOCwgNzc4MjIsIDc3ODI2LCA3NzgzMCwgNzc4MzQsIDc3ODM4LCA3Nzg0MiwgNzc4NDYsIAorICAgIDc3ODUwLCAwLCAwLCA3Nzg1NCwgNzc4NTgsIDc3ODYyLCA3Nzg2NiwgNzc4NzAsIDc3ODc0LCA3Nzg3OCwgNzc4ODIsIAorICAgIDc3ODg2LCA3Nzg5MCwgNzc4OTQsIDc3ODk4LCA3NzkwMiwgNzc5MDYsIDc3OTEwLCA3NzkxNCwgNzc5MTgsIDc3OTIyLCAKKyAgICA3NzkyNiwgNzc5MzAsIDc3OTM0LCA3NzkzOCwgNzc5NDIsIDc3OTQ2LCA3Nzk1MCwgNzc5NTQsIDc3OTU4LCA3Nzk2MiwgCisgICAgNzc5NjYsIDc3OTcwLCA3Nzk3NCwgNzc5NzgsIDc3OTgyLCA3Nzk4NiwgNzc5OTAsIDc3OTk0LCA3Nzk5OCwgNzgwMDIsIAorICAgIDc4MDA2LCA3ODAxMCwgNzgwMTQsIDc4MDE4LCA3ODAyMiwgNzgwMjYsIDc4MDMwLCA3ODAzNCwgNzgwMzgsIDc4MDQyLCAKKyAgICA3ODA0NiwgNzgwNTAsIDc4MDU0LCA3ODA1OCwgNzgwNjIsIDc4MDY2LCA3ODA3MCwgNzgwNzQsIDc4MDc4LCA3ODA4MiwgCisgICAgNzgwODYsIDc4MDkwLCA3ODA5NCwgNzgwOTgsIDc4MTAyLCA3ODEwNiwgNzgxMTAsIDc4MTE0LCA3ODExOCwgNzgxMjIsIAorICAgIDc4MTI2LCA3ODEzMCwgNzgxMzQsIDc4MTM4LCA3ODE0MiwgNzgxNDYsIDc4MTUwLCA3ODE1NCwgNzgxNTgsIDc4MTYyLCAKKyAgICA3ODE2NiwgNzgxNzAsIDc4MTc0LCA3ODE3OCwgNzgxODIsIDc4MTg2LCA3ODE5MCwgNzgxOTQsIDc4MTk4LCA3ODIwMiwgCisgICAgNzgyMDYsIDc4MjEwLCA3ODIxNCwgNzgyMTgsIDc4MjIyLCA3ODIyNiwgNzgyMzAsIDc4MjM0LCA3ODIzOCwgNzgyNDIsIAorICAgIDc4MjQ2LCA3ODI1MCwgNzgyNTQsIDc4MjU4LCA3ODI2MiwgNzgyNjYsIDc4MjcwLCA3ODI3NCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzUyMjYsIDc1MjMwLCA3NTIzNCwgNzUyMzgsIDc1MjQyLCA3NTI0NiwgNzUyNTAsIDc1MjU0LCAKLSAgICA3NTI1OCwgNzUyNjIsIDc1MjY2LCA3NTI3MCwgNzUyNzQsIDc1Mjc4LCA3NTI4MiwgNzUyODYsIDc1MjkwLCA3NTI5NCwgCi0gICAgNzUyOTgsIDc1MzAyLCA3NTMwNiwgNzUzMTAsIDc1MzE0LCAwLCAwLCAwLCAwLCA3NTMxOCwgNzUzMjIsIDc1MzI2LCAKLSAgICA3NTMzMCwgNzUzMzQsIDc1MzM4LCA3NTM0MiwgNzUzNDYsIDc1MzUwLCA3NTM1NCwgNzUzNTgsIDc1MzYyLCA3NTM2NiwgCi0gICAgNzUzNzAsIDc1Mzc0LCA3NTM3OCwgNzUzODIsIDc1Mzg2LCA3NTM5MCwgNzUzOTQsIDc1Mzk4LCA3NTQwMiwgNzU0MDYsIAotICAgIDc1NDEwLCA3NTQxNCwgNzU0MTgsIDc1NDIyLCA3NTQyNiwgNzU0MzAsIDc1NDM0LCA3NTQzOCwgNzU0NDIsIDc1NDQ2LCAKLSAgICA3NTQ1MCwgNzU0NTQsIDc1NDU4LCA3NTQ2MiwgNzU0NjYsIDc1NDcwLCA3NTQ3NCwgNzU0NzgsIDc1NDgyLCA3NTQ4NiwgCi0gICAgNzU0OTAsIDc1NDk0LCA3NTQ5OCwgNzU1MDIsIDc1NTA2LCA3NTUxMCwgMCwgMCwgMCwgMCwgNzU1MTQsIDc1NTE4LCAKLSAgICA3NTUyMiwgNzU1MjYsIDc1NTMwLCA3NTUzNCwgNzU1MzgsIDc1NTQyLCA3NTU0NiwgNzU1NTAsIDc1NTU0LCA3NTU1OCwgCi0gICAgNzU1NjIsIDc1NTY2LCA3NTU3MCwgNzU1NzQsIDc1NTc4LCA3NTU4MiwgNzU1ODYsIDc1NTkwLCA3NTU5NCwgNzU1OTgsIAotICAgIDc1NjAyLCA3NTYwNiwgNzU2MTAsIDc1NjE0LCA3NTYxOCwgNzU2MjIsIDc1NjI2LCA3NTYzMCwgNzU2MzQsIDc1NjM4LCAKLSAgICA3NTY0MiwgNzU2NDYsIDc1NjUwLCA3NTY1NCwgNzU2NTgsIDc1NjYyLCA3NTY2NiwgNzU2NzAsIDc1Njc0LCA3NTY3OCwgCi0gICAgNzU2ODIsIDc1Njg2LCA3NTY5MCwgNzU2OTQsIDc1Njk4LCA3NTcwMiwgNzU3MDYsIDc1NzEwLCA3NTcxNCwgNzU3MTgsIAotICAgIDc1NzIyLCA3NTcyNiwgNzU3MzAsIDc1NzM0LCA3NTczOCwgNzU3NDIsIDc1NzQ2LCA3NTc1MCwgNzU3NTQsIDc1NzU4LCAKLSAgICA3NTc2MiwgNzU3NjYsIDc1NzcwLCA3NTc3NCwgNzU3NzgsIDc1NzgyLCA3NTc4NiwgNzU3OTAsIDc1Nzk0LCA3NTc5OCwgCi0gICAgNzU4MDIsIDc1ODA2LCA3NTgxMCwgNzU4MTQsIDc1ODE4LCA3NTgyMiwgNzU4MjYsIDc1ODMwLCA3NTgzNCwgNzU4MzgsIAotICAgIDc1ODQyLCA3NTg0NiwgNzU4NTAsIDc1ODU0LCA3NTg1OCwgNzU4NjIsIDc1ODY2LCA3NTg3MCwgNzU4NzQsIDc1ODc4LCAKLSAgICA3NTg4MiwgNzU4ODYsIDc1ODkwLCA3NTg5NCwgNzU4OTgsIDc1OTAyLCA3NTkwNiwgNzU5MTAsIDc1OTE0LCA3NTkxOCwgCi0gICAgNzU5MjIsIDc1OTI2LCA3NTkzMCwgNzU5MzQsIDc1OTM4LCA3NTk0MiwgNzU5NDYsIDc1OTUwLCA3NTk1NCwgNzU5NTgsIAotICAgIDc1OTYyLCA3NTk2NiwgNzU5NzAsIDc1OTc0LCA3NTk3OCwgNzU5ODIsIDc1OTg2LCA3NTk5MCwgNzU5OTQsIDc1OTk4LCAKLSAgICA3NjAwMiwgNzYwMDYsIDc2MDEwLCA3NjAxNCwgNzYwMTgsIDc2MDIyLCA3NjAyNiwgNzYwMzAsIDc2MDM0LCA3NjAzOCwgCi0gICAgNzYwNDIsIDc2MDQ2LCA3NjA1MCwgNzYwNTQsIDc2MDU4LCA3NjA2MiwgNzYwNjYsIDc2MDcwLCA3NjA3NCwgNzYwNzgsIAotICAgIDc2MDgyLCA3NjA4NiwgNzYwOTAsIDc2MDk0LCA3NjA5OCwgNzYxMDIsIDc2MTA2LCA3NjExMCwgNzYxMTQsIDc2MTE4LCAKLSAgICA3NjEyMiwgNzYxMjYsIDc2MTMwLCA3NjEzNCwgNzYxMzgsIDc2MTQyLCA3NjE0NiwgNzYxNTAsIDc2MTU0LCA3NjE1OCwgCi0gICAgNzYxNjIsIDc2MTY2LCA3NjE3MCwgNzYxNzQsIDc2MTc4LCA3NjE4MiwgNzYxODYsIDc2MTkwLCA3NjE5NCwgNzYxOTgsIAotICAgIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCA3NjIxOCwgNzYyMjIsIDc2MjI2LCA3NjIzMCwgNzYyMzQsIDc2MjM4LCAKLSAgICA3NjI0MiwgNzYyNDYsIDc2MjUwLCA3NjI1NCwgNzYyNTgsIDc2MjYyLCA3NjI2NiwgNzYyNzAsIDc2Mjc0LCA3NjI3OCwgCi0gICAgNzYyODIsIDc2Mjg2LCA3NjI5MCwgNzYyOTQsIDc2Mjk4LCA3NjMwMiwgNzYzMDYsIDc2MzEwLCA3NjMxNCwgNzYzMTgsIAotICAgIDc2MzIyLCA3NjMyNiwgNzYzMzAsIDc2MzM0LCA3NjMzOCwgNzYzNDIsIDc2MzQ2LCA3NjM1MCwgNzYzNTQsIDc2MzU4LCAKLSAgICA3NjM2MiwgNzYzNjYsIDc2MzcwLCA3NjM3NCwgNzYzNzgsIDc2MzgyLCA3NjM4NiwgNzYzOTAsIDc2Mzk0LCA3NjM5OCwgCi0gICAgNzY0MDIsIDc2NDA2LCA3NjQxMCwgNzY0MTQsIDc2NDE4LCA3NjQyMiwgNzY0MjYsIDc2NDMwLCA3NjQzNCwgNzY0MzgsIAotICAgIDc2NDQyLCA3NjQ0NiwgNzY0NTAsIDc2NDU0LCA3NjQ1OCwgNzY0NjIsIDc2NDY2LCA3NjQ3MCwgNzY0NzQsIDc2NDc4LCAKLSAgICA3NjQ4MiwgNzY0ODYsIDc2NDkwLCA3NjQ5NCwgNzY0OTgsIDc2NTAyLCA3NjUwNiwgNzY1MTAsIDc2NTE0LCA3NjUxOCwgCi0gICAgNzY1MjIsIDc2NTI2LCA3NjUzMCwgNzY1MzQsIDc2NTM4LCA3NjU0MiwgNzY1NDYsIDc2NTUwLCA3NjU1NCwgNzY1NTgsIAotICAgIDc2NTYyLCA3NjU2NiwgNzY1NzAsIDc2NTc0LCA3NjU3OCwgNzY1ODIsIDc2NTg2LCA3NjU5MCwgNzY1OTQsIDc2NTk4LCAKLSAgICA3NjYwMiwgNzY2MDYsIDc2NjEwLCA3NjYxNCwgNzY2MTgsIDc2NjIyLCA3NjYyNiwgNzY2MzAsIDc2NjM0LCA3NjYzOCwgCi0gICAgNzY2NDIsIDc2NjQ2LCA3NjY1MCwgNzY2NTQsIDc2NjU4LCA3NjY2MiwgNzY2NjYsIDc2NjcwLCA3NjY3NCwgNzY2NzgsIAotICAgIDc2NjgyLCA3NjY4NiwgNzY2OTAsIDc2Njk0LCA3NjY5OCwgNzY3MDIsIDc2NzA2LCA3NjcxMCwgNzY3MTQsIDc2NzE4LCAwLCAKLSAgICAwLCA3NjcyMiwgNzY3MjYsIDc2NzMwLCA3NjczNCwgNzY3MzgsIDc2NzQyLCA3Njc0NiwgNzY3NTAsIDc2NzU0LCA3Njc1OCwgCi0gICAgNzY3NjIsIDc2NzY2LCA3Njc3MCwgNzY3NzQsIDc2Nzc4LCA3Njc4MiwgNzY3ODYsIDc2NzkwLCA3Njc5NCwgNzY3OTgsIAotICAgIDc2ODAyLCA3NjgwNiwgNzY4MTAsIDc2ODE0LCA3NjgxOCwgNzY4MjIsIDc2ODI2LCA3NjgzMCwgNzY4MzQsIDc2ODM4LCAKLSAgICA3Njg0MiwgNzY4NDYsIDc2ODUwLCA3Njg1NCwgNzY4NTgsIDc2ODYyLCA3Njg2NiwgNzY4NzAsIDc2ODc0LCA3Njg3OCwgCi0gICAgNzY4ODIsIDc2ODg2LCA3Njg5MCwgNzY4OTQsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIAotICAgIDc2OTIyLCA3NjkyNiwgNzY5MzAsIDc2OTM0LCA3NjkzOCwgNzY5NDIsIDc2OTQ2LCA3Njk1MCwgNzY5NTQsIDc2OTU4LCAKLSAgICA3Njk2MiwgNzY5NjYsIDAsIDAsIDc2OTcwLCA3Njk3NCwgNzY5NzgsIDc2OTgyLCA3Njk4NiwgNzY5OTAsIDc2OTk0LCAKLSAgICA3Njk5OCwgNzcwMDIsIDc3MDA2LCA3NzAxMCwgNzcwMTQsIDc3MDE4LCA3NzAyMiwgNzcwMjYsIDc3MDMwLCA3NzAzNCwgCi0gICAgNzcwMzgsIDc3MDQyLCA3NzA0NiwgNzcwNTAsIDc3MDU0LCA3NzA1OCwgNzcwNjIsIDc3MDY2LCA3NzA3MCwgNzcwNzQsIAotICAgIDc3MDc4LCA3NzA4MiwgNzcwODYsIDc3MDkwLCA3NzA5NCwgNzcwOTgsIDc3MTAyLCA3NzEwNiwgNzcxMTAsIDc3MTE0LCAKLSAgICA3NzExOCwgNzcxMjIsIDc3MTI2LCA3NzEzMCwgNzcxMzQsIDc3MTM4LCA3NzE0MiwgNzcxNDYsIDc3MTUwLCA3NzE1NCwgCi0gICAgNzcxNTgsIDc3MTYyLCA3NzE2NiwgNzcxNzAsIDc3MTc0LCA3NzE3OCwgNzcxODIsIDc3MTg2LCA3NzE5MCwgNzcxOTQsIAotICAgIDc3MTk4LCA3NzIwMiwgNzcyMDYsIDc3MjEwLCA3NzIxNCwgNzcyMTgsIDc3MjIyLCA3NzIyNiwgNzcyMzAsIDc3MjM0LCAKLSAgICA3NzIzOCwgNzcyNDIsIDc3MjQ2LCA3NzI1MCwgNzcyNTQsIDc3MjU4LCA3NzI2MiwgNzcyNjYsIDc3MjcwLCA3NzI3NCwgCi0gICAgNzcyNzgsIDc3MjgyLCA3NzI4NiwgNzcyOTAsIDc3Mjk0LCA3NzI5OCwgNzczMDIsIDc3MzA2LCA3NzMxMCwgNzczMTQsIAotICAgIDc3MzE4LCA3NzMyMiwgNzczMjYsIDc3MzMwLCA3NzMzNCwgNzczMzgsIDc3MzQyLCA3NzM0NiwgNzczNTAsIDc3MzU0LCAKLSAgICA3NzM1OCwgNzczNjIsIDc3MzY2LCA3NzM3MCwgNzczNzQsIDc3Mzc4LCA3NzM4MiwgNzczODYsIDc3MzkwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3ODI3OCwgNzgyODMsIDc4Mjg4LCA3ODI5MywgNzgyOTgsIDc4MzAzLCA3ODMxMSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzgzMTYsIDc4MzIzLCA3ODMzMCwgNzgzMzcsIDc4MzQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA3ODM1MSwgNzgzNTgsIDc4MzY1LCA3ODM3NSwgNzgzODEsIDc4Mzg3LCA3ODM5MywgNzgzOTksIAorICAgIDc4NDA1LCA3ODQxMSwgNzg0MTgsIDc4NDI0LCA3ODQzMCwgNzg0MzYsIDc4NDQ1LCA3ODQ1NCwgNzg0NjYsIDc4NDc4LCAKKyAgICA3ODQ4NCwgNzg0OTAsIDc4NDk2LCA3ODUwMywgNzg1MTAsIDc4NTE3LCA3ODUyNCwgNzg1MzEsIDAsIDc4NTM4LCA3ODU0NSwgCisgICAgNzg1NTIsIDc4NTYwLCA3ODU2NywgMCwgNzg1NzQsIDAsIDc4NTgxLCA3ODU4OCwgMCwgNzg1OTUsIDc4NjAzLCAwLCAKKyAgICA3ODYxMCwgNzg2MTcsIDc4NjI0LCA3ODYzMSwgNzg2MzgsIDc4NjQ1LCA3ODY1MiwgNzg2NTksIDc4NjY2LCA3ODY3MywgCisgICAgNzg2NzgsIDc4Njg1LCA3ODY5MiwgNzg2OTgsIDc4NzA0LCA3ODcxMCwgNzg3MTYsIDc4NzIyLCA3ODcyOCwgNzg3MzQsIAorICAgIDc4NzQwLCA3ODc0NiwgNzg3NTIsIDc4NzU4LCA3ODc2NCwgNzg3NzAsIDc4Nzc2LCA3ODc4MiwgNzg3ODgsIDc4Nzk0LCAKKyAgICA3ODgwMCwgNzg4MDYsIDc4ODEyLCA3ODgxOCwgNzg4MjQsIDc4ODMwLCA3ODgzNiwgNzg4NDIsIDc4ODQ4LCA3ODg1NCwgCisgICAgNzg4NjAsIDc4ODY2LCA3ODg3MiwgNzg4NzgsIDc4ODg0LCA3ODg5MCwgNzg4OTYsIDc4OTAyLCA3ODkwOCwgNzg5MTQsIAorICAgIDc4OTIwLCA3ODkyNiwgNzg5MzIsIDc4OTM4LCA3ODk0NCwgNzg5NTAsIDc4OTU2LCA3ODk2MiwgNzg5NjgsIDc4OTc0LCAKKyAgICA3ODk4MCwgNzg5ODYsIDc4OTkyLCA3ODk5OCwgNzkwMDQsIDc5MDEwLCA3OTAxNiwgNzkwMjIsIDc5MDI4LCA3OTAzNCwgCisgICAgNzkwNDAsIDc5MDQ2LCA3OTA1MiwgNzkwNTgsIDc5MDY0LCA3OTA3MCwgNzkwNzYsIDc5MDgyLCA3OTA4OCwgNzkwOTQsIAorICAgIDc5MTAwLCA3OTEwNiwgNzkxMTIsIDc5MTE4LCA3OTEyNCwgNzkxMzAsIDc5MTM2LCA3OTE0MiwgNzkxNDgsIDc5MTU2LCAKKyAgICA3OTE2NCwgNzkxNzAsIDc5MTc2LCA3OTE4MiwgNzkxODgsIDc5MTk3LCA3OTIwNiwgNzkyMTQsIDc5MjIyLCA3OTIzMCwgCisgICAgNzkyMzgsIDc5MjQ2LCA3OTI1NCwgNzkyNjIsIDc5MjcwLCA3OTI3NywgNzkyODQsIDc5Mjk0LCA3OTMwNCwgNzkzMDgsIAorICAgIDc5MzEyLCA3OTMxNywgNzkzMjIsIDc5MzI3LCA3OTMzMiwgNzkzNDEsIDc5MzUwLCA3OTM1NiwgNzkzNjIsIDc5MzY5LCAKKyAgICA3OTM3NiwgNzkzODMsIDc5Mzg3LCA3OTM5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNzkzOTksIDc5NDA1LCA3OTQxMSwgNzk0MTcsIDc5NDIzLCA3OTQyOCwgNzk0MzMsIDc5NDM5LCA3OTQ0NSwgCisgICAgNzk0NTEsIDc5NDU3LCA3OTQ2NSwgNzk0NzEsIDc5NDc3LCA3OTQ4NSwgNzk0OTMsIDc5NTAxLCA3OTUwOSwgNzk1MTQsIAorICAgIDc5NTE5LCA3OTUyNCwgNzk1MjksIDc5NTQyLCA3OTU1NSwgNzk1NjUsIDc5NTc1LCA3OTU4NiwgNzk1OTcsIDc5NjA4LCAKKyAgICA3OTYxOSwgNzk2MjksIDc5NjM5LCA3OTY1MCwgNzk2NjEsIDc5NjcyLCA3OTY4MywgNzk2OTMsIDc5NzAzLCA3OTcxMywgCisgICAgNzk3MjksIDc5NzQ1LCA3OTc2MSwgNzk3NjgsIDc5Nzc1LCA3OTc4MiwgNzk3ODksIDc5Nzk5LCA3OTgwOSwgNzk4MTksIAorICAgIDc5ODMxLCA3OTg0MSwgNzk4NDksIDc5ODU3LCA3OTg2NiwgNzk4NzQsIDc5ODg0LCA3OTg5MiwgNzk5MDAsIDc5OTA4LCAKKyAgICA3OTkxNywgNzk5MjUsIDc5OTM1LCA3OTk0MywgNzk5NTEsIDc5OTU5LCA3OTk2OSwgNzk5NzcsIDc5OTg0LCA3OTk5MSwgCisgICAgNzk5OTgsIDgwMDA1LCA4MDAxMywgODAwMjEsIDgwMDI5LCA4MDAzNywgODAwNDUsIDgwMDU0LCA4MDA2MiwgODAwNzAsIAorICAgIDgwMDc4LCA4MDA4NiwgODAwOTQsIDgwMTAzLCA4MDExMSwgODAxMTksIDgwMTI3LCA4MDEzNSwgODAxNDMsIDgwMTUxLCAKKyAgICA4MDE1OSwgODAxNjcsIDgwMTc1LCA4MDE4MywgODAxOTIsIDgwMjAwLCA4MDIxMCwgODAyMTgsIDgwMjI2LCA4MDIzNCwgCisgICAgODAyNDQsIDgwMjUyLCA4MDI2MCwgODAyNjgsIDgwMjc2LCA4MDI4NSwgODAyOTQsIDgwMzAyLCA4MDMxMiwgODAzMjAsIAorICAgIDgwMzI4LCA4MDMzNiwgODAzNDUsIDgwMzUzLCA4MDM2MywgODAzNzEsIDgwMzc4LCA4MDM4NSwgODAzOTMsIDgwNDAwLCAKKyAgICA4MDQwOSwgODA0MTYsIDgwNDI0LCA4MDQzMiwgODA0NDEsIDgwNDQ5LCA4MDQ1OSwgODA0NjcsIDgwNDc1LCA4MDQ4MywgCisgICAgODA0OTMsIDgwNTAxLCA4MDUwOCwgODA1MTUsIDgwNTIzLCA4MDUzMCwgODA1MzksIDgwNTQ2LCA4MDU1NiwgODA1NjYsIAorICAgIDgwNTc3LCA4MDU4NiwgODA1OTUsIDgwNjA0LCA4MDYxMywgODA2MjIsIDgwNjMyLCA4MDY0MywgODA2NTQsIDgwNjY0LCAKKyAgICA4MDY3NSwgODA2ODcsIDgwNjk3LCA4MDcwNiwgODA3MTUsIDgwNzIzLCA4MDczMiwgODA3NDIsIDgwNzUwLCA4MDc1OSwgCisgICAgODA3NjgsIDgwNzc2LCA4MDc4NSwgODA3OTUsIDgwODAzLCA4MDgxMiwgODA4MjEsIDgwODI5LCA4MDgzOCwgODA4NDgsIAorICAgIDgwODU2LCA4MDg2NiwgODA4NzQsIDgwODg0LCA4MDg5MiwgODA5MDAsIDgwOTA5LCA4MDkxNywgODA5MjcsIDgwOTM1LCAKKyAgICA4MDk0MywgODA5NTMsIDgwOTYxLCA4MDk2OCwgODA5NzUsIDgwOTg0LCA4MDk5MywgODEwMDEsIDgxMDEwLCA4MTAyMCwgCisgICAgODEwMjgsIDgxMDM5LCA4MTA0NywgODEwNTUsIDgxMDYyLCA4MTA3MCwgODEwNzksIDgxMDg2LCA4MTA5NiwgODExMDYsIAorICAgIDgxMTE3LCA4MTEyNywgODExMzgsIDgxMTQ2LCA4MTE1NCwgODExNjMsIDgxMTcxLCA4MTE4MCwgODExODgsIDgxMTk2LCAKKyAgICA4MTIwNSwgODEyMTMsIDgxMjIyLCA4MTIzMCwgODEyMzcsIDgxMjQ0LCA4MTI1MSwgODEyNTgsIDgxMjY2LCA4MTI3NCwgCisgICAgODEyODIsIDgxMjkwLCA4MTI5OSwgODEzMDcsIDgxMzE1LCA4MTMyNCwgODEzMzIsIDgxMzQwLCA4MTM0OCwgODEzNTcsIAorICAgIDgxMzY1LCA4MTM3MywgODEzODEsIDgxMzg5LCA4MTM5NywgODE0MDUsIDgxNDEzLCA4MTQyMSwgODE0MjksIDgxNDM4LCAKKyAgICA4MTQ0NiwgODE0NTQsIDgxNDYyLCA4MTQ3MCwgODE0NzgsIDgxNDg3LCA4MTQ5NiwgODE1MDQsIDgxNTEyLCA4MTUyMCwgCisgICAgODE1MjksIDgxNTM3LCA4MTU0NiwgODE1NTMsIDgxNTYwLCA4MTU2OCwgODE1NzUsIDgxNTgzLCA4MTU5MSwgODE2MDAsIAorICAgIDgxNjA4LCA4MTYxNywgODE2MjUsIDgxNjMzLCA4MTY0MywgODE2NTAsIDgxNjU3LCA4MTY2NSwgODE2NzIsIDgxNjgwLCAKKyAgICA4MTY5MCwgODE3MDEsIDgxNzA5LCA4MTcxOCwgODE3MjYsIDgxNzM1LCA4MTc0MywgODE3NTIsIDgxNzYwLCA4MTc2OSwgCisgICAgODE3NzcsIDgxNzg2LCA4MTc5NSwgODE4MDMsIDgxODExLCA4MTgxOSwgODE4MjgsIDgxODM1LCA4MTg0MywgODE4NTIsIAorICAgIDgxODYxLCA4MTg3MCwgODE4ODAsIDgxODg4LCA4MTg5OCwgODE5MDYsIDgxOTE2LCA4MTkyNCwgODE5MzQsIDgxOTQyLCAKKyAgICA4MTk1MiwgODE5NjAsIDgxOTY5LCA4MTk3NiwgODE5ODUsIDgxOTkyLCA4MjAwMiwgODIwMTAsIDgyMDIwLCA4MjAyOCwgCisgICAgODIwMzgsIDgyMDQ2LCA4MjA1NCwgODIwNjIsIDgyMDcxLCA4MjA3OSwgODIwODgsIDgyMDk3LCA4MjEwNiwgODIxMTUsIAorICAgIDgyMTI1LCA4MjEzMywgODIxNDMsIDgyMTUxLCA4MjE2MSwgODIxNjksIDgyMTc5LCA4MjE4NywgODIxOTcsIDgyMjA1LCAKKyAgICA4MjIxNCwgODIyMjEsIDgyMjMwLCA4MjIzNywgODIyNDcsIDgyMjU1LCA4MjI2NSwgODIyNzMsIDgyMjgzLCA4MjI5MSwgCisgICAgODIyOTksIDgyMzA3LCA4MjMxNiwgODIzMjQsIDgyMzMzLCA4MjM0MiwgODIzNTEsIDgyMzYwLCA4MjM2OCwgODIzNzYsIAorICAgIDgyMzg1LCA4MjM5MywgODI0MDIsIDgyNDExLCA4MjQxOSwgODI0MjcsIDgyNDM1LCA4MjQ0NCwgODI0NTIsIDgyNDYwLCAKKyAgICA4MjQ2OSwgODI0NzcsIDgyNDg1LCA4MjQ5MywgODI1MDEsIDgyNTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4MjUxMSwgODI1MjEsIDgyNTMxLCA4MjU0MSwgODI1NTEsIDgyNTYyLCA4MjU3MiwgODI1ODIsIAorICAgIDgyNTkzLCA4MjYwMiwgODI2MTEsIDgyNjIwLCA4MjYzMSwgODI2NDEsIDgyNjUxLCA4MjY2MywgODI2NzMsIDgyNjgzLCAKKyAgICA4MjY5MywgODI3MDMsIDgyNzEzLCA4MjcyMywgODI3MzMsIDgyNzQzLCA4Mjc1MywgODI3NjMsIDgyNzczLCA4Mjc4NCwgCisgICAgODI3OTUsIDgyODA1LCA4MjgxNSwgODI4MjcsIDgyODM4LCA4Mjg0OSwgODI4NTksIDgyODY5LCA4Mjg3OSwgODI4ODksIAorICAgIDgyODk5LCA4MjkwOSwgODI5MTksIDgyOTMxLCA4Mjk0MSwgODI5NTEsIDgyOTYzLCA4Mjk3NCwgODI5ODUsIDgyOTk1LCAKKyAgICA4MzAwNSwgODMwMTUsIDgzMDI1LCA4MzAzNywgODMwNDcsIDgzMDU3LCA4MzA2OCwgODMwNzksIDgzMDg5LCA4MzA5OSwgCisgICAgODMxMDgsIDgzMTE3LCA4MzEyNiwgODMxMzUsIDgzMTQ0LCA4MzE1NCwgMCwgMCwgODMxNjQsIDgzMTc0LCA4MzE4NCwgCisgICAgODMxOTQsIDgzMjA0LCA4MzIxNiwgODMyMjYsIDgzMjM2LCA4MzI0OCwgODMyNTgsIDgzMjcwLCA4MzI3OSwgODMyODgsIAorICAgIDgzMjk5LCA4MzMwOSwgODMzMjEsIDgzMzMyLCA4MzM0NSwgODMzNTUsIDgzMzY3LCA4MzM3NiwgODMzODcsIDgzMzk4LCAKKyAgICA4MzQxMSwgODM0MjEsIDgzNDMxLCA4MzQ0MSwgODM0NTEsIDgzNDYxLCA4MzQ3MCwgODM0NzksIDgzNDg4LCA4MzQ5NywgCisgICAgODM1MDcsIDgzNTE3LCA4MzUyNywgODM1MzcsIDgzNTQ3LCA4MzU1NywgODM1NjcsIDgzNTc3LCA4MzU4NywgODM1OTcsIAorICAgIDgzNjA3LCA4MzYxNywgODM2MjYsIDgzNjM1LCA4MzY0NCwgODM2NTQsIDgzNjY0LCA4MzY3NCwgODM2ODQsIDgzNjk0LCAKKyAgICA4MzcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODM3MTUsIDgzNzMwLCAKKyAgICA4Mzc0NSwgODM3NTEsIDgzNzU3LCA4Mzc2MywgODM3NjksIDgzNzc1LCA4Mzc4MSwgODM3ODcsIDgzNzkzLCA4MzgwMSwgCisgICAgODM4MDUsIDgzODA4LCAwLCAwLCA4MzgxNiwgODM4MTksIDgzODIyLCA4MzgyNSwgODM4MjgsIDgzODMxLCA4MzgzNCwgCisgICAgODM4MzcsIDgzODQwLCA4Mzg0MywgODM4NDYsIDgzODQ5LCA4Mzg1MiwgODM4NTUsIDgzODU4LCA4Mzg2MSwgODM4NjQsIAorICAgIDgzODcyLCA4Mzg4MSwgODM4OTIsIDgzOTAwLCA4MzkwOCwgODM5MTcsIDgzOTI2LCA4MzkzNywgODM5NDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDgzOTU4LCA4Mzk2MywgODM5NjgsIDgzOTc1LCA4Mzk4MiwgODM5ODgsIDgzOTk0LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA4Mzk5OSwgODQwMDksIDg0MDE5LCA4NDAyOSwgODQwMzgsIDg0MDQ5LCA4NDA1OCwgODQwNjcsIAorICAgIDg0MDc3LCA4NDA4NywgODQwOTksIDg0MTExLCA4NDEyMiwgODQxMzMsIDg0MTQ0LCA4NDE1NSwgODQxNjUsIDg0MTc1LCAKKyAgICA4NDE4NSwgODQxOTUsIDg0MjA2LCA4NDIxNywgODQyMjEsIDg0MjI2LCA4NDIzNSwgODQyNDQsIDg0MjQ4LCA4NDI1MiwgCisgICAgODQyNTYsIDg0MjYxLCA4NDI2NiwgODQyNzEsIDg0Mjc2LCA4NDI3OSwgODQyODMsIDAsIDg0Mjg4LCA4NDI5MSwgODQyOTQsIAorICAgIDg0Mjk4LCA4NDMwMiwgODQzMDcsIDg0MzExLCA4NDMxNSwgODQzMjAsIDg0MzI1LCA4NDMzMiwgODQzMzksIDg0MzQyLCAKKyAgICA4NDM0NSwgODQzNDgsIDg0MzUxLCA4NDM1NCwgODQzNTgsIDg0MzYyLCAwLCA4NDM2NiwgODQzNzEsIDg0Mzc1LCA4NDM3OSwgCisgICAgMCwgMCwgMCwgMCwgODQzODQsIDg0Mzg5LCA4NDM5NiwgODQ0MDEsIDg0NDA2LCAwLCA4NDQxMSwgODQ0MTYsIDg0NDIxLCAKKyAgICA4NDQyNiwgODQ0MzEsIDg0NDM2LCA4NDQ0MSwgODQ0NDYsIDg0NDUxLCA4NDQ1NiwgODQ0NjEsIDg0NDY2LCA4NDQ3NSwgCisgICAgODQ0ODQsIDg0NDkyLCA4NDUwMCwgODQ1MDksIDg0NTE4LCA4NDUyNywgODQ1MzYsIDg0NTQ0LCA4NDU1MiwgODQ1NjAsIAorICAgIDg0NTY4LCA4NDU3MywgODQ1NzgsIDg0NTg0LCA4NDU5MCwgODQ1OTYsIDg0NjAyLCA4NDYxMCwgODQ2MTgsIDg0NjI0LCAKKyAgICA4NDYzMCwgODQ2MzYsIDg0NjQyLCA4NDY0OCwgODQ2NTQsIDg0NjYwLCA4NDY2NiwgODQ2NzEsIDg0Njc2LCA4NDY4MSwgCisgICAgODQ2ODYsIDg0NjkxLCA4NDY5NiwgODQ3MDEsIDg0NzA2LCA4NDcxMiwgODQ3MTgsIDg0NzI0LCA4NDczMCwgODQ3MzYsIAorICAgIDg0NzQyLCA4NDc0OCwgODQ3NTQsIDg0NzYwLCA4NDc2NiwgODQ3NzIsIDg0Nzc4LCA4NDc4NCwgODQ3OTAsIDg0Nzk2LCAKKyAgICA4NDgwMiwgODQ4MDgsIDg0ODE0LCA4NDgyMCwgODQ4MjYsIDg0ODMyLCA4NDgzOCwgODQ4NDQsIDg0ODUwLCA4NDg1NiwgCisgICAgODQ4NjIsIDg0ODY4LCA4NDg3NCwgODQ4ODAsIDg0ODg2LCA4NDg5MiwgODQ4OTgsIDg0OTA0LCA4NDkxMCwgODQ5MTYsIAorICAgIDg0OTIyLCA4NDkyOCwgODQ5MzQsIDg0OTQwLCA4NDk0NiwgODQ5NTIsIDg0OTU4LCA4NDk2NCwgODQ5NzAsIDg0OTc2LCAKKyAgICA4NDk4MiwgODQ5ODgsIDg0OTk0LCA4NTAwMCwgODUwMDYsIDg1MDEyLCA4NTAxOCwgODUwMjQsIDg1MDMwLCA4NTAzNiwgCisgICAgODUwNDIsIDg1MDQ4LCA4NTA1NCwgODUwNjAsIDg1MDY2LCA4NTA3MSwgODUwNzYsIDg1MDgxLCA4NTA4NiwgODUwOTIsIAorICAgIDg1MDk4LCA4NTEwNCwgODUxMTAsIDg1MTE2LCA4NTEyMiwgODUxMjgsIDg1MTM0LCA4NTE0MCwgODUxNDYsIDg1MTUzLCAKKyAgICA4NTE2MCwgODUxNjUsIDg1MTcwLCA4NTE3NSwgODUxODAsIDg1MTkyLCA4NTIwNCwgODUyMTUsIDg1MjI2LCA4NTIzOCwgCisgICAgODUyNTAsIDg1MjU4LCAwLCAwLCA4NTI2NiwgMCwgODUyNzQsIDg1Mjc4LCA4NTI4MiwgODUyODUsIDg1Mjg5LCA4NTI5MywgCisgICAgODUyOTYsIDg1Mjk5LCA4NTMwMywgODUzMDcsIDg1MzEwLCA4NTMxMywgODUzMTYsIDg1MzE5LCA4NTMyNCwgODUzMjcsIAorICAgIDg1MzMxLCA4NTMzNCwgODUzMzcsIDg1MzQwLCA4NTM0MywgODUzNDYsIDg1MzQ5LCA4NTM1MiwgODUzNTUsIDg1MzU4LCAKKyAgICA4NTM2MSwgODUzNjQsIDg1MzY4LCA4NTM3MiwgODUzNzYsIDg1MzgwLCA4NTM4NSwgODUzOTAsIDg1Mzk2LCA4NTQwMiwgCisgICAgODU0MDgsIDg1NDEzLCA4NTQxOSwgODU0MjUsIDg1NDMxLCA4NTQzNiwgODU0NDIsIDg1NDQ4LCA4NTQ1MywgODU0NTgsIAorICAgIDg1NDY0LCA4NTQ2OSwgODU0NzUsIDg1NDgxLCA4NTQ4NiwgODU0OTIsIDg1NDk4LCA4NTUwMywgODU1MDksIDg1NTE1LCAKKyAgICA4NTUyMSwgODU1MjcsIDg1NTMzLCA4NTUzNywgODU1NDIsIDg1NTQ2LCA4NTU1MSwgODU1NTUsIDg1NTYwLCA4NTU2NSwgCisgICAgODU1NzEsIDg1NTc3LCA4NTU4MywgODU1ODgsIDg1NTk0LCA4NTYwMCwgODU2MDYsIDg1NjExLCA4NTYxNywgODU2MjMsIAorICAgIDg1NjI4LCA4NTYzMywgODU2MzksIDg1NjQ0LCA4NTY1MCwgODU2NTYsIDg1NjYxLCA4NTY2NywgODU2NzMsIDg1Njc4LCAKKyAgICA4NTY4NCwgODU2OTAsIDg1Njk2LCA4NTcwMiwgODU3MDgsIDg1NzEzLCA4NTcxNywgODU3MjIsIDg1NzI0LCA4NTcyOSwgCisgICAgODU3MzQsIDg1NzQwLCA4NTc0NSwgODU3NTAsIDg1NzU0LCA4NTc2MCwgODU3NjUsIDg1NzcwLCA4NTc3NSwgODU3ODAsIAorICAgIDg1Nzg1LCA4NTc5MCwgODU3OTUsIDg1ODAxLCA4NTgwNywgODU4MTMsIDg1ODIxLCA4NTgyNSwgODU4MjksIDg1ODMzLCAKKyAgICA4NTgzNywgODU4NDEsIDg1ODQ1LCA4NTg1MCwgODU4NTUsIDg1ODYwLCA4NTg2NSwgODU4NjksIDg1ODc0LCA4NTg3OSwgCisgICAgODU4ODQsIDg1ODg5LCA4NTg5NCwgODU4OTksIDg1OTA0LCA4NTkwOSwgODU5MTMsIDg1OTE3LCA4NTkyMiwgODU5MjcsIAorICAgIDg1OTMyLCA4NTkzNywgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NSwgODU5NzAsIDg1OTc1LCAKKyAgICA4NTk4MCwgODU5ODUsIDg1OTg5LCA4NTk5NCwgODU5OTksIDg2MDAzLCA4NjAwOCwgODYwMTMsIDg2MDE4LCA4NjAyMywgCisgICAgODYwMjgsIDg2MDMzLCA4NjA0MCwgODYwNDcsIDg2MDUxLCA4NjA1NiwgODYwNjEsIDg2MDY2LCA4NjA3MSwgODYwNzYsIAorICAgIDg2MDgxLCA4NjA4NiwgODYwOTEsIDg2MDk2LCA4NjEwMSwgODYxMDYsIDg2MTExLCA4NjExNiwgODYxMjEsIDg2MTI2LCAKKyAgICA4NjEzMSwgODYxMzYsIDg2MTQxLCA4NjE0NiwgODYxNTEsIDg2MTU2LCA4NjE2MSwgODYxNjYsIDg2MTcxLCA4NjE3NiwgCisgICAgODYxODEsIDg2MTg2LCA4NjE5MSwgODYxOTYsIDAsIDAsIDAsIDg2MjAxLCA4NjIwNSwgODYyMTAsIDg2MjE0LCA4NjIxOSwgCisgICAgODYyMjQsIDAsIDAsIDg2MjI4LCA4NjIzMywgODYyMzgsIDg2MjQyLCA4NjI0NywgODYyNTIsIDAsIDAsIDg2MjU3LCAKKyAgICA4NjI2MiwgODYyNjYsIDg2MjcxLCA4NjI3NiwgODYyODEsIDAsIDAsIDg2Mjg2LCA4NjI5MSwgODYyOTYsIDAsIDAsIDAsIAorICAgIDg2MzAwLCA4NjMwNCwgODYzMDgsIDg2MzEyLCA4NjMxNSwgODYzMTksIDg2MzIzLCAwLCA4NjMyNywgODYzMzMsIDg2MzM2LCAKKyAgICA4NjM0MCwgODYzNDMsIDg2MzQ3LCA4NjM1MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYzNTUsIDg2MzYxLCAKKyAgICA4NjM2NywgODYzNzMsIDg2Mzc5LCAwLCAwLCA4NjM4MywgODYzODksIDg2Mzk1LCA4NjQwMSwgODY0MDcsIDg2NDEzLCAKKyAgICA4NjQyMCwgODY0MjcsIDg2NDM0LCA4NjQ0MSwgODY0NDgsIDg2NDU1LCAwLCA4NjQ2MiwgODY0NjksIDg2NDc2LCA4NjQ4MiwgCisgICAgODY0ODksIDg2NDk2LCA4NjUwMywgODY1MTAsIDg2NTE2LCA4NjUyMywgODY1MzAsIDg2NTM3LCA4NjU0NCwgODY1NTAsIAorICAgIDg2NTU3LCA4NjU2NCwgODY1NzEsIDg2NTc4LCA4NjU4NCwgODY1OTEsIDg2NTk4LCA4NjYwNSwgODY2MTIsIDg2NjE5LCAKKyAgICA4NjYyNiwgODY2MzMsIDAsIDg2NjQwLCA4NjY0NiwgODY2NTMsIDg2NjYwLCA4NjY2NywgODY2NzQsIDg2NjgwLCA4NjY4NywgCisgICAgODY2OTQsIDg2NzAxLCA4NjcwOCwgODY3MTUsIDg2NzIyLCA4NjcyOSwgODY3MzUsIDg2NzQyLCA4Njc0OSwgODY3NTYsIAorICAgIDg2NzYzLCAwLCA4Njc3MCwgODY3NzcsIDAsIDg2Nzg0LCA4Njc5MSwgODY3OTgsIDg2ODA1LCA4NjgxMiwgODY4MTksIAorICAgIDg2ODI2LCA4NjgzMywgODY4NDAsIDg2ODQ3LCA4Njg1NCwgODY4NjEsIDg2ODY4LCA4Njg3NSwgODY4ODIsIDAsIDAsIAorICAgIDg2ODg4LCA4Njg5MywgODY4OTgsIDg2OTAzLCA4NjkwOCwgODY5MTMsIDg2OTE4LCA4NjkyMywgODY5MjgsIDg2OTMzLCAKKyAgICA4NjkzOCwgODY5NDMsIDg2OTQ4LCA4Njk1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODY5NTgsIDg2OTY1LCAKKyAgICA4Njk3MiwgODY5NzksIDg2OTg2LCA4Njk5MywgODcwMDAsIDg3MDA3LCA4NzAxNCwgODcwMjEsIDg3MDI4LCA4NzAzNSwgCisgICAgODcwNDIsIDg3MDQ5LCA4NzA1NiwgODcwNjMsIDg3MDcwLCA4NzA3NywgODcwODQsIDg3MDkxLCA4NzA5OSwgODcxMDcsIAorICAgIDg3MTE0LCA4NzEyMSwgODcxMjYsIDg3MTM0LCA4NzE0MiwgODcxNDksIDg3MTU2LCA4NzE2MSwgODcxNjgsIDg3MTczLCAKKyAgICA4NzE3OCwgODcxODUsIDg3MTkwLCA4NzE5NSwgODcyMDAsIDg3MjA4LCA4NzIxMywgODcyMTgsIDg3MjI1LCA4NzIzMCwgCisgICAgODcyMzUsIDg3MjQyLCA4NzI0OSwgODcyNTQsIDg3MjU5LCA4NzI2NCwgODcyNjksIDg3Mjc0LCA4NzI3OSwgODcyODQsIAorICAgIDg3Mjg5LCA4NzI5NCwgODczMDEsIDg3MzA2LCA4NzMxMywgODczMTgsIDg3MzIzLCA4NzMyOCwgODczMzMsIDg3MzM4LCAKKyAgICA4NzM0MywgODczNDgsIDg3MzUzLCA4NzM1OCwgODczNjMsIDg3MzY4LCA4NzM3NSwgODczODIsIDg3Mzg5LCA4NzM5NiwgCisgICAgODc0MDIsIDg3NDA3LCA4NzQxNCwgODc0MTksIDg3NDI0LCA4NzQzMywgODc0NDAsIDg3NDQ5LCA4NzQ1NiwgODc0NjEsIAorICAgIDg3NDY2LCA4NzQ3NCwgODc0NzksIDg3NDg0LCA4NzQ4OSwgODc0OTQsIDg3NDk5LCA4NzUwNiwgODc1MTEsIDg3NTE2LCAKKyAgICA4NzUyMSwgODc1MjYsIDg3NTMxLCA4NzUzOCwgODc1NDUsIDg3NTUyLCA4NzU1OSwgODc1NjYsIDg3NTczLCA4NzU4MCwgCisgICAgODc1ODcsIDg3NTk0LCA4NzYwMSwgODc2MDgsIDg3NjE1LCA4NzYyMiwgODc2MjksIDg3NjM2LCA4NzY0MywgODc2NTAsIAorICAgIDg3NjU3LCA4NzY2NCwgODc2NzEsIDg3Njc4LCA4NzY4NSwgODc2OTIsIDg3Njk5LCA4NzcwNiwgODc3MTMsIDg3NzIwLCAKKyAgICA4NzcyNywgMCwgMCwgMCwgMCwgMCwgODc3MzQsIDg3NzQyLCA4Nzc1MCwgMCwgMCwgMCwgMCwgODc3NTUsIDg3NzU5LCAKKyAgICA4Nzc2MywgODc3NjcsIDg3NzcxLCA4Nzc3NSwgODc3NzksIDg3NzgzLCA4Nzc4NywgODc3OTEsIDg3Nzk2LCA4NzgwMSwgCisgICAgODc4MDYsIDg3ODExLCA4NzgxNiwgODc4MjEsIDg3ODI2LCA4NzgzMSwgODc4MzYsIDg3ODQyLCA4Nzg0OCwgODc4NTQsIAorICAgIDg3ODYxLCA4Nzg2OCwgODc4NzUsIDg3ODgyLCA4Nzg4OSwgODc4OTYsIDg3OTAyLCA4NzkwOCwgODc5MTQsIDg3OTIxLCAKKyAgICA4NzkyOCwgODc5MzUsIDg3OTQyLCA4Nzk0OSwgODc5NTYsIDg3OTYzLCA4Nzk3MCwgODc5NzcsIDg3OTg0LCA4Nzk5MSwgCisgICAgODc5OTgsIDg4MDA1LCA4ODAxMiwgMCwgMCwgMCwgODgwMTksIDg4MDI3LCA4ODAzNSwgODgwNDMsIDg4MDUxLCA4ODA1OSwgCisgICAgODgwNjksIDg4MDc5LCA4ODA4NywgODgwOTUsIDg4MTAzLCA4ODExMSwgODgxMTksIDg4MTI1LCA4ODEzMiwgODgxNDEsIAorICAgIDg4MTUwLCA4ODE1OSwgODgxNjgsIDg4MTc3LCA4ODE4NiwgODgxOTYsIDg4MjA3LCA4ODIxNywgODgyMjgsIDg4MjM3LCAKKyAgICA4ODI0NiwgODgyNTUsIDg4MjY1LCA4ODI3NiwgODgyODYsIDg4Mjk3LCA4ODMwOCwgODgzMTcsIDg4MzI1LCA4ODMzMSwgCisgICAgODgzMzcsIDg4MzQzLCA4ODM0OSwgODgzNTcsIDg4MzY1LCA4ODM3MSwgODgzNzgsIDg4Mzg4LCA4ODM5NSwgODg0MDIsIAorICAgIDg4NDA5LCA4ODQxNiwgODg0MjMsIDg4NDMzLCA4ODQ0MCwgODg0NDcsIDg4NDU1LCA4ODQ2MywgODg0NzIsIDg4NDgxLCAKKyAgICA4ODQ5MCwgODg0OTksIDg4NTA4LCA4ODUxNiwgODg1MjUsIDg4NTM0LCA4ODU0MywgODg1NDcsIDg4NTU0LCA4ODU1OSwgCisgICAgODg1NjQsIDg4NTY4LCA4ODU3MiwgODg1NzYsIDg4NTgwLCA4ODU4NSwgODg1OTAsIDg4NTk2LCA4ODYwMiwgODg2MDYsIAorICAgIDg4NjEyLCA4ODYxNiwgODg2MjAsIDg4NjI0LCA4ODYyOCwgODg2MzIsIDg4NjM2LCA4ODY0MiwgMCwgMCwgMCwgMCwgMCwgCisgICAgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MywgODg2NzgsIDg4NjgzLCA4ODY4OCwgODg2OTMsIAorICAgIDg4Njk4LCA4ODcwMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzczOTQsIDc3Mzk5LCA3NzQwNCwgNzc0MDksIDc3NDE0LCAKLSAgICA3NzQxOSwgNzc0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NDMyLCA3NzQzOSwgNzc0NDYsIAotICAgIDc3NDUzLCA3NzQ2MCwgMCwgMCwgMCwgMCwgMCwgNzc0NjcsIDc3NDc0LCA3NzQ4MSwgNzc0OTEsIDc3NDk3LCA3NzUwMywgCi0gICAgNzc1MDksIDc3NTE1LCA3NzUyMSwgNzc1MjcsIDc3NTM0LCA3NzU0MCwgNzc1NDYsIDc3NTUyLCA3NzU2MSwgNzc1NzAsIAotICAgIDc3NTgyLCA3NzU5NCwgNzc2MDAsIDc3NjA2LCA3NzYxMiwgNzc2MTksIDc3NjI2LCA3NzYzMywgNzc2NDAsIDc3NjQ3LCAwLCAKLSAgICA3NzY1NCwgNzc2NjEsIDc3NjY4LCA3NzY3NiwgNzc2ODMsIDAsIDc3NjkwLCAwLCA3NzY5NywgNzc3MDQsIDAsIDc3NzExLCAKLSAgICA3NzcxOSwgMCwgNzc3MjYsIDc3NzMzLCA3Nzc0MCwgNzc3NDcsIDc3NzU0LCA3Nzc2MSwgNzc3NjgsIDc3Nzc1LCA3Nzc4MiwgCi0gICAgNzc3ODksIDc3Nzk0LCA3NzgwMSwgNzc4MDgsIDc3ODE0LCA3NzgyMCwgNzc4MjYsIDc3ODMyLCA3NzgzOCwgNzc4NDQsIAotICAgIDc3ODUwLCA3Nzg1NiwgNzc4NjIsIDc3ODY4LCA3Nzg3NCwgNzc4ODAsIDc3ODg2LCA3Nzg5MiwgNzc4OTgsIDc3OTA0LCAKLSAgICA3NzkxMCwgNzc5MTYsIDc3OTIyLCA3NzkyOCwgNzc5MzQsIDc3OTQwLCA3Nzk0NiwgNzc5NTIsIDc3OTU4LCA3Nzk2NCwgCi0gICAgNzc5NzAsIDc3OTc2LCA3Nzk4MiwgNzc5ODgsIDc3OTk0LCA3ODAwMCwgNzgwMDYsIDc4MDEyLCA3ODAxOCwgNzgwMjQsIAotICAgIDc4MDMwLCA3ODAzNiwgNzgwNDIsIDc4MDQ4LCA3ODA1NCwgNzgwNjAsIDc4MDY2LCA3ODA3MiwgNzgwNzgsIDc4MDg0LCAKLSAgICA3ODA5MCwgNzgwOTYsIDc4MTAyLCA3ODEwOCwgNzgxMTQsIDc4MTIwLCA3ODEyNiwgNzgxMzIsIDc4MTM4LCA3ODE0NCwgCi0gICAgNzgxNTAsIDc4MTU2LCA3ODE2MiwgNzgxNjgsIDc4MTc0LCA3ODE4MCwgNzgxODYsIDc4MTkyLCA3ODE5OCwgNzgyMDQsIAotICAgIDc4MjEwLCA3ODIxNiwgNzgyMjIsIDc4MjI4LCA3ODIzNCwgNzgyNDAsIDc4MjQ2LCA3ODI1MiwgNzgyNTgsIDc4MjY0LCAKLSAgICA3ODI3MiwgNzgyODAsIDc4Mjg2LCA3ODI5MiwgNzgyOTgsIDc4MzA0LCA3ODMxMywgNzgzMjIsIDc4MzMwLCA3ODMzOCwgCi0gICAgNzgzNDYsIDc4MzU0LCA3ODM2MiwgNzgzNzAsIDc4Mzc4LCA3ODM4NiwgNzgzOTMsIDc4NDAwLCA3ODQxMCwgNzg0MjAsIAotICAgIDc4NDI0LCA3ODQyOCwgNzg0MzMsIDc4NDM4LCA3ODQ0MywgNzg0NDgsIDc4NDU3LCA3ODQ2NiwgNzg0NzIsIDc4NDc4LCAKLSAgICA3ODQ4NSwgNzg0OTIsIDc4NDk5LCA3ODUwMywgNzg1MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDc4NTE1LCA3ODUyMSwgNzg1MjcsIDc4NTMzLCA3ODUzOSwgNzg1NDQsIDc4NTQ5LCA3ODU1NSwgCi0gICAgNzg1NjEsIDc4NTY3LCA3ODU3MywgNzg1ODEsIDc4NTg3LCA3ODU5MywgNzg2MDEsIDc4NjA5LCA3ODYxNywgNzg2MjUsIAotICAgIDc4NjMwLCA3ODYzNSwgNzg2NDAsIDc4NjQ1LCA3ODY1NywgNzg2NjksIDc4Njc5LCA3ODY4OSwgNzg3MDAsIDc4NzExLCAKLSAgICA3ODcyMiwgNzg3MzMsIDc4NzQzLCA3ODc1MywgNzg3NjQsIDc4Nzc1LCA3ODc4NiwgNzg3OTcsIDc4ODA3LCA3ODgxNywgCi0gICAgNzg4MjcsIDc4ODQyLCA3ODg1NywgNzg4NzIsIDc4ODc5LCA3ODg4NiwgNzg4OTMsIDc4OTAwLCA3ODkxMCwgNzg5MjAsIAotICAgIDc4OTMwLCA3ODk0MSwgNzg5NTEsIDc4OTU5LCA3ODk2NywgNzg5NzYsIDc4OTg0LCA3ODk5MywgNzkwMDEsIDc5MDA5LCAKLSAgICA3OTAxNywgNzkwMjYsIDc5MDM0LCA3OTA0MywgNzkwNTEsIDc5MDU5LCA3OTA2NywgNzkwNzYsIDc5MDg0LCA3OTA5MSwgCi0gICAgNzkwOTgsIDc5MTA1LCA3OTExMiwgNzkxMjAsIDc5MTI4LCA3OTEzNiwgNzkxNDQsIDc5MTUyLCA3OTE2MSwgNzkxNjksIAotICAgIDc5MTc3LCA3OTE4NSwgNzkxOTMsIDc5MjAxLCA3OTIxMCwgNzkyMTgsIDc5MjI2LCA3OTIzNCwgNzkyNDIsIDc5MjUwLCAKLSAgICA3OTI1OCwgNzkyNjYsIDc5Mjc0LCA3OTI4MiwgNzkyOTAsIDc5Mjk5LCA3OTMwNywgNzkzMTYsIDc5MzI0LCA3OTMzMiwgCi0gICAgNzkzNDAsIDc5MzQ5LCA3OTM1NywgNzkzNjUsIDc5MzczLCA3OTM4MSwgNzkzOTAsIDc5Mzk5LCA3OTQwNywgNzk0MTYsIAotICAgIDc5NDI0LCA3OTQzMiwgNzk0NDAsIDc5NDQ5LCA3OTQ1NywgNzk0NjYsIDc5NDc0LCA3OTQ4MSwgNzk0ODgsIDc5NDk2LCAKLSAgICA3OTUwMywgNzk1MTEsIDc5NTE4LCA3OTUyNiwgNzk1MzQsIDc5NTQzLCA3OTU1MSwgNzk1NjAsIDc5NTY4LCA3OTU3NiwgCi0gICAgNzk1ODQsIDc5NTkzLCA3OTYwMSwgNzk2MDgsIDc5NjE1LCA3OTYyMywgNzk2MzAsIDc5NjM4LCA3OTY0NSwgNzk2NTUsIAotICAgIDc5NjY1LCA3OTY3NSwgNzk2ODQsIDc5NjkzLCA3OTcwMiwgNzk3MTEsIDc5NzIwLCA3OTczMCwgNzk3NDEsIDc5NzUyLCAKLSAgICA3OTc2MiwgNzk3NzMsIDc5Nzg0LCA3OTc5NCwgNzk4MDMsIDc5ODEyLCA3OTgyMCwgNzk4MjksIDc5ODM4LCA3OTg0NiwgCi0gICAgNzk4NTUsIDc5ODY0LCA3OTg3MiwgNzk4ODEsIDc5ODkwLCA3OTg5OCwgNzk5MDcsIDc5OTE2LCA3OTkyNCwgNzk5MzMsIAotICAgIDc5OTQyLCA3OTk1MCwgNzk5NTksIDc5OTY3LCA3OTk3NiwgNzk5ODQsIDc5OTkyLCA4MDAwMSwgODAwMDksIDgwMDE4LCAKLSAgICA4MDAyNiwgODAwMzQsIDgwMDQzLCA4MDA1MSwgODAwNTgsIDgwMDY1LCA4MDA3NCwgODAwODMsIDgwMDkxLCA4MDEwMCwgCi0gICAgODAxMDksIDgwMTE3LCA4MDEyNywgODAxMzUsIDgwMTQzLCA4MDE1MCwgODAxNTgsIDgwMTY2LCA4MDE3MywgODAxODMsIAotICAgIDgwMTkzLCA4MDIwNCwgODAyMTQsIDgwMjI1LCA4MDIzMywgODAyNDEsIDgwMjUwLCA4MDI1OCwgODAyNjcsIDgwMjc1LCAKLSAgICA4MDI4MywgODAyOTIsIDgwMzAwLCA4MDMwOSwgODAzMTcsIDgwMzI0LCA4MDMzMSwgODAzMzgsIDgwMzQ1LCA4MDM1MywgCi0gICAgODAzNjEsIDgwMzY5LCA4MDM3NywgODAzODYsIDgwMzk0LCA4MDQwMiwgODA0MTEsIDgwNDE5LCA4MDQyNywgODA0MzUsIAotICAgIDgwNDQ0LCA4MDQ1MiwgODA0NjAsIDgwNDY4LCA4MDQ3NiwgODA0ODQsIDgwNDkyLCA4MDUwMCwgODA1MDgsIDgwNTE2LCAKLSAgICA4MDUyNSwgODA1MzMsIDgwNTQxLCA4MDU0OSwgODA1NTcsIDgwNTY1LCA4MDU3NCwgODA1ODMsIDgwNTkxLCA4MDU5OSwgCi0gICAgODA2MDcsIDgwNjE2LCA4MDYyNCwgODA2MzMsIDgwNjQwLCA4MDY0NywgODA2NTUsIDgwNjYyLCA4MDY3MCwgODA2NzgsIAotICAgIDgwNjg3LCA4MDY5NSwgODA3MDQsIDgwNzEyLCA4MDcyMCwgODA3MzAsIDgwNzM3LCA4MDc0NCwgODA3NTIsIDgwNzU5LCAKLSAgICA4MDc2NywgODA3NzcsIDgwNzg4LCA4MDc5NiwgODA4MDUsIDgwODEzLCA4MDgyMiwgODA4MzAsIDgwODM5LCA4MDg0NywgCi0gICAgODA4NTYsIDgwODY0LCA4MDg3MywgODA4ODIsIDgwODkwLCA4MDg5OCwgODA5MDYsIDgwOTE1LCA4MDkyMiwgODA5MzAsIAotICAgIDgwOTM5LCA4MDk0OCwgODA5NTcsIDgwOTY2LCA4MDk3NCwgODA5ODMsIDgwOTkxLCA4MTAwMCwgODEwMDgsIDgxMDE3LCAKLSAgICA4MTAyNSwgODEwMzQsIDgxMDQyLCA4MTA1MCwgODEwNTcsIDgxMDY1LCA4MTA3MiwgODEwODEsIDgxMDg5LCA4MTA5OCwgCi0gICAgODExMDYsIDgxMTE1LCA4MTEyMywgODExMzEsIDgxMTM5LCA4MTE0OCwgODExNTYsIDgxMTY1LCA4MTE3NCwgODExODMsIAotICAgIDgxMTkyLCA4MTIwMSwgODEyMDksIDgxMjE4LCA4MTIyNiwgODEyMzUsIDgxMjQzLCA4MTI1MiwgODEyNjAsIDgxMjY5LCAKLSAgICA4MTI3NywgODEyODUsIDgxMjkyLCA4MTMwMCwgODEzMDcsIDgxMzE2LCA4MTMyNCwgODEzMzMsIDgxMzQxLCA4MTM1MCwgCi0gICAgODEzNTgsIDgxMzY2LCA4MTM3NCwgODEzODMsIDgxMzkxLCA4MTQwMCwgODE0MDksIDgxNDE4LCA4MTQyNywgODE0MzUsIAotICAgIDgxNDQzLCA4MTQ1MiwgODE0NjAsIDgxNDY5LCA4MTQ3OCwgODE0ODYsIDgxNDk0LCA4MTUwMiwgODE1MTEsIDgxNTE5LCAKLSAgICA4MTUyNywgODE1MzYsIDgxNTQ0LCA4MTU1MiwgODE1NjAsIDgxNTY4LCA4MTU3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODE1NzgsIDgxNTg4LCA4MTU5OCwgODE2MDgsIDgxNjE4LCA4MTYyOSwgODE2MzksIAotICAgIDgxNjQ5LCA4MTY2MCwgODE2NjksIDgxNjc4LCA4MTY4NywgODE2OTcsIDgxNzA3LCA4MTcxNywgODE3MjgsIDgxNzM4LCAKLSAgICA4MTc0OCwgODE3NTgsIDgxNzY4LCA4MTc3OCwgODE3ODgsIDgxNzk4LCA4MTgwOCwgODE4MTgsIDgxODI4LCA4MTgzOCwgCi0gICAgODE4NDksIDgxODYwLCA4MTg3MCwgODE4ODAsIDgxODkxLCA4MTkwMiwgODE5MTMsIDgxOTIzLCA4MTkzMywgODE5NDMsIAotICAgIDgxOTUzLCA4MTk2MywgODE5NzMsIDgxOTgzLCA4MTk5NCwgODIwMDQsIDgyMDE0LCA4MjAyNSwgODIwMzYsIDgyMDQ3LCAKLSAgICA4MjA1NywgODIwNjcsIDgyMDc3LCA4MjA4NywgODIwOTgsIDgyMTA4LCA4MjExOCwgODIxMjksIDgyMTQwLCA4MjE1MCwgCi0gICAgODIxNjAsIDgyMTY5LCA4MjE3OCwgODIxODcsIDgyMTk2LCA4MjIwNSwgODIyMTUsIDAsIDAsIDgyMjI1LCA4MjIzNSwgCi0gICAgODIyNDUsIDgyMjU1LCA4MjI2NSwgODIyNzYsIDgyMjg2LCA4MjI5NiwgODIzMDcsIDgyMzE3LCA4MjMyOCwgODIzMzcsIAotICAgIDgyMzQ2LCA4MjM1NywgODIzNjcsIDgyMzc4LCA4MjM4OSwgODI0MDEsIDgyNDExLCA4MjQyMiwgODI0MzEsIDgyNDQxLCAKLSAgICA4MjQ1MSwgODI0NjMsIDgyNDczLCA4MjQ4MywgODI0OTMsIDgyNTAzLCA4MjUxMywgODI1MjIsIDgyNTMxLCA4MjU0MCwgCi0gICAgODI1NDksIDgyNTU5LCA4MjU2OSwgODI1NzksIDgyNTg5LCA4MjU5OSwgODI2MDksIDgyNjE5LCA4MjYyOSwgODI2MzksIAotICAgIDgyNjQ5LCA4MjY1OSwgODI2NjksIDgyNjc4LCA4MjY4NywgODI2OTYsIDgyNzA2LCA4MjcxNiwgODI3MjYsIDgyNzM2LCAKLSAgICA4Mjc0NiwgODI3NTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgyNzY3LCA4Mjc4MiwgCi0gICAgODI3OTcsIDgyODAzLCA4MjgwOSwgODI4MTUsIDgyODIxLCA4MjgyNywgODI4MzMsIDgyODM5LCA4Mjg0NSwgODI4NTMsIAotICAgIDgyODU3LCA4Mjg2MCwgMCwgMCwgODI4NjgsIDgyODcxLCA4Mjg3NCwgODI4NzcsIDgyODgwLCA4Mjg4MywgODI4ODYsIAotICAgIDgyODg5LCA4Mjg5MiwgODI4OTUsIDgyODk4LCA4MjkwMSwgODI5MDQsIDgyOTA3LCA4MjkxMCwgODI5MTMsIDgyOTE2LCAKLSAgICA4MjkyNCwgODI5MzMsIDgyOTQ0LCA4Mjk1MiwgODI5NjAsIDgyOTY5LCA4Mjk3OCwgODI5ODksIDgzMDAxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA4MzAxMCwgODMwMTUsIDgzMDIwLCA4MzAyNywgODMwMzQsIDgzMDQwLCA4MzA0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgODMwNTEsIDgzMDYxLCA4MzA3MSwgODMwODEsIDgzMDkwLCA4MzEwMSwgODMxMTAsIDgzMTE5LCAKLSAgICA4MzEyOSwgODMxMzksIDgzMTUxLCA4MzE2MywgODMxNzQsIDgzMTg1LCA4MzE5NiwgODMyMDcsIDgzMjE3LCA4MzIyNywgCi0gICAgODMyMzcsIDgzMjQ3LCA4MzI1OCwgODMyNjksIDgzMjczLCA4MzI3OCwgODMyODcsIDgzMjk2LCA4MzMwMCwgODMzMDQsIAotICAgIDgzMzA4LCA4MzMxMywgODMzMTgsIDgzMzIzLCA4MzMyOCwgODMzMzEsIDgzMzM1LCAwLCA4MzM0MCwgODMzNDMsIDgzMzQ2LCAKLSAgICA4MzM1MCwgODMzNTQsIDgzMzU5LCA4MzM2MywgODMzNjcsIDgzMzcyLCA4MzM3NywgODMzODQsIDgzMzkxLCA4MzM5NCwgCi0gICAgODMzOTcsIDgzNDAwLCA4MzQwMywgODM0MDYsIDgzNDEwLCA4MzQxNCwgMCwgODM0MTgsIDgzNDIzLCA4MzQyNywgODM0MzEsIAotICAgIDAsIDAsIDAsIDAsIDgzNDM2LCA4MzQ0MSwgODM0NDgsIDgzNDUzLCA4MzQ1OCwgMCwgODM0NjMsIDgzNDY4LCA4MzQ3MywgCi0gICAgODM0NzgsIDgzNDgzLCA4MzQ4OCwgODM0OTMsIDgzNDk4LCA4MzUwMywgODM1MDgsIDgzNTEzLCA4MzUxOCwgODM1MjcsIAotICAgIDgzNTM2LCA4MzU0NCwgODM1NTIsIDgzNTYxLCA4MzU3MCwgODM1NzksIDgzNTg4LCA4MzU5NiwgODM2MDQsIDgzNjEyLCAKLSAgICA4MzYyMCwgODM2MjUsIDgzNjMwLCA4MzYzNiwgODM2NDIsIDgzNjQ4LCA4MzY1NCwgODM2NjIsIDgzNjcwLCA4MzY3NiwgCi0gICAgODM2ODIsIDgzNjg4LCA4MzY5NCwgODM3MDAsIDgzNzA2LCA4MzcxMiwgODM3MTgsIDgzNzIzLCA4MzcyOCwgODM3MzMsIAotICAgIDgzNzM4LCA4Mzc0MywgODM3NDgsIDgzNzUzLCA4Mzc1OCwgODM3NjQsIDgzNzcwLCA4Mzc3NiwgODM3ODIsIDgzNzg4LCAKLSAgICA4Mzc5NCwgODM4MDAsIDgzODA2LCA4MzgxMiwgODM4MTgsIDgzODI0LCA4MzgzMCwgODM4MzYsIDgzODQyLCA4Mzg0OCwgCi0gICAgODM4NTQsIDgzODYwLCA4Mzg2NiwgODM4NzIsIDgzODc4LCA4Mzg4NCwgODM4OTAsIDgzODk2LCA4MzkwMiwgODM5MDgsIAotICAgIDgzOTE0LCA4MzkyMCwgODM5MjYsIDgzOTMyLCA4MzkzOCwgODM5NDQsIDgzOTUwLCA4Mzk1NiwgODM5NjIsIDgzOTY4LCAKLSAgICA4Mzk3NCwgODM5ODAsIDgzOTg2LCA4Mzk5MiwgODM5OTgsIDg0MDA0LCA4NDAxMCwgODQwMTYsIDg0MDIyLCA4NDAyOCwgCi0gICAgODQwMzQsIDg0MDQwLCA4NDA0NiwgODQwNTIsIDg0MDU4LCA4NDA2NCwgODQwNzAsIDg0MDc2LCA4NDA4MiwgODQwODgsIAotICAgIDg0MDk0LCA4NDEwMCwgODQxMDYsIDg0MTEyLCA4NDExOCwgODQxMjMsIDg0MTI4LCA4NDEzMywgODQxMzgsIDg0MTQ0LCAKLSAgICA4NDE1MCwgODQxNTYsIDg0MTYyLCA4NDE2OCwgODQxNzQsIDg0MTgwLCA4NDE4NiwgODQxOTIsIDg0MTk4LCA4NDIwNCwgCi0gICAgODQyMTAsIDg0MjE1LCA4NDIyMCwgODQyMjUsIDg0MjMwLCA4NDI0MiwgODQyNTQsIDg0MjY1LCA4NDI3NiwgODQyODgsIAotICAgIDg0MzAwLCA4NDMwOCwgMCwgMCwgODQzMTYsIDAsIDg0MzI0LCA4NDMyOCwgODQzMzIsIDg0MzM1LCA4NDMzOSwgODQzNDMsIAotICAgIDg0MzQ2LCA4NDM0OSwgODQzNTMsIDg0MzU3LCA4NDM2MCwgODQzNjMsIDg0MzY2LCA4NDM2OSwgODQzNzQsIDg0Mzc3LCAKLSAgICA4NDM4MSwgODQzODQsIDg0Mzg3LCA4NDM5MCwgODQzOTMsIDg0Mzk2LCA4NDM5OSwgODQ0MDIsIDg0NDA1LCA4NDQwOCwgCi0gICAgODQ0MTEsIDg0NDE0LCA4NDQxOCwgODQ0MjIsIDg0NDI2LCA4NDQzMCwgODQ0MzUsIDg0NDQwLCA4NDQ0NiwgODQ0NTIsIAotICAgIDg0NDU4LCA4NDQ2MywgODQ0NjksIDg0NDc1LCA4NDQ4MSwgODQ0ODYsIDg0NDkyLCA4NDQ5OCwgODQ1MDMsIDg0NTA4LCAKLSAgICA4NDUxMywgODQ1MTgsIDg0NTI0LCA4NDUzMCwgODQ1MzUsIDg0NTQwLCA4NDU0NiwgODQ1NTEsIDg0NTU3LCA4NDU2MywgCi0gICAgODQ1NjksIDg0NTc1LCA4NDU4MSwgODQ1ODUsIDg0NTkwLCA4NDU5NCwgODQ1OTksIDg0NjAzLCA4NDYwOCwgODQ2MTMsIAotICAgIDg0NjE5LCA4NDYyNSwgODQ2MzEsIDg0NjM2LCA4NDY0MiwgODQ2NDgsIDg0NjU0LCA4NDY1OSwgODQ2NjUsIDg0NjcxLCAKLSAgICA4NDY3NiwgODQ2ODEsIDg0Njg2LCA4NDY5MSwgODQ2OTcsIDg0NzAzLCA4NDcwOCwgODQ3MTMsIDg0NzE5LCA4NDcyNCwgCi0gICAgODQ3MzAsIDg0NzM2LCA4NDc0MiwgODQ3NDgsIDg0NzU0LCA4NDc1OSwgODQ3NjMsIDg0NzY4LCA4NDc3MSwgODQ3NzYsIAotICAgIDg0NzgxLCA4NDc4NywgODQ3OTIsIDg0Nzk3LCA4NDgwMSwgODQ4MDcsIDg0ODEyLCA4NDgxNywgODQ4MjIsIDg0ODI3LCAKLSAgICA4NDgzMiwgODQ4MzcsIDg0ODQyLCA4NDg0OCwgODQ4NTQsIDg0ODYwLCA4NDg2OCwgODQ4NzIsIDg0ODc2LCA4NDg4MCwgCi0gICAgODQ4ODQsIDg0ODg4LCA4NDg5MiwgODQ4OTcsIDg0OTAyLCA4NDkwNywgODQ5MTIsIDg0OTE3LCA4NDkyMiwgODQ5MjcsIAotICAgIDg0OTMyLCA4NDkzNywgODQ5NDIsIDg0OTQ3LCA4NDk1MiwgODQ5NTcsIDg0OTYxLCA4NDk2NSwgODQ5NzAsIDg0OTc1LCAKLSAgICA4NDk4MCwgODQ5ODUsIDg0OTg5LCA4NDk5NCwgODQ5OTksIDg1MDA0LCA4NTAwOSwgODUwMTMsIDg1MDE4LCA4NTAyMywgCi0gICAgODUwMjgsIDg1MDMzLCA4NTAzNywgODUwNDIsIDg1MDQ3LCA4NTA1MSwgODUwNTYsIDg1MDYxLCA4NTA2NiwgODUwNzEsIAotICAgIDg1MDc2LCA4NTA4MCwgODUwODcsIDg1MDk0LCA4NTA5OCwgODUxMDMsIDg1MTA4LCA4NTExMywgODUxMTgsIDg1MTIzLCAKLSAgICA4NTEyOCwgODUxMzMsIDg1MTM4LCA4NTE0MywgODUxNDgsIDg1MTUzLCA4NTE1OCwgODUxNjMsIDg1MTY4LCA4NTE3MywgCi0gICAgODUxNzgsIDg1MTgzLCA4NTE4OCwgODUxOTMsIDg1MTk4LCA4NTIwMywgODUyMDgsIDg1MjEzLCA4NTIxOCwgODUyMjMsIAotICAgIDg1MjI4LCA4NTIzMywgODUyMzgsIDg1MjQzLCAwLCAwLCAwLCA4NTI0OCwgODUyNTIsIDg1MjU3LCA4NTI2MSwgODUyNjYsIAotICAgIDg1MjcxLCAwLCAwLCA4NTI3NSwgODUyODAsIDg1Mjg1LCA4NTI4OSwgODUyOTQsIDg1Mjk5LCAwLCAwLCA4NTMwNCwgCi0gICAgODUzMDksIDg1MzEzLCA4NTMxOCwgODUzMjMsIDg1MzI4LCAwLCAwLCA4NTMzMywgODUzMzgsIDg1MzQzLCAwLCAwLCAwLCAKLSAgICA4NTM0NywgODUzNTEsIDg1MzU1LCA4NTM1OSwgODUzNjIsIDg1MzY2LCA4NTM3MCwgMCwgODUzNzQsIDg1MzgwLCA4NTM4MywgCi0gICAgODUzODcsIDg1MzkwLCA4NTM5NCwgODUzOTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg1NDAyLCA4NTQwOCwgCi0gICAgODU0MTQsIDg1NDIwLCA4NTQyNiwgMCwgMCwgODU0MzAsIDg1NDM2LCA4NTQ0MiwgODU0NDgsIDg1NDU0LCA4NTQ2MCwgCi0gICAgODU0NjcsIDg1NDc0LCA4NTQ4MSwgODU0ODgsIDg1NDk1LCA4NTUwMiwgMCwgODU1MDksIDg1NTE2LCA4NTUyMywgODU1MjksIAotICAgIDg1NTM2LCA4NTU0MywgODU1NTAsIDg1NTU3LCA4NTU2MywgODU1NzAsIDg1NTc3LCA4NTU4NCwgODU1OTEsIDg1NTk3LCAKLSAgICA4NTYwNCwgODU2MTEsIDg1NjE4LCA4NTYyNSwgODU2MzEsIDg1NjM4LCA4NTY0NSwgODU2NTIsIDg1NjU5LCA4NTY2NiwgCi0gICAgODU2NzMsIDg1NjgwLCAwLCA4NTY4NywgODU2OTMsIDg1NzAwLCA4NTcwNywgODU3MTQsIDg1NzIxLCA4NTcyOCwgODU3MzUsIAotICAgIDg1NzQyLCA4NTc0OSwgODU3NTYsIDg1NzYzLCA4NTc3MCwgODU3NzcsIDg1NzgzLCA4NTc5MCwgODU3OTcsIDg1ODA0LCAKLSAgICA4NTgxMSwgMCwgODU4MTgsIDg1ODI1LCAwLCA4NTgzMiwgODU4MzksIDg1ODQ2LCA4NTg1MywgODU4NjAsIDg1ODY3LCAKLSAgICA4NTg3NCwgODU4ODEsIDg1ODg4LCA4NTg5NSwgODU5MDIsIDg1OTA5LCA4NTkxNiwgODU5MjMsIDg1OTMwLCAwLCAwLCAKLSAgICA4NTkzNiwgODU5NDEsIDg1OTQ2LCA4NTk1MSwgODU5NTYsIDg1OTYxLCA4NTk2NiwgODU5NzEsIDg1OTc2LCA4NTk4MSwgCi0gICAgODU5ODYsIDg1OTkxLCA4NTk5NiwgODYwMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2MDA2LCA4NjAxMywgCi0gICAgODYwMjAsIDg2MDI3LCA4NjAzNCwgODYwNDEsIDg2MDQ4LCA4NjA1NSwgODYwNjIsIDg2MDY5LCA4NjA3NiwgODYwODMsIAotICAgIDg2MDkwLCA4NjA5NywgODYxMDQsIDg2MTExLCA4NjExOCwgODYxMjUsIDg2MTMyLCA4NjEzOSwgODYxNDcsIDg2MTU1LCAKLSAgICA4NjE2MiwgODYxNjksIDg2MTc0LCA4NjE4MiwgODYxOTAsIDg2MTk3LCA4NjIwNCwgODYyMDksIDg2MjE2LCA4NjIyMSwgCi0gICAgODYyMjYsIDg2MjMzLCA4NjIzOCwgODYyNDMsIDg2MjQ4LCA4NjI1NiwgODYyNjEsIDg2MjY2LCA4NjI3MywgODYyNzgsIAotICAgIDg2MjgzLCA4NjI5MCwgODYyOTcsIDg2MzAyLCA4NjMwNywgODYzMTIsIDg2MzE3LCA4NjMyMiwgODYzMjcsIDg2MzMyLCAKLSAgICA4NjMzNywgODYzNDIsIDg2MzQ5LCA4NjM1NCwgODYzNjEsIDg2MzY2LCA4NjM3MSwgODYzNzYsIDg2MzgxLCA4NjM4NiwgCi0gICAgODYzOTEsIDg2Mzk2LCA4NjQwMSwgODY0MDYsIDg2NDExLCA4NjQxNiwgODY0MjMsIDg2NDMwLCA4NjQzNywgODY0NDQsIAotICAgIDg2NDUwLCA4NjQ1NSwgODY0NjIsIDg2NDY3LCA4NjQ3MiwgODY0ODEsIDg2NDg4LCA4NjQ5NywgODY1MDQsIDg2NTA5LCAKLSAgICA4NjUxNCwgODY1MjIsIDg2NTI3LCA4NjUzMiwgODY1MzcsIDg2NTQyLCA4NjU0NywgODY1NTQsIDg2NTU5LCA4NjU2NCwgCi0gICAgODY1NjksIDg2NTc0LCA4NjU3OSwgODY1ODYsIDg2NTkzLCA4NjYwMCwgODY2MDcsIDg2NjE0LCA4NjYyMSwgODY2MjgsIAotICAgIDg2NjM1LCA4NjY0MiwgODY2NDksIDg2NjU2LCA4NjY2MywgODY2NzAsIDg2Njc3LCA4NjY4NCwgODY2OTEsIDg2Njk4LCAKLSAgICA4NjcwNSwgODY3MTIsIDg2NzE5LCA4NjcyNiwgODY3MzMsIDg2NzQwLCA4Njc0NywgODY3NTQsIDg2NzYxLCA4Njc2OCwgCi0gICAgODY3NzUsIDAsIDAsIDAsIDAsIDAsIDg2NzgyLCA4Njc5MCwgODY3OTgsIDAsIDAsIDAsIDAsIDg2ODAzLCA4NjgwNywgCi0gICAgODY4MTEsIDg2ODE1LCA4NjgxOSwgODY4MjMsIDg2ODI3LCA4NjgzMSwgODY4MzUsIDg2ODM5LCA4Njg0NCwgODY4NDksIAotICAgIDg2ODU0LCA4Njg1OSwgODY4NjQsIDg2ODY5LCA4Njg3NCwgODY4NzksIDg2ODg0LCA4Njg5MCwgODY4OTYsIDg2OTAyLCAKLSAgICA4NjkwOSwgODY5MTYsIDg2OTIzLCA4NjkzMCwgODY5MzcsIDg2OTQ0LCA4Njk1MCwgODY5NTYsIDg2OTYyLCA4Njk2OSwgCi0gICAgODY5NzYsIDg2OTgzLCA4Njk5MCwgODY5OTcsIDg3MDA0LCA4NzAxMSwgODcwMTgsIDg3MDI1LCA4NzAzMiwgODcwMzksIAotICAgIDg3MDQ2LCA4NzA1MywgODcwNjAsIDAsIDAsIDAsIDg3MDY3LCA4NzA3NSwgODcwODMsIDg3MDkxLCA4NzA5OSwgODcxMDcsIAotICAgIDg3MTE3LCA4NzEyNywgODcxMzUsIDg3MTQzLCA4NzE1MSwgODcxNTksIDg3MTY3LCA4NzE3MywgODcxODAsIDg3MTg5LCAKLSAgICA4NzE5OCwgODcyMDcsIDg3MjE2LCA4NzIyNSwgODcyMzQsIDg3MjQ0LCA4NzI1NSwgODcyNjUsIDg3Mjc2LCA4NzI4NSwgCi0gICAgODcyOTQsIDg3MzAzLCA4NzMxMywgODczMjQsIDg3MzM0LCA4NzM0NSwgODczNTYsIDg3MzY1LCA4NzM3MywgODczNzksIAotICAgIDg3Mzg1LCA4NzM5MSwgODczOTcsIDg3NDA1LCA4NzQxMywgODc0MTksIDg3NDI2LCA4NzQzNiwgODc0NDMsIDg3NDUwLCAKLSAgICA4NzQ1NywgODc0NjQsIDg3NDcxLCA4NzQ4MSwgODc0ODgsIDg3NDk1LCA4NzUwMywgODc1MTEsIDg3NTIwLCA4NzUyOSwgCi0gICAgODc1MzgsIDg3NTQ3LCA4NzU1NiwgODc1NjQsIDg3NTczLCA4NzU4MiwgODc1OTEsIDg3NTk1LCA4NzYwMiwgODc2MDcsIAotICAgIDg3NjEyLCA4NzYxNiwgODc2MjAsIDg3NjI0LCA4NzYyOCwgODc2MzMsIDg3NjM4LCA4NzY0NCwgODc2NTAsIDg3NjU0LCAKLSAgICA4NzY2MCwgODc2NjQsIDg3NjY4LCA4NzY3MiwgODc2NzYsIDg3NjgwLCA4NzY4NCwgODc2OTAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDg3Njk0LCA4NzY5OSwgODc3MDQsIDg3NzA5LCA4NzcxNCwgODc3MjEsIDg3NzI2LCA4NzczMSwgODc3MzYsIDg3NzQxLCAKLSAgICA4Nzc0NiwgODc3NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzA4LCA4ODcxNSwgODg3MjQsIDg4NzMzLCA4ODc0MCwgODg3NDcsIDg4NzU0LCAKKyAgICA4ODc2MSwgODg3NjgsIDg4Nzc1LCA4ODc4MSwgODg3ODgsIDg4Nzk1LCA4ODgwMiwgODg4MDksIDg4ODE2LCA4ODgyMywgCisgICAgODg4MzAsIDg4ODM3LCA4ODg0NiwgODg4NTMsIDg4ODYwLCA4ODg2NywgODg4NzQsIDg4ODgxLCA4ODg4OCwgODg4OTUsIAorICAgIDg4OTAyLCA4ODkxMSwgODg5MTgsIDg4OTI1LCA4ODkzMiwgODg5MzksIDg4OTQ2LCA4ODk1MywgODg5NjIsIDg4OTY5LCAKKyAgICA4ODk3NiwgODg5ODMsIDg4OTkwLCA4ODk5OSwgODkwMDYsIDg5MDEzLCA4OTAyMCwgODkwMjgsIDg5MDM3LCAwLCAwLCAKKyAgICA4OTA0NiwgODkwNTAsIDg5MDU0LCA4OTA1OSwgODkwNjQsIDg5MDY5LCA4OTA3NCwgODkwNzgsIDg5MDgzLCA4OTA4OCwgCisgICAgODkwOTMsIDg5MDk4LCA4OTEwMywgODkxMDgsIDg5MTEyLCA4OTExNiwgODkxMjEsIDg5MTI2LCA4OTEzMSwgODkxMzUsIAorICAgIDg5MTQwLCA4OTE0NSwgODkxNDksIDg5MTU0LCA4OTE1OSwgODkxNjQsIDg5MTY5LCA4OTE3NCwgODkxNzksIDAsIDAsIDAsIAorICAgIDg5MTg0LCA4OTE4OCwgODkxOTMsIDg5MTk4LCA4OTIwMiwgODkyMDcsIDg5MjExLCA4OTIxNiwgODkyMjEsIDg5MjI2LCAKKyAgICA4OTIzMSwgODkyMzUsIDg5MjM5LCA4OTI0NCwgODkyNDksIDg5MjU0LCA4OTI1OSwgODkyNjQsIDg5MjY5LCA4OTI3MywgCisgICAgODkyNzgsIDg5MjgzLCA4OTI4OCwgODkyOTMsIDg5Mjk4LCA4OTMwMywgODkzMDcsIDg5MzExLCA4OTMxNiwgODkzMjEsIAorICAgIDg5MzI2LCA4OTMzMSwgODkzMzYsIDg5MzQxLCA4OTM0NiwgODkzNTEsIDg5MzU2LCA4OTM2MSwgODkzNjYsIDg5MzcxLCAKKyAgICA4OTM3NiwgODkzODEsIDg5Mzg2LCA4OTM5MSwgODkzOTYsIDg5NDAxLCA4OTQwNiwgODk0MTEsIDg5NDE2LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Nzc1NiwgODc3NjMsIDg3NzcyLCA4Nzc4MSwgODc3ODgsIDg3Nzk1LCA4NzgwMiwgCi0gICAgODc4MDksIDg3ODE2LCA4NzgyMywgODc4MjksIDg3ODM2LCA4Nzg0MywgODc4NTAsIDg3ODU3LCA4Nzg2NCwgODc4NzEsIAotICAgIDg3ODc4LCA4Nzg4NSwgODc4OTQsIDg3OTAxLCA4NzkwOCwgODc5MTUsIDg3OTIyLCA4NzkyOSwgODc5MzYsIDg3OTQzLCAKLSAgICA4Nzk1MCwgODc5NTksIDg3OTY2LCA4Nzk3MywgODc5ODAsIDg3OTg3LCA4Nzk5NCwgODgwMDEsIDg4MDEwLCA4ODAxNywgCi0gICAgODgwMjQsIDg4MDMxLCA4ODAzOCwgODgwNDcsIDg4MDU0LCA4ODA2MSwgODgwNjgsIDg4MDc2LCA4ODA4NSwgMCwgMCwgCi0gICAgODgwOTQsIDg4MDk4LCA4ODEwMiwgODgxMDcsIDg4MTEyLCA4ODExNywgODgxMjIsIDg4MTI2LCA4ODEzMSwgODgxMzYsIAotICAgIDg4MTQxLCA4ODE0NiwgODgxNTEsIDg4MTU2LCA4ODE2MCwgODgxNjQsIDg4MTY4LCA4ODE3MywgODgxNzgsIDg4MTgyLCAKLSAgICA4ODE4NywgODgxOTIsIDg4MTk2LCA4ODIwMCwgODgyMDUsIDg4MjEwLCA4ODIxNSwgODgyMjAsIDg4MjI1LCAwLCAwLCAwLCAKLSAgICA4ODIzMCwgODgyMzQsIDg4MjM5LCA4ODI0NCwgODgyNDgsIDg4MjUzLCA4ODI1NywgODgyNjIsIDg4MjY3LCA4ODI3MiwgCi0gICAgODgyNzcsIDg4MjgxLCA4ODI4NSwgODgyOTAsIDg4Mjk1LCA4ODMwMCwgODgzMDUsIDg4MzA5LCA4ODMxNCwgODgzMTgsIAotICAgIDg4MzIzLCA4ODMyOCwgODgzMzIsIDg4MzM3LCA4ODM0MiwgODgzNDcsIDg4MzUxLCA4ODM1NSwgODgzNjAsIDg4MzY1LCAKLSAgICA4ODM3MCwgODgzNzUsIDg4MzgwLCA4ODM4NSwgODgzOTAsIDg4Mzk1LCA4ODQwMCwgODg0MDUsIDg4NDEwLCA4ODQxNSwgCi0gICAgODg0MjAsIDg4NDI1LCA4ODQzMCwgODg0MzUsIDg4NDQwLCA4ODQ0NSwgODg0NTAsIDg4NDU1LCA4ODQ2MCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODk0MjEsIDg5NDI1LCAKKyAgICA4OTQzMCwgODk0MzUsIDg5NDQwLCA4OTQ0NCwgODk0NDksIDg5NDU0LCA4OTQ1OSwgODk0NjQsIDg5NDY4LCA4OTQ3MiwgCisgICAgODk0NzcsIDg5NDgyLCA4OTQ4NywgODk0OTIsIDg5NDk2LCA4OTUwMSwgODk1MDYsIDg5NTExLCA4OTUxNiwgODk1MjEsIAorICAgIDg5NTI2LCA4OTUzMCwgODk1MzUsIDg5NTQwLCA4OTU0NSwgODk1NTAsIDg5NTU1LCA4OTU2MCwgODk1NjUsIDAsIDg5NTcwLCAKKyAgICA4OTU3NSwgODk1ODAsIDg5NTg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4OTU5MiwgODk1OTcsIAorICAgIDg5NjAyLCA4OTYwNywgODk2MTIsIDg5NjE3LCA4OTYyMiwgODk2MjcsIDg5NjMyLCA4OTYzNywgODk2NDIsIDg5NjQ3LCAKKyAgICA4OTY1MiwgODk2NTcsIDg5NjYyLCA4OTY2NywgODk2NzIsIDg5Njc3LCA4OTY4MiwgODk2ODcsIDg5NjkyLCA4OTY5NywgCisgICAgODk3MDIsIDg5NzA3LCA4OTcxMiwgODk3MTcsIDg5NzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODQ2NSwgODg0NjksIAotICAgIDg4NDc0LCA4ODQ3OSwgODg0ODQsIDg4NDg4LCA4ODQ5MywgODg0OTgsIDg4NTAzLCA4ODUwOCwgODg1MTIsIDg4NTE2LCAKLSAgICA4ODUyMSwgODg1MjYsIDg4NTMxLCA4ODUzNiwgODg1NDAsIDg4NTQ1LCA4ODU1MCwgODg1NTUsIDg4NTYwLCA4ODU2NSwgCi0gICAgODg1NzAsIDg4NTc0LCA4ODU3OSwgODg1ODQsIDg4NTg5LCA4ODU5NCwgODg1OTksIDg4NjA0LCA4ODYwOSwgMCwgODg2MTQsIAotICAgIDg4NjE5LCA4ODYyNCwgODg2MzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NjM2LCA4ODY0MSwgCi0gICAgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NiwgODg2OTEsIAotICAgIDg4Njk2LCA4ODcwMSwgODg3MDYsIDg4NzExLCA4ODcxNiwgODg3MjEsIDg4NzI2LCA4ODczMSwgODg3MzYsIDg4NzQxLCAKLSAgICA4ODc0NiwgODg3NTEsIDg4NzU2LCA4ODc2MSwgODg3NjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5NzI5LCA4OTczNCwgODk3MzksIAorICAgIDg5NzQ0LCA4OTc0OSwgODk3NTQsIDg5NzU5LCA4OTc2NCwgODk3NjksIDg5Nzc0LCA4OTc3OSwgODk3ODQsIDg5Nzg5LCAKKyAgICA4OTc5NCwgODk3OTksIDg5ODA0LCA4OTgwOSwgODk4MTQsIDg5ODE5LCA4OTgyNCwgODk4MjksIDg5ODM0LCA4OTgzOSwgCisgICAgODk4NDQsIDg5ODQ5LCA4OTg1NCwgODk4NTksIDg5ODYzLCA4OTg2NywgODk4NzEsIDAsIDg5ODc2LCA4OTg4MiwgODk4ODcsIAorICAgIDg5ODkyLCA4OTg5NywgODk5MDIsIDg5OTA4LCA4OTkxNCwgODk5MjAsIDg5OTI2LCA4OTkzMiwgODk5MzgsIDg5OTQ0LCAKKyAgICA4OTk1MCwgODk5NTYsIDg5OTYyLCA4OTk2OCwgODk5NzQsIDg5OTgwLCA4OTk4NSwgODk5OTEsIDg5OTk3LCA5MDAwMiwgCisgICAgOTAwMDgsIDkwMDEzLCA5MDAxOSwgOTAwMjUsIDkwMDMwLCA5MDAzNiwgOTAwNDIsIDkwMDQ3LCA5MDA1MywgOTAwNTksIAorICAgIDkwMDY0LCA5MDA3MCwgOTAwNzYsIDkwMDgyLCAwLCAwLCAwLCAwLCA5MDA4NywgOTAwOTMsIDkwMDk5LCA5MDEwNSwgCisgICAgOTAxMTEsIDkwMTE3LCA5MDEyMywgOTAxMjksIDkwMTM1LCA5MDE0MiwgOTAxNDcsIDkwMTUyLCA5MDE1OCwgOTAxNjQsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg4NzczLCA4ODc3OCwgODg3ODMsIAotICAgIDg4Nzg4LCA4ODc5MywgODg3OTgsIDg4ODAzLCA4ODgwOCwgODg4MTMsIDg4ODE4LCA4ODgyMywgODg4MjgsIDg4ODMzLCAKLSAgICA4ODgzOCwgODg4NDMsIDg4ODQ4LCA4ODg1MywgODg4NTgsIDg4ODYzLCA4ODg2OCwgODg4NzMsIDg4ODc4LCA4ODg4MywgCi0gICAgODg4ODgsIDg4ODkzLCA4ODg5OCwgODg5MDMsIDg4OTA3LCA4ODkxMSwgODg5MTUsIDAsIDg4OTIwLCA4ODkyNiwgODg5MzEsIAotICAgIDg4OTM2LCA4ODk0MSwgODg5NDYsIDg4OTUyLCA4ODk1OCwgODg5NjQsIDg4OTcwLCA4ODk3NiwgODg5ODIsIDg4OTg4LCAKLSAgICA4ODk5NCwgODkwMDAsIDg5MDA2LCA4OTAxMiwgODkwMTgsIDg5MDI0LCA4OTAyOSwgODkwMzUsIDg5MDQxLCA4OTA0NiwgCi0gICAgODkwNTIsIDg5MDU3LCA4OTA2MywgODkwNjksIDg5MDc0LCA4OTA4MCwgODkwODYsIDg5MDkxLCA4OTA5NywgODkxMDMsIAotICAgIDg5MTA5LCA4OTExNSwgODkxMjEsIDg5MTI3LCAwLCAwLCAwLCAwLCA4OTEzMiwgODkxMzgsIDg5MTQ0LCA4OTE1MCwgCi0gICAgODkxNTYsIDg5MTYyLCA4OTE2OCwgODkxNzQsIDg5MTgwLCA4OTE4NywgODkxOTIsIDg5MTk3LCA4OTIwMywgODkyMDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg5MjE1LCA4OTIyMCwgODkyMjUsIAotICAgIDg5MjMwLCA4OTIzNiwgODkyNDEsIDg5MjQ3LCA4OTI1MywgODkyNTksIDg5MjY1LCA4OTI3MiwgODkyNzgsIDg5Mjg1LCAKLSAgICA4OTI5MCwgODkyOTUsIDg5MzAwLCA4OTMwNSwgODkzMTAsIDg5MzE1LCA4OTMyMCwgODkzMjUsIDg5MzMwLCA4OTMzNSwgCi0gICAgODkzNDAsIDg5MzQ1LCA4OTM1MCwgODkzNTUsIDg5MzYwLCA4OTM2NSwgODkzNzAsIDg5Mzc1LCA4OTM4MCwgODkzODUsIAotICAgIDg5MzkwLCA4OTM5NSwgODk0MDAsIDg5NDA1LCA4OTQxMCwgODk0MTUsIDg5NDIwLCA4OTQyNSwgODk0MzAsIDg5NDM1LCAKLSAgICA4OTQ0MCwgODk0NDYsIDg5NDUxLCA4OTQ1NywgODk0NjMsIDg5NDY5LCA4OTQ3NSwgODk0ODIsIDg5NDg4LCA4OTQ5NSwgCi0gICAgODk1MDAsIDg5NTA1LCA4OTUxMCwgODk1MTUsIDg5NTIwLCA4OTUyNSwgODk1MzAsIDg5NTM1LCA4OTU0MCwgODk1NDUsIAotICAgIDg5NTUwLCA4OTU1NSwgODk1NjAsIDg5NTY1LCA4OTU3MCwgODk1NzUsIDg5NTgwLCA4OTU4NSwgODk1OTAsIDg5NTk1LCAKLSAgICA4OTYwMCwgODk2MDUsIDg5NjEwLCA4OTYxNSwgODk2MjAsIDg5NjI1LCA4OTYzMCwgODk2MzUsIDg5NjQwLCA4OTY0NSwgCi0gICAgODk2NTAsIDg5NjU1LCA4OTY2MCwgODk2NjUsIDg5NjcwLCA4OTY3NSwgODk2ODAsIDg5Njg1LCA4OTY5MCwgODk2OTUsIAotICAgIDg5NzAwLCA4OTcwNSwgODk3MTAsIDg5NzE1LCA4OTcyMCwgODk3MjUsIDg5NzMwLCA4OTczNSwgODk3NDAsIDg5NzQ1LCAKLSAgICA4OTc1MCwgODk3NTUsIDg5NzYwLCA4OTc2NSwgODk3NzAsIDg5Nzc1LCA4OTc4MCwgODk3ODUsIDg5NzkwLCA4OTc5NSwgCi0gICAgODk4MDAsIDg5ODA1LCA4OTgxMCwgODk4MTUsIDg5ODIwLCA4OTgyNSwgODk4MzAsIDg5ODM1LCA4OTg0MCwgODk4NDUsIAotICAgIDg5ODUwLCA4OTg1NSwgODk4NjAsIDg5ODY1LCA4OTg3MCwgODk4NzUsIDg5ODgwLCA4OTg4NSwgODk4OTAsIDg5ODk1LCAKLSAgICA4OTkwMCwgODk5MDUsIDg5OTEwLCA4OTkxNCwgODk5MTksIDg5OTI0LCA4OTkyOSwgODk5MzQsIDg5OTM5LCA4OTk0NCwgCi0gICAgODk5NDksIDg5OTU0LCA4OTk1OSwgODk5NjQsIDg5OTY5LCA4OTk3NCwgODk5NzgsIDg5OTgyLCA4OTk4NiwgODk5OTAsIAotICAgIDg5OTk0LCA4OTk5OCwgOTAwMDIsIDkwMDA3LCA5MDAxMiwgMCwgMCwgOTAwMTcsIDkwMDIyLCA5MDAyNiwgOTAwMzAsIAotICAgIDkwMDM0LCA5MDAzOCwgOTAwNDIsIDkwMDQ2LCA5MDA1MCwgOTAwNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkwMTcwLCA5MDE3NSwgOTAxODAsIAorICAgIDkwMTg1LCA5MDE5MSwgOTAxOTYsIDkwMjAyLCA5MDIwOCwgOTAyMTQsIDkwMjIwLCA5MDIyNywgOTAyMzMsIDkwMjQwLCAKKyAgICA5MDI0NSwgOTAyNTAsIDkwMjU1LCA5MDI2MCwgOTAyNjUsIDkwMjcwLCA5MDI3NSwgOTAyODAsIDkwMjg1LCA5MDI5MCwgCisgICAgOTAyOTUsIDkwMzAwLCA5MDMwNSwgOTAzMTAsIDkwMzE1LCA5MDMyMCwgOTAzMjUsIDkwMzMwLCA5MDMzNSwgOTAzNDAsIAorICAgIDkwMzQ1LCA5MDM1MCwgOTAzNTUsIDkwMzYwLCA5MDM2NSwgOTAzNzAsIDkwMzc1LCA5MDM4MCwgOTAzODUsIDkwMzkwLCAKKyAgICA5MDM5NSwgOTA0MDEsIDkwNDA2LCA5MDQxMiwgOTA0MTgsIDkwNDI0LCA5MDQzMCwgOTA0MzcsIDkwNDQzLCA5MDQ1MCwgCisgICAgOTA0NTUsIDkwNDYwLCA5MDQ2NSwgOTA0NzAsIDkwNDc1LCA5MDQ4MCwgOTA0ODUsIDkwNDkwLCA5MDQ5NSwgOTA1MDAsIAorICAgIDkwNTA1LCA5MDUxMCwgOTA1MTUsIDkwNTIwLCA5MDUyNSwgOTA1MzAsIDkwNTM1LCA5MDU0MCwgOTA1NDUsIDkwNTUwLCAKKyAgICA5MDU1NSwgOTA1NjAsIDkwNTY1LCA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTAsIDkwNTk1LCA5MDYwMCwgCisgICAgOTA2MDUsIDkwNjEwLCA5MDYxNSwgOTA2MjAsIDkwNjI1LCA5MDYzMCwgOTA2MzUsIDkwNjQwLCA5MDY0NSwgOTA2NTAsIAorICAgIDkwNjU1LCA5MDY2MCwgOTA2NjUsIDkwNjcwLCA5MDY3NSwgOTA2ODAsIDkwNjg1LCA5MDY5MCwgOTA2OTUsIDkwNzAwLCAKKyAgICA5MDcwNSwgOTA3MTAsIDkwNzE1LCA5MDcyMCwgOTA3MjUsIDkwNzMwLCA5MDczNSwgOTA3NDAsIDkwNzQ1LCA5MDc1MCwgCisgICAgOTA3NTUsIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc1LCA5MDc4MCwgOTA3ODUsIDkwNzkwLCA5MDc5NSwgOTA4MDAsIAorICAgIDkwODA1LCA5MDgxMCwgOTA4MTUsIDkwODIwLCA5MDgyNSwgOTA4MzAsIDkwODM1LCA5MDg0MCwgOTA4NDUsIDkwODUwLCAKKyAgICA5MDg1NSwgOTA4NjAsIDkwODY1LCA5MDg2OSwgOTA4NzMsIDkwODc4LCA5MDg4MywgOTA4ODgsIDkwODkzLCA5MDg5OCwgCisgICAgOTA5MDMsIDkwOTA4LCA5MDkxMywgOTA5MTgsIDkwOTIzLCA5MDkyOCwgOTA5MzIsIDkwOTM2LCA5MDk0MCwgOTA5NDQsIAorICAgIDkwOTQ4LCA5MDk1MiwgOTA5NTYsIDkwOTYxLCA5MDk2NiwgMCwgMCwgOTA5NzEsIDkwOTc2LCA5MDk4MCwgOTA5ODQsIAorICAgIDkwOTg4LCA5MDk5MiwgOTA5OTYsIDkxMDAwLCA5MTAwNCwgOTEwMDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDkwMDU4LCA5MDA2MiwgOTAwNjYsIDkwMDcwLCA5MDA3NCwgOTAwNzgsIDAsIDAsIDkwMDgzLCAwLCAKLSAgICA5MDA4OCwgOTAwOTIsIDkwMDk3LCA5MDEwMiwgOTAxMDcsIDkwMTEyLCA5MDExNywgOTAxMjIsIDkwMTI3LCA5MDEzMiwgCi0gICAgOTAxMzcsIDkwMTQxLCA5MDE0NiwgOTAxNTEsIDkwMTU2LCA5MDE2MSwgOTAxNjUsIDkwMTcwLCA5MDE3NSwgOTAxODAsIAotICAgIDkwMTg1LCA5MDE4OSwgOTAxOTQsIDkwMTk5LCA5MDIwNCwgOTAyMDksIDkwMjEzLCA5MDIxOCwgOTAyMjMsIDkwMjI4LCAKLSAgICA5MDIzMywgOTAyMzgsIDkwMjQzLCA5MDI0OCwgOTAyNTMsIDkwMjU4LCA5MDI2MywgOTAyNjgsIDkwMjczLCA5MDI3NywgCi0gICAgOTAyODIsIDkwMjg3LCA5MDI5MiwgOTAyOTcsIDAsIDkwMzAyLCA5MDMwNywgMCwgMCwgMCwgOTAzMTIsIDAsIDAsIDkwMzE3LCAKLSAgICA5MDMyMiwgOTAzMjksIDkwMzM2LCA5MDM0MywgOTAzNTAsIDkwMzU3LCA5MDM2NCwgOTAzNzEsIDkwMzc4LCA5MDM4NSwgCi0gICAgOTAzOTIsIDkwMzk5LCA5MDQwNiwgOTA0MTMsIDkwNDIwLCA5MDQyNywgOTA0MzQsIDkwNDQxLCA5MDQ0OCwgOTA0NTUsIAotICAgIDkwNDYyLCA5MDQ2OSwgMCwgOTA0NzYsIDkwNDgzLCA5MDQ4OSwgOTA0OTUsIDkwNTAxLCA5MDUwOCwgOTA1MTUsIDkwNTIzLCAKLSAgICA5MDUzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA1NDAsIDkwNTQ1LCA5MDU1MCwgOTA1NTUsIDkwNTYwLCA5MDU2NSwgCi0gICAgOTA1NzAsIDkwNTc1LCA5MDU4MCwgOTA1ODUsIDkwNTkwLCA5MDU5NSwgOTA2MDAsIDkwNjA1LCA5MDYxMCwgOTA2MTUsIAotICAgIDkwNjIwLCA5MDYyNSwgOTA2MzAsIDkwNjM1LCA5MDY0MCwgOTA2NDUsIDkwNjUwLCA5MDY1NCwgOTA2NTksIDkwNjY0LCAKLSAgICA5MDY3MCwgOTA2NzQsIDAsIDAsIDAsIDkwNjc4LCA5MDY4NCwgOTA2ODgsIDkwNjkzLCA5MDY5OCwgOTA3MDMsIDkwNzA3LCAKLSAgICA5MDcxMiwgOTA3MTYsIDkwNzIxLCA5MDcyNiwgOTA3MzAsIDkwNzM0LCA5MDczOCwgOTA3NDIsIDkwNzQ2LCA5MDc1MSwgCi0gICAgOTA3NTYsIDkwNzYwLCA5MDc2NSwgOTA3NzAsIDkwNzc0LCA5MDc3OSwgOTA3ODQsIDkwNzg5LCA5MDc5NCwgOTA3OTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDkwODA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MTAxMiwgOTEwMTYsIDkxMDIwLCA5MTAyNCwgOTEwMjgsIDkxMDMyLCAwLCAwLCA5MTAzNywgMCwgCisgICAgOTEwNDIsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYxLCA5MTA2NiwgOTEwNzEsIDkxMDc2LCA5MTA4MSwgOTEwODYsIAorICAgIDkxMDkxLCA5MTA5NSwgOTExMDAsIDkxMTA1LCA5MTExMCwgOTExMTUsIDkxMTE5LCA5MTEyNCwgOTExMjksIDkxMTM0LCAKKyAgICA5MTEzOSwgOTExNDMsIDkxMTQ4LCA5MTE1MywgOTExNTgsIDkxMTYzLCA5MTE2NywgOTExNzIsIDkxMTc3LCA5MTE4MiwgCisgICAgOTExODcsIDkxMTkxLCA5MTE5NiwgOTEyMDEsIDkxMjA2LCA5MTIxMSwgOTEyMTYsIDkxMjIxLCA5MTIyNiwgOTEyMzAsIAorICAgIDkxMjM1LCA5MTI0MCwgOTEyNDUsIDkxMjUwLCAwLCA5MTI1NSwgOTEyNjAsIDAsIDAsIDAsIDkxMjY1LCAwLCAwLCA5MTI3MCwgCisgICAgOTEyNzUsIDkxMjgyLCA5MTI4OSwgOTEyOTYsIDkxMzAzLCA5MTMxMCwgOTEzMTcsIDkxMzI0LCA5MTMzMSwgOTEzMzgsIAorICAgIDkxMzQ1LCA5MTM1MiwgOTEzNTksIDkxMzY2LCA5MTM3MywgOTEzODAsIDkxMzg3LCA5MTM5NCwgOTE0MDEsIDkxNDA4LCAKKyAgICA5MTQxNSwgOTE0MjIsIDAsIDkxNDI5LCA5MTQzNiwgOTE0NDIsIDkxNDQ4LCA5MTQ1NCwgOTE0NjEsIDkxNDY4LCA5MTQ3NiwgCisgICAgOTE0ODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkxNDkzLCA5MTQ5OCwgOTE1MDMsIDkxNTA4LCA5MTUxMywgOTE1MTgsIAorICAgIDkxNTIzLCA5MTUyOCwgOTE1MzMsIDkxNTM4LCA5MTU0MywgOTE1NDgsIDkxNTUzLCA5MTU1OCwgOTE1NjMsIDkxNTY4LCAKKyAgICA5MTU3MywgOTE1NzgsIDkxNTgzLCA5MTU4OCwgOTE1OTMsIDkxNTk4LCA5MTYwMywgOTE2MDcsIDkxNjEyLCA5MTYxNywgCisgICAgOTE2MjMsIDkxNjI3LCAwLCAwLCAwLCA5MTYzMSwgOTE2MzcsIDkxNjQxLCA5MTY0NiwgOTE2NTEsIDkxNjU2LCA5MTY2MCwgCisgICAgOTE2NjUsIDkxNjY5LCA5MTY3NCwgOTE2NzksIDkxNjgzLCA5MTY4NywgOTE2OTIsIDkxNjk2LCA5MTcwMCwgOTE3MDUsIAorICAgIDkxNzEwLCA5MTcxNCwgOTE3MTksIDkxNzI0LCA5MTcyOSwgOTE3MzQsIDkxNzM5LCA5MTc0NCwgOTE3NDksIDkxNzU0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5MTc1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTA4MDksIAotICAgIDkwODEzLCA5MDgxOCwgOTA4MjMsIDAsIDkwODI5LCA5MDgzNCwgMCwgMCwgMCwgMCwgMCwgOTA4MzksIDkwODQ1LCA5MDg1MiwgCi0gICAgOTA4NTcsIDkwODYyLCA5MDg2NiwgOTA4NzEsIDkwODc2LCAwLCA5MDg4MSwgOTA4ODYsIDkwODkxLCAwLCA5MDg5NiwgCi0gICAgOTA5MDEsIDkwOTA2LCA5MDkxMSwgOTA5MTYsIDkwOTIxLCA5MDkyNiwgOTA5MzEsIDkwOTM2LCA5MDk0MSwgOTA5NDYsIAotICAgIDkwOTUwLCA5MDk1NCwgOTA5NTksIDkwOTY0LCA5MDk2OSwgOTA5NzMsIDkwOTc3LCA5MDk4MSwgOTA5ODYsIDkwOTkxLCAKLSAgICA5MDk5NiwgOTEwMDEsIDkxMDA2LCA5MTAxMSwgOTEwMTUsIDkxMDIwLCAwLCAwLCAwLCAwLCA5MTAyNSwgOTEwMzEsIAotICAgIDkxMDM2LCAwLCAwLCAwLCAwLCA5MTA0MSwgOTEwNDUsIDkxMDQ5LCA5MTA1MywgOTEwNTcsIDkxMDYxLCA5MTA2NiwgCi0gICAgOTEwNzEsIDkxMDc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTA4MywgOTEwODksIDkxMDk2LCA5MTEwMiwgOTExMDksIAotICAgIDkxMTE1LCA5MTEyMSwgOTExMjcsIDkxMTM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTE0MCwgOTExNDgsIDkxMTU2LCAKLSAgICA5MTE2NCwgOTExNzIsIDkxMTgwLCA5MTE4OCwgOTExOTYsIDkxMjA0LCA5MTIxMiwgOTEyMjAsIDkxMjI4LCA5MTIzNiwgCi0gICAgOTEyNDQsIDkxMjUyLCA5MTI2MCwgOTEyNjgsIDkxMjc2LCA5MTI4NCwgOTEyOTIsIDkxMzAwLCA5MTMwOCwgOTEzMTYsIAotICAgIDkxMzI0LCA5MTMzMiwgOTEzNDAsIDkxMzQ4LCA5MTM1NiwgOTEzNjQsIDkxMzcyLCA5MTM3OSwgOTEzODcsIDkxMzk1LCAKLSAgICA5MTM5OSwgOTE0MDQsIDkxNDA5LCA5MTQxNCwgOTE0MTksIDkxNDI0LCA5MTQyOSwgOTE0MzQsIDkxNDM4LCA5MTQ0MywgCi0gICAgOTE0NDcsIDkxNDUyLCA5MTQ1NiwgOTE0NjEsIDkxNDY1LCA5MTQ3MCwgOTE0NzUsIDkxNDgwLCA5MTQ4NSwgOTE0OTAsIAotICAgIDkxNDk1LCA5MTUwMCwgOTE1MDUsIDkxNTEwLCA5MTUxNSwgOTE1MjAsIDkxNTI1LCA5MTUzMCwgOTE1MzUsIDkxNTQwLCAKLSAgICA5MTU0NSwgOTE1NTAsIDkxNTU1LCA5MTU2MCwgOTE1NjUsIDkxNTcwLCA5MTU3NSwgOTE1ODAsIDkxNTg1LCA5MTU5MCwgCi0gICAgOTE1OTUsIDkxNjAwLCA5MTYwNSwgOTE2MTAsIDkxNjE1LCA5MTYyMCwgOTE2MjUsIDkxNjMwLCA5MTYzNSwgOTE2NDAsIAotICAgIDkxNjQ1LCA5MTY1MCwgOTE2NTUsIDAsIDAsIDAsIDkxNjYwLCA5MTY2NSwgOTE2NzQsIDkxNjgyLCA5MTY5MSwgOTE3MDAsIAotICAgIDkxNzExLCA5MTcyMiwgOTE3MjksIDkxNzM2LCA5MTc0MywgOTE3NTAsIDkxNzU3LCA5MTc2NCwgOTE3NzEsIDkxNzc4LCAKLSAgICA5MTc4NSwgOTE3OTIsIDkxNzk5LCA5MTgwNiwgOTE4MTMsIDkxODIwLCA5MTgyNywgOTE4MzQsIDkxODQxLCA5MTg0OCwgCi0gICAgOTE4NTUsIDkxODYyLCA5MTg2OSwgMCwgMCwgOTE4NzYsIDkxODgyLCA5MTg4OCwgOTE4OTQsIDkxOTAwLCA5MTkwNywgCi0gICAgOTE5MTQsIDkxOTIyLCA5MTkzMCwgOTE5MzcsIDkxOTQ0LCA5MTk1MSwgOTE5NTgsIDkxOTY1LCA5MTk3MiwgOTE5NzksIAotICAgIDkxOTg2LCA5MTk5MywgOTIwMDAsIDkyMDA3LCA5MjAxNCwgOTIwMjEsIDkyMDI4LCA5MjAzNSwgOTIwNDIsIDkyMDQ5LCAKLSAgICA5MjA1NiwgMCwgMCwgMCwgMCwgMCwgOTIwNjMsIDkyMDY5LCA5MjA3NSwgOTIwODEsIDkyMDg3LCA5MjA5NCwgOTIxMDEsIAotICAgIDkyMTA5LCA5MjExNywgOTIxMjMsIDkyMTI5LCA5MjEzNiwgOTIxNDIsIDkyMTQ4LCA5MjE1NCwgOTIxNjAsIDkyMTY3LCAKLSAgICA5MjE3NCwgOTIxODEsIDkyMTg4LCA5MjE5NSwgOTIyMDIsIDkyMjA5LCA5MjIxNiwgOTIyMjMsIDkyMjMwLCA5MjIzNywgCi0gICAgOTIyNDQsIDkyMjUxLCA5MjI1OCwgOTIyNjUsIDkyMjcyLCA5MjI3OSwgOTIyODYsIDkyMjkzLCA5MjMwMCwgOTIzMDcsIAotICAgIDkyMzE0LCA5MjMyMSwgOTIzMjgsIDkyMzM1LCA5MjM0MiwgOTIzNDksIDkyMzU2LCA5MjM2MywgOTIzNzAsIDkyMzc3LCAKLSAgICA5MjM4NCwgOTIzOTEsIDkyMzk4LCA5MjQwNSwgOTI0MTIsIDkyNDE5LCA5MjQyNiwgOTI0MzMsIDkyNDQwLCA5MjQ0NywgCi0gICAgOTI0NTQsIDkyNDYxLCA5MjQ2OCwgOTI0NzUsIDkyNDgyLCA5MjQ4OSwgOTI0OTYsIDkyNTAzLCA5MjUxMCwgOTI1MTcsIAotICAgIDkyNTI0LCA5MjUzMSwgOTI1MzgsIDkyNTQ1LCA5MjU1MiwgOTI1NTksIDkyNTY2LCA5MjU3MywgOTI1ODAsIDkyNTg3LCAKLSAgICA5MjU5NCwgOTI2MDEsIDkyNjA4LCA5MjYxNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3NjQsIAorICAgIDkxNzcwLCA5MTc3NiwgOTE3ODIsIDkxNzg4LCA5MTc5NCwgOTE4MDEsIDkxODA4LCA5MTgxNSwgOTE4MjEsIDkxODI3LCAKKyAgICA5MTgzMywgOTE4NDAsIDkxODQ3LCA5MTg1NCwgOTE4NjAsIDkxODY3LCA5MTg3NCwgOTE4ODEsIDkxODg4LCA5MTg5NCwgCisgICAgOTE5MDEsIDkxOTA4LCA5MTkxNCwgOTE5MjEsIDkxOTI4LCA5MTkzNSwgOTE5NDIsIDkxOTQ5LCA5MTk1NSwgOTE5NjIsIAorICAgIDkxOTY5LCA5MTk3NiwgOTE5ODIsIDkxOTg4LCA5MTk5NCwgOTIwMDAsIDkyMDA2LCA5MjAxMywgOTIwMjAsIDkyMDI2LCAKKyAgICA5MjAzMiwgOTIwMzgsIDkyMDQ1LCA5MjA1MSwgOTIwNTgsIDkyMDY1LCA5MjA3MiwgOTIwNzgsIDkyMDg2LCA5MjA5MywgCisgICAgOTIwOTksIDkyMTA2LCA5MjExMywgOTIxMjAsIDkyMTI2LCAwLCAwLCAwLCAwLCAwLCAwLCA5MjEzMywgOTIxNDEsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyMTQ5LCA5MjE1MywgOTIxNTgsIDkyMTYzLCAwLCAKKyAgICA5MjE2OSwgOTIxNzQsIDAsIDAsIDAsIDAsIDAsIDkyMTc5LCA5MjE4NSwgOTIxOTIsIDkyMTk3LCA5MjIwMiwgOTIyMDYsIAorICAgIDkyMjExLCA5MjIxNiwgMCwgOTIyMjEsIDkyMjI2LCA5MjIzMSwgMCwgOTIyMzYsIDkyMjQxLCA5MjI0NiwgOTIyNTEsIAorICAgIDkyMjU2LCA5MjI2MSwgOTIyNjYsIDkyMjcxLCA5MjI3NiwgOTIyODEsIDkyMjg2LCA5MjI5MCwgOTIyOTQsIDkyMjk5LCAKKyAgICA5MjMwNCwgOTIzMDksIDkyMzEzLCA5MjMxNywgOTIzMjEsIDkyMzI2LCA5MjMzMSwgOTIzMzYsIDkyMzQxLCA5MjM0NSwgCisgICAgOTIzNTAsIDkyMzU0LCA5MjM1OSwgMCwgMCwgMCwgMCwgOTIzNjQsIDkyMzcwLCA5MjM3NSwgMCwgMCwgMCwgMCwgOTIzODAsIAorICAgIDkyMzg0LCA5MjM4OCwgOTIzOTIsIDkyMzk2LCA5MjQwMCwgOTI0MDUsIDkyNDEwLCA5MjQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTI0MjIsIDkyNDI4LCA5MjQzNSwgOTI0NDEsIDkyNDQ4LCA5MjQ1NCwgOTI0NjAsIDkyNDY2LCA5MjQ3MywgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOTI0NzksIDkyNDg3LCA5MjQ5NSwgOTI1MDMsIDkyNTExLCA5MjUxOSwgOTI1MjcsIDkyNTM1LCAKKyAgICA5MjU0MywgOTI1NTEsIDkyNTU5LCA5MjU2NywgOTI1NzUsIDkyNTgzLCA5MjU5MSwgOTI1OTksIDkyNjA3LCA5MjYxNSwgCisgICAgOTI2MjMsIDkyNjMxLCA5MjYzOSwgOTI2NDcsIDkyNjU1LCA5MjY2MywgOTI2NzEsIDkyNjc5LCA5MjY4NywgOTI2OTUsIAorICAgIDkyNzAzLCA5MjcxMSwgOTI3MTgsIDkyNzI2LCA5MjczNCwgOTI3MzgsIDkyNzQzLCA5Mjc0OCwgOTI3NTMsIDkyNzU4LCAKKyAgICA5Mjc2MywgOTI3NjgsIDkyNzczLCA5Mjc3NywgOTI3ODIsIDkyNzg2LCA5Mjc5MSwgOTI3OTUsIDkyODAwLCA5MjgwNCwgCisgICAgOTI4MDksIDkyODE0LCA5MjgxOSwgOTI4MjQsIDkyODI5LCA5MjgzNCwgOTI4MzksIDkyODQ0LCA5Mjg0OSwgOTI4NTQsIAorICAgIDkyODU5LCA5Mjg2NCwgOTI4NjksIDkyODc0LCA5Mjg3OSwgOTI4ODQsIDkyODg5LCA5Mjg5NCwgOTI4OTksIDkyOTA0LCAKKyAgICA5MjkwOSwgOTI5MTQsIDkyOTE5LCA5MjkyNCwgOTI5MjksIDkyOTM0LCA5MjkzOSwgOTI5NDQsIDkyOTQ5LCA5Mjk1NCwgCisgICAgOTI5NTksIDkyOTY0LCA5Mjk2OSwgOTI5NzQsIDkyOTc5LCA5Mjk4NCwgOTI5ODksIDkyOTk0LCAwLCAwLCAwLCA5Mjk5OSwgCisgICAgOTMwMDQsIDkzMDEzLCA5MzAyMSwgOTMwMzAsIDkzMDM5LCA5MzA1MCwgOTMwNjEsIDkzMDY4LCA5MzA3NSwgOTMwODIsIAorICAgIDkzMDg5LCA5MzA5NiwgOTMxMDMsIDkzMTEwLCA5MzExNywgOTMxMjQsIDkzMTMxLCA5MzEzOCwgOTMxNDUsIDkzMTUyLCAKKyAgICA5MzE1OSwgOTMxNjYsIDkzMTczLCA5MzE4MCwgOTMxODcsIDkzMTk0LCA5MzIwMSwgOTMyMDgsIDAsIDAsIDkzMjE1LCAKKyAgICA5MzIyMSwgOTMyMjcsIDkzMjMzLCA5MzIzOSwgOTMyNDYsIDkzMjUzLCA5MzI2MSwgOTMyNjksIDkzMjc2LCA5MzI4MywgCisgICAgOTMyOTAsIDkzMjk3LCA5MzMwNCwgOTMzMTEsIDkzMzE4LCA5MzMyNSwgOTMzMzIsIDkzMzM5LCA5MzM0NiwgOTMzNTMsIAorICAgIDkzMzYwLCA5MzM2NywgOTMzNzQsIDkzMzgxLCA5MzM4OCwgOTMzOTUsIDAsIDAsIDAsIDAsIDAsIDkzNDAyLCA5MzQwOCwgCisgICAgOTM0MTQsIDkzNDIwLCA5MzQyNiwgOTM0MzMsIDkzNDQwLCA5MzQ0OCwgOTM0NTYsIDkzNDYyLCA5MzQ2OCwgOTM0NzUsIAorICAgIDkzNDgxLCA5MzQ4NywgOTM0OTMsIDkzNDk5LCA5MzUwNiwgOTM1MTMsIDkzNTIwLCA5MzUyNywgOTM1MzQsIDkzNTQxLCAKKyAgICA5MzU0OCwgOTM1NTUsIDkzNTYyLCA5MzU2OSwgOTM1NzYsIDkzNTgzLCA5MzU5MCwgOTM1OTcsIDkzNjA0LCA5MzYxMSwgCisgICAgOTM2MTgsIDkzNjI1LCA5MzYzMiwgOTM2MzksIDkzNjQ2LCA5MzY1MywgOTM2NjAsIDkzNjY3LCA5MzY3NCwgOTM2ODEsIAorICAgIDkzNjg4LCA5MzY5NSwgOTM3MDIsIDkzNzA5LCA5MzcxNiwgOTM3MjMsIDkzNzMwLCA5MzczNywgOTM3NDQsIDkzNzUxLCAKKyAgICA5Mzc1OCwgOTM3NjUsIDkzNzcyLCA5Mzc3OSwgOTM3ODYsIDkzNzkzLCA5MzgwMCwgOTM4MDcsIDkzODE0LCA5MzgyMSwgCisgICAgOTM4MjgsIDkzODM1LCA5Mzg0MiwgOTM4NDksIDkzODU2LCA5Mzg2MywgOTM4NzAsIDkzODc3LCA5Mzg4NCwgOTM4OTEsIAorICAgIDkzODk4LCA5MzkwNSwgOTM5MTIsIDkzOTE5LCA5MzkyNiwgOTM5MzMsIDkzOTQwLCA5Mzk0NywgOTM5NTQsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyNjIyLCA5MjYyNiwgOTI2MzAsIAotICAgIDkyNjM0LCA5MjYzOCwgOTI2NDIsIDkyNjQ2LCA5MjY1MCwgOTI2NTQsIDkyNjU4LCA5MjY2MywgOTI2NjgsIDkyNjczLCAKLSAgICA5MjY3OCwgOTI2ODMsIDkyNjg4LCA5MjY5MywgOTI2OTgsIDkyNzAzLCA5MjcwOSwgOTI3MTUsIDkyNzIxLCA5MjcyOCwgCi0gICAgOTI3MzUsIDkyNzQyLCA5Mjc0OSwgOTI3NTYsIDkyNzYzLCA5Mjc3MCwgOTI3NzcsIDkyNzg0LCAwLCA5Mjc5MSwgOTI3OTUsIAotICAgIDkyNzk5LCA5MjgwMywgOTI4MDcsIDkyODExLCA5MjgxNCwgOTI4MTgsIDkyODIxLCA5MjgyNSwgOTI4MjgsIDkyODMyLCAKLSAgICA5MjgzNiwgOTI4NDEsIDkyODQ1LCA5Mjg1MCwgOTI4NTMsIDkyODU3LCA5Mjg2MCwgOTI4NjQsIDkyODY3LCA5Mjg3MSwgCi0gICAgOTI4NzUsIDkyODc5LCA5Mjg4MywgOTI4ODcsIDkyODkxLCA5Mjg5NSwgOTI4OTksIDkyOTAzLCA5MjkwNywgOTI5MTEsIAotICAgIDkyOTE1LCA5MjkxOSwgOTI5MjMsIDkyOTI3LCA5MjkzMSwgOTI5MzUsIDkyOTM5LCA5Mjk0MiwgOTI5NDUsIDkyOTQ5LCAKLSAgICA5Mjk1MywgOTI5NTcsIDkyOTYwLCA5Mjk2MywgOTI5NjYsIDkyOTcwLCA5Mjk3NCwgOTI5NzgsIDkyOTgyLCA5Mjk4NiwgCi0gICAgOTI5ODksIDkyOTkzLCA5Mjk5OSwgOTMwMDUsIDkzMDExLCA5MzAxNiwgOTMwMjMsIDkzMDI3LCA5MzAzMiwgOTMwMzYsIAotICAgIDkzMDQxLCA5MzA0NiwgOTMwNTIsIDkzMDU3LCA5MzA2MywgOTMwNjcsIDkzMDcyLCA5MzA3NiwgOTMwODEsIDkzMDg0LCAKLSAgICA5MzA4NywgOTMwOTEsIDkzMDk2LCA5MzEwMiwgOTMxMDcsIDkzMTEzLCAwLCAwLCAwLCAwLCA5MzExOCwgOTMxMjEsIAotICAgIDkzMTI0LCA5MzEyNywgOTMxMzAsIDkzMTMzLCA5MzEzNiwgOTMxMzksIDkzMTQyLCA5MzE0NSwgOTMxNDksIDkzMTUzLCAKLSAgICA5MzE1NywgOTMxNjEsIDkzMTY1LCA5MzE2OSwgOTMxNzMsIDkzMTc3LCA5MzE4MSwgOTMxODYsIDkzMTkxLCA5MzE5NSwgCi0gICAgOTMxOTgsIDkzMjAxLCA5MzIwNCwgOTMyMDcsIDkzMjEwLCA5MzIxMywgOTMyMTYsIDkzMjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzIyMiwgOTMyMjYsIDkzMjMwLCA5MzIzNCwgOTMyMzcsIDkzMjQxLCAKLSAgICA5MzI0NCwgOTMyNDgsIDkzMjUxLCA5MzI1NSwgOTMyNTgsIDkzMjYyLCA5MzI2NSwgOTMyNjksIDkzMjcyLCA5MzI3NiwgCi0gICAgOTMyODAsIDkzMjg0LCA5MzI4OCwgOTMyOTIsIDkzMjk2LCA5MzMwMCwgOTMzMDQsIDkzMzA4LCA5MzMxMiwgOTMzMTYsIAotICAgIDkzMzIwLCA5MzMyNCwgOTMzMjgsIDkzMzMyLCA5MzMzNiwgOTMzNDAsIDkzMzQ0LCA5MzM0OCwgOTMzNTIsIDkzMzU1LCAKLSAgICA5MzM1OCwgOTMzNjIsIDkzMzY2LCA5MzM3MCwgOTMzNzMsIDkzMzc2LCA5MzM3OSwgOTMzODMsIDkzMzg3LCA5MzM5MSwgCi0gICAgOTMzOTUsIDkzMzk5LCA5MzQwMiwgOTM0MDcsIDkzNDExLCA5MzQxNiwgOTM0MjAsIDkzNDI1LCA5MzQyOSwgOTM0MzQsIAotICAgIDkzNDM4LCA5MzQ0MywgOTM0NDcsIDkzNDUxLCA5MzQ1NSwgOTM0NTksIDkzNDYyLCA5MzQ2NiwgOTM0NzEsIDkzNDc0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA5Mzk2MSwgOTM5NjUsIDkzOTY5LCA5Mzk3MywgOTM5NzcsIDkzOTgxLCA5Mzk4NSwgOTM5ODksIAorICAgIDkzOTkzLCA5Mzk5NywgOTQwMDIsIDk0MDA3LCA5NDAxMiwgOTQwMTcsIDk0MDIyLCA5NDAyNywgOTQwMzIsIDk0MDM3LCAKKyAgICA5NDA0MiwgOTQwNDgsIDk0MDU0LCA5NDA2MCwgOTQwNjcsIDk0MDc0LCA5NDA4MSwgOTQwODgsIDk0MDk1LCA5NDEwMiwgCisgICAgOTQxMDksIDk0MTE2LCA5NDEyMywgMCwgOTQxMzAsIDk0MTM0LCA5NDEzOCwgOTQxNDIsIDk0MTQ2LCA5NDE1MCwgOTQxNTMsIAorICAgIDk0MTU3LCA5NDE2MCwgOTQxNjQsIDk0MTY3LCA5NDE3MSwgOTQxNzUsIDk0MTgwLCA5NDE4NCwgOTQxODksIDk0MTkyLCAKKyAgICA5NDE5NiwgOTQxOTksIDk0MjAzLCA5NDIwNiwgOTQyMTAsIDk0MjE0LCA5NDIxOCwgOTQyMjIsIDk0MjI2LCA5NDIzMCwgCisgICAgOTQyMzQsIDk0MjM4LCA5NDI0MiwgOTQyNDYsIDk0MjUwLCA5NDI1NCwgOTQyNTgsIDk0MjYyLCA5NDI2NiwgOTQyNzAsIAorICAgIDk0Mjc0LCA5NDI3OCwgOTQyODEsIDk0Mjg0LCA5NDI4OCwgOTQyOTIsIDk0Mjk2LCA5NDI5OSwgOTQzMDIsIDk0MzA1LCAKKyAgICA5NDMwOSwgOTQzMTMsIDk0MzE3LCA5NDMyMSwgOTQzMjQsIDk0MzI3LCA5NDMzMSwgOTQzMzcsIDk0MzQzLCA5NDM0OSwgCisgICAgOTQzNTQsIDk0MzYxLCA5NDM2NSwgOTQzNzAsIDk0Mzc0LCA5NDM3OSwgOTQzODQsIDk0MzkwLCA5NDM5NSwgOTQ0MDEsIAorICAgIDk0NDA1LCA5NDQxMCwgOTQ0MTQsIDk0NDE5LCA5NDQyMiwgOTQ0MjUsIDk0NDI5LCA5NDQzNCwgOTQ0NDAsIDk0NDQ1LCAKKyAgICA5NDQ1MSwgMCwgMCwgMCwgMCwgOTQ0NTYsIDk0NDU5LCA5NDQ2MiwgOTQ0NjUsIDk0NDY4LCA5NDQ3MSwgOTQ0NzQsIAorICAgIDk0NDc3LCA5NDQ4MCwgOTQ0ODMsIDk0NDg3LCA5NDQ5MSwgOTQ0OTUsIDk0NDk5LCA5NDUwMywgOTQ1MDcsIDk0NTExLCAKKyAgICA5NDUxNSwgOTQ1MTksIDk0NTI0LCA5NDUyOSwgOTQ1MzMsIDk0NTM2LCA5NDUzOSwgOTQ1NDIsIDk0NTQ1LCA5NDU0OCwgCisgICAgOTQ1NTEsIDk0NTU0LCA5NDU1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTQ1NjAsIDk0NTY1LCA5NDU3MCwgOTQ1NzUsIDk0NTc5LCA5NDU4NCwgOTQ1ODgsIDk0NTkzLCA5NDU5NywgOTQ2MDIsIAorICAgIDk0NjA2LCA5NDYxMSwgOTQ2MTUsIDk0NjIwLCA5NDYyNCwgOTQ2MjksIDk0NjM0LCA5NDYzOSwgOTQ2NDQsIDk0NjQ5LCAKKyAgICA5NDY1NCwgOTQ2NTksIDk0NjY0LCA5NDY2OSwgOTQ2NzQsIDk0Njc5LCA5NDY4NCwgOTQ2ODksIDk0Njk0LCA5NDY5OSwgCisgICAgOTQ3MDQsIDk0NzA5LCA5NDcxNCwgOTQ3MTksIDk0NzI0LCA5NDcyOCwgOTQ3MzIsIDk0NzM3LCA5NDc0MiwgOTQ3NDcsIAorICAgIDk0NzUxLCA5NDc1NSwgOTQ3NTksIDk0NzY0LCA5NDc2OSwgOTQ3NzQsIDk0Nzc5LCA5NDc4MywgOTQ3ODcsIDk0NzkzLCAKKyAgICA5NDc5OCwgOTQ4MDQsIDk0ODA5LCA5NDgxNSwgOTQ4MjAsIDk0ODI2LCA5NDgzMSwgOTQ4MzcsIDk0ODQyLCA5NDg0NywgCisgICAgOTQ4NTIsIDk0ODU3LCA5NDg2MSwgOTQ4NjYsIDk0ODcyLCA5NDg3NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOTQ4ODEsIDk0ODg4LCA5NDg5NSwgOTQ5MDIsIDk0OTA5LCA5NDkxNiwgOTQ5MjMsIDk0OTMwLCAKKyAgICA5NDkzNywgOTQ5NDQsIDk0OTUxLCA5NDk1OCwgOTQ5NjUsIDk0OTcyLCA5NDk3OSwgOTQ5ODYsIDk0OTkzLCA5NTAwMCwgCisgICAgOTUwMDcsIDk1MDE0LCA5NTAyMSwgOTUwMjgsIDk1MDM1LCA5NTA0MiwgOTUwNDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1MDU2LCA5NTA2MywgOTUwNjksIDk1MDc1LCA5NTA4MSwgOTUwODcsIDk1MDkzLCA5NTA5OSwgOTUxMDUsIDk1MTExLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA5NTExNywgOTUxMjIsIDk1MTI3LCA5NTEzMiwgOTUxMzcsIDk1MTQxLCA5NTE0NSwgOTUxNDksIAorICAgIDk1MTU0LCA5NTE1OSwgOTUxNjQsIDk1MTY5LCA5NTE3NCwgOTUxNzksIDk1MTg0LCA5NTE4OSwgOTUxOTQsIDk1MTk5LCAKKyAgICA5NTIwNCwgOTUyMDksIDk1MjE0LCA5NTIxOSwgOTUyMjQsIDk1MjI5LCA5NTIzNCwgOTUyMzksIDk1MjQ0LCA5NTI0OSwgCisgICAgOTUyNTQsIDk1MjU5LCA5NTI2NCwgOTUyNjksIDk1Mjc0LCA5NTI3OSwgOTUyODQsIDk1Mjg5LCA5NTI5NCwgOTUyOTksIAorICAgIDk1MzA0LCA5NTMwOSwgOTUzMTQsIDk1MzE5LCA5NTMyNSwgOTUzMzAsIDk1MzM2LCA5NTM0MSwgOTUzNDcsIDk1MzUyLCAKKyAgICA5NTM1OCwgOTUzNjQsIDk1MzY4LCA5NTM3MywgOTUzNzcsIDAsIDk1MzgxLCA5NTM4NiwgOTUzOTAsIDk1Mzk0LCA5NTM5OCwgCisgICAgOTU0MDIsIDk1NDA2LCA5NTQxMCwgOTU0MTQsIDk1NDE4LCA5NTQyMiwgOTU0MjcsIDk1NDMxLCA5NTQzNiwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTM0NzgsIDkzNDgxLCA5MzQ4NiwgOTM0OTIsIDkzNTAwLCAKLSAgICA5MzUwNSwgOTM1MTEsIDkzNTE5LCA5MzUyNSwgOTM1MzEsIDkzNTM1LCA5MzUzOSwgOTM1NDYsIDkzNTU1LCA5MzU2MiwgCi0gICAgOTM1NzEsIDkzNTc3LCA5MzU4NiwgOTM1OTMsIDkzNjAwLCA5MzYwNywgOTM2MTcsIDkzNjIzLCA5MzYyNywgOTM2MzQsIAotICAgIDkzNjQzLCA5MzY1MywgOTM2NjAsIDkzNjY3LCA5MzY3MSwgOTM2NzUsIDkzNjgyLCA5MzY5MiwgOTM2OTYsIDkzNzAzLCAKLSAgICA5MzcxMCwgOTM3MTcsIDkzNzIzLCA5MzczMCwgOTM3MzcsIDkzNzQ0LCA5Mzc1MSwgOTM3NTUsIDkzNzU5LCA5Mzc2MywgCi0gICAgOTM3NzAsIDkzNzc0LCA5Mzc4MSwgOTM3ODgsIDkzODAyLCA5MzgxMSwgOTM4MTUsIDkzODE5LCA5MzgyMywgOTM4MzAsIAotICAgIDkzODM0LCA5MzgzOCwgOTM4NDIsIDkzODUwLCA5Mzg1OCwgOTM4NzcsIDkzODg3LCA5MzkwNywgOTM5MTEsIDkzOTE1LCAKLSAgICA5MzkxOSwgOTM5MjMsIDkzOTI3LCA5MzkzMSwgOTM5MzUsIDkzOTQyLCA5Mzk0NiwgOTM5NDksIDkzOTUzLCA5Mzk1NywgCi0gICAgOTM5NjMsIDkzOTcwLCA5Mzk3OSwgOTM5ODMsIDkzOTkyLCA5NDAwMSwgOTQwMDksIDk0MDEzLCA5NDAyMCwgOTQwMjQsIAotICAgIDk0MDI4LCA5NDAzMiwgOTQwMzYsIDk0MDQ3LCA5NDA1NiwgOTQwNjUsIDk0MDc0LCA5NDA4MywgOTQwOTUsIDk0MTA0LCAKLSAgICA5NDExMywgOTQxMjIsIDk0MTMwLCA5NDEzOSwgOTQxNTEsIDk0MTYwLCA5NDE2OSwgOTQxNzgsIDk0MTkwLCA5NDE5OSwgCi0gICAgOTQyMDgsIDk0MjIwLCA5NDIyOSwgOTQyMzgsIDk0MjUwLCA5NDI1OSwgOTQyNjMsIDk0MjY3LCA5NDI3MSwgOTQyNzUsIAotICAgIDk0Mjc5LCA5NDI4MywgOTQyODcsIDk0Mjk0LCA5NDI5OCwgOTQzMDIsIDk0MzEzLCA5NDMxNywgOTQzMjEsIDk0MzI4LCAKLSAgICA5NDMzNCwgOTQzNDAsIDk0MzQ0LCA5NDM1MSwgOTQzNTUsIDk0MzU5LCA5NDM2MywgOTQzNjcsIDk0MzcxLCA5NDM3NSwgCi0gICAgOTQzODEsIDk0Mzg5LCA5NDM5MywgOTQzOTcsIDk0NDAwLCA5NDQwNiwgOTQ0MTYsIDk0NDIwLCA5NDQzMiwgOTQ0MzksIAotICAgIDk0NDQ2LCA5NDQ1MywgOTQ0NjAsIDk0NDY2LCA5NDQ3MCwgOTQ0NzQsIDk0NDc4LCA5NDQ4MiwgOTQ0ODksIDk0NDk4LCAKLSAgICA5NDUwNSwgOTQ1MTMsIDk0NTIxLCA5NDUyNywgOTQ1MzEsIDk0NTM1LCA5NDUzOSwgOTQ1NDMsIDk0NTQ5LCA5NDU1OCwgCi0gICAgOTQ1NzAsIDk0NTc3LCA5NDU4NCwgOTQ1OTMsIDk0NjA0LCA5NDYxMCwgOTQ2MTksIDk0NjI4LCA5NDYzNSwgOTQ2NDQsIAotICAgIDk0NjUxLCA5NDY1OCwgOTQ2NjgsIDk0Njc1LCA5NDY4MiwgOTQ2ODksIDk0Njk2LCA5NDcwMCwgOTQ3MDYsIDk0NzEwLCAKLSAgICA5NDcyMSwgOTQ3MjksIDk0NzM4LCA5NDc1MCwgOTQ3NTcsIDk0NzY0LCA5NDc3NCwgOTQ3ODEsIDk0NzkwLCA5NDc5NywgCi0gICAgOTQ4MDYsIDk0ODEzLCA5NDgyMCwgOTQ4MzAsIDk0ODM3LCA5NDg0NCwgOTQ4NTQsIDk0ODYxLCA5NDg3MywgOTQ4ODIsIAotICAgIDk0ODg5LCA5NDg5NiwgOTQ5MDMsIDk0OTEyLCA5NDkyMiwgOTQ5MzUsIDk0OTQyLCA5NDk1MiwgOTQ5NjIsIDk0OTY5LCAKLSAgICA5NDk3OCwgOTQ5OTEsIDk0OTk4LCA5NTAwNSwgOTUwMTIsIDk1MDIyLCA5NTAzMiwgOTUwMzksIDk1MDQ5LCA5NTA1NiwgCi0gICAgOTUwNjMsIDk1MDczLCA5NTA3OSwgOTUwODYsIDk1MDkzLCA5NTEwMCwgOTUxMTAsIDk1MTE3LCA5NTEyNCwgOTUxMzEsIAotICAgIDk1MTM3LCA5NTE0NCwgOTUxNTQsIDk1MTYxLCA5NTE2NSwgOTUxNzMsIDk1MTc3LCA5NTE4OSwgOTUxOTMsIDk1MjA3LCAKLSAgICA5NTIxMSwgOTUyMTUsIDk1MjE5LCA5NTIyMywgOTUyMjksIDk1MjM2LCA5NTI0NCwgOTUyNDgsIDk1MjUyLCA5NTI1NiwgCi0gICAgOTUyNjAsIDk1MjY3LCA5NTI3MSwgOTUyNzcsIDk1MjgzLCA5NTI5MSwgOTUyOTUsIDk1MzAyLCA5NTMxMCwgOTUzMTQsIAotICAgIDk1MzE4LCA5NTMyNCwgOTUzMjgsIDk1MzM3LCA5NTM0NiwgOTUzNTMsIDk1MzYzLCA5NTM2OSwgOTUzNzMsIDk1Mzc3LCAKLSAgICA5NTM4NSwgOTUzOTIsIDk1Mzk5LCA5NTQwNSwgOTU0MDksIDk1NDE3LCA5NTQyMSwgOTU0MjgsIDk1NDQwLCA5NTQ0NywgCi0gICAgOTU0NTcsIDk1NDYzLCA5NTQ2NywgOTU0NzYsIDk1NDgzLCA5NTQ5MiwgOTU0OTYsIDk1NTAwLCA5NTUwNywgOTU1MTEsIAotICAgIDk1NTE1LCA5NTUxOSwgOTU1MjMsIDk1NTI2LCA5NTUzMiwgOTU1MzgsIDk1NTQyLCA5NTU0NiwgOTU1NTMsIDk1NTYwLCAKLSAgICA5NTU2NywgOTU1NzQsIDk1NTgxLCA5NTU4OCwgOTU1OTUsIDk1NjAyLCA5NTYwOCwgOTU2MTIsIDk1NjE2LCA5NTYyMywgCi0gICAgOTU2MzAsIDk1NjM3LCA5NTY0NCwgOTU2NTEsIDk1NjU1LCA5NTY1OCwgOTU2NjMsIDk1NjY3LCA5NTY3MSwgOTU2ODAsIAotICAgIDk1Njg5LCA5NTY5MywgOTU2OTcsIDk1NzAzLCA5NTcwOSwgOTU3MjYsIDk1NzMyLCA5NTczNiwgOTU3NDUsIDk1NzQ5LCAKLSAgICA5NTc1MywgOTU3NjAsIDk1NzY4LCA5NTc3NiwgOTU3ODIsIDk1Nzg2LCA5NTc5MCwgOTU3OTQsIDk1Nzk4LCA5NTgwMSwgCi0gICAgOTU4MDcsIDk1ODE0LCA5NTgyNCwgOTU4MzEsIDk1ODM4LCA5NTg0NSwgOTU4NTEsIDk1ODU4LCA5NTg2NSwgOTU4NzIsIAotICAgIDk1ODc5LCA5NTg4NiwgOTU4OTUsIDk1OTAyLCA5NTkxNCwgOTU5MjEsIDk1OTI4LCA5NTkzOCwgOTU5NDksIDk1OTU2LCAKLSAgICA5NTk2MywgOTU5NzAsIDk1OTc3LCA5NTk4NCwgOTU5OTEsIDk1OTk4LCA5NjAwNSwgOTYwMTIsIDk2MDE5LCA5NjAyOSwgCi0gICAgOTYwMzksIDk2MDQ5LCA5NjA1NiwgOTYwNjYsIDk2MDczLCA5NjA4MCwgOTYwODcsIDk2MDk0LCA5NjEwMSwgOTYxMDgsIAotICAgIDk2MTE1LCA5NjEyMiwgOTYxMjksIDk2MTM2LCA5NjE0MywgOTYxNTAsIDk2MTU3LCA5NjE2MywgOTYxNzAsIDk2MTc3LCAKLSAgICA5NjE4NiwgOTYxOTMsIDk2MjAwLCA5NjIwNCwgOTYyMTIsIDk2MjE2LCA5NjIyMCwgOTYyMjQsIDk2MjI4LCA5NjIzMiwgCi0gICAgOTYyMzksIDk2MjQzLCA5NjI1MiwgOTYyNTYsIDk2MjYzLCA5NjI3MSwgOTYyNzUsIDk2Mjc5LCA5NjI4MywgOTYyOTYsIAotICAgIDk2MzEyLCA5NjMxNiwgOTYzMjAsIDk2MzI3LCA5NjMzMywgOTYzNDAsIDk2MzQ0LCA5NjM0OCwgOTYzNTIsIDk2MzU2LCAKLSAgICA5NjM2MCwgOTYzNjcsIDk2MzcxLCA5NjM4OSwgOTYzOTMsIDk2Mzk3LCA5NjQwNCwgOTY0MDgsIDk2NDEyLCA5NjQxOCwgCi0gICAgOTY0MjIsIDk2NDI2LCA5NjQzNCwgOTY0MzgsIDk2NDQyLCA5NjQ0NiwgOTY0NTAsIDk2NDU2LCA5NjQ2NywgOTY0NzYsIAotICAgIDk2NDg1LCA5NjQ5MiwgOTY0OTksIDk2NTEwLCA5NjUxNywgOTY1MjQsIDk2NTMxLCA5NjUzOCwgOTY1NDUsIDk2NTUyLCAKLSAgICA5NjU1OSwgOTY1NjksIDk2NTc1LCA5NjU4MiwgOTY1OTIsIDk2NjAxLCA5NjYwOCwgOTY2MTcsIDk2NjI3LCA5NjYzNCwgCi0gICAgOTY2NDEsIDk2NjQ4LCA5NjY1NSwgOTY2NjcsIDk2Njc0LCA5NjY4MSwgOTY2ODgsIDk2Njk1LCA5NjcwMiwgOTY3MTIsIAotICAgIDk2NzE5LCA5NjcyNiwgOTY3MzYsIDk2NzQ5LCA5Njc2MSwgOTY3NjgsIDk2Nzc4LCA5Njc4NSwgOTY3OTIsIDk2Nzk5LCAKLSAgICA5NjgxMywgOTY4MTksIDk2ODI3LCA5NjgzNywgOTY4NDcsIDk2ODU0LCA5Njg2MSwgOTY4NjcsIDk2ODcxLCA5Njg3OCwgCi0gICAgOTY4ODgsIDk2ODk0LCA5NjkwNywgOTY5MTEsIDk2OTE1LCA5NjkyMiwgOTY5MjYsIDk2OTMzLCA5Njk0MywgOTY5NDcsIAotICAgIDk2OTUxLCA5Njk1NSwgOTY5NTksIDk2OTYzLCA5Njk3MCwgOTY5NzQsIDk2OTgxLCA5Njk4OCwgOTY5OTUsIDk3MDA0LCAKLSAgICA5NzAxMywgOTcwMjMsIDk3MDMwLCA5NzAzNywgOTcwNDQsIDk3MDU0LCA5NzA2MSwgOTcwNzEsIDk3MDc4LCA5NzA4OCwgCi0gICAgOTcwOTUsIDk3MTAyLCA5NzExMiwgOTcxMjIsIDk3MTI5LCA5NzEzNSwgOTcxNDMsIDk3MTUxLCA5NzE1NywgOTcxNjMsIAotICAgIDk3MTY3LCA5NzE3MSwgOTcxNzgsIDk3MTg2LCA5NzE5MiwgOTcxOTYsIDk3MjAwLCA5NzIwNCwgOTcyMTEsIDk3MjIzLCAKLSAgICA5NzIyNiwgOTcyMzMsIDk3MjM5LCA5NzI0MywgOTcyNDcsIDk3MjUxLCA5NzI1NSwgOTcyNTksIDk3MjYzLCA5NzI2NywgCi0gICAgOTcyNzEsIDk3Mjc1LCA5NzI3OSwgOTcyODYsIDk3MjkwLCA5NzI5NiwgOTczMDAsIDk3MzA0LCA5NzMwOCwgOTczMTQsIAotICAgIDk3MzIxLCA5NzMyOCwgOTczMzUsIDk3MzQ2LCA5NzM1NCwgOTczNTgsIDk3MzY0LCA5NzM3MywgOTczODAsIDk3Mzg2LCAKLSAgICA5NzM4OSwgOTczOTMsIDk3Mzk3LCA5NzQwMywgOTc0MTIsIDk3NDIwLCA5NzQyNCwgOTc0MzAsIDk3NDM0LCA5NzQzOCwgCi0gICAgOTc0NDIsIDk3NDQ4LCA5NzQ1NSwgOTc0NjEsIDk3NDY1LCA5NzQ3MSwgOTc0NzUsIDk3NDc5LCA5NzQ4OCwgOTc1MDAsIAotICAgIDk3NTA0LCA5NzUxMSwgOTc1MTgsIDk3NTI4LCA5NzUzNSwgOTc1NDcsIDk3NTU0LCA5NzU2MSwgOTc1NjgsIDk3NTc5LCAKLSAgICA5NzU4OSwgOTc2MDIsIDk3NjEyLCA5NzYxOSwgOTc2MjMsIDk3NjI3LCA5NzYzMSwgOTc2MzUsIDk3NjQ0LCA5NzY1MywgCi0gICAgOTc2NjIsIDk3Njc5LCA5NzY4OCwgOTc2OTQsIDk3NzAxLCA5NzcwOSwgOTc3MjIsIDk3NzI2LCA5NzczNSwgOTc3NDQsIAotICAgIDk3NzUzLCA5Nzc2MiwgOTc3NzMsIDk3NzgyLCA5Nzc5MSwgOTc4MDAsIDk3ODA5LCA5NzgxOCwgOTc4MjcsIDk3ODM3LCAKLSAgICA5Nzg0MCwgOTc4NDQsIDk3ODQ4LCA5Nzg1MiwgOTc4NTYsIDk3ODYwLCA5Nzg2NiwgOTc4NzMsIDk3ODgwLCA5Nzg4NywgCi0gICAgOTc4OTMsIDk3ODk5LCA5NzkwNiwgOTc5MTIsIDk3OTE5LCA5NzkyNywgOTc5MzEsIDk3OTM4LCA5Nzk0NSwgOTc5NTIsIAotICAgIDk3OTYwLCA5Nzk2MywgOTc5NjcsIDk3OTcxLCA5Nzk3NSwgOTc5NzksIDk3OTg1LCA5Nzk4OSwgOTc5OTUsIDk4MDAyLCAKLSAgICA5ODAwOSwgOTgwMTUsIDk4MDIyLCA5ODAyOSwgOTgwMzYsIDk4MDQzLCA5ODA1MCwgOTgwNTcsIDk4MDY0LCA5ODA3MSwgCi0gICAgOTgwNzgsIDk4MDg1LCA5ODA5MiwgOTgwOTksIDk4MTA2LCA5ODExMywgOTgxMTksIDk4MTIzLCA5ODEzMiwgOTgxMzYsIAotICAgIDk4MTQwLCA5ODE0NCwgOTgxNDgsIDk4MTU0LCA5ODE2MSwgOTgxNjgsIDk4MTc1LCA5ODE4MiwgOTgxODksIDk4MTk1LCAKLSAgICA5ODIwMywgOTgyMDcsIDk4MjExLCA5ODIxNSwgOTgyMTksIDk4MjI1LCA5ODI0MiwgOTgyNTksIDk4MjYzLCA5ODI2NywgCi0gICAgOTgyNzEsIDk4Mjc1LCA5ODI3OSwgOTgyODMsIDk4Mjg5LCA5ODI5NiwgOTgzMDAsIDk4MzA2LCA5ODMxMywgOTgzMjAsIAotICAgIDk4MzI3LCA5ODMzNCwgOTgzNDEsIDk4MzUwLCA5ODM1NywgOTgzNjQsIDk4MzcxLCA5ODM3OCwgOTgzODIsIDk4Mzg2LCAKLSAgICA5ODM5MiwgOTg0MDQsIDk4NDA4LCA5ODQxMiwgOTg0MjEsIDk4NDI1LCA5ODQyOSwgOTg0MzMsIDk4NDM5LCA5ODQ0MywgCi0gICAgOTg0NDcsIDk4NDU2LCA5ODQ2MCwgOTg0NjQsIDk4NDY4LCA5ODQ3NSwgOTg0NzksIDk4NDgzLCA5ODQ4NywgOTg0OTEsIAotICAgIDk4NDk1LCA5ODQ5OSwgOTg1MDMsIDk4NTA3LCA5ODUxMywgOTg1MjAsIDk4NTI3LCA5ODUzMywgOTg1MzcsIDk4NTU0LCAKLSAgICA5ODU2MCwgOTg1NjQsIDk4NTcwLCA5ODU3NiwgOTg1ODIsIDk4NTg4LCA5ODU5NCwgOTg2MDAsIDk4NjA0LCA5ODYwOCwgCi0gICAgOTg2MTIsIDk4NjE4LCA5ODYyMiwgOTg2MjgsIDk4NjMyLCA5ODYzNiwgOTg2NDMsIDk4NjUwLCA5ODY2NywgOTg2NzEsIAotICAgIDk4Njc1LCA5ODY3OSwgOTg2ODMsIDk4Njg3LCA5ODY5OSwgOTg3MDIsIDk4NzA3LCA5ODcxMiwgOTg3MjcsIDk4NzM3LCAKLSAgICA5ODc0OSwgOTg3NTMsIDk4NzU3LCA5ODc2MSwgOTg3NjcsIDk4Nzc0LCA5ODc4MSwgOTg3OTEsIDk4ODAzLCA5ODgwOSwgCi0gICAgOTg4MTUsIDk4ODI0LCA5ODgyOCwgOTg4MzIsIDk4ODM5LCA5ODg0OSwgOTg4NTYsIDk4ODYyLCA5ODg2NiwgOTg4NzAsIAotICAgIDk4ODc3LCA5ODg4MywgOTg4ODcsIDk4ODkzLCA5ODg5NywgOTg5MDUsIDk4OTExLCA5ODkxNSwgOTg5MjMsIDk4OTMxLCAKLSAgICA5ODkzOCwgOTg5NDQsIDk4OTUxLCA5ODk1OCwgOTg5NjgsIDk4OTc4LCA5ODk4MiwgOTg5ODYsIDk4OTkwLCA5ODk5NCwgCi0gICAgOTkwMDAsIDk5MDA3LCA5OTAxMywgOTkwMjAsIDk5MDI3LCA5OTAzNCwgOTkwNDMsIDk5MDUwLCA5OTA1NywgOTkwNjMsIAotICAgIDk5MDcwLCA5OTA3NywgOTkwODQsIDk5MDkxLCA5OTA5OCwgOTkxMDUsIDk5MTExLCA5OTExOCwgOTkxMjUsIDk5MTMyLCAKLSAgICA5OTE0MSwgOTkxNDgsIDk5MTU1LCA5OTE1OSwgOTkxNjUsIDk5MTY5LCA5OTE3NSwgOTkxODIsIDk5MTg5LCA5OTE5NiwgCi0gICAgOTkyMDAsIDk5MjA0LCA5OTIwOCwgOTkyMTIsIDk5MjE2LCA5OTIyMywgOTkyMjcsIDk5MjMxLCA5OTIzNywgOTkyNDUsIAotICAgIDk5MjQ5LCA5OTI1MywgOTkyNTcsIDk5MjYxLCA5OTI2OCwgOTkyNzIsIDk5Mjc2LCA5OTI4NCwgOTkyODgsIDk5MjkyLCAKLSAgICA5OTI5NiwgOTkzMDAsIDk5MzA2LCA5OTMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTkzMTQsIDk5MzIwLCA5OTMyNiwgOTkzMzMsIDk5MzQwLCA5OTM0NywgOTkzNTQsIDk5MzYxLCA5OTM2OCwgCi0gICAgOTkzNzQsIDk5MzgxLCA5OTM4OCwgOTkzOTUsIDk5NDAyLCA5OTQwOSwgOTk0MTYsIDk5NDIyLCA5OTQyOCwgOTk0MzQsIAotICAgIDk5NDQwLCA5OTQ0NiwgOTk0NTIsIDk5NDU4LCA5OTQ2NCwgOTk0NzAsIDk5NDc3LCA5OTQ4NCwgOTk0OTEsIDk5NDk4LCAKLSAgICA5OTUwNSwgOTk1MTIsIDk5NTE4LCA5OTUyNCwgOTk1MzAsIDk5NTM3LCA5OTU0NCwgOTk1NTAsIDk5NTU2LCA5OTU2NSwgCi0gICAgOTk1NzIsIDk5NTc5LCA5OTU4NiwgOTk1OTMsIDk5NjAwLCA5OTYwNywgOTk2MTMsIDk5NjE5LCA5OTYyNSwgOTk2MzQsIAotICAgIDk5NjQxLCA5OTY0OCwgOTk2NTksIDk5NjcwLCA5OTY3NiwgOTk2ODIsIDk5Njg4LCA5OTY5NywgOTk3MDQsIDk5NzExLCAKLSAgICA5OTcyMSwgOTk3MzEsIDk5NzQyLCA5OTc1MywgOTk3NjUsIDk5Nzc4LCA5OTc4OSwgOTk4MDAsIDk5ODEyLCA5OTgyNSwgCi0gICAgOTk4MzYsIDk5ODQ3LCA5OTg1OCwgOTk4NjksIDk5ODgwLCA5OTg5MiwgOTk5MDAsIDk5OTA4LCA5OTkxNywgOTk5MjYsIAotICAgIDk5OTM1LCA5OTk0MSwgOTk5NDcsIDk5OTUzLCA5OTk2MCwgOTk5NzAsIDk5OTc3LCA5OTk4NywgOTk5OTIsIDk5OTk3LCAKLSAgICAxMDAwMDMsIDEwMDAwOSwgMTAwMDE3LCAxMDAwMjUsIDEwMDAzNCwgMTAwMDQ1LCAxMDAwNTYsIDEwMDA2NCwgMTAwMDcyLCAKLSAgICAxMDAwODEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDA5MCwgMTAwMTAxLCAxMDAxMDgsIAotICAgIDEwMDExNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwMTI0LCAxMDAxMjgsIDEwMDEzMiwgCi0gICAgMTAwMTM2LCAxMDAxNDAsIDEwMDE0NCwgMTAwMTQ4LCAxMDAxNTIsIDEwMDE1NiwgMTAwMTYwLCAxMDAxNjQsIDEwMDE2OCwgCi0gICAgMTAwMTcyLCAxMDAxNzYsIDEwMDE4MCwgMTAwMTg0LCAxMDAxODgsIDEwMDE5MiwgMTAwMTk2LCAxMDAyMDAsIDEwMDIwNCwgCi0gICAgMTAwMjA4LCAxMDAyMTIsIDEwMDIxNiwgMTAwMjIwLCAxMDAyMjQsIDEwMDIyOCwgMTAwMjMyLCAxMDAyMzYsIDEwMDI0MCwgCi0gICAgMTAwMjQ0LCAxMDAyNDgsIDEwMDI1MiwgMTAwMjU2LCAxMDAyNjAsIDEwMDI2NCwgMTAwMjY4LCAxMDAyNzIsIDEwMDI3NiwgCi0gICAgMTAwMjgwLCAxMDAyODQsIDEwMDI4OCwgMTAwMjkyLCAxMDAyOTYsIDEwMDMwMCwgMTAwMzA0LCAxMDAzMDgsIDEwMDMxMiwgCi0gICAgMTAwMzE2LCAxMDAzMjAsIDEwMDMyNCwgMTAwMzI4LCAxMDAzMzIsIDEwMDMzNiwgMTAwMzQwLCAxMDAzNDQsIDEwMDM0OCwgCi0gICAgMTAwMzUyLCAxMDAzNTYsIDEwMDM2MCwgMTAwMzY0LCAxMDAzNjgsIDEwMDM3MiwgMTAwMzc2LCAxMDAzODAsIDEwMDM4NCwgCi0gICAgMTAwMzg4LCAxMDAzOTIsIDEwMDM5NiwgMTAwNDAwLCAxMDA0MDQsIDEwMDQwOCwgMTAwNDEyLCAxMDA0MTYsIDEwMDQyMCwgCi0gICAgMTAwNDI0LCAxMDA0MjgsIDEwMDQzMiwgMTAwNDM2LCAxMDA0NDAsIDEwMDQ0NCwgMTAwNDQ4LCAxMDA0NTIsIDEwMDQ1NiwgCi0gICAgMTAwNDYwLCAxMDA0NjQsIDEwMDQ2OCwgMTAwNDcyLCAxMDA0NzYsIDEwMDQ4MCwgMTAwNDg0LCAxMDA0ODgsIDEwMDQ5MiwgCi0gICAgMTAwNDk2LCAxMDA1MDAsIDEwMDUwNCwgMTAwNTA4LCAxMDA1MTIsIDEwMDUxNiwgMTAwNTIwLCAxMDA1MjQsIDEwMDUyOCwgCi0gICAgMTAwNTMyLCAxMDA1MzYsIDEwMDU0MCwgMTAwNTQ0LCAxMDA1NDgsIDEwMDU1MiwgMTAwNTU2LCAxMDA1NjAsIDEwMDU2NCwgCi0gICAgMTAwNTY4LCAxMDA1NzIsIDEwMDU3NiwgMTAwNTgwLCAxMDA1ODQsIDEwMDU4OCwgMTAwNTkyLCAxMDA1OTYsIDEwMDYwMCwgCi0gICAgMTAwNjA0LCAxMDA2MDgsIDEwMDYxMiwgMTAwNjE2LCAxMDA2MjAsIDEwMDYyNCwgMTAwNjI4LCAxMDA2MzIsIDEwMDYzNiwgCi0gICAgMTAwNjQwLCAxMDA2NDQsIDEwMDY0OCwgMTAwNjUyLCAxMDA2NTYsIDEwMDY2MCwgMTAwNjY0LCAxMDA2NjgsIDEwMDY3MiwgCi0gICAgMTAwNjc2LCAxMDA2ODAsIDEwMDY4NCwgMTAwNjg4LCAxMDA2OTIsIDEwMDY5NiwgMTAwNzAwLCAxMDA3MDQsIDEwMDcwOCwgCi0gICAgMTAwNzEyLCAxMDA3MTYsIDEwMDcyMCwgMTAwNzI0LCAxMDA3MjgsIDEwMDczMiwgMTAwNzM2LCAxMDA3NDAsIDEwMDc0NCwgCi0gICAgMTAwNzQ4LCAxMDA3NTIsIDEwMDc1NiwgMTAwNzYwLCAxMDA3NjQsIDEwMDc2OCwgMTAwNzcyLCAxMDA3NzYsIDEwMDc4MCwgCi0gICAgMTAwNzg0LCAxMDA3ODgsIDEwMDc5MiwgMTAwNzk2LCAxMDA4MDAsIDEwMDgwNCwgMTAwODA4LCAxMDA4MTIsIDEwMDgxNiwgCi0gICAgMTAwODIwLCAxMDA4MjQsIDEwMDgyOCwgMTAwODMyLCAxMDA4MzYsIDEwMDg0MCwgMTAwODQ0LCAxMDA4NDgsIDEwMDg1MiwgCi0gICAgMTAwODU2LCAxMDA4NjAsIDEwMDg2NCwgMTAwODY4LCAxMDA4NzIsIDEwMDg3NiwgMTAwODgwLCAxMDA4ODQsIDEwMDg4OCwgCi0gICAgMTAwODkyLCAxMDA4OTYsIDEwMDkwMCwgMTAwOTA0LCAxMDA5MDgsIDEwMDkxMiwgMTAwOTE2LCAxMDA5MjAsIDEwMDkyNCwgCi0gICAgMTAwOTI4LCAxMDA5MzIsIDEwMDkzNiwgMTAwOTQwLCAxMDA5NDQsIDEwMDk0OCwgMTAwOTUyLCAxMDA5NTYsIDEwMDk2MCwgCi0gICAgMTAwOTY0LCAxMDA5NjgsIDEwMDk3MiwgMTAwOTc2LCAxMDA5ODAsIDEwMDk4NCwgMTAwOTg4LCAxMDA5OTIsIDEwMDk5NiwgCi0gICAgMTAxMDAwLCAxMDEwMDQsIDEwMTAwOCwgMTAxMDEyLCAxMDEwMTYsIDEwMTAyMCwgMTAxMDI0LCAxMDEwMjgsIDEwMTAzMiwgCi0gICAgMTAxMDM2LCAxMDEwNDAsIDEwMTA0NCwgMTAxMDQ4LCAxMDEwNTIsIDEwMTA1NiwgMTAxMDYwLCAxMDEwNjQsIDEwMTA2OCwgCi0gICAgMTAxMDcyLCAxMDEwNzYsIDEwMTA4MCwgMTAxMDg0LCAxMDEwODgsIDEwMTA5MiwgMTAxMDk2LCAxMDExMDAsIDEwMTEwNCwgCi0gICAgMTAxMTA4LCAxMDExMTIsIDEwMTExNiwgMTAxMTIwLCAxMDExMjQsIDEwMTEyOCwgMTAxMTMyLCAxMDExMzYsIDEwMTE0MCwgCi0gICAgMTAxMTQ0LCAxMDExNDgsIDEwMTE1MiwgMTAxMTU2LCAxMDExNjAsIDEwMTE2NCwgMTAxMTY4LCAxMDExNzIsIDEwMTE3NiwgCi0gICAgMTAxMTgwLCAxMDExODQsIDEwMTE4OCwgMTAxMTkyLCAxMDExOTYsIDEwMTIwMCwgMTAxMjA0LCAxMDEyMDgsIDEwMTIxMiwgCi0gICAgMTAxMjE2LCAxMDEyMjAsIDEwMTIyNCwgMTAxMjI4LCAxMDEyMzIsIDEwMTIzNiwgMTAxMjQwLCAxMDEyNDQsIDEwMTI0OCwgCi0gICAgMTAxMjUyLCAxMDEyNTYsIDEwMTI2MCwgMTAxMjY0LCAxMDEyNjgsIDEwMTI3MiwgMTAxMjc2LCAxMDEyODAsIDEwMTI4NCwgCi0gICAgMTAxMjg4LCAxMDEyOTIsIDEwMTI5NiwgMTAxMzAwLCAxMDEzMDQsIDEwMTMwOCwgMTAxMzEyLCAxMDEzMTYsIDEwMTMyMCwgCi0gICAgMTAxMzI0LCAxMDEzMjgsIDEwMTMzMiwgMTAxMzM2LCAxMDEzNDAsIDEwMTM0NCwgMTAxMzQ4LCAxMDEzNTIsIDEwMTM1NiwgCi0gICAgMTAxMzYwLCAxMDEzNjQsIDEwMTM2OCwgMTAxMzcyLCAxMDEzNzYsIDEwMTM4MCwgMTAxMzg0LCAxMDEzODgsIDEwMTM5MiwgCi0gICAgMTAxMzk2LCAxMDE0MDAsIDEwMTQwNCwgMTAxNDA4LCAxMDE0MTIsIDEwMTQxNiwgMTAxNDIwLCAxMDE0MjQsIDEwMTQyOCwgCi0gICAgMTAxNDMyLCAxMDE0MzYsIDEwMTQ0MCwgMTAxNDQ0LCAxMDE0NDgsIDEwMTQ1MiwgMTAxNDU2LCAxMDE0NjAsIDEwMTQ2NCwgCi0gICAgMTAxNDY4LCAxMDE0NzIsIDEwMTQ3NiwgMTAxNDgwLCAxMDE0ODQsIDEwMTQ4OCwgMTAxNDkyLCAxMDE0OTYsIDEwMTUwMCwgCi0gICAgMTAxNTA0LCAxMDE1MDgsIDEwMTUxMiwgMTAxNTE2LCAxMDE1MjAsIDEwMTUyNCwgMTAxNTI4LCAxMDE1MzIsIDEwMTUzNiwgCi0gICAgMTAxNTQwLCAxMDE1NDQsIDEwMTU0OCwgMTAxNTUyLCAxMDE1NTYsIDEwMTU2MCwgMTAxNTY0LCAxMDE1NjgsIDEwMTU3MiwgCi0gICAgMTAxNTc2LCAxMDE1ODAsIDEwMTU4NCwgMTAxNTg4LCAxMDE1OTIsIDEwMTU5NiwgMTAxNjAwLCAxMDE2MDQsIDEwMTYwOCwgCi0gICAgMTAxNjEyLCAxMDE2MTYsIDEwMTYyMCwgMTAxNjI0LCAxMDE2MjgsIDEwMTYzMiwgMTAxNjM2LCAxMDE2NDAsIDEwMTY0NCwgCi0gICAgMTAxNjQ4LCAxMDE2NTIsIDEwMTY1NiwgMTAxNjYwLCAxMDE2NjQsIDEwMTY2OCwgMTAxNjcyLCAxMDE2NzYsIDEwMTY4MCwgCi0gICAgMTAxNjg0LCAxMDE2ODgsIDEwMTY5MiwgMTAxNjk2LCAxMDE3MDAsIDEwMTcwNCwgMTAxNzA4LCAxMDE3MTIsIDEwMTcxNiwgCi0gICAgMTAxNzIwLCAxMDE3MjQsIDEwMTcyOCwgMTAxNzMyLCAxMDE3MzYsIDEwMTc0MCwgMTAxNzQ0LCAxMDE3NDgsIDEwMTc1MiwgCi0gICAgMTAxNzU2LCAxMDE3NjAsIDEwMTc2NCwgMTAxNzY4LCAxMDE3NzIsIDEwMTc3NiwgMTAxNzgwLCAxMDE3ODQsIDEwMTc4OCwgCi0gICAgMTAxNzkyLCAxMDE3OTYsIDEwMTgwMCwgMTAxODA0LCAxMDE4MDgsIDEwMTgxMiwgMTAxODE2LCAxMDE4MjAsIDEwMTgyNCwgCi0gICAgMTAxODI4LCAxMDE4MzIsIDEwMTgzNiwgMTAxODQwLCAxMDE4NDQsIDEwMTg0OCwgMTAxODUyLCAxMDE4NTYsIDEwMTg2MCwgCi0gICAgMTAxODY0LCAxMDE4NjgsIDEwMTg3MiwgMTAxODc2LCAxMDE4ODAsIDEwMTg4NCwgMTAxODg4LCAxMDE4OTIsIDEwMTg5NiwgCi0gICAgMTAxOTAwLCAxMDE5MDQsIDEwMTkwOCwgMTAxOTEyLCAxMDE5MTYsIDEwMTkyMCwgMTAxOTI0LCAxMDE5MjgsIDEwMTkzMiwgCi0gICAgMTAxOTM2LCAxMDE5NDAsIDEwMTk0NCwgMTAxOTQ4LCAxMDE5NTIsIDEwMTk1NiwgMTAxOTYwLCAxMDE5NjQsIDEwMTk2OCwgCi0gICAgMTAxOTcyLCAxMDE5NzYsIDEwMTk4MCwgMTAxOTg0LCAxMDE5ODgsIDEwMTk5MiwgMTAxOTk2LCAxMDIwMDAsIDEwMjAwNCwgCi0gICAgMTAyMDA4LCAxMDIwMTIsIDEwMjAxNiwgMTAyMDIwLCAxMDIwMjQsIDEwMjAyOCwgMTAyMDMyLCAxMDIwMzYsIDEwMjA0MCwgCi0gICAgMTAyMDQ0LCAxMDIwNDgsIDEwMjA1MiwgMTAyMDU2LCAxMDIwNjAsIDEwMjA2NCwgMTAyMDY4LCAxMDIwNzIsIDEwMjA3NiwgCi0gICAgMTAyMDgwLCAxMDIwODQsIDEwMjA4OCwgMTAyMDkyLCAxMDIwOTYsIDEwMjEwMCwgMTAyMTA0LCAxMDIxMDgsIDEwMjExMiwgCi0gICAgMTAyMTE2LCAxMDIxMjAsIDEwMjEyNCwgMTAyMTI4LCAxMDIxMzIsIDEwMjEzNiwgMTAyMTQwLCAxMDIxNDQsIDEwMjE0OCwgCi0gICAgMTAyMTUyLCAxMDIxNTYsIDEwMjE2MCwgMTAyMTY0LCAxMDIxNjgsIDEwMjE3MiwgMTAyMTc2LCAxMDIxODAsIDEwMjE4NCwgCi0gICAgMTAyMTg4LCAxMDIxOTIsIDEwMjE5NiwgMTAyMjAwLCAxMDIyMDQsIDEwMjIwOCwgMTAyMjEyLCAxMDIyMTYsIDEwMjIyMCwgCi0gICAgMTAyMjI0LCAxMDIyMjgsIDEwMjIzMiwgMTAyMjM2LCAxMDIyNDAsIDEwMjI0NCwgMTAyMjQ4LCAxMDIyNTIsIDEwMjI1NiwgCi0gICAgMTAyMjYwLCAxMDIyNjQsIDEwMjI2OCwgMTAyMjcyLCAxMDIyNzYsIDEwMjI4MCwgMTAyMjg0LCAxMDIyODgsIDEwMjI5MiwgCi0gICAgMTAyMjk2LCAxMDIzMDAsIDEwMjMwNCwgMTAyMzA4LCAxMDIzMTIsIDEwMjMxNiwgMTAyMzIwLCAxMDIzMjQsIDEwMjMyOCwgCi0gICAgMTAyMzMyLCAxMDIzMzYsIDEwMjM0MCwgMTAyMzQ0LCAxMDIzNDgsIDEwMjM1MiwgMTAyMzU2LCAxMDIzNjAsIDEwMjM2NCwgCi0gICAgMTAyMzY4LCAxMDIzNzIsIDEwMjM3NiwgMTAyMzgwLCAxMDIzODQsIDEwMjM4OCwgMTAyMzkyLCAxMDIzOTYsIDEwMjQwMCwgCi0gICAgMTAyNDA0LCAxMDI0MDgsIDEwMjQxMiwgMTAyNDE2LCAxMDI0MjAsIDEwMjQyNCwgMTAyNDI4LCAxMDI0MzIsIDEwMjQzNiwgCi0gICAgMTAyNDQwLCAxMDI0NDQsIDEwMjQ0OCwgMTAyNDUyLCAxMDI0NTYsIDEwMjQ2MCwgMTAyNDY0LCAxMDI0NjgsIDEwMjQ3MiwgCi0gICAgMTAyNDc2LCAxMDI0ODAsIDEwMjQ4NCwgMTAyNDg4LCAxMDI0OTIsIDEwMjQ5NiwgMTAyNTAwLCAxMDI1MDQsIDEwMjUwOCwgCi0gICAgMTAyNTEyLCAxMDI1MTYsIDEwMjUyMCwgMTAyNTI0LCAxMDI1MjgsIDEwMjUzMiwgMTAyNTM2LCAxMDI1NDAsIDEwMjU0NCwgCi0gICAgMTAyNTQ4LCAxMDI1NTIsIDEwMjU1NiwgMTAyNTYwLCAxMDI1NjQsIDEwMjU2OCwgMTAyNTcyLCAxMDI1NzYsIDEwMjU4MCwgCi0gICAgMTAyNTg0LCAxMDI1ODgsIDEwMjU5MiwgMTAyNTk2LCAxMDI2MDAsIDEwMjYwNCwgMTAyNjA4LCAxMDI2MTIsIDEwMjYxNiwgCi0gICAgMTAyNjIwLCAxMDI2MjQsIDEwMjYyOCwgMTAyNjMyLCAxMDI2MzYsIDEwMjY0MCwgMTAyNjQ0LCAxMDI2NDgsIDEwMjY1MiwgCi0gICAgMTAyNjU2LCAxMDI2NjAsIDEwMjY2NCwgMTAyNjY4LCAxMDI2NzIsIDEwMjY3NiwgMTAyNjgwLCAxMDI2ODQsIDEwMjY4OCwgCi0gICAgMTAyNjkyLCAxMDI2OTYsIDEwMjcwMCwgMTAyNzA0LCAxMDI3MDgsIDEwMjcxMiwgMTAyNzE2LCAxMDI3MjAsIDEwMjcyNCwgCi0gICAgMTAyNzI4LCAxMDI3MzIsIDEwMjczNiwgMTAyNzQwLCAxMDI3NDQsIDEwMjc0OCwgMTAyNzUyLCAxMDI3NTYsIDEwMjc2MCwgCi0gICAgMTAyNzY0LCAxMDI3NjgsIDEwMjc3MiwgMTAyNzc2LCAxMDI3ODAsIDEwMjc4NCwgMTAyNzg4LCAxMDI3OTIsIDEwMjc5NiwgCi0gICAgMTAyODAwLCAxMDI4MDQsIDEwMjgwOCwgMTAyODEyLCAxMDI4MTYsIDEwMjgyMCwgMTAyODI0LCAxMDI4MjgsIDEwMjgzMiwgCi0gICAgMTAyODM2LCAxMDI4NDAsIDEwMjg0NCwgMTAyODQ4LCAxMDI4NTIsIDEwMjg1NiwgMTAyODYwLCAxMDI4NjQsIDEwMjg2OCwgCi0gICAgMTAyODcyLCAxMDI4NzYsIDEwMjg4MCwgMTAyODg0LCAxMDI4ODgsIDEwMjg5MiwgMTAyODk2LCAxMDI5MDAsIDEwMjkwNCwgCi0gICAgMTAyOTA4LCAxMDI5MTIsIDEwMjkxNiwgMTAyOTIwLCAxMDI5MjQsIDEwMjkyOCwgMTAyOTMyLCAxMDI5MzYsIDEwMjk0MCwgCi0gICAgMTAyOTQ0LCAxMDI5NDgsIDEwMjk1MiwgMTAyOTU2LCAxMDI5NjAsIDEwMjk2NCwgMTAyOTY4LCAxMDI5NzIsIDEwMjk3NiwgCi0gICAgMTAyOTgwLCAxMDI5ODQsIDEwMjk4OCwgMTAyOTkyLCAxMDI5OTYsIDEwMzAwMCwgMTAzMDA0LCAxMDMwMDgsIDEwMzAxMiwgCi0gICAgMTAzMDE2LCAxMDMwMjAsIDEwMzAyNCwgMTAzMDI4LCAxMDMwMzIsIDEwMzAzNiwgMTAzMDQwLCAxMDMwNDQsIDEwMzA0OCwgCi0gICAgMTAzMDUyLCAxMDMwNTYsIDEwMzA2MCwgMTAzMDY0LCAxMDMwNjgsIDEwMzA3MiwgMTAzMDc2LCAxMDMwODAsIDEwMzA4NCwgCi0gICAgMTAzMDg4LCAxMDMwOTIsIDEwMzA5NiwgMTAzMTAwLCAxMDMxMDQsIDEwMzEwOCwgMTAzMTEyLCAxMDMxMTYsIDEwMzEyMCwgCi0gICAgMTAzMTI0LCAxMDMxMjgsIDEwMzEzMiwgMTAzMTM2LCAxMDMxNDAsIDEwMzE0NCwgMTAzMTQ4LCAxMDMxNTIsIDEwMzE1NiwgCi0gICAgMTAzMTYwLCAxMDMxNjQsIDEwMzE2OCwgMTAzMTcyLCAxMDMxNzYsIDEwMzE4MCwgMTAzMTg0LCAxMDMxODgsIDEwMzE5MiwgCi0gICAgMTAzMTk2LCAxMDMyMDAsIDEwMzIwNCwgMTAzMjA4LCAxMDMyMTIsIDEwMzIxNiwgMTAzMjIwLCAxMDMyMjQsIDEwMzIyOCwgCi0gICAgMTAzMjMyLCAxMDMyMzYsIDEwMzI0MCwgMTAzMjQ0LCAxMDMyNDgsIDEwMzI1MiwgMTAzMjU2LCAxMDMyNjAsIDEwMzI2NCwgCi0gICAgMTAzMjY4LCAxMDMyNzIsIDEwMzI3NiwgMTAzMjgwLCAxMDMyODQsIDEwMzI4OCwgMTAzMjkyLCAxMDMyOTYsIDEwMzMwMCwgCi0gICAgMTAzMzA0LCAxMDMzMDgsIDEwMzMxMiwgMTAzMzE2LCAxMDMzMjAsIDEwMzMyNCwgMTAzMzI4LCAxMDMzMzIsIDEwMzMzNiwgCi0gICAgMTAzMzQwLCAxMDMzNDQsIDEwMzM0OCwgMTAzMzUyLCAxMDMzNTYsIDEwMzM2MCwgMTAzMzY0LCAxMDMzNjgsIDEwMzM3MiwgCi0gICAgMTAzMzc2LCAxMDMzODAsIDEwMzM4NCwgMTAzMzg4LCAxMDMzOTIsIDEwMzM5NiwgMTAzNDAwLCAxMDM0MDQsIDEwMzQwOCwgCi0gICAgMTAzNDEyLCAxMDM0MTYsIDEwMzQyMCwgMTAzNDI0LCAxMDM0MjgsIDEwMzQzMiwgMTAzNDM2LCAxMDM0NDAsIDEwMzQ0NCwgCi0gICAgMTAzNDQ4LCAxMDM0NTIsIDEwMzQ1NiwgMTAzNDYwLCAxMDM0NjQsIDEwMzQ2OCwgMTAzNDcyLCAxMDM0NzYsIDEwMzQ4MCwgCi0gICAgMTAzNDg0LCAxMDM0ODgsIDEwMzQ5MiwgMTAzNDk2LCAxMDM1MDAsIDEwMzUwNCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgCi0gICAgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMyLCAxMDM1MzYsIDEwMzU0MCwgMTAzNTQ0LCAxMDM1NDgsIDEwMzU1MiwgCi0gICAgMTAzNTU2LCAxMDM1NjAsIDEwMzU2NCwgMTAzNTY4LCAxMDM1NzIsIDEwMzU3NiwgMTAzNTgwLCAxMDM1ODQsIDEwMzU4OCwgCi0gICAgMTAzNTkyLCAxMDM1OTYsIDEwMzYwMCwgMTAzNjA0LCAxMDM2MDgsIDEwMzYxMiwgMTAzNjE2LCAxMDM2MjAsIDEwMzYyNCwgCi0gICAgMTAzNjI4LCAxMDM2MzIsIDEwMzYzNiwgMTAzNjQwLCAxMDM2NDQsIDEwMzY0OCwgMTAzNjUyLCAxMDM2NTYsIDEwMzY2MCwgCi0gICAgMTAzNjY0LCAxMDM2NjgsIDEwMzY3MiwgMTAzNjc2LCAxMDM2ODAsIDEwMzY4NCwgMTAzNjg4LCAxMDM2OTIsIDEwMzY5NiwgCi0gICAgMTAzNzAwLCAxMDM3MDQsIDEwMzcwOCwgMTAzNzEyLCAxMDM3MTYsIDEwMzcyMCwgMTAzNzI0LCAxMDM3MjgsIDEwMzczMiwgCi0gICAgMTAzNzM2LCAxMDM3NDAsIDEwMzc0NCwgMTAzNzQ4LCAxMDM3NTIsIDEwMzc1NiwgMTAzNzYwLCAxMDM3NjQsIDEwMzc2OCwgCi0gICAgMTAzNzcyLCAxMDM3NzYsIDEwMzc4MCwgMTAzNzg0LCAxMDM3ODgsIDEwMzc5MiwgMTAzNzk2LCAxMDM4MDAsIDEwMzgwNCwgCi0gICAgMTAzODA4LCAxMDM4MTIsIDEwMzgxNiwgMTAzODIwLCAxMDM4MjQsIDEwMzgyOCwgMTAzODMyLCAxMDM4MzYsIDEwMzg0MCwgCi0gICAgMTAzODQ0LCAxMDM4NDgsIDEwMzg1MiwgMTAzODU2LCAxMDM4NjAsIDEwMzg2NCwgMTAzODY4LCAxMDM4NzIsIDEwMzg3NiwgCi0gICAgMTAzODgwLCAxMDM4ODQsIDEwMzg4OCwgMTAzODkyLCAxMDM4OTYsIDEwMzkwMCwgMTAzOTA0LCAxMDM5MDgsIDEwMzkxMiwgCi0gICAgMTAzOTE2LCAxMDM5MjAsIDEwMzkyNCwgMTAzOTI4LCAxMDM5MzIsIDEwMzkzNiwgMTAzOTQwLCAxMDM5NDQsIDEwMzk0OCwgCi0gICAgMTAzOTUyLCAxMDM5NTYsIDEwMzk2MCwgMTAzOTY0LCAxMDM5NjgsIDEwMzk3MiwgMTAzOTc2LCAxMDM5ODAsIDEwMzk4NCwgCi0gICAgMTAzOTg4LCAxMDM5OTIsIDEwMzk5NiwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOCwgMTA0MDEyLCAxMDQwMTYsIDEwNDAyMCwgCi0gICAgMTA0MDI0LCAxMDQwMjgsIDEwNDAzMiwgMTA0MDM2LCAxMDQwNDAsIDEwNDA0NCwgMTA0MDQ4LCAxMDQwNTIsIDEwNDA1NiwgCi0gICAgMTA0MDYwLCAxMDQwNjQsIDEwNDA2OCwgMTA0MDcyLCAxMDQwNzYsIDEwNDA4MCwgMTA0MDg0LCAxMDQwODgsIDEwNDA5MiwgCi0gICAgMTA0MDk2LCAxMDQxMDAsIDEwNDEwNCwgMTA0MTA4LCAxMDQxMTIsIDEwNDExNiwgMTA0MTIwLCAxMDQxMjQsIDEwNDEyOCwgCi0gICAgMTA0MTMyLCAxMDQxMzYsIDEwNDE0MCwgMTA0MTQ0LCAxMDQxNDgsIDEwNDE1MiwgMTA0MTU2LCAxMDQxNjAsIDEwNDE2NCwgCi0gICAgMTA0MTY4LCAxMDQxNzIsIDEwNDE3NiwgMTA0MTgwLCAxMDQxODQsIDEwNDE4OCwgMTA0MTkyLCAxMDQxOTYsIDEwNDIwMCwgCi0gICAgMTA0MjA0LCAxMDQyMDgsIDEwNDIxMiwgMTA0MjE2LCAxMDQyMjAsIDEwNDIyNCwgMTA0MjI4LCAxMDQyMzIsIDEwNDIzNiwgCi0gICAgMTA0MjQwLCAxMDQyNDQsIDEwNDI0OCwgMTA0MjUyLCAxMDQyNTYsIDEwNDI2MCwgMTA0MjY0LCAxMDQyNjgsIDEwNDI3MiwgCi0gICAgMTA0Mjc2LCAxMDQyODAsIDEwNDI4NCwgMTA0Mjg4LCAxMDQyOTIsIDEwNDI5NiwgMTA0MzAwLCAxMDQzMDQsIDEwNDMwOCwgCi0gICAgMTA0MzEyLCAxMDQzMTYsIDEwNDMyMCwgMTA0MzI0LCAxMDQzMjgsIDEwNDMzMiwgMTA0MzM2LCAxMDQzNDAsIDEwNDM0NCwgCi0gICAgMTA0MzQ4LCAxMDQzNTIsIDEwNDM1NiwgMTA0MzYwLCAxMDQzNjQsIDEwNDM2OCwgMTA0MzcyLCAxMDQzNzYsIDEwNDM4MCwgCi0gICAgMTA0Mzg0LCAxMDQzODgsIDEwNDM5MiwgMTA0Mzk2LCAxMDQ0MDAsIDEwNDQwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTU0NDEsIDk1NDQ1LCA5NTQ0OSwgOTU0NTMsIDk1NDU2LCA5NTQ2MCwgCisgICAgOTU0NjMsIDk1NDY3LCA5NTQ3MCwgOTU0NzQsIDk1NDc4LCA5NTQ4MywgOTU0ODcsIDk1NDkyLCA5NTQ5NSwgOTU0OTksIAorICAgIDk1NTAyLCA5NTUwNiwgOTU1MDksIDk1NTEzLCA5NTUxNywgOTU1MjEsIDk1NTI1LCA5NTUyOSwgOTU1MzMsIDk1NTM3LCAKKyAgICA5NTU0MSwgOTU1NDUsIDk1NTQ5LCA5NTU1MywgOTU1NTcsIDk1NTYxLCA5NTU2NSwgOTU1NjksIDk1NTczLCA5NTU3NywgCisgICAgOTU1ODEsIDk1NTg0LCA5NTU4NywgOTU1OTEsIDk1NTk1LCA5NTU5OSwgOTU2MDIsIDk1NjA1LCA5NTYwOCwgOTU2MTIsIAorICAgIDk1NjE2LCA5NTYyMCwgOTU2MjQsIDk1NjI4LCA5NTYzMSwgOTU2MzQsIDk1NjM5LCA5NTY0MywgOTU2NDgsIDk1NjUyLCAKKyAgICA5NTY1NywgOTU2NjIsIDk1NjY4LCA5NTY3MywgOTU2NzksIDk1NjgzLCA5NTY4OCwgOTU2OTIsIDk1Njk3LCA5NTcwMSwgCisgICAgOTU3MDUsIDk1NzA5LCA5NTcxMywgOTU3MTYsIDk1NzE5LCA5NTcyMywgOTU3MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDk1NzMwLCA5NTczNCwgOTU3MzcsIDk1NzQwLCA5NTc0MywgOTU3NDYsIDk1NzQ5LCA5NTc1MiwgOTU3NTUsIDk1NzU4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTc2MSwgOTU3NjUsIDk1NzcwLCA5NTc3NCwgOTU3NzksIAorICAgIDk1NzgzLCA5NTc4OCwgOTU3OTIsIDk1Nzk3LCA5NTgwMSwgOTU4MDYsIDk1ODEwLCA5NTgxNSwgOTU4MjAsIDk1ODI1LCAKKyAgICA5NTgzMCwgOTU4MzUsIDk1ODQwLCA5NTg0NSwgOTU4NTAsIDk1ODU1LCA5NTg2MCwgOTU4NjUsIDk1ODcwLCA5NTg3NSwgCisgICAgOTU4ODAsIDk1ODg1LCA5NTg5MCwgOTU4OTUsIDk1OTAwLCA5NTkwNCwgOTU5MDgsIDk1OTEzLCA5NTkxOCwgOTU5MjMsIAorICAgIDk1OTI3LCA5NTkzMSwgOTU5MzUsIDk1OTQwLCA5NTk0NSwgOTU5NTAsIDk1OTU0LCA5NTk1OCwgOTU5NjMsIDk1OTY4LCAKKyAgICA5NTk3MywgOTU5NzksIDk1OTg0LCA5NTk5MCwgOTU5OTUsIDk2MDAxLCA5NjAwNiwgOTYwMTIsIDk2MDE3LCA5NjAyMywgCisgICAgOTYwMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2MDMzLCA5NjAzOCwgOTYwNDIsIDk2MDQ2LCA5NjA1MCwgOTYwNTQsIAorICAgIDk2MDU4LCA5NjA2MiwgOTYwNjYsIDk2MDcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NjA3NCwgOTYwNzcsIDk2MDgyLCA5NjA4OCwgCisgICAgOTYwOTYsIDk2MTAxLCA5NjEwNywgOTYxMTUsIDk2MTIxLCA5NjEyNywgOTYxMzEsIDk2MTM1LCA5NjE0MiwgOTYxNTEsIAorICAgIDk2MTU4LCA5NjE2NywgOTYxNzMsIDk2MTgyLCA5NjE4OSwgOTYxOTYsIDk2MjAzLCA5NjIxMywgOTYyMTksIDk2MjIzLCAKKyAgICA5NjIzMCwgOTYyMzksIDk2MjQ5LCA5NjI1NiwgOTYyNjMsIDk2MjY3LCA5NjI3MSwgOTYyNzgsIDk2Mjg4LCA5NjI5MiwgCisgICAgOTYyOTksIDk2MzA2LCA5NjMxMywgOTYzMTksIDk2MzI2LCA5NjMzMywgOTYzNDAsIDk2MzQ3LCA5NjM1MSwgOTYzNTUsIAorICAgIDk2MzU5LCA5NjM2NiwgOTYzNzAsIDk2Mzc3LCA5NjM4NCwgOTYzOTgsIDk2NDA3LCA5NjQxMSwgOTY0MTUsIDk2NDE5LCAKKyAgICA5NjQyNiwgOTY0MzAsIDk2NDM0LCA5NjQzOCwgOTY0NDYsIDk2NDU0LCA5NjQ3MywgOTY0ODMsIDk2NTAzLCA5NjUwNywgCisgICAgOTY1MTEsIDk2NTE1LCA5NjUxOSwgOTY1MjMsIDk2NTI3LCA5NjUzMSwgOTY1MzgsIDk2NTQyLCA5NjU0NSwgOTY1NDksIAorICAgIDk2NTUzLCA5NjU1OSwgOTY1NjYsIDk2NTc1LCA5NjU3OSwgOTY1ODgsIDk2NTk3LCA5NjYwNSwgOTY2MDksIDk2NjE2LCAKKyAgICA5NjYyMCwgOTY2MjQsIDk2NjI4LCA5NjYzMiwgOTY2NDMsIDk2NjUyLCA5NjY2MSwgOTY2NzAsIDk2Njc5LCA5NjY5MSwgCisgICAgOTY3MDAsIDk2NzA5LCA5NjcxOCwgOTY3MjYsIDk2NzM1LCA5Njc0NywgOTY3NTYsIDk2NzY1LCA5Njc3NCwgOTY3ODYsIAorICAgIDk2Nzk1LCA5NjgwNCwgOTY4MTYsIDk2ODI1LCA5NjgzNCwgOTY4NDYsIDk2ODU1LCA5Njg1OSwgOTY4NjMsIDk2ODY3LCAKKyAgICA5Njg3MSwgOTY4NzUsIDk2ODc5LCA5Njg4MywgOTY4OTAsIDk2ODk0LCA5Njg5OCwgOTY5MDksIDk2OTEzLCA5NjkxNywgCisgICAgOTY5MjQsIDk2OTMwLCA5NjkzNiwgOTY5NDAsIDk2OTQ3LCA5Njk1MSwgOTY5NTUsIDk2OTU5LCA5Njk2MywgOTY5NjcsIAorICAgIDk2OTcxLCA5Njk3NywgOTY5ODUsIDk2OTg5LCA5Njk5MywgOTY5OTYsIDk3MDAyLCA5NzAxMiwgOTcwMTYsIDk3MDI4LCAKKyAgICA5NzAzNSwgOTcwNDIsIDk3MDQ5LCA5NzA1NiwgOTcwNjIsIDk3MDY2LCA5NzA3MCwgOTcwNzQsIDk3MDc4LCA5NzA4NSwgCisgICAgOTcwOTQsIDk3MTAxLCA5NzEwOSwgOTcxMTcsIDk3MTIzLCA5NzEyNywgOTcxMzEsIDk3MTM1LCA5NzEzOSwgOTcxNDUsIAorICAgIDk3MTU0LCA5NzE2NiwgOTcxNzMsIDk3MTgwLCA5NzE4OSwgOTcyMDAsIDk3MjA2LCA5NzIxNSwgOTcyMjQsIDk3MjMxLCAKKyAgICA5NzI0MCwgOTcyNDcsIDk3MjU0LCA5NzI2NCwgOTcyNzEsIDk3Mjc4LCA5NzI4NSwgOTcyOTIsIDk3Mjk2LCA5NzMwMiwgCisgICAgOTczMDYsIDk3MzE3LCA5NzMyNSwgOTczMzQsIDk3MzQ2LCA5NzM1MywgOTczNjAsIDk3MzcwLCA5NzM3NywgOTczODYsIAorICAgIDk3MzkzLCA5NzQwMiwgOTc0MDksIDk3NDE2LCA5NzQyNiwgOTc0MzMsIDk3NDQwLCA5NzQ1MCwgOTc0NTcsIDk3NDY5LCAKKyAgICA5NzQ3OCwgOTc0ODUsIDk3NDkyLCA5NzQ5OSwgOTc1MDgsIDk3NTE4LCA5NzUzMSwgOTc1MzgsIDk3NTQ4LCA5NzU1OCwgCisgICAgOTc1NjUsIDk3NTc0LCA5NzU4NywgOTc1OTQsIDk3NjAxLCA5NzYwOCwgOTc2MTgsIDk3NjI4LCA5NzYzNSwgOTc2NDUsIAorICAgIDk3NjUyLCA5NzY1OSwgOTc2NjksIDk3Njc1LCA5NzY4MiwgOTc2ODksIDk3Njk2LCA5NzcwNiwgOTc3MTMsIDk3NzIwLCAKKyAgICA5NzcyNywgOTc3MzMsIDk3NzQwLCA5Nzc1MCwgOTc3NTcsIDk3NzYxLCA5Nzc2OSwgOTc3NzMsIDk3Nzg1LCA5Nzc4OSwgCisgICAgOTc4MDMsIDk3ODA3LCA5NzgxMSwgOTc4MTUsIDk3ODE5LCA5NzgyNSwgOTc4MzIsIDk3ODQwLCA5Nzg0NCwgOTc4NDgsIAorICAgIDk3ODUyLCA5Nzg1NiwgOTc4NjMsIDk3ODY3LCA5Nzg3MywgOTc4NzksIDk3ODg3LCA5Nzg5MSwgOTc4OTgsIDk3OTA2LCAKKyAgICA5NzkxMCwgOTc5MTQsIDk3OTIwLCA5NzkyNCwgOTc5MzMsIDk3OTQyLCA5Nzk0OSwgOTc5NTksIDk3OTY1LCA5Nzk2OSwgCisgICAgOTc5NzMsIDk3OTgxLCA5Nzk4OCwgOTc5OTUsIDk4MDAxLCA5ODAwNSwgOTgwMTMsIDk4MDE3LCA5ODAyNCwgOTgwMzYsIAorICAgIDk4MDQzLCA5ODA1MywgOTgwNTksIDk4MDYzLCA5ODA3MiwgOTgwNzksIDk4MDg4LCA5ODA5MiwgOTgwOTYsIDk4MTAzLCAKKyAgICA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjIsIDk4MTI4LCA5ODEzNCwgOTgxMzgsIDk4MTQyLCA5ODE0OSwgCisgICAgOTgxNTYsIDk4MTYzLCA5ODE3MCwgOTgxNzcsIDk4MTg0LCA5ODE5MSwgOTgxOTgsIDk4MjA0LCA5ODIwOCwgOTgyMTIsIAorICAgIDk4MjE5LCA5ODIyNiwgOTgyMzMsIDk4MjQwLCA5ODI0NywgOTgyNTEsIDk4MjU0LCA5ODI1OSwgOTgyNjMsIDk4MjY3LCAKKyAgICA5ODI3NiwgOTgyODUsIDk4Mjg5LCA5ODI5MywgOTgyOTksIDk4MzA1LCA5ODMyMiwgOTgzMjgsIDk4MzMyLCA5ODM0MSwgCisgICAgOTgzNDUsIDk4MzQ5LCA5ODM1NiwgOTgzNjQsIDk4MzcyLCA5ODM3OCwgOTgzODIsIDk4Mzg2LCA5ODM5MCwgOTgzOTQsIAorICAgIDk4Mzk3LCA5ODQwMywgOTg0MTAsIDk4NDIwLCA5ODQyNywgOTg0MzQsIDk4NDQxLCA5ODQ0NywgOTg0NTQsIDk4NDYxLCAKKyAgICA5ODQ2OCwgOTg0NzUsIDk4NDgyLCA5ODQ5MSwgOTg0OTgsIDk4NTEwLCA5ODUxNywgOTg1MjQsIDk4NTM0LCA5ODU0NSwgCisgICAgOTg1NTIsIDk4NTU5LCA5ODU2NiwgOTg1NzMsIDk4NTgwLCA5ODU4NywgOTg1OTQsIDk4NjAxLCA5ODYwOCwgOTg2MTUsIAorICAgIDk4NjI1LCA5ODYzNSwgOTg2NDUsIDk4NjUyLCA5ODY2MiwgOTg2NjksIDk4Njc2LCA5ODY4MywgOTg2OTAsIDk4Njk2LCAKKyAgICA5ODcwMywgOTg3MTAsIDk4NzE3LCA5ODcyNCwgOTg3MzEsIDk4NzM4LCA5ODc0NSwgOTg3NTIsIDk4NzU4LCA5ODc2NSwgCisgICAgOTg3NzIsIDk4NzgxLCA5ODc4OCwgOTg3OTUsIDk4Nzk5LCA5ODgwNywgOTg4MTEsIDk4ODE1LCA5ODgxOSwgOTg4MjMsIAorICAgIDk4ODI3LCA5ODgzNCwgOTg4MzgsIDk4ODQ3LCA5ODg1MSwgOTg4NTgsIDk4ODY2LCA5ODg3MCwgOTg4NzQsIDk4ODc4LCAKKyAgICA5ODg5MSwgOTg5MDcsIDk4OTExLCA5ODkxNSwgOTg5MjIsIDk4OTI4LCA5ODkzNSwgOTg5MzksIDk4OTQzLCA5ODk0NywgCisgICAgOTg5NTEsIDk4OTU1LCA5ODk2MiwgOTg5NjYsIDk4OTg0LCA5ODk4OCwgOTg5OTIsIDk4OTk5LCA5OTAwMywgOTkwMDcsIAorICAgIDk5MDEzLCA5OTAxNywgOTkwMjEsIDk5MDI5LCA5OTAzMywgOTkwMzcsIDk5MDQxLCA5OTA0NSwgOTkwNTEsIDk5MDYyLCAKKyAgICA5OTA3MSwgOTkwODAsIDk5MDg3LCA5OTA5NCwgOTkxMDUsIDk5MTEyLCA5OTExOSwgOTkxMjYsIDk5MTMzLCA5OTE0MCwgCisgICAgOTkxNDcsIDk5MTU0LCA5OTE2NCwgOTkxNzAsIDk5MTc3LCA5OTE4NywgOTkxOTYsIDk5MjAzLCA5OTIxMiwgOTkyMjIsIAorICAgIDk5MjI5LCA5OTIzNiwgOTkyNDMsIDk5MjUwLCA5OTI2MiwgOTkyNjksIDk5Mjc2LCA5OTI4MywgOTkyOTAsIDk5Mjk3LCAKKyAgICA5OTMwNywgOTkzMTQsIDk5MzIxLCA5OTMzMSwgOTkzNDQsIDk5MzU2LCA5OTM2MywgOTkzNzMsIDk5MzgwLCA5OTM4NywgCisgICAgOTkzOTQsIDk5NDA4LCA5OTQxNCwgOTk0MjIsIDk5NDMyLCA5OTQ0MiwgOTk0NDksIDk5NDU2LCA5OTQ2MiwgOTk0NjYsIAorICAgIDk5NDczLCA5OTQ4MywgOTk0ODksIDk5NTAyLCA5OTUwNiwgOTk1MTAsIDk5NTE3LCA5OTUyMSwgOTk1MjgsIDk5NTM4LCAKKyAgICA5OTU0MiwgOTk1NDYsIDk5NTUwLCA5OTU1NCwgOTk1NTgsIDk5NTY1LCA5OTU2OSwgOTk1NzYsIDk5NTgzLCA5OTU5MCwgCisgICAgOTk1OTksIDk5NjA4LCA5OTYxOCwgOTk2MjUsIDk5NjMyLCA5OTYzOSwgOTk2NDksIDk5NjU2LCA5OTY2NiwgOTk2NzMsIAorICAgIDk5NjgzLCA5OTY5MCwgOTk2OTcsIDk5NzA3LCA5OTcxNywgOTk3MjQsIDk5NzMwLCA5OTczOCwgOTk3NDYsIDk5NzUyLCAKKyAgICA5OTc1OCwgOTk3NjIsIDk5NzY2LCA5OTc3MywgOTk3ODEsIDk5Nzg3LCA5OTc5MSwgOTk3OTUsIDk5Nzk5LCA5OTgwNiwgCisgICAgOTk4MTgsIDk5ODIxLCA5OTgyOCwgOTk4MzQsIDk5ODM4LCA5OTg0MiwgOTk4NDYsIDk5ODUwLCA5OTg1NCwgOTk4NTgsIAorICAgIDk5ODYyLCA5OTg2NiwgOTk4NzAsIDk5ODc0LCA5OTg4MSwgOTk4ODUsIDk5ODkxLCA5OTg5NSwgOTk4OTksIDk5OTAzLCAKKyAgICA5OTkwOSwgOTk5MTYsIDk5OTIzLCA5OTkzMCwgOTk5NDEsIDk5OTQ5LCA5OTk1MywgOTk5NTksIDk5OTY4LCA5OTk3NSwgCisgICAgOTk5ODEsIDk5OTg0LCA5OTk4OCwgOTk5OTIsIDk5OTk4LCAxMDAwMDcsIDEwMDAxNSwgMTAwMDE5LCAxMDAwMjUsIAorICAgIDEwMDAyOSwgMTAwMDMzLCAxMDAwMzcsIDEwMDA0MywgMTAwMDUwLCAxMDAwNTYsIDEwMDA2MCwgMTAwMDY2LCAxMDAwNzAsIAorICAgIDEwMDA3NCwgMTAwMDgzLCAxMDAwOTUsIDEwMDA5OSwgMTAwMTA2LCAxMDAxMTMsIDEwMDEyMywgMTAwMTMwLCAxMDAxNDIsIAorICAgIDEwMDE0OSwgMTAwMTU2LCAxMDAxNjMsIDEwMDE3NCwgMTAwMTg0LCAxMDAxOTcsIDEwMDIwNywgMTAwMjE0LCAxMDAyMTgsIAorICAgIDEwMDIyMiwgMTAwMjI2LCAxMDAyMzAsIDEwMDIzOSwgMTAwMjQ4LCAxMDAyNTcsIDEwMDI3NCwgMTAwMjgzLCAxMDAyODksIAorICAgIDEwMDI5NiwgMTAwMzA0LCAxMDAzMTcsIDEwMDMyMSwgMTAwMzMwLCAxMDAzMzksIDEwMDM0OCwgMTAwMzU3LCAxMDAzNjgsIAorICAgIDEwMDM3NywgMTAwMzg2LCAxMDAzOTUsIDEwMDQwNCwgMTAwNDEzLCAxMDA0MjIsIDEwMDQzMiwgMTAwNDM1LCAxMDA0MzksIAorICAgIDEwMDQ0MywgMTAwNDQ3LCAxMDA0NTEsIDEwMDQ1NSwgMTAwNDYxLCAxMDA0NjgsIDEwMDQ3NSwgMTAwNDgyLCAxMDA0ODgsIAorICAgIDEwMDQ5NCwgMTAwNTAxLCAxMDA1MDcsIDEwMDUxNCwgMTAwNTIyLCAxMDA1MjYsIDEwMDUzMywgMTAwNTQwLCAxMDA1NDcsIAorICAgIDEwMDU1NSwgMTAwNTU4LCAxMDA1NjIsIDEwMDU2NiwgMTAwNTcwLCAxMDA1NzMsIDEwMDU3OSwgMTAwNTgzLCAxMDA1ODksIAorICAgIDEwMDU5NiwgMTAwNjAzLCAxMDA2MDksIDEwMDYxNiwgMTAwNjIzLCAxMDA2MzAsIDEwMDYzNywgMTAwNjQ0LCAxMDA2NTEsIAorICAgIDEwMDY1OCwgMTAwNjY1LCAxMDA2NzIsIDEwMDY3OSwgMTAwNjg2LCAxMDA2OTMsIDEwMDcwMCwgMTAwNzA3LCAxMDA3MTMsIAorICAgIDEwMDcxNywgMTAwNzI2LCAxMDA3MzAsIDEwMDczNCwgMTAwNzM4LCAxMDA3NDIsIDEwMDc0OCwgMTAwNzU1LCAxMDA3NjIsIAorICAgIDEwMDc2OSwgMTAwNzc2LCAxMDA3ODMsIDEwMDc4OSwgMTAwNzk3LCAxMDA4MDEsIDEwMDgwNSwgMTAwODA5LCAxMDA4MTMsIAorICAgIDEwMDgxOSwgMTAwODM2LCAxMDA4NTMsIDEwMDg1NywgMTAwODYxLCAxMDA4NjUsIDEwMDg2OSwgMTAwODczLCAxMDA4NzcsIAorICAgIDEwMDg4MywgMTAwODkwLCAxMDA4OTQsIDEwMDkwMCwgMTAwOTA3LCAxMDA5MTQsIDEwMDkyMSwgMTAwOTI4LCAxMDA5MzUsIAorICAgIDEwMDk0NCwgMTAwOTUxLCAxMDA5NTgsIDEwMDk2NSwgMTAwOTcyLCAxMDA5NzYsIDEwMDk4MCwgMTAwOTg2LCAxMDA5OTgsIAorICAgIDEwMTAwMiwgMTAxMDA2LCAxMDEwMTUsIDEwMTAxOSwgMTAxMDIzLCAxMDEwMjcsIDEwMTAzMywgMTAxMDM3LCAxMDEwNDEsIAorICAgIDEwMTA1MCwgMTAxMDU0LCAxMDEwNTgsIDEwMTA2MiwgMTAxMDY5LCAxMDEwNzMsIDEwMTA3NywgMTAxMDgxLCAxMDEwODUsIAorICAgIDEwMTA4OSwgMTAxMDkzLCAxMDEwOTcsIDEwMTEwMSwgMTAxMTA3LCAxMDExMTQsIDEwMTEyMSwgMTAxMTI3LCAxMDExMzEsIAorICAgIDEwMTE0OCwgMTAxMTU0LCAxMDExNTgsIDEwMTE2NCwgMTAxMTcwLCAxMDExNzYsIDEwMTE4MiwgMTAxMTg4LCAxMDExOTQsIAorICAgIDEwMTE5OCwgMTAxMjAyLCAxMDEyMDYsIDEwMTIxMiwgMTAxMjE2LCAxMDEyMjIsIDEwMTIyNiwgMTAxMjMwLCAxMDEyMzcsIAorICAgIDEwMTI0NCwgMTAxMjYxLCAxMDEyNjUsIDEwMTI2OSwgMTAxMjczLCAxMDEyNzcsIDEwMTI4MSwgMTAxMjkzLCAxMDEyOTYsIAorICAgIDEwMTMwMSwgMTAxMzA2LCAxMDEzMjEsIDEwMTMzMSwgMTAxMzQzLCAxMDEzNDcsIDEwMTM1MSwgMTAxMzU1LCAxMDEzNjEsIAorICAgIDEwMTM2OCwgMTAxMzc1LCAxMDEzODUsIDEwMTM5NywgMTAxNDAzLCAxMDE0MDksIDEwMTQxOCwgMTAxNDIyLCAxMDE0MjYsIAorICAgIDEwMTQzMywgMTAxNDQzLCAxMDE0NTAsIDEwMTQ1NiwgMTAxNDYwLCAxMDE0NjQsIDEwMTQ3MSwgMTAxNDc3LCAxMDE0ODEsIAorICAgIDEwMTQ4NywgMTAxNDkxLCAxMDE0OTksIDEwMTUwNSwgMTAxNTA5LCAxMDE1MTcsIDEwMTUyNSwgMTAxNTMyLCAxMDE1MzgsIAorICAgIDEwMTU0NSwgMTAxNTUyLCAxMDE1NjIsIDEwMTU3MiwgMTAxNTc2LCAxMDE1ODAsIDEwMTU4NCwgMTAxNTg4LCAxMDE1OTQsIAorICAgIDEwMTYwMSwgMTAxNjA3LCAxMDE2MTQsIDEwMTYyMSwgMTAxNjI4LCAxMDE2MzcsIDEwMTY0NCwgMTAxNjUxLCAxMDE2NTcsIAorICAgIDEwMTY2NCwgMTAxNjcxLCAxMDE2NzgsIDEwMTY4NSwgMTAxNjkyLCAxMDE2OTksIDEwMTcwNSwgMTAxNzEyLCAxMDE3MTksIAorICAgIDEwMTcyNiwgMTAxNzM1LCAxMDE3NDIsIDEwMTc0OSwgMTAxNzUzLCAxMDE3NTksIDEwMTc2MywgMTAxNzY5LCAxMDE3NzYsIAorICAgIDEwMTc4MywgMTAxNzkwLCAxMDE3OTQsIDEwMTc5OCwgMTAxODAyLCAxMDE4MDYsIDEwMTgxMCwgMTAxODE3LCAxMDE4MjEsIAorICAgIDEwMTgyNSwgMTAxODMxLCAxMDE4MzksIDEwMTg0MywgMTAxODQ3LCAxMDE4NTEsIDEwMTg1NSwgMTAxODYyLCAxMDE4NjYsIAorICAgIDEwMTg3MCwgMTAxODc4LCAxMDE4ODIsIDEwMTg4NiwgMTAxODkwLCAxMDE4OTQsIDEwMTkwMCwgMTAxOTA0LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDE5MDgsIDEwMTkxNCwgMTAxOTIwLCAxMDE5MjcsIAorICAgIDEwMTkzNCwgMTAxOTQxLCAxMDE5NDgsIDEwMTk1NSwgMTAxOTYyLCAxMDE5NjgsIDEwMTk3NSwgMTAxOTgyLCAxMDE5ODksIAorICAgIDEwMTk5NiwgMTAyMDAzLCAxMDIwMTAsIDEwMjAxNiwgMTAyMDIyLCAxMDIwMjgsIDEwMjAzNCwgMTAyMDQwLCAxMDIwNDYsIAorICAgIDEwMjA1MiwgMTAyMDU4LCAxMDIwNjQsIDEwMjA3MSwgMTAyMDc4LCAxMDIwODUsIDEwMjA5MiwgMTAyMDk5LCAxMDIxMDYsIAorICAgIDEwMjExMiwgMTAyMTE4LCAxMDIxMjQsIDEwMjEzMSwgMTAyMTM4LCAxMDIxNDQsIDEwMjE1MCwgMTAyMTU5LCAxMDIxNjYsIAorICAgIDEwMjE3MywgMTAyMTgwLCAxMDIxODcsIDEwMjE5NCwgMTAyMjAxLCAxMDIyMDcsIDEwMjIxMywgMTAyMjE5LCAxMDIyMjgsIAorICAgIDEwMjIzNSwgMTAyMjQyLCAxMDIyNTMsIDEwMjI2NCwgMTAyMjcwLCAxMDIyNzYsIDEwMjI4MiwgMTAyMjkxLCAxMDIyOTgsIAorICAgIDEwMjMwNSwgMTAyMzE1LCAxMDIzMjUsIDEwMjMzNiwgMTAyMzQ3LCAxMDIzNTksIDEwMjM3MiwgMTAyMzgzLCAxMDIzOTQsIAorICAgIDEwMjQwNiwgMTAyNDE5LCAxMDI0MzAsIDEwMjQ0MSwgMTAyNDUyLCAxMDI0NjMsIDEwMjQ3NCwgMTAyNDg2LCAxMDI0OTQsIAorICAgIDEwMjUwMiwgMTAyNTExLCAxMDI1MjAsIDEwMjUyOSwgMTAyNTM1LCAxMDI1NDEsIDEwMjU0NywgMTAyNTU0LCAxMDI1NjQsIAorICAgIDEwMjU3MSwgMTAyNTgxLCAxMDI1ODYsIDEwMjU5MSwgMTAyNTk3LCAxMDI2MDMsIDEwMjYxMSwgMTAyNjE5LCAxMDI2MjgsIAorICAgIDEwMjYzOSwgMTAyNjUwLCAxMDI2NTgsIDEwMjY2NiwgMTAyNjc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMDI2ODQsIDEwMjY5NSwgMTAyNzAyLCAxMDI3MTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwMjcxOCwgMTAyNzIyLCAxMDI3MjYsIDEwMjczMCwgMTAyNzM0LCAxMDI3MzgsIDEwMjc0MiwgMTAyNzQ2LCAxMDI3NTAsIAorICAgIDEwMjc1NCwgMTAyNzU4LCAxMDI3NjIsIDEwMjc2NiwgMTAyNzcwLCAxMDI3NzQsIDEwMjc3OCwgMTAyNzgyLCAxMDI3ODYsIAorICAgIDEwMjc5MCwgMTAyNzk0LCAxMDI3OTgsIDEwMjgwMiwgMTAyODA2LCAxMDI4MTAsIDEwMjgxNCwgMTAyODE4LCAxMDI4MjIsIAorICAgIDEwMjgyNiwgMTAyODMwLCAxMDI4MzQsIDEwMjgzOCwgMTAyODQyLCAxMDI4NDYsIDEwMjg1MCwgMTAyODU0LCAxMDI4NTgsIAorICAgIDEwMjg2MiwgMTAyODY2LCAxMDI4NzAsIDEwMjg3NCwgMTAyODc4LCAxMDI4ODIsIDEwMjg4NiwgMTAyODkwLCAxMDI4OTQsIAorICAgIDEwMjg5OCwgMTAyOTAyLCAxMDI5MDYsIDEwMjkxMCwgMTAyOTE0LCAxMDI5MTgsIDEwMjkyMiwgMTAyOTI2LCAxMDI5MzAsIAorICAgIDEwMjkzNCwgMTAyOTM4LCAxMDI5NDIsIDEwMjk0NiwgMTAyOTUwLCAxMDI5NTQsIDEwMjk1OCwgMTAyOTYyLCAxMDI5NjYsIAorICAgIDEwMjk3MCwgMTAyOTc0LCAxMDI5NzgsIDEwMjk4MiwgMTAyOTg2LCAxMDI5OTAsIDEwMjk5NCwgMTAyOTk4LCAxMDMwMDIsIAorICAgIDEwMzAwNiwgMTAzMDEwLCAxMDMwMTQsIDEwMzAxOCwgMTAzMDIyLCAxMDMwMjYsIDEwMzAzMCwgMTAzMDM0LCAxMDMwMzgsIAorICAgIDEwMzA0MiwgMTAzMDQ2LCAxMDMwNTAsIDEwMzA1NCwgMTAzMDU4LCAxMDMwNjIsIDEwMzA2NiwgMTAzMDcwLCAxMDMwNzQsIAorICAgIDEwMzA3OCwgMTAzMDgyLCAxMDMwODYsIDEwMzA5MCwgMTAzMDk0LCAxMDMwOTgsIDEwMzEwMiwgMTAzMTA2LCAxMDMxMTAsIAorICAgIDEwMzExNCwgMTAzMTE4LCAxMDMxMjIsIDEwMzEyNiwgMTAzMTMwLCAxMDMxMzQsIDEwMzEzOCwgMTAzMTQyLCAxMDMxNDYsIAorICAgIDEwMzE1MCwgMTAzMTU0LCAxMDMxNTgsIDEwMzE2MiwgMTAzMTY2LCAxMDMxNzAsIDEwMzE3NCwgMTAzMTc4LCAxMDMxODIsIAorICAgIDEwMzE4NiwgMTAzMTkwLCAxMDMxOTQsIDEwMzE5OCwgMTAzMjAyLCAxMDMyMDYsIDEwMzIxMCwgMTAzMjE0LCAxMDMyMTgsIAorICAgIDEwMzIyMiwgMTAzMjI2LCAxMDMyMzAsIDEwMzIzNCwgMTAzMjM4LCAxMDMyNDIsIDEwMzI0NiwgMTAzMjUwLCAxMDMyNTQsIAorICAgIDEwMzI1OCwgMTAzMjYyLCAxMDMyNjYsIDEwMzI3MCwgMTAzMjc0LCAxMDMyNzgsIDEwMzI4MiwgMTAzMjg2LCAxMDMyOTAsIAorICAgIDEwMzI5NCwgMTAzMjk4LCAxMDMzMDIsIDEwMzMwNiwgMTAzMzEwLCAxMDMzMTQsIDEwMzMxOCwgMTAzMzIyLCAxMDMzMjYsIAorICAgIDEwMzMzMCwgMTAzMzM0LCAxMDMzMzgsIDEwMzM0MiwgMTAzMzQ2LCAxMDMzNTAsIDEwMzM1NCwgMTAzMzU4LCAxMDMzNjIsIAorICAgIDEwMzM2NiwgMTAzMzcwLCAxMDMzNzQsIDEwMzM3OCwgMTAzMzgyLCAxMDMzODYsIDEwMzM5MCwgMTAzMzk0LCAxMDMzOTgsIAorICAgIDEwMzQwMiwgMTAzNDA2LCAxMDM0MTAsIDEwMzQxNCwgMTAzNDE4LCAxMDM0MjIsIDEwMzQyNiwgMTAzNDMwLCAxMDM0MzQsIAorICAgIDEwMzQzOCwgMTAzNDQyLCAxMDM0NDYsIDEwMzQ1MCwgMTAzNDU0LCAxMDM0NTgsIDEwMzQ2MiwgMTAzNDY2LCAxMDM0NzAsIAorICAgIDEwMzQ3NCwgMTAzNDc4LCAxMDM0ODIsIDEwMzQ4NiwgMTAzNDkwLCAxMDM0OTQsIDEwMzQ5OCwgMTAzNTAyLCAxMDM1MDYsIAorICAgIDEwMzUxMCwgMTAzNTE0LCAxMDM1MTgsIDEwMzUyMiwgMTAzNTI2LCAxMDM1MzAsIDEwMzUzNCwgMTAzNTM4LCAxMDM1NDIsIAorICAgIDEwMzU0NiwgMTAzNTUwLCAxMDM1NTQsIDEwMzU1OCwgMTAzNTYyLCAxMDM1NjYsIDEwMzU3MCwgMTAzNTc0LCAxMDM1NzgsIAorICAgIDEwMzU4MiwgMTAzNTg2LCAxMDM1OTAsIDEwMzU5NCwgMTAzNTk4LCAxMDM2MDIsIDEwMzYwNiwgMTAzNjEwLCAxMDM2MTQsIAorICAgIDEwMzYxOCwgMTAzNjIyLCAxMDM2MjYsIDEwMzYzMCwgMTAzNjM0LCAxMDM2MzgsIDEwMzY0MiwgMTAzNjQ2LCAxMDM2NTAsIAorICAgIDEwMzY1NCwgMTAzNjU4LCAxMDM2NjIsIDEwMzY2NiwgMTAzNjcwLCAxMDM2NzQsIDEwMzY3OCwgMTAzNjgyLCAxMDM2ODYsIAorICAgIDEwMzY5MCwgMTAzNjk0LCAxMDM2OTgsIDEwMzcwMiwgMTAzNzA2LCAxMDM3MTAsIDEwMzcxNCwgMTAzNzE4LCAxMDM3MjIsIAorICAgIDEwMzcyNiwgMTAzNzMwLCAxMDM3MzQsIDEwMzczOCwgMTAzNzQyLCAxMDM3NDYsIDEwMzc1MCwgMTAzNzU0LCAxMDM3NTgsIAorICAgIDEwMzc2MiwgMTAzNzY2LCAxMDM3NzAsIDEwMzc3NCwgMTAzNzc4LCAxMDM3ODIsIDEwMzc4NiwgMTAzNzkwLCAxMDM3OTQsIAorICAgIDEwMzc5OCwgMTAzODAyLCAxMDM4MDYsIDEwMzgxMCwgMTAzODE0LCAxMDM4MTgsIDEwMzgyMiwgMTAzODI2LCAxMDM4MzAsIAorICAgIDEwMzgzNCwgMTAzODM4LCAxMDM4NDIsIDEwMzg0NiwgMTAzODUwLCAxMDM4NTQsIDEwMzg1OCwgMTAzODYyLCAxMDM4NjYsIAorICAgIDEwMzg3MCwgMTAzODc0LCAxMDM4NzgsIDEwMzg4MiwgMTAzODg2LCAxMDM4OTAsIDEwMzg5NCwgMTAzODk4LCAxMDM5MDIsIAorICAgIDEwMzkwNiwgMTAzOTEwLCAxMDM5MTQsIDEwMzkxOCwgMTAzOTIyLCAxMDM5MjYsIDEwMzkzMCwgMTAzOTM0LCAxMDM5MzgsIAorICAgIDEwMzk0MiwgMTAzOTQ2LCAxMDM5NTAsIDEwMzk1NCwgMTAzOTU4LCAxMDM5NjIsIDEwMzk2NiwgMTAzOTcwLCAxMDM5NzQsIAorICAgIDEwMzk3OCwgMTAzOTgyLCAxMDM5ODYsIDEwMzk5MCwgMTAzOTk0LCAxMDM5OTgsIDEwNDAwMiwgMTA0MDA2LCAxMDQwMTAsIAorICAgIDEwNDAxNCwgMTA0MDE4LCAxMDQwMjIsIDEwNDAyNiwgMTA0MDMwLCAxMDQwMzQsIDEwNDAzOCwgMTA0MDQyLCAxMDQwNDYsIAorICAgIDEwNDA1MCwgMTA0MDU0LCAxMDQwNTgsIDEwNDA2MiwgMTA0MDY2LCAxMDQwNzAsIDEwNDA3NCwgMTA0MDc4LCAxMDQwODIsIAorICAgIDEwNDA4NiwgMTA0MDkwLCAxMDQwOTQsIDEwNDA5OCwgMTA0MTAyLCAxMDQxMDYsIDEwNDExMCwgMTA0MTE0LCAxMDQxMTgsIAorICAgIDEwNDEyMiwgMTA0MTI2LCAxMDQxMzAsIDEwNDEzNCwgMTA0MTM4LCAxMDQxNDIsIDEwNDE0NiwgMTA0MTUwLCAxMDQxNTQsIAorICAgIDEwNDE1OCwgMTA0MTYyLCAxMDQxNjYsIDEwNDE3MCwgMTA0MTc0LCAxMDQxNzgsIDEwNDE4MiwgMTA0MTg2LCAxMDQxOTAsIAorICAgIDEwNDE5NCwgMTA0MTk4LCAxMDQyMDIsIDEwNDIwNiwgMTA0MjEwLCAxMDQyMTQsIDEwNDIxOCwgMTA0MjIyLCAxMDQyMjYsIAorICAgIDEwNDIzMCwgMTA0MjM0LCAxMDQyMzgsIDEwNDI0MiwgMTA0MjQ2LCAxMDQyNTAsIDEwNDI1NCwgMTA0MjU4LCAxMDQyNjIsIAorICAgIDEwNDI2NiwgMTA0MjcwLCAxMDQyNzQsIDEwNDI3OCwgMTA0MjgyLCAxMDQyODYsIDEwNDI5MCwgMTA0Mjk0LCAxMDQyOTgsIAorICAgIDEwNDMwMiwgMTA0MzA2LCAxMDQzMTAsIDEwNDMxNCwgMTA0MzE4LCAxMDQzMjIsIDEwNDMyNiwgMTA0MzMwLCAxMDQzMzQsIAorICAgIDEwNDMzOCwgMTA0MzQyLCAxMDQzNDYsIDEwNDM1MCwgMTA0MzU0LCAxMDQzNTgsIDEwNDM2MiwgMTA0MzY2LCAxMDQzNzAsIAorICAgIDEwNDM3NCwgMTA0Mzc4LCAxMDQzODIsIDEwNDM4NiwgMTA0MzkwLCAxMDQzOTQsIDEwNDM5OCwgMTA0NDAyLCAxMDQ0MDYsIAorICAgIDEwNDQxMCwgMTA0NDE0LCAxMDQ0MTgsIDEwNDQyMiwgMTA0NDI2LCAxMDQ0MzAsIDEwNDQzNCwgMTA0NDM4LCAxMDQ0NDIsIAorICAgIDEwNDQ0NiwgMTA0NDUwLCAxMDQ0NTQsIDEwNDQ1OCwgMTA0NDYyLCAxMDQ0NjYsIDEwNDQ3MCwgMTA0NDc0LCAxMDQ0NzgsIAorICAgIDEwNDQ4MiwgMTA0NDg2LCAxMDQ0OTAsIDEwNDQ5NCwgMTA0NDk4LCAxMDQ1MDIsIDEwNDUwNiwgMTA0NTEwLCAxMDQ1MTQsIAorICAgIDEwNDUxOCwgMTA0NTIyLCAxMDQ1MjYsIDEwNDUzMCwgMTA0NTM0LCAxMDQ1MzgsIDEwNDU0MiwgMTA0NTQ2LCAxMDQ1NTAsIAorICAgIDEwNDU1NCwgMTA0NTU4LCAxMDQ1NjIsIDEwNDU2NiwgMTA0NTcwLCAxMDQ1NzQsIDEwNDU3OCwgMTA0NTgyLCAxMDQ1ODYsIAorICAgIDEwNDU5MCwgMTA0NTk0LCAxMDQ1OTgsIDEwNDYwMiwgMTA0NjA2LCAxMDQ2MTAsIDEwNDYxNCwgMTA0NjE4LCAxMDQ2MjIsIAorICAgIDEwNDYyNiwgMTA0NjMwLCAxMDQ2MzQsIDEwNDYzOCwgMTA0NjQyLCAxMDQ2NDYsIDEwNDY1MCwgMTA0NjU0LCAxMDQ2NTgsIAorICAgIDEwNDY2MiwgMTA0NjY2LCAxMDQ2NzAsIDEwNDY3NCwgMTA0Njc4LCAxMDQ2ODIsIDEwNDY4NiwgMTA0NjkwLCAxMDQ2OTQsIAorICAgIDEwNDY5OCwgMTA0NzAyLCAxMDQ3MDYsIDEwNDcxMCwgMTA0NzE0LCAxMDQ3MTgsIDEwNDcyMiwgMTA0NzI2LCAxMDQ3MzAsIAorICAgIDEwNDczNCwgMTA0NzM4LCAxMDQ3NDIsIDEwNDc0NiwgMTA0NzUwLCAxMDQ3NTQsIDEwNDc1OCwgMTA0NzYyLCAxMDQ3NjYsIAorICAgIDEwNDc3MCwgMTA0Nzc0LCAxMDQ3NzgsIDEwNDc4MiwgMTA0Nzg2LCAxMDQ3OTAsIDEwNDc5NCwgMTA0Nzk4LCAxMDQ4MDIsIAorICAgIDEwNDgwNiwgMTA0ODEwLCAxMDQ4MTQsIDEwNDgxOCwgMTA0ODIyLCAxMDQ4MjYsIDEwNDgzMCwgMTA0ODM0LCAxMDQ4MzgsIAorICAgIDEwNDg0MiwgMTA0ODQ2LCAxMDQ4NTAsIDEwNDg1NCwgMTA0ODU4LCAxMDQ4NjIsIDEwNDg2NiwgMTA0ODcwLCAxMDQ4NzQsIAorICAgIDEwNDg3OCwgMTA0ODgyLCAxMDQ4ODYsIDEwNDg5MCwgMTA0ODk0LCAxMDQ4OTgsIDEwNDkwMiwgMTA0OTA2LCAxMDQ5MTAsIAorICAgIDEwNDkxNCwgMTA0OTE4LCAxMDQ5MjIsIDEwNDkyNiwgMTA0OTMwLCAxMDQ5MzQsIDEwNDkzOCwgMTA0OTQyLCAxMDQ5NDYsIAorICAgIDEwNDk1MCwgMTA0OTU0LCAxMDQ5NTgsIDEwNDk2MiwgMTA0OTY2LCAxMDQ5NzAsIDEwNDk3NCwgMTA0OTc4LCAxMDQ5ODIsIAorICAgIDEwNDk4NiwgMTA0OTkwLCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAyLCAxMDUwMDYsIDEwNTAxMCwgMTA1MDE0LCAxMDUwMTgsIAorICAgIDEwNTAyMiwgMTA1MDI2LCAxMDUwMzAsIDEwNTAzNCwgMTA1MDM4LCAxMDUwNDIsIDEwNTA0NiwgMTA1MDUwLCAxMDUwNTQsIAorICAgIDEwNTA1OCwgMTA1MDYyLCAxMDUwNjYsIDEwNTA3MCwgMTA1MDc0LCAxMDUwNzgsIDEwNTA4MiwgMTA1MDg2LCAxMDUwOTAsIAorICAgIDEwNTA5NCwgMTA1MDk4LCAxMDUxMDIsIDEwNTEwNiwgMTA1MTEwLCAxMDUxMTQsIDEwNTExOCwgMTA1MTIyLCAxMDUxMjYsIAorICAgIDEwNTEzMCwgMTA1MTM0LCAxMDUxMzgsIDEwNTE0MiwgMTA1MTQ2LCAxMDUxNTAsIDEwNTE1NCwgMTA1MTU4LCAxMDUxNjIsIAorICAgIDEwNTE2NiwgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODYsIDEwNTE5MCwgMTA1MTk0LCAxMDUxOTgsIAorICAgIDEwNTIwMiwgMTA1MjA2LCAxMDUyMTAsIDEwNTIxNCwgMTA1MjE4LCAxMDUyMjIsIDEwNTIyNiwgMTA1MjMwLCAxMDUyMzQsIAorICAgIDEwNTIzOCwgMTA1MjQyLCAxMDUyNDYsIDEwNTI1MCwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MiwgMTA1MjY2LCAxMDUyNzAsIAorICAgIDEwNTI3NCwgMTA1Mjc4LCAxMDUyODIsIDEwNTI4NiwgMTA1MjkwLCAxMDUyOTQsIDEwNTI5OCwgMTA1MzAyLCAxMDUzMDYsIAorICAgIDEwNTMxMCwgMTA1MzE0LCAxMDUzMTgsIDEwNTMyMiwgMTA1MzI2LCAxMDUzMzAsIDEwNTMzNCwgMTA1MzM4LCAxMDUzNDIsIAorICAgIDEwNTM0NiwgMTA1MzUwLCAxMDUzNTQsIDEwNTM1OCwgMTA1MzYyLCAxMDUzNjYsIDEwNTM3MCwgMTA1Mzc0LCAxMDUzNzgsIAorICAgIDEwNTM4MiwgMTA1Mzg2LCAxMDUzOTAsIDEwNTM5NCwgMTA1Mzk4LCAxMDU0MDIsIDEwNTQwNiwgMTA1NDEwLCAxMDU0MTQsIAorICAgIDEwNTQxOCwgMTA1NDIyLCAxMDU0MjYsIDEwNTQzMCwgMTA1NDM0LCAxMDU0MzgsIDEwNTQ0MiwgMTA1NDQ2LCAxMDU0NTAsIAorICAgIDEwNTQ1NCwgMTA1NDU4LCAxMDU0NjIsIDEwNTQ2NiwgMTA1NDcwLCAxMDU0NzQsIDEwNTQ3OCwgMTA1NDgyLCAxMDU0ODYsIAorICAgIDEwNTQ5MCwgMTA1NDk0LCAxMDU0OTgsIDEwNTUwMiwgMTA1NTA2LCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE4LCAxMDU1MjIsIAorICAgIDEwNTUyNiwgMTA1NTMwLCAxMDU1MzQsIDEwNTUzOCwgMTA1NTQyLCAxMDU1NDYsIDEwNTU1MCwgMTA1NTU0LCAxMDU1NTgsIAorICAgIDEwNTU2MiwgMTA1NTY2LCAxMDU1NzAsIDEwNTU3NCwgMTA1NTc4LCAxMDU1ODIsIDEwNTU4NiwgMTA1NTkwLCAxMDU1OTQsIAorICAgIDEwNTU5OCwgMTA1NjAyLCAxMDU2MDYsIDEwNTYxMCwgMTA1NjE0LCAxMDU2MTgsIDEwNTYyMiwgMTA1NjI2LCAxMDU2MzAsIAorICAgIDEwNTYzNCwgMTA1NjM4LCAxMDU2NDIsIDEwNTY0NiwgMTA1NjUwLCAxMDU2NTQsIDEwNTY1OCwgMTA1NjYyLCAxMDU2NjYsIAorICAgIDEwNTY3MCwgMTA1Njc0LCAxMDU2NzgsIDEwNTY4MiwgMTA1Njg2LCAxMDU2OTAsIDEwNTY5NCwgMTA1Njk4LCAxMDU3MDIsIAorICAgIDEwNTcwNiwgMTA1NzEwLCAxMDU3MTQsIDEwNTcxOCwgMTA1NzIyLCAxMDU3MjYsIDEwNTczMCwgMTA1NzM0LCAxMDU3MzgsIAorICAgIDEwNTc0MiwgMTA1NzQ2LCAxMDU3NTAsIDEwNTc1NCwgMTA1NzU4LCAxMDU3NjIsIDEwNTc2NiwgMTA1NzcwLCAxMDU3NzQsIAorICAgIDEwNTc3OCwgMTA1NzgyLCAxMDU3ODYsIDEwNTc5MCwgMTA1Nzk0LCAxMDU3OTgsIDEwNTgwMiwgMTA1ODA2LCAxMDU4MTAsIAorICAgIDEwNTgxNCwgMTA1ODE4LCAxMDU4MjIsIDEwNTgyNiwgMTA1ODMwLCAxMDU4MzQsIDEwNTgzOCwgMTA1ODQyLCAxMDU4NDYsIAorICAgIDEwNTg1MCwgMTA1ODU0LCAxMDU4NTgsIDEwNTg2MiwgMTA1ODY2LCAxMDU4NzAsIDEwNTg3NCwgMTA1ODc4LCAxMDU4ODIsIAorICAgIDEwNTg4NiwgMTA1ODkwLCAxMDU4OTQsIDEwNTg5OCwgMTA1OTAyLCAxMDU5MDYsIDEwNTkxMCwgMTA1OTE0LCAxMDU5MTgsIAorICAgIDEwNTkyMiwgMTA1OTI2LCAxMDU5MzAsIDEwNTkzNCwgMTA1OTM4LCAxMDU5NDIsIDEwNTk0NiwgMTA1OTUwLCAxMDU5NTQsIAorICAgIDEwNTk1OCwgMTA1OTYyLCAxMDU5NjYsIDEwNTk3MCwgMTA1OTc0LCAxMDU5NzgsIDEwNTk4MiwgMTA1OTg2LCAxMDU5OTAsIAorICAgIDEwNTk5NCwgMTA1OTk4LCAxMDYwMDIsIDEwNjAwNiwgMTA2MDEwLCAxMDYwMTQsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjYsIAorICAgIDEwNjAzMCwgMTA2MDM0LCAxMDYwMzgsIDEwNjA0MiwgMTA2MDQ2LCAxMDYwNTAsIDEwNjA1NCwgMTA2MDU4LCAxMDYwNjIsIAorICAgIDEwNjA2NiwgMTA2MDcwLCAxMDYwNzQsIDEwNjA3OCwgMTA2MDgyLCAxMDYwODYsIDEwNjA5MCwgMTA2MDk0LCAxMDYwOTgsIAorICAgIDEwNjEwMiwgMTA2MTA2LCAxMDYxMTAsIDEwNjExNCwgMTA2MTE4LCAxMDYxMjIsIDEwNjEyNiwgMTA2MTMwLCAxMDYxMzQsIAorICAgIDEwNjEzOCwgMTA2MTQyLCAxMDYxNDYsIDEwNjE1MCwgMTA2MTU0LCAxMDYxNTgsIDEwNjE2MiwgMTA2MTY2LCAxMDYxNzAsIAorICAgIDEwNjE3NCwgMTA2MTc4LCAxMDYxODIsIDEwNjE4NiwgMTA2MTkwLCAxMDYxOTQsIDEwNjE5OCwgMTA2MjAyLCAxMDYyMDYsIAorICAgIDEwNjIxMCwgMTA2MjE0LCAxMDYyMTgsIDEwNjIyMiwgMTA2MjI2LCAxMDYyMzAsIDEwNjIzNCwgMTA2MjM4LCAxMDYyNDIsIAorICAgIDEwNjI0NiwgMTA2MjUwLCAxMDYyNTQsIDEwNjI1OCwgMTA2MjYyLCAxMDYyNjYsIDEwNjI3MCwgMTA2Mjc0LCAxMDYyNzgsIAorICAgIDEwNjI4MiwgMTA2Mjg2LCAxMDYyOTAsIDEwNjI5NCwgMTA2Mjk4LCAxMDYzMDIsIDEwNjMwNiwgMTA2MzEwLCAxMDYzMTQsIAorICAgIDEwNjMxOCwgMTA2MzIyLCAxMDYzMjYsIDEwNjMzMCwgMTA2MzM0LCAxMDYzMzgsIDEwNjM0MiwgMTA2MzQ2LCAxMDYzNTAsIAorICAgIDEwNjM1NCwgMTA2MzU4LCAxMDYzNjIsIDEwNjM2NiwgMTA2MzcwLCAxMDYzNzQsIDEwNjM3OCwgMTA2MzgyLCAxMDYzODYsIAorICAgIDEwNjM5MCwgMTA2Mzk0LCAxMDYzOTgsIDEwNjQwMiwgMTA2NDA2LCAxMDY0MTAsIDEwNjQxNCwgMTA2NDE4LCAxMDY0MjIsIAorICAgIDEwNjQyNiwgMTA2NDMwLCAxMDY0MzQsIDEwNjQzOCwgMTA2NDQyLCAxMDY0NDYsIDEwNjQ1MCwgMTA2NDU0LCAxMDY0NTgsIAorICAgIDEwNjQ2MiwgMTA2NDY2LCAxMDY0NzAsIDEwNjQ3NCwgMTA2NDc4LCAxMDY0ODIsIDEwNjQ4NiwgMTA2NDkwLCAxMDY0OTQsIAorICAgIDEwNjQ5OCwgMTA2NTAyLCAxMDY1MDYsIDEwNjUxMCwgMTA2NTE0LCAxMDY1MTgsIDEwNjUyMiwgMTA2NTI2LCAxMDY1MzAsIAorICAgIDEwNjUzNCwgMTA2NTM4LCAxMDY1NDIsIDEwNjU0NiwgMTA2NTUwLCAxMDY1NTQsIDEwNjU1OCwgMTA2NTYyLCAxMDY1NjYsIAorICAgIDEwNjU3MCwgMTA2NTc0LCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg2LCAxMDY1OTAsIDEwNjU5NCwgMTA2NTk4LCAxMDY2MDIsIAorICAgIDEwNjYwNiwgMTA2NjEwLCAxMDY2MTQsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYzMCwgMTA2NjM0LCAxMDY2MzgsIAorICAgIDEwNjY0MiwgMTA2NjQ2LCAxMDY2NTAsIDEwNjY1NCwgMTA2NjU4LCAxMDY2NjIsIDEwNjY2NiwgMTA2NjcwLCAxMDY2NzQsIAorICAgIDEwNjY3OCwgMTA2NjgyLCAxMDY2ODYsIDEwNjY5MCwgMTA2Njk0LCAxMDY2OTgsIDEwNjcwMiwgMTA2NzA2LCAxMDY3MTAsIAorICAgIDEwNjcxNCwgMTA2NzE4LCAxMDY3MjIsIDEwNjcyNiwgMTA2NzMwLCAxMDY3MzQsIDEwNjczOCwgMTA2NzQyLCAxMDY3NDYsIAorICAgIDEwNjc1MCwgMTA2NzU0LCAxMDY3NTgsIDEwNjc2MiwgMTA2NzY2LCAxMDY3NzAsIDEwNjc3NCwgMTA2Nzc4LCAxMDY3ODIsIAorICAgIDEwNjc4NiwgMTA2NzkwLCAxMDY3OTQsIDEwNjc5OCwgMTA2ODAyLCAxMDY4MDYsIDEwNjgxMCwgMTA2ODE0LCAxMDY4MTgsIAorICAgIDEwNjgyMiwgMTA2ODI2LCAxMDY4MzAsIDEwNjgzNCwgMTA2ODM4LCAxMDY4NDIsIDEwNjg0NiwgMTA2ODUwLCAxMDY4NTQsIAorICAgIDEwNjg1OCwgMTA2ODYyLCAxMDY4NjYsIDEwNjg3MCwgMTA2ODc0LCAxMDY4NzgsIDEwNjg4MiwgMTA2ODg2LCAxMDY4OTAsIAorICAgIDEwNjg5NCwgMTA2ODk4LCAxMDY5MDIsIDEwNjkwNiwgMTA2OTEwLCAxMDY5MTQsIDEwNjkxOCwgMTA2OTIyLCAxMDY5MjYsIAorICAgIDEwNjkzMCwgMTA2OTM0LCAxMDY5MzgsIDEwNjk0MiwgMTA2OTQ2LCAxMDY5NTAsIDEwNjk1NCwgMTA2OTU4LCAxMDY5NjIsIAorICAgIDEwNjk2NiwgMTA2OTcwLCAxMDY5NzQsIDEwNjk3OCwgMTA2OTgyLCAxMDY5ODYsIDEwNjk5MCwgMTA2OTk0LCAxMDY5OTgsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNDQwOCwgMTA0NDE1LCAxMDQ0MjIsIDEwNDQzMSwgMTA0NDQwLCAxMDQ0NDcsIDEwNDQ1MiwgMTA0NDU5LCAKLSAgICAxMDQ0NjYsIDEwNDQ3NSwgMTA0NDg2LCAxMDQ0OTcsIDEwNDUwMiwgMTA0NTA5LCAxMDQ1MTQsIDEwNDUxOSwgMTA0NTI0LCAKLSAgICAxMDQ1MjksIDEwNDUzNCwgMTA0NTM5LCAxMDQ1NDQsIDEwNDU0OSwgMTA0NTU0LCAxMDQ1NTksIDEwNDU2NCwgMTA0NTcxLCAKLSAgICAxMDQ1NzgsIDEwNDU4MywgMTA0NTg4LCAxMDQ1OTMsIDEwNDU5OCwgMTA0NjA1LCAxMDQ2MTIsIDEwNDYyMCwgMTA0NjI1LCAKLSAgICAxMDQ2MzIsIDEwNDYzNywgMTA0NjQyLCAxMDQ2NDcsIDEwNDY1MiwgMTA0NjU3LCAxMDQ2NjQsIDEwNDY3MSwgMTA0Njc2LCAKLSAgICAxMDQ2ODEsIDEwNDY4NiwgMTA0NjkxLCAxMDQ2OTYsIDEwNDcwMSwgMTA0NzA2LCAxMDQ3MTEsIDEwNDcxNiwgMTA0NzIxLCAKLSAgICAxMDQ3MjYsIDEwNDczMSwgMTA0NzM2LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUxLCAxMDQ3NTYsIDEwNDc2MSwgMTA0NzY2LCAKLSAgICAxMDQ3NzMsIDEwNDc3OCwgMTA0NzgzLCAxMDQ3OTIsIDEwNDc5OSwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxNCwgMTA0ODE5LCAKLSAgICAxMDQ4MjQsIDEwNDgyOSwgMTA0ODM0LCAxMDQ4MzksIDEwNDg0NCwgMTA0ODQ5LCAxMDQ4NTQsIDEwNDg1OSwgMTA0ODY0LCAKLSAgICAxMDQ4NjksIDEwNDg3NCwgMTA0ODc5LCAxMDQ4ODQsIDEwNDg4OSwgMTA0ODk0LCAxMDQ4OTksIDEwNDkwNCwgMTA0OTEwLCAKLSAgICAxMDQ5MTgsIDEwNDkyNCwgMTA0OTMyLCAxMDQ5NDAsIDEwNDk0OCwgMTA0OTU0LCAxMDQ5NjAsIDEwNDk2NiwgMTA0OTcyLCAKLSAgICAxMDQ5NzgsIDEwNDk4NiwgMTA0OTk2LCAxMDUwMDQsIDEwNTAxMiwgMTA1MDE4LCAxMDUwMjQsIDEwNTAzMiwgMTA1MDQwLCAKLSAgICAxMDUwNDYsIDEwNTA1NCwgMTA1MDYyLCAxMDUwNzAsIDEwNTA3NiwgMTA1MDgyLCAxMDUwODgsIDEwNTA5NCwgMTA1MTAwLCAKLSAgICAxMDUxMDYsIDEwNTExNCwgMTA1MTIyLCAxMDUxMjgsIDEwNTEzNCwgMTA1MTQwLCAxMDUxNDYsIDEwNTE1MiwgMTA1MTYwLCAKLSAgICAxMDUxNjYsIDEwNTE3MiwgMTA1MTc4LCAxMDUxODQsIDEwNTE5MCwgMTA1MTk2LCAxMDUyMDQsIDEwNTIxMCwgMTA1MjE2LCAKLSAgICAxMDUyMjIsIDEwNTIyOCwgMTA1MjM2LCAxMDUyNDQsIDEwNTI1MCwgMTA1MjU2LCAxMDUyNjIsIDEwNTI2NywgMTA1MjczLCAKLSAgICAxMDUyNzksIDEwNTI4NiwgMTA1MjkxLCAxMDUyOTYsIDEwNTMwMSwgMTA1MzA2LCAxMDUzMTEsIDEwNTMxNiwgMTA1MzIxLCAKLSAgICAxMDUzMjYsIDEwNTMzMSwgMTA1MzQwLCAxMDUzNDcsIDEwNTM1MiwgMTA1MzU3LCAxMDUzNjIsIDEwNTM2OSwgMTA1Mzc0LCAKLSAgICAxMDUzNzksIDEwNTM4NCwgMTA1MzkxLCAxMDUzOTYsIDEwNTQwMSwgMTA1NDA2LCAxMDU0MTEsIDEwNTQxNiwgMTA1NDIxLCAKLSAgICAxMDU0MjYsIDEwNTQzMSwgMTA1NDM2LCAxMDU0NDEsIDEwNTQ0NiwgMTA1NDUzLCAxMDU0NTgsIDEwNTQ2NSwgMTA1NDcwLCAKLSAgICAxMDU0NzUsIDEwNTQ4MiwgMTA1NDg3LCAxMDU0OTIsIDEwNTQ5NywgMTA1NTAyLCAxMDU1MDcsIDEwNTUxMiwgMTA1NTE3LCAKLSAgICAxMDU1MjIsIDEwNTUyNywgMTA1NTMyLCAxMDU1MzcsIDEwNTU0MiwgMTA1NTQ3LCAxMDU1NTIsIDEwNTU1NywgMTA1NTYyLCAKLSAgICAxMDU1NjcsIDEwNTU3MiwgMTA1NTc3LCAxMDU1ODQsIDEwNTU4OSwgMTA1NTk0LCAxMDU1OTksIDEwNTYwNCwgMTA1NjA5LCAKLSAgICAxMDU2MTQsIDEwNTYxOSwgMTA1NjI0LCAxMDU2MjksIDEwNTYzNCwgMTA1NjM5LCAxMDU2NDQsIDEwNTY0OSwgMTA1NjU2LCAKLSAgICAxMDU2NjEsIDEwNTY2NiwgMTA1NjczLCAxMDU2NzgsIDEwNTY4MywgMTA1Njg4LCAxMDU2OTMsIDEwNTY5OCwgMTA1NzAzLCAKLSAgICAxMDU3MDgsIDEwNTcxMywgMTA1NzE4LCAxMDU3MjMsIDEwNTczMCwgMTA1NzM1LCAxMDU3NDAsIDEwNTc0NSwgMTA1NzUwLCAKLSAgICAxMDU3NTUsIDEwNTc2MiwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1Nzg0LCAxMDU3ODksIDEwNTc5NCwgMTA1Nzk5LCAKLSAgICAxMDU4MDQsIDEwNTgwOSwgMTA1ODE0LCAxMDU4MTksIDEwNTgyNCwgMTA1ODI5LCAxMDU4MzQsIDEwNTgzOSwgMTA1ODQ0LCAKLSAgICAxMDU4NDksIDEwNTg1NCwgMTA1ODU5LCAxMDU4NjQsIDEwNTg2OSwgMTA1ODc0LCAxMDU4NzksIDEwNTg4NCwgMTA1ODg5LCAKLSAgICAxMDU4OTQsIDEwNTg5OSwgMTA1OTA0LCAxMDU5MDksIDEwNTkxNCwgMTA1OTE5LCAxMDU5MjQsIDEwNTkyOSwgMTA1OTM0LCAKLSAgICAxMDU5MzksIDEwNTk0NCwgMTA1OTQ5LCAxMDU5NTYsIDEwNTk2MSwgMTA1OTY2LCAxMDU5NzEsIDEwNTk3NiwgMTA1OTgxLCAKLSAgICAxMDU5ODYsIDEwNTk5MSwgMTA1OTk2LCAxMDYwMDEsIDEwNjAwNiwgMTA2MDExLCAxMDYwMTYsIDEwNjAyMSwgMTA2MDI2LCAKLSAgICAxMDYwMzEsIDEwNjAzNiwgMTA2MDQxLCAxMDYwNDYsIDEwNjA1MSwgMTA2MDU2LCAxMDYwNjEsIDEwNjA2NiwgMTA2MDcxLCAKLSAgICAxMDYwNzYsIDEwNjA4MSwgMTA2MDg2LCAxMDYwOTEsIDEwNjA5NiwgMTA2MTAxLCAxMDYxMDYsIDEwNjExMSwgMTA2MTE2LCAKLSAgICAxMDYxMjEsIDEwNjEyNiwgMTA2MTMxLCAxMDYxMzYsIDEwNjE0MSwgMTA2MTQ2LCAxMDYxNTEsIDEwNjE1NiwgMTA2MTYxLCAKLSAgICAxMDYxNjYsIDEwNjE3MSwgMTA2MTc2LCAxMDYxODEsIDEwNjE4NiwgMTA2MTkxLCAxMDYxOTYsIDEwNjIwMSwgMTA2MjA2LCAKLSAgICAxMDYyMTEsIDEwNjIxNiwgMTA2MjIxLCAxMDYyMjYsIDEwNjIzMSwgMTA2MjM2LCAxMDYyNDEsIDEwNjI0NiwgMTA2MjUzLCAKLSAgICAxMDYyNTgsIDEwNjI2MywgMTA2MjY4LCAxMDYyNzMsIDEwNjI3OCwgMTA2MjgzLCAxMDYyODcsIDEwNjI5MiwgMTA2Mjk3LCAKLSAgICAxMDYzMDIsIDEwNjMwNywgMTA2MzEyLCAxMDYzMTcsIDEwNjMyMiwgMTA2MzI3LCAxMDYzMzIsIDEwNjMzNywgMTA2MzQyLCAKLSAgICAxMDYzNDcsIDEwNjM1MiwgMTA2MzU3LCAxMDYzNjQsIDEwNjM2OSwgMTA2Mzc0LCAxMDYzODAsIDEwNjM4NSwgMTA2MzkwLCAKLSAgICAxMDYzOTUsIDEwNjQwMCwgMTA2NDA1LCAxMDY0MTAsIDEwNjQxNSwgMTA2NDIwLCAxMDY0MjUsIDEwNjQzMCwgMTA2NDM1LCAKLSAgICAxMDY0NDAsIDEwNjQ0NSwgMTA2NDUwLCAxMDY0NTUsIDEwNjQ2MCwgMTA2NDY1LCAxMDY0NzAsIDEwNjQ3NSwgMTA2NDgwLCAKLSAgICAxMDY0ODUsIDEwNjQ5MCwgMTA2NDk1LCAxMDY1MDAsIDEwNjUwNSwgMTA2NTEwLCAxMDY1MTUsIDEwNjUyMCwgMTA2NTI1LCAKLSAgICAxMDY1MzAsIDEwNjUzNSwgMTA2NTQwLCAxMDY1NDUsIDEwNjU1MCwgMTA2NTU1LCAxMDY1NjAsIDEwNjU2NSwgMTA2NTcwLCAKLSAgICAxMDY1NzUsIDEwNjU4MCwgMTA2NTg1LCAxMDY1OTAsIDEwNjU5NSwgMTA2NjAyLCAxMDY2MDcsIDEwNjYxMiwgMTA2NjE5LCAKLSAgICAxMDY2MjYsIDEwNjYzMSwgMTA2NjM2LCAxMDY2NDEsIDEwNjY0NiwgMTA2NjUxLCAxMDY2NTYsIDEwNjY2MSwgMTA2NjY2LCAKLSAgICAxMDY2NzEsIDEwNjY3NiwgMTA2NjgxLCAxMDY2ODYsIDEwNjY5MSwgMTA2Njk2LCAxMDY3MDEsIDEwNjcwNiwgMTA2NzExLCAKLSAgICAxMDY3MTYsIDEwNjcyMSwgMTA2NzI2LCAxMDY3MzEsIDEwNjczNiwgMTA2NzQxLCAxMDY3NDYsIDEwNjc1MSwgMTA2NzU4LCAKLSAgICAxMDY3NjMsIDEwNjc2OCwgMTA2NzczLCAxMDY3NzgsIDEwNjc4MywgMTA2Nzg4LCAxMDY3OTMsIDEwNjc5OCwgMTA2ODAzLCAKLSAgICAxMDY4MDgsIDEwNjgxMywgMTA2ODE4LCAxMDY4MjMsIDEwNjgyOCwgMTA2ODMzLCAxMDY4MzgsIDEwNjg0MywgMTA2ODQ4LCAKLSAgICAxMDY4NTUsIDEwNjg2MCwgMTA2ODY1LCAxMDY4NzAsIDEwNjg3NSwgMTA2ODgwLCAxMDY4ODUsIDEwNjg5MCwgMTA2ODk2LCAKLSAgICAxMDY5MDEsIDEwNjkwNiwgMTA2OTExLCAxMDY5MTYsIDEwNjkyMSwgMTA2OTI2LCAxMDY5MzEsIDEwNjkzNiwgMTA2OTQzLCAKLSAgICAxMDY5NTAsIDEwNjk1NSwgMTA2OTYwLCAxMDY5NjQsIDEwNjk2OSwgMTA2OTczLCAxMDY5NzcsIDEwNjk4MiwgMTA2OTg5LCAKLSAgICAxMDY5OTQsIDEwNjk5OSwgMTA3MDA4LCAxMDcwMTMsIDEwNzAxOCwgMTA3MDIzLCAxMDcwMjgsIDEwNzAzNSwgMTA3MDQyLCAKLSAgICAxMDcwNDcsIDEwNzA1MiwgMTA3MDU3LCAxMDcwNjIsIDEwNzA2OSwgMTA3MDc0LCAxMDcwNzksIDEwNzA4NCwgMTA3MDg5LCAKLSAgICAxMDcwOTQsIDEwNzA5OSwgMTA3MTA0LCAxMDcxMDksIDEwNzExNCwgMTA3MTE5LCAxMDcxMjQsIDEwNzEyOSwgMTA3MTM2LCAKLSAgICAxMDcxNDAsIDEwNzE0NSwgMTA3MTUwLCAxMDcxNTUsIDEwNzE2MCwgMTA3MTY0LCAxMDcxNjksIDEwNzE3NCwgMTA3MTc5LCAKLSAgICAxMDcxODQsIDEwNzE4OSwgMTA3MTk0LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA5LCAxMDcyMTUsIDEwNzIyMSwgMTA3MjI3LCAKLSAgICAxMDcyMzMsIDEwNzIzOSwgMTA3MjQ1LCAxMDcyNTEsIDEwNzI1NywgMTA3MjYzLCAxMDcyNjksIDEwNzI3NSwgMTA3MjgxLCAKLSAgICAxMDcyODYsIDEwNzI5MiwgMTA3Mjk4LCAxMDczMDQsIDEwNzMxMCwgMTA3MzE2LCAxMDczMjIsIDEwNzMyOCwgMTA3MzM0LCAKLSAgICAxMDczNDAsIDEwNzM0NiwgMTA3MzUyLCAxMDczNTcsIDEwNzM2MywgMTA3MzY5LCAxMDczNzUsIDEwNzM4MSwgMTA3Mzg3LCAKLSAgICAxMDczOTMsIDEwNzM5OSwgMTA3NDA1LCAxMDc0MTEsIDEwNzQxNywgMTA3NDIzLCAxMDc0MjksIDEwNzQzNSwgMTA3NDQxLCAKLSAgICAxMDc0NDcsIDEwNzQ1MywgMTA3NDU5LCAxMDc0NjUsIDEwNzQ3MSwgMTA3NDc3LCAxMDc0ODIsIDEwNzQ4OCwgMTA3NDk0LCAKLSAgICAxMDc1MDAsIDEwNzUwNiwgMTA3NTEyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcwMDIsIDEwNzAwOSwgMTA3MDE2LCAxMDcwMjUsIDEwNzAzNCwgCisgICAgMTA3MDQxLCAxMDcwNDYsIDEwNzA1MywgMTA3MDYwLCAxMDcwNjksIDEwNzA4MCwgMTA3MDkxLCAxMDcwOTYsIDEwNzEwMywgCisgICAgMTA3MTA4LCAxMDcxMTMsIDEwNzExOCwgMTA3MTIzLCAxMDcxMjgsIDEwNzEzMywgMTA3MTM4LCAxMDcxNDMsIDEwNzE0OCwgCisgICAgMTA3MTUzLCAxMDcxNTgsIDEwNzE2NSwgMTA3MTcyLCAxMDcxNzcsIDEwNzE4MiwgMTA3MTg3LCAxMDcxOTIsIDEwNzE5OSwgCisgICAgMTA3MjA2LCAxMDcyMTQsIDEwNzIxOSwgMTA3MjI2LCAxMDcyMzEsIDEwNzIzNiwgMTA3MjQxLCAxMDcyNDYsIDEwNzI1MSwgCisgICAgMTA3MjU4LCAxMDcyNjUsIDEwNzI3MCwgMTA3Mjc1LCAxMDcyODAsIDEwNzI4NSwgMTA3MjkwLCAxMDcyOTUsIDEwNzMwMCwgCisgICAgMTA3MzA1LCAxMDczMTAsIDEwNzMxNSwgMTA3MzIwLCAxMDczMjUsIDEwNzMzMCwgMTA3MzM1LCAxMDczNDAsIDEwNzM0NSwgCisgICAgMTA3MzUwLCAxMDczNTUsIDEwNzM2MCwgMTA3MzY3LCAxMDczNzIsIDEwNzM3NywgMTA3Mzg2LCAxMDczOTMsIDEwNzM5OCwgCisgICAgMTA3NDAzLCAxMDc0MDgsIDEwNzQxMywgMTA3NDE4LCAxMDc0MjMsIDEwNzQyOCwgMTA3NDMzLCAxMDc0MzgsIDEwNzQ0MywgCisgICAgMTA3NDQ4LCAxMDc0NTMsIDEwNzQ1OCwgMTA3NDYzLCAxMDc0NjgsIDEwNzQ3MywgMTA3NDc4LCAxMDc0ODMsIDEwNzQ4OCwgCisgICAgMTA3NDkzLCAxMDc0OTgsIDEwNzUwNCwgMTA3NTEyLCAxMDc1MTgsIDEwNzUyNiwgMTA3NTM0LCAxMDc1NDIsIDEwNzU0OCwgCisgICAgMTA3NTU0LCAxMDc1NjAsIDEwNzU2NiwgMTA3NTcyLCAxMDc1ODAsIDEwNzU5MCwgMTA3NTk4LCAxMDc2MDYsIDEwNzYxMiwgCisgICAgMTA3NjE4LCAxMDc2MjYsIDEwNzYzNCwgMTA3NjQwLCAxMDc2NDgsIDEwNzY1NiwgMTA3NjY0LCAxMDc2NzAsIDEwNzY3NiwgCisgICAgMTA3NjgyLCAxMDc2ODgsIDEwNzY5NCwgMTA3NzAwLCAxMDc3MDgsIDEwNzcxNiwgMTA3NzIyLCAxMDc3MjgsIDEwNzczNCwgCisgICAgMTA3NzQwLCAxMDc3NDYsIDEwNzc1NCwgMTA3NzYwLCAxMDc3NjYsIDEwNzc3MiwgMTA3Nzc4LCAxMDc3ODQsIDEwNzc5MCwgCisgICAgMTA3Nzk4LCAxMDc4MDQsIDEwNzgxMCwgMTA3ODE2LCAxMDc4MjIsIDEwNzgzMCwgMTA3ODM4LCAxMDc4NDQsIDEwNzg1MCwgCisgICAgMTA3ODU2LCAxMDc4NjEsIDEwNzg2NywgMTA3ODczLCAxMDc4ODAsIDEwNzg4NSwgMTA3ODkwLCAxMDc4OTUsIDEwNzkwMCwgCisgICAgMTA3OTA1LCAxMDc5MTAsIDEwNzkxNSwgMTA3OTIwLCAxMDc5MjUsIDEwNzkzNCwgMTA3OTQxLCAxMDc5NDYsIDEwNzk1MSwgCisgICAgMTA3OTU2LCAxMDc5NjMsIDEwNzk2OCwgMTA3OTczLCAxMDc5NzgsIDEwNzk4NSwgMTA3OTkwLCAxMDc5OTUsIDEwODAwMCwgCisgICAgMTA4MDA1LCAxMDgwMTAsIDEwODAxNSwgMTA4MDIwLCAxMDgwMjUsIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NywgCisgICAgMTA4MDUyLCAxMDgwNTksIDEwODA2NCwgMTA4MDY5LCAxMDgwNzYsIDEwODA4MSwgMTA4MDg2LCAxMDgwOTEsIDEwODA5NiwgCisgICAgMTA4MTAxLCAxMDgxMDYsIDEwODExMSwgMTA4MTE2LCAxMDgxMjEsIDEwODEyNiwgMTA4MTMxLCAxMDgxMzYsIDEwODE0MSwgCisgICAgMTA4MTQ2LCAxMDgxNTEsIDEwODE1NiwgMTA4MTYxLCAxMDgxNjYsIDEwODE3MSwgMTA4MTc4LCAxMDgxODMsIDEwODE4OCwgCisgICAgMTA4MTkzLCAxMDgxOTgsIDEwODIwMywgMTA4MjA4LCAxMDgyMTMsIDEwODIxOCwgMTA4MjIzLCAxMDgyMjgsIDEwODIzMywgCisgICAgMTA4MjM4LCAxMDgyNDMsIDEwODI1MCwgMTA4MjU1LCAxMDgyNjAsIDEwODI2NywgMTA4MjcyLCAxMDgyNzcsIDEwODI4MiwgCisgICAgMTA4Mjg3LCAxMDgyOTIsIDEwODI5NywgMTA4MzAyLCAxMDgzMDcsIDEwODMxMiwgMTA4MzE3LCAxMDgzMjQsIDEwODMyOSwgCisgICAgMTA4MzM0LCAxMDgzMzksIDEwODM0NCwgMTA4MzQ5LCAxMDgzNTYsIDEwODM2MywgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgCisgICAgMTA4MzgzLCAxMDgzODgsIDEwODM5MywgMTA4Mzk4LCAxMDg0MDMsIDEwODQwOCwgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgCisgICAgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MywgMTA4NDU4LCAxMDg0NjMsIDEwODQ2OCwgCisgICAgMTA4NDczLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAxMDg0OTMsIDEwODQ5OCwgMTA4NTAzLCAxMDg1MDgsIDEwODUxMywgCisgICAgMTA4NTE4LCAxMDg1MjMsIDEwODUyOCwgMTA4NTMzLCAxMDg1MzgsIDEwODU0MywgMTA4NTUwLCAxMDg1NTUsIDEwODU2MCwgCisgICAgMTA4NTY1LCAxMDg1NzAsIDEwODU3NSwgMTA4NTgwLCAxMDg1ODUsIDEwODU5MCwgMTA4NTk1LCAxMDg2MDAsIDEwODYwNSwgCisgICAgMTA4NjEwLCAxMDg2MTUsIDEwODYyMCwgMTA4NjI1LCAxMDg2MzAsIDEwODYzNSwgMTA4NjQwLCAxMDg2NDUsIDEwODY1MCwgCisgICAgMTA4NjU1LCAxMDg2NjAsIDEwODY2NSwgMTA4NjcwLCAxMDg2NzUsIDEwODY4MCwgMTA4Njg1LCAxMDg2OTAsIDEwODY5NSwgCisgICAgMTA4NzAwLCAxMDg3MDUsIDEwODcxMCwgMTA4NzE1LCAxMDg3MjAsIDEwODcyNSwgMTA4NzMwLCAxMDg3MzUsIDEwODc0MCwgCisgICAgMTA4NzQ1LCAxMDg3NTAsIDEwODc1NSwgMTA4NzYwLCAxMDg3NjUsIDEwODc3MCwgMTA4Nzc1LCAxMDg3ODAsIDEwODc4NSwgCisgICAgMTA4NzkwLCAxMDg3OTUsIDEwODgwMCwgMTA4ODA1LCAxMDg4MTAsIDEwODgxNSwgMTA4ODIwLCAxMDg4MjUsIDEwODgzMCwgCisgICAgMTA4ODM1LCAxMDg4NDAsIDEwODg0NywgMTA4ODUyLCAxMDg4NTcsIDEwODg2MiwgMTA4ODY3LCAxMDg4NzIsIDEwODg3NywgCisgICAgMTA4ODgxLCAxMDg4ODYsIDEwODg5MSwgMTA4ODk2LCAxMDg5MDEsIDEwODkwNiwgMTA4OTExLCAxMDg5MTYsIDEwODkyMSwgCisgICAgMTA4OTI2LCAxMDg5MzEsIDEwODkzNiwgMTA4OTQxLCAxMDg5NDYsIDEwODk1MSwgMTA4OTU4LCAxMDg5NjMsIDEwODk2OCwgCisgICAgMTA4OTc0LCAxMDg5NzksIDEwODk4NCwgMTA4OTg5LCAxMDg5OTQsIDEwODk5OSwgMTA5MDA0LCAxMDkwMDksIDEwOTAxNCwgCisgICAgMTA5MDE5LCAxMDkwMjQsIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzksIDEwOTA0NCwgMTA5MDQ5LCAxMDkwNTQsIDEwOTA1OSwgCisgICAgMTA5MDY0LCAxMDkwNjksIDEwOTA3NCwgMTA5MDc5LCAxMDkwODQsIDEwOTA4OSwgMTA5MDk0LCAxMDkwOTksIDEwOTEwNCwgCisgICAgMTA5MTA5LCAxMDkxMTQsIDEwOTExOSwgMTA5MTI0LCAxMDkxMjksIDEwOTEzNCwgMTA5MTM5LCAxMDkxNDQsIDEwOTE0OSwgCisgICAgMTA5MTU0LCAxMDkxNTksIDEwOTE2NCwgMTA5MTY5LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg0LCAxMDkxODksIDEwOTE5NiwgCisgICAgMTA5MjAxLCAxMDkyMDYsIDEwOTIxMywgMTA5MjIwLCAxMDkyMjUsIDEwOTIzMCwgMTA5MjM1LCAxMDkyNDAsIDEwOTI0NSwgCisgICAgMTA5MjUwLCAxMDkyNTUsIDEwOTI2MCwgMTA5MjY1LCAxMDkyNzAsIDEwOTI3NSwgMTA5MjgwLCAxMDkyODUsIDEwOTI5MCwgCisgICAgMTA5Mjk1LCAxMDkzMDAsIDEwOTMwNSwgMTA5MzEwLCAxMDkzMTUsIDEwOTMyMCwgMTA5MzI1LCAxMDkzMzAsIDEwOTMzNSwgCisgICAgMTA5MzQwLCAxMDkzNDUsIDEwOTM1MiwgMTA5MzU3LCAxMDkzNjIsIDEwOTM2NywgMTA5MzcyLCAxMDkzNzcsIDEwOTM4MiwgCisgICAgMTA5Mzg3LCAxMDkzOTIsIDEwOTM5NywgMTA5NDAyLCAxMDk0MDcsIDEwOTQxMiwgMTA5NDE3LCAxMDk0MjIsIDEwOTQyNywgCisgICAgMTA5NDMyLCAxMDk0MzcsIDEwOTQ0MiwgMTA5NDQ5LCAxMDk0NTQsIDEwOTQ1OSwgMTA5NDY0LCAxMDk0NjksIDEwOTQ3NCwgCisgICAgMTA5NDc5LCAxMDk0ODQsIDEwOTQ5MCwgMTA5NDk1LCAxMDk1MDAsIDEwOTUwNSwgMTA5NTEwLCAxMDk1MTUsIDEwOTUyMCwgCisgICAgMTA5NTI1LCAxMDk1MzAsIDEwOTUzNywgMTA5NTQ0LCAxMDk1NDksIDEwOTU1NCwgMTA5NTU4LCAxMDk1NjMsIDEwOTU2NywgCisgICAgMTA5NTcxLCAxMDk1NzYsIDEwOTU4MywgMTA5NTg4LCAxMDk1OTMsIDEwOTYwMiwgMTA5NjA3LCAxMDk2MTIsIDEwOTYxNywgCisgICAgMTA5NjIyLCAxMDk2MjksIDEwOTYzNiwgMTA5NjQxLCAxMDk2NDYsIDEwOTY1MSwgMTA5NjU2LCAxMDk2NjMsIDEwOTY2OCwgCisgICAgMTA5NjczLCAxMDk2NzgsIDEwOTY4MywgMTA5Njg4LCAxMDk2OTMsIDEwOTY5OCwgMTA5NzAzLCAxMDk3MDgsIDEwOTcxMywgCisgICAgMTA5NzE4LCAxMDk3MjMsIDEwOTczMCwgMTA5NzM0LCAxMDk3MzksIDEwOTc0NCwgMTA5NzQ5LCAxMDk3NTQsIDEwOTc1OCwgCisgICAgMTA5NzYzLCAxMDk3NjgsIDEwOTc3MywgMTA5Nzc4LCAxMDk3ODMsIDEwOTc4OCwgMTA5NzkzLCAxMDk3OTgsIDEwOTgwMywgCisgICAgMTA5ODA5LCAxMDk4MTUsIDEwOTgyMSwgMTA5ODI3LCAxMDk4MzMsIDEwOTgzOSwgMTA5ODQ1LCAxMDk4NTEsIDEwOTg1NywgCisgICAgMTA5ODYzLCAxMDk4NjksIDEwOTg3NSwgMTA5ODgwLCAxMDk4ODYsIDEwOTg5MiwgMTA5ODk4LCAxMDk5MDQsIDEwOTkxMCwgCisgICAgMTA5OTE2LCAxMDk5MjIsIDEwOTkyOCwgMTA5OTM0LCAxMDk5NDAsIDEwOTk0NiwgMTA5OTUxLCAxMDk5NTcsIDEwOTk2MywgCisgICAgMTA5OTY5LCAxMDk5NzUsIDEwOTk4MSwgMTA5OTg3LCAxMDk5OTMsIDEwOTk5OSwgMTEwMDA1LCAxMTAwMTEsIDExMDAxNywgCisgICAgMTEwMDIzLCAxMTAwMjksIDExMDAzNSwgMTEwMDQxLCAxMTAwNDcsIDExMDA1MywgMTEwMDU5LCAxMTAwNjUsIDExMDA3MSwgCisgICAgMTEwMDc2LCAxMTAwODIsIDExMDA4OCwgMTEwMDk0LCAxMTAxMDAsIDExMDEwNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NTE4LCAxMDc1MjMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDExMiwgMTEwMTE1LCAxMTAxMTksIAorICAgIDExMDEyMywgMTEwMTI3LCAxMTAxMzAsIDExMDEzNCwgMTEwMTM5LCAxMTAxNDMsIDExMDE0NywgMTEwMTUxLCAxMTAxNTUsIAorICAgIDExMDE1OSwgMTEwMTY0LCAxMTAxNjksIDExMDE3MywgMTEwMTc3LCAxMTAxODAsIDExMDE4NCwgMTEwMTg5LCAxMTAxOTQsIAorICAgIDExMDE5OCwgMTEwMjAyLCAxMTAyMDYsIDExMDIxMCwgMTEwMjE0LCAxMTAyMTgsIDExMDIyMiwgMTEwMjI2LCAxMTAyMzAsIAorICAgIDExMDIzNCwgMTEwMjM3LCAxMTAyNDEsIDExMDI0NSwgMTEwMjQ5LCAxMTAyNTMsIDExMDI1NywgMTEwMjYxLCAxMTAyNjcsIAorICAgIDExMDI3MCwgMTEwMjc0LCAxMTAyNzgsIDExMDI4MiwgMTEwMjg2LCAxMTAyOTAsIDExMDI5NCwgMTEwMjk4LCAxMTAzMDIsIAorICAgIDExMDMwNiwgMTEwMzExLCAxMTAzMTYsIDExMDMyMiwgMTEwMzI2LCAxMTAzMzAsIDExMDMzNCwgMTEwMzM4LCAxMTAzNDIsIAorICAgIDExMDM0NiwgMTEwMzUxLCAxMTAzNTQsIDExMDM1OCwgMTEwMzYyLCAxMTAzNjYsIDExMDM3MCwgMTEwMzc2LCAxMTAzODAsIAorICAgIDExMDM4NCwgMTEwMzg4LCAxMTAzOTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDM5NiwgMTEwNDAwLCAKKyAgICAxMTA0MDQsIDExMDQxMCwgMTEwNDE2LCAxMTA0MjAsIDExMDQyNSwgMTEwNDMwLCAxMTA0MzUsIDExMDQ0MCwgMTEwNDQ0LCAKKyAgICAxMTA0NDksIDExMDQ1NCwgMTEwNDU5LCAxMTA0NjMsIDExMDQ2OCwgMTEwNDczLCAxMTA0NzgsIDExMDQ4MiwgMTEwNDg3LCAKKyAgICAxMTA0OTIsIDExMDQ5NywgMTEwNTAyLCAxMTA1MDcsIDExMDUxMiwgMTEwNTE3LCAxMTA1MjIsIDExMDUyNiwgMTEwNTMxLCAKKyAgICAxMTA1MzYsIDExMDU0MSwgMTEwNTQ2LCAxMTA1NTEsIDExMDU1NiwgMTEwNTYxLCAxMTA1NjYsIDExMDU3MSwgMTEwNTc2LCAKKyAgICAxMTA1ODEsIDExMDU4OCwgMTEwNTkzLCAxMTA2MDAsIDExMDYwNSwgMTEwNjEwLCAxMTA2MTUsIDExMDYyMCwgMTEwNjI1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2MzAsIDExMDYzNCwgMTEwNjQwLCAKKyAgICAxMTA2NDMsIDExMDY0NiwgMTEwNjUwLCAxMTA2NTQsIDExMDY1OCwgMTEwNjYyLCAxMTA2NjYsIDExMDY3MCwgMTEwNjc0LCAKKyAgICAxMTA2ODAsIDExMDY4NiwgMTEwNjkyLCAxMTA2OTgsIDExMDcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3NTI5LCAxMDc1MzQsIAotICAgIDEwNzUzOSwgMTA3NTQ0LCAxMDc1NTEsIDEwNzU1OCwgMTA3NTY1LCAxMDc1NzIsIDEwNzU3NywgMTA3NTgyLCAxMDc1ODcsIAotICAgIDEwNzU5MiwgMTA3NTk5LCAxMDc2MDQsIDEwNzYxMSwgMTA3NjE4LCAxMDc2MjMsIDEwNzYyOCwgMTA3NjMzLCAxMDc2NDAsIAotICAgIDEwNzY0NSwgMTA3NjUwLCAxMDc2NTcsIDEwNzY2NCwgMTA3NjY5LCAxMDc2NzQsIDEwNzY3OSwgMTA3Njg2LCAxMDc2OTMsIAotICAgIDEwNzcwMCwgMTA3NzA1LCAxMDc3MTAsIDEwNzcxNywgMTA3NzI0LCAxMDc3MzEsIDEwNzczOCwgMTA3NzQzLCAxMDc3NDgsIAotICAgIDEwNzc1MywgMTA3NzYwLCAxMDc3NjUsIDEwNzc3MCwgMTA3Nzc1LCAxMDc3ODIsIDEwNzc5MSwgMTA3Nzk4LCAxMDc4MDMsIAotICAgIDEwNzgwOCwgMTA3ODEzLCAxMDc4MTgsIDEwNzgyMywgMTA3ODI4LCAxMDc4MzcsIDEwNzg0NCwgMTA3ODQ5LCAxMDc4NTYsIAotICAgIDEwNzg2MywgMTA3ODY4LCAxMDc4NzMsIDEwNzg3OCwgMTA3ODg1LCAxMDc4OTAsIDEwNzg5NywgMTA3OTA0LCAxMDc5MDksIAotICAgIDEwNzkxNCwgMTA3OTE5LCAxMDc5MjYsIDEwNzkzMywgMTA3OTM4LCAxMDc5NDMsIDEwNzk1MCwgMTA3OTU3LCAxMDc5NjQsIAotICAgIDEwNzk2OSwgMTA3OTc0LCAxMDc5NzksIDEwNzk4NCwgMTA3OTkxLCAxMDgwMDAsIDEwODAwOSwgMTA4MDE0LCAxMDgwMjEsIAotICAgIDEwODAzMCwgMTA4MDM1LCAxMDgwNDAsIDEwODA0NSwgMTA4MDUwLCAxMDgwNTcsIDEwODA2NCwgMTA4MDcxLCAxMDgwNzgsIAotICAgIDEwODA4MywgMTA4MDg4LCAxMDgwOTMsIDEwODEwMCwgMTA4MTA3LCAxMDgxMTQsIDEwODExOSwgMTA4MTI0LCAxMDgxMzEsIAotICAgIDEwODEzNiwgMTA4MTQzLCAxMDgxNDgsIDEwODE1NSwgMTA4MTYwLCAxMDgxNjcsIDEwODE3NCwgMTA4MTc5LCAxMDgxODQsIAotICAgIDEwODE4OSwgMTA4MTk0LCAxMDgxOTksIDEwODIwNCwgMTA4MjA5LCAxMDgyMTQsIDEwODIxOSwgMTA4MjI2LCAxMDgyMzMsIAotICAgIDEwODI0MCwgMTA4MjQ3LCAxMDgyNTQsIDEwODI2MywgMTA4MjY4LCAxMDgyNzMsIDEwODI4MCwgMTA4Mjg3LCAxMDgyOTIsIAotICAgIDEwODI5OSwgMTA4MzA2LCAxMDgzMTMsIDEwODMyMCwgMTA4MzI3LCAxMDgzMzQsIDEwODMzOSwgMTA4MzQ0LCAxMDgzNDksIAotICAgIDEwODM1NCwgMTA4MzU5LCAxMDgzNjgsIDEwODM3NywgMTA4Mzg2LCAxMDgzOTUsIDEwODQwNCwgMTA4NDEzLCAxMDg0MjIsIAotICAgIDEwODQzMSwgMTA4NDM2LCAxMDg0NDcsIDEwODQ1OCwgMTA4NDY3LCAxMDg0NzIsIDEwODQ3NywgMTA4NDgyLCAxMDg0ODcsIAotICAgIDEwODQ5NiwgMTA4NTAzLCAxMDg1MTAsIDEwODUxNywgMTA4NTI0LCAxMDg1MzEsIDEwODUzOCwgMTA4NTQ3LCAxMDg1NTYsIAotICAgIDEwODU2NywgMTA4NTc2LCAxMDg1ODcsIDEwODU5NiwgMTA4NjAzLCAxMDg2MTIsIDEwODYyMywgMTA4NjMyLCAxMDg2NDEsIAotICAgIDEwODY1MCwgMTA4NjU5LCAxMDg2NjYsIDEwODY3MywgMTA4NjgwLCAxMDg2ODksIDEwODY5OCwgMTA4NzA5LCAxMDg3MTgsIAotICAgIDEwODcyNywgMTA4NzM4LCAxMDg3NDMsIDEwODc0OCwgMTA4NzU5LCAxMDg3NjcsIDEwODc3NiwgMTA4Nzg1LCAxMDg3OTQsIAotICAgIDEwODgwNSwgMTA4ODE0LCAxMDg4MjMsIDEwODgzNCwgMTA4ODQ1LCAxMDg4NTYsIDEwODg2NywgMTA4ODc4LCAxMDg4ODksIAotICAgIDEwODg5NiwgMTA4OTAzLCAxMDg5MTAsIDEwODkxNywgMTA4OTI4LCAxMDg5MzcsIDEwODk0NCwgMTA4OTUxLCAxMDg5NTgsIAotICAgIDEwODk2OSwgMTA4OTgwLCAxMDg5OTEsIDEwOTAwMiwgMTA5MDEzLCAxMDkwMjQsIDEwOTAzNSwgMTA5MDQ2LCAxMDkwNTMsIAotICAgIDEwOTA2MCwgMTA5MDY5LCAxMDkwNzgsIDEwOTA4NSwgMTA5MDkyLCAxMDkwOTksIDEwOTEwOCwgMTA5MTE3LCAxMDkxMjYsIAotICAgIDEwOTEzMywgMTA5MTQyLCAxMDkxNTEsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzQsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTIsIAotICAgIDEwOTE5OSwgMTA5MjA2LCAxMDkyMTMsIDEwOTIyMCwgMTA5MjI3LCAxMDkyMzYsIDEwOTI0NSwgMTA5MjU0LCAxMDkyNjMsIAotICAgIDEwOTI3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5Mjc5LCAxMDkyODUsIDEwOTI5MCwgMTA5Mjk1LCAKLSAgICAxMDkzMDIsIDEwOTMwOCwgMTA5MzE0LCAxMDkzMjAsIDEwOTMyNiwgMTA5MzMyLCAxMDkzMzgsIDEwOTM0NCwgMTA5MzQ4LCAKLSAgICAxMDkzNTIsIDEwOTM1OCwgMTA5MzY0LCAxMDkzNzAsIDEwOTM3NCwgMTA5Mzc5LCAxMDkzODQsIDEwOTM4OCwgMTA5MzkyLCAKLSAgICAxMDkzOTUsIDEwOTQwMSwgMTA5NDA3LCAxMDk0MTMsIDEwOTQxOSwgMTA5NDI1LCAxMDk0MzEsIDEwOTQzNywgMTA5NDQzLCAKLSAgICAxMDk0NDksIDEwOTQ1OSwgMTA5NDY5LCAxMDk0NzUsIDEwOTQ4MSwgMTA5NDkxLCAxMDk1MDEsIDEwOTUwNywgMCwgMCwgCi0gICAgMTA5NTEzLCAxMDk1MjEsIDEwOTUyNiwgMTA5NTMxLCAxMDk1MzcsIDEwOTU0MywgMTA5NTQ5LCAxMDk1NTUsIDEwOTU2MSwgCi0gICAgMTA5NTY3LCAxMDk1NzQsIDEwOTU4MSwgMTA5NTg3LCAxMDk1OTMsIDEwOTU5OSwgMTA5NjA1LCAxMDk2MTEsIDEwOTYxNywgCi0gICAgMTA5NjIzLCAxMDk2MjksIDEwOTYzNCwgMTA5NjQwLCAxMDk2NDYsIDEwOTY1MiwgMTA5NjU4LCAxMDk2NjQsIDEwOTY3MywgCi0gICAgMTA5Njc5LCAxMDk2ODQsIDEwOTY5MiwgMTA5Njk5LCAxMDk3MDYsIDEwOTcxNSwgMTA5NzI0LCAxMDk3MzMsIDEwOTc0MiwgCi0gICAgMTA5NzUxLCAxMDk3NjAsIDEwOTc2OSwgMTA5Nzc4LCAxMDk3ODgsIDEwOTc5OCwgMTA5ODA2LCAxMDk4MTQsIDEwOTgyMywgCi0gICAgMTA5ODMyLCAxMDk4MzgsIDEwOTg0NCwgMTA5ODUwLCAxMDk4NTYsIDEwOTg2NCwgMTA5ODcyLCAxMDk4NzYsIDEwOTg4MiwgCi0gICAgMTA5ODg3LCAxMDk4OTMsIDEwOTg5OSwgMTA5OTA1LCAxMDk5MTEsIDEwOTkxNywgMTA5OTI2LCAxMDk5MzEsIDEwOTkzOCwgCi0gICAgMTA5OTQzLCAxMDk5NDgsIDEwOTk1MywgMTA5OTU5LCAxMDk5NjUsIDEwOTk3MSwgMTA5OTc4LCAxMDk5ODMsIDEwOTk4OCwgCi0gICAgMTA5OTkzLCAxMDk5OTgsIDExMDAwMywgMTEwMDA5LCAxMTAwMTUsIDExMDAyMSwgMTEwMDI3LCAxMTAwMzMsIDExMDAzOSwgCi0gICAgMTEwMDQ1LCAxMTAwNTEsIDExMDA1NiwgMTEwMDYxLCAxMTAwNjYsIDExMDA3MSwgMTEwMDc2LCAxMTAwODEsIDExMDA4NiwgCi0gICAgMTEwMDkxLCAxMTAwOTcsIDExMDEwMywgMTEwMTA4LCAxMTAxMTMsIDExMDExOCwgMTEwMTIzLCAxMTAxMjgsIDExMDEzNCwgCi0gICAgMTEwMTQxLCAxMTAxNDUsIDExMDE0OSwgMTEwMTUzLCAxMTAxNTcsIDExMDE2MSwgMTEwMTY1LCAxMTAxNjksIDExMDE3MywgCi0gICAgMTEwMTgxLCAxMTAxOTEsIDExMDE5NSwgMTEwMTk5LCAxMTAyMDUsIDExMDIxMSwgMTEwMjE3LCAxMTAyMjMsIDExMDIyOSwgCi0gICAgMTEwMjM1LCAxMTAyNDEsIDExMDI0NywgMTEwMjUzLCAxMTAyNTksIDExMDI2NSwgMTEwMjcxLCAxMTAyNzcsIDExMDI4MywgCi0gICAgMTEwMjg3LCAxMTAyOTEsIDExMDI5OCwgMTEwMzA0LCAxMTAzMTAsIDExMDMxNiwgMTEwMzIxLCAxMTAzMjgsIDExMDMzMywgCi0gICAgMTEwMzM5LCAxMTAzNDUsIDExMDM1MSwgMTEwMzU3LCAxMTAzNjIsIDExMDM2NiwgMTEwMzcyLCAxMTAzNzYsIDExMDM4MCwgCi0gICAgMTEwMzg0LCAxMTAzOTAsIDExMDM5NiwgMTEwNDAwLCAxMTA0MDYsIDExMDQxMiwgMTEwNDE4LCAxMTA0MjQsIDExMDQzMCwgCi0gICAgMTEwNDM4LCAxMTA0NDYsIDExMDQ1MiwgMTEwNDU4LCAxMTA0NjQsIDExMDQ3MCwgMTEwNDgyLCAxMTA0OTQsIDExMDUwOCwgCi0gICAgMTEwNTIwLCAxMTA1MzIsIDExMDU0NiwgMTEwNTYwLCAxMTA1NzQsIDExMDU3OCwgMTEwNTg2LCAxMTA1OTQsIDExMDU5OSwgCi0gICAgMTEwNjAzLCAxMTA2MDcsIDExMDYxMSwgMTEwNjE1LCAxMTA2MTksIDExMDYyMywgMTEwNjI3LCAxMTA2MzMsIDExMDYzOSwgCi0gICAgMTEwNjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA2NTEsIDExMDY1NywgMTEwNjYzLCAxMTA2NjksIAotICAgIDExMDY3NSwgMTEwNjgxLCAxMTA2ODcsIDExMDY5MywgMTEwNjk5LCAxMTA3MDUsIDExMDcxMSwgMTEwNzE3LCAxMTA3MjMsIAotICAgIDExMDcyOSwgMTEwNzM1LCAxMTA3NDEsIDExMDc0NywgMTEwNzUzLCAxMTA3NTksIDExMDc2NSwgMTEwNzcxLCAxMTA3NzcsIAotICAgIDExMDc4MywgMTEwNzg5LCAxMTA3OTUsIDExMDgwMSwgMTEwODA3LCAxMTA4MTMsIDExMDgxOSwgMTEwODI1LCAxMTA4MzEsIAotICAgIDExMDgzNywgMTEwODQzLCAxMTA4NDksIDExMDg1NSwgMTEwODYxLCAxMTA4NjcsIDExMDg3MywgMTEwODc5LCAxMTA4ODUsIAotICAgIDExMDg5MSwgMTEwODk3LCAxMTA5MDMsIDExMDkwOSwgMTEwOTE1LCAxMTA5MjEsIDExMDkyNywgMTEwOTMzLCAxMTA5MzksIAotICAgIDExMDk0NSwgMTEwOTUxLCAxMTA5NTcsIDExMDk2MywgMTEwOTY5LCAxMTA5NzUsIDExMDk4MSwgMTEwOTg3LCAxMTA5OTMsIAotICAgIDExMDk5OSwgMTExMDA1LCAxMTEwMTEsIDExMTAxNywgMTExMDIzLCAxMTEwMjksIDExMTAzNSwgMTExMDQxLCAxMTEwNDcsIAotICAgIDExMTA1MiwgMTExMDU3LCAxMTEwNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTA2NiwgMTExMDcxLCAKLSAgICAxMTEwNzgsIDExMTA4NSwgMTExMDkyLCAxMTEwOTksIDExMTEwNCwgMTExMTA4LCAxMTExMTQsIDExMTExOCwgMTExMTIyLCAKLSAgICAxMTExMjgsIDExMTEzMiwgMTExMTM2LCAxMTExNDAsIDExMTE0NiwgMTExMTUzLCAxMTExNTcsIDExMTE2MSwgMTExMTY1LCAKLSAgICAxMTExNjksIDExMTE3MywgMTExMTc3LCAxMTExODMsIDExMTE4NywgMTExMTkxLCAxMTExOTUsIDExMTE5OSwgMTExMjAzLCAKLSAgICAxMTEyMDcsIDExMTIxMSwgMTExMjE1LCAxMTEyMTksIDExMTIyMywgMTExMjI3LCAxMTEyMzEsIDExMTIzNiwgMTExMjQwLCAKLSAgICAxMTEyNDQsIDExMTI0OCwgMTExMjUyLCAxMTEyNTYsIDExMTI2MCwgMTExMjY0LCAxMTEyNjgsIDExMTI3MiwgMTExMjc5LCAKLSAgICAxMTEyODMsIDExMTI5MSwgMTExMjk1LCAxMTEyOTksIDExMTMwMywgMTExMzA3LCAxMTEzMTEsIDExMTMxNSwgMTExMzE5LCAKLSAgICAxMTEzMjYsIDExMTMzMCwgMTExMzM0LCAxMTEzMzgsIDExMTM0MiwgMTExMzQ2LCAxMTEzNTIsIDExMTM1NiwgMTExMzYyLCAKLSAgICAxMTEzNjYsIDExMTM3MCwgMTExMzc0LCAxMTEzNzgsIDExMTM4MiwgMTExMzg2LCAxMTEzOTAsIDExMTM5NCwgMTExMzk4LCAKLSAgICAxMTE0MDIsIDExMTQwNiwgMTExNDEwLCAxMTE0MTQsIDExMTQxOCwgMTExNDIyLCAxMTE0MjYsIDExMTQzMCwgMTExNDM0LCAKLSAgICAxMTE0MzgsIDExMTQ0NiwgMTExNDUwLCAxMTE0NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTQ1OCwgCi0gICAgMTExNDY2LCAxMTE0NzQsIDExMTQ4MiwgMTExNDkwLCAxMTE0OTgsIDExMTUwNiwgMTExNTE0LCAxMTE1MjIsIDExMTUzMCwgCi0gICAgMTExNTM4LCAxMTE1NDYsIDExMTU1NCwgMTExNTYyLCAxMTE1NzAsIDExMTU3OCwgMTExNTg2LCAxMTE1OTQsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMTYwMiwgMTExNjA2LCAxMTE2MTEsIDExMTYxNiwgMTExNjIxLCAKLSAgICAxMTE2MjUsIDExMTYzMCwgMTExNjM1LCAxMTE2NDAsIDExMTY0NCwgMTExNjQ5LCAxMTE2NTQsIDExMTY1OCwgMTExNjYyLCAKLSAgICAxMTE2NjYsIDExMTY3MCwgMTExNjc1LCAxMTE2ODAsIDExMTY4NCwgMTExNjg4LCAxMTE2OTMsIDExMTY5NywgMTExNzAyLCAKLSAgICAxMTE3MDcsIDExMTcxMiwgMTExNzE3LCAxMTE3MjIsIDExMTcyNiwgMTExNzMxLCAxMTE3MzYsIDExMTc0MSwgMTExNzQ1LCAKLSAgICAxMTE3NTAsIDExMTc1NSwgMTExNzYwLCAxMTE3NjQsIDExMTc2OSwgMTExNzc0LCAxMTE3NzgsIDExMTc4MiwgMTExNzg2LCAKLSAgICAxMTE3OTAsIDExMTc5NSwgMTExODAwLCAxMTE4MDQsIDExMTgwOCwgMTExODEzLCAxMTE4MTcsIDExMTgyMiwgMTExODI3LCAKLSAgICAxMTE4MzIsIDExMTgzNywgMTExODQyLCAxMTE4NDYsIDExMTg1MSwgMTExODU2LCAxMTE4NjEsIDExMTg2NSwgMTExODcwLCAKLSAgICAxMTE4NzUsIDExMTg4MCwgMTExODg0LCAxMTE4ODksIDExMTg5NCwgMTExODk4LCAxMTE5MDIsIDExMTkwNiwgMTExOTEwLCAKLSAgICAxMTE5MTUsIDExMTkyMCwgMTExOTI0LCAxMTE5MjgsIDExMTkzMywgMTExOTM3LCAxMTE5NDIsIDExMTk0NywgMTExOTUyLCAKLSAgICAxMTE5NTcsIDExMTk2MiwgMTExOTY2LCAxMTE5NzEsIDExMTk3NiwgMTExOTgxLCAxMTE5ODUsIDExMTk5MCwgMCwgCi0gICAgMTExOTk1LCAxMTE5OTksIDExMjAwNCwgMTEyMDA5LCAxMTIwMTMsIDExMjAxNywgMTEyMDIxLCAxMTIwMjUsIDExMjAzMCwgCi0gICAgMTEyMDM1LCAxMTIwMzksIDExMjA0MywgMTEyMDQ4LCAxMTIwNTIsIDExMjA1NywgMTEyMDYyLCAxMTIwNjcsIDExMjA3MiwgCi0gICAgMTEyMDc3LCAxMTIwODIsIDExMjA4OCwgMTEyMDk0LCAxMTIxMDAsIDExMjEwNSwgMTEyMTExLCAxMTIxMTcsIDExMjEyMywgCi0gICAgMTEyMTI4LCAxMTIxMzQsIDExMjE0MCwgMTEyMTQ1LCAxMTIxNTAsIDExMjE1NSwgMTEyMTYwLCAxMTIxNjYsIDExMjE3MiwgCi0gICAgMTEyMTc3LCAxMTIxODIsIDExMjE4OCwgMTEyMTkzLCAxMTIxOTksIDExMjIwNSwgMTEyMjExLCAxMTIyMTcsIDExMjIyMywgCi0gICAgMTEyMjI4LCAxMTIyMzQsIDExMjI0MCwgMTEyMjQ2LCAxMTIyNTEsIDExMjI1NywgMTEyMjYzLCAxMTIyNjksIDExMjI3NCwgCi0gICAgMTEyMjgwLCAxMTIyODYsIDExMjI5MSwgMTEyMjk2LCAxMTIzMDEsIDExMjMwNiwgMTEyMzEyLCAxMTIzMTgsIDExMjMyMywgCi0gICAgMTEyMzI4LCAxMTIzMzQsIDExMjMzOSwgMTEyMzQ1LCAxMTIzNTEsIDExMjM1NywgMTEyMzYzLCAxMTIzNjksIDAsIAotICAgIDExMjM3MywgMTEyMzc4LCAwLCAwLCAxMTIzODMsIDAsIDAsIDExMjM4OCwgMTEyMzkzLCAwLCAwLCAxMTIzOTgsIDExMjQwMiwgCi0gICAgMTEyNDA2LCAxMTI0MTEsIDAsIDExMjQxNiwgMTEyNDIwLCAxMTI0MjUsIDExMjQyOSwgMTEyNDM0LCAxMTI0MzksIAotICAgIDExMjQ0NCwgMTEyNDQ5LCAxMTI0NTQsIDExMjQ1OCwgMTEyNDYzLCAxMTI0NjgsIDAsIDExMjQ3MywgMCwgMTEyNDc4LCAKLSAgICAxMTI0ODMsIDExMjQ4NywgMTEyNDkyLCAxMTI0OTcsIDExMjUwMSwgMTEyNTA1LCAwLCAxMTI1MDksIDExMjUxNCwgCi0gICAgMTEyNTE5LCAxMTI1MjMsIDExMjUyNywgMTEyNTMyLCAxMTI1MzYsIDExMjU0MSwgMTEyNTQ2LCAxMTI1NTEsIDExMjU1NiwgCi0gICAgMTEyNTYxLCAxMTI1NjYsIDExMjU3MiwgMTEyNTc4LCAxMTI1ODQsIDExMjU4OSwgMTEyNTk1LCAxMTI2MDEsIDExMjYwNywgCi0gICAgMTEyNjEyLCAxMTI2MTgsIDExMjYyNCwgMTEyNjI5LCAxMTI2MzQsIDExMjYzOSwgMTEyNjQ0LCAxMTI2NTAsIDExMjY1NiwgCi0gICAgMTEyNjYxLCAxMTI2NjYsIDExMjY3MiwgMTEyNjc3LCAxMTI2ODMsIDExMjY4OSwgMTEyNjk1LCAxMTI3MDEsIDExMjcwNywgCi0gICAgMTEyNzEyLCAxMTI3MTgsIDExMjcyNCwgMTEyNzMwLCAxMTI3MzUsIDExMjc0MSwgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OCwgCi0gICAgMTEyNzY0LCAxMTI3NzAsIDExMjc3NSwgMTEyNzgwLCAxMTI3ODUsIDExMjc5MCwgMTEyNzk2LCAxMTI4MDIsIDExMjgwNywgCi0gICAgMTEyODEyLCAxMTI4MTgsIDExMjgyMywgMTEyODI5LCAxMTI4MzUsIDExMjg0MSwgMTEyODQ3LCAxMTI4NTMsIDExMjg1NywgCi0gICAgMCwgMTEyODYyLCAxMTI4NjcsIDExMjg3MSwgMTEyODc2LCAwLCAwLCAxMTI4ODEsIDExMjg4NiwgMTEyODkxLCAxMTI4OTUsIAotICAgIDExMjg5OSwgMTEyOTAzLCAxMTI5MDcsIDExMjkxMiwgMCwgMTEyOTE3LCAxMTI5MjEsIDExMjkyNiwgMTEyOTMwLCAKLSAgICAxMTI5MzUsIDExMjk0MCwgMTEyOTQ1LCAwLCAxMTI5NTAsIDExMjk1NCwgMTEyOTU5LCAxMTI5NjQsIDExMjk2OSwgCi0gICAgMTEyOTczLCAxMTI5NzgsIDExMjk4MywgMTEyOTg4LCAxMTI5OTIsIDExMjk5NywgMTEzMDAyLCAxMTMwMDYsIDExMzAxMCwgCi0gICAgMTEzMDE0LCAxMTMwMTgsIDExMzAyMywgMTEzMDI4LCAxMTMwMzIsIDExMzAzNiwgMTEzMDQxLCAxMTMwNDUsIDExMzA1MCwgCi0gICAgMTEzMDU1LCAxMTMwNjAsIDExMzA2NSwgMTEzMDcwLCAxMTMwNzQsIDAsIDExMzA3OSwgMTEzMDg0LCAxMTMwODgsIAotICAgIDExMzA5MywgMCwgMTEzMDk4LCAxMTMxMDIsIDExMzEwNywgMTEzMTEyLCAxMTMxMTYsIDAsIDExMzEyMCwgMCwgMCwgMCwgCi0gICAgMTEzMTI0LCAxMTMxMjgsIDExMzEzMywgMTEzMTM3LCAxMTMxNDIsIDExMzE0NywgMTEzMTUyLCAwLCAxMTMxNTcsIAotICAgIDExMzE2MSwgMTEzMTY2LCAxMTMxNzEsIDExMzE3NiwgMTEzMTgwLCAxMTMxODUsIDExMzE5MCwgMTEzMTk1LCAxMTMxOTksIAotICAgIDExMzIwNCwgMTEzMjA5LCAxMTMyMTMsIDExMzIxNywgMTEzMjIxLCAxMTMyMjUsIDExMzIzMCwgMTEzMjM1LCAxMTMyMzksIAotICAgIDExMzI0MywgMTEzMjQ4LCAxMTMyNTIsIDExMzI1NywgMTEzMjYyLCAxMTMyNjcsIDExMzI3MiwgMTEzMjc3LCAxMTMyODIsIAotICAgIDExMzI4OCwgMTEzMjk0LCAxMTMzMDAsIDExMzMwNSwgMTEzMzExLCAxMTMzMTcsIDExMzMyMywgMTEzMzI4LCAxMTMzMzQsIAotICAgIDExMzM0MCwgMTEzMzQ1LCAxMTMzNTAsIDExMzM1NSwgMTEzMzYwLCAxMTMzNjYsIDExMzM3MiwgMTEzMzc3LCAxMTMzODIsIAotICAgIDExMzM4OCwgMTEzMzkzLCAxMTMzOTksIDExMzQwNSwgMTEzNDExLCAxMTM0MTcsIDExMzQyMywgMTEzNDI4LCAxMTM0MzQsIAotICAgIDExMzQ0MCwgMTEzNDQ2LCAxMTM0NTEsIDExMzQ1NywgMTEzNDYzLCAxMTM0NjksIDExMzQ3NCwgMTEzNDgwLCAxMTM0ODYsIAotICAgIDExMzQ5MSwgMTEzNDk2LCAxMTM1MDEsIDExMzUwNiwgMTEzNTEyLCAxMTM1MTgsIDExMzUyMywgMTEzNTI4LCAxMTM1MzQsIAotICAgIDExMzUzOSwgMTEzNTQ1LCAxMTM1NTEsIDExMzU1NywgMTEzNTYzLCAxMTM1NjksIDExMzU3MywgMTEzNTc4LCAxMTM1ODMsIAotICAgIDExMzU4OCwgMTEzNTkyLCAxMTM1OTcsIDExMzYwMiwgMTEzNjA3LCAxMTM2MTEsIDExMzYxNiwgMTEzNjIxLCAxMTM2MjUsIAotICAgIDExMzYyOSwgMTEzNjMzLCAxMTM2MzcsIDExMzY0MiwgMTEzNjQ3LCAxMTM2NTEsIDExMzY1NSwgMTEzNjYwLCAxMTM2NjQsIAotICAgIDExMzY2OSwgMTEzNjc0LCAxMTM2NzksIDExMzY4NCwgMTEzNjg5LCAxMTM2OTMsIDExMzY5OCwgMTEzNzAzLCAxMTM3MDgsIAotICAgIDExMzcxMiwgMTEzNzE3LCAxMTM3MjIsIDExMzcyNywgMTEzNzMxLCAxMTM3MzYsIDExMzc0MSwgMTEzNzQ1LCAxMTM3NDksIAotICAgIDExMzc1MywgMTEzNzU3LCAxMTM3NjIsIDExMzc2NywgMTEzNzcxLCAxMTM3NzUsIDExMzc4MCwgMTEzNzg0LCAxMTM3ODksIAotICAgIDExMzc5NCwgMTEzNzk5LCAxMTM4MDQsIDExMzgwOSwgMTEzODE0LCAxMTM4MjAsIDExMzgyNiwgMTEzODMyLCAxMTM4MzcsIAotICAgIDExMzg0MywgMTEzODQ5LCAxMTM4NTUsIDExMzg2MCwgMTEzODY2LCAxMTM4NzIsIDExMzg3NywgMTEzODgyLCAxMTM4ODcsIAotICAgIDExMzg5MiwgMTEzODk4LCAxMTM5MDQsIDExMzkwOSwgMTEzOTE0LCAxMTM5MjAsIDExMzkyNSwgMTEzOTMxLCAxMTM5MzcsIAotICAgIDExMzk0MywgMTEzOTQ5LCAxMTM5NTUsIDExMzk2MCwgMTEzOTY2LCAxMTM5NzIsIDExMzk3OCwgMTEzOTgzLCAxMTM5ODksIAotICAgIDExMzk5NSwgMTE0MDAxLCAxMTQwMDYsIDExNDAxMiwgMTE0MDE4LCAxMTQwMjMsIDExNDAyOCwgMTE0MDMzLCAxMTQwMzgsIAotICAgIDExNDA0NCwgMTE0MDUwLCAxMTQwNTUsIDExNDA2MCwgMTE0MDY2LCAxMTQwNzEsIDExNDA3NywgMTE0MDgzLCAxMTQwODksIAotICAgIDExNDA5NSwgMTE0MTAxLCAxMTQxMDYsIDExNDExMiwgMTE0MTE4LCAxMTQxMjQsIDExNDEyOSwgMTE0MTM1LCAxMTQxNDEsIAotICAgIDExNDE0NywgMTE0MTUyLCAxMTQxNTgsIDExNDE2NCwgMTE0MTY5LCAxMTQxNzQsIDExNDE3OSwgMTE0MTg0LCAxMTQxOTAsIAotICAgIDExNDE5NiwgMTE0MjAxLCAxMTQyMDYsIDExNDIxMiwgMTE0MjE3LCAxMTQyMjMsIDExNDIyOSwgMTE0MjM1LCAxMTQyNDEsIAotICAgIDExNDI0NywgMTE0MjUyLCAxMTQyNTgsIDExNDI2NCwgMTE0MjcwLCAxMTQyNzUsIDExNDI4MSwgMTE0Mjg3LCAxMTQyOTMsIAotICAgIDExNDI5OCwgMTE0MzA0LCAxMTQzMTAsIDExNDMxNSwgMTE0MzIwLCAxMTQzMjUsIDExNDMzMCwgMTE0MzM2LCAxMTQzNDIsIAotICAgIDExNDM0NywgMTE0MzUyLCAxMTQzNTgsIDExNDM2MywgMTE0MzY5LCAxMTQzNzUsIDExNDM4MSwgMTE0Mzg3LCAxMTQzOTMsIAotICAgIDExNDM5OSwgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI2LCAxMTQ0MzMsIDExNDQ0MCwgMTE0NDQ3LCAxMTQ0NTMsIAotICAgIDExNDQ2MCwgMTE0NDY3LCAxMTQ0NzMsIDExNDQ3OSwgMTE0NDg1LCAxMTQ0OTEsIDExNDQ5OCwgMTE0NTA1LCAxMTQ1MTEsIAotICAgIDExNDUxNywgMTE0NTI0LCAxMTQ1MzAsIDExNDUzNywgMTE0NTQ0LCAxMTQ1NTEsIDExNDU1OCwgMTE0NTY1LCAxMTQ1NzEsIAotICAgIDExNDU3OCwgMTE0NTg1LCAxMTQ1OTIsIDExNDU5OCwgMTE0NjA1LCAxMTQ2MTIsIDExNDYxOSwgMTE0NjI1LCAxMTQ2MzIsIAotICAgIDExNDYzOSwgMTE0NjQ1LCAxMTQ2NTEsIDExNDY1NywgMTE0NjYzLCAxMTQ2NzAsIDExNDY3NywgMTE0NjgzLCAxMTQ2ODksIAotICAgIDExNDY5NiwgMTE0NzAyLCAxMTQ3MDksIDExNDcxNiwgMTE0NzIzLCAxMTQ3MzAsIDExNDczNywgMTE0NzQyLCAxMTQ3NDgsIAotICAgIDExNDc1NCwgMTE0NzYwLCAxMTQ3NjUsIDExNDc3MSwgMTE0Nzc3LCAxMTQ3ODMsIDExNDc4OCwgMTE0Nzk0LCAxMTQ4MDAsIAotICAgIDExNDgwNSwgMTE0ODEwLCAxMTQ4MTUsIDExNDgyMCwgMTE0ODI2LCAxMTQ4MzIsIDExNDgzNywgMTE0ODQyLCAxMTQ4NDgsIAotICAgIDExNDg1MywgMTE0ODU5LCAxMTQ4NjUsIDExNDg3MSwgMTE0ODc3LCAxMTQ4ODMsIDExNDg4OCwgMTE0ODk0LCAxMTQ5MDAsIAotICAgIDExNDkwNiwgMTE0OTExLCAxMTQ5MTcsIDExNDkyMywgMTE0OTI5LCAxMTQ5MzQsIDExNDk0MCwgMTE0OTQ2LCAxMTQ5NTEsIAotICAgIDExNDk1NiwgMTE0OTYxLCAxMTQ5NjYsIDExNDk3MiwgMTE0OTc4LCAxMTQ5ODMsIDExNDk4OCwgMTE0OTk0LCAxMTQ5OTksIAotICAgIDExNTAwNSwgMTE1MDExLCAxMTUwMTcsIDExNTAyMywgMTE1MDI5LCAxMTUwMzUsIDAsIDAsIDExNTA0MiwgMTE1MDQ3LCAKLSAgICAxMTUwNTIsIDExNTA1NywgMTE1MDYyLCAxMTUwNjcsIDExNTA3MiwgMTE1MDc3LCAxMTUwODIsIDExNTA4NywgMTE1MDkyLCAKLSAgICAxMTUwOTcsIDExNTEwMiwgMTE1MTA3LCAxMTUxMTIsIDExNTExNywgMTE1MTIyLCAxMTUxMjcsIDExNTEzMywgMTE1MTM4LCAKLSAgICAxMTUxNDMsIDExNTE0OCwgMTE1MTUzLCAxMTUxNTgsIDExNTE2MywgMTE1MTY4LCAxMTUxNzIsIDExNTE3NywgMTE1MTgyLCAKLSAgICAxMTUxODcsIDExNTE5MiwgMTE1MTk3LCAxMTUyMDIsIDExNTIwNywgMTE1MjEyLCAxMTUyMTcsIDExNTIyMiwgMTE1MjI3LCAKLSAgICAxMTUyMzIsIDExNTIzNywgMTE1MjQyLCAxMTUyNDcsIDExNTI1MiwgMTE1MjU3LCAxMTUyNjMsIDExNTI2OCwgMTE1MjczLCAKLSAgICAxMTUyNzgsIDExNTI4MywgMTE1Mjg4LCAxMTUyOTMsIDExNTI5OCwgMTE1MzA0LCAxMTUzMDksIDExNTMxNCwgMTE1MzE5LCAKLSAgICAxMTUzMjQsIDExNTMyOSwgMTE1MzM0LCAxMTUzMzksIDExNTM0NCwgMTE1MzQ5LCAxMTUzNTQsIDExNTM1OSwgMTE1MzY0LCAKLSAgICAxMTUzNjksIDExNTM3NCwgMTE1Mzc5LCAxMTUzODQsIDExNTM4OSwgMTE1Mzk0LCAxMTUzOTksIDExNTQwNCwgMTE1NDA5LCAKLSAgICAxMTU0MTQsIDExNTQxOSwgMTE1NDI1LCAxMTU0MzAsIDExNTQzNSwgMTE1NDQwLCAxMTU0NDUsIDExNTQ1MCwgMTE1NDU1LCAKLSAgICAxMTU0NjAsIDExNTQ2NCwgMTE1NDY5LCAxMTU0NzQsIDExNTQ3OSwgMTE1NDg0LCAxMTU0ODksIDExNTQ5NCwgMTE1NDk5LCAKLSAgICAxMTU1MDQsIDExNTUwOSwgMTE1NTE0LCAxMTU1MTksIDExNTUyNCwgMTE1NTI5LCAxMTU1MzQsIDExNTUzOSwgMTE1NTQ0LCAKLSAgICAxMTU1NDksIDExNTU1NSwgMTE1NTYwLCAxMTU1NjUsIDExNTU3MCwgMTE1NTc1LCAxMTU1ODAsIDExNTU4NSwgMTE1NTkwLCAKLSAgICAxMTU1OTYsIDExNTYwMSwgMTE1NjA2LCAxMTU2MTEsIDExNTYxNiwgMTE1NjIxLCAxMTU2MjYsIDExNTYzMiwgMTE1NjM4LCAKLSAgICAxMTU2NDQsIDExNTY1MCwgMTE1NjU2LCAxMTU2NjIsIDExNTY2OCwgMTE1Njc0LCAxMTU2ODAsIDExNTY4NiwgMTE1NjkyLCAKLSAgICAxMTU2OTgsIDExNTcwNCwgMTE1NzEwLCAxMTU3MTYsIDExNTcyMiwgMTE1NzI4LCAxMTU3MzUsIDExNTc0MSwgMTE1NzQ3LCAKLSAgICAxMTU3NTMsIDExNTc1OSwgMTE1NzY1LCAxMTU3NzEsIDExNTc3NywgMTE1NzgyLCAxMTU3ODgsIDExNTc5NCwgMTE1ODAwLCAKLSAgICAxMTU4MDYsIDExNTgxMiwgMTE1ODE4LCAxMTU4MjQsIDExNTgzMCwgMTE1ODM2LCAxMTU4NDIsIDExNTg0OCwgMTE1ODU0LCAKLSAgICAxMTU4NjAsIDExNTg2NiwgMTE1ODcyLCAxMTU4NzgsIDExNTg4NCwgMTE1ODkxLCAxMTU4OTcsIDExNTkwMywgMTE1OTA5LCAKLSAgICAxMTU5MTUsIDExNTkyMSwgMTE1OTI3LCAxMTU5MzMsIDExNTk0MCwgMTE1OTQ2LCAxMTU5NTIsIDExNTk1OCwgMTE1OTY0LCAKLSAgICAxMTU5NzAsIDExNTk3NiwgMTE1OTgyLCAxMTU5ODgsIDExNTk5NCwgMTE2MDAwLCAxMTYwMDYsIDExNjAxMiwgMTE2MDE4LCAKLSAgICAxMTYwMjQsIDExNjAzMCwgMTE2MDM2LCAxMTYwNDIsIDExNjA0OCwgMTE2MDU0LCAxMTYwNjAsIDExNjA2NiwgMTE2MDcyLCAKLSAgICAxMTYwNzgsIDExNjA4NSwgMTE2MDkxLCAxMTYwOTcsIDExNjEwMywgMTE2MTA5LCAxMTYxMTUsIDExNjEyMSwgMTE2MTI3LCAKLSAgICAxMTYxMzIsIDExNjEzOCwgMTE2MTQ0LCAxMTYxNTAsIDExNjE1NiwgMTE2MTYyLCAxMTYxNjgsIDExNjE3NCwgMTE2MTgwLCAKLSAgICAxMTYxODYsIDExNjE5MiwgMTE2MTk4LCAxMTYyMDQsIDExNjIxMCwgMTE2MjE2LCAxMTYyMjIsIDExNjIyOCwgMTE2MjM0LCAKLSAgICAxMTYyNDEsIDExNjI0NywgMTE2MjUzLCAxMTYyNTksIDExNjI2NSwgMTE2MjcxLCAxMTYyNzcsIDExNjI4MywgMTE2MjkwLCAKLSAgICAxMTYyOTYsIDExNjMwMiwgMTE2MzA4LCAxMTYzMTQsIDExNjMyMCwgMTE2MzI2LCAxMTYzMzMsIDExNjM0MCwgMTE2MzQ3LCAKLSAgICAxMTYzNTQsIDExNjM2MSwgMTE2MzY4LCAxMTYzNzUsIDExNjM4MiwgMTE2Mzg5LCAxMTYzOTYsIDExNjQwMywgMTE2NDEwLCAKLSAgICAxMTY0MTcsIDExNjQyNCwgMTE2NDMxLCAxMTY0MzgsIDExNjQ0NSwgMTE2NDUzLCAxMTY0NjAsIDExNjQ2NywgMTE2NDc0LCAKLSAgICAxMTY0ODEsIDExNjQ4OCwgMTE2NDk1LCAxMTY1MDIsIDExNjUwOCwgMTE2NTE1LCAxMTY1MjIsIDExNjUyOSwgMTE2NTM2LCAKLSAgICAxMTY1NDMsIDExNjU1MCwgMTE2NTU3LCAxMTY1NjQsIDExNjU3MSwgMTE2NTc4LCAxMTY1ODUsIDExNjU5MiwgMTE2NTk5LCAKLSAgICAxMTY2MDYsIDExNjYxMywgMTE2NjIwLCAxMTY2MjcsIDExNjYzNSwgMTE2NjQyLCAxMTY2NDksIDExNjY1NiwgMTE2NjYzLCAKLSAgICAxMTY2NzAsIDExNjY3NywgMTE2Njg0LCAxMTY2OTIsIDExNjY5OSwgMTE2NzA2LCAxMTY3MTMsIDExNjcyMCwgMTE2NzI3LCAKLSAgICAxMTY3MzQsIDExNjczOSwgMCwgMCwgMTE2NzQ0LCAxMTY3NDksIDExNjc1MywgMTE2NzU3LCAxMTY3NjEsIDExNjc2NSwgCi0gICAgMTE2NzY5LCAxMTY3NzMsIDExNjc3NywgMTE2NzgxLCAxMTY3ODUsIDExNjc5MCwgMTE2Nzk0LCAxMTY3OTgsIDExNjgwMiwgCi0gICAgMTE2ODA2LCAxMTY4MTAsIDExNjgxNCwgMTE2ODE4LCAxMTY4MjIsIDExNjgyNiwgMTE2ODMxLCAxMTY4MzUsIDExNjgzOSwgCi0gICAgMTE2ODQzLCAxMTY4NDcsIDExNjg1MSwgMTE2ODU1LCAxMTY4NTksIDExNjg2MywgMTE2ODY3LCAxMTY4NzMsIDExNjg3OCwgCi0gICAgMTE2ODgzLCAxMTY4ODgsIDExNjg5MywgMTE2ODk4LCAxMTY5MDMsIDExNjkwOCwgMTE2OTEzLCAxMTY5MTgsIDExNjkyNCwgCi0gICAgMTE2OTI5LCAxMTY5MzQsIDExNjkzOSwgMTE2OTQ0LCAxMTY5NDksIDExNjk1NCwgMTE2OTU5LCAxMTY5NjQsIDExNjk2OSwgCi0gICAgMTE2OTc2LCAxMTY5ODMsIDExNjk5MCwgMTE2OTk3LCAxMTcwMDQsIDExNzAxMSwgMTE3MDE3LCAxMTcwMjQsIDExNzAzMSwgCi0gICAgMTE3MDM4LCAxMTcwNDYsIDExNzA1NCwgMTE3MDYyLCAxMTcwNzAsIDExNzA3OCwgMTE3MDg2LCAxMTcwOTMsIDExNzEwMCwgCi0gICAgMTE3MTA3LCAxMTcxMTUsIDExNzEyMywgMTE3MTMxLCAxMTcxMzksIDExNzE0NywgMTE3MTU1LCAxMTcxNjIsIDExNzE2OSwgCi0gICAgMTE3MTc2LCAxMTcxODQsIDExNzE5MiwgMTE3MjAwLCAxMTcyMDgsIDExNzIxNiwgMTE3MjI0LCAxMTcyMjksIDExNzIzNCwgCi0gICAgMTE3MjM5LCAxMTcyNDQsIDExNzI0OSwgMTE3MjU0LCAxMTcyNTksIDExNzI2NCwgMTE3MjY5LCAwLCAwLCAwLCAwLCAKLSAgICAxMTcyNzQsIDExNzI3OSwgMTE3MjgzLCAxMTcyODcsIDExNzI5MSwgMTE3Mjk1LCAxMTcyOTksIDExNzMwMywgMTE3MzA3LCAKLSAgICAxMTczMTEsIDExNzMxNSwgMTE3MzE5LCAxMTczMjMsIDExNzMyNywgMTE3MzMxLCAxMTczMzUsIDExNzMzOSwgMTE3MzQzLCAKLSAgICAxMTczNDcsIDExNzM1MSwgMTE3MzU1LCAxMTczNTksIDExNzM2MywgMTE3MzY3LCAxMTczNzEsIDExNzM3NSwgMTE3Mzc5LCAKLSAgICAxMTczODMsIDExNzM4NywgMTE3MzkxLCAxMTczOTUsIDExNzM5OSwgMTE3NDAzLCAxMTc0MDcsIDExNzQxMSwgMTE3NDE1LCAKLSAgICAxMTc0MTksIDExNzQyMywgMTE3NDI3LCAxMTc0MzEsIDExNzQzNSwgMTE3NDM5LCAxMTc0NDMsIDExNzQ0NywgMTE3NDUxLCAKLSAgICAxMTc0NTUsIDExNzQ1OSwgMTE3NDYzLCAxMTc0NjcsIDExNzQ3MSwgMTE3NDc1LCAxMTc0ODAsIDExNzQ4NCwgMTE3NDg4LCAKLSAgICAxMTc0OTIsIDExNzQ5NiwgMTE3NTAwLCAxMTc1MDQsIDExNzUwOCwgMTE3NTEyLCAxMTc1MTYsIDExNzUyMCwgMTE3NTI0LCAKLSAgICAxMTc1MjgsIDExNzUzMiwgMTE3NTM2LCAxMTc1NDAsIDExNzU0NCwgMTE3NTQ4LCAxMTc1NTIsIDExNzU1NiwgMTE3NTYwLCAKLSAgICAxMTc1NjQsIDExNzU2OCwgMTE3NTcyLCAxMTc1NzYsIDExNzU4MCwgMTE3NTg0LCAxMTc1ODgsIDExNzU5MiwgMTE3NTk2LCAKLSAgICAxMTc2MDAsIDExNzYwNCwgMTE3NjA4LCAxMTc2MTIsIDExNzYxNiwgMTE3NjIwLCAxMTc2MjQsIDExNzYyOCwgMTE3NjMyLCAKLSAgICAxMTc2MzYsIDExNzY0MCwgMTE3NjQ0LCAxMTc2NDgsIDExNzY1MiwgMTE3NjU2LCAxMTc2NjAsIDExNzY2NCwgMTE3NjY4LCAKLSAgICAxMTc2NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNzY3NiwgMTE3NjgyLCAxMTc2OTEsIAotICAgIDExNzY5OSwgMTE3NzA3LCAxMTc3MTYsIDExNzcyNSwgMTE3NzM0LCAxMTc3NDMsIDExNzc1MiwgMTE3NzYxLCAxMTc3NzAsIAotICAgIDExNzc3OSwgMTE3Nzg4LCAxMTc3OTcsIDAsIDAsIDExNzgwNiwgMTE3ODE1LCAxMTc4MjMsIDExNzgzMSwgMTE3ODQwLCAKLSAgICAxMTc4NDksIDExNzg1OCwgMTE3ODY3LCAxMTc4NzYsIDExNzg4NSwgMTE3ODk0LCAxMTc5MDMsIDExNzkxMiwgMTE3OTIxLCAKLSAgICAwLCAwLCAxMTc5MzAsIDExNzkzOSwgMTE3OTQ3LCAxMTc5NTUsIDExNzk2NCwgMTE3OTczLCAxMTc5ODIsIDExNzk5MSwgCi0gICAgMTE4MDAwLCAxMTgwMDksIDExODAxOCwgMTE4MDI3LCAxMTgwMzYsIDExODA0NSwgMTE4MDU0LCAwLCAxMTgwNjEsIAotICAgIDExODA3MCwgMTE4MDc4LCAxMTgwODYsIDExODA5NSwgMTE4MTA0LCAxMTgxMTMsIDExODEyMiwgMTE4MTMxLCAxMTgxNDAsIAotICAgIDExODE0OSwgMTE4MTU4LCAxMTgxNjcsIDExODE3NiwgMTE4MTg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTgxOTIsIAotICAgIDExODE5OSwgMTE4MjA0LCAxMTgyMDgsIDExODIxMiwgMTE4MjE2LCAxMTgyMjEsIDExODIyNiwgMTE4MjMxLCAxMTgyMzYsIAotICAgIDExODI0MSwgMCwgMCwgMCwgMCwgMCwgMTE4MjQ2LCAxMTgyNTEsIDExODI1NywgMTE4MjYzLCAxMTgyNjksIDExODI3NCwgCi0gICAgMTE4MjgwLCAxMTgyODYsIDExODI5MiwgMTE4Mjk3LCAxMTgzMDMsIDExODMwOSwgMTE4MzE0LCAxMTgzMTksIDExODMyNCwgCi0gICAgMTE4MzI5LCAxMTgzMzUsIDExODM0MSwgMTE4MzQ2LCAxMTgzNTEsIDExODM1NywgMTE4MzYyLCAxMTgzNjgsIDExODM3NCwgCi0gICAgMTE4MzgwLCAxMTgzODYsIDExODM5MiwgMTE4NDAyLCAxMTg0MDksIDExODQxNSwgMTE4NDE4LCAwLCAxMTg0MjEsIAotICAgIDExODQyNiwgMTE4NDMyLCAxMTg0MzgsIDExODQ0NCwgMTE4NDQ5LCAxMTg0NTUsIDExODQ2MSwgMTE4NDY3LCAxMTg0NzIsIAotICAgIDExODQ3OCwgMTE4NDg0LCAxMTg0ODksIDExODQ5NCwgMTE4NDk5LCAxMTg1MDQsIDExODUxMCwgMTE4NTE2LCAxMTg1MjEsIAotICAgIDExODUyNiwgMTE4NTMyLCAxMTg1MzcsIDExODU0MywgMTE4NTQ5LCAxMTg1NTUsIDExODU2MSwgMTE4NTY3LCAxMTg1NzAsIAotICAgIDExODU3MywgMTE4NTc2LCAxMTg1NzksIDExODU4MiwgMTE4NTg1LCAxMTg1OTEsIDExODU5OCwgMTE4NjA1LCAxMTg2MTIsIAotICAgIDExODYxOCwgMTE4NjI1LCAxMTg2MzIsIDExODYzOSwgMTE4NjQ1LCAxMTg2NTIsIDExODY1OSwgMTE4NjY1LCAxMTg2NzEsIAotICAgIDExODY3NywgMTE4NjgzLCAxMTg2OTAsIDExODY5NywgMTE4NzAzLCAxMTg3MDksIDExODcxNiwgMTE4NzIyLCAxMTg3MjksIAotICAgIDExODczNiwgMTE4NzQzLCAxMTg3NTAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODc1NywgMTE4NzYzLCAxMTg3NzAsIDExODc3NywgCi0gICAgMTE4Nzg0LCAxMTg3OTAsIDExODc5NywgMTE4ODA0LCAxMTg4MTEsIDExODgxNywgMTE4ODI0LCAxMTg4MzEsIDExODgzNywgCi0gICAgMTE4ODQzLCAxMTg4NDksIDExODg1NSwgMTE4ODYyLCAxMTg4NjksIDExODg3NSwgMTE4ODgxLCAxMTg4ODgsIDExODg5NCwgCi0gICAgMTE4OTAxLCAxMTg5MDgsIDExODkxNSwgMTE4OTIyLCAxMTg5MjksIDExODkzOCwgMTE4OTQyLCAxMTg5NDUsIDExODk0OSwgCi0gICAgMTE4OTUzLCAxMTg5NTcsIDExODk2MCwgMTE4OTYzLCAxMTg5NjYsIDExODk2OSwgMTE4OTcyLCAxMTg5NzUsIDExODk3OCwgCi0gICAgMTE4OTgxLCAxMTg5ODQsIDExODk5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4OTkzLCAxMTkwMDAsIDExOTAwOCwgMTE5MDE2LCAxMTkwMjQsIAotICAgIDExOTAzMSwgMTE5MDM5LCAxMTkwNDcsIDExOTA1NSwgMTE5MDYyLCAxMTkwNzAsIDExOTA3OCwgMTE5MDg1LCAxMTkwOTIsIAotICAgIDExOTA5OSwgMTE5MTA2LCAxMTkxMTQsIDExOTEyMiwgMTE5MTI5LCAxMTkxMzYsIDExOTE0NCwgMTE5MTUxLCAxMTkxNTksIAotICAgIDExOTE2NywgMTE5MTc1LCAxMTkxODMsIDExOTE5MSwgMTE5MTk1LCAxMTkxOTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDExOTIwMywgMTE5MjA5LCAxMTkyMTUsIDExOTIyMSwgMTE5MjI1LCAxMTkyMzEsIDExOTIzNywgCi0gICAgMTE5MjQzLCAxMTkyNDksIDExOTI1NSwgMTE5MjYxLCAxMTkyNjcsIDExOTI3MywgMTE5Mjc5LCAxMTkyODUsIDExOTI5MSwgCi0gICAgMTE5Mjk3LCAxMTkzMDMsIDExOTMwOSwgMTE5MzE1LCAxMTkzMjEsIDExOTMyNywgMTE5MzMzLCAxMTkzMzksIDExOTM0NSwgCi0gICAgMTE5MzUxLCAxMTkzNTcsIDExOTM2MywgMTE5MzY5LCAxMTkzNzUsIDExOTM4MSwgMTE5Mzg3LCAxMTkzOTMsIDExOTM5OSwgCi0gICAgMTE5NDA1LCAxMTk0MTEsIDExOTQxNywgMTE5NDIzLCAxMTk0MjksIDExOTQzNSwgMTE5NDQxLCAxMTk0NDcsIDExOTQ1MywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTE5NDU5LCAxMTk0NzAsIDExOTQ4MSwgMTE5NDkyLCAxMTk1MDMsIDExOTUxNCwgMTE5NTI1LCAKLSAgICAxMTk1MzYsIDExOTU0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE5NTU4LCAxMTk1NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExOTU2NiwgMTE5NTY4LCAxMTk1NzAsIAotICAgIDExOTU3NCwgMTE5NTc5LCAxMTk1ODQsIDExOTU4NiwgMTE5NTkyLCAxMTk1OTcsIDExOTU5OSwgMTE5NjA1LCAxMTk2MDksIAotICAgIDExOTYxMSwgMTE5NjE1LCAxMTk2MjEsIDExOTYyNywgMTE5NjMzLCAxMTk2MzgsIDExOTY0MiwgMTE5NjQ5LCAxMTk2NTYsIAotICAgIDExOTY2MywgMTE5NjY4LCAxMTk2NzUsIDExOTY4MiwgMTE5Njg5LCAxMTk2OTMsIDExOTY5OSwgMTE5NzA4LCAxMTk3MTcsIAotICAgIDExOTcyNCwgMTE5NzI5LCAxMTk3MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExOTczNywgMTE5NzM5LCAxMTk3NDEsIDExOTc0NSwgMTE5NzQ5LCAxMTk3NTMsIDAsIDExOTc1NSwgMTE5NzU3LCAKLSAgICAxMTk3NjEsIDExOTc2MywgMTE5NzY1LCAxMTk3NjcsIDExOTc2OSwgMTE5Nzc0LCAxMTk3NzksIDExOTc4MSwgMTE5Nzg3LCAKLSAgICAxMTk3OTEsIDExOTc5NSwgMTE5ODAzLCAxMTk4MDUsIDExOTgwNywgMTE5ODA5LCAxMTk4MTEsIDExOTgxMywgMTE5ODE1LCAKLSAgICAxMTk4MTcsIDExOTgxOSwgMTE5ODIxLCAxMTk4MjMsIDExOTgyNywgMTE5ODMxLCAxMTk4MzMsIDExOTgzNSwgMTE5ODM3LCAKLSAgICAxMTk4MzksIDExOTg0MSwgMTE5ODQ2LCAxMTk4NTIsIDExOTg1NiwgMTE5ODYwLCAxMTk4NjQsIDExOTg2OCwgMTE5ODczLCAKLSAgICAxMTk4NzcsIDExOTg3OSwgMTE5ODgxLCAxMTk4ODUsIDExOTg5MSwgMTE5ODkzLCAxMTk4OTUsIDExOTg5NywgMTE5OTAxLCAKLSAgICAxMTk5MTAsIDExOTkxNiwgMTE5OTIwLCAxMTk5MjQsIDExOTkyNiwgMTE5OTI4LCAxMTk5MzEsIDExOTkzMywgMTE5OTM1LCAKLSAgICAxMTk5MzcsIDExOTk0MSwgMTE5OTQzLCAxMTk5NDcsIDExOTk1MiwgMTE5OTU0LCAxMTk5NTksIDExOTk2NSwgMTE5OTcyLCAKLSAgICAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5NCwgMCwgMCwgMCwgMTE5OTk4LCAxMjAwMDAsIDEyMDAwNCwgCi0gICAgMTIwMDA4LCAxMjAwMTAsIDEyMDAxNCwgMTIwMDE4LCAxMjAwMjAsIDEyMDAyNCwgMTIwMDI2LCAxMjAwMzAsIDEyMDAzNCwgCi0gICAgMTIwMDM4LCAxMjAwNDIsIDEyMDA0NiwgMTIwMDUwLCAxMjAwNTQsIDEyMDA1OCwgMTIwMDY0LCAxMjAwNjgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDA3MiwgMTIwMDc2LCAxMjAwODAsIDEyMDA4NCwgMTIwMDkxLCAKLSAgICAxMjAwOTMsIDEyMDA5NywgMTIwMDk5LCAxMjAxMDEsIDEyMDEwNSwgMTIwMTA5LCAxMjAxMTMsIDEyMDExNSwgMTIwMTE5LCAKLSAgICAxMjAxMjMsIDEyMDEyNywgMTIwMTMxLCAxMjAxMzUsIDEyMDEzNywgMTIwMTQxLCAxMjAxNDMsIDEyMDE0OSwgMTIwMTUyLCAKLSAgICAxMjAxNTcsIDEyMDE1OSwgMTIwMTYxLCAxMjAxNjQsIDEyMDE2NiwgMTIwMTY4LCAxMjAxNzEsIDEyMDE3OCwgMTIwMTg1LCAKLSAgICAxMjAxOTIsIDEyMDE5NywgMTIwMjAxLCAxMjAyMDMsIDEyMDIwNSwgMCwgMTIwMjA3LCAxMjAyMDksIDEyMDIxMywgCi0gICAgMTIwMjE3LCAxMjAyMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEyMDIyMywgMTIwMjI3LCAxMjAyMzIsIDEyMDIzNiwgMTIwMjQyLCAxMjAyNDgsIDEyMDI1MCwgMTIwMjUyLCAKLSAgICAxMjAyNTgsIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MCwgMTIwMjc0LCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjAyODgsIDEyMDI5MCwgMTIwMjkyLCAKLSAgICAxMjAyOTQsIDEyMDI5OCwgMTIwMzAwLCAxMjAzMDIsIDEyMDMwNCwgMTIwMzA2LCAxMjAzMDgsIDEyMDMxMCwgMTIwMzEyLCAKLSAgICAxMjAzMTQsIDEyMDMxNiwgMTIwMzE4LCAxMjAzMjAsIDEyMDMyMiwgMTIwMzI0LCAxMjAzMjYsIDEyMDMyOCwgMTIwMzMwLCAKLSAgICAxMjAzMzIsIDEyMDMzNCwgMTIwMzM2LCAxMjAzMzgsIDEyMDM0MCwgMTIwMzQyLCAxMjAzNDYsIDEyMDM0OCwgMTIwMzUwLCAKLSAgICAxMjAzNTIsIDEyMDM1NiwgMTIwMzU4LCAxMjAzNjIsIDEyMDM2NCwgMTIwMzY2LCAxMjAzNzAsIDEyMDM3NCwgMTIwMzgwLCAKLSAgICAxMjAzODIsIDEyMDM4NCwgMTIwMzg2LCAxMjAzODgsIDEyMDM5MiwgMTIwMzk2LCAxMjAzOTgsIDEyMDQwMiwgMTIwNDA2LCAKLSAgICAxMjA0MTAsIDEyMDQxNCwgMTIwNDE4LCAxMjA0MjIsIDEyMDQyNiwgMTIwNDMwLCAxMjA0MzQsIDEyMDQzOCwgMTIwNDQyLCAKLSAgICAxMjA0NDYsIDEyMDQ1MCwgMTIwNDU0LCAxMjA0NTgsIDEyMDQ2MiwgMTIwNDY2LCAwLCAxMjA0NzAsIDAsIDEyMDQ3MiwgCi0gICAgMTIwNDc0LCAxMjA0NzYsIDEyMDQ3OCwgMTIwNDgwLCAxMjA0ODgsIDEyMDQ5NiwgMTIwNTA0LCAxMjA1MTIsIDEyMDUxNywgCi0gICAgMTIwNTIyLCAxMjA1MjcsIDEyMDUzMSwgMTIwNTM1LCAxMjA1NDAsIDEyMDU0NSwgMTIwNTQ3LCAxMjA1NTEsIDEyMDU1MywgCi0gICAgMTIwNTU1LCAxMjA1NTcsIDEyMDU1OSwgMTIwNTYxLCAxMjA1NjMsIDEyMDU2NSwgMTIwNTY5LCAxMjA1NzEsIDEyMDU3MywgCi0gICAgMTIwNTc1LCAxMjA1NzksIDEyMDU4MywgMTIwNTg3LCAxMjA1OTEsIDEyMDU5NSwgMTIwNTk3LCAxMjA2MDMsIDEyMDYwOSwgCi0gICAgMTIwNjExLCAxMjA2MTMsIDEyMDYxNSwgMTIwNjE3LCAxMjA2MTksIDEyMDYyOCwgMTIwNjM1LCAxMjA2NDIsIDEyMDY0NiwgCi0gICAgMTIwNjUzLCAxMjA2NTgsIDEyMDY2NSwgMTIwNjc0LCAxMjA2NzksIDEyMDY4MywgMTIwNjg3LCAxMjA2ODksIDEyMDY5MywgCi0gICAgMTIwNjk1LCAxMjA2OTksIDEyMDcwMywgMTIwNzA1LCAxMjA3MDksIDEyMDcxMywgMTIwNzE3LCAxMjA3MTksIDEyMDcyMSwgCi0gICAgMTIwNzI3LCAxMjA3MjksIDEyMDczMSwgMTIwNzMzLCAxMjA3MzcsIDEyMDc0MSwgMTIwNzQzLCAxMjA3NDcsIDEyMDc0OSwgCi0gICAgMTIwNzUxLCAxMjA3NTQsIDEyMDc1OCwgMTIwNzYwLCAxMjA3NjQsIDEyMDc2NiwgMTIwNzY4LCAxMjA3NzMsIDEyMDc3NSwgCi0gICAgMTIwNzc5LCAxMjA3ODMsIDEyMDc4NiwgMTIwNzkwLCAxMjA3OTQsIDEyMDc5OCwgMTIwODAyLCAxMjA4MDYsIDEyMDgxMCwgCi0gICAgMTIwODE0LCAxMjA4MTksIDEyMDgyMywgMTIwODI3LCAxMjA4MzYsIDEyMDg0MSwgMTIwODQ0LCAxMjA4NDYsIDEyMDg0OSwgCi0gICAgMTIwODUyLCAxMjA4NTcsIDEyMDg1OSwgMTIwODYyLCAxMjA4NjcsIDEyMDg3MSwgMTIwODc0LCAxMjA4NzgsIDEyMDg4MiwgCi0gICAgMTIwODg1LCAxMjA4OTAsIDEyMDg5NCwgMTIwODk4LCAxMjA5MDIsIDEyMDkwNiwgMTIwOTEyLCAxMjA5MTgsIDEyMDkyNCwgCi0gICAgMTIwOTMwLCAxMjA5MzUsIDEyMDk0NiwgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NCwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgCi0gICAgMTIwOTY2LCAxMjA5NzAsIDEyMDk3NiwgMTIwOTgxLCAxMjA5ODcsIDEyMDk4OSwgMTIwOTkzLCAxMjA5OTcsIDEyMTAwNCwgCi0gICAgMTIxMDExLCAxMjEwMTUsIDEyMTAxNywgMTIxMDE5LCAxMjEwMjMsIDEyMTAyNSwgMTIxMDI5LCAxMjEwMzMsIDEyMTAzNywgCi0gICAgMTIxMDM5LCAxMjEwNDEsIDEyMTA0OCwgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MCwgCi0gICAgMTIxMDc0LCAxMjEwNzYsIDEyMTA3OCwgMTIxMDgyLCAxMjEwODQsIDEyMTA4OCwgMTIxMDkyLCAxMjEwOTgsIDEyMTEwMiwgCi0gICAgMTIxMTA2LCAxMjExMTAsIDEyMTExMiwgMTIxMTE1LCAxMjExMTksIDEyMTEyNiwgMTIxMTM1LCAxMjExNDQsIDEyMTE1MywgCi0gICAgMTIxMTYyLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcwLCAxMjExNzQsIDEyMTE4NSwgMTIxMTg5LCAxMjExOTUsIDEyMTIwMSwgCi0gICAgMTIxMjA2LCAwLCAxMjEyMDgsIDEyMTIxMiwgMTIxMjE0LCAxMjEyMTYsIDAsIDAsIDAsIDEyMTIxOCwgMTIxMjIzLCAKLSAgICAxMjEyMzQsIDEyMTI1MCwgMTIxMjYzLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyOTAsIDEyMTI5MiwgMTIxMzAwLCAKLSAgICAxMjEzMDgsIDEyMTMxMCwgMTIxMzE0LCAxMjEzMjAsIDEyMTMyNiwgMTIxMzMzLCAxMjEzNDAsIDEyMTM0MiwgMTIxMzQ0LCAKLSAgICAxMjEzNDgsIDEyMTM1MCwgMTIxMzU2LCAxMjEzNTgsIDEyMTM2MSwgMTIxMzY1LCAxMjEzNzEsIDEyMTM3NywgMTIxMzg4LCAKLSAgICAxMjEzOTQsIDEyMTQwMSwgMTIxNDA5LCAxMjE0MTMsIDEyMTQyMSwgMTIxNDI5LCAxMjE0MzUsIDEyMTQ0MSwgMTIxNDQ4LCAKLSAgICAxMjE0NTAsIDEyMTQ1NCwgMTIxNDU2LCAxMjE0NTgsIDEyMTQ2MywgMTIxNDY1LCAxMjE0NjcsIDEyMTQ2OSwgMTIxNDcxLCAKLSAgICAxMjE0NzUsIDEyMTQ4NiwgMTIxNDkyLCAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MTAsIDEyMTUxNiwgMTIxNTIyLCAKLSAgICAxMjE1MjgsIDEyMTUzMywgMTIxNTM4LCAxMjE1NDQsIDEyMTU1MCwgMTIxNTU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjE1NjQsIDEyMTU3MSwgMTIxNTc4LCAxMjE1ODUsIDEyMTU5MywgCi0gICAgMTIxNjAxLCAxMjE2MDksIDEyMTYxNywgMTIxNjI1LCAxMjE2MzMsIDEyMTY0MSwgMTIxNjQ5LCAxMjE2NTcsIDEyMTY2MywgCi0gICAgMTIxNjY5LCAxMjE2NzUsIDEyMTY4MSwgMTIxNjg3LCAxMjE2OTMsIDEyMTY5OSwgMTIxNzA1LCAxMjE3MTEsIDEyMTcxNywgCi0gICAgMTIxNzIzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTA3MTAsIDExMDcxNSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTIxNzI5LCAxMjE3MzMsIDEyMTczNywgMTIxNzQyLCAxMjE3NDcsIDAsIDEyMTc0OSwgMTIxNzU4LCAKLSAgICAxMjE3NjYsIDEyMTc3NSwgMTIxNzg5LCAxMjE4MDMsIDEyMTgxNywgMTIxODI0LCAxMjE4MzEsIDEyMTgzNSwgMTIxODQ0LCAKLSAgICAxMjE4NTIsIDEyMTg1NiwgMTIxODY1LCAxMjE4NzIsIDEyMTg3NiwgMCwgMTIxODgwLCAxMjE4ODQsIDEyMTg5MSwgMCwgCi0gICAgMTIxODk1LCAwLCAxMjE4OTksIDAsIDEyMTkwNiwgMCwgMTIxOTE1LCAxMjE5MjcsIDEyMTkzOSwgMCwgMTIxOTQzLCAKLSAgICAxMjE5NDcsIDEyMTk1MSwgMTIxOTU1LCAxMjE5NTksIDEyMTk2NywgMCwgMCwgMTIxOTc1LCAxMjE5NzksIDEyMTk4MywgCi0gICAgMTIxOTg3LCAwLCAxMjE5OTEsIDAsIDAsIDEyMTk5NywgMTIyMDA5LCAxMjIwMTcsIDEyMjAyMSwgMCwgMTIyMDI1LCAKLSAgICAxMjIwMjksIDEyMjAzNSwgMTIyMDQyLCAxMjIwNTMsIDEyMjA2MywgMTIyMDc0LCAxMjIwODUsIDEyMjA5NCwgMTIyMTA1LCAKLSAgICAxMjIxMTEsIDEyMjExNywgMCwgMCwgMCwgMCwgMTIyMTIzLCAxMjIxMzIsIDEyMjEzOSwgMTIyMTQ1LCAxMjIxNDksIAotICAgIDEyMjE1MywgMTIyMTU3LCAxMjIxNjYsIDEyMjE3OCwgMTIyMTgyLCAxMjIxODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExMDcyMSwgMTEwNzI2LCAxMTA3MzEsIDExMDczNiwgMTEwNzQzLCAxMTA3NTAsIDExMDc1NywgMTEwNzY0LCAxMTA3NjksIAorICAgIDExMDc3NCwgMTEwNzc5LCAxMTA3ODQsIDExMDc5MSwgMTEwNzk2LCAxMTA4MDMsIDExMDgxMCwgMTEwODE1LCAxMTA4MjAsIAorICAgIDExMDgyNSwgMTEwODMyLCAxMTA4MzcsIDExMDg0MiwgMTEwODQ5LCAxMTA4NTYsIDExMDg2MSwgMTEwODY2LCAxMTA4NzEsIAorICAgIDExMDg3OCwgMTEwODg1LCAxMTA4OTIsIDExMDg5NywgMTEwOTAyLCAxMTA5MDksIDExMDkxNiwgMTEwOTIzLCAxMTA5MzAsIAorICAgIDExMDkzNSwgMTEwOTQwLCAxMTA5NDUsIDExMDk1MiwgMTEwOTU3LCAxMTA5NjIsIDExMDk2NywgMTEwOTc0LCAxMTA5ODMsIAorICAgIDExMDk5MCwgMTEwOTk1LCAxMTEwMDAsIDExMTAwNSwgMTExMDEwLCAxMTEwMTUsIDExMTAyMCwgMTExMDI5LCAxMTEwMzYsIAorICAgIDExMTA0MSwgMTExMDQ4LCAxMTEwNTUsIDExMTA2MCwgMTExMDY1LCAxMTEwNzAsIDExMTA3NywgMTExMDgyLCAxMTEwODksIAorICAgIDExMTA5NiwgMTExMTAxLCAxMTExMDYsIDExMTExMSwgMTExMTE4LCAxMTExMjUsIDExMTEzMCwgMTExMTM1LCAxMTExNDIsIAorICAgIDExMTE0OSwgMTExMTU2LCAxMTExNjEsIDExMTE2NiwgMTExMTcxLCAxMTExNzYsIDExMTE4MywgMTExMTkyLCAxMTEyMDEsIAorICAgIDExMTIwNiwgMTExMjEzLCAxMTEyMjIsIDExMTIyNywgMTExMjMyLCAxMTEyMzcsIDExMTI0MiwgMTExMjQ5LCAxMTEyNTYsIAorICAgIDExMTI2MywgMTExMjcwLCAxMTEyNzUsIDExMTI4MCwgMTExMjg1LCAxMTEyOTIsIDExMTI5OSwgMTExMzA2LCAxMTEzMTEsIAorICAgIDExMTMxNiwgMTExMzIzLCAxMTEzMjgsIDExMTMzNSwgMTExMzQwLCAxMTEzNDcsIDExMTM1MiwgMTExMzU5LCAxMTEzNjYsIAorICAgIDExMTM3MSwgMTExMzc2LCAxMTEzODEsIDExMTM4NiwgMTExMzkxLCAxMTEzOTYsIDExMTQwMSwgMTExNDA2LCAxMTE0MTEsIAorICAgIDExMTQxOCwgMTExNDI1LCAxMTE0MzIsIDExMTQzOSwgMTExNDQ2LCAxMTE0NTUsIDExMTQ2MCwgMTExNDY1LCAxMTE0NzIsIAorICAgIDExMTQ3OSwgMTExNDg0LCAxMTE0OTEsIDExMTQ5OCwgMTExNTA1LCAxMTE1MTIsIDExMTUxOSwgMTExNTI2LCAxMTE1MzEsIAorICAgIDExMTUzNiwgMTExNTQxLCAxMTE1NDYsIDExMTU1MSwgMTExNTYwLCAxMTE1NjksIDExMTU3OCwgMTExNTg3LCAxMTE1OTYsIAorICAgIDExMTYwNSwgMTExNjE0LCAxMTE2MjMsIDExMTYyOCwgMTExNjM5LCAxMTE2NTAsIDExMTY1OSwgMTExNjY0LCAxMTE2NjksIAorICAgIDExMTY3NCwgMTExNjc5LCAxMTE2ODgsIDExMTY5NSwgMTExNzAyLCAxMTE3MDksIDExMTcxNiwgMTExNzIzLCAxMTE3MzAsIAorICAgIDExMTczOSwgMTExNzQ4LCAxMTE3NTksIDExMTc2OCwgMTExNzc5LCAxMTE3ODgsIDExMTc5NSwgMTExODA0LCAxMTE4MTUsIAorICAgIDExMTgyNCwgMTExODMzLCAxMTE4NDIsIDExMTg1MSwgMTExODU4LCAxMTE4NjUsIDExMTg3MiwgMTExODgxLCAxMTE4OTAsIAorICAgIDExMTkwMSwgMTExOTEwLCAxMTE5MTksIDExMTkzMCwgMTExOTM1LCAxMTE5NDAsIDExMTk1MSwgMTExOTU5LCAxMTE5NjgsIAorICAgIDExMTk3NywgMTExOTg2LCAxMTE5OTcsIDExMjAwNiwgMTEyMDE1LCAxMTIwMjYsIDExMjAzNywgMTEyMDQ4LCAxMTIwNTksIAorICAgIDExMjA3MCwgMTEyMDgxLCAxMTIwODgsIDExMjA5NSwgMTEyMTAyLCAxMTIxMDksIDExMjEyMCwgMTEyMTI5LCAxMTIxMzYsIAorICAgIDExMjE0MywgMTEyMTUwLCAxMTIxNjEsIDExMjE3MiwgMTEyMTgzLCAxMTIxOTQsIDExMjIwNSwgMTEyMjE2LCAxMTIyMjcsIAorICAgIDExMjIzOCwgMTEyMjQ1LCAxMTIyNTIsIDExMjI2MSwgMTEyMjcwLCAxMTIyNzcsIDExMjI4NCwgMTEyMjkxLCAxMTIzMDAsIAorICAgIDExMjMwOSwgMTEyMzE4LCAxMTIzMjUsIDExMjMzNCwgMTEyMzQzLCAxMTIzNTIsIDExMjM1OSwgMTEyMzY2LCAxMTIzNzEsIAorICAgIDExMjM3NywgMTEyMzg0LCAxMTIzOTEsIDExMjM5OCwgMTEyNDA1LCAxMTI0MTIsIDExMjQxOSwgMTEyNDI4LCAxMTI0MzcsIAorICAgIDExMjQ0NiwgMTEyNDU1LCAxMTI0NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMjQ3MSwgMTEyNDc3LCAKKyAgICAxMTI0ODIsIDExMjQ4NywgMTEyNDk0LCAxMTI1MDAsIDExMjUwNiwgMTEyNTEyLCAxMTI1MTgsIDExMjUyNCwgMTEyNTMwLCAKKyAgICAxMTI1MzYsIDExMjU0MCwgMTEyNTQ0LCAxMTI1NTAsIDExMjU1NiwgMTEyNTYyLCAxMTI1NjYsIDExMjU3MSwgMTEyNTc2LCAKKyAgICAxMTI1ODAsIDExMjU4NCwgMTEyNTg3LCAxMTI1OTMsIDExMjU5OSwgMTEyNjA1LCAxMTI2MTEsIDExMjYxNywgMTEyNjIzLCAKKyAgICAxMTI2MjksIDExMjYzNSwgMTEyNjQxLCAxMTI2NTEsIDExMjY2MSwgMTEyNjY3LCAxMTI2NzMsIDExMjY4MywgMTEyNjkzLCAKKyAgICAxMTI2OTksIDAsIDAsIDExMjcwNSwgMTEyNzEzLCAxMTI3MTgsIDExMjcyMywgMTEyNzI5LCAxMTI3MzUsIDExMjc0MSwgCisgICAgMTEyNzQ3LCAxMTI3NTMsIDExMjc1OSwgMTEyNzY2LCAxMTI3NzMsIDExMjc3OSwgMTEyNzg1LCAxMTI3OTEsIDExMjc5NywgCisgICAgMTEyODAzLCAxMTI4MDksIDExMjgxNSwgMTEyODIxLCAxMTI4MjYsIDExMjgzMiwgMTEyODM4LCAxMTI4NDQsIDExMjg1MCwgCisgICAgMTEyODU2LCAxMTI4NjUsIDExMjg3MSwgMTEyODc2LCAxMTI4ODQsIDExMjg5MSwgMTEyODk4LCAxMTI5MDcsIDExMjkxNiwgCisgICAgMTEyOTI1LCAxMTI5MzQsIDExMjk0MywgMTEyOTUyLCAxMTI5NjEsIDExMjk3MCwgMTEyOTgwLCAxMTI5OTAsIDExMjk5OCwgCisgICAgMTEzMDA2LCAxMTMwMTUsIDExMzAyNCwgMTEzMDMwLCAxMTMwMzYsIDExMzA0MiwgMTEzMDQ4LCAxMTMwNTYsIDExMzA2NCwgCisgICAgMTEzMDY4LCAxMTMwNzQsIDExMzA3OSwgMTEzMDg1LCAxMTMwOTEsIDExMzA5NywgMTEzMTAzLCAxMTMxMDksIDExMzExOCwgCisgICAgMTEzMTIzLCAxMTMxMzAsIDExMzEzNSwgMTEzMTQwLCAxMTMxNDUsIDExMzE1MSwgMTEzMTU3LCAxMTMxNjMsIDExMzE3MCwgCisgICAgMTEzMTc1LCAxMTMxODAsIDExMzE4NSwgMTEzMTkwLCAxMTMxOTUsIDExMzIwMSwgMTEzMjA3LCAxMTMyMTMsIDExMzIxOSwgCisgICAgMTEzMjI1LCAxMTMyMzEsIDExMzIzNywgMTEzMjQzLCAxMTMyNDgsIDExMzI1MywgMTEzMjU4LCAxMTMyNjMsIDExMzI2OCwgCisgICAgMTEzMjczLCAxMTMyNzgsIDExMzI4MywgMTEzMjg5LCAxMTMyOTUsIDExMzMwMCwgMTEzMzA1LCAxMTMzMTAsIDExMzMxNSwgCisgICAgMTEzMzIwLCAxMTMzMjYsIDExMzMzMywgMTEzMzM3LCAxMTMzNDEsIDExMzM0NSwgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgCisgICAgMTEzMzYxLCAxMTMzNjUsIDExMzM3MywgMTEzMzgzLCAxMTMzODcsIDExMzM5MSwgMTEzMzk3LCAxMTM0MDMsIDExMzQwOSwgCisgICAgMTEzNDE1LCAxMTM0MjEsIDExMzQyNywgMTEzNDMzLCAxMTM0MzksIDExMzQ0NSwgMTEzNDUxLCAxMTM0NTcsIDExMzQ2MywgCisgICAgMTEzNDY5LCAxMTM0NzUsIDExMzQ3OSwgMTEzNDgzLCAxMTM0OTAsIDExMzQ5NiwgMTEzNTAyLCAxMTM1MDgsIDExMzUxMywgCisgICAgMTEzNTIwLCAxMTM1MjUsIDExMzUzMSwgMTEzNTM3LCAxMTM1NDMsIDExMzU0OSwgMTEzNTU0LCAxMTM1NTgsIDExMzU2NCwgCisgICAgMTEzNTY4LCAxMTM1NzIsIDExMzU3NiwgMTEzNTgyLCAxMTM1ODgsIDExMzU5MiwgMTEzNTk4LCAxMTM2MDQsIDExMzYxMCwgCisgICAgMTEzNjE2LCAxMTM2MjIsIDExMzYzMCwgMTEzNjM4LCAxMTM2NDQsIDExMzY1MCwgMTEzNjU2LCAxMTM2NjIsIDExMzY3NCwgCisgICAgMTEzNjg2LCAxMTM3MDAsIDExMzcxMiwgMTEzNzI0LCAxMTM3MzgsIDExMzc1MiwgMTEzNzY2LCAxMTM3NzAsIDExMzc3OCwgCisgICAgMTEzNzg2LCAxMTM3OTEsIDExMzc5NSwgMTEzNzk5LCAxMTM4MDMsIDExMzgwNywgMTEzODExLCAxMTM4MTUsIDExMzgxOSwgCisgICAgMTEzODI1LCAxMTM4MzEsIDExMzgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEzODQzLCAxMTM4NDksIAorICAgIDExMzg1NSwgMTEzODYxLCAxMTM4NjcsIDExMzg3MywgMTEzODc5LCAxMTM4ODUsIDExMzg5MSwgMTEzODk3LCAxMTM5MDMsIAorICAgIDExMzkwOSwgMTEzOTE1LCAxMTM5MjEsIDExMzkyNywgMTEzOTMzLCAxMTM5MzksIDExMzk0NSwgMTEzOTUxLCAxMTM5NTcsIAorICAgIDExMzk2MywgMTEzOTY5LCAxMTM5NzUsIDExMzk4MSwgMTEzOTg3LCAxMTM5OTMsIDExMzk5OSwgMTE0MDA1LCAxMTQwMTEsIAorICAgIDExNDAxNywgMTE0MDIzLCAxMTQwMjksIDExNDAzNSwgMTE0MDQxLCAxMTQwNDcsIDExNDA1MywgMTE0MDU5LCAxMTQwNjUsIAorICAgIDExNDA3MSwgMTE0MDc3LCAxMTQwODMsIDExNDA4OSwgMTE0MDk1LCAxMTQxMDEsIDExNDEwNywgMTE0MTEzLCAxMTQxMTksIAorICAgIDExNDEyNSwgMTE0MTMxLCAxMTQxMzcsIDExNDE0MywgMTE0MTQ5LCAxMTQxNTUsIDExNDE2MSwgMTE0MTY3LCAxMTQxNzMsIAorICAgIDExNDE3OSwgMTE0MTg1LCAxMTQxOTEsIDExNDE5NywgMTE0MjAzLCAxMTQyMDksIDExNDIxNSwgMTE0MjIxLCAxMTQyMjcsIAorICAgIDExNDIzMywgMTE0MjM5LCAxMTQyNDQsIDExNDI0OSwgMTE0MjU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjIxOTYsIDEyMjE5OCwgMTIyMjAwLCAKLSAgICAxMjIyMDQsIDEyMjIwOCwgMTIyMjEyLCAxMjIyMjEsIDEyMjIyMywgMTIyMjI1LCAxMjIyMjgsIDEyMjIzMCwgMTIyMjMyLCAKLSAgICAxMjIyMzYsIDEyMjIzOCwgMTIyMjQyLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUwLCAxMjIyNTIsIDEyMjI1NiwgMTIyMjYwLCAKLSAgICAxMjIyNjYsIDEyMjI2OCwgMTIyMjcyLCAxMjIyNzQsIDEyMjI3OCwgMTIyMjgyLCAxMjIyODYsIDEyMjI5MCwgMTIyMjkyLCAKLSAgICAxMjIyOTQsIDEyMjI5OCwgMTIyMzAyLCAxMjIzMDYsIDEyMjMxMCwgMTIyMzEyLCAxMjIzMTQsIDEyMjMxNiwgMTIyMzIxLCAKLSAgICAxMjIzMjYsIDEyMjMyOSwgMTIyMzM3LCAxMjIzNDUsIDEyMjM0NywgMTIyMzUyLCAxMjIzNTUsIDEyMjM2MCwgMTIyMzcxLCAKLSAgICAxMjIzNzgsIDEyMjM4MywgMTIyMzg4LCAxMjIzOTAsIDEyMjM5NCwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwMiwgMTIyNDA2LCAKLSAgICAxMjI0MTAsIDEyMjQxMywgMTIyNDE2LCAxMjI0MTgsIDEyMjQyMSwgMTIyNDIzLCAxMjI0MjcsIDEyMjQyOSwgMTIyNDMxLCAKLSAgICAxMjI0MzMsIDEyMjQzNywgMTIyNDM5LCAxMjI0NDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDExNDI1OCwgMTE0MjYzLCAxMTQyNzAsIDExNDI3NywgMTE0Mjg0LCAxMTQyOTEsIDExNDI5NiwgMTE0MzAwLCAxMTQzMDYsIAorICAgIDExNDMxMCwgMTE0MzE0LCAxMTQzMjAsIDExNDMyNCwgMTE0MzI4LCAxMTQzMzIsIDExNDMzOCwgMTE0MzQ1LCAxMTQzNDksIAorICAgIDExNDM1MywgMTE0MzU3LCAxMTQzNjEsIDExNDM2NSwgMTE0MzY5LCAxMTQzNzUsIDExNDM3OSwgMTE0MzgzLCAxMTQzODcsIAorICAgIDExNDM5MSwgMTE0Mzk1LCAxMTQzOTksIDExNDQwMywgMTE0NDA3LCAxMTQ0MTEsIDExNDQxNSwgMTE0NDE5LCAxMTQ0MjMsIAorICAgIDExNDQyOCwgMTE0NDMyLCAxMTQ0MzYsIDExNDQ0MCwgMTE0NDQ0LCAxMTQ0NDgsIDExNDQ1MiwgMTE0NDU2LCAxMTQ0NjAsIAorICAgIDExNDQ2NCwgMTE0NDcxLCAxMTQ0NzUsIDExNDQ4MywgMTE0NDg3LCAxMTQ0OTEsIDExNDQ5NSwgMTE0NDk5LCAxMTQ1MDMsIAorICAgIDExNDUwNywgMTE0NTExLCAxMTQ1MTgsIDExNDUyMiwgMTE0NTI2LCAxMTQ1MzAsIDExNDUzNCwgMTE0NTM4LCAxMTQ1NDQsIAorICAgIDExNDU0OCwgMTE0NTU0LCAxMTQ1NTgsIDExNDU2MiwgMTE0NTY2LCAxMTQ1NzAsIDExNDU3NCwgMTE0NTc4LCAxMTQ1ODIsIAorICAgIDExNDU4NiwgMTE0NTkwLCAxMTQ1OTQsIDExNDU5OCwgMTE0NjAyLCAxMTQ2MDYsIDExNDYxMCwgMTE0NjE0LCAxMTQ2MTgsIAorICAgIDExNDYyMiwgMTE0NjI2LCAxMTQ2MzAsIDExNDYzOCwgMTE0NjQyLCAxMTQ2NDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDExNDY1MCwgMTE0NjU4LCAxMTQ2NjYsIDExNDY3NCwgMTE0NjgyLCAxMTQ2OTAsIDExNDY5OCwgMTE0NzA2LCAKKyAgICAxMTQ3MTQsIDExNDcyMiwgMTE0NzMwLCAxMTQ3MzgsIDExNDc0NiwgMTE0NzU0LCAxMTQ3NjIsIDExNDc3MCwgMTE0Nzc4LCAKKyAgICAxMTQ3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNDc5NCwgMTE0Nzk4LCAxMTQ4MDMsIAorICAgIDExNDgwOCwgMTE0ODEzLCAxMTQ4MTcsIDExNDgyMiwgMTE0ODI3LCAxMTQ4MzIsIDExNDgzNiwgMTE0ODQxLCAxMTQ4NDYsIAorICAgIDExNDg1MCwgMTE0ODU0LCAxMTQ4NTksIDExNDg2MywgMTE0ODY4LCAxMTQ4NzMsIDExNDg3NywgMTE0ODgyLCAxMTQ4ODcsIAorICAgIDExNDg5MSwgMTE0ODk2LCAxMTQ5MDEsIDExNDkwNiwgMTE0OTExLCAxMTQ5MTYsIDExNDkyMCwgMTE0OTI1LCAxMTQ5MzAsIAorICAgIDExNDkzNSwgMTE0OTM5LCAxMTQ5NDQsIDExNDk0OSwgMTE0OTU0LCAxMTQ5NTgsIDExNDk2MywgMTE0OTY4LCAxMTQ5NzIsIAorICAgIDExNDk3NiwgMTE0OTgxLCAxMTQ5ODUsIDExNDk5MCwgMTE0OTk1LCAxMTQ5OTksIDExNTAwNCwgMTE1MDA5LCAxMTUwMTMsIAorICAgIDExNTAxOCwgMTE1MDIzLCAxMTUwMjgsIDExNTAzMywgMTE1MDM4LCAxMTUwNDIsIDExNTA0NywgMTE1MDUyLCAxMTUwNTcsIAorICAgIDExNTA2MSwgMTE1MDY2LCAxMTUwNzEsIDExNTA3NiwgMTE1MDgwLCAxMTUwODUsIDExNTA5MCwgMTE1MDk0LCAxMTUwOTgsIAorICAgIDExNTEwMywgMTE1MTA3LCAxMTUxMTIsIDExNTExNywgMTE1MTIxLCAxMTUxMjYsIDExNTEzMSwgMTE1MTM1LCAxMTUxNDAsIAorICAgIDExNTE0NSwgMTE1MTUwLCAxMTUxNTUsIDExNTE2MCwgMTE1MTY0LCAxMTUxNjksIDExNTE3NCwgMTE1MTc5LCAxMTUxODMsIAorICAgIDExNTE4OCwgMCwgMTE1MTkzLCAxMTUxOTcsIDExNTIwMiwgMTE1MjA3LCAxMTUyMTEsIDExNTIxNSwgMTE1MjIwLCAKKyAgICAxMTUyMjQsIDExNTIyOSwgMTE1MjM0LCAxMTUyMzgsIDExNTI0MywgMTE1MjQ4LCAxMTUyNTIsIDExNTI1NywgMTE1MjYyLCAKKyAgICAxMTUyNjcsIDExNTI3MiwgMTE1Mjc3LCAxMTUyODIsIDExNTI4OCwgMTE1Mjk0LCAxMTUzMDAsIDExNTMwNSwgMTE1MzExLCAKKyAgICAxMTUzMTcsIDExNTMyMywgMTE1MzI4LCAxMTUzMzQsIDExNTM0MCwgMTE1MzQ1LCAxMTUzNTAsIDExNTM1NiwgMTE1MzYxLCAKKyAgICAxMTUzNjcsIDExNTM3MywgMTE1Mzc4LCAxMTUzODQsIDExNTM5MCwgMTE1Mzk1LCAxMTU0MDEsIDExNTQwNywgMTE1NDEzLCAKKyAgICAxMTU0MTksIDExNTQyNSwgMTE1NDMwLCAxMTU0MzYsIDExNTQ0MiwgMTE1NDQ4LCAxMTU0NTMsIDExNTQ1OSwgMTE1NDY1LCAKKyAgICAxMTU0NzEsIDExNTQ3NiwgMTE1NDgyLCAxMTU0ODgsIDExNTQ5MywgMTE1NDk4LCAxMTU1MDQsIDExNTUwOSwgMTE1NTE1LCAKKyAgICAxMTU1MjEsIDExNTUyNiwgMTE1NTMyLCAxMTU1MzgsIDExNTU0MywgMTE1NTQ5LCAxMTU1NTUsIDExNTU2MSwgMTE1NTY3LCAKKyAgICAxMTU1NzMsIDAsIDExNTU3NywgMTE1NTgyLCAwLCAwLCAxMTU1ODcsIDAsIDAsIDExNTU5MiwgMTE1NTk3LCAwLCAwLCAKKyAgICAxMTU2MDIsIDExNTYwNywgMTE1NjExLCAxMTU2MTYsIDAsIDExNTYyMSwgMTE1NjI2LCAxMTU2MzEsIDExNTYzNSwgCisgICAgMTE1NjQwLCAxMTU2NDUsIDExNTY1MCwgMTE1NjU1LCAxMTU2NjAsIDExNTY2NCwgMTE1NjY5LCAxMTU2NzQsIDAsIAorICAgIDExNTY3OSwgMCwgMTE1Njg0LCAxMTU2ODksIDExNTY5MywgMTE1Njk4LCAxMTU3MDMsIDExNTcwNywgMTE1NzExLCAwLCAKKyAgICAxMTU3MTYsIDExNTcyMSwgMTE1NzI2LCAxMTU3MzAsIDExNTczNSwgMTE1NzQwLCAxMTU3NDQsIDExNTc0OSwgMTE1NzU0LCAKKyAgICAxMTU3NTksIDExNTc2NCwgMTE1NzY5LCAxMTU3NzQsIDExNTc4MCwgMTE1Nzg2LCAxMTU3OTIsIDExNTc5NywgMTE1ODAzLCAKKyAgICAxMTU4MDksIDExNTgxNSwgMTE1ODIwLCAxMTU4MjYsIDExNTgzMiwgMTE1ODM3LCAxMTU4NDIsIDExNTg0OCwgMTE1ODUzLCAKKyAgICAxMTU4NTksIDExNTg2NSwgMTE1ODcwLCAxMTU4NzYsIDExNTg4MiwgMTE1ODg3LCAxMTU4OTMsIDExNTg5OSwgMTE1OTA1LCAKKyAgICAxMTU5MTEsIDExNTkxNywgMTE1OTIyLCAxMTU5MjgsIDExNTkzNCwgMTE1OTQwLCAxMTU5NDUsIDExNTk1MSwgMTE1OTU3LCAKKyAgICAxMTU5NjMsIDExNTk2OCwgMTE1OTc0LCAxMTU5ODAsIDExNTk4NSwgMTE1OTkwLCAxMTU5OTYsIDExNjAwMSwgMTE2MDA3LCAKKyAgICAxMTYwMTMsIDExNjAxOCwgMTE2MDI0LCAxMTYwMzAsIDExNjAzNSwgMTE2MDQxLCAxMTYwNDcsIDExNjA1MywgMTE2MDU5LCAKKyAgICAxMTYwNjUsIDExNjA2OSwgMCwgMTE2MDc0LCAxMTYwNzksIDExNjA4MywgMTE2MDg4LCAwLCAwLCAxMTYwOTMsIDExNjA5OCwgCisgICAgMTE2MTAzLCAxMTYxMDcsIDExNjExMSwgMTE2MTE2LCAxMTYxMjAsIDExNjEyNSwgMCwgMTE2MTMwLCAxMTYxMzUsIAorICAgIDExNjE0MCwgMTE2MTQ0LCAxMTYxNDksIDExNjE1NCwgMTE2MTU5LCAwLCAxMTYxNjQsIDExNjE2OCwgMTE2MTczLCAKKyAgICAxMTYxNzgsIDExNjE4MywgMTE2MTg3LCAxMTYxOTIsIDExNjE5NywgMTE2MjAyLCAxMTYyMDYsIDExNjIxMSwgMTE2MjE2LCAKKyAgICAxMTYyMjAsIDExNjIyNCwgMTE2MjI5LCAxMTYyMzMsIDExNjIzOCwgMTE2MjQzLCAxMTYyNDcsIDExNjI1MiwgMTE2MjU3LCAKKyAgICAxMTYyNjEsIDExNjI2NiwgMTE2MjcxLCAxMTYyNzYsIDExNjI4MSwgMTE2Mjg2LCAxMTYyOTAsIDAsIDExNjI5NSwgCisgICAgMTE2MzAwLCAxMTYzMDQsIDExNjMwOSwgMCwgMTE2MzE0LCAxMTYzMTgsIDExNjMyMywgMTE2MzI4LCAxMTYzMzIsIDAsIAorICAgIDExNjMzNiwgMCwgMCwgMCwgMTE2MzQwLCAxMTYzNDUsIDExNjM1MCwgMTE2MzU0LCAxMTYzNTksIDExNjM2NCwgMTE2MzY5LCAKKyAgICAwLCAxMTYzNzQsIDExNjM3OCwgMTE2MzgzLCAxMTYzODgsIDExNjM5MywgMTE2Mzk3LCAxMTY0MDIsIDExNjQwNywgCisgICAgMTE2NDEyLCAxMTY0MTYsIDExNjQyMSwgMTE2NDI2LCAxMTY0MzAsIDExNjQzNCwgMTE2NDM5LCAxMTY0NDMsIDExNjQ0OCwgCisgICAgMTE2NDUzLCAxMTY0NTcsIDExNjQ2MiwgMTE2NDY3LCAxMTY0NzEsIDExNjQ3NiwgMTE2NDgxLCAxMTY0ODYsIDExNjQ5MSwgCisgICAgMTE2NDk2LCAxMTY1MDEsIDExNjUwNywgMTE2NTEzLCAxMTY1MTksIDExNjUyNCwgMTE2NTMwLCAxMTY1MzYsIDExNjU0MiwgCisgICAgMTE2NTQ3LCAxMTY1NTMsIDExNjU1OSwgMTE2NTY0LCAxMTY1NjksIDExNjU3NSwgMTE2NTgwLCAxMTY1ODYsIDExNjU5MiwgCisgICAgMTE2NTk3LCAxMTY2MDMsIDExNjYwOSwgMTE2NjE0LCAxMTY2MjAsIDExNjYyNiwgMTE2NjMyLCAxMTY2MzgsIDExNjY0NCwgCisgICAgMTE2NjQ5LCAxMTY2NTUsIDExNjY2MSwgMTE2NjY3LCAxMTY2NzIsIDExNjY3OCwgMTE2Njg0LCAxMTY2OTAsIDExNjY5NSwgCisgICAgMTE2NzAxLCAxMTY3MDcsIDExNjcxMiwgMTE2NzE3LCAxMTY3MjMsIDExNjcyOCwgMTE2NzM0LCAxMTY3NDAsIDExNjc0NSwgCisgICAgMTE2NzUxLCAxMTY3NTcsIDExNjc2MiwgMTE2NzY4LCAxMTY3NzQsIDExNjc4MCwgMTE2Nzg2LCAxMTY3OTIsIDExNjc5NiwgCisgICAgMTE2ODAxLCAxMTY4MDYsIDExNjgxMSwgMTE2ODE1LCAxMTY4MjAsIDExNjgyNSwgMTE2ODMwLCAxMTY4MzQsIDExNjgzOSwgCisgICAgMTE2ODQ0LCAxMTY4NDgsIDExNjg1MiwgMTE2ODU3LCAxMTY4NjEsIDExNjg2NiwgMTE2ODcxLCAxMTY4NzUsIDExNjg4MCwgCisgICAgMTE2ODg1LCAxMTY4ODksIDExNjg5NCwgMTE2ODk5LCAxMTY5MDQsIDExNjkwOSwgMTE2OTE0LCAxMTY5MTgsIDExNjkyMywgCisgICAgMTE2OTI4LCAxMTY5MzMsIDExNjkzNywgMTE2OTQyLCAxMTY5NDcsIDExNjk1MiwgMTE2OTU2LCAxMTY5NjEsIDExNjk2NiwgCisgICAgMTE2OTcwLCAxMTY5NzQsIDExNjk3OSwgMTE2OTgzLCAxMTY5ODgsIDExNjk5MywgMTE2OTk3LCAxMTcwMDIsIDExNzAwNywgCisgICAgMTE3MDExLCAxMTcwMTYsIDExNzAyMSwgMTE3MDI2LCAxMTcwMzEsIDExNzAzNiwgMTE3MDQxLCAxMTcwNDcsIDExNzA1MywgCisgICAgMTE3MDU5LCAxMTcwNjQsIDExNzA3MCwgMTE3MDc2LCAxMTcwODIsIDExNzA4NywgMTE3MDkzLCAxMTcwOTksIDExNzEwNCwgCisgICAgMTE3MTA5LCAxMTcxMTUsIDExNzEyMCwgMTE3MTI2LCAxMTcxMzIsIDExNzEzNywgMTE3MTQzLCAxMTcxNDksIDExNzE1NCwgCisgICAgMTE3MTYwLCAxMTcxNjYsIDExNzE3MiwgMTE3MTc4LCAxMTcxODQsIDExNzE4OSwgMTE3MTk1LCAxMTcyMDEsIDExNzIwNywgCisgICAgMTE3MjEyLCAxMTcyMTgsIDExNzIyNCwgMTE3MjMwLCAxMTcyMzUsIDExNzI0MSwgMTE3MjQ3LCAxMTcyNTIsIDExNzI1NywgCisgICAgMTE3MjYzLCAxMTcyNjgsIDExNzI3NCwgMTE3MjgwLCAxMTcyODUsIDExNzI5MSwgMTE3Mjk3LCAxMTczMDIsIDExNzMwOCwgCisgICAgMTE3MzE0LCAxMTczMjAsIDExNzMyNiwgMTE3MzMyLCAxMTczMzcsIDExNzM0MywgMTE3MzQ5LCAxMTczNTUsIDExNzM2MCwgCisgICAgMTE3MzY2LCAxMTczNzIsIDExNzM3OCwgMTE3MzgzLCAxMTczODksIDExNzM5NSwgMTE3NDAwLCAxMTc0MDUsIDExNzQxMSwgCisgICAgMTE3NDE2LCAxMTc0MjIsIDExNzQyOCwgMTE3NDMzLCAxMTc0MzksIDExNzQ0NSwgMTE3NDUwLCAxMTc0NTYsIDExNzQ2MiwgCisgICAgMTE3NDY4LCAxMTc0NzQsIDExNzQ4MCwgMTE3NDg1LCAxMTc0OTEsIDExNzQ5NywgMTE3NTAzLCAxMTc1MDgsIDExNzUxNCwgCisgICAgMTE3NTIwLCAxMTc1MjYsIDExNzUzMSwgMTE3NTM3LCAxMTc1NDMsIDExNzU0OCwgMTE3NTUzLCAxMTc1NTksIDExNzU2NCwgCisgICAgMTE3NTcwLCAxMTc1NzYsIDExNzU4MSwgMTE3NTg3LCAxMTc1OTMsIDExNzU5OCwgMTE3NjA0LCAxMTc2MTAsIDExNzYxNiwgCisgICAgMTE3NjIyLCAxMTc2MjgsIDExNzYzNCwgMTE3NjQxLCAxMTc2NDgsIDExNzY1NSwgMTE3NjYxLCAxMTc2NjgsIDExNzY3NSwgCisgICAgMTE3NjgyLCAxMTc2ODgsIDExNzY5NSwgMTE3NzAyLCAxMTc3MDgsIDExNzcxNCwgMTE3NzIxLCAxMTc3MjcsIDExNzczNCwgCisgICAgMTE3NzQxLCAxMTc3NDcsIDExNzc1NCwgMTE3NzYxLCAxMTc3NjcsIDExNzc3NCwgMTE3NzgxLCAxMTc3ODgsIDExNzc5NSwgCisgICAgMTE3ODAyLCAxMTc4MDgsIDExNzgxNSwgMTE3ODIyLCAxMTc4MjksIDExNzgzNSwgMTE3ODQyLCAxMTc4NDksIDExNzg1NiwgCisgICAgMTE3ODYyLCAxMTc4NjksIDExNzg3NiwgMTE3ODgyLCAxMTc4ODgsIDExNzg5NSwgMTE3OTAxLCAxMTc5MDgsIDExNzkxNSwgCisgICAgMTE3OTIxLCAxMTc5MjgsIDExNzkzNSwgMTE3OTQxLCAxMTc5NDgsIDExNzk1NSwgMTE3OTYyLCAxMTc5NjksIDExNzk3NiwgCisgICAgMTE3OTgxLCAxMTc5ODcsIDExNzk5MywgMTE3OTk5LCAxMTgwMDQsIDExODAxMCwgMTE4MDE2LCAxMTgwMjIsIDExODAyNywgCisgICAgMTE4MDMzLCAxMTgwMzksIDExODA0NCwgMTE4MDQ5LCAxMTgwNTUsIDExODA2MCwgMTE4MDY2LCAxMTgwNzIsIDExODA3NywgCisgICAgMTE4MDgzLCAxMTgwODksIDExODA5NCwgMTE4MTAwLCAxMTgxMDYsIDExODExMiwgMTE4MTE4LCAxMTgxMjQsIDExODEyOSwgCisgICAgMTE4MTM1LCAxMTgxNDEsIDExODE0NywgMTE4MTUyLCAxMTgxNTgsIDExODE2NCwgMTE4MTcwLCAxMTgxNzUsIDExODE4MSwgCisgICAgMTE4MTg3LCAxMTgxOTIsIDExODE5NywgMTE4MjAzLCAxMTgyMDgsIDExODIxNCwgMTE4MjIwLCAxMTgyMjUsIDExODIzMSwgCisgICAgMTE4MjM3LCAxMTgyNDIsIDExODI0OCwgMTE4MjU0LCAxMTgyNjAsIDExODI2NiwgMTE4MjcyLCAxMTgyNzgsIDAsIDAsIAorICAgIDExODI4NSwgMTE4MjkwLCAxMTgyOTUsIDExODMwMCwgMTE4MzA1LCAxMTgzMTAsIDExODMxNSwgMTE4MzIwLCAxMTgzMjUsIAorICAgIDExODMzMCwgMTE4MzM1LCAxMTgzNDAsIDExODM0NSwgMTE4MzUwLCAxMTgzNTUsIDExODM2MCwgMTE4MzY1LCAxMTgzNzAsIAorICAgIDExODM3NiwgMTE4MzgxLCAxMTgzODYsIDExODM5MSwgMTE4Mzk2LCAxMTg0MDEsIDExODQwNiwgMTE4NDExLCAxMTg0MTUsIAorICAgIDExODQyMCwgMTE4NDI1LCAxMTg0MzAsIDExODQzNSwgMTE4NDQwLCAxMTg0NDUsIDExODQ1MCwgMTE4NDU1LCAxMTg0NjAsIAorICAgIDExODQ2NSwgMTE4NDcwLCAxMTg0NzUsIDExODQ4MCwgMTE4NDg1LCAxMTg0OTAsIDExODQ5NSwgMTE4NTAwLCAxMTg1MDYsIAorICAgIDExODUxMSwgMTE4NTE2LCAxMTg1MjEsIDExODUyNiwgMTE4NTMxLCAxMTg1MzYsIDExODU0MSwgMTE4NTQ3LCAxMTg1NTIsIAorICAgIDExODU1NywgMTE4NTYyLCAxMTg1NjcsIDExODU3MiwgMTE4NTc3LCAxMTg1ODIsIDExODU4NywgMTE4NTkyLCAxMTg1OTcsIAorICAgIDExODYwMiwgMTE4NjA3LCAxMTg2MTIsIDExODYxNywgMTE4NjIyLCAxMTg2MjcsIDExODYzMiwgMTE4NjM3LCAxMTg2NDIsIAorICAgIDExODY0NywgMTE4NjUyLCAxMTg2NTcsIDExODY2MiwgMTE4NjY4LCAxMTg2NzMsIDExODY3OCwgMTE4NjgzLCAxMTg2ODgsIAorICAgIDExODY5MywgMTE4Njk4LCAxMTg3MDMsIDExODcwNywgMTE4NzEyLCAxMTg3MTcsIDExODcyMiwgMTE4NzI3LCAxMTg3MzIsIAorICAgIDExODczNywgMTE4NzQyLCAxMTg3NDcsIDExODc1MiwgMTE4NzU3LCAxMTg3NjIsIDExODc2NywgMTE4NzcyLCAxMTg3NzcsIAorICAgIDExODc4MiwgMTE4Nzg3LCAxMTg3OTIsIDExODc5OCwgMTE4ODAzLCAxMTg4MDgsIDExODgxMywgMTE4ODE4LCAxMTg4MjMsIAorICAgIDExODgyOCwgMTE4ODMzLCAxMTg4MzksIDExODg0NCwgMTE4ODQ5LCAxMTg4NTQsIDExODg1OSwgMTE4ODY0LCAxMTg4NjksIAorICAgIDExODg3NSwgMTE4ODgxLCAxMTg4ODcsIDExODg5MywgMTE4ODk5LCAxMTg5MDUsIDExODkxMSwgMTE4OTE3LCAxMTg5MjMsIAorICAgIDExODkyOSwgMTE4OTM1LCAxMTg5NDEsIDExODk0NywgMTE4OTUzLCAxMTg5NTksIDExODk2NSwgMTE4OTcxLCAxMTg5NzgsIAorICAgIDExODk4NCwgMTE4OTkwLCAxMTg5OTYsIDExOTAwMiwgMTE5MDA4LCAxMTkwMTQsIDExOTAyMCwgMTE5MDI1LCAxMTkwMzEsIAorICAgIDExOTAzNywgMTE5MDQzLCAxMTkwNDksIDExOTA1NSwgMTE5MDYxLCAxMTkwNjcsIDExOTA3MywgMTE5MDc5LCAxMTkwODUsIAorICAgIDExOTA5MSwgMTE5MDk3LCAxMTkxMDMsIDExOTEwOSwgMTE5MTE1LCAxMTkxMjEsIDExOTEyNywgMTE5MTM0LCAxMTkxNDAsIAorICAgIDExOTE0NiwgMTE5MTUyLCAxMTkxNTgsIDExOTE2NCwgMTE5MTcwLCAxMTkxNzYsIDExOTE4MywgMTE5MTg5LCAxMTkxOTUsIAorICAgIDExOTIwMSwgMTE5MjA3LCAxMTkyMTMsIDExOTIxOSwgMTE5MjI1LCAxMTkyMzEsIDExOTIzNywgMTE5MjQzLCAxMTkyNDksIAorICAgIDExOTI1NSwgMTE5MjYxLCAxMTkyNjcsIDExOTI3MywgMTE5Mjc5LCAxMTkyODUsIDExOTI5MSwgMTE5Mjk3LCAxMTkzMDMsIAorICAgIDExOTMwOSwgMTE5MzE1LCAxMTkzMjEsIDExOTMyOCwgMTE5MzM0LCAxMTkzNDAsIDExOTM0NiwgMTE5MzUyLCAxMTkzNTgsIAorICAgIDExOTM2NCwgMTE5MzcwLCAxMTkzNzUsIDExOTM4MSwgMTE5Mzg3LCAxMTkzOTMsIDExOTM5OSwgMTE5NDA1LCAxMTk0MTEsIAorICAgIDExOTQxNywgMTE5NDIzLCAxMTk0MjksIDExOTQzNSwgMTE5NDQxLCAxMTk0NDcsIDExOTQ1MywgMTE5NDU5LCAxMTk0NjUsIAorICAgIDExOTQ3MSwgMTE5NDc3LCAxMTk0ODQsIDExOTQ5MCwgMTE5NDk2LCAxMTk1MDIsIDExOTUwOCwgMTE5NTE0LCAxMTk1MjAsIAorICAgIDExOTUyNiwgMTE5NTMzLCAxMTk1MzksIDExOTU0NSwgMTE5NTUxLCAxMTk1NTcsIDExOTU2MywgMTE5NTY5LCAxMTk1NzYsIAorICAgIDExOTU4MywgMTE5NTkwLCAxMTk1OTcsIDExOTYwNCwgMTE5NjExLCAxMTk2MTgsIDExOTYyNSwgMTE5NjMyLCAxMTk2MzksIAorICAgIDExOTY0NiwgMTE5NjUzLCAxMTk2NjAsIDExOTY2NywgMTE5Njc0LCAxMTk2ODEsIDExOTY4OCwgMTE5Njk2LCAxMTk3MDMsIAorICAgIDExOTcxMCwgMTE5NzE3LCAxMTk3MjQsIDExOTczMSwgMTE5NzM4LCAxMTk3NDUsIDExOTc1MSwgMTE5NzU4LCAxMTk3NjUsIAorICAgIDExOTc3MiwgMTE5Nzc5LCAxMTk3ODYsIDExOTc5MywgMTE5ODAwLCAxMTk4MDcsIDExOTgxNCwgMTE5ODIxLCAxMTk4MjgsIAorICAgIDExOTgzNSwgMTE5ODQyLCAxMTk4NDksIDExOTg1NiwgMTE5ODYzLCAxMTk4NzAsIDExOTg3OCwgMTE5ODg1LCAxMTk4OTIsIAorICAgIDExOTg5OSwgMTE5OTA2LCAxMTk5MTMsIDExOTkyMCwgMTE5OTI3LCAxMTk5MzUsIDExOTk0MiwgMTE5OTQ5LCAxMTk5NTYsIAorICAgIDExOTk2MywgMTE5OTcwLCAxMTk5NzcsIDExOTk4MiwgMCwgMCwgMTE5OTg3LCAxMTk5OTIsIDExOTk5NiwgMTIwMDAwLCAKKyAgICAxMjAwMDQsIDEyMDAwOCwgMTIwMDEyLCAxMjAwMTYsIDEyMDAyMCwgMTIwMDI0LCAxMjAwMjgsIDEyMDAzMywgMTIwMDM3LCAKKyAgICAxMjAwNDEsIDEyMDA0NSwgMTIwMDQ5LCAxMjAwNTMsIDEyMDA1NywgMTIwMDYxLCAxMjAwNjUsIDEyMDA2OSwgMTIwMDc0LCAKKyAgICAxMjAwNzgsIDEyMDA4MiwgMTIwMDg2LCAxMjAwOTAsIDEyMDA5NCwgMTIwMDk4LCAxMjAxMDIsIDEyMDEwNiwgMTIwMTEwLCAKKyAgICAxMjAxMTYsIDEyMDEyMSwgMTIwMTI2LCAxMjAxMzEsIDEyMDEzNiwgMTIwMTQxLCAxMjAxNDYsIDEyMDE1MSwgMTIwMTU2LCAKKyAgICAxMjAxNjEsIDEyMDE2NywgMTIwMTcyLCAxMjAxNzcsIDEyMDE4MiwgMTIwMTg3LCAxMjAxOTIsIDEyMDE5NywgMTIwMjAyLCAKKyAgICAxMjAyMDcsIDEyMDIxMiwgMTIwMjE2LCAxMjAyMjAsIDEyMDIyNCwgMCwgMTIwMjI4LCAxMjAyMzIsIDEyMDIzNiwgCisgICAgMTIwMjQwLCAxMjAyNDQsIDEyMDI0OCwgMTIwMjUyLCAxMjAyNTYsIDEyMDI2MCwgMTIwMjY0LCAxMjAyNjgsIDEyMDI3MiwgCisgICAgMTIwMjc2LCAxMjAyODAsIDEyMDI4NCwgMTIwMjg4LCAxMjAyOTIsIDEyMDI5NiwgMTIwMzAwLCAxMjAzMDQsIDEyMDMwOCwgCisgICAgMTIwMzEyLCAxMjAzMTYsIDEyMDMyMCwgMTIwMzI2LCAxMjAzMzIsIDEyMDMzOCwgMCwgMTIwMzQ0LCAxMjAzNDksIDAsIAorICAgIDEyMDM1NCwgMCwgMCwgMTIwMzU5LCAwLCAxMjAzNjQsIDEyMDM2OSwgMTIwMzc0LCAxMjAzNzksIDEyMDM4NCwgMTIwMzg5LCAKKyAgICAxMjAzOTQsIDEyMDM5OSwgMTIwNDA0LCAxMjA0MDksIDAsIDEyMDQxNCwgMTIwNDE5LCAxMjA0MjQsIDEyMDQyOSwgMCwgCisgICAgMTIwNDM0LCAwLCAxMjA0MzksIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDQ0NCwgMCwgMCwgMCwgMCwgMTIwNDUwLCAwLCAKKyAgICAxMjA0NTYsIDAsIDEyMDQ2MiwgMCwgMTIwNDY4LCAxMjA0NzQsIDEyMDQ4MCwgMCwgMTIwNDg2LCAxMjA0OTIsIDAsIAorICAgIDEyMDQ5OCwgMCwgMCwgMTIwNTA0LCAwLCAxMjA1MTAsIDAsIDEyMDUxNiwgMCwgMTIwNTIyLCAwLCAxMjA1MzAsIDAsIAorICAgIDEyMDUzOCwgMTIwNTQ0LCAwLCAxMjA1NTAsIDAsIDAsIDEyMDU1NiwgMTIwNTYyLCAxMjA1NjgsIDEyMDU3NCwgMCwgCisgICAgMTIwNTgwLCAxMjA1ODYsIDEyMDU5MiwgMTIwNTk4LCAxMjA2MDQsIDEyMDYxMCwgMTIwNjE2LCAwLCAxMjA2MjIsIAorICAgIDEyMDYyOCwgMTIwNjM0LCAxMjA2NDAsIDAsIDEyMDY0NiwgMTIwNjUyLCAxMjA2NTgsIDEyMDY2NCwgMCwgMTIwNjcyLCAwLCAKKyAgICAxMjA2ODAsIDEyMDY4NiwgMTIwNjkyLCAxMjA2OTgsIDEyMDcwNCwgMTIwNzEwLCAxMjA3MTYsIDEyMDcyMiwgMTIwNzI4LCAKKyAgICAxMjA3MzQsIDAsIDEyMDc0MCwgMTIwNzQ2LCAxMjA3NTIsIDEyMDc1OCwgMTIwNzY0LCAxMjA3NzAsIDEyMDc3NiwgCisgICAgMTIwNzgyLCAxMjA3ODgsIDEyMDc5NCwgMTIwODAwLCAxMjA4MDYsIDEyMDgxMiwgMTIwODE4LCAxMjA4MjQsIDEyMDgzMCwgCisgICAgMTIwODM2LCAwLCAwLCAwLCAwLCAwLCAxMjA4NDIsIDEyMDg0NywgMTIwODUyLCAwLCAxMjA4NTcsIDEyMDg2MiwgMTIwODY3LCAKKyAgICAxMjA4NzIsIDEyMDg3NywgMCwgMTIwODgyLCAxMjA4ODcsIDEyMDg5MiwgMTIwODk3LCAxMjA5MDIsIDEyMDkwNywgCisgICAgMTIwOTEyLCAxMjA5MTcsIDEyMDkyMiwgMTIwOTI3LCAxMjA5MzIsIDEyMDkzNywgMTIwOTQyLCAxMjA5NDcsIDEyMDk1MiwgCisgICAgMTIwOTU3LCAxMjA5NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMjQ0NiwgCi0gICAgMTIyNDUxLCAxMjI0NTYsIDEyMjQ2MSwgMTIyNDY2LCAxMjI0NzEsIDEyMjQ3NiwgMTIyNDgzLCAxMjI0OTAsIDEyMjQ5NywgCi0gICAgMTIyNTA0LCAxMjI1MDksIDEyMjUxNCwgMTIyNTE5LCAxMjI1MjQsIDEyMjUzMSwgMTIyNTM3LCAxMjI1NDQsIDEyMjU1MSwgCi0gICAgMTIyNTU4LCAxMjI1NjMsIDEyMjU2OCwgMTIyNTczLCAxMjI1NzgsIDEyMjU4MywgMTIyNTkwLCAxMjI1OTcsIDEyMjYwMiwgCi0gICAgMTIyNjA3LCAxMjI2MTQsIDEyMjYyMSwgMTIyNjI5LCAxMjI2MzcsIDEyMjY0NCwgMTIyNjUxLCAxMjI2NTksIDEyMjY2NywgCi0gICAgMTIyNjc1LCAxMjI2ODIsIDEyMjY5MiwgMTIyNzAzLCAxMjI3MDgsIDEyMjcxNSwgMTIyNzIyLCAxMjI3MjksIDEyMjczNywgCi0gICAgMTIyNzQ1LCAxMjI3NTYsIDEyMjc2NCwgMTIyNzcyLCAxMjI3ODAsIDEyMjc4NSwgMTIyNzkwLCAxMjI3OTUsIDEyMjgwMCwgCi0gICAgMTIyODA1LCAxMjI4MTAsIDEyMjgxNSwgMTIyODIwLCAxMjI4MjUsIDEyMjgzMCwgMTIyODM1LCAxMjI4NDAsIDEyMjg0NywgCi0gICAgMTIyODUyLCAxMjI4NTcsIDEyMjg2NCwgMTIyODY5LCAxMjI4NzQsIDEyMjg3OSwgMTIyODg0LCAxMjI4ODksIDEyMjg5NCwgCi0gICAgMTIyODk5LCAxMjI5MDQsIDEyMjkwOSwgMTIyOTE0LCAxMjI5MTksIDEyMjkyNCwgMTIyOTMxLCAxMjI5MzksIDEyMjk0NCwgCi0gICAgMTIyOTQ5LCAxMjI5NTYsIDEyMjk2MSwgMTIyOTY2LCAxMjI5NzEsIDEyMjk3OCwgMTIyOTgzLCAxMjI5OTAsIDEyMjk5NSwgCi0gICAgMTIzMDAyLCAxMjMwMDcsIDEyMzAxNiwgMTIzMDI1LCAxMjMwMzAsIDEyMzAzNSwgMTIzMDQwLCAxMjMwNDUsIDEyMzA1MCwgCi0gICAgMTIzMDU1LCAxMjMwNjAsIDEyMzA2NSwgMTIzMDcwLCAxMjMwNzUsIDEyMzA4MCwgMTIzMDg1LCAxMjMwOTAsIDEyMzA5OCwgCi0gICAgMTIzMTA2LCAxMjMxMTEsIDEyMzExNiwgMTIzMTIxLCAxMjMxMjYsIDEyMzEzMSwgMTIzMTM3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMjMxNDMsIDEyMzE0NywgMTIzMTUxLCAxMjMxNTUsIDEyMzE1OSwgMTIzMTYzLCAxMjMxNjcsIAotICAgIDEyMzE3MSwgMTIzMTc1LCAxMjMxNzksIDEyMzE4MywgMTIzMTg3LCAxMjMxOTEsIDEyMzE5NSwgMTIzMTk5LCAxMjMyMDMsIAotICAgIDEyMzIwNywgMTIzMjExLCAxMjMyMTUsIDEyMzIxOSwgMTIzMjIzLCAxMjMyMjcsIDEyMzIzMSwgMTIzMjM1LCAxMjMyMzksIAotICAgIDEyMzI0MywgMTIzMjQ3LCAxMjMyNTEsIDEyMzI1NSwgMTIzMjU5LCAxMjMyNjMsIDEyMzI2NywgMTIzMjcxLCAxMjMyNzUsIAotICAgIDEyMzI3OSwgMTIzMjgzLCAxMjMyODcsIDEyMzI5MSwgMTIzMjk1LCAxMjMyOTksIDEyMzMwMywgMTIzMzA3LCAxMjMzMTEsIAotICAgIDEyMzMxNSwgMTIzMzE5LCAxMjMzMjMsIDEyMzMyNywgMTIzMzMxLCAxMjMzMzUsIDEyMzMzOSwgMTIzMzQzLCAxMjMzNDcsIAotICAgIDEyMzM1MSwgMTIzMzU1LCAxMjMzNTksIDEyMzM2MywgMTIzMzY3LCAxMjMzNzEsIDEyMzM3NSwgMTIzMzc5LCAxMjMzODMsIAotICAgIDEyMzM4NywgMTIzMzkxLCAxMjMzOTUsIDEyMzM5OSwgMTIzNDAzLCAxMjM0MDcsIDEyMzQxMSwgMTIzNDE1LCAxMjM0MTksIAotICAgIDEyMzQyMywgMTIzNDI3LCAxMjM0MzEsIDEyMzQzNSwgMTIzNDM5LCAxMjM0NDMsIDEyMzQ0NywgMTIzNDUxLCAxMjM0NTUsIAotICAgIDEyMzQ1OSwgMTIzNDYzLCAxMjM0NjcsIDEyMzQ3MSwgMTIzNDc1LCAxMjM0NzksIDEyMzQ4MywgMTIzNDg3LCAxMjM0OTEsIAotICAgIDEyMzQ5NSwgMTIzNDk5LCAxMjM1MDMsIDEyMzUwNywgMTIzNTExLCAxMjM1MTUsIDEyMzUxOSwgMTIzNTIzLCAxMjM1MjcsIAotICAgIDEyMzUzMSwgMTIzNTM1LCAxMjM1MzksIDEyMzU0MywgMTIzNTQ3LCAxMjM1NTEsIDEyMzU1NSwgMTIzNTU5LCAxMjM1NjMsIAotICAgIDEyMzU2NywgMTIzNTcxLCAxMjM1NzUsIDEyMzU3OSwgMTIzNTgzLCAxMjM1ODcsIDEyMzU5MSwgMTIzNTk1LCAxMjM1OTksIAotICAgIDEyMzYwMywgMTIzNjA3LCAxMjM2MTEsIDEyMzYxNSwgMTIzNjE5LCAxMjM2MjMsIDEyMzYyNywgMTIzNjMxLCAxMjM2MzUsIAotICAgIDEyMzYzOSwgMTIzNjQzLCAxMjM2NDcsIDEyMzY1MSwgMTIzNjU1LCAxMjM2NTksIDEyMzY2MywgMTIzNjY3LCAxMjM2NzEsIAotICAgIDEyMzY3NSwgMTIzNjc5LCAxMjM2ODMsIDEyMzY4NywgMTIzNjkxLCAxMjM2OTUsIDEyMzY5OSwgMTIzNzAzLCAxMjM3MDcsIAotICAgIDEyMzcxMSwgMTIzNzE1LCAxMjM3MTksIDEyMzcyMywgMTIzNzI3LCAxMjM3MzEsIDEyMzczNSwgMTIzNzM5LCAxMjM3NDMsIAotICAgIDEyMzc0NywgMTIzNzUxLCAxMjM3NTUsIDEyMzc1OSwgMTIzNzYzLCAxMjM3NjcsIDEyMzc3MSwgMTIzNzc1LCAxMjM3NzksIAotICAgIDEyMzc4MywgMTIzNzg3LCAxMjM3OTEsIDEyMzc5NSwgMTIzNzk5LCAxMjM4MDMsIDEyMzgwNywgMTIzODExLCAxMjM4MTUsIAotICAgIDEyMzgxOSwgMTIzODIzLCAxMjM4MjcsIDEyMzgzMSwgMTIzODM1LCAxMjM4MzksIDEyMzg0MywgMTIzODQ3LCAxMjM4NTEsIAotICAgIDEyMzg1NSwgMTIzODU5LCAxMjM4NjMsIDEyMzg2NywgMTIzODcxLCAxMjM4NzUsIDEyMzg3OSwgMTIzODgzLCAxMjM4ODcsIAotICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA3LCAxMjM5MTEsIDEyMzkxNSwgMTIzOTE5LCAxMjM5MjMsIAotICAgIDEyMzkyNywgMTIzOTMxLCAxMjM5MzUsIDEyMzkzOSwgMTIzOTQzLCAxMjM5NDcsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAotICAgIDEyMzk2MywgMTIzOTY3LCAxMjM5NzEsIDEyMzk3NSwgMTIzOTc5LCAxMjM5ODMsIDEyMzk4NywgMTIzOTkxLCAxMjM5OTUsIAotICAgIDEyMzk5OSwgMTI0MDAzLCAxMjQwMDcsIDEyNDAxMSwgMTI0MDE1LCAxMjQwMTksIDEyNDAyMywgMTI0MDI3LCAxMjQwMzEsIAotICAgIDEyNDAzNSwgMTI0MDM5LCAxMjQwNDMsIDEyNDA0NywgMTI0MDUxLCAxMjQwNTUsIDEyNDA1OSwgMTI0MDYzLCAxMjQwNjcsIAotICAgIDEyNDA3MSwgMTI0MDc1LCAxMjQwNzksIDEyNDA4MywgMTI0MDg3LCAxMjQwOTEsIDEyNDA5NSwgMTI0MDk5LCAxMjQxMDMsIAotICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTIzLCAxMjQxMjcsIDEyNDEzMSwgMTI0MTM1LCAxMjQxMzksIAotICAgIDEyNDE0MywgMTI0MTQ3LCAxMjQxNTEsIDEyNDE1NSwgMTI0MTU5LCAxMjQxNjMsIDEyNDE2NywgMTI0MTcxLCAxMjQxNzUsIAotICAgIDEyNDE3OSwgMTI0MTgzLCAxMjQxODcsIDEyNDE5MSwgMTI0MTk1LCAxMjQxOTksIDEyNDIwMywgMTI0MjA3LCAxMjQyMTEsIAotICAgIDEyNDIxNSwgMTI0MjE5LCAxMjQyMjMsIDEyNDIyNywgMTI0MjMxLCAxMjQyMzUsIDEyNDIzOSwgMTI0MjQzLCAxMjQyNDcsIAotICAgIDEyNDI1MSwgMTI0MjU1LCAxMjQyNTksIDEyNDI2MywgMTI0MjY3LCAxMjQyNzEsIDEyNDI3NSwgMTI0Mjc5LCAxMjQyODMsIAotICAgIDEyNDI4NywgMTI0MjkxLCAxMjQyOTUsIDEyNDI5OSwgMTI0MzAzLCAxMjQzMDcsIDEyNDMxMSwgMTI0MzE1LCAxMjQzMTksIAotICAgIDEyNDMyMywgMTI0MzI3LCAxMjQzMzEsIDEyNDMzNSwgMTI0MzM5LCAxMjQzNDMsIDEyNDM0NywgMTI0MzUxLCAxMjQzNTUsIAotICAgIDEyNDM1OSwgMTI0MzYzLCAxMjQzNjcsIDEyNDM3MSwgMTI0Mzc1LCAxMjQzNzksIDEyNDM4MywgMTI0Mzg3LCAxMjQzOTEsIAotICAgIDEyNDM5NSwgMTI0Mzk5LCAxMjQ0MDMsIDEyNDQwNywgMTI0NDExLCAxMjQ0MTUsIDEyNDQxOSwgMTI0NDIzLCAxMjQ0MjcsIAotICAgIDEyNDQzMSwgMTI0NDM1LCAxMjQ0MzksIDEyNDQ0MywgMTI0NDQ3LCAxMjQ0NTEsIDEyNDQ1NSwgMTI0NDU5LCAxMjQ0NjMsIAotICAgIDEyNDQ2NywgMTI0NDcxLCAxMjQ0NzUsIDEyNDQ3OSwgMTI0NDgzLCAxMjQ0ODcsIDEyNDQ5MSwgMTI0NDk1LCAxMjQ0OTksIAotICAgIDEyNDUwMywgMTI0NTA3LCAxMjQ1MTEsIDEyNDUxNSwgMTI0NTE5LCAxMjQ1MjMsIDEyNDUyNywgMTI0NTMxLCAxMjQ1MzUsIAotICAgIDEyNDUzOSwgMTI0NTQzLCAxMjQ1NDcsIDEyNDU1MSwgMTI0NTU1LCAxMjQ1NTksIDEyNDU2MywgMTI0NTY3LCAxMjQ1NzEsIAotICAgIDEyNDU3NSwgMTI0NTc5LCAxMjQ1ODMsIDEyNDU4NywgMTI0NTkxLCAxMjQ1OTUsIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDcsIAotICAgIDEyNDYxMSwgMTI0NjE1LCAxMjQ2MTksIDEyNDYyMywgMTI0NjI3LCAxMjQ2MzEsIDEyNDYzNSwgMTI0NjM5LCAxMjQ2NDMsIAotICAgIDEyNDY0NywgMTI0NjUxLCAxMjQ2NTUsIDEyNDY1OSwgMTI0NjYzLCAxMjQ2NjcsIDEyNDY3MSwgMTI0Njc1LCAxMjQ2NzksIAotICAgIDEyNDY4MywgMTI0Njg3LCAxMjQ2OTEsIDEyNDY5NSwgMTI0Njk5LCAxMjQ3MDMsIDEyNDcwNywgMTI0NzExLCAxMjQ3MTUsIAotICAgIDEyNDcxOSwgMTI0NzIzLCAxMjQ3MjcsIDEyNDczMSwgMTI0NzM1LCAxMjQ3MzksIDEyNDc0MywgMTI0NzQ3LCAxMjQ3NTEsIAotICAgIDEyNDc1NSwgMTI0NzU5LCAxMjQ3NjMsIDEyNDc2NywgMTI0NzcxLCAxMjQ3NzUsIDEyNDc3OSwgMTI0NzgzLCAxMjQ3ODcsIAotICAgIDEyNDc5MSwgMTI0Nzk1LCAxMjQ3OTksIDEyNDgwMywgMTI0ODA3LCAxMjQ4MTEsIDEyNDgxNSwgMTI0ODE5LCAxMjQ4MjMsIAotICAgIDEyNDgyNywgMTI0ODMxLCAxMjQ4MzUsIDEyNDgzOSwgMTI0ODQzLCAxMjQ4NDcsIDEyNDg1MSwgMTI0ODU1LCAxMjQ4NTksIAotICAgIDEyNDg2MywgMTI0ODY3LCAxMjQ4NzEsIDEyNDg3NSwgMTI0ODc5LCAxMjQ4ODMsIDEyNDg4NywgMTI0ODkxLCAxMjQ4OTUsIAotICAgIDEyNDg5OSwgMTI0OTAzLCAxMjQ5MDcsIDEyNDkxMSwgMTI0OTE1LCAxMjQ5MTksIDEyNDkyMywgMTI0OTI3LCAxMjQ5MzEsIAotICAgIDEyNDkzNSwgMTI0OTM5LCAxMjQ5NDMsIDEyNDk0NywgMTI0OTUxLCAxMjQ5NTUsIDEyNDk1OSwgMTI0OTYzLCAxMjQ5NjcsIAotICAgIDEyNDk3MSwgMTI0OTc1LCAxMjQ5NzksIDEyNDk4MywgMTI0OTg3LCAxMjQ5OTEsIDEyNDk5NSwgMTI0OTk5LCAxMjUwMDMsIAotICAgIDEyNTAwNywgMTI1MDExLCAxMjUwMTUsIDEyNTAxOSwgMTI1MDIzLCAxMjUwMjcsIDEyNTAzMSwgMTI1MDM1LCAxMjUwMzksIAotICAgIDEyNTA0MywgMTI1MDQ3LCAxMjUwNTEsIDEyNTA1NSwgMTI1MDU5LCAxMjUwNjMsIDEyNTA2NywgMTI1MDcxLCAxMjUwNzUsIAotICAgIDEyNTA3OSwgMTI1MDgzLCAxMjUwODcsIDEyNTA5MSwgMTI1MDk1LCAxMjUwOTksIDEyNTEwMywgMTI1MTA3LCAxMjUxMTEsIAotICAgIDEyNTExNSwgMTI1MTE5LCAxMjUxMjMsIDEyNTEyNywgMTI1MTMxLCAxMjUxMzUsIDEyNTEzOSwgMTI1MTQzLCAxMjUxNDcsIAotICAgIDEyNTE1MSwgMTI1MTU1LCAxMjUxNTksIDEyNTE2MywgMTI1MTY3LCAxMjUxNzEsIDEyNTE3NSwgMTI1MTc5LCAxMjUxODMsIAotICAgIDEyNTE4NywgMTI1MTkxLCAxMjUxOTUsIDEyNTE5OSwgMTI1MjAzLCAxMjUyMDcsIDEyNTIxMSwgMTI1MjE1LCAxMjUyMTksIAotICAgIDEyNTIyMywgMTI1MjI3LCAxMjUyMzEsIDEyNTIzNSwgMTI1MjM5LCAxMjUyNDMsIDEyNTI0NywgMTI1MjUxLCAxMjUyNTUsIAotICAgIDEyNTI1OSwgMTI1MjYzLCAxMjUyNjcsIDEyNTI3MSwgMTI1Mjc1LCAxMjUyNzksIDEyNTI4MywgMTI1Mjg3LCAxMjUyOTEsIAotICAgIDEyNTI5NSwgMTI1Mjk5LCAxMjUzMDMsIDEyNTMwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIwOTY3LCAxMjA5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMDk4NSwgMTIwOTkyLCAxMjA5OTksIDEyMTAwNiwgMTIxMDEzLCAxMjEwMjAsIDEyMTAyNywgCisgICAgMTIxMDMzLCAxMjEwNDAsIDEyMTA0NywgMTIxMDU0LCAxMjEwNjIsIDEyMTA3MCwgMTIxMDc4LCAxMjEwODYsIDEyMTA5NCwgCisgICAgMTIxMTAyLCAxMjExMDksIDEyMTExNiwgMTIxMTIzLCAxMjExMzEsIDEyMTEzOSwgMTIxMTQ3LCAxMjExNTUsIDEyMTE2MywgCisgICAgMTIxMTcxLCAxMjExNzgsIDEyMTE4NSwgMTIxMTkyLCAxMjEyMDAsIDEyMTIwOCwgMTIxMjE2LCAxMjEyMjQsIDEyMTIzMiwgCisgICAgMTIxMjQwLCAxMjEyNDUsIDEyMTI1MCwgMTIxMjU1LCAxMjEyNjAsIDEyMTI2NSwgMTIxMjcwLCAxMjEyNzUsIDEyMTI4MCwgCisgICAgMTIxMjg1LCAwLCAwLCAwLCAwLCAxMjEyOTAsIDEyMTI5NSwgMTIxMjk5LCAxMjEzMDMsIDEyMTMwNywgMTIxMzExLCAKKyAgICAxMjEzMTUsIDEyMTMxOSwgMTIxMzIzLCAxMjEzMjcsIDEyMTMzMSwgMTIxMzM1LCAxMjEzMzksIDEyMTM0MywgMTIxMzQ3LCAKKyAgICAxMjEzNTEsIDEyMTM1NSwgMTIxMzU5LCAxMjEzNjMsIDEyMTM2NywgMTIxMzcxLCAxMjEzNzUsIDEyMTM3OSwgMTIxMzgzLCAKKyAgICAxMjEzODcsIDEyMTM5MSwgMTIxMzk1LCAxMjEzOTksIDEyMTQwMywgMTIxNDA3LCAxMjE0MTEsIDEyMTQxNSwgMTIxNDE5LCAKKyAgICAxMjE0MjMsIDEyMTQyNywgMTIxNDMxLCAxMjE0MzUsIDEyMTQzOSwgMTIxNDQzLCAxMjE0NDcsIDEyMTQ1MSwgMTIxNDU1LCAKKyAgICAxMjE0NTksIDEyMTQ2MywgMTIxNDY3LCAxMjE0NzEsIDEyMTQ3NSwgMTIxNDc5LCAxMjE0ODMsIDEyMTQ4NywgMTIxNDkxLCAKKyAgICAxMjE0OTYsIDEyMTUwMCwgMTIxNTA0LCAxMjE1MDgsIDEyMTUxMiwgMTIxNTE2LCAxMjE1MjAsIDEyMTUyNCwgMTIxNTI4LCAKKyAgICAxMjE1MzIsIDEyMTUzNiwgMTIxNTQwLCAxMjE1NDQsIDEyMTU0OCwgMTIxNTUyLCAxMjE1NTYsIDEyMTU2MCwgMTIxNTY0LCAKKyAgICAxMjE1NjgsIDEyMTU3MiwgMTIxNTc2LCAxMjE1ODAsIDEyMTU4NCwgMTIxNTg4LCAxMjE1OTIsIDEyMTU5NiwgMTIxNjAwLCAKKyAgICAxMjE2MDQsIDEyMTYwOCwgMTIxNjEyLCAxMjE2MTYsIDEyMTYyMCwgMTIxNjI0LCAxMjE2MjgsIDEyMTYzMiwgMTIxNjM2LCAKKyAgICAxMjE2NDAsIDEyMTY0NCwgMTIxNjQ4LCAxMjE2NTIsIDEyMTY1NiwgMTIxNjYwLCAxMjE2NjQsIDEyMTY2OCwgMTIxNjcyLCAKKyAgICAxMjE2NzYsIDEyMTY4MCwgMTIxNjg0LCAxMjE2ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyMTY5MiwgMTIxNjk4LCAxMjE3MDcsIDEyMTcxNSwgMTIxNzIzLCAxMjE3MzIsIDEyMTc0MSwgMTIxNzUwLCAxMjE3NTksIAorICAgIDEyMTc2OCwgMTIxNzc3LCAxMjE3ODYsIDEyMTc5NSwgMTIxODA0LCAxMjE4MTMsIDAsIDAsIDEyMTgyMiwgMTIxODMxLCAKKyAgICAxMjE4MzksIDEyMTg0NywgMTIxODU2LCAxMjE4NjUsIDEyMTg3NCwgMTIxODgzLCAxMjE4OTIsIDEyMTkwMSwgMTIxOTEwLCAKKyAgICAxMjE5MTksIDEyMTkyOCwgMTIxOTM3LCAwLCAwLCAxMjE5NDYsIDEyMTk1NSwgMTIxOTYzLCAxMjE5NzEsIDEyMTk4MCwgCisgICAgMTIxOTg5LCAxMjE5OTgsIDEyMjAwNywgMTIyMDE2LCAxMjIwMjUsIDEyMjAzNCwgMTIyMDQzLCAxMjIwNTIsIDEyMjA2MSwgCisgICAgMTIyMDcwLCAwLCAxMjIwNzcsIDEyMjA4NiwgMTIyMDk0LCAxMjIxMDIsIDEyMjExMSwgMTIyMTIwLCAxMjIxMjksIAorICAgIDEyMjEzOCwgMTIyMTQ3LCAxMjIxNTYsIDEyMjE2NSwgMTIyMTc0LCAxMjIxODMsIDEyMjE5MiwgMTIyMjAxLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMjIyMDgsIDEyMjIxNSwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzcsIAorICAgIDEyMjI0MiwgMTIyMjQ3LCAxMjIyNTIsIDEyMjI1NywgMCwgMCwgMCwgMCwgMCwgMTIyMjYyLCAxMjIyNjcsIDEyMjI3MywgCisgICAgMTIyMjc5LCAxMjIyODUsIDEyMjI5MCwgMTIyMjk2LCAxMjIzMDIsIDEyMjMwOCwgMTIyMzEzLCAxMjIzMTksIDEyMjMyNSwgCisgICAgMTIyMzMwLCAxMjIzMzUsIDEyMjM0MSwgMTIyMzQ2LCAxMjIzNTIsIDEyMjM1OCwgMTIyMzYzLCAxMjIzNjksIDEyMjM3NSwgCisgICAgMTIyMzgwLCAxMjIzODYsIDEyMjM5MiwgMTIyMzk4LCAxMjI0MDQsIDEyMjQxMCwgMTIyNDIxLCAxMjI0MjgsIDEyMjQzNCwgCisgICAgMTIyNDM3LCAwLCAxMjI0NDAsIDEyMjQ0NSwgMTIyNDUxLCAxMjI0NTcsIDEyMjQ2MywgMTIyNDY4LCAxMjI0NzQsIAorICAgIDEyMjQ4MCwgMTIyNDg2LCAxMjI0OTEsIDEyMjQ5NywgMTIyNTAzLCAxMjI1MDgsIDEyMjUxMywgMTIyNTE5LCAxMjI1MjQsIAorICAgIDEyMjUzMCwgMTIyNTM2LCAxMjI1NDEsIDEyMjU0NywgMTIyNTUzLCAxMjI1NTgsIDEyMjU2NCwgMTIyNTcwLCAxMjI1NzYsIAorICAgIDEyMjU4MiwgMTIyNTg4LCAxMjI1OTEsIDEyMjU5NCwgMTIyNTk3LCAxMjI2MDAsIDEyMjYwMywgMTIyNjA2LCAxMjI2MTIsIAorICAgIDEyMjYxOSwgMTIyNjI2LCAxMjI2MzMsIDEyMjYzOSwgMTIyNjQ2LCAxMjI2NTMsIDEyMjY2MCwgMTIyNjY2LCAxMjI2NzMsIAorICAgIDEyMjY4MCwgMTIyNjg2LCAxMjI2OTIsIDEyMjY5OSwgMTIyNzA1LCAxMjI3MTIsIDEyMjcxOSwgMTIyNzI1LCAxMjI3MzIsIAorICAgIDEyMjczOSwgMTIyNzQ1LCAxMjI3NTIsIDEyMjc1OSwgMTIyNzY2LCAxMjI3NzMsIDEyMjc4MCwgMTIyNzg1LCAwLCAwLCAwLCAKKyAgICAwLCAxMjI3OTAsIDEyMjc5NiwgMTIyODAzLCAxMjI4MTAsIDEyMjgxNywgMTIyODIzLCAxMjI4MzAsIDEyMjgzNywgCisgICAgMTIyODQ0LCAxMjI4NTAsIDEyMjg1NywgMTIyODY0LCAxMjI4NzAsIDEyMjg3NiwgMTIyODgzLCAxMjI4ODksIDEyMjg5NiwgCisgICAgMTIyOTAzLCAxMjI5MDksIDEyMjkxNiwgMTIyOTIzLCAxMjI5MjksIDEyMjkzNiwgMTIyOTQzLCAxMjI5NTAsIDEyMjk1NywgCisgICAgMTIyOTY0LCAxMjI5NzMsIDEyMjk3NywgMTIyOTgwLCAxMjI5ODMsIDEyMjk4NywgMTIyOTkxLCAxMjI5OTQsIDEyMjk5NywgCisgICAgMTIzMDAwLCAxMjMwMDMsIDEyMzAwNiwgMTIzMDA5LCAxMjMwMTIsIDEyMzAxNSwgMTIzMDE4LCAxMjMwMjQsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTMxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI1MzE1LCAKLSAgICAxMjUzMTgsIDEyNTMyMiwgMTI1MzI2LCAxMjUzMjksIDEyNTMzMywgMTI1MzM3LCAxMjUzNDAsIDEyNTM0MywgMTI1MzQ3LCAKLSAgICAxMjUzNTEsIDEyNTM1NCwgMTI1MzU3LCAxMjUzNjAsIDEyNTM2MywgMTI1MzY4LCAxMjUzNzEsIDEyNTM3NSwgMTI1Mzc4LCAKLSAgICAxMjUzODEsIDEyNTM4NCwgMTI1Mzg3LCAxMjUzOTAsIDEyNTM5MywgMTI1Mzk2LCAxMjUzOTksIDEyNTQwMiwgMTI1NDA1LCAKLSAgICAxMjU0MDgsIDEyNTQxMiwgMTI1NDE2LCAxMjU0MjAsIDEyNTQyNCwgMTI1NDI5LCAxMjU0MzQsIDEyNTQ0MCwgMTI1NDQ2LCAKLSAgICAxMjU0NTIsIDEyNTQ1NywgMTI1NDYzLCAxMjU0NjksIDEyNTQ3NSwgMTI1NDgwLCAxMjU0ODYsIDEyNTQ5MiwgMTI1NDk3LCAKLSAgICAxMjU1MDIsIDEyNTUwNywgMTI1NTEyLCAxMjU1MTgsIDEyNTUyNCwgMTI1NTI5LCAxMjU1MzQsIDEyNTU0MCwgMTI1NTQ1LCAKLSAgICAxMjU1NTEsIDEyNTU1NywgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgMTI1NTc5LCAxMjU1ODQsIDEyNTU4OCwgMTI1NTkzLCAKLSAgICAxMjU1OTcsIDEyNTYwMiwgMTI1NjA3LCAxMjU2MTMsIDEyNTYxOSwgMTI1NjI1LCAxMjU2MzAsIDEyNTYzNiwgMTI1NjQyLCAKLSAgICAxMjU2NDgsIDEyNTY1MywgMTI1NjU5LCAxMjU2NjUsIDEyNTY3MCwgMTI1Njc1LCAxMjU2ODAsIDEyNTY4NSwgMTI1NjkxLCAKLSAgICAxMjU2OTcsIDEyNTcwMiwgMTI1NzA3LCAxMjU3MTMsIDEyNTcxOCwgMTI1NzI0LCAxMjU3MzAsIDEyNTczNiwgMTI1NzQyLCAKLSAgICAxMjU3NDgsIDEyNTc1MywgMTI1NzU3LCAxMjU3NjIsIDEyNTc2NSwgMTI1NzY5LCAxMjU3NzIsIDEyNTc3NSwgMTI1Nzc4LCAKLSAgICAxMjU3ODEsIDEyNTc4NCwgMTI1Nzg3LCAxMjU3OTAsIDEyNTc5MywgMTI1Nzk2LCAxMjU3OTksIDEyNTgwMiwgMTI1ODA1LCAKLSAgICAxMjU4MDgsIDEyNTgxMSwgMTI1ODE0LCAxMjU4MTcsIDEyNTgyMCwgMTI1ODIzLCAxMjU4MjYsIDEyNTgyOSwgMTI1ODMyLCAKLSAgICAxMjU4MzUsIDEyNTgzOCwgMTI1ODQxLCAxMjU4NDQsIDEyNTg0NywgMTI1ODUwLCAxMjU4NTMsIDEyNTg1NiwgMTI1ODU5LCAKLSAgICAxMjU4NjIsIDEyNTg2NSwgMTI1ODY4LCAxMjU4NzEsIDEyNTg3NCwgMTI1ODc3LCAxMjU4ODAsIDEyNTg4MywgMTI1ODg2LCAKLSAgICAxMjU4ODksIDEyNTg5MiwgMTI1ODk1LCAxMjU4OTgsIDEyNTkwMSwgMTI1OTA0LCAxMjU5MDcsIDEyNTkxMCwgMTI1OTEzLCAKLSAgICAxMjU5MTYsIDEyNTkxOSwgMTI1OTIyLCAxMjU5MjUsIDEyNTkyOCwgMTI1OTMxLCAxMjU5MzQsIDEyNTkzNywgMTI1OTQwLCAKLSAgICAxMjU5NDMsIDEyNTk0NiwgMTI1OTQ5LCAxMjU5NTIsIDEyNTk1NSwgMTI1OTU4LCAxMjU5NjEsIDEyNTk2NCwgMTI1OTY3LCAKLSAgICAxMjU5NzAsIDEyNTk3MywgMTI1OTc2LCAxMjU5NzksIDEyNTk4MiwgMTI1OTg1LCAxMjU5ODgsIDEyNTk5MSwgMTI1OTk0LCAKLSAgICAxMjU5OTcsIDEyNjAwMCwgMTI2MDAzLCAxMjYwMDYsIDEyNjAwOSwgMTI2MDEyLCAxMjYwMTUsIDEyNjAxOCwgMTI2MDIxLCAKLSAgICAxMjYwMjQsIDEyNjAyNywgMTI2MDMwLCAxMjYwMzMsIDEyNjAzNiwgMTI2MDM5LCAxMjYwNDIsIDEyNjA0NSwgMTI2MDQ4LCAKLSAgICAxMjYwNTEsIDEyNjA1NCwgMTI2MDU3LCAxMjYwNjAsIDEyNjA2MywgMTI2MDY2LCAxMjYwNjksIDEyNjA3MiwgMTI2MDc1LCAKLSAgICAxMjYwNzgsIDEyNjA4MSwgMTI2MDg0LCAxMjYwODcsIDEyNjA5MCwgMTI2MDkzLCAxMjYwOTYsIDEyNjA5OSwgMTI2MTAyLCAKLSAgICAxMjYxMDUsIDEyNjEwOCwgMTI2MTExLCAxMjYxMTQsIDEyNjExNywgMTI2MTIwLCAxMjYxMjMsIDEyNjEyNiwgMTI2MTI5LCAKLSAgICAxMjYxMzIsIDEyNjEzNSwgMTI2MTM4LCAxMjYxNDEsIDEyNjE0NCwgMTI2MTQ3LCAxMjYxNTAsIDEyNjE1MywgMTI2MTU2LCAKLSAgICAxMjYxNTksIDEyNjE2MiwgMTI2MTY1LCAxMjYxNjgsIDEyNjE3MSwgMTI2MTc0LCAxMjYxNzcsIDEyNjE4MCwgMTI2MTgzLCAKLSAgICAxMjYxODYsIDEyNjE4OSwgMTI2MTkyLCAxMjYxOTUsIDEyNjE5OCwgMTI2MjAxLCAxMjYyMDQsIDEyNjIwNywgMTI2MjEwLCAKLSAgICAxMjYyMTMsIDEyNjIxNiwgMTI2MjE5LCAxMjYyMjIsIDEyNjIyNSwgMTI2MjI4LCAxMjYyMzEsIDEyNjIzNCwgMTI2MjM3LCAKLSAgICAxMjYyNDAsIDEyNjI0MywgMTI2MjQ2LCAxMjYyNDksIDEyNjI1MiwgMTI2MjU1LCAxMjYyNTgsIDEyNjI2MSwgMTI2MjY0LCAKLSAgICAxMjYyNjcsIDEyNjI3MCwgMTI2MjczLCAxMjYyNzYsIDEyNjI3OSwgMTI2MjgyLCAxMjYyODUsIDEyNjI4OCwgMTI2MjkxLCAKLSAgICAxMjYyOTQsIDEyNjI5NywgMTI2MzAwLCAxMjYzMDMsIDEyNjMwNiwgMTI2MzA5LCAxMjYzMTIsIDEyNjMxNSwgMTI2MzE4LCAKLSAgICAxMjYzMjEsIDEyNjMyNCwgMTI2MzI3LCAxMjYzMzAsIDEyNjMzMywgMTI2MzM2LCAxMjYzMzksIDEyNjM0MiwgMTI2MzQ1LCAKLSAgICAxMjYzNDgsIDEyNjM1MSwgMTI2MzU0LCAxMjYzNTcsIDEyNjM2MCwgMTI2MzYzLCAxMjYzNjYsIDEyNjM2OSwgMTI2MzcyLCAKLSAgICAxMjYzNzUsIDEyNjM3OCwgMTI2MzgxLCAxMjYzODQsIDEyNjM4NywgMTI2MzkwLCAxMjYzOTMsIDEyNjM5NiwgMTI2Mzk5LCAKLSAgICAxMjY0MDIsIDEyNjQwNSwgMTI2NDA4LCAxMjY0MTEsIDEyNjQxNCwgMTI2NDE3LCAxMjY0MjAsIDEyNjQyMywgMTI2NDI2LCAKLSAgICAxMjY0MjksIDEyNjQzMiwgMTI2NDM1LCAxMjY0MzgsIDEyNjQ0MSwgMTI2NDQ0LCAxMjY0NDcsIDEyNjQ1MCwgMTI2NDUzLCAKLSAgICAxMjY0NTYsIDEyNjQ1OSwgMTI2NDYyLCAxMjY0NjUsIDEyNjQ2OCwgMTI2NDcxLCAxMjY0NzQsIDEyNjQ3NywgMTI2NDgwLCAKLSAgICAxMjY0ODMsIDEyNjQ4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTIzMDI3LCAxMjMwMzQsIDEyMzA0MiwgMTIzMDUwLCAxMjMwNTgsIDEyMzA2NSwgMTIzMDczLCAxMjMwODEsIDEyMzA4OSwgCisgICAgMTIzMDk2LCAxMjMxMDQsIDEyMzExMiwgMTIzMTE5LCAxMjMxMjYsIDEyMzEzNCwgMTIzMTQxLCAxMjMxNDksIDEyMzE1NywgCisgICAgMTIzMTY0LCAxMjMxNzIsIDEyMzE4MCwgMTIzMTg3LCAxMjMxOTUsIDEyMzIwMywgMTIzMjExLCAxMjMyMTksIDEyMzIyNywgCisgICAgMTIzMjMxLCAxMjMyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzIzOCwgMTIzMjQ0LCAKKyAgICAxMjMyNTAsIDEyMzI1NiwgMTIzMjYwLCAxMjMyNjYsIDEyMzI3MiwgMTIzMjc4LCAxMjMyODQsIDEyMzI5MCwgMTIzMjk2LCAKKyAgICAxMjMzMDIsIDEyMzMwOCwgMTIzMzE0LCAxMjMzMjAsIDEyMzMyNiwgMTIzMzMyLCAxMjMzMzgsIDEyMzM0NCwgMTIzMzUwLCAKKyAgICAxMjMzNTYsIDEyMzM2MiwgMTIzMzY4LCAxMjMzNzQsIDEyMzM4MCwgMTIzMzg2LCAxMjMzOTIsIDEyMzM5OCwgMTIzNDA0LCAKKyAgICAxMjM0MTAsIDEyMzQxNiwgMTIzNDIyLCAxMjM0MjgsIDEyMzQzNCwgMTIzNDQwLCAxMjM0NDYsIDEyMzQ1MiwgMTIzNDU4LCAKKyAgICAxMjM0NjQsIDEyMzQ3MCwgMTIzNDc2LCAxMjM0ODIsIDEyMzQ4OCwgMCwgMCwgMCwgMCwgMCwgMTIzNDk0LCAxMjM1MDUsIAorICAgIDEyMzUxNiwgMTIzNTI3LCAxMjM1MzgsIDEyMzU0OSwgMTIzNTYwLCAxMjM1NzEsIDEyMzU4MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTIzNTkzLCAxMjM1OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEyMzYwMSwgMTIzNjAzLCAxMjM2MDUsIDEyMzYwOSwgMTIzNjE0LCAxMjM2MTksIDEyMzYyMSwgCisgICAgMTIzNjI3LCAxMjM2MzIsIDEyMzYzNCwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0NiwgMTIzNjUwLCAxMjM2NTYsIDEyMzY2MiwgCisgICAgMTIzNjY4LCAxMjM2NzMsIDEyMzY3NywgMTIzNjg0LCAxMjM2OTEsIDEyMzY5OCwgMTIzNzAzLCAxMjM3MTAsIDEyMzcxNywgCisgICAgMTIzNzI0LCAxMjM3MjgsIDEyMzczNCwgMTIzNzQzLCAxMjM3NTIsIDEyMzc1OSwgMTIzNzY0LCAxMjM3NjgsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMzc3MiwgMTIzNzc0LCAxMjM3NzYsIDEyMzc4MCwgCisgICAgMTIzNzg0LCAxMjM3ODgsIDAsIDEyMzc5MCwgMTIzNzkyLCAxMjM3OTYsIDEyMzc5OCwgMTIzODAwLCAxMjM4MDIsIAorICAgIDEyMzgwNCwgMTIzODA5LCAxMjM4MTQsIDEyMzgxNiwgMTIzODIyLCAxMjM4MjYsIDEyMzgzMCwgMTIzODM4LCAxMjM4NDAsIAorICAgIDEyMzg0MiwgMTIzODQ0LCAxMjM4NDYsIDEyMzg0OCwgMTIzODUwLCAxMjM4NTIsIDEyMzg1NCwgMTIzODU2LCAxMjM4NTgsIAorICAgIDEyMzg2MiwgMTIzODY2LCAxMjM4NjgsIDEyMzg3MCwgMTIzODcyLCAxMjM4NzQsIDEyMzg3NiwgMTIzODgxLCAxMjM4ODcsIAorICAgIDEyMzg5MSwgMTIzODk1LCAxMjM4OTksIDEyMzkwMywgMTIzOTA4LCAxMjM5MTIsIDEyMzkxNCwgMTIzOTE2LCAxMjM5MjAsIAorICAgIDEyMzkyNiwgMTIzOTI4LCAxMjM5MzAsIDEyMzkzMiwgMTIzOTM2LCAxMjM5NDUsIDEyMzk1MSwgMTIzOTU1LCAxMjM5NTksIAorICAgIDEyMzk2MSwgMTIzOTYzLCAxMjM5NjYsIDEyMzk2OCwgMTIzOTcwLCAxMjM5NzIsIDEyMzk3NiwgMTIzOTc4LCAxMjM5ODIsIAorICAgIDEyMzk4NywgMTIzOTg5LCAxMjM5OTQsIDEyNDAwMCwgMTI0MDA3LCAxMjQwMTEsIDEyNDAxNSwgMTI0MDE5LCAxMjQwMjMsIAorICAgIDEyNDAyOSwgMCwgMCwgMCwgMTI0MDMzLCAxMjQwMzUsIDEyNDAzOSwgMTI0MDQzLCAxMjQwNDUsIDEyNDA0OSwgMTI0MDUzLCAKKyAgICAxMjQwNTUsIDEyNDA1OSwgMTI0MDYxLCAxMjQwNjUsIDEyNDA2OSwgMTI0MDczLCAxMjQwNzcsIDEyNDA4MSwgMTI0MDg1LCAKKyAgICAxMjQwODksIDEyNDA5MywgMTI0MDk5LCAxMjQxMDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEyNDEwNywgMTI0MTExLCAxMjQxMTUsIDEyNDExOSwgMTI0MTI2LCAxMjQxMjgsIDEyNDEzMiwgMTI0MTM0LCAxMjQxMzYsIAorICAgIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MCwgMTI0MTU0LCAxMjQxNTgsIDEyNDE2MiwgMTI0MTY2LCAxMjQxNzAsIAorICAgIDEyNDE3MiwgMTI0MTc2LCAxMjQxNzgsIDEyNDE4NCwgMTI0MTg3LCAxMjQxOTIsIDEyNDE5NCwgMTI0MTk2LCAxMjQxOTksIAorICAgIDEyNDIwMSwgMTI0MjAzLCAxMjQyMDYsIDEyNDIxMywgMTI0MjIwLCAxMjQyMjcsIDEyNDIzMiwgMTI0MjM2LCAxMjQyMzgsIAorICAgIDEyNDI0MCwgMCwgMTI0MjQyLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDI1OCwgMTI0MjYyLCAxMjQyNjcsIDEyNDI3MSwgCisgICAgMTI0Mjc3LCAxMjQyODMsIDEyNDI4NSwgMTI0Mjg3LCAxMjQyOTMsIDEyNDI5NSwgMTI0Mjk5LCAxMjQzMDMsIDEyNDMwNSwgCisgICAgMTI0MzA5LCAxMjQzMTEsIDEyNDMxNSwgMTI0MzE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjQzMjMsIDEyNDMyNSwgMTI0MzI3LCAxMjQzMjksIDEyNDMzMywgMTI0MzM1LCAxMjQzMzcsIDEyNDMzOSwgCisgICAgMTI0MzQxLCAxMjQzNDMsIDEyNDM0NSwgMTI0MzQ3LCAxMjQzNDksIDEyNDM1MSwgMTI0MzUzLCAxMjQzNTUsIDEyNDM1NywgCisgICAgMTI0MzU5LCAxMjQzNjEsIDEyNDM2MywgMTI0MzY1LCAxMjQzNjcsIDEyNDM2OSwgMTI0MzcxLCAxMjQzNzMsIDEyNDM3NSwgCisgICAgMTI0Mzc3LCAxMjQzODEsIDEyNDM4MywgMTI0Mzg1LCAxMjQzODcsIDEyNDM5MSwgMTI0MzkzLCAxMjQzOTcsIDEyNDM5OSwgCisgICAgMTI0NDAxLCAxMjQ0MDUsIDEyNDQwOSwgMTI0NDE1LCAxMjQ0MTcsIDEyNDQxOSwgMTI0NDIxLCAxMjQ0MjMsIDEyNDQyNywgCisgICAgMTI0NDMxLCAxMjQ0MzMsIDEyNDQzNywgMTI0NDQxLCAxMjQ0NDUsIDEyNDQ0OSwgMTI0NDUzLCAxMjQ0NTcsIDEyNDQ2MSwgCisgICAgMTI0NDY1LCAxMjQ0NjksIDEyNDQ3MywgMTI0NDc3LCAxMjQ0ODEsIDEyNDQ4NSwgMTI0NDg5LCAxMjQ0OTMsIDEyNDQ5NywgCisgICAgMTI0NTAxLCAwLCAxMjQ1MDUsIDAsIDEyNDUwNywgMTI0NTA5LCAxMjQ1MTEsIDEyNDUxMywgMTI0NTE1LCAxMjQ1MjMsIAorICAgIDEyNDUzMSwgMTI0NTM5LCAxMjQ1NDcsIDEyNDU1MiwgMTI0NTU3LCAxMjQ1NjIsIDEyNDU2NiwgMTI0NTcwLCAxMjQ1NzUsIAorICAgIDEyNDU3OSwgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4NywgMTI0NTg5LCAxMjQ1OTEsIDEyNDU5MywgMTI0NTk1LCAxMjQ1OTcsIAorICAgIDEyNDU5OSwgMTI0NjAzLCAxMjQ2MDUsIDEyNDYwNywgMTI0NjA5LCAxMjQ2MTMsIDEyNDYxNywgMTI0NjIxLCAxMjQ2MjUsIAorICAgIDEyNDYyOSwgMTI0NjMxLCAxMjQ2MzcsIDEyNDY0MywgMTI0NjQ1LCAxMjQ2NDcsIDEyNDY0OSwgMTI0NjUxLCAxMjQ2NTMsIAorICAgIDEyNDY2MiwgMTI0NjY5LCAxMjQ2NzYsIDEyNDY4MCwgMTI0Njg3LCAxMjQ2OTIsIDEyNDY5OSwgMTI0NzA4LCAxMjQ3MTMsIAorICAgIDEyNDcxNywgMTI0NzIxLCAxMjQ3MjMsIDEyNDcyNywgMTI0NzI5LCAxMjQ3MzMsIDEyNDczNywgMTI0NzM5LCAxMjQ3NDMsIAorICAgIDEyNDc0NywgMTI0NzUxLCAxMjQ3NTMsIDEyNDc1NSwgMTI0NzYxLCAxMjQ3NjMsIDEyNDc2NSwgMTI0NzY3LCAxMjQ3NzEsIAorICAgIDEyNDc3NSwgMTI0Nzc3LCAxMjQ3ODEsIDEyNDc4MywgMTI0Nzg1LCAxMjQ3ODgsIDEyNDc5MiwgMTI0Nzk0LCAxMjQ3OTgsIAorICAgIDEyNDgwMCwgMTI0ODAyLCAxMjQ4MDcsIDEyNDgwOSwgMTI0ODEzLCAxMjQ4MTcsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIAorICAgIDEyNDgzMiwgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTMsIDEyNDg1NywgMTI0ODYxLCAxMjQ4NzAsIAorICAgIDEyNDg3NSwgMTI0ODc4LCAxMjQ4ODAsIDEyNDg4MywgMTI0ODg2LCAxMjQ4OTEsIDEyNDg5MywgMTI0ODk2LCAxMjQ5MDEsIAorICAgIDEyNDkwNSwgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTE5LCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIAorICAgIDEyNDk0MCwgMTI0OTQ2LCAxMjQ5NTIsIDEyNDk1OCwgMTI0OTY0LCAxMjQ5NjksIDEyNDk4MCwgMTI0OTgyLCAxMjQ5ODYsIAorICAgIDEyNDk4OCwgMTI0OTkwLCAxMjQ5OTQsIDEyNDk5OCwgMTI1MDAwLCAxMjUwMDQsIDEyNTAwOSwgMTI1MDE0LCAxMjUwMjAsIAorICAgIDEyNTAyMiwgMTI1MDI2LCAxMjUwMzAsIDEyNTAzNywgMTI1MDQ0LCAxMjUwNDgsIDEyNTA1MCwgMTI1MDUyLCAxMjUwNTYsIAorICAgIDEyNTA1OCwgMTI1MDYyLCAxMjUwNjYsIDEyNTA3MCwgMTI1MDcyLCAxMjUwNzQsIDEyNTA4MSwgMTI1MDg1LCAxMjUwODgsIAorICAgIDEyNTA5MiwgMTI1MDk2LCAxMjUxMDAsIDEyNTEwMiwgMTI1MTA2LCAxMjUxMDgsIDEyNTExMCwgMTI1MTE0LCAxMjUxMTYsIAorICAgIDEyNTEyMCwgMTI1MTI0LCAxMjUxMzAsIDEyNTEzNCwgMTI1MTM4LCAxMjUxNDIsIDEyNTE0NCwgMTI1MTQ3LCAxMjUxNTEsIAorICAgIDEyNTE1OCwgMTI1MTY3LCAxMjUxNzYsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTQsIDEyNTE5OCwgMTI1MjAwLCAxMjUyMDQsIAorICAgIDEyNTIxNSwgMTI1MjE5LCAxMjUyMjUsIDEyNTIzMSwgMTI1MjM2LCAwLCAxMjUyMzgsIDEyNTI0MiwgMTI1MjQ0LCAKKyAgICAxMjUyNDYsIDAsIDAsIDAsIDEyNTI0OCwgMTI1MjUzLCAxMjUyNjMsIDEyNTI3OCwgMTI1MjkwLCAxMjUzMDIsIDEyNTMwNiwgCisgICAgMTI1MzEwLCAxMjUzMTYsIDEyNTMxOCwgMTI1MzI2LCAxMjUzMzQsIDEyNTMzNiwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgCisgICAgMTI1MzU5LCAxMjUzNjYsIDEyNTM2OCwgMTI1MzcwLCAxMjUzNzMsIDEyNTM3NSwgMTI1MzgxLCAxMjUzODMsIDEyNTM4NiwgCisgICAgMTI1MzkwLCAxMjUzOTYsIDEyNTQwMiwgMTI1NDEzLCAxMjU0MTksIDEyNTQyNiwgMTI1NDM0LCAxMjU0MzgsIDEyNTQ0NiwgCisgICAgMTI1NDU0LCAxMjU0NjAsIDEyNTQ2NiwgMTI1NDczLCAxMjU0NzUsIDEyNTQ3OSwgMTI1NDgxLCAxMjU0ODMsIDEyNTQ4OCwgCisgICAgMTI1NDkwLCAxMjU0OTIsIDEyNTQ5NCwgMTI1NDk2LCAxMjU1MDAsIDEyNTUxMSwgMTI1NTE3LCAxMjU1MjEsIDEyNTUyNSwgCisgICAgMTI1NTI5LCAxMjU1MzUsIDEyNTU0MSwgMTI1NTQ3LCAxMjU1NTMsIDEyNTU1OCwgMTI1NTYzLCAxMjU1NjksIDEyNTU3NSwgCisgICAgMTI1NTgyLCAwLCAwLCAxMjU1ODksIDEyNTU5NCwgMTI1NjAyLCAxMjU2MDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDEyNTYxNSwgMTI1NjIyLCAxMjU2MjksIDEyNTYzNiwgMTI1NjQ0LCAxMjU2NTIsIDEyNTY2MCwgMTI1NjY4LCAKKyAgICAxMjU2NzYsIDEyNTY4NCwgMTI1NjkyLCAxMjU3MDAsIDEyNTcwOCwgMTI1NzE0LCAxMjU3MjAsIDEyNTcyNiwgMTI1NzMyLCAKKyAgICAxMjU3MzgsIDEyNTc0NCwgMTI1NzUwLCAxMjU3NTYsIDEyNTc2MiwgMTI1NzY4LCAxMjU3NzQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNTc4MCwgCisgICAgMTI1Nzg0LCAxMjU3ODgsIDEyNTc5MywgMTI1Nzk4LCAxMjU4MDAsIDEyNTgwNCwgMTI1ODEzLCAxMjU4MjEsIDEyNTgyOSwgCisgICAgMTI1ODQyLCAxMjU4NTUsIDEyNTg2OCwgMTI1ODc1LCAxMjU4ODIsIDEyNTg4NiwgMTI1ODk1LCAxMjU5MDMsIDEyNTkwNywgCisgICAgMTI1OTE2LCAxMjU5MjMsIDEyNTkyNywgMTI1OTMxLCAxMjU5MzUsIDEyNTkzOSwgMTI1OTQ2LCAxMjU5NTAsIDEyNTk1NCwgCisgICAgMTI1OTU4LCAxMjU5NjIsIDEyNTk2OSwgMTI1OTc4LCAxMjU5ODcsIDEyNTk5NCwgMTI2MDA2LCAxMjYwMTgsIDEyNjAyMiwgCisgICAgMTI2MDI2LCAxMjYwMzAsIDEyNjAzNCwgMTI2MDM4LCAxMjYwNDIsIDEyNjA1MCwgMTI2MDU4LCAxMjYwNjYsIDEyNjA3MCwgCisgICAgMTI2MDc0LCAxMjYwNzgsIDEyNjA4MiwgMTI2MDg2LCAxMjYwOTAsIDEyNjA5NiwgMTI2MTAyLCAxMjYxMDYsIDEyNjExNywgCisgICAgMTI2MTI1LCAxMjYxMjksIDEyNjEzMywgMTI2MTM3LCAxMjYxNDEsIDEyNjE0NywgMTI2MTU0LCAxMjYxNjUsIDEyNjE3NSwgCisgICAgMTI2MTg1LCAxMjYxOTYsIDEyNjIwNSwgMTI2MjE2LCAxMjYyMjIsIDEyNjIyOCwgMCwgMCwgMCwgMCwgMTI2MjM0LCAKKyAgICAxMjYyNDMsIDEyNjI1MCwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzcsIDEyNjI4OSwgMTI2MjkzLCAKKyAgICAxMjYzMDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEyNjMwNywgMTI2MzA5LCAxMjYzMTEsIDEyNjMxNSwgMTI2MzE5LCAxMjYzMjMsIDEyNjMzMiwgMTI2MzM0LCAKKyAgICAxMjYzMzYsIDEyNjMzOSwgMTI2MzQxLCAxMjYzNDMsIDEyNjM0NywgMTI2MzQ5LCAxMjYzNTMsIDEyNjM1NSwgMTI2MzU5LCAKKyAgICAxMjYzNjEsIDEyNjM2MywgMTI2MzY3LCAxMjYzNzEsIDEyNjM3NywgMTI2Mzc5LCAxMjYzODMsIDEyNjM4NSwgMTI2Mzg5LCAKKyAgICAxMjYzOTMsIDEyNjM5NywgMTI2NDAxLCAxMjY0MDMsIDEyNjQwNSwgMTI2NDA5LCAxMjY0MTMsIDEyNjQxNywgMTI2NDIxLCAKKyAgICAxMjY0MjMsIDEyNjQyNSwgMTI2NDI3LCAxMjY0MzIsIDEyNjQzNywgMTI2NDQwLCAxMjY0NDgsIDEyNjQ1NiwgMTI2NDU4LCAKKyAgICAxMjY0NjMsIDEyNjQ2NiwgMTI2NDcxLCAxMjY0ODIsIDEyNjQ4OSwgMTI2NDk0LCAxMjY0OTksIDEyNjUwMSwgMTI2NTA1LCAKKyAgICAxMjY1MDcsIDEyNjUxMSwgMTI2NTEzLCAxMjY1MTcsIDEyNjUyMSwgMTI2NTI0LCAxMjY1MjcsIDEyNjUyOSwgMTI2NTMyLCAKKyAgICAxMjY1MzQsIDEyNjUzOCwgMTI2NTQwLCAxMjY1NDIsIDEyNjU0NCwgMTI2NTQ4LCAxMjY1NTAsIDEyNjU1NCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI2NTU3LCAxMjY1NjIsIDEyNjU2NywgMTI2NTcyLCAxMjY1NzcsIDEyNjU4MiwgCisgICAgMTI2NTg3LCAxMjY1OTQsIDEyNjYwMSwgMTI2NjA4LCAxMjY2MTUsIDEyNjYyMCwgMTI2NjI1LCAxMjY2MzAsIDEyNjYzNSwgCisgICAgMTI2NjQyLCAxMjY2NDgsIDEyNjY1NSwgMTI2NjYyLCAxMjY2NjksIDEyNjY3NCwgMTI2Njc5LCAxMjY2ODQsIDEyNjY4OSwgCisgICAgMTI2Njk0LCAxMjY3MDEsIDEyNjcwOCwgMTI2NzEzLCAxMjY3MTgsIDEyNjcyNSwgMTI2NzMyLCAxMjY3NDAsIDEyNjc0OCwgCisgICAgMTI2NzU1LCAxMjY3NjIsIDEyNjc3MCwgMTI2Nzc4LCAxMjY3ODYsIDEyNjc5MywgMTI2ODAzLCAxMjY4MTQsIDEyNjgxOSwgCisgICAgMTI2ODI2LCAxMjY4MzMsIDEyNjg0MCwgMTI2ODQ4LCAxMjY4NTYsIDEyNjg2NywgMTI2ODc1LCAxMjY4ODMsIDEyNjg5MSwgCisgICAgMTI2ODk2LCAxMjY5MDEsIDEyNjkwNiwgMTI2OTExLCAxMjY5MTYsIDEyNjkyMSwgMTI2OTI2LCAxMjY5MzEsIDEyNjkzNiwgCisgICAgMTI2OTQxLCAxMjY5NDYsIDEyNjk1MSwgMTI2OTU4LCAxMjY5NjMsIDEyNjk2OCwgMTI2OTc1LCAxMjY5ODAsIDEyNjk4NSwgCisgICAgMTI2OTkwLCAxMjY5OTUsIDEyNzAwMCwgMTI3MDA1LCAxMjcwMTAsIDEyNzAxNSwgMTI3MDIwLCAxMjcwMjUsIDEyNzAzMCwgCisgICAgMTI3MDM1LCAxMjcwNDIsIDEyNzA1MCwgMTI3MDU1LCAxMjcwNjAsIDEyNzA2NywgMTI3MDcyLCAxMjcwNzcsIDEyNzA4MiwgCisgICAgMTI3MDg5LCAxMjcwOTQsIDEyNzEwMSwgMTI3MTA2LCAxMjcxMTMsIDEyNzExOCwgMTI3MTI3LCAxMjcxMzYsIDEyNzE0MSwgCisgICAgMTI3MTQ2LCAxMjcxNTEsIDEyNzE1NiwgMTI3MTYxLCAxMjcxNjYsIDEyNzE3MSwgMTI3MTc2LCAxMjcxODEsIDEyNzE4NiwgCisgICAgMTI3MTkxLCAxMjcxOTYsIDEyNzIwMSwgMTI3MjA5LCAxMjcyMTcsIDEyNzIyMiwgMTI3MjI3LCAxMjcyMzIsIDEyNzIzNywgCisgICAgMTI3MjQyLCAxMjcyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI1NCwgMTI3MjU4LCAKKyAgICAxMjcyNjIsIDEyNzI2NiwgMTI3MjcwLCAxMjcyNzQsIDEyNzI3OCwgMTI3MjgyLCAxMjcyODYsIDEyNzI5MCwgMTI3Mjk0LCAKKyAgICAxMjcyOTgsIDEyNzMwMiwgMTI3MzA2LCAxMjczMTAsIDEyNzMxNCwgMTI3MzE4LCAxMjczMjIsIDEyNzMyNiwgMTI3MzMwLCAKKyAgICAxMjczMzQsIDEyNzMzOCwgMTI3MzQyLCAxMjczNDYsIDEyNzM1MCwgMTI3MzU0LCAxMjczNTgsIDEyNzM2MiwgMTI3MzY2LCAKKyAgICAxMjczNzAsIDEyNzM3NCwgMTI3Mzc4LCAxMjczODIsIDEyNzM4NiwgMTI3MzkwLCAxMjczOTQsIDEyNzM5OCwgMTI3NDAyLCAKKyAgICAxMjc0MDYsIDEyNzQxMCwgMTI3NDE0LCAxMjc0MTgsIDEyNzQyMiwgMTI3NDI2LCAxMjc0MzAsIDEyNzQzNCwgMTI3NDM4LCAKKyAgICAxMjc0NDIsIDEyNzQ0NiwgMTI3NDUwLCAxMjc0NTQsIDEyNzQ1OCwgMTI3NDYyLCAxMjc0NjYsIDEyNzQ3MCwgMTI3NDc0LCAKKyAgICAxMjc0NzgsIDEyNzQ4MiwgMTI3NDg2LCAxMjc0OTAsIDEyNzQ5NCwgMTI3NDk4LCAxMjc1MDIsIDEyNzUwNiwgMTI3NTEwLCAKKyAgICAxMjc1MTQsIDEyNzUxOCwgMTI3NTIyLCAxMjc1MjYsIDEyNzUzMCwgMTI3NTM0LCAxMjc1MzgsIDEyNzU0MiwgMTI3NTQ2LCAKKyAgICAxMjc1NTAsIDEyNzU1NCwgMTI3NTU4LCAxMjc1NjIsIDEyNzU2NiwgMTI3NTcwLCAxMjc1NzQsIDEyNzU3OCwgMTI3NTgyLCAKKyAgICAxMjc1ODYsIDEyNzU5MCwgMTI3NTk0LCAxMjc1OTgsIDEyNzYwMiwgMTI3NjA2LCAxMjc2MTAsIDEyNzYxNCwgMTI3NjE4LCAKKyAgICAxMjc2MjIsIDEyNzYyNiwgMTI3NjMwLCAxMjc2MzQsIDEyNzYzOCwgMTI3NjQyLCAxMjc2NDYsIDEyNzY1MCwgMTI3NjU0LCAKKyAgICAxMjc2NTgsIDEyNzY2MiwgMTI3NjY2LCAxMjc2NzAsIDEyNzY3NCwgMTI3Njc4LCAxMjc2ODIsIDEyNzY4NiwgMTI3NjkwLCAKKyAgICAxMjc2OTQsIDEyNzY5OCwgMTI3NzAyLCAxMjc3MDYsIDEyNzcxMCwgMTI3NzE0LCAxMjc3MTgsIDEyNzcyMiwgMTI3NzI2LCAKKyAgICAxMjc3MzAsIDEyNzczNCwgMTI3NzM4LCAxMjc3NDIsIDEyNzc0NiwgMTI3NzUwLCAxMjc3NTQsIDEyNzc1OCwgMTI3NzYyLCAKKyAgICAxMjc3NjYsIDEyNzc3MCwgMTI3Nzc0LCAxMjc3NzgsIDEyNzc4MiwgMTI3Nzg2LCAxMjc3OTAsIDEyNzc5NCwgMTI3Nzk4LCAKKyAgICAxMjc4MDIsIDEyNzgwNiwgMTI3ODEwLCAxMjc4MTQsIDEyNzgxOCwgMTI3ODIyLCAxMjc4MjYsIDEyNzgzMCwgMTI3ODM0LCAKKyAgICAxMjc4MzgsIDEyNzg0MiwgMTI3ODQ2LCAxMjc4NTAsIDEyNzg1NCwgMTI3ODU4LCAxMjc4NjIsIDEyNzg2NiwgMTI3ODcwLCAKKyAgICAxMjc4NzQsIDEyNzg3OCwgMTI3ODgyLCAxMjc4ODYsIDEyNzg5MCwgMTI3ODk0LCAxMjc4OTgsIDEyNzkwMiwgMTI3OTA2LCAKKyAgICAxMjc5MTAsIDEyNzkxNCwgMTI3OTE4LCAxMjc5MjIsIDEyNzkyNiwgMTI3OTMwLCAxMjc5MzQsIDEyNzkzOCwgMTI3OTQyLCAKKyAgICAxMjc5NDYsIDEyNzk1MCwgMTI3OTU0LCAxMjc5NTgsIDEyNzk2MiwgMTI3OTY2LCAxMjc5NzAsIDEyNzk3NCwgMTI3OTc4LCAKKyAgICAxMjc5ODIsIDEyNzk4NiwgMTI3OTkwLCAxMjc5OTQsIDEyNzk5OCwgMTI4MDAyLCAxMjgwMDYsIDEyODAxMCwgMTI4MDE0LCAKKyAgICAxMjgwMTgsIDEyODAyMiwgMTI4MDI2LCAxMjgwMzAsIDEyODAzNCwgMTI4MDM4LCAxMjgwNDIsIDEyODA0NiwgMTI4MDUwLCAKKyAgICAxMjgwNTQsIDEyODA1OCwgMTI4MDYyLCAxMjgwNjYsIDEyODA3MCwgMTI4MDc0LCAxMjgwNzgsIDEyODA4MiwgMTI4MDg2LCAKKyAgICAxMjgwOTAsIDEyODA5NCwgMTI4MDk4LCAxMjgxMDIsIDEyODEwNiwgMTI4MTEwLCAxMjgxMTQsIDEyODExOCwgMTI4MTIyLCAKKyAgICAxMjgxMjYsIDEyODEzMCwgMTI4MTM0LCAxMjgxMzgsIDEyODE0MiwgMTI4MTQ2LCAxMjgxNTAsIDEyODE1NCwgMTI4MTU4LCAKKyAgICAxMjgxNjIsIDEyODE2NiwgMTI4MTcwLCAxMjgxNzQsIDEyODE3OCwgMTI4MTgyLCAxMjgxODYsIDEyODE5MCwgMTI4MTk0LCAKKyAgICAxMjgxOTgsIDEyODIwMiwgMTI4MjA2LCAxMjgyMTAsIDEyODIxNCwgMTI4MjE4LCAxMjgyMjIsIDEyODIyNiwgMTI4MjMwLCAKKyAgICAxMjgyMzQsIDEyODIzOCwgMTI4MjQyLCAxMjgyNDYsIDEyODI1MCwgMTI4MjU0LCAxMjgyNTgsIDEyODI2MiwgMTI4MjY2LCAKKyAgICAxMjgyNzAsIDEyODI3NCwgMTI4Mjc4LCAxMjgyODIsIDEyODI4NiwgMTI4MjkwLCAxMjgyOTQsIDEyODI5OCwgMTI4MzAyLCAKKyAgICAxMjgzMDYsIDEyODMxMCwgMTI4MzE0LCAxMjgzMTgsIDEyODMyMiwgMTI4MzI2LCAxMjgzMzAsIDEyODMzNCwgMTI4MzM4LCAKKyAgICAxMjgzNDIsIDEyODM0NiwgMTI4MzUwLCAxMjgzNTQsIDEyODM1OCwgMTI4MzYyLCAxMjgzNjYsIDEyODM3MCwgMTI4Mzc0LCAKKyAgICAxMjgzNzgsIDEyODM4MiwgMTI4Mzg2LCAxMjgzOTAsIDEyODM5NCwgMTI4Mzk4LCAxMjg0MDIsIDEyODQwNiwgMTI4NDEwLCAKKyAgICAxMjg0MTQsIDEyODQxOCwgMTI4NDIyLCAxMjg0MjYsIDEyODQzMCwgMTI4NDM0LCAxMjg0MzgsIDEyODQ0MiwgMTI4NDQ2LCAKKyAgICAxMjg0NTAsIDEyODQ1NCwgMTI4NDU4LCAxMjg0NjIsIDEyODQ2NiwgMTI4NDcwLCAxMjg0NzQsIDEyODQ3OCwgMTI4NDgyLCAKKyAgICAxMjg0ODYsIDEyODQ5MCwgMTI4NDk0LCAxMjg0OTgsIDEyODUwMiwgMTI4NTA2LCAxMjg1MTAsIDEyODUxNCwgMTI4NTE4LCAKKyAgICAxMjg1MjIsIDEyODUyNiwgMTI4NTMwLCAxMjg1MzQsIDEyODUzOCwgMTI4NTQyLCAxMjg1NDYsIDEyODU1MCwgMTI4NTU0LCAKKyAgICAxMjg1NTgsIDEyODU2MiwgMTI4NTY2LCAxMjg1NzAsIDEyODU3NCwgMTI4NTc4LCAxMjg1ODIsIDEyODU4NiwgMTI4NTkwLCAKKyAgICAxMjg1OTQsIDEyODU5OCwgMTI4NjAyLCAxMjg2MDYsIDEyODYxMCwgMTI4NjE0LCAxMjg2MTgsIDEyODYyMiwgMTI4NjI2LCAKKyAgICAxMjg2MzAsIDEyODYzNCwgMTI4NjM4LCAxMjg2NDIsIDEyODY0NiwgMTI4NjUwLCAxMjg2NTQsIDEyODY1OCwgMTI4NjYyLCAKKyAgICAxMjg2NjYsIDEyODY3MCwgMTI4Njc0LCAxMjg2NzgsIDEyODY4MiwgMTI4Njg2LCAxMjg2OTAsIDEyODY5NCwgMTI4Njk4LCAKKyAgICAxMjg3MDIsIDEyODcwNiwgMTI4NzEwLCAxMjg3MTQsIDEyODcxOCwgMTI4NzIyLCAxMjg3MjYsIDEyODczMCwgMTI4NzM0LCAKKyAgICAxMjg3MzgsIDEyODc0MiwgMTI4NzQ2LCAxMjg3NTAsIDEyODc1NCwgMTI4NzU4LCAxMjg3NjIsIDEyODc2NiwgMTI4NzcwLCAKKyAgICAxMjg3NzQsIDEyODc3OCwgMTI4NzgyLCAxMjg3ODYsIDEyODc5MCwgMTI4Nzk0LCAxMjg3OTgsIDEyODgwMiwgMTI4ODA2LCAKKyAgICAxMjg4MTAsIDEyODgxNCwgMTI4ODE4LCAxMjg4MjIsIDEyODgyNiwgMTI4ODMwLCAxMjg4MzQsIDEyODgzOCwgMTI4ODQyLCAKKyAgICAxMjg4NDYsIDEyODg1MCwgMTI4ODU0LCAxMjg4NTgsIDEyODg2MiwgMTI4ODY2LCAxMjg4NzAsIDEyODg3NCwgMTI4ODc4LCAKKyAgICAxMjg4ODIsIDEyODg4NiwgMTI4ODkwLCAxMjg4OTQsIDEyODg5OCwgMTI4OTAyLCAxMjg5MDYsIDEyODkxMCwgMTI4OTE0LCAKKyAgICAxMjg5MTgsIDEyODkyMiwgMTI4OTI2LCAxMjg5MzAsIDEyODkzNCwgMTI4OTM4LCAxMjg5NDIsIDEyODk0NiwgMTI4OTUwLCAKKyAgICAxMjg5NTQsIDEyODk1OCwgMTI4OTYyLCAxMjg5NjYsIDEyODk3MCwgMTI4OTc0LCAxMjg5NzgsIDEyODk4MiwgMTI4OTg2LCAKKyAgICAxMjg5OTAsIDEyODk5NCwgMTI4OTk4LCAxMjkwMDIsIDEyOTAwNiwgMTI5MDEwLCAxMjkwMTQsIDEyOTAxOCwgMTI5MDIyLCAKKyAgICAxMjkwMjYsIDEyOTAzMCwgMTI5MDM0LCAxMjkwMzgsIDEyOTA0MiwgMTI5MDQ2LCAxMjkwNTAsIDEyOTA1NCwgMTI5MDU4LCAKKyAgICAxMjkwNjIsIDEyOTA2NiwgMTI5MDcwLCAxMjkwNzQsIDEyOTA3OCwgMTI5MDgyLCAxMjkwODYsIDEyOTA5MCwgMTI5MDk0LCAKKyAgICAxMjkwOTgsIDEyOTEwMiwgMTI5MTA2LCAxMjkxMTAsIDEyOTExNCwgMTI5MTE4LCAxMjkxMjIsIDEyOTEyNiwgMTI5MTMwLCAKKyAgICAxMjkxMzQsIDEyOTEzOCwgMTI5MTQyLCAxMjkxNDYsIDEyOTE1MCwgMTI5MTU0LCAxMjkxNTgsIDEyOTE2MiwgMTI5MTY2LCAKKyAgICAxMjkxNzAsIDEyOTE3NCwgMTI5MTc4LCAxMjkxODIsIDEyOTE4NiwgMTI5MTkwLCAxMjkxOTQsIDEyOTE5OCwgMTI5MjAyLCAKKyAgICAxMjkyMDYsIDEyOTIxMCwgMTI5MjE0LCAxMjkyMTgsIDEyOTIyMiwgMTI5MjI2LCAxMjkyMzAsIDEyOTIzNCwgMTI5MjM4LCAKKyAgICAxMjkyNDIsIDEyOTI0NiwgMTI5MjUwLCAxMjkyNTQsIDEyOTI1OCwgMTI5MjYyLCAxMjkyNjYsIDEyOTI3MCwgMTI5Mjc0LCAKKyAgICAxMjkyNzgsIDEyOTI4MiwgMTI5Mjg2LCAxMjkyOTAsIDEyOTI5NCwgMTI5Mjk4LCAxMjkzMDIsIDEyOTMwNiwgMTI5MzEwLCAKKyAgICAxMjkzMTQsIDEyOTMxOCwgMTI5MzIyLCAxMjkzMjYsIDEyOTMzMCwgMTI5MzM0LCAxMjkzMzgsIDEyOTM0MiwgMTI5MzQ2LCAKKyAgICAxMjkzNTAsIDEyOTM1NCwgMTI5MzU4LCAxMjkzNjIsIDEyOTM2NiwgMTI5MzcwLCAxMjkzNzQsIDEyOTM3OCwgMTI5MzgyLCAKKyAgICAxMjkzODYsIDEyOTM5MCwgMTI5Mzk0LCAxMjkzOTgsIDEyOTQwMiwgMTI5NDA2LCAxMjk0MTAsIDEyOTQxNCwgMTI5NDE4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMjk0MjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTQyNiwgMTI5NDI5LCAxMjk0MzMsIDEyOTQzNywgMTI5NDQwLCAKKyAgICAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUxLCAxMjk0NTQsIDEyOTQ1OCwgMTI5NDYyLCAxMjk0NjUsIDEyOTQ2OCwgMTI5NDcxLCAKKyAgICAxMjk0NzQsIDEyOTQ3OSwgMTI5NDgyLCAxMjk0ODYsIDEyOTQ4OSwgMTI5NDkyLCAxMjk0OTUsIDEyOTQ5OCwgMTI5NTAxLCAKKyAgICAxMjk1MDQsIDEyOTUwNywgMTI5NTEwLCAxMjk1MTMsIDEyOTUxNiwgMTI5NTE5LCAxMjk1MjMsIDEyOTUyNywgMTI5NTMxLCAKKyAgICAxMjk1MzUsIDEyOTU0MCwgMTI5NTQ1LCAxMjk1NTEsIDEyOTU1NywgMTI5NTYzLCAxMjk1NjgsIDEyOTU3NCwgMTI5NTgwLCAKKyAgICAxMjk1ODYsIDEyOTU5MSwgMTI5NTk3LCAxMjk2MDMsIDEyOTYwOCwgMTI5NjEzLCAxMjk2MTksIDEyOTYyNCwgMTI5NjMwLCAKKyAgICAxMjk2MzYsIDEyOTY0MSwgMTI5NjQ3LCAxMjk2NTMsIDEyOTY1OCwgMTI5NjY0LCAxMjk2NzAsIDEyOTY3NiwgMTI5NjgyLCAKKyAgICAxMjk2ODgsIDEyOTY5MiwgMTI5Njk3LCAxMjk3MDEsIDEyOTcwNiwgMTI5NzEwLCAxMjk3MTUsIDEyOTcyMCwgMTI5NzI2LCAKKyAgICAxMjk3MzIsIDEyOTczOCwgMTI5NzQzLCAxMjk3NDksIDEyOTc1NSwgMTI5NzYxLCAxMjk3NjYsIDEyOTc3MiwgMTI5Nzc4LCAKKyAgICAxMjk3ODMsIDEyOTc4OCwgMTI5Nzk0LCAxMjk3OTksIDEyOTgwNSwgMTI5ODExLCAxMjk4MTYsIDEyOTgyMiwgMTI5ODI4LCAKKyAgICAxMjk4MzMsIDEyOTgzOSwgMTI5ODQ1LCAxMjk4NTEsIDEyOTg1NywgMTI5ODYzLCAxMjk4NjgsIDEyOTg3MiwgMTI5ODc3LCAKKyAgICAxMjk4NzksIDEyOTg4MywgMTI5ODg2LCAxMjk4ODksIDEyOTg5MiwgMTI5ODk1LCAxMjk4OTgsIDEyOTkwMSwgMTI5OTA0LCAKKyAgICAxMjk5MDcsIDEyOTkxMCwgMTI5OTEzLCAxMjk5MTYsIDEyOTkxOSwgMTI5OTIyLCAxMjk5MjUsIDEyOTkyOCwgMTI5OTMxLCAKKyAgICAxMjk5MzQsIDEyOTkzNywgMTI5OTQwLCAxMjk5NDMsIDEyOTk0NiwgMTI5OTQ5LCAxMjk5NTIsIDEyOTk1NSwgMTI5OTU4LCAKKyAgICAxMjk5NjEsIDEyOTk2NCwgMTI5OTY3LCAxMjk5NzAsIDEyOTk3MywgMTI5OTc2LCAxMjk5NzksIDEyOTk4MiwgMTI5OTg1LCAKKyAgICAxMjk5ODgsIDEyOTk5MSwgMTI5OTk0LCAxMjk5OTcsIDEzMDAwMCwgMTMwMDAzLCAxMzAwMDYsIDEzMDAwOSwgMTMwMDEyLCAKKyAgICAxMzAwMTUsIDEzMDAxOCwgMTMwMDIxLCAxMzAwMjQsIDEzMDAyNywgMTMwMDMwLCAxMzAwMzMsIDEzMDAzNiwgMTMwMDM5LCAKKyAgICAxMzAwNDIsIDEzMDA0NSwgMTMwMDQ4LCAxMzAwNTEsIDEzMDA1NCwgMTMwMDU3LCAxMzAwNjAsIDEzMDA2MywgMTMwMDY2LCAKKyAgICAxMzAwNjksIDEzMDA3MiwgMTMwMDc1LCAxMzAwNzgsIDEzMDA4MSwgMTMwMDg0LCAxMzAwODcsIDEzMDA5MCwgMTMwMDkzLCAKKyAgICAxMzAwOTYsIDEzMDA5OSwgMTMwMTAyLCAxMzAxMDUsIDEzMDEwOCwgMTMwMTExLCAxMzAxMTQsIDEzMDExNywgMTMwMTIwLCAKKyAgICAxMzAxMjMsIDEzMDEyNiwgMTMwMTI5LCAxMzAxMzIsIDEzMDEzNSwgMTMwMTM4LCAxMzAxNDEsIDEzMDE0NCwgMTMwMTQ3LCAKKyAgICAxMzAxNTAsIDEzMDE1MywgMTMwMTU2LCAxMzAxNTksIDEzMDE2MiwgMTMwMTY1LCAxMzAxNjgsIDEzMDE3MSwgMTMwMTc0LCAKKyAgICAxMzAxNzcsIDEzMDE4MCwgMTMwMTgzLCAxMzAxODYsIDEzMDE4OSwgMTMwMTkyLCAxMzAxOTUsIDEzMDE5OCwgMTMwMjAxLCAKKyAgICAxMzAyMDQsIDEzMDIwNywgMTMwMjEwLCAxMzAyMTMsIDEzMDIxNiwgMTMwMjE5LCAxMzAyMjIsIDEzMDIyNSwgMTMwMjI4LCAKKyAgICAxMzAyMzEsIDEzMDIzNCwgMTMwMjM3LCAxMzAyNDAsIDEzMDI0MywgMTMwMjQ2LCAxMzAyNDksIDEzMDI1MiwgMTMwMjU1LCAKKyAgICAxMzAyNTgsIDEzMDI2MSwgMTMwMjY0LCAxMzAyNjcsIDEzMDI3MCwgMTMwMjczLCAxMzAyNzYsIDEzMDI3OSwgMTMwMjgyLCAKKyAgICAxMzAyODUsIDEzMDI4OCwgMTMwMjkxLCAxMzAyOTQsIDEzMDI5NywgMTMwMzAwLCAxMzAzMDMsIDEzMDMwNiwgMTMwMzA5LCAKKyAgICAxMzAzMTIsIDEzMDMxNSwgMTMwMzE4LCAxMzAzMjEsIDEzMDMyNCwgMTMwMzI3LCAxMzAzMzAsIDEzMDMzMywgMTMwMzM2LCAKKyAgICAxMzAzMzksIDEzMDM0MiwgMTMwMzQ1LCAxMzAzNDgsIDEzMDM1MSwgMTMwMzU0LCAxMzAzNTcsIDEzMDM2MCwgMTMwMzYzLCAKKyAgICAxMzAzNjYsIDEzMDM2OSwgMTMwMzcyLCAxMzAzNzUsIDEzMDM3OCwgMTMwMzgxLCAxMzAzODQsIDEzMDM4NywgMTMwMzkwLCAKKyAgICAxMzAzOTMsIDEzMDM5NiwgMTMwMzk5LCAxMzA0MDIsIDEzMDQwNSwgMTMwNDA4LCAxMzA0MTEsIDEzMDQxNCwgMTMwNDE3LCAKKyAgICAxMzA0MjAsIDEzMDQyMywgMTMwNDI2LCAxMzA0MjksIDEzMDQzMiwgMTMwNDM1LCAxMzA0MzgsIDEzMDQ0MSwgMTMwNDQ0LCAKKyAgICAxMzA0NDcsIDEzMDQ1MCwgMTMwNDUzLCAxMzA0NTYsIDEzMDQ1OSwgMTMwNDYyLCAxMzA0NjUsIDEzMDQ2OCwgMTMwNDcxLCAKKyAgICAxMzA0NzQsIDEzMDQ3NywgMTMwNDgwLCAxMzA0ODMsIDEzMDQ4NiwgMTMwNDg5LCAxMzA0OTIsIDEzMDQ5NSwgMTMwNDk4LCAKKyAgICAxMzA1MDEsIDEzMDUwNCwgMTMwNTA3LCAxMzA1MTAsIDEzMDUxMywgMTMwNTE2LCAxMzA1MTksIDEzMDUyMiwgMTMwNTI1LCAKKyAgICAxMzA1MjgsIDEzMDUzMSwgMTMwNTM0LCAxMzA1MzcsIDEzMDU0MCwgMTMwNTQzLCAxMzA1NDYsIDEzMDU0OSwgMTMwNTUyLCAKKyAgICAxMzA1NTUsIDEzMDU1OCwgMTMwNTYxLCAxMzA1NjQsIDEzMDU2NywgMTMwNTcwLCAxMzA1NzMsIDEzMDU3NiwgMTMwNTc5LCAKKyAgICAxMzA1ODIsIDEzMDU4NSwgMTMwNTg4LCAxMzA1OTEsIDEzMDU5NCwgMTMwNTk3LCAxMzA2MDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDYwMywgMTMwNjA1LCAxMzA2MDcsIDEzMDYxMiwgMTMwNjE0LCAKKyAgICAxMzA2MTksIDEzMDYyMSwgMTMwNjI2LCAxMzA2MjgsIDEzMDYzMywgMTMwNjM1LCAxMzA2MzcsIDEzMDYzOSwgMTMwNjQxLCAKKyAgICAxMzA2NDMsIDEzMDY0NSwgMTMwNjQ3LCAxMzA2NDksIDEzMDY1MSwgMTMwNjU0LCAxMzA2NTcsIDEzMDY1OSwgMTMwNjYxLCAKKyAgICAxMzA2NjUsIDEzMDY2OCwgMTMwNjczLCAxMzA2NzUsIDEzMDY3NywgMTMwNjc5LCAxMzA2ODMsIDEzMDY4NiwgMTMwNjg4LCAKKyAgICAxMzA2OTIsIDEzMDY5NCwgMTMwNjk4LCAxMzA3MDAsIDEzMDcwNCwgMTMwNzA3LCAxMzA3MDksIDEzMDcxMywgMTMwNzE3LCAKKyAgICAxMzA3MTksIDEzMDcyNSwgMTMwNzI3LCAxMzA3MzIsIDEzMDczNCwgMTMwNzM5LCAxMzA3NDEsIDEzMDc0NiwgMTMwNzQ4LCAKKyAgICAxMzA3NTMsIDEzMDc1NSwgMTMwNzU4LCAxMzA3NjAsIDEzMDc2NCwgMTMwNzY2LCAxMzA3NzMsIDEzMDc3NSwgMTMwNzc3LCAKKyAgICAxMzA3NzksIDEzMDc4NCwgMTMwNzg2LCAxMzA3ODgsIDEzMDc5MCwgMTMwNzkyLCAxMzA3OTQsIDEzMDc5OSwgMTMwODAzLCAKKyAgICAxMzA4MDUsIDEzMDgxMCwgMTMwODE0LCAxMzA4MTYsIDEzMDgyMSwgMTMwODI1LCAxMzA4MjcsIDEzMDgzMiwgMTMwODM2LCAKKyAgICAxMzA4MzgsIDEzMDg0MCwgMTMwODQyLCAxMzA4NDQsIDEzMDg0OCwgMTMwODUwLCAxMzA4NTUsIDEzMDg1NywgMTMwODYzLCAKKyAgICAxMzA4NjUsIDEzMDg3MSwgMTMwODczLCAxMzA4NzUsIDEzMDg3NywgMTMwODgxLCAxMzA4ODMsIDEzMDg5MCwgMTMwODkyLCAKKyAgICAxMzA4OTksIDEzMDkwMSwgMTMwOTA2LCAxMzA5MTEsIDEzMDkxMywgMTMwOTE5LCAxMzA5MjUsIDEzMDkyNywgMTMwOTMzLCAKKyAgICAxMzA5MzgsIDEzMDk0MCwgMTMwOTQ2LCAxMzA5NTIsIDEzMDk1NCwgMTMwOTYwLCAxMzA5NjYsIDEzMDk2OCwgMTMwOTc0LCAKKyAgICAxMzA5NzgsIDEzMDk4MCwgMTMwOTg1LCAxMzA5ODcsIDEzMDk4OSwgMTMwOTk0LCAxMzA5OTYsIDEzMDk5OCwgMTMxMDA0LCAKKyAgICAxMzEwMDYsIDEzMTAxMSwgMTMxMDE1LCAxMzEwMTcsIDEzMTAyMiwgMTMxMDI2LCAxMzEwMjgsIDEzMTAzNCwgMTMxMDM2LCAKKyAgICAxMzEwNDAsIDEzMTA0MiwgMTMxMDQ2LCAxMzEwNDgsIDEzMTA1NSwgMTMxMDYyLCAxMzEwNjQsIDEzMTA3MSwgMTMxMDc4LCAKKyAgICAxMzEwODAsIDEzMTA4NSwgMTMxMDg3LCAxMzEwOTQsIDEzMTA5NiwgMTMxMTAxLCAxMzExMDMsIDEzMTEwOSwgMTMxMTExLCAKKyAgICAxMzExMTUsIDEzMTExNywgMTMxMTIzLCAxMzExMjUsIDEzMTEyOSwgMTMxMTMxLCAxMzExMzcsIDEzMTEzOSwgMTMxMTQxLCAKKyAgICAxMzExNDMsIDEzMTE0OCwgMTMxMTUzLCAxMzExNTUsIDEzMTE1OSwgMTMxMTY2LCAxMzExNzMsIDEzMTE3OCwgMTMxMTgzLCAKKyAgICAxMzExOTUsIDEzMTE5NywgMTMxMTk5LCAxMzEyMDEsIDEzMTIwMywgMTMxMjA1LCAxMzEyMDcsIDEzMTIwOSwgMTMxMjExLCAKKyAgICAxMzEyMTMsIDEzMTIxNSwgMTMxMjE3LCAxMzEyMTksIDEzMTIyMSwgMTMxMjIzLCAxMzEyMjUsIDEzMTIyNywgMTMxMjI5LCAKKyAgICAxMzEyMzUsIDEzMTI0MiwgMTMxMjQ3LCAxMzEyNTIsIDEzMTI2MywgMTMxMjY1LCAxMzEyNjcsIDEzMTI2OSwgMTMxMjcxLCAKKyAgICAxMzEyNzMsIDEzMTI3NSwgMTMxMjc3LCAxMzEyNzksIDEzMTI4MSwgMTMxMjgzLCAxMzEyODUsIDEzMTI4NywgMTMxMjg5LCAKKyAgICAxMzEyOTEsIDEzMTI5MywgMTMxMjk1LCAxMzEzMDAsIDEzMTMwMiwgMTMxMzA0LCAxMzEzMTUsIDEzMTMxNywgMTMxMzE5LCAKKyAgICAxMzEzMjEsIDEzMTMyMywgMTMxMzI1LCAxMzEzMjcsIDEzMTMyOSwgMTMxMzMxLCAxMzEzMzMsIDEzMTMzNSwgMTMxMzM3LCAKKyAgICAxMzEzMzksIDEzMTM0MSwgMTMxMzQzLCAxMzEzNDUsIDEzMTM0NywgMTMxMzQ5LCAxMzEzNTEsIDEzMTM1MywgMTMxMzU1LCAKKyAgICAxMzEzNTcsIDEzMTM1OSwgMTMxMzYxLCAxMzEzNjMsIDEzMTM2NSwgMTMxMzY3LCAxMzEzNjksIDEzMTM3MSwgMTMxMzczLCAKKyAgICAxMzEzNzUsIDEzMTM3NywgMTMxMzc5LCAxMzEzODEsIDEzMTM4MywgMTMxMzg1LCAxMzEzODcsIDEzMTM4OSwgMTMxMzkxLCAKKyAgICAxMzEzOTMsIDEzMTM5NSwgMTMxMzk3LCAxMzEzOTksIDEzMTQwMSwgMTMxNDAzLCAxMzE0MDUsIDEzMTQwNywgMTMxNDA5LCAKKyAgICAxMzE0MTEsIDEzMTQxMywgMTMxNDE1LCAxMzE0MTcsIDEzMTQxOSwgMTMxNDIxLCAxMzE0MjMsIDEzMTQyNSwgMTMxNDI3LCAKKyAgICAxMzE0MjksIDEzMTQzMSwgMTMxNDMzLCAxMzE0MzUsIDEzMTQzNywgMTMxNDM5LCAxMzE0NDEsIDEzMTQ0MywgMTMxNDQ1LCAKKyAgICAxMzE0NDcsIDEzMTQ0OSwgMTMxNDUxLCAxMzE0NTMsIDEzMTQ1NSwgMTMxNDU3LCAxMzE0NTksIDEzMTQ2MSwgMTMxNDYzLCAKKyAgICAxMzE0NjUsIDEzMTQ2NywgMTMxNDY5LCAxMzE0NzEsIDEzMTQ3MywgMTMxNDc1LCAxMzE0NzcsIDEzMTQ3OSwgMTMxNDgxLCAKKyAgICAxMzE0ODMsIDEzMTQ4NSwgMTMxNDg3LCAxMzE0ODksIDEzMTQ5MSwgMTMxNDkzLCAxMzE0OTUsIDEzMTQ5NywgMTMxNDk5LCAKKyAgICAxMzE1MDEsIDEzMTUwMywgMTMxNTA1LCAxMzE1MDcsIDEzMTUwOSwgMTMxNTExLCAxMzE1MTMsIDEzMTUxNSwgMTMxNTE3LCAKKyAgICAxMzE1MTksIDEzMTUyMSwgMTMxNTIzLCAxMzE1MjUsIDEzMTUyNywgMTMxNTI5LCAxMzE1MzEsIDEzMTUzMywgMTMxNTM1LCAKKyAgICAxMzE1MzcsIDEzMTUzOSwgMTMxNTQxLCAxMzE1NDMsIDEzMTU0NSwgMTMxNTQ3LCAxMzE1NDksIDEzMTU1MSwgMTMxNTUzLCAKKyAgICAxMzE1NTUsIDEzMTU1NywgMTMxNTU5LCAxMzE1NjEsIDEzMTU2MywgMTMxNTY1LCAxMzE1NjcsIDEzMTU2OSwgMTMxNTcxLCAKKyAgICAxMzE1NzMsIDEzMTU3NSwgMTMxNTc3LCAxMzE1NzksIDEzMTU4MSwgMTMxNTgzLCAxMzE1ODUsIDEzMTU4NywgMTMxNTg5LCAKKyAgICAxMzE1OTEsIDEzMTU5MywgMTMxNTk1LCAxMzE1OTcsIDEzMTU5OSwgMTMxNjAxLCAxMzE2MDMsIDEzMTYwNSwgMTMxNjA3LCAKKyAgICAxMzE2MDksIDEzMTYxMSwgMTMxNjEzLCAxMzE2MTUsIDEzMTYxNywgMTMxNjE5LCAxMzE2MjEsIDEzMTYyMywgMTMxNjI1LCAKKyAgICAxMzE2MjcsIDEzMTYyOSwgMTMxNjMxLCAxMzE2MzMsIDEzMTYzNSwgMTMxNjM3LCAxMzE2MzksIDEzMTY0MSwgMTMxNjQzLCAKKyAgICAxMzE2NDUsIDEzMTY0NywgMTMxNjQ5LCAxMzE2NTEsIDEzMTY1MywgMTMxNjU1LCAxMzE2NTcsIDEzMTY1OSwgMTMxNjYxLCAKKyAgICAxMzE2NjMsIDEzMTY2NSwgMTMxNjY3LCAxMzE2NjksIDEzMTY3MSwgMTMxNjczLCAxMzE2NzUsIDEzMTY3NywgMTMxNjc5LCAKKyAgICAxMzE2ODEsIDEzMTY4MywgMTMxNjg1LCAxMzE2ODcsIDEzMTY4OSwgMTMxNjkxLCAxMzE2OTMsIDEzMTY5NSwgMTMxNjk3LCAKKyAgICAxMzE2OTksIDEzMTcwMSwgMTMxNzAzLCAxMzE3MDUsIDEzMTcwNywgMTMxNzA5LCAxMzE3MTEsIDEzMTcxMywgMTMxNzE1LCAKKyAgICAxMzE3MTcsIDEzMTcxOSwgMTMxNzIxLCAxMzE3MjMsIDEzMTcyNSwgMTMxNzI3LCAxMzE3MjksIDEzMTczMSwgMTMxNzMzLCAKKyAgICAxMzE3MzUsIDEzMTczNywgMTMxNzM5LCAxMzE3NDEsIDEzMTc0MywgMTMxNzQ1LCAxMzE3NDcsIDEzMTc0OSwgMTMxNzUxLCAKKyAgICAxMzE3NTMsIDEzMTc1NSwgMTMxNzU3LCAxMzE3NTksIDEzMTc2MSwgMTMxNzYzLCAxMzE3NjUsIDEzMTc2NywgMTMxNzY5LCAKKyAgICAxMzE3NzEsIDEzMTc3MywgMTMxNzc1LCAxMzE3NzcsIDEzMTc3OSwgMTMxNzgxLCAxMzE3ODMsIDEzMTc4NSwgMTMxNzg3LCAKKyAgICAxMzE3ODksIDEzMTc5MSwgMTMxNzkzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzE3OTUsIDEzMTgwNSwgMTMxODE1LCAxMzE4MjQsIDEzMTgzMywgMTMxODQ2LCAxMzE4NTksIDEzMTg3MSwgMTMxODgzLCAKKyAgICAxMzE4OTMsIDEzMTkwMywgMTMxOTEzLCAxMzE5MjMsIDEzMTkzNCwgMTMxOTQ1LCAxMzE5NTUsIDEzMTk2NCwgMTMxOTczLCAKKyAgICAxMzE5ODIsIDEzMTk5NSwgMTMyMDA4LCAxMzIwMjAsIDEzMjAzMiwgMTMyMDQyLCAxMzIwNTIsIDEzMjA2MiwgMTMyMDcyLCAKKyAgICAxMzIwODEsIDEzMjA5MCwgMTMyMDk5LCAxMzIxMDgsIDEzMjExNywgMTMyMTI2LCAxMzIxMzUsIDEzMjE0NCwgMTMyMTUzLCAKKyAgICAxMzIxNjIsIDEzMjE3MSwgMTMyMTgwLCAxMzIxOTEsIDEzMjIwMSwgMTMyMjExLCAxMzIyMjQsIDEzMjIzNCwgMTMyMjQ3LCAKKyAgICAxMzIyNTQsIDEzMjI2NCwgMTMyMjcxLCAxMzIyNzgsIDEzMjI4NSwgMTMyMjkyLCAxMzIyOTksIDEzMjMwNiwgMTMyMzE1LCAKKyAgICAxMzIzMjQsIDEzMjMzMywgMTMyMzQyLCAxMzIzNTEsIDEzMjM2MCwgMTMyMzY5LCAxMzIzNzgsIDEzMjM4NiwgMTMyMzk0LCAKKyAgICAxMzI0MDEsIDEzMjQxMSwgMTMyNDIwLCAxMzI0MjgsIDEzMjQzNSwgMTMyNDQ1LCAxMzI0NTQsIDEzMjQ1OCwgMTMyNDYyLCAKKyAgICAxMzI0NjYsIDEzMjQ3MCwgMTMyNDc0LCAxMzI0NzgsIDEzMjQ4MiwgMTMyNDg2LCAxMzI0OTAsIDEzMjQ5NCwgMTMyNDk3LCAKKyAgICAxMzI1MDEsIDEzMjUwNCwgMTMyNTA3LCAxMzI1MTEsIDEzMjUxNSwgMTMyNTE5LCAxMzI1MjMsIDEzMjUyNywgMTMyNTMxLCAKKyAgICAxMzI1MzUsIDEzMjUzOSwgMTMyNTQzLCAxMzI1NDcsIDEzMjU1MSwgMTMyNTU1LCAxMzI1NTksIDEzMjU2MywgMTMyNTY3LCAKKyAgICAxMzI1NzEsIDEzMjU3NSwgMTMyNTc5LCAxMzI1ODMsIDEzMjU4NywgMTMyNTkxLCAxMzI1OTUsIDEzMjU5OSwgMTMyNjAzLCAKKyAgICAxMzI2MDcsIDEzMjYxMSwgMTMyNjE1LCAxMzI2MTksIDEzMjYyMywgMTMyNjI3LCAxMzI2MzEsIDEzMjYzNSwgMTMyNjM5LCAKKyAgICAxMzI2NDMsIDEzMjY0NywgMTMyNjUxLCAxMzI2NTUsIDEzMjY1OSwgMTMyNjYzLCAxMzI2NjcsIDEzMjY3MSwgMTMyNjc1LCAKKyAgICAxMzI2NzksIDEzMjY4MywgMTMyNjg3LCAxMzI2OTEsIDEzMjY5NSwgMTMyNjk5LCAxMzI3MDMsIDEzMjcwNywgMTMyNzExLCAKKyAgICAxMzI3MTUsIDEzMjcxOSwgMTMyNzIzLCAxMzI3MjcsIDEzMjczMSwgMTMyNzM1LCAxMzI3MzksIDEzMjc0MywgMTMyNzQ3LCAKKyAgICAxMzI3NTEsIDEzMjc1NSwgMTMyNzU5LCAxMzI3NjMsIDEzMjc2NywgMTMyNzcxLCAxMzI3NzUsIDEzMjc3OSwgMTMyNzgzLCAKKyAgICAxMzI3ODcsIDEzMjc5MSwgMTMyNzk1LCAxMzI3OTksIDEzMjgwMywgMTMyODA3LCAxMzI4MTEsIDEzMjgxNSwgMTMyODE5LCAKKyAgICAxMzI4MjMsIDEzMjgyNywgMTMyODMxLCAxMzI4MzUsIDEzMjgzOSwgMTMyODQzLCAxMzI4NDcsIDEzMjg1MCwgMTMyODU0LCAKKyAgICAxMzI4NTgsIDEzMjg2MiwgMTMyODY2LCAxMzI4NzAsIDEzMjg3NCwgMTMyODc4LCAxMzI4ODIsIDEzMjg4NiwgMTMyODkwLCAKKyAgICAxMzI4OTQsIDEzMjg5OCwgMTMyOTAyLCAxMzI5MDYsIDEzMjkxMCwgMTMyOTE0LCAxMzI5MTgsIDEzMjkyMiwgMTMyOTI2LCAKKyAgICAxMzI5MzAsIDEzMjkzNCwgMTMyOTM4LCAxMzI5NDIsIDEzMjk0NiwgMTMyOTUwLCAxMzI5NTQsIDEzMjk1OCwgMTMyOTYyLCAKKyAgICAxMzI5NjYsIDEzMjk3MCwgMTMyOTc0LCAxMzI5NzgsIDEzMjk4MiwgMTMyOTg2LCAxMzI5OTAsIDEzMjk5NCwgMTMyOTk4LCAKKyAgICAxMzMwMDIsIDEzMzAwNiwgMTMzMDEwLCAxMzMwMTQsIDEzMzAxOCwgMTMzMDIyLCAxMzMwMjYsIDEzMzAzMCwgMTMzMDM0LCAKKyAgICAxMzMwMzgsIDEzMzA0MiwgMTMzMDQ2LCAxMzMwNTAsIDEzMzA1NCwgMTMzMDU4LCAxMzMwNjIsIDEzMzA2NiwgMTMzMDcwLCAKKyAgICAxMzMwNzQsIDEzMzA3OCwgMTMzMDgyLCAxMzMwODYsIDEzMzA5MCwgMTMzMDk0LCAxMzMwOTgsIDEzMzEwMiwgMTMzMTA2LCAKKyAgICAxMzMxMTAsIDEzMzExNCwgMTMzMTE4LCAxMzMxMjIsIDEzMzEyNiwgMTMzMTMwLCAxMzMxMzQsIDEzMzEzOCwgMTMzMTQyLCAKKyAgICAxMzMxNDYsIDEzMzE1MCwgMTMzMTU0LCAxMzMxNTgsIDEzMzE2MiwgMTMzMTY2LCAxMzMxNzAsIDEzMzE3NCwgMTMzMTc4LCAKKyAgICAxMzMxODIsIDEzMzE4NiwgMTMzMTkwLCAxMzMxOTQsIDEzMzE5OCwgMTMzMjAyLCAxMzMyMDYsIDEzMzIxMCwgMTMzMjE0LCAKKyAgICAxMzMyMTgsIDEzMzIyMiwgMTMzMjI2LCAxMzMyMzAsIDEzMzIzNCwgMTMzMjM4LCAxMzMyNDIsIDEzMzI0NiwgMTMzMjUwLCAKKyAgICAxMzMyNTQsIDEzMzI1OCwgMTMzMjYyLCAxMzMyNjYsIDEzMzI3MCwgMTMzMjc0LCAxMzMyNzgsIDEzMzI4MiwgMTMzMjg2LCAKKyAgICAxMzMyOTAsIDEzMzI5NCwgMTMzMjk4LCAxMzMzMDIsIDEzMzMwNiwgMTMzMzEwLCAxMzMzMTQsIDEzMzMxOCwgMTMzMzIyLCAKKyAgICAxMzMzMjYsIDEzMzMzMCwgMTMzMzM0LCAxMzMzMzgsIDEzMzM0MiwgMTMzMzQ2LCAxMzMzNTAsIDEzMzM1NCwgMTMzMzU4LCAKKyAgICAxMzMzNjIsIDEzMzM2NiwgMTMzMzcwLCAxMzMzNzQsIDEzMzM3OCwgMTMzMzgyLCAxMzMzODYsIDEzMzM5MCwgMTMzMzk0LCAKKyAgICAxMzMzOTgsIDEzMzQwMiwgMTMzNDA2LCAxMzM0MTAsIDEzMzQxNCwgMTMzNDE4LCAxMzM0MjIsIDEzMzQyNiwgMTMzNDMwLCAKKyAgICAxMzM0MzQsIDEzMzQzOCwgMTMzNDQyLCAxMzM0NDYsIDEzMzQ1MCwgMTMzNDU0LCAxMzM0NTgsIDEzMzQ2MiwgMTMzNDY2LCAKKyAgICAxMzM0NzAsIDEzMzQ3NCwgMTMzNDc4LCAxMzM0ODIsIDEzMzQ4NiwgMTMzNDkwLCAxMzM0OTQsIDEzMzQ5OCwgMTMzNTAyLCAKKyAgICAxMzM1MDYsIDEzMzUxMCwgMTMzNTE0LCAxMzM1MTgsIDEzMzUyMiwgMTMzNTI2LCAxMzM1MzAsIDEzMzUzNCwgMTMzNTM4LCAKKyAgICAxMzM1NDIsIDEzMzU0NiwgMTMzNTUwLCAxMzM1NTQsIDEzMzU1OCwgMTMzNTYyLCAxMzM1NjYsIDEzMzU3MCwgMTMzNTc0LCAKKyAgICAxMzM1NzgsIDEzMzU4MiwgMTMzNTg2LCAxMzM1OTAsIDEzMzU5NCwgMTMzNTk4LCAxMzM2MDIsIDEzMzYwNiwgMTMzNjEwLCAKKyAgICAxMzM2MTQsIDEzMzYxOSwgMTMzNjI0LCAxMzM2MjksIDEzMzYzMywgMTMzNjM5LCAxMzM2NDYsIDEzMzY1MywgMTMzNjYwLCAKKyAgICAxMzM2NjcsIDEzMzY3NCwgMTMzNjgxLCAxMzM2ODgsIDEzMzY5NSwgMTMzNzAyLCAxMzM3MDksIDEzMzcxNiwgMTMzNzIzLCAKKyAgICAxMzM3MzAsIDEzMzczNiwgMTMzNzQzLCAxMzM3NTAsIDEzMzc1NiwgMTMzNzYzLCAxMzM3NzAsIDEzMzc3NywgMTMzNzg0LCAKKyAgICAxMzM3OTEsIDEzMzc5OCwgMTMzODA1LCAxMzM4MTIsIDEzMzgxOSwgMTMzODI2LCAxMzM4MzMsIDEzMzg0MCwgMTMzODQ3LCAKKyAgICAxMzM4NTMsIDEzMzg1OSwgMTMzODY2LCAxMzM4NzMsIDEzMzg4MiwgMTMzODkxLCAxMzM5MDAsIDEzMzkwOSwgMTMzOTE0LCAKKyAgICAxMzM5MTksIDEzMzkyNSwgMTMzOTMxLCAxMzM5MzcsIDEzMzk0MywgMTMzOTQ5LCAxMzM5NTUsIDEzMzk2MSwgMTMzOTY3LCAKKyAgICAxMzM5NzMsIDEzMzk3OSwgMTMzOTg1LCAxMzM5OTEsIDEzMzk5NiwgMTM0MDAyLCAxMzQwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogLyogbmFtZS0+Y29kZSBkaWN0aW9uYXJ5ICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGNvZGVfaGFzaFtdID0gewogICAgIDc0MjI0LCA0ODUxLCAwLCA3ODE1NiwgNzg0OTksIDEyODY4NSwgNzkyOSwgMCwgMTk0NjgyLCAxMjc3NjYsIDc4NTAwLCAKLSAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCAwLCAxMjgxMDMsIDEzMTkyLCA4NjUxLCAwLCAwLCAKKyAgICA2NjQ4MCwgMCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgMCwgNTk2LCA5ODM4MTIsIDY5ODUwLCAxMzE5MiwgODY1MSwgMCwgMCwgCiAgICAgMTIwMjE4LCAxMjk5NSwgNjQ4NjUsIDEzNzMsIDAsIDAsIDU4MTYsIDExOTA2NywgNjQ4MTAsIDQyMzEsIDY4MjUsIDQyODk3LCAKICAgICA0MjMzLCA0MjM0LCA0MjMyLCA5MTc4MzYsIDc0NDE1LCAxMjAyMTAsIDYzODQsIDkxNzg0MCwgNzgxMDgsIDg4NTEsIDAsIAotICAgIDEyODU1MywgMCwgNDE2MDEsIDg4NzQsIDAsIDc3NDgsIDAsIDAsIDAsIDEyNzkzOSwgNDE2MDMsIDk3ODQsIDAsIDkxODgsIAotICAgIDQxNjAwLCAwLCAxMjA2MTgsIDEyODM0MywgMTQ1NywgMzUzNSwgMCwgMCwgMCwgMCwgNjUyNDAsIDExOTUxLCAwLCAzNDA0LCAKLSAgICAwLCAwLCAwLCAxNzU5LCAwLCA0MTA3NiwgNjgzODMsIDEyMDU3MiwgMTE5MjA1LCA2NjU3NywgMCwgMTI3NzY0LCA2NTg1OSwgCi0gICAgMCwgNzQwNCwgMCwgMCwgMCwgMCwgNjU5MDgsIDk4MzQsIDMwNTUsIDk4NTIsIDAsIDY1Mjg4LCAwLCAxMTM5OCwgMCwgCi0gICAgOTI0MTcsIDExOTI1NSwgMCwgMCwgNjAzLCA3NDM5OCwgNDM1NDgsIDAsIDAsIDkxNzgyNCwgMzM1MCwgMTIwODE3LCAKLSAgICA2NDMxOCwgOTE3ODI4LCAxMjcwODksIDMzOTAsIDc0NDgzLCA0MzI2NSwgMTIwNTk5LCA5MTc4MzAsIDc4NTczLCAwLCAKLSAgICAxOTE5LCAzNDAwLCAxMjA2NTEsIDEyNzk0NCwgMTE2NDcsIDkxNzU0MCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCAKLSAgICA2NDEzOCwgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgMCwgMCwgMTE5NjYsIDY0MTI4LCAxMjg1ODcsIDAsIDAsIAotICAgIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCAwLCA0MzM3NCwgOTc3OSwgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCAwLCAKLSAgICA2NjAyMSwgMCwgMCwgNTQ1NywgNTQ0MCwgODg1NywgMTI4NzcxLCA2NTI4MiwgMjg0MywgNTM1NSwgMTI3OTI4LCAwLCAwLCAKLSAgICA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMCwgMCwgMCwgMCwgMTI3MDI3LCAxMDcxNywgNjQ1NzAsIDU2MzAsIAotICAgIDc0MzUwLCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCAKLSAgICA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCAKLSAgICA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCAKLSAgICA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCAKLSAgICA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDAsIDEyMjEzLCAxOTQ2NzgsIDI3NjAsIDAsIDAsIDAsIDE5NDc5NCwgNjQxNTYsIAotICAgIDY0MTU1LCA0MjQ5NiwgMCwgNjQxNTEsIDY0MTUwLCAxMjY3OSwgMTAwNTMsIDEwNDIxLCAxMTA5MywgNjQxNTMsIDY0MTUyLCAKLSAgICAwLCAwLCA0ODM5LCAwLCAwLCAxODc0LCAxMTkwMTYsIDAsIDY1NzcsIDY0MTI1LCA2NDEyNCwgNjQxMjMsIDAsIDEyNzUzMSwgCi0gICAgOTI1MzQsIDcwMDcsIDc1OTAsIDY1NDQzLCA5MDM2LCA5MjU1MCwgNjQxMjIsIDc0NDIyLCA2NjYwOSwgMCwgNjQxMTcsIAotICAgIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgCi0gICAgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDEyNzMwNiwgNjQxMDIsIDc4NTksIDE5NDUsIDY0MDk5LCAwLCAxMDQ1MywgCi0gICAgNjQxMDQsIDcxODgsIDc5OTcsIDAsIDczODksIDAsIDg3MDUsIDY0MDk3LCA2NDA5NiwgOTU3MSwgNTI4LCAxMjg2NzEsIAotICAgIDQ0MDE3LCAxMTQyOSwgMCwgMCwgMCwgOTE3OTkwLCA3Mzg0MSwgMCwgMCwgOTA1NiwgNjQzMTMsIDYxODgsIDEyMDAxOSwgCi0gICAgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgOTIyMTIsIDAsIDQxOTA0LCAKLSAgICA2NjM5LCA2NDA2NCwgMCwgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCAwLCAwLCAKLSAgICAxMjA1MTksIDY2Mzc2LCA2NjI0MiwgMTE0MTUsIDQzMzMsIDk4NTUsIDY0MTEyLCA2NDY0MiwgMCwgNTM4OCwgMCwgMCwgMCwgCi0gICAgNzcxNCwgNjYyMjIsIDAsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCAwLCAwLCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCAwLCAwLCAwLCA2NDYxNSwgNDE5MTUsIDAsIAotICAgIDEyMDc1LCA5MjIxMSwgMCwgNTE3NCwgMCwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCA4NDA4LCA2NDcwNCwgCi0gICAgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDAsIDczNzk3LCAwLCAxMTE2LCAxMjgyMDQsIDQzMDQ5LCA3MTM2LCA0MzA1MCwgCi0gICAgODU0OCwgMTIwNDg1LCAwLCAxMTkwNjEsIDkxNzk5OSwgMCwgMTMxMTUsIDQzNjc1LCA2NDA5MSwgOTMyMiwgMCwgMTIwNTk1LCAKLSAgICA2NDA5NSwgNjQwOTQsIDgxMTEsIDY2MjQ3LCA0MjMzMiwgNjQwODksIDY0MDg4LCA2MTk5LCAwLCAwLCAxMTQzNCwgNjQwODMsIAotICAgIDY0MDgyLCAxMTMyOSwgNzczNywgNjQwODcsIDY0MDg2LCA2NDA4NSwgNjQwODQsIDE5NDgxNywgOTkyNywgNDEzMzUsIAotICAgIDQxMTgsIDE3OTcsIDAsIDQxMzM0LCAwLCA0NiwgNDM0NDgsIDEyNzg4MSwgMjk4LCAwLCAxMjgxMTQsIDAsIDQyNjI3LCAwLCAKLSAgICAzMiwgNjE4NywgMTE5MDUyLCAxMTQ5NSwgMTE0NTksIDM2NjUsIDAsIDQyODcxLCAwLCAxOTkyMywgNzQzMzUsIDAsIAotICAgIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIDAsIDY1NzU4LCAxMjc1MCwgNDE4MSwgCi0gICAgODU0NCwgMCwgMTIwMTk5LCA5MTc4OTcsIDEyMDE5OCwgNjk4MDksIDYxODEsIDY1MDE0LCAwLCAwLCAwLCAzNjM5LCAKLSAgICAxMTk1ODgsIDAsIDAsIDExODkwNCwgMTAwNzMsIDEyMDIwNiwgMTI4ODYyLCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgCi0gICAgMTA5OCwgOTI1NjUsIDEyMDIwNSwgMCwgMCwgMTAyMDcsIDg3ODksIDAsIDAsIDAsIDAsIDkyMzQsIDAsIDYxODIsIDAsIAotICAgIDY1MDU4LCAwLCAwLCAwLCAwLCA1NDcxLCA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgMTE4OTA3LCAKLSAgICAwLCA2NjIzOCwgMTI4NDQsIDAsIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgCi0gICAgNjQ0MDUsIDQxMzM3LCAwLCA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCAKLSAgICA2NTc5LCAwLCA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCAKLSAgICA1MDU4LCA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIAotICAgIDc4NjA2LCAwLCAxNDM3LCA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDAsIDAsIAotICAgIDAsIDEyMTEzLCA0MjM2LCA0NzI3LCAwLCAwLCA3NjkzLCAxMDc0OSwgMCwgNzQ4OCwgNTc3MywgOTc4LCAxMjgxMzQsIDAsIAotICAgIDQxNjE5LCAxMDIzOSwgNjg2MTEsIDAsIDY2MjA5LCAwLCAxMjg3MDAsIDk3NDgsIDAsIDEyNzUyNCwgMCwgMCwgMCwgMCwgCi0gICAgMTk1MDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MzQxLCAxMTk1OTYsIDIzNzksIDExMzI1LCAwLCA2NDY2OCwgNjc4NTQsIAotICAgIDgxMjUsIDEyMDU0NSwgNjc0MywgMTE5MTc1LCA5MTc5NDAsIDIzNjksIDAsIDAsIDAsIDExOTIzNSwgNzQwOTIsIDczOTM2LCAKLSAgICA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCAwLCAyNjQsIDIzNzUsIDgwNjAsIDYxOTQsIDExOTg1OCwgCi0gICAgMTg0NCwgMTE5MDg0LCAwLCA2MDE5LCAwLCAwLCA2OTYxLCAwLCAxMTg4MzksIDAsIDg4MDAsIDAsIDQyODYyLCA0NDYzLCAKLSAgICA2NTU4MSwgNjE5MiwgMTk0Njc2LCA0Mjc3MSwgMCwgOTIzMzMsIDcyNSwgNjUwNDIsIDExODc5NywgMTIwODAwLCAwLCAKLSAgICAxMjg5MiwgMCwgMCwgMCwgMCwgMCwgMCwgMTI3MjYxLCAxMjA3MDcsIDAsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgCi0gICAgMTE4OTgxLCA3NDQ5MywgMCwgNTA3MiwgMTI4MDcxLCA2MTk4LCAxMTYxNCwgMCwgMTk2LCAwLCAwLCAwLCA0OTI5LCAKLSAgICAxMjAzNDIsIDAsIDAsIDAsIDAsIDQyODQ3LCAwLCAwLCAwLCA0OTM0LCAwLCA0MTMyMywgOTc1OCwgMCwgOTIyODksIAotICAgIDEyNzkxNywgNDI1ODQsIDAsIDQzMjksIDQxMzIxLCA0OTc5LCAzMDQ4LCA3NzUyLCA0MTMyMCwgMCwgNzQ0MTgsIDEyODE5LCAKLSAgICAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgCi0gICAgNzg2NDksIDAsIDEwNjM2LCA3Mzk4MSwgMTE4MDYsIDQzMTY3LCA0NTMxLCAxMjQ1LCA5MTA1LCA2NjQ2MywgNDkyMSwgCi0gICAgMTIwMjE5LCA0OTI2LCA2NTU0NCwgNzM4ODQsIDE5NDYxOSwgMCwgMCwgNjQ3MDksIDAsIDE5NDYyMCwgNzg4ODAsIDQ5MjIsIAotICAgIDMyNSwgOTkyLCAxMTk1NjgsIDQ5MjUsIDAsIDAsIDk1MjYsIDQ5MjAsIDAsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAwLCAKLSAgICA5MjE3NSwgMTIwMjc1LCA0OTMzLCAwLCAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDAsIDcyMiwgCi0gICAgMTk0OTM0LCAxOTkwOCwgMTI2MzcsIDEyNzQ4NSwgMTE5ODU1LCA4NzUzLCAxNTA5LCAwLCA1NDY4LCA5NTExLCAxMjc0NzQsIAotICAgIDEyNzQ3NywgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDkyMzEwLCAxMjc0NjYsIDc4NTU1LCAxMjc0NjgsIAotICAgIDczODYzLCAxMjc0NzAsIDEyNzQ3MywgNDE2MDcsIDEyMDExNSwgMTY3OSwgMTIwMTE2LCAxMjAxODAsIDEyMDExMywgCi0gICAgMTI3NDYyLCA3MDA1LCA0MTYwOSwgOTU4MCwgMCwgNDAxLCAwLCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCAKLSAgICA4MTQzLCAxMjcxMTUsIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgCi0gICAgMCwgNTA3NiwgMCwgMTk0NjA5LCAwLCAxMjAwOTcsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAKLSAgICAxMjAxMDIsIDcxMzgsIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIAotICAgIDY0Nzc1LCA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCAwLCAwLCA4MDc0LCAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgCisgICAgMTI4NTUzLCAwLCA0MTYwMSwgODg3NCwgOTgzNzc0LCA3NzQ4LCAwLCAwLCAwLCAxMjc5MzksIDQxNjAzLCA5Nzg0LCAwLCAKKyAgICA5MTg4LCA0MTYwMCwgMCwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDAsIDAsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgCisgICAgMzQwNCwgMCwgMCwgMCwgMTc1OSwgMCwgNDEwNzYsIDY4MzgzLCAxMjA1NzIsIDExOTIwNSwgNjY1NzcsIDk0MDE0LCAKKyAgICAxMjc3NjQsIDY1ODU5LCAwLCA3NDA0LCAwLCAwLCAwLCAwLCA2NTkwOCwgOTgzNCwgMzA1NSwgOTg1MiwgOTgzODUxLCAKKyAgICA2NTI4OCwgMCwgMTEzOTgsIDAsIDkyNDE3LCAxMTkyNTUsIDAsIDAsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCAwLCA5MTc4MjQsIAorICAgIDMzNTAsIDEyMDgxNywgNjQzMTgsIDkxNzgyOCwgMTI3MDg5LCAzMzkwLCA3NDQ4MywgNDMyNjUsIDEyMDU5OSwgOTE3ODMwLCAKKyAgICA3ODU3MywgMCwgMTkxOSwgMzQwMCwgMTIwNjUxLCAxMjc5NDQsIDExNjQ3LCA5MTc1NDAsIDY2NDQ2LCA2NDE0MSwgODU2MiwgCisgICAgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgMTEyOTcsIDk4MzY3OSwgOTgzMTUyLCAxMTk2NiwgCisgICAgNjQxMjgsIDEyODU4NywgMCwgMCwgNjQxMzIsIDEwODY3LCA2NDEzMCwgNjQxMjksIDk4MzgzNSwgNDMzNzQsIDk3NzksIAorICAgIDI3NjQsIDY2MDAyLCAxMDE2NywgOTQ3MSwgMCwgNjYwMjEsIDAsIDAsIDU0NTcsIDU0NDAsIDg4NTcsIDkzOTgxLCA2NTI4MiwgCisgICAgMjg0MywgNTM1NSwgMTI3OTI4LCA5ODM5NTYsIDAsIDUxOTQsIDExNjU3LCA0Mzk4NCwgMTI4MjkyLCAwLCA5ODM2MjAsIDAsIAorICAgIDAsIDEyNzAyNywgMTA3MTcsIDY0NTcwLCA1NjMwLCA1Mzk2LCA2NDE0MywgMTA2ODIsIDAsIDEwNjAyLCA4MDAsIDQyNDk5LCAKKyAgICA2NjE4NiwgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCAxMTg4NTksIAorICAgIDE5NDY2MSwgNjQ0NjgsIDEwOTA2LCAxMzUzLCA2OTYwLCAwLCAwLCA1ODI4LCA4NzI0LCA5MTc4MDYsIDg5MzMsIDE2MDEsIAorICAgIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgMCwgNzQ0MDEsIDkxNzgxMSwgNTg3LCAwLCAxMjgxMzEsIAorICAgIDAsIDAsIDAsIDc4MjE0LCAyNzUwLCA3NDIxOCwgNTU2LCA2NDE1OCwgNjQxNTcsIDk4Mzk0MCwgMTIyMTMsIDE5NDY3OCwgCisgICAgMjc2MCwgMCwgMCwgMCwgMTk0Nzk0LCA2NDE1NiwgNjQxNTUsIDQyNDk2LCAwLCA2NDE1MSwgNjQxNTAsIDEyNjc5LCAKKyAgICAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDAsIDAsIDQ4MzksIDAsIDAsIDE4NzQsIDExOTAxNiwgMCwgCisgICAgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMCwgMTI3NTMxLCA5MjUzNCwgNzAwNywgNzU5MCwgNjU0NDMsIDkwMzYsIAorICAgIDkyNTUwLCA2NDEyMiwgNzQ0MjIsIDY2NjA5LCAwLCA2NDExNywgNjQxMTYsIDYyODcsIDY0MTE0LCAyNzI1LCA2NDEyMCwgCisgICAgNjQxMTksIDQzOTgxLCA0MjEyOCwgMTI3ODQyLCAxMTc3LCA2NTYwMSwgMTIzMjIsIDY0MTA2LCA2OTY0MCwgMTI3MzA2LCAKKyAgICA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCAKKyAgICA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgMTI4NjcxLCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIAorICAgIDkxNzk5MCwgNzM4NDEsIDAsIDAsIDkwNTYsIDY0MzEzLCA2MTg4LCAxMjAwMTksIDYxNTUsIDY0MDY4LCAxODIzLCA2NDA2NiwgCisgICAgNjQwNjUsIDY0MDcyLCA2NDA3MSwgNjMsIDcyMzMsIDkyMjEyLCAwLCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc2NiwgCisgICAgMTI4MzQ0LCAwLCAxMTc2LCAxMTg5NTksIDEyNzkzMCwgODE2MiwgMTI4NjY3LCA5ODM4MjIsIDAsIDEyMDUxOSwgNjYzNzYsIAorICAgIDY2MjQyLCAxMTQxNSwgNDMzMywgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCAwLCAwLCAwLCA3NzE0LCA2NjIyMiwgCisgICAgNjk5MDIsIDc3NjgsIDAsIDQxOTksIDY0NzA4LCA5ODM0MTMsIDAsIDAsIDg3MDgsIDk1NjAsIDY0MDc3LCA2NDA3NiwgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDAsIDEyNjU3MCwgMCwgNjQ2MTUsIDQxOTE1LCAKKyAgICAwLCAxMjA3NSwgNzAwNjIsIDAsIDUxNzQsIDk4MzIxNSwgMCwgMTI3NTU3LCAzMTIzLCAwLCAxMjY4NSwgMTI3OTA0LCAKKyAgICA4NDA4LCA2NDcwNCwgMCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCA3Mzc5NywgMCwgMTExNiwgMTI4MjA0LCA0MzA0OSwgCisgICAgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgMTE5MDYxLCA5MTc5OTksIDAsIDEzMTE1LCA0MzY3NSwgNjQwOTEsIAorICAgIDkzMjIsIDAsIDEyMDU5NSwgNjQwOTUsIDY0MDk0LCA4MTExLCA2NjI0NywgNDIzMzIsIDY0MDg5LCA2NDA4OCwgNjE5OSwgMCwgCisgICAgMCwgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCAxOTQ4MTcsIAorICAgIDk5MjcsIDQxMzM1LCA0MTE4LCAxNzk3LCAwLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCAxMjc4ODEsIDI5OCwgMCwgMTI4MTE0LCAKKyAgICAwLCA0MjYyNywgMCwgMzIsIDYxODcsIDExOTA1MiwgMTE0OTUsIDExNDU5LCAzNjY1LCA5ODM2MDAsIDQyODcxLCAwLCAKKyAgICAxOTkyMywgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgOTI0OTUsIDAsIAorICAgIDk4MzQ1OCwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCAwLCAxMjAxOTksIDkxNzg5NywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCisgICAgNjUwMTQsIDAsIDAsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAwLCAwLCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDEyODg2MiwgCisgICAgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIDk4MzExOCwgMTAyMDcsIDg3ODksIAorICAgIDk4MzIyMywgMCwgMCwgOTgzNDY0LCA5MjM0LCAwLCA2MTgyLCA5ODM0NjYsIDY1MDU4LCAwLCA5ODM0NzAsIDk4MzQ2NywgMCwgCisgICAgNTQ3MSwgOTQ2MSwgNTU3MywgMTE4OTM2LCA1NDczLCA0NCwgMCwgNjYyNDQsIDk0MDcyLCAwLCA2NjIzOCwgMTI4NDQsIDAsIAorICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMCwgMCwgNjU4MSwgNTU3NiwgMCwgNjQ0MDUsIDQxMzM3LCAwLCAKKyAgICA0MTYzMSwgODk0NywgNjgzOTAsIDEyNzg0NCwgNDE2OTQsIDAsIDAsIDc5MDgsIDAsIDEwNDA4LCA2NTc5LCAwLCA2NDYxOCwgCisgICAgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCAxMjcwMTAsIDEyMDUwNCwgMTk0ODI4LCAwLCA1MDU4LCA0MTAxMCwgCisgICAgOTk5MiwgMTI4Mjk5LCA1MDU3LCAwLCAwLCA3NDUzOCwgNTA1NCwgMTE4OTUxLCAxOTQ5NzEsIDc4NjA2LCAwLCAxNDM3LCAKKyAgICA0MTYxNywgNjU4LCAzNDk3LCAxMjg1MDksIDc0ODYsIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMCwgMTI4NTI5LCAKKyAgICAxMjExMywgNDIzNiwgNDcyNywgMCwgMCwgNzY5MywgMTA3NDksIDAsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAwLCAKKyAgICA0MTYxOSwgMTAyMzksIDY4NjExLCAwLCA2NjIwOSwgMCwgMTI4NzAwLCA5NzQ4LCA5ODM5NDcsIDEyNzUyNCwgMCwgMCwgMCwgCisgICAgMCwgMTk1MDgzLCAwLCA5ODM4MzQsIDAsIDAsIDAsIDAsIDAsIDkzNDEsIDExOTU5NiwgMjM3OSwgMTEzMjUsIDAsIDY0NjY4LCAKKyAgICA2Nzg1NCwgODEyNSwgMTIwNTQ1LCA2NzQzLCAxMTkxNzUsIDkxNzk0MCwgMjM2OSwgMCwgOTgzOTYzLCA5ODM5NjQsIAorICAgIDExOTIzNSwgNzQwOTIsIDczOTM2LCA3MDA4LCA0MzY2MCwgMCwgMCwgMCwgMjM2NywgMTI3ODI3LCA5ODM4NDgsIDI2NCwgCisgICAgMjM3NSwgODA2MCwgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDAsIDYwMTksIDAsIDAsIDY5NjEsIDAsIDExODgzOSwgCisgICAgMCwgODgwMCwgMCwgNDI4NjIsIDQ0NjMsIDY1NTgxLCA2MTkyLCAxOTQ2NzYsIDQyNzcxLCAwLCA5MjMzMywgNzI1LCAKKyAgICA2NTA0MiwgMTE4Nzk3LCAxMjA4MDAsIDk4MzA0MCwgMTI4OTIsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNzI2MSwgMTIwNzA3LCAKKyAgICA5ODMxMjgsIDAsIDUwNzQsIDUwNzMsIDEyODc5MCwgODk4MywgMTE4OTgxLCA3NDQ5MywgOTgzNTYxLCA1MDcyLCA5Mzk3NywgCisgICAgNjE5OCwgMTE2MTQsIDAsIDE5NiwgMCwgMCwgMCwgNDkyOSwgMTIwMzQyLCAwLCAwLCAwLCAwLCA0Mjg0NywgMCwgMCwgMCwgCisgICAgNDkzNCwgMCwgNDEzMjMsIDk3NTgsIDAsIDkyMjg5LCAxMjc5MTcsIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgCisgICAgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNzQ0MTgsIDEyODE5LCAwLCA1MDcxLCAwLCAzNjQyLCAwLCA1MDcwLCAKKyAgICAxMDA0MiwgMTE4ODM1LCAzOTg3LCA1MDY4LCAwLCA4OTA5LCA3ODY1MCwgNzg2NDksIDY5OTE3LCAxMDYzNiwgNzM5ODEsIAorICAgIDExODA2LCA0MzE2NywgNDUzMSwgMTI0NSwgOTEwNSwgNjY0NjMsIDQ5MjEsIDEyMDIxOSwgNDkyNiwgNjU1NDQsIDczODg0LCAKKyAgICAxOTQ2MTksIDAsIDAsIDY0NzA5LCAwLCAxOTQ2MjAsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAwLCAKKyAgICAwLCA5NTI2LCA0OTIwLCAwLCA5NDgsIDAsIDEyMDIwOCwgNDkzMCwgMCwgOTIxNzUsIDEyMDI3NSwgNDkzMywgMTIwMjExLCAKKyAgICAwLCAxMTg5ODUsIDQ5MjgsIDAsIDAsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgCisgICAgMTI3NDg1LCAxMTk4NTUsIDg3NTMsIDE1MDksIDAsIDU0NjgsIDk1MTEsIDEyNzQ3NCwgMTI3NDc3LCAxNjcyLCA2MjA1LCAKKyAgICAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIDEyNzQ2NiwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIDEyNjU3NywgCisgICAgMTI2NTAzLCA0MTYwNywgMTIwMTE1LCAxNjc5LCAxMjAxMTYsIDEyMDE4MCwgMTIwMTEzLCAxMjc0NjIsIDcwMDUsIDQxNjA5LCAKKyAgICA5NTgwLCAwLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgNTc2MSwgMzQyLCA4NTUzLCAwLCA4MTQzLCAxMjcxMTUsIAorICAgIDExOTgzLCA5MjI0OSwgNjI0LCA3NDUwOCwgNDA1NywgNDM3ODgsIDUwNzgsIDc0MjU4LCAxMjQ3OCwgMCwgNTA3NiwgMCwgCisgICAgMTk0NjA5LCAwLCAxMjAwOTcsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDAsIDkyNTIzLCAxMjAxMDIsIAorICAgIDcxMzgsIDEyMDU1MiwgMCwgMTk0NjExLCA3ODc1MiwgMCwgMTI1MjAsIDgwNTgsIDk3MzIsIDAsIDUwODAsIDY0Nzc1LCAKKyAgICA1MDM2LCA1MDM1LCAxMjA1OTAsIDQyNjA0LCA5ODM2NDcsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc4ODM4LCAKICAgICA0NDMyLCAxMjcyNzEsIDUwMzMsIDEyNzI3MywgMTI3MjcyLCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAKICAgICAxMjcyNjIsIDQzNzA0LCAxMjcyNjQsIDEyNzI1MSwgNjc1ODgsIDExOTAwMCwgMTI3MjUyLCAxMjcyNTUsIDg4NTgsIDY0MDksIAogICAgIDEyNzI1NiwgMTIwMjUyLCAxMjgxMDAsIDAsIDAsIDY2MzIxLCAwLCAxMjgxNCwgMTI3MjQ4LCAzNDMyLCAxMDIxOCwgMCwgCi0gICAgNjA5NCwgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgMCwgNTAzMCwgMCwgMCwgCi0gICAgMCwgNzM4NjksIDk2MjIsIDAsIDAsIDY3ODcsIDAsIDAsIDAsIDAsIDEwNTQ0LCAxMjkxOSwgMCwgOTIyMTgsIDAsIDAsIDAsIAotICAgIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgMTE5OTM1LCA3NjEzLCA5MjU2MiwgCi0gICAgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDAsIDQzNTY3LCAKLSAgICA3NDA1NiwgOTE3OTEwLCAxMTg5NjMsIDExOTkxOSwgNzIxNiwgNjUyMzIsIDcyMTcsIDI1MSwgNzIxOCwgNzg5NSwgNDM5NSwgCi0gICAgNDM1MzgsIDExOTkyNiwgMTE5OTI5LCAxMTk5MjgsIDcyMTMsIDExOTkyMiwgNzIxNCwgNzIxNSwgMCwgNzQxNDEsIDg4ODAsIAotICAgIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCAxMTk2MTgsIDYyNSwgODE4NywgNDI4NjEsIDExMTMsIDcyMzYsIDc5MTUsIAotICAgIDM2MzAsIDEyMDE3NiwgODE3OSwgNzQyNjQsIDY3ODg2LCA5MzE2LCAxMDk4MCwgMjQ4OSwgNjU2MjQsIDgxNTAsIDEzNTksIAotICAgIDY3NjUyLCAxMjczMjksIDEyNzMzMCwgNzM3NTYsIDUwNDIsIDUwNDEsIDQyNzY5LCAxMjA4NCwgMTI3MzI0LCAxMjczMjEsIAotICAgIDkyMjc5LCAxMjczMTksIDEyNzMyMCwgMTI3MzE3LCAxMjczMTgsIDEyNzMxNSwgMTIyODMsIDE2MTYsIDM3OTUsIDAsIAotICAgIDg3OTUsIDY2MjQ1LCAwLCAwLCAwLCAxMTM4LCA3MzkwNSwgMTI2NzcsIDAsIDAsIDMyMzksIDEyNzMxMSwgMCwgMCwgODQzMSwgCi0gICAgMCwgNDIxNjQsIDAsIDExNzc4LCAxMjYyMCwgNjgyNiwgNzM3NzMsIDExOTA3MywgNTA0MCwgMCwgMCwgMCwgNzg0MjAsIDAsIAotICAgIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgNzQyOTMsIDAsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgCi0gICAgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCAKLSAgICA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgCi0gICAgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIAotICAgIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIAotICAgIDY1NzgxLCA2NDczNCwgMCwgMjQ0MCwgNjU3ODAsIDc3OTEzLCA4NDQ5LCAwLCA1MDA4LCAwLCAyMTE4LCAwLCAxMjEyMSwgCi0gICAgODI1NSwgNTUxMiwgNzM4NzUsIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgCi0gICAgMjExNiwgMjQ1NSwgMCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgMCwgODcxNCwgMCwgMjExMywgMCwgMjExNSwgMTI4MTc3LCAKLSAgICAxMjc5MDcsIDQzNzEzLCA1MDUyLCA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgCi0gICAgNDI2NDcsIDUwNTAsIDMwMiwgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCAKLSAgICA5MTE3LCAwLCAxMjAwMywgNTUxMywgNjY2NiwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgCisgICAgNjA5NCwgNzY0MSwgNDI0NDUsIDAsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNzQzMjAsIDE5NDYwNywgOTgzMTc3LCA1MDMwLCAwLCAKKyAgICAwLCAwLCA3Mzg2OSwgOTYyMiwgMCwgNjk5NDQsIDY3ODcsIDAsIDAsIDAsIDk4MzU4MywgMTA1NDQsIDEyOTE5LCAwLCAKKyAgICA5MjIxOCwgMCwgMCwgNjk5MDYsIDEyMDc4OSwgMCwgOTQ3LCAxMTk4MzUsIDE5NDU4NiwgMTk0NTg1LCAxMDk2OSwgCisgICAgMTE5OTM1LCA3NjEzLCA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAxMTk5MzAsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAKKyAgICAxMjAyNjgsIDAsIDQzNTY3LCA3NDA1NiwgOTE3OTEwLCAxMTgzMywgMTE5OTE5LCA3MjE2LCA2NTIzMiwgNzIxNywgMjUxLCAKKyAgICA3MjE4LCA3ODk1LCA0Mzk1LCA0MzUzOCwgMTE5OTI2LCAxMTk5MjksIDExOTkyOCwgNzIxMywgMTE5OTIyLCA3MjE0LCAKKyAgICA3MjE1LCA5ODM4MjcsIDc0MTQxLCA4ODgwLCA3Njg1LCA2NjQ1OSwgMTIwMTczLCA2NTU0MCwgMTE5NjE4LCA2MjUsIDgxODcsIAorICAgIDQyODYxLCAxMTEzLCA3MjM2LCA3OTE1LCAzNjMwLCAxMjAxNzYsIDgxNzksIDc0MjY0LCA2Nzg4NiwgOTMxNiwgMTA5ODAsIAorICAgIDI0ODksIDY1NjI0LCA4MTUwLCAxMzU5LCA2NzY1MiwgMTI3MzI5LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgCisgICAgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCA5MjI3OSwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTI3MzE4LCAxMjczMTUsIAorICAgIDEyMjgzLCAxNjE2LCAzNzk1LCAwLCA4Nzk1LCA2NjI0NSwgMCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAwLCAwLCAKKyAgICAzMjM5LCAxMjczMTEsIDAsIDAsIDg0MzEsIDAsIDQyMTY0LCAwLCAxMTc3OCwgMTI2MjAsIDY4MjYsIDczNzczLCAxMTkwNzMsIAorICAgIDUwNDAsIDAsIDAsIDk4MzQzNSwgNzg0MjAsIDAsIDUwMzksIDAsIDc4NDE4LCAwLCA1MDM4LCAwLCAwLCAxMzE4NCwgCisgICAgNzQyOTMsIDAsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgMCwgMTI4NzcwLCA2NTE1NywgNjY2MiwgMCwgMCwgMzg2MywgCisgICAgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgCisgICAgMCwgNDI1ODksIDU2OSwgMCwgNzM4MTMsIDcxMSwgNDM4OSwgNzEzMywgMCwgNzM4ODAsIDExNjEwLCAxMTM2OCwgMCwgCisgICAgMTk0NTcwLCA0MTMzMSwgMTAwNiwgNzQyNDAsIDAsIDE1NTAsIDgyMDEsIDczNzM3LCA3NjI3LCA1NDk5LCA1MDMxLCAKKyAgICA3NzkwOCwgNDI3MzgsIDY1Nzg0LCA3NzkwNywgNjUyNjcsIDM3NTgsIDAsIDY1NzgxLCA2NDczNCwgNzAwNzMsIDI0NDAsIAorICAgIDY1NzgwLCA3NzkxMywgODQ0OSwgMCwgNTAwOCwgOTgzNTcyLCAyMTE4LCAwLCAxMjEyMSwgODI1NSwgNTUxMiwgNzM4NzUsIAorICAgIDIxMjgsIDIxMzAsIDIxMzEsIDIxMjYsIDIxMzMsIDExMTksIDEyNzA2OCwgMjExNCwgMjExNiwgMjQ1NSwgMCwgMjEyMiwgCisgICAgMjEyMywgMjEyNCwgMjEyNSwgMTI3NDg2LCA4NzE0LCA5ODM4MTEsIDIxMTMsIDAsIDIxMTUsIDEyODE3NywgMTI3OTA3LCAKKyAgICA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgNjU3NzMsIDE0MjksIDQyNjQ3LCAKKyAgICA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIDEyNzI2LCA3NDU5NCwgOTExNywgCisgICAgOTgzMTgxLCAxMjAwMywgNTUxMywgNjY2NiwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAwLCA3ODQ0NywgMjQ3MCwgCiAgICAgNzg0MzcsIDAsIDE5MjUsIDAsIDkyMjM3LCA3NDgwNywgMCwgNTA0OCwgNTA0NywgMCwgMCwgMCwgOTIzMTMsIDAsIDc0NDk3LCAKLSAgICA5MjM5NSwgODA4OSwgNjkyOSwgNjM5LCAwLCA2ODE3OSwgNjQ0NDIsIDAsIDkyMzQ4LCA0NTk5LCA0MTQwMiwgNjY3NCwgCi0gICAgNDMzOTcsIDQzMjk0LCAxNDc2LCA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgMCwgMCwgMzUzMCwgCi0gICAgOTc1MCwgMTI4MzE3LCAwLCA2NjU2LCA5MjM2NywgMCwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAwLCA1MDQ1LCAKLSAgICAwLCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAwLCA3ODUzLCA3NDA2OCwgNzQwMDQsIAotICAgIDk2NjksIDEyMzQxLCAxMjcwMywgODQwMiwgMCwgMTE5MDcwLCA5MTc2MDAsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIAotICAgIDAsIDAsIDExOTYwNiwgMCwgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAwLCAKLSAgICA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAwLCAxOTQ1OTEsIDAsIAotICAgIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCAxMjA0MzksIDQ4OSwgMCwgNDI1MCwgMTIwNDQxLCAxMjA0NTIsIDQzMTUxLCAwLCAKLSAgICAxOTQ4NTEsIDY2MjAwLCAwLCAwLCAwLCA3ODQyMywgMCwgMCwgODcxMSwgNjE4MywgMCwgMCwgMCwgMTIwNDQ4LCA3NjIzLCAKLSAgICAxMTg5MjUsIDE5NDg1MywgOTIzNSwgMTI3NjAsIDc0MTc2LCA2OTY2MiwgNjY0NDUsIDQzNTQwLCAxMDA2MiwgMzc0MywgCi0gICAgMTE1MTQsIDExMDc4LCAwLCAxMjEzNiwgMCwgMCwgMTIwNDM1LCAwLCA3NzI2LCAwLCAxOTkyMiwgMjY3LCAzMzkzLCAKLSAgICA0MjE5OCwgMTM3MSwgMTk0ODQ5LCA2OTIzMywgMjQ1OCwgMCwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgCi0gICAgNDEwNzcsIDM0MDIsIDkwNTAsIDMzOTgsIDAsIDAsIDAsIDMzOTEsIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAKLSAgICAwLCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIDEyNzUzNywgMTMwMTQsIDEzMDEzLCAwLCA2NjczLCAwLCAKLSAgICAwLCAwLCAxMjQzOCwgMCwgMCwgMCwgMCwgMCwgOTA1MywgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCAwLCAKLSAgICA2NjYwLCA3ODc1OCwgOTE3NzYwLCA5MTc3OTMsIDQyMjEyLCAxMjYyOSwgMTE0MzUsIDAsIDU1MjU2LCA2NTUzOCwgMCwgCi0gICAgMTI3OTQwLCAwLCA3NDU0NywgMCwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxOTUwMDIsIDExOTIzOCwgMTk1MDA0LCAKLSAgICA3ODA5OSwgMTI3MDg1LCAwLCAwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCAwLCA3ODQ1OCwgNjY3MjgsIDE4MTYsIDAsIAotICAgIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgMCwgMCwgNDkwMSwgMTgyMSwgMCwgNTc4LCAzNjUzLCAwLCA3OTEsIAotICAgIDkxNjIsIDY5NzcsIDAsIDExOTI5OCwgNzQ1NjEsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgMTE5MzAzLCAwLCA3NTU3LCAKLSAgICAxMTkzMzksIDExOTMwMSwgODIzNCwgNzI0MSwgMCwgMTk0OTk0LCAxMTkxNjcsIDE5NDk5NiwgMTI4MTEsIDY1OTI1LCAKLSAgICAzOTQ2LCA3ODA3OCwgMTA5OTgsIDc4MDgwLCA2NzMsIDE5NDg2NywgNjQzOTcsIDEyODI3NiwgNzQ1OTksIDc4NDQ5LCAKLSAgICA4ODkwLCAxOTQ5NzcsIDE5NDk3NiwgMjQ0OCwgNzgwODUsIDEwMjY3LCA4NDI0LCAyNDUyLCA3ODA4MywgMTk0ODY0LCAKLSAgICA4NzI5LCA3ODQ1NiwgMCwgNzg0NSwgOTE3OTE3LCA3ODY5MiwgNDQwOCwgNDEyMiwgNjc3MiwgMTEwMzksIDg3MjMsIAotICAgIDE5NDk5MCwgMTI3ODMzLCAxMTkzMDIsIDczMSwgMTE5MzA0LCA5MjI4NiwgMjQzOCwgNjQ4NTUsIDExOTMwMCwgMTE5Mjk5LCAKLSAgICAxMTc1LCAwLCA0MjEzNSwgMzczLCAxMTkxNzIsIDIxMTksIDExNDU3LCAxMTUyMSwgNzcyMywgMCwgMCwgMCwgNDE5NTIsIDAsIAotICAgIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIAotICAgIDEyOTYzLCAxMjc4NjQsIDYxODksIDQxMjUsIDEzMTQsIDEyMTMzLCAwLCAxMTg4NzMsIDEyNzEsIDAsIDAsIDY2MDI0LCAKLSAgICA0MTQ4MiwgMzg2NCwgNzQ1MzksIDAsIDM4NzksIDAsIDEyOTc4LCA0MTY2LCA0NTc0LCAwLCA3NTY3LCA3NDU5LCAwLCAKLSAgICA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCA5MjU0OCwgNTc1OSwgMCwgMCwgNDEzODgsIDkyMzYyLCA0MTM5MiwgNjQyODgsIAotICAgIDQxMzg3LCAwLCA4NzA2LCA1NTUyLCAwLCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDc4MTEwLCA2NjU5NiwgCi0gICAgMCwgMCwgMTAyNjMsIDU1NTQsIDAsIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDAsIDAsIDc2MTgsIDg1MTcsIDExNDU1LCAKLSAgICA3ODQ0MCwgNjQ2MzIsIDY0NDQ3LCA1NTU1LCA3ODA4OCwgNzgwOTMsIDc4MDkxLCAwLCA0MjgwMywgNjUwMzMsIDkxNDMsIAotICAgIDY2NjgsIDE5NTA2NywgMTk1MDY2LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgNjQ2MjQsIDAsIDAsIDAsIAotICAgIDAsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCA5MjI3MywgNjY1ODAsIDExODg5NSwgCi0gICAgNjY2ODMsIDEwNTU0LCA5MTc3NzgsIDExOTEyMSwgMCwgNTA5OCwgOTE3NzcwLCAwLCAxMTkwOTksIDUwOTcsIDQ5MzUsIAotICAgIDk4NDgsIDEwMzgxLCAwLCAxMjg4NzAsIDAsIDM2NTEsIDAsIDE5NDYxMCwgMTI3NTU2LCA1MTAyLCA1MTAxLCAxMDI2OSwgCi0gICAgMTI5ODMsIDgxMzgsIDQ1MTcsIDE5MzIsIDUxMDAsIDE0MzksIDEyMDkzLCAxMjQ3LCAxMDAzNCwgMTk1MDY0LCA1MDk5LCAKLSAgICA3ODM3MywgMTQ0MSwgNDIwODcsIDMwNjMsIDY1MCwgMCwgNzgzOCwgMCwgMTk1MDQxLCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgCi0gICAgMTIwNzkwLCAxMjg1ODIsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDAsIDkxNTQsIDkxMTgsIDAsIDAsIDI2NzYsIAotICAgIDc3NTAsIDAsIDczODEyLCA2MTkwLCA4NTk5LCAxOTUwNTMsIDAsIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIAorICAgIDkyMzk1LCA4MDg5LCA2OTI5LCA2MzksIDk4MzU2MywgNjgxNzksIDY0NDQyLCAwLCA5MjM0OCwgNDU5OSwgNDE0MDIsIAorICAgIDY2NzQsIDQzMzk3LCA0MzI5NCwgMTQ3NiwgNjQ4LCAwLCA2NTgxOSwgMzIzMywgMCwgNDE3ODIsIDY5NTEsIDk0MDE3LCAKKyAgICA5ODM5NjcsIDM1MzAsIDk3NTAsIDEyODMxNywgMCwgNjY1NiwgNDI2MTgsIDAsIDUwNDYsIDg1MTIsIDY1ODU2LCA3NDI2MSwgCisgICAgODk2NywgMCwgNTA0NSwgNDIwMjYsIDE5MTYsIDc5ODYsIDUwNDQsIDEyMDU1NiwgOTAwNiwgMTMxMjgsIDUwNDMsIDAsIAorICAgIDc4NTMsIDc0MDY4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAwLCAxMTkwNzAsIDkxNzYwMCwgNDE3NTAsIAorICAgIDM1ODYsIDY0NTA4LCA0MzE0OCwgMCwgMCwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NTM0LCAxOTQ5NDYsIAorICAgIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAwLCA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAxMDgyOSwgNzM5OTEsIDgwNTcsIAorICAgIDExMjYsIDczODk1LCAwLCAxOTQ1OTEsIDAsIDM5MjUsIDQyNTEsIDgwNjksIDEwNTE3LCAxMjA0MzksIDQ4OSwgMCwgNDI1MCwgCisgICAgMTIwNDQxLCAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDE5NDg1MSwgNjYyMDAsIDAsIDAsIDAsIDc4NDIzLCAwLCAwLCA4NzExLCAKKyAgICA2MTgzLCAwLCAwLCAwLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgMTE4ODg5LCA5MjM1LCAxMjc2MCwgNzQxNzYsIDY5NjYyLCAKKyAgICA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCAwLCAxMjY1OTcsIDEyMDQzNSwgMCwgCisgICAgNzcyNiwgMCwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIAorICAgIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCA5MDUwLCAzMzk4LCAwLCA5ODMzNDAsIDAsIDMzOTEsIAorICAgIDQxMDc1LCAyNDc2LCAwLCAxMjgwMTcsIDAsIDEwNjI1LCAwLCAxMjc2NywgMTMwMTcsIDc4NzQzLCA2NDI2MSwgNjQ5MzQsIAorICAgIDEyNzUzNywgMTMwMTQsIDEzMDEzLCAwLCA2NjczLCAwLCAwLCAwLCAxMjQzOCwgMCwgOTgzMzM0LCAwLCA5ODM4NzEsIAorICAgIDEyNjYzOCwgOTA1MywgMTMwMTUsIDc0NTIzLCAwLCA3MDQsIDY2MjE1LCA2MTk1LCA5ODM4MTksIDY2NjAsIDc4NzU4LCAKKyAgICA5MTc3NjAsIDkxNzc5MywgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCAwLCAxMjc5NDAsIDk4MzMzMywgCisgICAgNzQ1NDcsIDEyNjU4NSwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxOTUwMDIsIDExOTIzOCwgMTk1MDA0LCAKKyAgICA3ODA5OSwgMTI3MDg1LCAwLCAxMjgzMjAsIDQyODcsIDgyNzYsIDQ5MDIsIDExMzEsIDAsIDc4NDU4LCA2NjcyOCwgMTgxNiwgCisgICAgMCwgNDI1MzMsIDE2OCwgNDI4NDUsIDQ4OTgsIDY0Mjk4LCA5ODMxNDEsIDAsIDQ5MDEsIDE4MjEsIDAsIDU3OCwgMzY1MywgCisgICAgMCwgNzkxLCA5MTYyLCA2OTc3LCAwLCA3ODg4OSwgNzQ1NjEsIDAsIDczNzMxLCA4MzU0LCA0MzU5MCwgMTE5MzAzLCAKKyAgICA5ODM0NDEsIDc1NTcsIDExOTMzOSwgMTE5MzAxLCA4MjM0LCA3MjQxLCAwLCAxMjA2NzEsIDExOTE2NywgMTk0OTk2LCAKKyAgICAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgMTI4Mjc2LCAKKyAgICA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIDI0NTIsIAorICAgIDc4MDgzLCAxMjg4MjQsIDg3MjksIDc4NDU2LCAwLCA3ODQ1LCA5MTc5MTcsIDcxMzAyLCA0NDA4LCA0MTIyLCA2NzcyLCAKKyAgICAxMTAzOSwgODcyMywgMTk0OTkwLCA3MTMxMCwgMTE5MzAyLCA3MzEsIDExOTMwNCwgOTIyODYsIDI0MzgsIDY0ODU1LCAKKyAgICAxMTkzMDAsIDExOTI5OSwgMTE3NSwgMCwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgMTE1MjEsIDc3MjMsIDAsIAorICAgIDAsIDAsIDQxOTUyLCAwLCA1MjczLCAyMTI3LCA1MjY5LCA2MzM3LCA1MjAyLCAyNDA0LCA1MjY3LCA0MjgyMywgMTEyOTEsIAorICAgIDE5OTE1LCA1Mjc3LCAxMjk2MywgMTI3ODY0LCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAxMTg4NzMsIAorICAgIDEyNzEsIDk4MzYzMSwgMCwgNjYwMjQsIDQxNDgyLCAzODY0LCA3NDUzOSwgMCwgMzg3OSwgMCwgMTI5NzgsIDQxNjYsIAorICAgIDQ1NzQsIDAsIDc1NjcsIDc0NTksIDk4MzE2MCwgNDEzOTAsIDUzODQsIDQxODgyLCA2NzY0NywgOTI1NDgsIDU3NTksIAorICAgIDk4MzkwMywgMCwgNDEzODgsIDY0NDQ2LCA0MTM5MiwgNjQyODgsIDQxMzg3LCAwLCA4NzA2LCA1NTUyLCA5ODMxODcsIDcwMCwgCisgICAgMCwgNTU1MywgMCwgNzA4OCwgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCA3NDA2NiwgMCwgMTAyNjMsIDU1NTQsIDAsIAorICAgIDEyMzQ0LCAxMDMxMSwgNzgxMTMsIDY2NjUsIDkyNjI2LCAwLCA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCAKKyAgICA2NDQ0NywgNTU1NSwgNzgwODgsIDc4MDkzLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCAxOTUwNjcsIAorICAgIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgNjQ2MjQsIDAsIDAsIDAsIDk4MzY0MCwgNDI2OSwgCisgICAgNzM4ODUsIDkxNzc3NSwgNDI4NDYsIDY5NjQ0LCA5NTAsIDAsIDkyMjczLCA2NjU4MCwgMTE4ODk1LCA2NjY4MywgMTA1NTQsIAorICAgIDkxNzc3OCwgMTE5MTIxLCAwLCA1MDk4LCA5MTc3NzAsIDAsIDExOTA5OSwgNTA5NywgNDkzNSwgOTg0OCwgMTAzODEsIDAsIAorICAgIDEyODg3MCwgOTgzNjkyLCAzNjUxLCAwLCAxMjA3MzAsIDEyNzU1NiwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCAKKyAgICA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDE5NTA2NCwgNTA5OSwgNzgzNzMsIDE0NDEsIAorICAgIDQyMDg3LCAzMDYzLCA2NTAsIDAsIDc4MzgsIDAsIDE5NTA0MSwgMTk1MDQwLCAxMTkxNDIsIDkwMzEsIDEyMDc5MCwgCisgICAgMTI4NTgyLCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAwLCA5MTU0LCA5MTE4LCAxMjY1NDMsIDAsIDI2NzYsIDIyNzcsIAorICAgIDAsIDczODEyLCA2MTkwLCA4NTk5LCAxOTUwNTMsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCAKICAgICA5MjYyMCwgMTIxMjksIDAsIDg0ODEsIDAsIDYyMDIsIDE5NTAzNSwgMTA5MjAsIDEyODIzNywgNTIwMywgMTk1MDM5LCAKICAgICAxOTUwMzgsIDUxMDgsIDUxMDcsIDY1ODE4LCA2NjAxOSwgOTc2MiwgMCwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCAKLSAgICA2NjU3LCAyMDcsIDEyODgwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCAwLCAwLCA1MTAzLCAxMjc4NjEsIAotICAgIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDAsIDEwMTU3LCAwLCA0MzAzNCwgMTE0MzgsIDAsIDAsIAotICAgIDkyNjk0LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIDUxMDUsIDE5NTAzMCwgCi0gICAgNjk3MjAsIDY0NzYsIDUxMDQsIDAsIDMwNCwgMzE3NiwgMCwgMCwgOTMyLCAxMjg2NjMsIDY1NjcsIDIzOCwgNjk2NTYsIAotICAgIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgCi0gICAgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIAotICAgIDY2MjIsIDgxNTEsIDEwODU4LCAxOTQ1OTYsIDY3NjM2LCAwLCAxMjU2OCwgMCwgMTI1NTMsIDEwODE0LCA0MzI3NSwgNjk1MCwgCi0gICAgOTcxMiwgNjg2ODAsIDQzOTcwLCAwLCA2NTE2NSwgOTI3MjUsIDAsIDY2NDY2LCAwLCAwLCAwLCA2NjcyNSwgNjE5MSwgCi0gICAgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDAsIDAsIDQxNzU0LCA2NzYzNSwgOTM3MCwgMjcyMCwgMTk0OTc1LCAKLSAgICA2ODQ2MiwgODIzMiwgMTE4ODE3LCAwLCAzMjIyLCAwLCAwLCAwLCA2NjY2MywgMCwgMCwgMTA4MzQsIDAsIDAsIDY1NzMyLCAKLSAgICAwLCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgMTIwNzcsIAotICAgIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAxMjA3MjgsIAotICAgIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIDY1MjI5LCAKLSAgICAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIDQyMzIxLCAKLSAgICA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIDE5NDk1MiwgMTk0OTUxLCAwLCAxOTQ5NTMsIDQyMDgwLCAKLSAgICAyNTI5LCAwLCAwLCAwLCA0MjA4MywgMTIwNjc4LCA2ODM5OCwgMTk0OTU3LCA2NzYxOSwgNjYzNjcsIDE5NDk1OCwgOTYzNCwgCi0gICAgOTIzODAsIDk5ODgsIDAsIDQxMDY4LCAwLCAwLCA2NTI2NCwgMCwgMCwgOTI1NDUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCAKLSAgICA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjg4MjEsIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIAotICAgIDQxOTg0LCA5MjE3LCAwLCAwLCAwLCA5MTg2LCAyMDY3LCA0MDE2LCAwLCAwLCAzODEsIDAsIDAsIDQyMDc3LCAwLCAKLSAgICAxMjc0ODMsIDUxODQsIDQyMDc4LCAxOTQ5NDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMCwgCi0gICAgMCwgODEyLCAzNjE1LCAwLCA1MTc4LCA0NDAwMCwgMTIwNTQ4LCA3ODgwNywgNTE4OCwgNzQyODcsIDY3NjI5LCAzNjA1LCAKLSAgICAxMDY5MiwgMTE2NiwgNjQ0MjksIDQyNjM5LCA5MjQsIDAsIDY3NjMxLCAwLCAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgCi0gICAgNjc2MzIsIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgMCwgNzM5MzMsIDY3NjI2LCA0MjQwMSwgMCwgMCwgMTI3MzczLCAKLSAgICA0MjI4OCwgMTI3NTEsIDAsIDg1NDIsIDEzMTQ1LCAxOTQ5NjMsIDI0NjgsIDY2NzA2LCA0MTI5NCwgMzYyNiwgMzg4MywgCi0gICAgNjQzODgsIDQyNDc5LCAwLCA0MTExNywgMCwgOTI1ODAsIDAsIDAsIDY3NjI0LCAwLCAxMjkwLCAwLCA2NTU4NSwgMjcxNSwgCi0gICAgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDAsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCAKLSAgICAwLCAxMjc1NiwgNjUyNTksIDAsIDAsIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgNzM5MTIsIDk3OTksIDAsIAotICAgIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAxOTQ1ODcsIDAsIDEyMTEsIDAsIAotICAgIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIDAsIDAsIDEwNjIyLCAwLCAwLCA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAKLSAgICAwLCA2NDg2NCwgMCwgNzg2NjAsIDAsIDgyODQsIDEzMDgxLCAwLCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgOTIyMzYsIAotICAgIDQyNjUsIDY2NDIsIDM5NzcsIDc0MTg2LCA0MTc3OCwgODM2LCAxMTkyMTYsIDI0ODgsIDAsIDQ1ODIsIDAsIDAsIDQxNzc3LCAKLSAgICAxMjkyNiwgMCwgNzUyOCwgMTA1NTAsIDAsIDkyNzA2LCAwLCAxMTQzOSwgMCwgMTM3NCwgNjQ4NzgsIDExOTAxNCwgMCwgCi0gICAgNDIzODksIDQxMzc0LCAwLCAwLCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMCwgNDAwLCAxMjU5NywgMTIwNTg2LCAwLCAwLCAKLSAgICA2NjYxLCAwLCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgMCwgNzQ3NTUsIDAsIDM0NzMsIDc3MTgsIDAsIDAsIDAsIDU1Mjg1LCAKLSAgICAwLCAwLCAwLCAxMTk2OSwgMCwgMTI3ODQxLCA2MzY1LCAxODg3LCA2NzYzLCAwLCA4MDgwLCA3MDA2LCAwLCAwLCA2NzU3LCAKLSAgICA2NDM1MSwgMTU0NCwgMCwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgMCwgNjE0NiwgMCwgNzcxLCAwLCAwLCAxMjgxMiwgMTMxNjgsIAotICAgIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAxMTQ5MSwgOTcyNCwgCi0gICAgMTAzNDEsIDAsIDk1MjQsIDc0OTAsIDExMzg5LCA3NDg5LCAzMzc5LCAwLCA3NDg3LCAwLCA0NzEsIDc0ODQsIDc0ODIsIAotICAgIDY3NTMsIDc0ODAsIDc0NzksIDc0NzgsIDc0NzcsIDY1MDEsIDc0NzUsIDY5MTgsIDc0NzMsIDc0NzIsIDI0NzQsIDc0NzAsIAotICAgIDc0NjgsIDEwMjMyLCAxMDYxNSwgMTAyMTMsIDEyNzI4OCwgOTIzNTcsIDEwMDQ5LCA3ODg4NCwgMzU0NCwgMCwgNjAxNywgCi0gICAgNjUzMTEsIDEyNzQ4MSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAwLCAxMjA1NDQsIDAsIDAsIAotICAgIDkyNjYwLCAwLCAwLCAwLCAxOTk2MSwgMjQ3MiwgNDI2NjUsIDkyMzQxLCAwLCAyMTM5LCA0MjU2LCAxMjA3NzYsIDc0MzgwLCAKLSAgICAwLCA0MjY3NSwgNDI2NTgsIDEyODQ1LCAwLCAwLCA2NTEzOCwgMTE5MzU1LCA2Nzg2MiwgMCwgNjU2NzEsIDEyMDAwMCwgCi0gICAgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCA0NDUsIDEyMDU2NiwgCi0gICAgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgMCwgMTIwMjE1LCAwLCAzOTAyLCAwLCAxNzcwLCAwLCAxMjg4NjYsIAotICAgIDE1NjAsIDEyMDIwOSwgMTk0OTcyLCA0NTg0LCA3Mzg0MywgMCwgMTE3MTIsIDEwODY2LCAxMTg5MjgsIDExMTgsIDkyMjA5LCAKLSAgICAwLCAwLCAxMDgxLCA3NDM2LCA2ODQyMCwgNzI1MiwgMCwgNTk5NiwgMCwgNDkwMywgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgCi0gICAgMTMzMCwgMCwgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCA2MzI0LCA0MTk3NSwgNjQ3NzcsIAotICAgIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDAsIDEyNzE1LCAxMjgzNDksIDAsIDAsIDIwMTgsIDY2NjcyLCA0MTk3OSwgCi0gICAgNjY2ODUsIDExOTE1NywgMCwgOTI0NjQsIDAsIDEyNjk4NCwgMCwgOTMzNCwgOTI3MDUsIDkyMzE1LCAwLCA3OTc1LCAwLCAKLSAgICA3Nzk1NywgMCwgNjY2MjEsIDQ4ODQsIDY2NTk3LCA2OTczMiwgMCwgMCwgNjMxMywgNjU1MTMsIDAsIDAsIDAsIDAsIDIzNDUsIAotICAgIDQzNjk3LCA0NjMsIDAsIDAsIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgMCwgMCwgNDIyNzksIDE5NDU3NywgMCwgCi0gICAgNzg0MTUsIDAsIDE5NTAwOCwgMCwgMTMyNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDU2NjMsIDAsIDAsIDAsIDAsIDI0ODIsIAotICAgIDE0NzEsIDAsIDAsIDQyMjQ3LCAxMjM3OCwgNzM5MjUsIDY5NjY0LCAwLCAxMjM3NCwgMCwgMCwgMCwgMCwgMjQ2MCwgMCwgCi0gICAgMTE5NDQsIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAwLCAyMDI0LCAKLSAgICAxMjcxODAsIDAsIDAsIDUzOSwgMCwgMTI3NzY1LCAwLCAzODUzLCA2NTE4MCwgMTI3OTIzLCAxMjA3OTYsIDEyMDI0NSwgCi0gICAgOTIzMjQsIDAsIDg2NTksIDAsIDEyNDc0LCA5MjU3OSwgOTUwMywgMTk0OTY5LCAyNDc4LCAwLCA0MTYyLCAwLCA0MjYwLCAKLSAgICAxMjk1MywgNjk2MzMsIDEyMDA4OSwgMTI0NzAsIDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIAotICAgIDUwMDAsIDAsIDAsIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgMCwgNjcwOSwgMCwgNzg4ODUsIDAsIAotICAgIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgMCwgNzM3OTEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgMCwgMCwgMTIyMTAsIDcyMjEsIAotICAgIDQyMTQ3LCAwLCA3NDU1MCwgNzQ0NjUsIDY0NzQ3LCAxMTg4NDEsIDAsIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIAotICAgIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAzNTkxLCA0MTk2OSwgMCwgMjQ1MywgMTI4NTQ5LCAKLSAgICA5MjY2NiwgNjQ3MDUsIDAsIDAsIDEwMzQ5LCAxMDQxMywgNDM1OTEsIDQxOTYyLCAzMjAyLCA3NDM1MywgMCwgODMxNiwgMCwgCi0gICAgMCwgMCwgNjg3LCAwLCAwLCAwLCAxODQwLCAwLCA2ODY3MSwgMTE5ODA5LCA0ODgzLCAyODUsIDQ3MjMsIDc3OTI3LCAKLSAgICA5MjY5MiwgNDQ1OSwgNzQ1NzcsIDQyOTIxLCA0MTcyMCwgMTEwODksIDI0MCwgMTk5MDYsIDAsIDQyMzIzLCAwLCA5NzQzLCAKLSAgICAxMjAyMzIsIDEzMTM0LCAwLCAwLCAwLCAwLCAwLCA0MjYzNCwgMCwgNDM0MzcsIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIAotICAgIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgMTE5MDIzLCAxNzI5LCAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgCi0gICAgNDMzMzQsIDY0ODUyLCAwLCAxMjAyMzUsIDY2MjAxLCAwLCA2NjU3OCwgNTAwMSwgNDE4NzksIDc0NDI3LCA0MTIxLCA1MDAzLCAKLSAgICA4ODQsIDY2NzAwLCA2Mzg3OSwgNDk0MywgNTE1MCwgNzM4ODksIDc0MTgyLCAxMjc5MTUsIDY0MywgMzA4NiwgMCwgNDI0NDgsIAotICAgIDQyMjk5LCA1OCwgMCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCAwLCA0NTMwLCA0MjQwOSwgNzEyNiwgCi0gICAgMTk0NTc1LCAyNzIxLCAxMjAwNzQsIDExOTA5NiwgMTk5MjksIDAsIDE5NDU3NCwgMCwgNDI0MiwgNDI2NCwgMTIwMDc3LCAKLSAgICAxMjgxMzIsIDY2MTc5LCA0MjQxMiwgNjU5NDEsIDEzMTE0LCA2NDUyMiwgMTA3NDAsIDMwOTQsIDAsIDk3NTQsIDExOTEwMiwgCi0gICAgNDQzNywgNzM5NDgsIDEyODY5MiwgMCwgNTUyODAsIDQyMTc0LCAxOTQ5MjUsIDQyNDMwLCAwLCAwLCA0MjM1NSwgNjYwMjYsIAotICAgIDQzMDYsIDQxMzgwLCA2ODQzMiwgOTI1ODYsIDAsIDY2NjY3LCAxMjczMDksIDAsIDAsIDQyMjAwLCA0MjU2NiwgMCwgMCwgCi0gICAgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIAotICAgIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAwLCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIAotICAgIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDAsIAotICAgIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAxMjM3NywgMCwgMCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAKLSAgICAzMzEsIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCAwLCAxMjM3OSwgMTk0ODc3LCAxMjA4MTgsIAotICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCAwLCA2NTg2NiwgNDMyNywgMCwgNjM4NDAsIDc4NTQ5LCA0MTIyMCwgCi0gICAgMTMwMzIsIDAsIDU4NCwgMTI5MzMsIDQzMTc3LCAxMjM3MywgMCwgMTMwMDAsIDEzNTEsIDI5MzUsIDg2OTgsIDEyNjY1LCAwLCAKLSAgICAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCAwLCAxMzAzMSwgMCwgNjM5MDEsIDAsIDM2NTcsIDEyODU3MiwgNjUyMDIsIAorICAgIDY2NTcsIDIwNywgMTI4ODA2LCA0Mjc1LCA3NDgxOSwgODU0LCA2ODE0NywgNzQzODEsIDAsIDc4Nzg2LCA1MTAzLCAKKyAgICAxMjc4NjEsIDY0MzQ4LCA0MTM2OCwgNDM5NzQsIDQ4OCwgNjk4MTEsIDAsIDcxMzM5LCAxMDE1NywgMCwgNDMwMzQsIAorICAgIDExNDM4LCA2NDY3NCwgMCwgOTI2OTQsIDY4NDMxLCA0MTc3MSwgNTEwNiwgNjY2OSwgODUwNCwgNjUxNTQsIDY5ODEzLCAKKyAgICA0MTM2NywgNTEwNSwgMTI3NTA5LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQwLCAzMDQsIDMxNzYsIDExOTAxMCwgMCwgCisgICAgOTMyLCAxMjA2MzMsIDY1NjcsIDIzOCwgNjk2NTYsIDE5NTAxMSwgMTk0NTk1LCAxOTkwNSwgMTIwNTc3LCAxOTUwMTUsIAorICAgIDc4ODcwLCA0MTA0NCwgNjc2NDAsIDE5NDkwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAKKyAgICAxMjU1MiwgMTk1MDE5LCA4ODAzLCAzMDksIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDAsIDEyNTY4LCAwLCAKKyAgICAxMjU1MywgMTA4MTQsIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDk4MzE5OCwgNjUxNjUsIDkyNzI1LCAwLCAKKyAgICA2NjQ2NiwgMCwgMCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgMCwgNDE3NTQsIAorICAgIDY3NjM1LCA5MzcwLCAyNzIwLCAxOTQ5NzUsIDY4NDYyLCA4MjMyLCAxMTg4MTcsIDAsIDMyMjIsIDAsIDAsIDAsIDY2NjYzLCAKKyAgICAwLCAwLCAxMDgzNCwgMCwgMCwgNjU3MzIsIDk0MDk1LCA5MTc1NDcsIDkyNjgyLCA2NzY3OSwgMTk1MDIwLCAwLCA3NzgxLCAKKyAgICA0MTM4MywgNjQ1NjgsIDAsIDEyMDczOCwgMTIwNzcsIDAsIDY0NTg2LCA5MTc2MjAsIDQyMzk2LCA1NTI1NSwgMzQ3NSwgCisgICAgMTI4MDM1LCAyNDc5LCAwLCAzNjMyLCAxMjA3MjgsIDEwNjk4LCA4Mzc2LCAzNjQ4LCAxOTQ5NjAsIDc0ODQ0LCA2NzYzOSwgCisgICAgMzYzNiwgNjc4OTQsIDM2NTAsIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgCisgICAgOTE3NjMwLCAzNjQwLCAxMjcxOTAsIDQyMzIxLCA3Mjg0LCAxOTQ5NzQsIDE5NDk3MywgMTk0OTUwLCAxOTQ5NDksIAorICAgIDE5NDk1MiwgMTk0OTUxLCAxMjY2NDksIDE5NDk1MywgNDIwODAsIDI1MjksIDAsIDAsIDAsIDQyMDgzLCAxMjA2NzgsIAorICAgIDY4Mzk4LCAxOTQ5NTcsIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIAorICAgIDQyOTUsIDY1MjY0LCA2ODAwNiwgMCwgOTI1NDUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIAorICAgIDY0MzgzLCAxMjAyNjUsIDkyNSwgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDAsIDQxOTg0LCA5MjE3LCAwLCAwLCAKKyAgICAwLCA5MTg2LCAyMDY3LCA0MDE2LCA5ODM3OTQsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCAwLCA2OTg4MCwgNTE4NCwgCisgICAgNDIwNzgsIDE5NDk0NywgMTA4MTAsIDEyODUzMSwgNDU4NSwgMTk5NDMsIDU4NjAsIDY3NjMzLCAwLCAwLCA4MTIsIDM2MTUsIAorICAgIDAsIDUxNzgsIDQ0MDAwLCAxMjA1NDgsIDc4ODA3LCA1MTg4LCA3NDI4NywgNjc2MjksIDM2MDUsIDEwNjkyLCAxMTY2LCAKKyAgICA2NDQyOSwgNDI2MzksIDkyNCwgMCwgNjc2MzEsIDQyNjE2LCAxMjA2NzAsIDI0NDIsIDEwNzAzLCA3ODc4OSwgNjc2MzIsIAorICAgIDkxNzkyNCwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgNDI0MDEsIDAsIDY5ODcyLCAKKyAgICAxMjczNzMsIDQyMjg4LCAxMjc1MSwgMCwgODU0MiwgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAKKyAgICAzODgzLCA2NDM4OCwgNDI0NzksIDAsIDQxMTE3LCAwLCA5MjU4MCwgMCwgMCwgNjc2MjQsIDAsIDEyOTAsIDAsIDY1NTg1LCAKKyAgICAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgOTE3ODgzLCAxMzE4LCA2NDczMSwgMTI2NTc4LCAwLCAwLCA2NjMyNSwgMzQ2NSwgCisgICAgMjQwNSwgOTI0MCwgMCwgMTI3NTYsIDY1MjU5LCAwLCA5ODM3NzIsIDEyNzUyLCA1ODMzLCAxNDMyLCAwLCA0MTg4MywgCisgICAgNzM5MTIsIDk3OTksIDAsIDQxODg2LCAyNDgwLCAwLCAyMDYyLCAxMjcyOTMsIDY0OTQsIDU1MzcsIDc4NjU2LCAwLCAKKyAgICAxOTQ1ODcsIDAsIDEyMTEsIDAsIDAsIDAsIDExODgzMiwgMTIzMTgsIDAsIDAsIDY4MDA1LCAxMDYyMiwgOTgzNzcwLCAwLCAKKyAgICA3ODY1NCwgNjU2NiwgNzg2NTksIDAsIDczNzgwLCAxMTkxOTYsIDY0ODY0LCAwLCA3ODY2MCwgMCwgODI4NCwgMTMwODEsIDAsIAorICAgIDM1ODksIDQyMDUxLCA0MDM1LCA2NDkyLCA5MjIzNiwgNDI2NSwgNjY0MiwgMzk3NywgNzQxODYsIDQxNzc4LCA4MzYsIAorICAgIDExOTIxNiwgMjQ4OCwgMCwgNDU4MiwgMCwgMCwgNDE3NzcsIDEyOTI2LCA5ODMzNjksIDc1MjgsIDEwNTUwLCAwLCA5MjcwNiwgCisgICAgMCwgMTA5NjEsIDAsIDEzNzQsIDY0ODc4LCAxMTkwMTQsIDAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgMCwgNzg0OTIsIDQxMzc3LCAKKyAgICAxMjc5MDksIDAsIDQwMCwgMTI1OTcsIDEyMDU4NiwgMCwgMCwgNjY2MSwgOTgzMTQ1LCA2NDgyNywgMCwgNzM4MTcsIDM5MCwgCisgICAgMCwgNzEzMDEsIDk4Mzg1MywgMzQ3MywgNzcxOCwgMCwgMCwgMCwgNTUyODUsIDAsIDAsIDAsIDExOTY5LCA5ODMzODIsIAorICAgIDEyNzg0MSwgNjM2NSwgMTg4NywgNjc2MywgOTgzMzYyLCA4MDgwLCA3MDA2LCAwLCA5ODMzNjMsIDY3NTcsIDY0MzUxLCAKKyAgICAxNTQ0LCAwLCA2NzY2LCA2NDY3NywgMTIwNzE2LCA5ODMzNjQsIDYxNDYsIDAsIDc3MSwgOTgzMzY1LCAwLCAxMjgxMiwgCisgICAgMTMxNjgsIDQyMjcyLCAxMjIwMCwgOTE3OTI3LCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAxMTk1NjAsIDEyMzAwLCAwLCAKKyAgICAxMTQ5MSwgOTcyNCwgMTAzNDEsIDk4Mzc2NCwgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDAsIDc0ODcsIDAsIAorICAgIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgCisgICAgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAKKyAgICAzNTQ0LCAwLCA2MDE3LCA2NTMxMSwgMTI3NDgxLCAxMjAyMTYsIDEzMzA2LCAxMDUzMywgNzg3MCwgNzM5NDksIDc2MjUsIDAsIAorICAgIDEyMDU0NCwgMCwgMCwgOTI2NjAsIDAsIDAsIDAsIDE5OTYxLCAyNDcyLCA0MjY2NSwgOTIzNDEsIDAsIDIxMzksIDQyNTYsIAorICAgIDEyMDc3NiwgNzQzODAsIDAsIDQyNjc1LCA0MjY1OCwgMTI4NDUsIDAsIDAsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCAKKyAgICA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMCwgMCwgMCwgMCwgNzE4NiwgMCwgMTIwNTU1LCAwLCAKKyAgICA0NDUsIDEyMDU2NiwgMTI4MzA4LCAwLCAwLCA4MzMwLCAwLCAwLCA0Mjc5NywgOTgzMTUwLCAxMjAyMTUsIDAsIDM5MDIsIDAsIAorICAgIDE3NzAsIDAsIDEyODg2NiwgMTU2MCwgMTIwMjA5LCAxOTQ5NzIsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIAorICAgIDExODkyOCwgMTExOCwgNzEzMzQsIDAsIDAsIDEwODEsIDc0MzYsIDY4NDIwLCA3MjUyLCAwLCA1OTk2LCA2OTkyMSwgNDkwMywgCisgICAgMCwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgMCwgNzEzOSwgMCwgMTIwNDcsIDQxMzg0LCAwLCAwLCAxODQ4LCA0MzM0LCAKKyAgICA2MzI0LCA0MTk3NSwgNjQ3NzcsIDEwNjc0LCAxMjMwOCwgMTIxODYsIDAsIDAsIDk4MzczMiwgMTI3MTUsIDY4MDAyLCAKKyAgICA5ODM0NzEsIDEyNjYzMCwgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgOTI0NjQsIDAsIAorICAgIDEyNjk4NCwgNjgwMDEsIDkzMzQsIDkyNzA1LCA5MjMxNSwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA2NjYyMSwgNDg4NCwgCisgICAgNjY1OTcsIDY5NzMyLCAwLCAwLCA2MzEzLCA2NTUxMywgNjk4NTcsIDAsIDAsIDAsIDIzNDUsIDQzNjk3LCA0NjMsIDAsIDAsIAorICAgIDExOTYwNywgMzExNywgNTQ2MCwgMCwgMCwgOTgzMzc5LCAwLCA0MjI3OSwgMTk0NTc3LCAwLCA3ODQxNSwgMCwgMTk1MDA4LCAKKyAgICA5ODMzNzYsIDEzMjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCA1NjYzLCAwLCAwLCAwLCAwLCAyNDgyLCAxNDcxLCAwLCAwLCAKKyAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgMCwgMTIzNzQsIDAsIDAsIDAsIDk4MzY4NSwgMjQ2MCwgMCwgMTE5NDQsIAorICAgIDEyMzc2LCAxMjc4NjgsIDY0Njc5LCAwLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAwLCAyMDI0LCAxMjcxODAsIDAsIAorICAgIDAsIDUzOSwgMCwgMTI3NzY1LCA5NDA1MiwgMzg1MywgNjUxODAsIDEyNzkyMywgMTIwNzk2LCAxMjAyNDUsIDkyMzI0LCAwLCAKKyAgICA4NjU5LCAwLCAxMjQ3NCwgOTI1NzksIDk1MDMsIDE5NDk2OSwgMjQ3OCwgMCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIAorICAgIDY5NjMzLCAxMjAwODksIDEyNDcwLCAwLCA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAKKyAgICAwLCA5ODM1NzksIDAsIDY5NjcyLCA4MjEzLCA3NDAxNywgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDAsIDc4ODg1LCAKKyAgICA5ODM2OTksIDEyNzk3MSwgMTIwNTgyLCA3ODU0NywgMCwgMTAzMDEsIDEwMzMzLCAxMDM5NywgMCwgMCwgNzM3OTEsIDAsIDAsIAorICAgIDAsIDAsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCA5ODMyNTYsIDAsIAorICAgIDEyMjEwLCA3MjIxLCA0MjE0NywgMCwgNzQ1NTAsIDc0NDY1LCA2NDc0NywgMTE4ODQxLCAwLCAxMjUxNiwgNDQ0NCwgMCwgCisgICAgOTIyNzEsIDc0NTM3LCAxMDg5MiwgODIzMSwgMCwgNjQ3MywgNDE5NjgsIDc4Mzg4LCA0MTk3MywgMzU5MSwgNDE5NjksIDAsIAorICAgIDI0NTMsIDEyODU0OSwgOTI2NjYsIDY0NzA1LCAwLCAwLCAxMDM0OSwgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgCisgICAgNzQzNTMsIDAsIDgzMTYsIDAsIDAsIDk0MDYwLCA2ODcsIDAsIDAsIDAsIDE4NDAsIDAsIDY4NjcxLCAxMTk4MDksIDQ4ODMsIAorICAgIDI4NSwgNDcyMywgNzAwOTksIDkyNjkyLCA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgMCwgCisgICAgNDIzMjMsIDAsIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDEyNjUzNSwgMCwgMCwgMCwgMCwgNDI2MzQsIDk4MzMzNSwgNDM0MzcsIAorICAgIDMwODEsIDExNDYzLCAxMjAxNTQsIDAsIDAsIDEwNDQ1LCAwLCAwLCA2NjcxNywgMjYxNCwgOTEyNSwgMTE5MDIzLCAxNzI5LCAKKyAgICAwLCAxMjAyMzYsIDY1MjIxLCA2Mzg4MywgNDMzMzQsIDY0ODUyLCAwLCA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCAKKyAgICA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzQxODIsIAorICAgIDEyNzkxNSwgNjQzLCAzMDg2LCAwLCA0MjQ0OCwgNDIyOTksIDU4LCAwLCA5MTc5NTIsIDEyMDA4MywgNjM4NzMsIDg0OTEsIAorICAgIDAsIDAsIDAsIDQ1MzAsIDQyNDA5LCA3MTI2LCAxOTQ1NzUsIDI3MjEsIDEyMDA3NCwgMTE5MDk2LCAxOTkyOSwgMCwgCisgICAgMTk0NTc0LCAwLCA0MjQyLCA0MjY0LCAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAKKyAgICAxMDc0MCwgMzA5NCwgMCwgOTc1NCwgMTE5MTAyLCA0NDM3LCA3Mzk0OCwgMTI3MDc0LCA5ODMyMzIsIDU1MjgwLCA0MjE3NCwgCisgICAgMTk0OTI1LCA0MjQzMCwgMCwgMCwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCAwLCA2NjY2NywgCisgICAgMTI3MzA5LCAwLCAxMjY1MjEsIDQyMjAwLCA0MjU2NiwgMCwgMCwgNTA4OCwgNjk0OCwgMCwgODUyNCwgMCwgMCwgMTIzODUsIAorICAgIDAsIDAsIDY5NjQ2LCAxMzg2LCA2NDU4MCwgMTE0ODAsIDYxMTYsIDY1MDM5LCA2NTAzOCwgMTIzOTIsIDY1MDM2LCA4MDY0LCAKKyAgICAwLCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDExOTY1NywgCisgICAgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDAsIDYzODk2LCAxMjA2MSwgNDIwOTYsIDQzNjIxLCAzMzYyLCAKKyAgICAxMjM3NywgOTgzODIzLCA5ODM4MjUsIDY4NDQ5LCA3NDYxLCA3MzkwMSwgMTI0NCwgMzMxLCA3Mzc4NiwgMTI2ODMsIAorICAgIDEwNjYyLCAwLCA4MTEyLCAwLCA2NTg1MiwgMCwgMTIzNzksIDE5NDg3NywgMTIwODE4LCA0MTk2NCwgNDIyMDgsIDYzODQzLCAKKyAgICAyMDg0LCA0MTk2NSwgMCwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA3ODU0OSwgNDEyMjAsIDEzMDMyLCAwLCA1ODQsIAorICAgIDEyOTMzLCA0MzE3NywgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDAsIDE5MzAsIDAsIAorICAgIDc4MjI5LCAxMjQyNywgNjY1MTQsIDY5ODU5LCAxMzAzMSwgMCwgNjM5MDEsIDAsIDM2NTcsIDEyODU3MiwgNjUyMDIsIAogICAgIDYwMDAsIDExOTIwNiwgMTI0MjYsIDEyNzE4MSwgMCwgNDE3NDAsIDEyNDI4LCA0MTI4MywgNDE5MTYsIDExOTIxMCwgMCwgMCwgCiAgICAgMTI0MjksIDY3MjcsIDAsIDc1NjIsIDAsIDUxNzAsIDAsIDQxNzU1LCA2NzYsIDAsIDY2NzA0LCA2NjY2NCwgOTk3OCwgCiAgICAgNjY0OTEsIDM1MzYsIDAsIDk3NTIsIDkyMzk3LCA2MTYyLCAwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgCkBAIC0xNjQyMSw3MDYgKzE3MzMxLDczMSBAQAogICAgIDAsIDYzODY3LCA0MTMzLCAxMTM3MSwgMjEwLCA0NjAwLCAwLCA3NDU2MCwgNDEzNywgODA4MiwgNzg1MDYsIDExOTA2MiwgCiAgICAgNzg1MDQsIDY3MDQsIDQ1OTEsIDEyODAyOSwgMCwgMCwgOTY4MCwgMCwgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIDc4NTA4LCAKICAgICA0MTUwMSwgMCwgNDIwMzEsIDU3MTksIDcxNzIsIDQyNjg3LCA4MzY4LCAwLCA0MTQ5OSwgMCwgMCwgNDIyNDIsIDQxNDk4LCAKLSAgICA5MTc3OTQsIDQyMDI1LCA3ODU2NywgNjU4MDUsIDQyNDYzLCAwLCAyOTI0LCAwLCAxMjA1MTAsIDAsIDAsIDExOTIxMywgCisgICAgOTE3Nzk0LCA0MjAyNSwgNzg1NjUsIDY1ODA1LCA0MjQ2MywgMCwgMjkyNCwgMCwgMTIwNTEwLCAwLCAwLCAxMTkyMTMsIAogICAgIDczOTQxLCAwLCA0MjMzMCwgOTE3Nzg0LCAzOTY5LCAwLCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgCi0gICAgNDIwODYsIDkxNzc5MCwgOTE3Nzg5LCAwLCAwLCAxMjg4MDEsIDAsIDAsIDMyNywgMCwgOTA0MiwgOTE3Nzc3LCA5MTc3NzYsIAotICAgIDY1MTQ4LCAxMjQzMywgOTE3NzgxLCAxMjcyNzYsIDkxNzc3OSwgMTI0MzEsIDg2NjgsIDEyNDM0LCAwLCA5MTc3ODIsIAotICAgIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAxMjgwMTQsIAotICAgIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIDkyNywgMCwgMCwgMTI0MzYsIDAsIDQyMDIxLCAwLCAKLSAgICAwLCAxMjk5LCAxMjI0MCwgNDIzNTAsIDY1MTQzLCAwLCAxOTUwMTYsIDAsIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIAotICAgIDAsIDAsIDE5OTE0LCAxMjE3OSwgMCwgOTY0OCwgMTk0OTIzLCA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAKLSAgICAyNTk0LCAzNDQ0LCA2MzgxNywgNjQ2NTEsIDAsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgCi0gICAgNTY2NCwgMzk3MiwgMCwgMCwgMCwgMTI4NTA4LCAxMjQxNiwgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIAotICAgIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCAKLSAgICA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTk0NzgyLCAxMjQxNCwgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIAotICAgIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAKLSAgICAxMTcyNCwgMCwgMCwgMTI3MTA0LCAxMjg1MjYsIDAsIDAsIDgwMjcsIDEwOTk3LCA5MTcxLCAxMjc0MSwgMTE0MDAsIAotICAgIDc0MTk3LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgMTIwMTkwLCAxOTQ3NzMsIAotICAgIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMCwgMCwgCi0gICAgMzAwOSwgNDE0NzYsIDQxNDg5LCA2OTgyNSwgMzAwNywgMTQ0OCwgMzAxOCwgMTk0ODA5LCAzODg5LCA4NTIxLCA1MDgzLCAKLSAgICA1MDgyLCAxMTk4NTksIDEyMDE4NCwgODUxOSwgMCwgMzAxNCwgNTA4MSwgNjU4NTMsIDEyMDcxNSwgMCwgMTIwMTgzLCAKLSAgICA3ODIxOSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgNzg0NDQsIDEyMDE4NSwgMTIzNzEsIDAsIDg0MDcsIDAsIAotICAgIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCAwLCAwLCAxMjM2NywgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIAotICAgIDEyMDM3LCA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgCi0gICAgMTA2NDksIDAsIDUwNzcsIDEyNzEwOCwgMTA4ODAsIDYzOTI3LCA1MDc1LCA5MTc4ODEsIDAsIDY1MDc1LCAwLCAxMTAwNywgCi0gICAgMCwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCA1MjcyLCAKLSAgICAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIDk4MDMsIDAsIAotICAgIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgNTE3NywgCi0gICAgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgCi0gICAgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIDAsIDAsIDExOTE4NSwgNDIyMjksIDE5NDkxMiwgMCwgNTk5OCwgMCwgCi0gICAgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgMCwgNzg1NzEsIDAsIDAsIDE5NDU2MiwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgCi0gICAgMTE5MjA3LCAwLCA4NTc4LCA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAKLSAgICAyNjcwLCA0MTY3LCAwLCAxMTcyMywgMCwgNzQxMjAsIDAsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIAotICAgIDAsIDAsIDAsIDExNzQyLCAyNDE5LCAwLCAxMTQ5MywgMTIzMzQsIDE5NDkxMywgNDE1MywgMTIzMDIsIDEwNzkzLCA1MjUwLCAKLSAgICAxMjQwNywgMTE5NzgsIDQ0MDQsIDkxODksIDEyNDAxLCA0MjAwNywgNTc3NSwgNjc1OSwgNjU4MDYsIDQzOTk3LCAwLCAKLSAgICA0MjAwMiwgMTI0MDQsIDAsIDAsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMCwgODYxLCAwLCAwLCAKLSAgICAwLCAwLCA2NTU3NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCA2NjMxLCAwLCAxMjgxNiwgNzQ1ODMsIAorICAgIDQyMDg2LCAxMjY2MTUsIDIyMTksIDAsIDAsIDEyODgwMSwgMTk0ODM3LCAwLCAzMjcsIDAsIDkwNDIsIDkxNzc3NywgCisgICAgOTE3Nzc2LCA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTI3Mjc2LCA5MTc3NzksIDEyNDMxLCA4NjY4LCAxMjQzNCwgOTgzODI2LCAKKyAgICA5MTc3ODIsIDU5OTksIDAsIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCAwLCA4MjEyLCAwLCAKKyAgICAxMjgwMTQsIDQyNDIzLCAxMTkwNjYsIDAsIDEyODEwOCwgNjY3MDksIDAsIDg4MTEsIDkyNywgMCwgMCwgMTI0MzYsIAorICAgIDk4MzIzOSwgNDIwMjEsIDAsIDAsIDEyOTksIDEyMjQwLCA0MjM1MCwgNjUxNDMsIDAsIDE5NTAxNiwgMCwgNzgxOTcsIAorICAgIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgOTgzMTg0LCAwLCAxOTkxNCwgMTIxNzksIDk4MzgwMywgMjI5NiwgMTk0OTIzLCAKKyAgICA2MzgzNiwgNjM4MzIsIDkxNzc3MywgMTA5NjcsIDYzODE2LCAyNTk0LCAzNDQ0LCA2MzgxNywgNjQ2NTEsIDAsIDQxNTAzLCAKKyAgICAxMjc0NzgsIDExMjY1LCAwLCAxMjA3NTYsIDE5NDkyMiwgMCwgNTY2NCwgMzk3MiwgMCwgMCwgMCwgMTI4NTA4LCAxMjQxNiwgCisgICAgOTE3NzY0LCAxMTk2MDgsIDEwODE2LCA5MTc3NjksIDkxNzc2OCwgMTI0MTgsIDc0MTExLCAzODgyLCA4NTMyLCA5MTc3NzEsIAorICAgIDE1NzMsIDEyODY0OCwgMTE5ODQ3LCA0NTk2LCA2NjMzOSwgMTI0MTcsIDY2MDAxLCA2NTM0MywgMTI2NDkxLCAxMjQxNCwgCisgICAgODI4NywgNjgyMTksIDE5NTAxNywgNjgxMDgsIDExNDMsIDExOTE2OSwgMTE5ODQ2LCAxMjQxNSwgNjYyNiwgNDI3NjMsIDAsIAorICAgIDExODg4NCwgOTAyMSwgMTIwNzgzLCAwLCAxMTcyNCwgMCwgMCwgMTI3MTA0LCAxMjY2MTksIDAsIDAsIDgwMjcsIDEwOTk3LCAKKyAgICA5MTcxLCAxMjc0MSwgMTE0MDAsIDcxMzA1LCAxOTQ3OTksIDAsIDEyODIzOSwgMCwgMTI4ODgxLCAxMTk2MDQsIDEyNzUyMywgCisgICAgMTIwMTkwLCAxOTQ3NzMsIDY3NjA4LCAxMjgyMTQsIDQyMzY4LCAwLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCAKKyAgICA2ODY1MSwgMCwgOTgzODg2LCAzMDA5LCA0MTQ3NiwgNDE0ODksIDY5ODI1LCAzMDA3LCAxNDQ4LCAzMDE4LCAxOTQ4MDksIAorICAgIDM4ODksIDg1MjEsIDUwODMsIDUwODIsIDExOTg1OSwgMTIwMTg0LCA4NTE5LCA5ODMyMzUsIDMwMTQsIDUwODEsIDY1ODUzLCAKKyAgICAxMjA3MTUsIDAsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgCisgICAgMTIzNzEsIDAsIDg0MDcsIDAsIDEwODA1LCA4NTE4LCAxMDc3OSwgMTIwMTg4LCA3MTMwMywgOTgzOTI0LCAxMjM2NywgCisgICAgNDIxNzAsIDAsIDkyNTU3LCA2MjksIDE5MjQsIDAsIDEyMDM3LCA3NDM2NiwgNTk4NywgODQ2MiwgODAwNSwgMTIzNjUsIAorICAgIDYzOTMzLCA2OTczNSwgMTIwODE1LCAxMjM2OSwgMTA2NDksIDY3OTgxLCA1MDc3LCAxMjAxNzQsIDEwODgwLCA2MzkyNywgCisgICAgNTA3NSwgOTE3ODgxLCAwLCA2NTA3NSwgMCwgMTEwMDcsIDk4MzY5NiwgNjY2NTksIDkyNjA3LCAwLCA2NjY4NCwgMCwgCisgICAgMzQzNCwgNDk1NCwgMTkwNCwgMCwgNTI2NiwgMTI2OTgwLCA1MjcyLCAxMDQ5OSwgNDUwNywgOTU3OCwgNjM5MjMsIAorICAgIDEyMDE3NywgNzk3OSwgMCwgOTgzMSwgMCwgMTk0OTI2LCA0NjEsIDk4MDMsIDAsIDQ1MDQsIDE1MDUsIDAsIDYzMjUsIAorICAgIDUyNzYsIDQzMDIxLCAxMjA0ODgsIDAsIDU1MjM2LCAwLCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCA4NzIyLCAwLCAKKyAgICA0MTMyNywgMCwgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDAsIDcyMSwgMTAxODIsIDkxMDgsIAorICAgIDcxMzExLCAwLCAxMTkxODUsIDQyMjI5LCAxOTQ5MTIsIDAsIDU5OTgsIDAsIDQyMzUzLCA3NDgyNSwgMCwgMTI1ODcsIAorICAgIDk0MTA0LCA3ODU3MSwgMCwgNzEzMjgsIDE5NDU2MiwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgMTE5MjA3LCAwLCA4NTc4LCAKKyAgICA1OTk1LCA3NTczLCA0MTU3NSwgNzQ3ODksIDc0NzUyLCA2Mzk0NCwgNjM5NDksIDY0NzY3LCAyNjcwLCA0MTY3LCAxOTQ3OTYsIAorICAgIDExNzIzLCAwLCA3NDEyMCwgMCwgNjUwNzYsIDkzOCwgNDM0MTQsIDczODU0LCAxMTczNywgOTcyMSwgMCwgMCwgMCwgCisgICAgMTE3NDIsIDI0MTksIDAsIDExNDkzLCAxMjMzNCwgMTk0OTEzLCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAKKyAgICAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIDQyMDAyLCAKKyAgICAxMjQwNCwgOTgzNTUzLCAwLCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgODYxLCAwLCAKKyAgICAwLCAwLCAwLCA0Mzc1NywgNDMzNzAsIDAsIDAsIDExOTU2LCAwLCAwLCAwLCA5NjE2LCA2NjMxLCAwLCAxMjgxNiwgNDM3NTksIAogICAgIDQyMjE4LCAxMjcxMCwgNjg2NzQsIDEyNzIxLCA0MTAxLCA2NjE4NSwgMCwgNTk5MiwgNzYxNiwgMTk1MDQ0LCAwLCAxMjU3NywgCi0gICAgMCwgMCwgODUzLCA0MjY5MywgMTk1MDE0LCAwLCAwLCA1MDE2LCA0MzUzNSwgNjM4OTMsIDQyODM1LCA5NDkxLCA5MTc5MTMsIAotICAgIDAsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDEyMDc5NywgOTkwMCwgMCwgMCwgMTk0OTE5LCAwLCAKLSAgICAxMjc4MzAsIDAsIDY0Nzc4LCAxMjU4NSwgMTA1NjUsIDEyODE1MSwgMTIxNzcsIDAsIDAsIDAsIDc3ODI0LCAwLCA0OTAwLCAKLSAgICAxMjc4NzQsIDEyODc4LCA5MjYzMCwgODk4NCwgNDExOSwgNzQ3NjgsIDg5NzEsIDc4NTkzLCA0MzExMywgOTcwMiwgNzg1OTQsIAotICAgIDExMDI1LCA5MjQ1LCAxMzA0OCwgNDkyNywgNDEzOCwgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAwLCAKLSAgICAxMzA1NCwgMTIzOTQsIDAsIDAsIDAsIDEzMDUzLCAwLCAzOTQ4LCAxMDc4MSwgMTU0NiwgMCwgNTAxMCwgMTY4MCwgMTA1MDcsIAotICAgIDc4NTkwLCA3ODU4MywgMCwgMCwgMCwgMTk0OTE1LCA3MjY3LCAwLCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAwLCAKLSAgICAxMjcwNiwgNzc4NDAsIDE4OTMsIDcyNjYsIDYzOTE1LCA3MjY0LCA3MjY1LCAwLCAxMzYzLCAwLCA2Mzk5NywgNjM5MTAsIAotICAgIDYzOTk2LCAzMDc3LCAwLCAwLCAxNTEyLCAwLCAxMjU4OSwgNDE0NzksIDEyODMxMywgMCwgNDMzMzksIDAsIDk4MzYsIAotICAgIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgCi0gICAgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgCi0gICAgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDYzOTkyLCAKLSAgICA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDAsIDQ5MzksIAotICAgIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgMTk0Njg4LCAwLCAwLCAxMjY0OSwgMCwgMCwgODI0NywgNTA3LCAKLSAgICA5MSwgMjA0MiwgMTIwNzc1LCA0MzY0MywgMTk0Njg5LCA2NjAyOCwgMTAwMzYsIDQxODQ0LCAxMTk4MTMsIDc3NCwgCi0gICAgMTE5ODMxLCAwLCAxMTk4MTUsIDU5OTQsIDEyNTM5LCAwLCA3ODM3NSwgMTIwNTk3LCAxMTk4MzMsIDAsIDExOTYwMCwgMCwgCi0gICAgMCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTI4MzEyLCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCA5Njg3LCA0MTY4MSwgCi0gICAgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTk0ODgxLCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAwLCA3NTM0LCAKLSAgICAxMjIxOSwgMCwgMTI3NTI4LCA0MjgxMCwgMTA0OTIsIDAsIDAsIDAsIDQzMTE5LCAwLCAxMjA3NTMsIDEyNDAzLCAyNTAwLCAKLSAgICAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCA3NDExMywgMjM0MywgNDEwMywgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgCi0gICAgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDAsIDEyMDE0OCwgNjYzNjksIDU4NjEsIDEyNzc1OCwgMTE5OTksIDEyNDAwLCAwLCAKLSAgICAwLCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIAotICAgIDEyMDY0NSwgNTE0NywgMCwgMCwgNzQ1MjQsIDAsIDE5MjgsIDAsIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgCi0gICAgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgCi0gICAgODg5NywgMCwgMCwgODM1NywgNDEyNCwgNzc4NjIsIDY1ODM2LCAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDAsIDAsIDExMjMsIAotICAgIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCAKLSAgICA3OTQ1LCAwLCA0NDAyLCA5OTcwLCAxMjQwMiwgMCwgNDIzOTIsIDEzMDUsIDEyNDA4LCAwLCA0NDAwNywgMCwgMCwgNDE0NjQsIAotICAgIDEyNDExLCAxMjk2OSwgMTIwODI0LCA0MTQ2NSwgMCwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgMCwgOTA5MywgMCwgOTE0NywgMCwgNjM5NTgsIDAsIDkxNDgsIDk2OTIsIDQwOTYsIDUzLCA3Mzc3NiwgNjc1MCwgCi0gICAgMTk1MDE4LCAwLCA5NTk0LCAwLCAwLCA0MzUyNywgMCwgNzI3LCAxOTQ3MDMsIDAsIDU4MDUsIDAsIDY3MjYsIDAsIDQyMTc2LCAKLSAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDEyMzY0LCAwLCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDAsIDkyMzQzLCAKLSAgICAwLCAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCAKLSAgICA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgMCwgNzQ4MzcsIDEyMDE1NSwgMTQ5OSwgMCwgODA1NSwgNDI3NDAsIAorICAgIDAsIDk4Mzg3NSwgODUzLCA0MjY5MywgMTk1MDE0LCAwLCA5ODM2MzgsIDUwMTYsIDQzNTM1LCA2Mzg5MywgNDI4MzUsIAorICAgIDk0OTEsIDkxNzkxMywgMCwgOTE3OTE0LCAwLCAxMjcxMiwgNzEwNSwgMTI3ODA3LCA2NTA2MCwgMTIwNzk3LCA5OTAwLCAKKyAgICA3NzUwLCAwLCAxOTQ5MTksIDAsIDEyNzgzMCwgMCwgNjQ3NzgsIDEyNTg1LCAxMDU2NSwgMTI4MTUxLCAxMjE3NywgMCwgMCwgCisgICAgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCA3NDc2OCwgODk3MSwgNzg1OTMsIAorICAgIDQzMTEzLCA5NzAyLCA3ODU5NCwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCA3NDE4NSwgOTI0ODEsIDkyNzEwLCAKKyAgICAxMjM5NywgNzc4MjcsIDAsIDEzMDU0LCAxMjM5NCwgMCwgMCwgMCwgMTMwNTMsIDAsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCAKKyAgICA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCAwLCAwLCAwLCAxOTQ5MTUsIDcyNjcsIDAsIDc0ODMzLCAxMjgxODEsIAorICAgIDU5OTMsIDI4MTksIDAsIDEyNzA2LCA3Nzg0MCwgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDAsIAorICAgIDYzOTk3LCA2MzkxMCwgNjM5OTYsIDMwNzcsIDAsIDAsIDE1MTIsIDY5OTI5LCAxMjU4OSwgNDE0NzksIDEyODMxMywgMCwgCisgICAgNDMzMzksIDAsIDk4MzYsIDEyMDcyNywgMCwgNDE0ODEsIDQzMzM1LCA3ODMyLCA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgCisgICAgMTY2NCwgMTg1MCwgMTI4ODQxLCAzMDc5LCAxMTM0MCwgNDI0MDgsIDQyNDQ3LCAxMjcxNDAsIDEyMDAyMCwgNDIzMDcsIAorICAgIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCAwLCAxMjM4OSwgMCwgOTIzNjYsIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIAorICAgIDExNDcsIDYzOTkyLCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIAorICAgIDAsIDQ5MzksIDEyMzg0LCAwLCAwLCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgMTk0Njg4LCA5ODMxOTAsIDAsIDEyNjQ5LCAwLCAKKyAgICAwLCA4MjQ3LCA1MDcsIDkxLCAyMDQyLCAxMjA3NzUsIDQzNjQzLCAxOTQ2ODksIDY2MDI4LCAxMDAzNiwgNDE4NDQsIAorICAgIDExOTgxMywgNzc0LCAxMTk4MjksIDAsIDExOTgxNSwgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgCisgICAgOTgzMTA1LCAxMTk2MDAsIDAsIDAsIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCAKKyAgICA0MTA3MywgOTY4NywgNDE2ODEsIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCAKKyAgICA0MjM3OSwgMCwgNzUzNCwgMTIyMTksIDAsIDEyNzUyOCwgNDI4MTAsIDEwNDkyLCAwLCA5ODM2NTIsIDAsIDQzMTE5LCAwLCAKKyAgICAxMjA3NTMsIDEyNDAzLCAyNTAwLCAxOTUwMTMsIDAsIDQ4OTksIDEyNzI5LCAwLCAwLCA3NDExMywgMjM0MywgNDEwMywgCisgICAgMTk5NDYsIDc0MTEyLCA3Nzg1MSwgMTMxMTIsIDAsIDE5NTAxMiwgMTI4NTksIDcwMDg3LCAxMjAxNDgsIDY2MzY5LCA1ODYxLCAKKyAgICAxMjc3NTgsIDExOTk5LCAxMjQwMCwgMCwgOTgzODMwLCAxMjY0NSwgNTE0NiwgMTEzMjAsIDY4NDEwLCA2NzQ4LCA2NTA0MCwgCisgICAgMCwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgNTE0NywgMCwgMCwgNzQ1MjQsIDAsIDE5MjgsIDAsIAorICAgIDY3NjQ5LCA1OTkxLCAzNDQ1LCA2NzYwOSwgNDk3NiwgNjQxNzYsIDAsIDY3NjEwLCA4MjQxLCAwLCA3Nzg2OCwgNDIwNiwgMCwgCisgICAgMCwgMCwgMTI4Mjk4LCAwLCAxMDEzOCwgMCwgMCwgODg5NywgMTIwMjM0LCAwLCA4MzU3LCA0MTI0LCA3Nzg2MiwgNjU4MzYsIAorICAgIDEyMDY0MSwgMTI3OTI2LCA3Nzg1OSwgMCwgMCwgMTEyMywgOTYzLCA0MTU1MywgMTAxMjAsIDEyNDA1LCAxMjAxNTAsIAorICAgIDkyNjY0LCAzOTgsIDEzMjc4LCA5NzIzLCA2MzY2LCAxMjAzMTEsIDc5NDUsIDAsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKKyAgICA5ODMxMzYsIDQyMzkyLCAxMzA1LCAxMjQwOCwgMCwgNDQwMDcsIDAsIDAsIDQxNDY0LCAxMjQxMSwgMTI5NjksIDEyMDgyNCwgCisgICAgNDE0NjUsIDk4MzU2NSwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIDExOTE2MywgMCwgOTA5MywgCisgICAgMCwgOTE0NywgMTI4Nzg3LCA2Mzk1OCwgMCwgOTE0OCwgOTY5MiwgNDA5NiwgNTMsIDczNzc2LCA2NzUwLCAxOTUwMTgsIDAsIAorICAgIDk1OTQsIDAsIDAsIDQzNTI3LCAwLCA3MjcsIDE5NDcwMywgMTk1MDIzLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgCisgICAgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAwLCAxMjM3MiwgMTIwNjQyLCAxMjAzMDcsIDAsIDkyMzQzLCAwLCAKKyAgICAxMjM2NiwgMTA5NjMsIDYwNjYsIDEzMjksIDAsIDMwNTIsIDkyMjAsIDAsIDY0NDc4LCAxOTQ3MDEsIDEwODAzLCA0MTMyLCAKKyAgICAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMCwgOTgzMzA1LCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgCiAgICAgNjM5NjUsIDAsIDYzOTYyLCA3NDA0MiwgODkyNCwgNDMxMjMsIDU5ODgsIDM2NjAsIDYzOTY5LCAxMTc4MSwgNDI3MTgsIAogICAgIDg3ODgsIDEzNTcsIDY0ODUxLCA2NTc0MywgMCwgODc3NCwgMCwgMTI3MDg2LCA5OTQxLCAxMjAxNzIsIDAsIDE5MzMsIAogICAgIDY5NjU1LCA5NTY0LCAwLCA5MjQzNSwgNzM4NjYsIDAsIDAsIDI0ODcsIDY3NjE0LCAzMTIxLCAxODA0LCAzMzExLCA2NzYxNSwgCi0gICAgMCwgNzgzMDIsIDEyMjIwLCA2NzYxNiwgMTIwNTk4LCAxMjc0NzUsIDAsIDY4MjAwLCA2Njc1LCAxMjgxNDQsIDAsIDY3NTkyLCAKLSAgICAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCAwLCA2NDYxOSwgNTEwLCA2NDY2MywgMCwgMCwgNDU2MSwgMjEwMSwgCi0gICAgMTM5OCwgMCwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMCwgODQwLCAwLCAwLCAwLCAKLSAgICA2OTY3LCAwLCAwLCA5Nzk2LCAwLCAzMzMsIDAsIDAsIDgxNDQsIDIxMTcsIDAsIDAsIDEyNDA2LCAwLCAxOTkzMSwgCi0gICAgMTE5MDg5LCA2Njc4LCA3NzY5LCAwLCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgNDMxMDEsIDk5ODEsIDAsIAotICAgIDQwOTg2LCA0MTI3LCA2NjQ4NywgMCwgNDIyMDIsIDEyNzU0LCAxOTUwMjIsIDAsIDAsIDAsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgCi0gICAgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMjk4NSwgNDUzMywgMTk1MDIxLCA3NDAwMywgNjQ5MCwgMCwgCi0gICAgMTIwMzgsIDAsIDAsIDEyMDcwNCwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAxOTQ4LCAxMTkwMDcsIDAsIDk1MiwgMTI4MjM1LCAKLSAgICAwLCAwLCAxMjA4MDIsIDY0NDksIDk0OTQsIDEyMDMxMywgMCwgNDMwOTgsIDQ4NDMsIDgxNDIsIDY0MTYwLCA0MDk4LCAKLSAgICA2NDE3MCwgMCwgMCwgMzQzNiwgMTE5OTczLCAwLCAxMjgxNywgNjc1OTcsIDY2NzYsIDM5MzAsIDY2NzA4LCAwLCAwLCAKLSAgICA2NzU5OCwgMCwgMCwgMCwgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMCwgMCwgMCwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCi0gICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMCwgNjc2MDYsIDExOTA4MywgMCwgNDIyMTcsIAotICAgIDEzMTAyLCAwLCA2NjAwMywgNjY3MiwgMCwgMCwgMCwgMCwgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgCi0gICAgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgMTEyODEsIDAsIDY0MjEzLCAxNDY5LCAKLSAgICA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCAKLSAgICA4NDUzLCA0MTM0LCAwLCA3NDg0NywgNjY1NzYsIDEyNzkxNiwgMCwgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgCi0gICAgMTI4NDYsIDEyNzI5MSwgMTI3MjkyLCAxMTkxOSwgNjQ5NjIsIDEyNzI4NywgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgCi0gICAgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgCi0gICAgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgMTE5NTg1LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCAKLSAgICA2NjQ5OCwgOTgyMSwgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAKLSAgICAxMjAwNjIsIDkyNjY5LCAwLCAxMjcwNTIsIDQyNTg3LCA0MjIxNCwgNDEzOTQsIDAsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgCi0gICAgNTI2MCwgNDMxNDMsIDAsIDMyNiwgMTIwMTMxLCA2ODQyMywgMCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTk0OTI0LCAKLSAgICA0MTM5OCwgNzM4MiwgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgNDI3MjAsIDEyMTQwLCAKLSAgICA5NTcyLCAwLCA3MDAzLCAxOTQ4ODMsIDQyMzM0LCA3NzA0LCAwLCAxOTQ4ODUsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgCi0gICAgOTk3NywgMCwgMCwgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCA5NTIxLCAKLSAgICA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDAsIDEwNDY0LCAwLCAwLCAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIAotICAgIDEyODA3MiwgNjc5LCA2NDAxMywgMCwgNTg1MCwgNzU4LCA3NTM2LCAwLCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgMCwgCi0gICAgNjQwMDUsIDQwNTgsIDExOTAxOSwgMCwgNjQ2NjAsIDAsIDExOTA1MCwgMCwgMCwgMTEzOSwgNDMyOTgsIDY0MDI3LCAKLSAgICA2NDAyOSwgODk3MCwgMCwgOTkzNCwgMCwgMTA3NzQsIDEyODAyMCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDAsIDE4NTIsIAotICAgIDMwNTcsIDEyODExMywgNzM3NDQsIDY0MDM0LCA2NDAzOSwgMCwgMCwgMCwgMCwgOTIzMjIsIDc2NDUsIDEyODU0LCA3NDMzOCwgCi0gICAgMzQ5NiwgMCwgMCwgMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIDEzMzA5LCAKLSAgICAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTk0OTA5LCAxOTQ4OTcsIDE2ODIsIAotICAgIDE5NDg5NiwgMTk0OTExLCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCAwLCAwLCA3MzgxNCwgMTE0MTIsIDY3NjgsIDEwNzI4LCAKLSAgICAxOTQ4MzAsIDExOTAxMCwgMTE4ODYzLCA0MzMxMSwgNjQ5NjYsIDExNTc3LCAwLCA0MzA0MCwgMTgzMywgMTE1NzYsIDAsIAotICAgIDc0Nzc5LCAwLCAxODUsIDY1MDg1LCA3NDUzMywgNjQ3NTQsIDE5NDg0OCwgNzUzNSwgODA4NSwgNDI1MjUsIDEyMDM4NywgCisgICAgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDEyMDU5OCwgMTI3NDc1LCAwLCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCAwLCAKKyAgICA2NzU5MiwgMTIwNjg1LCAwLCA2NDc3MSwgMTE5OCwgOTEzMiwgMCwgNjQ2MTksIDUxMCwgNjQ2NjMsIDAsIDAsIDQ1NjEsIAorICAgIDIxMDEsIDEzOTgsIDAsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIDAsIDg0MCwgMCwgCisgICAgMTI2NTE4LCA3MTAxLCA2OTY3LCAwLCAxOTQ4OTgsIDk3OTYsIDAsIDMzMywgNjk4OTEsIDAsIDgxNDQsIDIxMTcsIDAsIAorICAgIDk4MzU5NSwgMTI0MDYsIDAsIDE5OTMxLCAxMTkwODksIDY2NzgsIDc3NjksIDAsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCAKKyAgICA0NzY0LCA0MzEwMSwgOTk4MSwgMCwgNDA5ODYsIDQxMjcsIDY2NDg3LCAwLCA0MjIwMiwgMTI3NTQsIDE5NTAyMiwgMCwgMCwgCisgICAgOTQwOTcsIDY3NTk0LCAyMDQ4LCAxMjk0NCwgNDA1MCwgNjc1OTUsIDkxNzk2NywgNDMxMDIsIDEwNTgxLCAxMjk4NSwgCisgICAgNDUzMywgMTk1MDIxLCA3NDAwMywgNjQ5MCwgMCwgMTIwMzgsIDAsIDAsIDEyMDcwNCwgNjU0NjEsIDk3OTgsIDY5NzA0LCAwLCAKKyAgICAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDAsIDAsIDEyMDgwMiwgNjQ0OSwgOTQ5NCwgMTIwMzEzLCAwLCA0MzA5OCwgCisgICAgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCAwLCAwLCAzNDM2LCAxMTk5NzMsIDAsIDEyODE3LCA2NzU5NywgCisgICAgNjY3NiwgMzkzMCwgNDI2MTUsIDAsIDAsIDY3NTk4LCAwLCAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAwLCAwLCAKKyAgICAwLCA4NTAwLCA0MjIyMiwgMTIwMTQyLCA3Mzc0MywgMTIwNDAwLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAwLCAwLCAKKyAgICA2NzYwNiwgMTE5MDgzLCAwLCA0MjIxNywgMTMxMDIsIDAsIDY2MDAzLCA2NjcyLCAwLCAwLCAwLCA5ODM3MzgsIDYzODQxLCAKKyAgICA5NjEzLCA5MDAxLCA0NTI2LCAxMTI3NCwgNjc2MDEsIDY0NTIwLCA2NDIxMCwgNjY2NCwgNzg3MDQsIDQyMDU2LCAxMDIyOCwgCisgICAgNjQ5NTcsIDExMjgxLCAwLCAzODA3LCAxNDY5LCA2NjY0MCwgNjUzODEsIDQyMTk3LCA0OTg4LCA0MjM3MiwgMCwgOTU5OCwgCisgICAgOTA0LCAzNTIsIDQyMjI1LCAxNDUxLCA4MDYxLCA4NDUzLCA0MTM0LCAwLCA3NDg0NywgNjY1NzYsIDEyNzkxNiwgMCwgCisgICAgMTA1MjAsIDg1NzUsIDk5NjAsIDEyMDEsIDEyNzI4OSwgMTI4NDYsIDEyNzI5MSwgMTI3MjkyLCAxMTkxOSwgNjQ5NjIsIAorICAgIDEyNzI4NywgNDM3MzksIDEyNzI4MSwgODUxMSwgOTQ2MCwgODIzLCAxMTU4NywgMTIzMDUsIDAsIDY0Njk1LCAxMjczMDUsIAorICAgIDEyMzg3LCAxMjUzLCAxMzE4MywgNjU3NjYsIDUwMCwgNDI3ODMsIDY1NzY1LCA2NDIwOCwgNjQzNjksIDY1NzYwLCA2NTc2MSwgCisgICAgMTE5NTg1LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDAsIDUxNTIsIDExMDQ4LCA3NTMzLCAKKyAgICA2ODM2NiwgNjQ0MTAsIDkyMzA1LCAwLCA0MzIzLCAxMjAwNjIsIDkyNjY5LCA3MTMzMiwgMTI3MDUyLCA0MjU4NywgNDIyMTQsIAorICAgIDQxMzk0LCAwLCA0NzYzLCA0MTEyLCAxMTg5MzUsIDAsIDUyNjAsIDQzMTQzLCA5NDAzOCwgMzI2LCAxMjAxMzEsIDY4NDIzLCAKKyAgICAwLCAxMDc3MSwgMjg3NiwgNzQwNzQsIDkyNTMwLCAxOTQ5MjQsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgCisgICAgNDUzLCA0MTM5NiwgMTIwNTI0LCA0MjcyMCwgMTIxNDAsIDk1NzIsIDAsIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIAorICAgIDEyNjQ5MCwgMTk0ODg1LCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIDk5NzcsIDAsIDAsIDY1NzU5LCAxMDc2NSwgCisgICAgNjQwNjEsIDQ0NjUsIDk4MDgsIDY0MDU2LCA2NTU4MiwgNDEyNiwgMCwgOTUyMSwgOTU4OSwgNjQ3NTUsIDAsIDY0MDIwLCAKKyAgICAxMjY2MDQsIDEwNDY0LCAwLCAwLCAxOTQ4NjksIDY0NTE0LCAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgMCwgCisgICAgNTg1MCwgNzU4LCA3NTM2LCAwLCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgOTgzNTY3LCA2NDAwNSwgNDA1OCwgCisgICAgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAwLCAxMTkwNTAsIDAsIDk4MzA2OSwgMTEzOSwgNDMyOTgsIDY0MDI3LCA2NDAyOSwgCisgICAgODk3MCwgMCwgOTkzNCwgOTgzMDk0LCAxMDc3NCwgMTI4MDIwLCA0MjIwMSwgMTI0MjEsIDEyODIxNiwgMCwgMTg1MiwgCisgICAgMzA1NywgNjQwNDYsIDczNzQ0LCA2NDAzNCwgNjQwMzksIDAsIDAsIDAsIDE5NDg5OSwgOTIzMjIsIDc2NDUsIDEyODU0LCAKKyAgICA3NDMzOCwgMzQ5NiwgMCwgMCwgMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAorICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTk0OTA5LCAxOTQ4OTcsIAorICAgIDE2ODIsIDE5NDg5NiwgMTk0OTExLCA0Mjc1NiwgNjc2NSwgMTk0OTA2LCAwLCAwLCA3MzgxNCwgMTE0MTIsIDY3NjgsIAorICAgIDEwNzI4LCAxOTQ4MzAsIDcxMzE2LCAxMTg4NjMsIDQzMzExLCA2NDk2NiwgMTE1NzcsIDAsIDQzMDQwLCAxODMzLCAxMTU3NiwgCisgICAgMCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTk0ODQ4LCA3NTM1LCA4MDg1LCA0MjUyNSwgMTIwMzg3LCAKICAgICA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxOTQ3MTEsIDY0NDgzLCA2NTY5MywgMCwgMCwgCi0gICAgMCwgNjk2OTUsIDQyMjQwLCAwLCAwLCA0Mjg2NCwgMCwgNjQ2NjcsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAKLSAgICAxMjc1MzUsIDY3ODQwLCAwLCAwLCAxMjg3OTMsIDAsIDEwOTg2LCA2NDY4MywgMCwgMCwgMTk0NzA5LCAwLCAwLCA5ODc5LCAKLSAgICAwLCAwLCA0MTU4LCAxMjgwNTAsIDY4MTY2LCAwLCAwLCAwLCAwLCA2OTY0NSwgMzMyLCAxMTg4MDgsIDAsIDUxNDIsIDI0MDcsIAotICAgIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCAwLCA1NTIxNywgMCwgNjM4NzAsIDQzMTYzLCAwLCAwLCA5MjM5MCwgCi0gICAgNDI4NjcsIDE4MzQsIDAsIDkyNDYxLCA2OTgxNywgMTA5NDAsIDY1MjQ5LCAxMTkwNDAsIDg2NjIsIDAsIDAsIDI2NTIsIAotICAgIDEyMDUyNywgNzE2NCwgMTA3ODQsIDE5NTA5MywgNjc2NzQsIDAsIDkyMjMzLCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgCisgICAgMCwgNjk2OTUsIDQyMjQwLCAwLCAxMjY2NTEsIDQyODY0LCAxMjY0OTgsIDY0NjY3LCA0MTg2OCwgMTE4NCwgMCwgODE1LCAKKyAgICAxMTQ4NCwgMTI3NTM1LCA2Nzg0MCwgOTgzNjQyLCAwLCA2NjE5NywgMCwgMTA5ODYsIDY0NjgzLCA5ODM3NzYsIDAsIDM0NTUsIAorICAgIDAsIDAsIDk4NzksIDAsIDAsIDQxNTgsIDEyODA1MCwgNjgxNjYsIDAsIDAsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgMCwgCisgICAgNTE0MiwgMjQwNywgNjk2NDMsIDQyMTk5LCAwLCA5MjQwNCwgNzQzNzMsIDAsIDU1MjE3LCAwLCA2Mzg3MCwgNDMxNjMsIDAsIAorICAgIDAsIDkyMzkwLCA0Mjg2NywgMTgzNCwgMCwgOTI0NjEsIDY5ODE3LCAxMDk0MCwgNjUyNDksIDExOTA0MCwgODY2MiwgMCwgMCwgCisgICAgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgOTIyMzMsIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCAKICAgICA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAzMjcsIDc4NjIwLCA4NTMxLCAxMjQ5OSwgNjI4MCwgMTIzMjQsIDExODg1NCwgCiAgICAgNjUyMzgsIDY4Mzc0LCA0ODMyLCA2NTU3MywgMCwgNjI3OSwgMTI1MDgsIDEyOTA0LCAxMjUwMiwgOTE2MSwgMCwgMTYyMCwgCi0gICAgNjQ0MzYsIDM2MDEsIDE5NTA5NCwgMTI4MDczLCAwLCA2MDksIDExNTU1LCAwLCAxMjQ5NiwgMTI3ODM5LCA3NDE4MSwgCi0gICAgNDM0MywgMTI1MDUsIDAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgMCwgNjM3LCAwLCAwLCA0MjY3MSwgMCwgMCwgMCwgCi0gICAgNDM1NjUsIDEyNzA4MiwgMCwgMTI2OTYsIDEyODI1NiwgMCwgMTk0Nzk2LCAxMjkyOSwgMCwgNzEyLCAwLCA0MTk3LCAwLCAKLSAgICA0MjgxOCwgMTI4Njg4LCAwLCAxMjA0OTAsIDAsIDExOTEzNywgMTUwNiwgNDM1NjIsIDAsIDAsIDAsIDEyNjUxLCAwLCAKLSAgICA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgOTE3ODM4LCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgMTE4ODQ0LCAwLCAKLSAgICAxMjcwODgsIDM1NSwgOTcxOSwgMTI3MDg3LCAxMzA2NiwgNjQ3OTYsIDAsIDAsIDEyMDMzLCA0MjE3OCwgMCwgNjk3NjAsIAotICAgIDQyNTcxLCA5MjYzNSwgMCwgMCwgMCwgMCwgMCwgMTI3MTc2LCAzMTc4LCAwLCAwLCA5MjcwNCwgMCwgOTA4MCwgMTI3MDAwLCAKLSAgICAxMjAzNTIsIDAsIDY4MjA5LCAwLCAxMTA4MiwgMCwgNTY5OSwgMTk1MTAwLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIDExOTExMiwgCi0gICAgMCwgMCwgMCwgMCwgMTI4MjA4LCAwLCA1MjY1LCA2OTIzNSwgMCwgMTE0ODcsIDY3ODU4LCAxMjQ2NCwgMCwgNDMwNDUsIDAsIAotICAgIDAsIDQzMzQ1LCAwLCAxMDc3MCwgMTE4OTk0LCA2ODA3LCA0NjUsIDk4MjksIDAsIDc0MzQ4LCAwLCA0MzM0NiwgODExNiwgCi0gICAgNzk1LCAwLCAwLCAxMjQ2MiwgMTA5MzAsIDEwODMxLCAwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgMCwgMTIwODExLCAwLCAKLSAgICAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgNTUyNTcsIDczNzcxLCAxNzY2LCAKLSAgICAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIDY0NTk1LCAxMjcyOTQsIDAsIAotICAgIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIDAsIDAsIDExOTA2MCwgCi0gICAgNjQ5NTMsIDU0MDYsIDE5OTIwLCA5MjIxNiwgNjY1MTAsIDM1OTAsIDAsIDExMzAsIDAsIDAsIDQyMDE2LCAxMTgyMywgCi0gICAgNDMwMjMsIDAsIDExODg5NiwgNzc0MiwgMCwgMTMyODAsIDAsIDkzMjYsIDczODI2LCA1MzEwLCA3NDgxMiwgNzg1ODQsIAotICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIDEyMDgwMywgMCwgCi0gICAgNDI2NzAsIDAsIDExNjIxLCAxMjQ2MCwgMCwgMTIwNjMxLCAwLCA0MzA2MywgNzQ1MTksIDEyNzE4MiwgMCwgMCwgMCwgCi0gICAgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgMTE1OTQsIDEyODI0NywgMCwgMTE4OTkwLCAKLSAgICAxMDQ5MSwgMCwgNjQ0MTIsIDAsIDAsIDU1ODcsIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIAotICAgIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgMCwgNjY2MTAsIDEwNDYxLCAxMjEwMywgMCwgODY0MiwgMCwgCi0gICAgNDI3NjYsIDAsIDY2NTY2LCA5OTgzLCAwLCAxMTkxMDUsIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgCi0gICAgMTQ2MSwgOTEwLCAxMTkxMzMsIDAsIDY3NDksIDM2NTgsIDAsIDEyMDUyNSwgMCwgNzYxNywgMTk0ODQxLCAxMjg4OCwgMCwgCi0gICAgNjc2NjgsIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMCwgNDE1MTcsIDQxNTA0LCA0MTUxOSwgMTAwMTYsIDY0MzA1LCAKLSAgICAwLCA2NTg2NCwgNjIzLCA3ODEsIDY3MCwgMTA2NjAsIDU3NjksIDYxMywgNzU0MywgMTIwMjc5LCA0NzcsIDQxMDgzLCAKLSAgICA5MjUyMSwgMCwgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIDAsIDAsIDgyMjUsIDAsIDY1NCwgMTEzNDUsIDY1MywgNjUyLCAKLSAgICAwLCA2NDcsIDAsIDYzMywgMTIwNzQ0LCAwLCAwLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCAKLSAgICA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAzMTk1LCA1NTUwLCAwLCA3ODk3LCAwLCAxMjAzLCA3NDM5NiwgMTgxMywgCi0gICAgNjQ1NDQsIDQxMzExLCAxMjA5MCwgMCwgMjg3NywgMCwgMCwgMTY3NSwgMCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAKLSAgICAxMTkwNzcsIDAsIDAsIDAsIDAsIDAsIDQzMjQ0LCAwLCAwLCAwLCAxMTk1NjEsIDAsIDAsIDE5NDkyMSwgMTI4MTYwLCAKLSAgICA5OTM5LCAwLCAwLCA3Nzg2MCwgMCwgMCwgMjcwLCAwLCAxMDcxNCwgMCwgMCwgMCwgMCwgMCwgNjUzNzIsIDAsIDc0MDM4LCAKLSAgICAxMTk1NTgsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDE5NDkwOCwgMCwgMCwgNzA3LCAwLCAwLCA5MjgyLCA2NjQ4OSwgCi0gICAgMjI0LCAwLCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDAsIDY4NjQ0LCAwLCAzODQxLCA2ODYzNCwgMCwgMTA3MzIsIAotICAgIDY4NjQwLCA4NTAsIDQ5NzIsIDAsIDY0Njk5LCAyOTA5LCA2ODYxOSwgNDQwMDgsIDY4NjI3LCAwLCAxMTU0NCwgMTAyMDMsIAotICAgIDk2MDgsIDAsIDAsIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgNzc3LCAxMjAxODcsIAotICAgIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDAsIDk0NTQsIDYzNzc4LCA4NjU4LCAKLSAgICA0MjUyOCwgNzgwMDAsIDI3MDUsIDkxNzk3NSwgNDE1MjAsIDAsIDAsIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgMCwgCi0gICAgMjcwMSwgMCwgMCwgNTc2NywgMCwgMCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgMCwgNjM3NDUsIDE3NDgsIAotICAgIDYzNzcwLCAwLCAwLCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAwLCA2Mzc2NCwgNjM3ODcsIDkwNjcsIDYwOTYsIAotICAgIDAsIDc2OTQsIDAsIDcyNTcsIDYzNzY4LCAzNDg1LCAxMjk4NywgMCwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCAKLSAgICA2Mzg2LCA2Mzc4MywgMCwgMCwgMTI3MTczLCAwLCAwLCAwLCA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIAotICAgIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIAotICAgIDAsIDAsIDM4OTQsIDY1NTQzLCAwLCAxOTQ4NDIsIDAsIDQ5MywgMCwgNDMxOTcsIDE3MTcsIDQyMjgsIDQ3OSwgMTAzMDMsIAotICAgIDc0MDIwLCAwLCA5MTc5MzUsIDEwMzM1LCAzNTIwLCA5MTc5MzIsIDEyNDkwLCA2NDMxNSwgMCwgMTI3MDM5LCAxMjQ5MywgCi0gICAgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCAwLCA2NDkxMSwgOTI2MTUsIDIwOTYsIDY1MTIwLCAwLCAwLCAwLCAxMTYxMSwgCi0gICAgMTE2MzIsIDEyNzA0MSwgNjYyMTMsIDYzODY0LCA2NjIyMSwgNjYyMjYsIDY2MjI5LCAxMzIxOCwgNjYyMzEsIDY2MjE2LCAKLSAgICA4NTA3LCA2NjIzNiwgNjYyMTEsIDY2MjE4LCA5MjY3MiwgNjYyNDAsIDc4MDQxLCA2NjIzMywgODkyOCwgMCwgNzkwOSwgCi0gICAgNjYyMzQsIDExNjA1LCA2Mzc1OSwgMCwgNjYyMDgsIDczOTk5LCA2Mzc5OSwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAKLSAgICAxMjQ5NCwgNzM3NjEsIDEyNDkyLCAxMjY2OSwgMCwgMCwgNzQxNTMsIDAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCi0gICAgMCwgODYxMiwgNDg4NSwgNzQwNTMsIDAsIDEzMDQyLCA0ODgwLCA2NDY2MiwgMjQyOSwgMTM2MCwgMjQ4LCAwLCA2Mzc5NywgCi0gICAgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCA3ODA0MCwgNDcwLCAKLSAgICA3ODAzOCwgNzgwMzUsIDc4MDM2LCAwLCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIDEyNTE0LCAwLCAKLSAgICA3NDU3OSwgNzIzOSwgNzAwMSwgODYyMywgMCwgMTI4MDUyLCAxMjgwNDgsIDczNzgsIDEyNTEyLCAxMTYxNSwgNjEwNCwgMCwgCi0gICAgMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgMTI3MzA3LCAxMjcwNjcsIDgzMTEsIDEyNTEwLCA0MTgwMywgMTMwMzksIAotICAgIDEyNzA3MiwgMTI1MTMsIDEwMjAyLCAxMjQ3MSwgMCwgODc0NywgMCwgMCwgMCwgMjMyMywgMCwgMjMxOSwgNzc5MTcsIAotICAgIDEyNDc3LCA3NzkxNiwgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIDIzMDksIDEzMTIsIDgxNzMsIAotICAgIDEyODg3MSwgMTI0NjksIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgMTE1MjQsIDkzOTUsIAotICAgIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIDkzODYsIDkzODMsIAotICAgIDkzODQsIDY3NDAsIDAsIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIDIzMTMsIDEyODE2NywgCi0gICAgNzk0OCwgOTIzNiwgMCwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgMCwgMCwgMTE5OTgsIDEyMDgyLCAKLSAgICAxMDkyNCwgMzE0NywgMCwgMTIwNjg0LCAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgCi0gICAgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgOTM3NiwgMTY4MywgOTM3NCwgMCwgOTM3MiwgMTI0NDQsIDAsIDAsIDEzMDE2LCAKLSAgICA4MjEwLCAwLCA0MjAyOSwgMTEwNzksIDEyMzMxLCA0MzQ1MSwgNDIwMzIsIDg3NDQsIDcyNiwgMCwgMCwgNDE1NSwgMCwgMCwgCi0gICAgNDIwMzAsIDUwMDcsIDEyNTIyLCA0MzA4OCwgMCwgNDk1MSwgMTI3ODA1LCAxMjcyNDAsIDAsIDk5MjIsIDQzMzA5LCAwLCAKLSAgICAxMjUyNSwgMCwgMTIwMTYsIDY1NzcwLCA5NTQ4LCA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDAsIDAsIDExMDMwLCAwLCAKLSAgICA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgMCwgMTE5OTIwLCAwLCAxOTQ2NjgsIDAsIDEyNTA2LCAwLCAKLSAgICAxMjIzMSwgMCwgMTI1MDAsIDQ0MDIzLCAxMjUwOSwgNjQzOTMsIDc4ODMwLCAzMzg5LCAxMDU4OSwgNjYwOCwgNDEwNDcsIAotICAgIDEyMDMyMSwgNzgzOTUsIDc4Mzk0LCA3NDA2OSwgNzc5OTUsIDc4MzkxLCAzNjA4LCA4MjgxLCAxMjAzMjAsIDExMDcsIDAsIAotICAgIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgCi0gICAgMTI4ODE3LCA4NTQ2LCAxMTU1MywgNjM5OTUsIDEzMTc3LCA5MDQzLCA2MzAzLCAwLCA0OTgsIDY0NDcxLCAxMjAzMjQsIAorICAgIDY0NDM2LCAzNjAxLCAxOTUwOTQsIDEyODA3MywgOTgzNTYyLCA2MDksIDExNTU1LCA5ODMwOTksIDEyNDk2LCAxMjc4MzksIAorICAgIDc0MTgxLCA0MzQzLCAxMjUwNSwgMCwgMTI3ODYzLCAwLCAxMTM3NywgMjM5LCAwLCA2MzcsIDAsIDAsIDQyNjcxLCAwLCAwLCAKKyAgICAwLCA0MzU2NSwgNzEzMDYsIDEyNjQ5MywgMTI2OTYsIDEyODI1NiwgMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIAorICAgIDk4MzIwNCwgNDI4MTgsIDEyNjYzMiwgMCwgMTIwNDkwLCAwLCAxMTkxMzcsIDE1MDYsIDQzNTYyLCAwLCA5MjQ5MSwgMCwgCisgICAgMTI2NTEsIDAsIDY0NjI4LCA3NDUxNywgMTIwNTgsIDc0MDg0LCA5MTc4MzgsIDc0OTQsIDAsIDQ5MjQsIDY1NTkyLCAKKyAgICAxMTg4NDQsIDAsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMCwgMCwgMTIwMzMsIDQyMTc4LCAKKyAgICAwLCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAwLCAwLCAwLCAwLCAwLCAxMjcxNzYsIDMxNzgsIDAsIDAsIDkyNzA0LCAwLCAKKyAgICA5MDgwLCAxMjcwMDAsIDEyMDM1MiwgMCwgNjgyMDksIDAsIDExMDgyLCAwLCA1Njk5LCAxOTUxMDAsIDY2MDAwLCA5NDg4LCAKKyAgICA2NTE2NiwgMTE5MTEyLCAwLCAwLCAwLCAwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDAsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIAorICAgIDAsIDQzMDQ1LCAwLCAwLCA0MzM0NSwgMCwgMTA3NzAsIDExODk5NCwgNjgwNywgNDY1LCA5ODI5LCAwLCA3NDM0OCwgMCwgCisgICAgNDMzNDYsIDgxMTYsIDc5NSwgMCwgMCwgMTI0NjIsIDEwOTMwLCAxMDgzMSwgMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIAorICAgIDk4MzYwMiwgMTIwODExLCAwLCAxMjQ2OCwgODYwNywgMTAwOCwgMCwgMTAwOTIsIDE5NTA3OCwgOTE3ODQyLCA2Nzg1NSwgCisgICAgNTUyNTcsIDczNzcxLCAxNzY2LCAxMTI4MiwgMTE5OTYsIDE4MjAsIDQ1NDcsIDAsIDAsIDAsIDAsIDEzMjIzLCAxMjg2NjUsIAorICAgIDY0NTk1LCAxMjcyOTQsIDAsIDkyMzExLCA0MzQ1LCAxMjYxNiwgMCwgMCwgMCwgNzQ0NjcsIDAsIDAsIDAsIDUzODIsIDAsIAorICAgIDAsIDAsIDExOTA2MCwgNjQ5NTMsIDU0MDYsIDE5OTIwLCA2OTg5NywgNjY1MTAsIDM1OTAsIDE5NDg2NCwgMTEzMCwgMCwgMCwgCisgICAgNDIwMTYsIDExODIzLCA0MzAyMywgMCwgMTE4ODk2LCA3NzQyLCAwLCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCAKKyAgICA3NDgxMiwgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDAsIDg1NjgsIDAsIDEyMDQ5NiwgNzM4MTYsIAorICAgIDEyMDgwMywgOTgzODM5LCA0MjY3MCwgMCwgMTE2MjEsIDEyNDYwLCAwLCAxMjA2MzEsIDAsIDQzMDYzLCA3NDUxOSwgCisgICAgMTI3MTgyLCAwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgNTQwMCwgCisgICAgMTE1OTQsIDEyODI0NywgMCwgMTE4OTkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAwLCA1NTg3LCA0Mjg2NSwgNjQ0MDQsIAorICAgIDgyNjgsIDQ5MjMsIDY1MDg2LCA4OTgxLCAxMjM4MiwgNDIxMzMsIDEyMDc1NSwgOTcwNiwgNjk3MzgsIDAsIDY2NjEwLCAKKyAgICAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDAsIDQyNzY2LCA5ODM4NTcsIDIyMTAsIDk5ODMsIDAsIDk0MDA5LCAwLCAwLCAwLCAKKyAgICA3Mzk4LCA0MTUxNSwgMCwgMTE4MDIsIDgwNDEsIDE0NjEsIDkxMCwgMTE5MTMzLCAwLCA2NzQ5LCAzNjU4LCA5Mzk2NCwgCisgICAgMTIwNTI1LCAwLCA3NjE3LCAxOTQ4NDEsIDEyODg4LCAxMjc5ODMsIDY3NjY4LCAxMzE0MywgMCwgOTE5MywgMTEwOTcsIAorICAgIDU3MDMsIDAsIDQxNTE3LCA0MTUwNCwgNDE1MTksIDEwMDE2LCA2NDMwNSwgMCwgNjU4NjQsIDYyMywgNzgxLCA2NzAsIAorICAgIDEwNjYwLCA1NzY5LCA2MTMsIDc1NDMsIDEyMDI3OSwgNDc3LCA0MTA4MywgOTI1MjEsIDAsIDU5MiwgMTU3OCwgMTI0NTksIAorICAgIDQzNDQ5LCAwLCAwLCA4MjI1LCAwLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCAwLCA2MzMsIDEyMDc0NCwgMCwgCisgICAgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDAsIDM5LCAxMjQ4NywgMCwgMTIwNTI5LCA3NDE5OSwgMTI0ODIsIDAsIDEyNDg5LCAwLCAKKyAgICAzMTk1LCA1NTUwLCA5ODM1NTQsIDc4OTcsIDAsIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCAwLCAKKyAgICAyODc3LCAwLCAwLCAxNjc1LCA2OTg0MCwgMCwgMCwgMCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIDE5NDc3NywgCisgICAgOTgzNjExLCAwLCAwLCAwLCA0MzI0NCwgMCwgMCwgOTgzOTA3LCAxMTk1NjEsIDk4MzA3OCwgMCwgMTk0OTIxLCAxMjgxNjAsIAorICAgIDk5MzksIDAsIDk4MzE1MSwgNzc4NjAsIDAsIDAsIDI3MCwgMCwgMTA3MTQsIDAsIDAsIDAsIDAsIDAsIDY1MzcyLCAwLCAKKyAgICA3NDAzOCwgMTE5NTU4LCA2MjczLCA2NjY3OSwgMzY0LCA5NTk1LCAxOTQ5MDgsIDAsIDAsIDcwNywgMCwgMCwgOTI4MiwgCisgICAgNjY0ODksIDIyNCwgMCwgNjg2NzAsIDkzMzIsIDQ5NjYsIDY4Njc3LCAwLCA2ODY0NCwgMCwgMzg0MSwgNjg2MzQsIDAsIAorICAgIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAwLCAxMjg5MCwgMjkwOSwgNjg2MTksIDQ0MDA4LCA2ODYyNywgOTgzNzA5LCAKKyAgICAxMTU0NCwgMTAyMDMsIDk2MDgsIDAsIDAsIDExOTYyLCAxOTQ2OTQsIDEyNTA3LCAxMTk2LCAxMjg2ODcsIDEyODMxMSwgCisgICAgNzc3LCAxMjAxODcsIDQzNzUsIDY1MjcxLCA2NzY3OCwgMCwgMTIxOTgsIDAsIDY0ODI0LCAxMTkzNDMsIDk4MzIzMCwgCisgICAgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3ODAwMCwgMjcwNSwgOTE3OTc1LCA0MTUyMCwgMCwgMCwgMTE5ODYsIDc3NjUsIAorICAgIDQyNTAyLCA4MjgwLCA3NDUyMCwgMjcwMSwgMCwgMTI3MDAyLCA1NzY3LCAwLCAwLCA5ODA5LCA4MzUzLCA2Mzc0NywgCisgICAgNjY3MDEsIDYzNzcyLCA5ODM4MDUsIDYzNzQ1LCAxNzQ4LCA2Mzc3MCwgMCwgMCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgCisgICAgMzA2MSwgMCwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAorICAgIDAsIDEyNzUyMiwgMTIwNjI4LCA2MzgwNywgMTU5MSwgMCwgNjM4NiwgNjM3ODMsIDAsIDAsIDkyNTM1LCAwLCAwLCAwLCAKKyAgICA3NDU3NSwgMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDAsIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgCisgICAgMTA5OTYsIDkyMjQ3LCAxOTIyLCAwLCAxMjQ5OCwgMTA5ODcsIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDAsIAorICAgIDE5NDg0MiwgOTgzNTg4LCA0OTMsIDAsIDQzMTk3LCAxNzE3LCA0MjI4LCA0NzksIDEwMzAzLCA3NDAyMCwgMCwgOTE3OTM1LCAKKyAgICAxMDMzNSwgMzUyMCwgOTE3OTMyLCAxMjQ5MCwgNjQzMTUsIDAsIDEyNzAzOSwgMTI0OTMsIDYyMzMsIDQyNjgxLCAxMDAyLCAKKyAgICAxMjQ5MSwgMCwgNjQ5MTEsIDkyNjE1LCAyMDk2LCA2NTEyMCwgMCwgNzgyMTksIDk4MzA4MSwgMTE2MTEsIDExNjMyLCAKKyAgICAxMjcwNDEsIDY2MjEzLCA2Mzg2NCwgNjYyMjEsIDY2MjI2LCA2NjIyOSwgMTMyMTgsIDY2MjMxLCA2NjIxNiwgODUwNywgCisgICAgNjYyMzYsIDY2MjExLCA2NjIxOCwgOTI2NzIsIDY2MjQwLCA3ODA0MSwgNjYyMzMsIDg5MjgsIDk4MzU1MiwgNzkwOSwgCisgICAgNjYyMzQsIDExNjA1LCA2Mzc1OSwgOTgzNjQ1LCA2NjIwOCwgNzM5OTksIDYzNzk5LCA2MzgwMywgMjQ0LCAxMTU0MiwgCisgICAgMTI4OTgsIDEyNDk0LCA3Mzc2MSwgMTI0OTIsIDEyNjY5LCAwLCAwLCA3NDE1MywgMCwgMTI4Mjc4LCAxMjA2ODAsIDQ4ODIsIAorICAgIDEzMDQwLCAwLCA4NjEyLCA0ODg1LCA3NDA1MywgMCwgMTMwNDIsIDQ4ODAsIDY0NjYyLCAyNDI5LCAxMzYwLCAyNDgsIDAsIAorICAgIDYzNzk3LCA5MjM5NCwgNDIzNTgsIDAsIDcyOTIsIDAsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIDAsIDE4NzAsIDc4MDQwLCAKKyAgICA0NzAsIDc4MDM4LCA3ODAzNSwgNzgwMzYsIDcwMDI4LCA3ODAzNCwgNDU3OSwgMTI4MDkwLCAwLCAxMjUxMSwgNzQ0NTMsIAorICAgIDEyNTE0LCAwLCA3NDU3OSwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyODA1MiwgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgCisgICAgMTE2MTUsIDYxMDQsIDAsIDAsIDY1OSwgNjA5OCwgMCwgMTIyMzQsIDEyNzMwNywgMTI3MDY3LCA4MzExLCAxMjUxMCwgCisgICAgNDE4MDMsIDEzMDM5LCAxMjcwNzIsIDEyNTEzLCAxMDIwMiwgMTI0NzEsIDAsIDg3NDcsIDk4MzkxMSwgMCwgMCwgMjMyMywgCisgICAgMCwgMjMxOSwgNzc5MTcsIDEyNDc3LCA3NzkxNiwgMjMxMSwgMCwgNDQxNSwgMjM3LCA2MjgxLCAxMjcyODAsIDAsIDAsIAorICAgIDIzMDksIDEzMTIsIDgxNzMsIDEyODg3MSwgMTI0NjksIDAsIDc4NTA1LCA2NDMzNSwgMTA2MDksIDAsIDEyODExMSwgOTM5NywgCisgICAgMTE1MjQsIDkzOTUsIDkzOTYsIDkzOTMsIDkzOTQsIDkzOTEsIDkzOTIsIDkzODksIDYyMDksIDkzODcsIDkzODgsIDQ5MzIsIAorICAgIDkzODYsIDkzODMsIDkzODQsIDY3NDAsIDAsIDY1NDUxLCA4MTg1LCAwLCA5MTc4MzIsIDQzMDI0LCA0MzMzNiwgNjc2NTksIAorICAgIDIzMTMsIDEyODE2NywgNzk0OCwgOTIzNiwgOTI1NzEsIDAsIDAsIDEwNTcwLCA0MzQ3MywgNjI4OSwgMTA0ODQsIDAsIDAsIAorICAgIDExOTk4LCAxMjA4MiwgMTA5MjQsIDMxNDcsIDAsIDEyMDY4NCwgMTI1MjQsIDExOTA4MSwgMjMxMCwgMTE4MTgsIDkzODEsIAorICAgIDkzODIsIDkzNzksIDkzODAsIDkzNzcsIDkzNzgsIDkzNzUsIDkzNzYsIDE2ODMsIDkzNzQsIDk4Mzc2OSwgOTM3MiwgCisgICAgMTI0NDQsIDAsIDAsIDEzMDE2LCA4MjEwLCA5ODM5NDksIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgCisgICAgODc0NCwgNzI2LCAwLCA5ODM4MjgsIDQxNTUsIDAsIDAsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIAorICAgIDEyNzgwNSwgMTI3MjQwLCAwLCA5OTIyLCA0MzMwOSwgOTgzODMyLCAxMjUyNSwgOTgzNDYzLCAxMjAxNiwgNjU3NzAsIAorICAgIDk1NDgsIDY3NjY1LCA0MDMsIDc4MjMwLCAxMjUwMywgMCwgMCwgMTEwMzAsIDAsIDkyNTY3LCA2NTY5MSwgNjM5OTgsIAorICAgIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDE5NDY2OCwgMCwgMTI1MDYsIDAsIDEyMjMxLCAwLCAxMjUwMCwgCisgICAgNDQwMjMsIDEyNTA5LCA2NDM5MywgNzg4MzAsIDMzODksIDEwNTg5LCA2NjA4LCA0MTA0NywgMTIwMzIxLCA3ODM5NSwgCisgICAgNzgzOTQsIDc0MDY5LCA3Nzk5NSwgNzgzOTEsIDM2MDgsIDgyODEsIDEyMDMyMCwgMTEwNywgMCwgOTA3NiwgODg2MiwgCisgICAgNjk3NDMsIDQxMDUyLCAxMzA4NCwgNjQ3NjYsIDQzMjE3LCA3ODAzLCAxMzIyMiwgNzQxNjUsIDc0NzgyLCAxMjY1MTQsIAorICAgIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDk4MzkzOCwgNDk4LCA2NDQ3MSwgMTIwMzI0LCAKICAgICAxMjg1NjcsIDEyNTI5LCA4MDQyLCAwLCAyMzQ0LCAxMjUyOCwgODAzMSwgMjQxNCwgMCwgNjk3MTksIDMyMzEsIDAsIDY0MjIsIAogICAgIDY2NTEyLCA2OTY1MywgMTI1MzAsIDI1MzcsIDc4NDA1LCA0MTQyOSwgMTI2NTgsIDEzMDM2LCA2NTc3MiwgMCwgNzg3MzgsIAogICAgIDQxNDMzLCA0NzE5LCA0NjksIDAsIDQzNjMsIDMzMTMsIDQxNDI4LCA3ODQwNywgMjAyMywgMTc3MiwgNzgyMjQsIDc4MjI1LCAKICAgICA2NTcwNiwgMTAwNTEsIDY0ODEyLCA3ODIyMCwgMCwgOTkyMCwgMTIyMTUsIDAsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIAogICAgIDk2MDcsIDAsIDk2NjMsIDAsIDExOTYzNCwgNjUwMywgNDExMTAsIDAsIDE0OTEsIDAsIDAsIDEyNzMwNCwgNDEwNjEsIDAsIAotICAgIDAsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCA5NzM4LCAKLSAgICA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgMTI3Nzc2LCAKLSAgICA5OTQwLCAxMjcyOTksIDc2OTIsIDAsIDgwMDgsIDQxMTMxLCAzMzAsIDg1NjYsIDY1MDgzLCA0MTEzMywgOTgxNiwgCi0gICAgMTI4MDc0LCAxMjUzMiwgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAwLCAxMjcyOTgsIDY0MTM5LCAKKyAgICAxOTQ4MzgsIDEyNzE4NywgNjUwMjYsIDQxOTkzLCA0MTUwOSwgMTEwNDUsIDY1MDI4LCA3ODYwMiwgNjY0NzYsIDQxMTA4LCAKKyAgICA5NzM4LCA0MTk5NSwgMTA3NSwgMTk1OCwgMTI1MzUsIDQxOTkyLCA0MTUwNiwgMCwgNDE2ODcsIDAsIDEyMDcxNywgCisgICAgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgyNCwgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgNjUwODMsIDQxMTMzLCAKKyAgICA5ODE2LCAxMjY1MTcsIDEyNTMyLCA3ODU1MCwgNzg1NDYsIDM1MDgsIDEyNzA1OCwgNDMyMzUsIDAsIDEyNzI5OCwgNjQxMzksIAogICAgIDc4MjMxLCA2NDExLCAxMjkxMCwgNzg1NTQsIDY2NjQ0LCAxMzAyOCwgNjczNywgMTI1MzcsIDAsIDAsIDY0MTM2LCAxMjUzNiwgCi0gICAgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCAwLCAxMzAzMCwgNjcwMiwgNDUyNywgMCwgMTI1MzgsIDEyODgxMCwgMCwgNjU1OTksIAotICAgIDY1NzE3LCA5OTY2LCAwLCA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTI4MTQ5LCAxMjYyMywgMCwgNjIwNywgMCwgNjExNywgCi0gICAgNjU5MzAsIDg0MTIsIDAsIDc0MzgsIDEyOTYsIDIzMjUsIDQxNTExLCAwLCAxMDE0OSwgNzQxMTgsIDAsIDEyNzI4NiwgCi0gICAgMTI0ODEsIDAsIDEyNDg4LCAwLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgMTI4NTcxLCA3Mzc2NiwgMCwgCi0gICAgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCAwLCAxMTkyNywgNjY1ODQsIDc4NTU5LCA3ODU2MCwgCi0gICAgNzg1NTcsIDc4NTU4LCAwLCA3ODU1NiwgODQ4LCA5ODY4LCAwLCA2NDI0LCA3ODU2OCwgMTE5MzM4LCA3ODU2NSwgNzQwMzEsIAotICAgIDc4NTYzLCA3ODU2NCwgMjM1MiwgNzg1NzIsIDg5MywgNjQ1NzYsIDExMjg5LCAxNDA3LCAwLCAwLCAxMzAyNiwgNjc2MiwgCi0gICAgNzg1NzksIDc4NTgwLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIDEzNDMsIDAsIDAsIAotICAgIDkzMjUsIDY4MTgsIDYyODMsIDExNzM4LCAwLCAwLCAwLCAxMTc0MSwgMCwgMCwgOTIxNiwgODI2MywgMTEyNzksIDE5NDc1MiwgCi0gICAgMCwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgCi0gICAgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgMTk0NzY3LCAKLSAgICA3NDM0MCwgNjk2ODEsIDAsIDY0OTQ1LCA4MDI5LCAwLCAwLCAwLCAzMzM1LCAwLCAwLCA5Nzc2LCAxMjA1MjYsIDE5NDc0OCwgCi0gICAgNTIxNSwgNDI2NDQsIDMzMzMsIDE2MzIsIDE5NDc1MSwgNjQ4NDksIDMzNDIsIDc4NTgyLCA1MzYzLCAxMjk1NywgNzg1ODEsIAotICAgIDQxNTYsIDAsIDAsIDY0MjEsIDc4NTkxLCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIDMzMzcsIAotICAgIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgMCwgMTMwNDYsIDg4MzgsIAotICAgIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgMCwgMCwgNjgxOSwgMTMwNDksIDY0OTksIAotICAgIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDczOTQ0LCAxMzA1MCwgOTkyNCwgMTk0NzQ1LCA2NTA3LCAxMjc5MTksIDAsIDEyODA2OSwgCi0gICAgMzI3NywgODkyOSwgNDk0NywgNDEwNTUsIDAsIDE5NDcyMiwgMTk0NzIxLCAxOTQ3MjQsIDEzMDQ1LCA2NDYyNiwgNjYwMzQsIAotICAgIDc3NTEsIDE5NDcyNywgODM3MSwgMTk0NzI5LCAzOTk3LCAxMjgwNiwgODc2OCwgMTMwNDQsIDAsIDEyNDIwLCA0MDI0LCAKLSAgICAxOTQ3MzAsIDQxMDU0LCAxMDc4LCA5NzU3LCA2OTczNiwgNDEwNTcsIDAsIDAsIDAsIDAsIDAsIDkyMjEwLCA5MjQxMSwgMCwgCi0gICAgNDE0OTYsIDAsIDkxNjUsIDE1NzIsIDExOTExLCAwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCAwLCA5NjQ2LCAzNzczLCAKLSAgICA0MzE4MywgNjQwMSwgNTgzMSwgMCwgMCwgMTMwNDMsIDgwNTYsIDkyNDk0LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAKLSAgICAwLCAwLCAwLCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIDAsIDEyMDYzMCwgMzYwMywgNDExMDksIDIzOTgsIAotICAgIDM1NDgsIDAsIDAsIDExOTkzMywgMCwgMzExNSwgOTkxOCwgMCwgMTEzMjEsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIAotICAgIDY1ODA0LCAwLCAwLCA0MzQ2OCwgMCwgNDE1NTgsIDQxNDcxLCA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgCi0gICAgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIDQxNTU5LCAxODk2LCA2NjI1NiwgMTMwNTIsIDE5NDY4MCwgCi0gICAgNTY2NSwgMCwgMTE5MDcxLCA3MDI1LCA2Mzk3NCwgMCwgNzQzNTIsIDc0MTYxLCA0MTU0LCA5ODYzLCA0MzU1MCwgMTIzMTAsIAotICAgIDU2NjIsIDQyMzgyLCAxOTQ2ODYsIDczOTI0LCAxMTIxLCAxOTQ2NjUsIDYzOTU5LCAwLCA5OTQyLCAxMzIzMSwgMCwgCi0gICAgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDExOTkzMSwgNjUxODcsIDE2MjYsIDYzOTgzLCAxMDExMCwgNjQ3NzIsIAotICAgIDQyMDI0LCA2NDIwLCA0MjAyOCwgMCwgMTA1MDksIDI3OTUsIDQ5MTAsIDE5NDcyOCwgNjkyMzEsIDY0NzUzLCA2Mjc1LCAKLSAgICA5MTc4MDgsIDExODgzMCwgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIAotICAgIDkxNzgxMCwgNDIwMjYsIDYxMzcsIDAsIDc1MjQsIDAsIDkxNzgwOSwgODM0NiwgMCwgODMzOCwgMTI4MzE1LCA2NTA0MywgMCwgCi0gICAgODIyLCAxMjc5ODQsIDk5MDMsIDY0NzIxLCA0MjcyMiwgMTk0NjU2LCAxOTQ2NTksIDc4NjU1LCA3ODY2MSwgMTk0NjYwLCAKLSAgICA3ODY2MiwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNzgwNTUsIDExMjc4LCA3ODYzMiwgCi0gICAgMTk0NjQwLCAwLCAxMjk0NiwgMTk0NjQxLCAxMTkzNDEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTk0NjQ4LCAxOTQ2NDcsIAotICAgIDY1MDE5LCAxOTQ2NDksIDczOTkwLCAwLCAwLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCAxOTQ2NTIsIAotICAgIDE5NDYyOSwgMTA1NTYsIDI0NzUsIDEyMzg4LCA0ODg5LCA4OTY4LCA2Nzg2MywgMzU5MywgMCwgMCwgMjM0MiwgMCwgCi0gICAgMTk0NjM0LCA2NTIwNiwgNDg5NCwgMTk0NjM1LCA0ODkwLCAxOTQ2MzcsIDkxNzgwNCwgNTgxLCA0ODkzLCAwLCA2NTcxLCAKLSAgICA2NTU0NSwgNDg4OCwgNDE1NywgNzgwNDgsIDc4MDQ5LCA3ODA0NiwgNzgwNDcsIDAsIDEwMTE5LCA2NDE1LCA0Mjg5MywgMCwgCi0gICAgNjk3MDIsIDAsIDAsIDExMzc1LCA2NDc0NiwgMjMzMiwgNzgwNjMsIDQxMiwgNzgwNjEsIDY0OTMyLCA0Mjg4MCwgNDM1ODcsIAotICAgIDAsIDAsIDAsIDAsIDY1MTk3LCA3ODA2NiwgMTIyMDMsIDc4MDY0LCA3ODA2NSwgODkxMywgNjU4NTQsIDQ4NzUsIDY1ODExLCAKLSAgICAxMjAzODEsIDEyMDM4OSwgMTE4ODg4LCA5MzQ0LCA4ODI2LCAxMjAzODYsIDEyMDM5NSwgMTMxMDQsIDc0NzgxLCAxMTk5NywgCi0gICAgMTIwMzkzLCA3ODA3NSwgMCwgMzEzNCwgMCwgNjU2OTYsIDkyMzMxLCAwLCA2NjIxNywgMCwgODMzNCwgMTE5MzQ0LCAwLCAKLSAgICAzNDQ5LCAwLCAwLCA3ODQxNCwgNzg0MTMsIDExODk1MCwgNzQwMTEsIDAsIDAsIDAsIDAsIDE5MDgsIDEyMDE2NywgNDMyOCwgCi0gICAgMTA3MzQsIDEyNzAxNCwgMCwgMTI3OTE0LCA3ODA0LCA3ODI3MiwgMTA4MTEsIDYyNTAsIDExMzM5LCA0OTE0LCAxMTM2NywgCi0gICAgMCwgNzgwNTQsIDQ5MTcsIDc0NTE2LCA3NDIwOCwgNjQyODUsIDQ5MTIsIDU0NjQsIDEyNzgzNiwgMTE4ODkzLCAyMzYxLCAKLSAgICA3OTcxLCA3ODA3MiwgNzgwNzMsIDU1MjQzLCA3ODA3MSwgMCwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIAotICAgIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCAwLCA0MDk4MCwgMCwgMTMyMDIsIDAsIDEyNTgyLCA3ODI4MiwgMCwgCi0gICAgMCwgNDI0MzgsIDU1MjIxLCA2Mjg4LCA3ODI4MCwgMTI3OTQ2LCA1NjUzLCA0MjQwMCwgMTA4OTEsIDc2OTgsIDU2NTgsIAotICAgIDc0MDQ1LCAxMjAxNjUsIDAsIDAsIDQ5MTMsIDAsIDAsIDAsIDQyMzI2LCAxMjgxOTQsIDEyNzI4LCA5MjY4NSwgNDI0NzgsIAotICAgIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDAsIDAsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCAxOTQ3MDgsIAotICAgIDY2MzEyLCA2OTgsIDEyODAwNywgMTk0NjA2LCAxMDM1NiwgNzQwNzUsIDE5NDcxMywgNjUxLCAxMjY0MSwgMCwgMCwgMCwgMCwgCi0gICAgNDE1NTIsIDY1MTE1LCA3ODQ2NSwgNzg0NjcsIDc4NDYzLCA3ODQ2NCwgMTI4ODUxLCA3ODQ2MSwgMTk0Njk3LCA3NDM1NiwgCi0gICAgOTI2MjYsIDQ3MTYsIDQzMjc3LCAwLCA3ODQ3NCwgMTIzNDAsIDEyMDU2OCwgMCwgMTk0NzAwLCA1NTI2NCwgNDEyMTEsIAotICAgIDEyMDY3NiwgODcwMywgNTQ2MiwgOTE3NjI5LCAwLCAxMDEwMSwgMCwgMCwgODQ3OSwgNDE1MSwgNDE5MzMsIDAsIDAsIAotICAgIDY2MjU0LCAxMjA4MjEsIDAsIDAsIDEyODY1NCwgMCwgMTE5MTk0LCA3NDA1MCwgOTI3MDEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyMjc4LCAwLCAwLCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgMTI4OTksIDAsIDAsIDI2OTksIDAsIDczODQ1LCAyOTg1LCAKLSAgICA5MjU2OCwgMCwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIDk4MjcsIDExOTMxMCwgMTE5MzExLCAxMTkzMDgsIAotICAgIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgMzUsIDc4NDgxLCA3ODQ4MiwgNjY2OTQsIDY4NDc5LCAKLSAgICA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNzg0ODMsIAotICAgIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIAotICAgIDc5MzAsIDAsIDQzMzAzLCA2ODIxNiwgMCwgOTE3ODI2LCA1MjQ0LCA0MTg5LCAxMjcwOTgsIDY3NTk2LCAxMjc1MDQsIAotICAgIDQxODgsIDE4NzksIDAsIDk2OCwgMCwgNDM3NDMsIDAsIDg4NzMsIDAsIDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAwLCAKLSAgICAwLCA3NDQ5MCwgMTI3MDk5LCA0MzY1NywgMCwgMCwgMCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgMCwgNDEyMjcsIDAsIAotICAgIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCAwLCAwLCA3MjUxLCAwLCAwLCAxMTg4NTAsIDExOTE0MSwgMTI4NTQ2LCA2NjAxNSwgMCwgCi0gICAgOTU5LCA4ODg1LCAxMjU2NCwgNjY0NTcsIDc4ODA4LCA5NDY5LCA5NjMyLCA5MjMyMywgNzQ3NjEsIDY0MzIzLCAwLCAwLCAwLCAKLSAgICAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgOTIxOTAsIDAsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgCi0gICAgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMCwgMCwgCi0gICAgMCwgNDE5MzQsIDc0NjUsIDAsIDEyODE2OCwgMCwgNDcxNSwgNjEwMSwgMCwgNDE5MzYsIDAsIDQ4NzksIDAsIDY1NDQ2LCAwLCAKLSAgICAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMCwgMTI4MDU5LCAwLCAwLCAwLCAwLCAwLCA2NTU2NywgMTIwNjE0LCAxOTI5LCAKLSAgICAwLCAxMjE0MiwgMCwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDE5NDYyMywgNTM3OCwgNzg3OTEsIAotICAgIDEyODY3OSwgNDE0MjEsIDAsIDQ0NjIsIDAsIDAsIDEyODA5MiwgODIxLCAwLCAyNDk4LCA1ODAwLCAxMjAxNTcsIDAsIAotICAgIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAKLSAgICAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgCi0gICAgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjU2MjYsIDc4NDYyLCAxODEwLCAKLSAgICAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIAotICAgIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIAotICAgIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgCi0gICAgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgODA0NywgMCwgNzg4MjcsIDEyNjM0LCAKLSAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIDAsIDE1ODQsIDY2NjQ1LCA2MDQ1LCAKLSAgICA2NzI5LCAxMjA2NDAsIDY1MjE4LCA3ODc3NywgMCwgNzgwNjIsIDc1MzcsIDAsIDExMzcwLCAwLCAxMDMzMCwgMCwgMTAzOTQsIAotICAgIDAsIDc0MTk0LCAwLCAxMjc5MjksIDk3ODAsIDAsIDEzMDkyLCAxOTQ1NzYsIDExOTYwNSwgMTk0NTc4LCA3MDc0LCA5MjY0OCwgCi0gICAgMTk0NTc5LCAxOTQ1ODIsIDExNDE0LCAxMjg4NjgsIDI1MzEsIDEzMDM0LCAwLCAwLCA0MjExLCAxMjU5LCA3NTE3LCAwLCAwLCAKLSAgICAxOTQ1NjEsIDQwOTk2LCAxMzAzNywgNzA5MiwgNjQxLCA1MjE5LCAxOTQ1NjcsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAwLCAKLSAgICA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgMTk0NTczLCAKLSAgICA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgMCwgNjQyNjIsIDY3NjcsIDQxNDA3LCAwLCAwLCA2NzU1LCAKLSAgICAxMTg4NjQsIDkwNDYsIDEyNzkzNCwgMCwgMCwgMCwgMCwgMCwgNjc2NzUsIDAsIDAsIDAsIDY0MzM4LCAyNTYzLCAxMzAzMywgCi0gICAgMjQ3LCAxMTg5MTUsIDAsIDEyMzM4LCA0NjUxLCAwLCAxMTI3MCwgMCwgMCwgMTE5MzMsIDAsIDAsIDQxOTAzLCA0MzQ0NywgCi0gICAgMTEwMDEsIDAsIDQyMjU1LCAwLCA5MjY2MSwgNjk4MjEsIDQxOTA1LCAwLCAwLCAxMDc3NSwgOTc5MywgNTAwOSwgMCwgCi0gICAgNDIyNjksIDY0NTg3LCAwLCA0MjUzNSwgNjk4MTIsIDY0NTI5LCA0MTQwOCwgNDI4NTMsIDM4NzcsIDEyMDc5NSwgNDI2NzQsIAotICAgIDgxNDcsIDQzNTY2LCAxMTkwMjEsIDAsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCAKLSAgICA0NzQ3LCAxMjgwNTgsIDAsIDQzMjAwLCA1ODMyLCAwLCAwLCA1MTQxLCA0MjYwMCwgMCwgNDMyMDMsIDAsIDAsIDQzMjg2LCAKLSAgICAwLCAxMjgyMTEsIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgCi0gICAgMCwgMCwgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAwLCAKLSAgICAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNjM4ODUsIDAsIDExODIyLCAwLCA0MzE4OSwgMCwgMCwgMTc4OCwgMTU3OSwgCi0gICAgMTIwNDgyLCA5MTc4MTcsIDAsIDAsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDAsIDAsIDEyODUsIDY0ODgyLCA0MTI0MiwgCi0gICAgMCwgMCwgMTI2NDAsIDAsIDc0MDEsIDAsIDEyNjI1LCA2ODE5OCwgMCwgOTIyNTQsIDM5NDAsIDQxNTk3LCA1NTI2MCwgCi0gICAgMzM5NiwgMTI2NDIsIDg2NjUsIDAsIDAsIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAxMjA1MTYsIAotICAgIDEyMDUyMywgMCwgODgxNSwgNjY2NzMsIDY1MDQ2LCA5Mjg1LCA5MTMsIDQyMjU5LCAxMTkzMTcsIDExOTMxOCwgMjE0MiwgCi0gICAgNjg0NTQsIDQyNDg1LCAxMTg4MzcsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgCisgICAgMjM1MCwgMTMwMjksIDc4MjMzLCAwLCA5ODMxMDMsIDEzMDMwLCA2NzAyLCA0NTI3LCAwLCAxMjUzOCwgMTI4ODEwLCAKKyAgICA5ODM2MzYsIDY1NTk5LCA2NTcxNywgOTk2NiwgMCwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyODE0OSwgMTI2MjMsIDAsIDYyMDcsIAorICAgIDAsIDYxMTcsIDY1OTMwLCA4NDEyLCAwLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTI2NjI1LCAxMDE0OSwgNzQxMTgsIAorICAgIDAsIDEyNzI4NiwgMTI0ODEsIDAsIDEyNDg4LCA2NjcxMywgMCwgNDE1NTYsIDY0NDE0LCAxMTg4MDIsIDIzNTQsIDQyNjE5LCAKKyAgICA3Mzc2NiwgMCwgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgMCwgNjUwMzIsIDQxNTEzLCA5ODMxNjYsIDExOTI3LCA2NjU4NCwgCisgICAgNzg1NTksIDc4NTYwLCA3ODU1NywgNzg1NTgsIDAsIDc4NTU2LCA4NDgsIDk4NjgsIDAsIDY0MjQsIDc4NTY4LCAxMTkzMzgsIAorICAgIDY5OTIyLCA3NDAzMSwgNzg1NjMsIDc4NTY0LCAyMzUyLCA3ODU3MiwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCAKKyAgICAwLCAxMzAyNiwgNjc2MiwgNzg1NzksIDc4NTgwLCAxMzAyMywgODkwMywgOTc3NywgNjY3MTUsIDE4NzEsIDgwOTksIDAsIDAsIAorICAgIDEzNDMsIDk4MzgxNCwgMCwgOTMyNSwgNjgxOCwgNjI4MywgMTE3MzgsIDAsIDk4MzkyNSwgMCwgMTE3NDEsIDAsIDAsIAorICAgIDkyMTYsIDgyNjMsIDExMjc5LCAxOTQ3NTIsIDk4MzgxNiwgMTk0NzU0LCAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgCisgICAgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgMCwgNzQ1NTIsIDEwMDE0LCAwLCA0MTI2MCwgMTE5MzQwLCAKKyAgICAxMzAyMCwgMTAwMjQsIDE5NDc2NCwgNzQ1ODMsIDc0MzQwLCA2OTY4MSwgMCwgNDMwMDEsIDgwMjksIDAsIDAsIDk4Mzc3MSwgCisgICAgMzMzNSwgMCwgMCwgOTc3NiwgMTIwNTI2LCAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAKKyAgICAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCA0MTU2LCAwLCAwLCA2NDIxLCA3ODU5MSwgMTYxMSwgNzg1ODksIAorICAgIDEzMDE4LCA3NDI1NywgNzg1ODgsIDc0NTQyLCAzMzM3LCA0NTM3LCA2Nzg5NSwgMTE3MzYsIDAsIDY4NjA4LCA2NDgyLCAKKyAgICA0MjE0LCA3Mzc5MCwgMTE5NDUsIDAsIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgCisgICAgMTMwNDcsIDAsIDAsIDY4MTksIDEzMDQ5LCA2NDk5LCA5MjI0MywgMTI0MjQsIDY4NjE0LCA3Mzk0NCwgMTMwNTAsIDk5MjQsIAorICAgIDE5NDc0NSwgNjUwNywgMTI3OTE5LCA5NDA3MywgMTI4MDY5LCAzMjc3LCA4OTI5LCA0OTQ3LCA0MTA1NSwgMCwgMTk0NzIyLCAKKyAgICAxOTQ3MjEsIDE5NDcyNCwgMTMwNDUsIDY0NjI2LCA2NjAzNCwgNzc1MSwgMTk0NzI3LCA4MzcxLCAxOTQ3MjksIDM5OTcsIAorICAgIDEyODA2LCA4NzY4LCAxMzA0NCwgMCwgMTI0MjAsIDQwMjQsIDE5NDczMCwgNDEwNTQsIDEwNzgsIDk3NTcsIDY5NzM2LCAKKyAgICA0MTA1NywgMCwgMCwgMCwgMCwgOTgzNzgyLCA5MjIxMCwgOTI0MTEsIDAsIDQxNDk2LCAwLCA5MTY1LCAxNTcyLCAxMTkxMSwgCisgICAgMCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIDU4MzEsIDAsIDAsIAorICAgIDEzMDQzLCA4MDU2LCA5MjQ5NCwgNjU2ODEsIDIwOCwgMTI3MzgyLCA0MTUxNCwgMCwgMCwgMCwgMTA2OTksIDY0MDgsIAorICAgIDkyMjI3LCA3ODI1LCA1NjYxLCAwLCAxMjA2MzAsIDM2MDMsIDQxMTA5LCAyMzk4LCAzNTQ4LCAxMjY1OTYsIDAsIDExOTkzMywgCisgICAgMCwgMzExNSwgOTkxOCwgMCwgMTEzMjEsIDQyOTEyLCAwLCAwLCAxOTQ3MjYsIDQ4NzYsIDY1ODA0LCAwLCAwLCA0MzQ2OCwgCisgICAgOTgzMjY2LCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgNzg2ODksIAorICAgIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY2MjU2LCAxMzA1MiwgMTk0NjgwLCA1NjY1LCAwLCAxMTkwNzEsIAorICAgIDcwMjUsIDYzOTc0LCAwLCA3NDM1MiwgNzQxNjEsIDQxNTQsIDk4NjMsIDQzNTUwLCAxMjMxMCwgNTY2MiwgNDIzODIsIAorICAgIDE5NDY4NiwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDAsIDY0NzUyLCA0NzMyLCAKKyAgICAxOTQ2NjYsIDExNTk2LCAxMTk5MzEsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIDY0NzcyLCA0MjAyNCwgNjQyMCwgCisgICAgNDIwMjgsIDAsIDEwNTA5LCAyNzk1LCA0OTEwLCAxOTQ3MjgsIDY5MjMxLCA2NDc1MywgNjI3NSwgOTM5NTcsIDExODgzMCwgCisgICAgNjM5NzgsIDExMDQ0LCAzMjI5LCA2NDIzLCA0Mjc3NCwgMCwgMCwgMCwgMTI4MjMsIDIzMzEsIDkxNzgxMCwgNzA4NSwgCisgICAgNjEzNywgMCwgNzUyNCwgMCwgOTE3ODA5LCA4MzQ2LCAwLCA4MzM4LCAxMjgzMTUsIDY1MDQzLCAwLCA4MjIsIDEyNzk4NCwgCisgICAgOTkwMywgNjQ3MjEsIDQyNzIyLCA2OTg3NywgMTk0NjU5LCA3ODY1NSwgNzg2NjEsIDE5NDY2MCwgNzg2NjIsIDQxMjY1LCAKKyAgICA1MzExLCAxNzk1LCA5NjUsIDExODc5MSwgMTA1ODcsIDc4MDU1LCAxMTI3OCwgNzg2MzIsIDE5NDY0MCwgMCwgMTI5NDYsIAorICAgIDE5NDY0MSwgMTE5MzQxLCAxMjAzNDksIDYyOTQsIDMxNDQsIDE5NDY0OCwgMTk0NjQ3LCA2NTAxOSwgMTk0NjQ5LCA3Mzk5MCwgCisgICAgMCwgOTgzOTUxLCA3NDgsIDQxMDY3LCAyMzMwLCA1MzUsIDMxNDgsIDEyMzc1LCA3ODc5OSwgMTk0NjI5LCAxMDU1NiwgCisgICAgMjQ3NSwgMTIzODgsIDQ4ODksIDg5NjgsIDY3ODYzLCAzNTkzLCAwLCAwLCAyMzQyLCAwLCAxOTQ2MzQsIDY1MjA2LCA0ODk0LCAKKyAgICAxOTQ2MzUsIDQ4OTAsIDE5NDYzNywgOTE3ODA0LCA1ODEsIDQ4OTMsIDk4MzYxNiwgNjU3MSwgNjU1NDUsIDQ4ODgsIDQxNTcsIAorICAgIDc4MDQ4LCA3ODA0OSwgNzgwNDYsIDc4MDQ3LCAwLCAxMDExOSwgNjQxNSwgNDI4OTMsIDAsIDY5NzAyLCAwLCAwLCAxMTM3NSwgCisgICAgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA2NDkzMiwgNDI4ODAsIDQzNTg3LCAwLCAwLCAwLCAwLCA2NTE5NywgCisgICAgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIDY1ODU0LCA0ODc1LCA2NTgxMSwgMTIwMzgxLCAxMjAzODksIAorICAgIDExODg4OCwgOTM0NCwgODgyNiwgMTIwMzg2LCAxMjAzOTUsIDEzMTA0LCA3NDc4MSwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIAorICAgIDAsIDMxMzQsIDAsIDY1Njk2LCA5MjMzMSwgMCwgNjYyMTcsIDAsIDgzMzQsIDExOTM0NCwgMCwgMzQ0OSwgMCwgMCwgCisgICAgNzg0MTQsIDc4NDEzLCAxMTg5NTAsIDc0MDExLCAwLCAwLCAwLCAwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAKKyAgICAxMjcwMTQsIDAsIDEyNzkxNCwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDAsIAorICAgIDc4MDU0LCA0OTE3LCA3NDUxNiwgNzQyMDgsIDY0Mjg1LCA0OTEyLCA1NDY0LCAxMjc4MzYsIDExODg5MywgMjM2MSwgNzk3MSwgCisgICAgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDAsIDgwODYsIDc0MzE3LCA2NzA3LCA4MzE5LCAyMzEyLCA0MDk3NywgCisgICAgMTA5NjAsIDQwOTYyLCA4MzA1LCAxMjU3MywgOTgzNjA4LCA0MDk4MCwgOTgzOTU1LCAxMzIwMiwgMCwgMTI1ODIsIDc4MjgyLCAKKyAgICA5ODMwNDgsIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgCisgICAgNzY5OCwgNTY1OCwgNzQwNDUsIDcwMDM5LCAwLCAwLCA0OTEzLCAwLCA5ODM5NTAsIDcxMzMzLCA0MjMyNiwgMTI4MTk0LCAKKyAgICAxMjcyOCwgOTI2ODUsIDQyNDc4LCAyMzI3LCAwLCAxMjU2MywgNDIyODcsIDEyNzA1LCAwLCAwLCAxMjU4OCwgODgyMSwgCisgICAgNjE1MywgMjg2NywgMTk0NzA4LCA2NjMxMiwgNjk4LCAxMjgwMDcsIDE5NDYwNiwgMTAzNTYsIDcwMDE3LCAxOTQ3MTMsIAorICAgIDY1MSwgMTI2NDEsIDAsIDAsIDAsIDAsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzg0NjQsIDEyODg1MSwgCisgICAgNzg0NjEsIDE5NDY5NywgNzQzNTYsIDY0OTQ1LCA0NzE2LCA0MzI3NywgMCwgNzg0NzQsIDEyMzQwLCAxMjA1NjgsIDAsIAorICAgIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDkxNzYyOSwgOTgzNDg3LCAxMDEwMSwgMCwgCisgICAgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCAwLCAwLCA2NjI1NCwgMTIwODIxLCAwLCAwLCAxMjg2NTQsIDAsIDExOTE5NCwgCisgICAgNzQwNTAsIDkyNzAxLCAwLCAwLCAwLCAwLCAwLCAxMjI3OCwgMCwgMCwgMCwgMjcwMCwgMTI1NzYsIDc4NDIsIDEyODk5LCAwLCAKKyAgICAwLCAyNjk5LCAwLCA3Mzg0NSwgMjk4NSwgOTI1NjgsIDEyNjQ3NSwgOTE3ODQ1LCAxMjE5MiwgMTE5MzE0LCAwLCAxMTkzMTIsIAorICAgIDk4MjcsIDExOTMxMCwgMTE5MzExLCAxMTkzMDgsIDExOTMwOSwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMCwgCisgICAgMzUsIDc4NDgxLCA3ODQ4MiwgNjY2OTQsIDY4NDc5LCA3ODQ3NywgNzg0NzgsIDQzNTk2LCA2MDkwLCA2NDI1NywgNzgxMiwgCisgICAgMTA1MzQsIDAsIDc4NDg1LCA3Mzg0OCwgNjc5NzUsIDQyNzIsIDAsIDQwOTY3LCA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgCisgICAgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAwLCA5MTc4MjYsIDUyNDQsIAorICAgIDQxODksIDk0MTA4LCA2NzU5NiwgMTI3NTA0LCA0MTg4LCAxODc5LCAwLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAKKyAgICAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMCwgMCwgMCwgNzQ0OTAsIDEyNzA5OSwgNDM2NTcsIDAsIDAsIDAsIDQyNjgyLCAKKyAgICAxMjU3OCwgMTI3MjAsIDAsIDQxMjI3LCAwLCAxMjM0NiwgMTI3MTAxLCA2NDg0OCwgMCwgMCwgNzI1MSwgMCwgMCwgCisgICAgMTE4ODUwLCAxMTkxNDEsIDEyODU0NiwgNjYwMTUsIDAsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgCisgICAgOTYzMiwgOTIzMjMsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAwLCAwLCAwLCAzMTAsIDAsIDQxMjgxLCAxMDk3NiwgMCwgCisgICAgNzEzMjUsIDAsIDc0MjY2LCAxMDA1NCwgNjQ5NywgODU3NCwgMCwgOTAxMiwgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIAorICAgIDEyNzMwLCA2NTE2MywgNzQwNDQsIDM3NCwgNDMxOTUsIDgxNiwgMTIwMTYxLCAwLCAwLCA0MTkzNCwgNzQ2NSwgMCwgCisgICAgMTI4MTY4LCA5ODMyNjAsIDQ3MTUsIDYxMDEsIDk0MTA2LCA0MTkzNiwgMCwgNDg3OSwgMCwgNjU0NDYsIDAsIDMwNywgCisgICAgMTI3MTQ3LCA5NTg1LCA1Mzc0LCA5ODMyNTksIDEyODA1OSwgMCwgMCwgMTI2NjE4LCAxMjAzOTAsIDAsIDY1NTY3LCAKKyAgICAxMjA2MTQsIDE5MjksIDAsIDEyMTQyLCAwLCAxMjIzNiwgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgMTk0NjIzLCAKKyAgICA1Mzc4LCA3ODc5MSwgMTI4Njc5LCA0MTQyMSwgMCwgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgCisgICAgNTgwMCwgMTIwMTU3LCA5ODMxMTUsIDE3NjAsIDI0MjEsIDQ0NjksIDIzMjQsIDgyOCwgMzYxMSwgNzg0MDAsIDc1NywgCisgICAgMTE4NSwgMCwgNzg3NzAsIDQzNTk3LCAxMDYyOCwgNzQ4MDgsIDE5NDU3MiwgNzk5OSwgNDM5NzEsIDAsIDAsIDEwNjM0LCAKKyAgICAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIDQzODAsIDE5NDYwOCwgMTE5MDQ0LCA5OTgyLCA2NDMyNCwgNDEyNDAsIAorICAgIDg2MiwgNjU2MjYsIDc4NDYyLCAxODEwLCAzNjczLCA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCAwLCA3NTY2LCAKKyAgICA2NDY4OCwgMTk0NTkzLCAxOTQ1OTIsIDc4MDkyLCA3NDM1NywgMTk0NTk3LCA0NzQ4LCA5MjIyOCwgMTk0NTk4LCAxOTQ2MDEsIAorICAgIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDAsIDc0NTc2LCA0NDAxOSwgMCwgMTI4MTg5LCAzOTY3LCAxOTQ2MDQsIDEzMTM3LCAKKyAgICA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIDAsIDg0MTAsIDQ0NTQsIDcyMywgMTI3ODgyLCA5NjYsIDQ0NDksIDkyMzMwLCAKKyAgICA5MjIzOCwgMCwgNzgxOSwgMjMyMCwgMTk0NTg5LCAzMzksIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgMCwgCisgICAgODA0NywgMCwgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMCwgNzQ0NTIsIAorICAgIDk4Mzc1NCwgMTU4NCwgNjY2NDUsIDYwNDUsIDY3MjksIDEyMDY0MCwgNjUyMTgsIDExNTU5LCAwLCA3ODA2MiwgNzUzNywgMCwgCisgICAgMTEzNzAsIDAsIDEwMzMwLCAwLCAxMDM5NCwgMCwgNzQxOTQsIDAsIDEyNzkyOSwgOTc4MCwgMCwgMTMwOTIsIDE5NDU3NiwgCisgICAgNzc5NTAsIDE5NDU3OCwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTk0NTgyLCAxMTQxNCwgMTI4ODY4LCAyNTMxLCAxMzAzNCwgCisgICAgMCwgMCwgNDIxMSwgMTI1OSwgNzUxNywgMCwgMCwgMTk0NTYxLCA0MDk5NiwgMTMwMzcsIDcwOTIsIDY0MSwgNTIxOSwgCisgICAgOTQwMzQsIDE5NDU2NiwgMTEwNjQsIDQxMTI5LCAwLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCAxMjgxNTMsIAorICAgIDAsIDY0MDk4LCA2NTc5MywgNDUzNSwgMTk0NTczLCA0MjcxLCA3ODQxNywgMTI4MzU3LCA2NzY5LCA0MTQxMCwgOTgzNDQ0LCAKKyAgICA2NDI2MiwgNjc2NywgNDE0MDcsIDAsIDAsIDY3NTUsIDExODg2NCwgOTA0NiwgMTI3OTM0LCAxMjY2MDgsIDAsIDAsIDAsIDAsIAorICAgIDY3Njc1LCAwLCAwLCAwLCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgMTE4OTE1LCAwLCAxMjMzOCwgNDY1MSwgNjk4OTUsIAorICAgIDExMjcwLCAwLCAwLCAxMTkzMywgMCwgMCwgNDE5MDMsIDQzNDQ3LCAxMTAwMSwgMCwgNDIyNTUsIDAsIDkyNjYxLCA2OTgyMSwgCisgICAgNDE5MDUsIDAsIDAsIDEwNzc1LCA5NzkzLCA1MDA5LCAwLCA0MjI2OSwgNjQ1ODcsIDk4MzA2MywgNDI1MzUsIDY5ODEyLCAKKyAgICA2NDUyOSwgNDE0MDgsIDQyODUzLCAzODc3LCAxMjA3OTUsIDQyNjc0LCA4MTQ3LCA0MzU2NiwgMTE5MDIxLCA5ODM3NjcsIAorICAgIDEwMjM2LCA2NTkxOCwgNDM3ODIsIDAsIDAsIDY0NTA2LCA2OTY1MiwgMTE4OTIxLCA0NzQ3LCAxMjgwNTgsIDY5ODQ0LCAKKyAgICA0MzIwMCwgNTgzMiwgMCwgMCwgNTE0MSwgNDI2MDAsIDAsIDQzMjAzLCAwLCA5ODM3OTAsIDQzMjg2LCAwLCAxMjgyMTEsIAorICAgIDQzNzc4LCAwLCA0MTMwNSwgNzg3NzYsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDAsIDcwMzEsIDg1OSwgMCwgMCwgMCwgNjA1OSwgCisgICAgMTI2OTg1LCA1NTIzNSwgMCwgODUzNSwgMCwgNjUxOTYsIDE5NDc4NywgNjYwMzIsIDExNDg4LCAxMjA0ODEsIDEyMDc4NiwgCisgICAgNDIyMzMsIDY0MTQwLCA5OTQ2LCA2Mzg4NSwgMTk0NzkyLCAxMTgyMiwgMCwgNDMxODksIDk4Mzg4OSwgMCwgMTc4OCwgCisgICAgMTU3OSwgMTIwNDgyLCA3MTI5OCwgMCwgMCwgMCwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgOTQwNTUsIDAsIDEyODUsIDY0ODgyLCAKKyAgICA0MTI0MiwgNzAwODYsIDAsIDEyNjQwLCAwLCA3NDAxLCAwLCAxMjYyNSwgNjgxOTgsIDAsIDcwMDgyLCAzOTQwLCA0MTU5NywgCisgICAgNDM3NTQsIDMzOTYsIDEyNjQyLCA4NjY1LCAwLCAwLCAxMjYzMCwgMTY1MywgOTE3ODE1LCAxMDE1MywgMCwgNjE2NiwgCisgICAgMTIwNTE2LCAxMTg5ODksIDAsIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTE5MzE3LCAxMTkzMTgsIAorICAgIDIxNDIsIDY4NDU0LCA0MjQ4NSwgOTQwMTIsIDc4NzgsIDgyMTEsIDQyMjkzLCA2NDM3NywgMCwgOTI2NDMsIDAsIDE5NDY3MywgCiAgICAgMTIwMzIsIDAsIDk3MjUsIDAsIDc4NDMxLCA1MjYzLCAxMjgxOCwgNzg0MzAsIDQxOTM5LCAxMDAyMiwgNjUzODcsIDc4NDE5LCAKLSAgICA0Mjc3NywgMTAxMzksIDk4MCwgNDM2OTgsIDY1Mzg2LCAwLCAwLCA0MzcwMSwgNDMxOTgsIDcxODQsIDEyMDY3MywgCisgICAgNDI3NzcsIDEwMTM5LCA5ODAsIDQzNjk4LCA2NTM4NiwgMjIwOCwgMCwgNDM3MDEsIDQzMTk4LCA3MTg0LCAxMjA2NzMsIAogICAgIDE5NDc5NywgOTE3ODE5LCAxMDA4NSwgMTE5OTkyLCAwLCAxMTk5OTMsIDY2MzQsIDkyMzczLCAwLCAxMTkzMjMsIDgwNzIsIAogICAgIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MiwgMTIzOTgsIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAKLSAgICAxMjY5NzcsIDEyMDU2NSwgOTkxNCwgMTI3MDExLCA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIAorICAgIDEyNjk3NywgMTIwNTY1LCA5OTE0LCAyMjE3LCA5MTc4NTQsIDczOTc1LCA2MzY3LCA2MzUxLCA2NjY4OCwgMCwgNzgxMDcsIAogICAgIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDAsIDQxOTM3LCA0MzU4LCA0MzI3MiwgNjM1MywgMCwgMCwgCiAgICAgMTIwNDIyLCAwLCAxNzEwLCAwLCAwLCA2NTYwNywgMCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgCiAgICAgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCAxMjgyMjUsIDEzMjEzLCAKLSAgICA0MjQ1MiwgNzgzMzEsIDAsIDc4NDQ1LCAwLCAxMDcyLCA3ODQ1NywgNzg0NTIsIDc4NDU0LCA2NTc2LCA0MTk4OCwgNDExMzIsIAotICAgIDY1Njc1LCAxMDgwLCAxMjAwMDIsIDk4ODYsIDU1MjI1LCAxMTAxLCA2ODQwNCwgMTIzMDksIDU1MjI3LCAwLCAxMjYzMiwgCi0gICAgMTA4NiwgMTg2OSwgNzg2ODUsIDc2ODAsIDAsIDY1NDU4LCAxMjA3MTQsIDEyNjM5LCAzMzgwLCA4MTIzLCAxMDkxLCAKLSAgICAxMjYzOCwgNzk3NywgNDUwMSwgNDEwOTksIDAsIDY2MzA5LCAwLCAwLCAxNDk0LCAwLCAwLCAwLCAxMTY5MywgMCwgMTA0OTQsIAotICAgIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAwLCAwLCAwLCAwLCA2NDU4MiwgMCwgNzM3OTQsIDAsIDgwMjIsIDAsIAotICAgIDEyMDQ2MiwgNzQxMDYsIDEyNDEzLCAxOTQ4MjksIDkxNzk5NCwgMCwgOTE3OTk1LCA1NTcwLCAxODgxLCA3MjEwLCAwLCAKLSAgICAxMDEyLCA2NjYzMCwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgMCwgNDIzMzksIDAsIDYwNjMsIDAsIDAsIAotICAgIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIAotICAgIDExODgxMCwgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgCi0gICAgOTIyMDQsIDAsIDAsIDEyMDExOSwgNzgzMzMsIDEyMDExNywgMTIwMTE4LCAxMjAwOTksIDEyMDEwMCwgNjUwODcsIDU1NzEsIAotICAgIDM2NzQsIDk3NDAsIDkxMjEsIDU1NjgsIDEyMDEwNywgMTIwMTA4LCA0MjA4NSwgMTAxMDcsIDQyMTU5LCA0Mjg3MCwgCi0gICAgMTIwMTAxLCA1ODksIDcwNTAsIDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIDAsIDc0MDk5LCAKLSAgICA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAwLCA1ODQ3LCA2OTI4LCAwLCAwLCAwLCAwLCAwLCA2NjU5MiwgMTIyMDQsIAotICAgIDkxNzk2MiwgMTk5NjYsIDc3ODU2LCA0MjU2MSwgMTIwNjI2LCAwLCAwLCA4MTIwLCAxMjA3MDEsIDAsIDAsIDEyODAxMiwgCi0gICAgNDEwNjMsIDAsIDEwNjY0LCAwLCA4MzY5LCAwLCA0NTUxLCAxOTQ5NjQsIDMzNjksIDAsIDAsIDk2NzMsIDY2MzM0LCAKLSAgICA2NTU4MCwgMTA0NzgsIDExODk2MCwgMTI1MTcsIDU1NywgOTQ1NywgMTIwMzQsIDAsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgCi0gICAgMTk1MDI1LCA3NDA5NCwgMCwgMCwgNzc5NzAsIDAsIDAsIDEyODE3NSwgMTIxMTEsIDM5MjcsIDAsIDEyNTE1LCAxNDc0LCAKLSAgICA2Nzg5MywgNTQ5MiwgNjkyMywgMTI4MDk5LCAxMDQ0MSwgNzM4MzYsIDAsIDQzOTkwLCA1NDkzLCAwLCA3NDMxOSwgMCwgCi0gICAgNjY2MzUsIDEyMDE5LCAwLCAxNjE4LCAwLCAxMjA0NzQsIDk2NDUsIDEwNDMwLCA5MTc5NTksIDU4NTMsIDEzMDYzLCAKLSAgICAxMDM2MywgMCwgMTI5NTYsIDEyODE2OSwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMCwgNzgzOTIsIDEyODI2LCAKLSAgICA2MzI5LCAwLCAxMDUxNCwgNjU1MTcsIDc0Mzk1LCAyNzA3LCA4MzA5LCAwLCAxMjcwNTQsIDc4Mzk4LCA0MzU3MCwgMjY5NywgCi0gICAgNDM0MjAsIDc4Mzk2LCAxMjcwNTcsIDI2OTUsIDQyMTcxLCAwLCAwLCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKLSAgICAxMjEyNSwgMTI3NjYsIDAsIDExNjQsIDAsIDAsIDQxOTE4LCAwLCAxMjc1NDIsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgCi0gICAgMTI4MDAxLCA3NDY5LCAwLCA1MjQ4LCAxMjIxOCwgMTIwNTM4LCA2NDI3LCA0Mjg4NCwgNDExMjMsIDAsIDAsIDQyODczLCAKLSAgICA0MTEyNiwgOTk5MSwgNDExMjgsIDc0MzcxLCAxMjcwMzEsIDAsIDk4NzMsIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgCi0gICAgNDI4NDMsIDY1OTEsIDkzNDAsIDAsIDE1ODksIDAsIDI5NiwgNzQ0MzgsIDc4ODUyLCAwLCA2Nzg0MSwgNzQzNzAsIDAsIAotICAgIDg5MjIsIDEyODA2OCwgNzQ2MDAsIDEyNzAwLCA3NDgzNiwgMCwgMTI1NzksIDAsIDEyNTc1LCA2NDE2LCA1NjU2LCAyODkxLCAKLSAgICAxMzI2MiwgNjU1OTAsIDUyOTksIDAsIDExNDczLCA1NDQ5LCAxMjUyLCAwLCA3ODQwNCwgNDE0MzEsIDc0MzY5LCA2NTM3MywgCi0gICAgNTI5NSwgOTE3NTY5LCA3NDExNCwgMTIyMywgMTY0MiwgMTc0LCA3ODM5OSwgODgzLCA0MTYxLCAxMjY5MSwgNDI2MDMsIAotICAgIDQxNDEzLCAzMjEyLCA0MTQ1OSwgMzIxMSwgNzQ4MTAsIDQxNDI1LCAxMjcwMjksIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgCi0gICAgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMCwgMCwgNzQxNzgsIDc0NTg3LCA3NDExNywgMCwgMCwgMCwgNDk4NiwgMTIxODksIAotICAgIDAsIDY3NjQ4LCAxMjA0OTksIDkxNzU1MywgNDI1NywgMTIxMDQsIDc3OTQyLCA2MjIwLCA5MDA0LCA2NTU2MSwgMCwgCi0gICAgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCAwLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgCi0gICAgNzg0NTMsIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDAsIDExODkwMCwgOTE3ODk0LCAwLCA5NjM1LCAxMjYwMCwgODg3MSwgMCwgCi0gICAgMCwgMCwgNjQ2OSwgNzQyMjcsIDAsIDY1MzA0LCA0Njc5LCAxMDIzMCwgNjQzMDAsIDY0ODY3LCAzNDI3LCA0MjQwLCAwLCAwLCAKLSAgICAwLCAwLCA0MjkxNiwgMCwgMCwgMCwgNzI4MiwgNzg3MjgsIDY1NzMzLCA0NDQ1LCAxMjcxMzgsIDEyODA4MiwgMzQ5NCwgCi0gICAgNzQ2MDYsIDY1NTUsIDAsIDc3OTc2LCAwLCAwLCA3ODU2NiwgMCwgMCwgNjU4OTgsIDAsIDY1MzEyLCA1NDQ3LCAwLCAKKyAgICA0MjQ1MiwgNzgzMzEsIDEyMDY2NCwgNzg0NDUsIDAsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCAKKyAgICA0MTEzMiwgNjU2NzUsIDEwODAsIDEyMDAwMiwgOTg4NiwgNTUyMjUsIDExMDEsIDY4NDA0LCAxMjMwOSwgNTUyMjcsIDAsIAorICAgIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIAorICAgIDEwOTEsIDEyNjM4LCA3OTc3LCA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDAsIDAsIDE0OTQsIDk4MzE0NiwgMTI2NjEzLCAwLCAKKyAgICAxMTY5MywgMTI2NTEzLCAxMDQ5NCwgOTI2NTUsIDY1ODcyLCAxMjM2MywgMTEzODYsIDAsIDAsIDAsIDAsIDY0NTgyLCAwLCAKKyAgICA3Mzc5NCwgMCwgODAyMiwgMCwgMTIwNDYyLCA3NDEwNiwgMTI0MTMsIDk0MDY5LCA5MTc5OTQsIDkxNzk5MywgOTE3OTk1LCAKKyAgICA1NTcwLCAxODgxLCA3MjEwLCAwLCAxMDEyLCA0Mzc1MiwgMCwgMTIwNzA5LCA3MjA4LCA2NjQ0MiwgNTU2OSwgOTgzMjM2LCAKKyAgICA0MjMzOSwgMCwgNjA2MywgMCwgNzgzODMsIDExOTU5NCwgNjA1MywgNjU2MDIsIDAsIDkyMjAxLCA2NDcyNywgOTE2MCwgCisgICAgMTk0ODI3LCAwLCAwLCA5MjE4MCwgMTA1MDMsIDExODgxMCwgNjA1NSwgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCAKKyAgICA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgMTIwMTE5LCA3ODMzMywgMTIwMTE3LCAKKyAgICAxMjAxMTgsIDEyMDA5OSwgMTIwMTAwLCA2NTA4NywgNTU3MSwgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgMTIwMTA3LCAKKyAgICAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMjAxMDEsIDU4OSwgNzA1MCwgOTgzNzkxLCA0MzI4MSwgCisgICAgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgMCwgMTk0ODE1LCA4NTgzLCAKKyAgICAwLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIAorICAgIDQyNTYxLCAxMjA2MjYsIDk4MzI0NSwgMCwgODEyMCwgMTIwNzAxLCAwLCAwLCAxMjgwMTIsIDQxMDYzLCAwLCAxMDY2NCwgMCwgCisgICAgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAwLCAwLCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIAorICAgIDEyNTE3LCA1NTcsIDk0NTcsIDEyMDM0LCA5ODM2NjIsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgMTk1MDI1LCA3NDA5NCwgMCwgCisgICAgMCwgNzc5NzAsIDk4MzU2MCwgMCwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCAKKyAgICA2OTIzLCA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgCisgICAgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgOTE3OTU5LCA1ODUzLCAxMzA2MywgMTAzNjMsIDAsIDEyOTU2LCAKKyAgICAxMjgxNjksIDEyMDcyOSwgMTEzMTQsIDkxNzU4MiwgMTIwNjAsIDAsIDc4MzkyLCAxMjgyNiwgNjMyOSwgMCwgMTA1MTQsIAorICAgIDY1NTE3LCA3NDM5NSwgMjcwNywgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgCisgICAgMTI3MDU3LCAyNjk1LCA0MjE3MSwgMCwgMCwgMCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAwLCAKKyAgICAxMTY0LCAxMjg4MTcsIDAsIDQxOTE4LCA5ODMxNjgsIDEyNzU0MiwgODY4NywgNjYwMDksIDEyMTc4LCA3MDUzLCAxMjgwMDEsIAorICAgIDc0NjksIDAsIDUyNDgsIDEyMjE4LCAxMjA1MzgsIDY0MjcsIDQyODg0LCA0MTEyMywgMCwgMCwgNDI4NzMsIDQxMTI2LCAKKyAgICA5OTkxLCA0MTEyOCwgNzQzNzEsIDEyNzAzMSwgMCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAyMDUzLCA0Mjg0MywgCisgICAgNjU5MSwgOTM0MCwgMCwgMTU4OSwgMCwgMjk2LCA3NDQzOCwgNzg4NTIsIDAsIDY3ODQxLCA3NDM3MCwgMCwgODkyMiwgCisgICAgMTI4MDY4LCA3NDYwMCwgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCAKKyAgICA2NTU5MCwgNTI5OSwgMCwgMTE0NzMsIDU0NDksIDEyNTIsIDAsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKKyAgICA5MTc1NjksIDc0MTE0LCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAorICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDEyNzAyOSwgNzg0MTIsIDc0NDUwLCA5NzI4LCAzODQ2LCA4MDcwLCAKKyAgICA2MTUwLCA2NjM2LCA0MzcwLCAwLCAwLCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAwLCAwLCAwLCA0OTg2LCAxMjE4OSwgMCwgCisgICAgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3Nzk0MiwgNjIyMCwgOTAwNCwgNjU1NjEsIDAsIDc3OTQ5LCAwLCAKKyAgICA2ODEzNSwgOTE3NTc2LCA3Nzk0NiwgMCwgNjk2NzksIDY5Njg0LCA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgCisgICAgNzM4OTgsIDExOTc5LCA3MDA1MSwgMTE4OTAwLCA5MTc4OTQsIDAsIDk2MzUsIDEyNjAwLCA4ODcxLCAwLCAwLCAwLCA2NDY5LCAKKyAgICA3NDIyNywgMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIDM0MjcsIDQyNDAsIDAsIDAsIDAsIDAsIAorICAgIDQyOTE2LCAwLCAwLCAwLCA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDEyNzEzOCwgMTI4MDgyLCAzNDk0LCA3NDYwNiwgCisgICAgNjU1NSwgMCwgNzc5NzYsIDAsIDAsIDc4NTY2LCAwLCA5ODMxODksIDY1ODk4LCA5ODMyMzgsIDY1MzEyLCA1NDQ3LCAwLCAKICAgICAxMjg5NSwgNjU1OTMsIDQwMTAsIDAsIDQxMTA2LCAwLCA2NDQ0OCwgMCwgNDExMDUsIDAsIDY1ODIwLCA2MjMyLCAwLCAKICAgICAxMjgyODAsIDAsIDQzNjA4LCAxMTkwOTEsIDAsIDY1MzgsIDQzMzUsIDc4MzY0LCAzOTQxLCA0MTEyMiwgMTEwNjEsIAotICAgIDc4MzYzLCA2NDg5MiwgOTExMywgMTk1NCwgMTIxNTUsIDAsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIDY1ODMyLCAKLSAgICAwLCAwLCAwLCA3Nzk3NSwgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAwLCAwLCAKLSAgICA1MTMzLCAwLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgOTM1NCwgMCwgMCwgMCwgMjQ5NiwgMTE1MTYsIDk0NCwgCi0gICAgMTE4ODUxLCAzODkwLCAxMjE2OCwgMTQzOCwgMCwgMCwgMCwgNDE5NDcsIDEyMjAsIDEyMDgyOCwgMTI4NTU1LCAwLCAwLCAKLSAgICAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgMCwgMzEyLCA0MTk4MCwgMCwgMCwgNzgxMjAsIAotICAgIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCA2NTEyMSwgMTA4NjIsIAotICAgIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgMTE1MzIsIDc0MDczLCAwLCAKLSAgICAwLCAxOTg1LCA2Mjk2LCA5NTgyLCA5MTc4OTUsIDY0Mjg3LCAwLCA3ODExNSwgMTE0MjgsIDE3MzAsIDI0NTcsIDAsIAotICAgIDE5OTE4LCAxMDQ2OSwgMCwgMCwgNzcwMywgODg0MCwgODAzNSwgMCwgMCwgOTI0OTEsIDAsIDYxMjksIDAsIDAsIDEyODI2OCwgCi0gICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgNzQyNzgsIDYzODg2LCAxMTg4ODEsIDk2MDUsIDczODkyLCAKLSAgICAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIDAsIDAsIDAsIDUyNDAsIDk4MTEsIDEwMDEyLCAzMDk2LCAKLSAgICAwLCAwLCAwLCA2NjY3NiwgNjU4NzMsIDAsIDAsIDAsIDk1MDEsIDAsIDEyNzIsIDY0NTM2LCA2NTQ2NSwgNjQ2NTQsIDc0NjcsIAotICAgIDAsIDE0NjcsIDEwMTU4LCAxMDA0MCwgMCwgOTUxOSwgMCwgOTE3ODEyLCAwLCAxMTg4OTksIDEyMTkzLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOTkzNSwgMCwgOTIxNjIsIDY5Njc2LCAwLCAwLCAwLCA1Mjc1LCAwLCAwLCA4NjM3LCAwLCAwLCAzNzg5LCA2Mzg4MCwgCi0gICAgMTE0NzEsIDQzNTU0LCA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgMTI4MTM4LCAyNDI2LCAxMjA0MiwgOTIxOTQsIDAsIAotICAgIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgCi0gICAgMTE2NjcsIDQyNjg2LCA3Nzk3MywgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgCi0gICAgNjgyMTUsIDAsIDg1NDEsIDc4Mjk4LCAwLCA0MTg2NiwgMCwgMCwgMCwgMCwgMCwgNDM1NTUsIDI4MjMsIDk1NTksIDEwMDYwLCAKLSAgICA0MTk0MCwgODI5OSwgNDE5NDUsIDcxMzIsIDQxOTQxLCAzMzA4LCA3MTkwLCA2NDg4MCwgODYxNCwgNjUyMjAsIDQxNDkzLCAKLSAgICAwLCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMCwgMCwgODEwNiwgNDEyOCwgMCwgMCwgNDQ5NCwgMCwgNDAxMiwgCi0gICAgMTAzOTUsIDAsIDQzNjMzLCA2NTQ0NywgMCwgMCwgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIDAsIDQyNzU1LCAKLSAgICA3NDgwMiwgOTIyNywgNzUwNiwgNzUxMCwgOTIyODEsIDY5MSwgNzM4LCA3NTExLCA3NTEyLCA3NTE1LCAzODY4LCA2ODgsIAotICAgIDQxODQ3LCA2OTAsIDI1NDgsIDczNywgOTc0LCA4MDAzLCA3NDA2LCA5MTc5MTEsIDAsIDAsIDM5ODUsIDkxNzkxMiwgCi0gICAgNjU4NjAsIDYzOTIxLCA3MDUxLCA2OTc3NywgNDY4MiwgOTE3ODA1LCAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAKLSAgICAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIDAsIDkxNzkwNywgMCwgNDE5NTgsIDExOTE3NiwgCi0gICAgOTE3OTA4LCAwLCAwLCA0MjY1NywgOTI0NjgsIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCAwLCAxMTcxNywgCi0gICAgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAKLSAgICAwLCAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDAsIDAsIDQzNTYxLCAwLCAwLCA3NDE0NiwgMTg2MCwgNzQ5NSwgCi0gICAgNzU4MCwgNTgxMiwgNzQ5NywgNzU4NCwgMTE5MTQwLCAxMjc4NTMsIDAsIDEyMDM0NywgNzcyNywgMCwgODQ5OCwgNjk4MTgsIAotICAgIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAwLCAxMjUzMywgMCwgCi0gICAgNjQxOCwgNDU0MywgNzgwODYsIDY5NjksIDAsIDc0ODAwLCAwLCAwLCAxMTk4MCwgMTI4NjUwLCAwLCA2Mzg5NCwgMTIwNzYwLCAKLSAgICAxMjI4MiwgNjYxOTIsIDAsIDc0NTkyLCA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDkxNzU0NSwgMCwgOTI2MjUsIDAsIAotICAgIDEyNzkxLCAwLCAwLCAwLCA0NDQ3LCA3MzczMiwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgCi0gICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKLSAgICA0MTMxMCwgMCwgNDEzOTksIDAsIDAsIDU1MjU4LCAwLCAxMjY5MCwgMCwgMCwgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIAotICAgIDkwMTAsIDExMzE1LCAwLCAyNzgsIDAsIDQxNDA1LCAxMTkyNTQsIDAsIDEwMDc3LCA2Mzg1MywgNzQ1NTcsIDQyNTg2LCAwLCAKLSAgICAwLCA2MDAyLCAwLCA0MzU1MywgMCwgNjc5MDMsIDAsIDEyNzg3LCA0MTMwOCwgNzkzNCwgNjUzMDYsIDAsIDAsIDAsIDg2NDYsIAotICAgIDAsIDc3ODI5LCAwLCAwLCA2NDEzLCA2NTUwLCAwLCAxOTQwLCAwLCA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAKLSAgICAxMDA0NCwgMCwgMCwgMCwgNjg2NTksIDY0MDMsIDU3MDcsIDEwMzkzLCAxMjc1MzIsIDAsIDY2NjE0LCAwLCAwLCAwLCAKKyAgICA3ODM2MywgNjQ4OTIsIDkxMTMsIDE5NTQsIDEyMTU1LCA5ODM2NjUsIDQyODc4LCAxMTUwMCwgMCwgMCwgNzQ1NzgsIDAsIAorICAgIDY1ODMyLCAwLCAwLCAwLCA3Nzk3NSwgMTE5MjMwLCA0NTg2LCAwLCAzNTAsIDEwOTUxLCAwLCA1MDksIDAsIDAsIDkyMzA3LCAKKyAgICAwLCAwLCA1MTMzLCAwLCAwLCA5NTAwLCAwLCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgOTgzMDgwLCAwLCAwLCAyNDk2LCAKKyAgICAxMTUxNiwgOTQ0LCAxMTg4NTEsIDM4OTAsIDEyMTY4LCAxNDM4LCAwLCA5ODMxMTcsIDAsIDQxOTQ3LCAxMjIwLCAxMjA4MjgsIAorICAgIDEyODU1NSwgMCwgMCwgMTU3MSwgNDI2MzAsIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIAorICAgIDk4MzkzNSwgMCwgNzgxMjAsIDg4NzcsIDI2OSwgNDQyOSwgNjI3MiwgOTYxNywgMTQ2MCwgNjk1NCwgNzg2NTcsIDQxMTIwLCAKKyAgICA2NTEyMSwgMTA4NjIsIDYwNjAsIDQxMTE5LCA0MTQxNiwgNzQzNTUsIDQxNzMsIDAsIDAsIDAsIDE5MDYsIDkxNzk4NiwgCisgICAgMTE1MzIsIDc0MDczLCAxMjczMzgsIDAsIDE5ODUsIDYyOTYsIDk1ODIsIDkxNzg5NSwgNjQyODcsIDAsIDc4MTE1LCAKKyAgICAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDAsIDc3MDMsIDg4NDAsIDgwMzUsIDAsIDAsIAorICAgIDkyMjMwLCAwLCA2MTI5LCAwLCAxMjg1MjgsIDEyODI2OCwgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAwLCAxMzEzNiwgMCwgMCwgCisgICAgNzAxMDIsIDYzODg2LCAxMTg4ODEsIDk2MDUsIDcxMzA4LCAxMzIyMCwgMTI4Nzc2LCAxMjAyNzQsIDU1MTQsIDAsIDkyMjgsIAorICAgIDAsIDAsIDAsIDUyNDAsIDk4MTEsIDEwMDEyLCAzMDk2LCAwLCAwLCA5ODMzNDMsIDY2Njc2LCA2NTg3MywgMCwgMCwgMCwgCisgICAgOTUwMSwgMCwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMCwgMTQ2NywgMTAxNTgsIDEwMDQwLCAwLCA5NTE5LCAKKyAgICAwLCA5MTc4MTIsIDAsIDExODg5OSwgMTIxOTMsIDAsIDAsIDAsIDAsIDk4MzM0NSwgMTk5MzUsIDAsIDkyMTYyLCA2OTY3NiwgCisgICAgMCwgMCwgMCwgNTI3NSwgMCwgMCwgODYzNywgMCwgMCwgMzc4OSwgNjM4ODAsIDExNDcxLCA0MzU1NCwgNjU4NjIsIDExNDc0LCAKKyAgICA2NjMzMiwgNjY2MDMsIDEyODEzOCwgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MDIsIDk1MzcsIDM5NjEsIDEyMTE1LCAKKyAgICA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIDU1MjI0LCA0OTgxLCAwLCAwLCA2Mzg3NiwgMTE2NjcsIDQyNjg2LCA3Nzk3MywgCisgICAgNDIzNjIsIDY0Njg2LCA0NDk5LCA0MTY0OSwgNzU4OSwgMCwgMCwgMzIzNywgMCwgNjgyMTUsIDkxNzkwNCwgODU0MSwgCisgICAgNzgyOTgsIDcwMDM0LCA0MTg2NiwgMCwgMCwgMCwgMCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIAorICAgIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMCwgCisgICAgNDE2OTksIDEwNzYyLCA0Mzc4MCwgMTI5OTksIDAsIDAsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDAsIDQwMTIsIAorICAgIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgMTI2NTExLCAwLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgNzYxMSwgMCwgCisgICAgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIDc1MTUsIDM4NjgsIAorICAgIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDkxNzkxMSwgMCwgMTI4Njg4LCAzOTg1LCAKKyAgICA5MTc5MTIsIDY1ODYwLCA2MzkyMSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDkxNzgwNSwgMTI4MDksIDY0MDYsIDQ2ODUsIAorICAgIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDAsIDM4NTEsIDgxMzIsIDc0MzI1LCAwLCA5MTc5MDcsIDAsIAorICAgIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMCwgMCwgNDI2NTcsIDkyNDY4LCA3NjQzLCA0MjM3MywgMTE3MTQsIDY3NTg3LCAKKyAgICA0MzU2OCwgOTgzMTc1LCAxMTcxNywgNzY1MCwgMTA1OTQsIDY0OTUxLCA3NjQ3LCA3NjQ5LCAxMjgxNTUsIDc2NDYsIDAsIAorICAgIDc4MDgyLCA5NjUxLCAwLCAzODkxLCAwLCAwLCAyMzM3LCAxNzM1LCA3NDMyNCwgNjc4NjAsIDIzNjMsIDk4MzEzNSwgMCwgCisgICAgNDM1NjEsIDAsIDAsIDc0MTQ2LCAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgCisgICAgMCwgMTIwMzQ3LCA3NzI3LCAwLCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAKKyAgICAxMjUzNCwgMTIxMjQsIDc2OTAsIDAsIDEyNTMzLCA5ODM4NzAsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAwLCA3NDgwMCwgCisgICAgMCwgNjc5NzQsIDExOTgwLCAxMjg2NTAsIDk4Mzc5MiwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCAwLCA3NDU5MiwgCisgICAgODg1MCwgNzQyNzUsIDkyMzgsIDEwNjE3LCA5MTc1NDUsIDAsIDkyNjI1LCAwLCAxMjc5MSwgMCwgMCwgMTI3ODQzLCA0NDQ3LCAKKyAgICA3MzczMiwgMTI3OTMsIDEyOTAwLCA5MjM3NywgMTA5NTAsIDAsIDc4MDg3LCAxMjc5MCwgNDE0MDAsIDExOTEyOCwgNjY2MDcsIAorICAgIDEyNzkyLCA0MjIzMiwgMTk0OTM4LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCA0MTMxMCwgOTgzODYwLCA0MTM5OSwgMCwgCisgICAgMCwgNTUyNTgsIDAsIDEyNjkwLCAwLCAwLCA0MzY3MiwgMTI3ODQwLCA0MTY1MiwgMjk3NCwgOTAxMCwgMTEzMTUsIDAsIAorICAgIDI3OCwgMCwgNDE0MDUsIDExOTI1NCwgMCwgMTAwNzcsIDYzODUzLCA3NDU1NywgNDI1ODYsIDAsIDAsIDYwMDIsIDAsIAorICAgIDQzNTUzLCAwLCA2NzkwMywgMCwgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMCwgMCwgMCwgODY0NiwgOTgzMTg2LCAKKyAgICA3NzgyOSwgNzEzNjAsIDAsIDY0MTMsIDY1NTAsIDAsIDE5NDAsIDAsIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgMTA2NzgsIAorICAgIDEwMDQ0LCAxMjgzMjIsIDAsIDAsIDY4NjU5LCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCA2NjYxNCwgMCwgMCwgMCwgCiAgICAgMTAyOTcsIDAsIDM3NDIsIDAsIDM5NTksIDAsIDAsIDAsIDI0NjcsIDAsIDYwMDMsIDYzODQ0LCA2NjYzLCA4MDQwLCAwLCAKLSAgICA2Mzg0NSwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgMCwgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgCi0gICAgMTE1NDAsIDQzNTQ2LCA2NjkyLCAwLCA0MTA2MCwgMCwgMCwgOTA4MywgMCwgMCwgNzgxNDQsIDE1NTksIDYzODMxLCA5Njc3LCAKLSAgICAxMjAyNjAsIDAsIDY1MjU2LCAwLCA3NDA3MCwgMCwgMCwgMzY1LCAxMjA1NiwgNDMwMjcsIDEyMDQyMywgNDE3MTYsIAorICAgIDQzNzU4LCA0MTgyLCA3ODE3MSwgNDY3NiwgMTIwNTAxLCAwLCAwLCAyNTEwLCAwLCAxMDIwOCwgNzgxNjgsIDkyMzYxLCAKKyAgICAxMTU0MCwgNDM1NDYsIDY2OTIsIDAsIDQxMDYwLCAwLCA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIAorICAgIDk2NzcsIDEyMDI2MCwgMCwgNjUyNTYsIDAsIDc0MDcwLCAwLCAwLCAzNjUsIDEyMDU2LCA0MzAyNywgMTIwNDIzLCA0MTcxNiwgCiAgICAgMTI4MjM2LCAwLCAxMjA0NzIsIDU1MTYsIDI4NDUsIDc3MTcsIDgwMzYsIDQxNzE3LCA3MzgyNywgNTQ0LCAxMjA0NSwgCi0gICAgNjI3OCwgMCwgNTUxNSwgMCwgMCwgMCwgNjUzMzksIDQzMjIxLCA2NTE5NCwgMCwgNTUxNywgMCwgMCwgNzQ4NDEsIDY3ODg0LCAKLSAgICAwLCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAwLCAwLCA2Nzg3OSwgMTI3MTg4LCAxOTAyLCAKLSAgICA2Nzg4NywgOTYzOCwgMTI5NzYsIDAsIDEyNDgzLCAxMjM2OCwgNDE3NjksIDQyNzI2LCA0MTc2NSwgMTI4ODE5LCA2NjY3LCAKLSAgICA2Nzg3NCwgNzU1NiwgNjc4NzgsIDc0MzUxLCAxMTI2NCwgOTg5LCA0MjY3NywgNjc4ODksIDAsIDEzMTEsIDkxNzk2NiwgCi0gICAgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEyODg4MCwgNjkxNywgNzgxNTUsIDAsIDk0OSwgNzgxNjIsIDAsIAotICAgIDYxNDgsIDg2MDUsIDQyMjUzLCA3ODE3NywgMCwgMCwgNDI3MTUsIDAsIDAsIDAsIDYzODcxLCAwLCA0MTc5NiwgMTI2OSwgCi0gICAgNjUzMCwgMCwgNjUwNTcsIDAsIDUxNDQsIDEyMjIxLCA0MjcxNiwgMCwgNDQzMSwgNDMzMSwgMCwgMTI4Njc1LCA0MTgzNCwgCi0gICAgNTI3OSwgMCwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCAxMjg4MjUsIDAsIDc4MTY1LCA2NjAzNiwgMCwgMCwgNjQyOCwgCi0gICAgNDIyNzAsIDAsIDAsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAxMjEzMSwgMCwgOTQ5MywgMCwgNDEwMTQsIAotICAgIDExNzkzLCAwLCAwLCA3NDM5NCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgMCwgMTE5NjMyLCAwLCA2NTYwLCA3MDE2LCA3NDI3NCwgCi0gICAgMCwgNDM1NTYsIDM5MjksIDczOTAwLCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIDEyNzk2LCAKLSAgICAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCi0gICAgMTI3NzUzLCA3NDMxNSwgNzQzNjEsIDgyNTMsIDg4MTcsIDExMzYsIDAsIDQzNTYzLCA5MjIzMiwgMCwgMTk0NzUwLCA3MzkyLCAKLSAgICA4MjMwLCA5MzY1LCAwLCAwLCAwLCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgMTE5ODg1LCAKLSAgICAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIAotICAgIDYzODYzLCA0Mzc5NSwgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgCi0gICAgMTA0NzAsIDAsIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDAsIDAsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIAotICAgIDEyMzMsIDAsIDQ0MDA5LCA3ODI4NCwgNjYzMzgsIDAsIDAsIDE4MzksIDExODc5OSwgMCwgMTA5MjcsIDE3MDEsIDAsIAorICAgIDYyNzgsIDAsIDU1MTUsIDAsIDAsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCAwLCAwLCA3NDg0MSwgCisgICAgNjc4ODQsIDAsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDAsIDAsIDY3ODc5LCAxMjcxODgsIAorICAgIDE5MDIsIDY3ODg3LCA5NjM4LCAxMjk3NiwgMTI2NTQ2LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCA0MjcyNiwgNDE3NjUsIAorICAgIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCA2Nzg4OSwgMCwgMTMxMSwgCisgICAgOTE3OTY2LCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMCwgOTQ5LCAKKyAgICA3ODE2MiwgMCwgNjE0OCwgODYwNSwgNDIyNTMsIDc4MTc3LCAwLCAwLCA0MjcxNSwgMCwgMCwgMCwgNjM4NzEsIDAsIAorICAgIDQxNzk2LCAxMjY5LCA2NTMwLCAwLCA2NTA1NywgMCwgNTE0NCwgMTIyMjEsIDQyNzE2LCAwLCA0NDMxLCA0MzMxLCAKKyAgICA5ODM3MjAsIDEyODY3NSwgNDE4MzQsIDUyNzksIDAsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgMTI4ODI1LCAwLCA3ODE2NSwgCisgICAgNjYwMzYsIDAsIDAsIDY0MjgsIDQyMjcwLCAwLCA5ODM1OTYsIDQzMDU5LCA0MjY2NiwgNTI1NiwgMTA2NywgMjU1LCAKKyAgICAxMjEzMSwgOTgzNzEzLCA5NDkzLCA5ODM5NTksIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAwLCA3NDM5NCwgNDM0NjAsIAorICAgIDEwNjUzLCA0MjcyMywgOTgzODQ1LCAxMTk2MzIsIDAsIDY1NjAsIDcwMTYsIDc0Mjc0LCA5ODM2MTUsIDQzNTU2LCAzOTI5LCAKKyAgICA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgMTE5NTMsIDAsIDY5NzYxLCAKKyAgICA1MTM5LCAzNDYsIDc0MzAzLCA2MzA1LCAxMjc5NSwgNDY3NSwgNTE2OCwgNzg1NTIsIDEyNzc1MywgNzQzMTUsIDc0MzYxLCAKKyAgICA4MjUzLCA4ODE3LCAxMTM2LCAwLCA0MzU2MywgOTIyMzIsIDAsIDE5NDc1MCwgNzM5MiwgODIzMCwgOTM2NSwgMCwgMCwgCisgICAgOTgzNjA3LCAwLCAwLCA0MDQxLCAwLCAyMzU3LCA0MzI0MCwgMTI3ODYsIDIyOSwgMTE5ODg1LCAxMTk4ODQsIDQ0MDA0LCAKKyAgICA3MTQyLCAxMTk4ODEsIDEyMzUwLCA2NTU1NCwgMTE5ODgyLCAxMTk4NzcsIDExOTg3NiwgMTI3ODUsIDYzODYzLCA0Mzc5NSwgCisgICAgNzc3MCwgMTA3MTIsIDY0ODUzLCAxMjY4NiwgMTE4OTE2LCA0MjM3NSwgMCwgMTI3MjM4LCA2NjM1MiwgMTA0NzAsIDAsIAorICAgIDExMDU5LCAxMDc5MSwgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMCwgMTA0MzIsIDEyMDk3LCA1NDUwLCA2NDY5MSwgMTIzMywgMCwgCisgICAgNDQwMDksIDc4Mjg0LCA2NjMzOCwgMCwgMCwgMTgzOSwgMTE4Nzk5LCA5ODMyMTcsIDEwOTI3LCAxNzAxLCA5ODM2NTUsIAogICAgIDIzODgsIDQxNzQ5LCA0MTc2MSwgNTQ1MywgODM2MSwgMTE5ODY1LCA0MTc1OCwgNTQ0NCwgNDE3NjMsIDY0ODg5LCA3MTQzLCAKLSAgICA5MjQ5MywgNzg2NzcsIDAsIDkyNDI5LCA3ODE3NCwgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDAsIDAsIDY1ODEyLCAKLSAgICA5MTc4MzEsIDAsIDQxODI0LCAwLCAxMjAyMDMsIDE5NDgwMCwgMTk0ODAzLCA0MjcwMCwgMTk0ODA1LCAxMjc5ODAsIAorICAgIDkyNDkzLCA3ODY3NywgMCwgOTI0MjksIDc4MTc0LCA2NjQzMiwgODgwMSwgMzA1MywgNDM0MCwgOTgzMDQ0LCAwLCA2NTgxMiwgCisgICAgOTE3ODMxLCAwLCA0MTgyNCwgNjc5ODUsIDEyMDIwMywgMTk0ODAwLCAxOTQ4MDMsIDQyNzAwLCAxOTQ4MDUsIDEyNzk4MCwgCiAgICAgMTk0ODA3LCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMCwgMCwgNDQ5MywgNDMzNiwgMCwgMjMxNCwgNDM2MDIsIDc4ODI2LCAKLSAgICAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDE5NDc5MSwgMCwgMTk0NzkzLCAKLSAgICAxOTEyLCA0MjM4NSwgMTAzMDYsIDEwMzcwLCAwLCAwLCA4ODY3LCAxMDI1MCwgMTAyNTgsIDI3MTIsIDE2MzUsIDc4ODIxLCAKLSAgICAxNDEwLCA5MjY3MSwgMCwgMTE4ODc4LCAwLCAwLCA5OTE5LCAwLCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgNzgxODgsIAotICAgIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIDIwNzksIAotICAgIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDAsIDM2NjgsIDY1NzU0LCA0MzU2MCwgCi0gICAgMTIyMjYsIDAsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgNDM2MTgsIDY1NzQ3LCAKLSAgICAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCA0MjcxNCwgOTk1MSwgCi0gICAgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgNDE4MjAsIDQzMDM4LCAKLSAgICAyMzk1LCAwLCA5OTc2LCAxMjAwNDMsIDEyMDA1MCwgMTIwMDU4LCA2ODIyMCwgMTI4MTQzLCA0MjgwOSwgNDI4MDcsIDAsIAotICAgIDEyMDA0NiwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgMCwgNDE4OTgsIDIzNjAsIDQxNzk0LCA5MTc5NDIsIAotICAgIDAsIDEyNzgxOCwgMCwgMCwgMjQxOCwgMCwgMjQxMSwgMTEzMzYsIDc5OSwgNjM4MjMsIDEwMjc2LCAxMDMwOCwgMTAzNzIsIAotICAgIDkxNzU0MSwgNDE3NzIsIDQyODEzLCAyMzE3LCAxMDI2MCwgMTE4OTgwLCA1NTI4NCwgOTIyMDMsIDAsIDEwMzg0LCAwLCAwLCAKLSAgICAwLCA3NzUzLCAyMzUxLCA2NjU1LCA2NDQ4OSwgMCwgMCwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDAsIDQzNTQ5LCAKLSAgICA0ODU1LCA0MjE1MCwgNjU3MzksIDU0NDEsIDQxODk2LCAxMDI4OCwgMTAzMjAsIDAsIDg1NSwgNzA0NiwgNjEwOSwgNjUwNDUsIAotICAgIDYzODM5LCA3ODE5OCwgMjA0OSwgMTAwOTgsIDAsIDc0MTQ1LCAxMjc5NDMsIDEwMjY0LCAxMDI4MCwgOTE4NCwgMTAzNzYsIAotICAgIDcwMTMsIDQ0NjcsIDAsIDAsIDAsIDQxODg3LCAwLCA0ODYyLCA5NzM1LCA2NTM3LCAxMjA1OTEsIDc0Mjg2LCAzOTE0LCAKLSAgICA5MjE3OCwgMCwgOTA2NSwgMTI5NjEsIDAsIDAsIDkyMjUzLCAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAKLSAgICAxMjA1MTQsIDkxNzk3OCwgNDY5MywgMCwgNDI3MjQsIDAsIDQ2ODgsIDEyMDQ1NCwgMCwgMCwgMTE5NjI5LCA4MjM4LCAKLSAgICAzMTEwLCAxMjAxNjIsIDAsIDEyMDE2MywgNjUyOCwgMTI3NTUzLCA0MzAzNSwgMTIwMTYxLCAyMTgsIDAsIDE1MjAsIDAsIAotICAgIDQ3ODYsIDAsIDQzMjI1LCA0NjAyLCAwLCA3ODE2NywgMTAwODgsIDY1NDgsIDAsIDEyMDE1NiwgNDM5NzgsIDg5ODgsIAotICAgIDg4ODgsIDAsIDAsIDAsIDAsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIDAsIDAsIDk5NzUsIDAsIDExOTkwMiwgNDY4OSwgCi0gICAgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgNzQ0NDEsIDc4ODEwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDA2NSwgCi0gICAgODIwNywgMCwgOTI2MTMsIDEyODAxMSwgMCwgNjYyLCAwLCA5MjQ0LCAxOTQ4NjMsIDAsIDExOTI2MSwgMCwgMCwgMCwgMCwgCi0gICAgNDE5MjksIDAsIDAsIDY2Njc0LCA0MTkyNiwgMTIwNDA4LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCAwLCA1MiwgCi0gICAgMTMxMTgsIDY0NzUsIDAsIDEyMDM0MSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgMCwgMCwgNzQwODUsIDAsIDM5NzgsIAotICAgIDAsIDkxNzk0NSwgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDAsIDY5NzgyLCAKKyAgICAxMTkzMjUsIDE5NDgxMSwgNDI0MzksIDY0NjM4LCA0MjMyNywgNDM1MjgsIDQ0ODksIDcxMzMxLCAwLCAxOTQ3OTMsIDE5MTIsIAorICAgIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDAsIDg4NjcsIDEwMjUwLCAxMDI1OCwgMjcxMiwgMTYzNSwgNzg4MjEsIDE0MTAsIAorICAgIDkyNjcxLCA5ODMyNDQsIDExODg3OCwgMCwgMCwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyNzk3NSwgCisgICAgNzgxODgsIDQ4OTIsIDc0MDE2LCAxOTQ3ODEsIDY1NDIsIDQxOTU3LCAxMjg4NjUsIDU3NzcsIDAsIDc1OSwgNjU3NDksIAorICAgIDIwNzksIDY1MjQ4LCAxMjc4OCwgNjQ0ODcsIDY0NTUyLCAwLCAxMDIyMywgNDIwNjIsIDAsIDAsIDEyNjU3MywgMzY2OCwgCisgICAgNjU3NTQsIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgMTk0Nzg2LCAxOTQ3ODUsIDE5NDc4OCwgCisgICAgNDM2MTgsIDY1NzQ3LCAxMDkzNywgMjk2MiwgMCwgMjMyMSwgMzU4NywgNjU3NDUsIDkyNDM2LCA4OTIxLCA5OTUyLCAwLCAwLCAKKyAgICA0MjcxNCwgOTk1MSwgNDM0MDksIDE5NDc3MCwgMjk0OSwgNjYwMTIsIDE5NDc3NSwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyODU2MywgOTk3NiwgMTIwMDQzLCAxMjAwNTAsIDEyMDA1OCwgNjgyMjAsIDEyODE0MywgCisgICAgNDI4MDksIDQyODA3LCAwLCAxMjAwNDYsIDEwMTk4LCA0MTUwLCA2NDM3MSwgODMxOCwgNDE3OTAsIDY3OTc2LCA0MTg5OCwgCisgICAgMjM2MCwgNDE3OTQsIDkxNzk0MiwgNzEzMTQsIDEyNzgxOCwgMCwgMCwgMjQxOCwgOTgzMDk4LCAyNDExLCAxMTMzNiwgNzk5LCAKKyAgICA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgOTE3NTQxLCA0MTc3MiwgNDI4MTMsIDIzMTcsIDEwMjYwLCAxMTg5ODAsIAorICAgIDU1Mjg0LCA5MjIwMywgMCwgMTAzODQsIDk4MzIxOCwgMCwgMCwgNzc1MywgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCAwLCAKKyAgICA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMCwgMCwgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIAorICAgIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgMCwgCisgICAgNzQxNDUsIDEyNzk0MywgMTAyNjQsIDEwMjgwLCA5MTg0LCAxMDM3NiwgNzAxMywgNDQ2NywgMCwgMCwgMCwgNDE4ODcsIDAsIAorICAgIDQ4NjIsIDk3MzUsIDY1MzcsIDEyMDU5MSwgNzQyODYsIDM5MTQsIDkyMTc4LCA5Mzk3NiwgOTA2NSwgMTI5NjEsIDAsIDAsIAorICAgIDkyMjUzLCAwLCAyODksIDAsIDQ2OTQsIDExNDIwLCA0NjkwLCAwLCAxMjA1MTQsIDkxNzk3OCwgNDY5MywgNzM4OTMsIAorICAgIDQyNzI0LCAwLCA0Njg4LCAxMjA0NTQsIDAsIDAsIDY3OTk0LCA4MjM4LCAzMTEwLCAxMjAxNjIsIDk4Mzg5OSwgMTIwMTYzLCAKKyAgICA2NTI4LCAxMjc1NTMsIDQzMDM1LCA2OTg5OCwgMjE4LCAwLCAxNTIwLCAwLCA0Nzg2LCAwLCA0MzIyNSwgNDYwMiwgMCwgCisgICAgNzgxNjcsIDEwMDg4LCA2NTQ4LCAwLCAxMjAxNTYsIDQzOTc4LCA4OTg4LCA4ODg4LCAwLCAwLCAwLCAwLCAxMDY2NiwgMCwgCisgICAgNzM5MDIsIDY5NzQwLCAwLCAwLCA5OTc1LCAxMjgwMzksIDExOTkwMiwgNDY4OSwgODkzMiwgMCwgNjU1NjAsIDExOTIwOSwgCisgICAgNzQ0NDEsIDc4ODEwLCAwLCAwLCA2Nzk4NywgMCwgMCwgMCwgNjc5ODksIDAsIDEwMDY1LCA4MjA3LCAwLCA5MjYxMywgCisgICAgMTI4MDExLCAwLCA2NjIsIDAsIDkyNDQsIDE5NDg2MywgMCwgMTE5MjYxLCA5ODM0MjAsIDAsIDAsIDAsIDQxOTI5LCAwLCAwLCAKKyAgICA2NjY3NCwgNDE5MjYsIDEyMDQwOCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgCisgICAgNjQ3NSwgMCwgMTIwMzQxLCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAwLCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDAsIAorICAgIDkxNzk0NSwgMTI3ODIzLCAxMTU4MiwgMTIwNzYxLCAxMjI4MSwgMCwgNjU0NCwgMTMyNDEsIDkzOTYxLCA2OTc4MiwgCiAgICAgMTI4NTU3LCAxOTQ4NjAsIDExNzY1LCA2NTI1OCwgMTAzNjksIDAsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIDE1MDAsIAogICAgIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgNzQwMjEsIAotICAgIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA5MjI2NiwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIDkxNzkzMywgCisgICAgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDkyMjY2LCA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzQxOTEsIAogICAgIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgCiAgICAgNjU1MTQsIDAsIDYzOTQwLCAxMjg3MDYsIDY0NTMzLCAxMjAxMjksIDAsIDY3ODQyLCAxMTk5MCwgOTI0MzAsIDYzOTM5LCAKLSAgICA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgMCwgNjk0MywgOTE3OTM0LCA1ODU5LCAwLCAyODU4LCAwLCAKLSAgICA3NDI5NCwgMCwgNjkyMzksIDAsIDExOTAyNywgMTI5OTIsIDI3NTMsIDE5MzYsIDc0NDkxLCA5MjU3NCwgMjc1MSwgMTI2NjIsIAotICAgIDI3NjMsIDg5NTMsIDY0NzAxLCAxMDczMSwgMTI5MjIsIDcwNTIsIDkxNzgzOSwgMCwgMCwgMCwgNjM5MjAsIDc0MTI4LCAKLSAgICAyODU2LCAxMTk5MTAsIDQ3LCAxMTk5MTEsIDEyNjk4NiwgNjU4NTgsIDAsIDAsIDAsIDc4OTksIDAsIDg0MTcsIDQzNzk4LCAKLSAgICA3MDcyLCAwLCAwLCA0MDMzLCAxMjgxNjQsIDQzOTkyLCAwLCAwLCAyMTIsIDY0NjAwLCAxOTAzLCAxMjMyMCwgMCwgMCwgMCwgCi0gICAgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgMCwgMCwgOTUzMSwgMTMxNTUsIAotICAgIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAxMjA0MzIsIDAsIDAsIDAsIAotICAgIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIDAsIDE5NDk0OCwgMCwgMCwgCi0gICAgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgMTI2MjQsIDAsIDE2NzMsIAotICAgIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIDk4MjAsIDAsIAotICAgIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgMCwgMCwgMCwgMCwgMCwgNzQ4MjYsIDY0NzMzLCAwLCAwLCAKLSAgICAzNDkxLCAwLCAwLCAxMjgyMTksIDM1MTQsIDY1NDg1LCAwLCA3NDkyLCAwLCA3NDYwNSwgOTI0ODMsIDc1MTQsIDAsIDAsIAotICAgIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIAotICAgIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDAsIDAsIDY0NTMwLCAwLCA2NDYxMCwgMTE4MDQsIAotICAgIDAsIDcxNDksIDc0NTMsIDAsIDgwMTMsIDAsIDkyMzAxLCAwLCA4ODk1LCA1MjUzLCAwLCA1NDU4LCAwLCAyODY2LCAwLCAKLSAgICAxMjc4NjAsIDY1MTExLCA2ODQzMywgNjcwMCwgMTIwNDg0LCAwLCAwLCAwLCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIAotICAgIDcwNTksIDAsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCA2MzgyNiwgNzg3MDYsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgMCwgCi0gICAgMjg0NCwgMCwgNDE5NzQsIDAsIDEyMTM5LCAwLCAwLCAwLCAzMzU4LCA2NTI5NSwgMCwgMzEwNCwgMTk0NzM0LCAwLCAKLSAgICAxOTQ3NjUsIDAsIDUzMDgsIDAsIDI5MCwgMCwgMCwgMjg2MiwgMjc5MiwgMTk1MDg4LCAwLCAwLCAzMjY4LCA2NjU5MSwgMCwgCi0gICAgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIAotICAgIDY1OTAzLCAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIAotICAgIDY1MjcwLCAwLCAwLCAwLCA5MTEyLCA3NDQzMSwgODYzLCA5NDkwLCAxMTk4OTgsIDkxNzgzNywgNDMzMjMsIDEyMDUxMywgCi0gICAgMTE5ODk3LCA5MDcxLCAxMjczMzMsIDAsIDM2NTQsIDc3ODksIDk2MzcsIDAsIDI1MzUsIDY1NTA0LCA3NjUzLCA0MDk5MywgCi0gICAgMTE5ODk5LCA2NjU4NywgMTk1MDk4LCAwLCA5MjQwMSwgMCwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgCi0gICAgMCwgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAotICAgIDQzMTkzLCAxMDczNywgMzQ2MywgMCwgMCwgNjY2MzMsIDg2OTUsIDQ4MTUsIDExMzIyLCA1ODExLCAxMjM0NSwgNzA0OSwgMCwgCi0gICAgNTE5NSwgMTk1MDgxLCAwLCA2NjYzOSwgMCwgMCwgMCwgMTI4MDQxLCAwLCA5MjM4NSwgMTI2MiwgMCwgNjU2MSwgMTk5MzksIAotICAgIDAsIDAsIDAsIDExOTkwNiwgMCwgMCwgMCwgMCwgMCwgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDAsIDAsIDAsIDE1MDIsIDAsIAotICAgIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCAKLSAgICA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgCi0gICAgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIAotICAgIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgCi0gICAgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIDAsIDAsIDQyNTAzLCAwLCAxMTY1MiwgMCwgMCwgMTE5MjQxLCA5MjY0OSwgMCwgCi0gICAgNTA5NiwgNTA5NSwgMjg2MywgMzQyNCwgOTIyNDQsIDEwNDU0LCA0MjUzMCwgNTA5NCwgMTE5NjM4LCAwLCAxMzE1NiwgMCwgCi0gICAgMTA4MzIsIDUwOTMsIDAsIDAsIDAsIDUwOTIsIDEwNzA4LCAxMTMyNywgMCwgNTA5MSwgMTc2LCAwLCA5MTUzLCA0MTA0LCAKLSAgICA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAxMjI3MiwgOTgzMiwgMTE3NzcsIDAsIDEyNzM3MSwgNDI4ODEsIDAsIAorICAgIDQzMzc1LCA2NTQ0MCwgMjUwNCwgMCwgNzg2NzEsIDY0ODI5LCA5ODM5MDEsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgCisgICAgOTgzMzUzLCA3NDI5NCwgOTgzOTA1LCA2OTIzOSwgMCwgMTE5MDI3LCAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDkyNTc0LCAKKyAgICAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAxMjkyMiwgNzA1MiwgOTE3ODM5LCAwLCAwLCAwLCAKKyAgICA2MzkyMCwgNzQxMjgsIDI4NTYsIDExOTkxMCwgNDcsIDY5OTA4LCAxMjY5ODYsIDY1ODU4LCAwLCAwLCAwLCA3ODk5LCAwLCAKKyAgICA4NDE3LCA0Mzc5OCwgNzA3MiwgMCwgMCwgNDAzMywgMTI4MTY0LCA0Mzk5MiwgMCwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCisgICAgMTIzMjAsIDAsIDAsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCAwLCAwLCAwLCAwLCAxMjkxLCA3NDgyOCwgCisgICAgMCwgMCwgOTUzMSwgMTMxNTUsIDg1MDUsIDY4Mzc5LCAxMjA2MiwgMCwgMCwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCAKKyAgICAxMjA0MzIsIDAsIDAsIDAsIDEyMDQzMywgMCwgNjM5MzUsIDczOTYyLCAxMjA4MDYsIDY0Nzg3LCA0MzUyNCwgMCwgNjQ0MjYsIAorICAgIDAsIDE5NDk0OCwgMCwgMCwgNjU2NjQsIDY2OTMsIDk4NDMsIDAsIDg2NzQsIDExOTg4NywgMTI4ODEyLCA5MjcxNSwgMCwgCisgICAgMTI2MjQsIDAsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAKKyAgICAxMTk1OTgsIDk4MjAsIDAsIDEyMTg3LCAwLCAwLCA1OTg0LCAwLCA0MzMwOCwgNDM5MywgNjc2NTAsIDAsIDAsIDAsIDAsIAorICAgIDc0ODI2LCA2NDczMywgMCwgMCwgMzQ5MSwgMCwgMCwgMTI4MjE5LCAzNTE0LCA2NTQ4NSwgMCwgNzQ5MiwgMCwgNzQ2MDUsIAorICAgIDkyNDgzLCA3NTE0LCA5ODMzNTksIDAsIDE5NDczMSwgNzUwMiwgNzU4NywgNjgzNTMsIDAsIDAsIDYzOTI1LCAwLCA3NjEwLCAKKyAgICAyMTksIDAsIDAsIDY5MiwgNDM1ODgsIDc0NDMzLCA0MTYzNSwgNDMyNDEsIDk2ODgsIDcxNDcsIDk1MzUsIDAsIDkzOTkxLCAKKyAgICAwLCA2NDUzMCwgMCwgNjQ2MTAsIDExODA0LCAwLCA3MTQ5LCA3NDUzLCAwLCA4MDEzLCAwLCA5MjMwMSwgMCwgODg5NSwgCisgICAgNTI1MywgNzAwMjUsIDU0NTgsIDAsIDI4NjYsIDAsIDEyNzg2MCwgNjUxMTEsIDY4NDMzLCA2NzAwLCAxMjA0ODQsIDAsIAorICAgIDEyMDU4MywgMCwgODk2MiwgNzc5NjAsIDk2NDEsIDQzNjk0LCA3MDU5LCA5ODM2NjgsIDAsIDk2MDQsIDc4NzAwLCA3NDQxLCAKKyAgICA2MzgyNiwgNjc5NzAsIDExODk0MSwgNjQzOTIsIDE5NDczNSwgOTgzNjc4LCAyODQ0LCA5ODM5MzIsIDQxOTc0LCAwLCAKKyAgICAxMjEzOSwgNjc5NzEsIDAsIDAsIDMzNTgsIDY1Mjk1LCAwLCAzMTA0LCAxOTQ3MzQsIDAsIDE5NDc2NSwgOTgzMjI3LCAKKyAgICA1MzA4LCAwLCAyOTAsIDAsIDAsIDI4NjIsIDI3OTIsIDE5NTA4OCwgOTgzMDcwLCAwLCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgCisgICAgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgMTgxNCwgMCwgMTAyNDAsIDkyMzM4LCA3NDMwNSwgMCwgNzQ1MjgsIDY1OTAzLCAKKyAgICAwLCA0MjY0NiwgNzYwNiwgMjU5MSwgMjgzNywgNDM0MSwgNzc5NTYsIDY0NDgyLCAxMjczMzcsIDgxNjMsIDY1MjcwLCAwLCAKKyAgICA3NzkzMiwgMCwgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgMTE5ODk4LCAxMjgzNDksIDQzMzIzLCAxMjA1MTMsIDExOTg5NywgCisgICAgOTA3MSwgMTI3MzMzLCAwLCAzNjU0LCA3Nzg5LCA5NjM3LCAwLCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDExOTg5OSwgCisgICAgNjY1ODcsIDE5NTA5OCwgMCwgOTI0MDEsIDk4Mzg4NSwgMTEwMDYsIDEyOTI3LCA3ODA3LCA4MDczLCAwLCAxMDYyOSwgMCwgCisgICAgNzQwODgsIDMwNTYsIDEwODIzLCAxMjg3OTcsIDEyNzMyNywgODc2MiwgMTA1MDgsIDY5Njg5LCA3Mzc3MCwgNDM5NjksIAorICAgIDQzMTkzLCAxMDczNywgMzQ2MywgOTgzMDY1LCAwLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIDU4MTEsIDEyMzQ1LCAKKyAgICA3MDQ5LCAxMTk5MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDAsIDAsIDAsIDEyODA0MSwgMCwgOTIzODUsIDEyNjIsIDAsIAorICAgIDY1NjEsIDE5OTM5LCAwLCAwLCAxMjg1MzUsIDExOTkwNiwgMCwgMCwgOTgzMDk3LCAwLCA5ODM2NTgsIDExOTkwNywgCisgICAgNjQ2MTIsIDExOTkxLCAwLCAwLCAwLCAxNTAyLCA5MTc1NjgsIDAsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIAorICAgIDg0MzAsIDAsIDc0MTMyLCAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAwLCA1MjU0LCAxMjA3NDIsIDc3MjQsIDc0Mzg4LCAKKyAgICA2ODM3NSwgMTA3OTYsIDUxMjksIDAsIDAsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgCisgICAgMTE3MjEsIDAsIDQ3OTgsIDAsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgCisgICAgNjg2MTAsIDAsIDY4NjI2LCA4OTQsIDMwMCwgOTE3ODEzLCAxMjMwNiwgNjYyMzUsIDgwMDQsIDAsIDAsIDI1NjIsIAorICAgIDEyNjU1NSwgMCwgNDI1MDMsIDAsIDExNjUyLCAwLCAwLCAxMTkyNDEsIDY0Njk5LCAxMjY1NjksIDUwOTYsIDUwOTUsIAorICAgIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDExOTYzOCwgMCwgMTMxNTYsIDAsIDEwODMyLCA1MDkzLCAKKyAgICAwLCA2OTg1MiwgMCwgNTA5MiwgMTA3MDgsIDExMzI3LCAwLCA1MDkxLCAxNzYsIDAsIDkxNTMsIDQxMDQsIDc4NTk5LCAKKyAgICA3ODYwMSwgMTIxNSwgNDI3MTIsIDU3NDQsIDEyMjcyLCA5ODMyLCAxMTc3NywgNzEyOTksIDEyNzM3MSwgNDI4ODEsIDAsIAogICAgIDg5ODAsIDExODk4OCwgNjc4NjEsIDg4NDQsIDcyMDksIDAsIDAsIDQyNzgsIDAsIDAsIDE5NDc4OSwgMCwgOTA3NCwgNDM0OCwgCi0gICAgMCwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDAsIDAsIDAsIDc0NDIzLCAwLCA1ODYsIAotICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMCwgNjU0NjgsIDAsIDY1NzMxLCAwLCAxMjcxNzksIDM2MjEsIDEyMDQ3MywgNjY2NjYsIAotICAgIDY0MjExLCAwLCA2NTYyLCAxMjkyOCwgMCwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAwLCAwLCAxNzE0LCA3NDQwNiwgCi0gICAgMTI3ODMxLCAwLCAwLCAwLCA2NjIyNSwgMCwgMCwgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAwLCAxMDI5MSwgCi0gICAgMTAzMjMsIDI4MjYsIDAsIDAsIDAsIDQyMDA4LCA5NzA4LCA0MjcxMCwgMCwgNDIwMTEsIDQxOTk5LCA5MjE2NCwgMTIyMDYsIAotICAgIDU4MzksIDE3MDIsIDEyNDAsIDc0MDY1LCA2Mjg2LCAwLCAwLCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDAsIDAsIDY1NTg4LCAKLSAgICAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIAotICAgIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMCwgMCwgCi0gICAgMCwgMCwgNzg3NTcsIDAsIDAsIDAsIDAsIDk5OTQsIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCAKLSAgICA0MTY3NSwgMCwgMjc2NSwgMCwgMCwgMCwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIAotICAgIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCAwLCA3Nzk4NiwgCi0gICAgMCwgNjkzMSwgNjk3MjIsIDY0MzU1LCA3MTc3LCAxMjA1MzAsIDAsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIAotICAgIDAsIDY4MDYsIDY5OTIsIDQyMDE5LCAwLCA0MTI5MCwgMCwgNzUwLCAwLCAwLCAxMDE2MywgNjM5MTMsIDc0MDY2LCA3MDMyLCAKLSAgICA1OTU0LCA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIAotICAgIDEzMTY1LCA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCAKLSAgICA5MjIyMiwgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgCi0gICAgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgMCwgMCwgNjQ4MDEsIDAsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCAKLSAgICA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgNTk1MiwgMTI4MSwgMCwgMCwgMCwgMTA2NzcsIDYwNCwgNDEwOTcsIAotICAgIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAwLCAwLCAKLSAgICA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIDkxNzk1NiwgCi0gICAgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCAwLCA3Mzc1MiwgMCwgNjQ4NzIsIDkyMzQwLCAxMzMxLCAwLCAwLCAwLCAKLSAgICAxMjcwOCwgMCwgNTA5MCwgNTA4OSwgMCwgMCwgMTE5MTA5LCAwLCAxMjg2ODEsIDMxOSwgMTE4ODQ3LCA0MzQ3OSwgOTQ3NywgCi0gICAgMCwgMCwgNTA4NywgOTIzMjUsIDc2NDAsIDk2LCA1MDg2LCAwLCA5MjM3OSwgMCwgNTA4NSwgNjQyODYsIDkyNjY1LCAwLCAKLSAgICA0MTQyMiwgMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgMCwgMCwgNTAxMSwgMCwgMCwgMCwgMCwgMTI3MTY1LCAxMjcyNDEsIAotICAgIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIDExODkyMywgNzM3MzQsIDAsIDEwOTM5LCAKLSAgICA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgMTE5OTAzLCA0NTM0LCA0MTI3MCwgMTI4ODc2LCAwLCA2NTU3NCwgMCwgOTIyNCwgCi0gICAgMCwgMzY3MSwgODk3NiwgMCwgMCwgNDEyNzUsIDYzNzIsIDEyODA4NCwgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgMCwgCi0gICAgNDEyNzMsIDAsIDAsIDY3MjgsIDAsIDk3MTUsIDAsIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgMTE4OTE5LCA0MiwgCi0gICAgMCwgNDM2ODgsIDAsIDAsIDc0NTgsIDAsIDAsIDY1Mzg1LCAxMTk5MDAsIDAsIDExOTU4LCAwLCA5MTc4MjIsIDAsIDYyNTQsIAotICAgIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDAsIDAsIDAsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCAKLSAgICA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCAKLSAgICA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCAKLSAgICAxMTk5MDksIDc0MjQzLCAwLCAzODA1LCAwLCAxOTQ1NjUsIDQ0MDAxLCA0MTAwOCwgMCwgNjMwNywgMTk5NDksIDAsIDc1NDQsIAotICAgIDAsIDQzNDY5LCAwLCAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgCi0gICAgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIAotICAgIDk2MzAsIDkyNjMzLCAwLCAwLCA1NTA2LCAwLCAxOTExLCA2NjY1MiwgMCwgOTk2MSwgODg0NSwgNjY2OTgsIDAsIDEwNzkyLCAKLSAgICA4ODg5LCAwLCAyMDk4LCAwLCA2NDc1MSwgMCwgNjY2MjIsIDAsIDAsIDc0MzY0LCAwLCAwLCAwLCA3NDM2NSwgNzU1MiwgMCwgCi0gICAgMCwgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCi0gICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCAwLCAwLCAwLCAKLSAgICA0MzU3LCAwLCAxMTk4MzcsIDAsIDc0MjMzLCA5OTY3LCAxMTk4NTIsIDQyODYwLCAxMTk4MzgsIDEwOTQxLCA2NTcyMSwgCi0gICAgNjk2MiwgMCwgMCwgMTE5MzI0LCAwLCAxMTAxNCwgMTI3OTcyLCA4OTQyLCAxMjAwMCwgNjkyMjQsIDkyMjY3LCAxMjg1MzYsIAotICAgIDExOTc0LCA5MjIxMywgNDI3NzIsIDEyNzUxOCwgMTE2NTAsIDUwMTMsIDkyNjYzLCAxMjg2NzcsIDY2MjEwLCAxMTg5MTQsIAotICAgIDY2MTMsIDkyNDc2LCAwLCA0MzgxOSwgMCwgMCwgNjQ3MTQsIDAsIDAsIDEyMTYyLCAxMjEyMCwgNDM0NzYsIDAsIDExMDI0LCAKLSAgICA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgCi0gICAgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIAotICAgIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgCi0gICAgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgCi0gICAgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCAKLSAgICA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIAotICAgIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAKLSAgICAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIAotICAgIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIAotICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCAwLCA3NDQzOSwgMjAzOSwgCi0gICAgMCwgNzQ0NiwgMTY4NCwgNjM5NzksIDEwOTc0LCA0NTgsIDEyMDYyMCwgMCwgNjk3OTEsIDEyNzE2MSwgMTE5MTYsIDY1MDE2LCAKLSAgICAwLCA2OTY3MSwgNDIxMTUsIDAsIDEyMjg4LCA3ODA1NywgMCwgMTQ5MywgNDIxMTEsIDc1NTMsIDQwOTcsIDEyODE5OSwgCi0gICAgMTMwODAsIDAsIDY1ODA4LCA2NjEwLCA2MDMwLCA4MDU5LCA3NTA4LCAxMzEzMSwgMCwgMCwgMCwgODc5NCwgNDEyNzgsIAotICAgIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIAotICAgIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIAotICAgIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCAwLCAxMjgyOTUsIDAsIDc0MDUsIDEwMTA1LCAKLSAgICA2NTgxMCwgMCwgNDE2MzIsIDc0OTMsIDU1MjkwLCAwLCA0MTYyMiwgMCwgMCwgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgCi0gICAgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDAsIDAsIDM2MTIsIDAsIDY0Mzc2LCAwLCA1Mzg5LCA5MjU5NywgCi0gICAgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCAKLSAgICA0NDAzLCAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIAotICAgIDc1OTgsIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgCi0gICAgNjM5NTIsIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAKLSAgICAxMDI4NywgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgCi0gICAgMCwgNzg4ODksIDAsIDAsIDEyODgwOSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCAwLCAwLCA4NjQ4LCAwLCA2NzQxLCAKLSAgICA0MzA0NywgMCwgMTMxODAsIDEyODUxNywgNDE4LCA5MTc5NzIsIDY0NDk1LCAxMDI5NSwgMTAzMjcsIDEwMzkxLCA0MTc1MiwgCi0gICAgNzQzMzksIDg2NDEsIDQxNDQ5LCAwLCA3NDEwMCwgMCwgMTA5MTEsIDY5NDIsIDAsIDEwMjQsIDQyODQ5LCA0MTc1MSwgCi0gICAgNjk3NzYsIDg5NDEsIDAsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgMTE0MzcsIDQzNzQxLCAKLSAgICA5MjE2MywgMTIwNzAwLCA2Mzk2NywgMCwgNDEyMDYsIDEyMDcyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAwLCAxMTY4MCwgCi0gICAgOTI2MTksIDExNjg2LCA3ODU0NCwgNjUyMjQsIDQ1NjUsIDQ2NTUsIDExOTU1MywgMCwgOTIxODMsIDY0NTIzLCAxMDM0MywgCi0gICAgMTA0MDcsIDAsIDY2NjcxLCAxMTQ2NiwgMCwgMTI4MDAzLCA0Mjg5MCwgMCwgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCAKLSAgICA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgCi0gICAgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgNDI1NjQsIDAsIDE1ODIsIDAsIDU1MDgsIDAsIAotICAgIDAsIDAsIDEwODAxLCAwLCA5MjM1NCwgMCwgNzE3MywgNDk2LCAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCAKLSAgICA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCAKLSAgICA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgOTE3OTc2LCA5OTY0LCAwLCA0MTYxMSwgNDY0MiwgNjY1NzQsIAotICAgIDExNTU2LCA5MTc5ODIsIDAsIDc4ODU3LCA0MjA4OSwgNzg4NTUsIDkwMDgsIDAsIDAsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgCi0gICAgNzc5MjQsIDQyNTEzLCAwLCA0Mjg0MiwgNzM5ODUsIDY1Mjg1LCAxMTg5NzQsIDEyNzAwMywgMCwgMCwgMCwgMCwgMTEzMzUsIAotICAgIDY0MDY5LCA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDAsIDY0Mzg0LCA5MjE2NywgMTE5MTU4LCAKLSAgICAzMDIxLCA0MjAwNCwgMCwgMCwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAwLCAwLCAwLCAxMjgxOTMsIDY1MjA0LCAwLCAKLSAgICA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgMTI3ODgwLCA2ODM5OSwgCi0gICAgNDM5OTgsIDExMzYwLCAwLCAwLCAwLCAxMTg4MjYsIDQyMTQ5LCAwLCAwLCAwLCA2NDk0MSwgNzc5MTksIDEyMDQyMSwgCi0gICAgMTI4MDc3LCAwLCA1NTI0NywgNDExMCwgNjYwMDUsIDY5NTksIDEwOTI5LCAxMTkxMTAsIDAsIDY2NzAzLCA3NzkyMSwgCi0gICAgODYxNywgNDE5ODIsIDYwMjUsIDY5MjQyLCAwLCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDAsIDEwMTE3LCAwLCAKKyAgICAwLCA2NTU1OCwgNjU5NDYsIDgxMTMsIDcwODcsIDUyNTUsIDE3ODYsIDY2MSwgMCwgMCwgMCwgNzQ0MjMsIDcxMzQ1LCA1ODYsIAorICAgIDc0NDE0LCA2NDM1OSwgMTI2NywgMTI4MjY5LCA2NTQ2OCwgMCwgNjU3MzEsIDAsIDEyNzE3OSwgMzYyMSwgMTIwNDczLCAKKyAgICA2NjY2NiwgNjQyMTEsIDAsIDY1NjIsIDEyOTI4LCAwLCAxMjI4LCA2NTQ5MCwgMTEzODMsIDAsIDAsIDAsIDE3MTQsIAorICAgIDc0NDA2LCAxMjc4MzEsIDAsIDk4MzkxMiwgMCwgNjYyMjUsIDAsIDAsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIDEyMDY5NCwgCisgICAgMCwgMTAyOTEsIDEwMzIzLCAyODI2LCAwLCAwLCAwLCA0MjAwOCwgOTcwOCwgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgCisgICAgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgMCwgOTgzOTYwLCA2NTgzMywgNzc4NDgsIDAsIAorICAgIDE3NjUsIDAsIDAsIDY1NTg4LCAwLCAwLCAwLCA4NDAxLCAwLCA0MjAxNCwgMCwgNzAzMCwgMTk0NzA0LCAxMDQ3OSwgCisgICAgNjQ5NTksIDI4NTIsIDAsIDAsIDAsIDAsIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAwLCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKKyAgICAxMDE0NywgMTI5MzUsIDEyNzU2OCwgMTI2NDgzLCAwLCAwLCAwLCA3ODc1NywgMCwgMCwgMCwgMCwgOTk5NCwgMTI0NjcsIAorICAgIDI4NjQsIDY0NzE5LCAxMTQ4LCAxMDQzNSwgMTE0NjIsIDQxNjc1LCA3MDg0LCAyNzY1LCAwLCA0MzM4MiwgMCwgMTIwNzE5LCAKKyAgICAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDAsIDAsIDc3OTg4LCAyNjMsIAorICAgIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIDc4Mzg3LCA5ODM3MzMsIDc3OTg2LCAwLCA2OTMxLCA2OTcyMiwgNjQzNTUsIAorICAgIDcxNzcsIDcwMTA1LCAwLCAwLCAwLCA0MjYyLCAxMDI4NSwgMTA3MjIsIDQyMDIwLCAxMjY1NzUsIDY4MDYsIDY5OTIsIAorICAgIDQyMDE5LCAwLCA0MTI5MCwgOTgzNzA3LCA3NTAsIDAsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKKyAgICA2NDkzMSwgNDMxNCwgMCwgMTk4LCA2ODQ1MywgNzMwLCAxMjAwOTQsIDYzOTA3LCA3Nzk5MywgNzg4OTEsIDEzMTY1LCAKKyAgICA3MTA3LCA3NDE3MSwgNDI4MDQsIDY3OCwgODI0MCwgNzgwMTUsIDEyODc4NCwgNDEzNzgsIDExMDA4LCA2OTM4LCA3MDAyNiwgCisgICAgOTI2MzcsIDIwOTcsIDY2MjQ2LCAxMjA1NjAsIDAsIDAsIDAsIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIAorICAgIDQxNDcwLCA2NDgwNSwgMCwgMCwgMTI4MjE1LCA2NDgwMSwgMCwgNDk3LCAxMjEwMCwgNTk1MywgOTI2NjcsIDc3OTYsIAorICAgIDY5NjY5LCA0MzI1NCwgNzM4MzEsIDAsIDEwMjkzLCA1OTUyLCAxMjgxLCA0Mzc0NywgMCwgMCwgMTA2NzcsIDYwNCwgCisgICAgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAzNDI1LCAxMjc0ODgsIDAsIDI4MzYsIDAsIDAsIDk3MDcsIDAsIDQzMjAyLCAKKyAgICAwLCAwLCA2NTE5OSwgMTczOCwgOTE3ODE4LCAxMjgxNTgsIDI4MzIsIDkyNzAyLCA5NjcwLCAxMjkzNywgMCwgNjYzNzQsIAorICAgIDkxNzk1NiwgMCwgMjgyMiwgNjgxMjIsIDQ0MzYsIDkyNTE5LCA5ODM3MTQsIDczNzUyLCAwLCA2NDg3MiwgOTIzNDAsIAorICAgIDEzMzEsIDAsIDAsIDAsIDEyNzA4LCAwLCA1MDkwLCA1MDg5LCAxMjc5NzcsIDAsIDExOTEwOSwgMCwgMTI4NjgxLCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDAsIDUwODcsIDkyMzI1LCA3NjQwLCA5NiwgNTA4NiwgMCwgOTIzNzksIDAsIAorICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMCwgNDE0MjIsIDAsIDExOTkwMSwgNDIzNTYsIDM3NzIsIDAsIDAsIDUwMTEsIDAsIDAsIAorICAgIDEyNjU4NywgMCwgMTI3MTY1LCAxMjcyNDEsIDY2NzcsIDc2MDEsIDAsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDAsIAorICAgIDExODkyMywgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAKKyAgICAxMjg4NzYsIDAsIDY1NTc0LCAwLCA5MjI0LCA2OTg1MywgMzY3MSwgODk3NiwgMTI2NDc0LCAwLCA0MTI3NSwgNjM3MiwgCisgICAgMTI4MDg0LCA1NTI2MSwgNzk2MywgNjM3MSwgMCwgNTY4LCAwLCA0MTI3MywgOTgzNzIxLCAwLCA2NzI4LCAwLCA5NzE1LCAwLCAKKyAgICA4MjU4LCAxMTc1MywgNzQ4MjAsIDAsIDk2MDIsIDExODkxOSwgNDIsIDAsIDQzNjg4LCAwLCAwLCA3NDU4LCAwLCAwLCAKKyAgICA2NTM4NSwgMTE5OTAwLCAwLCAxMTk1OCwgMCwgOTE3ODIyLCAwLCA2MjU0LCA0MjcyMSwgNjYzMzYsIDgwNDUsIDExNTUwLCAKKyAgICAwLCAwLCA5ODM1OTcsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCisgICAgNTU1OCwgODg3OCwgMTI4MTM2LCAxOTUwMzYsIDc0NTEsIDY3MDYsIDEwMTQ2LCAwLCA5MDg2LCA2NDU2NiwgMCwgNjQ1ODQsIAorICAgIDc0MzcsIDc0NTQsIDEyNTk0LCAxMjg2OTAsIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIDAsIDM4MDUsIAorICAgIDAsIDE5NDU2NSwgNDQwMDEsIDQxMDA4LCAwLCA2MzA3LCAxOTk0OSwgOTgzNzgxLCA3NTQ0LCA5ODMwNDUsIDQzNDY5LCAwLCAKKyAgICAwLCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCAxMTkxMTMsIDc2MDIsIDY0NzI5LCAwLCA0MzUyMSwgMCwgNDIzMDIsIDQzNzExLCAKKyAgICA0MzUyMywgNDE0NDcsIDU1NTksIDAsIDg3MDQsIDIzOTcsIDU1NTYsIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDkyNjMzLCAwLCAKKyAgICA5Mzk5OCwgNTUwNiwgMCwgMTkxMSwgNjY2NTIsIDAsIDk5NjEsIDg4NDUsIDY2Njk4LCAwLCAxMDc5MiwgODg4OSwgMCwgCisgICAgMjA5OCwgMCwgNjQ3NTEsIDAsIDY2NjIyLCAwLCAwLCA3NDM2NCwgMCwgMCwgOTgzNzk2LCA3NDM2NSwgNzU1MiwgMCwgMCwgCisgICAgNjUzODQsIDcyMjMsIDQ1NTksIDAsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNjQ1MDEsIDEyMTAsIDE5NTA3NywgCisgICAgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDAsIDAsIDAsIDM4LCA4NTMzLCA2NjY2OSwgMTE5MTI0LCA5ODMyODUsIAorICAgIDk4Mzc4MywgMCwgNDM1NywgMCwgMTE5ODM3LCA5MTc4NjMsIDc0MjMzLCA5OTY3LCA3ODg4NCwgNDI4NjAsIDExOTgzOCwgCisgICAgMTA5NDEsIDY1NzIxLCA2OTYyLCAwLCAwLCAxMTkzMjQsIDAsIDExMDE0LCAxMjc5NzIsIDg5NDIsIDEyMDAwLCA2OTIyNCwgCisgICAgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDkyMjEzLCA0Mjc3MiwgMTI3NTE4LCAxMTY1MCwgNTAxMywgOTI2NjMsIDEyNjU4MywgCisgICAgNjYyMTAsIDExODkxNCwgNjYxMywgOTI0NzYsIDAsIDQzODE5LCA5ODM3NjEsIDAsIDY0NzE0LCAwLCAwLCAxMjE2MiwgCisgICAgMTIxMjAsIDQzNDc2LCA5ODM3NTcsIDExMDI0LCA3NDgxMSwgNjYyMjgsIDEwNTYzLCAwLCAxMjcxOTYsIDQzNTIyLCAyNDYyLCAKKyAgICAwLCAxODM3LCAwLCA2Mzk3MiwgNjk1NywgMCwgMTIwNTU5LCA0OTUyLCA2NTcxOCwgNjU4MjcsIDU1MDQsIDY1NzIwLCAKKyAgICA2NTcxNCwgNjU3MTUsIDY1NzE2LCAwLCAxMjcwMDUsIDEyNzExOSwgMzEwOSwgNjM5NzUsIDc0MDI4LCAwLCA4MTA3LCAKKyAgICAxMTkyMzQsIDExMjcsIDQ1NSwgMCwgNjM5NjgsIDEyNzkyNCwgMzQ4MywgMTE5NTkzLCAxOTg5LCAwLCA2OTY3OCwgOTEwNCwgCisgICAgMzUwMywgNjUzNzUsIDkyNTA5LCA2Njk0LCA0MjYzMywgMTg2NCwgMCwgNzQzMDYsIDQxNDQ2LCAyNTQwLCA3NzM2LCAwLCAKKyAgICA3NDA2NCwgMCwgMTA1MjEsIDAsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKKyAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI4ODM5LCAxMzQ3LCA5NjMxLCAKKyAgICA3NDQ0NCwgMCwgMCwgMCwgMCwgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCAwLCA0MzMxNCwgMCwgMCwgNDA0MiwgMTE0NzgsIAorICAgIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIDg1NDksIDEwODYxLCAwLCA2Mzk3NiwgMCwgNjg2MjMsIDAsIDc0NTg1LCAKKyAgICA0MTM5MSwgMCwgOTE3OTAzLCAzNzYsIDY5ODcsIDkyMjEsIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCAKKyAgICA0MTg2OSwgMTI2MTksIDAsIDEwMTU0LCA5ODMwNDMsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIAorICAgIDQ1OCwgMTIwNjIwLCAwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgOTgzMTMzLCAKKyAgICAxMjI4OCwgNzgwNTcsIDAsIDE0OTMsIDQyMTExLCA3NTUzLCA0MDk3LCAxMjgxOTksIDEzMDgwLCAwLCA2NTgwOCwgNjYxMCwgCisgICAgNjAzMCwgODA1OSwgNzUwOCwgMTMxMzEsIDAsIDk4MzQyMywgMCwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgMTI4MTkyLCAKKyAgICA0MTI3NywgNjQ2NTgsIDAsIDY0MzgwLCA2NjI1LCA3NDM1NCwgMTk5MDQsIDAsIDAsIDAsIDY1MzcxLCA3MDc4LCAwLCA4MzMsIAorICAgIDAsIDYzNjksIDAsIDEwOTc5LCA0MTk1MywgMCwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIAorICAgIDk4NDIsIDY3MjAsIDY1NzQ0LCAwLCA5ODM1OTIsIDEyODI5NSwgMCwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgCisgICAgNzQ5MywgNTUyOTAsIDAsIDQxNjIyLCAwLCAwLCAxMTk1NTYsIDc0NTg0LCA3NjMyLCA5NzE2LCAxOTk1NCwgOTgwNSwgCisgICAgNTk5MCwgOTAwLCAwLCA2Mzk1NywgMCwgMCwgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIAorICAgIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAwLCAwLCA2OTU2LCA0NDAzLCAKKyAgICAxOTk2MiwgNjU1NTksIDMyOTksIDAsIDkxNzU2NiwgMTE5MTI3LCA5MDAyLCAwLCA3NDM3MiwgNzQyMzYsIDg0NzgsIDc1OTgsIAorICAgIDU0NiwgNDI0NjksIDY1NTY5LCAxOTE4LCA5NTQyLCA0NzIsIDc3MTYsIDEwMzE5LCAxMDM4MywgNjk5NiwgMCwgNjM5NTIsIAorICAgIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAxMTg4OTQsIDAsIDY5Nzk2LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgCisgICAgNjg0LCA0MzUyNSwgMCwgMjg1NCwgMTE5NTg2LCA0NTkyLCA2NTc1NSwgMCwgOTIyNTYsIDExOTYzLCA0MzYyMCwgMCwgCisgICAgNzgyNDksIDAsIDEyODU1MSwgMTI4ODA5LCA5ODgxLCA0MzExNSwgNjU3NTcsIDM0MTUsIDExOTEzMSwgMCwgODY0OCwgMCwgCisgICAgNjc0MSwgNDMwNDcsIDAsIDEzMTgwLCAxMjg1MTcsIDQxOCwgOTE3OTcyLCA2NDQ5NSwgMTAyOTUsIDEwMzI3LCAxMDM5MSwgCisgICAgNDE3NTIsIDc0MzM5LCA4NjQxLCA0MTQ0OSwgMCwgNzQxMDAsIDAsIDEwOTExLCA2OTQyLCAwLCAxMDI0LCA0Mjg0OSwgCisgICAgNDE3NTEsIDY5Nzc2LCA4OTQxLCA5ODM1NTYsIDQ1NTQsIDAsIDkwMjMsIDExNjg1LCAwLCA5OTI4LCA3ODYxNywgMCwgCisgICAgMTE0MzcsIDQzNzQxLCA5MjE2MywgMTIwNzAwLCA2Mzk2NywgOTgzNDc1LCA0MTIwNiwgMTIwNzI0LCA5MDQ5LCA0MTE4NSwgCisgICAgNDMxNjYsIDAsIDExNjgwLCA5MjYxOSwgMTE2ODYsIDc4NTQ0LCA2NTIyNCwgNDU2NSwgNDY1NSwgMTE5NTUzLCAwLCAKKyAgICA5MjE4MywgNjQ1MjMsIDEwMzQzLCAxMDQwNywgMCwgNjY2NzEsIDExNDY2LCAwLCAxMjgwMDMsIDQyODkwLCA3NDAxMywgCisgICAgMTIwNTAsIDY4MjAxLCAyODYwLCAwLCAwLCAwLCA0Mjc5MiwgNTc0MywgMTA0MjQsIDEyMDY1LCA0Mjg3MiwgMCwgOTIzNDIsIAorICAgIDAsIDg4NzUsIDAsIDAsIDkxNzk5MSwgNzUzMSwgMTI4NDcsIDI0MTMsIDAsIDc4NjM1LCA5NjIsIDAsIDEyODU1LCA0MTE5NiwgCisgICAgNDI1NjQsIDAsIDE1ODIsIDk4MzcwNiwgNTUwOCwgMCwgMCwgMCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMCwgNzE3MywgNDk2LCAKKyAgICAxMDQzOSwgNDMxMywgNjQ2MDcsIDY5NjM4LCA3ODYwLCAwLCA5MDYsIDQyNzkzLCAyODQyLCA2NDA1LCA2NDcyMiwgMTMxMzIsIAorICAgIDc5OCwgNjQ2OTQsIDEyODAxLCA4NDA2LCAxMTUzLCA5MjE3MywgNjQ3ODgsIDAsIDgwNTQsIDkxNzQsIDEyODY1MiwgCisgICAgOTE3OTc2LCA5OTY0LCA3NDQwOSwgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgOTE3OTgyLCAwLCA3ODg1NywgNDIwODksIAorICAgIDc4ODU1LCA5MDA4LCAwLCAxMjY1OTIsIDE5NTA5NiwgNDIwNzksIDkxNzk4MSwgNzc5MjQsIDQyNTEzLCA3NzkyNywgCisgICAgNDI4NDIsIDczOTg1LCA2NTI4NSwgMTE4OTc0LCAxMjcwMDMsIDk4MzY5MywgMCwgMCwgMCwgMTEzMzUsIDY0MDY5LCAKKyAgICA0MjA5MywgMzkyMCwgMCwgMCwgMCwgMCwgNDU4MCwgNDE5NjcsIDk4MzcyMywgNjQzODQsIDkyMTY3LCA5Mzk4NCwgMzAyMSwgCisgICAgNDIwMDQsIDAsIDAsIDQyMzE3LCA0MTk5OCwgMCwgNjk0NiwgMCwgMCwgMCwgMTI4MTkzLCA2NTIwNCwgMCwgNjgxMTMsIAorICAgIDQyNjkwLCA5ODgwLCA0MjAxMCwgNzQ4MjQsIDY0NTg5LCAxMDExMSwgNjQ4NzUsIDEyNzg4MCwgNjgzOTksIDQzOTk4LCAKKyAgICAxMTM2MCwgMCwgMCwgMCwgMTE4ODI2LCA0MjE0OSwgMCwgMCwgMCwgNjQ5NDEsIDc3OTE5LCAxMjA0MjEsIDEyODA3NywgMCwgCisgICAgNTUyNDcsIDQxMTAsIDY2MDA1LCA2OTU5LCAxMDkyOSwgMTE5MTEwLCAwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCAKKyAgICA2MDI1LCA2OTI0MiwgOTgzMTc2LCAwLCAwLCAwLCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM2OCwgMTAxMTcsIDk4MzE2OSwgCiAgICAgOTIyOTcsIDQxNjM2LCAwLCAwLCAxMjA2ODEsIDgzMDEsIDAsIDAsIDE4NywgMCwgNjU2NjksIDEyODMzOSwgNDk2MywgMCwgCi0gICAgMTI3NTE3LCAwLCA4OTY0LCA2NTY3NiwgNjU3ODUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAotICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMCwgNjU4ODIsIDc4ODQ5LCA0MTc2MCwgCi0gICAgMTE4OSwgOTA1LCA0ODAsIDEwOTg1LCA0MTczMywgNjc4NTksIDk2MjksIDY3NDIsIDE3NDUsIDQzNjI1LCA3MzgzNSwgCi0gICAgNzg4OCwgMCwgMzk4MCwgMCwgNDI2NTYsIDQxNTA3LCA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIAotICAgIDY5MjE4LCA2MjM2LCAwLCAwLCAxMDUwNSwgMCwgMTI4NTEsIDExODk0OCwgMzQ4LCA1NDc0LCAxMjg4NDMsIDMxMDMsIDAsIAotICAgIDQxNzUzLCAxMjg1NDAsIDAsIDAsIDc4ODQ0LCA3ODg0NSwgNDE3MzksIDc4ODQzLCA0MjUxNSwgMTA5MzEsIDQxNzU2LCAKLSAgICA0MzM0NywgNDI1NjAsIDUzOTEsIDQxNzQ2LCAxMTkxNDcsIDkyNTkxLCA0MTI1OSwgNTU2MSwgNzQzNjAsIDI2OTEsIDAsIAotICAgIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTI4MTQ2LCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAwLCAKLSAgICAwLCAzOTc5LCAwLCAwLCA3NDgxMywgMCwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCAwLCAxMjg4MzYsIDEwNTg1LCAKLSAgICA2NTc0MSwgNDE3MzcsIDk1NzQsIDI2NjYsIDAsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCAwLCA0MjgyMiwgMCwgCi0gICAgNjQzNCwgMCwgNjkzOSwgNzc2NiwgNjQzMiwgMTI4MTA2LCAwLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgCi0gICAgNjQzMywgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIDAsIDQ0OTcsIDM3NTQsIDEyNzA1NiwgCi0gICAgMTIwNDI0LCA5MDM5LCAwLCA0MTc3NiwgMCwgODcxNiwgMTU5NSwgNDE2MTUsIDAsIDAsIDc0MjYwLCAwLCA0Mjg1NCwgCi0gICAgNDMyMTksIDEyODcwOSwgMCwgMTIxODUsIDEyODg3OSwgMCwgNjgzNTUsIDY4MzU3LCAwLCA0Mjg1NiwgODYzNCwgMCwgMCwgCi0gICAgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAKLSAgICAwLCAwLCA1Njc4LCAxMTgyMSwgMCwgNjcxMSwgNDYwLCAwLCAwLCAwLCAwLCAxMjA3NDcsIDAsIDAsIDc4MDUwLCAxMTkwMjIsIAotICAgIDAsIDAsIDAsIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAKLSAgICAxMjgwNzksIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgMCwgMCwgNzgxMTksIDE1NDksIDAsIAotICAgIDAsIDEyMDM5OCwgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDkxNzU2OCwgMTAwMDEsIDAsIDY5NzY4LCAxNDQ5LCAKLSAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCAwLCA1NTY3LCAKLSAgICAyNzE3LCAwLCAwLCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAwLCAxMjgwMjYsIDAsIDY1NzA4LCA2NTcwOSwgCi0gICAgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAorICAgIDEyNzUxNywgMCwgODk2NCwgNjU2NzYsIDc3NzUsIDAsIDQxOTQ4LCAwLCAwLCAwLCA0MTk0MiwgNjU0NDksIDMxNjAsIAorICAgIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTI4MjEwLCA0MTc2NiwgMTE5MTE0LCA2NTg4MiwgNzg4NDksIAorICAgIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIAorICAgIDczODM1LCA3ODg4LCAwLCAzOTgwLCAwLCA0MjY1NiwgNDE1MDcsIDg4MDYsIDcwMjMsIDAsIDc0Mjc5LCA5NDQ3LCA3ODY1MSwgCisgICAgNzg2NywgNjkyMTgsIDYyMzYsIDk4MzEzNCwgMCwgMTA1MDUsIDAsIDEyODUxLCAxMTg5NDgsIDM0OCwgNTQ3NCwgMTI4ODQzLCAKKyAgICAzMTAzLCAwLCA0MTc1MywgMTI4NTQwLCAwLCAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCAKKyAgICA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAKKyAgICAyNjkxLCAwLCA2NTU1MywgNzkzMywgNTU2MiwgNjk4MDAsIDEyODI2NSwgNDEyNjIsIDEyODE0NiwgNjQ0MjEsIDc0ODQ2LCAKKyAgICA0MTI1MSwgMCwgMCwgMzk3OSwgMCwgMCwgNzQ4MTMsIDk4MzczMCwgMCwgMCwgMCwgOTI1MjQsIDQxMjY2LCAwLCA2NjU2NiwgCisgICAgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCA5NTc0LCAyNjY2LCAwLCA0MTczOCwgODMxLCA0MTksIDEzMTI2LCAKKyAgICAxMDcxNiwgMCwgNDI4MjIsIDAsIDY0MzQsIDAsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgNjk5MzIsIDkxNiwgNzY5LCAKKyAgICA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIDQ5OTQsIDQ4NywgCisgICAgMTI2NTM3LCA0NDk3LCAzNzU0LCAxMjcwNTYsIDEyMDQyNCwgOTAzOSwgMCwgNDE3NzYsIDAsIDg3MTYsIDE1OTUsIDQxNjE1LCAKKyAgICAwLCAwLCA3NDI2MCwgMCwgNDI4NTQsIDQzMjE5LCAxMjg3MDksIDk4MzQ1MiwgMTIxODUsIDEyODg3OSwgNzAwNzIsIAorICAgIDY4MzU1LCA2ODM1NywgMCwgNDI4NTYsIDg2MzQsIDAsIDk4MzM4OSwgNDIwOSwgMTIwNzAyLCAwLCA2NTg3OSwgNDE1MzgsIAorICAgIDY1NjEyLCAxMjc1NDMsIDY2OSwgNTY3OSwgMCwgNjk3ODYsIDkyNTQwLCAwLCA5ODM0NTYsIDU2NzgsIDExODIxLCAwLCAKKyAgICA2NzExLCA0NjAsIDAsIDAsIDk4MzQ1MywgMCwgMTIwNzQ3LCAwLCAwLCA3ODA1MCwgMTE5MDIyLCAwLCA5ODM0NTQsIDAsIAorICAgIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgNjU3MTEsIDQxOTEyLCAxMjE2LCAwLCAxMjgwNzksIAorICAgIDU3OTIsIDAsIDAsIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgMCwgNTY4MywgOTgzMzg0LCAwLCA3ODExOSwgMTU0OSwgMCwgMCwgCisgICAgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCAxMjg1MTIsIDY5NzY4LCAxNDQ5LCAKKyAgICAxMDI0MSwgNzgyOTAsIDEyODIyOCwgMCwgMTA1NTIsIDY0MzQyLCA0MTkyMiwgMTI4NTQ4LCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMjcxNywgMCwgMCwgNTU2NCwgNDI4ODYsIDQxOTA4LCA0Mjg4MiwgNTU2NSwgOTgzMjQ4LCAxMjgwMjYsIDAsIDY1NzA4LCAKKyAgICA2NTcwOSwgNTU2NiwgNjk4MDMsIDY1NzA0LCA2NTcwNSwgMTE5MDQsIDQyODc1LCA0MzM3MywgNDI1MzksIDU5NDIsIDg0NjgsIAogICAgIDEyMDU2MSwgMTAzNjEsIDEwNDI1LCA2NTY5NywgNjU2OTgsIDY1Njk5LCAwLCA2NjU5OCwgMCwgNjQ2NjQsIDEwNjQ3LCAKLSAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDAsIDg4MDIsIDc4NzEwLCAKKyAgICA3ODcwMiwgNzg3MDMsIDc4NjkwLCA0NTcsIDc4NTAyLCA2NTcwMSwgMTkzNCwgNDMwMDYsIDExOTkwMywgODgwMiwgNzg3MTAsIAogICAgIDY1MTMwLCAxMTc0NywgNzg3MDksIDYwODcsIDc4NzA1LCA3ODcxNiwgNDE3NTcsIDc4NzExLCA4MDQzLCA4OTUwLCA2NTY5NCwgCiAgICAgNjQ0ODUsIDQzNTM0LCAxMDQ1NywgMCwgMTE5NjEsIDc4NzI1LCA3ODcyMiwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMCwgCi0gICAgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgMCwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAxNjY3LCAKLSAgICA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIDM2MTAsIDAsIAotICAgIDQxNzQ4LCA0OTk1LCA5NTUsIDY1OTA3LCAxMTkyMDgsIDUzNTAsIDY0MzM5LCA3ODMwNiwgNjQ1NDksIDEwODc1LCAKLSAgICAxMjg2NjIsIDU0NzcsIDY1NjkyLCAwLCAxMjg1MzIsIDEyMDM5NywgMTI4OTYsIDEwNDU2LCA5MTc5NTQsIDAsIDM4NzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAxMTk1NzAsIDQyMjM5LCA4NTM2LCAKLSAgICA3ODc0MCwgMCwgNzg3MjYsIDc0NDMyLCA3MjQsIDAsIDE0NTUsIDc4NzQ5LCA3MTgzLCA2NDU4MywgNzg3NDcsIDY4NDQzLCAKLSAgICA0MTc1LCA3ODc0MSwgNDM2MTQsIDY5ODAxLCA5MzksIDAsIDQzNTIwLCA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMCwgNzg3NjMsIAotICAgIDc4NzY0LCA3ODc2MCwgMTA3ODgsIDYwODgsIDc4NzU5LCA3ODc1NSwgMTkwLCAwLCAxMjU5MywgMCwgODE4OCwgNjQ0MDgsIAotICAgIDAsIDQ0MTcsIDAsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgMCwgMCwgCi0gICAgNzQzODIsIDczNzgxLCA3OTE4LCA3Mzk4OCwgMCwgMCwgOTE3ODg0LCAxNzI4LCAwLCAxMjA3MTAsIDE3OCwgMTI5NzIsIAotICAgIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCAwLCAwLCA3ODMyNywgMTIwNDA1LCA2NTY5MCwgMCwgMCwgMTE5MDU0LCAwLCAKLSAgICA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAwLCAwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDAsIDExNzYzLCAwLCAKLSAgICAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIAotICAgIDkyMzIwLCA3NDA4MCwgMCwgMCwgMTE5MTAsIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAKLSAgICAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAotICAgIDEyNzQ3LCA4MzAwLCAwLCAwLCA3NDkxLCA4ODU2LCAxMjgwNjQsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIAotICAgIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCAxMjAyNDQsIDY1MzYsIDEyMDIzOCwgCi0gICAgMTIwMjM5LCA2NTUxNiwgMTIzMjEsIDEyMDM5MSwgMTIwMzg4LCA1NTI4NywgMTAwMDcsIDEyMDI0NiwgOTU4OCwgMTIwMjQ4LCAKLSAgICAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCAwLCA2NjU3MiwgMCwgMCwgMTA2MTMsIDY2OTcsIDEyODA1LCAKLSAgICA0MTkyOCwgNDA5ODEsIDc4NDAzLCA3ODQwOSwgNTAwNiwgNjQzMjgsIDAsIDk5MzEsIDAsIDg4MjUsIDc0NTU1LCA2NTk0MCwgCi0gICAgNDMyNTksIDAsIDYxMDcsIDAsIDExOTE3NywgMCwgNzg0MDEsIDEyODY0MSwgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgCi0gICAgNDM4LCA0NTEwLCA1NzY1LCA4NzIxLCAxMjAyMzMsIDExOTIyNywgNjA5MiwgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIAotICAgIDgwOTYsIDEwMjg0LCAxMjg1MTUsIDAsIDAsIDEwMzgwLCA4NzMzLCAwLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgCi0gICAgNzQ4MzEsIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgCi0gICAgMCwgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIAotICAgIDE5NTMsIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCAwLCA0MTI1NywgNDE5MDAsIDg2NzUsIAotICAgIDEwNzAwLCA4ODA1LCAxNzQyLCAwLCA5MzMzLCA4MjAyLCAxMjc3NTAsIDAsIDAsIDAsIDAsIDczODgyLCA0OTksIDAsIAotICAgIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCAwLCAwLCAxMTk2NywgMTc3NSwgMCwgMCwgMCwgCi0gICAgMCwgMTI4MDA5LCA5NDU4LCAwLCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAwLCAwLCA0Mjc4MiwgMCwgMCwgMCwgCi0gICAgMTI4MzA5LCA3NDc3NywgMTIwNjY5LCA5NDE0LCAxMjAzODIsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAKLSAgICAyNjYyLCA0MjI5MiwgMCwgODI1NCwgMCwgMTA5NzUsIDAsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIAotICAgIDc0MjQ3LCAwLCAwLCA5MjI2MywgOTE3OTgwLCA3NTA3LCAwLCA0MzE0OSwgMCwgNjUwMzEsIDc5NjEsIDE2MzYsIDAsIAotICAgIDY1MDI5LCA2NTAyNCwgMCwgMTI0NzMsIDY1MzQsIDAsIDk5LCA5OCwgOTcsIDEyMDU3MSwgNjc1ODQsIDQwNDksIDc0MTYzLCAKLSAgICAxMjcwNjUsIDcwOTAsIDAsIDc4OTIsIDkxNzk2OSwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIDY1NTYyLCA2NjU5OSwgNjY3MjIsIAotICAgIDAsIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMCwgMCwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIDU1OTMsIAotICAgIDExOTE0OCwgMTIwNzExLCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIDEyOTk4LCAKLSAgICAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIDEwMSwgCi0gICAgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA3NzkzMSwgMTUzNiwgNjQwOTMsIAotICAgIDczOTcwLCA3NzkzMCwgMTI3MTU3LCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIDEzMjY2LCAKLSAgICAxMjc4MTMsIDEyNzExMSwgMCwgNzM5MjYsIDAsIDEwNjQ1LCAxMjEyLCA2NTQzLCAwLCA4MTM0LCAxMjgwMjgsIDI5MTMsIAotICAgIDczODcwLCAxMjcxMTMsIDE4NjYsIDAsIDE5NTA5NSwgMCwgODkyMywgMTY0NSwgMTIwNTksIDY2NTg1LCA3ODc4NiwgMzE5NiwgCi0gICAgMCwgMCwgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAKLSAgICAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAxMTQ1NCwgNzM5MTEsIDAsIDEyODc4MSwgNDExNjksIDg5MzksIAotICAgIDQxMjQ1LCAwLCA0MTE3MCwgMTQ1NCwgMTEzNjksIDY0NzcsIDEyMTU3LCAwLCAwLCAwLCA0MTE3MiwgNzg1NSwgMCwgMCwgCi0gICAgMTA0ODAsIDAsIDAsIDc3OTM2LCA4MjY0LCAxMjYxMCwgMCwgNjQ1LCAwLCA3NjA5LCA0MDk3MywgMCwgNzM4MzMsIDc4MjQ5LCAKLSAgICA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgCi0gICAgMCwgMTI4MTQwLCA2ODQxNSwgMCwgNDUzOCwgMTIwNDA2LCA0MzE0MSwgMCwgMCwgNzQyMTQsIDczODg2LCAwLCAwLCAKLSAgICAxMTg5MDIsIDQzMDA1LCA3ODQ0OCwgOTU1MiwgMCwgMCwgMCwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAKLSAgICAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgCi0gICAgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIAotICAgIDExNTc1LCAwLCAxMTk1NjYsIDAsIDEyODA4LCAxMjE4MywgNjE0NSwgMTE4OTU1LCA2NDkyOSwgOTI0MzMsIDAsIDAsIAotICAgIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgMCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIAotICAgIDkxNzk1NywgNjY2ODAsIDEyMDA5MCwgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDAsIDAsIDEyMDA4MiwgCi0gICAgMTIwMDgxLCAxMjAwODQsIDQxMDI3LCAxMjAwODYsIDAsIDEyMDA4OCwgMTIwMDg3LCA3MDE5LCAxMjAwNzMsIDAsIDExNzUxLCAKLSAgICAxMjAwNzgsIDc4Mjk0LCA2NDY1NywgODY1NywgMTIwMDQ4LCA4NTk0LCAxMjAwNjgsIDAsIDAsIDEyMDA2OSwgMTIwMDcyLCAKLSAgICAxMjAwNzEsIDAsIDAsIDQzMTU0LCA0MTAyOSwgMCwgMTEzMzIsIDY1MzgwLCA3NzI4LCAwLCAxMTI5NCwgMCwgNjY2NjUsIAotICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCAwLCA3NTA0LCA5MzI3LCA2MTYwLCAxMjgwOTUsIDAsIAotICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgMCwgMTI5MjQsIDEyODIyNywgNDIzNjksIDAsIAotICAgIDY1NDkxLCA2NTE0NSwgOTA0MSwgNDM1NTksIDY0NTc3LCAxMDgyNiwgMCwgMTEyOTYsIDAsIDAsIDAsIDY1ODI1LCA5NTc3LCAKLSAgICA2ODE5OSwgMCwgNjQ2NzAsIDAsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgCi0gICAgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIDc4MDY5LCAxMjA4MDgsIDI1OSwgCi0gICAgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDAsIDAsIDY1MTI1LCA0MTI0NCwgMCwgMTMyNzEsIDkxMDMsIDQxMTgwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDIxOSwgMCwgMCwgMCwgMCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIAotICAgIDAsIDExODk4OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIDEyNzg4OSwgMCwgMTg5MCwgMTIwMDU2LCAwLCAwLCAwLCAKLSAgICA3MjkzLCA3OTkxLCAwLCAxMDU3OCwgMCwgNzgwNzYsIDE5NDczOCwgNzgwNzcsIDAsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIAotICAgIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgNzY3NiwgMTE2NjQsIDAsIDAsIDY5NzA3LCAwLCAxMTg4MTIsIAotICAgIDAsIDAsIDEyODA0NSwgOTE3NSwgMTE5MjUsIDc4MDQ1LCA5MDg4LCAwLCA2NDU0NSwgMTM5NiwgMCwgNzU0NiwgMzg0NywgMCwgCi0gICAgMTI3ODM1LCA0OTg1LCAxMzI4OCwgNjcyLCA4MDk4LCA0MzE5NiwgMTk0NzQ2LCAwLCAxMjgxMjYsIDAsIDc0MDQzLCAKLSAgICA2NTA3MiwgMTU3NywgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAwLCAKLSAgICAxMjg1ODQsIDEyNjIyLCAwLCAwLCAwLCAxOTQ3MTQsIDEyNzEzOSwgMTMzMTAsIDc3MywgMTk5MzMsIDE1MzksIDAsIAotICAgIDEyNjk4MywgNDI3MzEsIDkyMjA1LCAwLCAwLCAwLCAzMDUxLCA1ODYyLCA3ODIzLCA5MjQ3OCwgMCwgMTIwNDExLCAzMjUwLCAKLSAgICA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgMCwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgCi0gICAgMzUwNSwgODcwNywgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCAKLSAgICA2Njg2LCAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCAwLCA5MjY5NiwgMCwgMCwgMCwgMTI4NTIzLCAzMjI1LCAKKyAgICA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAwLCA3MjU2LCAwLCAwLCAKKyAgICAxNjY3LCA0MjE2MSwgMCwgNDI0MjgsIDAsIDY5MzQsIDAsIDEwODAyLCA2NDg2MSwgNjU1NiwgNzgzOTAsIDAsIDgxMDEsIAorICAgIDM2MTAsIDk4MzE5OSwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgCisgICAgMTA4NzUsIDEyODY2MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDkxNzk1NCwgMCwgCisgICAgMzg3NCwgMCwgMCwgOTgzNjE5LCAxMjAzMzEsIDAsIDAsIDY1NjAzLCAwLCA2NTY4NywgMCwgNDEwMzgsIDc0MDA5LCAKKyAgICAxMTk1NzAsIDQyMjM5LCA4NTM2LCA3ODc0MCwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCAwLCAxNDU1LCA3ODc0OSwgCisgICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCAwLCA0MzUyMCwgCisgICAgNjg2MTMsIDc0NTY5LCA5MTc5NTgsIDAsIDc4NzYzLCA3ODc2NCwgNzg3NjAsIDEwNzg4LCA2MDg4LCA3ODc1OSwgNzg3NTUsIAorICAgIDE5MCwgMCwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCA5ODMyMTEsIDkyMjYxLCA2MzcwLCAwLCA3ODI3LCAKKyAgICA2ODQ0MSwgNjk2NSwgMCwgMCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDAsIDc0MzgyLCA3Mzc4MSwgNzkxOCwgNzM5ODgsIDAsIAorICAgIDAsIDkxNzg4NCwgMTcyOCwgMCwgNDM3NjQsIDE3OCwgMTI5NzIsIDkyNjc5LCAwLCA5MTc4ODcsIDkyNTYzLCA5ODMzNzMsIAorICAgIDAsIDc4MzI3LCAxMjA0MDUsIDY1NjkwLCAwLCAwLCAxMTkwNTQsIDAsIDkyNTIsIDkxNzg4OSwgNDY1MiwgNjgzNzEsIDAsIAorICAgIDAsIDAsIDEzMDY1LCA5OTIzLCAxMDgwNiwgMCwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKKyAgICAwLCAwLCA4MzMzLCAwLCAwLCAxMTM5MCwgMCwgNzQ0NjQsIDAsIDkyMzIwLCA3NDA4MCwgOTgzMzA3LCA2OTkxMSwgMTE5MTAsIAorICAgIDkyNTU5LCA4Mjc4LCA4OTYzLCA0MDM0LCAxMjg1NjAsIDAsIDY1MzQ0LCAxMjA1MTcsIDQxNzQ3LCAwLCAwLCA4Njc3LCAwLCAKKyAgICAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIDEyNzQ3LCA4MzAwLCA5ODM3NDEsIDAsIDc0OTEsIAorICAgIDg4NTYsIDcxMzYxLCAwLCA0MzE1MCwgMTI3NzY4LCAxMjA0MDQsIDY1Mzg5LCAxMjA0MDIsIDEyMDQwMywgMTA4MTMsIAorICAgIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgMTIwMjQ0LCA2NTM2LCAxMjAyMzgsIDEyMDIzOSwgNjU1MTYsIDEyMzIxLCAKKyAgICAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIDEyMDI0OCwgMTU5NiwgMTIwMzgzLCA0MTk5NCwgCisgICAgNjU4MDEsIDEyODgwOCwgMCwgNjY1NzIsIDAsIDAsIDEwNjEzLCA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCA3ODQwMywgCisgICAgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCA3NDU1NSwgNjU5NDAsIDQzMjU5LCAwLCA2MTA3LCAwLCAKKyAgICAxMTkxNzcsIDAsIDc4NDAxLCAxMjg2NDEsIDExNzgzLCAzMzUsIDEyMDIyNywgNjQ2ODksIDQzOCwgNDUxMCwgNTc2NSwgCisgICAgODcyMSwgMTIwMjMzLCAxMTkyMjcsIDYwOTIsIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgCisgICAgMTI4NTE1LCAwLCAwLCAxMDM4MCwgODczMywgOTgzMDcyLCAxMjgyNDAsIDQxNjAyLCAwLCA5MjMwOCwgNzQ4MzEsIAorICAgIDkxNzkwMSwgMCwgNzM3NDcsIDY1Mzk5LCAwLCA2NDU5MSwgNDI0MDUsIDAsIDEyMDgyMCwgODQzLCAxMTU0MSwgMCwgCisgICAgOTE3ODk4LCAyMDY1LCA0MTkzNSwgNzQ0OTYsIDQxOTAyLCAwLCAwLCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIDE5NTMsIAorICAgIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA5ODMxMDAsIDQxMjU3LCA0MTkwMCwgODY3NSwgCisgICAgMTA3MDAsIDg4MDUsIDE3NDIsIDAsIDkzMzMsIDgyMDIsIDEyNzc1MCwgMCwgOTgzMTk3LCAwLCAwLCA3Mzg4MiwgNDk5LCAKKyAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgMCwgMTcxMiwgNTkzMiwgNzc4NDUsIDQxNzYyLCA5ODMxMDQsIDAsIDExOTY3LCAKKyAgICAxNzc1LCAwLCAwLCAwLCAwLCAxMjgwMDksIDk0NTgsIDAsIDY0NzAsIDkxODAsIDEyMDM4MCwgNDMxNzYsIDAsIDAsIAorICAgIDQyNzgyLCAwLCAwLCAwLCAxMjgzMDksIDc0Nzc3LCAxMjA2NjksIDk0MTQsIDEyMDM4MiwgNzM3ODIsIDczOTY5LCA1NjUsIAorICAgIDQyNDg0LCA1Nzk0LCAyMDEsIDI2NjIsIDQyMjkyLCAwLCA4MjU0LCAwLCAxMDk3NSwgMCwgMTIwNjI1LCA3NDc2MywgMTAyMiwgCisgICAgNDEwOCwgMzg4MCwgNzQyNDcsIDAsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDAsIDQzMTQ5LCAwLCA2NTAzMSwgNzk2MSwgCisgICAgMTYzNiwgMCwgNjUwMjksIDY1MDI0LCAwLCAxMjQ3MywgNjUzNCwgMCwgOTksIDk4LCA5NywgMTIwNTcxLCA2NzU4NCwgCisgICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgMCwgNzg5MiwgOTE3OTY5LCAxMDc3NywgOTE3ODAzLCA2NTMxMCwgNjU1NjIsIAorICAgIDY2NTk5LCA2NjcyMiwgMCwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAwLCAwLCAxMjU5NiwgNjY1OTUsIDQyMjU4LCAKKyAgICA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA3MTEsIDkyNDI1LCAxMDEwMCwgNjA2MSwgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIAorICAgIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAxMTQsIDExMywgMTEyLCAxMDMsIAorICAgIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgNDEyMTIsIDc3OTMxLCAxNTM2LCAKKyAgICA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjcxNTcsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIDEyNzQ0LCA0NzUsIDEyMDM5NCwgCisgICAgMTMyNjYsIDEyNzgxMywgMTI3MTExLCAwLCA3MzkyNiwgMCwgMTA2NDUsIDEyMTIsIDY1NDMsIDk4MzI5OSwgODEzNCwgCisgICAgMTI4MDI4LCAyOTEzLCA3Mzg3MCwgMTI3MTEzLCAxODY2LCAwLCAxOTUwOTUsIDAsIDg5MjMsIDE2NDUsIDEyMDU5LCAKKyAgICA2NjU4NSwgNzEyOTcsIDMxOTYsIDAsIDAsIDU5MzUsIDEyNTAsIDEyNzA2NiwgODE3NCwgOTc4NywgNjczMywgOTg1OSwgCisgICAgNzkxNiwgOTg2MSwgOTg2MCwgNTI1OCwgMTg4MiwgMTg5MiwgNjczMSwgMTA4ODIsIDQwNSwgMTE0NTQsIDczOTExLCAwLCAKKyAgICAxMjg3ODEsIDQxMTY5LCA4OTM5LCA0MTI0NSwgMCwgNDExNzAsIDE0NTQsIDExMzY5LCA2NDc3LCAxMjE1NywgMCwgMCwgMCwgCisgICAgNDExNzIsIDc4NTUsIDAsIDAsIDEwNDgwLCAwLCAwLCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMwMCwgNjQ1LCAxMjY2MTYsIAorICAgIDc2MDksIDQwOTczLCA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMCwgNzcyOSwgCisgICAgNzM5ODIsIDEyMDUxOCwgMCwgMTk1MDg2LCA0MzM2OSwgMCwgMTI4MTQwLCA2ODQxNSwgOTgzMDkzLCA0NTM4LCAxMjA0MDYsIAorICAgIDQzMTQxLCAwLCA5ODMyMDgsIDc0MjE0LCA3Mzg4NiwgMCwgMCwgMTE4OTAyLCA0MzAwNSwgNzg0NDgsIDk1NTIsIDAsIDAsIAorICAgIDk4MzE1OSwgMTI5OTcsIDAsIDAsIDAsIDAsIDIzODEsIDEyODgzLCAxMDk5NCwgMTA1MjksIDQxOTA2LCAwLCAwLCAwLCAKKyAgICAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCAwLCAwLCAwLCAKKyAgICA2NDg5NiwgMTE5MTYyLCAxOTUyLCA5MjE4MSwgODQ1NSwgMTAwODIsIDExNTc1LCA5ODM0ODIsIDExOTU2NiwgMCwgMTI4MDgsIAorICAgIDEyMTgzLCA2MTQ1LCAxMTg5NTUsIDY0OTI5LCA5MjQzMywgMCwgOTgzMTkzLCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAorICAgIDkxODcsIDk4MzYxNCwgMCwgMTAxOTEsIDExOTA1NywgMTE3NTIsIDMzNTMsIDkzNTgsIDAsIDcxMzY2LCA2NjY4MCwgCisgICAgMTIwMDkwLCA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgOTgzMjg5LCAwLCAxMjAwODIsIDEyMDA4MSwgMTIwMDg0LCAKKyAgICA0MTAyNywgMTIwMDg2LCAwLCAxMjAwODgsIDczNjYsIDcwMTksIDEyMDA3MywgMCwgMTE3NTEsIDEyMDA3OCwgNzgyOTQsIAorICAgIDY0NjU3LCA4NjU3LCAxMjAwNDgsIDg1OTQsIDEyMDA2OCwgMCwgMCwgMTIwMDY5LCAxMjAwNzIsIDEyMDA3MSwgMCwgMCwgCisgICAgNDMxNTQsIDQxMDI5LCAwLCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIDc4NTEsIDAsIAorICAgIDgzNzUsIDg2OTksIDAsIDQyNTI0LCAwLCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgMTI4MDk1LCA5ODM4NTUsIAorICAgIDAsIDgwODgsIDAsIDc0MDEyLCA5MjUwMCwgMCwgNDQzOSwgNjkyNiwgOTgzMDQ3LCAxMjkyNCwgMTI4MjI3LCA0MjM2OSwgCisgICAgNDM1MCwgNjU0OTEsIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAwLCAxMTI5NiwgOTgzMjc1LCAwLCAwLCAKKyAgICA2NTgyNSwgOTU3NywgNjgxOTksIDAsIDY0NjcwLCA5ODMxMjEsIDc4MDU2LCA2NzkzLCAxMTI5NSwgMCwgNzgwNTMsIAorICAgIDczODcyLCAwLCAwLCAxMDkwMiwgMCwgMCwgNzgwNzAsIDc4MDY4LCAxMDQ3MiwgMjk5NSwgMCwgMCwgNjQ2ODIsIDIzNzEsIAorICAgIDc4MDY5LCAxMjA4MDgsIDI1OSwgMTAwOSwgOTIxNzEsIDI0MDIsIDIzMzMsIDY0NDAsIDE5NDc0MSwgMCwgNjUxMjUsIAorICAgIDQxMjQ0LCAwLCAxMzI3MSwgOTEwMywgMjI3OCwgMCwgMCwgMCwgMCwgMTAyMTksIDAsIDAsIDAsIDAsIDQzMTc4LCAKKyAgICAxMjcwNzAsIDQxMjYxLCAxMTkzNjIsIDQzNjQwLCA4NjEzLCAwLCA5NDA0OSwgNjczNiwgMTk1MDkyLCA0MTQ5MiwgMTIwMDUsIAorICAgIDY5OTI3LCAwLCAxODkwLCAxMjAwNTYsIDAsIDAsIDAsIDcyOTMsIDc5OTEsIDAsIDEwNTc4LCAwLCA3ODA3NiwgMTk0NzM4LCAKKyAgICA3ODA3NywgNjk5MjgsIDAsIDc4ODAwLCA5MjY1MywgNjQ0NDUsIDQyNjY4LCA2NjM1LCAwLCA2MTY0LCA2NTE3MCwgMCwgMCwgCisgICAgNzY3NiwgMTE2NjQsIDAsIDk4MzY0OSwgNjk3MDcsIDAsIDExODgxMiwgMCwgMCwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgCisgICAgNzgwNDUsIDkwODgsIDAsIDY0NTQ1LCAxMzk2LCAwLCA3NTQ2LCAzODQ3LCAxMjcxNzcsIDEyNzgzNSwgNDk4NSwgMTMyODgsIAorICAgIDY3MiwgODA5OCwgNDMxOTYsIDE5NDc0NiwgOTgzMDk2LCAxMjgxMjYsIDQyNjU1LCA3NDA0MywgNjUwNzIsIDE1NzcsIAorICAgIDExNzcyLCAxMzA0MSwgNTkyOCwgNDUyNSwgMTA2NTgsIDY1OTExLCAxMjY2LCAxMDE4MCwgMCwgMTI4NTg0LCAxMjYyMiwgMCwgCisgICAgMCwgMCwgMTk0NzE0LCAxMjcxMzksIDEzMzEwLCA3NzMsIDE5OTMzLCAxNTM5LCAwLCAxMjY5ODMsIDQyNzMxLCA2Nzk3MiwgCisgICAgMCwgMCwgMCwgMzA1MSwgNTg2MiwgNzgyMywgOTI0NzgsIDAsIDEyMDQxMSwgMzI1MCwgNDM5OTEsIDY5Njg3LCA2NjY0OSwgCisgICAgOTUxMCwgNjYyMzcsIDk4MzI5NCwgMCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkxNzk2NCwgMCwgMzUwNSwgODcwNywgCisgICAgOTE3OTY4LCA2NzI1LCAxMjgwMTMsIDkxNzk3MSwgOTIzMTQsIDM0NzEsIDkxNzk3MCwgNTQ3OSwgODgyLCA2Njg2LCAKKyAgICAxMTk1ODQsIDExNjEzLCAxMjA3NzIsIDQyNzU0LCAwLCA5ODMyOTgsIDkyNjk2LCAwLCAwLCAwLCAxMjg1MjMsIDMyMjUsIAogICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMCwgMCwgMTA5MjYsIDExNzU2LCAxMTc1NywgCiAgICAgNjQ4NzksIDkxNzk0OSwgOTE3OTUwLCAxMjc4NDgsIDEzMjI3LCAwLCAxMDAyMSwgNTE2MCwgMTM4NywgMCwgOTE3OTUzLCAKICAgICA0MTQxOCwgMCwgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDkxNzk2MSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgCi0gICAgMTE5MjU3LCA0Mjc0LCAwLCA0MTQ4MywgMCwgNDEyNTAsIDAsIDQyMTc5LCAwLCA1OTMxLCAxMTc0NCwgNjkyMzIsIDAsIAotICAgIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgMCwgMCwgNDM5NywgCisgICAgMTE5MjU3LCA0Mjc0LCA5ODMyOTIsIDQxNDgzLCAwLCA0MTI1MCwgMCwgNDIxNzksIDAsIDU5MzEsIDExNzQ0LCA2OTIzMiwgCisgICAgMCwgNDEyNTIsIDY2NjgyLCAwLCAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCAwLCAwLCA0Mzk3LCAKICAgICAxMjgwMzcsIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjgwNDksIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgCiAgICAgMTA0MDAsIDAsIDEyODgxOCwgNzYwLCAwLCAxMjA4OCwgNTc4NiwgMCwgNDIyNTYsIDExOTg2OSwgMTE5ODYwLCA0MTcsIAotICAgIDQxNDc0LCAxMTk1NjIsIDQxNTY1LCAwLCA1OTM0LCAxMTk4NjcsIDY2NTgzLCAxMTkyMzEsIDY0ODc3LCAwLCA2NDQ4MSwgCisgICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDAsIDU5MzQsIDExOTg2NywgNjY1ODMsIDExOTIzMSwgNjQ4NzcsIDIyODQsIDY0NDgxLCAKICAgICA3ODYxNCwgNjYwMTMsIDQxOTU2LCA0MzQ1NSwgMTI2OTk1LCAwLCAwLCAwLCA0MjI3MywgNTgxOSwgMCwgOTE3NTU2LCAwLCAKLSAgICAwLCAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCAwLCAxMjM3LCAxMDI3NCwgNDU1MiwgMTE5NTc2LCAwLCAwLCAKLSAgICAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA3NDE5MiwgMTIwNzk0LCA3ODQwLCAKLSAgICAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgMTA3NjksIDk2NzYsIAotICAgIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAxMDI5OSwgMCwgMCwgCi0gICAgMTIwNjA4LCA2NjMyNiwgMCwgMCwgMCwgNDM4MTEsIDkzMzAsIDAsIDcyMjIsIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIAotICAgIDAsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAwLCA3ODM0NywgMCwgMCwgNzU2NSwgNjYzNjMsIDEyOTUyLCAKLSAgICA2NDgwNiwgNDMxODAsIDc3OTI4LCA2ODA5NiwgNzc5MjksIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgCi0gICAgMTYwMiwgMCwgMCwgODUyLCAwLCAxMjE2MCwgMCwgMTAyMTIsIDY1NDM1LCAwLCAxMjA3MSwgOTYwOSwgMTIxNTYsIAotICAgIDkxNzk4MywgOTE3OTg0LCA0MzU4NiwgMTEwMzUsIDEwNDExLCA5MTc5ODgsIDEwMjU1LCA2NzEwLCAxMDI3OSwgNDE5NCwgCi0gICAgMTAzNzUsIDkxNzk5MywgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgNzc5MzcsIDQzNjM5LCA0MzM0MywgMCwgOTE3OTk4LCAKLSAgICAxMTUwMSwgNDExNzcsIDEyODY4OSwgMCwgOTE3NzkyLCAwLCA5MjQxMywgODcxNSwgMCwgNDExNzksIDAsIDQzMzEzLCAwLCAKLSAgICA0MTE3NiwgMCwgOTk0LCAwLCA4NDUyLCAxMjcxMDMsIDczOTY2LCAwLCAwLCA1OTIxLCAwLCAyNTk3LCAwLCA1OTIyLCAKLSAgICAxMTg5MDMsIDc3OTQzLCA0MTg2LCA5MjUzMSwgMTI3MTA2LCAxMjcxMDUsIDY3MTgsIDAsIDQ0MDYsIDc0NjAxLCA4NDgwLCAKLSAgICA5MTkyLCA5NzQ3LCAxMjg2OTksIDQ0MTMsIDkyMTk2LCA0MjI2OCwgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIAotICAgIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCA0MzE2OSwgMTAxNzYsIDAsIDc0MiwgMCwgMjg5MywgMTA3NzIsIAotICAgIDY1Mjc2LCA1OTM3LCAxOTE0LCAyNTUzLCAxMTY4MiwgNjc1NiwgMTI4NTkwLCAxMjg2NDYsIDgzNjMsIDAsIDI5OTMsIAotICAgIDc3NzIsIDM5MTYsIDAsIDEyMDQ5NCwgMTE0MSwgNDI0MDcsIDgxNTksIDcxOCwgNzU3MiwgOTczLCAwLCAxMjA3MTgsIAotICAgIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCA0MjMzMywgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIAotICAgIDY1MzkwLCAxMDA2NywgMCwgMTIwMiwgMCwgMCwgNjU4NjMsIDAsIDAsIDAsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIAotICAgIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCAwLCAwLCA1NTIzNywgMTQzMSwgCi0gICAgMCwgNjY1NjUsIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCAKLSAgICA0NTQ0LCAwLCAwLCAwLCAxNzQwLCA3ODA5NywgODc1OCwgOTg1LCAxMjg3MiwgNjQ1MTEsIDc4MDk0LCAxMjA2OCwgNzgxMDIsIAotICAgIDAsIDEwMTQxLCAwLCA2Mzc2MSwgODc4NSwgNDQ3NiwgNzgxMDksIDYzNzYzLCAxMjY1NSwgODkwNywgNzgxMDUsIDc4MTA2LCAKLSAgICA3ODEwMywgNzgxMDQsIDAsIDExOTU3MiwgMTA2NjUsIDY0NjE2LCA0MTU3MiwgMCwgMTI3MTYwLCAwLCA0MTU3MywgMCwgCi0gICAgMzkzMSwgMTIwMjk1LCA3NDE0MywgMCwgMCwgMCwgMCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAKLSAgICAwLCA0MTczNSwgMCwgNzE3LCAxMDc1NCwgMCwgMCwgMTI3OTc5LCAwLCA2Mzc2NywgMCwgMTc4MCwgNjkzNiwgMCwgMCwgCi0gICAgODE5LCAxMDYxMSwgOTY5NCwgMTI2OTc4LCAwLCAwLCAwLCAwLCA4MzQzLCA4MzQyLCA4MzQ1LCA4MzQ0LCA2NTc4LCA3MDA5LCAKKyAgICAxMjY2NDMsIDAsIDY1OTEwLCAxMjc3NDcsIDEwMjQ2LCAxMjA4MTYsIDY1Nzg1LCAxMjM3LCAxMDI3NCwgNDU1MiwgCisgICAgMTE5NTc2LCAwLCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCA0MjA2MywgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgCisgICAgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDAsIDEyODEwNCwgNDMxODUsIDAsIDQzOTYsIDAsIDExOTg4MCwgCisgICAgMTA3NjksIDk2NzYsIDExOTA0MSwgMCwgOTc1MywgMCwgODk0NCwgMCwgMCwgMTA0NzMsIDAsIDAsIDYwNzIsIDQzMDI1LCAKKyAgICAxMDI5OSwgMCwgMCwgMTIwNjA4LCA2NjMyNiwgOTgzNDM5LCAxMjc3OTQsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEwMjgzLCAxMDMxNSwgMTAzNzksIDQ5OTYsIDk4Mzc3MywgMTMyODEsIDY2NTE3LCA3ODY1LCAxMDA4NywgNzgzNDMsIDAsIAorICAgIDc4MzQ3LCAwLCAwLCA3NTY1LCA2NjM2MywgMTI5NTIsIDY0ODA2LCA0MzE4MCwgNzc5MjgsIDc0MTQsIDc3OTI5LCA0Mzk4MiwgCisgICAgNzQyODgsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDAsIDg1MiwgMCwgMTIxNjAsIDAsIDEwMjEyLCAKKyAgICA2NTQzNSwgMCwgMTIwNzEsIDk2MDksIDEyMTU2LCA5MTc5ODMsIDkxNzk4NCwgNDM1ODYsIDExMDM1LCAxMDQxMSwgCisgICAgOTE3OTg4LCAxMDI1NSwgNjcxMCwgMTAyNzksIDQxOTQsIDEwMzc1LCA3MzkwMCwgMCwgNDMxNSwgMTI2NDQsIDEyNzUxNiwgCisgICAgNzc5MzcsIDQzNjM5LCA0MzM0MywgNzg3NzcsIDkxNzk5OCwgMTE1MDEsIDQxMTc3LCAxMjg2ODksIDAsIDkxNzc5MiwgMCwgCisgICAgOTI0MTMsIDg3MTUsIDAsIDQxMTc5LCAwLCA0MzMxMywgMCwgNDExNzYsIDAsIDk5NCwgMCwgODQ1MiwgMTI3MTAzLCAKKyAgICA3Mzk2NiwgMCwgMCwgNTkyMSwgMCwgMjU5NywgMCwgNTkyMiwgMTE4OTAzLCA3Nzk0MywgNDE4NiwgOTI1MzEsIDEyNzEwNiwgCisgICAgMTI3MTA1LCA2NzE4LCAwLCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTI2NTMwLCA0NDEzLCA5MjE5NiwgCisgICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCisgICAgNDMxNjksIDEwMTc2LCAwLCA3NDIsIDAsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIAorICAgIDY3NTYsIDEyODU5MCwgMTI4NjQ2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIAorICAgIDQyNDA3LCA4MTU5LCA3MTgsIDc1NzIsIDk3MywgMCwgMTIwNzE4LCAzMjM1LCAyNDE1LCA0MzE2NCwgMCwgODAxOCwgCisgICAgNDIzMzMsIDc0NzU2LCAxMDY3NSwgNjkzNywgNDI0ODYsIDQzMzgxLCA2NTM5MCwgMTAwNjcsIDAsIDEyMDIsIDAsIDAsIAorICAgIDY1ODYzLCAwLCAwLCA5NDAxMywgNzgxODIsIDY0NTQyLCAzMjYwLCA3MzgyOSwgNjUzODgsIDk5NDUsIDg0MTksIDc4MDQyLCAKKyAgICA2NzM4LCAwLCA0MzY4MSwgNjk3MjgsIDIwNTksIDAsIDAsIDU1MjM3LCAxNDMxLCAwLCA2NjU2NSwgMTA4MjEsIDAsIAorICAgIDEyODA0LCAxMjgwNzYsIDgyMjksIDEyMzUsIDMzMDcsIDExNDcyLCA3ODA4OSwgNzgxODQsIDQ1NDQsIDAsIDAsIDAsIAorICAgIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgMCwgMTAxNDEsIDAsIAorICAgIDYzNzYxLCA4Nzg1LCA0NDc2LCA3ODEwOSwgNjM3NjMsIDEyNjU1LCA4OTA3LCA3ODEwNSwgNzgxMDYsIDc4MTAzLCA3ODEwNCwgCisgICAgMCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAwLCAxMjcxNjAsIDAsIDQxNTczLCAwLCAzOTMxLCAxMjAyOTUsIAorICAgIDc0MTQzLCAwLCAwLCAwLCA3ODQ2MCwgMTE5ODIsIDAsIDAsIDAsIDEyODAxNiwgNjQ0ODQsIDAsIDQxMTY3LCAwLCA0MTczNSwgCisgICAgOTQwMTksIDcxNywgMTA3NTQsIDAsIDAsIDEyNzk3OSwgMCwgNjM3NjcsIDAsIDE3ODAsIDY5MzYsIDAsIDkyMjU0LCA4MTksIAorICAgIDEwNjExLCA5Njk0LCAxMjY5NzgsIDAsIDAsIDAsIDAsIDgzNDMsIDgzNDIsIDgzNDUsIDgzNDQsIDY1NzgsIDcwMDksIAogICAgIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgMTI4MzM4LCA1NzUsIDI2OCwgCiAgICAgNzgxMTEsIDg1NjMsIDU3NTQsIDEyMDM0MywgNDE1NDEsIDY1NTY1LCA4MzM2LCA1OTM2LCA3MjkwLCA3ODExNywgODMzNywgCiAgICAgODM0MSwgMzA4LCAxMTM4OCwgNzUyMiwgMTIwNzIxLCA3ODEyMywgNjU0NjYsIDExMDkwLCA2OTUzLCAwLCAxMjAzNDYsIDAsIApAQCAtMTcxMjgsMTY4NiArMTgwNjMsMjY0MiBAQAogICAgIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIDAsIDY1NzQyLCAxMjg3NCwgMTE5NTk3LCAxMTU5MCwgMCwgNzQwNDgsIAogICAgIDEyODM1MCwgODU5NSwgMCwgOTE3OTQ3LCA0MzcwMywgMTMwOTcsIDAsIDY0NjQzLCAxMzI4MywgMTI2OTcsIDAsIDEyMzgxLCAKICAgICAzNDg4LCA1OTMzLCAxMDAzMywgNzM3MzgsIDY2MjQxLCA2NTU3MCwgMCwgMTIyOTcsIDExOTE1MywgMTk1NSwgMCwgNTM0OSwgCi0gICAgNDI1MzgsIDAsIDAsIDY1MzA4LCA5NDYyLCA5MTc1NTQsIDAsIDAsIDAsIDQyNzM2LCAwLCA1NzU2LCAwLCA3NjM4LCAKLSAgICA0MTY0MiwgNDI3NjQsIDAsIDQzMTA5LCA3NjM3LCA1NzUyLCAxMjA2MDAsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCi0gICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAwLCAyOTEsIDAsIDAsIDIwMjcsIDY2MjMwLCAKLSAgICAxMDA4MCwgNzgxMzYsIDEwNDAzLCAwLCA0NjQwLCA2NDcxMywgMTAyMjQsIDEyMDQyOSwgNDI1MTIsIDEyMDQzMSwgCisgICAgNDI1MzgsIDAsIDAsIDc0MTEsIDk0NjIsIDkxNzU1NCwgMCwgMCwgMCwgNDI3MzYsIDAsIDU3NTYsIDk4MzIxOSwgNzYzOCwgCisgICAgNDE2NDIsIDQyNzY0LCAwLCA0MzEwOSwgNzYzNywgNTc1MiwgNzQwMzcsIDAsIDczODMyLCAxMjg4MjcsIDEyMDYzNSwgCisgICAgMTI4MjMxLCA3ODMzNCwgMCwgNzYzNiwgNjUxNzEsIDkxMjQsIDAsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgMCwgMjAyNywgCisgICAgNjYyMzAsIDEwMDgwLCA3ODEzNiwgMTA0MDMsIDAsIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCA0MjUxMiwgMTIwNDMxLCAKICAgICAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAxMjcxNDgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAKICAgICAwLCA0MTI3NCwgNTc3OCwgNjMwMiwgMCwgMCwgMTI2ODAsIDExOTEzMCwgMTQxNywgNzc4ODksIDE5NDkxNCwgOTQ1MiwgMCwgCi0gICAgNzQzOTMsIDExNTUyLCAwLCAxMjc4NTUsIDAsIDY1MzkxLCAwLCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgNzg2NTgsIAotICAgIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIDEyMDQxMiwgCi0gICAgNDEyNjcsIDQ2NDYsIDEyMDQyNSwgODY1LCA0MjAzNCwgNzgyNzQsIDc4MjczLCA0NjQ1LCA0MjAzMywgNzgyNzAsIAotICAgIDEyNzk4MiwgMCwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgMTk1MDg5LCA2MDY5LCAKLSAgICA5MjE5LCAxOTUwOTAsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAxMTkxNDMsIDAsIDAsIDAsIAotICAgIDIzMDYsIDEwNDg1LCAxMTg5NDMsIDYwNjgsIDEwNjEyLCAxOTUwOTksIDExOTU2NywgMTk1MTAxLCA5MjU2MSwgNDE0NjIsIAotICAgIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDAsIDAsIDAsIDEwMjI5LCAxMDYzNSwgODI2LCAxMjgwODEsIDE5NTA4MiwgCi0gICAgMTk1MDg1LCAxOTUwODQsIDE5NTA4NywgNjQ4MywgMCwgMTgwOCwgNzg0OCwgMCwgODEwMCwgNzgyMjcsIDc4NjY5LCAKLSAgICA3ODY3MCwgMTMzMDEsIDc4NjY3LCA5NjY3LCA3ODY2NSwgNzg4NzIsIDAsIDExMDAzLCA5OTA0LCAwLCAwLCAxMjA2OTAsIAotICAgIDkxNDQsIDEwOTIxLCAwLCA3ODY4MCwgOTg0MCwgNjUxMzEsIDc4Njc4LCA3Nzg0MSwgMTAzMTMsIDAsIDAsIDY0MzIwLCAKLSAgICAxMDI2NSwgNzg2ODYsIDEwOTYyLCA3ODY4NCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAwLCA0MSwgMTk1MDcyLCAxNzkyLCAKLSAgICAxMjA1MTUsIDE5NTA3MywgODY1NSwgMTk1MDc1LCA5MjU0NCwgNzc5NTEsIDEyMDY2LCAwLCAzODUsIDQxNTIsIDI1ODUsIAotICAgIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCAwLCA3NDEzNiwgMTA5NTcsIDAsIDQzMjU4LCAwLCAxMjc4NzMsIDEzMTU3LCAwLCAwLCAKLSAgICAzNTcwLCAwLCA3NDQzLCAwLCA0NDAwNiwgNjk5NywgMCwgMCwgNzg3OSwgODczOSwgMTEwNzUsIDAsIDY1MjE2LCAwLCAKLSAgICA2OTc5NSwgMjU5MywgODQ2MywgNzgxMCwgOTE3ODYyLCA3ODM5LCAxMTk5MTMsIDc4ODA2LCAxMTk5MTIsIDk2OTEsIDQ0MTEsIAotICAgIDc4ODAyLCAwLCAwLCA0MzQ0MiwgNzg3OTksIDY1MjU0LCAxMDA2NiwgMCwgMCwgMCwgMCwgMTMwNjEsIDgwMTYsIDc4Njg3LCAKLSAgICAxOTkzMiwgNjQ4MzEsIDAsIDExOTkyMywgMTIzOTAsIDExOTE3MSwgMTYzNCwgNjgxMTUsIDAsIDExMDU2LCAwLCAxMTk5MjUsIAotICAgIDAsIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKLSAgICA5MTc1NDQsIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKLSAgICAwLCAxMjQ1NCwgNjM4MDYsIDQyMTMyLCAxMjA2MywgNzg0MjUsIDc4NDI0LCAzMjMwLCAwLCAwLCAwLCA1MjA5LCAyOTcsIAotICAgIDU4MTAsIDg1MjIsIDg0MTUsIDExOTkzNywgNzg0MjksIDc4NDI4LCA3MDc3LCAyNDk3LCAxMjg2NTEsIDk2MCwgNzQxNTYsIAotICAgIDY5ODEsIDkyMzc0LCAxMjkzOCwgNDI5MiwgMCwgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIDEyNzUwNSwgCi0gICAgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCA2OTc5NCwgMjQ5NSwgNzg4NzMsIDU4NDQsIDc4ODc0LCAxMTg4MzgsIDAsIAotICAgIDEyNjU0LCA0NjYzLCAxODk5LCA3ODg3NywgMjUwNywgNjQxMjEsIDg3MjYsIDY1NTk0LCAwLCAwLCAwLCA4ODkyLCAwLCAKLSAgICA5MjMzOSwgMCwgMCwgNTc4MiwgNDIwLCAwLCAwLCA0Mzc5NiwgMTA3OTcsIDYzNzk0LCAwLCAwLCA2NDgxNCwgNjM3OTYsIAotICAgIDc3OTY1LCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMCwgMCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgMCwgNDM2NzYsIDAsIAotICAgIDY5NjczLCAwLCAwLCAwLCAzMjksIDc3OTY4LCA5MjcwNywgOTE3NTQ4LCA3Mzk5LCAwLCA0MTE4OCwgMTMyNDQsIDEyMDQ2NiwgCi0gICAgNDIxNjcsIDc0MzUsIDc4MTkzLCA1MzgwLCAxMTkwODYsIDY5MjI1LCAxMTU1LCAxMTM2NSwgNDMxMjYsIDc3OTcyLCAwLCAKLSAgICA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgNzk4NywgMCwgMTE3MiwgNjk3OTksIDY3ODYsIAotICAgIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIAotICAgIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDAsIDczODY4LCAxMTg5NDQsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMCwgNTM0MywgCi0gICAgNzg0MjIsIDAsIDQ1NTUsIDUzNDEsIDAsIDAsIDEyODY3MCwgNTM1MSwgMCwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCAKLSAgICA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCA5MTc4ODgsIDE5NDg5MiwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIAotICAgIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIAotICAgIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgCi0gICAgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIDAsIDI0MjMsIDc3OTU4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAwLCAKLSAgICAwLCAwLCAwLCA2NDYwNSwgMCwgMCwgMCwgNDkxNiwgMCwgMzgwLCAxMDk1OCwgNjY1NjMsIDc3OTU1LCA2OTc3MywgOTc3MywgCi0gICAgMTMxNjcsIDEyOTE4LCA0MTA5NiwgNzM5ODAsIDY5MjQ1LCA3ODI1NCwgOTE3ODkzLCAxMDY4NCwgMCwgOTE3ODk2LCAwLCAKLSAgICA3OTQ2LCAxMjU0MSwgODE4MiwgNjc1ODYsIDY5NzgwLCAwLCAwLCAwLCAwLCA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAwLCAKLSAgICAwLCA4ODQ3LCAwLCA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDAsIDkyNjA5LCAwLCAwLCAzMTI3LCAyNTk1LCA2NTcxMywgCi0gICAgNDIwMTMsIDAsIDU2MDcsIDQxMDg5LCAwLCAwLCA3NDI1NiwgMjY2NSwgMTEzMDQsIDAsIDc0MjAwLCA0OTcwLCA4NzY0LCAKKyAgICA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMCwgMTAxNzIsIDY1NDUzLCA2Mzc4OSwgNDEyNjQsIAorICAgIDc4NjU4LCA2NDI2LCA0NjQxLCA5MTc5LCA2NDgxOSwgNTUyNzgsIDQxMjU1LCA0MjAzNiwgNDE0NjksIDQxMjY5LCAKKyAgICAxMjA0MTIsIDQxMjY3LCA0NjQ2LCAxMjA0MjUsIDg2NSwgNDIwMzQsIDc4Mjc0LCA3ODI3MywgNDY0NSwgNDIwMzMsIAorICAgIDc4MjcwLCAxMjc5ODIsIDk4MzE3MiwgNjQ3MjgsIDAsIDc4NjczLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgCisgICAgMTk1MDg5LCA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKKyAgICAxMTkxNDMsIDAsIDAsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAxMTk1NjcsIAorICAgIDE5NTEwMSwgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCAwLCAwLCAwLCAxMDIyOSwgCisgICAgMTA2MzUsIDgyNiwgMTI4MDgxLCAxOTUwODIsIDE5NTA4NSwgMTk1MDg0LCAxOTUwODcsIDY0ODMsIDkyMjExLCAxODA4LCAKKyAgICA3ODQ4LCAwLCA4MTAwLCA3ODIyNywgNzg2NjksIDc4NjcwLCAxMzMwMSwgNzg2NjcsIDk2NjcsIDc4NjY1LCA3ODg3MiwgMCwgCisgICAgMTEwMDMsIDk5MDQsIDAsIDAsIDEyMDY5MCwgOTE0NCwgMTA5MjEsIDAsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIAorICAgIDc3ODQxLCAxMDMxMywgMCwgMCwgNjQzMjAsIDEwMjY1LCA3ODY4NiwgMTA5NjIsIDc4Njg0LCA0MzAwOCwgODk0NSwgCisgICAgNzg2ODMsIDAsIDQxLCAxOTUwNzIsIDE3OTIsIDEyMDUxNSwgMTk1MDczLCA4NjU1LCAxOTUwNzUsIDkyNTQ0LCA3Nzk1MSwgCisgICAgMTIwNjYsIDAsIDM4NSwgNDE1MiwgMjU4NSwgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDAsIDc0MTM2LCAxMDk1NywgOTgzNjk0LCAKKyAgICA0MzI1OCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCAwLCA5MTc1NDQsIDM1NzAsIDAsIDc0NDMsIDAsIDQ0MDA2LCA2OTk3LCAKKyAgICA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMCwgNjUyMTYsIDAsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKKyAgICA5MTc4NjIsIDc4MzksIDExOTkxMywgNzg4MDYsIDExOTkxMiwgOTY5MSwgNDQxMSwgNzg4MDIsIDAsIDAsIDQzNDQyLCAKKyAgICA2OTg1MSwgNjUyNTQsIDEwMDY2LCA5ODM4ODAsIDAsIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAKKyAgICAwLCAxMTk5MjMsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCAwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDAsIAorICAgIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDAsIDQxMTY2LCAwLCAxMjQ1NiwgMTE5OTE0LCAxNzEsIDU5NDEsIDEyNDUyLCAKKyAgICAxOTQ3MDksIDEyNDU4LCAxMjUzMSwgNzg3NzksIDQzMDEzLCA2MzgwMCwgNzQxNjIsIDEyNzU2OSwgMTIwNDgzLCA5OTY5LCAKKyAgICAxMjA3NjcsIDEyNDU0LCA2MzgwNiwgNDIxMzIsIDEyMDYzLCA3ODQyNSwgNzg0MjQsIDMyMzAsIDAsIDAsIDAsIDUyMDksIAorICAgIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCAKKyAgICA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAwLCA3NDgxNSwgMTA1MTIsIDAsIDc0ODE0LCA3ODg3NSwgCisgICAgMTI3NTA1LCA3ODg3NiwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3ODg3MywgNTg0NCwgNjgwMzEsIAorICAgIDExODgzOCwgMCwgMTI2NTQsIDQ2NjMsIDE4OTksIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDAsIDAsIDAsIAorICAgIDg4OTIsIDAsIDkyMzM5LCAwLCA5ODMwNzMsIDU3ODIsIDQyMCwgMCwgMCwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMCwgCisgICAgNjQ4MTQsIDYzNzk2LCA3Nzk2NSwgMCwgNjY1ODEsIDExOTIwNCwgNDE2MDgsIDAsIDAsIDYzNzkyLCA0NjU5LCAxMjA3ODgsIAorICAgIDAsIDQzNjc2LCAwLCA2OTY3MywgMCwgMCwgMCwgMzI5LCA3Nzk2OCwgOTI3MDcsIDkxNzU0OCwgNzM5OSwgMCwgNDExODgsIAorICAgIDEzMjQ0LCAxMjA0NjYsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgMTEzNjUsIAorICAgIDQzMTI2LCA3Nzk3MiwgMCwgNjU2ODQsIDAsIDU2MDEsIDY1MTkyLCA0Mjc2NSwgNjM3NTIsIDAsIDc5ODcsIDEyODU0MywgCisgICAgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCA1NjAzLCAwLCA0NDczLCAwLCAxOTQ4MjMsIDAsIAorICAgIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDAsIDEyNzM4NCwgNTM0NywgNjk4MDIsIDk4MzYyMywgNzM4NjgsIDExODk0NCwgCisgICAgMTA1ODgsIDAsIDAsIDYzNzU1LCAwLCA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCAwLCA3MDA3MSwgMTI4NjcwLCAKKyAgICA1MzUxLCA3ODY3NSwgNDMxMDQsIDY1MjQ0LCA5MTc4OTIsIDY0NTQxLCA0MjUxOSwgNzQ0NzIsIDAsIDAsIDc0NzY1LCAKKyAgICA5MTc4ODgsIDEyNzUxMCwgNjYzOCwgMCwgNjUxMTMsIDI3MSwgNzQxODAsIDY1MzcwLCA4ODM1LCA2NTM2OCwgMTI2NTMsIAorICAgIDY1MzY2LCA0MjE3MiwgNDEwODYsIDY1MzYzLCA2NTM2MiwgNjUzNjEsIDExOTEyLCA0MzQxMCwgMTEzMjMsIDY1MzU3LCAKKyAgICAxMTgwMCwgNjUzNTUsIDUzNDUsIDY1MzUzLCA2NTM1MiwgNjUzNTEsIDc2MSwgNjUzNDksIDE5OTU5LCA2OTcxOCwgNjM4NTYsIAorICAgIDEyNjYzNSwgMjQyMywgNzc5NTgsIDY0NjQ3LCA3Nzk1OSwgMTE5NTcsIDQ2OTksIDAsIDAsIDAsIDAsIDY0NjA1LCAwLCAwLCAKKyAgICAwLCA0OTE2LCAwLCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCAKKyAgICA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA5MTc4OTMsIDEwNjg0LCAwLCA5MTc4OTYsIDAsIDc5NDYsIDEyNTQxLCA4MTgyLCAKKyAgICA2NzU4NiwgNjk3ODAsIDAsIDAsIDAsIDAsIDkwMDUsIDEyMjUsIDY2MzAsIDAsIDAsIDAsIDY4MDExLCA4ODQ3LCAwLCAKKyAgICA2NTg3NiwgNTUzNSwgODMyOSwgNzQ1OTAsIDk4MzIwNiwgOTI2MDksIDAsIDAsIDMxMjcsIDI1OTUsIDY1NzEzLCA0MjAxMywgCisgICAgOTgzODQ5LCA1NjA3LCA0MTA4OSwgMCwgMCwgNzQyNTYsIDI2NjUsIDExMzA0LCA0Mzc1MSwgNzQyMDAsIDQ5NzAsIDg3NjQsIAogICAgIDEyMDQ1OSwgODkzNCwgOTI3MjYsIDQxNTY2LCA0NDkyLCAwLCA2NTAxMSwgNDEwOTAsIDAsIDAsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDEyODMwMSwgNDEwODEsIDI5MTIsIDExNzQ5LCA2OTc5MiwgMCwgMCwgMzU3MiwgMTAwMjMsIDQ5NTksIAotICAgIDEzMDc5LCAwLCAwLCA5NzI5LCAwLCAwLCAwLCA0MzM2MSwgMCwgMCwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgCi0gICAgMTI4MjkwLCAxMjcyNjAsIDQxNDUxLCAwLCAxMTA5NSwgODI3MywgMTI3NTMzLCAzNDUxLCAwLCA5NzIsIDQxNDUzLCAwLCAwLCAKLSAgICA3Mzg4MywgOTI0MDgsIDczOTQ1LCAwLCAzNDU1LCAxOTk1NSwgOTUzOCwgMCwgNjk4MDcsIDAsIDAsIDAsIDAsIDExMzk2LCAKLSAgICAwLCAxMTAxOSwgMCwgMCwgMCwgMTIwNTA3LCA0MTA3OCwgMCwgMjYxLCA1OTI3LCA3NzkxLCAwLCA2NDQ0NiwgMCwgMTA2OTYsIAotICAgIDAsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgMTI4NTYzLCAyODIsIDAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIAotICAgIDk4MDEsIDAsIDAsIDAsIDAsIDM0NzQsIDExODc4NywgMCwgMTIwNjU1LCA2MDgxLCAwLCAxMjc4NDMsIDc0MDc2LCA3ODg3OSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgODc1MSwgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCAKLSAgICA5MjYwOCwgMTIwMjcyLCAwLCA5NjQyLCAxMDkxMiwgOTU4LCAwLCAxMTM4NywgNzg4NzgsIDQ2NjYsIDAsIDQ5MTUsIDAsIAotICAgIDQ2NjksIDAsIDY4MDk5LCAxMzI4NywgNDY2NCwgMTA4MzYsIDEyMDU1MCwgMCwgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCAwLCAKLSAgICA5MTc4NzUsIDg2NjQsIDk2OTcsIDM2MDYsIDkxNzg3MywgMCwgMCwgNjQ4MTUsIDEwNjMsIDEyMDI1MCwgMTIwMjUxLCAKLSAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMjc5MzIsIDEyMDI1NywgMTIwMjU4LCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCi0gICAgOTIzODEsIDEyMDI1NSwgMTIwMjU2LCAxMjMwMSwgMTIwMjY2LCA2OTgyMCwgNDExMDIsIDY2NjA0LCAxMjAyNjIsIAotICAgIDEyMDI2MywgMTIwMjY0LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCAwLCAwLCA4NjA4LCA0Mjc4OSwgCi0gICAgMTIwNjEzLCAxMjg3MDQsIDAsIDExOTE5NiwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIAotICAgIDE2NDEsIDAsIDAsIDg5NjYsIDAsIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNzQxOTEsIDc0ODQzLCAwLCAKLSAgICAwLCA2MzA2LCAxMDE2OSwgMCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgCi0gICAgNDMxNzAsIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAKLSAgICAxMTQ0NywgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIAotICAgIDQxNDM1LCA0MzUyLCAwLCAyNDM1LCAxMjA4MDksIDU2MjEsIDEyMDM4NSwgNDIwMSwgMzc3OCwgNDIwMywgNDIwMiwgNDIwNSwgCi0gICAgNDIwNCwgMTIwNDQ3LCAzNzY4LCA2ODE0MiwgNzY1LCA0MTQ0MCwgMzc2NCwgODQ3MywgNjM3MywgODQ2OSwgMTIwNDM4LCAKLSAgICAxMjk0NywgNDU2NCwgMCwgMCwgNzQyNzEsIDczNzUzLCA4Mzc0LCAwLCAwLCA2ODI5LCA1MjI1LCAxMjg4MDcsIDEyNzM4NSwgCi0gICAgMCwgMCwgMTE5NjE1LCAwLCA3NDc5MywgNTYyNiwgNzM4MDcsIDExNzcxLCAwLCAxMjcyMzYsIDEyODAxOSwgMCwgNTM1MywgCi0gICAgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCAwLCA2OTUyLCAwLCAxMjA3NTIsIAotICAgIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgCi0gICAgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIDU2MjcsIDEyMDAxNywgCi0gICAgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDEwOTYxLCAwLCAyMDMsIDAsIDAsIDAsIDAsIDc4MzUwLCAwLCAKLSAgICA2NDM3OCwgNDIwNTQsIDAsIDAsIDU1NCwgMTE5NjQ5LCAxMTM1OCwgMCwgMTIxODIsIDQyMDQ4LCAxMTA2NSwgMTI3ODc4LCAKLSAgICA3Mzg5MSwgMCwgMCwgNTY5NCwgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDAsIDAsIAotICAgIDY5NzY0LCAwLCAwLCAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgMCwgNjk3NzAsIDQzNjUxLCAwLCA2ODExOCwgMTI4MDI0LCAKLSAgICAxMTI5LCAwLCAwLCA2NTkwMCwgMTk4NiwgNzg0NiwgNzg4MDQsIDg2NjEsIDkxNzc3MiwgNjUyNTUsIDAsIDM4NDUsIDQ0OTAsIAotICAgIDExODk2OSwgNjY0OSwgNzQ0MDAsIDE0NTYsIDc1MzAsIDExOTc3LCA3MjQ5LCA4MzY2LCAwLCA3NzU2LCAxMjM0MiwgCi0gICAgMTI4NTY4LCA1MSwgNDE1MTYsIDAsIDg1NzAsIDk1NjgsIDkxNzg2MywgNDU2LCA3MDI2LCA4MTQ1LCAxMTY4LCA5MjUxLCAKLSAgICA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIDAsIDQxNDk0LCAKLSAgICA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIAotICAgIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCA0MTQ1NywgMCwgCi0gICAgMTE5NTg5LCAxOTY5LCAyMzg0LCA4MDk3LCA5MTc4NjQsIDAsIDEyNzM4MCwgNzgwMjksIDg3NjYsIDAsIDc4MDc5LCA1ODU0LCAKLSAgICAxMjc5NzQsIDEwNTgzLCAwLCAxMTk5ODksIDAsIDEwNDE2LCA5MTc4NjksIDM4NzIsIDkxNzg2OCwgMCwgODQyOSwgMCwgCi0gICAgMTE4ODA2LCAyODM4LCAxMjg4MDIsIDAsIDkxNzg2NiwgMCwgMCwgMCwgMCwgMCwgMTEwOTYsIDEyMDgxMywgMTA1NTMsIAotICAgIDE2NjIsIDg0ODMsIDEyMDM5NiwgNDM2MDUsIDU4OTIsIDQzNDE4LCAwLCA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgCi0gICAgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgCi0gICAgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAwLCA5NjU5LCAwLCAwLCAwLCA5NTU2LCAwLCAKLSAgICA0NTAzLCAxMTM1MywgOTY0NywgMCwgNzgxODUsIDAsIDAsIDkyNzEzLCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCAKLSAgICA2NDM4LCA5MTc5NzksIDkxMDksIDc4ODgyLCAxMjg5LCA2NDU5OSwgMCwgMCwgMCwgNjU1MDcsIDI0NDcsIDAsIDAsIAotICAgIDEyODA0MiwgMCwgMCwgMCwgNjMzNCwgMCwgMCwgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCAKLSAgICA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgCi0gICAgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDAsIAotICAgIDExNzg1LCAwLCA2NDY3MSwgNDE5NzgsIDE0MTIsIDQ1OTQsIDEzOTEsIDEwNTM2LCA4MDY3LCA5OTAxLCA3Nzc1LCAKLSAgICAxMjgyOTMsIDAsIDc0NTg4LCAxMjA3NDgsIDMxNDAsIDEyODg1NCwgNzk2MCwgNDMyNzEsIDAsIDEyNTE4LCAxMDkwOSwgCi0gICAgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgMCwgMTI4Nzg3LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIAotICAgIDQyNjEsIDAsIDAsIDAsIDAsIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCAKLSAgICA0MjM1MiwgMTc1MiwgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCAwLCA2NTkxOSwgMCwgNjY5NSwgCi0gICAgNzIwLCAzMjQsIDAsIDAsIDQzNDA2LCAwLCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCAKLSAgICA2NDA0MSwgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMCwgMCwgCi0gICAgMCwgNTIwNCwgNzQ3NzQsIDQzNDA0LCA0MzM5NiwgMCwgMzk5NSwgNjgzNjAsIDY1NjA4LCAzNzE0LCAwLCAwLCAwLCAKKyAgICAxMTAwLCAwLCAxMjgzMDEsIDQxMDgxLCAyOTEyLCAxMTc0OSwgNjk3OTIsIDAsIDY4MDE5LCAzNTcyLCAxMDAyMywgNDk1OSwgCisgICAgMTMwNzksIDAsIDk4MzI2OCwgOTcyOSwgMCwgMCwgMCwgNDMzNjEsIDAsIDAsIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgCisgICAgMTMzMDQsIDEyODI5MCwgMTI3MjYwLCA0MTQ1MSwgMCwgMTEwOTUsIDgyNzMsIDEyNzUzMywgMzQ1MSwgOTgzMzAxLCA5NzIsIAorICAgIDQxNDUzLCA5ODM0MzQsIDAsIDczODgzLCA2ODAyMiwgNzM5NDUsIDk4MzcyNiwgMjI4OCwgMTk5NTUsIDk1MzgsIDAsIAorICAgIDY5ODA3LCAwLCAwLCAwLCAwLCAxMTM5NiwgOTgzNDMyLCAxMTAxOSwgMCwgMCwgMCwgNjgwMjAsIDQxMDc4LCA3MTM2NSwgCisgICAgMjYxLCA1OTI3LCA3NzkxLCAwLCA3MzYyLCAwLCAxMDY5NiwgMCwgNjA3MywgOTgzOCwgMTE4OTIwLCAwLCA2MDc1LCAKKyAgICA5Mzk5NSwgMjgyLCAxMjY1MTAsIDY0MzcsIDc0MDc4LCAxMjgwMDAsIDk4MDEsIDAsIDc0MTc3LCAwLCAwLCAzNDc0LCAKKyAgICAxMTg3ODcsIDAsIDEyMDY1NSwgNjA4MSwgMCwgNzg4NzQsIDc0MDc2LCA3ODg3OSwgMCwgMCwgMCwgMCwgMCwgODc1MSwgCisgICAgMTE0OTksIDEyMDI3MywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA5MjYwOCwgMTIwMjcyLCA2ODAxNywgCisgICAgOTY0MiwgMTA5MTIsIDk1OCwgMCwgMTEzODcsIDc4ODc4LCA0NjY2LCAwLCA0OTE1LCAwLCA0NjY5LCAwLCA2ODA5OSwgCisgICAgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDAsIDY5Nzc1LCAwLCA0MzU5NSwgNzQ1MCwgMCwgOTE3ODc1LCA4NjY0LCAKKyAgICA5Njk3LCAzNjA2LCA5MTc4NzMsIDAsIDAsIDY0ODE1LCAxMDYzLCAxMjAyNTAsIDEyMDI1MSwgOTc3MiwgNzI1NSwgODg4NiwgCisgICAgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgNDI2NjEsIDkyMzgxLCAxMjAyNTUsIAorICAgIDEyMDI1NiwgMTIzMDEsIDEyMDI2NiwgNjk4MjAsIDQxMTAyLCA2NDQyOCwgMTIwMjYyLCAxMjAyNjMsIDEyMDI2NCwgMTAxNywgCisgICAgNjY2MDAsIDUyMywgNTA1LCAxNDQ3LCA3NDQzNiwgMCwgMCwgMCwgODYwOCwgNDI3ODksIDEyMDYxMywgMTI4NzA0LCAwLCAKKyAgICA3Mzg1NSwgMTEzMDcsIDY2NzA3LCA5MTc4NzEsIDEyNzc1MSwgMTE3NDUsIDc5MTksIDAsIDE2NDEsIDAsIDAsIDg5NjYsIDAsIAorICAgIDAsIDU5MDgsIDAsIDAsIDY3NDQsIDEyODM1NSwgMTY5OSwgNjk4NjEsIDc0ODQzLCA5MTc5MzMsIDAsIDYzMDYsIDEwMTY5LCAKKyAgICA3MTMyNCwgMTE5MjUxLCAxMDA2OCwgMzc2NiwgMjM4OSwgMTIwNDU2LCAxMjA0NTUsIDY2MTEsIDI1NywgNDMxNzAsIAorICAgIDEzMTUzLCAwLCA0MjM4NiwgMCwgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgCisgICAgMTA1NDEsIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDAsIDQxNDM1LCA0MzUyLCAKKyAgICA5ODM2MTAsIDI0MzUsIDEyMDgwOSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKKyAgICAxMjA0NDcsIDM3NjgsIDY4MTQyLCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKKyAgICA0NTY0LCAwLCAwLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDk4MzE1NiwgMCwgNjgyOSwgNTIyNSwgMTI4ODA3LCAxMjczODUsIDAsIAorICAgIDAsIDExOTYxNSwgMCwgNzQ3OTMsIDU2MjYsIDczODA3LCAxMTc3MSwgNzQwNzUsIDEyNzIzNiwgMTI4MDE5LCA0MjYxNCwgCisgICAgNTM1MywgNTYyNSwgNzQxNzksIDAsIDAsIDEwMTAsIDY0NTcyLCA0MTc4MCwgNDI2MjMsIDY0Mjc3LCA2OTk0MiwgNjk1MiwgCisgICAgOTgzMjY0LCAxMjA3NTIsIDc4NzYyLCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIDEwNDcxLCAKKyAgICAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIDI0MDAsIAorICAgIDU2MjcsIDEyMDAxNywgMTIwMDE4LCAxMjAwMjMsIDY0Mjc1LCAxMjAwMjEsIDg3ODYsIDAsIDIwMywgMCwgMCwgMCwgMCwgCisgICAgNzgzNTAsIDAsIDY0Mzc4LCA0MjA1NCwgMCwgMCwgNTU0LCAxMTk2NDksIDExMzU4LCAwLCAxMjE4MiwgNDIwNDgsIDExMDY1LCAKKyAgICAxMjY0NjQsIDczODkxLCAwLCAwLCA1Njk0LCA3Njg5LCA2OTc5OCwgOTMyMywgNDMyNSwgMzA0NywgMTAzMTcsIDE3NSwgMCwgCisgICAgMCwgNjk3NjQsIDAsIDAsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCAwLCA2OTc3MCwgNDM2NTEsIDAsIDY4MTE4LCAKKyAgICAxMjgwMjQsIDExMjksIDEyNjU3NCwgMCwgNjU5MDAsIDE5ODYsIDc4NDYsIDc4ODA0LCA4NjYxLCA5MTc3NzIsIDY1MjU1LCAKKyAgICAwLCAzODQ1LCA0NDkwLCAxMTg5NjksIDY2NDksIDc0NDAwLCAxNDU2LCA3NTMwLCAxMTk3NywgNzI0OSwgODM2NiwgMCwgCisgICAgNzc1NiwgMTIzNDIsIDEyODU2OCwgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCA4MTQ1LCAKKyAgICAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgNjgxMjEsIAorICAgIDAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgMCwgMTA0MDUsIDAsIDc4ODAzLCAwLCAwLCA0MjA0MCwgNzM5MTgsIDExOTYyNywgCisgICAgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgNjQwNTEsIDc4ODY3LCA4MjE0LCAwLCAwLCAwLCAKKyAgICA0MTQ1NywgOTgzOTYxLCAxMTk1ODksIDE5NjksIDIzODQsIDgwOTcsIDkxNzg2NCwgNzQxMywgNjgwMTIsIDc4MDI5LCAKKyAgICA4NzY2LCAwLCA3ODA3OSwgNTg1NCwgMTI3OTc0LCAxMDU4MywgMCwgMTE5OTg5LCAwLCAxMDQxNiwgOTE3ODY5LCAzODcyLCAKKyAgICA5MTc4NjgsIDAsIDg0MjksIDAsIDExODgwNiwgMjgzOCwgMTI4ODAyLCAwLCA5MTc4NjYsIDAsIDAsIDAsIDk4Mzk1OCwgCisgICAgOTQwMDUsIDExMDk2LCAxMjA4MTMsIDEwNTUzLCAxNjYyLCA4NDgzLCAxMjAzOTYsIDQzNjA1LCA1ODkyLCA0MzQxOCwgMCwgCisgICAgNzM3NDIsIDY2LCA2NSwgNjgsIDY3LCA3MCwgNjksIDcyLCA3MSwgNzQsIDczLCA3NiwgNzUsIDc4LCA3NywgODAsIDc5LCAKKyAgICA4MiwgODEsIDg0LCA4MywgODYsIDg1LCA4OCwgODcsIDkwLCA4OSwgMTE5ODYyLCAxMDM1NywgNzM4NSwgODE3MCwgMTcwNCwgCisgICAgODU1NiwgMCwgOTY1OSwgMCwgMCwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDAsIDc4MTg1LCAwLCAwLCAKKyAgICA5MjcxMywgNzg4ODYsIDAsIDAsIDc0MjI5LCA2NjU5MywgNjQzOCwgOTE3OTc5LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIAorICAgIDAsIDY4MDA5LCAwLCA2NTUwNywgMjQ0NywgMCwgMCwgMTI4MDQyLCAxMjY1NDUsIDk4MzEzNywgMCwgNjMzNCwgMCwgMCwgCisgICAgMTk5MzcsIDAsIDkyMzY4LCAwLCA1Njc1LCAyNTQsIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIAorICAgIDQyMzEyLCAwLCAwLCA2OTcyLCA0MjgyNiwgMCwgNDI0NjQsIDEyMDU2NywgMCwgOTI2NDUsIDc0Nzk2LCA2NDQwMCwgCisgICAgNjQ2OTMsIDAsIDc3ODYxLCA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgCisgICAgNjQ2NzEsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCAKKyAgICA3NDU4OCwgMTIwNzQ4LCAzMTQwLCAxMjg4NTQsIDc5NjAsIDQzMjcxLCAwLCAxMjUxOCwgMTA5MDksIDEyNzUwOCwgMTQyOCwgCisgICAgMTI0NzIsIDAsIDY5ODY0LCA3Njk5LCAxMjM5MywgMCwgMCwgMCwgNzQ1MTgsIDgyMjMsIDAsIDQyNjEsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEyODMwMiwgMCwgMTI4MDQ2LCA0MzQxOSwgMCwgNjQ1NTQsIDEwNTc0LCAzODc4LCAwLCA0MjM1MiwgMTc1MiwgCisgICAgNzM3ODUsIDAsIDQyNTA2LCAxMjg1NDEsIDEwMTk5LCAwLCAwLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAKKyAgICAwLCA0MzQwNiwgOTgzNzI3LCAxNDY0LCA0MDk4NSwgMCwgNzk3NCwgMCwgNDM0NzQsIDAsIDY0NDg4LCAwLCAwLCA2NDA0MSwgCisgICAgNzQ3ODcsIDAsIDc4ODY1LCA5MjI1OCwgNjU1OTcsIDAsIDc4ODYzLCAwLCAxMzAyLCAwLCA3ODg2MSwgMTE5MTM0LCAwLCAwLCAKKyAgICA1MjA0LCA3NDc3NCwgNDM0MDQsIDExODM1LCAwLCAzOTk1LCA2ODM2MCwgNjU2MDgsIDM3MTQsIDkyMTkwLCAwLCAwLCAKICAgICAxMDk5OSwgMTE3NTAsIDAsIDQzMjUxLCA2ODY2MCwgNDMzMDEsIDAsIDEyMDU1NywgODEzMCwgODY3MiwgMTA4NDUsIAotICAgIDExOTY0LCAwLCAwLCAwLCAwLCA2ODQ1NSwgNDI4NjMsIDczODM5LCAwLCAwLCAwLCAwLCAwLCAwLCA0NjgsIDYxMiwgMCwgCi0gICAgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgMCwgMTIyODAsIDAsIDU0MCwgNzQ1NjQsIDExOTAxNywgCi0gICAgMCwgODQzMiwgMCwgMTEwNzMsIDAsIDY0MzE2LCAwLCAwLCA4MjAsIDQxNzQxLCAwLCAxMjA2NjcsIDAsIDY0Njg0LCAKLSAgICAxMjY5OTIsIDMzNTksIDc4MDAsIDEyODY0NCwgNjUxNzcsIDYyMjYsIDM1MywgMTIzOTYsIDAsIDExOTYxMiwgNjQ3NDIsIAotICAgIDEyODY4MiwgMTIwMjgyLCAwLCAwLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIDk0ODEsIDQyNDE4LCAKLSAgICAwLCA0MTE1NywgMCwgMTE5NSwgNjQ4OTgsIDc5MjQsIDAsIDQxMTUxLCAyMDEwLCAwLCA0MTMyOCwgNDIzNDQsIDAsIAotICAgIDEyNDA5LCAwLCA0MzYwLCAxMjcwMDksIDk3MzksIDAsIDc0MzkyLCA3MzkyMSwgMCwgNDI1MjEsIDg1MzksIDAsIDAsIAotICAgIDExODk4NiwgMCwgNDc4OCwgMCwgMCwgNjU3MzQsIDAsIDQzNzkwLCAwLCAxMzA3NSwgNzQ0MjksIDAsIDY0NTY5LCA0MzUzMiwgCi0gICAgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIAotICAgIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDAsIAotICAgIDY3MzQsIDQxMzQzLCAxMTk4NDgsIDY1NDM5LCAxMjcwOSwgNjk4NiwgOTIzNjQsIDAsIDAsIDQxMzQ5LCAxMTkxMjMsIAotICAgIDEyNTgxLCAxMDM3NCwgNTE3NSwgMCwgNzM4MDYsIDEwMjU0LCAwLCAxMDI3OCwgMTAyNjIsIDc3OTUwLCA0MTM0NiwgMCwgCi0gICAgNjA3LCAwLCAxMTk4NTMsIDEyODg0NiwgMTI5MjMsIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCAKLSAgICA4MjY1LCAwLCAxMTk4MzQsIDQwOTc1LCA1ODQwLCA0MjgzOCwgMCwgNDA5NzgsIDAsIDExOTg0MCwgMCwgMCwgMCwgNjY0NDQsIAotICAgIDEwNTM4LCAwLCAyNTUwLCAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgCi0gICAgNjU4MjIsIDAsIDE5NDg4MiwgNzQ1NSwgMCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAwLCAKLSAgICAxMjA1NTEsIDQyMzgwLCA2NDg5NSwgNDM2OTMsIDY2NDUxLCA4MDgsIDU0NTUsIDExMzQ3LCAwLCAxMDI2LCA1NjIwLCAKLSAgICAxOTQ4ODcsIDAsIDExMzUwLCA1NjE3LCAwLCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCAxMjgwNjAsIDEzMzgsIAotICAgIDEyMDU4MSwgMCwgMTI3MzksIDQ2MDMsIDMwODQsIDAsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgCi0gICAgMTAyOTAsIDAsIDMwODMsIDEwMzIyLCAwLCAwLCAwLCA0MTAzNiwgMCwgMCwgNDMzMjEsIDY1NjA2LCAwLCA0MTAzMiwgCi0gICAgNDIzODgsIDAsIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIDE5NDg5MywgMCwgNDA5NjAsIDAsIDE5NDg5MSwgMCwgCi0gICAgNDA5NjMsIDY0OTUyLCAxMDQwMiwgMCwgMCwgOTIzMDQsIDEwNjAzLCAwLCAwLCAwLCAwLCA2NzE0LCAxMDA4MywgMTI3MDY5LCAKLSAgICAxOTQ4OTUsIDc4MzY3LCAxMjczNzcsIDAsIDAsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCA0Nzg3LCAwLCAKLSAgICA3NDgyOSwgMCwgNjU0MjMsIDAsIDEyODExOCwgOTU3MCwgMCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCi0gICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMywgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCisgICAgMTE5NjQsIDAsIDk4MzE4NSwgMCwgMCwgNjg0NTUsIDQyODYzLCA3MzgzOSwgMCwgMCwgMCwgMCwgMTI2NjI5LCAwLCA0NjgsIAorICAgIDYxMiwgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgOTgzMTYzLCAxMjI4MCwgMCwgNTQwLCAKKyAgICA3NDU2NCwgMTE5MDE3LCAwLCA4NDMyLCAwLCAxMTA3MywgMCwgNjQzMTYsIDAsIDAsIDgyMCwgNDE3NDEsIDAsIDEyMDY2NywgCisgICAgMCwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCA2MjI2LCAzNTMsIDEyMzk2LCAwLCAxMTk2MTIsIAorICAgIDY0NzQyLCAxMjg2ODIsIDEyMDI4MiwgMCwgOTgzNDQyLCAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzg4NDcsIDE4ODQsIAorICAgIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDAsIDExOTUsIDY0ODk4LCA3OTI0LCAwLCA0MTE1MSwgMjAxMCwgMCwgCisgICAgNDEzMjgsIDQyMzQ0LCAwLCAxMjQwOSwgMCwgNDM2MCwgMTI3MDA5LCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgMCwgCisgICAgNDI1MjEsIDg1MzksIDk4MzcxNiwgMCwgMTE4OTg2LCAwLCA0Nzg4LCAwLCA2ODAyMywgNjU3MzQsIDk4MzQ0NywgNDM3OTAsIAorICAgIDAsIDEzMDc1LCA3NDQyOSwgOTQwNjMsIDY0NTY5LCA0MzUzMiwgMTA4MzcsIDI0OTIsIDEyNzE5NywgMTE4OTAxLCA2ODYzNywgCisgICAgNDExMzYsIDQzNzg1LCAxMTgxMywgOTY0OSwgNDExNTQsIDExOTYxNywgNTEyOCwgNDAzOCwgNDExNDMsIDY1NjA0LCAKKyAgICA2NDg1OSwgNDE1OTIsIDY3NzEsIDE2NDgsIDU0MzUsIDkxNzgzNywgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAorICAgIDEyNzA5LCA2OTg2LCA5MjM2NCwgNjgwMTUsIDAsIDQxMzQ5LCA3MDAyMSwgMTI1ODEsIDEwMzc0LCA1MTc1LCAwLCA3MzgwNiwgCisgICAgMTAyNTQsIDAsIDEwMjc4LCAxMDI2MiwgNjk4NTgsIDQxMzQ2LCAwLCA2MDcsIDAsIDExOTg1MiwgMTI4ODQ2LCAxMjkyMywgCisgICAgMTAzMTQsIDEwMjgyLCA2NTQ3NywgMTAzNzgsIDEyMDI5NywgNDA5NzYsIDgyNjUsIDAsIDExOTgzNCwgNDA5NzUsIDU4NDAsIAorICAgIDQyODM4LCAwLCA0MDk3OCwgOTgzODg4LCAxMTk4NDAsIDAsIDk4MzA3MSwgMCwgNjY0NDQsIDEwNTM4LCAwLCAyNTUwLCAKKyAgICAxMTk4MzYsIDY3NzksIDAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgMCwgMCwgNTYxOSwgNjU4MjIsIDEyNjU2NywgCisgICAgMTk0ODgyLCA3NDU1LCAwLCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgMTA3MjcsIDU2MTUsIDAsIDEyMDU1MSwgNDIzODAsIAorICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDAsIDEwMjYsIDU2MjAsIDE5NDg4NywgMCwgMTEzNTAsIAorICAgIDU2MTcsIDAsIDkyMjUsIDY0NjM5LCAxMjcwNzMsIDkxNDUsIDEyODA2MCwgMTMzOCwgMTIwNTgxLCA5ODMxNTgsIDEyNzM5LCAKKyAgICA0NjAzLCAzMDg0LCA5ODMxNTUsIDkyNDg0LCA5ODU4LCA2MDM3LCAwLCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzY5NSwgCisgICAgMzA4MywgMTAzMjIsIDAsIDAsIDAsIDQxMDM2LCAwLCAwLCA0MzMyMSwgNjU2MDYsIDAsIDQxMDMyLCA0MjM4OCwgMCwgCisgICAgNjQ3MDAsIDEwMDExLCAxNDQ1LCA0MDk2MSwgMCwgMTE5MTA1LCAwLCA0MDk2MCwgMCwgMTk0ODkxLCAwLCA0MDk2MywgCisgICAgNjQ5NTIsIDEwNDAyLCAwLCAwLCA5MjMwNCwgMTA2MDMsIDAsIDAsIDk4MzExMywgMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCisgICAgMTk0ODk1LCA3ODM2NywgMTI3Mzc3LCAwLCA5Mzk2MywgOTA3MywgNDI1ODUsIDY0MzAyLCAxMDcwNCwgNjUwMzAsIDQ3ODcsIAorICAgIDAsIDc0ODI5LCAwLCA2NTQyMywgMCwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMCwgCisgICAgOTE3NjI0LCA0Mzc0MCwgMCwgNDA5NjYsIDkxNzYyMiwgMTMyODYsIDM5OTgsIDQyNTk4LCA0MjU5NiwgNTAzLCA3NDIzNywgCiAgICAgODczNSwgMjY5MCwgNjY0ODgsIDQyODM2LCAxMjcxNTAsIDQxOTU0LCA5MTc2MTcsIDE2NTIsIDc3MiwgNjY4OCwgODMxMCwgCiAgICAgNjU0MjgsIDM0ODcsIDQzNDE2LCAzNTg1LCAxMDE5NCwgNDMzMjAsIDExOTE1OSwgMTI4MTgzLCAxOTQ4NzQsIDY0NjgsIAotICAgIDQxOTc2LCA5NzIwLCA5MTc2MDYsIDExNzY3LCA0MTk3MCwgMCwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIDEyMTgwLCAKLSAgICA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIAotICAgIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIDM2MzgsIAotICAgIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgMCwgMTE5MTgyLCA2OTI0NCwgMCwgMCwgMTE3NTksIAotICAgIDE5NDkwMywgNjM2OCwgNzQ4MjMsIDAsIDQxNDIzLCA4MDc4LCAxMDUwNCwgMCwgNDE2OTgsIDQyMjM3LCAwLCA3MDAyLCAwLCAKLSAgICA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIAotICAgIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIAotICAgIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCi0gICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAotICAgIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgCi0gICAgMCwgMTA1OTgsIDc0MTAsIDI2NjksIDkwMywgMCwgMjkyMCwgMCwgMTI3MjMyLCA3NDYwMywgNjQ1MDQsIDE5OTI4LCAwLCAwLCAKLSAgICAzOTE3LCAwLCAxMTczMiwgMCwgMCwgNDE0NDgsIDQxNDYxLCAxMjg4MjMsIDAsIDEyNzkxMiwgMCwgODgxOSwgMTI2NjMsIDAsIAotICAgIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgMCwgMCwgOTA5NCwgMCwgMTE3NTgsIAotICAgIDY4NDI1LCAwLCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAwLCA3ODYyLCA2NDU1MSwgCi0gICAgMTMyMjQsIDg1MTYsIDQxODYyLCA2NjY1MCwgNzU2MSwgNzg2MTgsIDY5NzkzLCAxODc4LCAwLCAwLCAyOTExLCAwLCAKLSAgICA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgCi0gICAgMjQwNiwgNzc1LCAwLCA2NTU4NCwgMCwgNjA3NCwgOTYxOCwgMTI4NjY4LCAwLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgCi0gICAgMzY1NiwgMCwgMTk0ODk5LCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAKLSAgICAxMjU5OCwgMCwgMTIwNzM0LCA3ODc0NSwgNzQ1MDAsIDQxNDYwLCAxMDE0NSwgMTA1NDIsIDk5MzcsIDc4NzQ2LCAwLCAKKyAgICA0MTk3NiwgOTcyMCwgOTE3NjA2LCAxMTc2NywgNDE5NzAsIDE5NDU5NiwgNTgzNiwgMTIzNTgsIDAsIDQzNTUsIDkwNDgsIAorICAgIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgCisgICAgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIDQxNDY2LCAwLCA5MjU4OCwgMTE0NTAsIDAsIAorICAgIDM2MzgsIDEyMzU0LCAwLCAzMjE2LCAwLCAyMzU4LCA5MjYwNiwgODYzMywgMCwgOTgzNzM2LCAxMTkxODIsIDY5MjQ0LCAwLCAKKyAgICAwLCAxMTc1OSwgMTk0OTAzLCA2MzY4LCA3NDgyMywgMCwgNDE0MjMsIDgwNzgsIDEwNTA0LCAxMjc1NTgsIDQxNjk4LCAKKyAgICA0MjIzNywgMCwgNzAwMiwgOTgzNjY5LCA0MTQzMCwgNDIyNjcsIDQxMDUxLCA0MTQ4NCwgMCwgMCwgNDEwNTAsIDQxNDczLCAKKyAgICAxMDQ2NiwgMTMwOTksIDAsIDAsIDAsIDY0MzUsIDAsIDExMzYyLCAwLCAwLCA2NTM4MiwgMCwgNDE0MjAsIDAsIDM2MjUsIAorICAgIDc4MTU3LCA0MTQwOSwgMCwgNjk2MzksIDIwNDEsIDkxNzgsIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDAsIDAsIDAsIAorICAgIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgCisgICAgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIDAsIDQyMjkwLCAzMjc1LCA5MjQ3MiwgNDIzMjksIDc0NzU5LCAwLCAwLCAwLCAKKyAgICA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgOTgzMTQwLCAxMDU5OCwgNzQxMCwgMjY2OSwgOTAzLCAwLCAyOTIwLCAwLCAKKyAgICAxMjcyMzIsIDc0NjAzLCA2NDUwNCwgMTk5MjgsIDAsIDAsIDM5MTcsIDAsIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCAKKyAgICA0MTQ2MSwgMTI4ODIzLCAwLCAxMjc5MTIsIDAsIDg4MTksIDEyNjYzLCAwLCA0MTE4NCwgNzQwMTQsIDIzMiwgNzQ4MzUsIAorICAgIDEyMDY0NiwgOTE2OCwgNjU3ODYsIDAsIDAsIDAsIDkwOTQsIDAsIDExNzU4LCA2ODQyNSwgMCwgMTA2NCwgNDI0NjcsIAorICAgIDEyODA0NCwgMTAxMTUsIDE5OTI0LCA5MjcxMSwgMCwgNzg2MiwgNjQ1NTEsIDEzMjI0LCA4NTE2LCA0MTg2MiwgNjY2NTAsIAorICAgIDc1NjEsIDc4NjE4LCA2OTc5MywgMTg3OCwgMCwgOTgzMjYxLCAyOTExLCAwLCA0MTE3OCwgNTQyNywgNjQ4MjMsIDAsIDAsIAorICAgIDM3ODcsIDQxMTc0LCAwLCA0MTQ1OCwgMCwgNDE0NjMsIDQyNDEzLCAxMTI5MiwgMjQwNiwgNzc1LCAwLCA2NTU4NCwgCisgICAgNjk5MjMsIDYwNzQsIDk2MTgsIDEyODY2OCwgOTgzOTQzLCA0MzQ0MCwgMCwgMTk0OTAxLCA0MTQzNiwgMzY1NiwgMCwgCisgICAgMTIwNjAwLCA0MTQ1NiwgMCwgMTU5OSwgMTEzMzMsIDAsIDY3MDMsIDg1MTMsIDAsIDE2MTMsIDAsIDY4NDU2LCAxMjU5OCwgCisgICAgOTgzMTkxLCAxMjA3MzQsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDcwMDI5LCAKICAgICA5OTA1LCAwLCA2NTczMCwgMCwgMTIwMzc0LCA4NDI3LCAxMjAzNzUsIDU1MjQ2LCAxMjAzNzYsIDAsIDExNDk3LCA2NDY4NywgCiAgICAgNzQwMDgsIDQyNTkyLCAzODcxLCAwLCAxMjgzMDUsIDkxMTEsIDU3NDEsIDAsIDE5NDg0NiwgMTIwMzY2LCAxMTkxMTEsIAogICAgIDEyMDc0NSwgMCwgMTIwMzY4LCAwLCAxMTY0OCwgMCwgMTk0ODczLCAxMjAzNjQsIDQxNTg3LCAxMjAzNjUsIDAsIDc0MzIyLCAKICAgICA0MjExMywgMCwgMTI3MTU1LCAxMjE3MiwgMCwgNzQ1MzAsIDY1Mjk4LCA2NTcyMywgMTk0ODQwLCA3Mzg3MSwgNjU3MjQsIAotICAgIDc5MjgsIDEyMDM1NCwgMCwgNDE1OTUsIDczNzMwLCAwLCA0MjExOCwgNzM4MzAsIDY2MDQyLCAxMDM1NSwgMCwgNzg3NSwgMCwgCi0gICAgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIDY1MTczLCA2NTI4NiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgMCwgMCwgNzgxOTQsIDY0MzI2LCAKLSAgICA0MDk2OSwgMTA1MjYsIDc4NzUzLCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIDc4NzU2LCAwLCA2NTQ2MCwgMTIyNDIsIAotICAgIDEyODUxMywgODAyMCwgMTA4NDMsIDExNTU0LCAwLCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIDAsIDEwNzEwLCAwLCAKLSAgICAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCAxOTUwOTEsIDAsIDExOTYzNiwgNjc4NTcsIDEyMDY4NywgMCwgMCwgCi0gICAgMTE3NTUsIDY2MzA1LCAwLCAwLCAxMDkxNywgMTIwNzY3LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIDQxMzI2LCAxOTUwNjAsIAotICAgIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgMTk4NCwgMTk0NjIxLCAKLSAgICAwLCA5MjI5MywgNDA5ODQsIDEyODMwNiwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDAsIDQxNjYzLCAwLCAwLCAwLCA5MjM3LCAKLSAgICA5Mzg1LCA0MTY0OCwgMCwgMCwgMCwgNDE2NjYsIDE4MzAsIDczNzgzLCAyMDU2LCA0MTI4NywgOTI2MTAsIDAsIDAsIAotICAgIDQyMjE5LCAxMjgyNTcsIDAsIDQxOTg3LCA0MTY3NiwgMCwgMTIwODIzLCAwLCA0MTY3MCwgMCwgOTI1OTAsIDI3OTYsIAotICAgIDU1MjkxLCAxMTY4MywgOTkwMiwgNzQ1MjEsIDAsIDExNDUxLCAwLCAxMjg4MjIsIDQyNjMxLCAyMzU5LCAwLCA2Nzg0NCwgCi0gICAgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAxMzEzMywgNjQzNjgsIDAsIDEyODc5NSwgMCwgMzk3LCA0MzYyMiwgNDIxMzksIAotICAgIDk1NDcsIDk1OTAsIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMCwgNDI4LCA5NjIwLCAKLSAgICAxNDY2LCA3ODExMiwgMTA5ODIsIDExODgzMSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAwLCAwLCAKLSAgICAwLCA1ODA0LCAxMTk3NiwgODU1NCwgOTI3MjEsIDAsIDAsIDkwNTcsIDQyMjk0LCA0MTIxOCwgMCwgMCwgNzgxMzcsIDE4ODMsIAotICAgIDEwOTUyLCA4MDQ4LCA3ODE0MiwgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMCwgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgCi0gICAgMTE5MDc0LCAxOTQ4MjEsIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIAotICAgIDE5NDgyNCwgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIAotICAgIDEyMDUwMCwgMCwgNzE0MCwgMTA5NzcsIDEyNzM3OCwgNDE2NCwgOTA4MSwgMCwgMTIwNTY5LCA0MjA0OSwgNDIwNDIsIAotICAgIDg3MDksIDEyODI4MywgMCwgMTIwNjM3LCA0MjQxOSwgNjQ3OTksIDQyMDQ3LCAwLCAwLCA4NDcwLCAxMTgwNywgNjU4OTcsIAotICAgIDU3NywgMCwgMCwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIAotICAgIDQyNjQzLCA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgCi0gICAgOTE3NjEyLCA2NjMxNSwgMjEwNiwgMTIwMjIyLCAxMTI3MywgMCwgNDMwMDQsIDc1NDEsIDAsIDAsIDk2MSwgNjQzMDcsIAotICAgIDY2MzI0LCA2NDkwNiwgMTI4NTkxLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDAsIDg5MSwgMTIxMDUsIDAsIDQyNjI0LCAKLSAgICAxMjgwMiwgMzI2NCwgODgyNCwgMTMyNjgsIDQzMDAzLCAxMDkzNiwgMCwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMCwgMjMyMiwgCi0gICAgMTIwMzcxLCAwLCAxMTQ0OSwgMTI4MTg3LCA0Mjg2OCwgNDEyODUsIDM1NDcsIDAsIDAsIDAsIDAsIDQzMjE2LCA2MDg5LCAKLSAgICA3ODY4MiwgMCwgMTIwNTc4LCA0MTcwLCAxMDI5LCAxMjc3NjEsIDEyNzAzNiwgMTE5MjI0LCA0MjM3NCwgMCwgNzQ0LCAwLCAKLSAgICAwLCAwLCA2NTgyMywgMTI3ODI2LCAwLCAzNTUxLCAwLCAwLCA0NjIzLCA1NTI2OCwgMCwgNDU5OCwgMCwgNjUxMzYsIAotICAgIDEyNzEzNiwgMCwgMCwgMTA4NTEsIDAsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgMTIwNzc4LCA3ODY0OCwgCi0gICAgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAxMjA1ODAsIDAsIDAsIDYxNzcsIAotICAgIDkwMjAsIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDc1MTgsIDg3NTQsIDAsIAotICAgIDEyMDIzNywgMjEzNywgNDMwODEsIDAsIDAsIDkxMzYsIDEyMDI0MCwgNDQwMSwgNDEyODAsIDAsIDg5NzQsIDIzMDgsIDAsIAotICAgIDc0MTQ5LCAwLCAyMzE4LCAwLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgNjUyNjYsIDEyMDgyNywgCi0gICAgNzQzMDcsIDAsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAwLCAwLCAKLSAgICAxMTg5NDksIDEwODc0LCA2NTUwNSwgMTI4MDgzLCAwLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCA0MjA1MiwgMCwgMCwgCi0gICAgNjc2NTEsIDAsIDk2NjUsIDkyMzAwLCAwLCAxMzE4MSwgMCwgMCwgMCwgMCwgNzQxNDgsIDAsIDAsIDEyMDIyNSwgMTIwMjI5LCAKLSAgICAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgMCwgMCwgMCwgNDExNDgsIDg2ODMsIDc1OTQsIDEyNzUxOSwgMCwgMTE5MDkwLCAKLSAgICAxMDg2OSwgNDM0NTgsIDQxMTQ2LCA5MjQwNywgMTE0NDEsIDAsIDM1MTIsIDExOTYzMywgMCwgODEwMywgMCwgMCwgNjUxODQsIAotICAgIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAKLSAgICAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAwLCAwLCAwLCAzODA0LCAxMzA3MCwgCi0gICAgMTE1NTcsIDQyMDQ0LCAwLCAxMDk1LCAwLCAzNTk5LCAxMjc3NzQsIDAsIDEyODg2MSwgODUxNCwgMCwgMCwgMCwgNzQzNDYsIAotICAgIDY2Njk3LCAwLCAxMTY4NCwgMCwgOTI0ODYsIDAsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgCi0gICAgNDAzNiwgMCwgMCwgMTI4MjEzLCAxOTQ4NjEsIDAsIDExOTU0LCAwLCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIAotICAgIDkyNzIyLCAwLCAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIAotICAgIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgCi0gICAgMCwgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAwLCA3NzU1LCAwLCAKLSAgICAwLCA2NDU0OCwgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDAsIDEyNzAwNCwgMCwgMTIxODgsIDAsIDE2MTcsIDgwNTAsIAotICAgIDAsIDUwMTUsIDAsIDExOTE3NCwgNDI1OTAsIDE5NDg3MSwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgCi0gICAgNzU1NSwgMTMxMDMsIDU0MDgsIDI4MTcsIDEyMTQsIDAsIDkyMzM1LCAwLCAwLCAwLCAwLCAxMjcxOTUsIDc5NTcsIDg2ODksIAotICAgIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDE5NDgxMywgMCwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgMCwgCi0gICAgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAwLCAwLCAwLCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAKLSAgICAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCAwLCA3MDMsIDAsIDMyNzIsIAotICAgIDg3ODEsIDEyODk0LCAwLCAxMTcwOSwgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgCi0gICAgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAKLSAgICAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCAwLCAwLCAwLCAKLSAgICAwLCAxMDAzOSwgMCwgMCwgNTYyMywgNTcxNywgNTc3NiwgMCwgMCwgMCwgNDE1OTEsIDExMDM2LCA2NTI1MiwgOTIzODIsIDAsIAotICAgIDAsIDAsIDY3ODQ4LCAwLCAwLCAwLCA4ODg3LCAwLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKLSAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCAwLCA4ODEwLCA3NDQ5OSwgNjg2LCAwLCAKLSAgICAwLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgNjUxMTgsIDAsIAotICAgIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgMCwgMCwgNjU0NTUsIDAsIDkyMjQ2LCAwLCAKLSAgICAxMTkxMjksIDAsIDEyODg2LCAxMjc5MjAsIDY2NjI0LCAwLCA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzQxMzUsIDAsIAotICAgIDExODk0NSwgNzgxMTgsIDczODUxLCAzMDEwLCA2NDQxLCA3ODEyMiwgMTQ1OCwgNDE0NzUsIDEyODY3MiwgMCwgMCwgCi0gICAgMTE0NzksIDAsIDAsIDYzNTAsIDEyODY0LCA2OTY3NCwgNzgxMTQsIDEwNjEsIDY0NzgwLCAyMDAxLCA0MzExMSwgNTUyMzAsIAotICAgIDEyODY4NiwgNDA1MiwgMCwgNzYyNiwgMCwgMCwgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDAsIDAsIDQzNzA3LCA3NDEyNywgMCwgCi0gICAgMCwgODQ4NiwgMCwgNzM3NTgsIDIzMzUsIDQzNjIsIDAsIDAsIDY5MjIxLCAxMDI1LCAwLCA0MjYyNSwgOTE3NjI3LCAKLSAgICA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMCwgMCwgNDE0NDUsIDc4MjM2LCAwLCA4NTY3LCAKLSAgICA0MTQ0MiwgMzk4OCwgMCwgNzgyMzcsIDExODkxMCwgMCwgNjUyNzQsIDg1NjQsIDc4MTk5LCA3ODIzOCwgMTI3NTE1LCAwLCAKLSAgICAwLCA0MzQ0NiwgMCwgNjY1MTMsIDYyNTYsIDAsIDU3OSwgNTUyMTgsIDEwMjA2LCAwLCA2Mzc1LCAyNjczLCAwLCAxMTgxNCwgCi0gICAgMCwgNDQ4OCwgMCwgMTI3MzM2LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCAKLSAgICA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCA3ODI1NywgNzIwMywgMCwgNjE0LCA3ODE5MSwgCi0gICAgMTI3MzI1LCAxMjA2MTUsIDAsIDc4MjYyLCAxMjg2NjksIDEyNzMyMywgMCwgNDMxMjEsIDAsIDAsIDkyNTEzLCAxMDUwLCAKLSAgICA3NTQ5LCAwLCAwLCA5MzE0LCAwLCAwLCAxMjA2MTYsIDAsIDEwMDU3LCAwLCAxMjczMTMsIDAsIDY2NTA0LCAwLCAwLCAKLSAgICAyMzA3LCAwLCA2NDMzMywgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCAwLCAwLCAxMjc5NzMsIDEyODcwOCwgMCwgMTAzNjAsIAotICAgIDY3NDYsIDAsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMCwgOTk1NywgMCwgNjY0NDcsIDgwNDYsIAotICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDAsIDEwNDg3LCAwLCAKLSAgICAxMjUyNywgMCwgNzk3MCwgMCwgMTI4NjYwLCAwLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIDAsIDAsIDUyMzcsIAotICAgIDY5NzE0LCAwLCAxMDEwMywgNTI0NywgNDc2OSwgMCwgMTE4OTc3LCAxMjg3MywgNTc2NCwgMCwgMCwgMzAwOCwgNDg5NiwgMCwgCi0gICAgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIDkyNzE3LCAwLCA0NzcwLCAwLCA5MTc1NjcsIAotICAgIDg3MzEsIDY1Mzc4LCAxMjczNjIsIDEyMDYxOSwgOTEyMiwgMTI4MDMzLCAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgCi0gICAgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAKLSAgICAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIAotICAgIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAKLSAgICAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIAotICAgIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgCi0gICAgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAKLSAgICAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIAotICAgIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIAotICAgIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCAKLSAgICA0MTQ5MCwgMCwgMTQyNiwgNjgyMTcsIDAsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDE5NDk5MSwgNzgwNjcsIDAsIAotICAgIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCA2NDcxMiwgCi0gICAgMTA3NDQsIDAsIDk5MCwgNTY0NywgMCwgNzM4NywgNzg3MzQsIDQxMTE0LCAxMTQ3NywgNTY0NiwgMTI4NzksIDExMDE4LCAwLCAKLSAgICAzOTQ1LCA5MjU4OSwgMCwgMCwgMCwgMCwgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDAsIDc4NzMxLCA1NjQ4LCAKLSAgICA2NDc0OCwgMTk0OTEwLCAwLCAxMDIwNSwgMzU0NSwgMCwgNjk4NCwgMCwgNzQwNTEsIDAsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIAotICAgIDAsIDAsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDAsIDExODgzNiwgMCwgNzg0MjcsIAotICAgIDExNDAsIDc4NDI2LCAwLCAxMDE1OSwgMCwgMCwgODEyOCwgMCwgMCwgOTE3OTY1LCAxODE1LCAxOTkxMCwgODkwLCAwLCAKLSAgICAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDAsIDQ0MTAsIDEwNDEsIDEwNTc2LCA2MzU0LCA5MjU4MSwgNTgwLCA3NDIzMiwgMCwgCisgICAgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgMCwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIAorICAgIDk4MzExMCwgNzg3NSwgMCwgNDE1OTgsIDM5OTMsIDAsIDE1NDUsIDQwOTcxLCA1MzYsIDEyODUyMSwgNDMwMjksIDAsIDAsIAorICAgIDY1MTczLCA2NTI4NiwgMCwgMCwgMCwgMCwgMCwgMCwgNDEzNzUsIDU0MDIsIDAsIDAsIDE2ODcsIDEyMDUwMywgOTE3ODE3LCAKKyAgICAwLCA3ODE5NCwgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzg3NTMsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDAsIAorICAgIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDAsIDAsIDgyNjYsIDQxMDA2LCA2NTcyMiwgMCwgCisgICAgMTA3MTAsIDAsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDE5NTA5MSwgMCwgMTE5NjM2LCA2Nzg1NywgMTIwNjg3LCAKKyAgICAwLCA5ODMwNjYsIDExNzU1LCA2NjMwNSwgMCwgMCwgMTA5MTcsIDkzOTc5LCAwLCAxMTI3MiwgMjA0MCwgNDEyNDcsIAorICAgIDQxMzI2LCAxOTUwNjAsIDE3NDEsIDQyMzcwLCAxMjI3LCAwLCAwLCAxMTQxMywgMCwgMCwgNTI4MywgMTU4NiwgNDk3OCwgMCwgCisgICAgMTk4NCwgMTE4MzAsIDAsIDkyMjkzLCA0MDk4NCwgMTI4MzA2LCA5MzczLCAwLCAxMjkxNiwgNjI4NCwgMCwgNDE2NjMsIDAsIAorICAgIDAsIDAsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxOTQ1ODAsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCisgICAgNDEyODcsIDkyNjEwLCAwLCAwLCA0MjIxOSwgMTI4MjU3LCAwLCA0MTk4NywgNDE2NzYsIDk4MzA1OSwgMTIwODIzLCAKKyAgICA5ODMxNDQsIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCAKKyAgICA5ODMxMTEsIDEyODgyMiwgNDI2MzEsIDIzNTksIDAsIDY3ODQ0LCA3NDE2NCwgNDEyMzgsIDU0OCwgMTE0MDUsIDEzMTMzLCAKKyAgICA2NDM2OCwgOTgzMjMzLCAxMjg3OTUsIDAsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAorICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDAsIDQyOCwgOTYyMCwgMTQ2NiwgNzgxMTIsIDEwOTgyLCAKKyAgICAxMTg4MzEsIDEzMzMsIDcxMDQsIDQwNywgNjQyNSwgMTI4ODM0LCA3NDI1MywgMCwgMCwgMCwgNTgwNCwgMTE5NzYsIDg1NTQsIAorICAgIDkyNzIxLCAwLCAwLCA5MDU3LCA0MjI5NCwgNDEyMTgsIDAsIDAsIDc4MTM3LCAxODgzLCAxMDk1MiwgODA0OCwgNzgxNDIsIAorICAgIDQxMjI1LCA5MjYyMSwgNDI5MTUsIDk4MzY2NywgMTI4Njg0LCAwLCA0NDA3LCAwLCA2NTgwOSwgMTE5MDc0LCAxOTQ4MjEsIAorICAgIDg0NDgsIDcxNDEsIDc0MTgzLCAwLCAxMjY3NSwgMTI2NTksIDAsIDQyMzYzLCAxMjA2MjQsIDE5NDgyNCwgNTUyNzMsIAorICAgIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEyMDUwMCwgMTE5MTU4LCAKKyAgICA3MTQwLCAxMDk3NywgMTI3Mzc4LCA0MTY0LCA5MDgxLCAwLCAxMjA1NjksIDQyMDQ5LCA0MjA0MiwgODcwOSwgMTI4MjgzLCAKKyAgICAxMjY0NzcsIDEyMDYzNywgNDI0MTksIDY0Nzk5LCA0MjA0NywgMCwgMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIAorICAgIDk4Mzc1MSwgNzQzMDAsIDAsIDEyNzMwOCwgNzQ4NDAsIDAsIDAsIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCAKKyAgICA5NjgzLCA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDAsIDY2MzMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2NjMxNywgNjk5NDUsIAorICAgIDY2MzE1LCAyMTA2LCAxMjAyMjIsIDExMjczLCAwLCA0MzAwNCwgNzU0MSwgMCwgMCwgOTYxLCA2NDMwNywgNjYzMjQsIAorICAgIDY0OTA2LCAxMjg1OTEsIDMxMDYsIDY1OTE3LCA0MTI4NCwgMTY5NiwgMCwgODkxLCAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAKKyAgICAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAwLCAwLCAwLCAxOTQ4MjYsIDkyNjg4LCAwLCAyMzIyLCAxMjAzNzEsIAorICAgIDk4MzU4NCwgMTE0NDksIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCAwLCAwLCAxMjg3OTMsIDk4MzM5MCwgNDMyMTYsIAorICAgIDYwODksIDc4NjgyLCAwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTI3MDM2LCAxMTkyMjQsIDQyMzc0LCAwLCAKKyAgICA3NDQsIDAsIDAsIDAsIDY1ODIzLCAxMjc4MjYsIDAsIDM1NTEsIDAsIDAsIDQ2MjMsIDU1MjY4LCAwLCA0NTk4LCA5ODMxNjIsIAorICAgIDY1MTM2LCAxMjcxMzYsIDAsIDAsIDEwODUxLCAwLCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIDEyMDc3OCwgCisgICAgNzg2NDgsIDExOTcyLCA3ODY0NiwgNzg2NDcsIDc4NjQ0LCA3ODY0NSwgMTc3LCA3ODY0MywgNjE3NiwgMTIwNTgwLCAwLCAwLCAKKyAgICA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAxMjgwMjcsIDY3NjczLCAyMjE0LCAKKyAgICA4NzU0LCAwLCAxMjAyMzcsIDIxMzcsIDQzMDgxLCAwLCAwLCA5MTM2LCAxMjAyNDAsIDQ0MDEsIDQxMjgwLCAwLCA4OTc0LCAKKyAgICAyMzA4LCAwLCA3NDE0OSwgMCwgMjMxOCwgOTgzMTgzLCA2NjM2MSwgODE5OCwgMCwgNjQzNjAsIDEyNjAxLCA0MjUzNiwgCisgICAgNjUyNjYsIDEyMDgyNywgNzQzMDcsIDkyNDYyLCA2OTcwLCA1NDA0LCA0MzMzMiwgMzY2NywgNzkzNiwgMTI5MjUsIAorICAgIDEyNjk4OSwgNjM4NSwgMCwgMCwgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyODA4MywgMCwgNDIwNTMsIDIwNzUsIDQyMDU3LCAKKyAgICAxMTA4MywgNDIwNTIsIDAsIDAsIDY3NjUxLCAwLCA5NjY1LCA5MjMwMCwgOTgzNjU3LCAxMzE4MSwgMCwgMCwgMCwgNzAwODgsIAorICAgIDc0MTQ4LCAwLCAwLCAxMjAyMjUsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDAsIDk0MDk2LCA5ODM5MzcsIAorICAgIDQxMTQ4LCA4NjgzLCA3NTk0LCAxMjc1MTksIDAsIDExOTA5MCwgMTA4NjksIDQzNDU4LCA0MTE0NiwgOTI0MDcsIDExNDQxLCAKKyAgICAwLCAzNTEyLCAxMTk2MzMsIDk4MzcwMCwgODEwMywgMCwgMCwgNjUxODQsIDExNzgwLCA0MTU2MywgNDI3OTYsIDAsIAorICAgIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDAsIDAsIDAsIDAsIDE5OTQyLCAwLCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgCisgICAgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCA5NDA2NCwgMCwgMCwgMzgwNCwgMTMwNzAsIDExNTU3LCA0MjA0NCwgMCwgMTA5NSwgCisgICAgMCwgMzU5OSwgMTI3Nzc0LCAwLCAxMjg4NjEsIDg1MTQsIDAsIDAsIDAsIDc0MzQ2LCA2NjY5NywgMCwgMTE2ODQsIDAsIAorICAgIDkyNDg2LCA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDAsIDQyMDQ2LCA3ODI0MSwgNDAzNiwgMTI2NDgxLCAwLCAKKyAgICAxMjgyMTMsIDE5NDg2MSwgMCwgMTE5NTQsIDkzOTc4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAwLCAKKyAgICAwLCAxMjc3NzIsIDAsIDkxNzU0MiwgMCwgMCwgNjUzOSwgMCwgMCwgMCwgMTk0ODU2LCAwLCAxMjA0OTIsIDQxMTkwLCAKKyAgICAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDAsIDEyNzE5NCwgMCwgMTk0ODU0LCA2NTc5MiwgMCwgCisgICAgMTE4OTY4LCA2NDE3LCAxMTg5MTgsIDc4MTc4LCAwLCAxOTQ4NTAsIDAsIDAsIDQ5MTksIDEwNTkwLCAxMjg1NTYsIDc3NTUsIAorICAgIDAsIDAsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCA2NTEyNiwgMCwgMTI3MDA0LCAwLCAxMjE4OCwgOTgzNjU5LCAKKyAgICAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCAxOTQ4NzEsIDE3NTYsIDc4MTgxLCAwLCA2NTc2OCwgCisgICAgNjM1MiwgNDE4OTIsIDAsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDk4MzEyNSwgMCwgCisgICAgMCwgMCwgMTI3MTk1LCA3OTU3LCA4Njg5LCA2NDcyMywgMTA1NiwgNDI4OTYsIDc0MTQ3LCAxOTQ4MTMsIDAsIDU1Mjg2LCAKKyAgICA3MDczLCA2NTg1MCwgMTIzMjcsIDk4MzkzOSwgMTE5MDI4LCAwLCAwLCAwLCAyMzQxLCA4NDUwLCA4NDg0LCA4NDc0LCAKKyAgICA5ODMyNTIsIDAsIDcwMDc5LCA4NDYxLCAxMjgxMDIsIDEyMTUzLCAxMjc5OSwgMCwgNDM3MDksIDQzNzA4LCA5NDUxLCAKKyAgICA3NTcxLCAxMzA3MywgMCwgMCwgNjgxLCA5ODMyNDYsIDcwMywgMCwgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgCisgICAgOTIyODgsIDc0NDQ2LCAwLCA5MjUzMiwgMCwgMTEzMzgsIDEyMDc2OCwgMzI3NiwgMCwgMCwgNjU5MjgsIDAsIDAsIDY1MDIxLCAKKyAgICA2NDc5NSwgNzQ1NzQsIDAsIDEwMDQ3LCA3ODgxNCwgMzI2MiwgNzg4MTEsIDQyNzExLCAwLCAwLCA2ODQ3OCwgMTYzLCA1NzYsIAorICAgIDk4OTUsIDE2NTUsIDc4ODE3LCA3NDU5MSwgNzg4MTUsIDc4ODE2LCA5ODMxMjIsIDAsIDAsIDAsIDEwMDM5LCAwLCAKKyAgICA5ODM5MzYsIDU2MjMsIDU3MTcsIDU3NzYsIDAsIDAsIDAsIDQxNTkxLCAxMTAzNiwgNjUyNTIsIDkyMzgyLCAwLCAwLCAwLCAKKyAgICA2Nzg0OCwgMCwgMCwgMCwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgMCwgNDMxNTcsIDAsIDg5NDYsIDEwMzQ4LCAKKyAgICAxMDQxMiwgODc1NSwgMCwgMCwgNTcxOCwgMTMyMjEsIDAsIDAsIDc4MTM1LCAwLCA5ODM3MDIsIDg4MTAsIDc0NDk5LCA2ODYsIAorICAgIDAsIDcxMzYyLCA0NjE5LCAxMTg5NTQsIDY2NTQsIDczNzY5LCA3NDQyNiwgMCwgMTIwNDAsIDY1Njg5LCAxMDEyOCwgCisgICAgNjUxMTgsIDAsIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAwLCAyNDAxLCA2ODE0NCwgODc5MiwgOTgzNjM5LCAwLCA2NTQ1NSwgCisgICAgMCwgOTIyNDYsIDAsIDExOTEyOSwgMCwgMTI4ODYsIDEyNzkyMCwgNjY2MjQsIDAsIDQzNTU3LCAxMDMwMCwgMTAxNjEsIAorICAgIDEwMzk2LCA3NDEzNSwgOTgzNDQ1LCAxMTg5NDUsIDc4MTE4LCA3Mzg1MSwgMzAxMCwgNjQ0MSwgNzgxMjIsIDE0NTgsIAorICAgIDQxNDc1LCAxMjg2NzIsIDkzOTc1LCAwLCAxMTQ3OSwgMCwgMTIwMzU2LCA2MzUwLCAxMjg2NCwgNjk2NzQsIDc4MTE0LCAKKyAgICAxMDYxLCA2NDc4MCwgMjAwMSwgNDMxMTEsIDU1MjMwLCAxMjg2ODYsIDQwNTIsIDAsIDc2MjYsIDAsIDAsIDEwNDUsIDAsIAorICAgIDU2MzEsIDQxMTEzLCAwLCAwLCA0MzcwNywgNzQxMjcsIDAsIDAsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCAKKyAgICA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIDAsIDQyNjI1LCA5MTc2MjcsIDc4MDg0LCA0MTQ0MywgMCwgMTI4MjA2LCAKKyAgICAwLCAxNzc0LCAxNTIzLCAwLCAwLCA0MTQ0NSwgNzgyMzYsIDAsIDg1NjcsIDQxNDQyLCAzOTg4LCAwLCA3ODIzNywgCisgICAgMTE4OTEwLCAwLCA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDAsIDAsIDQzNDQ2LCAwLCA2NjUxMywgCisgICAgNjI1NiwgMCwgNTc5LCA1NTIxOCwgMTAyMDYsIDk4MzA3NSwgNjM3NSwgMjY3MywgMCwgMTE4MTQsIDAsIDQ0ODgsIDAsIAorICAgIDEyNzMzNiwgNjg0NTEsIDEwNDQ0LCAxMTg4NDYsIDEyNzMzNCwgMTE3OTksIDc0NDA3LCA2ODQ2NiwgNDQ4NywgMTI3ODQ5LCAKKyAgICA0MjgzMiwgMTAzMiwgMTIwMjY3LCA0MzQ1MCwgNzgyNTcsIDcyMDMsIDAsIDYxNCwgNzgxOTEsIDEyNzMyNSwgMTIwNjE1LCAKKyAgICAwLCA3ODI2MiwgMTI4NjY5LCAxMjczMjMsIDAsIDQzMTIxLCAwLCAwLCA5MjUxMywgMTA1MCwgNzU0OSwgMCwgMCwgOTMxNCwgCisgICAgMCwgMCwgMTIwNjE2LCAwLCAxMDA1NywgMCwgMTI3MzEzLCAwLCA2NjUwNCwgOTgzMTcxLCAwLCAyMzA3LCAwLCA2NDMzMywgCisgICAgMTI3MzEyLCAxMjg1NDcsIDczODczLCAwLCA5NDAzNSwgMCwgMTI3OTczLCAxMjg3MDgsIDAsIDEwMzYwLCA2NzQ2LCAwLCAKKyAgICA5MjI0NSwgNDQwLCAwLCAxMzA4NSwgOTIzMywgNzQyMTYsIDAsIDAsIDk5NTcsIDEyODI4NSwgNjY0NDcsIDgwNDYsIAorICAgIDY0OTYzLCA2NTc3NywgMTAxMjUsIDc0MjEyLCA0MjgxOSwgMTA5MTAsIDAsIDE1MjEsIDk4OTYsIDkzOTY1LCAxMDQ4NywgCisgICAgNjk4NzgsIDEyNTI3LCAwLCA3OTcwLCAwLCAxMjg2NjAsIDAsIDY1NzY5LCA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgCisgICAgOTgzMjI5LCAwLCA1MjM3LCA2OTcxNCwgMCwgMTAxMDMsIDUyNDcsIDQ3NjksIDAsIDExODk3NywgMTI4NzMsIDIyODMsIAorICAgIDk4MzIzMSwgMCwgMzAwOCwgNDg5NiwgMCwgMTIwODcsIDAsIDU1MjMxLCA0MTEwMywgMCwgNjQ1NjUsIDQ3NzMsIDAsIAorICAgIDkyNzE3LCA3MDA3NCwgNDc3MCwgMCwgOTE3NTY3LCA4NzMxLCA2NTM3OCwgMTI3MzYyLCAxMjA2MTksIDkxMjIsIDEyODAzMywgCisgICAgMTI2NjAwLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMCwgMCwgMCwgMCwgCisgICAgNzQ3NzYsIDQyODEsIDQ3NjgsIDAsIDQxNTM1LCA0MDk5LCA5MDE3LCAwLCAwLCA3ODA5NSwgMCwgNzgwOTYsIDAsIDAsIDAsIAorICAgIDc4MDk4LCAwLCA0MjgxNCwgODgwLCAwLCAwLCAxMjgwMjEsIDIxMzQsIDAsIDEwMTE2LCA5ODc3LCA5MjMyOSwgMCwgMCwgCisgICAgNzA5NSwgMCwgNzQxMTYsIDY3NzgsIDAsIDc4MDkwLCA4MjQzLCAyNDI3LCAxMjgxNDEsIDcwOTMsIDAsIDExNTg1LCAKKyAgICAxOTUwMDMsIDk5NjIsIDAsIDEyMjIzLCAwLCAwLCAxNDM0LCAxMjAyNTQsIDU2MzcsIDExNTczLCAwLCAwLCAwLCAxOTk1MSwgCisgICAgMCwgNzgxMjEsIDAsIDAsIDU1MjgzLCAwLCAwLCA3NDQzNywgMTE1NiwgODc0MCwgOTI0MTUsIDM3ODIsIDY0MzMxLCAwLCAKKyAgICA0MTM3MCwgMTAxNCwgODI2MSwgMCwgMCwgMTA4MzUsIDAsIDY1NTM2LCAwLCAxMjA0NjMsIDAsIDc3MDIsIDExODgyNCwgMCwgCisgICAgNDMwMTAsIDY1Nzc5LCA2NTc4MywgMTE1MCwgMTA1NDcsIDU3MDAsIDAsIDEyMDYwMywgNjUzODMsIDIzMzksIDQyNTk0LCAKKyAgICA1Njk3LCAxMTg3ODgsIDAsIDEyODU3NiwgMCwgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDAsIDAsIAorICAgIDc2MzQsIDY1MTY3LCA5ODQ1LCAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgOTgzMTUzLCAxNDI2LCA2ODIxNywgMCwgCisgICAgNjg0NDcsIDQyMjA0LCA1NTI3MCwgODU3MSwgMTk0OTkxLCA3ODA2NywgMCwgNzg4MTgsIDkyNzE5LCA0MzE4MiwgMTIxODQsIAorICAgIDAsIDQyMDIyLCAwLCAxMDI4MSwgMCwgNTY1MCwgNDMxOTQsIDY0NzEyLCAxMDc0NCwgMCwgOTkwLCA1NjQ3LCAwLCA3Mzg3LCAKKyAgICA3ODczNCwgNDExMTQsIDExNDc3LCA1NjQ2LCAxMjg3OSwgMTEwMTgsIDk4MzkyMSwgMzk0NSwgOTI1ODksIDAsIDAsIDAsIDAsIAorICAgIDc4MjEyLCAxMjc3NDYsIDEwMjAsIDczNzYzLCAwLCA3ODczMSwgNTY0OCwgNjQ3NDgsIDE5NDkxMCwgNzg3MzMsIDEwMjA1LCAKKyAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDAsIDc0MDUxLCA5ODM2NDYsIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDAsIDAsIDAsIDk5MTEsIAorICAgIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY1MywgMTE4ODM2LCA5ODM3MzksIDc4NDI3LCAxMTQwLCAKKyAgICA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDAsIDAsIDkxNzk2NSwgMTgxNSwgMTk5MTAsIDg5MCwgMCwgMzI2NywgCisgICAgOTIyOTEsIDAsIDEwMTIzLCAwLCA0NDEwLCAxMDQxLCAxMDU3NiwgNjM1NCwgOTI1ODEsIDU4MCwgNzQyMzIsIDAsIAogICAgIDEyODM0NywgMCwgMCwgMCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDAsIDAsIDMyOTgsIDUzNzUsIDEwMTQyLCAwLCA4MjE1LCAKLSAgICAwLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDAsIDEyODIxNSwgMCwgMCwgMCwgNDEzODIsIDAsIDEyODY1MywgNTE3MywgNjUzNDgsIAorICAgIDAsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgMCwgNjk4OTksIDAsIDAsIDAsIDQxMzgyLCAwLCAxMjg2NTMsIDUxNzMsIDY1MzQ4LCAKICAgICA1MjcsIDAsIDAsIDkyNjEyLCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAyMzI5LCAKLSAgICA0MjI1MCwgMCwgMTI4ODY0LCA2OTY2NywgMTIyNDUsIDE1NjgsIDAsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIDkyNzA4LCAKLSAgICA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIAotICAgIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgMCwgMCwgMCwgCi0gICAgMCwgNjY0NDksIDEzMjYzLCA3NDI4MSwgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDAsIDAsIDkyMjk0LCAwLCAxMDQ0LCAKLSAgICA0MTI3NiwgMCwgMCwgMCwgNDIwNjgsIDExNzk1LCAwLCAwLCAwLCAwLCA0MjQ1MCwgMzkwNywgMCwgNjQ1MjYsIDkxNzg0NywgCi0gICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCAwLCAwLCAwLCAwLCAxMDU3LCA1NjYsIAotICAgIDQyNjk2LCAwLCAzMDE2LCA0MjI3NCwgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA5MjUxMCwgMzAwNiwgCi0gICAgNDYyMCwgMTI3MjM3LCAwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgMCwgMCwgCi0gICAgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDAsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgCi0gICAgMCwgMCwgMTA1MiwgMTA1MSwgNDU5LCAxMDYwLCA3NDM0OSwgNjY0NzksIDAsIDAsIDAsIDAsIDQyNDkwLCA2ODksIDY1MDgsIAotICAgIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgMCwgMTIxMzAsIDAsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIAotICAgIDY2NDgxLCAxMjc4NTAsIDAsIDAsIDYzNTksIDAsIDQzNDcxLCAwLCAwLCAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIAotICAgIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAKLSAgICAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCAwLCAxMjA0MTMsIDAsIDEyNzI1NywgNjU4OTQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDExOTE4NywgMjEzNSwgNzg4NjgsIDAsIDAsIDc4ODY5LCA0MjMxMywgNTU3OSwgOTI0MTIsIDAsIDAsIDAsIDAsIDU1NzgsIAotICAgIDQxNzc0LCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgMCwgMCwgMCwgMTI3NTA2LCA2ODIwMiwgNTU4MywgMCwgCi0gICAgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDU1ODIsIDQyNDY1LCA0MTMzMCwgMTk0OTg3LCA1Nzk1LCAKLSAgICA2NTUxMiwgMTE5MDA2LCA2NTcwMiwgMCwgMTIwODAxLCA2NTI1MSwgMCwgNjU3MTAsIDAsIDAsIDY3NjcyLCAwLCA1MzcwLCAKLSAgICAwLCAyOTMxLCAxNjM4LCAxMDk2NiwgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCAwLCAxMjg4MzAsIDgxNzIsIAotICAgIDQyMDE3LCAwLCAxMDg0NCwgMCwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgMCwgMCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCi0gICAgMTE5OTk5LCAwLCA3Mzk1LCAwLCAxMDcwLCA2NDkwMCwgNzE1MywgNjA5NSwgNDE4NjUsIDAsIDMwMTUsIDEyODAyMywgCi0gICAgOTE3NzYzLCA1MjExLCAwLCA2NDAwLCAwLCAxOTQ5ODMsIDAsIDgxODksIDExMjc2LCAwLCAwLCAzNzIsIDEyODgyOSwgMCwgCi0gICAgMTE4ODc0LCA0MjEwMiwgNDE1ODUsIDEyODIwMiwgMCwgNDIxMDEsIDI3NiwgNzg0MDIsIDAsIDMzLCA3NDIyNiwgMTI3MzAzLCAKLSAgICA5MDA3LCAxMTg3OTYsIDQxNTg4LCA2NjAzMywgNDI3LCAxMDc2MywgMTE4ODE5LCAwLCAxMjc4ODQsIDAsIDEwMzEsIDYyNTcsIAotICAgIDAsIDQyMTA0LCAwLCAwLCAyMzI4LCA5MjQwOSwgMTA3MSwgMCwgMCwgNzQ4NDgsIDAsIDAsIDAsIDEwNDcsIDAsIDAsIAotICAgIDY0NzkwLCAwLCA2OTcyMywgMTA2NTEsIDAsIDAsIDAsIDAsIDkyMjA2LCAxMTkxODEsIDU3MTEsIDQxNjMzLCAxMjA5OCwgCi0gICAgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDAsIDY3OTAsIDY1MTY4LCAxMzIxNiwgMCwgNjk3MTYsIDY5NzI2LCAwLCA2NDYxMSwgCi0gICAgNDE2MjMsIDE5NTAwMSwgNTcxNSwgNjk2NTQsIDAsIDAsIDU3MTIsIDI3NjEsIDQxNjIwLCA2ODEyNCwgMzA3NCwgNTcyMiwgCi0gICAgMCwgODY0MywgNzM3NjgsIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDc0NDk4LCA4OTEwLCAxMDY4OSwgNjQ3OSwgCi0gICAgMCwgMCwgMCwgNzg2MDcsIDkxOTYsIDY5NjcwLCAwLCAwLCAwLCAwLCAxMTg5MTEsIDAsIDAsIDAsIDAsIDAsIDEyMDAxMCwgCi0gICAgMCwgODcwMSwgNjgxMzAsIDExOTYxNiwgMTIwNTIyLCAwLCA0MjQ3NywgMCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCAKLSAgICA2NDk0NiwgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgMTIwNjYxLCAxMzI0OSwgNjU2NzksIDczODA4LCAwLCAKLSAgICA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIDE5NDk5NywgMTIwMDA1LCAwLCAKLSAgICAwLCA1MDg0LCAwLCAwLCAxMTg4NjEsIDAsIDczMywgOTE3ODc2LCA3ODAxNCwgNzg0MzYsIDc4NDM1LCA0MTY3NywgMCwgCi0gICAgOTIxOCwgMTczMSwgMCwgMCwgMCwgMTk1MDEwLCAwLCAwLCAwLCAxMjAwMDEsIDEyNzAxOCwgOTI0OTIsIDUxNTUsIDAsIAotICAgIDUzNTgsIDAsIDAsIDkxNzc2NywgNjQ0MjQsIDAsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMCwgMCwgNjg0MzAsIDExOTExNiwgCi0gICAgNDMyNTMsIDY1OTQzLCAwLCAzMzcxLCAxMDk4OCwgMCwgODc3MSwgMTQ3OSwgMCwgMCwgMTEwOSwgMTE1ODAsIDAsIDY0NjAxLCAKLSAgICAxMjIwNSwgMCwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgMCwgNzQ4NDIsIDAsIDAsIDEyMTQ5LCAxMzA4OCwgNTUxLCAwLCAKLSAgICAxMDE1NiwgMTIxMTksIDkyNTcyLCAwLCAyNTQ0LCA2NTA3NCwgMTE5MjExLCAwLCAwLCA3ODAxMSwgMzUxLCAxMTkxNDksIDAsIAotICAgIDAsIDU1MjI5LCAwLCA3NDI2OCwgMCwgMCwgMCwgNDIzNzcsIDAsIDAsIDAsIDAsIDAsIDkwMTMsIDQwNTQsIDAsIDAsIDAsIAotICAgIDAsIDczOTYwLCA1NTg1LCA2NTg4MSwgMjU0OSwgNzQ0NjksIDAsIDAsIDU1ODQsIDgzNTgsIDAsIDc0NDExLCA5MjIxOSwgCi0gICAgMTA5MTksIDAsIDc5ODAsIDAsIDAsIDAsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAKLSAgICAxMTM1NiwgMCwgMCwgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA5MjUzNSwgODEzNSwgCi0gICAgNjQ1MCwgMTAwNTUsIDc3OTk2LCAwLCAwLCAwLCA1NjU3LCAwLCA5NjI2LCAwLCA3Nzk5NCwgMTAxNzksIDU2NTQsIDEyOTM5LCAKLSAgICA5MjU3MywgMTIwNzk5LCAwLCAwLCA1NjUyLCAxMDk0NSwgMCwgNjY0ODYsIDAsIDM2NjEsIDc4NjMsIDAsIDAsIDAsIAotICAgIDc0NTA5LCAwLCA1NjU5LCAwLCAxMjc1MTAsIDY2NzI5LCA1NjU1LCAwLCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAKLSAgICAxMjc3OTIsIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIAotICAgIDEwMzA0LCAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCAwLCA2NDg3MCwgMCwgMzQ2NywgMCwgMCwgCi0gICAgMzMzMSwgOTQ2LCAxMDIzMSwgMTQ5NSwgODEzMSwgNzQzMzAsIDAsIDk1NjIsIDY5MjIyLCA2NTkyNywgMCwgMCwgNjk2OTYsIAotICAgIDY5NzY5LCA2NDY1NiwgMCwgMCwgMTk0ODM3LCAwLCA1NjY2LCA2NTIyNywgNTMxOCwgNjM5OTQsIDAsIDkwOTEsIDEwNzk4LCAKLSAgICAwLCAxMjgxNjYsIDEwMTg2LCAwLCA3NzMyLCAwLCA2NDU1NiwgMCwgMCwgNTY2OCwgNzQ0NDUsIDAsIDAsIDU2NzAsIDAsIAotICAgIDEyNzI5NywgMTE4MjAsIDI5OTIsIDc4MjYsIDU2NjcsIDE5OTUyLCAxMjA4MDcsIDAsIDEyNzQ5LCA3NDU1MSwgMCwgMCwgCi0gICAgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMCwgMCwgMCwgMCwgMzU3MSwgMTMyNDcsIDAsIDc5NzMsIAotICAgIDY2MzUzLCA2ODQzNSwgNzgyNzgsIDY3ODk2LCA0MzE5MiwgMCwgNzgyNjUsIDU1MywgMTIwNjUzLCAwLCAxMjg1NTQsIAotICAgIDU4MjksIDAsIDQ1ODcsIDc4Mjg1LCA2NTkxMiwgMCwgMTI3NDYsIDAsIDAsIDExOTkyNCwgNTYzMywgMTE5OTI3LCAwLCAwLCAKLSAgICAwLCA2NDkwNSwgMCwgOTUxMiwgMTIwNjcxLCAxMjc0MiwgNjQ0MywgMCwgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAKLSAgICAxMjg4MzIsIDAsIDAsIDEyMTQ4LCAwLCA3ODI5NywgMCwgNjQyNTYsIDAsIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAwLCAKLSAgICAxMjcyNzAsIDAsIDExODg4MCwgMjQyNSwgNjUxODIsIDEyODc2OSwgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDAsIDAsIAotICAgIDY5ODE1LCA1NjM2LCAwLCA1MzI5LCAwLCA1NjM4LCAxMTk5MTgsIDc5NDAsIDY0OTM4LCA0MzIyMywgMCwgNTYzNSwgMzM3MywgCi0gICAgMjk4NiwgNzgyOTIsIDc0MjIzLCAzNDM3LCA3ODI5MSwgNjIwMywgNDI0NywgMCwgMTE5MjAsIDgyNzQsIDAsIDAsIDE2NTcsIAotICAgIDQxNTYxLCA3ODI5OSwgNzgyOTUsIDU2MzksIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCAwLCA3ODMwMCwgNDIyMjcsIDAsIAotICAgIDAsIDQxNjM3LCA2Nzg3MiwgMCwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIAotICAgIDU0ODYsIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgMCwgMCwgNTY0MSwgODI1OSwgMCwgMTA1OCwgMCwgNjc2MzAsIDAsIAotICAgIDAsIDExNDQsIDc4NzUwLCAwLCA0MjIyOCwgMCwgNzM4OTAsIDExODk3MiwgMCwgNjUzMjIsIDAsIDU2NDUsIDY0OTY0LCAKLSAgICA4NjUyLCAyNTQ3LCA2NjQ4NCwgNDM2MzQsIDAsIDU2MDgsIDY1ODkwLCA0MzgwOCwgMCwgNjc2MjEsIDExOTkzNCwgOTAwMCwgCi0gICAgMCwgMCwgOTI2NzMsIDE4NjUsIDAsIDU2MTMsIDc0MjY3LCAwLCAwLCA1NjEwLCAwLCAwLCA2NTgyNiwgMjA2OSwgMCwgCi0gICAgMTA3ODcsIDQzOTk5LCAyOTk3LCAwLCA1NjA5LCA3ODMxNiwgNjUzMTksIDc4MzEzLCAxMjMxNiwgNjUzNzYsIDI0MTIsIDAsIAotICAgIDgxODYsIDk4MDcsIDc0MjY5LCAwLCAxMzEzMCwgNjU4NzQsIDAsIDU4MDcsIDAsIDEwMDMwLCA1MzA2LCAxMjkzNiwgMCwgMCwgCi0gICAgMTE3MDQsIDAsIDkyNTgzLCAxMDIxMSwgMCwgMCwgMCwgMCwgMTE3MDYsIDk3MTAsIDAsIDAsIDAsIDQxMywgNjU2MjMsIAotICAgIDcxMTgsIDAsIDkxMzMsIDc0MjYyLCAwLCAxMDQyLCAwLCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIAotICAgIDQ5ODQsIDAsIDcwOCwgMTEzOTEsIDAsIDEyMjQxLCA5MjcyMCwgMCwgMTMwOCwgMCwgMjUzNCwgODEwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCAwLCAxMDAyNywgCi0gICAgMCwgMTI4MTU0LCAxMjMzNywgMTIwNzIyLCAxMjczNjgsIDAsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MTgyLCAKLSAgICA2MzYzLCAyNzQ4LCAwLCAwLCA2NTA0MSwgMCwgNDQwMTEsIDg3MzAsIDAsIDEyNzg1NCwgNzgzMTIsIDcyNzQsIDExOTI1MCwgCi0gICAgMCwgNzI3NSwgNzgzMDQsIDkzNSwgMCwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMjczNjMsIDY1MjUzLCA2NDMwMSwgCi0gICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCAwLCAKLSAgICAxOTQ5OTgsIDAsIDEwNjczLCAxMTkyMTcsIDcyNDgsIDAsIDEyODM0NiwgMTc4MSwgNTQ5NiwgMzYyNywgNjIsIDE2NDksIDAsIAotICAgIDk2NCwgMCwgMTI3ODc2LCA3ODIyNiwgMTI4Nzc1LCAxMjc1MTIsIDAsIDAsIDAsIDAsIDQzNjg5LCAxMjc5MTEsIDEzMTQyLCAKLSAgICA3ODgxMiwgNDI0MTUsIDY2NTc1LCA0NTQyLCA3NDAzNywgNDM1NDcsIDAsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAKLSAgICAwLCA3OTQ5LCAwLCAwLCAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgOTI3MjQsIAotICAgIDY0NzgsIDk4OTgsIDQzNjczLCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgMCwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgCi0gICAgNDQwOSwgMCwgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDEyMDUyOCwgNjIzNywgNDg3NCwgMCwgOTE3NiwgMCwgMCwgNjUyMzEsIAorICAgIDQyMjUwLCAwLCAxMjg4NjQsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDAsIDAsIDEyODEyMCwgMCwgNzQzMjgsIAorICAgIDkyNzA4LCA3NDc2OSwgMCwgMTE5MDg3LCA5MDY5LCA2MTQ0LCAwLCAwLCA3MzgyMiwgMCwgMTI4MDEwLCA2NDkxNywgCisgICAgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgMCwgNjUwOTgsIDYzNjQsIDk1NiwgMCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgCisgICAgNzM3MzQsIDAsIDAsIDAsIDY2NDQ5LCAxMzI2MywgNzQyODEsIDY5MjE3LCAxMzE3MSwgMTI3Nzk2LCAwLCAwLCA5MjI5NCwgCisgICAgMCwgMTA0NCwgNDEyNzYsIDAsIDAsIDAsIDQyMDY4LCAxMTc5NSwgMCwgMCwgMCwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAKKyAgICAxMTgyOSwgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgMCwgMzAyMCwgMTE1MzcsIDAsIDY2NDQxLCA5ODM0NDYsIDcwOTgsIDAsIAorICAgIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDAsIDMwMTYsIDQyMjc0LCA0MzQ2NCwgNjY0OTAsIDEyOTIxLCA2NjU3MSwgNzg0NzIsIAorICAgIDkyNTEwLCAzMDA2LCA0NjIwLCAxMjcyMzcsIDk4MzU3OCwgMCwgMCwgNjQ2NTksIDAsIDEyNzc0OSwgNTUyNTMsIDYzNTcsIAorICAgIDYzNjIsIDg2MjYsIDcxMzM3LCAyMjE2LCA5MDkwLCA2NTM3NywgNDE1OTYsIDAsIDQyOTIwLCAxNjk4LCAwLCA2NDQ3NywgMCwgCisgICAgNDM4MTMsIDEwNTMsIDAsIDc4MjY5LCAwLCAxMjY1ODYsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCAwLCAKKyAgICAwLCAwLCAwLCA0MjQ5MCwgNjg5LCA2NTA4LCA0MTYzLCA0MjI5OCwgODYzOSwgNjY2NDEsIDQyNDYsIDAsIDAsIDEyMTMwLCAKKyAgICAwLCA0MjMzNywgNjQ1OTYsIDY0Mzc1LCA2NjQ4MSwgMTI3ODUwLCAwLCAwLCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzU5LCAwLCAKKyAgICAwLCAxMjcyNzQsIDAsIDYzNTgsIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIAorICAgIDU4MzAsIDAsIDQzNjg1LCAwLCAwLCAwLCAwLCA4NjkzLCA3ODYxMSwgMTE5NTY1LCA5ODM3OTksIDEyMDQxMywgMCwgCisgICAgMTI3MjU3LCA2NTg5NCwgMCwgMCwgMCwgOTgzOTE0LCAwLCAwLCAxMTkxODcsIDIxMzUsIDc4ODY4LCAwLCAwLCA3ODg2OSwgCisgICAgNDIzMTMsIDU1NzksIDkyNDEyLCAwLCA5ODMwODIsIDk0MDAyLCAwLCA1NTc4LCA0MTc3NCwgMTI4MTE1LCA0MjAyMywgCisgICAgNjIzNCwgNTY2OSwgOTIyNzUsIDAsIDAsIDAsIDEyNzUwNiwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCAKKyAgICA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDExOTAwNiwgNjU3MDIsIAorICAgIDAsIDEyMDgwMSwgNjUyNTEsIDAsIDY1NzEwLCAwLCAwLCA2NzY3MiwgMCwgNTM3MCwgMCwgMjkzMSwgMTYzOCwgMTA5NjYsIAorICAgIDEwMTg4LCA2NTg3OCwgMTE4ODQ4LCAwLCA2OTY5NCwgNjk4NzksIDEyODgzMCwgODE3MiwgNDIwMTcsIDAsIDEwODQ0LCAwLCAKKyAgICAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAwLCAwLCAyODYsIDc4MDIzLCAxMDYyLCAwLCAxMTk5OTksIDAsIDczOTUsIDAsIDEwNzAsIAorICAgIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMCwgMzAxNSwgMTI4MDIzLCAxMjY0NjUsIDUyMTEsIDk4MzA4MywgNjQwMCwgMCwgCisgICAgMTk0OTgzLCA3MDA1NCwgODE4OSwgMTEyNzYsIDAsIDAsIDM3MiwgMTI4ODI5LCAwLCAxMTg4NzQsIDQyMTAyLCA0MTU4NSwgCisgICAgMTI4MjAyLCAwLCA0MjEwMSwgMjc2LCA3ODQwMiwgMCwgMzMsIDc0MjI2LCAxMjczMDMsIDkwMDcsIDExODc5NiwgNDE1ODgsIAorICAgIDY2MDMzLCA0MjcsIDEwNzYzLCAxMTg4MTksIDAsIDEyNzg4NCwgMCwgMTAzMSwgNjI1NywgMCwgNDIxMDQsIDAsIDk4Mzk3MSwgCisgICAgMjMyOCwgOTI0MDksIDEwNzEsIDQyODk5LCAwLCA3NDg0OCwgMCwgOTgzNTgwLCAwLCAxMDQ3LCAwLCAwLCA2NDc5MCwgMCwgCisgICAgNjk3MjMsIDEwNjUxLCAwLCAwLCAwLCAwLCA5MjIwNiwgMTE5MTgxLCA1NzExLCA0MTYzMywgMTIwOTgsIDY1NTcxLCA5MTY2LCAKKyAgICAwLCA1NzEwLCAwLCA2NzkwLCA2NTE2OCwgMTMyMTYsIDAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIAorICAgIDU3MTUsIDY5NjU0LCAwLCAwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDAsIDg2NDMsIDczNzY4LCAKKyAgICAwLCAxMTg5MDYsIDI3NTcsIDExMDY3LCA5NzE4LCA3NDQ5OCwgODkxMCwgMTA2ODksIDY0NzksIDAsIDAsIDAsIDc4NjA3LCAKKyAgICA5MTk2LCA2OTY3MCwgMCwgMCwgMCwgMCwgMTE4OTExLCAwLCAwLCAwLCAwLCAwLCAxMjAwMTAsIDAsIDg3MDEsIDY4MTMwLCAKKyAgICAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAwLCAwLCA2NDk0NiwgCisgICAgMTA5OTIsIDAsIDEyMDAwOSwgMCwgMCwgOTMxOCwgOTM5ODYsIDEzMjQ5LCA2NTY3OSwgNzM4MDgsIDAsIDY1NDU3LCAKKyAgICA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgMTk0OTk3LCAxMjAwMDUsIDAsIDk4Mzk1NywgCisgICAgNTA4NCwgMCwgMCwgMTE4ODYxLCAwLCA3MzMsIDkxNzg3NiwgNzgwMTQsIDc4NDM2LCA3ODQzNSwgNDE2NzcsIDAsIDkyMTgsIAorICAgIDE3MzEsIDAsIDk4MzczNywgMCwgNjc5OTAsIDAsIDAsIDAsIDEyMDAwMSwgMTI3MDE4LCA5MjQ5MiwgNTE1NSwgMTIwMDAwLCAKKyAgICA1MzU4LCA5ODM3MzUsIDAsIDkxNzc2NywgNjQ0MjQsIDk4MzIyNSwgMzg0MCwgNjQzMTQsIDQxNDMyLCAwLCA3ODMxNSwgCisgICAgNjg0MzAsIDY3OTgwLCA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAwLCA4NzcxLCAxNDc5LCAwLCAwLCAxMTA5LCAKKyAgICAxMTU4MCwgMCwgNjQ2MDEsIDEyMjA1LCAwLCAwLCA2NDUwNywgODg2OCwgMzk5LCA2Nzk3OCwgNzQ4NDIsIDk4MzI3NiwgCisgICAgOTgzNzEyLCAxMjE0OSwgMTMwODgsIDU1MSwgMCwgMTAxNTYsIDEyMTE5LCA5MjU3MiwgMCwgMjU0NCwgNjUwNzQsIAorICAgIDExOTIxMSwgMCwgMCwgNzgwMTEsIDM1MSwgMTE5MTQ5LCAwLCAwLCA1NTIyOSwgMCwgNzQyNjgsIDAsIDAsIDAsIDQyMzc3LCAKKyAgICAwLCAwLCAwLCA5ODM5MTUsIDAsIDkwMTMsIDQwNTQsIDAsIDk4MzU3MCwgMCwgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAKKyAgICAyNTQ5LCA3NDQ2OSwgMCwgMCwgNTU4NCwgODM1OCwgMCwgNjQyMTUsIDkyMjE5LCAxMDkxOSwgMCwgNzk4MCwgMTI2NjAxLCAKKyAgICA5ODM3NzUsIDIyMTgsIDQxODAwLCA1NTg5LCAwLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMCwgMCwgCisgICAgNDM0NTIsIDc4NjA5LCAwLCA0MjU3MywgNjc4NTYsIDAsIDc4MTI5LCAwLCAwLCA3NDM5MiwgODEzNSwgNjQ1MCwgMTAwNTUsIAorICAgIDc3OTk2LCAwLCAwLCAxMTkyMjUsIDU2NTcsIDAsIDk2MjYsIDAsIDc3OTk0LCAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAKKyAgICAxMjA3OTksIDAsIDAsIDU2NTIsIDEwOTQ1LCAwLCA2NjQ4NiwgMCwgMzY2MSwgNzg2MywgMCwgMCwgMCwgNzQ1MDksIAorICAgIDk4Mzg0MywgNTY1OSwgMCwgNzg2OTIsIDY2NzI5LCA1NjU1LCAwLCA0MjE2OCwgMCwgMTA1NSwgOTE3NjI4LCAxMjc3OTIsIAorICAgIDY2MzEwLCA3NDAzMCwgMCwgMTIxNDYsIDczOTU1LCA3Mzk1NiwgMTE2MTgsIDAsIDEyNjk5MCwgMCwgMTAyNzIsIDEwMzA0LCAKKyAgICAxMDM2OCwgNDI1MTgsIDU5NCwgMTAyNDQsIDEwMjQ4LCA3NDA3LCA5ODM4NzgsIDY0ODcwLCAwLCAzNDY3LCA5ODM4ODIsIDAsIAorICAgIDMzMzEsIDk0NiwgMTAyMzEsIDE0OTUsIDgxMzEsIDc0MzMwLCAwLCA5NTYyLCA2OTIyMiwgNjU5MjcsIDAsIDcwMDM2LCAKKyAgICA2OTY5NiwgNjk3NjksIDY0NjU2LCA5ODM3MTcsIDAsIDk0MDIwLCA3MDA1NiwgNTY2NiwgNjUyMjcsIDUzMTgsIDYzOTk0LCAKKyAgICAwLCA5MDkxLCAxMDc5OCwgMCwgMTI4MTY2LCAxMDE4NiwgMCwgNzczMiwgOTgzNzE1LCA2NDU1NiwgMCwgMCwgNTY2OCwgCisgICAgNzQ0NDUsIDAsIDEyODY2MywgNTY3MCwgMTI2NjEwLCAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgCisgICAgMTIwODA3LCAwLCAxMjc0OSwgNzQ1NTEsIDAsIDAsIDY2NDk2LCA0MzYxLCAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIAorICAgIDEyODI4NiwgOTQwMDQsIDAsIDAsIDM1NzEsIDEzMjQ3LCAwLCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgCisgICAgNDMxOTIsIDAsIDc4MjY1LCA1NTMsIDEyMDY1MywgMCwgMTI4NTU0LCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDAsIAorICAgIDEyNzQ2LCAwLCAwLCAxMTk5MjQsIDU2MzMsIDExOTkyNywgOTQxMDEsIDk0MTAyLCA5NDA5OSwgNjQ5MDUsIDk0MTA1LCAKKyAgICA5NTEyLCA5NDEwMywgMTI3NDIsIDY0NDMsIDk4Mzc5NywgMCwgOTEzNSwgMCwgNDE1NjQsIDAsIDU1MjE5LCAxMjg4MzIsIAorICAgIDk4Mzg0MiwgMCwgMTIxNDgsIDAsIDc4Mjk3LCAwLCA2NDI1NiwgMCwgMTE2NjksIDAsIDU2MzQsIDQ1MjQsIDAsIDEyNzI3MCwgCisgICAgMCwgMTE4ODgwLCAyNDI1LCA2NTE4MiwgMTI4NzY5LCA0MzYzNiwgNTIyMSwgNzg0MTAsIDMyOCwgMCwgOTgzODAwLCAKKyAgICA2OTgxNSwgNTYzNiwgMCwgNTMyOSwgMCwgNTYzOCwgMTE5OTE4LCA3OTQwLCA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAKKyAgICAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDc4MjkxLCA2MjAzLCA0MjQ3LCAwLCAxMTkyMCwgODI3NCwgMCwgMCwgCisgICAgMTY1NywgNDE1NjEsIDc4Mjk5LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDk4MzY3NiwgNzgzMDAsIAorICAgIDQyMjI3LCAwLCAwLCA0MTYzNywgNjc4NzIsIDAsIDc4MzEwLCA0MTYyNSwgNDMzNjIsIDc4MzA5LCAxMjA3MTMsIDExNzA1LCAKKyAgICA1NjQyLCAwLCA1NDg2LCAwLCA0MzU2LCAxMTcxMCwgMCwgMTIwNTEsIDY5OTM4LCAwLCA1NjQxLCA4MjU5LCAwLCAxMDU4LCAKKyAgICAwLCA2NzYzMCwgMCwgMCwgMTE0NCwgNzg3NTAsIDAsIDQyMjI4LCAwLCA3Mzg5MCwgMTE4OTcyLCAwLCAyODAwLCAwLCAKKyAgICA1NjQ1LCA2NDk2NCwgODY1MiwgMjU0NywgNjY0ODQsIDQzNjM0LCAwLCA1NjA4LCA2NTg5MCwgNDM4MDgsIDAsIDY3NjIxLCAKKyAgICAxMTk5MzQsIDkwMDAsIDAsIDAsIDkyNjczLCAxODY1LCAwLCA1NjEzLCA2OTk1MCwgMCwgMCwgNTYxMCwgMCwgMCwgNjU4MjYsIAorICAgIDIwNjksIDAsIDEwNzg3LCA0Mzk5OSwgMjk5NywgMCwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDY1Mzc2LCAKKyAgICAyNDEyLCAwLCA4MTg2LCA5ODA3LCA3NDI2OSwgOTI1NDcsIDEzMTMwLCA2NTg3NCwgMCwgNTgwNywgMCwgMTAwMzAsIDUzMDYsIAorICAgIDEyMzY0LCAxMjgwNjQsIDAsIDExNzA0LCAwLCA5MjU4MywgMTAyMTEsIDAsIDAsIDAsIDAsIDExNzA2LCA5NzEwLCAwLCAwLCAKKyAgICAwLCA0MTMsIDY1NjIzLCA3MTE4LCAwLCA5MTMzLCA3NDI2MiwgMCwgMTA0MiwgMCwgNjQ3NzksIDEyMTcxLCAxMTkyNDAsIAorICAgIDYxODUsIDY0Nzc2LCA0OTg0LCAwLCA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDk4Mzg5MCwgMTMwOCwgMCwgMjUzNCwgCisgICAgODEwLCAwLCAwLCAwLCAwLCAwLCAxOTE3LCAzMDAwLCAwLCAwLCAxMjA3MzksIDIzNjQsIDkyNDQzLCA3NDQ3MCwgNjY2MTgsIAorICAgIDY1NjgwLCAxMjA3NzksIDEwMDI3LCAwLCAxMjgxNTQsIDEyMzM3LCAxMjA3MjIsIDEyNzM2OCwgOTgzMTY3LCAyOTgwLCAKKyAgICA3NTUsIDY5Nzc0LCA5MzEsIDEzMTI0LCA2ODE4MiwgNjM2MywgMjc0OCwgMCwgMCwgNjUwNDEsIDkyMjc2LCA0NDAxMSwgCisgICAgODczMCwgOTgzMDY3LCAxMjc4NTQsIDc4MzEyLCA3Mjc0LCAxMTkyNTAsIDAsIDcyNzUsIDc4MzA0LCA5MzUsIDAsIDY1ODQwLCAKKyAgICAzNzcsIDQyMzI1LCAxMTY0OSwgMTI3MzYzLCA2NTI1MywgNjQzMDEsIDEyODgzNSwgNzgzMDgsIDQyMzQxLCA2NTI4NCwgCisgICAgMjQxNywgMCwgMTI4ODQsIDE5OTEyLCA3OTA3LCAxMDc2OCwgMCwgMTk0OTk4LCAwLCAxMDY3MywgMTE5MjE3LCA3MjQ4LCAwLCAKKyAgICAxMjgzNDYsIDE3ODEsIDU0OTYsIDM2MjcsIDYyLCAxNjQ5LCAwLCA5NjQsIDAsIDEyNzg3NiwgNzgyMjYsIDEyODc3NSwgCisgICAgMTI3NTEyLCAwLCAwLCAwLCAwLCA0MzY4OSwgMTI3OTExLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgCisgICAgNjk5MDksIDQzNTQ3LCAwLCAwLCA3Njc3LCAyOTkxLCA0OTQ2LCA0MjQ1NCwgMTE1NjUsIDc5NDksIDAsIDk4MzkwOSwgCisgICAgMTEzNDEsIDQyNDk0LCAzMDczLCA2NTYyNSwgOTcxNCwgMTE2OTIsIDQ2NTcsIDAsIDkyNzI0LCA2NDc4LCA5ODk4LCAKKyAgICA0MzY3MywgNjUyMzcsIDYyNDEsIDcxMDYsIDQ4NzcsIDk4Mzc4NiwgNjIzOCwgMCwgMTA1NDgsIDEyNzA0OSwgNDQwOSwgMCwgCisgICAgMCwgNjQ3OTgsIDAsIDUzNDYsIDAsIDk0MDQ3LCA2MjM3LCA0ODc0LCAwLCA5MTc2LCAwLCAxMjY1NTMsIDY1MjMxLCAKICAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDAsIDAsIDU2ODUsIAogICAgIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAwLCA2ODE2MywgNTM0MCwgMCwgMTI3ODIwLCA0MzYzNSwgCi0gICAgNzM5MjgsIDEyNzUyOSwgMCwgMCwgMCwgMTI4NTEwLCA2NTQ4MiwgMCwgOTE0MiwgMCwgMCwgMCwgMTA5MzgsIDAsIAorICAgIDczOTI4LCAxMjc1MjksIDAsIDAsIDAsIDEyODUxMCwgNjU0ODIsIDAsIDkxNDIsIDAsIDEyNjQ3MCwgMCwgMTA5MzgsIDAsIAogICAgIDExODc5MCwgMTE4MiwgMjU0MiwgNDgyNiwgMCwgMCwgMTI4MTc2LCA1MjksIDg1ODAsIDAsIDAsIDEwNTg2LCAxMDc5MCwgCi0gICAgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCAwLCAxMTM3NiwgCisgICAgMTA4MzksIDY2MDIzLCA0MTU5MywgNDEyMDcsIDAsIDAsIDQxNTk0LCAyMjUsIDQyODI4LCAwLCAwLCA5ODM5MjksIDExMzc2LCAKICAgICA3NDM3OSwgMTA3MjEsIDY3NjY0LCAzNDM4LCA0MjA5NywgMTI3MjY3LCAxMTA4NCwgMzE5NCwgNDE4NzAsIDI2NiwgNzgzMDUsIAotICAgIDAsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIDQxODcxLCA0MTMzOCwgCi0gICAgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgMCwgNDA5NjUsIDEyNzkzNywgMCwgNTE2MSwgMTA1NzIsIAotICAgIDAsIDAsIDAsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTI3NTUyLCAwLCAwLCAxMTk0OCwgNjkyMjAsIDEyMzU5LCA0MzQyOSwgCi0gICAgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAwLCA5ODcwLCA2ODY0NSwgCi0gICAgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAwLCA0MzY3NywgNDE1ODMsIDAsIAotICAgIDY1Nzk5LCA5MjYyMywgMCwgMCwgMCwgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgMCwgODMyLCAxMjA2OTMsIAotICAgIDEyMDc3MCwgNzg0NzMsIDY2MDA3LCA3ODQ3MSwgNjU3MDMsIDAsIDAsIDQyNzMyLCA1MTgwLCA5MjY5OSwgNDEzOTUsIAotICAgIDQxNTMwLCAxMTY5MSwgNjQ3NzMsIDkyMjE0LCA3NDAwMiwgMCwgMCwgMTI4NjQ1LCA2MzQ4LCAyNDMsIDEzMjAwLCAwLCAKLSAgICA2MDI0LCA5MjMwOSwgOTk3OSwgMTAwMzcsIDQxNTI5LCAxMDY0OCwgODUzOCwgNDM2ODcsIDAsIDAsIDQyODUsIDY2MTk1LCAKLSAgICAwLCA0MjMwLCAwLCAxMzMwNywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgNjg0NDIsIDEyMDUxMiwgMCwgMCwgCi0gICAgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgNjU1ODksIDEyODI3NywgMjYwMywgMCwgCi0gICAgMCwgMCwgMCwgMCwgNjAyMiwgMCwgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAwLCA2NjQ1MywgMTAxNiwgNDExMDcsIDAsIAotICAgIDQxMTIxLCAzODg1LCA5MiwgNjU0NTYsIDY0NjA4LCAwLCA3NDgwMSwgMCwgMjA3NCwgMCwgNzgyODMsIDAsIDEyNDUzLCAKLSAgICAxMjgxMjgsIDAsIDc0MjQxLCAwLCA2NzkxLCAxMjQ1NywgNzgyNjgsIDAsIDAsIDAsIDc4Mjc5LCAwLCAwLCA5MjM1OCwgCi0gICAgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgMCwgMCwgODc1MiwgMzE5NywgNDcyMCwgCi0gICAgMTAxNjUsIDAsIDExOTI0OSwgMCwgMTE1OTUsIDY0ODkzLCAwLCA0MzQzNSwgMCwgMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIAotICAgIDE5NDYsIDc0MSwgMCwgNTQ5NCwgNDYzOSwgMCwgMTk5MCwgNjY1ODksIDQ0OTgsIDc4NjY0LCAxMTkxODMsIDAsIDAsIAotICAgIDY5NzM0LCAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgMTI3MDU5LCAwLCAyOTUwLCAxMTk1NzksIAotICAgIDYyMTAsIDY1NzUzLCAzNzAsIDAsIDAsIDAsIDQ5NTMsIDAsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgMCwgNTA2MywgCi0gICAgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgCi0gICAgNjYwMTYsIDc4MjUzLCAwLCAwLCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgCi0gICAgMCwgNjU4ODMsIDAsIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCAwLCAwLCAxMjkxMiwgMTE5MDEyLCAzODUwLCAKLSAgICAxMjgxOTEsIDAsIDAsIDAsIDAsIDkwOCwgMCwgODYxMSwgMCwgMCwgMTI3NTU1LCA0MzY5MSwgNDExOTcsIDAsIDg5NzgsIAotICAgIDEyMDU0MCwgMTE5MTM1LCA0MTU4NiwgMTA1MjcsIDAsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDE5NDkzNywgMTI3NTM2LCAKLSAgICA2NTI0MSwgNTMzNiwgMCwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgMCwgMTI3MTYzLCA2ODE5MywgCi0gICAgMzQ3LCAwLCAwLCA3ODc3NSwgNjQ2NzUsIDQxNTgyLCA3ODc3NCwgNzg3NDQsIDY1NTc5LCAxMjk4MCwgNzg3NjksIDEyMTQzLCAKKyAgICAxMjAxODMsIDQxODczLCAxMjA1NzUsIDExMzI0LCAxMjA1MzEsIDAsIDg0MjAsIDY0OTE4LCAxMjg4NDQsIDQxODcxLCAKKyAgICA0MTMzOCwgMzczNCwgNzczNCwgNDM2ODMsIDg3NTAsIDY2NjA1LCA2NjAxMSwgOTI1MTQsIDQwOTY1LCAxMjc5MzcsIDAsIAorICAgIDUxNjEsIDEwNTcyLCAwLCAwLCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyNzU1MiwgMCwgMTI2NjA1LCAxMTk0OCwgCisgICAgNjkyMjAsIDEyMzU5LCA0MzQyOSwgNDEzNjksIDE2OTcsIDEyMTkxLCAwLCA2ODYzMywgNzI4NiwgMCwgNjg2MzUsIDEwMDMxLCAKKyAgICAwLCA5ODcwLCA2ODY0NSwgODYyMCwgNjU4MjQsIDAsIDExOTM4LCAwLCA3Mjg1LCAwLCAxMTk1NzcsIDQyNjc4LCAwLCAKKyAgICA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgMCwgMCwgOTgzOTI3LCA3ODE2OSwgNjYxOTksIDAsIDM2MDksIAorICAgIDY4NjI0LCAwLCA4MzIsIDEyMDY5MywgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgMCwgMCwgNDI3MzIsIAorICAgIDUxODAsIDkyNjk5LCA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAwLCAwLCAxMjg2NDUsIAorICAgIDYzNDgsIDI0MywgMTMyMDAsIDk4MzgwNCwgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIAorICAgIDQzNjg3LCAwLCAwLCA0Mjg1LCA2NjE5NSwgMCwgNDIzMCwgMCwgNzM2NywgNDMyNTYsIDkyMzUzLCA3NTYzLCA0MjM3NiwgMCwgCisgICAgNjg0NDIsIDEyMDUxMiwgMCwgMCwgMjE0LCAwLCAwLCA3ODQ2NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAwLCA2NjMxMSwgCisgICAgNjU1ODksIDEyODI3NywgMjYwMywgMCwgMCwgMCwgNzAwNDcsIDAsIDYwMjIsIDAsIDI4ODQsIDAsIDExNjIwLCAwLCA0MywgCisgICAgMCwgNjY0NTMsIDEwMTYsIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDAsIAorICAgIDIwNzQsIDAsIDc4MjgzLCAwLCAxMjQ1MywgMTI4MTI4LCA5ODM4MTcsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCAKKyAgICA3ODI2OCwgMCwgMCwgMCwgNzgyNzksIDAsIDAsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIDc4Mjc3LCAKKyAgICAxMjQ0OSwgMTI4NTUyLCAwLCAwLCA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMCwgMTE5MjQ5LCAwLCAxMTU5NSwgNjQ4OTMsIAorICAgIDAsIDQzNDM1LCAwLCAwLCA0OTkzLCAwLCA2MTY4LCAxMDkzNCwgMTk0NiwgNzQxLCAwLCA1NDk0LCA0NjM5LCA5ODMxNDcsIAorICAgIDE5OTAsIDY2NTg5LCA0NDk4LCA3ODY2NCwgMTE5MTgzLCAwLCAwLCA2OTczNCwgMjk2MCwgNzM3NzksIDAsIDg5NjksIAorICAgIDEyODExNywgNDM0MjQsIDEyNzA1OSwgMCwgMjk1MCwgMTE5NTc5LCA2MjEwLCA2NTc1MywgMzcwLCAwLCAwLCAwLCA0OTUzLCAKKyAgICA5ODM2NzMsIDAsIDAsIDAsIDY5MjMwLCAwLCAwLCA2NTY4OCwgOTgzMjQwLCA1MDYzLCAzNTE3LCAyOTY0LCA0MzY2MywgCisgICAgOTE3NzYyLCA2MzQ0LCA3NDc5MSwgMTA1NjYsIDEwMTQ0LCA2NjMzMywgODI1MiwgNzI5LCA2NjAxNiwgNzgyNTMsIDAsIAorICAgIDcxMzE3LCA2NDkyMywgMTI4MDQwLCA0MzY2OSwgOTAzMiwgNzgyNjMsIDc4MjY0LCAwLCA0MTIxNSwgMCwgNjU4ODMsIDAsIAorICAgIDkxNzc3NCwgMTIwNjAyLCAzNzYxLCAwLCAwLCA3MDA2OCwgMCwgMTI5MTIsIDExOTAxMiwgMzg1MCwgMTI4MTkxLCAwLCAwLCAKKyAgICAwLCAwLCA5MDgsIDAsIDg2MTEsIDAsIDAsIDEyNzU1NSwgNDM2OTEsIDQxMTk3LCAwLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCisgICAgNDE1ODYsIDEwNTI3LCAwLCA5MTc4NDgsIDM4NDgsIDc4NzM5LCAxOTQ5MzcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAorICAgIDk4MzI1MSwgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjQ5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIAorICAgIDAsIDAsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDc4Nzc0LCA3ODc0NCwgNjU1NzksIDEyOTgwLCA3ODc2OSwgMTIxNDMsIAogICAgIDY5NjU3LCA3ODUxMiwgMCwgNDM0NDEsIDQxODA0LCA3ODUyMywgMCwgNzg1MjUsIDAsIDEyODg1OSwgNDE1ODQsIDEwNjgxLCAKLSAgICAwLCAwLCA3MzkzOCwgMCwgMTI4MDIyLCA0ODAwLCA2NjY2MSwgMCwgNjYzMDYsIDY0NzE1LCA3ODUzNCwgOTUxOCwgNjYwOSwgCi0gICAgMTA0MzQsIDAsIDExMzE5LCAxMDk3LCAwLCA5MTc4NTAsIDQxNzMwLCAwLCAwLCA3Mzg0NywgNzg3NjEsIDY1MTcyLCAKLSAgICA0MTcyOCwgNDE3MjEsIDAsIDAsIDAsIDQxMjAzLCAwLCAxMzExMCwgNDE3MjYsIDAsIDAsIDEwMDAsIDY5NjUxLCAwLCAKLSAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDAsIDczNzUwLCAxMDczLCA2MzIxLCA3Nzg3OCwgNDExMzgsIDAsIDY4MjEzLCAwLCAKLSAgICAxMjE2NywgMTExNSwgNDE2MDUsIDk3OTQsIDEyNzA2MiwgNjc2NzEsIDU1MjQ4LCAxMjIzNywgNzg3ODcsIDY2MzE0LCAKLSAgICA2NTg3LCA5MjkwLCA3ODc4MiwgNzg3ODMsIDkyMzEsIDc4NzgxLCAyOTU5LCA3OTI2LCAwLCAwLCAwLCA2NDM5OCwgMCwgCi0gICAgMTE5OTcwLCAxMjMxMSwgMCwgNzg3OTYsIDc4Nzk4LCA3ODc5NCwgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDAsIDAsIAotICAgIDEyMjkwLCAxMjAxNjksIDAsIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDAsIDk2MjcsIDc4NTM2LCAKLSAgICA3ODU0MiwgNzg1MzUsIDAsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIAotICAgIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIAotICAgIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIAotICAgIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIAotICAgIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAxMjA0MSwgMTQxOCwgMTA4ODUsIAotICAgIDEyNjczLCAwLCAwLCA5NjYwLCAwLCAxMzAxMiwgNDU3MSwgMCwgMCwgMCwgMTIwNzgsIDI5NzAsIDAsIDEwOTMzLCAwLCAKLSAgICA3Nzg3MCwgMCwgMCwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgCi0gICAgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIDg0NjAsIDEyNzA1MywgODQ3NiwgMCwgMCwgMCwgMCwgNjU2NzMsIAotICAgIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIDAsIDU0MTIsIDY2MjQzLCA5OTM1LCAwLCAKLSAgICA3Mzg2NCwgMCwgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgCi0gICAgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAKLSAgICAxMjcyODQsIDAsIDczOTYzLCA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIAotICAgIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgNzM5NDIsIDQxNTM2LCAwLCA2ODIwNCwgOTI1ODcsIDM0NTksIDg5OTcsIDAsIAotICAgIDAsIDAsIDAsIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDAsIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgCi0gICAgOTIyMjMsIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCAKLSAgICA3Mzk3MiwgMjk1MiwgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgMCwgNjY3LCAxMjMzMiwgCi0gICAgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCAwLCA0MTU5LCAwLCAwLCA5ODE1LCA2Mzg4NCwgMTk5MzQsIDYzODgyLCAKLSAgICA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCA2Mzg3MiwgMCwgNDI0MjEsIDAsIAotICAgIDQxNzIzLCA2Mzg3NSwgNjM4NzQsIDExNDYwLCA3NDMyLCAxOTEzLCA0MTkxMywgNjM4NTIsIDAsIDAsIDQyMzQ4LCAwLCAKKyAgICAwLCA5ODM2ODYsIDczOTM4LCAwLCAxMjgwMjIsIDQ4MDAsIDY2NjYxLCAwLCA2NjMwNiwgNjQ3MTUsIDc4NTM0LCA5NTE4LCAKKyAgICA2NjA5LCAxMDQzNCwgMCwgMTEzMTksIDEwOTcsIDAsIDkxNzg1MCwgNDE3MzAsIDk4MzIxMiwgMCwgNzM4NDcsIDc4NzYxLCAKKyAgICA2NTE3MiwgNDE3MjgsIDQxNzIxLCAwLCAwLCAwLCA0MTIwMywgOTE3NjEyLCAxMzExMCwgNDE3MjYsIDk4Mzg0NiwgMCwgCisgICAgMTAwMCwgNjk2NTEsIDAsIDQxMTQwLCAxMjA5LCA3Mzk3OCwgMCwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgCisgICAgMCwgNjgyMTMsIDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTI3MDYyLCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKKyAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIDAsIDAsIAorICAgIDY0Mzk4LCAwLCAxMTk5NzAsIDEyMzExLCA5ODM3MTgsIDc4Nzk2LCA3ODc5OCwgNzg3OTQsIDc4Nzk1LCA2ODQzNCwgCisgICAgNzg3OTMsIDY2NjcwLCAwLCAwLCAxMjI5MCwgMTIwMTY5LCAwLCAxMTk4NzMsIDQyMTQyLCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAKKyAgICAwLCA5NjI3LCA3ODUzNiwgNzg1NDIsIDc4NTM1LCA5ODMyMTAsIDE5NDQsIDEyNDgsIDEwMTQ4LCAxMjc3NTUsIDExOTk5MCwgCisgICAgMTE5OTkxLCAxMjcwMSwgNzgzNzYsIDExMzA4LCAxMTk5OTUsIDAsIDExOTk5NywgMTE5OTk4LCA2NTMwNSwgNjUxMDAsIAorICAgIDQwMzEsIDQyNzk0LCAxMjAwMDMsIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAKKyAgICAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAwLCA0MTg5OSwgMCwgODAwMiwgMCwgNDM2NCwgCisgICAgMCwgMCwgNjQzMzIsIDAsIDc4MTMsIDkwNjQsIDExOTk4NiwgMTAxMjQsIDc1MjYsIDg2MDEsIDcyODEsIDc4NDU1LCA3Mjc5LCAKKyAgICAxMjA0MSwgMTQxOCwgMTA4ODUsIDEyNjczLCAwLCAwLCA5NjYwLCA5ODMyNzIsIDEzMDEyLCA0NTcxLCAwLCAwLCAxMjAxNjQsIAorICAgIDEyMDc4LCAyOTcwLCAwLCAxMDkzMywgMCwgNzc4NzAsIDAsIDEyNzAxNSwgMCwgNDE1OTksIDAsIDEyODgzMSwgMCwgCisgICAgMTI5NTAsIDkyMTYwLCAzNDg2LCAwLCA3ODMxMSwgNDIzOSwgMCwgMTI3Nzk5LCA2NjUxMSwgMCwgMjYzNywgNjQ2MjksIAorICAgIDg0NjAsIDEyNzA1MywgODQ3NiwgOTgzOTY2LCAwLCAwLCAwLCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIDEyMjg5LCAKKyAgICAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDAsIDczODY0LCA5ODMyMDEsIDQxNzM0LCAKKyAgICA4MjA2LCA3NDA4MSwgOTE2MywgMzI4NiwgOTA3MiwgNTg2NywgMTMzMDIsIDc2MjIsIDcxMjAsIDQxNzM2LCA5MjU0NiwgCisgICAgNDE3MzEsIDAsIDc0MDAsIDU0MTYsIDY4NjYzLCAxMTg5MjQsIDEwODE3LCAwLCA0MTUzOSwgMTI3Mjg0LCAwLCA3Mzk2MywgCisgICAgNDE4NTUsIDQxODY3LCA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgCisgICAgNzM5MzIsIDU0OTgsIDczOTQyLCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAwLCAwLCAwLCAwLCAKKyAgICA5MjUxMiwgMCwgNjYzNzcsIDY5NzgxLCAwLCA5ODM2OTAsIDc4NTExLCAzMTYxLCAyOTUsIDEyMDIwNywgMCwgOTIyMjMsIAorICAgIDEyNzg1NiwgNzg3NDIsIDkwMTYsIDQzNDU0LCA2MzkwMywgNjM5MDIsIDQzNjQxLCAwLCAzOTcxLCAwLCA3MDA2MywgMjk1MiwgCisgICAgNzg3NjUsIDExMDM4LCAxMDkwMSwgNjM5MDAsIDYzODk5LCA2Mzg5OCwgOTQwNDMsIDY2NywgMTIzMzIsIDYzODg3LCA2MDg2LCAKKyAgICA0MTcyMiwgMCwgNTE3MiwgMCwgMCwgNDE1OSwgMCwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIAorICAgIDYzODc4LCA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDAsIDQyNDIxLCAwLCA0MTcyMywgCisgICAgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgNDE5MTMsIDYzODUyLCAxMjY2MzYsIDAsIDQyMzQ4LCA3Mzg5MiwgCiAgICAgNjc1MiwgNDQ2LCA0MTkxMSwgMTI3OTA2LCA2Mzg1MSwgNjM4NTAsIDQxOTEwLCAwLCA2Mzg0NiwgMjk3MiwgMTI5MzIsIAogICAgIDcyNjIsIDAsIDYzODQ5LCA2Mzg0OCwgNjM4NDcsIDEyODA3MCwgNjU3MCwgODMwMiwgNzI1OSwgNjM4NDIsIDQxNzgsIAogICAgIDEwNzQ2LCA3MjUwLCAxMzIxNCwgMTAwNDEsIDgxMDUsIDYzODkyLCAwLCAxMTg5ODMsIDExMDUsIDQxODAsIDAsIDEyMDk0LCAKICAgICA5NDk3LCAwLCA2Mzg5MSwgNjM4OTAsIDYzODg5LCA2Mzg4OCwgNTUzOCwgOTk4NywgMCwgMTE4OTMyLCAxNjc4LCAxMzI3NCwgCiAgICAgNTUyLCAxMjA2NTQsIDQ0MDEwLCAxMDc4NSwgMCwgMTE5MTcwLCA0NTU3LCA3NDQ1OSwgOTE1OSwgMTAxNzEsIDEzMTI1LCAKICAgICA2Mzg2MCwgNTU0MCwgNjM4NTgsIDYzODY1LCAyODEsIDEzMjQyLCA2Mzg2MiwgNzQxNTQsIDAsIDU1MzYsIDY1NTY4LCAKLSAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgMCwgMCwgNDI3NzMsIDAsIAotICAgIDAsIDAsIDExOTIyMCwgMCwgMzY2MywgMCwgMTExMiwgMTE5MTIyLCA4Njg2LCAwLCA1MzM0LCA2NTA4MSwgNDMyNDksIAotICAgIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAwLCA2NTA5LCAwLCA1MzI3LCAwLCAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIAotICAgIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDAsIDczNzQ4LCA2Mzg2NiwgMCwgMTkxNSwgNDg0NiwgMCwgCi0gICAgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAKLSAgICAxMTg5ODcsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgNjM4MzUsIDYzODM0LCAwLCA3ODI0MCwgMTIyMjUsIAotICAgIDYzODM4LCA2MzgzNywgMCwgMCwgNjM4MzMsIDYwNDIsIDY2MzYwLCA4MDgzLCAwLCAwLCA2MzgyMSwgNjM4MjAsIDYzODE5LCAKLSAgICA2MzgxOCwgMCwgNTIyNywgOTA0NywgNjM4MjIsIDEyNzE2MiwgNjA5MSwgMCwgMTA2OTEsIDU2MCwgNTY0MywgODIyNiwgCi0gICAgMTE5NTc4LCA2MzgxMiwgNjM4MTEsIDYzODEwLCA2MzgwOSwgNTU0MiwgNjM4MTUsIDYzODE0LCA2MzgxMywgNjA0NywgCi0gICAgMTU5NywgMTIwMTQzLCA3ODAsIDIwNiwgNzc5MjUsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgCi0gICAgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAxMjgxNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIAotICAgIDc3OTMzLCA4NDAwLCAxMTM0MywgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAKLSAgICA0MzQzMSwgMTMxNjksIDUyOTAsIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgCi0gICAgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAwLCA2Mzk3MCwgMTI4MzU4LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCAKLSAgICA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgMCwgNzQwOCwgMTE4MDksIDAsIDAsIDAsIDI5NjUsIDcyNTgsIDg4MDgsIDAsIDEwODksIAotICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCA3NDQ5NCwgMTI0NjMsIAotICAgIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIDc0MzQzLCAwLCAwLCA2NjAsIAotICAgIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAKLSAgICAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgMTI0NjUsIDAsIDAsIDEyODc4MiwgCi0gICAgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgNjM5NDcsIDYzOTQ1LCA2MDM4LCAKLSAgICA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDAsIDc3NzYsIDAsIDAsIDEyNzc3MywgMTIwNDQ0LCA2OTczMCwgCi0gICAgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAKLSAgICAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgCi0gICAgMjUzOSwgMCwgNDM5ODAsIDU0ODUsIDAsIDQyNjk3LCA5MDYxLCA1NTM0LCAxMDY3MiwgNDUwMiwgMCwgMjUzLCAwLCAKLSAgICA2ODIwOCwgMCwgOTIwMywgNzQyMzEsIDAsIDExNTMwLCA5MjU0MiwgNjg2NjgsIDAsIDEyODgxNiwgMCwgMTA0NzQsIAotICAgIDQzNDI2LCAxMzI1NywgNDIzNTQsIDAsIDAsIDAsIDE5NTA2NSwgMCwgODQxMywgMCwgMCwgNTY5MywgNzI3MiwgMCwgCi0gICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzg0NjAsIDE5NTA2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4MTMzLCAxMjc3NjcsIAotICAgIDY2NjA4LCAzMTExLCA0MTg2MywgODgwNCwgNDI5MTMsIDkyMTg3LCA3MjcwLCAwLCA2NjYwNiwgNjYyOCwgMTA3NiwgNzQzMywgCi0gICAgMTQzNiwgNzM4NDQsIDU1MjI2LCAxMjgzNTMsIDYzOTgyLCA3MzkzLCAxMjgwNywgNDM0MTMsIDYzOTA2LCAxNTk4LCAKLSAgICA2MzkwNCwgMCwgMCwgNDE3MjksIDQ0MjMsIDEzMDcsIDAsIDEwNTE1LCA0MTU4OSwgMTI4Njk4LCAwLCA2MjE4LCAwLCAKLSAgICAxNDMwLCAwLCAwLCAxMjA2MDYsIDc4NzU0LCA1NDEzLCA3NjE5LCAzMjU1LCAzNDkzLCA3NDAzMiwgMTE1NDksIDEwNzM1LCAKLSAgICA0MTc0MywgNzM5MzcsIDY4MDEsIDAsIDQ1MTgsIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgMCwgMjcxMCwgMCwgCi0gICAgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgNDE2OTAsIDEyNDc5LCAwLCAwLCAwLCAwLCAxMTk2NTksIDE2MjgsIDEyNzE0OSwgCi0gICAgMCwgMCwgNjUyNjIsIDYzMzMsIDEwNzgzLCA0MjMxNSwgMCwgNjM4NTUsIDEyMDY4MywgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIAotICAgIDEzMDA0LCAwLCA0NDU3LCAwLCAwLCAwLCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIDY4NDY0LCAKLSAgICAxMjYzMywgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIDc0MjUxLCAwLCAKLSAgICAxMjA2NDcsIDAsIDUwLCAxMDU1OCwgOTg3MSwgMCwgNDM2NTUsIDAsIDAsIDAsIDY2NDY4LCAwLCAxMzI1OSwgNDQ0OCwgMCwgCi0gICAgMCwgMCwgMCwgNjc4NTMsIDAsIDEwNjQwLCAxMTUzOSwgMTE1MSwgMCwgOTE3NjA3LCAxMjc1NDQsIDEyNzA3OSwgMTk1MDUwLCAKLSAgICAxMjc4NTIsIDAsIDAsIDAsIDEyNTAxLCA2NDYwNCwgMCwgMTE1MjcsIDExODg3MCwgODgxMiwgMCwgMTE1MzgsIDg2NzMsIAotICAgIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMCwgMCwgMCwgNDYzNiwgCi0gICAgNTUyNjIsIDc4NTEzLCA0NTE1LCAyMzgyLCAwLCAxMjcwNTUsIDAsIDEyMDQ5NSwgMCwgMTI4Mjg0LCAxMjI3NywgMTk0NjI3LCAKLSAgICAxMTk5NSwgOTI1NTMsIDAsIDEyMTU4LCAwLCA4NzQxLCAxMDE5NywgMCwgOTI0MjYsIDAsIDY1MzEsIDAsIDEyNzg0NiwgCi0gICAgNDczLCA0MzQxNSwgMCwgMCwgMTg3MywgMTA4NywgMCwgMCwgMCwgNzg1MjcsIDY2NDM5LCA0MzIxOCwgMCwgMTk0NzE2LCAKLSAgICA3MjM3LCAxMjUwNCwgNzQyODIsIDAsIDAsIDAsIDk0ODksIDAsIDAsIDQzODQsIDc0MjIwLCAxOTUwNTUsIDIwNTgsIAotICAgIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIDExNTQsIDM4NTcsIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgCi0gICAgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgMCwgNDE3MTIsIDc5ODMsIDAsIDEyMDc3OSwgMCwgCi0gICAgNjM0NywgMCwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgCi0gICAgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgNDk5OSwgMTk0NjQyLCAwLCAwLCA0NzExLCAxMjA3NjksIDAsIDI3MzksIDAsIAotICAgIDgwNDQsIDc0ODM0LCAxOTQ2NDMsIDQxNzg5LCAxMjgxNDIsIDEwODA5LCAwLCAwLCAwLCAxNzc5LCA2NjAwLCA2NjAxLCAKLSAgICA0MTU0MywgNTMyNSwgNjQyLCA2NDE4NywgMTMwNTgsIDEyMDQ0OSwgMTI4NzUsIDAsIDkyMTg2LCAxMzIyOSwgMCwgMTA1NzUsIAotICAgIDQzMzk5LCAwLCAwLCA0MTc5MSwgMTEwNCwgMCwgMCwgMTA2NTUsIDAsIDAsIDAsIDAsIDEwODIsIDE5NTA0OSwgODQyOCwgCi0gICAgNjU2OSwgMCwgMCwgMCwgMCwgNjc4MywgMCwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgMCwgMTI4ODgyLCAKLSAgICA0NzYxLCA2MzgyOCwgNDc2NiwgNjQ2MjMsIDEyNzMsIDQzNDA3LCAwLCAxMTg4NzYsIDE5NTA0NSwgNjkxMiwgMTMxMywgCi0gICAgNjMyMiwgMTA0ODMsIDAsIDQxNTQ1LCAwLCA5MjQ0OSwgMCwgMCwgMCwgMCwgNzg2MjQsIDM0ODQsIDc0MzM3LCAwLCAwLCAKLSAgICA4NTAzLCA1MTIyLCA0MTUyNywgMCwgNjYzMjAsIDAsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIAotICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCAxOTQ2NjMsIDE2ODYsIDAsIDc4NDA2LCAxMTQ2NywgMzY2NCwgNjU5MjEsIAotICAgIDY0Mjk5LCAxOTQ2NjQsIDAsIDAsIDQzMjQsIDEyNiwgNDIyNDYsIDExOTE1MiwgMCwgNzQzNzgsIDY1OTI2LCA3NzQ0LCAKLSAgICAxOTQ2MzYsIDc0Mjc3LCA3NDMwMiwgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIDE2MzMsIDAsIAotICAgIDAsIDQ3NjIsIDExMDMsIDAsIDAsIDQ3NjUsIDAsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAKLSAgICAxMTAyLCAwLCA0MjIzNiwgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIAotICAgIDExMTEsIDAsIDkyMTYxLCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgCi0gICAgMTMwMTAsIDAsIDgzMDQsIDkxNzU2MSwgMCwgMTE5NTc1LCAwLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCAKLSAgICA0Mzg1LCAwLCAxMzAxMSwgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgNDE3OTMsIDY1NzYzLCAKLSAgICA3NDIyMSwgMTIwMTQxLCA0MTc5MiwgNDI3NzAsIDAsIDY1NzYyLCAxMTg4MjksIDQzODIxLCA1NzA5LCAwLCAxMjcxNzcsIAotICAgIDQzODE2LCAwLCAwLCAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIAotICAgIDQwMDUsIDAsIDEwMjM3LCAxMDk5MSwgMCwgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIAotICAgIDkxNzU3NywgNDI2MDUsIDEyMDc2NSwgOTE3NTcwLCA2ODY0NywgOTE3NTcyLCAxMDA1OCwgMCwgNzQ4NjcsIDE5NDY1NCwgCi0gICAgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgOTE3NTkxLCA5MTc1OTAsIDkxNzU5MywgMzM0MCwgOTE3NTg3LCA5MTc1ODYsIAotICAgIDkxNzU4OSwgOTE3NTg4LCAxMjA1NDEsIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIAotICAgIDg2NCwgMCwgMTE4OTI2LCA4OTcyLCAwLCA3ODQ5LCAxMjAwOTIsIDkyNTMzLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCAKLSAgICAwLCAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCAxMjAxNjQsIAotICAgIDAsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCA2Mzc4MCwgCi0gICAgNjM3NzksIDE1ODMsIDAsIDEzMjYwLCA0NTUwLCAwLCA2NDIwNSwgMCwgMCwgNDE1MjIsIDAsIDkyMTY4LCAwLCA5MTc4NTgsIAotICAgIDExMzU0LCAwLCAwLCA0Mjc5NSwgMCwgMTE5MTk1LCAxMTM5NCwgMTk0NjQ2LCAxMzIzNiwgMTMyNzIsIDEzMTk0LCAxMzM0LCAKLSAgICAwLCA0NDc5LCAxMTc4LCA2NTU4NiwgMTIwNjYzLCA2NjY4MSwgMTE5MTkzLCA0NjAxLCAwLCAwLCAwLCAwLCAwLCAxOTQ2NTgsIAotICAgIDAsIDY4MDksIDYzNzg2LCA2MDMxLCAwLCA2Mzc5MSwgNjM3OTAsIDExNDUsIDYzNzg4LCA3OTEwLCA2Mzc4NSwgNDMxNTMsIAotICAgIDc1NCwgMTAxOTIsIDEzMTA1LCA4MTgzLCAxMjA3NDEsIDIwMzcsIDAsIDAsIDEwNzQ3LCAxMjUsIDAsIDY0ODkwLCAwLCAwLCAKLSAgICAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCAKLSAgICA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIAotICAgIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCAKLSAgICA2Mzc5OCwgNjI2MCwgMCwgMCwgMTE5MjI1LCA2Mzc5MywgMTE5ODgsIDM4OTgsIDEyODI0MSwgMTAyMDEsIDEyMjM4LCAKLSAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKLSAgICAwLCA0MjIwMywgNzk1MCwgMTA4MDQsIDYzNzcxLCA0Mjc4NywgNDM4NiwgMTIyMjQsIDY5NzMsIDI3OTMsIDEyNDc1LCAwLCAKLSAgICAwLCA2Mzc2OSwgOTUzMCwgMCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgCi0gICAgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCAKLSAgICA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgNzQxMzMsIAotICAgIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIAotICAgIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAKLSAgICAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDAsIDAsIDkyNDU1LCAKLSAgICA3Mzg2LCAwLCA2NDQ0NCwgMCwgMTE5ODYzLCA0MzYwMywgMCwgNjUzOTcsIDI4OCwgMCwgMCwgMCwgMTAwMjUsIDkxNzkxNiwgCi0gICAgMjkxOCwgMCwgNjUzMDAsIDExOTg3MSwgOTg4MywgNjQ3MjYsIDI3OTAsIDY1Mzk1LCAzNzkzLCAwLCAxMjc4MjksIDY1MzkzLCAKLSAgICAwLCA3NDEzOCwgMCwgMCwgMCwgNzQxMzksIDkyNzEyLCA2NTM5NCwgMTE1NDgsIDUyNzAsIDAsIDY1Mzk2LCAwLCA2NTgxMywgCi0gICAgMTMyNTYsIDEyODIsIDEyMDc3MSwgMCwgMCwgMTA4ODgsIDAsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NDI1OSwgMzMwNCwgNDI3NTMsIDAsIDAsIDAsIDE2MjcsIDAsIDAsIDAsIDUzNzEsIDEzMTE2LCAwLCAxODI2LCAxMTg3OTQsIAotICAgIDAsIDQzMDk0LCAwLCA0MzY1MCwgMCwgMCwgOTAzNSwgMCwgMCwgMTI4MDA1LCAwLCA5MjIwNywgNjgxMjUsIDAsIDE2NCwgMCwgCi0gICAgMCwgMCwgNjk1OCwgMCwgNDMxMTYsIDAsIDAsIDEzMjQ1LCAwLCAwLCAxMjczNzYsIDAsIDczODkzLCAxMjc3NTYsIDEyNjY2LCAKLSAgICAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDAsIDc0NDksIAotICAgIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMCwgNjM4MDgsIDkwNTQsIDk3MSwgMTMwNjIsIDAsIDAsIDY1MTk1LCAxMDE2NCwgCi0gICAgOTIyNTIsIDc0NDI4LCAwLCA3ODE0NiwgOTI2MTEsIDAsIDAsIDAsIDEwMDQ1LCAxMjg4MiwgMTMyNzUsIDEyODE2MSwgCi0gICAgMTEwNTcsIDAsIDEzMjc2LCAwLCA0MTUyNSwgNzgxNTAsIDcyNzEsIDExNDQ0LCAwLCAwLCAwLCAxMjIyOSwgNDE1MjMsIDAsIAotICAgIDQzNDExLCA3Mzc1MSwgMCwgNjQ4MTMsIDAsIDAsIDEwNDc2LCAzODU4LCAwLCAzOTMyLCA2NDk1OCwgMCwgMCwgNzM5ODksIAotICAgIDY4MTkyLCAwLCAwLCAzNjksIDAsIDQxNzg0LCAwLCA2NDE2MywgMCwgMCwgMCwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAwLCAKLSAgICA2NTQ3OSwgMCwgNDE3ODEsIDEwNDg2LCA0MTQ4MCwgNDMwMDIsIDk4OTksIDAsIDAsIDQwNCwgMTI4MjEsIDM3NDEsIDAsIAotICAgIDU3ODgsIDgwOTIsIDY4MjEyLCA0MTIyMiwgMTgzMSwgNjYwMjAsIDM5ODIsIDAsIDQzODgsIDAsIDc0NiwgMTIwNzg0LCAwLCAKLSAgICAwLCAxMjAxOCwgNjUyOTQsIDAsIDAsIDAsIDAsIDQ0MjIsIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDAsIDc0NDMwLCAKLSAgICAwLCAxMTcwMCwgNDM3NCwgMCwgMTI4MTc5LCAxMzY0LCAwLCA4MDM4LCAwLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgMCwgCi0gICAgNjczNSwgNzM5NzksIDEzMTc0LCA3Mzk2OCwgMTMyMjUsIDAsIDY5ODA4LCA2NTgzNSwgMCwgMjM2NSwgNzg0MSwgMCwgCi0gICAgNDI4NTUsIDExODg1NiwgNDI4NjYsIDAsIDAsIDAsIDY2NDM4LCA0MTc4NSwgMTI2MTcsIDY0MTcyLCAxMzE3MywgNDM3MiwgCi0gICAgMTE5MzU0LCAwLCAwLCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAKLSAgICAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgMCwgMTI2OTk0LCA0MTM3MywgCi0gICAgNzgwMzksIDEyMzAzLCAwLCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgNDEzNzEsIDExNjU2LCAwLCAxMjA3MDMsIAotICAgIDExOTg4MywgMTI4NjEsIDQzOTgsIDg1NDMsIDY1NjE4LCAxMjgwMTgsIDEwOTYsIDAsIDAsIDQyNjg4LCAxMjQ0MSwgCi0gICAgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgMCwgODAzMiwgMTMyNDMsIDEzMjM3LCAxMjcxOSwgMCwgCi0gICAgMTE5MTAxLCAwLCA2NDg4NCwgMTE5ODcyLCAxMTkzNDUsIDg1OTcsIDAsIDAsIDk4NjQsIDAsIDEyMDc4NSwgMTE5ODc0LCAwLCAKLSAgICAxMzE5NSwgNDE0NTIsIDY0OTYxLCA3NzIyLCAwLCAxMDQ1OSwgMTE5ODc4LCAwLCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIAotICAgIDQxNTMzLCA2NjMzNywgMCwgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDczODQ5LCAwLCA0MzYzOCwgNzg1MzcsIAotICAgIDEyODI4NywgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgCi0gICAgMTI4ODI4LCAwLCAyOTI1LCA3MzgwOSwgMTMwNTYsIDEyNzU1OSwgMTMyMTIsIDQzMjM4LCAwLCAxMzE5MCwgMTMxODcsIAotICAgIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAwLCA1MjQyLCAxMTkxNzksIDY0NDc2LCAxNjk0LCA4MjE2LCAwLCA2NzcwLCA0MzMzMSwgCi0gICAgMCwgNjU2MjAsIDAsIDQzNTQ0LCAwLCAwLCA0MTQ0NCwgNjU2MjEsIDEyMDMyNSwgOTE5NywgNTI0NiwgMTE5MTA2LCAKLSAgICAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIAotICAgIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgMCwgMzkzNiwgMTE5MzMxLCAxMTY5OSwgNDEzNDcsIDEyNzI0OSwgMTMyMzUsIAotICAgIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIDc5NjksIDEyNzI2NiwgNzIxOSwgMTI3MjUwLCAwLCAKLSAgICAxMjA1MDksIDAsIDY2MjI0LCA3MzQsIDI5NzksIDEyMDMwMywgNjU2MTksIDk4NzIsIDk1NywgNjQ5MjEsIDE4NDYsIAotICAgIDY2NjMxLCA0MTQ3NywgMTE5MjU2LCAxMjAzMTAsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgCi0gICAgNTM3OSwgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDEyMDMxNSwgMTIwMzE0LCAxMjgwMjUsIDAsIDQyODQxLCAxMzI2NywgMCwgCi0gICAgMCwgNDE3NzUsIDAsIDcxMzAsIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgCi0gICAgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIAotICAgIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAxMjg1MjQsIDExOTY1LCAwLCA2ODM1OCwgMCwgCi0gICAgNjk3ODksIDAsIDkyMjYwLCA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgCi0gICAgMTE4ODU4LCA5NzU2LCA2OTg1LCAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgMTE4OTk3LCA4MDEyLCA1Njc0LCAKLSAgICAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIAotICAgIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgCi0gICAgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgNzQwOTAsIDU4MjYsIAotICAgIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgCi0gICAgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKLSAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCAKLSAgICA5NTI5LCAwLCA2NjY1NywgNjk4MCwgMCwgMTIwMDM1LCA3ODQ4NCwgMCwgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgCi0gICAgMTIwMDM5LCA0MjY4MywgMCwgMCwgNzExNCwgMCwgMCwgNDMxOTAsIDY1NDYzLCAxNTU0LCAwLCA0MjYxMSwgNDI1NjMsIDAsIAotICAgIDU2NTEsIDI5MjksIDY3OTIsIDQzMjAxLCAwLCAxOTk2MywgNTY5OCwgMCwgMCwgMCwgMCwgNTY0NCwgMTAyOTIsIDY1NTQ2LCAKLSAgICA2OTcyNywgNjgxNDEsIDgzNzIsIDAsIDY1MTE2LCAwLCAxMjAwMjIsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDAsIDQxMDEzLCAKLSAgICAxMDU2OCwgMCwgMCwgMjg2OSwgMCwgNDEwMTUsIDE5NDY5MiwgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAwLCAKKyAgICA2Mzg1NywgMTM4OCwgNzQxNjksIDAsIDEwNzcsIDk4MzU3NywgNjUwOTksIDExNTMxLCA1ODM0LCAwLCAwLCAwLCAwLCAKKyAgICA0Mjc3MywgMCwgMCwgMCwgMTE5MjIwLCAwLCAzNjYzLCAwLCAxMTEyLCAxMTkxMjIsIDg2ODYsIDAsIDUzMzQsIDY1MDgxLCAKKyAgICA0MzI0OSwgNzQ3NzgsIDEyNzk2OCwgMTEwNzcsIDAsIDY1MDksIDAsIDUzMjcsIDAsIDE5OTA3LCA2Mzg2OSwgMzQ3OCwgCisgICAgNzU4MywgNzY3OSwgMjkwMywgMCwgMzAwMSwgMTE1OCwgODc0NSwgNDM3NDYsIDczNzQ4LCA2Mzg2NiwgNzg2MjYsIDE5MTUsIAorICAgIDQ4NDYsIDAsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAxMjA3MCwgCisgICAgODc2MCwgMTExNywgMTE4OTg3LCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgMCwgNzgyNDAsIAorICAgIDEyMjI1LCA2MzgzOCwgNjM4MzcsIDk4Mzg0NCwgOTgzNzk1LCA2MzgzMywgNjA0MiwgNjYzNjAsIDgwODMsIDAsIDAsIAorICAgIDYzODIxLCA2MzgyMCwgNjM4MTksIDYzODE4LCA5ODM4OTUsIDUyMjcsIDkwNDcsIDYzODIyLCAxMjcxNjIsIDYwOTEsIDAsIAorICAgIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCAKKyAgICA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAyMDYsIDc3OTI1LCA0OTM2LCA2NTE0NywgODE2OCwgCisgICAgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCA2MzkzMiwgMTI4MTUwLCA2MzkyOSwgMzU0NiwgMTYwNSwgCisgICAgNzc5MzQsIDk4MDYsIDQzNDcyLCA3NzkzMywgODQwMCwgMTEzNDMsIDIwODYsIDAsIDYzOTI2LCAyOTg0LCA1OTY4LCA5Mjg3LCAKKyAgICAwLCA0NjE4LCA0MjIwOSwgNDM0MzEsIDEzMTY5LCA1MjkwLCAyMDg5LCAxNjk1LCAxMDc0MywgMTA4OCwgNjM4MjUsIDcyNjgsIAorICAgIDEwODQsIDEwODUsIDYzODI5LCAxMDgzLCAxMDEzMSwgNzI4MywgMCwgNjM5NzAsIDEyODM1OCwgMTA5MiwgNDc1NCwgNzI3MywgCisgICAgNTI1MiwgNDQwMTYsIDQzNjI3LCAxMjc5MjEsIDAsIDc0MDgsIDExODA5LCA5MTc2MTgsIDAsIDAsIDI5NjUsIDcyNTgsIAorICAgIDg4MDgsIDAsIDEwODksIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDAsIDk0MCwgNTc4NywgMTAwOTksIDYzOTM4LCAwLCAKKyAgICA3NDQ5NCwgMTI0NjMsIDI5OTQsIDAsIDExODgyNywgMCwgOTY2NCwgNzc5MzksIDc3OTQwLCA2Nzg5MiwgNzc5MzgsIAorICAgIDc0MzQzLCAwLCAwLCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCA3Nzk0MSwgNzg1MDcsIAorICAgIDYxMTgsIDIyMiwgOTc5LCAzODg0LCAwLCA3NDE1MSwgOTI2NTIsIDY1MDIsIDAsIDEyNzExOCwgMTI4Njk1LCA2Mzk1MSwgCisgICAgMTI0NjUsIDAsIDAsIDEyODc4MiwgNjM5NDYsIDE3MDcsIDYzOTI0LCAxMjQ2MSwgNjM5NTAsIDYzODk3LCA2Mzk0OCwgCisgICAgNjM5NDcsIDYzOTQ1LCA2MDM4LCA2Mzk0MywgNjM5NDIsIDY0Njg1LCA2Mzg5NSwgNjU4MzgsIDIyNzYsIDc3NzYsIDk0MDc2LCAKKyAgICAwLCAxMjc3NzMsIDEyMDQ0NCwgNjk3MzAsIDgwMSwgNDMxNjUsIDE2OTAsIDYzOTE5LCA2MzkxOCwgNjM5MTcsIDEzMjc3LCAKKyAgICA0MzY1OSwgMTI5NTEsIDEyMDYzOCwgOTkwNiwgMjA1NCwgMjMzNCwgNzg1MTUsIDYzOTE2LCA1NDgzLCA2MzkxNCwgNjk3MzcsIAorICAgIDYzOTExLCA1NDg0LCA2MzkwOSwgNjM5MDgsIDI1MzksIDAsIDQzOTgwLCA1NDg1LCAwLCA0MjY5NywgOTA2MSwgNTUzNCwgCisgICAgMTA2NzIsIDQ1MDIsIDAsIDI1MywgMCwgNjgyMDgsIDAsIDkyMDMsIDc0MjMxLCAwLCAxMTUzMCwgOTI1NDIsIDY4NjY4LCAwLCAKKyAgICAxMTg5MDcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDk4MzY4OSwgNzAwNDQsIDE5NTA2NSwgMCwgCisgICAgODQxMywgOTgzODA3LCAwLCA1NjkzLCA3MjcyLCAwLCAxMzIwOSwgNjQ0NzAsIDY1ODMxLCA3NDM1MCwgMTk1MDYzLCAwLCAwLCAKKyAgICAwLCAxMjY2MzksIDAsIDAsIDk0MDc4LCAxMjgxMzMsIDEyNzc2NywgNjY2MDgsIDMxMTEsIDQxODYzLCA4ODA0LCA0MjkxMywgCisgICAgOTIxODcsIDcyNzAsIDAsIDY2NjA2LCA2NjI4LCAxMDc2LCA3NDMzLCAxNDM2LCA3Mzg0NCwgNTUyMjYsIDEyODM1MywgCisgICAgNjM5ODIsIDczOTMsIDEyODA3LCA0MzQxMywgNjM5MDYsIDE1OTgsIDYzOTA0LCAwLCAwLCA0MTcyOSwgNDQyMywgMTMwNywgCisgICAgMCwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDAsIDYyMTgsIDAsIDE0MzAsIDAsIDAsIDEyMDYwNiwgNzg3NTQsIDU0MTMsIAorICAgIDc2MTksIDMyNTUsIDM0OTMsIDc0MDMyLCAxMTU0OSwgMTA3MzUsIDQxNzQzLCA3MzkzNywgNjgwMSwgOTgzNjI0LCA0NTE4LCAKKyAgICAxMDk5MCwgNjUwNzMsIDUxNjcsIDQ0ODEsIDM3NzEsIDEyMDE1OCwgMjcxMCwgMCwgNjkyNDMsIDQxNzI0LCAwLCA0MzA3MywgCisgICAgNDE2OTAsIDEyNDc5LCA5ODM2MjYsIDAsIDAsIDk4MzgwOSwgNzAwNDYsIDE2MjgsIDEyNzE0OSwgOTgzNDc5LCA5ODM3MjIsIAorICAgIDY1MjYyLCA2MzMzLCAxMDc4MywgNDIzMTUsIDAsIDYzODU1LCA5NDA1NiwgMCwgMCwgNTMzOSwgNzQzMjMsIDAsIDEzMDA0LCAKKyAgICAwLCA0NDU3LCAwLCAwLCAwLCAwLCA1Njg0LCA4Njc4LCAxMDkxNCwgMCwgNTY4OSwgNjU4MDcsIDAsIDY4NDY0LCAxMjYzMywgCisgICAgMTI4NzAsIDY5NzA1LCA2NTE4MywgNTY4OCwgMTE5MjYsIDYwMzMsIDYzMTAsIDU2ODYsIDAsIDc0MjUxLCAwLCAxMjA2NDcsIAorICAgIDAsIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCAwLCAwLCAwLCA2NjQ2OCwgMCwgMTMyNTksIDQ0NDgsIDAsIAorICAgIDk4MzgzNiwgMCwgNzAwNDMsIDY3ODUzLCAwLCAxMDY0MCwgMTE1MzksIDExNTEsIDAsIDkxNzYwNywgMTI3NTQ0LCAKKyAgICAxMjcwNzksIDE5NTA1MCwgMTI3ODUyLCAwLCAwLCAwLCAxMjUwMSwgNjQ2MDQsIDAsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDAsIAorICAgIDExNTM4LCA4NjczLCAxMjY1MCwgMTEwMjAsIDAsIDY2NDY3LCAyMTA1LCA4MDg3LCA3ODE2MywgNjk2MzIsIDk4OTQsIDAsIAorICAgIDAsIDAsIDQ2MzYsIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCAwLCAxMjA0OTUsIDAsIDEyODI4NCwgCisgICAgMTIyNzcsIDE5NDYyNywgMTE5OTUsIDkyNTUzLCAwLCAxMjE1OCwgMCwgODc0MSwgMTAxOTcsIDAsIDkyNDI2LCAwLCA2NTMxLCAKKyAgICAwLCAxMjc4NDYsIDQ3MywgNDM0MTUsIDAsIDk4MzY0MSwgMTg3MywgMTA4NywgMCwgMCwgMCwgNzg1MjcsIDY2NDM5LCAKKyAgICA0MzIxOCwgOTgzMTIzLCAxOTQ3MTYsIDcyMzcsIDEyNTA0LCA3NDI4MiwgMCwgOTgzNTcxLCAwLCA5NDg5LCAwLCAwLCAKKyAgICA0Mzg0LCA3NDIyMCwgNjM4NDUsIDIwNTgsIDEyODg2MywgMTMyOTUsIDQzMTkxLCAxMjgwMzAsIDAsIDExNTQsIDM4NTcsIAorICAgIDEyMDUsIDAsIDAsIDEzMTAwLCAxMjk1OCwgMTIwNzA2LCA3NDE2OCwgMCwgMCwgNDQyMSwgMTA1OTIsIDAsIDQ5NSwgCisgICAgMTE5MDA3LCA0MTcxMiwgNzk4MywgMCwgOTM5OTcsIDAsIDYzNDcsIDEyMDE2NSwgNzY1NCwgNDE3MTAsIDQxOTYsIDAsIAorICAgIDQzNywgNDE3MDksIDczNzcyLCAwLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMCwgMCwgNDk5OSwgCisgICAgMTk0NjQyLCAwLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMCwgMjczOSwgMCwgODA0NCwgNzQ4MzQsIDE5NDY0MywgNDE3ODksIAorICAgIDEyODE0MiwgMTA4MDksIDAsIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgCisgICAgMTIwNDQ5LCAxMjg3NSwgMCwgOTIxODYsIDEzMjI5LCAwLCAxMDU3NSwgNDMzOTksIDAsIDAsIDQxNzkxLCAxMTA0LCAwLCAwLCAKKyAgICAxMDY1NSwgMCwgMCwgMCwgMCwgMTA4MiwgMTk1MDQ5LCA4NDI4LCA2NTY5LCAwLCAwLCAwLCA2OTg0OSwgNjc4MywgMCwgCisgICAgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgOTgzNzk4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCAKKyAgICA2NDYyMywgMTI3MywgNDM0MDcsIDAsIDExODg3NiwgMTk1MDQ1LCA2OTEyLCAxMzEzLCA2MzIyLCAxMDQ4MywgOTgzNjAzLCAKKyAgICA0MTU0NSwgMCwgOTI0NDksIDAsIDAsIDAsIDAsIDc4NjI0LCAzNDg0LCA3NDMzNywgMCwgMCwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDAsIDY2MzIwLCA5ODM4MDIsIDAsIDAsIDAsIDQxNTM3LCA2OTY4MywgODMwMywgODI4MiwgMTE4MTcsIDczODU3LCAxMDAwMywgCisgICAgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAwLCA3ODQwNiwgMTE0NjcsIDM2NjQsIDY1OTIxLCA2NDI5OSwgMTk0NjY0LCAwLCAKKyAgICAwLCA0MzI0LCAxMjYsIDQyMjQ2LCAxMTkxNTIsIDAsIDc0Mzc4LCA2NTkyNiwgNzc0NCwgMTk0NjM2LCA3NDI3NywgNzQzMDIsIAorICAgIDc4MDUyLCA0MzgxNywgNjk2NiwgNDM4MjIsIDgxMzYsIDAsIDY1NjAwLCAxNjMzLCAwLCAwLCA0NzYyLCAxMTAzLCAwLCAwLCAKKyAgICA0NzY1LCA5ODM0ODQsIDEzMDc4LCAwLCA0NzYwLCA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAwLCA0MjIzNiwgCisgICAgMTI4ODY3LCAxOTQ2NjcsIDExNTQ2LCA3NDc5NCwgMzM3LCAwLCA0MjU5MSwgODYyNywgMTIyNzksIDExMTEsIDAsIDkyMTYxLCAKKyAgICA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyNzA4MSwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgMTMwMTAsIDAsIDgzMDQsIAorICAgIDkxNzU2MSwgMCwgMTE5NTc1LCAyMjkzLCAwLCA2NjY1NCwgMCwgOTI2NzYsIDAsIDEzMDA4LCAwLCA0Mzg1LCAwLCAxMzAxMSwgCisgICAgMCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgMCwgMCwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgMTIwMTQxLCAKKyAgICA0MTc5MiwgNDI3NzAsIDk0MDU0LCA2NTc2MiwgMTE4ODI5LCA0MzgyMSwgNTcwOSwgMCwgOTQwNTMsIDQzODE2LCAwLCAwLCAKKyAgICAxMDc5LCAzODY3LCA1NzA4LCAwLCAwLCA0Mzc5NywgNTcwNiwgNjQ3NjgsIDU3MDUsIDg3OTEsIDQwMDUsIDAsIDEwMjM3LCAKKyAgICAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgOTE3NTgxLCA5MTc1ODAsIDEzMTcwLCAxMjU0MCwgOTE3NTc3LCA0MjYwNSwgCisgICAgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCAwLCA3NDg2NywgMTk0NjU0LCAxMjcwNzgsIDMzMzksIAorICAgIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU5MCwgOTE3NTkzLCAzMzQwLCA5MTc1ODcsIDkxNzU4NiwgOTE3NTg5LCAKKyAgICA5MTc1ODgsIDEyMDU0MSwgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCAwLCAKKyAgICAxMTg5MjYsIDg5NzIsIDAsIDc4NDksIDEyMDA5MiwgOTI1MzMsIDEzMjQwLCAxOTUwNjgsIDUxOTIsIDQzMzgsIDY3OTgyLCAKKyAgICAxMDk0OCwgOTE3NjAxLCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgMCwgCisgICAgNzQ0MCwgMCwgMTIwMTUzLCA5NTUzLCAxNTkwLCA2Mzc3NywgNjM3NzYsIDEzMTc4LCA2Mzc4MiwgNjM3ODEsIDYzNzgwLCAKKyAgICA2Mzc3OSwgMTU4MywgMCwgMTMyNjAsIDQ1NTAsIDAsIDY0MjA1LCAwLCAwLCA0MTUyMiwgOTgzOTA2LCA5MjE2OCwgCisgICAgOTgzNzYzLCA5MTc4NTgsIDExMzU0LCA5NDA3MSwgMCwgNDI3OTUsIDAsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIAorICAgIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIDQ0NzksIDExNzgsIDY1NTg2LCAxMjA2NjMsIDY2NjgxLCAxMTkxOTMsIAorICAgIDQ2MDEsIDAsIDAsIDk4Mzc1NiwgMCwgMCwgMTk0NjU4LCAwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgMCwgNjM3OTEsIDYzNzkwLCAKKyAgICAxMTQ1LCA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAKKyAgICAwLCAwLCAxMDc0NywgMTI1LCAwLCA2NDg5MCwgMCwgOTgzMTMxLCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIAorICAgIDEzMjU4LCA5NTM2LCA3NDA3NywgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgCisgICAgMTM0OSwgNjM3NTAsIDYzNzQ5LCAwLCAwLCAwLCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAxMjA2MjIsIDY4MTMzLCA0MTkzMCwgCisgICAgNjM4MDUsIDYzODA0LCA0MzYzMiwgNjM4MDEsIDQxMDgyLCA4MTQwLCA2Mzc5OCwgNjI2MCwgMCwgMCwgOTQwNzQsIDYzNzkzLCAKKyAgICAxMTk4OCwgMzg5OCwgMTI4MjQxLCAxMDIwMSwgMTIyMzgsIDYzNzk1LCA0MjE5NCwgMTAzNjcsIDEyNTIxLCAxMDQzMSwgCisgICAgNDIxMTQsIDQxOTMyLCAxMDY4LCAwLCAxMjUyMywgMTI5NDUsIDk4MzMyMSwgNDIyMDMsIDc5NTAsIDEwODA0LCA2Mzc3MSwgCisgICAgNDI3ODcsIDQzODYsIDEyMjI0LCA2OTczLCAyNzkzLCAxMjQ3NSwgMCwgMCwgNjM3NjksIDk1MzAsIDk4MzExOSwgMTIyMzIsIAorICAgIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgNDU5NSwgNjM3NjAsIDc5MiwgMCwgNjQ4MDMsIDAsIDg3NDIsIDAsIDExMDUzLCAKKyAgICAxMjg3OTYsIDYzNzQ0LCAxMjgxMDcsIDAsIDc1ODgsIDYzNzQ4LCAxNjkzLCA2Mzc0NiwgNDMyMDQsIDUwNTUsIDY4NDI2LCAKKyAgICA5MTc4NTMsIDEwOTAsIDEyMDY3OSwgMTI4MzU2LCAxMTY2NSwgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAwLCAwLCAKKyAgICA3ODY4MSwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgMzEzOSwgMCwgCisgICAgMzE3MCwgMTI0ODUsIDAsIDEwODcyLCA3ODI3MSwgMTMwMDYsIDY0NDMzLCAwLCAwLCA5NDEsIDAsIDAsIDAsIDY1NTQxLCAKKyAgICAxMTA2MywgMCwgODIyOCwgMCwgNDIwNjUsIDAsIDAsIDk0MDM5LCAwLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDAsIAorICAgIDExOTg2MywgNDM2MDMsIDk0MDc1LCA2NTM5NywgMjg4LCAwLCAwLCAwLCAxMDAyNSwgNjk5MTUsIDI5MTgsIDAsIDY1MzAwLCAKKyAgICAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgMCwgMTI3ODI5LCA2NTM5MywgMCwgNzQxMzgsIDAsIDAsIAorICAgIDAsIDc0MTM5LCA5MjcxMiwgNjUzOTQsIDExNTQ4LCA1MjcwLCAwLCA2NTM5NiwgMCwgNjU4MTMsIDEzMjU2LCAxMjgyLCAKKyAgICAxMjA3NzEsIDAsIDAsIDEwODg4LCA5ODM2MDQsIDY1MjQyLCAwLCAzMzMwLCAwLCAwLCA5ODM5NjUsIDAsIDAsIDc0MjU5LCAKKyAgICAzMzA0LCA0Mjc1MywgMCwgMCwgMCwgMTYyNywgMCwgMCwgMCwgNTM3MSwgMTMxMTYsIDAsIDE4MjYsIDExODc5NCwgMCwgCisgICAgNDMwOTQsIDcwMDIzLCA0MzY1MCwgOTQwMzcsIDAsIDkwMzUsIDAsIDAsIDEyODAwNSwgMCwgOTIyMDcsIDY4MTI1LCAwLCAKKyAgICAxNjQsIDAsIDk0MDY3LCA5NDAwMCwgNjk1OCwgMCwgNDMxMTYsIDAsIDcwMDE5LCAxMzI0NSwgMCwgMCwgMTI3Mzc2LCAwLCAKKyAgICA3MDAzMSwgMTI3NzU2LCAxMjY2NiwgMTMxNzUsIDEzMjA3LCAxMjA0MTQsIDY2MDE0LCAxMjA0MjgsIDc0NDcsIDU5MjksIDAsIAorICAgIDY1NTA5LCAwLCA3NDQ5LCAxMTMwNiwgMCwgNzM5MjAsIDMxODAsIDAsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCAwLCAwLCAKKyAgICA2NTE5NSwgMTAxNjQsIDkyMjUyLCA3NDQyOCwgMCwgNzgxNDYsIDkyNjExLCAwLCAwLCAwLCAxMDA0NSwgMTI4ODIsIAorICAgIDEzMjc1LCAxMjgxNjEsIDExMDU3LCAwLCAxMzI3NiwgMCwgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMCwgMCwgMCwgCisgICAgMTIyMjksIDQxNTIzLCAwLCA0MzQxMSwgNzM3NTEsIDAsIDY0ODEzLCAwLCAwLCAxMDQ3NiwgMzg1OCwgMCwgMzkzMiwgCisgICAgNjQ5NTgsIDAsIDAsIDczOTg5LCA2ODE5MiwgMCwgNjk4NDcsIDM2OSwgMCwgNDE3ODQsIDAsIDY0MTYzLCAwLCAwLCAwLCAKKyAgICA2NTQ3NCwgNDc5NiwgMTIyOTIsIDEyNjU5NSwgNjU0NzksIDAsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCAKKyAgICAwLCAwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAKKyAgICAwLCA0Mzg4LCAwLCA3NDYsIDEyMDc4NCwgMCwgMCwgMTIwMTgsIDY1Mjk0LCAwLCAwLCAwLCAwLCA0NDIyLCA0NzA4LCAKKyAgICAzNzk5LCA3NDI5MiwgMTE5MzU3LCAwLCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDAsIDEyODE3OSwgMTM2NCwgMCwgODAzOCwgCisgICAgMCwgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDAsIDY3MzUsIDczOTc5LCAxMzE3NCwgNzM5NjgsIDEzMjI1LCAwLCA2OTgwOCwgCisgICAgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDAsIDQyODU1LCAxMTg4NTYsIDQyODY2LCAwLCAwLCAwLCA2NjQzOCwgNDE3ODUsIAorICAgIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgMCwgOTgzNTY4LCAwLCAwLCA5MjQwMiwgMTI4MDYyLCAxMjk2NSwgCisgICAgMzg0LCA2NDUxMiwgMTA0MDQsIDEwMzQwLCAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCAKKyAgICA0MTc4NywgOTgzMjM3LCAxMjY5OTQsIDQxMzczLCA3ODAzOSwgMTIzMDMsIDAsIDEzMjMyLCAxMzIzMywgMzQ5LCA0ODYzLCAKKyAgICA0MTM3MSwgMTE2NTYsIDAsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDEyODAxOCwgMTA5NiwgCisgICAgMCwgMCwgNDI2ODgsIDEyNDQxLCAxMjM1NSwgMTE5MzQ4LCAxMTkzNDcsIDQzMTgsIDEwNDUyLCAwLCA4MDMyLCAxMzI0MywgCisgICAgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMCwgNjQ4ODQsIDExOTg3MiwgMTE5MzQ1LCA4NTk3LCAwLCAwLCA5ODY0LCAKKyAgICAwLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDAsIAorICAgIDExOTg3OSwgNjY1OTAsIDEyODEyMywgNDE1MzMsIDY2MzM3LCAwLCA5MjE4NCwgMCwgNDk2NSwgNDM0NDUsIDkxNzUzNiwgCisgICAgNzM4NDksIDAsIDQzNjM4LCA3ODUzNywgMTI4Mjg3LCA2MjYxLCAxMTkzNDIsIDQzMTQ3LCA2NjU3MCwgMTk1NywgMTA0MjAsIAorICAgIDk4MiwgMjc1NiwgMTMyOTIsIDEzMjA2LCAxMjg4MjgsIDAsIDI5MjUsIDczODA5LCAxMzA1NiwgMTI3NTU5LCAxMzIxMiwgCisgICAgNDMyMzgsIDAsIDEzMTkwLCAxMzE4NywgOTI1NDEsIDEzMTk4LCAxMTg3OTMsIDAsIDUyNDIsIDExOTE3OSwgNjQ0NzYsIAorICAgIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcxOSwgNDM1NDQsIDEyNjQ2NiwgMCwgCisgICAgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgMTE5MzMzLCAwLCAxMTkzMzcsIDUyMzYsIDQwOTc5LCAwLCA3NDIwMSwgODI4NiwgCisgICAgMTI4NTM3LCAzOTM2LCAxMTkzMzEsIDExNjk5LCA0MTM0NywgMTI3MjQ5LCAxMzIzNSwgODg0MiwgNDEyNDgsIDAsIDQzNzksIAorICAgIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCAxMjcyNTAsIDEyODI1MSwgMTIwNTA5LCAwLCA2NjIyNCwgNzM0LCAKKyAgICAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgNDE0NzcsIDExOTI1NiwgCisgICAgMTIwMzEwLCA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIAorICAgIDc0ODMyLCAxMjAzMTUsIDEyMDMxNCwgMTE1MDYsIDAsIDQyODQxLCAxMzI2NywgMCwgMCwgNDE3NzUsIDAsIDcxMzAsIAorICAgIDQxNzczLCAwLCAxMDY2MywgMCwgMCwgMCwgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgCisgICAgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAwLCA5MjY0NywgNTgwOCwgNjU5MjIsIDAsIDEyOTY3LCA2NjA0MSwgNTYxMiwgCisgICAgNDU4MywgMCwgMCwgNjgwOTcsIDY0NTc1LCAxMjY2MzcsIDExOTY1LCAwLCA2ODM1OCwgMCwgNjk3ODksIDAsIDkyMjYwLCAKKyAgICA2ODEwMiwgOTY5OCwgNzgxNCwgNzQ0NzYsIDExOTY1MSwgMTI4NTE0LCAwLCA0MTkyMSwgMTE4ODU4LCA5NzU2LCA2OTg1LCAKKyAgICAxMTkyNTgsIDc4NDkwLCA3NDIxOSwgMCwgMCwgMTE4OTk3LCA4MDEyLCA1Njc0LCAxMjM1MywgMCwgMTIzNjEsIDU2NzcsIAorICAgIDU1ODgsIDAsIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCAxMjA1MzQsIDU2NzYsIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCAKKyAgICA1NjcyLCAxMjk0LCAwLCA3ODA1OSwgMCwgNDI1MTEsIDE3MjcsIDEyMDcyNSwgNDI0MzYsIDAsIDAsIDAsIDc0MjIyLCAKKyAgICA4NzE4LCAzNTUwLCA3MzYsIDEwMjY4LCA0NTA1LCAxMDMxNiwgNzQwOTAsIDU4MjYsIDU1MjMyLCA1ODEzLCAwLCAxMjA3MTIsIAorICAgIDU4NDEsIDU4MzcsIDU1MjM0LCAwLCAzMTA1LCAxMjgyOSwgNTgzOCwgNTc5NiwgMCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCAKKyAgICA1Nzk3LCA0MTAxMSwgNTg2NSwgMTIwMDkxLCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCA1ODA2LCA0MjM5OCwgMCwgOTAzNywgCisgICAgNTY3MSwgMTIwMDQxLCAwLCAwLCAwLCAxMjg4NTUsIDAsIDg0NywgMTI4MjQyLCA5NTI5LCAwLCA2NjY1NywgNjk4MCwgCisgICAgNzg0ODMsIDEyMDAzNSwgNzg0ODQsIDk4MzQ4MywgMCwgMTIwMDMzLCA3ODQ4NiwgMCwgMCwgMTIwMDM5LCA0MjY4MywgMCwgCisgICAgOTgzMDU1LCA3MTE0LCAwLCAwLCA0MzE5MCwgNjU0NjMsIDE1NTQsIDAsIDQyNjExLCA0MjU2MywgMCwgNTY1MSwgMjkyOSwgCisgICAgNjc5MiwgNDMyMDEsIDAsIDE5OTYzLCA1Njk4LCAwLCAwLCAwLCAwLCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKKyAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDEyMDAyMiwgMTAxNzUsIDEwMzg4LCA0Mjc5OSwgOTQxMDAsIDQxMDEzLCAKKyAgICAxMDU2OCwgMCwgOTgzNjE4LCAyODY5LCAwLCA0MTAxNSwgMTk0NjkyLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgNDE4MDIsIDAsIAogICAgIDQyNjA4LCA3ODQ2OSwgOTg4NCwgNDc1OSwgMCwgMCwgMTAyNjYsIDQxMzU5LCAxMTcwLCA0MzM2NSwgNjk4MTAsIDczOTA4LCAKICAgICAxNjA5LCA5MDIsIDAsIDYzOTM2LCAxMjg4NzUsIDExNjYxLCA4MTIyLCA1ODE4LCAwLCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgCi0gICAgMjU1NCwgNTE1OCwgNTcxNCwgMTI3MDE1LCAwLCAwLCA4MDcsIDQzMDc5LCAwLCA3ODQ3NSwgOTc2LCA1NTExLCA2NDU1MywgCi0gICAgMCwgNDIxNTUsIDAsIDQxMzU2LCA3NDExMCwgMTE4ODAxLCAwLCAwLCA4Njc2LCAwLCAwLCAxMTA2NiwgNDUxLCA2Mzk0MSwgCi0gICAgNTc5OCwgOTM0OSwgNDIwMTgsIDEyNzg1OCwgMCwgMCwgNDM2MDksIDU5MDYsIDEyMDU1MywgMTQ0MCwgMCwgMTI4ODUzLCAKLSAgICAxMjAwMTYsIDc0MjgzLCAxMTAwNSwgMCwgNjY2NTYsIDY2MDQ0LCAwLCAxOTQ2OTgsIDAsIDAsIDQzMzkzLCAxMDA5NCwgMCwgCi0gICAgMTE1MjksIDEwODU3LCAxMjA2NDMsIDY2NDM2LCA2NTQ2LCA5MywgODEwMiwgMCwgNjg0MDUsIDAsIDAsIDgxNzEsIDAsIAotICAgIDExOTA5NywgMTI3MDY0LCA5MTc1NDMsIDM4MywgNzE1NCwgNDE2NTYsIDkyNjM0LCAwLCAwLCA1MTg3LCAwLCAxMjcyNzcsIAotICAgIDExMjg2LCA2ODYyMCwgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgMCwgODI5MiwgMTk1MDc0LCAKLSAgICA0OTgwLCA4ODYwLCA3Mzk0NywgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCAwLCAwLCAxMDYzMSwgNjYwMzEsIAotICAgIDc5NzIsIDAsIDc4Nzg1LCAwLCA3OTAwLCAwLCAxMTMwOSwgNzgzMTksIDQxOTgsIDQyNzI1LCAwLCA2NzY1NiwgOTk5NSwgMCwgCi0gICAgOTI1NTIsIDAsIDEyOTMxLCAwLCA0MjY4NCwgNzQyODUsIDIwODgsIDAsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIAotICAgIDc0NzcxLCAwLCAwLCAxMjgzNiwgMCwgMCwgNzQzNDIsIDg1OTMsIDAsIDAsIDY4NDQ1LCAxMzI1NSwgMCwgMCwgNzQ2NCwgMCwgCi0gICAgNjU4NjUsIDAsIDE5NDY1MCwgMTI3MTQ0LCAwLCA5MzQyLCAxMjA0NjQsIDAsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIAotICAgIDQxMDA3LCA3NDM3NSwgMCwgNDA5OTUsIDEyMjA5LCA0MTAxMiwgMTE5MTM2LCAwLCAwLCA2OTcyNCwgNDA5OTIsIDkyMjY0LCAKLSAgICAxMjcxNTMsIDY4NjUzLCA0MzU1OCwgNTUyMiwgMCwgNjEsIDAsIDc0MTA1LCAzNjMzLCAwLCA2NTE2MiwgNDEyMzQsIAotICAgIDEyMDg5LCA3ODI4MSwgOTc3MSwgMCwgMTMyNTEsIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIAotICAgIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgCi0gICAgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDAsIAotICAgIDg5MzAsIDY2Njc4LCA3NDI0OSwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMCwgMCwgNzc0MywgMCwgCi0gICAgMCwgNzc5MDQsIDkyNjQwLCA3NzkwNSwgOTAzNCwgNjAzOSwgMCwgMTAwNzUsIDAsIDQxMDE4LCA2NTY4MywgMTAzMzgsIAotICAgIDY2NDY5LCAwLCAwLCAwLCA0MjgxNSwgMCwgNDE5NjYsIDAsIDAsIDAsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgCi0gICAgMCwgMCwgMTIwMzM5LCA2NTE1OSwgNjQzOTAsIDAsIDAsIDU1MjAsIDExNjYyLCAwLCA2NTMzMCwgNDI4MTIsIDAsIDAsIAotICAgIDEyMzI2LCAwLCAwLCA0MjgwOCwgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgMCwgMCwgMCwgMCwgMCwgMCwgOTE3NTg0LCA0MzcwMiwgCi0gICAgMCwgNTg1NywgNjUzNDIsIDkyNzI3LCAxMTkxMjAsIDEyMDA3OSwgODY0NCwgMCwgMCwgMCwgNzQyOTYsIDQxOTA5LCAwLCAKLSAgICAxMjAzMzIsIDI3OTEsIDY5NjYzLCAxODkxLCA2OTgyNCwgMCwgNDE5MDcsIDY2NjQ3LCAxMTg5MzksIDg3NjEsIDEyOTQyLCAKLSAgICA1NzQ4LCAwLCAxMDc3MywgMCwgMCwgODc5NiwgNzgxNDksIDY0MTIsIDIwNjEsIDg1MjAsIDEzMTQ2LCAxMjcxODUsIAotICAgIDYzOTMxLCAwLCA2NTkwMiwgMjg4MiwgMCwgMCwgMTI4NDMsIDQ1MjAsIDEyMDM0NSwgOTI0NTksIDAsIDAsIDAsIDczODYwLCAKLSAgICAwLCAwLCA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgCi0gICAgMCwgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAKLSAgICAxOTQ5MzUsIDAsIDAsIDAsIDE5NDcyMCwgNjUwNTYsIDM2MjAsIDAsIDY4Mzc4LCA0NTU2LCAwLCAwLCAxOTQ5MzMsIAotICAgIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIDAsIDk4MzksIAotICAgIDAsIDEyODkxLCAwLCAwLCA2Mzk5OSwgMjAxNiwgNDE5MTcsIDk3ODgsIDYzOTI4LCAwLCAxODYyLCA2NTgwMCwgOTE1NSwgCi0gICAgNjY2MjMsIDk3ODYsIDY1MDgyLCA0MTkxOSwgODU3OSwgNDE5MTQsIDc5ODEsIDAsIDY2MDE3LCA0NTA4LCA2NDg4MywgCi0gICAgOTI0NTYsIDkyNTIyLCAxMjc4MTQsIDAsIDY0NTkyLCA3NDI3NiwgMTIwMDgwLCA2Nzg0LCA3ODc4OCwgNjgxODEsIDAsIDAsIAotICAgIDAsIDEyNzUzNCwgMTIxNDcsIDkwMjQsIDY2Mzc4LCA2NjQ3MiwgMCwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIAotICAgIDE5NDkyOSwgNjQ1MDksIDc4MTUyLCAwLCAwLCAxMTA1MSwgMCwgMCwgMTEzNTUsIDY1ODg1LCAwLCAxMjgzMTAsIDQxMjE0LCAKLSAgICAwLCAxMjI5OSwgMCwgNzUwMCwgNDUwNiwgNzc3MywgMCwgMCwgOTk2MywgNjg2NDksIDAsIDQwNDAsIDEyMDU3MCwgNjE2NywgCi0gICAgMCwgNjM5MjIsIDY1OTQsIDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCAKLSAgICA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCAwLCA2ODAzLCAwLCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCAKLSAgICA5MjY0MSwgMzQzNSwgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCAKLSAgICA0Mjc0MiwgOTUxNywgMTE1MTgsIDAsIDc4NzkwLCAwLCAxOTQ3NzcsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCAKLSAgICA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIAotICAgIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIAotICAgIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIAotICAgIDAsIDAsIDQxNSwgNjM5NjQsIDYzOTYzLCA0MjM0NSwgMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDAsIDYzOTYxLCAKLSAgICA0NDcyLCAwLCAwLCA3ODE1OSwgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIAotICAgIDEwMzMxLCA2MzgzMCwgMTE5NjI1LCAxOTQ5NDUsIDQyMTAzLCA4NjI4LCA5ODEzLCAwLCA0MjQ1MywgMTYwNCwgOTU2NSwgCi0gICAgMTA1MzksIDY5NzAxLCA2NTc2NCwgNDE0MTUsIDY1NzY3LCAwLCA4NDU3LCA0MjMwMSwgMTEzNzIsIDY0ODczLCAxMTk5MiwgCi0gICAgMCwgMCwgNjM5ODAsIDExODAxLCAzNjIyLCAwLCA2NDMzNiwgMTIwMTcsIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIAotICAgIDE5NjYsIDQzNjI4LCAwLCAwLCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAotICAgIDQwMiwgMCwgMTMxNDcsIDAsIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDAsIAotICAgIDExMzAyLCA2MjU5LCA0MzM5NSwgMCwgMCwgMTk0NjcwLCAwLCA5MjM1MSwgMCwgNzQ0MjUsIDExMjk5LCAxNTYxLCAwLCAKLSAgICA5MjM1OSwgNjQ5NDIsIDAsIDE5NDczMywgMCwgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIDY5Nzg0LCA3NDA2MCwgCi0gICAgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDE5NDY2OSwgNzQwMiwgCi0gICAgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2ODQyMSwgMCwgMCwgNTQwNSwgMTI3ODc1LCAKLSAgICA2NDg2NiwgMCwgMTE5NTgzLCAxMjgzNDUsIDc4Nzg0LCA3NDI0OCwgMTEzMzAsIDE5NDcyMywgNjQ2OTAsIDMyNTQsIDAsIDAsIAotICAgIDAsIDQyMzkwLCA0MzY3OCwgMTk0NzI1LCAwLCA2NTA3NywgMCwgNjM4OCwgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgCi0gICAgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAwLCA0MjY5MSwgOTE3ODg2LCAxMjcxOTgsIAotICAgIDc0NzY3LCAwLCAxMjcwNzUsIDEzNzksIDI0NiwgMCwgMCwgMzc4OCwgMCwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgCi0gICAgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA2NTYsIDAsIDY1MjE0LCAxMTkyNDIsIDQyNTY3LCAKLSAgICA5MjIxNywgMTMxNjMsIDAsIDEyMDgzMSwgNzQ1OTcsIDMxODIsIDAsIDAsIDAsIDY1MDM0LCA2NTg4OSwgNDIxNjksIDQ3NTUsIAotICAgIDc0MjQ0LCAwLCAxMTQ0MywgMCwgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCAKLSAgICA3NDUxMCwgMCwgNzQ0ODUsIDQyNDQyLCA2NTQ3MCwgMCwgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCAxMjgwMDYsIAotICAgIDAsIDk4MjgsIDAsIDAsIDQyMjgwLCAwLCA5MzUxLCA3Nzc4LCA2NDM3OSwgNzQ5NiwgNDI0MzEsIDY5MTYsIDEyMDgsIDAsIAotICAgIDExOTYzMSwgMTEwMDIsIDQyNDcwLCAwLCAxMTg5NDYsIDAsIDAsIDc0MDQxLCAwLCAxMjA2MzMsIDQzNTM5LCA1NDExLCAKLSAgICA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgMCwgNDIzOTMsIDEzMDg2LCAxMzEwLCAxOTQ2ODcsIDkzMzcsIDEyMDUyLCAxMDY0MywgCi0gICAgNTUyNzEsIDAsIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgCisgICAgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgMCwgMCwgODA3LCA0MzA3OSwgMCwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDAsIAorICAgIDQyMTU1LCAwLCA0MTM1NiwgNzQxMTAsIDExODgwMSwgMTI2NjE0LCAwLCA4Njc2LCA5ODMyODMsIDAsIDU1ODIsIDQ1MSwgCisgICAgNjM5NDEsIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDAsIDAsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAorICAgIDEyODg1MywgMTIwMDE2LCA3NDI4MywgMTEwMDUsIDAsIDY2NjU2LCA2NjA0NCwgMCwgMTk0Njk4LCAwLCAwLCA0MzM5MywgCisgICAgMTAwOTQsIDAsIDExNTI5LCAxMDg1NywgMTIwNjQzLCA2NjQzNiwgNjU0NiwgOTMsIDgxMDIsIDAsIDY4NDA1LCAwLCAwLCAKKyAgICA4MTcxLCAwLCAxMTkwOTcsIDEyNzA2NCwgOTE3NTQzLCAzODMsIDcxNTQsIDQxNjU2LCA5MjYzNCwgOTQwNDAsIDAsIDUxODcsIAorICAgIDcxMjk2LCAxMjcyNzcsIDExMjg2LCA2ODYyMCwgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAwLCA0MTAwNSwgMCwgMCwgCisgICAgOTgzODE4LCA4MjkyLCAxOTUwNzQsIDQ5ODAsIDg4NjAsIDczOTQ3LCAxMDAyOCwgNjUyOTEsIDcwNzYsIDEzMTgyLCAKKyAgICAxOTQ3MDUsIDAsIDAsIDEwNjMxLCA2NjAzMSwgNzk3MiwgMCwgNzg3ODUsIDAsIDc5MDAsIDAsIDExMzA5LCAzODA2LCAKKyAgICA0MTk4LCA0MjcyNSwgMCwgNjc2NTYsIDk5OTUsIDAsIDkyNTUyLCAwLCAxMjkzMSwgMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKKyAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDAsIDAsIDEyODM2LCAwLCAwLCA3NDM0MiwgODU5MywgCisgICAgMCwgMCwgNjg0NDUsIDEzMjU1LCAwLCAwLCA3NDY0LCAwLCA2NTg2NSwgMCwgMTk0NjUwLCAxMjcxNDQsIDAsIDkzNDIsIAorICAgIDEyMDQ2NCwgMCwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgNDEwMDcsIDc0Mzc1LCAwLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAKKyAgICAxMTkxMzYsIDAsIDAsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDEyNzE1MywgNjg2NTMsIDQzNTU4LCA1NTIyLCAwLCA2MSwgMCwgCisgICAgNzQxMDUsIDM2MzMsIDk4Mzg5MSwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDk4Mzg5NiwgMTMyNTEsIAorICAgIDEyODcwMSwgMCwgNjI2MiwgMjc4NCwgNDI3NDMsIDAsIDgxMjYsIDY2NDgzLCAwLCAwLCA0NDEsIDQyNjIxLCAwLCAwLCAKKyAgICA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCA2NTgzNCwgODMyNCwgCisgICAgMTE5MTAzLCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDAsIDk4MzY1MCwgODkzMCwgNjY2NzgsIDc0MjQ5LCAxMTkzLCAKKyAgICAxMDA1NiwgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAwLCAwLCA3NzQzLCAwLCAwLCA3NzkwNCwgOTI2NDAsIDc3OTA1LCAKKyAgICA5MDM0LCA2MDM5LCAwLCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIDAsIDAsIDAsIDQyODE1LCAwLCAKKyAgICA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCA5MTEsIDc1MzksIDAsIDAsIDEyMDMzOSwgNjUxNTksIAorICAgIDY0MzkwLCAwLCAwLCA1NTIwLCAxMTY2MiwgMCwgNjUzMzAsIDQyODEyLCAwLCAwLCAxMjMyNiwgOTgzODQ3LCAwLCA0MjgwOCwgCisgICAgMTI4MzM3LCA5MzQ4LCA2NDkwMSwgOTgzODUyLCAwLCAwLCAwLCAwLCAwLCA5MTc1ODQsIDQzNzAyLCA5ODM1NzYsIDU4NTcsIAorICAgIDY1MzQyLCA5MjcyNywgMTE5MTIwLCAxMjAwNzksIDg2NDQsIDAsIDAsIDAsIDc0Mjk2LCA0MTkwOSwgMCwgMTIwMzMyLCAKKyAgICAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDAsIDQxOTA3LCA2NjY0NywgMTE4OTM5LCA4NzYxLCAxMjk0MiwgNTc0OCwgMCwgCisgICAgMTA3NzMsIDAsIDAsIDg3OTYsIDc4MTQ5LCA2NDEyLCAyMDYxLCA4NTIwLCAxMzE0NiwgMTI3MTg1LCA2MzkzMSwgMCwgCisgICAgNjU5MDIsIDI4ODIsIDAsIDAsIDEyODQzLCA0NTIwLCAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NTEsIDAsIDczODYwLCAwLCAwLCAKKyAgICA2NDM0NSwgMCwgOTIwMSwgMTI4MzE0LCAxOTQ5NDAsIDAsIDAsIDQzNjc5LCA5MTc1ODUsIDY1MTE3LCA5MjI3MCwgMCwgCisgICAgMTA0MjcsIDAsIDM4NDQsIDEyMDY3NSwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDAsIDEyODc4OSwgMCwgMCwgNzgzLCAKKyAgICAxOTQ5MzUsIDAsIDAsIDk4MzA2NCwgMTk0NzIwLCA2NTA1NiwgMzYyMCwgNDExODAsIDY4Mzc4LCA0NTU2LCAwLCAwLCAKKyAgICAxOTQ5MzMsIDc0MjUwLCAwLCA2NzY1NywgMTA1MTAsIDQzODIsIDY2NDgyLCAwLCAwLCAxMjc1MjcsIDkxNzcsIDg5MDIsIAorICAgIDkzOTU4LCA5ODM5LCAwLCAxMjg5MSwgOTgzNzQ2LCA5ODM2MjcsIDYzOTk5LCAyMDE2LCA0MTkxNywgOTc4OCwgNjM5MjgsIAorICAgIDAsIDE4NjIsIDY1ODAwLCA5MTU1LCA2NjYyMywgOTc4NiwgNjUwODIsIDQxOTE5LCA4NTc5LCA0MTkxNCwgNzk4MSwgMCwgCisgICAgNjYwMTcsIDQ1MDgsIDY0ODgzLCA5MjQ1NiwgOTI1MjIsIDEyNzgxNCwgMCwgNjQ1OTIsIDc0Mjc2LCAxMjAwODAsIDY3ODQsIAorICAgIDc4Nzg4LCA2ODE4MSwgMCwgMCwgMCwgMTI3NTM0LCAxMjE0NywgOTAyNCwgNjYzNzgsIDY2NDcyLCA5ODM5MjAsIDY0Mjg5LCAKKyAgICA2NTI4OSwgNzgxNTEsIDY2NjU4LCAxOTQ5MjksIDY0NTA5LCA3ODE1MiwgMCwgMTI2NTA1LCAxMTA1MSwgOTgzMjg4LCAwLCAKKyAgICAxMTM1NSwgNjU4ODUsIDAsIDEyODMxMCwgNDEyMTQsIDAsIDEyMjk5LCAwLCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCAKKyAgICA5OTYzLCA2ODY0OSwgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDAsIDYzOTIyLCA2NTk0LCA5ODM3MzEsIDAsIDAsIAorICAgIDM2MjQsIDQzMDM2LCAwLCA2Mzg3LCA2Mzk5MCwgMTk5NDcsIDYzOTg4LCA0MTk1NSwgMCwgNjM5OTMsIDEwNDQwLCA5NjExLCAKKyAgICA2NTYwNSwgNjgwMywgMCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgCisgICAgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIDExNTE4LCAwLCA3ODc5MCwgCisgICAgMCwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgOTU5MSwgNDUxNiwgMTAyMTcsIDY4MzcwLCAKKyAgICAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDAsIDAsIDAsIDAsIDExMzk3LCAyODgwLCAwLCAwLCAKKyAgICAyODcyLCAwLCAwLCAzNDk4LCA0Mzc4LCA5MTc1MzksIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIAorICAgIDUyMzAsIDAsIDAsIDAsIDAsIDAsIDgxNjEsIDM5MywgMTIwMTMsIDAsIDAsIDEyNjQ3OSwgNDE1LCA2Mzk2NCwgNjM5NjMsIAorICAgIDQyMzQ1LCA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDAsIDYzOTYxLCA0NDcyLCAwLCAwLCA3ODE1OSwgCisgICAgNjk2OTksIDkxNzkzNiwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgCisgICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDAsIDQyNDUzLCAxNjA0LCA5NTY1LCAxMDUzOSwgNjk3MDEsIAorICAgIDY1NzY0LCA0MTQxNSwgNjU3NjcsIDAsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCA2Mzk4MCwgCisgICAgMTE4MDEsIDM2MjIsIDk4MzEyNCwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAxOTY2LCAKKyAgICA0MzYyOCwgMCwgOTgzMjg0LCAwLCAwLCA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIAorICAgIDQwMiwgMCwgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgCisgICAgMCwgMTEzMDIsIDYyNTksIDQzMzk1LCAwLCAwLCAxOTQ2NzAsIDAsIDkyMzUxLCAwLCA3NDQyNSwgMTEyOTksIDE1NjEsIDAsIAorICAgIDkyMzU5LCA2NDk0MiwgOTgzNTU5LCAxOTQ3MzMsIDk4MzY3NywgMTk0NzMyLCAwLCA3NDMwMSwgMCwgMTEyODAsIDAsIAorICAgIDY5Nzg0LCA3NDA2MCwgMCwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIAorICAgIDE5NDY2OSwgNzQwMiwgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2ODQyMSwgOTgzOTEwLCAwLCAKKyAgICA1NDA1LCAxMjc4NzUsIDY0ODY2LCAwLCAxMTk1ODMsIDEyODM0NSwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCAKKyAgICA2NDY5MCwgMzI1NCwgMCwgMCwgMTI4MjA3LCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgOTgzOTAwLCA2NTA3NywgMCwgNjM4OCwgCisgICAgMzM1NSwgOTUwOCwgOTg2NywgNTcyMywgMTE1MjAsIDU2MTEsIDAsIDMzNzcsIDAsIDAsIDAsIDAsIDc4MjI4LCAwLCAKKyAgICA5ODM3NTMsIDQyNjkxLCA5MTc4ODYsIDEyNzE5OCwgNzQ3NjcsIDAsIDEyNzA3NSwgMTM3OSwgMjQ2LCAwLCA5ODM3NTIsIAorICAgIDM3ODgsIDk4MzEwNiwgMTEwNDEsIDkyNTQ5LCA2NjMwNCwgMCwgMCwgODkxNywgNDI0MDMsIDMwMSwgMCwgMCwgMCwgMCwgMCwgCisgICAgOTgzNjg4LCAxMDY1NiwgMCwgNjUyMTQsIDExOTI0MiwgNDI1NjcsIDkyMjE3LCAxMzE2MywgOTgzMjAyLCAxMjA4MzEsIAorICAgIDc0NTk3LCAzMTgyLCAwLCAwLCAwLCA2NTAzNCwgNjU4ODksIDQyMTY5LCA0NzU1LCA3NDI0NCwgMTk0NjIxLCAxMTQ0MywgMCwgCisgICAgNjYzMTksIDc0NTk4LCA2MDgsIDYwMCwgMCwgMTIxOSwgMzkzNCwgNjQyMDYsIDExNDgzLCA3NDUxMCwgMCwgNzQ0ODUsIAorICAgIDQyNDQyLCA2NTQ3MCwgOTgzODk4LCA2NDIwMiwgMTMxNjAsIDc3NTksIDQyNDgyLCA0ODUsIDEyODAwNiwgMCwgOTgyOCwgMCwgCisgICAgMCwgNDIyODAsIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAKKyAgICAxMTAwMiwgNDI0NzAsIDAsIDExODk0NiwgMCwgMCwgNzQwNDEsIDAsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIDAsIDAsIAorICAgIDAsIDkxNTAsIDAsIDQyMzkzLCAxMzA4NiwgMTMxMCwgMTk0Njg3LCA5MzM3LCAxMjA1MiwgMTA2NDMsIDU1MjcxLCAKKyAgICA5ODMxNzksIDEyMTY2LCAyNTQ2LCAxOTQ2ODMsIDIxMywgMTE4ODUyLCA2NTYxMSwgMCwgMCwgMTk0NzU2LCA3NDMxMCwgCiAgICAgNjU1NCwgMCwgMTE5MTQsIDU0NTIsIDAsIDAsIDAsIDAsIDAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDAsIDk2NTAsIDQzMzMwLCAKICAgICAwLCAxOTQ2NzUsIDE0MDYsIDAsIDAsIDkyNjU5LCAwLCA2ODIyMywgNDE0MywgMTk0Njc3LCAwLCA2NTc0OCwgNDE0MSwgCiAgICAgOTY4MiwgNjUyODcsIDE1MDgsIDEyNzAxMywgODc3OSwgMTA1NjksIDg3MjUsIDEzMjk5LCA2NjYzOCwgNjU3NTAsIDQyMjYzLCAKICAgICA0MTQ1LCA2MzgwLCA2NTc1MSwgNjY2MTMsIDQzOTk0LCA2NTczOCwgNTUyNTAsIDkxODUsIDk1NTAsIDAsIDQzNDAzLCAwLCAKLSAgICAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgMCwgMTI5NTUsIDEwNTk2LCAyODg4LCAwLCAwLCAwLCA5NjU3LCAKLSAgICA5MDE5LCAxOTQ3NjYsIDAsIDI4NzgsIDUzOTAsIDAsIDE5NDk2MSwgMCwgNjg2NzksIDQzNTUyLCA3NTAxLCA2MzI4LCAwLCAKLSAgICAxMDQyOSwgMTAzNjUsIDAsIDAsIDQxOTQ2LCA3NTAzLCA1MjM1LCA4MDMsIDY4MzgxLCAwLCAwLCA4OTg2LCAwLCAxMDYzMiwgCi0gICAgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAwLCAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCAwLCAKLSAgICA0MzM5NCwgNTU1LCAwLCAwLCA2NjY0NiwgMCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCAwLCA4ODU0LCAKLSAgICA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAKLSAgICAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIDAsIDY4MjgsIDE2MjUsIDkyMzAyLCAwLCAKLSAgICAxMzQyLCA2ODQ0MCwgNjQxNzEsIDAsIDEwOTAzLCAwLCAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCAwLCAKLSAgICAwLCA2NDM4MSwgMCwgMCwgMCwgNDIyNDUsIDAsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMCwgCi0gICAgNzgwMjUsIDAsIDExMzQ5LCA0MDk5MSwgMCwgMCwgMTE5NTk5LCAxMjA4MzAsIDAsIDExOTcsIDEyODI4MiwgMTE0OSwgCi0gICAgMTk0OTcwLCAwLCAwLCA0MDk5MCwgMCwgMCwgMzQ5MiwgMCwgMTI3OTQyLCAwLCAwLCAwLCAxMjgzOCwgMCwgMTk5NDgsIDAsIAotICAgIDMwOTksIDAsIDAsIDQxMDg3LCAwLCAwLCAwLCAxMTkwNTksIDEyMDM2LCA0MTMwOSwgMCwgMCwgODE1MiwgMCwgNjQ0MjgsIAotICAgIDEyMjI3LCAwLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIAotICAgIDkyNjgwLCAwLCA2ODE1NCwgMCwgMTc0MywgMCwgMCwgOTIyMzksIDY1MTg2LCAwLCAwLCA5NjA2LCAwLCAwLCA2NDQzOSwgMCwgCi0gICAgMCwgOTI2ODYsIDAsIDAsIDE5NDk2NywgMCwgMCwgMzM5NSwgOTM2MiwgMTA4NzgsIDAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgCi0gICAgMCwgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgMTI4MjIsIDQyNjk5LCAwLCAwLCAKLSAgICA3NDgxOCwgNTM5NiwgMCwgNDI2MzcsIDQxMDgwLCAwLCAxMjAzOSwgMTA1NTksIDAsIDExODg5MiwgMCwgOTQ3MiwgMCwgCi0gICAgMTE5MjksIDAsIDcxNzAsIDk1OTYsIDYxMzAsIDEyODgyNiwgNDM2MjksIDExNTc5LCAxOTQ3NDEsIDAsIDE5NDc0MCwgCi0gICAgMTI4NjkxLCA5MjE4NSwgNjY2OTksIDY0NDQwLCAxMDA0LCA5MjU4NCwgMTk0NzM3LCA0MzIzNCwgNjYwMDgsIDEyNjI3LCAwLCAKLSAgICA2ODQxNCwgMCwgNDM2MTksIDQzMzgyLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCAxMjcxNTgsIAotICAgIDY1NjI3LCAwLCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDAsIDAsIDAsIDAsIDY1MzY1LCA3Mzg3NywgNjU2MjgsIAotICAgIDc4MDE5LCAwLCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgMTAzNTIsIDczOTE3LCAxMDA2MSwgCi0gICAgNDMyMzcsIDAsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgCi0gICAgMTA4OTksIDY1NDY5LCAwLCAwLCAwLCAyNDEwLCA5OTMsIDAsIDEyMDU4OSwgMTIwNjg5LCA3ODY5MywgMCwgMCwgNzIzMiwgCi0gICAgMCwgMTE5MjUzLCAwLCA3MTEwLCA3NDQ2MiwgMjA2NiwgMTA0ODksIDQyMTY2LCA0MzQ2MywgMTA2NTksIDM2MDAsIDAsIAotICAgIDQyMjQsIDEzMzYsIDQxNTE4LCAwLCAwLCAwLCAwLCA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDAsIDAsIAotICAgIDAsIDAsIDI3MiwgNDI2MywgODc5MywgMCwgMCwgNDE1MDIsIDAsIDk4MywgMTI1NDksIDAsIDAsIDExOTAsIDQxMDksIAotICAgIDEzMzUsIDg0MSwgNTg4OCwgNDEzNTgsIDY0ODYzLCA5NTQ0LCA0MzQ4MSwgMCwgMCwgMCwgMjA5OSwgNTEyMCwgMjQwOSwgCi0gICAgNzc5OSwgMCwgNzQ0MjQsIDAsIDAsIDQ3MzEsIDAsIDY2NjI5LCAwLCAwLCAxMjU1LCA0MTQ5LCA5MjQ3LCAwLCA5OTEzLCAwLCAKLSAgICAwLCA2NDkxNCwgOTE3Nzg3LCA2NTEwMSwgMCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgCi0gICAgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgMCwgODE4MCwgMCwgCi0gICAgMCwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgMCwgMCwgMTI4ODU4LCAwLCAwLCAxMDY5NSwgMCwgCi0gICAgNzU0MCwgMCwgODgxLCA3ODU3LCA2MDY3LCA2NTE2NCwgMCwgMCwgMCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgNjQzMjEsIAotICAgIDgzNTksIDAsIDEyNjg5LCAwLCAxOTQ1OTQsIDAsIDAsIDAsIDY4MTgzLCAwLCAwLCAxMjg3LCA1NDM2LCAwLCAwLCA3NDE0MiwgCi0gICAgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDM2NTIsIDEwNTM3LCAwLCAxMjc2LCAxMjA0NDAsIDY1NDksIDI3OSwgNzM3NDUsIDAsIDAsIDAsIDE0ODksIDAsIDAsIDAsIAotICAgIDM4OTksIDEwMDcsIDQyMTI0LCAwLCA0MjEyMiwgOTIzMzcsIDAsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgMCwgMCwgODk1NiwgCi0gICAgNDMwODMsIDExOTgzMCwgNDIxMzgsIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIAotICAgIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMCwgMCwgMCwgNzg2MjIsIDQzNzEyLCAyNTgyLCAxMTQ3MCwgCi0gICAgNjQ1MzgsIDc0NDQsIDc4NjE1LCA3ODYxNiwgNDE1NTAsIDAsIDczODM3LCAxMTk4MjMsIDI1MjcsIDExOTgyNCwgMTk3LCAKLSAgICAyNzk5LCA5MjU5NCwgNDE5NDQsIDEyMDI3NiwgOTkzMywgMCwgNjY1MTUsIDc2NywgNTUyNCwgNzAyOCwgMCwgMCwgCi0gICAgMTE5ODI3LCAxMTk4MTcsIDExOTgyOCwgNzg2MzMsIDEwODk2LCAwLCAxNzk5LCAxMjA0OTcsIDY5NzEsIDc0MzM2LCAKLSAgICAxMjgzNDIsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyNDM0LCAwLCAwLCAxMjA1NzksIDAsIDQ2MzEsIDAsIDAsIDY0MDcsIAotICAgIDAsIDYzMzgsIDQzMjE0LCAwLCA3NTcwLCAwLCAzMTkyLCAwLCA4NDE0LCAwLCAwLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgMCwgCi0gICAgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIDAsIAotICAgIDY5MjQxLCA5NTk5LCA3ODYyOSwgNDMwODQsIDc4NjI3LCA3ODYyOCwgNzg2MjUsIDIzOTksIDY5NjkzLCA4OTk0LCAxMDk0NCwgCi0gICAgNDEyMDgsIDAsIDQxMTY4LCA4MTc4LCAwLCAzMzY3LCA5MjMzNCwgNDI1MTAsIDc4NjQxLCA3ODYzNiwgNjgwNCwgNzg2MzQsIAotICAgIDE5NDcsIDAsIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMCwgCi0gICAgODAxNywgMCwgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgMTIwNjk2LCA0OTA0LCAwLCAKKyAgICAwLCAwLCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgOTgzMjAzLCAxMjk1NSwgMTA1OTYsIDI4ODgsIDE5NDY0NSwgMCwgCisgICAgMCwgOTY1NywgOTAxOSwgMTk0NzY2LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDAsIDY4Njc5LCA0MzU1MiwgNzUwMSwgCisgICAgNjMyOCwgMCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMCwgODk4NiwgCisgICAgMTI2NTQyLCAxMDYzMiwgMTE5MzQsIDExNDUyLCAxMzMyLCAwLCAwLCAxMjY2NDcsIDAsIDExODg4NywgMTc5MSwgNTE5MSwgCisgICAgOTI4OCwgNjQ4MjIsIDI4OTIsIDAsIDQzMzk0LCA1NTUsIDAsIDAsIDY2NjQ2LCAwLCAxMTkwMDIsIDEzMTUxLCA3NDUxMiwgCisgICAgNzI4OSwgNzQwNTUsIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAwLCAxNzg0LCAxMzYxLCAKKyAgICAxOTUwNDcsIDAsIDc5MDUsIDAsIDY0ODY4LCAxMjg4MTMsIDEzMTU4LCA5MjE2NiwgNzIxMSwgMCwgOTM3MSwgNzM5NzMsIAorICAgIDkxNzU1MywgNjgyOCwgMTYyNSwgOTIzMDIsIDAsIDEzNDIsIDY4NDQwLCA2NDE3MSwgMTI2NzA0LCAxMDkwMywgOTgzNDg2LCAKKyAgICAwLCAwLCAwLCAwLCA0NDgyLCA0MTYwNiwgMCwgMTI4NTY5LCA5ODMxMTIsIDAsIDY0MzgxLCAwLCAwLCAxOTUwOTAsIAorICAgIDQyMjQ1LCAxMjY0NjcsIDQxOTcyLCAwLCA0NDQsIDAsIDkxMjcsIDY2Njg3LCA2NjYxOSwgMTI2NDg5LCA3ODAyNSwgMCwgCisgICAgMTEzNDksIDQwOTkxLCA5MTc1NzAsIDAsIDExOTU5OSwgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDE5NDk3MCwgCisgICAgMCwgMCwgNDA5OTAsIDQzNzY1LCAwLCAzNDkyLCAwLCAxMjc5NDIsIDAsIDAsIDAsIDEyODM4LCA5ODM5NjksIDE5OTQ4LCAwLCAKKyAgICAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgMCwgMTE5MDU5LCAxMjAzNiwgNDEzMDksIDAsIDAsIDgxNTIsIDAsIDQxNTUwLCAKKyAgICAxMjIyNywgOTgzNjEzLCAwLCAxMjgyOCwgMTI3NTExLCAwLCAwLCAxMjA3MDgsIDAsIDAsIDEwMzg2LCAxMTk1NzQsIDAsIDAsIAorICAgIDkyNjgwLCA5ODM3ODAsIDY4MTU0LCAwLCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgMCwgCisgICAgNjQ0MzksIDAsIDAsIDkyNjg2LCAwLCAwLCAxOTQ5NjcsIDAsIDAsIDMzOTUsIDkzNjIsIDEwODc4LCAwLCAwLCA3ODM2MiwgCisgICAgNjQ4MzAsIDAsIDEyNjU1NywgNDEwOTEsIDM0MjYsIDEzNDQsIDg4NzAsIDAsIDAsIDQ3MzUsIDEyNzAxNywgNjExOSwgCisgICAgMTI4MjIsIDQyNjk5LCAwLCA5ODM4MTUsIDc0ODE4LCAxNDIzLCAwLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgCisgICAgMCwgMTE4ODkyLCAwLCA5NDcyLCAwLCAxMTkyOSwgMCwgNzE3MCwgOTU5NiwgNjEzMCwgMTI4ODI2LCA0MzYyOSwgMTE1NzksIAorICAgIDc4NzEzLCAwLCAxOTQ3NDAsIDEyODY5MSwgOTIxODUsIDY2Njk5LCA2NDQ0MCwgMTAwNCwgOTI1ODQsIDE5NDczNywgCisgICAgNDMyMzQsIDY2MDA4LCAxMjYyNywgMCwgNjg0MTQsIDAsIDQzNjE5LCA0MzMwMywgMTEzMDAsIDQzMzA0LCA5Njg2LCA1ODkwLCAKKyAgICAxMTc3NiwgNzU1OCwgMTI3MTU4LCA2NTYyNywgMCwgMTA3MTgsIDEzMTU0LCAzNDYxLCA5MTM5LCAwLCAwLCAwLCAwLCAKKyAgICA2NTM2NSwgNzM4NzcsIDY1NjI4LCA3ODAxOSwgMTIwMzE5LCAwLCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgCisgICAgNTQwMywgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDAsIDUxNDAsIDIwOSwgMTI4ODQ3LCA0MTcwNCwgNDEwNTYsIAorICAgIDQzMDc4LCAxMjgxMjUsIDExODgwOSwgMCwgMTA4OTksIDY1NDY5LCA5MjM2MiwgMCwgMCwgMjQxMCwgOTkzLCAwLCAKKyAgICAxMjA1ODksIDEyMDY4OSwgNzg2OTMsIDAsIDAsIDcyMzIsIDAsIDExOTI1MywgMCwgNzExMCwgNzQ0NjIsIDIwNjYsIAorICAgIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCAwLCA0MjI0LCAxMzM2LCA0MTUxOCwgMCwgMCwgMCwgMCwgCisgICAgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAwLCAwLCAyNzIsIDQyNjMsIDg3OTMsIDAsIDAsIAorICAgIDQxNTAyLCAwLCA5ODMsIDEyNTQ5LCAwLCAwLCAxMTkwLCA0MTA5LCAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgCisgICAgOTU0NCwgNDM0ODEsIDAsIDE5NDgwNiwgNzAwMjcsIDIwOTksIDUxMjAsIDI0MDksIDc3OTksIDAsIDc0NDI0LCAwLCAwLCAKKyAgICA0NzMxLCAwLCA2NjYyOSwgMCwgMCwgMTI1NSwgNDE0OSwgOTI0NywgMCwgOTkxMywgMCwgMCwgNjQ5MTQsIDkxNzc4NywgCisgICAgNjUxMDEsIDAsIDExNjk0LCA5MjQ3NSwgMTE2OTAsIDU4MzUsIDEyNzE2NCwgNjY2MjUsIDEwODQyLCA0MTM1NCwgNDIxMjMsIAorICAgIDQzMDk3LCAxMTY4OCwgNjY2MzQsIDEwOTQsIDE5NCwgNjQ2OTIsIDAsIDgxODAsIDAsIDAsIDk5NzIsIDczODY1LCA0NTE5LCAKKyAgICA2MTE0LCAxMDg5OCwgNDMwNzIsIDAsIDAsIDkzOTYwLCA5ODMzMTQsIDEyNjU4MSwgMTA2OTUsIDAsIDc1NDAsIDAsIDg4MSwgCisgICAgNzg1NywgNjA2NywgNjUxNjQsIDAsIDAsIDAsIDEzMzExLCA2ODQwMywgNDE4NTcsIDY0MzIxLCA4MzU5LCAwLCAxMjY4OSwgCisgICAgMCwgMTk0NTk0LCAwLCA5ODMzMDQsIDk4Mzg3MiwgNjgxODMsIDAsIDk4MzMwNiwgMTI4NywgNTQzNiwgMCwgOTgzMzA5LCAKKyAgICA3NDE0MiwgOTIzMjgsIDc0MTUyLCAxMTkwNzgsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIDk4MzMxNSwgMCwgCisgICAgMTI3MjQyLCAwLCAwLCAzNjUyLCAxMDUzNywgMCwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAwLCAwLCAKKyAgICAxNDg5LCAwLCAwLCAwLCAzODk5LCAxMDA3LCA0MjEyNCwgOTgzNTU3LCA0MjEyMiwgOTIzMzcsIDkyMzY3LCAwLCAxMTk4NSwgCisgICAgMTM0NSwgNzg2MDAsIDAsIDAsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAwLCAxMjE1MSwgNzg2MDgsIAorICAgIDc4NjA0LCA3ODYwNSwgNjI4NSwgNzg2MDMsIDc4NjEyLCA3ODYxMywgNjU5NDIsIDQ5MiwgODY4NSwgMCwgOTgzNzUwLCAwLCAKKyAgICA3ODYyMiwgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCAyMjk3LCAwLCA3MzgzNywgCisgICAgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCAxMjAyNzYsIDk5MzMsIDAsIDY2NTE1LCAKKyAgICA3NjcsIDU1MjQsIDcwMjgsIDAsIDAsIDExOTgyNywgMTE5ODE3LCAxMTk4MjgsIDc4NjMzLCAxMDg5NiwgMCwgMTc5OSwgCisgICAgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgOTQwMTgsIDAsIAorICAgIDEyMDU3OSwgMCwgNDYzMSwgMCwgMCwgNjQwNywgMCwgNjMzOCwgNDMyMTQsIDAsIDc1NzAsIDAsIDMxOTIsIDAsIDg0MTQsIAorICAgIDAsIDkzOTgzLCAwLCAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIAorICAgIDU1MjE2LCA4NjU0LCA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgCisgICAgNzg2MjcsIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCA0MTIwOCwgOTgzNzA0LCA0MTE2OCwgCisgICAgODE3OCwgMCwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgNzg2MzYsIDY4MDQsIDc4NjM0LCAxOTQ3LCAwLCAwLCAKKyAgICA5MjY4MSwgNDI3NTksIDExMDY4LCAxNzA1LCA5MzMxLCAwLCA3NDc5OCwgOTE4MSwgNjUzNTksIDAsIDgwMTcsIDExOTgzMSwgCisgICAgNjUwOTYsIDY2NzIwLCAwLCA0MzQ3NSwgMCwgNDkwOSwgMTIxMjYsIDEyODY3MywgMTIwNjk2LCA0OTA0LCA5ODMzMjUsIAogICAgIDY5NjUwLCAxMzY1LCA5MjUzLCA0Mjc1NywgNDM0MzYsIDc0NjIsIDAsIDAsIDAsIDAsIDExOTU4NywgNjQ0MTUsIDAsIDAsIAotICAgIDUzOTgsIDAsIDEyNzM4NiwgMCwgMCwgMCwgMTE5MDE1LCAwLCAwLCA5NDc2LCAwLCAwLCAxMjc2MywgMCwgMzYyOSwgMCwgCi0gICAgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIAotICAgIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgCi0gICAgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgCi0gICAgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgOTIyOTAsIDAsIDEyMjc2LCAwLCAKLSAgICA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgMCwgMTA0NjcsIDAsIDI0NDMsIDEwOTE4LCA3ODIxNywgMTE5ODI1LCAKLSAgICAxMDAxLCA5MjQxLCAxOTI3LCAwLCAwLCA3Mzk4NywgMTI3ODg1LCAwLCAwLCAxMTg4MjgsIDEyMDI3MSwgNjU2NzgsIAotICAgIDEyODY3LCAwLCA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIDY1ODU3LCAwLCAxMjg2NzQsIAotICAgIDEzMjA0LCA0Mzg3LCA4NTcsIDAsIDY1MzY5LCAwLCA5MjMzNiwgNDMxMjUsIDEyMDU5MiwgMCwgMCwgMCwgMCwgNTEzNiwgCi0gICAgMTk2OCwgMCwgMTk1MDIzLCAxMzM3LCA2NDk2NywgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAwLCAKLSAgICA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgCi0gICAgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgCi0gICAgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgCi0gICAgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCAKLSAgICA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgMCwgMTI3Mjc1LCAKLSAgICA3Mzk4MywgMjkxNSwgMTE1MDIsIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzgzMjAsIDAsIDY5NzUsIDAsIDU0MTUsIAotICAgIDEyMTc2LCAwLCA3NDE5MywgMzQ2MiwgNjUyMTUsIDQyNjI5LCA3ODY5MSwgNzM3ODQsIDAsIDAsIDk3NTksIDAsIDc4MzI0LCAKLSAgICAxMjcyNTQsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgMTE4OTU2LCAwLCA0MDUxLCAKLSAgICAxMDQ2MCwgNDMzNjQsIDExODkxNywgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgCi0gICAgNDMxNTIsIDQyNDg5LCA0MjExMiwgMCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIAotICAgIDY0OTA3LCA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDAsIAotICAgIDAsIDQzMjM2LCAzMzgyLCA0MjQ0OSwgNjQ5OCwgMTY1OCwgMTE5MzYsIDc4MjMyLCAwLCAxMTI2OSwgMTAxNTEsIDczNzU5LCAKLSAgICA0MzEwMCwgNzQ0NDksIDY1NTA4LCAwLCAwLCAwLCA4OTM1LCA5MTc5ODUsIDAsIDAsIDAsIDYxNiwgNzQ3NTMsIDY1MTc4LCAKLSAgICA0Njg0LCA3ODcwMSwgMTE5NjUzLCAwLCAwLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAxMDg3MCwgODU1NywgCi0gICAgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIDYwMzUsIDAsIAotICAgIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgMCwgOTE3OTg3LCAwLCAxMTg5NjYsIDc0MTQ0LCA0MDk5NywgMCwgMTAzOTIsIAotICAgIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCAwLCA5ODAwLCA4OTc5LCAwLCAxMTkxMzEsIDQxMDAwLCAwLCAxMTkyMzksIAotICAgIDY0ODcsIDMzODYsIDAsIDEwMzQ0LCAwLCA2NTI5OSwgNTM5NCwgNDMyNDYsIDc4MjQzLCAxMDIyMCwgNjY1MDUsIDQxMjAwLCAKLSAgICAxMjg1ODMsIDQ0MjUsIDAsIDAsIDAsIDQzMDc0LCA3Mzc5OSwgMCwgNzgxNDcsIDAsIDEyMTczLCA3ODU0NSwgMCwgMCwgCi0gICAgNjUzMzgsIDAsIDAsIDExOTU4MiwgNDQ3NCwgMCwgNDMwOTMsIDAsIDE1ODcsIDAsIDEyNzM3MiwgNjQ0NzUsIDEyODA5OCwgCi0gICAgMTM2OSwgMCwgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIAotICAgIDQ1MTQsIDY2NDM0LCAwLCA4MTk0LCA2NTQ2MiwgMTA2MjYsIDEwOTY1LCAwLCA4ODkzLCAwLCAxMjU0MiwgMCwgNjUzNDEsIAotICAgIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAwLCA2NTI3OSwgCi0gICAgMTI3MTAyLCA2ODIwNywgMTI3MTAwLCA2NTYwNSwgNjA0MCwgMTI3MDk3LCAxMDA3MSwgMCwgOTMzNiwgMTI4ODI0LCAwLCAKLSAgICA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDAsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMCwgMCwgNzc0NiwgMTQ5MiwgNzg1NTEsIAotICAgIDEwODg0LCA3Nzk4MiwgMCwgNTEyNywgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCAKLSAgICA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDAsIDAsIAotICAgIDYzMjMsIDE5NDY4NCwgODIyNCwgMCwgODkzOCwgNjA0MywgMTI3MzgsIDAsIDAsIDUzMjEsIDAsIDE5NDc5OCwgMCwgMjU4OSwgCi0gICAgNzQzMzIsIDE2ODksIDc4MDIsIDQ2ODMsIDc0MzE4LCA0MjcwNCwgMTIwMjk2LCAxMTkwNSwgMCwgMCwgMTI4NTE2LCAKLSAgICAxMjgxNjMsIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgMCwgMTUwMywgMCwgMCwgMCwgNTczMSwgCi0gICAgMTM4MSwgMjM4NywgMCwgMCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgCi0gICAgOTc2NiwgMCwgNTcyOSwgOTE3ODMzLCA3NDQxMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgMCwgCi0gICAgMzUyNiwgNjI5OCwgMCwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDAsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDc3ODk1LCAKKyAgICA1Mzk4LCAwLCAxMjczODYsIDkzOTUzLCAwLCAwLCAxMTkwMTUsIDAsIDAsIDk0NzYsIDAsIDk4Mzc2OCwgMTI3NjMsIAorICAgIDEyNjYwMywgMzYyOSwgMCwgMTMwMDUsIDAsIDM2MjgsIDAsIDAsIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgCisgICAgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgMCwgNjQ2NjUsIDQzMDg2LCA5MTE0LCAwLCA0MjU4MywgCisgICAgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIAorICAgIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgMCwgNjAxOCwgCisgICAgOTIyOTAsIDAsIDEyMjc2LCAwLCA2ODM3MiwgMCwgOTIyNTksIDExOTI0NCwgMCwgOTgzMjI0LCAxMDQ2NywgMCwgMjQ0MywgCisgICAgMTA5MTgsIDc4MjE3LCAxMTk4MjUsIDEwMDEsIDkyNDEsIDE5MjcsIDAsIDAsIDczOTg3LCAxMjc4ODUsIDAsIDAsIAorICAgIDExODgyOCwgMTIwMjcxLCA2NTY3OCwgMTI4NjcsIDAsIDgyNjAsIDc3OTQ1LCA3NTE5LCAxMTUwNSwgMTIyNzQsIDg5MDQsIAorICAgIDUxOCwgNjU4NTcsIDAsIDEyODY3NCwgMTMyMDQsIDQzODcsIDg1NywgMCwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCisgICAgMTIwNTkyLCAwLCAwLCAwLCAwLCA1MTM2LCAxOTY4LCA5ODMwNDEsIDEyNjYyNywgMTMzNywgNjQ5NjcsIDE2MjksIDAsIAorICAgIDc5NiwgNjY1MDYsIDAsIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDAsIDc0NDAzLCA2MTIwLCA0NzgsIAorICAgIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDEyODUwNywgNDI3NiwgMTIwNiwgMzYxOSwgCisgICAgNDE2MzgsIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgMCwgNDkwLCAxMDcxNSwgNzU3OCwgNjgzODQsIDAsIAorICAgIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDc0MzE0LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIDc4NTIyLCA3ODQsIAorICAgIDQyMzk3LCAzMzQsIDAsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDc3OTg3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDAsIDc3OCwgCisgICAgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDEyNzI3NSwgNzM5ODMsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc4MzIwLCAwLCA2OTc1LCAwLCA1NDE1LCAxMjE3NiwgMCwgNzQxOTMsIAorICAgIDM0NjIsIDY1MjE1LCA0MjYyOSwgNzg2OTEsIDczNzg0LCAwLCAwLCA5NzU5LCAwLCA3MDA1NywgMTI3MjU0LCA4MTE0LCAKKyAgICA3ODY5OCwgNzg2OTcsIDc4Njk2LCA3ODY5NSwgODcxMCwgNDI0OTUsIDExODk1NiwgMCwgNDA1MSwgMTA0NjAsIDQzMzY0LCAKKyAgICAxMTg5MTcsIDEzNTYsIDEyMTYxLCA0MjcxMywgMTI4ODU3LCAxMjcyNjgsIDE2MTksIDk3MDMsIDQzMTUyLCA0MjQ4OSwgCisgICAgNDIxMTIsIDEyNzk3OCwgMTg3NSwgMTA4MDgsIDQyMTA5LCAxMjAyODQsIDQxODYwLCA2NDg2MiwgMTMzMDUsIDY0OTA3LCAKKyAgICA1Mjg5LCAxMzE0NCwgMTI4NjU4LCAwLCA1NTc1LCA5Njc1LCAwLCA1OTQwLCAyMjYsIDI2NDksIDYzMzYsIDk4MzI2OSwgCisgICAgMTE5ODMwLCA0MzIzNiwgMzM4MiwgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMCwgMTEyNjksIDEwMTUxLCAKKyAgICA3Mzc1OSwgNDMxMDAsIDY5ODg4LCA2NTUwOCwgMCwgMCwgMCwgODkzNSwgOTE3OTg1LCAwLCAwLCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMCwgMTI2NTUxLCAwLCA2MDQ4LCA3NDQ2MCwgNDIxMTAsIDczOTY1LCAKKyAgICAxMDg3MCwgODU1NywgMTEwNTQsIDY4NjY0LCAxMTkwNDksIDk2ODEsIDQ0NzUsIDAsIDQxMTQyLCAyMTAwLCAwLCAxMjA3MzEsIAorICAgIDYwMzUsIDAsIDc2NTEsIDEwMjk2LCA2NDQ0MywgMCwgOTgzMjg3LCA5MTc5ODcsIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCAKKyAgICAwLCAxMDM5MiwgMTAzMjgsIDQwOTk4LCA0MzQ2MiwgNzQ0ODgsIDAsIDk4MDAsIDg5NzksIDAsIDEzMzA3LCA0MTAwMCwgMCwgCisgICAgMTE5MjM5LCA2NDg3LCAzMzg2LCAwLCAxMDM0NCwgMCwgNjUyOTksIDUzOTQsIDQzMjQ2LCA3ODI0MywgMTAyMjAsIDY2NTA1LCAKKyAgICA0MTIwMCwgMTI4NTgzLCA0NDI1LCAwLCAwLCAwLCA0MzA3NCwgNzM3OTksIDk4MzIwMCwgNzgxNDcsIDAsIDEyMTczLCAKKyAgICA3ODU0NSwgMCwgMTI3MDExLCA2NTMzOCwgMCwgMCwgMTE5NTgyLCA0NDc0LCAwLCA0MzA5MywgMTI4NjQ0LCAxNTg3LCAwLCAKKyAgICAxMjczNzIsIDY0NDc1LCAxMjgwOTgsIDEzNjksIDk4MzY2MywgOTk1OSwgNzkyNywgMCwgNDU2MCwgMCwgMCwgOTIyNzcsIDAsIAorICAgIDY0OTQ4LCA0NDMwLCA3NDM0NywgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgCisgICAgMCwgODg5MywgOTgzMjkzLCAxMjU0MiwgMCwgNjUzNDEsIDAsIDY1ODI5LCA3OTI1LCAxMTk4MjIsIDEwNDc1LCAwLCAwLCAKKyAgICAxMzUyLCAxMTA2OSwgNzcwNywgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAxMjcxMDIsIDY4MjA3LCAxMjcxMDAsIDcwOTksIAorICAgIDYwNDAsIDEyNzA5NywgMTAwNzEsIDAsIDkzMzYsIDQzNzUwLCAwLCA4ODk5LCA3Nzk4LCA2NDQ3NCwgNjQyNTksIDY5ODczLCAKKyAgICA2NTE4OCwgNzgyMCwgNDMwMTgsIDEyNzA4MiwgMCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3Nzk4MiwgMCwgNTEyNywgCisgICAgMTEyODUsIDQyNTAxLCA1NDk1LCA0MjczLCA0MzA5NSwgNDE0MjYsIDEwODQ5LCA1NzMwLCAyOTk5LCA2MzQyLCA2ODYzNiwgCisgICAgNzQzMDQsIDM3MSwgNjQzNzMsIDYwMjMsIDE2OSwgNTQ5NywgMTE3MDgsIDAsIDAsIDYzMjMsIDE5NDY4NCwgODIyNCwgMCwgCisgICAgODkzOCwgNjA0MywgMTI3MzgsIDAsIDk4MzA3NiwgNTMyMSwgMCwgMTk0Nzk4LCAwLCAyNTg5LCA3NDMzMiwgMTY4OSwgCisgICAgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCAxMjAyOTYsIDExOTA1LCAwLCAwLCAxMjg1MTYsIDEyODE2MywgNzQ1MTMsIAorICAgIDYwNDksIDAsIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAwLCAxNTAzLCAwLCAwLCA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgCisgICAgMCwgMCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgCisgICAgNTcyOSwgOTE3ODMzLCA3NDQxMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIDkzNjEsIDEyNzA5MSwgMjg4NywgMCwgMzUyNiwgCisgICAgNjI5OCwgMCwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIDAsIDg1NzIsIDYwMjEsIDc3ODk2LCAxMjgyODgsIDc3ODk1LCAKICAgICA0MzE1NSwgMCwgMTE5ODQ5LCAzMTQ2LCAxMDk1OSwgOTQ4MywgMCwgNzc4OTMsIDEwOTgxLCAxNjYsIDkxNzg0MSwgODYzNSwgCi0gICAgMCwgMTA2MjMsIDQwOCwgMTE5MDU4LCAxMjc1MDcsIDEzMjk4LCAwLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDAsIDc2MDcsIAotICAgIDEwNjM5LCA2NjcxMywgMCwgMCwgNDE2NDMsIDc0MTM0LCAwLCA4NzEzLCA0MTY0MCwgMTAyMjEsIDQxNjQ1LCA2NjcxMiwgCi0gICAgNjY0NSwgNjQ2LCA2NjcyNiwgNjY3MTEsIDQyMTI5LCAwLCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNzQ1NzIsIDAsIDQyMTM2LCAwLCAwLCAwLCAwLCAzMjQ3LCAxMTk4NTQsIAotICAgIDY1MDE3LCAwLCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCA0MTU2NywgMCwgMCwgMCwgMTk0NjI0LCAwLCAKLSAgICAwLCAwLCA4Mjg1LCAwLCA0NTA5LCAwLCA2NjQ3MSwgMTIyMTYsIDAsIDQwOTg4LCA5MjU5MiwgMCwgNDE3MjcsIDAsIAotICAgIDQyODQ4LCAyMzk2LCA5MTc3NjYsIDAsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCAwLCA0MjQ1NywgCi0gICAgMTE5MDA4LCAwLCA5OTYsIDY4MTIzLCA5MTc1NzEsIDQyNDksIDAsIDkxNzU5NCwgMTE3MDcsIDgyMjIsIDAsIDc5MzksIAotICAgIDkyNDU0LCA5MjQ2MCwgMTI3ODAxLCA5MTc1OTIsIDEyODM1OSwgODUzNCwgMTI3MTU0LCA0MDk4MywgMCwgMCwgMCwgNzIwMSwgCi0gICAgMTI1NjEsIDAsIDQyMzcxLCAxMjU1OCwgMCwgOTE3NTQ5LCAxMDA1MiwgNDA5ODIsIDAsIDAsIDE0ODgsIDAsIDAsIDAsIAotICAgIDkxNzU1OSwgMCwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAwLCAwLCAwLCAxMjc4NzIsIDAsIDU4MDMsIDc3OTcsIDYwNzAsIAotICAgIDEwMDA2LCAwLCAyOTIyLCA2MDgyLCAwLCA2NTAwOSwgMCwgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIAotICAgIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDQzMDg1LCA2MDU3LCA1MDgsIDEyODU4NSwgMTI4MDE1LCAxMjAyNjUsIDAsIDkyNDA1LCAwLCAwLCA2MzgsIDYwODMsIAotICAgIDExOTA3MiwgMCwgMCwgMjMwNSwgNzgzNDgsIDAsIDAsIDYwNTYsIDY2NTksIDAsIDAsIDYwODUsIDAsIDAsIDM5MTUsIAotICAgIDQxNjM0LCAwLCA0MTYzOSwgNjM5MTIsIDExOTQxLCAwLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDkyNjkwLCAzMjQ5LCAKLSAgICAxNzY4LCAwLCAxMjMyOCwgNTAxLCAxMjcwNzQsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgMTE5MzUwLCAKLSAgICA2NTA1LCA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMjA4MTAsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCA3Mzc2NCwgMCwgCi0gICAgOTIzNzYsIDEyNzQ1LCA5Njc4LCAwLCAxMjA1ODcsIDk4NjksIDEyODgxNSwgMTc3MSwgMCwgODkzNiwgMCwgMCwgNDIwOCwgCi0gICAgNzgzNDEsIDExOTExNSwgNzgzNDIsIDAsIDAsIDc0MTAxLCAwLCAxMTc2MiwgMCwgOTI0MjIsIDc3OTk3LCAxMjg3ODgsIAotICAgIDY2NDc1LCAwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAwLCA1MDY5LCA3Mzg2MiwgNTAyOCwgOTg5NywgMCwgNzM3MzksIAotICAgIDUwMjYsIDAsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgNDE5MDEsIDc0NzkwLCA3ODEzOCwgCi0gICAgMTE5MzYxLCAwLCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCA0MTA3MCwgNzc5MDMsIDAsIDM0NDAsIAotICAgIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCAwLCAxMDYwMCwgOTE3ODY3LCA2MjAsIDQxMDAxLCAKLSAgICA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIDEyODI2OSwgMCwgMCwgCi0gICAgMTE5MzI4LCAwLCA2NTU1NywgMCwgNzQ1NDEsIDAsIDExNTk5LCAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIAotICAgIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgCi0gICAgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCA3ODcxNywgNDE1NDAsIDc4MTUsIDExNjE2LCA2OTc5LCAxMjA4MCwgNzcyMSwgCi0gICAgMTE2MDQsIDc4NjksIDE1OTIsIDAsIDQyMTUyLCA3ODQ5OCwgNDEwNDgsIDAsIDgyOSwgMCwgOTI0MDYsIDE5OTUwLCAwLCAKLSAgICAxMjgyMTcsIDY2MTYsIDAsIDExODg3NSwgMTA5NTMsIDM5MSwgMCwgNjk3ODUsIDQ4MiwgNDIyOTYsIDExNTg4LCAwLCAKLSAgICA0MzYwNiwgMCwgNjgzOTcsIDY2MzcwLCA3NDUwNiwgNDIzMzUsIDAsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIAotICAgIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAKLSAgICAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgCi0gICAgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIAotICAgIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAKLSAgICAwLCA0MTY2MiwgMCwgMCwgMCwgMCwgMCwgNDU3OCwgNjQ1MTMsIDQxNjY0LCAwLCA0MjU3OCwgMTI4Nzk0LCA0MTY2MSwgCi0gICAgNzg3MTUsIDQzMjY3LCA5MzU2LCAwLCAwLCAwLCAxMjg2LCAxMDE2NiwgMCwgMCwgNjQ3MDcsIDAsIDQyNDc2LCA3NzMwLCAwLCAKLSAgICAxMjg1MjIsIDQyNDgzLCAwLCAwLCA0MjMyNCwgNDIyOTEsIDEwMDIwLCA0MzM1OSwgMCwgNjY0MSwgNTI1LCA0MTYyNywgCi0gICAgOTE3OTIzLCA4NzYzLCAxMjgzMDQsIDQxNjI4LCA1MzMsIDExOTMxLCA2NTIyNSwgODMyMSwgNDI1MDQsIDQyNTgxLCAwLCAKLSAgICA2OTE1LCA0MjMxMCwgNDM3NywgODU1OSwgMCwgMTIwMjM0LCAwLCAxMzE5MywgNjQzNTAsIDExNjY2LCA4Njc5LCA0MTkyNCwgCi0gICAgMTU3NiwgNzczNSwgOTIzOTgsIDAsIDczODQwLCAwLCAxMTM3NCwgNzgwNDMsIDEwODg5LCA0MzQ2MSwgNzc1NywgNDI0NjIsIAotICAgIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgCi0gICAgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIAotICAgIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAKLSAgICAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIAotICAgIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgOTE3NTYzLCA0MTg4MSwgMCwgCi0gICAgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIDQyOTE5LCA5Mzk4LCA4NTI2LCAKLSAgICA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIDE2MDMsIDAsIDExOTAwMywgMCwgCi0gICAgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCA3ODEwMSwgMTE2MDAsIDc3OTYxLCAKLSAgICAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAKLSAgICAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIAotICAgIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgCi0gICAgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIDIwOTMsIDc3OTgzLCAxMDMwMiwgCi0gICAgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCAKLSAgICA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNzc5NzksIDM0MDUsIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIAotICAgIDkyNDQ3LCAwLCA5NTQ5LCAwLCAxMDU0OSwgNTUyODIsIDk2NjEsIDQzNjgyLCAwLCA3NzkxMCwgMTIwMDI2LCA3ODcwOCwgMCwgCi0gICAgNzc5MTEsIDAsIDQxOTkxLCAwLCAwLCA3NjMwLCA5ODQ2LCA3Njg0LCAxMDM1MCwgMCwgMTE3NCwgNzc5ODEsIDQyNzMzLCAKLSAgICA3Nzk3OCwgNzc5ODAsIDY2NDg1LCA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNjU2NjcsIDEyNzAzNywgMTIzMzAsIAotICAgIDEyODI3MiwgMCwgNDI0MTcsIDQyMzgzLCAwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDc3OTg0LCA3NDQ0MywgMCwgCi0gICAgMTAyMDksIDgzMTMsIDQxOTUsIDc0NDM1LCAxMzE2LCA2NjY5MCwgMTIwMDMyLCA2MzMyLCA2NDg5NCwgMCwgNjU4NzEsIAotICAgIDc4MDYwLCAxNzM2LCAwLCAzOTAxLCAxMjIyOCwgMTIwMTUxLCA2NTIwMCwgMzM4MywgMTA0NDYsIDc4ODQxLCA2OTMsIAotICAgIDkxMzAsIDMxNCwgNjQxNDksIDQyNDIwLCAxMTk0OSwgMCwgMTIwMTUyLCAxMTAyNiwgMCwgNTMzMiwgNjk0MCwgNjQxNTQsIAotICAgIDEyNjM1LCAxMjcwMDcsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCAxMjA3NjMsIDc4ODQwLCAwLCAxMjgyNCwgMCwgCi0gICAgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIAotICAgIDAsIDAsIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCAwLCAKLSAgICA3NDA5NSwgMTI3OTgxLCA0MTg0OCwgMjU2NywgNjYwMDYsIDAsIDQwNDQsIDkyNjQ2LCAwLCAxMjIzMywgMCwgMTAyMywgCi0gICAgNDc0LCAwLCAxMTk4MTgsIDAsIDAsIDQyNDg3LCA2NTU1NiwgMCwgMCwgNDIyOTUsIDAsIDAsIDAsIDkyNTE4LCA5ODM1LCAKLSAgICA2NjQ5OSwgMCwgNTQxNywgMTIyNzUsIDEwODk1LCAwLCAyNzQsIDAsIDE4NTgsIDAsIDAsIDU1MjUxLCAxMDExOCwgMzEzMywgCi0gICAgMTI4MDA4LCA3Mzc5NSwgMCwgOTYxMCwgODA2OCwgODE5NywgMCwgNjk5LCAwLCA0MTY2NSwgNTg2OCwgMCwgOTI2OTUsIAotICAgIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIDY1NTgzLCA2NTgwMiwgMCwgCi0gICAgNjQ1OTcsIDQzNDQ0LCAxMTkxODQsIDkyMTk3LCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAxOTM3LCAwLCAwLCA0MTgzNSwgCi0gICAgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCAwLCAwLCAxMTAxNywgMCwgMCwgMjkzLCA3Nzk2NiwgOTIxNjksIDY0NzkxLCAKLSAgICA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgMCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgCi0gICAgMTk0MSwgMzkwMCwgMCwgMTcxMywgNzc5NjksIDAsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIAotICAgIDY0MTA1LCAxMjgwODAsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAwLCA2NDEwMywgOTY5LCAwLCA5MzUyLCAKLSAgICAwLCA2MTY1LCA2NDEwMCwgMCwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMCwgODkxNCwgMCwgMCwgMzE4MywgCi0gICAgMTQzNSwgNjQ4NzYsIDI5NjksIDYwNDYsIDY0NDQxLCA2MjA4LCA2Nzg0OSwgNTc0NiwgNzM3NDksIDAsIDY0NDE2LCAKLSAgICA0MjQyMiwgMCwgMCwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIAotICAgIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCAwLCAwLCA2NTg0OCwgMCwgMCwgMCwgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAKLSAgICAwLCAxMDkyNSwgMCwgMCwgMCwgMCwgNDIzMDksIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDAsIDEwMzA1LCA0MjQ2MSwgMCwgCi0gICAgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIAotICAgIDkxNzg1NywgNzc5NCwgMCwgNDI0MjksIDYzNzcsIDQyMzE2LCAxMTkwMjYsIDM2NjksIDM5NjgsIDQyNDY4LCAwLCA2OTY1OCwgCi0gICAgMCwgNjU0MDIsIDExOTU4MSwgMCwgMCwgNjQ5MzMsIDAsIDQxOTYwLCA2Njk5LCAwLCAwLCAxMjgzNTQsIDY4MjMsIDQyMzkxLCAKLSAgICAxNTg4LCA2NTQwMCwgODQwOSwgNzgyMjMsIDE5OTY3LCA2NTM5OCwgNzg3LCAwLCA5MTc5MzksIDEyNzc0NCwgNjExNSwgCi0gICAgMjA3OCwgNDE2NTQsIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgCi0gICAgNDE2NTcsIDEwNzc4LCAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgCi0gICAgMCwgMCwgNDE1NTQsIDAsIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIAotICAgIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgCi0gICAgMTEwMjksIDY2NjUxLCAwLCAwLCAxMTg5MzAsIDY0NTI3LCAwLCA3ODc3LCA3MzgwMywgMCwgMTI3MzQ4LCAxMjAwOTYsIAotICAgIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIDEyMTkwLCAxMjMxOSwgNzg2MzAsIAotICAgIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMCwgNjU0MjQsIDEyNjA3LCAwLCA5NzM0LCA2NTQyNSwgMCwgMCwgMTI3MzU3LCAKLSAgICA3ODgzNSwgOTI0MTAsIDEwMTEyLCAxMDgyNywgMCwgOTg2NiwgNzQ1MjcsIDY2Njc1LCAwLCA4NjI1LCA2NDM0NiwgMTEyOTAsIAotICAgIDEwNDc3LCAwLCA4NjM2LCAwLCA4MzE1LCA2NTQ0NCwgMCwgMCwgNzQ1OTUsIDYxNTIsIDAsIDAsIDY2MjksIDEyODI1MSwgCisgICAgOTgzNjA2LCAxMDYyMywgNDA4LCAxMTkwNTgsIDEyNzUwNywgMTMyOTgsIDAsIDc0MjYsIDQxNjQxLCAxMjcxNywgMCwgCisgICAgNzYwNywgMTA2MzksIDQzMzk2LCAwLCAwLCA0MTY0MywgNzQxMzQsIDk4MzA1NCwgODcxMywgNDE2NDAsIDEwMjIxLCAKKyAgICA0MTY0NSwgNjY3MTIsIDY2NDUsIDY0NiwgNjY3MjYsIDY2NzExLCA0MjEyOSwgOTM5OTQsIDc3OTAxLCAzNDcyLCA4Njk3LCAKKyAgICAwLCAwLCA5ODM4MDYsIDAsIDAsIDAsIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDc0NTcyLCAwLCA0MjEzNiwgMCwgMCwgCisgICAgMCwgMCwgMzI0NywgMTE5ODU0LCA2NTAxNywgOTgzOTQ0LCA2ODQyOCwgNjY2NjgsIDAsIDAsIDEwOTgzLCAwLCAwLCAwLCAKKyAgICA0MTU2NywgMCwgMCwgMCwgMTk0NjI0LCAxMTk4NTMsIDAsIDAsIDgyODUsIDAsIDQ1MDksIDAsIDY2NDcxLCAxMjIxNiwgMCwgCisgICAgNDA5ODgsIDkyNTkyLCA3NDgwOSwgNDE3MjcsIDAsIDQyODQ4LCAyMzk2LCA5MTc3NjYsIDAsIDc0MDE4LCA5MTc1MzgsIAorICAgIDY0OTQwLCA3MDI3LCAzODg2LCAwLCA0MjQ1NywgMTE5MDA4LCAwLCA5OTYsIDY4MTIzLCA5NDA1OCwgNDI0OSwgMCwgCisgICAgOTE3NTk0LCAxMTcwNywgODIyMiwgMCwgNzkzOSwgOTI0NTQsIDkyNDYwLCAxMjc4MDEsIDkxNzU5MiwgMTI4MzU5LCA4NTM0LCAKKyAgICAxMjcxNTQsIDQwOTgzLCAwLCA5ODMyMzQsIDAsIDcyMDEsIDEyNTYxLCAwLCA0MjM3MSwgMTI1NTgsIDE1NDAsIDkxNzU0OSwgCisgICAgMTAwNTIsIDQwOTgyLCAwLCAwLCAxNDg4LCAwLCAwLCAwLCA5MTc1NTksIDAsIDAsIDE1NjMsIDEyODAzNCwgOTYxOSwgCisgICAgOTgzOTMxLCAwLCAwLCAxMjc4NzIsIDcxMzYzLCA1ODAzLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMCwgMjkyMiwgNjA4MiwgMCwgCisgICAgNjUwMDksIDk4MzkzMywgMTI1NjcsIDEyODcwMywgMCwgNDE0MTIsIDAsIDAsIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCAKKyAgICA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDAsIDAsIDAsIDAsIDAsIDQzMDg1LCA2MDU3LCA1MDgsIAorICAgIDkzOTY4LCAxMjgwMTUsIDY3OTY4LCAwLCA5MjQwNSwgMCwgMCwgNjM4LCA2MDgzLCAxMTkwNzIsIDAsIDAsIDIzMDUsIAorICAgIDc4MzQ4LCA2ODA5NiwgMCwgNjA1NiwgNjY1OSwgNjc5NjksIDAsIDYwODUsIDAsIDAsIDM5MTUsIDQxNjM0LCAwLCA0MTYzOSwgCisgICAgNjM5MTIsIDExOTQxLCAwLCA0MDI4LCAxNzg3LCA0MjE4MCwgNDMwOTYsIDQzNzUzLCAzMjQ5LCAxNzY4LCA5Mzk4MiwgCisgICAgMTIzMjgsIDUwMSwgOTM5ODUsIDEwNjAxLCAwLCA1ODMsIDAsIDQxOTc3LCAwLCA2NjAwNCwgMTE5MzUwLCA2NTA1LCAKKyAgICA3NDAxMCwgMCwgMTMwNjQsIDU1MjY3LCAxMjA4MTAsIDY1MDAsIDU1MjYsIDY1MDQ5LCAwLCA3Mzc2NCwgMCwgOTIzNzYsIAorICAgIDEyNzQ1LCA5Njc4LCAwLCAxMjA1ODcsIDk4NjksIDEyODgxNSwgMTc3MSwgMCwgODkzNiwgMCwgMCwgNDIwOCwgNzgzNDEsIAorICAgIDc4NTY3LCA3ODM0MiwgMCwgOTgzNDQ4LCA3NDEwMSwgMCwgMTE3NjIsIDAsIDkyNDIyLCA3Nzk5NywgNjgwMTAsIDY2NDc1LCAKKyAgICAwLCA1MDI3LCA3ODE3MiwgMTI4ODc4LCAwLCA1MDY5LCA3Mzg2MiwgNTAyOCwgOTg5NywgMCwgNzM3MzksIDUwMjYsIAorICAgIDk4MzI0NywgNjg2MzksIDYzMzEsIDEwMDc5LCA4OTMxLCAwLCAxNDE1LCA4ODY2LCA0MTkwMSwgNzQ3OTAsIDc4MTM4LCAKKyAgICAxMTkzNjEsIDk4MzU2NCwgNDMxMDYsIDUwMjksIDY1MzA5LCAxNTgwLCAzNTk4LCA2ODQyNCwgNDEwNzAsIDc3OTAzLCAwLCAKKyAgICAzNDQwLCA3ODIxNSwgMTU2MiwgMTI4NjU2LCAxMjcxNzUsIDExOTM1OCwgMTcxNiwgOTgzNjcwLCAxMDYwMCwgOTE3ODY3LCAKKyAgICA2MjAsIDQxMDAxLCA2MDI4LCAwLCA0Mjg5MiwgMCwgNzQ4MjIsIDUwMjQsIDEyMDgyOSwgNDEwMDMsIDAsIDUwMjUsIAorICAgIDY5ODkyLCA5ODMyMDcsIDAsIDExODg4NSwgMCwgNjU1NTcsIDAsIDc0NTQxLCA5ODM1ODcsIDExNTk5LCAxMjgyMDksIAorICAgIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDc0MTk1LCAxMTU2OSwgCisgICAgNjUyNzUsIDg5MDYsIDEyNzA5NiwgNTc1NSwgMjYzNiwgMCwgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgCisgICAgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgCisgICAgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgMCwgMTI2NDgyLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIAorICAgIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgNDM2MDYsIDAsIDY4Mzk3LCA2NjM3MCwgNzQ1MDYsIDQyMzM1LCAKKyAgICA5ODMxODgsIDAsIDAsIDc1MzgsIDUzMTUsIDEyMDY0NCwgNDI0OTEsIDAsIDQyMDYxLCAxMjgwODgsIDQ1NzYsIDAsIAorICAgIDY4NDE3LCA0MzgwOSwgNDI3NywgMCwgNDAzOSwgNjQ0NzIsIDQyMzM4LCAzNjgsIDQyMDU4LCAzOTYwLCAxMTA0MywgCisgICAgMTEzMzcsIDc4MjA5LCA5MTc4MjAsIDYzOTg5LCAzOTU4LCAxMjEzMiwgMTg0OSwgMCwgOTkyMSwgNDI0NTEsIDQyNTMsIAorICAgIDQxMTQ3LCA0MjA2NCwgMTE5NTksIDQyNDA0LCA0MTE2MCwgMCwgMzYxOCwgNzgzMzgsIDAsIDQzMzAwLCA1MTU2LCA5MjYyOSwgCisgICAgMCwgOTI5LCA2ODI3LCA0MjAzNSwgNDI0MzcsIDE1NTUsIDAsIDg2OTEsIDY2NDM1LCAyMjE1LCA0MTY2MiwgOTQwMTAsIDAsIAorICAgIDAsIDAsIDkzOTUyLCA0NTc4LCA2NDUxMywgNDE2NjQsIDk4MzcyNSwgNDI1NzgsIDEyODc5NCwgNDE2NjEsIDc4NzE1LCAKKyAgICA0MzI2NywgOTM1NiwgMCwgMCwgMCwgMTI4NiwgMTAxNjYsIDAsIDAsIDY0NzA3LCA5ODMxMjcsIDQyNDc2LCA3NzMwLCAKKyAgICA5ODM4NTAsIDEyODUyMiwgNDI0ODMsIDAsIDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIDQzMzU5LCAwLCA2NjQxLCA1MjUsIAorICAgIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgCisgICAgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAwLCA3NDM2MCwgMCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgCisgICAgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgOTgzMDkyLCAxMTM3NCwgNzgwNDMsIDEwODg5LCAKKyAgICA0MzQ2MSwgNzc1NywgNDI0NjIsIDEyMDIyNiwgMTAwMjksIDY2NDkzLCAyNzE4LCA0MTY4LCA3Mzg0MiwgMTMzMDgsIAorICAgIDEyMDExMiwgMCwgMTE3OSwgNDQ0MCwgMCwgNzc5NDgsIDM2MywgMTEwMTUsIDc3OTQ3LCA3Nzk0NCwgNjQyOTYsIDEyNzA5MCwgCisgICAgNjY2OTIsIDEyMDgyNiwgMCwgNjY0OTIsIDY1OTMsIDY0NjI1LCA0MTk2MywgOTIxNzcsIDExOTMyOSwgMCwgMTAwMTMsIAorICAgIDY0NDM0LCA5MjUyMCwgMTI3MDk1LCA5NDkyLCAxMTc4MiwgNjQzODIsIDEyODMzLCA3NzgzMCwgMCwgMTI5NywgNDE2MzAsIAorICAgIDYzMCwgMTI3MDk0LCAwLCAxMjA3NzQsIDkyNDY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAwLCAxMjg2NjQsIDMxMywgCisgICAgOTE3NTYzLCA0MTg4MSwgMCwgNDIzMTEsIDc0NDUsIDAsIDU3NTAsIDEwNzU5LCA5NDE5LCA1NTIyMiwgOTQwNSwgMTEyNjgsIAorICAgIDQyOTE5LCA5Mzk4LCA4NTI2LCA5Mzk5LCA5NDIyLCAwLCA2NjQ5NSwgMCwgMCwgMTI3MjM5LCA0MTcxOCwgMTA3MDcsIAorICAgIDE2MDMsIDAsIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgMCwgMTA1NDYsIDc0MjEwLCAKKyAgICA3ODEwMSwgMTE2MDAsIDc3OTYxLCAyNzk3LCA3MzgyMSwgNDI0MjcsIDMwNiwgNzE0LCAzMDU4LCA0MjM4MSwgNzc5NjIsIAorICAgIDEyNzA4MCwgMTIzNTEsIDQyMzk1LCAwLCAxMTYwNywgMCwgNDIyODIsIDc3OTcxLCA3Nzk2NywgOTE1NywgNzM3NjUsIAorICAgIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgCisgICAgODI0NCwgMzYyLCA5MjQzOSwgMCwgODAzNywgNDM3NzcsIDExNTM1LCAwLCA3NDg0NSwgNTE4NSwgNzE2NSwgNTUyMSwgCisgICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI4MTEyLCAxMDEwNCwgMTAyNywgNTE4MSwgMCwgMCwgMTA1MjMsIDE0NDYsIAorICAgIDQyMzIwLCA0MTY0NiwgOTkxLCA1MTg5LCA0MjQ3MiwgNDE2NDcsIDEyMDEwNSwgMTcyMiwgNTU4MSwgNDI4OTgsIDM0MDUsIAorICAgIDAsIDE5NDY0NCwgNTUyMywgMCwgNDI2MjAsIDkyNDQ3LCA5ODM4MTAsIDk1NDksIDAsIDEwNTQ5LCA1NTI4MiwgOTY2MSwgCisgICAgNDM2ODIsIDAsIDc3OTEwLCAxMjAwMjYsIDc4NzA4LCAwLCA3NzkxMSwgMCwgNDE5OTEsIDk4Mzg4NCwgMCwgNzYzMCwgCisgICAgOTg0NiwgNzY4NCwgMTAzNTAsIDAsIDExNzQsIDc3OTgxLCA0MjczMywgNzc5NzgsIDc3OTgwLCA2NjQ4NSwgNzc5NzcsIAorICAgIDQyMjc3LCA3Nzk3NCwgNDI0NTYsIDY1NjY3LCAxMjcwMzcsIDEyMzMwLCAxMjgyNzIsIDAsIDQyNDE3LCA0MjM4MywgCisgICAgNjY2MzAsIDQxMzQ0LCA2MjkzLCAwLCA2NjI1MiwgNzc5ODQsIDc0NDQzLCAwLCAxMDIwOSwgODMxMywgNDE5NSwgNzQ0MzUsIAorICAgIDEzMTYsIDY2NjkwLCAxMjAwMzIsIDYzMzIsIDY0ODk0LCAwLCA2NTg3MSwgNzgwNjAsIDE3MzYsIDk4MzY3NSwgMzkwMSwgCisgICAgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODg0MSwgNjkzLCA5MTMwLCAzMTQsIDY0MTQ5LCA0MjQyMCwgCisgICAgMTE5NDksIDk4MzY2MCwgMTIwMTUyLCAxMTAyNiwgMTI4Nzg4LCA1MzMyLCA2OTQwLCA2NDE1NCwgMTI2MzUsIDEyNzAwNywgCisgICAgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDEyMDc2MywgNzg4NDAsIDcxMzY4LCAxMjgyNCwgMCwgNDUyOCwgCisgICAgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIDM3NTcsIDAsIDAsIDAsIAorICAgIDY1ODY5LCA3Mzc2MCwgMjU2OSwgMCwgMjMyNiwgNjU3NDAsIDI1NjUsIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NTksIAorICAgIDc0MDk1LCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgMCwgNDA0NCwgOTI2NDYsIDAsIDEyMjMzLCA5ODM4NjIsIAorICAgIDEwMjMsIDQ3NCwgMCwgMTE5ODE4LCAwLCAwLCA0MjQ4NywgNjU1NTYsIDAsIDEyNzg2NiwgNDIyOTUsIDAsIDAsIDcxMzIyLCAKKyAgICA5MjUxOCwgOTgzNSwgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCAwLCAwLCA1NTI1MSwgCisgICAgMTAxMTgsIDMxMzMsIDEyODAwOCwgNzM3OTUsIDAsIDk2MTAsIDgwNjgsIDgxOTcsIDAsIDY5OSwgMCwgNDE2NjUsIDU4NjgsIAorICAgIDAsIDkyNjk1LCA0MjE4MiwgNzU4MSwgMTk5NDAsIDQzNjY4LCA0MTY2NywgMTI4MDU3LCAwLCAxOTIzLCA2NTU4MywgCisgICAgNjU4MDIsIDkzOTcwLCA2NDU5NywgNDM0NDQsIDExOTE4NCwgOTIxOTcsIDAsIDY0NjQsIDcwMzYsIDI5OTYsIDE5MzcsIAorICAgIDk4Mzc0MiwgMCwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgMCwgMCwgMTEwMTcsIDEyMDYwMSwgMCwgMjkzLCAKKyAgICA3Nzk2NiwgOTIxNjksIDY0NzkxLCA0MTgyNywgNDI0NjYsIDQzNDIyLCAxMDU3OSwgODU2MCwgNzEzNTAsIDY1NDEzLCAKKyAgICA3Nzk2MywgNDgwMywgMTI5NjQsIDE3MzksIDE5NDEsIDM5MDAsIDAsIDE3MTMsIDc3OTY5LCAwLCA3Mzk1NywgMTE0MDcsIAorICAgIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTI4MDgwLCA0MjQ4MSwgMTE3MTYsIDY2NDczLCA3MTc5LCAKKyAgICA0MjI4OSwgMCwgNjQxMDMsIDk2OSwgMCwgOTM1MiwgMCwgNjE2NSwgNjQxMDAsIDAsIDY2MzIsIDczODYxLCA0MjQwMiwgCisgICAgNzQzMjcsIDc4MDYsIDAsIDg5MTQsIDAsIDAsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCisgICAgNjc4NDksIDU3NDYsIDczNzQ5LCAwLCA2NDQxNiwgNDI0MjIsIDAsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIDMzOCwgNTA1OSwgCisgICAgMTk0NzE5LCAwLCA0MjMyOCwgMTA3NjcsIDAsIDgxMTUsIDAsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAorICAgIDAsIDY1ODQ4LCAwLCAwLCA2OTg2MywgMCwgMTI2OTg3LCA0NDg2LCAwLCAwLCAwLCAxMDkyNSwgMCwgMCwgMCwgOTgzNTg2LCAKKyAgICA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgMCwgMTAzMDUsIDQyNDYxLCAwLCA0MjM0OSwgODgzMiwgNzgwNTEsIAorICAgIDY0MTI3LCAxMDY0NCwgNDI2NjIsIDc4ODI4LCA0MjI3OCwgNzQ0NTEsIDEyNjk4OCwgNjk4NzQsIDc3OTQsIDAsIDQyNDI5LCAKKyAgICA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAKKyAgICAwLCAwLCA2NDkzMywgMCwgNDE5NjAsIDY2OTksIDAsIDAsIDEyODM1NCwgNjgyMywgNDIzOTEsIDE1ODgsIDY1NDAwLCAKKyAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCA5MTc5MzksIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAorICAgIDQyNDgwLCAwLCA5MjY1MCwgNDE2NTUsIDY1NDAxLCA0Mzk3NSwgMCwgMCwgMCwgNjQ0LCA2NTUwMCwgNDE2NTcsIDEwNzc4LCAKKyAgICAzNjU5LCA5NTMzLCAxODQsIDE1NTMsIDEzMTA3LCA2NTQ4NCwgNjk2NDgsIDEwNTAyLCA3NDQ1NywgMCwgMCwgNDE1NTQsIDAsIAorICAgIDgyMjAsIDkxNzk0MywgNDE1NTcsIDAsIDAsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgCisgICAgNjQ4MTgsIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCAwLCA3NDM3NywgMTEwMjksIDY2NjUxLCA5ODMwNjgsIAorICAgIDAsIDExODkzMCwgNjQ1MjcsIDAsIDc4NzcsIDczODAzLCA5ODM3ODksIDEyNzM0OCwgMTIwMDk2LCA3NDYwMiwgOTk1NSwgCisgICAgMTE5NTU3LCA0MDU1LCA0MjgxNywgMCwgNjUyMTIsIDExNzE1LCAxMjE5MCwgMTIzMTksIDc4NjMwLCAwLCA3ODYzMSwgCisgICAgOTUwMiwgNjU0MjcsIDAsIDY1NDI0LCAxMjYwNywgMCwgOTczNCwgNjU0MjUsIDAsIDAsIDEyNzM1NywgNzg4MzUsIDkyNDEwLCAKKyAgICAxMDExMiwgMTA4MjcsIDAsIDk4NjYsIDc0NTI3LCA2NjY3NSwgMCwgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgMCwgCisgICAgODYzNiwgOTgzOTE4LCA4MzE1LCA2NTQ0NCwgOTgzNzg0LCAwLCA3NDU5NSwgNjE1MiwgMCwgMCwgNjYyOSwgMTI3MTA4LCAKICAgICAxMjAxNzEsIDAsIDc0NTg5LCA0Mzk5MywgMCwgNjk3OTAsIDY0NDM1LCAwLCA0MzY5MCwgMTEwNDYsIDExNDkwLCA0MjczMCwgCiAgICAgNDQ4NSwgMTI3MTA3LCAwLCA2NDkyNiwgMCwgMCwgMCwgNTg2OSwgMTI0MzcsIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAKICAgICAxMjgyNSwgMCwgMCwgMTI3MjUsIDAsIDAsIDc4NjQyLCAyMjMsIDAsIDY5Njc1LCAxMjAxNjYsIDQyNDQ0LCAwLCA2NDQ5OSwgCiAgICAgNjUyNDUsIDAsIDExNzEsIDAsIDY5NzE3LCAwLCAxODA1LCA4NzcyLCA0MzgyMCwgMCwgOTkzMCwgNjUyNDcsIDc4NjE5LCAKICAgICAxMjAxMTEsIDIzMzgsIDAsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCA2NTIzNiwgNjc2NDQsIDY4MTI2LCAxMjEzLCAKLSAgICAwLCA2NDA3NSwgNzk3LCA2NDA3NCwgODczNCwgNDIxMiwgMCwgNjQzODcsIDQxMTUsIDAsIDUwMDUsIDY0MDcwLCA2NDA3MywgCi0gICAgMTA2NzksIDAsIDc3OTU0LCA5NDAyLCA2NDI3NiwgNDI2LCAwLCAwLCA4MjUxLCAxMDEzNiwgNjU0MzYsIDAsIDIxMjAsIAotICAgIDQzMzAyLCAxMjI0LCAwLCA2NTU3NiwgMTIwMTU4LCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAKLSAgICAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCAwLCA5MjIyLCAKLSAgICAwLCAwLCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIDAsIDEyNzI0LCA2NjM1NywgNDIzMzEsIDY0OTM1LCAwLCAwLCAKLSAgICAxMjkzLCA3OTQ3LCAyMTMyLCAwLCA3NDU5MywgMTIwMzA4LCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCAwLCAwLCAKLSAgICA2NTg4OCwgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgMCwgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDAsIDg4MjIsIDAsIAotICAgIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCAxMjAzMTksIDgyMzUsIDEyMDMxNiwgNDQwNSwgMTAwODYsIDEyMDI0NywgCi0gICAgMCwgNjkyMTYsIDAsIDY1NDMwLCA3NDAxMywgNjA3OSwgNjgxNywgMTA3NjQsIDEyNzkxMCwgNjQyOTEsIDEyODA1MSwgOTk4LCAKLSAgICAxMjAzMTIsIDExMDYyLCAxMzE3LCA2NDMyNywgMTU1OCwgMCwgMTk5MSwgNzg4MiwgNDIyNTQsIDAsIDQxNzAwLCA1MzAsIDAsIAotICAgIDEwNDI4LCAxMTkzMzUsIDEyMDAyLCAxMTkzMzYsIDU3NDIsIDQzMDc2LCA0NjkyLCA2NDYzMCwgNDE4MjMsIDQwMDcsIAotICAgIDUwMDQsIDExOTMzNCwgNzg5NiwgNzUxLCA2NTk1LCA2NTk2LCAwLCA2NjM3MywgMCwgMCwgNjQ5MDgsIDkyNjkxLCA2MzExLCAKLSAgICAwLCAxMjAwNCwgMTE5MTkyLCAxMjA0OSwgNDMxMDgsIDEyMDMyNiwgMCwgNDE3MDUsIDkyMTg4LCA2NTk4LCAwLCA2NTk5LCAKLSAgICAxMjAzMzQsIDAsIDQyMTQ4LCAxMTg4MjUsIDY2MDI3LCAwLCA2NTk3LCA5NDEyLCA4MzQwLCAxMTgyNCwgNjQ3NDUsIDAsIDAsIAotICAgIDAsIDE5ODgsIDU0MDcsIDY3ODY1LCAyNDMwLCA0MTY3OCwgMCwgMTIwMjQzLCAyMzM2LCAwLCAwLCA3ODg3MSwgMTIwNDQyLCAKLSAgICAwLCAxOTIxLCAxMDk0NywgMTk5MjcsIDAsIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgCi0gICAgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgCi0gICAgNjU0MDMsIDAsIDE4NTQsIDEwNzk0LCAwLCA2NzY2MCwgMCwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCAKLSAgICA2NTQzMywgNjA3NiwgNjQ3OTMsIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIAotICAgIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgCi0gICAgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMCwgMCwgODQyMSwgMTI3NDcyLCA2OTY4MiwgCi0gICAgNDM3MDUsIDUwMiwgMCwgNjU0MzEsIDExOTA1NiwgMCwgMTIwNDMsIDEzMDMsIDMxNiwgOTI0NjIsIDIwMjksIDIxMzYsIAotICAgIDExOTI0NiwgMTE1MzMsIDY0MzY1LCA0MzQ4MCwgOTI2MzksIDQ4NjAsIDE5NDY0NSwgMTI3ODc3LCA0MjQ4OCwgMCwgOTU4MywgCi0gICAgMTI4ODQ5LCA1NTQ2LCA4MDE5LCA3Mzg1NiwgMCwgMCwgMCwgNTU0NCwgMjM1NSwgMTIxNTAsIDY1NzI1LCA1NTQzLCAKLSAgICA3Nzk4OSwgNjM3NTEsIDEyMTM3LCA1NTQ4LCA3Nzk4NSwgMCwgNjU3MjcsIDY4Mzg4LCA2NTcyNiwgNjA3NywgMTI4MzUyLCAKLSAgICA2NTQ1MiwgMCwgMTEzMDEsIDc4MDEzLCA3ODAwOCwgNzgwMTAsIDk4NzQsIDc4MDA3LCAwLCAxMzE5LCAzMDUwLCA2NTQxMCwgCi0gICAgMCwgMCwgNzgwMTYsIDc4MDE3LCA0MjgzMCwgNDM5OTYsIDY2NzE2LCAxMjgxMzcsIDQ2OTEsIDkyMjQyLCA5MzQ1LCA2MjEsIAotICAgIDkyNzA5LCAxMjgyMjIsIDAsIDY1NDExLCAwLCA0MTE4MiwgNzM4ODEsIDY1NDA4LCA3Mzg5OSwgNzgwMjQsIDk0NzQsIAotICAgIDEwNTQ1LCAxMTkxMTgsIDEwODg3LCAzNzg2LCA2NTQwOSwgODg5NCwgNDMxNzksIDExOTYxMSwgNzkyMywgMzcxNiwgCi0gICAgOTIzNjMsIDk5OTYsIDg1MDgsIDAsIDcwMTIsIDgxOTUsIDEyNzgzNCwgOTU2NiwgMCwgMzcyMiwgMCwgNDE3MDcsIDg0OTMsIAotICAgIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgMCwgODg1OSwgNjgyMCwgNzQzNDUsIDY1MTEwLCAxMjA3NDAsIDAsIAotICAgIDAsIDkxMTksIDI3ODcsIDc5MjAsIDExODgyMywgNDAyMSwgMjAxMiwgNzk4NSwgMCwgMTE5NjYzLCAwLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgMCwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgCi0gICAgMTAxMjYsIDEyMTE2LCA0MTY3MywgMTIwMzcwLCAxMTQyMiwgNzgxNDEsIDEyMDM3MywgMzg2MCwgMTIwMzY3LCA2ODQxMiwgCi0gICAgNDEzNDUsIDEyMDM2MiwgMTIwMzYzLCAxMTc0OCwgNDIxNTgsIDc5NDEsIDExMDc2LCA4NzQ5LCAxMjAzNjEsIDIxMDQsIAotICAgIDY0ODU4LCAzNjEsIDEyMDM1NywgODQ1LCAwLCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDkxNzkyMCwgMjkyNiwgOTE3OTE5LCAKLSAgICA0NTY5LCA3NDEzMCwgMCwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgNjU2MjksIDAsIAotICAgIDE5NDg1OCwgMCwgMCwgMTI3NTQ1LCAxMjA1NDMsIDAsIDAsIDYyOTEsIDAsIDc4NjM5LCA0MTY2OSwgNzA5NCwgOTE3OTIxLCAKLSAgICAwLCAwLCA3NDA1NCwgMTI3NzU0LCAxOTUwMjksIDAsIDgzOSwgMCwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDAsIDQ4NTksIAotICAgIDY0NDY3LCAwLCAwLCAxMTg5OTgsIDcyMDYsIDAsIDY2NDcsIDQzOTg2LCAwLCA2OTc2NiwgMCwgNjQ3NjQsIDQyMTAsIDAsIAotICAgIDEyNzkzNiwgODA0LCAwLCAwLCAxMjI5OCwgMCwgNjY2NTMsIDAsIDY0OTI0LCAxMDA5MSwgNzM5MzEsIDk0NjgsIDc0MjQ1LCAKLSAgICAwLCAwLCA3NDI0NiwgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDAsIDEyNzksIDE0MjUsIDYyMjQsIDExOTIyOSwgCi0gICAgMTEwNDksIDAsIDkyNjk3LCA0MzIzOSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIDY5Njc3LCAxMTk0MCwgNjc4ODgsIDY2NCwgCi0gICAgMTIwNDM3LCA1MDM0LCAwLCAwLCAxMjc1MjUsIDQyNzAyLCA3Mzg4OCwgMCwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgCi0gICAgMCwgOTExNSwgNzQzMCwgMTIwMzc3LCAwLCAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCAKLSAgICA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIDEyMDE2MCwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIAotICAgIDQxMTY0LCA2NDc0NCwgOTUyOCwgMTE4ODY3LCAxMjg4MDAsIDUyNCwgMCwgNzQwMjksIDc4OCwgNzQwMjcsIDAsIDE5NDYzOCwgCi0gICAgMCwgMTY2MywgMTA0MTksIDc0MDI1LCA0MjYzNiwgMCwgNjk3MjUsIDAsIDEyMDY1NiwgMCwgNjc4NzYsIDAsIDAsIDAsIAotICAgIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDAsIDExOTEwNywgNDM2MTIsIDY0MzQ0LCAwLCAwLCAxMDg1NSwgNTQ0NSwgCi0gICAgOTM1NSwgMCwgNjUxOTgsIDczOTEsIDg5ODksIDIyMSwgNjU2ODYsIDAsIDAsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCAKLSAgICA4ODU1LCAwLCAwLCA2NDQ2OSwgMTIwNDI2LCAxMDU1NSwgMCwgNDMzMzMsIDkyMjk5LCAwLCAxMjA0MjcsIDEwNDUxLCAwLCAKLSAgICA2NzY1MywgNzI0NSwgMTI0NDMsIDc0NDA1LCA5OTQ3LCAxMjAxNDksIDc4MzE3LCAzODczLCA4MzY3LCAwLCAxMjAxNDYsIAotICAgIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDAsIDAsIDExMDEwLCAxMjcyMywgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCAwLCAKLSAgICA3NjgyLCA3NDA0OSwgMTQ2MiwgMTAyMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDQyNTk1LCAwLCA3NDQwMiwgMTE4ODYwLCAwLCAKLSAgICAxMjA0MTksIDkyNDk3LCA3NDA1MiwgMCwgMCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAxMjA0MTgsIDAsIDY0NzY1LCAKLSAgICA3MzkyMywgMTIwNDE3LCAxMjA2NjIsIDEyMDczMCwgMTk0NzAyLCA2MjE2LCAwLCAxMDc1NSwgOTQ1NSwgMCwgODEyNCwgCi0gICAgMTI3MDQyLCA5NDcwLCA2OTQ0LCAxMjc1NDAsIDAsIDY5NjgwLCAyODI4LCAwLCA1MzEsIDQyNjM4LCAwLCAwLCAwLCAKLSAgICA0MzQyOCwgODIwNCwgMzYxNCwgMjgyNywgOTY5NiwgMCwgMCwgODcyOCwgNDM1NCwgMTA5MDQsIDc4NTYyLCAxOTkzNiwgCi0gICAgNzgzMywgMTIwNjkxLCAwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCAxMjA0MDksIDEyNzA0NCwgMCwgODUzNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDExOTksIDEwMTIxLCAyMDI4LCAwLCAwLCA2OTcxNSwgMCwgMzA2MiwgMCwgNzQ0NDcsIDEyNjA4LCAwLCAKLSAgICA2NjQ0MCwgNzU0NSwgOTcwMCwgMTI1ODAsIDAsIDEyMDc3NywgMTIwNTAyLCA0MTE1NSwgMCwgNzQwNzEsIDAsIDAsIAotICAgIDEyNzEzLCAwLCAwLCAwLCA3ODc3MiwgMCwgMTczNCwgMCwgMCwgMTI3MDQwLCA2NDU5NCwgMjQ1NiwgMjMxLCAwLCA3NDE2NywgCi0gICAgNTQyLCAwLCAxMTg3ODYsIDAsIDAsIDEyMzAsIDAsIDAsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAotICAgIDEyNzkzOCwgODM1MiwgMCwgNTY4NywgMCwgNjQ1MTUsIDAsIDE5NDgwMSwgNTUyNjUsIDY3ODQ2LCA3ODQzNCwgOTcwNCwgMCwgCi0gICAgMCwgNzQyODQsIDEyODI4NSwgMCwgODY2MCwgMCwgMCwgMCwgNzg3NzMsIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgCi0gICAgOTkwOSwgNjA4MCwgMCwgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCAwLCAwLCAxMzE0MCwgNjU4OTksIDEwNjA0LCAwLCAKLSAgICA0NDgwLCAxMTI2NiwgMTI4MTUyLCAxMjI2LCA2OTMwLCAwLCAwLCA2MzYwLCAxMDg5NywgNDEyMzAsIDYwNSwgMCwgNzQ3ODUsIAotICAgIDEyMDM1NiwgMCwgMCwgNDE1MDAsIDAsIDMxMSwgMTE0NTMsIDYyMjEsIDEwNjA4LCA2NDk0MywgNzQyODAsIDEwODc3LCAKLSAgICAxMTg4NjgsIDY0ODg1LCA3NDI3MiwgMCwgMCwgMCwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAwLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIAotICAgIDAsIDkyMjMxLCA1MDM3LCAwLCAxNzc2LCA4NDIyLCAwLCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCA0MzMyOCwgMCwgCi0gICAgNDI2OTgsIDEyOTUsIDAsIDQ2MjUsIDAsIDQ2MzAsIDEzMTE3LCAwLCAxMjg3NzIsIDY1MTIzLCAxMTI5MywgMjY2OCwgCi0gICAgMTEyODgsIDAsIDQyNjQwLCA2NTY2NiwgMjUxOSwgOTIzNjksIDY1NDIwLCA5MjQ3OSwgMCwgNDI1MiwgNTA0OSwgNDI2NTksIAotICAgIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgMCwgNjU0MTksIDAsIDAsIDY0OSwgNjU0MjEsIDAsIDY2NzAyLCAwLCAKLSAgICAxMjY3MCwgMTAxMywgMCwgNjQ5MTksIDcwNSwgMCwgNjU0MjIsIDEyNzgwMywgMTE4MywgMCwgNzAxNywgNDI4NTIsIDAsIAotICAgIDgxNTcsIDk3MzYsIDY0NTAzLCA2NTQxOCwgMCwgMCwgNzQwMzUsIDAsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMCwgODkyMCwgMCwgCi0gICAgMCwgNzk2MiwgMTIyMTEsIDk4MzcsIDIwNTEsIDY2MjI3LCAwLCA0MTg0LCAwLCAwLCAxMDE3NywgNzM3NzcsIDE4NTcsIDAsIAotICAgIDQ2MjYsIDg0NjQsIDg0NzIsIDAsIDQ2MjksIDg0OTksIDc4MzIxLCA3ODMyMiwgNDYyNCwgNzgxOCwgMTE5MTczLCAwLCAwLCAKLSAgICA3ODA1LCAwLCAwLCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODMyMywgNDMzMjcsIDQzOTg5LCAxMTkwNDYsIDg0OTIsIAotICAgIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDAsIDAsIDc4MzM2LCA3ODMzOSwgOTU0MywgNzgzMzUsIDc4MzMyLCA3NzgzMiwgCi0gICAgNjU4NDksIDc3ODMxLCAwLCAwLCAxMjQ1MSwgMCwgODY4NCwgMCwgNjEwMiwgMCwgNTI5OCwgMCwgNTI5NCwgMCwgMCwgMCwgCi0gICAgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAxMTkyMTUsIDAsIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIAotICAgIDEyMDYxNywgNzQzOTcsIDQxNDY4LCAwLCAwLCA1MjkyLCA1NTI3MiwgMCwgMTkzOSwgNTMwMiwgMzk3MCwgOTE3ODc5LCAKLSAgICAxMjQ1NSwgMTc5MywgMCwgMCwgMCwgNjY0MywgOTI0NzcsIDY1MjYzLCAwLCA3ODMzMCwgNDEyOTMsIDc4MzI4LCA2NTkyMywgCi0gICAgMCwgMTMyMTksIDk1NjksIDAsIDc0MzgzLCAwLCAwLCAwLCA1NTAwLCA4ODEzLCAwLCAwLCA3NDU2NiwgNTMyMiwgMCwgCi0gICAgNzgzNDAsIDQzNjMxLCA1MzI0LCA2NjQ0MywgMzc4NCwgNDE2MTQsIDY1MjY5LCA2MjMwLCA3ODM0OSwgNzgzNDUsIDQzMzI0LCAKLSAgICAzMzYwLCA3ODM0NCwgMTE1MjMsIDAsIDkyNDg4LCA5OTI2LCA3MTk3LCAwLCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCAKLSAgICA3ODM2MCwgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgCi0gICAgNDE4MTUsIDQxMTUwLCAwLCAxMDU3MSwgMTAwOTYsIDAsIDAsIDc4MDc0LCA2OTQ3LCA0MTE1MiwgODg3LCA5MjQ5LCA2NTY1LCAKLSAgICA3ODUxMCwgNDE5OTAsIDc4NTA5LCA0MTgxMSwgNzQ0NjYsIDAsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIAotICAgIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCAKLSAgICAxMjczODMsIDMxNSwgMTI4MTMsIDAsIDc4NDMyLCA3ODI1NiwgNzgzNTEsIDc4MzUyLCAwLCAwLCAwLCAwLCAxMzc4LCAKLSAgICA5NTA5LCAwLCAwLCA3NDQ3NSwgMzA2NiwgOTIyMjAsIDY3ODQ3LCAwLCA5MjM1NSwgMCwgNzgzNjUsIDg3ODcsIDEyMDM3OSwgCi0gICAgMTk0NjE2LCA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTk0NjE0LCAwLCA2NDY1MiwgMCwgMTk0NjEyLCAwLCA3ODM2NiwgCi0gICAgNDIwODgsIDAsIDE5NTA2MSwgNzE3NiwgMTI4ODMzLCAxMDEzNywgNjEyMSwgMTA5OTUsIDc4MjU5LCA3NDUzNCwgODExOSwgCi0gICAgNjQ4NzQsIDkxNzgxNiwgMTI3MTk5LCAxOTQ5MzksIDAsIDc0NTI1LCAwLCAwLCAxMjkzMCwgMTM5NCwgNzQ1MTQsIDAsIAotICAgIDc0NTE1LCAwLCAxMTg4MDQsIDI5OTgsIDk1MjcsIDEyMDY1OSwgNjUxOTAsIDEyOTc3LCA0MjA5MCwgMTE5MTY1LCAwLCAKLSAgICAxMTkxMDAsIDQxMjM2LCA5MjIzNSwgNDIwMDUsIDQyMDAzLCA0MTIzNywgNTg0OCwgMCwgMCwgMzY3MCwgMTI4NjU3LCAKLSAgICAxOTQ2MDAsIDAsIDAsIDc4OTAsIDAsIDExMjk4LCA0MzMxNSwgMCwgNjIyOSwgMTU5MywgMCwgMCwgNjE5LCA0NjM1LCAKLSAgICA2NTA4MCwgMCwgMTI4MDAyLCA0MTIwLCA2NTMzNywgNjUzMzYsIDAsIDExODA4LCAxMTkyMTQsIDc0MTE1LCA5MzY2LCAKLSAgICA0Mjc5MCwgNDIwMDYsIDAsIDY1MzI3LCA2NTMyNiwgNjUzMjUsIDEwNzU3LCAxNTA3LCA0MjIxNiwgNjUzMjEsIDY1MzIwLCAKLSAgICA2NTMzNSwgNjUzMzQsIDY1MzMzLCA2NTMzMiwgNjUzMzEsIDQyMDU5LCA2NTMyOSwgNDI2ODksIDkyNDI3LCA5MTI4LCAKLSAgICAxMTg4ODUsIDQyMDczLCA2Nzg1LCA2NDU5MCwgMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKLSAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAwLCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCA0MzUzMywgCi0gICAgNzg0NTksIDcxODksIDAsIDAsIDAsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDAsIDQ2MTUsIDEyNjk1LCAKLSAgICAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgMCwgMCwgNTYyLCAxMjE2OSwgNjU5MCwgNjk3NjIsIAotICAgIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDAsIDAsIDEwMzcsIDAsIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAKLSAgICAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCAwLCAyODM1LCAwLCAxMDYyNCwgNDM2MjMsIDExMDcyLCAxMjcxOTEsIDAsIDAsIAotICAgIDEyNjA2LCA3ODQzMywgMjgyNSwgMCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgMCwgMCwgMTIwNTkzLCAKLSAgICAxMzA3MSwgMCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgCi0gICAgNjQ3MDMsIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgMTY2OCwgMCwgMCwgMCwgMTE4NywgCi0gICAgMCwgNDI2MjgsIDc4NTc1LCAwLCAxMjg3NzcsIDAsIDMyNDAsIDEyODUxOCwgMTIxOTQsIDAsIDExNTkxLCA0MTA2NSwgCi0gICAgNTMyMywgODE2NiwgMCwgMCwgMCwgNzQ1MzUsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgCi0gICAgMTI3Mjk1LCA4OTE2LCA2NTA0OCwgMTkwOSwgODg2NCwgMCwgMCwgMTA3MzYsIDkyNTA4LCAxMTU3MSwgNzYxNSwgMTI3MzAwLCAKLSAgICA5MjI5NiwgNDIzNywgOTI1NzYsIDEwMzUsIDY1ODE1LCAwLCA3ODgxLCA3MDEsIDY1OTM2LCAzNDg5LCAwLCAwLCAxMjA3NTEsIAotICAgIDExNDAzLCAwLCAwLCAxMjcxNDYsIDM3OTYsIDY4MDAsIDAsIDM5OTQsIDExNDIxLCAwLCAxOTUwNzYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCAxMjczNjksIDY0Mzg3LCA0MTE1LCAwLCA1MDA1LCA2NDA3MCwgCisgICAgNjQwNzMsIDEwNjc5LCAwLCA3Nzk1NCwgOTQwMiwgNjQyNzYsIDQyNiwgMCwgMCwgODI1MSwgMTAxMzYsIDY1NDM2LCAwLCAKKyAgICAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDc0MTkyLCAxMDcwMSwgMTc2NCwgMzEwMSwgMTI3ODE1LCAxMjg1OCwgCisgICAgMTIwMTU5LCAwLCAxMTM3MywgNjM3OCwgMTI3ODU5LCAxMjAxMDMsIDg2NjMsIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCAwLCAKKyAgICA5MjIyLCA5ODM3MjksIDAsIDQyNTksIDkwOTIsIDc0NTY3LCA0MTk2MSwgMCwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIAorICAgIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc1OCwgNzQ1OTMsIDEyMDMwOCwgMjQ1NCwgNDI3MTcsIDM2MTMsIDEyODgzNywgCisgICAgMCwgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAxMDg0MCwgMCwgMTA2NjgsIDAsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCAKKyAgICA5ODMxMTQsIDg4MjIsIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAwLCAwLCAwLCAwLCA2OTg0OCwgODIzNSwgMTIwMzE2LCAKKyAgICA0NDA1LCAxMDA4NiwgMTIwMjQ3LCAwLCA2OTIxNiwgMCwgNjU0MzAsIDcxMzIxLCA2MDc5LCA2ODE3LCAxMDc2NCwgCisgICAgMTI3OTEwLCA2NDI5MSwgMTI4MDUxLCA5OTgsIDEyMDMxMiwgMTEwNjIsIDEzMTcsIDY0MzI3LCAxNTU4LCAwLCAxOTkxLCAKKyAgICA3ODgyLCA0MjI1NCwgMCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAorICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgMTE5MzM0LCA3ODk2LCA3NTEsIDY1OTUsIDY1OTYsIDEyMDMyNSwgCisgICAgNjYzNzMsIDAsIDAsIDY0OTA4LCA5MjY5MSwgNjMxMSwgMCwgMTIwMDQsIDExOTE5MiwgMTIwNDksIDQzMTA4LCAxMjAzMjYsIAorICAgIDAsIDQxNzA1LCA5MjE4OCwgNjU5OCwgMCwgNjU5OSwgMTIwMzM0LCAwLCA0MjE0OCwgMTE4ODI1LCA2NjAyNywgMCwgNjU5NywgCisgICAgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMCwgMTk4OCwgNTQwNywgNjc4NjUsIDI0MzAsIDQxNjc4LCAKKyAgICAwLCAxMjAyNDMsIDIzMzYsIDk4Mzg5NCwgMCwgNzg4NzEsIDEyMDQ0MiwgOTgzNzYwLCAxOTIxLCAxMDk0NywgMTk5MjcsIDAsIAorICAgIDY1NDA2LCAwLCAxOTkxMywgNDI4NCwgMTMyMTcsIDAsIDQzNzg5LCAxMjg0MSwgOTIyOSwgMTA5NTYsIDQyMjg1LCA0MTY3NCwgCisgICAgMTk5NjQsIDQxNjc5LCA2NTA4NCwgMzUyMSwgMCwgNTc3NCwgODMyNSwgMCwgNjU0MDMsIDk4MzA4OSwgMTg1NCwgMTA3OTQsIAorICAgIDAsIDY3NjYwLCA2OTg0NiwgMCwgNzgzNTksIDUyODAsIDAsIDQzNDQsIDEyOTA1LCA2NTQzMywgNjA3NiwgNjQ3OTMsIAorICAgIDQxNjEwLCA3NjgsIDEyMDc0LCA0NDIsIDAsIDY4MTYyLCA2NDA4MSwgMTI5MzQsIDQxNjgyLCA2NTQzMiwgNDE2OTMsIDAsIAorICAgIDYwNzEsIDY1NDM0LCAxMjc0NjcsIDQ4MDQsIDQwNTMsIDAsIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgCisgICAgMTI3NDYzLCA2OTc5NywgMTk0NjUyLCAxMjc0NzMsIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDAsIDY1NDMxLCAKKyAgICAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgCisgICAgNDM0ODAsIDkyNjM5LCA0ODYwLCAxMjY2NDgsIDEyNzg3NywgNDI0ODgsIDAsIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgCisgICAgNzM4NTYsIDAsIDAsIDAsIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzc5ODksIDYzNzUxLCAxMjEzNywgCisgICAgNTU0OCwgNzc5ODUsIDAsIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAKKyAgICA3ODAxMywgNzgwMDgsIDc4MDEwLCA5ODc0LCA3ODAwNywgMCwgMTMxOSwgMzA1MCwgNjU0MTAsIDAsIDAsIDc4MDE2LCAKKyAgICA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgMTI4MTM3LCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA5MjcwOSwgCisgICAgMTI4MjIyLCAwLCA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgCisgICAgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAxMTk2MTEsIDc5MjMsIDM3MTYsIDkyMzYzLCA5OTk2LCAKKyAgICA4NTA4LCAwLCA3MDEyLCA4MTk1LCAxMjc4MzQsIDk1NjYsIDAsIDM3MjIsIDAsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIAorICAgIDQxMzc5LCAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMCwgMCwgOTExOSwgCisgICAgMjc4NywgNzkyMCwgMTE4ODIzLCA0MDIxLCAyMDEyLCA3OTg1LCAwLCAxMTk2NjMsIDAsIDAsIDc4MDIxLCA3ODAyMiwgNDEwLCAKKyAgICA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCAwLCA0MTY1OSwgNDE2NzEsIDE4MjcsIDAsIDY0Mzk2LCAxMDEyNiwgMTIxMTYsIAorICAgIDQxNjczLCAxMjAzNzAsIDExNDIyLCA3ODE0MSwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgMTIwMzYyLCAKKyAgICAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIDM2MSwgCisgICAgMTIwMzU3LCA4NDUsIDAsIDQxNTYwLCAxMTk3MCwgNDU2MiwgOTE3OTIwLCAyOTI2LCA5MTc5MTksIDQ1NjksIDc0MTMwLCAwLCAKKyAgICA0MzQ4NywgMTk0NjMwLCA2MTEsIDc0MTI5LCA2NDg3MSwgMTE4ODkxLCA2NTYyOSwgMCwgMTk0ODU4LCAwLCAwLCAxMjc1NDUsIAorICAgIDEyMDU0MywgMCwgMCwgNjI5MSwgMCwgNzg2MzksIDQxNjY5LCA3MDk0LCA5MTc5MjEsIDAsIDk4MzU4MSwgNzQwNTQsIAorICAgIDEyNzc1NCwgMTk1MDI5LCAwLCA4MzksIDk4MzMxMSwgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDE5NDY2MywgNDg1OSwgCisgICAgNjQ0NjcsIDAsIDk4Mzk1NCwgMTE4OTk4LCA3MjA2LCAwLCA2NjQ3LCA0Mzk4NiwgMCwgNjk3NjYsIDAsIDY0NzY0LCA0MjEwLCAKKyAgICA5ODM4NTQsIDEyNzkzNiwgODA0LCAwLCAwLCAxMjI5OCwgMCwgNjY2NTMsIDAsIDY0OTI0LCAxMDA5MSwgNzM5MzEsIDk0NjgsIAorICAgIDc0MjQ1LCAwLCAwLCA3NDI0NiwgOTI1MDMsIDEyODM5LCA2NDY2OSwgOTIyMDIsIDAsIDEyNzksIDE0MjUsIDYyMjQsIAorICAgIDExOTIyOSwgMTEwNDksIDAsIDkyNjk3LCA0MzIzOSwgODQ4MiwgOTI0NDAsIDAsIDUwMzIsIDY5Njc3LCAxMTk0MCwgCisgICAgNjc4ODgsIDY2NCwgMTIwNDM3LCA1MDM0LCAwLCAwLCAxMjc1MjUsIDQyNzAyLCA3Mzg4OCwgOTgzMTQ5LCAxMzI5NCwgCisgICAgNjc4NzMsIDY0ODY5LCA2MDMyLCAwLCA5MTE1LCA3NDMwLCAxMjAzNzcsIDAsIDEyMDgxOSwgNjgzODcsIDEyMDE2OCwgCisgICAgNzM5MTMsIDEyMDE3MCwgNDExNjEsIDU1MTgsIDQxNzQsIDEwOTkzLCA0MTE2MiwgMTIwMTYwLCA2NDUyOCwgMTE2OSwgNDM0LCAKKyAgICA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCAxMTg4NjcsIDEyODgwMCwgNTI0LCAwLCA3NDAyOSwgCisgICAgNzg4LCA3NDAyNywgMCwgMTk0NjM4LCAwLCAxNjYzLCAxMDQxOSwgNzQwMjUsIDQyNjM2LCAwLCA2OTcyNSwgMCwgMTIwNjU2LCAKKyAgICAwLCA2Nzg3NiwgMCwgMCwgMCwgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDAsIAorICAgIDAsIDEwODU1LCA1NDQ1LCA5MzU1LCAwLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgMCwgMCwgODAxMCwgNzE5MSwgCisgICAgNDk2MiwgNjk3NzIsIDg4NTUsIDAsIDAsIDY0NDY5LCAxMjA0MjYsIDEwNTU1LCAwLCA0MzMzMywgOTIyOTksIDAsIAorICAgIDEyMDQyNywgMTA0NTEsIDAsIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIAorICAgIDgzNjcsIDAsIDEyMDE0NiwgNDM0MzMsIDQzNjQ5LCAxMTk4NywgMCwgMCwgMTEwMTAsIDEyNzIzLCA3NDA1OSwgNzQwNjIsIAorICAgIDYyMTcsIDU4OTYsIDAsIDc2ODIsIDc0MDQ5LCAxNDYyLCAxMDIzNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDI1OTUsIDAsIAorICAgIDc0NDAyLCAxMTg4NjAsIDAsIDEyMDQxOSwgOTI0OTcsIDc0MDUyLCAwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAKKyAgICAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgMTIwNDE3LCAxMjA2NjIsIDY5OTIwLCAxOTQ3MDIsIDYyMTYsIDAsIDEwNzU1LCAKKyAgICA5NDU1LCAwLCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyNzU0MCwgMCwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIAorICAgIDAsIDAsIDAsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAwLCAwLCA4NzI4LCA0MzU0LCAxMDkwNCwgNzg1NjIsIAorICAgIDE5OTM2LCA3ODMzLCAxMjA2OTEsIDAsIDQyNTk5LCA0MjU5NywgNDI3MDksIDEyMDQwOSwgMTI3MDQ0LCAwLCA4NTM3LCAwLCAKKyAgICAwLCA5MzU0LCA5ODMxNjQsIDEyODgzMywgNDExOTksIDEwMTIxLCAyMDI4LCAwLCA5ODMxOTQsIDY5NzE1LCAwLCAzMDYyLCAKKyAgICAwLCA3NDQ0NywgMTI2MDgsIDAsIDY2NDQwLCA3NTQ1LCA5NzAwLCAxMjU4MCwgOTIyMDUsIDEyMDc3NywgMTIwNTAyLCAKKyAgICA0MTE1NSwgMCwgNzQwNzEsIDAsIDk4MzQ0OSwgMTI3MTMsIDAsIDAsIDAsIDc4NzcyLCAwLCAxNzM0LCAwLCAwLCAxMjcwNDAsIAorICAgIDY0NTk0LCAyNDU2LCAyMzEsIDAsIDc0MTY3LCA1NDIsIDAsIDExODc4NiwgMCwgOTgzOTcwLCAxMjMwLCAwLCAwLCAzNTk3LCAKKyAgICA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCAxMjc5MzgsIDgzNTIsIDAsIDU2ODcsIDAsIDY0NTE1LCAwLCAKKyAgICAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgNzg0MzQsIDk3MDQsIDAsIDAsIDcwMDgwLCA3MTMzOCwgMCwgODY2MCwgMTI2NDk1LCAKKyAgICAwLCAwLCA3ODc3MywgNzQ0ODIsIDQ0ODMsIDE3MDksIDY5NzIxLCA5OTA5LCA2MDgwLCAwLCAxMjAzNTgsIDE3NDYsIDEzMTUsIAorICAgIDg2NjcsIDAsIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDAsIDQ0ODAsIDExMjY2LCAxMjgxNTIsIDEyMjYsIDY5MzAsIAorICAgIDY3OTc5LCA5ODM2ODEsIDYzNjAsIDEwODk3LCA0MTIzMCwgNjA1LCAwLCA3NDc4NSwgNjk4NzUsIDAsIDAsIDQxNTAwLCAwLCAKKyAgICAzMTEsIDExNDUzLCA2MjIxLCAxMDYwOCwgNjQ5NDMsIDc0MjgwLCAxMDg3NywgMTE4ODY4LCA2NDg4NSwgNzQyNzIsIDAsIDAsIAorICAgIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAwLCA3NDQ1NiwgNjQ2MDYsIDk5MTcsIDAsIDkyMjMxLCA1MDM3LCAwLCAKKyAgICAxNzc2LCA4NDIyLCAwLCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgCisgICAgNDYyNSwgMCwgNDYzMCwgMTMxMTcsIDAsIDEyODc3MiwgNjUxMjMsIDExMjkzLCAyNjY4LCAxMTI4OCwgMCwgNDI2NDAsIAorICAgIDY1NjY2LCAyNTE5LCA5MjM2OSwgNjU0MjAsIDkyNDc5LCAwLCA0MjUyLCA1MDQ5LCA0MjY1OSwgMTE5MDExLCA3MDYsIAorICAgIDc3NTQsIDEwODU0LCA4NzM4LCAwLCA2NTQxOSwgMCwgMCwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDAsIDEyNjcwLCAxMDEzLCAKKyAgICAwLCA2NDkxOSwgNzA1LCAwLCA2NTQyMiwgMTI3ODAzLCAxMTgzLCAxMjY1MTksIDcwMTcsIDQyODUyLCAwLCA4MTU3LCAKKyAgICA5NzM2LCA2NDUwMywgNjU0MTgsIDAsIDk4Mzg2OSwgNzQwMzUsIDAsIDExOTEzLCA3Mzg3NCwgNjY5NiwgMCwgODkyMCwgCisgICAgMTE5Mjk4LCAwLCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDAsIDAsIDEwMTc3LCA3Mzc3NywgCisgICAgMTg1NywgMTk0NjU3LCA0NjI2LCA4NDY0LCA4NDcyLCAwLCA0NjI5LCA4NDk5LCA3ODMyMSwgNzgzMjIsIDQ2MjQsIDc4MTgsIAorICAgIDExOTE3MywgMCwgMCwgNzgwNSwgMCwgOTQwMDcsIDY5MzUsIDkyMjkyLCA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgCisgICAgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgODQ5NiwgMCwgMCwgNzgzMzYsIDc4MzM5LCA5NTQzLCAKKyAgICA3ODMzNSwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgNzc4MzEsIDk4Mzk1MiwgMCwgMTI0NTEsIDAsIDg2ODQsIDAsIDYxMDIsIDAsIAorICAgIDUyOTgsIDAsIDUyOTQsIDAsIDAsIDk4MzQ1MSwgMTk1MDYyLCA5OTQ5LCAxMTk4MjYsIDQzNjE3LCAxMTkyMTUsIDAsIAorICAgIDEyMDczLCAwLCAwLCA3Nzg2MywgMTMxMDgsIDEyMDYxNywgMTE0MzksIDQxNDY4LCA5ODM3NDgsIDAsIDUyOTIsIDU1MjcyLCAKKyAgICA5ODM4NzQsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3OSwgMTI0NTUsIDE3OTMsIDAsIDAsIDAsIDY2NDMsIDkyNDc3LCAKKyAgICA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDAsIDEzMjE5LCA5NTY5LCAwLCA3NDM4MywgMCwgNzQxOTcsIAorICAgIDAsIDU1MDAsIDg4MTMsIDAsIDAsIDc0NTY2LCA1MzIyLCAwLCA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCAKKyAgICA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgNDMzMjQsIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIAorICAgIDk5MjYsIDcxOTcsIDAsIDY4NDI5LCA0Mjg5NCwgNDE4MjEsIDEyNDksIDc4MzYwLCA3ODM2MSwgNzgzNTYsIDc4MzU4LCAKKyAgICA3ODM1MywgNjQ4OTksIDY0NzYzLCA0MTE0OSwgNDE4MDcsIDQzMTYyLCA0MTgxNSwgNDExNTAsIDAsIDEwNTcxLCAxMDA5NiwgCisgICAgMCwgMCwgNzgwNzQsIDY5NDcsIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCAKKyAgICA3NDQ2NiwgOTM5NjYsIDY2NzAsIDc3ODgyLCAwLCAwLCA0MzA5MiwgNDMzMjUsIDAsIDEwMTY4LCAwLCA5NzgxLCAxMjg2NTUsIAorICAgIDkxOTAsIDAsIDk2NjYsIDgyNjksIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgCisgICAgOTgzNDUwLCA3ODQzMiwgNzgyNTYsIDc4MzUxLCA3ODM1MiwgMCwgOTgzNjQ4LCAwLCAwLCAxMzc4LCA5NTA5LCAwLCAwLCAKKyAgICA3NDQ3NSwgMzA2NiwgOTIyMjAsIDY3ODQ3LCAwLCA5MjM1NSwgMCwgNzgzNjUsIDg3ODcsIDEyMDM3OSwgMTk0NjE2LCAKKyAgICA0MTYxOCwgMTk0NjE1LCA3ODI2MSwgMTk0NjE0LCAwLCA2NDY1MiwgMCwgMTk0NjEyLCAwLCA3ODM2NiwgNDIwODgsIDAsIAorICAgIDE5NTA2MSwgNzE3NiwgNDM3NTYsIDEwMTM3LCA2MTIxLCAxMDk5NSwgNzgyNTksIDc0NTM0LCA4MTE5LCA2NDg3NCwgCisgICAgOTE3ODE2LCAxMjcxOTksIDE5NDkzOSwgMCwgNzQ1MjUsIDAsIDAsIDEyOTMwLCAxMzk0LCA3NDUxNCwgMCwgNzQ1MTUsIDAsIAorICAgIDExODgwNCwgMjk5OCwgOTUyNywgMTIwNjU5LCA2NTE5MCwgMTI5NzcsIDQyMDkwLCAxMTkxNjUsIDAsIDExOTEwMCwgCisgICAgNDEyMzYsIDkyMjM1LCA0MjAwNSwgNDIwMDMsIDQxMjM3LCA1ODQ4LCAwLCAwLCAzNjcwLCAxMjg2NTcsIDE5NDYwMCwgMCwgCisgICAgMCwgNzg5MCwgMCwgMTEyOTgsIDQzMzE1LCAwLCA2MjI5LCAxNTkzLCAwLCAwLCA2MTksIDQ2MzUsIDY1MDgwLCAwLCAKKyAgICAxMjgwMDIsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMCwgMTE4MDgsIDExOTIxNCwgNzQxMTUsIDkzNjYsIDQyNzkwLCA0MjAwNiwgCisgICAgMTE5MTE1LCA2NTMyNywgNjUzMjYsIDY1MzI1LCAxMDc1NywgMTUwNywgNDIyMTYsIDY1MzIxLCA2NTMyMCwgNjUzMzUsIAorICAgIDY1MzM0LCA2NTMzMywgNjUzMzIsIDY1MzMxLCA0MjA1OSwgNjUzMjksIDQyNjg5LCA5MjQyNywgOTEyOCwgOTQwNDUsIAorICAgIDQyMDczLCA2Nzg1LCA2NDU5MCwgOTgzODIxLCA0MzcxLCA3MTk2LCA2NTMxOCwgMjAzNSwgNjUzMTYsIDQxMDYsIDY1MzE0LCAKKyAgICA2NTMxMywgNDIwNzQsIDEyNzg0NywgNDEyMjgsIDAsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIDQzNTMzLCA3ODQ1OSwgCisgICAgNzE4OSwgMCwgMCwgMCwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgOTEzMSwgMCwgNDYxNSwgMTI2OTUsIDEyNzc1MiwgCisgICAgMCwgMTIxNzUsIDAsIDY0NTM1LCAwLCA3ODA5LCAwLCAwLCA1NjIsIDEyMTY5LCA2NTkwLCA2OTc2MiwgNjY0NTUsIDY0NzM4LCAKKyAgICAzMjE5LCA2ODY1NCwgOTgzNzc4LCAwLCAxMDM3LCAwLCAyMDI1LCAxMjgyNjMsIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIAorICAgIDU0OSwgMTU3MCwgMCwgMjgzNSwgMCwgMTA2MjQsIDQzNjIzLCAxMTA3MiwgMTI3MTkxLCAwLCAwLCAxMjYwNiwgNzg0MzMsIAorICAgIDI4MjUsIDAsIDEwODI1LCA4MDc5LCAyODIxLCA0MTA0NiwgOTIzMjcsIDczNjUsIDk4Mzc0NCwgMTIwNTkzLCAxMzA3MSwgMCwgCisgICAgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgMCwgNjQ3MDMsIAorICAgIDExOTE5MSwgNDIzMDgsIDcxODEsIDAsIDQxMzMyLCAwLCAxMjMzMywgMCwgMTY2OCwgMCwgMCwgMCwgMTE4NywgOTgzMzc3LCAKKyAgICA0MjYyOCwgNzg1NzUsIDAsIDEyODc3NywgMCwgMzI0MCwgMTI4NTE4LCAxMjE5NCwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCAKKyAgICA4MTY2LCAwLCAwLCAwLCA3NDUzNSwgMTYyMywgNjUyOTcsIDEyODg1NiwgNTcxLCAwLCA0OTE4LCAwLCA1Mjg4LCAxMjcyOTUsIAorICAgIDg5MTYsIDY1MDQ4LCAxOTA5LCA4ODY0LCAwLCAwLCAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCAxMjczMDAsIDkyMjk2LCAKKyAgICA0MjM3LCA5MjU3NiwgMTAzNSwgNjU4MTUsIDAsIDc4ODEsIDcwMSwgNjU5MzYsIDM0ODksIDAsIDAsIDEyMDc1MSwgMTE0MDMsIAorICAgIDAsIDAsIDEyNzE0NiwgMzc5NiwgNjgwMCwgMCwgMzk5NCwgMTE0MjEsIDAsIDE5NTA3NiwgMCwgOTgzOTEzLCAwLCAwLCAKICAgICA2NDg1NywgMTI4MTA1LCAyODU1LCAxMjc4MjgsIDY2MzA4LCA0MTYyMSwgNjgyMTQsIDEyNzI4MywgMTI3ODE3LCAxMDY1NCwgCiAgICAgMCwgMTE5MjI2LCAxMjE2NCwgMzI0NiwgNzkwNiwgNDM5NzIsIDY1ODQ3LCA3MTgyLCAwLCAxMzAyNCwgMTk0ODIyLCAKLSAgICA3NDI3MCwgMTI4Mjg5LCAwLCAwLCAwLCAxNDk2LCA3NDcsIDAsIDk0MiwgMjM3OCwgNDMxMzYsIDEyNzkwNSwgODQ2NiwgMCwgCi0gICAgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgMTE2MTcsIDAsIDAsIDExNDA5LCA2ODM3MywgNjM4MiwgMCwgNjQ2MzQsIAotICAgIDEyODI3OSwgMCwgMTE2MTIsIDAsIDY3NjAwLCAyMzc0LCAwLCA4NDc1LCAxMTYwOSwgNjYzMTMsIDAsIDAsIDUyODYsIAotICAgIDExOTI5NywgMCwgMCwgNjQ5MjUsIDEyMDI4MywgMTk0NTg0LCAxMTg5ODIsIDE5NDU4MywgNzcwNSwgMTE5NDIsIDExMzA1LCAKLSAgICAxOTQ1ODEsIDMzMDksIDAsIDAsIDAsIDAsIDY4MDIsIDAsIDQxNjUzLCAxMjgwLCAxMjQxLCA3MTY4LCAxMjA5NiwgMCwgCi0gICAgNjY2MTUsIDQyNTY1LCA0MTY1MSwgMCwgMCwgMCwgNDE2NTAsIDY2NTA3LCA2NjQ3MCwgMCwgMTI5MTQsIDQxNDkxLCAKLSAgICA2NjAxMCwgMTE5NTUyLCA2MDc4LCA5OTU0LCAwLCAxNDc1LCAwLCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgCi0gICAgMCwgMCwgMzI1NiwgMTI4NjQwLCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAwLCAKLSAgICAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCAwLCAwLCAzNjM1LCAKLSAgICA2NDMzNywgMCwgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgNjU2MTMsIAotICAgIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgMCwgCi0gICAgMjAzNCwgOTI1NTEsIDEyMDgwNSwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg4NjAsIDc4NTk2LCAwLCAzNjQ5LCAKLSAgICAxMzE0OSwgNDIxNDUsIDQyNzk4LCAzNjM0LCAxMjAyOTEsIDExODkyNywgNjc2NzcsIDEyMDEyNCwgNzg2NiwgMCwgMTE0MDIsIAotICAgIDQyMTQ2LCAxMjAxMzQsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIAotICAgIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCA0MTY4MCwgMCwgCi0gICAgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgMCwgMTI5ODksIDY2NDc0LCAKLSAgICA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDE5NDU2MywgMTA4MTgsIDEyODIwNywgOTk1MywgMCwgNzg0MjEsIDExOTQsIAotICAgIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCAKLSAgICA0Mjc1MiwgMTE5MDI1LCAwLCA2Nzg3NSwgMTIwMzAxLCAzNDk1LCA2NjY0OCwgMTk0NzY4LCAwLCA2ODM2NCwgMCwgNDg5MSwgCi0gICAgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDAsIDE5NDYzMywgNzE5OSwgNjQ5NTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQyNjg1LCA0MjY3OSwgMTkzLCAwLCAwLCAwLCA0MjY2NywgMCwgNTI3MSwgOTIzMTgsIDkyNTE3LCAxMTg4ODIsIAotICAgIDEzNjIsIDEzMjk3LCAwLCAxMjgwOTQsIDAsIDAsIDczNzg5LCAwLCA2NjU4LCA0NDI2LCAwLCA5MjYyOCwgMCwgOTIzMTksIAotICAgIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCAwLCAyNDE2LCAzMzEwLCA0MjcwMywgMCwgMzc5LCAwLCAxMjc5NzcsIDAsIDAsIAotICAgIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDAsIDAsIDAsIDEyNzc2MywgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgCi0gICAgODUxNSwgODY4OCwgMTI4NjYsIDAsIDMyOTQsIDAsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCAKLSAgICA5MjQ1OCwgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgCi0gICAgMzIxNSwgMCwgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIAotICAgIDY2MzU0LCAxNTAxLCAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCAKLSAgICA3NDc2LCA3NDM5OSwgMCwgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgCi0gICAgOTI1NzEsIDAsIDAsIDEwNDE0LCAxMzAwMSwgODE0MSwgMCwgNDI1MzcsIDE1NTcsIDQzNTk0LCAxMjg2NDIsIDYzMzAsIAotICAgIDY4MDUsIDg2MzEsIDI1NDUsIDEyMDY3MiwgMTI3MTY2LCAwLCA3NDE5MCwgMCwgMCwgMCwgNDI3NjIsIDAsIDQyOTE0LCAKLSAgICAxNjUwLCAyNjIsIDE2MzcsIDAsIDc5MDEsIDMyMzgsIDEyODE3MywgNDE4NjEsIDAsIDAsIDY1MTU4LCAxMDg2MCwgMCwgCi0gICAgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDAsIDAsIDExOTgxMCwgNzE5NCwgNTI5MSwgCi0gICAgMCwgNDM2NjYsIDEzMTI5LCAwLCA5MDg0LCAwLCA4NzM3LCAwLCAxMjg4MSwgMCwgMTI5MDYsIDk2MzksIDc5MTIsIDI2MjAsIAotICAgIDAsIDAsIDAsIDAsIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAwLCAxMTg5OTYsIDExOTAwOSwgCi0gICAgMjg1MCwgODA4NCwgMCwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgMTE5ODQxLCA0MjA3MiwgCi0gICAgMTE5ODQzLCAxMTk4NDIsIDEwMzk4LCAwLCAwLCA4Mzc3LCAxMjcxMTYsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCAKLSAgICA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgCi0gICAgNDM1NDIsIDAsIDY0NTc4LCAwLCAzMjI4LCA2OTYzNiwgODc4MywgMCwgMTE5NjE0LCAyNzMxLCAwLCAwLCA3ODU4NSwgCi0gICAgNDEwMiwgNzY5NiwgNzM4NzgsIDAsIDAsIDc4NTg2LCA0MzMxNiwgNDE3NywgMTEyODMsIDkwODksIDAsIDczOTk2LCAwLCAKLSAgICA2NDUwMCwgNDM2NzQsIDAsIDY0OTQ3LCAxODU2LCAwLCAwLCA2Mzc5LCAwLCAwLCAwLCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDAsIAotICAgIDAsIDkyMzg5LCA3NDA3MiwgNTUyNjksIDAsIDAsIDAsIDIwMzMsIDc4NTc3LCA3ODU3NiwgMTk1MDI2LCA1NTI1NCwgNzc0MCwgCi0gICAgMCwgMCwgMCwgNzM5NjQsIDAsIDAsIDY3NjEyLCA2NTY3NCwgMCwgMCwgNDE2ODksIDAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgCi0gICAgMTE3OTAsIDc0MDE5LCAwLCAxMjgwNjYsIDEyODAzMSwgODU2MSwgNDU3MywgMCwgNTMyNiwgMCwgMTIwNjA1LCA3MjMwLCAKLSAgICA4MjU3LCAwLCA4Nzc4LCA0MTY4OCwgMCwgNjU3NzYsIDIwNzEsIDgzMTQsIDY0NTksIDAsIDc2MjgsIDY1MDkyLCA3MzkwMywgCi0gICAgNjY3MjEsIDExMzQyLCAxMjg1NjEsIDAsIDAsIDEyODIyNiwgMTI3MDAxLCAwLCAxMTgxMCwgMTMxNjQsIDEwNzIzLCA5NjcsIAotICAgIDAsIDAsIDExOTQ2LCAwLCAzMjU3LCAwLCAxMjMwNywgMTg0NSwgMCwgNDM1MjYsIDAsIDAsIDE4ODYsIDQyMzQyLCAxMDA4OSwgCi0gICAgODcwLCA3NjQ4LCAzNDk5LCA4NjA5LCA3NjUyLCA4NzYsIDg3MSwgODc3LCAwLCA4NzgsIDQyMDE1LCA4NzksIDQzNjkyLCAKLSAgICA0NTYzLCAwLCAwLCA3NTkxLCA2NTg4NywgODY3LCA5NTIwLCA4NzIsIDAsIDg2OCwgODczLCA3NjQyLCAwLCA4NjksIDg3NCwgCi0gICAgNzY0NCwgMCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDAsIDU0MjksIDAsIDY2MTgwLCAwLCA2NjE4MSwgCi0gICAgNjg0NTIsIDAsIDAsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgMTk0NjIyLCAxNTQ3LCA2NjE3NiwgNDIwMTIsIAotICAgIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgMCwgNjc2MzcsIDAsIDk2NzksIDc0MTIyLCAwLCAKLSAgICAwLCAwLCA2NjE5NCwgNDQxOCwgNjYxODQsIDQ2MjgsIDQyNDUsIDExOTY0OCwgMCwgMCwgMTg1MSwgMCwgMTI3MTg5LCAKLSAgICAxMTkwOCwgMCwgOTM2MCwgMTE4ODk3LCAwLCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgCi0gICAgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCAxMTk5NzQsIDAsIDAsIDEyMDYwNCwgMCwgMCwgMCwgMCwgMCwgMCwgNzQyNywgCi0gICAgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAwLCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCAwLCAwLCA3OTMsIAotICAgIDc0NDA0LCAwLCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgMTI4NTE5LCA4MjA4LCAwLCA0MTY5NSwgMTY0NywgMTE4ODc3LCAwLCAKLSAgICA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgOTE3NjIyLCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDkxNzYxOCwgMTIwNTk0LCAKLSAgICA3NDA4NiwgOTE3NjE1LCA5MTc2MTQsIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgCi0gICAgMTI1NCwgOTE3NjA1LCA5MTc2MDQsIDkxNzYwMywgOTE3NjAyLCA2NTIyOCwgNzgyMjEsIDAsIDAsIDI4NDAsIDAsIAotICAgIDExOTk4MiwgMCwgMCwgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAwLCAwLCAxMjk5MSwgMCwgMjY1MSwgMTI4NTI4LCAwLCAKLSAgICA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIAotICAgIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAKLSAgICAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKLSAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgCi0gICAgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIDAsIDQzMzcyLCA2NTk0NSwgMTI4ODM4LCAwLCAKLSAgICAxMTk1OTAsIDAsIDAsIDAsIDk4NywgNjkyNywgMTE1NzIsIDQyMjYxLCAxMTQ2NCwgMzM2NSwgOTk3MSwgMCwgMCwgCi0gICAgMTI4Mjk3LCAwLCAwLCAwLCAwLCAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIAotICAgIDQ2MjcsIDAsIDUyMDgsIDAsIDEyODg0MiwgMTAzMzIsIDUyMTgsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCAKLSAgICA3Mzg5NCwgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNzQwMzMsIDEwNTE2LCA3NzkwLCA1NTI4LCAwLCA0MjE0MCwgCi0gICAgMTIwMjgxLCAwLCAwLCA0MzU0NSwgOTg4NywgMCwgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAotICAgIDc4ODQsIDAsIDEyODU2NiwgOTE3OTg5LCAxMjg2NjYsIDIxMSwgMjUwOSwgMCwgMTIwNTczLCA2ODY3MiwgMzIyMCwgCi0gICAgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCA1ODUyLCAwLCAKLSAgICAwLCAxMjcyNTksIDE3MDgsIDAsIDAsIDI2MjMsIDExOTQzLCAwLCA2OTIyNiwgMCwgNDY5OCwgNjY1MDksIDEwNjYsIAotICAgIDExOTkyMSwgNDcwMSwgMCwgMTIwMjg1LCA3NDIyNSwgMTE5MTE0LCA4MjY3LCAwLCAxMjcyNjUsIDAsIDc1MTYsIDAsIAotICAgIDI2MjUsIDAsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCAwLCAwLCA0MzM4NCwgCi0gICAgMTI2NjAsIDAsIDAsIDAsIDc0ODUwLCA0MTA2OSwgMCwgMTI4MTU2LCAxMjA5OSwgNDMxMCwgMTAwMzIsIDYyNTIsIDcxMywgCi0gICAgNzk5MCwgMCwgMzk5MCwgMCwgMCwgNjYzNjgsIDUwMTcsIDY0OTU2LCA3MDcxLCAwLCAxMTkxNDQsIDEwMzAsIDExODgwMCwgCi0gICAgMCwgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIAotICAgIDk0LCAxODgwLCA3NDc2NiwgMCwgODkwOCwgMCwgMTI4NzA3LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgMCwgMCwgCi0gICAgNDEzMDcsIDg3MzIsIDEyMDMzOCwgMCwgMTc1NywgNjk2NCwgNDY5NiwgMCwgMCwgNjQ3ODUsIDczOTQsIDM2NDEsIDU0MTksIAotICAgIDEyODA1NSwgMCwgMTI3ODgzLCAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgODU2LCA3NDI5OSwgCi0gICAgOTM2LCAxMzI4OSwgMTI3NTIxLCA0MzE3MSwgMTQ1OSwgMCwgNjUyNDMsIDc4NjM4LCAxOTk1MywgMCwgMTUwNCwgMTE5MTA4LCAKLSAgICAwLCAxMjkxMywgNzQyMDYsIDc1MjksIDAsIDAsIDAsIDEyMDc4MiwgNDExMywgMCwgMjM3MiwgMzM2LCAwLCA3NTA5LCAKLSAgICAxMjE1MiwgMCwgNjgyLCA2NjQ1OCwgNDE1MDUsIDAsIDY0NzQzLCAxMDU5MywgMTcwMywgMCwgMCwgODAzMywgMCwgMCwgCi0gICAgOTgxMCwgMTI3MjY5LCAwLCAxMjk3MCwgMCwgNDIzNTEsIDEwMTA5LCAwLCAwLCAxOTQ2OTMsIDAsIDExOTI0NywgMCwgMCwgCi0gICAgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAwLCAKLSAgICAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDAsIAotICAgIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCAKLSAgICA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgMCwgMCwgMTI4MTM1LCA0MTAzNywgNDI2OTIsIDc3ODYsIDEyOTU5LCAKLSAgICA0MTAzOSwgMCwgMCwgNjgwLCA2Mjc0LCAxMjgyMDAsIDExODEsIDcwNTYsIDMxNzQsIDAsIDAsIDkyNjY4LCA2NTY2NSwgCi0gICAgMTI3Mzc1LCAwLCA2OTIwLCAwLCA5MjI5NSwgMCwgMTE4OTY1LCAwLCA2NDY0NCwgMTI2OTgxLCAwLCAwLCA0MTAyOCwgMCwgCi0gICAgNjIzMSwgMjYxMywgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCAwLCAwLCA0MDk4NywgNDY2NywgMCwgCi0gICAgMCwgODgyOCwgMCwgMCwgMTI0NiwgNDc0NiwgMCwgMCwgMTEwMjEsIDQ3NDksIDkyNjc1LCAwLCA5MjEsIDQ3NDQsIDAsIAotICAgIDEyNzAyLCAyNDIsIDAsIDE1NjYsIDgyMTcsIDAsIDY0NjUzLCA3ODM4NiwgMTI4MTIxLCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCAKLSAgICA1MzEzLCA5NTEsIDAsIDAsIDAsIDc2MDQsIDAsIDQwMDksIDEyNzgxNiwgMCwgMTIwNTYyLCAwLCAwLCA2NDg2MCwgCi0gICAgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgMCwgMCwgMTIwNTk2LCAxNjQ2LCA3Nzg5MCwgNjQ1MzQsIDczOTk1LCAKLSAgICAxMjA3MDUsIDAsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAKLSAgICAyOTc1LCA3NDQ0MiwgOTgyMiwgMCwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCA5MTc1NjIsIDAsIDMzOTksIAotICAgIDk4NTEsIDAsIDExOTA5LCA5MDU5LCAwLCA3Njg3LCAwLCA2Nzg5LCAwLCAwLCAwLCAwLCAwLCAwLCAxNzc3LCA5MTUxLCAKLSAgICAxMTM3LCA2OTc2NywgNzQ5LCA0MjM2NiwgMCwgNTM4NSwgMTI4NTc0LCAxMjgyMTgsIDAsIDAsIDU5ODksIDAsIDAsIAotICAgIDEyODA5MSwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgMCwgNTE5LCAwLCAxMTc0MCwgNTc2NiwgMCwgMCwgCi0gICAgMjYwMCwgODg0OCwgMTIwMTM4LCA0MTI5NywgMCwgMzY2NiwgNzQ0NzMsIDQxMzAwLCA3NDQ2OCwgNjUxNjAsIDAsIDY5Njg4LCAKLSAgICA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDAsIDAsIDY5NzY1LCAxMjA3NTAsIDI1MiwgMCwgNDEzMDIsIDAsIDAsIDAsIAotICAgIDY5NzYzLCAwLCAxMTcyOSwgODcxOSwgOTA2MCwgMCwgMTIwMTM5LCAxMDc2MSwgMCwgMCwgMCwgMTE4NzkyLCAxMTczNCwgMCwgCi0gICAgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCA3NzY0LCAwLCAKLSAgICAxMTA5NCwgMTIwODI1LCAwLCAwLCA0MjgyLCA4Mjk4LCAwLCAwLCAwLCAwLCAwLCA2NDQ0OSwgMCwgMTI3NTA5LCA2Mzg1NCwgCi0gICAgODQ1NiwgMCwgNzQ3ODMsIDY1NjcwLCAwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDAsIDAsIDAsIDAsIAotICAgIDEyMDc2NCwgMCwgMTAwMTksIDc0NzYyLCAwLCAzNDU4LCA0MzY1LCAwLCAwLCAzNjQ3LCAwLCAyNjAyLCAxMjgzNDEsIDAsIAotICAgIDE5NDcwNywgNDExMzUsIDAsIDAsIDAsIDY0NjMxLCAxNzIsIDQ5NzEsIDQxMjE5LCA0MTEzNywgMTg4OSwgNzIzOCwgNjU0NSwgCi0gICAgMCwgOTIxOTMsIDc1OTcsIDEwNTI4LCAwLCAwLCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCAwLCA0MzM2NiwgNDMzNjMsIAotICAgIDkwNjIsIDExOTI1MiwgMCwgMCwgMCwgNjQ0NzksIDkyMzIsIDkyNTk2LCAwLCAwLCAxOTQ3MTIsIDEwOTAwLCA0MTUzMSwgCi0gICAgMTI2MywgMzcyMCwgMTIwNDgsIDAsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgMCwgMTI3MzU0LCAKLSAgICAxMjczNDUsIDI5OSwgMCwgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIAotICAgIDY3ODY3LCAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgCi0gICAgNjUxMTQsIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAwLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCAKLSAgICA3MjA0LCAwLCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIAorICAgIDc0MjcwLCAxMjgyODksIDAsIDAsIDAsIDE0OTYsIDc0NywgMCwgOTQyLCAyMzc4LCA0MzEzNiwgMTI3OTA1LCA4NDY2LCAKKyAgICA5ODM1NzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCAwLCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDAsIAorICAgIDY0NjM0LCAxMjgyNzksIDAsIDExNjEyLCAwLCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIDExNjA5LCA2NjMxMywgMCwgMCwgCisgICAgNTI4NiwgMTE5Mjk3LCAwLCAwLCA2NDkyNSwgMTIwMjgzLCAxOTQ1ODQsIDExODk4MiwgMTk0NTgzLCA3NzA1LCAxMTk0MiwgCisgICAgMTEzMDUsIDE5NDU4MSwgMzMwOSwgMCwgMCwgMCwgMCwgNjgwMiwgMCwgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAKKyAgICAwLCA2NjYxNSwgNDI1NjUsIDQxNjUxLCAwLCAwLCAwLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCAwLCAxMjkxNCwgNDE0OTEsIAorICAgIDY2MDEwLCAxMTk1NTIsIDYwNzgsIDk5NTQsIDAsIDE0NzUsIDExOTI0NywgOTkzOCwgNjA4NCwgOTE3NTQ2LCA0MTA2NCwgCisgICAgNDEwNjIsIDAsIDAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA5MTc5MDYsIDg3MjcsIDAsIDY1ODc1LCAwLCAKKyAgICAwLCAxMjc3NjIsIDEwNTYyLCA3NDIxNSwgNDMwNjUsIDAsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCA5MDE1LCA3MTM1MSwgMCwgCisgICAgMzYzNSwgNjQzMzcsIDk4MzI3MywgMCwgMCwgNzE5NSwgMCwgMjAwNywgNjQ0MzEsIDAsIDAsIDAsIDAsIDYzNSwgMCwgMCwgCisgICAgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIDAsIDAsIDExOTIxOCwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgCisgICAgNDE3NiwgNzAwNTAsIDIwMzQsIDkyNTUxLCAxMjA4MDUsIDY1ODkxLCAxMjcwMzgsIDAsIDMxOCwgMjAzOCwgMTI4ODYwLCAKKyAgICA3ODU5NiwgMCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgMzYzNCwgMTIwMjkxLCAxMTg5MjcsIDY3Njc3LCAxMjAxMjQsIAorICAgIDc4NjYsIDAsIDExNDAyLCA0MjE0NiwgOTQwMzIsIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgCisgICAgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgMTI4MTg1LCAxMTU5LCAwLCA2OTcyOSwgMCwgMCwgNzE3OCwgMTk0NjMyLCAwLCAKKyAgICA0MTY4MCwgMCwgMTI4MjAzLCAxMTUzNCwgMTUxNCwgMTE2NjgsIDY3ODkxLCA5MzEzLCA3MDE1LCAwLCA2Nzg3NywgCisgICAgMTk0NTY3LCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIDEwODE4LCAxMjY2NDQsIAorICAgIDk5NTMsIDAsIDc4NDIxLCAxMTk0LCAzMjQyLCA5NzYxLCA5NTU1LCA4NTk4LCAxMjAyOTksIDYxNjksIDEyODcxLCAxNTUxLCAKKyAgICAyNzk4LCA2NTE3NiwgNDk1OCwgNDI3NTIsIDExOTAyNSwgMCwgNjc4NzUsIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDE5NDc2OCwgCisgICAgMCwgNjgzNjQsIDk4MzIyMiwgNDg5MSwgMCwgMTA2NDEsIDAsIDczNzQ2LCAwLCA2ODM1MiwgMCwgNzM3ODcsIDE5NDgyOSwgCisgICAgMTk0NjMzLCA3MTk5LCA2NDk1NSwgMCwgMCwgMCwgMCwgMCwgNDI2ODUsIDQyNjc5LCAxOTMsIDAsIDAsIDAsIDQyNjY3LCAwLCAKKyAgICA1MjcxLCA5MjMxOCwgOTI1MTcsIDExODg4MiwgMTM2MiwgMTMyOTcsIDAsIDEyODA5NCwgMCwgOTgzMzIzLCA3Mzc4OSwgMCwgCisgICAgNjY1OCwgNDQyNiwgMCwgOTI2MjgsIDk4MzgzMywgOTIzMTksIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCAwLCA5ODMzMjIsIAorICAgIDI0MTYsIDMzMTAsIDQyNzAzLCAwLCAzNzksIDAsIDQzNzU1LCAwLCAwLCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKKyAgICA0NTQ5LCAwLCAwLCA5ODMxNTQsIDEyNzc2MywgMTA4MDcsIDk1NTgsIDE5NDYxMywgMCwgODUxNSwgODY4OCwgMTI4NjYsIAorICAgIDY1MzA4LCAzMjk0LCA5ODMzMjQsIDg1MjksIDEyODEwMSwgNDMzODUsIDc1NjQsIDAsIDQzMzI5LCAwLCA5MjQ1OCwgCisgICAgNzM3NTcsIDY2NDU2LCA0MjM1OSwgMCwgMjAzMSwgMCwgNzIwMiwgMCwgMTI2NzYsIDQyNzI5LCA5MjE5OCwgMzIxNSwgMCwgCisgICAgNzcxMCwgMTYxMCwgNzM4MDEsIDAsIDAsIDY1NjgyLCAwLCAxMjA1MzcsIDY1OTI0LCA5OTc0LCAyMjgsIDY2MzU0LCAxNTAxLCAKKyAgICAwLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMCwgNjU3OTQsIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgCisgICAgMCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgMCwgMCwgODEwNCwgMCwgNzQ3NCwgNzc5NzksIDAsIDEyNjUwNywgCisgICAgMTA0MTQsIDEzMDAxLCA4MTQxLCAwLCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgCisgICAgMjU0NSwgNzAwNTIsIDEyNzE2NiwgMCwgNzQxOTAsIDAsIDAsIDk4Mzc3NywgNDI3NjIsIDAsIDQyOTE0LCAxNjUwLCAyNjIsIAorICAgIDE2MzcsIDAsIDc5MDEsIDMyMzgsIDEyODE3MywgNDE4NjEsIDAsIDEyODU4NSwgNjUxNTgsIDEwODYwLCA5NDA1OSwgCisgICAgNDM2NTgsIDc1MjcsIDAsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMCwgNjQ1ODgsIDkzOTg5LCAwLCAxMTk4MTAsIDcxOTQsIAorICAgIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMCwgOTA4NCwgMCwgODczNywgMCwgMTI4ODEsIDAsIDEyOTA2LCA5NjM5LCA3OTEyLCAKKyAgICAyNjIwLCAwLCAwLCAwLCA5ODM4NjYsIDE3OSwgNjU4OTYsIDAsIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCA5ODM4ODEsIAorICAgIDExODk5NiwgMTE5MDA5LCAyODUwLCA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgCisgICAgNzQ3NTQsIDExOTg0MSwgNDIwNzIsIDExOTg0MywgMTE5ODQyLCAxMDM5OCwgOTgzMDU2LCAwLCA4Mzc3LCAxMjcxMTYsIAorICAgIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCAxMTk4NTYsIDI5MiwgMTMwMDIsIAorICAgIDExOTg0NSwgMTE5ODQ0LCAzMjIxLCAxNzYzLCA5MjQ2MywgNDYxMiwgMTE5ODUxLCAxMTk4NTAsIDcyNTMsIDEyNzExMCwgCisgICAgNjgzOTEsIDAsIDEwNzgyLCAzNjM3LCAxMjk5NiwgNDM1NDIsIDAsIDY0NTc4LCA5ODM2NjYsIDMyMjgsIDY5NjM2LCA4NzgzLCAKKyAgICAwLCAxMTk2MTQsIDI3MzEsIDAsIDAsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMCwgMCwgNzg1ODYsIDQzMzE2LCAKKyAgICA0MTc3LCAxMTI4MywgOTA4OSwgMCwgNzM5OTYsIDk4MzE3MywgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgMCwgMCwgCisgICAgNjM3OSwgMCwgMCwgMCwgMzIwOCwgMTI5NzUsIDc0Nzc1LCAxMjczODAsIDk4MzkyMiwgOTIzODksIDc0MDcyLCA1NTI2OSwgCisgICAgMCwgMCwgOTgzNjc0LCAyMDMzLCA3ODU3NywgNzg1NzYsIDE5NTAyNiwgNTUyNTQsIDc3NDAsIDAsIDAsIDAsIDczOTY0LCAwLCAKKyAgICA5Mzk4OCwgNjc2MTIsIDY1Njc0LCAxMjgyNDQsIDk0MTEwLCA0MTY4OSwgMCwgNzQwMDYsIDY0OTA5LCA2NjQ2LCAxMTc5MCwgCisgICAgNzQwMTksIDAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAwLCA1MzI2LCAwLCAxMjA2MDUsIDcyMzAsIDgyNTcsIDAsIAorICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgMCwgNzYyOCwgNjUwOTIsIDczOTAzLCA2NjcyMSwgCisgICAgMTEzNDIsIDEyODU2MSwgMCwgMCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgOTgzOTQyLCAKKyAgICAxMjY0NjksIDExOTQ2LCAwLCAzMjU3LCAwLCAxMjMwNywgMTg0NSwgOTgzMTU3LCA0MzUyNiwgMCwgMCwgMTg4NiwgNDIzNDIsIAorICAgIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDg2MDksIDc2NTIsIDg3NiwgODcxLCA4NzcsIDAsIDg3OCwgNDIwMTUsIDg3OSwgCisgICAgNDM2OTIsIDQ1NjMsIDAsIDAsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgMTI2NjA3LCA4NjgsIDg3MywgNzY0MiwgCisgICAgMCwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCA3OTAsIDEyODMwMywgMCwgMCwgMCwgNjYxODIsIDk4MzI1MCwgCisgICAgNTQyOSwgMTk1MDU1LCA2NjE4MCwgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDk4MzI4MSwgOTgzMjQyLCA0MjA2NywgMCwgCisgICAgNTQzMywgMTA2NTcsIDc5MTEsIDE5NDYyMiwgMTU0NywgNjYxNzYsIDQyMDEyLCAxMjA1NzYsIDU0MjUsIDQ5NzcsIDk5OTksIAorICAgIDUzMTcsIDU0MjMsIDQ2MTEsIDAsIDY3NjM3LCAwLCA5Njc5LCA3NDEyMiwgMCwgMCwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKKyAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDAsIDE4NTEsIDAsIDEyNzE4OSwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgCisgICAgOTgzMjcwLCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCA5MjcxNCwgMCwgOTIzMjEsIDQzMzE4LCAwLCA4ODA5LCAKKyAgICA2OTg4MSwgMCwgOTgzMTQyLCAxMjA2MDQsIDk4MzA1MiwgOTgzODczLCAwLCA5ODMyNjIsIDAsIDAsIDc0MjcsIDk5NTgsIAorICAgIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTk0OTY4LCAyNDMzLCAwLCAxMTk2MjIsIDMzNTIsIDc0MzYzLCA5ODM4NzYsIDAsIAorICAgIDc5MywgNzQ0MDQsIDAsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAxMjg1MTksIDgyMDgsIDAsIDQxNjk1LCAxNjQ3LCAKKyAgICAxMTg4NzcsIDAsIDc4MzcsIDkxNzYyNSwgODE4LCA1MzM3LCAxOTQ2MjgsIDkxNzYyMSwgNDEzNzYsIDExOTk3OCwgCisgICAgMTI2NTc2LCAxMjA1OTQsIDc0MDg2LCA5MTc2MTUsIDkxNzYxNCwgOTE3NjEzLCAxMDk3MywgNjYzNTksIDEzNzIsIAorICAgIDEyNzE3MiwgOTE3NjA4LCA0OTY5LCAxMjU0LCA5MTc2MDUsIDkxNzYwNCwgOTM5NjcsIDkxNzYwMiwgNjUyMjgsIDc4MjIxLCAKKyAgICAxMjY2MTIsIDAsIDI4NDAsIDAsIDExOTk4MiwgOTgzOTMwLCAwLCAzMjQ1LCA5MDY4LCA2ODE5NCwgNjQ3MjUsIDAsIDAsIAorICAgIDEyOTkxLCAwLCAyNjUxLCA2ODAxNiwgOTgzMjU3LCA5MTc2MTEsIDEyNzAyNiwgMTI4ODgzLCAwLCAwLCA0MzY0OCwgCisgICAgMTIwODEyLCAwLCA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIAorICAgIDc0NTIsIDMyODUsIDEyODc3OSwgMTI3ODIxLCAxMTk5ODgsIDY1NjEwLCAyMzkxLCAwLCA5MjI0OCwgNjcxLCAyNTAsIAorICAgIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIAorICAgIDYyOCwgMzkwNSwgNzM4MTAsIDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAwLCAwLCA0NjA1LCAxMjgxNzQsIAorICAgIDk4MzE5MiwgNDMzNzIsIDY1OTQ1LCAxMjg4MzgsIDAsIDExOTU5MCwgMCwgMCwgMCwgOTg3LCA2OTI3LCAxMTU3MiwgCisgICAgNDIyNjEsIDExNDY0LCAzMzY1LCA5OTcxLCAwLCAwLCAxMjgyOTcsIDAsIDAsIDAsIDAsIDExMzM0LCA0MzMyNiwgMTI2MDksIAorICAgIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgOTgzODgzLCA1MjA4LCAwLCAxMjg4NDIsIDEwMzMyLCA1MjE4LCAKKyAgICA3OTc2LCA5MTU2LCAwLCAzMjQ0LCA1NTI5LCA2OTY0NywgNzM4OTQsIDEyODg1MiwgNTQzMiwgNjQ5NjUsIDU1MjcsIAorICAgIDc0MDMzLCAxMDUxNiwgNzc5MCwgNTUyOCwgMCwgNDIxNDAsIDEyMDI4MSwgMCwgMCwgNDM1NDUsIDk4ODcsIDAsIDQwMDAsIAorICAgIDc0MjksIDc0MjgsIDY2NSwgNzQyNCwgMzIwNiwgMTIwMjc4LCA3ODg0LCAwLCAxMjg1NjYsIDkxNzk4OSwgMTI4NjY2LCAKKyAgICAyMTEsIDI1MDksIDEyODg1OCwgMTIwNTczLCA2ODY3MiwgMzIyMCwgNDIyMzUsIDAsIDEwNjkwLCA4OTUxLCA1MjE0LCAKKyAgICA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCA1ODUyLCAwLCAwLCAxMjcyNTksIDE3MDgsIDAsIDk4MzE2NSwgCisgICAgMjYyMywgMTE5NDMsIDAsIDY5MjI2LCAwLCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NjcsIAorICAgIDEyMDI4NSwgNzQyMjUsIDk0MTExLCA4MjY3LCAwLCAxMjcyNjUsIDAsIDc1MTYsIDAsIDI2MjUsIDk4Mzk2OCwgODAzNCwgCisgICAgNzQzMDksIDAsIDM2MzEsIDEwOTU1LCA3ODUwLCAxMjAyOTMsIDg0MTYsIDAsIDAsIDAsIDQzMzg0LCAxMjY2MCwgMCwgMCwgCisgICAgMCwgNzQ4NTAsIDQxMDY5LCAwLCAxMjgxNTYsIDEyMDk5LCA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCAwLCAzOTkwLCAKKyAgICAwLCA5ODMyNTQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgMTE5MTQ0LCAxMDMwLCAxMTg4MDAsIDk4MzEyMCwgCisgICAgOTUxMywgNDEwNTksIDkzNTcsIDAsIDE3NzMsIDAsIDEyMDM1MCwgMCwgNjMzOSwgNzc0NSwgOTg0NCwgMCwgNjQ2NTAsIDk0LCAKKyAgICAxODgwLCA3NDc2NiwgOTgzODI5LCA4OTA4LCAwLCAxMjg3MDcsIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCAwLCAKKyAgICAxMjY1NzIsIDQxMzA3LCA4NzMyLCAxMjAzMzgsIDAsIDE3NTcsIDY5NjQsIDQ2OTYsIDAsIDEyMDMzNSwgNjQ3ODUsIDczOTQsIAorICAgIDM2NDEsIDU0MTksIDEyODA1NSwgMCwgMTI3ODgzLCAwLCAxMjAzNDQsIDQzOTg4LCAwLCA4NjEwLCA0MzA2MiwgNzU5MiwgCisgICAgODU2LCA3NDI5OSwgOTM2LCAxMzI4OSwgNjk4OTQsIDQzMTcxLCAxNDU5LCAwLCA2NTI0MywgNzg2MzgsIDE5OTUzLCAwLCAKKyAgICAxNTA0LCA3MDA2NCwgMCwgMTI5MTMsIDc0MjA2LCA3NTI5LCAwLCAxMjg2OTksIDk4Mzk0OCwgMTIwNzgyLCA0MTEzLCAwLCAKKyAgICAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAwLCA2ODIsIDY2NDU4LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKKyAgICAwLCA5ODM5NDYsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDAsIDEyOTcwLCAwLCA0MjM1MSwgMTAxMDksIAorICAgIDkxNzYyMywgMCwgMTk0NjkzLCAwLCA5MjY5MCwgMCwgMCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgMCwgCisgICAgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAwLCAwLCA3NDIzOSwgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgCisgICAgMjA5MCwgMCwgOTM1MywgNzExNywgMjA3NywgNzc4ODYsIDAsIDEwNDk4LCAyMDgzLCA3Nzg4OCwgMCwgMCwgMTE5MjM2LCAKKyAgICA2MzQsIDAsIDAsIDAsIDY5Nzc5LCA0MTY1LCA4NzQ2LCAwLCA5NjU0LCAxMjg1NiwgNjkyNCwgMCwgNzA2NiwgOTgzNzEwLCAKKyAgICAwLCAxMjgxMzUsIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDQxMDM5LCAxMjc0ODMsIDAsIDY4MCwgMjMwMiwgCisgICAgMTI4MjAwLCAxMTgxLCA3MDU2LCAzMTc0LCAxMjY1MTYsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMjY1MDYsIDY5MjAsIAorICAgIDAsIDkyMjk1LCAwLCAxMTg5NjUsIDAsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCAwLCA0MTAyOCwgMCwgNjIzMSwgMjYxMywgCisgICAgNjUzMDIsIDQwOTg5LCAwLCAxOTQ2OTYsIDAsIDQyNzYwLCAwLCA5ODM1NjYsIDAsIDQwOTg3LCA0NjY3LCAwLCA5ODM5MjMsIAorICAgIDg4MjgsIDAsIDAsIDEyNDYsIDQ3NDYsIDAsIDAsIDExMDIxLCA0NzQ5LCA5MjY3NSwgMCwgOTIxLCA0NzQ0LCAwLCAxMjcwMiwgCisgICAgMjQyLCAwLCAxNTY2LCA4MjE3LCAwLCA2NDY1MywgNzgzODYsIDEyODEyMSwgNzQwMzYsIDc0NTA1LCA0MzI3NCwgNTMxMywgCisgICAgOTUxLCAwLCAwLCA5ODM4NTgsIDc2MDQsIDk4MzI4MiwgNDAwOSwgMTI3ODE2LCA5ODM3MDEsIDEyMDU2MiwgMCwgOTgzNzExLCAKKyAgICA2NDg2MCwgMTE5MTM4LCAxMTkwNjksIDAsIDEyNzM3MCwgNDA0OCwgOTgzNTk4LCAwLCA3MDAyNCwgMTY0NiwgNzc4OTAsIAorICAgIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAwLCAxMTk4OTAsIDI1NzksIDExOTkwNSwgMzE3NywgMTEzNTcsIDkwOTksIDQxMDcsIAorICAgIDM0NDEsIDExOTg5NCwgMjk3NSwgNzQ0NDIsIDk4MjIsIDk4MzkyNiwgNTUyMjAsIDEwMDg0LCA3Mzk0MywgMTE4ODQwLCAwLCAKKyAgICA5MTc1NjIsIDE5NDYxMCwgMzM5OSwgOTg1MSwgOTgzNzA4LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgMCwgNjc4OSwgMCwgMCwgCisgICAgMCwgNzEzNjcsIDAsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY5NzY3LCA3NDksIDQyMzY2LCAwLCA1Mzg1LCAxMjg1NzQsIAorICAgIDEyODIxOCwgMCwgMCwgNTk4OSwgMCwgMCwgMTI4MDkxLCAwLCA0MTY4NSwgNjkyMjMsIDAsIDk3NjksIDQxNjg0LCAKKyAgICA5ODMyMTQsIDUxOSwgMCwgMTE3NDAsIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDEyMDEzOCwgNDEyOTcsIDAsIDM2NjYsIAorICAgIDc0NDczLCA0MTMwMCwgNzQ0NjgsIDY1MTYwLCAwLCA2OTY4OCwgNjk3NzEsIDc0NDc5LCAwLCA2NTU4LCAwLCAwLCA2OTc2NSwgCisgICAgMTIwNzUwLCAyNTIsIDAsIDQxMzAyLCAwLCAwLCAwLCA2OTc2MywgMCwgMTE3MjksIDg3MTksIDkwNjAsIDAsIDEyMDEzOSwgCisgICAgMTA3NjEsIDAsIDAsIDAsIDExODc5MiwgMTE3MzQsIDk4MzIyMSwgMTE3MzAsIDAsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCAKKyAgICA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCAwLCAwLCA3NzY0LCA5ODM3MDUsIDExMDk0LCAxMjA4MjUsIDAsIDAsIDQyODIsIAorICAgIDgyOTgsIDAsIDAsIDAsIDAsIDAsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCAwLCA3NDc4MywgNjU2NzAsIDAsIAorICAgIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgMCwgMCwgMCwgMCwgMTIwNzY0LCAwLCAxMDAxOSwgNzQ3NjIsIDAsIAorICAgIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MDMsIDM2NDcsIDAsIDI2MDIsIDEyODM0MSwgMCwgMTk0NzA3LCA0MTEzNSwgMCwgMCwgCisgICAgMCwgNjQ2MzEsIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDkyMTkzLCA3NTk3LCAKKyAgICAxMDUyOCwgMCwgMCwgMzczMiwgNzM5MTAsIDE5NDU4OCwgNTM0NCwgMCwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIDAsIAorICAgIDAsIDAsIDY0NDc5LCA5MjMyLCA5MjU5NiwgMCwgMCwgMTk0NzEyLCAxMDkwMCwgNDE1MzEsIDEyNjMsIDM3MjAsIDEyMDQ4LCAKKyAgICAwLCA2NDI5MiwgNDE1MjQsIDcyMjcsIDExOTYzNSwgNjA5OSwgNDE1MzQsIDAsIDEyNzM1NCwgMTI3MzQ1LCAyOTksIAorICAgIDkxNzk1NywgODUyNSwgMTI3MzQ3LCAzNTI0LCA5MTc1NjUsIDg4MzEsIDEyNzM0OSwgOTI1NjQsIDMwNzUsIDY3ODY3LCAKKyAgICAxMjczNTIsIDAsIDY2MzYyLCAwLCA2NDM1MywgMCwgMCwgNTg0NSwgMCwgMCwgMCwgMjU4MSwgODIwMCwgNjUxMTQsIAorICAgIDY4NDYwLCAwLCA0MzI4MywgNTU1MSwgMCwgMTIwNzM1LCAwLCA2MzQwLCAxMTg4NTUsIDAsIDc4MTM0LCA4NjgwLCA3MjA0LCAKKyAgICA3MDA2NSwgMjU4OCwgMjkxNCwgNzAxMSwgNTUyODEsIDAsIDI0NzEsIDE5NDYzMSwgMjg4MywgMjc0OSwgMTE5NTYzLCAKICAgICA3Mzc3NCwgMTA5MTMsIDAsIDAsIDg2NjYsIDY3NSwgNDI0OTMsIDAsIDQzNTcxLCAwLCA2MjE5LCAwLCA5OTgwLCA0MTIzMiwgCi0gICAgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCAxMjczNjksIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgCi0gICAgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgMCwgMCwgMCwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgCi0gICAgMCwgMCwgNjQ2NzQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIDQzOTgzLCA3NDUwNywgMCwgCi0gICAgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIDExOTMyLCAKLSAgICA3MzcyOCwgMzIxNCwgMTIwNDYxLCAxMjA0NjgsIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCAKLSAgICAxMjczMjYsIDEyMDQ2MCwgNzQyNSwgMzIwNSwgMCwgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDc4NzMzLCA2NTQ1OSwgCi0gICAgMjYwNiwgNzg3MzAsIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIDExOTY2MSwgMCwgMCwgMCwgMTIwNzM3LCAwLCAKLSAgICAwLCAwLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAwLCA2NTY5NSwgMCwgMzcsIDcwNjgsIDAsIDEyMDQ4MCwgMTIwNDc5LCAKLSAgICAzMjA5LCAxMjA0NzcsIDAsIDEwNjM4LCA5NzY4LCAxMjA0ODEsIDAsIDAsIDAsIDAsIDAsIDAsIDY1NTEwLCAwLCAwLCAKLSAgICA1MjMzLCAwLCA2NDc5MiwgMCwgMCwgMCwgMCwgNzA2MCwgOTg0NywgMTIwMTQ0LCAxNjg1LCA1OTUsIDAsIDczOTcxLCAKLSAgICAxMjkyLCA4OTQwLCA3MzgwLCAxMTA4OCwgMCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgMCwgMCwgMCwgMzI0MywgOTAxNCwgCi0gICAgNTYwNiwgMCwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgNzQzOTEsIDY1NDcsIDAsIDgyMDMsIDc4NDg4LCAwLCA4NDU4LCAKLSAgICA2NTIxMSwgODQ5NSwgMTE5OTA0LCAwLCA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCAwLCA4MTkzLCA1NTI3OSwgCi0gICAgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCAKLSAgICA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCA2ODY1MCwgMCwgMTgzMiwgNTYwNCwgCi0gICAgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgMCwgMTE3ODcsIDM3NDUsIDAsIDAsIDQyODg4LCA2NTcxMiwgMCwgMzg2OSwgCi0gICAgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgCi0gICAgNTcyNywgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAKLSAgICAxMjA3NDksIDExNDIzLCAwLCAxMTk4NjEsIDAsIDQzNDY1LCAwLCAxMjgyNjcsIDY1NTksIDY0NTU3LCAwLCAwLCAxMjA2NDgsIAotICAgIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDAsIDAsIDQzMzc3LCA5MjI4MiwgMCwgMTQ3OCwgOTc4MywgMTE4MjUsIDI2MDcsIAotICAgIDY0NzQwLCAwLCA3NzM5LCA3NDU0MywgMCwgMCwgMCwgNjEzMiwgMCwgNjM3NjUsIDAsIDAsIDQxMTQ0LCAwLCA5MjQzOCwgCi0gICAgNDM1MzcsIDY3NjEsIDEwMDkzLCA0MzY5LCA5MTc3OTEsIDAsIDAsIDg4MjAsIDM5NDcsIDAsIDAsIDExNTE1LCA1MjYsIDAsIAotICAgIDQxMjk1LCAxOTQ2MDMsIDkxNzc4NSwgMTk0OTMyLCAwLCA3Njg4LCA5MTc3ODYsIDc2ODYsIDgyODgsIDExODE1LCAwLCAwLCAKLSAgICAwLCAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIAotICAgIDExNzk0LCA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIDkzMzUsIDEyODUwLCAxMTk4NzAsIAotICAgIDY1NTMsIDcwNTUsIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAxMjk5MCwgMTE2MCwgNDIwODQsIAotICAgIDExOTY1MCwgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDAsIAotICAgIDQxMjE2LCA3ODQ0LCAyNjE2LCAxMTkxOTAsIDY4NDYxLCA2NTIzNCwgMCwgMTMwNzYsIDMxMzUsIDAsIDc4MTQzLCAKLSAgICAxMTkxMzksIDMxNDIsIDkyNDUxLCAwLCAxMDgxOSwgMTE5NTgwLCAxMDE4MywgMCwgMjYwOCwgMTQ3MCwgNzM5NjcsIDAsIAotICAgIDYyMjcsIDAsIDAsIDY5NzQxLCAwLCA2MTYzLCAwLCAwLCAxMjczMTQsIDAsIDAsIDg2MDMsIDAsIDExOTg2NiwgMzMwNiwgCi0gICAgMTA4NzYsIDQzMzkyLCAxMTk1NzMsIDEyNzkzMSwgNTc1MSwgMCwgNjIyMiwgMCwgMCwgMTIwODYsIDc0MDMsIDE2MDAsIAotICAgIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMCwgMCwgMjU3MCwgNzAyMSwgMCwgMCwgCi0gICAgNDMxMTAsIDAsIDEyMzQsIDY1NDAsIDY5NzQsIDAsIDAsIDAsIDUwMDIsIDAsIDQxMjg2LCAwLCAxMjcwMTksIDAsIDQzNTg1LCAKLSAgICAwLCA2NTUxLCAwLCAxMjgyMjksIDAsIDQxMjg5LCAwLCAxOTQ2MDIsIDAsIDg5NzcsIDYwMiwgMTIwODE0LCAwLCAxMjg3NzgsIAotICAgIDEyODY2MSwgMCwgMCwgNDEyNzksIDAsIDAsIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgMCwgMTI3MjcsIDAsIDAsIAotICAgIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCA3ODMxLCAwLCAxOTQ1NzEsIDAsIAotICAgIDczOTE1LCA4MDc2LCA0MzA0OCwgODI5MCwgODI5MSwgNDMwNTEsIDkyNTcwLCAwLCAyNTk2LCA0MzU4NCwgMCwgMTMxMTMsIAotICAgIDAsIDEyNzc1NywgMjM5MywgNzA1OCwgOTA4NywgNzQwNjcsIDY4NjczLCA0MTU3NCwgNzgzMzcsIDAsIDc0MDU4LCA2Mzc2LCAKLSAgICAwLCAwLCAwLCAwLCA5ODU0LCAxMjc3NDgsIDY0Njk2LCAwLCAxMjgyMjAsIDAsIDY5OTQsIDAsIDE3MjAsIDAsIDAsIDAsIAotICAgIDY1MjksIDcwNjMsIDAsIDM3NTEsIDkxMjAsIDAsIDAsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIDY1NTcsIAotICAgIDEyNDMwLCA4MTM3LCAwLCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgMCwgNjEzNiwgCi0gICAgOTE3NjA5LCA2NTY3NywgODY4MiwgNDEyMzUsIDkyNTk1LCA0MjA0NSwgOTgwNCwgMCwgNDMyLCAzNTk1LCAwLCA2NTQzNywgCi0gICAgMCwgNzQ0NTUsIDQyMzk5LCAwLCAwLCAxMjgyNzQsIDAsIDExOTY1OCwgMCwgMCwgMCwgNzc4OTQsIDg3OTcsIDAsIDkwNTIsIAotICAgIDY0ODg4LCA3MTY3LCAyMzU2LCA5NSwgNzQ3ODQsIDEwNTgwLCAwLCA0MjI4NiwgMCwgNjQ2NDAsIDAsIDExOTEwNCwgMCwgCi0gICAgNzQxMzcsIDAsIDEwMDYzLCAxMjY1MiwgMTIxOTksIDkyNDgwLCAwLCAyNTY2LCAxMTk3MSwgMCwgMCwgMTA2NSwgMCwgMCwgCi0gICAgNDM0MDAsIDI1NzYsIDY2Njk2LCAwLCAwLCA0MzYwNCwgMCwgMCwgNzQwODIsIDUxNCwgNzQ1MDIsIDAsIDI5MjEsIDQzMjE1LCAKLSAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDAsIDE5NDk0NCwgNzQ1ODAsIDQzMzk4LCAyNTgwLCAwLCA0MTM0MSwgNDEyMjMsIDY1NjQsIAotICAgIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCAwLCAwLCAzNzMzLCAxMTM0NiwgMCwgMTIwNTQsIDAsIDc0MDk4LCA0MjgyNywgMCwgCi0gICAgMTMwOTEsIDAsIDAsIDAsIDkxNzkxNSwgMCwgMTI3MDI1LCAwLCA3NDgyMSwgMCwgMCwgMTE5MDQyLCAwLCAxMjc4NjUsIAotICAgIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgCi0gICAgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMCwgMCwgMCwgMCwgNjQ0OTYsIDc0MTA5LCAwLCA5OTE1LCAwLCAwLCAKLSAgICA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgMCwgNzA2NywgCi0gICAgNjgyMjEsIDAsIDAsIDEyNzE3MSwgMCwgMCwgMTI3Nzk3LCA5MDI5LCA0MzU0MywgMTE5MzE1LCAyMzUzLCA2MzA4LCAwLCAKLSAgICA3NDc5MiwgMjYxMSwgMTE5MTg2LCAwLCAwLCAwLCA0MzY2NCwgOTIzOTksIDY2NjI3LCAwLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAotICAgIDc4MTE2LCA2NTIzMywgMCwgNDEyMjQsIDQxMDE3LCAwLCAzNzQ3LCAxMDUyMiwgMCwgMCwgMTY5MSwgNDEyMjYsIDAsIAotICAgIDEyMTA3LCA0NDAwMiwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAKLSAgICAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAKLSAgICAwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCAxMjgwMzksIAotICAgIDcxMjMsIDAsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgCi0gICAgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgMTkxLCA3NDExOSwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIAorICAgIDEwOTI4LCAwLCA0MTE1MywgNDEyMjksIDExODk2NywgMCwgMzczOCwgOTQwMTYsIDAsIDEyNzExLCAzMTgxLCA2NjIxMiwgCisgICAgNzQyODksIDY4NDcyLCA0Mjg1NywgODI2MiwgOTgzMzcxLCAwLCA5ODMyMjAsIDAsIDQyMzQ3LCAxMjA5MiwgOTYxNSwgCisgICAgNzIzNCwgNzQwNDcsIDk4MzA4OCwgMCwgNDM3NDQsIDAsIDAsIDczODQ2LCAyOTM0LCAxMjcyMiwgMTIwNzYyLCA5MjIsIAorICAgIDQzOTgzLCA3NDUwNywgOTgzMTI2LCA3NDQ2MSwgMzIxOCwgMTIwNDcxLCA3NDI5MCwgMTIwNDY5LCA2NDU2MiwgMTIwNDc1LCAKKyAgICA4NTY5LCAxMTQwNCwgMTE5MzIsIDczNzI4LCAzMjE0LCAxMjA0NjEsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCAKKyAgICA3ODcyOSwgMTkwMSwgNzg3MjcsIDEyNzMyNiwgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgNzg3MzcsIDc4NzM2LCAKKyAgICA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAwLCAxMTQ5NiwgMTE3MywgMCwgNDEyNzIsIAorICAgIDExOTY2MSwgMCwgMCwgOTgzMzEzLCAxMjA3MzcsIDAsIDk4Mzk2MiwgOTgzMzEyLCAzNzgsIDI2MTAsIDAsIDY1MDc5LCAKKyAgICA5ODMzMTcsIDY1Njk1LCAxMjY1NTksIDM3LCA3MDY4LCAwLCAxMjA0ODAsIDEyMDQ3OSwgMzIwOSwgMTIwNDc3LCAwLCAKKyAgICAxMDYzOCwgOTc2OCwgNjk5NTIsIDExOTkwOSwgOTgzMzkxLCAwLCAwLCAwLCAwLCA2NTUxMCwgMCwgMCwgNTIzMywgCisgICAgOTgzMzI3LCA2NDc5MiwgOTgzMzI2LCAwLCAxMjY2MzMsIDAsIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAwLCAKKyAgICA3Mzk3MSwgMTI5MiwgODk0MCwgNzM4MCwgMTEwODgsIDAsIDEwMDA0LCAxMjY5OTcsIDAsIDY1NDEsIDAsIDAsIDAsIDMyNDMsIAorICAgIDkwMTQsIDU2MDYsIDAsIDUzOCwgNjQ2MjAsIDU2MDIsIDg0NjcsIDc0MzkxLCA2NTQ3LCAxMjgxMzIsIDgyMDMsIDc4NDg4LCAKKyAgICA5ODMwOTAsIDg0NTgsIDY1MjExLCA4NDk1LCAxMTk5MDQsIDAsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIAorICAgIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgMCwgNzA2NSwgNzQxNTUsIDQzNDYsIDAsIDczNzk4LCA1MDQsIDAsIAorICAgIDkyNDE0LCA4OTgyLCAwLCAwLCAwLCA3ODIsIDAsIDEwODgzLCAwLCAxOTQ4NTIsIDczMiwgMzczNywgMTI3MjUzLCAxNTQ4LCAKKyAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDAsIDExNzg3LCAzNzQ1LCAwLCAKKyAgICAwLCA0Mjg4OCwgNjU3MTIsIDk4MzI5NiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEyNzUzOSwgMTc4MywgNjg2NDgsIDU3MjgsIDAsIAorICAgIDAsIDAsIDExOTE4LCA2NjU2NywgNTcyNCwgMCwgNTcyNywgNzg1MjEsIDAsIDAsIDc2NCwgMCwgMTI4MTE2LCA0MzUzMSwgMCwgCisgICAgOTAzMywgMCwgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCAwLCAxMTk4NjEsIDcxMzQ0LCA0MzQ2NSwgMCwgCisgICAgMTI4MjY3LCA2NTU5LCA2NDU1NywgNzEzNDgsIDkyNjQ5LCAxMjA2NDgsIDQzMDE5LCA0MzQ3NywgMTAyMzgsIDc0NDkxLCAwLCAKKyAgICA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDAsIDc3MzksIDc0NTQzLCAwLCAKKyAgICAwLCAwLCA2MTMyLCAwLCA2Mzc2NSwgMCwgNzAwNTgsIDQxMTQ0LCAwLCA5MjQzOCwgNDM1MzcsIDY3NjEsIDEwMDkzLCAKKyAgICA0MzY5LCA5MTc3OTEsIDAsIDk4MzE0OCwgODgyMCwgMzk0NywgMCwgMCwgMTE1MTUsIDUyNiwgMTI4MTAzLCA0MTI5NSwgCisgICAgMTk0NjAzLCA5MTc3ODUsIDE5NDkzMiwgMCwgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgMCwgMCwgOTgzMzc0LCAKKyAgICAxNTQzLCAzNzEzLCA0MTIyMSwgMTI0MjMsIDQyMjgxLCA5MTc3ODgsIDc0MDI0LCAxMjI5MywgMCwgNjQzNTcsIDExNzk0LCAKKyAgICA0MjA4MiwgMCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDAsIDkzMzUsIDEyODUwLCAxMTk4NzAsIDY1NTMsIDcwNTUsIAorICAgIDAsIDgyNzcsIDAsIDAsIDU0NzUsIDc0Nzk1LCA2NzgwLCAwLCAwLCAxMjk5MCwgMTE2MCwgNDIwODQsIDExOTY1MCwgCisgICAgNDEyMTcsIDExOTY2MCwgMTAwMTgsIDM2MCwgMCwgMCwgNjgxNzYsIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgCisgICAgNDEyMTYsIDc4NDQsIDI2MTYsIDExOTE5MCwgNjg0NjEsIDY1MjM0LCA5ODMyODYsIDEzMDc2LCAzMTM1LCA5ODMyNzksIAorICAgIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDAsIDI2MDgsIDE0NzAsIAorICAgIDczOTY3LCA5NDAwOCwgNjIyNywgMCwgMTI3MTczLCA2OTc0MSwgOTgzNTgyLCA2MTYzLCA5ODM1NTgsIDAsIDEyNzMxNCwgMCwgCisgICAgMCwgODYwMywgMCwgMTE5ODY2LCAzMzA2LCAxMDg3NiwgNDMzOTIsIDExOTU3MywgMTI3OTMxLCA1NzUxLCAwLCA2MjIyLCAwLCAKKyAgICAwLCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCAwLCA4ODgyLCAwLCAKKyAgICAwLCAyNTcwLCA3MDIxLCAwLCAwLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgMCwgMCwgOTgzMjA5LCA1MDAyLCAwLCAKKyAgICA0MTI4NiwgNjk5NDYsIDEyNzAxOSwgMCwgNDM1ODUsIDAsIDY1NTEsIDk4Mzk1MywgMTI4MjI5LCAwLCA0MTI4OSwgMCwgCisgICAgMTk0NjAyLCAwLCA4OTc3LCA2MDIsIDEyMDgxNCwgMCwgMTI4Nzc4LCAxMjg2NjEsIDAsIDk4MzM2NywgNDEyNzksIDAsIDAsIAorICAgIDAsIDExMDgxLCA0MzYxNSwgMCwgMCwgMCwgOTgzNjEyLCAxMjcyNywgMCwgMCwgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAKKyAgICAwLCA5NjMzLCAxMDg4NiwgNDM1OTIsIDc4MzEsIDk4MzgyMCwgMTk0NTcxLCAwLCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIAorICAgIDgyOTEsIDQzMDUxLCA5MjU3MCwgMCwgMjU5NiwgNDM1ODQsIDAsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIAorICAgIDkwODcsIDc0MDY3LCA2ODY3MywgNDE1NzQsIDc4MzM3LCAwLCA3NDA1OCwgNjM3NiwgMCwgMCwgMCwgMCwgOTg1NCwgCisgICAgMTI3NzQ4LCA2NDY5NiwgMCwgMTI4MjIwLCAwLCA2OTk0LCAwLCAxNzIwLCAwLCAwLCAwLCA2NTI5LCA3MDYzLCA5ODMxODIsIAorICAgIDM3NTEsIDkxMjAsIDk4MzQ3NywgMCwgMTc5OCwgNzA5LCAwLCAxMzU0LCAxODc2LCAxMzE1MiwgNjU1NywgMTI0MzAsIAorICAgIDgxMzcsIDk0MDk4LCA5MjY0MiwgMCwgMCwgMjQ1LCAxMjgwOTcsIDExNDU2LCA0MTIzMywgNzA3MCwgMCwgOTQwNDYsIAorICAgIDYxMzYsIDkxNzYwOSwgNjU2NzcsIDg2ODIsIDQxMjM1LCA5MjU5NSwgNDIwNDUsIDk4MDQsIDExODk2MywgNDMyLCAzNTk1LCAKKyAgICAxOTQ5NDUsIDY1NDM3LCAwLCA3NDQ1NSwgNDIzOTksIDAsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAwLCAwLCAwLCA3Nzg5NCwgCisgICAgODc5NywgMCwgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDAsIDQyMjg2LCAwLCA2NDY0MCwgCisgICAgMCwgOTQxMDksIDAsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgOTI0ODAsIDAsIDI1NjYsIDExOTcxLCAKKyAgICA5ODM3MjgsIDAsIDEwNjUsIDAsIDAsIDQzNDAwLCAyNTc2LCA2NjY5NiwgOTM5OTksIDAsIDQzNjA0LCAwLCAwLCA3NDA4MiwgCisgICAgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDc0NTgwLCAKKyAgICA0MzM5OCwgMjU4MCwgOTgzODAxLCA0MTM0MSwgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAwLCA1MjkzLCA3MDAyMCwgMCwgCisgICAgMzczMywgMTEzNDYsIDAsIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDAsIDEzMDkxLCAwLCAwLCAwLCA5MTc5MTUsIDAsIAorICAgIDEyNzAyNSwgMCwgNzQ4MjEsIDAsIDk4MzcyNCwgMTE5MDQyLCAwLCAxMjc4NjUsIDEzMDkwLCA2NjY0MywgMCwgMTI3MCwgCisgICAgMTEzMiwgNDIzNjAsIDAsIDc0MDk2LCA2NjY1NSwgNDI1NjksIDEyNzgyNCwgMCwgNjQ3NjEsIDAsIDQxMDIxLCA4NTEwLCAKKyAgICA0MjQzMiwgMCwgMCwgMTk0NzgyLCAwLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCAwLCA5ODMyMTYsIDcwNjEsIAorICAgIDQxMzM2LCAzODU0LCA2OTcwMCwgMTMxNDEsIDY4NDEzLCA0MzQwMSwgNDIzMTksIDEzMDgyLCAwLCA3MDY3LCA2ODIyMSwgMCwgCisgICAgMTI3MzgzLCAxMjcxNzEsIDAsIDAsIDEyNzc5NywgOTAyOSwgNDM1NDMsIDExOTMxNSwgMjM1MywgNjMwOCwgMCwgNzQ3OTIsIAorICAgIDI2MTEsIDExOTE4NiwgMCwgMCwgMCwgNDM2NjQsIDkyMzk5LCA2NjYyNywgMCwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgCisgICAgNjUyMzMsIDAsIDQxMjI0LCA0MTAxNywgMCwgMzc0NywgMTA1MjIsIDAsIDAsIDE2OTEsIDQxMjI2LCAwLCAxMjEwNywgCisgICAgNzEwMCwgMTA5MDUsIDY1MDEwLCAxOTQ5ODYsIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIDAsIDAsIDkyNjQ0LCAxMzEyMSwgCisgICAgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDAsIDAsIDAsIDEyNzE5MywgNjU4MTYsIDY4MTExLCAwLCAKKyAgICAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgMTE4Nzg0LCA2NjM2NSwgMCwgNDIyMzQsIDEyNjQ4LCA3ODExMCwgNzEyMywgCisgICAgNzAwMzgsIDU3ODUsIDkxOTgsIDk3NjQsIDQxMzE2LCA2NTg3NywgNzM4MywgMTMyMzAsIDQxMjk5LCAwLCAwLCA2ODM2NSwgCisgICAgMTI4MjU4LCAwLCAwLCAwLCAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIAogICAgIDY0ODUwLCA0MTA3MiwgNDE1NzgsIDAsIDQxNTc3LCAwLCAxMDAwMiwgMCwgNjUzMywgNzM4MDIsIDQxNTcwLCAwLCA2ODMsIAogICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCAwLCAxMjkwMSwgNDMwNTgsIDAsIDM0MywgNzEyOSwgNDI2ODAsIDQxMzYwLCA3ODE1NCwgMCwgCi0gICAgNDc0MywgMCwgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDkyNTE0LCAKLSAgICAwLCAzOTY0LCA2NTkyLCAwLCAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDAsIDE3NzgsIDM5NTYsIDAsIAotICAgIDQyMDcwLCA2NTYzLCA0MzA3NSwgOTAxOCwgMCwgMCwgMTIwNjcsIDQxMzEyLCAwLCA1NTQ3LCA3NDUzMSwgMTI3OTY5LCAwLCAKLSAgICA4MTc1LCAwLCAyODQsIDgxMDgsIDkzNCwgMCwgNzQwMDEsIDE3MywgNjY0NjAsIDcxNzQsIDkyNzAzLCAxMTg4MjIsIDE3NTAsIAotICAgIDAsIDQzOTQsIDY4MzY4LCAxODA3LCAwLCA5MjI5OCwgMCwgNTg4OSwgMCwgNzE4MCwgMCwgMTE5MTQ1LCAwLCA5MTc1NTgsIAotICAgIDQyNDcxLCA2OTgyLCAxNzIxLCA0NDAyMiwgNzg5MSwgNDIyNDMsIDQyMTYwLCAyNTgzLCA0NTEyLCAxMTkzNjAsIDY1MjMwLCAKLSAgICAxMjgxMDksIDAsIDAsIDM4NTUsIDAsIDAsIDAsIDAsIDc0Mjk1LCAwLCAwLCA5MjQxNiwgMzk3NSwgMCwgNzQwODcsIDAsIAotICAgIDEyNjcyLCAzNzk4LCAyNzAzLCAwLCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCA0MTA5NSwgMzk2MiwgMCwgMjkzMiwgCi0gICAgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMCwgMCwgNDE4NTEsIDEyODIzMCwgCi0gICAgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIDEyODAzMiwgMCwgNDI1MzEsIDAsIAotICAgIDE1MTAsIDAsIDgyNTYsIDAsIDExMzkzLCAwLCA4ODc5LCAxMjgwNzUsIDkyNDc0LCA4NzcwLCAwLCAwLCA3ODM3NywgMTkxMCwgCi0gICAgODY3MSwgNzgzNzQsIDQyODMsIDAsIDEyNzExNywgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDcsIDAsIDAsIDAsIAotICAgIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgMCwgMCwgCi0gICAgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgNzM5NiwgNzExNiwgMCwgCi0gICAgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDAsIDAsIDkyMzQ3LCAwLCA0MTM1MCwgOTEyOSwgMCwgMCwgMCwgMCwgOTI0ODksIDAsIAotICAgIDEwNDgxLCAwLCAxMjc0ODYsIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDAsIDAsIDAsIDkyMjAwLCAwLCAwLCA2NzY0LCAKLSAgICAxMjc0ODcsIDAsIDAsIDAsIDAsIDY1MjAzLCAxMTM5MiwgMTE5MDk4LCAxMTkzNTksIDAsIDMyMTAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEyNzk3MCwgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI4MjQ0LCAKLSAgICAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgCi0gICAgMTIwNTM1LCAwLCA4NjMwLCAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCAwLCAwLCAKLSAgICAwLCAwLCA2NDI5MywgNjgwOTgsIDI2MzUsIDAsIDAsIDAsIDAsIDAsIDc4MzUsIDAsIDAsIDE5NDk4OCwgOTIyODUsIAotICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCAwLCAwLCAwLCAwLCA0MDExLCA5MTc2MTYsIAotICAgIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgMCwgNTYwMCwgMzkwMywgMTI3MDgzLCAxMDQ0NywgNTU5OCwgMTIwNywgCi0gICAgMTIwNTIxLCA2NjY4OSwgMzUwMSwgNDI1ODIsIDQzNjAwLCAxOTQ3ODAsIDAsIDExMjQsIDU1OTcsIDE5NDc3OCwgMTk0NzcyLCAKLSAgICA5MzIxLCAwLCAwLCAwLCAwLCAxNzE5LCA2ODM1NiwgNjgzNTQsIDk2NzEsIDExMjUsIDQzOTksIDEyNzQ3OSwgOTE3NjEwLCAKLSAgICAwLCA3NjMxLCA1NDg4LCA3MTI4LCAxMjA1MzIsIDAsIDU0OTEsIDAsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgCi0gICAgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMCwgNzEyMiwgMCwgNDM5MCwgNDU0LCA0MTM5NywgMCwgCi0gICAgOTg3NSwgNzU5MywgMTk0NzkyLCA5MjI3NCwgMTE4OTEzLCA3MjA3LCAwLCA2NTkwMSwgMjM5NCwgMjU3NSwgMCwgMzc0NiwgCi0gICAgMTEwMTYsIDY1NzUyLCAxMjAwMzcsIDAsIDQzNDIzLCAxMjg2ODMsIDExOTg5LCAwLCAwLCAwLCAwLCAwLCA4MjQ5LCAKLSAgICAxMjgxNzIsIDAsIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgNTEzLCAwLCA2NTg2LCA4NjU2LCAwLCAxMjcwMDIsIAotICAgIDY1MDA4LCAwLCAxOTQ3ODQsIDE5NDk4OSwgMTk0Nzk1LCAwLCA5MjUxNSwgNjg0NzUsIDAsIDAsIDAsIDc4NjM3LCAxMjY0NywgCi0gICAgMCwgMTI4MDQzLCAwLCAxMDM2LCAwLCA5MjQxOSwgMTcyMywgMTI4MDU2LCAwLCAwLCA0MTU3OSwgMjQ0NCwgMCwgMTA3MDUsIAotICAgIDczODc2LCAwLCA3NDQ4NiwgMCwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgCi0gICAgNjg0MzcsIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIAotICAgIDExOTA3LCAxOTUwMDAsIDU2OTAsIDkyMjU1LCAwLCAwLCA0MzE4MSwgMTMwOTUsIDAsIDEyNzg1NywgNjQ0OTgsIDAsIAotICAgIDk1MDYsIDY5NzgsIDE5NDk5MywgNzc5OTIsIDAsIDAsIDE5NDk5MiwgMCwgMTI3ODQ1LCAxMTIyLCAzMTcsIDAsIDAsIDAsIAotICAgIDAsIDE5MjAsIDAsIDEwMTczLCA4MjcsIDAsIDAsIDc4Mzc4LCAxMjAxMjYsIDUyMjMsIDEzMDQsIDAsIDExOTU2NCwgNTIyNiwgCi0gICAgMTI2MDIsIDAsIDAsIDkzMjksIDc3NTgsIDkyMzksIDQxMTczLCA1MjI0LCA1NDg3LCAxMjIyLCA1NjkyLCA0MTcyNSwgCisgICAgNDc0MywgMCwgMCwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMTkzMjIsIDAsIDM3MzksIDYyNjMsIDcxMzQ5LCAKKyAgICAwLCAzOTY0LCA2NTkyLCAwLCAxMjg2OTMsIDY2MDQwLCAwLCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMCwgCisgICAgNDIwNzAsIDY1NjMsIDQzMDc1LCA5MDE4LCA5NDAwNiwgOTgzMzg4LCAxMjA2NywgNDEzMTIsIDAsIDU1NDcsIDc0NTMxLCAKKyAgICAxMjc5NjksIDAsIDgxNzUsIDAsIDI4NCwgODEwOCwgOTM0LCAwLCA3NDAwMSwgMTczLCA2NjQ2MCwgNzE3NCwgOTI3MDMsIAorICAgIDExODgyMiwgMTc1MCwgMCwgNDM5NCwgNjgzNjgsIDE4MDcsIDk4Mzg3OSwgOTIyOTgsIDAsIDU4ODksIDAsIDcxODAsIDAsIAorICAgIDExOTE0NSwgMCwgOTE3NTU4LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgCisgICAgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCAwLCAwLCAzODU1LCAwLCAwLCAwLCAwLCA3NDI5NSwgMCwgMCwgOTI0MTYsIAorICAgIDM5NzUsIDAsIDc0MDg3LCAwLCAxMjY3MiwgMzc5OCwgMjcwMywgOTgzNTk5LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCAwLCAKKyAgICA0MTA5NSwgMzk2MiwgMCwgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDAsIDAsIDczOTk0LCA3Mzk5MiwgMTQ2OCwgCisgICAgMCwgMCwgNDE4NTEsIDEyODIzMCwgNDE4NDYsIDAsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIDMyMjQsIDAsIAorICAgIDEyODAzMiwgMCwgNDI1MzEsIDExOTEwOCwgMTUxMCwgMCwgODI1NiwgMCwgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgCisgICAgOTI0NzQsIDg3NzAsIDAsIDAsIDc4Mzc3LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgMCwgMTI3MTE3LCA2ODM2MSwgCisgICAgNzgzMTgsIDI2NTQsIDc4OTMsIDE5NTAwNywgMCwgMCwgMCwgNjUxMDYsIDQyNzYxLCAxMjg1NywgNDU4MSwgODQxMSwgCisgICAgNzgzNzIsIDc4MzcxLCA3ODM3MCwgNzgzNjksIDc4MzY4LCAwLCAwLCAwLCAxNzMzLCA0MzkyLCAyNTY4LCAxMDc4NiwgCisgICAgNjk2NjEsIDAsIDgxODQsIDQxNDg2LCAwLCA3Mzk2LCA3MTE2LCAwLCA2OTc4OCwgMCwgNzE4NSwgNzk2NSwgMCwgMCwgCisgICAgOTIzNDcsIDk4MzA4NywgNDEzNTAsIDkxMjksIDAsIDAsIDIyOTQsIDAsIDkyNDg5LCAwLCAxMDQ4MSwgMCwgNzAwMjIsIAorICAgIDcxNzEsIDAsIDM0MCwgOTI0OTgsIDkzOTcyLCAwLCAwLCA5MjIwMCwgMCwgMCwgNjc2NCwgMTI3NDg3LCAwLCAwLCAwLCAwLCAKKyAgICA2NTIwMywgMTEzOTIsIDExOTA5OCwgMTE5MzU5LCAwLCAzMjEwLCAwLCAwLCAxMTg3OTUsIDAsIDAsIDEyNzk3MCwgCisgICAgOTE3NjE5LCAwLCAwLCAxMDA0MywgMCwgMTE4NiwgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI2NjQyLCAzNjc1LCA1MjA3LCAKKyAgICA2NTA2MiwgNTIxMywgMTk0NzY5LCAyNjE3LCA0MTM0OCwgNDE1NjgsIDEyODgwMywgMzI1MywgMTIwNTM1LCAwLCA4NjMwLCAKKyAgICAxMjg1NDQsIDAsIDU1OTYsIDU1NDUsIDcyODgsIDI1ODYsIDY0ODg3LCAwLCA1MjE3LCA3MTMzNiwgMCwgMCwgMCwgNjQyOTMsIAorICAgIDY4MDk4LCAyNjM1LCAwLCAwLCA5ODM4MzcsIDAsIDk4MzYzMiwgNzgzNSwgNzAwNDAsIDAsIDE5NDk4OCwgOTIyODUsIAorICAgIDY0NTU4LCAxMjcxMjIsIDAsIDEyNzEyMSwgMCwgMTI3OTEzLCAwLCA1Nzg0LCA5ODMxMDIsIDAsIDAsIDcwMDMzLCA0MDExLCAKKyAgICA5MTc2MTYsIDY4MTAxLCAwLCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDg4LCA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCAKKyAgICA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIDE5NDc4MCwgMCwgMTEyNCwgNTU5NywgCisgICAgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ3NiwgOTgzNDczLCA5ODM0NzQsIDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgCisgICAgOTY3MSwgMTEyNSwgNDM5OSwgMTI3NDc5LCA5MTc2MTAsIDk4MzQ4MCwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCAKKyAgICA1NDkxLCAwLCA4OTM3LCA0MzA0NCwgMjYwNCwgNzQxODcsIDU0OTAsIDQzMDQ2LCA1NDg5LCA3MjEyLCAxMTc2OCwgNDMwNDMsIAorICAgIDYzMDAsIDAsIDcxMjIsIDAsIDQzOTAsIDQ1NCwgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgCisgICAgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIDAsIDM3NDYsIDExMDE2LCA2NTc1MiwgMTIwMDM3LCAwLCA0MzQyMywgCisgICAgMTI4NjgzLCAxMTk4OSwgMCwgMCwgMCwgMCwgMCwgODI0OSwgMTI4MTcyLCAwLCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAorICAgIDUxMywgMCwgNjU4NiwgODY1NiwgMCwgMTIwNzEwLCA2NTAwOCwgMCwgMTk0Nzg0LCAxOTQ5ODksIDE5NDc5NSwgOTgzNDY1LCAKKyAgICA5MjUxNSwgNjg0NzUsIDkzOTczLCAwLCAwLCA3ODYzNywgMTI2NDcsIDAsIDEyODA0MywgNjk4OTMsIDEwMzYsIDk4MzQ2OSwgCisgICAgOTI0MTksIDE3MjMsIDEyODA1NiwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAwLCAxMDcwNSwgNzM4NzYsIDk4MzQ2MSwgCisgICAgNzQ0ODYsIDk4MzQ1OSwgNzQwLCAxMTkyMjIsIDE5NDk3OCwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNjg0MzcsIAorICAgIDc4MTQwLCA3ODEzOSwgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNTUyNjMsIDExOTA3LCAKKyAgICAxOTUwMDAsIDU2OTAsIDkyMjU1LCA5Mzk5MiwgMCwgNDMxODEsIDEzMDk1LCAwLCAxMjc4NTcsIDY0NDk4LCAwLCA5NTA2LCAKKyAgICA2OTc4LCAxOTQ5OTMsIDc3OTkyLCAwLCAwLCAxOTQ5OTIsIDAsIDEyNzg0NSwgMTEyMiwgMzE3LCAwLCAwLCAwLCAwLCAKKyAgICAxOTIwLCAwLCAxMDE3MywgODI3LCAwLCAwLCA3ODM3OCwgMTIwMTI2LCA1MjIzLCAxMzA0LCAwLCAxMTk1NjQsIDUyMjYsIAorICAgIDEyNjAyLCA5NDA0NCwgMCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCAKICAgICA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgMCwgNzQ2MDQsIDU2OTEsIDI4NywgODY2LCAyMzMsIAotICAgIDEyNzQ5MCwgMCwgNDI4MTYsIDAsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCA0MTE3NSwgMCwgCi0gICAgMCwgMCwgNTI5NiwgMCwgNDI0OTIsIDQzNDAyLCA5MjQ2NiwgMzMwMiwgMCwgMCwgNjUxNiwgNjUxNSwgNjUxNCwgNjUxMywgCi0gICAgNjUxMiwgMCwgNzg1NiwgODY5MCwgMCwgMCwgMTIxMjIsIDExOTYwMiwgNDM5NzYsIDAsIDE3ODUsIDkyNTA3LCA2ODYyMiwgCi0gICAgNjUxNTMsIDE5NDgxMCwgNTEzOCwgMCwgMCwgMCwgMCwgNDU0MCwgNDExODEsIDAsIDYyMDAsIDAsIDUxMzQsIDAsIDMyMiwgCi0gICAgNDY0MywgNTEzMiwgMCwgNjM4OSwgMCwgNTE0MywgMCwgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIAotICAgIDEyMDYwMSwgMCwgNDIwNjAsIDAsIDAsIDE5NDgwNCwgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgCi0gICAgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgCi0gICAgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIAotICAgIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIAotICAgIDE3NDksIDc4ODkwLCAxMjcwNzEsIDAsIDMyMCwgMCwgODY0NywgMCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCAKLSAgICA5OTI1LCAxMjczNTYsIDEyNzM1NSwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCAKLSAgICA1NDE4LCAxMjczNTAsIDMzNTEsIDEyNzAwNiwgMTI3MzUxLCAxMDYxMCwgNTQxNCwgMzA2NCwgNjIxMiwgNDI4NiwgNTQyMSwgCi0gICAgMTI3MzQ0LCA5NTU0LCAwLCAxMjc3OTQsIDEyNzEwOSwgNjY1MywgMTI4ODExLCAwLCA2NDUxMCwgNjIxMywgMTI4ODUsIDAsIAotICAgIDExOTA0NSwgNjQ3MjAsIDAsIDEyMDc1OSwgNzM3NDEsIDEyNjAzLCA3MTMxLCAxMTQzMCwgNDU2NiwgNzg0MywgOTMxNywgCi0gICAgMzgwMSwgMTAzNDIsIDEwNDA2LCAwLCAxMTkyNTksIDQyNTc2LCAwLCA1MjAwLCAwLCA5MTc5NDgsIDAsIDkxODMsIAotICAgIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIDUxOTgsIDg3ODYsIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIAotICAgIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCAKLSAgICA0MzUsIDAsIDEyMDE0LCAxMDM3NywgODA5MywgOTA3OSwgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMCwgNjQ0MzAsIDUzODMsIAotICAgIDEwMjk0LCAxMDMyNiwgMTI4MTc4LCA1NzM4LCAwLCAzMzM2LCA3ODM1NSwgNTM2MSwgMzYyMywgNDExNTksIDAsIDY4MTEyLCAKLSAgICA3ODcyLCA4NTgxLCAwLCAxMjYwLCAzMTQ5LCA1MzU5LCAwLCAwLCA3OTE0LCA1MzU3LCA5MjE3MCwgMTI4NjU5LCAyNjI0LCAKLSAgICA1MzY0LCAwLCAxMTQzMSwgMTIwMDMwLCA5MTAxLCAxMTA1OCwgNzgyODgsIDAsIDc4MjkzLCA0MjI3MSwgNzgyODksIAotICAgIDQyOTE3LCAxMjA3OTMsIDAsIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4Mzg1LCA3ODM4NCwgNzgzODMsIDc4MzgyLCAKLSAgICA3ODM4MSwgNzgzODAsIDc4Mzc5LCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgNzQ1ODEsIAotICAgIDEyMDYzMiwgMCwgMCwgNDE4ODksIDkyNDUzLCAwLCAxMTYxLCA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDAsIDAsIAotICAgIDczODE5LCAxMjA1ODgsIDUwMTIsIDc3OTEyLCA0MTM2MiwgMCwgNzgyOTYsIDExOTIxLCAwLCAxMTc2OSwgMCwgNjg2MDksIAotICAgIDQxMzY0LCAwLCA3NDIyOCwgNDEzNTIsIDQxMzYxLCAwLCA0MTM2NiwgMCwgMzM1NiwgMCwgOTE3LCA2ODQyMiwgMTE5OTE1LCAKLSAgICA3MTM0LCA4MTk5LCA3ODM4OSwgMTE5OTE3LCA2NzcsIDExOTkxNiwgMCwgMTE5OTMyLCAxMjcxNjksIDAsIDAsIDAsIDMzNDksIAotICAgIDc0MTI1LCA3MDIyLCA4OTI3LCA0NzM5LCAwLCA1ODAyLCAwLCA4NjE1LCAwLCAwLCA0OTEsIDAsIDEwMTkwLCAxMjA2OTgsIAotICAgIDY1ODM3LCAxMjg4MjAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIDEwODUyLCAwLCAKLSAgICAwLCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAxMDQ2LCA3MTI0LCAwLCAwLCA1ODE1LCA1MTcxLCAKLSAgICA2NTUzOSwgNjg2MTIsIDY5MzIsIDc4MzE1LCA0MjM5NCwgNDE4NzgsIDc0ODQ5LCAxMjA2MjEsIDAsIDUxNjksIDExOTM1LCAKLSAgICAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIDEyMDgwNCwgNTE3NiwgODkwNSwgNDEzNiwgNDg3MSwgNzgyODcsIDAsIDk4MzMsIAotICAgIDAsIDAsIDExMjgsIDY1OTIwLCAwLCA5NzExLCA3MDU3LCA5NDA4LCA5NDA5LCA5NDEwLCA5NDExLCAzNjYyLCA5NDEzLCAKLSAgICAzMzc4LCA5NDE1LCA5NDE2LCA5NDE3LCA5NDE4LCA2MzIwLCA5NDIwLCA5NDIxLCA1ODk3LCA5NDIzLCA1MTY1LCA1MTI2LCAKLSAgICA0MTM4NSwgMCwgNDEzODksIDkxNzkzOCwgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgMzUwNywgCi0gICAgOTQwNiwgNzYyOSwgMCwgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgMTA2MjcsIDQxMTMwLCAKLSAgICA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgNDMzMiwgNjQ4MjUsIAotICAgIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgNTc0LCA5MTc5MjIsIAotICAgIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIDQxOTAsIDc3ODM0LCAKLSAgICA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAxMDg1OSwgNjU4NjcsIAotICAgIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAyMDYwLCAwLCA3MTExLCAKLSAgICAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIDExOTA3NiwgMCwgOTg2MiwgCi0gICAgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgODAyMSwgMCwgNzEyNSwgCi0gICAgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAKLSAgICAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIDQyODc0LCA4NTUwLCA0Mjg3NiwgCi0gICAgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDAsIDQzNjcsIDAsIDAsIDU0NzgsIDU5MDQsIDU1OTQsIDAsIAotICAgIDc0MTUwLCA3MjkxLCA1NTkwLCA3Nzg0OSwgMTMwNjcsIDExODkwOSwgMTIwMzcyLCAwLCA5NzMxLCA2OTczMSwgNjQ2MzMsIAotICAgIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIAotICAgIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCAKLSAgICA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIDU1MjUyLCAwLCAxNDQyLCAwLCA1ODk0LCAKLSAgICAwLCAwLCA0MTE3MSwgOTI1MTEsIDc0MzEzLCAwLCAxMzE2MiwgMCwgMzMzNCwgMCwgMTE4ODAzLCA3Nzg4MSwgNjYwMjIsIDAsIAotICAgIDAsIDE2NTEsIDAsIDg4NjEsIDAsIDAsIDExNDIsIDAsIDgyNzEsIDAsIDAsIDAsIDEyOTAzLCAwLCA0MDAyLCA0MzYyNiwgCi0gICAgMTA0NDIsIDEwNjc2LCAzMzQ0LCAwLCAwLCAxMjkyMCwgMTk0NTYwLCAwLCAwLCA2NjY0MiwgMTI3NywgMCwgNzg3MSwgMCwgCi0gICAgMCwgNzg4NTMsIDAsIDc4ODU0LCAxMjAzNjAsIDAsIDExNzg0LCAwLCA3ODAxMiwgNDcwMCwgNjYzNjYsIDc4ODU4LCAKLSAgICAxMjAzNTksIDExMDEyLCAwLCA3ODg1NiwgOTI0MDAsIDc3ODc5LCA0OTczLCA4Nzg0LCA3Nzg3NywgNzQ4MDQsIDc3ODc0LCAKLSAgICA3Nzg2OSwgNzc4NzEsIDQyNDQwLCAwLCA0MzExOCwgMCwgNDIzNjQsIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAKLSAgICAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgMzM3MiwgMCwgNjI0NywgNDMxMTcsIAotICAgIDc0NTI2LCA3MTIxLCA3NDE2NiwgMCwgMTIwMzU1LCA5MjUzNywgMCwgMCwgMTk1MDM0LCAwLCAwLCAwLCA3NDIxNywgMzM1NCwgCi0gICAgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCAxMjc5ODMsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAKLSAgICAwLCAwLCAwLCAwLCAxMTYwMywgMCwgMCwgNjU4OSwgMTI4NTg4LCAxOTQ2NzksIDAsIDAsIDAsIDAsIDAsIDQyNTcyLCAKLSAgICAxMjgyNjQsIDEwNjMwLCA3NDgyNywgMTk2MywgMTE4ODg5LCAxMjc5NzgsIDExNjU0LCAwLCA3NTUwLCAxMDY4NiwgNTkwMywgCi0gICAgMCwgNzgwMDksIDQxMzI5LCA5NjYyLCA5MTc5MzcsIDY0Njk4LCAzMzY2LCAxMDM5OSwgMCwgMCwgMTEwMTMsIDEyNzkyNywgCi0gICAgMTI4MzAwLCAwLCA3ODYyMSwgMTk0NjcyLCA2OTI1LCAwLCAwLCA5MTc5MjksIDAsIDExNTY4LCAwLCA0MzM2NywgNjQ1NzksIAorICAgIDEyNzQ5MCwgOTgzNDMzLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA3NDc5NywgMCwgODgzMCwgNjU2OCwgNDIzMDAsIDEwNTI0LCAKKyAgICA0MTE3NSwgOTgzNDQwLCA5ODM0MzcsIDk4MzQzOCwgNTI5NiwgOTgzNDM2LCA0MjQ5MiwgNDM0MDIsIDkyNDY2LCAzMzAyLCAKKyAgICAwLCAwLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCAwLCAwLCAxMjEyMiwgMTE5NjAyLCAKKyAgICA0Mzk3NiwgMCwgMTc4NSwgNjk5MjUsIDY4NjIyLCA2NTE1MywgMTk0ODEwLCA1MTM4LCAwLCAwLCAxMTg4NjksIDAsIDQ1NDAsIAorICAgIDQxMTgxLCAwLCA2MjAwLCAwLCA1MTM0LCAwLCAzMjIsIDQ2NDMsIDUxMzIsIDAsIDYzODksIDEyODUzMywgNTE0MywgMCwgCisgICAgODc5MCwgMTI4Njk0LCAwLCAxOTQ4MDIsIDAsIDg4NjksIDY5OTE2LCAwLCA0MjA2MCwgNzEzMjYsIDk2NDgsIDE5NDgwNCwgCisgICAgMTI3MDEyLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAwLCAwLCA3NDE3MCwgMCwgMzIzNCwgCisgICAgMCwgMCwgNzQzNzYsIDQzMTM5LCAxMTg4MTUsIDEyNzA4NCwgMTIwNjI3LCA4NzY3LCAwLCA3NDQ4OSwgOTY5NSwgMTIwNzQ2LCAKKyAgICA1MjAxLCAwLCA2MjE1LCAxMjcxNCwgNjIxNCwgMTMxMDEsIDAsIDE5NDk5OSwgNjUyNjgsIDAsIDAsIDAsIDExMDI3LCAwLCAKKyAgICAxMDA1OSwgMTA1MTEsIDQyMDc1LCA5NzY3LCA3ODksIDE3NDksIDc4ODkwLCAxMjcwNzEsIDk4MzY2MSwgMzIwLCAwLCAKKyAgICA4NjQ3LCAwLCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIDEyNzM1NiwgMTI3MzU1LCA2NjQ3OCwgNDk2MCwgCisgICAgNTU0OSwgMTI3MzU5LCAxMjczNDYsIDg0ODUsIDQ2NzEsIDU0MTgsIDEyNzM1MCwgMzM1MSwgMTI3MDA2LCAxMjczNTEsIAorICAgIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAxMjczNDQsIDk1NTQsIDAsIDk0MDQ4LCAxMjcxMDksIAorICAgIDY2NTMsIDEyODgxMSwgMCwgNjQ1MTAsIDYyMTMsIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCAwLCAxMjA3NTksIDczNzQxLCAKKyAgICAxMjYwMywgNzEzMSwgMTE0MzAsIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMCwgMTE5MjU5LCAKKyAgICA0MjU3NiwgMCwgNTIwMCwgMTI2NjExLCA5MTc5NDgsIDAsIDkxODMsIDEyNzM2MSwgNzQ0NTgsIDczODI1LCAzOTUsIDU0ODIsIAorICAgIDUxOTgsIDQzNDksIDEwMzkwLCA3NDIwMiwgNTE5NiwgNDMyMjQsIDYxMTMsIDQyMDA5LCA1MjA1LCAwLCA0MzMwNywgMCwgCisgICAgMTE4OTczLCAwLCAxMjEzNCwgMCwgMCwgMTE4ODQzLCA5MTI2LCA0MzUsIDAsIDEyMDE0LCAxMDM3NywgODA5MywgOTA3OSwgCisgICAgMzIwMywgMTkyLCA2NTEwOSwgMzM4NSwgMCwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgMTI4MTc4LCA1NzM4LCAKKyAgICA5ODMyMTMsIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgMCwgNjgxMTIsIDc4NzIsIDg1ODEsIDAsIDEyNjAsIAorICAgIDMxNDksIDUzNTksIDEyMDEzNCwgMCwgNzkxNCwgNTM1NywgOTIxNzAsIDEyODY1OSwgMjYyNCwgNTM2NCwgMCwgMTE0MzEsIAorICAgIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCAwLCA3ODI5MywgNDIyNzEsIDc4Mjg5LCA0MjkxNywgMTIwNzkzLCAwLCAKKyAgICA2NTU2NiwgNjcxNywgMTA2MTksIDQzMzYwLCA3ODM4NSwgNzgzODQsIDExODMyLCA3ODM4MiwgNzgzODEsIDc4MzgwLCAKKyAgICA3ODM3OSwgOTMxOSwgNzA5NywgMTE5MDU1LCA3NzkwNiwgMzIzMiwgNzM4MjQsIDc0NTgxLCAxMjA2MzIsIDAsIDAsIAorICAgIDQxODg5LCA5MjQ1MywgMCwgMTE2MSwgNDE4OTUsIDc0MTAzLCA5NzAxLCA4NjIyLCAwLCAwLCA3MzgxOSwgMTIwNTg4LCAKKyAgICA1MDEyLCA3NzkxMiwgNDEzNjIsIDY5ODYyLCA3ODI5NiwgMTE5MjEsIDAsIDExNzY5LCAwLCA2ODYwOSwgNDEzNjQsIDAsIAorICAgIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDAsIDQxMzY2LCAwLCAzMzU2LCAwLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDgxOTksIDc4Mzg5LCAxMTk5MTcsIDY3NywgMTE5OTE2LCAwLCAxMTk5MzIsIDEyNzE2OSwgMCwgMCwgMCwgMzM0OSwgCisgICAgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDAsIDU4MDIsIDAsIDg2MTUsIDAsIDAsIDQ5MSwgMTI4ODE5LCAxMDE5MCwgCisgICAgMTIwNjk4LCA2NTgzNywgMTI4ODIwLCA4NDI2LCAxMTA5MiwgOTg5MSwgMCwgNDI0OTcsIDcxMTMsIDc1ODYsIDQyMzA1LCAKKyAgICAxMDg1MiwgMCwgMCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgMCwgMCwgCisgICAgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCA3NDg0OSwgMTIwNjIxLCAwLCAKKyAgICA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIDg5MDUsIDQxMzYsIDQ4NzEsIAorICAgIDc4Mjg3LCAwLCA5ODMzLCAwLCAwLCAxMTI4LCA2NTkyMCwgMCwgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgCisgICAgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgCisgICAgNTE2NSwgNTEyNiwgNDEzODUsIDAsIDQxMzg5LCA5MTc5MzgsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIAorICAgIDk0MDQsIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgMCwgCisgICAgMTA2MjcsIDQxMTMwLCA3ODI2MCwgMzk5NiwgMCwgNzg3NzEsIDAsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCisgICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgOTE3OTE4LCAxMjA4NSwgMCwgCisgICAgNTc0LCA5MTc5MjIsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY5NzA5LCA0MTMyMiwgNDIyMTEsIDU0NDIsIAorICAgIDQxOTAsIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA3NzgzNywgNzc4MzgsIDc3MDgsIDc3ODM2LCAKKyAgICAxMDg1OSwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMCwgNzc4NDQsIDczODAwLCA0MjE4MSwgNzc4NDMsIDc3ODM5LCAKKyAgICAyMDYwLCAwLCA3MTExLCAxMTc4OCwgNjU1ODcsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDAsIDIwNSwgMCwgMTAzNTEsIAorICAgIDExOTA3NiwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgNDEzNTUsIDU1MDUsIDExOTE1NCwgNTUwMywgCisgICAgODAyMSwgMCwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgOTI2MzYsIDAsIDEwMDI2LCAKKyAgICA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgNzgyNjcsIAorICAgIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMCwgMjY3NSwgNTU5NSwgNzg0MTEsIDQzNzYyLCA0MzY3LCAwLCAwLCAKKyAgICA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDEyMDM3MiwgCisgICAgOTgzMTA4LCA5NzMxLCA2OTczMSwgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzc4NTUsIDc3ODUyLCA3Nzg1MywgNzc4NTAsIAorICAgIDEwNzUwLCA0MzcxNCwgNzc4NTgsIDcxMzcsIDAsIDEyODI5NiwgMTI4ODcsIDEwNTUxLCAxOTQ1NjQsIDc3ODY2LCA3Nzg2NywgCisgICAgNzc4NjQsIDc3ODY1LCA5OTI5LCA1MTk5LCA5OTM2LCAxMTIwLCA0MjM4NywgMCwgMTQ0NCwgOTQ4NiwgNzU1NCwgNjU4MzksIAorICAgIDU1MjUyLCA3Mzk3MiwgMTQ0MiwgMCwgNTg5NCwgNzAwNjksIDAsIDQxMTcxLCA5MjUxMSwgNzQzMTMsIDAsIDEzMTYyLCAwLCAKKyAgICAzMzM0LCAxOTUwMTAsIDExODgwMywgNzc4ODEsIDY2MDIyLCAwLCAwLCAxNjUxLCAxMjg3NzEsIDg4NjEsIDAsIDAsIDExNDIsIAorICAgIDAsIDgyNzEsIDAsIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgMCwgNDAwMiwgNDM2MjYsIDEwNDQyLCAxMDY3NiwgMzM0NCwgMCwgCisgICAgMCwgMTI5MjAsIDE5NDU2MCwgMCwgMCwgNjY2NDIsIDEyNzcsIDAsIDc4NzEsIDAsIDAsIDc4ODUzLCAwLCA3ODg1NCwgCisgICAgMTIwMzYwLCAwLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIDY2MzY2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgMCwgNzg4NTYsIAorICAgIDkyNDAwLCA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDc3ODcxLCA0MjQ0MCwgMCwgCisgICAgNDMxMTgsIDAsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgOTI0MywgCisgICAgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDAsIDYyNDcsIDQzMTE3LCA3NDUyNiwgNzEyMSwgNzQxNjYsIDAsIDEyMDM1NSwgCisgICAgOTI1MzcsIDAsIDAsIDE5NTAzNCwgMCwgMCwgMCwgNzAwODMsIDMzNTQsIDE5NTAzNywgNDE5MiwgOTI4OSwgMTE4OTk5LCAKKyAgICA0MTE5MSwgMzg3NiwgMCwgNzAwNjcsIDEyMDY2MCwgNDM2OTYsIDQzMzgwLCAwLCA5ODMwOTEsIDAsIDAsIDExNjAzLCAKKyAgICA5ODM5NDUsIDAsIDY1ODksIDEyODU4OCwgMTk0Njc5LCAwLCAwLCA5ODM2OTEsIDAsIDAsIDQyNTcyLCAxMjgyNjQsIAorICAgIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDEyNzA5OCwgMTE2NTQsIDAsIDc1NTAsIDEwNjg2LCA1OTAzLCAwLCA3ODAwOSwgCisgICAgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCAwLCA1NTQyLCAxMTAxMywgMTI3OTI3LCAxMjgzMDAsIAorICAgIDAsIDc4NjIxLCAxOTQ2NzIsIDY5MjUsIDAsIDAsIDkxNzkyOSwgMCwgMTE1NjgsIDk4MzY2NCwgNDMzNjcsIDY0NTc5LCAKICAgICA5MTc5MzAsIDc4NTIsIDAsIDAsIDY3NTQsIDYzMTIsIDAsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIAotICAgIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMCwgMCwgOTUzMiwgCi0gICAgNjYzNTUsIDAsIDAsIDkxNzkyNSwgNjQzNDMsIDE5NTAzMiwgMTI4MjgxLCAxOTUwMzEsIDAsIDAsIDE5NTA1NywgMTE0NDUsIAotICAgIDAsIDIxMTIsIDE5NTA1NiwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgNzQ1NDQsIDgwMjMsIAotICAgIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAwLCAxMjA0OTMsIDMzNDMsIDQ0MjQsIAotICAgIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg2MjYsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIDQzOTEsIDY4MTM5LCAwLCAKLSAgICAxMzA1OSwgNzQ4MTYsIDc3OTk4LCAzMzgxLCA3OTQyLCAwLCA2OTIxOSwgMCwgNjQ3NTcsIDAsIDM5MTMsIDAsIDAsIAotICAgIDc4MjM1LCA3MDQ0LCAxMjY1LCAwLCA2MzA5LCA3MDQ1LCA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDAsIDAsIDgyMjEsIAotICAgIDc4MzA3LCA0MTg2NCwgMCwgMCwgMCwgMCwgMTY3LCAwLCA3ODMwMSwgMCwgNzQyMTEsIDQxODk3LCA2ODQ3NywgMCwgCi0gICAgOTE3NTgzLCAwLCAwLCAyNDkzLCAwLCAxMTg4MTEsIDAsIDAsIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIAotICAgIDAsIDkyNDUwLCAwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgMTIxMTQsIDAsIDkxNzU3OSwgNjQ5MzYsIDE5NDY5NSwgMCwgCi0gICAgMTIwNjI5LCAxMDU2MSwgMCwgODM2NSwgMTIwNTM5LCAwLCA2NTg0MSwgMTIwNzg3LCAxMTYwMSwgMCwgNzQxMjEsIDAsIAotICAgIDkxNzU3NSwgNzgzNCwgNzQxNTksIDAsIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU5NiwgMTYzOSwgMCwgMCwgCi0gICAgNzQxNTcsIDYzMjcsIDY3MjQsIDAsIDEyODA4NiwgOTI1NjYsIDAsIDQ4MTcsIDc4NDQ2LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCAKLSAgICA5NjAwLCAxMTAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIDE5NDc2MSwgCi0gICAgMTIzNDMsIDY1NywgMTk1MDU0LCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDAsIDAsIAotICAgIDAsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCAwLCA5MTc1OTUsIDY1NTUwLCAyNjAsIDQ4MTYsIAotICAgIDY3NjU4LCAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgMTk1MDQzLCA0ODE4LCAxOTUwNDgsIDQxNDAzLCAxMTk5NzcsIDAsIAotICAgIDAsIDQxNDA2LCA0MzI3MywgNzQxNjAsIDExOTk4MywgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIAotICAgIDExNjUsIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDczODU1LCA2NTE1NSwgNDMwMTQsIDU0MzksIAotICAgIDkzNjMsIDEyNzU1OCwgMzM3NSwgMTI4ODY5LCA1OTAwLCAwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMCwgMCwgMTI4Nzc0LCAwLCAKLSAgICAwLCAwLCAxMjc4MTAsIDExNDAxLCAwLCAwLCA2ODQ1OSwgMCwgMCwgMCwgMCwgNjU0MzgsIDAsIDcyODAsIDEyNzg4NywgMCwgCi0gICAgMTI3MzgxLCA0ODY4LCAxMTk5NjcsIDExOTk2NiwgMTE4Nzk4LCAwLCAwLCA0MzE2MSwgMCwgOTIzNjAsIDAsIDUxODIsIDAsIAotICAgIDEyMDU0MiwgMCwgMCwgNDIyNiwgMTIwNzk4LCAxMjEzNSwgNTczMiwgNDQ2NCwgMCwgMCwgOTc3LCA0NDU4LCAwLCAwLCAKLSAgICA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIDc4NiwgMCwgNDMxNzQsIAotICAgIDY0MzQwLCAwLCAwLCAxMjA3MjMsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIDY1MDI1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAxMjc4MDksIDAsIDEzOTksIDAsIDY1MjE3LCAKLSAgICAwLCA4ODUyLCAwLCAyNDEsIDEyODc4MCwgNDkwNywgMCwgMCwgNzkzMiwgOTcyNywgMTI4ODczLCA3NDI1NSwgODc0OCwgMCwgCi0gICAgMCwgMCwgMCwgNDI3ODAsIDAsIDAsIDAsIDQyMTcsIDAsIDg2NTAsIDAsIDAsIDAsIDAsIDExODg3MiwgNDMwOTksIDM5NjUsIAotICAgIDExOTExOSwgNjcxOSwgMCwgMTMzMDAsIDc4NDM5LCAxMjgyNjEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAwLCAwLCA3MzgxNSwgCi0gICAgNDQyMCwgMCwgNjQxMCwgNzc2MCwgMCwgMCwgMCwgMCwgMCwgNzI5NCwgMCwgMCwgMCwgOTA2NiwgMCwgMTE5OTMsIDQzMTg4LCAKLSAgICAyNjI2LCA3NzYyLCAwLCAwLCAwLCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCAwLCA3ODUxNiwgNjkxOSwgODYxOSwgCi0gICAgMTE5NjU1LCAxMDAzOCwgNjY0NTQsIDk1OTIsIDQyODUxLCAxMjY5OTMsIDE1NDIsIDkyMzAzLCAwLCAwLCAwLCAwLCAKLSAgICA3NDMxMSwgNzg0OTcsIDAsIDEwMTgxLCAwLCA0MzYyNCwgMCwgNzc3OSwgMCwgMTAxOTUsIDk0NzksIDYwMjksIDAsIAotICAgIDkyMjY4LCA5Njg5LCAwLCAwLCA4OTkzLCA2NjM1OCwgMCwgNDIzNzgsIDMzNjgsIDYwNiwgMTI3MDMwLCA3Njk3LCA2OTIzNywgCi0gICAgNjk3ODcsIDIwMzAsIDAsIDYwMjcsIDgzNzAsIDQzMjIsIDAsIDY1MjA3LCAwLCAwLCAwLCAwLCAwLCAyNzM1LCA0MjgzMSwgCi0gICAgNzc5MzUsIDEyNzEyMCwgNzQ4NjYsIDg4ODEsIDExOTA0NywgMCwgMCwgNzM5NDYsIDAsIDAsIDAsIDY4MTQwLCAwLCA5NTc2LCAKLSAgICAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCA3NzA5LCA0MTExMiwgCi0gICAgMCwgNjY1NjAsIDQyMDQxLCA0NTcyLCAxMjg3NiwgNjY1NjEsIDAsIDY3NTgsIDAsIDE2MTUsIDU4NTUsIDgwOSwgMCwgCi0gICAgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCAwLCAwLCAwLCA3MjYwLCAwLCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCAKLSAgICA3ODgxOSwgNjQzODYsIDY1MjU3LCAwLCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCAxMjgwNjcsIDY1MzIsIDAsIDAsIDAsIAotICAgIDEyNzA2MCwgNjU4MjgsIDAsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjYzLCAwLCAwLCAxMjA2MDksIDAsIDMzNzAsIAotICAgIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgNzM3NjcsIDAsIDEwNzQxLCAwLCAwLCAwLCAwLCA2NTQ5NSwgNjQ3MDYsIAotICAgIDAsIDQzMzQ0LCAwLCA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgMCwgMCwgMCwgMCwgOTE1LCA0MzQyNSwgMCwgMCwgMCwgMCwgCi0gICAgMTI3MTc4LCA0MzI2NCwgMCwgMCwgMCwgMCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIDUxODYsIDEyODkwLCAKLSAgICAxMjc4MzcsIDAsIDEyMTA4LCAwLCA2NTEyNCwgNDMxMjcsIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIAotICAgIDQyNTYyLCAwLCAwLCAwLCAxMjg1MjAsIDExNDg1LCA2MTAzLCAxMjcxMjMsIDAsIDExNzE4LCAwLCAxMjg4OSwgOTI2NTcsIAotICAgIDEyNzEzNywgMCwgMCwgMCwgNTUyNDUsIDAsIDE2MzAsIDEyODIzMiwgNjU0ODMsIDAsIDEyNTY1LCAwLCA2NTQ3NiwgCi0gICAgMTIwMDEzLCAwLCAxMTk1NTQsIDkyODMsIDc3MDAsIDkxNzUzNywgOTY5MCwgNjU0OTksIDAsIDY0NTkzLCA1MTIsIDMzNzYsIAotICAgIDY4MjEwLCAwLCAwLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMCwgNTk1NywgMTEwNTkzLCAKLSAgICA4OTI2LCAwLCAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIDUzODYsIDEyMDY4NiwgMTE3MTMsIAotICAgIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCAwLCA5ODEyLCAwLCA0NDYwLCAwLCAwLCAwLCAxMjgwMzgsIAotICAgIDAsIDAsIDEyNzE3NCwgNjQyNzgsIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgCi0gICAgMTE5MDI5LCAwLCA3MzgyMywgMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCAKLSAgICAwLCAwLCAxMjg1NzAsIDEyMTA2LCAwLCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCi0gICAgOTUyMiwgNzQwNzksIDc4MjY2LCAxMjA2NzQsIDAsIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgNzc4OTksIAorICAgIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMCwgOTgzNjA1LCAKKyAgICA5NTMyLCA2NjM1NSwgMCwgOTgzMjI4LCA5MTc5MjUsIDY0MzQzLCAxOTUwMzIsIDEyODI4MSwgMTk1MDMxLCAwLCAxOTUwMzAsIAorICAgIDE5NTA1NywgMTE0NDUsIDAsIDIxMTIsIDE5NTA1NiwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgCisgICAgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAwLCAxMjA0OTMsIAorICAgIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIAorICAgIDQzOTEsIDY4MTM5LCA5ODMwNjIsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAwLCA2NDc1NywgCisgICAgMCwgMzkxMywgMCwgMCwgNzgyMzUsIDcwNDQsIDEyNjUsIDAsIDYzMDksIDcwNDUsIDcxNzUsIDcwNDcsIDc4MjM5LCAKKyAgICAxMTc5MSwgMCwgMCwgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCAwLCAwLCAxNjcsIDk4Mzg5NywgNzgzMDEsIDk4MzY0NCwgCisgICAgNzQyMTEsIDQxODk3LCA2ODQ3NywgMCwgOTE3NTgzLCA5ODM2MjUsIDk0MDY1LCAyNDkzLCAwLCAxMTg4MTEsIDAsIDAsIAorICAgIDY0MzU0LCAwLCA4Nzc3LCAwLCA0MDYsIDg4ODQsIDIzODUsIDAsIDkyNDUwLCAwLCA5MTc1NzMsIDQzMDMwLCA0MjAyNywgCisgICAgMTIxMTQsIDAsIDkxNzU3OSwgNjQ5MzYsIDE5NDY5NSwgMCwgMTIwNjI5LCAxMDU2MSwgMCwgODM2NSwgMTIwNTM5LCAKKyAgICA5ODM3NjUsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMCwgOTE3NTc1LCA3ODM0LCA3NDE1OSwgMCwgCisgICAgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTk2LCAxNjM5LCAwLCAwLCA3NDE1NywgNjMyNywgNjcyNCwgMCwgCisgICAgMTI4MDg2LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDc4NDQ2LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCA5NjAwLCAxMTAyMiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIDE5NDc2MSwgMTIzNDMsIDY1NywgCisgICAgMTk1MDU0LCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDAsIDAsIDAsIDQ0NTYsIAorICAgIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCAwLCA5MTc1OTUsIDY1NTUwLCAyNjAsIDQ4MTYsIDY3NjU4LCAKKyAgICAxMDY4NywgMCwgNDgyMSwgNDQ2NiwgMCwgMTk1MDQzLCA0ODE4LCAxOTUwNDgsIDQxNDAzLCAxMTk5NzcsIDAsIDAsIAorICAgIDQxNDA2LCA0MzI3MywgNzQxNjAsIDExOTk4MywgNzM5MzksIDkyNjM4LCAxMTk5ODQsIDExOTk3OSwgNDE0MDQsIDExNjUsIAorICAgIDExOTk4MCwgNDQ1MSwgMTMwODcsIDAsIDExMjg0LCAxMTk5ODcsIDcwMDk3LCA2NTE1NSwgNDMwMTQsIDU0MzksIDkzNjMsIAorICAgIDcwMDcwLCAzMzc1LCAxMjg4NjksIDU5MDAsIDkzOTkwLCA3ODg5LCAyNzIyLCA0MjI2MiwgMCwgMCwgMTI4Nzc0LCAwLCAKKyAgICAyMjgyLCAwLCAxMjc4MTAsIDExNDAxLCA5ODM4MTMsIDAsIDY4NDU5LCAwLCAwLCAwLCAwLCA2NTQzOCwgMCwgNzI4MCwgCisgICAgMTI3ODg3LCAwLCAxMjczODEsIDQ4NjgsIDExOTk2NywgMTE5OTY2LCAxMTg3OTgsIDAsIDAsIDQzMTYxLCAwLCA5MjM2MCwgCisgICAgMCwgNTE4MiwgMCwgMTIwNTQyLCAwLCAwLCA0MjI2LCAxMTkyNDMsIDEyMTM1LCA1NzMyLCA0NDY0LCAwLCA3MTMzMCwgOTc3LCAKKyAgICA0NDU4LCAwLCAwLCA2NDc3MCwgNzQ4MzgsIDAsIDM0NCwgMCwgMTk0NzkwLCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDAsIAorICAgIDc4NiwgMCwgNDMxNzQsIDY0MzQwLCAwLCAxOTQ3NjcsIDEyMDcyMywgNDMwMjYsIDc2MTIsIDEwMTMyLCA2NDQxMywgCisgICAgNjUwMjUsIDAsIDAsIDAsIDkzOTU2LCAwLCA2ODQ0NCwgMCwgOTI0MzcsIDAsIDExOTE2MCwgMTAyMDQsIDkyNjU2LCAwLCAKKyAgICAxMjc4MDksIDk4MzYzNSwgMTM5OSwgOTgzNjQzLCA2NTIxNywgMCwgODg1MiwgMTI4NTcxLCAyNDEsIDEyODc4MCwgNDkwNywgCisgICAgMCwgOTgzNjMwLCA3OTMyLCA5NzI3LCAxMjg4NzMsIDc0MjU1LCA4NzQ4LCAwLCAwLCA5ODM2MzQsIDAsIDQyNzgwLCAwLCAwLCAKKyAgICAwLCA0MjE3LCAwLCA4NjUwLCAwLCAwLCAwLCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgMzk2NSwgMTE5MTE5LCA2NzE5LCAwLCAKKyAgICAxMzMwMCwgNzg0MzksIDkzOTcxLCA0MzA1NywgNjY1ODgsIDExODk5MSwgMCwgMCwgNzM4MTUsIDQ0MjAsIDAsIDY0MTAsIAorICAgIDc3NjAsIDAsIDAsIDAsIDAsIDAsIDcyOTQsIDAsIDAsIDAsIDkwNjYsIDAsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgMCwgCisgICAgMCwgMCwgOTI2MDEsIDQyODI1LCA0MTg1NCwgNTMwNCwgMCwgNzg1MTYsIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIAorICAgIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTI2OTkzLCAxNTQyLCA5MjMwMywgMCwgMCwgMCwgMCwgNzQzMTEsIDc4NDk3LCAwLCAKKyAgICAxMDE4MSwgMCwgNDM2MjQsIDAsIDc3NzksIDAsIDEwMTk1LCA5NDc5LCA2MDI5LCAwLCA5MjI2OCwgOTY4OSwgMCwgNjU1NzcsIAorICAgIDg5OTMsIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCAxMjcwMzAsIDc2OTcsIDY5MjM3LCA2OTc4NywgMjAzMCwgMCwgCisgICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDk4MzMzMSwgOTgzMzMwLCA5ODMzMjksIDk4MzMyOCwgMjczNSwgCisgICAgNDI4MzEsIDc3OTM1LCAxMjcxMjAsIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDAsIDAsIDczOTQ2LCAwLCAwLCAwLCA2ODE0MCwgCisgICAgOTgzOTE5LCA5NTc2LCAxMjg4NzIsIDMzNDcsIDQxNjAsIDUxNTQsIDU1Mjg4LCAzNzk0LCA2NjU2NCwgODUzMCwgMTI3MDYzLCAKKyAgICA3NzA5LCA0MTExMiwgOTgzMTMyLCA2NjU2MCwgNDIwNDEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgOTgzNzQ5LCA2NzU4LCAKKyAgICA5ODM5MTcsIDE2MTUsIDU4NTUsIDgwOSwgMCwgOTIyODMsIDEyODMxNiwgMTI4MDA0LCA1Nzk5LCA5ODMzMjAsIDcwMTAwLCAKKyAgICA5ODMzMTgsIDcyNjAsIDk4MzMxNiwgNDMwMzEsIDY0NDI1LCA2NTEyOCwgNzg4MTksIDY0Mzg2LCA2NTI1NywgMCwgNjg2MTYsIAorICAgIDEyMDYwNywgOTM0NywgMTI4MDY3LCA2NTMyLCAwLCAwLCAwLCAxMjcwNjAsIDY1ODI4LCAwLCAyODMsIDY4NjY1LCA3ODgxMywgCisgICAgNTMyLCA3ODY2MywgMCwgOTgzNzg3LCAxMjA2MDksIDAsIDMzNzAsIDAsIDExMzYxLCA1NDQzLCA3ODc3OCwgODE1MywgCisgICAgNzM3NjcsIDAsIDEwNzQxLCAwLCAyMjk4LCAwLCA5ODM5MDgsIDY1NDk1LCA2NDcwNiwgOTgzMzEwLCA0MzM0NCwgOTgzMzA4LCAKKyAgICA3MTQ0LCA5NDY2LCA3ODg2NiwgOTgyNCwgOTgzMzAzLCA5ODMzMDIsIDAsIDAsIDkxNSwgNDM0MjUsIDAsIDAsIDAsIDAsIAorICAgIDEyNzE3OCwgNDMyNjQsIDcwMDk2LCAwLCAwLCA0MzAzOCwgNzg4NjQsIDY3MzAsIDc4ODYyLCA2ODE2MSwgNjQ1NTAsIAorICAgIDUxODYsIDczNjAsIDEyNzgzNywgMCwgMTIxMDgsIDAsIDY1MTI0LCA0MzEyNywgNjYwNDMsIDAsIDYzMjYsIDQzMTA3LCAKKyAgICA3NzgyNiwgMCwgNDI1NjIsIDAsIDEyODgyMSwgMCwgMTI4NTIwLCAxMTQ4NSwgNjEwMywgMTI3MTIzLCA5ODMyOTcsIAorICAgIDExNzE4LCA5ODMyOTUsIDEyODg5LCA5MjY1NywgMTI3MTM3LCAwLCAwLCAwLCA1NTI0NSwgMCwgMTYzMCwgMTI4MjMyLCAKKyAgICA2NTQ4MywgMCwgMTI1NjUsIDAsIDY1NDc2LCAxMjAwMTMsIDAsIDExOTU1NCwgOTI4MywgNzcwMCwgOTE3NTM3LCA5NjkwLCAKKyAgICA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgNjgyMTAsIDAsIDEyODY3NywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCAKKyAgICA0MjUyOSwgNzg1ODcsIDAsIDU5NTcsIDExMDU5MywgODkyNiwgOTgzMjkxLCA5ODMyOTAsIDEyODI3MywgMTA3NDUsIAorICAgIDEwMTc0LCA3Mzc5LCA2NDU4MSwgNTM4NiwgMTIwNjg2LCAxMTcxMywgMTA2MzMsIDY5NzA4LCA1MDU2LCAwLCAwLCAwLCAKKyAgICAxMjA3NzMsIDAsIDk4MTIsIDAsIDQ0NjAsIDAsIDAsIDcxMzA3LCAxMjgwMzgsIDAsIDAsIDEyNzE3NCwgNjQyNzgsIAorICAgIDkyMzcwLCA0MzQ2NiwgMCwgMCwgNjQzODksIDI5NTMsIDczODc5LCAxODAxLCAxMjgzNSwgMTE5MDI5LCAwLCA3MzgyMywgMCwgCisgICAgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA5ODMyNzgsIDk4MzI3NywgCisgICAgMTI4NTcwLCAxMjEwNiwgOTgzMjc0LCA3NDIwNywgMTc1NSwgMTA0ODIsIDEyODYzLCA3Nzg5OCwgMTE2MywgMjk1MSwgCisgICAgOTUyMiwgNzQwNzksIDc4MjY2LCA2NjYwNCwgMCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCA3Nzg5OSwgCiAgICAgNzc5MDAsIDg0NTEsIDAsIDAsIDAsIDY5NzM5LCAwLCAwLCAwLCAwLCAyOTA4LCAwLCA0MzM4NiwgNjQ5MDIsIDQyNDMsIDAsIAotICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCAwLCA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMCwgNDExLCAwLCA5MTk5LCAwLCA0MDU2LCAKLSAgICAxMTg5OTIsIDQxODkwLCAwLCAyNzMwLCA0MTYwNCwgMCwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgNjQ0MzcsIAotICAgIDEyNzkzNSwgMTE4ODE2LCAxOTQ3NDIsIDk2ODQsIDIxNiwgMCwgMTQwMSwgMTI4MDUzLCA0NDAxMiwgMCwgMCwgOTI1ODUsIAotICAgIDkxNTgsIDc3ODQyLCAxMjA2NjQsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCA2NTg5NSwgMCwgMCwgMzMzOCwgCi0gICAgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDAsIDEyODY4MCwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCAKLSAgICA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMCwgMCwgCi0gICAgMCwgMzQzMCwgMCwgMCwgMCwgMCwgOTgxLCAwLCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMCwgNzAzNCwgCi0gICAgNDE2ODMsIDY0NjE3LCAwLCA3Mzc1NCwgMzk1NywgNjQzNTgsIDY0NTQ3LCAxMjgyNTksIDY3NCwgNjM5OTEsIDAsIDI5NDYsIAotICAgIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIAotICAgIDUxMjEsIDExOTI0NSwgMTE4OTkzLCAwLCA1MTMwLCAwLCAwLCA3Nzk5MCwgMCwgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgCi0gICAgNzc5OTEsIDUyMTYsIDAsIDAsIDAsIDAsIDM0NjgsIDcwMzMsIDkyMzAsIDU5MzksIDE5NTA1MiwgMCwgMCwgMTIwNjc3LCAKLSAgICA2ODQwMCwgNzI3OCwgMTAzMjEsIDEwMjg5LCA2NDYxMywgMTAzODUsIDQxNzA2LCAwLCAwLCAwLCAwLCAxMTczOSwgMCwgCi0gICAgNDE5ODEsIDAsIDU5MzgsIDAsIDAsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgCi0gICAgMTI2OTc2LCAwLCAxMDAwOSwgMCwgNDE3MDMsIDAsIDEyMTY1LCAwLCAwLCA5ODg1LCAwLCA4MDc3LCAwLCAxMjc5MDgsIDAsIAotICAgIDAsIDAsIDkyNDU3LCAwLCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgMCwgMTI4MzQwLCAwLCAKLSAgICAwLCAwLCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgMCwgMTk5NDQsIDAsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgCi0gICAgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIDAsIDAsIDEyMzEzLCAxMTA1OTIsIDUxNSwgMTE5OTQ3LCA0Mjc5MSwgNjM5ODcsIAotICAgIDc4Mjg2LCAxMTk5NDMsIDExOTk0MCwgMTE5OTQxLCAxMTk5MzgsIDk3NzUsIDQwNDYsIDQ1ODksIDQ1MjEsIDY4NjI5LCAKLSAgICA5MTQxLCAwLCA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDYxODQsIDg2MDYsIAotICAgIDMzMDMsIDQxMzcyLCAxMTc4NiwgOTQ3MywgNjYyMDMsIDY2MTc3LCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgCi0gICAgMCwgMCwgMjc0NCwgMCwgNDQ3NywgMTE4OTY0LCA4MTQsIDQyMDY2LCA2NjE4MywgNjYyMDQsIDQzNzg2LCAxMTk5NjEsIAotICAgIDY2MTk4LCA0MTg4MCwgNjYxODgsIDY2MTk3LCA3ODE0OCwgMTE5NTUsIDY2MTkwLCA2NjE5MSwgNDExMTEsIDY2MTg5LCAKLSAgICA3Mzc4OCwgNzc4OCwgNDg0NywgMCwgMTI3NzU5LCAwLCAwLCAwLCAxNTgxLCA2NTM1LCA3ODE2MSwgMTI5NTQsIDQzMCwgCi0gICAgNzgxNjAsIDU1MjU5LCA3ODE1OCwgMTI4MDM2LCA1Mjc4LCA0OTQ1LCA0Mjg4MywgNDk1MCwgMCwgNjg2MjUsIDAsIDcyNjksIAotICAgIDAsIDU5NjQsIDEyOTA4LCAwLCAwLCA3NDc2NCwgNzQ0NzcsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCAwLCA0NDMsIDAsIAotICAgIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgMTk0OTMxLCAKLSAgICAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgCi0gICAgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgCi0gICAgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgMTE5ODI5LCAxMTk4MzIsIDQ2NzcsIAotICAgIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIDc4MTY2LCAKLSAgICA0Njc0LCA0NTQ4LCA0NDAwNSwgMTE5OTQ5LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCAwLCAKLSAgICA2ODY2OSwgMCwgOTI0NDUsIDEyNzU1NCwgMCwgMCwgMTE5NjUyLCAyNzQ1LCAxMTc5NywgMCwgMTI4MTU5LCA5MjAyLCAKLSAgICA0NjU0LCAwLCAwLCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCA2NTIwOSwgMCwgMCwgNDY0OCwgNDMwODAsIDAsIDAsIDAsIAotICAgIDYyNDYsIDY0OTUwLCA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3ODAwNSwgOTIzODQsIAotICAgIDQzMTg3LCA4NjY5LCAwLCA2ODIxLCA2NTA5MywgMCwgNzg4ODEsIDI3MTYsIDAsIDAsIDAsIDAsIDY4MzY5LCAxMjAwNTQsIAorICAgIDEyMjM5LCAwLCAwLCA0NDQxLCAwLCA5ODMyNzEsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCA5ODMyNjcsIDQxMSwgOTgzMjY1LCAKKyAgICA5MTk5LCA5ODMyNjMsIDQwNTYsIDExODk5MiwgNDE4OTAsIDAsIDI3MzAsIDQxNjA0LCA5ODM5MjgsIDU0MjgsIDE5NDc0MywgCisgICAgMzM2NCwgNDIyNjUsIDY0NDM3LCAxMjc5MzUsIDExODgxNiwgMTk0NzQyLCA5Njg0LCAyMTYsIDAsIDE0MDEsIDEyODA1MywgCisgICAgNDQwMTIsIDAsIDAsIDkyNTg1LCA5MTU4LCA3Nzg0MiwgNjk5MDUsIDU3NjgsIDAsIDAsIDAsIDQ4NCwgMTk0NzM5LCAwLCAwLCAKKyAgICA2NTg5NSwgMCwgMCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIDk4MzI1NSwgOTM5NjIsIDI3OTQsIAorICAgIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDAsIDUxOTMsIDUxMjUsIDU0NTYsIDU1MDksIAorICAgIDc3ODQ2LCAxOTQ3NDcsIDk1MzQsIDAsIDAsIDAsIDM0MzAsIDAsIDAsIDc4NzE3LCAwLCA5ODEsIDAsIDQzMzAsIDczOTI5LCAKKyAgICAxMjA1MzYsIDE4MjQsIDEwOTA4LCAwLCA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIAorICAgIDEyODI1OSwgNjc0LCA2Mzk5MSwgOTgzMjQzLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgCisgICAgODM2NCwgNTEyMywgMTE5NjI4LCA1MjgxLCA1NDY5LCA1MTIxLCAxMTkyNDUsIDExODk5MywgMCwgNTEzMCwgMCwgMCwgCisgICAgNzc5OTAsIDAsIDEyMDcyNiwgMTIyMSwgMjczMywgMTE3NDYsIDc3OTkxLCA1MjE2LCAwLCAwLCAwLCAwLCAzNDY4LCA3MDMzLCAKKyAgICA5MjMwLCA1OTM5LCAxOTUwNTIsIDAsIDAsIDEyMDY3NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgNjQ2MTMsIAorICAgIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTgzNDA1LCAwLCAxMTczOSwgOTgzNDE4LCA0MTk4MSwgMCwgNTkzOCwgMCwgNDM3NjYsIAorICAgIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAwLCAxMzA1NywgMCwgMTI2OTc2LCAwLCAxMDAwOSwgMCwgCisgICAgNDE3MDMsIDk4MzYyOSwgMTIxNjUsIDAsIDAsIDk4ODUsIDAsIDgwNzcsIDAsIDEyNzkwOCwgMCwgMCwgMCwgOTI0NTcsIDAsIAorICAgIDQyMjAsIDEwNzI1LCAxMDQzMywgMCwgNjgzOTUsIDQ5ODcsIDY0NTE5LCAwLCAxMjgzNDAsIDAsIDAsIDAsIDEwOTcwLCAKKyAgICAxMTczMywgMCwgMTIwNzkyLCAwLCAxOTk0NCwgMCwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgCisgICAgMjcyNCwgMCwgMCwgMTIzMTMsIDExMDU5MiwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgCisgICAgMTE5OTQwLCAxMTk5NDEsIDExOTkzOCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDAsIDc4ODUwLCAKKyAgICAyNzQxLCA2NDM5OSwgNjE5NywgMTM3MCwgMCwgMCwgMCwgMCwgMCwgMCwgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIAorICAgIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAKKyAgICAwLCA0NDc3LCAxMTg5NjQsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgNjYxOTgsIDQxODgwLCAKKyAgICA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIDczNzg4LCA3Nzg4LCAKKyAgICA0ODQ3LCAwLCAxMjc3NTksIDAsIDAsIDAsIDE1ODEsIDY1MzUsIDc4MTYxLCAxMjk1NCwgNDMwLCA3ODE2MCwgNTUyNTksIAorICAgIDc4MTU4LCAxMjgwMzYsIDUyNzgsIDQ5NDUsIDQyODgzLCA0OTUwLCA5ODM0MzAsIDY4NjI1LCA5ODM0MjgsIDcyNjksIDAsIAorICAgIDU5NjQsIDEyOTA4LCA5ODM1NTUsIDAsIDc0NzY0LCA3NDQ3NywgMTE5MTQ2LCAxOTQ5MzYsIDQ5NDksIDk4MzQyMSwgNDQzLCAKKyAgICA5ODM0MTksIDQ5NDQsIDU0NjcsIDExOTYwMywgMCwgNjUxMzcsIDYwNDQsIDY1MzkyLCAwLCA0MjEzLCAwLCA0MTMwMywgMCwgCisgICAgMTk0OTMxLCAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIAorICAgIDgyNCwgMTI4Njc2LCAxMjA5MSwgNzg4OTMsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIAorICAgIDExOTgxOSwgNjUwNTksIDAsIDY3MzksIDAsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDExOTgzMiwgCisgICAgNDY3NywgMTI2ODgsIDMxMDIsIDAsIDQ2NzIsIDc4MTczLCA3ODE3NSwgNTUzMSwgNjgzNjcsIDQyNTc1LCA3ODE3MCwgCisgICAgNzgxNjYsIDQ2NzQsIDQ1NDgsIDQ0MDA1LCAxMTk5NDksIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAorICAgIDE4NTUsIDk4MzQwNCwgNjg2NjksIDk4MzQwMiwgOTI0NDUsIDEyNzU1NCwgMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIAorICAgIDExNzk3LCA5ODM0MTAsIDEyODE1OSwgOTIwMiwgNDY1NCwgOTgzNDA2LCA5ODM0MDgsIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAorICAgIDQ2NDksIDY1MjA5LCA5ODM0MDksIDAsIDQ2NDgsIDQzMDgwLCA5ODMzOTgsIDk4MzM5OSwgOTgzMzk2LCA2MjQ2LCA2NDk1MCwgCisgICAgNzgyOCwgNDY1MCwgNjc3NywgNjc3NiwgNjc3NSwgNDY1MywgNzgyMiwgNzgwMDUsIDkyMzg0LCA0MzE4NywgODY2OSwgCisgICAgOTgzNDA3LCA2ODIxLCA2NTA5MywgMCwgNzg4ODEsIDI3MTYsIDAsIDk4MzA2MCwgOTgzNDExLCAwLCA2ODM2OSwgMTIwMDU0LCAKICAgICAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNzk5MiwgMCwgMCwgNDY2MiwgNzgwMzMsIDc4MDMyLCAKICAgICA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgMTk0OTYyLCA0NjU2LCAxMDEzMCwgNjg0NTAsIDc4MTEsIAotICAgIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCAwLCAwLCAwLCAKLSAgICA2NDkwNCwgOTAyNiwgMTA4MzMsIDc0ODY0LCA3NTQ3LCA0ODY3LCAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgCi0gICAgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgMCwgMCwgMCwgMCwgMCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCAKLSAgICA3ODg4NywgMTI4ODAsIDY1MzA3LCA0NjE3LCA3ODg4MywgMCwgNDE3MzIsIDQ2MTYsIDEwNTE4LCAxMDQyMywgMTAzNTksIDAsIAotICAgIDU5NTgsIDAsIDAsIDQyMTUsIDk3ODksIDkxNzk0MSwgNDMyMSwgNDYyMSwgMCwgNDEzMTMsIDUyMiwgNTM2OCwgMCwgCi0gICAgNjU4MDMsIDAsIDUzNjYsIDEyMjAxLCA1MzcyLCAwLCAwLCAwLCA3NzIwLCA3MzkwLCAyNjk2LCAwLCAwLCA0NjM4LCAwLCAKLSAgICAxNzkwLCA3ODI0MiwgNTk2NSwgNjQzNjMsIDY2NTY5LCA2ODY0NiwgMTk0OTY4LCA1Mzc2LCAxODM1LCA1MzM1LCAxOTQ5NjYsIAorICAgIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIDQ2NjEsIDQyNDM0LCA5ODM0MDMsIAorICAgIDAsIDAsIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIDQ4NjcsIDAsIDEwMDA4LCAxMDIyMiwgMzA1NCwgCisgICAgMTk0OTU2LCA5NzQ0LCA3ODg2MCwgNzYwNSwgNDYyMiwgMTE5NjU2LCA5ODMzODcsIDk0MDcwLCA5ODMzODUsIDk4MzM4NiwgCisgICAgOTgzMzgzLCA5MDQ1LCA3ODg4OCwgNDIyNSwgMTk5MjYsIDc4ODg3LCAxMjg4MCwgNjUzMDcsIDQ2MTcsIDc4ODgzLCAKKyAgICA5ODMzNzgsIDQxNzMyLCA0NjE2LCAxMDUxOCwgMTA0MjMsIDEwMzU5LCA5ODMzNzIsIDU5NTgsIDAsIDk4MzQyNSwgNDIxNSwgCisgICAgOTc4OSwgOTE3OTQxLCA0MzIxLCA0NjIxLCA5ODMzODEsIDQxMzEzLCA1MjIsIDUzNjgsIDAsIDY1ODAzLCAwLCA1MzY2LCAKKyAgICAxMjIwMSwgNTM3MiwgMCwgOTgzNDAxLCAwLCA3NzIwLCA3MzkwLCAyNjk2LCA5ODMzOTIsIDAsIDQ2MzgsIDk4MzM5NywgCisgICAgMTc5MCwgNzgyNDIsIDU5NjUsIDY0MzYzLCA2NjU2OSwgNjg2NDYsIDEyNzgzMywgNTM3NiwgMTgzNSwgNTMzNSwgMTk0OTY2LCAKICAgICAxMjgwODksIDQ2MzMsIDAsIDY4MTE5LCAxMTgwLCA0NjMyLCAxMjgwOTMsIDUzODcsIDUzMzMsIDAsIDAsIDQyMDk0LCAKLSAgICA1MzMxLCA0NjM0LCAxMTkyOCwgMCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgNjUwOTcsIAotICAgIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAwLCAKLSAgICAxNjA4LCAyNzM4LCAwLCAxMDQ1NSwgNDc1MywgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgMCwgCi0gICAgNjgzNzcsIDYyNDgsIDAsIDAsIDAsIDQyMzE4LCA5MjU4MiwgNTIyOSwgNDc1NywgMCwgMCwgMjcyOCwgNDc1MiwgNjQ1NjMsIAotICAgIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDAsIDEwNzEzLCA3MTY2LCAwLCAyNjIyLCA3NDYwLCAxMjczMDIsIDAsIDAsIAotICAgIDg5NTQsIDc0NzYwLCA2NTE4OSwgMjYzMiwgOTIyMzAsIDEwMTA4LCAxMDExLCA1NTc0LCAxODUzLCAyNzA5LCA2NTEzOSwgCi0gICAgNTU3NywgMCwgMCwgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIAotICAgIDAsIDUzMTIsIDAsIDU1MjUsIDUzMzAsIDUzMTksIDAsIDAsIDE5NDkwNywgNDQwMDMsIDAsIDAsIDAsIDEyMDQ5OCwgCi0gICAgMTI3ODUxLCAxOTUwMDksIDAsIDc0MDIyLCAwLCA2NDYwOSwgNjg2NDMsIDEyMDYzNCwgMCwgNTcyMSwgMCwgNTUxOSwgCi0gICAgODYzMiwgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDAsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAotICAgIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDAsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCA0NjQ3LCA1NiwgCi0gICAgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDAsIDAsIDkyMjc2LCA0NjA4LCA2NDI2MCwgNDExMjQsIDUxOTAsIAotICAgIDY3NjI4LCAwLCA2ODE0NSwgNzA4NiwgMCwgMTE5MjQzLCA2NzYyMCwgMCwgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgCi0gICAgMCwgNjc2MjUsIDU5NjAsIDAsIDg5OTIsIDQyNTkzLCAxMjgyNjAsIDE3ODIsIDY3NjIyLCA2ODExNCwgMTE5OTM5LCAwLCAKLSAgICA2ODE4MCwgNTUwMSwgMTE5OTUyLCA0MjUwOCwgNzQ0MiwgNDM2NjUsIDM1OSwgNDEyNTMsIDY4MzkyLCA2MjM5LCAxMTk5NTYsIAotICAgIDQxMjU2LCAwLCA2ODEzNCwgMCwgNzQyMDksIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAKLSAgICAzNzY3LCA1NzM3LCAwLCA0ODY1LCAwLCA1NzQwLCA5MTc5OTcsIDU3MzYsIDQzNjgsIDY0NzI0LCA3MTkzLCA2ODEzNywgMCwgCi0gICAgNTczOSwgNDEwMjQsIDQ4NjYsIDAsIDczOTA0LCAwLCA0ODY5LCAxMjA1NjMsIDAsIDQyMjMsIDEyODIwMSwgNjY1MCwgMCwgCi0gICAgMCwgMCwgMTI3ODkwLCA0ODcwLCAxMjA0NDUsIDY4NjYxLCA2NzE2LCA3ODE3NiwgNjg2NjcsIDY4MzgyLCA2ODY3NiwgCi0gICAgMTI3OTI1LCAxMDEyMiwgNDg2NCwgNjY1NjgsIDQxNDQsIDc5MzcsIDAsIDYyNDUsIDY4NjUyLCAyNzMyLCA0MjczNCwgNzQ1LCAKLSAgICAwLCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAwLCA2ODYzMSwgNDI3NzUsIDAsIDE5NDk1NCwgMCwgMzA5NywgMCwgCi0gICAgNTk2NiwgMCwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIDY0NDA3LCAwLCAwLCA4NTc3LCAxMjg1NjIsIDY4MTk2LCAKLSAgICA0MzI4NSwgMTAyMTYsIDQ3ODIsIDAsIDAsIDEyMDc1NywgNjg2MTgsIDEyMzI1LCA0MzA1NiwgODcxNywgMCwgMCwgNDc3NiwgCi0gICAgNzM4MTgsIDExNDkyLCA4NzAwLCAwLCAxMzE3NiwgNjgzNjMsIDEwNDI2LCAwLCA5MTc1OTksIDEwMzYyLCAxOTQ3MDYsIAotICAgIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDAsIDU5NjMsIDkxNzkyNiwgMCwgMCwgCi0gICAgNDg1MCwgMCwgMTYwNywgNDY2LCA0ODUzLCAxMTg5OTUsIDQ4NTQsIDEyNzkxOCwgNTE2NCwgMCwgMTM1MCwgNTEyNCwgCi0gICAgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAwLCA0MTI2OCwgCi0gICAgNDg0OCwgMjUzMCwgOTE3OTA5LCAyMDY4LCAxOTY0LCAwLCA3Mzc2MiwgMTA0NTgsIDAsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCAKLSAgICA0Nzk0LCAwLCA2ODIxMSwgODMyMiwgNDc5NywgNTc1MywgMCwgMjY5NCwgNDc5MiwgMCwgMjQzOSwgNjUxMDQsIDY5ODA0LCAKLSAgICAwLCAzMDMsIDAsIDkyNjIyLCAwLCAyNDM3LCAwLCA0MjIxLCA0ODQ0LCAxMTg4NjksIDAsIDAsIDAsIDAsIDAsIDQzMjkyLCAKLSAgICAwLCAyNDQxLCAxMDczOSwgNjUwOTAsIDAsIDExOTMyNywgMCwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCisgICAgNTMzMSwgNDYzNCwgMTE5MjgsIDk4MzU5NCwgNTMzOCwgNDYzNywgMTI4MTcwLCA1OTcxLCA0MjQxNCwgMCwgMTI2OCwgCisgICAgNjUwOTcsIDQyMzYxLCAwLCAwLCA3Mzg1MywgMTQyNywgMCwgMCwgNTk3MCwgMzQzMSwgMCwgMTAzNTgsIDEwNDIyLCA0NzU4LCAKKyAgICA5ODMzNjYsIDE2MDgsIDI3MzgsIDAsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAorICAgIDc0Mzg0LCA5ODMzNzAsIDY4Mzc3LCA2MjQ4LCA5ODMzNTQsIDk4MzM1NSwgOTgzMzUyLCA0MjMxOCwgOTI1ODIsIDUyMjksIAorICAgIDQ3NTcsIDAsIDAsIDI3MjgsIDQ3NTIsIDY0NTYzLCA2NTIzNSwgNTIzNCwgMCwgMTI4MTQ1LCAwLCAxMDcxMywgNzE2NiwgMCwgCisgICAgMjYyMiwgNzQ2MCwgMTI3MzAyLCAwLCAwLCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgCisgICAgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDAsIDAsIDExODg3MSwgNjg2NDEsIDg5NjUsIDc2MzUsIDQyMTc3LCAKKyAgICA1MzE2LCAwLCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMCwgNTUyNSwgNTMzMCwgNTMxOSwgOTgzNDEyLCAKKyAgICA5ODM4NjMsIDE5NDkwNywgNDQwMDMsIDAsIDk4MzQ3MiwgOTgzNDE1LCAxMjA0OTgsIDEyNzg1MSwgMTk1MDA5LCA5ODM4NTYsIAorICAgIDc0MDIyLCA5ODM0MTQsIDY0NjA5LCA2ODY0MywgMTIwNjM0LCA5ODM0ODEsIDU3MjEsIDk4MzM5MywgNTUxOSwgODYzMiwgCisgICAgNjY0NjUsIDExMjY3LCA3Mzk2MSwgOTIyNzgsIDU3MjAsIDk4MzM0NCwgMTY5MiwgNDIxOSwgNDYxMCwgODY5NiwgNDMwNSwgCisgICAgMCwgNDYwOSwgNDM0NzgsIDQ2MTQsIDU0MSwgOTgzMzQ3LCA1Mjg3LCA1MzA5LCA1Mjg1LCA2ODM4OSwgNTk2MSwgNDY0NywgCisgICAgNTYsIDQyMTYsIDEwNTc3LCA0MTM4MSwgNjAxLCA0NjEzLCA5ODMzNDEsIDk4MzMzOCwgNzc4NDksIDQ2MDgsIDY0MjYwLCAKKyAgICA0MTEyNCwgNTE5MCwgNjc2MjgsIDAsIDY4MTQ1LCA3MDg2LCAwLCA2Nzk5OCwgNjc2MjAsIDAsIDI3MzQsIDExMDc0LCAwLCAKKyAgICA2NzYyNywgNDM1OTMsIDAsIDY3NjI1LCA1OTYwLCAwLCA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIAorICAgIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgCisgICAgNjIzOSwgMTE5OTU2LCA0MTI1NiwgMCwgNjgxMzQsIDAsIDc0MjA5LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgCisgICAgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgCisgICAgNzE5MywgNjgxMzcsIDAsIDU3MzksIDQxMDI0LCA0ODY2LCAwLCA3MzkwNCwgOTgzODMxLCA0ODY5LCAxMjA1NjMsIDAsIAorICAgIDQyMjMsIDEyODIwMSwgNjY1MCwgMTI2NTA5LCAwLCA5ODM0NTUsIDEyNzg5MCwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgCisgICAgNzgxNzYsIDY4NjY3LCA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCAwLCAKKyAgICA2MjQ1LCA2ODY1MiwgMjczMiwgNDI3MzQsIDc0NSwgMCwgMTk1MDk3LCA5MjE5NSwgNDc3NywgNzgyMSwgMCwgNjg2MzEsIAorICAgIDQyNzc1LCAwLCAxOTQ5NTQsIDAsIDMwOTcsIDAsIDU5NjYsIDk4MzQ3OCwgNDc3OCwgMCwgMTA4NjMsIDAsIDQ3ODEsIDAsIAorICAgIDY0NDA3LCAwLCAxMjgzMjMsIDg1NzcsIDEyODU2MiwgNjgxOTYsIDQzMjg1LCAxMDIxNiwgNDc4MiwgMCwgMCwgMTIwNzU3LCAKKyAgICA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAwLCAwLCA0Nzc2LCA3MzgxOCwgMTE0OTIsIDg3MDAsIDAsIDEzMTc2LCAKKyAgICA2ODM2MywgMTA0MjYsIDAsIDkxNzU5OSwgMTAzNjIsIDE5NDcwNiwgMTcxNSwgNDg0OSwgODI0MiwgOTU2MSwgNzM5MjIsIAorICAgIDQzMjc4LCA0MjYzNSwgMCwgMCwgNTk2MywgOTE3OTI2LCAwLCAwLCA0ODUwLCAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgCisgICAgNDg1NCwgMTI3OTE4LCA1MTY0LCA5ODM4NjEsIDEzNTAsIDUxMjQsIDY0NDIwLCAxOTkzLCA1MzYyLCA4NDcxLCAyNzA4LCAKKyAgICA5MjQ3MSwgMTI0NDUsIDM3ODUsIDIzNCwgMzE5OSwgMCwgNDEyNjgsIDQ4NDgsIDI1MzAsIDkxNzkwOSwgMjA2OCwgMTk2NCwgCisgICAgMCwgNzM3NjIsIDEwNDU4LCAwLCA4NTc2LCA3ODU0MywgMCwgMjcwNCwgNDc5NCwgMCwgNjgyMTEsIDgzMjIsIDQ3OTcsIAorICAgIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDAsIDI0MzksIDY1MTA0LCA2OTgwNCwgOTgzNDE2LCAzMDMsIDk4MzEwMSwgOTI2MjIsIAorICAgIDk4MzQxNywgMjQzNywgMCwgNDIyMSwgNDg0NCwgOTIyMTYsIDAsIDAsIDAsIDcwMDQyLCAwLCA0MzI5MiwgMCwgMjQ0MSwgCisgICAgMTA3MzksIDY1MDkwLCAwLCAxMTkzMjcsIDEyNjU0MSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAwLCA0MzM3OSwgNDkzNywgCiAgICAgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIDQyODc5LCAxMTcyNSwgMCwgMCwgCiAgICAgMjcyNiwgMzEwNywgNzM5NTgsIDQ5NDEsIDY0OTM3LCAxMTkyMzMsIDkxNDAsIDE0MDgsIDUyNjEsIDQ2MDcsIDAsIDE4MSwgCi0gICAgMCwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAwLCAwLCA0OTY0LCAKLSAgICA1MjY0LCA2NDE3OCwgNjQxNzcsIDEyOTc5LCA0MTQxMSwgNjQxODIsIDY0MTgxLCA2NDE4MCwgNjQxNzksIDk0ODIsIDQ4NzMsIAotICAgIDQxMjMxLCAxODIyLCA0MjUyNiwgMTI4NTgxLCAxMjc1OCwgMzg2NSwgMCwgMCwgMTA1MDAsIDAsIDAsIDc4MDI4LCAwLCAKLSAgICA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAwLCAzMTI1LCA5NTY3LCAwLCAKLSAgICA0ODc4LCA1NDU5LCA0NjA0LCA5MTc5MzEsIDk1NTcsIDU0NjUsIDY4NjE3LCAwLCAxMTQ5NCwgMCwgOTU2MywgMTA4NjUsIAotICAgIDc0NTcwLCA0MzI3OSwgNjQxODYsIDAsIDc4NzE0LCA2NDE5MSwgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgCi0gICAgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIAotICAgIDMwODIsIDAsIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCA3MDc5LCA1ODU2LCAxMjcwNDMsIDUxNjMsIDc4ODA5LCAKLSAgICAxMjgxNjIsIDE4MTcsIDY2NzI0LCA3ODUzOCwgMCwgMTA1NjQsIDc3NjMsIDEzMDc3LCA0MTgxMywgNDQwMCwgNDE3NDUsIAotICAgIDY0MjA3LCAxMDI3NSwgODkyNSwgMTAzNzEsIDEwMzA3LCA0MTgxNCwgNDI0OCwgMCwgMCwgNDU0MSwgNjI5OSwgNjQyMDQsIAotICAgIDY0MjAzLCA2NDIwMSwgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMCwgNDIxNTYsIDc4Njg4LCAwLCA2NDE5MywgNjQxOTIsIAotICAgIDY1MjIzLCA5OTQzLCA2NDE5NywgNjQxOTYsIDY0MTk1LCA2NDE5NCwgMTMyODIsIDY0MTc1LCA2NDE3NCwgNjQxNzMsIAotICAgIDc4MTg5LCA4NDYsIDc4MTg2LCA5OTY1LCAwLCAwLCAwLCAwLCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIAotICAgIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIAotICAgIDEwMjQ3LCA0Mjc2OCwgNzE1LCA2NDE2MSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAxMjAzNzgsIDAsIDExMzUyLCAKLSAgICA1NTAsIDk5MTAsIDAsIDAsIDY2NTc5LCAxMTU1MSwgMCwgMTk1MDgwLCA5NTA0LCA3MTg3LCAwLCAxMDM3MywgMCwgCi0gICAgMTIwNzkxLCAxMDI2MSwgMTAyNTMsIDY0MDQsIDEwMjc3LCA3ODE4MywgMTE5ODQsIDE1NTIsIDY1MjIyLCA2OTk4LCAKLSAgICA3ODE4MCwgMCwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAwLCA4ODI3LCAxMTQ2LCA1MDY1LCAKLSAgICA3ODE5NiwgNzgxOTIsIDY4MTM2LCA3ODE5MCwgNDM0MTIsIDUwNjQsIDI0MzEsIDAsIDk0NTAsIDE4MDksIDAsIDc4MjAwLCAKLSAgICA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMCwgOTc4NSwgNjQ3MTYsIDAsIDM5MzMsIDc0NTU5LCAKLSAgICA0NzQwLCA3OTU0LCAwLCAwLCA0MjYwOSwgMCwgNzQxNzUsIDAsIDEyNzAxNiwgMCwgMCwgNDIxMzAsIDAsIDUxNTEsIAotICAgIDkxNzgyOSwgOTE3ODIzLCAwLCAwLCAwLCA3NjIwLCAzODAwLCA2NTEyMiwgMCwgMCwgODM1NSwgNzg1NCwgMCwgOTU0LCAKLSAgICA2NDkyNywgNDE4NSwgNDEwNDUsIDEyNzE0MSwgNDE0MzgsIDQxNDM5LCA2ODY2NiwgMTA3MTEsIDQ1OTMsIDEyNzc0NSwgCi0gICAgMTIwNTg0LCAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgCi0gICAgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIAotICAgIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgMCwgMCwgOTkxNiwgMTE3MDEsIDc4MzYsIAotICAgIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIDg4NjMsIDkyNDMxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCAwLCA3NDM1OCwgCi0gICAgODYxOCwgMCwgOTkwOCwgMCwgMCwgMCwgMzkzNywgMTIzMTIsIDAsIDAsIDAsIDY0NzgxLCA5MTIsIDYzNDksIDQ1MzYsIAotICAgIDExOTk2MywgNzQ1MzIsIDAsIDYyNDQsIDAsIDE5NDU4MCwgMzkzNSwgMTIwNjY1LCAwLCAwLCAxMTk1MCwgNTM5MiwgCi0gICAgNDIyNDgsIDY1MTI5LCA2ODY1NiwgNTM5NywgMCwgMTIwNDYsIDEyNTk5LCAwLCAwLCA1Mzk1LCAwLCA1MzkzLCAzNTQsIAotICAgIDY4NjE1LCAxMTk5NDgsIDc4NTAzLCAwLCAwLCA0MjAzOSwgMCwgMCwgNjQxNDIsIDYyNiwgMCwgNTg5NSwgMCwgMCwgNTc4MCwgCi0gICAgMCwgMCwgMTI4ODc0LCAwLCAwLCA0MzI5NywgMCwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCAKLSAgICA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAKLSAgICAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCAKLSAgICA5MjI4NywgMTI4MjI0LCAwLCAwLCA3NDA0NiwgMTIwNTgzLCA0OTExLCA5ODgsIDkxNzgwNywgMCwgMCwgNDMwNjEsIDcwNTQsIAorICAgIDk4MzQyMiwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCAKKyAgICA5ODM2MDEsIDAsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCAKKyAgICA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAxMjg1ODEsIDEyNzU4LCAzODY1LCAwLCAwLCAxMDUwMCwgCisgICAgMCwgMTE5MDI0LCA3ODAyOCwgOTI0MDgsIDk4MzAsIDQzNjQyLCAzODksIDEwODkzLCA3NTIxLCAxMjc4NzksIDQ4NzIsIAorICAgIDU0NjMsIDAsIDMxMjUsIDk1NjcsIDAsIDQ4NzgsIDU0NTksIDQ2MDQsIDkxNzkzMSwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAorICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA5ODM0MzEsIDc4NzE0LCA2NDE5MSwgCisgICAgNjQxOTAsIDg4OTgsIDY0MTg4LCAwLCA0MTAzMCwgNzg4MzYsIDAsIDkxNzgzNSwgNzg4MjAsIDkxNzgzNCwgMCwgNzg4MDUsIAorICAgIDQxMDMxLCA3ODgwMSwgMTE5NjAsIDY3NDUsIDMwODIsIDk4MzQyOSwgNzg1MzksIDczOTE5LCAxMDU3MywgNDE3NDQsIAorICAgIDcwNzksIDU4NTYsIDEyNzA0MywgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAwLCAxMDU2NCwgCisgICAgNzc2MywgMTMwNzcsIDQxODEzLCA0NDAwLCA0MTc0NSwgNjQyMDcsIDEwMjc1LCA4OTI1LCAxMDM3MSwgMTAzMDcsIDQxODE0LCAKKyAgICA0MjQ4LCAwLCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAorICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAorICAgIDEzMjgyLCA2NDE3NSwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgMCwgMCwgMCwgMCwgMjU0MywgCisgICAgMTIxNjMsIDMxMDgsIDk3NDUsIDY0MTY3LCA2NDE2NiwgNjQxNjUsIDY0MTY0LCAyMTEwLCA5MjE3NiwgNjQxNjksIDY0MTY4LCAKKyAgICA2NDk0OSwgMTA5NzIsIDEwMjUxLCAxMDI0NywgNDI3NjgsIDcxNSwgMjI5NSwgNDMyOTksIDk0NTMsIDUzNDgsIDEwOTQzLCAKKyAgICAxMjAzNzgsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNjcwNSwgMCwgNjY1NzksIDExNTUxLCAwLCAxOTUwODAsIDk1MDQsIAorICAgIDcxODcsIDAsIDEwMzczLCAwLCAxMjA3OTEsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgCisgICAgNjUyMjIsIDY5OTgsIDc4MTgwLCAwLCAzMTI4LCA0Nzg5LCA1MDY3LCA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIAorICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgCisgICAgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAKKyAgICAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMCwgNDI2MDksIDAsIDc0MTc1LCAwLCAxMjcwMTYsIDAsIDk4Mzg2NCwgCisgICAgNDIxMzAsIDAsIDUxNTEsIDkxNzgyOSwgOTE3ODIzLCAwLCA5Mzk4MCwgMCwgNzYyMCwgMzgwMCwgNjUxMjIsIDAsIDAsIAorICAgIDgzNTUsIDc4NTQsIDAsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIAorICAgIDEwNzExLCA0NTkzLCAxMjc3NDUsIDEyMDU4NCwgOTgzNDAwLCA2NDc3NCwgODA1MywgMTA1MzIsIDY2NzI3LCAwLCAwLCAwLCAKKyAgICA2NDc1OSwgNjM4MSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCA0Mzc4NywgCisgICAgNzgyMDQsIDY0MTMxLCAzMTE5LCA5MTc4MTQsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCAwLCA3Nzg3NiwgNjM2LCAxMTY5OCwgCisgICAgMCwgOTgzNDQzLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgOTI0MzEsIAorICAgIDExOTk2MCwgMTQ3NywgNDMyODksIDAsIDc0MzU4LCA4NjE4LCA5ODMzOTQsIDk5MDgsIDk4Mzk3MiwgMCwgMCwgMzkzNywgCisgICAgMTIzMTIsIDAsIDk4MzM5NSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAxMjY1OTQsIDYyNDQsIAorICAgIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCA5ODM0NjgsIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgNjUxMjksIDY4NjU2LCAKKyAgICA1Mzk3LCAwLCAxMjA0NiwgMTI1OTksIDAsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgMzU0LCA2ODYxNSwgMTE5OTQ4LCAKKyAgICA3ODUwMywgMCwgMCwgNDIwMzksIDAsIDAsIDY0MTQyLCA2MjYsIDAsIDU4OTUsIDAsIDAsIDU3ODAsIDAsIDAsIDEyODg3NCwgCisgICAgMCwgMCwgNDMyOTcsIDk4MzA3OSwgNDMxMSwgNDY0NCwgODgxOCwgMCwgMTI4MTg2LCAwLCA3MTQ1LCAzOTE4LCA2NjQ1MiwgCisgICAgMzc5NywgMTY0NCwgOTIzNDYsIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIAorICAgIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCAxMTk5NDIsIDYyNDksIDQyMTE3LCA5MjI4NywgCisgICAgMTI4MjI0LCAwLCAwLCA3NDA0NiwgNDM3NDUsIDQ5MTEsIDk4OCwgOTE3ODA3LCAwLCA5ODM0NjAsIDQzMDYxLCA3MDU0LCAKICAgICA2NDE0NywgMCwgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCAxMjAwMDYsIDExOTgxLCAxMjIwMiwgMCwgCiAgICAgMTEwMzIsIDY3NjU0LCA2MDkzLCAxMTYwOCwgOTc1LCA2ODY2MiwgNjU4NDMsIDE3MCwgMCwgMCwgNDE2OSwgMCwgNDE4NTksIAogICAgIDYwNTgsIDEyMDQwMSwgMTMyMDMsIDEyMDY1NywgMCwgMCwgNjg2NTcsIDk4MTgsIDEwMTc4LCAxMDMyNCwgNDIxMDYsIAogICAgIDU4OTgsIDc0NTQwLCA0NzM4LCA0MTg1NiwgNzA2MiwgOTE3ODY1LCA0NzM3LCAxMTc3OSwgNDc0MiwgMTIwNTY0LCA5MjM5MSwgCi0gICAgNzM3MzYsIDAsIDk4MjUsIDY0NDgsIDY3MTUsIDEyNzAwOCwgNDgzMSwgMCwgOTI1MjUsIDAsIDUzMDAsIDQ3NDEsIDQyMTA4LCAKLSAgICAwLCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIDAsIDEyNzMzMSwgCi0gICAgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDAsIDc4NzYsIDY4MTMyLCA5MTc4NzIsIDM5MjgsIDkxNzg3MCwgNDMzNzgsIAotICAgIDEwNzA2LCA3MTk4LCAwLCA0ODQyLCAxMjA1MywgMTI4MTI5LCAwLCA0ODQxLCAwLCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgCi0gICAgMTQ5MCwgMCwgMTE5NTkxLCAwLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgCi0gICAgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCA0ODI1LCA2OTI0MCwgOTE3ODUyLCAKLSAgICA2ODY1NSwgMCwgMCwgMCwgMCwgNjg2MjgsIDAsIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIAotICAgIDAsIDU5MDUsIDEyMzM5LCA4OTE5LCA3Mzk1MywgMTA5MDcsIDY1MjYxLCAxMTAyMywgMTE5NTU5LCA0ODMwLCA5MTM0LCAKLSAgICA3ODY2NiwgNjQxMjYsIDQzMDExLCAwLCAwLCA2NDEwMSwgMCwgMCwgNDgyNCwgMTA2MTQsIDEyMDM5MCwgMCwgMTg4OCwgCi0gICAgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCAKLSAgICA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIAotICAgIDAsIDAsIDAsIDExOTA1MywgMCwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAwLCAwLCA0MDE3LCAxMjgyNywgNTI0MSwgCi0gICAgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCAKLSAgICA5MTc1NjQsIDAsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAwLCA2NjIwMiwgODk1NywgNDEzOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTI3NDAsIDEyODcwMiwgNDcyMiwgNjgxNiwgMTI3NzkzLCAxMjc1OSwgNDcyNSwgMCwgNDcyNiwgCi0gICAgMCwgMCwgMCwgOTE3OTA0LCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAwLCAKLSAgICAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA2NDIxNSwgNjQyMTQsIDE2NTYsIDQxODMxLCAwLCAKKyAgICA3MzczNiwgOTgzMzU2LCA5ODI1LCA2NDQ4LCA2NzE1LCAxMjcwMDgsIDQ4MzEsIDAsIDkyNTI1LCAwLCA1MzAwLCA0NzQxLCAKKyAgICA0MjEwOCwgOTgzMzQ2LCA2NDE1OSwgNDczNiwgNjQxNDgsIDAsIDg0OSwgOTIxOTEsIDc4NDkxLCA0MzI4OCwgMCwgNjY2MjAsIAorICAgIDkxNzkxNiwgMTI3MzMxLCA2NTU0OSwgOTQ5NiwgNjQ1OTgsIDExODg2NiwgOTgzMzU4LCA3ODc2LCA2ODEzMiwgOTE3ODcyLCAKKyAgICAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMCwgNDg0MiwgMTIwNTMsIDEyODEyOSwgMCwgNDg0MSwgMCwgCisgICAgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDAsIDExOTU5MSwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgMCwgMTAxMTQsIAorICAgIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgOTE3ODQ5LCAKKyAgICA0ODI1LCA2OTI0MCwgOTE3ODUyLCA2ODY1NSwgMCwgOTgzMzgwLCAwLCAwLCA2ODYyOCwgOTgzMzM5LCA5ODUwLCAxMTg5MzcsIAorICAgIDM2NywgMTQ3MiwgOTE3ODU5LCA2Njg3LCAxMjc0LCAwLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgCisgICAgMTEwMjMsIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgMCwgMTI2NjI2LCA2NDEwMSwgMCwgMCwgCisgICAgNDgyNCwgMTA2MTQsIDExOTY1OSwgMCwgMTg4OCwgMTk2MCwgNzg2MSwgOTE3ODU2LCA3ODUyNCwgNDE4MzYsIDQzMDEyLCAKKyAgICA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCAwLCA2MjExLCAwLCAzNTgsIDQxOTk3LCA0MTgzMywgMTE0NDIsIAorICAgIDEwNzU4LCA2NTc3NCwgMCwgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCAwLCAwLCAxMTkwNTMsIDAsIDEyNzY1LCAKKyAgICA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgCisgICAgMzkyNCwgMCwgMTEzNjYsIDkxNzg0MywgMCwgMCwgOTE3ODQ2LCA0MTExNiwgOTE3ODQ0LCA5MTc1NjQsIDAsIDExMzYzLCAKKyAgICAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCAxMjY2NDEsIDY2MjAyLCA4OTU3LCA0MTM5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMjc0MCwgMTI4NzAyLCA0NzIyLCA2ODE2LCAxMjc3OTMsIDEyNzU5LCA0NzI1LCA5ODMzNzUsIDQ3MjYsIDAsIAorICAgIDE5NDg5MiwgMCwgMTI4MzIxLCA5MTc5MDUsIDAsIDEyNzU1LCAxMjc2MiwgNDAxNSwgMCwgODA1MiwgNDc2LCAwLCAwLCAKKyAgICAxMjgyOTQsIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAwLCAKICAgICAwLCA0MTg0MywgODcyMCwgMzkwOCwgMTQ1MiwgMTMxMTEsIDAsIDY0MDY3LCAxMjczMjgsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCiAgICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDAsIDAsIAotICAgIDc5MzUsIDI0MjAsIDAsIDExMTQsIDkyNTk5LCA2NzU4NSwgNzg2NzUsIDEyMDA1MywgOTIzNTAsIDEyMDA1MSwgMzkzOCwgCisgICAgNzkzNSwgMjQyMCwgMCwgMTExNCwgOTI1OTksIDY3NTg1LCA3MDEwNCwgMTIwMDUzLCA5MjM1MCwgMTIwMDUxLCAzOTM4LCAKICAgICAxMjAwNTcsIDY1NDE3LCA2NDcxNywgMTIwMDYwLCAxMjAwNjEsIDY1NDE1LCAxMjAwNTksIDYyOTIsIDY1MzAzLCA3OTU1LCAKICAgICA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDkxNzg5MCwgOTE3ODkxLCA2NTE1MiwgNzE5LCAxMjAwNDQsIAogICAgIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCAKICAgICA0NzEyLCA5MTc5MDIsIDkxNzg5OSwgOTE3OTAwLCA2NTQxNiwgODE1NSwgNDcxOCwgMzk0MiwgNDcxNCwgOTYyNSwgMCwgCi0gICAgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAwLCAwLCAwLCAwLCA2NTQxNCwgNjQ1NCwgMTIyOSwgMCwgNjY0MzcsIAotICAgIDY2MDI1LCA3ODY5OSwgMCwgNDI1MDAsIDEyMDUwOCwgNDgwOSwgOTYyMywgOTE3ODc0LCA3ODY5NCwgOTE3ODgwLCAKKyAgICA2MzgzLCAxOTQ3NDQsIDEyMDA2LCAxMjg1NjUsIDAsIDAsIDAsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAxMjY2MDYsIAorICAgIDY2NDM3LCA2NjAyNSwgNzg2OTksIDAsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDkxNzg3NCwgNzg2OTQsIDkxNzg4MCwgCiAgICAgOTE3ODc3LCA5MTc4NzgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDkxNzg4MiwgNTM2NSwgNDU0NSwgODkwMSwgOTI0MjEsIAogICAgIDExOTU1NSwgNDgxMywgMTI4MjYyLCAwLCA1OTI1LCA0ODA4LCA2NDMzMCwgMCwgNjU0NzUsIDExODk0MCwgMTk1MDI4LCAKLSAgICA0ODE0LCAwLCA0ODEwLCAwLCAwLCA2NDkyOCwgMTA1NDMsIDAsIDM1MjIsIDAsIDQxNCwgNjU0MDQsIDAsIDE5NTAyNywgCisgICAgNDgxNCwgMCwgNDgxMCwgMCwgMCwgNjQ5MjgsIDEwNTQzLCAwLCAzNTIyLCA3MTMzNSwgNDE0LCA2NTQwNCwgMCwgMTk1MDI3LCAKICAgICA2NDU2LCA3MzgyMCwgMCwgNjY5MSwgNDIxOTMsIDkyMjI1LCAxMjgxNzEsIDAsIDc0NDk1LCAwLCAwLCAwLCAxMTg4MjAsIAogICAgIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAwLCAwLCA2NTA2MSwgMCwgMCwgMCwgMTIyMzUsIDAsIDAsIAotICAgIDEyNzIzMywgNjQwOTIsIDAsIDY0MDgwLCAwLCA2NDA5MCwgMCwgMCwgMTAxNjIsIDEwMzEwLCAwLCA4NDU0LCAxMjc4ODgsIAotICAgIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCAwLCAwLCAwLCAxMTkyMDIsIDExOTIwMywgMTI1MjYsIAotICAgIDQzMTIwLCAyMzE1LCAwLCAxOTM4LCAxMTkxOTcsIDAsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgCi0gICAgNjk2OTIsIDAsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIDAsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCAwLCAKLSAgICAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAwLCA0MTkzLCA5MjI1MCwgNDI0MSwgMCwgNzk5OCwgMCwgMCwgMCwgMCwgCi0gICAgMjMxNiwgMTE4ODIxLCAwLCAwLCAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgMCwgMzc2MiwgCi0gICAgMTAwMTUsIDEyNzMzNSwgMTE5MjMyLCAwLCA0MTU5MCwgMCwgOTIzNzgsIDM3ODAsIDc0ODUsIDU3NzksIDAsIDQyMDM3LCAwLCAKLSAgICAzOTA2LCAxMjM0OSwgMCwgODMyNiwgMCwgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIDAsIDQzNjEzLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyODAsIDc0NTU4LCAxMjczMzIsIDY4MTM4LCAxMzA3MiwgMTg5NCwgMCwgMCwgNjU0NzgsIAotICAgIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgMCwgMCwgMCwgMCwgMjU1MSwgMCwgNjQ1MywgMTAyMDAsIDYyMzUsIDAsIDExOTIzNywgCi0gICAgMCwgMTI4ODA1LCA0NDcwLCAxMTk2MTMsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAKLSAgICAxMjcxNDMsIDAsIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCAwLCA2OTY4NSwgMCwgMCwgMCwgNDQwMjAsIAotICAgIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCA0NjY4LCAwLCAxMTk2MjQsIDE0NjUsIDEwODUwLCAKKyAgICAxMjcyMzMsIDY0MDkyLCA5ODM0NjIsIDY0MDgwLCAwLCA2NDA5MCwgMCwgNjk5MTMsIDEwMTYyLCAxMDMxMCwgMCwgODQ1NCwgCisgICAgMTI3ODg4LCA0MjAzOCwgMzg3LCA0MTM2MywgMTI3MzcsIDAsIDQ3ODAsIDQzMzY4LCAwLCA2NDMxMCwgNjQ2MjEsIDY3MzIsIAorICAgIDc4MTE2LCAwLCA5ODMxMzksIDAsIDk4MzA3NCwgODg5NiwgMCwgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA5ODM4NjUsIAorICAgIDAsIDk4MzQyNiwgMTE5MjAyLCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAwLCA0NTI5LCAKKyAgICAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAxMTkxOTksIDY5NjkyLCA5ODM0MjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDAsIDAsIAorICAgIDIyOTEsIDEyOTAyLCAwLCA0Mjg5MSwgNjYzMjcsIDc0Mjk4LCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIAorICAgIDAsIDQxOTMsIDkyMjUwLCA0MjQxLCA5ODMwNTcsIDc5OTgsIDAsIDAsIDAsIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCAwLCAKKyAgICAwLCA2NDI5NywgNzQ3OTksIDkyNDQyLCA3NDE0MCwgMCwgNTM3MywgMCwgOTgzODc3LCAzNzYyLCAxMDAxNSwgMTIwNjcyLCAKKyAgICAxMTkyMzIsIDAsIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgMCwgNDIwMzcsIDAsIDM5MDYsIDEyMzQ5LCAKKyAgICAwLCA4MzI2LCAwLCA2NTQ5OCwgMzc2MywgNjk4MywgNTYxOCwgMCwgMzc3OSwgMCwgNDM2MTMsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI4MCwgNzQ1NTgsIDEyNzMzMiwgNjgxMzgsIDEzMDcyLCAxODk0LCAwLCAwLCA2NTQ3OCwgNDMzMTAsIDcyMzEsIDAsIAorICAgIDExNzczLCAwLCAwLCAwLCAwLCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzQzLCAxMTkyMzcsIDAsIDEyODgwNSwgCisgICAgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAwLCA1MzY3LCA4NzU2LCAxMjcxNDMsIDAsIAorICAgIDUzNzcsIDEyMDU4NSwgNjgxNDMsIDE2ODgsIDc4MjQ1LCA5ODMzNDgsIDY5Njg1LCA5ODM3NDcsIDAsIDAsIDQ0MDIwLCAKKyAgICA2ODA4LCA0MTMxOSwgMTMwMCwgMTA2NTAsIDQxNjkyLCA2NDUwNSwgMjI5MCwgMCwgMTE5NjI0LCAxNDY1LCAxMDg1MCwgCiAgICAgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDAsIDAsIDUzNTIsIDAsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCAKICAgICA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgNjk2MzcsIDkyMjQxLCA0MzYwNywgMCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDAsIAogICAgIDc0NDE3LCA0MDE4LCA3MTUwLCA2ODEyNywgMCwgMCwgMCwgMCwgMTI3NTI2LCAyNTYxLCA2ODYyMSwgMzU0MiwgNzE0OCwgCiAgICAgMTIwNzYsIDc5NTEsIDY4MTUyLCAxMTg4NTcsIDUzMDMsIDYyNzYsIDE3MDYsIDAsIDc4NzUxLCA3MTQ2LCAwLCA2NTE1MCwgCi0gICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDAsIDY5NjQxLCAxMDc1MywgCisgICAgNDE4MTksIDAsIDczOTUxLCAxMDg0NywgNDE4MjIsIDk5ODUsIDg2MCwgMCwgMTA1MDYsIDk4MzQyNywgNjk2NDEsIDEwNzUzLCAKICAgICAxMDgzMCwgMCwgNjE1LCA2NDQ5MCwgNzU3NCwgOTI2MTcsIDc3OTIyLCAwLCAxMjkwOSwgNDMwMTYsIDY0NTU5LCAxMjcwMjgsIAotICAgIDAsIDAsIDAsIDIwMjAsIDAsIDQwMjIsIDEyODc4MywgMCwgNzc5MjMsIDAsIDQxNjkxLCAwLCAwLCA3NDMyOSwgMCwgCi0gICAgNjQ2MjIsIDkwNzAsIDAsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAwLCA3MDAwLCAzOTA0LCAwLCAKLSAgICAxMjgxOTgsIDAsIDExODkzMSwgMTE5NjMwLCAxMzEyMywgMTA4NDYsIDM0NTAsIDEyNzM2MCwgNzM5NywgMTE4ODA3LCAwLCAKLSAgICA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAwLCA5NjM2LCAwLCAxMDczOCwgNjk2MzQsIDkzNjcsIAotICAgIDU5MywgNDEwODUsIDM5OTksIDY1MjI2LCA0MTcxMywgMTI3NjQsIDAsIDY0NDA5LCAzNTk2LCAwLCAwLCA5NzYzLCAKKyAgICAwLCAwLCA2Nzk5NiwgMjAyMCwgMCwgNDAyMiwgMTI4NzgzLCAwLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgMCwgNzQzMjksIAorICAgIDAsIDY0NjIyLCA5MDcwLCAwLCA2ODQxMSwgMzkxMSwgNDI4MjksIDQzMTIyLCAxMDMzLCA3NDQ0MCwgMCwgNzAwMCwgMzkwNCwgCisgICAgMCwgMTI4MTk4LCAwLCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCisgICAgMCwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAwLCAzNzc3LCA2ODQ1OCwgMCwgOTYzNiwgMCwgMTA3MzgsIDY5NjM0LCAKKyAgICA5MzY3LCA1OTMsIDQxMDg1LCAzOTk5LCA2NTIyNiwgNDE3MTMsIDEyNzY0LCAwLCA2NDQwOSwgMzU5NiwgMCwgMCwgOTc2MywgCiAgICAgMTIwMjgwLCA5MjE5MiwgMTIzNDcsIDEyNCwgMTI5ODEsIDQxMTI3LCAyMDkyLCA5MjY4NywgMCwgMCwgMCwgMTA4MjAsIAotICAgIDQzOTg3LCAwLCAwLCAxNzY5LCA0MTcxNSwgMjQ2MywgNzg0ODksIDAsIDEyNzcwLCAwLCAxNTM4LCAwLCA0MzEyNCwgMCwgCi0gICAgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKKyAgICA0Mzk4NywgMCwgMCwgMTc2OSwgNDE3MTUsIDI0NjMsIDc4NDg5LCAwLCAxMjc3MCwgMTI2NTAwLCAxNTM4LCAwLCA0MzEyNCwgCisgICAgMCwgMTk1MDU4LCA3Nzk1LCAxMjAzMDAsIDAsIDQ4MjgsIDEyNTgsIDEyNzgwMiwgMjAwNiwgMCwgMCwgOTQ5OCwgMTI3MDMyLCAKICAgICAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIDEyMDI4NywgMTIwMjg2LCAyNjUwLCAKICAgICA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCA1NTIyOCwgMTE3NzQsIDQxMDE2LCAwLCAKICAgICA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgNDEwMTksIDAsIAogICAgIDAsIDY1MjkyLCA2ODIyLCAxMjg2MiwgMCwgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDc4MjA4LCAxMTg4NzksIAotICAgIDU1MjIzLCAwLCAwLCA0MTgyNiwgODg2NSwgNjQwMiwgMCwgMTMyNzksIDc5MTcsIDEyMDM0MCwgMCwgNzczMywgMCwgNDk5OCwgCi0gICAgMCwgOTIzMzIsIDQxOTUwLCAwLCA0MjY4LCAwLCAwLCAwLCA0MDEzLCAwLCAxMDg4MSwgMCwgMCwgMCwgNzQ3ODgsIDIwMTQsIAotICAgIDAsIDAsIDk3NjUsIDAsIDAsIDAsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAwLCAwLCAyMDE1LCAKLSAgICAwLCAwLCAwLCA2NjMxOCwgNDMyMzMsIDAsIDQyNTE3LCAwLCAwLCAwLCAxMjY5OCwgODA5NCwgMTAxMzUsIDY1OTA5LCAKLSAgICA2NDc0LCA3OTQsIDAsIDEyNjU2LCAxMjgxMjIsIDExOTM1MywgMTI4MjcwLCAxNjY1LCAwLCA0ODMzLCAwLCAxMTkzNTEsIAotICAgIDEyNzM2NywgMCwgMTg5LCAxMjYxMSwgMCwgMCwgMjg1OSwgNDgzOCwgMCwgNDgzNCwgNjUwNzgsIDAsIDAsIDQ4MzcsIAotICAgIDEyNzA2MSwgNzcwLCAwLCA4MTEsIDAsIDQxMDQyLCA5MTc1NTEsIDQxMzE4LCA2NDQyNywgMCwgMCwgNzg4NDgsIDM4OTUsIAotICAgIDAsIDc0MzQxLCAzOTc2LCAwLCA0Mjg1OSwgMTAxOTMsIDMxMTYsIDc3NDcsIDAsIDAsIDAsIDAsIDAsIDQzNjg2LCA3ODg0NiwgCi0gICAgNDE4NzcsIDAsIDI4NzEsIDY0NjE0LCAxMjg3ODUsIDk5OSwgMCwgNjM0NSwgNDE4NzYsIDI2NjMsIDIwMTcsIDAsIDAsIAotICAgIDExMDQwLCAxMDE1MCwgMCwgNjQzMDgsIDE1MjIsIDU5NywgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIAotICAgIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIDAsIDEyNTYyLCA0NzgzLCAxMjU2NiwgMTI1NjksIDEyNTU0LCAwLCAKLSAgICAxMDgxMiwgNzg4NTEsIDAsIDAsIDMwNzgsIDE0MDIsIDAsIDEyODI3NSwgMCwgMCwgMTE5MjQ4LCAzOTQsIDMwODgsIDAsIAotICAgIDkyMTcyLCAwLCAzOTkxLCA2NDM5MSwgMCwgMCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAwLCAwLCAwLCAKLSAgICA0MjIzMSwgODI0NiwgMCwgMCwgMCwgNDE4NDAsIDAsIDIzNzcsIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAKLSAgICAxMjU1OSwgMTI1NzAsIDg0ODgsIDEwMDMsIDIzNzMsIDk0NDYsIDc0ODEsIDk0NDgsIDQ4LCAwLCA5NDgwLCA0ODEsIDAsIAotICAgIDk0MzgsIDk0MzksIDk0NDAsIDk0NDEsIDg0NjUsIDk0NDMsIDk0NDQsIDk0NDUsIDk0MzAsIDk0MzEsIDk0MzIsIDk0MzMsIAotICAgIDk0MzQsIDk0MzUsIDM5ODQsIDk0MzcsIDAsIDAsIDk0MjQsIDk0MjUsIDk0MjYsIDk0MjcsIDk0MjgsIDk0MjksIDY0NzU4LCAKLSAgICAyMzYyLCA5NjU1LCAwLCAyMDA0LCA5MDk2LCA5NzgyLCAxMjg4NDgsIDkxNzIsIDEyODU0NSwgMTk5NjUsIDAsIDU5NTUsIAotICAgIDY3NjY2LCAxMTA4LCAwLCA3NDc3MywgMCwgMCwgNjQ3ODIsIDM5MjYsIDkyNDQ4LCA2NTIxMCwgODc5OCwgMCwgOTIxNjUsIAotICAgIDEzOTIsIDAsIDAsIDEyNzM2NCwgMTA2MDYsIDgwNjUsIDExODgwNSwgMTAzNTMsIDEwNDE3LCAwLCAwLCA2NDUyNCwgCi0gICAgOTI0MTgsIDQwMTksIDAsIDAsIDQzMjgwLCA4MjE5LCA2ODQwMiwgMTgxMiwgMCwgMCwgMCwgMCwgNDI0MTAsIDc0NDQ4LCAKLSAgICAxMTkxMzIsIDYwNTQsIDEwNjk3LCAzMTY5LCA0MjI5NywgNDIzMjIsIDEwNjQyLCAzOTA5LCA5OTUwLCAwLCAxMjgxMzksIDAsIAotICAgIDY4Njc4LCAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIAotICAgIDY0NzYwLCAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgCi0gICAgMzYsIDAsIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDAsIDIwMDksIDAsIDAsIDEyNzE0MiwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCAxMjA2OTUsIDg2MjEsIDAsIDEyODUyLCAzMDMxLCAwLCA2NDM2MSwgMCwgMTgyLCAxOTQ3MTgsIAotICAgIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCAwLCA5MDU4LCAzNjYsIDAsIDk4OTIsIDU5NjksIDExNzU0LCAxMDg0OCwgNDU3MCwgCi0gICAgNjUzMDEsIDQ0MDEzLCA0MjU1LCAwLCAxMDEwMiwgNDExODksIDQwMDMsIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCAKLSAgICA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIAotICAgIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAKLSAgICAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgCi0gICAgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIAotICAgIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgCi0gICAgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgCi0gICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgMCwgNDI2NzIsIDQ3MDksIDEwNjgwLCAwLCAKLSAgICA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgOTI0NjcsIDAsIDE3MDAsIDExOTIyMywgMCwgMCwgMTI4MTE5LCAKLSAgICA0MDA0LCAwLCAxMDk2OCwgNDMyOTYsIDAsIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgCi0gICAgMjg3MCwgMCwgNzgyMTgsIDAsIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgMCwgMTIwNDIwLCA5MjQ5MCwgCi0gICAgMTIwMzMxLCA4MTA5LCA0MzEwNSwgMCwgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCAKLSAgICA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgCi0gICAgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIAotICAgIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgCi0gICAgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgMCwgNTk1OSwgMCwgNzM5NzYsIDEyMDMwNSwgNDMzNzEsIDY5NDEsIAotICAgIDExOTM0OSwgMTMyMDUsIDEzMjExLCA1ODAxLCAxMjc2OSwgNjU5MDUsIDQxNjk3LCAxMjgzLCAxMjAzMDIsIDQ3NzksIDAsIAotICAgIDM3MTksIDQwMDYsIDAsIDE5OTU3LCAxMjg3NzMsIDIwMjEsIDExOTMzMiwgMTIwNjk5LCAxMTkxNTAsIDQzMDI4LCA2NTQ5MywgCi0gICAgNDE4MzgsIDM4NzUsIDU5NjIsIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIDc3ODcsIDc4MjM0LCAKLSAgICA2NTQ5NCwgNjgxNTMsIDAsIDAsIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAwLCAwLCA2NjMxNiwgNjU0NjcsIAotICAgIDU3NzEsIDQxMjk4LCAwLCA5NzQyLCA1MjEsIDAsIDEwODAwLCAwLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgCi0gICAgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCAwLCA2NTc4MiwgOTg0MSwgCi0gICAgODg0MywgMTIxNDUsIDkyNDcwLCAxMDA3NCwgNzg1NDgsIDAsIDM3NjksIDAsIDAsIDAsIDAsIDk1NzMsIDAsIDY1MjkwLCAKLSAgICA4ODQ5LCAwLCA2NTg1NSwgNjUxMTIsIDE3OTYsIDEyMDUwNSwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCAwLCAKLSAgICA3Mzg4LCAxMDYyMSwgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDAsIDEyMDQ1NywgMTI2NjEsIDc2MDgsIAotICAgIDEwMzU0LCAxMDQxOCwgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAKLSAgICAxMzkwLCAwLCAwLCA0MjEsIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIAotICAgIDEyMDEyMSwgNjYwMzUsIDAsIDAsIDY1ODUxLCA0MjYwNywgMTI4MTkwLCA5MjQwMywgMzE2OCwgMCwgNDIxMzQsIDAsIAotICAgIDIzNzAsIDI4NDYsIDkyNjA1LCAwLCAwLCAxMjAxMzIsIDAsIDE4MzYsIDAsIDAsIDkyNTU4LCAzNzQwLCA5MjU0NywgNjI5MCwgCisgICAgNTUyMjMsIDAsIDEyODA3MSwgNDE4MjYsIDg4NjUsIDY0MDIsIDAsIDEzMjc5LCA3OTE3LCA3NDc1NSwgMCwgNzczMywgMCwgCisgICAgNDk5OCwgOTgzODg3LCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDAsIDAsIDcwMDYxLCA0MDEzLCAwLCAxMDg4MSwgMCwgMCwgCisgICAgMCwgNzQ3ODgsIDIwMTQsIDAsIDAsIDk3NjUsIDAsIDAsIDAsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAKKyAgICAwLCAwLCAwLCAyMDE1LCAwLCAwLCAwLCA2NjMxOCwgNDMyMzMsIDAsIDQyNTE3LCAwLCAwLCAwLCAxMjY5OCwgODA5NCwgCisgICAgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDAsIDEyNjU2LCAxMjgxMjIsIDExOTM1MywgMTI4MjcwLCAxNjY1LCAwLCA0ODMzLCAKKyAgICA5ODMwNTMsIDExOTM1MSwgMTI3MzY3LCAwLCAxODksIDEyNjExLCAwLCAwLCAyODU5LCA0ODM4LCAwLCA0ODM0LCA2NTA3OCwgCisgICAgMCwgMCwgNDgzNywgMTI3MDYxLCA3NzAsIDAsIDgxMSwgMCwgNDEwNDIsIDkxNzU1MSwgNDEzMTgsIDY0NDI3LCAwLCAKKyAgICAxMjgyMDgsIDc4ODQ4LCAzODk1LCAwLCA3NDM0MSwgMzk3NiwgMCwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0MzY4NiwgNzg4NDYsIDQxODc3LCAwLCAyODcxLCA2NDYxNCwgMTI4Nzg1LCA5OTksIDAsIDYzNDUsIAorICAgIDQxODc2LCAyNjYzLCAyMDE3LCAwLCAwLCAxMTA0MCwgMTAxNTAsIDAsIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAKKyAgICAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgCisgICAgMTI1NjYsIDEyNTY5LCAxMjU1NCwgMCwgMTA4MTIsIDc4ODUxLCAwLCAwLCAzMDc4LCAxNDAyLCAwLCAxMjgyNzUsIDAsIDAsIAorICAgIDExOTI0OCwgMzk0LCAzMDg4LCAwLCA5MjE3MiwgMCwgMzk5MSwgNjQzOTEsIDAsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgCisgICAgNjk2NTksIDczOTE0LCAwLCAwLCAwLCAwLCA0MjIzMSwgODI0NiwgMCwgMCwgMCwgNDE4NDAsIDk4MzYwOSwgMjM3NywgCisgICAgMTI5OCwgNjQwMTEsIDEyNTcyLCAxMTMxOCwgMTI1NTcsIDEyNTU5LCAxMjU3MCwgNzQ3OSwgMTAwMywgMjM3MywgOTQ0NiwgCisgICAgNzQ4MSwgOTQ0OCwgNDgsIDAsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCisgICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMCwgMCwgOTQyNCwgCisgICAgOTQyNSwgOTQyNiwgOTQyNywgOTQyOCwgOTQyOSwgNjQ3NTgsIDIzNjIsIDk2NTUsIDAsIDIwMDQsIDkwOTYsIDk3ODIsIAorICAgIDEyODg0OCwgOTE3MiwgMTI4NTQ1LCAxOTk2NSwgMCwgNTk1NSwgNjc2NjYsIDExMDgsIDAsIDc0NzczLCAwLCAwLCA2NDc4MiwgCisgICAgMzkyNiwgOTI0NDgsIDY1MjEwLCA4Nzk4LCAwLCA5MjE2NSwgMTM5MiwgMCwgMCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgCisgICAgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDAsIDAsIDY0NTI0LCA5MjQxOCwgNDAxOSwgMCwgOTgzMjgwLCA0MzI4MCwgODIxOSwgCisgICAgNjg0MDIsIDE4MTIsIDExOTk2MywgOTgzNjgzLCAwLCAxMjY0ODgsIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAKKyAgICAxMDY5NywgMzE2OSwgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMCwgMTI4MTM5LCA5ODMyNTMsIDY4Njc4LCAKKyAgICAwLCAwLCAxMDQ5LCAwLCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKKyAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAorICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDk4MzEzMCwgMjAwOSwgMCwgMCwgMTI3MTQyLCAKKyAgICA5NjQwLCAxMTk5NTEsIDAsIDEyMDY5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMCwgCisgICAgMTgyLCAxOTQ3MTgsIDkyNzE2LCA5MjU5OCwgMTE5OTUwLCA0MjYxMywgOTA1OCwgMzY2LCAwLCA5ODkyLCA1OTY5LCAKKyAgICAxMTc1NCwgMTA4NDgsIDQ1NzAsIDY1MzAxLCA0NDAxMywgNDI1NSwgMTI3ODg5LCAxMDEwMiwgNDExODksIDQwMDMsIAorICAgIDQxMDI2LCA2ODEwOSwgMTMyOTMsIDQxMTkyLCA2OTYzNSwgMCwgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIAorICAgIDYxMjgsIDAsIDExMDM0LCAxMDkyMywgNjQ0MjMsIDAsIDY1NTA2LCAwLCA2NTg2MSwgNzQwODMsIDkyNjAwLCA5OTMyLCAwLCAKKyAgICA5MjQyMywgMTE5OTU1LCAwLCA5ODE3LCAwLCAxMjAxNDAsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgMTA1NDAsIDY2MjUwLCAKKyAgICA5MDYzLCAxMjcwNDUsIDAsIDExOTk1NCwgMCwgMTI4OTcsIDM3OTIsIDIwMTEsIDAsIDYwNjUsIDQzMTYwLCAwLCAxOTQ3MTUsIAorICAgIDg2OTIsIDQxMTg2LCA0MTgxNiwgNDEwMjMsIDQxODE4LCA0MTE4NywgMTE2NTksIDc5MjIsIDEyNjE0LCAyMDA1LCA4NTIzLCAKKyAgICA3ODAwMiwgMCwgNzUxMywgMTg2MywgNDcxMCwgMCwgNTk1NiwgNzYyMSwgNzgwMDYsIDkyNjI0LCA0NzA1LCA3MTYsIAorICAgIDc4MDA0LCAwLCA0NzA0LCAxMjAwNDAsIDEyMDI3MCwgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgMCwgCisgICAgNjk5MTQsIDQyNjcyLCA0NzA5LCAxMDY4MCwgMTE5MDY1LCA0MzI5MywgMTE5OTQ0LCAwLCAxMTkxNjQsIDEyMDMyOCwgCisgICAgOTI0NjcsIDEwMTg3LCAxNzAwLCAxMTkyMjMsIDAsIDAsIDEyODExOSwgNDAwNCwgMCwgMTA5NjgsIDQzMjk2LCA5ODM2MzMsIAorICAgIDg1MDYsIDAsIDAsIDEyNjk5NiwgMTAwNSwgOTM3LCA3ODIxNiwgNDczNCwgMjg3MCwgMCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgCisgICAgNDcyOSwgMCwgMjM1LCAxMzg0LCA0NzI4LCAwLCAxMjA0MjAsIDkyNDkwLCA3NDQ0OSwgODEwOSwgNDMxMDUsIDk4MzE3NCwgCisgICAgNDczMCwgNDQ3LCAxMzE4NiwgMTUxMywgNDczMywgMTIwNDE1LCAwLCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAxMzgzLCAKKyAgICA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAyNjc0LCAKKyAgICAxMzIzOCwgMTE5MjIsIDAsIDEyMDMzMCwgMzUxMCwgMTMyMzQsIDAsIDEyMDQwNywgNTYwNSwgNDIwOTUsIDExMzY0LCAwLCAKKyAgICAxMzgwLCA2NTYxNywgMTIwMjUzLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAxMjA2ODIsIDk0OTUsIDExOTM0NiwgCisgICAgMCwgNTk1OSwgNjc5ODQsIDczOTc2LCAxMjAzMDUsIDQzMzcxLCA2OTQxLCAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgCisgICAgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgMTIwMzAyLCA0Nzc5LCAwLCAzNzE5LCA0MDA2LCA5ODM1NjksIDE5OTU3LCAKKyAgICAxMjg3NzMsIDIwMjEsIDExOTMzMiwgMTIwNjk5LCAxMTkxNTAsIDQzMDI4LCA2NTQ5MywgNDE4MzgsIDM4NzUsIDU5NjIsIAorICAgIDY0MzQxLCA5MjYxNiwgOTgxNCwgNDM0NTcsIDU4MjcsIDMzMTQsIDc3ODcsIDc4MjM0LCA2NTQ5NCwgNjgxNTMsIDAsIDAsIAorICAgIDEyMDYzNiwgNjQ1MzEsIDEyMDY5MiwgMTk0NjI2LCAwLCAwLCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3ODUsIAorICAgIDk3NDIsIDUyMSwgMCwgMTA4MDAsIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgCisgICAgMCwgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCAKKyAgICA5MjQ3MCwgMTAwNzQsIDc4NTQ4LCAwLCAzNzY5LCAwLCAwLCAwLCA5ODMxMDcsIDk1NzMsIDAsIDY1MjkwLCA4ODQ5LCAwLCAKKyAgICA2NTg1NSwgNjUxMTIsIDE3OTYsIDEyMDUwNSwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCAwLCA3Mzg4LCAxMDYyMSwgCisgICAgNzM4MzgsIDc4NTUzLCA1ODI1LCAxMzAwNywgNjgxNjUsIDAsIDEyMDQ1NywgMTI2NjEsIDc2MDgsIDEwMzU0LCAxMDQxOCwgCisgICAgNDI0MTEsIDIwMjIsIDAsIDE0MDksIDEyMTk1LCA0MDAxLCAzMTEyLCAxMDgyNCwgMTIwNjM5LCAxMzkwLCAwLCAwLCA0MjEsIAorICAgIDQzNTM2LCA1ODQ2LCAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIDEyMDEyMSwgNjYwMzUsIAorICAgIDk4MzkwNCwgMCwgNjU4NTEsIDQyNjA3LCAxMjgxOTAsIDkyNDAzLCAzMTY4LCAwLCA0MjEzNCwgMTE4MzEsIDIzNzAsIAorICAgIDI4NDYsIDkyNjA1LCAwLCAwLCAxMjAxMzIsIDAsIDE4MzYsIDAsIDAsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgCiAgICAgNjUzNzQsIDEyMDQ1MSwgMjM5MCwgMzk0NCwgNjY2MjgsIDEyMDQzNCwgMCwgNjEzNSwgMzExOCwgNzQyNjUsIDExOTA5MywgCi0gICAgMTIwNDQ2LCAwLCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgMCwgMCwgMTA2MTgsIDI1ODQsIDAsIDAsIDAsIDk5OTgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDYyMDQsIDAsIDAsIDgyNzksIDg3NzYsIDY0OTU0LCA0OTc1LCA3NDgwOSwgMTIwMTMwLCA0MjY3LCAKLSAgICAxNjMxLCA0MjIwNiwgMTI3ODY2LCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIDAsIDAsIDEyNTg2LCAKLSAgICAwLCA5MjQyLCAxMjc5MjIsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAwLCA3NzkzLCA3ODI3NSwgOTMyOCwgMCwgCi0gICAgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCA2NzY1MCwgOTIzNDQsIDM5ODYsIDQ0MDI1LCAwLCA4OTEyLCA2NDU1NSwgNzQwOSwgCi0gICAgMCwgMCwgOTU0MSwgNzgyNzYsIDAsIDExMjc1LCA4NTQwLCAxMTQ5OCwgMCwgMCwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCAKLSAgICA0MTA0MSwgNzQ0MTMsIDAsIDAsIDAsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDAsIAotICAgIDAsIDE2MDYsIDEyMDM0OCwgMTIwMzUxLCAzMDkzLCA2ODQzNiwgMCwgMCwgMTIwNjQ5LCAwLCAwLCA0MzEyLCA3NDA5MSwgCi0gICAgMTIwMzM3LCAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDEyMDMzNSwgNDgyNywgMTA4OTQsIDEyODEwLCAKLSAgICA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIDY2NjYwLCAyNDk5LCAwLCAwLCAwLCAxMTk3MywgCisgICAgMTIwNDQ2LCAwLCAwLCA4MTI3LCA4OTc1LCA2NDczOSwgNzk0MywgOTgzNzM0LCAwLCAxMDYxOCwgMjU4NCwgMCwgMCwgMCwgCisgICAgOTk5OCwgMTI4NTY0LCAwLCAwLCAwLCAwLCA2MjA0LCAwLCAwLCA4Mjc5LCA4Nzc2LCA2NDk1NCwgNDk3NSwgNzAwNzUsIAorICAgIDEyMDEzMCwgNDI2NywgMTYzMSwgNDIyMDYsIDc3OTgzLCAwLCAxOTUwNDYsIDY1NzAwLCA2NjU2MiwgMCwgNjQ2NDUsIDAsIAorICAgIDAsIDEyNjU4OCwgMTI1ODYsIDAsIDkyNDIsIDEyNzkyMiwgMCwgNDUyMywgNTg0MiwgMTA0OTUsIDMxMjIsIDk4Mzc4OCwgCisgICAgNzc5MywgNzgyNzUsIDkzMjgsIDExOTEwNCwgNzgzOTMsIDEyNjA0LCAwLCA2NjE1LCAyMjg1LCA5MjM0NCwgMzk4NiwgCisgICAgNDQwMjUsIDAsIDg5MTIsIDY0NTU1LCA3NDA5LCAwLCA5ODMzNTAsIDk1NDEsIDc4Mjc2LCAwLCAxMTI3NSwgODU0MCwgCisgICAgMTE0OTgsIDAsIDk4MzM0OSwgNDEwNDAsIDI0NTksIDAsIDEzMDYwLCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgMCwgCisgICAgNjg0MjcsIDEwNDUwLCAxMjU1MSwgNDEwNDMsIDcwMjAsIDEyMDM1MywgMzc2NSwgOTgzMzQyLCAwLCAxNjA2LCAxMjAzNDgsIAorICAgIDEyMDM1MSwgMzA5MywgNjg0MzYsIDAsIDk4MzA2MSwgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCAKKyAgICAxMjAzMzYsIDExOTIzLCA0MDIzLCAxMjAzMzMsIDU3NjMsIDk0MDE1LCA0ODI3LCAxMDg5NCwgMTI4MTAsIDY0NDA2LCAKKyAgICAxMTg3ODUsIDQ0NTUsIDc0MzIxLCA0MzMsIDExOTYyMCwgNjY2NjAsIDI0OTksIDAsIDAsIDExODgzNywgMTE5NzMsIAogICAgIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAwLCAKLSAgICAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIDAsIDEwMzg5LCAwLCAwLCA0ODk1LCAKLSAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCAxOTQ5MjAsIDQ4NiwgNDI5MCwgNTc1OCwgMTI3NTQ2LCAwLCAwLCAKLSAgICA3MDA0LCAwLCA2NTg4MCwgMTI3ODg2LCAxMTkwNDgsIDIzODAsIDExMzgwLCAwLCAwLCAyMzc2LCAwLCAxMTkzMjAsIDAsIAotICAgIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzQxODgsIDEyMDI0MSwgMCwgMCwgMTIwMDQ3LCAxMjg1NzUsIDAsIDAsIDEyMDA0OSwgMCwgCi0gICAgMTg0NywgMCwgMTAzMzksIDAsIDQyMzg0LCAwLCA0MjI3LCA3NDE1OCwgMCwgOTI1MDEsIDQzMDMyLCAwLCA0MjM2NSwgMCwgCi0gICAgMTI2NzEsIDExMzg0LCAwLCAwLCAwLCA2NDc5NywgMCwgNTgyMCwgMCwgMTIwMDUyLCAxMjAwNjUsIDAsIDEyMDA2NCwgCi0gICAgMTIwNjUwLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMCwgNzM3NywgMTI3ODY3LCA0MTc5OSwgNjU1MzAsIAotICAgIDE3MTEsIDEyOTg0LCA0MzAzOSwgMzExNCwgNjI1NSwgMCwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCAwLCA3NDE4NCwgMCwgCi0gICAgMTIwMDU1LCAwLCA0MzE3NSwgMCwgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgCi0gICAgMCwgNTIwLCA0MjAwLCAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgMCwgODM2MCwgMCwgNzgwNDQsIAotICAgIDMyMSwgNDIyOSwgNjQ1NDMsIDkxNzk0NiwgNjU1NjMsIDAsIDkxNzk3NCwgMjg2MSwgNDM3OTMsIDEwMDk1LCAwLCA5MTk1LCAKLSAgICA5MjM4NiwgMTg2MSwgMCwgNzM3MzMsIDAsIDAsIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAzODU5LCAxMjE4MSwgNDE2NjAsIAotICAgIDgyMDksIDAsIDczODY3LCAxMjk3MywgMCwgNzQ3NTcsIDEyNzUxNCwgNDE2NTgsIDAsIDAsIDU3NjAsIDAsIDc0MywgNDQxNCwgCisgICAgMTE5MTI2LCA1ODE3LCAxMjc4MDYsIDU1Mjc3LCAzMTIwLCA5Nzk3LCAwLCAwLCAwLCAxMDM4OSwgMTI2NDg1LCAwLCA0ODk1LCAKKyAgICA2NTM1OCwgMCwgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDAsIDAsIAorICAgIDcwMDQsIDAsIDY1ODgwLCAxMjc4ODYsIDExOTA0OCwgMjM4MCwgMTEzODAsIDAsIDkzOTk2LCAyMzc2LCAwLCAxMTkzMjAsIAorICAgIDAsIDUxOTcsIDEyNzA0NiwgMTI3MDQ3LCAxMjcwNDgsIDIzNjYsIDEyNzA1MCwgMTI3MDUxLCAxMjA1NTQsIDEyMDA0NSwgMCwgCisgICAgMCwgMCwgOTgzMDg0LCAwLCAwLCAwLCA3NDE4OCwgNzEzNDIsIDk4MzA4NiwgOTgzNTczLCAxMjAwNDcsIDEyODU3NSwgMCwgCisgICAgMCwgMTIwMDQ5LCAwLCAxODQ3LCAwLCAxMDMzOSwgOTgzMzU3LCA0MjM4NCwgMCwgNDIyNywgNzQxNTgsIDAsIDkyNTAxLCAKKyAgICA0MzAzMiwgMCwgNDIzNjUsIDAsIDEyNjcxLCAxMTM4NCwgMCwgOTgzNDU3LCAwLCA2NDc5NywgOTgzMzM3LCA1ODIwLCAKKyAgICA5ODMzMzYsIDEyMDA1MiwgMTIwMDY1LCAwLCAxMjAwNjQsIDEyMDY1MCwgNDIxMzcsIDk4OTMsIDI3NTQsIDEyNjY0LCAKKyAgICAxMjAwNjMsIDAsIDczNzcsIDEyNzg2NywgNDE3OTksIDY1NTMwLCAxNzExLCAxMjk4NCwgNDMwMzksIDMxMTQsIDYyNTUsIAorICAgIDk4MzMzMiwgMTE4OTM4LCAwLCAxMDg1MywgOTI2LCA5ODMzNjEsIDc0MTg0LCA5ODMzNjAsIDEyMDA1NSwgMCwgNDMxNzUsIAorICAgIDAsIDQzMDM3LCA0MTc5OCwgNDEwMzUsIDExNTgzLCAxMjc3NjksIDQxODAxLCAxMTkwODgsIDExOTYwNSwgNTIwLCA0MjAwLCAKKyAgICAxMjY5OSwgODMzMSwgMCwgMzA5MSwgNDEwMzQsIDEyNzM1MywgOTgzNjcyLCA4MzYwLCAwLCA3ODA0NCwgMzIxLCA0MjI5LCAKKyAgICA2NDU0MywgOTE3OTQ2LCA2NTU2MywgMCwgOTE3OTc0LCAyODYxLCA0Mzc5MywgMTAwOTUsIDAsIDkxOTUsIDkyMzg2LCAKKyAgICAxODYxLCAwLCA3MzczMywgMCwgMCwgNDMwNDEsIDAsIDQzNzk0LCAxMjg1MzAsIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgCisgICAgMCwgNzM4NjcsIDEyOTczLCAwLCA3NDc1NywgMTI3NTE0LCA0MTY1OCwgMCwgMCwgNTc2MCwgMCwgNzQzLCA0NDE0LCAKICAgICAxMjA3NjYsIDAsIDQyNjMyLCA5MTc5NzMsIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCAKICAgICA0MzM0MSwgMCwgMTk5MTksIDAsIDY0NTMyLCA2NTM2NywgNDM3MTAsIDAsIDAsIDM1MTMsIDAsIDExODg4MywgNDMzNDIsIAogICAgIDExOTA2NCwgNjU1MjksIDY1MzY0LCAxMjgxOTcsIDAsIDY0ODUsIDEzOTcsIDAsIDQxOTg2LCA5MjY3OCwgMCwgMCwgCi0gICAgNzQwOTcsIDAsIDc0NzEsIDEyMDc5LCAwLCAxMjY4MiwgNDMyODcsIDkyMzE3LCAwLCAwLCAwLCAwLCAwLCAxMDk5LCAKLSAgICAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgCi0gICAgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgMTk5MTEsIDQyMTgsIAotICAgIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgMCwgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCAKLSAgICA0MjY0MiwgMTIwMjMwLCA2NDc1MCwgOTM5MCwgMCwgNDE3OTcsIDAsIDAsIDI2NSwgNDE3OTUsIDY0NjY2LCAwLCA0MzUzMCwgCi0gICAgMjc1MiwgMCwgMCwgMCwgNTksIDAsIDAsIDAsIDkyMzcxLCA3Nzg3MywgNDE4MTAsIDAsIDcwMTAsIDAsIDQxODA5LCAKLSAgICA0MTQ5NSwgMTE5MzY0LCAwLCA0MjI1MiwgNDIyMTMsIDgwMDksIDMzMDUsIDQzMDMzLCA1MTEsIDkyNzAwLCA2NjI1NSwgCi0gICAgMTMxMjcsIDEyMDA2NywgMCwgMCwgMCwgOTE3OTc3LCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCAxOTQ4NzAsIDIxMDMsIAotICAgIDEwMzg3LCA0NDUzLCA0MzI3NiwgOTE3NzgzLCAxMzE1OSwgMCwgNjQ4MSwgNDEyMTMsIDAsIDAsIDAsIDAsIDQxOTgzLCAKLSAgICA3NDE5OCwgNjYxNywgOTExNiwgMTE5NjU0LCAwLCA0NjIsIDY4MTEwLCAxMDQ5MywgMCwgODEyOSwgMCwgMCwgNzQ0NzEsIAotICAgIDY2NDQsIDExNjU4LCAwLCAxMjgyNDUsIDM0NTIsIDExOTA2LCA5NTgxLCAxMzg1LCAzMDk4LCAwLCAxMTkwMTMsIDQzMzQwLCAKLSAgICAwLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDAsIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCAKLSAgICA2NDY2MSwgNzIzNSwgMTAxNzAsIDM5NjYsIDg5MTEsIDAsIDQxODQxLCA0MzMzOCwgMCwgMCwgNTcyNiwgNjQ5MTUsIAotICAgIDQyMTc1LCAwLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIDAsIDAsIDQzNzMsIDc4MDU4LCAwLCAKLSAgICA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAwLCA5MjM2NSwgMCwgNjQ5MjIsIDAsIDgxOTAsIAotICAgIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDAsIDExOTEyNSwgMzQzOSwgMTgyNSwgCi0gICAgMTE5MiwgMTIwMTA2LCA4ODkxLCAzMDgwLCAxMjAyMjgsIDIzNDcsIDU0MzAsIDAsIDg5OTAsIDI4NDgsIDAsIDEyODIyMywgCi0gICAgOTI1MjgsIDI0OSwgMCwgMCwgMCwgMTIwNjU4LCAwLCAwLCA4ODgzLCA5MTc4MDIsIDcyOCwgNjgxNzgsIDk5NSwgMCwgMCwgCi0gICAgNjQ4MjYsIDAsIDkxNzc5OCwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgMTk0ODE0LCAwLCAKLSAgICAxMjExMiwgMCwgMCwgMCwgNzQ0MTksIDEyMzM1LCAxMjAxMDQsIDkxNzc5NSwgMzQ0MywgMzEyOSwgMCwgMjEwMiwgNjU0NDUsIAotICAgIDc4MjU4LCA2NDg5MSwgMCwgNzcyNSwgNjUxMDgsIDc4MjU1LCAwLCA4NjI0LCA2OTI0NiwgMTI0NDYsIDQzMjk1LCAwLCAKLSAgICA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAxMDAxMCwgMTI4Njc4LCAzNTQwLCAxMjg2NDksIDgzNSwgMCwgNjk4MTYsIAorICAgIDc0MDk3LCAwLCA3NDcxLCAxMjA3OSwgNjc5OTcsIDEyNjgyLCA0MzI4NywgOTIzMTcsIDAsIDk4MzE0MywgOTgzNjk4LCAwLCAKKyAgICAwLCAxMDk5LCAxMDQ5MCwgMCwgMTA1MDEsIDY1MTgxLCA3NDQ2MywgMCwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCAKKyAgICA3ODIyMiwgMTM0NiwgMCwgOTE3NjMxLCA2NDU3MywgNjQ4OTcsIDQyMywgMTgxOCwgNjUxNDQsIDAsIDgyNzIsIDEyNzgxMiwgCisgICAgMTk5MTEsIDQyMTgsIDMwODcsIDY0OTYwLCAxMjcyMzQsIDQzNTY0LCAwLCAwLCA5NTg0LCAxMDQ2NSwgOTgzODkzLCAKKyAgICA3NDM1OSwgMTI2MjYsIDkxMDYsIDAsIDQyNjQyLCAxMjAyMzAsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMCwgMCwgMjY1LCAKKyAgICA0MTc5NSwgNjQ2NjYsIDEyNjUwOCwgNDM1MzAsIDI3NTIsIDAsIDAsIDk4MzQ4NSwgNTksIDAsIDk4MzU5MywgMCwgOTIzNzEsIAorICAgIDc3ODczLCA0MTgxMCwgMCwgNzAxMCwgMCwgNDE4MDksIDQxNDk1LCAxMTkzNjQsIDAsIDQyMjUyLCA0MjIxMywgODAwOSwgCisgICAgMzMwNSwgNDMwMzMsIDUxMSwgOTI3MDAsIDY2MjU1LCAxMzEyNywgMTIwMDY3LCAwLCA3NDM5NywgMTIwMjM1LCA5MTc5NzcsIAorICAgIDY1OTE1LCAxNDAwLCA0MTgxMiwgMTA2ODUsIDE5NDg3MCwgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIAorICAgIDEzMTU5LCAwLCA2NDgxLCA0MTIxMywgMCwgMCwgMCwgMCwgNDE5ODMsIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDAsIAorICAgIDQ2MiwgNjgxMTAsIDEwNDkzLCAwLCA4MTI5LCAwLCAwLCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgCisgICAgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIDExOTAxMywgNDMzNDAsIDAsIDQxMDMzLCA2NDkzLCA0MjYyNiwgMCwgMCwgCisgICAgMTE0MjYsIDc3ODg3LCAxNjgxLCAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgCisgICAgMCwgNDE4NDEsIDQzMzM4LCAwLCAwLCA1NzI2LCA2NDkxNSwgNDIxNzUsIDAsIDAsIDQxNDk3LCA2NTA0NCwgMTIwMTA5LCAKKyAgICAyODUxLCA0MzAxNywgOTgzNTg5LCAwLCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAKKyAgICAwLCA2NTM2MCwgMCwgOTIzNjUsIDkxNzc4OSwgNjQ5MjIsIDAsIDgxOTAsIDEyMDgzLCAwLCAwLCA2NTA2LCA2NDMxMiwgCisgICAgNzQzNzQsIDIzNjgsIDAsIDQ0MTksIDk4MzgzOCwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMjAxMDYsIDg4OTEsIAorICAgIDMwODAsIDEyMDIyOCwgMjM0NywgNTQzMCwgMCwgODk5MCwgMjg0OCwgMCwgMTI4MjIzLCA5MjUyOCwgMjQ5LCAwLCAwLCAwLCAKKyAgICAxMjA2NTgsIDAsIDAsIDg4ODMsIDkxNzgwMiwgNzI4LCA2ODE3OCwgOTk1LCAwLCAwLCA2NDgyNiwgMCwgOTE3Nzk4LCAKKyAgICAxMjgzNDgsIDAsIDE5OTQ1LCA4MDkxLCA1NTgsIDAsIDEyMjczLCAxOTQ4MTQsIDk4Mzg0MSwgMTIxMTIsIDY5OTEyLCAwLCAKKyAgICAwLCA3NDQxOSwgMTIzMzUsIDEyMDEwNCwgOTE3Nzk1LCAzNDQzLCAzMTI5LCAwLCAyMTAyLCA2NTQ0NSwgNzgyNTgsIAorICAgIDY0ODkxLCAwLCA3NzI1LCA2NTEwOCwgNzgyNTUsIDAsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDAsIDQxODk0LCAwLCAKKyAgICA2Mjc3LCA0MTY3MiwgNDE4OTMsIDEwMDEwLCAxMjg2NzgsIDM1NDAsIDEyODY0OSwgODM1LCA3MTM0MCwgNjk4MTYsIAogICAgIDExOTg2OCwgNzQ0MDgsIDAsIDczOTU5LCA1NDI2LCA0MjU4LCAwLCAwLCA1NDI0LCAxMjgxMjcsIDgyODMsIDAsIDU0MzQsIAotICAgIDAsIDAsIDE5OTE3LCAxMTQwOCwgMCwgMTE5NDcsIDAsIDE0MDQsIDMwOTUsIDExNDMyLCAxMjgzMDcsIDM0NjQsIDY0ODYsIAotICAgIDQ4MTksIDEyODIzMywgMCwgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAwLCA0MzEsIDAsIDAsIAotICAgIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgMCwgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIDEyODUzOCwgNTI2OCwgCi0gICAgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIDM0NzcsIDIyNywgCi0gICAgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAwLCAwLCAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMCwgNzg3MTgsIAotICAgIDkyNzIzLCAzNTQ5LCAwLCA5MTEwLCAxMTk2NjUsIDI3NDMsIDAsIDQzMjkwLCAxOTQ4MTIsIDkwOTcsIDAsIDQzMDE1LCAKLSAgICA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAwLCAwLCAwLCAwLCA0MjY5NCwgNjQ5NDQsIDg5NTIsIDM4NTYsIAotICAgIDExODgxOCwgMCwgNTg3MiwgNjQ5NSwgMCwgMCwgMCwgOTI1NDMsIDAsIDEyMDczMywgMTI4NDksIDM5NTMsIDE4OTcsIDAsIAotICAgIDY1MDk0LCAxMTk5NCwgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMCwgMCwgMCwgNjg0NzMsIDc0MTA0LCA1MjI4LCAKLSAgICAxMjg4MDQsIDc4NjgsIDQzMTg0LCAwLCAwLCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCAwLCAxMTYyLCAwLCAyNjcxLCAwLCAKLSAgICAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgMCwgMCwgMTk5MjEsIDc0MzMxLCAKLSAgICAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgMCwgNTUyNDksIDQ4MjAsIDY1MjM5LCAxOTQ2NjIsIDAsIDAsIAotICAgIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgMCwgNDQzOCwgNjQzODUsIDAsIDE3NTMsIAotICAgIDExMzMxLCA2MTQ3LCAxOTQ5NDEsIDQzMjgyLCA4ODMzLCAwLCAwLCA2NTA0LCA3ODQwOCwgMTI2OTc5LCAxMDcxOSwgMCwgCi0gICAgMTg5OCwgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDAsIDE5NDY3MSwgNjY0OCwgMTA2NzEsIDI1MjgsIDAsIDY0Nzg5LCAKLSAgICA5MTY5LCA4MzgsIDEyNzA5MiwgMTIwNjk3LCA4NDQsIDUwMTQsIDAsIDI1NiwgMCwgOTk5MCwgMCwgNDI3MzksIDkxNzg1MSwgCi0gICAgNzU0MiwgNjU0NjQsIDk3MjYsIDAsIDY0ODksIDEwMDQ4LCA3NDMyNiwgNzg3MTksIDY2NTczLCAwLCA3ODcyNCwgNzg3MTIsIAotICAgIDExNzYxLCAxOTQ2NTUsIDAsIDQxMDk0LCAwLCAwLCAwLCAwLCA5MjY4OSwgNjE5NiwgNjk0NSwgMTk0NjI4LCAxOTQ4OTAsIAotICAgIDEyODE4NCwgMTIwNDkxLCAxMTgxNiwgMTk0OTQzLCA1NzMzLCAyOTMwLCAwLCAwLCA0MTA5OCwgMCwgNDEwOTMsIDAsIAotICAgIDY2NjI2LCA1ODgsIDk3NjAsIDAsIDE5NDcxNywgMTIzOCwgMjAwLCAwLCAxNjYwLCA3MzkxNiwgMCwgMTE4OTA1LCA3NDM2MiwgCi0gICAgMCwgOTI0ODUsIDE5NDY1MSwgMCwgMCwgMzM5NCwgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIAotICAgIDEyNzE4MywgNDMyODQsIDE5NDY1NywgNzgxNywgMTg0MSwgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIAotICAgIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgCi0gICAgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDc4NzEzLCA2NTMyOCwgCi0gICAgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgMCwgMTIwMDksIDEyMzk5LCAwLCA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCAKLSAgICA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDkyNTI3LCA2NTMxNywgNzc4ODAsIDAsIDAsIDAsIAotICAgIDEyMzA0LCAwLCAwLCA2NTMxNSwgOTI2NzAsIDEyODUxMSwgMCwgMCwgMCwgMTE5NjIxLCA5MjUyOSwgNzQ1MzYsIDEyNDQ3LCAKLSAgICA2NDQ4NiwgMTI3Mzc0LCAwLCAwLCAwLCAwLCAwLCA0Mjc2NywgMTA5MTUsIDAsIDEyMDA3LCA0MzY5NSwgMTIwNTIwLCAKLSAgICAxMTk3NSwgMTk0ODc4LCAwLCA5MjYwNCwgMjU1NSwgODYyOSwgMCwgNDMxNjgsIDQxODcyLCA0MzcwNiwgNDQ5NiwgCi0gICAgMTk0ODc5LCAxMjgxNDgsIDAsIDAsIDAsIDAsIDAsIDY0NzMwLCAwLCA2NjcxNCwgNjgyMjIsIDAsIDAsIDY1NTk2LCAKLSAgICA5MjMwNiwgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAxMjc4NCwgNzc5MiwgMTM5MywgMTI3MjQyLCA2Nzg3MSwgNzQzODYsIAotICAgIDAsIDgyMzMsIDEyODIwLCAwLCA2NjgzLCAxOTQ4NzYsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMCwgMTQ3MywgCi0gICAgNDI4MjAsIDY0MzI5LCAxMjc4MzIsIDAsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCAwLCA0MTEwNCwgMCwgCi0gICAgMzQwNiwgMTA1NCwgMTE5MDY1LCAxMDQwLCA2NTQ1MCwgMCwgNDQzNCwgMTA2OSwgMCwgMTE4ODYyLCA2NTczNywgOTE3NzY1LCAKLSAgICAxMjg3MDUsIDAsIDAsIDk2OTMsIDQxOTQzLCAwLCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAxMDU5LCA5NzkwLCAKLSAgICA4OTk1LCAxMjgyODYsIDAsIDY1OTM3LCAwLCA0MTc2NCwgMTA2NDYsIDAsIDExODgzMywgOTIzNzIsIDAsIDc0ODMwLCAKLSAgICA3ODU2OSwgMTI3NDMsIDAsIDY0ODAsIDkxNzc2MSwgNDE3NzksIDQyNTgwLCA2NjYwMSwgMTIyMDcsIDExOTYxOSwgNjMzNSwgCi0gICAgNjY2MDIsIDExMzEyLCA2NDgwNywgMCwgMCwgNDE3NjcsIDAsIDAsIDQzMDIwLCAxMjgyNzEsIDM5NTUsIDc0MjU0LCAwLCAwLCAKLSAgICA5MTc4NjEsIDAsIDc3OTI2LCA5NzcwLCA5MjQ2LCAxMjIzMCwgMCwgMCwgMCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgCi0gICAgMTI3MDkzLCAxMjc5NywgMjc1NSwgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDAsIDQ0MjgsIDEyNzk0LCA3Mzc1NSwgCi0gICAgMTI4MDYxLCA3ODU3NCwgMCwgMCwgMCwgNTc0NywgNzg4MjUsIDAsIDc5NzgsIDQxMDkyLCA3NDU3MSwgMCwgMTE5MjQsIAotICAgIDQzODEyLCA0MjE0NCwgNjUwMTUsIDAsIDU2MywgMCwgMCwgMTI3OTgsIDExMjcxLCA1NywgMCwgMCwgOTE3ODYwLCAKLSAgICAxMTkwNDMsIDAsIDExOTEzNCwgNDMxMzcsIDY5NCwgMCwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIAotICAgIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAwLCAxNTc0LCA3MzgxLCAKLSAgICAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCAKLSAgICA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMCwgNzQwMTUsIDkwNTUsIDQxODUzLCA0ODU4LCA5MTc3ODAsIDAsIDQzNiwgCi0gICAgNDc3MSwgMCwgMjc4NiwgMCwgNDg1NiwgODA1MSwgMCwgMTE5NjA5LCAwLCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIAotICAgIDEyMDczMiwgNjY3MTAsIDExODgzNCwgMCwgNzM5MDYsIDAsIDEyNzExNCwgMCwgMTAyMzQsIDU4NDMsIDExOTM5LCAwLCAKLSAgICA0MjE1NywgMCwgMzE1NywgMTk0OTE4LCA2ODM5MywgMCwgMzUwNCwgMTE5MTc4LCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAotICAgIDEwMjI2LCA2NTE0MiwgMCwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCAwLCAwLCAzODYsIDAsIDg4MzQsIDAsIAotICAgIDEyODE1LCA0MzU3NCwgMCwgNzM5MDcsIDAsIDc0MTk2LCA3MjIwLCA3NDUwNCwgMCwgNzQzMTYsIDAsIDc3OTMyLCA0MzA0LCAKLSAgICA3NDUwMywgODE2MCwgNzg3MDcsIDE5NDc1MywgMCwgMCwgMCwgMTM0OCwgOTIzNDksIDc4NTk3LCAwLCAxMzMwMywgMCwgCi0gICAgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKLSAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgMTk0NzYyLCAKLSAgICAyNjcyLCAzNzM1LCAxMjc0NzEsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCAxMTkwMjQsIDAsIDQzNzQyLCAKLSAgICAwLCA5NDg3LCAxMTk5NTksIDExOTExNywgMzg0MiwgMTI4NzY4LCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIDEyNzk3NiwgCi0gICAgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA3ODQ2OCwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAxOTQ4NTUsIAotICAgIDE5NDY5MCwgMTk0ODU3LCAzNjA0LCAwLCAxMTkxODgsIDEyODg3NywgNzg1NDAsIDc4NTQxLCA0MjUwNywgMTk2MiwgCi0gICAgNDMzMDUsIDc4NDc2LCA0MjUwNSwgMTE2NjAsIDAsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgNzQxNzQsIAotICAgIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgMCwgMTk5LCAxOTQ4NDMsIDQxMDUsIDE5NDg0NSwgMTk0Njk5LCAxOTQ4NDcsIAotICAgIDE5NDcxMCwgMTE5ODc1LCAxMzE0OCwgNzU2MCwgNzg0NzksIDkyMjYsIDc4NDgwLCAxOTUwNzAsIDY0NzIsIDY1ODE0LCAKLSAgICA3Mzk1NCwgMCwgNDcyNCwgMCwgMCwgOTE5MSwgMCwgNjQ0MzIsIDAsIDAsIDE5NTAyNCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIAotICAgIDAsIDY2ODAsIDE5NTA0MiwgMCwgMTk1MDUxLCA2Njc5LCA3NDQxMiwgOTIyNTEsIDE5NDg2NiwgNzQ0MjEsIDExMzgyLCAwLCAKLSAgICAwLCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIAotICAgIDE5NDgzOCwgMTI4MjUyLCA3ODE5NSwgNjU0NDIsIDExOTYxMCwgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAKLSAgICAwLCAxOTQ4MTgsIDEyODg0NSwgMTk0ODIwLCAxOTQ4MTksIDUyOTcsIDcwNDIsIDEzMjg0LCA2MTEyLCA3OTY4LCAxOTQ4MjUsIAotICAgIDczOTI3LCA5MjQ0NCwgMTk0NzM2LCA2NTc0NiwgMTI3NDc2LCA3NDQwOSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIAotICAgIDE5NDgzMSwgMTY3NywgMCwgMCwgMTk0ODA2LCA5MTc4NTUsIDExMDkxLCAxMTAxMSwgMjcxOSwgMCwgMCwgMTE5NTk1LCAKLSAgICAxMDE2MCwgMCwgMCwgNzU4NSwgNjUxNjksIDIwNTIsIDQzMDgsIDkyMTc0LCA3NDE3NywgNzUwNSwgNTQzLCA2NDkxNiwgCi0gICAgNjQ3MzYsIDAsIDAsIDY0NjU1LCAwLCAxMTg5MjIsIDIwNjQsIDAsIDQzMTU4LCA3OTAyLCAwLCA2NTI2NSwgMTk0NjM5LCAwLCAKLSAgICAxMjcxNzAsIDAsIDAsIDAsIDAsIDEyOTk0LCA5MjcyOCwgMTA4MjgsIDAsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgMCwgCi0gICAgMCwgMCwgNTA2LCA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDAsIDg4NDEsIDAsIAotICAgIDUxNiwgMCwgMjA2MywgMTE5MDUxLCAzNCwgMTI4ODUwLCAxMjAxODYsIDExNTA0LCAxNjEyLCA3NDMzMywgMTIwMTgyLCAKLSAgICA3NDUyMCwgNzQzMDgsIDEyMDAxLCAxMjAxNzgsIDEwMjQyLCA2NDU2NCwgMTIwMTc5LCAxMjAxNzQsIDY1ODQsIDc3NDksIAotICAgIDExMDM3LCAwLCAxNzU4LCAwLCAxMDY2NywgMTA1NjAsIDEyMDE5NywgOTI1OTMsIDE5MzUsIDExNTE3LCAxMjAxOTMsIAorICAgIDk4MzU5MCwgMCwgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMCwgMTQwNCwgMzA5NSwgMTE0MzIsIDEyODMwNywgMzQ2NCwgCisgICAgNjQ4NiwgNDgxOSwgMTI4MjMzLCAwLCA1NzAsIDgwOTUsIDM2NzIsIDExOTg2NCwgMTQ5OCwgNjc4NjYsIDAsIDEyODUzOSwgCisgICAgNDMxLCAwLCAwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIDk4MzY1NCwgMTMwOTYsIDEyODY0MywgMCwgNDM0MDgsIDk1MTYsIAorICAgIDEyODUzOCwgNTI2OCwgNDIyMzAsIDQyMjIwLCAwLCA0NDUwLCAxMjA1MTEsIDExNTQ3LCA0MzQxNywgMTI4NTQyLCAzNTYsIAorICAgIDM0NzcsIDIyNywgMTA0ODgsIDY4MjAzLCAzODIsIDExNDE4LCAwLCAxOTUwNjYsIDAsIDAsIDAsIDAsIDY0ODQsIDI1NDEsIAorICAgIDY2MDM5LCAwLCA3ODcxOCwgOTI3MjMsIDM1NDksIDAsIDkxMTAsIDExOTY2NSwgMjc0MywgMCwgNDMyOTAsIDE5NDgxMiwgCisgICAgOTA5NywgMCwgNDMwMTUsIDg3ODIsIDAsIDc3NiwgMjUyNCwgNDI3MDcsIDg1NzMsIDAsIDEyNjQ5NCwgMCwgMCwgNDI2OTQsIAorICAgIDY0OTQ0LCA4OTUyLCAzODU2LCAxMTg4MTgsIDAsIDU4NzIsIDY0OTUsIDAsIDAsIDAsIDkyNTQzLCAwLCAxMjA3MzMsIAorICAgIDEyODQ5LCAzOTUzLCAxODk3LCAwLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDAsIAorICAgIDY4NDczLCA3NDEwNCwgNTIyOCwgMTI4ODA0LCA3ODY4LCA0MzE4NCwgMCwgMCwgNzM5ODYsIDQzNDM4LCAwLCA0MzAyMiwgMCwgCisgICAgMTE2MiwgOTE3ODQ3LCAyNjcxLCAwLCAwLCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgNzM4MTEsIDAsIDE5NTAwNSwgCisgICAgMCwgMCwgMTk5MjEsIDc0MzMxLCAxMTQyNCwgMTk1MDA2LCA0NTY3LCA0MTg5MSwgMCwgOTgzNzc5LCA1NTI0OSwgNDgyMCwgCisgICAgNjUyMzksIDE5NDY2MiwgMCwgMTk0NjY1LCA0MzA0MiwgMTE5MjEyLCAxMzc3LCAxMjg2OSwgNDg5NywgNDI4MjEsIDkyNTAsIAorICAgIDAsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTk0OTQxLCA0MzI4MiwgODgzMywgMCwgMCwgNjUwNCwgCisgICAgNzg0MDgsIDEyNjk3OSwgMTA3MTksIDAsIDE4OTgsIDE0MTMsIDQyNDQzLCAwLCA4MDIsIDEyMTQxLCAwLCAxOTQ2NzEsIAorICAgIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgOTE2OSwgODM4LCAxMjAwODcsIDEyMDY5NywgODQ0LCA1MDE0LCAwLCAKKyAgICAyNTYsIDAsIDk5OTAsIDAsIDQyNzM5LCA5MTc4NTEsIDc1NDIsIDY1NDY0LCA5NzI2LCAwLCA2NDg5LCAxMDA0OCwgNzQzMjYsIAorICAgIDc4NzE5LCA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTk0NjU1LCAwLCA0MTA5NCwgMCwgMCwgMTk0ODkzLCAwLCAKKyAgICA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDE5NDg5MCwgMTI4MTg0LCAxMjA0OTEsIDExODE2LCAxOTQ5NDMsIDU3MzMsIAorICAgIDI5MzAsIDAsIDAsIDQxMDk4LCAwLCA0MTA5MywgMCwgNjY2MjYsIDU4OCwgOTc2MCwgMCwgMTk0NzE3LCAxMjM4LCAyMDAsIAorICAgIDk4MzIwNSwgMTY2MCwgNzM5MTYsIDAsIDExODkwNSwgNzQzNjIsIDAsIDkyNDg1LCAxOTQ2NTEsIDAsIDk4MzY5NywgMzM5NCwgCisgICAgMTk0ODk0LCAxMjA2NjgsIDAsIDAsIDEyNzM1OCwgNjYyMTksIDEyNzE4MywgNDMyODQsIDE5NDY1NiwgNzgxNywgMTg0MSwgCisgICAgMTEwNTUsIDEyMDUzMywgMTk0OTc5LCAxOTQ5ODIsIDE2NjksIDEwNzc2LCAxOTQ5ODEsIDc3MDEsIDE5NDk4MCwgMCwgCisgICAgMTk0OTk1LCAxNzMyLCA0MDMwLCAwLCAzOTYzLCA2NjYxMSwgMTI3NTMwLCA0MTc2OCwgNjQ5MSwgMCwgNjUzMjQsIDkxNCwgCisgICAgNjUzMjMsIDgwNzEsIDM1MzgsIDAsIDIyODcsIDY1MzI4LCA5MjQ0MSwgNzQzNjcsIDc2MTQsIDAsIDExODE5LCAwLCAKKyAgICAxMjAwOSwgMTIzOTksIDAsIDY3ODUyLCA2NTUzNywgMCwgMTA4NDEsIDQzNDMwLCA1MzAxLCAwLCA5MjYxOCwgNTczNCwgCisgICAgODk2MCwgMCwgOTI1MjcsIDY1MzE3LCA3Nzg4MCwgMCwgMCwgMCwgMTIzMDQsIDAsIDAsIDY1MzE1LCA5MjY3MCwgMTI4NTExLCAKKyAgICAwLCAwLCAwLCAxMTk2MjEsIDkyNTI5LCA3NDUzNiwgMTI0NDcsIDY0NDg2LCAxMjczNzQsIDEyNjU2MiwgOTgzMTI5LCAwLCAKKyAgICAwLCA5ODM3OTMsIDQyNzY3LCAxMDkxNSwgMCwgMTIwMDcsIDQzNjk1LCAxMjA1MjAsIDExOTc1LCAxOTQ4NzgsIDAsIAorICAgIDkyNjA0LCAyNTU1LCA4NjI5LCAxMjg2NDAsIDQzMTY4LCA0MTg3MiwgNDM3MDYsIDQ0OTYsIDE5NDg3OSwgMTI4MTQ4LCAKKyAgICAxMjAyNDEsIDAsIDAsIDAsIDAsIDY0NzMwLCA3MDA0MSwgNjY3MTQsIDY4MjIyLCAwLCA3MDA3NiwgNjU1OTYsIDkyMzA2LCAKKyAgICAxMTQxNiwgNDI4MCwgNjc2NTUsIDg3NjUsIDEyNzg0LCA3NzkyLCAxMzkzLCAxMjY0NzMsIDY3ODcxLCA3NDM4NiwgMCwgCisgICAgODIzMywgMTI4MjAsIDAsIDY2ODMsIDE5NDg3NiwgMzQ0MiwgMTIxNDQsIDI4NDEsIDEyNTQzLCAwLCAxNDczLCA0MjgyMCwgCisgICAgNjQzMjksIDEyNzgzMiwgMCwgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgNDExMDAsIDAsIDQxMTA0LCA5NDAwMywgMzQwNiwgCisgICAgMTA1NCwgNzEzMjAsIDEwNDAsIDY1NDUwLCAwLCA0NDM0LCAxMDY5LCAwLCAxMTg4NjIsIDY1NzM3LCA5MTc3NjUsIAorICAgIDEyODcwNSwgMCwgOTgzNjg0LCA5NjkzLCA0MTk0MywgMTI2NTY0LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCAwLCAKKyAgICAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDk4MzY4NywgNjU5MzcsIDAsIDQxNzY0LCAxMDY0NiwgMCwgMTE4ODMzLCAKKyAgICA5MjM3MiwgMCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjgwLCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIAorICAgIDEyMjA3LCAxMTk2MTksIDYzMzUsIDY2NjAyLCAxMTMxMiwgNjQ4MDcsIDAsIDAsIDQxNzY3LCAxMTk2MjksIDk4Mzc1NSwgCisgICAgNDMwMjAsIDEyODI3MSwgMzk1NSwgNzQyNTQsIDAsIDk4Mzc0NSwgOTE3ODYxLCAwLCA3NzkyNiwgOTc3MCwgOTI0NiwgCisgICAgMTIyMzAsIDAsIDAsIDAsIDEwNDQ4LCA0MTc4MywgNDE3ODYsIDEyNzA5MywgMTI3OTcsIDI3NTUsIDY0NTcxLCA3ODU3OCwgCisgICAgMTk0OTI3LCA0ODU3LCAwLCA0NDI4LCAxMjc5NCwgNzM3NTUsIDEyODA2MSwgNzg1NzQsIDAsIDc0Mjg0LCAwLCA1NzQ3LCAKKyAgICA3ODgyNSwgMCwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAKKyAgICA5ODM2ODIsIDEyNzk4LCAxMTI3MSwgNTcsIDAsIDAsIDkxNzg2MCwgMTE5MDQzLCAwLCA5NDA1MSwgNDMxMzcsIDY5NCwgMCwgCisgICAgOTg3NiwgMCwgMTE5MTY4LCAwLCA3ODgyMiwgNjQ1MzcsIDAsIDI3NywgNzQzODUsIDcyMjksIDEyNzYxLCAwLCAwLCAKKyAgICAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCAxMjY0NzgsIDE1NzQsIDczODEsIDAsIDI1MjUsIDQ4NTIsIDU3NDksIAorICAgIDY4NDY1LCAxMzAyNywgNDI4MjQsIDEyMDU3NCwgMTAzOSwgNzE1MSwgMTAxNTUsIDU3NDUsIDE4OCwgNDE4NTgsIDExNTkyLCAKKyAgICAwLCA3NDAxNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIDkxNzc4MCwgMCwgNDM2LCA0NzcxLCAwLCAyNzg2LCAwLCA0ODU2LCAKKyAgICA4MDUxLCAwLCAxMTk2MDksIDcxMzI3LCA5NjQ0LCAwLCAwLCAwLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDExODgzNCwgCisgICAgOTgzMzUxLCA3MzkwNiwgMTI4NjgwLCAxMjcxMTQsIDAsIDEwMjM0LCA1ODQzLCAxMTkzOSwgMCwgNDIxNTcsIDAsIDMxNTcsIAorICAgIDE5NDkxOCwgNjgzOTMsIDAsIDM1MDQsIDExOTE3OCwgMCwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgNjUxNDIsIAorICAgIDEyODAyNSwgMzU5NCwgNDI0MjQsIDE5NDk1OSwgNDAsIDEyNjU3LCA5ODM2NTYsIDAsIDM4NiwgMCwgODgzNCwgMCwgCisgICAgMTI4MTUsIDQzNTc0LCAwLCA3MzkwNywgMCwgNzQxOTYsIDcyMjAsIDc0NTA0LCAwLCA3NDMxNiwgMCwgNjUzMjIsIDQzMDQsIAorICAgIDc0NTAzLCA4MTYwLCA3ODcwNywgMTk0NzUzLCAwLCAwLCAxMjg1MjYsIDEzNDgsIDkyMzQ5LCA3ODU5NywgMTI2NTM5LCAKKyAgICAxMzMwMywgMCwgOTIzOTIsIDE5NDc1NSwgNzU5OSwgMTI3OCwgNDM2MTYsIDEzMjY5LCAwLCAwLCA3NDM4NywgNzgxNzksIAorICAgIDc4NTk4LCA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgCisgICAgMTk0NzYyLCAyNjcyLCAzNzM1LCAxMjc0NzAsIDEzMTM4LCA0MjI2NiwgOTQ4NCwgMTA3MjQsIDQxMjAyLCA3MTM2NCwgMCwgCisgICAgNDM3NDIsIDAsIDk0ODcsIDExOTk1OSwgMTE5MTE3LCAzODQyLCAxMjg3NjgsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgCisgICAgMTI3OTc2LCAwLCA0MjUxNiwgNzIyOCwgNzU1OSwgNzQ4MDMsIDc4NDY4LCA3ODczLCAxMTM5OSwgMTE5MjE5LCAxOTQ2OTEsIAorICAgIDE5NDg1NSwgMTk0NjkwLCAxOTQ4NTcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgCisgICAgNDI1MDcsIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAwLCAyMDcyLCA5MjMxMiwgNjk5NSwgNzQxNzMsIAorICAgIDU0MzcsIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDAsIDE5OSwgMTk0ODQzLCA0MTA1LCAxOTQ4NDUsIAorICAgIDE5NDY5OSwgMTk0ODQ3LCAxOTQ3MTAsIDExOTg3NSwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ4MCwgMTk1MDcwLCAKKyAgICA2NDcyLCA2NTgxNCwgNzM5NTQsIDAsIDQ3MjQsIDAsIDAsIDkxOTEsIDAsIDY0NDMyLCA5ODM4MDgsIDk4MzI0MSwgCisgICAgMTk1MDI0LCAxMDE5NiwgNzg4NiwgMCwgNjU4NSwgMCwgNjY4MCwgMTk1MDQyLCAwLCAxOTUwNTEsIDY2NzksIDc0NDEyLCAKKyAgICA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDk4MzYyMiwgOTgzNjI4LCAxMjc4OTEsIDEyNzQ4NCwgMTk0ODMzLCAKKyAgICAxOTQ4MzIsIDY2ODEsIDEyNzQ4MiwgMTI2OTMsIDE5NDgzNiwgNDI3MjcsIDc4MTk2LCAxMjgyNTIsIDc4MTk1LCA2NTQ0MiwgCisgICAgMTE5NjEwLCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDE5NDgxOCwgMTI4ODQ1LCAxOTQ4MjAsIAorICAgIDE5NDgxOSwgNTI5NywgNzA0MiwgMTMyODQsIDYxMTIsIDc5NjgsIDE5NDgyNSwgNzM5MjcsIDkyNDQ0LCAxOTQ3MzYsIAorICAgIDY1NzQ2LCAxMjc0NzYsIDY5ODg5LCA3NDM4OSwgMTI4Njk2LCA0MzQyLCA0MjgzOSwgMTk0ODMxLCAxNjc3LCAwLCAwLCAKKyAgICAxMjY1OTAsIDkxNzg1NSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIDEwMTYwLCAwLCAwLCA3NTg1LCAKKyAgICA2NTE2OSwgMjA1MiwgNDMwOCwgOTIxNzQsIDQzMDAwLCA3NTA1LCA1NDMsIDY0OTE2LCA2NDczNiwgMCwgMCwgNjQ2NTUsIDAsIAorICAgIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIDAsIDY1MjY1LCAxOTQ2MzksIDAsIDEyNzE3MCwgMCwgMCwgMCwgMCwgCisgICAgMTI5OTQsIDkyNzI4LCAxMDgyOCwgOTgzOTM0LCA2MjI4LCA0MzA3LCAzNDgyLCAxMjg1MjcsIDAsIDAsIDAsIDUwNiwgCisgICAgNzQ1NzMsIDQxMTk0LCA2NTczNSwgMjA1NSwgNDMyNTUsIDQxMTk1LCAwLCA4MTY5LCA5ODM2NzEsIDg4NDEsIDAsIDUxNiwgCisgICAgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCisgICAgMTE4MjcsIDc0MzA4LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAorICAgIDExMDM3LCAwLCAxNzU4LCAxMjcwOTIsIDEwNjY3LCAxMDU2MCwgMTIwMTk3LCA5MjU5MywgMTkzNSwgMTE1MTcsIDEyMDE5MywgCiAgICAgMTIwMTk2LCAxMjAxOTUsIDE5MzEsIDEyMDE4OSwgNzQ4MzksIDEyMDE5MSwgMTIxNywgNjQ3MDIsIDEyNjQzLCA4MjUsIAogICAgIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDc4ODM0LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCA3ODgyOSwgCiAgICAgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMCwgMTEzMTMsIDAsIDM0MDMsIDAsIDAsIDY0MzY0LCA5MjI2OSwgCi0gICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCAwLCAwLCAxOTQ4OTgsIDY3NTg5LCA0MTg1MCwgNjQyOTAsIDM0MzMsIAotICAgIDkyMzkzLCAxMjYxNSwgMTU5NCwgNDIxOTIsIDY5MTQsIDY3NjAzLCAwLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIAotICAgIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgCi0gICAgMTI2NjgsIDE5NDkwNCwgMjQ3NywgMTI3Mjg1LCAwLCAxMjczMDEsIDAsIDY3NjA0LCAxOTQ4ODAsIDEyNzIzNSwgNTczLCAKLSAgICAxMjcyODIsIDE5NDg4NCwgMTE0MTcsIDE5NDg4NiwgMTE5ODE0LCAxOTQ4ODgsIDY3NTk5LCAwLCAxOTQ4ODksIDY3NjA3LCAKLSAgICAxMTQ4MiwgMCwgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4ODQyLCA3ODgzOSwgNjg0MTksIDc4ODM3LCAKLSAgICAxMTU4OSwgNDIxOTUsIDE5NDg3MiwgMTk0NTk5LCAxMjcyNjMsIDY0NjAyLCA2NzYxOCwgOTI1MzksIDAsIDQyNzg4LCAKLSAgICA2ODQxNiwgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2ODQ3NiwgOTcxNywgMCwgMCwgOTk3LCAwLCAwLCAKLSAgICA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAxMjc3NjAsIAotICAgIDczNzk2LCAwLCAxMTkyMjgsIDEyMDM1LCAwLCAyODE4LCAwLCAwLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCisgICAgMCwgNzQ1ODIsIDg5OTgsIDEyOTg4LCAwLCA5MTUyLCA5ODM4NDAsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgCisgICAgMzQzMywgOTIzOTMsIDEyNjE1LCAxNTk0LCA0MjE5MiwgNjkxNCwgNjc2MDMsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCAKKyAgICA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIAorICAgIDQxMzkzLCAxMjY2OCwgMTk0OTA0LCAyNDc3LCAxMjcyODUsIDAsIDEyNzMwMSwgMCwgNjc2MDQsIDE5NDg4MCwgMTI3MjM1LCAKKyAgICA1NzMsIDEyNzI4MiwgMTk0ODg0LCAxMTQxNywgMTk0ODg2LCAxMTk4MTQsIDE5NDg4OCwgNjc1OTksIDAsIDE5NDg4OSwgCisgICAgNjc2MDcsIDExNDgyLCAwLCAzOTgxLCAzMzU3LCAwLCA0MjIyMywgNDIwNywgMTI4OCwgNzg4NDIsIDc4ODM5LCA2ODQxOSwgCisgICAgNzg4MzcsIDExNTg5LCA0MjE5NSwgMTk0ODcyLCAxOTQ1OTksIDEyNzI2MywgNjQ2MDIsIDY3NjE4LCA5MjUzOSwgMCwgCisgICAgNDI3ODgsIDY4NDE2LCA2NDQ4MCwgMTk0ODc1LCA4NDIzLCAzMzQ4LCA0NDgsIDY4NDc2LCA5NzE3LCAwLCAwLCA5OTcsIDAsIAorICAgIDAsIDkyNTc3LCAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgCisgICAgNzM3OTYsIDAsIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgMCwgNDE3MiwgMCwgMCwgODM3MywgCiAgICAgMTA4NzMsIDEyMTk3LCAwLCAwLCA5MjI2NSwgNjk3MDYsIDAsIDc4MjEwLCAwLCAxMjgxMTAsIDE5NDg2NSwgMTI2OTgyLCAKICAgICA3NDU2MywgNjQ4MjgsIDExNDE5LCAxOTQ4NjgsIDc2NiwgMTI1NywgMCwgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIAotICAgIDMyNzQsIDEyNzM2NSwgMCwgMCwgMCwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIDY1NjcyLCAwLCAKLSAgICAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgMTk0NjA1LCAwLCAwLCAKLSAgICAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKLSAgICAxMjgwMCwgMCwgNzQyMDMsIDY0NzE4LCAwLCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAKLSAgICAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgCi0gICAgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDEyMDIxMSwgMTIwMjEyLCAxMjAyMTMsIDEyMDIxNCwgMTg3MiwgNjY1MDgsIAotICAgIDEyMDQ2NywgNDEwNzksIDEwNzQ4LCA1NTAyLCAxMTkzMzAsIDQ0NTIsIDAsIDAsIDkyNTI2LCA0NTExLCAwLCAwLCA2NDY3OCwgCi0gICAgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIDAsIDAsIDkwMDMsIDgxOTIsIDAsIDUzMDUsIDk2NTMsIDEwNjE2LCAKLSAgICA4Njk0LCA5NTQ2LCAwLCAwLCAxMjA0NzgsIDEyMDIwMCwgNjUyMDUsIDEyMDIwMiwgNjQwNjMsIDk4NzgsIDc0NzgwLCAKLSAgICAxMTk2MjYsIDc4MjAyLCA2NDA1OCwgODc5OSwgNDIxMzEsIDAsIDY0MDYyLCAxMDI4LCA2NDA2MCwgNjQwNTksIDgzNywgCi0gICAgMTA1NjcsIDAsIDQzMTAzLCAwLCAxMjA3NTQsIDExNDI3LCAyOTAyLCA2NDA0MywgNjQwNDIsIDY2NDY0LCAxMDc1NiwgMCwgCi0gICAgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgMTAzNCwgMzM5MiwgCi0gICAgMTI3NzcxLCA0MzA5MSwgNjQwMzMsIDY0MDMyLCA0MjczNSwgNjQwMzgsIDY0MDM3LCA2NDAzNiwgNjQwMzUsIDQyOTEsIAotICAgIDE5NDkyOCwgNjQwMTUsIDY0MDE0LCA2NDY4MSwgMTk0OTMwLCAwLCA3ODE0NSwgMCwgNDMwOTAsIDAsIDM0NzYsIDg5NzMsIAotICAgIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCA2NDAwOSwgCi0gICAgMjA0LCAwLCA0ODAyLCA0MTExLCA4MjM5LCA5MDk4LCA0ODA1LCA2NDAwMSwgNjQwNTcsIDc4ODUsIDcyNDcsIDY0MDU0LCAwLCAKLSAgICAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIAotICAgIDQxMzQwLCAxMTg5NzUsIDE5NDgzNSwgMTAwMDUsIDEyMzI5LCA0MTMzMywgMCwgODQ4OSwgMTk0MiwgMCwgMTk0ODM0LCAKLSAgICA0MjUyMCwgMTI4MjQ5LCAwLCAwLCAxMDc2MCwgNjQwMjMsIDY0MDIyLCA2NDAyMSwgNjU4MiwgNDM2NzAsIDAsIDY0MDI1LCAKLSAgICA5MTY3LCA0MjE1MSwgNzgyNDQsIDAsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgCi0gICAgNzgyNTIsIDc4MjQ4LCA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgCi0gICAgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAKLSAgICAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIAotICAgIDI5NCwgNDE4NzQsIDAsIDEyNjk5MSwgNjU5MjksIDAsIDAsIDAsIDAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIAotICAgIDE5NDg0NCwgMCwgMTE4Nzk1LCA2MzQzLCA0MzI0NywgMTE5ODg4LCAwLCAxMTk4ODYsIDExOTg5MSwgMTE5ODkyLCAKLSAgICAxMTk4ODksIDExNDMzLCAxMTk4OTUsIDExOTg5NiwgMCwgNzgwMSwgNjU1NzgsIDE5NDgzOSwgMTI5MTUsIDQzOTY4LCAKLSAgICAzMjk3LCA5Njk5LCAxOTQ5NTUsIDExMzUsIDAsIDAsIDEyODUyNSwgMTk5NSwgNjcyMiwgMCwgMCwgMjU1MiwgNDE1NDYsIAotICAgIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIDc4NDk2LCAwLCAwLCA2NjgyLCAwLCA3ODY3OSwgNjQ3MTAsIDQxNTQ3LCAwLCAKLSAgICAyMDEzLCAxMjgyOTEsIDc4NTMwLCA3ODUzMiwgNzg1MjgsIDc4NTI5LCAxMjgzMiwgNzg0OTMsIDgwODEsIDgzNjIsIDM1MzcsIAotICAgIDExOTkwOCwgOTEzNywgNzE1NSwgODk5OSwgMCwgNzg1MzMsIDM0NjYsIDAsIDAsIDE5OTYsIDAsIDM0NTMsIDYyODIsIDAsIAotICAgIDIwMDIsIDIwMDAsIDEyMDE3NSwgNTM3LCAwLCA0MTc5LCA2NTExOSwgMTk5OCwgMCwgMTg0MiwgMCwgOTI2NzQsIDk2MjgsIAotICAgIDY4NDQ2LCAxMjA4MSwgOTgyNiwgNjQ1MDIsIDE3NjcsIDAsIDAsIDAsIDEyMDIwMSwgMCwgMCwgMCwgMzA1OSwgNDQwMjQsIAotICAgIDEyMDIwNCwgMTE5OTUzLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgMCwgMCwgMzU5MiwgCi0gICAgMTAwNzgsIDAsIDAsIDAsIDg1OTIsIDY1ODcwLCA2ODE2NCwgMTI4NzkyLCAxMDc0MiwgMCwgNDI5MTgsIDE5OTQsIDkyODEsIAotICAgIDMyOTYsIDEyODY1LCAxOTk3LCAxODk1LCAKKyAgICAzMjc0LCAxMjczNjUsIDEyNjUyMywgOTQwNDIsIDk4Mzk0MSwgNzQ1MjIsIDQxOTg5LCAwLCAwLCAxMjg3OTgsIDMyNjMsIDAsIAorICAgIDY1NjcyLCAwLCAzMjcwLCA2NDUzOSwgMTE0ODksIDAsIDAsIDAsIDAsIDk1MDUsIDY1NTE4LCAxOTQ3NzYsIDc1NiwgCisgICAgMTk0NjA1LCAwLCAwLCAwLCA3MjYxLCAwLCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgCisgICAgMTI5NDksIDY0ODU2LCAxMjgwMCwgOTgzODkyLCA3NDIwMywgNjQ3MTgsIDExNTA3LCAwLCA5MjQzNCwgMTE4OTI5LCAwLCAKKyAgICAxMTU3OCwgMCwgMTE5Mjk2LCAwLCAwLCAwLCAwLCA3NDU2OCwgOTI1NCwgMCwgMTc5NCwgMTIwMjE3LCA2NDUyMSwgNTYyNCwgCisgICAgMTIwMjIwLCAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCAxMjAyMTIsIAorICAgIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIDExOTMzMCwgNDQ1MiwgMCwgCisgICAgOTgzNzYyLCA5MjUyNiwgNDUxMSwgMCwgOTgzODY4LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCAxOTQ3ODMsIAorICAgIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgOTU0NiwgMCwgMCwgMTIwNDc4LCAKKyAgICAxMjAyMDAsIDY1MjA1LCAxMjAyMDIsIDY0MDYzLCA5ODc4LCA3NDc4MCwgMTE5NjI2LCA3ODIwMiwgNjQwNTgsIDg3OTksIAorICAgIDQyMTMxLCAwLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCAwLCA0MzEwMywgMCwgMTIwNzU0LCAKKyAgICAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgNjQwNDUsIDY0MDQ0LCAKKyAgICA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTk0OTQyLCAxMDM0LCAzMzkyLCAxMjc3NzEsIDQzMDkxLCA2NDAzMywgCisgICAgNjQwMzIsIDQyNzM1LCA2NDAzOCwgNjQwMzcsIDY0MDM2LCA2NDAzNSwgNDI5MSwgMTk0OTI4LCA2NDAxNSwgNjQwMTQsIAorICAgIDY0NjgxLCAxOTQ5MzAsIDAsIDc4MTQ1LCAwLCA0MzA5MCwgMCwgMzQ3NiwgODk3MywgNjQwMTIsIDQyNDczLCA2NDAxMCwgCisgICAgNjQwMDgsIDY0MDA3LCAyMDAzLCA3NzA2LCA2NDUxNywgNzgxNTMsIDI1MzgsIDY0MDA5LCAyMDQsIDAsIDQ4MDIsIDQxMTEsIAorICAgIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgNzI0NywgNjQwNTQsIDk4MzI1OCwgMCwgNDc2NywgOTM0MywgCisgICAgNjQwNDksIDY0MDQ4LCAxMjAwMzQsIDExMzMsIDY0MDUzLCA2NDA1MiwgNDM0NTMsIDY0MDUwLCA0MTM0MCwgMTE4OTc1LCAKKyAgICAxOTQ4MzUsIDEwMDA1LCAxMjMyOSwgNDEzMzMsIDAsIDg0ODksIDE5NDIsIDAsIDE5NDgzNCwgNDI1MjAsIDEyODI0OSwgMCwgCisgICAgMCwgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAwLCA2NDAyNSwgOTE2NywgNDIxNTEsIDc4MjQ0LCAKKyAgICA5ODMyMjYsIDIwMjYsIDY0MDE5LCA2NDAxOCwgNjQwMTcsIDY0MDE2LCAxMjc2OCwgMCwgNzU4MiwgNzgyNTIsIDc4MjQ4LCAKKyAgICA3NzkxNCwgNzgyNDYsIDc4MjQ3LCAwLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgNzUzMiwgNDE0MTQsIAorICAgIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAxMDc1MSwgOTA1MSwgCisgICAgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMCwgNjgyMTgsIDU1Mjc0LCAyMDA4LCA2NDAzMSwgNjQwMzAsIDI5NCwgNDE4NzQsIDAsIAorICAgIDEyNjk5MSwgNjU5MjksIDAsIDAsIDAsIDAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgCisgICAgNjM0MywgNDMyNDcsIDExOTg4OCwgMCwgMTE5ODg2LCAxMTk4OTEsIDExOTg5MiwgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAKKyAgICAxMTk4OTYsIDAsIDc4MDEsIDY1NTc4LCAxOTQ4MzksIDEyOTE1LCA0Mzk2OCwgMzI5NywgOTY5OSwgMTk0OTU1LCAxMTM1LCAKKyAgICAwLCAwLCAxMjg1MjUsIDE5OTUsIDY3MjIsIDk4MzkxNiwgMCwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAorICAgIDc4NDk2LCA5ODMzMTksIDAsIDY2ODIsIDAsIDc4Njc5LCA2NDcxMCwgNDE1NDcsIDk4MzYyMSwgMjAxMywgMTI4MjkxLCAKKyAgICA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAxMTk5MDgsIDkxMzcsIAorICAgIDcxNTUsIDg5OTksIDAsIDc4NTMzLCAzNDY2LCAwLCAwLCAxOTk2LCAwLCAzNDUzLCA2MjgyLCAwLCAyMDAyLCAyMDAwLCAKKyAgICAxMjAxNzUsIDUzNywgMCwgNDE3OSwgNjUxMTksIDE5OTgsIDAsIDE4NDIsIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIAorICAgIDk4MjYsIDY0NTAyLCAxNzY3LCAwLCAwLCAwLCAxMjAyMDEsIDk4MzYzNywgMCwgMCwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgCisgICAgMTE5OTUzLCA5MjY5MywgMCwgMCwgOTI0NTIsIDQxMDAsIDkyMCwgMTgxMSwgMTM1NSwgMCwgMCwgMzU5MiwgMTAwNzgsIDAsIAorICAgIDAsIDAsIDg1OTIsIDY1ODcwLCA2ODE2NCwgMTI4NzkyLCAxMDc0MiwgMCwgNDI5MTgsIDE5OTQsIDkyODEsIDMyOTYsIAorICAgIDEyODY1LCAxOTk3LCAxODk1LCAKIH07CiAKICNkZWZpbmUgY29kZV9tYWdpYyA0NwogI2RlZmluZSBjb2RlX3NpemUgMzI3NjgKICNkZWZpbmUgY29kZV9wb2x5IDMyNzcxCisKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgYWxpYXNlc19zdGFydCA9IDB4ZjAwMDA7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGFsaWFzZXNfZW5kID0gMHhmMDFjMTsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7CisgICAgMHgwMDAwLAorICAgIDB4MDAwMCwKKyAgICAweDAwMDEsCisgICAgMHgwMDAxLAorICAgIDB4MDAwMiwKKyAgICAweDAwMDIsCisgICAgMHgwMDAzLAorICAgIDB4MDAwMywKKyAgICAweDAwMDQsCisgICAgMHgwMDA0LAorICAgIDB4MDAwNSwKKyAgICAweDAwMDUsCisgICAgMHgwMDA2LAorICAgIDB4MDAwNiwKKyAgICAweDAwMDcsCisgICAgMHgwMDA3LAorICAgIDB4MDAwOCwKKyAgICAweDAwMDgsCisgICAgMHgwMDA5LAorICAgIDB4MDAwOSwKKyAgICAweDAwMDksCisgICAgMHgwMDA5LAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQSwKKyAgICAweDAwMEEsCisgICAgMHgwMDBBLAorICAgIDB4MDAwQiwKKyAgICAweDAwMEIsCisgICAgMHgwMDBCLAorICAgIDB4MDAwQywKKyAgICAweDAwMEMsCisgICAgMHgwMDBELAorICAgIDB4MDAwRCwKKyAgICAweDAwMEUsCisgICAgMHgwMDBFLAorICAgIDB4MDAwRSwKKyAgICAweDAwMEYsCisgICAgMHgwMDBGLAorICAgIDB4MDAwRiwKKyAgICAweDAwMTAsCisgICAgMHgwMDEwLAorICAgIDB4MDAxMSwKKyAgICAweDAwMTEsCisgICAgMHgwMDEyLAorICAgIDB4MDAxMiwKKyAgICAweDAwMTMsCisgICAgMHgwMDEzLAorICAgIDB4MDAxNCwKKyAgICAweDAwMTQsCisgICAgMHgwMDE1LAorICAgIDB4MDAxNSwKKyAgICAweDAwMTYsCisgICAgMHgwMDE2LAorICAgIDB4MDAxNywKKyAgICAweDAwMTcsCisgICAgMHgwMDE4LAorICAgIDB4MDAxOCwKKyAgICAweDAwMTksCisgICAgMHgwMDE5LAorICAgIDB4MDAxQSwKKyAgICAweDAwMUEsCisgICAgMHgwMDFCLAorICAgIDB4MDAxQiwKKyAgICAweDAwMUMsCisgICAgMHgwMDFDLAorICAgIDB4MDAxQywKKyAgICAweDAwMUQsCisgICAgMHgwMDFELAorICAgIDB4MDAxRCwKKyAgICAweDAwMUUsCisgICAgMHgwMDFFLAorICAgIDB4MDAxRSwKKyAgICAweDAwMUYsCisgICAgMHgwMDFGLAorICAgIDB4MDAxRiwKKyAgICAweDAwMjAsCisgICAgMHgwMDdGLAorICAgIDB4MDA3RiwKKyAgICAweDAwODAsCisgICAgMHgwMDgwLAorICAgIDB4MDA4MSwKKyAgICAweDAwODEsCisgICAgMHgwMDgyLAorICAgIDB4MDA4MiwKKyAgICAweDAwODMsCisgICAgMHgwMDgzLAorICAgIDB4MDA4NCwKKyAgICAweDAwODQsCisgICAgMHgwMDg1LAorICAgIDB4MDA4NSwKKyAgICAweDAwODYsCisgICAgMHgwMDg2LAorICAgIDB4MDA4NywKKyAgICAweDAwODcsCisgICAgMHgwMDg4LAorICAgIDB4MDA4OCwKKyAgICAweDAwODgsCisgICAgMHgwMDg5LAorICAgIDB4MDA4OSwKKyAgICAweDAwODksCisgICAgMHgwMDhBLAorICAgIDB4MDA4QSwKKyAgICAweDAwOEEsCisgICAgMHgwMDhCLAorICAgIDB4MDA4QiwKKyAgICAweDAwOEIsCisgICAgMHgwMDhDLAorICAgIDB4MDA4QywKKyAgICAweDAwOEMsCisgICAgMHgwMDhELAorICAgIDB4MDA4RCwKKyAgICAweDAwOEQsCisgICAgMHgwMDhFLAorICAgIDB4MDA4RSwKKyAgICAweDAwOEUsCisgICAgMHgwMDhGLAorICAgIDB4MDA4RiwKKyAgICAweDAwOEYsCisgICAgMHgwMDkwLAorICAgIDB4MDA5MCwKKyAgICAweDAwOTEsCisgICAgMHgwMDkxLAorICAgIDB4MDA5MSwKKyAgICAweDAwOTIsCisgICAgMHgwMDkyLAorICAgIDB4MDA5MiwKKyAgICAweDAwOTMsCisgICAgMHgwMDkzLAorICAgIDB4MDA5NCwKKyAgICAweDAwOTQsCisgICAgMHgwMDk1LAorICAgIDB4MDA5NSwKKyAgICAweDAwOTYsCisgICAgMHgwMDk2LAorICAgIDB4MDA5NiwKKyAgICAweDAwOTcsCisgICAgMHgwMDk3LAorICAgIDB4MDA5NywKKyAgICAweDAwOTgsCisgICAgMHgwMDk4LAorICAgIDB4MDA5OSwKKyAgICAweDAwOTksCisgICAgMHgwMDlBLAorICAgIDB4MDA5QSwKKyAgICAweDAwOUIsCisgICAgMHgwMDlCLAorICAgIDB4MDA5QywKKyAgICAweDAwOUMsCisgICAgMHgwMDlELAorICAgIDB4MDA5RCwKKyAgICAweDAwOUUsCisgICAgMHgwMDlFLAorICAgIDB4MDA5RiwKKyAgICAweDAwOUYsCisgICAgMHgwMEEwLAorICAgIDB4MDBBRCwKKyAgICAweDAxQTIsCisgICAgMHgwMUEzLAorICAgIDB4MDM0RiwKKyAgICAweDBDREUsCisgICAgMHgwRTlELAorICAgIDB4MEU5RiwKKyAgICAweDBFQTMsCisgICAgMHgwRUE1LAorICAgIDB4MEZEMCwKKyAgICAweDE4MEIsCisgICAgMHgxODBDLAorICAgIDB4MTgwRCwKKyAgICAweDE4MEUsCisgICAgMHgyMDBCLAorICAgIDB4MjAwQywKKyAgICAweDIwMEQsCisgICAgMHgyMDBFLAorICAgIDB4MjAwRiwKKyAgICAweDIwMkEsCisgICAgMHgyMDJCLAorICAgIDB4MjAyQywKKyAgICAweDIwMkQsCisgICAgMHgyMDJFLAorICAgIDB4MjAyRiwKKyAgICAweDIwNUYsCisgICAgMHgyMDYwLAorICAgIDB4MjExOCwKKyAgICAweDI0NDgsCisgICAgMHgyNDQ5LAorICAgIDB4QTAxNSwKKyAgICAweEZFMTgsCisgICAgMHhGRTAwLAorICAgIDB4RkUwMSwKKyAgICAweEZFMDIsCisgICAgMHhGRTAzLAorICAgIDB4RkUwNCwKKyAgICAweEZFMDUsCisgICAgMHhGRTA2LAorICAgIDB4RkUwNywKKyAgICAweEZFMDgsCisgICAgMHhGRTA5LAorICAgIDB4RkUwQSwKKyAgICAweEZFMEIsCisgICAgMHhGRTBDLAorICAgIDB4RkUwRCwKKyAgICAweEZFMEUsCisgICAgMHhGRTBGLAorICAgIDB4RkVGRiwKKyAgICAweEZFRkYsCisgICAgMHhGRUZGLAorICAgIDB4MUQwQzUsCisgICAgMHhFMDEwMCwKKyAgICAweEUwMTAxLAorICAgIDB4RTAxMDIsCisgICAgMHhFMDEwMywKKyAgICAweEUwMTA0LAorICAgIDB4RTAxMDUsCisgICAgMHhFMDEwNiwKKyAgICAweEUwMTA3LAorICAgIDB4RTAxMDgsCisgICAgMHhFMDEwOSwKKyAgICAweEUwMTBBLAorICAgIDB4RTAxMEIsCisgICAgMHhFMDEwQywKKyAgICAweEUwMTBELAorICAgIDB4RTAxMEUsCisgICAgMHhFMDEwRiwKKyAgICAweEUwMTEwLAorICAgIDB4RTAxMTEsCisgICAgMHhFMDExMiwKKyAgICAweEUwMTEzLAorICAgIDB4RTAxMTQsCisgICAgMHhFMDExNSwKKyAgICAweEUwMTE2LAorICAgIDB4RTAxMTcsCisgICAgMHhFMDExOCwKKyAgICAweEUwMTE5LAorICAgIDB4RTAxMUEsCisgICAgMHhFMDExQiwKKyAgICAweEUwMTFDLAorICAgIDB4RTAxMUQsCisgICAgMHhFMDExRSwKKyAgICAweEUwMTFGLAorICAgIDB4RTAxMjAsCisgICAgMHhFMDEyMSwKKyAgICAweEUwMTIyLAorICAgIDB4RTAxMjMsCisgICAgMHhFMDEyNCwKKyAgICAweEUwMTI1LAorICAgIDB4RTAxMjYsCisgICAgMHhFMDEyNywKKyAgICAweEUwMTI4LAorICAgIDB4RTAxMjksCisgICAgMHhFMDEyQSwKKyAgICAweEUwMTJCLAorICAgIDB4RTAxMkMsCisgICAgMHhFMDEyRCwKKyAgICAweEUwMTJFLAorICAgIDB4RTAxMkYsCisgICAgMHhFMDEzMCwKKyAgICAweEUwMTMxLAorICAgIDB4RTAxMzIsCisgICAgMHhFMDEzMywKKyAgICAweEUwMTM0LAorICAgIDB4RTAxMzUsCisgICAgMHhFMDEzNiwKKyAgICAweEUwMTM3LAorICAgIDB4RTAxMzgsCisgICAgMHhFMDEzOSwKKyAgICAweEUwMTNBLAorICAgIDB4RTAxM0IsCisgICAgMHhFMDEzQywKKyAgICAweEUwMTNELAorICAgIDB4RTAxM0UsCisgICAgMHhFMDEzRiwKKyAgICAweEUwMTQwLAorICAgIDB4RTAxNDEsCisgICAgMHhFMDE0MiwKKyAgICAweEUwMTQzLAorICAgIDB4RTAxNDQsCisgICAgMHhFMDE0NSwKKyAgICAweEUwMTQ2LAorICAgIDB4RTAxNDcsCisgICAgMHhFMDE0OCwKKyAgICAweEUwMTQ5LAorICAgIDB4RTAxNEEsCisgICAgMHhFMDE0QiwKKyAgICAweEUwMTRDLAorICAgIDB4RTAxNEQsCisgICAgMHhFMDE0RSwKKyAgICAweEUwMTRGLAorICAgIDB4RTAxNTAsCisgICAgMHhFMDE1MSwKKyAgICAweEUwMTUyLAorICAgIDB4RTAxNTMsCisgICAgMHhFMDE1NCwKKyAgICAweEUwMTU1LAorICAgIDB4RTAxNTYsCisgICAgMHhFMDE1NywKKyAgICAweEUwMTU4LAorICAgIDB4RTAxNTksCisgICAgMHhFMDE1QSwKKyAgICAweEUwMTVCLAorICAgIDB4RTAxNUMsCisgICAgMHhFMDE1RCwKKyAgICAweEUwMTVFLAorICAgIDB4RTAxNUYsCisgICAgMHhFMDE2MCwKKyAgICAweEUwMTYxLAorICAgIDB4RTAxNjIsCisgICAgMHhFMDE2MywKKyAgICAweEUwMTY0LAorICAgIDB4RTAxNjUsCisgICAgMHhFMDE2NiwKKyAgICAweEUwMTY3LAorICAgIDB4RTAxNjgsCisgICAgMHhFMDE2OSwKKyAgICAweEUwMTZBLAorICAgIDB4RTAxNkIsCisgICAgMHhFMDE2QywKKyAgICAweEUwMTZELAorICAgIDB4RTAxNkUsCisgICAgMHhFMDE2RiwKKyAgICAweEUwMTcwLAorICAgIDB4RTAxNzEsCisgICAgMHhFMDE3MiwKKyAgICAweEUwMTczLAorICAgIDB4RTAxNzQsCisgICAgMHhFMDE3NSwKKyAgICAweEUwMTc2LAorICAgIDB4RTAxNzcsCisgICAgMHhFMDE3OCwKKyAgICAweEUwMTc5LAorICAgIDB4RTAxN0EsCisgICAgMHhFMDE3QiwKKyAgICAweEUwMTdDLAorICAgIDB4RTAxN0QsCisgICAgMHhFMDE3RSwKKyAgICAweEUwMTdGLAorICAgIDB4RTAxODAsCisgICAgMHhFMDE4MSwKKyAgICAweEUwMTgyLAorICAgIDB4RTAxODMsCisgICAgMHhFMDE4NCwKKyAgICAweEUwMTg1LAorICAgIDB4RTAxODYsCisgICAgMHhFMDE4NywKKyAgICAweEUwMTg4LAorICAgIDB4RTAxODksCisgICAgMHhFMDE4QSwKKyAgICAweEUwMThCLAorICAgIDB4RTAxOEMsCisgICAgMHhFMDE4RCwKKyAgICAweEUwMThFLAorICAgIDB4RTAxOEYsCisgICAgMHhFMDE5MCwKKyAgICAweEUwMTkxLAorICAgIDB4RTAxOTIsCisgICAgMHhFMDE5MywKKyAgICAweEUwMTk0LAorICAgIDB4RTAxOTUsCisgICAgMHhFMDE5NiwKKyAgICAweEUwMTk3LAorICAgIDB4RTAxOTgsCisgICAgMHhFMDE5OSwKKyAgICAweEUwMTlBLAorICAgIDB4RTAxOUIsCisgICAgMHhFMDE5QywKKyAgICAweEUwMTlELAorICAgIDB4RTAxOUUsCisgICAgMHhFMDE5RiwKKyAgICAweEUwMUEwLAorICAgIDB4RTAxQTEsCisgICAgMHhFMDFBMiwKKyAgICAweEUwMUEzLAorICAgIDB4RTAxQTQsCisgICAgMHhFMDFBNSwKKyAgICAweEUwMUE2LAorICAgIDB4RTAxQTcsCisgICAgMHhFMDFBOCwKKyAgICAweEUwMUE5LAorICAgIDB4RTAxQUEsCisgICAgMHhFMDFBQiwKKyAgICAweEUwMUFDLAorICAgIDB4RTAxQUQsCisgICAgMHhFMDFBRSwKKyAgICAweEUwMUFGLAorICAgIDB4RTAxQjAsCisgICAgMHhFMDFCMSwKKyAgICAweEUwMUIyLAorICAgIDB4RTAxQjMsCisgICAgMHhFMDFCNCwKKyAgICAweEUwMUI1LAorICAgIDB4RTAxQjYsCisgICAgMHhFMDFCNywKKyAgICAweEUwMUI4LAorICAgIDB4RTAxQjksCisgICAgMHhFMDFCQSwKKyAgICAweEUwMUJCLAorICAgIDB4RTAxQkMsCisgICAgMHhFMDFCRCwKKyAgICAweEUwMUJFLAorICAgIDB4RTAxQkYsCisgICAgMHhFMDFDMCwKKyAgICAweEUwMUMxLAorICAgIDB4RTAxQzIsCisgICAgMHhFMDFDMywKKyAgICAweEUwMUM0LAorICAgIDB4RTAxQzUsCisgICAgMHhFMDFDNiwKKyAgICAweEUwMUM3LAorICAgIDB4RTAxQzgsCisgICAgMHhFMDFDOSwKKyAgICAweEUwMUNBLAorICAgIDB4RTAxQ0IsCisgICAgMHhFMDFDQywKKyAgICAweEUwMUNELAorICAgIDB4RTAxQ0UsCisgICAgMHhFMDFDRiwKKyAgICAweEUwMUQwLAorICAgIDB4RTAxRDEsCisgICAgMHhFMDFEMiwKKyAgICAweEUwMUQzLAorICAgIDB4RTAxRDQsCisgICAgMHhFMDFENSwKKyAgICAweEUwMUQ2LAorICAgIDB4RTAxRDcsCisgICAgMHhFMDFEOCwKKyAgICAweEUwMUQ5LAorICAgIDB4RTAxREEsCisgICAgMHhFMDFEQiwKKyAgICAweEUwMURDLAorICAgIDB4RTAxREQsCisgICAgMHhFMDFERSwKKyAgICAweEUwMURGLAorICAgIDB4RTAxRTAsCisgICAgMHhFMDFFMSwKKyAgICAweEUwMUUyLAorICAgIDB4RTAxRTMsCisgICAgMHhFMDFFNCwKKyAgICAweEUwMUU1LAorICAgIDB4RTAxRTYsCisgICAgMHhFMDFFNywKKyAgICAweEUwMUU4LAorICAgIDB4RTAxRTksCisgICAgMHhFMDFFQSwKKyAgICAweEUwMUVCLAorICAgIDB4RTAxRUMsCisgICAgMHhFMDFFRCwKKyAgICAweEUwMUVFLAorICAgIDB4RTAxRUYsCit9OworCit0eXBlZGVmIHN0cnVjdCBOYW1lZFNlcXVlbmNlIHsKKyAgICBpbnQgc2VxbGVuOworICAgIFB5X1VDUzIgc2VxWzRdOworfSBuYW1lZF9zZXF1ZW5jZTsKKworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfc3RhcnQgPSAweGYwMjAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBuYW1lZF9zZXF1ZW5jZXNfZW5kID0gMHhmMDNhNTsKK3N0YXRpYyBjb25zdCBuYW1lZF9zZXF1ZW5jZSBuYW1lZF9zZXF1ZW5jZXNbXSA9IHsKKyAgICB7MiwgezB4MDEwMCwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMDEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMDQ1LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA2NSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwQzgsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEU4LCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBDOSwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRTksIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMENBLCAweDAzMDR9fSwKKyAgICB7MiwgezB4MDBFQSwgMHgwMzA0fX0sCisgICAgezIsIHsweDAwQ0EsIDB4MDMwQ319LAorICAgIHsyLCB7MHgwMEVBLCAweDAzMEN9fSwKKyAgICB7MiwgezB4MDEyQSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAxMkIsIDB4MDMwMH19LAorICAgIHszLCB7MHgwMDY5LCAweDAzMDcsIDB4MDMwMX19LAorICAgIHszLCB7MHgwMDZFLCAweDAzNjAsIDB4MDA2N319LAorICAgIHsyLCB7MHgwMDRGLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA2RiwgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRDIsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMEYyLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDBEMywgMHgwMzI5fX0sCisgICAgezIsIHsweDAwRjMsIDB4MDMyOX19LAorICAgIHsyLCB7MHgwMDUzLCAweDAzMjl9fSwKKyAgICB7MiwgezB4MDA3MywgMHgwMzI5fX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDEwNCwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMDUsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTA0LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDEwNSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTgsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTE5LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExOCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxMTksIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE2LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDExNywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMTYsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMTE3LCAweDAzMDN9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDB9fSwKKyAgICB7MywgezB4MDA2OSwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDEyRSwgMHgwMzAxfX0sCisgICAgezMsIHsweDAxMkYsIDB4MDMwNywgMHgwMzAxfX0sCisgICAgezIsIHsweDAxMkUsIDB4MDMwM319LAorICAgIHszLCB7MHgwMTJGLCAweDAzMDcsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRBLCAweDAzMDN9fSwKKyAgICB7MywgezB4MDA2QSwgMHgwMzA3LCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA0QywgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNkMsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDRELCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDA2RCwgMHgwMzAzfX0sCisgICAgezIsIHsweDAwNTIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMDcyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE3MiwgMHgwMzAxfX0sCisgICAgezIsIHsweDAxNzMsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTcyLCAweDAzMDN9fSwKKyAgICB7MiwgezB4MDE3MywgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNkEsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMTZCLCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDE2QSwgMHgwMzAzfX0sCisgICAgezIsIHsweDAxNkIsIDB4MDMwM319LAorICAgIHsyLCB7MHgwMEU2LCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI1NCwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNTQsIDB4MDMwMX19LAorICAgIHsyLCB7MHgwMjhDLCAweDAzMDB9fSwKKyAgICB7MiwgezB4MDI4QywgMHgwMzAxfX0sCisgICAgezIsIHsweDAyNTksIDB4MDMwMH19LAorICAgIHsyLCB7MHgwMjU5LCAweDAzMDF9fSwKKyAgICB7MiwgezB4MDI1QSwgMHgwMzAwfX0sCisgICAgezIsIHsweDAyNUEsIDB4MDMwMX19LAorICAgIHszLCB7MHgwOTk1LCAweDA5Q0QsIDB4MDlCN319LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNEfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDRH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNEfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0R9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjk1LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5NSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOTUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOTksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjk5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5OSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEI5QSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCOUEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQjlBLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlFLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5RSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCOUYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQjlGLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEI5RiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBMywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTMsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkEzLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkE0LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBNCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQTQsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQTgsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkE4LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBOCwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBQSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQUEsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkFBLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkFFLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJBRSwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQUUsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQUYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkFGLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJBRiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCMCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjAsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkIwLCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIyLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMiwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjIsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjUsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI1LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNCwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjQsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI0LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkIzLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCMywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjEsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkIxLCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCMSwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJBOSwgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQTksIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkE5LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkJFfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkMxfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkM3fX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQjlDLCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEI5QywgMHgwQkNCfX0sCisgICAgezIsIHsweDBCOUMsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjYsIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI2LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCNiwgMHgwQkNDfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJCRX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQkZ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkMwfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDMX19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzJ9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkM2fX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDN319LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQzh9fSwKKyAgICB7MiwgezB4MEJCNywgMHgwQkNBfX0sCisgICAgezIsIHsweDBCQjcsIDB4MEJDQn19LAorICAgIHsyLCB7MHgwQkI3LCAweDBCQ0N9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkJFfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJCRn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzB9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkMxfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDMn19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQzZ9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkM3fX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDOH19LAorICAgIHsyLCB7MHgwQkI4LCAweDBCQ0F9fSwKKyAgICB7MiwgezB4MEJCOCwgMHgwQkNCfX0sCisgICAgezIsIHsweDBCQjgsIDB4MEJDQ319LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQkV9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkJGfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDMH19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzF9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkMyfX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDNn19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQzd9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkM4fX0sCisgICAgezIsIHsweDBCQjksIDB4MEJDQX19LAorICAgIHsyLCB7MHgwQkI5LCAweDBCQ0J9fSwKKyAgICB7MiwgezB4MEJCOSwgMHgwQkNDfX0sCisgICAgezMsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQkV9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJCRn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkMwfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzF9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDMn19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkM2fX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQzd9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDOH19LAorICAgIHs0LCB7MHgwQjk1LCAweDBCQ0QsIDB4MEJCNywgMHgwQkNBfX0sCisgICAgezQsIHsweDBCOTUsIDB4MEJDRCwgMHgwQkI3LCAweDBCQ0J9fSwKKyAgICB7NCwgezB4MEI5NSwgMHgwQkNELCAweDBCQjcsIDB4MEJDQ319LAorICAgIHs0LCB7MHgwQkI2LCAweDBCQ0QsIDB4MEJCMCwgMHgwQkMwfX0sCisgICAgezMsIHsweDBEQ0EsIDB4MjAwRCwgMHgwREJBfX0sCisgICAgezMsIHsweDBEQ0EsIDB4MjAwRCwgMHgwREJCfX0sCisgICAgezMsIHsweDBEQkIsIDB4MERDQSwgMHgyMDBEfX0sCisgICAgezIsIHsweDEwRTMsIDB4MDMwMn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODB9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzgxfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Mn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg0fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4NX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzg3fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4OH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3ODl9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhBfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4Qn19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEN9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzhEfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc4RX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OEZ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkwfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5MX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzkzfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5NH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk2fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5N319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OTh9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzk5fX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5QX19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTc5RH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3OUV9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxNzlGfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBMH19LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QTF9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0EyfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBN319LAorICAgIHsyLCB7MHgxN0QyLCAweDE3QUJ9fSwKKyAgICB7MiwgezB4MTdEMiwgMHgxN0FDfX0sCisgICAgezIsIHsweDE3RDIsIDB4MTdBRn19LAorICAgIHsyLCB7MHgxN0JCLCAweDE3QzZ9fSwKKyAgICB7MiwgezB4MTdCNiwgMHgxN0M2fX0sCisgICAgezIsIHsweDMwNEIsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDRELCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzA0RiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwNTEsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMDUzLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBBQiwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQUQsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEFGLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBCMSwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQjMsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMEJCLCAweDMwOUF9fSwKKyAgICB7MiwgezB4MzBDNCwgMHgzMDlBfX0sCisgICAgezIsIHsweDMwQzgsIDB4MzA5QX19LAorICAgIHsyLCB7MHgzMUY3LCAweDMwOUF9fSwKKyAgICB7MiwgezB4MDJFNSwgMHgwMkU5fX0sCisgICAgezIsIHsweDAyRTksIDB4MDJFNX19LAorfTsKZGlmZiAtLWdpdCBhL01vZHVsZXMveHhsaW1pdGVkLmMgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCmluZGV4IGVjOTI0ZjIuLjY2MWI2ZTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMveHhsaW1pdGVkLmMKKysrIGIvTW9kdWxlcy94eGxpbWl0ZWQuYwpAQCAtMTg3LDggKzE4Nyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogbnVsbF9yaWNoY29tcGFyZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCiB7Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlUeXBlX1Nsb3QgTnVsbF9UeXBlX3Nsb3RzW10gPSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3ppcGltcG9ydC5jIGIvTW9kdWxlcy96aXBpbXBvcnQuYwppbmRleCA3YWU0ZjBhLi4yZmViMmE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3ppcGltcG9ydC5jCisrKyBiL01vZHVsZXMvemlwaW1wb3J0LmMKQEAgLTQ5LDcgKzQ5LDcgQEAKIC8qIGZvcndhcmQgZGVjbHMgKi8KIHN0YXRpYyBQeU9iamVjdCAqcmVhZF9kaXJlY3RvcnkoUHlPYmplY3QgKmFyY2hpdmUpOwogc3RhdGljIFB5T2JqZWN0ICpnZXRfZGF0YShQeU9iamVjdCAqYXJjaGl2ZSwgUHlPYmplY3QgKnRvY19lbnRyeSk7Ci1zdGF0aWMgUHlPYmplY3QgKmdldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgY2hhciAqZnVsbG5hbWUsCitzdGF0aWMgUHlPYmplY3QgKmdldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmZ1bGxuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpwX2lzcGFja2FnZSwgUHlPYmplY3QgKipwX21vZHBhdGgpOwogCiAKQEAgLTYzLDEwOSArNjMsMTA5IEBACiBzdGF0aWMgaW50CiB6aXBpbXBvcnRlcl9pbml0KFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKnBhdGhvYmosICpmaWxlczsKLSAgICBQeV9VTklDT0RFICpwYXRoLCAqcCwgKnByZWZpeCwgYnVmW01BWFBBVEhMRU4rMl07Ci0gICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKnBhdGgsICpmaWxlcywgKnRtcDsKKyAgICBQeU9iamVjdCAqZmlsZW5hbWUgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuLCBmbGVuOworI2lmZGVmIEFMVFNFUAorICAgIF9QeV9JREVOVElGSUVSKHJlcGxhY2UpOworI2VuZGlmCiAKICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKCJ6aXBpbXBvcnRlcigpIiwga3dkcykpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6emlwaW1wb3J0ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNEZWNvZGVyLCAmcGF0aG9iaikpCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0RlY29kZXIsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgLyogY29weSBwYXRoIHRvIGJ1ZiAqLwotICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShwYXRob2JqKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYXRoKTsKICAgICBpZiAobGVuID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAiYXJjaGl2ZSBwYXRoIGlzIGVtcHR5Iik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIGlmIChsZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoWmlwSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJjaGl2ZSBwYXRoIHRvbyBsb25nIik7Ci0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZiwgUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aG9iaikpOwogCiAjaWZkZWYgQUxUU0VQCi0gICAgZm9yIChwID0gYnVmOyAqcDsgcCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSBBTFRTRVApCi0gICAgICAgICAgICAqcCA9IFNFUDsKLSAgICB9CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwYXRoLCAmUHlJZF9yZXBsYWNlLCAiQ0MiLCBBTFRTRVAsIFNFUCk7CisgICAgaWYgKCF0bXApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIHBhdGggPSB0bXA7CiAjZW5kaWYKIAotICAgIHBhdGggPSBOVUxMOwotICAgIHByZWZpeCA9IE5VTEw7CisgICAgZmlsZW5hbWUgPSBwYXRoOworICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7CisgICAgZmxlbiA9IGxlbjsKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7CiAgICAgICAgIGludCBydjsKIAotICAgICAgICBpZiAocGF0aG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBwYXRob2JqID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGJ1ZiwgbGVuKTsKLSAgICAgICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBydiA9IF9QeV9zdGF0KHBhdGhvYmosICZzdGF0YnVmKTsKKyAgICAgICAgcnYgPSBfUHlfc3RhdChmaWxlbmFtZSwgJnN0YXRidWYpOworICAgICAgICBpZiAocnYgPT0gLTIpCisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBpZiAocnYgPT0gMCkgewogICAgICAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgICAgICBpZiAoU19JU1JFRyhzdGF0YnVmLnN0X21vZGUpKQotICAgICAgICAgICAgICAgIC8qIGl0J3MgYSBmaWxlICovCi0gICAgICAgICAgICAgICAgcGF0aCA9IGJ1ZjsKKyAgICAgICAgICAgIGlmICghU19JU1JFRyhzdGF0YnVmLnN0X21vZGUpKQorICAgICAgICAgICAgICAgIC8qIGl0J3MgYSBub3QgZmlsZSAqLworICAgICAgICAgICAgICAgIFB5X0NMRUFSKGZpbGVuYW1lKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBQeV9DTEVBUihmaWxlbmFtZSk7CiAgICAgICAgIC8qIGJhY2sgdXAgb25lIHBhdGggZWxlbWVudCAqLwotICAgICAgICBwID0gUHlfVU5JQ09ERV9zdHJyY2hyKGJ1ZiwgU0VQKTsKLSAgICAgICAgaWYgKHByZWZpeCAhPSBOVUxMKQotICAgICAgICAgICAgKnByZWZpeCA9IFNFUDsKLSAgICAgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgZmxlbiA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYXRoLCBTRVAsIDAsIGZsZW4sIC0xKTsKKyAgICAgICAgaWYgKGZsZW4gPT0gLTEpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgKnAgPSAnXDAnOwotICAgICAgICBsZW4gPSBwIC0gYnVmOwotICAgICAgICBwcmVmaXggPSBwOwotICAgICAgICBQeV9DTEVBUihwYXRob2JqKTsKKyAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhdGgsIDAsIGZsZW4pOwogICAgIH0KLSAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAibm90IGEgWmlwIGZpbGUiKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKLSAgICBmaWxlcyA9IFB5RGljdF9HZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIHBhdGhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoZmlsZW5hbWUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGZpbGVzID0gUHlEaWN0X0dldEl0ZW0oemlwX2RpcmVjdG9yeV9jYWNoZSwgZmlsZW5hbWUpOwogICAgIGlmIChmaWxlcyA9PSBOVUxMKSB7Ci0gICAgICAgIGZpbGVzID0gcmVhZF9kaXJlY3RvcnkocGF0aG9iaik7CisgICAgICAgIGZpbGVzID0gcmVhZF9kaXJlY3RvcnkoZmlsZW5hbWUpOwogICAgICAgICBpZiAoZmlsZXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbSh6aXBfZGlyZWN0b3J5X2NhY2hlLCBwYXRob2JqLCBmaWxlcykgIT0gMCkKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKHppcF9kaXJlY3RvcnlfY2FjaGUsIGZpbGVuYW1lLCBmaWxlcykgIT0gMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgUHlfSU5DUkVGKGZpbGVzKTsKICAgICBzZWxmLT5maWxlcyA9IGZpbGVzOwogCi0gICAgc2VsZi0+YXJjaGl2ZSA9IHBhdGhvYmo7Ci0gICAgcGF0aG9iaiA9IE5VTEw7CisgICAgLyogVHJhbnNmZXIgcmVmZXJlbmNlICovCisgICAgc2VsZi0+YXJjaGl2ZSA9IGZpbGVuYW1lOworICAgIGZpbGVuYW1lID0gTlVMTDsKIAotICAgIGlmIChwcmVmaXggIT0gTlVMTCkgewotICAgICAgICBwcmVmaXgrKzsKLSAgICAgICAgbGVuID0gUHlfVU5JQ09ERV9zdHJsZW4ocHJlZml4KTsKLSAgICAgICAgaWYgKHByZWZpeFtsZW4tMV0gIT0gU0VQKSB7CisgICAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSBwcmVmaXggZGlyZWN0b3J5IGZvbGxvd2luZyB0aGUgZmlsZW5hbWUuICovCisgICAgaWYgKGZsZW4gIT0gbGVuKSB7CisgICAgICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcocGF0aCwgZmxlbisxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgc2VsZi0+cHJlZml4ID0gdG1wOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihwYXRoLCBsZW4tMSkgIT0gU0VQKSB7CiAgICAgICAgICAgICAvKiBhZGQgdHJhaWxpbmcgU0VQICovCi0gICAgICAgICAgICBwcmVmaXhbbGVuXSA9IFNFUDsKLSAgICAgICAgICAgIHByZWZpeFtsZW4gKyAxXSA9ICdcMCc7Ci0gICAgICAgICAgICBsZW4rKzsKKyAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSVjIiwgc2VsZi0+cHJlZml4LCBTRVApOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+cHJlZml4KTsKKyAgICAgICAgICAgIHNlbGYtPnByZWZpeCA9IHRtcDsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCi0gICAgICAgIGxlbiA9IDA7Ci0gICAgc2VsZi0+cHJlZml4ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHByZWZpeCwgbGVuKTsKLSAgICBpZiAoc2VsZi0+cHJlZml4ID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KKyAgICAgICAgc2VsZi0+cHJlZml4ID0gUHlVbmljb2RlX05ldygwLCAwKTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIFB5X1hERUNSRUYocGF0aG9iaik7CisgICAgUHlfREVDUkVGKHBhdGgpOworICAgIFB5X1hERUNSRUYoZmlsZW5hbWUpOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMTkzLDcgKzE5Myw3IEBACiB7CiAgICAgaWYgKHNlbGYtPmFyY2hpdmUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8emlwaW1wb3J0ZXIgb2JqZWN0IFwiPz8/XCI+Iik7Ci0gICAgZWxzZSBpZiAoc2VsZi0+cHJlZml4ICE9IE5VTEwgJiYgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYtPnByZWZpeCkgIT0gMCkKKyAgICBlbHNlIGlmIChzZWxmLT5wcmVmaXggIT0gTlVMTCAmJiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmLT5wcmVmaXgpICE9IDApCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPHppcGltcG9ydGVyIG9iamVjdCBcIiVVJWMlVVwiPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hcmNoaXZlLCBTRVAsIHNlbGYtPnByZWZpeCk7CiAgICAgZWxzZQpAQCAtMjAyLDQ5ICsyMDIsNTggQEAKIH0KIAogLyogcmV0dXJuIGZ1bGxuYW1lLnNwbGl0KCIuIilbLTFdICovCi1zdGF0aWMgY2hhciAqCi1nZXRfc3VibmFtZShjaGFyICpmdWxsbmFtZSkKK3N0YXRpYyBQeU9iamVjdCAqCitnZXRfc3VibmFtZShQeU9iamVjdCAqZnVsbG5hbWUpCiB7Ci0gICAgY2hhciAqc3VibmFtZSA9IHN0cnJjaHIoZnVsbG5hbWUsICcuJyk7Ci0gICAgaWYgKHN1Ym5hbWUgPT0gTlVMTCkKLSAgICAgICAgc3VibmFtZSA9IGZ1bGxuYW1lOwotICAgIGVsc2UKLSAgICAgICAgc3VibmFtZSsrOwotICAgIHJldHVybiBzdWJuYW1lOworICAgIFB5X3NzaXplX3QgbGVuLCBkb3Q7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmdWxsbmFtZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmdWxsbmFtZSk7CisgICAgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKGZ1bGxuYW1lLCAnLicsIDAsIGxlbiwgLTEpOworICAgIGlmIChkb3QgPT0gLTEpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZ1bGxuYW1lKTsKKyAgICAgICAgcmV0dXJuIGZ1bGxuYW1lOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhmdWxsbmFtZSwgZG90KzEsIGxlbik7CiB9CiAKIC8qIEdpdmVuIGEgKHN1Yiltb2R1bGVuYW1lLCB3cml0ZSB0aGUgcG90ZW50aWFsIGZpbGUgcGF0aCBpbiB0aGUKICAgIGFyY2hpdmUgKHdpdGhvdXQgZXh0ZW5zaW9uKSB0byB0aGUgcGF0aCBidWZmZXIuIFJldHVybiB0aGUKLSAgIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZy4gKi8KLXN0YXRpYyBpbnQKLW1ha2VfZmlsZW5hbWUoUHlPYmplY3QgKnByZWZpeF9vYmosIGNoYXIgKm5hbWUsIGNoYXIgKnBhdGgsIHNpemVfdCBwYXRoc2l6ZSkKKyAgIGxlbmd0aCBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZy4KKworICAgcmV0dXJuIHNlbGYucHJlZml4ICsgbmFtZS5yZXBsYWNlKCcuJywgb3Muc2VwKSAqLworc3RhdGljIFB5T2JqZWN0KgorbWFrZV9maWxlbmFtZShQeU9iamVjdCAqcHJlZml4LCBQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzaXplX3QgbGVuOwotICAgIGNoYXIgKnA7Ci0gICAgUHlPYmplY3QgKnByZWZpeDsKKyAgICBQeU9iamVjdCAqcGF0aG9iajsKKyAgICBQeV9VQ1M0ICpwLCAqYnVmOworICAgIFB5X3NzaXplX3QgbGVuOwogCi0gICAgcHJlZml4ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwcmVmaXhfb2JqKTsKLSAgICBpZiAocHJlZml4ID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHByZWZpeCk7Ci0KLSAgICAvKiBzZWxmLnByZWZpeCArIG5hbWUgWysgU0VQICsgIl9faW5pdF9fIl0gKyAiLnB5W2NvXSIgKi8KLSAgICBpZiAobGVuICsgc3RybGVuKG5hbWUpICsgMTMgPj0gcGF0aHNpemUgLSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhaaXBJbXBvcnRFcnJvciwgInBhdGggdG9vIGxvbmciKTsKLSAgICAgICAgUHlfREVDUkVGKHByZWZpeCk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwcmVmaXgpICsgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSkgKyAxOworICAgIHAgPSBidWYgPSBQeU1lbV9NYWxsb2Moc2l6ZW9mKFB5X1VDUzQpICogbGVuKTsKKyAgICBpZiAoYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgc3RyY3B5KHBhdGgsIFB5Qnl0ZXNfQVNfU1RSSU5HKHByZWZpeCkpOwotICAgIFB5X0RFQ1JFRihwcmVmaXgpOwotICAgIHN0cmNweShwYXRoICsgbGVuLCBuYW1lKTsKLSAgICBmb3IgKHAgPSBwYXRoICsgbGVuOyAqcDsgcCsrKSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KHByZWZpeCwgcCwgbGVuLCAwKSkgeworICAgICAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByZWZpeCk7CisgICAgbGVuIC09IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByZWZpeCk7CisgICAgaWYgKCFQeVVuaWNvZGVfQXNVQ1M0KG5hbWUsIHAsIGxlbiwgMSkpIHsKKyAgICAgICAgUHlNZW1fRnJlZShidWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm9yICg7ICpwOyBwKyspIHsKICAgICAgICAgaWYgKCpwID09ICcuJykKICAgICAgICAgICAgICpwID0gU0VQOwogICAgIH0KLSAgICBsZW4gKz0gc3RybGVuKG5hbWUpOwotICAgIGFzc2VydChsZW4gPCBJTlRfTUFYKTsKLSAgICByZXR1cm4gKGludClsZW47CisgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoUHlVbmljb2RlXzRCWVRFX0tJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBwLWJ1Zik7CisgICAgUHlNZW1fRnJlZShidWYpOworICAgIHJldHVybiBwYXRob2JqOwogfQogCiBlbnVtIHppX21vZHVsZV9pbmZvIHsKQEAgLTI1NCwzMiArMjYzLDExMyBAQAogICAgIE1JX1BBQ0tBR0UKIH07CiAKKy8qIERvZXMgdGhpcyBwYXRoIHJlcHJlc2VudCBhIGRpcmVjdG9yeT8KKyAgIG9uIGVycm9yLCByZXR1cm4gPCAwCisgICBpZiBub3QgYSBkaXIsIHJldHVybiAwCisgICBpZiBhIGRpciwgcmV0dXJuIDEKKyovCitzdGF0aWMgaW50CitjaGVja19pc19kaXJlY3RvcnkoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0KiBwcmVmaXgsIFB5T2JqZWN0ICpwYXRoKQoreworICAgIFB5T2JqZWN0ICpkaXJwYXRoOworICAgIGludCByZXM7CisKKyAgICAvKiBTZWUgaWYgdGhpcyBpcyBhICJkaXJlY3RvcnkiLiBJZiBzbywgaXQncyBlbGlnaWJsZSB0byBiZSBwYXJ0CisgICAgICAgb2YgYSBuYW1lc3BhY2UgcGFja2FnZS4gV2UgdGVzdCBieSBzZWVpbmcgaWYgdGhlIG5hbWUsIHdpdGggYW4KKyAgICAgICBhcHBlbmRlZCBwYXRoIHNlcGFyYXRvciwgZXhpc3RzLiAqLworICAgIGRpcnBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlVSVjIiwgcHJlZml4LCBwYXRoLCBTRVApOworICAgIGlmIChkaXJwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICAvKiBJZiBkaXJwYXRoIGlzIHByZXNlbnQgaW4gc2VsZi0+ZmlsZXMsIHdlIGhhdmUgYSBkaXJlY3RvcnkuICovCisgICAgcmVzID0gUHlEaWN0X0NvbnRhaW5zKHNlbGYtPmZpbGVzLCBkaXJwYXRoKTsKKyAgICBQeV9ERUNSRUYoZGlycGF0aCk7CisgICAgcmV0dXJuIHJlczsKK30KKwogLyogUmV0dXJuIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgYSBtb2R1bGUuICovCiBzdGF0aWMgZW51bSB6aV9tb2R1bGVfaW5mbwotZ2V0X21vZHVsZV9pbmZvKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpmdWxsbmFtZSkKK2dldF9tb2R1bGVfaW5mbyhaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKmZ1bGxuYW1lKQogewotICAgIGNoYXIgKnN1Ym5hbWUsIHBhdGhbTUFYUEFUSExFTiArIDFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKnN1Ym5hbWU7CisgICAgUHlPYmplY3QgKnBhdGgsICpmdWxscGF0aCwgKml0ZW07CiAgICAgc3RydWN0IHN0X3ppcF9zZWFyY2hvcmRlciAqenNvOwogCiAgICAgc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKKyAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTUlfRVJST1I7CiAKLSAgICBsZW4gPSBtYWtlX2ZpbGVuYW1lKHNlbGYtPnByZWZpeCwgc3VibmFtZSwgcGF0aCwgc2l6ZW9mKHBhdGgpKTsKLSAgICBpZiAobGVuIDwgMCkKKyAgICBwYXRoID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUpOworICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKKyAgICBpZiAocGF0aCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTUlfRVJST1I7CiAKICAgICBmb3IgKHpzbyA9IHppcF9zZWFyY2hvcmRlcjsgKnpzby0+c3VmZml4OyB6c28rKykgewotICAgICAgICBzdHJjcHkocGF0aCArIGxlbiwgenNvLT5zdWZmaXgpOwotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoc2VsZi0+ZmlsZXMsIHBhdGgpICE9IE5VTEwpIHsKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlcyIsIHBhdGgsIHpzby0+c3VmZml4KTsKKyAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgICAgIHJldHVybiBNSV9FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBpdGVtID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIGZ1bGxwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKGZ1bGxwYXRoKTsKKyAgICAgICAgaWYgKGl0ZW0gIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICAgICAgaWYgKHpzby0+dHlwZSAmIElTX1BBQ0tBR0UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1JX1BBQ0tBR0U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIE1JX01PRFVMRTsKICAgICAgICAgfQogICAgIH0KKyAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgcmV0dXJuIE1JX05PVF9GT1VORDsKIH0KIAordHlwZWRlZiBlbnVtIHsKKyAgICBGTF9FUlJPUiwKKyAgICBGTF9OT1RfRk9VTkQsCisgICAgRkxfTU9EVUxFX0ZPVU5ELAorICAgIEZMX05TX0ZPVU5ECit9IGZpbmRfbG9hZGVyX3Jlc3VsdDsKKworLyogVGhlIGd1dHMgb2YgImZpbmRfbG9hZGVyIiBhbmQgImZpbmRfbW9kdWxlIi4gUmV0dXJuIHZhbHVlczoKKyAgIC0xOiBlcnJvcgorICAgIDA6IG5vIGxvYWRlciBvciBuYW1lc3BhY2UgcG9ydGlvbnMgZm91bmQKKyAgICAxOiBtb2R1bGUvcGFja2FnZSBmb3VuZAorICAgIDI6IG5hbWVzcGFjZSBwb3J0aW9uIGZvdW5kOiAqbmFtZXNwYWNlX3BvcnRpb24gd2lsbCBwb2ludCB0byB0aGUgbmFtZQorKi8KK3N0YXRpYyBmaW5kX2xvYWRlcl9yZXN1bHQKK2ZpbmRfbG9hZGVyKFppcEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqZnVsbG5hbWUsIFB5T2JqZWN0ICoqbmFtZXNwYWNlX3BvcnRpb24pCit7CisgICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKKworICAgICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisKKyAgICBtaSA9IGdldF9tb2R1bGVfaW5mbyhzZWxmLCBmdWxsbmFtZSk7CisgICAgaWYgKG1pID09IE1JX0VSUk9SKQorICAgICAgICByZXR1cm4gRkxfRVJST1I7CisgICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgeworICAgICAgICAvKiBOb3QgYSBtb2R1bGUgb3IgcmVndWxhciBwYWNrYWdlLiBTZWUgaWYgdGhpcyBpcyBhIGRpcmVjdG9yeSwgYW5kCisgICAgICAgICAgIHRoZXJlZm9yZSBwb3NzaWJseSBhIHBvcnRpb24gb2YgYSBuYW1lc3BhY2UgcGFja2FnZS4gKi8KKyAgICAgICAgaW50IGlzX2RpciA9IGNoZWNrX2lzX2RpcmVjdG9yeShzZWxmLCBzZWxmLT5wcmVmaXgsIGZ1bGxuYW1lKTsKKyAgICAgICAgaWYgKGlzX2RpciA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChpc19kaXIpIHsKKyAgICAgICAgICAgIC8qIFRoaXMgaXMgcG9zc2libHkgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlCisgICAgICAgICAgICAgICBwYWNrYWdlLiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRpbmcgaXRzIHBhdGgsCisgICAgICAgICAgICAgICB3aXRob3V0IGEgdHJhaWxpbmcgc2VwYXJhdG9yLiAqLworICAgICAgICAgICAgKm5hbWVzcGFjZV9wb3J0aW9uID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMlVSVVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIFNFUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnByZWZpeCwgZnVsbG5hbWUpOworICAgICAgICAgICAgaWYgKCpuYW1lc3BhY2VfcG9ydGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBGTF9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBGTF9OU19GT1VORDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gRkxfTk9UX0ZPVU5EOworICAgIH0KKyAgICAvKiBUaGlzIGlzIGEgbW9kdWxlIG9yIHBhY2thZ2UuICovCisgICAgcmV0dXJuIEZMX01PRFVMRV9GT1VORDsKK30KKworCiAvKiBDaGVjayB3aGV0aGVyIHdlIGNhbiBzYXRpc2Z5IHRoZSBpbXBvcnQgb2YgdGhlIG1vZHVsZSBuYW1lZCBieQogICAgJ2Z1bGxuYW1lJy4gUmV0dXJuIHNlbGYgaWYgd2UgY2FuLCBOb25lIGlmIHdlIGNhbid0LiAqLwogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI4NywyMiArMzc3LDY0IEBACiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CiAgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwotICAgIGNoYXIgKmZ1bGxuYW1lOwotICAgIGVudW0gemlfbW9kdWxlX2luZm8gbWk7CisgICAgUHlPYmplY3QgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lc3BhY2VfcG9ydGlvbiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInN8Tzp6aXBpbXBvcnRlci5maW5kX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsbmFtZSwgJnBhdGgpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVXxPOnppcGltcG9ydGVyLmZpbmRfbW9kdWxlIiwgJmZ1bGxuYW1lLCAmcGF0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbWkgPSBnZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpOwotICAgIGlmIChtaSA9PSBNSV9FUlJPUikKKyAgICBzd2l0Y2ggKGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lLCAmbmFtZXNwYWNlX3BvcnRpb24pKSB7CisgICAgY2FzZSBGTF9FUlJPUjoKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIHJldHVybiBQeV9Ob25lOworICAgIGNhc2UgRkxfTlNfRk9VTkQ6CisgICAgICAgIC8qIEEgbmFtZXNwYWNlIHBvcnRpb24gaXMgbm90IGFsbG93ZWQgdmlhIGZpbmRfbW9kdWxlLCBzbyByZXR1cm4gTm9uZS4gKi8KKyAgICAgICAgUHlfREVDUkVGKG5hbWVzcGFjZV9wb3J0aW9uKTsKKyAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisgICAgY2FzZSBGTF9OT1RfRk9VTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5X05vbmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRkxfTU9EVUxFX0ZPVU5EOgorICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QgKilzZWxmOworICAgICAgICBicmVhazsKICAgICB9Ci0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgIFB5X0lOQ1JFRihyZXN1bHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyogQ2hlY2sgd2hldGhlciB3ZSBjYW4gc2F0aXNmeSB0aGUgaW1wb3J0IG9mIHRoZSBtb2R1bGUgbmFtZWQgYnkKKyAgICdmdWxsbmFtZScsIG9yIHdoZXRoZXIgaXQgY291bGQgYmUgYSBwb3J0aW9uIG9mIGEgbmFtZXNwYWNlCisgICBwYWNrYWdlLiBSZXR1cm4gc2VsZiBpZiB3ZSBjYW4gbG9hZCBpdCwgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKyAgIGZ1bGwgcGF0aCBpZiBpdCdzIGEgcG9zc2libGUgbmFtZXNwYWNlIHBvcnRpb24sIE5vbmUgaWYgd2UKKyAgIGNhbid0IGxvYWQgaXQuICovCitzdGF0aWMgUHlPYmplY3QgKgoremlwaW1wb3J0ZXJfZmluZF9sb2FkZXIoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbmFtZXNwYWNlX3BvcnRpb24gPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVfE86emlwaW1wb3J0ZXIuZmluZF9tb2R1bGUiLCAmZnVsbG5hbWUsICZwYXRoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKGZpbmRfbG9hZGVyKHNlbGYsIGZ1bGxuYW1lLCAmbmFtZXNwYWNlX3BvcnRpb24pKSB7CisgICAgY2FzZSBGTF9FUlJPUjoKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY2FzZSBGTF9OT1RfRk9VTkQ6ICAgICAgICAvKiBOb3QgZm91bmQsIHJldHVybiAoTm9uZSwgW10pICovCisgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk9bXSIsIFB5X05vbmUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZMX01PRFVMRV9GT1VORDogICAgIC8qIFJldHVybiAoc2VsZiwgW10pICovCisgICAgICAgIHJlc3VsdCA9IFB5X0J1aWxkVmFsdWUoIk9bXSIsIHNlbGYpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZMX05TX0ZPVU5EOiAgICAgICAgIC8qIFJldHVybiAoTm9uZSwgW25hbWVzcGFjZV9wb3J0aW9uXSkgKi8KKyAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiT1tPXSIsIFB5X05vbmUsIG5hbWVzcGFjZV9wb3J0aW9uKTsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzcGFjZV9wb3J0aW9uKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogTG9hZCBhbmQgcmV0dXJuIHRoZSBtb2R1bGUgbmFtZWQgYnkgJ2Z1bGxuYW1lJy4gKi8KQEAgLTMxMSwxOSArNDQzLDIxIEBACiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CiAgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMLCAqbW9kLCAqZGljdDsKLSAgICBjaGFyICpmdWxsbmFtZTsKLSAgICBQeU9iamVjdCAqbW9kcGF0aCA9IE5VTEwsICptb2RwYXRoX2J5dGVzOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKKyAgICBQeU9iamVjdCAqbW9kcGF0aCA9IE5VTEw7CiAgICAgaW50IGlzcGFja2FnZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5sb2FkX21vZHVsZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmxvYWRfbW9kdWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmdWxsbmFtZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgY29kZSA9IGdldF9tb2R1bGVfY29kZShzZWxmLCBmdWxsbmFtZSwgJmlzcGFja2FnZSwgJm1vZHBhdGgpOwogICAgIGlmIChjb2RlID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGUoZnVsbG5hbWUpOworICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChmdWxsbmFtZSk7CiAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGRpY3QgPSBQeU1vZHVsZV9HZXREaWN0KG1vZCk7CkBAIC0zMzYsMTcgKzQ3MCwxNyBAQAogICAgICAgICAvKiBhZGQgX19wYXRoX18gdG8gdGhlIG1vZHVsZSAqYmVmb3JlKiB0aGUgY29kZSBnZXRzCiAgICAgICAgICAgIGV4ZWN1dGVkICovCiAgICAgICAgIFB5T2JqZWN0ICpwa2dwYXRoLCAqZnVsbHBhdGg7Ci0gICAgICAgIGNoYXIgKnN1Ym5hbWUgPSBnZXRfc3VibmFtZShmdWxsbmFtZSk7CisgICAgICAgIFB5T2JqZWN0ICpzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOwogICAgICAgICBpbnQgZXJyOwogCi0gICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMlVSVzIiwKKyAgICAgICAgZnVsbHBhdGggPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVUlYyVVJVUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hcmNoaXZlLCBTRVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnByZWZpeCwgc3VibmFtZSk7CisgICAgICAgIFB5X0RFQ1JFRihzdWJuYW1lKTsKICAgICAgICAgaWYgKGZ1bGxwYXRoID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgICAgIHBrZ3BhdGggPSBQeV9CdWlsZFZhbHVlKCJbT10iLCBmdWxscGF0aCk7Ci0gICAgICAgIFB5X0RFQ1JFRihmdWxscGF0aCk7CisgICAgICAgIHBrZ3BhdGggPSBQeV9CdWlsZFZhbHVlKCJbTl0iLCBmdWxscGF0aCk7CiAgICAgICAgIGlmIChwa2dwYXRoID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19wYXRoX18iLCBwa2dwYXRoKTsKQEAgLTM1NCwxOCArNDg4LDEzIEBACiAgICAgICAgIGlmIChlcnIgIT0gMCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIG1vZHBhdGhfYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KG1vZHBhdGgpOwotICAgIGlmIChtb2RwYXRoX2J5dGVzID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgbW9kID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeChmdWxsbmFtZSwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKG1vZHBhdGhfYnl0ZXMpKTsKLSAgICBQeV9ERUNSRUYobW9kcGF0aF9ieXRlcyk7CisgICAgbW9kID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QoZnVsbG5hbWUsIGNvZGUsIG1vZHBhdGgsIE5VTEwpOwogICAgIFB5X0NMRUFSKGNvZGUpOwogICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJXMgIyBsb2FkZWQgZnJvbSBaaXAgJVVcbiIsCisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0ICVVICMgbG9hZGVkIGZyb20gWmlwICVVXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbG5hbWUsIG1vZHBhdGgpOwogICAgIFB5X0RFQ1JFRihtb2RwYXRoKTsKICAgICByZXR1cm4gbW9kOwpAQCAtMzgwLDEyICs1MDksMTAgQEAKIHppcGltcG9ydGVyX2dldF9maWxlbmFtZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKLSAgICBQeU9iamVjdCAqY29kZTsKLSAgICBjaGFyICpmdWxsbmFtZTsKLSAgICBQeU9iamVjdCAqbW9kcGF0aDsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWUsICpjb2RlLCAqbW9kcGF0aDsKICAgICBpbnQgaXNwYWNrYWdlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOnppcGltcG9ydGVyLmdldF9maWxlbmFtZSIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9maWxlbmFtZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC00MDQsMTAgKzUzMSwxMCBAQAogemlwaW1wb3J0ZXJfaXNfcGFja2FnZShQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBaaXBJbXBvcnRlciAqc2VsZiA9IChaaXBJbXBvcnRlciAqKW9iajsKLSAgICBjaGFyICpmdWxsbmFtZTsKKyAgICBQeU9iamVjdCAqZnVsbG5hbWU7CiAgICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5pc19wYWNrYWdlIiwKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuaXNfcGFja2FnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdWxsbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC00MTUsNzEgKzU0Miw3MCBAQAogICAgIGlmIChtaSA9PSBNSV9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAnJXMnIiwgZnVsbG5hbWUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcobWkgPT0gTUlfUEFDS0FHRSk7CiB9CiAKKwogc3RhdGljIFB5T2JqZWN0ICoKIHppcGltcG9ydGVyX2dldF9kYXRhKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIFB5T2JqZWN0ICpwYXRob2JqLCAqa2V5OwotICAgIGNvbnN0IFB5X1VOSUNPREUgKnBhdGg7CisgICAgUHlPYmplY3QgKnBhdGgsICprZXk7CiAjaWZkZWYgQUxUU0VQCi0gICAgUHlfVU5JQ09ERSAqcCwgYnVmW01BWFBBVEhMRU4gKyAxXTsKKyAgICBfUHlfSURFTlRJRklFUihyZXBsYWNlKTsKICNlbmRpZgotICAgIFB5X1VOSUNPREUgKmFyY2hpdmU7CiAgICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICBQeV9zc2l6ZV90IHBhdGhfbGVuLCBsZW47CisgICAgUHlfc3NpemVfdCBwYXRoX3N0YXJ0LCBwYXRoX2xlbiwgbGVuOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9kYXRhIiwgJnBhdGhvYmopKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTp6aXBpbXBvcnRlci5nZXRfZGF0YSIsICZwYXRoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBwYXRoX2xlbiA9IFB5VW5pY29kZV9HRVRfU0laRShwYXRob2JqKTsKLSAgICBwYXRoID0gUHlVbmljb2RlX0FTX1VOSUNPREUocGF0aG9iaik7CiAjaWZkZWYgQUxUU0VQCi0gICAgaWYgKHBhdGhfbGVuID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFppcEltcG9ydEVycm9yLCAicGF0aCB0b28gbG9uZyIpOworICAgIHBhdGggPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBhdGgsICZQeUlkX3JlcGxhY2UsICJDQyIsIEFMVFNFUCwgU0VQKTsKKyAgICBpZiAoIXBhdGgpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9VTklDT0RFX3N0cmNweShidWYsIHBhdGgpOwotICAgIGZvciAocCA9IGJ1ZjsgKnA7IHArKykgewotICAgICAgICBpZiAoKnAgPT0gQUxUU0VQKQotICAgICAgICAgICAgKnAgPSBTRVA7Ci0gICAgfQotICAgIHBhdGggPSBidWY7CisjZWxzZQorICAgIFB5X0lOQ1JFRihwYXRoKTsKICNlbmRpZgotICAgIGFyY2hpdmUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmLT5hcmNoaXZlKTsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZi0+YXJjaGl2ZSk7Ci0gICAgaWYgKChzaXplX3QpbGVuIDwgUHlfVU5JQ09ERV9zdHJsZW4ocGF0aCkgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9zdHJuY21wKHBhdGgsIGFyY2hpdmUsIGxlbikgPT0gMCAmJgotICAgICAgICBwYXRoW2xlbl0gPT0gU0VQKSB7Ci0gICAgICAgIHBhdGggKz0gbGVuICsgMTsKLSAgICAgICAgcGF0aF9sZW4gLT0gbGVuICsgMTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHBhdGgpID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcGF0aF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYXRoKTsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYtPmFyY2hpdmUpOworICAgIHBhdGhfc3RhcnQgPSAwOworICAgIGlmIChQeVVuaWNvZGVfVGFpbG1hdGNoKHBhdGgsIHNlbGYtPmFyY2hpdmUsIDAsIGxlbiwgLTEpCisgICAgICAgICYmIFB5VW5pY29kZV9SRUFEX0NIQVIocGF0aCwgbGVuKSA9PSBTRVApIHsKKyAgICAgICAgcGF0aF9zdGFydCA9IGxlbiArIDE7CiAgICAgfQogCi0gICAga2V5ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHBhdGgsIHBhdGhfbGVuKTsKKyAgICBrZXkgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHBhdGgsIHBhdGhfc3RhcnQsIHBhdGhfbGVuKTsKICAgICBpZiAoa2V5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBrZXkpOwogICAgIGlmICh0b2NfZW50cnkgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwga2V5KTsKICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICBQeV9ERUNSRUYocGF0aCk7CiAgICAgcmV0dXJuIGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CisgIGVycm9yOgorICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHppcGltcG9ydGVyX2dldF9jb2RlKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphcmdzKQogewogICAgIFppcEltcG9ydGVyICpzZWxmID0gKFppcEltcG9ydGVyICopb2JqOwotICAgIGNoYXIgKmZ1bGxuYW1lOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5nZXRfY29kZSIsICZmdWxsbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOnppcGltcG9ydGVyLmdldF9jb2RlIiwgJmZ1bGxuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gZ2V0X21vZHVsZV9jb2RlKHNlbGYsIGZ1bGxuYW1lLCBOVUxMLCBOVUxMKTsKQEAgLTQ5MCwzNCArNjE2LDM5IEBACiB7CiAgICAgWmlwSW1wb3J0ZXIgKnNlbGYgPSAoWmlwSW1wb3J0ZXIgKilvYmo7CiAgICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICBjaGFyICpmdWxsbmFtZSwgKnN1Ym5hbWUsIHBhdGhbTUFYUEFUSExFTisxXTsKLSAgICBpbnQgbGVuOworICAgIFB5T2JqZWN0ICpmdWxsbmFtZSwgKnN1Ym5hbWUsICpwYXRoLCAqZnVsbHBhdGg7CiAgICAgZW51bSB6aV9tb2R1bGVfaW5mbyBtaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczp6aXBpbXBvcnRlci5nZXRfc291cmNlIiwgJmZ1bGxuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6emlwaW1wb3J0ZXIuZ2V0X3NvdXJjZSIsICZmdWxsbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgbWkgPSBnZXRfbW9kdWxlX2luZm8oc2VsZiwgZnVsbG5hbWUpOwogICAgIGlmIChtaSA9PSBNSV9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1pID09IE1JX05PVF9GT1VORCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAnJXMnIiwgZnVsbG5hbWUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCBmaW5kIG1vZHVsZSAlUiIsIGZ1bGxuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgc3VibmFtZSA9IGdldF9zdWJuYW1lKGZ1bGxuYW1lKTsKLQotICAgIGxlbiA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lLCBwYXRoLCBzaXplb2YocGF0aCkpOwotICAgIGlmIChsZW4gPCAwKQorICAgIGlmIChzdWJuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKG1pID09IE1JX1BBQ0tBR0UpIHsKLSAgICAgICAgcGF0aFtsZW5dID0gU0VQOwotICAgICAgICBzdHJjcHkocGF0aCArIGxlbiArIDEsICJfX2luaXRfXy5weSIpOwotICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCAiLnB5Iik7CisgICAgcGF0aCA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICBQeV9ERUNSRUYoc3VibmFtZSk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCk7CisgICAgaWYgKG1pID09IE1JX1BBQ0tBR0UpCisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWNfX2luaXRfXy5weSIsIHBhdGgsIFNFUCk7CisgICAgZWxzZQorICAgICAgICBmdWxscGF0aCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVS5weSIsIHBhdGgpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICBpZiAoZnVsbHBhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbShzZWxmLT5maWxlcywgZnVsbHBhdGgpOworICAgIFB5X0RFQ1JFRihmdWxscGF0aCk7CiAgICAgaWYgKHRvY19lbnRyeSAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMsICpieXRlczsKICAgICAgICAgYnl0ZXMgPSBnZXRfZGF0YShzZWxmLT5hcmNoaXZlLCB0b2NfZW50cnkpOwpAQCAtNTQzLDYgKzY3NCwxNiBAQAogVGhlIG9wdGlvbmFsICdwYXRoJyBhcmd1bWVudCBpcyBpZ25vcmVkIC0tIGl0J3MgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHlcblwKIHdpdGggdGhlIGltcG9ydGVyIHByb3RvY29sLiIpOwogCitQeURvY19TVFJWQVIoZG9jX2ZpbmRfbG9hZGVyLAorImZpbmRfbG9hZGVyKGZ1bGxuYW1lLCBwYXRoPU5vbmUpIC0+IHNlbGYsIHN0ciBvciBOb25lLlxuXAorXG5cCitTZWFyY2ggZm9yIGEgbW9kdWxlIHNwZWNpZmllZCBieSAnZnVsbG5hbWUnLiAnZnVsbG5hbWUnIG11c3QgYmUgdGhlXG5cCitmdWxseSBxdWFsaWZpZWQgKGRvdHRlZCkgbW9kdWxlIG5hbWUuIEl0IHJldHVybnMgdGhlIHppcGltcG9ydGVyXG5cCitpbnN0YW5jZSBpdHNlbGYgaWYgdGhlIG1vZHVsZSB3YXMgZm91bmQsIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlXG5cCitmdWxsIHBhdGggbmFtZSBpZiBpdCdzIHBvc3NpYmx5IGEgcG9ydGlvbiBvZiBhIG5hbWVzcGFjZSBwYWNrYWdlLFxuXAorb3IgTm9uZSBvdGhlcndpc2UuIFRoZSBvcHRpb25hbCAncGF0aCcgYXJndW1lbnQgaXMgaWdub3JlZCAtLSBpdCdzXG5cCisgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgaW1wb3J0ZXIgcHJvdG9jb2wuIik7CisKIFB5RG9jX1NUUlZBUihkb2NfbG9hZF9tb2R1bGUsCiAibG9hZF9tb2R1bGUoZnVsbG5hbWUpIC0+IG1vZHVsZS5cblwKIFxuXApAQCAtNTg0LDYgKzcyNSw4IEBACiBzdGF0aWMgUHlNZXRob2REZWYgemlwaW1wb3J0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiZmluZF9tb2R1bGUiLCB6aXBpbXBvcnRlcl9maW5kX21vZHVsZSwgTUVUSF9WQVJBUkdTLAogICAgICBkb2NfZmluZF9tb2R1bGV9LAorICAgIHsiZmluZF9sb2FkZXIiLCB6aXBpbXBvcnRlcl9maW5kX2xvYWRlciwgTUVUSF9WQVJBUkdTLAorICAgICBkb2NfZmluZF9sb2FkZXJ9LAogICAgIHsibG9hZF9tb2R1bGUiLCB6aXBpbXBvcnRlcl9sb2FkX21vZHVsZSwgTUVUSF9WQVJBUkdTLAogICAgICBkb2NfbG9hZF9tb2R1bGV9LAogICAgIHsiZ2V0X2RhdGEiLCB6aXBpbXBvcnRlcl9nZXRfZGF0YSwgTUVUSF9WQVJBUkdTLApAQCAtNzA4LDU1ICs4NTEsNDYgQEAKICAgIGRhdGFfc2l6ZSBhbmQgZmlsZV9vZmZzZXQgYXJlIDAuCiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLXJlYWRfZGlyZWN0b3J5KFB5T2JqZWN0ICphcmNoaXZlX29iaikKK3JlYWRfZGlyZWN0b3J5KFB5T2JqZWN0ICphcmNoaXZlKQogewotICAgIC8qIEZJWE1FOiB3b3JrIG9uIFB5X1VOSUNPREUqIGluc3RlYWQgb2YgY2hhciogKi8KICAgICBQeU9iamVjdCAqZmlsZXMgPSBOVUxMOwogICAgIEZJTEUgKmZwOwogICAgIHVuc2lnbmVkIHNob3J0IGZsYWdzOwogICAgIHNob3J0IGNvbXByZXNzLCB0aW1lLCBkYXRlLCBuYW1lX3NpemU7CiAgICAgbG9uZyBjcmMsIGRhdGFfc2l6ZSwgZmlsZV9zaXplLCBoZWFkZXJfc2l6ZTsKICAgICBQeV9zc2l6ZV90IGZpbGVfb2Zmc2V0LCBoZWFkZXJfcG9zaXRpb24sIGhlYWRlcl9vZmZzZXQ7Ci0gICAgbG9uZyBpLCBsLCBjb3VudDsKLSAgICBzaXplX3QgbGVuZ3RoOwotICAgIFB5X1VOSUNPREUgcGF0aFtNQVhQQVRITEVOICsgNV07CisgICAgbG9uZyBsLCBjb3VudDsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgY2hhciBuYW1lW01BWFBBVEhMRU4gKyA1XTsKICAgICBQeU9iamVjdCAqbmFtZW9iaiA9IE5VTEw7CiAgICAgY2hhciAqcCwgZW5kb2ZfY2VudHJhbF9kaXJbMjJdOwogICAgIFB5X3NzaXplX3QgYXJjX29mZnNldDsgIC8qIEFic29sdXRlIG9mZnNldCB0byBzdGFydCBvZiB0aGUgemlwLWFyY2hpdmUuICovCi0gICAgUHlPYmplY3QgKnBhdGhvYmo7CisgICAgUHlPYmplY3QgKnBhdGg7CiAgICAgY29uc3QgY2hhciAqY2hhcnNldDsKICAgICBpbnQgYm9vdHN0cmFwOwogCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShhcmNoaXZlX29iaikgPiBNQVhQQVRITEVOKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlppcCBwYXRoIG5hbWUgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X1VOSUNPREVfc3RyY3B5KHBhdGgsIFB5VW5pY29kZV9BU19VTklDT0RFKGFyY2hpdmVfb2JqKSk7Ci0KLSAgICBmcCA9IF9QeV9mb3BlbihhcmNoaXZlX29iaiwgInJiIik7CisgICAgZnAgPSBfUHlfZm9wZW4oYXJjaGl2ZSwgInJiIik7CiAgICAgaWYgKGZwID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3Qgb3BlbiBaaXAgZmlsZTogJyVVJyIsIGFyY2hpdmVfb2JqKTsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IG9wZW4gWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGlmIChmc2VlayhmcCwgLTIyLCBTRUVLX0VORCkgPT0gLTEpIHsKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVUiLCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBoZWFkZXJfcG9zaXRpb24gPSBmdGVsbChmcCk7CiAgICAgaWYgKGZyZWFkKGVuZG9mX2NlbnRyYWxfZGlyLCAxLCAyMiwgZnApICE9IDIyKSB7CiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICclVSciLCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoZ2V0X2xvbmcoKHVuc2lnbmVkIGNoYXIgKillbmRvZl9jZW50cmFsX2RpcikgIT0gMHgwNjA1NEI1MCkgewogICAgICAgICAvKiBCYWQ6IEVuZCBvZiBDZW50cmFsIERpciBzaWduYXR1cmUgKi8KICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAibm90IGEgWmlwIGZpbGU6ICclVSciLCBhcmNoaXZlX29iaik7CisgICAgICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgIm5vdCBhIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTc2OSw5ICs5MDMsNiBAQAogICAgIGlmIChmaWxlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgbGVuZ3RoID0gUHlfVU5JQ09ERV9zdHJsZW4ocGF0aCk7Ci0gICAgcGF0aFtsZW5ndGhdID0gU0VQOwotCiAgICAgLyogU3RhcnQgb2YgQ2VudHJhbCBEaXJlY3RvcnkgKi8KICAgICBjb3VudCA9IDA7CiAgICAgZm9yICg7OykgewpAQCAtODAzLDcgKzkzNCw3IEBACiAgICAgICAgICAgICBuYW1lX3NpemUgPSBNQVhQQVRITEVOOwogCiAgICAgICAgIHAgPSBuYW1lOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmFtZV9zaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IChQeV9zc2l6ZV90KW5hbWVfc2l6ZTsgaSsrKSB7CiAgICAgICAgICAgICAqcCA9IChjaGFyKWdldGMoZnApOwogICAgICAgICAgICAgaWYgKCpwID09ICcvJykKICAgICAgICAgICAgICAgICAqcCA9IFNFUDsKQEAgLTgzNiwxMiArOTY3LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04pOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBQeV9VTklDT0RFX3N0cm5jcHkocGF0aCArIGxlbmd0aCArIDEsIFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWVvYmopLCBNQVhQQVRITEVOIC0gbGVuZ3RoIC0gMSk7Ci0KLSAgICAgICAgcGF0aG9iaiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwYXRoLCBQeV9VTklDT0RFX3N0cmxlbihwYXRoKSk7Ci0gICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZW9iaikgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB0ID0gUHlfQnVpbGRWYWx1ZSgiTmhsbG5oaGwiLCBwYXRob2JqLCBjb21wcmVzcywgZGF0YV9zaXplLAorICAgICAgICBwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJWMlVSIsIGFyY2hpdmUsIFNFUCwgbmFtZW9iaik7CisgICAgICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB0ID0gUHlfQnVpbGRWYWx1ZSgiTmhsbG5oaGwiLCBwYXRoLCBjb21wcmVzcywgZGF0YV9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUsIGZpbGVfb2Zmc2V0LCB0aW1lLCBkYXRlLCBjcmMpOwogICAgICAgICBpZiAodCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTg1NCwxNCArOTg1LDE0IEBACiAgICAgfQogICAgIGZjbG9zZShmcCk7CiAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgemlwaW1wb3J0OiBmb3VuZCAlbGQgbmFtZXMgaW4gJVVcbiIsCi0gICAgICAgICAgICBjb3VudCwgYXJjaGl2ZV9vYmopOworICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgemlwaW1wb3J0OiBmb3VuZCAlbGQgbmFtZXMgaW4gJVJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgYXJjaGl2ZSk7CiAgICAgcmV0dXJuIGZpbGVzOwogZnNlZWtfZXJyb3I6CiAgICAgZmNsb3NlKGZwKTsKICAgICBQeV9YREVDUkVGKGZpbGVzKTsKICAgICBQeV9YREVDUkVGKG5hbWVvYmopOwotICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVVIiwgYXJjaGl2ZV9vYmopOworICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IHJlYWQgWmlwIGZpbGU6ICVSIiwgYXJjaGl2ZSk7CiAgICAgcmV0dXJuIE5VTEw7CiBlcnJvcjoKICAgICBmY2xvc2UoZnApOwpAQCAtODc5LDYgKzEwMTAsNyBAQAogICAgIHN0YXRpYyBpbnQgaW1wb3J0aW5nX3psaWIgPSAwOwogICAgIFB5T2JqZWN0ICp6bGliOwogICAgIFB5T2JqZWN0ICpkZWNvbXByZXNzOworICAgIF9QeV9JREVOVElGSUVSKGRlY29tcHJlc3MpOwogCiAgICAgaWYgKGltcG9ydGluZ196bGliICE9IDApCiAgICAgICAgIC8qIFNvbWVvbmUgaGFzIGEgemxpYi5weVtjb10gaW4gdGhlaXIgWmlwIGZpbGU7CkBAIC04ODgsOCArMTAyMCw4IEBACiAgICAgemxpYiA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInpsaWIiKTsKICAgICBpbXBvcnRpbmdfemxpYiA9IDA7CiAgICAgaWYgKHpsaWIgIT0gTlVMTCkgewotICAgICAgICBkZWNvbXByZXNzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh6bGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVjb21wcmVzcyIpOworICAgICAgICBkZWNvbXByZXNzID0gX1B5T2JqZWN0X0dldEF0dHJJZCh6bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9kZWNvbXByZXNzKTsKICAgICAgICAgUHlfREVDUkVGKHpsaWIpOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTkzNCw3ICsxMDY2LDcgQEAKICAgICAvKiBDaGVjayB0byBtYWtlIHN1cmUgdGhlIGxvY2FsIGZpbGUgaGVhZGVyIGlzIGNvcnJlY3QgKi8KICAgICBpZiAoZnNlZWsoZnAsIGZpbGVfb2Zmc2V0LCAwKSA9PSAtMSkgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTk0OSw3ICsxMDgxLDcgQEAKICAgICB9CiAgICAgaWYgKGZzZWVrKGZwLCBmaWxlX29mZnNldCArIDI2LCAwKSA9PSAtMSkgewogICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlVSIsIGFyY2hpdmUpOworICAgICAgICBQeUVycl9Gb3JtYXQoWmlwSW1wb3J0RXJyb3IsICJjYW4ndCByZWFkIFppcCBmaWxlOiAlUiIsIGFyY2hpdmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTk3Myw3ICsxMTA1LDcgQEAKICAgICAgICAgYnl0ZXNfcmVhZCA9IGZyZWFkKGJ1ZiwgMSwgZGF0YV9zaXplLCBmcCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVUiLCBhcmNoaXZlKTsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgcmVhZCBaaXAgZmlsZTogJVIiLCBhcmNoaXZlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGZjbG9zZShmcCk7CkBAIC0xMDMwLDcgKzExNjIsNyBAQAogICAgdG8gLnB5IGlmIGF2YWlsYWJsZSBhbmQgd2UgZG9uJ3Qgd2FudCB0byBtYXNrIG90aGVyIGVycm9ycykuCiAgICBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZS4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCi11bm1hcnNoYWxfY29kZShjaGFyICpwYXRobmFtZSwgUHlPYmplY3QgKmRhdGEsIHRpbWVfdCBtdGltZSkKK3VubWFyc2hhbF9jb2RlKFB5T2JqZWN0ICpwYXRobmFtZSwgUHlPYmplY3QgKmRhdGEsIHRpbWVfdCBtdGltZSkKIHsKICAgICBQeU9iamVjdCAqY29kZTsKICAgICBjaGFyICpidWYgPSBQeUJ5dGVzX0FzU3RyaW5nKGRhdGEpOwpAQCAtMTA0NCw4ICsxMTc2LDggQEAKIAogICAgIGlmIChnZXRfbG9uZygodW5zaWduZWQgY2hhciAqKWJ1ZikgIT0gUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIoKSkgewogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG1hZ2ljXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjICVSIGhhcyBiYWQgbWFnaWNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOwogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOyAgLyogc2lnbmFsIGNhbGxlciB0byB0cnkgYWx0ZXJuYXRpdmUgKi8KICAgICB9CkBAIC0xMDUzLDE5ICsxMTg1LDIxIEBACiAgICAgaWYgKG10aW1lICE9IDAgJiYgIWVxX210aW1lKGdldF9sb25nKCh1bnNpZ25lZCBjaGFyICopYnVmICsgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10aW1lKSkgewogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG10aW1lXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOworICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCIjICVSIGhhcyBiYWQgbXRpbWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWUpOwogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOyAgLyogc2lnbmFsIGNhbGxlciB0byB0cnkgYWx0ZXJuYXRpdmUgKi8KICAgICB9CiAKLSAgICBjb2RlID0gUHlNYXJzaGFsX1JlYWRPYmplY3RGcm9tU3RyaW5nKGJ1ZiArIDgsIHNpemUgLSA4KTsKKyAgICAvKiBYWFggdGhlIHB5YydzIHNpemUgZmllbGQgaXMgaWdub3JlZDsgdGltZXN0YW1wIGNvbGxpc2lvbnMgYXJlIHByb2JhYmx5CisgICAgICAgdW5pbXBvcnRhbnQgd2l0aCB6aXAgZmlsZXMuICovCisgICAgY29kZSA9IFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZyhidWYgKyAxMiwgc2l6ZSAtIDEyKTsKICAgICBpZiAoY29kZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5Q29kZV9DaGVjayhjb2RlKSkgewogICAgICAgICBQeV9ERUNSRUYoY29kZSk7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgImNvbXBpbGVkIG1vZHVsZSAlcyBpcyBub3QgYSBjb2RlIG9iamVjdCIsCisgICAgICAgICAgICAgImNvbXBpbGVkIG1vZHVsZSAlUiBpcyBub3QgYSBjb2RlIG9iamVjdCIsCiAgICAgICAgICAgICAgcGF0aG5hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDc5LDExICsxMjEzLDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogbm9ybWFsaXplX2xpbmVfZW5kaW5ncyhQeU9iamVjdCAqc291cmNlKQogewotICAgIGNoYXIgKmJ1ZiwgKnEsICpwID0gUHlCeXRlc19Bc1N0cmluZyhzb3VyY2UpOworICAgIGNoYXIgKmJ1ZiwgKnEsICpwOwogICAgIFB5T2JqZWN0ICpmaXhlZF9zb3VyY2U7CiAgICAgaW50IGxlbiA9IDA7CiAKLSAgICBpZiAoIXApIHsKKyAgICBwID0gUHlCeXRlc19Bc1N0cmluZyhzb3VyY2UpOworICAgIGlmIChwID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIlxuXDAiLCAyKTsKICAgICB9CiAKQEAgLTExMTYsMTYgKzEyNTEsMjQgQEAKIC8qIEdpdmVuIGEgc3RyaW5nIGJ1ZmZlciBjb250YWluaW5nIFB5dGhvbiBzb3VyY2UgY29kZSwgY29tcGlsZSBpdAogICAgcmV0dXJuIGFuZCByZXR1cm4gYSBjb2RlIG9iamVjdCBhcyBhIG5ldyByZWZlcmVuY2UuICovCiBzdGF0aWMgUHlPYmplY3QgKgotY29tcGlsZV9zb3VyY2UoY2hhciAqcGF0aG5hbWUsIFB5T2JqZWN0ICpzb3VyY2UpCitjb21waWxlX3NvdXJjZShQeU9iamVjdCAqcGF0aG5hbWUsIFB5T2JqZWN0ICpzb3VyY2UpCiB7Ci0gICAgUHlPYmplY3QgKmNvZGUsICpmaXhlZF9zb3VyY2U7CisgICAgUHlPYmplY3QgKmNvZGUsICpmaXhlZF9zb3VyY2UsICpwYXRoYnl0ZXM7CiAKLSAgICBmaXhlZF9zb3VyY2UgPSBub3JtYWxpemVfbGluZV9lbmRpbmdzKHNvdXJjZSk7Ci0gICAgaWYgKGZpeGVkX3NvdXJjZSA9PSBOVUxMKQorICAgIHBhdGhieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOworICAgIGlmIChwYXRoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBjb2RlID0gUHlfQ29tcGlsZVN0cmluZyhQeUJ5dGVzX0FzU3RyaW5nKGZpeGVkX3NvdXJjZSksIHBhdGhuYW1lLAorICAgIGZpeGVkX3NvdXJjZSA9IG5vcm1hbGl6ZV9saW5lX2VuZGluZ3Moc291cmNlKTsKKyAgICBpZiAoZml4ZWRfc291cmNlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGNvZGUgPSBQeV9Db21waWxlU3RyaW5nKFB5Qnl0ZXNfQXNTdHJpbmcoZml4ZWRfc291cmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKHBhdGhieXRlcyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCk7CisgICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CiAgICAgUHlfREVDUkVGKGZpeGVkX3NvdXJjZSk7CiAgICAgcmV0dXJuIGNvZGU7CiB9CkBAIC0xMTU0LDE0ICsxMjk3LDIyIEBACiAgICBtb2RpZmljYXRpb24gdGltZSBvZiB0aGUgbWF0Y2hpbmcgLnB5IGZpbGUsIG9yIDAgaWYgbm8gc291cmNlCiAgICBpcyBhdmFpbGFibGUuICovCiBzdGF0aWMgdGltZV90Ci1nZXRfbXRpbWVfb2Zfc291cmNlKFppcEltcG9ydGVyICpzZWxmLCBjaGFyICpwYXRoKQorZ2V0X210aW1lX29mX3NvdXJjZShaaXBJbXBvcnRlciAqc2VsZiwgUHlPYmplY3QgKnBhdGgpCiB7Ci0gICAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgICB0aW1lX3QgbXRpbWUgPSAwOwotICAgIFB5X3NzaXplX3QgbGFzdGNoYXIgPSBzdHJsZW4ocGF0aCkgLSAxOwotICAgIGNoYXIgc2F2ZWNoYXIgPSBwYXRoW2xhc3RjaGFyXTsKLSAgICBwYXRoW2xhc3RjaGFyXSA9ICdcMCc7ICAvKiBzdHJpcCAnYycgb3IgJ28nIGZyb20gKi5weVtjb10gKi8KLSAgICB0b2NfZW50cnkgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhzZWxmLT5maWxlcywgcGF0aCk7CisgICAgUHlPYmplY3QgKnRvY19lbnRyeSwgKnN0cmlwcGVkOworICAgIHRpbWVfdCBtdGltZTsKKworICAgIC8qIHN0cmlwICdjJyBvciAnbycgZnJvbSAqLnB5W2NvXSAqLworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpCisgICAgICAgIHJldHVybiAodGltZV90KS0xOworICAgIHN0cmlwcGVkID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfS0lORChwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEocGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHBhdGgpIC0gMSk7CisgICAgaWYgKHN0cmlwcGVkID09IE5VTEwpCisgICAgICAgIHJldHVybiAodGltZV90KS0xOworCisgICAgdG9jX2VudHJ5ID0gUHlEaWN0X0dldEl0ZW0oc2VsZi0+ZmlsZXMsIHN0cmlwcGVkKTsKKyAgICBQeV9ERUNSRUYoc3RyaXBwZWQpOwogICAgIGlmICh0b2NfZW50cnkgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKHRvY19lbnRyeSkgJiYKICAgICAgICAgUHlUdXBsZV9TaXplKHRvY19lbnRyeSkgPT0gOCkgewogICAgICAgICAvKiBmZXRjaCB0aGUgdGltZSBzdGFtcCBvZiB0aGUgLnB5IGZpbGUgZm9yIGNvbXBhcmlzb24KQEAgLTExNzAsOCArMTMyMSw4IEBACiAgICAgICAgIHRpbWUgPSBQeUxvbmdfQXNMb25nKFB5VHVwbGVfR2V0SXRlbSh0b2NfZW50cnksIDUpKTsKICAgICAgICAgZGF0ZSA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHRvY19lbnRyeSwgNikpOwogICAgICAgICBtdGltZSA9IHBhcnNlX2Rvc3RpbWUodGltZSwgZGF0ZSk7Ci0gICAgfQotICAgIHBhdGhbbGFzdGNoYXJdID0gc2F2ZWNoYXI7CisgICAgfSBlbHNlCisgICAgICAgIG10aW1lID0gMDsKICAgICByZXR1cm4gbXRpbWU7CiB9CiAKQEAgLTExODEsMjQgKzEzMzIsMTcgQEAKIGdldF9jb2RlX2Zyb21fZGF0YShaaXBJbXBvcnRlciAqc2VsZiwgaW50IGlzcGFja2FnZSwgaW50IGlzYnl0ZWNvZGUsCiAgICAgICAgICAgICAgICAgICAgdGltZV90IG10aW1lLCBQeU9iamVjdCAqdG9jX2VudHJ5KQogewotICAgIFB5T2JqZWN0ICpkYXRhLCAqY29kZTsKLSAgICBQeU9iamVjdCAqbW9kcGF0aDsKKyAgICBQeU9iamVjdCAqZGF0YSwgKm1vZHBhdGgsICpjb2RlOwogCiAgICAgZGF0YSA9IGdldF9kYXRhKHNlbGYtPmFyY2hpdmUsIHRvY19lbnRyeSk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtb2RwYXRoID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCAwKSk7Ci0gICAgaWYgKG1vZHBhdGggPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoZGF0YSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQorICAgIG1vZHBhdGggPSBQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCAwKTsKICAgICBpZiAoaXNieXRlY29kZSkKLSAgICAgICAgY29kZSA9IHVubWFyc2hhbF9jb2RlKFB5Qnl0ZXNfQVNfU1RSSU5HKG1vZHBhdGgpLCBkYXRhLCBtdGltZSk7CisgICAgICAgIGNvZGUgPSB1bm1hcnNoYWxfY29kZShtb2RwYXRoLCBkYXRhLCBtdGltZSk7CiAgICAgZWxzZQotICAgICAgICBjb2RlID0gY29tcGlsZV9zb3VyY2UoUHlCeXRlc19BU19TVFJJTkcobW9kcGF0aCksIGRhdGEpOwotICAgIFB5X0RFQ1JFRihtb2RwYXRoKTsKKyAgICAgICAgY29kZSA9IGNvbXBpbGVfc291cmNlKG1vZHBhdGgsIGRhdGEpOwogICAgIFB5X0RFQ1JFRihkYXRhKTsKICAgICByZXR1cm4gY29kZTsKIH0KQEAgLTEyMDYsMzUgKzEzNTAsNDUgQEAKIC8qIEdldCB0aGUgY29kZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBtb2R1bGUgc3BlY2lmaWVkIGJ5CiAgICAnZnVsbG5hbWUnLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKLWdldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgY2hhciAqZnVsbG5hbWUsCitnZXRfbW9kdWxlX2NvZGUoWmlwSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICpmdWxsbmFtZSwKICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBQeU9iamVjdCAqKnBfbW9kcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqdG9jX2VudHJ5OwotICAgIGNoYXIgKnN1Ym5hbWUsIHBhdGhbTUFYUEFUSExFTiArIDFdOwotICAgIGludCBsZW47CisgICAgUHlPYmplY3QgKmNvZGUgPSBOVUxMLCAqdG9jX2VudHJ5LCAqc3VibmFtZTsKKyAgICBQeU9iamVjdCAqcGF0aCwgKmZ1bGxwYXRoID0gTlVMTDsKICAgICBzdHJ1Y3Qgc3RfemlwX3NlYXJjaG9yZGVyICp6c287CiAKICAgICBzdWJuYW1lID0gZ2V0X3N1Ym5hbWUoZnVsbG5hbWUpOworICAgIGlmIChzdWJuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgbGVuID0gbWFrZV9maWxlbmFtZShzZWxmLT5wcmVmaXgsIHN1Ym5hbWUsIHBhdGgsIHNpemVvZihwYXRoKSk7Ci0gICAgaWYgKGxlbiA8IDApCisgICAgcGF0aCA9IG1ha2VfZmlsZW5hbWUoc2VsZi0+cHJlZml4LCBzdWJuYW1lKTsKKyAgICBQeV9ERUNSRUYoc3VibmFtZSk7CisgICAgaWYgKHBhdGggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBmb3IgKHpzbyA9IHppcF9zZWFyY2hvcmRlcjsgKnpzby0+c3VmZml4OyB6c28rKykgewotICAgICAgICBQeU9iamVjdCAqY29kZSA9IE5VTEw7CisgICAgICAgIGNvZGUgPSBOVUxMOwogCi0gICAgICAgIHN0cmNweShwYXRoICsgbGVuLCB6c28tPnN1ZmZpeCk7CisgICAgICAgIGZ1bGxwYXRoID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVVJXMiLCBwYXRoLCB6c28tPnN1ZmZpeCk7CisgICAgICAgIGlmIChmdWxscGF0aCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBleGl0OworCiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpCi0gICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgdHJ5aW5nICVVJWMlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5hcmNoaXZlLCAoaW50KVNFUCwgcGF0aCk7Ci0gICAgICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKHNlbGYtPmZpbGVzLCBwYXRoKTsKKyAgICAgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiIyB0cnlpbmcgJVUlYyVVXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmFyY2hpdmUsIChpbnQpU0VQLCBmdWxscGF0aCk7CisgICAgICAgIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtKHNlbGYtPmZpbGVzLCBmdWxscGF0aCk7CiAgICAgICAgIGlmICh0b2NfZW50cnkgIT0gTlVMTCkgewogICAgICAgICAgICAgdGltZV90IG10aW1lID0gMDsKICAgICAgICAgICAgIGludCBpc3BhY2thZ2UgPSB6c28tPnR5cGUgJiBJU19QQUNLQUdFOwogICAgICAgICAgICAgaW50IGlzYnl0ZWNvZGUgPSB6c28tPnR5cGUgJiBJU19CWVRFQ09ERTsKIAotICAgICAgICAgICAgaWYgKGlzYnl0ZWNvZGUpCi0gICAgICAgICAgICAgICAgbXRpbWUgPSBnZXRfbXRpbWVfb2Zfc291cmNlKHNlbGYsIHBhdGgpOworICAgICAgICAgICAgaWYgKGlzYnl0ZWNvZGUpIHsKKyAgICAgICAgICAgICAgICBtdGltZSA9IGdldF9tdGltZV9vZl9zb3VyY2Uoc2VsZiwgZnVsbHBhdGgpOworICAgICAgICAgICAgICAgIGlmIChtdGltZSA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0NMRUFSKGZ1bGxwYXRoKTsKICAgICAgICAgICAgIGlmIChwX2lzcGFja2FnZSAhPSBOVUxMKQogICAgICAgICAgICAgICAgICpwX2lzcGFja2FnZSA9IGlzcGFja2FnZTsKICAgICAgICAgICAgIGNvZGUgPSBnZXRfY29kZV9mcm9tX2RhdGEoc2VsZiwgaXNwYWNrYWdlLApAQCAtMTI1MCwxMSArMTQwNCwxNiBAQAogICAgICAgICAgICAgICAgICpwX21vZHBhdGggPSBQeVR1cGxlX0dldEl0ZW0odG9jX2VudHJ5LCAwKTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoKnBfbW9kcGF0aCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gY29kZTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9DTEVBUihmdWxscGF0aCk7CiAgICAgfQotICAgIFB5RXJyX0Zvcm1hdChaaXBJbXBvcnRFcnJvciwgImNhbid0IGZpbmQgbW9kdWxlICclcyciLCBmdWxsbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgUHlFcnJfRm9ybWF0KFppcEltcG9ydEVycm9yLCAiY2FuJ3QgZmluZCBtb2R1bGUgJVIiLCBmdWxsbmFtZSk7CitleGl0OgorICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICBQeV9YREVDUkVGKGZ1bGxwYXRoKTsKKyAgICByZXR1cm4gY29kZTsKIH0KIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWJtb2R1bGUuYyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCmluZGV4IGExZTYwNWIuLjY1MTkxOTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYm1vZHVsZS5jCisrKyBiL01vZHVsZXMvemxpYm1vZHVsZS5jCkBAIC00Myw3ICs0Myw5IEBACiAgICAgel9zdHJlYW0genN0OwogICAgIFB5T2JqZWN0ICp1bnVzZWRfZGF0YTsKICAgICBQeU9iamVjdCAqdW5jb25zdW1lZF90YWlsOworICAgIGNoYXIgZW9mOwogICAgIGludCBpc19pbml0aWFsaXNlZDsKKyAgICBQeU9iamVjdCAqemRpY3Q7CiAgICAgI2lmZGVmIFdJVEhfVEhSRUFECiAgICAgICAgIFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrOwogICAgICNlbmRpZgpAQCAtNzksMTQgKzgxLDM0IEBACiB9CiAKIFB5RG9jX1NUUlZBUihjb21wcmVzc29ial9fZG9jX18sCi0iY29tcHJlc3NvYmooW2xldmVsXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCisiY29tcHJlc3NvYmoobGV2ZWw9LTEsIG1ldGhvZD1ERUZMQVRFRCwgd2JpdHM9MTUsIG1lbWxldmVsPTgsXG4iCisiICAgICAgICAgICAgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKVxuIgorIiAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJcbiIKLSJPcHRpb25hbCBhcmcgbGV2ZWwgaXMgdGhlIGNvbXByZXNzaW9uIGxldmVsLCBpbiAxLTkuIik7CisibGV2ZWwgaXMgdGhlIGNvbXByZXNzaW9uIGxldmVsIChhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSAwLTk7IGRlZmF1bHQgaXMgNikuXG4iCisiSGlnaGVyIGNvbXByZXNzaW9uIGxldmVscyBhcmUgc2xvd2VyLCBidXQgcHJvZHVjZSBzbWFsbGVyIHJlc3VsdHMuXG4iCisiXG4iCisibWV0aG9kIGlzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0uIElmIGdpdmVuLCB0aGlzIG11c3QgYmUgREVGTEFURUQuXG4iCisiXG4iCisid2JpdHMgaXMgdGhlIGJhc2UgdHdvIGxvZ2FyaXRobSBvZiB0aGUgd2luZG93IHNpemUgKHJhbmdlOiA4Li4xNSkuXG4iCisiXG4iCisibWVtbGV2ZWwgY29udHJvbHMgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBmb3IgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuXG4iCisiVmFsaWQgdmFsdWVzIHJhbmdlIGZyb20gMSB0byA5LiBIaWdoZXIgdmFsdWVzIHJlc3VsdCBpbiBoaWdoZXIgbWVtb3J5IHVzYWdlLFxuIgorImZhc3RlciBjb21wcmVzc2lvbiwgYW5kIHNtYWxsZXIgb3V0cHV0LlxuIgorIlxuIgorInN0cmF0ZWd5IGlzIHVzZWQgdG8gdHVuZSB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtLiBQb3NzaWJsZSB2YWx1ZXMgYXJlXG4iCisiWl9ERUZBVUxUX1NUUkFURUdZLCBaX0ZJTFRFUkVELCBhbmQgWl9IVUZGTUFOX09OTFkuXG4iCisiXG4iCisiemRpY3QgaXMgdGhlIHByZWRlZmluZWQgY29tcHJlc3Npb24gZGljdGlvbmFyeSAtIGEgc2VxdWVuY2Ugb2YgYnl0ZXNcbiIKKyJjb250YWluaW5nIHN1YnNlcXVlbmNlcyB0aGF0IGFyZSBsaWtlbHkgdG8gb2NjdXIgaW4gdGhlIGlucHV0IGRhdGEuIik7CiAKIFB5RG9jX1NUUlZBUihkZWNvbXByZXNzb2JqX19kb2NfXywKLSJkZWNvbXByZXNzb2JqKFt3Yml0c10pIC0tIFJldHVybiBhIGRlY29tcHJlc3NvciBvYmplY3QuXG4iCisiZGVjb21wcmVzc29iaihbd2JpdHNbLCB6ZGljdF1dKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgogIlxuIgotIk9wdGlvbmFsIGFyZyB3Yml0cyBpcyB0aGUgd2luZG93IGJ1ZmZlciBzaXplLiIpOworIk9wdGlvbmFsIGFyZyB3Yml0cyBpcyB0aGUgd2luZG93IGJ1ZmZlciBzaXplLlxuIgorIlxuIgorIk9wdGlvbmFsIGFyZyB6ZGljdCBpcyB0aGUgcHJlZGVmaW5lZCBjb21wcmVzc2lvbiBkaWN0aW9uYXJ5LiBUaGlzIG11c3QgYmVcbiIKKyJ0aGUgc2FtZSBkaWN0aW9uYXJ5IGFzIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IgdGhhdCBwcm9kdWNlZCB0aGUgaW5wdXQgZGF0YS4iKTsKIAogc3RhdGljIGNvbXBvYmplY3QgKgogbmV3Y29tcG9iamVjdChQeVR5cGVPYmplY3QgKnR5cGUpCkBAIC05NSw3ICsxMTcsOSBAQAogICAgIHNlbGYgPSBQeU9iamVjdF9OZXcoY29tcG9iamVjdCwgdHlwZSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2VsZi0+ZW9mID0gMDsKICAgICBzZWxmLT5pc19pbml0aWFsaXNlZCA9IDA7CisgICAgc2VsZi0+emRpY3QgPSBOVUxMOwogICAgIHNlbGYtPnVudXNlZF9kYXRhID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CiAgICAgaWYgKHNlbGYtPnVudXNlZF9kYXRhID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwpAQCAtMjk3LDcgKzMyMSw3IEBACiAKICAgICBlcnIgPSBpbmZsYXRlRW5kKCZ6c3QpOwogICAgIGlmIChlcnIgIT0gWl9PSykgewotICAgICAgICB6bGliX2Vycm9yKHpzdCwgZXJyLCAid2hpbGUgZmluaXNoaW5nIGRhdGEgZGVjb21wcmVzc2lvbiIpOworICAgICAgICB6bGliX2Vycm9yKHpzdCwgZXJyLCAid2hpbGUgZmluaXNoaW5nIGRlY29tcHJlc3Npb24iKTsKICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKQEAgLTMxNCwxOSArMzM4LDI0IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1QeVpsaWJfY29tcHJlc3NvYmooUHlPYmplY3QgKnNlbGZwdHIsIFB5T2JqZWN0ICphcmdzKQorUHlabGliX2NvbXByZXNzb2JqKFB5T2JqZWN0ICpzZWxmcHRyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKICAgICBjb21wb2JqZWN0ICpzZWxmOwogICAgIGludCBsZXZlbD1aX0RFRkFVTFRfQ09NUFJFU1NJT04sIG1ldGhvZD1ERUZMQVRFRDsKICAgICBpbnQgd2JpdHM9TUFYX1dCSVRTLCBtZW1MZXZlbD1ERUZfTUVNX0xFVkVMLCBzdHJhdGVneT0wLCBlcnI7CisgICAgUHlfYnVmZmVyIHpkaWN0OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibGV2ZWwiLCAibWV0aG9kIiwgIndiaXRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbUxldmVsIiwgInN0cmF0ZWd5IiwgInpkaWN0IiwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpaWlpaTpjb21wcmVzc29iaiIsICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbWVtTGV2ZWwsICZzdHJhdGVneSkpCisgICAgemRpY3QuYnVmID0gTlVMTDsgLyogU2VudGluZWwsIHNvIHdlIGNhbiB0ZWxsIHdoZXRoZXIgemRpY3Qgd2FzIHN1cHBsaWVkLiAqLworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxpaWlpaXkqOmNvbXByZXNzb2JqIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZsZXZlbCwgJm1ldGhvZCwgJndiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtZW1MZXZlbCwgJnN0cmF0ZWd5LCAmemRpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHNlbGYgPSBuZXdjb21wb2JqZWN0KCZDb21wdHlwZSk7CiAgICAgaWYgKHNlbGY9PU5VTEwpCi0gICAgICAgIHJldHVybihOVUxMKTsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICBzZWxmLT56c3QuemFsbG9jID0gKGFsbG9jX2Z1bmMpTlVMTDsKICAgICBzZWxmLT56c3QuemZyZWUgPSAoZnJlZV9mdW5jKVpfTlVMTDsKICAgICBzZWxmLT56c3QubmV4dF9pbiA9IE5VTEw7CkBAIC0zMzUsMzAgKzM2NCw1OCBAQAogICAgIHN3aXRjaChlcnIpIHsKICAgICBjYXNlIChaX09LKToKICAgICAgICAgc2VsZi0+aXNfaW5pdGlhbGlzZWQgPSAxOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOworICAgICAgICBpZiAoemRpY3QuYnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gc3VjY2VzczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVyciA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5KCZzZWxmLT56c3QsIHpkaWN0LmJ1ZiwgemRpY3QubGVuKTsKKyAgICAgICAgICAgIHN3aXRjaCAoZXJyKSB7CisgICAgICAgICAgICBjYXNlIChaX09LKToKKyAgICAgICAgICAgICAgICBnb3RvIHN1Y2Nlc3M7CisgICAgICAgICAgICBjYXNlIChaX1NUUkVBTV9FUlJPUik6CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbnZhbGlkIGRpY3Rpb25hcnkiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImRlZmxhdGVTZXREaWN0aW9uYXJ5KCkiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgIH0KICAgICBjYXNlIChaX01FTV9FUlJPUik6Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgY29tcHJlc3Npb24gb2JqZWN0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIGNhc2UoWl9TVFJFQU1fRVJST1IpOgotICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBpbml0aWFsaXphdGlvbiBvcHRpb24iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgZGVmYXVsdDoKICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGNyZWF0aW5nIGNvbXByZXNzaW9uIG9iamVjdCIpOwotICAgICAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KKworIGVycm9yOgorICAgIFB5X1hERUNSRUYoc2VsZik7CisgICAgc2VsZiA9IE5VTEw7Cisgc3VjY2VzczoKKyAgICBpZiAoemRpY3QuYnVmICE9IE5VTEwpCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnpkaWN0KTsKKyAgICByZXR1cm4gKFB5T2JqZWN0KilzZWxmOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotUHlabGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKnNlbGZwdHIsIFB5T2JqZWN0ICphcmdzKQorUHlabGliX2RlY29tcHJlc3NvYmooUHlPYmplY3QgKnNlbGZwdHIsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsid2JpdHMiLCAiemRpY3QiLCBOVUxMfTsKICAgICBpbnQgd2JpdHM9REVGX1dCSVRTLCBlcnI7CiAgICAgY29tcG9iamVjdCAqc2VsZjsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOmRlY29tcHJlc3NvYmoiLCAmd2JpdHMpKQorICAgIFB5T2JqZWN0ICp6ZGljdD1OVUxMOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGlPOmRlY29tcHJlc3NvYmoiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJndiaXRzLCAmemRpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoemRpY3QgIT0gTlVMTCAmJiAhUHlPYmplY3RfQ2hlY2tCdWZmZXIoemRpY3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiemRpY3QgYXJndW1lbnQgbXVzdCBzdXBwb3J0IHRoZSBidWZmZXIgcHJvdG9jb2wiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgc2VsZiA9IG5ld2NvbXBvYmplY3QoJkRlY29tcHR5cGUpOwogICAgIGlmIChzZWxmID09IE5VTEwpCkBAIC0zNjcsNiArNDI0LDEwIEBACiAgICAgc2VsZi0+enN0LnpmcmVlID0gKGZyZWVfZnVuYylaX05VTEw7CiAgICAgc2VsZi0+enN0Lm5leHRfaW4gPSBOVUxMOwogICAgIHNlbGYtPnpzdC5hdmFpbF9pbiA9IDA7CisgICAgaWYgKHpkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHpkaWN0KTsKKyAgICAgICAgc2VsZi0+emRpY3QgPSB6ZGljdDsKKyAgICB9CiAgICAgZXJyID0gaW5mbGF0ZUluaXQyKCZzZWxmLT56c3QsIHdiaXRzKTsKICAgICBzd2l0Y2goZXJyKSB7CiAgICAgY2FzZSAoWl9PSyk6CkBAIC0zOTYsNiArNDU3LDcgQEAKICNlbmRpZgogICAgIFB5X1hERUNSRUYoc2VsZi0+dW51c2VkX2RhdGEpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YREVDUkVGKHNlbGYtPnpkaWN0KTsKICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKQEAgLTQ4Miw3ICs1NDQsNyBAQAogICAgICovCiAKICAgICBpZiAoZXJyICE9IFpfT0sgJiYgZXJyICE9IFpfQlVGX0VSUk9SKSB7Ci0gICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBjb21wcmVzc2luZyIpOworICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgY29tcHJlc3NpbmcgZGF0YSIpOwogICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKICAgICAgICAgUmV0VmFsID0gTlVMTDsKICAgICAgICAgZ290byBlcnJvcjsKQEAgLTU1NSw2ICs2MTcsMjcgQEAKICAgICBlcnIgPSBpbmZsYXRlKCYoc2VsZi0+enN0KSwgWl9TWU5DX0ZMVVNIKTsKICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCisgICAgaWYgKGVyciA9PSBaX05FRURfRElDVCAmJiBzZWxmLT56ZGljdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X2J1ZmZlciB6ZGljdF9idWY7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VsZi0+emRpY3QsICZ6ZGljdF9idWYsIFB5QlVGX1NJTVBMRSkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihSZXRWYWwpOworICAgICAgICAgICAgUmV0VmFsID0gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZXJyID0gaW5mbGF0ZVNldERpY3Rpb25hcnkoJihzZWxmLT56c3QpLCB6ZGljdF9idWYuYnVmLCB6ZGljdF9idWYubGVuKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmemRpY3RfYnVmKTsKKyAgICAgICAgaWYgKGVyciAhPSBaX09LKSB7CisgICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAid2hpbGUgZGVjb21wcmVzc2luZyBkYXRhIik7CisgICAgICAgICAgICBQeV9ERUNSRUYoUmV0VmFsKTsKKyAgICAgICAgICAgIFJldFZhbCA9IE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIC8qIFJlcGVhdCB0aGUgY2FsbCB0byBpbmZsYXRlLiAqLworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCisgICAgICAgIGVyciA9IGluZmxhdGUoJihzZWxmLT56c3QpLCBaX1NZTkNfRkxVU0gpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKwogICAgIC8qIFdoaWxlIFpfT0sgYW5kIHRoZSBvdXRwdXQgYnVmZmVyIGlzIGZ1bGwsIHRoZXJlIG1pZ2h0IGJlIG1vcmUgb3V0cHV0LgogICAgICAgIFNvIGV4dGVuZCB0aGUgb3V0cHV0IGJ1ZmZlciBhbmQgdHJ5IGFnYWluLgogICAgICovCkBAIC02MTcsMTIgKzcwMCwxMyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CisgICAgICAgIHNlbGYtPmVvZiA9IDE7CiAgICAgICAgIC8qIFdlIHdpbGwgb25seSBnZXQgWl9CVUZfRVJST1IgaWYgdGhlIG91dHB1dCBidWZmZXIgd2FzIGZ1bGwKICAgICAgICAgICAgYnV0IHRoZXJlIHdhc24ndCBtb3JlIG91dHB1dCB3aGVuIHdlIHRyaWVkIGFnYWluLCBzbyBpdCBpcwogICAgICAgICAgICBub3QgYW4gZXJyb3IgY29uZGl0aW9uLgogICAgICAgICAqLwogICAgIH0gZWxzZSBpZiAoZXJyICE9IFpfT0sgJiYgZXJyICE9IFpfQlVGX0VSUk9SKSB7Ci0gICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBkZWNvbXByZXNzaW5nIik7CisgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBkZWNvbXByZXNzaW5nIGRhdGEiKTsKICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CiAgICAgICAgIFJldFZhbCA9IE5VTEw7CiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC03MDMsNyArNzg3LDcgQEAKICAgICBpZiAoZXJyID09IFpfU1RSRUFNX0VORCAmJiBmbHVzaG1vZGUgPT0gWl9GSU5JU0gpIHsKICAgICAgICAgZXJyID0gZGVmbGF0ZUVuZCgmKHNlbGYtPnpzdCkpOwogICAgICAgICBpZiAoZXJyICE9IFpfT0spIHsKLSAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJmcm9tIGRlZmxhdGVFbmQoKSIpOworICAgICAgICAgICAgemxpYl9lcnJvcihzZWxmLT56c3QsIGVyciwgIndoaWxlIGZpbmlzaGluZyBjb21wcmVzc2lvbiIpOwogICAgICAgICAgICAgUHlfREVDUkVGKFJldFZhbCk7CiAgICAgICAgICAgICBSZXRWYWwgPSBOVUxMOwogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTc2NywxMCArODUxLDE0IEBACiAgICAgfQogICAgIFB5X0lOQ1JFRihzZWxmLT51bnVzZWRfZGF0YSk7CiAgICAgUHlfSU5DUkVGKHNlbGYtPnVuY29uc3VtZWRfdGFpbCk7CisgICAgUHlfWElOQ1JFRihzZWxmLT56ZGljdCk7CiAgICAgUHlfWERFQ1JFRihyZXR2YWwtPnVudXNlZF9kYXRhKTsKICAgICBQeV9YREVDUkVGKHJldHZhbC0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YREVDUkVGKHJldHZhbC0+emRpY3QpOwogICAgIHJldHZhbC0+dW51c2VkX2RhdGEgPSBzZWxmLT51bnVzZWRfZGF0YTsKICAgICByZXR2YWwtPnVuY29uc3VtZWRfdGFpbCA9IHNlbGYtPnVuY29uc3VtZWRfdGFpbDsKKyAgICByZXR2YWwtPnpkaWN0ID0gc2VsZi0+emRpY3Q7CisgICAgcmV0dmFsLT5lb2YgPSBzZWxmLT5lb2Y7CiAKICAgICAvKiBNYXJrIGl0IGFzIGJlaW5nIGluaXRpYWxpemVkICovCiAgICAgcmV0dmFsLT5pc19pbml0aWFsaXNlZCA9IDE7CkBAIC04MTgsMTAgKzkwNiwxNCBAQAogCiAgICAgUHlfSU5DUkVGKHNlbGYtPnVudXNlZF9kYXRhKTsKICAgICBQeV9JTkNSRUYoc2VsZi0+dW5jb25zdW1lZF90YWlsKTsKKyAgICBQeV9YSU5DUkVGKHNlbGYtPnpkaWN0KTsKICAgICBQeV9YREVDUkVGKHJldHZhbC0+dW51c2VkX2RhdGEpOwogICAgIFB5X1hERUNSRUYocmV0dmFsLT51bmNvbnN1bWVkX3RhaWwpOworICAgIFB5X1hERUNSRUYocmV0dmFsLT56ZGljdCk7CiAgICAgcmV0dmFsLT51bnVzZWRfZGF0YSA9IHNlbGYtPnVudXNlZF9kYXRhOwogICAgIHJldHZhbC0+dW5jb25zdW1lZF90YWlsID0gc2VsZi0+dW5jb25zdW1lZF90YWlsOworICAgIHJldHZhbC0+emRpY3QgPSBzZWxmLT56ZGljdDsKKyAgICByZXR2YWwtPmVvZiA9IHNlbGYtPmVvZjsKIAogICAgIC8qIE1hcmsgaXQgYXMgYmVpbmcgaW5pdGlhbGl6ZWQgKi8KICAgICByZXR2YWwtPmlzX2luaXRpYWxpc2VkID0gMTsKQEAgLTg4NywxNCArOTc5LDEzIEBACiAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgfQogCi0gICAgLyogSWYgZmx1c2htb2RlIGlzIFpfRklOSVNILCB3ZSBhbHNvIGhhdmUgdG8gY2FsbCBkZWZsYXRlRW5kKCkgdG8gZnJlZQotICAgICAgIHZhcmlvdXMgZGF0YSBzdHJ1Y3R1cmVzLiBOb3RlIHdlIHNob3VsZCBvbmx5IGdldCBaX1NUUkVBTV9FTkQgd2hlbgotICAgICAgIGZsdXNobW9kZSBpcyBaX0ZJTklTSCAqLworICAgIC8qIElmIGF0IGVuZCBvZiBzdHJlYW0sIGNsZWFuIHVwIGFueSBtZW1vcnkgYWxsb2NhdGVkIGJ5IHpsaWIuICovCiAgICAgaWYgKGVyciA9PSBaX1NUUkVBTV9FTkQpIHsKLSAgICAgICAgZXJyID0gaW5mbGF0ZUVuZCgmKHNlbGYtPnpzdCkpOworICAgICAgICBzZWxmLT5lb2YgPSAxOwogICAgICAgICBzZWxmLT5pc19pbml0aWFsaXNlZCA9IDA7CisgICAgICAgIGVyciA9IGluZmxhdGVFbmQoJihzZWxmLT56c3QpKTsKICAgICAgICAgaWYgKGVyciAhPSBaX09LKSB7Ci0gICAgICAgICAgICB6bGliX2Vycm9yKHNlbGYtPnpzdCwgZXJyLCAiZnJvbSBpbmZsYXRlRW5kKCkiKTsKKyAgICAgICAgICAgIHpsaWJfZXJyb3Ioc2VsZi0+enN0LCBlcnIsICJ3aGlsZSBmaW5pc2hpbmcgZGVjb21wcmVzc2lvbiIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CiAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOwogICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTk0Miw2ICsxMDMzLDcgQEAKIHN0YXRpYyBQeU1lbWJlckRlZiBEZWNvbXBfbWVtYmVyc1tdID0gewogICAgIHsidW51c2VkX2RhdGEiLCAgICAgVF9PQkpFQ1QsIENPTVBfT0ZGKHVudXNlZF9kYXRhKSwgUkVBRE9OTFl9LAogICAgIHsidW5jb25zdW1lZF90YWlsIiwgVF9PQkpFQ1QsIENPTVBfT0ZGKHVuY29uc3VtZWRfdGFpbCksIFJFQURPTkxZfSwKKyAgICB7ImVvZiIsICAgICAgICAgICAgIFRfQk9PTCwgICBDT01QX09GRihlb2YpLCBSRUFET05MWX0sCiAgICAge05VTEx9LAogfTsKIApAQCAtMTAyNywxMyArMTExOSwxMyBAQAogICAgICAgICAgICAgICAgIGFkbGVyMzJfX2RvY19ffSwKICAgICB7ImNvbXByZXNzIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9jb21wcmVzcywgIE1FVEhfVkFSQVJHUywKICAgICAgICAgICAgICAgICAgY29tcHJlc3NfX2RvY19ffSwKLSAgICB7ImNvbXByZXNzb2JqIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9jb21wcmVzc29iaiwgTUVUSF9WQVJBUkdTLAorICAgIHsiY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pUHlabGliX2NvbXByZXNzb2JqLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywKICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NvYmpfX2RvY19ffSwKICAgICB7ImNyYzMyIiwgKFB5Q0Z1bmN0aW9uKVB5WmxpYl9jcmMzMiwgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICBjcmMzMl9fZG9jX199LAogICAgIHsiZGVjb21wcmVzcyIsIChQeUNGdW5jdGlvbilQeVpsaWJfZGVjb21wcmVzcywgTUVUSF9WQVJBUkdTLAogICAgICAgICAgICAgICAgICAgIGRlY29tcHJlc3NfX2RvY19ffSwKLSAgICB7ImRlY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pUHlabGliX2RlY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHUywKKyAgICB7ImRlY29tcHJlc3NvYmoiLCAoUHlDRnVuY3Rpb24pUHlabGliX2RlY29tcHJlc3NvYmosIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLAogICAgICAgICAgICAgICAgICAgIGRlY29tcHJlc3NvYmpfX2RvY19ffSwKICAgICB7TlVMTCwgTlVMTH0KIH07CkBAIC0xMTA3LDEwICsxMTk5LDEwIEBACiAiXG4iCiAiYWRsZXIzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYW4gQWRsZXItMzIgY2hlY2tzdW0uXG4iCiAiY29tcHJlc3Moc3RyaW5nWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBzdHJpbmcsIHdpdGggY29tcHJlc3Npb24gbGV2ZWwgaW4gMS05LlxuIgotImNvbXByZXNzb2JqKFtsZXZlbF0pIC0tIFJldHVybiBhIGNvbXByZXNzb3Igb2JqZWN0LlxuIgorImNvbXByZXNzb2JqKFtsZXZlbFssIC4uLl1dKSAtLSBSZXR1cm4gYSBjb21wcmVzc29yIG9iamVjdC5cbiIKICJjcmMzMihzdHJpbmdbLCBzdGFydF0pIC0tIENvbXB1dGUgYSBDUkMtMzIgY2hlY2tzdW0uXG4iCiAiZGVjb21wcmVzcyhzdHJpbmcsW3diaXRzXSxbYnVmc2l6ZV0pIC0tIERlY29tcHJlc3NlcyBhIGNvbXByZXNzZWQgc3RyaW5nLlxuIgotImRlY29tcHJlc3NvYmooW3diaXRzXSkgLS0gUmV0dXJuIGEgZGVjb21wcmVzc29yIG9iamVjdC5cbiIKKyJkZWNvbXByZXNzb2JqKFt3Yml0c1ssIHpkaWN0XV1dKSAtLSBSZXR1cm4gYSBkZWNvbXByZXNzb3Igb2JqZWN0LlxuIgogIlxuIgogIid3Yml0cycgaXMgd2luZG93IGJ1ZmZlciBzaXplLlxuIgogIkNvbXByZXNzb3Igb2JqZWN0cyBzdXBwb3J0IGNvbXByZXNzKCkgYW5kIGZsdXNoKCkgbWV0aG9kczsgZGVjb21wcmVzc29yXG4iCkBAIC0xMTY0LDYgKzEyNTYsMTAgQEAKICAgICBpZiAodmVyICE9IE5VTEwpCiAgICAgICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiWkxJQl9WRVJTSU9OIiwgdmVyKTsKIAorICAgIHZlciA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHpsaWJWZXJzaW9uKCkpOworICAgIGlmICh2ZXIgIT0gTlVMTCkKKyAgICAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJaTElCX1JVTlRJTUVfVkVSU0lPTiIsIHZlcik7CisKICAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiX192ZXJzaW9uX18iLCAiMS4wIik7CiAKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL09iamVjdHMvYWJzdHJhY3QuYyBiL09iamVjdHMvYWJzdHJhY3QuYwppbmRleCA3NzA1ZDA1Li5hMjczN2RkIDEwMDY0NAotLS0gYS9PYmplY3RzL2Fic3RyYWN0LmMKKysrIGIvT2JqZWN0cy9hYnN0cmFjdC5jCkBAIC03NCw3ICs3NCw3IEBACiBQeV9zc2l6ZV90CiBfUHlPYmplY3RfTGVuZ3RoSGludChQeU9iamVjdCAqbywgUHlfc3NpemVfdCBkZWZhdWx0dmFsdWUpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpoaW50c3Ryb2JqID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbmd0aF9oaW50X18pOwogICAgIFB5T2JqZWN0ICpybywgKmhpbnRtZXRoOwogICAgIFB5X3NzaXplX3QgcnY7CiAKQEAgLTg5LDcgKzg5LDcgQEAKICAgICB9CiAKICAgICAvKiB0cnkgby5fX2xlbmd0aF9oaW50X18oKSAqLwotICAgIGhpbnRtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgIl9fbGVuZ3RoX2hpbnRfXyIsICZoaW50c3Ryb2JqKTsKKyAgICBoaW50bWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICZQeUlkX19fbGVuZ3RoX2hpbnRfXyk7CiAgICAgaWYgKGhpbnRtZXRoID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yMzcsNyArMjM3LDggQEAKICAgICBwYiA9IG9iai0+b2JfdHlwZS0+dHBfYXNfYnVmZmVyOwogICAgIGlmIChwYiA9PSBOVUxMIHx8IHBiLT5iZl9nZXRidWZmZXIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIGFuIG9iamVjdCB3aXRoIHRoZSBidWZmZXIgaW50ZXJmYWNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgYnl0ZXMsIGJ5dGVhcnJheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAib3IgYnVmZmVyIGNvbXBhdGlibGUgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKCgqcGItPmJmX2dldGJ1ZmZlcikob2JqLCAmdmlldywgUHlCVUZfU0lNUExFKSkgcmV0dXJuIC0xOwpAQCAtMzMxLDcgKzMzMiw3IEBACiB7CiAgICAgaWYgKCFQeU9iamVjdF9DaGVja0J1ZmZlcihvYmopKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJyUxMDBzJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgICInJS4xMDBzJyBkb2VzIG5vdCBzdXBwb3J0IHRoZSBidWZmZXIgaW50ZXJmYWNlIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zMzksNyArMzQwLDcgQEAKIH0KIAogc3RhdGljIGludAotX0lzRm9ydHJhbkNvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3KQorX0lzRm9ydHJhbkNvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICp2aWV3KQogewogICAgIFB5X3NzaXplX3Qgc2QsIGRpbTsKICAgICBpbnQgaTsKQEAgLTM2MCw3ICszNjEsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1fSXNDQ29udGlndW91cyhQeV9idWZmZXIgKnZpZXcpCitfSXNDQ29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKnZpZXcpCiB7CiAgICAgUHlfc3NpemVfdCBzZCwgZGltOwogICAgIGludCBpOwpAQCAtMzgxLDE2ICszODIsMTYgQEAKIH0KIAogaW50Ci1QeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCBjaGFyIGZvcnQpCitQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXMoY29uc3QgUHlfYnVmZmVyICp2aWV3LCBjaGFyIG9yZGVyKQogewogCiAgICAgaWYgKHZpZXctPnN1Ym9mZnNldHMgIT0gTlVMTCkgcmV0dXJuIDA7CiAKLSAgICBpZiAoZm9ydCA9PSAnQycpCisgICAgaWYgKG9yZGVyID09ICdDJykKICAgICAgICAgcmV0dXJuIF9Jc0NDb250aWd1b3VzKHZpZXcpOwotICAgIGVsc2UgaWYgKGZvcnQgPT0gJ0YnKQorICAgIGVsc2UgaWYgKG9yZGVyID09ICdGJykKICAgICAgICAgcmV0dXJuIF9Jc0ZvcnRyYW5Db250aWd1b3VzKHZpZXcpOwotICAgIGVsc2UgaWYgKGZvcnQgPT0gJ0EnKQorICAgIGVsc2UgaWYgKG9yZGVyID09ICdBJykKICAgICAgICAgcmV0dXJuIChfSXNDQ29udGlndW91cyh2aWV3KSB8fCBfSXNGb3J0cmFuQ29udGlndW91cyh2aWV3KSk7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC00NDQsNjIgKzQ0NSw2IEBACiAgICAgfQogfQogCi0gIC8qIHZpZXcgaXMgbm90IGNoZWNrZWQgZm9yIGNvbnNpc3RlbmN5IGluIGVpdGhlciBvZiB0aGVzZS4gIEl0IGlzCi0gICAgIGFzc3VtZWQgdGhhdCB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGlzIHZpZXctPmxlbiBpbgotICAgICB2aWV3LT5sZW4gLyB2aWV3LT5pdGVtc2l6ZSBlbGVtZW50cy4KLSAgKi8KLQotaW50Ci1QeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXModm9pZCAqYnVmLCBQeV9idWZmZXIgKnZpZXcsIFB5X3NzaXplX3QgbGVuLCBjaGFyIGZvcnQpCi17Ci0gICAgaW50IGs7Ci0gICAgdm9pZCAoKmFkZG9uZSkoaW50LCBQeV9zc2l6ZV90ICosIGNvbnN0IFB5X3NzaXplX3QgKik7Ci0gICAgUHlfc3NpemVfdCAqaW5kaWNlcywgZWxlbWVudHM7Ci0gICAgY2hhciAqZGVzdCwgKnB0cjsKLQotICAgIGlmIChsZW4gPiB2aWV3LT5sZW4pIHsKLSAgICAgICAgbGVuID0gdmlldy0+bGVuOwotICAgIH0KLQotICAgIGlmIChQeUJ1ZmZlcl9Jc0NvbnRpZ3VvdXModmlldywgZm9ydCkpIHsKLSAgICAgICAgLyogc2ltcGxlc3QgY29weSBpcyBhbGwgdGhhdCBpcyBuZWVkZWQgKi8KLSAgICAgICAgbWVtY3B5KGJ1Ziwgdmlldy0+YnVmLCBsZW4pOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvKiBPdGhlcndpc2UgYSBtb3JlIGVsYWJvcmF0ZSBzY2hlbWUgaXMgbmVlZGVkICovCi0KLSAgICAvKiBYWFgobm5vcndpdHopOiBuZWVkIHRvIGNoZWNrIGZvciBvdmVyZmxvdyEgKi8KLSAgICBpbmRpY2VzID0gKFB5X3NzaXplX3QgKilQeU1lbV9NYWxsb2Moc2l6ZW9mKFB5X3NzaXplX3QpKih2aWV3LT5uZGltKSk7Ci0gICAgaWYgKGluZGljZXMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGZvciAoaz0wOyBrPHZpZXctPm5kaW07aysrKSB7Ci0gICAgICAgIGluZGljZXNba10gPSAwOwotICAgIH0KLQotICAgIGlmIChmb3J0ID09ICdGJykgewotICAgICAgICBhZGRvbmUgPSBfUHlfYWRkX29uZV90b19pbmRleF9GOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgYWRkb25lID0gX1B5X2FkZF9vbmVfdG9faW5kZXhfQzsKLSAgICB9Ci0gICAgZGVzdCA9IGJ1ZjsKLSAgICAvKiBYWFggOiBUaGlzIGlzIG5vdCBnb2luZyB0byBiZSB0aGUgZmFzdGVzdCBjb2RlIGluIHRoZSB3b3JsZAotICAgICAgICAgICAgIHNldmVyYWwgb3B0aW1pemF0aW9ucyBhcmUgcG9zc2libGUuCi0gICAgICovCi0gICAgZWxlbWVudHMgPSBsZW4gLyB2aWV3LT5pdGVtc2l6ZTsKLSAgICB3aGlsZSAoZWxlbWVudHMtLSkgewotICAgICAgICBhZGRvbmUodmlldy0+bmRpbSwgaW5kaWNlcywgdmlldy0+c2hhcGUpOwotICAgICAgICBwdHIgPSBQeUJ1ZmZlcl9HZXRQb2ludGVyKHZpZXcsIGluZGljZXMpOwotICAgICAgICBtZW1jcHkoZGVzdCwgcHRyLCB2aWV3LT5pdGVtc2l6ZSk7Ci0gICAgICAgIGRlc3QgKz0gdmlldy0+aXRlbXNpemU7Ci0gICAgfQotICAgIFB5TWVtX0ZyZWUoaW5kaWNlcyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIGludAogUHlCdWZmZXJfRnJvbUNvbnRpZ3VvdXMoUHlfYnVmZmVyICp2aWV3LCB2b2lkICpidWYsIFB5X3NzaXplX3QgbGVuLCBjaGFyIGZvcnQpCiB7CkBAIC02NDgsOSArNTkzLDkgQEAKIAogaW50CiBQeUJ1ZmZlcl9GaWxsSW5mbyhQeV9idWZmZXIgKnZpZXcsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmJ1ZiwgUHlfc3NpemVfdCBsZW4sCi0gICAgICAgICAgICAgIGludCByZWFkb25seSwgaW50IGZsYWdzKQorICAgICAgICAgICAgICAgICAgaW50IHJlYWRvbmx5LCBpbnQgZmxhZ3MpCiB7Ci0gICAgaWYgKHZpZXcgPT0gTlVMTCkgcmV0dXJuIDA7CisgICAgaWYgKHZpZXcgPT0gTlVMTCkgcmV0dXJuIDA7IC8qIFhYWCB3aHkgbm90IC0xPyAqLwogICAgIGlmICgoKGZsYWdzICYgUHlCVUZfV1JJVEFCTEUpID09IFB5QlVGX1dSSVRBQkxFKSAmJgogICAgICAgICAocmVhZG9ubHkgPT0gMSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLApAQCAtNjk2LDE2ICs2NDEsMTYgQEAKICAgICBQeU9iamVjdCAqbWV0aDsKICAgICBQeU9iamVjdCAqZW1wdHkgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZm9ybWF0X2NhY2hlID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2Zvcm1hdF9fKTsKIAogICAgIC8qIElmIG5vIGZvcm1hdF9zcGVjIGlzIHByb3ZpZGVkLCB1c2UgYW4gZW1wdHkgc3RyaW5nICovCiAgICAgaWYgKGZvcm1hdF9zcGVjID09IE5VTEwpIHsKLSAgICAgICAgZW1wdHkgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIGVtcHR5ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgZm9ybWF0X3NwZWMgPSBlbXB0eTsKICAgICB9CiAKICAgICAvKiBGaW5kIHRoZSAodW5ib3VuZCEpIF9fZm9ybWF0X18gbWV0aG9kIChhIGJvcnJvd2VkIHJlZmVyZW5jZSkgKi8KLSAgICBtZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwob2JqLCAiX19mb3JtYXRfXyIsICZmb3JtYXRfY2FjaGUpOworICAgIG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICZQeUlkX19fZm9ybWF0X18pOwogICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKQEAgLTc5Miw4ICs3MzcsNyBAQAogICAgICAgICAgICAgcmV0dXJuIHg7CiAgICAgICAgIFB5X0RFQ1JFRih4KTsgLyogY2FuJ3QgZG8gaXQgKi8KICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI2OCwzNyArMTIxMiwzMSBAQAogfQogCiAKLVB5T2JqZWN0ICoKLV9QeU51bWJlcl9Db252ZXJ0SW50ZWdyYWxUb0ludChQeU9iamVjdCAqaW50ZWdyYWwsIGNvbnN0IGNoYXIqIGVycm9yX2Zvcm1hdCkKKy8qCisgIFJldHVybnMgdGhlIEludGVncmFsIGluc3RhbmNlIGNvbnZlcnRlZCB0byBhbiBpbnQuIFRoZSBpbnN0YW5jZSBpcyBleHBlY3RlZAorICB0byBiZSBhbiBpbnQgb3IgaGF2ZSBhbiBfX2ludF9fIG1ldGhvZC4gU3RlYWxzIGludGVncmFsJ3MKKyAgcmVmZXJlbmNlLiBlcnJvcl9mb3JtYXQgd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVHlwZUVycm9yIGlmIGludGVncmFsCisgIGlzbid0IGFjdHVhbGx5IGFuIEludGVncmFsIGluc3RhbmNlLiBlcnJvcl9mb3JtYXQgc2hvdWxkIGJlIGEgZm9ybWF0IHN0cmluZworICB0aGF0IGNhbiBhY2NlcHQgYSBjaGFyKiBuYW1pbmcgaW50ZWdyYWwncyB0eXBlLiAKKyovCitzdGF0aWMgUHlPYmplY3QgKgorY29udmVydF9pbnRlZ3JhbF90b19pbnQoUHlPYmplY3QgKmludGVncmFsLCBjb25zdCBjaGFyICplcnJvcl9mb3JtYXQpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppbnRfbmFtZSA9IE5VTEw7Ci0gICAgaWYgKGludF9uYW1lID09IE5VTEwpIHsKLSAgICAgICAgaW50X25hbWUgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19pbnRfXyIpOwotICAgICAgICBpZiAoaW50X25hbWUgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChpbnRlZ3JhbCAmJiAhUHlMb25nX0NoZWNrKGludGVncmFsKSkgewotICAgICAgICAvKiBEb24ndCBnbyB0aHJvdWdoIHRwX2FzX251bWJlci0+bmJfaW50IHRvIGF2b2lkCi0gICAgICAgICAgIGhpdHRpbmcgdGhlIGNsYXNzaWMgY2xhc3MgZmFsbGJhY2sgdG8gX190cnVuY19fLiAqLwotICAgICAgICBQeU9iamVjdCAqaW50X2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyKGludGVncmFsLCBpbnRfbmFtZSk7Ci0gICAgICAgIGlmIChpbnRfZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBSYWlzZSBhIGRpZmZlcmVudCBlcnJvci4gKi8KLSAgICAgICAgICAgIGdvdG8gbm9uX2ludGVncmFsX2Vycm9yOworICAgIFB5TnVtYmVyTWV0aG9kcyAqbmI7CisgICAgaWYgKFB5TG9uZ19DaGVjayhpbnRlZ3JhbCkpCisgICAgICAgIHJldHVybiBpbnRlZ3JhbDsKKyAgICBuYiA9IFB5X1RZUEUoaW50ZWdyYWwpLT50cF9hc19udW1iZXI7CisgICAgaWYgKG5iLT5uYl9pbnQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFzX2ludCA9IG5iLT5uYl9pbnQoaW50ZWdyYWwpOworICAgICAgICBpZiAoIWFzX2ludCB8fCBQeUxvbmdfQ2hlY2soYXNfaW50KSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGludGVncmFsKTsKKyAgICAgICAgICAgIHJldHVybiBhc19pbnQ7CiAgICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKGludGVncmFsKTsKLSAgICAgICAgaW50ZWdyYWwgPSBQeUV2YWxfQ2FsbE9iamVjdChpbnRfZnVuYywgTlVMTCk7Ci0gICAgICAgIFB5X0RFQ1JFRihpbnRfZnVuYyk7Ci0gICAgICAgIGlmIChpbnRlZ3JhbCAmJiAhUHlMb25nX0NoZWNrKGludGVncmFsKSkgewotICAgICAgICAgICAgZ290byBub25faW50ZWdyYWxfZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKGFzX2ludCk7CiAgICAgfQotICAgIHJldHVybiBpbnRlZ3JhbDsKLQotbm9uX2ludGVncmFsX2Vycm9yOgogICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsIGVycm9yX2Zvcm1hdCwgUHlfVFlQRShpbnRlZ3JhbCktPnRwX25hbWUpOwogICAgIFB5X0RFQ1JFRihpbnRlZ3JhbCk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIE5VTEw7ICAgIAogfQogCiAKQEAgLTEzMjUsMTYgKzEyNjMsMTAgQEAKIFB5TnVtYmVyX0xvbmcoUHlPYmplY3QgKm8pCiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwotICAgIHN0YXRpYyBQeU9iamVjdCAqdHJ1bmNfbmFtZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnRydW5jX2Z1bmM7CiAgICAgY29uc3QgY2hhciAqYnVmZmVyOwogICAgIFB5X3NzaXplX3QgYnVmZmVyX2xlbjsKLQotICAgIGlmICh0cnVuY19uYW1lID09IE5VTEwpIHsKLSAgICAgICAgdHJ1bmNfbmFtZSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX3RydW5jX18iKTsKLSAgICAgICAgaWYgKHRydW5jX25hbWUgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBfUHlfSURFTlRJRklFUihfX3RydW5jX18pOwogCiAgICAgaWYgKG8gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKQEAgLTEzNTYsMzIgKzEyODgsMzAgQEAKICAgICB9CiAgICAgaWYgKFB5TG9uZ19DaGVjayhvKSkgLyogQW4gaW50IHN1YmNsYXNzIHdpdGhvdXQgbmJfaW50ICovCiAgICAgICAgIHJldHVybiBfUHlMb25nX0NvcHkoKFB5TG9uZ09iamVjdCAqKW8pOwotICAgIHRydW5jX2Z1bmMgPSBQeU9iamVjdF9HZXRBdHRyKG8sIHRydW5jX25hbWUpOworICAgIHRydW5jX2Z1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvLCAmUHlJZF9fX3RydW5jX18pOwogICAgIGlmICh0cnVuY19mdW5jKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQgPSBQeUV2YWxfQ2FsbE9iamVjdCh0cnVuY19mdW5jLCBOVUxMKTsKICAgICAgICAgUHlPYmplY3QgKmludF9pbnN0YW5jZTsKICAgICAgICAgUHlfREVDUkVGKHRydW5jX2Z1bmMpOwogICAgICAgICAvKiBfX3RydW5jX18gaXMgc3BlY2lmaWVkIHRvIHJldHVybiBhbiBJbnRlZ3JhbCB0eXBlLAotICAgICAgICAgICBidXQgbG9uZygpIG5lZWRzIHRvIHJldHVybiBhIGxvbmcuICovCi0gICAgICAgIGludF9pbnN0YW5jZSA9IF9QeU51bWJlcl9Db252ZXJ0SW50ZWdyYWxUb0ludCgKLSAgICAgICAgICAgIHRydW5jYXRlZCwKKyAgICAgICAgICAgYnV0IGludCgpIG5lZWRzIHRvIHJldHVybiBhIGludC4gKi8KKyAgICAgICAgaW50X2luc3RhbmNlID0gY29udmVydF9pbnRlZ3JhbF90b19pbnQodHJ1bmNhdGVkLAogICAgICAgICAgICAgIl9fdHJ1bmNfXyByZXR1cm5lZCBub24tSW50ZWdyYWwgKHR5cGUgJS4yMDBzKSIpOwogICAgICAgICByZXR1cm4gaW50X2luc3RhbmNlOwogICAgIH0KLSAgICBQeUVycl9DbGVhcigpOyAgLyogSXQncyBub3QgYW4gZXJyb3IgaWYgIG8uX190cnVuY19fIGRvZXNuJ3QgZXhpc3QuICovCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sobykpCiAgICAgICAgIC8qIG5lZWQgdG8gZG8gZXh0cmEgZXJyb3IgY2hlY2tpbmcgdGhhdCBQeUxvbmdfRnJvbVN0cmluZygpCi0gICAgICAgICAqIGRvZXNuJ3QgZG8uICBJbiBwYXJ0aWN1bGFyIGxvbmcoJzkuNScpIG11c3QgcmFpc2UgYW4KKyAgICAgICAgICogZG9lc24ndCBkby4gIEluIHBhcnRpY3VsYXIgaW50KCc5LjUnKSBtdXN0IHJhaXNlIGFuCiAgICAgICAgICAqIGV4Y2VwdGlvbiwgbm90IHRydW5jYXRlIHRoZSBmbG9hdC4KICAgICAgICAgICovCiAgICAgICAgIHJldHVybiBsb25nX2Zyb21fc3RyaW5nKFB5Qnl0ZXNfQVNfU1RSSU5HKG8pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKG8pKTsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG8pKQogICAgICAgICAvKiBUaGUgYWJvdmUgY2hlY2sgaXMgZG9uZSBpbiBQeUxvbmdfRnJvbVVuaWNvZGUoKS4gKi8KLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERShvKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUobyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTApOworICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Vbmljb2RlT2JqZWN0KG8sIDEwKTsKICAgICBpZiAoIVB5T2JqZWN0X0FzQ2hhckJ1ZmZlcihvLCAmYnVmZmVyLCAmYnVmZmVyX2xlbikpCiAgICAgICAgIHJldHVybiBsb25nX2Zyb21fc3RyaW5nKGJ1ZmZlciwgYnVmZmVyX2xlbik7CiAKQEAgLTE5ODYsNyArMTkxNiw3IEBACiBpbnQKIFB5TWFwcGluZ19DaGVjayhQeU9iamVjdCAqbykKIHsKLSAgICByZXR1cm4gICAgICBvICYmIG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmcgJiYKKyAgICByZXR1cm4gbyAmJiBvLT5vYl90eXBlLT50cF9hc19tYXBwaW5nICYmCiAgICAgICAgIG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmctPm1wX3N1YnNjcmlwdDsKIH0KIApAQCAtMjA4NCwxMCArMjAxNCwxMSBAQAogewogICAgIFB5T2JqZWN0ICprZXlzOwogICAgIFB5T2JqZWN0ICpmYXN0OworICAgIF9QeV9JREVOVElGSUVSKGtleXMpOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG8pKQogICAgICAgICByZXR1cm4gUHlEaWN0X0tleXMobyk7Ci0gICAga2V5cyA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgImtleXMiLCBOVUxMKTsKKyAgICBrZXlzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvLCAmUHlJZF9rZXlzLCBOVUxMKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KGtleXMsICJvLmtleXMoKSBhcmUgbm90IGl0ZXJhYmxlIik7CkBAIC0yMTAwLDEwICsyMDMxLDExIEBACiB7CiAgICAgUHlPYmplY3QgKml0ZW1zOwogICAgIFB5T2JqZWN0ICpmYXN0OworICAgIF9QeV9JREVOVElGSUVSKGl0ZW1zKTsKIAogICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChvKSkKICAgICAgICAgcmV0dXJuIFB5RGljdF9JdGVtcyhvKTsKLSAgICBpdGVtcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QobywgIml0ZW1zIiwgTlVMTCk7CisgICAgaXRlbXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX2l0ZW1zLCBOVUxMKTsKICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChpdGVtcywgIm8uaXRlbXMoKSBhcmUgbm90IGl0ZXJhYmxlIik7CkBAIC0yMTE2LDEwICsyMDQ4LDExIEBACiB7CiAgICAgUHlPYmplY3QgKnZhbHVlczsKICAgICBQeU9iamVjdCAqZmFzdDsKKyAgICBfUHlfSURFTlRJRklFUih2YWx1ZXMpOwogCiAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KG8pKQogICAgICAgICByZXR1cm4gUHlEaWN0X1ZhbHVlcyhvKTsKLSAgICB2YWx1ZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG8sICJ2YWx1ZXMiLCBOVUxMKTsKKyAgICB2YWx1ZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKG8sICZQeUlkX3ZhbHVlcywgTlVMTCk7CiAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBmYXN0ID0gUHlTZXF1ZW5jZV9GYXN0KHZhbHVlcywgIm8udmFsdWVzKCkgYXJlIG5vdCBpdGVyYWJsZSIpOwpAQCAtMjIyNSwyMiArMjE1OCwxMSBAQAogICAgIHJldHVybiBjYWxsX2Z1bmN0aW9uX3RhaWwoY2FsbGFibGUsIGFyZ3MpOwogfQogCi1QeU9iamVjdCAqCi1QeU9iamVjdF9DYWxsTWV0aG9kKFB5T2JqZWN0ICpvLCBjaGFyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKK3N0YXRpYyBQeU9iamVjdCoKK2NhbGxtZXRob2QoUHlPYmplY3QqIGZ1bmMsIGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSwgaW50IGlzX3NpemVfdCkKIHsKLSAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzOwotICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLQotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgZnVuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgbmFtZSk7Ci0gICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgUHlPYmplY3QgKmFyZ3M7CiAKICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soZnVuYykpIHsKICAgICAgICAgdHlwZV9lcnJvcigiYXR0cmlidXRlIG9mIHR5cGUgJyUuMjAwcycgaXMgbm90IGNhbGxhYmxlIiwgZnVuYyk7CkBAIC0yMjQ4LDkgKzIxNzAsMTAgQEAKICAgICB9CiAKICAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKLSAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7Ci0gICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChpc19zaXplX3QpCisgICAgICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CkBAIC0yMjY1LDQ0ICsyMTg4LDg2IEBACiB9CiAKIFB5T2JqZWN0ICoKK1B5T2JqZWN0X0NhbGxNZXRob2QoUHlPYmplY3QgKm8sIGNoYXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmE7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOworCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisKKyAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMCk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfQ2FsbE1ldGhvZElkKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZSwgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgcmV0dmFsID0gY2FsbG1ldGhvZChmdW5jLCBmb3JtYXQsIHZhLCAwKTsKKyAgICB2YV9lbmQodmEpOworICAgIHJldHVybiByZXR2YWw7Cit9CisKK1B5T2JqZWN0ICoKIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUKFB5T2JqZWN0ICpvLCBjaGFyICpuYW1lLCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzOwogICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0dmFsOwogCiAgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CiAKICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwgbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLQotICAgIGlmICghUHlDYWxsYWJsZV9DaGVjayhmdW5jKSkgewotICAgICAgICB0eXBlX2Vycm9yKCJhdHRyaWJ1dGUgb2YgdHlwZSAnJS4yMDBzJyBpcyBub3QgY2FsbGFibGUiLCBmdW5jKTsKLSAgICAgICAgZ290byBleGl0OwotICAgIH0KLQotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7Ci0gICAgICAgIHZhX2VuZCh2YSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotCi0gICAgcmV0dmFsID0gY2FsbF9mdW5jdGlvbl90YWlsKGZ1bmMsIGFyZ3MpOwotCi0gIGV4aXQ6Ci0gICAgLyogYXJncyBnZXRzIGNvbnN1bWVkIGluIGNhbGxfZnVuY3Rpb25fdGFpbCAqLwotICAgIFB5X1hERUNSRUYoZnVuYyk7Ci0KKyAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKKyAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDEpOworICAgIHZhX2VuZCh2YSk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAorUHlPYmplY3QgKgorX1B5T2JqZWN0X0NhbGxNZXRob2RJZF9TaXplVChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWUsIGNoYXIgKmZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmE7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXR2YWw7CisKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKG8sIG5hbWUpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CisgICAgdmFfZW5kKHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQogCiBzdGF0aWMgUHlPYmplY3QgKgogb2JqYXJnc19ta3R1cGxlKHZhX2xpc3QgdmEpCkBAIC0yMzU1LDYgKzIzMjAsMzUgQEAKIH0KIAogUHlPYmplY3QgKgorX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLAorICAgICAgICBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUsIC4uLikKK3sKKyAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKKyAgICB2YV9saXN0IHZhcmdzOworCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworCisgICAgY2FsbGFibGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNhbGxhYmxlLCBuYW1lKTsKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBjb3VudCB0aGUgYXJncyAqLworICAgIHZhX3N0YXJ0KHZhcmdzLCBuYW1lKTsKKyAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHRtcCA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIGFyZ3MsIE5VTEwpOworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBQeV9ERUNSRUYoY2FsbGFibGUpOworCisgICAgcmV0dXJuIHRtcDsKK30KKworUHlPYmplY3QgKgogUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsIC4uLikKIHsKICAgICBQeU9iamVjdCAqYXJncywgKnRtcDsKQEAgLTIzNzgsMTAgKzIzNzIsOCBAQAogCiAvKiBpc2luc3RhbmNlKCksIGlzc3ViY2xhc3MoKSAqLwogCi0vKiBhYnN0cmFjdF9nZXRfYmFzZXMoKSBoYXMgbG9naWNhbGx5IDQgcmV0dXJuIHN0YXRlcywgd2l0aCBhIHNvcnQgb2YgMHRoCi0gKiBzdGF0ZSB0aGF0IHdpbGwgYWxtb3N0IG5ldmVyIGhhcHBlbi4KKy8qIGFic3RyYWN0X2dldF9iYXNlcygpIGhhcyBsb2dpY2FsbHkgNCByZXR1cm4gc3RhdGVzOgogICoKLSAqIDAuIGNyZWF0aW5nIHRoZSBfX2Jhc2VzX18gc3RhdGljIHN0cmluZyBjb3VsZCBnZXQgYSBNZW1vcnlFcnJvcgogICogMS4gZ2V0YXR0cihjbHMsICdfX2Jhc2VzX18nKSBjb3VsZCByYWlzZSBhbiBBdHRyaWJ1dGVFcnJvcgogICogMi4gZ2V0YXR0cihjbHMsICdfX2Jhc2VzX18nKSBjb3VsZCByYWlzZSBzb21lIG90aGVyIGV4Y2VwdGlvbgogICogMy4gZ2V0YXR0cihjbHMsICdfX2Jhc2VzX18nKSBjb3VsZCByZXR1cm4gYSB0dXBsZQpAQCAtMjQwNywxNiArMjM5OSwxMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFic3RyYWN0X2dldF9iYXNlcyhQeU9iamVjdCAqY2xzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqX19iYXNlc19fID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jhc2VzX18pOwogICAgIFB5T2JqZWN0ICpiYXNlczsKIAotICAgIGlmIChfX2Jhc2VzX18gPT0gTlVMTCkgewotICAgICAgICBfX2Jhc2VzX18gPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19iYXNlc19fIik7Ci0gICAgICAgIGlmIChfX2Jhc2VzX18gPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KICAgICBQeV9BTExPV19SRUNVUlNJT04KLSAgICBiYXNlcyA9IFB5T2JqZWN0X0dldEF0dHIoY2xzLCBfX2Jhc2VzX18pOworICAgIGJhc2VzID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fYmFzZXNfXyk7CiAgICAgUHlfRU5EX0FMTE9XX1JFQ1VSU0lPTgogICAgIGlmIChiYXNlcyA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTI0ODYsMTkgKzI0NzMsMTMgQEAKIHJlY3Vyc2l2ZV9pc2luc3RhbmNlKFB5T2JqZWN0ICppbnN0LCBQeU9iamVjdCAqY2xzKQogewogICAgIFB5T2JqZWN0ICppY2xzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqX19jbGFzc19fID0gTlVMTDsKICAgICBpbnQgcmV0dmFsID0gMDsKLQotICAgIGlmIChfX2NsYXNzX18gPT0gTlVMTCkgewotICAgICAgICBfX2NsYXNzX18gPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19jbGFzc19fIik7Ci0gICAgICAgIGlmIChfX2NsYXNzX18gPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKIAogICAgIGlmIChQeVR5cGVfQ2hlY2soY2xzKSkgewogICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9UeXBlQ2hlY2soaW5zdCwgKFB5VHlwZU9iamVjdCAqKWNscyk7CiAgICAgICAgIGlmIChyZXR2YWwgPT0gMCkgewotICAgICAgICAgICAgUHlPYmplY3QgKmMgPSBQeU9iamVjdF9HZXRBdHRyKGluc3QsIF9fY2xhc3NfXyk7CisgICAgICAgICAgICBQeU9iamVjdCAqYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19jbGFzc19fKTsKICAgICAgICAgICAgIGlmIChjID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yNTE5LDcgKzI1MDAsNyBAQAogICAgICAgICBpZiAoIWNoZWNrX2NsYXNzKGNscywKICAgICAgICAgICAgICJpc2luc3RhbmNlKCkgYXJnIDIgbXVzdCBiZSBhIHR5cGUgb3IgdHVwbGUgb2YgdHlwZXMiKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWNscyA9IFB5T2JqZWN0X0dldEF0dHIoaW5zdCwgX19jbGFzc19fKTsKKyAgICAgICAgaWNscyA9IF9QeU9iamVjdF9HZXRBdHRySWQoaW5zdCwgJlB5SWRfX19jbGFzc19fKTsKICAgICAgICAgaWYgKGljbHMgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0yNTM4LDcgKzI1MTksNyBAQAogaW50CiBQeU9iamVjdF9Jc0luc3RhbmNlKFB5T2JqZWN0ICppbnN0LCBQeU9iamVjdCAqY2xzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19pbnN0YW5jZWNoZWNrX18pOwogICAgIFB5T2JqZWN0ICpjaGVja2VyOwogCiAgICAgLyogUXVpY2sgdGVzdCBmb3IgYW4gZXhhY3QgbWF0Y2ggKi8KQEAgLTI1NjQsNyArMjU0NSw3IEBACiAgICAgICAgIHJldHVybiByOwogICAgIH0KIAotICAgIGNoZWNrZXIgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChjbHMsICJfX2luc3RhbmNlY2hlY2tfXyIsICZuYW1lKTsKKyAgICBjaGVja2VyID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoY2xzLCAmUHlJZF9fX2luc3RhbmNlY2hlY2tfXyk7CiAgICAgaWYgKGNoZWNrZXIgIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzOwogICAgICAgICBpbnQgb2sgPSAtMTsKQEAgLTI2MDcsNyArMjU4OCw3IEBACiBpbnQKIFB5T2JqZWN0X0lzU3ViY2xhc3MoUHlPYmplY3QgKmRlcml2ZWQsIFB5T2JqZWN0ICpjbHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX3N1YmNsYXNzY2hlY2tfXyk7CiAgICAgUHlPYmplY3QgKmNoZWNrZXI7CiAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhjbHMpKSB7CkBAIC0yNjI5LDcgKzI2MTAsNyBAQAogICAgICAgICByZXR1cm4gcjsKICAgICB9CiAKLSAgICBjaGVja2VyID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoY2xzLCAiX19zdWJjbGFzc2NoZWNrX18iLCAmbmFtZSk7CisgICAgY2hlY2tlciA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKGNscywgJlB5SWRfX19zdWJjbGFzc2NoZWNrX18pOwogICAgIGlmIChjaGVja2VyICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgaW50IG9rID0gLTE7CmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwppbmRleCA1NWI0ZGY2Li4yYmIzYTI5IDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKQEAgLTEzOSw3ICsxMzksNyBAQAogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgYWxsb2MgPSBzaXplICsgMTsKLSAgICAgICAgbmV3LT5vYl9ieXRlcyA9IFB5TWVtX01hbGxvYyhhbGxvYyk7CisgICAgICAgIG5ldy0+b2JfYnl0ZXMgPSBQeU9iamVjdF9NYWxsb2MoYWxsb2MpOwogICAgICAgICBpZiAobmV3LT5vYl9ieXRlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMjA5LDcgKzIwOSw3IEBACiAgICAgICAgIGFsbG9jID0gc2l6ZSArIDE7CiAgICAgfQogCi0gICAgc3ZhbCA9IFB5TWVtX1JlYWxsb2MoKChQeUJ5dGVBcnJheU9iamVjdCAqKXNlbGYpLT5vYl9ieXRlcywgYWxsb2MpOworICAgIHN2YWwgPSBQeU9iamVjdF9SZWFsbG9jKCgoUHlCeXRlQXJyYXlPYmplY3QgKilzZWxmKS0+b2JfYnl0ZXMsIGFsbG9jKTsKICAgICBpZiAoc3ZhbCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTc4OSw3ICs3ODksNyBAQAogICAgICAgICBzaXplID0gdmlldy5sZW47CiAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgc2l6ZSkgPCAwKSBnb3RvIGZhaWw7CiAgICAgICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoc2VsZi0+b2JfYnl0ZXMsICZ2aWV3LCBzaXplLCAnQycpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwogICAgICAgICByZXR1cm4gMDsKICAgICBmYWlsOgpAQCAtODUwLDg3ICs4NTAsODIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVwcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgIGNvbnN0IGNoYXIgKnF1b3RlX3ByZWZpeCA9ICJieXRlYXJyYXkoYiI7CiAgICAgY29uc3QgY2hhciAqcXVvdGVfcG9zdGZpeCA9ICIpIjsKICAgICBQeV9zc2l6ZV90IGxlbmd0aCA9IFB5X1NJWkUoc2VsZik7Ci0gICAgLyogMTQgPT0gc3RybGVuKHF1b3RlX3ByZWZpeCkgKyAyICsgc3RybGVuKHF1b3RlX3Bvc3RmaXgpICovCisgICAgLyogMTUgPT0gc3RybGVuKHF1b3RlX3ByZWZpeCkgKyAyICsgc3RybGVuKHF1b3RlX3Bvc3RmaXgpICsgMSAqLwogICAgIHNpemVfdCBuZXdzaXplOwogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmIChsZW5ndGggPiAoUFlfU1NJWkVfVF9NQVggLSAxNCkgLyA0KSB7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOworICAgIHJlZ2lzdGVyIGNoYXIgYzsKKyAgICByZWdpc3RlciBjaGFyICpwOworICAgIGludCBxdW90ZTsKKyAgICBjaGFyICp0ZXN0LCAqc3RhcnQ7CisgICAgY2hhciAqYnVmZmVyOworCisgICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAtIDE1KSAvIDQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAiYnl0ZWFycmF5IG9iamVjdCBpcyB0b28gbGFyZ2UgdG8gbWFrZSByZXByIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdzaXplID0gMTQgKyA0ICogbGVuZ3RoOwotICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbmV3c2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkgeworCisgICAgbmV3c2l6ZSA9IDE1ICsgbGVuZ3RoICogNDsKKyAgICBidWZmZXIgPSBQeU9iamVjdF9NYWxsb2MobmV3c2l6ZSk7CisgICAgaWYgKGJ1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpOwotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGM7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIGludCBxdW90ZTsKIAotICAgICAgICAvKiBGaWd1cmUgb3V0IHdoaWNoIHF1b3RlIHRvIHVzZTsgc2luZ2xlIGlzIHByZWZlcnJlZCAqLwotICAgICAgICBxdW90ZSA9ICdcJyc7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgKnRlc3QsICpzdGFydDsKLSAgICAgICAgICAgIHN0YXJ0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwotICAgICAgICAgICAgZm9yICh0ZXN0ID0gc3RhcnQ7IHRlc3QgPCBzdGFydCtsZW5ndGg7ICsrdGVzdCkgewotICAgICAgICAgICAgICAgIGlmICgqdGVzdCA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICAgICAgcXVvdGUgPSAnXCcnOyAvKiBiYWNrIHRvIHNpbmdsZSAqLwotICAgICAgICAgICAgICAgICAgICBnb3RvIGRlY2lkZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKCp0ZXN0ID09ICdcJycpCi0gICAgICAgICAgICAgICAgICAgIHF1b3RlID0gJyInOwotICAgICAgICAgICAgfQotICAgICAgICAgIGRlY2lkZWQ6Ci0gICAgICAgICAgICA7CisgICAgLyogRmlndXJlIG91dCB3aGljaCBxdW90ZSB0byB1c2U7IHNpbmdsZSBpcyBwcmVmZXJyZWQgKi8KKyAgICBxdW90ZSA9ICdcJyc7CisgICAgc3RhcnQgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CisgICAgZm9yICh0ZXN0ID0gc3RhcnQ7IHRlc3QgPCBzdGFydCtsZW5ndGg7ICsrdGVzdCkgeworICAgICAgICBpZiAoKnRlc3QgPT0gJyInKSB7CisgICAgICAgICAgICBxdW90ZSA9ICdcJyc7IC8qIGJhY2sgdG8gc2luZ2xlICovCisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotCi0gICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKLSAgICAgICAgd2hpbGUgKCpxdW90ZV9wcmVmaXgpCi0gICAgICAgICAgICAqcCsrID0gKnF1b3RlX3ByZWZpeCsrOwotICAgICAgICAqcCsrID0gcXVvdGU7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIGF0IGxlYXN0IGVub3VnaCByb29tIGZvciBhIGhleCBlc2NhcGUKLSAgICAgICAgICAgICAgIGFuZCBhIGNsb3NpbmcgcXVvdGUuICovCi0gICAgICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpID49IDUpOwotICAgICAgICAgICAgYyA9IHNlbGYtPm9iX2J5dGVzW2ldOwotICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJyB8fCBjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSBjOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3QnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXG4nKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHInKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3InOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAwKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3gnLCAqcCsrID0gJzAnLCAqcCsrID0gJzAnOwotICAgICAgICAgICAgZWxzZSBpZiAoYyA8ICcgJyB8fCBjID49IDB4N2YpIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2MgJiAweGZdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICpwKysgPSBjOwotICAgICAgICB9Ci0gICAgICAgIGFzc2VydChuZXdzaXplIC0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPj0gMSk7Ci0gICAgICAgICpwKysgPSBxdW90ZTsKLSAgICAgICAgd2hpbGUgKCpxdW90ZV9wb3N0Zml4KSB7Ci0gICAgICAgICAgICpwKysgPSAqcXVvdGVfcG9zdGZpeCsrOwotICAgICAgICB9Ci0gICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnYsIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIGVsc2UgaWYgKCp0ZXN0ID09ICdcJycpCisgICAgICAgICAgICBxdW90ZSA9ICciJzsKICAgICB9CisKKyAgICBwID0gYnVmZmVyOworICAgIHdoaWxlICgqcXVvdGVfcHJlZml4KQorICAgICAgICAqcCsrID0gKnF1b3RlX3ByZWZpeCsrOworICAgICpwKysgPSBxdW90ZTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAvKiBUaGVyZSdzIGF0IGxlYXN0IGVub3VnaCByb29tIGZvciBhIGhleCBlc2NhcGUKKyAgICAgICAgICAgYW5kIGEgY2xvc2luZyBxdW90ZS4gKi8KKyAgICAgICAgYXNzZXJ0KG5ld3NpemUgLSAocCAtIGJ1ZmZlcikgPj0gNSk7CisgICAgICAgIGMgPSBzZWxmLT5vYl9ieXRlc1tpXTsKKyAgICAgICAgaWYgKGMgPT0gJ1wnJyB8fCBjID09ICdcXCcpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9IGM7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3QnOworICAgICAgICBlbHNlIGlmIChjID09ICdcbicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICduJzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHInKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAncic7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gMCkKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3gnLCAqcCsrID0gJzAnLCAqcCsrID0gJzAnOworICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgeworICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAqcCsrID0gJ3gnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjICYgMHhmXTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICB9CisgICAgYXNzZXJ0KG5ld3NpemUgLSAocCAtIGJ1ZmZlcikgPj0gMSk7CisgICAgKnArKyA9IHF1b3RlOworICAgIHdoaWxlICgqcXVvdGVfcG9zdGZpeCkgeworICAgICAgICpwKysgPSAqcXVvdGVfcG9zdGZpeCsrOworICAgIH0KKworICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlQVNDSUkoYnVmZmVyLCBwIC0gYnVmZmVyLCBOVUxMKTsKKyAgICBQeU9iamVjdF9GcmVlKGJ1ZmZlcik7CisgICAgcmV0dXJuIHY7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC05NjQsMjMgKzk1OSwyMCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgc2VsZl9zaXplID0gX2dldGJ1ZmZlcihzZWxmLCAmc2VsZl9ieXRlcyk7CiAgICAgaWYgKHNlbGZfc2l6ZSA8IDApIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogCiAgICAgb3RoZXJfc2l6ZSA9IF9nZXRidWZmZXIob3RoZXIsICZvdGhlcl9ieXRlcyk7CiAgICAgaWYgKG90aGVyX3NpemUgPCAwKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGZfYnl0ZXMpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBpZiAoc2VsZl9zaXplICE9IG90aGVyX3NpemUgJiYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSkgewpAQCAtMTAyOCw3ICsxMDIwLDcgQEAKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICB9CiAgICAgaWYgKHNlbGYtPm9iX2J5dGVzICE9IDApIHsKLSAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5vYl9ieXRlcyk7CisgICAgICAgIFB5T2JqZWN0X0ZyZWUoc2VsZi0+b2JfYnl0ZXMpOwogICAgIH0KICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwogfQpAQCAtMTAzNyw2ICsxMDI5LDggQEAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAvKiBNZXRob2RzICovCiAKKyNkZWZpbmUgRkFTVFNFQVJDSCBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSBzdHJpbmdsaWJfIyNGCiAjZGVmaW5lIFNUUklOR0xJQl9DSEFSIGNoYXIKICNkZWZpbmUgU1RSSU5HTElCX0xFTiBQeUJ5dGVBcnJheV9HRVRfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfU1RSIFB5Qnl0ZUFycmF5X0FTX1NUUklORwpAQCAtMTA3NywyNCArMTA3MSw0MSBAQAogYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBpbnQgZGlyKQogewogICAgIFB5T2JqZWN0ICpzdWJvYmo7CisgICAgY2hhciBieXRlOwogICAgIFB5X2J1ZmZlciBzdWJidWY7CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc3ViX2xlbjsKICAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKICAgICBQeV9zc2l6ZV90IHJlczsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJmaW5kL3JmaW5kL2luZGV4L3JpbmRleCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsICZzdWJvYmosICZieXRlLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gLTI7Ci0gICAgaWYgKF9nZXRidWZmZXIoc3Vib2JqLCAmc3ViYnVmKSA8IDApCi0gICAgICAgIHJldHVybiAtMjsKKworICAgIGlmIChzdWJvYmopIHsKKyAgICAgICAgaWYgKF9nZXRidWZmZXIoc3Vib2JqLCAmc3ViYnVmKSA8IDApCisgICAgICAgICAgICByZXR1cm4gLTI7CisKKyAgICAgICAgc3ViID0gc3ViYnVmLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHN1YmJ1Zi5sZW47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdWIgPSAmYnl0ZTsKKyAgICAgICAgc3ViX2xlbiA9IDE7CisgICAgfQorCiAgICAgaWYgKGRpciA+IDApCiAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAogICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgIHN1YmJ1Zi5idWYsIHN1YmJ1Zi5sZW4sIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKICAgICBlbHNlCiAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICBzdWJidWYuYnVmLCBzdWJidWYubGVuLCBzdGFydCwgZW5kKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJidWYpOworICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKworICAgIGlmIChzdWJvYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC0xMTI3LDI2ICsxMTM4LDY2IEBACiBieXRlYXJyYXlfY291bnQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzdWJfb2JqOwotICAgIGNvbnN0IGNoYXIgKnN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKKyAgICBjb25zdCBjaGFyICpzdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIGNoYXIgYnl0ZTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisKICAgICBQeV9idWZmZXIgdnN1YjsKICAgICBQeU9iamVjdCAqY291bnRfb2JqOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZieXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChfZ2V0YnVmZmVyKHN1Yl9vYmosICZ2c3ViKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChzdWJfb2JqKSB7CisgICAgICAgIGlmIChfZ2V0YnVmZmVyKHN1Yl9vYmosICZ2c3ViKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KIAogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKIAogICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgdnN1Yi5idWYsIHZzdWIubGVuLCBQWV9TU0laRV9UX01BWCkKKyAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKICAgICAgICAgKTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKworICAgIGlmIChzdWJfb2JqKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKwogICAgIHJldHVybiBjb3VudF9vYmo7CiB9CiAKK1B5RG9jX1NUUlZBUihjbGVhcl9fZG9jX18sCisiQi5jbGVhcigpIC0+IE5vbmVcblwKK1xuXAorUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIEIuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlfY2xlYXIoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCAwKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoY29weV9fZG9jX18sCisiQi5jb3B5KCkgLT4gYnl0ZWFycmF5XG5cCitcblwKK1JldHVybiBhIGNvcHkgb2YgQi4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9jb3B5KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQoreworICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShQeUJ5dGVBcnJheV9BU19TVFJJTkcoKFB5T2JqZWN0ICopc2VsZiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKK30KIAogUHlEb2NfU1RSVkFSKGluZGV4X19kb2NfXywKICJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXApAQCAtMTk4OCw3ICsyMDM5LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKLSJCLnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKKyJCLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSkgLT4gbGlzdCBvZiBieXRlYXJyYXlzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuXAogSWYgc2VwIGlzIG5vdCBnaXZlbiwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnNcblwKQEAgLTE5OTYsMTUgKzIwNDcsMTcgQEAKIElmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogICAgIGNvbnN0IGNoYXIgKnMgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogICAgIFB5X2J1ZmZlciB2c3ViOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246c3BsaXQiLCAmc3Vib2JqLCAmbWF4c3BsaXQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKQEAgLTIwODAsNyArMjEzMyw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KHNlcFssIG1heHNwbGl0XSkgLT4gbGlzdCBvZiBieXRlYXJyYXlzXG5cCisiQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVhcnJheXNcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgc2VjdGlvbnMgaW4gQiwgdXNpbmcgc2VwIGFzIHRoZSBkZWxpbWl0ZXIsXG5cCiBzdGFydGluZyBhdCB0aGUgZW5kIG9mIEIgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LlxuXApAQCAtMjA4OSwxNSArMjE0MiwxNyBAQAogSWYgbWF4c3BsaXQgaXMgZ2l2ZW4sIGF0IG1vc3QgbWF4c3BsaXQgc3BsaXRzIGFyZSBkb25lLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfcnNwbGl0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAibWF4c3BsaXQiLCAwfTsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwogICAgIFB5T2JqZWN0ICpsaXN0LCAqc3Vib2JqID0gUHlfTm9uZTsKICAgICBQeV9idWZmZXIgdnN1YjsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnJzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKQEAgLTI0NDgsNyArMjUwMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JzdHJpcChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBsZWZ0LCByaWdodCwgbXlzaXplLCBhcmdzaXplOworICAgIFB5X3NzaXplX3QgcmlnaHQsIG15c2l6ZSwgYXJnc2l6ZTsKICAgICB2b2lkICpteXB0ciwgKmFyZ3B0cjsKICAgICBQeU9iamVjdCAqYXJnID0gUHlfTm9uZTsKICAgICBQeV9idWZmZXIgdmFyZzsKQEAgLTI0NjYsMTEgKzI1MjEsMTAgQEAKICAgICB9CiAgICAgbXlwdHIgPSBzZWxmLT5vYl9ieXRlczsKICAgICBteXNpemUgPSBQeV9TSVpFKHNlbGYpOwotICAgIGxlZnQgPSAwOwogICAgIHJpZ2h0ID0gcnN0cmlwX2hlbHBlcihteXB0ciwgbXlzaXplLCBhcmdwdHIsIGFyZ3NpemUpOwogICAgIGlmIChhcmcgIT0gUHlfTm9uZSkKICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPm9iX2J5dGVzICsgbGVmdCwgcmlnaHQgLSBsZWZ0KTsKKyAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoc2VsZi0+b2JfYnl0ZXMsIHJpZ2h0KTsKIH0KIAogUHlEb2NfU1RSVkFSKGRlY29kZV9kb2MsCkBAIC0yNTkyLDExICsyNjQ2LDEzIEBACiBpcyBnaXZlbiBhbmQgdHJ1ZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZWFycmF5X3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtlZXBlbmRzIiwgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6c3BsaXRsaW5lcyIsICZrZWVwZW5kcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCkBAIC0yNjEzLDcgKzI2NjksNyBAQAogRXhhbXBsZTogYnl0ZWFycmF5LmZyb21oZXgoJ0I5IDAxRUYnKSAtPiBieXRlYXJyYXkoYidcXHhiOVxceDAxXFx4ZWYnKS4iKTsKIAogc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VTklDT0RFIGMpCitoZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKIHsKICAgICBpZiAoYyA+PSAxMjgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTI2MzMsMTUgKzI2ODksMjAgQEAKIHsKICAgICBQeU9iamVjdCAqbmV3Ynl0ZXMsICpoZXhvYmo7CiAgICAgY2hhciAqYnVmOwotICAgIFB5X1VOSUNPREUgKmhleDsKICAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7CiAgICAgaW50IHRvcCwgYm90OworICAgIHZvaWQgKmRhdGE7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6ZnJvbWhleCIsICZoZXhvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKGhleG9iaikpOwotICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShoZXhvYmopOwotICAgIGhleCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGhleG9iaik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShoZXhvYmopKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaGV4b2JqKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoaGV4b2JqKTsKKyAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChoZXhvYmopOworCiAgICAgYnl0ZXNsZW4gPSBoZXhsZW4vMjsgLyogVGhpcyBvdmVyZXN0aW1hdGVzIGlmIHRoZXJlIGFyZSBzcGFjZXMgKi8KICAgICBuZXdieXRlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzbGVuKTsKICAgICBpZiAoIW5ld2J5dGVzKQpAQCAtMjY0OSwxMiArMjcxMCwxMiBAQAogICAgIGJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhuZXdieXRlcyk7CiAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBoZXhsZW47IGkgKz0gMikgewogICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoaGV4W2ldID09ICcgJykKKyAgICAgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09ICcgJykKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGkgPj0gaGV4bGVuKQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoaGV4W2ldKTsKLSAgICAgICAgYm90ID0gaGV4X2RpZ2l0X3RvX2ludChoZXhbaSsxXSk7CisgICAgICAgIHRvcCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOworICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkrMSkpOwogICAgICAgICBpZiAodG9wID09IC0xIHx8IGJvdCA9PSAtMSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1oZXhhZGVjaW1hbCBudW1iZXIgZm91bmQgaW4gIgpAQCAtMjY3MiwyNiArMjczMyw1OSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfcmVkdWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQorX2NvbW1vbl9yZWR1Y2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBwcm90bykKIHsKLSAgICBQeU9iamVjdCAqbGF0aW4xLCAqZGljdDsKLSAgICBpZiAoc2VsZi0+b2JfYnl0ZXMpCi0gICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9EZWNvZGVMYXRpbjEoc2VsZi0+b2JfYnl0ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0laRShzZWxmKSwgTlVMTCk7Ci0gICAgZWxzZQotICAgICAgICBsYXRpbjEgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CisgICAgUHlPYmplY3QgKmRpY3Q7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCi0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc2VsZiwgIl9fZGljdF9fIik7CisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopc2VsZiwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZGljdCA9IFB5X05vbmU7CiAgICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKICAgICB9CiAKLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE8oTnMpTikiLCBQeV9UWVBFKHNlbGYpLCBsYXRpbjEsICJsYXRpbi0xIiwgZGljdCk7CisgICAgaWYgKHByb3RvIDwgMykgeworICAgICAgICAvKiB1c2Ugc3RyIGJhc2VkIHJlZHVjdGlvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMi54ICovCisgICAgICAgIFB5T2JqZWN0ICpsYXRpbjE7CisgICAgICAgIGlmIChzZWxmLT5vYl9ieXRlcykKKyAgICAgICAgICAgIGxhdGluMSA9IFB5VW5pY29kZV9EZWNvZGVMYXRpbjEoc2VsZi0+b2JfYnl0ZXMsIFB5X1NJWkUoc2VsZiksIE5VTEwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBsYXRpbjEgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTyhOcylOKSIsIFB5X1RZUEUoc2VsZiksIGxhdGluMSwgImxhdGluLTEiLCBkaWN0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIHVzZSBtb3JlIGVmZmljaWVudCBieXRlIGJhc2VkIHJlZHVjdGlvbiAqLworICAgICAgICBpZiAoc2VsZi0+b2JfYnl0ZXMpIHsKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTyh5IylOKSIsIFB5X1RZUEUoc2VsZiksIHNlbGYtPm9iX2J5dGVzLCBQeV9TSVpFKHNlbGYpLCBkaWN0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTygpTikiLCBQeV9UWVBFKHNlbGYpLCBkaWN0KTsKKyAgICAgICAgfQorICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5X3JlZHVjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gX2NvbW1vbl9yZWR1Y2Uoc2VsZiwgMik7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZXhfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVhcnJheV9yZWR1Y2VfZXgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBwcm90byA9IDA7CisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOl9fcmVkdWNlX2V4X18iLCAmcHJvdG8pKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCBwcm90byk7CiB9CiAKIFB5RG9jX1NUUlZBUihzaXplb2ZfZG9jLApAQCAtMjczNSwxMSArMjgyOSwxNCBAQAogYnl0ZWFycmF5X21ldGhvZHNbXSA9IHsKICAgICB7Il9fYWxsb2NfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYWxsb2MsIE1FVEhfTk9BUkdTLCBhbGxvY19kb2N9LAogICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3JlZHVjZV9leF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZWR1Y2VfZXgsIE1FVEhfVkFSQVJHUywgcmVkdWNlX2V4X2RvY30sCiAgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKICAgICB7ImFwcGVuZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfYXBwZW5kLCBNRVRIX08sIGFwcGVuZF9fZG9jX199LAogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCiAgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKKyAgICB7ImNsZWFyIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jbGVhciwgTUVUSF9OT0FSR1MsIGNsZWFyX19kb2NfX30sCisgICAgeyJjb3B5IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3B5LCBNRVRIX05PQVJHUywgY29weV9fZG9jX199LAogICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCiAgICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgZGVjb2RlX2RvY30sCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywgZW5kc3dpdGhfX2RvY19ffSwKQEAgLTI3ODAsMTEgKzI4NzcsMTEgQEAKICAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIHJpbmRleF9fZG9jX199LAogICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCiAgICAgeyJycGFydGl0aW9uIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9ycGFydGl0aW9uLCBNRVRIX08sIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1MsIHJzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHJzcGxpdF9fZG9jX199LAogICAgIHsicnN0cmlwIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3RyaXAsIE1FVEhfVkFSQVJHUywgcnN0cmlwX19kb2NfX30sCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfVkFSQVJHUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUywKLSAgICAgc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywKKyAgICAgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgc3BsaXRsaW5lc19fZG9jX199LAogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTICwKICAgICAgc3RhcnRzd2l0aF9fZG9jX199LAogICAgIHsic3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3N0cmlwLCBNRVRIX1ZBUkFSR1MsIHN0cmlwX19kb2NfX30sCkBAIC0yOTA2LDcgKzMwMDMsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNhcnJheWl0ZXJfbGVuZ3RoX2hpbnQoYnl0ZXNpdGVyb2JqZWN0ICppdCkKK2J5dGVhcnJheWl0ZXJfbGVuZ3RoX2hpbnQoYnl0ZXNpdGVyb2JqZWN0ICppdCkKIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IDA7CiAgICAgaWYgKGl0LT5pdF9zZXEpCkBAIC0yOTE3LDkgKzMwMTQsNDEgQEAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsCiAgICAgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZWFycmF5aXRlcl9yZWR1Y2UoYnl0ZXNpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCB1KTsKKyAgICB9Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlYXJyYXlpdGVyX3NldHN0YXRlKGJ5dGVzaXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIGJ5dGVhcnJheWl0ZXJfbWV0aG9kc1tdID0gewotICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzYXJyYXlpdGVyX2xlbmd0aF9oaW50LCBNRVRIX05PQVJHUywKKyAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX2xlbmd0aF9oaW50LCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsICAgIChQeUNGdW5jdGlvbilieXRlYXJyYXlpdGVyX3NldHN0YXRlLCBNRVRIX08sCisgICAgIHNldHN0YXRlX2RvY30sCiAgICAge05VTEwsIE5VTEx9IC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzX21ldGhvZHMuYyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCmluZGV4IDcyMzNjZWEuLmVmM2MyZjcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCisrKyBiL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jCkBAIC0yNDgsMTIgKzI0OCw4IEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgUHlfTUVNQ1BZKHJlc3VsdCwgY3B0ciwgbGVuKTsKLQogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBpbnQgYyA9IFB5X0NIQVJNQVNLKHJlc3VsdFtpXSk7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgcmVzdWx0W2ldID0gUHlfVE9MT1dFUihjKTsKKyAgICAgICAgcmVzdWx0W2ldID0gUHlfVE9MT1dFUigodW5zaWduZWQgY2hhcikgY3B0cltpXSk7CiAgICAgfQogfQogCkBAIC0yNjgsMTIgKzI2NCw4IEBACiB7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgUHlfTUVNQ1BZKHJlc3VsdCwgY3B0ciwgbGVuKTsKLQogICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICBpbnQgYyA9IFB5X0NIQVJNQVNLKHJlc3VsdFtpXSk7Ci0gICAgICAgIGlmIChQeV9JU0xPV0VSKGMpKQotICAgICAgICAgICAgcmVzdWx0W2ldID0gUHlfVE9VUFBFUihjKTsKKyAgICAgICAgcmVzdWx0W2ldID0gUHlfVE9VUFBFUigodW5zaWduZWQgY2hhcikgY3B0cltpXSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMgYi9PYmplY3RzL2J5dGVzb2JqZWN0LmMKaW5kZXggNzk2ZTQwMC4uYmY5MjU5ZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc29iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpAQCAtNDEsMTAgKzQxLDYgQEAKICNkZWZpbmUgUHlCeXRlc09iamVjdF9TSVpFIChvZmZzZXRvZihQeUJ5dGVzT2JqZWN0LCBvYl9zdmFsKSArIDEpCiAKIC8qCi0gICBGb3IgYm90aCBQeUJ5dGVzX0Zyb21TdHJpbmcoKSBhbmQgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgpLCB0aGUKLSAgIHBhcmFtZXRlciBgc2l6ZScgZGVub3RlcyBudW1iZXIgb2YgY2hhcmFjdGVycyB0byBhbGxvY2F0ZSwgbm90IGNvdW50aW5nIGFueQotICAgbnVsbCB0ZXJtaW5hdGluZyBjaGFyYWN0ZXIuCi0KICAgIEZvciBQeUJ5dGVzX0Zyb21TdHJpbmcoKSwgdGhlIHBhcmFtZXRlciBgc3RyJyBwb2ludHMgdG8gYSBudWxsLXRlcm1pbmF0ZWQKICAgIHN0cmluZyBjb250YWluaW5nIGV4YWN0bHkgYHNpemUnIGJ5dGVzLgogCkBAIC02MSw4ICs1Nyw4IEBACiAKICAgIFRoZSBQeU9iamVjdCBtZW1iZXIgYG9wLT5vYl9zaXplJywgd2hpY2ggZGVub3RlcyB0aGUgbnVtYmVyIG9mICJleHRyYQogICAgaXRlbXMiIGluIGEgdmFyaWFibGUtc2l6ZSBvYmplY3QsIHdpbGwgY29udGFpbiB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gICBhbGxvY2F0ZWQgZm9yIHN0cmluZyBkYXRhLCBub3QgY291bnRpbmcgdGhlIG51bGwgdGVybWluYXRpbmcgY2hhcmFjdGVyLiAgSXQKLSAgIGlzIHRoZXJlZm9yZSBlcXVhbCB0byB0aGUgZXF1YWwgdG8gdGhlIGBzaXplJyBwYXJhbWV0ZXIgKGZvcgorICAgYWxsb2NhdGVkIGZvciBzdHJpbmcgZGF0YSwgbm90IGNvdW50aW5nIHRoZSBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4KKyAgIEl0IGlzIHRoZXJlZm9yZSBlcXVhbCB0byB0aGUgYHNpemUnIHBhcmFtZXRlciAoZm9yCiAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCkpIG9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBpbiB0aGUgYHN0cicKICAgIHBhcmFtZXRlciAoZm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpKS4KICovCkBAIC01NjgsNzYgKzU2NCw3MCBAQAogUHlPYmplY3QgKgogUHlCeXRlc19SZXByKFB5T2JqZWN0ICpvYmosIGludCBzbWFydHF1b3RlcykKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwogICAgIHJlZ2lzdGVyIFB5Qnl0ZXNPYmplY3QqIG9wID0gKFB5Qnl0ZXNPYmplY3QqKSBvYmo7Ci0gICAgUHlfc3NpemVfdCBsZW5ndGggPSBQeV9TSVpFKG9wKTsKLSAgICBzaXplX3QgbmV3c2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aCA9IFB5X1NJWkUob3ApOworICAgIHNpemVfdCBuZXdzaXplLCBzcXVvdGVzLCBkcXVvdGVzOwogICAgIFB5T2JqZWN0ICp2OwotICAgIGlmIChsZW5ndGggPiAoUFlfU1NJWkVfVF9NQVggLSAzKSAvIDQpIHsKKyAgICB1bnNpZ25lZCBjaGFyIHF1b3RlLCAqcywgKnA7CisKKyAgICAvKiBDb21wdXRlIHNpemUgb2Ygb3V0cHV0IHN0cmluZyAqLworICAgIHNxdW90ZXMgPSBkcXVvdGVzID0gMDsKKyAgICBuZXdzaXplID0gMzsgLyogYicnICovCisgICAgcyA9ICh1bnNpZ25lZCBjaGFyKilvcC0+b2Jfc3ZhbDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgc3dpdGNoKHNbaV0pIHsKKyAgICAgICAgY2FzZSAnXCcnOiBzcXVvdGVzKys7IG5ld3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJyInOiAgZHF1b3RlcysrOyBuZXdzaXplKys7IGJyZWFrOworICAgICAgICBjYXNlICdcXCc6IGNhc2UgJ1x0JzogY2FzZSAnXG4nOiBjYXNlICdccic6CisgICAgICAgICAgICBuZXdzaXplICs9IDI7IGJyZWFrOyAvKiBcQyAqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHNbaV0gPCAnICcgfHwgc1tpXSA+PSAweDdmKQorICAgICAgICAgICAgICAgIG5ld3NpemUgKz0gNDsgLyogXHhISCAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld3NpemUrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICBxdW90ZSA9ICdcJyc7CisgICAgaWYgKHNtYXJ0cXVvdGVzICYmIHNxdW90ZXMgJiYgIWRxdW90ZXMpCisgICAgICAgIHF1b3RlID0gJyInOworICAgIGlmIChzcXVvdGVzICYmIHF1b3RlID09ICdcJycpCisgICAgICAgIG5ld3NpemUgKz0gc3F1b3RlczsKKworICAgIGlmIChuZXdzaXplID4gKFBZX1NTSVpFX1RfTUFYIC0gc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgLSAxKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICJieXRlcyBvYmplY3QgaXMgdG9vIGxhcmdlIHRvIG1ha2UgcmVwciIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmV3c2l6ZSA9IDMgKyA0ICogbGVuZ3RoOwotICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgbmV3c2l6ZSk7CisKKyAgICB2ID0gUHlVbmljb2RlX05ldyhuZXdzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgYzsKLSAgICAgICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICBpbnQgcXVvdGU7CisgICAgcCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHYpOwogCi0gICAgICAgIC8qIEZpZ3VyZSBvdXQgd2hpY2ggcXVvdGUgdG8gdXNlOyBzaW5nbGUgaXMgcHJlZmVycmVkICovCi0gICAgICAgIHF1b3RlID0gJ1wnJzsKLSAgICAgICAgaWYgKHNtYXJ0cXVvdGVzKSB7Ci0gICAgICAgICAgICBjaGFyICp0ZXN0LCAqc3RhcnQ7Ci0gICAgICAgICAgICBzdGFydCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9wKTsKLSAgICAgICAgICAgIGZvciAodGVzdCA9IHN0YXJ0OyB0ZXN0IDwgc3RhcnQrbGVuZ3RoOyArK3Rlc3QpIHsKLSAgICAgICAgICAgICAgICBpZiAoKnRlc3QgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgICAgIHF1b3RlID0gJ1wnJzsgLyogYmFjayB0byBzaW5nbGUgKi8KLSAgICAgICAgICAgICAgICAgICAgZ290byBkZWNpZGVkOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmICgqdGVzdCA9PSAnXCcnKQotICAgICAgICAgICAgICAgICAgICBxdW90ZSA9ICciJzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGRlY2lkZWQ6Ci0gICAgICAgICAgICA7CisgICAgKnArKyA9ICdiJywgKnArKyA9IHF1b3RlOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBvcC0+b2Jfc3ZhbFtpXTsKKyAgICAgICAgaWYgKGMgPT0gcXVvdGUgfHwgYyA9PSAnXFwnKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSBjOworICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICd0JzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXG4nKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAnbic7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ3InOworICAgICAgICBlbHNlIGlmIChjIDwgJyAnIHx8IGMgPj0gMHg3ZikgeworICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAqcCsrID0gJ3gnOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soYyAmIDB4ZjApID4+IDRdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjICYgMHhmXTsKICAgICAgICAgfQotCi0gICAgICAgICpwKysgPSAnYicsICpwKysgPSBxdW90ZTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAvKiBUaGVyZSdzIGF0IGxlYXN0IGVub3VnaCByb29tIGZvciBhIGhleCBlc2NhcGUKLSAgICAgICAgICAgICAgIGFuZCBhIGNsb3NpbmcgcXVvdGUuICovCi0gICAgICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpID49IDUpOwotICAgICAgICAgICAgYyA9IG9wLT5vYl9zdmFsW2ldOwotICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUgfHwgYyA9PSAnXFwnKQotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1x0JykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICd0JzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xuJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICduJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xyJykKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICdyJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPCAnICcgfHwgYyA+PSAweDdmKSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjICYgMHhmMCkgPj4gNF07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjICYgMHhmXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAqcCsrID0gYzsKLSAgICAgICAgfQotICAgICAgICBhc3NlcnQobmV3c2l6ZSAtIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpID49IDEpOwotICAgICAgICAqcCsrID0gcXVvdGU7Ci0gICAgICAgICpwID0gJ1wwJzsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUoJnYsIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICpwKysgPSBjOwogICAgIH0KKyAgICAqcCsrID0gcXVvdGU7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh2LCAxKSk7CisgICAgcmV0dXJuIHY7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04NzEsMzUgKzg2MSwxMSBAQAogc3RhdGljIFB5X2hhc2hfdAogYnl0ZXNfaGFzaChQeUJ5dGVzT2JqZWN0ICphKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbGVuOwotICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgcmVnaXN0ZXIgUHlfaGFzaF90IHg7Ci0KLSNpZmRlZiBQeV9ERUJVRwotICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7Ci0jZW5kaWYKLSAgICBpZiAoYS0+b2Jfc2hhc2ggIT0gLTEpCi0gICAgICAgIHJldHVybiBhLT5vYl9zaGFzaDsKLSAgICBsZW4gPSBQeV9TSVpFKGEpOwotICAgIC8qCi0gICAgICBXZSBtYWtlIHRoZSBoYXNoIG9mIHRoZSBlbXB0eSBzdHJpbmcgYmUgMCwgcmF0aGVyIHRoYW4gdXNpbmcKLSAgICAgIChwcmVmaXggXiBzdWZmaXgpLCBzaW5jZSB0aGlzIHNsaWdodGx5IG9iZnVzY2F0ZXMgdGhlIGhhc2ggc2VjcmV0Ci0gICAgKi8KLSAgICBpZiAobGVuID09IDApIHsKLSAgICAgICAgYS0+b2Jfc2hhc2ggPSAwOwotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoYS0+b2Jfc2hhc2ggPT0gLTEpIHsKKyAgICAgICAgLyogQ2FuJ3QgZmFpbCAqLworICAgICAgICBhLT5vYl9zaGFzaCA9IF9QeV9IYXNoQnl0ZXMoKHVuc2lnbmVkIGNoYXIgKikgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CiAgICAgfQotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKSBhLT5vYl9zdmFsOwotICAgIHggPSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7Ci0gICAgeCBePSAqcCA8PCA3OwotICAgIHdoaWxlICgtLWxlbiA+PSAwKQotICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUip4KSBeICpwKys7Ci0gICAgeCBePSBQeV9TSVpFKGEpOwotICAgIHggXj0gX1B5X0hhc2hTZWNyZXQuc3VmZml4OwotICAgIGlmICh4ID09IC0xKQotICAgICAgICB4ID0gLTI7Ci0gICAgYS0+b2Jfc2hhc2ggPSB4OwotICAgIHJldHVybiB4OworICAgIHJldHVybiBhLT5vYl9zaGFzaDsKIH0KIAogc3RhdGljIFB5T2JqZWN0KgpAQCAtMTAwNyw3ICs5NzMsNyBAQAogI2RlZmluZSBTVFJJUE5BTUUoaSkgKHN0cmlwZm9ybWF0W2ldKzMpCiAKIFB5RG9jX1NUUlZBUihzcGxpdF9fZG9jX18sCi0iQi5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSkgLT4gbGlzdCBvZiBieXRlc1xuXAorIkIuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLlxuXAogSWYgc2VwIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgTm9uZSwgQiBpcyBzcGxpdCBvbiBBU0NJSSB3aGl0ZXNwYWNlXG5cCkBAIC0xMDE1LDE1ICs5ODEsMTcgQEAKIElmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0IHNwbGl0cyBhcmUgZG9uZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBuOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CiAgICAgUHlfYnVmZmVyIHZzdWI7CiAgICAgUHlPYmplY3QgKmxpc3QsICpzdWJvYmogPSBQeV9Ob25lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246c3BsaXQiLCAmc3Vib2JqLCAmbWF4c3BsaXQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T246c3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKQEAgLTEwOTUsNyArMTA2Myw3IEBACiB9CiAKIFB5RG9jX1NUUlZBUihyc3BsaXRfX2RvY19fLAotIkIucnNwbGl0KFtzZXBbLCBtYXhzcGxpdF1dKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCisiQi5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIGJ5dGVzXG5cCiBcblwKIFJldHVybiBhIGxpc3Qgb2YgdGhlIHNlY3Rpb25zIGluIEIsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLFxuXAogc3RhcnRpbmcgYXQgdGhlIGVuZCBvZiBCIGFuZCB3b3JraW5nIHRvIHRoZSBmcm9udC5cblwKQEAgLTExMDUsMTUgKzEwNzMsMTcgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwogICAgIFB5X2J1ZmZlciB2c3ViOwogICAgIFB5T2JqZWN0ICpsaXN0LCAqc3Vib2JqID0gUHlfTm9uZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnJzcGxpdCIsICZzdWJvYmosICZtYXhzcGxpdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPbjpyc3BsaXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJnN1Ym9iaiwgJm1heHNwbGl0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKG1heHNwbGl0IDwgMCkKICAgICAgICAgbWF4c3BsaXQgPSBQWV9TU0laRV9UX01BWDsKQEAgLTEyNTQsMzEgKzEyMjQsNDIgQEAKIGJ5dGVzX2ZpbmRfaW50ZXJuYWwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCiB7CiAgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKICAgICBjb25zdCBjaGFyICpzdWI7CiAgICAgUHlfc3NpemVfdCBzdWJfbGVuOwogICAgIFB5X3NzaXplX3Qgc3RhcnQ9MCwgZW5kPVBZX1NTSVpFX1RfTUFYOworICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImZpbmQvcmZpbmQvaW5kZXgvcmluZGV4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiAtMjsKIAotICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vib2JqKTsKLSAgICAgICAgc3ViX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vib2JqKTsKKyAgICBpZiAoc3Vib2JqKSB7CisgICAgICAgIGlmIChfZ2V0YnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0yOworCisgICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIoc3Vib2JqLCAmc3ViLCAmc3ViX2xlbikpCi0gICAgICAgIC8qIFhYWCAtIHRoZSAiZXhwZWN0ZWQgYSBjaGFyYWN0ZXIgYnVmZmVyIG9iamVjdCIgaXMgcHJldHR5Ci0gICAgICAgICAgIGNvbmZ1c2luZyBmb3IgYSBub24tZXhwZXJ0LiAgcmVtYXAgdG8gc29tZXRoaW5nIGVsc2UgPyAqLwotICAgICAgICByZXR1cm4gLTI7CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CiAKICAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9maW5kX3NsaWNlKAorICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAogICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKICAgICBlbHNlCi0gICAgICAgIHJldHVybiBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCisgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAogICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKworICAgIGlmIChzdWJvYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7CisKKyAgICByZXR1cm4gcmVzOwogfQogCiAKQEAgLTE1MDQsMjMgKzE0ODUsMzggQEAKICAgICBQeU9iamVjdCAqc3ViX29iajsKICAgICBjb25zdCBjaGFyICpzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKnN1YjsKICAgICBQeV9zc2l6ZV90IHN1Yl9sZW47CisgICAgY2hhciBieXRlOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoImNvdW50IiwgYXJncywgJnN1Yl9vYmosICZzdGFydCwgJmVuZCkpCisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmNvdW50X29iajsKKworICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiY291bnQiLCBhcmdzLCAmc3ViX29iaiwgJmJ5dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3ViX29iaikpIHsKLSAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3ViX29iaik7Ci0gICAgICAgIHN1Yl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHN1Yl9vYmopOworICAgIGlmIChzdWJfb2JqKSB7CisgICAgICAgIGlmIChfZ2V0YnVmZmVyKHN1Yl9vYmosICZ2c3ViKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwogICAgIH0KLSAgICBlbHNlIGlmIChQeU9iamVjdF9Bc0NoYXJCdWZmZXIoc3ViX29iaiwgJnN1YiwgJnN1Yl9sZW4pKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgc3ViID0gJmJ5dGU7CisgICAgICAgIHN1Yl9sZW4gPSAxOworICAgIH0KIAogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwogCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCgKKyAgICBjb3VudF9vYmogPSBQeUxvbmdfRnJvbVNzaXplX3QoCiAgICAgICAgIHN0cmluZ2xpYl9jb3VudChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgUFlfU1NJWkVfVF9NQVgpCiAgICAgICAgICk7CisKKyAgICBpZiAoc3ViX29iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7CisKKyAgICByZXR1cm4gY291bnRfb2JqOwogfQogCiAKQEAgLTIzMjksMTEgKzIzMjUsMTMgQEAKIGlzIGdpdmVuIGFuZCB0cnVlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi1ieXRlc19zcGxpdGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK2J5dGVzX3NwbGl0bGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImtlZXBlbmRzIiwgMH07CiAgICAgaW50IGtlZXBlbmRzID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifGk6c3BsaXRsaW5lcyIsICZrZWVwZW5kcykpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxpOnNwbGl0bGluZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJmtlZXBlbmRzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXR1cm4gc3RyaW5nbGliX3NwbGl0bGluZXMoCkBAIC0yMzUxLDcgKzIzNDksNyBAQAogRXhhbXBsZTogYnl0ZXMuZnJvbWhleCgnQjkgMDFFRicpIC0+IGInXFx4YjlcXHgwMVxceGVmJy4iKTsKIAogc3RhdGljIGludAotaGV4X2RpZ2l0X3RvX2ludChQeV9VTklDT0RFIGMpCitoZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKIHsKICAgICBpZiAoYyA+PSAxMjgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTIzNzEsMTUgKzIzNjksMjAgQEAKIHsKICAgICBQeU9iamVjdCAqbmV3c3RyaW5nLCAqaGV4b2JqOwogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9VTklDT0RFICpoZXg7CiAgICAgUHlfc3NpemVfdCBoZXhsZW4sIGJ5dGVzbGVuLCBpLCBqOwogICAgIGludCB0b3AsIGJvdDsKKyAgICB2b2lkICpkYXRhOworICAgIHVuc2lnbmVkIGludCBraW5kOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmZyb21oZXgiLCAmaGV4b2JqKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhoZXhvYmopKTsKLSAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaGV4b2JqKTsKLSAgICBoZXggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShoZXhvYmopOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaGV4b2JqKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGhleG9iaik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKGhleG9iaik7CisgICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaGV4b2JqKTsKKwogICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCiAgICAgbmV3c3RyaW5nID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7CiAgICAgaWYgKCFuZXdzdHJpbmcpCkBAIC0yMzg3LDEyICsyMzkwLDEyIEBACiAgICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyaW5nKTsKICAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CiAgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChoZXhbaV0gPT0gJyAnKQorICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQogICAgICAgICAgICAgaSsrOwogICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChoZXhbaV0pOwotICAgICAgICBib3QgPSBoZXhfZGlnaXRfdG9faW50KGhleFtpKzFdKTsKKyAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7CisgICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7CiAgICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCkBAIC0yNDcyLDEwICsyNDc1LDEwIEBACiAgICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKICAgICB7InJwYXJ0aXRpb24iLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnBhcnRpdGlvbiwgTUVUSF9PLAogICAgICBycGFydGl0aW9uX19kb2NfX30sCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1MsIHJzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHUywgc3BsaXRfX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLAorICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3BsaXQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCiAgICAgIHNwbGl0bGluZXNfX2RvY19ffSwKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAogICAgICBzdGFydHN3aXRoX19kb2NfX30sCkBAIC0yNTc0LDYgKzI1NzcsMTIgQEAKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKworICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3QoeCkpIHsKKyAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICByZXR1cm4geDsKKyAgICB9CisKICAgICAvKiBVc2UgdGhlIG1vZGVybiBidWZmZXIgaW50ZXJmYWNlICovCiAgICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHgpKSB7CiAgICAgICAgIFB5X2J1ZmZlciB2aWV3OwpAQCAtMjU4Miw3ICsyNTkxLDYgQEAKICAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7CiAgICAgICAgIGlmICghbmV3KQogICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAvKiBYWFgoYnJldHQuY2Fubm9uKTogQmV0dGVyIHdheSB0byBnZXQgdG8gaW50ZXJuYWwgYnVmZmVyPyAqLwogICAgICAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTI4NTcsMTQ5ICsyODY1LDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotLyogX1B5Qnl0ZXNfRm9ybWF0TG9uZyBlbXVsYXRlcyB0aGUgZm9ybWF0IGNvZGVzIGQsIHUsIG8sIHggYW5kIFgsIGFuZAotICogdGhlIEZfQUxUIGZsYWcsIGZvciBQeXRob24ncyBsb25nICh1bmJvdW5kZWQpIGludHMuICBJdCdzIG5vdCB1c2VkIGZvcgotICogUHl0aG9uJ3MgcmVndWxhciBpbnRzLgotICogUmV0dXJuIHZhbHVlOiAgYSBuZXcgUHlCeXRlcyosIG9yIE5VTEwgaWYgZXJyb3IuCi0gKiAgLiAgKnBidWYgaXMgc2V0IHRvIHBvaW50IGludG8gaXQsCi0gKiAgICAgKnBsZW4gc2V0IHRvIHRoZSAjIG9mIGNoYXJzIGZvbGxvd2luZyB0aGF0LgotICogICAgIENhbGxlciBtdXN0IGRlY3JlZiBpdCB3aGVuIGRvbmUgdXNpbmcgcGJ1Zi4KLSAqICAgICBUaGUgc3RyaW5nIHN0YXJ0aW5nIGF0ICpwYnVmIGlzIG9mIHRoZSBmb3JtCi0gKiAgICAgICAgICItIj8gKCIweCIgfCAiMFgiKT8gZGlnaXQrCi0gKiAgICAgIjB4Ii8iMFgiIGFyZSBwcmVzZW50IG9ubHkgZm9yIHggYW5kIFggY29udmVyc2lvbnMsIHdpdGggRl9BTFQKLSAqICAgICAgICAgc2V0IGluIGZsYWdzLiAgVGhlIGNhc2Ugb2YgaGV4IGRpZ2l0cyB3aWxsIGJlIGNvcnJlY3QsCi0gKiAgICAgVGhlcmUgd2lsbCBiZSBhdCBsZWFzdCBwcmVjIGRpZ2l0cywgemVyby1maWxsZWQgb24gdGhlIGxlZnQgaWYKLSAqICAgICAgICAgbmVjZXNzYXJ5IHRvIGdldCB0aGF0IG1hbnkuCi0gKiB2YWwgICAgICAgICAgb2JqZWN0IHRvIGJlIGNvbnZlcnRlZAotICogZmxhZ3MgICAgICAgIGJpdG1hc2sgb2YgZm9ybWF0IGZsYWdzOyBvbmx5IEZfQUxUIGlzIGxvb2tlZCBhdAotICogcHJlYyAgICAgICAgIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0czsgMC1maWxsIG9uIGxlZnQgaWYgbmVlZGVkCi0gKiB0eXBlICAgICAgICAgYSBjaGFyYWN0ZXIgaW4gW2R1b3hYXTsgdSBhY3RzIHRoZSBzYW1lIGFzIGQKLSAqCi0gKiBDQVVUSU9OOiAgbywgeCBhbmQgWCBjb252ZXJzaW9ucyBvbiByZWd1bGFyIGludHMgY2FuIG5ldmVyCi0gKiBwcm9kdWNlIGEgJy0nIHNpZ24sIGJ1dCBjYW4gZm9yIFB5dGhvbidzIHVuYm91bmRlZCBpbnRzLgotICovCi1QeU9iamVjdCoKLV9QeUJ5dGVzX0Zvcm1hdExvbmcoUHlPYmplY3QgKnZhbCwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICBjaGFyICoqcGJ1ZiwgaW50ICpwbGVuKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgaW50IHNpZ247ICAgICAgICAgICAvKiAxIGlmICctJywgZWxzZSAwICovCi0gICAgaW50IGxlbjsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyAqLwotICAgIFB5X3NzaXplX3QgbGxlbjsKLSAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KLSAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKLQotICAgIC8qIEF2b2lkIGV4Y2VlZGluZyBTU0laRV9UX01BWCAqLwotICAgIGlmIChwcmVjID4gSU5UX01BWC0zKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInByZWNpc2lvbiB0b28gbGFyZ2UiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSAnZCc6Ci0gICAgY2FzZSAndSc6Ci0gICAgICAgIC8qIFNwZWNpYWwtY2FzZSBib29sZWFuOiB3ZSB3YW50IDAvMSAqLwotICAgICAgICBpZiAoUHlCb29sX0NoZWNrKHZhbCkpCi0gICAgICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCAxMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IFB5X1RZUEUodmFsKS0+dHBfc3RyKHZhbCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgJ28nOgotICAgICAgICBudW1ub25kaWdpdHMgPSAyOwotICAgICAgICByZXN1bHQgPSBQeU51bWJlcl9Ub0Jhc2UodmFsLCA4KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAneCc6Ci0gICAgY2FzZSAnWCc6Ci0gICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7Ci0gICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDE2KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KCEiJ3R5cGUnIG5vdCBpbiBbZHVveFhdIik7Ci0gICAgfQotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGJ1ZiA9IF9QeVVuaWNvZGVfQXNTdHJpbmcocmVzdWx0KTsKLSAgICBpZiAoIWJ1ZikgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgLyogVG8gbW9kaWZ5IHRoZSBzdHJpbmcgaW4tcGxhY2UsIHRoZXJlIGNhbiBvbmx5IGJlIG9uZSByZWZlcmVuY2UuICovCi0gICAgaWYgKFB5X1JFRkNOVChyZXN1bHQpICE9IDEpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBsbGVuID0gUHlVbmljb2RlX0dldFNpemUocmVzdWx0KTsKLSAgICBpZiAobGxlbiA+IElOVF9NQVgpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvbyBsYXJnZSBpbiBfUHlCeXRlc19Gb3JtYXRMb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBsZW4gPSAoaW50KWxsZW47Ci0gICAgaWYgKGJ1ZltsZW4tMV0gPT0gJ0wnKSB7Ci0gICAgICAgIC0tbGVuOwotICAgICAgICBidWZbbGVuXSA9ICdcMCc7Ci0gICAgfQotICAgIHNpZ24gPSBidWZbMF0gPT0gJy0nOwotICAgIG51bW5vbmRpZ2l0cyArPSBzaWduOwotICAgIG51bWRpZ2l0cyA9IGxlbiAtIG51bW5vbmRpZ2l0czsKLSAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7Ci0KLSAgICAvKiBHZXQgcmlkIG9mIGJhc2UgbWFya2VyIHVubGVzcyBGX0FMVCAqLwotICAgIGlmICgoKGZsYWdzICYgRl9BTFQpID09IDAgJiYKLSAgICAgICAgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSkpIHsKLSAgICAgICAgYXNzZXJ0KGJ1ZltzaWduXSA9PSAnMCcpOwotICAgICAgICBhc3NlcnQoYnVmW3NpZ24rMV0gPT0gJ3gnIHx8IGJ1ZltzaWduKzFdID09ICdYJyB8fAotICAgICAgICAgICAgICAgYnVmW3NpZ24rMV0gPT0gJ28nKTsKLSAgICAgICAgbnVtbm9uZGlnaXRzIC09IDI7Ci0gICAgICAgIGJ1ZiArPSAyOwotICAgICAgICBsZW4gLT0gMjsKLSAgICAgICAgaWYgKHNpZ24pCi0gICAgICAgICAgICBidWZbMF0gPSAnLSc7Ci0gICAgICAgIGFzc2VydChsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzKTsKLSAgICAgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOwotICAgIH0KLQotICAgIC8qIEZpbGwgd2l0aCBsZWFkaW5nIHplcm9lcyB0byBtZWV0IG1pbmltdW0gd2lkdGguICovCi0gICAgaWYgKHByZWMgPiBudW1kaWdpdHMpIHsKLSAgICAgICAgUHlPYmplY3QgKnIxID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1ub25kaWdpdHMgKyBwcmVjKTsKLSAgICAgICAgY2hhciAqYjE7Ci0gICAgICAgIGlmICghcjEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgYjEgPSBQeUJ5dGVzX0FTX1NUUklORyhyMSk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1ub25kaWdpdHM7ICsraSkKLSAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlYyAtIG51bWRpZ2l0czsgaSsrKQotICAgICAgICAgICAgKmIxKysgPSAnMCc7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1kaWdpdHM7IGkrKykKLSAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOwotICAgICAgICAqYjEgPSAnXDAnOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gcjE7Ci0gICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgICAgIGxlbiA9IG51bW5vbmRpZ2l0cyArIHByZWM7Ci0gICAgfQotCi0gICAgLyogRml4IHVwIGNhc2UgZm9yIGhleCBjb252ZXJzaW9ucy4gKi8KLSAgICBpZiAodHlwZSA9PSAnWCcpIHsKLSAgICAgICAgLyogTmVlZCB0byBjb252ZXJ0IGFsbCBsb3dlciBjYXNlIGxldHRlcnMgdG8gdXBwZXIgY2FzZS4KLSAgICAgICAgICAgYW5kIG5lZWQgdG8gY29udmVydCAweCB0byAwWCAoYW5kIC0weCB0byAtMFgpLiAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgICAgICBpZiAoYnVmW2ldID49ICdhJyAmJiBidWZbaV0gPD0gJ3gnKQotICAgICAgICAgICAgICAgIGJ1ZltpXSAtPSAnYSctJ0EnOwotICAgIH0KLSAgICAqcGJ1ZiA9IGJ1ZjsKLSAgICAqcGxlbiA9IGxlbjsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCiB2b2lkCiBQeUJ5dGVzX0Zpbmkodm9pZCkKIHsKQEAgLTMwNzIsOSArMjkzNyw0MyBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAgICAgICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpdGVyX3JlZHVjZShzdHJpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCB1KTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cml0ZXJfc2V0c3RhdGUoc3RyaXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gUHlMb25nX0FzU3NpemVfdChzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpbmRleCA8IDApCisgICAgICAgIGluZGV4ID0gMDsKKyAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHN0cml0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilzdHJpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGFzc29iamVjdC5jIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCmluZGV4IGY5NTY4NTIuLmNkYzliMWMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xhc3NvYmplY3QuYworKysgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKQEAgLTE0LDYgKzE0LDggQEAKICNkZWZpbmUgUHlNZXRob2RfTUFYRlJFRUxJU1QgMjU2CiAjZW5kaWYKIAorX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworCiBQeU9iamVjdCAqCiBQeU1ldGhvZF9GdW5jdGlvbihQeU9iamVjdCAqaW0pCiB7CkBAIC0xOTAsOCArMTkyLDcgQEAKICAgICAgICAgIVB5TWV0aG9kX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeU1ldGhvZF9DaGVjayhvdGhlcikpCiAgICAgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYSA9IChQeU1ldGhvZE9iamVjdCAqKXNlbGY7CiAgICAgYiA9IChQeU1ldGhvZE9iamVjdCAqKW90aGVyOwpAQCAtMjI4LDcgKzIyOSw3IEBACiAgICAgfQogICAgIGtsYXNzID0gKFB5T2JqZWN0KilQeV9UWVBFKHNlbGYpOwogCi0gICAgZnVuY25hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZ1bmMsICJfX25hbWVfXyIpOworICAgIGZ1bmNuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChmdW5jLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKGZ1bmNuYW1lID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjQyLDcgKzI0Myw3IEBACiAgICAgaWYgKGtsYXNzID09IE5VTEwpCiAgICAgICAgIGtsYXNzbmFtZSA9IE5VTEw7CiAgICAgZWxzZSB7Ci0gICAgICAgIGtsYXNzbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoa2xhc3MsICJfX25hbWVfXyIpOworICAgICAgICBrbGFzc25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGtsYXNzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgICAgIGlmIChrbGFzc25hbWUgPT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZnVuY25hbWUpOwpAQCAtNDAyLDYgKzQwMywxNSBAQAogICAgICh2b2lkKVB5TWV0aG9kX0NsZWFyRnJlZUxpc3QoKTsKIH0KIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5TWV0aG9kX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlNZXRob2RPYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZnJlZSwgc2l6ZW9mKFB5TWV0aG9kT2JqZWN0KSk7Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogaW5zdGFuY2UgbWV0aG9kCiAgKi8KQEAgLTUxOSw4ICs1MjksNyBAQAogICAgICAgICAhUHlJbnN0YW5jZU1ldGhvZF9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlJbnN0YW5jZU1ldGhvZF9DaGVjayhvdGhlcikpCiAgICAgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYSA9IChQeUluc3RhbmNlTWV0aG9kT2JqZWN0ICopc2VsZjsKICAgICBiID0gKFB5SW5zdGFuY2VNZXRob2RPYmplY3QgKilvdGhlcjsKQEAgLTU0Nyw3ICs1NTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBmdW5jbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZnVuYywgIl9fbmFtZV9fIik7CisgICAgZnVuY25hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGZ1bmMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAoZnVuY25hbWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9PYmplY3RzL2NvZGVvYmplY3QuYyBiL09iamVjdHMvY29kZW9iamVjdC5jCmluZGV4IGJiOTM4ZWEuLjk3MTNmNjEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvY29kZW9iamVjdC5jCkBAIC04LDE5ICs4LDI0IEBACiAvKiBhbGxfbmFtZV9jaGFycyhzKTogdHJ1ZSBpZmYgYWxsIGNoYXJzIGluIHMgYXJlIHZhbGlkIE5BTUVfQ0hBUlMgKi8KIAogc3RhdGljIGludAotYWxsX25hbWVfY2hhcnMoUHlfVU5JQ09ERSAqcykKK2FsbF9uYW1lX2NoYXJzKFB5T2JqZWN0ICpvKQogewogICAgIHN0YXRpYyBjaGFyIG9rX25hbWVfY2hhclsyNTZdOwogICAgIHN0YXRpYyB1bnNpZ25lZCBjaGFyICpuYW1lX2NoYXJzID0gKHVuc2lnbmVkIGNoYXIgKilOQU1FX0NIQVJTOworICAgIFB5VW5pY29kZU9iamVjdCAqdSA9IChQeVVuaWNvZGVPYmplY3QgKilvOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnM7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvKSB8fCBQeVVuaWNvZGVfUkVBRFkodSkgPT0gLTEgfHwKKyAgICAgICAgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpID49IDEyOCkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAob2tfbmFtZV9jaGFyWypuYW1lX2NoYXJzXSA9PSAwKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnA7CiAgICAgICAgIGZvciAocCA9IG5hbWVfY2hhcnM7ICpwOyBwKyspCiAgICAgICAgICAgICBva19uYW1lX2NoYXJbKnBdID0gMTsKICAgICB9CisgICAgcyA9IFB5VW5pY29kZV8xQllURV9EQVRBKHUpOwogICAgIHdoaWxlICgqcykgewotICAgICAgICBpZiAoKnMgPj0gMTI4KQotICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChva19uYW1lX2NoYXJbKnMrK10gPT0gMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTUxLDcgKzU2LDggQEAKICAgICAgICAgICAgUHlPYmplY3QgKmxub3RhYikKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwotICAgIFB5X3NzaXplX3QgaTsKKyAgICB1bnNpZ25lZCBjaGFyICpjZWxsMmFyZyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpLCBuX2NlbGx2YXJzOwogCiAgICAgLyogQ2hlY2sgYXJndW1lbnQgdHlwZXMgKi8KICAgICBpZiAoYXJnY291bnQgPCAwIHx8IGt3b25seWFyZ2NvdW50IDwgMCB8fCBubG9jYWxzIDwgMCB8fApAQCAtNjgsNDggKzc0LDc5IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbl9jZWxsdmFycyA9IFB5VHVwbGVfR0VUX1NJWkUoY2VsbHZhcnMpOwogICAgIGludGVybl9zdHJpbmdzKG5hbWVzKTsKICAgICBpbnRlcm5fc3RyaW5ncyh2YXJuYW1lcyk7CiAgICAgaW50ZXJuX3N0cmluZ3MoZnJlZXZhcnMpOwogICAgIGludGVybl9zdHJpbmdzKGNlbGx2YXJzKTsKICAgICAvKiBJbnRlcm4gc2VsZWN0ZWQgc3RyaW5nIGNvbnN0YW50cyAqLwotICAgIGZvciAoaSA9IFB5VHVwbGVfU2l6ZShjb25zdHMpOyAtLWkgPj0gMDsgKSB7CisgICAgZm9yIChpID0gUHlUdXBsZV9HRVRfU0laRShjb25zdHMpOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HZXRJdGVtKGNvbnN0cywgaSk7Ci0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghYWxsX25hbWVfY2hhcnMoUHlVbmljb2RlX0FTX1VOSUNPREUodikpKQorICAgICAgICBpZiAoIWFsbF9uYW1lX2NoYXJzKHYpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZQeVR1cGxlX0dFVF9JVEVNKGNvbnN0cywgaSkpOwogICAgIH0KLSAgICBjbyA9IFB5T2JqZWN0X05FVyhQeUNvZGVPYmplY3QsICZQeUNvZGVfVHlwZSk7Ci0gICAgaWYgKGNvICE9IE5VTEwpIHsKLSAgICAgICAgY28tPmNvX2FyZ2NvdW50ID0gYXJnY291bnQ7Ci0gICAgICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9IGt3b25seWFyZ2NvdW50OwotICAgICAgICBjby0+Y29fbmxvY2FscyA9IG5sb2NhbHM7Ci0gICAgICAgIGNvLT5jb19zdGFja3NpemUgPSBzdGFja3NpemU7Ci0gICAgICAgIGNvLT5jb19mbGFncyA9IGZsYWdzOwotICAgICAgICBQeV9JTkNSRUYoY29kZSk7Ci0gICAgICAgIGNvLT5jb19jb2RlID0gY29kZTsKLSAgICAgICAgUHlfSU5DUkVGKGNvbnN0cyk7Ci0gICAgICAgIGNvLT5jb19jb25zdHMgPSBjb25zdHM7Ci0gICAgICAgIFB5X0lOQ1JFRihuYW1lcyk7Ci0gICAgICAgIGNvLT5jb19uYW1lcyA9IG5hbWVzOwotICAgICAgICBQeV9JTkNSRUYodmFybmFtZXMpOwotICAgICAgICBjby0+Y29fdmFybmFtZXMgPSB2YXJuYW1lczsKLSAgICAgICAgUHlfSU5DUkVGKGZyZWV2YXJzKTsKLSAgICAgICAgY28tPmNvX2ZyZWV2YXJzID0gZnJlZXZhcnM7Ci0gICAgICAgIFB5X0lOQ1JFRihjZWxsdmFycyk7Ci0gICAgICAgIGNvLT5jb19jZWxsdmFycyA9IGNlbGx2YXJzOwotICAgICAgICBQeV9JTkNSRUYoZmlsZW5hbWUpOwotICAgICAgICBjby0+Y29fZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwotICAgICAgICBjby0+Y29fbmFtZSA9IG5hbWU7Ci0gICAgICAgIGNvLT5jb19maXJzdGxpbmVubyA9IGZpcnN0bGluZW5vOwotICAgICAgICBQeV9JTkNSRUYobG5vdGFiKTsKLSAgICAgICAgY28tPmNvX2xub3RhYiA9IGxub3RhYjsKLSAgICAgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKLSAgICAgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICAvKiBDcmVhdGUgbWFwcGluZyBiZXR3ZWVuIGNlbGxzIGFuZCBhcmd1bWVudHMgaWYgbmVlZGVkLiAqLworICAgIGlmIChuX2NlbGx2YXJzKSB7CisgICAgICAgIFB5X3NzaXplX3QgdG90YWxfYXJncyA9IGFyZ2NvdW50ICsga3dvbmx5YXJnY291bnQgKworICAgICAgICAgICAgKChmbGFncyAmIENPX1ZBUkFSR1MpICE9IDApICsgKChmbGFncyAmIENPX1ZBUktFWVdPUkRTKSAhPSAwKTsKKyAgICAgICAgUHlfc3NpemVfdCBhbGxvY19zaXplID0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICogbl9jZWxsdmFyczsKKyAgICAgICAgaW50IHVzZWRfY2VsbDJhcmcgPSAwOworICAgICAgICBjZWxsMmFyZyA9IFB5TWVtX01BTExPQyhhbGxvY19zaXplKTsKKyAgICAgICAgaWYgKGNlbGwyYXJnID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbWVtc2V0KGNlbGwyYXJnLCBDT19DRUxMX05PVF9BTl9BUkcsIGFsbG9jX3NpemUpOworICAgICAgICAvKiBGaW5kIGNlbGxzIHdoaWNoIGFyZSBhbHNvIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fY2VsbHZhcnM7IGkrKykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBqOworICAgICAgICAgICAgUHlPYmplY3QgKmNlbGwgPSBQeVR1cGxlX0dFVF9JVEVNKGNlbGx2YXJzLCBpKTsKKyAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUHlUdXBsZV9HRVRfSVRFTSh2YXJuYW1lcywgaik7CisgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjZWxsLCBhcmcpKSB7CisgICAgICAgICAgICAgICAgICAgIGNlbGwyYXJnW2ldID0gajsKKyAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXVzZWRfY2VsbDJhcmcpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZSRUUoY2VsbDJhcmcpOworICAgICAgICAgICAgY2VsbDJhcmcgPSBOVUxMOworICAgICAgICB9CiAgICAgfQorICAgIGNvID0gUHlPYmplY3RfTkVXKFB5Q29kZU9iamVjdCwgJlB5Q29kZV9UeXBlKTsKKyAgICBpZiAoY28gPT0gTlVMTCkgeworICAgICAgICBpZiAoY2VsbDJhcmcpCisgICAgICAgICAgICBQeU1lbV9GUkVFKGNlbGwyYXJnKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGNvLT5jb19hcmdjb3VudCA9IGFyZ2NvdW50OworICAgIGNvLT5jb19rd29ubHlhcmdjb3VudCA9IGt3b25seWFyZ2NvdW50OworICAgIGNvLT5jb19ubG9jYWxzID0gbmxvY2FsczsKKyAgICBjby0+Y29fc3RhY2tzaXplID0gc3RhY2tzaXplOworICAgIGNvLT5jb19mbGFncyA9IGZsYWdzOworICAgIFB5X0lOQ1JFRihjb2RlKTsKKyAgICBjby0+Y29fY29kZSA9IGNvZGU7CisgICAgUHlfSU5DUkVGKGNvbnN0cyk7CisgICAgY28tPmNvX2NvbnN0cyA9IGNvbnN0czsKKyAgICBQeV9JTkNSRUYobmFtZXMpOworICAgIGNvLT5jb19uYW1lcyA9IG5hbWVzOworICAgIFB5X0lOQ1JFRih2YXJuYW1lcyk7CisgICAgY28tPmNvX3Zhcm5hbWVzID0gdmFybmFtZXM7CisgICAgUHlfSU5DUkVGKGZyZWV2YXJzKTsKKyAgICBjby0+Y29fZnJlZXZhcnMgPSBmcmVldmFyczsKKyAgICBQeV9JTkNSRUYoY2VsbHZhcnMpOworICAgIGNvLT5jb19jZWxsdmFycyA9IGNlbGx2YXJzOworICAgIGNvLT5jb19jZWxsMmFyZyA9IGNlbGwyYXJnOworICAgIFB5X0lOQ1JFRihmaWxlbmFtZSk7CisgICAgY28tPmNvX2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgUHlfSU5DUkVGKG5hbWUpOworICAgIGNvLT5jb19uYW1lID0gbmFtZTsKKyAgICBjby0+Y29fZmlyc3RsaW5lbm8gPSBmaXJzdGxpbmVubzsKKyAgICBQeV9JTkNSRUYobG5vdGFiKTsKKyAgICBjby0+Y29fbG5vdGFiID0gbG5vdGFiOworICAgIGNvLT5jb196b21iaWVmcmFtZSA9IE5VTEw7CisgICAgY28tPmNvX3dlYWtyZWZsaXN0ID0gTlVMTDsKICAgICByZXR1cm4gY287CiB9CiAKQEAgLTIxMiw5ICsyNDksNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShpdGVtKSk7CisgICAgICAgICAgICBpdGVtID0gX1B5VW5pY29kZV9Db3B5KGl0ZW0pOwogICAgICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd0dXBsZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzAsNiArMzY1LDggQEAKICAgICBQeV9YREVDUkVGKGNvLT5jb19maWxlbmFtZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fbmFtZSk7CiAgICAgUHlfWERFQ1JFRihjby0+Y29fbG5vdGFiKTsKKyAgICBpZiAoY28tPmNvX2NlbGwyYXJnICE9IE5VTEwpCisgICAgICAgIFB5TWVtX0ZSRUUoY28tPmNvX2NlbGwyYXJnKTsKICAgICBpZiAoY28tPmNvX3pvbWJpZWZyYW1lICE9IE5VTEwpCiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChjby0+Y29fem9tYmllZnJhbWUpOwogICAgIGlmIChjby0+Y29fd2Vha3JlZmxpc3QgIT0gTlVMTCkKQEAgLTMzOCw2ICszNzUsMTcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2NvZGVfc2l6ZW9mKFB5Q29kZU9iamVjdCAqY28sIHZvaWQgKnVudXNlZCkKK3sKKyAgICBQeV9zc2l6ZV90IHJlczsKKworICAgIHJlcyA9IHNpemVvZihQeUNvZGVPYmplY3QpOworICAgIGlmIChjby0+Y29fY2VsbDJhcmcgIT0gTlVMTCAmJiBjby0+Y29fY2VsbHZhcnMgIT0gTlVMTCkKKyAgICAgICAgcmVzICs9IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSAqIHNpemVvZih1bnNpZ25lZCBjaGFyKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBjb2RlX3JlcHIoUHlDb2RlT2JqZWN0ICpjbykKIHsKICAgICBpbnQgbGluZW5vOwpAQCAtMzY2LDggKzQxNCw3IEBACiAgICAgaWYgKChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgfHwKICAgICAgICAgIVB5Q29kZV9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlDb2RlX0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAKICAgICBjbyA9IChQeUNvZGVPYmplY3QgKilzZWxmOwpAQCAtNDQ0LDYgKzQ5MSwxMSBAQAogCiAvKiBYWFggY29kZSBvYmplY3RzIG5lZWQgdG8gcGFydGljaXBhdGUgaW4gR0M/ICovCiAKK3N0YXRpYyBzdHJ1Y3QgUHlNZXRob2REZWYgY29kZV9tZXRob2RzW10gPSB7CisgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKWNvZGVfc2l6ZW9mLCBNRVRIX05PQVJHU30sCisgICAge05VTEwsIE5VTEx9ICAgICAgICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QgUHlDb2RlX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAiY29kZSIsCkBAIC00NzIsNyArNTI0LDcgQEAKICAgICBvZmZzZXRvZihQeUNvZGVPYmplY3QsIGNvX3dlYWtyZWZsaXN0KSwgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNvZGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBjb2RlX21lbWJlcmxpc3QsICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb21wbGV4b2JqZWN0LmMgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwppbmRleCBlMjQ3YmE5Li40MDNjNjBjIDEwMDY0NAotLS0gYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYworKysgYi9PYmplY3RzL2NvbXBsZXhvYmplY3QuYwpAQCAtMjY1LDkgKzI2NSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHJ5X2NvbXBsZXhfc3BlY2lhbF9tZXRob2QoUHlPYmplY3QgKm9wKSB7CiAgICAgUHlPYmplY3QgKmY7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpjb21wbGV4c3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fY29tcGxleF9fKTsKIAotICAgIGYgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvcCwgIl9fY29tcGxleF9fIiwgJmNvbXBsZXhzdHIpOworICAgIGYgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvcCwgJlB5SWRfX19jb21wbGV4X18pOwogICAgIGlmIChmKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGYsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoZik7CkBAIC0zMzAsMTIgKzMzMCwxMCBAQAogICAgIGludCBwcmVjaXNpb24gPSAwOwogICAgIGNoYXIgZm9ybWF0X2NvZGUgPSAncic7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47CiAKICAgICAvKiBJZiB0aGVzZSBhcmUgbm9uLU5VTEwsIHRoZXknbGwgbmVlZCB0byBiZSBmcmVlZC4gKi8KICAgICBjaGFyICpwcmUgPSBOVUxMOwogICAgIGNoYXIgKmltID0gTlVMTDsKLSAgICBjaGFyICpidWYgPSBOVUxMOwogCiAgICAgLyogVGhlc2UgZG8gbm90IG5lZWQgdG8gYmUgZnJlZWQuIHJlIGlzIGVpdGhlciBhbiBhbGlhcwogICAgICAgIGZvciBwcmUgb3IgYSBwb2ludGVyIHRvIGEgY29uc3RhbnQuICBsZWFkIGFuZCB0YWlsCkBAIC0zNzQsMjAgKzM3MiwxMCBAQAogICAgICAgICBsZWFkID0gIigiOwogICAgICAgICB0YWlsID0gIikiOwogICAgIH0KLSAgICAvKiBBbGxvYyB0aGUgZmluYWwgYnVmZmVyLiBBZGQgb25lIGZvciB0aGUgImoiIGluIHRoZSBmb3JtYXQgc3RyaW5nLAotICAgICAgIGFuZCBvbmUgZm9yIHRoZSB0cmFpbGluZyB6ZXJvIGJ5dGUuICovCi0gICAgbGVuID0gc3RybGVuKGxlYWQpICsgc3RybGVuKHJlKSArIHN0cmxlbihpbSkgKyBzdHJsZW4odGFpbCkgKyAyOwotICAgIGJ1ZiA9IFB5TWVtX01hbGxvYyhsZW4pOwotICAgIGlmICghYnVmKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0gICAgUHlPU19zbnByaW50ZihidWYsIGxlbiwgIiVzJXMlc2olcyIsIGxlYWQsIHJlLCBpbSwgdGFpbCk7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXMlcyVzaiVzIiwgbGVhZCwgcmUsIGltLCB0YWlsKTsKICAgZG9uZToKICAgICBQeU1lbV9GcmVlKGltKTsKICAgICBQeU1lbV9GcmVlKHByZSk7Ci0gICAgUHlNZW1fRnJlZShidWYpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTY2Miw4ICs2NTAsNyBAQAogICAgIHJldHVybiByZXM7CiAKIFVuaW1wbGVtZW50ZWQ6Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNzEyLDEyICs2OTksMjIgQEAKIGNvbXBsZXhfX2Zvcm1hdF9fKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWM7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgaW50IHJldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdF9zcGVjKSkKLSAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgMCk7CisgICAgcmV0ID0gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcigKKyAgICAgICAgJndyaXRlciwKKyAgICAgICAgc2VsZiwKKyAgICAgICAgZm9ybWF0X3NwZWMsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSk7CisgICAgaWYgKHJldCA9PSAtMSkgeworICAgICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiB9CiAKICNpZiAwCkBAIC03NjgsMjAgKzc2NSwxMCBAQAogICAgIFB5X3NzaXplX3QgbGVuOwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBQeV9zc2l6ZV90IGksIGJ1ZmxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh2KTsKLSAgICAgICAgUHlfVU5JQ09ERSAqYnVmcHRyOwotICAgICAgICBzX2J1ZmZlciA9IFB5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsVG9BU0NJSSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHYpLCBidWZsZW4pOworICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKICAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgLyogUmVwbGFjZSBub24tQVNDSUkgd2hpdGVzcGFjZSB3aXRoICcgJyAqLwotICAgICAgICBidWZwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzX2J1ZmZlcik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBidWZsZW47IGkrKykgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9IGJ1ZnB0cltpXTsKLSAgICAgICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgICAgIGJ1ZnB0cltpXSA9ICcgJzsKLSAgICAgICAgfQotICAgICAgICBzID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoc19idWZmZXIsICZsZW4pOworICAgICAgICBzID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoc19idWZmZXIsICZsZW4pOwogICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKaW5kZXggOTkzNGYyMy4uYWJjYzAwMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jCisrKyBiL09iamVjdHMvZGVzY3JvYmplY3QuYwpAQCAtOSw2ICs5LDcgQEAKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkZXNjcik7CiAgICAgUHlfWERFQ1JFRihkZXNjci0+ZF90eXBlKTsKICAgICBQeV9YREVDUkVGKGRlc2NyLT5kX25hbWUpOworICAgIFB5X1hERUNSRUYoZGVzY3ItPmRfcXVhbG5hbWUpOwogICAgIFB5T2JqZWN0X0dDX0RlbChkZXNjcik7CiB9CiAKQEAgLTM1OSw2ICszNjAsNDQgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoZGVzY3ItPmRfbWV0aG9kLT5tbF9kb2MpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorY2FsY3VsYXRlX3F1YWxuYW1lKFB5RGVzY3JPYmplY3QgKmRlc2NyKQoreworICAgIFB5T2JqZWN0ICp0eXBlX3F1YWxuYW1lLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CisKKyAgICBpZiAoZGVzY3ItPmRfbmFtZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soZGVzY3ItPmRfbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICI8ZGVzY3JpcHRvcj4uX19uYW1lX18gaXMgbm90IGEgdW5pY29kZSBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgdHlwZV9xdWFsbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopZGVzY3ItPmRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmICh0eXBlX3F1YWxuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodHlwZV9xdWFsbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIjxkZXNjcmlwdG9yPi5fX29iamNsYXNzX18uIgorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBpcyBub3QgYSB1bmljb2RlIG9iamVjdCIpOworICAgICAgICBQeV9YREVDUkVGKHR5cGVfcXVhbG5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJVMuJVMiLCB0eXBlX3F1YWxuYW1lLCBkZXNjci0+ZF9uYW1lKTsKKyAgICBQeV9ERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2Rlc2NyX2dldF9xdWFsbmFtZShQeURlc2NyT2JqZWN0ICpkZXNjcikKK3sKKyAgICBpZiAoZGVzY3ItPmRfcXVhbG5hbWUgPT0gTlVMTCkKKyAgICAgICAgZGVzY3ItPmRfcXVhbG5hbWUgPSBjYWxjdWxhdGVfcXVhbG5hbWUoZGVzY3IpOworICAgIFB5X1hJTkNSRUYoZGVzY3ItPmRfcXVhbG5hbWUpOworICAgIHJldHVybiBkZXNjci0+ZF9xdWFsbmFtZTsKK30KKwogc3RhdGljIFB5TWVtYmVyRGVmIGRlc2NyX21lbWJlcnNbXSA9IHsKICAgICB7Il9fb2JqY2xhc3NfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeURlc2NyT2JqZWN0LCBkX3R5cGUpLCBSRUFET05MWX0sCiAgICAgeyJfX25hbWVfXyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeURlc2NyT2JqZWN0LCBkX25hbWUpLCBSRUFET05MWX0sCkBAIC0zNjcsNiArNDA2LDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIG1ldGhvZF9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKW1ldGhvZF9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTM4Miw2ICs0MjIsNyBAQAogCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtYmVyX2dldHNldFtdID0gewogICAgIHsiX19kb2NfXyIsIChnZXR0ZXIpbWVtYmVyX2dldF9kb2N9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcilkZXNjcl9nZXRfcXVhbG5hbWV9LAogICAgIHswfQogfTsKIApAQCAtMzk3LDYgKzQzOCw3IEBACiAKIHN0YXRpYyBQeUdldFNldERlZiBnZXRzZXRfZ2V0c2V0W10gPSB7CiAgICAgeyJfX2RvY19fIiwgKGdldHRlcilnZXRzZXRfZ2V0X2RvY30sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWRlc2NyX2dldF9xdWFsbmFtZX0sCiAgICAgezB9CiB9OwogCkBAIC00MTIsNiArNDU0LDcgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIHdyYXBwZXJkZXNjcl9nZXRzZXRbXSA9IHsKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXdyYXBwZXJkZXNjcl9nZXRfZG9jfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpZGVzY3JfZ2V0X3F1YWxuYW1lfSwKICAgICB7MH0KIH07CiAKQEAgLTYyMyw2ICs2NjYsOSBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIGRlc2NyID0gTlVMTDsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlc2NyLT5kX3F1YWxuYW1lID0gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZGVzY3I7CiB9CkBAIC02OTAsNDEgKzczNiw0NCBAQAogfQogCiAKLS8qIC0tLSBSZWFkb25seSBwcm94eSBmb3IgZGljdGlvbmFyaWVzIChhY3R1YWxseSBhbnkgbWFwcGluZykgLS0tICovCisvKiAtLS0gbWFwcGluZ3Byb3h5OiByZWFkLW9ubHkgcHJveHkgZm9yIG1hcHBpbmdzIC0tLSAqLwogCiAvKiBUaGlzIGhhcyBubyByZWFzb24gdG8gYmUgaW4gdGhpcyBmaWxlIGV4Y2VwdCB0aGF0IGFkZGluZyBuZXcgZmlsZXMgaXMgYQogICAgYml0IG9mIGEgcGFpbiAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAotICAgIFB5T2JqZWN0ICpkaWN0OwotfSBwcm94eW9iamVjdDsKKyAgICBQeU9iamVjdCAqbWFwcGluZzsKK30gbWFwcGluZ3Byb3h5b2JqZWN0OwogCiBzdGF0aWMgUHlfc3NpemVfdAotcHJveHlfbGVuKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9sZW4obWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfU2l6ZShwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5T2JqZWN0X1NpemUocHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfZ2V0aXRlbShwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICprZXkpCittYXBwaW5ncHJveHlfZ2V0aXRlbShtYXBwaW5ncHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQogewotICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVtKHBwLT5kaWN0LCBrZXkpOworICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVtKHBwLT5tYXBwaW5nLCBrZXkpOwogfQogCi1zdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBwcm94eV9hc19tYXBwaW5nID0gewotICAgIChsZW5mdW5jKXByb3h5X2xlbiwgICAgICAgICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCi0gICAgKGJpbmFyeWZ1bmMpcHJveHlfZ2V0aXRlbSwgICAgICAgICAgICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KK3N0YXRpYyBQeU1hcHBpbmdNZXRob2RzIG1hcHBpbmdwcm94eV9hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKW1hcHBpbmdwcm94eV9sZW4sICAgICAgICAgICAgICAgICAgLyogbXBfbGVuZ3RoICovCisgICAgKGJpbmFyeWZ1bmMpbWFwcGluZ3Byb3h5X2dldGl0ZW0sICAgICAgICAgICAvKiBtcF9zdWJzY3JpcHQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1wX2Fzc19zdWJzY3JpcHQgKi8KIH07CiAKIHN0YXRpYyBpbnQKLXByb3h5X2NvbnRhaW5zKHByb3h5b2JqZWN0ICpwcCwgUHlPYmplY3QgKmtleSkKK21hcHBpbmdwcm94eV9jb250YWlucyhtYXBwaW5ncHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqa2V5KQogewotICAgIHJldHVybiBQeURpY3RfQ29udGFpbnMocHAtPmRpY3QsIGtleSk7CisgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KHBwLT5tYXBwaW5nKSkKKyAgICAgICAgcmV0dXJuIFB5RGljdF9Db250YWlucyhwcC0+bWFwcGluZywga2V5KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeVNlcXVlbmNlX0NvbnRhaW5zKHBwLT5tYXBwaW5nLCBrZXkpOwogfQogCi1zdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgcHJveHlfYXNfc2VxdWVuY2UgPSB7CitzdGF0aWMgUHlTZXF1ZW5jZU1ldGhvZHMgbWFwcGluZ3Byb3h5X2FzX3NlcXVlbmNlID0gewogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9jb25jYXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX3JlcGVhdCAqLwpAQCAtNzMyLDE0NyArNzgxLDE5OSBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3Ffc2xpY2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2Fzc19pdGVtICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9hc3Nfc2xpY2UgKi8KLSAgICAob2Jqb2JqcHJvYylwcm94eV9jb250YWlucywgICAgICAgICAgICAgICAgIC8qIHNxX2NvbnRhaW5zICovCisgICAgKG9iam9ianByb2MpbWFwcGluZ3Byb3h5X2NvbnRhaW5zLCAgICAgICAgICAgICAgICAgLyogc3FfY29udGFpbnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2lucGxhY2VfY29uY2F0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9pbnBsYWNlX3JlcGVhdCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXByb3h5X2dldChwcm94eW9iamVjdCAqcHAsIFB5T2JqZWN0ICphcmdzKQorbWFwcGluZ3Byb3h5X2dldChtYXBwaW5ncHJveHlvYmplY3QgKnBwLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqa2V5LCAqZGVmID0gUHlfTm9uZTsKKyAgICBfUHlfSURFTlRJRklFUihnZXQpOwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZ2V0IiwgMSwgMiwgJmtleSwgJmRlZikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsTWV0aG9kKHBwLT5kaWN0LCAiZ2V0IiwgIihPTykiLCBrZXksIGRlZik7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2dldCwgIihPTykiLCBrZXksIGRlZik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9rZXlzKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9rZXlzKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJrZXlzIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoa2V5cyk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2tleXMsIE5VTEwpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfdmFsdWVzKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV92YWx1ZXMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgInZhbHVlcyIsIE5VTEwpOworICAgIF9QeV9JREVOVElGSUVSKHZhbHVlcyk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX3ZhbHVlcywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9pdGVtcyhwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfaXRlbXMobWFwcGluZ3Byb3h5b2JqZWN0ICpwcCkKIHsKLSAgICByZXR1cm4gUHlPYmplY3RfQ2FsbE1ldGhvZChwcC0+ZGljdCwgIml0ZW1zIiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoaXRlbXMpOworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHBwLT5tYXBwaW5nLCAmUHlJZF9pdGVtcywgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9jb3B5KHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9jb3B5KG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHAtPmRpY3QsICJjb3B5IiwgTlVMTCk7CisgICAgX1B5X0lERU5USUZJRVIoY29weSk7CisgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHAtPm1hcHBpbmcsICZQeUlkX2NvcHksIE5VTEwpOwogfQogCi1zdGF0aWMgUHlNZXRob2REZWYgcHJveHlfbWV0aG9kc1tdID0gewotICAgIHsiZ2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2dldCwgICAgICAgIE1FVEhfVkFSQVJHUywKKy8qIFdBUk5JTkc6IG1hcHBpbmdwcm94eSBtZXRob2RzIG11c3Qgbm90IGdpdmUgYWNjZXNzCisgICAgICAgICAgICB0byB0aGUgdW5kZXJseWluZyBtYXBwaW5nICovCisKK3N0YXRpYyBQeU1ldGhvZERlZiBtYXBwaW5ncHJveHlfbWV0aG9kc1tdID0geworICAgIHsiZ2V0IiwgICAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9nZXQsICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5nZXQoa1ssZF0pIC0+IERba10gaWYgayBpbiBELCBlbHNlIGQuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgZCBkZWZhdWx0cyB0byBOb25lLiIpfSwKLSAgICB7ImtleXMiLCAgICAgIChQeUNGdW5jdGlvbilwcm94eV9rZXlzLCAgICAgICBNRVRIX05PQVJHUywKKyAgICAgICAgICAgICAgICIgIGQgZGVmYXVsdHMgdG8gTm9uZS4iKX0sCisgICAgeyJrZXlzIiwgICAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X2tleXMsICAgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQua2V5cygpIC0+IGxpc3Qgb2YgRCdzIGtleXMiKX0sCi0gICAgeyJ2YWx1ZXMiLCAgICAoUHlDRnVuY3Rpb24pcHJveHlfdmFsdWVzLCAgICAgTUVUSF9OT0FSR1MsCisgICAgeyJ2YWx1ZXMiLCAgICAoUHlDRnVuY3Rpb24pbWFwcGluZ3Byb3h5X3ZhbHVlcywgICAgIE1FVEhfTk9BUkdTLAogICAgICBQeURvY19TVFIoIkQudmFsdWVzKCkgLT4gbGlzdCBvZiBEJ3MgdmFsdWVzIil9LAotICAgIHsiaXRlbXMiLCAgICAgKFB5Q0Z1bmN0aW9uKXByb3h5X2l0ZW1zLCAgICAgIE1FVEhfTk9BUkdTLAorICAgIHsiaXRlbXMiLCAgICAgKFB5Q0Z1bmN0aW9uKW1hcHBpbmdwcm94eV9pdGVtcywgICAgICBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJELml0ZW1zKCkgLT4gbGlzdCBvZiBEJ3MgKGtleSwgdmFsdWUpIHBhaXJzLCBhcyAyLXR1cGxlcyIpfSwKLSAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbilwcm94eV9jb3B5LCAgICAgICBNRVRIX05PQVJHUywKKyAgICB7ImNvcHkiLCAgICAgIChQeUNGdW5jdGlvbiltYXBwaW5ncHJveHlfY29weSwgICAgICAgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiRC5jb3B5KCkgLT4gYSBzaGFsbG93IGNvcHkgb2YgRCIpfSwKICAgICB7MH0KIH07CiAKIHN0YXRpYyB2b2lkCi1wcm94eV9kZWFsbG9jKHByb3h5b2JqZWN0ICpwcCkKK21hcHBpbmdwcm94eV9kZWFsbG9jKG1hcHBpbmdwcm94eW9iamVjdCAqcHApCiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0socHApOwotICAgIFB5X0RFQ1JFRihwcC0+ZGljdCk7CisgICAgUHlfREVDUkVGKHBwLT5tYXBwaW5nKTsKICAgICBQeU9iamVjdF9HQ19EZWwocHApOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfZ2V0aXRlcihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfZ2V0aXRlcihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9HZXRJdGVyKHBwLT5kaWN0KTsKKyAgICByZXR1cm4gUHlPYmplY3RfR2V0SXRlcihwcC0+bWFwcGluZyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9zdHIocHJveHlvYmplY3QgKnBwKQorbWFwcGluZ3Byb3h5X3N0cihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeU9iamVjdF9TdHIocHAtPmRpY3QpOworICAgIHJldHVybiBQeU9iamVjdF9TdHIocHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcHJveHlfcmVwcihwcm94eW9iamVjdCAqcHApCittYXBwaW5ncHJveHlfcmVwcihtYXBwaW5ncHJveHlvYmplY3QgKnBwKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZGljdF9wcm94eSglUikiLCBwcC0+ZGljdCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJtYXBwaW5ncHJveHkoJVIpIiwgcHAtPm1hcHBpbmcpOwogfQogCiBzdGF0aWMgaW50Ci1wcm94eV90cmF2ZXJzZShQeU9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCittYXBwaW5ncHJveHlfdHJhdmVyc2UoUHlPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIHByb3h5b2JqZWN0ICpwcCA9IChwcm94eW9iamVjdCAqKXNlbGY7Ci0gICAgUHlfVklTSVQocHAtPmRpY3QpOworICAgIG1hcHBpbmdwcm94eW9iamVjdCAqcHAgPSAobWFwcGluZ3Byb3h5b2JqZWN0ICopc2VsZjsKKyAgICBQeV9WSVNJVChwcC0+bWFwcGluZyk7CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1wcm94eV9yaWNoY29tcGFyZShwcm94eW9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKK21hcHBpbmdwcm94eV9yaWNoY29tcGFyZShtYXBwaW5ncHJveHlvYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCiB7Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JpY2hDb21wYXJlKHYtPmRpY3QsIHcsIG9wKTsKKyAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmUodi0+bWFwcGluZywgdywgb3ApOworfQorCitzdGF0aWMgaW50CittYXBwaW5ncHJveHlfY2hlY2tfbWFwcGluZyhQeU9iamVjdCAqbWFwcGluZykKK3sKKyAgICBpZiAoIVB5TWFwcGluZ19DaGVjayhtYXBwaW5nKQorICAgICAgICB8fCBQeUxpc3RfQ2hlY2sobWFwcGluZykKKyAgICAgICAgfHwgUHlUdXBsZV9DaGVjayhtYXBwaW5nKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAibWFwcGluZ3Byb3h5KCkgYXJndW1lbnQgbXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobWFwcGluZyktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QqCittYXBwaW5ncHJveHlfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibWFwcGluZyIsIE5VTEx9OworICAgIFB5T2JqZWN0ICptYXBwaW5nOworICAgIG1hcHBpbmdwcm94eW9iamVjdCAqbWFwcGluZ3Byb3h5OworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86bWFwcGluZ3Byb3h5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZtYXBwaW5nKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWFwcGluZ3Byb3h5X2NoZWNrX21hcHBpbmcobWFwcGluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWFwcGluZ3Byb3h5ID0gUHlPYmplY3RfR0NfTmV3KG1hcHBpbmdwcm94eW9iamVjdCwgJlB5RGljdFByb3h5X1R5cGUpOworICAgIGlmIChtYXBwaW5ncHJveHkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfSU5DUkVGKG1hcHBpbmcpOworICAgIG1hcHBpbmdwcm94eS0+bWFwcGluZyA9IG1hcHBpbmc7CisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1hcHBpbmdwcm94eSk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKW1hcHBpbmdwcm94eTsKIH0KIAogUHlUeXBlT2JqZWN0IFB5RGljdFByb3h5X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAiZGljdF9wcm94eSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YocHJveHlvYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgICJtYXBwaW5ncHJveHkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihtYXBwaW5ncHJveHlvYmplY3QpLCAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwogICAgIC8qIG1ldGhvZHMgKi8KLSAgICAoZGVzdHJ1Y3Rvcilwcm94eV9kZWFsbG9jLCAgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAoZGVzdHJ1Y3RvciltYXBwaW5ncHJveHlfZGVhbGxvYywgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXNlcnZlZCAqLwotICAgIChyZXByZnVuYylwcm94eV9yZXByLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIChyZXByZnVuYyltYXBwaW5ncHJveHlfcmVwciwgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCi0gICAgJnByb3h5X2FzX3NlcXVlbmNlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLwotICAgICZwcm94eV9hc19tYXBwaW5nLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgICZtYXBwaW5ncHJveHlfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAmbWFwcGluZ3Byb3h5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KLSAgICAocmVwcmZ1bmMpcHJveHlfc3RyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIChyZXByZnVuYyltYXBwaW5ncHJveHlfc3RyLCAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIHByb3h5X3RyYXZlcnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICBtYXBwaW5ncHJveHlfdHJhdmVyc2UsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIChyaWNoY21wZnVuYylwcm94eV9yaWNoY29tcGFyZSwgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAocmljaGNtcGZ1bmMpbWFwcGluZ3Byb3h5X3JpY2hjb21wYXJlLCAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIChnZXRpdGVyZnVuYylwcm94eV9nZXRpdGVyLCAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIChnZXRpdGVyZnVuYyltYXBwaW5ncHJveHlfZ2V0aXRlciwgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICBwcm94eV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtYXBwaW5ncHJveHlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgbWFwcGluZ3Byb3h5X25ldywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0ICoKLVB5RGljdFByb3h5X05ldyhQeU9iamVjdCAqZGljdCkKK1B5RGljdFByb3h5X05ldyhQeU9iamVjdCAqbWFwcGluZykKIHsKLSAgICBwcm94eW9iamVjdCAqcHA7CisgICAgbWFwcGluZ3Byb3h5b2JqZWN0ICpwcDsKIAotICAgIHBwID0gUHlPYmplY3RfR0NfTmV3KHByb3h5b2JqZWN0LCAmUHlEaWN0UHJveHlfVHlwZSk7CisgICAgaWYgKG1hcHBpbmdwcm94eV9jaGVja19tYXBwaW5nKG1hcHBpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHBwID0gUHlPYmplY3RfR0NfTmV3KG1hcHBpbmdwcm94eW9iamVjdCwgJlB5RGljdFByb3h5X1R5cGUpOwogICAgIGlmIChwcCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihkaWN0KTsKLSAgICAgICAgcHAtPmRpY3QgPSBkaWN0OworICAgICAgICBQeV9JTkNSRUYobWFwcGluZyk7CisgICAgICAgIHBwLT5tYXBwaW5nID0gbWFwcGluZzsKICAgICAgICAgX1B5T2JqZWN0X0dDX1RSQUNLKHBwKTsKICAgICB9CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXBwOwpAQCAtMTAyMCw5ICsxMTIxLDE2IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgord3JhcHBlcl9xdWFsbmFtZSh3cmFwcGVyb2JqZWN0ICp3cCkKK3sKKyAgICByZXR1cm4gZGVzY3JfZ2V0X3F1YWxuYW1lKChQeURlc2NyT2JqZWN0ICopd3AtPmRlc2NyKTsKK30KKwogc3RhdGljIFB5R2V0U2V0RGVmIHdyYXBwZXJfZ2V0c2V0c1tdID0gewogICAgIHsiX19vYmpjbGFzc19fIiwgKGdldHRlcil3cmFwcGVyX29iamNsYXNzfSwKICAgICB7Il9fbmFtZV9fIiwgKGdldHRlcil3cmFwcGVyX25hbWV9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlcil3cmFwcGVyX3F1YWxuYW1lfSwKICAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXdyYXBwZXJfZG9jfSwKICAgICB7MH0KIH07CkBAIC0xMzMyLDcgKzE0NDAsOCBAQAogCiAgICAgLyogaWYgbm8gZG9jc3RyaW5nIGdpdmVuIGFuZCB0aGUgZ2V0dGVyIGhhcyBvbmUsIHVzZSB0aGF0IG9uZSAqLwogICAgIGlmICgoZG9jID09IE5VTEwgfHwgZG9jID09IFB5X05vbmUpICYmIGdldCAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpnZXRfZG9jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhnZXQsICJfX2RvY19fIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZG9jX18pOworICAgICAgICBQeU9iamVjdCAqZ2V0X2RvYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZ2V0LCAmUHlJZF9fX2RvY19fKTsKICAgICAgICAgaWYgKGdldF9kb2MpIHsKICAgICAgICAgICAgIGlmIChQeV9UWVBFKHNlbGYpID09ICZQeVByb3BlcnR5X1R5cGUpIHsKICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHByb3AtPnByb3BfZG9jKTsKQEAgLTEzNDMsNyArMTQ1Miw3IEBACiAgICAgICAgICAgICAgICAgaW4gZGljdCBvZiB0aGUgc3ViY2xhc3MgaW5zdGFuY2UgaW5zdGVhZCwKICAgICAgICAgICAgICAgICBvdGhlcndpc2UgaXQgZ2V0cyBzaGFkb3dlZCBieSBfX2RvY19fIGluIHRoZQogICAgICAgICAgICAgICAgIGNsYXNzJ3MgZGljdC4gKi8KLSAgICAgICAgICAgICAgICBpbnQgZXJyID0gUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiX19kb2NfXyIsIGdldF9kb2MpOworICAgICAgICAgICAgICAgIGludCBlcnIgPSBfUHlPYmplY3RfU2V0QXR0cklkKHNlbGYsICZQeUlkX19fZG9jX18sIGdldF9kb2MpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihnZXRfZG9jKTsKICAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTM2MSw2ICsxNDcwLDQzIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitwcm9wZXJ0eV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18ocHJvcGVydHlvYmplY3QgKnByb3AsIHZvaWQgKmNsb3N1cmUpCit7CisgICAgaW50IHJlcyA9IF9QeU9iamVjdF9Jc0Fic3RyYWN0KHByb3AtPnByb3BfZ2V0KTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorCisgICAgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QocHJvcC0+cHJvcF9zZXQpOworICAgIGlmIChyZXMgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHJlcykgeworICAgICAgICBQeV9SRVRVUk5fVFJVRTsKKyAgICB9CisKKyAgICByZXMgPSBfUHlPYmplY3RfSXNBYnN0cmFjdChwcm9wLT5wcm9wX2RlbCk7CisgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAocmVzKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBQeV9SRVRVUk5fRkFMU0U7Cit9CisKK3N0YXRpYyBQeUdldFNldERlZiBwcm9wZXJ0eV9nZXRzZXRsaXN0W10gPSB7CisgICAgeyJfX2lzYWJzdHJhY3RtZXRob2RfXyIsCisgICAgIChnZXR0ZXIpcHJvcGVydHlfZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fLCBOVUxMLAorICAgICBOVUxMLAorICAgICBOVUxMfSwKKyAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KK307CisKIFB5RG9jX1NUUlZBUihwcm9wZXJ0eV9kb2MsCiAicHJvcGVydHkoZmdldD1Ob25lLCBmc2V0PU5vbmUsIGZkZWw9Tm9uZSwgZG9jPU5vbmUpIC0+IHByb3BlcnR5IGF0dHJpYnV0ZVxuIgogIlxuIgpAQCAtMTQyNiw3ICsxNTcyLDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgcHJvcGVydHlfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgcHJvcGVydHlfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBwcm9wZXJ0eV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIHByb3BlcnR5X2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3Rub3Rlcy50eHQgYi9PYmplY3RzL2RpY3Rub3Rlcy50eHQKaW5kZXggZDNhYTc3NC4uZjg5NzIwYyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0bm90ZXMudHh0CisrKyBiL09iamVjdHMvZGljdG5vdGVzLnR4dApAQCAtMSw3ICsxLDYgQEAKLU5PVEVTIE9OIE9QVElNSVpJTkcgRElDVElPTkFSSUVTCitOT1RFUyBPTiBESUNUSU9OQVJJRVMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLQogUHJpbmNpcGFsIFVzZSBDYXNlcyBmb3IgRGljdGlvbmFyaWVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjEsNyArMjAsNyBAQAogCiBCdWlsdGlucwogICAgIEZyZXF1ZW50IHJlYWRzLiAgQWxtb3N0IG5ldmVyIHdyaXR0ZW4uCi0gICAgU2l6ZSAxMjYgaW50ZXJuZWQgc3RyaW5ncyAoYXMgb2YgUHkyLjNiMSkuCisgICAgQWJvdXQgMTUwIGludGVybmVkIHN0cmluZ3MgKGFzIG9mIFB5My4zKS4KICAgICBBIGZldyBrZXlzIGFyZSBhY2Nlc3NlZCBtdWNoIG1vcmUgZnJlcXVlbnRseSB0aGFuIG90aGVycy4KIAogVW5pcXVpZmljYXRpb24KQEAgLTU5LDU1ICs1OCwyMCBAQAogICAgIENoYXJhY3Rlcml6ZWQgYnkgZGVsZXRpb25zIGludGVyc3BlcnNlZCB3aXRoIGFkZHMgYW5kIHJlcGxhY2VtZW50cy4KICAgICBQZXJmb3JtYW5jZSBiZW5lZml0cyBncmVhdGx5IGZyb20gdGhlIHJlLXVzZSBvZiBkdW1teSBlbnRyaWVzLgogCitEYXRhIExheW91dAorLS0tLS0tLS0tLS0KIAotRGF0YSBMYXlvdXQgKGFzc3VtaW5nIGEgMzItYml0IGJveCB3aXRoIDY0IGJ5dGVzIHBlciBjYWNoZSBsaW5lKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TbWFsbGRpY3RzICg4IGVudHJpZXMpIGFyZSBhdHRhY2hlZCB0byB0aGUgZGljdG9iamVjdCBzdHJ1Y3R1cmUKLWFuZCB0aGUgd2hvbGUgZ3JvdXAgbmVhcmx5IGZpbGxzIHR3byBjb25zZWN1dGl2ZSBjYWNoZSBsaW5lcy4KLQotTGFyZ2VyIGRpY3RzIHVzZSB0aGUgZmlyc3QgaGFsZiBvZiB0aGUgZGljdG9iamVjdCBzdHJ1Y3R1cmUgKG9uZSBjYWNoZQotbGluZSkgYW5kIGEgc2VwYXJhdGUsIGNvbnRpbnVvdXMgYmxvY2sgb2YgZW50cmllcyAoYXQgMTIgYnl0ZXMgZWFjaAotZm9yIGEgdG90YWwgb2YgNS4zMzMgZW50cmllcyBwZXIgY2FjaGUgbGluZSkuCitEaWN0aW9uYXJpZXMgYXJlIGNvbXBvc2VkIG9mIDMgY29tcG9uZW50czoKK1RoZSBkaWN0b2JqZWN0IHN0cnVjdCBpdHNlbGYKK0EgZGljdC1rZXlzIG9iamVjdCAoa2V5cyAmIGhhc2hlcykKK0EgdmFsdWVzIGFycmF5CiAKIAogVHVuYWJsZSBEaWN0aW9uYXJ5IFBhcmFtZXRlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLSogUHlEaWN0X01JTlNJWkUuICBDdXJyZW50bHkgc2V0IHRvIDguCi0gICAgTXVzdCBiZSBhIHBvd2VyIG9mIHR3by4gIE5ldyBkaWN0cyBoYXZlIHRvIHplcm8tb3V0IGV2ZXJ5IGNlbGwuCi0gICAgRWFjaCBhZGRpdGlvbmFsIDggY29uc3VtZXMgMS41IGNhY2hlIGxpbmVzLiAgSW5jcmVhc2luZyBpbXByb3ZlcwotICAgIHRoZSBzcGFyc2VuZXNzIG9mIHNtYWxsIGRpY3Rpb25hcmllcyBidXQgY29zdHMgdGltZSB0byByZWFkIGluCi0gICAgdGhlIGFkZGl0aW9uYWwgY2FjaGUgbGluZXMgaWYgdGhleSBhcmUgbm90IGFscmVhZHkgaW4gY2FjaGUuCi0gICAgVGhhdCBjYXNlIGlzIGNvbW1vbiB3aGVuIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQuCi0KLSogTWF4aW11bSBkaWN0aW9uYXJ5IGxvYWQgaW4gUHlEaWN0X1NldEl0ZW0uICBDdXJyZW50bHkgc2V0IHRvIDIvMy4KLSAgICBJbmNyZWFzaW5nIHRoaXMgcmF0aW8gbWFrZXMgZGljdGlvbmFyaWVzIG1vcmUgZGVuc2UgcmVzdWx0aW5nCi0gICAgaW4gbW9yZSBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzIGF0IHRoZQotICAgIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nIGVudHJpZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUKLSAgICBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KLQotICAgIFRoZSBsb2FkIHRlc3Qgb2NjdXJzIGluIGhpZ2hseSB0aW1lIHNlbnNpdGl2ZSBjb2RlLiAgRWZmb3J0cwotICAgIHRvIG1ha2UgdGhlIHRlc3QgbW9yZSBjb21wbGV4IChmb3IgZXhhbXBsZSwgdmFyeWluZyB0aGUgbG9hZAotICAgIGZvciBkaWZmZXJlbnQgc2l6ZXMpIGhhdmUgZGVncmFkZWQgcGVyZm9ybWFuY2UuCi0KLSogR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4gIEN1cnJlbnRseSBzZXQgdG8gKjIuCi0gICAgUmFpc2luZyB0aGlzIHRvICo0IHJlc3VsdHMgaW4gaGFsZiB0aGUgbnVtYmVyIG9mIHJlc2l6ZXMsCi0gICAgbGVzcyBlZmZvcnQgdG8gcmVzaXplLCBiZXR0ZXIgc3BhcnNlbmVzcyBmb3Igc29tZSAoYnV0IG5vdAotICAgIGFsbCBkaWN0IHNpemVzKSwgYW5kIHBvdGVudGlhbGx5IGRvdWJsZXMgbWVtb3J5IGNvbnN1bXB0aW9uCi0gICAgZGVwZW5kaW5nIG9uIHRoZSBzaXplIG9mIHRoZSBkaWN0aW9uYXJ5LiAgU2V0dGluZyB0byAqNAotICAgIGVsaW1pbmF0ZXMgZXZlcnkgb3RoZXIgcmVzaXplIHN0ZXAuCi0KLSogTWF4aW11bSBzcGFyc2VuZXNzIChtaW5pbXVtIGRpY3Rpb25hcnkgbG9hZCkuICBXaGF0IHBlcmNlbnRhZ2UKLSAgICBvZiBlbnRyaWVzIGNhbiBiZSB1bnVzZWQgYmVmb3JlIHRoZSBkaWN0aW9uYXJ5IHNocmlua3MgdG8KLSAgICBmcmVlIHVwIG1lbW9yeSBhbmQgc3BlZWQgdXAgaXRlcmF0aW9uPyAgKFRoZSBjdXJyZW50IENQeXRob24KLSAgICBjb2RlIGRvZXMgbm90IHJlcHJlc2VudCB0aGlzIHBhcmFtZXRlciBkaXJlY3RseS4pCi0KLSogU2hyaW5rYWdlIHJhdGUgdXBvbiBleGNlZWRpbmcgbWF4aW11bSBzcGFyc2VuZXNzLiAgVGhlIGN1cnJlbnQKLSAgICBDUHl0aG9uIGNvZGUgbmV2ZXIgZXZlbiBjaGVja3Mgc3BhcnNlbmVzcyB3aGVuIGRlbGV0aW5nIGEKLSAgICBrZXkuICBXaGVuIGEgbmV3IGtleSBpcyBhZGRlZCwgaXQgcmVzaXplcyBiYXNlZCBvbiB0aGUgbnVtYmVyCi0gICAgb2YgYWN0aXZlIGtleXMsIHNvIHRoYXQgdGhlIGFkZGl0aW9uIG1heSB0cmlnZ2VyIHNocmlua2FnZQotICAgIHJhdGhlciB0aGFuIGdyb3d0aC4KK1NlZSBjb21tZW50cyBmb3IgUHlEaWN0X01JTlNJWkVfU1BMSVQsIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVELAorVVNBQkxFX0ZSQUNUSU9OIGFuZCBHUk9XVEhfUkFURSBpbiBkaWN0b2JqZWN0LmMKIAogVHVuZS11cHMgc2hvdWxkIGJlIG1lYXN1cmVkIGFjcm9zcyBhIGJyb2FkIHJhbmdlIG9mIGFwcGxpY2F0aW9ucyBhbmQKIHVzZSBjYXNlcy4gIEEgY2hhbmdlIHRvIGFueSBwYXJhbWV0ZXIgd2lsbCBoZWxwIGluIHNvbWUgc2l0dWF0aW9ucyBhbmQKQEAgLTEyNiw4ICs5MCw4IEBACiBBbHNvLCBldmVyeSBkaWN0aW9uYXJ5IGl0ZXJhdGVzIGF0IGxlYXN0IHR3aWNlLCBvbmNlIGZvciB0aGUgbWVtc2V0KCkKIHdoZW4gaXQgaXMgY3JlYXRlZCBhbmQgb25jZSBieSBkZWFsbG9jKCkuCiAKLURpY3Rpb25hcnkgb3BlcmF0aW9ucyBpbnZvbHZpbmcgb25seSBhIHNpbmdsZSBrZXkgY2FuIGJlIE8oMSkgdW5sZXNzIAotcmVzaXppbmcgaXMgcG9zc2libGUuICBCeSBjaGVja2luZyBmb3IgYSByZXNpemUgb25seSB3aGVuIHRoZSAKK0RpY3Rpb25hcnkgb3BlcmF0aW9ucyBpbnZvbHZpbmcgb25seSBhIHNpbmdsZSBrZXkgY2FuIGJlIE8oMSkgdW5sZXNzCityZXNpemluZyBpcyBwb3NzaWJsZS4gIEJ5IGNoZWNraW5nIGZvciBhIHJlc2l6ZSBvbmx5IHdoZW4gdGhlCiBkaWN0aW9uYXJ5IGNhbiBncm93IChhbmQgbWF5ICpyZXF1aXJlKiByZXNpemluZyksIG90aGVyIG9wZXJhdGlvbnMKIHJlbWFpbiBPKDEpLCBhbmQgdGhlIG9kZHMgb2YgcmVzaXplIHRocmFzaGluZyBvciBtZW1vcnkgZnJhZ21lbnRhdGlvbgogYXJlIHJlZHVjZWQuIEluIHBhcnRpY3VsYXIsIGFuIGFsZ29yaXRobSB0aGF0IGVtcHRpZXMgYSBkaWN0aW9uYXJ5CkBAIC0xMzUsMTM2ICs5OSw1MSBAQAogbm90IGJlIG5lY2Vzc2FyeSBhdCBhbGwgYmVjYXVzZSB0aGUgZGljdGlvbmFyeSBpcyBldmVudHVhbGx5CiBkaXNjYXJkZWQgZW50aXJlbHkuCiAKK1RoZSBrZXkgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGlzIGltcGxlbWVudGF0aW9uIGFuZCBlYXJsaWVyIHZlcnNpb25zIGFyZToKKyAgICAxLiBUaGUgdGFibGUgY2FuIGJlIHNwbGl0IGludG8gdHdvIHBhcnRzLCB0aGUga2V5cyBhbmQgdGhlIHZhbHVlcy4KKworICAgIDIuIFRoZXJlIGlzIGFuIGFkZGl0aW9uYWwga2V5LXZhbHVlIGNvbWJpbmF0aW9uOiAoa2V5LCBOVUxMKS4KKyAgICAgICBVbmxpa2UgKDxkdW1teT4sIE5VTEwpIHdoaWNoIHJlcHJlc2VudHMgYSBkZWxldGVkIHZhbHVlLCAoa2V5LCBOVUxMKQorICAgICAgIHJlcHJlc2VudGVkIGEgeWV0IHRvIGJlIGluc2VydGVkIHZhbHVlLiBUaGlzIGNvbWJpbmF0aW9uIGNhbiBvbmx5IG9jY3VyCisgICAgICAgd2hlbiB0aGUgdGFibGUgaXMgc3BsaXQuCisKKyAgICAzLiBObyBzbWFsbCB0YWJsZSBlbWJlZGRlZCBpbiB0aGUgZGljdCwKKyAgICAgICBhcyB0aGlzIHdvdWxkIG1ha2Ugc2hhcmluZyBvZiBrZXktdGFibGVzIGltcG9zc2libGUuCisKKworVGhlc2UgY2hhbmdlcyBoYXZlIHRoZSBmb2xsb3dpbmcgY29uc2VxdWVuY2VzLgorICAgMS4gR2VuZXJhbCBkaWN0aW9uYXJpZXMgYXJlIHNsaWdodGx5IGxhcmdlci4KKworICAgMi4gQWxsIG9iamVjdCBkaWN0aW9uYXJpZXMgb2YgYSBzaW5nbGUgY2xhc3MgY2FuIHNoYXJlIGEgc2luZ2xlIGtleS10YWJsZSwKKyAgICAgIHNhdmluZyBhYm91dCA2MCUgbWVtb3J5IGZvciBzdWNoIGNhc2VzLgogCiBSZXN1bHRzIG9mIENhY2hlIExvY2FsaXR5IEV4cGVyaW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1XaGVuIGFuIGVudHJ5IGlzIHJldHJpZXZlZCBmcm9tIG1lbW9yeSwgNC4zMzMgYWRqYWNlbnQgZW50cmllcyBhcmUgYWxzbwotcmV0cmlldmVkIGludG8gYSBjYWNoZSBsaW5lLiAgU2luY2UgYWNjZXNzaW5nIGl0ZW1zIGluIGNhY2hlIGlzICptdWNoKgotY2hlYXBlciB0aGFuIGEgY2FjaGUgbWlzcywgYW4gZW50aWNpbmcgaWRlYSBpcyB0byBwcm9iZSB0aGUgYWRqYWNlbnQKLWVudHJpZXMgYXMgYSBmaXJzdCBzdGVwIGluIGNvbGxpc2lvbiByZXNvbHV0aW9uLiAgVW5mb3J0dW5hdGVseSwgdGhlCi1pbnRyb2R1Y3Rpb24gb2YgYW55IHJlZ3VsYXJpdHkgaW50byBjb2xsaXNpb24gc2VhcmNoZXMgcmVzdWx0cyBpbiBtb3JlCi1jb2xsaXNpb25zIHRoYW4gdGhlIGN1cnJlbnQgcmFuZG9tIGNoYWluaW5nIGFwcHJvYWNoLgorRXhwZXJpbWVudHMgb24gYW4gZWFybGllciBkZXNpZ24gb2YgZGljdGlvbmFyeSwgaW4gd2hpY2ggYWxsIHRhYmxlcyB3ZXJlCitjb21iaW5lZCwgc2hvd2VkIHRoZSBmb2xsb3dpbmc6CiAKLUV4cGxvaXRpbmcgY2FjaGUgbG9jYWxpdHkgYXQgdGhlIGV4cGVuc2Ugb2YgYWRkaXRpb25hbCBjb2xsaXNpb25zIGZhaWxzCi10byBwYXlvZmYgd2hlbiB0aGUgZW50cmllcyBhcmUgYWxyZWFkeSBsb2FkZWQgaW4gY2FjaGUgKHRoZSBleHBlbnNlCi1pcyBwYWlkIHdpdGggbm8gY29tcGVuc2F0aW5nIGJlbmVmaXQpLiAgVGhpcyBvY2N1cnMgaW4gc21hbGwgZGljdGlvbmFyaWVzCi13aGVyZSB0aGUgd2hvbGUgZGljdGlvbmFyeSBmaXRzIGludG8gYSBwYWlyIG9mIGNhY2hlIGxpbmVzLiAgSXQgYWxzbwotb2NjdXJzIGZyZXF1ZW50bHkgaW4gbGFyZ2UgZGljdGlvbmFyaWVzIHdoaWNoIGhhdmUgYSBjb21tb24gYWNjZXNzIHBhdHRlcm4KLXdoZXJlIHNvbWUga2V5cyBhcmUgYWNjZXNzZWQgbXVjaCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvdGhlcnMuICBUaGUKLW1vcmUgcG9wdWxhciBlbnRyaWVzICphbmQqIHRoZWlyIGNvbGxpc2lvbiBjaGFpbnMgdGVuZCB0byByZW1haW4gaW4gY2FjaGUuCisgIFdoZW4gYW4gZW50cnkgaXMgcmV0cmlldmVkIGZyb20gbWVtb3J5LCBzZXZlcmFsIGFkamFjZW50IGVudHJpZXMgYXJlIGFsc28KKyAgcmV0cmlldmVkIGludG8gYSBjYWNoZSBsaW5lLiAgU2luY2UgYWNjZXNzaW5nIGl0ZW1zIGluIGNhY2hlIGlzICptdWNoKgorICBjaGVhcGVyIHRoYW4gYSBjYWNoZSBtaXNzLCBhbiBlbnRpY2luZyBpZGVhIGlzIHRvIHByb2JlIHRoZSBhZGphY2VudAorICBlbnRyaWVzIGFzIGEgZmlyc3Qgc3RlcCBpbiBjb2xsaXNpb24gcmVzb2x1dGlvbi4gIFVuZm9ydHVuYXRlbHksIHRoZQorICBpbnRyb2R1Y3Rpb24gb2YgYW55IHJlZ3VsYXJpdHkgaW50byBjb2xsaXNpb24gc2VhcmNoZXMgcmVzdWx0cyBpbiBtb3JlCisgIGNvbGxpc2lvbnMgdGhhbiB0aGUgY3VycmVudCByYW5kb20gY2hhaW5pbmcgYXBwcm9hY2guCiAKLVRvIGV4cGxvaXQgY2FjaGUgbG9jYWxpdHksIGNoYW5nZSB0aGUgY29sbGlzaW9uIHJlc29sdXRpb24gc2VjdGlvbgotaW4gbG9va2RpY3QoKSBhbmQgbG9va2RpY3Rfc3RyaW5nKCkuICBTZXQgaV49MSBhdCB0aGUgdG9wIG9mIHRoZQotbG9vcCBhbmQgbW92ZSB0aGUgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSB0byBhbiB1bnJvbGxlZAotdmVyc2lvbiBvZiB0aGUgbG9vcC4KKyAgRXhwbG9pdGluZyBjYWNoZSBsb2NhbGl0eSBhdCB0aGUgZXhwZW5zZSBvZiBhZGRpdGlvbmFsIGNvbGxpc2lvbnMgZmFpbHMKKyAgdG8gcGF5b2ZmIHdoZW4gdGhlIGVudHJpZXMgYXJlIGFscmVhZHkgbG9hZGVkIGluIGNhY2hlICh0aGUgZXhwZW5zZQorICBpcyBwYWlkIHdpdGggbm8gY29tcGVuc2F0aW5nIGJlbmVmaXQpLiAgVGhpcyBvY2N1cnMgaW4gc21hbGwgZGljdGlvbmFyaWVzCisgIHdoZXJlIHRoZSB3aG9sZSBkaWN0aW9uYXJ5IGZpdHMgaW50byBhIHBhaXIgb2YgY2FjaGUgbGluZXMuICBJdCBhbHNvCisgIG9jY3VycyBmcmVxdWVudGx5IGluIGxhcmdlIGRpY3Rpb25hcmllcyB3aGljaCBoYXZlIGEgY29tbW9uIGFjY2VzcyBwYXR0ZXJuCisgIHdoZXJlIHNvbWUga2V5cyBhcmUgYWNjZXNzZWQgbXVjaCBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvdGhlcnMuICBUaGUKKyAgbW9yZSBwb3B1bGFyIGVudHJpZXMgKmFuZCogdGhlaXIgY29sbGlzaW9uIGNoYWlucyB0ZW5kIHRvIHJlbWFpbiBpbiBjYWNoZS4KIAotVGhpcyBvcHRpbWl6YXRpb24gc3RyYXRlZ3kgY2FuIGJlIGxldmVyYWdlZCBpbiBzZXZlcmFsIHdheXM6CisgIFRvIGV4cGxvaXQgY2FjaGUgbG9jYWxpdHksIGNoYW5nZSB0aGUgY29sbGlzaW9uIHJlc29sdXRpb24gc2VjdGlvbgorICBpbiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKS4gIFNldCBpXj0xIGF0IHRoZSB0b3Agb2YgdGhlCisgIGxvb3AgYW5kIG1vdmUgdGhlICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEgdG8gYW4gdW5yb2xsZWQKKyAgdmVyc2lvbiBvZiB0aGUgbG9vcC4KIAotKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBrZXB0IHNwYXJzZSAodGhyb3VnaCB0aGUgdHVuYWJsZSBwYXJhbWV0ZXJzKSwKLXRoZW4gdGhlIG9jY3VycmVuY2Ugb2YgYWRkaXRpb25hbCBjb2xsaXNpb25zIGlzIGxlc3NlbmVkLgotCi0qIElmIGxvb2tkaWN0KCkgYW5kIGxvb2tkaWN0X3N0cmluZygpIGFyZSBzcGVjaWFsaXplZCBmb3Igc21hbGwgZGljdHMKLWFuZCBmb3IgbGFyZ2VkaWN0cywgdGhlbiB0aGUgdmVyc2lvbnMgZm9yIGxhcmdlX2RpY3RzIGNhbiBiZSBnaXZlbgotYW4gYWx0ZXJuYXRlIHNlYXJjaCBzdHJhdGVneSB3aXRob3V0IGluY3JlYXNpbmcgY29sbGlzaW9ucyBpbiBzbWFsbCBkaWN0cwotd2hpY2ggYWxyZWFkeSBoYXZlIHRoZSBtYXhpbXVtIGJlbmVmaXQgb2YgY2FjaGUgbG9jYWxpdHkuCi0KLSogSWYgdGhlIHVzZSBjYXNlIGZvciBhIGRpY3Rpb25hcnkgaXMga25vd24gdG8gaGF2ZSBhIHJhbmRvbSBrZXkKLWFjY2VzcyBwYXR0ZXJuIChhcyBvcHBvc2VkIHRvIGEgbW9yZSBjb21tb24gcGF0dGVybiB3aXRoIGEgWmlwZidzIGxhdwotZGlzdHJpYnV0aW9uKSwgdGhlbiB0aGVyZSB3aWxsIGJlIG1vcmUgYmVuZWZpdCBmb3IgbGFyZ2UgZGljdGlvbmFyaWVzCi1iZWNhdXNlIGFueSBnaXZlbiBrZXkgaXMgbm8gbW9yZSBsaWtlbHkgdGhhbiBhbm90aGVyIHRvIGFscmVhZHkgYmUKLWluIGNhY2hlLgotCi0qIEluIHVzZSBjYXNlcyB3aXRoIHBhaXJlZCBhY2Nlc3NlcyB0byB0aGUgc2FtZSBrZXksIHRoZSBzZWNvbmQgYWNjZXNzCi1pcyBhbHdheXMgaW4gY2FjaGUgYW5kIGdldHMgbm8gYmVuZWZpdCBmcm9tIGVmZm9ydHMgdG8gZnVydGhlciBpbXByb3ZlCi1jYWNoZSBsb2NhbGl0eS4KLQotT3B0aW1pemluZyB0aGUgU2VhcmNoIG9mIFNtYWxsIERpY3Rpb25hcmllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1JZiBsb29rZGljdCgpIGFuZCBsb29rZGljdF9zdHJpbmcoKSBhcmUgc3BlY2lhbGl6ZWQgZm9yIHNtYWxsZXIgZGljdGlvbmFyaWVzLAotdGhlbiBhIGN1c3RvbSBzZWFyY2ggYXBwcm9hY2ggY2FuIGJlIGltcGxlbWVudGVkIHRoYXQgZXhwbG9pdHMgdGhlIHNtYWxsCi1zZWFyY2ggc3BhY2UgYW5kIGNhY2hlIGxvY2FsaXR5LgotCi0qIFRoZSBzaW1wbGVzdCBleGFtcGxlIGlzIGEgbGluZWFyIHNlYXJjaCBvZiBjb250aWd1b3VzIGVudHJpZXMuICBUaGlzIGlzCi0gIHNpbXBsZSB0byBpbXBsZW1lbnQsIGd1YXJhbnRlZWQgdG8gdGVybWluYXRlIHJhcGlkbHksIG5ldmVyIHNlYXJjaGVzCi0gIHRoZSBzYW1lIGVudHJ5IHR3aWNlLCBhbmQgcHJlY2x1ZGVzIHRoZSBuZWVkIHRvIGNoZWNrIGZvciBkdW1teSBlbnRyaWVzLgotCi0qIEEgbW9yZSBhZHZhbmNlZCBleGFtcGxlIGlzIGEgc2VsZi1vcmdhbml6aW5nIHNlYXJjaCBzbyB0aGF0IHRoZSBtb3N0Ci0gIGZyZXF1ZW50bHkgYWNjZXNzZWQgZW50cmllcyBnZXQgcHJvYmVkIGZpcnN0LiAgVGhlIG9yZ2FuaXphdGlvbgotICBhZGFwdHMgaWYgdGhlIGFjY2VzcyBwYXR0ZXJuIGNoYW5nZXMgb3ZlciB0aW1lLiAgVHJlYXBzIGFyZSBpZGVhbGx5Ci0gIHN1aXRlZCBmb3Igc2VsZi1vcmdhbml6YXRpb24gd2l0aCB0aGUgbW9zdCBjb21tb24gZW50cmllcyBhdCB0aGUKLSAgdG9wIG9mIHRoZSBoZWFwIGFuZCBhIHJhcGlkIGJpbmFyeSBzZWFyY2ggcGF0dGVybi4gIE1vc3QgcHJvYmVzIGFuZAotICByZXN1bHRzIGFyZSBhbGwgbG9jYXRlZCBhdCB0aGUgdG9wIG9mIHRoZSB0cmVlIGFsbG93aW5nIHRoZW0gYWxsIHRvCi0gIGJlIGxvY2F0ZWQgaW4gb25lIG9yIHR3byBjYWNoZSBsaW5lcy4KLQotKiBBbHNvLCBzbWFsbCBkaWN0aW9uYXJpZXMgbWF5IGJlIG1hZGUgbW9yZSBkZW5zZSwgcGVyaGFwcyBmaWxsaW5nIGFsbAotICBlaWdodCBjZWxscyB0byB0YWtlIHRoZSBtYXhpbXVtIGFkdmFudGFnZSBvZiB0d28gY2FjaGUgbGluZXMuCitGb3Igc3BsaXQgdGFibGVzLCB0aGUgYWJvdmUgd2lsbCBhcHBseSB0byB0aGUga2V5cywgYnV0IHRoZSB2YWx1ZSB3aWxsCithbHdheXMgYmUgaW4gYSBkaWZmZXJlbnQgY2FjaGUgbGluZSBmcm9tIHRoZSBrZXkuCiAKIAotU3RyYXRlZ3kgUGF0dGVybgotLS0tLS0tLS0tLS0tLS0tLQotCi1Db25zaWRlciBhbGxvd2luZyB0aGUgdXNlciB0byBzZXQgdGhlIHR1bmFibGUgcGFyYW1ldGVycyBvciB0byBzZWxlY3QgYQotcGFydGljdWxhciBzZWFyY2ggbWV0aG9kLiAgU2luY2Ugc29tZSBkaWN0aW9uYXJ5IHVzZSBjYXNlcyBoYXZlIGtub3duCi1zaXplcyBhbmQgYWNjZXNzIHBhdHRlcm5zLCB0aGUgdXNlciBtYXkgYmUgYWJsZSB0byBwcm92aWRlIHVzZWZ1bCBoaW50cy4KLQotMSkgRm9yIGV4YW1wbGUsIGlmIG1lbWJlcnNoaXAgdGVzdGluZyBvciBsb29rdXBzIGRvbWluYXRlIHJ1bnRpbWUgYW5kIG1lbW9yeQotICAgaXMgbm90IGF0IGEgcHJlbWl1bSwgdGhlIHVzZXIgbWF5IGJlbmVmaXQgZnJvbSBzZXR0aW5nIHRoZSBtYXhpbXVtIGxvYWQKLSAgIHJhdGlvIGF0IDUlIG9yIDEwJSBpbnN0ZWFkIG9mIHRoZSB1c3VhbCA2Ni43JS4gIFRoaXMgd2lsbCBzaGFycGx5Ci0gICBjdXJ0YWlsIHRoZSBudW1iZXIgb2YgY29sbGlzaW9ucyBidXQgd2lsbCBpbmNyZWFzZSBpdGVyYXRpb24gdGltZS4KLSAgIFRoZSBidWlsdGluIG5hbWVzcGFjZSBpcyBhIHByaW1lIGV4YW1wbGUgb2YgYSBkaWN0aW9uYXJ5IHRoYXQgY2FuCi0gICBiZW5lZml0IGZyb20gYmVpbmcgaGlnaGx5IHNwYXJzZS4KLQotMikgRGljdGlvbmFyeSBjcmVhdGlvbiB0aW1lIGNhbiBiZSBzaG9ydGVuZWQgaW4gY2FzZXMgd2hlcmUgdGhlIHVsdGltYXRlCi0gICBzaXplIG9mIHRoZSBkaWN0aW9uYXJ5IGlzIGtub3duIGluIGFkdmFuY2UuICBUaGUgZGljdGlvbmFyeSBjYW4gYmUKLSAgIHByZS1zaXplZCBzbyB0aGF0IG5vIHJlc2l6ZSBvcGVyYXRpb25zIGFyZSByZXF1aXJlZCBkdXJpbmcgY3JlYXRpb24uCi0gICBOb3Qgb25seSBkb2VzIHRoaXMgc2F2ZSByZXNpemVzLCBidXQgdGhlIGtleSBpbnNlcnRpb24gd2lsbCBnbwotICAgbW9yZSBxdWlja2x5IGJlY2F1c2UgdGhlIGZpcnN0IGhhbGYgb2YgdGhlIGtleXMgd2lsbCBiZSBpbnNlcnRlZCBpbnRvCi0gICBhIG1vcmUgc3BhcnNlIGVudmlyb25tZW50IHRoYW4gYmVmb3JlLiAgVGhlIHByZWNvbmRpdGlvbnMgZm9yIHRoaXMKLSAgIHN0cmF0ZWd5IGFyaXNlIHdoZW5ldmVyIGEgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGZyb20gYSBrZXkgb3IgaXRlbQotICAgc2VxdWVuY2UgYW5kIHRoZSBudW1iZXIgb2YgKnVuaXF1ZSoga2V5cyBpcyBrbm93bi4KLQotMykgSWYgdGhlIGtleSBzcGFjZSBpcyBsYXJnZSBhbmQgdGhlIGFjY2VzcyBwYXR0ZXJuIGlzIGtub3duIHRvIGJlIHJhbmRvbSwKLSAgIHRoZW4gc2VhcmNoIHN0cmF0ZWdpZXMgZXhwbG9pdGluZyBjYWNoZSBsb2NhbGl0eSBjYW4gYmUgZnJ1aXRmdWwuCi0gICBUaGUgcHJlY29uZGl0aW9ucyBmb3IgdGhpcyBzdHJhdGVneSBhcmlzZSBpbiBzaW11bGF0aW9ucyBhbmQKLSAgIG51bWVyaWNhbCBhbmFseXNpcy4KLQotNCkgSWYgdGhlIGtleXMgYXJlIGZpeGVkIGFuZCB0aGUgYWNjZXNzIHBhdHRlcm4gc3Ryb25nbHkgZmF2b3JzIHNvbWUgb2YKLSAgIHRoZSBrZXlzLCB0aGVuIHRoZSBlbnRyaWVzIGNhbiBiZSBzdG9yZWQgY29udGlndW91c2x5IGFuZCBhY2Nlc3NlZAotICAgd2l0aCBhIGxpbmVhciBzZWFyY2ggb3IgdHJlYXAuICBUaGlzIGV4cGxvaXRzIGtub3dsZWRnZSBvZiB0aGUgZGF0YSwKLSAgIGNhY2hlIGxvY2FsaXR5LCBhbmQgYSBzaW1wbGlmaWVkIHNlYXJjaCByb3V0aW5lLiAgSXQgYWxzbyBlbGltaW5hdGVzCi0gICB0aGUgbmVlZCB0byB0ZXN0IGZvciBkdW1teSBlbnRyaWVzIG9uIGVhY2ggcHJvYmUuICBUaGUgcHJlY29uZGl0aW9ucwotICAgZm9yIHRoaXMgc3RyYXRlZ3kgYXJpc2UgaW4gc3ltYm9sIHRhYmxlcyBhbmQgaW4gdGhlIGJ1aWx0aW4gZGljdGlvbmFyeS4KLQotCi1SZWFkb25seSBEaWN0aW9uYXJpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotU29tZSBkaWN0aW9uYXJ5IHVzZSBjYXNlcyBwYXNzIHRocm91Z2ggYSBidWlsZCBzdGFnZSBhbmQgdGhlbiBtb3ZlIHRvIGEKLW1vcmUgaGVhdmlseSBleGVyY2lzZWQgbG9va3VwIHN0YWdlIHdpdGggbm8gZnVydGhlciBjaGFuZ2VzIHRvIHRoZQotZGljdGlvbmFyeS4KLQotQW4gaWRlYSB0aGF0IGVtZXJnZWQgb24gcHl0aG9uLWRldiBpcyB0byBiZSBhYmxlIHRvIGNvbnZlcnQgYSBkaWN0aW9uYXJ5Ci10byBhIHJlYWQtb25seSBzdGF0ZS4gIFRoaXMgY2FuIGhlbHAgcHJldmVudCBwcm9ncmFtbWluZyBlcnJvcnMgYW5kIGFsc28KLXByb3ZpZGUga25vd2xlZGdlIHRoYXQgY2FuIGJlIGV4cGxvaXRlZCBmb3IgbG9va3VwIG9wdGltaXphdGlvbi4KLQotVGhlIGRpY3Rpb25hcnkgY2FuIGJlIGltbWVkaWF0ZWx5IHJlYnVpbHQgKGVsaW1pbmF0aW5nIGR1bW15IGVudHJpZXMpLAotcmVzaXplZCAodG8gYW4gYXBwcm9wcmlhdGUgbGV2ZWwgb2Ygc3BhcnNlbmVzcyksIGFuZCB0aGUga2V5cyBjYW4gYmUKLWpvc3RsZWQgKHRvIG1pbmltaXplIGNvbGxpc2lvbnMpLiAgVGhlIGxvb2tkaWN0KCkgcm91dGluZSBjYW4gdGhlbgotZWxpbWluYXRlIHRoZSB0ZXN0IGZvciBkdW1teSBlbnRyaWVzIChzYXZpbmcgYWJvdXQgMS80IG9mIHRoZSB0aW1lCi1zcGVudCBpbiB0aGUgY29sbGlzaW9uIHJlc29sdXRpb24gbG9vcCkuCi0KLUFuIGFkZGl0aW9uYWwgcG9zc2liaWxpdHkgaXMgdG8gaW5zZXJ0IGxpbmtzIGludG8gdGhlIGVtcHR5IHNwYWNlcwotc28gdGhhdCBkaWN0aW9uYXJ5IGl0ZXJhdGlvbiBjYW4gcHJvY2VlZCBpbiBsZW4oZCkgc3RlcHMgaW5zdGVhZCBvZgotKG1wLT5tYXNrICsgMSkgc3RlcHMuICBBbHRlcm5hdGl2ZWx5LCBhIHNlcGFyYXRlIHR1cGxlIG9mIGtleXMgY2FuIGJlCi1rZXB0IGp1c3QgZm9yIGl0ZXJhdGlvbi4KLQotCi1DYWNoaW5nIExvb2t1cHMKLS0tLS0tLS0tLS0tLS0tLQotVGhlIGlkZWEgaXMgdG8gZXhwbG9pdCBrZXkgYWNjZXNzIHBhdHRlcm5zIGJ5IGFudGljaXBhdGluZyBmdXR1cmUgbG9va3VwcwotYmFzZWQgb24gcHJldmlvdXMgbG9va3Vwcy4KLQotVGhlIHNpbXBsZXN0IGluY2FybmF0aW9uIGlzIHRvIHNhdmUgdGhlIG1vc3QgcmVjZW50bHkgYWNjZXNzZWQgZW50cnkuCi1UaGlzIGdpdmVzIG9wdGltYWwgcGVyZm9ybWFuY2UgZm9yIHVzZSBjYXNlcyB3aGVyZSBldmVyeSBnZXQgaXMgZm9sbG93ZWQKLWJ5IGEgc2V0IG9yIGRlbCB0byB0aGUgc2FtZSBrZXkuCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3RvYmplY3QuYyBiL09iamVjdHMvZGljdG9iamVjdC5jCmluZGV4IDI3ZGUxMGQuLmFlZjhkMTAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvZGljdG9iamVjdC5jCkBAIC03LDkgKzcsOTMgQEAKICAgIHR1bmluZyBkaWN0aW9uYXJpZXMsIGFuZCBzZXZlcmFsIGlkZWFzIGZvciBwb3NzaWJsZSBvcHRpbWl6YXRpb25zLgogKi8KIAorCisvKgorVGhlcmUgYXJlIGZvdXIga2luZHMgb2Ygc2xvdHMgaW4gdGhlIHRhYmxlOgorCisxLiBVbnVzZWQuICBtZV9rZXkgPT0gbWVfdmFsdWUgPT0gTlVMTAorICAgRG9lcyBub3QgaG9sZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIgbm93IGFuZCBuZXZlciBkaWQuICBVbnVzZWQgY2FuCisgICB0cmFuc2l0aW9uIHRvIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2gKKyAgIG1lX2tleSBpcyBOVUxMLCBhbmQgaXMgZWFjaCBzbG90J3MgaW5pdGlhbCBzdGF0ZS4KKworMi4gQWN0aXZlLiAgbWVfa2V5ICE9IE5VTEwgYW5kIG1lX2tleSAhPSBkdW1teSBhbmQgbWVfdmFsdWUgIT0gTlVMTAorICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCisgICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgorICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCisKKzMuIER1bW15LiAgbWVfa2V5ID09IGR1bW15IGFuZCBtZV92YWx1ZSA9PSBOVUxMCisgICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KKyAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KKyAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KKyAgIChjYW5ub3QgaGF2ZSBtZV9rZXkgc2V0IHRvIE5VTEwpLCBlbHNlIHRoZSBwcm9iZSBzZXF1ZW5jZSBpbiBjYXNlIG9mCisgICBjb2xsaXNpb24gd291bGQgaGF2ZSBubyB3YXkgdG8ga25vdyB0aGV5IHdlcmUgb25jZSBhY3RpdmUuCisKKzQuIFBlbmRpbmcuIE5vdCB5ZXQgaW5zZXJ0ZWQgb3IgZGVsZXRlZCBmcm9tIGEgc3BsaXQtdGFibGUuCisgICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMCisKK1RoZSBEaWN0T2JqZWN0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIGZvcm1zLgorRWl0aGVyOgorICBBIGNvbWJpbmVkIHRhYmxlOgorICAgIG1hX3ZhbHVlcyA9PSBOVUxMLCBka19yZWZjbnQgPT0gMS4KKyAgICBWYWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWVfdmFsdWUgZmllbGQgb2YgdGhlIFB5RGljdEtleXNPYmplY3QuCisgICAgU2xvdCBraW5kIDQgaXMgbm90IGFsbG93ZWQgaS5lLgorICAgICAgICBrZXkgIT0gTlVMTCwga2V5ICE9IGR1bW15IGFuZCB2YWx1ZSA9PSBOVUxMIGlzIGlsbGVnYWwuCitPcjoKKyAgQSBzcGxpdCB0YWJsZToKKyAgICBtYV92YWx1ZXMgIT0gTlVMTCwgZGtfcmVmY250ID49IDEKKyAgICBWYWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgbWFfdmFsdWVzIGFycmF5LgorICAgIE9ubHkgc3RyaW5nICh1bmljb2RlKSBrZXlzIGFyZSBhbGxvd2VkLCBubyA8ZHVtbXk+IGtleXMgYXJlIHByZXNlbnQuCisKK05vdGU6IC5wb3BpdGVtKCkgYWJ1c2VzIHRoZSBtZV9oYXNoIGZpZWxkIG9mIGFuIFVudXNlZCBvciBEdW1teSBzbG90IHRvCitob2xkIGEgc2VhcmNoIGZpbmdlci4gIFRoZSBtZV9oYXNoIGZpZWxkIG9mIFVudXNlZCBvciBEdW1teSBzbG90cyBoYXMgbm8KK21lYW5pbmcgb3RoZXJ3aXNlLiBBcyBhIGNvbnNlcXVlbmNlIG9mIHRoaXMgcG9waXRlbSBhbHdheXMgY29udmVydHMgdGhlIGRpY3QKK3RvIHRoZSBjb21iaW5lZC10YWJsZSBmb3JtLgorKi8KKworLyogUHlEaWN0X01JTlNJWkVfU1BMSVQgaXMgdGhlIG1pbmltdW0gc2l6ZSBvZiBhIHNwbGl0IGRpY3Rpb25hcnkuCisgKiBJdCBtdXN0IGJlIGEgcG93ZXIgb2YgMiwgYW5kIGF0IGxlYXN0IDQuCisgKiBSZXNpemluZyBvZiBzcGxpdCBkaWN0aW9uYXJpZXMgaXMgdmVyeSByYXJlLCBzbyB0aGUgc2F2aW5nIG1lbW9yeSBpcyBtb3JlCisgKiBpbXBvcnRhbnQgdGhhbiB0aGUgY29zdCBvZiByZXNpemluZy4KKyAqLworI2RlZmluZSBQeURpY3RfTUlOU0laRV9TUExJVCA0CisKKy8qIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIGlzIHRoZSBzdGFydGluZyBzaXplIGZvciBhbnkgbmV3LCBub24tc3BsaXQgZGljdC4KKyAqIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZSB0aGFuIDUgYWN0aXZlIGVudHJpZXM7IGV4cGVyaW1lbnRzIHN1Z2dlc3RlZAorICogdGhpcyBzdWZmaWNlcyBmb3IgdGhlIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsCisgKiBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgorICogTWFraW5nIHRoaXMgOCwgcmF0aGVyIHRoYW4gNCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmVzaXplcyBmb3IgbW9zdAorICogZGljdGlvbmFyaWVzLCB3aXRob3V0IGFueSBzaWduaWZpY2FudCBleHRyYSBtZW1vcnkgdXNlLgorICovCisjZGVmaW5lIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIDgKKwogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInN0cmluZ2xpYi9lcS5oIgogCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogQ2FjaGVkIGhhc2ggY29kZSBvZiBtZV9rZXkuICovCisgICAgUHlfaGFzaF90IG1lX2hhc2g7CisgICAgUHlPYmplY3QgKm1lX2tleTsKKyAgICBQeU9iamVjdCAqbWVfdmFsdWU7IC8qIFRoaXMgZmllbGQgaXMgb25seSBtZWFuaW5nZnVsIGZvciBjb21iaW5lZCB0YWJsZXMgKi8KK30gUHlEaWN0S2V5RW50cnk7CisKK3R5cGVkZWYgUHlEaWN0S2V5RW50cnkgKigqZGljdF9sb29rdXBfZnVuYykKKyhQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisKK3N0cnVjdCBfZGljdGtleXNvYmplY3QgeworICAgIFB5X3NzaXplX3QgZGtfcmVmY250OworICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKKyAgICBkaWN0X2xvb2t1cF9mdW5jIGRrX2xvb2t1cDsKKyAgICBQeV9zc2l6ZV90IGRrX3VzYWJsZTsKKyAgICBQeURpY3RLZXlFbnRyeSBka19lbnRyaWVzWzFdOworfTsKKworCisvKgorVG8gZW5zdXJlIHRoZSBsb29rdXAgYWxnb3JpdGhtIHRlcm1pbmF0ZXMsIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIFVudXNlZAorc2xvdCAoTlVMTCBrZXkpIGluIHRoZSB0YWJsZS4KK1RvIGF2b2lkIHNsb3dpbmcgZG93biBsb29rdXBzIG9uIGEgbmVhci1mdWxsIHRhYmxlLCB3ZSByZXNpemUgdGhlIHRhYmxlIHdoZW4KK2l0J3MgVVNBQkxFX0ZSQUNUSU9OIChjdXJyZW50bHkgdHdvLXRoaXJkcykgZnVsbC4KKyovCiAKIC8qIFNldCBhIGtleSBlcnJvciB3aXRoIHRoZSBzcGVjaWZpZWQgYXJndW1lbnQsIHdyYXBwaW5nIGl0IGluIGEKICAqIHR1cGxlIGF1dG9tYXRpY2FsbHkgc28gdGhhdCB0dXBsZSBrZXlzIGFyZSBub3QgdW5wYWNrZWQgYXMgdGhlCkBAIC0yNSwxMCArMTA5LDYgQEAKICAgICBQeV9ERUNSRUYodHVwKTsKIH0KIAotLyogRGVmaW5lIHRoaXMgb3V0IGlmIHlvdSBkb24ndCB3YW50IGNvbnZlcnNpb24gc3RhdGlzdGljcyBvbiBleGl0LiAqLwotI3VuZGVmIFNIT1dfQ09OVkVSU0lPTl9DT1VOVFMKLQotLyogU2VlIGxhcmdlIGNvbW1lbnQgYmxvY2sgYmVsb3cuICBUaGlzIG11c3QgYmUgPj0gMS4gKi8KICNkZWZpbmUgUEVSVFVSQl9TSElGVCA1CiAKIC8qCkBAIC0xMjYsOCArMjA2LDEzIEBACiAKICovCiAKLS8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcyAqLwotc3RhdGljIFB5T2JqZWN0ICpkdW1teSA9IE5VTEw7IC8qIEluaXRpYWxpemVkIGJ5IGZpcnN0IGNhbGwgdG8gbmV3UHlEaWN0T2JqZWN0KCkgKi8KKy8qIE9iamVjdCB1c2VkIGFzIGR1bW15IGtleSB0byBmaWxsIGRlbGV0ZWQgZW50cmllcworICogVGhpcyBjb3VsZCBiZSBhbnkgdW5pcXVlIG9iamVjdCwKKyAqIHVzZSBhIGN1c3RvbSB0eXBlIGluIG9yZGVyIHRvIG1pbmltaXNlIGNvdXBsaW5nLgorKi8KK3N0YXRpYyBQeU9iamVjdCBfZHVtbXlfc3RydWN0OworCisjZGVmaW5lIGR1bW15ICgmX2R1bW15X3N0cnVjdCkKIAogI2lmZGVmIFB5X1JFRl9ERUJVRwogUHlPYmplY3QgKgpAQCAtMTM4LDc3ICsyMjMsMTcgQEAKICNlbmRpZgogCiAvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLwotc3RhdGljIFB5RGljdEVudHJ5ICoKLWxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gpOworc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKmxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOworc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CiAKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi1zdGF0aWMgbG9uZyBjcmVhdGVkID0gMEw7Ci1zdGF0aWMgbG9uZyBjb252ZXJ0ZWQgPSAwTDsKLQotc3RhdGljIHZvaWQKLXNob3dfY291bnRzKHZvaWQpCi17Ci0gICAgZnByaW50ZihzdGRlcnIsICJjcmVhdGVkICVsZCBzdHJpbmcgZGljdHNcbiIsIGNyZWF0ZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiY29udmVydGVkICVsZCB0byBub3JtYWwgZGljdHNcbiIsIGNvbnZlcnRlZCk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlLjJmJSUgY29udmVyc2lvbiByYXRlXG4iLCAoMTAwLjAqY29udmVydGVkKS9jcmVhdGVkKTsKLX0KLSNlbmRpZgotCi0vKiBEZWJ1ZyBzdGF0aXN0aWMgdG8gY29tcGFyZSBhbGxvY2F0aW9ucyB3aXRoIHJldXNlIHRocm91Z2ggdGhlIGZyZWUgbGlzdCAqLwotI3VuZGVmIFNIT1dfQUxMT0NfQ09VTlQKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi1zdGF0aWMgc2l6ZV90IGNvdW50X2FsbG9jID0gMDsKLXN0YXRpYyBzaXplX3QgY291bnRfcmV1c2UgPSAwOwotCi1zdGF0aWMgdm9pZAotc2hvd19hbGxvYyh2b2lkKQotewotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdCBhbGxvY2F0aW9uczogJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwKLSAgICAgICAgY291bnRfYWxsb2MpOwotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdCByZXVzZSB0aHJvdWdoIGZyZWVsaXN0OiAlIiBQWV9GT1JNQVRfU0laRV9UCi0gICAgICAgICJkXG4iLCBjb3VudF9yZXVzZSk7Ci0gICAgZnByaW50ZihzdGRlcnIsICIlLjJmJSUgcmV1c2UgcmF0ZVxuXG4iLAotICAgICAgICAoMTAwLjAqY291bnRfcmV1c2UvKGNvdW50X2FsbG9jK2NvdW50X3JldXNlKSkpOwotfQotI2VuZGlmCi0KLS8qIERlYnVnIHN0YXRpc3RpYyB0byBjb3VudCBHQyB0cmFja2luZyBvZiBkaWN0cyAqLwotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLXN0YXRpYyBQeV9zc2l6ZV90IGNvdW50X3VudHJhY2tlZCA9IDA7Ci1zdGF0aWMgUHlfc3NpemVfdCBjb3VudF90cmFja2VkID0gMDsKLQotc3RhdGljIHZvaWQKLXNob3dfdHJhY2sodm9pZCkKLXsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkRpY3RzIGNyZWF0ZWQ6ICUiIFBZX0ZPUk1BVF9TSVpFX1QgImRcbiIsCi0gICAgICAgIGNvdW50X3RyYWNrZWQgKyBjb3VudF91bnRyYWNrZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiRGljdHMgdHJhY2tlZCBieSB0aGUgR0M6ICUiIFBZX0ZPUk1BVF9TSVpFX1QKLSAgICAgICAgImRcbiIsIGNvdW50X3RyYWNrZWQpOwotICAgIGZwcmludGYoc3RkZXJyLCAiJS4yZiUlIGRpY3QgdHJhY2tpbmcgcmF0ZVxuXG4iLAotICAgICAgICAoMTAwLjAqY291bnRfdHJhY2tlZC8oY291bnRfdW50cmFja2VkK2NvdW50X3RyYWNrZWQpKSk7Ci19Ci0jZW5kaWYKLQotCi0vKiBJbml0aWFsaXphdGlvbiBtYWNyb3MuCi0gICBUaGVyZSBhcmUgdHdvIHdheXMgdG8gY3JlYXRlIGEgZGljdDogIFB5RGljdF9OZXcoKSBpcyB0aGUgbWFpbiBDIEFQSQotICAgZnVuY3Rpb24sIGFuZCB0aGUgdHBfbmV3IHNsb3QgbWFwcyB0byBkaWN0X25ldygpLiAgSW4gdGhlIGxhdHRlciBjYXNlIHdlCi0gICBjYW4gc2F2ZSBhIGxpdHRsZSB0aW1lIG92ZXIgd2hhdCBQeURpY3RfTmV3IGRvZXMgYmVjYXVzZSBpdCdzIGd1YXJhbnRlZWQKLSAgIHRoYXQgdGhlIFB5RGljdE9iamVjdCBzdHJ1Y3QgaXMgYWxyZWFkeSB6ZXJvZWQgb3V0LgotICAgRXZlcnlvbmUgZXhjZXB0IGRpY3RfbmV3KCkgc2hvdWxkIHVzZSBFTVBUWV9UT19NSU5TSVpFICh1bmxlc3MgdGhleSBoYXZlCi0gICBhbiBleGNlbGxlbnQgcmVhc29uIG5vdCB0bykuCi0qLwotCi0jZGVmaW5lIElOSVRfTk9OWkVST19ESUNUX1NMT1RTKG1wKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKG1wKS0+bWFfdGFibGUgPSAobXApLT5tYV9zbWFsbHRhYmxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKG1wKS0+bWFfbWFzayA9IFB5RGljdF9NSU5TSVpFIC0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQotCi0jZGVmaW5lIEVNUFRZX1RPX01JTlNJWkUobXApIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbWVtc2V0KChtcCktPm1hX3NtYWxsdGFibGUsIDAsIHNpemVvZigobXApLT5tYV9zbWFsbHRhYmxlKSk7ICAgICAgICBcCi0gICAgKG1wKS0+bWFfdXNlZCA9IChtcCktPm1hX2ZpbGwgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMobXApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSgwKQorc3RhdGljIGludCBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCk7CiAKIC8qIERpY3Rpb25hcnkgcmV1c2Ugc2NoZW1lIHRvIHNhdmUgY2FsbHMgdG8gbWFsbG9jLCBmcmVlLCBhbmQgbWVtc2V0ICovCiAjaWZuZGVmIFB5RGljdF9NQVhGUkVFTElTVApAQCAtMjE3LDczICsyNDIsMTk0IEBACiBzdGF0aWMgUHlEaWN0T2JqZWN0ICpmcmVlX2xpc3RbUHlEaWN0X01BWEZSRUVMSVNUXTsKIHN0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiAKLXZvaWQKLVB5RGljdF9GaW5pKHZvaWQpCitpbnQKK1B5RGljdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7CiAgICAgUHlEaWN0T2JqZWN0ICpvcDsKLQorICAgIGludCByZXQgPSBudW1mcmVlOwogICAgIHdoaWxlIChudW1mcmVlKSB7CiAgICAgICAgIG9wID0gZnJlZV9saXN0Wy0tbnVtZnJlZV07CiAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChvcCkpOwogICAgICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogICAgIH0KKyAgICByZXR1cm4gcmV0OwogfQogCi1QeU9iamVjdCAqCi1QeURpY3RfTmV3KHZvaWQpCisvKiBQcmludCBzdW1tYXJ5IGluZm8gYWJvdXQgdGhlIHN0YXRlIG9mIHRoZSBvcHRpbWl6ZWQgYWxsb2NhdG9yICovCit2b2lkCitfUHlEaWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQogewotICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgaWYgKGR1bW15ID09IE5VTEwpIHsgLyogQXV0by1pbml0aWFsaXplIGR1bW15ICovCi0gICAgICAgIGR1bW15ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxkdW1teSBrZXk+Iik7Ci0gICAgICAgIGlmIChkdW1teSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotICAgICAgICBQeV9BdEV4aXQoc2hvd19jb3VudHMpOwotI2VuZGlmCi0jaWZkZWYgU0hPV19BTExPQ19DT1VOVAotICAgICAgICBQeV9BdEV4aXQoc2hvd19hbGxvYyk7Ci0jZW5kaWYKLSNpZmRlZiBTSE9XX1RSQUNLX0NPVU5UCi0gICAgICAgIFB5X0F0RXhpdChzaG93X3RyYWNrKTsKLSNlbmRpZgorICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlEaWN0T2JqZWN0IiwgbnVtZnJlZSwgc2l6ZW9mKFB5RGljdE9iamVjdCkpOworfQorCisKK3ZvaWQKK1B5RGljdF9GaW5pKHZvaWQpCit7CisgICAgUHlEaWN0X0NsZWFyRnJlZUxpc3QoKTsKK30KKworI2RlZmluZSBES19ERUJVR19JTkNSRUYgX1B5X0lOQ19SRUZUT1RBTCBfUHlfUkVGX0RFQlVHX0NPTU1BCisjZGVmaW5lIERLX0RFQlVHX0RFQ1JFRiBfUHlfREVDX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKKworI2RlZmluZSBES19JTkNSRUYoZGspIChES19ERUJVR19JTkNSRUYgKysoZGspLT5ka19yZWZjbnQpCisjZGVmaW5lIERLX0RFQ1JFRihkaykgaWYgKERLX0RFQlVHX0RFQ1JFRiAoLS0oZGspLT5ka19yZWZjbnQpID09IDApIGZyZWVfa2V5c19vYmplY3QoZGspCisjZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQorI2RlZmluZSBES19NQVNLKGRrKSAoKChkayktPmRrX3NpemUpLTEpCisjZGVmaW5lIElTX1BPV0VSX09GXzIoeCkgKCgoeCkgJiAoeC0xKSkgPT0gMCkKKworLyogVVNBQkxFX0ZSQUNUSU9OIGlzIHRoZSBtYXhpbXVtIGRpY3Rpb25hcnkgbG9hZC4KKyAqIEN1cnJlbnRseSBzZXQgdG8gKDJuKzEpLzMuIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZQorICogZGVuc2UgcmVzdWx0aW5nIGluIG1vcmUgY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcworICogYXQgdGhlIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nIGVudHJpZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUKKyAqIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgorICoKKyAqIFVTQUJMRV9GUkFDVElPTiBtdXN0IG9iZXkgdGhlIGZvbGxvd2luZzoKKyAqICAgICAoMCA8IFVTQUJMRV9GUkFDVElPTihuKSA8IG4pIGZvciBhbGwgbiA+PSAyCisgKgorICogVVNBQkxFX0ZSQUNUSU9OIHNob3VsZCBiZSB2ZXJ5IHF1aWNrIHRvIGNhbGN1bGF0ZS4KKyAqIEZyYWN0aW9ucyBhcm91bmQgNS84IHRvIDIvMyBzZWVtIHRvIHdvcmsgd2VsbCBpbiBwcmFjdGljZS4KKyAqLworCisvKiBVc2UgKDJuKzEpLzMgcmF0aGVyIHRoYW4gMm4rMyBiZWNhdXNlOiBpdCBtYWtlcyBubyBkaWZmZXJlbmNlIGZvcgorICogY29tYmluZWQgdGFibGVzICh0aGUgdHdvIGZyYWN0aW9ucyByb3VuZCB0byB0aGUgc2FtZSBudW1iZXIgbiA8ICksCisgKiBidXQgMio0LzMgaXMgMiB3aGVyZWFzICgyKjQrMSkvMyBpcyAzIHdoaWNoIHBvdGVudGlhbGx5IHNhdmVzIHF1aXRlCisgKiBhIGxvdCBvZiBzcGFjZSBmb3Igc21hbGwsIHNwbGl0IHRhYmxlcyAqLworI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgoKG4pIDw8IDEpKzEpLzMpCisKKy8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAoMm4rMSkvMyB0byBtYWtlCisgKiBsaXR0bGUgZGlmZmVyZW5jZS4gOCAqIDIvMyA9PSA4ICogNS84ID09IDUuIDE2ICogMi8zID09IDE2ICogNS84ID09IDEwLgorICogMzIgKiAyLzMgPSAyMSwgMzIgKiA1LzggPSAyMC4KKyAqIEl0cyBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBpcyBmYXN0ZXIgdG8gY29tcHV0ZSBvbiBtYWNoaW5lcyB3aXRoIHNsb3cgZGl2aXNpb24uCisgKiAjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA+PiAxKSArICgobikgPj4gMikgLSAoKG4pID4+IDMpKQorKi8KKworLyogR1JPV1RIX1JBVEUuIEdyb3d0aCByYXRlIHVwb24gaGl0dGluZyBtYXhpbXVtIGxvYWQuICBDdXJyZW50bHkgc2V0IHRvICoyLgorICogUmFpc2luZyB0aGlzIHRvICo0IGRvdWJsZXMgbWVtb3J5IGNvbnN1bXB0aW9uIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZgorICogdGhlIGRpY3Rpb25hcnksIGJ1dCByZXN1bHRzIGluIGhhbGYgdGhlIG51bWJlciBvZiByZXNpemVzLCBsZXNzIGVmZm9ydCB0bworICogcmVzaXplIGFuZCBiZXR0ZXIgc3BhcnNlbmVzcyBmb3Igc29tZSAoYnV0IG5vdCBhbGwgZGljdCBzaXplcykuCisgKiBTZXR0aW5nIHRvICo0IGVsaW1pbmF0ZXMgZXZlcnkgb3RoZXIgcmVzaXplIHN0ZXAuCisgKiBHUk9XVEhfUkFURSB3YXMgc2V0IHRvICo0IHVwIHRvIHZlcnNpb24gMy4yLgorICovCisjZGVmaW5lIEdST1dUSF9SQVRFKHgpICgoeCkgKiAyKQorCisjZGVmaW5lIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKGQpIFwKKyAgICBpZiAoKGQpLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KSB7IFwKKyAgICAgICAgKGQpLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlOyBcCiAgICAgfQorCisvKiBUaGlzIGltbXV0YWJsZSwgZW1wdHkgUHlEaWN0S2V5c09iamVjdCBpcyB1c2VkIGZvciBQeURpY3RfQ2xlYXIoKQorICogKHdoaWNoIGNhbm5vdCBmYWlsIGFuZCB0aHVzIGNhbiBkbyBubyBhbGxvY2F0aW9uKS4KKyAqLworc3RhdGljIFB5RGljdEtleXNPYmplY3QgZW1wdHlfa2V5c19zdHJ1Y3QgPSB7CisgICAgICAgIDIsIC8qIGRrX3JlZmNudCAxIGZvciB0aGlzIHN0cnVjdCwgMSBmb3IgZHVtbXlfc3RydWN0ICovCisgICAgICAgIDEsIC8qIGRrX3NpemUgKi8KKyAgICAgICAgbG9va2RpY3Rfc3BsaXQsIC8qIGRrX2xvb2t1cCAqLworICAgICAgICAwLCAvKiBka191c2FibGUgKGltbXV0YWJsZSkgKi8KKyAgICAgICAgeworICAgICAgICAgICAgeyAwLCAwLCAwIH0gLyogZGtfZW50cmllcyAoZW1wdHkpICovCisgICAgICAgIH0KK307CisKK3N0YXRpYyBQeU9iamVjdCAqZW1wdHlfdmFsdWVzWzFdID0geyBOVUxMIH07CisKKyNkZWZpbmUgUHlfRU1QVFlfS0VZUyAmZW1wdHlfa2V5c19zdHJ1Y3QKKworc3RhdGljIFB5RGljdEtleXNPYmplY3QgKm5ld19rZXlzX29iamVjdChQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CisKKyAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoc2l6ZSkpOworICAgIGRrID0gUHlNZW1fTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIChzaXplLTEpKTsKKyAgICBpZiAoZGsgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgREtfREVCVUdfSU5DUkVGIGRrLT5ka19yZWZjbnQgPSAxOworICAgIGRrLT5ka19zaXplID0gc2l6ZTsKKyAgICBkay0+ZGtfdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOworICAgIGVwMCA9ICZkay0+ZGtfZW50cmllc1swXTsKKyAgICAvKiBIYXNoIHZhbHVlIG9mIHNsb3QgMCBpcyB1c2VkIGJ5IHBvcGl0ZW0sIHNvIGl0IG11c3QgYmUgaW5pdGlhbGl6ZWQgKi8KKyAgICBlcDAtPm1lX2hhc2ggPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgZXAwW2ldLm1lX2tleSA9IE5VTEw7CisgICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7CisgICAgfQorICAgIGRrLT5ka19sb29rdXAgPSBsb29rZGljdF91bmljb2RlX25vZHVtbXk7CisgICAgcmV0dXJuIGRrOworfQorCitzdGF0aWMgdm9pZAorZnJlZV9rZXlzX29iamVjdChQeURpY3RLZXlzT2JqZWN0ICprZXlzKQoreworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gJmtleXMtPmRrX2VudHJpZXNbMF07CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKGtleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV9rZXkpOworICAgICAgICBQeV9YREVDUkVGKGVudHJpZXNbaV0ubWVfdmFsdWUpOworICAgIH0KKyAgICBQeU1lbV9GUkVFKGtleXMpOworfQorCisjZGVmaW5lIG5ld192YWx1ZXMoc2l6ZSkgUHlNZW1fTkVXKFB5T2JqZWN0ICosIHNpemUpCisKKyNkZWZpbmUgZnJlZV92YWx1ZXModmFsdWVzKSBQeU1lbV9GUkVFKHZhbHVlcykKKworLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2RpY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlPYmplY3QgKip2YWx1ZXMpCit7CisgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBpZiAobnVtZnJlZSkgewogICAgICAgICBtcCA9IGZyZWVfbGlzdFstLW51bWZyZWVdOwogICAgICAgICBhc3NlcnQgKG1wICE9IE5VTEwpOwogICAgICAgICBhc3NlcnQgKFB5X1RZUEUobXApID09ICZQeURpY3RfVHlwZSk7CiAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopbXApOwotICAgICAgICBpZiAobXAtPm1hX2ZpbGwpIHsKLSAgICAgICAgICAgIEVNUFRZX1RPX01JTlNJWkUobXApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogQXQgbGVhc3Qgc2V0IG1hX3RhYmxlIGFuZCBtYV9tYXNrOyB0aGVzZSBhcmUgd3JvbmcKLSAgICAgICAgICAgICAgIGlmIGFuIGVtcHR5IGJ1dCBwcmVzaXplZCBkaWN0IGlzIGFkZGVkIHRvIGZyZWVsaXN0ICovCi0gICAgICAgICAgICBJTklUX05PTlpFUk9fRElDVF9TTE9UUyhtcCk7Ci0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0IChtcC0+bWFfdXNlZCA9PSAwKTsKLSAgICAgICAgYXNzZXJ0IChtcC0+bWFfdGFibGUgPT0gbXAtPm1hX3NtYWxsdGFibGUpOwotICAgICAgICBhc3NlcnQgKG1wLT5tYV9tYXNrID09IFB5RGljdF9NSU5TSVpFIC0gMSk7Ci0jaWZkZWYgU0hPV19BTExPQ19DT1VOVAotICAgICAgICBjb3VudF9yZXVzZSsrOwotI2VuZGlmCi0gICAgfSBlbHNlIHsKLSAgICAgICAgbXAgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOwotICAgICAgICBpZiAobXAgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKLSNpZmRlZiBTSE9XX0FMTE9DX0NPVU5UCi0gICAgICAgIGNvdW50X2FsbG9jKys7Ci0jZW5kaWYKICAgICB9Ci0gICAgbXAtPm1hX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7Ci0jaWZkZWYgU0hPV19UUkFDS19DT1VOVAotICAgIGNvdW50X3VudHJhY2tlZCsrOwotI2VuZGlmCi0jaWZkZWYgU0hPV19DT05WRVJTSU9OX0NPVU5UUwotICAgICsrY3JlYXRlZDsKLSNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBtcCA9IFB5T2JqZWN0X0dDX05ldyhQeURpY3RPYmplY3QsICZQeURpY3RfVHlwZSk7CisgICAgICAgIGlmIChtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBES19ERUNSRUYoa2V5cyk7CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyh2YWx1ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgbXAtPm1hX2tleXMgPSBrZXlzOworICAgIG1wLT5tYV92YWx1ZXMgPSB2YWx1ZXM7CisgICAgbXAtPm1hX3VzZWQgPSAwOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltcDsKIH0KIAorLyogQ29uc3VtZXMgYSByZWZlcmVuY2UgdG8gdGhlIGtleXMgb2JqZWN0ICovCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2RpY3Rfd2l0aF9zaGFyZWRfa2V5cyhQeURpY3RLZXlzT2JqZWN0ICprZXlzKQoreworICAgIFB5T2JqZWN0ICoqdmFsdWVzOworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKworICAgIHNpemUgPSBES19TSVpFKGtleXMpOworICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CisgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CisgICAgICAgIERLX0RFQ1JFRihrZXlzKTsKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgdmFsdWVzW2ldID0gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIG5ld19kaWN0KGtleXMsIHZhbHVlcyk7Cit9CisKK1B5T2JqZWN0ICoKK1B5RGljdF9OZXcodm9pZCkKK3sKKyAgICByZXR1cm4gbmV3X2RpY3QobmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKSwgTlVMTCk7Cit9CisKIC8qCiBUaGUgYmFzaWMgbG9va3VwIGZ1bmN0aW9uIHVzZWQgYnkgYWxsIG9wZXJhdGlvbnMuCiBUaGlzIGlzIGJhc2VkIG9uIEFsZ29yaXRobSBEIGZyb20gS251dGggVm9sLiAzLCBTZWMuIDYuNC4KQEAgLTMwMiwyOSArNDQ4LDM1IEBACiBsb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKIGNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgogbG9va2RpY3RfdW5pY29kZSgpIGJlbG93IGlzIHNwZWNpYWxpemVkIHRvIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mIHdoaWNoIGNhbgotbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gTlVMTC4gIEZvciBib3RoLCB3aGVuCi10aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkIGZvciB3aGljaCB0aGUgbWVfdmFsdWUgZmllbGQgaXMKLU5VTEw7IHRoaXMgaXMgdGhlIHNsb3QgaW4gdGhlIGRpY3QgYXQgd2hpY2ggdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsIGFuZAotdGhlIGNhbGxlciBjYW4gKGlmIGl0IHdpc2hlcykgYWRkIHRoZSA8a2V5LCB2YWx1ZT4gcGFpciB0byB0aGUgcmV0dXJuZWQKLVB5RGljdEVudHJ5Ki4KK25ldmVyIHJhaXNlIGFuIGV4Y2VwdGlvbjsgdGhhdCBmdW5jdGlvbiBjYW4gbmV2ZXIgcmV0dXJuIE5VTEwuCitsb29rZGljdF91bmljb2RlX25vZHVtbXkgaXMgZnVydGhlciBzcGVjaWFsaXplZCBmb3Igc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUKK3RoZSA8ZHVtbXk+IHZhbHVlLgorRm9yIGJvdGgsIHdoZW4gdGhlIGtleSBpc24ndCBmb3VuZCBhIFB5RGljdEVudHJ5KiBpcyByZXR1cm5lZAord2hlcmUgdGhlIGtleSB3b3VsZCBoYXZlIGJlZW4gZm91bmQsICp2YWx1ZV9hZGRyIHBvaW50cyB0byB0aGUgbWF0Y2hpbmcgdmFsdWUKK3Nsb3QuCiAqLwotc3RhdGljIFB5RGljdEVudHJ5ICoKLWxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoKQorc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2xvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKIHsKICAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZnJlZXNsb3Q7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KW1wLT5tYV9tYXNrOwotICAgIFB5RGljdEVudHJ5ICplcDAgPSBtcC0+bWFfdGFibGU7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzazsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICplcDsKICAgICByZWdpc3RlciBpbnQgY21wOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAordG9wOgorICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpCisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgIHJldHVybiBlcDsKLQorICAgIH0KICAgICBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSkKICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICBlbHNlIHsKQEAgLTMzNSwxNyArNDg3LDE1IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV90YWJsZSAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgeworICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgY29tcGFyZSBkaWQgbWFqb3IgbmFzdHkgc3R1ZmYgdG8gdGhlCi0gICAgICAgICAgICAgICAgICogZGljdDogIHN0YXJ0IG92ZXIuCi0gICAgICAgICAgICAgICAgICogWFhYIEEgY2xldmVyIGFkdmVyc2FyeSBjb3VsZCBwcmV2ZW50IHRoaXMKLSAgICAgICAgICAgICAgICAgKiBYWFggZnJvbSB0ZXJtaW5hdGluZy4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCk7CisgICAgICAgICAgICAgICAgLyogVGhlIGRpY3Qgd2FzIG11dGF0ZWQsIHJlc3RhcnQgKi8KKyAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CkBAIC0zNTYsMjggKzUwNiwzNyBAQAogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewogICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CiAgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gZnJlZXNsb3QgPT0gTlVMTCA/IGVwIDogZnJlZXNsb3Q7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKLSAgICAgICAgICAgIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgaWYgKGNtcCA8IDApIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV90YWJsZSAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZXAwID09IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgeworICAgICAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBUaGUgY29tcGFyZSBkaWQgbWFqb3IgbmFzdHkgc3R1ZmYgdG8gdGhlCi0gICAgICAgICAgICAgICAgICogZGljdDogIHN0YXJ0IG92ZXIuCi0gICAgICAgICAgICAgICAgICogWFhYIEEgY2xldmVyIGFkdmVyc2FyeSBjb3VsZCBwcmV2ZW50IHRoaXMKLSAgICAgICAgICAgICAgICAgKiBYWFggZnJvbSB0ZXJtaW5hdGluZy4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCk7CisgICAgICAgICAgICAgICAgLyogVGhlIGRpY3Qgd2FzIG11dGF0ZWQsIHJlc3RhcnQgKi8KKyAgICAgICAgICAgICAgICBnb3RvIHRvcDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChlcC0+bWVfa2V5ID09IGR1bW15ICYmIGZyZWVzbG90ID09IE5VTEwpCkBAIC0zODcsNDYgKzU0NiwzOSBAQAogICAgIHJldHVybiAwOwogfQogCi0vKgotICogSGFja2VkIHVwIHZlcnNpb24gb2YgbG9va2RpY3Qgd2hpY2ggY2FuIGFzc3VtZSBrZXlzIGFyZSBhbHdheXMKLSAqIHVuaWNvZGVzOyB0aGlzIGFzc3VtcHRpb24gYWxsb3dzIHRlc3RpbmcgZm9yIGVycm9ycyBkdXJpbmcKLSAqIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpIHRvIGJlIGRyb3BwZWQ7IHVuaWNvZGUtdW5pY29kZQotICogY29tcGFyaXNvbnMgbmV2ZXIgcmFpc2UgZXhjZXB0aW9ucy4gIFRoaXMgYWxzbyBtZWFucyB3ZSBkb24ndCBuZWVkCi0gKiB0byBnbyB0aHJvdWdoIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpOyB3ZSBjYW4gYWx3YXlzIHVzZQotICogdW5pY29kZV9lcSgpIGRpcmVjdGx5LgotICoKLSAqIFRoaXMgaXMgdmFsdWFibGUgYmVjYXVzZSBkaWN0cyB3aXRoIG9ubHkgdW5pY29kZSBrZXlzIGFyZSB2ZXJ5IGNvbW1vbi4KLSAqLwotc3RhdGljIFB5RGljdEVudHJ5ICoKLWxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgcmVnaXN0ZXIgUHlfaGFzaF90IGhhc2gpCisvKiBTcGVjaWFsaXplZCB2ZXJzaW9uIGZvciBzdHJpbmctb25seSBrZXlzICovCitzdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKIHsKICAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZnJlZXNsb3Q7Ci0gICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KW1wLT5tYV9tYXNrOwotICAgIFB5RGljdEVudHJ5ICplcDAgPSBtcC0+bWFfdGFibGU7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOwogCiAgICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAogICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwogICAgICAgIHVuaWNvZGVzIGlzIHRvIG92ZXJyaWRlIF9fZXFfXywgYW5kIGZvciBzcGVlZCB3ZSBkb24ndCBjYXRlciB0bwogICAgICAgIHRoYXQgaGVyZS4gKi8KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgICsrY29udmVydGVkOwotI2VuZGlmCi0gICAgICAgIG1wLT5tYV9sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gpOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyKTsKICAgICB9Ci0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVwID0gJmVwMFtpXTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5KQorICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICByZXR1cm4gZXA7CisgICAgfQogICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQogICAgICAgICBmcmVlc2xvdCA9IGVwOwogICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpCisgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwogICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CiAgICAgICAgIGZyZWVzbG90ID0gTlVMTDsKICAgICB9CiAKQEAgLTQzNSwxMyArNTg3LDIyIEBACiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKICAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdCA9PSBOVUxMID8gZXAgOiBmcmVlc2xvdDsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQogICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2gKICAgICAgICAgICAgICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpCisgICAgICAgICAgICAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CiAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKICAgICAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgfQpAQCAtNDQ5LDYgKzYxMCw5MiBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBGYXN0ZXIgdmVyc2lvbiBvZiBsb29rZGljdF91bmljb2RlIHdoZW4gaXQgaXMga25vd24gdGhhdCBubyA8ZHVtbXk+IGtleXMKKyAqIHdpbGwgYmUgcHJlc2VudC4gKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKK3sKKyAgICByZWdpc3RlciBzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKKyAgICByZWdpc3RlciBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5RW50cnkgKmVwOworCisgICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAorICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcworICAgICAgIHVuaWNvZGVzIGlzIHRvIG92ZXJyaWRlIF9fZXFfXywgYW5kIGZvciBzcGVlZCB3ZSBkb24ndCBjYXRlciB0bworICAgICAgIHRoYXQgaGVyZS4gKi8KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CisgICAgfQorICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOworICAgIGVwID0gJmVwMFtpXTsKKyAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKKyAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICByZXR1cm4gZXA7CisgICAgfQorICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CisgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ID09IE5VTEwgfHwgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiAwOworfQorCisvKiBWZXJzaW9uIG9mIGxvb2tkaWN0IGZvciBzcGxpdCB0YWJsZXMuCisgKiBBbGwgc3BsaXQgdGFibGVzIGFuZCBvbmx5IHNwbGl0IHRhYmxlcyB1c2UgdGhpcyBsb29rdXAgZnVuY3Rpb24uCisgKiBTcGxpdCB0YWJsZXMgb25seSBjb250YWluIHVuaWNvZGUga2V5cyBhbmQgbm8gZHVtbXkga2V5cywKKyAqIHNvIGFsZ29yaXRobSBpcyB0aGUgc2FtZSBhcyBsb29rZGljdF91bmljb2RlX25vZHVtbXkuCisgKi8KK3N0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCit7CisgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7CisgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIHJlZ2lzdGVyIFB5RGljdEtleUVudHJ5ICplcDsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBlcCA9IGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICAvKiBsb29rZGljdCBleHBlY3RzIGEgY29tYmluZWQtdGFibGUsIHNvIGZpeCB2YWx1ZV9hZGRyICovCisgICAgICAgIGkgPSBlcCAtIGVwMDsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgcmV0dXJuIGVwOworICAgIH0KKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBlcCA9ICZlcDBbaV07CisgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHJldHVybiBlcDsKKyAgICB9CisgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKKyAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOworICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KKyAgICByZXR1cm4gMDsKK30KKwogaW50CiBfUHlEaWN0X0hhc09ubHlTdHJpbmdLZXlzKFB5T2JqZWN0ICpkaWN0KQogewpAQCAtNDU2LDcgKzcwMyw3IEBACiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOwogICAgIC8qIFNob3J0Y3V0ICovCi0gICAgaWYgKCgoUHlEaWN0T2JqZWN0ICopZGljdCktPm1hX2xvb2t1cCA9PSBsb29rZGljdF91bmljb2RlKQorICAgIGlmICgoKFB5RGljdE9iamVjdCAqKWRpY3QpLT5tYV9rZXlzLT5ka19sb29rdXAgIT0gbG9va2RpY3QpCiAgICAgICAgIHJldHVybiAxOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChkaWN0LCAmcG9zLCAma2V5LCAmdmFsdWUpKQogICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKQpAQCAtNDY0LDIzICs3MTEsMTIgQEAKICAgICByZXR1cm4gMTsKIH0KIAotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSNkZWZpbmUgSU5DUkVBU0VfVFJBQ0tfQ09VTlQgXAotICAgIChjb3VudF90cmFja2VkKyssIGNvdW50X3VudHJhY2tlZC0tKTsKLSNkZWZpbmUgREVDUkVBU0VfVFJBQ0tfQ09VTlQgXAotICAgIChjb3VudF90cmFja2VkLS0sIGNvdW50X3VudHJhY2tlZCsrKTsKLSNlbHNlCi0jZGVmaW5lIElOQ1JFQVNFX1RSQUNLX0NPVU5UCi0jZGVmaW5lIERFQ1JFQVNFX1RSQUNLX0NPVU5UCi0jZW5kaWYKLQogI2RlZmluZSBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSkgXAogICAgIGRvIHsgXAogICAgICAgICBpZiAoIV9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG1wKSkgeyBcCiAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGtleSkgfHwgXAogICAgICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkpIHsgXAogICAgICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtcCk7IFwKLSAgICAgICAgICAgICAgICBJTkNSRUFTRV9UUkFDS19DT1VOVCBcCiAgICAgICAgICAgICB9IFwKICAgICAgICAgfSBcCiAgICAgfSB3aGlsZSgwKQpAQCAtNDkwLDc4ICs3MjYsMTM2IEBACiB7CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeU9iamVjdCAqdmFsdWU7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBpOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGksIHNpemU7CiAKICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG9wKSB8fCAhX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob3ApKQogICAgICAgICByZXR1cm47CiAKICAgICBtcCA9IChQeURpY3RPYmplY3QgKikgb3A7Ci0gICAgZXAgPSBtcC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IG1wLT5tYV9tYXNrOwotICAgIGZvciAoaSA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmICgodmFsdWUgPSBlcFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSB8fAotICAgICAgICAgICAgX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKGVwW2ldLm1lX2tleSkpCi0gICAgICAgICAgICByZXR1cm47CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgodmFsdWUgPSBtcC0+bWFfdmFsdWVzW2ldKSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIV9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCgKKyAgICAgICAgICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIERFQ1JFQVNFX1RSQUNLX0NPVU5UCisgICAgZWxzZSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGlmICgodmFsdWUgPSBlcDBbaV0ubWVfdmFsdWUpID09IE5VTEwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0dDX01BWV9CRV9UUkFDS0VEKHZhbHVlKSB8fAorICAgICAgICAgICAgICAgIF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRChlcDBbaV0ubWVfa2V5KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0sob3ApOwogfQogCi0vKgotSW50ZXJuYWwgcm91dGluZSB0byBpbnNlcnQgYSBuZXcgaXRlbSBpbnRvIHRoZSB0YWJsZSB3aGVuIHlvdSBoYXZlIGVudHJ5IG9iamVjdC4KLVVzZWQgYnkgaW5zZXJ0ZGljdC4KLSovCi1zdGF0aWMgaW50Ci1pbnNlcnRkaWN0X2J5X2VudHJ5KHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAotICAgICAgICAgICAgICAgICAgICBQeURpY3RFbnRyeSAqZXAsIFB5T2JqZWN0ICp2YWx1ZSkKKy8qIEludGVybmFsIGZ1bmN0aW9uIHRvIGZpbmQgc2xvdCBmb3IgYW4gaXRlbSBmcm9tIGl0cyBoYXNoCisgKiB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgZGljdC4KKyAqLworc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK2ZpbmRfZW1wdHlfc2xvdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQogewotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWU7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IHBlcnR1cmI7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKIAotICAgIE1BSU5UQUlOX1RSQUNLSU5HKG1wLCBrZXksIHZhbHVlKTsKLSAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgb2xkX3ZhbHVlID0gZXAtPm1lX3ZhbHVlOwotICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKi8KLSAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpCisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKKyAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgZXAgPSAmZXAwW2ldOworICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgeworICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7CisgICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKQotICAgICAgICAgICAgbXAtPm1hX2ZpbGwrKzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBkdW1teSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICB9Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBrZXk7Ci0gICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgZXAtPm1lX3ZhbHVlID0gdmFsdWU7Ci0gICAgICAgIG1wLT5tYV91c2VkKys7Ci0gICAgfQotICAgIHJldHVybiAwOworICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpCisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaSAmIG1hc2tdOworICAgIGVsc2UKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgIHJldHVybiBlcDsKIH0KIAorc3RhdGljIGludAoraW5zZXJ0aW9uX3Jlc2l6ZShQeURpY3RPYmplY3QgKm1wKQoreworICAgIHJldHVybiBkaWN0cmVzaXplKG1wLCBHUk9XVEhfUkFURShtcC0+bWFfdXNlZCkpOworfQogCiAvKgogSW50ZXJuYWwgcm91dGluZSB0byBpbnNlcnQgYSBuZXcgaXRlbSBpbnRvIHRoZSB0YWJsZS4KIFVzZWQgYm90aCBieSB0aGUgaW50ZXJuYWwgcmVzaXplIHJvdXRpbmUgYW5kIGJ5IHRoZSBwdWJsaWMgaW5zZXJ0IHJvdXRpbmUuCi1FYXRzIGEgcmVmZXJlbmNlIHRvIGtleSBhbmQgb25lIHRvIHZhbHVlLgogUmV0dXJucyAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCwgb3IgMCBvbiBzdWNjZXNzLgogKi8KIHN0YXRpYyBpbnQKLWluc2VydGRpY3QocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICp2YWx1ZSkKK2luc2VydGRpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOwogCi0gICAgYXNzZXJ0KG1wLT5tYV9sb29rdXAgIT0gTlVMTCk7Ci0gICAgZXAgPSBtcC0+bWFfbG9va3VwKG1wLCBrZXksIGhhc2gpOworICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKKyAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiBpbnNlcnRkaWN0X2J5X2VudHJ5KG1wLCBrZXksIGhhc2gsIGVwLCB2YWx1ZSk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7CisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgaWYgKG9sZF92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyICovCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvKiBOZWVkIHRvIHJlc2l6ZS4gKi8KKyAgICAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlID49IDApOworICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1wLT5tYV91c2VkKys7CisgICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7CisgICAgfQorICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qCkBAIC01NzEsMTggKzg2NSwyNSBAQAogdXNpbmcgaW5zZXJ0ZGljdCgpIGluIGRpY3RyZXNpemUoKSBpcyBkYW5nZXJvdXMgKFNGIGJ1ZyAjMTQ1NjIwOSkuCiBOb3RlIHRoYXQgbm8gcmVmY291bnRzIGFyZSBjaGFuZ2VkIGJ5IHRoaXMgcm91dGluZTsgaWYgbmVlZGVkLCB0aGUgY2FsbGVyCiBpcyByZXNwb25zaWJsZSBmb3IgaW5jcmVmJ2luZyBga2V5YCBhbmQgYHZhbHVlYC4KK05laXRoZXIgbXAtPm1hX3VzZWQgbm9yIGstPmRrX3VzYWJsZSBhcmUgbW9kaWZpZWQgYnkgdGhpcyByb3V0aW5lOyB0aGUgY2FsbGVyCittdXN0IHNldCB0aGVtIGNvcnJlY3RseQogKi8KIHN0YXRpYyB2b2lkCi1pbnNlcnRkaWN0X2NsZWFuKHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLAoraW5zZXJ0ZGljdF9jbGVhbihQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwKICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlKQogewotICAgIHJlZ2lzdGVyIHNpemVfdCBpOwotICAgIHJlZ2lzdGVyIHNpemVfdCBwZXJ0dXJiOwotICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gKHNpemVfdCltcC0+bWFfbWFzazsKLSAgICBQeURpY3RFbnRyeSAqZXAwID0gbXAtPm1hX3RhYmxlOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICBzaXplX3QgaTsKKyAgICBzaXplX3QgcGVydHVyYjsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprID0gbXAtPm1hX2tleXM7CisgICAgc2l6ZV90IG1hc2sgPSAoc2l6ZV90KURLX1NJWkUoayktMTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJmstPmRrX2VudHJpZXNbMF07CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogCi0gICAgTUFJTlRBSU5fVFJBQ0tJTkcobXAsIGtleSwgdmFsdWUpOworICAgIGFzc2VydChrLT5ka19sb29rdXAgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHZhbHVlICE9IE5VTEwpOworICAgIGFzc2VydChrZXkgIT0gTlVMTCk7CisgICAgYXNzZXJ0KGtleSAhPSBkdW1teSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgay0+ZGtfbG9va3VwID09IGxvb2tkaWN0KTsKICAgICBpID0gaGFzaCAmIG1hc2s7CiAgICAgZXAgPSAmZXAwW2ldOwogICAgIGZvciAocGVydHVyYiA9IGhhc2g7IGVwLT5tZV9rZXkgIT0gTlVMTDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewpAQCAtNTkwLDMxICs4OTEsMzEgQEAKICAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKICAgICB9CiAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKLSAgICBtcC0+bWFfZmlsbCsrOwogICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwogICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwotICAgIG1wLT5tYV91c2VkKys7CiB9CiAKIC8qCiBSZXN0cnVjdHVyZSB0aGUgdGFibGUgYnkgYWxsb2NhdGluZyBhIG5ldyB0YWJsZSBhbmQgcmVpbnNlcnRpbmcgYWxsCiBpdGVtcyBhZ2Fpbi4gIFdoZW4gZW50cmllcyBoYXZlIGJlZW4gZGVsZXRlZCwgdGhlIG5ldyB0YWJsZSBtYXkKIGFjdHVhbGx5IGJlIHNtYWxsZXIgdGhhbiB0aGUgb2xkIG9uZS4KK0lmIGEgdGFibGUgaXMgc3BsaXQgKGl0cyBrZXlzIGFuZCBoYXNoZXMgYXJlIHNoYXJlZCwgaXRzIHZhbHVlcyBhcmUgbm90KSwKK3RoZW4gdGhlIHZhbHVlcyBhcmUgdGVtcG9yYXJpbHkgY29waWVkIGludG8gdGhlIHRhYmxlLCBpdCBpcyByZXNpemVkIGFzCithIGNvbWJpbmVkIHRhYmxlLCB0aGVuIHRoZSBtZV92YWx1ZSBzbG90cyBpbiB0aGUgb2xkIHRhYmxlIGFyZSBOVUxMZWQgb3V0LgorQWZ0ZXIgcmVzaXppbmcgYSB0YWJsZSBpcyBhbHdheXMgY29tYmluZWQsCitidXQgY2FuIGJlIHJlc3BsaXQgYnkgbWFrZV9rZXlzX3NoYXJlZCgpLgogKi8KIHN0YXRpYyBpbnQKIGRpY3RyZXNpemUoUHlEaWN0T2JqZWN0ICptcCwgUHlfc3NpemVfdCBtaW51c2VkKQogewogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKLSAgICBQeURpY3RFbnRyeSAqb2xkdGFibGUsICpuZXd0YWJsZSwgKmVwOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBpbnQgaXNfb2xkdGFibGVfbWFsbG9jZWQ7Ci0gICAgUHlEaWN0RW50cnkgc21hbGxfY29weVtQeURpY3RfTUlOU0laRV07CisgICAgUHlEaWN0S2V5c09iamVjdCAqb2xka2V5czsKKyAgICBQeU9iamVjdCAqKm9sZHZhbHVlczsKKyAgICBQeV9zc2l6ZV90IGksIG9sZHNpemU7CiAKLSAgICBhc3NlcnQobWludXNlZCA+PSAwKTsKLQotICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwotICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOworLyogRmluZCB0aGUgc21hbGxlc3QgdGFibGUgc2l6ZSA+IG1pbnVzZWQuICovCisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CiAgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CiAgICAgICAgICBuZXdzaXplIDw8PSAxKQogICAgICAgICA7CkBAIC02MjIsODMgKzkyMywxMjUgQEAKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQotICAgIC8qIEdldCBzcGFjZSBmb3IgYSBuZXcgdGFibGUuICovCi0gICAgb2xkdGFibGUgPSBtcC0+bWFfdGFibGU7Ci0gICAgYXNzZXJ0KG9sZHRhYmxlICE9IE5VTEwpOwotICAgIGlzX29sZHRhYmxlX21hbGxvY2VkID0gb2xkdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGU7Ci0KLSAgICBpZiAobmV3c2l6ZSA9PSBQeURpY3RfTUlOU0laRSkgewotICAgICAgICAvKiBBIGxhcmdlIHRhYmxlIGlzIHNocmlua2luZywgb3Igd2UgY2FuJ3QgZ2V0IGFueSBzbWFsbGVyLiAqLwotICAgICAgICBuZXd0YWJsZSA9IG1wLT5tYV9zbWFsbHRhYmxlOwotICAgICAgICBpZiAobmV3dGFibGUgPT0gb2xkdGFibGUpIHsKLSAgICAgICAgICAgIGlmIChtcC0+bWFfZmlsbCA9PSBtcC0+bWFfdXNlZCkgewotICAgICAgICAgICAgICAgIC8qIE5vIGR1bW1pZXMsIHNvIG5vIHBvaW50IGRvaW5nIGFueXRoaW5nLiAqLwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgIG9sZGtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBvbGR2YWx1ZXMgPSBtcC0+bWFfdmFsdWVzOworICAgIC8qIEFsbG9jYXRlIGEgbmV3IHRhYmxlLiAqLworICAgIG1wLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KG5ld3NpemUpOworICAgIGlmIChtcC0+bWFfa2V5cyA9PSBOVUxMKSB7CisgICAgICAgIG1wLT5tYV9rZXlzID0gb2xka2V5czsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAob2xka2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KQorICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Q7CisgICAgb2xkc2l6ZSA9IERLX1NJWkUob2xka2V5cyk7CisgICAgbXAtPm1hX3ZhbHVlcyA9IE5VTEw7CisgICAgLyogSWYgZW1wdHkgdGhlbiBub3RoaW5nIHRvIGNvcHkgc28ganVzdCByZXR1cm4gKi8KKyAgICBpZiAob2xkc2l6ZSA9PSAxKSB7CisgICAgICAgIGFzc2VydChvbGRrZXlzID09IFB5X0VNUFRZX0tFWVMpOworICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAvKiBNYWluIGxvb3AgYmVsb3cgYXNzdW1lcyB3ZSBjYW4gdHJhbnNmZXIgcmVmY291bnQgdG8gbmV3IGtleXMKKyAgICAgKiBhbmQgdGhhdCB2YWx1ZSBpcyBzdG9yZWQgaW4gbWVfdmFsdWUuCisgICAgICogSW5jcmVtZW50IHJlZi1jb3VudHMgYW5kIGNvcHkgdmFsdWVzIGhlcmUgdG8gY29tcGVuc2F0ZQorICAgICAqIFRoaXMgKHJlc2l6aW5nIGEgc3BsaXQgdGFibGUpIHNob3VsZCBiZSByZWxhdGl2ZWx5IHJhcmUgKi8KKyAgICBpZiAob2xkdmFsdWVzICE9IE5VTEwpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZHNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKG9sZHZhbHVlc1tpXSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKG9sZGtleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICAgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogV2UncmUgbm90IGdvaW5nIHRvIHJlc2l6ZSBpdCwgYnV0IHJlYnVpbGQgdGhlCi0gICAgICAgICAgICAgICB0YWJsZSBhbnl3YXkgdG8gcHVyZ2Ugb2xkIGR1bW15IGVudHJpZXMuCi0gICAgICAgICAgICAgICBTdWJ0bGU6ICBUaGlzIGlzICpuZWNlc3NhcnkqIGlmIGZpbGw9PXNpemUsCi0gICAgICAgICAgICAgICBhcyBsb29rZGljdCBuZWVkcyBhdCBsZWFzdCBvbmUgdmlyZ2luIHNsb3QgdG8KLSAgICAgICAgICAgICAgIHRlcm1pbmF0ZSBmYWlsaW5nIHNlYXJjaGVzLiAgSWYgZmlsbCA8IHNpemUsIGl0J3MKLSAgICAgICAgICAgICAgIG1lcmVseSBkZXNpcmFibGUsIGFzIGR1bW1pZXMgc2xvdyBzZWFyY2hlcy4gKi8KLSAgICAgICAgICAgIGFzc2VydChtcC0+bWFfZmlsbCA+IG1wLT5tYV91c2VkKTsKLSAgICAgICAgICAgIG1lbWNweShzbWFsbF9jb3B5LCBvbGR0YWJsZSwgc2l6ZW9mKHNtYWxsX2NvcHkpKTsKLSAgICAgICAgICAgIG9sZHRhYmxlID0gc21hbGxfY29weTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbmV3dGFibGUgPSBQeU1lbV9ORVcoUHlEaWN0RW50cnksIG5ld3NpemUpOwotICAgICAgICBpZiAobmV3dGFibGUgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIE1ha2UgdGhlIGRpY3QgZW1wdHksIHVzaW5nIHRoZSBuZXcgdGFibGUuICovCi0gICAgYXNzZXJ0KG5ld3RhYmxlICE9IG9sZHRhYmxlKTsKLSAgICBtcC0+bWFfdGFibGUgPSBuZXd0YWJsZTsKLSAgICBtcC0+bWFfbWFzayA9IG5ld3NpemUgLSAxOwotICAgIG1lbXNldChuZXd0YWJsZSwgMCwgc2l6ZW9mKFB5RGljdEVudHJ5KSAqIG5ld3NpemUpOwotICAgIG1wLT5tYV91c2VkID0gMDsKLSAgICBpID0gbXAtPm1hX2ZpbGw7Ci0gICAgbXAtPm1hX2ZpbGwgPSAwOwotCi0gICAgLyogQ29weSB0aGUgZGF0YSBvdmVyOyB0aGlzIGlzIHJlZmNvdW50LW5ldXRyYWwgZm9yIGFjdGl2ZSBlbnRyaWVzOwotICAgICAgIGR1bW15IGVudHJpZXMgYXJlbid0IGNvcGllZCBvdmVyLCBvZiBjb3Vyc2UgKi8KLSAgICBmb3IgKGVwID0gb2xkdGFibGU7IGkgPiAwOyBlcCsrKSB7Ci0gICAgICAgIGlmIChlcC0+bWVfdmFsdWUgIT0gTlVMTCkgeyAgICAgICAgICAgICAvKiBhY3RpdmUgZW50cnkgKi8KLSAgICAgICAgICAgIC0taTsKKyAgICAvKiBNYWluIGxvb3AgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5RGljdEtleUVudHJ5ICplcCA9ICZvbGRrZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICBpZiAoZXAtPm1lX3ZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IGR1bW15KTsKICAgICAgICAgICAgIGluc2VydGRpY3RfY2xlYW4obXAsIGVwLT5tZV9rZXksIGVwLT5tZV9oYXNoLCBlcC0+bWVfdmFsdWUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGVwLT5tZV9rZXkgIT0gTlVMTCkgeyAgICAgICAgICAvKiBkdW1teSBlbnRyeSAqLwotICAgICAgICAgICAgLS1pOwotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gZHVtbXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKGVwLT5tZV9rZXkpOwotICAgICAgICB9Ci0gICAgICAgIC8qIGVsc2Uga2V5ID09IHZhbHVlID09IE5VTEw6ICBub3RoaW5nIHRvIGRvICovCiAgICAgfQotCi0gICAgaWYgKGlzX29sZHRhYmxlX21hbGxvY2VkKQotICAgICAgICBQeU1lbV9ERUwob2xkdGFibGUpOworICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUgLT0gbXAtPm1hX3VzZWQ7CisgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgIC8qIE5VTEwgb3V0IG1lX3ZhbHVlIHNsb3QgaW4gb2xka2V5cywgaW4gY2FzZSBpdCB3YXMgc2hhcmVkICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspCisgICAgICAgICAgICBvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlID0gTlVMTDsKKyAgICAgICAgYXNzZXJ0KG9sZHZhbHVlcyAhPSBlbXB0eV92YWx1ZXMpOworICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3NwbGl0KTsKKyAgICAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsKKyAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1swXTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoZXAwW2ldLm1lX2tleSA9PSBkdW1teSkKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgICBES19ERUJVR19ERUNSRUYgUHlNZW1fRlJFRShvbGRrZXlzKTsKKyAgICB9CiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHByZS1zaXplZCB0byBob2xkIGFuIGVzdGltYXRlZCBudW1iZXIgb2YgZWxlbWVudHMuCi0gICBVbmRlcmVzdGltYXRlcyBhcmUgb2theSBiZWNhdXNlIHRoZSBkaWN0aW9uYXJ5IHdpbGwgcmVzaXplIGFzIG5lY2Vzc2FyeS4KLSAgIE92ZXJlc3RpbWF0ZXMganVzdCBtZWFuIHRoZSBkaWN0aW9uYXJ5IHdpbGwgYmUgbW9yZSBzcGFyc2UgdGhhbiB1c3VhbC4KLSovCisvKiBSZXR1cm5zIE5VTEwgaWYgdW5hYmxlIHRvIHNwbGl0IHRhYmxlLgorICogQSBOVUxMIHJldHVybiBkb2VzIG5vdCBuZWNlc3NhcmlseSBpbmRpY2F0ZSBhbiBlcnJvciAqLworc3RhdGljIFB5RGljdEtleXNPYmplY3QgKgorbWFrZV9rZXlzX3NoYXJlZChQeU9iamVjdCAqb3ApCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOworCisgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChvcCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAwOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlczsKKyAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSk7CisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0KSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGUpIHsKKyAgICAgICAgICAgIC8qIFJlbW92ZSBkdW1teSBrZXlzICovCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CisgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KKyAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOworICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIHZhbHVlcyA9IG5ld192YWx1ZXMoc2l6ZSk7CisgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAorICAgICAgICAgICAgICAgICJOb3QgZW5vdWdoIG1lbW9yeSB0byBhbGxvY2F0ZSBuZXcgdmFsdWVzIGFycmF5Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBlcDBbaV0ubWVfdmFsdWU7CisgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdF9zcGxpdDsKKyAgICAgICAgbXAtPm1hX3ZhbHVlcyA9IHZhbHVlczsKKyAgICB9CisgICAgREtfSU5DUkVGKG1wLT5tYV9rZXlzKTsKKyAgICByZXR1cm4gbXAtPm1hX2tleXM7Cit9CiAKIFB5T2JqZWN0ICoKIF9QeURpY3RfTmV3UHJlc2l6ZWQoUHlfc3NpemVfdCBtaW51c2VkKQogewotICAgIFB5T2JqZWN0ICpvcCA9IFB5RGljdF9OZXcoKTsKLQotICAgIGlmIChtaW51c2VkPjUgJiYgb3AgIT0gTlVMTCAmJiBkaWN0cmVzaXplKChQeURpY3RPYmplY3QgKilvcCwgbWludXNlZCkgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKG9wKTsKKyAgICBQeV9zc2l6ZV90IG5ld3NpemU7CisgICAgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXM7CisgICAgZm9yIChuZXdzaXplID0gUHlEaWN0X01JTlNJWkVfQ09NQklORUQ7CisgICAgICAgICBuZXdzaXplIDw9IG1pbnVzZWQgJiYgbmV3c2l6ZSA+IDA7CisgICAgICAgICBuZXdzaXplIDw8PSAxKQorICAgICAgICA7CisgICAgbmV3X2tleXMgPSBuZXdfa2V5c19vYmplY3QobmV3c2l6ZSk7CisgICAgaWYgKG5ld19rZXlzID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gb3A7CisgICAgcmV0dXJuIG5ld19kaWN0KG5ld19rZXlzLCBOVUxMKTsKIH0KIAogLyogTm90ZSB0aGF0LCBmb3IgaGlzdG9yaWNhbCByZWFzb25zLCBQeURpY3RfR2V0SXRlbSgpIHN1cHByZXNzZXMgYWxsIGVycm9ycwpAQCAtNzE2LDEyICsxMDU5LDE0IEBACiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkKICAgICB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKSB7CkBAIC03NDEsMjAgKzEwODYsMjAgQEAKICAgICAgICAgLyogcHJlc2VydmUgdGhlIGV4aXN0aW5nIGV4Y2VwdGlvbiAqLwogICAgICAgICBQeU9iamVjdCAqZXJyX3R5cGUsICplcnJfdmFsdWUsICplcnJfdGI7CiAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJfdHlwZSwgJmVycl92YWx1ZSwgJmVycl90Yik7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwogICAgICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZXAtPm1lX3ZhbHVlOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAogLyogVmFyaWFudCBvZiBQeURpY3RfR2V0SXRlbSgpIHRoYXQgZG9lc24ndCBzdXBwcmVzcyBleGNlcHRpb25zLgpAQCAtNzY2LDE0ICsxMTExLDE1IEBACiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0Km1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQogICAgIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpIHsKQEAgLTc4MSw0OSArMTEyNyw1NSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gZXAtPm1lX3ZhbHVlOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAotc3RhdGljIGludAotZGljdF9zZXRfaXRlbV9ieV9oYXNoX29yX2VudHJ5KHJlZ2lzdGVyIFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlEaWN0RW50cnkgKmVwLCBQeU9iamVjdCAqdmFsdWUpCitQeU9iamVjdCAqCitfUHlEaWN0X0dldEl0ZW1JZFdpdGhFcnJvcihQeU9iamVjdCAqZHAsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5KQogewotICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBuX3VzZWQ7CisgICAgUHlPYmplY3QgKmt2OworICAgIGt2ID0gX1B5VW5pY29kZV9Gcm9tSWQoa2V5KTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoa3YgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKGRwLCBrdik7Cit9CiAKLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBhc3NlcnQobXAtPm1hX2ZpbGwgPD0gbXAtPm1hX21hc2spOyAgLyogYXQgbGVhc3Qgb25lIGVtcHR5IHNsb3QgKi8KLSAgICBuX3VzZWQgPSBtcC0+bWFfdXNlZDsKLSAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIFB5X0lOQ1JFRihrZXkpOwotICAgIGlmIChlcCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOworLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAuCisgKiBMb29rdXAgaW4gZ2xvYmFscywgdGhlbiBidWlsdGlucy4KKyAqLworUHlPYmplY3QgKgorX1B5RGljdF9Mb2FkR2xvYmFsKFB5RGljdE9iamVjdCAqZ2xvYmFscywgUHlEaWN0T2JqZWN0ICpidWlsdGlucywgUHlPYmplY3QgKmtleSkKK3sKKyAgICBQeU9iamVjdCAqeDsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKKyAgICAgICAgaWYgKGhhc2ggIT0gLTEpIHsKKyAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplOworICAgICAgICAgICAgZSA9IGdsb2JhbHMtPm1hX2tleXMtPmRrX2xvb2t1cChnbG9iYWxzLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKKyAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIHg7CisgICAgICAgICAgICBlID0gYnVpbHRpbnMtPm1hX2tleXMtPmRrX2xvb2t1cChidWlsdGlucywga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB4ID0gKnZhbHVlX2FkZHI7CisgICAgICAgICAgICByZXR1cm4geDsKKyAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGluc2VydGRpY3RfYnlfZW50cnkobXAsIGtleSwgaGFzaCwgZXAsIHZhbHVlKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBJZiB3ZSBhZGRlZCBhIGtleSwgd2UgY2FuIHNhZmVseSByZXNpemUuICBPdGhlcndpc2UganVzdCByZXR1cm4hCi0gICAgICogSWYgZmlsbCA+PSAyLzMgc2l6ZSwgYWRqdXN0IHNpemUuICBOb3JtYWxseSwgdGhpcyBkb3VibGVzIG9yCi0gICAgICogcXVhZHVwbGVzIHRoZSBzaXplLCBidXQgaXQncyBhbHNvIHBvc3NpYmxlIGZvciB0aGUgZGljdCB0byBzaHJpbmsKLSAgICAgKiAoaWYgbWFfZmlsbCBpcyBtdWNoIGxhcmdlciB0aGFuIG1hX3VzZWQsIG1lYW5pbmcgYSBsb3Qgb2YgZGljdAotICAgICAqIGtleXMgaGF2ZSBiZWVuICogZGVsZXRlZCkuCi0gICAgICoKLSAgICAgKiBRdWFkcnVwbGluZyB0aGUgc2l6ZSBpbXByb3ZlcyBhdmVyYWdlIGRpY3Rpb25hcnkgc3BhcnNlbmVzcwotICAgICAqIChyZWR1Y2luZyBjb2xsaXNpb25zKSBhdCB0aGUgY29zdCBvZiBzb21lIG1lbW9yeSBhbmQgaXRlcmF0aW9uCi0gICAgICogc3BlZWQgKHdoaWNoIGxvb3BzIG92ZXIgZXZlcnkgcG9zc2libGUgZW50cnkpLiAgSXQgYWxzbyBoYWx2ZXMKLSAgICAgKiB0aGUgbnVtYmVyIG9mIGV4cGVuc2l2ZSByZXNpemUgb3BlcmF0aW9ucyBpbiBhIGdyb3dpbmcgZGljdGlvbmFyeS4KLSAgICAgKgotICAgICAqIFZlcnkgbGFyZ2UgZGljdGlvbmFyaWVzIChvdmVyIDUwSyBpdGVtcykgdXNlIGRvdWJsaW5nIGluc3RlYWQuCi0gICAgICogVGhpcyBtYXkgaGVscCBhcHBsaWNhdGlvbnMgd2l0aCBzZXZlcmUgbWVtb3J5IGNvbnN0cmFpbnRzLgotICAgICAqLwotICAgIGlmICghKG1wLT5tYV91c2VkID4gbl91c2VkICYmIG1wLT5tYV9maWxsKjMgPj0gKG1wLT5tYV9tYXNrKzEpKjIpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkID4gNTAwMDAgPyAyIDogNCkgKiBtcC0+bWFfdXNlZCk7CisgICAgeCA9IFB5RGljdF9HZXRJdGVtV2l0aEVycm9yKChQeU9iamVjdCAqKWdsb2JhbHMsIGtleSk7CisgICAgaWYgKHggIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIHg7CisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilidWlsdGlucywga2V5KTsKIH0KIAogLyogQ0FVVElPTjogUHlEaWN0X1NldEl0ZW0oKSBtdXN0IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IHJlc2l6ZSB0aGUKQEAgLTgzMywzNiArMTE4NSwzNyBAQAogICogcmVtb3ZlIHRoZW0uCiAgKi8KIGludAotUHlEaWN0X1NldEl0ZW0ocmVnaXN0ZXIgUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCitQeURpY3RfU2V0SXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBQeV9oYXNoX3QgaGFzaDsKLQorICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGFzc2VydChrZXkpOwogICAgIGFzc2VydCh2YWx1ZSk7Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKLSAgICAgICAgaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2g7Ci0gICAgICAgIGlmIChoYXNoID09IC0xKQotICAgICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKLSAgICB9Ci0gICAgZWxzZSB7CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKQorICAgIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiBkaWN0X3NldF9pdGVtX2J5X2hhc2hfb3JfZW50cnkob3AsIGtleSwgaGFzaCwgTlVMTCwgdmFsdWUpOworCisgICAgLyogaW5zZXJ0ZGljdCgpIGhhbmRsZXMgYW55IHJlc2l6aW5nIHRoYXQgbWlnaHQgYmUgbmVjZXNzYXJ5ICovCisgICAgcmV0dXJuIGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpOwogfQogCiBpbnQKIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICpvcCwgUHlPYmplY3QgKmtleSkKIHsKLSAgICByZWdpc3RlciBQeURpY3RPYmplY3QgKm1wOwotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKKyAgICBQeURpY3RPYmplY3QgKm1wOworICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqb2xkX2tleSwgKm9sZF92YWx1ZTsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC04NzAsMjcgKzEyMjMsMzAgQEAKICAgICB9CiAgICAgYXNzZXJ0KGtleSk7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CiAgICAgICAgIHNldF9rZXlfZXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICBvbGRfdmFsdWUgPSBlcC0+bWVfdmFsdWU7Ci0gICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICBvbGRfdmFsdWUgPSAqdmFsdWVfYWRkcjsKKyAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQogICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOwotICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODk4LDY5ICsxMjU0LDcwIEBACiBQeURpY3RfQ2xlYXIoUHlPYmplY3QgKm9wKQogewogICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlEaWN0RW50cnkgKmVwLCAqdGFibGU7Ci0gICAgaW50IHRhYmxlX2lzX21hbGxvY2VkOwotICAgIFB5X3NzaXplX3QgZmlsbDsKLSAgICBQeURpY3RFbnRyeSBzbWFsbF9jb3B5W1B5RGljdF9NSU5TSVpFXTsKLSNpZmRlZiBQeV9ERUJVRworICAgIFB5RGljdEtleXNPYmplY3QgKm9sZGtleXM7CisgICAgUHlPYmplY3QgKipvbGR2YWx1ZXM7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotI2VuZGlmCiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpCiAgICAgICAgIHJldHVybjsKKyAgICBtcCA9ICgoUHlEaWN0T2JqZWN0ICopb3ApOworICAgIG9sZGtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBvbGR2YWx1ZXMgPSBtcC0+bWFfdmFsdWVzOworICAgIGlmIChvbGR2YWx1ZXMgPT0gZW1wdHlfdmFsdWVzKQorICAgICAgICByZXR1cm47CisgICAgLyogRW1wdHkgdGhlIGRpY3QuLi4gKi8KKyAgICBES19JTkNSRUYoUHlfRU1QVFlfS0VZUyk7CisgICAgbXAtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOworICAgIG1wLT5tYV92YWx1ZXMgPSBlbXB0eV92YWx1ZXM7CisgICAgbXAtPm1hX3VzZWQgPSAwOworICAgIC8qIC4uLnRoZW4gY2xlYXIgdGhlIGtleXMgYW5kIHZhbHVlcyAqLworICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICBuID0gREtfU0laRShvbGRrZXlzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIFB5X0NMRUFSKG9sZHZhbHVlc1tpXSk7CisgICAgICAgIGZyZWVfdmFsdWVzKG9sZHZhbHVlcyk7CisgICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgYXNzZXJ0KG9sZGtleXMtPmRrX3JlZmNudCA9PSAxKTsKKyAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgfQorfQorCisvKiBSZXR1cm5zIC0xIGlmIG5vIG1vcmUgaXRlbXMgKG9yIG9wIGlzIG5vdCBhIGRpY3QpLAorICogaW5kZXggb2YgaXRlbSBvdGhlcndpc2UuIFN0b3JlcyB2YWx1ZSBpbiBwdmFsdWUKKyAqLworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitkaWN0X25leHQoUHlPYmplY3QgKm9wLCBQeV9zc2l6ZV90IGksIFB5T2JqZWN0ICoqcHZhbHVlKQoreworICAgIFB5X3NzaXplX3QgbWFzaywgb2Zmc2V0OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CisKKworICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotI2lmZGVmIFB5X0RFQlVHCi0gICAgbiA9IG1wLT5tYV9tYXNrICsgMTsKLSAgICBpID0gMDsKLSNlbmRpZgotCi0gICAgdGFibGUgPSBtcC0+bWFfdGFibGU7Ci0gICAgYXNzZXJ0KHRhYmxlICE9IE5VTEwpOwotICAgIHRhYmxlX2lzX21hbGxvY2VkID0gdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGU7Ci0KLSAgICAvKiBUaGlzIGlzIGRlbGljYXRlLiAgRHVyaW5nIHRoZSBwcm9jZXNzIG9mIGNsZWFyaW5nIHRoZSBkaWN0LAotICAgICAqIGRlY3JlZnMgY2FuIGNhdXNlIHRoZSBkaWN0IHRvIG11dGF0ZS4gIFRvIGF2b2lkIGZhdGFsIGNvbmZ1c2lvbgotICAgICAqICh2b2ljZSBvZiBleHBlcmllbmNlKSwgd2UgaGF2ZSB0byBtYWtlIHRoZSBkaWN0IGVtcHR5IGJlZm9yZQotICAgICAqIGNsZWFyaW5nIHRoZSBzbG90cywgYW5kIG5ldmVyIHJlZmVyIHRvIGFueXRoaW5nIHZpYSBtcC0+eHh4IHdoaWxlCi0gICAgICogY2xlYXJpbmcuCi0gICAgICovCi0gICAgZmlsbCA9IG1wLT5tYV9maWxsOwotICAgIGlmICh0YWJsZV9pc19tYWxsb2NlZCkKLSAgICAgICAgRU1QVFlfVE9fTUlOU0laRShtcCk7Ci0KLSAgICBlbHNlIGlmIChmaWxsID4gMCkgewotICAgICAgICAvKiBJdCdzIGEgc21hbGwgdGFibGUgd2l0aCBzb21ldGhpbmcgdGhhdCBuZWVkcyB0byBiZSBjbGVhcmVkLgotICAgICAgICAgKiBBZnJhaWQgdGhlIG9ubHkgc2FmZSB3YXkgaXMgdG8gY29weSB0aGUgZGljdCBlbnRyaWVzIGludG8KLSAgICAgICAgICogYW5vdGhlciBzbWFsbCB0YWJsZSBmaXJzdC4KLSAgICAgICAgICovCi0gICAgICAgIG1lbWNweShzbWFsbF9jb3B5LCB0YWJsZSwgc2l6ZW9mKHNtYWxsX2NvcHkpKTsKLSAgICAgICAgdGFibGUgPSBzbWFsbF9jb3B5OwotICAgICAgICBFTVBUWV9UT19NSU5TSVpFKG1wKTsKKyAgICBpZiAoaSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykgeworICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KLSAgICAvKiBlbHNlIGl0J3MgYSBzbWFsbCB0YWJsZSB0aGF0J3MgYWxyZWFkeSBlbXB0eSAqLwotCi0gICAgLyogTm93IHdlIGNhbiBmaW5hbGx5IGNsZWFyIHRoaW5ncy4gIElmIEMgaGFkIHJlZmNvdW50cywgd2UgY291bGQKLSAgICAgKiBhc3NlcnQgdGhhdCB0aGUgcmVmY291bnQgb24gdGFibGUgaXMgMSBub3csIGkuZS4gdGhhdCB0aGlzIGZ1bmN0aW9uCi0gICAgICogaGFzIHVuaXF1ZSBhY2Nlc3MgdG8gaXQsIHNvIGRlY3JlZiBzaWRlLWVmZmVjdHMgY2FuJ3QgYWx0ZXIgaXQuCi0gICAgICovCi0gICAgZm9yIChlcCA9IHRhYmxlOyBmaWxsID4gMDsgKytlcCkgewotI2lmZGVmIFB5X0RFQlVHCi0gICAgICAgIGFzc2VydChpIDwgbik7Ci0gICAgICAgICsraTsKLSNlbmRpZgotICAgICAgICBpZiAoZXAtPm1lX2tleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgUHlfREVDUkVGKGVwLT5tZV9rZXkpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihlcC0+bWVfdmFsdWUpOwotICAgICAgICB9Ci0jaWZkZWYgUHlfREVCVUcKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKLSNlbmRpZgorICAgIGVsc2UgeworICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgfQotCi0gICAgaWYgKHRhYmxlX2lzX21hbGxvY2VkKQotICAgICAgICBQeU1lbV9ERUwodGFibGUpOworICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOworICAgICAgICBpKys7CisgICAgfQorICAgIGlmIChpID4gbWFzaykKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChwdmFsdWUpCisgICAgICAgICpwdmFsdWUgPSAqdmFsdWVfcHRyOworICAgIHJldHVybiBpOwogfQogCiAvKgpAQCAtOTgxLDc1ICsxMzM4LDU5IEBACiBpbnQKIFB5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLQotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaSA9ICpwcG9zOworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAwOwotICAgIGVwID0gKChQeURpY3RPYmplY3QgKilvcCktPm1hX3RhYmxlOwotICAgIG1hc2sgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCi0gICAgICAgIGkrKzsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKICAgICAqcHBvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIHJldHVybiAwOwogICAgIGlmIChwa2V5KQotICAgICAgICAqcGtleSA9IGVwW2ldLm1lX2tleTsKLSAgICBpZiAocHZhbHVlKQotICAgICAgICAqcHZhbHVlID0gZXBbaV0ubWVfdmFsdWU7CisgICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwogICAgIHJldHVybiAxOwogfQogCi0vKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9OZXh0IHRoYXQgcmV0dXJucyBhIGhhc2ggdmFsdWUgaW4gYWRkaXRpb24gdG8gdGhlIGtleSBhbmQgdmFsdWUuKi8KKy8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbgorICogdG8gdGhlIGtleSBhbmQgdmFsdWUuCisgKi8KIGludAotX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKK19QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwKKyAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBtYXNrOwotICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKLQotICAgIGlmICghUHlEaWN0X0NoZWNrKG9wKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaSA9ICpwcG9zOworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIHJldHVybiAwOwotICAgIGVwID0gKChQeURpY3RPYmplY3QgKilvcCktPm1hX3RhYmxlOwotICAgIG1hc2sgPSAoKFB5RGljdE9iamVjdCAqKW9wKS0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCi0gICAgICAgIGkrKzsKKyAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKICAgICAqcHBvcyA9IGkrMTsKLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIHJldHVybiAwOwotICAgICpwaGFzaCA9IGVwW2ldLm1lX2hhc2g7CisgICAgKnBoYXNoID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfaGFzaDsKICAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBlcFtpXS5tZV9rZXk7Ci0gICAgaWYgKHB2YWx1ZSkKLSAgICAgICAgKnB2YWx1ZSA9IGVwW2ldLm1lX3ZhbHVlOworICAgICAgICAqcGtleSA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICByZXR1cm4gMTsKIH0KIAogLyogTWV0aG9kcyAqLwogCiBzdGF0aWMgdm9pZAotZGljdF9kZWFsbG9jKHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXApCitkaWN0X2RlYWxsb2MoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7Ci0gICAgUHlfc3NpemVfdCBmaWxsID0gbXAtPm1hX2ZpbGw7CisgICAgUHlPYmplY3QgKip2YWx1ZXMgPSBtcC0+bWFfdmFsdWVzOworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlPYmplY3RfR0NfVW5UcmFjayhtcCk7CiAgICAgUHlfVFJBU0hDQU5fU0FGRV9CRUdJTihtcCkKLSAgICBmb3IgKGVwID0gbXAtPm1hX3RhYmxlOyBmaWxsID4gMDsgZXArKykgewotICAgICAgICBpZiAoZXAtPm1lX2tleSkgewotICAgICAgICAgICAgLS1maWxsOwotICAgICAgICAgICAgUHlfREVDUkVGKGVwLT5tZV9rZXkpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihlcC0+bWVfdmFsdWUpOworICAgIGlmICh2YWx1ZXMgIT0gTlVMTCkgeworICAgICAgICBpZiAodmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgeworICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZV92YWx1ZXModmFsdWVzKTsKICAgICAgICAgfQorICAgICAgICBES19ERUNSRUYoa2V5cyk7CiAgICAgfQotICAgIGlmIChtcC0+bWFfdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGUpCi0gICAgICAgIFB5TWVtX0RFTChtcC0+bWFfdGFibGUpOworICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgICAgICBES19ERUNSRUYoa2V5cyk7CisgICAgfQogICAgIGlmIChudW1mcmVlIDwgUHlEaWN0X01BWEZSRUVMSVNUICYmIFB5X1RZUEUobXApID09ICZQeURpY3RfVHlwZSkKICAgICAgICAgZnJlZV9saXN0W251bWZyZWUrK10gPSBtcDsKICAgICBlbHNlCkBAIC0xMDU3LDYgKzEzOTgsNyBAQAogICAgIFB5X1RSQVNIQ0FOX1NBRkVfRU5EKG1wKQogfQogCisKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3JlcHIoUHlEaWN0T2JqZWN0ICptcCkKIHsKQEAgLTEwODgsMTEgKzE0MzAsMTMgQEAKICAgICBpID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQoKFB5T2JqZWN0ICopbXAsICZpLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGludCBzdGF0dXM7Ci0gICAgICAgIC8qIFByZXZlbnQgcmVwciBmcm9tIGRlbGV0aW5nIHZhbHVlIGR1cmluZyBrZXkgZm9ybWF0LiAqLworICAgICAgICAvKiBQcmV2ZW50IHJlcHIgZnJvbSBkZWxldGluZyBrZXkgb3IgdmFsdWUgZHVyaW5nIGtleSBmb3JtYXQuICovCisgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBzID0gUHlPYmplY3RfUmVwcihrZXkpOwogICAgICAgICBQeVVuaWNvZGVfQXBwZW5kKCZzLCBjb2xvbik7CiAgICAgICAgIFB5VW5pY29kZV9BcHBlbmRBbmREZWwoJnMsIFB5T2JqZWN0X1JlcHIodmFsdWUpKTsKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIERvbmU7CkBAIC0xMTQ3LDI2ICsxNDkxLDI1IEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwotICAgIGFzc2VydChtcC0+bWFfdGFibGUgIT0gTlVMTCk7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdiA9IGVwLT5tZV92YWx1ZTsKKyAgICB2ID0gKnZhbHVlX2FkZHI7CiAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KG1wKSkgewogICAgICAgICAgICAgLyogTG9vayB1cCBfX21pc3NpbmdfXyBtZXRob2QgaWYgd2UncmUgYSBzdWJjbGFzcy4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptaXNzaW5nLCAqcmVzOwotICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICptaXNzaW5nX3N0ciA9IE5VTEw7Ci0gICAgICAgICAgICBtaXNzaW5nID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoKFB5T2JqZWN0ICopbXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fbWlzc2luZ19fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlzc2luZ19zdHIpOworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19taXNzaW5nX18pOworICAgICAgICAgICAgbWlzc2luZyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKChQeU9iamVjdCAqKW1wLCAmUHlJZF9fX21pc3NpbmdfXyk7CiAgICAgICAgICAgICBpZiAobWlzc2luZyAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhtaXNzaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBOVUxMKTsKQEAgLTEyMDQsOCArMTU0Nyw5IEBACiB7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKnY7CiAgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBqOwotICAgIFB5RGljdEVudHJ5ICplcDsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG47CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgIGFnYWluOgogICAgIG4gPSBtcC0+bWFfdXNlZDsKQEAgLTEyMTksMTUgKzE1NjMsMjQgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmIChlcFtpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZlcFswXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKCp2YWx1ZV9wdHIgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IGVwW2ldLm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHYsIGosIGtleSk7CiAgICAgICAgICAgICBqKys7CiAgICAgICAgIH0KKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICB9CiAgICAgYXNzZXJ0KGogPT0gbik7CiAgICAgcmV0dXJuIHY7CkBAIC0xMjM4LDggKzE1OTEsOCBAQAogewogICAgIHJlZ2lzdGVyIFB5T2JqZWN0ICp2OwogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgajsKLSAgICBQeURpY3RFbnRyeSAqZXA7Ci0gICAgUHlfc3NpemVfdCBtYXNrLCBuOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgbiwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgIGFnYWluOgogICAgIG4gPSBtcC0+bWFfdXNlZDsKQEAgLTEyNTMsMTEgKzE2MDYsMTkgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9IG1wLT5tYV90YWJsZTsKLSAgICBtYXNrID0gbXAtPm1hX21hc2s7Ci0gICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPD0gbWFzazsgaSsrKSB7Ci0gICAgICAgIGlmIChlcFtpXS5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSAqdmFsdWVfcHRyOworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOworICAgICAgICBpZiAodmFsdWUgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTSh2LCBqLCB2YWx1ZSk7CiAgICAgICAgICAgICBqKys7CkBAIC0xMjcyLDkgKzE2MzMsMTAgQEAKIHsKICAgICByZWdpc3RlciBQeU9iamVjdCAqdjsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIGosIG47Ci0gICAgUHlfc3NpemVfdCBtYXNrOwotICAgIFB5T2JqZWN0ICppdGVtLCAqa2V5LCAqdmFsdWU7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgb2Zmc2V0OworICAgIFB5T2JqZWN0ICppdGVtLCAqa2V5OworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIC8qIFByZWFsbG9jYXRlIHRoZSBsaXN0IG9mIHR1cGxlcywgdG8gYXZvaWQgYWxsb2NhdGlvbnMgZHVyaW5nCiAgICAgICogdGhlIGxvb3Agb3ZlciB0aGUgaXRlbXMsIHdoaWNoIGNvdWxkIHRyaWdnZXIgR0MsIHdoaWNoCkBAIC0xMzAxLDEwICsxNjYzLDIwIEBACiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQogICAgIC8qIE5vdGhpbmcgd2UgZG8gYmVsb3cgbWFrZXMgYW55IGZ1bmN0aW9uIGNhbGxzLiAqLwotICAgIGVwID0gbXAtPm1hX3RhYmxlOwotICAgIG1hc2sgPSBtcC0+bWFfbWFzazsKLSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8PSBtYXNrOyBpKyspIHsKLSAgICAgICAgaWYgKCh2YWx1ZT1lcFtpXS5tZV92YWx1ZSkgIT0gTlVMTCkgeworICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXM7CisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZlcFswXS5tZV92YWx1ZTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICB9CisgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gKnZhbHVlX3B0cjsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKKyAgICAgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKICAgICAgICAgICAgIGtleSA9IGVwW2ldLm1lX2tleTsKICAgICAgICAgICAgIGl0ZW0gPSBQeUxpc3RfR0VUX0lURU0odiwgaik7CiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKQEAgLTEzNDgsOCArMTcyMCw2IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoX1B5RGljdF9OZXh0KHNlcSwgJnBvcywgJmtleSwgJm9sZHZhbHVlLCAmaGFzaCkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChpbnNlcnRkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNzAsOCArMTc0MCw2IEBACiAgICAgICAgIH0KIAogICAgICAgICB3aGlsZSAoX1B5U2V0X05leHRFbnRyeShzZXEsICZwb3MsICZrZXksICZoYXNoKSkgewotICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGtleSwgaGFzaCwgdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTQyMyw3ICsxNzkxLDggQEAKICAgICAgICAgcmVzdWx0ID0gLTE7CiAKICAgICBlbHNlIGlmIChhcmcgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhhcmcsICJrZXlzIikpCisgICAgICAgIF9QeV9JREVOVElGSUVSKGtleXMpOworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChhcmcsICZQeUlkX2tleXMpKQogICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X01lcmdlKHNlbGYsIGFyZywgMSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9NZXJnZUZyb21TZXEyKHNlbGYsIGFyZywgMSk7CkBAIC0xNTM1LDggKzE5MDQsOCBAQAogUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAsICpvdGhlcjsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0RW50cnkgKmVudHJ5OworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnk7CiAKICAgICAvKiBXZSBhY2NlcHQgZm9yIHRoZSBhcmd1bWVudCBlaXRoZXIgYSBjb25jcmV0ZSBkaWN0aW9uYXJ5IG9iamVjdCwKICAgICAgKiBvciBhbiBhYnN0cmFjdCAibWFwcGluZyIgb2JqZWN0LiAgRm9yIHRoZSBmb3JtZXIsIHdlIGNhbiBkbwpAQCAtMTU2MywyMCArMTkzMiwyMyBAQAogICAgICAgICAgKiBpbmNyZW1lbnRhbGx5IHJlc2l6aW5nIGFzIHdlIGluc2VydCBuZXcgaXRlbXMuICBFeHBlY3QKICAgICAgICAgICogdGhhdCB0aGVyZSB3aWxsIGJlIG5vIChvciBmZXcpIG92ZXJsYXBwaW5nIGtleXMuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKG1wLT5tYV9maWxsICsgb3RoZXItPm1hX3VzZWQpKjMgPj0gKG1wLT5tYV9tYXNrKzEpKjIpIHsKLSAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIChtcC0+bWFfdXNlZCArIG90aGVyLT5tYV91c2VkKSoyKSAhPSAwKQorICAgICAgICBpZiAobXAtPm1hX2tleXMtPmRrX3VzYWJsZSAqIDMgPCBvdGhlci0+bWFfdXNlZCAqIDIpCisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKG1wLT5tYV91c2VkICsgb3RoZXItPm1hX3VzZWQpKjIpICE9IDApCiAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8PSBvdGhlci0+bWFfbWFzazsgaSsrKSB7Ci0gICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfdGFibGVbaV07Ci0gICAgICAgICAgICBpZiAoZW50cnktPm1lX3ZhbHVlICE9IE5VTEwgJiYKKyAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUob3RoZXItPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBlbnRyeSA9ICZvdGhlci0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgICAgIGlmIChvdGhlci0+bWFfdmFsdWVzKQorICAgICAgICAgICAgICAgIHZhbHVlID0gb3RoZXItPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGVudHJ5LT5tZV92YWx1ZTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICE9IE5VTEwgJiYKICAgICAgICAgICAgICAgICAob3ZlcnJpZGUgfHwKICAgICAgICAgICAgICAgICAgUHlEaWN0X0dldEl0ZW0oYSwgZW50cnktPm1lX2tleSkgPT0gTlVMTCkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZW50cnktPm1lX2tleSk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKGVudHJ5LT5tZV92YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKGluc2VydGRpY3QobXAsIGVudHJ5LT5tZV9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1lX2hhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPm1lX3ZhbHVlKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKSAhPSAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE2MzgsMTEgKzIwMTAsMzcgQEAKIFB5RGljdF9Db3B5KFB5T2JqZWN0ICpvKQogewogICAgIFB5T2JqZWN0ICpjb3B5OworICAgIFB5RGljdE9iamVjdCAqbXA7CisgICAgUHlfc3NpemVfdCBpLCBuOwogCiAgICAgaWYgKG8gPT0gTlVMTCB8fCAhUHlEaWN0X0NoZWNrKG8pKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopbzsKKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBQeURpY3RPYmplY3QgKnNwbGl0X2NvcHk7CisgICAgICAgIFB5T2JqZWN0ICoqbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhES19TSVpFKG1wLT5tYV9rZXlzKSk7CisgICAgICAgIGlmIChuZXd2YWx1ZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBzcGxpdF9jb3B5ID0gUHlPYmplY3RfR0NfTmV3KFB5RGljdE9iamVjdCwgJlB5RGljdF9UeXBlKTsKKyAgICAgICAgaWYgKHNwbGl0X2NvcHkgPT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZV92YWx1ZXMobmV3dmFsdWVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNwbGl0X2NvcHktPm1hX3ZhbHVlcyA9IG5ld3ZhbHVlczsKKyAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOworICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CisgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7CisgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOworICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKG1wKSkKKyAgICAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhzcGxpdF9jb3B5KTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNwbGl0X2NvcHk7CisgICAgfQogICAgIGNvcHkgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKGNvcHkgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xNzA0LDE0ICsyMTAyLDE4IEBACiAgICAgaWYgKGEtPm1hX3VzZWQgIT0gYi0+bWFfdXNlZCkKICAgICAgICAgLyogY2FuJ3QgYmUgZXF1YWwgaWYgIyBvZiBlbnRyaWVzIGRpZmZlciAqLwogICAgICAgICByZXR1cm4gMDsKLQogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPD0gYS0+bWFfbWFzazsgaSsrKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphdmFsID0gYS0+bWFfdGFibGVbaV0ubWVfdmFsdWU7CisgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUoYS0+bWFfa2V5cyk7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZXAgPSAmYS0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmF2YWw7CisgICAgICAgIGlmIChhLT5tYV92YWx1ZXMpCisgICAgICAgICAgICBhdmFsID0gYS0+bWFfdmFsdWVzW2ldOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhdmFsID0gZXAtPm1lX3ZhbHVlOwogICAgICAgICBpZiAoYXZhbCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpbnQgY21wOwogICAgICAgICAgICAgUHlPYmplY3QgKmJ2YWw7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5ID0gYS0+bWFfdGFibGVbaV0ubWVfa2V5OworICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICAvKiB0ZW1wb3JhcmlseSBidW1wIGF2YWwncyByZWZjb3VudCB0byBlbnN1cmUgaXQgc3RheXMKICAgICAgICAgICAgICAgIGFsaXZlIHVudGlsIHdlJ3JlIGRvbmUgd2l0aCBpdCAqLwogICAgICAgICAgICAgUHlfSU5DUkVGKGF2YWwpOwpAQCAtMTczMiw3ICsyMTM0LDcgQEAKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMTsKLSB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3JpY2hjb21wYXJlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywgaW50IG9wKQpAQCAtMTc1MywyNCArMjE1NSwyNSBAQAogICAgICAgICByZXMgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKICAgICBQeV9JTkNSRUYocmVzKTsKICAgICByZXR1cm4gcmVzOwotIH0KK30KIAogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3RfY29udGFpbnMocmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSkKIHsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RFbnRyeSAqZXA7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE3ODAsMjggKzIxODMsMjggQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJnZXQiLCAxLCAyLCAma2V5LCAmZmFpbG9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwogICAgIGlmIChlcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSBlcC0+bWVfdmFsdWU7CisgICAgdmFsID0gKnZhbHVlX2FkZHI7CiAgICAgaWYgKHZhbCA9PSBOVUxMKQogICAgICAgICB2YWwgPSBmYWlsb2JqOwogICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CiAKLQogc3RhdGljIFB5T2JqZWN0ICoKIGRpY3Rfc2V0ZGVmYXVsdChyZWdpc3RlciBQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE4MDksMjcgKzIyMTIsNDAgQEAKICAgICBQeU9iamVjdCAqZmFpbG9iaiA9IFB5X05vbmU7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRkZWZhdWx0IiwgMSwgMiwgJmtleSwgJmZhaWxvYmopKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAotICAgICAgICAoaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CisgICAgICAgIChoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopIGtleSktPmhhc2gpID09IC0xKSB7CiAgICAgICAgIGhhc2ggPSBQeU9iamVjdF9IYXNoKGtleSk7CiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKICAgICBpZiAoZXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gZXAtPm1lX3ZhbHVlOworICAgIHZhbCA9ICp2YWx1ZV9hZGRyOwogICAgIGlmICh2YWwgPT0gTlVMTCkgewotICAgICAgICBpZiAoZGljdF9zZXRfaXRlbV9ieV9oYXNoX29yX2VudHJ5KChQeU9iamVjdCopbXAsIGtleSwgaGFzaCwgZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbG9iaikgPT0gMCkKLSAgICAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgICAgIFB5X0lOQ1JFRihmYWlsb2JqKTsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgfQorICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBmYWlsb2JqKTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKKyAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICAqdmFsdWVfYWRkciA9IGZhaWxvYmo7CisgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka191c2FibGUtLTsKKyAgICAgICAgbXAtPm1hX3VzZWQrKzsKICAgICB9Ci0gICAgUHlfWElOQ1JFRih2YWwpOworICAgIFB5X0lOQ1JFRih2YWwpOwogICAgIHJldHVybiB2YWw7CiB9CiAKQEAgLTE4NDUsOSArMjI2MSwxMCBAQAogZGljdF9wb3AoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogICAgIFB5T2JqZWN0ICprZXksICpkZWZsdCA9IE5VTEw7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicG9wIiwgMSwgMiwgJmtleSwgJmRlZmx0KSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODYwLDE1ICsyMjc3LDE2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfbG9va3VwKShtcCwga2V5LCBoYXNoKTsKKyAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CiAgICAgaWYgKGVwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChlcC0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CiAgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CkBAIC0xODc2LDEzICsyMjk0LDE1IEBACiAgICAgICAgIHNldF9rZXlfZXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKKyAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKKyAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OworICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7CisgICAgfQogICAgIHJldHVybiBvbGRfdmFsdWU7CiB9CiAKQEAgLTE4OTAsOSArMjMxMCwxMCBAQAogZGljdF9wb3BpdGVtKFB5RGljdE9iamVjdCAqbXApCiB7CiAgICAgUHlfaGFzaF90IGkgPSAwOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAorCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0xOTExLDI1ICsyMzMyLDM0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAicG9waXRlbSgpOiBkaWN0aW9uYXJ5IGlzIGVtcHR5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBDb252ZXJ0IHNwbGl0IHRhYmxlIHRvIGNvbWJpbmVkIHRhYmxlICovCisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3Rfc3BsaXQpIHsKKyAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIERLX1NJWkUobXAtPm1hX2tleXMpKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBFTlNVUkVfQUxMT1dTX0RFTEVUSU9OUyhtcCk7CiAgICAgLyogU2V0IGVwIHRvICJ0aGUgZmlyc3QiIGRpY3QgZW50cnkgd2l0aCBhIHZhbHVlLiAgV2UgYWJ1c2UgdGhlIGhhc2gKICAgICAgKiBmaWVsZCBvZiBzbG90IDAgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXI6CiAgICAgICogSWYgc2xvdCAwIGhhcyBhIHZhbHVlLCB1c2Ugc2xvdCAwLgogICAgICAqIEVsc2Ugc2xvdCAwIGlzIGJlaW5nIHVzZWQgdG8gaG9sZCBhIHNlYXJjaCBmaW5nZXIsCiAgICAgICogYW5kIHdlIHVzZSBpdHMgaGFzaCB2YWx1ZSBhcyB0aGUgZmlyc3QgaW5kZXggdG8gbG9vay4KICAgICAgKi8KLSAgICBlcCA9ICZtcC0+bWFfdGFibGVbMF07CisgICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CiAgICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwogICAgICAgICBpID0gZXAtPm1lX2hhc2g7CiAgICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKICAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKICAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCiAgICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1wLT5tYV9tYXNrIHx8IGkgPCAxKQorICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCiAgICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX3RhYmxlW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgeworICAgICAgICB3aGlsZSAoKGVwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldKS0+bWVfdmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGkgPiBtcC0+bWFfbWFzaykKKyAgICAgICAgICAgIGlmIChpID4gbWFzaykKICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgfQogICAgIH0KQEAgLTE5MzksMjEgKzIzNjksMzQgQEAKICAgICBlcC0+bWVfa2V5ID0gZHVtbXk7CiAgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKICAgICBtcC0+bWFfdXNlZC0tOwotICAgIGFzc2VydChtcC0+bWFfdGFibGVbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX3RhYmxlWzBdLm1lX2hhc2ggPSBpICsgMTsgIC8qIG5leHQgcGxhY2UgdG8gc3RhcnQgKi8KKyAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7CisgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOwotICAgIFB5T2JqZWN0ICpwazsKLSAgICBQeU9iamVjdCAqcHY7Ci0KLSAgICB3aGlsZSAoUHlEaWN0X05leHQob3AsICZpLCAmcGssICZwdikpIHsKLSAgICAgICAgUHlfVklTSVQocGspOwotICAgICAgICBQeV9WSVNJVChwdik7CisgICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7CisgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IERLX1NJWkUobXAtPm1hX2tleXMpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobXAtPm1hX3ZhbHVlcyAhPSBOVUxMKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gREtfU0laRShtcC0+bWFfa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTE5NzAsMTQgKzI0MTMsMjUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3NpemVvZihQeURpY3RPYmplY3QgKm1wKQogewotICAgIFB5X3NzaXplX3QgcmVzOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgcmVzOwogCisgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOwogICAgIHJlcyA9IHNpemVvZihQeURpY3RPYmplY3QpOwotICAgIGlmIChtcC0+bWFfdGFibGUgIT0gbXAtPm1hX3NtYWxsdGFibGUpCi0gICAgICAgIHJlcyA9IHJlcyArIChtcC0+bWFfbWFzayArIDEpICogc2l6ZW9mKFB5RGljdEVudHJ5KTsKKyAgICBpZiAobXAtPm1hX3ZhbHVlcykKKyAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAvKiBJZiB0aGUgZGljdGlvbmFyeSBpcyBzcGxpdCwgdGhlIGtleXMgcG9ydGlvbiBpcyBhY2NvdW50ZWQtZm9yCisgICAgICAgaW4gdGhlIHR5cGUgb2JqZWN0LiAqLworICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfcmVmY250ID09IDEpCisgICAgICAgIHJlcyArPSBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoc2l6ZS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXMpOwogfQogCitQeV9zc2l6ZV90CitfUHlEaWN0X0tleXNTaXplKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgcmV0dXJuIHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChES19TSVpFKGtleXMpLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKK30KKwogUHlEb2NfU1RSVkFSKGNvbnRhaW5zX19kb2NfXywKICJELl9fY29udGFpbnNfXyhrKSAtPiBUcnVlIGlmIEQgaGFzIGEga2V5IGssIGVsc2UgRmFsc2UiKTsKIApAQCAtMjA2NiwxNiArMjUyMCwxNyBAQAogewogICAgIFB5X2hhc2hfdCBoYXNoOwogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0RW50cnkgKmVwOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7Ci0gICAgcmV0dXJuIGVwID09IE5VTEwgPyAtMSA6IChlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSW50ZXJuYWwgdmVyc2lvbiBvZiBQeURpY3RfQ29udGFpbnMgdXNlZCB3aGVuIHRoZSBoYXNoIHZhbHVlIGlzIGFscmVhZHkga25vd24gKi8KQEAgLTIwODMsMTAgKzI1MzgsMTEgQEAKIF9QeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEVudHJ5ICplcDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgZXAgPSAobXAtPm1hX2xvb2t1cCkobXAsIGtleSwgaGFzaCk7Ci0gICAgcmV0dXJuIGVwID09IE5VTEwgPyAtMSA6IChlcC0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKIH0KIAogLyogSGFjayB0byBpbXBsZW1lbnQgImtleSBpbiBkaWN0IiAqLwpAQCAtMjExMiwyMiArMjU2OCwxNyBAQAogICAgIHNlbGYgPSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIFB5RGljdE9iamVjdCAqZCA9IChQeURpY3RPYmplY3QgKilzZWxmOwotICAgICAgICAvKiBJdCdzIGd1YXJhbnRlZWQgdGhhdCB0cC0+YWxsb2MgemVyb2VkIG91dCB0aGUgc3RydWN0LiAqLwotICAgICAgICBhc3NlcnQoZC0+bWFfdGFibGUgPT0gTlVMTCAmJiBkLT5tYV9maWxsID09IDAgJiYgZC0+bWFfdXNlZCA9PSAwKTsKLSAgICAgICAgSU5JVF9OT05aRVJPX0RJQ1RfU0xPVFMoZCk7Ci0gICAgICAgIGQtPm1hX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGU7CisgICAgICAgIGQtPm1hX2tleXMgPSBuZXdfa2V5c19vYmplY3QoUHlEaWN0X01JTlNJWkVfQ09NQklORUQpOworICAgICAgICAvKiBYWFggLSBTaG91bGQgd2UgcmFpc2UgYSBuby1tZW1vcnkgZXJyb3I/ICovCisgICAgICAgIGlmIChkLT5tYV9rZXlzID09IE5VTEwpIHsKKyAgICAgICAgICAgIERLX0lOQ1JFRihQeV9FTVBUWV9LRVlTKTsKKyAgICAgICAgICAgIGQtPm1hX2tleXMgPSBQeV9FTVBUWV9LRVlTOworICAgICAgICAgICAgZC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOworICAgICAgICB9CisgICAgICAgIGQtPm1hX3VzZWQgPSAwOwogICAgICAgICAvKiBUaGUgb2JqZWN0IGhhcyBiZWVuIGltcGxpY2l0bHkgdHJhY2tlZCBieSB0cF9hbGxvYyAqLwogICAgICAgICBpZiAodHlwZSA9PSAmUHlEaWN0X1R5cGUpCiAgICAgICAgICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhkKTsKLSNpZmRlZiBTSE9XX0NPTlZFUlNJT05fQ09VTlRTCi0gICAgICAgICsrY3JlYXRlZDsKLSNlbmRpZgotI2lmZGVmIFNIT1dfVFJBQ0tfQ09VTlQKLSAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19JU19UUkFDS0VEKGQpKQotICAgICAgICAgICAgY291bnRfdHJhY2tlZCsrOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb3VudF91bnRyYWNrZWQrKzsKLSNlbmRpZgogICAgIH0KICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTIxOTgsNiArMjY0OSwxNiBAQAogICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAorUHlPYmplY3QgKgorX1B5RGljdF9HZXRJdGVtSWQoUHlPYmplY3QgKmRwLCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKmtleSkKK3sKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW0oZHAsIGt2KTsKK30KKwogLyogRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgZGljdGlvbmFyeSBpbnRlcmZhY2UgKi8KIAogUHlPYmplY3QgKgpAQCAtMjIxMyw2ICsyNjc0LDE2IEBACiB9CiAKIGludAorX1B5RGljdF9TZXRJdGVtSWQoUHlPYmplY3QgKnYsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqa2V5LCBQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqa3Y7CisgICAga3YgPSBfUHlVbmljb2RlX0Zyb21JZChrZXkpOyAvKiBib3Jyb3dlZCAqLworICAgIGlmIChrdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIFB5RGljdF9TZXRJdGVtKHYsIGt2LCBpdGVtKTsKK30KKworaW50CiBQeURpY3RfU2V0SXRlbVN0cmluZyhQeU9iamVjdCAqdiwgY29uc3QgY2hhciAqa2V5LCBQeU9iamVjdCAqaXRlbSkKIHsKICAgICBQeU9iamVjdCAqa3Y7CkBAIC0yMzAzLDE4ICsyNzc0LDI2IEBACiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLAogICAgICAgICAgICAgICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX3JlZHVjZShkaWN0aXRlcm9iamVjdCAqZGkpOworCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBkaWN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pZGljdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywKICAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWRpY3RpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CisgICAgcmVnaXN0ZXIgUHlEaWN0S2V5c09iamVjdCAqazsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMzMCwxNSArMjgwOSwyNSBAQAogICAgIGkgPSBkaS0+ZGlfcG9zOwogICAgIGlmIChpIDwgMCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgbWFzayA9IGQtPm1hX21hc2s7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiBlcFtpXS5tZV92YWx1ZSA9PSBOVUxMKQorICAgIGsgPSBkLT5tYV9rZXlzOworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIG1hc2sgPSBES19TSVpFKGspLTE7CisgICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKICAgICAgICAgaSsrOworICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBlcFtpXS5tZV9rZXk7CisgICAga2V5ID0gay0+ZGtfZW50cmllc1tpXS5tZV9rZXk7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgcmV0dXJuIGtleTsKIApAQCAtMjM4NCw5ICsyODczLDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzazsKLSAgICByZWdpc3RlciBQeURpY3RFbnRyeSAqZXA7CisgICAgcmVnaXN0ZXIgUHlfc3NpemVfdCBpLCBtYXNrLCBvZmZzZXQ7CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7CisgICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0MDAsMTcgKzI4ODksMjYgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKKyAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOwogICAgIGlmIChpIDwgMCB8fCBpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwotICAgIGVwID0gZC0+bWFfdGFibGU7Ci0gICAgd2hpbGUgKCh2YWx1ZT1lcFtpXS5tZV92YWx1ZSkgPT0gTlVMTCkgeworICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKKyAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgfQorICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7CiAgICAgICAgIGkrKzsKICAgICAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwogICAgIGRpLT5sZW4tLTsKKyAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICByZXR1cm4gdmFsdWU7CiAKQEAgLTI0NTYsOSArMjk1NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0aXRlbShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2s7Ci0gICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOworICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OworICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNDc0LDEwICsyOTcyLDE5IEBACiAgICAgaSA9IGRpLT5kaV9wb3M7CiAgICAgaWYgKGkgPCAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgZXAgPSBkLT5tYV90YWJsZTsKLSAgICBtYXNrID0gZC0+bWFfbWFzazsKLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmIGVwW2ldLm1lX3ZhbHVlID09IE5VTEwpCisgICAgbWFzayA9IERLX1NJWkUoZC0+bWFfa2V5cyktMTsKKyAgICBpZiAoZC0+bWFfdmFsdWVzKSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOworICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgIH0KKyAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgeworICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwogICAgICAgICBpKys7CisgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgaWYgKGkgPiBtYXNrKQogICAgICAgICBnb3RvIGZhaWw7CkBAIC0yNDkyLDggKzI5OTksOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBlcFtpXS5tZV9rZXk7Ci0gICAgdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKKyAgICBrZXkgPSBkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKKyAgICB2YWx1ZSA9ICp2YWx1ZV9wdHI7CiAgICAgUHlfSU5DUkVGKGtleSk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsKQEAgLTI1NDAsNiArMzA0Nyw1MiBAQAogfTsKIAogCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfcmVkdWNlKGRpY3RpdGVyb2JqZWN0ICpkaSkKK3sKKyAgICBQeU9iamVjdCAqbGlzdDsKKyAgICBkaWN0aXRlcm9iamVjdCB0bXA7CisKKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoIWxpc3QpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogY29weSB0aGUgaXRlcnRvciBzdGF0ZSAqLworICAgIHRtcCA9ICpkaTsKKyAgICBQeV9YSU5DUkVGKHRtcC5kaV9kaWN0KTsKKworICAgIC8qIGl0ZXJhdGUgdGhlIHRlbXBvcmFyeSBpbnRvIGEgbGlzdCAqLworICAgIGZvcig7OykgeworICAgICAgICBQeU9iamVjdCAqZWxlbWVudCA9IDA7CisgICAgICAgIGlmIChQeV9UWVBFKGRpKSA9PSAmUHlEaWN0SXRlckl0ZW1fVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dGl0ZW0oJnRtcCk7CisgICAgICAgIGVsc2UgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVyS2V5X1R5cGUpCisgICAgICAgICAgICBlbGVtZW50ID0gZGljdGl0ZXJfaXRlcm5leHRrZXkoJnRtcCk7CisgICAgICAgIGVsc2UgaWYgKFB5X1RZUEUoZGkpID09ICZQeURpY3RJdGVyVmFsdWVfVHlwZSkKKyAgICAgICAgICAgIGVsZW1lbnQgPSBkaWN0aXRlcl9pdGVybmV4dHZhbHVlKCZ0bXApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChsaXN0LCBlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXAuZGlfZGljdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X1hERUNSRUYodG1wLmRpX2RpY3QpOworICAgIC8qIGNoZWNrIGZvciBlcnJvciAqLworICAgIGlmICh0bXAuZGlfZGljdCAhPSBOVUxMKSB7CisgICAgICAgIC8qIHdlIGhhdmUgYW4gZXJyb3IgKi8KKyAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCBsaXN0KTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVmlldyBvYmplY3RzIGZvciBrZXlzKCksIGl0ZW1zKCksIHZhbHVlcygpLiAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMjY0NCwxMCArMzE5Nyw4IEBACiAgICAgYXNzZXJ0KFB5RGljdFZpZXdTZXRfQ2hlY2soc2VsZikpOwogICAgIGFzc2VydChvdGhlciAhPSBOVUxMKTsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICYmICFQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpICYmICFQeURpY3RWaWV3U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogCiAgICAgbGVuX3NlbGYgPSBQeU9iamVjdF9TaXplKHNlbGYpOwogICAgIGlmIChsZW5fc2VsZiA8IDApCkBAIC0yNzQ1LDEwICszMjk2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKGRpZmZlcmVuY2VfdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImRpZmZlcmVuY2VfdXBkYXRlIiwgIk8iLCBvdGhlcik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX2RpZmZlcmVuY2VfdXBkYXRlLCAiTyIsIG90aGVyKTsKICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjc2MywxMCArMzMxNiwxMiBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeVNldF9OZXcoc2VsZik7CiAgICAgUHlPYmplY3QgKnRtcDsKKyAgICBfUHlfSURFTlRJRklFUihpbnRlcnNlY3Rpb25fdXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgImludGVyc2VjdGlvbl91cGRhdGUiLCAiTyIsIG90aGVyKTsKKyAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJlc3VsdCwgJlB5SWRfaW50ZXJzZWN0aW9uX3VwZGF0ZSwgIk8iLCBvdGhlcik7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI3ODEsMTAgKzMzMzYsMTIgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlTZXRfTmV3KHNlbGYpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIodXBkYXRlKTsKKwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJlc3VsdCwgInVwZGF0ZSIsICJPIiwgb3RoZXIpOworICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmVzdWx0LCAmUHlJZF91cGRhdGUsICJPIiwgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNzk5LDEwICszMzU2LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5U2V0X05ldyhzZWxmKTsKICAgICBQeU9iamVjdCAqdG1wOworICAgIF9QeV9JREVOVElGSUVSKHN5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSk7CisKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUiLCAiTyIsCisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyZXN1bHQsICZQeUlkX3N5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZSwgIk8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTMwODEsMyArMzY0MCwxNTEgQEAKIHsKICAgICByZXR1cm4gZGljdHZpZXdfbmV3KGRpY3QsICZQeURpY3RWYWx1ZXNfVHlwZSk7CiB9CisKKy8qIFJldHVybnMgTlVMTCBpZiBjYW5ub3QgYWxsb2NhdGUgYSBuZXcgUHlEaWN0S2V5c09iamVjdCwKKyAgIGJ1dCBkb2VzIG5vdCBzZXQgYW4gZXJyb3IgKi8KK1B5RGljdEtleXNPYmplY3QgKgorX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCkKK3sKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBpZiAoa2V5cyA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UKKyAgICAgICAga2V5cy0+ZGtfbG9va3VwID0gbG9va2RpY3Rfc3BsaXQ7CisgICAgcmV0dXJuIGtleXM7Cit9CisKKyNkZWZpbmUgQ0FDSEVEX0tFWVModHApICgoKFB5SGVhcFR5cGVPYmplY3QqKXRwKS0+aHRfY2FjaGVkX2tleXMpCisKK1B5T2JqZWN0ICoKK1B5T2JqZWN0X0dlbmVyaWNHZXREaWN0KFB5T2JqZWN0ICpvYmosIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlPYmplY3QgKmRpY3QsICoqZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CisgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBkaWN0ID0gKmRpY3RwdHI7CisgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShvYmopOworICAgICAgICBpZiAoKHRwLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpICYmIENBQ0hFRF9LRVlTKHRwKSkgeworICAgICAgICAgICAgREtfSU5DUkVGKENBQ0hFRF9LRVlTKHRwKSk7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBuZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKENBQ0hFRF9LRVlTKHRwKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWElOQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gZGljdDsKK30KKworaW50CitfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlUeXBlT2JqZWN0ICp0cCwgUHlPYmplY3QgKipkaWN0cHRyLAorICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5T2JqZWN0ICpkaWN0OworICAgIGludCByZXM7CisgICAgUHlEaWN0S2V5c09iamVjdCAqY2FjaGVkOworCisgICAgYXNzZXJ0KGRpY3RwdHIgIT0gTlVMTCk7CisgICAgaWYgKCh0cC0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSAmJiAoY2FjaGVkID0gQ0FDSEVEX0tFWVModHApKSkgeworICAgICAgICBhc3NlcnQoZGljdHB0ciAhPSBOVUxMKTsKKyAgICAgICAgZGljdCA9ICpkaWN0cHRyOworICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBES19JTkNSRUYoY2FjaGVkKTsKKyAgICAgICAgICAgIGRpY3QgPSBuZXdfZGljdF93aXRoX3NoYXJlZF9rZXlzKGNhY2hlZCk7CisgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICpkaWN0cHRyID0gZGljdDsKKyAgICAgICAgfQorICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X0RlbEl0ZW0oZGljdCwga2V5KTsKKyAgICAgICAgICAgIGlmIChjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IE5VTEw7CisgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfU2V0SXRlbShkaWN0LCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChjYWNoZWQgIT0gKChQeURpY3RPYmplY3QgKilkaWN0KS0+bWFfa2V5cykgeworICAgICAgICAgICAgICAgIC8qIEVpdGhlciB1cGRhdGUgdHAtPmh0X2NhY2hlZF9rZXlzIG9yIGRlbGV0ZSBpdCAqLworICAgICAgICAgICAgICAgIGlmIChjYWNoZWQtPmRrX3JlZmNudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIENBQ0hFRF9LRVlTKHRwKSA9IG1ha2Vfa2V5c19zaGFyZWQoZGljdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CisgICAgICAgICAgICAgICAgaWYgKENBQ0hFRF9LRVlTKHRwKSA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICAgICAgaWYgKGRpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgKmRpY3RwdHIgPSBkaWN0OworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBrZXkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwga2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZAorX1B5RGljdEtleXNfRGVjUmVmKFB5RGljdEtleXNPYmplY3QgKmtleXMpCit7CisgICAgREtfREVDUkVGKGtleXMpOworfQorCisKKy8qIEFSR1NVU0VEICovCitzdGF0aWMgUHlPYmplY3QgKgorZHVtbXlfcmVwcihQeU9iamVjdCAqb3ApCit7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZHVtbXkga2V5PiIpOworfQorCisvKiBBUkdVU0VEICovCitzdGF0aWMgdm9pZAorZHVtbXlfZGVhbGxvYyhQeU9iamVjdCogaWdub3JlKQoreworICAgIC8qIFRoaXMgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQsIGJ1dCB3ZSBhbHNvIGRvbid0IHdhbnQgdG8gU0VHViBpZgorICAgICAqIHdlIGFjY2lkZW50YWxseSBkZWNyZWYgZHVtbXkta2V5IG91dCBvZiBleGlzdGVuY2UuCisgICAgICovCisgICAgUHlfRmF0YWxFcnJvcigiZGVhbGxvY2F0aW5nIDxkdW1teSBrZXk+Iik7Cit9CisKK3N0YXRpYyBQeVR5cGVPYmplY3QgUHlEaWN0RHVtbXlfVHlwZSA9IHsKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQorICAgICI8ZHVtbXkga2V5PiB0eXBlIiwKKyAgICAwLAorICAgIDAsCisgICAgZHVtbXlfZGVhbGxvYywgICAgICAvKnRwX2RlYWxsb2MqLyAvKm5ldmVyIGNhbGxlZCovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCisgICAgZHVtbXlfcmVwciwgICAgICAgICAvKnRwX3JlcHIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLworfTsKKworc3RhdGljIFB5T2JqZWN0IF9kdW1teV9zdHJ1Y3QgPSB7CisgIF9QeU9iamVjdF9FWFRSQV9JTklUCisgIDIsICZQeURpY3REdW1teV9UeXBlCit9OworCmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IDAwYTMzNDYuLmM0NThjZmUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0xNTgsNiArMTU4LDIyIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2VudW1fcmVkdWNlKGVudW1vYmplY3QgKmVuKQoreworICAgIGlmIChlbi0+ZW5fbG9uZ2luZGV4ICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUoZW4pLCBlbi0+ZW5fc2l0LCBlbi0+ZW5fbG9uZ2luZGV4KTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9uKSIsIFB5X1RZUEUoZW4pLCBlbi0+ZW5fc2l0LCBlbi0+ZW5faW5kZXgpOworfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU1ldGhvZERlZiBlbnVtX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pZW51bV9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGVudW1fZG9jLAogImVudW1lcmF0ZShpdGVyYWJsZVssIHN0YXJ0XSkgLT4gaXRlcmF0b3IgZm9yIGluZGV4LCB2YWx1ZSBvZiBpdGVyYWJsZVxuIgogIlxuIgpAQCAtMTk3LDcgKzIxMyw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWVudW1fbmV4dCwgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgZW51bV9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTIyNCw4ICsyNDAsOCBAQAogewogICAgIFB5X3NzaXplX3QgbjsKICAgICBQeU9iamVjdCAqc2VxLCAqcmV2ZXJzZWRfbWV0aDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJldmVyc2VkX2NhY2hlID0gTlVMTDsKICAgICByZXZlcnNlZG9iamVjdCAqcm87CisgICAgX1B5X0lERU5USUZJRVIoX19yZXZlcnNlZF9fKTsKIAogICAgIGlmICh0eXBlID09ICZQeVJldmVyc2VkX1R5cGUgJiYgIV9QeUFyZ19Ob0tleXdvcmRzKCJyZXZlcnNlZCgpIiwga3dkcykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMzLDcgKzI0OSw3IEBACiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAicmV2ZXJzZWQiLCAxLCAxLCAmc2VxKSApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgIl9fcmV2ZXJzZWRfXyIsICZyZXZlcnNlZF9jYWNoZSk7CisgICAgcmV2ZXJzZWRfbWV0aCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHNlcSwgJlB5SWRfX19yZXZlcnNlZF9fKTsKICAgICBpZiAocmV2ZXJzZWRfbWV0aCAhPSBOVUxMKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHJldmVyc2VkX21ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYocmV2ZXJzZWRfbWV0aCk7CkBAIC0zMTksOCArMzM1LDQwIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK3JldmVyc2VkX3JlZHVjZShyZXZlcnNlZG9iamVjdCAqcm8pCit7CisgICAgaWYgKHJvLT5zZXEpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE8pbiIsIFB5X1RZUEUocm8pLCByby0+c2VxLCByby0+aW5kZXgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk8oKCkpIiwgUHlfVFlQRShybykpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmV2ZXJzZWRfc2V0c3RhdGUocmV2ZXJzZWRvYmplY3QgKnJvLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocm8tPnNlcSAhPSAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5U2VxdWVuY2VfU2l6ZShyby0+c2VxKTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBuLTEpCisgICAgICAgICAgICBpbmRleCA9IG4tMTsKKyAgICAgICAgcm8tPmluZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgcmV2ZXJzZWRpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9sZW4sIE1FVEhfTk9BUkdTLCBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilyZXZlcnNlZF9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDlkYWExMmEuLjZiMDQ3MDAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC0xMCw2ICsxMCwyMCBAQAogI2luY2x1ZGUgIm9zZGVmcy5oIgogCiAKKy8qIENvbXBhdGliaWxpdHkgYWxpYXNlcyAqLworUHlPYmplY3QgKlB5RXhjX0Vudmlyb25tZW50RXJyb3IgPSBOVUxMOworUHlPYmplY3QgKlB5RXhjX0lPRXJyb3IgPSBOVUxMOworI2lmZGVmIE1TX1dJTkRPV1MKK1B5T2JqZWN0ICpQeUV4Y19XaW5kb3dzRXJyb3IgPSBOVUxMOworI2VuZGlmCisjaWZkZWYgX19WTVMKK1B5T2JqZWN0ICpQeUV4Y19WTVNFcnJvciA9IE5VTEw7CisjZW5kaWYKKworLyogVGhlIGRpY3QgbWFwIGZyb20gZXJybm8gY29kZXMgdG8gT1NFcnJvciBzdWJjbGFzc2VzICovCitzdGF0aWMgUHlPYmplY3QgKmVycm5vbWFwID0gTlVMTDsKKworCiAvKiBOT1RFOiBJZiB0aGUgZXhjZXB0aW9uIGNsYXNzIGhpZXJhcmNoeSBjaGFuZ2VzLCBkb24ndCBmb3JnZXQgdG8gdXBkYXRlCiAgKiBMaWIvdGVzdC9leGNlcHRpb25faGllcmFyY2h5LnR4dAogICovCkBAIC0yOCw2ICs0MiwxMyBAQAogICAgIC8qIHRoZSBkaWN0IGlzIGNyZWF0ZWQgb24gdGhlIGZseSBpbiBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciAqLwogICAgIHNlbGYtPmRpY3QgPSBOVUxMOwogICAgIHNlbGYtPnRyYWNlYmFjayA9IHNlbGYtPmNhdXNlID0gc2VsZi0+Y29udGV4dCA9IE5VTEw7CisgICAgc2VsZi0+c3VwcHJlc3NfY29udGV4dCA9IDA7CisKKyAgICBpZiAoYXJncykgeworICAgICAgICBzZWxmLT5hcmdzID0gYXJnczsKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICB9CiAKICAgICBzZWxmLT5hcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAgICAgaWYgKCFzZWxmLT5hcmdzKSB7CkBAIC00MSwxMiArNjIsMTUgQEAKIHN0YXRpYyBpbnQKIEJhc2VFeGNlcHRpb25faW5pdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBQeU9iamVjdCAqdG1wOworCiAgICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcyhQeV9UWVBFKHNlbGYpLT50cF9uYW1lLCBrd2RzKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgUHlfREVDUkVGKHNlbGYtPmFyZ3MpOworICAgIHRtcCA9IHNlbGYtPmFyZ3M7CiAgICAgc2VsZi0+YXJncyA9IGFyZ3M7CiAgICAgUHlfSU5DUkVGKHNlbGYtPmFyZ3MpOworICAgIFB5X1hERUNSRUYodG1wKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMTYzLDM2ICsxODcsNiBAQAogICAge05VTEwsIE5VTEwsIDAsIE5VTEx9LAogfTsKIAotCi1zdGF0aWMgUHlPYmplY3QgKgotQmFzZUV4Y2VwdGlvbl9nZXRfZGljdChQeUJhc2VFeGNlcHRpb25PYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPmRpY3QgPT0gTlVMTCkgewotICAgICAgICBzZWxmLT5kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAoIXNlbGYtPmRpY3QpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKHNlbGYtPmRpY3QpOwotICAgIHJldHVybiBzZWxmLT5kaWN0OwotfQotCi1zdGF0aWMgaW50Ci1CYXNlRXhjZXB0aW9uX3NldF9kaWN0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnZhbCkKLXsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fZGljdF9fIG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIl9fZGljdF9fIG11c3QgYmUgYSBkaWN0aW9uYXJ5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7Ci0gICAgUHlfSU5DUkVGKHZhbCk7Ci0gICAgc2VsZi0+ZGljdCA9IHZhbDsKLSAgICByZXR1cm4gMDsKLX0KLQogc3RhdGljIFB5T2JqZWN0ICoKIEJhc2VFeGNlcHRpb25fZ2V0X2FyZ3MoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICpzZWxmKQogewpAQCAtMzA2LDcgKzMwMCw3IEBACiAKIAogc3RhdGljIFB5R2V0U2V0RGVmIEJhc2VFeGNlcHRpb25fZ2V0c2V0W10gPSB7Ci0gICAgeyJfX2RpY3RfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfZGljdCwgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF9kaWN0fSwKKyAgICB7Il9fZGljdF9fIiwgUHlPYmplY3RfR2VuZXJpY0dldERpY3QsIFB5T2JqZWN0X0dlbmVyaWNTZXREaWN0fSwKICAgICB7ImFyZ3MiLCAoZ2V0dGVyKUJhc2VFeGNlcHRpb25fZ2V0X2FyZ3MsIChzZXR0ZXIpQmFzZUV4Y2VwdGlvbl9zZXRfYXJnc30sCiAgICAgeyJfX3RyYWNlYmFja19fIiwgKGdldHRlcilCYXNlRXhjZXB0aW9uX2dldF90YiwgKHNldHRlcilCYXNlRXhjZXB0aW9uX3NldF90Yn0sCiAgICAgeyJfX2NvbnRleHRfXyIsIChnZXR0ZXIpQmFzZUV4Y2VwdGlvbl9nZXRfY29udGV4dCwKQEAgLTM0Miw2ICszMzYsNyBAQAogUHlFeGNlcHRpb25fU2V0Q2F1c2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjYXVzZSkgewogICAgIFB5T2JqZWN0ICpvbGRfY2F1c2UgPSAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZTsKICAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jYXVzZSA9IGNhdXNlOworICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPnN1cHByZXNzX2NvbnRleHQgPSAxOwogICAgIFB5X1hERUNSRUYob2xkX2NhdXNlKTsKIH0KIApAQCAtMzYxLDYgKzM1NiwxMyBAQAogfQogCiAKK3N0YXRpYyBzdHJ1Y3QgUHlNZW1iZXJEZWYgQmFzZUV4Y2VwdGlvbl9tZW1iZXJzW10gPSB7CisgICAgeyJfX3N1cHByZXNzX2NvbnRleHRfXyIsIFRfQk9PTCwKKyAgICAgb2Zmc2V0b2YoUHlCYXNlRXhjZXB0aW9uT2JqZWN0LCBzdXBwcmVzc19jb250ZXh0KX0sCisgICAge05VTEx9Cit9OworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX0Jhc2VFeGNlcHRpb24gPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIkJhc2VFeGNlcHRpb24iLCAvKnRwX25hbWUqLwpAQCAtMzkxLDcgKzM5Myw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICBCYXNlRXhjZXB0aW9uX21ldGhvZHMsICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgQmFzZUV4Y2VwdGlvbl9tZW1iZXJzLCAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICBCYXNlRXhjZXB0aW9uX2dldHNldCwgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtNDM2LDExICs0MzgsMTMgQEAKICAgICBQeURvY19TVFIoRVhDRE9DKSwgKHRyYXZlcnNlcHJvYylFWENTVE9SRSAjIyBfdHJhdmVyc2UsIFwKICAgICAoaW5xdWlyeSlFWENTVE9SRSAjIyBfY2xlYXIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsICZfICMjIEVYQ0JBU0UsIFwKICAgICAwLCAwLCAwLCBvZmZzZXRvZihQeSAjIyBFWENTVE9SRSAjIyBPYmplY3QsIGRpY3QpLCBcCi0gICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCBCYXNlRXhjZXB0aW9uX25ldyxcCisgICAgKGluaXRwcm9jKUVYQ1NUT1JFICMjIF9pbml0LCAwLCAwLCBcCiB9OyBcCiBQeU9iamVjdCAqUHlFeGNfICMjIEVYQ05BTUUgPSAoUHlPYmplY3QgKikmX1B5RXhjXyAjIyBFWENOQU1FCiAKLSNkZWZpbmUgQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oRVhDQkFTRSwgRVhDTkFNRSwgRVhDU1RPUkUsIEVYQ0RFQUxMT0MsIEVYQ01FVEhPRFMsIEVYQ01FTUJFUlMsIEVYQ1NUUiwgRVhDRE9DKSBcCisjZGVmaW5lIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKEVYQ0JBU0UsIEVYQ05BTUUsIEVYQ1NUT1JFLCBFWENORVcsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhDTUVUSE9EUywgRVhDTUVNQkVSUywgRVhDR0VUU0VULCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYQ1NUUiwgRVhDRE9DKSBcCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y18gIyMgRVhDTkFNRSA9IHsgXAogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCiAgICAgIyBFWENOQU1FLCBcCkBAIC00NTAsOSArNDU0LDkgQEAKICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCBcCiAgICAgUHlEb2NfU1RSKEVYQ0RPQyksICh0cmF2ZXJzZXByb2MpRVhDU1RPUkUgIyMgX3RyYXZlcnNlLCBcCiAgICAgKGlucXVpcnkpRVhDU1RPUkUgIyMgX2NsZWFyLCAwLCAwLCAwLCAwLCBFWENNRVRIT0RTLCBcCi0gICAgRVhDTUVNQkVSUywgMCwgJl8gIyMgRVhDQkFTRSwgXAorICAgIEVYQ01FTUJFUlMsIEVYQ0dFVFNFVCwgJl8gIyMgRVhDQkFTRSwgXAogICAgIDAsIDAsIDAsIG9mZnNldG9mKFB5ICMjIEVYQ1NUT1JFICMjIE9iamVjdCwgZGljdCksIFwKLSAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEJhc2VFeGNlcHRpb25fbmV3LFwKKyAgICAoaW5pdHByb2MpRVhDU1RPUkUgIyMgX2luaXQsIDAsIEVYQ05FVyxcCiB9OyBcCiBQeU9iamVjdCAqUHlFeGNfICMjIEVYQ05BTUUgPSAoUHlPYmplY3QgKikmX1B5RXhjXyAjIyBFWENOQU1FCiAKQEAgLTQ3NCw4ICs0NzgsNjQgQEAKIC8qCiAgKiAgICBTdG9wSXRlcmF0aW9uIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KLVNpbXBsZUV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBTdG9wSXRlcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAiU2lnbmFsIHRoZSBlbmQgZnJvbSBpdGVyYXRvci5fX25leHRfXygpLiIpOworCitzdGF0aWMgUHlNZW1iZXJEZWYgU3RvcEl0ZXJhdGlvbl9tZW1iZXJzW10gPSB7CisgICAgeyJ2YWx1ZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVN0b3BJdGVyYXRpb25PYmplY3QsIHZhbHVlKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJnZW5lcmF0b3IgcmV0dXJuIHZhbHVlIil9LAorICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBpbnQKK1N0b3BJdGVyYXRpb25faW5pdChQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIFB5T2JqZWN0ICp2YWx1ZTsKKworICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgUHlfQ0xFQVIoc2VsZi0+dmFsdWUpOworICAgIGlmIChzaXplID4gMCkKKyAgICAgICAgdmFsdWUgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApOworICAgIGVsc2UKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgc2VsZi0+dmFsdWUgPSB2YWx1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorU3RvcEl0ZXJhdGlvbl9jbGVhcihQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+dmFsdWUpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIHZvaWQKK1N0b3BJdGVyYXRpb25fZGVhbGxvYyhQeVN0b3BJdGVyYXRpb25PYmplY3QgKnNlbGYpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgU3RvcEl0ZXJhdGlvbl9jbGVhcihzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOworfQorCitzdGF0aWMgaW50CitTdG9wSXRlcmF0aW9uX3RyYXZlcnNlKFB5U3RvcEl0ZXJhdGlvbk9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+dmFsdWUpOworICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKK30KKworQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oCisgICAgUHlFeGNfRXhjZXB0aW9uLCAgICAgICAvKiBiYXNlICovCisgICAgU3RvcEl0ZXJhdGlvbiwgICAgICAgICAvKiBuYW1lICovCisgICAgU3RvcEl0ZXJhdGlvbiwgICAgICAgICAvKiBwcmVmaXggZm9yICpfaW5pdCwgZXRjICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAvKiBuZXcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIG1ldGhvZHMgKi8KKyAgICBTdG9wSXRlcmF0aW9uX21lbWJlcnMsIC8qIG1lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGdldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogc3RyICovCisgICAgIlNpZ25hbCB0aGUgZW5kIGZyb20gaXRlcmF0b3IuX19uZXh0X18oKS4iCispOwogCiAKIC8qCkBAIC01MDIsNyArNTYyLDcgQEAKICAgICBQeV9DTEVBUihzZWxmLT5jb2RlKTsKICAgICBpZiAoc2l6ZSA9PSAxKQogICAgICAgICBzZWxmLT5jb2RlID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKLSAgICBlbHNlIGlmIChzaXplID4gMSkKKyAgICBlbHNlIC8qIHNpemUgPiAxICovCiAgICAgICAgIHNlbGYtPmNvZGUgPSBhcmdzOwogICAgIFB5X0lOQ1JFRihzZWxmLT5jb2RlKTsKICAgICByZXR1cm4gMDsKQEAgLTUzNyw3ICs1OTcsNyBAQAogfTsKIAogQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfQmFzZUV4Y2VwdGlvbiwgU3lzdGVtRXhpdCwgU3lzdGVtRXhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbUV4aXRfZGVhbGxvYywgMCwgU3lzdGVtRXhpdF9tZW1iZXJzLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgU3lzdGVtRXhpdF9tZW1iZXJzLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgIlJlcXVlc3QgdG8gZXhpdCBmcm9tIHRoZSBpbnRlcnByZXRlci4iKTsKIAogLyoKQEAgLTU1MCwxMjkgKzYxMCw0NDEgQEAKIC8qCiAgKiAgICBJbXBvcnRFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCi1TaW1wbGVFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgSW1wb3J0RXJyb3IsCi0gICAgICAgICAgIkltcG9ydCBjYW4ndCBmaW5kIG1vZHVsZSwgb3IgY2FuJ3QgZmluZCBuYW1lIGluIG1vZHVsZS4iKTsKIAorc3RhdGljIGludAorSW1wb3J0RXJyb3JfaW5pdChQeUltcG9ydEVycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKm1zZyA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKKworLyogTWFjcm8gcmVwbGFjZW1lbnQgZG9lc24ndCBhbGxvdyAjIyB0byBzdGFydCB0aGUgZmlyc3QgbGluZSBvZiBhIG1hY3JvLAorICAgc28gd2UgbW92ZSB0aGUgYXNzaWdubWVudCBhbmQgTlVMTCBjaGVjayBpbnRvIHRoZSBpZi1zdGF0ZW1lbnQuICovCisjZGVmaW5lIEdFVF9LV0Qoa3dkKSB7IFwKKyAgICBrd2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhrd2RzLCAja3dkKTsgXAorICAgIGlmIChrd2QpIHsgXAorICAgICAgICBQeV9DTEVBUihzZWxmLT5rd2QpOyBcCisgICAgICAgIHNlbGYtPmt3ZCA9IGt3ZDsgICBcCisgICAgICAgIFB5X0lOQ1JFRihzZWxmLT5rd2QpO1wKKyAgICAgICAgaWYgKFB5RGljdF9EZWxJdGVtU3RyaW5nKGt3ZHMsICNrd2QpKSBcCisgICAgICAgICAgICByZXR1cm4gLTE7IFwKKyAgICB9IFwKKyAgICB9CisKKyAgICBpZiAoa3dkcykgeworICAgICAgICBHRVRfS1dEKG5hbWUpOworICAgICAgICBHRVRfS1dEKHBhdGgpOworICAgIH0KKworICAgIGlmIChCYXNlRXhjZXB0aW9uX2luaXQoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIGFyZ3MsIGt3ZHMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiSW1wb3J0RXJyb3IiLCAxLCAxLCAmbXNnKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsgICAgICAgICAgLyogcmVwbGFjaW5nICovCisgICAgc2VsZi0+bXNnID0gbXNnOworICAgIFB5X0lOQ1JFRihzZWxmLT5tc2cpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK0ltcG9ydEVycm9yX2NsZWFyKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+bXNnKTsKKyAgICBQeV9DTEVBUihzZWxmLT5uYW1lKTsKKyAgICBQeV9DTEVBUihzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9jbGVhcigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7Cit9CisKK3N0YXRpYyB2b2lkCitJbXBvcnRFcnJvcl9kZWFsbG9jKFB5SW1wb3J0RXJyb3JPYmplY3QgKnNlbGYpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7CisgICAgSW1wb3J0RXJyb3JfY2xlYXIoc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzZWxmKTsKK30KKworc3RhdGljIGludAorSW1wb3J0RXJyb3JfdHJhdmVyc2UoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+bXNnKTsKKyAgICBQeV9WSVNJVChzZWxmLT5uYW1lKTsKKyAgICBQeV9WSVNJVChzZWxmLT5wYXRoKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl90cmF2ZXJzZSgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgdmlzaXQsIGFyZyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitJbXBvcnRFcnJvcl9zdHIoUHlJbXBvcnRFcnJvck9iamVjdCAqc2VsZikKK3sKKyAgICBpZiAoc2VsZi0+bXNnICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYtPm1zZykpIHsKKyAgICAgICAgUHlfSU5DUkVGKHNlbGYtPm1zZyk7CisgICAgICAgIHJldHVybiBzZWxmLT5tc2c7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOworICAgIH0KK30KKworc3RhdGljIFB5TWVtYmVyRGVmIEltcG9ydEVycm9yX21lbWJlcnNbXSA9IHsKKyAgICB7Im1zZyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBtc2cpLCAwLAorICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBtZXNzYWdlIil9LAorICAgIHsibmFtZSIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUltcG9ydEVycm9yT2JqZWN0LCBuYW1lKSwgMCwKKyAgICAgICAgUHlEb2NfU1RSKCJtb2R1bGUgbmFtZSIpfSwKKyAgICB7InBhdGgiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlJbXBvcnRFcnJvck9iamVjdCwgcGF0aCksIDAsCisgICAgICAgIFB5RG9jX1NUUigibW9kdWxlIHBhdGgiKX0sCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIEltcG9ydEVycm9yX21ldGhvZHNbXSA9IHsKKyAgICB7TlVMTH0KK307CisKK0NvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvciwgMCAvKiBuZXcgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRFcnJvcl9tZXRob2RzLCBJbXBvcnRFcnJvcl9tZW1iZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgMCAvKiBnZXRzZXQgKi8sIEltcG9ydEVycm9yX3N0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbXBvcnQgY2FuJ3QgZmluZCBtb2R1bGUsIG9yIGNhbid0IGZpbmQgbmFtZSBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLiIpOwogCiAvKgotICogICAgRW52aXJvbm1lbnRFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgorICogICAgT1NFcnJvciBleHRlbmRzIEV4Y2VwdGlvbgogICovCiAKKyNpZmRlZiBNU19XSU5ET1dTCisjaW5jbHVkZSAiZXJybWFwLmgiCisjZW5kaWYKKwogLyogV2hlcmUgYSBmdW5jdGlvbiBoYXMgYSBzaW5nbGUgZmlsZW5hbWUsIHN1Y2ggYXMgb3BlbigpIG9yIHNvbWUKICAqIG9mIHRoZSBvcyBtb2R1bGUgZnVuY3Rpb25zLCBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUoKSBpcwogICogY2FsbGVkLCBnaXZpbmcgYSB0aGlyZCBhcmd1bWVudCB3aGljaCBpcyB0aGUgZmlsZW5hbWUuICBCdXQsIHNvCiAgKiB0aGF0IG9sZCBjb2RlIHVzaW5nIGluLXBsYWNlIHVucGFja2luZyBkb2Vzbid0IGJyZWFrLCBlLmcuOgogICoKLSAqIGV4Y2VwdCBJT0Vycm9yLCAoZXJybm8sIHN0cmVycm9yKToKKyAqIGV4Y2VwdCBPU0Vycm9yLCAoZXJybm8sIHN0cmVycm9yKToKICAqCiAgKiB3ZSBoYWNrIGFyZ3Mgc28gdGhhdCBpdCBvbmx5IGNvbnRhaW5zIHR3byBpdGVtcy4gIFRoaXMgYWxzbwogICogbWVhbnMgd2UgbmVlZCBvdXIgb3duIF9fc3RyX18oKSB3aGljaCBwcmludHMgb3V0IHRoZSBmaWxlbmFtZQogICogd2hlbiBpdCB3YXMgc3VwcGxpZWQuCiAgKi8KKworLyogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNsZWFudXAgb24gZXJyb3IsIHRoZSBjYWxsZXIgc2hvdWxkICovCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX2luaXQoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywKLSAgICBQeU9iamVjdCAqa3dkcykKK29zZXJyb3JfcGFyc2VfYXJncyhQeU9iamVjdCAqKnBfYXJncywKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm15ZXJybm8sIFB5T2JqZWN0ICoqc3RyZXJyb3IsCisgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmaWxlbmFtZQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgICAgICAgICAsIFB5T2JqZWN0ICoqd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgKQogewotICAgIFB5T2JqZWN0ICpteWVycm5vID0gTlVMTCwgKnN0cmVycm9yID0gTlVMTCwgKmZpbGVuYW1lID0gTlVMTDsKLSAgICBQeU9iamVjdCAqc3Vic2xpY2UgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MgPSAqcF9hcmdzOwogCi0gICAgaWYgKEJhc2VFeGNlcHRpb25faW5pdCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykgPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAKLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA8PSAxIHx8IFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPiAzKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIkVudmlyb25tZW50RXJyb3IiLCAyLCAzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lKSkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOyAgICAgICAvKiByZXBsYWNpbmcgKi8KLSAgICBzZWxmLT5teWVycm5vID0gbXllcnJubzsKLSAgICBQeV9JTkNSRUYoc2VsZi0+bXllcnJubyk7Ci0KLSAgICBQeV9DTEVBUihzZWxmLT5zdHJlcnJvcik7ICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgc2VsZi0+c3RyZXJyb3IgPSBzdHJlcnJvcjsKLSAgICBQeV9JTkNSRUYoc2VsZi0+c3RyZXJyb3IpOwotCi0gICAgLyogc2VsZi0+ZmlsZW5hbWUgd2lsbCByZW1haW4gUHlfTm9uZSBvdGhlcndpc2UgKi8KLSAgICBpZiAoZmlsZW5hbWUgIT0gTlVMTCkgewotICAgICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7ICAgICAgLyogcmVwbGFjaW5nICovCi0gICAgICAgIHNlbGYtPmZpbGVuYW1lID0gZmlsZW5hbWU7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmLT5maWxlbmFtZSk7Ci0KLSAgICAgICAgc3Vic2xpY2UgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDAsIDIpOwotICAgICAgICBpZiAoIXN1YnNsaWNlKQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAobmFyZ3MgPj0gMiAmJiBuYXJncyA8PSA0KSB7CisgICAgICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgIk9TRXJyb3IiLCAyLCA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ZXJybm8sIHN0cmVycm9yLCBmaWxlbmFtZSwgd2luZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoKndpbmVycm9yICYmIFB5TG9uZ19DaGVjaygqd2luZXJyb3IpKSB7CisgICAgICAgICAgICBsb25nIGVycmNvZGUsIHdpbmVycmNvZGU7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3YXJnczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKIAotICAgICAgICBQeV9ERUNSRUYoc2VsZi0+YXJncyk7ICAvKiByZXBsYWNpbmcgYXJncyAqLwotICAgICAgICBzZWxmLT5hcmdzID0gc3Vic2xpY2U7CisgICAgICAgICAgICB3aW5lcnJjb2RlID0gUHlMb25nX0FzTG9uZygqd2luZXJyb3IpOworICAgICAgICAgICAgaWYgKHdpbmVycmNvZGUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAvKiBTZXQgZXJybm8gdG8gdGhlIGNvcnJlc3BvbmRpbmcgUE9TSVggZXJybm8gKG92ZXJyaWRpbmcKKyAgICAgICAgICAgICAgIGZpcnN0IGFyZ3VtZW50KS4gIFdpbmRvd3MgU29ja2V0IGVycm9yIGNvZGVzICg+PSAxMDAwMCkKKyAgICAgICAgICAgICAgIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlaXIgUE9TSVggY291bnRlcnBhcnRzLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmICh3aW5lcnJjb2RlIDwgMTAwMDApCisgICAgICAgICAgICAgICAgZXJyY29kZSA9IHdpbmVycm9yX3RvX2Vycm5vKHdpbmVycmNvZGUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGVycmNvZGUgPSB3aW5lcnJjb2RlOworICAgICAgICAgICAgKm15ZXJybm8gPSBQeUxvbmdfRnJvbUxvbmcoZXJyY29kZSk7CisgICAgICAgICAgICBpZiAoISpteWVycm5vKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIG5ld2FyZ3MgPSBQeVR1cGxlX05ldyhuYXJncyk7CisgICAgICAgICAgICBpZiAoIW5ld2FyZ3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAqbXllcnJubyk7CisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWwpOworICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSwgdmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgICAgIGFyZ3MgPSAqcF9hcmdzID0gbmV3YXJnczsKKyAgICAgICAgfQogICAgIH0KKyNlbHNlCisgICAgaWYgKG5hcmdzID49IDIgJiYgbmFyZ3MgPD0gMykgeworICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJPU0Vycm9yIiwgMiwgMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLUVudmlyb25tZW50RXJyb3JfY2xlYXIoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICpzZWxmKQorb3NlcnJvcl9pbml0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKipwX2FyZ3MsCisgICAgICAgICAgICAgUHlPYmplY3QgKm15ZXJybm8sIFB5T2JqZWN0ICpzdHJlcnJvciwKKyAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgLCBQeU9iamVjdCAqd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgICkKK3sKKyAgICBQeU9iamVjdCAqYXJncyA9ICpwX2FyZ3M7CisgICAgUHlfc3NpemVfdCBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CisKKyAgICAvKiBzZWxmLT5maWxlbmFtZSB3aWxsIHJlbWFpbiBQeV9Ob25lIG90aGVyd2lzZSAqLworICAgIGlmIChmaWxlbmFtZSAmJiBmaWxlbmFtZSAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChQeV9UWVBFKHNlbGYpID09IChQeVR5cGVPYmplY3QgKikgUHlFeGNfQmxvY2tpbmdJT0Vycm9yICYmCisgICAgICAgICAgICBQeU51bWJlcl9DaGVjayhmaWxlbmFtZSkpIHsKKyAgICAgICAgICAgIC8qIEJsb2NraW5nSU9FcnJvcidzIDNyZCBhcmd1bWVudCBjYW4gYmUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgICogY2hhcmFjdGVycyB3cml0dGVuLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzZWxmLT53cml0dGVuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGZpbGVuYW1lLCBQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgICAgIGlmIChzZWxmLT53cml0dGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lID0gZmlsZW5hbWU7CisKKyAgICAgICAgICAgIGlmIChuYXJncyA+PSAyICYmIG5hcmdzIDw9IDMpIHsKKyAgICAgICAgICAgICAgICAvKiBmaWxlbmFtZSBpcyByZW1vdmVkIGZyb20gdGhlIGFyZ3MgdHVwbGUgKGZvciBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgcHVycG9zZXMsIHNlZSB0ZXN0X2V4Y2VwdGlvbnMucHkpICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnNsaWNlID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAwLCAyKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN1YnNsaWNlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7ICAvKiByZXBsYWNpbmcgYXJncyAqLworICAgICAgICAgICAgICAgICpwX2FyZ3MgPSBhcmdzID0gc3Vic2xpY2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgUHlfWElOQ1JFRihteWVycm5vKTsKKyAgICBzZWxmLT5teWVycm5vID0gbXllcnJubzsKKworICAgIFB5X1hJTkNSRUYoc3RyZXJyb3IpOworICAgIHNlbGYtPnN0cmVycm9yID0gc3RyZXJyb3I7CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlfWElOQ1JFRih3aW5lcnJvcik7CisgICAgc2VsZi0+d2luZXJyb3IgPSB3aW5lcnJvcjsKKyNlbmRpZgorCisgICAgLyogU3RlYWxzIHRoZSByZWZlcmVuY2UgdG8gYXJncyAqLworICAgIFB5X0NMRUFSKHNlbGYtPmFyZ3MpOworICAgIHNlbGYtPmFyZ3MgPSBhcmdzOworICAgIGFyZ3MgPSBOVUxMOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CitzdGF0aWMgaW50CitPU0Vycm9yX2luaXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOworCitzdGF0aWMgaW50Citvc2Vycm9yX3VzZV9pbml0KFB5VHlwZU9iamVjdCAqdHlwZSkKK3sKKyAgICAvKiBXaGVuIF9faW5pdF9fIGlzIGRlZmluZWQgaW4gYSBPU0Vycm9yIHN1YmNsYXNzLCB3ZSB3YW50IGFueQorICAgICAgIGV4dHJhbmVvdXMgYXJndW1lbnQgdG8gX19uZXdfXyB0byBiZSBpZ25vcmVkLiAgVGhlIG9ubHkgcmVhc29uYWJsZQorICAgICAgIHNvbHV0aW9uLCBnaXZlbiBfX25ld19fIHRha2VzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGFyZ3VtZW50cywKKyAgICAgICBpcyB0byBkZWZlciBhcmcgcGFyc2luZyBhbmQgaW5pdGlhbGl6YXRpb24gdG8gX19pbml0X18uCisKKyAgICAgICBCdXQgd2hlbiBfX25ld19fIGlzIG92ZXJyaWRlbiBhcyB3ZWxsLCBpdCBzaG91bGQgY2FsbCBvdXIgX19uZXdfXworICAgICAgIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4KKworICAgICAgIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEyNTU1I21zZzE0ODgyOSApCisgICAgKi8KKyAgICBpZiAodHlwZS0+dHBfaW5pdCAhPSAoaW5pdHByb2MpIE9TRXJyb3JfaW5pdCAmJgorICAgICAgICB0eXBlLT50cF9uZXcgPT0gKG5ld2Z1bmMpIE9TRXJyb3JfbmV3KSB7CisgICAgICAgIGFzc2VydCgoUHlPYmplY3QgKikgdHlwZSAhPSBQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorT1NFcnJvcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPU0Vycm9yT2JqZWN0ICpzZWxmID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvciA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdCh0eXBlKSkgeworICAgICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKHR5cGUtPnRwX25hbWUsIGt3ZHMpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgICAgICBpZiAob3NlcnJvcl9wYXJzZV9hcmdzKCZhcmdzLCAmbXllcnJubywgJnN0cmVycm9yLCAmZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmd2luZXJyb3IKKyNlbmRpZgorICAgICAgICAgICAgKSkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKG15ZXJybm8gJiYgUHlMb25nX0NoZWNrKG15ZXJybm8pICYmCisgICAgICAgICAgICBlcnJub21hcCAmJiAoUHlPYmplY3QgKikgdHlwZSA9PSBQeUV4Y19PU0Vycm9yKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbmV3dHlwZTsKKyAgICAgICAgICAgIG5ld3R5cGUgPSBQeURpY3RfR2V0SXRlbShlcnJub21hcCwgbXllcnJubyk7CisgICAgICAgICAgICBpZiAobmV3dHlwZSkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeVR5cGVfQ2hlY2sobmV3dHlwZSkpOworICAgICAgICAgICAgICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIG5ld3R5cGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzZWxmID0gKFB5T1NFcnJvck9iamVjdCAqKSB0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAoIXNlbGYpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzZWxmLT5kaWN0ID0gTlVMTDsKKyAgICBzZWxmLT50cmFjZWJhY2sgPSBzZWxmLT5jYXVzZSA9IHNlbGYtPmNvbnRleHQgPSBOVUxMOworICAgIHNlbGYtPndyaXR0ZW4gPSAtMTsKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdCh0eXBlKSkgeworICAgICAgICBpZiAob3NlcnJvcl9pbml0KHNlbGYsICZhcmdzLCBteWVycm5vLCBzdHJlcnJvciwgZmlsZW5hbWUKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgICAgICAgICAgICAgICAgICAgICAgLCB3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICAgICApKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHNlbGYtPmFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgaWYgKHNlbGYtPmFyZ3MgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBzZWxmOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgIFB5X1hERUNSRUYoc2VsZik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK09TRXJyb3JfaW5pdChQeU9TRXJyb3JPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqbXllcnJubyA9IE5VTEwsICpzdHJlcnJvciA9IE5VTEwsICpmaWxlbmFtZSA9IE5VTEw7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5T2JqZWN0ICp3aW5lcnJvciA9IE5VTEw7CisjZW5kaWYKKworICAgIGlmICghb3NlcnJvcl91c2VfaW5pdChQeV9UWVBFKHNlbGYpKSkKKyAgICAgICAgLyogRXZlcnl0aGluZyBhbHJlYWR5IGRvbmUgaW4gT1NFcnJvcl9uZXcgKi8KKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBQeV9JTkNSRUYoYXJncyk7CisgICAgaWYgKG9zZXJyb3JfcGFyc2VfYXJncygmYXJncywgJm15ZXJybm8sICZzdHJlcnJvciwgJmZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgICAgICAgLCAmd2luZXJyb3IKKyNlbmRpZgorICAgICAgICApKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgaWYgKG9zZXJyb3JfaW5pdChzZWxmLCAmYXJncywgbXllcnJubywgc3RyZXJyb3IsIGZpbGVuYW1lCisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICAgICAgICAgICAgICAgLCB3aW5lcnJvcgorI2VuZGlmCisgICAgICAgICkpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gMDsKKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihhcmdzKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKK09TRXJyb3JfY2xlYXIoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIFB5X0NMRUFSKHNlbGYtPm15ZXJybm8pOwogICAgIFB5X0NMRUFSKHNlbGYtPnN0cmVycm9yKTsKICAgICBQeV9DTEVBUihzZWxmLT5maWxlbmFtZSk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X0NMRUFSKHNlbGYtPndpbmVycm9yKTsKKyNlbmRpZgogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX2NsZWFyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKIH0KIAogc3RhdGljIHZvaWQKLUVudmlyb25tZW50RXJyb3JfZGVhbGxvYyhQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX2RlYWxsb2MoUHlPU0Vycm9yT2JqZWN0ICpzZWxmKQogewogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwotICAgIEVudmlyb25tZW50RXJyb3JfY2xlYXIoc2VsZik7CisgICAgT1NFcnJvcl9jbGVhcihzZWxmKTsKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCAqKXNlbGYpOwogfQogCiBzdGF0aWMgaW50Ci1FbnZpcm9ubWVudEVycm9yX3RyYXZlcnNlKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LAorT1NFcnJvcl90cmF2ZXJzZShQeU9TRXJyb3JPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwKICAgICAgICAgdm9pZCAqYXJnKQogewogICAgIFB5X1ZJU0lUKHNlbGYtPm15ZXJybm8pOwogICAgIFB5X1ZJU0lUKHNlbGYtPnN0cmVycm9yKTsKICAgICBQeV9WSVNJVChzZWxmLT5maWxlbmFtZSk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIFB5X1ZJU0lUKHNlbGYtPndpbmVycm9yKTsKKyNlbmRpZgogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3RyYXZlcnNlKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmLCB2aXNpdCwgYXJnKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLUVudmlyb25tZW50RXJyb3Jfc3RyKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqc2VsZikKK09TRXJyb3Jfc3RyKFB5T1NFcnJvck9iamVjdCAqc2VsZikKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogSWYgYXZhaWxhYmxlLCB3aW5lcnJvciBoYXMgdGhlIHByaW9yaXR5IG92ZXIgbXllcnJubyAqLworICAgIGlmIChzZWxmLT53aW5lcnJvciAmJiBzZWxmLT5maWxlbmFtZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJbV2luRXJyb3IgJVNdICVTOiAlUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmZpbGVuYW1lKTsKKyAgICBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+c3RyZXJyb3IpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW1dpbkVycm9yICVTXSAlUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7CisjZW5kaWYKICAgICBpZiAoc2VsZi0+ZmlsZW5hbWUpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUzogJVIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubyA/IHNlbGYtPm15ZXJybm86IFB5X05vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5zdHJlcnJvciA/IHNlbGYtPnN0cmVycm9yOiBQeV9Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+ZmlsZW5hbWUpOwotICAgIGVsc2UgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCisgICAgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fc3RyKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKTsKKyAgICByZXR1cm4gQmFzZUV4Y2VwdGlvbl9zdHIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwogfQogCi1zdGF0aWMgUHlNZW1iZXJEZWYgRW52aXJvbm1lbnRFcnJvcl9tZW1iZXJzW10gPSB7Ci0gICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeUVudmlyb25tZW50RXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBlcnJubyIpfSwKLSAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgc3RyZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBzdHJlcnJvciIpfSwKLSAgICB7ImZpbGVuYW1lIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCwgZmlsZW5hbWUpLCAwLAotICAgICAgICBQeURvY19TVFIoImV4Y2VwdGlvbiBmaWxlbmFtZSIpfSwKLSAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCi19OwotCi0KIHN0YXRpYyBQeU9iamVjdCAqCi1FbnZpcm9ubWVudEVycm9yX3JlZHVjZShQeUVudmlyb25tZW50RXJyb3JPYmplY3QgKnNlbGYpCitPU0Vycm9yX3JlZHVjZShQeU9TRXJyb3JPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmFyZ3MgPSBzZWxmLT5hcmdzOwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMLCAqdG1wOwogCiAgICAgLyogc2VsZi0+YXJncyBpcyBvbmx5IHRoZSBmaXJzdCB0d28gcmVhbCBhcmd1bWVudHMgaWYgdGhlcmUgd2FzIGEKLSAgICAgKiBmaWxlIG5hbWUgZ2l2ZW4gdG8gRW52aXJvbm1lbnRFcnJvci4gKi8KKyAgICAgKiBmaWxlIG5hbWUgZ2l2ZW4gdG8gT1NFcnJvci4gKi8KICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAyICYmIHNlbGYtPmZpbGVuYW1lKSB7CiAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygzKTsKICAgICAgICAgaWYgKCFhcmdzKQpAQCAtNjk5LDE0NCArMTA3MSw5MyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitPU0Vycm9yX3dyaXR0ZW5fZ2V0KFB5T1NFcnJvck9iamVjdCAqc2VsZiwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBpZiAoc2VsZi0+d3JpdHRlbiA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJjaGFyYWN0ZXJzX3dyaXR0ZW4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3Qoc2VsZi0+d3JpdHRlbik7Cit9CiAKLXN0YXRpYyBQeU1ldGhvZERlZiBFbnZpcm9ubWVudEVycm9yX21ldGhvZHNbXSA9IHsKLSAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pRW52aXJvbm1lbnRFcnJvcl9yZWR1Y2UsIE1FVEhfTk9BUkdTfSwKK3N0YXRpYyBpbnQKK09TRXJyb3Jfd3JpdHRlbl9zZXQoUHlPU0Vycm9yT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJnLCB2b2lkICpjb250ZXh0KQoreworICAgIFB5X3NzaXplX3QgbjsKKyAgICBuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGFyZywgUHlFeGNfVmFsdWVFcnJvcik7CisgICAgaWYgKG4gPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHNlbGYtPndyaXR0ZW4gPSBuOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUHlNZW1iZXJEZWYgT1NFcnJvcl9tZW1iZXJzW10gPSB7CisgICAgeyJlcnJubyIsIFRfT0JKRUNULCBvZmZzZXRvZihQeU9TRXJyb3JPYmplY3QsIG15ZXJybm8pLCAwLAorICAgICAgICBQeURvY19TVFIoIlBPU0lYIGV4Y2VwdGlvbiBjb2RlIil9LAorICAgIHsic3RyZXJyb3IiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAorICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlPU0Vycm9yT2JqZWN0LCBmaWxlbmFtZSksIDAsCisgICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIGZpbGVuYW1lIil9LAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICB7IndpbmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5T1NFcnJvck9iamVjdCwgd2luZXJyb3IpLCAwLAorICAgICAgICBQeURvY19TVFIoIldpbjMyIGV4Y2VwdGlvbiBjb2RlIil9LAorI2VuZGlmCisgICAge05VTEx9ICAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIFB5TWV0aG9kRGVmIE9TRXJyb3JfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilPU0Vycm9yX3JlZHVjZSwgTUVUSF9OT0FSR1N9LAogICAgIHtOVUxMfQogfTsKIAotQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oUHlFeGNfRXhjZXB0aW9uLCBFbnZpcm9ubWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgRW52aXJvbm1lbnRFcnJvcl9kZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvcl9tZXRob2RzLCBFbnZpcm9ubWVudEVycm9yX21lbWJlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudEVycm9yX3N0ciwKK3N0YXRpYyBQeUdldFNldERlZiBPU0Vycm9yX2dldHNldFtdID0geworICAgIHsiY2hhcmFjdGVyc193cml0dGVuIiwgKGdldHRlcikgT1NFcnJvcl93cml0dGVuX2dldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXR0ZXIpIE9TRXJyb3Jfd3JpdHRlbl9zZXQsIE5VTEx9LAorICAgIHtOVUxMfQorfTsKKworCitDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FeGNlcHRpb24sIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBPU0Vycm9yLCBPU0Vycm9yX25ldywKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3JfbWV0aG9kcywgT1NFcnJvcl9tZW1iZXJzLCBPU0Vycm9yX2dldHNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9TRXJyb3Jfc3RyLAogICAgICAgICAgICAgICAgICAgICAgICAgIkJhc2UgY2xhc3MgZm9yIEkvTyByZWxhdGVkIGVycm9ycy4iKTsKIAogCiAvKgotICogICAgSU9FcnJvciBleHRlbmRzIEVudmlyb25tZW50RXJyb3IKKyAqICAgIFZhcmlvdXMgT1NFcnJvciBzdWJjbGFzc2VzCiAgKi8KLU1pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19FbnZpcm9ubWVudEVycm9yLCBJT0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50RXJyb3IsICJJL08gb3BlcmF0aW9uIGZhaWxlZC4iKTsKLQotCi0vKgotICogICAgT1NFcnJvciBleHRlbmRzIEVudmlyb25tZW50RXJyb3IKLSAqLwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0Vudmlyb25tZW50RXJyb3IsIE9TRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRW52aXJvbm1lbnRFcnJvciwgIk9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLQotCi0vKgotICogICAgV2luZG93c0Vycm9yIGV4dGVuZHMgT1NFcnJvcgotICovCi0jaWZkZWYgTVNfV0lORE9XUwotI2luY2x1ZGUgImVycm1hcC5oIgotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfY2xlYXIoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlfQ0xFQVIoc2VsZi0+bXllcnJubyk7Ci0gICAgUHlfQ0xFQVIoc2VsZi0+c3RyZXJyb3IpOwotICAgIFB5X0NMRUFSKHNlbGYtPmZpbGVuYW1lKTsKLSAgICBQeV9DTEVBUihzZWxmLT53aW5lcnJvcik7Ci0gICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fY2xlYXIoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgdm9pZAotV2luZG93c0Vycm9yX2RlYWxsb2MoUHlXaW5kb3dzRXJyb3JPYmplY3QgKnNlbGYpCi17Ci0gICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7Ci0gICAgV2luZG93c0Vycm9yX2NsZWFyKHNlbGYpOwotICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7Ci19Ci0KLXN0YXRpYyBpbnQKLVdpbmRvd3NFcnJvcl90cmF2ZXJzZShQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCi17Ci0gICAgUHlfVklTSVQoc2VsZi0+bXllcnJubyk7Ci0gICAgUHlfVklTSVQoc2VsZi0+c3RyZXJyb3IpOwotICAgIFB5X1ZJU0lUKHNlbGYtPmZpbGVuYW1lKTsKLSAgICBQeV9WSVNJVChzZWxmLT53aW5lcnJvcik7Ci0gICAgcmV0dXJuIEJhc2VFeGNlcHRpb25fdHJhdmVyc2UoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYsIHZpc2l0LCBhcmcpOwotfQotCi1zdGF0aWMgaW50Ci1XaW5kb3dzRXJyb3JfaW5pdChQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQotewotICAgIFB5T2JqZWN0ICpvX2VycmNvZGUgPSBOVUxMOwotICAgIGxvbmcgZXJyY29kZTsKLSAgICBsb25nIHBvc2l4X2Vycm5vOwotCi0gICAgaWYgKEVudmlyb25tZW50RXJyb3JfaW5pdCgoUHlFbnZpcm9ubWVudEVycm9yT2JqZWN0ICopc2VsZiwgYXJncywga3dkcykKLSAgICAgICAgICAgID09IC0xKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBpZiAoc2VsZi0+bXllcnJubyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIFNldCBlcnJubyB0byB0aGUgUE9TSVggZXJybm8sIGFuZCB3aW5lcnJvciB0byB0aGUgV2luMzIKLSAgICAgICBlcnJvciBjb2RlLiAqLwotICAgIGVycmNvZGUgPSBQeUxvbmdfQXNMb25nKHNlbGYtPm15ZXJybm8pOwotICAgIGlmIChlcnJjb2RlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBwb3NpeF9lcnJubyA9IHdpbmVycm9yX3RvX2Vycm5vKGVycmNvZGUpOwotCi0gICAgUHlfQ0xFQVIoc2VsZi0+d2luZXJyb3IpOwotICAgIHNlbGYtPndpbmVycm9yID0gc2VsZi0+bXllcnJubzsKLQotICAgIG9fZXJyY29kZSA9IFB5TG9uZ19Gcm9tTG9uZyhwb3NpeF9lcnJubyk7Ci0gICAgaWYgKCFvX2VycmNvZGUpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIHNlbGYtPm15ZXJybm8gPSBvX2VycmNvZGU7Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotCi1zdGF0aWMgUHlPYmplY3QgKgotV2luZG93c0Vycm9yX3N0cihQeVdpbmRvd3NFcnJvck9iamVjdCAqc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+ZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUzogJVIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+d2luZXJyb3IgPyBzZWxmLT53aW5lcnJvcjogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5maWxlbmFtZSk7Ci0gICAgZWxzZSBpZiAoc2VsZi0+d2luZXJyb3IgJiYgc2VsZi0+c3RyZXJyb3IpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm9yICVTXSAlUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT53aW5lcnJvciA/IHNlbGYtPndpbmVycm9yOiBQeV9Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyZXJyb3IgPyBzZWxmLT5zdHJlcnJvcjogUHlfTm9uZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gRW52aXJvbm1lbnRFcnJvcl9zdHIoKFB5RW52aXJvbm1lbnRFcnJvck9iamVjdCAqKXNlbGYpOwotfQotCi1zdGF0aWMgUHlNZW1iZXJEZWYgV2luZG93c0Vycm9yX21lbWJlcnNbXSA9IHsKLSAgICB7ImVycm5vIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBteWVycm5vKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJQT1NJWCBleGNlcHRpb24gY29kZSIpfSwKLSAgICB7InN0cmVycm9yIiwgVF9PQkpFQ1QsIG9mZnNldG9mKFB5V2luZG93c0Vycm9yT2JqZWN0LCBzdHJlcnJvciksIDAsCi0gICAgICAgIFB5RG9jX1NUUigiZXhjZXB0aW9uIHN0cmVycm9yIil9LAotICAgIHsiZmlsZW5hbWUiLCBUX09CSkVDVCwgb2Zmc2V0b2YoUHlXaW5kb3dzRXJyb3JPYmplY3QsIGZpbGVuYW1lKSwgMCwKLSAgICAgICAgUHlEb2NfU1RSKCJleGNlcHRpb24gZmlsZW5hbWUiKX0sCi0gICAgeyJ3aW5lcnJvciIsIFRfT0JKRUNULCBvZmZzZXRvZihQeVdpbmRvd3NFcnJvck9iamVjdCwgd2luZXJyb3IpLCAwLAotICAgICAgICBQeURvY19TVFIoIldpbjMyIGV4Y2VwdGlvbiBjb2RlIil9LAotICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLX07Ci0KLUNvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFdpbmRvd3NFcnJvciwgV2luZG93c0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93c0Vycm9yX2RlYWxsb2MsIDAsIFdpbmRvd3NFcnJvcl9tZW1iZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93c0Vycm9yX3N0ciwgIk1TLVdpbmRvd3MgT1Mgc3lzdGVtIGNhbGwgZmFpbGVkLiIpOwotCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotCi0KLS8qCi0gKiAgICBWTVNFcnJvciBleHRlbmRzIE9TRXJyb3IgKEkgdGhpbmspCi0gKi8KLSNpZmRlZiBfX1ZNUwotTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFZNU0Vycm9yLCBFbnZpcm9ubWVudEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVuVk1TIE9TIHN5c3RlbSBjYWxsIGZhaWxlZC4iKTsKLSNlbmRpZgotCitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgQmxvY2tpbmdJT0Vycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJJL08gb3BlcmF0aW9uIHdvdWxkIGJsb2NrLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIENvbm5lY3Rpb25FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiBlcnJvci4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBDaGlsZFByb2Nlc3NFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hpbGQgcHJvY2VzcyBlcnJvci4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Db25uZWN0aW9uRXJyb3IsIEJyb2tlblBpcGVFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQnJva2VuIHBpcGUuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uQWJvcnRlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIGFib3J0ZWQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVmdXNlZEVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uIHJlZnVzZWQuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfQ29ubmVjdGlvbkVycm9yLCBDb25uZWN0aW9uUmVzZXRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdGlvbiByZXNldC4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBGaWxlRXhpc3RzRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgYWxyZWFkeSBleGlzdHMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgRmlsZU5vdEZvdW5kRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbGUgbm90IGZvdW5kLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIElzQURpcmVjdG9yeUVycm9yLCBPU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJPcGVyYXRpb24gZG9lc24ndCB3b3JrIG9uIGRpcmVjdG9yaWVzLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIE5vdEFEaXJlY3RvcnlFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiT3BlcmF0aW9uIG9ubHkgd29ya3Mgb24gZGlyZWN0b3JpZXMuIik7CitNaWRkbGluZ0V4dGVuZHNFeGNlcHRpb24oUHlFeGNfT1NFcnJvciwgSW50ZXJydXB0ZWRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiSW50ZXJydXB0ZWQgYnkgc2lnbmFsLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFBlcm1pc3Npb25FcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiTm90IGVub3VnaCBwZXJtaXNzaW9ucy4iKTsKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19PU0Vycm9yLCBQcm9jZXNzTG9va3VwRXJyb3IsIE9TRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlByb2Nlc3Mgbm90IGZvdW5kLiIpOworTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX09TRXJyb3IsIFRpbWVvdXRFcnJvciwgT1NFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGltZW91dCBleHBpcmVkLiIpOwogCiAvKgogICogICAgRU9GRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KQEAgLTk2NywyMSArMTI4OCwyMyBAQAogc3RhdGljIFB5T2JqZWN0KgogbXlfYmFzZW5hbWUoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgUHlfVU5JQ09ERSAqdW5pY29kZTsKICAgICBQeV9zc2l6ZV90IGksIHNpemUsIG9mZnNldDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCi0gICAgdW5pY29kZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUobmFtZSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShuYW1lKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKG5hbWUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShuYW1lKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSk7CiAgICAgb2Zmc2V0ID0gMDsKICAgICBmb3IoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIGlmICh1bmljb2RlW2ldID09IFNFUCkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpID09IFNFUCkKICAgICAgICAgICAgIG9mZnNldCA9IGkgKyAxOwogICAgIH0KLSAgICBpZiAob2Zmc2V0ICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpICsgb2Zmc2V0LAotICAgICAgICAgICAgc2l6ZSAtIG9mZnNldCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAob2Zmc2V0ICE9IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfU3Vic3RyaW5nKG5hbWUsIG9mZnNldCwgc2l6ZSk7CisgICAgZWxzZSB7CiAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfQpAQCAtMTA0OSw3ICsxMzcyLDcgQEAKIH07CiAKIENvbXBsZXhFeHRlbmRzRXhjZXB0aW9uKFB5RXhjX0V4Y2VwdGlvbiwgU3ludGF4RXJyb3IsIFN5bnRheEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4RXJyb3JfZGVhbGxvYywgMCwgU3ludGF4RXJyb3JfbWVtYmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIFN5bnRheEVycm9yX21lbWJlcnMsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhFcnJvcl9zdHIsICJJbnZhbGlkIHN5bnRheC4iKTsKIAogCkBAIC0xMTAzLDcgKzE0MjYsNyBAQAogfQogCiBDb21wbGV4RXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19Mb29rdXBFcnJvciwgS2V5RXJyb3IsIEJhc2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCBLZXlFcnJvcl9zdHIsICJNYXBwaW5nIGtleSBub3QgZm91bmQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCBLZXlFcnJvcl9zdHIsICJNYXBwaW5nIGtleSBub3QgZm91bmQuIik7CiAKIAogLyoKQEAgLTEyMDIsNyArMTUyNSw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqc3RhcnQgPSAoKFB5VW5pY29kZUVycm9yT2JqZWN0ICopZXhjKS0+c3RhcnQ7Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgIGlmICgqc3RhcnQ8MCkKICAgICAgICAgKnN0YXJ0ID0gMDsgLypYWFggY2hlY2sgZm9yIHZhbHVlcyA8MCovCiAgICAgaWYgKCpzdGFydD49c2l6ZSkKQEAgLTEyNzAsNyArMTU5Myw3IEBACiAgICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiAtMTsKICAgICAqZW5kID0gKChQeVVuaWNvZGVFcnJvck9iamVjdCAqKWV4YyktPmVuZDsKLSAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CiAgICAgaWYgKCplbmQ8MSkKICAgICAgICAgKmVuZCA9IDE7CiAgICAgaWYgKCplbmQ+c2l6ZSkKQEAgLTE0NDIsNiArMTc2NSwxMSBAQAogICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGVyci0+b2JqZWN0KSA8IC0xKSB7CisgICAgICAgIGVyci0+ZW5jb2RpbmcgPSBOVUxMOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgUHlfSU5DUkVGKGVyci0+ZW5jb2RpbmcpOwogICAgIFB5X0lOQ1JFRihlcnItPm9iamVjdCk7CiAgICAgUHlfSU5DUkVGKGVyci0+cmVhc29uKTsKQEAgLTE0NjYsOCArMTc5NCw4IEBACiAgICAgaWYgKGVuY29kaW5nX3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9TSVpFKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKLSAgICAgICAgaW50IGJhZGNoYXIgPSAoaW50KVB5VW5pY29kZV9BU19VTklDT0RFKHVzZWxmLT5vYmplY3QpW3VzZWxmLT5zdGFydF07CisgICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKKyAgICAgICAgUHlfVUNTNCBiYWRjaGFyID0gUHlVbmljb2RlX1JlYWRDaGFyKHVzZWxmLT5vYmplY3QsIHVzZWxmLT5zdGFydCk7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICAgICAgaWYgKGJhZGNoYXIgPD0gMHhmZikKICAgICAgICAgICAgIGZtdCA9ICInJVUnIGNvZGVjIGNhbid0IGVuY29kZSBjaGFyYWN0ZXIgJ1xceCUwMngnIGluIHBvc2l0aW9uICV6ZDogJVUiOwpAQCAtMTQ3OCw3ICsxODA2LDcgQEAKICAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCiAgICAgICAgICAgICBmbXQsCiAgICAgICAgICAgICBlbmNvZGluZ19zdHIsCi0gICAgICAgICAgICBiYWRjaGFyLAorICAgICAgICAgICAgKGludCliYWRjaGFyLAogICAgICAgICAgICAgdXNlbGYtPnN0YXJ0LAogICAgICAgICAgICAgcmVhc29uX3N0cik7CiAgICAgfQpAQCAtMTY3NSw4ICsyMDAzLDggQEAKICAgICBpZiAocmVhc29uX3N0ciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7CiAKLSAgICBpZiAodXNlbGYtPnN0YXJ0IDwgUHlVbmljb2RlX0dFVF9TSVpFKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKLSAgICAgICAgaW50IGJhZGNoYXIgPSAoaW50KVB5VW5pY29kZV9BU19VTklDT0RFKHVzZWxmLT5vYmplY3QpW3VzZWxmLT5zdGFydF07CisgICAgaWYgKHVzZWxmLT5zdGFydCA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVzZWxmLT5vYmplY3QpICYmIHVzZWxmLT5lbmQgPT0gdXNlbGYtPnN0YXJ0KzEpIHsKKyAgICAgICAgUHlfVUNTNCBiYWRjaGFyID0gUHlVbmljb2RlX1JlYWRDaGFyKHVzZWxmLT5vYmplY3QsIHVzZWxmLT5zdGFydCk7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZtdDsKICAgICAgICAgaWYgKGJhZGNoYXIgPD0gMHhmZikKICAgICAgICAgICAgIGZtdCA9ICJjYW4ndCB0cmFuc2xhdGUgY2hhcmFjdGVyICdcXHglMDJ4JyBpbiBwb3NpdGlvbiAlemQ6ICVVIjsKQEAgLTE2ODYsNyArMjAxNCw3IEBACiAgICAgICAgICAgICBmbXQgPSAiY2FuJ3QgdHJhbnNsYXRlIGNoYXJhY3RlciAnXFxVJTA4eCcgaW4gcG9zaXRpb24gJXpkOiAlVSI7CiAgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KAogICAgICAgICAgICAgZm10LAotICAgICAgICAgICAgYmFkY2hhciwKKyAgICAgICAgICAgIChpbnQpYmFkY2hhciwKICAgICAgICAgICAgIHVzZWxmLT5zdGFydCwKICAgICAgICAgICAgIHJlYXNvbl9zdHIKICAgICAgICAgKTsKQEAgLTE3MTcsNiArMjA0NSw3IEBACiB9OwogUHlPYmplY3QgKlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciA9IChQeU9iamVjdCAqKSZfUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yOwogCisvKiBEZXByZWNhdGVkLiAqLwogUHlPYmplY3QgKgogUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAogICAgIGNvbnN0IFB5X1VOSUNPREUgKm9iamVjdCwgUHlfc3NpemVfdCBsZW5ndGgsCkBAIC0xNzI2LDYgKzIwNTUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdCwgbGVuZ3RoLCBzdGFydCwgZW5kLCByZWFzb24pOwogfQogCitQeU9iamVjdCAqCitfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgIFB5T2JqZWN0ICpvYmplY3QsCisgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIGNvbnN0IGNoYXIgKnJlYXNvbikKK3sKKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciwgIk9ucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3QsIHN0YXJ0LCBlbmQsIHJlYXNvbik7Cit9CiAKIC8qCiAgKiAgICBBc3NlcnRpb25FcnJvciBleHRlbmRzIEV4Y2VwdGlvbgpAQCAtMTk3NSwxMSArMjMxMiw4MCBAQAogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhiZGljdCwgIyBUWVBFLCBQeUV4Y18gIyMgVFlQRSkpIFwKICAgICAgICAgUHlfRmF0YWxFcnJvcigiTW9kdWxlIGRpY3Rpb25hcnkgaW5zZXJ0aW9uIHByb2JsZW0uIik7CiAKKyNkZWZpbmUgSU5JVF9BTElBUyhOQU1FLCBUWVBFKSBQeV9JTkNSRUYoUHlFeGNfICMjIFRZUEUpOyBcCisgICAgUHlfWERFQ1JFRihQeUV4Y18gIyMgTkFNRSk7IFwKKyAgICBQeUV4Y18gIyMgTkFNRSA9IFB5RXhjXyAjIyBUWVBFOyBcCisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGJkaWN0LCAjIE5BTUUsIFB5RXhjXyAjIyBOQU1FKSkgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJNb2R1bGUgZGljdGlvbmFyeSBpbnNlcnRpb24gcHJvYmxlbS4iKTsKKworI2RlZmluZSBBRERfRVJSTk8oVFlQRSwgQ09ERSkgeyBcCisgICAgUHlPYmplY3QgKl9jb2RlID0gUHlMb25nX0Zyb21Mb25nKENPREUpOyBcCisgICAgYXNzZXJ0KF9QeU9iamVjdF9SZWFsSXNTdWJjbGFzcyhQeUV4Y18gIyMgVFlQRSwgUHlFeGNfT1NFcnJvcikpOyBcCisgICAgaWYgKCFfY29kZSB8fCBQeURpY3RfU2V0SXRlbShlcnJub21hcCwgX2NvZGUsIFB5RXhjXyAjIyBUWVBFKSkgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJlcnJtYXAgaW5zZXJ0aW9uIHByb2JsZW0uIik7IFwKKyAgICBQeV9ERUNSRUYoX2NvZGUpOyBcCisgICAgfQorCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPFdpbnNvY2syLmg+CisvKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyB3ZXJlIGFkZGVkIHRvIGVycm5vLmggaW4gVlMyMDEwIGJ1dCBoYXZlCisgICBwcmVmZXJyZWQgV1NBIGVxdWl2YWxlbnRzLiAqLworI3VuZGVmIEVBRERSSU5VU0UKKyN1bmRlZiBFQUREUk5PVEFWQUlMCisjdW5kZWYgRUFGTk9TVVBQT1JUCisjdW5kZWYgRUFMUkVBRFkKKyN1bmRlZiBFQ09OTkFCT1JURUQKKyN1bmRlZiBFQ09OTlJFRlVTRUQKKyN1bmRlZiBFQ09OTlJFU0VUCisjdW5kZWYgRURFU1RBRERSUkVRCisjdW5kZWYgRUhPU1RVTlJFQUNICisjdW5kZWYgRUlOUFJPR1JFU1MKKyN1bmRlZiBFSVNDT05OCisjdW5kZWYgRUxPT1AKKyN1bmRlZiBFTVNHU0laRQorI3VuZGVmIEVORVRET1dOCisjdW5kZWYgRU5FVFJFU0VUCisjdW5kZWYgRU5FVFVOUkVBQ0gKKyN1bmRlZiBFTk9CVUZTCisjdW5kZWYgRU5PUFJPVE9PUFQKKyN1bmRlZiBFTk9UQ09OTgorI3VuZGVmIEVOT1RTT0NLCisjdW5kZWYgRU9QTk9UU1VQUAorI3VuZGVmIEVQUk9UT05PU1VQUE9SVAorI3VuZGVmIEVQUk9UT1RZUEUKKyN1bmRlZiBFVElNRURPVVQKKyN1bmRlZiBFV09VTERCTE9DSworCisjaWYgZGVmaW5lZChXU0FFQUxSRUFEWSkgJiYgIWRlZmluZWQoRUFMUkVBRFkpCisjZGVmaW5lIEVBTFJFQURZIFdTQUVBTFJFQURZCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OQUJPUlRFRCkgJiYgIWRlZmluZWQoRUNPTk5BQk9SVEVEKQorI2RlZmluZSBFQ09OTkFCT1JURUQgV1NBRUNPTk5BQk9SVEVECisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OUkVGVVNFRCkgJiYgIWRlZmluZWQoRUNPTk5SRUZVU0VEKQorI2RlZmluZSBFQ09OTlJFRlVTRUQgV1NBRUNPTk5SRUZVU0VECisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVDT05OUkVTRVQpICYmICFkZWZpbmVkKEVDT05OUkVTRVQpCisjZGVmaW5lIEVDT05OUkVTRVQgV1NBRUNPTk5SRVNFVAorI2VuZGlmCisjaWYgZGVmaW5lZChXU0FFSU5QUk9HUkVTUykgJiYgIWRlZmluZWQoRUlOUFJPR1JFU1MpCisjZGVmaW5lIEVJTlBST0dSRVNTIFdTQUVJTlBST0dSRVNTCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVTSFVURE9XTikgJiYgIWRlZmluZWQoRVNIVVRET1dOKQorI2RlZmluZSBFU0hVVERPV04gV1NBRVNIVVRET1dOCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVUSU1FRE9VVCkgJiYgIWRlZmluZWQoRVRJTUVET1VUKQorI2RlZmluZSBFVElNRURPVVQgV1NBRVRJTUVET1VUCisjZW5kaWYKKyNpZiBkZWZpbmVkKFdTQUVXT1VMREJMT0NLKSAmJiAhZGVmaW5lZChFV09VTERCTE9DSykKKyNkZWZpbmUgRVdPVUxEQkxPQ0sgV1NBRVdPVUxEQkxPQ0sKKyNlbmRpZgorI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogdm9pZAotX1B5RXhjX0luaXQodm9pZCkKK19QeUV4Y19Jbml0KFB5T2JqZWN0ICpibHRpbm1vZCkKIHsKLSAgICBQeU9iamVjdCAqYmx0aW5tb2QsICpiZGljdDsKKyAgICBQeU9iamVjdCAqYmRpY3Q7CiAKICAgICBQUkVfSU5JVChCYXNlRXhjZXB0aW9uKQogICAgIFBSRV9JTklUKEV4Y2VwdGlvbikKQEAgLTE5ODksMTUgKzIzOTUsNyBAQAogICAgIFBSRV9JTklUKFN5c3RlbUV4aXQpCiAgICAgUFJFX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUFJFX0lOSVQoSW1wb3J0RXJyb3IpCi0gICAgUFJFX0lOSVQoRW52aXJvbm1lbnRFcnJvcikKLSAgICBQUkVfSU5JVChJT0Vycm9yKQogICAgIFBSRV9JTklUKE9TRXJyb3IpCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIFBSRV9JTklUKFdpbmRvd3NFcnJvcikKLSNlbmRpZgotI2lmZGVmIF9fVk1TCi0gICAgUFJFX0lOSVQoVk1TRXJyb3IpCi0jZW5kaWYKICAgICBQUkVfSU5JVChFT0ZFcnJvcikKICAgICBQUkVfSU5JVChSdW50aW1lRXJyb3IpCiAgICAgUFJFX0lOSVQoTm90SW1wbGVtZW50ZWRFcnJvcikKQEAgLTIwMzcsOSArMjQzNSwyNCBAQAogICAgIFBSRV9JTklUKEJ5dGVzV2FybmluZykKICAgICBQUkVfSU5JVChSZXNvdXJjZVdhcm5pbmcpCiAKLSAgICBibHRpbm1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiYnVpbHRpbnMiKTsKLSAgICBpZiAoYmx0aW5tb2QgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiZXhjZXB0aW9ucyBib290c3RyYXBwaW5nIGVycm9yLiIpOworICAgIC8qIE9TRXJyb3Igc3ViY2xhc3NlcyAqLworICAgIFBSRV9JTklUKENvbm5lY3Rpb25FcnJvcik7CisKKyAgICBQUkVfSU5JVChCbG9ja2luZ0lPRXJyb3IpOworICAgIFBSRV9JTklUKEJyb2tlblBpcGVFcnJvcik7CisgICAgUFJFX0lOSVQoQ2hpbGRQcm9jZXNzRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25SZWZ1c2VkRXJyb3IpOworICAgIFBSRV9JTklUKENvbm5lY3Rpb25SZXNldEVycm9yKTsKKyAgICBQUkVfSU5JVChGaWxlRXhpc3RzRXJyb3IpOworICAgIFBSRV9JTklUKEZpbGVOb3RGb3VuZEVycm9yKTsKKyAgICBQUkVfSU5JVChJc0FEaXJlY3RvcnlFcnJvcik7CisgICAgUFJFX0lOSVQoTm90QURpcmVjdG9yeUVycm9yKTsKKyAgICBQUkVfSU5JVChJbnRlcnJ1cHRlZEVycm9yKTsKKyAgICBQUkVfSU5JVChQZXJtaXNzaW9uRXJyb3IpOworICAgIFBSRV9JTklUKFByb2Nlc3NMb29rdXBFcnJvcik7CisgICAgUFJFX0lOSVQoVGltZW91dEVycm9yKTsKKwogICAgIGJkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChibHRpbm1vZCk7CiAgICAgaWYgKGJkaWN0ID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImV4Y2VwdGlvbnMgYm9vdHN0cmFwcGluZyBlcnJvci4iKTsKQEAgLTIwNTIsMTQgKzI0NjUsMTQgQEAKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQT1NUX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUE9TVF9JTklUKEltcG9ydEVycm9yKQotICAgIFBPU1RfSU5JVChFbnZpcm9ubWVudEVycm9yKQotICAgIFBPU1RfSU5JVChJT0Vycm9yKQogICAgIFBPU1RfSU5JVChPU0Vycm9yKQorICAgIElOSVRfQUxJQVMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKKyAgICBJTklUX0FMSUFTKElPRXJyb3IsIE9TRXJyb3IpCiAjaWZkZWYgTVNfV0lORE9XUwotICAgIFBPU1RfSU5JVChXaW5kb3dzRXJyb3IpCisgICAgSU5JVF9BTElBUyhXaW5kb3dzRXJyb3IsIE9TRXJyb3IpCiAjZW5kaWYKICNpZmRlZiBfX1ZNUwotICAgIFBPU1RfSU5JVChWTVNFcnJvcikKKyAgICBJTklUX0FMSUFTKFZNU0Vycm9yLCBPU0Vycm9yKQogI2VuZGlmCiAgICAgUE9TVF9JTklUKEVPRkVycm9yKQogICAgIFBPU1RfSU5JVChSdW50aW1lRXJyb3IpCkBAIC0yMTAwLDYgKzI1MTMsNDkgQEAKICAgICBQT1NUX0lOSVQoQnl0ZXNXYXJuaW5nKQogICAgIFBPU1RfSU5JVChSZXNvdXJjZVdhcm5pbmcpCiAKKyAgICBpZiAoIWVycm5vbWFwKSB7CisgICAgICAgIGVycm5vbWFwID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoIWVycm5vbWFwKQorICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2Fubm90IGFsbG9jYXRlIG1hcCBmcm9tIGVycm5vcyB0byBPU0Vycm9yIHN1YmNsYXNzZXMiKTsKKyAgICB9CisKKyAgICAvKiBPU0Vycm9yIHN1YmNsYXNzZXMgKi8KKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvbkVycm9yKTsKKworICAgIFBPU1RfSU5JVChCbG9ja2luZ0lPRXJyb3IpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVBR0FJTik7CisgICAgQUREX0VSUk5PKEJsb2NraW5nSU9FcnJvciwgRUFMUkVBRFkpOworICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVJTlBST0dSRVNTKTsKKyAgICBBRERfRVJSTk8oQmxvY2tpbmdJT0Vycm9yLCBFV09VTERCTE9DSyk7CisgICAgUE9TVF9JTklUKEJyb2tlblBpcGVFcnJvcik7CisgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVBJUEUpOworICAgIEFERF9FUlJOTyhCcm9rZW5QaXBlRXJyb3IsIEVTSFVURE9XTik7CisgICAgUE9TVF9JTklUKENoaWxkUHJvY2Vzc0Vycm9yKTsKKyAgICBBRERfRVJSTk8oQ2hpbGRQcm9jZXNzRXJyb3IsIEVDSElMRCk7CisgICAgUE9TVF9JTklUKENvbm5lY3Rpb25BYm9ydGVkRXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uQWJvcnRlZEVycm9yLCBFQ09OTkFCT1JURUQpOworICAgIFBPU1RfSU5JVChDb25uZWN0aW9uUmVmdXNlZEVycm9yKTsKKyAgICBBRERfRVJSTk8oQ29ubmVjdGlvblJlZnVzZWRFcnJvciwgRUNPTk5SRUZVU0VEKTsKKyAgICBQT1NUX0lOSVQoQ29ubmVjdGlvblJlc2V0RXJyb3IpOworICAgIEFERF9FUlJOTyhDb25uZWN0aW9uUmVzZXRFcnJvciwgRUNPTk5SRVNFVCk7CisgICAgUE9TVF9JTklUKEZpbGVFeGlzdHNFcnJvcik7CisgICAgQUREX0VSUk5PKEZpbGVFeGlzdHNFcnJvciwgRUVYSVNUKTsKKyAgICBQT1NUX0lOSVQoRmlsZU5vdEZvdW5kRXJyb3IpOworICAgIEFERF9FUlJOTyhGaWxlTm90Rm91bmRFcnJvciwgRU5PRU5UKTsKKyAgICBQT1NUX0lOSVQoSXNBRGlyZWN0b3J5RXJyb3IpOworICAgIEFERF9FUlJOTyhJc0FEaXJlY3RvcnlFcnJvciwgRUlTRElSKTsKKyAgICBQT1NUX0lOSVQoTm90QURpcmVjdG9yeUVycm9yKTsKKyAgICBBRERfRVJSTk8oTm90QURpcmVjdG9yeUVycm9yLCBFTk9URElSKTsKKyAgICBQT1NUX0lOSVQoSW50ZXJydXB0ZWRFcnJvcik7CisgICAgQUREX0VSUk5PKEludGVycnVwdGVkRXJyb3IsIEVJTlRSKTsKKyAgICBQT1NUX0lOSVQoUGVybWlzc2lvbkVycm9yKTsKKyAgICBBRERfRVJSTk8oUGVybWlzc2lvbkVycm9yLCBFQUNDRVMpOworICAgIEFERF9FUlJOTyhQZXJtaXNzaW9uRXJyb3IsIEVQRVJNKTsKKyAgICBQT1NUX0lOSVQoUHJvY2Vzc0xvb2t1cEVycm9yKTsKKyAgICBBRERfRVJSTk8oUHJvY2Vzc0xvb2t1cEVycm9yLCBFU1JDSCk7CisgICAgUE9TVF9JTklUKFRpbWVvdXRFcnJvcik7CisgICAgQUREX0VSUk5PKFRpbWVvdXRFcnJvciwgRVRJTUVET1VUKTsKKwogICAgIHByZWFsbG9jYXRlX21lbWVycm9ycygpOwogCiAgICAgaWYgKCFQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpIHsKQEAgLTIxMjYsNyArMjU4Miw2IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoYXJnc190dXBsZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfREVDUkVGKGJsdGlubW9kKTsKIH0KIAogdm9pZApAQCAtMjEzNCw0ICsyNTg5LDUgQEAKIHsKICAgICBQeV9DTEVBUihQeUV4Y19SZWN1cnNpb25FcnJvckluc3QpOwogICAgIGZyZWVfcHJlYWxsb2NhdGVkX21lbWVycm9ycygpOworICAgIFB5X0NMRUFSKGVycm5vbWFwKTsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggZDIwZjE5Ni4uZTFjNDdjZSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTMwLDExICszMCwxMiBAQAogICAgICAgICAgICAgICBjaGFyICplcnJvcnMsIGNoYXIgKm5ld2xpbmUsIGludCBjbG9zZWZkKQogewogICAgIFB5T2JqZWN0ICppbywgKnN0cmVhbTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKIAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJpbyIpOwogICAgIGlmIChpbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHJlYW0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJpc2lzc3NpIiwgZmQsIG1vZGUsCisgICAgc3RyZWFtID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaXNzc2kiLCBmZCwgbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcmluZywgZW5jb2RpbmcsIGVycm9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGNsb3NlZmQpOwogICAgIFB5X0RFQ1JFRihpbyk7CkBAIC01OCw4ICs1OSw5IEBACiAgICAgewogICAgICAgICBQeU9iamVjdCAqcmVhZGVyOwogICAgICAgICBQeU9iamVjdCAqYXJnczsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmVhZGxpbmUpOwogCi0gICAgICAgIHJlYWRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZiwgInJlYWRsaW5lIik7CisgICAgICAgIHJlYWRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfcmVhZGxpbmUpOwogICAgICAgICBpZiAocmVhZGVyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKG4gPD0gMCkKQEAgLTEwMywyMyArMTA1LDE4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKG4gPCAwICYmIHJlc3VsdCAhPSBOVUxMICYmIFB5VW5pY29kZV9DaGVjayhyZXN1bHQpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpOwotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShyZXN1bHQpOworICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CiAgICAgICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXN1bHQgPSBOVUxMOwogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0VPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFT0Ygd2hlbiByZWFkaW5nIGEgbGluZSIpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNbbGVuLTFdID09ICdcbicpIHsKLSAgICAgICAgICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKQotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgbGVuLTEpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnY7Ci0gICAgICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBsZW4tMSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gdjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihyZXN1bHQsIGxlbi0xKSA9PSAnXG4nKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdjsKKyAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKHJlc3VsdCwgMCwgbGVuLTEpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXN1bHQgPSB2OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzEsMTEgKzEyOCwxMyBAQAogUHlGaWxlX1dyaXRlT2JqZWN0KFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqZiwgaW50IGZsYWdzKQogewogICAgIFB5T2JqZWN0ICp3cml0ZXIsICp2YWx1ZSwgKmFyZ3MsICpyZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOworCiAgICAgaWYgKGYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAid3JpdGVvYmplY3Qgd2l0aCBOVUxMIGZpbGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB3cml0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGYsICJ3cml0ZSIpOworICAgIHdyaXRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZiwgJlB5SWRfd3JpdGUpOwogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChmbGFncyAmIFB5X1BSSU5UX1JBVykgewpAQCAtMTk4LDExICsxOTcsMTIgQEAKIHsKICAgICBpbnQgZmQ7CiAgICAgUHlPYmplY3QgKm1ldGg7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5vKTsKIAogICAgIGlmIChQeUxvbmdfQ2hlY2sobykpIHsKICAgICAgICAgZmQgPSBQeUxvbmdfQXNMb25nKG8pOwogICAgIH0KLSAgICBlbHNlIGlmICgobWV0aCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobywgImZpbGVubyIpKSAhPSBOVUxMKQorICAgIGVsc2UgaWYgKChtZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCAmUHlJZF9maWxlbm8pKSAhPSBOVUxMKQogICAgIHsKICAgICAgICAgUHlPYmplY3QgKmZubyA9IFB5RXZhbF9DYWxsT2JqZWN0KG1ldGgsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYobWV0aCk7CkBAIC0yOTcsOCArMjk3LDggQEAKICAgICAgICAgKnArKyA9IGM7CiAgICAgICAgIGlmIChjID09ICdcbicpIGJyZWFrOwogICAgIH0KLSAgICBpZiAoIGMgPT0gRU9GICYmIHNraXBuZXh0bGYgKQotICAgICAgICBuZXdsaW5ldHlwZXMgfD0gTkVXTElORV9DUjsKKyAgICAvKiBpZiAoIGMgPT0gRU9GICYmIHNraXBuZXh0bGYgKQorICAgICAgICBuZXdsaW5ldHlwZXMgfD0gTkVXTElORV9DUjsgKi8KICAgICBGVU5MT0NLRklMRShzdHJlYW0pOwogICAgICpwID0gJ1wwJzsKICAgICBpZiAoIHNraXBuZXh0bGYgKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKaW5kZXggZTE0NmE0Zi4uYTQyYmU3MSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jCisrKyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwpAQCAtMTUsNTkgKzE1LDE3IEBACiAjZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8gKHgpIDogKHkpKQogCiAKLSNpZmRlZiBfT1NGX1NPVVJDRQotLyogT1NGMSA1LjEgZG9lc24ndCBtYWtlIHRoaXMgYXZhaWxhYmxlIHdpdGggWE9QRU5fU09VUkNFX0VYVEVOREVEIGRlZmluZWQgKi8KLWV4dGVybiBpbnQgZmluaXRlKGRvdWJsZSk7Ci0jZW5kaWYKLQogLyogU3BlY2lhbCBmcmVlIGxpc3QKLQotICAgU2luY2Ugc29tZSBQeXRob24gcHJvZ3JhbXMgY2FuIHNwZW5kIG11Y2ggb2YgdGhlaXIgdGltZSBhbGxvY2F0aW5nCi0gICBhbmQgZGVhbGxvY2F0aW5nIGZsb2F0cywgdGhlc2Ugb3BlcmF0aW9ucyBzaG91bGQgYmUgdmVyeSBmYXN0LgotICAgVGhlcmVmb3JlIHdlIHVzZSBhIGRlZGljYXRlZCBhbGxvY2F0aW9uIHNjaGVtZSB3aXRoIGEgbXVjaCBsb3dlcgotICAgb3ZlcmhlYWQgKGluIHNwYWNlIGFuZCB0aW1lKSB0aGFuIHN0cmFpZ2h0IG1hbGxvYygpOiBhIHNpbXBsZQotICAgZGVkaWNhdGVkIGZyZWUgbGlzdCwgZmlsbGVkIHdoZW4gbmVjZXNzYXJ5IHdpdGggbWVtb3J5IGZyb20gbWFsbG9jKCkuCi0KLSAgIGJsb2NrX2xpc3QgaXMgYSBzaW5nbHktbGlua2VkIGxpc3Qgb2YgYWxsIFB5RmxvYXRCbG9ja3MgZXZlciBhbGxvY2F0ZWQsCi0gICBsaW5rZWQgdmlhIHRoZWlyIG5leHQgbWVtYmVycy4gIFB5RmxvYXRCbG9ja3MgYXJlIG5ldmVyIHJldHVybmVkIHRvIHRoZQotICAgc3lzdGVtIGJlZm9yZSBzaHV0ZG93biAoUHlGbG9hdF9GaW5pKS4KLQogICAgZnJlZV9saXN0IGlzIGEgc2luZ2x5LWxpbmtlZCBsaXN0IG9mIGF2YWlsYWJsZSBQeUZsb2F0T2JqZWN0cywgbGlua2VkCiAgICB2aWEgYWJ1c2Ugb2YgdGhlaXIgb2JfdHlwZSBtZW1iZXJzLgogKi8KIAotI2RlZmluZSBCTE9DS19TSVpFICAgICAgMTAwMCAgICAvKiAxSyBsZXNzIHR5cGljYWwgbWFsbG9jIG92ZXJoZWFkICovCi0jZGVmaW5lIEJIRUFEX1NJWkUgICAgICA4ICAgICAgIC8qIEVub3VnaCBmb3IgYSA2NC1iaXQgcG9pbnRlciAqLwotI2RlZmluZSBOX0ZMT0FUT0JKRUNUUyAgKChCTE9DS19TSVpFIC0gQkhFQURfU0laRSkgLyBzaXplb2YoUHlGbG9hdE9iamVjdCkpCi0KLXN0cnVjdCBfZmxvYXRibG9jayB7Ci0gICAgc3RydWN0IF9mbG9hdGJsb2NrICpuZXh0OwotICAgIFB5RmxvYXRPYmplY3Qgb2JqZWN0c1tOX0ZMT0FUT0JKRUNUU107Ci19OwotCi10eXBlZGVmIHN0cnVjdCBfZmxvYXRibG9jayBQeUZsb2F0QmxvY2s7Ci0KLXN0YXRpYyBQeUZsb2F0QmxvY2sgKmJsb2NrX2xpc3QgPSBOVUxMOworI2lmbmRlZiBQeUZsb2F0X01BWEZSRUVMSVNUCisjZGVmaW5lIFB5RmxvYXRfTUFYRlJFRUxJU1QgICAgMTAwCisjZW5kaWYKK3N0YXRpYyBpbnQgbnVtZnJlZSA9IDA7CiBzdGF0aWMgUHlGbG9hdE9iamVjdCAqZnJlZV9saXN0ID0gTlVMTDsKIAotc3RhdGljIFB5RmxvYXRPYmplY3QgKgotZmlsbF9mcmVlX2xpc3Qodm9pZCkKLXsKLSAgICBQeUZsb2F0T2JqZWN0ICpwLCAqcTsKLSAgICAvKiBYWFggRmxvYXQgYmxvY2tzIGVzY2FwZSB0aGUgb2JqZWN0IGhlYXAuIFVzZSBQeU9iamVjdF9NQUxMT0MgPz8/ICovCi0gICAgcCA9IChQeUZsb2F0T2JqZWN0ICopIFB5TWVtX01BTExPQyhzaXplb2YoUHlGbG9hdEJsb2NrKSk7Ci0gICAgaWYgKHAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIChQeUZsb2F0T2JqZWN0ICopIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgKChQeUZsb2F0QmxvY2sgKilwKS0+bmV4dCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IChQeUZsb2F0QmxvY2sgKilwOwotICAgIHAgPSAmKChQeUZsb2F0QmxvY2sgKilwKS0+b2JqZWN0c1swXTsKLSAgICBxID0gcCArIE5fRkxPQVRPQkpFQ1RTOwotICAgIHdoaWxlICgtLXEgPiBwKQotICAgICAgICBQeV9UWVBFKHEpID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKShxLTEpOwotICAgIFB5X1RZUEUocSkgPSBOVUxMOwotICAgIHJldHVybiBwICsgTl9GTE9BVE9CSkVDVFMgLSAxOwotfQotCiBkb3VibGUKIFB5RmxvYXRfR2V0TWF4KHZvaWQpCiB7CkBAIC0xNTYsMTQgKzExNCwxNiBAQAogUHlPYmplY3QgKgogUHlGbG9hdF9Gcm9tRG91YmxlKGRvdWJsZSBmdmFsKQogewotICAgIHJlZ2lzdGVyIFB5RmxvYXRPYmplY3QgKm9wOwotICAgIGlmIChmcmVlX2xpc3QgPT0gTlVMTCkgewotICAgICAgICBpZiAoKGZyZWVfbGlzdCA9IGZpbGxfZnJlZV9saXN0KCkpID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZWdpc3RlciBQeUZsb2F0T2JqZWN0ICpvcCA9IGZyZWVfbGlzdDsKKyAgICBpZiAob3AgIT0gTlVMTCkgeworICAgICAgICBmcmVlX2xpc3QgPSAoUHlGbG9hdE9iamVjdCAqKSBQeV9UWVBFKG9wKTsKKyAgICAgICAgbnVtZnJlZS0tOworICAgIH0gZWxzZSB7CisgICAgICAgIG9wID0gKFB5RmxvYXRPYmplY3QqKSBQeU9iamVjdF9NQUxMT0Moc2l6ZW9mKFB5RmxvYXRPYmplY3QpKTsKKyAgICAgICAgaWYgKCFvcCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwogICAgIH0KICAgICAvKiBJbmxpbmUgUHlPYmplY3RfTmV3ICovCi0gICAgb3AgPSBmcmVlX2xpc3Q7Ci0gICAgZnJlZV9saXN0ID0gKFB5RmxvYXRPYmplY3QgKilQeV9UWVBFKG9wKTsKICAgICBQeU9iamVjdF9JTklUKG9wLCAmUHlGbG9hdF9UeXBlKTsKICAgICBvcC0+b2JfZnZhbCA9IGZ2YWw7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKQEAgLTE3OSwyNSArMTM5LDE0IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHYpOwotICAgICAgICBQeV9VTklDT0RFICpidWZwdHI7Ci0gICAgICAgIHNfYnVmZmVyID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodiksIGJ1Zmxlbik7CisgICAgICAgIHNfYnVmZmVyID0gX1B5VW5pY29kZV9UcmFuc2Zvcm1EZWNpbWFsQW5kU3BhY2VUb0FTQ0lJKHYpOwogICAgICAgICBpZiAoc19idWZmZXIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiBSZXBsYWNlIG5vbi1BU0NJSSB3aGl0ZXNwYWNlIHdpdGggJyAnICovCi0gICAgICAgIGJ1ZnB0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNfYnVmZmVyKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IGJ1ZmxlbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gYnVmcHRyW2ldOwotICAgICAgICAgICAgaWYgKGNoID4gMTI3ICYmIFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCi0gICAgICAgICAgICAgICAgYnVmcHRyW2ldID0gJyAnOwotICAgICAgICB9Ci0gICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzX2J1ZmZlcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBsYXN0ID0gcyArIGxlbjsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfQXNDaGFyQnVmZmVyKHYsICZzLCAmbGVuKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMjMzLDYgKzE4MiwxMSBAQAogZmxvYXRfZGVhbGxvYyhQeUZsb2F0T2JqZWN0ICpvcCkKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KG9wKSkgeworICAgICAgICBpZiAobnVtZnJlZSA+PSBQeUZsb2F0X01BWEZSRUVMSVNUKSAgeworICAgICAgICAgICAgUHlPYmplY3RfRlJFRShvcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbnVtZnJlZSsrOwogICAgICAgICBQeV9UWVBFKG9wKSA9IChzdHJ1Y3QgX3R5cGVvYmplY3QgKilmcmVlX2xpc3Q7CiAgICAgICAgIGZyZWVfbGlzdCA9IG9wOwogICAgIH0KQEAgLTMxMywxMyArMjY3LDE1IEBACiBmbG9hdF9yZXByKFB5RmxvYXRPYmplY3QgKnYpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBjaGFyICpidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoUHlGbG9hdF9BU19ET1VCTEUodiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyJywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRFRTRl9BRERfRE9UXzAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGNoYXIgKmJ1ZjsKKworICAgIGJ1ZiA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyhQeUZsb2F0X0FTX0RPVUJMRSh2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3InLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9EVFNGX0FERF9ET1RfMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgaWYgKCFidWYpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1Zik7CisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBzdHJsZW4oYnVmKSk7CiAgICAgUHlNZW1fRnJlZShidWYpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MjMsOCArNDc5LDcgQEAKICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHIpOwogCiAgVW5pbXBsZW1lbnRlZDoKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIHN0YXRpYyBQeV9oYXNoX3QKQEAgLTEwODAsNyArMTAzNSw3IEBACiBjaGFyX2Zyb21faGV4KGludCB4KQogewogICAgIGFzc2VydCgwIDw9IHggJiYgeCA8IDE2KTsKLSAgICByZXR1cm4gIjAxMjM0NTY3ODlhYmNkZWYiW3hdOworICAgIHJldHVybiBQeV9oZXhkaWdpdHNbeF07CiB9CiAKIHN0YXRpYyBpbnQKQEAgLTE3NTAsMTIgKzE3MDUsMjIgQEAKIGZsb2F0X19mb3JtYXRfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIGludCByZXQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6X19mb3JtYXRfXyIsICZmb3JtYXRfc3BlYykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShmb3JtYXRfc3BlYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShmb3JtYXRfc3BlYykpOworCisgICAgX1B5VW5pY29kZVdyaXRlcl9Jbml0KCZ3cml0ZXIsIDApOworICAgIHJldCA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKGZsb2F0X19mb3JtYXRfX2RvYywKQEAgLTE5NTAsOTggKzE5MTUsMzQgQEAKIGludAogUHlGbG9hdF9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgUHlGbG9hdE9iamVjdCAqcDsKLSAgICBQeUZsb2F0QmxvY2sgKmxpc3QsICpuZXh0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiByZW1haW5pbmcgdW5mcmVlZCBmbG9hdHMgcGVyIGJsb2NrICovCi0gICAgaW50IGZyZWVsaXN0X3NpemUgPSAwOwotCi0gICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgYmxvY2tfbGlzdCA9IE5VTEw7Ci0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgIHUgPSAwOwotICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KHApICYmIFB5X1JFRkNOVChwKSAhPSAwKQotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICBuZXh0ID0gbGlzdC0+bmV4dDsKLSAgICAgICAgaWYgKHUpIHsKLSAgICAgICAgICAgIGxpc3QtPm5leHQgPSBibG9ja19saXN0OwotICAgICAgICAgICAgYmxvY2tfbGlzdCA9IGxpc3Q7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07Ci0gICAgICAgICAgICAgICAgIGkgPCBOX0ZMT0FUT0JKRUNUUzsKLSAgICAgICAgICAgICAgICAgaSsrLCBwKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChwKSB8fAotICAgICAgICAgICAgICAgICAgICBQeV9SRUZDTlQocCkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHApID0gKHN0cnVjdCBfdHlwZW9iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9saXN0OwotICAgICAgICAgICAgICAgICAgICBmcmVlX2xpc3QgPSBwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUobGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgZnJlZWxpc3Rfc2l6ZSArPSB1OwotICAgICAgICBsaXN0ID0gbmV4dDsKKyAgICBQeUZsb2F0T2JqZWN0ICpmID0gZnJlZV9saXN0LCAqbmV4dDsKKyAgICBpbnQgaSA9IG51bWZyZWU7CisgICAgd2hpbGUgKGYpIHsKKyAgICAgICAgbmV4dCA9IChQeUZsb2F0T2JqZWN0KikgUHlfVFlQRShmKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShmKTsKKyAgICAgICAgZiA9IG5leHQ7CiAgICAgfQotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIGZyZWVfbGlzdCA9IE5VTEw7CisgICAgbnVtZnJlZSA9IDA7CisgICAgcmV0dXJuIGk7CiB9CiAKIHZvaWQKIFB5RmxvYXRfRmluaSh2b2lkKQogewotICAgIFB5RmxvYXRPYmplY3QgKnA7Ci0gICAgUHlGbG9hdEJsb2NrICpsaXN0OwotICAgIGludCBpOwotICAgIGludCB1OyAgICAgICAgICAgICAgICAgICAgICAvKiB0b3RhbCB1bmZyZWVkIGZsb2F0cyBwZXIgYmxvY2sgKi8KLQotICAgIHUgPSBQeUZsb2F0X0NsZWFyRnJlZUxpc3QoKTsKLQotICAgIGlmICghUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIHJldHVybjsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiMgY2xlYW51cCBmbG9hdHMiKTsKLSAgICBpZiAoIXUpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiOiAlZCB1bmZyZWVkIGZsb2F0JXNcbiIsCi0gICAgICAgICAgICB1LCB1ID09IDEgPyAiIiA6ICJzIik7Ci0gICAgfQotICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpIHsKLSAgICAgICAgbGlzdCA9IGJsb2NrX2xpc3Q7Ci0gICAgICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKLSAgICAgICAgICAgICAgICAgaSA8IE5fRkxPQVRPQkpFQ1RTOwotICAgICAgICAgICAgICAgICBpKyssIHArKykgewotICAgICAgICAgICAgICAgIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QocCkgJiYKLSAgICAgICAgICAgICAgICAgICAgUHlfUkVGQ05UKHApICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgUHlGbG9hdF9BU19ET1VCTEUocCksICdyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYnVmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFgodHdvdXRlcnMpIGNhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmNvdW50IHRvIGxvbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudGlsICV6ZCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsbHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAiIyAgIDxmbG9hdCBhdCAlcCwgcmVmY250PSVsZCwgdmFsPSVzPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIChsb25nKVB5X1JFRkNOVChwKSwgYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7Ci0gICAgICAgIH0KLSAgICB9CisgICAgKHZvaWQpUHlGbG9hdF9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGbG9hdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGbG9hdE9iamVjdCkpOworfQorCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXs0LDh9LiAgU2VlIGZsb2F0b2JqZWN0LmguCiAgKi8KQEAgLTIyNTEsNyArMjE1Miw3IEBACiAKICAgICAgICAgLyogRWlnaHRoIGJ5dGUgKi8KICAgICAgICAgKnAgPSBmbG8gJiAweEZGOwotICAgICAgICBwICs9IGluY3I7CisgICAgICAgIC8qIHAgKz0gaW5jcjsgKi8KIAogICAgICAgICAvKiBEb25lICovCiAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IGFkY2U0MmIuLjgwOGU1OTUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTE1LDExICsxNSwxMSBAQAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlGcmFtZU9iamVjdCwgeCkKIAogc3RhdGljIFB5TWVtYmVyRGVmIGZyYW1lX21lbWJlcmxpc3RbXSA9IHsKLSAgICB7ImZfYmFjayIsICAgICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9iYWNrKSwgICAgUkVBRE9OTFl9LAotICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICBSRUFET05MWX0sCi0gICAgeyJmX2J1aWx0aW5zIiwgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYnVpbHRpbnMpLFJFQURPTkxZfSwKLSAgICB7ImZfZ2xvYmFscyIsICAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9nbG9iYWxzKSwgUkVBRE9OTFl9LAotICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICBSRUFET05MWX0sCisgICAgeyJmX2JhY2siLCAgICAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfYmFjayksICAgICAgUkVBRE9OTFl9LAorICAgIHsiZl9jb2RlIiwgICAgICAgICAgVF9PQkpFQ1QsICAgICAgIE9GRihmX2NvZGUpLCAgICAgIFJFQURPTkxZfSwKKyAgICB7ImZfYnVpbHRpbnMiLCAgICAgIFRfT0JKRUNULCAgICAgICBPRkYoZl9idWlsdGlucyksICBSRUFET05MWX0sCisgICAgeyJmX2dsb2JhbHMiLCAgICAgICBUX09CSkVDVCwgICAgICAgT0ZGKGZfZ2xvYmFscyksICAgUkVBRE9OTFl9LAorICAgIHsiZl9sYXN0aSIsICAgICAgICAgVF9JTlQsICAgICAgICAgIE9GRihmX2xhc3RpKSwgICAgIFJFQURPTkxZfSwKICAgICB7TlVMTH0gICAgICAvKiBTZW50aW5lbCAqLwogfTsKIApAQCAtNjE0LDEwICs2MTQsOCBAQAogICAgICAgICBpZiAoYnVpbHRpbnMpIHsKICAgICAgICAgICAgIGlmIChQeU1vZHVsZV9DaGVjayhidWlsdGlucykpIHsKICAgICAgICAgICAgICAgICBidWlsdGlucyA9IFB5TW9kdWxlX0dldERpY3QoYnVpbHRpbnMpOwotICAgICAgICAgICAgICAgIGFzc2VydCghYnVpbHRpbnMgfHwgUHlEaWN0X0NoZWNrKGJ1aWx0aW5zKSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhidWlsdGlucykpCi0gICAgICAgICAgICAgICAgYnVpbHRpbnMgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChidWlsdGlucyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAvKiBObyBidWlsdGlucyEgICAgICAgICAgICAgIE1ha2UgdXAgYSBtaW5pbWFsIG9uZQpAQCAtNjM2LDcgKzYzNCw3IEBACiAgICAgICAgIC8qIElmIHdlIHNoYXJlIHRoZSBnbG9iYWxzLCB3ZSBzaGFyZSB0aGUgYnVpbHRpbnMuCiAgICAgICAgICAgIFNhdmUgYSBsb29rdXAgYW5kIGEgY2FsbC4gKi8KICAgICAgICAgYnVpbHRpbnMgPSBiYWNrLT5mX2J1aWx0aW5zOwotICAgICAgICBhc3NlcnQoYnVpbHRpbnMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soYnVpbHRpbnMpKTsKKyAgICAgICAgYXNzZXJ0KGJ1aWx0aW5zICE9IE5VTEwpOwogICAgICAgICBQeV9JTkNSRUYoYnVpbHRpbnMpOwogICAgIH0KICAgICBpZiAoY29kZS0+Y29fem9tYmllZnJhbWUgIT0gTlVMTCkgewpAQCAtNjY1LDExICs2NjMsMTMgQEAKICAgICAgICAgICAgIGYgPSBmcmVlX2xpc3Q7CiAgICAgICAgICAgICBmcmVlX2xpc3QgPSBmcmVlX2xpc3QtPmZfYmFjazsKICAgICAgICAgICAgIGlmIChQeV9TSVpFKGYpIDwgZXh0cmFzKSB7Ci0gICAgICAgICAgICAgICAgZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOwotICAgICAgICAgICAgICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpuZXdfZiA9IFB5T2JqZWN0X0dDX1Jlc2l6ZShQeUZyYW1lT2JqZWN0LCBmLCBleHRyYXMpOworICAgICAgICAgICAgICAgIGlmIChuZXdfZiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChmKTsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJ1aWx0aW5zKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGYgPSBuZXdfZjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIF9QeV9OZXdSZWZlcmVuY2UoKFB5T2JqZWN0ICopZik7CiAgICAgICAgIH0KQEAgLTk1NSwzICs5NTUsMTMgQEAKICAgICBQeV9YREVDUkVGKGJ1aWx0aW5fb2JqZWN0KTsKICAgICBidWlsdGluX29iamVjdCA9IE5VTEw7CiB9CisKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUZyYW1lX0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQoreworICAgIF9QeURlYnVnQWxsb2NhdG9yU3RhdHMob3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImZyZWUgUHlGcmFtZU9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlGcmFtZU9iamVjdCkpOworfQorCmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IDIyOTJhOWUuLjQ5NDE1YjkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC02LDcgKzYsNyBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiBQeU9iamVjdCAqCi1QeUZ1bmN0aW9uX05ldyhQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMpCitQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShQeU9iamVjdCAqY29kZSwgUHlPYmplY3QgKmdsb2JhbHMsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpvcCA9IFB5T2JqZWN0X0dDX05ldyhQeUZ1bmN0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUZ1bmN0aW9uX1R5cGUpOwpAQCAtNTQsNiArNTQsMTEgQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihtb2R1bGUpOwogICAgICAgICAgICAgb3AtPmZ1bmNfbW9kdWxlID0gbW9kdWxlOwogICAgICAgICB9CisgICAgICAgIGlmIChxdWFsbmFtZSkKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gcXVhbG5hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gb3AtPmZ1bmNfbmFtZTsKKyAgICAgICAgUHlfSU5DUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTYyLDYgKzY3LDEyIEBACiB9CiAKIFB5T2JqZWN0ICoKK1B5RnVuY3Rpb25fTmV3KFB5T2JqZWN0ICpjb2RlLCBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICByZXR1cm4gUHlGdW5jdGlvbl9OZXdXaXRoUXVhbE5hbWUoY29kZSwgZ2xvYmFscywgTlVMTCk7Cit9CisKK1B5T2JqZWN0ICoKIFB5RnVuY3Rpb25fR2V0Q29kZShQeU9iamVjdCAqb3ApCiB7CiAgICAgaWYgKCFQeUZ1bmN0aW9uX0NoZWNrKG9wKSkgewpAQCAtMjM0LDQyICsyNDUsNiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWZ1bmNfZ2V0X2RpY3QoUHlGdW5jdGlvbk9iamVjdCAqb3ApCi17Ci0gICAgaWYgKG9wLT5mdW5jX2RpY3QgPT0gTlVMTCkgewotICAgICAgICBvcC0+ZnVuY19kaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICBpZiAob3AtPmZ1bmNfZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIFB5X0lOQ1JFRihvcC0+ZnVuY19kaWN0KTsKLSAgICByZXR1cm4gb3AtPmZ1bmNfZGljdDsKLX0KLQotc3RhdGljIGludAotZnVuY19zZXRfZGljdChQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQotewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KLSAgICAvKiBJdCBpcyBpbGxlZ2FsIHRvIGRlbCBmLmZ1bmNfZGljdCAqLwotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24ncyBkaWN0aW9uYXJ5IG1heSBub3QgYmUgZGVsZXRlZCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIC8qIENhbiBvbmx5IHNldCBmdW5jX2RpY3QgdG8gYSBkaWN0aW9uYXJ5ICovCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic2V0dGluZyBmdW5jdGlvbidzIGRpY3Rpb25hcnkgdG8gYSBub24tZGljdCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2RpY3Q7Ci0gICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19kaWN0ID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogZnVuY19nZXRfY29kZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBQeV9JTkNSRUYob3AtPmZ1bmNfY29kZSk7CkBAIC0zMzQsNiArMzA5LDMyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitmdW5jX2dldF9xdWFsbmFtZShQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKK3sKKyAgICBQeV9JTkNSRUYob3AtPmZ1bmNfcXVhbG5hbWUpOworICAgIHJldHVybiBvcC0+ZnVuY19xdWFsbmFtZTsKK30KKworc3RhdGljIGludAorZnVuY19zZXRfcXVhbG5hbWUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworCisgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLl9fcXVhbG5hbWVfXyBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKKyAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KKyAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIl9fcXVhbG5hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB0bXAgPSBvcC0+ZnVuY19xdWFsbmFtZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIG9wLT5mdW5jX3F1YWxuYW1lID0gdmFsdWU7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCiBmdW5jX2dldF9kZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICBpZiAob3AtPmZ1bmNfZGVmYXVsdHMgPT0gTlVMTCkgewpAQCAtNDM5LDggKzQ0MCw5IEBACiAgICAgIChzZXR0ZXIpZnVuY19zZXRfa3dkZWZhdWx0c30sCiAgICAgeyJfX2Fubm90YXRpb25zX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X2Fubm90YXRpb25zLAogICAgICAoc2V0dGVyKWZ1bmNfc2V0X2Fubm90YXRpb25zfSwKLSAgICB7Il9fZGljdF9fIiwgKGdldHRlcilmdW5jX2dldF9kaWN0LCAoc2V0dGVyKWZ1bmNfc2V0X2RpY3R9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X25hbWUsIChzZXR0ZXIpZnVuY19zZXRfbmFtZX0sCisgICAgeyJfX3F1YWxuYW1lX18iLCAoZ2V0dGVyKWZ1bmNfZ2V0X3F1YWxuYW1lLCAoc2V0dGVyKWZ1bmNfc2V0X3F1YWxuYW1lfSwKICAgICB7TlVMTH0gLyogU2VudGluZWwgKi8KIH07CiAKQEAgLTU2MSw2ICs1NjMsNyBAQAogICAgIFB5X1hERUNSRUYob3AtPmZ1bmNfZGljdCk7CiAgICAgUHlfWERFQ1JFRihvcC0+ZnVuY19jbG9zdXJlKTsKICAgICBQeV9YREVDUkVGKG9wLT5mdW5jX2Fubm90YXRpb25zKTsKKyAgICBQeV9YREVDUkVGKG9wLT5mdW5jX3F1YWxuYW1lKTsKICAgICBQeU9iamVjdF9HQ19EZWwob3ApOwogfQogCkBAIC01NjgsNyArNTcxLDcgQEAKIGZ1bmNfcmVwcihQeUZ1bmN0aW9uT2JqZWN0ICpvcCkKIHsKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxmdW5jdGlvbiAlVSBhdCAlcD4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLT5mdW5jX25hbWUsIG9wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcC0+ZnVuY19xdWFsbmFtZSwgb3ApOwogfQogCiBzdGF0aWMgaW50CkBAIC01ODQsNiArNTg3LDcgQEAKICAgICBQeV9WSVNJVChmLT5mdW5jX2RpY3QpOwogICAgIFB5X1ZJU0lUKGYtPmZ1bmNfY2xvc3VyZSk7CiAgICAgUHlfVklTSVQoZi0+ZnVuY19hbm5vdGF0aW9ucyk7CisgICAgUHlfVklTSVQoZi0+ZnVuY19xdWFsbmFtZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY2Nyw4ICs2NzEsOCBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIGZ1bmN0aW9uX2NhbGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLwotICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCiAgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCiAgICAgZnVuY19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KQEAgLTcxNCw2ICs3MTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKICAgICBQeU9iamVjdCAqY21fY2FsbGFibGU7CisgICAgUHlPYmplY3QgKmNtX2RpY3Q7CiB9IGNsYXNzbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtNzIxLDYgKzcyNiw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopY20pOwogICAgIFB5X1hERUNSRUYoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKGNtLT5jbV9kaWN0KTsKICAgICBQeV9UWVBFKGNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKiljbSk7CiB9CiAKQEAgLTcyOCw2ICs3MzQsNyBAQAogY21fdHJhdmVyc2UoY2xhc3NtZXRob2QgKmNtLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKICAgICBQeV9WSVNJVChjbS0+Y21fY2FsbGFibGUpOworICAgIFB5X1ZJU0lUKGNtLT5jbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNzM1LDYgKzc0Miw3IEBACiBjbV9jbGVhcihjbGFzc21ldGhvZCAqY20pCiB7CiAgICAgUHlfQ0xFQVIoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBQeV9DTEVBUihjbS0+Y21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTc3NCw2ICs3ODIsMjggQEAKICAgICB7TlVMTH0gIC8qIFNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlPYmplY3QgKgorY21fZ2V0X19faXNhYnN0cmFjdG1ldGhvZF9fKGNsYXNzbWV0aG9kICpjbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3QoY20tPmNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIGNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlciljbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGNsYXNzbWV0aG9kX2RvYywKICJjbGFzc21ldGhvZChmdW5jdGlvbikgLT4gbWV0aG9kXG5cCiBcblwKQEAgLTgxMiw3ICs4NDIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtODI1LDEyICs4NTUsMTIgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgY21fbWVtYmVybGlzdCwgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIGNtX2dldHNldGxpc3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCiAgICAgY21fZGVzY3JfZ2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIG9mZnNldG9mKGNsYXNzbWV0aG9kLCBjbV9kaWN0KSwgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwogICAgIGNtX2luaXQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLwogICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwpAQCAtODY5LDYgKzg5OSw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5T2JqZWN0ICpzbV9jYWxsYWJsZTsKKyAgICBQeU9iamVjdCAqc21fZGljdDsKIH0gc3RhdGljbWV0aG9kOwogCiBzdGF0aWMgdm9pZApAQCAtODc2LDYgKzkwNyw3IEBACiB7CiAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soKFB5T2JqZWN0ICopc20pOwogICAgIFB5X1hERUNSRUYoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9YREVDUkVGKHNtLT5zbV9kaWN0KTsKICAgICBQeV9UWVBFKHNtKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzbSk7CiB9CiAKQEAgLTg4Myw2ICs5MTUsNyBAQAogc21fdHJhdmVyc2Uoc3RhdGljbWV0aG9kICpzbSwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CiAgICAgUHlfVklTSVQoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBQeV9WSVNJVChzbS0+c21fZGljdCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg5MCw2ICs5MjMsNyBAQAogc21fY2xlYXIoc3RhdGljbWV0aG9kICpzbSkKIHsKICAgICBQeV9DTEVBUihzbS0+c21fY2FsbGFibGUpOworICAgIFB5X0NMRUFSKHNtLT5zbV9kaWN0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtOTI3LDYgKzk2MSwyOCBAQAogICAgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KIH07CiAKK3N0YXRpYyBQeU9iamVjdCAqCitzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18oc3RhdGljbWV0aG9kICpzbSwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgICBpbnQgcmVzID0gX1B5T2JqZWN0X0lzQWJzdHJhY3Qoc20tPnNtX2NhbGxhYmxlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChyZXMpIHsKKyAgICAgICAgUHlfUkVUVVJOX1RSVUU7CisgICAgfQorICAgIFB5X1JFVFVSTl9GQUxTRTsKK30KKworc3RhdGljIFB5R2V0U2V0RGVmIHNtX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9faXNhYnN0cmFjdG1ldGhvZF9fIiwKKyAgICAgKGdldHRlcilzbV9nZXRfX19pc2Fic3RyYWN0bWV0aG9kX18sIE5VTEwsCisgICAgIE5VTEwsCisgICAgIE5VTEx9LAorICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3QsIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKHN0YXRpY21ldGhvZF9kb2MsCiAic3RhdGljbWV0aG9kKGZ1bmN0aW9uKSAtPiBtZXRob2RcblwKIFxuXApAQCAtOTYyLDcgKzEwMTgsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCi0gICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KICAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLApAQCAtOTc1LDEyICsxMDMxLDEyIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIHNtX21lbWJlcmxpc3QsICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBzbV9nZXRzZXRsaXN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIHNtX2Rlc2NyX2dldCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihzdGF0aWNtZXRob2QsIHNtX2RpY3QpLCAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KICAgICBzbV9pbml0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvZ2Vub2JqZWN0LmMgYi9PYmplY3RzL2dlbm9iamVjdC5jCmluZGV4IDZlMjVmMTMuLjU5N2FlZDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZ2Vub2JqZWN0LmMKKysrIGIvT2JqZWN0cy9nZW5vYmplY3QuYwpAQCAtNSw2ICs1LDggQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAorc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpOworCiBzdGF0aWMgaW50CiBnZW5fdHJhdmVyc2UoUHlHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7CkBAIC01MSw3ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yIGFscmVhZHkgZXhlY3V0aW5nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZj09TlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewogICAgICAgICAvKiBPbmx5IHNldCBleGNlcHRpb24gaWYgY2FsbGVkIGZyb20gc2VuZCgpICovCiAgICAgICAgIGlmIChhcmcgJiYgIWV4YykKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CkBAIC05MCwxMiArOTIsMTkgQEAKIAogICAgIC8qIElmIHRoZSBnZW5lcmF0b3IganVzdCByZXR1cm5lZCAoYXMgb3Bwb3NlZCB0byB5aWVsZGluZyksIHNpZ25hbAogICAgICAqIHRoYXQgdGhlIGdlbmVyYXRvciBpcyBleGhhdXN0ZWQuICovCi0gICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lICYmIGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICAgICAgLyogU2V0IGV4Y2VwdGlvbiBpZiBub3QgY2FsbGVkIGJ5IGdlbl9pdGVybmV4dCgpICovCi0gICAgICAgIGlmIChhcmcpCisgICAgaWYgKHJlc3VsdCAmJiBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICAvKiBEZWxheSBleGNlcHRpb24gaW5zdGFudGlhdGlvbiBpZiB3ZSBjYW4gKi8KICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqZSA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzdWx0LCBOVUxMKTsKKyAgICAgICAgICAgIGlmIChlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0NMRUFSKHJlc3VsdCk7CiAgICAgfQogCiAgICAgaWYgKCFyZXN1bHQgfHwgZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CkBAIC0xMTEsOCArMTIwLDggQEAKICAgICAgICAgUHlfWERFQ1JFRih0KTsKICAgICAgICAgUHlfWERFQ1JFRih2KTsKICAgICAgICAgUHlfWERFQ1JFRih0Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICAgICAgZ2VuLT5naV9mcmFtZSA9IE5VTEw7CisgICAgICAgIFB5X0RFQ1JFRihmKTsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTIyLDggKzEzMSw4IEBACiAic2VuZChhcmcpIC0+IHNlbmQgJ2FyZycgaW50byBnZW5lcmF0b3IsXG5cCiByZXR1cm4gbmV4dCB5aWVsZGVkIHZhbHVlIG9yIHJhaXNlIFN0b3BJdGVyYXRpb24uIik7CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1nZW5fc2VuZChQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJnKQorUHlPYmplY3QgKgorX1B5R2VuX1NlbmQoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZykKIHsKICAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBhcmcsIDApOwogfQpAQCAtMTMxLDExICsxNDAsNzIgQEAKIFB5RG9jX1NUUlZBUihjbG9zZV9kb2MsCiAiY2xvc2UoKSAtPiByYWlzZSBHZW5lcmF0b3JFeGl0IGluc2lkZSBnZW5lcmF0b3IuIik7CiAKKy8qCisgKiAgIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHVzZWQgYnkgZ2VuX2Nsb3NlIGFuZCBnZW5fdGhyb3cgdG8KKyAqICAgY2xvc2UgYSBzdWJpdGVyYXRvciBiZWluZyBkZWxlZ2F0ZWQgdG8gYnkgeWllbGQtZnJvbS4KKyAqLworCitzdGF0aWMgaW50CitnZW5fY2xvc2VfaXRlcihQeU9iamVjdCAqeWYpCit7CisgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoY2xvc2UpOworCisgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CisgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX2Nsb3NlKTsKKyAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKKyAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoeWYpOworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihtZXRoLCAiIik7CisgICAgICAgICAgICBQeV9ERUNSRUYobWV0aCk7CisgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIFB5X1hERUNSRUYocmV0dmFsKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dlbl95ZihQeUdlbk9iamVjdCAqZ2VuKQoreworICAgIFB5T2JqZWN0ICp5ZiA9IE5VTEw7CisgICAgUHlGcmFtZU9iamVjdCAqZiA9IGdlbi0+Z2lfZnJhbWU7CisKKyAgICBpZiAoZikgeworICAgICAgICBQeU9iamVjdCAqYnl0ZWNvZGUgPSBmLT5mX2NvZGUtPmNvX2NvZGU7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNvZGUgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVjb2RlKTsKKworICAgICAgICBpZiAoY29kZVtmLT5mX2xhc3RpICsgMV0gIT0gWUlFTERfRlJPTSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOworICAgICAgICBQeV9JTkNSRUYoeWYpOworICAgIH0KKworICAgIHJldHVybiB5ZjsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIGdlbl9jbG9zZShQeUdlbk9iamVjdCAqZ2VuLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dmFsOwotICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CisgICAgUHlPYmplY3QgKnlmID0gZ2VuX3lmKGdlbik7CisgICAgaW50IGVyciA9IDA7CisKKyAgICBpZiAoeWYpIHsKKyAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgZXJyID0gZ2VuX2Nsb3NlX2l0ZXIoeWYpOworICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgIH0KKyAgICBpZiAoZXJyID09IDApCisgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfR2VuZXJhdG9yRXhpdCk7CiAgICAgcmV0dmFsID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKICAgICBpZiAocmV0dmFsKSB7CiAgICAgICAgIFB5X0RFQ1JFRihyZXR2YWwpOwpAQCAtMTQ0LDggKzIxNCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKQotICAgICAgICB8fCBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0dlbmVyYXRvckV4aXQpKQotICAgIHsKKyAgICAgICAgfHwgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19HZW5lcmF0b3JFeGl0KSkgewogICAgICAgICBQeUVycl9DbGVhcigpOyAgICAgICAgICAvKiBpZ25vcmUgdGhlc2UgZXJyb3JzICovCiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CkBAIC0xOTYsNyArMjY1LDcgQEAKICAgICAgICAgX1B5X05ld1JlZmVyZW5jZShzZWxmKTsKICAgICAgICAgc2VsZi0+b2JfcmVmY250ID0gcmVmY250OwogICAgIH0KLSAgICBhc3NlcnQoUHlUeXBlX0lTX0dDKHNlbGYtPm9iX3R5cGUpICYmCisgICAgYXNzZXJ0KFB5VHlwZV9JU19HQyhQeV9UWVBFKHNlbGYpKSAmJgogICAgICAgICAgICBfUHlfQVNfR0Moc2VsZiktPmdjLmdjX3JlZnMgIT0gX1B5R0NfUkVGU19VTlRSQUNLRUQpOwogCiAgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCkBAIC0yMDksOCArMjc4LDggQEAKICAgICAgKiB1bmRvbmUuCiAgICAgICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgLS1zZWxmLT5vYl90eXBlLT50cF9mcmVlczsKLSAgICAtLXNlbGYtPm9iX3R5cGUtPnRwX2FsbG9jczsKKyAgICAtLShQeV9UWVBFKHNlbGYpLT50cF9mcmVlcyk7CisgICAgLS0oUHlfVFlQRShzZWxmKS0+dHBfYWxsb2NzKTsKICNlbmRpZgogfQogCkBAIC0yMjYsMTAgKzI5NSw2NCBAQAogICAgIFB5T2JqZWN0ICp0eXA7CiAgICAgUHlPYmplY3QgKnRiID0gTlVMTDsKICAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqeWYgPSBnZW5feWYoZ2VuKTsKKyAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgaWYgKHlmKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgICAgIGludCBlcnI7CisgICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgICAgICBQeV9ERUNSRUYoeWYpOworICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSk7CisgICAgICAgICAgICBnb3RvIHRocm93X2hlcmU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAxOworICAgICAgICAgICAgcmV0ID0gZ2VuX3Rocm93KChQeUdlbk9iamVjdCAqKXlmLCBhcmdzKTsKKyAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbWV0aCA9IF9QeU9iamVjdF9HZXRBdHRySWQoeWYsICZQeUlkX3Rocm93KTsKKyAgICAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKKyAgICAgICAgICAgIHJldCA9IFB5T2JqZWN0X0NhbGxPYmplY3QobWV0aCwgYXJncyk7CisgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgUHlfREVDUkVGKG1ldGgpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih5Zik7CisgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsOworICAgICAgICAgICAgLyogUG9wIHN1Yml0ZXJhdG9yIGZyb20gc3RhY2sgKi8KKyAgICAgICAgICAgIHJldCA9ICooLS1nZW4tPmdpX2ZyYW1lLT5mX3N0YWNrdG9wKTsKKyAgICAgICAgICAgIGFzc2VydChyZXQgPT0geWYpOworICAgICAgICAgICAgUHlfREVDUkVGKHJldCk7CisgICAgICAgICAgICAvKiBUZXJtaW5hdGlvbiByZXBldGl0aW9uIG9mIFlJRUxEX0ZST00gKi8KKyAgICAgICAgICAgIGdlbi0+Z2lfZnJhbWUtPmZfbGFzdGkrKzsKKyAgICAgICAgICAgIGlmIChfUHlHZW5fRmV0Y2hTdG9wSXRlcmF0aW9uVmFsdWUoJnZhbCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCBQeV9Ob25lLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKwordGhyb3dfaGVyZToKICAgICAvKiBGaXJzdCwgY2hlY2sgdGhlIHRyYWNlYmFjayBhcmd1bWVudCwgcmVwbGFjaW5nIE5vbmUgd2l0aAogICAgICAgIE5VTEwuICovCiAgICAgaWYgKHRiID09IFB5X05vbmUpIHsKQEAgLTI3Miw3ICszOTUsNyBAQAogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImV4Y2VwdGlvbnMgbXVzdCBiZSBjbGFzc2VzIG9yIGluc3RhbmNlcyAiCiAgICAgICAgICAgICAgICAgICAgICAiZGVyaXZpbmcgZnJvbSBCYXNlRXhjZXB0aW9uLCBub3QgJXMiLAotICAgICAgICAgICAgICAgICAgICAgdHlwLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodHlwKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZF90aHJvdzsKICAgICB9CiAKQEAgLTI5MSw5ICs0MTQsNDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5faXRlcm5leHQoUHlHZW5PYmplY3QgKmdlbikKIHsKLSAgICByZXR1cm4gZ2VuX3NlbmRfZXgoZ2VuLCBOVUxMLCAwKTsKKyAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmV0OworICAgIHJldCA9IGdlbl9zZW5kX2V4KGdlbiwgdmFsLCAwKTsKKyAgICBQeV9YREVDUkVGKHZhbCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAorLyoKKyAqICAgSWYgU3RvcEl0ZXJhdGlvbiBleGNlcHRpb24gaXMgc2V0LCBmZXRjaGVzIGl0cyAndmFsdWUnCisgKiAgIGF0dHJpYnV0ZSBpZiBhbnksIG90aGVyd2lzZSBzZXRzIHB2YWx1ZSB0byBOb25lLgorICoKKyAqICAgUmV0dXJucyAwIGlmIG5vIGV4Y2VwdGlvbiBvciBTdG9wSXRlcmF0aW9uIGlzIHNldC4KKyAqICAgSWYgYW55IG90aGVyIGV4Y2VwdGlvbiBpcyBzZXQsIHJldHVybnMgLTEgYW5kIGxlYXZlcworICogICBwdmFsdWUgdW5jaGFuZ2VkLgorICovCisKK2ludAorX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKFB5T2JqZWN0ICoqcHZhbHVlKSB7CisgICAgUHlPYmplY3QgKmV0LCAqZXYsICp0YjsKKyAgICBQeU9iamVjdCAqdmFsdWUgPSBOVUxMOworCisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEl0ZXJhdGlvbikpIHsKKyAgICAgICAgUHlFcnJfRmV0Y2goJmV0LCAmZXYsICZ0Yik7CisgICAgICAgIFB5X1hERUNSRUYoZXQpOworICAgICAgICBQeV9YREVDUkVGKHRiKTsKKyAgICAgICAgaWYgKGV2KSB7CisgICAgICAgICAgICB2YWx1ZSA9ICgoUHlTdG9wSXRlcmF0aW9uT2JqZWN0ICopZXYpLT52YWx1ZTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZXYpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgdmFsdWUgPSBQeV9Ob25lOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIH0KKyAgICAqcHZhbHVlID0gdmFsdWU7CisgICAgcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBnZW5fcmVwcihQeUdlbk9iamVjdCAqZ2VuKQpAQCAtMzI0LDEzICs0ODQsMTMgQEAKIAogc3RhdGljIFB5TWVtYmVyRGVmIGdlbl9tZW1iZXJsaXN0W10gPSB7CiAgICAgeyJnaV9mcmFtZSIsICAgICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2ZyYW1lKSwgICAgICBSRUFET05MWX0sCi0gICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0lOVCwgICAgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX3J1bm5pbmcpLCAgICBSRUFET05MWX0sCisgICAgeyJnaV9ydW5uaW5nIiwgICAgICBUX0JPT0wsICAgIG9mZnNldG9mKFB5R2VuT2JqZWN0LCBnaV9ydW5uaW5nKSwgICAgUkVBRE9OTFl9LAogICAgIHsiZ2lfY29kZSIsICAgICBUX09CSkVDVCwgb2Zmc2V0b2YoUHlHZW5PYmplY3QsIGdpX2NvZGUpLCAgUkVBRE9OTFl9LAogICAgIHtOVUxMfSAgICAgIC8qIFNlbnRpbmVsICovCiB9OwogCiBzdGF0aWMgUHlNZXRob2REZWYgZ2VuX21ldGhvZHNbXSA9IHsKLSAgICB7InNlbmQiLChQeUNGdW5jdGlvbilnZW5fc2VuZCwgTUVUSF9PLCBzZW5kX2RvY30sCisgICAgeyJzZW5kIiwoUHlDRnVuY3Rpb24pX1B5R2VuX1NlbmQsIE1FVEhfTywgc2VuZF9kb2N9LAogICAgIHsidGhyb3ciLChQeUNGdW5jdGlvbilnZW5fdGhyb3csIE1FVEhfVkFSQVJHUywgdGhyb3dfZG9jfSwKICAgICB7ImNsb3NlIiwoUHlDRnVuY3Rpb24pZ2VuX2Nsb3NlLCBNRVRIX05PQVJHUywgY2xvc2VfZG9jfSwKICAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCkBAIC00MTAsMTUgKzU3MCwxMyBAQAogICAgIGludCBpOwogICAgIFB5RnJhbWVPYmplY3QgKmYgPSBnZW4tPmdpX2ZyYW1lOwogCi0gICAgaWYgKGYgPT0gTlVMTCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwgfHwgZi0+Zl9pYmxvY2sgPD0gMCkKKyAgICBpZiAoZiA9PSBOVUxMIHx8IGYtPmZfc3RhY2t0b3AgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7IC8qIG5vIGZyYW1lIG9yIGVtcHR5IGJsb2Nrc3RhY2sgPT0gbm8gZmluYWxpemF0aW9uICovCiAKICAgICAvKiBBbnkgYmxvY2sgdHlwZSBiZXNpZGVzIGEgbG9vcCByZXF1aXJlcyBjbGVhbnVwLiAqLwotICAgIGkgPSBmLT5mX2libG9jazsKLSAgICB3aGlsZSAoLS1pID49IDApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZi0+Zl9pYmxvY2s7IGkrKykKICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgIT0gU0VUVVBfTE9PUCkKICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0KIAogICAgIC8qIE5vIGJsb2NrcyBleGNlcHQgbG9vcHMsIGl0J3Mgc2FmZSB0byBza2lwIGZpbmFsaXphdGlvbi4gKi8KICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL09iamVjdHMvaXRlcm9iamVjdC5jIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKaW5kZXggOTFhOTNmNS4uM2NmYmVhZiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9pdGVyb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pdGVyb2JqZWN0LmMKQEAgLTg4LDggKzg4LDM4IEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK2l0ZXJfcmVkdWNlKHNlcWl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgoraXRlcl9zZXRzdGF0ZShzZXFpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCkgeworICAgICAgICBpZiAoaW5kZXggPCAwKQorICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CisKIHN0YXRpYyBQeU1ldGhvZERlZiBzZXFpdGVyX21ldGhvZHNbXSA9IHsKICAgICB7Il9fbGVuZ3RoX2hpbnRfXyIsIChQeUNGdW5jdGlvbilpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24paXRlcl9zZXRzdGF0ZSwgTUVUSF9PLCBzZXRzdGF0ZV9kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xOTUsNiArMjI1LDIxIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitjYWxsaXRlcl9yZWR1Y2UoY2FsbGl0ZXJvYmplY3QgKml0KQoreworICAgIGlmIChpdC0+aXRfY2FsbGFibGUgIT0gTlVMTCAmJiBpdC0+aXRfc2VudGluZWwgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oT08pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X2NhbGxhYmxlLCBpdC0+aXRfc2VudGluZWwpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBjYWxsaXRlcl9tZXRob2RzW10gPSB7CisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKWNhbGxpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeVR5cGVPYmplY3QgUHlDYWxsSXRlcl9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImNhbGxhYmxlX2l0ZXJhdG9yIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCkBAIC0yMjQsNyArMjY5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyljYWxsaXRlcl9pdGVybmV4dCwgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIGNhbGxpdGVyX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogfTsKIAogCmRpZmYgLS1naXQgYS9PYmplY3RzL2xpc3RvYmplY3QuYyBiL09iamVjdHMvbGlzdG9iamVjdC5jCmluZGV4IGI5ZWYwZDAuLjZlMGQwOTQgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbGlzdG9iamVjdC5jCisrKyBiL09iamVjdHMvbGlzdG9iamVjdC5jCkBAIC05OCwxNiArOTgsMzIgQEAKIHN0YXRpYyBQeUxpc3RPYmplY3QgKmZyZWVfbGlzdFtQeUxpc3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKIAotdm9pZAotUHlMaXN0X0Zpbmkodm9pZCkKK2ludAorUHlMaXN0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKICAgICBQeUxpc3RPYmplY3QgKm9wOwotCisgICAgaW50IHJldCA9IG51bWZyZWU7CiAgICAgd2hpbGUgKG51bWZyZWUpIHsKICAgICAgICAgb3AgPSBmcmVlX2xpc3RbLS1udW1mcmVlXTsKICAgICAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KG9wKSk7CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChvcCk7CiAgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK1B5TGlzdF9GaW5pKHZvaWQpCit7CisgICAgUHlMaXN0X0NsZWFyRnJlZUxpc3QoKTsKK30KKworLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5TGlzdE9iamVjdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1mcmVlLCBzaXplb2YoUHlMaXN0T2JqZWN0KSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTczNyw2ICs3NTMsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2xpc3RjbGVhcihQeUxpc3RPYmplY3QgKnNlbGYpCit7CisgICAgbGlzdF9jbGVhcihzZWxmKTsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xpc3Rjb3B5KFB5TGlzdE9iamVjdCAqc2VsZikKK3sKKyAgICByZXR1cm4gbGlzdF9zbGljZShzZWxmLCAwLCBQeV9TSVpFKHNlbGYpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGxpc3RhcHBlbmQoUHlMaXN0T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoYXBwMShzZWxmLCB2KSA9PSAwKQpAQCAtMjEwOSw4ICsyMTM4LDcgQEAKIGxpc3RpbmRleChQeUxpc3RPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgaSwgc3RhcnQ9MCwgc3RvcD1QeV9TSVpFKHNlbGYpOwotICAgIFB5T2JqZWN0ICp2LCAqZm9ybWF0X3R1cGxlLCAqZXJyX3N0cmluZzsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmVycl9mb3JtYXQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCkBAIC0yMTMzLDIwICsyMTYxLDcgQEAKICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoZXJyX2Zvcm1hdCA9PSBOVUxMKSB7Ci0gICAgICAgIGVycl9mb3JtYXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiJXIgaXMgbm90IGluIGxpc3QiKTsKLSAgICAgICAgaWYgKGVycl9mb3JtYXQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBmb3JtYXRfdHVwbGUgPSBQeVR1cGxlX1BhY2soMSwgdik7Ci0gICAgaWYgKGZvcm1hdF90dXBsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBlcnJfc3RyaW5nID0gUHlVbmljb2RlX0Zvcm1hdChlcnJfZm9ybWF0LCBmb3JtYXRfdHVwbGUpOwotICAgIFB5X0RFQ1JFRihmb3JtYXRfdHVwbGUpOwotICAgIGlmIChlcnJfc3RyaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19WYWx1ZUVycm9yLCBlcnJfc3RyaW5nKTsKLSAgICBQeV9ERUNSRUYoZXJyX3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICIlUiBpcyBub3QgaW4gbGlzdCIsIHYpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yMjAyLDEwICsyMjE3LDggQEAKICAgICBQeUxpc3RPYmplY3QgKnZsLCAqd2w7CiAgICAgUHlfc3NpemVfdCBpOwogCi0gICAgaWYgKCFQeUxpc3RfQ2hlY2sodikgfHwgIVB5TGlzdF9DaGVjayh3KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlMaXN0X0NoZWNrKHYpIHx8ICFQeUxpc3RfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZsID0gKFB5TGlzdE9iamVjdCAqKXY7CiAgICAgd2wgPSAoUHlMaXN0T2JqZWN0ICopdzsKQEAgLTIzMTQsMTcgKzIzMjcsMjEgQEAKICJMLl9fcmV2ZXJzZWRfXygpIC0tIHJldHVybiBhIHJldmVyc2UgaXRlcmF0b3Igb3ZlciB0aGUgbGlzdCIpOwogUHlEb2NfU1RSVkFSKHNpemVvZl9kb2MsCiAiTC5fX3NpemVvZl9fKCkgLS0gc2l6ZSBvZiBMIGluIG1lbW9yeSwgaW4gYnl0ZXMiKTsKK1B5RG9jX1NUUlZBUihjbGVhcl9kb2MsCisiTC5jbGVhcigpIC0+IE5vbmUgLS0gcmVtb3ZlIGFsbCBpdGVtcyBmcm9tIEwiKTsKK1B5RG9jX1NUUlZBUihjb3B5X2RvYywKKyJMLmNvcHkoKSAtPiBsaXN0IC0tIGEgc2hhbGxvdyBjb3B5IG9mIEwiKTsKIFB5RG9jX1NUUlZBUihhcHBlbmRfZG9jLAotIkwuYXBwZW5kKG9iamVjdCkgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKKyJMLmFwcGVuZChvYmplY3QpIC0+IE5vbmUgLS0gYXBwZW5kIG9iamVjdCB0byBlbmQiKTsKIFB5RG9jX1NUUlZBUihleHRlbmRfZG9jLAotIkwuZXh0ZW5kKGl0ZXJhYmxlKSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKKyJMLmV4dGVuZChpdGVyYWJsZSkgLT4gTm9uZSAtLSBleHRlbmQgbGlzdCBieSBhcHBlbmRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUiKTsKIFB5RG9jX1NUUlZBUihpbnNlcnRfZG9jLAogIkwuaW5zZXJ0KGluZGV4LCBvYmplY3QpIC0tIGluc2VydCBvYmplY3QgYmVmb3JlIGluZGV4Iik7CiBQeURvY19TVFJWQVIocG9wX2RvYywKICJMLnBvcChbaW5kZXhdKSAtPiBpdGVtIC0tIHJlbW92ZSBhbmQgcmV0dXJuIGl0ZW0gYXQgaW5kZXggKGRlZmF1bHQgbGFzdCkuXG4iCiAiUmFpc2VzIEluZGV4RXJyb3IgaWYgbGlzdCBpcyBlbXB0eSBvciBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuIik7CiBQeURvY19TVFJWQVIocmVtb3ZlX2RvYywKLSJMLnJlbW92ZSh2YWx1ZSkgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCisiTC5yZW1vdmUodmFsdWUpIC0+IE5vbmUgLS0gcmVtb3ZlIGZpcnN0IG9jY3VycmVuY2Ugb2YgdmFsdWUuXG4iCiAiUmFpc2VzIFZhbHVlRXJyb3IgaWYgdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50LiIpOwogUHlEb2NfU1RSVkFSKGluZGV4X2RvYywKICJMLmluZGV4KHZhbHVlLCBbc3RhcnQsIFtzdG9wXV0pIC0+IGludGVnZXIgLS0gcmV0dXJuIGZpcnN0IGluZGV4IG9mIHZhbHVlLlxuIgpAQCAtMjMzNCw3ICsyMzUxLDcgQEAKIFB5RG9jX1NUUlZBUihyZXZlcnNlX2RvYywKICJMLnJldmVyc2UoKSAtLSByZXZlcnNlICpJTiBQTEFDRSoiKTsKIFB5RG9jX1NUUlZBUihzb3J0X2RvYywKLSJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0tIHN0YWJsZSBzb3J0ICpJTiBQTEFDRSoiKTsKKyJMLnNvcnQoa2V5PU5vbmUsIHJldmVyc2U9RmFsc2UpIC0+IE5vbmUgLS0gc3RhYmxlIHNvcnQgKklOIFBMQUNFKiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKmxpc3Rfc3Vic2NyaXB0KFB5TGlzdE9iamVjdCosIFB5T2JqZWN0Kik7CiAKQEAgLTIzNDIsOSArMjM1OSwxMSBAQAogICAgIHsiX19nZXRpdGVtX18iLCAoUHlDRnVuY3Rpb24pbGlzdF9zdWJzY3JpcHQsIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGdldGl0ZW1fZG9jfSwKICAgICB7Il9fcmV2ZXJzZWRfXyIsKFB5Q0Z1bmN0aW9uKWxpc3RfcmV2ZXJzZWQsIE1FVEhfTk9BUkdTLCByZXZlcnNlZF9kb2N9LAogICAgIHsiX19zaXplb2ZfXyIsICAoUHlDRnVuY3Rpb24pbGlzdF9zaXplb2YsIE1FVEhfTk9BUkdTLCBzaXplb2ZfZG9jfSwKKyAgICB7ImNsZWFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0Y2xlYXIsICAgTUVUSF9OT0FSR1MsIGNsZWFyX2RvY30sCisgICAgeyJjb3B5IiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pbGlzdGNvcHksICAgTUVUSF9OT0FSR1MsIGNvcHlfZG9jfSwKICAgICB7ImFwcGVuZCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0YXBwZW5kLCAgTUVUSF9PLCBhcHBlbmRfZG9jfSwKICAgICB7Imluc2VydCIsICAgICAgICAgIChQeUNGdW5jdGlvbilsaXN0aW5zZXJ0LCAgTUVUSF9WQVJBUkdTLCBpbnNlcnRfZG9jfSwKLSAgICB7ImV4dGVuZCIsICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAorICAgIHsiZXh0ZW5kIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RleHRlbmQsICBNRVRIX08sIGV4dGVuZF9kb2N9LAogICAgIHsicG9wIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3Rwb3AsICAgICBNRVRIX1ZBUkFSR1MsIHBvcF9kb2N9LAogICAgIHsicmVtb3ZlIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RyZW1vdmUsICBNRVRIX08sIHJlbW92ZV9kb2N9LAogICAgIHsiaW5kZXgiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKWxpc3RpbmRleCwgICBNRVRIX1ZBUkFSR1MsIGluZGV4X2RvY30sCkBAIC0yNDA3LDcgKzI0MjYsNyBAQAogICAgICAgICAgICAgc3JjID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIGRlc3QgPSAoKFB5TGlzdE9iamVjdCAqKXJlc3VsdCktPm9iX2l0ZW07CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGl0ID0gc3JjW2N1cl07CiAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGl0KTsKICAgICAgICAgICAgICAgICBkZXN0W2ldID0gaXQ7CkBAIC0yNDk4LDcgKzI1MTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLT5vYl9pdGVtICsgY3VyICsgMSwKICAgICAgICAgICAgICAgICAgICAgbGltICogc2l6ZW9mKFB5T2JqZWN0ICopKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgc2xpY2VsZW5ndGgqc3RlcDsKKyAgICAgICAgICAgIGN1ciA9IHN0YXJ0ICsgKHNpemVfdClzbGljZWxlbmd0aCAqIHN0ZXA7CiAgICAgICAgICAgICBpZiAoY3VyIDwgKHNpemVfdClQeV9TSVpFKHNlbGYpKSB7CiAgICAgICAgICAgICAgICAgbWVtbW92ZShzZWxmLT5vYl9pdGVtICsgY3VyIC0gc2xpY2VsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX2l0ZW0gKyBjdXIsCkBAIC0yNTYyLDcgKzI1ODEsNyBAQAogICAgICAgICAgICAgc2VsZml0ZW1zID0gc2VsZi0+b2JfaXRlbTsKICAgICAgICAgICAgIHNlcWl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKHNlcSk7CiAgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOwotICAgICAgICAgICAgICAgICBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgIGN1ciArPSAoc2l6ZV90KXN0ZXAsIGkrKykgewogICAgICAgICAgICAgICAgIGdhcmJhZ2VbaV0gPSBzZWxmaXRlbXNbY3VyXTsKICAgICAgICAgICAgICAgICBpbnMgPSBzZXFpdGVtc1tpXTsKICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaW5zKTsKQEAgLTI2NTAsMTEgKzI2NjksMTggQEAKIHN0YXRpYyBpbnQgbGlzdGl0ZXJfdHJhdmVyc2UobGlzdGl0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9uZXh0KGxpc3RpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9sZW4obGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3JlZHVjZV9nZW5lcmFsKHZvaWQgKl9pdCwgaW50IGZvcndhcmQpOworc3RhdGljIFB5T2JqZWN0ICpsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RpdGVyX3NldHN0YXRlKGxpc3RpdGVyb2JqZWN0ICosIFB5T2JqZWN0ICpzdGF0ZSk7CiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKK1B5RG9jX1NUUlZBUihzZXRzdGF0ZV9kb2MsICJTZXQgc3RhdGUgaW5mb3JtYXRpb24gZm9yIHVucGlja2xpbmcuIik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdGl0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjc2MSw2ICsyNzg3LDI3IEBACiAgICAgfQogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CiB9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2UobGlzdGl0ZXJvYmplY3QgKml0KQoreworICAgIHJldHVybiBsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbChpdCwgMSk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9zZXRzdGF0ZShsaXN0aXRlcm9iamVjdCAqaXQsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBsb25nIGluZGV4ID0gUHlMb25nX0FzTG9uZyhzdGF0ZSk7CisgICAgaWYgKGluZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChpdC0+aXRfc2VxICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgICAgIGluZGV4ID0gMDsKKyAgICAgICAgaXQtPml0X2luZGV4ID0gaW5kZXg7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCiAvKioqKioqKioqKioqKioqKioqKioqKiogTGlzdCBSZXZlcnNlIEl0ZXJhdG9yICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiB0eXBlZGVmIHN0cnVjdCB7CkBAIC0yNzc0LDkgKzI4MjEsMTMgQEAKIHN0YXRpYyBpbnQgbGlzdHJldml0ZXJfdHJhdmVyc2UobGlzdHJldml0ZXJvYmplY3QgKiwgdmlzaXRwcm9jLCB2b2lkICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9uZXh0KGxpc3RyZXZpdGVyb2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICpsaXN0cmV2aXRlcl9sZW4obGlzdHJldml0ZXJvYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmxpc3RyZXZpdGVyX3JlZHVjZShsaXN0cmV2aXRlcm9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKiwgUHlPYmplY3QgKik7CiAKIHN0YXRpYyBQeU1ldGhvZERlZiBsaXN0cmV2aXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAoUHlDRnVuY3Rpb24pbGlzdHJldml0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMjg3MywzICsyOTI0LDUxIEBACiAgICAgICAgIGxlbiA9IDA7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4pOwogfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfcmVkdWNlKGxpc3RyZXZpdGVyb2JqZWN0ICppdCkKK3sKKyAgICByZXR1cm4gbGlzdGl0ZXJfcmVkdWNlX2dlbmVyYWwoaXQsIDApOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbGlzdHJldml0ZXJfc2V0c3RhdGUobGlzdHJldml0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IC0xKQorICAgICAgICAgICAgaW5kZXggPSAtMTsKKyAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxKQorICAgICAgICAgICAgaW5kZXggPSBQeUxpc3RfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSAxOworICAgICAgICBpdC0+aXRfaW5kZXggPSBpbmRleDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKy8qIGNvbW1vbiBwaWNrbGluZyBzdXBwb3J0ICovCisKK3N0YXRpYyBQeU9iamVjdCAqCitsaXN0aXRlcl9yZWR1Y2VfZ2VuZXJhbCh2b2lkICpfaXQsIGludCBmb3J3YXJkKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworCisgICAgLyogdGhlIG9iamVjdHMgYXJlIG5vdCB0aGUgc2FtZSwgaW5kZXggaXMgb2YgZGlmZmVyZW50IHR5cGVzISAqLworICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgIGxpc3RpdGVyb2JqZWN0ICppdCA9IChsaXN0aXRlcm9iamVjdCAqKV9pdDsKKyAgICAgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihPKWwiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQtPml0X3NlcSwgaXQtPml0X2luZGV4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBsaXN0cmV2aXRlcm9iamVjdCAqaXQgPSAobGlzdHJldml0ZXJvYmplY3QgKilfaXQ7CisgICAgICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTyluIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oInJldmVyc2VkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+aXRfc2VxLCBpdC0+aXRfaW5kZXgpOworICAgIH0KKyAgICAvKiBlbXB0eSBpdGVyYXRvciwgY3JlYXRlIGFuIGVtcHR5IGxpc3QgKi8KKyAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAobGlzdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTihOKSIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIGxpc3QpOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9sb25nb2JqZWN0LmMgYi9PYmplY3RzL2xvbmdvYmplY3QuYwppbmRleCAzYTY3NWM0Li44NzE1MGE5IDEwMDY0NAotLS0gYS9PYmplY3RzL2xvbmdvYmplY3QuYworKysgYi9PYmplY3RzL2xvbmdvYmplY3QuYwpAQCAtMzIwLDggKzMyMCwxNSBAQAogI2RlZmluZSBQWV9BQlNfTE9OR19NSU4gICAgICAgICAoMC0odW5zaWduZWQgbG9uZylMT05HX01JTikKICNkZWZpbmUgUFlfQUJTX1NTSVpFX1RfTUlOICAgICAgKDAtKHNpemVfdClQWV9TU0laRV9UX01JTikKIAotLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvciBjb25kaXRpb24gaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4gX19pbnRfXworICAgbWV0aG9kLgorCisgICBPbiBvdmVyZmxvdywgcmV0dXJuIC0xIGFuZCBzZXQgKm92ZXJmbG93IHRvIDEgb3IgLTEgZGVwZW5kaW5nIG9uIHRoZSBzaWduIG9mCisgICB0aGUgcmVzdWx0LiAgT3RoZXJ3aXNlICpvdmVyZmxvdyBpcyAwLgorCisgICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCBUeXBlRXJyb3IpLCByZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBjb25kaXRpb24uCisgICBJbiB0aGlzIGNhc2UgKm92ZXJmbG93IHdpbGwgYmUgMC4KKyovCiAKIGxvbmcKIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqdnYsIGludCAqb3ZlcmZsb3cpCkBAIC00MTAsNiArNDE3LDkgQEAKICAgICByZXR1cm4gcmVzOwogfQogCisvKiBHZXQgYSBDIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbiBfX2ludF9fCisgICBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCisKIGxvbmcKIFB5TG9uZ19Bc0xvbmcoUHlPYmplY3QgKm9iaikKIHsKQEAgLTY1OCwxMCArNjY4LDkgQEAKICAgICBhc3NlcnQobmRpZ2l0cyA9PSAwIHx8IHYtPm9iX2RpZ2l0W25kaWdpdHMgLSAxXSAhPSAwKTsKICAgICBpZiAobmRpZ2l0cyA+IDApIHsKICAgICAgICAgZGlnaXQgbXNkID0gdi0+b2JfZGlnaXRbbmRpZ2l0cyAtIDFdOwotCi0gICAgICAgIHJlc3VsdCA9IChuZGlnaXRzIC0gMSkgKiBQeUxvbmdfU0hJRlQ7Ci0gICAgICAgIGlmIChyZXN1bHQgLyBQeUxvbmdfU0hJRlQgIT0gKHNpemVfdCkobmRpZ2l0cyAtIDEpKQorICAgICAgICBpZiAoKHNpemVfdCkobmRpZ2l0cyAtIDEpID4gUFlfU0laRV9NQVggLyAoc2l6ZV90KVB5TG9uZ19TSElGVCkKICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgIHJlc3VsdCA9IChzaXplX3QpKG5kaWdpdHMgLSAxKSAqIChzaXplX3QpUHlMb25nX1NISUZUOwogICAgICAgICBkbyB7CiAgICAgICAgICAgICArK3Jlc3VsdDsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gMCkKQEAgLTkyMSw3ICs5MzAsNyBAQAogCiB9CiAKLS8qIENyZWF0ZSBhIG5ldyBsb25nIChvciBpbnQpIG9iamVjdCBmcm9tIGEgQyBwb2ludGVyICovCisvKiBDcmVhdGUgYSBuZXcgbG9uZyBpbnQgb2JqZWN0IGZyb20gYSBDIHBvaW50ZXIgKi8KIAogUHlPYmplY3QgKgogUHlMb25nX0Zyb21Wb2lkUHRyKHZvaWQgKnApCkBAIC05NDcsMTUgKzk1NiwxMSBAQAogCiB9CiAKLS8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBvYmplY3QgKG9yIGFuIGludCBvYmplY3QgaW4gc29tZSBjYXNlcykgKi8KKy8qIEdldCBhIEMgcG9pbnRlciBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LiAqLwogCiB2b2lkICoKIFB5TG9uZ19Bc1ZvaWRQdHIoUHlPYmplY3QgKnZ2KQogewotICAgIC8qIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvdyBpbnQgb3IgbG9uZyBvYmplY3RzLiBJZiB2diBpcyBuZWl0aGVyLAotICAgICAgIHRoZW4gdGhlIFB5TG9uZ19Bc0xvbmcqKCkgZnVuY3Rpb25zIHdpbGwgcmFpc2UgdGhlIGV4Y2VwdGlvbjoKLSAgICAgICBQeUV4Y19TeXN0ZW1FcnJvciwgImJhZCBhcmd1bWVudCB0byBpbnRlcm5hbCBmdW5jdGlvbiIKLSAgICAqLwogI2lmIFNJWkVPRl9WT0lEX1AgPD0gU0laRU9GX0xPTkcKICAgICBsb25nIHg7CiAKQEAgLTExMzYsOCArMTE0MSw4IEBACiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CiB9CiAKLS8qIEdldCBhIEMgUFlfTE9OR19MT05HIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0LgotICAgUmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgaWYgb3ZlcmZsb3cgb2NjdXJzLiAqLworLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBsb25nIGludCBvYmplY3Qgb3IgYW55IG9iamVjdCB0aGF0IGhhcyBhbgorICAgX19pbnRfXyBtZXRob2QuICBSZXR1cm4gLTEgYW5kIHNldCBhbiBlcnJvciBpZiBvdmVyZmxvdyBvY2N1cnMuICovCiAKIFBZX0xPTkdfTE9ORwogUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKnZ2KQpAQCAtMTE5OSwxMCArMTIwNCwxNCBAQAogICAgIGludCBvbmUgPSAxOwogICAgIGludCByZXM7CiAKLSAgICBpZiAodnYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHZ2KSkgeworICAgIGlmICh2diA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyktMTsKICAgICB9CisgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworICAgIH0KIAogICAgIHYgPSAoUHlMb25nT2JqZWN0Kil2djsKICAgICBzd2l0Y2goUHlfU0laRSh2KSkgewpAQCAtMTI4OSwxMiArMTI5OCwxNCBAQAogfQogI3VuZGVmIElTX0xJVFRMRV9FTkRJQU4KIAotLyogR2V0IGEgQyBsb25nIGxvbmcgaW50IGZyb20gYSBQeXRob24gbG9uZyBvciBQeXRob24gaW50IG9iamVjdC4KLSAgIE9uIG92ZXJmbG93LCByZXR1cm5zIC0xIGFuZCBzZXRzICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZwotICAgb24gdGhlIHNpZ24gb2YgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKy8qIEdldCBhIEMgbG9uZyBsb25nIGludCBmcm9tIGEgbG9uZyBpbnQgb2JqZWN0IG9yIGFueSBvYmplY3QgdGhhdCBoYXMgYW4KKyAgIF9faW50X18gbWV0aG9kLgogCi0gICBGb3Igb3RoZXIgZXJyb3JzIChlLmcuLCB0eXBlIGVycm9yKSwgcmV0dXJucyAtMSBhbmQgc2V0cyBhbiBlcnJvcgotICAgY29uZGl0aW9uLgorICAgT24gb3ZlcmZsb3csIHJldHVybiAtMSBhbmQgc2V0ICpvdmVyZmxvdyB0byAxIG9yIC0xIGRlcGVuZGluZyBvbiB0aGUgc2lnbiBvZgorICAgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSAqb3ZlcmZsb3cgaXMgMC4KKworICAgRm9yIG90aGVyIGVycm9ycyAoZS5nLiwgVHlwZUVycm9yKSwgcmV0dXJuIC0xIGFuZCBzZXQgYW4gZXJyb3IgY29uZGl0aW9uLgorICAgSW4gdGhpcyBjYXNlICpvdmVyZmxvdyB3aWxsIGJlIDAuCiAqLwogCiBQWV9MT05HX0xPTkcKQEAgLTEzODgsMTAgKzEzOTksOCBAQAogCiAjZGVmaW5lIENIRUNLX0JJTk9QKHYsdykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIVB5TG9uZ19DaGVjayh2KSB8fCAhUHlMb25nX0NoZWNrKHcpKSB7ICAgICBcCi0gICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpIHx8ICFQeUxvbmdfQ2hlY2sodykpICAgICAgIFwKKyAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgICAgICAgICAgICAgICAgICAgXAogICAgIH0gd2hpbGUoMCkKIAogLyogYml0c19pbl9kaWdpdChkKSByZXR1cm5zIHRoZSB1bmlxdWUgaW50ZWdlciBrIHN1Y2ggdGhhdCAyKiooay0xKSA8PSBkIDwKQEAgLTE1NDgsMjAgKzE1NTcsMjIgQEAKICAgIHN0cmluZy4gIChSZXR1cm4gdmFsdWUgaXMgbm9uLXNoYXJlZCBzbyB0aGF0IGNhbGxlcnMgY2FuIG1vZGlmeSB0aGUKICAgIHJldHVybmVkIHZhbHVlIGlmIG5lY2Vzc2FyeS4pICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1sb25nX3RvX2RlY2ltYWxfc3RyaW5nKFB5T2JqZWN0ICphYSkKK3N0YXRpYyBpbnQKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKmFhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgUHlMb25nT2JqZWN0ICpzY3JhdGNoLCAqYTsKICAgICBQeU9iamVjdCAqc3RyOwogICAgIFB5X3NzaXplX3Qgc2l6ZSwgc3RybGVuLCBzaXplX2EsIGksIGo7CiAgICAgZGlnaXQgKnBvdXQsICpwaW4sIHJlbSwgdGVucG93OwotICAgIFB5X1VOSUNPREUgKnA7CiAgICAgaW50IG5lZ2F0aXZlOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKIAogICAgIGEgPSAoUHlMb25nT2JqZWN0ICopYWE7CiAgICAgaWYgKGEgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKGEpKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBzaXplX2EgPSBBQlMoUHlfU0laRShhKSk7CiAgICAgbmVnYXRpdmUgPSBQeV9TSVpFKGEpIDwgMDsKQEAgLTE1NzgsMTMgKzE1ODksMTMgQEAKICAgICBpZiAoc2l6ZV9hID4gUFlfU1NJWkVfVF9NQVggLyBQeUxvbmdfU0hJRlQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibG9uZyBpcyB0b28gbGFyZ2UgdG8gZm9ybWF0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIC8qIHRoZSBleHByZXNzaW9uIHNpemVfYSAqIFB5TG9uZ19TSElGVCBpcyBub3cgc2FmZSBmcm9tIG92ZXJmbG93ICovCiAgICAgc2l6ZSA9IDEgKyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgLyAoMyAqIF9QeUxvbmdfREVDSU1BTF9TSElGVCk7CiAgICAgc2NyYXRjaCA9IF9QeUxvbmdfTmV3KHNpemUpOwogICAgIGlmIChzY3JhdGNoID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICAvKiBjb252ZXJ0IGFycmF5IG9mIGJhc2UgX1B5TG9uZ19CQVNFIGRpZ2l0cyBpbiBwaW4gdG8gYW4gYXJyYXkgb2YKICAgICAgICBiYXNlIF9QeUxvbmdfREVDSU1BTF9CQVNFIGRpZ2l0cyBpbiBwb3V0LCBmb2xsb3dpbmcgS251dGggKFRBT0NQLApAQCAtMTYwNyw3ICsxNjE4LDcgQEAKICAgICAgICAgLyogY2hlY2sgZm9yIGtleWJvYXJkIGludGVycnVwdCAqLwogICAgICAgICBTSUdDSEVDSyh7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0pOwogICAgIH0KICAgICAvKiBwb3V0IHNob3VsZCBoYXZlIGF0IGxlYXN0IG9uZSBkaWdpdCwgc28gdGhhdCB0aGUgY2FzZSB3aGVuIGEgPSAwCkBAIC0xNjIzLDY0ICsxNjM0LDExOCBAQAogICAgICAgICB0ZW5wb3cgKj0gMTA7CiAgICAgICAgIHN0cmxlbisrOwogICAgIH0KLSAgICBzdHIgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgc3RybGVuKTsKLSAgICBpZiAoc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzdHJsZW4sICc5JykgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBraW5kID0gd3JpdGVyLT5raW5kOworICAgICAgICBzdHIgPSBOVUxMOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX05ldyhzdHJsZW4sICc5Jyk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHNjcmF0Y2gpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIH0KKworI2RlZmluZSBXUklURV9ESUdJVFMoVFlQRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcCA9IChUWVBFKilQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcikgKyB3cml0ZXItPnBvcyArIHN0cmxlbjsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSArIHN0cmxlbjsgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAqcCA9ICdcMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFswXSB0aHJvdWdoIHBvdXRbc2l6ZS0yXSBjb250cmlidXRlIGV4YWN0bHkgICAgICAgICAgICBcCisgICAgICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBmb3IgKGk9MDsgaSA8IHNpemUgLSAxOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLyBcCisgICAgICAgIHJlbSA9IHBvdXRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZW0gLz0gMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IHdoaWxlIChyZW0gIT0gMCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC8qIGFuZCBzaWduICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAobmVnYXRpdmUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zKSk7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc3NlcnQocCA9PSAoVFlQRSopUHlVbmljb2RlX0RBVEEoc3RyKSk7ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCiAKICAgICAvKiBmaWxsIHRoZSBzdHJpbmcgcmlnaHQtdG8tbGVmdCAqLwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3RybGVuOwotICAgICpwID0gJ1wwJzsKLSAgICAvKiBwb3V0WzBdIHRocm91Z2ggcG91dFtzaXplLTJdIGNvbnRyaWJ1dGUgZXhhY3RseQotICAgICAgIF9QeUxvbmdfREVDSU1BTF9TSElGVCBkaWdpdHMgZWFjaCAqLwotICAgIGZvciAoaT0wOyBpIDwgc2l6ZSAtIDE7IGkrKykgewotICAgICAgICByZW0gPSBwb3V0W2ldOwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgX1B5TG9uZ19ERUNJTUFMX1NISUZUOyBqKyspIHsKLSAgICAgICAgICAgICotLXAgPSAnMCcgKyByZW0gJSAxMDsKLSAgICAgICAgICAgIHJlbSAvPSAxMDsKLSAgICAgICAgfQorICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzEgKnA7CisgICAgICAgIFdSSVRFX0RJR0lUUyhQeV9VQ1MxKTsKICAgICB9Ci0gICAgLyogcG91dFtzaXplLTFdOiBhbHdheXMgcHJvZHVjZSBhdCBsZWFzdCBvbmUgZGVjaW1hbCBkaWdpdCAqLwotICAgIHJlbSA9IHBvdXRbaV07Ci0gICAgZG8gewotICAgICAgICAqLS1wID0gJzAnICsgcmVtICUgMTA7Ci0gICAgICAgIHJlbSAvPSAxMDsKLSAgICB9IHdoaWxlIChyZW0gIT0gMCk7CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MyICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0ICpwOworICAgICAgICBhc3NlcnQgKGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTNCk7CisgICAgfQorI3VuZGVmIFdSSVRFX0RJR0lUUwogCi0gICAgLyogYW5kIHNpZ24gKi8KLSAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICAvKiBjaGVjayB3ZSd2ZSBjb3VudGVkIGNvcnJlY3RseSAqLwotICAgIGFzc2VydChwID09IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwogICAgIFB5X0RFQ1JFRihzY3JhdGNoKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopc3RyOworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3RybGVuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzdHIsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gKFB5T2JqZWN0ICopc3RyOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2xvbmdfdG9fZGVjaW1hbF9zdHJpbmcoUHlPYmplY3QgKmFhKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIGlmIChsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKGFhLCAmdiwgTlVMTCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB2OwogfQogCiAvKiBDb252ZXJ0IGEgbG9uZyBpbnQgb2JqZWN0IHRvIGEgc3RyaW5nLCB1c2luZyBhIGdpdmVuIGNvbnZlcnNpb24gYmFzZSwKLSAgIHdoaWNoIHNob3VsZCBiZSBvbmUgb2YgMiwgOCwgMTAgb3IgMTYuICBSZXR1cm4gYSBzdHJpbmcgb2JqZWN0LgotICAgSWYgYmFzZSBpcyAyLCA4IG9yIDE2LCBhZGQgdGhlIHByb3BlciBwcmVmaXggJzBiJywgJzBvJyBvciAnMHgnLiAqLworICAgd2hpY2ggc2hvdWxkIGJlIG9uZSBvZiAyLCA4IG9yIDE2LiAgUmV0dXJuIGEgc3RyaW5nIG9iamVjdC4KKyAgIElmIGJhc2UgaXMgMiwgOCBvciAxNiwgYWRkIHRoZSBwcm9wZXIgcHJlZml4ICcwYicsICcwbycgb3IgJzB4JworICAgaWYgYWx0ZXJuYXRlIGlzIG5vbnplcm8uICovCiAKLVB5T2JqZWN0ICoKLV9QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICphYSwgaW50IGJhc2UpCitzdGF0aWMgaW50Citsb25nX2Zvcm1hdF9iaW5hcnkoUHlPYmplY3QgKmFhLCBpbnQgYmFzZSwgaW50IGFsdGVybmF0ZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnBfb3V0cHV0LCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgcmVnaXN0ZXIgUHlMb25nT2JqZWN0ICphID0gKFB5TG9uZ09iamVjdCAqKWFhOwotICAgIFB5T2JqZWN0ICpzdHI7Ci0gICAgUHlfc3NpemVfdCBpLCBzejsKKyAgICBQeU9iamVjdCAqdjsKKyAgICBQeV9zc2l6ZV90IHN6OwogICAgIFB5X3NzaXplX3Qgc2l6ZV9hOwotICAgIFB5X1VOSUNPREUgKnAsIHNpZ24gPSAnXDAnOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBpbnQgbmVnYXRpdmU7CiAgICAgaW50IGJpdHM7CiAKLSAgICBhc3NlcnQoYmFzZSA9PSAyIHx8IGJhc2UgPT0gOCB8fCBiYXNlID09IDEwIHx8IGJhc2UgPT0gMTYpOwotICAgIGlmIChiYXNlID09IDEwKQotICAgICAgICByZXR1cm4gbG9uZ190b19kZWNpbWFsX3N0cmluZygoUHlPYmplY3QgKilhKTsKLQorICAgIGFzc2VydChiYXNlID09IDIgfHwgYmFzZSA9PSA4IHx8IGJhc2UgPT0gMTYpOwogICAgIGlmIChhID09IE5VTEwgfHwgIVB5TG9uZ19DaGVjayhhKSkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc2l6ZV9hID0gQUJTKFB5X1NJWkUoYSkpOworICAgIG5lZ2F0aXZlID0gUHlfU0laRShhKSA8IDA7CiAKICAgICAvKiBDb21wdXRlIGEgcm91Z2ggdXBwZXIgYm91bmQgZm9yIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyAqLwogICAgIHN3aXRjaCAoYmFzZSkgewpAQCAtMTY5Nyw3MCArMTc2MiwxMzcgQEAKICAgICAgICAgYXNzZXJ0KDApOyAvKiBzaG91bGRuJ3QgZXZlciBnZXQgaGVyZSAqLwogICAgICAgICBiaXRzID0gMDsgLyogdG8gc2lsZW5jZSBnY2Mgd2FybmluZyAqLwogICAgIH0KLSAgICAvKiBjb21wdXRlIGxlbmd0aCBvZiBvdXRwdXQgc3RyaW5nOiBhbGxvdyAyIGNoYXJhY3RlcnMgZm9yIHByZWZpeCBhbmQKLSAgICAgICAxIGZvciBwb3NzaWJsZSAnLScgc2lnbi4gKi8KLSAgICBpZiAoc2l6ZV9hID4gKFBZX1NTSVpFX1RfTUFYIC0gMykgLyBQeUxvbmdfU0hJRlQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIC8qIG5vdyBzaXplX2EgKiBQeUxvbmdfU0hJRlQgKyAzIDw9IFBZX1NTSVpFX1RfTUFYLCBzbyB0aGUgUkhTIGJlbG93Ci0gICAgICAgaXMgc2FmZSBmcm9tIG92ZXJmbG93ICovCi0gICAgc3ogPSAzICsgKHNpemVfYSAqIFB5TG9uZ19TSElGVCArIChiaXRzIC0gMSkpIC8gYml0czsKLSAgICBhc3NlcnQoc3ogPj0gMCk7Ci0gICAgc3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIHN6KTsKLSAgICBpZiAoc3RyID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpICsgc3o7Ci0gICAgKnAgPSAnXDAnOwotICAgIGlmIChQeV9TSVpFKGEpIDwgMCkKLSAgICAgICAgc2lnbiA9ICctJzsKIAotICAgIGlmIChQeV9TSVpFKGEpID09IDApIHsKLSAgICAgICAgKi0tcCA9ICcwJzsKKyAgICAvKiBDb21wdXRlIGV4YWN0IGxlbmd0aCAnc3onIG9mIG91dHB1dCBzdHJpbmcuICovCisgICAgaWYgKHNpemVfYSA9PSAwKSB7CisgICAgICAgIHN6ID0gMTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovCi0gICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7Ci0gICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgICAgICAgICAgICAgLyogIyBvZiBiaXRzIGluIGFjY3VtICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgewotICAgICAgICAgICAgYWNjdW0gfD0gKHR3b2RpZ2l0cylhLT5vYl9kaWdpdFtpXSA8PCBhY2N1bWJpdHM7Ci0gICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOwotICAgICAgICAgICAgYXNzZXJ0KGFjY3VtYml0cyA+PSBiaXRzKTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFIGNkaWdpdDsKLSAgICAgICAgICAgICAgICBjZGlnaXQgPSAoUHlfVU5JQ09ERSkoYWNjdW0gJiAoYmFzZSAtIDEpKTsKLSAgICAgICAgICAgICAgICBjZGlnaXQgKz0gKGNkaWdpdCA8IDEwKSA/ICcwJyA6ICdhJy0xMDsKLSAgICAgICAgICAgICAgICBhc3NlcnQocCA+IFB5VW5pY29kZV9BU19VTklDT0RFKHN0cikpOwotICAgICAgICAgICAgICAgICotLXAgPSBjZGlnaXQ7Ci0gICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7Ci0gICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7Ci0gICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7CisgICAgICAgIFB5X3NzaXplX3Qgc2l6ZV9hX2luX2JpdHM7CisgICAgICAgIC8qIEVuc3VyZSBvdmVyZmxvdyBkb2Vzbid0IG9jY3VyIGR1cmluZyBjb21wdXRhdGlvbiBvZiBzei4gKi8KKyAgICAgICAgaWYgKHNpemVfYSA+IChQWV9TU0laRV9UX01BWCAtIDMpIC8gUHlMb25nX1NISUZUKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IGlzIHRvbyBsYXJnZSB0byBmb3JtYXQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBzaXplX2FfaW5fYml0cyA9IChzaXplX2EgLSAxKSAqIFB5TG9uZ19TSElGVCArCisgICAgICAgICAgICAgICAgICAgICAgICAgYml0c19pbl9kaWdpdChhLT5vYl9kaWdpdFtzaXplX2EgLSAxXSk7CisgICAgICAgIC8qIEFsbG93IDEgY2hhcmFjdGVyIGZvciBhICctJyBzaWduLiAqLworICAgICAgICBzeiA9IG5lZ2F0aXZlICsgKHNpemVfYV9pbl9iaXRzICsgKGJpdHMgLSAxKSkgLyBiaXRzOworICAgIH0KKyAgICBpZiAoYWx0ZXJuYXRlKSB7CisgICAgICAgIC8qIDIgY2hhcmFjdGVycyBmb3IgcHJlZml4ICAqLworICAgICAgICBzeiArPSAyOwogICAgIH0KIAotICAgIGlmIChiYXNlID09IDE2KQotICAgICAgICAqLS1wID0gJ3gnOwotICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkKLSAgICAgICAgKi0tcCA9ICdvJzsKLSAgICBlbHNlIC8qIChiYXNlID09IDIpICovCi0gICAgICAgICotLXAgPSAnYic7Ci0gICAgKi0tcCA9ICcwJzsKLSAgICBpZiAoc2lnbikKLSAgICAgICAgKi0tcCA9IHNpZ247Ci0gICAgaWYgKHAgIT0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSkgewotICAgICAgICBQeV9VTklDT0RFICpxID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKTsKLSAgICAgICAgYXNzZXJ0KHAgPiBxKTsKLSAgICAgICAgZG8gewotICAgICAgICB9IHdoaWxlICgoKnErKyA9ICpwKyspICE9ICdcMCcpOwotICAgICAgICBxLS07Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZzdHIsKFB5X3NzaXplX3QpIChxIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpKSkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBzeiwgJ3gnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAga2luZCA9IHdyaXRlci0+a2luZDsKKyAgICAgICAgdiA9IE5VTEw7CiAgICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilzdHI7CisgICAgZWxzZSB7CisgICAgICAgIHYgPSBQeVVuaWNvZGVfTmV3KHN6LCAneCcpOworICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgfQorCisjZGVmaW5lIFdSSVRFX0RJR0lUUyhUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICh3cml0ZXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwID0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKSArIHdyaXRlci0+cG9zICsgc3o7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHAgPSAoVFlQRSopUHlVbmljb2RlX0RBVEEodikgKyBzejsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHNpemVfYSA9PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIC8qIEpSSDogc3BlY2lhbCBjYXNlIGZvciBwb3dlci1vZi0yIGJhc2VzICovICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHR3b2RpZ2l0cyBhY2N1bSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludCBhY2N1bWJpdHMgPSAwOyAgIC8qICMgb2YgYml0cyBpbiBhY2N1bSAqLyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzaXplX2E7ICsraSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bSB8PSAodHdvZGlnaXRzKWEtPm9iX2RpZ2l0W2ldIDw8IGFjY3VtYml0czsgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhY2N1bWJpdHMgKz0gUHlMb25nX1NISUZUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoYWNjdW1iaXRzID49IGJpdHMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjZGlnaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ID0gKGNoYXIpKGFjY3VtICYgKGJhc2UgLSAxKSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgY2RpZ2l0ICs9IChjZGlnaXQgPCAxMCkgPyAnMCcgOiAnYSctMTA7ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgKi0tcCA9IGNkaWdpdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW1iaXRzIC09IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgYWNjdW0gPj49IGJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChpIDwgc2l6ZV9hLTEgPyBhY2N1bWJpdHMgPj0gYml0cyA6IGFjY3VtID4gMCk7IFwKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGFsdGVybmF0ZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGlmIChiYXNlID09IDE2KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ3gnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgaWYgKGJhc2UgPT0gOCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ28nOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGVsc2UgLyogKGJhc2UgPT0gMikgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAqLS1wID0gJ2InOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnMCc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKG5lZ2F0aXZlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICotLXAgPSAnLSc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKHdyaXRlcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzc2VydChwID09ICgoVFlQRSopUHlVbmljb2RlX0RBVEEod3JpdGVyLT5idWZmZXIpICsgd3JpdGVyLT5wb3MpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNzZXJ0KHAgPT0gKFRZUEUqKVB5VW5pY29kZV9EQVRBKHYpKTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICBQeV9VQ1MxICpwOworICAgICAgICBXUklURV9ESUdJVFMoUHlfVUNTMSk7CisgICAgfQorICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMiAqcDsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfVUNTNCAqcDsKKyAgICAgICAgYXNzZXJ0IChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgV1JJVEVfRElHSVRTKFB5X1VDUzQpOworICAgIH0KKyN1bmRlZiBXUklURV9ESUdJVFMKKworICAgIGlmICh3cml0ZXIpIHsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3o7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICAgICAgKnBfb3V0cHV0ID0gdjsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeUxvbmdfRm9ybWF0KFB5T2JqZWN0ICpvYmosIGludCBiYXNlKQoreworICAgIFB5T2JqZWN0ICpzdHI7CisgICAgaW50IGVycjsKKyAgICBpZiAoYmFzZSA9PSAxMCkKKyAgICAgICAgZXJyID0gbG9uZ190b19kZWNpbWFsX3N0cmluZ19pbnRlcm5hbChvYmosICZzdHIsIE5VTEwpOworICAgIGVsc2UKKyAgICAgICAgZXJyID0gbG9uZ19mb3JtYXRfYmluYXJ5KG9iaiwgYmFzZSwgMSwgJnN0ciwgTlVMTCk7CisgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHN0cjsKK30KKworaW50CitfUHlMb25nX0Zvcm1hdFdyaXRlcihfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2UsIGludCBhbHRlcm5hdGUpCit7CisgICAgaWYgKGJhc2UgPT0gMTApCisgICAgICAgIHJldHVybiBsb25nX3RvX2RlY2ltYWxfc3RyaW5nX2ludGVybmFsKG9iaiwgTlVMTCwgd3JpdGVyKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBsb25nX2Zvcm1hdF9iaW5hcnkob2JqLCBiYXNlLCBhbHRlcm5hdGUsIE5VTEwsIHdyaXRlcik7CiB9CiAKIC8qIFRhYmxlIG9mIGRpZ2l0IHZhbHVlcyBmb3IgOC1iaXQgc3RyaW5nIC0+IGludGVnZXIgY29udmVyc2lvbi4KQEAgLTIxMzgsMjMgKzIyNzAsMjYgQEAKIFB5T2JqZWN0ICoKIFB5TG9uZ19Gcm9tVW5pY29kZShQeV9VTklDT0RFICp1LCBQeV9zc2l6ZV90IGxlbmd0aCwgaW50IGJhc2UpCiB7CisgICAgUHlPYmplY3QgKnYsICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHUsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh1bmljb2RlLCBiYXNlKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgcmV0dXJuIHY7Cit9CisKK1B5T2JqZWN0ICoKK1B5TG9uZ19Gcm9tVW5pY29kZU9iamVjdChQeU9iamVjdCAqdSwgaW50IGJhc2UpCit7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU9iamVjdCAqYXNjaWlkaWc7CiAgICAgY2hhciAqYnVmZmVyLCAqZW5kOwotICAgIFB5X3NzaXplX3QgaSwgYnVmbGVuOwotICAgIFB5X1VOSUNPREUgKnB0cjsKKyAgICBQeV9zc2l6ZV90IGJ1ZmxlbjsKIAotICAgIGFzY2lpZGlnID0gUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxUb0FTQ0lJKHUsIGxlbmd0aCk7CisgICAgYXNjaWlkaWcgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodSk7CiAgICAgaWYgKGFzY2lpZGlnID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIFJlcGxhY2Ugbm9uLUFTQ0lJIHdoaXRlc3BhY2Ugd2l0aCAnICcgKi8KLSAgICBwdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhc2NpaWRpZyk7Ci0gICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBwdHJbaV07Ci0gICAgICAgIGlmIChjaCA+IDEyNyAmJiBQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgcHRyW2ldID0gJyAnOwotICAgIH0KLSAgICBidWZmZXIgPSBfUHlVbmljb2RlX0FzU3RyaW5nQW5kU2l6ZShhc2NpaWRpZywgJmJ1Zmxlbik7CisgICAgYnVmZmVyID0gUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoYXNjaWlkaWcsICZidWZsZW4pOwogICAgIGlmIChidWZmZXIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoYXNjaWlkaWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI0NTEsOCArMjU4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICB9Ci0gICAgYXNzZXJ0KDEgPD0geF9zaXplICYmCi0gICAgICAgICAgIHhfc2l6ZSA8PSAoUHlfc3NpemVfdCkoc2l6ZW9mKHhfZGlnaXRzKS9zaXplb2YoZGlnaXQpKSk7CisgICAgYXNzZXJ0KDEgPD0geF9zaXplICYmIHhfc2l6ZSA8PSAoUHlfc3NpemVfdClQeV9BUlJBWV9MRU5HVEgoeF9kaWdpdHMpKTsKIAogICAgIC8qIFJvdW5kLCBhbmQgY29udmVydCB0byBkb3VibGUuICovCiAgICAgeF9kaWdpdHNbMF0gKz0gaGFsZl9ldmVuX2NvcnJlY3Rpb25beF9kaWdpdHNbMF0gJiA3XTsKQEAgLTI0ODksMTAgKzI2MjMsMTQgQEAKICAgICBQeV9zc2l6ZV90IGV4cG9uZW50OwogICAgIGRvdWJsZSB4OwogCi0gICAgaWYgKHYgPT0gTlVMTCB8fCAhUHlMb25nX0NoZWNrKHYpKSB7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xLjA7CiAgICAgfQorICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIik7CisgICAgICAgIHJldHVybiAtMS4wOworICAgIH0KICAgICB4ID0gX1B5TG9uZ19GcmV4cCgoUHlMb25nT2JqZWN0ICopdiwgJmV4cG9uZW50KTsKICAgICBpZiAoKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB8fCBleHBvbmVudCA+IERCTF9NQVhfRVhQKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLApAQCAtMzYxNyw4ICszNzU1LDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlfREVDUkVGKGEpOwogICAgICAgICBQeV9ERUNSRUYoYik7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KIAogICAgIGlmIChQeV9TSVpFKGIpIDwgMCkgeyAgLyogaWYgZXhwb25lbnQgaXMgbmVnYXRpdmUgKi8KQEAgLTQxNDUsOSArNDI4Miw3IEBACiAgICAgfQogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkKLSAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZShQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCliYXNlKTsKKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5pY29kZU9iamVjdCh4LCAoaW50KWJhc2UpOwogICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKHgpIHx8IFB5Qnl0ZXNfQ2hlY2soeCkpIHsKICAgICAgICAgLyogU2luY2UgUHlMb25nX0Zyb21TdHJpbmcgZG9lc24ndCBoYXZlIGEgbGVuZ3RoIHBhcmFtZXRlciwKICAgICAgICAgICogY2hlY2sgaGVyZSBmb3IgcG9zc2libGUgTlVMcyBpbiB0aGUgc3RyaW5nLiAqLwpAQCAtNDIyNiwxMiArNDM2MSwyMiBAQAogbG9uZ19fZm9ybWF0X18oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpmb3JtYXRfc3BlYzsKKyAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOl9fZm9ybWF0X18iLCAmZm9ybWF0X3NwZWMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCAwKTsKKyAgICByZXQgPSBfUHlMb25nX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKAorICAgICAgICAmd3JpdGVyLAorICAgICAgICBzZWxmLAorICAgICAgICBmb3JtYXRfc3BlYywgMCwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAocmV0ID09IC0xKSB7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIH0KIAogLyogUmV0dXJuIGEgcGFpciAocSwgcikgc3VjaCB0aGF0IGEgPSBiICogcSArIHIsIGFuZApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggNDAzYWE2OC4uZDU2ZmFmOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC0xLDEyNiArMSw5NTQgQEAKLQogLyogTWVtb3J5dmlldyBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgPHN0ZGRlZi5oPgogCi0jZGVmaW5lIElTX1JFTEVBU0VEKG1lbW9iaikgXAotICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBtZW1vYmopLT52aWV3LmJ1ZiA9PSBOVUxMKQogCi0jZGVmaW5lIENIRUNLX1JFTEVBU0VEKG1lbW9iaikgXAotICAgIGlmIChJU19SRUxFQVNFRChtZW1vYmopKSB7IFwKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7IFwKLSAgICAgICAgcmV0dXJuIE5VTEw7IFwKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICBNYW5hZ2VkQnVmZmVyIE9iamVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAgIE1hbmFnZWRCdWZmZXIgT2JqZWN0OgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBvYmplY3QgaXMgdG8gZmFjaWxpdGF0ZSB0aGUgaGFuZGxpbmcgb2YgY2hhaW5lZAorICAgICBtZW1vcnl2aWV3cyB0aGF0IGhhdmUgdGhlIHNhbWUgdW5kZXJseWluZyBleHBvcnRpbmcgb2JqZWN0LiBQRVAtMzExOAorICAgICBhbGxvd3MgdGhlIHVuZGVybHlpbmcgb2JqZWN0IHRvIGNoYW5nZSB3aGlsZSBhIHZpZXcgaXMgZXhwb3J0ZWQuIFRoaXMKKyAgICAgY291bGQgbGVhZCB0byB1bmV4cGVjdGVkIHJlc3VsdHMgd2hlbiBjb25zdHJ1Y3RpbmcgYSBuZXcgbWVtb3J5dmlldworICAgICBmcm9tIGFuIGV4aXN0aW5nIG1lbW9yeXZpZXcuCisKKyAgICAgUmF0aGVyIHRoYW4gcmVwZWF0ZWRseSByZWRpcmVjdGluZyBidWZmZXIgcmVxdWVzdHMgdG8gdGhlIG9yaWdpbmFsIGJhc2UKKyAgICAgb2JqZWN0LCBhbGwgY2hhaW5lZCBtZW1vcnl2aWV3cyB1c2UgYSBzaW5nbGUgYnVmZmVyIHNuYXBzaG90LiBUaGlzCisgICAgIHNuYXBzaG90IGlzIGdlbmVyYXRlZCBieSB0aGUgY29uc3RydWN0b3IgX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KCkuCisKKyAgIE93bmVyc2hpcCBydWxlczoKKyAgIC0tLS0tLS0tLS0tLS0tLS0KKworICAgICBUaGUgbWFzdGVyIGJ1ZmZlciBpbnNpZGUgYSBtYW5hZ2VkIGJ1ZmZlciBpcyBmaWxsZWQgaW4gYnkgdGhlIG9yaWdpbmFsCisgICAgIGJhc2Ugb2JqZWN0LiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyBhbmQgZm9ybWF0IGFyZSByZWFkLW9ubHkgZm9yCisgICAgIGFsbCBjb25zdW1lcnMuCisKKyAgICAgQSBtZW1vcnl2aWV3J3MgYnVmZmVyIGlzIGEgcHJpdmF0ZSBjb3B5IG9mIHRoZSBleHBvcnRlcidzIGJ1ZmZlci4gc2hhcGUsCisgICAgIHN0cmlkZXMgYW5kIHN1Ym9mZnNldHMgYmVsb25nIHRvIHRoZSBtZW1vcnl2aWV3IGFuZCBhcmUgdGh1cyB3cml0YWJsZS4KKworICAgICBJZiBhIG1lbW9yeXZpZXcgaXRzZWxmIGV4cG9ydHMgc2V2ZXJhbCBidWZmZXJzIHZpYSBtZW1vcnlfZ2V0YnVmKCksIGFsbAorICAgICBidWZmZXIgY29waWVzIHNoYXJlIHNoYXBlLCBzdHJpZGVzIGFuZCBzdWJvZmZzZXRzLiBJbiB0aGlzIGNhc2UsIHRoZQorICAgICBhcnJheXMgYXJlIE5PVCB3cml0YWJsZS4KKworICAgUmVmZXJlbmNlIGNvdW50IGFzc3VtcHRpb25zOgorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgIFRoZSAnb2JqJyBtZW1iZXIgb2YgYSBQeV9idWZmZXIgbXVzdCBlaXRoZXIgYmUgTlVMTCBvciByZWZlciB0byB0aGUKKyAgICAgZXhwb3J0aW5nIGJhc2Ugb2JqZWN0LiBJbiB0aGUgUHl0aG9uIGNvZGViYXNlLCBhbGwgZ2V0YnVmZmVycHJvY3MKKyAgICAgcmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB2aWV3Lm9iaiAoZXhhbXBsZTogYnl0ZXNfYnVmZmVyX2dldGJ1ZmZlcigpKS4KKworICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyB2aWV3Lm9iaiAoaWYgbm9uLU5VTEwpLCBzbyB0aGUKKyAgICAgcmVsZWFzZWJ1ZmZlcnByb2NzIG11c3QgTk9UIGRlY3JlbWVudCB2aWV3Lm9iai4KKyovCisKKworI2RlZmluZSBYU1RSSU5HSVpFKHYpICN2CisjZGVmaW5lIFNUUklOR0laRSh2KSBYU1RSSU5HSVpFKHYpCisKKyNkZWZpbmUgQ0hFQ0tfTUJVRl9SRUxFQVNFRChtYnVmKSBcCisgICAgaWYgKCgoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqKW1idWYpLT5mbGFncyZfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQpIHsgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICJvcGVyYXRpb24gZm9yYmlkZGVuIG9uIHJlbGVhc2VkIG1lbW9yeXZpZXcgb2JqZWN0Iik7ICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIH0KIAotI2RlZmluZSBDSEVDS19SRUxFQVNFRF9JTlQobWVtb2JqKSBcCi0gICAgaWYgKElTX1JFTEVBU0VEKG1lbW9iaikpIHsgXAotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAotICAgICAgICByZXR1cm4gLTE7IFwKLSAgICB9CiAKLXN0YXRpYyBQeV9zc2l6ZV90Ci1nZXRfc2hhcGUwKFB5X2J1ZmZlciAqYnVmKQorUHlfTE9DQUxfSU5MSU5FKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKikKK21idWZfYWxsb2Modm9pZCkKIHsKLSAgICBpZiAoYnVmLT5zaGFwZSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gYnVmLT5zaGFwZVswXTsKLSAgICBpZiAoYnVmLT5uZGltID09IDApCi0gICAgICAgIHJldHVybiAxOwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICJleHBvcnRlZCBidWZmZXIgZG9lcyBub3QgaGF2ZSBhbnkgc2hhcGUgaW5mb3JtYXRpb24gYXNzb2NpYXRlZCAiCi0gICAgICAgICJ0byBpdCIpOwotICAgIHJldHVybiAtMTsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworCisgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopCisgICAgICAgIFB5T2JqZWN0X0dDX05ldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0LCAmX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlKTsKKyAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtYnVmLT5mbGFncyA9IDA7CisgICAgbWJ1Zi0+ZXhwb3J0cyA9IDA7CisgICAgbWJ1Zi0+bWFzdGVyLm9iaiA9IE5VTEw7CisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG1idWYpOworCisgICAgcmV0dXJuIG1idWY7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3QoUHlPYmplY3QgKmJhc2UpCit7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UsICZtYnVmLT5tYXN0ZXIsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICBtYnVmLT5tYXN0ZXIub2JqID0gTlVMTDsKKyAgICAgICAgUHlfREVDUkVGKG1idWYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbWJ1ZjsKIH0KIAogc3RhdGljIHZvaWQKLWR1cF9idWZmZXIoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK21idWZfcmVsZWFzZShfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQogewotICAgICpkZXN0ID0gKnNyYzsKLSAgICBpZiAoc3JjLT5uZGltID09IDEgJiYgc3JjLT5zaGFwZSAhPSBOVUxMKSB7Ci0gICAgICAgIGRlc3QtPnNoYXBlID0gJihkZXN0LT5zbWFsbHRhYmxlWzBdKTsKLSAgICAgICAgZGVzdC0+c2hhcGVbMF0gPSBnZXRfc2hhcGUwKHNyYyk7Ci0gICAgfQotICAgIGlmIChzcmMtPm5kaW0gPT0gMSAmJiBzcmMtPnN0cmlkZXMgIT0gTlVMTCkgewotICAgICAgICBkZXN0LT5zdHJpZGVzID0gJihkZXN0LT5zbWFsbHRhYmxlWzFdKTsKLSAgICAgICAgZGVzdC0+c3RyaWRlc1swXSA9IHNyYy0+c3RyaWRlc1swXTsKLSAgICB9CisgICAgaWYgKHNlbGYtPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9SRUxFQVNFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyogTk9URTogYXQgdGhpcyBwb2ludCBzZWxmLT5leHBvcnRzIGNhbiBzdGlsbCBiZSA+IDAgaWYgdGhpcyBmdW5jdGlvbgorICAgICAgIGlzIGNhbGxlZCBmcm9tIG1idWZfY2xlYXIoKSB0byBicmVhayB1cCBhIHJlZmVyZW5jZSBjeWNsZS4gKi8KKyAgICBzZWxmLT5mbGFncyB8PSBfUHlfTUFOQUdFRF9CVUZGRVJfUkVMRUFTRUQ7CisKKyAgICAvKiBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyBtYXN0ZXItPm9iaiBhbmQgc2V0cyBpdCB0byBOVUxMLiAqLworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlbGYtPm1hc3Rlcik7Cit9CisKK3N0YXRpYyB2b2lkCittYnVmX2RlYWxsb2MoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqc2VsZikKK3sKKyAgICBhc3NlcnQoc2VsZi0+ZXhwb3J0cyA9PSAwKTsKKyAgICBtYnVmX3JlbGVhc2Uoc2VsZik7CisgICAgaWYgKHNlbGYtPmZsYWdzJl9QeV9NQU5BR0VEX0JVRkZFUl9GUkVFX0ZPUk1BVCkKKyAgICAgICAgUHlNZW1fRnJlZShzZWxmLT5tYXN0ZXIuZm9ybWF0KTsKKyAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7CiB9CiAKIHN0YXRpYyBpbnQKLW1lbW9yeV9nZXRidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcsIGludCBmbGFncykKK21idWZfdHJhdmVyc2UoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCiB7Ci0gICAgaW50IHJlcyA9IDA7Ci0gICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOwotICAgIGlmIChzZWxmLT52aWV3Lm9iaiAhPSBOVUxMKQotICAgICAgICByZXMgPSBQeU9iamVjdF9HZXRCdWZmZXIoc2VsZi0+dmlldy5vYmosIHZpZXcsIGZsYWdzKTsKLSAgICBpZiAodmlldykKLSAgICAgICAgZHVwX2J1ZmZlcih2aWV3LCAmc2VsZi0+dmlldyk7Ci0gICAgcmV0dXJuIHJlczsKKyAgICBQeV9WSVNJVChzZWxmLT5tYXN0ZXIub2JqKTsKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQKLW1lbW9yeV9yZWxlYXNlYnVmKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3KQorc3RhdGljIGludAorbWJ1Zl9jbGVhcihfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICpzZWxmKQogewotICAgIFB5QnVmZmVyX1JlbGVhc2Uodmlldyk7CisgICAgYXNzZXJ0KHNlbGYtPmV4cG9ydHMgPj0gMCk7CisgICAgbWJ1Zl9yZWxlYXNlKHNlbGYpOworICAgIHJldHVybiAwOwogfQogCitQeVR5cGVPYmplY3QgX1B5TWFuYWdlZEJ1ZmZlcl9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm1hbmFnZWRidWZmZXIiLAorICAgIHNpemVvZihfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0KSwKKyAgICAwLAorICAgIChkZXN0cnVjdG9yKW1idWZfZGVhbGxvYywgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgKHRyYXZlcnNlcHJvYyltYnVmX3RyYXZlcnNlLCAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KW1idWZfY2xlYXIgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5VmlldyBPYmplY3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbiB0aGUgcHJvY2VzcyBvZiBicmVha2luZyByZWZlcmVuY2UgY3ljbGVzIG1idWZfcmVsZWFzZSgpIGNhbiBiZQorICAgY2FsbGVkIGJlZm9yZSBtZW1vcnlfcmVsZWFzZSgpLiAqLworI2RlZmluZSBCQVNFX0lOQUNDRVNTSUJMRShtdikgXAorICAgICgoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+ZmxhZ3MmX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQgfHwgXAorICAgICAoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+bWJ1Zi0+ZmxhZ3MmX1B5X01BTkFHRURfQlVGRkVSX1JFTEVBU0VEKQorCisjZGVmaW5lIENIRUNLX1JFTEVBU0VEKG12KSBcCisgICAgaWYgKEJBU0VfSU5BQ0NFU1NJQkxFKG12KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAib3BlcmF0aW9uIGZvcmJpZGRlbiBvbiByZWxlYXNlZCBtZW1vcnl2aWV3IG9iamVjdCIpOyBcCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIENIRUNLX1JFTEVBU0VEX0lOVChtdikgXAorICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRShtdikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgIm9wZXJhdGlvbiBmb3JiaWRkZW4gb24gcmVsZWFzZWQgbWVtb3J5dmlldyBvYmplY3QiKTsgXAorICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0KKworI2RlZmluZSBDSEVDS19MSVNUX09SX1RVUExFKHYpIFwKKyAgICBpZiAoIVB5TGlzdF9DaGVjayh2KSAmJiAhUHlUdXBsZV9DaGVjayh2KSkgeyBcCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICAgICAgICAgXAorICAgICAgICAgICAgI3YgIiBtdXN0IGJlIGEgbGlzdCBvciBhIHR1cGxlIik7ICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCisjZGVmaW5lIFZJRVdfQUREUihtdikgKCYoKFB5TWVtb3J5Vmlld09iamVjdCAqKW12KS0+dmlldykKKworLyogQ2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBzdWJvZmZzZXRzIGluIHRoZSBmaXJzdCBkaW1lbnNpb24uICovCisjZGVmaW5lIEhBVkVfUFRSKHN1Ym9mZnNldHMpIChzdWJvZmZzZXRzICYmIHN1Ym9mZnNldHNbMF0gPj0gMCkKKy8qIEFkanVzdCBwdHIgaWYgc3Vib2Zmc2V0cyBhcmUgcHJlc2VudC4gKi8KKyNkZWZpbmUgQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpIFwKKyAgICAoSEFWRV9QVFIoc3Vib2Zmc2V0cykgPyAqKChjaGFyKiopcHRyKSArIHN1Ym9mZnNldHNbMF0gOiBwdHIpCisKKy8qIE1lbW9yeXZpZXcgYnVmZmVyIHByb3BlcnRpZXMgKi8KKyNkZWZpbmUgTVZfQ19DT05USUdVT1VTKGZsYWdzKSAoZmxhZ3MmKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DKSkKKyNkZWZpbmUgTVZfRl9DT05USUdVT1VTKGZsYWdzKSBcCisgICAgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfRk9SVFJBTikpCisjZGVmaW5lIE1WX0FOWV9DT05USUdVT1VTKGZsYWdzKSBcCisgICAgKGZsYWdzJihfUHlfTUVNT1JZVklFV19TQ0FMQVJ8X1B5X01FTU9SWVZJRVdfQ3xfUHlfTUVNT1JZVklFV19GT1JUUkFOKSkKKworLyogRmFzdCBjb250aWd1aXR5IHRlc3QuIENhbGxlciBtdXN0IGVuc3VyZSBzdWJvZmZzZXRzPT1OVUxMIGFuZCBuZGltPT0xLiAqLworI2RlZmluZSBNVl9DT05USUdVT1VTX05ESU0xKHZpZXcpIFwKKyAgICAoKHZpZXcpLT5zaGFwZVswXSA9PSAxIHx8ICh2aWV3KS0+c3RyaWRlc1swXSA9PSAodmlldyktPml0ZW1zaXplKQorCisvKiBnZXRidWZmZXIoKSByZXF1ZXN0cyAqLworI2RlZmluZSBSRVFfSU5ESVJFQ1QoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfSU5ESVJFQ1QpID09IFB5QlVGX0lORElSRUNUKQorI2RlZmluZSBSRVFfQ19DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0NfQ09OVElHVU9VUykgPT0gUHlCVUZfQ19DT05USUdVT1VTKQorI2RlZmluZSBSRVFfRl9DT05USUdVT1VTKGZsYWdzKSAoKGZsYWdzJlB5QlVGX0ZfQ09OVElHVU9VUykgPT0gUHlCVUZfRl9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfQU5ZX0NPTlRJR1VPVVMpID09IFB5QlVGX0FOWV9DT05USUdVT1VTKQorI2RlZmluZSBSRVFfU1RSSURFUyhmbGFncykgKChmbGFncyZQeUJVRl9TVFJJREVTKSA9PSBQeUJVRl9TVFJJREVTKQorI2RlZmluZSBSRVFfU0hBUEUoZmxhZ3MpICgoZmxhZ3MmUHlCVUZfTkQpID09IFB5QlVGX05EKQorI2RlZmluZSBSRVFfV1JJVEFCTEUoZmxhZ3MpIChmbGFncyZQeUJVRl9XUklUQUJMRSkKKyNkZWZpbmUgUkVRX0ZPUk1BVChmbGFncykgKGZsYWdzJlB5QlVGX0ZPUk1BVCkKKworCiBQeURvY19TVFJWQVIobWVtb3J5X2RvYywKICJtZW1vcnl2aWV3KG9iamVjdClcblwKIFxuXAogQ3JlYXRlIGEgbmV3IG1lbW9yeXZpZXcgb2JqZWN0IHdoaWNoIHJlZmVyZW5jZXMgdGhlIGdpdmVuIG9iamVjdC4iKTsKIAorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgQ29weSBtZW1vcnl2aWV3IGJ1ZmZlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIFRoZSBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIHRha2UgYSBzb3VyY2UgYW5kIGEgZGVzdGluYXRpb24gYnVmZmVyCisgICB3aXRoIHRoZSBzYW1lIGxvZ2ljYWwgc3RydWN0dXJlOiBmb3JtYXQsIGl0ZW1zaXplLCBuZGltIGFuZCBzaGFwZQorICAgYXJlIGlkZW50aWNhbCwgd2l0aCBuZGltID4gMC4KKworICAgTk9URTogQWxsIGJ1ZmZlcnMgYXJlIGFzc3VtZWQgdG8gaGF2ZSBQeUJVRl9GVUxMIGluZm9ybWF0aW9uLCB3aGljaAorICAgaXMgdGhlIGNhc2UgZm9yIG1lbW9yeXZpZXdzISAqLworCisKKy8qIEFzc3VtcHRpb25zOiBuZGltID49IDEuIFRoZSBtYWNybyB0ZXN0cyBmb3IgYSBjb3JuZXIgY2FzZSB0aGF0IHNob3VsZAorICAgcGVyaGFwcyBiZSBleHBsaWNpdGx5IGZvcmJpZGRlbiBpbiB0aGUgUEVQLiAqLworI2RlZmluZSBIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0odmlldykgXAorICAgICh2aWV3LT5zdWJvZmZzZXRzICYmIHZpZXctPnN1Ym9mZnNldHNbZGVzdC0+bmRpbS0xXSA+PSAwKQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorbGFzdF9kaW1faXNfY29udGlndW91cyhjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGFzc2VydChkZXN0LT5uZGltID4gMCAmJiBzcmMtPm5kaW0gPiAwKTsKKyAgICByZXR1cm4gKCFIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0oZGVzdCkgJiYKKyAgICAgICAgICAgICFIQVZFX1NVQk9GRlNFVFNfSU5fTEFTVF9ESU0oc3JjKSAmJgorICAgICAgICAgICAgZGVzdC0+c3RyaWRlc1tkZXN0LT5uZGltLTFdID09IGRlc3QtPml0ZW1zaXplICYmCisgICAgICAgICAgICBzcmMtPnN0cmlkZXNbc3JjLT5uZGltLTFdID09IHNyYy0+aXRlbXNpemUpOworfQorCisvKiBUaGlzIGlzIG5vdCBhIGdlbmVyYWwgZnVuY3Rpb24gZm9yIGRldGVybWluaW5nIGZvcm1hdCBlcXVpdmFsZW5jZS4KKyAgIEl0IGlzIHVzZWQgaW4gY29weV9zaW5nbGUoKSBhbmQgY29weV9idWZmZXIoKSB0byB3ZWVkIG91dCBub24tbWF0Y2hpbmcKKyAgIGZvcm1hdHMuIFNraXBwaW5nIHRoZSAnQCcgY2hhcmFjdGVyIGlzIHNwZWNpZmljYWxseSB1c2VkIGluIHNsaWNlCisgICBhc3NpZ25tZW50cywgd2hlcmUgdGhlIGx2YWx1ZSBpcyBhbHJlYWR5IGtub3duIHRvIGhhdmUgYSBzaW5nbGUgY2hhcmFjdGVyCisgICBmb3JtYXQuIFRoaXMgaXMgYSBwZXJmb3JtYW5jZSBoYWNrIHRoYXQgY291bGQgYmUgcmV3cml0dGVuIChpZiBwcm9wZXJseQorICAgYmVuY2htYXJrZWQpLiAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK2VxdWl2X2Zvcm1hdChjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNvbnN0IGNoYXIgKmRmbXQsICpzZm10OworCisgICAgYXNzZXJ0KGRlc3QtPmZvcm1hdCAmJiBzcmMtPmZvcm1hdCk7CisgICAgZGZtdCA9IGRlc3QtPmZvcm1hdFswXSA9PSAnQCcgPyBkZXN0LT5mb3JtYXQrMSA6IGRlc3QtPmZvcm1hdDsKKyAgICBzZm10ID0gc3JjLT5mb3JtYXRbMF0gPT0gJ0AnID8gc3JjLT5mb3JtYXQrMSA6IHNyYy0+Zm9ybWF0OworCisgICAgaWYgKHN0cmNtcChkZm10LCBzZm10KSAhPSAwIHx8CisgICAgICAgIGRlc3QtPml0ZW1zaXplICE9IHNyYy0+aXRlbXNpemUpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIFR3byBzaGFwZXMgYXJlIGVxdWl2YWxlbnQgaWYgdGhleSBhcmUgZWl0aGVyIGVxdWFsIG9yIGlkZW50aWNhbCB1cAorICAgdG8gYSB6ZXJvIGVsZW1lbnQgYXQgdGhlIHNhbWUgcG9zaXRpb24uIEZvciBleGFtcGxlLCBpbiBOdW1QeSBhcnJheXMKKyAgIHRoZSBzaGFwZXMgWzEsIDAsIDVdIGFuZCBbMSwgMCwgN10gYXJlIGVxdWl2YWxlbnQuICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQorZXF1aXZfc2hhcGUoY29uc3QgUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBpbnQgaTsKKworICAgIGlmIChkZXN0LT5uZGltICE9IHNyYy0+bmRpbSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZGVzdC0+bmRpbTsgaSsrKSB7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSAhPSBzcmMtPnNoYXBlW2ldKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChkZXN0LT5zaGFwZVtpXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKKy8qIENoZWNrIHRoYXQgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIHRoZSBkZXN0aW5hdGlvbiBhbmQgc291cmNlIGJ1ZmZlcnMKKyAgIGlzIGlkZW50aWNhbC4gKi8KK3N0YXRpYyBpbnQKK2VxdWl2X3N0cnVjdHVyZShjb25zdCBQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGlmICghZXF1aXZfZm9ybWF0KGRlc3QsIHNyYykgfHwKKyAgICAgICAgIWVxdWl2X3NoYXBlKGRlc3QsIHNyYykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibmRhcnJheSBhc3NpZ25tZW50OiBsdmFsdWUgYW5kIHJ2YWx1ZSBoYXZlIGRpZmZlcmVudCBzdHJ1Y3R1cmVzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBCYXNlIGNhc2UgZm9yIHJlY3Vyc2l2ZSBtdWx0aS1kaW1lbnNpb25hbCBjb3B5aW5nLiBDb250aWd1b3VzIGFycmF5cyBhcmUKKyAgIGNvcGllZCB3aXRoIHZlcnkgbGl0dGxlIG92ZXJoZWFkLiBBc3N1bXB0aW9uczogbmRpbSA9PSAxLCBtZW0gPT0gTlVMTCBvcgorICAgc2l6ZW9mKG1lbSkgPT0gc2hhcGVbMF0gKiBpdGVtc2l6ZS4gKi8KK3N0YXRpYyB2b2lkCitjb3B5X2Jhc2UoY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgaXRlbXNpemUsCisgICAgICAgICAgY2hhciAqZHB0ciwgY29uc3QgUHlfc3NpemVfdCAqZHN0cmlkZXMsIGNvbnN0IFB5X3NzaXplX3QgKmRzdWJvZmZzZXRzLAorICAgICAgICAgIGNoYXIgKnNwdHIsIGNvbnN0IFB5X3NzaXplX3QgKnNzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzc3Vib2Zmc2V0cywKKyAgICAgICAgICBjaGFyICptZW0pCit7CisgICAgaWYgKG1lbSA9PSBOVUxMKSB7IC8qIGNvbnRpZ3VvdXMgKi8KKyAgICAgICAgUHlfc3NpemVfdCBzaXplID0gc2hhcGVbMF0gKiBpdGVtc2l6ZTsKKyAgICAgICAgaWYgKGRwdHIgKyBzaXplIDwgc3B0ciB8fCBzcHRyICsgc2l6ZSA8IGRwdHIpCisgICAgICAgICAgICBtZW1jcHkoZHB0ciwgc3B0ciwgc2l6ZSk7IC8qIG5vIG92ZXJsYXBwaW5nICovCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lbW1vdmUoZHB0ciwgc3B0ciwgc2l6ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjaGFyICpwOworICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgY2hhciAqeHNwdHIgPSBBREpVU1RfUFRSKHNwdHIsIHNzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIG1lbWNweShwLCB4c3B0ciwgaXRlbXNpemUpOworICAgICAgICB9CisgICAgICAgIGZvciAoaT0wLCBwPW1lbTsgaSA8IHNoYXBlWzBdOyBwKz1pdGVtc2l6ZSwgZHB0cis9ZHN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICAgICAgY2hhciAqeGRwdHIgPSBBREpVU1RfUFRSKGRwdHIsIGRzdWJvZmZzZXRzKTsKKyAgICAgICAgICAgIG1lbWNweSh4ZHB0ciwgcCwgaXRlbXNpemUpOworICAgICAgICB9CisgICAgfQorCit9CisKKy8qIFJlY3Vyc2l2ZWx5IGNvcHkgYSBzb3VyY2UgYnVmZmVyIHRvIGEgZGVzdGluYXRpb24gYnVmZmVyLiBUaGUgdHdvIGJ1ZmZlcnMKKyAgIGhhdmUgdGhlIHNhbWUgbmRpbSwgc2hhcGUgYW5kIGl0ZW1zaXplLiAqLworc3RhdGljIHZvaWQKK2NvcHlfcmVjKGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90IG5kaW0sIFB5X3NzaXplX3QgaXRlbXNpemUsCisgICAgICAgICBjaGFyICpkcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpkc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqZHN1Ym9mZnNldHMsCisgICAgICAgICBjaGFyICpzcHRyLCBjb25zdCBQeV9zc2l6ZV90ICpzc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqc3N1Ym9mZnNldHMsCisgICAgICAgICBjaGFyICptZW0pCit7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMSk7CisKKyAgICBpZiAobmRpbSA9PSAxKSB7CisgICAgICAgIGNvcHlfYmFzZShzaGFwZSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgICBkcHRyLCBkc3RyaWRlcywgZHN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICBzcHRyLCBzc3RyaWRlcywgc3N1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICBtZW0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBkcHRyKz1kc3RyaWRlc1swXSwgc3B0cis9c3N0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjaGFyICp4ZHB0ciA9IEFESlVTVF9QVFIoZHB0ciwgZHN1Ym9mZnNldHMpOworICAgICAgICBjaGFyICp4c3B0ciA9IEFESlVTVF9QVFIoc3B0ciwgc3N1Ym9mZnNldHMpOworCisgICAgICAgIGNvcHlfcmVjKHNoYXBlKzEsIG5kaW0tMSwgaXRlbXNpemUsCisgICAgICAgICAgICAgICAgIHhkcHRyLCBkc3RyaWRlcysxLCBkc3Vib2Zmc2V0cyA/IGRzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICB4c3B0ciwgc3N0cmlkZXMrMSwgc3N1Ym9mZnNldHMgPyBzc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgbWVtKTsKKyAgICB9Cit9CisKKy8qIEZhc3RlciBjb3B5aW5nIG9mIG9uZS1kaW1lbnNpb25hbCBhcnJheXMuICovCitzdGF0aWMgaW50Citjb3B5X3NpbmdsZShQeV9idWZmZXIgKmRlc3QsIFB5X2J1ZmZlciAqc3JjKQoreworICAgIGNoYXIgKm1lbSA9IE5VTEw7CisKKyAgICBhc3NlcnQoZGVzdC0+bmRpbSA9PSAxKTsKKworICAgIGlmICghZXF1aXZfc3RydWN0dXJlKGRlc3QsIHNyYykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICghbGFzdF9kaW1faXNfY29udGlndW91cyhkZXN0LCBzcmMpKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVswXSAqIGRlc3QtPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKG1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgY29weV9iYXNlKGRlc3QtPnNoYXBlLCBkZXN0LT5pdGVtc2l6ZSwKKyAgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICBzcmMtPmJ1Ziwgc3JjLT5zdHJpZGVzLCBzcmMtPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgIG1lbSk7CisKKyAgICBpZiAobWVtKQorICAgICAgICBQeU1lbV9GcmVlKG1lbSk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogUmVjdXJzaXZlbHkgY29weSBzcmMgdG8gZGVzdC4gQm90aCBidWZmZXJzIG11c3QgaGF2ZSB0aGUgc2FtZSBiYXNpYworICAgc3RydWN0dXJlLiBDb3B5aW5nIGlzIGF0b21pYywgdGhlIGZ1bmN0aW9uIG5ldmVyIGZhaWxzIHdpdGggYSBwYXJ0aWFsCisgICBjb3B5LiAqLworc3RhdGljIGludAorY29weV9idWZmZXIoUHlfYnVmZmVyICpkZXN0LCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBjaGFyICptZW0gPSBOVUxMOworCisgICAgYXNzZXJ0KGRlc3QtPm5kaW0gPiAwKTsKKworICAgIGlmICghZXF1aXZfc3RydWN0dXJlKGRlc3QsIHNyYykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICghbGFzdF9kaW1faXNfY29udGlndW91cyhkZXN0LCBzcmMpKSB7CisgICAgICAgIG1lbSA9IFB5TWVtX01hbGxvYyhkZXN0LT5zaGFwZVtkZXN0LT5uZGltLTFdICogZGVzdC0+aXRlbXNpemUpOworICAgICAgICBpZiAobWVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb3B5X3JlYyhkZXN0LT5zaGFwZSwgZGVzdC0+bmRpbSwgZGVzdC0+aXRlbXNpemUsCisgICAgICAgICAgICAgZGVzdC0+YnVmLCBkZXN0LT5zdHJpZGVzLCBkZXN0LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgIHNyYy0+YnVmLCBzcmMtPnN0cmlkZXMsIHNyYy0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICBtZW0pOworCisgICAgaWYgKG1lbSkKKyAgICAgICAgUHlNZW1fRnJlZShtZW0pOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBDLWNvbnRpZ3VvdXMgYXJyYXkuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfc3RyaWRlc19mcm9tX3NoYXBlKFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA+IDApOworCisgICAgdmlldy0+c3RyaWRlc1t2aWV3LT5uZGltLTFdID0gdmlldy0+aXRlbXNpemU7CisgICAgZm9yIChpID0gdmlldy0+bmRpbS0yOyBpID49IDA7IGktLSkKKyAgICAgICAgdmlldy0+c3RyaWRlc1tpXSA9IHZpZXctPnN0cmlkZXNbaSsxXSAqIHZpZXctPnNoYXBlW2krMV07Cit9CisKKy8qIEluaXRpYWxpemUgc3RyaWRlcyBmb3IgYSBGb3J0cmFuLWNvbnRpZ3VvdXMgYXJyYXkuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfZm9ydHJhbl9zdHJpZGVzX2Zyb21fc2hhcGUoUHlfYnVmZmVyICp2aWV3KQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGFzc2VydCh2aWV3LT5uZGltID4gMCk7CisKKyAgICB2aWV3LT5zdHJpZGVzWzBdID0gdmlldy0+aXRlbXNpemU7CisgICAgZm9yIChpID0gMTsgaSA8IHZpZXctPm5kaW07IGkrKykKKyAgICAgICAgdmlldy0+c3RyaWRlc1tpXSA9IHZpZXctPnN0cmlkZXNbaS0xXSAqIHZpZXctPnNoYXBlW2ktMV07Cit9CisKKy8qIENvcHkgc3JjIHRvIGEgY29udGlndW91cyByZXByZXNlbnRhdGlvbi4gb3JkZXIgaXMgb25lIG9mICdDJywgJ0YnIChGb3J0cmFuKQorICAgb3IgJ0EnIChBbnkpLiBBc3N1bXB0aW9uczogc3JjIGhhcyBQeUJVRl9GVUxMIGluZm9ybWF0aW9uLCBzcmMtPm5kaW0gPj0gMSwKKyAgIGxlbihtZW0pID09IHNyYy0+bGVuLiAqLworc3RhdGljIGludAorYnVmZmVyX3RvX2NvbnRpZ3VvdXMoY2hhciAqbWVtLCBQeV9idWZmZXIgKnNyYywgY2hhciBvcmRlcikKK3sKKyAgICBQeV9idWZmZXIgZGVzdDsKKyAgICBQeV9zc2l6ZV90ICpzdHJpZGVzOworICAgIGludCByZXQ7CisKKyAgICBhc3NlcnQoc3JjLT5uZGltID49IDEpOworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzcmMtPnN0cmlkZXMgIT0gTlVMTCk7CisKKyAgICBzdHJpZGVzID0gUHlNZW1fTWFsbG9jKHNyYy0+bmRpbSAqIChzaXplb2YgKnNyYy0+c3RyaWRlcykpOworICAgIGlmIChzdHJpZGVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIGluaXRpYWxpemUgZGVzdCAqLworICAgIGRlc3QgPSAqc3JjOworICAgIGRlc3QuYnVmID0gbWVtOworICAgIC8qIHNoYXBlIGlzIGNvbnN0YW50IGFuZCBzaGFyZWQ6IHRoZSBsb2dpY2FsIHJlcHJlc2VudGF0aW9uIG9mIHRoZQorICAgICAgIGFycmF5IGlzIHVuYWx0ZXJlZC4gKi8KKworICAgIC8qIFRoZSBwaHlzaWNhbCByZXByZXNlbnRhdGlvbiBkZXRlcm1pbmVkIGJ5IHN0cmlkZXMgKGFuZCBwb3NzaWJseQorICAgICAgIHN1Ym9mZnNldHMpIG1heSBjaGFuZ2UuICovCisgICAgZGVzdC5zdHJpZGVzID0gc3RyaWRlczsKKyAgICBpZiAob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdBJykgeworICAgICAgICBpbml0X3N0cmlkZXNfZnJvbV9zaGFwZSgmZGVzdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKCZkZXN0KTsKKyAgICB9CisKKyAgICBkZXN0LnN1Ym9mZnNldHMgPSBOVUxMOworCisgICAgcmV0ID0gY29weV9idWZmZXIoJmRlc3QsIHNyYyk7CisKKyAgICBQeU1lbV9GcmVlKHN0cmlkZXMpOworICAgIHJldHVybiByZXQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25zdHJ1Y3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBJbml0aWFsaXplIHZhbHVlcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUgbWFuYWdlZCBidWZmZXIuICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfc2hhcmVkX3ZhbHVlcyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIGRlc3QtPm9iaiA9IHNyYy0+b2JqOworICAgIGRlc3QtPmJ1ZiA9IHNyYy0+YnVmOworICAgIGRlc3QtPmxlbiA9IHNyYy0+bGVuOworICAgIGRlc3QtPml0ZW1zaXplID0gc3JjLT5pdGVtc2l6ZTsKKyAgICBkZXN0LT5yZWFkb25seSA9IHNyYy0+cmVhZG9ubHk7CisgICAgZGVzdC0+Zm9ybWF0ID0gc3JjLT5mb3JtYXQgPyBzcmMtPmZvcm1hdCA6ICJCIjsKKyAgICBkZXN0LT5pbnRlcm5hbCA9IHNyYy0+aW50ZXJuYWw7Cit9CisKKy8qIENvcHkgc2hhcGUgYW5kIHN0cmlkZXMuIFJlY29uc3RydWN0IG1pc3NpbmcgdmFsdWVzLiAqLworc3RhdGljIHZvaWQKK2luaXRfc2hhcGVfc3RyaWRlcyhQeV9idWZmZXIgKmRlc3QsIGNvbnN0IFB5X2J1ZmZlciAqc3JjKQoreworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGlmIChzcmMtPm5kaW0gPT0gMCkgeworICAgICAgICBkZXN0LT5zaGFwZSA9IE5VTEw7CisgICAgICAgIGRlc3QtPnN0cmlkZXMgPSBOVUxMOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChzcmMtPm5kaW0gPT0gMSkgeworICAgICAgICBkZXN0LT5zaGFwZVswXSA9IHNyYy0+c2hhcGUgPyBzcmMtPnNoYXBlWzBdIDogc3JjLT5sZW4gLyBzcmMtPml0ZW1zaXplOworICAgICAgICBkZXN0LT5zdHJpZGVzWzBdID0gc3JjLT5zdHJpZGVzID8gc3JjLT5zdHJpZGVzWzBdIDogc3JjLT5pdGVtc2l6ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzcmMtPm5kaW07IGkrKykKKyAgICAgICAgZGVzdC0+c2hhcGVbaV0gPSBzcmMtPnNoYXBlW2ldOworICAgIGlmIChzcmMtPnN0cmlkZXMpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKQorICAgICAgICAgICAgZGVzdC0+c3RyaWRlc1tpXSA9IHNyYy0+c3RyaWRlc1tpXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGluaXRfc3RyaWRlc19mcm9tX3NoYXBlKGRlc3QpOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitpbml0X3N1Ym9mZnNldHMoUHlfYnVmZmVyICpkZXN0LCBjb25zdCBQeV9idWZmZXIgKnNyYykKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBpZiAoc3JjLT5zdWJvZmZzZXRzID09IE5VTEwpIHsKKyAgICAgICAgZGVzdC0+c3Vib2Zmc2V0cyA9IE5VTEw7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKQorICAgICAgICBkZXN0LT5zdWJvZmZzZXRzW2ldID0gc3JjLT5zdWJvZmZzZXRzW2ldOworfQorCisvKiBsZW4gPSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplICovCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK2luaXRfbGVuKFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBQeV9zc2l6ZV90IGksIGxlbjsKKworICAgIGxlbiA9IDE7CisgICAgZm9yIChpID0gMDsgaSA8IHZpZXctPm5kaW07IGkrKykKKyAgICAgICAgbGVuICo9IHZpZXctPnNoYXBlW2ldOworICAgIGxlbiAqPSB2aWV3LT5pdGVtc2l6ZTsKKworICAgIHZpZXctPmxlbiA9IGxlbjsKK30KKworLyogSW5pdGlhbGl6ZSBtZW1vcnl2aWV3IGJ1ZmZlciBwcm9wZXJ0aWVzLiAqLworc3RhdGljIHZvaWQKK2luaXRfZmxhZ3MoUHlNZW1vcnlWaWV3T2JqZWN0ICptdikKK3sKKyAgICBjb25zdCBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgaW50IGZsYWdzID0gMDsKKworICAgIHN3aXRjaCAodmlldy0+bmRpbSkgeworICAgIGNhc2UgMDoKKyAgICAgICAgZmxhZ3MgfD0gKF9QeV9NRU1PUllWSUVXX1NDQUxBUnxfUHlfTUVNT1JZVklFV19DfAorICAgICAgICAgICAgICAgICAgX1B5X01FTU9SWVZJRVdfRk9SVFJBTik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKE1WX0NPTlRJR1VPVVNfTkRJTTEodmlldykpCisgICAgICAgICAgICBmbGFncyB8PSAoX1B5X01FTU9SWVZJRVdfQ3xfUHlfTUVNT1JZVklFV19GT1JUUkFOKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnQycpKQorICAgICAgICAgICAgZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfQzsKKyAgICAgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCAnRicpKQorICAgICAgICAgICAgZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfRk9SVFJBTjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHZpZXctPnN1Ym9mZnNldHMpIHsKKyAgICAgICAgZmxhZ3MgfD0gX1B5X01FTU9SWVZJRVdfUElMOworICAgICAgICBmbGFncyAmPSB+KF9QeV9NRU1PUllWSUVXX0N8X1B5X01FTU9SWVZJRVdfRk9SVFJBTik7CisgICAgfQorCisgICAgbXYtPmZsYWdzID0gZmxhZ3M7Cit9CisKKy8qIEFsbG9jYXRlIGEgbmV3IG1lbW9yeXZpZXcgYW5kIHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24uIE5ldyBtZW1vcnl2aWV3cworICAgYXJlIGV4Y2x1c2l2ZWx5IGNyZWF0ZWQgdGhyb3VnaCB0aGUgbWJ1Zl9hZGQgZnVuY3Rpb25zLiAqLworUHlfTE9DQUxfSU5MSU5FKFB5TWVtb3J5Vmlld09iamVjdCAqKQorbWVtb3J5X2FsbG9jKGludCBuZGltKQoreworICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXY7CisKKyAgICBtdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKikKKyAgICAgICAgUHlPYmplY3RfR0NfTmV3VmFyKFB5TWVtb3J5Vmlld09iamVjdCwgJlB5TWVtb3J5Vmlld19UeXBlLCAzKm5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG12LT5tYnVmID0gTlVMTDsKKyAgICBtdi0+aGFzaCA9IC0xOworICAgIG12LT5mbGFncyA9IDA7CisgICAgbXYtPmV4cG9ydHMgPSAwOworICAgIG12LT52aWV3Lm5kaW0gPSBuZGltOworICAgIG12LT52aWV3LnNoYXBlID0gbXYtPm9iX2FycmF5OworICAgIG12LT52aWV3LnN0cmlkZXMgPSBtdi0+b2JfYXJyYXkgKyBuZGltOworICAgIG12LT52aWV3LnN1Ym9mZnNldHMgPSBtdi0+b2JfYXJyYXkgKyAyICogbmRpbTsKKyAgICBtdi0+d2Vha3JlZmxpc3QgPSBOVUxMOworCisgICAgX1B5T2JqZWN0X0dDX1RSQUNLKG12KTsKKyAgICByZXR1cm4gbXY7Cit9CisKKy8qCisgICBSZXR1cm4gYSBuZXcgbWVtb3J5dmlldyB0aGF0IGlzIHJlZ2lzdGVyZWQgd2l0aCBtYnVmLiBJZiBzcmMgaXMgTlVMTCwKKyAgIHVzZSBtYnVmLT5tYXN0ZXIgYXMgdGhlIHVuZGVybHlpbmcgYnVmZmVyLiBPdGhlcndpc2UsIHVzZSBzcmMuCisKKyAgIFRoZSBuZXcgbWVtb3J5dmlldyBoYXMgZnVsbCBidWZmZXIgaW5mb3JtYXRpb246IHNoYXBlIGFuZCBzdHJpZGVzCisgICBhcmUgYWx3YXlzIHByZXNlbnQsIHN1Ym9mZnNldHMgYXMgbmVlZGVkLiBBcnJheXMgYXJlIGNvcGllZCB0bworICAgdGhlIG1lbW9yeXZpZXcncyBvYl9hcnJheSBmaWVsZC4KKyAqLworc3RhdGljIFB5T2JqZWN0ICoKK21idWZfYWRkX3ZpZXcoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZiwgY29uc3QgUHlfYnVmZmVyICpzcmMpCit7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKyAgICBQeV9idWZmZXIgKmRlc3Q7CisKKyAgICBpZiAoc3JjID09IE5VTEwpCisgICAgICAgIHNyYyA9ICZtYnVmLT5tYXN0ZXI7CisKKyAgICBpZiAoc3JjLT5uZGltID4gUHlCVUZfTUFYX05ESU0pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogbnVtYmVyIG9mIGRpbWVuc2lvbnMgbXVzdCBub3QgZXhjZWVkICIKKyAgICAgICAgICAgIFNUUklOR0laRShQeUJVRl9NQVhfTkRJTSkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBtdiA9IG1lbW9yeV9hbGxvYyhzcmMtPm5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlc3QgPSAmbXYtPnZpZXc7CisgICAgaW5pdF9zaGFyZWRfdmFsdWVzKGRlc3QsIHNyYyk7CisgICAgaW5pdF9zaGFwZV9zdHJpZGVzKGRlc3QsIHNyYyk7CisgICAgaW5pdF9zdWJvZmZzZXRzKGRlc3QsIHNyYyk7CisgICAgaW5pdF9mbGFncyhtdik7CisKKyAgICBtdi0+bWJ1ZiA9IG1idWY7CisgICAgUHlfSU5DUkVGKG1idWYpOworICAgIG1idWYtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKK30KKworLyogUmVnaXN0ZXIgYW4gaW5jb21wbGV0ZSB2aWV3OiBzaGFwZSwgc3RyaWRlcywgc3Vib2Zmc2V0cyBhbmQgZmxhZ3Mgc3RpbGwKKyAgIG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIFVzZSAnbmRpbScgaW5zdGVhZCBvZiBzcmMtPm5kaW0gdG8gZGV0ZXJtaW5lIHRoZQorICAgc2l6ZSBvZiB0aGUgbWVtb3J5dmlldydzIG9iX2FycmF5LgorCisgICBBc3N1bXB0aW9uOiBuZGltIDw9IFB5QlVGX01BWF9ORElNLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK21idWZfYWRkX2luY29tcGxldGVfdmlldyhfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmLCBjb25zdCBQeV9idWZmZXIgKnNyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmRpbSkKK3sKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworICAgIFB5X2J1ZmZlciAqZGVzdDsKKworICAgIGlmIChzcmMgPT0gTlVMTCkKKyAgICAgICAgc3JjID0gJm1idWYtPm1hc3RlcjsKKworICAgIGFzc2VydChuZGltIDw9IFB5QlVGX01BWF9ORElNKTsKKworICAgIG12ID0gbWVtb3J5X2FsbG9jKG5kaW0pOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlc3QgPSAmbXYtPnZpZXc7CisgICAgaW5pdF9zaGFyZWRfdmFsdWVzKGRlc3QsIHNyYyk7CisKKyAgICBtdi0+bWJ1ZiA9IG1idWY7CisgICAgUHlfSU5DUkVGKG1idWYpOworICAgIG1idWYtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKK30KKworLyogRXhwb3NlIGEgcmF3IG1lbW9yeSBhcmVhIGFzIGEgdmlldyBvZiBjb250aWd1b3VzIGJ5dGVzLiBmbGFncyBjYW4gYmUKKyAgIFB5QlVGX1JFQUQgb3IgUHlCVUZfV1JJVEUuIHZpZXctPmZvcm1hdCBpcyBzZXQgdG8gIkIiICh1bnNpZ25lZCBieXRlcykuCisgICBUaGUgbWVtb3J5dmlldyBoYXMgY29tcGxldGUgYnVmZmVyIGluZm9ybWF0aW9uLiAqLworUHlPYmplY3QgKgorUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoY2hhciAqbWVtLCBQeV9zc2l6ZV90IHNpemUsIGludCBmbGFncykKK3sKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworICAgIFB5T2JqZWN0ICptdjsKKyAgICBpbnQgcmVhZG9ubHk7CisKKyAgICBhc3NlcnQobWVtICE9IE5VTEwpOworICAgIGFzc2VydChmbGFncyA9PSBQeUJVRl9SRUFEIHx8IGZsYWdzID09IFB5QlVGX1dSSVRFKTsKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZWFkb25seSA9IChmbGFncyA9PSBQeUJVRl9XUklURSkgPyAwIDogMTsKKyAgICAodm9pZClQeUJ1ZmZlcl9GaWxsSW5mbygmbWJ1Zi0+bWFzdGVyLCBOVUxMLCBtZW0sIHNpemUsIHJlYWRvbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QlVGX0ZVTExfUk8pOworCisgICAgbXYgPSBtYnVmX2FkZF92aWV3KG1idWYsIE5VTEwpOworICAgIFB5X0RFQ1JFRihtYnVmKTsKKworICAgIHJldHVybiBtdjsKK30KKworLyogQ3JlYXRlIGEgbWVtb3J5dmlldyBmcm9tIGEgZ2l2ZW4gUHlfYnVmZmVyLiBGb3Igc2ltcGxlIGJ5dGUgdmlld3MsCisgICBQeU1lbW9yeVZpZXdfRnJvbU1lbW9yeSgpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSBvbmx5IGVudHJ5IHBvaW50IHRoYXQgY2FuIGNyZWF0ZSBhIG1hc3RlciBidWZmZXIKKyAgIHdpdGhvdXQgZnVsbCBpbmZvcm1hdGlvbi4gQmVjYXVzZSBvZiB0aGlzIGZhY3QgaW5pdF9zaGFwZV9zdHJpZGVzKCkKKyAgIG11c3QgYmUgYWJsZSB0byByZWNvbnN0cnVjdCBtaXNzaW5nIHZhbHVlcy4gICovCiBQeU9iamVjdCAqCiBQeU1lbW9yeVZpZXdfRnJvbUJ1ZmZlcihQeV9idWZmZXIgKmluZm8pCiB7Ci0gICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdmlldzsKKyAgICBfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICptYnVmOworICAgIFB5T2JqZWN0ICptdjsKIAogICAgIGlmIChpbmZvLT5idWYgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbWFrZSBtZW1vcnkgdmlldyBmcm9tIGEgYnVmZmVyIHdpdGggYSBOVUxMIGRhdGEgcG9pbnRlciIpOworICAgICAgICAgICAgIlB5TWVtb3J5Vmlld19Gcm9tQnVmZmVyKCk6IGluZm8tPmJ1ZiBtdXN0IG5vdCBiZSBOVUxMIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtdmlldyA9IChQeU1lbW9yeVZpZXdPYmplY3QgKikKLSAgICAgICAgUHlPYmplY3RfR0NfTmV3KFB5TWVtb3J5Vmlld09iamVjdCwgJlB5TWVtb3J5Vmlld19UeXBlKTsKLSAgICBpZiAobXZpZXcgPT0gTlVMTCkKKworICAgIG1idWYgPSBtYnVmX2FsbG9jKCk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZHVwX2J1ZmZlcigmbXZpZXctPnZpZXcsIGluZm8pOwotICAgIC8qIE5PVEU6IG12aWV3LT52aWV3Lm9iaiBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gaW5jcmVmJ2VkIGFzCi0gICAgICAgcGFydCBvZiBQeUJ1ZmZlcl9GaWxsSW5mbygpLiAqLwotICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtdmlldyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKW12aWV3OworCisgICAgLyogaW5mby0+b2JqIGlzIGVpdGhlciBOVUxMIG9yIGEgYm9ycm93ZWQgcmVmZXJlbmNlLiBUaGlzIHJlZmVyZW5jZQorICAgICAgIHNob3VsZCBub3QgYmUgZGVjcmVtZW50ZWQgaW4gUHlCdWZmZXJfUmVsZWFzZSgpLiAqLworICAgIG1idWYtPm1hc3RlciA9ICppbmZvOworICAgIG1idWYtPm1hc3Rlci5vYmogPSBOVUxMOworCisgICAgbXYgPSBtYnVmX2FkZF92aWV3KG1idWYsIE5VTEwpOworICAgIFB5X0RFQ1JFRihtYnVmKTsKKworICAgIHJldHVybiBtdjsKIH0KIAorLyogQ3JlYXRlIGEgbWVtb3J5dmlldyBmcm9tIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIGJ1ZmZlciBwcm90b2NvbC4KKyAgIElmIHRoZSBvYmplY3QgaXMgYSBtZW1vcnl2aWV3LCB0aGUgbmV3IG1lbW9yeXZpZXcgbXVzdCBiZSByZWdpc3RlcmVkCisgICB3aXRoIHRoZSBzYW1lIG1hbmFnZWQgYnVmZmVyLiBPdGhlcndpc2UsIGEgbmV3IG1hbmFnZWQgYnVmZmVyIGlzIGNyZWF0ZWQuICovCiBQeU9iamVjdCAqCi1QeU1lbW9yeVZpZXdfRnJvbU9iamVjdChQeU9iamVjdCAqYmFzZSkKK1B5TWVtb3J5Vmlld19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp2KQogewotICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXZpZXc7Ci0gICAgUHlfYnVmZmVyIHZpZXc7CisgICAgX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZjsKIAotICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIoYmFzZSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbWFrZSBtZW1vcnkgdmlldyBiZWNhdXNlIG9iamVjdCBkb2VzICIKLSAgICAgICAgICAgICJub3QgaGF2ZSB0aGUgYnVmZmVyIGludGVyZmFjZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlNZW1vcnlWaWV3X0NoZWNrKHYpKSB7CisgICAgICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopdjsKKyAgICAgICAgQ0hFQ0tfUkVMRUFTRUQobXYpOworICAgICAgICByZXR1cm4gbWJ1Zl9hZGRfdmlldyhtdi0+bWJ1ZiwgJm12LT52aWV3KTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlPYmplY3RfQ2hlY2tCdWZmZXIodikpIHsKKyAgICAgICAgUHlPYmplY3QgKnJldDsKKyAgICAgICAgbWJ1ZiA9IChfUHlNYW5hZ2VkQnVmZmVyT2JqZWN0ICopX1B5TWFuYWdlZEJ1ZmZlcl9Gcm9tT2JqZWN0KHYpOworICAgICAgICBpZiAobWJ1ZiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldCA9IG1idWZfYWRkX3ZpZXcobWJ1ZiwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihtYnVmKTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKLSAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGJhc2UsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgbXZpZXcgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJnZpZXcpOwotICAgIGlmIChtdmlldyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopbXZpZXc7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6ICUuMjAwcyBvYmplY3QgZG9lcyBub3QgaGF2ZSB0aGUgYnVmZmVyIGludGVyZmFjZSIsCisgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCisvKiBDb3B5IHRoZSBmb3JtYXQgc3RyaW5nIGZyb20gYSBiYXNlIG9iamVjdCB0aGF0IG1pZ2h0IHZhbmlzaC4gKi8KK3N0YXRpYyBpbnQKK21idWZfY29weV9mb3JtYXQoX1B5TWFuYWdlZEJ1ZmZlck9iamVjdCAqbWJ1ZiwgY29uc3QgY2hhciAqZm10KQoreworICAgIGlmIChmbXQgIT0gTlVMTCkgeworICAgICAgICBjaGFyICpjcCA9IFB5TWVtX01hbGxvYyhzdHJsZW4oZm10KSsxKTsKKyAgICAgICAgaWYgKGNwID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWJ1Zi0+bWFzdGVyLmZvcm1hdCA9IHN0cmNweShjcCwgZm10KTsKKyAgICAgICAgbWJ1Zi0+ZmxhZ3MgfD0gX1B5X01BTkFHRURfQlVGRkVSX0ZSRUVfRk9STUFUOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICAgUmV0dXJuIGEgbWVtb3J5dmlldyB0aGF0IGlzIGJhc2VkIG9uIGEgY29udGlndW91cyBjb3B5IG9mIHNyYy4KKyAgIEFzc3VtcHRpb25zOiBzcmMgaGFzIFB5QlVGX0ZVTExfUk8gaW5mb3JtYXRpb24sIHNyYy0+bmRpbSA+IDAuCisKKyAgIE93bmVyc2hpcCBydWxlczoKKyAgICAgMSkgQXMgdXN1YWwsIHRoZSByZXR1cm5lZCBtZW1vcnl2aWV3IGhhcyBhIHByaXZhdGUgY29weQorICAgICAgICBvZiBzcmMtPnNoYXBlLCBzcmMtPnN0cmlkZXMgYW5kIHNyYy0+c3Vib2Zmc2V0cy4KKyAgICAgMikgc3JjLT5mb3JtYXQgaXMgY29waWVkIHRvIHRoZSBtYXN0ZXIgYnVmZmVyIGFuZCByZWxlYXNlZAorICAgICAgICBpbiBtYnVmX2RlYWxsb2MoKS4gVGhlIHJlbGVhc2VidWZmZXJwcm9jIG9mIHRoZSBieXRlcworICAgICAgICBvYmplY3QgaXMgTlVMTCwgc28gaXQgZG9lcyBub3QgbWF0dGVyIHRoYXQgbWJ1Zl9yZWxlYXNlKCkKKyAgICAgICAgcGFzc2VzIHRoZSBhbHRlcmVkIGZvcm1hdCBwb2ludGVyIHRvIFB5QnVmZmVyX1JlbGVhc2UoKS4KKyovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2Zyb21fY29udGlndW91c19jb3B5KFB5X2J1ZmZlciAqc3JjLCBjaGFyIG9yZGVyKQoreworICAgIF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKm1idWY7CisgICAgUHlNZW1vcnlWaWV3T2JqZWN0ICptdjsKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgUHlfYnVmZmVyICpkZXN0OworICAgIGludCBpOworCisgICAgYXNzZXJ0KHNyYy0+bmRpbSA+IDApOworICAgIGFzc2VydChzcmMtPnNoYXBlICE9IE5VTEwpOworCisgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNyYy0+bGVuKTsKKyAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBtYnVmID0gKF9QeU1hbmFnZWRCdWZmZXJPYmplY3QgKilfUHlNYW5hZ2VkQnVmZmVyX0Zyb21PYmplY3QoYnl0ZXMpOworICAgIFB5X0RFQ1JFRihieXRlcyk7CisgICAgaWYgKG1idWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAobWJ1Zl9jb3B5X2Zvcm1hdChtYnVmLCBzcmMtPmZvcm1hdCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihtYnVmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopbWJ1Zl9hZGRfaW5jb21wbGV0ZV92aWV3KG1idWYsIE5VTEwsIHNyYy0+bmRpbSk7CisgICAgUHlfREVDUkVGKG1idWYpOworICAgIGlmIChtdiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRlc3QgPSAmbXYtPnZpZXc7CisKKyAgICAvKiBzaGFyZWQgdmFsdWVzIGFyZSBpbml0aWFsaXplZCBjb3JyZWN0bHkgZXhjZXB0IGZvciBpdGVtc2l6ZSAqLworICAgIGRlc3QtPml0ZW1zaXplID0gc3JjLT5pdGVtc2l6ZTsKKworICAgIC8qIHNoYXBlIGFuZCBzdHJpZGVzICovCisgICAgZm9yIChpID0gMDsgaSA8IHNyYy0+bmRpbTsgaSsrKSB7CisgICAgICAgIGRlc3QtPnNoYXBlW2ldID0gc3JjLT5zaGFwZVtpXTsKKyAgICB9CisgICAgaWYgKG9yZGVyID09ICdDJyB8fCBvcmRlciA9PSAnQScpIHsKKyAgICAgICAgaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUoZGVzdCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpbml0X2ZvcnRyYW5fc3RyaWRlc19mcm9tX3NoYXBlKGRlc3QpOworICAgIH0KKyAgICAvKiBzdWJvZmZzZXRzICovCisgICAgZGVzdC0+c3Vib2Zmc2V0cyA9IE5VTEw7CisKKyAgICAvKiBmbGFncyAqLworICAgIGluaXRfZmxhZ3MobXYpOworCisgICAgaWYgKGNvcHlfYnVmZmVyKGRlc3QsIHNyYykgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihtdik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKK30KKworLyoKKyAgIFJldHVybiBhIG5ldyBtZW1vcnl2aWV3IG9iamVjdCBiYXNlZCBvbiBhIGNvbnRpZ3VvdXMgZXhwb3J0ZXIgd2l0aAorICAgYnVmZmVydHlwZT17UHlCVUZfUkVBRCwgUHlCVUZfV1JJVEV9IGFuZCBvcmRlcj17J0MnLCAnRidvcnRyYW4sIG9yICdBJ255fS4KKyAgIFRoZSBsb2dpY2FsIHN0cnVjdHVyZSBvZiB0aGUgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGlzIHRoZSBzYW1lCisgICAoaS5lLiB0b2xpc3QoaW5wdXQpID09IHRvbGlzdChvdXRwdXQpKSwgYnV0IHRoZSBwaHlzaWNhbCBsYXlvdXQgaW4KKyAgIG1lbW9yeSBjYW4gYmUgZXhwbGljaXRseSBjaG9zZW4uCisgCisgICBBcyB1c3VhbCwgaWYgYnVmZmVydHlwZT1QeUJVRl9XUklURSwgdGhlIGV4cG9ydGVyJ3MgYnVmZmVyIG11c3QgYmUgd3JpdGFibGUsCisgICBvdGhlcndpc2UgaXQgbWF5IGJlIHdyaXRhYmxlIG9yIHJlYWQtb25seS4KKworICAgSWYgdGhlIGV4cG9ydGVyIGlzIGFscmVhZHkgY29udGlndW91cyB3aXRoIHRoZSBkZXNpcmVkIHRhcmdldCBvcmRlciwKKyAgIHRoZSBtZW1vcnl2aWV3IHdpbGwgYmUgZGlyZWN0bHkgYmFzZWQgb24gdGhlIGV4cG9ydGVyLgorCisgICBPdGhlcndpc2UsIGlmIHRoZSBidWZmZXJ0eXBlIGlzIFB5QlVGX1JFQUQsIHRoZSBtZW1vcnl2aWV3IHdpbGwgYmUKKyAgIGJhc2VkIG9uIGEgbmV3IGJ5dGVzIG9iamVjdC4gSWYgb3JkZXI9eydDJywgJ0Enbnl9LCB1c2UgJ0MnIG9yZGVyLAorICAgJ0Ynb3J0cmFuIG9yZGVyIG90aGVyd2lzZS4KKyovCitQeU9iamVjdCAqCitQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqb2JqLCBpbnQgYnVmZmVydHlwZSwgY2hhciBvcmRlcikKK3sKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12OworICAgIFB5T2JqZWN0ICpyZXQ7CisgICAgUHlfYnVmZmVyICp2aWV3OworCisgICAgYXNzZXJ0KGJ1ZmZlcnR5cGUgPT0gUHlCVUZfUkVBRCB8fCBidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFKTsKKyAgICBhc3NlcnQob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdGJyB8fCBvcmRlciA9PSAnQScpOworCisgICAgbXYgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Qob2JqKTsKKyAgICBpZiAobXYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB2aWV3ID0gJm12LT52aWV3OworICAgIGlmIChidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFICYmIHZpZXctPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJ1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgUHlfREVDUkVGKG12KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBvcmRlcikpCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKiltdjsKKworICAgIGlmIChidWZmZXJ0eXBlID09IFB5QlVGX1dSSVRFKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJ3cml0YWJsZSBjb250aWd1b3VzIGJ1ZmZlciByZXF1ZXN0ZWQgIgorICAgICAgICAgICAgImZvciBhIG5vbi1jb250aWd1b3VzIG9iamVjdC4iKTsKKyAgICAgICAgUHlfREVDUkVGKG12KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0ID0gbWVtb3J5X2Zyb21fY29udGlndW91c19jb3B5KHZpZXcsIG9yZGVyKTsKKyAgICBQeV9ERUNSRUYobXYpOworICAgIHJldHVybiByZXQ7Cit9CisKKwogc3RhdGljIFB5T2JqZWN0ICoKIG1lbW9yeV9uZXcoUHlUeXBlT2JqZWN0ICpzdWJ0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKm9iajsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im9iamVjdCIsIDB9OworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsib2JqZWN0IiwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiTzptZW1vcnl2aWV3Iiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmopKSB7CkBAIC0xMzEsMjAzICs5NTksMTgzOCBAQAogfQogCiAKLXN0YXRpYyB2b2lkCi1fc3RyaWRlZF9jb3B5X25kKGNoYXIgKmRlc3QsIGNoYXIgKnNyYywgaW50IG5kLCBQeV9zc2l6ZV90ICpzaGFwZSwKLSAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RyaWRlcywgUHlfc3NpemVfdCBpdGVtc2l6ZSwgY2hhciBmb3J0KQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBQcmV2aW91c2x5IGluIGFic3RyYWN0LmMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlfYnVmZmVyIHZpZXc7CisgICAgUHlfc3NpemVfdCBhcnJheVsxXTsKK30gUHlfYnVmZmVyX2Z1bGw7CisKK2ludAorUHlCdWZmZXJfVG9Db250aWd1b3VzKHZvaWQgKmJ1ZiwgUHlfYnVmZmVyICpzcmMsIFB5X3NzaXplX3QgbGVuLCBjaGFyIG9yZGVyKQogewotICAgIGludCBrOwotICAgIFB5X3NzaXplX3Qgb3V0c3RyaWRlOworICAgIFB5X2J1ZmZlcl9mdWxsICpmYiA9IE5VTEw7CisgICAgaW50IHJldDsKIAotICAgIGlmIChuZD09MCkgewotICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBpdGVtc2l6ZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKG5kID09IDEpIHsKLSAgICAgICAgZm9yIChrID0gMDsgazxzaGFwZVswXTsgaysrKSB7Ci0gICAgICAgICAgICBtZW1jcHkoZGVzdCwgc3JjLCBpdGVtc2l6ZSk7Ci0gICAgICAgICAgICBkZXN0ICs9IGl0ZW1zaXplOwotICAgICAgICAgICAgc3JjICs9IHN0cmlkZXNbMF07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChmb3J0ID09ICdGJykgewotICAgICAgICAgICAgLyogQ29weSBmaXJzdCBkaW1lbnNpb24gZmlyc3QsCi0gICAgICAgICAgICAgICBzZWNvbmQgZGltZW5zaW9uIHNlY29uZCwgZXRjLi4uCi0gICAgICAgICAgICAgICBTZXQgdXAgdGhlIHJlY3Vyc2l2ZSBsb29wIGJhY2t3YXJkcyBzbyB0aGF0IGZpbmFsCi0gICAgICAgICAgICAgICBkaW1lbnNpb24gaXMgYWN0dWFsbHkgY29waWVkIGxhc3QuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgb3V0c3RyaWRlID0gaXRlbXNpemU7Ci0gICAgICAgICAgICBmb3IgKGs9MTsgazxuZC0xO2srKykgewotICAgICAgICAgICAgICAgIG91dHN0cmlkZSAqPSBzaGFwZVtrXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoaz0wOyBrPHNoYXBlW25kLTFdOyBrKyspIHsKLSAgICAgICAgICAgICAgICBfc3RyaWRlZF9jb3B5X25kKGRlc3QsIHNyYywgbmQtMSwgc2hhcGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpZGVzLCBpdGVtc2l6ZSwgZm9ydCk7Ci0gICAgICAgICAgICAgICAgZGVzdCArPSBvdXRzdHJpZGU7Ci0gICAgICAgICAgICAgICAgc3JjICs9IHN0cmlkZXNbbmQtMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBhc3NlcnQob3JkZXIgPT0gJ0MnIHx8IG9yZGVyID09ICdGJyB8fCBvcmRlciA9PSAnQScpOwogCi0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogQ29weSBsYXN0IGRpbWVuc2lvbiBmaXJzdCwKLSAgICAgICAgICAgICAgIHNlY29uZC10by1sYXN0IGRpbWVuc2lvbiBzZWNvbmQsIGV0Yy4KLSAgICAgICAgICAgICAgIFNldCB1cCB0aGUgcmVjdXJzaW9uIHNvIHRoYXQgdGhlCi0gICAgICAgICAgICAgICBmaXJzdCBkaW1lbnNpb24gaXMgY29waWVkIGxhc3QKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICBvdXRzdHJpZGUgPSBpdGVtc2l6ZTsKLSAgICAgICAgICAgIGZvciAoaz0xOyBrIDwgbmQ7IGsrKykgewotICAgICAgICAgICAgICAgIG91dHN0cmlkZSAqPSBzaGFwZVtrXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoaz0wOyBrPHNoYXBlWzBdOyBrKyspIHsKLSAgICAgICAgICAgICAgICBfc3RyaWRlZF9jb3B5X25kKGRlc3QsIHNyYywgbmQtMSwgc2hhcGUrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMrMSwgaXRlbXNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J0KTsKLSAgICAgICAgICAgICAgICBkZXN0ICs9IG91dHN0cmlkZTsKLSAgICAgICAgICAgICAgICBzcmMgKz0gc3RyaWRlc1swXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmIChsZW4gIT0gc3JjLT5sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAiUHlCdWZmZXJfVG9Db250aWd1b3VzOiBsZW4gIT0gdmlldy0+bGVuIik7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgcmV0dXJuOworCisgICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyhzcmMsIG9yZGVyKSkgeworICAgICAgICBtZW1jcHkoKGNoYXIgKilidWYsIHNyYy0+YnVmLCBsZW4pOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBidWZmZXJfdG9fY29udGlndW91cygpIGFzc3VtZXMgUHlCVUZfRlVMTCAqLworICAgIGZiID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqZmIgKyAzICogc3JjLT5uZGltICogKHNpemVvZiAqZmItPmFycmF5KSk7CisgICAgaWYgKGZiID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBmYi0+dmlldy5uZGltID0gc3JjLT5uZGltOworICAgIGZiLT52aWV3LnNoYXBlID0gZmItPmFycmF5OworICAgIGZiLT52aWV3LnN0cmlkZXMgPSBmYi0+YXJyYXkgKyBzcmMtPm5kaW07CisgICAgZmItPnZpZXcuc3Vib2Zmc2V0cyA9IGZiLT5hcnJheSArIDIgKiBzcmMtPm5kaW07CisKKyAgICBpbml0X3NoYXJlZF92YWx1ZXMoJmZiLT52aWV3LCBzcmMpOworICAgIGluaXRfc2hhcGVfc3RyaWRlcygmZmItPnZpZXcsIHNyYyk7CisgICAgaW5pdF9zdWJvZmZzZXRzKCZmYi0+dmlldywgc3JjKTsKKworICAgIHNyYyA9ICZmYi0+dmlldzsKKworICAgIHJldCA9IGJ1ZmZlcl90b19jb250aWd1b3VzKGJ1Ziwgc3JjLCBvcmRlcik7CisgICAgUHlNZW1fRnJlZShmYik7CisgICAgcmV0dXJuIHJldDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVsZWFzZS9HQyBtYW5hZ2VtZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIEluZm9ybSB0aGUgbWFuYWdlZCBidWZmZXIgdGhhdCB0aGlzIHBhcnRpY3VsYXIgbWVtb3J5dmlldyB3aWxsIG5vdCBhY2Nlc3MKKyAgIHRoZSB1bmRlcmx5aW5nIGJ1ZmZlciBhZ2Fpbi4gSWYgbm8gb3RoZXIgbWVtb3J5dmlld3MgYXJlIHJlZ2lzdGVyZWQgd2l0aAorICAgdGhlIG1hbmFnZWQgYnVmZmVyLCB0aGUgdW5kZXJseWluZyBidWZmZXIgaXMgcmVsZWFzZWQgaW5zdGFudGx5IGFuZAorICAgbWFya2VkIGFzIGluYWNjZXNzaWJsZSBmb3IgYm90aCB0aGUgbWVtb3J5dmlldyBhbmQgdGhlIG1hbmFnZWQgYnVmZmVyLgorCisgICBUaGlzIGZ1bmN0aW9uIGZhaWxzIGlmIHRoZSBtZW1vcnl2aWV3IGl0c2VsZiBoYXMgZXhwb3J0ZWQgYnVmZmVycy4gKi8KK3N0YXRpYyBpbnQKK19tZW1vcnlfcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmZsYWdzICYgX1B5X01FTU9SWVZJRVdfUkVMRUFTRUQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHNlbGYtPmV4cG9ydHMgPT0gMCkgeworICAgICAgICBzZWxmLT5mbGFncyB8PSBfUHlfTUVNT1JZVklFV19SRUxFQVNFRDsKKyAgICAgICAgYXNzZXJ0KHNlbGYtPm1idWYtPmV4cG9ydHMgPiAwKTsKKyAgICAgICAgaWYgKC0tc2VsZi0+bWJ1Zi0+ZXhwb3J0cyA9PSAwKQorICAgICAgICAgICAgbWJ1Zl9yZWxlYXNlKHNlbGYtPm1idWYpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHNlbGYtPmV4cG9ydHMgPiAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3IGhhcyAlemQgZXhwb3J0ZWQgYnVmZmVyJXMiLCBzZWxmLT5leHBvcnRzLAorICAgICAgICAgICAgc2VsZi0+ZXhwb3J0cz09MSA/ICIiIDogInMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIFB5X0ZhdGFsRXJyb3IoIl9tZW1vcnlfcmVsZWFzZSgpOiBuZWdhdGl2ZSBleHBvcnQgY291bnQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgaWYgKF9tZW1vcnlfcmVsZWFzZShzZWxmKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgdm9pZAorbWVtb3J5X2RlYWxsb2MoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIGFzc2VydChzZWxmLT5leHBvcnRzID09IDApOworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOworICAgICh2b2lkKV9tZW1vcnlfcmVsZWFzZShzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYnVmKTsKKyAgICBpZiAoc2VsZi0+d2Vha3JlZmxpc3QgIT0gTlVMTCkKKyAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgc2VsZik7CisgICAgUHlPYmplY3RfR0NfRGVsKHNlbGYpOwogfQogCiBzdGF0aWMgaW50Ci1faW5kaXJlY3RfY29weV9uZChjaGFyICpkZXN0LCBQeV9idWZmZXIgKnZpZXcsIGNoYXIgZm9ydCkKK21lbW9yeV90cmF2ZXJzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X3NzaXplX3QgKmluZGljZXM7Ci0gICAgaW50IGs7Ci0gICAgUHlfc3NpemVfdCBlbGVtZW50czsKLSAgICBjaGFyICpwdHI7Ci0gICAgdm9pZCAoKmZ1bmMpKGludCwgUHlfc3NpemVfdCAqLCBjb25zdCBQeV9zc2l6ZV90ICopOworICAgIFB5X1ZJU0lUKHNlbGYtPm1idWYpOworICAgIHJldHVybiAwOworfQogCi0gICAgaWYgKHZpZXctPm5kaW0gPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9zc2l6ZV90KSkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7CitzdGF0aWMgaW50CittZW1vcnlfY2xlYXIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgICh2b2lkKV9tZW1vcnlfcmVsZWFzZShzZWxmKTsKKyAgICBQeV9DTEVBUihzZWxmLT5tYnVmKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgUHlfSU5DUkVGKHNlbGYpOworICAgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBtZW1vcnlfcmVsZWFzZSgoUHlNZW1vcnlWaWV3T2JqZWN0ICopc2VsZiwgTlVMTCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICBDYXN0aW5nIGZvcm1hdCBhbmQgc2hhcGUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIElTX0JZVEVfRk9STUFUKGYpIChmID09ICdiJyB8fCBmID09ICdCJyB8fCBmID09ICdjJykKKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCitnZXRfbmF0aXZlX2ZtdGNoYXIoY2hhciAqcmVzdWx0LCBjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlfc3NpemVfdCBzaXplID0gLTE7CisKKyAgICBpZiAoZm10WzBdID09ICdAJykgZm10Kys7CisKKyAgICBzd2l0Y2ggKGZtdFswXSkgeworICAgIGNhc2UgJ2MnOiBjYXNlICdiJzogY2FzZSAnQic6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOworICAgIGNhc2UgJ2gnOiBjYXNlICdIJzogc2l6ZSA9IHNpemVvZihzaG9ydCk7IGJyZWFrOworICAgIGNhc2UgJ2knOiBjYXNlICdJJzogc2l6ZSA9IHNpemVvZihpbnQpOyBicmVhazsKKyAgICBjYXNlICdsJzogY2FzZSAnTCc6IHNpemUgPSBzaXplb2YobG9uZyk7IGJyZWFrOworICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOiBjYXNlICdRJzogc2l6ZSA9IHNpemVvZihQWV9MT05HX0xPTkcpOyBicmVhazsKKyAgICAjZW5kaWYKKyAgICBjYXNlICduJzogY2FzZSAnTic6IHNpemUgPSBzaXplb2YoUHlfc3NpemVfdCk7IGJyZWFrOworICAgIGNhc2UgJ2YnOiBzaXplID0gc2l6ZW9mKGZsb2F0KTsgYnJlYWs7CisgICAgY2FzZSAnZCc6IHNpemUgPSBzaXplb2YoZG91YmxlKTsgYnJlYWs7CisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICBjYXNlICc/Jzogc2l6ZSA9IHNpemVvZihfQm9vbCk7IGJyZWFrOworICAgICNlbHNlCisgICAgY2FzZSAnPyc6IHNpemUgPSBzaXplb2YoY2hhcik7IGJyZWFrOworICAgICNlbmRpZgorICAgIGNhc2UgJ1AnOiBzaXplID0gc2l6ZW9mKHZvaWQgKik7IGJyZWFrOwogICAgIH0KIAotICAgIGluZGljZXMgPSAoUHlfc3NpemVfdCAqKVB5TWVtX01hbGxvYyhzaXplb2YoUHlfc3NpemVfdCkqdmlldy0+bmRpbSk7Ci0gICAgaWYgKGluZGljZXMgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGZvciAoaz0wOyBrPHZpZXctPm5kaW07aysrKSB7Ci0gICAgICAgIGluZGljZXNba10gPSAwOworICAgIGlmIChzaXplID4gMCAmJiBmbXRbMV0gPT0gJ1wwJykgeworICAgICAgICAqcmVzdWx0ID0gZm10WzBdOworICAgICAgICByZXR1cm4gc2l6ZTsKICAgICB9CiAKLSAgICBlbGVtZW50cyA9IDE7Ci0gICAgZm9yIChrPTA7IGs8dmlldy0+bmRpbTsgaysrKSB7Ci0gICAgICAgIGVsZW1lbnRzICo9IHZpZXctPnNoYXBlW2tdOworICAgIHJldHVybiAtMTsKK30KKworLyogQ2FzdCBhIG1lbW9yeXZpZXcncyBkYXRhIHR5cGUgdG8gJ2Zvcm1hdCcuIFRoZSBpbnB1dCBhcnJheSBtdXN0IGJlCisgICBDLWNvbnRpZ3VvdXMuIEF0IGxlYXN0IG9uZSBvZiBpbnB1dC1mb3JtYXQsIG91dHB1dC1mb3JtYXQgbXVzdCBoYXZlCisgICBieXRlIHNpemUuIFRoZSBvdXRwdXQgYXJyYXkgaXMgMS1ELCB3aXRoIHRoZSBzYW1lIGJ5dGUgbGVuZ3RoIGFzIHRoZQorICAgaW5wdXQgYXJyYXkuIFRodXMsIHZpZXctPmxlbiBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIG5ldyBpdGVtc2l6ZS4gKi8KK3N0YXRpYyBpbnQKK2Nhc3RfdG9fMUQoUHlNZW1vcnlWaWV3T2JqZWN0ICptdiwgUHlPYmplY3QgKmZvcm1hdCkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgUHlPYmplY3QgKmFzY2lpZm10OworICAgIGNoYXIgc3JjY2hhciwgZGVzdGNoYXI7CisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA+PSAxKTsKKyAgICBhc3NlcnQoUHlfU0laRShtdikgPT0gMyp2aWV3LT5uZGltKTsKKyAgICBhc3NlcnQodmlldy0+c2hhcGUgPT0gbXYtPm9iX2FycmF5KTsKKyAgICBhc3NlcnQodmlldy0+c3RyaWRlcyA9PSBtdi0+b2JfYXJyYXkgKyB2aWV3LT5uZGltKTsKKyAgICBhc3NlcnQodmlldy0+c3Vib2Zmc2V0cyA9PSBtdi0+b2JfYXJyYXkgKyAyKnZpZXctPm5kaW0pOworCisgICAgaWYgKGdldF9uYXRpdmVfZm10Y2hhcigmc3JjY2hhciwgdmlldy0+Zm9ybWF0KSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogc291cmNlIGZvcm1hdCBtdXN0IGJlIGEgbmF0aXZlIHNpbmdsZSBjaGFyYWN0ZXIgIgorICAgICAgICAgICAgImZvcm1hdCBwcmVmaXhlZCB3aXRoIGFuIG9wdGlvbmFsICdAJyIpOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KLSAgICBpZiAoZm9ydCA9PSAnRicpIHsKLSAgICAgICAgZnVuYyA9IF9QeV9hZGRfb25lX3RvX2luZGV4X0Y7CisKKyAgICBhc2NpaWZtdCA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKGZvcm1hdCk7CisgICAgaWYgKGFzY2lpZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICBpdGVtc2l6ZSA9IGdldF9uYXRpdmVfZm10Y2hhcigmZGVzdGNoYXIsIFB5Qnl0ZXNfQVNfU1RSSU5HKGFzY2lpZm10KSk7CisgICAgaWYgKGl0ZW1zaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBkZXN0aW5hdGlvbiBmb3JtYXQgbXVzdCBiZSBhIG5hdGl2ZSBzaW5nbGUgIgorICAgICAgICAgICAgImNoYXJhY3RlciBmb3JtYXQgcHJlZml4ZWQgd2l0aCBhbiBvcHRpb25hbCAnQCciKTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKCFJU19CWVRFX0ZPUk1BVChzcmNjaGFyKSAmJiAhSVNfQllURV9GT1JNQVQoZGVzdGNoYXIpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogY2Fubm90IGNhc3QgYmV0d2VlbiB0d28gbm9uLWJ5dGUgZm9ybWF0cyIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgaWYgKHZpZXctPmxlbiAlIGl0ZW1zaXplKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogbGVuZ3RoIGlzIG5vdCBhIG11bHRpcGxlIG9mIGl0ZW1zaXplIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIHN0cm5jcHkobXYtPmZvcm1hdCwgUHlCeXRlc19BU19TVFJJTkcoYXNjaWlmbXQpLAorICAgICAgICAgICAgX1B5X01FTU9SWVZJRVdfTUFYX0ZPUk1BVCk7CisgICAgbXYtPmZvcm1hdFtfUHlfTUVNT1JZVklFV19NQVhfRk9STUFULTFdID0gJ1wwJzsKKyAgICB2aWV3LT5mb3JtYXQgPSBtdi0+Zm9ybWF0OworICAgIHZpZXctPml0ZW1zaXplID0gaXRlbXNpemU7CisKKyAgICB2aWV3LT5uZGltID0gMTsKKyAgICB2aWV3LT5zaGFwZVswXSA9IHZpZXctPmxlbiAvIHZpZXctPml0ZW1zaXplOworICAgIHZpZXctPnN0cmlkZXNbMF0gPSB2aWV3LT5pdGVtc2l6ZTsKKyAgICB2aWV3LT5zdWJvZmZzZXRzID0gTlVMTDsKKworICAgIGluaXRfZmxhZ3MobXYpOworIAorICAgIHJldCA9IDA7CisKK291dDoKKyAgICBQeV9ERUNSRUYoYXNjaWlmbXQpOworICAgIHJldHVybiByZXQ7Cit9CisKKy8qIFRoZSBtZW1vcnl2aWV3IG11c3QgaGF2ZSBzcGFjZSBmb3IgMypsZW4oc2VxKSBlbGVtZW50cy4gKi8KK3N0YXRpYyBQeV9zc2l6ZV90Citjb3B5X3NoYXBlKFB5X3NzaXplX3QgKnNoYXBlLCBjb25zdCBQeU9iamVjdCAqc2VxLCBQeV9zc2l6ZV90IG5kaW0sCisgICAgICAgICAgIFB5X3NzaXplX3QgaXRlbXNpemUpCit7CisgICAgUHlfc3NpemVfdCB4LCBpOworICAgIFB5X3NzaXplX3QgbGVuID0gaXRlbXNpemU7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodG1wKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldy5jYXN0KCk6IGVsZW1lbnRzIG9mIHNoYXBlIG11c3QgYmUgaW50ZWdlcnMiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB4ID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgICAgICBpZiAoeCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHggPD0gMCkgeworICAgICAgICAgICAgLyogSW4gZ2VuZXJhbCBlbGVtZW50cyBvZiBzaGFwZSBtYXkgYmUgMCwgYnV0IG5vdCBmb3IgY2FzdGluZy4gKi8KKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3LmNhc3QoKTogZWxlbWVudHMgb2Ygc2hhcGUgbXVzdCBiZSBpbnRlZ2VycyA+IDAiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoeCA+IFBZX1NTSVpFX1RfTUFYIC8gbGVuKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldy5jYXN0KCk6IHByb2R1Y3Qoc2hhcGUpID4gU1NJWkVfTUFYIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbGVuICo9IHg7CisgICAgICAgIHNoYXBlW2ldID0geDsKKyAgICB9CisKKyAgICByZXR1cm4gbGVuOworfQorCisvKiBDYXN0IGEgMS1EIGFycmF5IHRvIGEgbmV3IHNoYXBlLiBUaGUgcmVzdWx0IGFycmF5IHdpbGwgYmUgQy1jb250aWd1b3VzLgorICAgSWYgdGhlIHJlc3VsdCBhcnJheSBkb2VzIG5vdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgYnl0ZSBsZW5ndGggYXMgdGhlCisgICBpbnB1dCBhcnJheSwgcmFpc2UgVmFsdWVFcnJvci4gKi8KK3N0YXRpYyBpbnQKK2Nhc3RfdG9fTkQoUHlNZW1vcnlWaWV3T2JqZWN0ICptdiwgY29uc3QgUHlPYmplY3QgKnNoYXBlLCBpbnQgbmRpbSkKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBhc3NlcnQodmlldy0+bmRpbSA9PSAxKTsgLyogbmRpbSBmcm9tIGNhc3RfdG9fMUQoKSAqLworICAgIGFzc2VydChQeV9TSVpFKG12KSA9PSAzKihuZGltPT0wPzE6bmRpbSkpOyAvKiBuZGltIG9mIHJlc3VsdCBhcnJheSAqLworICAgIGFzc2VydCh2aWV3LT5zaGFwZSA9PSBtdi0+b2JfYXJyYXkpOworICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzID09IG12LT5vYl9hcnJheSArIChuZGltPT0wPzE6bmRpbSkpOworICAgIGFzc2VydCh2aWV3LT5zdWJvZmZzZXRzID09IE5VTEwpOworCisgICAgdmlldy0+bmRpbSA9IG5kaW07CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CisgICAgICAgIHZpZXctPnN0cmlkZXMgPSBOVUxMOworICAgICAgICBsZW4gPSB2aWV3LT5pdGVtc2l6ZTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGZ1bmMgPSBfUHlfYWRkX29uZV90b19pbmRleF9DOwotICAgIH0KLSAgICB3aGlsZSAoZWxlbWVudHMtLSkgewotICAgICAgICBmdW5jKHZpZXctPm5kaW0sIGluZGljZXMsIHZpZXctPnNoYXBlKTsKLSAgICAgICAgcHRyID0gUHlCdWZmZXJfR2V0UG9pbnRlcih2aWV3LCBpbmRpY2VzKTsKLSAgICAgICAgbWVtY3B5KGRlc3QsIHB0ciwgdmlldy0+aXRlbXNpemUpOwotICAgICAgICBkZXN0ICs9IHZpZXctPml0ZW1zaXplOworICAgICAgICBsZW4gPSBjb3B5X3NoYXBlKHZpZXctPnNoYXBlLCBzaGFwZSwgbmRpbSwgdmlldy0+aXRlbXNpemUpOworICAgICAgICBpZiAobGVuIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaW5pdF9zdHJpZGVzX2Zyb21fc2hhcGUodmlldyk7CiAgICAgfQogCi0gICAgUHlNZW1fRnJlZShpbmRpY2VzKTsKKyAgICBpZiAodmlldy0+bGVuICE9IGxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXc6IHByb2R1Y3Qoc2hhcGUpICogaXRlbXNpemUgIT0gYnVmZmVyIHNpemUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGluaXRfZmxhZ3MobXYpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3plcm9faW5fc2hhcGUoUHlNZW1vcnlWaWV3T2JqZWN0ICptdikKK3sKKyAgICBQeV9idWZmZXIgKnZpZXcgPSAmbXYtPnZpZXc7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IHZpZXctPm5kaW07IGkrKykKKyAgICAgICAgaWYgKHZpZXctPnNoYXBlW2ldID09IDApCisgICAgICAgICAgICByZXR1cm4gMTsKKwogICAgIHJldHVybiAwOwogfQogCiAvKgotICAgR2V0IGEgdGhlIGRhdGEgZnJvbSBhbiBvYmplY3QgYXMgYSBjb250aWd1b3VzIGNodW5rIG9mIG1lbW9yeSAoaW4KLSAgIGVpdGhlciAnQycgb3IgJ0Ynb3J0cmFuIG9yZGVyKSBldmVuIGlmIGl0IG1lYW5zIGNvcHlpbmcgaXQgaW50byBhCi0gICBzZXBhcmF0ZSBtZW1vcnkgYXJlYS4KKyAgIENhc3QgYSBjb3B5IG9mICdzZWxmJyB0byBhIGRpZmZlcmVudCB2aWV3LiBUaGUgaW5wdXQgdmlldyBtdXN0CisgICBiZSBDLWNvbnRpZ3VvdXMuIFRoZSBmdW5jdGlvbiBhbHdheXMgY2FzdHMgdGhlIGlucHV0IHZpZXcgdG8gYQorICAgMS1EIG91dHB1dCBhY2NvcmRpbmcgdG8gJ2Zvcm1hdCcuIEF0IGxlYXN0IG9uZSBvZiBpbnB1dC1mb3JtYXQsCisgICBvdXRwdXQtZm9ybWF0IG11c3QgaGF2ZSBieXRlIHNpemUuCiAKLSAgIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlIHRvIGEgTWVtb3J5IHZpZXcgb2JqZWN0LiAgSWYgbm8gY29weSBpcyBuZWVkZWQsCi0gICB0aGUgbWVtb3J5IHZpZXcgb2JqZWN0IHBvaW50cyB0byB0aGUgb3JpZ2luYWwgbWVtb3J5IGFuZCBob2xkcyBhCi0gICBsb2NrIG9uIHRoZSBvcmlnaW5hbC4gIElmIGEgY29weSBpcyBuZWVkZWQsIHRoZW4gdGhlIG1lbW9yeSB2aWV3IG9iamVjdAotICAgcG9pbnRzIHRvIGEgYnJhbmQtbmV3IEJ5dGVzIG9iamVjdCAoYW5kIGhvbGRzIGEgbWVtb3J5IGxvY2sgb24gaXQpLgorICAgSWYgJ3NoYXBlJyBpcyBnaXZlbiwgdGhlIDEtRCB2aWV3IGZyb20gdGhlIHByZXZpb3VzIHN0ZXAgd2lsbAorICAgYmUgY2FzdCB0byBhIEMtY29udGlndW91cyB2aWV3IHdpdGggbmV3IHNoYXBlIGFuZCBzdHJpZGVzLgogCi0gICBidWZmZXJ0eXBlCi0KLSAgIFB5QlVGX1JFQUQgIGJ1ZmZlciBvbmx5IG5lZWRzIHRvIGJlIHJlYWQtb25seQotICAgUHlCVUZfV1JJVEUgYnVmZmVyIG5lZWRzIHRvIGJlIHdyaXRhYmxlIChnaXZlIGVycm9yIGlmIG5vdCBjb250aWd1b3VzKQotICAgUHlCVUZfU0hBRE9XIGJ1ZmZlciBuZWVkcyB0byBiZSB3cml0YWJsZSBzbyBzaGFkb3cgaXQgd2l0aAotICAgICAgICAgICAgICAgIGEgY29udGlndW91cyBidWZmZXIgaWYgaXQgaXMgbm90LiBUaGUgdmlldyB3aWxsIHBvaW50IHRvCi0gICAgICAgICAgICAgICAgdGhlIHNoYWRvdyBidWZmZXIgd2hpY2ggY2FuIGJlIHdyaXR0ZW4gdG8gYW5kIHRoZW4KLSAgICAgICAgICAgICAgICB3aWxsIGJlIGNvcGllZCBiYWNrIGludG8gdGhlIG90aGVyIGJ1ZmZlciB3aGVuIHRoZSBtZW1vcnkKLSAgICAgICAgICAgICAgICB2aWV3IGlzIGRlLWFsbG9jYXRlZC4gIFdoaWxlIHRoZSBzaGFkb3cgYnVmZmVyIGlzCi0gICAgICAgICAgICAgICAgYmVpbmcgdXNlZCwgaXQgd2lsbCBoYXZlIGFuIGV4Y2x1c2l2ZSB3cml0ZSBsb2NrIG9uCi0gICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIGJ1ZmZlci4KLSAqLwotCi1QeU9iamVjdCAqCi1QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cyhQeU9iamVjdCAqb2JqLCBpbnQgYnVmZmVydHlwZSwgY2hhciBmb3J0KQorICAgQWxsIGNhc3RzIG11c3QgcmVzdWx0IGluIHZpZXdzIHRoYXQgd2lsbCBoYXZlIHRoZSBleGFjdCBieXRlCisgICBzaXplIG9mIHRoZSBvcmlnaW5hbCBpbnB1dC4gT3RoZXJ3aXNlLCBhbiBlcnJvciBpcyByYWlzZWQuCisqLworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9jYXN0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5TWVtb3J5Vmlld09iamVjdCAqbWVtOwotICAgIFB5T2JqZWN0ICpieXRlczsKLSAgICBQeV9idWZmZXIgKnZpZXc7Ci0gICAgaW50IGZsYWdzOwotICAgIGNoYXIgKmRlc3Q7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmb3JtYXQiLCAic2hhcGUiLCBOVUxMfTsKKyAgICBQeU1lbW9yeVZpZXdPYmplY3QgKm12ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2hhcGUgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmb3JtYXQ7CisgICAgUHlfc3NpemVfdCBuZGltID0gMTsKIAotICAgIGlmICghUHlPYmplY3RfQ2hlY2tCdWZmZXIob2JqKSkgeworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TyIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAmc2hhcGUpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhmb3JtYXQpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGJ1ZmZlciBpbnRlcmZhY2UiKTsKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBmb3JtYXQgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0KLSAgICBtZW0gPSBQeU9iamVjdF9HQ19OZXcoUHlNZW1vcnlWaWV3T2JqZWN0LCAmUHlNZW1vcnlWaWV3X1R5cGUpOwotICAgIGlmIChtZW0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB2aWV3ID0gJm1lbS0+dmlldzsKLSAgICBmbGFncyA9IFB5QlVGX0ZVTExfUk87Ci0gICAgc3dpdGNoKGJ1ZmZlcnR5cGUpIHsKLSAgICBjYXNlIFB5QlVGX1dSSVRFOgotICAgICAgICBmbGFncyA9IFB5QlVGX0ZVTEw7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIob2JqLCB2aWV3LCBmbGFncykgIT0gMCkgewotICAgICAgICBQeV9ERUNSRUYobWVtKTsKKyAgICBpZiAoIU1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYXN0cyBhcmUgcmVzdHJpY3RlZCB0byBDLWNvbnRpZ3VvdXMgdmlld3MiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotCi0gICAgaWYgKFB5QnVmZmVyX0lzQ29udGlndW91cyh2aWV3LCBmb3J0KSkgewotICAgICAgICAvKiBubyBjb3B5IG5lZWRlZCAqLwotICAgICAgICBfUHlPYmplY3RfR0NfVFJBQ0sobWVtKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW1lbTsKLSAgICB9Ci0gICAgLyogb3RoZXJ3aXNlIGEgY29weSBpcyBuZWVkZWQgKi8KLSAgICBpZiAoYnVmZmVydHlwZSA9PSBQeUJVRl9XUklURSkgewotICAgICAgICBQeV9ERUNSRUYobWVtKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0J1ZmZlckVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRhYmxlIGNvbnRpZ3VvdXMgYnVmZmVyIHJlcXVlc3RlZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9yIGEgbm9uLWNvbnRpZ3VvdXNvYmplY3QuIik7CisgICAgaWYgKHplcm9faW5fc2hhcGUoc2VsZikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYW5ub3QgY2FzdCB2aWV3IHdpdGggemVyb3MgaW4gc2hhcGUgb3Igc3RyaWRlcyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXctPmxlbik7Ci0gICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG1lbSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBkZXN0ID0gUHlCeXRlc19BU19TVFJJTkcoYnl0ZXMpOwotICAgIC8qIGRpZmZlcmVudCBjb3B5aW5nIHN0cmF0ZWd5IGRlcGVuZGluZyBvbiB3aGV0aGVyCi0gICAgICAgb3Igbm90IGFueSBwb2ludGVyIGRlLXJlZmVyZW5jaW5nIGlzIG5lZWRlZAotICAgICovCi0gICAgLyogc3RyaWRlZCBvciBpbi1kaXJlY3QgY29weSAqLwotICAgIGlmICh2aWV3LT5zdWJvZmZzZXRzPT1OVUxMKSB7Ci0gICAgICAgIF9zdHJpZGVkX2NvcHlfbmQoZGVzdCwgdmlldy0+YnVmLCB2aWV3LT5uZGltLCB2aWV3LT5zaGFwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LT5zdHJpZGVzLCB2aWV3LT5pdGVtc2l6ZSwgZm9ydCk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoX2luZGlyZWN0X2NvcHlfbmQoZGVzdCwgdmlldywgZm9ydCkgPCAwKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKG1lbSk7CisgICAgaWYgKHNoYXBlKSB7CisgICAgICAgIENIRUNLX0xJU1RfT1JfVFVQTEUoc2hhcGUpCisgICAgICAgIG5kaW0gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc2hhcGUpOworICAgICAgICBpZiAobmRpbSA+IFB5QlVGX01BWF9ORElNKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldzogbnVtYmVyIG9mIGRpbWVuc2lvbnMgbXVzdCBub3QgZXhjZWVkICIKKyAgICAgICAgICAgICAgICBTVFJJTkdJWkUoUHlCVUZfTUFYX05ESU0pKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2Uodmlldyk7ICAvKiBYWFggPyAqLworICAgICAgICBpZiAoc2VsZi0+dmlldy5uZGltICE9IDEgJiYgbmRpbSAhPSAxKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJtZW1vcnl2aWV3OiBjYXN0IG11c3QgYmUgMUQgLT4gTkQgb3IgTkQgLT4gMUQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQotICAgIF9QeU9iamVjdF9HQ19UUkFDSyhtZW0pOwotICAgIHJldHVybiAoUHlPYmplY3QgKiltZW07CisKKyAgICBtdiA9IChQeU1lbW9yeVZpZXdPYmplY3QgKikKKyAgICAgICAgbWJ1Zl9hZGRfaW5jb21wbGV0ZV92aWV3KHNlbGYtPm1idWYsICZzZWxmLT52aWV3LCBuZGltPT0wID8gMSA6IChpbnQpbmRpbSk7CisgICAgaWYgKG12ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKGNhc3RfdG9fMUQobXYsIGZvcm1hdCkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChzaGFwZSAmJiBjYXN0X3RvX05EKG12LCBzaGFwZSwgKGludCluZGltKSA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopbXY7CisKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihtdik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0YnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50CittZW1vcnlfZ2V0YnVmKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgUHlfYnVmZmVyICpiYXNlID0gJnNlbGYtPnZpZXc7CisgICAgaW50IGJhc2VmbGFncyA9IHNlbGYtPmZsYWdzOworCisgICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOworCisgICAgLyogc3RhcnQgd2l0aCBjb21wbGV0ZSBpbmZvcm1hdGlvbiAqLworICAgICp2aWV3ID0gKmJhc2U7CisgICAgdmlldy0+b2JqID0gTlVMTDsKKworICAgIGlmIChSRVFfV1JJVEFCTEUoZmxhZ3MpICYmIGJhc2UtPnJlYWRvbmx5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3Qgd3JpdGFibGUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoIVJFUV9GT1JNQVQoZmxhZ3MpKSB7CisgICAgICAgIC8qIE5VTEwgaW5kaWNhdGVzIHRoYXQgdGhlIGJ1ZmZlcidzIGRhdGEgdHlwZSBoYXMgYmVlbiBjYXN0IHRvICdCJy4KKyAgICAgICAgICAgdmlldy0+aXRlbXNpemUgaXMgdGhlIF9wcmV2aW91c18gaXRlbXNpemUuIElmIHNoYXBlIGlzIHByZXNlbnQsCisgICAgICAgICAgIHRoZSBlcXVhbGl0eSBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIHN0aWxsIGhvbGRzIGF0IHRoaXMKKyAgICAgICAgICAgcG9pbnQuIFRoZSBlcXVhbGl0eSBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUgZG9lcyBfbm90XyBob2xkCisgICAgICAgICAgIGZyb20gaGVyZSBvbiEgKi8KKyAgICAgICAgdmlldy0+Zm9ybWF0ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUkVRX0NfQ09OVElHVU9VUyhmbGFncykgJiYgIU1WX0NfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgQy1jb250aWd1b3VzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFJFUV9GX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFNVl9GX0NPTlRJR1VPVVMoYmFzZWZsYWdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IEZvcnRyYW4gY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChSRVFfQU5ZX0NPTlRJR1VPVVMoZmxhZ3MpICYmICFNVl9BTllfQ09OVElHVU9VUyhiYXNlZmxhZ3MpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICJtZW1vcnl2aWV3OiB1bmRlcmx5aW5nIGJ1ZmZlciBpcyBub3QgY29udGlndW91cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX0lORElSRUNUKGZsYWdzKSAmJiAoYmFzZWZsYWdzICYgX1B5X01FTU9SWVZJRVdfUElMKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgcmVxdWlyZXMgc3Vib2Zmc2V0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUkVRX1NUUklERVMoZmxhZ3MpKSB7CisgICAgICAgIGlmICghTVZfQ19DT05USUdVT1VTKGJhc2VmbGFncykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19CdWZmZXJFcnJvciwKKyAgICAgICAgICAgICAgICAibWVtb3J5dmlldzogdW5kZXJseWluZyBidWZmZXIgaXMgbm90IEMtY29udGlndW91cyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHZpZXctPnN0cmlkZXMgPSBOVUxMOworICAgIH0KKyAgICBpZiAoIVJFUV9TSEFQRShmbGFncykpIHsKKyAgICAgICAgLyogUHlCVUZfU0lNUExFIG9yIFB5QlVGX1dSSVRBQkxFOiBhdCB0aGlzIHBvaW50IGJ1ZiBpcyBDLWNvbnRpZ3VvdXMsCisgICAgICAgICAgIHNvIGJhc2UtPmJ1ZiA9IG5kYnVmLT5kYXRhLiAqLworICAgICAgICBpZiAodmlldy0+Zm9ybWF0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIFB5QlVGX1NJTVBMRXxQeUJVRl9GT1JNQVQgYW5kIFB5QlVGX1dSSVRBQkxFfFB5QlVGX0ZPUk1BVCBkbworICAgICAgICAgICAgICAgbm90IG1ha2Ugc2Vuc2UuICovCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQnVmZmVyRXJyb3IsCisgICAgICAgICAgICAgICAgIm5kYXJyYXk6IGNhbm5vdCBjYXN0IHRvIHVuc2lnbmVkIGJ5dGVzIGlmIHRoZSBmb3JtYXQgZmxhZyAiCisgICAgICAgICAgICAgICAgImlzIHByZXNlbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKiBwcm9kdWN0KHNoYXBlKSAqIGl0ZW1zaXplID0gbGVuIGFuZCBjYWxjc2l6ZShmb3JtYXQpID0gaXRlbXNpemUKKyAgICAgICAgICAgZG8gX25vdF8gaG9sZCBmcm9tIGhlcmUgb24hICovCisgICAgICAgIHZpZXctPm5kaW0gPSAxOworICAgICAgICB2aWV3LT5zaGFwZSA9IE5VTEw7CisgICAgfQorCisKKyAgICB2aWV3LT5vYmogPSAoUHlPYmplY3QgKilzZWxmOworICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIHNlbGYtPmV4cG9ydHMrKzsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorbWVtb3J5X3JlbGVhc2VidWYoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKnZpZXcpCit7CisgICAgc2VsZi0+ZXhwb3J0cy0tOworICAgIHJldHVybjsKKyAgICAvKiBQeUJ1ZmZlcl9SZWxlYXNlKCkgZGVjcmVtZW50cyB2aWV3LT5vYmogYWZ0ZXIgdGhpcyBmdW5jdGlvbiByZXR1cm5zLiAqLworfQorCisvKiBCdWZmZXIgbWV0aG9kcyAqLworc3RhdGljIFB5QnVmZmVyUHJvY3MgbWVtb3J5X2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYyltZW1vcnlfZ2V0YnVmLCAgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLworICAgIChyZWxlYXNlYnVmZmVycHJvYyltZW1vcnlfcmVsZWFzZWJ1ZiwgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworfTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qICAgICAgICAgICBPcHRpbWl6ZWQgcGFjay91bnBhY2sgZm9yIGFsbCBuYXRpdmUgZm9ybWF0IHNwZWNpZmllcnMgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgIEZpeCBleGNlcHRpb25zOgorICAgICAxKSBJbmNsdWRlIGZvcm1hdCBzdHJpbmcgaW4gdGhlIGVycm9yIG1lc3NhZ2UuCisgICAgIDIpIE92ZXJmbG93RXJyb3IgLT4gVmFsdWVFcnJvci4KKyAgICAgMykgVGhlIGVycm9yIG1lc3NhZ2UgZnJvbSBQeU51bWJlcl9JbmRleCgpIGlzIG5vdCBpZGVhbC4KKyovCitzdGF0aWMgaW50Cit0eXBlX2Vycm9yX2ludChjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGludmFsaWQgdHlwZSBmb3IgZm9ybWF0ICclcyciLCBmbXQpOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIGludAordmFsdWVfZXJyb3JfaW50KGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgIm1lbW9yeXZpZXc6IGludmFsaWQgdmFsdWUgZm9yIGZvcm1hdCAnJXMnIiwgZm10KTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3N0YXRpYyBpbnQKK2ZpeF9lcnJvcl9pbnQoY29uc3QgY2hhciAqZm10KQoreworICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIHJldHVybiB0eXBlX2Vycm9yX2ludChmbXQpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpIHx8CisgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19WYWx1ZUVycm9yKSkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KGZtdCk7CisgICAgfQorCisgICAgcmV0dXJuIC0xOworfQorCisvKiBBY2NlcHQgaW50ZWdlciBvYmplY3RzIG9yIG9iamVjdHMgd2l0aCBhbiBfX2luZGV4X18oKSBtZXRob2QuICovCitzdGF0aWMgbG9uZworcHlsb25nX2FzX2xkKFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgbG9uZyBsZDsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbGQgPSBQeUxvbmdfQXNMb25nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIGxkOworfQorCitzdGF0aWMgdW5zaWduZWQgbG9uZworcHlsb25nX2FzX2x1KFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgdW5zaWduZWQgbG9uZyBsdTsKKworICAgIHRtcCA9IFB5TnVtYmVyX0luZGV4KGl0ZW0pOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKS0xOworCisgICAgbHUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcodG1wKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gbHU7Cit9CisKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworc3RhdGljIFBZX0xPTkdfTE9ORworcHlsb25nX2FzX2xsZChQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGxsZCA9IFB5TG9uZ19Bc0xvbmdMb25nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIGxsZDsKK30KKworc3RhdGljIHVuc2lnbmVkIFBZX0xPTkdfTE9ORworcHlsb25nX2FzX2xsdShQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBsbHU7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xOworCisgICAgbGx1ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBsbHU7Cit9CisjZW5kaWYKKworc3RhdGljIFB5X3NzaXplX3QKK3B5bG9uZ19hc196ZChQeU9iamVjdCAqaXRlbSkKK3sKKyAgICBQeU9iamVjdCAqdG1wOworICAgIFB5X3NzaXplX3QgemQ7CisKKyAgICB0bXAgPSBQeU51bWJlcl9JbmRleChpdGVtKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHpkID0gUHlMb25nX0FzU3NpemVfdCh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiB6ZDsKK30KKworc3RhdGljIHNpemVfdAorcHlsb25nX2FzX3p1KFB5T2JqZWN0ICppdGVtKQoreworICAgIFB5T2JqZWN0ICp0bXA7CisgICAgc2l6ZV90IHp1OworCisgICAgdG1wID0gUHlOdW1iZXJfSW5kZXgoaXRlbSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKHNpemVfdCktMTsKKworICAgIHp1ID0gUHlMb25nX0FzU2l6ZV90KHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHp1OworfQorCisvKiBUaW1pbmdzIHdpdGggdGhlIG5kYXJyYXkgZnJvbSBfdGVzdGJ1ZmZlci5jIGluZGljYXRlIHRoYXQgdXNpbmcgdGhlCisgICBzdHJ1Y3QgbW9kdWxlIGlzIGFyb3VuZCAxNXggc2xvd2VyIHRoYW4gdGhlIHR3byBmdW5jdGlvbnMgYmVsb3cuICovCisKKyNkZWZpbmUgVU5QQUNLX1NJTkdMRShkZXN0LCBwdHIsIHR5cGUpIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHR5cGUgeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtZW1jcHkoKGNoYXIgKikmeCwgcHRyLCBzaXplb2YgeCk7IFwKKyAgICAgICAgZGVzdCA9IHg7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworLyogVW5wYWNrIGEgc2luZ2xlIGl0ZW0uICdmbXQnIGNhbiBiZSBhbnkgbmF0aXZlIGZvcm1hdCBjaGFyYWN0ZXIgaW4gc3RydWN0CisgICBtb2R1bGUgc3ludGF4LiBUaGlzIGZ1bmN0aW9uIGlzIHZlcnkgc2Vuc2l0aXZlIHRvIHNtYWxsIGNoYW5nZXMuIFdpdGggdGhpcworICAgbGF5b3V0IGdjYyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBhIGZhc3QganVtcCB0YWJsZS4gKi8KK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQordW5wYWNrX3NpbmdsZShjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbHU7CisgICAgc2l6ZV90IHp1OworICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsZDsKKyAgICBQeV9zc2l6ZV90IHpkOworICAgIGRvdWJsZSBkOworICAgIHVuc2lnbmVkIGNoYXIgdWM7CisgICAgdm9pZCAqcDsKKworICAgIHN3aXRjaCAoZm10WzBdKSB7CisKKyAgICAvKiBzaWduZWQgaW50ZWdlcnMgYW5kIGZhc3QgcGF0aCBmb3IgJ0InICovCisgICAgY2FzZSAnQic6IHVjID0gKigodW5zaWduZWQgY2hhciAqKXB0cik7IGdvdG8gY29udmVydF91YzsKKyAgICBjYXNlICdiJzogbGQgPSAgICooKHNpZ25lZCBjaGFyICopcHRyKTsgZ290byBjb252ZXJ0X2xkOworICAgIGNhc2UgJ2gnOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIHNob3J0KTsgZ290byBjb252ZXJ0X2xkOworICAgIGNhc2UgJ2knOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGludCk7IGdvdG8gY29udmVydF9sZDsKKyAgICBjYXNlICdsJzogVU5QQUNLX1NJTkdMRShsZCwgcHRyLCBsb25nKTsgZ290byBjb252ZXJ0X2xkOworCisgICAgLyogYm9vbGVhbiAqLworICAgICNpZmRlZiBIQVZFX0M5OV9CT09MCisgICAgY2FzZSAnPyc6IFVOUEFDS19TSU5HTEUobGQsIHB0ciwgX0Jvb2wpOyBnb3RvIGNvbnZlcnRfYm9vbDsKKyAgICAjZWxzZQorICAgIGNhc2UgJz8nOiBVTlBBQ0tfU0lOR0xFKGxkLCBwdHIsIGNoYXIpOyBnb3RvIGNvbnZlcnRfYm9vbDsKKyAgICAjZW5kaWYKKworICAgIC8qIHVuc2lnbmVkIGludGVnZXJzICovCisgICAgY2FzZSAnSCc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgc2hvcnQpOyBnb3RvIGNvbnZlcnRfbHU7CisgICAgY2FzZSAnSSc6IFVOUEFDS19TSU5HTEUobHUsIHB0ciwgdW5zaWduZWQgaW50KTsgZ290byBjb252ZXJ0X2x1OworICAgIGNhc2UgJ0wnOiBVTlBBQ0tfU0lOR0xFKGx1LCBwdHIsIHVuc2lnbmVkIGxvbmcpOyBnb3RvIGNvbnZlcnRfbHU7CisKKyAgICAvKiBuYXRpdmUgNjQtYml0ICovCisgICAgI2lmZGVmIEhBVkVfTE9OR19MT05HCisgICAgY2FzZSAncSc6IFVOUEFDS19TSU5HTEUobGxkLCBwdHIsIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbGQ7CisgICAgY2FzZSAnUSc6IFVOUEFDS19TSU5HTEUobGx1LCBwdHIsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7IGdvdG8gY29udmVydF9sbHU7CisgICAgI2VuZGlmCisKKyAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KKyAgICBjYXNlICduJzogVU5QQUNLX1NJTkdMRSh6ZCwgcHRyLCBQeV9zc2l6ZV90KTsgZ290byBjb252ZXJ0X3pkOworICAgIGNhc2UgJ04nOiBVTlBBQ0tfU0lOR0xFKHp1LCBwdHIsIHNpemVfdCk7IGdvdG8gY29udmVydF96dTsKKworICAgIC8qIGZsb2F0cyAqLworICAgIGNhc2UgJ2YnOiBVTlBBQ0tfU0lOR0xFKGQsIHB0ciwgZmxvYXQpOyBnb3RvIGNvbnZlcnRfZG91YmxlOworICAgIGNhc2UgJ2QnOiBVTlBBQ0tfU0lOR0xFKGQsIHB0ciwgZG91YmxlKTsgZ290byBjb252ZXJ0X2RvdWJsZTsKKworICAgIC8qIGJ5dGVzIG9iamVjdCAqLworICAgIGNhc2UgJ2MnOiBnb3RvIGNvbnZlcnRfYnl0ZXM7CisKKyAgICAvKiBwb2ludGVyICovCisgICAgY2FzZSAnUCc6IFVOUEFDS19TSU5HTEUocCwgcHRyLCB2b2lkICopOyBnb3RvIGNvbnZlcnRfcG9pbnRlcjsKKworICAgIC8qIGRlZmF1bHQgKi8KKyAgICBkZWZhdWx0OiBnb3RvIGVycl9mb3JtYXQ7CisgICAgfQorCitjb252ZXJ0X3VjOgorICAgIC8qIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nKCkgaXMgc2xvd2VyICovCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZyh1Yyk7Citjb252ZXJ0X2xkOgorICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobGQpOworY29udmVydF9sdToKKyAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcobHUpOworY29udmVydF9sbGQ6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcobGxkKTsKK2NvbnZlcnRfbGx1OgorICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcobGx1KTsKK2NvbnZlcnRfemQ6CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdCh6ZCk7Citjb252ZXJ0X3p1OgorICAgIHJldHVybiBQeUxvbmdfRnJvbVNpemVfdCh6dSk7Citjb252ZXJ0X2RvdWJsZToKKyAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKGQpOworY29udmVydF9ib29sOgorICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcobGQpOworY29udmVydF9ieXRlczoKKyAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwdHIsIDEpOworY29udmVydF9wb2ludGVyOgorICAgIHJldHVybiBQeUxvbmdfRnJvbVZvaWRQdHIocCk7CitlcnJfZm9ybWF0OgorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAibWVtb3J5dmlldzogZm9ybWF0ICVzIG5vdCBzdXBwb3J0ZWQiLCBmbXQpOworICAgIHJldHVybiBOVUxMOworfQorCisjZGVmaW5lIFBBQ0tfU0lOR0xFKHB0ciwgc3JjLCB0eXBlKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHR5cGUgeDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHggPSAodHlwZSlzcmM7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1lbWNweShwdHIsIChjaGFyICopJngsIHNpemVvZiB4KTsgICBcCisgICAgfSB3aGlsZSAoMCkKKworLyogUGFjayBhIHNpbmdsZSBpdGVtLiAnZm10JyBjYW4gYmUgYW55IG5hdGl2ZSBmb3JtYXQgY2hhcmFjdGVyIGluCisgICBzdHJ1Y3QgbW9kdWxlIHN5bnRheC4gKi8KK3N0YXRpYyBpbnQKK3BhY2tfc2luZ2xlKGNoYXIgKnB0ciwgUHlPYmplY3QgKml0ZW0sIGNvbnN0IGNoYXIgKmZtdCkKK3sKKyAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgbGx1OworICAgIHVuc2lnbmVkIGxvbmcgbHU7CisgICAgc2l6ZV90IHp1OworICAgIFBZX0xPTkdfTE9ORyBsbGQ7CisgICAgbG9uZyBsZDsKKyAgICBQeV9zc2l6ZV90IHpkOworICAgIGRvdWJsZSBkOworICAgIHZvaWQgKnA7CisKKyAgICBzd2l0Y2ggKGZtdFswXSkgeworICAgIC8qIHNpZ25lZCBpbnRlZ2VycyAqLworICAgIGNhc2UgJ2InOiBjYXNlICdoJzogY2FzZSAnaSc6IGNhc2UgJ2wnOgorICAgICAgICBsZCA9IHB5bG9uZ19hc19sZChpdGVtKTsKKyAgICAgICAgaWYgKGxkID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgc3dpdGNoIChmbXRbMF0pIHsKKyAgICAgICAgY2FzZSAnYic6CisgICAgICAgICAgICBpZiAobGQgPCBTQ0hBUl9NSU4gfHwgbGQgPiBTQ0hBUl9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgKigoc2lnbmVkIGNoYXIgKilwdHIpID0gKHNpZ25lZCBjaGFyKWxkOyBicmVhazsKKyAgICAgICAgY2FzZSAnaCc6CisgICAgICAgICAgICBpZiAobGQgPCBTSFJUX01JTiB8fCBsZCA+IFNIUlRfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIHNob3J0KTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgaWYgKGxkIDwgSU5UX01JTiB8fCBsZCA+IElOVF9NQVgpIGdvdG8gZXJyX3JhbmdlOworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgaW50KTsgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6IC8qICdsJyAqLworICAgICAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgbG9uZyk7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgLyogdW5zaWduZWQgaW50ZWdlcnMgKi8KKyAgICBjYXNlICdCJzogY2FzZSAnSCc6IGNhc2UgJ0knOiBjYXNlICdMJzoKKyAgICAgICAgbHUgPSBweWxvbmdfYXNfbHUoaXRlbSk7CisgICAgICAgIGlmIChsdSA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIHN3aXRjaCAoZm10WzBdKSB7CisgICAgICAgIGNhc2UgJ0InOgorICAgICAgICAgICAgaWYgKGx1ID4gVUNIQVJfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgICooKHVuc2lnbmVkIGNoYXIgKilwdHIpID0gKHVuc2lnbmVkIGNoYXIpbHU7IGJyZWFrOworICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgICAgIGlmIChsdSA+IFVTSFJUX01BWCkgZ290byBlcnJfcmFuZ2U7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGx1LCB1bnNpZ25lZCBzaG9ydCk7IGJyZWFrOworICAgICAgICBjYXNlICdJJzoKKyAgICAgICAgICAgIGlmIChsdSA+IFVJTlRfTUFYKSBnb3RvIGVycl9yYW5nZTsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbHUsIHVuc2lnbmVkIGludCk7IGJyZWFrOworICAgICAgICBkZWZhdWx0OiAvKiAnTCcgKi8KKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbHUsIHVuc2lnbmVkIGxvbmcpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIC8qIG5hdGl2ZSA2NC1iaXQgKi8KKyAgICAjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICBjYXNlICdxJzoKKyAgICAgICAgbGxkID0gcHlsb25nX2FzX2xsZChpdGVtKTsKKyAgICAgICAgaWYgKGxsZCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGxkLCBQWV9MT05HX0xPTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICdRJzoKKyAgICAgICAgbGx1ID0gcHlsb25nX2FzX2xsdShpdGVtKTsKKyAgICAgICAgaWYgKGxsdSA9PSAodW5zaWduZWQgUFlfTE9OR19MT05HKS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsbHUsIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyk7CisgICAgICAgIGJyZWFrOworICAgICNlbmRpZgorCisgICAgLyogc3NpemVfdCBhbmQgc2l6ZV90ICovCisgICAgY2FzZSAnbic6CisgICAgICAgIHpkID0gcHlsb25nX2FzX3pkKGl0ZW0pOworICAgICAgICBpZiAoemQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIGdvdG8gZXJyX29jY3VycmVkOworICAgICAgICBQQUNLX1NJTkdMRShwdHIsIHpkLCBQeV9zc2l6ZV90KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnTic6CisgICAgICAgIHp1ID0gcHlsb25nX2FzX3p1KGl0ZW0pOworICAgICAgICBpZiAoenUgPT0gKHNpemVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgenUsIHNpemVfdCk7CisgICAgICAgIGJyZWFrOworCisgICAgLyogZmxvYXRzICovCisgICAgY2FzZSAnZic6IGNhc2UgJ2QnOgorICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShpdGVtKTsKKyAgICAgICAgaWYgKGQgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBlcnJfb2NjdXJyZWQ7CisgICAgICAgIGlmIChmbXRbMF0gPT0gJ2YnKSB7CisgICAgICAgICAgICBQQUNLX1NJTkdMRShwdHIsIGQsIGZsb2F0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgZCwgZG91YmxlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIC8qIGJvb2wgKi8KKyAgICBjYXNlICc/JzoKKyAgICAgICAgbGQgPSBQeU9iamVjdF9Jc1RydWUoaXRlbSk7CisgICAgICAgIGlmIChsZCA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7IC8qIHByZXNlcnZlIG9yaWdpbmFsIGVycm9yICovCisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBsZCwgX0Jvb2wpOworICAgICNlbHNlCisgICAgICAgIFBBQ0tfU0lOR0xFKHB0ciwgbGQsIGNoYXIpOworICAgICNlbmRpZgorICAgICAgICAgYnJlYWs7CisKKyAgICAvKiBieXRlcyBvYmplY3QgKi8KKyAgICBjYXNlICdjJzoKKyAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGl0ZW0pKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVfZXJyb3JfaW50KGZtdCk7CisgICAgICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKGl0ZW0pICE9IDEpCisgICAgICAgICAgICByZXR1cm4gdmFsdWVfZXJyb3JfaW50KGZtdCk7CisgICAgICAgICpwdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhpdGVtKVswXTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAvKiBwb2ludGVyICovCisgICAgY2FzZSAnUCc6CisgICAgICAgIHAgPSBQeUxvbmdfQXNWb2lkUHRyKGl0ZW0pOworICAgICAgICBpZiAocCA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycl9vY2N1cnJlZDsKKyAgICAgICAgUEFDS19TSU5HTEUocHRyLCBwLCB2b2lkICopOworICAgICAgICBicmVhazsKKworICAgIC8qIGRlZmF1bHQgKi8KKyAgICBkZWZhdWx0OiBnb3RvIGVycl9mb3JtYXQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisKK2Vycl9vY2N1cnJlZDoKKyAgICByZXR1cm4gZml4X2Vycm9yX2ludChmbXQpOworZXJyX3JhbmdlOgorICAgIHJldHVybiB2YWx1ZV9lcnJvcl9pbnQoZm10KTsKK2Vycl9mb3JtYXQ6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBmb3JtYXQgJXMgbm90IHN1cHBvcnRlZCIsIGZtdCk7CisgICAgcmV0dXJuIC0xOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgIHVucGFjayB1c2luZyB0aGUgc3RydWN0IG1vZHVsZSAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogRm9yIHJlYXNvbmFibGUgcGVyZm9ybWFuY2UgaXQgaXMgbmVjZXNzYXJ5IHRvIGNhY2hlIGFsbCBvYmplY3RzIHJlcXVpcmVkCisgICBmb3IgdW5wYWNraW5nLiBBbiB1bnBhY2tlciBjYW4gaGFuZGxlIHRoZSBmb3JtYXQgcGFzc2VkIHRvIHVucGFja19mcm9tKCkuCisgICBJbnZhcmlhbnQ6IEFsbCBwb2ludGVyIGZpZWxkcyBvZiB0aGUgc3RydWN0IHNob3VsZCBlaXRoZXIgYmUgTlVMTCBvciB2YWxpZAorICAgcG9pbnRlcnMuICovCitzdHJ1Y3QgdW5wYWNrZXIgeworICAgIFB5T2JqZWN0ICp1bnBhY2tfZnJvbTsgLyogU3RydWN0LnVucGFja19mcm9tKGZvcm1hdCkgKi8KKyAgICBQeU9iamVjdCAqbXZpZXc7ICAgICAgIC8qIGNhY2hlZCBtZW1vcnl2aWV3ICovCisgICAgY2hhciAqaXRlbTsgICAgICAgICAgICAvKiBidWZmZXIgZm9yIG12aWV3ICovCisgICAgUHlfc3NpemVfdCBpdGVtc2l6ZTsgICAvKiBsZW4oaXRlbSkgKi8KK307CisKK3N0YXRpYyBzdHJ1Y3QgdW5wYWNrZXIgKgordW5wYWNrZXJfbmV3KHZvaWQpCit7CisgICAgc3RydWN0IHVucGFja2VyICp4ID0gUHlNZW1fTWFsbG9jKHNpemVvZiAqeCk7CisKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHgtPnVucGFja19mcm9tID0gTlVMTDsKKyAgICB4LT5tdmlldyA9IE5VTEw7CisgICAgeC0+aXRlbSA9IE5VTEw7CisgICAgeC0+aXRlbXNpemUgPSAwOworCisgICAgcmV0dXJuIHg7Cit9CisKK3N0YXRpYyB2b2lkCit1bnBhY2tlcl9mcmVlKHN0cnVjdCB1bnBhY2tlciAqeCkKK3sKKyAgICBpZiAoeCkgeworICAgICAgICBQeV9YREVDUkVGKHgtPnVucGFja19mcm9tKTsKKyAgICAgICAgUHlfWERFQ1JFRih4LT5tdmlldyk7CisgICAgICAgIFB5TWVtX0ZyZWUoeC0+aXRlbSk7CisgICAgICAgIFB5TWVtX0ZyZWUoeCk7CisgICAgfQorfQorCisvKiBSZXR1cm4gYSBuZXcgdW5wYWNrZXIgZm9yIHRoZSBnaXZlbiBmb3JtYXQuICovCitzdGF0aWMgc3RydWN0IHVucGFja2VyICoKK3N0cnVjdF9nZXRfdW5wYWNrZXIoY29uc3QgY2hhciAqZm10LCBQeV9zc2l6ZV90IGl0ZW1zaXplKQoreworICAgIFB5T2JqZWN0ICpzdHJ1Y3Rtb2R1bGU7ICAgICAvKiBYWFggY2FjaGUgdGhlc2UgdHdvICovCisgICAgUHlPYmplY3QgKlN0cnVjdCA9IE5VTEw7ICAgIC8qIFhYWCBpbiBnbG9iYWxzPyAgICAgKi8KKyAgICBQeU9iamVjdCAqc3RydWN0b2JqID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZm9ybWF0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgdW5wYWNrZXIgKnggPSBOVUxMOworCisgICAgc3RydWN0bW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJzdHJ1Y3QiKTsKKyAgICBpZiAoc3RydWN0bW9kdWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgU3RydWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhzdHJ1Y3Rtb2R1bGUsICJTdHJ1Y3QiKTsKKyAgICBQeV9ERUNSRUYoc3RydWN0bW9kdWxlKTsKKyAgICBpZiAoU3RydWN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgeCA9IHVucGFja2VyX25ldygpOworICAgIGlmICh4ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBmb3JtYXQgPSBQeUJ5dGVzX0Zyb21TdHJpbmcoZm10KTsKKyAgICBpZiAoZm9ybWF0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBzdHJ1Y3RvYmogPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKFN0cnVjdCwgZm9ybWF0LCBOVUxMKTsKKyAgICBpZiAoc3RydWN0b2JqID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB4LT51bnBhY2tfZnJvbSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RydWN0b2JqLCAidW5wYWNrX2Zyb20iKTsKKyAgICBpZiAoeC0+dW5wYWNrX2Zyb20gPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHgtPml0ZW0gPSBQeU1lbV9NYWxsb2MoaXRlbXNpemUpOworICAgIGlmICh4LT5pdGVtID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgeC0+aXRlbXNpemUgPSBpdGVtc2l6ZTsKKworICAgIHgtPm12aWV3ID0gUHlNZW1vcnlWaWV3X0Zyb21NZW1vcnkoeC0+aXRlbSwgaXRlbXNpemUsIFB5QlVGX1dSSVRFKTsKKyAgICBpZiAoeC0+bXZpZXcgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKworCitvdXQ6CisgICAgUHlfWERFQ1JFRihTdHJ1Y3QpOworICAgIFB5X1hERUNSRUYoZm9ybWF0KTsKKyAgICBQeV9YREVDUkVGKHN0cnVjdG9iaik7CisgICAgcmV0dXJuIHg7CisKK2Vycm9yOgorICAgIHVucGFja2VyX2ZyZWUoeCk7CisgICAgeCA9IE5VTEw7CisgICAgZ290byBvdXQ7Cit9CisKKy8qIHVucGFjayBhIHNpbmdsZSBpdGVtICovCitzdGF0aWMgUHlPYmplY3QgKgorc3RydWN0X3VucGFja19zaW5nbGUoY29uc3QgY2hhciAqcHRyLCBzdHJ1Y3QgdW5wYWNrZXIgKngpCit7CisgICAgUHlPYmplY3QgKnY7CisKKyAgICBtZW1jcHkoeC0+aXRlbSwgcHRyLCB4LT5pdGVtc2l6ZSk7CisgICAgdiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoeC0+dW5wYWNrX2Zyb20sIHgtPm12aWV3LCBOVUxMKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKHYpID09IDEpIHsKKyAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VHVwbGVfR0VUX0lURU0odiwgMCk7CisgICAgICAgIFB5X0lOQ1JFRih0bXApOworICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIHJldHVybiB0bXA7CisgICAgfQorCisgICAgcmV0dXJuIHY7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcHJlc2VudGF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBhbGxvdyBleHBsaWNpdCBmb3JtIG9mIG5hdGl2ZSBmb3JtYXQgKi8KK1B5X0xPQ0FMX0lOTElORShjb25zdCBjaGFyICopCithZGp1c3RfZm10KGNvbnN0IFB5X2J1ZmZlciAqdmlldykKK3sKKyAgICBjb25zdCBjaGFyICpmbXQ7CisKKyAgICBmbXQgPSAodmlldy0+Zm9ybWF0WzBdID09ICdAJykgPyB2aWV3LT5mb3JtYXQrMSA6IHZpZXctPmZvcm1hdDsKKyAgICBpZiAoZm10WzBdICYmIGZtdFsxXSA9PSAnXDAnKQorICAgICAgICByZXR1cm4gZm10OworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiB1bnN1cHBvcnRlZCBmb3JtYXQgJXMiLCB2aWV3LT5mb3JtYXQpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBCYXNlIGNhc2UgZm9yIG11bHRpLWRpbWVuc2lvbmFsIHVucGFja2luZy4gQXNzdW1wdGlvbjogbmRpbSA9PSAxLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3RvbGlzdF9iYXNlKGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLAorICAgICAgICAgICAgY29uc3QgY2hhciAqZm10KQoreworICAgIFB5T2JqZWN0ICpsc3QsICppdGVtOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGxzdCA9IFB5TGlzdF9OZXcoc2hhcGVbMF0pOworICAgIGlmIChsc3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2hhcGVbMF07IHB0cis9c3RyaWRlc1swXSwgaSsrKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKnhwdHIgPSBBREpVU1RfUFRSKHB0ciwgc3Vib2Zmc2V0cyk7CisgICAgICAgIGl0ZW0gPSB1bnBhY2tfc2luZ2xlKHhwdHIsIGZtdCk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxzdCwgaSwgaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIGxzdDsKK30KKworLyogVW5wYWNrIGEgbXVsdGktZGltZW5zaW9uYWwgYXJyYXkgaW50byBhIG5lc3RlZCBsaXN0LgorICAgQXNzdW1wdGlvbjogbmRpbSA+PSAxLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3RvbGlzdF9yZWMoY29uc3QgY2hhciAqcHRyLCBQeV9zc2l6ZV90IG5kaW0sIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpzdWJvZmZzZXRzLAorICAgICAgICAgICBjb25zdCBjaGFyICpmbXQpCit7CisgICAgUHlPYmplY3QgKmxzdCwgKml0ZW07CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXNzZXJ0KG5kaW0gPj0gMSk7CisgICAgYXNzZXJ0KHNoYXBlICE9IE5VTEwpOworICAgIGFzc2VydChzdHJpZGVzICE9IE5VTEwpOworCisgICAgaWYgKG5kaW0gPT0gMSkKKyAgICAgICAgcmV0dXJuIHRvbGlzdF9iYXNlKHB0ciwgc2hhcGUsIHN0cmlkZXMsIHN1Ym9mZnNldHMsIGZtdCk7CisKKyAgICBsc3QgPSBQeUxpc3RfTmV3KHNoYXBlWzBdKTsKKyAgICBpZiAobHN0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwdHIrPXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cHRyID0gQURKVVNUX1BUUihwdHIsIHN1Ym9mZnNldHMpOworICAgICAgICBpdGVtID0gdG9saXN0X3JlYyh4cHRyLCBuZGltLTEsIHNoYXBlKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlkZXMrMSwgc3Vib2Zmc2V0cyA/IHN1Ym9mZnNldHMrMSA6IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsc3QpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxzdCwgaSwgaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIGxzdDsKK30KKworLyogUmV0dXJuIGEgbGlzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVtb3J5dmlldy4gQ3VycmVudGx5IG9ubHkgYnVmZmVycworICAgd2l0aCBuYXRpdmUgZm9ybWF0IHN0cmluZ3MgYXJlIHN1cHBvcnRlZC4gKi8KK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfdG9saXN0KFB5TWVtb3J5Vmlld09iamVjdCAqbXYsIFB5T2JqZWN0ICpub2FyZ3MpCit7CisgICAgY29uc3QgUHlfYnVmZmVyICp2aWV3ID0gJihtdi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworCisgICAgQ0hFQ0tfUkVMRUFTRUQobXYpOworCisgICAgZm10ID0gYWRqdXN0X2ZtdCh2aWV3KTsKKyAgICBpZiAoZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKKyAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUodmlldy0+YnVmLCBmbXQpOworICAgIH0KKyAgICBlbHNlIGlmICh2aWV3LT5uZGltID09IDEpIHsKKyAgICAgICAgcmV0dXJuIHRvbGlzdF9iYXNlKHZpZXctPmJ1Ziwgdmlldy0+c2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LT5zdHJpZGVzLCB2aWV3LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB0b2xpc3RfcmVjKHZpZXctPmJ1Ziwgdmlldy0+bmRpbSwgdmlldy0+c2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXctPnN0cmlkZXMsIHZpZXctPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCk7CisgICAgfQorfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3RvYnl0ZXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgUHlfYnVmZmVyICpzcmMgPSBWSUVXX0FERFIoc2VsZik7CisgICAgUHlPYmplY3QgKmJ5dGVzID0gTlVMTDsKKworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKE1WX0NfQ09OVElHVU9VUyhzZWxmLT5mbGFncykpIHsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoc3JjLT5idWYsIHNyYy0+bGVuKTsKKyAgICB9CisKKyAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc3JjLT5sZW4pOworICAgIGlmIChieXRlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChidWZmZXJfdG9fY29udGlndW91cyhQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIHNyYywgJ0MnKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGJ5dGVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3JlcHIoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChzZWxmLT5mbGFncyAmIF9QeV9NRU1PUllWSUVXX1JFTEVBU0VEKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxyZWxlYXNlZCBtZW1vcnkgYXQgJXA+Iiwgc2VsZik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtZW1vcnkgYXQgJXA+Iiwgc2VsZik7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4aW5nIGFuZCBzbGljaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKiBHZXQgdGhlIHBvaW50ZXIgdG8gdGhlIGl0ZW0gYXQgaW5kZXguICovCitzdGF0aWMgY2hhciAqCitwdHJfZnJvbV9pbmRleChQeV9idWZmZXIgKnZpZXcsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgY2hhciAqcHRyOworICAgIFB5X3NzaXplX3Qgbml0ZW1zOyAvKiBpdGVtcyBpbiB0aGUgZmlyc3QgZGltZW5zaW9uICovCisKKyAgICBhc3NlcnQodmlldy0+c2hhcGUpOworICAgIGFzc2VydCh2aWV3LT5zdHJpZGVzKTsKKworICAgIG5pdGVtcyA9IHZpZXctPnNoYXBlWzBdOworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggKz0gbml0ZW1zOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG5pdGVtcykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcHRyID0gKGNoYXIgKil2aWV3LT5idWY7CisgICAgcHRyICs9IHZpZXctPnN0cmlkZXNbMF0gKiBpbmRleDsKKworICAgIHB0ciA9IEFESlVTVF9QVFIocHRyLCB2aWV3LT5zdWJvZmZzZXRzKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKKy8qIFJldHVybiB0aGUgaXRlbSBhdCBpbmRleC4gSW4gYSBvbmUtZGltZW5zaW9uYWwgdmlldywgdGhpcyBpcyBhbiBvYmplY3QKKyAgIHdpdGggdGhlIHR5cGUgc3BlY2lmaWVkIGJ5IHZpZXctPmZvcm1hdC4gT3RoZXJ3aXNlLCB0aGUgaXRlbSBpcyBhIHN1Yi12aWV3LgorICAgVGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gbWVtb3J5X3N1YnNjcmlwdCgpIGFuZCBtZW1vcnlfYXNfc2VxdWVuY2UuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X2l0ZW0oUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgY29uc3QgY2hhciAqZm10OworCisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisKKyAgICBmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgIGlmIChmbXQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMSkgeworICAgICAgICBjaGFyICpwdHIgPSBwdHJfZnJvbV9pbmRleCh2aWV3LCBpbmRleCk7CisgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gdW5wYWNrX3NpbmdsZShwdHIsIGZtdCk7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICJtdWx0aS1kaW1lbnNpb25hbCBzdWItdmlld3MgYXJlIG5vdCBpbXBsZW1lbnRlZCIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQoraW5pdF9zbGljZShQeV9idWZmZXIgKmJhc2UsIFB5T2JqZWN0ICprZXksIGludCBkaW0pCit7CisgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CisKKyAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoa2V5LCBiYXNlLT5zaGFwZVtkaW1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgaWYgKGJhc2UtPnN1Ym9mZnNldHMgPT0gTlVMTCB8fCBkaW0gPT0gMCkgeworICAgIGFkanVzdF9idWY6CisgICAgICAgIGJhc2UtPmJ1ZiA9IChjaGFyICopYmFzZS0+YnVmICsgYmFzZS0+c3RyaWRlc1tkaW1dICogc3RhcnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4gPSBkaW0tMTsKKyAgICAgICAgd2hpbGUgKG4gPj0gMCAmJiBiYXNlLT5zdWJvZmZzZXRzW25dIDwgMCkKKyAgICAgICAgICAgIG4tLTsKKyAgICAgICAgaWYgKG4gPCAwKQorICAgICAgICAgICAgZ290byBhZGp1c3RfYnVmOyAvKiBhbGwgc3Vib2Zmc2V0cyBhcmUgbmVnYXRpdmUgKi8KKyAgICAgICAgYmFzZS0+c3Vib2Zmc2V0c1tuXSA9IGJhc2UtPnN1Ym9mZnNldHNbbl0gKyBiYXNlLT5zdHJpZGVzW2RpbV0gKiBzdGFydDsKKyAgICB9CisgICAgYmFzZS0+c2hhcGVbZGltXSA9IHNsaWNlbGVuZ3RoOworICAgIGJhc2UtPnN0cmlkZXNbZGltXSA9IGJhc2UtPnN0cmlkZXNbZGltXSAqIHN0ZXA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoraXNfbXVsdGlzbGljZShQeU9iamVjdCAqa2V5KQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKKworICAgIGlmICghUHlUdXBsZV9DaGVjayhrZXkpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBzaXplID0gUHlUdXBsZV9HRVRfU0laRShrZXkpOworICAgIGlmIChzaXplID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqeCA9IFB5VHVwbGVfR0VUX0lURU0oa2V5LCBpKTsKKyAgICAgICAgaWYgKCFQeVNsaWNlX0NoZWNrKHgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCisvKiBtdltvYmpdIHJldHVybnMgYW4gb2JqZWN0IGhvbGRpbmcgdGhlIGRhdGEgZm9yIG9uZSBlbGVtZW50IGlmIG9iagorICAgZnVsbHkgaW5kZXhlcyB0aGUgbWVtb3J5dmlldyBvciBhbm90aGVyIG1lbW9yeXZpZXcgb2JqZWN0IGlmIGl0CisgICBkb2VzIG5vdC4KKworICAgMC1kIG1lbW9yeXZpZXcgb2JqZWN0cyBjYW4gYmUgcmVmZXJlbmNlZCB1c2luZyBtdlsuLi5dIG9yIG12WygpXQorICAgYnV0IG5vdCB3aXRoIGFueXRoaW5nIGVsc2UuICovCitzdGF0aWMgUHlPYmplY3QgKgorbWVtb3J5X3N1YnNjcmlwdChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCit7CisgICAgUHlfYnVmZmVyICp2aWV3OworICAgIHZpZXcgPSAmKHNlbGYtPnZpZXcpOworICAgIAorICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworCisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KSA9PSAwKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyICpmbXQgPSBhZGp1c3RfZm10KHZpZXcpOworICAgICAgICAgICAgaWYgKGZtdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIHVucGFja19zaW5nbGUodmlldy0+YnVmLCBmbXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtleSA9PSBQeV9FbGxpcHNpcykgeworICAgICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOworICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXNlbGY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoUHlJbmRleF9DaGVjayhrZXkpKSB7CisgICAgICAgIFB5X3NzaXplX3QgaW5kZXg7CisgICAgICAgIGluZGV4ID0gUHlOdW1iZXJfQXNTc2l6ZV90KGtleSwgUHlFeGNfSW5kZXhFcnJvcik7CisgICAgICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBtZW1vcnlfaXRlbShzZWxmLCBpbmRleCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgeworICAgICAgICBQeU1lbW9yeVZpZXdPYmplY3QgKnNsaWNlZDsKKworICAgICAgICBzbGljZWQgPSAoUHlNZW1vcnlWaWV3T2JqZWN0ICopbWJ1Zl9hZGRfdmlldyhzZWxmLT5tYnVmLCB2aWV3KTsKKyAgICAgICAgaWYgKHNsaWNlZCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgaWYgKGluaXRfc2xpY2UoJnNsaWNlZC0+dmlldywga2V5LCAwKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzbGljZWQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaW5pdF9sZW4oJnNsaWNlZC0+dmlldyk7CisgICAgICAgIGluaXRfZmxhZ3Moc2xpY2VkKTsKKworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2xpY2VkOworICAgIH0KKyAgICBlbHNlIGlmIChpc19tdWx0aXNsaWNlKGtleSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAibXVsdGktZGltZW5zaW9uYWwgc2xpY2luZyBpcyBub3QgaW1wbGVtZW50ZWQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1lbW9yeXZpZXc6IGludmFsaWQgc2xpY2Uga2V5Iik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBpbnQKK21lbW9yeV9hc3Nfc3ViKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQoreworICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7CisgICAgUHlfYnVmZmVyIHNyYzsKKyAgICBjb25zdCBjaGFyICpmbXQ7CisgICAgY2hhciAqcHRyOworCisgICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOworCisgICAgZm10ID0gYWRqdXN0X2ZtdCh2aWV3KTsKKyAgICBpZiAoZm10ID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmICh2aWV3LT5yZWFkb25seSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY2Fubm90IG1vZGlmeSByZWFkLW9ubHkgbWVtb3J5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImNhbm5vdCBkZWxldGUgbWVtb3J5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHZpZXctPm5kaW0gPT0gMCkgeworICAgICAgICBpZiAoa2V5ID09IFB5X0VsbGlwc2lzIHx8CisgICAgICAgICAgICAoUHlUdXBsZV9DaGVjayhrZXkpICYmIFB5VHVwbGVfR0VUX1NJWkUoa2V5KT09MCkpIHsKKyAgICAgICAgICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOworICAgICAgICAgICAgcmV0dXJuIHBhY2tfc2luZ2xlKHB0ciwgdmFsdWUsIGZtdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJpbnZhbGlkIGluZGV4aW5nIG9mIDAtZGltIG1lbW9yeSIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCisgICAgICAgICAgICAibWVtb3J5dmlldyBhc3NpZ25tZW50cyBhcmUgY3VycmVudGx5IHJlc3RyaWN0ZWQgdG8gbmRpbSA9IDEiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIFB5RXhjX0luZGV4RXJyb3IpOworICAgICAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcHRyID0gcHRyX2Zyb21faW5kZXgodmlldywgaW5kZXgpOworICAgICAgICBpZiAocHRyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBwYWNrX3NpbmdsZShwdHIsIHZhbHVlLCBmbXQpOworICAgIH0KKyAgICAvKiBvbmUtZGltZW5zaW9uYWw6IGZhc3QgcGF0aCAqLworICAgIGlmIChQeVNsaWNlX0NoZWNrKGtleSkgJiYgdmlldy0+bmRpbSA9PSAxKSB7CisgICAgICAgIFB5X2J1ZmZlciBkZXN0OyAvKiBzbGljZWQgdmlldyAqLworICAgICAgICBQeV9zc2l6ZV90IGFycmF5c1szXTsKKyAgICAgICAgaW50IHJldCA9IC0xOworCisgICAgICAgIC8qIHJ2YWx1ZSBtdXN0IGJlIGFuIGV4cG9ydGVyICovCisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodmFsdWUsICZzcmMsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgZGVzdCA9ICp2aWV3OworICAgICAgICBkZXN0LnNoYXBlID0gJmFycmF5c1swXTsgZGVzdC5zaGFwZVswXSA9IHZpZXctPnNoYXBlWzBdOworICAgICAgICBkZXN0LnN0cmlkZXMgPSAmYXJyYXlzWzFdOyBkZXN0LnN0cmlkZXNbMF0gPSB2aWV3LT5zdHJpZGVzWzBdOworICAgICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cykgeworICAgICAgICAgICAgZGVzdC5zdWJvZmZzZXRzID0gJmFycmF5c1syXTsgZGVzdC5zdWJvZmZzZXRzWzBdID0gdmlldy0+c3Vib2Zmc2V0c1swXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbml0X3NsaWNlKCZkZXN0LCBrZXksIDApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZW5kX2Jsb2NrOworICAgICAgICBkZXN0LmxlbiA9IGRlc3Quc2hhcGVbMF0gKiBkZXN0Lml0ZW1zaXplOworCisgICAgICAgIHJldCA9IGNvcHlfc2luZ2xlKCZkZXN0LCAmc3JjKTsKKworICAgIGVuZF9ibG9jazoKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3JjKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhrZXkpIHx8IGlzX211bHRpc2xpY2Uoa2V5KSkgeworICAgICAgICAvKiBDYWxsIG1lbW9yeV9zdWJzY3JpcHQoKSB0byBwcm9kdWNlIGEgc2xpY2VkIGx2YWx1ZSwgdGhlbiBjb3B5CisgICAgICAgICAgIHJ2YWx1ZSBpbnRvIGx2YWx1ZS4gVGhpcyBpcyBhbHJlYWR5IGltcGxlbWVudGVkIGluIF90ZXN0YnVmZmVyLmMuICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yLAorICAgICAgICAgICAgIm1lbW9yeXZpZXcgc2xpY2UgYXNzaWdubWVudHMgYXJlIGN1cnJlbnRseSByZXN0cmljdGVkICIKKyAgICAgICAgICAgICJ0byBuZGltID0gMSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIm1lbW9yeXZpZXc6IGludmFsaWQgc2xpY2Uga2V5Iik7CisgICAgcmV0dXJuIC0xOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorbWVtb3J5X2xlbmd0aChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOworICAgIHJldHVybiBzZWxmLT52aWV3Lm5kaW0gPT0gMCA/IDEgOiBzZWxmLT52aWV3LnNoYXBlWzBdOworfQorCisvKiBBcyBtYXBwaW5nICovCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBtZW1vcnlfYXNfbWFwcGluZyA9IHsKKyAgICAobGVuZnVuYyltZW1vcnlfbGVuZ3RoLCAgICAgICAgICAgICAgIC8qIG1wX2xlbmd0aCAqLworICAgIChiaW5hcnlmdW5jKW1lbW9yeV9zdWJzY3JpcHQsICAgICAgICAgLyogbXBfc3Vic2NyaXB0ICovCisgICAgKG9iam9iamFyZ3Byb2MpbWVtb3J5X2Fzc19zdWIsICAgICAgICAvKiBtcF9hc3Nfc3Vic2NyaXB0ICovCit9OworCisvKiBBcyBzZXF1ZW5jZSAqLworc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1lbW9yeV9hc19zZXF1ZW5jZSA9IHsKKyAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2xlbmd0aCAqLworICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfY29uY2F0ICovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KKyAgICAgICAgKHNzaXplYXJnZnVuYyltZW1vcnlfaXRlbSwgICAgICAgIC8qIHNxX2l0ZW0gKi8KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhcmlzb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjZGVmaW5lIE1WX0NPTVBBUkVfRVggLTEgICAgICAgLyogZXhjZXB0aW9uICovCisjZGVmaW5lIE1WX0NPTVBBUkVfTk9UX0lNUEwgLTIgLyogbm90IGltcGxlbWVudGVkICovCisKKy8qIFRyYW5zbGF0ZSBhIFN0cnVjdEVycm9yIHRvICJub3QgZXF1YWwiLiBQcmVzZXJ2ZSBvdGhlciBleGNlcHRpb25zLiAqLworc3RhdGljIGludAorZml4X3N0cnVjdF9lcnJvcl9pbnQodm9pZCkKK3sKKyAgICBhc3NlcnQoUHlFcnJfT2NjdXJyZWQoKSk7CisgICAgLyogWFhYIENhbm5vdCBnZXQgYXQgU3RydWN0RXJyb3IgZGlyZWN0bHk/ICovCisgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW1wb3J0RXJyb3IpIHx8CisgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfTWVtb3J5RXJyb3IpKSB7CisgICAgICAgIHJldHVybiBNVl9DT01QQVJFX0VYOworICAgIH0KKyAgICAvKiBTdHJ1Y3RFcnJvcjogaW52YWxpZCBvciB1bmtub3duIGZvcm1hdCAtPiBub3QgZXF1YWwgKi8KKyAgICBQeUVycl9DbGVhcigpOworICAgIHJldHVybiAwOworfQorCisvKiBVbnBhY2sgYW5kIGNvbXBhcmUgc2luZ2xlIGl0ZW1zIG9mIHAgYW5kIHEgdXNpbmcgdGhlIHN0cnVjdCBtb2R1bGUuICovCitzdGF0aWMgaW50CitzdHJ1Y3RfdW5wYWNrX2NtcChjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKK3sKKyAgICBQeU9iamVjdCAqdiwgKnc7CisgICAgaW50IHJldDsKKworICAgIC8qIEF0IHRoaXMgcG9pbnQgYW55IGV4Y2VwdGlvbiBmcm9tIHRoZSBzdHJ1Y3QgbW9kdWxlIHNob3VsZCBub3QgYmUKKyAgICAgICBTdHJ1Y3RFcnJvciwgc2luY2UgYm90aCBmb3JtYXRzIGhhdmUgYmVlbiBhY2NlcHRlZCBhbHJlYWR5LiAqLworICAgIHYgPSBzdHJ1Y3RfdW5wYWNrX3NpbmdsZShwLCB1bnBhY2tfcCk7CisgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE1WX0NPTVBBUkVfRVg7CisKKyAgICB3ID0gc3RydWN0X3VucGFja19zaW5nbGUocSwgdW5wYWNrX3EpOworICAgIGlmICh3ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICByZXR1cm4gTVZfQ09NUEFSRV9FWDsKKyAgICB9CisKKyAgICAvKiBNVl9DT01QQVJFX0VYID09IC0xOiBleGNlcHRpb25zIGFyZSBwcmVzZXJ2ZWQgKi8KKyAgICByZXQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wodiwgdywgUHlfRVEpOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBQeV9ERUNSRUYodyk7CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBVbnBhY2sgYW5kIGNvbXBhcmUgc2luZ2xlIGl0ZW1zIG9mIHAgYW5kIHEuIElmIGJvdGggcCBhbmQgcSBoYXZlIHRoZSBzYW1lCisgICBzaW5nbGUgZWxlbWVudCBuYXRpdmUgZm9ybWF0LCB0aGUgY29tcGFyaXNvbiB1c2VzIGEgZmFzdCBwYXRoIChnY2MgY3JlYXRlcworICAgYSBqdW1wIHRhYmxlIGFuZCBjb252ZXJ0cyBtZW1jcHkgaW50byBzaW1wbGUgYXNzaWdubWVudHMgb24geDg2L3g2NCkuCisKKyAgIE90aGVyd2lzZSwgdGhlIGNvbXBhcmlzb24gaXMgZGVsZWdhdGVkIHRvIHRoZSBzdHJ1Y3QgbW9kdWxlLCB3aGljaCBpcworICAgMzAtNjB4IHNsb3dlci4gKi8KKyNkZWZpbmUgQ01QX1NJTkdMRShwLCBxLCB0eXBlKSBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdHlwZSB4OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0eXBlIHk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG1lbWNweSgoY2hhciAqKSZ4LCBwLCBzaXplb2YgeCk7IFwKKyAgICAgICAgbWVtY3B5KChjaGFyICopJnksIHEsIHNpemVvZiB5KTsgXAorICAgICAgICBlcXVhbCA9ICh4ID09IHkpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK3VucGFja19jbXAoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY2hhciBmbXQsCisgICAgICAgICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCit7CisgICAgaW50IGVxdWFsOworCisgICAgc3dpdGNoIChmbXQpIHsKKworICAgIC8qIHNpZ25lZCBpbnRlZ2VycyBhbmQgZmFzdCBwYXRoIGZvciAnQicgKi8KKyAgICBjYXNlICdCJzogcmV0dXJuICooKHVuc2lnbmVkIGNoYXIgKilwKSA9PSAqKCh1bnNpZ25lZCBjaGFyICopcSk7CisgICAgY2FzZSAnYic6IHJldHVybiAqKChzaWduZWQgY2hhciAqKXApID09ICooKHNpZ25lZCBjaGFyICopcSk7CisgICAgY2FzZSAnaCc6IENNUF9TSU5HTEUocCwgcSwgc2hvcnQpOyByZXR1cm4gZXF1YWw7CisgICAgY2FzZSAnaSc6IENNUF9TSU5HTEUocCwgcSwgaW50KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ2wnOiBDTVBfU0lOR0xFKHAsIHEsIGxvbmcpOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiBib29sZWFuICovCisgICAgI2lmZGVmIEhBVkVfQzk5X0JPT0wKKyAgICBjYXNlICc/JzogQ01QX1NJTkdMRShwLCBxLCBfQm9vbCk7IHJldHVybiBlcXVhbDsKKyAgICAjZWxzZQorICAgIGNhc2UgJz8nOiBDTVBfU0lOR0xFKHAsIHEsIGNoYXIpOyByZXR1cm4gZXF1YWw7CisgICAgI2VuZGlmCisKKyAgICAvKiB1bnNpZ25lZCBpbnRlZ2VycyAqLworICAgIGNhc2UgJ0gnOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIHNob3J0KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ0knOiBDTVBfU0lOR0xFKHAsIHEsIHVuc2lnbmVkIGludCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdMJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBsb25nKTsgcmV0dXJuIGVxdWFsOworCisgICAgLyogbmF0aXZlIDY0LWJpdCAqLworICAgICNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgIGNhc2UgJ3EnOiBDTVBfU0lOR0xFKHAsIHEsIFBZX0xPTkdfTE9ORyk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdRJzogQ01QX1NJTkdMRShwLCBxLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpOyByZXR1cm4gZXF1YWw7CisgICAgI2VuZGlmCisKKyAgICAvKiBzc2l6ZV90IGFuZCBzaXplX3QgKi8KKyAgICBjYXNlICduJzogQ01QX1NJTkdMRShwLCBxLCBQeV9zc2l6ZV90KTsgcmV0dXJuIGVxdWFsOworICAgIGNhc2UgJ04nOiBDTVBfU0lOR0xFKHAsIHEsIHNpemVfdCk7IHJldHVybiBlcXVhbDsKKworICAgIC8qIGZsb2F0cyAqLworICAgIC8qIFhYWCBEQkxfRVBTSUxPTj8gKi8KKyAgICBjYXNlICdmJzogQ01QX1NJTkdMRShwLCBxLCBmbG9hdCk7IHJldHVybiBlcXVhbDsKKyAgICBjYXNlICdkJzogQ01QX1NJTkdMRShwLCBxLCBkb3VibGUpOyByZXR1cm4gZXF1YWw7CisKKyAgICAvKiBieXRlcyBvYmplY3QgKi8KKyAgICBjYXNlICdjJzogcmV0dXJuICpwID09ICpxOworCisgICAgLyogcG9pbnRlciAqLworICAgIGNhc2UgJ1AnOiBDTVBfU0lOR0xFKHAsIHEsIHZvaWQgKik7IHJldHVybiBlcXVhbDsKKworICAgIC8qIHVzZSB0aGUgc3RydWN0IG1vZHVsZSAqLworICAgIGNhc2UgJ18nOgorICAgICAgICBhc3NlcnQodW5wYWNrX3ApOworICAgICAgICBhc3NlcnQodW5wYWNrX3EpOworICAgICAgICByZXR1cm4gc3RydWN0X3VucGFja19jbXAocCwgcSwgdW5wYWNrX3AsIHVucGFja19xKTsKKyAgICB9CisKKyAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICJtZW1vcnl2aWV3OiBpbnRlcm5hbCBlcnJvciBpbiByaWNoY29tcGFyZSIpOworICAgIHJldHVybiBNVl9DT01QQVJFX0VYOworfQorCisvKiBCYXNlIGNhc2UgZm9yIHJlY3Vyc2l2ZSBhcnJheSBjb21wYXJpc29ucy4gQXNzdW1wdGlvbjogbmRpbSA9PSAxLiAqLworc3RhdGljIGludAorY21wX2Jhc2UoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqcSwgY29uc3QgUHlfc3NpemVfdCAqc2hhcGUsCisgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpwc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcHN1Ym9mZnNldHMsCisgICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpxc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcXN1Ym9mZnNldHMsCisgICAgICAgICBjaGFyIGZtdCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcCwgc3RydWN0IHVucGFja2VyICp1bnBhY2tfcSkKK3sKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IGVxdWFsOworCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBlcXVhbCA9IHVucGFja19jbXAoeHAsIHhxLCBmbXQsIHVucGFja19wLCB1bnBhY2tfcSk7CisgICAgICAgIGlmIChlcXVhbCA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIGVxdWFsOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisvKiBSZWN1cnNpdmVseSBjb21wYXJlIHR3byBtdWx0aS1kaW1lbnNpb25hbCBhcnJheXMgdGhhdCBoYXZlIHRoZSBzYW1lCisgICBsb2dpY2FsIHN0cnVjdHVyZS4gQXNzdW1wdGlvbjogbmRpbSA+PSAxLiAqLworc3RhdGljIGludAorY21wX3JlYyhjb25zdCBjaGFyICpwLCBjb25zdCBjaGFyICpxLAorICAgICAgICBQeV9zc2l6ZV90IG5kaW0sIGNvbnN0IFB5X3NzaXplX3QgKnNoYXBlLAorICAgICAgICBjb25zdCBQeV9zc2l6ZV90ICpwc3RyaWRlcywgY29uc3QgUHlfc3NpemVfdCAqcHN1Ym9mZnNldHMsCisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgKnFzdHJpZGVzLCBjb25zdCBQeV9zc2l6ZV90ICpxc3Vib2Zmc2V0cywKKyAgICAgICAgY2hhciBmbXQsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3AsIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3EpCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBlcXVhbDsKKworICAgIGFzc2VydChuZGltID49IDEpOworICAgIGFzc2VydChzaGFwZSAhPSBOVUxMKTsKKyAgICBhc3NlcnQocHN0cmlkZXMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHFzdHJpZGVzICE9IE5VTEwpOworCisgICAgaWYgKG5kaW0gPT0gMSkgeworICAgICAgICByZXR1cm4gY21wX2Jhc2UocCwgcSwgc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcywgcHN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICBxc3RyaWRlcywgcXN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmbXQsIHVucGFja19wLCB1bnBhY2tfcSk7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IHNoYXBlWzBdOyBwKz1wc3RyaWRlc1swXSwgcSs9cXN0cmlkZXNbMF0sIGkrKykgeworICAgICAgICBjb25zdCBjaGFyICp4cCA9IEFESlVTVF9QVFIocCwgcHN1Ym9mZnNldHMpOworICAgICAgICBjb25zdCBjaGFyICp4cSA9IEFESlVTVF9QVFIocSwgcXN1Ym9mZnNldHMpOworICAgICAgICBlcXVhbCA9IGNtcF9yZWMoeHAsIHhxLCBuZGltLTEsIHNoYXBlKzEsCisgICAgICAgICAgICAgICAgICAgICAgICBwc3RyaWRlcysxLCBwc3Vib2Zmc2V0cyA/IHBzdWJvZmZzZXRzKzEgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgcXN0cmlkZXMrMSwgcXN1Ym9mZnNldHMgPyBxc3Vib2Zmc2V0cysxIDogTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZtdCwgdW5wYWNrX3AsIHVucGFja19xKTsKKyAgICAgICAgaWYgKGVxdWFsIDw9IDApCisgICAgICAgICAgICByZXR1cm4gZXF1YWw7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfcmljaGNvbXBhcmUoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICp3LCBpbnQgb3ApCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9idWZmZXIgd2J1ZiwgKnZ2OworICAgIFB5X2J1ZmZlciAqd3cgPSBOVUxMOworICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3YgPSBOVUxMOworICAgIHN0cnVjdCB1bnBhY2tlciAqdW5wYWNrX3cgPSBOVUxMOworICAgIGNoYXIgdmZtdCwgd2ZtdDsKKyAgICBpbnQgZXF1YWwgPSBNVl9DT01QQVJFX05PVF9JTVBMOworCisgICAgaWYgKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKQorICAgICAgICBnb3RvIHJlc3VsdDsgLyogUHlfTm90SW1wbGVtZW50ZWQgKi8KKworICAgIGFzc2VydChQeU1lbW9yeVZpZXdfQ2hlY2sodikpOworICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRSh2KSkgeworICAgICAgICBlcXVhbCA9ICh2ID09IHcpOworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisgICAgdnYgPSBWSUVXX0FERFIodik7CisKKyAgICBpZiAoUHlNZW1vcnlWaWV3X0NoZWNrKHcpKSB7CisgICAgICAgIGlmIChCQVNFX0lOQUNDRVNTSUJMRSh3KSkgeworICAgICAgICAgICAgZXF1YWwgPSAodiA9PSB3KTsKKyAgICAgICAgICAgIGdvdG8gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIHd3ID0gVklFV19BRERSKHcpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih3LCAmd2J1ZiwgUHlCVUZfRlVMTF9STykgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgZ290byByZXN1bHQ7IC8qIFB5X05vdEltcGxlbWVudGVkICovCisgICAgICAgIH0KKyAgICAgICAgd3cgPSAmd2J1ZjsKKyAgICB9CisKKyAgICBpZiAoIWVxdWl2X3NoYXBlKHZ2LCB3dykpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZXF1YWwgPSAwOworICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKiBVc2UgZmFzdCB1bnBhY2tpbmcgZm9yIGlkZW50aWNhbCBwcmltaXRpdmUgQyB0eXBlIGZvcm1hdHMuICovCisgICAgaWYgKGdldF9uYXRpdmVfZm10Y2hhcigmdmZtdCwgdnYtPmZvcm1hdCkgPCAwKQorICAgICAgICB2Zm10ID0gJ18nOworICAgIGlmIChnZXRfbmF0aXZlX2ZtdGNoYXIoJndmbXQsIHd3LT5mb3JtYXQpIDwgMCkKKyAgICAgICAgd2ZtdCA9ICdfJzsKKyAgICBpZiAodmZtdCA9PSAnXycgfHwgd2ZtdCA9PSAnXycgfHwgdmZtdCAhPSB3Zm10KSB7CisgICAgICAgIC8qIFVzZSBzdHJ1Y3QgbW9kdWxlIHVucGFja2luZy4gTk9URTogRXZlbiBmb3IgZXF1YWwgZm9ybWF0IHN0cmluZ3MsCisgICAgICAgICAgIG1lbWNtcCgpIGNhbm5vdCBiZSB1c2VkIGZvciBpdGVtIGNvbXBhcmlzb24gc2luY2UgaXQgd291bGQgZ2l2ZQorICAgICAgICAgICBpbmNvcnJlY3QgcmVzdWx0cyBpbiB0aGUgY2FzZSBvZiBOYU5zIG9yIHVuaW5pdGlhbGl6ZWQgcGFkZGluZworICAgICAgICAgICBieXRlcy4gKi8KKyAgICAgICAgdmZtdCA9ICdfJzsKKyAgICAgICAgdW5wYWNrX3YgPSBzdHJ1Y3RfZ2V0X3VucGFja2VyKHZ2LT5mb3JtYXQsIHZ2LT5pdGVtc2l6ZSk7CisgICAgICAgIGlmICh1bnBhY2tfdiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcXVhbCA9IGZpeF9zdHJ1Y3RfZXJyb3JfaW50KCk7CisgICAgICAgICAgICBnb3RvIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICB1bnBhY2tfdyA9IHN0cnVjdF9nZXRfdW5wYWNrZXIod3ctPmZvcm1hdCwgd3ctPml0ZW1zaXplKTsKKyAgICAgICAgaWYgKHVucGFja193ID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVxdWFsID0gZml4X3N0cnVjdF9lcnJvcl9pbnQoKTsKKyAgICAgICAgICAgIGdvdG8gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHZ2LT5uZGltID09IDApIHsKKyAgICAgICAgZXF1YWwgPSB1bnBhY2tfY21wKHZ2LT5idWYsIHd3LT5idWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2Zm10LCB1bnBhY2tfdiwgdW5wYWNrX3cpOworICAgIH0KKyAgICBlbHNlIGlmICh2di0+bmRpbSA9PSAxKSB7CisgICAgICAgIGVxdWFsID0gY21wX2Jhc2UodnYtPmJ1Ziwgd3ctPmJ1ZiwgdnYtPnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHZ2LT5zdHJpZGVzLCB2di0+c3Vib2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICB3dy0+c3RyaWRlcywgd3ctPnN1Ym9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmZtdCwgdW5wYWNrX3YsIHVucGFja193KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGVxdWFsID0gY21wX3JlYyh2di0+YnVmLCB3dy0+YnVmLCB2di0+bmRpbSwgdnYtPnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgdnYtPnN0cmlkZXMsIHZ2LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgd3ctPnN0cmlkZXMsIHd3LT5zdWJvZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgdmZtdCwgdW5wYWNrX3YsIHVucGFja193KTsKKyAgICB9CisKK3Jlc3VsdDoKKyAgICBpZiAoZXF1YWwgPCAwKSB7CisgICAgICAgIGlmIChlcXVhbCA9PSBNVl9DT01QQVJFX05PVF9JTVBMKQorICAgICAgICAgICAgcmVzID0gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIGVsc2UgLyogZXhjZXB0aW9uICovCisgICAgICAgICAgICByZXMgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmICgoZXF1YWwgJiYgb3AgPT0gUHlfRVEpIHx8ICghZXF1YWwgJiYgb3AgPT0gUHlfTkUpKQorICAgICAgICByZXMgPSBQeV9UcnVlOworICAgIGVsc2UKKyAgICAgICAgcmVzID0gUHlfRmFsc2U7CisKKyAgICBpZiAod3cgPT0gJndidWYpCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2Uod3cpOworCisgICAgdW5wYWNrZXJfZnJlZSh1bnBhY2tfdik7CisgICAgdW5wYWNrZXJfZnJlZSh1bnBhY2tfdyk7CisKKyAgICBQeV9YSU5DUkVGKHJlcyk7CisgICAgcmV0dXJuIHJlczsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhhc2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgUHlfaGFzaF90CittZW1vcnlfaGFzaChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgaWYgKHNlbGYtPmhhc2ggPT0gLTEpIHsKKyAgICAgICAgUHlfYnVmZmVyICp2aWV3ID0gJnNlbGYtPnZpZXc7CisgICAgICAgIGNoYXIgKm1lbSA9IHZpZXctPmJ1ZjsKKworICAgICAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7CisKKyAgICAgICAgaWYgKCF2aWV3LT5yZWFkb25seSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbm5vdCBoYXNoIHdyaXRhYmxlIG1lbW9yeXZpZXcgb2JqZWN0Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpZXctPm9iaiAhPSBOVUxMICYmIFB5T2JqZWN0X0hhc2godmlldy0+b2JqKSA9PSAtMSkgeworICAgICAgICAgICAgLyogS2VlcCB0aGUgb3JpZ2luYWwgZXJyb3IgbWVzc2FnZSAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFNVl9DX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKSB7CisgICAgICAgICAgICBtZW0gPSBQeU1lbV9NYWxsb2Modmlldy0+bGVuKTsKKyAgICAgICAgICAgIGlmIChtZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJ1ZmZlcl90b19jb250aWd1b3VzKG1lbSwgdmlldywgJ0MnKSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKG1lbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogQ2FuJ3QgZmFpbCAqLworICAgICAgICBzZWxmLT5oYXNoID0gX1B5X0hhc2hCeXRlcygodW5zaWduZWQgY2hhciAqKW1lbSwgdmlldy0+bGVuKTsKKworICAgICAgICBpZiAobWVtICE9IHZpZXctPmJ1ZikKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUobWVtKTsKKyAgICB9CisKKyAgICByZXR1cm4gc2VsZi0+aGFzaDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBQeU9iamVjdCAqCitfSW50VHVwbGVGcm9tU3NpemV0KGludCBsZW4sIFB5X3NzaXplX3QgKnZhbHMpCit7CisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKm87CisgICAgUHlPYmplY3QgKmludFR1cGxlOworCisgICAgaWYgKHZhbHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOworCisgICAgaW50VHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOworICAgIGlmICghaW50VHVwbGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrKSB7CisgICAgICAgIG8gPSBQeUxvbmdfRnJvbVNzaXplX3QodmFsc1tpXSk7CisgICAgICAgIGlmICghbykgeworICAgICAgICAgICAgUHlfREVDUkVGKGludFR1cGxlKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW50VHVwbGUsIGksIG8pOworICAgIH0KKyAgICByZXR1cm4gaW50VHVwbGU7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfb2JqX2dldChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgUHlfYnVmZmVyICp2aWV3ID0gJnNlbGYtPnZpZXc7CisKKyAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKKyAgICBpZiAodmlldy0+b2JqID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRih2aWV3LT5vYmopOworICAgIHJldHVybiB2aWV3LT5vYmo7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCittZW1vcnlfbmJ5dGVzX2dldChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzZWxmLT52aWV3Lmxlbik7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfZm9ybWF0X2dldChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCiB7CkBAIC0zNDMsMzEgKzI4MDYsNiBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotX0ludFR1cGxlRnJvbVNzaXpldChpbnQgbGVuLCBQeV9zc2l6ZV90ICp2YWxzKQotewotICAgIGludCBpOwotICAgIFB5T2JqZWN0ICpvOwotICAgIFB5T2JqZWN0ICppbnRUdXBsZTsKLQotICAgIGlmICh2YWxzID09IE5VTEwpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9Ci0gICAgaW50VHVwbGUgPSBQeVR1cGxlX05ldyhsZW4pOwotICAgIGlmICghaW50VHVwbGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoaT0wOyBpPGxlbjsgaSsrKSB7Ci0gICAgICAgIG8gPSBQeUxvbmdfRnJvbVNzaXplX3QodmFsc1tpXSk7Ci0gICAgICAgIGlmICghbykgewotICAgICAgICAgICAgUHlfREVDUkVGKGludFR1cGxlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oaW50VHVwbGUsIGksIG8pOwotICAgIH0KLSAgICByZXR1cm4gaW50VHVwbGU7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCiBtZW1vcnlfc2hhcGVfZ2V0KFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKIHsKICAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKQEAgLTQwMiwxMSArMjg0MCw0MiBAQAogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc2VsZi0+dmlldy5uZGltKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9jX2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9DX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9mX2NvbnRpZ3VvdXMoUHlNZW1vcnlWaWV3T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqZHVtbXkpCit7CisgICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7CisgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhNVl9GX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK21lbW9yeV9jb250aWd1b3VzKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmR1bW15KQoreworICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOworICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoTVZfQU5ZX0NPTlRJR1VPVVMoc2VsZi0+ZmxhZ3MpKTsKK30KKworUHlEb2NfU1RSVkFSKG1lbW9yeV9vYmpfZG9jLAorICAgICAgICAgICAgICJUaGUgdW5kZXJseWluZyBvYmplY3Qgb2YgdGhlIG1lbW9yeXZpZXcuIik7CitQeURvY19TVFJWQVIobWVtb3J5X25ieXRlc19kb2MsCisgICAgICAgICAgICAgIlRoZSBhbW91bnQgb2Ygc3BhY2UgaW4gYnl0ZXMgdGhhdCB0aGUgYXJyYXkgd291bGQgdXNlIGluXG4iCisgICAgICAgICAgICAgIiBhIGNvbnRpZ3VvdXMgcmVwcmVzZW50YXRpb24uIik7CitQeURvY19TVFJWQVIobWVtb3J5X3JlYWRvbmx5X2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfaXRlbXNpemVfZG9jLAorICAgICAgICAgICAgICJUaGUgc2l6ZSBpbiBieXRlcyBvZiBlYWNoIGVsZW1lbnQgb2YgdGhlIG1lbW9yeXZpZXcuIik7CiBQeURvY19TVFJWQVIobWVtb3J5X2Zvcm1hdF9kb2MsCiAgICAgICAgICAgICAgIkEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdCAoaW4gc3RydWN0IG1vZHVsZSBzdHlsZSlcbiIKICAgICAgICAgICAgICAiIGZvciBlYWNoIGVsZW1lbnQgaW4gdGhlIHZpZXcuIik7Ci1QeURvY19TVFJWQVIobWVtb3J5X2l0ZW1zaXplX2RvYywKLSAgICAgICAgICAgICAiVGhlIHNpemUgaW4gYnl0ZXMgb2YgZWFjaCBlbGVtZW50IG9mIHRoZSBtZW1vcnl2aWV3LiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9uZGltX2RvYywKKyAgICAgICAgICAgICAiQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBtYW55IGRpbWVuc2lvbnMgb2YgYSBtdWx0aS1kaW1lbnNpb25hbFxuIgorICAgICAgICAgICAgICIgYXJyYXkgdGhlIG1lbW9yeSByZXByZXNlbnRzLiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9zaGFwZV9kb2MsCiAgICAgICAgICAgICAgIkEgdHVwbGUgb2YgbmRpbSBpbnRlZ2VycyBnaXZpbmcgdGhlIHNoYXBlIG9mIHRoZSBtZW1vcnlcbiIKICAgICAgICAgICAgICAiIGFzIGFuIE4tZGltZW5zaW9uYWwgYXJyYXkuIik7CkBAIC00MTUsOTUgKzI4ODQsMjkgQEAKICAgICAgICAgICAgICAiIGVhY2ggZWxlbWVudCBmb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiIpOwogUHlEb2NfU1RSVkFSKG1lbW9yeV9zdWJvZmZzZXRzX2RvYywKICAgICAgICAgICAgICAiQSB0dXBsZSBvZiBpbnRlZ2VycyB1c2VkIGludGVybmFsbHkgZm9yIFBJTC1zdHlsZSBhcnJheXMuIik7Ci1QeURvY19TVFJWQVIobWVtb3J5X3JlYWRvbmx5X2RvYywKLSAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIHJlYWQgb25seS4iKTsKLVB5RG9jX1NUUlZBUihtZW1vcnlfbmRpbV9kb2MsCi0gICAgICAgICAgICAgIkFuIGludGVnZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaW1lbnNpb25zIG9mIGEgbXVsdGktZGltZW5zaW9uYWxcbiIKLSAgICAgICAgICAgICAiIGFycmF5IHRoZSBtZW1vcnkgcmVwcmVzZW50cy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfY19jb250aWd1b3VzX2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEMgY29udGlndW91cy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfZl9jb250aWd1b3VzX2RvYywKKyAgICAgICAgICAgICAiQSBib29sIGluZGljYXRpbmcgd2hldGhlciB0aGUgbWVtb3J5IGlzIEZvcnRyYW4gY29udGlndW91cy4iKTsKK1B5RG9jX1NUUlZBUihtZW1vcnlfY29udGlndW91c19kb2MsCisgICAgICAgICAgICAgIkEgYm9vbCBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIG1lbW9yeSBpcyBjb250aWd1b3VzLiIpOwogCiBzdGF0aWMgUHlHZXRTZXREZWYgbWVtb3J5X2dldHNldGxpc3RbXSA9IHsKLSAgICB7ImZvcm1hdCIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X2Zvcm1hdF9nZXQsICAgICAgTlVMTCwgbWVtb3J5X2Zvcm1hdF9kb2N9LAotICAgIHsiaXRlbXNpemUiLCAgICAgICAgKGdldHRlciltZW1vcnlfaXRlbXNpemVfZ2V0LCAgICBOVUxMLCBtZW1vcnlfaXRlbXNpemVfZG9jfSwKLSAgICB7InNoYXBlIiwgICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X3NoYXBlX2dldCwgICAgICAgTlVMTCwgbWVtb3J5X3NoYXBlX2RvY30sCi0gICAgeyJzdHJpZGVzIiwgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9zdHJpZGVzX2dldCwgICAgIE5VTEwsIG1lbW9yeV9zdHJpZGVzX2RvY30sCi0gICAgeyJzdWJvZmZzZXRzIiwgICAgICAoZ2V0dGVyKW1lbW9yeV9zdWJvZmZzZXRzX2dldCwgIE5VTEwsIG1lbW9yeV9zdWJvZmZzZXRzX2RvY30sCi0gICAgeyJyZWFkb25seSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9yZWFkb25seV9nZXQsICAgIE5VTEwsIG1lbW9yeV9yZWFkb25seV9kb2N9LAotICAgIHsibmRpbSIsICAgICAgICAgICAgKGdldHRlciltZW1vcnlfbmRpbV9nZXQsICAgICAgICBOVUxMLCBtZW1vcnlfbmRpbV9kb2N9LAorICAgIHsib2JqIiwgICAgICAgICAgICAgKGdldHRlciltZW1vcnlfb2JqX2dldCwgICAgICAgIE5VTEwsIG1lbW9yeV9vYmpfZG9jfSwKKyAgICB7Im5ieXRlcyIsICAgICAgICAgIChnZXR0ZXIpbWVtb3J5X25ieXRlc19nZXQsICAgICBOVUxMLCBtZW1vcnlfbmJ5dGVzX2RvY30sCisgICAgeyJyZWFkb25seSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9yZWFkb25seV9nZXQsICAgTlVMTCwgbWVtb3J5X3JlYWRvbmx5X2RvY30sCisgICAgeyJpdGVtc2l6ZSIsICAgICAgICAoZ2V0dGVyKW1lbW9yeV9pdGVtc2l6ZV9nZXQsICAgTlVMTCwgbWVtb3J5X2l0ZW1zaXplX2RvY30sCisgICAgeyJmb3JtYXQiLCAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9mb3JtYXRfZ2V0LCAgICAgTlVMTCwgbWVtb3J5X2Zvcm1hdF9kb2N9LAorICAgIHsibmRpbSIsICAgICAgICAgICAgKGdldHRlciltZW1vcnlfbmRpbV9nZXQsICAgICAgIE5VTEwsIG1lbW9yeV9uZGltX2RvY30sCisgICAgeyJzaGFwZSIsICAgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9zaGFwZV9nZXQsICAgICAgTlVMTCwgbWVtb3J5X3NoYXBlX2RvY30sCisgICAgeyJzdHJpZGVzIiwgICAgICAgICAoZ2V0dGVyKW1lbW9yeV9zdHJpZGVzX2dldCwgICAgTlVMTCwgbWVtb3J5X3N0cmlkZXNfZG9jfSwKKyAgICB7InN1Ym9mZnNldHMiLCAgICAgIChnZXR0ZXIpbWVtb3J5X3N1Ym9mZnNldHNfZ2V0LCBOVUxMLCBtZW1vcnlfc3Vib2Zmc2V0c19kb2N9LAorICAgIHsiY19jb250aWd1b3VzIiwgICAgKGdldHRlciltZW1vcnlfY19jb250aWd1b3VzLCAgIE5VTEwsIG1lbW9yeV9jX2NvbnRpZ3VvdXNfZG9jfSwKKyAgICB7ImZfY29udGlndW91cyIsICAgIChnZXR0ZXIpbWVtb3J5X2ZfY29udGlndW91cywgICBOVUxMLCBtZW1vcnlfZl9jb250aWd1b3VzX2RvY30sCisgICAgeyJjb250aWd1b3VzIiwgICAgICAoZ2V0dGVyKW1lbW9yeV9jb250aWd1b3VzLCAgICAgTlVMTCwgbWVtb3J5X2NvbnRpZ3VvdXNfZG9jfSwKICAgICB7TlVMTCwgTlVMTCwgTlVMTCwgTlVMTH0sCiB9OwogCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfdG9ieXRlcyhQeU1lbW9yeVZpZXdPYmplY3QgKm1lbSwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICBDSEVDS19SRUxFQVNFRChtZW0pOwotICAgIHJldHVybiBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAotICAgICAgICAgICAgKFB5T2JqZWN0ICopICZQeUJ5dGVzX1R5cGUsIG1lbSwgTlVMTCk7Ci19Ci0KLS8qIFRPRE86IHJld3JpdGUgdGhpcyBmdW5jdGlvbiB1c2luZyB0aGUgc3RydWN0IG1vZHVsZSB0byB1bnBhY2sKLSAgIGVhY2ggYnVmZmVyIGl0ZW0gKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV90b2xpc3QoUHlNZW1vcnlWaWV3T2JqZWN0ICptZW0sIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihtZW0tPnZpZXcpOwotICAgIFB5X3NzaXplX3QgaTsKLSAgICBQeU9iamVjdCAqcmVzLCAqaXRlbTsKLSAgICBjaGFyICpidWY7Ci0KLSAgICBDSEVDS19SRUxFQVNFRChtZW0pOwotICAgIGlmIChzdHJjbXAodmlldy0+Zm9ybWF0LCAiQiIpIHx8IHZpZXctPml0ZW1zaXplICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsIAotICAgICAgICAgICAgICAgICJ0b2xpc3QoKSBvbmx5IHN1cHBvcnRzIGJ5dGUgdmlld3MiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmICh2aWV3LT5uZGltICE9IDEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsIAotICAgICAgICAgICAgICAgICJ0b2xpc3QoKSBvbmx5IHN1cHBvcnRzIG9uZS1kaW1lbnNpb25hbCBvYmplY3RzIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXMgPSBQeUxpc3RfTmV3KHZpZXctPmxlbik7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBidWYgPSB2aWV3LT5idWY7Ci0gICAgZm9yIChpID0gMDsgaSA8IHZpZXctPmxlbjsgaSsrKSB7Ci0gICAgICAgIGl0ZW0gPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygodW5zaWduZWQgY2hhcikgKmJ1Zik7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHJlcywgaSwgaXRlbSk7Ci0gICAgICAgIGJ1ZisrOwotICAgIH0KLSAgICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgdm9pZAotZG9fcmVsZWFzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKHNlbGYtPnZpZXcub2JqICE9IE5VTEwpIHsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmKHNlbGYtPnZpZXcpKTsKLSAgICB9Ci0gICAgc2VsZi0+dmlldy5vYmogPSBOVUxMOwotICAgIHNlbGYtPnZpZXcuYnVmID0gTlVMTDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9lbnRlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgQ0hFQ0tfUkVMRUFTRUQoc2VsZik7Ci0gICAgUHlfSU5DUkVGKHNlbGYpOwotICAgIHJldHVybiBzZWxmOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X2V4aXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGRvX3JlbGVhc2UoKFB5TWVtb3J5Vmlld09iamVjdCAqKSBzZWxmKTsKLSAgICBQeV9SRVRVUk5fTk9ORTsKLX0KLQogUHlEb2NfU1RSVkFSKG1lbW9yeV9yZWxlYXNlX2RvYywKICJNLnJlbGVhc2UoKSAtPiBOb25lXG5cCiBcblwKQEAgLTUxNiwzNDMgKzI5MTksMjcgQEAKICJNLnRvbGlzdCgpIC0+IGxpc3RcblwKIFxuXAogUmV0dXJuIHRoZSBkYXRhIGluIHRoZSBidWZmZXIgYXMgYSBsaXN0IG9mIGVsZW1lbnRzLiIpOworUHlEb2NfU1RSVkFSKG1lbW9yeV9jYXN0X2RvYywKKyJNLmNhc3QoZm9ybWF0Wywgc2hhcGVdKSAtPiBtZW1vcnl2aWV3XG5cCitcblwKK0Nhc3QgYSBtZW1vcnl2aWV3IHRvIGEgbmV3IGZvcm1hdCBvciBzaGFwZS4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIG1lbW9yeV9tZXRob2RzW10gPSB7Ci0gICAgeyJyZWxlYXNlIiwgbWVtb3J5X2V4aXQsIE1FVEhfTk9BUkdTLCBtZW1vcnlfcmVsZWFzZV9kb2N9LAotICAgIHsidG9ieXRlcyIsIChQeUNGdW5jdGlvbiltZW1vcnlfdG9ieXRlcywgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2J5dGVzX2RvY30sCi0gICAgeyJ0b2xpc3QiLCAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKLSAgICB7Il9fZW50ZXJfXyIsIG1lbW9yeV9lbnRlciwgTUVUSF9OT0FSR1N9LAotICAgIHsiX19leGl0X18iLCBtZW1vcnlfZXhpdCwgTUVUSF9WQVJBUkdTfSwKLSAgICB7TlVMTCwgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCi19OwotCi0KLXN0YXRpYyB2b2lkCi1tZW1vcnlfZGVhbGxvYyhQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soc2VsZik7Ci0gICAgZG9fcmVsZWFzZShzZWxmKTsKLSAgICBQeU9iamVjdF9HQ19EZWwoc2VsZik7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfcmVwcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgaWYgKElTX1JFTEVBU0VEKHNlbGYpKQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxyZWxlYXNlZCBtZW1vcnkgYXQgJXA+Iiwgc2VsZik7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtZW1vcnkgYXQgJXA+Iiwgc2VsZik7Ci19Ci0KLS8qIFNlcXVlbmNlIG1ldGhvZHMgKi8KLXN0YXRpYyBQeV9zc2l6ZV90Ci1tZW1vcnlfbGVuZ3RoKFB5TWVtb3J5Vmlld09iamVjdCAqc2VsZikKLXsKLSAgICBDSEVDS19SRUxFQVNFRF9JTlQoc2VsZik7Ci0gICAgcmV0dXJuIGdldF9zaGFwZTAoJnNlbGYtPnZpZXcpOwotfQotCi0vKiBBbHRlcm5hdGUgdmVyc2lvbiBvZiBtZW1vcnlfc3ViY3JpcHQgdGhhdCBvbmx5IGFjY2VwdHMgaW5kaWNlcy4KLSAgIFVzZWQgYnkgUHlTZXFJdGVyX05ldygpLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1tZW1vcnlfaXRlbShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgcmVzdWx0KQotewotICAgIFB5X2J1ZmZlciAqdmlldyA9ICYoc2VsZi0+dmlldyk7Ci0KLSAgICBDSEVDS19SRUxFQVNFRChzZWxmKTsKLSAgICBpZiAodmlldy0+bmRpbSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXhpbmcgb2YgMC1kaW0gbWVtb3J5Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSA9PSAxKSB7Ci0gICAgICAgIC8qIFJldHVybiBhIGJ5dGVzIG9iamVjdCAqLwotICAgICAgICBjaGFyICpwdHI7Ci0gICAgICAgIHB0ciA9IChjaGFyICopdmlldy0+YnVmOwotICAgICAgICBpZiAocmVzdWx0IDwgMCkgewotICAgICAgICAgICAgcmVzdWx0ICs9IGdldF9zaGFwZTAodmlldyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKChyZXN1bHQgPCAwKSB8fCAocmVzdWx0ID49IGdldF9zaGFwZTAodmlldykpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiBib3VuZHMiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmICh2aWV3LT5zdHJpZGVzID09IE5VTEwpCi0gICAgICAgICAgICBwdHIgKz0gdmlldy0+aXRlbXNpemUgKiByZXN1bHQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHB0ciArPSB2aWV3LT5zdHJpZGVzWzBdICogcmVzdWx0OwotICAgICAgICBpZiAodmlldy0+c3Vib2Zmc2V0cyAhPSBOVUxMICYmCi0gICAgICAgICAgICB2aWV3LT5zdWJvZmZzZXRzWzBdID49IDApIHsKLSAgICAgICAgICAgIHB0ciA9ICooKGNoYXIgKiopcHRyKSArIHZpZXctPnN1Ym9mZnNldHNbMF07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocHRyLCB2aWV3LT5pdGVtc2l6ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogUmV0dXJuIGEgbmV3IG1lbW9yeS12aWV3IG9iamVjdCAqLwotICAgICAgICBQeV9idWZmZXIgbmV3dmlldzsKLSAgICAgICAgbWVtc2V0KCZuZXd2aWV3LCAwLCBzaXplb2YobmV3dmlldykpOwotICAgICAgICAvKiBYWFg6ICBUaGlzIG5lZWRzIHRvIGJlIGZpeGVkIHNvIGl0IGFjdHVhbGx5IHJldHVybnMgYSBzdWItdmlldyAqLwotICAgICAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJm5ld3ZpZXcpOwotICAgIH0KLX0KLQotLyoKLSAgbWVtW29ial0gcmV0dXJucyBhIGJ5dGVzIG9iamVjdCBob2xkaW5nIHRoZSBkYXRhIGZvciBvbmUgZWxlbWVudCBpZgotICAgICAgICAgICBvYmogZnVsbHkgaW5kZXhlcyB0aGUgbWVtb3J5IHZpZXcgb3IgYW5vdGhlciBtZW1vcnktdmlldyBvYmplY3QKLSAgICAgICAgICAgaWYgaXQgZG9lcyBub3QuCi0KLSAgICAgICAgICAgMC1kIG1lbW9yeS12aWV3IG9iamVjdHMgY2FuIGJlIHJlZmVyZW5jZWQgdXNpbmcgLi4uIG9yICgpIGJ1dAotICAgICAgICAgICBub3Qgd2l0aCBhbnl0aGluZyBlbHNlLgotICovCi1zdGF0aWMgUHlPYmplY3QgKgotbWVtb3J5X3N1YnNjcmlwdChQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXkpCi17Ci0gICAgUHlfYnVmZmVyICp2aWV3OwotICAgIHZpZXcgPSAmKHNlbGYtPnZpZXcpOwotICAgIAotICAgIENIRUNLX1JFTEVBU0VEKHNlbGYpOwotICAgIGlmICh2aWV3LT5uZGltID09IDApIHsKLSAgICAgICAgaWYgKGtleSA9PSBQeV9FbGxpcHNpcyB8fAotICAgICAgICAgICAgKFB5VHVwbGVfQ2hlY2soa2V5KSAmJiBQeVR1cGxlX0dFVF9TSVpFKGtleSk9PTApKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBpbmRleGluZyBvZiAwLWRpbSBtZW1vcnkiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIE5VTEwpOwotICAgICAgICBpZiAocmVzdWx0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBtZW1vcnlfaXRlbShzZWxmLCByZXN1bHQpOwotICAgIH0KLSAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7Ci0KLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgZ2V0X3NoYXBlMCh2aWV3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgaWYgKHN0ZXAgPT0gMSAmJiB2aWV3LT5uZGltID09IDEpIHsKLSAgICAgICAgICAgIFB5X2J1ZmZlciBuZXd2aWV3OwotICAgICAgICAgICAgdm9pZCAqbmV3YnVmID0gKGNoYXIgKikgdmlldy0+YnVmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0YXJ0ICogdmlldy0+aXRlbXNpemU7Ci0gICAgICAgICAgICBpbnQgbmV3ZmxhZ3MgPSB2aWV3LT5yZWFkb25seQotICAgICAgICAgICAgICAgICAgICA/IFB5QlVGX0NPTlRJR19STyA6IFB5QlVGX0NPTlRJRzsKLSAgICAKLSAgICAgICAgICAgIC8qIFhYWCBUaGVyZSBzaG91bGQgYmUgYW4gQVBJIHRvIGNyZWF0ZSBhIHN1YmJ1ZmZlciAqLwotICAgICAgICAgICAgaWYgKHZpZXctPm9iaiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2aWV3LT5vYmosICZuZXd2aWV3LCBuZXdmbGFncykgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbmV3dmlldyA9ICp2aWV3OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV3dmlldy5idWYgPSBuZXdidWY7Ci0gICAgICAgICAgICBuZXd2aWV3LmxlbiA9IHNsaWNlbGVuZ3RoICogbmV3dmlldy5pdGVtc2l6ZTsKLSAgICAgICAgICAgIG5ld3ZpZXcuZm9ybWF0ID0gdmlldy0+Zm9ybWF0OwotICAgICAgICAgICAgbmV3dmlldy5zaGFwZSA9ICYobmV3dmlldy5zbWFsbHRhYmxlWzBdKTsKLSAgICAgICAgICAgIG5ld3ZpZXcuc2hhcGVbMF0gPSBzbGljZWxlbmd0aDsKLSAgICAgICAgICAgIG5ld3ZpZXcuc3RyaWRlcyA9ICYobmV3dmlldy5pdGVtc2l6ZSk7Ci0gICAgICAgICAgICByZXR1cm4gUHlNZW1vcnlWaWV3X0Zyb21CdWZmZXIoJm5ld3ZpZXcpOwotICAgICAgICB9Ci0gICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAiY2Fubm90IGluZGV4IG1lbW9yeSB1c2luZyBcIiUuMjAwc1wiIiwgCi0gICAgICAgIGtleS0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLQotLyogTmVlZCB0byBzdXBwb3J0IGFzc2lnbmluZyBtZW1vcnkgaWYgd2UgY2FuICovCi1zdGF0aWMgaW50Ci1tZW1vcnlfYXNzX3N1YihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKLXsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0LCBsZW4sIGJ5dGVsZW47Ci0gICAgUHlfYnVmZmVyIHNyY3ZpZXc7Ci0gICAgUHlfYnVmZmVyICp2aWV3ID0gJihzZWxmLT52aWV3KTsKLSAgICBjaGFyICpzcmNidWYsICpkZXN0YnVmOwotCi0gICAgQ0hFQ0tfUkVMRUFTRURfSU5UKHNlbGYpOwotICAgIGlmICh2aWV3LT5yZWFkb25seSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgImNhbm5vdCBtb2RpZnkgcmVhZC1vbmx5IG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGRlbGV0ZSBtZW1vcnkiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAodmlldy0+bmRpbSAhPSAxKSB7Ci0gICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5SW5kZXhfQ2hlY2soa2V5KSkgewotICAgICAgICBzdGFydCA9IFB5TnVtYmVyX0FzU3NpemVfdChrZXksIE5VTEwpOwotICAgICAgICBpZiAoc3RhcnQgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgewotICAgICAgICAgICAgc3RhcnQgKz0gZ2V0X3NoYXBlMCh2aWV3KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKHN0YXJ0IDwgMCkgfHwgKHN0YXJ0ID49IGdldF9zaGFwZTAodmlldykpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZXggb3V0IG9mIGJvdW5kcyIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGxlbiA9IDE7Ci0gICAgfQotICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgewotICAgICAgICBQeV9zc2l6ZV90IHN0b3AsIHN0ZXA7Ci0KLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KGtleSwgZ2V0X3NoYXBlMCh2aWV3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJmxlbikgPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHN0ZXAgIT0gMSkgewotICAgICAgICAgICAgUHlFcnJfU2V0Tm9uZShQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgaW5kZXggbWVtb3J5IHVzaW5nIFwiJS4yMDBzXCIiLCAKLSAgICAgICAgICAgIGtleS0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2YWx1ZSwgJnNyY3ZpZXcsIFB5QlVGX0NPTlRJR19STykgPT0gLTEpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICAvKiBYWFggc2hvdWxkIHdlIGFsbG93IGFzc2lnbm1lbnQgb2YgZGlmZmVyZW50IGl0ZW0gc2l6ZXMKLSAgICAgICBhcyBsb25nIGFzIHRoZSBieXRlIGxlbmd0aCBpcyB0aGUgc2FtZT8KLSAgICAgICAoZS5nLiBhc3NpZ24gMiBzaG9ydHMgdG8gYSA0LWJ5dGUgc2xpY2UpICovCi0gICAgaWYgKHNyY3ZpZXcuaXRlbXNpemUgIT0gdmlldy0+aXRlbXNpemUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJtaXNtYXRjaGluZyBpdGVtIHNpemVzIGZvciBcIiUuMjAwc1wiIGFuZCBcIiUuMjAwc1wiIiwgCi0gICAgICAgICAgICB2aWV3LT5vYmotPm9iX3R5cGUtPnRwX25hbWUsIHNyY3ZpZXcub2JqLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgfQotICAgIGJ5dGVsZW4gPSBsZW4gKiB2aWV3LT5pdGVtc2l6ZTsKLSAgICBpZiAoYnl0ZWxlbiAhPSBzcmN2aWV3LmxlbikgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICJjYW5ub3QgbW9kaWZ5IHNpemUgb2YgbWVtb3J5dmlldyBvYmplY3QiKTsKLSAgICAgICAgZ290byBfZXJyb3I7Ci0gICAgfQotICAgIC8qIERvIHRoZSBhY3R1YWwgY29weSAqLwotICAgIGRlc3RidWYgPSAoY2hhciAqKSB2aWV3LT5idWYgKyBzdGFydCAqIHZpZXctPml0ZW1zaXplOwotICAgIHNyY2J1ZiA9IChjaGFyICopIHNyY3ZpZXcuYnVmOwotICAgIGlmIChkZXN0YnVmICsgYnl0ZWxlbiA8IHNyY2J1ZiB8fCBzcmNidWYgKyBieXRlbGVuIDwgZGVzdGJ1ZikKLSAgICAgICAgLyogTm8gb3ZlcmxhcHBpbmcgKi8KLSAgICAgICAgbWVtY3B5KGRlc3RidWYsIHNyY2J1ZiwgYnl0ZWxlbik7Ci0gICAgZWxzZQotICAgICAgICBtZW1tb3ZlKGRlc3RidWYsIHNyY2J1ZiwgYnl0ZWxlbik7Ci0KLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzcmN2aWV3KTsKLSAgICByZXR1cm4gMDsKLQotX2Vycm9yOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNyY3ZpZXcpOwotICAgIHJldHVybiAtMTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLW1lbW9yeV9yaWNoY29tcGFyZShQeU9iamVjdCAqdiwgUHlPYmplY3QgKncsIGludCBvcCkKLXsKLSAgICBQeV9idWZmZXIgdnYsIHd3OwotICAgIGludCBlcXVhbCA9IDA7Ci0gICAgUHlPYmplY3QgKnJlczsKLQotICAgIHZ2Lm9iaiA9IE5VTEw7Ci0gICAgd3cub2JqID0gTlVMTDsKLSAgICBpZiAob3AgIT0gUHlfRVEgJiYgb3AgIT0gUHlfTkUpCi0gICAgICAgIGdvdG8gX25vdGltcGw7Ci0gICAgaWYgKChQeU1lbW9yeVZpZXdfQ2hlY2sodikgJiYgSVNfUkVMRUFTRUQodikpIHx8Ci0gICAgICAgIChQeU1lbW9yeVZpZXdfQ2hlY2sodykgJiYgSVNfUkVMRUFTRUQodykpKSB7Ci0gICAgICAgIGVxdWFsID0gKHYgPT0gdyk7Ci0gICAgICAgIGdvdG8gX2VuZDsKLSAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih2LCAmdnYsIFB5QlVGX0NPTlRJR19STykgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZ290byBfbm90aW1wbDsKLSAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcih3LCAmd3csIFB5QlVGX0NPTlRJR19STykgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgZ290byBfbm90aW1wbDsKLSAgICB9Ci0KLSAgICBpZiAodnYuaXRlbXNpemUgIT0gd3cuaXRlbXNpemUgfHwgdnYubGVuICE9IHd3LmxlbikKLSAgICAgICAgZ290byBfZW5kOwotCi0gICAgZXF1YWwgPSAhbWVtY21wKHZ2LmJ1Ziwgd3cuYnVmLCB2di5sZW4pOwotCi1fZW5kOgotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZ2KTsKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3dyk7Ci0gICAgaWYgKChlcXVhbCAmJiBvcCA9PSBQeV9FUSkgfHwgKCFlcXVhbCAmJiBvcCA9PSBQeV9ORSkpCi0gICAgICAgIHJlcyA9IFB5X1RydWU7Ci0gICAgZWxzZQotICAgICAgICByZXMgPSBQeV9GYWxzZTsKLSAgICBQeV9JTkNSRUYocmVzKTsKLSAgICByZXR1cm4gcmVzOwotCi1fbm90aW1wbDoKLSAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2dik7Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmd3cpOwotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotfQotCi0KLXN0YXRpYyBpbnQKLW1lbW9yeV90cmF2ZXJzZShQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQotewotICAgIGlmIChzZWxmLT52aWV3Lm9iaiAhPSBOVUxMKQotICAgICAgICBQeV9WSVNJVChzZWxmLT52aWV3Lm9iaik7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLW1lbW9yeV9jbGVhcihQeU1lbW9yeVZpZXdPYmplY3QgKnNlbGYpCi17Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VsZi0+dmlldyk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLQotLyogQXMgbWFwcGluZyAqLwotc3RhdGljIFB5TWFwcGluZ01ldGhvZHMgbWVtb3J5X2FzX21hcHBpbmcgPSB7Ci0gICAgKGxlbmZ1bmMpbWVtb3J5X2xlbmd0aCwgICAgICAgICAgICAgICAvKiBtcF9sZW5ndGggKi8KLSAgICAoYmluYXJ5ZnVuYyltZW1vcnlfc3Vic2NyaXB0LCAgICAgICAgIC8qIG1wX3N1YnNjcmlwdCAqLwotICAgIChvYmpvYmphcmdwcm9jKW1lbW9yeV9hc3Nfc3ViLCAgICAgICAgLyogbXBfYXNzX3N1YnNjcmlwdCAqLwotfTsKLQotc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1lbW9yeV9hc19zZXF1ZW5jZSA9IHsKLSAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3FfbGVuZ3RoICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNxX2NvbmNhdCAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzcV9yZXBlYXQgKi8KLSAgICAgICAgKHNzaXplYXJnZnVuYyltZW1vcnlfaXRlbSwgICAgICAgICAgLyogc3FfaXRlbSAqLwotfTsKLQotLyogQnVmZmVyIG1ldGhvZHMgKi8KLQotc3RhdGljIFB5QnVmZmVyUHJvY3MgbWVtb3J5X2FzX2J1ZmZlciA9IHsKLSAgICAoZ2V0YnVmZmVycHJvYyltZW1vcnlfZ2V0YnVmLCAgICAgICAgIC8qIGJmX2dldGJ1ZmZlciAqLwotICAgIChyZWxlYXNlYnVmZmVycHJvYyltZW1vcnlfcmVsZWFzZWJ1ZiwgLyogYmZfcmVsZWFzZWJ1ZmZlciAqLworICAgIHsicmVsZWFzZSIsICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3JlbGVhc2UsIE1FVEhfTk9BUkdTLCBtZW1vcnlfcmVsZWFzZV9kb2N9LAorICAgIHsidG9ieXRlcyIsICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvYnl0ZXMsIE1FVEhfTk9BUkdTLCBtZW1vcnlfdG9ieXRlc19kb2N9LAorICAgIHsidG9saXN0IiwgICAgICAoUHlDRnVuY3Rpb24pbWVtb3J5X3RvbGlzdCwgTUVUSF9OT0FSR1MsIG1lbW9yeV90b2xpc3RfZG9jfSwKKyAgICB7ImNhc3QiLCAgICAgICAgKFB5Q0Z1bmN0aW9uKW1lbW9yeV9jYXN0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgbWVtb3J5X2Nhc3RfZG9jfSwKKyAgICB7Il9fZW50ZXJfXyIsICAgbWVtb3J5X2VudGVyLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJfX2V4aXRfXyIsICAgIG1lbW9yeV9leGl0LCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCAgICAgICAgICBOVUxMfQogfTsKIAogCiBQeVR5cGVPYmplY3QgUHlNZW1vcnlWaWV3X1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKLSAgICAibWVtb3J5dmlldyIsCi0gICAgc2l6ZW9mKFB5TWVtb3J5Vmlld09iamVjdCksCi0gICAgMCwKKyAgICAibWVtb3J5dmlldyIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgb2Zmc2V0b2YoUHlNZW1vcnlWaWV3T2JqZWN0LCBvYl9hcnJheSksICAgLyogdHBfYmFzaWNzaXplICovCisgICAgc2l6ZW9mKFB5X3NzaXplX3QpLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAoZGVzdHJ1Y3RvciltZW1vcnlfZGVhbGxvYywgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCkBAIC04NjIsNyArMjk0OSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCiAgICAgJm1lbW9yeV9hc19zZXF1ZW5jZSwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAmbWVtb3J5X2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIChoYXNoZnVuYyltZW1vcnlfaGFzaCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCiAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KQEAgLTg3Myw3ICsyOTYwLDcgQEAKICAgICAodHJhdmVyc2Vwcm9jKW1lbW9yeV90cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIChpbnF1aXJ5KW1lbW9yeV9jbGVhciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCiAgICAgbWVtb3J5X3JpY2hjb21wYXJlLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIG9mZnNldG9mKFB5TWVtb3J5Vmlld09iamVjdCwgd2Vha3JlZmxpc3QpLC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgbWVtb3J5X21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYyBiL09iamVjdHMvbWV0aG9kb2JqZWN0LmMKaW5kZXggZjFhOWY0Yi4uMWQxNDNmOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZXRob2RvYmplY3QuYworKysgYi9PYmplY3RzL21ldGhvZG9iamVjdC5jCkBAIC00NCw3ICs0NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuICgoUHlDRnVuY3Rpb25PYmplY3QgKilvcCkgLT4gbV9tbCAtPiBtbF9tZXRoOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04ob3ApOwogfQogCiBQeU9iamVjdCAqCkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuICgoUHlDRnVuY3Rpb25PYmplY3QgKilvcCkgLT4gbV9zZWxmOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfU0VMRihvcCk7CiB9CiAKIGludApAQCAtNjQsNyArNjQsNyBAQAogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICByZXR1cm4gKChQeUNGdW5jdGlvbk9iamVjdCAqKW9wKSAtPiBtX21sIC0+IG1sX2ZsYWdzOworICAgIHJldHVybiBQeUNGdW5jdGlvbl9HRVRfRkxBR1Mob3ApOwogfQogCiBQeU9iamVjdCAqCkBAIC0xNTEsNiArMTUxLDQxIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG0tPm1fbWwtPm1sX25hbWUpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWV0aF9nZXRfX3F1YWxuYW1lX18oUHlDRnVuY3Rpb25PYmplY3QgKm0sIHZvaWQgKmNsb3N1cmUpCit7CisgICAgLyogSWYgX19zZWxmX18gaXMgYSBtb2R1bGUgb3IgTlVMTCwgcmV0dXJuIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBsZW4uX19xdWFsbmFtZV9fID09ICdsZW4nKQorCisgICAgICAgSWYgX19zZWxmX18gaXMgYSB0eXBlLCByZXR1cm4gbS5fX3NlbGZfXy5fX3F1YWxuYW1lX18gKyAnLicgKyBtLl9fbmFtZV9fCisgICAgICAgKGUuZy4gZGljdC5mcm9ta2V5cy5fX3F1YWxuYW1lX18gPT0gJ2RpY3QuZnJvbWtleXMnKQorCisgICAgICAgT3RoZXJ3aXNlIHJldHVybiB0eXBlKG0uX19zZWxmX18pLl9fcXVhbG5hbWVfXyArICcuJyArIG0uX19uYW1lX18KKyAgICAgICAoZS5nLiBbXS5hcHBlbmQuX19xdWFsbmFtZV9fID09ICdsaXN0LmFwcGVuZCcpICovCisgICAgUHlPYmplY3QgKnR5cGUsICp0eXBlX3F1YWxuYW1lLCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKF9fcXVhbG5hbWVfXyk7CisKKyAgICBpZiAobS0+bV9zZWxmID09IE5VTEwgfHwgUHlNb2R1bGVfQ2hlY2sobS0+bV9zZWxmKSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKG0tPm1fbWwtPm1sX25hbWUpOworCisgICAgdHlwZSA9IFB5VHlwZV9DaGVjayhtLT5tX3NlbGYpID8gbS0+bV9zZWxmIDogKFB5T2JqZWN0KilQeV9UWVBFKG0tPm1fc2VsZik7CisKKyAgICB0eXBlX3F1YWxuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZCh0eXBlLCAmUHlJZF9fX3F1YWxuYW1lX18pOworICAgIGlmICh0eXBlX3F1YWxuYW1lID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodHlwZV9xdWFsbmFtZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIjxtZXRob2Q+Ll9fY2xhc3NfXy4iCisgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIGlzIG5vdCBhIHVuaWNvZGUgb2JqZWN0Iik7CisgICAgICAgIFB5X1hERUNSRUYodHlwZV9xdWFsbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlUy4lcyIsIHR5cGVfcXVhbG5hbWUsIG0tPm1fbWwtPm1sX25hbWUpOworICAgIFB5X0RFQ1JFRih0eXBlX3F1YWxuYW1lKTsKKyAgICByZXR1cm4gcmVzOworfQorCiBzdGF0aWMgaW50CiBtZXRoX3RyYXZlcnNlKFB5Q0Z1bmN0aW9uT2JqZWN0ICptLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKQEAgLTE2NCw3ICsxOTksNyBAQAogewogICAgIFB5T2JqZWN0ICpzZWxmOwogCi0gICAgc2VsZiA9IG0tPm1fc2VsZjsKKyAgICBzZWxmID0gUHlDRnVuY3Rpb25fR0VUX1NFTEYobSk7CiAgICAgaWYgKHNlbGYgPT0gTlVMTCkKICAgICAgICAgc2VsZiA9IFB5X05vbmU7CiAgICAgUHlfSU5DUkVGKHNlbGYpOwpAQCAtMTc0LDYgKzIwOSw3IEBACiBzdGF0aWMgUHlHZXRTZXREZWYgbWV0aF9nZXRzZXRzIFtdID0gewogICAgIHsiX19kb2NfXyIsICAoZ2V0dGVyKW1ldGhfZ2V0X19kb2NfXywgIE5VTEwsIE5VTEx9LAogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKW1ldGhfZ2V0X19uYW1lX18sIE5VTEwsIE5VTEx9LAorICAgIHsiX19xdWFsbmFtZV9fIiwgKGdldHRlciltZXRoX2dldF9fcXVhbG5hbWVfXywgTlVMTCwgTlVMTH0sCiAgICAgeyJfX3NlbGZfXyIsIChnZXR0ZXIpbWV0aF9nZXRfX3NlbGZfXywgTlVMTCwgTlVMTH0sCiAgICAgezB9CiB9OwpAQCAtMjA4LDggKzI0NCw3IEBACiAgICAgICAgICFQeUNGdW5jdGlvbl9DaGVjayhzZWxmKSB8fAogICAgICAgICAhUHlDRnVuY3Rpb25fQ2hlY2sob3RoZXIpKQogICAgIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgfQogICAgIGEgPSAoUHlDRnVuY3Rpb25PYmplY3QgKilzZWxmOwogICAgIGIgPSAoUHlDRnVuY3Rpb25PYmplY3QgKilvdGhlcjsKQEAgLTMwMyw2ICszMzgsMTUgQEAKICAgICAodm9pZClQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0KCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeUNGdW5jdGlvbl9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5Q0Z1bmN0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeUNGdW5jdGlvbikpOworfQorCiAvKiBQeUNGdW5jdGlvbl9OZXcoKSBpcyBub3cganVzdCBhIG1hY3JvIHRoYXQgY2FsbHMgUHlDRnVuY3Rpb25fTmV3RXgoKSwKICAgIGJ1dCBpdCdzIHBhcnQgb2YgdGhlIEFQSSBzbyB3ZSBuZWVkIHRvIGtlZXAgYSBmdW5jdGlvbiBhcm91bmQgdGhhdAogICAgZXhpc3RpbmcgQyBleHRlbnNpb25zIGNhbiBjYWxsLgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKaW5kZXggNTMzZGI0Ni4uMmYyYmQzNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tb2R1bGVvYmplY3QuYworKysgYi9PYmplY3RzL21vZHVsZW9iamVjdC5jCkBAIC0yNywzNiArMjcsNDUgQEAKIAogCiBQeU9iamVjdCAqCi1QeU1vZHVsZV9OZXcoY29uc3QgY2hhciAqbmFtZSkKK1B5TW9kdWxlX05ld09iamVjdChQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU1vZHVsZU9iamVjdCAqbTsKLSAgICBQeU9iamVjdCAqbmFtZW9iajsKICAgICBtID0gUHlPYmplY3RfR0NfTmV3KFB5TW9kdWxlT2JqZWN0LCAmUHlNb2R1bGVfVHlwZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbS0+bWRfZGVmID0gTlVMTDsKICAgICBtLT5tZF9zdGF0ZSA9IE5VTEw7Ci0gICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwogICAgIG0tPm1kX2RpY3QgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKG0tPm1kX2RpY3QgPT0gTlVMTCB8fCBuYW1lb2JqID09IE5VTEwpCisgICAgaWYgKG0tPm1kX2RpY3QgPT0gTlVMTCkKICAgICAgICAgZ290byBmYWlsOwotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lb2JqKSAhPSAwKQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19uYW1lX18iLCBuYW1lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG0tPm1kX2RpY3QsICJfX2RvY19fIiwgUHlfTm9uZSkgIT0gMCkKICAgICAgICAgZ290byBmYWlsOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtLT5tZF9kaWN0LCAiX19wYWNrYWdlX18iLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICBnb3RvIGZhaWw7Ci0gICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIFB5T2JqZWN0X0dDX1RyYWNrKG0pOwogICAgIHJldHVybiAoUHlPYmplY3QgKiltOwogCiAgZmFpbDoKLSAgICBQeV9YREVDUkVGKG5hbWVvYmopOwogICAgIFB5X0RFQ1JFRihtKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgorUHlNb2R1bGVfTmV3KGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm5hbWVvYmosICptb2R1bGU7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1vZHVsZSA9IFB5TW9kdWxlX05ld09iamVjdChuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CisgICAgcmV0dXJuIG1vZHVsZTsKK30KKworCitQeU9iamVjdCAqCiBQeU1vZHVsZV9DcmVhdGUyKHN0cnVjdCBQeU1vZHVsZURlZiogbW9kdWxlLCBpbnQgbW9kdWxlX2FwaV92ZXJzaW9uKQogewogICAgIFB5T2JqZWN0ICpkLCAqdiwgKm47CkBAIC0xNzUsMjQgKzE4NCwzNSBAQAogICAgIHJldHVybiBkOwogfQogCi1jb25zdCBjaGFyICoKLVB5TW9kdWxlX0dldE5hbWUoUHlPYmplY3QgKm0pCitQeU9iamVjdCoKK1B5TW9kdWxlX0dldE5hbWVPYmplY3QoUHlPYmplY3QgKm0pCiB7CiAgICAgUHlPYmplY3QgKmQ7Ci0gICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgaWYgKCFQeU1vZHVsZV9DaGVjayhtKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZCA9ICgoUHlNb2R1bGVPYmplY3QgKiltKS0+bWRfZGljdDsKICAgICBpZiAoZCA9PSBOVUxMIHx8Ci0gICAgICAgIChuYW1lb2JqID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fbmFtZV9fIikpID09IE5VTEwgfHwKLSAgICAgICAgIVB5VW5pY29kZV9DaGVjayhuYW1lb2JqKSkKKyAgICAgICAgKG5hbWUgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19uYW1lX18iKSkgPT0gTlVMTCB8fAorICAgICAgICAhUHlVbmljb2RlX0NoZWNrKG5hbWUpKQogICAgIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAibmFtZWxlc3MgbW9kdWxlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZyhuYW1lb2JqKTsKKyAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK2NvbnN0IGNoYXIgKgorUHlNb2R1bGVfR2V0TmFtZShQeU9iamVjdCAqbSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QobSk7CisgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgUHlfREVDUkVGKG5hbWUpOyAgIC8qIG1vZHVsZSBkaWN0IGhhcyBzdGlsbCBhIHJlZmVyZW5jZSAqLworICAgIHJldHVybiBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwogfQogCiBQeU9iamVjdCoKQEAgLTIyNSw3ICsyNDUsNyBAQAogICAgIGlmIChmaWxlb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHV0ZjggPSBfUHlVbmljb2RlX0FzU3RyaW5nKGZpbGVvYmopOwotICAgIFB5X0RFQ1JFRihmaWxlb2JqKTsKKyAgICBQeV9ERUNSRUYoZmlsZW9iaik7ICAgLyogbW9kdWxlIGRpY3QgaGFzIHN0aWxsIGEgcmVmZXJlbmNlICovCiAgICAgcmV0dXJuIHV0Zjg7CiB9CiAKQEAgLTI3MSw4ICsyOTEsOCBAQAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKFB5RGljdF9OZXh0KGQsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgUHlVbmljb2RlX0NoZWNrKGtleSkpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShrZXkpOwotICAgICAgICAgICAgaWYgKHVbMF0gPT0gJ18nICYmIHVbMV0gIT0gJ18nKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDApID09ICdfJyAmJgorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoa2V5LCAxKSAhPSAnXycpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChzICE9IE5VTEwpCkBAIC0yODksOSArMzA5LDggQEAKICAgICBwb3MgPSAwOwogICAgIHdoaWxlIChQeURpY3RfTmV4dChkLCAmcG9zLCAma2V5LCAmdmFsdWUpKSB7CiAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmIFB5VW5pY29kZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KTsKLSAgICAgICAgICAgIGlmICh1WzBdICE9ICdfJwotICAgICAgICAgICAgICAgIHx8IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgIl9fYnVpbHRpbnNfXyIpICE9IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihrZXksIDApICE9ICdfJyB8fAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgIl9fYnVpbHRpbnNfXyIpICE9IDApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnID4gMSkgewogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwpAQCAtMzUzLDIxICszNzIsNTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtb2R1bGVfcmVwcihQeU1vZHVsZU9iamVjdCAqbSkKIHsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwgKnJlcHI7CisgICAgUHlPYmplY3QgKm5hbWUsICpmaWxlbmFtZSwgKnJlcHIsICpsb2FkZXIgPSBOVUxMOwogCi0gICAgbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUoKFB5T2JqZWN0ICopbSk7CisgICAgLyogU2VlIGlmIHRoZSBtb2R1bGUgaGFzIGFuIF9fbG9hZGVyX18uICBJZiBpdCBkb2VzLCBnaXZlIHRoZSBsb2FkZXIgdGhlCisgICAgICogZmlyc3Qgc2hvdCBhdCBwcm9kdWNpbmcgYSByZXByIGZvciB0aGUgbW9kdWxlLgorICAgICAqLworICAgIGlmIChtLT5tZF9kaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgbG9hZGVyID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobS0+bWRfZGljdCwgIl9fbG9hZGVyX18iKTsKKyAgICB9CisgICAgaWYgKGxvYWRlciAhPSBOVUxMKSB7CisgICAgICAgIHJlcHIgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxvYWRlciwgIm1vZHVsZV9yZXByIiwgIihPKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKW0sIE5VTEwpOworICAgICAgICBpZiAocmVwciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHJlcHI7CisgICAgICAgIH0KKyAgICB9CisgICAgLyogX19sb2FkZXJfXy5tb2R1bGVfcmVwcihtKSBkaWQgbm90IHByb3ZpZGUgdXMgd2l0aCBhIHJlcHIuICBOZXh0LCBzZWUgaWYKKyAgICAgKiB0aGUgbW9kdWxlIGhhcyBhbiBfX2ZpbGVfXy4gIElmIGl0IGRvZXNuJ3QgdGhlbiB1c2UgcmVwcihfX2xvYWRlcl9fKSBpZgorICAgICAqIGl0IGV4aXN0cywgb3RoZXJ3aXNlLCBqdXN0IHVzZSBtb2R1bGUuX19uYW1lX18uCisgICAgICovCisgICAgbmFtZSA9IFB5TW9kdWxlX0dldE5hbWVPYmplY3QoKFB5T2JqZWN0ICopbSk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBuYW1lID0gIj8iOworICAgICAgICBuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKCI/IiwgMSk7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZmlsZW5hbWUgPSBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdCgoUHlPYmplY3QgKiltKTsKICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIjxtb2R1bGUgJyVzJyAoYnVpbHQtaW4pPiIsIG5hbWUpOworICAgICAgICAvKiBUaGVyZSdzIG5vIG0uX19maWxlX18sIHNvIGlmIHRoZXJlIHdhcyBhbiBfX2xvYWRlcl9fLCB1c2UgdGhhdCBpbgorICAgICAgICAgKiB0aGUgcmVwciwgb3RoZXJ3aXNlLCB0aGUgb25seSB0aGluZyB5b3UgY2FuIHVzZSBpcyBtLl9fbmFtZV9fCisgICAgICAgICAqLworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUj4iLCBuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiAoJVIpPiIsIG5hbWUsIGxvYWRlcik7CisgICAgICAgIH0KICAgICB9Ci0gICAgcmVwciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8bW9kdWxlICclcycgZnJvbSAnJVUnPiIsIG5hbWUsIGZpbGVuYW1lKTsKLSAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOworICAgIC8qIEZpbmFsbHksIHVzZSBtLl9fZmlsZV9fICovCisgICAgZWxzZSB7CisgICAgICAgIHJlcHIgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPG1vZHVsZSAlUiBmcm9tICVSPiIsIG5hbWUsIGZpbGVuYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICB9CisgICAgUHlfREVDUkVGKG5hbWUpOwogICAgIHJldHVybiByZXByOwogfQogCkBAIC0zOTUsNiArNDQ3LDM1IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCittb2R1bGVfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fZGljdF9fKTsKKworICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RGljdF9DaGVjayhkaWN0KSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBQeU1vZHVsZV9HZXROYW1lKHNlbGYpOworICAgICAgICAgICAgaWYgKG5hbWUpCisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBpcyBub3QgYSBkaWN0aW9uYXJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiBtb2R1bGVfbWV0aG9kc1tdID0geworICAgIHsiX19kaXJfXyIsIG1vZHVsZV9kaXIsIE1FVEhfTk9BUkdTLAorICAgICBQeURvY19TVFIoIl9fZGlyX18oKSAtPiBsaXN0XG5zcGVjaWFsaXplZCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKKyAgICB7MH0KK307CisKIAogUHlEb2NfU1RSVkFSKG1vZHVsZV9kb2MsCiAibW9kdWxlKG5hbWVbLCBkb2NdKVxuXApAQCAtNDMxLDcgKzUxMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBtb2R1bGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBtb2R1bGVfbWVtYmVycywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9uYW1lc3BhY2VvYmplY3QuYyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYyNzhkMwotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvbmFtZXNwYWNlb2JqZWN0LmMKQEAgLTAsMCArMSwyMjUgQEAKKy8qIG5hbWVzcGFjZSBvYmplY3QgaW1wbGVtZW50YXRpb24gKi8KKworI2luY2x1ZGUgIlB5dGhvbi5oIgorI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKm5zX2RpY3Q7Cit9IF9QeU5hbWVzcGFjZU9iamVjdDsKKworCitzdGF0aWMgUHlNZW1iZXJEZWYgbmFtZXNwYWNlX21lbWJlcnNbXSA9IHsKKyAgICB7Il9fZGljdF9fIiwgVF9PQkpFQ1QsIG9mZnNldG9mKF9QeU5hbWVzcGFjZU9iamVjdCwgbnNfZGljdCksIFJFQURPTkxZfSwKKyAgICB7TlVMTH0KK307CisKKworLyogTWV0aG9kcyAqLworCitzdGF0aWMgUHlPYmplY3QgKgorbmFtZXNwYWNlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqc2VsZjsKKworICAgIGFzc2VydCh0eXBlICE9IE5VTEwgJiYgdHlwZS0+dHBfYWxsb2MgIT0gTlVMTCk7CisgICAgc2VsZiA9IHR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOworICAgIGlmIChzZWxmICE9IE5VTEwpIHsKKyAgICAgICAgX1B5TmFtZXNwYWNlT2JqZWN0ICpucyA9IChfUHlOYW1lc3BhY2VPYmplY3QgKilzZWxmOworICAgICAgICBucy0+bnNfZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKG5zLT5uc19kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihucyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc2VsZjsKK30KKworCitzdGF0aWMgaW50CituYW1lc3BhY2VfaW5pdChfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgLyogaWdub3JlIGFyZ3MgaWYgaXQncyBOVUxMIG9yIGVtcHR5ICovCisgICAgaWYgKGFyZ3MgIT0gTlVMTCkgeworICAgICAgICBQeV9zc2l6ZV90IGFyZ2NvdW50ID0gUHlPYmplY3RfU2l6ZShhcmdzKTsKKyAgICAgICAgaWYgKGFyZ2NvdW50IDwgMCkKKyAgICAgICAgICAgIHJldHVybiBhcmdjb3VudDsKKyAgICAgICAgZWxzZSBpZiAoYXJnY291bnQgPiAwKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAibm8gcG9zaXRpb25hbCBhcmd1bWVudHMgZXhwZWN0ZWQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoa3dkcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gUHlEaWN0X1VwZGF0ZShucy0+bnNfZGljdCwga3dkcyk7Cit9CisKKworc3RhdGljIHZvaWQKK25hbWVzcGFjZV9kZWFsbG9jKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMpCit7CisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhucyk7CisgICAgUHlfQ0xFQVIobnMtPm5zX2RpY3QpOworICAgIFB5X1RZUEUobnMpLT50cF9mcmVlKChQeU9iamVjdCAqKW5zKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorbmFtZXNwYWNlX3JlcHIoX1B5TmFtZXNwYWNlT2JqZWN0ICpucykKK3sKKyAgICBpbnQgaSwgbG9vcF9lcnJvciA9IDA7CisgICAgUHlPYmplY3QgKnBhaXJzID0gTlVMTCwgKmQgPSBOVUxMLCAqa2V5cyA9IE5VTEwsICprZXlzX2l0ZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICprZXk7CisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwgKnBhaXJzcmVwciwgKnJlcHIgPSBOVUxMOworCisgICAgaSA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilucyk7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgICByZXR1cm4gaSA+IDAgPyBQeVVuaWNvZGVfRnJvbVN0cmluZygibmFtZXNwYWNlKC4uLikiKSA6IE5VTEw7CisgICAgfQorCisgICAgcGFpcnMgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChwYWlycyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgZCA9ICgoX1B5TmFtZXNwYWNlT2JqZWN0ICopbnMpLT5uc19kaWN0OworICAgIGFzc2VydChkICE9IE5VTEwpOworICAgIFB5X0lOQ1JFRihkKTsKKworICAgIGtleXMgPSBQeURpY3RfS2V5cyhkKTsKKyAgICBpZiAoa2V5cyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGlmIChQeUxpc3RfU29ydChrZXlzKSAhPSAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAga2V5c19pdGVyID0gUHlPYmplY3RfR2V0SXRlcihrZXlzKTsKKyAgICBpZiAoa2V5c19pdGVyID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICB3aGlsZSAoKGtleSA9IFB5SXRlcl9OZXh0KGtleXNfaXRlcikpICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5VW5pY29kZV9HRVRfU0laRShrZXkpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlLCAqaXRlbTsKKworICAgICAgICAgICAgdmFsdWUgPSBQeURpY3RfR2V0SXRlbShkLCBrZXkpOworICAgICAgICAgICAgYXNzZXJ0KHZhbHVlICE9IE5VTEwpOworCisgICAgICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVTPSVSIiwga2V5LCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbG9vcF9lcnJvciA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb29wX2Vycm9yID0gUHlMaXN0X0FwcGVuZChwYWlycywgaXRlbSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgIGlmIChsb29wX2Vycm9yKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBzZXBhcmF0b3IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiLCAiKTsKKyAgICBpZiAoc2VwYXJhdG9yID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBwYWlyc3JlcHIgPSBQeVVuaWNvZGVfSm9pbihzZXBhcmF0b3IsIHBhaXJzKTsKKyAgICBQeV9ERUNSRUYoc2VwYXJhdG9yKTsKKyAgICBpZiAocGFpcnNyZXByID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKCVTKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoUHlPYmplY3QgKilucyktPm9iX3R5cGUtPnRwX25hbWUsIHBhaXJzcmVwcik7CisgICAgUHlfREVDUkVGKHBhaXJzcmVwcik7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYocGFpcnMpOworICAgIFB5X1hERUNSRUYoZCk7CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICBQeV9YREVDUkVGKGtleXNfaXRlcik7CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKW5zKTsKKworICAgIHJldHVybiByZXByOworfQorCisKK3N0YXRpYyBpbnQKK25hbWVzcGFjZV90cmF2ZXJzZShfUHlOYW1lc3BhY2VPYmplY3QgKm5zLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChucy0+bnNfZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludAorbmFtZXNwYWNlX2NsZWFyKF9QeU5hbWVzcGFjZU9iamVjdCAqbnMpCit7CisgICAgUHlfQ0xFQVIobnMtPm5zX2RpY3QpOworICAgIHJldHVybiAwOworfQorCisKK1B5RG9jX1NUUlZBUihuYW1lc3BhY2VfZG9jLAorIkEgc2ltcGxlIGF0dHJpYnV0ZS1iYXNlZCBuYW1lc3BhY2UuXG5cCitcblwKK25hbWVzcGFjZSgqKmt3YXJncykiKTsKKworUHlUeXBlT2JqZWN0IF9QeU5hbWVzcGFjZV9UeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCisgICAgIm5hbWVzcGFjZSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKF9QeU5hbWVzcGFjZU9iamVjdCksICAgICAgICAgICAgICAgICAvKiB0cF9zaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKW5hbWVzcGFjZV9kZWFsbG9jLCAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKW5hbWVzcGFjZV9yZXByLCAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHIsICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDIHwKKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgbmFtZXNwYWNlX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KKyAgICAodHJhdmVyc2Vwcm9jKW5hbWVzcGFjZV90cmF2ZXJzZSwgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgKGlucXVpcnkpbmFtZXNwYWNlX2NsZWFyLCAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIG5hbWVzcGFjZV9tZW1iZXJzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLworICAgIG9mZnNldG9mKF9QeU5hbWVzcGFjZU9iamVjdCwgbnNfZGljdCksICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIChpbml0cHJvYyluYW1lc3BhY2VfaW5pdCwgICAgICAgICAgICAgICAgICAgLyogdHBfaW5pdCAqLworICAgIFB5VHlwZV9HZW5lcmljQWxsb2MsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KKyAgICAobmV3ZnVuYyluYW1lc3BhY2VfbmV3LCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLworICAgIFB5T2JqZWN0X0dDX0RlbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZnJlZSAqLworfTsKKworCitQeU9iamVjdCAqCitfUHlOYW1lc3BhY2VfTmV3KFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpucyA9IG5hbWVzcGFjZV9uZXcoJl9QeU5hbWVzcGFjZV9UeXBlLCBOVUxMLCBOVUxMKTsKKyAgICBpZiAobnMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoa3dkcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gbnM7CisgICAgaWYgKFB5RGljdF9VcGRhdGUoKChfUHlOYW1lc3BhY2VPYmplY3QgKilucyktPm5zX2RpY3QsIGt3ZHMpICE9IDApIHsKKyAgICAgICAgUHlfREVDUkVGKG5zKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIChQeU9iamVjdCAqKW5zOworfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYmplY3QuYyBiL09iamVjdHMvb2JqZWN0LmMKaW5kZXggNDczMGE2Ni4uZjQxNzE4NCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9vYmplY3QuYworKysgYi9PYmplY3RzL29iamVjdC5jCkBAIC0xLDUgKzEsNSBAQAogCi0vKiBHZW5lcmljIG9iamVjdCBvcGVyYXRpb25zOyBhbmQgaW1wbGVtZW50YXRpb24gb2YgTm9uZSAoTm9PYmplY3QpICovCisvKiBHZW5lcmljIG9iamVjdCBvcGVyYXRpb25zOyBhbmQgaW1wbGVtZW50YXRpb24gb2YgTm9uZSAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKQEAgLTI5LDggKzI5LDYgQEAKIH0KICNlbmRpZiAvKiBQeV9SRUZfREVCVUcgKi8KIAotaW50IFB5X0RpdmlzaW9uV2FybmluZ0ZsYWc7Ci0KIC8qIE9iamVjdCBhbGxvY2F0aW9uIHJvdXRpbmVzIHVzZWQgYnkgTkVXT0JKIGFuZCBORVdWQVJPQkogbWFjcm9zLgogICAgVGhlc2UgYXJlIHVzZWQgYnkgdGhlIGluZGl2aWR1YWwgcm91dGluZXMgZm9yIG9iamVjdCBjcmVhdGlvbi4KICAgIERvIG5vdCBjYWxsIHRoZW0gb3RoZXJ3aXNlLCB0aGV5IGRvIG5vdCBpbml0aWFsaXplIHRoZSBvYmplY3QhICovCkBAIC0yOTcsOSArMjk1LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzKSkgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0OwotICAgICAgICAgICAgICAgIHQgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERShzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFja3NsYXNocmVwbGFjZSIpOworICAgICAgICAgICAgICAgIHQgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHMsICJ1dGYtOCIsICJiYWNrc2xhc2hyZXBsYWNlIik7CiAgICAgICAgICAgICAgICAgaWYgKHQgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0ID0gMDsKICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTM4MiwxMyArMzc4LDE5IEBACiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPCVzIG9iamVjdCBhdCAlcD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi0+b2JfdHlwZS0+dHBfbmFtZSwgdik7CiAgICAgcmVzID0gKCp2LT5vYl90eXBlLT50cF9yZXByKSh2KTsKLSAgICBpZiAocmVzICE9IE5VTEwgJiYgIVB5VW5pY29kZV9DaGVjayhyZXMpKSB7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXMpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAiX19yZXByX18gcmV0dXJuZWQgbm9uLXN0cmluZyAodHlwZSAlLjIwMHMpIiwKICAgICAgICAgICAgICAgICAgICAgIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisjaWZuZGVmIFB5X0RFQlVHCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShyZXMpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKICAgICByZXR1cm4gcmVzOwogfQogCkBAIC00MDcsNiArNDA5LDEwIEBACiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8TlVMTD4iKTsKICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QodikpIHsKKyNpZm5kZWYgUHlfREVCVUcKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh2KSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgogICAgICAgICBQeV9JTkNSRUYodik7CiAgICAgICAgIHJldHVybiB2OwogICAgIH0KQEAgLTQyOCw2ICs0MzQsMTEgQEAKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyNpZm5kZWYgUHlfREVCVUcKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcykgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNDQxLDExICs0NTIsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIHJlcHIgaXMgZ3VhcmFudGVlZCB0byBiZSBhIFB5VW5pY29kZSBvYmplY3QgYnkgUHlPYmplY3RfUmVwciAqLwotICAgIGFzY2lpID0gUHlVbmljb2RlX0VuY29kZUFTQ0lJKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKSwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpLAotICAgICAgICAiYmFja3NsYXNocmVwbGFjZSIpOwotCisgICAgYXNjaWkgPSBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcocmVwciwgImJhY2tzbGFzaHJlcGxhY2UiKTsKICAgICBQeV9ERUNSRUYocmVwcik7CiAgICAgaWYgKGFzY2lpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDYzLDcgKzQ3MCw3IEBACiBQeU9iamVjdF9CeXRlcyhQeU9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0LCAqZnVuYzsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmJ5dGVzc3RyaW5nID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2J5dGVzX18pOwogCiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZygiPE5VTEw+Iik7CkBAIC00NzMsNyArNDgwLDcgQEAKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQogCi0gICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICJfX2J5dGVzX18iLCAmYnl0ZXNzdHJpbmcpOworICAgIGZ1bmMgPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbCh2LCAmUHlJZF9fX2J5dGVzX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhmdW5jLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNzQ3LDYgKzc1NCwzMyBAQAogfQogCiBQeV9oYXNoX3QKK19QeV9IYXNoQnl0ZXModW5zaWduZWQgY2hhciAqcCwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgUHlfdWhhc2hfdCB4OworICAgIFB5X3NzaXplX3QgaTsKKworICAgIC8qCisgICAgICBXZSBtYWtlIHRoZSBoYXNoIG9mIHRoZSBlbXB0eSBzdHJpbmcgYmUgMCwgcmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgIChwcmVmaXggXiBzdWZmaXgpLCBzaW5jZSB0aGlzIHNsaWdodGx5IG9iZnVzY2F0ZXMgdGhlIGhhc2ggc2VjcmV0CisgICAgKi8KKyNpZmRlZiBQeV9ERUJVRworICAgIGFzc2VydChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCk7CisjZW5kaWYKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHggPSAoUHlfdWhhc2hfdCkgX1B5X0hhc2hTZWNyZXQucHJlZml4OworICAgIHggXj0gKFB5X3VoYXNoX3QpICpwIDw8IDc7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQorICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUiAqIHgpIF4gKFB5X3VoYXNoX3QpICpwKys7CisgICAgeCBePSAoUHlfdWhhc2hfdCkgbGVuOworICAgIHggXj0gKFB5X3VoYXNoX3QpIF9QeV9IYXNoU2VjcmV0LnN1ZmZpeDsKKyAgICBpZiAoeCA9PSAtMSkKKyAgICAgICAgeCA9IC0yOworICAgIHJldHVybiB4OworfQorCitQeV9oYXNoX3QKIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZChQeU9iamVjdCAqdikKIHsKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAidW5oYXNoYWJsZSB0eXBlOiAnJS4yMDBzJyIsCkBAIC03ODgsNyArODIyLDcgQEAKICAgICBpZiAodyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXMgPSBQeU9iamVjdF9HZXRBdHRyKHYsIHcpOwotICAgIFB5X1hERUNSRUYodyk7CisgICAgUHlfREVDUkVGKHcpOwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTgyMCw2ICs4NTQsNjIgQEAKICAgICByZXR1cm4gcmVzOwogfQogCitpbnQKK19QeU9iamVjdF9Jc0Fic3RyYWN0KFB5T2JqZWN0ICpvYmopCit7CisgICAgaW50IHJlczsKKyAgICBQeU9iamVjdCogaXNhYnN0cmFjdDsKKyAgICBfUHlfSURFTlRJRklFUihfX2lzYWJzdHJhY3RtZXRob2RfXyk7CisKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgaXNhYnN0cmFjdCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2lzYWJzdHJhY3RtZXRob2RfXyk7CisgICAgaWYgKGlzYWJzdHJhY3QgPT0gTlVMTCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJlcyA9IFB5T2JqZWN0X0lzVHJ1ZShpc2Fic3RyYWN0KTsKKyAgICBQeV9ERUNSRUYoaXNhYnN0cmFjdCk7CisgICAgcmV0dXJuIHJlczsKK30KKworUHlPYmplY3QgKgorX1B5T2JqZWN0X0dldEF0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgLyogYm9ycm93ZWQgKi8KKyAgICBpZiAoIW9uYW1lKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBQeU9iamVjdF9HZXRBdHRyKHYsIG9uYW1lKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQKK19QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKnYsIF9QeV9JZGVudGlmaWVyICpuYW1lKQoreworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKm9uYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQobmFtZSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFvbmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X0hhc0F0dHIodiwgb25hbWUpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAorX1B5T2JqZWN0X1NldEF0dHJJZChQeU9iamVjdCAqdiwgX1B5X0lkZW50aWZpZXIgKm5hbWUsIFB5T2JqZWN0ICp3KQoreworICAgIGludCByZXN1bHQ7CisgICAgUHlPYmplY3QgKm9uYW1lID0gX1B5VW5pY29kZV9Gcm9tSWQobmFtZSk7IC8qIGJvcnJvd2VkICovCisgICAgaWYgKCFvbmFtZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X1NldEF0dHIodiwgb25hbWUsIHcpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0dldEF0dHIoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpuYW1lKQogewpAQCAtOTM4LDYgKzEwMjgsMTkgQEAKICAgICByZXR1cm4gb2JqOwogfQogCisvKiBDb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgYSBidWlsdGluIGZyb20gaXRzIG5hbWUgKi8KK1B5T2JqZWN0ICoKK19QeU9iamVjdF9HZXRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgUHlPYmplY3QgKm1vZCwgKmF0dHI7CisgICAgbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOworICAgIGlmIChtb2QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXR0ciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCBuYW1lKTsKKyAgICBQeV9ERUNSRUYobW9kKTsKKyAgICByZXR1cm4gYXR0cjsKK30KKwogLyogSGVscGVyIHVzZWQgd2hlbiB0aGUgX19uZXh0X18gbWV0aG9kIGlzIHJlbW92ZWQgZnJvbSBhIHR5cGU6CiAgICB0cF9pdGVybmV4dCBpcyBuZXZlciBOVUxMIGFuZCBjYW4gYmUgc2FmZWx5IGNhbGxlZCB3aXRob3V0IGNoZWNraW5nCiAgICBvbiBldmVyeSBpdGVyYXRpb24uCkBAIC05ODYsNyArMTA4OSw2IEBACiAgICAgICAgIGYgPSBkZXNjci0+b2JfdHlwZS0+dHBfZGVzY3JfZ2V0OwogICAgICAgICBpZiAoZiAhPSBOVUxMICYmIFB5RGVzY3JfSXNEYXRhKGRlc2NyKSkgewogICAgICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilvYmotPm9iX3R5cGUpOwotICAgICAgICAgICAgUHlfREVDUkVGKGRlc2NyKTsKICAgICAgICAgICAgIGdvdG8gZG9uZTsKICAgICAgICAgfQogICAgIH0KQEAgLTEwMTcsNyArMTExOSw2IEBACiAgICAgICAgIHJlcyA9IFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihkZXNjcik7CiAgICAgICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAgICAgICAgIH0KQEAgLTEwMjYsMTMgKzExMjcsMTIgQEAKIAogICAgIGlmIChmICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilQeV9UWVBFKG9iaikpOwotICAgICAgICBQeV9ERUNSRUYoZGVzY3IpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gZGVzY3I7Ci0gICAgICAgIC8qIGRlc2NyIHdhcyBhbHJlYWR5IGluY3JlZmVkIGFib3ZlICovCisgICAgICAgIGRlc2NyID0gTlVMTDsKICAgICAgICAgZ290byBkb25lOwogICAgIH0KIApAQCAtMTA0MCw2ICsxMTQwLDcgQEAKICAgICAgICAgICAgICAgICAgIiclLjUwcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVVJyIsCiAgICAgICAgICAgICAgICAgIHRwLT50cF9uYW1lLCBuYW1lKTsKICAgZG9uZToKKyAgICBQeV9YREVDUkVGKGRlc2NyKTsKICAgICBQeV9ERUNSRUYobmFtZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTEwNjYsMTUgKzExNjcsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgIG5hbWUtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKG5hbWUpOwogCi0gICAgaWYgKHRwLT50cF9kaWN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5VHlwZV9SZWFkeSh0cCkgPCAwKQotICAgICAgICAgICAgZ290byBkb25lOwotICAgIH0KKyAgICBpZiAodHAtPnRwX2RpY3QgPT0gTlVMTCAmJiBQeVR5cGVfUmVhZHkodHApIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfSU5DUkVGKG5hbWUpOwogCiAgICAgZGVzY3IgPSBfUHlUeXBlX0xvb2t1cCh0cCwgbmFtZSk7CisgICAgUHlfWElOQ1JFRihkZXNjcik7CisKICAgICBmID0gTlVMTDsKICAgICBpZiAoZGVzY3IgIT0gTlVMTCkgewogICAgICAgICBmID0gZGVzY3ItPm9iX3R5cGUtPnRwX2Rlc2NyX3NldDsKQEAgLTEwODcsMTMgKzExODgsMTAgQEAKICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CiAgICAgICAgIGRpY3RwdHIgPSBfUHlPYmplY3RfR2V0RGljdFB0cihvYmopOwogICAgICAgICBpZiAoZGljdHB0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBkaWN0ID0gKmRpY3RwdHI7Ci0gICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMICYmIHZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgICAgICAgICAqZGljdHB0ciA9IGRpY3Q7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBfUHlPYmplY3REaWN0X1NldEl0ZW0oUHlfVFlQRShvYmopLCBkaWN0cHRyLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzIDwgMCAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWUpOworICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChkaWN0ICE9IE5VTEwpIHsKQEAgLTExMDIsOSArMTIwMCw5IEBACiAgICAgICAgICAgICByZXMgPSBQeURpY3RfRGVsSXRlbShkaWN0LCBuYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0oZGljdCwgbmFtZSwgdmFsdWUpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CiAgICAgICAgIGlmIChyZXMgPCAwICYmIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKGRpY3QpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgfQogCkBAIC0xMTI0LDYgKzEyMjIsNyBAQAogICAgICAgICAgICAgICAgICAiJyUuNTBzJyBvYmplY3QgYXR0cmlidXRlICclVScgaXMgcmVhZC1vbmx5IiwKICAgICAgICAgICAgICAgICAgdHAtPnRwX25hbWUsIG5hbWUpOwogICBkb25lOgorICAgIFB5X1hERUNSRUYoZGVzY3IpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICByZXR1cm4gcmVzOwogfQpAQCAtMTEzNCw2ICsxMjMzLDMyIEBACiAgICAgcmV0dXJuIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KG9iaiwgbmFtZSwgdmFsdWUsIE5VTEwpOwogfQogCitpbnQKK1B5T2JqZWN0X0dlbmVyaWNTZXREaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICBpZiAoZGljdHB0ciA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19BdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBoYXMgbm8gX19kaWN0X18iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiY2Fubm90IGRlbGV0ZSBfX2RpY3RfXyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICghUHlEaWN0X0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIl9fZGljdF9fIG11c3QgYmUgc2V0IHRvIGEgZGljdGlvbmFyeSwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGRpY3QgPSAqZGljdHB0cjsKKyAgICBQeV9YSU5DUkVGKHZhbHVlKTsKKyAgICAqZGljdHB0ciA9IHZhbHVlOworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKIAogLyogVGVzdCBhIHZhbHVlIHVzZWQgYXMgY29uZGl0aW9uLCBlLmcuLCBpbiBhIGZvciBvciBpZiBzdGF0ZW1lbnQuCiAgICBSZXR1cm4gLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKi8KQEAgLTExODYsNjYgKzEzMTEsNiBAQAogICAgIHJldHVybiB4LT5vYl90eXBlLT50cF9jYWxsICE9IE5VTEw7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHlPYmplY3RfRGlyKCkgaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyLgotICAgTWVyZ2UgdGhlIF9fZGljdF9fIG9mIGFjbGFzcyBpbnRvIGRpY3QsIGFuZCByZWN1cnNpdmVseSBhbHNvIGFsbAotICAgdGhlIF9fZGljdF9fcyBvZiBhY2xhc3MncyBiYXNlIGNsYXNzZXMuICBUaGUgb3JkZXIgb2YgbWVyZ2luZyBpc24ndAotICAgZGVmaW5lZCwgYXMgaXQncyBleHBlY3RlZCB0aGF0IG9ubHkgdGhlIGZpbmFsIHNldCBvZiBkaWN0IGtleXMgaXMKLSAgIGludGVyZXN0aW5nLgotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuCi0qLwotCi1zdGF0aWMgaW50Ci1tZXJnZV9jbGFzc19kaWN0KFB5T2JqZWN0KiBkaWN0LCBQeU9iamVjdCogYWNsYXNzKQotewotICAgIFB5T2JqZWN0ICpjbGFzc2RpY3Q7Ci0gICAgUHlPYmplY3QgKmJhc2VzOwotCi0gICAgYXNzZXJ0KFB5RGljdF9DaGVjayhkaWN0KSk7Ci0gICAgYXNzZXJ0KGFjbGFzcyk7Ci0KLSAgICAvKiBNZXJnZSBpbiB0aGUgdHlwZSdzIGRpY3QgKGlmIGFueSkuICovCi0gICAgY2xhc3NkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhhY2xhc3MsICJfX2RpY3RfXyIpOwotICAgIGlmIChjbGFzc2RpY3QgPT0gTlVMTCkKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgaW50IHN0YXR1cyA9IFB5RGljdF9VcGRhdGUoZGljdCwgY2xhc3NkaWN0KTsKLSAgICAgICAgUHlfREVDUkVGKGNsYXNzZGljdCk7Ci0gICAgICAgIGlmIChzdGF0dXMgPCAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIC8qIFJlY3Vyc2l2ZWx5IG1lcmdlIGluIHRoZSBiYXNlIHR5cGVzJyAoaWYgYW55KSBkaWN0cy4gKi8KLSAgICBiYXNlcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoYWNsYXNzLCAiX19iYXNlc19fIik7Ci0gICAgaWYgKGJhc2VzID09IE5VTEwpCi0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgYmFzZXMgaXMgYSByZWFsIHR1cGxlICovCi0gICAgICAgIFB5X3NzaXplX3QgaSwgbjsKLSAgICAgICAgbiA9IFB5U2VxdWVuY2VfU2l6ZShiYXNlcyk7IC8qIFRoaXMgYmV0dGVyIGJlIHJpZ2h0ICovCi0gICAgICAgIGlmIChuIDwgMCkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgICAgICAgICAgICAgIGludCBzdGF0dXM7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYmFzZXMsIGkpOwotICAgICAgICAgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGJhc2UpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQogCiAvKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciB3aXRob3V0IGFyZ3VtZW50czogcmV0dXJucyB0aGUgbG9jYWwgc2NvcGUuICovCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTI2OSwxNDAgKzEzMzQsNDMgQEAKICAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGlmIChQeUxpc3RfU29ydChuYW1lcykpIHsKKyAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIC8qIHRoZSBsb2NhbHMgZG9uJ3QgbmVlZCB0byBiZSBERUNSRUYnZCAqLwogICAgIHJldHVybiBuYW1lczsKIH0KIAotLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXIgb2YgdHlwZSBvYmplY3RzOiByZXR1cm5zIF9fZGljdF9fIGFuZCBfX2Jhc2VzX18uCi0gICBXZSBkZWxpYmVyYXRlbHkgZG9uJ3Qgc3VjayB1cCBpdHMgX19jbGFzc19fLCBhcyBtZXRob2RzIGJlbG9uZ2luZyB0byB0aGUKLSAgIG1ldGFjbGFzcyB3b3VsZCBwcm9iYWJseSBiZSBtb3JlIGNvbmZ1c2luZyB0aGFuIGhlbHBmdWwuCi0qLwotc3RhdGljIFB5T2JqZWN0ICoKLV9zcGVjaWFsaXplZF9kaXJfdHlwZShQeU9iamVjdCAqb2JqKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlEaWN0X05ldygpOwotCi0gICAgaWYgKGRpY3QgIT0gTlVMTCAmJiBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIG9iaikgPT0gMCkKLSAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7Ci0KLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyIG9mIG1vZHVsZSBvYmplY3RzOiByZXR1cm5zIHRoZSBtb2R1bGUncyBfX2RpY3RfXy4gKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1fc3BlY2lhbGl6ZWRfZGlyX21vZHVsZShQeU9iamVjdCAqb2JqKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2RpY3RfXyIpOwotCi0gICAgaWYgKGRpY3QgIT0gTlVMTCkgewotICAgICAgICBpZiAoUHlEaWN0X0NoZWNrKGRpY3QpKQotICAgICAgICAgICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSA9IFB5TW9kdWxlX0dldE5hbWUob2JqKTsKLSAgICAgICAgICAgIGlmIChuYW1lKQotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMuX19kaWN0X18gaXMgbm90IGEgZGljdGlvbmFyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBIZWxwZXIgZm9yIFB5T2JqZWN0X0RpciBvZiBnZW5lcmljIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18sIF9fY2xhc3NfXywKLSAgIGFuZCByZWN1cnNpdmVseSB1cCB0aGUgX19jbGFzc19fLl9fYmFzZXNfXyBjaGFpbi4KLSovCi1zdGF0aWMgUHlPYmplY3QgKgotX2dlbmVyaWNfZGlyKFB5T2JqZWN0ICpvYmopCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOwotICAgIFB5T2JqZWN0ICppdHNjbGFzcyA9IE5VTEw7Ci0KLSAgICAvKiBHZXQgX19kaWN0X18gKHdoaWNoIG1heSBvciBtYXkgbm90IGJlIGEgcmVhbCBkaWN0Li4uKSAqLwotICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIH0KLSAgICBlbHNlIGlmICghUHlEaWN0X0NoZWNrKGRpY3QpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIENvcHkgX19kaWN0X18gdG8gYXZvaWQgbXV0YXRpbmcgaXQuICovCi0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlEaWN0X0NvcHkoZGljdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihkaWN0KTsKLSAgICAgICAgZGljdCA9IHRlbXA7Ci0gICAgfQotCi0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIC8qIE1lcmdlIGluIGF0dHJzIHJlYWNoYWJsZSBmcm9tIGl0cyBjbGFzcy4gKi8KLSAgICBpdHNjbGFzcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiX19jbGFzc19fIik7Ci0gICAgaWYgKGl0c2NsYXNzID09IE5VTEwpCi0gICAgICAgIC8qIFhYWCh0b21lcik6IFBlcmhhcHMgZmFsbCBiYWNrIHRvIG9iai0+b2JfdHlwZSBpZiBubwotICAgICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18gZXhpc3RzPyAqLwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIGVsc2UgewotICAgICAgICBpZiAobWVyZ2VfY2xhc3NfZGljdChkaWN0LCBpdHNjbGFzcykgIT0gMCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgfQotCi0gICAgcmVzdWx0ID0gUHlEaWN0X0tleXMoZGljdCk7Ci0gICAgLyogZmFsbCB0aHJvdWdoICovCi1lcnJvcjoKLSAgICBQeV9YREVDUkVGKGl0c2NsYXNzKTsKLSAgICBQeV9YREVDUkVGKGRpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIEhlbHBlciBmb3IgUHlPYmplY3RfRGlyOiBvYmplY3QgaW50cm9zcGVjdGlvbi4KLSAgIFRoaXMgY2FsbHMgb25lIG9mIHRoZSBhYm92ZSBzcGVjaWFsaXplZCB2ZXJzaW9ucyBpZiBubyBfX2Rpcl9fIG1ldGhvZAotICAgZXhpc3RzLiAqLworLyogSGVscGVyIGZvciBQeU9iamVjdF9EaXI6IG9iamVjdCBpbnRyb3NwZWN0aW9uLiAqLwogc3RhdGljIFB5T2JqZWN0ICoKIF9kaXJfb2JqZWN0KFB5T2JqZWN0ICpvYmopCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkaXJfc3RyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZGlyZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgIl9fZGlyX18iLCAmZGlyX3N0cik7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKnNvcnRlZDsKKyAgICBfUHlfSURFTlRJRklFUihfX2Rpcl9fKTsKKyAgICBQeU9iamVjdCAqZGlyZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG9iaiwgJlB5SWRfX19kaXJfXyk7CiAKICAgICBhc3NlcnQob2JqKTsKICAgICBpZiAoZGlyZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIC8qIHVzZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICovCi0gICAgICAgIGlmIChQeU1vZHVsZV9DaGVjayhvYmopKQotICAgICAgICAgICAgcmVzdWx0ID0gX3NwZWNpYWxpemVkX2Rpcl9tb2R1bGUob2JqKTsKLSAgICAgICAgZWxzZSBpZiAoUHlUeXBlX0NoZWNrKG9iaikpCi0gICAgICAgICAgICByZXN1bHQgPSBfc3BlY2lhbGl6ZWRfZGlyX3R5cGUob2JqKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gX2dlbmVyaWNfZGlyKG9iaik7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QgZG9lcyBub3QgcHJvdmlkZSBfX2Rpcl9fIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogdXNlIF9fZGlyX18gKi8KLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhkaXJmdW5jLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGRpcmZ1bmMpOwotICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICAvKiByZXN1bHQgbXVzdCBiZSBhIGxpc3QgKi8KLSAgICAgICAgLyogWFhYKGdicmFuZGwpOiBjb3VsZCBhbHNvIGNoZWNrIGlmIGFsbCBpdGVtcyBhcmUgc3RyaW5ncyAqLwotICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayhyZXN1bHQpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJfX2Rpcl9fKCkgbXVzdCByZXR1cm4gYSBsaXN0LCBub3QgJS4yMDBzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICByZXN1bHQgPSBOVUxMOwotICAgICAgICB9CisgICAgLyogdXNlIF9fZGlyX18gKi8KKyAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGRpcmZ1bmMsIE5VTEwpOworICAgIFB5X0RFQ1JFRihkaXJmdW5jKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qIHJldHVybiBzb3J0ZWQocmVzdWx0KSAqLworICAgIHNvcnRlZCA9IFB5U2VxdWVuY2VfTGlzdChyZXN1bHQpOworICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgIGlmIChzb3J0ZWQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5TGlzdF9Tb3J0KHNvcnRlZCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNvcnRlZCk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHNvcnRlZDsKIH0KIAogLyogSW1wbGVtZW50YXRpb24gb2YgZGlyKCkgLS0gaWYgb2JqIGlzIE5VTEwsIHJldHVybnMgdGhlIG5hbWVzIGluIHRoZSBjdXJyZW50CkBAIC0xNDEyLDMxICsxMzgwLDEzIEBACiBQeU9iamVjdCAqCiBQeU9iamVjdF9EaXIoUHlPYmplY3QgKm9iaikKIHsKLSAgICBQeU9iamVjdCAqIHJlc3VsdDsKLQotICAgIGlmIChvYmogPT0gTlVMTCkKLSAgICAgICAgLyogbm8gb2JqZWN0IC0tIGludHJvc3BlY3QgdGhlIGxvY2FscyAqLwotICAgICAgICByZXN1bHQgPSBfZGlyX2xvY2FscygpOwotICAgIGVsc2UKLSAgICAgICAgLyogb2JqZWN0IC0tIGludHJvc3BlY3QgdGhlIG9iamVjdCAqLwotICAgICAgICByZXN1bHQgPSBfZGlyX29iamVjdChvYmopOwotCi0gICAgYXNzZXJ0KHJlc3VsdCA9PSBOVUxMIHx8IFB5TGlzdF9DaGVjayhyZXN1bHQpKTsKLQotICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBQeUxpc3RfU29ydChyZXN1bHQpICE9IDApIHsKLSAgICAgICAgLyogc29ydGluZyB0aGUgbGlzdCBmYWlsZWQgKi8KLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXR1cm4gKG9iaiA9PSBOVUxMKSA/IF9kaXJfbG9jYWxzKCkgOiBfZGlyX29iamVjdChvYmopOwogfQogCiAvKgotTm9PYmplY3QgaXMgdXNhYmxlIGFzIGEgbm9uLU5VTEwgdW5kZWZpbmVkIHZhbHVlLCB1c2VkIGJ5IHRoZSBtYWNybyBOb25lLgorTm9uZSBpcyBhIG5vbi1OVUxMIHVuZGVmaW5lZCB2YWx1ZS4KIFRoZXJlIGlzIChhbmQgc2hvdWxkIGJlISkgbm8gd2F5IHRvIGNyZWF0ZSBvdGhlciBvYmplY3RzIG9mIHRoaXMgdHlwZSwKIHNvIHRoZXJlIGlzIGV4YWN0bHkgb25lICh3aGljaCBpcyBpbmRlc3RydWN0aWJsZSwgYnkgdGhlIHdheSkuCi0oWFhYIFRoaXMgdHlwZSBhbmQgdGhlIHR5cGUgb2YgTm90SW1wbGVtZW50ZWQgYmVsb3cgc2hvdWxkIGJlIHVuaWZpZWQuKQogKi8KIAogLyogQVJHU1VTRUQgKi8KQEAgLTE0NTYsNiArMTQwNiw1OCBAQAogICAgIFB5X0ZhdGFsRXJyb3IoImRlYWxsb2NhdGluZyBOb25lIik7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitub25lX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIHx8IChrd2FyZ3MgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIk5vbmVUeXBlIHRha2VzIG5vIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK3N0YXRpYyBpbnQKK25vbmVfYm9vbChQeU9iamVjdCAqdikKK3sKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBub25lX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWRkICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX211bHRpcGx5ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JlbWFpbmRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9kaXZtb2QgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG93ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbmVnYXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfcG9zaXRpdmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfYWJzb2x1dGUgKi8KKyAgICAoaW5xdWlyeSlub25lX2Jvb2wsICAgICAgICAgLyogbmJfYm9vbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnZlcnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfbHNoaWZ0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9hbmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfeG9yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2ludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9yZXNlcnZlZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9mbG9hdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FkZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3N1YnRyYWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2lucGxhY2VfbXVsdGlwbHkgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9yZW1haW5kZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmJfaW5wbGFjZV9wb3dlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2xzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3JzaGlmdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2FuZCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3hvciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX29yICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl90cnVlX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX2Zsb29yX2RpdmlkZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuYl9pbnBsYWNlX3RydWVfZGl2aWRlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5iX2luZGV4ICovCit9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5Tm9uZV9UeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCkBAIC0xNDY4LDEwICsxNDcwLDM0IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yZXNlcnZlZCovCiAgICAgbm9uZV9yZXByLCAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLworICAgICZub25lX2FzX251bWJlciwgICAgLyp0cF9hc19udW1iZXIqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgLyp0cF9mbGFncyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0c2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9nZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaW5pdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9hbGxvYyAqLworICAgIG5vbmVfbmV3LCAgICAgICAgICAgLyp0cF9uZXcgKi8KIH07CiAKIFB5T2JqZWN0IF9QeV9Ob25lU3RydWN0ID0gewpAQCAtMTQ4OCw2ICsxNTE0LDE2IEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJOb3RJbXBsZW1lbnRlZCIpOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbm90aW1wbGVtZW50ZWRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoYXJncykgfHwgKGt3YXJncyAmJiBQeURpY3RfU2l6ZShrd2FyZ3MpKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiTm90SW1wbGVtZW50ZWRUeXBlIHRha2VzIG5vIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworfQorCiBzdGF0aWMgUHlUeXBlT2JqZWN0IFB5Tm90SW1wbGVtZW50ZWRfVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJOb3RJbXBsZW1lbnRlZFR5cGUiLApAQCAtMTUwMyw2ICsxNTM5LDMwIEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCiAgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2Rlc2NyX2dldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FsbG9jICovCisgICAgbm90aW1wbGVtZW50ZWRfbmV3LCAvKnRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X05vdEltcGxlbWVudGVkU3RydWN0ID0gewpAQCAtMTU4NSw2ICsxNjQ1LDkgQEAKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVByb3BlcnR5X1R5cGUpIDwgMCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBwcm9wZXJ0eSB0eXBlIik7CiAKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZfUHlNYW5hZ2VkQnVmZmVyX1R5cGUpIDwgMCkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBtYW5hZ2VkIGJ1ZmZlciB0eXBlIik7CisKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeU1lbW9yeVZpZXdfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG1lbW9yeXZpZXcgdHlwZSIpOwogCkBAIC0xNjQ0LDYgKzE3MDcsOSBAQAogCiAgICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlaaXBfVHlwZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIHppcCB0eXBlIik7CisKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZfUHlOYW1lc3BhY2VfVHlwZSkgPCAwKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIG5hbWVzcGFjZSB0eXBlIik7CiB9CiAKIApAQCAtMTc4Niw2ICsxODUyLDE4IEBACiAgICAgUHlNZW1fRlJFRShwKTsKIH0KIAordm9pZAorX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlDRnVuY3Rpb25fRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeURpY3RfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeUZsb2F0X0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlGcmFtZV9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5TGlzdF9EZWJ1Z01hbGxvY1N0YXRzKG91dCk7CisgICAgX1B5TWV0aG9kX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKKyAgICBfUHlTZXRfRGVidWdNYWxsb2NTdGF0cyhvdXQpOworICAgIF9QeVR1cGxlX0RlYnVnTWFsbG9jU3RhdHMob3V0KTsKK30KIAogLyogVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB0byBjb250cm9sIGluZmluaXRlIHJlY3Vyc2lvbiBpbiByZXByLCBzdHIsIHByaW50LAogICAgZXRjLiAgQ29udGFpbmVyIG9iamVjdHMgdGhhdCBtYXkgcmVjdXJzaXZlbHkgY29udGFpbiB0aGVtc2VsdmVzLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDM5MTYyNjIuLjYyMjVlYmIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTIsNiArMiwxMyBAQAogCiAjaWZkZWYgV0lUSF9QWU1BTExPQwogCisjaWZkZWYgSEFWRV9NTUFQCisgI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisgI2lmZGVmIE1BUF9BTk9OWU1PVVMKKyAgI2RlZmluZSBBUkVOQVNfVVNFX01NQVAKKyAjZW5kaWYKKyNlbmRpZgorCiAjaWZkZWYgV0lUSF9WQUxHUklORAogI2luY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CiAKQEAgLTc1LDcgKzgyLDggQEAKICAqIEFsbG9jYXRpb24gc3RyYXRlZ3kgYWJzdHJhY3Q6CiAgKgogICogRm9yIHNtYWxsIHJlcXVlc3RzLCB0aGUgYWxsb2NhdG9yIHN1Yi1hbGxvY2F0ZXMgPEJpZz4gYmxvY2tzIG9mIG1lbW9yeS4KLSAqIFJlcXVlc3RzIGdyZWF0ZXIgdGhhbiAyNTYgYnl0ZXMgYXJlIHJvdXRlZCB0byB0aGUgc3lzdGVtJ3MgYWxsb2NhdG9yLgorICogUmVxdWVzdHMgZ3JlYXRlciB0aGFuIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIGJ5dGVzIGFyZSByb3V0ZWQgdG8gdGhlCisgKiBzeXN0ZW0ncyBhbGxvY2F0b3IuCiAgKgogICogU21hbGwgcmVxdWVzdHMgYXJlIGdyb3VwZWQgaW4gc2l6ZSBjbGFzc2VzIHNwYWNlZCA4IGJ5dGVzIGFwYXJ0LCBkdWUKICAqIHRvIHRoZSByZXF1aXJlZCB2YWxpZCBhbGlnbm1lbnQgb2YgdGhlIHJldHVybmVkIGFkZHJlc3MuIFJlcXVlc3RzIG9mCkBAIC0xMDcsMTAgKzExNSwxMSBAQAogICogICAgICAgNTctNjQgICAgICAgICAgICAgICAgICAgNjQgICAgICAgICAgICAgICAgICAgICAgIDcKICAqICAgICAgIDY1LTcyICAgICAgICAgICAgICAgICAgIDcyICAgICAgICAgICAgICAgICAgICAgICA4CiAgKiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIC4uLgotICogICAgICAyNDEtMjQ4ICAgICAgICAgICAgICAgICAyNDggICAgICAgICAgICAgICAgICAgICAgMzAKLSAqICAgICAgMjQ5LTI1NiAgICAgICAgICAgICAgICAgMjU2ICAgICAgICAgICAgICAgICAgICAgIDMxCisgKiAgICAgIDQ5Ny01MDQgICAgICAgICAgICAgICAgIDUwNCAgICAgICAgICAgICAgICAgICAgICA2MgorICogICAgICA1MDUtNTEyICAgICAgICAgICAgICAgICA1MTIgICAgICAgICAgICAgICAgICAgICAgNjMKICAqCi0gKiAgICAgIDAsIDI1NyBhbmQgdXA6IHJvdXRlZCB0byB0aGUgdW5kZXJseWluZyBhbGxvY2F0b3IuCisgKiAgICAgIDAsIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEICsgMSBhbmQgdXA6IHJvdXRlZCB0byB0aGUgdW5kZXJseWluZworICogICAgICBhbGxvY2F0b3IuCiAgKi8KIAogLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCkBAIC0xMjksNyArMTM4LDYgQEAKICAqLwogI2RlZmluZSBBTElHTk1FTlQgICAgICAgICAgICAgICA4ICAgICAgICAgICAgICAgLyogbXVzdCBiZSAyXk4gKi8KICNkZWZpbmUgQUxJR05NRU5UX1NISUZUICAgICAgICAgMwotI2RlZmluZSBBTElHTk1FTlRfTUFTSyAgICAgICAgICAoQUxJR05NRU5UIC0gMSkKIAogLyogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gc2l6ZSBjbGFzcyBJLCBhcyBhIHVpbnQuICovCiAjZGVmaW5lIElOREVYMlNJWkUoSSkgKCgodWludCkoSSkgKyAxKSA8PCBBTElHTk1FTlRfU0hJRlQpCkBAIC0xMzksMTQgKzE0NywxNyBAQAogICogc21hbGwgZW5vdWdoIGluIG9yZGVyIHRvIHVzZSBwcmVhbGxvY2F0ZWQgbWVtb3J5IHBvb2xzLiBZb3UgY2FuIHR1bmUKICAqIHRoaXMgdmFsdWUgYWNjb3JkaW5nIHRvIHlvdXIgYXBwbGljYXRpb24gYmVoYXZpb3VyIGFuZCBtZW1vcnkgbmVlZHMuCiAgKgorICogTm90ZTogYSBzaXplIHRocmVzaG9sZCBvZiA1MTIgZ3VhcmFudGVlcyB0aGF0IG5ld2x5IGNyZWF0ZWQgZGljdGlvbmFyaWVzCisgKiB3aWxsIGJlIGFsbG9jYXRlZCBmcm9tIHByZWFsbG9jYXRlZCBtZW1vcnkgcG9vbHMgb24gNjQtYml0LgorICoKICAqIFRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQ6Ci0gKiAgICAgIDEpIEFMSUdOTUVOVCA8PSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA8PSAyNTYKKyAqICAgICAgMSkgQUxJR05NRU5UIDw9IFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDw9IDUxMgogICogICAgICAyKSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCBpcyBldmVubHkgZGl2aXNpYmxlIGJ5IEFMSUdOTUVOVAogICoKICAqIEFsdGhvdWdoIG5vdCByZXF1aXJlZCwgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgc3BhY2UgZWZmaWNpZW5jeSwKICAqIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgaXMgc2V0IHRvIGEgcG93ZXIgb2YgMi4KICAqLwotI2RlZmluZSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCAyNTYKKyNkZWZpbmUgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgNTEyCiAjZGVmaW5lIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyAgIChTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCAvIEFMSUdOTUVOVCkKIAogLyoKQEAgLTE3NCwxNSArMTg1LDE1IEBACiAvKgogICogVGhlIGFsbG9jYXRvciBzdWItYWxsb2NhdGVzIDxCaWc+IGJsb2NrcyBvZiBtZW1vcnkgKGNhbGxlZCBhcmVuYXMpIGFsaWduZWQKICAqIG9uIGEgcGFnZSBib3VuZGFyeS4gVGhpcyBpcyBhIHJlc2VydmVkIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSBmb3IgdGhlCi0gKiBjdXJyZW50IHByb2Nlc3MgKG9idGFpbmVkIHRocm91Z2ggYSBtYWxsb2MgY2FsbCkuIEluIG5vIHdheSB0aGlzIG1lYW5zCi0gKiB0aGF0IHRoZSBtZW1vcnkgYXJlbmFzIHdpbGwgYmUgdXNlZCBlbnRpcmVseS4gQSBtYWxsb2MoPEJpZz4pIGlzIHVzdWFsbHkKLSAqIGFuIGFkZHJlc3MgcmFuZ2UgcmVzZXJ2YXRpb24gZm9yIDxCaWc+IGJ5dGVzLCB1bmxlc3MgYWxsIHBhZ2VzIHdpdGhpbiB0aGlzCi0gKiBzcGFjZSBhcmUgcmVmZXJlbmNlZCBzdWJzZXF1ZW50bHkuIFNvIG1hbGxvYydpbmcgYmlnIGJsb2NrcyBhbmQgbm90IHVzaW5nCi0gKiB0aGVtIGRvZXMgbm90IG1lYW4gIndhc3RpbmcgbWVtb3J5Ii4gSXQncyBhbiBhZGRyZXNzYWJsZSByYW5nZSB3YXN0YWdlLi4uCisgKiBjdXJyZW50IHByb2Nlc3MgKG9idGFpbmVkIHRocm91Z2ggYSBtYWxsb2MoKS9tbWFwKCkgY2FsbCkuIEluIG5vIHdheSB0aGlzCisgKiBtZWFucyB0aGF0IHRoZSBtZW1vcnkgYXJlbmFzIHdpbGwgYmUgdXNlZCBlbnRpcmVseS4gQSBtYWxsb2MoPEJpZz4pIGlzCisgKiB1c3VhbGx5IGFuIGFkZHJlc3MgcmFuZ2UgcmVzZXJ2YXRpb24gZm9yIDxCaWc+IGJ5dGVzLCB1bmxlc3MgYWxsIHBhZ2VzIHdpdGhpbgorICogdGhpcyBzcGFjZSBhcmUgcmVmZXJlbmNlZCBzdWJzZXF1ZW50bHkuIFNvIG1hbGxvYydpbmcgYmlnIGJsb2NrcyBhbmQgbm90CisgKiB1c2luZyB0aGVtIGRvZXMgbm90IG1lYW4gIndhc3RpbmcgbWVtb3J5Ii4gSXQncyBhbiBhZGRyZXNzYWJsZSByYW5nZQorICogd2FzdGFnZS4uLgogICoKLSAqIFRoZXJlZm9yZSwgYWxsb2NhdGluZyBhcmVuYXMgd2l0aCBtYWxsb2MgaXMgbm90IG9wdGltYWwsIGJlY2F1c2UgdGhlcmUgaXMKLSAqIHNvbWUgYWRkcmVzcyBzcGFjZSB3YXN0YWdlLCBidXQgdGhpcyBpcyB0aGUgbW9zdCBwb3J0YWJsZSB3YXkgdG8gcmVxdWVzdAotICogbWVtb3J5IGZyb20gdGhlIHN5c3RlbSBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMuCisgKiBBcmVuYXMgYXJlIGFsbG9jYXRlZCB3aXRoIG1tYXAoKSBvbiBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeQorICogbWFwcGluZ3MgdG8gcmVkdWNlIGhlYXAgZnJhZ21lbnRhdGlvbi4KICAqLwogI2RlZmluZSBBUkVOQV9TSVpFICAgICAgICAgICAgICAoMjU2IDw8IDEwKSAgICAgLyogMjU2S0IgKi8KIApAQCAtMzAyLDE0ICszMTMsMTIgQEAKICAgICBzdHJ1Y3QgYXJlbmFfb2JqZWN0KiBwcmV2YXJlbmE7CiB9OwogCi0jdW5kZWYgIFJPVU5EVVAKLSNkZWZpbmUgUk9VTkRVUCh4KSAgICAgICAgICAgICAgKCgoeCkgKyBBTElHTk1FTlRfTUFTSykgJiB+QUxJR05NRU5UX01BU0spCi0jZGVmaW5lIFBPT0xfT1ZFUkhFQUQgICAgICAgICAgIFJPVU5EVVAoc2l6ZW9mKHN0cnVjdCBwb29sX2hlYWRlcikpCisjZGVmaW5lIFBPT0xfT1ZFUkhFQUQgICBfUHlfU0laRV9ST1VORF9VUChzaXplb2Yoc3RydWN0IHBvb2xfaGVhZGVyKSwgQUxJR05NRU5UKQogCiAjZGVmaW5lIERVTU1ZX1NJWkVfSURYICAgICAgICAgIDB4ZmZmZiAgLyogc2l6ZSBjbGFzcyBvZiBuZXdseSBjYWNoZWQgcG9vbHMgKi8KIAogLyogUm91bmQgcG9pbnRlciBQIGRvd24gdG8gdGhlIGNsb3Nlc3QgcG9vbC1hbGlnbmVkIGFkZHJlc3MgPD0gUCwgYXMgYSBwb29scCAqLwotI2RlZmluZSBQT09MX0FERFIoUCkgKChwb29scCkoKHVwdHIpKFApICYgfih1cHRyKVBPT0xfU0laRV9NQVNLKSkKKyNkZWZpbmUgUE9PTF9BRERSKFApICgocG9vbHApX1B5X0FMSUdOX0RPV04oKFApLCBQT09MX1NJWkUpKQogCiAvKiBSZXR1cm4gdG90YWwgbnVtYmVyIG9mIGJsb2NrcyBpbiBwb29sIG9mIHNpemUgaW5kZXggSSwgYXMgYSB1aW50LiAqLwogI2RlZmluZSBOVU1CTE9DS1MoSSkgKCh1aW50KShQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAvIElOREVYMlNJWkUoSSkpCkBAIC00NDAsNiArNDQ5LDkgQEAKICAgICAsIFBUKDQ4KSwgUFQoNDkpLCBQVCg1MCksIFBUKDUxKSwgUFQoNTIpLCBQVCg1MyksIFBUKDU0KSwgUFQoNTUpCiAjaWYgTkJfU01BTExfU0laRV9DTEFTU0VTID4gNTYKICAgICAsIFBUKDU2KSwgUFQoNTcpLCBQVCg1OCksIFBUKDU5KSwgUFQoNjApLCBQVCg2MSksIFBUKDYyKSwgUFQoNjMpCisjaWYgTkJfU01BTExfU0laRV9DTEFTU0VTID4gNjQKKyNlcnJvciAiTkJfU01BTExfU0laRV9DTEFTU0VTIHNob3VsZCBiZSBsZXNzIHRoYW4gNjQiCisjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNjQgKi8KICNlbmRpZiAvKiBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgPiA1NiAqLwogI2VuZGlmIC8qIE5CX1NNQUxMX1NJWkVfQ0xBU1NFUyA+IDQ4ICovCiAjZW5kaWYgLyogTkJfU01BTExfU0laRV9DTEFTU0VTID4gNDAgKi8KQEAgLTUwOCwxMiArNTIwLDEwIEBACiAvKiBOdW1iZXIgb2YgYXJlbmFzIGFsbG9jYXRlZCB0aGF0IGhhdmVuJ3QgYmVlbiBmcmVlKCknZC4gKi8KIHN0YXRpYyBzaXplX3QgbmFyZW5hc19jdXJyZW50bHlfYWxsb2NhdGVkID0gMDsKIAotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCiAvKiBUb3RhbCBudW1iZXIgb2YgdGltZXMgbWFsbG9jKCkgY2FsbGVkIHRvIGFsbG9jYXRlIGFuIGFyZW5hLiAqLwogc3RhdGljIHNpemVfdCBudGltZXNfYXJlbmFfYWxsb2NhdGVkID0gMDsKIC8qIEhpZ2ggd2F0ZXIgbWFyayAobWF4IHZhbHVlIGV2ZXIgc2VlbikgZm9yIG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZC4gKi8KIHN0YXRpYyBzaXplX3QgbmFyZW5hc19oaWdod2F0ZXIgPSAwOwotI2VuZGlmCiAKIC8qIEFsbG9jYXRlIGEgbmV3IGFyZW5hLiAgSWYgd2UgcnVuIG91dCBvZiBtZW1vcnksIHJldHVybiBOVUxMLiAgRWxzZQogICogYWxsb2NhdGUgYSBuZXcgYXJlbmEsIGFuZCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgYW4gYXJlbmFfb2JqZWN0CkBAIC01MjUsMTAgKzUzNSwxMiBAQAogewogICAgIHN0cnVjdCBhcmVuYV9vYmplY3QqIGFyZW5hb2JqOwogICAgIHVpbnQgZXhjZXNzOyAgICAgICAgLyogbnVtYmVyIG9mIGJ5dGVzIGFib3ZlIHBvb2wgYWxpZ25tZW50ICovCisgICAgdm9pZCAqYWRkcmVzczsKKyAgICBpbnQgZXJyOwogCiAjaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05NQUxMT0NTVEFUUyIpKQotICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cygpOworICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgaWYgKHVudXNlZF9hcmVuYV9vYmplY3RzID09IE5VTEwpIHsKICAgICAgICAgdWludCBpOwpAQCAtNTc3LDggKzU4OSwxNSBAQAogICAgIGFyZW5hb2JqID0gdW51c2VkX2FyZW5hX29iamVjdHM7CiAgICAgdW51c2VkX2FyZW5hX29iamVjdHMgPSBhcmVuYW9iai0+bmV4dGFyZW5hOwogICAgIGFzc2VydChhcmVuYW9iai0+YWRkcmVzcyA9PSAwKTsKLSAgICBhcmVuYW9iai0+YWRkcmVzcyA9ICh1cHRyKW1hbGxvYyhBUkVOQV9TSVpFKTsKLSAgICBpZiAoYXJlbmFvYmotPmFkZHJlc3MgPT0gMCkgeworI2lmZGVmIEFSRU5BU19VU0VfTU1BUAorICAgIGFkZHJlc3MgPSBtbWFwKE5VTEwsIEFSRU5BX1NJWkUsIFBST1RfUkVBRHxQUk9UX1dSSVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURXxNQVBfQU5PTllNT1VTLCAtMSwgMCk7CisgICAgZXJyID0gKGFkZHJlc3MgPT0gTUFQX0ZBSUxFRCk7CisjZWxzZQorICAgIGFkZHJlc3MgPSBtYWxsb2MoQVJFTkFfU0laRSk7CisgICAgZXJyID0gKGFkZHJlc3MgPT0gMCk7CisjZW5kaWYKKyAgICBpZiAoZXJyKSB7CiAgICAgICAgIC8qIFRoZSBhbGxvY2F0aW9uIGZhaWxlZDogcmV0dXJuIE5VTEwgYWZ0ZXIgcHV0dGluZyB0aGUKICAgICAgICAgICogYXJlbmFvYmogYmFjay4KICAgICAgICAgICovCkBAIC01ODYsMTMgKzYwNSwxMiBAQAogICAgICAgICB1bnVzZWRfYXJlbmFfb2JqZWN0cyA9IGFyZW5hb2JqOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgYXJlbmFvYmotPmFkZHJlc3MgPSAodXB0cilhZGRyZXNzOwogCiAgICAgKytuYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7Ci0jaWZkZWYgUFlNQUxMT0NfREVCVUcKICAgICArK250aW1lc19hcmVuYV9hbGxvY2F0ZWQ7CiAgICAgaWYgKG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCA+IG5hcmVuYXNfaGlnaHdhdGVyKQogICAgICAgICBuYXJlbmFzX2hpZ2h3YXRlciA9IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZDsKLSNlbmRpZgogICAgIGFyZW5hb2JqLT5mcmVlcG9vbHMgPSBOVUxMOwogICAgIC8qIHBvb2xfYWRkcmVzcyA8LSBmaXJzdCBwb29sLWFsaWduZWQgYWRkcmVzcyBpbiB0aGUgYXJlbmEKICAgICAgICBuZnJlZXBvb2xzIDwtIG51bWJlciBvZiB3aG9sZSBwb29scyB0aGF0IGZpdCBhZnRlciBhbGlnbm1lbnQgKi8KQEAgLTEwNTQsNyArMTA3MiwxMSBAQAogICAgICAgICAgICAgICAgIHVudXNlZF9hcmVuYV9vYmplY3RzID0gYW87CiAKICAgICAgICAgICAgICAgICAvKiBGcmVlIHRoZSBlbnRpcmUgYXJlbmEuICovCisjaWZkZWYgQVJFTkFTX1VTRV9NTUFQCisgICAgICAgICAgICAgICAgbXVubWFwKCh2b2lkICopYW8tPmFkZHJlc3MsIEFSRU5BX1NJWkUpOworI2Vsc2UKICAgICAgICAgICAgICAgICBmcmVlKCh2b2lkICopYW8tPmFkZHJlc3MpOworI2VuZGlmCiAgICAgICAgICAgICAgICAgYW8tPmFkZHJlc3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hcmsgdW5hc3NvY2lhdGVkICovCiAgICAgICAgICAgICAgICAgLS1uYXJlbmFzX2N1cnJlbnRseV9hbGxvY2F0ZWQ7CiAKQEAgLTE2OTQsMTcgKzE3MTYsMTkgQEAKICAgICB9CiB9CiAKKyNlbmRpZiAgLyogUFlNQUxMT0NfREVCVUcgKi8KKwogc3RhdGljIHNpemVfdAotcHJpbnRvbmUoY29uc3QgY2hhciogbXNnLCBzaXplX3QgdmFsdWUpCitwcmludG9uZShGSUxFICpvdXQsIGNvbnN0IGNoYXIqIG1zZywgc2l6ZV90IHZhbHVlKQogewogICAgIGludCBpLCBrOwogICAgIGNoYXIgYnVmWzEwMF07CiAgICAgc2l6ZV90IG9yaWd2YWx1ZSA9IHZhbHVlOwogCi0gICAgZnB1dHMobXNnLCBzdGRlcnIpOworICAgIGZwdXRzKG1zZywgb3V0KTsKICAgICBmb3IgKGkgPSAoaW50KXN0cmxlbihtc2cpOyBpIDwgMzU7ICsraSkKLSAgICAgICAgZnB1dGMoJyAnLCBzdGRlcnIpOwotICAgIGZwdXRjKCc9Jywgc3RkZXJyKTsKKyAgICAgICAgZnB1dGMoJyAnLCBvdXQpOworICAgIGZwdXRjKCc9Jywgb3V0KTsKIAogICAgIC8qIFdyaXRlIHRoZSB2YWx1ZSB3aXRoIGNvbW1hcy4gKi8KICAgICBpID0gMjI7CkBAIC0xNzI1LDE3ICsxNzQ5LDMzIEBACiAKICAgICB3aGlsZSAoaSA+PSAwKQogICAgICAgICBidWZbaS0tXSA9ICcgJzsKLSAgICBmcHV0cyhidWYsIHN0ZGVycik7CisgICAgZnB1dHMoYnVmLCBvdXQpOwogCiAgICAgcmV0dXJuIG9yaWd2YWx1ZTsKIH0KIAotLyogUHJpbnQgc3VtbWFyeSBpbmZvIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2YgcHltYWxsb2MncyBzdHJ1Y3R1cmVzLgordm9pZAorX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhGSUxFICpvdXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJsb2NrX25hbWUsIGludCBudW1fYmxvY2tzLCBzaXplX3Qgc2l6ZW9mX2Jsb2NrKQoreworICAgIGNoYXIgYnVmMVsxMjhdOworICAgIGNoYXIgYnVmMlsxMjhdOworICAgIFB5T1Nfc25wcmludGYoYnVmMSwgc2l6ZW9mKGJ1ZjEpLAorICAgICAgICAgICAgICAgICAgIiVkICVzcyAqICV6ZCBieXRlcyBlYWNoIiwKKyAgICAgICAgICAgICAgICAgIG51bV9ibG9ja3MsIGJsb2NrX25hbWUsIHNpemVvZl9ibG9jayk7CisgICAgUHlPU19zbnByaW50ZihidWYyLCBzaXplb2YoYnVmMiksCisgICAgICAgICAgICAgICAgICAiJTQ4cyAiLCBidWYxKTsKKyAgICAodm9pZClwcmludG9uZShvdXQsIGJ1ZjIsIG51bV9ibG9ja3MgKiBzaXplb2ZfYmxvY2spOworfQorCisjaWZkZWYgV0lUSF9QWU1BTExPQworCisvKiBQcmludCBzdW1tYXJ5IGluZm8gdG8gIm91dCIgYWJvdXQgdGhlIHN0YXRlIG9mIHB5bWFsbG9jJ3Mgc3RydWN0dXJlcy4KICAqIEluIFB5X0RFQlVHIG1vZGUsIGFsc28gcGVyZm9ybSBzb21lIGV4cGVuc2l2ZSBpbnRlcm5hbCBjb25zaXN0ZW5jeQogICogY2hlY2tzLgogICovCiB2b2lkCi1fUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyh2b2lkKQorX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoRklMRSAqb3V0KQogewogICAgIHVpbnQgaTsKICAgICBjb25zdCB1aW50IG51bWNsYXNzZXMgPSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA+PiBBTElHTk1FTlRfU0hJRlQ7CkBAIC0xNzY0LDcgKzE4MDQsNyBAQAogICAgIHNpemVfdCB0b3RhbDsKICAgICBjaGFyIGJ1ZlsxMjhdOwogCi0gICAgZnByaW50ZihzdGRlcnIsICJTbWFsbCBibG9jayB0aHJlc2hvbGQgPSAlZCwgaW4gJXUgc2l6ZSBjbGFzc2VzLlxuIiwKKyAgICBmcHJpbnRmKG91dCwgIlNtYWxsIGJsb2NrIHRocmVzaG9sZCA9ICVkLCBpbiAldSBzaXplIGNsYXNzZXMuXG4iLAogICAgICAgICAgICAgU01BTExfUkVRVUVTVF9USFJFU0hPTEQsIG51bWNsYXNzZXMpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWNsYXNzZXM7ICsraSkKQEAgLTE3NzUsNyArMTgxNSw2IEBACiAgICAgICogd2lsbCBiZSBsaXZpbmcgaW4gZnVsbCBwb29scyAtLSB3b3VsZCBiZSBhIHNoYW1lIHRvIG1pc3MgdGhlbS4KICAgICAgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbWF4YXJlbmFzOyArK2kpIHsKLSAgICAgICAgdWludCBwb29sc2luYXJlbmE7CiAgICAgICAgIHVpbnQgajsKICAgICAgICAgdXB0ciBiYXNlID0gYXJlbmFzW2ldLmFkZHJlc3M7CiAKQEAgLTE3ODQsNyArMTgyMyw2IEBACiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbmFyZW5hcyArPSAxOwogCi0gICAgICAgIHBvb2xzaW5hcmVuYSA9IGFyZW5hc1tpXS5udG90YWxwb29sczsKICAgICAgICAgbnVtZnJlZXBvb2xzICs9IGFyZW5hc1tpXS5uZnJlZXBvb2xzOwogCiAgICAgICAgIC8qIHJvdW5kIHVwIHRvIHBvb2wgYWxpZ25tZW50ICovCkBAIC0xODIwLDEwICsxODU4LDEwIEBACiAgICAgfQogICAgIGFzc2VydChuYXJlbmFzID09IG5hcmVuYXNfY3VycmVudGx5X2FsbG9jYXRlZCk7CiAKLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOworICAgIGZwdXRjKCdcbicsIG91dCk7CiAgICAgZnB1dHMoImNsYXNzICAgc2l6ZSAgIG51bSBwb29scyAgIGJsb2NrcyBpbiB1c2UgIGF2YWlsIGJsb2Nrc1xuIgogICAgICAgICAgICItLS0tLSAgIC0tLS0gICAtLS0tLS0tLS0gICAtLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS1cbiIsCi0gICAgICAgICAgc3RkZXJyKTsKKyAgICAgICAgICBvdXQpOwogCiAgICAgZm9yIChpID0gMDsgaSA8IG51bWNsYXNzZXM7ICsraSkgewogICAgICAgICBzaXplX3QgcCA9IG51bXBvb2xzW2ldOwpAQCAtMTgzNCw3ICsxODcyLDcgQEAKICAgICAgICAgICAgIGFzc2VydChiID09IDAgJiYgZiA9PSAwKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiJTV1ICU2dSAiCisgICAgICAgIGZwcmludGYob3V0LCAiJTV1ICU2dSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiJTExIiBQWV9GT1JNQVRfU0laRV9UICJ1ICIKICAgICAgICAgICAgICAgICAgICAgICAgICIlMTUiIFBZX0ZPUk1BVF9TSVpFX1QgInUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIiUxMyIgUFlfRk9STUFUX1NJWkVfVCAidVxuIiwKQEAgLTE4NDQsMzUgKzE4ODIsMzYgQEAKICAgICAgICAgcG9vbF9oZWFkZXJfYnl0ZXMgKz0gcCAqIFBPT0xfT1ZFUkhFQUQ7CiAgICAgICAgIHF1YW50aXphdGlvbiArPSBwICogKChQT09MX1NJWkUgLSBQT09MX09WRVJIRUFEKSAlIHNpemUpOwogICAgIH0KLSAgICBmcHV0YygnXG4nLCBzdGRlcnIpOwotICAgICh2b2lkKXByaW50b25lKCIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOwotCi0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGFsbG9jYXRlZCB0b3RhbCIsIG50aW1lc19hcmVuYV9hbGxvY2F0ZWQpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyByZWNsYWltZWQiLCBudGltZXNfYXJlbmFfYWxsb2NhdGVkIC0gbmFyZW5hcyk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOwotICAgICh2b2lkKXByaW50b25lKCIjIGFyZW5hcyBhbGxvY2F0ZWQgY3VycmVudCIsIG5hcmVuYXMpOworICAgIGZwdXRjKCdcbicsIG91dCk7CisjaWZkZWYgUFlNQUxMT0NfREVCVUcKKyAgICAodm9pZClwcmludG9uZShvdXQsICIjIHRpbWVzIG9iamVjdCBtYWxsb2MgY2FsbGVkIiwgc2VyaWFsbm8pOworI2VuZGlmCisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgYWxsb2NhdGVkIHRvdGFsIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCAiIyBhcmVuYXMgcmVjbGFpbWVkIiwgbnRpbWVzX2FyZW5hX2FsbG9jYXRlZCAtIG5hcmVuYXMpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGhpZ2h3YXRlciBtYXJrIiwgbmFyZW5hc19oaWdod2F0ZXIpOworICAgICh2b2lkKXByaW50b25lKG91dCwgIiMgYXJlbmFzIGFsbG9jYXRlZCBjdXJyZW50IiwgbmFyZW5hcyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICIlIiBQWV9GT1JNQVRfU0laRV9UICJ1IGFyZW5hcyAqICVkIGJ5dGVzL2FyZW5hIiwKICAgICAgICAgbmFyZW5hcywgQVJFTkFfU0laRSk7Ci0gICAgKHZvaWQpcHJpbnRvbmUoYnVmLCBuYXJlbmFzICogQVJFTkFfU0laRSk7CisgICAgKHZvaWQpcHJpbnRvbmUob3V0LCBidWYsIG5hcmVuYXMgKiBBUkVOQV9TSVpFKTsKIAotICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgZnB1dGMoJ1xuJywgb3V0KTsKIAotICAgIHRvdGFsID0gcHJpbnRvbmUoIiMgYnl0ZXMgaW4gYWxsb2NhdGVkIGJsb2NrcyIsIGFsbG9jYXRlZF9ieXRlcyk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgaW4gYXZhaWxhYmxlIGJsb2NrcyIsIGF2YWlsYWJsZV9ieXRlcyk7CisgICAgdG90YWwgPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGluIGFsbG9jYXRlZCBibG9ja3MiLCBhbGxvY2F0ZWRfYnl0ZXMpOworICAgIHRvdGFsICs9IHByaW50b25lKG91dCwgIiMgYnl0ZXMgaW4gYXZhaWxhYmxlIGJsb2NrcyIsIGF2YWlsYWJsZV9ieXRlcyk7CiAKICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCiAgICAgICAgICIldSB1bnVzZWQgcG9vbHMgKiAlZCBieXRlcyIsIG51bWZyZWVwb29scywgUE9PTF9TSVpFKTsKLSAgICB0b3RhbCArPSBwcmludG9uZShidWYsIChzaXplX3QpbnVtZnJlZXBvb2xzICogUE9PTF9TSVpFKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsIGJ1ZiwgKHNpemVfdCludW1mcmVlcG9vbHMgKiBQT09MX1NJWkUpOwogCi0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBwb29sIGhlYWRlcnMiLCBwb29sX2hlYWRlcl9ieXRlcyk7Ci0gICAgdG90YWwgKz0gcHJpbnRvbmUoIiMgYnl0ZXMgbG9zdCB0byBxdWFudGl6YXRpb24iLCBxdWFudGl6YXRpb24pOwotICAgIHRvdGFsICs9IHByaW50b25lKCIjIGJ5dGVzIGxvc3QgdG8gYXJlbmEgYWxpZ25tZW50IiwgYXJlbmFfYWxpZ25tZW50KTsKLSAgICAodm9pZClwcmludG9uZSgiVG90YWwiLCB0b3RhbCk7CisgICAgdG90YWwgKz0gcHJpbnRvbmUob3V0LCAiIyBieXRlcyBsb3N0IHRvIHBvb2wgaGVhZGVycyIsIHBvb2xfaGVhZGVyX2J5dGVzKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gcXVhbnRpemF0aW9uIiwgcXVhbnRpemF0aW9uKTsKKyAgICB0b3RhbCArPSBwcmludG9uZShvdXQsICIjIGJ5dGVzIGxvc3QgdG8gYXJlbmEgYWxpZ25tZW50IiwgYXJlbmFfYWxpZ25tZW50KTsKKyAgICAodm9pZClwcmludG9uZShvdXQsICJUb3RhbCIsIHRvdGFsKTsKIH0KIAotI2VuZGlmICAvKiBQWU1BTExPQ19ERUJVRyAqLworI2VuZGlmIC8qICNpZmRlZiBXSVRIX1BZTUFMTE9DICovCiAKICNpZmRlZiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIKIC8qIE1ha2UgdGhpcyBmdW5jdGlvbiBsYXN0IHNvIGdjYyB3b24ndCBpbmxpbmUgaXQgc2luY2UgdGhlIGRlZmluaXRpb24gaXMKZGlmZiAtLWdpdCBhL09iamVjdHMvcmFuZ2VvYmplY3QuYyBiL09iamVjdHMvcmFuZ2VvYmplY3QuYwppbmRleCBiNjdiOTY5Li42OGQ1NjM2IDEwMDY0NAotLS0gYS9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCkBAIC0xLDYgKzEsNyBAQAogLyogUmFuZ2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKICNpbmNsdWRlICJQeXRob24uaCIKKyNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogLyogU3VwcG9ydCBvYmplY3RzIHdob3NlIGxlbmd0aCBpcyA+IFBZX1NTSVpFX1RfTUFYLgogCkBAIC02MTAsNiArNjExLDEzNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlfSVRFUlNFQVJDSF9DT05UQUlOUyk7CiB9CiAKKy8qIENvbXBhcmUgdHdvIHJhbmdlIG9iamVjdHMuICBSZXR1cm4gMSBmb3IgZXF1YWwsIDAgZm9yIG5vdCBlcXVhbAorICAgYW5kIC0xIG9uIGVycm9yLiAgVGhlIGFsZ29yaXRobSBpcyByb3VnaGx5IHRoZSBDIGVxdWl2YWxlbnQgb2YKKworICAgaWYgcjAgaXMgcjE6CisgICAgICAgcmV0dXJuIFRydWUKKyAgIGlmIGxlbihyMCkgIT0gbGVuKHIxKToKKyAgICAgICByZXR1cm4gRmFsc2UKKyAgIGlmIG5vdCBsZW4ocjApOgorICAgICAgIHJldHVybiBUcnVlCisgICBpZiByMC5zdGFydCAhPSByMS5zdGFydDoKKyAgICAgICByZXR1cm4gRmFsc2UKKyAgIGlmIGxlbihyMCkgPT0gMToKKyAgICAgICByZXR1cm4gVHJ1ZQorICAgcmV0dXJuIHIwLnN0ZXAgPT0gcjEuc3RlcAorKi8KK3N0YXRpYyBpbnQKK3JhbmdlX2VxdWFscyhyYW5nZW9iamVjdCAqcjAsIHJhbmdlb2JqZWN0ICpyMSkKK3sKKyAgICBpbnQgY21wX3Jlc3VsdDsKKyAgICBQeU9iamVjdCAqb25lOworCisgICAgaWYgKHIwID09IHIxKQorICAgICAgICByZXR1cm4gMTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5sZW5ndGgsIHIxLT5sZW5ndGgsIFB5X0VRKTsKKyAgICAvKiBSZXR1cm4gRmFsc2Ugb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAxKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfTm90KHIwLT5sZW5ndGgpOworICAgIC8qIFJldHVybiBUcnVlIG9yIGVycm9yIHRvIHRoZSBjYWxsZXIuICovCisgICAgaWYgKGNtcF9yZXN1bHQgIT0gMCkKKyAgICAgICAgcmV0dXJuIGNtcF9yZXN1bHQ7CisgICAgY21wX3Jlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbChyMC0+c3RhcnQsIHIxLT5zdGFydCwgUHlfRVEpOworICAgIC8qIFJldHVybiBGYWxzZSBvciBlcnJvciB0byB0aGUgY2FsbGVyLiAqLworICAgIGlmIChjbXBfcmVzdWx0ICE9IDEpCisgICAgICAgIHJldHVybiBjbXBfcmVzdWx0OworICAgIG9uZSA9IFB5TG9uZ19Gcm9tTG9uZygxKTsKKyAgICBpZiAoIW9uZSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGNtcF9yZXN1bHQgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2wocjAtPmxlbmd0aCwgb25lLCBQeV9FUSk7CisgICAgUHlfREVDUkVGKG9uZSk7CisgICAgLyogUmV0dXJuIFRydWUgb3IgZXJyb3IgdG8gdGhlIGNhbGxlci4gKi8KKyAgICBpZiAoY21wX3Jlc3VsdCAhPSAwKQorICAgICAgICByZXR1cm4gY21wX3Jlc3VsdDsKKyAgICByZXR1cm4gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHIwLT5zdGVwLCByMS0+c3RlcCwgUHlfRVEpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorcmFuZ2VfcmljaGNvbXBhcmUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgaW50IG9wKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBpZiAoIVB5UmFuZ2VfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisgICAgc3dpdGNoIChvcCkgeworICAgIGNhc2UgUHlfTkU6CisgICAgY2FzZSBQeV9FUToKKyAgICAgICAgcmVzdWx0ID0gcmFuZ2VfZXF1YWxzKChyYW5nZW9iamVjdCopc2VsZiwgKHJhbmdlb2JqZWN0KilvdGhlcik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKG9wID09IFB5X05FKQorICAgICAgICAgICAgcmVzdWx0ID0gIXJlc3VsdDsKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeV9SRVRVUk5fRkFMU0U7CisgICAgY2FzZSBQeV9MRToKKyAgICBjYXNlIFB5X0dFOgorICAgIGNhc2UgUHlfTFQ6CisgICAgY2FzZSBQeV9HVDoKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworLyogSGFzaCBmdW5jdGlvbiBmb3IgcmFuZ2Ugb2JqZWN0cy4gIFJvdWdoIEMgZXF1aXZhbGVudCBvZgorCisgICBpZiBub3QgbGVuKHIpOgorICAgICAgIHJldHVybiBoYXNoKChsZW4ociksIE5vbmUsIE5vbmUpKQorICAgaWYgbGVuKHIpID09IDE6CisgICAgICAgcmV0dXJuIGhhc2goKGxlbihyKSwgci5zdGFydCwgTm9uZSkpCisgICByZXR1cm4gaGFzaCgobGVuKHIpLCByLnN0YXJ0LCByLnN0ZXApKQorKi8KK3N0YXRpYyBQeV9oYXNoX3QKK3JhbmdlX2hhc2gocmFuZ2VvYmplY3QgKnIpCit7CisgICAgUHlPYmplY3QgKnQ7CisgICAgUHlfaGFzaF90IHJlc3VsdCA9IC0xOworICAgIGludCBjbXBfcmVzdWx0OworCisgICAgdCA9IFB5VHVwbGVfTmV3KDMpOworICAgIGlmICghdCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5X0lOQ1JFRihyLT5sZW5ndGgpOworICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMCwgci0+bGVuZ3RoKTsKKyAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfTm90KHItPmxlbmd0aCk7CisgICAgaWYgKGNtcF9yZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZW5kOworICAgIGlmIChjbXBfcmVzdWx0ID09IDEpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMSwgUHlfTm9uZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odCwgMiwgUHlfTm9uZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqb25lOworICAgICAgICBQeV9JTkNSRUYoci0+c3RhcnQpOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDEsIHItPnN0YXJ0KTsKKyAgICAgICAgb25lID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgICAgICBpZiAoIW9uZSkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBjbXBfcmVzdWx0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHItPmxlbmd0aCwgb25lLCBQeV9FUSk7CisgICAgICAgIFB5X0RFQ1JFRihvbmUpOworICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZW5kOworICAgICAgICBpZiAoY21wX3Jlc3VsdCA9PSAxKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHQsIDIsIFB5X05vbmUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfSU5DUkVGKHItPnN0ZXApOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh0LCAyLCByLT5zdGVwKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXN1bHQgPSBQeU9iamVjdF9IYXNoKHQpOworICBlbmQ6CisgICAgUHlfREVDUkVGKHQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiByYW5nZV9jb3VudChyYW5nZW9iamVjdCAqciwgUHlPYmplY3QgKm9iKQogewpAQCAtNzUwLDYgKzg4MiwxMyBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCitzdGF0aWMgUHlNZW1iZXJEZWYgcmFuZ2VfbWVtYmVyc1tdID0geworICAgIHsic3RhcnQiLCAgIFRfT0JKRUNUX0VYLCAgICBvZmZzZXRvZihyYW5nZW9iamVjdCwgc3RhcnQpLCAgIFJFQURPTkxZfSwKKyAgICB7InN0b3AiLCAgICBUX09CSkVDVF9FWCwgICAgb2Zmc2V0b2YocmFuZ2VvYmplY3QsIHN0b3ApLCAgICBSRUFET05MWX0sCisgICAgeyJzdGVwIiwgICAgVF9PQkpFQ1RfRVgsICAgIG9mZnNldG9mKHJhbmdlb2JqZWN0LCBzdGVwKSwgICAgUkVBRE9OTFl9LAorICAgIHswfQorfTsKKwogUHlUeXBlT2JqZWN0IFB5UmFuZ2VfVHlwZSA9IHsKICAgICAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAgICAgInJhbmdlIiwgICAgICAgICAgICAgICAgLyogTmFtZSBvZiB0aGlzIHR5cGUgKi8KQEAgLTc2NCw3ICs5MDMsNyBAQAogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KICAgICAgICAgJnJhbmdlX2FzX3NlcXVlbmNlLCAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KICAgICAgICAgJnJhbmdlX2FzX21hcHBpbmcsICAgICAgLyogdHBfYXNfbWFwcGluZyAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgICAgIChoYXNoZnVuYylyYW5nZV9oYXNoLCAgIC8qIHRwX2hhc2ggKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLwogICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KICAgICAgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAvKiB0cF9nZXRhdHRybyAqLwpAQCAtNzc0LDEyICs5MTMsMTIgQEAKICAgICAgICAgcmFuZ2VfZG9jLCAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgICAgIHJhbmdlX3JpY2hjb21wYXJlLCAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCiAgICAgICAgIHJhbmdlX2l0ZXIsICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KICAgICAgICAgcmFuZ2VfbWV0aG9kcywgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwotICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCisgICAgICAgIHJhbmdlX21lbWJlcnMsICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwpAQCAtODI2LDkgKzk2NSw1OSBAQAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKICAgICAgICAgICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZWl0ZXJfcmVkdWNlKHJhbmdlaXRlcm9iamVjdCAqcikKK3sKKyAgICBQeU9iamVjdCAqc3RhcnQ9TlVMTCwgKnN0b3A9TlVMTCwgKnN0ZXA9TlVMTDsKKyAgICBQeU9iamVjdCAqcmFuZ2U7CisKKyAgICAvKiBjcmVhdGUgYSByYW5nZSBvYmplY3QgZm9yIHBpY2tsaW5nICovCisgICAgc3RhcnQgPSBQeUxvbmdfRnJvbUxvbmcoci0+c3RhcnQpOworICAgIGlmIChzdGFydCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICBzdG9wID0gUHlMb25nX0Zyb21Mb25nKHItPnN0YXJ0ICsgci0+bGVuICogci0+c3RlcCk7CisgICAgaWYgKHN0b3AgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnI7CisgICAgc3RlcCA9IFB5TG9uZ19Gcm9tTG9uZyhyLT5zdGVwKTsKKyAgICBpZiAoc3RlcCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycjsKKyAgICByYW5nZSA9IChQeU9iamVjdCopbWFrZV9yYW5nZV9vYmplY3QoJlB5UmFuZ2VfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgc3RvcCwgc3RlcCk7CisgICAgaWYgKHJhbmdlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyOworICAgIC8qIHJldHVybiB0aGUgcmVzdWx0ICovCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTilpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgcmFuZ2UsIHItPmluZGV4KTsKK2VycjoKKyAgICBQeV9YREVDUkVGKHN0YXJ0KTsKKyAgICBQeV9YREVDUkVGKHN0b3ApOworICAgIFB5X1hERUNSRUYoc3RlcCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCityYW5nZWl0ZXJfc2V0c3RhdGUocmFuZ2VpdGVyb2JqZWN0ICpyLCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgbG9uZyBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHItPmxlbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgci0+aW5kZXggPSBpbmRleDsKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHJhbmdlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pcmFuZ2VpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXJhbmdlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLAorICAgICAgICByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbilyYW5nZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtOTU3LDkgKzExNDYsNTEgQEAKICAgICByZXR1cm4gUHlOdW1iZXJfU3VidHJhY3Qoci0+bGVuLCByLT5pbmRleCk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitsb25ncmFuZ2VpdGVyX3JlZHVjZShsb25ncmFuZ2VpdGVyb2JqZWN0ICpyKQoreworICAgIFB5T2JqZWN0ICpwcm9kdWN0LCAqc3RvcD1OVUxMOworICAgIFB5T2JqZWN0ICpyYW5nZTsKKworICAgIC8qIGNyZWF0ZSBhIHJhbmdlIG9iamVjdCBmb3IgcGlja2xpbmcuICBNdXN0IGNhbGN1bGF0ZSB0aGUgInN0b3AiIHZhbHVlICovCisgICAgcHJvZHVjdCA9IFB5TnVtYmVyX011bHRpcGx5KHItPmxlbiwgci0+c3RlcCk7CisgICAgaWYgKHByb2R1Y3QgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3RvcCA9IFB5TnVtYmVyX0FkZChyLT5zdGFydCwgcHJvZHVjdCk7CisgICAgUHlfREVDUkVGKHByb2R1Y3QpOworICAgIGlmIChzdG9wID09ICBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeV9JTkNSRUYoci0+c3RhcnQpOworICAgIFB5X0lOQ1JFRihyLT5zdGVwKTsKKyAgICByYW5nZSA9ICAoUHlPYmplY3QqKW1ha2VfcmFuZ2Vfb2JqZWN0KCZQeVJhbmdlX1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci0+c3RhcnQsIHN0b3AsIHItPnN0ZXApOworICAgIGlmIChyYW5nZSA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihyLT5zdGFydCk7CisgICAgICAgIFB5X0RFQ1JFRihzdG9wKTsKKyAgICAgICAgUHlfREVDUkVGKHItPnN0ZXApOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiByZXR1cm4gdGhlIHJlc3VsdCAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pTyIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksIHJhbmdlLCByLT5pbmRleCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitsb25ncmFuZ2VpdGVyX3NldHN0YXRlKGxvbmdyYW5nZWl0ZXJvYmplY3QgKnIsIFB5T2JqZWN0ICpzdGF0ZSkKK3sKKyAgICBQeV9DTEVBUihyLT5pbmRleCk7CisgICAgci0+aW5kZXggPSBzdGF0ZTsKKyAgICBQeV9JTkNSRUYoci0+aW5kZXgpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgbG9uZ3JhbmdlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pbG9uZ3JhbmdlaXRlcl9sZW4sIE1FVEhfTk9BUkdTLAogICAgICAgICBsZW5ndGhfaGludF9kb2N9LAorICAgIHsiX19yZWR1Y2VfXyIsIChQeUNGdW5jdGlvbilsb25ncmFuZ2VpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgKFB5Q0Z1bmN0aW9uKWxvbmdyYW5nZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zZXRvYmplY3QuYyBiL09iamVjdHMvc2V0b2JqZWN0LmMKaW5kZXggM2FiZWVmYi4uNzIzNjc5YSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zZXRvYmplY3QuYworKysgYi9PYmplY3RzL3NldG9iamVjdC5jCkBAIC03Nyw3ICs3Nyw3IEBACiBzdGF0aWMgc2V0ZW50cnkgKgogc2V0X2xvb2trZXkoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqa2V5LCByZWdpc3RlciBQeV9oYXNoX3QgaGFzaCkKIHsKLSAgICByZWdpc3RlciBQeV9zc2l6ZV90IGk7CisgICAgcmVnaXN0ZXIgc2l6ZV90IGk7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IHBlcnR1cmI7CiAgICAgcmVnaXN0ZXIgc2V0ZW50cnkgKmZyZWVzbG90OwogICAgIHJlZ2lzdGVyIHNpemVfdCBtYXNrID0gc28tPm1hc2s7CkBAIC04Niw3ICs4Niw3IEBACiAgICAgcmVnaXN0ZXIgaW50IGNtcDsKICAgICBQeU9iamVjdCAqc3RhcnRrZXk7CiAKLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgaWYgKGVudHJ5LT5rZXkgPT0gTlVMTCB8fCBlbnRyeS0+a2V5ID09IGtleSkKICAgICAgICAgcmV0dXJuIGVudHJ5OwpAQCAtMTU5LDcgKzE1OSw3IEBACiBzdGF0aWMgc2V0ZW50cnkgKgogc2V0X2xvb2trZXlfdW5pY29kZShQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICprZXksIHJlZ2lzdGVyIFB5X2hhc2hfdCBoYXNoKQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKKyAgICByZWdpc3RlciBzaXplX3QgaTsKICAgICByZWdpc3RlciBzaXplX3QgcGVydHVyYjsKICAgICByZWdpc3RlciBzZXRlbnRyeSAqZnJlZXNsb3Q7CiAgICAgcmVnaXN0ZXIgc2l6ZV90IG1hc2sgPSBzby0+bWFzazsKQEAgLTE3NCw3ICsxNzQsNyBAQAogICAgICAgICBzby0+bG9va3VwID0gc2V0X2xvb2trZXk7CiAgICAgICAgIHJldHVybiBzZXRfbG9va2tleShzbywga2V5LCBoYXNoKTsKICAgICB9Ci0gICAgaSA9IGhhc2ggJiBtYXNrOworICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwogICAgIGVudHJ5ID0gJnRhYmxlW2ldOwogICAgIGlmIChlbnRyeS0+a2V5ID09IE5VTEwgfHwgZW50cnktPmtleSA9PSBrZXkpCiAgICAgICAgIHJldHVybiBlbnRyeTsKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgIHNldGVudHJ5ICp0YWJsZSA9IHNvLT50YWJsZTsKICAgICByZWdpc3RlciBzZXRlbnRyeSAqZW50cnk7CiAKLSAgICBpID0gaGFzaCAmIG1hc2s7CisgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7CiAgICAgZW50cnkgPSAmdGFibGVbaV07CiAgICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZW50cnktPmtleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CiAgICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKQEAgLTM4Niw3ICszODYsNyBAQAogICAgIHJlZ2lzdGVyIFB5X3NzaXplX3Qgbl91c2VkOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC00MzQsNyArNDM0LDcgQEAKICAgICBhc3NlcnQgKFB5QW55U2V0X0NoZWNrKHNvKSk7CiAKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKLSAgICAgICAgKGhhc2ggPSAoKFB5VW5pY29kZU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgeworICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewogICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTU3OSwxMSArNTc5LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfcmVwcihQeVNldE9iamVjdCAqc28pCiB7Ci0gICAgUHlPYmplY3QgKmtleXMsICpyZXN1bHQ9TlVMTDsKLSAgICBQeV9VTklDT0RFICp1OworICAgIFB5T2JqZWN0ICpyZXN1bHQ9TlVMTCwgKmtleXMsICpsaXN0cmVwciwgKnRtcDsKICAgICBpbnQgc3RhdHVzID0gUHlfUmVwckVudGVyKChQeU9iamVjdCopc28pOwotICAgIFB5T2JqZWN0ICpsaXN0cmVwcjsKLSAgICBQeV9zc2l6ZV90IG5ld3NpemU7CiAKICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCkBAIC02MDEsMjkgKzU5OCwyNCBAQAogICAgIGlmIChrZXlzID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKIAorICAgIC8qIHJlcHIoa2V5cylbMTotMV0gKi8KICAgICBsaXN0cmVwciA9IFB5T2JqZWN0X1JlcHIoa2V5cyk7CiAgICAgUHlfREVDUkVGKGtleXMpOwogICAgIGlmIChsaXN0cmVwciA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgbmV3c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShsaXN0cmVwcik7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsIG5ld3NpemUpOwotICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlc3VsdCk7Ci0gICAgICAgICp1KysgPSAneyc7Ci0gICAgICAgIC8qIE9taXQgdGhlIGJyYWNrZXRzIGZyb20gdGhlIGxpc3RyZXByICovCi0gICAgICAgIFB5X1VOSUNPREVfQ09QWSh1LCBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaXN0cmVwcikrMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShsaXN0cmVwciktMik7Ci0gICAgICAgIHUgKz0gbmV3c2l6ZS0yOwotICAgICAgICAqdSsrID0gJ30nOwotICAgIH0KKyAgICB0bXAgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpc3RyZXByLCAxLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChsaXN0cmVwciktMSk7CiAgICAgUHlfREVDUkVGKGxpc3RyZXByKTsKLSAgICBpZiAoUHlfVFlQRShzbykgIT0gJlB5U2V0X1R5cGUpIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlcyglVSkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzbyktPnRwX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwotICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgcmVzdWx0ID0gdG1wOwotICAgIH0KKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBsaXN0cmVwciA9IHRtcDsKKworICAgIGlmIChQeV9UWVBFKHNvKSAhPSAmUHlTZXRfVHlwZSkKKyAgICAgICAgcmVzdWx0ID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVzKHslVX0pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzbyktPnRwX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RyZXByKTsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJ7JVV9IiwgbGlzdHJlcHIpOworICAgIFB5X0RFQ1JFRihsaXN0cmVwcik7CiBkb25lOgogICAgIFB5X1JlcHJMZWF2ZSgoUHlPYmplY3QqKXNvKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjgyLDcgKzY3NCw3IEBACiAgICAgc2V0ZW50cnkgKmVudHJ5OwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8Ci0gICAgICAgIChoYXNoID0gKChQeVVuaWNvZGVPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpIHsKICAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC03NjgsMTQgKzc2MCwxNCBAQAogZnJvemVuc2V0X2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlTZXRPYmplY3QgKnNvID0gKFB5U2V0T2JqZWN0ICopc2VsZjsKLSAgICBQeV9oYXNoX3QgaCwgaGFzaCA9IDE5Mjc4NjgyMzdMOworICAgIFB5X3VoYXNoX3QgaCwgaGFzaCA9IDE5Mjc4NjgyMzdVOwogICAgIHNldGVudHJ5ICplbnRyeTsKICAgICBQeV9zc2l6ZV90IHBvcyA9IDA7CiAKICAgICBpZiAoc28tPmhhc2ggIT0gLTEpCiAgICAgICAgIHJldHVybiBzby0+aGFzaDsKIAotICAgIGhhc2ggKj0gUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOworICAgIGhhc2ggKj0gKFB5X3VoYXNoX3QpUHlTZXRfR0VUX1NJWkUoc2VsZikgKyAxOwogICAgIHdoaWxlIChzZXRfbmV4dChzbywgJnBvcywgJmVudHJ5KSkgewogICAgICAgICAvKiBXb3JrIHRvIGluY3JlYXNlIHRoZSBiaXQgZGlzcGVyc2lvbiBmb3IgY2xvc2VseSBzcGFjZWQgaGFzaAogICAgICAgICAgICB2YWx1ZXMuICBUaGUgaXMgaW1wb3J0YW50IGJlY2F1c2Ugc29tZSB1c2UgY2FzZXMgaGF2ZSBtYW55CkBAIC03ODMsMTEgKzc3NSwxMSBAQAogICAgICAgICAgICBoYXNoZXMgc28gdGhhdCBtYW55IGRpc3RpbmN0IGNvbWJpbmF0aW9ucyBjb2xsYXBzZSB0byBvbmx5CiAgICAgICAgICAgIGEgaGFuZGZ1bCBvZiBkaXN0aW5jdCBoYXNoIHZhbHVlcy4gKi8KICAgICAgICAgaCA9IGVudHJ5LT5oYXNoOwotICAgICAgICBoYXNoIF49IChoIF4gKGggPDwgMTYpIF4gODk4Njk3NDdMKSAgKiAzNjQ0Nzk4MTY3dTsKKyAgICAgICAgaGFzaCBePSAoaCBeIChoIDw8IDE2KSBeIDg5ODY5NzQ3VSkgICogMzY0NDc5ODE2N1U7CiAgICAgfQotICAgIGhhc2ggPSBoYXNoICogNjkwNjlMICsgOTA3MTMzOTIzTDsKKyAgICBoYXNoID0gaGFzaCAqIDY5MDY5VSArIDkwNzEzMzkyM1U7CiAgICAgaWYgKGhhc2ggPT0gLTEpCi0gICAgICAgIGhhc2ggPSA1OTA5MjM3MTNMOworICAgICAgICBoYXNoID0gNTkwOTIzNzEzVTsKICAgICBzby0+aGFzaCA9IGhhc2g7CiAgICAgcmV0dXJuIGhhc2g7CiB9CkBAIC04MjcsOCArODE5LDUxIEBACiAKIFB5RG9jX1NUUlZBUihsZW5ndGhfaGludF9kb2MsICJQcml2YXRlIG1ldGhvZCByZXR1cm5pbmcgYW4gZXN0aW1hdGUgb2YgbGVuKGxpc3QoaXQpKS4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICpzZXRpdGVyX2l0ZXJuZXh0KHNldGl0ZXJvYmplY3QgKnNpKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3NldGl0ZXJfcmVkdWNlKHNldGl0ZXJvYmplY3QgKnNpKQoreworICAgIFB5T2JqZWN0ICpsaXN0OworICAgIHNldGl0ZXJvYmplY3QgdG1wOworCisgICAgbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgaWYgKCFsaXN0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGNvcHkgdGhlIGl0ZXJhdG9yIHN0YXRlICovCisgICAgdG1wID0gKnNpOworICAgIFB5X1hJTkNSRUYodG1wLnNpX3NldCk7CisKKyAgICAvKiBpdGVyYXRlIHRoZSB0ZW1wb3JhcnkgaW50byBhIGxpc3QgKi8KKyAgICBmb3IoOzspIHsKKyAgICAgICAgUHlPYmplY3QgKmVsZW1lbnQgPSBzZXRpdGVyX2l0ZXJuZXh0KCZ0bXApOworICAgICAgICBpZiAoZWxlbWVudCkgeworICAgICAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQobGlzdCwgZWxlbWVudCkpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGxpc3QpOworICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wLnNpX3NldCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIFB5X1hERUNSRUYodG1wLnNpX3NldCk7CisgICAgLyogY2hlY2sgZm9yIGVycm9yICovCisgICAgaWYgKHRtcC5zaV9zZXQgIT0gTlVMTCkgeworICAgICAgICAvKiB3ZSBoYXZlIGFuIGVycm9yICovCisgICAgICAgIFB5X0RFQ1JFRihsaXN0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE4pIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSwgbGlzdCk7Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHNldGl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXNldGl0ZXJfbGVuLCBNRVRIX05PQVJHUywgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAoUHlDRnVuY3Rpb24pc2V0aXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTA3Niw5ICsxMTExLDEwIEBACiAgICAgcmV0dXJuIGVtcHR5ZnJvemVuc2V0OwogfQogCi12b2lkCi1QeVNldF9GaW5pKHZvaWQpCitpbnQKK1B5U2V0X0NsZWFyRnJlZUxpc3Qodm9pZCkKIHsKKyAgICBpbnQgZnJlZWxpc3Rfc2l6ZSA9IG51bWZyZWU7CiAgICAgUHlTZXRPYmplY3QgKnNvOwogCiAgICAgd2hpbGUgKG51bWZyZWUpIHsKQEAgLTEwODYsMTAgKzExMjIsMjcgQEAKICAgICAgICAgc28gPSBmcmVlX2xpc3RbbnVtZnJlZV07CiAgICAgICAgIFB5T2JqZWN0X0dDX0RlbChzbyk7CiAgICAgfQorICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworfQorCit2b2lkCitQeVNldF9GaW5pKHZvaWQpCit7CisgICAgUHlTZXRfQ2xlYXJGcmVlTGlzdCgpOwogICAgIFB5X0NMRUFSKGR1bW15KTsKICAgICBQeV9DTEVBUihlbXB0eWZyb3plbnNldCk7CiB9CiAKKy8qIFByaW50IHN1bW1hcnkgaW5mbyBhYm91dCB0aGUgc3RhdGUgb2YgdGhlIG9wdGltaXplZCBhbGxvY2F0b3IgKi8KK3ZvaWQKK19QeVNldF9EZWJ1Z01hbGxvY1N0YXRzKEZJTEUgKm91dCkKK3sKKyAgICBfUHlEZWJ1Z0FsbG9jYXRvclN0YXRzKG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcmVlIFB5U2V0T2JqZWN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWUsIHNpemVvZihQeVNldE9iamVjdCkpOworfQorCisKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMTIxMCwxMCArMTI2Myw4IEBACiB7CiAgICAgUHlTZXRPYmplY3QgKnJlc3VsdDsKIAotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICByZXN1bHQgPSAoUHlTZXRPYmplY3QgKilzZXRfY29weShzbyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQpAQCAtMTIzMCwxMCArMTI4MSw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2lvcihQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CisKICAgICBpZiAoc2V0X3VwZGF0ZV9pbnRlcm5hbChzbywgb3RoZXIpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBQeV9JTkNSRUYoc28pOwpAQCAtMTM4MywxMCArMTQzMyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X2FuZChQeVNldE9iamVjdCAqc28sIFB5T2JqZWN0ICpvdGhlcikKIHsKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJldHVybiBzZXRfaW50ZXJzZWN0aW9uKHNvLCBvdGhlcik7CiB9CiAKQEAgLTEzOTUsMTAgKzE0NDMsOCBAQAogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmVzdWx0ID0gc2V0X2ludGVyc2VjdGlvbl91cGRhdGUoc28sIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTYyNSwyMCArMTY3MSwxNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9zdWIoUHlTZXRPYmplY3QgKnNvLCBQeU9iamVjdCAqb3RoZXIpCiB7Ci0gICAgaWYgKCFQeUFueVNldF9DaGVjayhzbykgfHwgIVB5QW55U2V0X0NoZWNrKG90aGVyKSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICByZXR1cm4gc2V0X2RpZmZlcmVuY2Uoc28sIG90aGVyKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKIHNldF9pc3ViKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICBpZiAoc2V0X2RpZmZlcmVuY2VfdXBkYXRlX2ludGVybmFsKHNvLCBvdGhlcikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIFB5X0lOQ1JFRihzbyk7CkBAIC0xNzM2LDEwICsxNzc4LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzZXRfeG9yKFB5U2V0T2JqZWN0ICpzbywgUHlPYmplY3QgKm90aGVyKQogewotICAgIGlmICghUHlBbnlTZXRfQ2hlY2soc28pIHx8ICFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKHNvKSB8fCAhUHlBbnlTZXRfQ2hlY2sob3RoZXIpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZShzbywgb3RoZXIpOwogfQogCkBAIC0xNzQ4LDEwICsxNzg4LDggQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFueVNldF9DaGVjayhvdGhlcikpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5QW55U2V0X0NoZWNrKG90aGVyKSkKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIHJlc3VsdCA9IHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUoc28sIG90aGVyKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTgxMywxMCArMTg1MSw5IEBACiB7CiAgICAgUHlPYmplY3QgKnIxLCAqcjI7CiAKLSAgICBpZighUHlBbnlTZXRfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZighUHlBbnlTZXRfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKwogICAgIHN3aXRjaCAob3ApIHsKICAgICBjYXNlIFB5X0VROgogICAgICAgICBpZiAoUHlTZXRfR0VUX1NJWkUodikgIT0gUHlTZXRfR0VUX1NJWkUodykpCkBAIC0xODQ2LDggKzE4ODMsNyBAQAogICAgICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgICAgICByZXR1cm4gc2V0X2lzc3VwZXJzZXQodiwgdyk7CiAgICAgfQotICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOworICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE5NTksNiArMTk5NSw3IEBACiBzZXRfcmVkdWNlKFB5U2V0T2JqZWN0ICpzbykKIHsKICAgICBQeU9iamVjdCAqa2V5cz1OVUxMLCAqYXJncz1OVUxMLCAqcmVzdWx0PU5VTEwsICpkaWN0PU5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwogCiAgICAga2V5cyA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilzbyk7CiAgICAgaWYgKGtleXMgPT0gTlVMTCkKQEAgLTE5NjYsNyArMjAwMyw3IEBACiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBrZXlzKTsKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGRvbmU7Ci0gICAgZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoKFB5T2JqZWN0ICopc28sICJfX2RpY3RfXyIpOworICAgIGRpY3QgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXNvLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBkaWN0ID0gUHlfTm9uZTsKQEAgLTE5ODAsOCArMjAxNyw2IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogc2V0X3NpemVvZihQeVNldE9iamVjdCAqc28pCiB7CmRpZmYgLS1naXQgYS9PYmplY3RzL3NsaWNlb2JqZWN0LmMgYi9PYmplY3RzL3NsaWNlb2JqZWN0LmMKaW5kZXggMGY0YjY0Ny4uMTU5MzMzNSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zbGljZW9iamVjdC5jCisrKyBiL09iamVjdHMvc2xpY2VvYmplY3QuYwpAQCAtMTcsNiArMTcsMTcgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKIAogc3RhdGljIFB5T2JqZWN0ICoKK2VsbGlwc2lzX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQoreworICAgIGlmIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIHx8IChrd2FyZ3MgJiYgUHlEaWN0X1NpemUoa3dhcmdzKSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkVsbGlwc2lzVHlwZSB0YWtlcyBubyBhcmd1bWVudHMiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihQeV9FbGxpcHNpcyk7CisgICAgcmV0dXJuIFB5X0VsbGlwc2lzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZWxsaXBzaXNfcmVwcihQeU9iamVjdCAqb3ApCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJFbGxpcHNpcyIpOwpAQCAtNDMsNiArNTQsMjQgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLworICAgIGVsbGlwc2lzX25ldywgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25ldyAqLwogfTsKIAogUHlPYmplY3QgX1B5X0VsbGlwc2lzT2JqZWN0ID0gewpAQCAtNTEsMTkgKzgwLDM4IEBACiB9OwogCiAKLS8qIFNsaWNlIG9iamVjdCBpbXBsZW1lbnRhdGlvbgorLyogU2xpY2Ugb2JqZWN0IGltcGxlbWVudGF0aW9uICovCiAKLSAgIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhcmUgcHl0aG9uIG9iamVjdHMgd2l0aCBOb25lIGluZGljYXRpbmcgbm8KKy8qIFVzaW5nIGEgY2FjaGUgaXMgdmVyeSBlZmZlY3RpdmUgc2luY2UgdHlwaWNhbGx5IG9ubHkgYSBzaW5nbGUgc2xpY2UgaXMKKyAqIGNyZWF0ZWQgYW5kIHRoZW4gZGVsZXRlZCBhZ2FpbgorICovCitzdGF0aWMgUHlTbGljZU9iamVjdCAqc2xpY2VfY2FjaGUgPSBOVUxMOwordm9pZCBQeVNsaWNlX0Zpbmkodm9pZCkKK3sKKyAgICBQeVNsaWNlT2JqZWN0ICpvYmogPSBzbGljZV9jYWNoZTsKKyAgICBpZiAob2JqICE9IE5VTEwpIHsKKyAgICAgICAgc2xpY2VfY2FjaGUgPSBOVUxMOworICAgICAgICBQeU9iamVjdF9EZWwob2JqKTsKKyAgICB9Cit9CisKKy8qIHN0YXJ0LCBzdG9wLCBhbmQgc3RlcCBhcmUgcHl0aG9uIG9iamVjdHMgd2l0aCBOb25lIGluZGljYXRpbmcgbm8KICAgIGluZGV4IGlzIHByZXNlbnQuCiAqLwogCiBQeU9iamVjdCAqCiBQeVNsaWNlX05ldyhQeU9iamVjdCAqc3RhcnQsIFB5T2JqZWN0ICpzdG9wLCBQeU9iamVjdCAqc3RlcCkKIHsKLSAgICBQeVNsaWNlT2JqZWN0ICpvYmogPSBQeU9iamVjdF9OZXcoUHlTbGljZU9iamVjdCwgJlB5U2xpY2VfVHlwZSk7Ci0KLSAgICBpZiAob2JqID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIFB5U2xpY2VPYmplY3QgKm9iajsKKyAgICBpZiAoc2xpY2VfY2FjaGUgIT0gTlVMTCkgeworICAgICAgICBvYmogPSBzbGljZV9jYWNoZTsKKyAgICAgICAgc2xpY2VfY2FjaGUgPSBOVUxMOworICAgICAgICBfUHlfTmV3UmVmZXJlbmNlKChQeU9iamVjdCAqKW9iaik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb2JqID0gUHlPYmplY3RfTmV3KFB5U2xpY2VPYmplY3QsICZQeVNsaWNlX1R5cGUpOworICAgICAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAoc3RlcCA9PSBOVUxMKSBzdGVwID0gUHlfTm9uZTsKICAgICBQeV9JTkNSRUYoc3RlcCk7CkBAIC0yMzIsNyArMjgwLDEwIEBACiAgICAgUHlfREVDUkVGKHItPnN0ZXApOwogICAgIFB5X0RFQ1JFRihyLT5zdGFydCk7CiAgICAgUHlfREVDUkVGKHItPnN0b3ApOwotICAgIFB5T2JqZWN0X0RlbChyKTsKKyAgICBpZiAoc2xpY2VfY2FjaGUgPT0gTlVMTCkKKyAgICAgICAgc2xpY2VfY2FjaGUgPSByOworICAgIGVsc2UKKyAgICAgICAgUHlPYmplY3RfRGVsKHIpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjk4LDEwICszNDksOCBAQAogICAgIFB5T2JqZWN0ICp0MjsKICAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgaWYgKCFQeVNsaWNlX0NoZWNrKHYpIHx8ICFQeVNsaWNlX0NoZWNrKHcpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKLSAgICB9CisgICAgaWYgKCFQeVNsaWNlX0NoZWNrKHYpIHx8ICFQeVNsaWNlX0NoZWNrKHcpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAKICAgICBpZiAodiA9PSB3KSB7CiAgICAgICAgIC8qIFhYWCBEbyB3ZSByZWFsbHkgbmVlZCB0aGlzIHNob3J0Y3V0PwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvYXNjaWlsaWIuaCBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyODEzZAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2FzY2lpbGliLmgKQEAgLTAsMCArMSwzMCBAQAorLyogdGhpcyBpcyBzb3J0IG9mIGEgaGFjay4gIHRoZXJlJ3MgYXQgbGVhc3Qgb25lIHBsYWNlIChmb3JtYXR0aW5nCisgICBmbG9hdHMpIHdoZXJlIHNvbWUgc3RyaW5nbGliIGNvZGUgdGFrZXMgYSBkaWZmZXJlbnQgcGF0aCBpZiBpdCdzCisgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLworI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQorCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBhc2NpaWxpYl9mYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBhc2NpaWxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHg3RnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyhTVFIsTEVOKSAgIF9QeVVuaWNvZGVfRnJvbUFTQ0lJKChjaGFyKikoU1RSKSwoTEVOKSkKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX2FzY2lpX0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvY29kZWNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwMTA4OQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2NvZGVjcy5oCkBAIC0wLDAgKzEsNjI5IEBACisvKiBzdHJpbmdsaWI6IGNvZGVjIGltcGxlbWVudGF0aW9ucyAqLworCisjaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKKworLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLworI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQorIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKKyNlbHNlCisjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCisjZW5kaWYKKworLyogMTB4eHh4eHggKi8KKyNkZWZpbmUgSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gpICgoY2gpID49IDB4ODAgJiYgKGNoKSA8IDB4QzApCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKHV0ZjhfZGVjb2RlKShjb25zdCBjaGFyICoqaW5wdHIsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm91dHBvcykKK3sKKyAgICBQeV9VQ1M0IGNoOworICAgIGNvbnN0IGNoYXIgKnMgPSAqaW5wdHI7CisgICAgY29uc3QgY2hhciAqYWxpZ25lZF9lbmQgPSAoY29uc3QgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlbmQsIFNJWkVPRl9MT05HKTsKKyAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRlc3QgKyAqb3V0cG9zOworCisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKworICAgICAgICBpZiAoY2ggPCAweDgwKSB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2YgQVNDSUkgY2hhcmFjdGVycy4gR2l2ZW4gdGhhdCBjb21tb24gVVRGLTgKKyAgICAgICAgICAgICAgIGlucHV0IHdpbGwgY29uc2lzdCBvZiBhbiBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgQVNDSUkKKyAgICAgICAgICAgICAgIGNoYXJhY3RlcnMsIHdlIHRyeSB0byBvcHRpbWl6ZSBmb3IgdGhpcyBjYXNlIGJ5IGNoZWNraW5nCisgICAgICAgICAgICAgICBhcyBtYW55IGNoYXJhY3RlcnMgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbi4KKyAgICAgICAgICAgICAgIEZpcnN0LCBjaGVjayBpZiB3ZSBjYW4gZG8gYW4gYWxpZ25lZCByZWFkLCBhcyBtb3N0IENQVXMgaGF2ZQorICAgICAgICAgICAgICAgYSBwZW5hbHR5IGZvciB1bmFsaWduZWQgcmVhZHMuCisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKF9QeV9JU19BTElHTkVEKHMsIFNJWkVPRl9MT05HKSkgeworICAgICAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKl9zID0gczsKKyAgICAgICAgICAgICAgICByZWdpc3RlciBTVFJJTkdMSUJfQ0hBUiAqX3AgPSBwOworICAgICAgICAgICAgICAgIHdoaWxlIChfcyA8IGFsaWduZWRfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgYSB3aG9sZSBsb25nIGF0IGEgdGltZSAoZWl0aGVyIDQgb3IgOCBieXRlcyksCisgICAgICAgICAgICAgICAgICAgICAgIGFuZCBkbyBhIGZhc3QgdW5yb2xsZWQgY29weSBpZiBpdCBvbmx5IGNvbnRhaW5zIEFTQ0lJCisgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMuICovCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3M7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisgICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKFNUUklOR0xJQl9DSEFSKSh2YWx1ZSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA4KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAxNikgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMjQpICYgMHhGRnUpOworIyBpZiBTSVpFT0ZfTE9ORyA9PSA4CisgICAgICAgICAgICAgICAgICAgIF9wWzRdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMzIpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs1XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDQwKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNl0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0OCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzddID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNTYpICYgMHhGRnUpOworIyBlbmRpZgorI2Vsc2UKKyMgaWYgU0laRU9GX0xPTkcgPT0gOAorICAgICAgICAgICAgICAgICAgICBfcFswXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDU2KSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiA0OCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gNDApICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFszXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDMyKSAmIDB4RkZ1KTsKKyAgICAgICAgICAgICAgICAgICAgX3BbNF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAyNCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzVdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs2XSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFs3XSA9IChTVFJJTkdMSUJfQ0hBUikodmFsdWUgJiAweEZGdSk7CisjIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgX3BbMF0gPSAoU1RSSU5HTElCX0NIQVIpKCh2YWx1ZSA+PiAyNCkgJiAweEZGdSk7CisgICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKFNUUklOR0xJQl9DSEFSKSgodmFsdWUgPj4gMTYpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IChTVFJJTkdMSUJfQ0hBUikoKHZhbHVlID4+IDgpICYgMHhGRnUpOworICAgICAgICAgICAgICAgICAgICBfcFszXSA9IChTVFJJTkdMSUJfQ0hBUikodmFsdWUgJiAweEZGdSk7CisjIGVuZGlmCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgX3MgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzID0gX3M7CisgICAgICAgICAgICAgICAgcCA9IF9wOworICAgICAgICAgICAgICAgIGlmIChzID09IGVuZCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikqczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA8IDB4ODApIHsKKyAgICAgICAgICAgICAgICBzKys7CisgICAgICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoIDwgMHhDMikgeworICAgICAgICAgICAgLyogaW52YWxpZCBzZXF1ZW5jZQorICAgICAgICAgICAgICAgXHg4MC1ceEJGIC0tIGNvbnRpbnVhdGlvbiBieXRlCisgICAgICAgICAgICAgICBceEMwLVx4QzEgLS0gZmFrZSAwMDAwLTAwN0YgKi8KKyAgICAgICAgICAgIGdvdG8gSW52YWxpZFN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoIDwgMHhFMCkgeworICAgICAgICAgICAgLyogXHhDMlx4ODAtXHhERlx4QkYgLS0gMDA4MC0wN0ZGICovCisgICAgICAgICAgICBQeV9VQ1M0IGNoMjsKKyAgICAgICAgICAgIGlmIChlbmQgLSBzIDwgMikgeworICAgICAgICAgICAgICAgIC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGRhdGE6IHRoZSBjYWxsZXIgd2lsbCBkZWNpZGUgd2hldGhlcgorICAgICAgICAgICAgICAgICAgIGl0J3MgYW4gZXJyb3Igb3Igbm90ICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaDIgPSAodW5zaWduZWQgY2hhcilzWzFdOworICAgICAgICAgICAgaWYgKCFJU19DT05USU5VQVRJT05fQllURShjaDIpKQorICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICBjaCA9IChjaCA8PCA2KSArIGNoMiAtCisgICAgICAgICAgICAgICAgICgoMHhDMCA8PCA2KSArIDB4ODApOworICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDAwN0YpICYmIChjaCA8PSAweDA3RkYpKTsKKyAgICAgICAgICAgIHMgKz0gMjsKKyAgICAgICAgICAgIGlmIChTVFJJTkdMSUJfTUFYX0NIQVIgPD0gMHgwMDdGIHx8CisgICAgICAgICAgICAgICAgKFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4MDdGRiAmJiBjaCA+IFNUUklOR0xJQl9NQVhfQ0hBUikpCisgICAgICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoIDwgMHhGMCkgeworICAgICAgICAgICAgLyogXHhFMFx4QTBceDgwLVx4RUZceEJGXHhCRiAtLSAwODAwLUZGRkYgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2gyLCBjaDM7CisgICAgICAgICAgICBpZiAoZW5kIC0gcyA8IDMpIHsKKyAgICAgICAgICAgICAgICAvKiB1bmV4cGVjdGVkIGVuZCBvZiBkYXRhOiB0aGUgY2FsbGVyIHdpbGwgZGVjaWRlIHdoZXRoZXIKKyAgICAgICAgICAgICAgICAgICBpdCdzIGFuIGVycm9yIG9yIG5vdCAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2gyID0gKHVuc2lnbmVkIGNoYXIpc1sxXTsKKyAgICAgICAgICAgIGNoMyA9ICh1bnNpZ25lZCBjaGFyKXNbMl07CisgICAgICAgICAgICBpZiAoIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoMikgfHwKKyAgICAgICAgICAgICAgICAhSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gzKSkgeworICAgICAgICAgICAgICAgIC8qIGludmFsaWQgY29udGludWF0aW9uIGJ5dGUgKi8KKyAgICAgICAgICAgICAgICBnb3RvIEludmFsaWRDb250aW51YXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPT0gMHhFMCkgeworICAgICAgICAgICAgICAgIGlmIChjaDIgPCAweEEwKQorICAgICAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgIFx4RTBceDgwXHg4MC1ceEUwXHg5Rlx4QkYgLS0gZmFrZSAwMDAwLTA4MDAgKi8KKyAgICAgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHhFRCAmJiBjaDIgPiAweDlGKSB7CisgICAgICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4RURceEEwXHg4MC1ceEVEXHhCRlx4QkYKKyAgICAgICAgICAgICAgICAgICB3aWxsIHJlc3VsdCBpbiBzdXJyb2dhdGVzIGluIHJhbmdlIEQ4MDAtREZGRi4gU3Vycm9nYXRlcyBhcmUKKyAgICAgICAgICAgICAgICAgICBub3QgdmFsaWQgVVRGLTggc28gdGhleSBhcmUgcmVqZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCisgICAgICAgICAgICAgICAgICAgKHRhYmxlIDMtNykgYW5kIGh0dHA6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzM2MjkudHh0ICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2ggPSAoY2ggPDwgMTIpICsgKGNoMiA8PCA2KSArIGNoMyAtCisgICAgICAgICAgICAgICAgICgoMHhFMCA8PCAxMikgKyAoMHg4MCA8PCA2KSArIDB4ODApOworICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKKyAgICAgICAgICAgIHMgKz0gMzsKKyAgICAgICAgICAgIGlmIChTVFJJTkdMSUJfTUFYX0NIQVIgPD0gMHgwN0ZGIHx8CisgICAgICAgICAgICAgICAgKFNUUklOR0xJQl9NQVhfQ0hBUiA8IDB4RkZGRiAmJiBjaCA+IFNUUklOR0xJQl9NQVhfQ0hBUikpCisgICAgICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoIDwgMHhGNSkgeworICAgICAgICAgICAgLyogXHhGMFx4OTBceDgwXHg4MC1ceEY0XHg4Rlx4QkZceEJGIC0tIDEwMDAwLTEwRkZGRiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaDIsIGNoMywgY2g0OworICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCA0KSB7CisgICAgICAgICAgICAgICAgLyogdW5leHBlY3RlZCBlbmQgb2YgZGF0YTogdGhlIGNhbGxlciB3aWxsIGRlY2lkZSB3aGV0aGVyCisgICAgICAgICAgICAgICAgICAgaXQncyBhbiBlcnJvciBvciBub3QgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoMiA9ICh1bnNpZ25lZCBjaGFyKXNbMV07CisgICAgICAgICAgICBjaDMgPSAodW5zaWduZWQgY2hhcilzWzJdOworICAgICAgICAgICAgY2g0ID0gKHVuc2lnbmVkIGNoYXIpc1szXTsKKyAgICAgICAgICAgIGlmICghSVNfQ09OVElOVUFUSU9OX0JZVEUoY2gyKSB8fAorICAgICAgICAgICAgICAgICFJU19DT05USU5VQVRJT05fQllURShjaDMpIHx8CisgICAgICAgICAgICAgICAgIUlTX0NPTlRJTlVBVElPTl9CWVRFKGNoNCkpIHsKKyAgICAgICAgICAgICAgICAvKiBpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlICovCisgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID09IDB4RjApIHsKKyAgICAgICAgICAgICAgICBpZiAoY2gyIDwgMHg5MCkKKyAgICAgICAgICAgICAgICAgICAgLyogaW52YWxpZCBzZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgICAgICBceEYwXHg4MFx4ODBceDgwLVx4RjBceDgwXHhCRlx4QkYgLS0gZmFrZSAwMDAwLUZGRkYgKi8KKyAgICAgICAgICAgICAgICAgICAgZ290byBJbnZhbGlkQ29udGludWF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gMHhGNCAmJiBjaDIgPiAweDhGKSB7CisgICAgICAgICAgICAgICAgLyogaW52YWxpZCBzZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgIFx4RjRceDkwXHg4MFw4MC0gLS0gMTEwMDAwLSBvdmVyZmxvdyAqLworICAgICAgICAgICAgICAgIGdvdG8gSW52YWxpZENvbnRpbnVhdGlvbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gKGNoIDw8IDE4KSArIChjaDIgPDwgMTIpICsgKGNoMyA8PCA2KSArIGNoNCAtCisgICAgICAgICAgICAgICAgICgoMHhGMCA8PCAxOCkgKyAoMHg4MCA8PCAxMikgKyAoMHg4MCA8PCA2KSArIDB4ODApOworICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwRkZGRikpOworICAgICAgICAgICAgcyArPSA0OworICAgICAgICAgICAgaWYgKFNUUklOR0xJQl9NQVhfQ0hBUiA8PSAweEZGRkYgfHwKKyAgICAgICAgICAgICAgICAoU1RSSU5HTElCX01BWF9DSEFSIDwgMHgxMEZGRkYgJiYgY2ggPiBTVFJJTkdMSUJfTUFYX0NIQVIpKQorICAgICAgICAgICAgICAgIGdvdG8gT3ZlcmZsb3c7CisgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBnb3RvIEludmFsaWRTdGFydDsKKyAgICB9CisgICAgY2ggPSAwOworT3ZlcmZsb3c6CitSZXR1cm46CisgICAgKmlucHRyID0gczsKKyAgICAqb3V0cG9zID0gcCAtIGRlc3Q7CisgICAgcmV0dXJuIGNoOworSW52YWxpZFN0YXJ0OgorICAgIGNoID0gMTsKKyAgICBnb3RvIFJldHVybjsKK0ludmFsaWRDb250aW51YXRpb246CisgICAgY2ggPSAyOworICAgIGdvdG8gUmV0dXJuOworfQorCisjdW5kZWYgQVNDSUlfQ0hBUl9NQVNLCisjdW5kZWYgSVNfQ09OVElOVUFUSU9OX0JZVEUKKworCisvKiBVVEYtOCBlbmNvZGVyIHNwZWNpYWxpemVkIGZvciBhIFVuaWNvZGUga2luZCB0byBhdm9pZCB0aGUgc2xvdworICAgUHlVbmljb2RlX1JFQUQoKSBtYWNyby4gRGVsZXRlIHNvbWUgcGFydHMgb2YgdGhlIGNvZGUgZGVwZW5kaW5nIG9uIHRoZSBraW5kOgorICAgVUNTLTEgc3RyaW5ncyBkb24ndCBuZWVkIHRvIGhhbmRsZSBzdXJyb2dhdGVzIGZvciBleGFtcGxlLiAqLworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitTVFJJTkdMSUIodXRmOF9lbmNvZGVyKShQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworI2RlZmluZSBNQVhfU0hPUlRfVU5JQ0hBUlMgMzAwICAvKiBsYXJnZXN0IHNpemUgd2UnbGwgZG8gb24gdGhlIHN0YWNrICovCisKKyAgICBQeV9zc2l6ZV90IGk7ICAgICAgICAgICAgICAgIC8qIGluZGV4IGludG8gcyBvZiBuZXh0IGlucHV0IGJ5dGUgKi8KKyAgICBQeU9iamVjdCAqcmVzdWx0OyAgICAgICAgICAgIC8qIHJlc3VsdCBzdHJpbmcgb2JqZWN0ICovCisgICAgY2hhciAqcDsgICAgICAgICAgICAgICAgICAgICAvKiBuZXh0IGZyZWUgYnl0ZSBpbiBvdXRwdXQgYnVmZmVyICovCisgICAgUHlfc3NpemVfdCBuYWxsb2NhdGVkOyAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgYWxsb2NhdGVkICovCisgICAgUHlfc3NpemVfdCBubmVlZGVkOyAgICAgICAgICAgIC8qIG51bWJlciBvZiByZXN1bHQgYnl0ZXMgbmVlZGVkICovCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpyZXAgPSBOVUxMOworI2VuZGlmCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKyAgICBjb25zdCBQeV9zc2l6ZV90IG1heF9jaGFyX3NpemUgPSAyOworICAgIGNoYXIgc3RhY2tidWZbTUFYX1NIT1JUX1VOSUNIQVJTICogMl07CisjZWxpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgorICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDM7CisgICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiAzXTsKKyNlbHNlIC8qICBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gNCAqLworICAgIGNvbnN0IFB5X3NzaXplX3QgbWF4X2NoYXJfc2l6ZSA9IDQ7CisgICAgY2hhciBzdGFja2J1ZltNQVhfU0hPUlRfVU5JQ0hBUlMgKiA0XTsKKyNlbmRpZgorCisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisKKyAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKKyAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgorICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAorICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KKyAgICAgICAgICovCisgICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKKyAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KKyAgICAgICAgcCA9IHN0YWNrYnVmOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIG1heF9jaGFyX3NpemUpIHsKKyAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICB9CisgICAgICAgIC8qIE92ZXJhbGxvY2F0ZSBvbiB0aGUgaGVhcCwgYW5kIGdpdmUgdGhlIGV4Y2VzcyBiYWNrIGF0IHRoZSBlbmQuICovCisgICAgICAgIG5hbGxvY2F0ZWQgPSBzaXplICogbWF4X2NoYXJfc2l6ZTsKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBuYWxsb2NhdGVkKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOykgeworICAgICAgICBQeV9VQ1M0IGNoID0gZGF0YVtpKytdOworCisgICAgICAgIGlmIChjaCA8IDB4ODApIHsKKyAgICAgICAgICAgIC8qIEVuY29kZSBBU0NJSSAqLworICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKKworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAxCisgICAgICAgIGlmIChjaCA8IDB4MDgwMCkKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICAvKiBFbmNvZGUgTGF0aW4tMSAqLworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGMwIHwgKGNoID4+IDYpKTsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKKyAgICAgICAgfQorI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG5ld3BvczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSwgaywgc3RhcnRwb3M7CisgICAgICAgICAgICBzdGFydHBvcyA9IGktMTsKKyAgICAgICAgICAgIHJlcCA9IHVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAorICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLCAidXRmLTgiLCAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIsCisgICAgICAgICAgICAgICAgICB1bmljb2RlLCAmZXhjLCBzdGFydHBvcywgc3RhcnRwb3MrMSwgJm5ld3Bvcyk7CisgICAgICAgICAgICBpZiAoIXJlcCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKQorICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisKKyAgICAgICAgICAgIGlmIChyZXBzaXplID4gbWF4X2NoYXJfc2l6ZSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0OworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gc3RhY2tidWY7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKKworICAgICAgICAgICAgICAgIGlmIChuYWxsb2NhdGVkID4gUFlfU1NJWkVfVF9NQVggLSByZXBzaXplICsgbWF4X2NoYXJfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICAvKiBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5hbGxvY2F0ZWQgKz0gcmVwc2l6ZSAtIG1heF9jaGFyX3NpemU7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbmFsbG9jYXRlZCkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5hbGxvY2F0ZWQpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwgc3RhY2tidWYsIG9mZnNldCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpICsgb2Zmc2V0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7CisgICAgICAgICAgICAgICAgY2hhciAqcHJlcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCk7CisgICAgICAgICAgICAgICAgZm9yKGsgPSByZXBzaXplOyBrID4gMDsgay0tKQorICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnByZXArKzsKKyAgICAgICAgICAgIH0gZWxzZSAvKiByZXAgaXMgdW5pY29kZSAqLyB7CisgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCByZXBraW5kOworICAgICAgICAgICAgICAgIHZvaWQgKnJlcGRhdGE7CisKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcCkgPCAwKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlcGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXApOworICAgICAgICAgICAgICAgIHJlcGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXApOworCisgICAgICAgICAgICAgICAgZm9yKGs9MDsgazxyZXBzaXplOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQocmVwa2luZCwgcmVwZGF0YSwgayk7CisgICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgInV0Zi04IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaS0xLCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlcyBub3QgYWxsb3dlZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpYzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUihyZXApOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPiAyCisgICAgICAgIGlmIChjaCA8IDB4MTAwMDApCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGUwIHwgKGNoID4+IDEyKSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOworICAgICAgICB9CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMgorICAgICAgICBlbHNlIC8qIGNoID49IDB4MTAwMDAgKi8KKyAgICAgICAgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgICAgIC8qIEVuY29kZSBVQ1M0IFVuaWNvZGUgb3JkaW5hbHMgKi8KKyAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHhmMCB8IChjaCA+PiAxOCkpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7CisgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOworICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOworICAgICAgICB9CisjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMiAqLworI2VuZGlmIC8qIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEgKi8KKyAgICB9CisKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgLyogVGhpcyB3YXMgc3RhY2sgYWxsb2NhdGVkLiAqLworICAgICAgICBubmVlZGVkID0gcCAtIHN0YWNrYnVmOworICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzdGFja2J1Ziwgbm5lZWRlZCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDdXQgYmFjayB0byBzaXplIGFjdHVhbGx5IG5lZWRlZC4gKi8KKyAgICAgICAgbm5lZWRlZCA9IHAgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICBhc3NlcnQobm5lZWRlZCA8PSBuYWxsb2NhdGVkKTsKKyAgICAgICAgX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIG5uZWVkZWQpOworICAgIH0KKworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKKworI2lmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA+IDEKKyBlcnJvcjoKKyAgICBQeV9YREVDUkVGKHJlcCk7CisgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKworI3VuZGVmIE1BWF9TSE9SVF9VTklDSEFSUworfQorCisvKiBUaGUgcGF0dGVybiBmb3IgY29uc3RydWN0aW5nIFVDUzItcmVwZWF0ZWQgbWFza3MuICovCisjaWYgU0laRU9GX0xPTkcgPT0gOAorIyBkZWZpbmUgVUNTMl9SRVBFQVRfTUFTSyAweDAwMDEwMDAxMDAwMTAwMDF1bAorI2VsaWYgU0laRU9GX0xPTkcgPT0gNAorIyBkZWZpbmUgVUNTMl9SRVBFQVRfTUFTSyAweDAwMDEwMDAxdWwKKyNlbHNlCisjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCisjZW5kaWYKKworLyogVGhlIG1hc2sgZm9yIGZhc3QgY2hlY2tpbmcuICovCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKy8qIFRoZSBtYXNrIGZvciBmYXN0IGNoZWNraW5nIG9mIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCisgICBub24tQVNDSUkgb3Igbm9uLUxhdGluMSBVVEYxNi1lbmNvZGVkIGNoYXJhY3RlcnMuICovCisjIGRlZmluZSBGQVNUX0NIQVJfTUFTSyAgICAgICAgIChVQ1MyX1JFUEVBVF9NQVNLICogKDB4RkZGRnUgJiB+U1RSSU5HTElCX01BWF9DSEFSKSkKKyNlbHNlCisvKiBUaGUgbWFzayBmb3IgZmFzdCBjaGVja2luZyBvZiB3aGV0aGVyIGEgQyAnbG9uZycgbWF5IGNvbnRhaW4KKyAgIFVURjE2LWVuY29kZWQgc3Vycm9nYXRlIGNoYXJhY3RlcnMuIFRoaXMgaXMgYW4gZWZmaWNpZW50IGhldXJpc3RpYywKKyAgIGFzc3VtaW5nIHRoYXQgbm9uLXN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIHdpdGggYSBjb2RlIHBvaW50ID49IDB4ODAwMCBhcmUKKyAgIHJhcmUgaW4gbW9zdCBpbnB1dC4KKyovCisjIGRlZmluZSBGQVNUX0NIQVJfTUFTSyAgICAgICAgIChVQ1MyX1JFUEVBVF9NQVNLICogMHg4MDAwdSkKKyNlbmRpZgorLyogVGhlIG1hc2sgZm9yIGZhc3QgYnl0ZS1zd2FwcGluZy4gKi8KKyNkZWZpbmUgU1RSSVBQRURfTUFTSyAgICAgICAgICAgKFVDUzJfUkVQRUFUX01BU0sgKiAweDAwRkZ1KQorLyogU3dhcCBieXRlcy4gKi8KKyNkZWZpbmUgU1dBQih2YWx1ZSkgICAgICAgICAgICAgKCgoKHZhbHVlKSA+PiA4KSAmIFNUUklQUEVEX01BU0spIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgodmFsdWUpICYgU1RSSVBQRURfTUFTSykgPDwgOCkpCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKHV0ZjE2X2RlY29kZSkoY29uc3QgdW5zaWduZWQgY2hhciAqKmlucHRyLCBjb25zdCB1bnNpZ25lZCBjaGFyICplLAorICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRlc3QsIFB5X3NzaXplX3QgKm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBuYXRpdmVfb3JkZXJpbmcpCit7CisgICAgUHlfVUNTNCBjaDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphbGlnbmVkX2VuZCA9CisgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlLCBTSVpFT0ZfTE9ORyk7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcSA9ICppbnB0cjsKKyAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRlc3QgKyAqb3V0cG9zOworICAgIC8qIE9mZnNldHMgZnJvbSBxIGZvciByZXRyaWV2aW5nIGJ5dGUgcGFpcnMgaW4gdGhlIHJpZ2h0IG9yZGVyLiAqLworI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCisgICAgaW50IGloaSA9ICEhbmF0aXZlX29yZGVyaW5nLCBpbG8gPSAhbmF0aXZlX29yZGVyaW5nOworI2Vsc2UKKyAgICBpbnQgaWhpID0gIW5hdGl2ZV9vcmRlcmluZywgaWxvID0gISFuYXRpdmVfb3JkZXJpbmc7CisjZW5kaWYKKyAgICAtLWU7CisKKyAgICB3aGlsZSAocSA8IGUpIHsKKyAgICAgICAgUHlfVUNTNCBjaDI7CisgICAgICAgIC8qIEZpcnN0IGNoZWNrIGZvciBwb3NzaWJsZSBhbGlnbmVkIHJlYWQgb2YgYSBDICdsb25nJy4gVW5hbGlnbmVkCisgICAgICAgICAgIHJlYWRzIGFyZSBtb3JlIGV4cGVuc2l2ZSwgYmV0dGVyIHRvIGRlZmVyIHRvIGFub3RoZXIgaXRlcmF0aW9uLiAqLworICAgICAgICBpZiAoX1B5X0lTX0FMSUdORUQocSwgU0laRU9GX0xPTkcpKSB7CisgICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2YgaW4tcmFuZ2Ugbm9uLXN1cnJvZ2F0ZSBjaGFycy4gKi8KKyAgICAgICAgICAgIHJlZ2lzdGVyIGNvbnN0IHVuc2lnbmVkIGNoYXIgKl9xID0gcTsKKyAgICAgICAgICAgIHdoaWxlIChfcSA8IGFsaWduZWRfZW5kKSB7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBibG9jayA9ICogKHVuc2lnbmVkIGxvbmcgKikgX3E7CisgICAgICAgICAgICAgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworICAgICAgICAgICAgICAgICAgICAvKiBDYW4gdXNlIGJ1ZmZlciBkaXJlY3RseSAqLworICAgICAgICAgICAgICAgICAgICBpZiAoYmxvY2sgJiBGQVNUX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogTmVlZCB0byBieXRlLXN3YXAgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrICYgU1dBQihGQVNUX0NIQVJfTUFTSykpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorICAgICAgICAgICAgICAgICAgICBibG9jayA+Pj0gODsKKyNlbHNlCisgICAgICAgICAgICAgICAgICAgIGJsb2NrID0gU1dBQihibG9jayk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9CisjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KKyMgaWYgU0laRU9GX0xPTkcgPT0gNAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgPj4gMTYpOworIyBlbGlmIFNJWkVPRl9MT05HID09IDgKKyAgICAgICAgICAgICAgICBwWzBdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbMV0gPSAoU1RSSU5HTElCX0NIQVIpKChibG9jayA+PiAxNikgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzJdID0gKFNUUklOR0xJQl9DSEFSKSgoYmxvY2sgPj4gMzIpICYgMHhGRkZGdSk7CisgICAgICAgICAgICAgICAgcFszXSA9IChTVFJJTkdMSUJfQ0hBUikoYmxvY2sgPj4gNDgpOworIyBlbmRpZgorI2Vsc2UKKyMgaWYgU0laRU9GX0xPTkcgPT0gNAorICAgICAgICAgICAgICAgIHBbMF0gPSAoU1RSSU5HTElCX0NIQVIpKGJsb2NrID4+IDE2KTsKKyAgICAgICAgICAgICAgICBwWzFdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayAmIDB4RkZGRnUpOworIyBlbGlmIFNJWkVPRl9MT05HID09IDgKKyAgICAgICAgICAgICAgICBwWzBdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayA+PiA0OCk7CisgICAgICAgICAgICAgICAgcFsxXSA9IChTVFJJTkdMSUJfQ0hBUikoKGJsb2NrID4+IDMyKSAmIDB4RkZGRnUpOworICAgICAgICAgICAgICAgIHBbMl0gPSAoU1RSSU5HTElCX0NIQVIpKChibG9jayA+PiAxNikgJiAweEZGRkZ1KTsKKyAgICAgICAgICAgICAgICBwWzNdID0gKFNUUklOR0xJQl9DSEFSKShibG9jayAmIDB4RkZGRnUpOworIyBlbmRpZgorI2VuZGlmCisgICAgICAgICAgICAgICAgX3EgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICAgICAgcCArPSBTSVpFT0ZfTE9ORyAvIDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBxID0gX3E7CisgICAgICAgICAgICBpZiAocSA+PSBlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2ggPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOworICAgICAgICBxICs9IDI7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKSB7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSIDwgMgorICAgICAgICAgICAgaWYgKGNoID4gU1RSSU5HTElCX01BWF9DSEFSKQorICAgICAgICAgICAgICAgIC8qIE91dC1vZi1yYW5nZSAqLworICAgICAgICAgICAgICAgIGdvdG8gUmV0dXJuOworI2VuZGlmCisgICAgICAgICAgICAqcCsrID0gKFNUUklOR0xJQl9DSEFSKWNoOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKiBVVEYtMTYgY29kZSBwYWlyOiAqLworICAgICAgICBpZiAocSA+PSBlKQorICAgICAgICAgICAgZ290byBVbmV4cGVjdGVkRW5kOworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpKQorICAgICAgICAgICAgZ290byBJbGxlZ2FsRW5jb2Rpbmc7CisgICAgICAgIGNoMiA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107CisgICAgICAgIHEgKz0gMjsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoY2gyKSkKKyAgICAgICAgICAgIGdvdG8gSWxsZWdhbFN1cnJvZ2F0ZTsKKyAgICAgICAgY2ggPSBQeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUyhjaCwgY2gyKTsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPCA0CisgICAgICAgIC8qIE91dC1vZi1yYW5nZSAqLworICAgICAgICBnb3RvIFJldHVybjsKKyNlbHNlCisgICAgICAgICpwKysgPSAoU1RSSU5HTElCX0NIQVIpY2g7CisjZW5kaWYKKyAgICB9CisgICAgY2ggPSAwOworUmV0dXJuOgorICAgICppbnB0ciA9IHE7CisgICAgKm91dHBvcyA9IHAgLSBkZXN0OworICAgIHJldHVybiBjaDsKK1VuZXhwZWN0ZWRFbmQ6CisgICAgY2ggPSAxOworICAgIGdvdG8gUmV0dXJuOworSWxsZWdhbEVuY29kaW5nOgorICAgIGNoID0gMjsKKyAgICBnb3RvIFJldHVybjsKK0lsbGVnYWxTdXJyb2dhdGU6CisgICAgY2ggPSAzOworICAgIGdvdG8gUmV0dXJuOworfQorI3VuZGVmIFVDUzJfUkVQRUFUX01BU0sKKyN1bmRlZiBGQVNUX0NIQVJfTUFTSworI3VuZGVmIFNUUklQUEVEX01BU0sKKyN1bmRlZiBTV0FCCisKKworUHlfTE9DQUxfSU5MSU5FKHZvaWQpCitTVFJJTkdMSUIodXRmMTZfZW5jb2RlKSh1bnNpZ25lZCBzaG9ydCAqb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmF0aXZlX29yZGVyaW5nKQoreworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICplbmQgPSBpbiArIGxlbjsKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMQorIyBkZWZpbmUgU1dBQjIoQ0gpICAoKENIKSA8PCA4KQorI2Vsc2UKKyMgZGVmaW5lIFNXQUIyKENIKSAgKCgoQ0gpIDw8IDgpIHwgKChDSCkgPj4gOCkpCisjZW5kaWYKKyNpZiBTVFJJTkdMSUJfTUFYX0NIQVIgPCAweDEwMDAwCisgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworIyBpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgorICAgICAgICBQeV9NRU1DUFkob3V0LCBpbiwgMiAqIGxlbik7CisjIGVsc2UKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFNUUklOR0xJQl9DSEFSLCB1bnNpZ25lZCBzaG9ydCwgaW4sIGVuZCwgb3V0KTsKKyMgZW5kaWYKKyAgICB9IGVsc2UgeworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKGxlbiwgNCk7CisgICAgICAgIHdoaWxlIChpbiA8IHVucm9sbGVkX2VuZCkgeworICAgICAgICAgICAgb3V0WzBdID0gU1dBQjIoaW5bMF0pOworICAgICAgICAgICAgb3V0WzFdID0gU1dBQjIoaW5bMV0pOworICAgICAgICAgICAgb3V0WzJdID0gU1dBQjIoaW5bMl0pOworICAgICAgICAgICAgb3V0WzNdID0gU1dBQjIoaW5bM10pOworICAgICAgICAgICAgaW4gKz0gNDsgb3V0ICs9IDQ7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICAqb3V0KysgPSBTV0FCMigqaW4pOworICAgICAgICAgICAgKytpbjsKKyAgICAgICAgfQorICAgIH0KKyNlbHNlCisgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgeworICAgICAgICB3aGlsZSAoaW4gPCBlbmQpIHsKKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSAqaW4rKzsKKyAgICAgICAgICAgIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICAgICAgKm91dCsrID0gY2g7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgICAgICBvdXRbMV0gPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2hpbGUgKGluIDwgZW5kKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGNoID0gKmluKys7CisgICAgICAgICAgICBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgICAgICpvdXQrKyA9IFNXQUIyKChQeV9VQ1MyKWNoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFB5X1VDUzIgY2gxID0gUHlfVU5JQ09ERV9ISUdIX1NVUlJPR0FURShjaCk7CisgICAgICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSBQeV9VTklDT0RFX0xPV19TVVJST0dBVEUoY2gpOworICAgICAgICAgICAgICAgIG91dFswXSA9IFNXQUIyKGNoMSk7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gU1dBQjIoY2gyKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorI3VuZGVmIFNXQUIyCit9CisjZW5kaWYgLyogU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmggYi9PYmplY3RzL3N0cmluZ2xpYi9jb3VudC5oCmluZGV4IGRlMzRmOTYuLmY0ODUwMGIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2NvdW50LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvY291bnQuaApAQCAtMSwxNCArMSwxMSBAQAogLyogc3RyaW5nbGliOiBjb3VudCBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9DT1VOVF9ICi0jZGVmaW5lIFNUUklOR0xJQl9DT1VOVF9ICi0KICNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2Vycm9yIG11c3QgaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIgYmVmb3JlIGluY2x1ZGluZyB0aGlzIG1vZHVsZQogI2VuZGlmCiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX2NvdW50KGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKK1NUUklOR0xJQihjb3VudCkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewpAQCAtMTksNyArMTYsNyBAQAogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiAoc3RyX2xlbiA8IG1heGNvdW50KSA/IHN0cl9sZW4gKyAxIDogbWF4Y291bnQ7CiAKLSAgICBjb3VudCA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIG1heGNvdW50LCBGQVNUX0NPVU5UKTsKKyAgICBjb3VudCA9IEZBU1RTRUFSQ0goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIG1heGNvdW50LCBGQVNUX0NPVU5UKTsKIAogICAgIGlmIChjb3VudCA8IDApCiAgICAgICAgIHJldHVybiAwOyAvKiBubyBtYXRjaCAqLwpAQCAtMjcsNCArMjQsNCBAQAogICAgIHJldHVybiBjb3VudDsKIH0KIAotI2VuZGlmCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2VxLmggYi9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCmluZGV4IDNlN2Y1ZTguLjhlNzlhNDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2VxLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaApAQCAtOSwxMyArOSwyNiBAQAogICAgIHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqYSA9IChQeVVuaWNvZGVPYmplY3QgKilhYTsKICAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKmIgPSAoUHlVbmljb2RlT2JqZWN0ICopYmI7CiAKLSAgICBpZiAoYS0+bGVuZ3RoICE9IGItPmxlbmd0aCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKGEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShiKSA9PSAtMSkgeworICAgICAgICBhc3NlcnQoMCAmJiAidW5pY29kZV9lcSByZWFkeSBmYWlsIik7CiAgICAgICAgIHJldHVybiAwOwotICAgIGlmIChhLT5sZW5ndGggPT0gMCkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKGEtPnN0clswXSAhPSBiLT5zdHJbMF0pCisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGIpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYS0+bGVuZ3RoID09IDEpCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpID09IDApCiAgICAgICAgIHJldHVybiAxOwotICAgIHJldHVybiBtZW1jbXAoYS0+c3RyLCBiLT5zdHIsIGEtPmxlbmd0aCAqIHNpemVvZihQeV9VTklDT0RFKSkgPT0gMDsKKyAgICBpZiAoUHlVbmljb2RlX0tJTkQoYSkgIT0gUHlVbmljb2RlX0tJTkQoYikpCisgICAgICAgIHJldHVybiAwOworICAgIC8qIEp1c3QgY29tcGFyaW5nIHRoZSBmaXJzdCBieXRlIGlzIGVub3VnaCB0byBzZWUgaWYgYSBhbmQgYiBkaWZmZXIuCisgICAgICogSWYgdGhleSBhcmUgMiBieXRlIG9yIDQgYnl0ZSBjaGFyYWN0ZXIgbW9zdCBkaWZmZXJlbmNlcyB3aWxsIGhhcHBlbiBpbgorICAgICAqIHRoZSBsb3dlciBieXRlcyBhbnl3YXlzLgorICAgICAqLworICAgIGlmIChQeVVuaWNvZGVfMUJZVEVfREFUQShhKVswXSAhPSBQeVVuaWNvZGVfMUJZVEVfREFUQShiKVswXSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9LSU5EKGEpID09IFB5VW5pY29kZV8xQllURV9LSU5EICYmCisgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKGEpID09IDEpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBtZW1jbXAoUHlVbmljb2RlXzFCWVRFX0RBVEEoYSksIFB5VW5pY29kZV8xQllURV9EQVRBKGIpLAorICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoYSkgKiBQeVVuaWNvZGVfS0lORChhKSkgPT0gMDsKIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaCBiL09iamVjdHMvc3RyaW5nbGliL2Zhc3RzZWFyY2guaAppbmRleCBlMjMxYzU4Li5lY2Y4ODVlIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9mYXN0c2VhcmNoLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmFzdHNlYXJjaC5oCkBAIC0xLDYgKzEsNSBAQAogLyogc3RyaW5nbGliOiBmYXN0c2VhcmNoIGltcGxlbWVudGF0aW9uICovCiAKLSNpZm5kZWYgU1RSSU5HTElCX0ZBU1RTRUFSQ0hfSAogI2RlZmluZSBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAKIC8qIGZhc3Qgc2VhcmNoL2NvdW50IGltcGxlbWVudGF0aW9uLCBiYXNlZCBvbiBhIG1peCBiZXR3ZWVuIGJveWVyLQpAQCAtMzMsOCArMzIsNjEgQEAKICNkZWZpbmUgU1RSSU5HTElCX0JMT09NKG1hc2ssIGNoKSAgICAgXAogICAgICgobWFzayAmICAoMVVMIDw8ICgoY2gpICYgKFNUUklOR0xJQl9CTE9PTV9XSURUSCAtMSkpKSkpCiAKKwogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1mYXN0c2VhcmNoKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCitTVFJJTkdMSUIoZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzLCBQeV9zc2l6ZV90IG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIGNoLCB1bnNpZ25lZCBjaGFyIG5lZWRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCwgaW50IG1vZGUpCit7CisgICAgdm9pZCAqY2FuZGlkYXRlOworICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpmb3VuZDsKKworI2RlZmluZSBET19NRU1DSFIobWVtY2hyLCBzLCBuZWVkbGUsIG5jaGFycykgZG8geyBcCisgICAgY2FuZGlkYXRlID0gbWVtY2hyKChjb25zdCB2b2lkICopIChzKSwgKG5lZWRsZSksIChuY2hhcnMpICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7IFwKKyAgICBmb3VuZCA9IChjb25zdCBTVFJJTkdMSUJfQ0hBUiAqKSBfUHlfQUxJR05fRE9XTihjYW5kaWRhdGUsIHNpemVvZihTVFJJTkdMSUJfQ0hBUikpOyBcCisgICAgfSB3aGlsZSAoMCkKKworICAgIGlmIChtb2RlID09IEZBU1RfU0VBUkNIKSB7CisgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSICpwdHIgPSBzOworICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZSA9IHMgKyBuOworICAgICAgICB3aGlsZSAocHRyIDwgZSkgeworICAgICAgICAgICAgRE9fTUVNQ0hSKG1lbWNociwgcHRyLCBuZWVkbGUsIGUgLSBwdHIpOworICAgICAgICAgICAgaWYgKGZvdW5kID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKHNpemVvZihTVFJJTkdMSUJfQ0hBUikgPT0gMSB8fCAqZm91bmQgPT0gY2gpCisgICAgICAgICAgICAgICAgcmV0dXJuIChmb3VuZCAtIHMpOworICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgICAgIHB0ciA9IGZvdW5kICsgMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2lmZGVmIEhBVkVfTUVNUkNIUgorICAgIC8qIG1lbXJjaHIoKSBpcyBhIEdOVSBleHRlbnNpb24sIGF2YWlsYWJsZSBzaW5jZSBnbGliYyAyLjEuOTEuCisgICAgICAgaXQgZG9lc24ndCBzZWVtIGFzIG9wdGltaXplZCBhcyBtZW1jaHIoKSwgYnV0IGlzIHN0aWxsIHF1aXRlCisgICAgICAgZmFzdGVyIHRoYW4gb3VyIGhhbmQtd3JpdHRlbiBsb29wIGluIEZBU1RTRUFSQ0ggYmVsb3cgKi8KKyAgICBlbHNlIGlmIChtb2RlID09IEZBU1RfUlNFQVJDSCkgeworICAgICAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgICAgICAgIERPX01FTUNIUihtZW1yY2hyLCBzLCBuZWVkbGUsIG4pOworICAgICAgICAgICAgaWYgKGZvdW5kID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgbiA9IGZvdW5kIC0gczsKKyAgICAgICAgICAgIGlmIChzaXplb2YoU1RSSU5HTElCX0NIQVIpID09IDEgfHwgKmZvdW5kID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICAgICAgLyogRmFsc2UgcG9zaXRpdmUgKi8KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2VuZGlmCisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCgwKTsgLyogU2hvdWxkIG5ldmVyIGdldCBoZXJlICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworI3VuZGVmIERPX01FTUNIUgorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK0ZBU1RTRUFSQ0goY29uc3QgU1RSSU5HTElCX0NIQVIqIHMsIFB5X3NzaXplX3QgbiwKICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHAsIFB5X3NzaXplX3QgbSwKICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCwgaW50IG1vZGUpCiB7CkBAIC01Miw2ICsxMDQsMjQgQEAKICAgICAgICAgaWYgKG0gPD0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgLyogdXNlIHNwZWNpYWwgY2FzZSBmb3IgMS1jaGFyYWN0ZXIgc3RyaW5ncyAqLworICAgICAgICBpZiAobiA+IDEwICYmIChtb2RlID09IEZBU1RfU0VBUkNICisjaWZkZWYgSEFWRV9NRU1SQ0hSCisgICAgICAgICAgICAgICAgICAgIHx8IG1vZGUgPT0gRkFTVF9SU0VBUkNICisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKSkgeworICAgICAgICAgICAgLyogdXNlIG1lbWNociBpZiB3ZSBjYW4gY2hvb3NlIGEgbmVlZGxlIHdpdGhvdXQgdHdvIG1hbnkgbGlrZWx5CisgICAgICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlOworICAgICAgICAgICAgbmVlZGxlID0gcFswXSAmIDB4ZmY7CisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID4gMQorICAgICAgICAgICAgLyogSWYgbG9va2luZyBmb3IgYSBtdWx0aXBsZSBvZiAyNTYsIHdlJ2QgaGF2ZSB0b28KKyAgICAgICAgICAgICAgIG1hbnkgZmFsc2UgcG9zaXRpdmVzIGxvb2tpbmcgZm9yIHRoZSAnXDAnIGJ5dGUgaW4gVUNTMgorICAgICAgICAgICAgICAgYW5kIFVDUzQgcmVwcmVzZW50YXRpb25zLiAqLworICAgICAgICAgICAgaWYgKG5lZWRsZSAhPSAwKQorI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuIFNUUklOR0xJQihmYXN0c2VhcmNoX21lbWNocl8xY2hhcikKKyAgICAgICAgICAgICAgICAgICAgICAgKHMsIG4sIHBbMF0sIG5lZWRsZSwgbWF4Y291bnQsIG1vZGUpOworICAgICAgICB9CiAgICAgICAgIGlmIChtb2RlID09IEZBU1RfQ09VTlQpIHsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgICAgICAgICAgaWYgKHNbaV0gPT0gcFswXSkgewpAQCAtMTU3LDQgKzIyNywzIEBACiAgICAgcmV0dXJuIGNvdW50OwogfQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaCBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmQuaAppbmRleCBjZTYxNWRjLi41MThlMDEyIDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvZmluZC5oCkBAIC0xLDE0ICsxLDExIEBACiAvKiBzdHJpbmdsaWI6IGZpbmQvaW5kZXggaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfRklORF9ICi0jZGVmaW5lIFNUUklOR0xJQl9GSU5EX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfZmluZChjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCitTVFJJTkdMSUIoZmluZCkoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQpCiB7CkBAIC0xOSw3ICsxNiw3IEBACiAgICAgaWYgKHN1Yl9sZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIG9mZnNldDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzdWIsIHN1Yl9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPj0gMCkKICAgICAgICAgcG9zICs9IG9mZnNldDsKQEAgLTI4LDcgKzI1LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfcmZpbmQoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKHJmaW5kKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0KQogewpAQCAtMzksNyArMzYsNyBAQAogICAgIGlmIChzdWJfbGVuID09IDApCiAgICAgICAgIHJldHVybiBzdHJfbGVuICsgb2Zmc2V0OwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHN1Yiwgc3ViX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CiAKICAgICBpZiAocG9zID49IDApCiAgICAgICAgIHBvcyArPSBvZmZzZXQ7CkBAIC02MywyOSArNjAsMjkgQEAKICAgICB9CiAKIFB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotc3RyaW5nbGliX2ZpbmRfc2xpY2UoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKGZpbmRfc2xpY2UpKGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdWIsIFB5X3NzaXplX3Qgc3ViX2xlbiwKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwotICAgIHJldHVybiBzdHJpbmdsaWJfZmluZChzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOworICAgIHJldHVybiBTVFJJTkdMSUIoZmluZCkoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1zdHJpbmdsaWJfcmZpbmRfc2xpY2UoY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAorU1RSSU5HTElCKHJmaW5kX3NsaWNlKShjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN1YiwgUHlfc3NpemVfdCBzdWJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQogewogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9sZW4pOwotICAgIHJldHVybiBzdHJpbmdsaWJfcmZpbmQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIHN0YXJ0KTsKKyAgICByZXR1cm4gU1RSSU5HTElCKHJmaW5kKShzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yiwgc3ViX2xlbiwgc3RhcnQpOwogfQogCiAjaWZkZWYgU1RSSU5HTElCX1dBTlRfQ09OVEFJTlNfT0JKCiAKIFB5X0xPQ0FMX0lOTElORShpbnQpCi1zdHJpbmdsaWJfY29udGFpbnNfb2JqKFB5T2JqZWN0KiBzdHIsIFB5T2JqZWN0KiBzdWIpCitTVFJJTkdMSUIoY29udGFpbnNfb2JqKShQeU9iamVjdCogc3RyLCBQeU9iamVjdCogc3ViKQogewotICAgIHJldHVybiBzdHJpbmdsaWJfZmluZCgKKyAgICByZXR1cm4gU1RSSU5HTElCKGZpbmQpKAogICAgICAgICBTVFJJTkdMSUJfU1RSKHN0ciksIFNUUklOR0xJQl9MRU4oc3RyKSwKICAgICAgICAgU1RSSU5HTElCX1NUUihzdWIpLCBTVFJJTkdMSUJfTEVOKHN1YiksIDAKICAgICAgICAgKSAhPSAtMTsKQEAgLTk4LDE0ICs5NSwxNCBAQAogcmluZGV4KSBhbmQgZm9yIGNvdW50LCBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCwgYmVjYXVzZSB0aGV5IGFsbCBoYXZlCiB0aGUgc2FtZSBiZWhhdmlvdXIgZm9yIHRoZSBhcmd1bWVudHMuCiAKLUl0IGRvZXMgbm90IHRvdWNoIHRoZSB2YXJpYWJsZXMgcmVjZWl2ZWQgdW50aWwgaXQga25vd3MgZXZlcnl0aGluZyAKK0l0IGRvZXMgbm90IHRvdWNoIHRoZSB2YXJpYWJsZXMgcmVjZWl2ZWQgdW50aWwgaXQga25vd3MgZXZlcnl0aGluZwogaXMgb2suCiAqLwogCiAjZGVmaW5lIEZPUk1BVF9CVUZGRVJfU0laRSA1MAogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGNvbnN0IGNoYXIgKiBmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vib2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKIHsKQEAgLTE0OCwyOCArMTQ1LDc2IEBACiAKIE5vdGUgdGhhdCB3ZSByZWNlaXZlIGEgcG9pbnRlciB0byB0aGUgcG9pbnRlciBvZiB0aGUgc3Vic3RyaW5nIG9iamVjdCwKIHNvIHdoZW4gd2UgY3JlYXRlIHRoYXQgb2JqZWN0IGluIHRoaXMgZnVuY3Rpb24gd2UgZG9uJ3QgREVDUkVGIGl0LAotYmVjYXVzZSBpdCBjb250aW51ZXMgbGl2aW5nIGluIHRoZSBjYWxsZXIgZnVuY3Rpb25zICh0aG9zZSBmdW5jdGlvbnMsIAorYmVjYXVzZSBpdCBjb250aW51ZXMgbGl2aW5nIGluIHRoZSBjYWxsZXIgZnVuY3Rpb25zICh0aG9zZSBmdW5jdGlvbnMsCiBhZnRlciBmaW5pc2hpbmcgdXNpbmcgdGhlIHN1YnN0cmluZywgbXVzdCBERUNSRUYgaXQpLgogKi8KIAogUHlfTE9DQUxfSU5MSU5FKGludCkKLXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoY29uc3QgY2hhciAqIGZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKipzdWJzdHJpbmcsCitTVFJJTkdMSUIocGFyc2VfYXJnc19maW5kc191bmljb2RlKShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqc3Vic3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQogewogICAgIFB5T2JqZWN0ICp0bXBfc3Vic3RyaW5nOwogCi0gICAgaWYoc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoZnVuY3Rpb25fbmFtZSwgYXJncywgJnRtcF9zdWJzdHJpbmcsCisgICAgaWYoU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vic3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQpKSB7CiAgICAgICAgIHRtcF9zdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCh0bXBfc3Vic3RyaW5nKTsKICAgICAgICAgaWYgKCF0bXBfc3Vic3RyaW5nKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICpzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopdG1wX3N1YnN0cmluZzsKKyAgICAgICAgKnN1YnN0cmluZyA9IHRtcF9zdWJzdHJpbmc7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KIAotI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCisjZWxzZSAvKiAhU1RSSU5HTElCX0lTX1VOSUNPREUgKi8KIAotI2VuZGlmIC8qIFNUUklOR0xJQl9GSU5EX0ggKi8KKy8qCitXcmFwcyBzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpIGFuZCBhZGRpdGlvbmFsbHkgY2hlY2tzIHdoZXRoZXIgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhbiBpbnRlZ2VyIGluIHJhbmdlKDAsIDI1NikuCisKK0lmIHRoaXMgaXMgdGhlIGNhc2UsIHdyaXRlcyB0aGUgaW50ZWdlciB2YWx1ZSB0byB0aGUgYnl0ZSBwYXJhbWV0ZXIKK2FuZCBzZXRzIHN1Ym9iaiB0byBOVUxMLiBPdGhlcndpc2UsIHNldHMgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIHN1Ym9iagorYW5kIGRvZXNuJ3QgdG91Y2ggYnl0ZS4gVGhlIG90aGVyIHBhcmFtZXRlcnMgYXJlIHNpbWlsYXIgdG8gdGhvc2Ugb2YKK3N0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkuCisqLworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHNfYnl0ZSkoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwgY2hhciAqYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICplbmQpCit7CisgICAgUHlPYmplY3QgKnRtcF9zdWJvYmo7CisgICAgUHlfc3NpemVfdCBpdmFsOworICAgIFB5T2JqZWN0ICplcnI7CisKKyAgICBpZighU1RSSU5HTElCKHBhcnNlX2FyZ3NfZmluZHMpKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vib2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFQeU51bWJlcl9DaGVjayh0bXBfc3Vib2JqKSkgeworICAgICAgICAqc3Vib2JqID0gdG1wX3N1Ym9iajsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaXZhbCA9IFB5TnVtYmVyX0FzU3NpemVfdCh0bXBfc3Vib2JqLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICBpZiAoaXZhbCA9PSAtMSkgeworICAgICAgICBlcnIgPSBQeUVycl9PY2N1cnJlZCgpOworICAgICAgICBpZiAoZXJyICYmICFQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMoZXJyLCBQeUV4Y19PdmVyZmxvd0Vycm9yKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+IDI1NSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImJ5dGUgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgICpzdWJvYmogPSBOVUxMOworICAgICpieXRlID0gKGNoYXIpaXZhbDsKKyAgICByZXR1cm4gMTsKK30KKworI2VuZGlmIC8qIFNUUklOR0xJQl9JU19VTklDT0RFICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmggYi9PYmplY3RzL3N0cmluZ2xpYi9maW5kX21heF9jaGFyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY1NTljOAotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaApAQCAtMCwwICsxLDEzMyBAQAorLyogRmluZGluZyB0aGUgb3B0aW1hbCB3aWR0aCBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaW4gYSBidWZmZXIgKi8KKworI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCisKKy8qIE1hc2sgdG8gcXVpY2tseSBjaGVjayB3aGV0aGVyIGEgQyAnbG9uZycgY29udGFpbnMgYQorICAgbm9uLUFTQ0lJLCBVVEY4LWVuY29kZWQgY2hhci4gKi8KKyNpZiAoU0laRU9GX0xPTkcgPT0gOCkKKyMgZGVmaW5lIFVDUzFfQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MFVMCisjZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKKyMgZGVmaW5lIFVDUzFfQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODBVTAorI2Vsc2UKKyMgZXJyb3IgQyAnbG9uZycgc2l6ZSBzaG91bGQgYmUgZWl0aGVyIDQgb3IgOCEKKyNlbmRpZgorCisjaWYgU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEKKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitTVFJJTkdMSUIoZmluZF9tYXhfY2hhcikoY29uc3QgU1RSSU5HTElCX0NIQVIgKmJlZ2luLCBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqZW5kKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBiZWdpbjsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphbGlnbmVkX2VuZCA9CisgICAgICAgICAgICAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBfUHlfQUxJR05fRE9XTihlbmQsIFNJWkVPRl9MT05HKTsKKworICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChwLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3AgPSBwOworICAgICAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9wOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIFVDUzFfQVNDSUlfQ0hBUl9NQVNLKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjU1OworICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcCA9IF9wOworICAgICAgICAgICAgaWYgKHAgPT0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgqcCsrICYgMHg4MCkKKyAgICAgICAgICAgIHJldHVybiAyNTU7CisgICAgfQorICAgIHJldHVybiAxMjc7Cit9CisKKyN1bmRlZiBBU0NJSV9DSEFSX01BU0sKKworI2Vsc2UgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEgKi8KKworI2RlZmluZSBNQVNLX0FTQ0lJIDB4RkZGRkZGODAKKyNkZWZpbmUgTUFTS19VQ1MxIDB4RkZGRkZGMDAKKyNkZWZpbmUgTUFTS19VQ1MyIDB4RkZGRjAwMDAKKworI2RlZmluZSBNQVhfQ0hBUl9BU0NJSSAweDdmCisjZGVmaW5lIE1BWF9DSEFSX1VDUzEgIDB4ZmYKKyNkZWZpbmUgTUFYX0NIQVJfVUNTMiAgMHhmZmZmCisjZGVmaW5lIE1BWF9DSEFSX1VDUzQgIDB4MTBmZmZmCisKK1B5X0xPQ0FMX0lOTElORShQeV9VQ1M0KQorU1RSSU5HTElCKGZpbmRfbWF4X2NoYXIpKGNvbnN0IFNUUklOR0xJQl9DSEFSICpiZWdpbiwgY29uc3QgU1RSSU5HTElCX0NIQVIgKmVuZCkKK3sKKyNpZiBTVFJJTkdMSUJfU0laRU9GX0NIQVIgPT0gMgorICAgIGNvbnN0IFB5X1VDUzQgbWFza19saW1pdCA9IE1BU0tfVUNTMTsKKyAgICBjb25zdCBQeV9VQ1M0IG1heF9jaGFyX2xpbWl0ID0gTUFYX0NIQVJfVUNTMjsKKyNlbGlmIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiA9PSA0CisgICAgY29uc3QgUHlfVUNTNCBtYXNrX2xpbWl0ID0gTUFTS19VQ1MyOworICAgIGNvbnN0IFB5X1VDUzQgbWF4X2NoYXJfbGltaXQgPSBNQVhfQ0hBUl9VQ1M0OworI2Vsc2UKKyNlcnJvciBJbnZhbGlkIFNUUklOR0xJQl9TSVpFT0ZfQ0hBUiAobXVzdCBiZSAxLCAyIG9yIDQpCisjZW5kaWYKKyAgICByZWdpc3RlciBQeV9VQ1M0IG1hc2s7CisgICAgUHlfc3NpemVfdCBuID0gZW5kIC0gYmVnaW47CisgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgKnAgPSBiZWdpbjsKKyAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiAqdW5yb2xsZWRfZW5kID0gYmVnaW4gKyBfUHlfU0laRV9ST1VORF9ET1dOKG4sIDQpOworICAgIFB5X1VDUzQgbWF4X2NoYXI7CisKKyAgICBtYXhfY2hhciA9IE1BWF9DSEFSX0FTQ0lJOworICAgIG1hc2sgPSBNQVNLX0FTQ0lJOworICAgIHdoaWxlIChwIDwgdW5yb2xsZWRfZW5kKSB7CisgICAgICAgIFNUUklOR0xJQl9DSEFSIGJpdHMgPSBwWzBdIHwgcFsxXSB8IHBbMl0gfCBwWzNdOworICAgICAgICBpZiAoYml0cyAmIG1hc2spIHsKKyAgICAgICAgICAgIGlmIChtYXNrID09IG1hc2tfbGltaXQpIHsKKyAgICAgICAgICAgICAgICAvKiBMaW1pdCByZWFjaGVkICovCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heF9jaGFyX2xpbWl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hc2sgPT0gTUFTS19BU0NJSSkgeworICAgICAgICAgICAgICAgIG1heF9jaGFyID0gTUFYX0NIQVJfVUNTMTsKKyAgICAgICAgICAgICAgICBtYXNrID0gTUFTS19VQ1MxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbWFzayBjYW4ndCBiZSBNQVNLX1VDUzIgYmVjYXVzZSBvZiBtYXNrX2xpbWl0IGFib3ZlICovCisgICAgICAgICAgICAgICAgYXNzZXJ0KG1hc2sgPT0gTUFTS19VQ1MxKTsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzI7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFdlIGNoZWNrIHRoZSBuZXcgbWFzayBvbiB0aGUgc2FtZSBjaGFycyBpbiB0aGUgbmV4dCBpdGVyYXRpb24gKi8KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIHAgKz0gNDsKKyAgICB9CisgICAgd2hpbGUgKHAgPCBlbmQpIHsKKyAgICAgICAgaWYgKHBbMF0gJiBtYXNrKSB7CisgICAgICAgICAgICBpZiAobWFzayA9PSBtYXNrX2xpbWl0KSB7CisgICAgICAgICAgICAgICAgLyogTGltaXQgcmVhY2hlZCAqLworICAgICAgICAgICAgICAgIHJldHVybiBtYXhfY2hhcl9saW1pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtYXNrID09IE1BU0tfQVNDSUkpIHsKKyAgICAgICAgICAgICAgICBtYXhfY2hhciA9IE1BWF9DSEFSX1VDUzE7CisgICAgICAgICAgICAgICAgbWFzayA9IE1BU0tfVUNTMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG1hc2sgY2FuJ3QgYmUgTUFTS19VQ1MyIGJlY2F1c2Ugb2YgbWFza19saW1pdCBhYm92ZSAqLworICAgICAgICAgICAgICAgIGFzc2VydChtYXNrID09IE1BU0tfVUNTMSk7CisgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBNQVhfQ0hBUl9VQ1MyOworICAgICAgICAgICAgICAgIG1hc2sgPSBNQVNLX1VDUzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBXZSBjaGVjayB0aGUgbmV3IG1hc2sgb24gdGhlIHNhbWUgY2hhcnMgaW4gdGhlIG5leHQgaXRlcmF0aW9uICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBwKys7CisgICAgfQorICAgIHJldHVybiBtYXhfY2hhcjsKK30KKworI3VuZGVmIE1BU0tfQVNDSUkKKyN1bmRlZiBNQVNLX1VDUzEKKyN1bmRlZiBNQVNLX1VDUzIKKyN1bmRlZiBNQVhfQ0hBUl9BU0NJSQorI3VuZGVmIE1BWF9DSEFSX1VDUzEKKyN1bmRlZiBNQVhfQ0hBUl9VQ1MyCisjdW5kZWYgTUFYX0NIQVJfVUNTNAorCisjZW5kaWYgLyogU1RSSU5HTElCX1NJWkVPRl9DSEFSID09IDEgKi8KKyNlbmRpZiAvKiBTVFJJTkdMSUJfSVNfVU5JQ09ERSAqLworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaCBiL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmRjNjJkLi4wMDAwMDAwCi0tLSBhL09iamVjdHMvc3RyaW5nbGliL2Zvcm1hdHRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUxOCArMCwwIEBACi0vKiBpbXBsZW1lbnRzIHRoZSBzdHJpbmcsIGxvbmcsIGFuZCBmbG9hdCBmb3JtYXR0ZXJzLiAgdGhhdCBpcywKLSAgIHN0cmluZy5fX2Zvcm1hdF9fLCBldGMuICovCi0KLSNpbmNsdWRlIDxsb2NhbGUuaD4KLQotLyogQmVmb3JlIGluY2x1ZGluZyB0aGlzLCB5b3UgbXVzdCBpbmNsdWRlIGVpdGhlcjoKLSAgIHN0cmluZ2xpYi91bmljb2RlZGVmcy5oCi0gICBzdHJpbmdsaWIvc3RyaW5nZGVmcy5oCi0KLSAgIEFsc28sIHlvdSBzaG91bGQgZGVmaW5lIHRoZSBuYW1lczoKLSAgIEZPUk1BVF9TVFJJTkcKLSAgIEZPUk1BVF9MT05HCi0gICBGT1JNQVRfRkxPQVQKLSAgIEZPUk1BVF9DT01QTEVYCi0gICB0byBiZSB3aGF0ZXZlciB5b3Ugd2FudCB0aGUgcHVibGljIG5hbWVzIG9mIHRoZXNlIGZ1bmN0aW9ucyB0bwotICAgYmUuICBUaGVzZSBhcmUgdGhlIG9ubHkgbm9uLXN0YXRpYyBmdW5jdGlvbnMgZGVmaW5lZCBoZXJlLgotKi8KLQotLyogUmFpc2VzIGFuIGV4Y2VwdGlvbiBhYm91dCBhbiB1bmtub3duIHByZXNlbnRhdGlvbiB0eXBlIGZvciB0aGlzCi0gKiB0eXBlLiAqLwotCi1zdGF0aWMgdm9pZAotdW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShTVFJJTkdMSUJfQ0hBUiBwcmVzZW50YXRpb25fdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogdHlwZV9uYW1lKQotewotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgLyogSWYgU1RSSU5HTElCX0NIQVIgaXMgUHlfVU5JQ09ERSwgJWMgbWlnaHQgYmUgb3V0LW9mLXJhbmdlLAotICAgICAgIGhlbmNlIHRoZSB0d28gY2FzZXMuIElmIGl0IGlzIGNoYXIsIGdjYyBjb21wbGFpbnMgdGhhdCB0aGUKLSAgICAgICBjb25kaXRpb24gYmVsb3cgaXMgYWx3YXlzIHRydWUsIGhlbmNlIHRoZSBpZmRlZi4gKi8KLSAgICBpZiAocHJlc2VudGF0aW9uX3R5cGUgPiAzMiAmJiBwcmVzZW50YXRpb25fdHlwZSA8IDEyOCkKLSNlbmRpZgotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIGZvcm1hdCBjb2RlICclYycgIgotICAgICAgICAgICAgICAgICAgICAgImZvciBvYmplY3Qgb2YgdHlwZSAnJS4yMDBzJyIsCi0gICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBlbHNlCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gZm9ybWF0IGNvZGUgJ1xceCV4JyAiCi0gICAgICAgICAgICAgICAgICAgICAiZm9yIG9iamVjdCBvZiB0eXBlICclLjIwMHMnIiwKLSAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpcHJlc2VudGF0aW9uX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICB0eXBlX25hbWUpOwotI2VuZGlmCi19Ci0KLXN0YXRpYyB2b2lkCi1pbnZhbGlkX2NvbW1hX3R5cGUoU1RSSU5HTElCX0NIQVIgcHJlc2VudGF0aW9uX3R5cGUpCi17Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICAvKiBTZWUgY29tbWVudCBpbiB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlICovCi0gICAgaWYgKHByZXNlbnRhdGlvbl90eXBlID4gMzIgJiYgcHJlc2VudGF0aW9uX3R5cGUgPCAxMjgpCi0jZW5kaWYKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHNwZWNpZnkgJywnIHdpdGggJyVjJy4iLAotICAgICAgICAgICAgICAgICAgICAgKGNoYXIpcHJlc2VudGF0aW9uX3R5cGUpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgZWxzZQotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnXFx4JXgnLiIsCi0gICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlKTsKLSNlbmRpZgotfQotCi0vKgotICAgIGdldF9pbnRlZ2VyIGNvbnN1bWVzIDAgb3IgbW9yZSBkZWNpbWFsIGRpZ2l0IGNoYXJhY3RlcnMgZnJvbSBhbgotICAgIGlucHV0IHN0cmluZywgdXBkYXRlcyAqcmVzdWx0IHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpdmUKLSAgICBpbnRlZ2VyLCBhbmQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBjb25zdW1lZC4KLQotICAgIHJldHVybnMgLTEgb24gZXJyb3IuCi0qLwotc3RhdGljIGludAotZ2V0X2ludGVnZXIoU1RSSU5HTElCX0NIQVIgKipwdHIsIFNUUklOR0xJQl9DSEFSICplbmQsCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpyZXN1bHQpCi17Ci0gICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWwsIG9sZGFjY3VtdWxhdG9yOwotICAgIGludCBudW1kaWdpdHM7Ci0gICAgYWNjdW11bGF0b3IgPSBudW1kaWdpdHMgPSAwOwotICAgIGZvciAoOzsoKnB0cikrKywgbnVtZGlnaXRzKyspIHsKLSAgICAgICAgaWYgKCpwdHIgPj0gZW5kKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRpZ2l0dmFsID0gU1RSSU5HTElCX1RPREVDSU1BTCgqKnB0cik7Ci0gICAgICAgIGlmIChkaWdpdHZhbCA8IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgLyoKLSAgICAgICAgICAgVGhpcyB0cmljayB3YXMgY29waWVkIGZyb20gb2xkIFVuaWNvZGUgZm9ybWF0IGNvZGUuICBJdCdzIGN1dGUsCi0gICAgICAgICAgIGJ1dCB3b3VsZCByZWFsbHkgc3VjayBvbiBhbiBvbGQgbWFjaGluZSB3aXRoIGEgc2xvdyBkaXZpZGUKLSAgICAgICAgICAgaW1wbGVtZW50YXRpb24uICBGb3J0dW5hdGVseSwgaW4gdGhlIG5vcm1hbCBjYXNlIHdlIGRvIG5vdAotICAgICAgICAgICBleHBlY3QgdG9vIG1hbnkgZGlnaXRzLgotICAgICAgICAqLwotICAgICAgICBvbGRhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yOwotICAgICAgICBhY2N1bXVsYXRvciAqPSAxMDsKLSAgICAgICAgaWYgKChhY2N1bXVsYXRvcisxMCkvMTAgIT0gb2xkYWNjdW11bGF0b3IrMSkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmciKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgICAgICBhY2N1bXVsYXRvciArPSBkaWdpdHZhbDsKLSAgICB9Ci0gICAgKnJlc3VsdCA9IGFjY3VtdWxhdG9yOwotICAgIHJldHVybiBudW1kaWdpdHM7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciBwYXJzaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogcmV0dXJucyB0cnVlIGlmIHRoaXMgY2hhcmFjdGVyIGlzIGEgc3BlY2lmaWVyIGFsaWdubWVudCB0b2tlbiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKLWlzX2FsaWdubWVudF90b2tlbihTVFJJTkdMSUJfQ0hBUiBjKQotewotICAgIHN3aXRjaCAoYykgewotICAgIGNhc2UgJzwnOiBjYXNlICc+JzogY2FzZSAnPSc6IGNhc2UgJ14nOgotICAgICAgICByZXR1cm4gMTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19Ci0KLS8qIHJldHVybnMgdHJ1ZSBpZiB0aGlzIGNoYXJhY3RlciBpcyBhIHNpZ24gZWxlbWVudCAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKLWlzX3NpZ25fZWxlbWVudChTVFJJTkdMSUJfQ0hBUiBjKQotewotICAgIHN3aXRjaCAoYykgewotICAgIGNhc2UgJyAnOiBjYXNlICcrJzogY2FzZSAnLSc6Ci0gICAgICAgIHJldHVybiAxOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX0KLQotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgZmlsbF9jaGFyOwotICAgIFNUUklOR0xJQl9DSEFSIGFsaWduOwotICAgIGludCBhbHRlcm5hdGU7Ci0gICAgU1RSSU5HTElCX0NIQVIgc2lnbjsKLSAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIGludCB0aG91c2FuZHNfc2VwYXJhdG9yczsKLSAgICBQeV9zc2l6ZV90IHByZWNpc2lvbjsKLSAgICBTVFJJTkdMSUJfQ0hBUiB0eXBlOwotfSBJbnRlcm5hbEZvcm1hdFNwZWM7Ci0KLQotI2lmIDAKLS8qIE9jY2Fzc2lvbmFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFNob3VsZCBub3JtYWxseSBiZSBjb21tZW50ZWQgb3V0LiAqLwotc3RhdGljIHZvaWQKLURFQlVHX1BSSU5UX0ZPUk1BVF9TUEVDKEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGZpbGxfY2hhciAlZFxuIiwgZm9ybWF0LT5maWxsX2NoYXIpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IGFsaWduICVkXG4iLCBmb3JtYXQtPmFsaWduKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbHRlcm5hdGUgJWRcbiIsIGZvcm1hdC0+YWx0ZXJuYXRlKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBzaWduICVkXG4iLCBmb3JtYXQtPnNpZ24pOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHdpZHRoICV6ZFxuIiwgZm9ybWF0LT53aWR0aCk7Ci0gICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdGhvdXNhbmRzX3NlcGFyYXRvcnMgJWRcbiIsCi0gICAgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpOwotICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHByZWNpc2lvbiAlemRcbiIsIGZvcm1hdC0+cHJlY2lzaW9uKTsKLSAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB0eXBlICVjXG4iLCBmb3JtYXQtPnR5cGUpOwotICAgIHByaW50ZigiXG4iKTsKLX0KLSNlbmRpZgotCi0KLS8qCi0gIHB0ciBwb2ludHMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBmb3JtYXRfc3BlYywgZW5kIHBvaW50cyBqdXN0IHBhc3QgaXRzIGVuZC4KLSAgZmlsbHMgaW4gZm9ybWF0IHdpdGggdGhlIHBhcnNlZCBpbmZvcm1hdGlvbi4KLSAgcmV0dXJucyAxIG9uIHN1Y2Nlc3MsIDAgb24gZmFpbHVyZS4KLSAgaWYgZmFpbHVyZSwgc2V0cyB0aGUgZXhjZXB0aW9uCi0qLwotc3RhdGljIGludAotcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGRlZmF1bHRfYWxpZ24pCi17Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0ciA9IGZvcm1hdF9zcGVjOwotICAgIFNUUklOR0xJQl9DSEFSICplbmQgPSBmb3JtYXRfc3BlYyArIGZvcm1hdF9zcGVjX2xlbjsKLQotICAgIC8qIGVuZC1wdHIgaXMgdXNlZCB0aHJvdWdob3V0IHRoaXMgY29kZSB0byBzcGVjaWZ5IHRoZSBsZW5ndGggb2YKLSAgICAgICB0aGUgaW5wdXQgc3RyaW5nICovCi0KLSAgICBQeV9zc2l6ZV90IGNvbnN1bWVkOwotICAgIGludCBhbGlnbl9zcGVjaWZpZWQgPSAwOwotCi0gICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnXDAnOwotICAgIGZvcm1hdC0+YWxpZ24gPSBkZWZhdWx0X2FsaWduOwotICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMDsKLSAgICBmb3JtYXQtPnNpZ24gPSAnXDAnOwotICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKLSAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID0gMDsKLSAgICBmb3JtYXQtPnByZWNpc2lvbiA9IC0xOwotICAgIGZvcm1hdC0+dHlwZSA9IGRlZmF1bHRfdHlwZTsKLQotICAgIC8qIElmIHRoZSBzZWNvbmQgY2hhciBpcyBhbiBhbGlnbm1lbnQgdG9rZW4sCi0gICAgICAgdGhlbiBwYXJzZSB0aGUgZmlsbCBjaGFyICovCi0gICAgaWYgKGVuZC1wdHIgPj0gMiAmJiBpc19hbGlnbm1lbnRfdG9rZW4ocHRyWzFdKSkgewotICAgICAgICBmb3JtYXQtPmFsaWduID0gcHRyWzFdOwotICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9IHB0clswXTsKLSAgICAgICAgYWxpZ25fc3BlY2lmaWVkID0gMTsKLSAgICAgICAgcHRyICs9IDI7Ci0gICAgfQotICAgIGVsc2UgaWYgKGVuZC1wdHIgPj0gMSAmJiBpc19hbGlnbm1lbnRfdG9rZW4ocHRyWzBdKSkgewotICAgICAgICBmb3JtYXQtPmFsaWduID0gcHRyWzBdOwotICAgICAgICBhbGlnbl9zcGVjaWZpZWQgPSAxOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBQYXJzZSB0aGUgdmFyaW91cyBzaWduIG9wdGlvbnMgKi8KLSAgICBpZiAoZW5kLXB0ciA+PSAxICYmIGlzX3NpZ25fZWxlbWVudChwdHJbMF0pKSB7Ci0gICAgICAgIGZvcm1hdC0+c2lnbiA9IHB0clswXTsKLSAgICAgICAgKytwdHI7Ci0gICAgfQotCi0gICAgLyogSWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzICMsIHdlJ3JlIGluIGFsdGVybmF0ZSBtb2RlLiAgVGhpcyBvbmx5Ci0gICAgICAgYXBwbGllcyB0byBpbnRlZ2Vycy4gKi8KLSAgICBpZiAoZW5kLXB0ciA+PSAxICYmIHB0clswXSA9PSAnIycpIHsKLSAgICAgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAxOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBUaGUgc3BlY2lhbCBjYXNlIGZvciAwLXBhZGRpbmcgKGJhY2t3YXJkcyBjb21wYXQpICovCi0gICAgaWYgKGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgJiYgZW5kLXB0ciA+PSAxICYmIHB0clswXSA9PSAnMCcpIHsKLSAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnMCc7Ci0gICAgICAgIGlmICghYWxpZ25fc3BlY2lmaWVkKSB7Ci0gICAgICAgICAgICBmb3JtYXQtPmFsaWduID0gJz0nOwotICAgICAgICB9Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoJnB0ciwgZW5kLCAmZm9ybWF0LT53aWR0aCk7Ci0gICAgaWYgKGNvbnN1bWVkID09IC0xKQotICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLwotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIElmIGNvbnN1bWVkIGlzIDAsIHdlIGRpZG4ndCBjb25zdW1lIGFueSBjaGFyYWN0ZXJzIGZvciB0aGUKLSAgICAgICB3aWR0aC4gSW4gdGhhdCBjYXNlLCByZXNldCB0aGUgd2lkdGggdG8gLTEsIGJlY2F1c2UKLSAgICAgICBnZXRfaW50ZWdlcigpIHdpbGwgaGF2ZSBzZXQgaXQgdG8gemVyby4gLTEgaXMgaG93IHdlIHJlY29yZAotICAgICAgIHRoYXQgdGhlIHdpZHRoIHdhc24ndCBzcGVjaWZpZWQuICovCi0gICAgaWYgKGNvbnN1bWVkID09IDApCi0gICAgICAgIGZvcm1hdC0+d2lkdGggPSAtMTsKLQotICAgIC8qIENvbW1hIHNpZ25pZmllcyBhZGQgdGhvdXNhbmRzIHNlcGFyYXRvcnMgKi8KLSAgICBpZiAoZW5kLXB0ciAmJiBwdHJbMF0gPT0gJywnKSB7Ci0gICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAxOwotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvKiBQYXJzZSBmaWVsZCBwcmVjaXNpb24gKi8KLSAgICBpZiAoZW5kLXB0ciAmJiBwdHJbMF0gPT0gJy4nKSB7Ci0gICAgICAgICsrcHRyOwotCi0gICAgICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoJnB0ciwgZW5kLCAmZm9ybWF0LT5wcmVjaXNpb24pOwotICAgICAgICBpZiAoY29uc3VtZWQgPT0gLTEpCi0gICAgICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgLyogTm90IGhhdmluZyBhIHByZWNpc2lvbiBhZnRlciBhIGRvdCBpcyBhbiBlcnJvci4gKi8KLSAgICAgICAgaWYgKGNvbnN1bWVkID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG1pc3NpbmcgcHJlY2lzaW9uIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgfQotCi0gICAgLyogRmluYWxseSwgcGFyc2UgdGhlIHR5cGUgZmllbGQuICovCi0KLSAgICBpZiAoZW5kLXB0ciA+IDEpIHsKLSAgICAgICAgLyogTW9yZSB0aGFuIG9uZSBjaGFyIHJlbWFpbiwgaW52YWxpZCBjb252ZXJzaW9uIHNwZWMuICovCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBjb252ZXJzaW9uIHNwZWNpZmljYXRpb24iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgaWYgKGVuZC1wdHIgPT0gMSkgewotICAgICAgICBmb3JtYXQtPnR5cGUgPSBwdHJbMF07Ci0gICAgICAgICsrcHRyOwotICAgIH0KLQotICAgIC8qIERvIGFzIG11Y2ggdmFsaWRhdGluZyBhcyB3ZSBjYW4sIGp1c3QgYnkgbG9va2luZyBhdCB0aGUgZm9ybWF0Ci0gICAgICAgc3BlY2lmaWVyLiAgRG8gbm90IHRha2UgaW50byBhY2NvdW50IHdoYXQgdHlwZSBvZiBmb3JtYXR0aW5nCi0gICAgICAgd2UncmUgZG9pbmcgKGludCwgZmxvYXQsIHN0cmluZykuICovCi0KLSAgICBpZiAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycykgewotICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+dHlwZSkgewotICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgIGNhc2UgJ2YnOgotICAgICAgICBjYXNlICdnJzoKLSAgICAgICAgY2FzZSAnRSc6Ci0gICAgICAgIGNhc2UgJ0cnOgotICAgICAgICBjYXNlICclJzoKLSAgICAgICAgY2FzZSAnRic6Ci0gICAgICAgIGNhc2UgJ1wwJzoKLSAgICAgICAgICAgIC8qIFRoZXNlIGFyZSBhbGxvd2VkLiBTZWUgUEVQIDM3OC4qLwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpbnZhbGlkX2NvbW1hX3R5cGUoZm9ybWF0LT50eXBlKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIENhbGN1bGF0ZSB0aGUgcGFkZGluZyBuZWVkZWQuICovCi1zdGF0aWMgdm9pZAotY2FsY19wYWRkaW5nKFB5X3NzaXplX3QgbmNoYXJzLCBQeV9zc2l6ZV90IHdpZHRoLCBTVFJJTkdMSUJfQ0hBUiBhbGlnbiwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX2xwYWRkaW5nLCBQeV9zc2l6ZV90ICpuX3JwYWRkaW5nLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fdG90YWwpCi17Ci0gICAgaWYgKHdpZHRoID49IDApIHsKLSAgICAgICAgaWYgKG5jaGFycyA+IHdpZHRoKQotICAgICAgICAgICAgKm5fdG90YWwgPSBuY2hhcnM7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgICpuX3RvdGFsID0gd2lkdGg7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICAvKiBub3Qgc3BlY2lmaWVkLCB1c2UgYWxsIG9mIHRoZSBjaGFycyBhbmQgbm8gbW9yZSAqLwotICAgICAgICAqbl90b3RhbCA9IG5jaGFyczsKLSAgICB9Ci0KLSAgICAvKiBGaWd1cmUgb3V0IGhvdyBtdWNoIGxlYWRpbmcgc3BhY2Ugd2UgbmVlZCwgYmFzZWQgb24gdGhlCi0gICAgICAgYWxpZ25pbmcgKi8KLSAgICBpZiAoYWxpZ24gPT0gJz4nKQotICAgICAgICAqbl9scGFkZGluZyA9ICpuX3RvdGFsIC0gbmNoYXJzOwotICAgIGVsc2UgaWYgKGFsaWduID09ICdeJykKLSAgICAgICAgKm5fbHBhZGRpbmcgPSAoKm5fdG90YWwgLSBuY2hhcnMpIC8gMjsKLSAgICBlbHNlIGlmIChhbGlnbiA9PSAnPCcgfHwgYWxpZ24gPT0gJz0nKQotICAgICAgICAqbl9scGFkZGluZyA9IDA7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIFdlIHNob3VsZCBuZXZlciBoYXZlIGFuIHVuc3BlY2lmaWVkIGFsaWdubWVudC4gKi8KLSAgICAgICAgKm5fbHBhZGRpbmcgPSAwOwotICAgICAgICBhc3NlcnQoMCk7Ci0gICAgfQotCi0gICAgKm5fcnBhZGRpbmcgPSAqbl90b3RhbCAtIG5jaGFycyAtICpuX2xwYWRkaW5nOwotfQotCi0vKiBEbyB0aGUgcGFkZGluZywgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGNhbGxlci1zdXBwbGllZAotICAgY29udGVudCBnb2VzLiAqLwotc3RhdGljIFNUUklOR0xJQl9DSEFSICoKLWZpbGxfcGFkZGluZyhTVFJJTkdMSUJfQ0hBUiAqcCwgUHlfc3NpemVfdCBuY2hhcnMsIFNUUklOR0xJQl9DSEFSIGZpbGxfY2hhciwKLSAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fbHBhZGRpbmcsIFB5X3NzaXplX3Qgbl9ycGFkZGluZykKLXsKLSAgICAvKiBQYWQgb24gbGVmdC4gKi8KLSAgICBpZiAobl9scGFkZGluZykKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwocCwgZmlsbF9jaGFyLCBuX2xwYWRkaW5nKTsKLQotICAgIC8qIFBhZCBvbiByaWdodC4gKi8KLSAgICBpZiAobl9ycGFkZGluZykKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwocCArIG5jaGFycyArIG5fbHBhZGRpbmcsIGZpbGxfY2hhciwgbl9ycGFkZGluZyk7Ci0KLSAgICAvKiBQb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRlbnQuICovCi0gICAgcmV0dXJuIHAgKyBuX2xwYWRkaW5nOwotfQotCi0jaWYgZGVmaW5lZCBGT1JNQVRfRkxPQVQgfHwgZGVmaW5lZCBGT1JNQVRfTE9ORyB8fCBkZWZpbmVkIEZPUk1BVF9DT01QTEVYCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGNvbW1vbiByb3V0aW5lcyBmb3IgbnVtZXJpYyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIExvY2FsZSB0eXBlIGNvZGVzLiAqLwotI2RlZmluZSBMVF9DVVJSRU5UX0xPQ0FMRSAwCi0jZGVmaW5lIExUX0RFRkFVTFRfTE9DQUxFIDEKLSNkZWZpbmUgTFRfTk9fTE9DQUxFIDIKLQotLyogTG9jYWxlIGluZm8gbmVlZGVkIGZvciBmb3JtYXR0aW5nIGludGVnZXJzIGFuZCB0aGUgcGFydCBvZiBmbG9hdHMKLSAgIGJlZm9yZSBhbmQgaW5jbHVkaW5nIHRoZSBkZWNpbWFsLiBOb3RlIHRoYXQgbG9jYWxlcyBvbmx5IHN1cHBvcnQKLSAgIDgtYml0IGNoYXJzLCBub3QgdW5pY29kZS4gKi8KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBjaGFyICpkZWNpbWFsX3BvaW50OwotICAgIGNoYXIgKnRob3VzYW5kc19zZXA7Ci0gICAgY2hhciAqZ3JvdXBpbmc7Ci19IExvY2FsZUluZm87Ci0KLS8qIGRlc2NyaWJlcyB0aGUgbGF5b3V0IGZvciBhbiBpbnRlZ2VyLCBzZWUgdGhlIGNvbW1lbnQgaW4KLSAgIGNhbGNfbnVtYmVyX3dpZHRocygpIGZvciBkZXRhaWxzICovCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgUHlfc3NpemVfdCBuX2xwYWRkaW5nOwotICAgIFB5X3NzaXplX3Qgbl9wcmVmaXg7Ci0gICAgUHlfc3NpemVfdCBuX3NwYWRkaW5nOwotICAgIFB5X3NzaXplX3Qgbl9ycGFkZGluZzsKLSAgICBjaGFyIHNpZ247Ci0gICAgUHlfc3NpemVfdCBuX3NpZ247ICAgICAgLyogbnVtYmVyIG9mIGRpZ2l0cyBuZWVkZWQgZm9yIHNpZ24gKDAvMSkgKi8KLSAgICBQeV9zc2l6ZV90IG5fZ3JvdXBlZF9kaWdpdHM7IC8qIFNwYWNlIHRha2VuIHVwIGJ5IHRoZSBkaWdpdHMsIGluY2x1ZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW55IGdyb3VwaW5nIGNoYXJzLiAqLwotICAgIFB5X3NzaXplX3Qgbl9kZWNpbWFsOyAgIC8qIDAgaWYgb25seSBhbiBpbnRlZ2VyICovCi0gICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsgLyogRGlnaXRzIGluIGRlY2ltYWwgYW5kL29yIGV4cG9uZW50IHBhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjbHVkaW5nIHRoZSBkZWNpbWFsIGl0c2VsZiwgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50LiAqLwotCi0gICAgLyogVGhlc2UgMiBhcmUgbm90IHRoZSB3aWR0aHMgb2YgZmllbGRzLCBidXQgYXJlIG5lZWRlZCBieQotICAgICAgIFNUUklOR0xJQl9HUk9VUElORy4gKi8KLSAgICBQeV9zc2l6ZV90IG5fZGlnaXRzOyAgICAvKiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyBiZWZvcmUgYSBkZWNpbWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgZXhwb25lbnQuICovCi0gICAgUHlfc3NpemVfdCBuX21pbl93aWR0aDsgLyogVGhlIG1pbl93aWR0aCB3ZSB1c2VkIHdoZW4gd2UgY29tcHV0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbl9ncm91cGVkX2RpZ2l0cyB3aWR0aC4gKi8KLX0gTnVtYmVyRmllbGRXaWR0aHM7Ci0KLQotLyogR2l2ZW4gYSBudW1iZXIgb2YgdGhlIGZvcm06Ci0gICBkaWdpdHNbcmVtYWluZGVyXQotICAgd2hlcmUgcHRyIHBvaW50cyB0byB0aGUgc3RhcnQgYW5kIGVuZCBwb2ludHMgdG8gdGhlIGVuZCwgZmluZCB3aGVyZQotICAgIHRoZSBpbnRlZ2VyIHBhcnQgZW5kcy4gVGhpcyBjb3VsZCBiZSBhIGRlY2ltYWwsIGFuIGV4cG9uZW50LCBib3RoLAotICAgIG9yIG5laXRoZXIuCi0gICBJZiBhIGRlY2ltYWwgcG9pbnQgaXMgcHJlc2VudCwgc2V0ICpoYXNfZGVjaW1hbCBhbmQgaW5jcmVtZW50Ci0gICAgcmVtYWluZGVyIGJleW9uZCBpdC4KLSAgIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCAoYnV0IHNob3VsZG4ndCBjcmFzaCkgZm9yIGltcHJvcGVybHkKLSAgICBmb3JtYXR0ZWQgc3RyaW5ncy4KLSovCi1zdGF0aWMgdm9pZAotcGFyc2VfbnVtYmVyKFNUUklOR0xJQl9DSEFSICpwdHIsIFB5X3NzaXplX3QgbGVuLAotICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fcmVtYWluZGVyLCBpbnQgKmhhc19kZWNpbWFsKQotewotICAgIFNUUklOR0xJQl9DSEFSICplbmQgPSBwdHIgKyBsZW47Ci0gICAgU1RSSU5HTElCX0NIQVIgKnJlbWFpbmRlcjsKLQotICAgIHdoaWxlIChwdHI8ZW5kICYmIGlzZGlnaXQoKnB0cikpCi0gICAgICAgICsrcHRyOwotICAgIHJlbWFpbmRlciA9IHB0cjsKLQotICAgIC8qIERvZXMgcmVtYWluZGVyIHN0YXJ0IHdpdGggYSBkZWNpbWFsIHBvaW50PyAqLwotICAgICpoYXNfZGVjaW1hbCA9IHB0cjxlbmQgJiYgKnJlbWFpbmRlciA9PSAnLic7Ci0KLSAgICAvKiBTa2lwIHRoZSBkZWNpbWFsIHBvaW50LiAqLwotICAgIGlmICgqaGFzX2RlY2ltYWwpCi0gICAgICAgIHJlbWFpbmRlcisrOwotCi0gICAgKm5fcmVtYWluZGVyID0gZW5kIC0gcmVtYWluZGVyOwotfQotCi0vKiBub3QgYWxsIGZpZWxkcyBvZiBmb3JtYXQgYXJlIHVzZWQuICBmb3IgZXhhbXBsZSwgcHJlY2lzaW9uIGlzCi0gICB1bnVzZWQuICBzaG91bGQgdGhpcyB0YWtlIGRpc2NyZXRlIHBhcmFtcyBpbiBvcmRlciB0byBiZSBtb3JlIGNsZWFyCi0gICBhYm91dCB3aGF0IGl0IGRvZXM/ICBvciBpcyBwYXNzaW5nIGEgc2luZ2xlIGZvcm1hdCBwYXJhbWV0ZXIgZWFzaWVyCi0gICBhbmQgbW9yZSBlZmZpY2llbnQgZW5vdWdoIHRvIGp1c3RpZnkgYSBsaXR0bGUgb2JmdXNjYXRpb24/ICovCi1zdGF0aWMgUHlfc3NpemVfdAotY2FsY19udW1iZXJfd2lkdGhzKE51bWJlckZpZWxkV2lkdGhzICpzcGVjLCBQeV9zc2l6ZV90IG5fcHJlZml4LAotICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSIHNpZ25fY2hhciwgU1RSSU5HTElCX0NIQVIgKm51bWJlciwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fbnVtYmVyLCBQeV9zc2l6ZV90IG5fcmVtYWluZGVyLAotICAgICAgICAgICAgICAgICAgIGludCBoYXNfZGVjaW1hbCwgY29uc3QgTG9jYWxlSW5mbyAqbG9jYWxlLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIFB5X3NzaXplX3Qgbl9ub25fZGlnaXRfbm9uX3BhZGRpbmc7Ci0gICAgUHlfc3NpemVfdCBuX3BhZGRpbmc7Ci0KLSAgICBzcGVjLT5uX2RpZ2l0cyA9IG5fbnVtYmVyIC0gbl9yZW1haW5kZXIgLSAoaGFzX2RlY2ltYWw/MTowKTsKLSAgICBzcGVjLT5uX2xwYWRkaW5nID0gMDsKLSAgICBzcGVjLT5uX3ByZWZpeCA9IG5fcHJlZml4OwotICAgIHNwZWMtPm5fZGVjaW1hbCA9IGhhc19kZWNpbWFsID8gc3RybGVuKGxvY2FsZS0+ZGVjaW1hbF9wb2ludCkgOiAwOwotICAgIHNwZWMtPm5fcmVtYWluZGVyID0gbl9yZW1haW5kZXI7Ci0gICAgc3BlYy0+bl9zcGFkZGluZyA9IDA7Ci0gICAgc3BlYy0+bl9ycGFkZGluZyA9IDA7Ci0gICAgc3BlYy0+c2lnbiA9ICdcMCc7Ci0gICAgc3BlYy0+bl9zaWduID0gMDsKLQotICAgIC8qIHRoZSBvdXRwdXQgd2lsbCBsb29rIGxpa2U6Ci0gICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgIHwgPGxwYWRkaW5nPiA8c2lnbj4gPHByZWZpeD4gPHNwYWRkaW5nPiA8Z3JvdXBlZF9kaWdpdHM+IDxkZWNpbWFsPiA8cmVtYWluZGVyPiA8cnBhZGRpbmc+IHwKLSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0KLSAgICAgICBzaWduIGlzIGNvbXB1dGVkIGZyb20gZm9ybWF0LT5zaWduIGFuZCB0aGUgYWN0dWFsCi0gICAgICAgc2lnbiBvZiB0aGUgbnVtYmVyCi0KLSAgICAgICBwcmVmaXggaXMgZ2l2ZW4gKGl0J3MgZm9yIHRoZSAnMHgnIHByZWZpeCkKLQotICAgICAgIGRpZ2l0cyBpcyBhbHJlYWR5IGtub3duCi0KLSAgICAgICB0aGUgdG90YWwgd2lkdGggaXMgZWl0aGVyIGdpdmVuLCBvciBjb21wdXRlZCBmcm9tIHRoZQotICAgICAgIGFjdHVhbCBkaWdpdHMKLQotICAgICAgIG9ubHkgb25lIG9mIGxwYWRkaW5nLCBzcGFkZGluZywgYW5kIHJwYWRkaW5nIGNhbiBiZSBub24temVybywKLSAgICAgICBhbmQgaXQncyBjYWxjdWxhdGVkIGZyb20gdGhlIHdpZHRoIGFuZCBvdGhlciBmaWVsZHMKLSAgICAqLwotCi0gICAgLyogY29tcHV0ZSB0aGUgdmFyaW91cyBwYXJ0cyB3ZSdyZSBnb2luZyB0byB3cml0ZSAqLwotICAgIHN3aXRjaCAoZm9ybWF0LT5zaWduKSB7Ci0gICAgY2FzZSAnKyc6Ci0gICAgICAgIC8qIGFsd2F5cyBwdXQgYSArIG9yIC0gKi8KLSAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKLSAgICAgICAgc3BlYy0+c2lnbiA9IChzaWduX2NoYXIgPT0gJy0nID8gJy0nIDogJysnKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnICc6Ci0gICAgICAgIHNwZWMtPm5fc2lnbiA9IDE7Ci0gICAgICAgIHNwZWMtPnNpZ24gPSAoc2lnbl9jaGFyID09ICctJyA/ICctJyA6ICcgJyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8qIE5vdCBzcGVjaWZpZWQsIG9yIHRoZSBkZWZhdWx0ICgtKSAqLwotICAgICAgICBpZiAoc2lnbl9jaGFyID09ICctJykgewotICAgICAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKLSAgICAgICAgICAgIHNwZWMtPnNpZ24gPSAnLSc7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBUaGUgbnVtYmVyIG9mIGNoYXJzIHVzZWQgZm9yIG5vbi1kaWdpdHMgYW5kIG5vbi1wYWRkaW5nLiAqLwotICAgIG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nID0gc3BlYy0+bl9zaWduICsgc3BlYy0+bl9wcmVmaXggKyBzcGVjLT5uX2RlY2ltYWwgKwotICAgICAgICBzcGVjLT5uX3JlbWFpbmRlcjsKLQotICAgIC8qIG1pbl93aWR0aCBjYW4gZ28gbmVnYXRpdmUsIHRoYXQncyBva2F5LiBmb3JtYXQtPndpZHRoID09IC0xIG1lYW5zCi0gICAgICAgd2UgZG9uJ3QgY2FyZS4gKi8KLSAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnICYmIGZvcm1hdC0+YWxpZ24gPT0gJz0nKQotICAgICAgICBzcGVjLT5uX21pbl93aWR0aCA9IGZvcm1hdC0+d2lkdGggLSBuX25vbl9kaWdpdF9ub25fcGFkZGluZzsKLSAgICBlbHNlCi0gICAgICAgIHNwZWMtPm5fbWluX3dpZHRoID0gMDsKLQotICAgIGlmIChzcGVjLT5uX2RpZ2l0cyA9PSAwKQotICAgICAgICAvKiBUaGlzIGNhc2Ugb25seSBvY2N1cnMgd2hlbiB1c2luZyAnYycgZm9ybWF0dGluZywgd2UgbmVlZAotICAgICAgICAgICB0byBzcGVjaWFsIGNhc2UgaXQgYmVjYXVzZSB0aGUgZ3JvdXBpbmcgY29kZSBhbHdheXMgd2FudHMKLSAgICAgICAgICAgdG8gaGF2ZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLiAqLwotICAgICAgICBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzID0gMDsKLSAgICBlbHNlCi0gICAgICAgIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgPSBTVFJJTkdMSUJfR1JPVVBJTkcoTlVMTCwgMCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX21pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS0+dGhvdXNhbmRzX3NlcCk7Ci0KLSAgICAvKiBHaXZlbiB0aGUgZGVzaXJlZCB3aWR0aCBhbmQgdGhlIHRvdGFsIG9mIGRpZ2l0IGFuZCBub24tZGlnaXQKLSAgICAgICBzcGFjZSB3ZSBjb25zdW1lLCBzZWUgaWYgd2UgbmVlZCBhbnkgcGFkZGluZy4gZm9ybWF0LT53aWR0aCBjYW4KLSAgICAgICBiZSBuZWdhdGl2ZSAobWVhbmluZyBubyBwYWRkaW5nKSwgYnV0IHRoaXMgY29kZSBzdGlsbCB3b3JrcyBpbgotICAgICAgIHRoYXQgY2FzZS4gKi8KLSAgICBuX3BhZGRpbmcgPSBmb3JtYXQtPndpZHRoIC0KLSAgICAgICAgICAgICAgICAgICAgICAgIChuX25vbl9kaWdpdF9ub25fcGFkZGluZyArIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOwotICAgIGlmIChuX3BhZGRpbmcgPiAwKSB7Ci0gICAgICAgIC8qIFNvbWUgcGFkZGluZyBpcyBuZWVkZWQuIERldGVybWluZSBpZiBpdCdzIGxlZnQsIHNwYWNlLCBvciByaWdodC4gKi8KLSAgICAgICAgc3dpdGNoIChmb3JtYXQtPmFsaWduKSB7Ci0gICAgICAgIGNhc2UgJzwnOgotICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICdeJzoKLSAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmcgLyAyOwotICAgICAgICAgICAgc3BlYy0+bl9ycGFkZGluZyA9IG5fcGFkZGluZyAtIHNwZWMtPm5fbHBhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnPSc6Ci0gICAgICAgICAgICBzcGVjLT5uX3NwYWRkaW5nID0gbl9wYWRkaW5nOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJz4nOgotICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLyogU2hvdWxkbid0IGdldCBoZXJlLCBidXQgdHJlYXQgaXQgYXMgJz4nICovCi0gICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nOwotICAgICAgICAgICAgYXNzZXJ0KDApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNwZWMtPm5fbHBhZGRpbmcgKyBzcGVjLT5uX3NpZ24gKyBzcGVjLT5uX3ByZWZpeCArCi0gICAgICAgIHNwZWMtPm5fc3BhZGRpbmcgKyBzcGVjLT5uX2dyb3VwZWRfZGlnaXRzICsgc3BlYy0+bl9kZWNpbWFsICsKLSAgICAgICAgc3BlYy0+bl9yZW1haW5kZXIgKyBzcGVjLT5uX3JwYWRkaW5nOwotfQotCi0vKiBGaWxsIGluIHRoZSBkaWdpdCBwYXJ0cyBvZiBhIG51bWJlcnMncyBzdHJpbmcgcmVwcmVzZW50YXRpb24sCi0gICBhcyBkZXRlcm1pbmVkIGluIGNhbGNfbnVtYmVyX3dpZHRocygpLgotICAgTm8gZXJyb3IgY2hlY2tpbmcsIHNpbmNlIHdlIGtub3cgdGhlIGJ1ZmZlciBpcyB0aGUgY29ycmVjdCBzaXplLiAqLwotc3RhdGljIHZvaWQKLWZpbGxfbnVtYmVyKFNUUklOR0xJQl9DSEFSICpidWYsIGNvbnN0IE51bWJlckZpZWxkV2lkdGhzICpzcGVjLAotICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0cywgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpwcmVmaXgsIFNUUklOR0xJQl9DSEFSIGZpbGxfY2hhciwKLSAgICAgICAgICAgIExvY2FsZUluZm8gKmxvY2FsZSwgaW50IHRvdXBwZXIpCi17Ci0gICAgLyogVXNlZCB0byBrZWVwIHRyYWNrIG9mIGRpZ2l0cywgZGVjaW1hbCwgYW5kIHJlbWFpbmRlci4gKi8KLSAgICBTVFJJTkdMSUJfQ0hBUiAqcCA9IGRpZ2l0czsKLQotI2lmbmRlZiBOREVCVUcKLSAgICBQeV9zc2l6ZV90IHI7Ci0jZW5kaWYKLQotICAgIGlmIChzcGVjLT5uX2xwYWRkaW5nKSB7Ci0gICAgICAgIFNUUklOR0xJQl9GSUxMKGJ1ZiwgZmlsbF9jaGFyLCBzcGVjLT5uX2xwYWRkaW5nKTsKLSAgICAgICAgYnVmICs9IHNwZWMtPm5fbHBhZGRpbmc7Ci0gICAgfQotICAgIGlmIChzcGVjLT5uX3NpZ24gPT0gMSkgewotICAgICAgICAqYnVmKysgPSBzcGVjLT5zaWduOwotICAgIH0KLSAgICBpZiAoc3BlYy0+bl9wcmVmaXgpIHsKLSAgICAgICAgbWVtbW92ZShidWYsCi0gICAgICAgICAgICAgICAgcHJlZml4LAotICAgICAgICAgICAgICAgIHNwZWMtPm5fcHJlZml4ICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgIGlmICh0b3VwcGVyKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHQ7Ci0gICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9wcmVmaXg7ICsrdCkKLSAgICAgICAgICAgICAgICBidWZbdF0gPSBTVFJJTkdMSUJfVE9VUFBFUihidWZbdF0pOwotICAgICAgICB9Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3ByZWZpeDsKLSAgICB9Ci0gICAgaWYgKHNwZWMtPm5fc3BhZGRpbmcpIHsKLSAgICAgICAgU1RSSU5HTElCX0ZJTEwoYnVmLCBmaWxsX2NoYXIsIHNwZWMtPm5fc3BhZGRpbmcpOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9zcGFkZGluZzsKLSAgICB9Ci0KLSAgICAvKiBPbmx5IGZvciB0eXBlICdjJyBzcGVjaWFsIGNhc2UsIGl0IGhhcyBubyBkaWdpdHMuICovCi0gICAgaWYgKHNwZWMtPm5fZGlnaXRzICE9IDApIHsKLSAgICAgICAgLyogRmlsbCB0aGUgZGlnaXRzIHdpdGggSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcuICovCi0jaWZuZGVmIE5ERUJVRwotICAgICAgICByID0KLSNlbmRpZgotICAgICAgICAgICAgU1RSSU5HTElCX0dST1VQSU5HKGJ1Ziwgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cywgZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMtPm5fZGlnaXRzLCBzcGVjLT5uX21pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLCBsb2NhbGUtPnRob3VzYW5kc19zZXApOwotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgYXNzZXJ0KHIgPT0gc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyk7Ci0jZW5kaWYKLSAgICAgICAgcCArPSBzcGVjLT5uX2RpZ2l0czsKLSAgICB9Ci0gICAgaWYgKHRvdXBwZXIpIHsKLSAgICAgICAgUHlfc3NpemVfdCB0OwotICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9ncm91cGVkX2RpZ2l0czsgKyt0KQotICAgICAgICAgICAgYnVmW3RdID0gU1RSSU5HTElCX1RPVVBQRVIoYnVmW3RdKTsKLSAgICB9Ci0gICAgYnVmICs9IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHM7Ci0KLSAgICBpZiAoc3BlYy0+bl9kZWNpbWFsKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgdDsKLSAgICAgICAgZm9yICh0ID0gMDsgdCA8IHNwZWMtPm5fZGVjaW1hbDsgKyt0KQotICAgICAgICAgICAgYnVmW3RdID0gbG9jYWxlLT5kZWNpbWFsX3BvaW50W3RdOwotICAgICAgICBidWYgKz0gc3BlYy0+bl9kZWNpbWFsOwotICAgICAgICBwICs9IDE7Ci0gICAgfQotCi0gICAgaWYgKHNwZWMtPm5fcmVtYWluZGVyKSB7Ci0gICAgICAgIG1lbWNweShidWYsIHAsIHNwZWMtPm5fcmVtYWluZGVyICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3JlbWFpbmRlcjsKLSAgICAgICAgcCArPSBzcGVjLT5uX3JlbWFpbmRlcjsKLSAgICB9Ci0KLSAgICBpZiAoc3BlYy0+bl9ycGFkZGluZykgewotICAgICAgICBTVFJJTkdMSUJfRklMTChidWYsIGZpbGxfY2hhciwgc3BlYy0+bl9ycGFkZGluZyk7Ci0gICAgICAgIGJ1ZiArPSBzcGVjLT5uX3JwYWRkaW5nOwotICAgIH0KLX0KLQotc3RhdGljIGNoYXIgbm9fZ3JvdXBpbmdbMV0gPSB7Q0hBUl9NQVh9OwotCi0vKiBGaW5kIHRoZSBkZWNpbWFsIHBvaW50IGNoYXJhY3RlcihzPyksIHRob3VzYW5kc19zZXBhcmF0b3Iocz8pLCBhbmQKLSAgIGdyb3VwaW5nIGRlc2NyaXB0aW9uLCBlaXRoZXIgZm9yIHRoZSBjdXJyZW50IGxvY2FsZSBpZiB0eXBlIGlzCi0gICBMVF9DVVJSRU5UX0xPQ0FMRSwgYSBoYXJkLWNvZGVkIGxvY2FsZSBpZiBMVF9ERUZBVUxUX0xPQ0FMRSwgb3IKLSAgIG5vbmUgaWYgTFRfTk9fTE9DQUxFLiAqLwotc3RhdGljIHZvaWQKLWdldF9sb2NhbGVfaW5mbyhpbnQgdHlwZSwgTG9jYWxlSW5mbyAqbG9jYWxlX2luZm8pCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBMVF9DVVJSRU5UX0xPQ0FMRTogewotICAgICAgICBzdHJ1Y3QgbGNvbnYgKmxvY2FsZV9kYXRhID0gbG9jYWxlY29udigpOwotICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9IGxvY2FsZV9kYXRhLT5kZWNpbWFsX3BvaW50OwotICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IGxvY2FsZV9kYXRhLT50aG91c2FuZHNfc2VwOwotICAgICAgICBsb2NhbGVfaW5mby0+Z3JvdXBpbmcgPSBsb2NhbGVfZGF0YS0+Z3JvdXBpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIExUX0RFRkFVTFRfTE9DQUxFOgotICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9ICIuIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSAiLCI7Ci0gICAgICAgIGxvY2FsZV9pbmZvLT5ncm91cGluZyA9ICJcMyI7IC8qIEdyb3VwIGV2ZXJ5IDMgY2hhcmFjdGVycy4gIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGljaXQpIHRyYWlsaW5nIDAgbWVhbnMgcmVwZWF0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZmluaXRlbHkuICovCi0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTFRfTk9fTE9DQUxFOgotICAgICAgICBsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9ICIuIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSAiIjsKLSAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gbm9fZ3JvdXBpbmc7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGFzc2VydCgwKTsKLSAgICB9Ci19Ci0KLSNlbmRpZiAvKiBGT1JNQVRfRkxPQVQgfHwgRk9STUFUX0xPTkcgfHwgRk9STUFUX0NPTVBMRVggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBzdHJpbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X3N0cmluZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIFB5X3NzaXplX3QgbHBhZDsKLSAgICBQeV9zc2l6ZV90IHJwYWQ7Ci0gICAgUHlfc3NpemVfdCB0b3RhbDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcDsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFNUUklOR0xJQl9MRU4odmFsdWUpOwotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotCi0gICAgLyogc2lnbiBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCi0gICAgaWYgKGZvcm1hdC0+c2lnbiAhPSAnXDAnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ24gbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIGFsdGVybmF0ZSBpcyBub3QgYWxsb3dlZCBvbiBzdHJpbmdzICovCi0gICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkFsdGVybmF0ZSBmb3JtICgjKSBub3QgYWxsb3dlZCBpbiBzdHJpbmcgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qICc9JyBhbGlnbm1lbnQgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLwotICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJpbiBzdHJpbmcgZm9ybWF0IHNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogaWYgcHJlY2lzaW9uIGlzIHNwZWNpZmllZCwgb3V0cHV0IG5vIG1vcmUgdGhhdCBmb3JtYXQucHJlY2lzaW9uCi0gICAgICAgY2hhcmFjdGVycyAqLwotICAgIGlmIChmb3JtYXQtPnByZWNpc2lvbiA+PSAwICYmIGxlbiA+PSBmb3JtYXQtPnByZWNpc2lvbikgewotICAgICAgICBsZW4gPSBmb3JtYXQtPnByZWNpc2lvbjsKLSAgICB9Ci0KLSAgICBjYWxjX3BhZGRpbmcobGVuLCBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7Ci0KLSAgICAvKiBhbGxvY2F0ZSB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLwotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgdG90YWwpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogV3JpdGUgaW50byB0aGF0IHNwYWNlLiBGaXJzdCB0aGUgcGFkZGluZy4gKi8KLSAgICBwID0gZmlsbF9wYWRkaW5nKFNUUklOR0xJQl9TVFIocmVzdWx0KSwgbGVuLAotICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXI9PSdcMCc/JyAnOmZvcm1hdC0+ZmlsbF9jaGFyLAotICAgICAgICAgICAgICAgICAgICAgbHBhZCwgcnBhZCk7Ci0KLSAgICAvKiBUaGVuIHRoZSBzb3VyY2Ugc3RyaW5nLiAqLwotICAgIG1lbWNweShwLCBTVFJJTkdMSUJfU1RSKHZhbHVlKSwgbGVuICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0KLWRvbmU6Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGxvbmcgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVAotdHlwZWRlZiBQeU9iamVjdCoKLSgqSW50T3JMb25nVG9TdHJpbmcpKFB5T2JqZWN0ICp2YWx1ZSwgaW50IGJhc2UpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X2ludF9vcl9sb25nX2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50T3JMb25nVG9TdHJpbmcgdG9zdHJpbmcpCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnBudW1lcmljX2NoYXJzOwotICAgIFNUUklOR0xJQl9DSEFSIG51bWVyaWNfY2hhcjsKLSAgICBTVFJJTkdMSUJfQ0hBUiBzaWduX2NoYXIgPSAnXDAnOwotICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7ICAgICAgIC8qIGNvdW50IG9mIGRpZ2l0cyBuZWVkIGZyb20gdGhlIGNvbXB1dGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICovCi0gICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlciA9IDA7IC8qIFVzZWQgb25seSBmb3IgJ2MnIGZvcm1hdHRpbmcsIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y2VzIG5vbi1kaWdpdHMgKi8KLSAgICBQeV9zc2l6ZV90IG5fcHJlZml4ID0gMDsgICAvKiBDb3VudCBvZiBwcmVmaXggY2hhcnMsIChlLmcuLCAnMHgnKSAqLwotICAgIFB5X3NzaXplX3Qgbl90b3RhbDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcHJlZml4ID0gTlVMTDsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyBzcGVjOwotICAgIGxvbmcgeDsKLQotICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKLSAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KLSAgICBMb2NhbGVJbmZvIGxvY2FsZTsKLQotICAgIC8qIG5vIHByZWNpc2lvbiBhbGxvd2VkIG9uIGludGVnZXJzICovCi0gICAgaWYgKGZvcm1hdC0+cHJlY2lzaW9uICE9IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlByZWNpc2lvbiBub3QgYWxsb3dlZCBpbiBpbnRlZ2VyIGZvcm1hdCBzcGVjaWZpZXIiKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHNwZWNpYWwgY2FzZSBmb3IgY2hhcmFjdGVyIGZvcm1hdHRpbmcgKi8KLSAgICBpZiAoZm9ybWF0LT50eXBlID09ICdjJykgewotICAgICAgICAvKiBlcnJvciB0byBzcGVjaWZ5IGEgc2lnbiAqLwotICAgICAgICBpZiAoZm9ybWF0LT5zaWduICE9ICdcMCcpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIHdpdGggaW50ZWdlciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvcm1hdCBzcGVjaWZpZXIgJ2MnIik7Ci0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiB0YWtlbiBmcm9tIHVuaWNvZGVvYmplY3QuYyBmb3JtYXRjaGFyKCkgKi8KLSAgICAgICAgLyogSW50ZWdlciBpbnB1dCB0cnVuY2F0ZWQgdG8gYSBjaGFyYWN0ZXIgKi8KLS8qIFhYWDogd29uJ3Qgd29yayBmb3IgaW50ICovCi0gICAgICAgIHggPSBQeUxvbmdfQXNMb25nKHZhbHVlKTsKLSAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKHggPCAwIHx8IHggPiAweDEwZmZmZikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKHdpZGUgUHl0aG9uIGJ1aWxkKSIpOwotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4ZmZmZikgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMDAwMCkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIobmFycm93IFB5dGhvbiBidWlsZCkiKTsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIG51bWVyaWNfY2hhciA9IChTVFJJTkdMSUJfQ0hBUil4OwotICAgICAgICBwbnVtZXJpY19jaGFycyA9ICZudW1lcmljX2NoYXI7Ci0gICAgICAgIG5fZGlnaXRzID0gMTsKLQotICAgICAgICAvKiBBcyBhIHNvcnQtb2YgaGFjaywgd2UgdGVsbCBjYWxjX251bWJlcl93aWR0aHMgdGhhdCB3ZSBvbmx5Ci0gICAgICAgICAgIGhhdmUgInJlbWFpbmRlciIgY2hhcmFjdGVycy4gY2FsY19udW1iZXJfd2lkdGhzIHRoaW5rcwotICAgICAgICAgICB0aGVzZSBhcmUgY2hhcmFjdGVycyB0aGF0IGRvbid0IGdldCBmb3JtYXR0ZWQsIG9ubHkgY29waWVkCi0gICAgICAgICAgIGludG8gdGhlIG91dHB1dCBzdHJpbmcuIFdlIGRvIHRoaXMgZm9yICdjJyBmb3JtYXR0aW5nLAotICAgICAgICAgICBiZWNhdXNlIHRoZSBjaGFyYWN0ZXJzIGFyZSBsaWtlbHkgdG8gYmUgbm9uLWRpZ2l0cy4gKi8KLSAgICAgICAgbl9yZW1haW5kZXIgPSAxOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaW50IGJhc2U7Ci0gICAgICAgIGludCBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAwOyAgLyogTnVtYmVyIG9mIGNoYXJhY3RlcnMgYWRkZWQgYnkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgdGhhdCB3ZSB3YW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCBvdmVyLiAqLwotCi0gICAgICAgIC8qIENvbXB1dGUgdGhlIGJhc2UgYW5kIGhvdyBtYW55IGNoYXJhY3RlcnMgd2lsbCBiZSBhZGRlZCBieQotICAgICAgICAgICBQeU51bWJlcl9Ub0Jhc2UgKi8KLSAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKLSAgICAgICAgY2FzZSAnYic6Ci0gICAgICAgICAgICBiYXNlID0gMjsKLSAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBiICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnbyc6Ci0gICAgICAgICAgICBiYXNlID0gODsKLSAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDBvICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgIGNhc2UgJ1gnOgotICAgICAgICAgICAgYmFzZSA9IDE2OwotICAgICAgICAgICAgbGVhZGluZ19jaGFyc190b19za2lwID0gMjsgLyogMHggKi8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OiAgLyogc2hvdWxkbid0IGJlIG5lZWRlZCwgYnV0IHN0b3BzIGEgY29tcGlsZXIgd2FybmluZyAqLwotICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICBiYXNlID0gMTA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFRoZSBudW1iZXIgb2YgcHJlZml4IGNoYXJzIGlzIHRoZSBzYW1lIGFzIHRoZSBsZWFkaW5nCi0gICAgICAgICAgIGNoYXJzIHRvIHNraXAgKi8KLSAgICAgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQotICAgICAgICAgICAgbl9wcmVmaXggPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0KLSAgICAgICAgLyogRG8gdGhlIGhhcmQgcGFydCwgY29udmVydGluZyB0byBhIHN0cmluZyBpbiBhIGdpdmVuIGJhc2UgKi8KLSAgICAgICAgdG1wID0gdG9zdHJpbmcodmFsdWUsIGJhc2UpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAgICAgcG51bWVyaWNfY2hhcnMgPSBTVFJJTkdMSUJfU1RSKHRtcCk7Ci0gICAgICAgIG5fZGlnaXRzID0gU1RSSU5HTElCX0xFTih0bXApOwotCi0gICAgICAgIHByZWZpeCA9IHBudW1lcmljX2NoYXJzOwotCi0gICAgICAgIC8qIFJlbWVtYmVyIG5vdCB0byBtb2RpZnkgd2hhdCBwbnVtZXJpY19jaGFycyBwb2ludHMgdG8uICBpdAotICAgICAgICAgICBtaWdodCBiZSBpbnRlcm5lZC4gIE9ubHkgbW9kaWZ5IGl0IGFmdGVyIHdlIGNvcHkgaXQgaW50byBhCi0gICAgICAgICAgIG5ld2x5IGFsbG9jYXRlZCBvdXRwdXQgYnVmZmVyLiAqLwotCi0gICAgICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0Ci0gICAgICAgICAgIGFuZCBza2lwIGl0ICovCi0gICAgICAgIGlmIChwbnVtZXJpY19jaGFyc1swXSA9PSAnLScpIHsKLSAgICAgICAgICAgIHNpZ25fY2hhciA9IHBudW1lcmljX2NoYXJzWzBdOwotICAgICAgICAgICAgKytwcmVmaXg7Ci0gICAgICAgICAgICArK2xlYWRpbmdfY2hhcnNfdG9fc2tpcDsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNraXAgb3ZlciB0aGUgbGVhZGluZyBjaGFycyAoMHgsIDBiLCBldGMuKSAqLwotICAgICAgICBuX2RpZ2l0cyAtPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7Ci0gICAgICAgIHBudW1lcmljX2NoYXJzICs9IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKLSAgICB9Ci0KLSAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCi0gICAgZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KLSAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCi0gICAgICAgICAgICAgICAgICAgICZsb2NhbGUpOwotCi0gICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLwotICAgIG5fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnNwZWMsIG5fcHJlZml4LCBzaWduX2NoYXIsIHBudW1lcmljX2NoYXJzLAotICAgICAgICAgICAgICAgICAgICAgICBuX2RpZ2l0cywgbl9yZW1haW5kZXIsIDAsICZsb2NhbGUsIGZvcm1hdCk7Ci0KLSAgICAvKiBBbGxvY2F0ZSB0aGUgbWVtb3J5LiAqLwotICAgIHJlc3VsdCA9IFNUUklOR0xJQl9ORVcoTlVMTCwgbl90b3RhbCk7Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIGdvdG8gZG9uZTsKLQotICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuICovCi0gICAgZmlsbF9udW1iZXIoU1RSSU5HTElCX1NUUihyZXN1bHQpLCAmc3BlYywgcG51bWVyaWNfY2hhcnMsIG5fZGlnaXRzLAotICAgICAgICAgICAgICAgIHByZWZpeCwgZm9ybWF0LT5maWxsX2NoYXIgPT0gJ1wwJyA/ICcgJyA6IGZvcm1hdC0+ZmlsbF9jaGFyLAotICAgICAgICAgICAgICAgICZsb2NhbGUsIGZvcm1hdC0+dHlwZSA9PSAnWCcpOwotCi1kb25lOgotICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIGRlZmluZWQgRk9STUFUX0xPTkcgfHwgZGVmaW5lZCBGT1JNQVRfSU5UICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKiogZmxvYXQgZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIEZPUk1BVF9GTE9BVAotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi1zdGF0aWMgdm9pZAotc3RydG91bmljb2RlKFB5X1VOSUNPREUgKmJ1ZmZlciwgY29uc3QgY2hhciAqY2hhcmJ1ZmZlciwgUHlfc3NpemVfdCBsZW4pCi17Ci0gICAgUHlfc3NpemVfdCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKLSAgICAgICAgYnVmZmVyW2ldID0gKFB5X1VOSUNPREUpY2hhcmJ1ZmZlcltpXTsKLX0KLSNlbmRpZgotCi0vKiBtdWNoIG9mIHRoaXMgaXMgdGFrZW4gZnJvbSB1bmljb2Rlb2JqZWN0LmMgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXRfZmxvYXRfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0KQotewotICAgIGNoYXIgKmJ1ZiA9IE5VTEw7ICAgICAgIC8qIGJ1ZmZlciByZXR1cm5lZCBmcm9tIFB5T1NfZG91YmxlX3RvX3N0cmluZyAqLwotICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7Ci0gICAgUHlfc3NpemVfdCBuX3JlbWFpbmRlcjsKLSAgICBQeV9zc2l6ZV90IG5fdG90YWw7Ci0gICAgaW50IGhhc19kZWNpbWFsOwotICAgIGRvdWJsZSB2YWw7Ci0gICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKLSAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKLSAgICBTVFJJTkdMSUJfQ0hBUiB0eXBlID0gZm9ybWF0LT50eXBlOwotICAgIGludCBhZGRfcGN0ID0gMDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqcDsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyBzcGVjOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIgc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBpbnQgZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLwotCi0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeV9VTklDT0RFICp1bmljb2RlX3RtcCA9IE5VTEw7Ci0jZW5kaWYKLQotICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKLSAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KLSAgICBMb2NhbGVJbmZvIGxvY2FsZTsKLQotICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKLSAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BTFQ7Ci0KLSAgICBpZiAodHlwZSA9PSAnXDAnKSB7Ci0gICAgICAgIC8qIE9taXR0ZWQgdHlwZSBzcGVjaWZpZXIuICBCZWhhdmVzIGluIHRoZSBzYW1lIHdheSBhcyByZXByKHgpCi0gICAgICAgICAgIGFuZCBzdHIoeCkgaWYgbm8gcHJlY2lzaW9uIGlzIGdpdmVuLCBlbHNlIGxpa2UgJ2cnLCBidXQgd2l0aAotICAgICAgICAgICBhdCBsZWFzdCBvbmUgZGlnaXQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICovCi0gICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUREX0RPVF8wOwotICAgICAgICB0eXBlID0gJ3InOwotICAgICAgICBkZWZhdWx0X3ByZWNpc2lvbiA9IDA7Ci0gICAgfQotCi0gICAgaWYgKHR5cGUgPT0gJ24nKQotICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bwotICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICB2YWwgPSBQeUZsb2F0X0FzRG91YmxlKHZhbHVlKTsKLSAgICBpZiAodmFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgaWYgKHR5cGUgPT0gJyUnKSB7Ci0gICAgICAgIHR5cGUgPSAnZic7Ci0gICAgICAgIHZhbCAqPSAxMDA7Ci0gICAgICAgIGFkZF9wY3QgPSAxOwotICAgIH0KLQotICAgIGlmIChwcmVjaXNpb24gPCAwKQotICAgICAgICBwcmVjaXNpb24gPSBkZWZhdWx0X3ByZWNpc2lvbjsKLSAgICBlbHNlIGlmICh0eXBlID09ICdyJykKLSAgICAgICAgdHlwZSA9ICdnJzsKLQotICAgIC8qIENhc3QgInR5cGUiLCBiZWNhdXNlIGlmIHdlJ3JlIGluIHVuaWNvZGUgd2UgbmVlZCB0byBwYXNzIGEKLSAgICAgICA4LWJpdCBjaGFyLiBUaGlzIGlzIHNhZmUsIGJlY2F1c2Ugd2UndmUgcmVzdHJpY3RlZCB3aGF0ICJ0eXBlIgotICAgICAgIGNhbiBiZS4gKi8KLSAgICBidWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcodmFsLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmxvYXRfdHlwZSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgbl9kaWdpdHMgPSBzdHJsZW4oYnVmKTsKLQotICAgIGlmIChhZGRfcGN0KSB7Ci0gICAgICAgIC8qIFdlIGtub3cgdGhhdCBidWYgaGFzIGEgdHJhaWxpbmcgemVybyAoc2luY2Ugd2UganVzdCBjYWxsZWQKLSAgICAgICAgICAgc3RybGVuKCkgb24gaXQpLCBhbmQgd2UgZG9uJ3QgdXNlIHRoYXQgZmFjdCBhbnkgbW9yZS4gU28gd2UKLSAgICAgICAgICAgY2FuIGp1c3Qgd3JpdGUgb3ZlciB0aGUgdHJhaWxpbmcgemVyby4gKi8KLSAgICAgICAgYnVmW25fZGlnaXRzXSA9ICclJzsKLSAgICAgICAgbl9kaWdpdHMgKz0gMTsKLSAgICB9Ci0KLSAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAotICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIHVuaWNvZGVfdG1wID0gKFB5X1VOSUNPREUqKVB5TWVtX01hbGxvYygobl9kaWdpdHMpKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgaWYgKHVuaWNvZGVfdG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBzdHJ0b3VuaWNvZGUodW5pY29kZV90bXAsIGJ1Ziwgbl9kaWdpdHMpOwotICAgIHAgPSB1bmljb2RlX3RtcDsKLSNlbHNlCi0gICAgcCA9IGJ1ZjsKLSNlbmRpZgotCi0gICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKLSAgICAgICBhbmQgc2tpcCBpdCAqLwotICAgIGlmICgqcCA9PSAnLScpIHsKLSAgICAgICAgc2lnbl9jaGFyID0gKnA7Ci0gICAgICAgICsrcDsKLSAgICAgICAgLS1uX2RpZ2l0czsKLSAgICB9Ci0KLSAgICAvKiBEZXRlcm1pbmUgaWYgd2UgaGF2ZSBhbnkgInJlbWFpbmRlciIgKGFmdGVyIHRoZSBkaWdpdHMsIG1pZ2h0IGluY2x1ZGUKLSAgICAgICBkZWNpbWFsIG9yIGV4cG9uZW50IG9yIGJvdGggKG9yIG5laXRoZXIpKSAqLwotICAgIHBhcnNlX251bWJlcihwLCBuX2RpZ2l0cywgJm5fcmVtYWluZGVyLCAmaGFzX2RlY2ltYWwpOwotCi0gICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLwotICAgIGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/Ci0gICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6Ci0gICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAotICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKTsKLQotICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KLSAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCAwLCBzaWduX2NoYXIsIHAsIG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9yZW1haW5kZXIsIGhhc19kZWNpbWFsLCAmbG9jYWxlLCBmb3JtYXQpOwotCi0gICAgLyogQWxsb2NhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICByZXN1bHQgPSBTVFJJTkdMSUJfTkVXKE5VTEwsIG5fdG90YWwpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogUG9wdWxhdGUgdGhlIG1lbW9yeS4gKi8KLSAgICBmaWxsX251bWJlcihTVFJJTkdMSUJfU1RSKHJlc3VsdCksICZzcGVjLCBwLCBuX2RpZ2l0cywgTlVMTCwKLSAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsICZsb2NhbGUsCi0gICAgICAgICAgICAgICAgMCk7Ci0KLWRvbmU6Ci0gICAgUHlNZW1fRnJlZShidWYpOwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgUHlNZW1fRnJlZSh1bmljb2RlX3RtcCk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9GTE9BVCAqLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoqKioqKioqKioqIGNvbXBsZXggZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBGT1JNQVRfQ09NUExFWAotCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQpCi17Ci0gICAgZG91YmxlIHJlOwotICAgIGRvdWJsZSBpbTsKLSAgICBjaGFyICpyZV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KLSAgICBjaGFyICppbV9idWYgPSBOVUxMOyAgICAgICAvKiBidWZmZXIgcmV0dXJuZWQgZnJvbSBQeU9TX2RvdWJsZV90b19zdHJpbmcgKi8KLQotICAgIEludGVybmFsRm9ybWF0U3BlYyB0bXBfZm9ybWF0ID0gKmZvcm1hdDsKLSAgICBQeV9zc2l6ZV90IG5fcmVfZGlnaXRzOwotICAgIFB5X3NzaXplX3Qgbl9pbV9kaWdpdHM7Ci0gICAgUHlfc3NpemVfdCBuX3JlX3JlbWFpbmRlcjsKLSAgICBQeV9zc2l6ZV90IG5faW1fcmVtYWluZGVyOwotICAgIFB5X3NzaXplX3Qgbl9yZV90b3RhbDsKLSAgICBQeV9zc2l6ZV90IG5faW1fdG90YWw7Ci0gICAgaW50IHJlX2hhc19kZWNpbWFsOwotICAgIGludCBpbV9oYXNfZGVjaW1hbDsKLSAgICBQeV9zc2l6ZV90IHByZWNpc2lvbiA9IGZvcm1hdC0+cHJlY2lzaW9uOwotICAgIFB5X3NzaXplX3QgZGVmYXVsdF9wcmVjaXNpb24gPSA2OwotICAgIFNUUklOR0xJQl9DSEFSIHR5cGUgPSBmb3JtYXQtPnR5cGU7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnBfcmU7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnBfaW07Ci0gICAgTnVtYmVyRmllbGRXaWR0aHMgcmVfc3BlYzsKLSAgICBOdW1iZXJGaWVsZFdpZHRocyBpbV9zcGVjOwotICAgIGludCBmbGFncyA9IDA7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7Ci0gICAgU1RSSU5HTElCX0NIQVIgcmVfc2lnbl9jaGFyID0gJ1wwJzsKLSAgICBTVFJJTkdMSUJfQ0hBUiBpbV9zaWduX2NoYXIgPSAnXDAnOwotICAgIGludCByZV9mbG9hdF90eXBlOyAvKiBVc2VkIHRvIHNlZSBpZiB3ZSBoYXZlIGEgbmFuLCBpbmYsIG9yIHJlZ3VsYXIgZmxvYXQuICovCi0gICAgaW50IGltX2Zsb2F0X3R5cGU7Ci0gICAgaW50IGFkZF9wYXJlbnMgPSAwOwotICAgIGludCBza2lwX3JlID0gMDsKLSAgICBQeV9zc2l6ZV90IGxwYWQ7Ci0gICAgUHlfc3NpemVfdCBycGFkOwotICAgIFB5X3NzaXplX3QgdG90YWw7Ci0KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIFB5X1VOSUNPREUgKnJlX3VuaWNvZGVfdG1wID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICppbV91bmljb2RlX3RtcCA9IE5VTEw7Ci0jZW5kaWYKLQotICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKLSAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KLSAgICBMb2NhbGVJbmZvIGxvY2FsZTsKLQotICAgIC8qIFplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZC4gKi8KLSAgICBpZiAoZm9ybWF0LT5maWxsX2NoYXIgPT0gJzAnKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlplcm8gcGFkZGluZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBOZWl0aGVyIGlzICc9JyBhbGlnbm1lbnQgLiAqLwotICAgIGlmIChmb3JtYXQtPmFsaWduID09ICc9JykgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICInPScgYWxpZ25tZW50IGZsYWcgaXMgbm90IGFsbG93ZWQgaW4gY29tcGxleCBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgcmUgPSBQeUNvbXBsZXhfUmVhbEFzRG91YmxlKHZhbHVlKTsKLSAgICBpZiAocmUgPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaW0gPSBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlKHZhbHVlKTsKLSAgICBpZiAoaW0gPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCi0gICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOwotCi0gICAgaWYgKHR5cGUgPT0gJ1wwJykgewotICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiBTaG91bGQgYmUgbGlrZSBzdHIoc2VsZikuICovCi0gICAgICAgIHR5cGUgPSAncic7Ci0gICAgICAgIGRlZmF1bHRfcHJlY2lzaW9uID0gMDsKLSAgICAgICAgaWYgKHJlID09IDAuMCAmJiBjb3B5c2lnbigxLjAsIHJlKSA9PSAxLjApCi0gICAgICAgICAgICBza2lwX3JlID0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYWRkX3BhcmVucyA9IDE7Ci0gICAgfQotCi0gICAgaWYgKHR5cGUgPT0gJ24nKQotICAgICAgICAvKiAnbicgaXMgdGhlIHNhbWUgYXMgJ2cnLCBleGNlcHQgZm9yIHRoZSBsb2NhbGUgdXNlZCB0bwotICAgICAgICAgICBmb3JtYXQgdGhlIHJlc3VsdC4gV2UgdGFrZSBjYXJlIG9mIHRoYXQgbGF0ZXIuICovCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICBpZiAocHJlY2lzaW9uIDwgMCkKLSAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247Ci0gICAgZWxzZSBpZiAodHlwZSA9PSAncicpCi0gICAgICAgIHR5cGUgPSAnZyc7Ci0KLSAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCi0gICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKLSAgICAgICBjYW4gYmUuICovCi0gICAgcmVfYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHJlLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVfZmxvYXRfdHlwZSk7Ci0gICAgaWYgKHJlX2J1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgaW1fYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKGltLCAoY2hhcil0eXBlLCBwcmVjaXNpb24sIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1fZmxvYXRfdHlwZSk7Ci0gICAgaWYgKGltX2J1ZiA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICBuX3JlX2RpZ2l0cyA9IHN0cmxlbihyZV9idWYpOwotICAgIG5faW1fZGlnaXRzID0gc3RybGVuKGltX2J1Zik7Ci0KLSAgICAvKiBTaW5jZSB0aGVyZSBpcyBubyB1bmljb2RlIHZlcnNpb24gb2YgUHlPU19kb3VibGVfdG9fc3RyaW5nLAotICAgICAgIGp1c3QgdXNlIHRoZSA4IGJpdCB2ZXJzaW9uIGFuZCB0aGVuIGNvbnZlcnQgdG8gdW5pY29kZS4gKi8KLSNpZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQotICAgIHJlX3VuaWNvZGVfdG1wID0gKFB5X1VOSUNPREUqKVB5TWVtX01hbGxvYygobl9yZV9kaWdpdHMpKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgaWYgKHJlX3VuaWNvZGVfdG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBzdHJ0b3VuaWNvZGUocmVfdW5pY29kZV90bXAsIHJlX2J1Ziwgbl9yZV9kaWdpdHMpOwotICAgIHBfcmUgPSByZV91bmljb2RlX3RtcDsKLQotICAgIGltX3VuaWNvZGVfdG1wID0gKFB5X1VOSUNPREUqKVB5TWVtX01hbGxvYygobl9pbV9kaWdpdHMpKnNpemVvZihQeV9VTklDT0RFKSk7Ci0gICAgaWYgKGltX3VuaWNvZGVfdG1wID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLSAgICBzdHJ0b3VuaWNvZGUoaW1fdW5pY29kZV90bXAsIGltX2J1Ziwgbl9pbV9kaWdpdHMpOwotICAgIHBfaW0gPSBpbV91bmljb2RlX3RtcDsKLSNlbHNlCi0gICAgcF9yZSA9IHJlX2J1ZjsKLSAgICBwX2ltID0gaW1fYnVmOwotI2VuZGlmCi0KLSAgICAvKiBJcyBhIHNpZ24gY2hhcmFjdGVyIHByZXNlbnQgaW4gdGhlIG91dHB1dD8gIElmIHNvLCByZW1lbWJlciBpdAotICAgICAgIGFuZCBza2lwIGl0ICovCi0gICAgaWYgKCpwX3JlID09ICctJykgewotICAgICAgICByZV9zaWduX2NoYXIgPSAqcF9yZTsKLSAgICAgICAgKytwX3JlOwotICAgICAgICAtLW5fcmVfZGlnaXRzOwotICAgIH0KLSAgICBpZiAoKnBfaW0gPT0gJy0nKSB7Ci0gICAgICAgIGltX3NpZ25fY2hhciA9ICpwX2ltOwotICAgICAgICArK3BfaW07Ci0gICAgICAgIC0tbl9pbV9kaWdpdHM7Ci0gICAgfQotCi0gICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCi0gICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KLSAgICBwYXJzZV9udW1iZXIocF9yZSwgbl9yZV9kaWdpdHMsICZuX3JlX3JlbWFpbmRlciwgJnJlX2hhc19kZWNpbWFsKTsKLSAgICBwYXJzZV9udW1iZXIocF9pbSwgbl9pbV9kaWdpdHMsICZuX2ltX3JlbWFpbmRlciwgJmltX2hhc19kZWNpbWFsKTsKLQotICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KLSAgICBnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKLSAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPwotICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgotICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKLSAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSk7Ci0KLSAgICAvKiBUdXJuIG9mZiBhbnkgcGFkZGluZy4gV2UnbGwgZG8gaXQgbGF0ZXIgYWZ0ZXIgd2UndmUgY29tcG9zZWQKLSAgICAgICB0aGUgbnVtYmVycyB3aXRob3V0IHBhZGRpbmcuICovCi0gICAgdG1wX2Zvcm1hdC5maWxsX2NoYXIgPSAnXDAnOwotICAgIHRtcF9mb3JtYXQuYWxpZ24gPSAnPCc7Ci0gICAgdG1wX2Zvcm1hdC53aWR0aCA9IC0xOwotCi0gICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLwotICAgIG5fcmVfdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnJlX3NwZWMsIDAsIHJlX3NpZ25fY2hhciwgcF9yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fcmVfZGlnaXRzLCBuX3JlX3JlbWFpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCk7Ci0KLSAgICAvKiBTYW1lIGZvcm1hdHRpbmcsIGJ1dCBhbHdheXMgaW5jbHVkZSBhIHNpZ24sIHVubGVzcyB0aGUgcmVhbCBwYXJ0IGlzCi0gICAgICogZ29pbmcgdG8gYmUgb21pdHRlZCwgaW4gd2hpY2ggY2FzZSB3ZSB1c2Ugd2hhdGV2ZXIgc2lnbiBjb252ZW50aW9uIHdhcwotICAgICAqIHJlcXVlc3RlZCBieSB0aGUgb3JpZ2luYWwgZm9ybWF0LiAqLwotICAgIGlmICghc2tpcF9yZSkKLSAgICAgICAgdG1wX2Zvcm1hdC5zaWduID0gJysnOwotICAgIG5faW1fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJmltX3NwZWMsIDAsIGltX3NpZ25fY2hhciwgcF9pbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5faW1fZGlnaXRzLCBuX2ltX3JlbWFpbmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCk7Ci0KLSAgICBpZiAoc2tpcF9yZSkKLSAgICAgICAgbl9yZV90b3RhbCA9IDA7Ci0KLSAgICAvKiBBZGQgMSBmb3IgdGhlICdqJywgYW5kIG9wdGlvbmFsbHkgMiBmb3IgcGFyZW5zLiAqLwotICAgIGNhbGNfcGFkZGluZyhuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKLSAgICAgICAgICAgICAgICAgZm9ybWF0LT53aWR0aCwgZm9ybWF0LT5hbGlnbiwgJmxwYWQsICZycGFkLCAmdG90YWwpOwotCi0gICAgcmVzdWx0ID0gU1RSSU5HTElCX05FVyhOVUxMLCB0b3RhbCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiBQb3B1bGF0ZSB0aGUgbWVtb3J5LiBGaXJzdCwgdGhlIHBhZGRpbmcuICovCi0gICAgcCA9IGZpbGxfcGFkZGluZyhTVFJJTkdMSUJfU1RSKHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICBuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKLSAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCi0gICAgICAgICAgICAgICAgICAgICBscGFkLCBycGFkKTsKLQotICAgIGlmIChhZGRfcGFyZW5zKQotICAgICAgICAqcCsrID0gJygnOwotCi0gICAgaWYgKCFza2lwX3JlKSB7Ci0gICAgICAgIGZpbGxfbnVtYmVyKHAsICZyZV9zcGVjLCBwX3JlLCBuX3JlX2RpZ2l0cywgTlVMTCwgMCwgJmxvY2FsZSwgMCk7Ci0gICAgICAgIHAgKz0gbl9yZV90b3RhbDsKLSAgICB9Ci0gICAgZmlsbF9udW1iZXIocCwgJmltX3NwZWMsIHBfaW0sIG5faW1fZGlnaXRzLCBOVUxMLCAwLCAmbG9jYWxlLCAwKTsKLSAgICBwICs9IG5faW1fdG90YWw7Ci0gICAgKnArKyA9ICdqJzsKLQotICAgIGlmIChhZGRfcGFyZW5zKQotICAgICAgICAqcCsrID0gJyknOwotCi1kb25lOgotICAgIFB5TWVtX0ZyZWUocmVfYnVmKTsKLSAgICBQeU1lbV9GcmVlKGltX2J1Zik7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKLSAgICBQeU1lbV9GcmVlKHJlX3VuaWNvZGVfdG1wKTsKLSAgICBQeU1lbV9GcmVlKGltX3VuaWNvZGVfdG1wKTsKLSNlbmRpZgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0NPTVBMRVggKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiBidWlsdCBpbiBmb3JtYXR0ZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotUHlPYmplY3QgKgotRk9STUFUX1NUUklORyhQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdzJywgJzwnKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdzJzoKLSAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhIHN0cmluZy4gIGRvIHRoZSBmb3JtYXR0aW5nICovCi0gICAgICAgIHJlc3VsdCA9IGZvcm1hdF9zdHJpbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiBkZWZpbmVkIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVAotc3RhdGljIFB5T2JqZWN0KgotZm9ybWF0X2ludF9vcl9sb25nKFB5T2JqZWN0KiBvYmosCi0gICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgIEludE9yTG9uZ1RvU3RyaW5nIHRvc3RyaW5nKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMOwotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ2QnLCAnPicpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCi0gICAgc3dpdGNoIChmb3JtYXQudHlwZSkgewotICAgIGNhc2UgJ2InOgotICAgIGNhc2UgJ2MnOgotICAgIGNhc2UgJ2QnOgotICAgIGNhc2UgJ28nOgotICAgIGNhc2UgJ3gnOgotICAgIGNhc2UgJ1gnOgotICAgIGNhc2UgJ24nOgotICAgICAgICAvKiBubyB0eXBlIGNvbnZlcnNpb24gbmVlZGVkLCBhbHJlYWR5IGFuIGludCAob3IgbG9uZykuICBkbwotICAgICAgICAgICB0aGUgZm9ybWF0dGluZyAqLwotICAgICAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2ludF9vcl9sb25nX2ludGVybmFsKG9iaiwgJmZvcm1hdCwgdG9zdHJpbmcpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgJ2UnOgotICAgIGNhc2UgJ0UnOgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgotICAgIGNhc2UgJ2cnOgotICAgIGNhc2UgJ0cnOgotICAgIGNhc2UgJyUnOgotICAgICAgICAvKiBjb252ZXJ0IHRvIGZsb2F0ICovCi0gICAgICAgIHRtcCA9IFB5TnVtYmVyX0Zsb2F0KG9iaik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2Zsb2F0X2ludGVybmFsKHRtcCwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2VuZGlmIC8qIEZPUk1BVF9MT05HIHx8IGRlZmluZWQgRk9STUFUX0lOVCAqLwotCi0jaWZkZWYgRk9STUFUX0xPTkcKLS8qIE5lZWQgdG8gZGVmaW5lIGxvbmdfZm9ybWF0IGFzIGEgZnVuY3Rpb24gdGhhdCB3aWxsIGNvbnZlcnQgYSBsb25nCi0gICB0byBhIHN0cmluZy4gIEluIDMuMCwgX1B5TG9uZ19Gb3JtYXQgaGFzIHRoZSBjb3JyZWN0IHNpZ25hdHVyZS4gIEluCi0gICAyLngsIHdlIG5lZWQgdG8gZnVkZ2UgYSBmZXcgcGFyYW1ldGVycyAqLwotI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4MDMwMDAwMDAKLSNkZWZpbmUgbG9uZ19mb3JtYXQgX1B5TG9uZ19Gb3JtYXQKLSNlbHNlCi1zdGF0aWMgUHlPYmplY3QqCi1sb25nX2Zvcm1hdChQeU9iamVjdCogdmFsdWUsIGludCBiYXNlKQotewotICAgIC8qIENvbnZlcnQgdG8gYmFzZSwgZG9uJ3QgYWRkIHRyYWlsaW5nICdMJywgYW5kIHVzZSB0aGUgbmV3IG9jdGFsCi0gICAgICAgZm9ybWF0LiBXZSBhbHJlYWR5IGtub3cgdGhpcyBpcyBhIGxvbmcgb2JqZWN0ICovCi0gICAgYXNzZXJ0KFB5TG9uZ19DaGVjayh2YWx1ZSkpOwotICAgIC8qIGNvbnZlcnQgdG8gYmFzZSwgZG9uJ3QgYWRkICdMJywgYW5kIHVzZSB0aGUgbmV3IG9jdGFsIGZvcm1hdCAqLwotICAgIHJldHVybiBfUHlMb25nX0Zvcm1hdCh2YWx1ZSwgYmFzZSwgMCwgMSk7Ci19Ci0jZW5kaWYKLQotUHlPYmplY3QgKgotRk9STUFUX0xPTkcoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIHJldHVybiBmb3JtYXRfaW50X29yX2xvbmcob2JqLCBmb3JtYXRfc3BlYywgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19mb3JtYXQpOwotfQotI2VuZGlmIC8qIEZPUk1BVF9MT05HICovCi0KLSNpZmRlZiBGT1JNQVRfSU5UCi0vKiB0aGlzIGlzIG9ubHkgdXNlZCBmb3IgMi54LCBub3QgMy4wICovCi1zdGF0aWMgUHlPYmplY3QqCi1pbnRfZm9ybWF0KFB5T2JqZWN0KiB2YWx1ZSwgaW50IGJhc2UpCi17Ci0gICAgLyogQ29udmVydCB0byBiYXNlLCBhbmQgdXNlIHRoZSBuZXcgb2N0YWwgZm9ybWF0LiBXZSBhbHJlYWR5Ci0gICAgICAga25vdyB0aGlzIGlzIGFuIGludCBvYmplY3QgKi8KLSAgICBhc3NlcnQoUHlJbnRfQ2hlY2sodmFsdWUpKTsKLSAgICByZXR1cm4gX1B5SW50X0Zvcm1hdCgoUHlJbnRPYmplY3QqKXZhbHVlLCBiYXNlLCAxKTsKLX0KLQotUHlPYmplY3QgKgotRk9STUFUX0lOVChQeU9iamVjdCAqb2JqLAotICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIHJldHVybiBmb3JtYXRfaW50X29yX2xvbmcob2JqLCBmb3JtYXRfc3BlYywgZm9ybWF0X3NwZWNfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X2Zvcm1hdCk7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0lOVCAqLwotCi0jaWZkZWYgRk9STUFUX0ZMT0FUCi1QeU9iamVjdCAqCi1GT1JNQVRfRkxPQVQoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgUHlfc3NpemVfdCBmb3JtYXRfc3BlY19sZW4pCi17Ci0gICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7Ci0gICAgSW50ZXJuYWxGb3JtYXRTcGVjIGZvcm1hdDsKLQotICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCi0gICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLwotICAgIGlmIChmb3JtYXRfc3BlY19sZW4gPT0gMCkgewotICAgICAgICByZXN1bHQgPSBTVFJJTkdMSUJfVE9TVFIob2JqKTsKLSAgICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLwotICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnXDAnLCAnPicpKQotICAgICAgICBnb3RvIGRvbmU7Ci0KLSAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCi0gICAgc3dpdGNoIChmb3JtYXQudHlwZSkgewotICAgIGNhc2UgJ1wwJzogLyogTm8gZm9ybWF0IGNvZGU6IGxpa2UgJ2cnLCBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbC4gKi8KLSAgICBjYXNlICdlJzoKLSAgICBjYXNlICdFJzoKLSAgICBjYXNlICdmJzoKLSAgICBjYXNlICdGJzoKLSAgICBjYXNlICdnJzoKLSAgICBjYXNlICdHJzoKLSAgICBjYXNlICduJzoKLSAgICBjYXNlICclJzoKLSAgICAgICAgLyogbm8gY29udmVyc2lvbiwgYWxyZWFkeSBhIGZsb2F0LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2Zsb2F0X2ludGVybmFsKG9iaiwgJmZvcm1hdCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgLyogdW5rbm93biAqLwotICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi1kb25lOgotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYgLyogRk9STUFUX0ZMT0FUICovCi0KLSNpZmRlZiBGT1JNQVRfQ09NUExFWAotUHlPYmplY3QgKgotRk9STUFUX0NPTVBMRVgoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZm9ybWF0X3NwZWNfbGVuKQotewotICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7Ci0KLSAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQotICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KLSAgICBpZiAoZm9ybWF0X3NwZWNfbGVuID09IDApIHsKLSAgICAgICAgcmVzdWx0ID0gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KLSAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLwotICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKLSAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCi0gICAgY2FzZSAnZSc6Ci0gICAgY2FzZSAnRSc6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2FzZSAnRic6Ci0gICAgY2FzZSAnZyc6Ci0gICAgY2FzZSAnRyc6Ci0gICAgY2FzZSAnbic6Ci0gICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBjb21wbGV4LiAgZG8gdGhlIGZvcm1hdHRpbmcgKi8KLSAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwob2JqLCAmZm9ybWF0KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICAvKiB1bmtub3duICovCi0gICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLWRvbmU6Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbmRpZiAvKiBGT1JNQVRfQ09NUExFWCAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oIGIvT2JqZWN0cy9zdHJpbmdsaWIvbG9jYWxldXRpbC5oCmluZGV4IGY1NDgxMzMuLjZlMmYwNzMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL2xvY2FsZXV0aWwuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi9sb2NhbGV1dGlsLmgKQEAgLTEsMjEgKzEsMTkgQEAKIC8qIHN0cmluZ2xpYjogbG9jYWxlIHJlbGF0ZWQgaGVscGVycyBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9MT0NBTEVVVElMX0gKLSNkZWZpbmUgU1RSSU5HTElCX0xPQ0FMRVVUSUxfSAotCiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAKLSNkZWZpbmUgTUFYKHgsIHkpICgoeCkgPCAoeSkgPyAoeSkgOiAoeCkpCi0jZGVmaW5lIE1JTih4LCB5KSAoKHgpIDwgKHkpID8gKHgpIDogKHkpKQorI2lmbmRlZiBTVFJJTkdMSUJfSVNfVU5JQ09ERQorIyAgIGVycm9yICJsb2NhbGV1dGlsIGlzIHNwZWNpZmljIHRvIFVuaWNvZGUiCisjZW5kaWYKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nOwogICAgIGNoYXIgcHJldmlvdXM7CiAgICAgUHlfc3NpemVfdCBpOyAvKiBXaGVyZSB3ZSdyZSBjdXJyZW50bHkgcG9pbnRpbmcgaW4gZ3JvdXBpbmcuICovCi19IEdyb3VwR2VuZXJhdG9yOworfSBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpOwogCiBzdGF0aWMgdm9pZAotX0dyb3VwR2VuZXJhdG9yX2luaXQoR3JvdXBHZW5lcmF0b3IgKnNlbGYsIGNvbnN0IGNoYXIgKmdyb3VwaW5nKQorU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX2luaXQpKFNUUklOR0xJQihHcm91cEdlbmVyYXRvcikgKnNlbGYsIGNvbnN0IGNoYXIgKmdyb3VwaW5nKQogewogICAgIHNlbGYtPmdyb3VwaW5nID0gZ3JvdXBpbmc7CiAgICAgc2VsZi0+aSA9IDA7CkBAIC0yNCw3ICsyMiw3IEBACiAKIC8qIFJldHVybnMgdGhlIG5leHQgZ3JvdXBpbmcsIG9yIDAgdG8gc2lnbmlmeSBlbmQuICovCiBzdGF0aWMgUHlfc3NpemVfdAotX0dyb3VwR2VuZXJhdG9yX25leHQoR3JvdXBHZW5lcmF0b3IgKnNlbGYpCitTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3JfbmV4dCkoU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yKSAqc2VsZikKIHsKICAgICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgcmVhbGx5IGRvIG11Y2ggZXJyb3IgY2hlY2tpbmcgaGVyZS4gSWYgYQogICAgICAgIGdyb3VwaW5nIHN0cmluZyBjb250YWlucyBqdXN0IENIQVJfTUFYLCBmb3IgZXhhbXBsZSwgdGhlbiBqdXN0CkBAIC00OCwyNyArNDYsMTggQEAKIC8qIEZpbGwgaW4gc29tZSBkaWdpdHMsIGxlYWRpbmcgemVyb3MsIGFuZCB0aG91c2FuZHMgc2VwYXJhdG9yLiBBbGwKICAgIGFyZSBvcHRpb25hbCwgZGVwZW5kaW5nIG9uIHdoZW4gd2UncmUgY2FsbGVkLiAqLwogc3RhdGljIHZvaWQKLWZpbGwoU1RSSU5HTElCX0NIQVIgKipkaWdpdHNfZW5kLCBTVFJJTkdMSUJfQ0hBUiAqKmJ1ZmZlcl9lbmQsCi0gICAgIFB5X3NzaXplX3Qgbl9jaGFycywgUHlfc3NpemVfdCBuX3plcm9zLCBjb25zdCBjaGFyKiB0aG91c2FuZHNfc2VwLAorU1RSSU5HTElCKGZpbGwpKFNUUklOR0xJQl9DSEFSICoqZGlnaXRzX2VuZCwgU1RSSU5HTElCX0NIQVIgKipidWZmZXJfZW5kLAorICAgICBQeV9zc2l6ZV90IG5fY2hhcnMsIFB5X3NzaXplX3Qgbl96ZXJvcywgU1RSSU5HTElCX0NIQVIqIHRob3VzYW5kc19zZXAsCiAgICAgIFB5X3NzaXplX3QgdGhvdXNhbmRzX3NlcF9sZW4pCiB7Ci0jaWYgU1RSSU5HTElCX0lTX1VOSUNPREUKICAgICBQeV9zc2l6ZV90IGk7Ci0jZW5kaWYKIAogICAgIGlmICh0aG91c2FuZHNfc2VwKSB7CiAgICAgICAgICpidWZmZXJfZW5kIC09IHRob3VzYW5kc19zZXBfbGVuOwogCiAgICAgICAgIC8qIENvcHkgdGhlIHRob3VzYW5kc19zZXAgY2hhcnMgaW50byB0aGUgYnVmZmVyLiAqLwotI2lmIFNUUklOR0xJQl9JU19VTklDT0RFCi0gICAgICAgIC8qIENvbnZlcnQgZnJvbSB0aGUgY2hhcidzIG9mIHRoZSB0aG91c2FuZHNfc2VwIGZyb20KLSAgICAgICAgICAgdGhlIGxvY2FsZSBpbnRvIHVuaWNvZGUuICovCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aG91c2FuZHNfc2VwX2xlbjsgKytpKQotICAgICAgICAgICAgKCpidWZmZXJfZW5kKVtpXSA9IHRob3VzYW5kc19zZXBbaV07Ci0jZWxzZQotICAgICAgICAvKiBObyBjb252ZXJzaW9uLCBqdXN0IG1lbWNweSB0aGUgdGhvdXNhbmRzX3NlcC4gKi8KLSAgICAgICAgbWVtY3B5KCpidWZmZXJfZW5kLCB0aG91c2FuZHNfc2VwLCB0aG91c2FuZHNfc2VwX2xlbik7Ci0jZW5kaWYKKyAgICAgICAgbWVtY3B5KCpidWZmZXJfZW5kLCB0aG91c2FuZHNfc2VwLAorICAgICAgICAgICAgICAgdGhvdXNhbmRzX3NlcF9sZW4gKiBTVFJJTkdMSUJfU0laRU9GX0NIQVIpOwogICAgIH0KIAogICAgICpidWZmZXJfZW5kIC09IG5fY2hhcnM7CkBAIC03NiwxMSArNjUsMTIgQEAKICAgICBtZW1jcHkoKmJ1ZmZlcl9lbmQsICpkaWdpdHNfZW5kLCBuX2NoYXJzICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7CiAKICAgICAqYnVmZmVyX2VuZCAtPSBuX3plcm9zOwotICAgIFNUUklOR0xJQl9GSUxMKCpidWZmZXJfZW5kLCAnMCcsIG5femVyb3MpOworICAgIGZvciAoaSA9IDA7IGkgPCBuX3plcm9zOyBpKyspCisgICAgICAgICgqYnVmZmVyX2VuZClbaV0gPSAnMCc7CiB9CiAKIC8qKgotICogX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nOgorICogSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmc6CiAgKiBAYnVmZmVyOiBBIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgc3RyaW5nLgogICogQG5fYnVmZmVyOiBOdW1iZXIgb2YgY2hhcmFjdGVycyBpbiBAYnVmZmVyLgogICogQGRpZ2l0czogQSBwb2ludGVyIHRvIHRoZSBkaWdpdHMgd2UncmUgcmVhZGluZyBmcm9tLiBJZiBjb3VudApAQCAtMTA5LDE0ICs5OSwxNiBAQAogICogQXMgY2xvc2VseSBhcyBwb3NzaWJsZSwgdGhpcyBjb2RlIG1pbWljcyB0aGUgbG9naWMgaW4gZGVjaW1hbC5weSdzCiAgICAgX2luc2VydF90aG91c2FuZHNfc2VwKCkuCiAgKiovCi1QeV9zc2l6ZV90Ci1fUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoU1RSSU5HTElCX0NIQVIgKmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpncm91cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0aG91c2FuZHNfc2VwKQorc3RhdGljIFB5X3NzaXplX3QKK1NUUklOR0xJQihJbnNlcnRUaG91c2FuZHNHcm91cGluZykoCisgICAgU1RSSU5HTElCX0NIQVIgKmJ1ZmZlciwKKyAgICBQeV9zc2l6ZV90IG5fYnVmZmVyLAorICAgIFNUUklOR0xJQl9DSEFSICpkaWdpdHMsCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0cywKKyAgICBQeV9zc2l6ZV90IG1pbl93aWR0aCwKKyAgICBjb25zdCBjaGFyICpncm91cGluZywKKyAgICBTVFJJTkdMSUJfQ0hBUiAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuKQogewogICAgIFB5X3NzaXplX3QgY291bnQgPSAwOwogICAgIFB5X3NzaXplX3Qgbl96ZXJvczsKQEAgLTEyOCwyMyArMTIwLDIyIEBACiAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0c19lbmQgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbDsKICAgICBQeV9zc2l6ZV90IG5fY2hhcnM7Ci0gICAgUHlfc3NpemVfdCB0aG91c2FuZHNfc2VwX2xlbiA9IHN0cmxlbih0aG91c2FuZHNfc2VwKTsKICAgICBQeV9zc2l6ZV90IHJlbWFpbmluZyA9IG5fZGlnaXRzOyAvKiBOdW1iZXIgb2YgY2hhcnMgcmVtYWluaW5nIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbG9va2VkIGF0ICovCiAgICAgLyogQSBnZW5lcmF0b3IgdGhhdCByZXR1cm5zIGFsbCBvZiB0aGUgZ3JvdXBpbmcgd2lkdGhzLCB1bnRpbCBpdAogICAgICAgIHJldHVybnMgMC4gKi8KLSAgICBHcm91cEdlbmVyYXRvciBncm91cGdlbjsKLSAgICBfR3JvdXBHZW5lcmF0b3JfaW5pdCgmZ3JvdXBnZW4sIGdyb3VwaW5nKTsKKyAgICBTVFJJTkdMSUIoR3JvdXBHZW5lcmF0b3IpIGdyb3VwZ2VuOworICAgIFNUUklOR0xJQihHcm91cEdlbmVyYXRvcl9pbml0KSgmZ3JvdXBnZW4sIGdyb3VwaW5nKTsKIAogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgYnVmZmVyX2VuZCA9IGJ1ZmZlciArIG5fYnVmZmVyOwogICAgICAgICBkaWdpdHNfZW5kID0gZGlnaXRzICsgbl9kaWdpdHM7CiAgICAgfQogCi0gICAgd2hpbGUgKChsID0gX0dyb3VwR2VuZXJhdG9yX25leHQoJmdyb3VwZ2VuKSkgPiAwKSB7Ci0gICAgICAgIGwgPSBNSU4obCwgTUFYKE1BWChyZW1haW5pbmcsIG1pbl93aWR0aCksIDEpKTsKLSAgICAgICAgbl96ZXJvcyA9IE1BWCgwLCBsIC0gcmVtYWluaW5nKTsKLSAgICAgICAgbl9jaGFycyA9IE1BWCgwLCBNSU4ocmVtYWluaW5nLCBsKSk7CisgICAgd2hpbGUgKChsID0gU1RSSU5HTElCKEdyb3VwR2VuZXJhdG9yX25leHQpKCZncm91cGdlbikpID4gMCkgeworICAgICAgICBsID0gUHlfTUlOKGwsIFB5X01BWChQeV9NQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKSk7CisgICAgICAgIG5femVyb3MgPSBQeV9NQVgoMCwgbCAtIHJlbWFpbmluZyk7CisgICAgICAgIG5fY2hhcnMgPSBQeV9NQVgoMCwgUHlfTUlOKHJlbWFpbmluZywgbCkpOwogCiAgICAgICAgIC8qIFVzZSBuX3plcm8gemVybydzIGFuZCBuX2NoYXJzIGNoYXJzICovCiAKQEAgLTE1Myw3ICsxNDQsNyBAQAogCiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIC8qIENvcHkgaW50byB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgIGZpbGwoJmRpZ2l0c19lbmQsICZidWZmZXJfZW5kLCBuX2NoYXJzLCBuX3plcm9zLAorICAgICAgICAgICAgU1RSSU5HTElCKGZpbGwpKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKICAgICAgICAgICAgICAgICAgdXNlX3NlcGFyYXRvciA/IHRob3VzYW5kc19zZXAgOiBOVUxMLCB0aG91c2FuZHNfc2VwX2xlbik7CiAgICAgICAgIH0KIApAQCAtMTcyLDQxICsxNjMsMTggQEAKICAgICBpZiAoIWxvb3BfYnJva2VuKSB7CiAgICAgICAgIC8qIFdlIGxlZnQgdGhlIGxvb3Agd2l0aG91dCB1c2luZyBhIGJyZWFrIHN0YXRlbWVudC4gKi8KIAotICAgICAgICBsID0gTUFYKE1BWChyZW1haW5pbmcsIG1pbl93aWR0aCksIDEpOwotICAgICAgICBuX3plcm9zID0gTUFYKDAsIGwgLSByZW1haW5pbmcpOwotICAgICAgICBuX2NoYXJzID0gTUFYKDAsIE1JTihyZW1haW5pbmcsIGwpKTsKKyAgICAgICAgbCA9IFB5X01BWChQeV9NQVgocmVtYWluaW5nLCBtaW5fd2lkdGgpLCAxKTsKKyAgICAgICAgbl96ZXJvcyA9IFB5X01BWCgwLCBsIC0gcmVtYWluaW5nKTsKKyAgICAgICAgbl9jaGFycyA9IFB5X01BWCgwLCBQeV9NSU4ocmVtYWluaW5nLCBsKSk7CiAKICAgICAgICAgLyogVXNlIG5femVybyB6ZXJvJ3MgYW5kIG5fY2hhcnMgY2hhcnMgKi8KICAgICAgICAgY291bnQgKz0gKHVzZV9zZXBhcmF0b3IgPyB0aG91c2FuZHNfc2VwX2xlbiA6IDApICsgbl96ZXJvcyArIG5fY2hhcnM7CiAgICAgICAgIGlmIChidWZmZXIpIHsKICAgICAgICAgICAgIC8qIENvcHkgaW50byB0aGUgb3V0cHV0IGJ1ZmZlci4gKi8KLSAgICAgICAgICAgIGZpbGwoJmRpZ2l0c19lbmQsICZidWZmZXJfZW5kLCBuX2NoYXJzLCBuX3plcm9zLAorICAgICAgICAgICAgU1RSSU5HTElCKGZpbGwpKCZkaWdpdHNfZW5kLCAmYnVmZmVyX2VuZCwgbl9jaGFycywgbl96ZXJvcywKICAgICAgICAgICAgICAgICAgdXNlX3NlcGFyYXRvciA/IHRob3VzYW5kc19zZXAgOiBOVUxMLCB0aG91c2FuZHNfc2VwX2xlbik7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGNvdW50OwogfQogCi0vKioKLSAqIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZToKLSAqIEBidWZmZXI6IEEgcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgYSBzdHJpbmcuCi0gKiBAbl9kaWdpdHM6IFRoZSBudW1iZXIgb2YgZGlnaXRzIGluIHRoZSBzdHJpbmcsIGluIHdoaWNoIHdlIHdhbnQKLSAqICAgICAgICAgICAgdG8gcHV0IHRoZSBncm91cGluZyBjaGFycy4KLSAqCi0gKiBSZWFkcyB0aGVlIGN1cnJlbnQgbG9jYWxlIGFuZCBjYWxscyBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoKS4KLSAqKi8KLVB5X3NzaXplX3QKLV9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZShTVFJJTkdMSUJfQ0hBUiAqYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0NIQVIgKmRpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5fZGlnaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWluX3dpZHRoKQotewotICAgICAgICBzdHJ1Y3QgbGNvbnYgKmxvY2FsZV9kYXRhID0gbG9jYWxlY29udigpOwotICAgICAgICBjb25zdCBjaGFyICpncm91cGluZyA9IGxvY2FsZV9kYXRhLT5ncm91cGluZzsKLSAgICAgICAgY29uc3QgY2hhciAqdGhvdXNhbmRzX3NlcCA9IGxvY2FsZV9kYXRhLT50aG91c2FuZHNfc2VwOwotCi0gICAgICAgIHJldHVybiBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoYnVmZmVyLCBuX2J1ZmZlciwgZGlnaXRzLCBuX2RpZ2l0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLCB0aG91c2FuZHNfc2VwKTsKLX0KLSNlbmRpZiAvKiBTVFJJTkdMSUJfTE9DQUxFVVRJTF9IICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9wYXJ0aXRpb24uaCBiL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oCmluZGV4IDAxNzBiZGQuLjQwY2I1MTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3BhcnRpdGlvbi5oCkBAIC0xLDE0ICsxLDExIEBACiAvKiBzdHJpbmdsaWI6IHBhcnRpdGlvbiBpbXBsZW1lbnRhdGlvbiAqLwogCi0jaWZuZGVmIFNUUklOR0xJQl9QQVJUSVRJT05fSAotI2RlZmluZSBTVFJJTkdMSUJfUEFSVElUSU9OX0gKLQogI2lmbmRlZiBTVFJJTkdMSUJfRkFTVFNFQVJDSF9ICiAjZXJyb3IgbXVzdCBpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgbW9kdWxlCiAjZW5kaWYKIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0KikKLXN0cmluZ2xpYl9wYXJ0aXRpb24oUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocGFydGl0aW9uKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCogc2VwX29iaiwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuKQpAQCAtMjUsNyArMjIsNyBAQAogICAgIGlmICghb3V0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyLCBzdHJfbGVuLCBzZXAsIHNlcF9sZW4sIC0xLCBGQVNUX1NFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKIAogICAgIGlmIChwb3MgPCAwKSB7CiAjaWYgU1RSSU5HTElCX01VVEFCTEUKQEAgLTU4LDcgKzU1LDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0KikKLXN0cmluZ2xpYl9ycGFydGl0aW9uKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJwYXJ0aXRpb24pKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QqIHNlcF9vYmosCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc2VwLCBQeV9zc2l6ZV90IHNlcF9sZW4pCkBAIC03NSw3ICs3Miw3IEBACiAgICAgaWYgKCFvdXQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcG9zID0gZmFzdHNlYXJjaChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CisgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIHN0cl9sZW4sIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CiAKICAgICBpZiAocG9zIDwgMCkgewogI2lmIFNUUklOR0xJQl9NVVRBQkxFCkBAIC0xMDcsNCArMTA0LDMgQEAKICAgICByZXR1cm4gb3V0OwogfQogCi0jZW5kaWYKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmggYi9PYmplY3RzL3N0cmluZ2xpYi9zcGxpdC5oCmluZGV4IDYwZTc3NjcuLjk0N2RkMjggMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3NwbGl0LmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvc3BsaXQuaApAQCAtMSw4ICsxLDUgQEAKIC8qIHN0cmluZ2xpYjogc3BsaXQgaW1wbGVtZW50YXRpb24gKi8KIAotI2lmbmRlZiBTVFJJTkdMSUJfU1BMSVRfSAotI2RlZmluZSBTVFJJTkdMSUJfU1BMSVRfSAotCiAjaWZuZGVmIFNUUklOR0xJQl9GQVNUU0VBUkNIX0gKICNlcnJvciBtdXN0IGluY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiIGJlZm9yZSBpbmNsdWRpbmcgdGhpcyBtb2R1bGUKICNlbmRpZgpAQCAtNTQsNyArNTEsNyBAQAogI2RlZmluZSBGSVhfUFJFQUxMT0NfU0laRShsaXN0KSBQeV9TSVpFKGxpc3QpID0gY291bnQKIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfc3BsaXRfd2hpdGVzcGFjZShQeU9iamVjdCogc3RyX29iaiwKK1NUUklOR0xJQihzcGxpdF93aGl0ZXNwYWNlKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CkBAIC0xMDIsNyArOTksNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9zcGxpdF9jaGFyKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0X2NoYXIpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgY2gsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQpAQCAtMTQ1LDcgKzE0Miw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0KFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHNwbGl0KShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHNlcCwgUHlfc3NpemVfdCBzZXBfbGVuLAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0xNTgsNyArMTU1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKHNlcF9sZW4gPT0gMSkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF9jaGFyKHN0cl9vYmosIHN0ciwgc3RyX2xlbiwgc2VwWzBdLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBTVFJJTkdMSUIoc3BsaXRfY2hhcikoc3RyX29iaiwgc3RyLCBzdHJfbGVuLCBzZXBbMF0sIG1heGNvdW50KTsKIAogICAgIGxpc3QgPSBQeUxpc3RfTmV3KFBSRUFMTE9DX1NJWkUobWF4Y291bnQpKTsKICAgICBpZiAobGlzdCA9PSBOVUxMKQpAQCAtMTY2LDcgKzE2Myw3IEBACiAKICAgICBpID0gaiA9IDA7CiAgICAgd2hpbGUgKG1heGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIHBvcyA9IGZhc3RzZWFyY2goc3RyK2ksIHN0cl9sZW4taSwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9TRUFSQ0gpOworICAgICAgICBwb3MgPSBGQVNUU0VBUkNIKHN0citpLCBzdHJfbGVuLWksIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfU0VBUkNIKTsKICAgICAgICAgaWYgKHBvcyA8IDApCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaiA9IGkgKyBwb3M7CkBAIC0xOTMsNyArMTkwLDcgQEAKIH0KIAogUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCi1zdHJpbmdsaWJfcnNwbGl0X3doaXRlc3BhY2UoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocnNwbGl0X3doaXRlc3BhY2UpKFB5T2JqZWN0KiBzdHJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNUUklOR0xJQl9DSEFSKiBzdHIsIFB5X3NzaXplX3Qgc3RyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQogewpAQCAtMjQzLDcgKzI0MCw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3JzcGxpdF9jaGFyKFB5T2JqZWN0KiBzdHJfb2JqLAorU1RSSU5HTElCKHJzcGxpdF9jaGFyKShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIgY2gsCiAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKQEAgLTI4Nyw3ICsyODQsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoUHlPYmplY3QgKikKLXN0cmluZ2xpYl9yc3BsaXQoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIocnNwbGl0KShQeU9iamVjdCogc3RyX29iaiwKICAgICAgICAgICAgICAgICAgY29uc3QgU1RSSU5HTElCX0NIQVIqIHN0ciwgUHlfc3NpemVfdCBzdHJfbGVuLAogICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc2VwLCBQeV9zc2l6ZV90IHNlcF9sZW4sCiAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCkBAIC0zMDAsNyArMjk3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgaWYgKHNlcF9sZW4gPT0gMSkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfY2hhcihzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gU1RSSU5HTElCKHJzcGxpdF9jaGFyKShzdHJfb2JqLCBzdHIsIHN0cl9sZW4sIHNlcFswXSwgbWF4Y291bnQpOwogCiAgICAgbGlzdCA9IFB5TGlzdF9OZXcoUFJFQUxMT0NfU0laRShtYXhjb3VudCkpOwogICAgIGlmIChsaXN0ID09IE5VTEwpCkBAIC0zMDgsNyArMzA1LDcgQEAKIAogICAgIGogPSBzdHJfbGVuOwogICAgIHdoaWxlIChtYXhjb3VudC0tID4gMCkgewotICAgICAgICBwb3MgPSBmYXN0c2VhcmNoKHN0ciwgaiwgc2VwLCBzZXBfbGVuLCAtMSwgRkFTVF9SU0VBUkNIKTsKKyAgICAgICAgcG9zID0gRkFTVFNFQVJDSChzdHIsIGosIHNlcCwgc2VwX2xlbiwgLTEsIEZBU1RfUlNFQVJDSCk7CiAgICAgICAgIGlmIChwb3MgPCAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIFNQTElUX0FERChzdHIsIHBvcyArIHNlcF9sZW4sIGopOwpAQCAtMzM2LDcgKzMzMyw3IEBACiB9CiAKIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQotc3RyaW5nbGliX3NwbGl0bGluZXMoUHlPYmplY3QqIHN0cl9vYmosCitTVFJJTkdMSUIoc3BsaXRsaW5lcykoUHlPYmplY3QqIHN0cl9vYmosCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTVFJJTkdMSUJfQ0hBUiogc3RyLCBQeV9zc2l6ZV90IHN0cl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICBpbnQga2VlcGVuZHMpCiB7CkBAIC0zOTEsNCArMzg4LDMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi9zdHJpbmdkZWZzLmgKaW5kZXggMWM0OTQyNi4uN2JiOTFhNyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nZGVmcy5oCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ2RlZnMuaApAQCAtNiw3ICs2LDEwIEBACiAgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLwogI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMAogCisjZGVmaW5lIEZBU1RTRUFSQ0ggZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgc3RyaW5nbGliXyMjRgogI2RlZmluZSBTVFJJTkdMSUJfT0JKRUNUICAgICAgICAgUHlCeXRlc09iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgY2hhcgogI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInN0cmluZyIKICNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJTIgpAQCAtMTUsOSArMTgsNiBAQAogI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsoeCkgKCh4ID09ICdcbicpIHx8ICh4ID09ICdccicpKQogI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMKHgpICAgKCh4ID49ICcwJykgJiYgKHggPD0gJzknKSkKICNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCh4KSAgIChTVFJJTkdMSUJfSVNERUNJTUFMKHgpID8gKHggLSAnMCcpIDogLTEpCi0jZGVmaW5lIFNUUklOR0xJQl9UT1VQUEVSICAgICAgICBQeV9UT1VQUEVSCi0jZGVmaW5lIFNUUklOR0xJQl9UT0xPV0VSICAgICAgICBQeV9UT0xPV0VSCi0jZGVmaW5lIFNUUklOR0xJQl9GSUxMICAgICAgICAgICBtZW1zZXQKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFCiAjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCkBAIC0yNSw3ICsyNSw1IEBACiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeUJ5dGVzX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeUJ5dGVzX0NoZWNrRXhhY3QKICNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkcgICAgICAgX1B5Qnl0ZXNfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKLSNkZWZpbmUgU1RSSU5HTElCX0dST1VQSU5HX0xPQ0FMRSBfUHlCeXRlc19JbnNlcnRUaG91c2FuZHNHcm91cGluZ0xvY2FsZQogI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfUmVwcgogI2VuZGlmIC8qICFTVFJJTkdMSUJfU1RSSU5HREVGU19IICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MxbGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZThjNmZjYgotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczFsaWIuaApAQCAtMCwwICsxLDMxIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIHVjczFsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgdWNzMWxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMQorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHhGRnUKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgICAgICAgICAgIFB5X1VDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1RZUEVfTkFNRSAgICAgICJ1bmljb2RlIgorI2RlZmluZSBTVFJJTkdMSUJfUEFSU0VfQ09ERSAgICAgIlUiCisjZGVmaW5lIFNUUklOR0xJQl9FTVBUWSAgICAgICAgICB1bmljb2RlX2VtcHR5CisjZGVmaW5lIFNUUklOR0xJQl9JU1NQQUNFICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UKKyNkZWZpbmUgU1RSSU5HTElCX0lTTElORUJSRUFLICAgIEJMT09NX0xJTkVCUkVBSworI2RlZmluZSBTVFJJTkdMSUJfSVNERUNJTUFMICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1RPREVDSU1BTCAgICAgIFB5X1VOSUNPREVfVE9ERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9TVFIgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQQorI2RlZmluZSBTVFJJTkdMSUJfTEVOICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgKKyNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIF9QeVVuaWNvZGVfRnJvbVVDUzEKKyNkZWZpbmUgU1RSSU5HTElCX1JFU0laRSAgICAgICAgIG5vdF9zdXBwb3J0ZWQKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLICAgICAgICAgIFB5VW5pY29kZV9DaGVjaworI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0tfRVhBQ1QgICAgUHlVbmljb2RlX0NoZWNrRXhhY3QKKworI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfU3RyCisjZGVmaW5lIFNUUklOR0xJQl9UT0FTQ0lJICAgICAgICBQeU9iamVjdF9BU0NJSQorCisjZGVmaW5lIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZyBfUHlVbmljb2RlX3VjczFfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKKworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3MybGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlNTcyOQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczJsaWIuaApAQCAtMCwwICsxLDMwIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIHVjczJsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgdWNzMmxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgMgorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHhGRkZGdQorI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVUNTMgorI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCisjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKKyNkZWZpbmUgU1RSSU5HTElCX0VNUFRZICAgICAgICAgIHVuaWNvZGVfZW1wdHkKKyNkZWZpbmUgU1RSSU5HTElCX0lTU1BBQ0UgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRQorI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCisjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKKyNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBCisjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSAorI2RlZmluZSBTVFJJTkdMSUJfTkVXICAgICAgICAgICAgX1B5VW5pY29kZV9Gcm9tVUNTMgorI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgbm90X3N1cHBvcnRlZAorI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAorCisjZGVmaW5lIFNUUklOR0xJQl9UT1NUUiAgICAgICAgICBQeU9iamVjdF9TdHIKKyNkZWZpbmUgU1RSSU5HTElCX1RPQVNDSUkgICAgICAgIFB5T2JqZWN0X0FTQ0lJCisKKyNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfdWNzMl9JbnNlcnRUaG91c2FuZHNHcm91cGluZworCmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmggYi9PYmplY3RzL3N0cmluZ2xpYi91Y3M0bGliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQ3YTI3ZQotLS0gL2Rldi9udWxsCisrKyBiL09iamVjdHMvc3RyaW5nbGliL3VjczRsaWIuaApAQCAtMCwwICsxLDMwIEBACisvKiB0aGlzIGlzIHNvcnQgb2YgYSBoYWNrLiAgdGhlcmUncyBhdCBsZWFzdCBvbmUgcGxhY2UgKGZvcm1hdHRpbmcKKyAgIGZsb2F0cykgd2hlcmUgc29tZSBzdHJpbmdsaWIgY29kZSB0YWtlcyBhIGRpZmZlcmVudCBwYXRoIGlmIGl0J3MKKyAgIGNvbXBpbGVkIGFzIHVuaWNvZGUuICovCisjZGVmaW5lIFNUUklOR0xJQl9JU19VTklDT0RFICAgICAxCisKKyNkZWZpbmUgRkFTVFNFQVJDSCAgICAgICAgICAgICAgIHVjczRsaWJfZmFzdHNlYXJjaAorI2RlZmluZSBTVFJJTkdMSUIoRikgICAgICAgICAgICAgdWNzNGxpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX09CSkVDVCAgICAgICAgIFB5VW5pY29kZU9iamVjdAorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgICAgNAorI2RlZmluZSBTVFJJTkdMSUJfTUFYX0NIQVIgICAgICAgMHgxMEZGRkZ1CisjZGVmaW5lIFNUUklOR0xJQl9DSEFSICAgICAgICAgICBQeV9VQ1M0CisjZGVmaW5lIFNUUklOR0xJQl9UWVBFX05BTUUgICAgICAidW5pY29kZSIKKyNkZWZpbmUgU1RSSU5HTElCX1BBUlNFX0NPREUgICAgICJVIgorI2RlZmluZSBTVFJJTkdMSUJfRU1QVFkgICAgICAgICAgdW5pY29kZV9lbXB0eQorI2RlZmluZSBTVFJJTkdMSUJfSVNTUEFDRSAgICAgICAgUHlfVU5JQ09ERV9JU1NQQUNFCisjZGVmaW5lIFNUUklOR0xJQl9JU0xJTkVCUkVBSyAgICBCTE9PTV9MSU5FQlJFQUsKKyNkZWZpbmUgU1RSSU5HTElCX0lTREVDSU1BTCAgICAgIFB5X1VOSUNPREVfSVNERUNJTUFMCisjZGVmaW5lIFNUUklOR0xJQl9UT0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX1RPREVDSU1BTAorI2RlZmluZSBTVFJJTkdMSUJfU1RSICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEKKyNkZWZpbmUgU1RSSU5HTElCX0xFTiAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RICisjZGVmaW5lIFNUUklOR0xJQl9ORVcgICAgICAgICAgICBfUHlVbmljb2RlX0Zyb21VQ1M0CisjZGVmaW5lIFNUUklOR0xJQl9SRVNJWkUgICAgICAgICBub3Rfc3VwcG9ydGVkCisjZGVmaW5lIFNUUklOR0xJQl9DSEVDSyAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sKKyNkZWZpbmUgU1RSSU5HTElCX0NIRUNLX0VYQUNUICAgIFB5VW5pY29kZV9DaGVja0V4YWN0CisKKyNkZWZpbmUgU1RSSU5HTElCX1RPU1RSICAgICAgICAgIFB5T2JqZWN0X1N0cgorI2RlZmluZSBTVFJJTkdMSUJfVE9BU0NJSSAgICAgICAgUHlPYmplY3RfQVNDSUkKKworI2RlZmluZSBfUHlfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcgX1B5VW5pY29kZV91Y3M0X0luc2VydFRob3VzYW5kc0dyb3VwaW5nCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuZGVmLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMTE3ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmRlZi5oCkBAIC0wLDAgKzEsMTIgQEAKKyN1bmRlZiAgRkFTVFNFQVJDSAorI3VuZGVmICBTVFJJTkdMSUIKKyN1bmRlZiAgU1RSSU5HTElCX1NJWkVPRl9DSEFSCisjdW5kZWYgIFNUUklOR0xJQl9NQVhfQ0hBUgorI3VuZGVmICBTVFJJTkdMSUJfQ0hBUgorI3VuZGVmICBTVFJJTkdMSUJfU1RSCisjdW5kZWYgIFNUUklOR0xJQl9MRU4KKyN1bmRlZiAgU1RSSU5HTElCX05FVworI3VuZGVmICBTVFJJTkdMSUJfUkVTSVpFCisjdW5kZWYgIF9QeV9JbnNlcnRUaG91c2FuZHNHcm91cGluZworI3VuZGVmIFNUUklOR0xJQl9JU19VTklDT0RFCisKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaCBiL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZyb20gT2JqZWN0cy9zdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oCnJlbmFtZSB0byBPYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCmluZGV4IDZjN2FkY2IuLmJlNTgwYzYgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3N0cmluZ19mb3JtYXQuaAorKysgYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlX2Zvcm1hdC5oCkBAIC0xLDE2ICsxLDcgQEAKIC8qCi0gICAgc3RyaW5nX2Zvcm1hdC5oIC0tIGltcGxlbWVudGF0aW9uIG9mIHN0cmluZy5mb3JtYXQoKS4KLQotICAgIEl0IHVzZXMgdGhlIE9iamVjdHMvc3RyaW5nbGliIGNvbnZlbnRpb25zLCBzbyB0aGF0IGl0IGNhbiBiZQotICAgIGNvbXBpbGVkIGZvciBib3RoIHVuaWNvZGUgYW5kIHN0cmluZyBvYmplY3RzLgorICAgIHVuaWNvZGVfZm9ybWF0LmggLS0gaW1wbGVtZW50YXRpb24gb2Ygc3RyLmZvcm1hdCgpLgogKi8KIAotCi0vKiBEZWZpbmVzIGZvciBQeXRob24gMi42IGNvbXBhdGliaWxpdHkgKi8KLSNpZiBQWV9WRVJTSU9OX0hFWCA8IDB4MDMwMDAwMDAKLSNkZWZpbmUgUHlMb25nX0Zyb21Tc2l6ZV90IF9QeUxvbmdfRnJvbVNzaXplX3QKLSNlbmRpZgotCiAvKiBEZWZpbmVzIGZvciBtb3JlIGVmZmljaWVudGx5IHJlYWxsb2NhdGluZyB0aGUgc3RyaW5nIGJ1ZmZlciAqLwogI2RlZmluZSBJTklUSUFMX1NJWkVfSU5DUkVNRU5UIDEwMAogI2RlZmluZSBTSVpFX01VTFRJUExJRVIgMgpAQCAtMjYsOCArMTcsOCBAQAogICAgdW5pY29kZSBwb2ludGVycy4KICovCiB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kOworICAgIFB5T2JqZWN0ICpzdHI7IC8qIGJvcnJvd2VkIHJlZmVyZW5jZSAqLworICAgIFB5X3NzaXplX3Qgc3RhcnQsIGVuZDsKIH0gU3ViU3RyaW5nOwogCiAKQEAgLTY0LDM0ICs1NSwzMiBAQAogCiAvKiBmaWxsIGluIGEgU3ViU3RyaW5nIGZyb20gYSBwb2ludGVyIGFuZCBsZW5ndGggKi8KIFB5X0xPQ0FMX0lOTElORSh2b2lkKQotU3ViU3RyaW5nX2luaXQoU3ViU3RyaW5nICpzdHIsIFNUUklOR0xJQl9DSEFSICpwLCBQeV9zc2l6ZV90IGxlbikKK1N1YlN0cmluZ19pbml0KFN1YlN0cmluZyAqc3RyLCBQeU9iamVjdCAqcywgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgc3RyLT5wdHIgPSBwOwotICAgIGlmIChwID09IE5VTEwpCi0gICAgICAgIHN0ci0+ZW5kID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHN0ci0+ZW5kID0gc3RyLT5wdHIgKyBsZW47CisgICAgc3RyLT5zdHIgPSBzOworICAgIHN0ci0+c3RhcnQgPSBzdGFydDsKKyAgICBzdHItPmVuZCA9IGVuZDsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+cHRyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3QoU3ViU3RyaW5nICpzdHIpCiB7Ci0gICAgaWYgKHN0ci0+cHRyID09IE5VTEwpIHsKKyAgICBpZiAoc3RyLT5zdHIgPT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICByZXR1cm4gU1RSSU5HTElCX05FVyhzdHItPnB0ciwgc3RyLT5lbmQgLSBzdHItPnB0cik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc3RyLT5zdHIsIHN0ci0+c3RhcnQsIHN0ci0+ZW5kKTsKIH0KIAotLyogcmV0dXJuIGEgbmV3IHN0cmluZy4gIGlmIHN0ci0+cHRyIGlzIE5VTEwsIHJldHVybiBOb25lICovCisvKiByZXR1cm4gYSBuZXcgc3RyaW5nLiAgaWYgc3RyLT5zdHIgaXMgTlVMTCwgcmV0dXJuIE5vbmUgKi8KIFB5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQogU3ViU3RyaW5nX25ld19vYmplY3Rfb3JfZW1wdHkoU3ViU3RyaW5nICpzdHIpCiB7Ci0gICAgaWYgKHN0ci0+cHRyID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFNUUklOR0xJQl9ORVcoTlVMTCwgMCk7CisgICAgaWYgKHN0ci0+c3RyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgfQotICAgIHJldHVybiBTVFJJTkdMSUJfTkVXKHN0ci0+cHRyLCBzdHItPmVuZCAtIHN0ci0+cHRyKTsKKyAgICByZXR1cm4gU3ViU3RyaW5nX25ld19vYmplY3Qoc3RyKTsKIH0KIAogLyogUmV0dXJuIDEgaWYgYW4gZXJyb3IgaGFzIGJlZW4gZGV0ZWN0ZWQgc3dpdGNoaW5nIGJldHdlZW4gYXV0b21hdGljCkBAIC0xMjEsNzQgKzExMCw2IEBACiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS8qKioqKioqKioqKiAgICBPdXRwdXQgc3RyaW5nIG1hbmFnZW1lbnQgZnVuY3Rpb25zICAgICAgICoqKioqKioqKioqKioqKiovCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10eXBlZGVmIHN0cnVjdCB7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnB0cjsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqZW5kOwotICAgIFB5T2JqZWN0ICpvYmo7Ci0gICAgUHlfc3NpemVfdCBzaXplX2luY3JlbWVudDsKLX0gT3V0cHV0U3RyaW5nOwotCi0vKiBpbml0aWFsaXplIGFuIE91dHB1dFN0cmluZyBvYmplY3QsIHJlc2VydmluZyBzaXplIGNoYXJhY3RlcnMgKi8KLXN0YXRpYyBpbnQKLW91dHB1dF9pbml0aWFsaXplKE91dHB1dFN0cmluZyAqb3V0cHV0LCBQeV9zc2l6ZV90IHNpemUpCi17Ci0gICAgb3V0cHV0LT5vYmogPSBTVFJJTkdMSUJfTkVXKE5VTEwsIHNpemUpOwotICAgIGlmIChvdXRwdXQtPm9iaiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG91dHB1dC0+cHRyID0gU1RSSU5HTElCX1NUUihvdXRwdXQtPm9iaik7Ci0gICAgb3V0cHV0LT5lbmQgPSBTVFJJTkdMSUJfTEVOKG91dHB1dC0+b2JqKSArIG91dHB1dC0+cHRyOwotICAgIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQgPSBJTklUSUFMX1NJWkVfSU5DUkVNRU5UOwotCi0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qCi0gICAgb3V0cHV0X2V4dGVuZCByZWFsbG9jYXRlcyB0aGUgb3V0cHV0IHN0cmluZyBidWZmZXIuCi0gICAgSXQgcmV0dXJucyBhIHN0YXR1czogIDAgZm9yIGEgZmFpbGVkIHJlYWxsb2NhdGlvbiwKLSAgICAxIGZvciBzdWNjZXNzLgotKi8KLQotc3RhdGljIGludAotb3V0cHV0X2V4dGVuZChPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlfc3NpemVfdCBjb3VudCkKLXsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqc3RhcnRwdHIgPSBTVFJJTkdMSUJfU1RSKG91dHB1dC0+b2JqKTsKLSAgICBQeV9zc2l6ZV90IGN1cmxlbiA9IG91dHB1dC0+cHRyIC0gc3RhcnRwdHI7Ci0gICAgUHlfc3NpemVfdCBtYXhsZW4gPSBjdXJsZW4gKyBjb3VudCArIG91dHB1dC0+c2l6ZV9pbmNyZW1lbnQ7Ci0KLSAgICBpZiAoU1RSSU5HTElCX1JFU0laRSgmb3V0cHV0LT5vYmosIG1heGxlbikgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBzdGFydHB0ciA9IFNUUklOR0xJQl9TVFIob3V0cHV0LT5vYmopOwotICAgIG91dHB1dC0+cHRyID0gc3RhcnRwdHIgKyBjdXJsZW47Ci0gICAgb3V0cHV0LT5lbmQgPSBzdGFydHB0ciArIG1heGxlbjsKLSAgICBpZiAob3V0cHV0LT5zaXplX2luY3JlbWVudCA8IE1BWF9TSVpFX0lOQ1JFTUVOVCkKLSAgICAgICAgb3V0cHV0LT5zaXplX2luY3JlbWVudCAqPSBTSVpFX01VTFRJUExJRVI7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qCi0gICAgb3V0cHV0X2RhdGEgZHVtcHMgY2hhcmFjdGVycyBpbnRvIG91ciBvdXRwdXQgc3RyaW5nCi0gICAgYnVmZmVyLgotCi0gICAgSW4gc29tZSBjYXNlcywgaXQgaGFzIHRvIHJlYWxsb2NhdGUgdGhlIHN0cmluZy4KLQotICAgIEl0IHJldHVybnMgYSBzdGF0dXM6ICAwIGZvciBhIGZhaWxlZCByZWFsbG9jYXRpb24sCi0gICAgMSBmb3Igc3VjY2Vzcy4KLSovCi1zdGF0aWMgaW50Ci1vdXRwdXRfZGF0YShPdXRwdXRTdHJpbmcgKm91dHB1dCwgY29uc3QgU1RSSU5HTElCX0NIQVIgKnMsIFB5X3NzaXplX3QgY291bnQpCi17Ci0gICAgaWYgKChjb3VudCA+IG91dHB1dC0+ZW5kIC0gb3V0cHV0LT5wdHIpICYmICFvdXRwdXRfZXh0ZW5kKG91dHB1dCwgY291bnQpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtZW1jcHkob3V0cHV0LT5wdHIsIHMsIGNvdW50ICogc2l6ZW9mKFNUUklOR0xJQl9DSEFSKSk7Ci0gICAgb3V0cHV0LT5wdHIgKz0gY291bnQ7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKiogIEZvcm1hdCBzdHJpbmcgcGFyc2luZyAtLSBpbnRlZ2VycyBhbmQgaWRlbnRpZmllcnMgKioqKioqKioqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApAQCAtMTk3LDMxICsxMTgsMjggQEAKIHsKICAgICBQeV9zc2l6ZV90IGFjY3VtdWxhdG9yID0gMDsKICAgICBQeV9zc2l6ZV90IGRpZ2l0dmFsOwotICAgIFB5X3NzaXplX3Qgb2xkYWNjdW11bGF0b3I7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnA7CisgICAgUHlfc3NpemVfdCBpOwogCiAgICAgLyogZW1wdHkgc3RyaW5nIGlzIGFuIGVycm9yICovCi0gICAgaWYgKHN0ci0+cHRyID49IHN0ci0+ZW5kKQorICAgIGlmIChzdHItPnN0YXJ0ID49IHN0ci0+ZW5kKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBmb3IgKHAgPSBzdHItPnB0cjsgcCA8IHN0ci0+ZW5kOyBwKyspIHsKLSAgICAgICAgZGlnaXR2YWwgPSBTVFJJTkdMSUJfVE9ERUNJTUFMKCpwKTsKKyAgICBmb3IgKGkgPSBzdHItPnN0YXJ0OyBpIDwgc3RyLT5lbmQ7IGkrKykgeworICAgICAgICBkaWdpdHZhbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLT5zdHIsIGkpKTsKICAgICAgICAgaWYgKGRpZ2l0dmFsIDwgMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgLyoKLSAgICAgICAgICAgVGhpcyB0cmljayB3YXMgY29waWVkIGZyb20gb2xkIFVuaWNvZGUgZm9ybWF0IGNvZGUuICBJdCdzIGN1dGUsCi0gICAgICAgICAgIGJ1dCB3b3VsZCByZWFsbHkgc3VjayBvbiBhbiBvbGQgbWFjaGluZSB3aXRoIGEgc2xvdyBkaXZpZGUKLSAgICAgICAgICAgaW1wbGVtZW50YXRpb24uICBGb3J0dW5hdGVseSwgaW4gdGhlIG5vcm1hbCBjYXNlIHdlIGRvIG5vdAotICAgICAgICAgICBleHBlY3QgdG9vIG1hbnkgZGlnaXRzLgorICAgICAgICAgICBEZXRlY3QgcG9zc2libGUgb3ZlcmZsb3cgYmVmb3JlIGl0IGhhcHBlbnM6CisKKyAgICAgICAgICAgICAgYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsID4gUFlfU1NJWkVfVF9NQVggaWYgYW5kIG9ubHkgaWYKKyAgICAgICAgICAgICAgYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMC4KICAgICAgICAgKi8KLSAgICAgICAgb2xkYWNjdW11bGF0b3IgPSBhY2N1bXVsYXRvcjsKLSAgICAgICAgYWNjdW11bGF0b3IgKj0gMTA7Ci0gICAgICAgIGlmICgoYWNjdW11bGF0b3IrMTApLzEwICE9IG9sZGFjY3VtdWxhdG9yKzEpIHsKKyAgICAgICAgaWYgKGFjY3VtdWxhdG9yID4gKFBZX1NTSVpFX1RfTUFYIC0gZGlnaXR2YWwpIC8gMTApIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBkZWNpbWFsIGRpZ2l0cyBpbiBmb3JtYXQgc3RyaW5nIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgYWNjdW11bGF0b3IgKz0gZGlnaXR2YWw7CisgICAgICAgIGFjY3VtdWxhdG9yID0gYWNjdW11bGF0b3IgKiAxMCArIGRpZ2l0dmFsOwogICAgIH0KICAgICByZXR1cm4gYWNjdW11bGF0b3I7CiB9CkBAIC0yODIsMzQgKzIwMCwzNiBAQAogICAgICAgIGxpZmV0aW1lIG9mIHRoZSBpdGVyYXRvci4gIGNhbiBiZSBlbXB0eSAqLwogICAgIFN1YlN0cmluZyBzdHI7CiAKLSAgICAvKiBwb2ludGVyIHRvIHdoZXJlIHdlIGFyZSBpbnNpZGUgZmllbGRfbmFtZSAqLwotICAgIFNUUklOR0xJQl9DSEFSICpwdHI7CisgICAgLyogaW5kZXggdG8gd2hlcmUgd2UgYXJlIGluc2lkZSBmaWVsZF9uYW1lICovCisgICAgUHlfc3NpemVfdCBpbmRleDsKIH0gRmllbGROYW1lSXRlcmF0b3I7CiAKIAogc3RhdGljIGludAotRmllbGROYW1lSXRlcmF0b3JfaW5pdChGaWVsZE5hbWVJdGVyYXRvciAqc2VsZiwgU1RSSU5HTElCX0NIQVIgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4pCitGaWVsZE5hbWVJdGVyYXRvcl9pbml0KEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBQeU9iamVjdCAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcHRyLCBsZW4pOwotICAgIHNlbGYtPnB0ciA9IHNlbGYtPnN0ci5wdHI7CisgICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcywgc3RhcnQsIGVuZCk7CisgICAgc2VsZi0+aW5kZXggPSBzdGFydDsKICAgICByZXR1cm4gMTsKIH0KIAogc3RhdGljIGludAogX0ZpZWxkTmFtZUl0ZXJhdG9yX2F0dHIoRmllbGROYW1lSXRlcmF0b3IgKnNlbGYsIFN1YlN0cmluZyAqbmFtZSkKIHsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjOworICAgIFB5X1VDUzQgYzsKIAotICAgIG5hbWUtPnB0ciA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIG5hbWUtPnN0YXJ0ID0gc2VsZi0+aW5kZXg7CiAKICAgICAvKiByZXR1cm4gZXZlcnl0aGluZyB1bnRpbCAnLicgb3IgJ1snICovCi0gICAgd2hpbGUgKHNlbGYtPnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnNlbGYtPnB0cisrKSB7CisgICAgd2hpbGUgKHNlbGYtPmluZGV4IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKTsKKyAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgIC8qIGJhY2t1cCBzbyB0aGF0IHdlIHRoaXMgY2hhcmFjdGVyIHdpbGwgYmUgc2VlbiBuZXh0IHRpbWUgKi8KLSAgICAgICAgICAgIHNlbGYtPnB0ci0tOworICAgICAgICAgICAgc2VsZi0+aW5kZXgtLTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGludWU7CkBAIC0zMTcsNyArMjM3LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIC8qIGVuZCBvZiBzdHJpbmcgaXMgb2theSAqLwotICAgIG5hbWUtPmVuZCA9IHNlbGYtPnB0cjsKKyAgICBuYW1lLT5lbmQgPSBzZWxmLT5pbmRleDsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMzI1LDEzICsyNDUsMTUgQEAKIF9GaWVsZE5hbWVJdGVyYXRvcl9pdGVtKEZpZWxkTmFtZUl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKm5hbWUpCiB7CiAgICAgaW50IGJyYWNrZXRfc2VlbiA9IDA7Ci0gICAgU1RSSU5HTElCX0NIQVIgYzsKKyAgICBQeV9VQ1M0IGM7CiAKLSAgICBuYW1lLT5wdHIgPSBzZWxmLT5wdHI7CisgICAgbmFtZS0+c3RyID0gc2VsZi0+c3RyLnN0cjsKKyAgICBuYW1lLT5zdGFydCA9IHNlbGYtPmluZGV4OwogCiAgICAgLyogcmV0dXJuIGV2ZXJ5dGhpbmcgdW50aWwgJ10nICovCi0gICAgd2hpbGUgKHNlbGYtPnB0ciA8IHNlbGYtPnN0ci5lbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnNlbGYtPnB0cisrKSB7CisgICAgd2hpbGUgKHNlbGYtPmluZGV4IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKTsKKyAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgIGNhc2UgJ10nOgogICAgICAgICAgICAgYnJhY2tldF9zZWVuID0gMTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQ4LDcgKzI3MCw3IEBACiAKICAgICAvKiBlbmQgb2Ygc3RyaW5nIGlzIG9rYXkgKi8KICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSAnXScgKi8KLSAgICBuYW1lLT5lbmQgPSBzZWxmLT5wdHItMTsKKyAgICBuYW1lLT5lbmQgPSBzZWxmLT5pbmRleC0xOwogICAgIHJldHVybiAxOwogfQogCkBAIC0zNTgsMTAgKzI4MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuYW1lX2lkeCwgU3ViU3RyaW5nICpuYW1lKQogewogICAgIC8qIGNoZWNrIGF0IGVuZCBvZiBpbnB1dCAqLwotICAgIGlmIChzZWxmLT5wdHIgPj0gc2VsZi0+c3RyLmVuZCkKKyAgICBpZiAoc2VsZi0+aW5kZXggPj0gc2VsZi0+c3RyLmVuZCkKICAgICAgICAgcmV0dXJuIDE7CiAKLSAgICBzd2l0Y2ggKCpzZWxmLT5wdHIrKykgeworICAgIHN3aXRjaCAoUHlVbmljb2RlX1JFQURfQ0hBUihzZWxmLT5zdHIuc3RyLCBzZWxmLT5pbmRleCsrKSkgewogICAgIGNhc2UgJy4nOgogICAgICAgICAqaXNfYXR0cmlidXRlID0gMTsKICAgICAgICAgaWYgKF9GaWVsZE5hbWVJdGVyYXRvcl9hdHRyKHNlbGYsIG5hbWUpID09IDApCkBAIC0zODQsNyArMzA2LDcgQEAKICAgICB9CiAKICAgICAvKiBlbXB0eSBzdHJpbmcgaXMgYW4gZXJyb3IgKi8KLSAgICBpZiAobmFtZS0+cHRyID09IG5hbWUtPmVuZCkgeworICAgIGlmIChuYW1lLT5zdGFydCA9PSBuYW1lLT5lbmQpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJFbXB0eSBhdHRyaWJ1dGUgaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00MDAsMjQgKzMyMiwyMyBAQAogICAgICAgICAgICAncmVzdCcgaXMgYW4gaXRlcmF0b3IgdG8gcmV0dXJuIHRoZSByZXN0CiAqLwogc3RhdGljIGludAotZmllbGRfbmFtZV9zcGxpdChTVFJJTkdMSUJfQ0hBUiAqcHRyLCBQeV9zc2l6ZV90IGxlbiwgU3ViU3RyaW5nICpmaXJzdCwKK2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKnN0ciwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsIFN1YlN0cmluZyAqZmlyc3QsCiAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmZpcnN0X2lkeCwgRmllbGROYW1lSXRlcmF0b3IgKnJlc3QsCiAgICAgICAgICAgICAgICAgIEF1dG9OdW1iZXIgKmF1dG9fbnVtYmVyKQogewotICAgIFNUUklOR0xJQl9DSEFSIGM7Ci0gICAgU1RSSU5HTElCX0NIQVIgKnAgPSBwdHI7Ci0gICAgU1RSSU5HTElCX0NIQVIgKmVuZCA9IHB0ciArIGxlbjsKKyAgICBQeV9VQ1M0IGM7CisgICAgUHlfc3NpemVfdCBpID0gc3RhcnQ7CiAgICAgaW50IGZpZWxkX25hbWVfaXNfZW1wdHk7CiAgICAgaW50IHVzaW5nX251bWVyaWNfaW5kZXg7CiAKICAgICAvKiBmaW5kIHRoZSBwYXJ0IHVwIHVudGlsIHRoZSBmaXJzdCAnLicgb3IgJ1snICovCi0gICAgd2hpbGUgKHAgPCBlbmQpIHsKLSAgICAgICAgc3dpdGNoIChjID0gKnArKykgeworICAgIHdoaWxlIChpIDwgZW5kKSB7CisgICAgICAgIHN3aXRjaCAoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLCBpKyspKSB7CiAgICAgICAgIGNhc2UgJ1snOgogICAgICAgICBjYXNlICcuJzoKICAgICAgICAgICAgIC8qIGJhY2t1cCBzbyB0aGF0IHdlIHRoaXMgY2hhcmFjdGVyIGlzIGF2YWlsYWJsZSB0byB0aGUKICAgICAgICAgICAgICAgICJyZXN0IiBpdGVyYXRvciAqLwotICAgICAgICAgICAgcC0tOworICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQyNiwxNSArMzQ3LDE1IEBACiAgICAgfQogCiAgICAgLyogc2V0IHVwIHRoZSByZXR1cm4gdmFsdWVzICovCi0gICAgU3ViU3RyaW5nX2luaXQoZmlyc3QsIHB0ciwgcCAtIHB0cik7Ci0gICAgRmllbGROYW1lSXRlcmF0b3JfaW5pdChyZXN0LCBwLCBlbmQgLSBwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmaXJzdCwgc3RyLCBzdGFydCwgaSk7CisgICAgRmllbGROYW1lSXRlcmF0b3JfaW5pdChyZXN0LCBzdHIsIGksIGVuZCk7CiAKICAgICAvKiBzZWUgaWYgImZpcnN0IiBpcyBhbiBpbnRlZ2VyLCBpbiB3aGljaCBjYXNlIGl0J3MgdXNlZCBhcyBhbiBpbmRleCAqLwogICAgICpmaXJzdF9pZHggPSBnZXRfaW50ZWdlcihmaXJzdCk7CiAgICAgaWYgKCpmaXJzdF9pZHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmaWVsZF9uYW1lX2lzX2VtcHR5ID0gZmlyc3QtPnB0ciA+PSBmaXJzdC0+ZW5kOworICAgIGZpZWxkX25hbWVfaXNfZW1wdHkgPSBmaXJzdC0+c3RhcnQgPj0gZmlyc3QtPmVuZDsKIAogICAgIC8qIElmIHRoZSBmaWVsZCBuYW1lIGlzIG9taXR0ZWQgb3IgaWYgd2UgaGF2ZSBhIG51bWVyaWMgaW5kZXgKICAgICAgICBzcGVjaWZpZWQsIHRoZW4gd2UncmUgZG9pbmcgbnVtZXJpYyBpbmRleGluZyBpbnRvIGFyZ3MuICovCkBAIC00ODksNyArNDEwLDcgQEAKICAgICBQeV9zc2l6ZV90IGluZGV4OwogICAgIEZpZWxkTmFtZUl0ZXJhdG9yIHJlc3Q7CiAKLSAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoaW5wdXQtPnB0ciwgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIsICZmaXJzdCwKKyAgICBpZiAoIWZpZWxkX25hbWVfc3BsaXQoaW5wdXQtPnN0ciwgaW5wdXQtPnN0YXJ0LCBpbnB1dC0+ZW5kLCAmZmlyc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmRleCwgJnJlc3QsIGF1dG9fbnVtYmVyKSkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KQEAgLTU3MywzOSArNDk0LDQxIEBACiAgICAgYXBwZW5kcyB0byB0aGUgb3V0cHV0LgogKi8KIHN0YXRpYyBpbnQKLXJlbmRlcl9maWVsZChQeU9iamVjdCAqZmllbGRvYmosIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsIE91dHB1dFN0cmluZyAqb3V0cHV0KQorcmVuZGVyX2ZpZWxkKFB5T2JqZWN0ICpmaWVsZG9iaiwgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewogICAgIGludCBvayA9IDA7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjX29iamVjdCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKigqZm9ybWF0dGVyKShQeU9iamVjdCAqLCBTVFJJTkdMSUJfQ0hBUiAqLCBQeV9zc2l6ZV90KSA9IE5VTEw7Ci0gICAgU1RSSU5HTElCX0NIQVIqIGZvcm1hdF9zcGVjX3N0YXJ0ID0gZm9ybWF0X3NwZWMtPnB0ciA/Ci0gICAgICAgICAgICBmb3JtYXRfc3BlYy0+cHRyIDogTlVMTDsKLSAgICBQeV9zc2l6ZV90IGZvcm1hdF9zcGVjX2xlbiA9IGZvcm1hdF9zcGVjLT5wdHIgPwotICAgICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCAtIGZvcm1hdF9zcGVjLT5wdHIgOiAwOworICAgIGludCAoKmZvcm1hdHRlcikgKF9QeVVuaWNvZGVXcml0ZXIqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90KSA9IE5VTEw7CisgICAgaW50IGVycjsKIAogICAgIC8qIElmIHdlIGtub3cgdGhlIHR5cGUgZXhhY3RseSwgc2tpcCB0aGUgbG9va3VwIG9mIF9fZm9ybWF0X18gYW5kIGp1c3QKICAgICAgICBjYWxsIHRoZSBmb3JtYXR0ZXIgZGlyZWN0bHkuICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGZpZWxkb2JqKSkKLSAgICAgICAgZm9ybWF0dGVyID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZDsKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKICAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChmaWVsZG9iaikpCi0gICAgICAgIGZvcm1hdHRlciA9X1B5TG9uZ19Gb3JtYXRBZHZhbmNlZDsKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5TG9uZ19Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKICAgICBlbHNlIGlmIChQeUZsb2F0X0NoZWNrRXhhY3QoZmllbGRvYmopKQotICAgICAgICBmb3JtYXR0ZXIgPSBfUHlGbG9hdF9Gb3JtYXRBZHZhbmNlZDsKLQotICAgIC8qIFhYWDogZm9yIDIuNiwgY29udmVydCBmb3JtYXRfc3BlYyB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQotICAgICAgICh1bmljb2RlLCBzdHIpICovCisgICAgICAgIGZvcm1hdHRlciA9IF9QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyOworICAgIGVsc2UgaWYgKFB5Q29tcGxleF9DaGVja0V4YWN0KGZpZWxkb2JqKSkKKyAgICAgICAgZm9ybWF0dGVyID0gX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZFdyaXRlcjsKIAogICAgIGlmIChmb3JtYXR0ZXIpIHsKICAgICAgICAgLyogd2Uga25vdyBleGFjdGx5IHdoaWNoIGZvcm1hdHRlciB3aWxsIGJlIGNhbGxlZCB3aGVuIF9fZm9ybWF0X18gaXMKICAgICAgICAgICAgbG9va2VkIHVwLCBzbyBjYWxsIGl0IGRpcmVjdGx5LCBpbnN0ZWFkLiAqLwotICAgICAgICByZXN1bHQgPSBmb3JtYXR0ZXIoZmllbGRvYmosIGZvcm1hdF9zcGVjX3N0YXJ0LCBmb3JtYXRfc3BlY19sZW4pOworICAgICAgICBlcnIgPSBmb3JtYXR0ZXIod3JpdGVyLCBmaWVsZG9iaiwgZm9ybWF0X3NwZWMtPnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLT5zdGFydCwgZm9ybWF0X3NwZWMtPmVuZCk7CisgICAgICAgIHJldHVybiAoZXJyID09IDApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogV2UgbmVlZCB0byBjcmVhdGUgYW4gb2JqZWN0IG91dCBvZiB0aGUgcG9pbnRlcnMgd2UgaGF2ZSwgYmVjYXVzZQogICAgICAgICAgICBfX2Zvcm1hdF9fIHRha2VzIGEgc3RyaW5nL3VuaWNvZGUgb2JqZWN0IGZvciBmb3JtYXRfc3BlYy4gKi8KLSAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gU1RSSU5HTElCX05FVyhmb3JtYXRfc3BlY19zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlY19sZW4pOworICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnN0cikKKyAgICAgICAgICAgIGZvcm1hdF9zcGVjX29iamVjdCA9IFB5VW5pY29kZV9TdWJzdHJpbmcoZm9ybWF0X3NwZWMtPnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3BlYy0+ZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZm9ybWF0X3NwZWNfb2JqZWN0ID0gUHlVbmljb2RlX05ldygwLCAwKTsKICAgICAgICAgaWYgKGZvcm1hdF9zcGVjX29iamVjdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBkb25lOwogCkBAIC02MTQsMjQgKzUzNywxMCBAQAogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCi0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2socmVzdWx0KSk7Ci0jZWxzZQotICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHJlc3VsdCkgfHwgUHlVbmljb2RlX0NoZWNrKHJlc3VsdCkpOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlU3RyKHdyaXRlciwgcmVzdWx0KSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworICAgIG9rID0gMTsKIAotICAgIC8qIENvbnZlcnQgcmVzdWx0IHRvIG91ciB0eXBlLiAgV2UgY291bGQgYmUgc3RyLCBhbmQgcmVzdWx0IGNvdWxkCi0gICAgICAgYmUgdW5pY29kZSAqLwotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnRtcCA9IFNUUklOR0xJQl9UT1NUUihyZXN1bHQpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICByZXN1bHQgPSB0bXA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBvayA9IG91dHB1dF9kYXRhKG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIocmVzdWx0KSwgU1RSSU5HTElCX0xFTihyZXN1bHQpKTsKIGRvbmU6CiAgICAgUHlfWERFQ1JFRihmb3JtYXRfc3BlY19vYmplY3QpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKQEAgLTY0MCwyMyArNTQ5LDI0IEBACiAKIHN0YXRpYyBpbnQKIHBhcnNlX2ZpZWxkKFN1YlN0cmluZyAqc3RyLCBTdWJTdHJpbmcgKmZpZWxkX25hbWUsIFN1YlN0cmluZyAqZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICBTVFJJTkdMSUJfQ0hBUiAqY29udmVyc2lvbikKKyAgICAgICAgICAgIFB5X1VDUzQgKmNvbnZlcnNpb24pCiB7CiAgICAgLyogTm90ZSB0aGlzIGZ1bmN0aW9uIHdvcmtzIGlmIHRoZSBmaWVsZCBuYW1lIGlzIHplcm8gbGVuZ3RoLAogICAgICAgIHdoaWNoIGlzIGdvb2QuICBaZXJvIGxlbmd0aCBmaWVsZCBuYW1lcyBhcmUgaGFuZGxlZCBsYXRlciwgaW4KICAgICAgICBmaWVsZF9uYW1lX3NwbGl0LiAqLwogCi0gICAgU1RSSU5HTElCX0NIQVIgYyA9IDA7CisgICAgUHlfVUNTNCBjID0gMDsKIAogICAgIC8qIGluaXRpYWxpemUgdGhlc2UsIGFzIHRoZXkgbWF5IGJlIGVtcHR5ICovCiAgICAgKmNvbnZlcnNpb24gPSAnXDAnOwotICAgIFN1YlN0cmluZ19pbml0KGZvcm1hdF9zcGVjLCBOVUxMLCAwKTsKKyAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCwgMCk7CiAKICAgICAvKiBTZWFyY2ggZm9yIHRoZSBmaWVsZCBuYW1lLiAgaXQncyB0ZXJtaW5hdGVkIGJ5IHRoZSBlbmQgb2YKICAgICAgICB0aGUgc3RyaW5nLCBvciBhICc6JyBvciAnIScgKi8KLSAgICBmaWVsZF9uYW1lLT5wdHIgPSBzdHItPnB0cjsKLSAgICB3aGlsZSAoc3RyLT5wdHIgPCBzdHItPmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHN0ci0+cHRyKyspKSB7CisgICAgZmllbGRfbmFtZS0+c3RyID0gc3RyLT5zdHI7CisgICAgZmllbGRfbmFtZS0+c3RhcnQgPSBzdHItPnN0YXJ0OworICAgIHdoaWxlIChzdHItPnN0YXJ0IDwgc3RyLT5lbmQpIHsKKyAgICAgICAgc3dpdGNoICgoYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIoc3RyLT5zdHIsIHN0ci0+c3RhcnQrKykpKSB7CiAgICAgICAgIGNhc2UgJzonOgogICAgICAgICBjYXNlICchJzoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjY5LDI2ICs1NzksMjcgQEAKICAgICBpZiAoYyA9PSAnIScgfHwgYyA9PSAnOicpIHsKICAgICAgICAgLyogd2UgaGF2ZSBhIGZvcm1hdCBzcGVjaWZpZXIgYW5kL29yIGEgY29udmVyc2lvbiAqLwogICAgICAgICAvKiBkb24ndCBpbmNsdWRlIHRoZSBsYXN0IGNoYXJhY3RlciAqLwotICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnB0ci0xOworICAgICAgICBmaWVsZF9uYW1lLT5lbmQgPSBzdHItPnN0YXJ0LTE7CiAKICAgICAgICAgLyogdGhlIGZvcm1hdCBzcGVjaWZpZXIgaXMgdGhlIHJlc3Qgb2YgdGhlIHN0cmluZyAqLwotICAgICAgICBmb3JtYXRfc3BlYy0+cHRyID0gc3RyLT5wdHI7CisgICAgICAgIGZvcm1hdF9zcGVjLT5zdHIgPSBzdHItPnN0cjsKKyAgICAgICAgZm9ybWF0X3NwZWMtPnN0YXJ0ID0gc3RyLT5zdGFydDsKICAgICAgICAgZm9ybWF0X3NwZWMtPmVuZCA9IHN0ci0+ZW5kOwogCiAgICAgICAgIC8qIHNlZSBpZiB0aGVyZSdzIGEgY29udmVyc2lvbiBzcGVjaWZpZXIgKi8KICAgICAgICAgaWYgKGMgPT0gJyEnKSB7CiAgICAgICAgICAgICAvKiB0aGVyZSBtdXN0IGJlIGFub3RoZXIgY2hhcmFjdGVyIHByZXNlbnQgKi8KLSAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+cHRyID49IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXRfc3BlYy0+c3RhcnQgPj0gZm9ybWF0X3NwZWMtPmVuZCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5kIG9mIGZvcm1hdCB3aGlsZSBsb29raW5nIGZvciBjb252ZXJzaW9uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWNpZmllciIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgKmNvbnZlcnNpb24gPSAqKGZvcm1hdF9zcGVjLT5wdHIrKyk7CisgICAgICAgICAgICAqY29udmVyc2lvbiA9IFB5VW5pY29kZV9SRUFEX0NIQVIoZm9ybWF0X3NwZWMtPnN0ciwgZm9ybWF0X3NwZWMtPnN0YXJ0KyspOwogCiAgICAgICAgICAgICAvKiBpZiB0aGVyZSBpcyBhbm90aGVyIGNoYXJhY3RlciwgaXQgbXVzdCBiZSBhIGNvbG9uICovCi0gICAgICAgICAgICBpZiAoZm9ybWF0X3NwZWMtPnB0ciA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKLSAgICAgICAgICAgICAgICBjID0gKihmb3JtYXRfc3BlYy0+cHRyKyspOworICAgICAgICAgICAgaWYgKGZvcm1hdF9zcGVjLT5zdGFydCA8IGZvcm1hdF9zcGVjLT5lbmQpIHsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQURfQ0hBUihmb3JtYXRfc3BlYy0+c3RyLCBmb3JtYXRfc3BlYy0+c3RhcnQrKyk7CiAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICc6JyBhZnRlciBmb3JtYXQgc3BlY2lmaWVyIik7CkBAIC02OTksNyArNjEwLDcgQEAKICAgICB9CiAgICAgZWxzZQogICAgICAgICAvKiBlbmQgb2Ygc3RyaW5nLCB0aGVyZSdzIG5vIGZvcm1hdF9zcGVjIG9yIGNvbnZlcnNpb24gKi8KLSAgICAgICAgZmllbGRfbmFtZS0+ZW5kID0gc3RyLT5wdHI7CisgICAgICAgIGZpZWxkX25hbWUtPmVuZCA9IHN0ci0+c3RhcnQ7CiAKICAgICByZXR1cm4gMTsKIH0KQEAgLTcxOCw5ICs2MjksMTAgQEAKIH0gTWFya3VwSXRlcmF0b3I7CiAKIHN0YXRpYyBpbnQKLU1hcmt1cEl0ZXJhdG9yX2luaXQoTWFya3VwSXRlcmF0b3IgKnNlbGYsIFNUUklOR0xJQl9DSEFSICpwdHIsIFB5X3NzaXplX3QgbGVuKQorTWFya3VwSXRlcmF0b3JfaW5pdChNYXJrdXBJdGVyYXRvciAqc2VsZiwgUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCiB7Ci0gICAgU3ViU3RyaW5nX2luaXQoJnNlbGYtPnN0ciwgcHRyLCBsZW4pOworICAgIFN1YlN0cmluZ19pbml0KCZzZWxmLT5zdHIsIHN0ciwgc3RhcnQsIGVuZCk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTcyOSwzMCArNjQxLDMwIEBACiBzdGF0aWMgaW50CiBNYXJrdXBJdGVyYXRvcl9uZXh0KE1hcmt1cEl0ZXJhdG9yICpzZWxmLCBTdWJTdHJpbmcgKmxpdGVyYWwsCiAgICAgICAgICAgICAgICAgICAgIGludCAqZmllbGRfcHJlc2VudCwgU3ViU3RyaW5nICpmaWVsZF9uYW1lLAotICAgICAgICAgICAgICAgICAgICBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLCBTVFJJTkdMSUJfQ0hBUiAqY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgU3ViU3RyaW5nICpmb3JtYXRfc3BlYywgUHlfVUNTNCAqY29udmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgaW50ICpmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcpCiB7CiAgICAgaW50IGF0X2VuZDsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjID0gMDsKLSAgICBTVFJJTkdMSUJfQ0hBUiAqc3RhcnQ7CisgICAgUHlfVUNTNCBjID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIGludCBjb3VudDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBpbnQgbWFya3VwX2ZvbGxvd3MgPSAwOwogCiAgICAgLyogaW5pdGlhbGl6ZSBhbGwgb2YgdGhlIG91dHB1dCB2YXJpYWJsZXMgKi8KLSAgICBTdWJTdHJpbmdfaW5pdChsaXRlcmFsLCBOVUxMLCAwKTsKLSAgICBTdWJTdHJpbmdfaW5pdChmaWVsZF9uYW1lLCBOVUxMLCAwKTsKLSAgICBTdWJTdHJpbmdfaW5pdChmb3JtYXRfc3BlYywgTlVMTCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQobGl0ZXJhbCwgTlVMTCwgMCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZmllbGRfbmFtZSwgTlVMTCwgMCwgMCk7CisgICAgU3ViU3RyaW5nX2luaXQoZm9ybWF0X3NwZWMsIE5VTEwsIDAsIDApOwogICAgICpjb252ZXJzaW9uID0gJ1wwJzsKICAgICAqZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nID0gMDsKICAgICAqZmllbGRfcHJlc2VudCA9IDA7CiAKICAgICAvKiBObyBtb3JlIGlucHV0LCBlbmQgb2YgaXRlcmF0b3IuICBUaGlzIGlzIHRoZSBub3JtYWwgZXhpdAogICAgICAgIHBhdGguICovCi0gICAgaWYgKHNlbGYtPnN0ci5wdHIgPj0gc2VsZi0+c3RyLmVuZCkKKyAgICBpZiAoc2VsZi0+c3RyLnN0YXJ0ID49IHNlbGYtPnN0ci5lbmQpCiAgICAgICAgIHJldHVybiAxOwogCi0gICAgc3RhcnQgPSBzZWxmLT5zdHIucHRyOworICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwogCiAgICAgLyogRmlyc3QgcmVhZCBhbnkgbGl0ZXJhbCB0ZXh0LiBSZWFkIHVudGlsIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbgogICAgICAgIGVzY2FwZWQgJ3snIG9yICd9Jywgb3IgYW4gdW5lc2NhcGVkICd7Jy4gIEluIG9yZGVyIHRvIG5ldmVyCkBAIC03NjEsOCArNjczLDggQEAKICAgICAgICBpbmNsdWRpbmcgdGhlIGJyYWNlLCBidXQgbm8gZm9ybWF0IG9iamVjdC4gIFRoZSBuZXh0IHRpbWUKICAgICAgICB0aHJvdWdoLCB3ZSdsbCByZXR1cm4gdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwsIHNraXBwaW5nIHBhc3QKICAgICAgICB0aGUgc2Vjb25kIGNvbnNlY3V0aXZlIGJyYWNlLiAqLwotICAgIHdoaWxlIChzZWxmLT5zdHIucHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHNlbGYtPnN0ci5wdHIrKykpIHsKKyAgICB3aGlsZSAoc2VsZi0+c3RyLnN0YXJ0IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCsrKSkgewogICAgICAgICBjYXNlICd7JzoKICAgICAgICAgY2FzZSAnfSc6CiAgICAgICAgICAgICBtYXJrdXBfZm9sbG93cyA9IDE7CkBAIC03NzMsMTAgKzY4NSwxMiBAQAogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBhdF9lbmQgPSBzZWxmLT5zdHIucHRyID49IHNlbGYtPnN0ci5lbmQ7Ci0gICAgbGVuID0gc2VsZi0+c3RyLnB0ciAtIHN0YXJ0OworICAgIGF0X2VuZCA9IHNlbGYtPnN0ci5zdGFydCA+PSBzZWxmLT5zdHIuZW5kOworICAgIGxlbiA9IHNlbGYtPnN0ci5zdGFydCAtIHN0YXJ0OwogCi0gICAgaWYgKChjID09ICd9JykgJiYgKGF0X2VuZCB8fCAoYyAhPSAqc2VsZi0+c3RyLnB0cikpKSB7CisgICAgaWYgKChjID09ICd9JykgJiYgKGF0X2VuZCB8fAorICAgICAgICAgICAgICAgICAgICAgICAoYyAhPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+c3RyLnN0YXJ0KSkpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiU2luZ2xlICd9JyBlbmNvdW50ZXJlZCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gZm9ybWF0IHN0cmluZyIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTc4NywxMCArNzAxLDEwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAoIWF0X2VuZCkgewotICAgICAgICBpZiAoYyA9PSAqc2VsZi0+c3RyLnB0cikgeworICAgICAgICBpZiAoYyA9PSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCkpIHsKICAgICAgICAgICAgIC8qIGVzY2FwZWQgfSBvciB7LCBza2lwIGl0IGluIHRoZSBpbnB1dC4gIHRoZXJlIGlzIG5vCiAgICAgICAgICAgICAgICBtYXJrdXAgb2JqZWN0IGZvbGxvd2luZyB1cywganVzdCB0aGlzIGxpdGVyYWwgdGV4dCAqLwotICAgICAgICAgICAgc2VsZi0+c3RyLnB0cisrOworICAgICAgICAgICAgc2VsZi0+c3RyLnN0YXJ0Kys7CiAgICAgICAgICAgICBtYXJrdXBfZm9sbG93cyA9IDA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtNzk4LDcgKzcxMiw4IEBACiAgICAgfQogCiAgICAgLyogcmVjb3JkIHRoZSBsaXRlcmFsIHRleHQgKi8KLSAgICBsaXRlcmFsLT5wdHIgPSBzdGFydDsKKyAgICBsaXRlcmFsLT5zdHIgPSBzZWxmLT5zdHIuc3RyOworICAgIGxpdGVyYWwtPnN0YXJ0ID0gc3RhcnQ7CiAgICAgbGl0ZXJhbC0+ZW5kID0gc3RhcnQgKyBsZW47CiAKICAgICBpZiAoIW1hcmt1cF9mb2xsb3dzKQpAQCAtODEwLDEyICs3MjUsMTIgQEAKICAgICAqZmllbGRfcHJlc2VudCA9IDE7CiAgICAgY291bnQgPSAxOwogCi0gICAgc3RhcnQgPSBzZWxmLT5zdHIucHRyOworICAgIHN0YXJ0ID0gc2VsZi0+c3RyLnN0YXJ0OwogCiAgICAgLyogd2Uga25vdyB3ZSBjYW4ndCBoYXZlIGEgemVybyBsZW5ndGggc3RyaW5nLCBzbyBkb24ndCB3b3JyeQogICAgICAgIGFib3V0IHRoYXQgY2FzZSAqLwotICAgIHdoaWxlIChzZWxmLT5zdHIucHRyIDwgc2VsZi0+c3RyLmVuZCkgewotICAgICAgICBzd2l0Y2ggKGMgPSAqKHNlbGYtPnN0ci5wdHIrKykpIHsKKyAgICB3aGlsZSAoc2VsZi0+c3RyLnN0YXJ0IDwgc2VsZi0+c3RyLmVuZCkgeworICAgICAgICBzd2l0Y2ggKGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHNlbGYtPnN0ci5zdHIsIHNlbGYtPnN0ci5zdGFydCsrKSkgewogICAgICAgICBjYXNlICd7JzoKICAgICAgICAgICAgIC8qIHRoZSBmb3JtYXQgc3BlYyBuZWVkcyB0byBiZSByZWN1cnNpdmVseSBleHBhbmRlZC4KICAgICAgICAgICAgICAgIHRoaXMgaXMgYW4gb3B0aW1pemF0aW9uLCBhbmQgbm90IHN0cmljdGx5IG5lZWRlZCAqLwpAQCAtODI4LDcgKzc0Myw3IEBACiAgICAgICAgICAgICAgICAgLyogd2UncmUgZG9uZS4gIHBhcnNlIGFuZCBnZXQgb3V0ICovCiAgICAgICAgICAgICAgICAgU3ViU3RyaW5nIHM7CiAKLSAgICAgICAgICAgICAgICBTdWJTdHJpbmdfaW5pdCgmcywgc3RhcnQsIHNlbGYtPnN0ci5wdHIgLSAxIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIFN1YlN0cmluZ19pbml0KCZzLCBzZWxmLT5zdHIuc3RyLCBzdGFydCwgc2VsZi0+c3RyLnN0YXJ0IC0gMSk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlX2ZpZWxkKCZzLCBmaWVsZF9uYW1lLCBmb3JtYXRfc3BlYywgY29udmVyc2lvbikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTg0Nyw3ICs3NjIsNyBAQAogCiAvKiBkbyB0aGUgIXIgb3IgIXMgY29udmVyc2lvbiBvbiBvYmogKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1kb19jb252ZXJzaW9uKFB5T2JqZWN0ICpvYmosIFNUUklOR0xJQl9DSEFSIGNvbnZlcnNpb24pCitkb19jb252ZXJzaW9uKFB5T2JqZWN0ICpvYmosIFB5X1VDUzQgY29udmVyc2lvbikKIHsKICAgICAvKiBYWFggaW4gcHJlLTMuMCwgZG8gd2UgbmVlZCB0byBjb252ZXJ0IHRoaXMgdG8gdW5pY29kZSwgc2luY2UgaXQKICAgICAgICBtaWdodCBoYXZlIHJldHVybmVkIGEgc3RyaW5nPyAqLwpAQCAtODU1LDExICs3NzAsOSBAQAogICAgIGNhc2UgJ3InOgogICAgICAgICByZXR1cm4gUHlPYmplY3RfUmVwcihvYmopOwogICAgIGNhc2UgJ3MnOgotICAgICAgICByZXR1cm4gU1RSSU5HTElCX1RPU1RSKG9iaik7Ci0jaWYgUFlfVkVSU0lPTl9IRVggPj0gMHgwMzAwMDAwMAorICAgICAgICByZXR1cm4gUHlPYmplY3RfU3RyKG9iaik7CiAgICAgY2FzZSAnYSc6Ci0gICAgICAgIHJldHVybiBTVFJJTkdMSUJfVE9BU0NJSShvYmopOwotI2VuZGlmCisgICAgICAgIHJldHVybiBQeU9iamVjdF9BU0NJSShvYmopOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmIChjb252ZXJzaW9uID4gMzIgJiYgY29udmVyc2lvbiA8IDEyNykgewogICAgICAgICAgICAgICAgIC8qIEl0J3MgdGhlIEFTQ0lJIHN1YnJhbmdlOyBjYXN0aW5nIHRvIGNoYXIgaXMgc2FmZQpAQCAtODkxLDggKzgwNCw4IEBACiAKIHN0YXRpYyBpbnQKIG91dHB1dF9tYXJrdXAoU3ViU3RyaW5nICpmaWVsZF9uYW1lLCBTdWJTdHJpbmcgKmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICBpbnQgZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nLCBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uLAotICAgICAgICAgICAgICBPdXRwdXRTdHJpbmcgKm91dHB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgICAgICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmcsIFB5X1VDUzQgY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7CiAgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CkBAIC05MDgsNyArODIxLDcgQEAKIAogICAgIGlmIChjb252ZXJzaW9uICE9ICdcMCcpIHsKICAgICAgICAgdG1wID0gZG9fY29udmVyc2lvbihmaWVsZG9iaiwgY29udmVyc2lvbik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWSh0bXApID09IC0xKQogICAgICAgICAgICAgZ290byBkb25lOwogCiAgICAgICAgIC8qIGRvIHRoZSBhc3NpZ25tZW50LCB0cmFuc2ZlcnJpbmcgb3duZXJzaGlwOiBmaWVsZG9iaiA9IHRtcCAqLwpAQCAtOTIxLDIwICs4MzQsMTkgQEAKICAgICBpZiAoZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKSB7CiAgICAgICAgIHRtcCA9IGJ1aWxkX3N0cmluZyhmb3JtYXRfc3BlYywgYXJncywga3dhcmdzLCByZWN1cnNpb25fZGVwdGgtMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9fbnVtYmVyKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICBpZiAodG1wID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHRtcCkgPT0gLTEpCiAgICAgICAgICAgICBnb3RvIGRvbmU7CiAKICAgICAgICAgLyogbm90ZSB0aGF0IGluIHRoZSBjYXNlIHdlJ3JlIGV4cGFuZGluZyB0aGUgZm9ybWF0IHN0cmluZywKICAgICAgICAgICAgdG1wIG11c3QgYmUga2VwdCBhcm91bmQgdW50aWwgYWZ0ZXIgdGhlIGNhbGwgdG8KICAgICAgICAgICAgcmVuZGVyX2ZpZWxkLiAqLwotICAgICAgICBTdWJTdHJpbmdfaW5pdCgmZXhwYW5kZWRfZm9ybWF0X3NwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgIFNUUklOR0xJQl9TVFIodG1wKSwgU1RSSU5HTElCX0xFTih0bXApKTsKKyAgICAgICAgU3ViU3RyaW5nX2luaXQoJmV4cGFuZGVkX2Zvcm1hdF9zcGVjLCB0bXAsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRtcCkpOwogICAgICAgICBhY3R1YWxfZm9ybWF0X3NwZWMgPSAmZXhwYW5kZWRfZm9ybWF0X3NwZWM7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgYWN0dWFsX2Zvcm1hdF9zcGVjID0gZm9ybWF0X3NwZWM7CiAKLSAgICBpZiAocmVuZGVyX2ZpZWxkKGZpZWxkb2JqLCBhY3R1YWxfZm9ybWF0X3NwZWMsIG91dHB1dCkgPT0gMCkKKyAgICBpZiAocmVuZGVyX2ZpZWxkKGZpZWxkb2JqLCBhY3R1YWxfZm9ybWF0X3NwZWMsIHdyaXRlcikgPT0gMCkKICAgICAgICAgZ290byBkb25lOwogCiAgICAgcmVzdWx0ID0gMTsKQEAgLTk1NCw3ICs4NjYsNyBAQAogKi8KIHN0YXRpYyBpbnQKIGRvX21hcmt1cChTdWJTdHJpbmcgKmlucHV0LCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKLSAgICAgICAgICBPdXRwdXRTdHJpbmcgKm91dHB1dCwgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCisgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBpbnQgcmVjdXJzaW9uX2RlcHRoLCBBdXRvTnVtYmVyICphdXRvX251bWJlcikKIHsKICAgICBNYXJrdXBJdGVyYXRvciBpdGVyOwogICAgIGludCBmb3JtYXRfc3BlY19uZWVkc19leHBhbmRpbmc7CkBAIC05NjMsMjAgKzg3NSwzNSBAQAogICAgIFN1YlN0cmluZyBsaXRlcmFsOwogICAgIFN1YlN0cmluZyBmaWVsZF9uYW1lOwogICAgIFN1YlN0cmluZyBmb3JtYXRfc3BlYzsKLSAgICBTVFJJTkdMSUJfQ0hBUiBjb252ZXJzaW9uOworICAgIFB5X1VDUzQgY29udmVyc2lvbiwgbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IHN1YmxlbjsKKyAgICBpbnQgZXJyOwogCi0gICAgTWFya3VwSXRlcmF0b3JfaW5pdCgmaXRlciwgaW5wdXQtPnB0ciwgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIpOworICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0ZXIsIGlucHV0LT5zdHIsIGlucHV0LT5zdGFydCwgaW5wdXQtPmVuZCk7CiAgICAgd2hpbGUgKChyZXN1bHQgPSBNYXJrdXBJdGVyYXRvcl9uZXh0KCZpdGVyLCAmbGl0ZXJhbCwgJmZpZWxkX3ByZXNlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaWVsZF9uYW1lLCAmZm9ybWF0X3NwZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb252ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0X3NwZWNfbmVlZHNfZXhwYW5kaW5nKSkgPT0gMikgewotICAgICAgICBpZiAoIW91dHB1dF9kYXRhKG91dHB1dCwgbGl0ZXJhbC5wdHIsIGxpdGVyYWwuZW5kIC0gbGl0ZXJhbC5wdHIpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChmaWVsZF9wcmVzZW50KQorICAgICAgICBzdWJsZW4gPSBsaXRlcmFsLmVuZCAtIGxpdGVyYWwuc3RhcnQ7CisgICAgICAgIGlmIChzdWJsZW4pIHsKKyAgICAgICAgICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKGxpdGVyYWwuc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbC5zdGFydCwgbGl0ZXJhbC5lbmQpOworICAgICAgICAgICAgZXJyID0gX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3VibGVuLCBtYXhjaGFyKTsKKyAgICAgICAgICAgIGlmIChlcnIgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXRlcmFsLnN0ciwgbGl0ZXJhbC5zdGFydCwgc3VibGVuKTsKKyAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IHN1YmxlbjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaWVsZF9wcmVzZW50KSB7CisgICAgICAgICAgICBpZiAoaXRlci5zdHIuc3RhcnQgPT0gaXRlci5zdHIuZW5kKQorICAgICAgICAgICAgICAgIHdyaXRlci0+b3ZlcmFsbG9jYXRlID0gMDsKICAgICAgICAgICAgIGlmICghb3V0cHV0X21hcmt1cCgmZmllbGRfbmFtZSwgJmZvcm1hdF9zcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgY29udmVyc2lvbiwgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZywgY29udmVyc2lvbiwgd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLCBhdXRvX251bWJlcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTk5MCw0MyArOTE3LDI2IEBACiBidWlsZF9zdHJpbmcoU3ViU3RyaW5nICppbnB1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCiAgICAgICAgICAgICAgaW50IHJlY3Vyc2lvbl9kZXB0aCwgQXV0b051bWJlciAqYXV0b19udW1iZXIpCiB7Ci0gICAgT3V0cHV0U3RyaW5nIG91dHB1dDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotCi0gICAgb3V0cHV0Lm9iaiA9IE5VTEw7IC8qIG5lZWRlZCBzbyBjbGVhbnVwIGNvZGUgYWx3YXlzIHdvcmtzICovCisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgUHlfc3NpemVfdCBtaW5sZW47CiAKICAgICAvKiBjaGVjayB0aGUgcmVjdXJzaW9uIGxldmVsICovCiAgICAgaWYgKHJlY3Vyc2lvbl9kZXB0aCA8PSAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIk1heCBzdHJpbmcgcmVjdXJzaW9uIGV4Y2VlZGVkIik7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgLyogaW5pdGlhbCBzaXplIGlzIHRoZSBsZW5ndGggb2YgdGhlIGZvcm1hdCBzdHJpbmcsIHBsdXMgdGhlIHNpemUKLSAgICAgICBpbmNyZW1lbnQuICBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBkZWZhdWx0ICovCi0gICAgaWYgKCFvdXRwdXRfaW5pdGlhbGl6ZSgmb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQtPmVuZCAtIGlucHV0LT5wdHIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5JVElBTF9TSVpFX0lOQ1JFTUVOVCkpCi0gICAgICAgIGdvdG8gZG9uZTsKKyAgICBtaW5sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dC0+c3RyKSArIDEwMDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgbWlubGVuKTsKIAotICAgIGlmICghZG9fbWFya3VwKGlucHV0LCBhcmdzLCBrd2FyZ3MsICZvdXRwdXQsIHJlY3Vyc2lvbl9kZXB0aCwKKyAgICBpZiAoIWRvX21hcmt1cChpbnB1dCwgYXJncywga3dhcmdzLCAmd3JpdGVyLCByZWN1cnNpb25fZGVwdGgsCiAgICAgICAgICAgICAgICAgICAgYXV0b19udW1iZXIpKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBjb3VudCA9IG91dHB1dC5wdHIgLSBTVFJJTkdMSUJfU1RSKG91dHB1dC5vYmopOwotICAgIGlmIChTVFJJTkdMSUJfUkVTSVpFKCZvdXRwdXQub2JqLCBjb3VudCkgPCAwKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICB9Ci0KLSAgICAvKiB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0ICovCi0gICAgcmVzdWx0ID0gb3V0cHV0Lm9iajsKLSAgICBvdXRwdXQub2JqID0gTlVMTDsKLQotZG9uZToKLSAgICBQeV9YREVDUkVGKG91dHB1dC5vYmopOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpAQCAtMTA0Nyw4ICs5NTcsMTEgQEAKIAogICAgIEF1dG9OdW1iZXIgYXV0b19udW1iZXI7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIEF1dG9OdW1iZXJfSW5pdCgmYXV0b19udW1iZXIpOwotICAgIFN1YlN0cmluZ19pbml0KCZpbnB1dCwgU1RSSU5HTElCX1NUUihzZWxmKSwgU1RSSU5HTElCX0xFTihzZWxmKSk7CisgICAgU3ViU3RyaW5nX2luaXQoJmlucHV0LCBzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CiAgICAgcmV0dXJuIGJ1aWxkX3N0cmluZygmaW5wdXQsIGFyZ3MsIGt3YXJncywgcmVjdXJzaW9uX2RlcHRoLCAmYXV0b19udW1iZXIpOwogfQogCkBAIC0xMDcwLDkgKzk4Myw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0KLSAgICBTVFJJTkdMSUJfT0JKRUNUICpzdHI7Ci0KKyAgICBQeU9iamVjdCAqc3RyOwogICAgIE1hcmt1cEl0ZXJhdG9yIGl0X21hcmt1cDsKIH0gZm9ybWF0dGVyaXRlcm9iamVjdDsKIApAQCAtMTA5Nyw3ICsxMDA4LDcgQEAKICAgICBTdWJTdHJpbmcgbGl0ZXJhbDsKICAgICBTdWJTdHJpbmcgZmllbGRfbmFtZTsKICAgICBTdWJTdHJpbmcgZm9ybWF0X3NwZWM7Ci0gICAgU1RSSU5HTElCX0NIQVIgY29udmVyc2lvbjsKKyAgICBQeV9VQ1M0IGNvbnZlcnNpb247CiAgICAgaW50IGZvcm1hdF9zcGVjX25lZWRzX2V4cGFuZGluZzsKICAgICBpbnQgZmllbGRfcHJlc2VudDsKICAgICBpbnQgcmVzdWx0ID0gTWFya3VwSXRlcmF0b3JfbmV4dCgmaXQtPml0X21hcmt1cCwgJmxpdGVyYWwsICZmaWVsZF9wcmVzZW50LApAQCAtMTE0MSw3ICsxMDUyLDggQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihjb252ZXJzaW9uX3N0cik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udmVyc2lvbl9zdHIgPSBTVFJJTkdMSUJfTkVXKCZjb252ZXJzaW9uLCAxKTsKKyAgICAgICAgICAgIGNvbnZlcnNpb25fc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29udmVyc2lvbiwgMSk7CiAgICAgICAgIGlmIChjb252ZXJzaW9uX3N0ciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBkb25lOwogCkBAIC0xMTk4LDcgKzExMTAsNyBAQAogICAgZGVzY3JpYmluZyB0aGUgcGFyc2VkIGVsZW1lbnRzLiAgSXQncyBhIHdyYXBwZXIgYXJvdW5kCiAgICBzdHJpbmdsaWIvc3RyaW5nX2Zvcm1hdC5oJ3MgTWFya3VwSXRlcmF0b3IgKi8KIHN0YXRpYyBQeU9iamVjdCAqCi1mb3JtYXR0ZXJfcGFyc2VyKFB5T2JqZWN0ICppZ25vcmVkLCBTVFJJTkdMSUJfT0JKRUNUICpzZWxmKQorZm9ybWF0dGVyX3BhcnNlcihQeU9iamVjdCAqaWdub3JlZCwgUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgZm9ybWF0dGVyaXRlcm9iamVjdCAqaXQ7CiAKQEAgLTEyMDcsNiArMTExOSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaXQgPSBQeU9iamVjdF9OZXcoZm9ybWF0dGVyaXRlcm9iamVjdCwgJlB5Rm9ybWF0dGVySXRlcl9UeXBlKTsKICAgICBpZiAoaXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjE2LDEwICsxMTMxLDcgQEAKICAgICBpdC0+c3RyID0gc2VsZjsKIAogICAgIC8qIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lZCBNYXJrdXBJdGVyYXRvciAqLwotICAgIE1hcmt1cEl0ZXJhdG9yX2luaXQoJml0LT5pdF9tYXJrdXAsCi0gICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgU1RSSU5HTElCX0xFTihzZWxmKSk7Ci0KKyAgICBNYXJrdXBJdGVyYXRvcl9pbml0KCZpdC0+aXRfbWFya3VwLCAoUHlPYmplY3QqKXNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopaXQ7CiB9CiAKQEAgLTEyMzUsOSArMTE0Nyw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0KLSAgICBTVFJJTkdMSUJfT0JKRUNUICpzdHI7Ci0KKyAgICBQeU9iamVjdCAqc3RyOwogICAgIEZpZWxkTmFtZUl0ZXJhdG9yIGl0X2ZpZWxkOwogfSBmaWVsZG5hbWVpdGVyb2JqZWN0OwogCkBAIC0xMzM4LDcgKzEyNDgsNyBAQAogICAgZmllbGRfbmFtZV9zcGxpdC4gIFRoZSBpdGVyYXRvciBpdCByZXR1cm5zIGlzIGEKICAgIEZpZWxkTmFtZUl0ZXJhdG9yICovCiBzdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0dGVyX2ZpZWxkX25hbWVfc3BsaXQoUHlPYmplY3QgKmlnbm9yZWQsIFNUUklOR0xJQl9PQkpFQ1QgKnNlbGYpCitmb3JtYXR0ZXJfZmllbGRfbmFtZV9zcGxpdChQeU9iamVjdCAqaWdub3JlZCwgUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgU3ViU3RyaW5nIGZpcnN0OwogICAgIFB5X3NzaXplX3QgZmlyc3RfaWR4OwpAQCAtMTM1Miw2ICsxMjYyLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpdCA9IFB5T2JqZWN0X05ldyhmaWVsZG5hbWVpdGVyb2JqZWN0LCAmUHlGaWVsZE5hbWVJdGVyX1R5cGUpOwogICAgIGlmIChpdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNjMsOCArMTI3Niw3IEBACiAKICAgICAvKiBQYXNzIGluIGF1dG9fbnVtYmVyID0gTlVMTC4gV2UnbGwgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IKICAgICAgICBmaXJzdF9vYmogaW4gdGhhdCBjYXNlLiAqLwotICAgIGlmICghZmllbGRfbmFtZV9zcGxpdChTVFJJTkdMSUJfU1RSKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBTVFJJTkdMSUJfTEVOKHNlbGYpLAorICAgIGlmICghZmllbGRfbmFtZV9zcGxpdCgoUHlPYmplY3QqKXNlbGYsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZmaXJzdF9pZHgsICZpdC0+aXRfZmllbGQsIE5VTEwpKQogICAgICAgICBnb3RvIGRvbmU7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmggYi9PYmplY3RzL3N0cmluZ2xpYi91bmljb2RlZGVmcy5oCmluZGV4IDA5ZGFlNmQuLmYxNmYyMWUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RyaW5nbGliL3VuaWNvZGVkZWZzLmgKKysrIGIvT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaApAQCAtNiw3ICs2LDEwIEBACiAgICBjb21waWxlZCBhcyB1bmljb2RlLiAqLwogI2RlZmluZSBTVFJJTkdMSUJfSVNfVU5JQ09ERSAgICAgMQogCisjZGVmaW5lIEZBU1RTRUFSQ0ggICAgICAgICAgICAgICBmYXN0c2VhcmNoCisjZGVmaW5lIFNUUklOR0xJQihGKSAgICAgICAgICAgICBzdHJpbmdsaWJfIyNGCiAjZGVmaW5lIFNUUklOR0xJQl9PQkpFQ1QgICAgICAgICBQeVVuaWNvZGVPYmplY3QKKyNkZWZpbmUgU1RSSU5HTElCX1NJWkVPRl9DSEFSICAgIFB5X1VOSUNPREVfU0laRQogI2RlZmluZSBTVFJJTkdMSUJfQ0hBUiAgICAgICAgICAgUHlfVU5JQ09ERQogI2RlZmluZSBTVFJJTkdMSUJfVFlQRV9OQU1FICAgICAgInVuaWNvZGUiCiAjZGVmaW5lIFNUUklOR0xJQl9QQVJTRV9DT0RFICAgICAiVSIKQEAgLTE1LDE3ICsxOCwxMiBAQAogI2RlZmluZSBTVFJJTkdMSUJfSVNMSU5FQlJFQUsgICAgQkxPT01fTElORUJSRUFLCiAjZGVmaW5lIFNUUklOR0xJQl9JU0RFQ0lNQUwgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTAogI2RlZmluZSBTVFJJTkdMSUJfVE9ERUNJTUFMICAgICAgUHlfVU5JQ09ERV9UT0RFQ0lNQUwKLSNkZWZpbmUgU1RSSU5HTElCX1RPVVBQRVIgICAgICAgIFB5X1VOSUNPREVfVE9VUFBFUgotI2RlZmluZSBTVFJJTkdMSUJfVE9MT1dFUiAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSCi0jZGVmaW5lIFNUUklOR0xJQl9GSUxMICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwKICNkZWZpbmUgU1RSSU5HTElCX1NUUiAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFCiAjZGVmaW5lIFNUUklOR0xJQl9MRU4gICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUKICNkZWZpbmUgU1RSSU5HTElCX05FVyAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZQogI2RlZmluZSBTVFJJTkdMSUJfUkVTSVpFICAgICAgICAgUHlVbmljb2RlX1Jlc2l6ZQogI2RlZmluZSBTVFJJTkdMSUJfQ0hFQ0sgICAgICAgICAgUHlVbmljb2RlX0NoZWNrCiAjZGVmaW5lIFNUUklOR0xJQl9DSEVDS19FWEFDVCAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdAotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkcgICAgICAgX1B5VW5pY29kZV9JbnNlcnRUaG91c2FuZHNHcm91cGluZwotI2RlZmluZSBTVFJJTkdMSUJfR1JPVVBJTkdfTE9DQUxFIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKIAogI2lmIFBZX1ZFUlNJT05fSEVYIDwgMHgwMzAwMDAwMAogI2RlZmluZSBTVFJJTkdMSUJfVE9TVFIgICAgICAgICAgUHlPYmplY3RfVW5pY29kZQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90dXBsZW9iamVjdC5jIGIvT2JqZWN0cy90dXBsZW9iamVjdC5jCmluZGV4IGIzNDU0NjAuLjljODQzZmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHVwbGVvYmplY3QuYworKysgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKQEAgLTQ1LDYgKzQ1LDIyIEBACiB9CiAjZW5kaWYKIAorLyogUHJpbnQgc3VtbWFyeSBpbmZvIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGUgb3B0aW1pemVkIGFsbG9jYXRvciAqLwordm9pZAorX1B5VHVwbGVfRGVidWdNYWxsb2NTdGF0cyhGSUxFICpvdXQpCit7CisjaWYgUHlUdXBsZV9NQVhTQVZFU0laRSA+IDAKKyAgICBpbnQgaTsKKyAgICBjaGFyIGJ1ZlsxMjhdOworICAgIGZvciAoaSA9IDE7IGkgPCBQeVR1cGxlX01BWFNBVkVTSVpFOyBpKyspIHsKKyAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAorICAgICAgICAgICAgICAgICAgICAgICJmcmVlICVkLXNpemVkIFB5VHVwbGVPYmplY3QiLCBpKTsKKyAgICAgICAgX1B5RGVidWdBbGxvY2F0b3JTdGF0cyhvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWZyZWVbaV0sIF9QeU9iamVjdF9WQVJfU0laRSgmUHlUdXBsZV9UeXBlLCBpKSk7CisgICAgfQorI2VuZGlmCit9CiAKIFB5T2JqZWN0ICoKIFB5VHVwbGVfTmV3KHJlZ2lzdGVyIFB5X3NzaXplX3Qgc2l6ZSkKQEAgLTgwLDE1ICs5NiwxMSBAQAogICAgIGVsc2UKICNlbmRpZgogICAgIHsKLSAgICAgICAgUHlfc3NpemVfdCBuYnl0ZXMgPSBzaXplICogc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAgICAgaWYgKG5ieXRlcyAvIHNpemVvZihQeU9iamVjdCAqKSAhPSAoc2l6ZV90KXNpemUgfHwKLSAgICAgICAgICAgIChuYnl0ZXMgPiBQWV9TU0laRV9UX01BWCAtIHNpemVvZihQeVR1cGxlT2JqZWN0KSAtIHNpemVvZihQeU9iamVjdCAqKSkpCi0gICAgICAgIHsKKyAgICAgICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSBzaXplb2YoUHlUdXBsZU9iamVjdCkgLQorICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlPYmplY3QgKikpIC8gc2l6ZW9mKFB5T2JqZWN0ICopKSB7CiAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgfQotICAgICAgICBuYnl0ZXMgKz0gc2l6ZW9mKFB5VHVwbGVPYmplY3QpIC0gc2l6ZW9mKFB5T2JqZWN0ICopOwotCiAgICAgICAgIG9wID0gUHlPYmplY3RfR0NfTmV3VmFyKFB5VHVwbGVPYmplY3QsICZQeVR1cGxlX1R5cGUsIHNpemUpOwogICAgICAgICBpZiAob3AgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzE1LDExICszMjcsMTIgQEAKIHN0YXRpYyBQeV9oYXNoX3QKIHR1cGxlaGFzaChQeVR1cGxlT2JqZWN0ICp2KQogewotICAgIHJlZ2lzdGVyIFB5X2hhc2hfdCB4LCB5OworICAgIHJlZ2lzdGVyIFB5X3VoYXNoX3QgeDsKKyAgICByZWdpc3RlciBQeV9oYXNoX3QgeTsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGxlbiA9IFB5X1NJWkUodik7CiAgICAgcmVnaXN0ZXIgUHlPYmplY3QgKipwOwotICAgIFB5X2hhc2hfdCBtdWx0ID0gX1B5SEFTSF9NVUxUSVBMSUVSOwotICAgIHggPSAweDM0NTY3OEw7CisgICAgUHlfdWhhc2hfdCBtdWx0ID0gX1B5SEFTSF9NVUxUSVBMSUVSOworICAgIHggPSAweDM0NTY3ODsKICAgICBwID0gdi0+b2JfaXRlbTsKICAgICB3aGlsZSAoLS1sZW4gPj0gMCkgewogICAgICAgICB5ID0gUHlPYmplY3RfSGFzaCgqcCsrKTsKQEAgLTMzMCw3ICszNDMsNyBAQAogICAgICAgICBtdWx0ICs9IChQeV9oYXNoX3QpKDgyNTIwTCArIGxlbiArIGxlbik7CiAgICAgfQogICAgIHggKz0gOTc1MzFMOwotICAgIGlmICh4ID09IC0xKQorICAgIGlmICh4ID09IChQeV91aGFzaF90KS0xKQogICAgICAgICB4ID0gLTI7CiAgICAgcmV0dXJuIHg7CiB9CkBAIC00NjQsOSArNDc3LDkgQEAKICAgICAgICAgaWYgKFB5X1NJWkUoYSkgPT0gMCkKICAgICAgICAgICAgIHJldHVybiBQeVR1cGxlX05ldygwKTsKICAgICB9Ci0gICAgc2l6ZSA9IFB5X1NJWkUoYSkgKiBuOwotICAgIGlmIChzaXplL1B5X1NJWkUoYSkgIT0gbikKKyAgICBpZiAobiA+IFBZX1NTSVpFX1RfTUFYIC8gUHlfU0laRShhKSkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgc2l6ZSA9IFB5X1NJWkUoYSkgKiBuOwogICAgIG5wID0gKFB5VHVwbGVPYmplY3QgKikgUHlUdXBsZV9OZXcoc2l6ZSk7CiAgICAgaWYgKG5wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTQ2LDEwICs1NTksOCBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IHZsZW4sIHdsZW47CiAKLSAgICBpZiAoIVB5VHVwbGVfQ2hlY2sodikgfHwgIVB5VHVwbGVfQ2hlY2sodykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICAgICAgcmV0dXJuIFB5X05vdEltcGxlbWVudGVkOwotICAgIH0KKyAgICBpZiAoIVB5VHVwbGVfQ2hlY2sodikgfHwgIVB5VHVwbGVfQ2hlY2sodykpCisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKIAogICAgIHZ0ID0gKFB5VHVwbGVPYmplY3QgKil2OwogICAgIHd0ID0gKFB5VHVwbGVPYmplY3QgKil3OwpAQCAtOTcwLDggKzk4MSwzOSBAQAogCiBQeURvY19TVFJWQVIobGVuZ3RoX2hpbnRfZG9jLCAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CiAKK3N0YXRpYyBQeU9iamVjdCAqCit0dXBsZWl0ZXJfcmVkdWNlKHR1cGxlaXRlcm9iamVjdCAqaXQpCit7CisgICAgaWYgKGl0LT5pdF9zZXEpCisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbCIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiTigoKSkiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3R1cGxlaXRlcl9zZXRzdGF0ZSh0dXBsZWl0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgbG9uZyBpbmRleCA9IFB5TG9uZ19Bc0xvbmcoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGl0LT5pdF9zZXEgIT0gTlVMTCAmJiBpbmRleCA+IFB5VHVwbGVfR0VUX1NJWkUoaXQtPml0X3NlcSkpCisgICAgICAgICAgICBpbmRleCA9IFB5VHVwbGVfR0VUX1NJWkUoaXQtPml0X3NlcSk7CisgICAgICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKwogc3RhdGljIFB5TWV0aG9kRGVmIHR1cGxlaXRlcl9tZXRob2RzW10gPSB7CiAgICAgeyJfX2xlbmd0aF9oaW50X18iLCAoUHlDRnVuY3Rpb24pdHVwbGVpdGVyX2xlbiwgTUVUSF9OT0FSR1MsIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgKFB5Q0Z1bmN0aW9uKXR1cGxlaXRlcl9yZWR1Y2UsIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7Il9fc2V0c3RhdGVfXyIsIChQeUNGdW5jdGlvbil0dXBsZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCBmZDJhZTY3Li41ZDYyNWEyIDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtMTQsMTYgKzE0LDE3IEBACiAgICBNQ0FDSEVfTUFYX0FUVFJfU0laRSwgc2luY2UgaXQgbWlnaHQgYmUgYSBwcm9ibGVtIGlmIHZlcnkgbGFyZ2UKICAgIHN0cmluZ3MgYXJlIHVzZWQgYXMgYXR0cmlidXRlIG5hbWVzLiAqLwogI2RlZmluZSBNQ0FDSEVfTUFYX0FUVFJfU0laRSAgICAxMDAKLSNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgMTAKKyNkZWZpbmUgTUNBQ0hFX1NJWkVfRVhQICAgICAgICAgOQogI2RlZmluZSBNQ0FDSEVfSEFTSCh2ZXJzaW9uLCBuYW1lX2hhc2gpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAoKCh1bnNpZ25lZCBpbnQpKHZlcnNpb24pICogKHVuc2lnbmVkIGludCkobmFtZV9oYXNoKSkgICAgICAgICAgXAogICAgICAgICAgPj4gKDgqc2l6ZW9mKHVuc2lnbmVkIGludCkgLSBNQ0FDSEVfU0laRV9FWFApKQogI2RlZmluZSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBNQ0FDSEVfSEFTSCgodHlwZSktPnRwX3ZlcnNpb25fdGFnLCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgKChQeVVuaWNvZGVPYmplY3QgKikobmFtZSkpLT5oYXNoKQorICAgICAgICAgICAgICAgICAgICAoKFB5QVNDSUlPYmplY3QgKikobmFtZSkpLT5oYXNoKQogI2RlZmluZSBNQ0FDSEVfQ0FDSEVBQkxFX05BTUUobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBQeVVuaWNvZGVfQ2hlY2tFeGFjdChuYW1lKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShuYW1lKSA8PSBNQ0FDSEVfTUFYX0FUVFJfU0laRQorICAgICAgICBQeVVuaWNvZGVfUkVBRFkobmFtZSkgIT0gLTEgJiYgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA8PSBNQ0FDSEVfTUFYX0FUVFJfU0laRQogCiBzdHJ1Y3QgbWV0aG9kX2NhY2hlX2VudHJ5IHsKICAgICB1bnNpZ25lZCBpbnQgdmVyc2lvbjsKQEAgLTM0LDYgKzM1LDIyIEBACiBzdGF0aWMgc3RydWN0IG1ldGhvZF9jYWNoZV9lbnRyeSBtZXRob2RfY2FjaGVbMSA8PCBNQ0FDSEVfU0laRV9FWFBdOwogc3RhdGljIHVuc2lnbmVkIGludCBuZXh0X3ZlcnNpb25fdGFnID0gMDsKIAorX1B5X0lERU5USUZJRVIoX19jbGFzc19fKTsKK19QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKK19QeV9JREVOVElGSUVSKF9fZG9jX18pOworX1B5X0lERU5USUZJRVIoX19nZXRpdGVtX18pOworX1B5X0lERU5USUZJRVIoX19nZXRhdHRyaWJ1dGVfXyk7CitfUHlfSURFTlRJRklFUihfX2hhc2hfXyk7CitfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKK19QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKK19QeV9JREVOVElGSUVSKF9fbmV3X18pOworCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VHlwZV9Mb29rdXBJZChQeVR5cGVPYmplY3QgKnR5cGUsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CisKIHVuc2lnbmVkIGludAogUHlUeXBlX0NsZWFyQ2FjaGUodm9pZCkKIHsKQEAgLTk2LDE1ICsxMTMsMTMgQEAKIHN0YXRpYyB2b2lkCiB0eXBlX21yb19tb2RpZmllZChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpiYXNlcykgewogICAgIC8qCi0gICAgICAgQ2hlY2sgdGhhdCBhbGwgYmFzZSBjbGFzc2VzIG9yIGVsZW1lbnRzIG9mIHRoZSBtcm8gb2YgdHlwZSBhcmUKKyAgICAgICBDaGVjayB0aGF0IGFsbCBiYXNlIGNsYXNzZXMgb3IgZWxlbWVudHMgb2YgdGhlIE1STyBvZiB0eXBlIGFyZQogICAgICAgIGFibGUgdG8gYmUgY2FjaGVkLiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGJhc2UKICAgICAgICBjbGFzc2VzIG9yIG1ybyBvZiB0aGUgdHlwZSBhcmUgYWx0ZXJlZC4KIAogICAgICAgIFVuc2V0IEhBVkVfVkVSU0lPTl9UQUcgYW5kIFZBTElEX1ZFUlNJT05fVEFHIGlmIHRoZSB0eXBlCi0gICAgICAgaW5oZXJpdHMgZnJvbSBhbiBvbGQtc3R5bGUgY2xhc3MsIGVpdGhlciBkaXJlY3RseSBvciBpZiBpdAotICAgICAgIGFwcGVhcnMgaW4gdGhlIE1STyBvZiBhIG5ldy1zdHlsZSBjbGFzcy4gIE5vIHN1cHBvcnQgZWl0aGVyIGZvcgotICAgICAgIGN1c3RvbSBNUk9zIHRoYXQgaW5jbHVkZSB0eXBlcyB0aGF0IGFyZSBub3Qgb2ZmaWNpYWxseSBzdXBlcgotICAgICAgIHR5cGVzLgorICAgICAgIGhhcyBhIGN1c3RvbSBNUk8gdGhhdCBpbmNsdWRlcyBhIHR5cGUgd2hpY2ggaXMgbm90IG9mZmljaWFsbHkKKyAgICAgICBzdXBlciB0eXBlLgogCiAgICAgICAgQ2FsbGVkIGZyb20gbXJvX2ludGVybmFsLCB3aGljaCB3aWxsIHN1YnNlcXVlbnRseSBiZSBjYWxsZWQgb24KICAgICAgICBlYWNoIHN1YmNsYXNzIHdoZW4gdGhlaXIgbXJvIGlzIHJlY3Vyc2l2ZWx5IHVwZGF0ZWQuCkBAIC0xMjAsMTEgKzEzNSw3IEBACiAgICAgICAgIFB5T2JqZWN0ICpiID0gUHlUdXBsZV9HRVRfSVRFTShiYXNlcywgaSk7CiAgICAgICAgIFB5VHlwZU9iamVjdCAqY2xzOwogCi0gICAgICAgIGlmICghUHlUeXBlX0NoZWNrKGIpICkgewotICAgICAgICAgICAgY2xlYXIgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQorICAgICAgICBhc3NlcnQoUHlUeXBlX0NoZWNrKGIpKTsKICAgICAgICAgY2xzID0gKFB5VHlwZU9iamVjdCAqKWI7CiAKICAgICAgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShjbHMsIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRykgfHwKQEAgLTIwMSw2ICsyMTIsMjIgQEAKICAgICB7MH0KIH07CiAKK3N0YXRpYyBpbnQKK2NoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cihQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2YWx1ZSwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLiVzIiwgdHlwZS0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgZGVsZXRlICVzLiVzIiwgdHlwZS0+dHBfbmFtZSwgbmFtZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCiB7CkBAIC0yMjIsNiArMjQ5LDE5IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgordHlwZV9xdWFsbmFtZShQeVR5cGVPYmplY3QgKnR5cGUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgaWYgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkgeworICAgICAgICBQeUhlYXBUeXBlT2JqZWN0KiBldCA9IChQeUhlYXBUeXBlT2JqZWN0Kil0eXBlOworICAgICAgICBQeV9JTkNSRUYoZXQtPmh0X3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIGV0LT5odF9xdWFsbmFtZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiB0eXBlX25hbWUodHlwZSwgY29udGV4dCk7CisgICAgfQorfQorCiBzdGF0aWMgaW50CiB0eXBlX3NldF9uYW1lKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjb250ZXh0KQogewpAQCAtMjI5LDE2ICsyNjksOCBAQAogICAgIGNoYXIgKnRwX25hbWU7CiAgICAgUHlPYmplY3QgKnRtcDsKIAotICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZXQgJXMuX19uYW1lX18iLCB0eXBlLT50cF9uYW1lKTsKKyAgICBpZiAoIWNoZWNrX3NldF9zcGVjaWFsX3R5cGVfYXR0cih0eXBlLCB2YWx1ZSwgIl9fbmFtZV9fIikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy5fX25hbWVfXyIsIHR5cGUtPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiBzdHJpbmcgdG8gJXMuX19uYW1lX18sIG5vdCAnJXMnIiwKQEAgLTI3NCw2ICszMDYsMjUgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludAordHlwZV9zZXRfcXVhbG5hbWUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgUHlIZWFwVHlwZU9iamVjdCogZXQ7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4gb25seSBhc3NpZ24gc3RyaW5nIHRvICVzLl9fcXVhbG5hbWVfXywgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIFB5X0RFQ1JFRihldC0+aHRfcXVhbG5hbWUpOworICAgIGV0LT5odF9xdWFsbmFtZSA9IHZhbHVlOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewpAQCAtMjgxLDcgKzMzMiw3IEBACiAgICAgY2hhciAqczsKIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKLSAgICAgICAgbW9kID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbW9kdWxlX18iKTsKKyAgICAgICAgbW9kID0gX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXyk7CiAgICAgICAgIGlmICghbW9kKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJfX21vZHVsZV9fIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTMwMSwyMCArMzUyLDEyIEBACiBzdGF0aWMgaW50CiB0eXBlX3NldF9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgaWYgKCEodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IHNldCAlcy5fX21vZHVsZV9fIiwgdHlwZS0+dHBfbmFtZSk7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX21vZHVsZV9fIikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy5fX21vZHVsZV9fIiwgdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAKICAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CiAKLSAgICByZXR1cm4gUHlEaWN0X1NldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbW9kdWxlX18iLCB2YWx1ZSk7CisgICAgcmV0dXJuIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIHZhbHVlKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQzNSwxNiArNDc4LDggQEAKICAgICBQeVR5cGVPYmplY3QgKm5ld19iYXNlLCAqb2xkX2Jhc2U7CiAgICAgUHlPYmplY3QgKm9sZF9iYXNlcywgKm9sZF9tcm87CiAKLSAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY2FuJ3Qgc2V0ICVzLl9fYmFzZXNfXyIsIHR5cGUtPnRwX25hbWUpOworICAgIGlmICghY2hlY2tfc2V0X3NwZWNpYWxfdHlwZV9hdHRyKHR5cGUsIHZhbHVlLCAiX19iYXNlc19fIikpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKCF2YWx1ZSkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImNhbid0IGRlbGV0ZSAlcy5fX2Jhc2VzX18iLCB0eXBlLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KICAgICBpZiAoIVB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgImNhbiBvbmx5IGFzc2lnbiB0dXBsZSB0byAlcy5fX2Jhc2VzX18sIG5vdCAlcyIsCkBAIC00NjEsOCArNDk2LDcgQEAKICAgICAgICAgb2IgPSBQeVR1cGxlX0dFVF9JVEVNKHZhbHVlLCBpKTsKICAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2sob2IpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlcy5fX2Jhc2VzX18gbXVzdCBiZSB0dXBsZSBvZiBvbGQtIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAibmV3LXN0eWxlIGNsYXNzZXMsIG5vdCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJXMuX19iYXNlc19fIG11c3QgYmUgdHVwbGUgb2YgY2xhc3Nlcywgbm90ICclcyciLAogICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUsIFB5X1RZUEUob2IpLT50cF9uYW1lKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNTgwLDcgKzYxNCw3IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpICYmIHR5cGUtPnRwX2RvYyAhPSBOVUxMKQogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcodHlwZS0+dHBfZG9jKTsKLSAgICByZXN1bHQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIpOworICAgIHJlc3VsdCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18pOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewogICAgICAgICByZXN1bHQgPSBQeV9Ob25lOwogICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKQEAgLTU5NSw2ICs2MjksMTUgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgaW50Cit0eXBlX3NldF9kb2MoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCit7CisgICAgaWYgKCFjaGVja19zZXRfc3BlY2lhbF90eXBlX2F0dHIodHlwZSwgdmFsdWUsICJfX2RvY19fIikpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CisgICAgcmV0dXJuIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fZG9jX18sIHZhbHVlKTsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKIHR5cGVfX19pbnN0YW5jZWNoZWNrX18oUHlPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICppbnN0KQogewpAQCAtNjI1LDEyICs2NjgsMTMgQEAKIAogc3RhdGljIFB5R2V0U2V0RGVmIHR5cGVfZ2V0c2V0c1tdID0gewogICAgIHsiX19uYW1lX18iLCAoZ2V0dGVyKXR5cGVfbmFtZSwgKHNldHRlcil0eXBlX3NldF9uYW1lLCBOVUxMfSwKKyAgICB7Il9fcXVhbG5hbWVfXyIsIChnZXR0ZXIpdHlwZV9xdWFsbmFtZSwgKHNldHRlcil0eXBlX3NldF9xdWFsbmFtZSwgTlVMTH0sCiAgICAgeyJfX2Jhc2VzX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2Jhc2VzLCAoc2V0dGVyKXR5cGVfc2V0X2Jhc2VzLCBOVUxMfSwKICAgICB7Il9fbW9kdWxlX18iLCAoZ2V0dGVyKXR5cGVfbW9kdWxlLCAoc2V0dGVyKXR5cGVfc2V0X21vZHVsZSwgTlVMTH0sCiAgICAgeyJfX2Fic3RyYWN0bWV0aG9kc19fIiwgKGdldHRlcil0eXBlX2Fic3RyYWN0bWV0aG9kcywKICAgICAgKHNldHRlcil0eXBlX3NldF9hYnN0cmFjdG1ldGhvZHMsIE5VTEx9LAogICAgIHsiX19kaWN0X18iLCAgKGdldHRlcil0eXBlX2RpY3QsICBOVUxMLCBOVUxMfSwKLSAgICB7Il9fZG9jX18iLCAoZ2V0dGVyKXR5cGVfZ2V0X2RvYywgTlVMTCwgTlVMTH0sCisgICAgeyJfX2RvY19fIiwgKGdldHRlcil0eXBlX2dldF9kb2MsIChzZXR0ZXIpdHlwZV9zZXRfZG9jLCBOVUxMfSwKICAgICB7MH0KIH07CiAKQEAgLTY0Niw3ICs2OTAsNyBAQAogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICAgICAgbW9kID0gTlVMTDsKICAgICB9Ci0gICAgbmFtZSA9IHR5cGVfbmFtZSh0eXBlLCBOVUxMKTsKKyAgICBuYW1lID0gdHlwZV9xdWFsbmFtZSh0eXBlLCBOVUxMKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5X1hERUNSRUYobW9kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MTEsNyArOTU1LDcgQEAKIAogICAgIC8qIEZpbmQgdGhlIG5lYXJlc3QgYmFzZSB3aXRoIGEgZGlmZmVyZW50IHRwX2RlYWxsb2MgKi8KICAgICBiYXNlID0gdHlwZTsKLSAgICB3aGlsZSAoKGJhc2VkZWFsbG9jID0gYmFzZS0+dHBfZGVhbGxvYykgPT0gc3VidHlwZV9kZWFsbG9jKSB7CisgICAgd2hpbGUgKCgvKmJhc2VkZWFsbG9jID0qLyBiYXNlLT50cF9kZWFsbG9jKSA9PSBzdWJ0eXBlX2RlYWxsb2MpIHsKICAgICAgICAgYmFzZSA9IGJhc2UtPnRwX2Jhc2U7CiAgICAgICAgIGFzc2VydChiYXNlKTsKICAgICB9CkBAIC0xMTM2LDE2ICsxMTgwLDExIEBACiAqLwogCiBzdGF0aWMgUHlPYmplY3QgKgotbG9va3VwX21heWJlKFB5T2JqZWN0ICpzZWxmLCBjaGFyICphdHRyc3RyLCBQeU9iamVjdCAqKmF0dHJvYmopCitsb29rdXBfbWF5YmUoUHlPYmplY3QgKnNlbGYsIF9QeV9JZGVudGlmaWVyICphdHRyaWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKIAotICAgIGlmICgqYXR0cm9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICphdHRyb2JqID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoYXR0cnN0cik7Ci0gICAgICAgIGlmICgqYXR0cm9iaiA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlcyA9IF9QeVR5cGVfTG9va3VwKFB5X1RZUEUoc2VsZiksICphdHRyb2JqKTsKKyAgICByZXMgPSBfUHlUeXBlX0xvb2t1cElkKFB5X1RZUEUoc2VsZiksIGF0dHJpZCk7CiAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgIGRlc2NyZ2V0ZnVuYyBmOwogICAgICAgICBpZiAoKGYgPSBQeV9UWVBFKHJlcyktPnRwX2Rlc2NyX2dldCkgPT0gTlVMTCkKQEAgLTExNTcsMTggKzExOTYsMTggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWxvb2t1cF9tZXRob2QoUHlPYmplY3QgKnNlbGYsIGNoYXIgKmF0dHJzdHIsIFB5T2JqZWN0ICoqYXR0cm9iaikKK2xvb2t1cF9tZXRob2QoUHlPYmplY3QgKnNlbGYsIF9QeV9JZGVudGlmaWVyICphdHRyaWQpCiB7Ci0gICAgUHlPYmplY3QgKnJlcyA9IGxvb2t1cF9tYXliZShzZWxmLCBhdHRyc3RyLCBhdHRyb2JqKTsKKyAgICBQeU9iamVjdCAqcmVzID0gbG9va3VwX21heWJlKHNlbGYsIGF0dHJpZCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMICYmICFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsICphdHRyb2JqKTsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBhdHRyaWQtPm9iamVjdCk7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlPYmplY3QgKgotX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoUHlPYmplY3QgKnNlbGYsIGNoYXIgKmF0dHJzdHIsIFB5T2JqZWN0ICoqYXR0cm9iaikKK19QeU9iamVjdF9Mb29rdXBTcGVjaWFsKFB5T2JqZWN0ICpzZWxmLCBfUHlfSWRlbnRpZmllciAqYXR0cmlkKQogewotICAgIHJldHVybiBsb29rdXBfbWF5YmUoc2VsZiwgYXR0cnN0ciwgYXR0cm9iaik7CisgICAgcmV0dXJuIGxvb2t1cF9tYXliZShzZWxmLCBhdHRyaWQpOwogfQogCiAvKiBBIHZhcmlhdGlvbiBvZiBQeU9iamVjdF9DYWxsTWV0aG9kIHRoYXQgdXNlcyBsb29rdXBfbWV0aG9kKCkKQEAgLTExNzYsMTcgKzEyMTUsMTcgQEAKICAgIGFzIGxvb2t1cF9tZXRob2QgdG8gY2FjaGUgdGhlIGludGVybmVkIG5hbWUgc3RyaW5nIG9iamVjdC4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqKm5hbWVvYmosIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tZXRob2QoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7CiAgICAgUHlPYmplY3QgKmFyZ3MsICpmdW5jID0gMCwgKnJldHZhbDsKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZSwgbmFtZW9iaik7CisgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAqbmFtZW9iaik7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG5hbWVpZC0+b2JqZWN0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMjEyLDE5ICsxMjUxLDE3IEBACiAvKiBDbG9uZSBvZiBjYWxsX21ldGhvZCgpIHRoYXQgcmV0dXJucyBOb3RJbXBsZW1lbnRlZCB3aGVuIHRoZSBsb29rdXAgZmFpbHMuICovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX21heWJlKFB5T2JqZWN0ICpvLCBjaGFyICpuYW1lLCBQeU9iamVjdCAqKm5hbWVvYmosIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKICAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogCi0gICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1lLCBuYW1lb2JqKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKG8sIG5hbWVpZCk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICB2YV9lbmQodmEpOwotICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTEyOTAsNyArMTMyNyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogY2xhc3NfbmFtZShQeU9iamVjdCAqY2xzKQogewotICAgIFB5T2JqZWN0ICpuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjbHMsICJfX25hbWVfXyIpOworICAgIFB5T2JqZWN0ICpuYW1lID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5X1hERUNSRUYobmFtZSk7CkBAIC0xNTQ1LDkgKzE1ODIsOSBAQAogICAgICAgICByZXN1bHQgPSBtcm9faW1wbGVtZW50YXRpb24odHlwZSk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBzdGF0aWMgUHlPYmplY3QgKm1yb19zdHI7CisgICAgICAgIF9QeV9JREVOVElGSUVSKG1ybyk7CiAgICAgICAgIGNoZWNraXQgPSAxOwotICAgICAgICBtcm8gPSBsb29rdXBfbWV0aG9kKChQeU9iamVjdCAqKXR5cGUsICJtcm8iLCAmbXJvX3N0cik7CisgICAgICAgIG1ybyA9IGxvb2t1cF9tZXRob2QoKFB5T2JqZWN0ICopdHlwZSwgJlB5SWRfbXJvKTsKICAgICAgICAgaWYgKG1ybyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KG1ybywgTlVMTCk7CkBAIC0xNTkxLDcgKzE2MjgsNyBAQAogICAgIHR5cGUtPnRwX21ybyA9IHR1cGxlOwogCiAgICAgdHlwZV9tcm9fbW9kaWZpZWQodHlwZSwgdHlwZS0+dHBfbXJvKTsKLSAgICAvKiBjb3JuZXIgY2FzZTogdGhlIG9sZC1zdHlsZSBzdXBlciBjbGFzcyBtaWdodCBoYXZlIGJlZW4gaGlkZGVuCisgICAgLyogY29ybmVyIGNhc2U6IHRoZSBzdXBlciBjbGFzcyBtaWdodCBoYXZlIGJlZW4gaGlkZGVuCiAgICAgICAgZnJvbSB0aGUgY3VzdG9tIE1STyAqLwogICAgIHR5cGVfbXJvX21vZGlmaWVkKHR5cGUsIHR5cGUtPnRwX2Jhc2VzKTsKIApAQCAtMTY0OCw5ICsxNjg1LDggQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChiYXNlID09IE5VTEwpCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAiYSBuZXctc3R5bGUgY2xhc3MgY2FuJ3QgaGF2ZSBvbmx5IGNsYXNzaWMgYmFzZXMiKTsKKyAgICBhc3NlcnQgKGJhc2UgIT0gTlVMTCk7CisKICAgICByZXR1cm4gYmFzZTsKIH0KIApAQCAtMTcxOCwxNSArMTc1NCw5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogZ2V0X2RpY3RfZGVzY3JpcHRvcihQeVR5cGVPYmplY3QgKnR5cGUpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkaWN0X3N0cjsKICAgICBQeU9iamVjdCAqZGVzY3I7CiAKLSAgICBpZiAoZGljdF9zdHIgPT0gTlVMTCkgewotICAgICAgICBkaWN0X3N0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2RpY3RfXyIpOwotICAgICAgICBpZiAoZGljdF9zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwKHR5cGUsIGRpY3Rfc3RyKTsKKyAgICBkZXNjciA9IF9QeVR5cGVfTG9va3VwSWQodHlwZSwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkZXNjciA9PSBOVUxMIHx8ICFQeURlc2NyX0lzRGF0YShkZXNjcikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNzQ0LDggKzE3NzQsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHN1YnR5cGVfZGljdChQeU9iamVjdCAqb2JqLCB2b2lkICpjb250ZXh0KQogewotICAgIFB5T2JqZWN0ICoqZGljdHB0cjsKLSAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTE3NjMsMjUgKzE3OTEsMTMgQEAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZnVuYyhkZXNjciwgb2JqLCAoUHlPYmplY3QgKikoUHlfVFlQRShvYmopKSk7CiAgICAgfQotCi0gICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7Ci0gICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaGFzIG5vIF9fZGljdF9fIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBkaWN0ID0gKmRpY3RwdHI7Ci0gICAgaWYgKGRpY3QgPT0gTlVMTCkKLSAgICAgICAgKmRpY3RwdHIgPSBkaWN0ID0gUHlEaWN0X05ldygpOwotICAgIFB5X1hJTkNSRUYoZGljdCk7Ci0gICAgcmV0dXJuIGRpY3Q7CisgICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0KG9iaiwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBpbnQKIHN1YnR5cGVfc2V0ZGljdChQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNvbnRleHQpCiB7Ci0gICAgUHlPYmplY3QgKipkaWN0cHRyOwotICAgIFB5T2JqZWN0ICpkaWN0OworICAgIFB5T2JqZWN0ICpkaWN0LCAqKmRpY3RwdHI7CiAgICAgUHlUeXBlT2JqZWN0ICpiYXNlOwogCiAgICAgYmFzZSA9IGdldF9idWlsdGluX2Jhc2Vfd2l0aF9kaWN0KFB5X1RZUEUob2JqKSk7CkBAIC0xNzk5LDcgKzE4MTUsNyBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmdW5jKGRlc2NyLCBvYmosIHZhbHVlKTsKICAgICB9Ci0KKyAgICAvKiBBbG1vc3QgbGlrZSBQeU9iamVjdF9HZW5lcmljU2V0RGljdCwgYnV0IGFsbG93IF9fZGljdF9fIHRvIGJlIGRlbGV0ZWQuICovCiAgICAgZGljdHB0ciA9IF9QeU9iamVjdF9HZXREaWN0UHRyKG9iaik7CiAgICAgaWYgKGRpY3RwdHIgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfQXR0cmlidXRlRXJyb3IsCkBAIC0xOTYwLDE0ICsxOTc2LDE2IEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9uZXcoUHlUeXBlT2JqZWN0ICptZXRhdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpuYW1lLCAqYmFzZXMsICpkaWN0OworICAgIFB5T2JqZWN0ICpuYW1lLCAqYmFzZXMgPSBOVUxMLCAqb3JpZ19kaWN0LCAqZGljdCA9IE5VTEw7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJuYW1lIiwgImJhc2VzIiwgImRpY3QiLCAwfTsKLSAgICBQeU9iamVjdCAqc2xvdHMsICp0bXAsICpuZXdzbG90czsKLSAgICBQeVR5cGVPYmplY3QgKnR5cGUsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKKyAgICBQeU9iamVjdCAqcXVhbG5hbWUsICpzbG90cyA9IE5VTEwsICp0bXAsICpuZXdzbG90czsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSBOVUxMLCAqYmFzZSwgKnRtcHR5cGUsICp3aW5uZXI7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqZXQ7CiAgICAgUHlNZW1iZXJEZWYgKm1wOwogICAgIFB5X3NzaXplX3QgaSwgbmJhc2VzLCBuc2xvdHMsIHNsb3RvZmZzZXQsIGFkZF9kaWN0LCBhZGRfd2VhazsKICAgICBpbnQgaiwgbWF5X2FkZF9kaWN0LCBtYXlfYWRkX3dlYWs7CisgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RzX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CkBAIC0xOTk3LDcgKzIwMTUsNyBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJVTyFPITp0eXBlIiwga3dsaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeVR1cGxlX1R5cGUsICZiYXNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZkaWN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIERldGVybWluZSB0aGUgcHJvcGVyIG1ldGF0eXBlIHRvIGRlYWwgd2l0aCB0aGlzOiAqLwpAQCAtMjAxNywzMCArMjAzNSwzMCBAQAogICAgIGlmIChuYmFzZXMgPT0gMCkgewogICAgICAgICBiYXNlcyA9IFB5VHVwbGVfUGFjaygxLCAmUHlCYXNlT2JqZWN0X1R5cGUpOwogICAgICAgICBpZiAoYmFzZXMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgbmJhc2VzID0gMTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBQeV9JTkNSRUYoYmFzZXMpOwogCi0gICAgLyogWFhYIEZyb20gaGVyZSB1bnRpbCB0eXBlIGlzIGFsbG9jYXRlZCwgInJldHVybiBOVUxMIiBsZWFrcyBiYXNlcyEgKi8KLQogICAgIC8qIENhbGN1bGF0ZSBiZXN0IGJhc2UsIGFuZCBjaGVjayB0aGF0IGFsbCBiYXNlcyBhcmUgdHlwZSBvYmplY3RzICovCiAgICAgYmFzZSA9IGJlc3RfYmFzZShiYXNlcyk7CiAgICAgaWYgKGJhc2UgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShiYXNlLCBQeV9UUEZMQUdTX0JBU0VUWVBFKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgInR5cGUgJyUuMTAwcycgaXMgbm90IGFuIGFjY2VwdGFibGUgYmFzZSB0eXBlIiwKICAgICAgICAgICAgICAgICAgICAgIGJhc2UtPnRwX25hbWUpOwotICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKKyAgICBkaWN0ID0gUHlEaWN0X0NvcHkob3JpZ19kaWN0KTsKKyAgICBpZiAoZGljdCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCiAgICAgLyogQ2hlY2sgZm9yIGEgX19zbG90c19fIHNlcXVlbmNlIHZhcmlhYmxlIGluIGRpY3QsIGFuZCBjb3VudCBpdCAqLwotICAgIHNsb3RzID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fc2xvdHNfXyIpOworICAgIHNsb3RzID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19zbG90c19fKTsKICAgICBuc2xvdHMgPSAwOwogICAgIGFkZF9kaWN0ID0gMDsKICAgICBhZGRfd2VhayA9IDA7CkBAIC0yMDYyLDEwICsyMDgwLDggQEAKICAgICAgICAgICAgIHNsb3RzID0gUHlUdXBsZV9QYWNrKDEsIHNsb3RzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2xvdHMgPSBQeVNlcXVlbmNlX1R1cGxlKHNsb3RzKTsKLSAgICAgICAgaWYgKHNsb3RzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKHNsb3RzKSk7CiAKICAgICAgICAgLyogQXJlIHNsb3RzIGFsbG93ZWQ/ICovCkBAIC0yMDc1LDI0ICsyMDkxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbmVtcHR5IF9fc2xvdHNfXyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBzdXBwb3J0ZWQgZm9yIHN1YnR5cGUgb2YgJyVzJyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgYmFkX3Nsb3RzOgotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzbG90cyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBDaGVjayBmb3IgdmFsaWQgc2xvdCBuYW1lcyBhbmQgdHdvIHNwZWNpYWwgY2FzZXMgKi8KICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zbG90czsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gUHlUdXBsZV9HRVRfSVRFTShzbG90cywgaSk7CiAgICAgICAgICAgICBpZiAoIXZhbGlkX2lkZW50aWZpZXIodG1wKSkKLSAgICAgICAgICAgICAgICBnb3RvIGJhZF9zbG90czsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh0bXApKTsKICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyh0bXAsICJfX2RpY3RfXyIpID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoIW1heV9hZGRfZGljdCB8fCBhZGRfZGljdCkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fZGljdF9fIHNsb3QgZGlzYWxsb3dlZDogIgogICAgICAgICAgICAgICAgICAgICAgICAgIndlIGFscmVhZHkgZ290IG9uZSIpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGJhZF9zbG90czsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYWRkX2RpY3QrKzsKICAgICAgICAgICAgIH0KQEAgLTIxMDIsNyArMjExNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX193ZWFrcmVmX18gc2xvdCBkaXNhbGxvd2VkOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiZWl0aGVyIHdlIGFscmVhZHkgZ290IG9uZSwgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm9yIF9faXRlbXNpemVfXyAhPSAwIik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhZGRfd2VhaysrOwogICAgICAgICAgICAgfQpAQCAtMjExNCw3ICsyMTI3LDcgQEAKICAgICAgICAgKi8KICAgICAgICAgbmV3c2xvdHMgPSBQeUxpc3RfTmV3KG5zbG90cyAtIGFkZF9kaWN0IC0gYWRkX3dlYWspOwogICAgICAgICBpZiAobmV3c2xvdHMgPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gYmFkX3Nsb3RzOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgZm9yIChpID0gaiA9IDA7IGkgPCBuc2xvdHM7IGkrKykgewogICAgICAgICAgICAgdG1wID0gUHlUdXBsZV9HRVRfSVRFTShzbG90cywgaSk7CiAgICAgICAgICAgICBpZiAoKGFkZF9kaWN0ICYmCkBAIC0yMTI1LDI1ICsyMTM4LDI5IEBACiAgICAgICAgICAgICB0bXAgPV9QeV9NYW5nbGUobmFtZSwgdG1wKTsKICAgICAgICAgICAgIGlmICghdG1wKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3Nsb3RzKTsKLSAgICAgICAgICAgICAgICBnb3RvIGJhZF9zbG90czsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKG5ld3Nsb3RzLCBqLCB0bXApOworICAgICAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtKGRpY3QsIHRtcCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIGluIF9fc2xvdHNfXyBjb25mbGljdHMgd2l0aCBjbGFzcyB2YXJpYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3Nsb3RzKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaisrOwogICAgICAgICB9CiAgICAgICAgIGFzc2VydChqID09IG5zbG90cyAtIGFkZF9kaWN0IC0gYWRkX3dlYWspOwogICAgICAgICBuc2xvdHMgPSBqOwotICAgICAgICBQeV9ERUNSRUYoc2xvdHMpOworICAgICAgICBQeV9DTEVBUihzbG90cyk7CiAgICAgICAgIGlmIChQeUxpc3RfU29ydChuZXdzbG90cykgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIHNsb3RzID0gUHlMaXN0X0FzVHVwbGUobmV3c2xvdHMpOwogICAgICAgICBQeV9ERUNSRUYobmV3c2xvdHMpOwotICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgICAvKiBTZWNvbmRhcnkgYmFzZXMgbWF5IHByb3ZpZGUgd2Vha3JlZnMgb3IgZGljdCAqLwogICAgICAgICBpZiAobmJhc2VzID4gMSAmJgpAQCAtMjE3MSwyMiArMjE4OCwxNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogWFhYIEZyb20gaGVyZSB1bnRpbCB0eXBlIGlzIHNhZmVseSBhbGxvY2F0ZWQsCi0gICAgICAgInJldHVybiBOVUxMIiBtYXkgbGVhayBzbG90cyEgKi8KLQogICAgIC8qIEFsbG9jYXRlIHRoZSB0eXBlIG9iamVjdCAqLwogICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopbWV0YXR5cGUtPnRwX2FsbG9jKG1ldGF0eXBlLCBuc2xvdHMpOwotICAgIGlmICh0eXBlID09IE5VTEwpIHsKLSAgICAgICAgUHlfWERFQ1JFRihzbG90cyk7Ci0gICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBpZiAodHlwZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogS2VlcCBuYW1lIGFuZCBzbG90cyBhbGl2ZSBpbiB0aGUgZXh0ZW5kZWQgdHlwZSBvYmplY3QgKi8KICAgICBldCA9IChQeUhlYXBUeXBlT2JqZWN0ICopdHlwZTsKICAgICBQeV9JTkNSRUYobmFtZSk7CiAgICAgZXQtPmh0X25hbWUgPSBuYW1lOwogICAgIGV0LT5odF9zbG90cyA9IHNsb3RzOworICAgIHNsb3RzID0gTlVMTDsKIAogICAgIC8qIEluaXRpYWxpemUgdHBfZmxhZ3MgKi8KICAgICB0eXBlLT50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEVBUFRZUEUgfApAQCAtMjIwMCw1OSArMjIxMiw2OSBAQAogICAgIHR5cGUtPnRwX2FzX21hcHBpbmcgPSAmZXQtPmFzX21hcHBpbmc7CiAgICAgdHlwZS0+dHBfYXNfYnVmZmVyID0gJmV0LT5hc19idWZmZXI7CiAgICAgdHlwZS0+dHBfbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZSk7Ci0gICAgaWYgKCF0eXBlLT50cF9uYW1lKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmICghdHlwZS0+dHBfbmFtZSkKKyAgICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIFNldCB0cF9iYXNlIGFuZCB0cF9iYXNlcyAqLwogICAgIHR5cGUtPnRwX2Jhc2VzID0gYmFzZXM7CisgICAgYmFzZXMgPSBOVUxMOwogICAgIFB5X0lOQ1JFRihiYXNlKTsKICAgICB0eXBlLT50cF9iYXNlID0gYmFzZTsKIAogICAgIC8qIEluaXRpYWxpemUgdHBfZGljdCBmcm9tIHBhc3NlZC1pbiBkaWN0ICovCi0gICAgdHlwZS0+dHBfZGljdCA9IGRpY3QgPSBQeURpY3RfQ29weShkaWN0KTsKLSAgICBpZiAoZGljdCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIFB5X0lOQ1JFRihkaWN0KTsKKyAgICB0eXBlLT50cF9kaWN0ID0gZGljdDsKIAogICAgIC8qIFNldCBfX21vZHVsZV9fIGluIHRoZSBkaWN0ICovCi0gICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICJfX21vZHVsZV9fIikgPT0gTlVMTCkgeworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX21vZHVsZV9fKSA9PSBOVUxMKSB7CiAgICAgICAgIHRtcCA9IFB5RXZhbF9HZXRHbG9iYWxzKCk7CiAgICAgICAgIGlmICh0bXAgIT0gTlVMTCkgewotICAgICAgICAgICAgdG1wID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcodG1wLCAiX19uYW1lX18iKTsKKyAgICAgICAgICAgIHRtcCA9IF9QeURpY3RfR2V0SXRlbUlkKHRtcCwgJlB5SWRfX19uYW1lX18pOwogICAgICAgICAgICAgaWYgKHRtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfX21vZHVsZV9fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX21vZHVsZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXApIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAorICAgIC8qIFNldCBodF9xdWFsbmFtZSB0byBkaWN0WydfX3F1YWxuYW1lX18nXSBpZiBhdmFpbGFibGUsIGVsc2UgdG8KKyAgICAgICBfX25hbWVfXy4gIFRoZSBfX3F1YWxuYW1lX18gYWNjZXNzb3Igd2lsbCBsb29rIGZvciBodF9xdWFsbmFtZS4KKyAgICAqLworICAgIHF1YWxuYW1lID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19xdWFsbmFtZV9fKTsKKyAgICBpZiAocXVhbG5hbWUgIT0gTlVMTCkgeworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhxdWFsbmFtZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgInR5cGUgX19xdWFsbmFtZV9fIG11c3QgYmUgYSBzdHIsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShxdWFsbmFtZSktPnRwX25hbWUpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcXVhbG5hbWUgPSBldC0+aHRfbmFtZTsKKyAgICB9CisgICAgUHlfSU5DUkVGKHF1YWxuYW1lKTsKKyAgICBldC0+aHRfcXVhbG5hbWUgPSBxdWFsbmFtZTsKKwogICAgIC8qIFNldCB0cF9kb2MgdG8gYSBjb3B5IG9mIGRpY3RbJ19fZG9jX18nXSwgaWYgdGhlIGxhdHRlciBpcyB0aGVyZQogICAgICAgIGFuZCBpcyBhIHN0cmluZy4gIFRoZSBfX2RvY19fIGFjY2Vzc29yIHdpbGwgZmlyc3QgbG9vayBmb3IgdHBfZG9jOwogICAgICAgIGlmIHRoYXQgZmFpbHMsIGl0IHdpbGwgc3RpbGwgbG9vayBpbnRvIF9fZGljdF9fLgogICAgICovCiAgICAgewotICAgICAgICBQeU9iamVjdCAqZG9jID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoZGljdCwgIl9fZG9jX18iKTsKKyAgICAgICAgUHlPYmplY3QgKmRvYyA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fZG9jX18pOwogICAgICAgICBpZiAoZG9jICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrKGRvYykpIHsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgY2hhciAqZG9jX3N0cjsKICAgICAgICAgICAgIGNoYXIgKnRwX2RvYzsKIAogICAgICAgICAgICAgZG9jX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoZG9jKTsKLSAgICAgICAgICAgIGlmIChkb2Nfc3RyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9jX3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAvKiBTaWxlbnRseSB0cnVuY2F0ZSB0aGUgZG9jc3RyaW5nIGlmIGl0IGNvbnRhaW5zIG51bGwgYnl0ZXMuICovCiAgICAgICAgICAgICBsZW4gPSBzdHJsZW4oZG9jX3N0cik7CiAgICAgICAgICAgICB0cF9kb2MgPSAoY2hhciAqKVB5T2JqZWN0X01BTExPQyhsZW4gKyAxKTsKLSAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0cF9kb2MgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgZG9jX3N0ciwgbGVuICsgMSk7CiAgICAgICAgICAgICB0eXBlLT50cF9kb2MgPSB0cF9kb2M7CiAgICAgICAgIH0KQEAgLTIyNjAsMjggKzIyODIsMjUgQEAKIAogICAgIC8qIFNwZWNpYWwtY2FzZSBfX25ld19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCiAgICAgICAgbWFrZSBpdCBhIHN0YXRpYyBmdW5jdGlvbiAqLwotICAgIHRtcCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICJfX25ld19fIik7CisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19uZXdfXyk7CiAgICAgaWYgKHRtcCAhPSBOVUxMICYmIFB5RnVuY3Rpb25fQ2hlY2sodG1wKSkgewogICAgICAgICB0bXAgPSBQeVN0YXRpY01ldGhvZF9OZXcodG1wKTsKLSAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiX19uZXdfXyIsIHRtcCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZChkaWN0LCAmUHlJZF9fX25ld19fLCB0bXApIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7Ci0gICAgaWYgKHNsb3RzICE9IE5VTEwpIHsKKyAgICBpZiAoZXQtPmh0X3Nsb3RzICE9IE5VTEwpIHsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zbG90czsgaSsrLCBtcCsrKSB7CiAgICAgICAgICAgICBtcC0+bmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzbG90cywgaSkpOwotICAgICAgICAgICAgaWYgKG1wLT5uYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShldC0+aHRfc2xvdHMsIGkpKTsKKyAgICAgICAgICAgIGlmIChtcC0+bmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICBtcC0+dHlwZSA9IFRfT0JKRUNUX0VYOwogICAgICAgICAgICAgbXAtPm9mZnNldCA9IHNsb3RvZmZzZXQ7CiAKQEAgLTIyOTksNiArMjMxOCw5IEBACiAgICAgICAgICAgICB0eXBlLT50cF9kaWN0b2Zmc2V0ID0gc2xvdG9mZnNldDsKICAgICAgICAgc2xvdG9mZnNldCArPSBzaXplb2YoUHlPYmplY3QgKik7CiAgICAgfQorICAgIGlmICh0eXBlLT50cF9kaWN0b2Zmc2V0KSB7CisgICAgICAgIGV0LT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CisgICAgfQogICAgIGlmIChhZGRfd2VhaykgewogICAgICAgICBhc3NlcnQoIWJhc2UtPnRwX2l0ZW1zaXplKTsKICAgICAgICAgdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQgPSBzbG90b2Zmc2V0OwpAQCAtMjM0MiwxNSArMjM2NCwyMSBAQAogICAgICAgICB0eXBlLT50cF9mcmVlID0gUHlPYmplY3RfRGVsOwogCiAgICAgLyogSW5pdGlhbGl6ZSB0aGUgcmVzdCAqLwotICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0eXBlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIGlmIChQeVR5cGVfUmVhZHkodHlwZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogUHV0IHRoZSBwcm9wZXIgc2xvdHMgaW4gcGxhY2UgKi8KICAgICBmaXh1cF9zbG90X2Rpc3BhdGNoZXJzKHR5cGUpOwogCisgICAgUHlfREVDUkVGKGRpY3QpOwogICAgIHJldHVybiAoUHlPYmplY3QgKil0eXBlOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGRpY3QpOworICAgIFB5X1hERUNSRUYoYmFzZXMpOworICAgIFB5X1hERUNSRUYoc2xvdHMpOworICAgIFB5X1hERUNSRUYodHlwZSk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBzaG9ydCBzbG90b2Zmc2V0c1tdID0gewpAQCAtMjM1OSwzMCArMjM4Nyw4OSBAQAogfTsKIAogUHlPYmplY3QgKgotUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQorUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzKFB5VHlwZV9TcGVjICpzcGVjLCBQeU9iamVjdCAqYmFzZXMpCiB7CiAgICAgUHlIZWFwVHlwZU9iamVjdCAqcmVzID0gKFB5SGVhcFR5cGVPYmplY3QqKVB5VHlwZV9HZW5lcmljQWxsb2MoJlB5VHlwZV9UeXBlLCAwKTsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUsICpiYXNlOworICAgIGNoYXIgKnM7CiAgICAgY2hhciAqcmVzX3N0YXJ0ID0gKGNoYXIqKXJlczsKICAgICBQeVR5cGVfU2xvdCAqc2xvdDsKKyAgICAKKyAgICAvKiBTZXQgdGhlIHR5cGUgbmFtZSBhbmQgcXVhbG5hbWUgKi8KKyAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHMgPSAoY2hhciopc3BlYy0+bmFtZTsKKyAgICBlbHNlCisgICAgICAgIHMrKzsKIAogICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcy0+aHRfbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHNwZWMtPm5hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0eXBlID0gJnJlcy0+aHRfdHlwZTsKKyAgICAvKiBUaGUgZmxhZ3MgbXVzdCBiZSBpbml0aWFsaXplZCBlYXJseSwgYmVmb3JlIHRoZSBHQyB0cmF2ZXJzZXMgdXMgKi8KKyAgICB0eXBlLT50cF9mbGFncyA9IHNwZWMtPmZsYWdzIHwgUHlfVFBGTEFHU19IRUFQVFlQRTsKKyAgICByZXMtPmh0X25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzKTsKICAgICBpZiAoIXJlcy0+aHRfbmFtZSkKICAgICAgICAgZ290byBmYWlsOwotICAgIHJlcy0+aHRfdHlwZS50cF9uYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhyZXMtPmh0X25hbWUpOwotICAgIGlmICghcmVzLT5odF90eXBlLnRwX25hbWUpCisgICAgcmVzLT5odF9xdWFsbmFtZSA9IHJlcy0+aHRfbmFtZTsKKyAgICBQeV9JTkNSRUYocmVzLT5odF9xdWFsbmFtZSk7CisgICAgdHlwZS0+dHBfbmFtZSA9IHNwZWMtPm5hbWU7CisgICAgaWYgKCF0eXBlLT50cF9uYW1lKQogICAgICAgICBnb3RvIGZhaWw7CisgICAgCisgICAgLyogQWRqdXN0IGZvciBlbXB0eSB0dXBsZSBiYXNlcyAqLworICAgIGlmICghYmFzZXMpIHsKKyAgICAgICAgYmFzZSA9ICZQeUJhc2VPYmplY3RfVHlwZTsKKyAgICAgICAgLyogU2VlIHdoZXRoZXIgUHlfdHBfYmFzZShzKSB3YXMgc3BlY2lmaWVkICovCisgICAgICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKKyAgICAgICAgICAgIGlmIChzbG90LT5zbG90ID09IFB5X3RwX2Jhc2UpCisgICAgICAgICAgICAgICAgYmFzZSA9IHNsb3QtPnBmdW5jOworICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC0+c2xvdCA9PSBQeV90cF9iYXNlcykgeworICAgICAgICAgICAgICAgIGJhc2VzID0gc2xvdC0+cGZ1bmM7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIWJhc2VzKQorICAgICAgICAgICAgYmFzZXMgPSBQeVR1cGxlX1BhY2soMSwgYmFzZSk7CisgICAgICAgIGlmICghYmFzZXMpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgUHlfSU5DUkVGKGJhc2VzKTsKIAotICAgIHJlcy0+aHRfdHlwZS50cF9iYXNpY3NpemUgPSBzcGVjLT5iYXNpY3NpemU7Ci0gICAgcmVzLT5odF90eXBlLnRwX2l0ZW1zaXplID0gc3BlYy0+aXRlbXNpemU7Ci0gICAgcmVzLT5odF90eXBlLnRwX2ZsYWdzID0gc3BlYy0+ZmxhZ3MgfCBQeV9UUEZMQUdTX0hFQVBUWVBFOworICAgIC8qIENhbGN1bGF0ZSBiZXN0IGJhc2UsIGFuZCBjaGVjayB0aGF0IGFsbCBiYXNlcyBhcmUgdHlwZSBvYmplY3RzICovCisgICAgYmFzZSA9IGJlc3RfYmFzZShiYXNlcyk7CisgICAgaWYgKGJhc2UgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZhaWw7CisgICAgfQorICAgIGlmICghUHlUeXBlX0hhc0ZlYXR1cmUoYmFzZSwgUHlfVFBGTEFHU19CQVNFVFlQRSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ0eXBlICclLjEwMHMnIGlzIG5vdCBhbiBhY2NlcHRhYmxlIGJhc2UgdHlwZSIsCisgICAgICAgICAgICAgICAgICAgICBiYXNlLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKworICAgIC8qIEluaXRpYWxpemUgZXNzZW50aWFsIGZpZWxkcyAqLworICAgIHR5cGUtPnRwX2FzX251bWJlciA9ICZyZXMtPmFzX251bWJlcjsKKyAgICB0eXBlLT50cF9hc19zZXF1ZW5jZSA9ICZyZXMtPmFzX3NlcXVlbmNlOworICAgIHR5cGUtPnRwX2FzX21hcHBpbmcgPSAmcmVzLT5hc19tYXBwaW5nOworICAgIHR5cGUtPnRwX2FzX2J1ZmZlciA9ICZyZXMtPmFzX2J1ZmZlcjsKKyAgICAvKiBTZXQgdHBfYmFzZSBhbmQgdHBfYmFzZXMgKi8KKyAgICB0eXBlLT50cF9iYXNlcyA9IGJhc2VzOworICAgIGJhc2VzID0gTlVMTDsKKyAgICBQeV9JTkNSRUYoYmFzZSk7CisgICAgdHlwZS0+dHBfYmFzZSA9IGJhc2U7CisKKyAgICB0eXBlLT50cF9iYXNpY3NpemUgPSBzcGVjLT5iYXNpY3NpemU7CisgICAgdHlwZS0+dHBfaXRlbXNpemUgPSBzcGVjLT5pdGVtc2l6ZTsKIAogICAgIGZvciAoc2xvdCA9IHNwZWMtPnNsb3RzOyBzbG90LT5zbG90OyBzbG90KyspIHsKLSAgICAgICAgaWYgKHNsb3QtPnNsb3QgPj0gc2l6ZW9mKHNsb3RvZmZzZXRzKS9zaXplb2Yoc2xvdG9mZnNldHNbMF0pKSB7CisgICAgICAgIGlmIChzbG90LT5zbG90ID49IFB5X0FSUkFZX0xFTkdUSChzbG90b2Zmc2V0cykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJpbnZhbGlkIHNsb3Qgb2Zmc2V0Iik7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHNsb3QtPnNsb3QgPT0gUHlfdHBfYmFzZSB8fCBzbG90LT5zbG90ID09IFB5X3RwX2Jhc2VzKQorICAgICAgICAgICAgLyogUHJvY2Vzc2VkIGFib3ZlICovCisgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgKih2b2lkKiopKHJlc19zdGFydCArIHNsb3RvZmZzZXRzW3Nsb3QtPnNsb3RdKSA9IHNsb3QtPnBmdW5jOwogCiAgICAgICAgIC8qIG5lZWQgdG8gbWFrZSBhIGNvcHkgb2YgdGhlIGRvY3N0cmluZyBzbG90LCB3aGljaCB1c3VhbGx5CkBAIC0yMzkzLDE5ICsyNDgwLDI5IEBACiAgICAgICAgICAgICBpZiAodHBfZG9jID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICAgICAgbWVtY3B5KHRwX2RvYywgc2xvdC0+cGZ1bmMsIGxlbik7Ci0gICAgICAgICAgICByZXMtPmh0X3R5cGUudHBfZG9jID0gdHBfZG9jOworICAgICAgICAgICAgdHlwZS0+dHBfZG9jID0gdHBfZG9jOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChyZXMtPmh0X3R5cGUudHBfZGVhbGxvYyA9PSBOVUxMKSB7CisgICAgaWYgKHR5cGUtPnRwX2RpY3RvZmZzZXQpIHsKKyAgICAgICAgcmVzLT5odF9jYWNoZWRfa2V5cyA9IF9QeURpY3RfTmV3S2V5c0ZvckNsYXNzKCk7CisgICAgfQorICAgIGlmICh0eXBlLT50cF9kZWFsbG9jID09IE5VTEwpIHsKICAgICAgICAgLyogSXQncyBhIGhlYXAgdHlwZSwgc28gbmVlZHMgdGhlIGhlYXAgdHlwZXMnIGRlYWxsb2MuCiAgICAgICAgICAgIHN1YnR5cGVfZGVhbGxvYyB3aWxsIGNhbGwgdGhlIGJhc2UgdHlwZSdzIHRwX2RlYWxsb2MsIGlmCiAgICAgICAgICAgIG5lY2Vzc2FyeS4gKi8KLSAgICAgICAgcmVzLT5odF90eXBlLnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CisgICAgICAgIHR5cGUtPnRwX2RlYWxsb2MgPSBzdWJ0eXBlX2RlYWxsb2M7CiAgICAgfQogCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmcmVzLT5odF90eXBlKSA8IDApCisgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZmFpbDsKIAorICAgIC8qIFNldCB0eXBlLl9fbW9kdWxlX18gKi8KKyAgICBzID0gc3RycmNocihzcGVjLT5uYW1lLCAnLicpOworICAgIGlmIChzICE9IE5VTEwpCisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIAorICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpKTsKKwogICAgIHJldHVybiAoUHlPYmplY3QqKXJlczsKIAogIGZhaWw6CkBAIC0yNDEzLDYgKzI1MTAsMTIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorUHlPYmplY3QgKgorUHlUeXBlX0Zyb21TcGVjKFB5VHlwZV9TcGVjICpzcGVjKQoreworICAgIHJldHVybiBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMoc3BlYywgTlVMTCk7Cit9CisKIAogLyogSW50ZXJuYWwgQVBJIHRvIGxvb2sgZm9yIGEgbmFtZSB0aHJvdWdoIHRoZSBNUk8uCiAgICBUaGlzIHJldHVybnMgYSBib3Jyb3dlZCByZWZlcmVuY2UsIGFuZCBkb2Vzbid0IHNldCBhbiBleGNlcHRpb24hICovCkBAIC0yNDQyLDYgKzI1NDUsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHJlcyA9IE5VTEw7CisgICAgLyoga2VlcCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gbXJvIGJlY2F1c2UgdHlwZS0+dHBfbXJvIGNhbiBiZSByZXBsYWNlZAorICAgICAgIGR1cmluZyBQeURpY3RfR2V0SXRlbShkaWN0LCBuYW1lKSAgKi8KKyAgICBQeV9JTkNSRUYobXJvKTsKICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhtcm8pKTsKICAgICBuID0gUHlUdXBsZV9HRVRfU0laRShtcm8pOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKQEAgLTI0NTMsNiArMjU1OSw3IEBACiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBQeV9ERUNSRUYobXJvKTsKIAogICAgIGlmIChNQ0FDSEVfQ0FDSEVBQkxFX05BTUUobmFtZSkgJiYgYXNzaWduX3ZlcnNpb25fdGFnKHR5cGUpKSB7CiAgICAgICAgIGggPSBNQ0FDSEVfSEFTSF9NRVRIT0QodHlwZSwgbmFtZSk7CkBAIC0yNDY1LDYgKzI1NzIsMTYgQEAKICAgICByZXR1cm4gcmVzOwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorX1B5VHlwZV9Mb29rdXBJZChQeVR5cGVPYmplY3QgKnR5cGUsIHN0cnVjdCBfUHlfSWRlbnRpZmllciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqb25hbWU7CisgICAgb25hbWUgPSBfUHlVbmljb2RlX0Zyb21JZChuYW1lKTsgICAvKiBib3Jyb3dlZCAqLworICAgIGlmIChvbmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5VHlwZV9Mb29rdXAodHlwZSwgb25hbWUpOworfQorCiAvKiBUaGlzIGlzIHNpbWlsYXIgdG8gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoKSwKICAgIGJ1dCB1c2VzIF9QeVR5cGVfTG9va3VwKCkgaW5zdGVhZCBvZiBqdXN0IGxvb2tpbmcgaW4gdHlwZS0+dHBfZGljdC4gKi8KIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNTY0LDYgKzI2ODEsOSBAQAogICAgIHJldHVybiB1cGRhdGVfc2xvdCh0eXBlLCBuYW1lKTsKIH0KIAorZXh0ZXJuIHZvaWQKK19QeURpY3RLZXlzX0RlY1JlZihQeURpY3RLZXlzT2JqZWN0ICprZXlzKTsKKwogc3RhdGljIHZvaWQKIHR5cGVfZGVhbGxvYyhQeVR5cGVPYmplY3QgKnR5cGUpCiB7CkBAIC0yNTg1LDcgKzI3MDUsMTAgQEAKICAgICAgKi8KICAgICBQeU9iamVjdF9GcmVlKChjaGFyICopdHlwZS0+dHBfZG9jKTsKICAgICBQeV9YREVDUkVGKGV0LT5odF9uYW1lKTsKKyAgICBQeV9YREVDUkVGKGV0LT5odF9xdWFsbmFtZSk7CiAgICAgUHlfWERFQ1JFRihldC0+aHRfc2xvdHMpOworICAgIGlmIChldC0+aHRfY2FjaGVkX2tleXMpCisgICAgICAgIF9QeURpY3RLZXlzX0RlY1JlZihldC0+aHRfY2FjaGVkX2tleXMpOwogICAgIFB5X1RZUEUodHlwZSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopdHlwZSk7CiB9CiAKQEAgLTI2MjMsNiArMjc0Niw5OSBAQAogICAgIHJldHVybiBQeURpY3RfTmV3KCk7CiB9CiAKKy8qCisgICBNZXJnZSB0aGUgX19kaWN0X18gb2YgYWNsYXNzIGludG8gZGljdCwgYW5kIHJlY3Vyc2l2ZWx5IGFsc28gYWxsCisgICB0aGUgX19kaWN0X19zIG9mIGFjbGFzcydzIGJhc2UgY2xhc3Nlcy4gIFRoZSBvcmRlciBvZiBtZXJnaW5nIGlzbid0CisgICBkZWZpbmVkLCBhcyBpdCdzIGV4cGVjdGVkIHRoYXQgb25seSB0aGUgZmluYWwgc2V0IG9mIGRpY3Qga2V5cyBpcworICAgaW50ZXJlc3RpbmcuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvci4KKyovCisKK3N0YXRpYyBpbnQKK21lcmdlX2NsYXNzX2RpY3QoUHlPYmplY3QgKmRpY3QsIFB5T2JqZWN0ICphY2xhc3MpCit7CisgICAgUHlPYmplY3QgKmNsYXNzZGljdDsKKyAgICBQeU9iamVjdCAqYmFzZXM7CisgICAgX1B5X0lERU5USUZJRVIoX19iYXNlc19fKTsKKworICAgIGFzc2VydChQeURpY3RfQ2hlY2soZGljdCkpOworICAgIGFzc2VydChhY2xhc3MpOworCisgICAgLyogTWVyZ2UgaW4gdGhlIHR5cGUncyBkaWN0IChpZiBhbnkpLiAqLworICAgIGNsYXNzZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoYWNsYXNzLCAmUHlJZF9fX2RpY3RfXyk7CisgICAgaWYgKGNsYXNzZGljdCA9PSBOVUxMKQorICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgeworICAgICAgICBpbnQgc3RhdHVzID0gUHlEaWN0X1VwZGF0ZShkaWN0LCBjbGFzc2RpY3QpOworICAgICAgICBQeV9ERUNSRUYoY2xhc3NkaWN0KTsKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyogUmVjdXJzaXZlbHkgbWVyZ2UgaW4gdGhlIGJhc2UgdHlwZXMnIChpZiBhbnkpIGRpY3RzLiAqLworICAgIGJhc2VzID0gX1B5T2JqZWN0X0dldEF0dHJJZChhY2xhc3MsICZQeUlkX19fYmFzZXNfXyk7CisgICAgaWYgKGJhc2VzID09IE5VTEwpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgZWxzZSB7CisgICAgICAgIC8qIFdlIGhhdmUgbm8gZ3VhcmFudGVlIHRoYXQgYmFzZXMgaXMgYSByZWFsIHR1cGxlICovCisgICAgICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICAgICAgbiA9IFB5U2VxdWVuY2VfU2l6ZShiYXNlcyk7IC8qIFRoaXMgYmV0dGVyIGJlIHJpZ2h0ICovCisgICAgICAgIGlmIChuIDwgMCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIGludCBzdGF0dXM7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBQeVNlcXVlbmNlX0dldEl0ZW0oYmFzZXMsIGkpOworICAgICAgICAgICAgICAgIGlmIChiYXNlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIGJhc2UpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihiYXNlKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZXMpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihiYXNlcyk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiBfX2Rpcl9fIGZvciB0eXBlIG9iamVjdHM6IHJldHVybnMgX19kaWN0X18gYW5kIF9fYmFzZXNfXy4KKyAgIFdlIGRlbGliZXJhdGVseSBkb24ndCBzdWNrIHVwIGl0cyBfX2NsYXNzX18sIGFzIG1ldGhvZHMgYmVsb25naW5nIHRvIHRoZQorICAgbWV0YWNsYXNzIHdvdWxkIHByb2JhYmx5IGJlIG1vcmUgY29uZnVzaW5nIHRoYW4gaGVscGZ1bC4KKyovCitzdGF0aWMgUHlPYmplY3QgKgordHlwZV9kaXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkaWN0ID0gUHlEaWN0X05ldygpOworCisgICAgaWYgKGRpY3QgIT0gTlVMTCAmJiBtZXJnZV9jbGFzc19kaWN0KGRpY3QsIHNlbGYpID09IDApCisgICAgICAgIHJlc3VsdCA9IFB5RGljdF9LZXlzKGRpY3QpOworCisgICAgUHlfWERFQ1JFRihkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QqCit0eXBlX3NpemVvZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3NfdW51c2VkKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeVR5cGVPYmplY3QgKnR5cGUgPSAoUHlUeXBlT2JqZWN0KilzZWxmOworICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKKyAgICAgICAgUHlIZWFwVHlwZU9iamVjdCogZXQgPSAoUHlIZWFwVHlwZU9iamVjdCopdHlwZTsKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUhlYXBUeXBlT2JqZWN0KTsKKyAgICAgICAgaWYgKGV0LT5odF9jYWNoZWRfa2V5cykKKyAgICAgICAgICAgIHNpemUgKz0gX1B5RGljdF9LZXlzU2l6ZShldC0+aHRfY2FjaGVkX2tleXMpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHNpemUgPSBzaXplb2YoUHlUeXBlT2JqZWN0KTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHNpemUpOworfQorCiBzdGF0aWMgUHlNZXRob2REZWYgdHlwZV9tZXRob2RzW10gPSB7CiAgICAgeyJtcm8iLCAoUHlDRnVuY3Rpb24pbXJvX2V4dGVybmFsLCBNRVRIX05PQVJHUywKICAgICAgUHlEb2NfU1RSKCJtcm8oKSAtPiBsaXN0XG5yZXR1cm4gYSB0eXBlJ3MgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIiKX0sCkBAIC0yNjM2LDYgKzI4NTIsMTAgQEAKICAgICAgUHlEb2NfU1RSKCJfX2luc3RhbmNlY2hlY2tfXygpIC0+IGJvb2xcbmNoZWNrIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSIpfSwKICAgICB7Il9fc3ViY2xhc3NjaGVja19fIiwgdHlwZV9fX3N1YmNsYXNzY2hlY2tfXywgTUVUSF9PLAogICAgICBQeURvY19TVFIoIl9fc3ViY2xhc3NjaGVja19fKCkgLT4gYm9vbFxuY2hlY2sgaWYgYSBjbGFzcyBpcyBhIHN1YmNsYXNzIil9LAorICAgIHsiX19kaXJfXyIsIHR5cGVfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuc3BlY2lhbGl6ZWQgX19kaXJfXyBpbXBsZW1lbnRhdGlvbiBmb3IgdHlwZXMiKX0sCisgICAgeyJfX3NpemVvZl9fIiwgICAgICB0eXBlX3NpemVvZiwgICAgICAgTUVUSF9OT0FSR1MsCisgICAgICJfX3NpemVvZl9fKCkgLT4gaW50XG5yZXR1cm4gbWVtb3J5IGNvbnN1bXB0aW9uIG9mIHRoZSB0eXBlIG9iamVjdCJ9LAogICAgIHswfQogfTsKIApAQCAtMjY0OCw3ICsyODY4LDEyIEBACiB7CiAgICAgLyogQmVjYXVzZSBvZiB0eXBlX2lzX2djKCksIHRoZSBjb2xsZWN0b3Igb25seSBjYWxscyB0aGlzCiAgICAgICAgZm9yIGhlYXB0eXBlcy4gKi8KLSAgICBhc3NlcnQodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKTsKKyAgICBpZiAoISh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKSB7CisgICAgICAgIGNoYXIgbXNnWzIwMF07CisgICAgICAgIHNwcmludGYobXNnLCAidHlwZV90cmF2ZXJzZSgpIGNhbGxlZCBmb3Igbm9uLWhlYXAgdHlwZSAnJS4xMDBzJyIsCisgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IobXNnKTsKKyAgICB9CiAKICAgICBQeV9WSVNJVCh0eXBlLT50cF9kaWN0KTsKICAgICBQeV9WSVNJVCh0eXBlLT50cF9jYWNoZSk7CkBAIC0yNjY3LDYgKzI4OTIsNyBAQAogc3RhdGljIGludAogdHlwZV9jbGVhcihQeVR5cGVPYmplY3QgKnR5cGUpCiB7CisgICAgUHlEaWN0S2V5c09iamVjdCAqY2FjaGVkX2tleXM7CiAgICAgLyogQmVjYXVzZSBvZiB0eXBlX2lzX2djKCksIHRoZSBjb2xsZWN0b3Igb25seSBjYWxscyB0aGlzCiAgICAgICAgZm9yIGhlYXB0eXBlcy4gKi8KICAgICBhc3NlcnQodHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKTsKQEAgLTI2OTgsNiArMjkyNCwxMSBAQAogICAgICovCiAKICAgICBQeVR5cGVfTW9kaWZpZWQodHlwZSk7CisgICAgY2FjaGVkX2tleXMgPSAoKFB5SGVhcFR5cGVPYmplY3QgKil0eXBlKS0+aHRfY2FjaGVkX2tleXM7CisgICAgaWYgKGNhY2hlZF9rZXlzICE9IE5VTEwpIHsKKyAgICAgICAgKChQeUhlYXBUeXBlT2JqZWN0ICopdHlwZSktPmh0X2NhY2hlZF9rZXlzID0gTlVMTDsKKyAgICAgICAgX1B5RGljdEtleXNfRGVjUmVmKGNhY2hlZF9rZXlzKTsKKyAgICB9CiAgICAgaWYgKHR5cGUtPnRwX2RpY3QpCiAgICAgICAgIFB5RGljdF9DbGVhcih0eXBlLT50cF9kaWN0KTsKICAgICBQeV9DTEVBUih0eXBlLT50cF9tcm8pOwpAQCAtMjgxMywyMiArMzA0NCwxMSBAQAogb2JqZWN0X2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBpbnQgZXJyID0gMDsKLSAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykpIHsKLSAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKLSAgICAgICAgaWYgKHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQgJiYKLSAgICAgICAgICAgIHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3KQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnIgPSBQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9faW5pdF9fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIDEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQgfHwKLSAgICAgICAgICAgICAgICAgdHlwZS0+dHBfbmV3ID09IG9iamVjdF9uZXcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIm9iamVjdC5fX2luaXRfXygpIHRha2VzIG5vIHBhcmFtZXRlcnMiKTsKLSAgICAgICAgICAgIGVyciA9IC0xOwotICAgICAgICB9CisgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShzZWxmKTsKKyAgICBpZiAoZXhjZXNzX2FyZ3MoYXJncywga3dkcykgJiYKKyAgICAgICAgKHR5cGUtPnRwX25ldyA9PSBvYmplY3RfbmV3IHx8IHR5cGUtPnRwX2luaXQgIT0gb2JqZWN0X2luaXQpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJvYmplY3QuX19pbml0X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7CisgICAgICAgIGVyciA9IC0xOwogICAgIH0KICAgICByZXR1cm4gZXJyOwogfQpAQCAtMjgzNiwzMyArMzA1NiwyMSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG9iamVjdF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgaW50IGVyciA9IDA7Ci0gICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpKSB7Ci0gICAgICAgIGlmICh0eXBlLT50cF9uZXcgIT0gb2JqZWN0X25ldyAmJgotICAgICAgICAgICAgdHlwZS0+dHBfaW5pdCAhPSBvYmplY3RfaW5pdCkKLSAgICAgICAgewotICAgICAgICAgICAgZXJyID0gUHlFcnJfV2FybkV4KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdC5fX25ld19fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgIDEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3IHx8Ci0gICAgICAgICAgICAgICAgIHR5cGUtPnRwX2luaXQgPT0gb2JqZWN0X2luaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgIm9iamVjdC5fX25ld19fKCkgdGFrZXMgbm8gcGFyYW1ldGVycyIpOwotICAgICAgICAgICAgZXJyID0gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKGVyciA8IDApCisgICAgaWYgKGV4Y2Vzc19hcmdzKGFyZ3MsIGt3ZHMpICYmCisgICAgICAgICh0eXBlLT50cF9pbml0ID09IG9iamVjdF9pbml0IHx8IHR5cGUtPnRwX25ldyAhPSBvYmplY3RfbmV3KSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAib2JqZWN0Ll9fbmV3X18oKSB0YWtlcyBubyBwYXJhbWV0ZXJzIik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSVNfQUJTVFJBQ1QpIHsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpjb21tYSA9IE5VTEw7CiAgICAgICAgIFB5T2JqZWN0ICphYnN0cmFjdF9tZXRob2RzID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmJ1aWx0aW5zOwogICAgICAgICBQeU9iamVjdCAqc29ydGVkOwogICAgICAgICBQeU9iamVjdCAqc29ydGVkX21ldGhvZHMgPSBOVUxMOwogICAgICAgICBQeU9iamVjdCAqam9pbmVkID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKmNvbW1hOworICAgICAgICBfUHlfc3RhdGljX3N0cmluZyhjb21tYV9pZCwgIiwgIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHNvcnRlZCk7CiAKICAgICAgICAgLyogQ29tcHV0ZSAiLCAiLmpvaW4oc29ydGVkKHR5cGUuX19hYnN0cmFjdG1ldGhvZHNfXykpCiAgICAgICAgICAgIGludG8gam9pbmVkLiAqLwpAQCAtMjg3Miw3ICszMDgwLDcgQEAKICAgICAgICAgYnVpbHRpbnMgPSBQeUV2YWxfR2V0QnVpbHRpbnMoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5zID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICBzb3J0ZWQgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhidWlsdGlucywgInNvcnRlZCIpOworICAgICAgICBzb3J0ZWQgPSBfUHlEaWN0X0dldEl0ZW1JZChidWlsdGlucywgJlB5SWRfc29ydGVkKTsKICAgICAgICAgaWYgKHNvcnRlZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgc29ydGVkX21ldGhvZHMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKHNvcnRlZCwKQEAgLTI4ODAsMTMgKzMwODgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBpZiAoc29ydGVkX21ldGhvZHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGlmIChjb21tYSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjb21tYSA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCIsICIpOwotICAgICAgICAgICAgaWYgKGNvbW1hID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBqb2luZWQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGNvbW1hLCAiam9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk8iLCAgc29ydGVkX21ldGhvZHMpOworICAgICAgICBjb21tYSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZjb21tYV9pZCk7CisgICAgICAgIGlmIChjb21tYSA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgam9pbmVkID0gUHlVbmljb2RlX0pvaW4oY29tbWEsIHNvcnRlZF9tZXRob2RzKTsKICAgICAgICAgaWYgKGpvaW5lZCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjkyNCw3ICszMTI5LDcgQEAKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgICAgIG1vZCA9IE5VTEw7CiAgICAgfQotICAgIG5hbWUgPSB0eXBlX25hbWUodHlwZSwgTlVMTCk7CisgICAgbmFtZSA9IHR5cGVfcXVhbG5hbWUodHlwZSwgTlVMTCk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzA4OSw3ICszMjk0LDcgQEAKICAgICB9CiAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodmFsdWUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBuZXctc3R5bGUgY2xhc3MsIG5vdCAnJXMnIG9iamVjdCIsCisgICAgICAgICAgIl9fY2xhc3NfXyBtdXN0IGJlIHNldCB0byBhIGNsYXNzLCBub3QgJyVzJyBvYmplY3QiLAogICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMxMzAsMTQgKzMzMzUsMTkgQEAKIGltcG9ydF9jb3B5cmVnKHZvaWQpCiB7CiAgICAgc3RhdGljIFB5T2JqZWN0ICpjb3B5cmVnX3N0cjsKKyAgICBzdGF0aWMgUHlPYmplY3QgKm1vZF9jb3B5cmVnID0gTlVMTDsKIAogICAgIGlmICghY29weXJlZ19zdHIpIHsKICAgICAgICAgY29weXJlZ19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiY29weXJlZyIpOwogICAgICAgICBpZiAoY29weXJlZ19zdHIgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoIW1vZF9jb3B5cmVnKSB7CisgICAgICAgIG1vZF9jb3B5cmVnID0gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICB9CiAKLSAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0KGNvcHlyZWdfc3RyKTsKKyAgICBQeV9YSU5DUkVGKG1vZF9jb3B5cmVnKTsKKyAgICByZXR1cm4gbW9kX2NvcHlyZWc7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMTQ2LDE0ICszMzU2LDExIEBACiAgICAgUHlPYmplY3QgKmNsc2RpY3Q7CiAgICAgUHlPYmplY3QgKmNvcHlyZWc7CiAgICAgUHlPYmplY3QgKnNsb3RuYW1lczsKLQotICAgIGlmICghUHlUeXBlX0NoZWNrKGNscykpIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICB9CisgICAgX1B5X0lERU5USUZJRVIoX19zbG90bmFtZXNfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX3Nsb3RuYW1lcyk7CiAKICAgICBjbHNkaWN0ID0gKChQeVR5cGVPYmplY3QgKiljbHMpLT50cF9kaWN0OwotICAgIHNsb3RuYW1lcyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGNsc2RpY3QsICJfX3Nsb3RuYW1lc19fIik7CisgICAgc2xvdG5hbWVzID0gX1B5RGljdF9HZXRJdGVtSWQoY2xzZGljdCwgJlB5SWRfX19zbG90bmFtZXNfXyk7CiAgICAgaWYgKHNsb3RuYW1lcyAhPSBOVUxMICYmIFB5TGlzdF9DaGVjayhzbG90bmFtZXMpKSB7CiAgICAgICAgIFB5X0lOQ1JFRihzbG90bmFtZXMpOwogICAgICAgICByZXR1cm4gc2xvdG5hbWVzOwpAQCAtMzE2Myw3ICszMzcwLDcgQEAKICAgICBpZiAoY29weXJlZyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHNsb3RuYW1lcyA9IFB5T2JqZWN0X0NhbGxNZXRob2QoY29weXJlZywgIl9zbG90bmFtZXMiLCAiTyIsIGNscyk7CisgICAgc2xvdG5hbWVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChjb3B5cmVnLCAmUHlJZF9fc2xvdG5hbWVzLCAiTyIsIGNscyk7CiAgICAgUHlfREVDUkVGKGNvcHlyZWcpOwogICAgIGlmIChzbG90bmFtZXMgIT0gTlVMTCAmJgogICAgICAgICBzbG90bmFtZXMgIT0gUHlfTm9uZSAmJgpAQCAtMzE4NywxMiArMzM5NCwxMyBAQAogICAgIFB5T2JqZWN0ICpzbG90cyA9IE5VTEwsICpsaXN0aXRlbXMgPSBOVUxMLCAqZGljdGl0ZW1zID0gTlVMTDsKICAgICBQeU9iamVjdCAqY29weXJlZyA9IE5VTEwsICpuZXdvYmogPSBOVUxMLCAqcmVzID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRuZXdhcmdzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0c3RhdGVfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdvYmpfXyk7CiAKLSAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fY2xhc3NfXyIpOwotICAgIGlmIChjbHMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgY2xzID0gKFB5T2JqZWN0ICopIFB5X1RZUEUob2JqKTsKIAotICAgIGdldG5ld2FyZ3MgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZ2V0bmV3YXJnc19fIik7CisgICAgZ2V0bmV3YXJncyA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldG5ld2FyZ3NfXyk7CiAgICAgaWYgKGdldG5ld2FyZ3MgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRuZXdhcmdzLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGdldG5ld2FyZ3MpOwpAQCAtMzIxMCw3ICszNDE4LDcgQEAKICAgICBpZiAoYXJncyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIAotICAgIGdldHN0YXRlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJfX2dldHN0YXRlX18iKTsKKyAgICBnZXRzdGF0ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2dldHN0YXRlX18pOwogICAgIGlmIChnZXRzdGF0ZSAhPSBOVUxMKSB7CiAgICAgICAgIHN0YXRlID0gUHlPYmplY3RfQ2FsbE9iamVjdChnZXRzdGF0ZSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihnZXRzdGF0ZSk7CkBAIC0zMjE4LDE3ICszNDI2LDE4IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICoqZGljdDsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgc3RhdGUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIl9fZGljdF9fIik7Ci0gICAgICAgIGlmIChzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldERpY3RQdHIob2JqKTsKKyAgICAgICAgaWYgKGRpY3QgJiYgKmRpY3QpCisgICAgICAgICAgICBzdGF0ZSA9ICpkaWN0OworICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZSA9IFB5X05vbmU7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoc3RhdGUpOwotICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihzdGF0ZSk7CiAgICAgICAgIG5hbWVzID0gc2xvdG5hbWVzKGNscyk7CiAgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlbmQ7Ci0gICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lKSB7CisgICAgICAgIGlmIChuYW1lcyAhPSBQeV9Ob25lICYmIFB5TGlzdF9HRVRfU0laRShuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrKG5hbWVzKSk7CiAgICAgICAgICAgICBzbG90cyA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgICAgIGlmIChzbG90cyA9PSBOVUxMKQpAQCAtMzI3NSw3ICszNDg0LDggQEAKICAgICAgICAgUHlfSU5DUkVGKGRpY3RpdGVtcyk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqaXRlbXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKG9iaiwgIml0ZW1zIiwgIiIpOworICAgICAgICBfUHlfSURFTlRJRklFUihpdGVtcyk7CisgICAgICAgIFB5T2JqZWN0ICppdGVtcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQob2JqLCAmUHlJZF9pdGVtcywgIiIpOwogICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICBkaWN0aXRlbXMgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZW1zKTsKQEAgLTMyODcsNyArMzQ5Nyw3IEBACiAgICAgY29weXJlZyA9IGltcG9ydF9jb3B5cmVnKCk7CiAgICAgaWYgKGNvcHlyZWcgPT0gTlVMTCkKICAgICAgICAgZ290byBlbmQ7Ci0gICAgbmV3b2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb3B5cmVnLCAiX19uZXdvYmpfXyIpOworICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfXyk7CiAgICAgaWYgKG5ld29iaiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVuZDsKIApAQCAtMzI5NSw4ICszNTA1LDggQEAKICAgICBhcmdzMiA9IFB5VHVwbGVfTmV3KG4rMSk7CiAgICAgaWYgKGFyZ3MyID09IE5VTEwpCiAgICAgICAgIGdvdG8gZW5kOworICAgIFB5X0lOQ1JFRihjbHMpOwogICAgIFB5VHVwbGVfU0VUX0lURU0oYXJnczIsIDAsIGNscyk7Ci0gICAgY2xzID0gTlVMTDsKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCBpKTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMzMwNiw3ICszNTE2LDYgQEAKICAgICByZXMgPSBQeVR1cGxlX1BhY2soNSwgbmV3b2JqLCBhcmdzMiwgc3RhdGUsIGxpc3RpdGVtcywgZGljdGl0ZW1zKTsKIAogICBlbmQ6Ci0gICAgUHlfWERFQ1JFRihjbHMpOwogICAgIFB5X1hERUNSRUYoYXJncyk7CiAgICAgUHlfWERFQ1JFRihhcmdzMik7CiAgICAgUHlfWERFQ1JFRihzbG90cyk7CkBAIC0zMzY2LDMxICszNTc1LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3JlZHVjZV9leChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CisgICAgc3RhdGljIFB5T2JqZWN0ICpvYmpyZWR1Y2U7CiAgICAgUHlPYmplY3QgKnJlZHVjZSwgKnJlczsKICAgICBpbnQgcHJvdG8gPSAwOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVkdWNlX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwgJnByb3RvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZWR1Y2UgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX3JlZHVjZV9fIik7CisgICAgaWYgKG9ianJlZHVjZSA9PSBOVUxMKSB7CisgICAgICAgIG9ianJlZHVjZSA9IF9QeURpY3RfR2V0SXRlbUlkKFB5QmFzZU9iamVjdF9UeXBlLnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fcmVkdWNlX18pOworICAgICAgICBpZiAob2JqcmVkdWNlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZWR1Y2UgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fcmVkdWNlX18pOwogICAgIGlmIChyZWR1Y2UgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZSwgKm9ianJlZHVjZTsKKyAgICAgICAgUHlPYmplY3QgKmNscywgKmNsc3JlZHVjZTsKICAgICAgICAgaW50IG92ZXJyaWRlOwotICAgICAgICBjbHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2NsYXNzX18iKTsKLSAgICAgICAgaWYgKGNscyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVkdWNlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGNsc3JlZHVjZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY2xzLCAiX19yZWR1Y2VfXyIpOwotICAgICAgICBQeV9ERUNSRUYoY2xzKTsKKworICAgICAgICBjbHMgPSAoUHlPYmplY3QgKikgUHlfVFlQRShzZWxmKTsKKyAgICAgICAgY2xzcmVkdWNlID0gX1B5T2JqZWN0X0dldEF0dHJJZChjbHMsICZQeUlkX19fcmVkdWNlX18pOwogICAgICAgICBpZiAoY2xzcmVkdWNlID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWR1Y2UpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgb2JqcmVkdWNlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcoUHlCYXNlT2JqZWN0X1R5cGUudHBfZGljdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fcmVkdWNlX18iKTsKICAgICAgICAgb3ZlcnJpZGUgPSAoY2xzcmVkdWNlICE9IG9ianJlZHVjZSk7CiAgICAgICAgIFB5X0RFQ1JFRihjbHNyZWR1Y2UpOwogICAgICAgICBpZiAob3ZlcnJpZGUpIHsKQEAgLTM0MDgsOCArMzYyMCw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogb2JqZWN0X3N1YmNsYXNzaG9vayhQeU9iamVjdCAqY2xzLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiB9CiAKIFB5RG9jX1NUUlZBUihvYmplY3Rfc3ViY2xhc3Nob29rX2RvYywKQEAgLTM0NDAsMjEgKzM2NTEsMjEgQEAKICAgICBzZWxmX2FzX3N0ciA9IFB5T2JqZWN0X1N0cihzZWxmKTsKICAgICBpZiAoc2VsZl9hc19zdHIgIT0gTlVMTCkgewogICAgICAgICAvKiBJc3N1ZSA3OTk0OiBJZiB3ZSdyZSBjb252ZXJ0aW5nIHRvIGEgc3RyaW5nLCB3ZQotCSAgIHNob3VsZCByZWplY3QgZm9ybWF0IHNwZWNpZmljYXRpb25zICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpID4gMCkgewotCSAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCi0JCQkgICAgICJvYmplY3QuX19mb3JtYXRfXyB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCAiCi0JCQkgICAgICJzdHJpbmcgaXMgZGVwcmVjYXRlZCIsIDEpIDwgMCkgewotCSAgICAgIGdvdG8gZG9uZTsKLQkgICAgfQotCSAgICAvKiBFdmVudHVhbGx5IHRoaXMgd2lsbCBiZWNvbWUgYW4gZXJyb3I6Ci0JICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0JICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKLQkgICAgICAgZ290byBkb25lOwotCSAgICAqLwotCX0KKyAgICAgICAgICAgc2hvdWxkIHJlamVjdCBmb3JtYXQgc3BlY2lmaWNhdGlvbnMgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGZvcm1hdF9zcGVjKSA+IDApIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0Ll9fZm9ybWF0X18gd2l0aCBhIG5vbi1lbXB0eSBmb3JtYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIGlzIGRlcHJlY2F0ZWQiLCAxKSA8IDApIHsKKyAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogRXZlbnR1YWxseSB0aGlzIHdpbGwgYmVjb21lIGFuIGVycm9yOgorICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICJub24tZW1wdHkgZm9ybWF0IHN0cmluZyBwYXNzZWQgdG8gb2JqZWN0Ll9fZm9ybWF0X18iKTsKKyAgICAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgICAgICovCisgICAgICAgIH0KIAotCXJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdChzZWxmX2FzX3N0ciwgZm9ybWF0X3NwZWMpOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Gb3JtYXQoc2VsZl9hc19zdHIsIGZvcm1hdF9zcGVjKTsKICAgICB9CiAKIGRvbmU6CkBAIC0zNDc3LDYgKzM2ODgsNTMgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKKy8qIF9fZGlyX18gZm9yIGdlbmVyaWMgb2JqZWN0czogcmV0dXJucyBfX2RpY3RfXywgX19jbGFzc19fLAorICAgYW5kIHJlY3Vyc2l2ZWx5IHVwIHRoZSBfX2NsYXNzX18uX19iYXNlc19fIGNoYWluLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitvYmplY3RfZGlyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGljdCA9IE5VTEw7CisgICAgUHlPYmplY3QgKml0c2NsYXNzID0gTlVMTDsKKworICAgIC8qIEdldCBfX2RpY3RfXyAod2hpY2ggbWF5IG9yIG1heSBub3QgYmUgYSByZWFsIGRpY3QuLi4pICovCisgICAgZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOworICAgIGlmIChkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIVB5RGljdF9DaGVjayhkaWN0KSkgeworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDb3B5IF9fZGljdF9fIHRvIGF2b2lkIG11dGF0aW5nIGl0LiAqLworICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5RGljdF9Db3B5KGRpY3QpOworICAgICAgICBQeV9ERUNSRUYoZGljdCk7CisgICAgICAgIGRpY3QgPSB0ZW1wOworICAgIH0KKworICAgIGlmIChkaWN0ID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBNZXJnZSBpbiBhdHRycyByZWFjaGFibGUgZnJvbSBpdHMgY2xhc3MuICovCisgICAgaXRzY2xhc3MgPSBfUHlPYmplY3RfR2V0QXR0cklkKHNlbGYsICZQeUlkX19fY2xhc3NfXyk7CisgICAgaWYgKGl0c2NsYXNzID09IE5VTEwpCisgICAgICAgIC8qIFhYWCh0b21lcik6IFBlcmhhcHMgZmFsbCBiYWNrIHRvIG9iai0+b2JfdHlwZSBpZiBubworICAgICAgICAgICAgICAgICAgICAgICBfX2NsYXNzX18gZXhpc3RzPyAqLworICAgICAgICBQeUVycl9DbGVhcigpOworICAgIGVsc2UgaWYgKG1lcmdlX2NsYXNzX2RpY3QoZGljdCwgaXRzY2xhc3MpICE9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXN1bHQgPSBQeURpY3RfS2V5cyhkaWN0KTsKKyAgICAvKiBmYWxsIHRocm91Z2ggKi8KK2Vycm9yOgorICAgIFB5X1hERUNSRUYoaXRzY2xhc3MpOworICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5TWV0aG9kRGVmIG9iamVjdF9tZXRob2RzW10gPSB7CiAgICAgeyJfX3JlZHVjZV9leF9fIiwgb2JqZWN0X3JlZHVjZV9leCwgTUVUSF9WQVJBUkdTLAogICAgICBQeURvY19TVFIoImhlbHBlciBmb3IgcGlja2xlIil9LApAQCAtMzQ4OCw2ICszNzQ2LDggQEAKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCiAgICAgIFB5RG9jX1NUUigiX19zaXplb2ZfXygpIC0+IGludFxuc2l6ZSBvZiBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcyIpfSwKKyAgICB7Il9fZGlyX18iLCBvYmplY3RfZGlyLCBNRVRIX05PQVJHUywKKyAgICAgUHlEb2NfU1RSKCJfX2Rpcl9fKCkgLT4gbGlzdFxuZGVmYXVsdCBkaXIoKSBpbXBsZW1lbnRhdGlvbiIpfSwKICAgICB7MH0KIH07CiAKQEAgLTM1NTcsNyArMzgxNyw3IEBACiAgICAgICAgICAgICBkZXNjciA9IFB5RGVzY3JfTmV3Q2xhc3NNZXRob2QodHlwZSwgbWV0aCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAobWV0aC0+bWxfZmxhZ3MgJiBNRVRIX1NUQVRJQykgewotICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIE5VTEwpOworICAgICAgICAgICAgUHlPYmplY3QgKmNmdW5jID0gUHlDRnVuY3Rpb25fTmV3KG1ldGgsIChQeU9iamVjdCopdHlwZSk7CiAgICAgICAgICAgICBpZiAoY2Z1bmMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBkZXNjciA9IFB5U3RhdGljTWV0aG9kX05ldyhjZnVuYyk7CkBAIC0zNjM4LDggKzM4OTgsOCBAQAogICAgICAgICAgICB0aGF0IHRoZSBleHRlbnNpb24gdHlwZSdzIG93biBmYWN0b3J5IGZ1bmN0aW9uIGVuc3VyZXMpLgogICAgICAgICAgICBIZWFwIHR5cGVzLCBvZiBjb3Vyc2UsIGFyZSB1bmRlciBvdXIgY29udHJvbCwgc28gdGhleSBkbwogICAgICAgICAgICBpbmhlcml0IHRwX25ldzsgc3RhdGljIGV4dGVuc2lvbiB0eXBlcyB0aGF0IHNwZWNpZnkgc29tZQotICAgICAgICAgICBvdGhlciBidWlsdC1pbiB0eXBlIGFzIHRoZSBkZWZhdWx0IGFyZSBjb25zaWRlcmVkCi0gICAgICAgICAgIG5ldy1zdHlsZS1hd2FyZSBzbyB0aGV5IGFsc28gaW5oZXJpdCBvYmplY3QuX19uZXdfXy4gKi8KKyAgICAgICAgICAgb3RoZXIgYnVpbHQtaW4gdHlwZSBhcyB0aGUgZGVmYXVsdCBhbHNvCisgICAgICAgICAgIGluaGVyaXQgb2JqZWN0Ll9fbmV3X18uICovCiAgICAgICAgIGlmIChiYXNlICE9ICZQeUJhc2VPYmplY3RfVHlwZSB8fAogICAgICAgICAgICAgKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKICAgICAgICAgICAgIGlmICh0eXBlLT50cF9uZXcgPT0gTlVMTCkKQEAgLTM2NzgsMjMgKzM5MzgsMTcgQEAKICAgICAgICAgdHlwZS0+dHBfZmxhZ3MgfD0gUHlfVFBGTEFHU19ESUNUX1NVQkNMQVNTOwogfQogCi1zdGF0aWMgY2hhciAqaGFzaF9uYW1lX29wW10gPSB7Ci0gICAgIl9fZXFfXyIsCi0gICAgIl9faGFzaF9fIiwKLSAgICBOVUxMCi19OwotCiBzdGF0aWMgaW50CiBvdmVycmlkZXNfaGFzaChQeVR5cGVPYmplY3QgKnR5cGUpCiB7Ci0gICAgY2hhciAqKnA7CiAgICAgUHlPYmplY3QgKmRpY3QgPSB0eXBlLT50cF9kaWN0OworICAgIF9QeV9JREVOVElGSUVSKF9fZXFfXyk7CiAKICAgICBhc3NlcnQoZGljdCAhPSBOVUxMKTsKLSAgICBmb3IgKHAgPSBoYXNoX25hbWVfb3A7ICpwOyBwKyspIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICpwKSAhPSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2VxX18pICE9IE5VTEwpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZChkaWN0LCAmUHlJZF9fX2hhc2hfXykgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM5ODAsMTYgKzQyMzQsMTYgQEAKICAgICAvKiBpZiB0aGUgdHlwZSBkaWN0aW9uYXJ5IGRvZXNuJ3QgY29udGFpbiBhIF9fZG9jX18sIHNldCBpdCBmcm9tCiAgICAgICAgdGhlIHRwX2RvYyBzbG90LgogICAgICAqLwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIpID09IE5VTEwpIHsKKyAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19kb2NfXykgPT0gTlVMTCkgewogICAgICAgICBpZiAodHlwZS0+dHBfZG9jICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpkb2MgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0eXBlLT50cF9kb2MpOwogICAgICAgICAgICAgaWYgKGRvYyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19kb2NfXyIsIGRvYyk7CisgICAgICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2RvY19fLCBkb2MpOwogICAgICAgICAgICAgUHlfREVDUkVGKGRvYyk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fZG9jX18iLCBQeV9Ob25lKTsKKyAgICAgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2RvY19fLCBQeV9Ob25lKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNDAwMCw4ICs0MjU0LDggQEAKICAgICAgICBUaGlzIHNpZ25hbHMgdGhhdCBfX2hhc2hfXyBpcyBub3QgaW5oZXJpdGVkLgogICAgICAqLwogICAgIGlmICh0eXBlLT50cF9oYXNoID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKHR5cGUtPnRwX2RpY3QsICJfX2hhc2hfXyIpID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyh0eXBlLT50cF9kaWN0LCAiX19oYXNoX18iLCBQeV9Ob25lKSA8IDApCisgICAgICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX2hhc2hfXykgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19faGFzaF9fLCBQeV9Ob25lKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIHR5cGUtPnRwX2hhc2ggPSBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ7CiAgICAgICAgIH0KQEAgLTQ1OTgsNyArNDg1Miw3IEBACiAgICAgICAgb2JqZWN0Ll9fbmV3X18oZGljdCkuICBUbyBkbyB0aGlzLCB3ZSBjaGVjayB0aGF0IHRoZQogICAgICAgIG1vc3QgZGVyaXZlZCBiYXNlIHRoYXQncyBub3QgYSBoZWFwIHR5cGUgaXMgdGhpcyB0eXBlLiAqLwogICAgIHN0YXRpY2Jhc2UgPSBzdWJ0eXBlOwotICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpKQorICAgIHdoaWxlIChzdGF0aWNiYXNlICYmIChzdGF0aWNiYXNlLT50cF9uZXcgPT0gc2xvdF90cF9uZXcpKQogICAgICAgICBzdGF0aWNiYXNlID0gc3RhdGljYmFzZS0+dHBfYmFzZTsKICAgICAvKiBJZiBzdGF0aWNiYXNlIGlzIE5VTEwgbm93LCBpdCBpcyBhIHJlYWxseSB3ZWlyZCB0eXBlLgogICAgICAgIEluIHRoZSBzcGlyaXQgb2YgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgKD8pLCBqdXN0IHNodXQgdXAuICovCkBAIC00NjMxLDEyICs0ODg1LDEyIEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmM7CiAKLSAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iKSAhPSBOVUxMKQorICAgIGlmIChfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fKSAhPSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3KHRwX25ld19tZXRob2RkZWYsIChQeU9iamVjdCAqKXR5cGUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcodHlwZS0+dHBfZGljdCwgIl9fbmV3X18iLCBmdW5jKSkgeworICAgIGlmIChfUHlEaWN0X1NldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX25ld19fLCBmdW5jKSkgewogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC00NjUxLDM0ICs0OTA1LDM0IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZikgXAogeyBcCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7IFwKLSAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgT1BTVFIsICZjYWNoZV9zdHIsICIoKSIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsIE9QU1RSKTsgXAorICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmaWQsICIoKSIpOyBcCiB9CiAKICNkZWZpbmUgU0xPVDEoRlVOQ05BTUUsIE9QU1RSLCBBUkcxVFlQRSwgQVJHQ09ERVMpIFwKIHN0YXRpYyBQeU9iamVjdCAqIFwKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmLCBBUkcxVFlQRSBhcmcxKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0cjsgXAotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCBPUFNUUiwgJmNhY2hlX3N0ciwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigiIEFSR0NPREVTICIpIiwgYXJnMSk7IFwKIH0KIAogLyogQm9vbGVhbiBoZWxwZXIgZm9yIFNMT1QxQklORlVMTCgpLgogICAgcmlnaHQuX19jbGFzc19fIGlzIGEgbm9udHJpdmlhbCBzdWJjbGFzcyBvZiBsZWZ0Ll9fY2xhc3NfXy4gKi8KIHN0YXRpYyBpbnQKLW1ldGhvZF9pc19vdmVybG9hZGVkKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGNoYXIgKm5hbWUpCittZXRob2RfaXNfb3ZlcmxvYWRlZChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0LCBzdHJ1Y3QgX1B5X0lkZW50aWZpZXIgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmEsICpiOwogICAgIGludCBvazsKIAotICAgIGIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOworICAgIGIgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKShQeV9UWVBFKHJpZ2h0KSksIG5hbWUpOwogICAgIGlmIChiID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgLyogSWYgcmlnaHQgZG9lc24ndCBoYXZlIGl0LCBpdCdzIG5vdCBvdmVybG9hZGVkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCAqKShQeV9UWVBFKGxlZnQpKSwgbmFtZSk7CisgICAgYSA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopKFB5X1RZUEUobGVmdCkpLCBuYW1lKTsKICAgICBpZiAoYSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIFB5X0RFQ1JFRihiKTsKQEAgLTQ3MDIsNyArNDk1Niw4IEBACiBzdGF0aWMgUHlPYmplY3QgKiBcCiBGVU5DTkFNRShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyKSBcCiB7IFwKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhY2hlX3N0ciwgKnJjYWNoZV9zdHI7IFwKKyAgICBfUHlfc3RhdGljX3N0cmluZyhvcF9pZCwgT1BTVFIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcocm9wX2lkLCBST1BTVFIpOyBcCiAgICAgaW50IGRvX290aGVyID0gUHlfVFlQRShzZWxmKSAhPSBQeV9UWVBFKG90aGVyKSAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXIgIT0gTlVMTCAmJiBcCiAgICAgICAgIFB5X1RZUEUob3RoZXIpLT50cF9hc19udW1iZXItPlNMT1ROQU1FID09IFRFU1RGVU5DOyBcCkBAIC00NzExLDI3ICs0OTY2LDIzIEBACiAgICAgICAgIFB5T2JqZWN0ICpyOyBcCiAgICAgICAgIGlmIChkb19vdGhlciAmJiBcCiAgICAgICAgICAgICBQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob3RoZXIpLCBQeV9UWVBFKHNlbGYpKSAmJiBcCi0gICAgICAgICAgICBtZXRob2RfaXNfb3ZlcmxvYWRlZChzZWxmLCBvdGhlciwgUk9QU1RSKSkgeyBcCi0gICAgICAgICAgICByID0gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgICAgIG90aGVyLCBST1BTVFIsICZyY2FjaGVfc3RyLCAiKE8pIiwgc2VsZik7IFwKKyAgICAgICAgICAgIG1ldGhvZF9pc19vdmVybG9hZGVkKHNlbGYsIG90aGVyLCAmcm9wX2lkKSkgeyBcCisgICAgICAgICAgICByID0gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCkgXAogICAgICAgICAgICAgICAgIHJldHVybiByOyBcCiAgICAgICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICAgICAgICAgIGRvX290aGVyID0gMDsgXAogICAgICAgICB9IFwKLSAgICAgICAgciA9IGNhbGxfbWF5YmUoIFwKLSAgICAgICAgICAgIHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCAiKE8pIiwgb3RoZXIpOyBcCisgICAgICAgIHIgPSBjYWxsX21heWJlKHNlbGYsICZvcF9pZCwgIihPKSIsIG90aGVyKTsgXAogICAgICAgICBpZiAociAhPSBQeV9Ob3RJbXBsZW1lbnRlZCB8fCBcCiAgICAgICAgICAgICBQeV9UWVBFKG90aGVyKSA9PSBQeV9UWVBFKHNlbGYpKSBcCiAgICAgICAgICAgICByZXR1cm4gcjsgXAogICAgICAgICBQeV9ERUNSRUYocik7IFwKICAgICB9IFwKICAgICBpZiAoZG9fb3RoZXIpIHsgXAotICAgICAgICByZXR1cm4gY2FsbF9tYXliZSggXAotICAgICAgICAgICAgb3RoZXIsIFJPUFNUUiwgJnJjYWNoZV9zdHIsICIoTykiLCBzZWxmKTsgXAorICAgICAgICByZXR1cm4gY2FsbF9tYXliZShvdGhlciwgJnJvcF9pZCwgIihPKSIsIHNlbGYpOyBcCiAgICAgfSBcCi0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsgXAotICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsgXAorICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsgXAogfQogCiAjZGVmaW5lIFNMT1QxQklOKEZVTkNOQU1FLCBTTE9UTkFNRSwgT1BTVFIsIFJPUFNUUikgXApAQCAtNDc0MSwxNiArNDk5MiwxNSBAQAogc3RhdGljIFB5T2JqZWN0ICogXAogRlVOQ05BTUUoUHlPYmplY3QgKnNlbGYsIEFSRzFUWVBFIGFyZzEsIEFSRzJUWVBFIGFyZzIpIFwKIHsgXAotICAgIHN0YXRpYyBQeU9iamVjdCAqY2FjaGVfc3RyOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsIE9QU1RSLCAmY2FjaGVfc3RyLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICIoIiBBUkdDT0RFUyAiKSIsIGFyZzEsIGFyZzIpOyBcCisgICAgX1B5X3N0YXRpY19zdHJpbmcoaWQsICNPUFNUUik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCAiKCIgQVJHQ09ERVMgIikiLCBhcmcxLCBhcmcyKTsgXAogfQogCiBzdGF0aWMgUHlfc3NpemVfdAogc2xvdF9zcV9sZW5ndGgoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpsZW5fc3RyOwotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyLCAiKCkiKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgIigpIik7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC00NzcxLDE2ICs1MDIxLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpnZXRpdGVtX3N0cjsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MgPSBOVUxMLCAqaXZhbCA9IE5VTEwsICpyZXR2YWwgPSBOVUxMOwogICAgIGRlc2NyZ2V0ZnVuYyBmOwogCi0gICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0aXRlbV9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRpdGVtX18iKTsKLSAgICAgICAgaWYgKGdldGl0ZW1fc3RyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZnVuYyA9IF9QeVR5cGVfTG9va3VwKFB5X1RZUEUoc2VsZiksIGdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gX1B5VHlwZV9Mb29rdXBJZChQeV9UWVBFKHNlbGYpLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBpZiAoKGYgPSBQeV9UWVBFKGZ1bmMpLT50cF9kZXNjcl9nZXQpID09IE5VTEwpCiAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CkBAIC00ODAzLDYgKzUwNDcsNyBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOwogICAgIH0KICAgICBQeV9YREVDUkVGKGFyZ3MpOwpAQCAtNDgxNSwxNCArNTA2MCwxMyBAQAogc2xvdF9zcV9hc3NfaXRlbShQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKG4pIiwgaW5kZXgpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2RlbGl0ZW1fXywgIihuKSIsIGluZGV4KTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGl0ZW1fXyIsICZzZXRpdGVtX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihuTykiLCBpbmRleCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldGl0ZW1fXywgIihuTykiLCBpbmRleCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNDgzNCwxMCArNTA3OCw5IEBACiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXMsICphcmdzOwogICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NvbnRhaW5zX18pOwogCi0gICAgc3RhdGljIFB5T2JqZWN0ICpjb250YWluc19zdHI7Ci0KLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2NvbnRhaW5zX18iLCAmY29udGFpbnNfc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CiAgICAgaWYgKGZ1bmMgIT0gTlVMTCkgewogICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTQ4NjgsMTQgKzUxMTEsMTQgQEAKIHNsb3RfbXBfYXNzX3N1YnNjcmlwdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxpdGVtX3N0ciwgKnNldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fZGVsaXRlbV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCkKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fZGVsaXRlbV9fIiwgJmRlbGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwga2V5KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxpdGVtX18sICIoTykiLCBrZXkpOwogICAgIGVsc2UKLSAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgIl9fc2V0aXRlbV9fIiwgJnNldGl0ZW1fc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICIoT08pIiwga2V5LCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0aXRlbV9fLCAiKE9PKSIsIGtleSwgdmFsdWUpOworCiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC00ODk2LDcgKzUxMzksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfcG93ZXIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlciwgUHlPYmplY3QgKm1vZHVsdXMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpwb3dfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcG93X18pOwogCiAgICAgaWYgKG1vZHVsdXMgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHNsb3RfbmJfcG93ZXJfYmluYXJ5KHNlbGYsIG90aGVyKTsKQEAgLTQ5MDUsMTEgKzUxNDgsOSBAQAogICAgICAgIHNsb3RfbmJfcG93ZXIsIHNvIGNoZWNrIGJlZm9yZSBjYWxsaW5nIHNlbGYuX19wb3dfXy4gKi8KICAgICBpZiAoUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyICE9IE5VTEwgJiYKICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfYXNfbnVtYmVyLT5uYl9wb3dlciA9PSBzbG90X25iX3Bvd2VyKSB7Ci0gICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19wb3dfXyIsICZwb3dfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBvdGhlciwgbW9kdWx1cyk7CisgICAgICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3Bvd19fLCAiKE9PKSIsIG90aGVyLCBtb2R1bHVzKTsKICAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCiBTTE9UMChzbG90X25iX25lZ2F0aXZlLCAiX19uZWdfXyIpCkBAIC00OTIwLDE1ICs1MTYxLDE2IEBACiBzbG90X25iX2Jvb2woUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICphcmdzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqYm9vbF9zdHIsICpsZW5fc3RyOwogICAgIGludCByZXN1bHQgPSAtMTsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKKyAgICBfUHlfSURFTlRJRklFUihfX2xlbl9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKLSAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICJfX2Jvb2xfXyIsICZib29sX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2Jvb2xfXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAiX19sZW5fXyIsICZsZW5fc3RyKTsKKyAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOwogICAgICAgICB1c2luZ19sZW4gPSAxOwpAQCAtNDk2Myw4ICs1MjA1LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X25iX2luZGV4KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5kZXhfc3RyOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pbmRleF9fIiwgJmluZGV4X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbmRleF9fKTsKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pbmRleF9fLCAiKCkiKTsKIH0KIAogCkBAIC00OTg1LDggKzUyMjcsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNsb3RfbmJfaW5wbGFjZV9wb3dlcihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiBhcmcxLCBQeU9iamVjdCAqYXJnMikKIHsKLSAgc3RhdGljIFB5T2JqZWN0ICpjYWNoZV9zdHI7Ci0gIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19pcG93X18iLCAmY2FjaGVfc3RyLCAiKCIgIk8iICIpIiwgYXJnMSk7CisgICAgX1B5X0lERU5USUZJRVIoX19pcG93X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2lwb3dfXywgIigiICJPIiAiKSIsIGFyZzEpOwogfQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX2xzaGlmdCwgIl9faWxzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQogU0xPVDEoc2xvdF9uYl9pbnBsYWNlX3JzaGlmdCwgIl9faXJzaGlmdF9fIiwgUHlPYmplY3QgKiwgIk8iKQpAQCAtNTAwMyw5ICs1MjQ1LDkgQEAKIHNsb3RfdHBfcmVwcihQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnJlcHJfc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9fcmVwcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3JlcHJfXyIsICZyZXByX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19yZXByX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKQEAgLTUwMjAsMjMgKzUyNjIsMzAgQEAKIHNsb3RfdHBfc3RyKFB5T2JqZWN0ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzOwotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX3N0cl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX3N0cl9fIiwgJnN0cl9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19fc3RyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZnVuYywgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXNzOworICAgICAgICAvKiBQeU9iamVjdCAqcmVzczsgKi8KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgcmVzID0gc2xvdF90cF9yZXByKHNlbGYpOwogICAgICAgICBpZiAoIXJlcykKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXNzID0gX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKHJlcywgTlVMTCk7CisgICAgICAgIC8qIFhYWCB0aGlzIGlzIG5vbi1zZW5zaWNhbC4gV2h5IHNob3VsZCB3ZSByZXR1cm4KKyAgICAgICAgICAgYSBieXRlcyBvYmplY3QgZnJvbSBfX3N0cl9fLiBJcyB0aGlzIGNvZGUgZXZlbgorICAgICAgICAgICB1c2VkPyAtIG12bCAqLworICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgICAgIC8qCisgICAgICAgIHJlc3MgPSBfUHlVbmljb2RlX0FzRGVmYXVsdEVuY29kZWRTdHJpbmcocmVzKTsKICAgICAgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgICAgIHJldHVybiByZXNzOworICAgICAgICAqLwogICAgIH0KIH0KIApAQCAtNTA0NCwxMCArNTI5Myw5IEBACiBzbG90X3RwX2hhc2goUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpoYXNoX3N0cjsKICAgICBQeV9zc2l6ZV90IGg7CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19oYXNoX18iLCAmaGFzaF9zdHIpOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZQeUlkX19faGFzaF9fKTsKIAogICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwpAQCAtNTA5MSw4ICs1MzM5LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2NhbGwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmNhbGxfc3RyOwotICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAiX19jYWxsX18iLCAmY2FsbF9zdHIpOworICAgIF9QeV9JREVOVElGSUVSKF9fY2FsbF9fKTsKKyAgICBQeU9iamVjdCAqbWV0aCA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19jYWxsX18pOwogICAgIFB5T2JqZWN0ICpyZXM7CiAKICAgICBpZiAobWV0aCA9PSBOVUxMKQpAQCAtNTExOCw5ICs1MzY2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2dldGF0dHJvKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbmFtZSkKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAiX19nZXRhdHRyaWJ1dGVfXyIsICZnZXRhdHRyaWJ1dGVfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgbmFtZSk7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fZ2V0YXR0cmlidXRlX18sICIoTykiLCBuYW1lKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUxNDYsMjYgKzUzOTIsMTQgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0YXR0ciwgKmdldGF0dHJpYnV0ZSwgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmdldGF0dHJpYnV0ZV9zdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0YXR0cl9zdHIgPSBOVUxMOworICAgIF9QeV9JREVOVElGSUVSKF9fZ2V0YXR0cl9fKTsKIAotICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldGF0dHJfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fZ2V0YXR0cl9fIik7Ci0gICAgICAgIGlmIChnZXRhdHRyX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChnZXRhdHRyaWJ1dGVfc3RyID09IE5VTEwpIHsKLSAgICAgICAgZ2V0YXR0cmlidXRlX3N0ciA9Ci0gICAgICAgICAgICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRhdHRyaWJ1dGVfXyIpOwotICAgICAgICBpZiAoZ2V0YXR0cmlidXRlX3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIC8qIHNwZWVkIGhhY2s6IHdlIGNvdWxkIHVzZSBsb29rdXBfbWF5YmUsIGJ1dCB0aGF0IHdvdWxkIHJlc29sdmUgdGhlCiAgICAgICAgbWV0aG9kIGZ1bGx5IGZvciBlYWNoIGF0dHJpYnV0ZSBsb29rdXAgZm9yIGNsYXNzZXMgd2l0aAogICAgICAgIF9fZ2V0YXR0cl9fLCBldmVuIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBwcmVzZW50LiBTbyB3ZSB1c2UKICAgICAgICBfUHlUeXBlX0xvb2t1cCBhbmQgY3JlYXRlIHRoZSBtZXRob2Qgb25seSB3aGVuIG5lZWRlZCwgd2l0aAogICAgICAgIGNhbGxfYXR0cmlidXRlLiAqLwotICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cl9zdHIpOworICAgIGdldGF0dHIgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldGF0dHJfXyk7CiAgICAgaWYgKGdldGF0dHIgPT0gTlVMTCkgewogICAgICAgICAvKiBObyBfX2dldGF0dHJfXyBob29rOiB1c2UgYSBzaW1wbGVyIGRpc3BhdGNoZXIgKi8KICAgICAgICAgdHAtPnRwX2dldGF0dHJvID0gc2xvdF90cF9nZXRhdHRybzsKQEAgLTUxNzcsNyArNTQxMSw3IEBACiAgICAgICAgX19nZXRhdHRyX18sIGV2ZW4gd2hlbiBzZWxmIGhhcyB0aGUgZGVmYXVsdCBfX2dldGF0dHJpYnV0ZV9fCiAgICAgICAgbWV0aG9kLiBTbyB3ZSB1c2UgX1B5VHlwZV9Mb29rdXAgYW5kIGNyZWF0ZSB0aGUgbWV0aG9kIG9ubHkgd2hlbgogICAgICAgIG5lZWRlZCwgd2l0aCBjYWxsX2F0dHJpYnV0ZS4gKi8KLSAgICBnZXRhdHRyaWJ1dGUgPSBfUHlUeXBlX0xvb2t1cCh0cCwgZ2V0YXR0cmlidXRlX3N0cik7CisgICAgZ2V0YXR0cmlidXRlID0gX1B5VHlwZV9Mb29rdXBJZCh0cCwgJlB5SWRfX19nZXRhdHRyaWJ1dGVfXyk7CiAgICAgaWYgKGdldGF0dHJpYnV0ZSA9PSBOVUxMIHx8CiAgICAgICAgIChQeV9UWVBFKGdldGF0dHJpYnV0ZSkgPT0gJlB5V3JhcHBlckRlc2NyX1R5cGUgJiYKICAgICAgICAgICgoUHlXcmFwcGVyRGVzY3JPYmplY3QgKilnZXRhdHRyaWJ1dGUpLT5kX3dyYXBwZWQgPT0KQEAgLTUyMDAsNDAgKzU0MzQsMzcgQEAKIHNsb3RfdHBfc2V0YXR0cm8oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBzdGF0aWMgUHlPYmplY3QgKmRlbGF0dHJfc3RyLCAqc2V0YXR0cl9zdHI7CisgICAgX1B5X0lERU5USUZJRVIoX19kZWxhdHRyX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fc2V0YXR0cl9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxhdHRyX18iLCAmZGVsYXR0cl9zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIoTykiLCBuYW1lKTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxhdHRyX18sICIoTykiLCBuYW1lKTsKICAgICBlbHNlCi0gICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICJfX3NldGF0dHJfXyIsICZzZXRhdHRyX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIihPTykiLCBuYW1lLCB2YWx1ZSk7CisgICAgICAgIHJlcyA9IGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fc2V0YXR0cl9fLCAiKE9PKSIsIG5hbWUsIHZhbHVlKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICBQeV9ERUNSRUYocmVzKTsKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGNoYXIgKm5hbWVfb3BbXSA9IHsKLSAgICAiX19sdF9fIiwKLSAgICAiX19sZV9fIiwKLSAgICAiX19lcV9fIiwKLSAgICAiX19uZV9fIiwKLSAgICAiX19ndF9fIiwKLSAgICAiX19nZV9fIiwKK3N0YXRpYyBfUHlfSWRlbnRpZmllciBuYW1lX29wW10gPSB7CisgICAgezAsICJfX2x0X18iLCAwfSwKKyAgICB7MCwgIl9fbGVfXyIsIDB9LAorICAgIHswLCAiX19lcV9fIiwgMH0sCisgICAgezAsICJfX25lX18iLCAwfSwKKyAgICB7MCwgIl9fZ3RfXyIsIDB9LAorICAgIHswLCAiX19nZV9fIiwgMH0KIH07CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKICAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpvcF9zdHJbNl07CiAKLSAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCBuYW1lX29wW29wXSwgJm9wX3N0cltvcF0pOworICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICZuYW1lX29wW29wXSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICB9CiAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCBvdGhlcik7CiAgICAgaWYgKGFyZ3MgPT0gTlVMTCkKQEAgLTUyNTAsOSArNTQ4MSw5IEBACiBzbG90X3RwX2l0ZXIoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICppdGVyX3N0ciwgKmdldGl0ZW1fc3RyOworICAgIF9QeV9JREVOVElGSUVSKF9faXRlcl9fKTsKIAotICAgIGZ1bmMgPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2l0ZXJfXyIsICZpdGVyX3N0cik7CisgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmFyZ3M7CiAgICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKQEAgLTUyNjQsNyArNTQ5NSw3IEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgIl9fZ2V0aXRlbV9fIiwgJmdldGl0ZW1fc3RyKTsKKyAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLApAQCAtNTI3OCw4ICs1NTA5LDggQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX2l0ZXJuZXh0KFB5T2JqZWN0ICpzZWxmKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqbmV4dF9zdHI7Ci0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICJfX25leHRfXyIsICZuZXh0X3N0ciwgIigpIik7CisgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01Mjg3LDE0ICs1NTE4LDkgQEAKIHsKICAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShzZWxmKTsKICAgICBQeU9iamVjdCAqZ2V0OwotICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0X3N0ciA9IE5VTEw7CisgICAgX1B5X0lERU5USUZJRVIoX19nZXRfXyk7CiAKLSAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIGdldF9zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19nZXRfXyIpOwotICAgICAgICBpZiAoZ2V0X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGdldCA9IF9QeVR5cGVfTG9va3VwKHRwLCBnZXRfc3RyKTsKKyAgICBnZXQgPSBfUHlUeXBlX0xvb2t1cElkKHRwLCAmUHlJZF9fX2dldF9fKTsKICAgICBpZiAoZ2V0ID09IE5VTEwpIHsKICAgICAgICAgLyogQXZvaWQgZnVydGhlciBzbG93ZG93bnMgKi8KICAgICAgICAgaWYgKHRwLT50cF9kZXNjcl9nZXQgPT0gc2xvdF90cF9kZXNjcl9nZXQpCkBAIC01MzEzLDE0ICs1NTM5LDEzIEBACiBzbG90X3RwX2Rlc2NyX3NldChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhcmdldCwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyLCAqc2V0X3N0cjsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbGV0ZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3NldF9fKTsKIAogICAgIGlmICh2YWx1ZSA9PSBOVUxMKQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19kZWxldGVfXyIsICZkZWxfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE8pIiwgdGFyZ2V0KTsKKyAgICAgICAgcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19kZWxldGVfXywgIihPKSIsIHRhcmdldCk7CiAgICAgZWxzZQotICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAiX19zZXRfXyIsICZzZXRfc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOworICAgICAgICByZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX3NldF9fLCAiKE9PKSIsIHRhcmdldCwgdmFsdWUpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtNTMzMCw4ICs1NTU1LDggQEAKIHN0YXRpYyBpbnQKIHNsb3RfdHBfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIHN0YXRpYyBQeU9iamVjdCAqaW5pdF9zdHI7Ci0gICAgUHlPYmplY3QgKm1ldGggPSBsb29rdXBfbWV0aG9kKHNlbGYsICJfX2luaXRfXyIsICZpbml0X3N0cik7CisgICAgX1B5X0lERU5USUZJRVIoX19pbml0X18pOworICAgIFB5T2JqZWN0ICptZXRoID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2luaXRfXyk7CiAgICAgUHlPYmplY3QgKnJlczsKIAogICAgIGlmIChtZXRoID09IE5VTEwpCkBAIC01MzU0LDE3ICs1NTc5LDEyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF90cF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuZXdfc3RyOwogICAgIFB5T2JqZWN0ICpmdW5jOwogICAgIFB5T2JqZWN0ICpuZXdhcmdzLCAqeDsKICAgICBQeV9zc2l6ZV90IGksIG47CisgICAgX1B5X0lERU5USUZJRVIoX19uZXdfXyk7CiAKLSAgICBpZiAobmV3X3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgIG5ld19zdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uZXdfXyIpOwotICAgICAgICBpZiAobmV3X3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyKChQeU9iamVjdCAqKXR5cGUsIG5ld19zdHIpOworICAgIGZ1bmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCAqKXR5cGUsICZQeUlkX19fbmV3X18pOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTUzODgsNyArNTYwOCw3IEBACiBzdGF0aWMgdm9pZAogc2xvdF90cF9kZWwoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpkZWxfc3RyID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihfX2RlbF9fKTsKICAgICBQeU9iamVjdCAqZGVsLCAqcmVzOwogICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CiAKQEAgLTU0MDAsNyArNTYyMCw3IEBACiAgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CiAKICAgICAvKiBFeGVjdXRlIF9fZGVsX18gbWV0aG9kLCBpZiBhbnkuICovCi0gICAgZGVsID0gbG9va3VwX21heWJlKHNlbGYsICJfX2RlbF9fIiwgJmRlbF9zdHIpOworICAgIGRlbCA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2RlbF9fKTsKICAgICBpZiAoZGVsICE9IE5VTEwpIHsKICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QoZGVsLCBOVUxMKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQpAQCAtNjExNSw3ICs2MzM1LDcgQEAKICAgICAgICAgLyogV2Ugd2FudCBfX2NsYXNzX18gdG8gcmV0dXJuIHRoZSBjbGFzcyBvZiB0aGUgc3VwZXIgb2JqZWN0CiAgICAgICAgICAgIChpLmUuIHN1cGVyLCBvciBhIHN1YmNsYXNzKSwgbm90IHRoZSBjbGFzcyBvZiBzdS0+b2JqLiAqLwogICAgICAgICBza2lwID0gKFB5VW5pY29kZV9DaGVjayhuYW1lKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKG5hbWUpID09IDkgJiYKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDkgJiYKICAgICAgICAgICAgIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJfX2NsYXNzX18iKSA9PSAwKTsKICAgICB9CiAKQEAgLTYxNDAsNiArNjM2MCw5IEBACiAgICAgICAgIH0KICAgICAgICAgaSsrOwogICAgICAgICByZXMgPSBOVUxMOworICAgICAgICAvKiBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSB0byBtcm8gYmVjYXVzZSBzdGFydHR5cGUtPnRwX21ybyBjYW4gYmUKKyAgICAgICAgICAgcmVwbGFjZWQgZHVyaW5nIFB5RGljdF9HZXRJdGVtKGRpY3QsIG5hbWUpICAqLworICAgICAgICBQeV9JTkNSRUYobXJvKTsKICAgICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgIHRtcCA9IFB5VHVwbGVfR0VUX0lURU0obXJvLCBpKTsKICAgICAgICAgICAgIGlmIChQeVR5cGVfQ2hlY2sodG1wKSkKQEAgLTYxNjQsOSArNjM4NywxMSBAQAogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgICAgICAgICAgcmVzID0gdG1wOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobXJvKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihtcm8pOwogICAgIH0KICAgICByZXR1cm4gUHlPYmplY3RfR2VuZXJpY0dldEF0dHIoc2VsZiwgbmFtZSk7CiB9CkBAIC02MTc2LDcgKzY0MDEsNyBAQAogewogICAgIC8qIENoZWNrIHRoYXQgYSBzdXBlcigpIGNhbGwgbWFrZXMgc2Vuc2UuICBSZXR1cm4gYSB0eXBlIG9iamVjdC4KIAotICAgICAgIG9iaiBjYW4gYmUgYSBuZXctc3R5bGUgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKKyAgICAgICBvYmogY2FuIGJlIGEgY2xhc3MsIG9yIGFuIGluc3RhbmNlIG9mIG9uZToKIAogICAgICAgIC0gSWYgaXQgaXMgYSBjbGFzcywgaXQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mICd0eXBlJy4gICAgICBUaGlzIGNhc2UgaXMKICAgICAgICAgIHVzZWQgZm9yIGNsYXNzIG1ldGhvZHM7IHRoZSByZXR1cm4gdmFsdWUgaXMgb2JqLgpAQCAtNjIwMiwxNyArNjQyNyw5IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBUcnkgdGhlIHNsb3cgd2F5ICovCi0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqY2xhc3Nfc3RyID0gTlVMTDsKICAgICAgICAgUHlPYmplY3QgKmNsYXNzX2F0dHI7CiAKLSAgICAgICAgaWYgKGNsYXNzX3N0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjbGFzc19zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiX19jbGFzc19fIik7Ci0gICAgICAgICAgICBpZiAoY2xhc3Nfc3RyID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBjbGFzc19hdHRyID0gUHlPYmplY3RfR2V0QXR0cihvYmosIGNsYXNzX3N0cik7Ci0KKyAgICAgICAgY2xhc3NfYXR0ciA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9fX2NsYXNzX18pOwogICAgICAgICBpZiAoY2xhc3NfYXR0ciAhPSBOVUxMICYmCiAgICAgICAgICAgICBQeVR5cGVfQ2hlY2soY2xhc3NfYXR0cikgJiYKICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKiljbGFzc19hdHRyICE9IFB5X1RZUEUob2JqKSkKQEAgLTYyODksMTggKzY1MDYsMTggQEAKICAgICAgICAgUHlDb2RlT2JqZWN0ICpjbyA9IGYtPmZfY29kZTsKICAgICAgICAgUHlfc3NpemVfdCBpLCBuOwogICAgICAgICBpZiAoY28gPT0gTlVMTCkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwZXIoKTogbm8gY29kZSBvYmplY3QiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBpZiAoY28tPmNvX2FyZ2NvdW50ID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IG5vIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIG9iaiA9IGYtPmZfbG9jYWxzcGx1c1swXTsKICAgICAgICAgaWYgKG9iaiA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBhcmdbMF0gZGVsZXRlZCIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC02MzE5LDE4ICs2NTM2LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGk7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNlbGwgPSBmLT5mX2xvY2Fsc3BsdXNbaW5kZXhdOwogICAgICAgICAgICAgICAgIGlmIChjZWxsID09IE5VTEwgfHwgIVB5Q2VsbF9DaGVjayhjZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGJhZCBfX2NsYXNzX18gY2VsbCIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHR5cGUgPSAoUHlUeXBlT2JqZWN0ICopIFB5Q2VsbF9HRVQoY2VsbCk7CiAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgInN1cGVyKCk6IGVtcHR5IF9fY2xhc3NfXyBjZWxsIik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFQeVR5cGVfQ2hlY2sodHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBfX2NsYXNzX18gaXMgbm90IGEgdHlwZSAoJXMpIiwKICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHR5cGUpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjMzOSw3ICs2NTU2LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAodHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBlcigpOiBfX2NsYXNzX18gY2VsbCBub3QgZm91bmQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlc2xvdHMuaW5jIGIvT2JqZWN0cy90eXBlc2xvdHMuaW5jCmluZGV4IDUxODZkY2YuLmNhYTFlMDMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdHlwZXNsb3RzLmluYworKysgYi9PYmplY3RzL3R5cGVzbG90cy5pbmMKQEAgLTEsNCArMSw0IEBACi0vKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICRSZXZpc2lvbiQgKi8KKy8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgKi8KIDAsCiAwLAogb2Zmc2V0b2YoUHlIZWFwVHlwZU9iamVjdCwgYXNfbWFwcGluZy5tcF9hc3Nfc3Vic2NyaXB0KSwKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZXNsb3RzLnB5IGIvT2JqZWN0cy90eXBlc2xvdHMucHkKaW5kZXggMmUwMGM4MC4uYjI0YzdmNCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlc2xvdHMucHkKKysrIGIvT2JqZWN0cy90eXBlc2xvdHMucHkKQEAgLTMsNyArMyw3IEBACiAKIGltcG9ydCBzeXMsIHJlCiAKLXByaW50KCIvKiBHZW5lcmF0ZWQgYnkgdHlwZXNsb3RzLnB5ICRSZXZpc2lvbiQgKi8iKQorcHJpbnQoIi8qIEdlbmVyYXRlZCBieSB0eXBlc2xvdHMucHkgKi8iKQogcmVzID0ge30KIGZvciBsaW5lIGluIHN5cy5zdGRpbjoKICAgICBtID0gcmUubWF0Y2goIiNkZWZpbmUgUHlfKFthLXpfXSspIChbMC05XSspIiwgbGluZSkKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMgYi9PYmplY3RzL3VuaWNvZGVjdHlwZS5jCmluZGV4IDlmNmFjODkuLmE1NzJjMTIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZWN0eXBlLmMKKysrIGIvT2JqZWN0cy91bmljb2RlY3R5cGUuYwpAQCAtMjEsMTMgKzIxLDIwIEBACiAjZGVmaW5lIFhJRF9TVEFSVF9NQVNLIDB4MTAwCiAjZGVmaW5lIFhJRF9DT05USU5VRV9NQVNLIDB4MjAwCiAjZGVmaW5lIFBSSU5UQUJMRV9NQVNLIDB4NDAwCi0jZGVmaW5lIE5PREVMVEFfTUFTSyAweDgwMAotI2RlZmluZSBOVU1FUklDX01BU0sgMHgxMDAwCisjZGVmaW5lIE5VTUVSSUNfTUFTSyAweDgwMAorI2RlZmluZSBDQVNFX0lHTk9SQUJMRV9NQVNLIDB4MTAwMAorI2RlZmluZSBDQVNFRF9NQVNLIDB4MjAwMAorI2RlZmluZSBFWFRFTkRFRF9DQVNFX01BU0sgMHg0MDAwCiAKIHR5cGVkZWYgc3RydWN0IHsKLSAgICBjb25zdCBQeV9VQ1M0IHVwcGVyOwotICAgIGNvbnN0IFB5X1VDUzQgbG93ZXI7Ci0gICAgY29uc3QgUHlfVUNTNCB0aXRsZTsKKyAgICAvKiAKKyAgICAgICBUaGVzZSBhcmUgZWl0aGVyIGRlbHRhcyB0byB0aGUgY2hhcmFjdGVyIG9yIG9mZnNldHMgaW4KKyAgICAgICBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZS4KKyAgICAqLworICAgIGNvbnN0IGludCB1cHBlcjsKKyAgICBjb25zdCBpbnQgbG93ZXI7CisgICAgY29uc3QgaW50IHRpdGxlOworICAgIC8qIE5vdGUgaWYgbW9yZSBmbGFnIHNwYWNlIGlzIG5lZWRlZCwgZGVjaW1hbCBhbmQgZGlnaXQgY291bGQgYmUgdW5pZmllZC4gKi8KICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRlY2ltYWw7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkaWdpdDsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBmbGFnczsKQEAgLTU3LDE1ICs2NCwxMCBAQAogUHlfVUNTNCBfUHlVbmljb2RlX1RvVGl0bGVjYXNlKHJlZ2lzdGVyIFB5X1VDUzQgY2gpCiB7CiAgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOwotICAgIGludCBkZWx0YSA9IGN0eXBlLT50aXRsZTsKIAotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLQotICAgIGlmIChkZWx0YSA+PSAzMjc2OCkKLSAgICAgICAgICAgIGRlbHRhIC09IDY1NTM2OwotCi0gICAgcmV0dXJuIGNoICsgZGVsdGE7CisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2N0eXBlLT50aXRsZSAmIDB4RkZGRl07CisgICAgcmV0dXJuIGNoICsgY3R5cGUtPnRpdGxlOwogfQogCiAvKiBSZXR1cm5zIDEgZm9yIFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIGNhdGVnb3J5ICdMdCcsIDAKQEAgLTE4OCwxMiArMTkwLDEwIEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9VcHBlcmNhc2UoUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPnVwcGVyOwotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+dXBwZXIgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT51cHBlcjsKIH0KIAogLyogUmV0dXJucyB0aGUgbG93ZXJjYXNlIFVuaWNvZGUgY2hhcmFjdGVycyBjb3JyZXNwb25kaW5nIHRvIGNoIG9yIGp1c3QKQEAgLTIwMiwxMiArMjAyLDg3IEBACiBQeV9VQ1M0IF9QeVVuaWNvZGVfVG9Mb3dlcmNhc2UoUHlfVUNTNCBjaCkKIHsKICAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7Ci0gICAgaW50IGRlbHRhID0gY3R5cGUtPmxvd2VyOwotICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBOT0RFTFRBX01BU0spCi0gICAgICAgIHJldHVybiBkZWx0YTsKLSAgICBpZiAoZGVsdGEgPj0gMzI3NjgpCi0gICAgICAgICAgICBkZWx0YSAtPSA2NTUzNjsKLSAgICByZXR1cm4gY2ggKyBkZWx0YTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtjdHlwZS0+bG93ZXIgJiAweEZGRkZdOworICAgIHJldHVybiBjaCArIGN0eXBlLT5sb3dlcjsKK30KKworaW50IF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoUHlfVUNTNCBjaCwgUHlfVUNTNCAqcmVzKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIGlmIChjdHlwZS0+ZmxhZ3MgJiBFWFRFTkRFRF9DQVNFX01BU0spIHsKKyAgICAgICAgaW50IGluZGV4ID0gY3R5cGUtPmxvd2VyICYgMHhGRkZGOworICAgICAgICBpbnQgbiA9IGN0eXBlLT5sb3dlciA+PiAyNDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmVzWzBdID0gY2ggKyBjdHlwZS0+bG93ZXI7CisgICAgcmV0dXJuIDE7Cit9CisKK2ludCBfUHlVbmljb2RlX1RvVGl0bGVGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLKSB7CisgICAgICAgIGludCBpbmRleCA9IGN0eXBlLT50aXRsZSAmIDB4RkZGRjsKKyAgICAgICAgaW50IG4gPSBjdHlwZS0+dGl0bGUgPj4gMjQ7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgcmVzW2ldID0gX1B5VW5pY29kZV9FeHRlbmRlZENhc2VbaW5kZXggKyBpXTsKKyAgICAgICAgcmV0dXJuIG47CisgICAgfQorICAgIHJlc1swXSA9IGNoICsgY3R5cGUtPnRpdGxlOworICAgIHJldHVybiAxOworfQorCitpbnQgX1B5VW5pY29kZV9Ub1VwcGVyRnVsbChQeV9VQ1M0IGNoLCBQeV9VQ1M0ICpyZXMpCit7CisgICAgY29uc3QgX1B5VW5pY29kZV9UeXBlUmVjb3JkICpjdHlwZSA9IGdldHR5cGVyZWNvcmQoY2gpOworCisgICAgaWYgKGN0eXBlLT5mbGFncyAmIEVYVEVOREVEX0NBU0VfTUFTSykgeworICAgICAgICBpbnQgaW5kZXggPSBjdHlwZS0+dXBwZXIgJiAweEZGRkY7CisgICAgICAgIGludCBuID0gY3R5cGUtPnVwcGVyID4+IDI0OworICAgICAgICBpbnQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHJlc1tpXSA9IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW2luZGV4ICsgaV07CisgICAgICAgIHJldHVybiBuOworICAgIH0KKyAgICByZXNbMF0gPSBjaCArIGN0eXBlLT51cHBlcjsKKyAgICByZXR1cm4gMTsKK30KKworaW50IF9QeVVuaWNvZGVfVG9Gb2xkZWRGdWxsKFB5X1VDUzQgY2gsIFB5X1VDUzQgKnJlcykKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICBpZiAoY3R5cGUtPmZsYWdzICYgRVhURU5ERURfQ0FTRV9NQVNLICYmIChjdHlwZS0+bG93ZXIgPj4gMjApICYgNykgeworICAgICAgICBpbnQgaW5kZXggPSAoY3R5cGUtPmxvd2VyICYgMHhGRkZGKSArIChjdHlwZS0+bG93ZXIgPj4gMjQpOworICAgICAgICBpbnQgbiA9IChjdHlwZS0+bG93ZXIgPj4gMjApICYgNzsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICByZXNbaV0gPSBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtpbmRleCArIGldOworICAgICAgICByZXR1cm4gbjsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfVG9Mb3dlckZ1bGwoY2gsIHJlcyk7Cit9CisKK2ludCBfUHlVbmljb2RlX0lzQ2FzZWQoUHlfVUNTNCBjaCkKK3sKKyAgICBjb25zdCBfUHlVbmljb2RlX1R5cGVSZWNvcmQgKmN0eXBlID0gZ2V0dHlwZXJlY29yZChjaCk7CisKKyAgICByZXR1cm4gKGN0eXBlLT5mbGFncyAmIENBU0VEX01BU0spICE9IDA7Cit9CisKK2ludCBfUHlVbmljb2RlX0lzQ2FzZUlnbm9yYWJsZShQeV9VQ1M0IGNoKQoreworICAgIGNvbnN0IF9QeVVuaWNvZGVfVHlwZVJlY29yZCAqY3R5cGUgPSBnZXR0eXBlcmVjb3JkKGNoKTsKKworICAgIHJldHVybiAoY3R5cGUtPmZsYWdzICYgQ0FTRV9JR05PUkFCTEVfTUFTSykgIT0gMDsKIH0KIAogLyogUmV0dXJucyAxIGZvciBVbmljb2RlIGNoYXJhY3RlcnMgaGF2aW5nIHRoZSBjYXRlZ29yeSAnTGwnLCAnTHUnLCAnTHQnLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCAxZGQzYTg1Li42YzhmZTJkIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtMSw4ICsxLDcgQEAKIC8qCiAKIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gYmFzZWQgb24gb3JpZ2luYWwgY29kZSBieSBGcmVkcmlrIEx1bmRoLAotbW9kaWZpZWQgYnkgTWFyYy1BbmRyZSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+IGFjY29yZGluZyB0byB0aGUKLVVuaWNvZGUgSW50ZWdyYXRpb24gUHJvcG9zYWwgKHNlZSBmaWxlIE1pc2MvdW5pY29kZS50eHQpLgorbW9kaWZpZWQgYnkgTWFyYy1BbmRyZSBMZW1idXJnIDxtYWxAbGVtYnVyZy5jb20+LgogCiBNYWpvciBzcGVlZCB1cGdyYWRlcyB0byB0aGUgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBhdCB0aGUgUmV5a2phdmlrCiBOZWVkRm9yU3BlZWQgc3ByaW50LCBieSBGcmVkcmlrIEx1bmRoIGFuZCBBbmRyZXcgRGFsa2UuCkBAIC00MiwzNCArNDEsMTIgQEAKICNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgInVjbmhhc2guaCIKKyNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKICNpZmRlZiBNU19XSU5ET1dTCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKLS8qIExpbWl0IGZvciB0aGUgVW5pY29kZSBvYmplY3QgZnJlZSBsaXN0ICovCi0KLSNkZWZpbmUgUHlVbmljb2RlX01BWEZSRUVMSVNUICAgICAgIDEwMjQKLQotLyogTGltaXQgZm9yIHRoZSBVbmljb2RlIG9iamVjdCBmcmVlIGxpc3Qgc3RheSBhbGl2ZSBvcHRpbWl6YXRpb24uCi0KLSAgIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGtlZXAgYWxsb2NhdGVkIFVuaWNvZGUgbWVtb3J5IGludGFjdCBmb3IKLSAgIGFsbCBvYmplY3RzIG9uIHRoZSBmcmVlIGxpc3QgaGF2aW5nIGEgc2l6ZSBsZXNzIHRoYW4gdGhpcwotICAgbGltaXQuIFRoaXMgcmVkdWNlcyBtYWxsb2MoKSBvdmVyaGVhZCBmb3Igc21hbGwgVW5pY29kZSBvYmplY3RzLgotCi0gICBBdCB3b3JzdCB0aGlzIHdpbGwgcmVzdWx0IGluIFB5VW5pY29kZV9NQVhGUkVFTElTVCAqCi0gICAoc2l6ZW9mKFB5VW5pY29kZU9iamVjdCkgKyBLRUVQQUxJVkVfU0laRV9MSU1JVCArCi0gICBtYWxsb2MoKS1vdmVyaGVhZCkgYnl0ZXMgb2YgdW51c2VkIGdhcmJhZ2UuCi0KLSAgIFNldHRpbmcgdGhlIGxpbWl0IHRvIDAgZWZmZWN0aXZlbHkgdHVybnMgdGhlIGZlYXR1cmUgb2ZmLgotCi0gICBOb3RlOiBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlICEgSWYgeW91IGdldCBjb3JlIGR1bXBzIHdoZW4KLSAgIHVzaW5nIFVuaWNvZGUgb2JqZWN0cywgdHVybiB0aGlzIGZlYXR1cmUgb2ZmLgotCi0qLwotCi0jZGVmaW5lIEtFRVBBTElWRV9TSVpFX0xJTUlUICAgICAgIDkKLQogLyogRW5kaWFubmVzcyBzd2l0Y2hlczsgZGVmYXVsdHMgdG8gbGl0dGxlIGVuZGlhbiAqLwogCiAjaWZkZWYgV09SRFNfQklHRU5ESUFOCkBAIC05MCw2ICs2NywxMTAgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qIE1heGltdW0gY29kZSBwb2ludCBvZiBVbmljb2RlIDYuMDogMHgxMGZmZmYgKDEsMTE0LDExMSkgKi8KKyNkZWZpbmUgTUFYX1VOSUNPREUgMHgxMGZmZmYKKworI2lmZGVmIFB5X0RFQlVHCisjICBkZWZpbmUgX1B5VW5pY29kZV9DSEVDSyhvcCkgX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KG9wLCAwKQorI2Vsc2UKKyMgIGRlZmluZSBfUHlVbmljb2RlX0NIRUNLKG9wKSBQeVVuaWNvZGVfQ2hlY2sob3ApCisjZW5kaWYKKworI2RlZmluZSBfUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPnV0ZjgpCisjZGVmaW5lIFB5VW5pY29kZV9VVEY4KG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKG9wKSksICAgICAgICAgICAgICAgICAgICBcCisgICAgIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSA/ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICgoY2hhciopKChQeUFTQ0lJT2JqZWN0Kikob3ApICsgMSkpIDogICAgICAgICAgXAorICAgICAgICAgX1B5VW5pY29kZV9VVEY4KG9wKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKShvcCkpLT51dGY4X2xlbmd0aCkKKyNkZWZpbmUgUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkob3ApKSwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkob3ApID8gICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgKChQeUFTQ0lJT2JqZWN0Kikob3ApKS0+bGVuZ3RoIDogICAgICAgICAgICAgICBcCisgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKG9wKSkKKyNkZWZpbmUgX1B5VW5pY29kZV9XU1RSKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgoKFB5QVNDSUlPYmplY3QqKShvcCkpLT53c3RyKQorI2RlZmluZSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKG9wKSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKG9wKSktPndzdHJfbGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5sZW5ndGgpCisjZGVmaW5lIF9QeVVuaWNvZGVfU1RBVEUob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlKQorI2RlZmluZSBfUHlVbmljb2RlX0hBU0gob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlBU0NJSU9iamVjdCAqKShvcCkpLT5oYXNoKQorI2RlZmluZSBfUHlVbmljb2RlX0tJTkQob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKChQeUFTQ0lJT2JqZWN0ICopKG9wKSktPnN0YXRlLmtpbmQpCisjZGVmaW5lIF9QeVVuaWNvZGVfR0VUX0xFTkdUSChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoKFB5QVNDSUlPYmplY3QgKikob3ApKS0+bGVuZ3RoKQorI2RlZmluZSBfUHlVbmljb2RlX0RBVEFfQU5ZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoUHlVbmljb2RlT2JqZWN0Kikob3ApKS0+ZGF0YS5hbnkpCisKKy8qIE9wdGltaXplZCB2ZXJzaW9uIG9mIFB5X01BWCgpIHRvIGNvbXB1dGUgdGhlIG1heGltdW0gY2hhcmFjdGVyOgorICAgdXNlIGl0IHdoZW4geW91ciBhcmUgY29tcHV0aW5nIHRoZSBzZWNvbmQgYXJndW1lbnQgb2YgUHlVbmljb2RlX05ldygpICovCisjZGVmaW5lIE1BWF9NQVhDSEFSKG1heGNoYXIxLCBtYXhjaGFyMikgICAgICAgICAgICAgICAgIFwKKyAgICAoKG1heGNoYXIxKSB8IChtYXhjaGFyMikpCisKKyN1bmRlZiBQeVVuaWNvZGVfUkVBRFkKKyNkZWZpbmUgUHlVbmljb2RlX1JFQURZKG9wKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhvcCkpLCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChQeVVuaWNvZGVfSVNfUkVBRFkob3ApID8gICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIDAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX1B5VW5pY29kZV9SZWFkeShvcCkpKQorCisjZGVmaW5lIF9QeVVuaWNvZGVfU0hBUkVfVVRGOChvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSksICAgICAgICAgICBcCisgICAgIChfUHlVbmljb2RlX1VURjgob3ApID09IFB5VW5pY29kZV9EQVRBKG9wKSkpCisjZGVmaW5lIF9QeVVuaWNvZGVfU0hBUkVfV1NUUihvcCkgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IFB5VW5pY29kZV9EQVRBKG9wKSkpCisKKy8qIHRydWUgaWYgdGhlIFVuaWNvZGUgb2JqZWN0IGhhcyBhbiBhbGxvY2F0ZWQgVVRGLTggbWVtb3J5IGJsb2NrCisgICAobm90IHNoYXJlZCB3aXRoIG90aGVyIGRhdGEpICovCisjZGVmaW5lIF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKG9wKSAgICAgICAgICAgICAgICAgIFwKKyAgICAoYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sob3ApKSwgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoIVB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9wKSAgICAgICAgICAgICAgICAgICBcCisgICAgICAmJiBfUHlVbmljb2RlX1VURjgob3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICYmIF9QeVVuaWNvZGVfVVRGOChvcCkgIT0gUHlVbmljb2RlX0RBVEEob3ApKSkKKworLyogdHJ1ZSBpZiB0aGUgVW5pY29kZSBvYmplY3QgaGFzIGFuIGFsbG9jYXRlZCB3c3RyIG1lbW9yeSBibG9jaworICAgKG5vdCBzaGFyZWQgd2l0aCBvdGhlciBkYXRhKSAqLworI2RlZmluZSBfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWShvcCkgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydChfUHlVbmljb2RlX0NIRUNLKG9wKSksICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgKF9QeVVuaWNvZGVfV1NUUihvcCkgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgKCFQeVVuaWNvZGVfSVNfUkVBRFkob3ApIHx8ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgX1B5VW5pY29kZV9XU1RSKG9wKSAhPSBQeVVuaWNvZGVfREFUQShvcCkpKSkKKworLyogR2VuZXJpYyBoZWxwZXIgbWFjcm8gdG8gY29udmVydCBjaGFyYWN0ZXJzIG9mIGRpZmZlcmVudCB0eXBlcy4KKyAgIGZyb21fdHlwZSBhbmQgdG9fdHlwZSBoYXZlIHRvIGJlIHZhbGlkIHR5cGUgbmFtZXMsIGJlZ2luIGFuZCBlbmQKKyAgIGFyZSBwb2ludGVycyB0byB0aGUgc291cmNlIGNoYXJhY3RlcnMgd2hpY2ggc2hvdWxkIGJlIG9mIHR5cGUKKyAgICJmcm9tX3R5cGUgKiIuICB0byBpcyBhIHBvaW50ZXIgb2YgdHlwZSAidG9fdHlwZSAqIiBhbmQgcG9pbnRzIHRvIHRoZQorICAgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgY2hhcmFjdGVycyBhcmUgd3JpdHRlbiB0by4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKGZyb21fdHlwZSwgdG9fdHlwZSwgYmVnaW4sIGVuZCwgdG8pIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB0b190eXBlICpfdG8gPSAodG9fdHlwZSAqKSB0bzsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX2l0ZXIgPSAoYmVnaW4pOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgY29uc3QgZnJvbV90eXBlICpfZW5kID0gKGVuZCk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9zc2l6ZV90IG4gPSAoX2VuZCkgLSAoX2l0ZXIpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIGNvbnN0IGZyb21fdHlwZSAqX3Vucm9sbGVkX2VuZCA9ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pdGVyICsgX1B5X1NJWkVfUk9VTkRfRE9XTihuLCA0KTsgICAgICAgICAgXAorICAgICAgICB3aGlsZSAoX2l0ZXIgPCAoX3Vucm9sbGVkX2VuZCkpIHsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bMF0gPSAodG9fdHlwZSkgX2l0ZXJbMF07ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF90b1sxXSA9ICh0b190eXBlKSBfaXRlclsxXTsgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgX3RvWzJdID0gKHRvX3R5cGUpIF9pdGVyWzJdOyAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfdG9bM10gPSAodG9fdHlwZSkgX2l0ZXJbM107ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIF9pdGVyICs9IDQ7IF90byArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHdoaWxlIChfaXRlciA8IChfZW5kKSkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICpfdG8rKyA9ICh0b190eXBlKSAqX2l0ZXIrKzsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKDApCisKIC8qIFRoaXMgZGljdGlvbmFyeSBob2xkcyBhbGwgaW50ZXJuZWQgdW5pY29kZSBzdHJpbmdzLiAgTm90ZSB0aGF0IHJlZmVyZW5jZXMKICAgIHRvIHN0cmluZ3MgaW4gdGhpcyBkaWN0aW9uYXJ5IGFyZSAqbm90KiBjb3VudGVkIGluIHRoZSBzdHJpbmcncyBvYl9yZWZjbnQuCiAgICBXaGVuIHRoZSBpbnRlcm5lZCBzdHJpbmcgcmVhY2hlcyBhIHJlZmNudCBvZiAwIHRoZSBzdHJpbmcgZGVhbGxvY2F0aW9uCkBAIC0xMDAsMTYgKzE4MSwxNSBAQAogKi8KIHN0YXRpYyBQeU9iamVjdCAqaW50ZXJuZWQ7CiAKLS8qIEZyZWUgbGlzdCBmb3IgVW5pY29kZSBvYmplY3RzICovCi1zdGF0aWMgUHlVbmljb2RlT2JqZWN0ICpmcmVlX2xpc3Q7Ci1zdGF0aWMgaW50IG51bWZyZWU7Ci0KIC8qIFRoZSBlbXB0eSBVbmljb2RlIG9iamVjdCBpcyBzaGFyZWQgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4gKi8KLXN0YXRpYyBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGVfZW1wdHk7CitzdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfZW1wdHk7CisKKy8qIExpc3Qgb2Ygc3RhdGljIHN0cmluZ3MuICovCitzdGF0aWMgX1B5X0lkZW50aWZpZXIgKnN0YXRpY19zdHJpbmdzOwogCiAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgc3RyaW5ncyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUgYmVpbmcKICAgIHNoYXJlZCBhcyB3ZWxsLiAqLwotc3RhdGljIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZV9sYXRpbjFbMjU2XTsKK3N0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9sYXRpbjFbMjU2XTsKIAogLyogRmFzdCBkZXRlY3Rpb24gb2YgdGhlIG1vc3QgZnJlcXVlbnQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9hc2NpaV93aGl0ZXNwYWNlW10gPSB7CkBAIC0xNDIsMTYgKzIyMiwzMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorLyogZm9yd2FyZCAqLworc3RhdGljIFB5VW5pY29kZU9iamVjdCAqX1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBsZW5ndGgpOworc3RhdGljIFB5T2JqZWN0KiBnZXRfbGF0aW4xX2NoYXIodW5zaWduZWQgY2hhciBjaCk7CitzdGF0aWMgaW50IHVuaWNvZGVfbW9kaWZpYWJsZShQeU9iamVjdCAqdW5pY29kZSk7CisKKworc3RhdGljIFB5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbVVDUzEoY29uc3QgdW5zaWduZWQgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKTsKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlVbmljb2RlX0Zyb21VQ1MyKGNvbnN0IFB5X1VDUzIgKnMsIFB5X3NzaXplX3Qgc2l6ZSk7CitzdGF0aWMgUHlPYmplY3QgKgorX1B5VW5pY29kZV9Gcm9tVUNTNChjb25zdCBQeV9VQ1M0ICpzLCBQeV9zc2l6ZV90IHNpemUpOworCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLCBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCiAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsIFB5X3NzaXplX3QgKm5ld3Bvcyk7CiAKLXN0YXRpYyB2b2lkIHJhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pOworc3RhdGljIHZvaWQKK3JhaXNlX2VuY29kZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAKIC8qIFNhbWUgZm9yIGxpbmVicmVha3MgKi8KIHN0YXRpYyB1bnNpZ25lZCBjaGFyIGFzY2lpX2xpbmVicmVha1tdID0gewpAQCAtMTgxLDcgKzI3Niw4IEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAogfTsKIAotCisvKiBUaGUgbWF4IHVuaWNvZGUgdmFsdWUgaXMgYWx3YXlzIDB4MTBGRkZGIHdoaWxlIHVzaW5nIHRoZSBQRVAtMzkzIEFQSS4KKyAgIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgQVBJLiAqLwogUHlfVU5JQ09ERQogUHlVbmljb2RlX0dldE1heCh2b2lkKQogewpAQCAtMTk0LDYgKzI5MCwyMjQgQEAKICNlbmRpZgogfQogCisjaWZkZWYgUHlfREVCVUcKK2ludAorX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KFB5T2JqZWN0ICpvcCwgaW50IGNoZWNrX2NvbnRlbnQpCit7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWk7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG9wKSk7CisKKyAgICBhc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopb3A7CisgICAga2luZCA9IGFzY2lpLT5zdGF0ZS5raW5kOworCisgICAgaWYgKGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAxICYmIGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDEpIHsKKyAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDEpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCAqY29tcGFjdCA9IChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopb3A7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDEpIHsKKyAgICAgICAgICAgIGRhdGEgPSBjb21wYWN0ICsgMTsKKyAgICAgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5ECisgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgIHx8IGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwKTsKKyAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUucmVhZHkgPT0gMSk7CisgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjggIT0gZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb3A7CisKKyAgICAgICAgICAgIGRhdGEgPSB1bmljb2RlLT5kYXRhLmFueTsKKyAgICAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5sZW5ndGggPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5oYXNoID09IC0xKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLnJlYWR5ID09IDApOworICAgICAgICAgICAgICAgIGFzc2VydChhc2NpaS0+c3RhdGUuaW50ZXJuZWQgPT0gU1NUQVRFX05PVF9JTlRFUk5FRCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT53c3RyICE9IE5VTEwpOworICAgICAgICAgICAgICAgIGFzc2VydChkYXRhID09IE5VTEwpOworICAgICAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT51dGY4ID09IE5VTEwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICAgfHwga2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgICB8fCBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPnN0YXRlLmNvbXBhY3QgPT0gMCk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT5zdGF0ZS5yZWFkeSA9PSAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoZGF0YSAhPSBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAoY29tcGFjdC0+dXRmOCA9PSBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChjb21wYWN0LT51dGY4X2xlbmd0aCA9PSBhc2NpaS0+bGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgKGNvbXBhY3QtPnV0ZjggIT0gZGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgICAgIGlmICgKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgICAgICAgICAga2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORAorI2Vsc2UKKyAgICAgICAgICAgICAgICBraW5kID09IFB5VW5pY29kZV80QllURV9LSU5ECisjZW5kaWYKKyAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoYXNjaWktPndzdHIgPT0gZGF0YSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGNvbXBhY3QtPndzdHJfbGVuZ3RoID09IGFzY2lpLT5sZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgYXNzZXJ0KGFzY2lpLT53c3RyICE9IGRhdGEpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbXBhY3QtPnV0ZjggPT0gTlVMTCkKKyAgICAgICAgICAgIGFzc2VydChjb21wYWN0LT51dGY4X2xlbmd0aCA9PSAwKTsKKyAgICAgICAgaWYgKGFzY2lpLT53c3RyID09IE5VTEwpCisgICAgICAgICAgICBhc3NlcnQoY29tcGFjdC0+d3N0cl9sZW5ndGggPT0gMCk7CisgICAgfQorICAgIC8qIGNoZWNrIHRoYXQgdGhlIGJlc3Qga2luZCBpcyB1c2VkICovCisgICAgaWYgKGNoZWNrX2NvbnRlbnQgJiYga2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkKKyAgICB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgUHlfVUNTNCBtYXhjaGFyID0gMDsKKyAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgUHlfVUNTNCBjaDsKKworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoYXNjaWkpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGFzY2lpLT5sZW5ndGg7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgIGlmIChjaCA+IG1heGNoYXIpCisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IGNoOworICAgICAgICB9CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpID09IDApIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA+PSAxMjgpOworICAgICAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDw9IDI1NSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXNzZXJ0KG1heGNoYXIgPCAxMjgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyID49IDB4MTAwKTsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDw9IDB4RkZGRik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQobWF4Y2hhciA+PSAweDEwMDAwKTsKKyAgICAgICAgICAgIGFzc2VydChtYXhjaGFyIDw9IE1BWF9VTklDT0RFKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgYXNjaWktPmxlbmd0aCkgPT0gMCk7CisgICAgfQorICAgIHJldHVybiAxOworfQorI2VuZGlmCisKK3N0YXRpYyBQeU9iamVjdCoKK3VuaWNvZGVfcmVzdWx0X3djaGFyKFB5T2JqZWN0ICp1bmljb2RlKQoreworI2lmbmRlZiBQeV9ERUJVRworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgYXNzZXJ0KFB5X1JFRkNOVCh1bmljb2RlKSA9PSAxKTsKKworICAgIGxlbiA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDEpIHsKKyAgICAgICAgd2NoYXJfdCBjaCA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbGF0aW4xX2NoYXIgPSBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpY2gpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgcmV0dXJuIGxhdGluMV9jaGFyOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKF9QeVVuaWNvZGVfUmVhZHkodW5pY29kZSkgPCAwKSB7CisgICAgICAgIFB5X1hERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgLyogZG9uJ3QgbWFrZSB0aGUgcmVzdWx0IHJlYWR5IGluIGRlYnVnIG1vZGUgdG8gZW5zdXJlIHRoYXQgdGhlIGNhbGxlcgorICAgICAgIG1ha2VzIHRoZSBzdHJpbmcgcmVhZHkgYmVmb3JlIHVzaW5nIGl0ICovCisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisjZW5kaWYKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHRfcmVhZHkoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgUHlfc3NpemVfdCBsZW5ndGg7CisKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgaWYgKHVuaWNvZGUgIT0gdW5pY29kZV9lbXB0eSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKworICAgIGlmIChsZW5ndGggPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCAwKTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbGF0aW4xX2NoYXIgPSB1bmljb2RlX2xhdGluMVtjaF07CisgICAgICAgICAgICBpZiAobGF0aW4xX2NoYXIgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmICh1bmljb2RlICE9IGxhdGluMV9jaGFyKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihsYXRpbjFfY2hhcik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhdGluMV9jaGFyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xW2NoXSA9IHVuaWNvZGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHQoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF9yZWFkeSh1bmljb2RlKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF93Y2hhcih1bmljb2RlKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgordW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgLyogU3VidHlwZSAtLSByZXR1cm4gZ2VudWluZSB1bmljb2RlIHN0cmluZyB3aXRoIHRoZSBzYW1lIHZhbHVlLiAqLworICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Db3B5KHVuaWNvZGUpOworfQorCisjaWZkZWYgSEFWRV9NQkNTCitzdGF0aWMgT1NWRVJTSU9OSU5GT0VYIHdpbnZlcjsKKyNlbmRpZgorCiAvKiAtLS0gQmxvb20gRmlsdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBzdHVmZiB0byBpbXBsZW1lbnQgc2ltcGxlICJibG9vbSBmaWx0ZXJzIiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpAQCAtMjIzLDcgKzUzNyw4IEBACiAgICAgKChjaCkgPCAxMjhVID8gYXNjaWlfbGluZWJyZWFrWyhjaCldIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChCTE9PTShibG9vbV9saW5lYnJlYWssIChjaCkpICYmIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoY2gpKSkKIAotUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spIG1ha2VfYmxvb21fbWFzayhQeV9VTklDT0RFKiBwdHIsIFB5X3NzaXplX3QgbGVuKQorUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spCittYWtlX2Jsb29tX21hc2soaW50IGtpbmQsIHZvaWQqIHB0ciwgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgLyogY2FsY3VsYXRlIHNpbXBsZSBibG9vbS1zdHlsZSBiaXRtYXNrIGZvciBhIGdpdmVuIHVuaWNvZGUgc3RyaW5nICovCiAKQEAgLTIzMiw3NiArNTQ3LDI1MyBAQAogCiAgICAgbWFzayA9IDA7CiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotICAgICAgICBCTE9PTV9BREQobWFzaywgcHRyW2ldKTsKKyAgICAgICAgQkxPT01fQUREKG1hc2ssIFB5VW5pY29kZV9SRUFEKGtpbmQsIHB0ciwgaSkpOwogCiAgICAgcmV0dXJuIG1hc2s7CiB9CiAKLVB5X0xPQ0FMX0lOTElORShpbnQpIHVuaWNvZGVfbWVtYmVyKFB5X1VOSUNPREUgY2hyLCBQeV9VTklDT0RFKiBzZXQsIFB5X3NzaXplX3Qgc2V0bGVuKQotewotICAgIFB5X3NzaXplX3QgaTsKKyNkZWZpbmUgQkxPT01fTUVNQkVSKG1hc2ssIGNociwgc3RyKSBcCisgICAgKEJMT09NKG1hc2ssIGNocikgXAorICAgICAmJiAoUHlVbmljb2RlX0ZpbmRDaGFyKHN0ciwgY2hyLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpLCAxKSA+PSAwKSkKIAotICAgIGZvciAoaSA9IDA7IGkgPCBzZXRsZW47IGkrKykKLSAgICAgICAgaWYgKHNldFtpXSA9PSBjaHIpCi0gICAgICAgICAgICByZXR1cm4gMTsKKy8qIENvbXBpbGF0aW9uIG9mIHRlbXBsYXRlZCByb3V0aW5lcyAqLwogCi0gICAgcmV0dXJuIDA7Ci19CisjaW5jbHVkZSAic3RyaW5nbGliL2FzY2lpbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCiAKLSNkZWZpbmUgQkxPT01fTUVNQkVSKG1hc2ssIGNociwgc2V0LCBzZXRsZW4pICAgICAgICAgICAgICAgICAgICBcCi0gICAgQkxPT00obWFzaywgY2hyKSAmJiB1bmljb2RlX21lbWJlcihjaHIsIHNldCwgc2V0bGVuKQorI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MxbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvcGFydGl0aW9uLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3NwbGl0LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZF9tYXhfY2hhci5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9sb2NhbGV1dGlsLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzMmxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9zcGxpdC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb3VudC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmRfbWF4X2NoYXIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczRsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9maW5kX21heF9jaGFyLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2xvY2FsZXV0aWwuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91bmljb2RlZGVmcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKIAogLyogLS0tIFVuaWNvZGUgT2JqZWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLXN0YXRpYwotaW50IHVuaWNvZGVfcmVzaXplKHJlZ2lzdGVyIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBQeU9iamVjdCAqCitmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKKworUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKHZvaWQgKnMsIGludCBraW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIHZvaWQgKm9sZHN0cjsKKyAgICBpbnQgbW9kZSA9IChkaXJlY3Rpb24gPT0gMSkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKIAotICAgIC8qIFNob3J0Y3V0IGlmIHRoZXJlJ3Mgbm90aGluZyBtdWNoIHRvIGRvLiAqLwotICAgIGlmICh1bmljb2RlLT5sZW5ndGggPT0gbGVuZ3RoKQotICAgICAgICBnb3RvIHJlc2V0OwotCi0gICAgLyogUmVzaXppbmcgc2hhcmVkIG9iamVjdCAodW5pY29kZV9lbXB0eSBvciBzaW5nbGUgY2hhcmFjdGVyCi0gICAgICAgb2JqZWN0cykgaW4tcGxhY2UgaXMgbm90IGFsbG93ZWQuIFVzZSBQeVVuaWNvZGVfUmVzaXplKCkKLSAgICAgICBpbnN0ZWFkICEgKi8KLQotICAgIGlmICh1bmljb2RlID09IHVuaWNvZGVfZW1wdHkgfHwKLSAgICAgICAgKHVuaWNvZGUtPmxlbmd0aCA9PSAxICYmCi0gICAgICAgICB1bmljb2RlLT5zdHJbMF0gPCAyNTZVICYmCi0gICAgICAgICB1bmljb2RlX2xhdGluMVt1bmljb2RlLT5zdHJbMF1dID09IHVuaWNvZGUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCByZXNpemUgc2hhcmVkIHN0ciBvYmplY3RzIik7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVUNTMSBjaDEgPSAoUHlfVUNTMSkgY2g7CisgICAgICAgICAgICBpZiAoY2gxID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX2Zhc3RzZWFyY2goKFB5X1VDUzEgKikgcywgc2l6ZSwgJmNoMSwgMSwgMCwgbW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgeworICAgICAgICAgICAgUHlfVUNTMiBjaDIgPSAoUHlfVUNTMikgY2g7CisgICAgICAgICAgICBpZiAoY2gyID09IGNoKQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2Zhc3RzZWFyY2goKFB5X1VDUzIgKikgcywgc2l6ZSwgJmNoMiwgMSwgMCwgbW9kZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfZmFzdHNlYXJjaCgoUHlfVUNTNCAqKSBzLCBzaXplLCAmY2gsIDEsIDAsIG1vZGUpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KK30KIAotICAgIC8qIFdlIGFsbG9jYXRlIG9uZSBtb3JlIGJ5dGUgdG8gbWFrZSBzdXJlIHRoZSBzdHJpbmcgaXMgVXgwMDAwIHRlcm1pbmF0ZWQuCi0gICAgICAgVGhlIG92ZXJhbGxvY2F0aW9uIGlzIGFsc28gdXNlZCBieSBmYXN0c2VhcmNoLCB3aGljaCBhc3N1bWVzIHRoYXQgaXQncwotICAgICAgIHNhZmUgdG8gbG9vayBhdCBzdHJbbGVuZ3RoXSAod2l0aG91dCBtYWtpbmcgYW55IGFzc3VtcHRpb25zIGFib3V0IHdoYXQKLSAgICAgICBpdCBjb250YWlucykuICovCitzdGF0aWMgUHlPYmplY3QqCityZXNpemVfY29tcGFjdChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlfc3NpemVfdCBjaGFyX3NpemU7CisgICAgUHlfc3NpemVfdCBzdHJ1Y3Rfc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG5ld19zaXplOworICAgIGludCBzaGFyZV93c3RyOworICAgIFB5T2JqZWN0ICpuZXdfdW5pY29kZTsKKyAgICBhc3NlcnQodW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpOwogCi0gICAgb2xkc3RyID0gdW5pY29kZS0+c3RyOwotICAgIHVuaWNvZGUtPnN0ciA9IFB5T2JqZWN0X1JFQUxMT0ModW5pY29kZS0+c3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFB5X1VOSUNPREUpICogKGxlbmd0aCArIDEpKTsKLSAgICBpZiAoIXVuaWNvZGUtPnN0cikgewotICAgICAgICB1bmljb2RlLT5zdHIgPSAoUHlfVU5JQ09ERSAqKW9sZHN0cjsKKyAgICBjaGFyX3NpemUgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUFTQ0lJT2JqZWN0KTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QpOworICAgIHNoYXJlX3dzdHIgPSBfUHlVbmljb2RlX1NIQVJFX1dTVFIodW5pY29kZSk7CisKKyAgICBpZiAobGVuZ3RoID4gKChQWV9TU0laRV9UX01BWCAtIHN0cnVjdF9zaXplKSAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZXdfc2l6ZSA9IChzdHJ1Y3Rfc2l6ZSArIChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZSk7CisKKyAgICBfUHlfREVDX1JFRlRPVEFMOworICAgIF9QeV9Gb3JnZXRSZWZlcmVuY2UodW5pY29kZSk7CisKKyAgICBuZXdfdW5pY29kZSA9IChQeU9iamVjdCAqKVB5T2JqZWN0X1JFQUxMT0MoKGNoYXIgKil1bmljb2RlLCBuZXdfc2l6ZSk7CisgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgX1B5X05ld1JlZmVyZW5jZSh1bmljb2RlKTsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHVuaWNvZGUgPSBuZXdfdW5pY29kZTsKKyAgICBfUHlfTmV3UmVmZXJlbmNlKHVuaWNvZGUpOworCisgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgaWYgKHNoYXJlX3dzdHIpIHsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gUHlVbmljb2RlX0RBVEEodW5pY29kZSk7CisgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aDsKKyAgICB9CisgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCAwKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDApKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworc3RhdGljIGludAorcmVzaXplX2lucGxhY2UoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoreworICAgIHdjaGFyX3QgKndzdHI7CisgICAgUHlfc3NpemVfdCBuZXdfc2l6ZTsKKyAgICBhc3NlcnQoIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoUHlfUkVGQ05UKHVuaWNvZGUpID09IDEpOworCisgICAgaWYgKFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSkgeworICAgICAgICBQeV9zc2l6ZV90IGNoYXJfc2l6ZTsKKyAgICAgICAgaW50IHNoYXJlX3dzdHIsIHNoYXJlX3V0Zjg7CisgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgZGF0YSA9IF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSk7CisgICAgICAgIGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICBzaGFyZV93c3RyID0gX1B5VW5pY29kZV9TSEFSRV9XU1RSKHVuaWNvZGUpOworICAgICAgICBzaGFyZV91dGY4ID0gX1B5VW5pY29kZV9TSEFSRV9VVEY4KHVuaWNvZGUpOworCisgICAgICAgIGlmIChsZW5ndGggPiAoUFlfU1NJWkVfVF9NQVggLyBjaGFyX3NpemUgLSAxKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBuZXdfc2l6ZSA9IChsZW5ndGggKyAxKSAqIGNoYXJfc2l6ZTsKKworICAgICAgICBpZiAoIXNoYXJlX3V0ZjggJiYgX1B5VW5pY29kZV9IQVNfVVRGOF9NRU1PUlkodW5pY29kZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX1VURjgodW5pY29kZSkpOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB9CisKKyAgICAgICAgZGF0YSA9IChQeU9iamVjdCAqKVB5T2JqZWN0X1JFQUxMT0MoZGF0YSwgbmV3X3NpemUpOworICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBkYXRhOworICAgICAgICBpZiAoc2hhcmVfd3N0cikgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gZGF0YTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNoYXJlX3V0ZjgpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IGRhdGE7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIGRhdGEsIGxlbmd0aCwgMCk7CisgICAgICAgIGlmIChzaGFyZV93c3RyIHx8IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDApKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgIT0gTlVMTCk7CisKKyAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLworICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSAtIDEpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB1bmljb2RlLT5zdHJbbGVuZ3RoXSA9IDA7Ci0gICAgdW5pY29kZS0+bGVuZ3RoID0gbGVuZ3RoOwotCi0gIHJlc2V0OgotICAgIC8qIFJlc2V0IHRoZSBvYmplY3QgY2FjaGVzICovCi0gICAgaWYgKHVuaWNvZGUtPmRlZmVuYykgewotICAgICAgICBQeV9DTEVBUih1bmljb2RlLT5kZWZlbmMpOworICAgIG5ld19zaXplID0gc2l6ZW9mKHdjaGFyX3QpICogKGxlbmd0aCArIDEpOworICAgIHdzdHIgPSAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgIHdzdHIgPSBQeU9iamVjdF9SRUFMTE9DKHdzdHIsIG5ld19zaXplKTsKKyAgICBpZiAoIXdzdHIpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB1bmljb2RlLT5oYXNoID0gLTE7Ci0KKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSB3c3RyOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVtsZW5ndGhdID0gMDsKKyAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodW5pY29kZSwgMCkpOwogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgUHlPYmplY3QqCityZXNpemVfY29weShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlfc3NpemVfdCBjb3B5X2xlbmd0aDsKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKSB7CisgICAgICAgIFB5T2JqZWN0ICpjb3B5OworCisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBjb3B5ID0gUHlVbmljb2RlX05ldyhsZW5ndGgsIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSk7CisgICAgICAgIGlmIChjb3B5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihsZW5ndGgsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoY29weSwgMCwgdW5pY29kZSwgMCwgY29weV9sZW5ndGgpOworICAgICAgICByZXR1cm4gY29weTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp3OworCisgICAgICAgIHcgPSAoUHlPYmplY3QqKV9QeVVuaWNvZGVfTmV3KGxlbmd0aCk7CisgICAgICAgIGlmICh3ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29weV9sZW5ndGggPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBjb3B5X2xlbmd0aCA9IFB5X01JTihjb3B5X2xlbmd0aCwgbGVuZ3RoKTsKKyAgICAgICAgUHlfVU5JQ09ERV9DT1BZKF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29weV9sZW5ndGgpOworICAgICAgICByZXR1cm4gdzsKKyAgICB9Cit9CisKIC8qIFdlIGFsbG9jYXRlIG9uZSBtb3JlIGJ5dGUgdG8gbWFrZSBzdXJlIHRoZSBzdHJpbmcgaXMKICAgIFV4MDAwMCB0ZXJtaW5hdGVkOyBzb21lIGNvZGUgKGUuZy4gbmV3X2lkZW50aWZpZXIpCiAgICByZWxpZXMgb24gdGhhdC4KQEAgLTMxMSw1NSArODAzLDM5IEBACiAKICovCiAKLXN0YXRpYwotUHlVbmljb2RlT2JqZWN0ICpfUHlVbmljb2RlX05ldyhQeV9zc2l6ZV90IGxlbmd0aCkKK3N0YXRpYyBQeVVuaWNvZGVPYmplY3QgKgorX1B5VW5pY29kZV9OZXcoUHlfc3NpemVfdCBsZW5ndGgpCiB7CiAgICAgcmVnaXN0ZXIgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOworICAgIHNpemVfdCBuZXdfc2l6ZTsKIAogICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLwogICAgIGlmIChsZW5ndGggPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIChQeVVuaWNvZGVPYmplY3QqKXVuaWNvZGVfZW1wdHk7CiAgICAgfQogCiAgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBzaXplLiAqLwogICAgIGlmIChsZW5ndGggPiAoKFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKFB5X1VOSUNPREUpKSAtIDEpKSB7CiAgICAgICAgIHJldHVybiAoUHlVbmljb2RlT2JqZWN0ICopUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9Ci0KLSAgICAvKiBVbmljb2RlIGZyZWVsaXN0ICYgbWVtb3J5IGFsbG9jYXRpb24gKi8KLSAgICBpZiAoZnJlZV9saXN0KSB7Ci0gICAgICAgIHVuaWNvZGUgPSBmcmVlX2xpc3Q7Ci0gICAgICAgIGZyZWVfbGlzdCA9ICooUHlVbmljb2RlT2JqZWN0ICoqKXVuaWNvZGU7Ci0gICAgICAgIG51bWZyZWUtLTsKLSAgICAgICAgaWYgKHVuaWNvZGUtPnN0cikgewotICAgICAgICAgICAgLyogS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb246IHdlIG9ubHkgdXBzaXplIHRoZSBidWZmZXIsCi0gICAgICAgICAgICAgICBuZXZlciBkb3duc2l6ZSBpdC4gKi8KLSAgICAgICAgICAgIGlmICgodW5pY29kZS0+bGVuZ3RoIDwgbGVuZ3RoKSAmJgotICAgICAgICAgICAgICAgIHVuaWNvZGVfcmVzaXplKHVuaWNvZGUsIGxlbmd0aCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3RfREVMKHVuaWNvZGUtPnN0cik7Ci0gICAgICAgICAgICAgICAgdW5pY29kZS0+c3RyID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNpemVfdCBuZXdfc2l6ZSA9IHNpemVvZihQeV9VTklDT0RFKSAqICgoc2l6ZV90KWxlbmd0aCArIDEpOwotICAgICAgICAgICAgdW5pY29kZS0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0MobmV3X3NpemUpOwotICAgICAgICB9Ci0gICAgICAgIFB5T2JqZWN0X0lOSVQodW5pY29kZSwgJlB5VW5pY29kZV9UeXBlKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHNpemVfdCBuZXdfc2l6ZTsKLSAgICAgICAgdW5pY29kZSA9IFB5T2JqZWN0X05ldyhQeVVuaWNvZGVPYmplY3QsICZQeVVuaWNvZGVfVHlwZSk7Ci0gICAgICAgIGlmICh1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbmV3X3NpemUgPSBzaXplb2YoUHlfVU5JQ09ERSkgKiAoKHNpemVfdClsZW5ndGggKyAxKTsKLSAgICAgICAgdW5pY29kZS0+c3RyID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0MobmV3X3NpemUpOworICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGl2ZSBzaXplIHBhc3NlZCB0byBfUHlVbmljb2RlX05ldyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBpZiAoIXVuaWNvZGUtPnN0cikgeworICAgIHVuaWNvZGUgPSBQeU9iamVjdF9OZXcoUHlVbmljb2RlT2JqZWN0LCAmUHlVbmljb2RlX1R5cGUpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG5ld19zaXplID0gc2l6ZW9mKFB5X1VOSUNPREUpICogKChzaXplX3QpbGVuZ3RoICsgMSk7CisgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKFB5X1VOSUNPREUqKSBQeU9iamVjdF9NQUxMT0MobmV3X3NpemUpOworICAgIGlmICghX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBlbGVtZW50IHRvIGd1YXJkIGFnYWluc3QgY2FzZXMgd2hlcmUKICAgICAgKiB0aGUgY2FsbGVyIGZhaWxzIGJlZm9yZSBpbml0aWFsaXppbmcgc3RyIC0tIHVuaWNvZGVfcmVzaXplKCkKICAgICAgKiByZWFkcyBzdHJbMF0sIGFuZCB0aGUgS2VlcC1BbGl2ZSBvcHRpbWl6YXRpb24gY2FuIGtlZXAgbWVtb3J5CkBAIC0zNjcsMjQgKzg0Myw2NTggQEAKICAgICAgKiBXZSBkb24ndCB3YW50IHVuaWNvZGVfcmVzaXplIHRvIHJlYWQgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4KICAgICAgKiB0aGF0IGNhc2UuCiAgICAgICovCi0gICAgdW5pY29kZS0+c3RyWzBdID0gMDsKLSAgICB1bmljb2RlLT5zdHJbbGVuZ3RoXSA9IDA7Ci0gICAgdW5pY29kZS0+bGVuZ3RoID0gbGVuZ3RoOwotICAgIHVuaWNvZGUtPmhhc2ggPSAtMTsKLSAgICB1bmljb2RlLT5zdGF0ZSA9IDA7Ci0gICAgdW5pY29kZS0+ZGVmZW5jID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSlbMF0gPSAwOworICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKVtsZW5ndGhdID0gMDsKKyAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gbGVuZ3RoOworICAgIF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSA9IC0xOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5jb21wYWN0ID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gMDsKKyAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KChQeU9iamVjdCAqKXVuaWNvZGUsIDApKTsKICAgICByZXR1cm4gdW5pY29kZTsKLQotICBvbkVycm9yOgotICAgIC8qIFhYWCBVTlJFRi9ORVdSRUYgaW50ZXJmYWNlIHNob3VsZCBiZSBtb3JlIHN5bW1ldHJpY2FsICovCi0gICAgX1B5X0RFQ19SRUZUT1RBTDsKLSAgICBfUHlfRm9yZ2V0UmVmZXJlbmNlKChQeU9iamVjdCAqKXVuaWNvZGUpOwotICAgIFB5T2JqZWN0X0RlbCh1bmljb2RlKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljCi12b2lkIHVuaWNvZGVfZGVhbGxvYyhyZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUpCitzdGF0aWMgY29uc3QgY2hhcioKK3VuaWNvZGVfa2luZF9uYW1lKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIC8qIGRvbid0IGNoZWNrIGNvbnNpc3RlbmN5OiB1bmljb2RlX2tpbmRfbmFtZSgpIGlzIGNhbGxlZCBmcm9tCisgICAgICAgX1B5VW5pY29kZV9EdW1wKCkgKi8KKyAgICBpZiAoIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpKQorICAgIHsKKyAgICAgICAgaWYgKCFQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpCisgICAgICAgICAgICByZXR1cm4gIndzdHIiOworICAgICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKQorICAgICAgICB7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiAibGVnYWN5IGFzY2lpIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBsYXRpbjEiOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuICJsZWdhY3kgVUNTMiI7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gImxlZ2FjeSBVQ1M0IjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAiPGxlZ2FjeSBpbnZhbGlkIGtpbmQ+IjsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIHJldHVybiAiYXNjaWkiOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gImxhdGluMSI7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuICJVQ1MyIjsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gIlVDUzQiOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAiPGludmFsaWQgY29tcGFjdCBraW5kPiI7CisgICAgfQorfQorCisjaWZkZWYgUHlfREVCVUcKKy8qIEZ1bmN0aW9ucyB3cmFwcGluZyBtYWNyb3MgZm9yIHVzZSBpbiBkZWJ1Z2dlciAqLworY2hhciAqX1B5VW5pY29kZV91dGY4KHZvaWQgKnVuaWNvZGUpeworICAgIHJldHVybiBQeVVuaWNvZGVfVVRGOCh1bmljb2RlKTsKK30KKwordm9pZCAqX1B5VW5pY29kZV9jb21wYWN0X2RhdGEodm9pZCAqdW5pY29kZSkgeworICAgIHJldHVybiBfUHlVbmljb2RlX0NPTVBBQ1RfREFUQSh1bmljb2RlKTsKK30KK3ZvaWQgKl9QeVVuaWNvZGVfZGF0YSh2b2lkICp1bmljb2RlKXsKKyAgICBwcmludGYoIm9iaiAlcFxuIiwgdW5pY29kZSk7CisgICAgcHJpbnRmKCJjb21wYWN0ICVkXG4iLCBQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSk7CisgICAgcHJpbnRmKCJjb21wYWN0IGFzY2lpICVkXG4iLCBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7CisgICAgcHJpbnRmKCJhc2NpaSBvcCAlcFxuIiwgKCh2b2lkKikoKFB5QVNDSUlPYmplY3QqKSh1bmljb2RlKSArIDEpKSk7CisgICAgcHJpbnRmKCJjb21wYWN0IG9wICVwXG4iLCAoKHZvaWQqKSgoUHlDb21wYWN0VW5pY29kZU9iamVjdCopKHVuaWNvZGUpICsgMSkpKTsKKyAgICBwcmludGYoImNvbXBhY3QgZGF0YSAlcFxuIiwgX1B5VW5pY29kZV9DT01QQUNUX0RBVEEodW5pY29kZSkpOworICAgIHJldHVybiBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKK30KKwordm9pZAorX1B5VW5pY29kZV9EdW1wKFB5T2JqZWN0ICpvcCkKK3sKKyAgICBQeUFTQ0lJT2JqZWN0ICphc2NpaSA9IChQeUFTQ0lJT2JqZWN0ICopb3A7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCAqY29tcGFjdCA9IChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopb3A7CisgICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlID0gKFB5VW5pY29kZU9iamVjdCAqKW9wOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoYXNjaWktPnN0YXRlLmNvbXBhY3QpCisgICAgeworICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQorICAgICAgICAgICAgZGF0YSA9IChhc2NpaSArIDEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkYXRhID0gKGNvbXBhY3QgKyAxKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBkYXRhID0gdW5pY29kZS0+ZGF0YS5hbnk7CisgICAgcHJpbnRmKCIlczogbGVuPSV6dSwgIix1bmljb2RlX2tpbmRfbmFtZShvcCksIGFzY2lpLT5sZW5ndGgpOworCisgICAgaWYgKGFzY2lpLT53c3RyID09IGRhdGEpCisgICAgICAgIHByaW50Zigic2hhcmVkICIpOworICAgIHByaW50Zigid3N0cj0lcCIsIGFzY2lpLT53c3RyKTsKKworICAgIGlmICghKGFzY2lpLT5zdGF0ZS5hc2NpaSA9PSAxICYmIGFzY2lpLT5zdGF0ZS5jb21wYWN0ID09IDEpKSB7CisgICAgICAgIHByaW50ZigiICglenUpLCAiLCBjb21wYWN0LT53c3RyX2xlbmd0aCk7CisgICAgICAgIGlmICghYXNjaWktPnN0YXRlLmNvbXBhY3QgJiYgY29tcGFjdC0+dXRmOCA9PSB1bmljb2RlLT5kYXRhLmFueSkKKyAgICAgICAgICAgIHByaW50Zigic2hhcmVkICIpOworICAgICAgICBwcmludGYoInV0Zjg9JXAgKCV6dSkiLCBjb21wYWN0LT51dGY4LCBjb21wYWN0LT51dGY4X2xlbmd0aCk7CisgICAgfQorICAgIHByaW50ZigiLCBkYXRhPSVwXG4iLCBkYXRhKTsKK30KKyNlbmRpZgorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfTmV3KFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBtYXhjaGFyKQoreworICAgIFB5T2JqZWN0ICpvYmo7CisgICAgUHlDb21wYWN0VW5pY29kZU9iamVjdCAqdW5pY29kZTsKKyAgICB2b2lkICpkYXRhOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICBpbnQgaXNfc2hhcmluZywgaXNfYXNjaWk7CisgICAgUHlfc3NpemVfdCBjaGFyX3NpemU7CisgICAgUHlfc3NpemVfdCBzdHJ1Y3Rfc2l6ZTsKKworICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLworICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorCisgICAgaXNfYXNjaWkgPSAwOworICAgIGlzX3NoYXJpbmcgPSAwOworICAgIHN0cnVjdF9zaXplID0gc2l6ZW9mKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QpOworICAgIGlmIChtYXhjaGFyIDwgMTI4KSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgY2hhcl9zaXplID0gMTsKKyAgICAgICAgaXNfYXNjaWkgPSAxOworICAgICAgICBzdHJ1Y3Rfc2l6ZSA9IHNpemVvZihQeUFTQ0lJT2JqZWN0KTsKKyAgICB9CisgICAgZWxzZSBpZiAobWF4Y2hhciA8IDI1NikgeworICAgICAgICBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKG1heGNoYXIgPCA2NTUzNikgeworICAgICAgICBraW5kID0gUHlVbmljb2RlXzJCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDI7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gMikKKyAgICAgICAgICAgIGlzX3NoYXJpbmcgPSAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKG1heGNoYXIgPiBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG1heGltdW0gY2hhcmFjdGVyIHBhc3NlZCB0byBQeVVuaWNvZGVfTmV3Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBraW5kID0gUHlVbmljb2RlXzRCWVRFX0tJTkQ7CisgICAgICAgIGNoYXJfc2l6ZSA9IDQ7CisgICAgICAgIGlmIChzaXplb2Yod2NoYXJfdCkgPT0gNCkKKyAgICAgICAgICAgIGlzX3NoYXJpbmcgPSAxOworICAgIH0KKworICAgIC8qIEVuc3VyZSB3ZSB3b24ndCBvdmVyZmxvdyB0aGUgc2l6ZS4gKi8KKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIHNpemUgcGFzc2VkIHRvIFB5VW5pY29kZV9OZXciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChzaXplID4gKChQWV9TU0laRV9UX01BWCAtIHN0cnVjdF9zaXplKSAvIGNoYXJfc2l6ZSAtIDEpKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgIC8qIER1cGxpY2F0ZWQgYWxsb2NhdGlvbiBjb2RlIGZyb20gX1B5T2JqZWN0X05ldygpIGluc3RlYWQgb2YgYSBjYWxsIHRvCisgICAgICogUHlPYmplY3RfTmV3KCkgc28gd2UgYXJlIGFibGUgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBvYmplY3QgYW5kCisgICAgICogaXQncyBkYXRhIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBvYmogPSAoUHlPYmplY3QgKikgUHlPYmplY3RfTUFMTE9DKHN0cnVjdF9zaXplICsgKHNpemUgKyAxKSAqIGNoYXJfc2l6ZSk7CisgICAgaWYgKG9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICBvYmogPSBQeU9iamVjdF9JTklUKG9iaiwgJlB5VW5pY29kZV9UeXBlKTsKKyAgICBpZiAob2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdW5pY29kZSA9IChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopb2JqOworICAgIGlmIChpc19hc2NpaSkKKyAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopb2JqKSArIDE7CisgICAgZWxzZQorICAgICAgICBkYXRhID0gdW5pY29kZSArIDE7CisgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBzaXplOworICAgIF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSA9IC0xOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuaW50ZXJuZWQgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkua2luZCA9IGtpbmQ7CisgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5jb21wYWN0ID0gMTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gaXNfYXNjaWk7CisgICAgaWYgKGlzX2FzY2lpKSB7CisgICAgICAgICgoY2hhciopZGF0YSlbc2l6ZV0gPSAwOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICgoY2hhciopZGF0YSlbc2l6ZV0gPSAwOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyAgICAgICAgdW5pY29kZS0+dXRmOCA9IE5VTEw7CisgICAgICAgIHVuaWNvZGUtPnV0ZjhfbGVuZ3RoID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHVuaWNvZGUtPnV0ZjggPSBOVUxMOworICAgICAgICB1bmljb2RlLT51dGY4X2xlbmd0aCA9IDA7CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKQorICAgICAgICAgICAgKChQeV9VQ1MyKilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIGVsc2UgLyoga2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCAqLworICAgICAgICAgICAgKChQeV9VQ1M0KilkYXRhKVtzaXplXSA9IDA7CisgICAgICAgIGlmIChpc19zaGFyaW5nKSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gc2l6ZTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9ICh3Y2hhcl90ICopZGF0YTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyNpZmRlZiBQeV9ERUJVRworICAgIC8qIEZpbGwgdGhlIGRhdGEgd2l0aCBpbnZhbGlkIGNoYXJhY3RlcnMgdG8gZGV0ZWN0IGJ1Z3MgZWFybGllci4KKyAgICAgICBfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSBkZXRlY3RzIGludmFsaWQgY2hhcmFjdGVycywKKyAgICAgICBhdCBsZWFzdCBmb3IgQVNDSUkgYW5kIFVDUy00IHN0cmluZ3MuIFUrMDBGRiBpcyBpbnZhbGlkIGluIEFTQ0lJCisgICAgICAgYW5kIFUrRkZGRkZGRkYgaXMgYW4gaW52YWxpZCBjaGFyYWN0ZXIgaW4gVW5pY29kZSA2LjAuICovCisgICAgbWVtc2V0KGRhdGEsIDB4ZmYsIHNpemUgKiBraW5kKTsKKyNlbmRpZgorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koKFB5T2JqZWN0Kil1bmljb2RlLCAwKSk7CisgICAgcmV0dXJuIG9iajsKK30KKworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKy8qIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGEgMTYtYml0cyB3Y2hhcl90IHJlcHJlc2VudGF0aW9uIHRvIFVDUzQsIHRoaXMKKyAgIHdpbGwgZGVjb2RlIHN1cnJvZ2F0ZSBwYWlycywgdGhlIG90aGVyIGNvbnZlcnNpb25zIGFyZSBpbXBsZW1lbnRlZCBhcyBtYWNyb3MKKyAgIGZvciBlZmZpY2llbmN5LgorCisgICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB1bmljb2RlIGNhbiBob2xkIG9uZSBtb3JlIGNvZGUgcG9pbnQgdGhhbiB3c3RyCisgICBjaGFyYWN0ZXJzIGZvciBhIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyLiAqLworc3RhdGljIHZvaWQKK3VuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KGNvbnN0IHdjaGFyX3QgKmJlZ2luLCBjb25zdCB3Y2hhcl90ICplbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBjb25zdCB3Y2hhcl90ICppdGVyOworICAgIFB5X1VDUzQgKnVjczRfb3V0OworCisgICAgYXNzZXJ0KHVuaWNvZGUgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0tJTkQodW5pY29kZSkgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgIHVjczRfb3V0ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisKKyAgICBmb3IgKGl0ZXIgPSBiZWdpbjsgaXRlciA8IGVuZDsgKSB7CisgICAgICAgIGFzc2VydCh1Y3M0X291dCA8IChQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpKTsKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoaXRlclswXSkKKyAgICAgICAgICAgICYmIChpdGVyKzEpIDwgZW5kCisgICAgICAgICAgICAmJiBQeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoaXRlclsxXSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICp1Y3M0X291dCsrID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaXRlclswXSwgaXRlclsxXSk7CisgICAgICAgICAgICBpdGVyICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAqdWNzNF9vdXQrKyA9ICppdGVyOworICAgICAgICAgICAgaXRlcisrOworICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCh1Y3M0X291dCA9PSAoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSkgKworICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSk7CisKK30KKyNlbmRpZgorCitzdGF0aWMgaW50Cit1bmljb2RlX2NoZWNrX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgaWYgKCF1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBtb2RpZnkgYSBzdHJpbmcgY3VycmVudGx5IHVzZWQiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2NvcHlfY2hhcmFjdGVycyhQeU9iamVjdCAqdG8sIFB5X3NzaXplX3QgdG9fc3RhcnQsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaG93X21hbnksIGludCBjaGVja19tYXhjaGFyKQoreworICAgIHVuc2lnbmVkIGludCBmcm9tX2tpbmQsIHRvX2tpbmQ7CisgICAgdm9pZCAqZnJvbV9kYXRhLCAqdG9fZGF0YTsKKworICAgIGFzc2VydCgwIDw9IGhvd19tYW55KTsKKyAgICBhc3NlcnQoMCA8PSBmcm9tX3N0YXJ0KTsKKyAgICBhc3NlcnQoMCA8PSB0b19zdGFydCk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhmcm9tKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShmcm9tKSk7CisgICAgYXNzZXJ0KGZyb21fc3RhcnQgKyBob3dfbWFueSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9tKSk7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHRvKSk7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh0bykpOworICAgIGFzc2VydCh0b19zdGFydCArIGhvd19tYW55IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRvKSk7CisKKyAgICBpZiAoaG93X21hbnkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmcm9tX2tpbmQgPSBQeVVuaWNvZGVfS0lORChmcm9tKTsKKyAgICBmcm9tX2RhdGEgPSBQeVVuaWNvZGVfREFUQShmcm9tKTsKKyAgICB0b19raW5kID0gUHlVbmljb2RlX0tJTkQodG8pOworICAgIHRvX2RhdGEgPSBQeVVuaWNvZGVfREFUQSh0byk7CisKKyNpZmRlZiBQeV9ERUJVRworICAgIGlmICghY2hlY2tfbWF4Y2hhcgorICAgICAgICAmJiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoZnJvbSkgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pKQorICAgIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCB0b19tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHRvKTsKKyAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGhvd19tYW55OyBpKyspIHsKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoZnJvbV9raW5kLCBmcm9tX2RhdGEsIGZyb21fc3RhcnQgKyBpKTsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSB0b19tYXhjaGFyKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgaWYgKGZyb21fa2luZCA9PSB0b19raW5kKSB7CisgICAgICAgIGlmIChjaGVja19tYXhjaGFyCisgICAgICAgICAgICAmJiAhUHlVbmljb2RlX0lTX0FTQ0lJKGZyb20pICYmIFB5VW5pY29kZV9JU19BU0NJSSh0bykpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIFdyaXRpbmcgTGF0aW4tMSBjaGFyYWN0ZXJzIGludG8gYW4gQVNDSUkgc3RyaW5nIHJlcXVpcmVzIHRvCisgICAgICAgICAgICAgICBjaGVjayB0aGF0IGFsbCB3cml0dGVuIGNoYXJhY3RlcnMgYXJlIHB1cmUgQVNDSUkgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgbWF4X2NoYXI7CisgICAgICAgICAgICBtYXhfY2hhciA9IHVjczFsaWJfZmluZF9tYXhfY2hhcihmcm9tX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVUNTMSopZnJvbV9kYXRhICsgaG93X21hbnkpOworICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfTUVNQ1BZKChjaGFyKil0b19kYXRhICsgdG9fa2luZCAqIHRvX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgKGNoYXIqKWZyb21fZGF0YSArIGZyb21fa2luZCAqIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICB0b19raW5kICogaG93X21hbnkpOworICAgIH0KKyAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQKKyAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKQorICAgIHsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTMiwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICk7CisgICAgfQorICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORAorICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpCisgICAgeworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICBQeV9VQ1MxLCBQeV9VQ1M0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZnJvbV9raW5kID09IFB5VW5pY29kZV8yQllURV9LSU5ECisgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkKKyAgICB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0IChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoZnJvbSkgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodG8pKTsKKworICAgICAgICBpZiAoIWNoZWNrX21heGNoYXIpIHsKKyAgICAgICAgICAgIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAmJiB0b19raW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTMiwgUHlfVUNTMSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzJCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQgKyBob3dfbWFueSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodG8pICsgdG9fc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGZyb21fa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORAorICAgICAgICAgICAgICAgICAgICAgJiYgdG9fa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoCisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQsIFB5X1VDUzEsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEoZnJvbSkgKyBmcm9tX3N0YXJ0ICsgaG93X21hbnksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHRvKSArIHRvX3N0YXJ0CisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmcm9tX2tpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQKKyAgICAgICAgICAgICAgICAgICAgICYmIHRvX2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0LCBQeV9VQ1MyLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQShmcm9tKSArIGZyb21fc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV80QllURV9EQVRBKGZyb20pICsgZnJvbV9zdGFydCArIGhvd19tYW55LAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh0bykgKyB0b19zdGFydAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KDApOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNvbnN0IFB5X1VDUzQgdG9fbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0byk7CisgICAgICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBmb3IgKGk9MDsgaSA8IGhvd19tYW55OyBpKyspIHsKKyAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGZyb21fa2luZCwgZnJvbV9kYXRhLCBmcm9tX3N0YXJ0ICsgaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gdG9fbWF4Y2hhcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh0b19raW5kLCB0b19kYXRhLCB0b19zdGFydCArIGksIGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoCisgICAgUHlPYmplY3QgKnRvLCBQeV9zc2l6ZV90IHRvX3N0YXJ0LAorICAgIFB5T2JqZWN0ICpmcm9tLCBQeV9zc2l6ZV90IGZyb21fc3RhcnQsIFB5X3NzaXplX3QgaG93X21hbnkpCit7CisgICAgKHZvaWQpX2NvcHlfY2hhcmFjdGVycyh0bywgdG9fc3RhcnQsIGZyb20sIGZyb21fc3RhcnQsIGhvd19tYW55LCAwKTsKK30KKworUHlfc3NpemVfdAorUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKFB5T2JqZWN0ICp0bywgUHlfc3NpemVfdCB0b19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbSwgUHlfc3NpemVfdCBmcm9tX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaG93X21hbnkpCit7CisgICAgaW50IGVycjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGZyb20pIHx8ICFQeVVuaWNvZGVfQ2hlY2sodG8pKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShmcm9tKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodG8pID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZnJvbV9zdGFydCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHRvX3N0YXJ0IDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBob3dfbWFueSA9IFB5X01JTihQeVVuaWNvZGVfR0VUX0xFTkdUSChmcm9tKSwgaG93X21hbnkpOworICAgIGlmICh0b19zdGFydCArIGhvd19tYW55ID4gUHlVbmljb2RlX0dFVF9MRU5HVEgodG8pKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgd3JpdGUgJXppIGNoYXJhY3RlcnMgYXQgJXppICIKKyAgICAgICAgICAgICAgICAgICAgICJpbiBhIHN0cmluZyBvZiAlemkgY2hhcmFjdGVycyIsCisgICAgICAgICAgICAgICAgICAgICBob3dfbWFueSwgdG9fc3RhcnQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHRvKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoaG93X21hbnkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHRvKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgZXJyID0gX2NvcHlfY2hhcmFjdGVycyh0bywgdG9fc3RhcnQsIGZyb20sIGZyb21fc3RhcnQsIGhvd19tYW55LCAxKTsKKyAgICBpZiAoZXJyKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY29weSAlcyBjaGFyYWN0ZXJzICIKKyAgICAgICAgICAgICAgICAgICAgICJpbnRvIGEgc3RyaW5nIG9mICVzIGNoYXJhY3RlcnMiLAorICAgICAgICAgICAgICAgICAgICAgdW5pY29kZV9raW5kX25hbWUoZnJvbSksCisgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX2tpbmRfbmFtZSh0bykpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBob3dfbWFueTsKK30KKworLyogRmluZCB0aGUgbWF4aW11bSBjb2RlIHBvaW50IGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mIHN1cnJvZ2F0ZSBwYWlycyBzbyBhCisgICBjb3JyZWN0IHN0cmluZyBsZW5ndGggY2FuIGJlIGNvbXB1dGVkIGJlZm9yZSBjb252ZXJ0aW5nIGEgc3RyaW5nIHRvIFVDUzQuCisgICBUaGlzIGZ1bmN0aW9uIGNvdW50cyBzaW5nbGUgc3Vycm9nYXRlcyBhcyBhIGNoYXJhY3RlciBhbmQgbm90IGFzIGEgcGFpci4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcywgb3IgLTEgb24gZXJyb3IuICovCitzdGF0aWMgaW50CitmaW5kX21heGNoYXJfc3Vycm9nYXRlcyhjb25zdCB3Y2hhcl90ICpiZWdpbiwgY29uc3Qgd2NoYXJfdCAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCAqbWF4Y2hhciwgUHlfc3NpemVfdCAqbnVtX3N1cnJvZ2F0ZXMpCit7CisgICAgY29uc3Qgd2NoYXJfdCAqaXRlcjsKKyAgICBQeV9VQ1M0IGNoOworCisgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzICE9IE5VTEwgJiYgbWF4Y2hhciAhPSBOVUxMKTsKKyAgICAqbnVtX3N1cnJvZ2F0ZXMgPSAwOworICAgICptYXhjaGFyID0gMDsKKworICAgIGZvciAoaXRlciA9IGJlZ2luOyBpdGVyIDwgZW5kOyApIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTX0hJR0hfU1VSUk9HQVRFKGl0ZXJbMF0pCisgICAgICAgICAgICAmJiAoaXRlcisxKSA8IGVuZAorICAgICAgICAgICAgJiYgUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKGl0ZXJbMV0pKQorICAgICAgICB7CisgICAgICAgICAgICBjaCA9IFB5X1VOSUNPREVfSk9JTl9TVVJST0dBVEVTKGl0ZXJbMF0sIGl0ZXJbMV0pOworICAgICAgICAgICAgKysoKm51bV9zdXJyb2dhdGVzKTsKKyAgICAgICAgICAgIGl0ZXIgKz0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgeworICAgICAgICAgICAgY2ggPSAqaXRlcjsKKyAgICAgICAgICAgIGl0ZXIrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2ggPiAqbWF4Y2hhcikgeworICAgICAgICAgICAgKm1heGNoYXIgPSBjaDsKKyAgICAgICAgICAgIGlmICgqbWF4Y2hhciA+IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgVSsleCBpcyBub3QgaW4gcmFuZ2UgW1UrMDAwMDsgVSsxMGZmZmZdIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2gpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50CitfUHlVbmljb2RlX1JlYWR5KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHdjaGFyX3QgKmVuZDsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIFB5X3NzaXplX3QgbGVuZ3RoX3dvX3N1cnJvZ2F0ZXM7CisjZW5kaWYKKworICAgIC8qIF9QeVVuaWNvZGVfUmVhZHkoKSBpcyBvbmx5IGludGVuZGVkIGZvciBvbGQtc3R5bGUgQVBJIHVzYWdlIHdoZXJlCisgICAgICAgc3RyaW5ncyB3ZXJlIGNyZWF0ZWQgdXNpbmcgX1B5T2JqZWN0X05ldygpIGFuZCB3aGVyZSBubyBjYW5vbmljYWwKKyAgICAgICByZXByZXNlbnRhdGlvbiAodGhlIHN0ciBmaWVsZCkgaGFzIGJlZW4gc2V0IHlldCBha2Egc3RyaW5ncworICAgICAgIHdoaWNoIGFyZSBub3QgeWV0IHJlYWR5LiAqLworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpICE9IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID09IE5VTEwpOworICAgIGFzc2VydChfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCk7CisgICAgLyogQWN0dWFsbHksIGl0IHNob3VsZCBuZWl0aGVyIGJlIGludGVybmVkIG5vciBiZSBhbnl0aGluZyBlbHNlOiAqLworICAgIGFzc2VydChfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmludGVybmVkID09IFNTVEFURV9OT1RfSU5URVJORUQpOworCisgICAgZW5kID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpICsgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAoZmluZF9tYXhjaGFyX3N1cnJvZ2F0ZXMoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyLCAmbnVtX3N1cnJvZ2F0ZXMpID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAobWF4Y2hhciA8IDI1NikgeworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgKyAxKTsKKyAgICAgICAgaWYgKCFfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyh3Y2hhcl90LCB1bnNpZ25lZCBjaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSksIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSkpOworICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKVtfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpXSA9ICdcMCc7CisgICAgICAgIF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5raW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CisgICAgICAgIGlmIChtYXhjaGFyIDwgMTI4KSB7CisgICAgICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpID0gMTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSk7CisgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUodW5pY29kZSkuYXNjaWkgPSAwOworICAgICAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICB9CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgfQorICAgIC8qIEluIHRoaXMgY2FzZSB3ZSBtaWdodCBoYXZlIHRvIGNvbnZlcnQgZG93biBmcm9tIDQtYnl0ZSBuYXRpdmUKKyAgICAgICB3Y2hhcl90IHRvIDItYnl0ZSB1bmljb2RlLiAqLworICAgIGVsc2UgaWYgKG1heGNoYXIgPCA2NTUzNikgeworICAgICAgICBhc3NlcnQobnVtX3N1cnJvZ2F0ZXMgPT0gMCAmJgorICAgICAgICAgICAgICAgIkZpbmRNYXhDaGFyQW5kTnVtU3Vycm9nYXRlUGFpcnMoKSBtZXNzZWQgdXAiKTsKKworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogV2UgY2FuIHNoYXJlIHJlcHJlc2VudGF0aW9ucyBhbmQgYXJlIGRvbmUuICovCisgICAgICAgIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFIodW5pY29kZSk7CisgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisjZWxzZQorICAgICAgICAvKiBzaXplb2Yod2NoYXJfdCkgPT0gNCAqLworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKAorICAgICAgICAgICAgMiAqIChfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpICsgMSkpOworICAgICAgICBpZiAoIV9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKHdjaGFyX3QsIFB5X1VDUzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpW19QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSldID0gJ1wwJzsKKyAgICAgICAgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfMkJZVEVfS0lORDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKTsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IDA7CisjZW5kaWYKKyAgICB9CisgICAgLyogbWF4Y2hhciBleGVlZHMgMTYgYml0LCB3ZWUgbmVlZCA0IGJ5dGVzIGZvciB1bmljb2RlIGNoYXJhY3RlcnMgKi8KKyAgICBlbHNlIHsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSAyCisgICAgICAgIC8qIGluIGNhc2UgdGhlIG5hdGl2ZSByZXByZXNlbnRhdGlvbiBpcyAyLWJ5dGVzLCB3ZSBuZWVkIHRvIGFsbG9jYXRlIGEKKyAgICAgICAgICAgbmV3IG5vcm1hbGl6ZWQgNC1ieXRlIHZlcnNpb24uICovCisgICAgICAgIGxlbmd0aF93b19zdXJyb2dhdGVzID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSAtIG51bV9zdXJyb2dhdGVzOworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKDQgKiAobGVuZ3RoX3dvX3N1cnJvZ2F0ZXMgKyAxKSk7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9EQVRBX0FOWSh1bmljb2RlKSkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IGxlbmd0aF93b19zdXJyb2dhdGVzOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKSA9IDA7CisgICAgICAgIC8qIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KCkgcmVxdWlyZXMgYSByZWFkeSBzdHJpbmcgKi8KKyAgICAgICAgX1B5VW5pY29kZV9TVEFURSh1bmljb2RlKS5yZWFkeSA9IDE7CisgICAgICAgIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwgZW5kLCB1bmljb2RlKTsKKyAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICBfUHlVbmljb2RlX1dTVFIodW5pY29kZSkgPSBOVUxMOworICAgICAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpID0gMDsKKyNlbHNlCisgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwKTsKKworICAgICAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9IE5VTEw7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSAwOworICAgICAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmtpbmQgPSBQeVVuaWNvZGVfNEJZVEVfS0lORDsKKyNlbmRpZgorICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKVtfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKV0gPSAnXDAnOworICAgIH0KKyAgICBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLnJlYWR5ID0gMTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGUsIDEpKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3VuaWNvZGVfZGVhbGxvYyhyZWdpc3RlciBQeU9iamVjdCAqdW5pY29kZSkKIHsKICAgICBzd2l0Y2ggKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh1bmljb2RlKSkgewogICAgIGNhc2UgU1NUQVRFX05PVF9JTlRFUk5FRDoKQEAgLTM5Myw3ICsxNTAzLDcgQEAKICAgICBjYXNlIFNTVEFURV9JTlRFUk5FRF9NT1JUQUw6CiAgICAgICAgIC8qIHJldml2ZSBkZWFkIG9iamVjdCB0ZW1wb3JhcmlseSBmb3IgRGVsSXRlbSAqLwogICAgICAgICBQeV9SRUZDTlQodW5pY29kZSkgPSAzOwotICAgICAgICBpZiAoUHlEaWN0X0RlbEl0ZW0oaW50ZXJuZWQsIChQeU9iamVjdCAqKXVuaWNvZGUpICE9IDApCisgICAgICAgIGlmIChQeURpY3RfRGVsSXRlbShpbnRlcm5lZCwgdW5pY29kZSkgIT0gMCkKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAgICAgImRlbGV0aW9uIG9mIGludGVybmVkIHN0cmluZyBmYWlsZWQiKTsKICAgICAgICAgYnJlYWs7CkBAIC00MDUsMjQwICsxNTE1LDc0MSBAQAogICAgICAgICBQeV9GYXRhbEVycm9yKCJJbmNvbnNpc3RlbnQgaW50ZXJuZWQgc3RyaW5nIHN0YXRlLiIpOwogICAgIH0KIAotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSAmJgotICAgICAgICBudW1mcmVlIDwgUHlVbmljb2RlX01BWEZSRUVMSVNUKSB7Ci0gICAgICAgIC8qIEtlZXAtQWxpdmUgb3B0aW1pemF0aW9uICovCi0gICAgICAgIGlmICh1bmljb2RlLT5sZW5ndGggPj0gS0VFUEFMSVZFX1NJWkVfTElNSVQpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RFTCh1bmljb2RlLT5zdHIpOwotICAgICAgICAgICAgdW5pY29kZS0+c3RyID0gTlVMTDsKLSAgICAgICAgICAgIHVuaWNvZGUtPmxlbmd0aCA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHVuaWNvZGUtPmRlZmVuYykgewotICAgICAgICAgICAgUHlfQ0xFQVIodW5pY29kZS0+ZGVmZW5jKTsKLSAgICAgICAgfQotICAgICAgICAvKiBBZGQgdG8gZnJlZSBsaXN0ICovCi0gICAgICAgICooUHlVbmljb2RlT2JqZWN0ICoqKXVuaWNvZGUgPSBmcmVlX2xpc3Q7Ci0gICAgICAgIGZyZWVfbGlzdCA9IHVuaWNvZGU7Ci0gICAgICAgIG51bWZyZWUrKzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0X0RFTCh1bmljb2RlLT5zdHIpOwotICAgICAgICBQeV9YREVDUkVGKHVuaWNvZGUtPmRlZmVuYyk7Ci0gICAgICAgIFB5X1RZUEUodW5pY29kZSktPnRwX2ZyZWUoKFB5T2JqZWN0ICopdW5pY29kZSk7Ci0gICAgfQorICAgIGlmIChfUHlVbmljb2RlX0hBU19XU1RSX01FTU9SWSh1bmljb2RlKSkKKyAgICAgICAgUHlPYmplY3RfREVMKF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSk7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTX1VURjhfTUVNT1JZKHVuaWNvZGUpKQorICAgICAgICBQeU9iamVjdF9ERUwoX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpKTsKKyAgICBpZiAoIVB5VW5pY29kZV9JU19DT01QQUNUKHVuaWNvZGUpICYmIF9QeVVuaWNvZGVfREFUQV9BTlkodW5pY29kZSkpCisgICAgICAgIFB5T2JqZWN0X0RFTChfUHlVbmljb2RlX0RBVEFfQU5ZKHVuaWNvZGUpKTsKKworICAgIFB5X1RZUEUodW5pY29kZSktPnRwX2ZyZWUodW5pY29kZSk7CiB9CiAKLXN0YXRpYwotaW50IF9QeVVuaWNvZGVfUmVzaXplKFB5VW5pY29kZU9iamVjdCAqKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQorI2lmZGVmIFB5X0RFQlVHCitzdGF0aWMgaW50Cit1bmljb2RlX2lzX3NpbmdsZXRvbihQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnY7Ci0KLSAgICAvKiBBcmd1bWVudCBjaGVja3MgKi8KLSAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7CisgICAgUHlBU0NJSU9iamVjdCAqYXNjaWkgPSAoUHlBU0NJSU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKHVuaWNvZGUgPT0gdW5pY29kZV9lbXB0eSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKGFzY2lpLT5zdGF0ZS5raW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EICYmIGFzY2lpLT5sZW5ndGggPT0gMSkKKyAgICB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIDApOworICAgICAgICBpZiAoY2ggPCAyNTYgJiYgdW5pY29kZV9sYXRpbjFbY2hdID09IHVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgdiA9ICp1bmljb2RlOwotICAgIGlmICh2ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2KSB8fCBQeV9SRUZDTlQodikgIT0gMSB8fCBsZW5ndGggPCAwKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIHJldHVybiAwOworfQorI2VuZGlmCiAKLSAgICAvKiBSZXNpemluZyB1bmljb2RlX2VtcHR5IGFuZCBzaW5nbGUgY2hhcmFjdGVyIG9iamVjdHMgaXMgbm90Ci0gICAgICAgcG9zc2libGUgc2luY2UgdGhlc2UgYXJlIGJlaW5nIHNoYXJlZC4gV2Ugc2ltcGx5IHJldHVybiBhIGZyZXNoCi0gICAgICAgY29weSB3aXRoIHRoZSBzYW1lIFVuaWNvZGUgY29udGVudC4gKi8KLSAgICBpZiAodi0+bGVuZ3RoICE9IGxlbmd0aCAmJgotICAgICAgICAodiA9PSB1bmljb2RlX2VtcHR5IHx8IHYtPmxlbmd0aCA9PSAxKSkgewotICAgICAgICBQeVVuaWNvZGVPYmplY3QgKncgPSBfUHlVbmljb2RlX05ldyhsZW5ndGgpOwotICAgICAgICBpZiAodyA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBQeV9VTklDT0RFX0NPUFkody0+c3RyLCB2LT5zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGggPCB2LT5sZW5ndGggPyBsZW5ndGggOiB2LT5sZW5ndGgpOwotICAgICAgICBQeV9ERUNSRUYoKnVuaWNvZGUpOwotICAgICAgICAqdW5pY29kZSA9IHc7CitzdGF0aWMgaW50Cit1bmljb2RlX21vZGlmaWFibGUoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0sodW5pY29kZSkpOworICAgIGlmIChQeV9SRUZDTlQodW5pY29kZSkgIT0gMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKF9QeVVuaWNvZGVfSEFTSCh1bmljb2RlKSAhPSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdCh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisjaWZkZWYgUHlfREVCVUcKKyAgICAvKiBzaW5nbGV0b24gcmVmY291bnQgaXMgZ3JlYXRlciB0aGFuIDEgKi8KKyAgICBhc3NlcnQoIXVuaWNvZGVfaXNfc2luZ2xldG9uKHVuaWNvZGUpKTsKKyNlbmRpZgorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit1bmljb2RlX3Jlc2l6ZShQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfc3NpemVfdCBvbGRfbGVuZ3RoOworCisgICAgYXNzZXJ0KHBfdW5pY29kZSAhPSBOVUxMKTsKKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKworICAgIGFzc2VydCh1bmljb2RlICE9IE5VTEwpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpOworICAgIGFzc2VydCgwIDw9IGxlbmd0aCk7CisKKyAgICBpZiAoX1B5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICBvbGRfbGVuZ3RoID0gUHlVbmljb2RlX1dTVFJfTEVOR1RIKHVuaWNvZGUpOworICAgIGVsc2UKKyAgICAgICAgb2xkX2xlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChvbGRfbGVuZ3RoID09IGxlbmd0aCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgUHlfREVDUkVGKCpwX3VuaWNvZGUpOworICAgICAgICAqcF91bmljb2RlID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgUHlfSU5DUkVGKCpwX3VuaWNvZGUpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKiBOb3RlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBtb2RpZnkgKnVuaWNvZGUgZm9yIHVuc2hhcmVkIFVuaWNvZGUKLSAgICAgICBvYmplY3RzLCBzaW5jZSB3ZSBjYW4gbW9kaWZ5IHRoZW0gaW4tcGxhY2UuICovCi0gICAgcmV0dXJuIHVuaWNvZGVfcmVzaXplKHYsIGxlbmd0aCk7CisgICAgaWYgKCF1bmljb2RlX21vZGlmaWFibGUodW5pY29kZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKmNvcHkgPSByZXNpemVfY29weSh1bmljb2RlLCBsZW5ndGgpOworICAgICAgICBpZiAoY29weSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgICAgICpwX3VuaWNvZGUgPSBjb3B5OworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0lTX0NPTVBBQ1QodW5pY29kZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKm5ld191bmljb2RlID0gcmVzaXplX2NvbXBhY3QodW5pY29kZSwgbGVuZ3RoKTsKKyAgICAgICAgaWYgKG5ld191bmljb2RlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICpwX3VuaWNvZGUgPSBuZXdfdW5pY29kZTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiByZXNpemVfaW5wbGFjZSh1bmljb2RlLCBsZW5ndGgpOwogfQogCi1pbnQgUHlVbmljb2RlX1Jlc2l6ZShQeU9iamVjdCAqKnVuaWNvZGUsIFB5X3NzaXplX3QgbGVuZ3RoKQoraW50CitQeVVuaWNvZGVfUmVzaXplKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKLSAgICByZXR1cm4gX1B5VW5pY29kZV9SZXNpemUoKFB5VW5pY29kZU9iamVjdCAqKil1bmljb2RlLCBsZW5ndGgpOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGlmIChwX3VuaWNvZGUgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkgfHwgbGVuZ3RoIDwgMCkKKyAgICB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiB1bmljb2RlX3Jlc2l6ZShwX3VuaWNvZGUsIGxlbmd0aCk7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVVuaWNvZGUoY29uc3QgUHlfVU5JQ09ERSAqdSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorc3RhdGljIGludAordW5pY29kZV93aWRlbihQeU9iamVjdCAqKnBfdW5pY29kZSwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXhjaGFyKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkoKnBfdW5pY29kZSkpOworICAgIGFzc2VydChsZW5ndGggPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKnBfdW5pY29kZSkpOworICAgIGlmIChtYXhjaGFyIDw9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSgqcF91bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhQeVVuaWNvZGVfR0VUX0xFTkdUSCgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNoYXIpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMCwgKnBfdW5pY29kZSwgMCwgbGVuZ3RoKTsKKyAgICBQeV9ERUNSRUYoKnBfdW5pY29kZSk7CisgICAgKnBfdW5pY29kZSA9IHJlc3VsdDsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordW5pY29kZV9wdXRjaGFyKFB5T2JqZWN0ICoqcF91bmljb2RlLCBQeV9zc2l6ZV90ICpwb3MsCisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaCkKK3sKKyAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgIGlmICh1bmljb2RlX3dpZGVuKHBfdW5pY29kZSwgKnBvcywgY2gpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCgqcF91bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoKnBfdW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICgqcG9zKSsrLCBjaCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvcHkgYSBBU0NJSSBvciBsYXRpbjEgY2hhciogc3RyaW5nIGludG8gYSBQeXRob24gVW5pY29kZSBzdHJpbmcuCisKKyAgIFdBUk5JTkc6IFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNvcHkgdGhlIHRlcm1pbmF0aW5nIG51bGwgY2hhcmFjdGVyIGFuZAorICAgZG9lc24ndCBjaGVjayB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgKG1heSB3cml0ZSBhIGxhdGluMSBjaGFyYWN0ZXIgaW4gYW4KKyAgIEFTQ0lJIHN0cmluZykuICovCitzdGF0aWMgdm9pZAordW5pY29kZV93cml0ZV9jc3RyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4pCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGNvbnN0IGNoYXIgKmVuZCA9IHN0ciArIGxlbjsKKworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsKKyAgICAgICAgYXNzZXJ0KGluZGV4ICsgbGVuIDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICAgICAgbWVtY3B5KChjaGFyICopIGRhdGEgKyBpbmRleCwgc3RyLCBsZW4pOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICBQeV9VQ1MyICpzdGFydCA9IChQeV9VQ1MyICopZGF0YSArIGluZGV4OworICAgICAgICBQeV9VQ1MyICp1Y3MyID0gc3RhcnQ7CisgICAgICAgIGFzc2VydChpbmRleCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisKKyAgICAgICAgZm9yICg7IHN0ciA8IGVuZDsgKyt1Y3MyLCArK3N0cikKKyAgICAgICAgICAgICp1Y3MyID0gKFB5X1VDUzIpKnN0cjsKKworICAgICAgICBhc3NlcnQoKHVjczIgLSBzdGFydCkgPD0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICBQeV9VQ1M0ICpzdGFydCA9IChQeV9VQ1M0ICopZGF0YSArIGluZGV4OworICAgICAgICBQeV9VQ1M0ICp1Y3M0ID0gc3RhcnQ7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgYXNzZXJ0KGluZGV4IDw9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKworICAgICAgICBmb3IgKDsgc3RyIDwgZW5kOyArK3VjczQsICsrc3RyKQorICAgICAgICAgICAgKnVjczQgPSAoUHlfVUNTNCkqc3RyOworCisgICAgICAgIGFzc2VydCgodWNzNCAtIHN0YXJ0KSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgfQorICAgIH0KK30KKworCitzdGF0aWMgUHlPYmplY3QqCitnZXRfbGF0aW4xX2NoYXIodW5zaWduZWQgY2hhciBjaCkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IHVuaWNvZGVfbGF0aW4xW2NoXTsKKyAgICBpZiAoIXVuaWNvZGUpIHsKKyAgICAgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoMSwgY2gpOworICAgICAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSlbMF0gPSBjaDsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgICAgIHVuaWNvZGVfbGF0aW4xW2NoXSA9IHVuaWNvZGU7CisgICAgfQorICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gdW5pY29kZTsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21Vbmljb2RlKGNvbnN0IFB5X1VOSUNPREUgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0KilfUHlVbmljb2RlX05ldyhzaXplKTsKIAogICAgIC8qIElmIHRoZSBVbmljb2RlIGRhdGEgaXMga25vd24gYXQgY29uc3RydWN0aW9uIHRpbWUsIHdlIGNhbiBhcHBseQogICAgICAgIHNvbWUgb3B0aW1pemF0aW9ucyB3aGljaCBzaGFyZSBjb21tb25seSB1c2VkIG9iamVjdHMuICovCi0gICAgaWYgKHUgIT0gTlVMTCkgewogCi0gICAgICAgIC8qIE9wdGltaXphdGlvbiBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAwICYmIHVuaWNvZGVfZW1wdHkgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOwotICAgICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGVfZW1wdHk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBTaW5nbGUgY2hhcmFjdGVyIFVuaWNvZGUgb2JqZWN0cyBpbiB0aGUgTGF0aW4tMSByYW5nZSBhcmUKLSAgICAgICAgICAgc2hhcmVkIHdoZW4gdXNpbmcgdGhpcyBjb25zdHJ1Y3RvciAqLwotICAgICAgICBpZiAoc2l6ZSA9PSAxICYmICp1IDwgMjU2KSB7Ci0gICAgICAgICAgICB1bmljb2RlID0gdW5pY29kZV9sYXRpbjFbKnVdOwotICAgICAgICAgICAgaWYgKCF1bmljb2RlKSB7Ci0gICAgICAgICAgICAgICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KDEpOwotICAgICAgICAgICAgICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgdW5pY29kZS0+c3RyWzBdID0gKnU7Ci0gICAgICAgICAgICAgICAgdW5pY29kZV9sYXRpbjFbKnVdID0gdW5pY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotICAgICAgICB9CisgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCisgICAgaWYgKHNpemUgPT0gMCAmJiB1bmljb2RlX2VtcHR5ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9CiAKLSAgICB1bmljb2RlID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7CisgICAgLyogU2luZ2xlIGNoYXJhY3RlciBVbmljb2RlIG9iamVjdHMgaW4gdGhlIExhdGluLTEgcmFuZ2UgYXJlCisgICAgICAgc2hhcmVkIHdoZW4gdXNpbmcgdGhpcyBjb25zdHJ1Y3RvciAqLworICAgIGlmIChzaXplID09IDEgJiYgKnUgPCAyNTYpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpKnUpOworCisgICAgLyogSWYgbm90IGVtcHR5IGFuZCBub3Qgc2luZ2xlIGNoYXJhY3RlciwgY29weSB0aGUgVW5pY29kZSBkYXRhCisgICAgICAgaW50byB0aGUgbmV3IG9iamVjdCAqLworICAgIGlmIChmaW5kX21heGNoYXJfc3Vycm9nYXRlcyh1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIsICZudW1fc3Vycm9nYXRlcykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSAtIG51bV9zdXJyb2dhdGVzLCBtYXhjaGFyKTsKICAgICBpZiAoIXVuaWNvZGUpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgLyogQ29weSB0aGUgVW5pY29kZSBkYXRhIGludG8gdGhlIG5ldyBvYmplY3QgKi8KLSAgICBpZiAodSAhPSBOVUxMKQotICAgICAgICBQeV9VTklDT0RFX0NPUFkodW5pY29kZS0+c3RyLCB1LCBzaXplKTsKKyAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VOSUNPREUsIHVuc2lnbmVkIGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIHUgKyBzaXplLCBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisjaWYgUHlfVU5JQ09ERV9TSVpFID09IDIKKyAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CisjZWxzZQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgUHlfVUNTMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgLyogVGhpcyBpcyB0aGUgb25seSBjYXNlIHdoaWNoIGhhcyB0byBwcm9jZXNzIHN1cnJvZ2F0ZXMsIHRodXMKKyAgICAgICAgICAgYSBzaW1wbGUgY29weSBsb29wIGlzIG5vdCBlbm91Z2ggYW5kIHdlIG5lZWQgYSBmdW5jdGlvbi4gKi8KKyAgICAgICAgdW5pY29kZV9jb252ZXJ0X3djaGFyX3RvX3VjczQodSwgdSArIHNpemUsIHVuaWNvZGUpOworI2Vsc2UKKyAgICAgICAgYXNzZXJ0KG51bV9zdXJyb2dhdGVzID09IDApOworICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiA0KTsKKyNlbmRpZgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiSW1wb3NzaWJsZSBzdGF0ZSIpOworICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShjb25zdCBjaGFyICp1LCBQeV9zc2l6ZV90IHNpemUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqdSwgUHlfc3NpemVfdCBzaXplKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdW5pY29kZTsKLQogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIC8qIElmIHRoZSBVbmljb2RlIGRhdGEgaXMga25vd24gYXQgY29uc3RydWN0aW9uIHRpbWUsIHdlIGNhbiBhcHBseQotICAgICAgIHNvbWUgb3B0aW1pemF0aW9ucyB3aGljaCBzaGFyZSBjb21tb25seSB1c2VkIG9iamVjdHMuCi0gICAgICAgQWxzbywgdGhpcyBtZWFucyB0aGUgaW5wdXQgbXVzdCBiZSBVVEYtOCwgc28gZmFsbCBiYWNrIHRvIHRoZQotICAgICAgIFVURi04IGRlY29kZXIgYXQgdGhlIGVuZC4gKi8KLSAgICBpZiAodSAhPSBOVUxMKSB7Ci0KLSAgICAgICAgLyogT3B0aW1pemF0aW9uIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgICAgIGlmIChzaXplID09IDAgJiYgdW5pY29kZV9lbXB0eSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZV9lbXB0eTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qIFNpbmdsZSBjaGFyYWN0ZXJzIGFyZSBzaGFyZWQgd2hlbiB1c2luZyB0aGlzIGNvbnN0cnVjdG9yLgotICAgICAgICAgICBSZXN0cmljdCB0byBBU0NJSSwgc2luY2UgdGhlIGlucHV0IG11c3QgYmUgVVRGLTguICovCi0gICAgICAgIGlmIChzaXplID09IDEgJiYgUHlfQ0hBUk1BU0soKnUpIDwgMTI4KSB7Ci0gICAgICAgICAgICB1bmljb2RlID0gdW5pY29kZV9sYXRpbjFbUHlfQ0hBUk1BU0soKnUpXTsKLSAgICAgICAgICAgIGlmICghdW5pY29kZSkgewotICAgICAgICAgICAgICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldygxKTsKLSAgICAgICAgICAgICAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIHVuaWNvZGUtPnN0clswXSA9IFB5X0NIQVJNQVNLKCp1KTsKLSAgICAgICAgICAgICAgICB1bmljb2RlX2xhdGluMVtQeV9DSEFSTUFTSygqdSldID0gdW5pY29kZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHUsIHNpemUsIE5VTEwpOwotICAgIH0KLQotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKLSAgICBpZiAoIXVuaWNvZGUpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKHUgIT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwodSwgc2l6ZSwgTlVMTCwgTlVMTCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5VW5pY29kZV9OZXcoc2l6ZSk7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRnJvbVN0cmluZyhjb25zdCBjaGFyICp1KQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqdSkKIHsKICAgICBzaXplX3Qgc2l6ZSA9IHN0cmxlbih1KTsKICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAiaW5wdXQgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHUsIChQeV9zc2l6ZV90KXNpemUsIE5VTEwsIE5VTEwpOworfQogCi0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSh1LCBzaXplKTsKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyICppZCkKK3sKKyAgICBpZiAoIWlkLT5vYmplY3QpIHsKKyAgICAgICAgaWQtPm9iamVjdCA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoaWQtPnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGlkLT5zdHJpbmcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFpZC0+b2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZpZC0+b2JqZWN0KTsKKyAgICAgICAgYXNzZXJ0KCFpZC0+bmV4dCk7CisgICAgICAgIGlkLT5uZXh0ID0gc3RhdGljX3N0cmluZ3M7CisgICAgICAgIHN0YXRpY19zdHJpbmdzID0gaWQ7CisgICAgfQorICAgIHJldHVybiBpZC0+b2JqZWN0OworfQorCit2b2lkCitfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncygpCit7CisgICAgX1B5X0lkZW50aWZpZXIgKmk7CisgICAgZm9yIChpID0gc3RhdGljX3N0cmluZ3M7IGk7IGkgPSBpLT5uZXh0KSB7CisgICAgICAgIFB5X0RFQ1JFRihpLT5vYmplY3QpOworICAgICAgICBpLT5vYmplY3QgPSBOVUxMOworICAgICAgICBpLT5uZXh0ID0gTlVMTDsKKyAgICB9Cit9CisKKy8qIEludGVybmFsIGZ1bmN0aW9uLCBkb2Vzbid0IGNoZWNrIG1heGltdW0gY2hhcmFjdGVyICovCisKK1B5T2JqZWN0KgorX1B5VW5pY29kZV9Gcm9tQVNDSUkoY29uc3QgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcyA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopYnVmZmVyOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGlmIChzaXplID09IDEpIHsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICBhc3NlcnQoc1swXSA8IDEyOCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcihzWzBdKTsKKyAgICB9CisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIG1lbWNweShQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgcywgc2l6ZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7Cit9CisKK3N0YXRpYyBQeV9VQ1M0CitraW5kX21heGNoYXJfbGltaXQodW5zaWduZWQgaW50IGtpbmQpCit7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4ODA7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIDB4MTAwOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiAweDEwMDAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwICYmICJpbnZhbGlkIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIE1BWF9VTklDT0RFOworICAgIH0KK30KKworUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCithbGlnbl9tYXhjaGFyKFB5X1VDUzQgbWF4Y2hhcikKK3sKKyAgICBpZiAobWF4Y2hhciA8PSAxMjcpCisgICAgICAgIHJldHVybiAxMjc7CisgICAgZWxzZSBpZiAobWF4Y2hhciA8PSAyNTUpCisgICAgICAgIHJldHVybiAyNTU7CisgICAgZWxzZSBpZiAobWF4Y2hhciA8PSA2NTUzNSkKKyAgICAgICAgcmV0dXJuIDY1NTM1OworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1BWF9VTklDT0RFOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21VQ1MxKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIHVuc2lnbmVkIGNoYXIgbWF4X2NoYXI7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcih1WzBdKTsKKworICAgIG1heF9jaGFyID0gdWNzMWxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWVtY3B5KFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyksIHUsIHNpemUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0KgorX1B5VW5pY29kZV9Gcm9tVUNTMihjb25zdCBQeV9VQ1MyICp1LCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeV9VQ1MyIG1heF9jaGFyOworCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KKyAgICBhc3NlcnQoc2l6ZSA+IDApOworICAgIGlmIChzaXplID09IDEpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IHVbMF07CisgICAgICAgIGlmIChjaCA8IDI1NikKKyAgICAgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpY2gpOworCisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoMSwgY2gpOworICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV9LSU5EKHJlcyksIFB5VW5pY29kZV9EQVRBKHJlcyksIDAsIGNoKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9CisKKyAgICBtYXhfY2hhciA9IHVjczJsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgc2l6ZSk7CisgICAgcmVzID0gUHlVbmljb2RlX05ldyhzaXplLCBtYXhfY2hhcik7CisgICAgaWYgKCFyZXMpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChtYXhfY2hhciA+PSAyNTYpCisgICAgICAgIG1lbWNweShQeVVuaWNvZGVfMkJZVEVfREFUQShyZXMpLCB1LCBzaXplb2YoUHlfVUNTMikqc2l6ZSk7CisgICAgZWxzZSB7CisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgIFB5X1VDUzIsIFB5X1VDUzEsIHUsIHUgKyBzaXplLCBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpKTsKKyAgICB9CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QqCitfUHlVbmljb2RlX0Zyb21VQ1M0KGNvbnN0IFB5X1VDUzQgKnUsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzOworICAgIFB5X1VDUzQgbWF4X2NoYXI7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorICAgIGFzc2VydChzaXplID4gMCk7CisgICAgaWYgKHNpemUgPT0gMSkgeworICAgICAgICBQeV9VQ1M0IGNoID0gdVswXTsKKyAgICAgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhciljaCk7CisKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldygxLCBjaCk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQocmVzKSwgUHlVbmljb2RlX0RBVEEocmVzKSwgMCwgY2gpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIG1heF9jaGFyID0gdWNzNGxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBzaXplKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHNpemUsIG1heF9jaGFyKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKG1heF9jaGFyIDwgMjU2KQorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMSwgdSwgdSArIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQShyZXMpKTsKKyAgICBlbHNlIGlmIChtYXhfY2hhciA8IDB4MTAwMDApCisgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUyhQeV9VQ1M0LCBQeV9VQ1MyLCB1LCB1ICsgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHJlcykpOworICAgIGVsc2UKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV80QllURV9EQVRBKHJlcyksIHUsIHNpemVvZihQeV9VQ1M0KSpzaXplKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0KgorUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShpbnQga2luZCwgY29uc3Qgdm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgaWYgKHNpemUgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic2l6ZSBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTMShidWZmZXIsIHNpemUpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21VQ1MyKGJ1ZmZlciwgc2l6ZSk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRnJvbVVDUzQoYnVmZmVyLCBzaXplKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCitQeV9VQ1M0CitfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CisgICAgdm9pZCAqc3RhcnRwdHIsICplbmRwdHI7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoMCA8PSBzdGFydCk7CisgICAgYXNzZXJ0KGVuZCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHN0YXJ0IDw9IGVuZCk7CisKKyAgICBpZiAoc3RhcnQgPT0gMCAmJiBlbmQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSk7CisKKyAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gMTI3OworCisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIDEyNzsKKworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBzdGFydHB0ciA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGVuZHB0ciA9IChjaGFyICopc3RhcnRwdHIgKyBlbmQgKiBraW5kOworICAgIHN0YXJ0cHRyID0gKGNoYXIgKilzdGFydHB0ciArIHN0YXJ0ICoga2luZDsKKyAgICBzd2l0Y2goa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MxbGliX2ZpbmRfbWF4X2NoYXIoc3RhcnRwdHIsIGVuZHB0cik7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZF9tYXhfY2hhcihzdGFydHB0ciwgZW5kcHRyKTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9maW5kX21heF9jaGFyKHN0YXJ0cHRyLCBlbmRwdHIpOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCisvKiBFbnN1cmUgdGhhdCBhIHN0cmluZyB1c2VzIHRoZSBtb3N0IGVmZmljaWVudCBzdG9yYWdlLCBpZiBpdCBpcyBub3QgdGhlCisgICBjYXNlOiBjcmVhdGUgYSBuZXcgc3RyaW5nIHdpdGggb2YgdGhlIHJpZ2h0IGtpbmQuIFdyaXRlIE5VTEwgaW50byAqcF91bmljb2RlCisgICBvbiBlcnJvci4gKi8KK3N0YXRpYyB2b2lkCit1bmljb2RlX2FkanVzdF9tYXhjaGFyKFB5T2JqZWN0ICoqcF91bmljb2RlKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqY29weTsKKyAgICBQeV9VQ1M0IG1heF9jaGFyOworICAgIFB5X3NzaXplX3QgbGVuOworICAgIHVuc2lnbmVkIGludCBraW5kOworCisgICAgYXNzZXJ0KHBfdW5pY29kZSAhPSBOVUxMKTsKKyAgICB1bmljb2RlID0gKnBfdW5pY29kZTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICByZXR1cm47CisKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTMSAqdSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICBtYXhfY2hhciA9IHVjczFsaWJfZmluZF9tYXhfY2hhcih1LCB1ICsgbGVuKTsKKyAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1MyICp1ID0gUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgIG1heF9jaGFyID0gdWNzMmxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMjU2KQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqdSA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgIG1heF9jaGFyID0gdWNzNGxpYl9maW5kX21heF9jaGFyKHUsIHUgKyBsZW4pOworICAgICAgICBpZiAobWF4X2NoYXIgPj0gMHgxMDAwMCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29weSA9IFB5VW5pY29kZV9OZXcobGVuLCBtYXhfY2hhcik7CisgICAgaWYgKGNvcHkgIT0gTlVMTCkKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoY29weSwgMCwgdW5pY29kZSwgMCwgbGVuKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgKnBfdW5pY29kZSA9IGNvcHk7Cit9CisKK1B5T2JqZWN0KgorX1B5VW5pY29kZV9Db3B5KFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIFB5T2JqZWN0ICpjb3B5OworCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGNvcHkgPSBQeVVuaWNvZGVfTmV3KGxlbmd0aCwgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHVuaWNvZGUpKTsKKyAgICBpZiAoIWNvcHkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChjb3B5KSA9PSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CisKKyAgICBQeV9NRU1DUFkoUHlVbmljb2RlX0RBVEEoY29weSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICBsZW5ndGggKiBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShjb3B5LCAxKSk7CisgICAgcmV0dXJuIGNvcHk7Cit9CisKKworLyogV2lkZW4gVW5pY29kZSBvYmplY3RzIHRvIGxhcmdlciBidWZmZXJzLiBEb24ndCB3cml0ZSB0ZXJtaW5hdGluZyBudWxsCisgICBjaGFyYWN0ZXIuIFJldHVybiBOVUxMIG9uIGVycm9yLiAqLworCit2b2lkKgorX1B5VW5pY29kZV9Bc0tpbmQoUHlPYmplY3QgKnMsIHVuc2lnbmVkIGludCBraW5kKQoreworICAgIFB5X3NzaXplX3QgbGVuOworICAgIHZvaWQgKnJlc3VsdDsKKyAgICB1bnNpZ25lZCBpbnQgc2tpbmQ7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHMpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOworICAgIHNraW5kID0gUHlVbmljb2RlX0tJTkQocyk7CisgICAgaWYgKHNraW5kID49IGtpbmQpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAiaW52YWxpZCB3aWRlbmluZyBhdHRlbXB0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSBQeU1lbV9NYWxsb2MobGVuICogc2l6ZW9mKFB5X1VDUzIpKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgYXNzZXJ0KHNraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKTsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgUHlfVUNTMSwgUHlfVUNTMiwKKyAgICAgICAgICAgIFB5VW5pY29kZV8xQllURV9EQVRBKHMpLAorICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICByZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IFB5TWVtX01hbGxvYyhsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBpZiAoc2tpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfQ09OVkVSVF9CWVRFUygKKyAgICAgICAgICAgICAgICBQeV9VQ1MyLCBQeV9VQ1M0LAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHMpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHMpICsgbGVuLAorICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoc2tpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKAorICAgICAgICAgICAgICAgIFB5X1VDUzEsIFB5X1VDUzQsCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocyksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEocykgKyBsZW4sCisgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJpbnZhbGlkIGtpbmQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIFB5X1VDUzQqCithc191Y3M0KFB5T2JqZWN0ICpzdHJpbmcsIFB5X1VDUzQgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRzaXplLAorICAgICAgICBpbnQgY29weV9udWxsKQoreworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW4sIHRhcmdldGxlbjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CisgICAgdGFyZ2V0bGVuID0gbGVuOworICAgIGlmIChjb3B5X251bGwpCisgICAgICAgIHRhcmdldGxlbisrOworICAgIGlmICghdGFyZ2V0KSB7CisgICAgICAgIGlmIChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VQ1M0KSA8IHRhcmdldGxlbikgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHRhcmdldCA9IFB5TWVtX01hbGxvYyh0YXJnZXRsZW4gKiBzaXplb2YoUHlfVUNTNCkpOworICAgICAgICBpZiAoIXRhcmdldCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAodGFyZ2V0c2l6ZSA8IHRhcmdldGxlbikgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgaXMgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciIpOworICAgICAgICAgICAgaWYgKGNvcHlfbnVsbCAmJiAwIDwgdGFyZ2V0c2l6ZSkKKyAgICAgICAgICAgICAgICB0YXJnZXRbMF0gPSAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgUHlfVUNTMSAqc3RhcnQgPSAoUHlfVUNTMSAqKSBkYXRhOworICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTMSwgUHlfVUNTNCwgc3RhcnQsIHN0YXJ0ICsgbGVuLCB0YXJnZXQpOworICAgIH0KKyAgICBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgIFB5X1VDUzIgKnN0YXJ0ID0gKFB5X1VDUzIgKikgZGF0YTsKKyAgICAgICAgX1B5VW5pY29kZV9DT05WRVJUX0JZVEVTKFB5X1VDUzIsIFB5X1VDUzQsIHN0YXJ0LCBzdGFydCArIGxlbiwgdGFyZ2V0KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgUHlfTUVNQ1BZKHRhcmdldCwgZGF0YSwgbGVuICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICB9CisgICAgaWYgKGNvcHlfbnVsbCkKKyAgICAgICAgdGFyZ2V0W2xlbl0gPSAwOworICAgIHJldHVybiB0YXJnZXQ7Cit9CisKK1B5X1VDUzQqCitQeVVuaWNvZGVfQXNVQ1M0KFB5T2JqZWN0ICpzdHJpbmcsIFB5X1VDUzQgKnRhcmdldCwgUHlfc3NpemVfdCB0YXJnZXRzaXplLAorICAgICAgICAgICAgICAgICBpbnQgY29weV9udWxsKQoreworICAgIGlmICh0YXJnZXQgPT0gTlVMTCB8fCB0YXJnZXRzaXplIDwgMCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBhc191Y3M0KHN0cmluZywgdGFyZ2V0LCB0YXJnZXRzaXplLCBjb3B5X251bGwpOworfQorCitQeV9VQ1M0KgorUHlVbmljb2RlX0FzVUNTNENvcHkoUHlPYmplY3QgKnN0cmluZykKK3sKKyAgICByZXR1cm4gYXNfdWNzNChzdHJpbmcsIE5VTEwsIDAsIDEpOwogfQogCiAjaWZkZWYgSEFWRV9XQ0hBUl9ICiAKLSNpZiAoUHlfVU5JQ09ERV9TSVpFID09IDIpICYmIGRlZmluZWQoU0laRU9GX1dDSEFSX1QpICYmIChTSVpFT0ZfV0NIQVJfVCA9PSA0KQotIyBkZWZpbmUgQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTCi0jZW5kaWYKLQotI2lmZGVmIENPTlZFUlRfV0NIQVJfVE9fU1VSUk9HQVRFUwotCi0vKiBIZXJlIHNpemVvZih3Y2hhcl90KSBpcyA0IGJ1dCBQeV9VTklDT0RFX1NJWkUgPT0gMiwgc28gd2UgbmVlZAotICAgdG8gY29udmVydCBmcm9tIFVURjMyIHRvIFVURjE2LiAqLwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZWdpc3RlciBjb25zdCB3Y2hhcl90ICp3LCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1bmljb2RlOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICBQeV9zc2l6ZV90IGFsbG9jOwotICAgIGNvbnN0IHdjaGFyX3QgKm9yaWdfdzsKLQogICAgIGlmICh3ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoc2l6ZSA9PSAtMSkgewotICAgICAgICBzaXplID0gd2NzbGVuKHcpOwotICAgIH0KLQotICAgIGFsbG9jID0gc2l6ZTsKLSAgICBvcmlnX3cgPSB3OwotICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pIHsKLSAgICAgICAgaWYgKCp3ID4gMHhGRkZGKQotICAgICAgICAgICAgYWxsb2MrKzsKLSAgICAgICAgdysrOwotICAgIH0KLSAgICB3ID0gb3JpZ193OwotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldyhhbGxvYyk7Ci0gICAgaWYgKCF1bmljb2RlKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIENvcHkgdGhlIHdjaGFyX3QgZGF0YSBpbnRvIHRoZSBuZXcgb2JqZWN0ICovCi0gICAgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFICp1OwotICAgICAgICB1ID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgICAgIGZvciAoaSA9IHNpemU7IGkgPiAwOyBpLS0pIHsKLSAgICAgICAgICAgIGlmICgqdyA+IDB4RkZGRikgewotICAgICAgICAgICAgICAgIHdjaGFyX3Qgb3JkaW5hbCA9ICp3Kys7Ci0gICAgICAgICAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICp1KysgPSAweEQ4MDAgfCAob3JkaW5hbCA+PiAxMCk7Ci0gICAgICAgICAgICAgICAgKnUrKyA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICp1KysgPSAqdysrOworICAgICAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKLX0KLQotI2Vsc2UKLQotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmVnaXN0ZXIgY29uc3Qgd2NoYXJfdCAqdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0KLSAgICBpZiAodyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChzaXplID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNjQ3LDI5ICsyMjU4LDEwIEBACiAgICAgICAgIHNpemUgPSB3Y3NsZW4odyk7CiAgICAgfQogCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBDb3B5IHRoZSB3Y2hhcl90IGRhdGEgaW50byB0aGUgbmV3IG9iamVjdCAqLwotI2lmIFB5X1VOSUNPREVfU0laRSA9PSBTSVpFT0ZfV0NIQVJfVAotICAgIG1lbWNweSh1bmljb2RlLT5zdHIsIHcsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnU7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICAgICAgdSA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgICAgICBmb3IgKGkgPSBzaXplOyBpID4gMDsgaS0tKQotICAgICAgICAgICAgKnUrKyA9ICp3Kys7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHcsIHNpemUpOwogfQogCi0jZW5kaWYgLyogQ09OVkVSVF9XQ0hBUl9UT19TVVJST0dBVEVTICovCi0KLSN1bmRlZiBDT05WRVJUX1dDSEFSX1RPX1NVUlJPR0FURVMKKyNlbmRpZiAvKiBIQVZFX1dDSEFSX0ggKi8KIAogc3RhdGljIHZvaWQKIG1ha2VmbXQoY2hhciAqZm10LCBpbnQgbG9uZ2ZsYWcsIGludCBsb25nbG9uZ2ZsYWcsIGludCBzaXplX3RmbGFnLApAQCAtNzA3LDEwICsyMjk5LDcxIEBACiAgICAgKmZtdCA9ICdcMCc7CiB9CiAKLSNkZWZpbmUgYXBwZW5kc3RyaW5nKHN0cmluZykge2ZvciAoY29weSA9IHN0cmluZzsqY29weTspICpzKysgPSAqY29weSsrO30KKy8qIGhlbHBlciBmb3IgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgKi8KIAotLyogc2l6ZSBvZiBmaXhlZC1zaXplIGJ1ZmZlciBmb3IgZm9ybWF0dGluZyBzaW5nbGUgYXJndW1lbnRzICovCi0jZGVmaW5lIElURU1fQlVGRkVSX0xFTiAyMQorc3RhdGljIGNvbnN0IGNoYXIqCitwYXJzZV9mb3JtYXRfZmxhZ3MoY29uc3QgY2hhciAqZiwKKyAgICAgICAgICAgICAgICAgICBpbnQgKnBfd2lkdGgsIGludCAqcF9wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgaW50ICpwX2xvbmdmbGFnLCBpbnQgKnBfbG9uZ2xvbmdmbGFnLCBpbnQgKnBfc2l6ZV90ZmxhZykKK3sKKyAgICBpbnQgd2lkdGgsIHByZWNpc2lvbiwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZzsKKworICAgIC8qIHBhcnNlIHRoZSB3aWR0aC5wcmVjaXNpb24gcGFydCwgZS5nLiAiJTIuNXMiID0+IHdpZHRoPTIsIHByZWNpc2lvbj01ICovCisgICAgZisrOworICAgIHdpZHRoID0gMDsKKyAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQorICAgICAgICB3aWR0aCA9ICh3aWR0aCoxMCkgKyAqZisrIC0gJzAnOworICAgIHByZWNpc2lvbiA9IDA7CisgICAgaWYgKCpmID09ICcuJykgeworICAgICAgICBmKys7CisgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCh1bnNpZ25lZCkqZikpCisgICAgICAgICAgICBwcmVjaXNpb24gPSAocHJlY2lzaW9uKjEwKSArICpmKysgLSAnMCc7CisgICAgICAgIGlmICgqZiA9PSAnJScpIHsKKyAgICAgICAgICAgIC8qICIlLjMlcyIgPT4gZiBwb2ludHMgdG8gIjMiICovCisgICAgICAgICAgICBmLS07CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCpmID09ICdcMCcpIHsKKyAgICAgICAgLyogYm9ndXMgZm9ybWF0ICIlLjEiID0+IGdvIGJhY2t3YXJkLCBmIHBvaW50cyB0byAiMSIgKi8KKyAgICAgICAgZi0tOworICAgIH0KKyAgICBpZiAocF93aWR0aCAhPSBOVUxMKQorICAgICAgICAqcF93aWR0aCA9IHdpZHRoOworICAgIGlmIChwX3ByZWNpc2lvbiAhPSBOVUxMKQorICAgICAgICAqcF9wcmVjaXNpb24gPSBwcmVjaXNpb247CisKKyAgICAvKiBIYW5kbGUgJWxkLCAlbHUsICVsbGQgYW5kICVsbHUuICovCisgICAgbG9uZ2ZsYWcgPSAwOworICAgIGxvbmdsb25nZmxhZyA9IDA7CisgICAgc2l6ZV90ZmxhZyA9IDA7CisKKyAgICBpZiAoKmYgPT0gJ2wnKSB7CisgICAgICAgIGlmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JyB8fCBmWzFdID09ICdpJykgeworICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisjaWZkZWYgSEFWRV9MT05HX0xPTkcKKyAgICAgICAgZWxzZSBpZiAoZlsxXSA9PSAnbCcgJiYKKyAgICAgICAgICAgICAgICAgKGZbMl0gPT0gJ2QnIHx8IGZbMl0gPT0gJ3UnIHx8IGZbMl0gPT0gJ2knKSkgeworICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKKyAgICAgICAgICAgIGYgKz0gMjsKKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCisgICAgZWxzZSBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JyB8fCBmWzFdID09ICdpJykpIHsKKyAgICAgICAgc2l6ZV90ZmxhZyA9IDE7CisgICAgICAgICsrZjsKKyAgICB9CisgICAgaWYgKHBfbG9uZ2ZsYWcgIT0gTlVMTCkKKyAgICAgICAgKnBfbG9uZ2ZsYWcgPSBsb25nZmxhZzsKKyAgICBpZiAocF9sb25nbG9uZ2ZsYWcgIT0gTlVMTCkKKyAgICAgICAgKnBfbG9uZ2xvbmdmbGFnID0gbG9uZ2xvbmdmbGFnOworICAgIGlmIChwX3NpemVfdGZsYWcgIT0gTlVMTCkKKyAgICAgICAgKnBfc2l6ZV90ZmxhZyA9IHNpemVfdGZsYWc7CisgICAgcmV0dXJuIGY7Cit9CisKIC8qIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVxdWlyZWQgZm9yIG91dHB1dCBvZiAlbGQuICAyMSBjaGFyYWN0ZXJzCiAgICBhbGxvd3MgZm9yIDY0LWJpdCBpbnRlZ2VycyAoaW4gZGVjaW1hbCkgYW5kIGFuIG9wdGlvbmFsIHNpZ24uICovCiAjZGVmaW5lIE1BWF9MT05HX0NIQVJTIDIxCkBAIC03MzEsMTA2ICsyMzg0LDM1IEBACiAgICAgaW50IHByZWNpc2lvbiA9IDA7CiAgICAgaW50IHplcm9wYWQ7CiAgICAgY29uc3QgY2hhciogZjsKLSAgICBQeV9VTklDT0RFICpzOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAgICAgLyogdXNlZCBieSBzcHJpbnRmICovCi0gICAgY2hhciBidWZmZXJbSVRFTV9CVUZGRVJfTEVOKzFdOwotICAgIC8qIHVzZSBhYnVmZmVyIGluc3RlYWQgb2YgYnVmZmVyLCBpZiB3ZSBuZWVkIG1vcmUgc3BhY2UKLSAgICAgKiAod2hpY2ggY2FuIGhhcHBlbiBpZiB0aGVyZSdzIGEgZm9ybWF0IHNwZWNpZmllciB3aXRoIHdpZHRoKS4gKi8KLSAgICBjaGFyICphYnVmZmVyID0gTlVMTDsKLSAgICBjaGFyICpyZWFsYnVmZmVyOwotICAgIFB5X3NzaXplX3QgYWJ1ZmZlcnNpemUgPSAwOwogICAgIGNoYXIgZm10WzYxXTsgLyogc2hvdWxkIGJlIGVub3VnaCBmb3IgJTB3aWR0aC5wcmVjaXNpb25sbGQgKi8KLSAgICBjb25zdCBjaGFyICpjb3B5OworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsgLyogcmVzdWx0IGlzIEFTQ0lJIGJ5IGRlZmF1bHQgKi8KKyAgICBQeV9VQ1M0IGFyZ21heGNoYXI7CisgICAgUHlfc3NpemVfdCBudW1iZXJzaXplID0gMDsKKyAgICBjaGFyICpudW1iZXJyZXN1bHRzID0gTlVMTDsKKyAgICBjaGFyICpudW1iZXJyZXN1bHQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgUHlfVkFfQ09QWShjb3VudCwgdmFyZ3MpOwogICAgIC8qIHN0ZXAgMTogY291bnQgdGhlIG51bWJlciBvZiAlUy8lUi8lQS8lcyBmb3JtYXQgc3BlY2lmaWNhdGlvbnMKICAgICAgKiAod2UgY2FsbCBQeU9iamVjdF9TdHIoKS9QeU9iamVjdF9SZXByKCkvUHlPYmplY3RfQVNDSUkoKS8KICAgICAgKiBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpIGZvciB0aGVzZSBvYmplY3RzIG9uY2UgZHVyaW5nIHN0ZXAgMyBhbmQgcHV0IHRoZQotICAgICAqIHJlc3VsdCBpbiBhbiBhcnJheSkgKi8KLSAgICBmb3IgKGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKLSAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgICBpZiAoKihmKzEpPT0nJScpCi0gICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgIGlmICgqKGYrMSk9PSdTJyB8fCAqKGYrMSk9PSdSJyB8fCAqKGYrMSk9PSdBJyB8fCAqKGYrMSkgPT0gJ1YnKQotICAgICAgICAgICAgICAgICArK2NhbGxjb3VudDsKLSAgICAgICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgICB3aWR0aCA9ICh3aWR0aCoxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgIHdoaWxlICgqKytmICYmICpmICE9ICclJyAmJiAhUHlfSVNBTFBIQSgodW5zaWduZWQpKmYpKQotICAgICAgICAgICAgICAgICA7Ci0gICAgICAgICAgICAgaWYgKCpmID09ICdzJykKLSAgICAgICAgICAgICAgICAgKytjYWxsY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlIGlmICgxMjggPD0gKHVuc2lnbmVkIGNoYXIpKmYpIHsKLSAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAiUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgInN0cmluZywgZ290IGEgbm9uLUFTQ0lJIGJ5dGU6IDB4JTAyeCIsCi0gICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpKmYpOwotICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgfQotICAgIH0KLSAgICAvKiBzdGVwIDI6IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3VsdHMgb2YKLSAgICAgKiBQeU9iamVjdF9TdHIoKS9QeU9iamVjdF9SZXByKCkvUHlVbmljb2RlX0RlY29kZVVURjgoKSBjYWxscyAqLwotICAgIGlmIChjYWxsY291bnQpIHsKLSAgICAgICAgY2FsbHJlc3VsdHMgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFB5T2JqZWN0ICopKmNhbGxjb3VudCk7Ci0gICAgICAgIGlmICghY2FsbHJlc3VsdHMpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBjYWxscmVzdWx0ID0gY2FsbHJlc3VsdHM7Ci0gICAgfQotICAgIC8qIHN0ZXAgMzogZmlndXJlIG91dCBob3cgbGFyZ2UgYSBidWZmZXIgd2UgbmVlZCAqLworICAgICAqIHJlc3VsdCBpbiBhbiBhcnJheSkKKyAgICAgKiBhbHNvIGVzdGltYXRlIGEgdXBwZXIgYm91bmQgZm9yIGFsbCB0aGUgbnVtYmVyIGZvcm1hdHMgaW4gdGhlIHN0cmluZywKKyAgICAgKiBudW1iZXJzIHdpbGwgYmUgZm9ybWF0dGVkIGluIHN0ZXAgMyBhbmQgYmUga2VwdCBpbiBhICdcMCctc2VwYXJhdGVkCisgICAgICogYnVmZmVyIGJlZm9yZSBwdXR0aW5nIGV2ZXJ5dGhpbmcgdG9nZXRoZXIuICovCiAgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICAgICAgaW50IGxvbmdsb25nZmxhZyA9IDA7Ci0jZW5kaWYKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmOwotICAgICAgICAgICAgd2lkdGggPSAwOwotICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICB3aWR0aCA9ICh3aWR0aCoxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgd2hpbGUgKCorK2YgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCh1bnNpZ25lZCkqZikpCi0gICAgICAgICAgICAgICAgOworICAgICAgICAgICAgaW50IGxvbmdsb25nZmxhZzsKKyAgICAgICAgICAgIC8qIHNraXAgd2lkdGggb3Igd2lkdGgucHJlY2lzaW9uIChlZy4gIjEuMiIgb2YgIiUxLjJmIikgKi8KKyAgICAgICAgICAgIGYgPSBwYXJzZV9mb3JtYXRfZmxhZ3MoZiwgJndpZHRoLCBOVUxMLCBOVUxMLCAmbG9uZ2xvbmdmbGFnLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICgqZiA9PSAncycgfHwgKmY9PSdTJyB8fCAqZj09J1InIHx8ICpmPT0nQScgfHwgKmY9PSdWJykKKyAgICAgICAgICAgICAgICArK2NhbGxjb3VudDsKIAotICAgICAgICAgICAgLyogc2tpcCB0aGUgJ2wnIG9yICd6JyBpbiB7JWxkLCAlemQsICVsdSwgJXp1fSBzaW5jZQotICAgICAgICAgICAgICogdGhleSBkb24ndCBhZmZlY3QgdGhlIGFtb3VudCBvZiBzcGFjZSB3ZSByZXNlcnZlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ2wnKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSB7Ci0gICAgICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgICAgICB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChmWzFdID09ICdsJyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICAgICAgZiArPSAyOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICArK2Y7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICBpbnQgb3JkaW5hbCA9IHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICBpZiAob3JkaW5hbCA+IDB4ZmZmZikKLSAgICAgICAgICAgICAgICAgICAgbiArPSAyOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgbisrOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAodm9pZCl2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgbisrOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdkJzogY2FzZSAndSc6IGNhc2UgJ2knOiBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOworICAgICAgICAgICAgZWxzZSBpZiAoKmYgPT0gJ2QnIHx8ICpmPT0ndScgfHwgKmY9PSdpJyB8fCAqZj09J3gnIHx8ICpmPT0ncCcpIHsKICNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgICAgIGlmIChsb25nbG9uZ2ZsYWcpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgTUFYX0xPTkdfTE9OR19DSEFSUykKQEAgLTg0NCwxOSArMjQyNiwxNTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgbmVlZCBtb3JlICh3aGljaCB3ZSBhbGxvY2F0ZSBsYXRlcikuICovCiAgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IE1BWF9MT05HX0NIQVJTKQogICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBNQVhfTE9OR19DSEFSUzsKLSAgICAgICAgICAgICAgICBuICs9IHdpZHRoOwotICAgICAgICAgICAgICAgIC8qIFhYWCBzaG91bGQgYWxsb3cgZm9yIGxhcmdlIHByZWNpc2lvbiBoZXJlIHRvby4gKi8KLSAgICAgICAgICAgICAgICBpZiAoYWJ1ZmZlcnNpemUgPCB3aWR0aCkKLSAgICAgICAgICAgICAgICAgICAgYWJ1ZmZlcnNpemUgPSB3aWR0aDsKKworICAgICAgICAgICAgICAgIC8qIGFjY291bnQgZm9yIHRoZSBzaXplICsgJ1wwJyB0byBzZXBhcmF0ZSBudW1iZXJzCisgICAgICAgICAgICAgICAgICAgaW5zaWRlIG9mIHRoZSBudW1iZXJyZXN1bHRzIGJ1ZmZlciAqLworICAgICAgICAgICAgICAgIG51bWJlcnNpemUgKz0gKHdpZHRoICsgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKHVuc2lnbmVkIGNoYXIpKmYgPiAxMjcpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAic3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHglMDJ4IiwKKyAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcikqZik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKiBzdGVwIDI6IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3VsdHMgb2YKKyAgICAgKiBQeU9iamVjdF9TdHIoKS9QeU9iamVjdF9SZXByKCkvUHlVbmljb2RlX0RlY29kZVVURjgoKSBjYWxscyAqLworICAgIGlmIChjYWxsY291bnQpIHsKKyAgICAgICAgY2FsbHJlc3VsdHMgPSBQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKFB5T2JqZWN0ICopICogY2FsbGNvdW50KTsKKyAgICAgICAgaWYgKCFjYWxscmVzdWx0cykgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGNhbGxyZXN1bHQgPSBjYWxscmVzdWx0czsKKyAgICB9CisgICAgLyogc3RlcCAyLjU6IGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIHJlc3VsdHMgb2YgZm9ybWF0aW5nIG51bWJlcnMgKi8KKyAgICBpZiAobnVtYmVyc2l6ZSkgeworICAgICAgICBudW1iZXJyZXN1bHRzID0gUHlPYmplY3RfTWFsbG9jKG51bWJlcnNpemUpOworICAgICAgICBpZiAoIW51bWJlcnJlc3VsdHMpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICAgICAgbnVtYmVycmVzdWx0ID0gbnVtYmVycmVzdWx0czsKKyAgICB9CisKKyAgICAvKiBzdGVwIDM6IGZvcm1hdCBudW1iZXJzIGFuZCBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCisgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7CisgICAgICAgIGlmICgqZiA9PSAnJScpIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHA7CisgICAgICAgICAgICBpbnQgbG9uZ2ZsYWc7CisgICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnOworICAgICAgICAgICAgaW50IHNpemVfdGZsYWc7CisgICAgICAgICAgICBpbnQgbnVtcHJpbnRlZDsKKworICAgICAgICAgICAgcCA9IGY7CisgICAgICAgICAgICB6ZXJvcGFkID0gKGZbMV0gPT0gJzAnKTsKKyAgICAgICAgICAgIGYgPSBwYXJzZV9mb3JtYXRfZmxhZ3MoZiwgJndpZHRoLCAmcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbG9uZ2ZsYWcsICZsb25nbG9uZ2ZsYWcsICZzaXplX3RmbGFnKTsKKyAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKKyAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgb3JkaW5hbCA9IHZhX2FyZyhjb3VudCwgaW50KTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgb3JkaW5hbCk7CisgICAgICAgICAgICAgICAgbisrOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICAgICAgbisrOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICpmKTsKKyAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIGxvbmcpKTsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgUFlfTE9OR19MT05HKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBQeV9zc2l6ZV90KSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBpbnQpKTsKKyAgICAgICAgICAgICAgICBuICs9IG51bXByaW50ZWQ7CisgICAgICAgICAgICAgICAgLyogYWR2YW5jZSBieSArMSB0byBza2lwIG92ZXIgdGhlICdcMCcgKi8KKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQgKz0gKG51bXByaW50ZWQgKyAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAxKSA9PSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAyKSAhPSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtcHJpbnRlZCA+PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtYmVycmVzdWx0IDw9IG51bWJlcnJlc3VsdHMgKyBudW1iZXJzaXplKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCBsb25nZmxhZywgbG9uZ2xvbmdmbGFnLCBzaXplX3RmbGFnLCB6ZXJvcGFkLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIHByZWNpc2lvbiwgJ3UnKTsKKyAgICAgICAgICAgICAgICBpZiAobG9uZ2ZsYWcpCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHVuc2lnbmVkIGxvbmcpKTsKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKKyAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCA9IHNwcmludGYobnVtYmVycmVzdWx0LCBmbXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyhjb3VudCwgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQorICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkID0gc3ByaW50ZihudW1iZXJyZXN1bHQsIGZtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKGNvdW50LCBzaXplX3QpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoY291bnQsIHVuc2lnbmVkIGludCkpOworICAgICAgICAgICAgICAgIG4gKz0gbnVtcHJpbnRlZDsKKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQgKz0gKG51bXByaW50ZWQgKyAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAxKSA9PSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAyKSAhPSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtcHJpbnRlZCA+PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtYmVycmVzdWx0IDw9IG51bWJlcnJlc3VsdHMgKyBudW1iZXJzaXplKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAgIG1ha2VmbXQoZm10LCAwLCAwLCAwLCB6ZXJvcGFkLCB3aWR0aCwgcHJlY2lzaW9uLCAneCcpOworICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgZm10LCB2YV9hcmcoY291bnQsIGludCkpOworICAgICAgICAgICAgICAgIG4gKz0gbnVtcHJpbnRlZDsKKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQgKz0gKG51bXByaW50ZWQgKyAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAxKSA9PSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAyKSAhPSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtcHJpbnRlZCA+PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtYmVycmVzdWx0IDw9IG51bWJlcnJlc3VsdHMgKyBudW1iZXJzaXplKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgICAgIG51bXByaW50ZWQgPSBzcHJpbnRmKG51bWJlcnJlc3VsdCwgIiVwIiwgdmFfYXJnKGNvdW50LCB2b2lkKikpOworICAgICAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCisgICAgICAgICAgICAgICAgaWYgKG51bWJlcnJlc3VsdFsxXSA9PSAnWCcpCisgICAgICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdFsxXSA9ICd4JzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChudW1iZXJyZXN1bHRbMV0gIT0gJ3gnKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbW1vdmUobnVtYmVycmVzdWx0ICsgMiwgbnVtYmVycmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihudW1iZXJyZXN1bHQpICsgMSk7CisgICAgICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdFswXSA9ICcwJzsKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVycmVzdWx0WzFdID0gJ3gnOworICAgICAgICAgICAgICAgICAgICBudW1wcmludGVkICs9IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG4gKz0gbnVtcHJpbnRlZDsKKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQgKz0gKG51bXByaW50ZWQgKyAxKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAxKSA9PSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoKihudW1iZXJyZXN1bHQgLSAyKSAhPSAnXDAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtcHJpbnRlZCA+PSAwKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQobnVtYmVycmVzdWx0IDw9IG51bWJlcnJlc3VsdHMgKyBudW1iZXJzaXplKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIFVURi04ICovCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcyA9IHZhX2FyZyhjb3VudCwgY29uc3QgY2hhciopOwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdHIgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzLCBzdHJsZW4ocyksICJyZXBsYWNlIik7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0ciA9IFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc3RybGVuKHMpLCAicmVwbGFjZSIsIE5VTEwpOwogICAgICAgICAgICAgICAgIGlmICghc3RyKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKTsKKyAgICAgICAgICAgICAgICAvKiBzaW5jZSBQeVVuaWNvZGVfRGVjb2RlVVRGOCByZXR1cm5zIGFscmVhZHkgZmxleGlibGUKKyAgICAgICAgICAgICAgICAgICB1bmljb2RlIG9iamVjdHMsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCByZWFkeSBvbiB0aGVtICovCisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHN0ciBhbmQgc3dpdGNoIHRvIHRoZSBuZXh0IHNsb3QgKi8KICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gc3RyOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODY0LDggKzI1ODIsMTIgQEAKICAgICAgICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcoY291bnQsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgICAgIGFzc2VydChvYmogJiYgUHlVbmljb2RlX0NoZWNrKG9iaikpOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgICAgICAgICAgICAgYXNzZXJ0KG9iaiAmJiBfUHlVbmljb2RlX0NIRUNLKG9iaikpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUob2JqKTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgYXJnbWF4Y2hhcik7CisgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSAnVic6CkBAIC04NzQsMTYgKzI1OTYsMjYgQEAKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHIgPSB2YV9hcmcoY291bnQsIGNvbnN0IGNoYXIgKik7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0cl9vYmo7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KG9iaiB8fCBzdHIpOwotICAgICAgICAgICAgICAgIGFzc2VydCghb2JqIHx8IFB5VW5pY29kZV9DaGVjayhvYmopKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoIW9iaiB8fCBfUHlVbmljb2RlX0NIRUNLKG9iaikpOwogICAgICAgICAgICAgICAgIGlmIChvYmopIHsKLSAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICAgICAgICAgICAgICBhcmdtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKG9iaik7CisgICAgICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvYmopOwogICAgICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChzdHIsIHN0cmxlbihzdHIpLCAicmVwbGFjZSIpOworICAgICAgICAgICAgICAgICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzdHIsIHN0cmxlbihzdHIpLCAicmVwbGFjZSIsIE5VTEwpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cl9vYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKHN0cl9vYmopOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cl9vYmopID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHJfb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOwogICAgICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gc3RyX29iajsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04OTYsNyArMjYyOCwxMyBAQAogICAgICAgICAgICAgICAgIHN0ciA9IFB5T2JqZWN0X1N0cihvYmopOwogICAgICAgICAgICAgICAgIGlmICghc3RyKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgbiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJnbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHN0ciBhbmQgc3dpdGNoIHRvIHRoZSBuZXh0IHNsb3QgKi8KICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gc3RyOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTA5LDcgKzI2NDcsMTMgQEAKICAgICAgICAgICAgICAgICByZXByID0gUHlPYmplY3RfUmVwcihvYmopOwogICAgICAgICAgICAgICAgIGlmICghcmVwcikKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcHIpOworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwcikgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmVwcik7CisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGFyZ21heGNoYXIpOworICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwcik7CiAgICAgICAgICAgICAgICAgLyogUmVtZW1iZXIgdGhlIHJlcHIgYW5kIHN3aXRjaCB0byB0aGUgbmV4dCBzbG90ICovCiAgICAgICAgICAgICAgICAgKmNhbGxyZXN1bHQrKyA9IHJlcHI7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC05MjIsMjAgKzI2NjYsMTcgQEAKICAgICAgICAgICAgICAgICBhc2NpaSA9IFB5T2JqZWN0X0FTQ0lJKG9iaik7CiAgICAgICAgICAgICAgICAgaWYgKCFhc2NpaSkKICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIG4gKz0gUHlVbmljb2RlX0dFVF9TSVpFKGFzY2lpKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFzY2lpKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYXNjaWkpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoYXNjaWkpOworICAgICAgICAgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBhcmdtYXhjaGFyKTsKKyAgICAgICAgICAgICAgICBuICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGFzY2lpKTsKICAgICAgICAgICAgICAgICAvKiBSZW1lbWJlciB0aGUgcmVwciBhbmQgc3dpdGNoIHRvIHRoZSBuZXh0IHNsb3QgKi8KICAgICAgICAgICAgICAgICAqY2FsbHJlc3VsdCsrID0gYXNjaWk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKGNvdW50LCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIG1heGltdW0gNjQtYml0IHBvaW50ZXIgcmVwcmVzZW50YXRpb246Ci0gICAgICAgICAgICAgICAgICogMHhmZmZmZmZmZmZmZmZmZmZmCi0gICAgICAgICAgICAgICAgICogc28gMTkgY2hhcmFjdGVycyBpcyBlbm91Z2guCi0gICAgICAgICAgICAgICAgICogWFhYIEkgY291bnQgMTggLS0gd2hhdCdzIHRoZSBleHRyYSBmb3I/Ci0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgbiArPSAxOTsKLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgLyogaWYgd2Ugc3R1bWJsZSB1cG9uIGFuIHVua25vd24KICAgICAgICAgICAgICAgICAgICBmb3JtYXR0aW5nIGNvZGUsIGNvcHkgdGhlIHJlc3Qgb2YKQEAgLTk1MCwxMjcgKzI2OTEsNjggQEAKICAgICAgICAgICAgIG4rKzsKICAgICB9CiAgIGV4cGFuZDoKLSAgICBpZiAoYWJ1ZmZlcnNpemUgPiBJVEVNX0JVRkZFUl9MRU4pIHsKLSAgICAgICAgLyogYWRkIDEgZm9yIHNwcmludGYncyB0cmFpbGluZyBudWxsIGJ5dGUgKi8KLSAgICAgICAgYWJ1ZmZlciA9IFB5T2JqZWN0X01hbGxvYyhhYnVmZmVyc2l6ZSArIDEpOwotICAgICAgICBpZiAoIWFidWZmZXIpIHsKLSAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgIH0KLSAgICAgICAgcmVhbGJ1ZmZlciA9IGFidWZmZXI7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVhbGJ1ZmZlciA9IGJ1ZmZlcjsKICAgICAvKiBzdGVwIDQ6IGZpbGwgdGhlIGJ1ZmZlciAqLwotICAgIC8qIFNpbmNlIHdlJ3ZlIGFuYWx5emVkIGhvdyBtdWNoIHNwYWNlIHdlIG5lZWQgZm9yIHRoZSB3b3JzdCBjYXNlLAorICAgIC8qIFNpbmNlIHdlJ3ZlIGFuYWx5emVkIGhvdyBtdWNoIHNwYWNlIHdlIG5lZWQsCiAgICAgICAgd2UgZG9uJ3QgaGF2ZSB0byByZXNpemUgdGhlIHN0cmluZy4KICAgICAgICBUaGVyZSBjYW4gYmUgbm8gZXJyb3JzIGJleW9uZCB0aGlzIHBvaW50LiAqLwotICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBuKTsKKyAgICBzdHJpbmcgPSBQeVVuaWNvZGVfTmV3KG4sIG1heGNoYXIpOwogICAgIGlmICghc3RyaW5nKQogICAgICAgICBnb3RvIGZhaWw7Ci0KLSAgICBzID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKICAgICBjYWxscmVzdWx0ID0gY2FsbHJlc3VsdHM7CisgICAgbnVtYmVycmVzdWx0ID0gbnVtYmVycmVzdWx0czsKIAotICAgIGZvciAoZiA9IGZvcm1hdDsgKmY7IGYrKykgeworICAgIGZvciAoaSA9IDAsIGYgPSBmb3JtYXQ7ICpmOyBmKyspIHsKICAgICAgICAgaWYgKCpmID09ICclJykgewotICAgICAgICAgICAgY29uc3QgY2hhciogcCA9IGYrKzsKLSAgICAgICAgICAgIGludCBsb25nZmxhZyA9IDA7Ci0gICAgICAgICAgICBpbnQgbG9uZ2xvbmdmbGFnID0gMDsKLSAgICAgICAgICAgIGludCBzaXplX3RmbGFnID0gMDsKLSAgICAgICAgICAgIHplcm9wYWQgPSAoKmYgPT0gJzAnKTsKLSAgICAgICAgICAgIC8qIHBhcnNlIHRoZSB3aWR0aC5wcmVjaXNpb24gcGFydCAqLwotICAgICAgICAgICAgd2lkdGggPSAwOwotICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICB3aWR0aCA9ICh3aWR0aCoxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgcHJlY2lzaW9uID0gMDsKLSAgICAgICAgICAgIGlmICgqZiA9PSAnLicpIHsKLSAgICAgICAgICAgICAgICBmKys7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKHVuc2lnbmVkKSpmKSkKLSAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uID0gKHByZWNpc2lvbioxMCkgKyAqZisrIC0gJzAnOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogSGFuZGxlICVsZCwgJWx1LCAlbGxkIGFuZCAlbGx1LiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICdsJykgewotICAgICAgICAgICAgICAgIGlmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykgewotICAgICAgICAgICAgICAgICAgICBsb25nZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgICAgICB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChmWzFdID09ICdsJyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZ2xvbmdmbGFnID0gMTsKLSAgICAgICAgICAgICAgICAgICAgZiArPSAyOwotICAgICAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZy4gKi8KLSAgICAgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgewotICAgICAgICAgICAgICAgIHNpemVfdGZsYWcgPSAxOwotICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IGNoYXIqIHA7CisKKyAgICAgICAgICAgIHAgPSBmOworICAgICAgICAgICAgZiA9IHBhcnNlX2Zvcm1hdF9mbGFncyhmLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgIC8qIGNoZWNraW5nIGZvciA9PSBiZWNhdXNlIHRoZSBsYXN0IGFyZ3VtZW50IGNvdWxkIGJlIGEgZW1wdHkKKyAgICAgICAgICAgICAgIHN0cmluZywgd2hpY2ggY2F1c2VzIGkgdG8gcG9pbnQgdG8gZW5kLCB0aGUgYXNzZXJ0IGF0IHRoZSBlbmQgb2YKKyAgICAgICAgICAgICAgIHRoZSBsb29wICovCisgICAgICAgICAgICBhc3NlcnQoaSA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKTsKIAogICAgICAgICAgICAgc3dpdGNoICgqZikgewogICAgICAgICAgICAgY2FzZSAnYyc6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IG9yZGluYWwgPSB2YV9hcmcodmFyZ3MsIGludCk7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgIGlmIChvcmRpbmFsID4gMHhmZmZmKSB7Ci0gICAgICAgICAgICAgICAgICAgIG9yZGluYWwgLT0gMHgxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgKnMrKyA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgICAgICAgICAgICAgKnMrKyA9IDB4REMwMCB8IChvcmRpbmFsICYgMHgzRkYpOwotICAgICAgICAgICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgICAgICAgICAgKnMrKyA9IG9yZGluYWw7CisgICAgICAgICAgICAgICAgY29uc3QgaW50IG9yZGluYWwgPSB2YV9hcmcodmFyZ3MsIGludCk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGkrKywgb3JkaW5hbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlICdkJzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgbG9uZ2ZsYWcsIGxvbmdsb25nZmxhZywgc2l6ZV90ZmxhZywgemVyb3BhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBwcmVjaXNpb24sICdkJyk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChsb25nbG9uZ2ZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocmVhbGJ1ZmZlciwgZm10LCB2YV9hcmcodmFyZ3MsIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgUHlfc3NpemVfdCkpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHJlYWxidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAndSc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIGxvbmdmbGFnLCBsb25nbG9uZ2ZsYWcsIHNpemVfdGZsYWcsIHplcm9wYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgcHJlY2lzaW9uLCAndScpOwotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgdW5zaWduZWQgbG9uZykpOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIFBZX0xPTkdfTE9ORykpOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgc2l6ZV90KSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCB1bnNpZ25lZCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgICAgICBtYWtlZm10KGZtdCwgMCwgMCwgMCwgemVyb3BhZCwgd2lkdGgsIHByZWNpc2lvbiwgJ2knKTsKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHJlYWxidWZmZXIsIGZtdCwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocmVhbGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgbWFrZWZtdChmbXQsIDAsIDAsIDAsIHplcm9wYWQsIHdpZHRoLCBwcmVjaXNpb24sICd4Jyk7Ci0gICAgICAgICAgICAgICAgc3ByaW50ZihyZWFsYnVmZmVyLCBmbXQsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgYXBwZW5kc3RyaW5nKHJlYWxidWZmZXIpOworICAgICAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgLyogdW51c2VkLCBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCAqLworICAgICAgICAgICAgICAgIGlmICgqZiA9PSAncCcpCisgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcodmFyZ3MsIHZvaWQgKik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKHZhcmdzLCBpbnQpOworICAgICAgICAgICAgICAgIC8qIGV4dHJhY3QgdGhlIHJlc3VsdCBmcm9tIG51bWJlcnJlc3VsdHMgYW5kIGFwcGVuZC4gKi8KKyAgICAgICAgICAgICAgICBsZW4gPSBzdHJsZW4obnVtYmVycmVzdWx0KTsKKyAgICAgICAgICAgICAgICB1bmljb2RlX3dyaXRlX2NzdHIoc3RyaW5nLCBpLCBudW1iZXJyZXN1bHQsIGxlbik7CisgICAgICAgICAgICAgICAgLyogc2tpcCBvdmVyIHRoZSBzZXBhcmF0aW5nICdcMCcgKi8KKyAgICAgICAgICAgICAgICBpICs9IGxlbjsKKyAgICAgICAgICAgICAgICBudW1iZXJyZXN1bHQgKz0gbGVuOworICAgICAgICAgICAgICAgIGFzc2VydCgqbnVtYmVycmVzdWx0ID09ICdcMCcpOworICAgICAgICAgICAgICAgIG51bWJlcnJlc3VsdCsrOworICAgICAgICAgICAgICAgIGFzc2VydChudW1iZXJyZXN1bHQgPD0gbnVtYmVycmVzdWx0cyArIG51bWJlcnNpemUpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLyogdW51c2VkLCBzaW5jZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCAqLworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKHZhcmdzLCBjaGFyICopOwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShzLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqY2FsbHJlc3VsdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCkpOwotICAgICAgICAgICAgICAgIHMgKz0gUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KTsKKyAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKmNhbGxyZXN1bHQpOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCgqY2FsbHJlc3VsdCkgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCAqY2FsbHJlc3VsdCwgMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdW5pY29kZSgpL3JlcHIoKSA9PiBmb3JnZXQgaXQgKi8KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIC8qIHN3aXRjaCB0byBuZXh0IHVuaWNvZGUoKS9yZXByKCkgcmVzdWx0ICovCkBAIC0xMDgwLDIzICsyNzYyLDI5IEBACiAgICAgICAgICAgICBjYXNlICdVJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqID0gdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKTsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocywgUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzaXplOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQob2JqKSA8PSBQeVVuaWNvZGVfS0lORChzdHJpbmcpKTsKKyAgICAgICAgICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksIG9iaiwgMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgaSArPSBzaXplOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSAnVic6CiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmogPSB2YV9hcmcodmFyZ3MsIFB5T2JqZWN0ICopOwogICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgY29uc3QgY2hhciAqKTsKICAgICAgICAgICAgICAgICBpZiAob2JqKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvYmopOwotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocywgUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaik7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChvYmopIDw9IFB5VW5pY29kZV9LSU5EKHN0cmluZykpOworICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhzdHJpbmcsIGksIG9iaiwgMCwgc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocywgUHlVbmljb2RlX0FTX1VOSUNPREUoKmNhbGxyZXN1bHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KSk7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gUHlVbmljb2RlX0dFVF9TSVpFKCpjYWxscmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKCpjYWxscmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKCpjYWxscmVzdWx0KSA8PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHN0cmluZywgaSwgKmNhbGxyZXN1bHQsIDAsIHNpemUpOworICAgICAgICAgICAgICAgICAgICBpICs9IHNpemU7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRigqY2FsbHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICsrY2FsbHJlc3VsdDsKQEAgLTExMDYsNTIgKzI3OTQsNDQgQEAKICAgICAgICAgICAgIGNhc2UgJ1InOgogICAgICAgICAgICAgY2FzZSAnQSc6CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSAqdWNvcHk7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCB1c2l6ZTsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVwb3M7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKmNhbGxyZXN1bHQpOwogICAgICAgICAgICAgICAgIC8qIHVudXNlZCwgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgKi8KICAgICAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKHZhcmdzLCBQeU9iamVjdCAqKTsKLSAgICAgICAgICAgICAgICB1Y29weSA9IFB5VW5pY29kZV9BU19VTklDT0RFKCpjYWxscmVzdWx0KTsKLSAgICAgICAgICAgICAgICB1c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSgqY2FsbHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgZm9yICh1cG9zID0gMDsgdXBvczx1c2l6ZTspCi0gICAgICAgICAgICAgICAgICAgICpzKysgPSB1Y29weVt1cG9zKytdOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCgqY2FsbHJlc3VsdCkgPD0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKSk7CisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoc3RyaW5nLCBpLCAqY2FsbHJlc3VsdCwgMCwgIHNpemUpOworICAgICAgICAgICAgICAgIGkgKz0gc2l6ZTsKICAgICAgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhlIHVuaWNvZGUoKS9yZXByKCkgPT4gZm9yZ2V0IGl0ICovCiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKCpjYWxscmVzdWx0KTsKICAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gbmV4dCB1bmljb2RlKCkvcmVwcigpIHJlc3VsdCAqLwogICAgICAgICAgICAgICAgICsrY2FsbHJlc3VsdDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ3AnOgotICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXAiLCB2YV9hcmcodmFyZ3MsIHZvaWQqKSk7Ci0gICAgICAgICAgICAgICAgLyogJXAgaXMgaWxsLWRlZmluZWQ6ICBlbnN1cmUgbGVhZGluZyAweC4gKi8KLSAgICAgICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdYJykKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlclsxXSAhPSAneCcpIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtbW92ZShidWZmZXIrMiwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSsxKTsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyWzBdID0gJzAnOwotICAgICAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFwcGVuZHN0cmluZyhidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgKnMrKyA9ICclJzsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgaSsrLCAnJScpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBhcHBlbmRzdHJpbmcocCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBzdHJsZW4ocCk7CisgICAgICAgICAgICAgICAgdW5pY29kZV93cml0ZV9jc3RyKHN0cmluZywgaSwgcCwgbGVuKTsKKyAgICAgICAgICAgICAgICBpICs9IGxlbjsKKyAgICAgICAgICAgICAgICBhc3NlcnQoaSA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKTsKICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcysrID0gKmY7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGkgPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpKyssICpmKTsKKyAgICAgICAgfQogICAgIH0KKyAgICBhc3NlcnQoaSA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpKTsKIAogICBlbmQ6CiAgICAgaWYgKGNhbGxyZXN1bHRzKQogICAgICAgICBQeU9iamVjdF9GcmVlKGNhbGxyZXN1bHRzKTsKLSAgICBpZiAoYWJ1ZmZlcikKLSAgICAgICAgUHlPYmplY3RfRnJlZShhYnVmZmVyKTsKLSAgICBQeVVuaWNvZGVfUmVzaXplKCZzdHJpbmcsIHMgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJpbmcpKTsKLSAgICByZXR1cm4gc3RyaW5nOworICAgIGlmIChudW1iZXJyZXN1bHRzKQorICAgICAgICBQeU9iamVjdF9GcmVlKG51bWJlcnJlc3VsdHMpOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdChzdHJpbmcpOwogICBmYWlsOgogICAgIGlmIChjYWxscmVzdWx0cykgewogICAgICAgICBQeU9iamVjdCAqKmNhbGxyZXN1bHQyID0gY2FsbHJlc3VsdHM7CkBAIC0xMTYxLDEzICsyODQxLDExIEBACiAgICAgICAgIH0KICAgICAgICAgUHlPYmplY3RfRnJlZShjYWxscmVzdWx0cyk7CiAgICAgfQotICAgIGlmIChhYnVmZmVyKQotICAgICAgICBQeU9iamVjdF9GcmVlKGFidWZmZXIpOworICAgIGlmIChudW1iZXJyZXN1bHRzKQorICAgICAgICBQeU9iamVjdF9GcmVlKG51bWJlcnJlc3VsdHMpOwogICAgIHJldHVybiBOVUxMOwogfQogCi0jdW5kZWYgYXBwZW5kc3RyaW5nCi0KIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Gcm9tRm9ybWF0KGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewpAQCAtMTE4NCw2ICsyODYyLDggQEAKICAgICByZXR1cm4gcmV0OwogfQogCisjaWZkZWYgSEFWRV9XQ0hBUl9ICisKIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgUHlVbmljb2RlX0FzV2lkZUNoYXIoKSBhbmQgUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoKToKICAgIGNvbnZlcnQgYSBVbmljb2RlIG9iamVjdCB0byBhIHdpZGUgY2hhcmFjdGVyIHN0cmluZy4KIApAQCAtMTE5NCwxMDMgKzI4NzQsMjcgQEAKICAgICAgY2hhcmFjdGVyKSB3cml0dGVuIGludG8gdy4gV3JpdGUgYXQgbW9zdCBzaXplIHdpZGUgY2hhcmFjdGVycyAoaW5jbHVkaW5nCiAgICAgIHRoZSBudWxsIGNoYXJhY3RlcikuICovCiBzdGF0aWMgUHlfc3NpemVfdAotdW5pY29kZV9hc3dpZGVjaGFyKFB5VW5pY29kZU9iamVjdCAqdW5pY29kZSwKK3VuaWNvZGVfYXN3aWRlY2hhcihQeU9iamVjdCAqdW5pY29kZSwKICAgICAgICAgICAgICAgICAgICB3Y2hhcl90ICp3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSNpZiBQeV9VTklDT0RFX1NJWkUgPT0gU0laRU9GX1dDSEFSX1QKICAgICBQeV9zc2l6ZV90IHJlczsKKyAgICBjb25zdCB3Y2hhcl90ICp3c3RyOworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHVuaWNvZGUsICZyZXMpOworICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKwogICAgIGlmICh3ICE9IE5VTEwpIHsKLSAgICAgICAgcmVzID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpOwogICAgICAgICBpZiAoc2l6ZSA+IHJlcykKICAgICAgICAgICAgIHNpemUgPSByZXMgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBzaXplOwotICAgICAgICBtZW1jcHkodywgdW5pY29kZS0+c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgUHlfTUVNQ1BZKHcsIHdzdHIsIHNpemUgKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSkgKyAxOwotI2VsaWYgUHlfVU5JQ09ERV9TSVpFID09IDIgJiYgU0laRU9GX1dDSEFSX1QgPT0gNAotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnU7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqdWVuZDsKLSAgICBjb25zdCB3Y2hhcl90ICp3b3JpZywgKndlbmQ7Ci0gICAgUHlfc3NpemVfdCBuY2hhcjsKLQotICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICB1ZW5kID0gdSArIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKTsKLSAgICBpZiAodyAhPSBOVUxMKSB7Ci0gICAgICAgIHdvcmlnID0gdzsKLSAgICAgICAgd2VuZCA9IHcgKyBzaXplOwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kICYmIHcgIT0gd2VuZCkgewotICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSB1WzBdICYmIHVbMF0gPD0gMHhEQkZGCi0gICAgICAgICAgICAgICAgJiYgMHhEQzAwIDw9IHVbMV0gJiYgdVsxXSA8PSAweERGRkYpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKncgPSAoKCh1WzBdICYgMHgzRkYpIDw8IDEwKSB8ICh1WzFdICYgMHgzRkYpKSArIDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgdSArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgKncgPSAqdTsKLSAgICAgICAgICAgICAgICB1Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3Kys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHcgIT0gd2VuZCkKLSAgICAgICAgICAgICp3ID0gTCdcMCc7Ci0gICAgICAgIHJldHVybiB3IC0gd29yaWc7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBuY2hhciA9IDE7IC8qIG51bGwgY2hhcmFjdGVyIGF0IHRoZSBlbmQgKi8KLSAgICAgICAgd2hpbGUgKHUgIT0gdWVuZCkgewotICAgICAgICAgICAgaWYgKDB4RDgwMCA8PSB1WzBdICYmIHVbMF0gPD0gMHhEQkZGCi0gICAgICAgICAgICAgICAgJiYgMHhEQzAwIDw9IHVbMV0gJiYgdVsxXSA8PSAweERGRkYpCi0gICAgICAgICAgICAgICAgdSArPSAyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHUrKzsKLSAgICAgICAgICAgIG5jaGFyKys7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5jaGFyOwotI2VsaWYgUHlfVU5JQ09ERV9TSVpFID09IDQgJiYgU0laRU9GX1dDSEFSX1QgPT0gMgotICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKnUsICp1ZW5kLCBvcmRpbmFsOwotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgaTsKLSAgICB3Y2hhcl90ICp3b3JpZywgKndlbmQ7Ci0gICAgUHlfc3NpemVfdCBuY2hhcjsKLQotICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKLSAgICB1ZW5kID0gdSArIFB5VW5pY29kZV9HRVRfU0laRSh1KTsKLSAgICBpZiAodyAhPSBOVUxMKSB7Ci0gICAgICAgIHdvcmlnID0gdzsKLSAgICAgICAgd2VuZCA9IHcgKyBzaXplOwotICAgICAgICB3aGlsZSAodSAhPSB1ZW5kICYmIHcgIT0gd2VuZCkgewotICAgICAgICAgICAgb3JkaW5hbCA9ICp1OwotICAgICAgICAgICAgaWYgKG9yZGluYWwgPiAweGZmZmYpIHsKLSAgICAgICAgICAgICAgICBvcmRpbmFsIC09IDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgKncrKyA9IDB4RDgwMCB8IChvcmRpbmFsID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqdysrID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKncrKyA9IG9yZGluYWw7Ci0gICAgICAgICAgICB1Kys7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHcgIT0gd2VuZCkKLSAgICAgICAgICAgICp3ID0gMDsKLSAgICAgICAgcmV0dXJuIHcgLSB3b3JpZzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG5jaGFyID0gMTsgLyogbnVsbCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgd2hpbGUgKHUgIT0gdWVuZCkgewotICAgICAgICAgICAgaWYgKCp1ID4gMHhmZmZmKQotICAgICAgICAgICAgICAgIG5jaGFyICs9IDI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmNoYXIrKzsKLSAgICAgICAgICAgIHUrKzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbmNoYXI7Ci0gICAgfQotI2Vsc2UKLSMgIGVycm9yICJ1bnN1cHBvcnRlZCB3Y2hhcl90IGFuZCBQeV9VTklDT0RFIHNpemVzLCBzZWUgaXNzdWUgIzg2NzAiCi0jZW5kaWYKKyAgICAgICAgcmV0dXJuIHJlcyArIDE7CiB9CiAKIFB5X3NzaXplX3QKQEAgLTEzMDIsNyArMjkwNiw3IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHJldHVybiB1bmljb2RlX2Fzd2lkZWNoYXIoKFB5VW5pY29kZU9iamVjdCopdW5pY29kZSwgdywgc2l6ZSk7CisgICAgcmV0dXJuIHVuaWNvZGVfYXN3aWRlY2hhcih1bmljb2RlLCB3LCBzaXplKTsKIH0KIAogd2NoYXJfdCoKQEAgLTEzMTcsNyArMjkyMSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGJ1ZmxlbiA9IHVuaWNvZGVfYXN3aWRlY2hhcigoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZSwgTlVMTCwgMCk7CisgICAgYnVmbGVuID0gdW5pY29kZV9hc3dpZGVjaGFyKHVuaWNvZGUsIE5VTEwsIDApOworICAgIGlmIChidWZsZW4gPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQWV9TU0laRV9UX01BWCAvIHNpemVvZih3Y2hhcl90KSA8IGJ1ZmxlbikgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMjgsNTAgKzI5MzQsNTQgQEAKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGJ1ZmxlbiA9IHVuaWNvZGVfYXN3aWRlY2hhcigoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZSwgYnVmZmVyLCBidWZsZW4pOworICAgIGJ1ZmxlbiA9IHVuaWNvZGVfYXN3aWRlY2hhcih1bmljb2RlLCBidWZmZXIsIGJ1Zmxlbik7CisgICAgaWYgKGJ1ZmxlbiA9PSAtMSkgeworICAgICAgICBQeU1lbV9GUkVFKGJ1ZmZlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoc2l6ZSAhPSBOVUxMKQogICAgICAgICAqc2l6ZSA9IGJ1ZmxlbjsKICAgICByZXR1cm4gYnVmZmVyOwogfQogCi0jZW5kaWYKKyNlbmRpZiAvKiBIQVZFX1dDSEFSX0ggKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Gcm9tT3JkaW5hbChpbnQgb3JkaW5hbCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tT3JkaW5hbChpbnQgb3JkaW5hbCkKIHsKLSAgICBQeV9VTklDT0RFIHNbMl07Ci0KLSAgICBpZiAob3JkaW5hbCA8IDAgfHwgb3JkaW5hbCA+IDB4MTBmZmZmKSB7CisgICAgUHlPYmplY3QgKnY7CisgICAgaWYgKG9yZGluYWwgPCAwIHx8IG9yZGluYWwgPiBNQVhfVU5JQ09ERSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjaHIoKSBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaWYgKG9yZGluYWwgPiAweGZmZmYpIHsKLSAgICAgICAgb3JkaW5hbCAtPSAweDEwMDAwOwotICAgICAgICBzWzBdID0gMHhEODAwIHwgKG9yZGluYWwgPj4gMTApOwotICAgICAgICBzWzFdID0gMHhEQzAwIHwgKG9yZGluYWwgJiAweDNGRik7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgMik7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKG9yZGluYWwgPCAyNTYpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIob3JkaW5hbCk7CiAKLSAgICBzWzBdID0gKFB5X1VOSUNPREUpb3JkaW5hbDsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIDEpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KDEsIG9yZGluYWwpOworICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORCh2KSwgUHlVbmljb2RlX0RBVEEodiksIDAsIG9yZGluYWwpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOworICAgIHJldHVybiB2OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21PYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaikKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Gcm9tT2JqZWN0KHJlZ2lzdGVyIFB5T2JqZWN0ICpvYmopCiB7CiAgICAgLyogWFhYIFBlcmhhcHMgd2Ugc2hvdWxkIG1ha2UgdGhpcyBBUEkgYW4gYWxpYXMgb2YKICAgICAgICBQeU9iamVjdF9TdHIoKSBpbnN0ZWFkID8hICovCiAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIFB5X0lOQ1JFRihvYmopOwogICAgICAgICByZXR1cm4gb2JqOwogICAgIH0KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKICAgICAgICAgLyogRm9yIGEgVW5pY29kZSBzdWJ0eXBlIHRoYXQncyBub3QgYSBVbmljb2RlIG9iamVjdCwKICAgICAgICAgICAgcmV0dXJuIGEgdHJ1ZSBVbmljb2RlIG9iamVjdCB3aXRoIHRoZSBzYW1lIGRhdGEuICovCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUob2JqKSk7CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0NvcHkob2JqKTsKICAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgIkNhbid0IGNvbnZlcnQgJyUuMTAwcycgb2JqZWN0IHRvIHN0ciBpbXBsaWNpdGx5IiwKQEAgLTEzNzksOSArMjk4OSwxMCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0KHJlZ2lzdGVyIFB5T2JqZWN0ICpvYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QocmVnaXN0ZXIgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlfYnVmZmVyIGJ1ZmZlcjsKICAgICBQeU9iamVjdCAqdjsKQEAgLTEzOTUsNyArMzAwNiw3IEBACiAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sob2JqKSkgewogICAgICAgICBpZiAoUHlCeXRlc19HRVRfU0laRShvYmopID09IDApIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKLSAgICAgICAgICAgIHYgPSAoUHlPYmplY3QgKikgdW5pY29kZV9lbXB0eTsKKyAgICAgICAgICAgIHYgPSB1bmljb2RlX2VtcHR5OwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGUoCkBAIC0xNDIyLDcgKzMwMzMsNyBAQAogCiAgICAgaWYgKGJ1ZmZlci5sZW4gPT0gMCkgewogICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgIHYgPSAoUHlPYmplY3QgKikgdW5pY29kZV9lbXB0eTsKKyAgICAgICAgdiA9IHVuaWNvZGVfZW1wdHk7CiAgICAgfQogICAgIGVsc2UKICAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGUoKGNoYXIqKSBidWZmZXIuYnVmLCBidWZmZXIubGVuLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTE0NDMsNiArMzA1NCwxMCBAQAogICAgIGNoYXIgKmw7CiAgICAgY2hhciAqbF9lbmQ7CiAKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICBzdHJjcHkobG93ZXIsICJ1dGYtOCIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CiAgICAgZSA9IGVuY29kaW5nOwogICAgIGwgPSBsb3dlcjsKICAgICBsX2VuZCA9ICZsb3dlcltsb3dlcl9sZW4gLSAxXTsKQEAgLTE0NjQsMjYgKzMwNzksMjYgQEAKICAgICByZXR1cm4gMTsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEwsICp1bmljb2RlOwogICAgIFB5X2J1ZmZlciBpbmZvOwogICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQotICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLQogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCiAgICAgaWYgKG5vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjgocywgc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgaWYgKChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApIHx8CisgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAidXRmOCIpID09IDApKQorICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKICAgICAgICAgZWxzZSBpZiAoKHN0cmNtcChsb3dlciwgImxhdGluLTEiKSA9PSAwKSB8fAorICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCkgfHwKICAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzby04ODU5LTEiKSA9PSAwKSkKICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7CiAjZW5kaWYKQEAgLTE1MTMsMTYgKzMxMjgsMTcgQEAKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KICAgICBQeV9ERUNSRUYoYnVmZmVyKTsKLSAgICByZXR1cm4gdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGJ1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0KFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIFB5T2JqZWN0ICp2OwogCkBAIC0xNTM4LDE1ICszMTU0LDE2IEBACiAgICAgdiA9IFB5Q29kZWNfRGVjb2RlKHVuaWNvZGUsIGVuY29kaW5nLCBlcnJvcnMpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICByZXR1cm4gdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7CiAKQEAgLTE1NjksMTYgKzMxODYsMTcgQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQotICAgIHJldHVybiB2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICBvbkVycm9yOgogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZShjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlKGNvbnN0IFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdiwgKnVuaWNvZGU7CiAKQEAgLTE1OTAsOSArMzIwOCwxMCBAQAogICAgIHJldHVybiB2OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdChQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTYxNCwxNyArMzIzMywxOTIgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorc3RhdGljIHNpemVfdAord2NzdG9tYnNfZXJyb3Jwb3MoY29uc3Qgd2NoYXJfdCAqd3N0cikKK3sKKyAgICBzaXplX3QgbGVuOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICB3Y2hhcl90IGJ1ZlszXTsKKyNlbHNlCisgICAgd2NoYXJfdCBidWZbMl07CisjZW5kaWYKKyAgICBjaGFyIG91dGJ1ZltNQl9MRU5fTUFYXTsKKyAgICBjb25zdCB3Y2hhcl90ICpzdGFydCwgKnByZXZpb3VzOworCisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgIGJ1ZlsyXSA9IDA7CisjZWxzZQorICAgIGJ1ZlsxXSA9IDA7CisjZW5kaWYKKyAgICBzdGFydCA9IHdzdHI7CisgICAgd2hpbGUgKCp3c3RyICE9IEwnXDAnKQorICAgIHsKKyAgICAgICAgcHJldmlvdXMgPSB3c3RyOworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDIKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUod3N0clswXSkKKyAgICAgICAgICAgICYmIFB5X1VOSUNPREVfSVNfTE9XX1NVUlJPR0FURSh3c3RyWzFdKSkKKyAgICAgICAgeworICAgICAgICAgICAgYnVmWzBdID0gd3N0clswXTsKKyAgICAgICAgICAgIGJ1ZlsxXSA9IHdzdHJbMV07CisgICAgICAgICAgICB3c3RyICs9IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZbMF0gPSAqd3N0cjsKKyAgICAgICAgICAgIGJ1ZlsxXSA9IDA7CisgICAgICAgICAgICB3c3RyKys7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGJ1ZlswXSA9ICp3c3RyOworICAgICAgICB3c3RyKys7CisjZW5kaWYKKyAgICAgICAgbGVuID0gd2NzdG9tYnMob3V0YnVmLCBidWYsIHNpemVvZihvdXRidWYpKTsKKyAgICAgICAgaWYgKGxlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzIC0gc3RhcnQ7CisgICAgfQorCisgICAgLyogZmFpbGVkIHRvIGZpbmQgdGhlIHVuZW5jb2RhYmxlIGNoYXJhY3RlciAqLworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citsb2NhbGVfZXJyb3JfaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIGludCAqc3Vycm9nYXRlZXNjYXBlKQoreworICAgIGlmIChlcnJvcnMgPT0gTlVMTCkgeworICAgICAgICAqc3Vycm9nYXRlZXNjYXBlID0gMDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJzdXJyb2dhdGVlc2NhcGUiKSA9PSAwKSB7CisgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAxOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCisgICAgICAgICAgICAgICAgICJhcmUgc3VwcG9ydGVkLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgcmV0dXJuIC0xOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCB3bGVuLCB3bGVuMjsKKyAgICB3Y2hhcl90ICp3c3RyOworICAgIFB5T2JqZWN0ICpieXRlcyA9IE5VTEw7CisgICAgY2hhciAqZXJybXNnOworICAgIFB5T2JqZWN0ICpyZWFzb247CisgICAgUHlPYmplY3QgKmV4YzsKKyAgICBzaXplX3QgZXJyb3JfcG9zOworICAgIGludCBzdXJyb2dhdGVlc2NhcGU7CisKKyAgICBpZiAobG9jYWxlX2Vycm9yX2hhbmRsZXIoZXJyb3JzLCAmc3Vycm9nYXRlZXNjYXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHVuaWNvZGUsICZ3bGVuKTsKKyAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHdsZW4yID0gd2NzbGVuKHdzdHIpOworICAgIGlmICh3bGVuMiAhPSB3bGVuKSB7CisgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc3Vycm9nYXRlZXNjYXBlKSB7CisgICAgICAgIC8qIGxvY2FsZSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZSAqLworICAgICAgICBjaGFyICpzdHI7CisKKyAgICAgICAgc3RyID0gX1B5X3djaGFyMmNoYXIod3N0ciwgJmVycm9yX3Bvcyk7CisgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKGVycm9yX3BvcyA9PSAoc2l6ZV90KS0xKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZ290byBlbmNvZGVfZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKworICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZyhzdHIpOworICAgICAgICBQeU1lbV9GcmVlKHN0cik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzaXplX3QgbGVuLCBsZW4yOworCisgICAgICAgIGxlbiA9IHdjc3RvbWJzKE5VTEwsIHdzdHIsIDApOworICAgICAgICBpZiAobGVuID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgIGVycm9yX3BvcyA9IChzaXplX3QpLTE7CisgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgfQorCisgICAgICAgIGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4pOworICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgbGVuMiA9IHdjc3RvbWJzKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgd3N0ciwgbGVuKzEpOworICAgICAgICBpZiAobGVuMiA9PSAoc2l6ZV90KS0xIHx8IGxlbjIgPiBsZW4pIHsKKyAgICAgICAgICAgIGVycm9yX3BvcyA9IChzaXplX3QpLTE7CisgICAgICAgICAgICBnb3RvIGVuY29kZV9lcnJvcjsKKyAgICAgICAgfQorICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7CisKK2VuY29kZV9lcnJvcjoKKyAgICBlcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisgICAgYXNzZXJ0KGVycm1zZyAhPSBOVUxMKTsKKworICAgIGlmIChlcnJvcl9wb3MgPT0gKHNpemVfdCktMSkKKyAgICAgICAgZXJyb3JfcG9zID0gd2NzdG9tYnNfZXJyb3Jwb3Mod3N0cik7CisKKyAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgIFB5X1hERUNSRUYoYnl0ZXMpOworCisgICAgaWYgKGVycm1zZyAhPSBOVUxMKSB7CisgICAgICAgIHNpemVfdCBlcnJsZW47CisgICAgICAgIHdzdHIgPSBfUHlfY2hhcjJ3Y2hhcihlcnJtc2csICZlcnJsZW4pOworICAgICAgICBpZiAod3N0ciAhPSBOVUxMKSB7CisgICAgICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKHdzdHIsIGVycmxlbik7CisgICAgICAgICAgICBQeU1lbV9GcmVlKHdzdHIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGVycm1zZyA9IE5VTEw7CisgICAgfQorICAgIGlmIChlcnJtc2cgPT0gTlVMTCkKKyAgICAgICAgcmVhc29uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAid2NzdG9tYnMoKSBlbmNvdW50ZXJlZCBhbiB1bmVuY29kYWJsZSAiCisgICAgICAgICAgICAid2lkZSBjaGFyYWN0ZXIiKTsKKyAgICBpZiAocmVhc29uID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZXhjID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciwgInNPbm5PIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsZSIsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KWVycm9yX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGVycm9yX3BvcysxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKTsKKyAgICBQeV9ERUNSRUYocmVhc29uKTsKKyAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKwogUHlPYmplY3QgKgogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZU1CQ1MoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisjaWZkZWYgSEFWRV9NQkNTCisgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIE5VTEwpOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogI2Vsc2UKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICAvKiBCb290c3RyYXAgY2hlY2s6IGlmIHRoZSBmaWxlc3lzdGVtIGNvZGVjIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiwgd2UKQEAgLTE2NDIsNDYgKzM0MzYsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgLyogbG9jYWxlIGVuY29kaW5nIHdpdGggc3Vycm9nYXRlZXNjYXBlICovCi0gICAgICAgIHdjaGFyX3QgKndjaGFyOwotICAgICAgICBjaGFyICpieXRlczsKLSAgICAgICAgUHlPYmplY3QgKmJ5dGVzX29iajsKLSAgICAgICAgc2l6ZV90IGVycm9yX3BvczsKLQotICAgICAgICB3Y2hhciA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwotICAgICAgICBpZiAod2NoYXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBieXRlcyA9IF9QeV93Y2hhcjJjaGFyKHdjaGFyLCAmZXJyb3JfcG9zKTsKLSAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChlcnJvcl9wb3MgIT0gKHNpemVfdCktMSkgewotICAgICAgICAgICAgICAgIGNoYXIgKmVycm1zZyA9IHN0cmVycm9yKGVycm5vKTsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICAgICAgICAgICAgICBpZiAoZXJybXNnID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgIGVycm1zZyA9ICJQeV93Y2hhcjJjaGFyKCkgZmFpbGVkIjsKLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsCi0gICAgICAgICAgICAgICAgICAgICJmaWxlc3lzdGVtZW5jb2RpbmciLAotICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICBlcnJvcl9wb3MsIGVycm9yX3BvcysxLAotICAgICAgICAgICAgICAgICAgICBlcnJtc2cpOwotICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgUHlNZW1fRnJlZSh3Y2hhcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICBQeU1lbV9GcmVlKHdjaGFyKTsKLQotICAgICAgICBieXRlc19vYmogPSBQeUJ5dGVzX0Zyb21TdHJpbmcoYnl0ZXMpOwotICAgICAgICBQeU1lbV9GcmVlKGJ5dGVzKTsKLSAgICAgICAgcmV0dXJuIGJ5dGVzX29iajsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICNlbmRpZgogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBjaGFyIGxvd2VyWzExXTsgIC8qIEVub3VnaCBmb3IgYW55IGVuY29kaW5nIHNob3J0Y3V0ICovCkBAIC0xNjkxLDQ2ICszNDU0LDI3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQotICAgICAgICBlbmNvZGluZyA9IFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLQogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCiAgICAgaWYgKG5vcm1hbGl6ZV9lbmNvZGluZyhlbmNvZGluZywgbG93ZXIsIHNpemVvZihsb3dlcikpKSB7Ci0gICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtOCIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZVVURjgoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIGlmICgoc3RyY21wKGxvd2VyLCAidXRmLTgiKSA9PSAwKSB8fAorICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgInV0ZjgiKSA9PSAwKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9ycyA9PSBOVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgfQogICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8CisgICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAogICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMYXRpbjEoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyNpZmRlZiBIQVZFX01CQ1MKICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZU1CQ1MoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKICNlbmRpZgogICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CiAgICAgfQotICAgIC8qIER1cmluZyBib290c3RyYXAsIHdlIG1heSBuZWVkIHRvIGZpbmQgdGhlIGVuY29kaW5ncwotICAgICAgIHBhY2thZ2UsIHRvIGxvYWQgdGhlIGZpbGUgc3lzdGVtIGVuY29kaW5nLCBhbmQgcmVxdWlyZSB0aGUKLSAgICAgICBmaWxlIHN5c3RlbSBlbmNvZGluZyBpbiBvcmRlciB0byBsb2FkIHRoZSBlbmNvZGluZ3MKLSAgICAgICBwYWNrYWdlLgotCi0gICAgICAgQnJlYWsgb3V0IG9mIHRoaXMgZGVwZW5kZW5jeSBieSBhc3N1bWluZyB0aGF0IHRoZSBwYXRoIHRvCi0gICAgICAgdGhlIGVuY29kaW5ncyBtb2R1bGUgaXMgQVNDSUktb25seS4gIFhYWCBjb3VsZCB0cnkgd2NzdG9tYnMKLSAgICAgICBpbnN0ZWFkLCBpZiB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgaXMgdGhlIGxvY2FsZSdzCi0gICAgICAgZW5jb2RpbmcuICovCi0gICAgaWYgKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgJiYKLSAgICAgICAgICAgICBzdHJjbXAoZW5jb2RpbmcsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpID09IDAgJiYKLSAgICAgICAgICAgICAhUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5jb2RlY3NfaW5pdGlhbGl6ZWQpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CiAKICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLwogICAgIHYgPSBQeUNvZGVjX0VuY29kZSh1bmljb2RlLCBlbmNvZGluZywgZXJyb3JzKTsKQEAgLTE3NjYsOSArMzUxMCwxMCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBQeU9iamVjdCAqdjsKIApAQCAtMTc5NywyNCArMzU0MiwxNTEgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKl9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorc3RhdGljIHNpemVfdAorbWJzdG93Y3NfZXJyb3Jwb3MoY29uc3QgY2hhciAqc3RyLCBzaXplX3QgbGVuKQogewotICAgIFB5T2JqZWN0ICp2ID0gKChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlKS0+ZGVmZW5jOwotICAgIGlmICh2KQotICAgICAgICByZXR1cm4gdjsKLSAgICBpZiAoZXJyb3JzICE9IE5VTEwpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIm5vbi1OVUxMIGVuY29kaW5nIGluIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyIpOwotICAgIHYgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICBpZiAoIXYpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgICgoUHlVbmljb2RlT2JqZWN0ICopdW5pY29kZSktPmRlZmVuYyA9IHY7Ci0gICAgcmV0dXJuIHY7CisjaWZkZWYgSEFWRV9NQlJUT1dDCisgICAgY29uc3QgY2hhciAqc3RhcnQgPSBzdHI7CisgICAgbWJzdGF0ZV90IG1iczsKKyAgICBzaXplX3QgY29udmVydGVkOworICAgIHdjaGFyX3QgY2g7CisKKyAgICBtZW1zZXQoJm1icywgMCwgc2l6ZW9mIG1icyk7CisgICAgd2hpbGUgKGxlbikKKyAgICB7CisgICAgICAgIGNvbnZlcnRlZCA9IG1icnRvd2MoJmNoLCAoY2hhciopc3RyLCBsZW4sICZtYnMpOworICAgICAgICBpZiAoY29udmVydGVkID09IDApCisgICAgICAgICAgICAvKiBSZWFjaGVkIGVuZCBvZiBzdHJpbmcgKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoY29udmVydGVkID09IChzaXplX3QpLTEgfHwgY29udmVydGVkID09IChzaXplX3QpLTIpIHsKKyAgICAgICAgICAgIC8qIENvbnZlcnNpb24gZXJyb3Igb3IgaW5jb21wbGV0ZSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgICAgIHJldHVybiBzdHIgLSBzdGFydDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0ciArPSBjb252ZXJ0ZWQ7CisgICAgICAgICAgICBsZW4gLT0gY29udmVydGVkOworICAgICAgICB9CisgICAgfQorICAgIC8qIGZhaWxlZCB0byBmaW5kIHRoZSB1bmRlY29kYWJsZSBieXRlIHNlcXVlbmNlICovCisgICAgcmV0dXJuIDA7CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAogUHlPYmplY3QqCitQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIHdjaGFyX3Qgc21hbGxidWZbMjU2XTsKKyAgICBzaXplX3Qgc21hbGxidWZfbGVuID0gUHlfQVJSQVlfTEVOR1RIKHNtYWxsYnVmKTsKKyAgICB3Y2hhcl90ICp3c3RyOworICAgIHNpemVfdCB3bGVuLCB3bGVuMjsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKKyAgICBpbnQgc3Vycm9nYXRlZXNjYXBlOworICAgIHNpemVfdCBlcnJvcl9wb3M7CisgICAgY2hhciAqZXJybXNnOworICAgIFB5T2JqZWN0ICpyZWFzb24sICpleGM7CisKKyAgICBpZiAobG9jYWxlX2Vycm9yX2hhbmRsZXIoZXJyb3JzLCAmc3Vycm9nYXRlZXNjYXBlKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHN0cltsZW5dICE9ICdcMCcgfHwgbGVuICE9IHN0cmxlbihzdHIpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbWJlZGRlZCBudWxsIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc3Vycm9nYXRlZXNjYXBlKQorICAgIHsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKHN0ciwgJndsZW4pOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAod2xlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCB3bGVuKTsKKyAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisjaWZuZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCisgICAgICAgIHdsZW4gPSBtYnN0b3djcyhOVUxMLCBzdHIsIDApOworI2Vsc2UKKyAgICAgICAgd2xlbiA9IGxlbjsKKyNlbmRpZgorICAgICAgICBpZiAod2xlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICAgICAgZ290byBkZWNvZGVfZXJyb3I7CisgICAgICAgIGlmICh3bGVuKzEgPD0gc21hbGxidWZfbGVuKSB7CisgICAgICAgICAgICB3c3RyID0gc21hbGxidWY7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAod2xlbiA+IFBZX1NTSVpFX1RfTUFYIC8gc2l6ZW9mKHdjaGFyX3QpIC0gMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKworICAgICAgICAgICAgd3N0ciA9IFB5TWVtX01hbGxvYygod2xlbisxKSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgICAgICBpZiAoIXdzdHIpCisgICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIH0KKworICAgICAgICAvKiBUaGlzIHNob3VsZG4ndCBmYWlsIG5vdyAqLworICAgICAgICB3bGVuMiA9IG1ic3Rvd2NzKHdzdHIsIHN0ciwgd2xlbisxKTsKKyAgICAgICAgaWYgKHdsZW4yID09IChzaXplX3QpLTEpIHsKKyAgICAgICAgICAgIGlmICh3c3RyICE9IHNtYWxsYnVmKQorICAgICAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgICAgICBnb3RvIGRlY29kZV9lcnJvcjsKKyAgICAgICAgfQorI2lmZGVmIEhBVkVfQlJPS0VOX01CU1RPV0NTCisgICAgICAgIGFzc2VydCh3bGVuMiA9PSB3bGVuKTsKKyNlbmRpZgorICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3c3RyLCB3bGVuMik7CisgICAgICAgIGlmICh3c3RyICE9IHNtYWxsYnVmKQorICAgICAgICAgICAgUHlNZW1fRnJlZSh3c3RyKTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGU7CisKK2RlY29kZV9lcnJvcjoKKyAgICBlcnJtc2cgPSBzdHJlcnJvcihlcnJubyk7CisgICAgYXNzZXJ0KGVycm1zZyAhPSBOVUxMKTsKKworICAgIGVycm9yX3BvcyA9IG1ic3Rvd2NzX2Vycm9ycG9zKHN0ciwgbGVuKTsKKyAgICBpZiAoZXJybXNnICE9IE5VTEwpIHsKKyAgICAgICAgc2l6ZV90IGVycmxlbjsKKyAgICAgICAgd3N0ciA9IF9QeV9jaGFyMndjaGFyKGVycm1zZywgJmVycmxlbik7CisgICAgICAgIGlmICh3c3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJlYXNvbiA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIod3N0ciwgZXJybGVuKTsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUod3N0cik7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgZXJybXNnID0gTlVMTDsKKyAgICB9CisgICAgaWYgKGVycm1zZyA9PSBOVUxMKQorICAgICAgICByZWFzb24gPSBQeVVuaWNvZGVfRnJvbVN0cmluZygKKyAgICAgICAgICAgICJtYnN0b3djcygpIGVuY291bnRlcmVkIGFuIGludmFsaWQgbXVsdGlieXRlIHNlcXVlbmNlIik7CisgICAgaWYgKHJlYXNvbiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGV4YyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IsICJzeSNubk8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9jYWxlIiwgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9zc2l6ZV90KWVycm9yX3BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGVycm9yX3BvcysxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uKTsKKyAgICBQeV9ERUNSRUYocmVhc29uKTsKKyAgICBpZiAoZXhjICE9IE5VTEwpIHsKKyAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgUHlfWERFQ1JFRihleGMpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKGNvbnN0IGNoYXIgKnN0ciwgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZSA9IChQeV9zc2l6ZV90KXN0cmxlbihzdHIpOworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlQW5kU2l6ZShzdHIsIHNpemUsIGVycm9ycyk7Cit9CisKKworUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpIHsKICAgICBQeV9zc2l6ZV90IHNpemUgPSAoUHlfc3NpemVfdClzdHJsZW4ocyk7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplKHMsIHNpemUpOwpAQCAtMTgyMywxMCArMzY5NSwxMCBAQAogUHlPYmplY3QqCiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiBkZWZpbmVkKEhBVkVfVVNBQkxFX1dDSEFSX1QpCisjaWZkZWYgSEFWRV9NQkNTCiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIE5VTEwpOwogI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCAic3Vycm9nYXRlZXNjYXBlIiwgTlVMTCk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMTg0NCwyMyArMzcxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXJyb2dhdGVlc2NhcGUiKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIC8qIGxvY2FsZSBlbmNvZGluZyB3aXRoIHN1cnJvZ2F0ZWVzY2FwZSAqLwotICAgICAgICB3Y2hhcl90ICp3Y2hhcjsKLSAgICAgICAgUHlPYmplY3QgKnVuaWNvZGU7Ci0gICAgICAgIHNpemVfdCBsZW47Ci0KLSAgICAgICAgaWYgKHNbc2l6ZV0gIT0gJ1wwJyB8fCBzaXplICE9IHN0cmxlbihzKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0KLSAgICAgICAgd2NoYXIgPSBfUHlfY2hhcjJ3Y2hhcihzLCAmbGVuKTsKLSAgICAgICAgaWYgKHdjaGFyID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLQotICAgICAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih3Y2hhciwgbGVuKTsKLSAgICAgICAgUHlNZW1fRnJlZSh3Y2hhcik7Ci0gICAgICAgIHJldHVybiB1bmljb2RlOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxvY2FsZUFuZFNpemUocywgc2l6ZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMTkyMywxMyArMzc3OSwxMyBAQAogUHlVbmljb2RlX0ZTRGVjb2RlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogewogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgc2l6ZTsKLSAgICB2b2lkICpkYXRhOwogICAgIGlmIChhcmcgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoKihQeU9iamVjdCoqKWFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBvdXRwdXQgPSBhcmc7CiAgICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOwogICAgIH0KQEAgLTE5NDgsOSArMzgwNCwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShvdXRwdXQpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXRwdXQpOwotICAgIGlmIChzaXplICE9IFB5X1VOSUNPREVfc3RybGVuKGRhdGEpKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihvdXRwdXQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGZpbmRjaGFyKFB5VW5pY29kZV9EQVRBKG91dHB1dCksIFB5VW5pY29kZV9LSU5EKG91dHB1dCksCisgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKG91dHB1dCksIDAsIDEpID49IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVtYmVkZGVkIE5VTCBjaGFyYWN0ZXIiKTsKICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7CiAgICAgICAgIHJldHVybiAwOwpAQCAtMTk2MSw0MCArMzgyMCwxNjYgQEAKIAogCiBjaGFyKgotX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnBzaXplKQorUHlVbmljb2RlX0FzVVRGOEFuZFNpemUoUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKnBzaXplKQogewogICAgIFB5T2JqZWN0ICpieXRlczsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyh1bmljb2RlLCBOVUxMKTsKLSAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocHNpemUgIT0gTlVMTCkKLSAgICAgICAgKnBzaXplID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKTsKKworICAgIGlmIChQeVVuaWNvZGVfVVRGOCh1bmljb2RlKSA9PSBOVUxMKSB7CisgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpOworICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsICJzdHJpY3QiKTsKKyAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgX1B5VW5pY29kZV9VVEY4KHVuaWNvZGUpID0gUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNfR0VUX1NJWkUoYnl0ZXMpICsgMSk7CisgICAgICAgIGlmIChfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgPSBQeUJ5dGVzX0dFVF9TSVpFKGJ5dGVzKTsKKyAgICAgICAgUHlfTUVNQ1BZKF9QeVVuaWNvZGVfVVRGOCh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwKKyAgICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkgKyAxKTsKKyAgICAgICAgUHlfREVDUkVGKGJ5dGVzKTsKKyAgICB9CisKKyAgICBpZiAocHNpemUpCisgICAgICAgICpwc2l6ZSA9IFB5VW5pY29kZV9VVEY4X0xFTkdUSCh1bmljb2RlKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1VURjgodW5pY29kZSk7CiB9CiAKIGNoYXIqCi1fUHlVbmljb2RlX0FzU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUodW5pY29kZSwgTlVMTCk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKHVuaWNvZGUsIE5VTEwpOwogfQogCi1QeV9VTklDT0RFICpQeVVuaWNvZGVfQXNVbmljb2RlKFB5T2JqZWN0ICp1bmljb2RlKQorUHlfVU5JQ09ERSAqCitQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCAqc2l6ZSkKIHsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpvbmVfYnl0ZTsKKyNpZiBTSVpFT0ZfV0NIQVJfVCA9PSA0CisgICAgY29uc3QgUHlfVUNTMiAqdHdvX2J5dGVzOworI2Vsc2UKKyAgICBjb25zdCBQeV9VQ1M0ICpmb3VyX2J5dGVzOworICAgIGNvbnN0IFB5X1VDUzQgKnVjczRfZW5kOworICAgIFB5X3NzaXplX3QgbnVtX3N1cnJvZ2F0ZXM7CisjZW5kaWYKKyAgICB3Y2hhcl90ICp3OworICAgIHdjaGFyX3QgKndjaGFyX2VuZDsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7Ci0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKKyAgICBpZiAoX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID09IE5VTEwpIHsKKyAgICAgICAgLyogTm9uLUFTQ0lJIGNvbXBhY3QgdW5pY29kZSBvYmplY3QgKi8KKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfS0lORCh1bmljb2RlKSAhPSAwKTsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh1bmljb2RlKSk7CiAKLSAgb25FcnJvcjoKLSAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gMgorICAgICAgICAgICAgZm91cl9ieXRlcyA9IFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgdWNzNF9lbmQgPSBmb3VyX2J5dGVzICsgX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSk7CisgICAgICAgICAgICBudW1fc3Vycm9nYXRlcyA9IDA7CisKKyAgICAgICAgICAgIGZvciAoOyBmb3VyX2J5dGVzIDwgdWNzNF9lbmQ7ICsrZm91cl9ieXRlcykgeworICAgICAgICAgICAgICAgIGlmICgqZm91cl9ieXRlcyA+IDB4RkZGRikKKyAgICAgICAgICAgICAgICAgICAgKytudW1fc3Vycm9nYXRlczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKikgUHlPYmplY3RfTUFMTE9DKAorICAgICAgICAgICAgICAgICAgICBzaXplb2Yod2NoYXJfdCkgKiAoX1B5VW5pY29kZV9MRU5HVEgodW5pY29kZSkgKyAxICsgbnVtX3N1cnJvZ2F0ZXMpKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSkgPSBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSArIG51bV9zdXJyb2dhdGVzOworCisgICAgICAgICAgICB3ID0gX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpOworICAgICAgICAgICAgd2NoYXJfZW5kID0gdyArIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgICAgICAgICBmb3VyX2J5dGVzID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSk7CisgICAgICAgICAgICBmb3IgKDsgZm91cl9ieXRlcyA8IHVjczRfZW5kOyArK2ZvdXJfYnl0ZXMsICsrdykgeworICAgICAgICAgICAgICAgIGlmICgqZm91cl9ieXRlcyA+IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoKmZvdXJfYnl0ZXMgPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgICAgICAgICAvKiBlbmNvZGUgc3Vycm9nYXRlIHBhaXIgaW4gdGhpcyBjYXNlICovCisgICAgICAgICAgICAgICAgICAgICp3KysgPSBQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKCpmb3VyX2J5dGVzKTsKKyAgICAgICAgICAgICAgICAgICAgKncgICA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURSgqZm91cl9ieXRlcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgKncgPSAqZm91cl9ieXRlczsKKworICAgICAgICAgICAgICAgIGlmICh3ID4gd2NoYXJfZW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJNaXNjYWxjdWxhdGVkIHN0cmluZyBlbmQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdyA9IDA7CisjZWxzZQorICAgICAgICAgICAgLyogc2l6ZW9mKHdjaGFyX3QpID09IDQgKi8KKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkltcG9zc2libGUgdW5pY29kZSBvYmplY3Qgc3RhdGUsIHdzdHIgYW5kIHN0ciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGQgc2hhcmUgbWVtb3J5IGFscmVhZHkuIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpID0gKHdjaGFyX3QgKikgUHlPYmplY3RfTUFMTE9DKHNpemVvZih3Y2hhcl90KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKSArIDEpKTsKKyAgICAgICAgICAgIGlmICghX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0lTX0NPTVBBQ1RfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKSA9IF9QeVVuaWNvZGVfTEVOR1RIKHVuaWNvZGUpOworICAgICAgICAgICAgdyA9IF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKKyAgICAgICAgICAgIHdjaGFyX2VuZCA9IHcgKyBfUHlVbmljb2RlX0xFTkdUSCh1bmljb2RlKTsKKworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgb25lX2J5dGUgPSBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBmb3IgKDsgdyA8IHdjaGFyX2VuZDsgKytvbmVfYnl0ZSwgKyt3KQorICAgICAgICAgICAgICAgICAgICAqdyA9ICpvbmVfYnl0ZTsKKyAgICAgICAgICAgICAgICAvKiBudWxsLXRlcm1pbmF0ZSB0aGUgd3N0ciAqLworICAgICAgICAgICAgICAgICp3ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAorICAgICAgICAgICAgICAgIHR3b19ieXRlcyA9IFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGZvciAoOyB3IDwgd2NoYXJfZW5kOyArK3R3b19ieXRlcywgKyt3KQorICAgICAgICAgICAgICAgICAgICAqdyA9ICp0d29fYnl0ZXM7CisgICAgICAgICAgICAgICAgLyogbnVsbC10ZXJtaW5hdGUgdGhlIHdzdHIgKi8KKyAgICAgICAgICAgICAgICAqdyA9IDA7CisjZWxzZQorICAgICAgICAgICAgICAgIC8qIHNpemVvZih3Y2hhcl90KSA9PSAyICovCisgICAgICAgICAgICAgICAgUHlPYmplY3RfRlJFRShfUHlVbmljb2RlX1dTVFIodW5pY29kZSkpOworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSA9IE5VTEw7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiSW1wb3NzaWJsZSB1bmljb2RlIG9iamVjdCBzdGF0ZSwgd3N0ciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIHN0ciBzaG91bGQgc2hhcmUgbWVtb3J5IGFscmVhZHkuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydCgwICYmICJUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4uIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHNpemUgIT0gTlVMTCkKKyAgICAgICAgKnNpemUgPSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgodW5pY29kZSk7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKTsKIH0KIAotUHlfc3NpemVfdCBQeVVuaWNvZGVfR2V0U2l6ZShQeU9iamVjdCAqdW5pY29kZSkKK1B5X1VOSUNPREUgKgorUHlVbmljb2RlX0FzVW5pY29kZShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICByZXR1cm4gUHlVbmljb2RlX0FzVW5pY29kZUFuZFNpemUodW5pY29kZSwgTlVMTCk7Cit9CisKKworUHlfc3NpemVfdAorUHlVbmljb2RlX0dldFNpemUoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKQEAgLTIwMDYsNyArMzk5MSw1NyBAQAogICAgIHJldHVybiAtMTsKIH0KIAotY29uc3QgY2hhciAqUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZyh2b2lkKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0dldExlbmd0aChQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7Cit9CisKK1B5X1VDUzQKK1B5VW5pY29kZV9SZWFkQ2hhcihQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBpbmRleCkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCBQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIChQeV9VQ1M0KS0xOworICAgIH0KKyAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gKFB5X1VDUzQpLTE7CisgICAgfQorICAgIHJldHVybiBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGluZGV4KTsKK30KKworaW50CitQeVVuaWNvZGVfV3JpdGVDaGFyKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LCBQeV9VQ1M0IGNoKQoreworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpIHx8ICFQeVVuaWNvZGVfSVNfQ09NUEFDVCh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGFzc2VydChQeVVuaWNvZGVfSVNfUkVBRFkodW5pY29kZSkpOworICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHVuaWNvZGVfY2hlY2tfbW9kaWZpYWJsZSh1bmljb2RlKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChjaCA+IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImNoYXJhY3RlciBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBQeVVuaWNvZGVfV1JJVEUoUHlVbmljb2RlX0tJTkQodW5pY29kZSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICBpbmRleCwgY2gpOworICAgIHJldHVybiAwOworfQorCitjb25zdCBjaGFyICoKK1B5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmcodm9pZCkKIHsKICAgICByZXR1cm4gInV0Zi04IjsKIH0KQEAgLTIwNDUsMjYgKzQwODAsMjkgQEAKICAgIHJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9uIGVycm9yCiAqLwogCi1zdGF0aWMKLWludCB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmlucHV0LCBjb25zdCBjaGFyICoqaW5lbmQsIFB5X3NzaXplX3QgKnN0YXJ0aW5wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlT2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MsIFB5X1VOSUNPREUgKipvdXRwdHIpCitzdGF0aWMgaW50Cit1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcihjb25zdCBjaGFyICplcnJvcnMsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKippbnB1dCwgY29uc3QgY2hhciAqKmluZW5kLCBQeV9zc2l6ZV90ICpzdGFydGlucG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zKQogewogICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwotICAgIFB5X3NzaXplX3Qgb3V0c2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSgqb3V0cHV0KTsKKyAgICBQeV9zc2l6ZV90IG91dHNpemU7CiAgICAgUHlfc3NpemVfdCBpbnNpemU7CiAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemU7CiAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgUHlfVU5JQ09ERSAqcmVwcHRyOwogICAgIFB5T2JqZWN0ICppbnB1dG9iaiA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCByZXBzaXplOwogICAgIGludCByZXMgPSAtMTsKIAorICAgIGlmIChfUHlVbmljb2RlX0tJTkQoKm91dHB1dCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCisgICAgICAgIG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCgqb3V0cHV0KTsKKyAgICBlbHNlCisgICAgICAgIG91dHNpemUgPSBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKCpvdXRwdXQpOworCiAgICAgaWYgKCplcnJvckhhbmRsZXIgPT0gTlVMTCkgewogICAgICAgICAqZXJyb3JIYW5kbGVyID0gUHlDb2RlY19Mb29rdXBFcnJvcihlcnJvcnMpOwogICAgICAgICBpZiAoKmVycm9ySGFuZGxlciA9PSBOVUxMKQpAQCAtMjA4OCw2ICs0MTI2LDggQEAKICAgICB9CiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHJlc3R1cGxlLCBhcmdwYXJzZSwgJlB5VW5pY29kZV9UeXBlLCAmcmVwdW5pY29kZSwgJm5ld3BvcykpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICAvKiBDb3B5IGJhY2sgdGhlIGJ5dGVzIHZhcmlhYmxlcywgd2hpY2ggbWlnaHQgaGF2ZSBiZWVuIG1vZGlmaWVkIGJ5IHRoZQogICAgICAgIGNhbGxiYWNrICovCkBAIC0yMTExLDI1ICs0MTUxLDQ3IEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICAvKiBuZWVkIG1vcmUgc3BhY2U/IChhdCBsZWFzdCBlbm91Z2ggZm9yIHdoYXQgd2UKLSAgICAgICBoYXZlK3RoZSByZXBsYWNlbWVudCt0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIChzdGFydGluZwotICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCi0gICAgICAgd2hlbiB0aGVyZSBhcmUgbm8gZXJyb3JzIGluIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcpICovCi0gICAgcmVwcHRyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7Ci0gICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwc2l6ZSArIGluc2l6ZS1uZXdwb3M7Ci0gICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKLSAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZTwyKm91dHNpemUpCi0gICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKm91dHNpemU7Ci0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgIGlmIChfUHlVbmljb2RlX0tJTkQoKm91dHB1dCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCisgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCisgICAgICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCisgICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLworICAgICAgICBQeV9zc2l6ZV90IHJlcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwbGVuICsgaW5zaXplLW5ld3BvczsKKyAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IG91dHNpemUpIHsKKyAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipvdXRzaXplKQorICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAodW5pY29kZV93aWRlbihvdXRwdXQsICpvdXRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyZXB1bmljb2RlKSkgPCAwKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAqb3V0cHRyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKm91dHB1dCkgKyAqb3V0cG9zOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygqb3V0cHV0LCAqb3V0cG9zLCByZXB1bmljb2RlLCAwLCByZXBsZW4pOworICAgICAgICAqb3V0cG9zICs9IHJlcGxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHdjaGFyX3QgKnJlcHdzdHI7CisgICAgICAgIFB5X3NzaXplX3QgcmVwd2xlbjsKKyAgICAgICAgcmVwd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHJlcHVuaWNvZGUsICZyZXB3bGVuKTsKKyAgICAgICAgaWYgKHJlcHdzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgLyogbmVlZCBtb3JlIHNwYWNlPyAoYXQgbGVhc3QgZW5vdWdoIGZvciB3aGF0IHdlCisgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcgKHN0YXJ0aW5nCisgICAgICAgICAgIGF0IHRoZSBuZXcgaW5wdXQgcG9zaXRpb24pLCBzbyB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlCisgICAgICAgICAgIHdoZW4gdGhlcmUgYXJlIG5vIGVycm9ycyBpbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nKSAqLworICAgICAgICByZXF1aXJlZHNpemUgPSAqb3V0cG9zICsgcmVwd2xlbiArIGluc2l6ZS1uZXdwb3M7CisgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBvdXRzaXplKSB7CisgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMipvdXRzaXplKQorICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqb3V0c2l6ZTsKKyAgICAgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShvdXRwdXQsIHJlcXVpcmVkc2l6ZSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorICAgICAgICB3Y3NuY3B5KF9QeVVuaWNvZGVfV1NUUigqb3V0cHV0KSArICpvdXRwb3MsIHJlcHdzdHIsIHJlcHdsZW4pOworICAgICAgICAqb3V0cG9zICs9IHJlcHdsZW47CiAgICAgfQogICAgICplbmRpbnBvcyA9IG5ld3BvczsKICAgICAqaW5wdHIgPSAqaW5wdXQgKyBuZXdwb3M7Ci0gICAgUHlfVU5JQ09ERV9DT1BZKCpvdXRwdHIsIHJlcHB0ciwgcmVwc2l6ZSk7Ci0gICAgKm91dHB0ciArPSByZXBzaXplOwotICAgICpvdXRwb3MgKz0gcmVwc2l6ZTsKIAogICAgIC8qIHdlIG1hZGUgaXQhICovCiAgICAgcmVzID0gMDsKQEAgLTIyMjAsOSArNDI4MiwxMCBAQAogICAgICAgKGRpcmVjdFdTICYmICh1dGY3X2NhdGVnb3J5WyhjKV0gPT0gMikpIHx8ICAgICAgICBcCiAgICAgICAoZGlyZWN0TyAmJiAodXRmN19jYXRlZ29yeVsoYyldID09IDEpKSkpCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGNyhjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlVVRGNyhjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CkBAIC0yMjM0LDQyICs0Mjk3LDQyIEBACiAgKiBhbGwgdGhlIHNoaWZ0IHN0YXRlIChzZWVuIGJpdHMsIG51bWJlciBvZiBiaXRzIHNlZW4sIGhpZ2gKICAqIHN1cnJvZ2F0ZSkuICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBQeU9iamVjdCAqdW5pY29kZTsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKICAgICBpbnQgaW5TaGlmdCA9IDA7Ci0gICAgUHlfVU5JQ09ERSAqc2hpZnRPdXRTdGFydDsKKyAgICBQeV9zc2l6ZV90IHNoaWZ0T3V0U3RhcnQ7CiAgICAgdW5zaWduZWQgaW50IGJhc2U2NGJpdHMgPSAwOwogICAgIHVuc2lnbmVkIGxvbmcgYmFzZTY0YnVmZmVyID0gMDsKLSAgICBQeV9VTklDT0RFIHN1cnJvZ2F0ZSA9IDA7CisgICAgUHlfVUNTNCBzdXJyb2dhdGUgPSAwOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOworICAgIC8qIFN0YXJ0IG9mZiBhc3N1bWluZyBpdCdzIGFsbCBBU0NJSS4gV2lkZW4gbGF0ZXIgYXMgbmVjZXNzYXJ5LiAqLworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CiAgICAgaWYgKCF1bmljb2RlKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChjb25zdW1lZCkKICAgICAgICAgICAgICpjb25zdW1lZCA9IDA7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgICAgICByZXR1cm4gdW5pY29kZTsKICAgICB9CiAKLSAgICBwID0gdW5pY29kZS0+c3RyOwotICAgIHNoaWZ0T3V0U3RhcnQgPSBwOworICAgIHNoaWZ0T3V0U3RhcnQgPSBvdXRwb3MgPSAwOwogICAgIGUgPSBzICsgc2l6ZTsKIAogICAgIHdoaWxlIChzIDwgZSkgewotICAgICAgICBQeV9VTklDT0RFIGNoOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgcmVzdGFydDoKICAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikgKnM7CiAKQEAgLTIyODAsMzQgKzQzNDMsMzEgQEAKICAgICAgICAgICAgICAgICBzKys7CiAgICAgICAgICAgICAgICAgaWYgKGJhc2U2NGJpdHMgPj0gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSBlbm91Z2ggYml0cyBmb3IgYSBVVEYtMTYgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBvdXRDaCA9IChQeV9VTklDT0RFKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJhc2U2NGJ1ZmZlciA+PiAoYmFzZTY0Yml0cy0xNikpOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IG91dENoID0gKFB5X1VDUzQpKGJhc2U2NGJ1ZmZlciA+PiAoYmFzZTY0Yml0cy0xNikpOwogICAgICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzIC09IDE2OwogICAgICAgICAgICAgICAgICAgICBiYXNlNjRidWZmZXIgJj0gKDEgPDwgYmFzZTY0Yml0cykgLSAxOyAvKiBjbGVhciBoaWdoIGJpdHMgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cnJvZ2F0ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogZXhwZWN0aW5nIGEgc2Vjb25kIHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG91dENoID49IDB4REMwMCAmJiBvdXRDaCA8PSAweERGRkYpIHsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKCgoc3Vycm9nYXRlICYgMHgzRkYpPDwxMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKG91dENoICYgMHgzRkYpKSArIDB4MTAwMDA7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSBzdXJyb2dhdGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IG91dENoOwotI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKG91dENoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2gyID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoc3Vycm9nYXRlLCBvdXRDaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gyKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IHN1cnJvZ2F0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCBzdXJyb2dhdGUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG91dENoID49IDB4RDgwMCAmJiBvdXRDaCA8PSAweERCRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUob3V0Q2gpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXJzdCBzdXJyb2dhdGUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSA9IG91dENoOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgKnArKyA9IG91dENoOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgb3V0Q2gpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0yMzE1LDcgKzQzNzUsOCBAQAogICAgICAgICAgICAgICAgIGluU2hpZnQgPSAwOwogICAgICAgICAgICAgICAgIHMrKzsKICAgICAgICAgICAgICAgICBpZiAoc3Vycm9nYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBzdXJyb2dhdGU7CisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIHN1cnJvZ2F0ZSkgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYmFzZTY0Yml0cyA+IDApIHsgLyogbGVmdC1vdmVyIGJpdHMgKi8KQEAgLTIzMzUsNyArNDM5Niw4IEBACiAgICAgICAgICAgICAgICAgaWYgKGNoICE9ICctJykgewogICAgICAgICAgICAgICAgICAgICAvKiAnLScgaXMgYWJzb3JiZWQ7IG90aGVyIHRlcm1pbmF0aW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlcnMgYXJlIHByZXNlcnZlZCAqLwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMzQ0LDE2ICs0NDA2LDE4IEBACiAgICAgICAgICAgICBzKys7IC8qIGNvbnN1bWUgJysnICovCiAgICAgICAgICAgICBpZiAocyA8IGUgJiYgKnMgPT0gJy0nKSB7IC8qICcrLScgZW5jb2RlcyAnKycgKi8KICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICcrJzsKKyAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ1bmljb2RlLCAmb3V0cG9zLCAnKycpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIGJlZ2luIGJhc2U2NC1lbmNvZGVkIHNlY3Rpb24gKi8KICAgICAgICAgICAgICAgICBpblNoaWZ0ID0gMTsKLSAgICAgICAgICAgICAgICBzaGlmdE91dFN0YXJ0ID0gcDsKKyAgICAgICAgICAgICAgICBzaGlmdE91dFN0YXJ0ID0gb3V0cG9zOwogICAgICAgICAgICAgICAgIGJhc2U2NGJpdHMgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKERFQ09ERV9ESVJFQ1QoY2gpKSB7IC8qIGNoYXJhY3RlciBkZWNvZGVzIGFzIGl0c2VsZiAqLwotICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBzKys7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC0yMzY0LDEzICs0NDI4LDEyIEBACiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CiB1dGY3RXJyb3I6Ci0gICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7CiAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInV0ZjciLCBlcnJtc2csCiAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIApAQCAtMjM4MSwxMyArNDQ0NCwxMiBAQAogICAgICAgICBpZiAoc3Vycm9nYXRlIHx8CiAgICAgICAgICAgICAgICAgKGJhc2U2NGJpdHMgPj0gNikgfHwKICAgICAgICAgICAgICAgICAoYmFzZTY0Yml0cyA+IDAgJiYgYmFzZTY0YnVmZmVyICE9IDApKSB7Ci0gICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzaXplOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJ1dGY3IiwgInVudGVybWluYXRlZCBzaGlmdCBzZXF1ZW5jZSIsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGlmIChzIDwgZSkKICAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7CkBAIC0yMzk3LDcgKzQ0NTksNyBAQAogICAgIC8qIHJldHVybiBzdGF0ZSAqLwogICAgIGlmIChjb25zdW1lZCkgewogICAgICAgICBpZiAoaW5TaGlmdCkgewotICAgICAgICAgICAgcCA9IHNoaWZ0T3V0U3RhcnQ7IC8qIGJhY2sgb2ZmIG91dHB1dCAqLworICAgICAgICAgICAgb3V0cG9zID0gc2hpZnRPdXRTdGFydDsgLyogYmFjayBvZmYgb3V0cHV0ICovCiAgICAgICAgICAgICAqY29uc3VtZWQgPSBzdGFydGlucG9zOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMjQwNSwxMiArNDQ2NywxMiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSkpIDwgMCkKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnVuaWNvZGUsIG91dHBvcykgPCAwKQogICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlOworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh1bmljb2RlKTsKIAogICBvbkVycm9yOgogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTI0MjAsMzUgKzQ0ODIsNDIgQEAKIH0KIAogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVVURjcoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVVVEY3KFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sCisgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFdoaXRlU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogeworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgLyogSXQgbWlnaHQgYmUgcG9zc2libGUgdG8gdGlnaHRlbiB0aGlzIHdvcnN0IGNhc2UgKi8KLSAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZCA9IDggKiBzaXplOwogICAgIGludCBpblNoaWZ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGkgPSAwOworICAgIFB5X3NzaXplX3QgaTsKICAgICB1bnNpZ25lZCBpbnQgYmFzZTY0Yml0cyA9IDA7CiAgICAgdW5zaWduZWQgbG9uZyBiYXNlNjRidWZmZXIgPSAwOwogICAgIGNoYXIgKiBvdXQ7CiAgICAgY2hhciAqIHN0YXJ0OwogCi0gICAgaWYgKHNpemUgPT0gMCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHIpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHIpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgaWYgKGFsbG9jYXRlZCAvIDggIT0gc2l6ZSkKKyAgICAvKiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byB0aWdodGVuIHRoaXMgd29yc3QgY2FzZSAqLworICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDgpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotCi0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBsZW4gKiA4KTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN0YXJ0ID0gb3V0ID0gUHlCeXRlc19BU19TVFJJTkcodik7Ci0gICAgZm9yICg7aSA8IHNpemU7ICsraSkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChpblNoaWZ0KSB7CiAgICAgICAgICAgICBpZiAoRU5DT0RFX0RJUkVDVChjaCwgIWJhc2U2NFNldE8sICFiYXNlNjRXaGl0ZVNwYWNlKSkgewpAQCAtMjQ4Niw4ICs0NTU1LDkgQEAKICAgICAgICAgfQogICAgICAgICBjb250aW51ZTsKIGVuY29kZV9jaGFyOgotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKKwogICAgICAgICAgICAgLyogY29kZSBmaXJzdCBzdXJyb2dhdGUgKi8KICAgICAgICAgICAgIGJhc2U2NGJpdHMgKz0gMTY7CiAgICAgICAgICAgICBiYXNlNjRidWZmZXIgPSAoYmFzZTY0YnVmZmVyIDw8IDE2KSB8IDB4ZDgwMCB8ICgoY2gtMHgxMDAwMCkgPj4gMTApOwpAQCAtMjQ5Niw5ICs0NTY2LDggQEAKICAgICAgICAgICAgICAgICBiYXNlNjRiaXRzIC09IDY7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBwcmVwYXJlIHNlY29uZCBzdXJyb2dhdGUgKi8KLSAgICAgICAgICAgIGNoID0gIDB4REMwMCB8ICgoY2gtMHgxMDAwMCkgJiAweDNGRik7CisgICAgICAgICAgICBjaCA9IFB5X1VOSUNPREVfTE9XX1NVUlJPR0FURShjaCk7CiAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICBiYXNlNjRiaXRzICs9IDE2OwogICAgICAgICBiYXNlNjRidWZmZXIgPSAoYmFzZTY0YnVmZmVyIDw8IDE2KSB8IGNoOwogICAgICAgICB3aGlsZSAoYmFzZTY0Yml0cyA+PSA2KSB7CkBAIC0yNTE0LDYgKzQ1ODMsMjIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHY7CiB9CitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVVRGNyhjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2U2NFNldE8sCisgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTY0V2hpdGVTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXN1bHQgPSBfUHlVbmljb2RlX0VuY29kZVVURjcodG1wLCBiYXNlNjRTZXRPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlNjRXaGl0ZVNwYWNlLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKICN1bmRlZiBJU19CQVNFNjQKICN1bmRlZiBGUk9NX0JBU0U2NApAQCAtMjUyMywyNzIgKzQ2MDgsMjA2IEBACiAKIC8qIC0tLSBVVEYtOCBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1zdGF0aWMKLWNoYXIgdXRmOF9jb2RlX2xlbmd0aFsyNTZdID0gewotICAgIC8qIE1hcCBVVEYtOCBlbmNvZGVkIHByZWZpeCBieXRlIHRvIHNlcXVlbmNlIGxlbmd0aC4gIFplcm8gbWVhbnMKLSAgICAgICBpbGxlZ2FsIHByZWZpeC4gIFNlZSBSRkMgMzYyOSBmb3IgZGV0YWlscyAqLwotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIC8qIDAwLTBGICovCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgLyogNzAtN0YgKi8KLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvKiA4MC04RiAqLwotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAvKiBCMC1CRiAqLwotICAgIDAsIDAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIC8qIEMwLUMxICsgQzItQ0YgKi8KLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAvKiBEMC1ERiAqLwotICAgIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIC8qIEUwLUVGICovCi0gICAgNCwgNCwgNCwgNCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCAgLyogRjAtRjQgKyBGNS1GRiAqLwotfTsKLQotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY4KGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9EZWNvZGVVVEY4KGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKIH0KIAotLyogTWFzayB0byBjaGVjayBvciBmb3JjZSBhbGlnbm1lbnQgb2YgYSBwb2ludGVyIHRvIEMgJ2xvbmcnIGJvdW5kYXJpZXMgKi8KLSNkZWZpbmUgTE9OR19QVFJfTUFTSyAoc2l6ZV90KSAoU0laRU9GX0xPTkcgLSAxKQorI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi91Y3MxbGliLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvZGVjcy5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi91bmRlZi5oIgorCisjaW5jbHVkZSAic3RyaW5nbGliL3VjczJsaWIuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY29kZWNzLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL3VuZGVmLmgiCisKKyNpbmNsdWRlICJzdHJpbmdsaWIvdWNzNGxpYi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9jb2RlY3MuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvdW5kZWYuaCIKIAogLyogTWFzayB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgYSBDICdsb25nJyBjb250YWlucyBhCiAgICBub24tQVNDSUksIFVURjgtZW5jb2RlZCBjaGFyLiAqLwogI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotIyBkZWZpbmUgQVNDSUlfQ0hBUl9NQVNLIDB4ODA4MDgwODA4MDgwODA4MEwKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwODA4MDgwODBVTAogI2VsaWYgKFNJWkVPRl9MT05HID09IDQpCi0jIGRlZmluZSBBU0NJSV9DSEFSX01BU0sgMHg4MDgwODA4MEwKKyMgZGVmaW5lIEFTQ0lJX0NIQVJfTUFTSyAweDgwODA4MDgwVUwKICNlbHNlCiAjIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCiAjZW5kaWYKIAotUHlPYmplY3QgKlB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmNvbnN1bWVkKQorc3RhdGljIFB5X3NzaXplX3QKK2FzY2lpX2RlY29kZShjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqZW5kLCBQeV9VQ1MxICpkZXN0KQogeworICAgIGNvbnN0IGNoYXIgKnAgPSBzdGFydDsKKyAgICBjb25zdCBjaGFyICphbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopIF9QeV9BTElHTl9ET1dOKGVuZCwgU0laRU9GX0xPTkcpOworCisjaWYgU0laRU9GX0xPTkcgPD0gU0laRU9GX1ZPSURfUAorICAgIGFzc2VydChfUHlfSVNfQUxJR05FRChkZXN0LCBTSVpFT0ZfTE9ORykpOworICAgIGlmIChfUHlfSVNfQUxJR05FRChwLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgLyogRmFzdCBwYXRoLCBzZWUgaW4gU1RSSU5HTElCKHV0ZjhfZGVjb2RlKSBmb3IKKyAgICAgICAgICAgYW4gZXhwbGFuYXRpb24uICovCisgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICByZWdpc3RlciBjb25zdCBjaGFyICpfcCA9IHA7CisgICAgICAgIHJlZ2lzdGVyIFB5X1VDUzEgKiBxID0gZGVzdDsKKyAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUgPSAqKGNvbnN0IHVuc2lnbmVkIGxvbmcgKikgX3A7CisgICAgICAgICAgICBpZiAodmFsdWUgJiBBU0NJSV9DSEFSX01BU0spCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAqKCh1bnNpZ25lZCBsb25nICopcSkgPSB2YWx1ZTsKKyAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HOworICAgICAgICAgICAgcSArPSBTSVpFT0ZfTE9ORzsKKyAgICAgICAgfQorICAgICAgICBwID0gX3A7CisgICAgICAgIHdoaWxlIChwIDwgZW5kKSB7CisgICAgICAgICAgICBpZiAoKHVuc2lnbmVkIGNoYXIpKnAgJiAweDgwKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgKnErKyA9ICpwKys7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHAgLSBzdGFydDsKKyAgICB9CisjZW5kaWYKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICAvKiBGYXN0IHBhdGgsIHNlZSBpbiBTVFJJTkdMSUIodXRmOF9kZWNvZGUpIGluIHN0cmluZ2xpYi9jb2RlY3MuaAorICAgICAgICAgICBmb3IgYW4gZXhwbGFuYXRpb24uICovCisgICAgICAgIGlmIChfUHlfSVNfQUxJR05FRChwLCBTSVpFT0ZfTE9ORykpIHsKKyAgICAgICAgICAgIC8qIEhlbHAgcmVnaXN0ZXIgYWxsb2NhdGlvbiAqLworICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY2hhciAqX3AgPSBwOworICAgICAgICAgICAgd2hpbGUgKF9wIDwgYWxpZ25lZF9lbmQpIHsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHZhbHVlID0gKih1bnNpZ25lZCBsb25nICopIF9wOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmIEFTQ0lJX0NIQVJfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwID0gX3A7CisgICAgICAgICAgICBpZiAoX3AgPT0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgodW5zaWduZWQgY2hhcikqcCAmIDB4ODApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgKytwOworICAgIH0KKyAgICBtZW1jcHkoZGVzdCwgc3RhcnQsIHAgLSBzdGFydCk7CisgICAgcmV0dXJuIHAgLSBzdGFydDsKK30KKworUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqY29uc3VtZWQpCit7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBpbnQgbjsKLSAgICBpbnQgazsKKyAgICBjb25zdCBjaGFyICplbmQgPSBzICsgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IG91dHBvczsKKwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwotICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIGNvbnN0IGNoYXIgKmUsICphbGlnbmVkX2VuZDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCi0gICAgICAgY2hhcmFjdGVyIGNvdW50ICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkgewogICAgICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICAgICAqY29uc3VtZWQgPSAwOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9CiAKLSAgICAvKiBVbnBhY2sgVVRGLTggZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGUtPnN0cjsKLSAgICBlID0gcyArIHNpemU7Ci0gICAgYWxpZ25lZF9lbmQgPSAoY29uc3QgY2hhciAqKSAoKHNpemVfdCkgZSAmIH5MT05HX1BUUl9NQVNLKTsKKyAgICAvKiBBU0NJSSBpcyBlcXVpdmFsZW50IHRvIHRoZSBmaXJzdCAxMjggb3JkaW5hbHMgaW4gVW5pY29kZS4gKi8KKyAgICBpZiAoc2l6ZSA9PSAxICYmICh1bnNpZ25lZCBjaGFyKXNbMF0gPCAxMjgpIHsKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkID0gMTsKKyAgICAgICAgcmV0dXJuIGdldF9sYXRpbjFfY2hhcigodW5zaWduZWQgY2hhcilzWzBdKTsKKyAgICB9CiAKLSAgICB3aGlsZSAocyA8IGUpIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9ICh1bnNpZ25lZCBjaGFyKSpzOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfTmV3KHNpemUsIDEyNyk7CisgICAgaWYgKCF1bmljb2RlKQorICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAvKiBGYXN0IHBhdGggZm9yIHJ1bnMgb2YgQVNDSUkgY2hhcmFjdGVycy4gR2l2ZW4gdGhhdCBjb21tb24gVVRGLTgKLSAgICAgICAgICAgICAgIGlucHV0IHdpbGwgY29uc2lzdCBvZiBhbiBvdmVyd2hlbG1pbmcgbWFqb3JpdHkgb2YgQVNDSUkKLSAgICAgICAgICAgICAgIGNoYXJhY3RlcnMsIHdlIHRyeSB0byBvcHRpbWl6ZSBmb3IgdGhpcyBjYXNlIGJ5IGNoZWNraW5nCi0gICAgICAgICAgICAgICBhcyBtYW55IGNoYXJhY3RlcnMgYXMgYSBDICdsb25nJyBjYW4gY29udGFpbi4KLSAgICAgICAgICAgICAgIEZpcnN0LCBjaGVjayBpZiB3ZSBjYW4gZG8gYW4gYWxpZ25lZCByZWFkLCBhcyBtb3N0IENQVXMgaGF2ZQotICAgICAgICAgICAgICAgYSBwZW5hbHR5IGZvciB1bmFsaWduZWQgcmVhZHMuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKCEoKHNpemVfdCkgcyAmIExPTkdfUFRSX01BU0spKSB7Ci0gICAgICAgICAgICAgICAgLyogSGVscCByZWdpc3RlciBhbGxvY2F0aW9uICovCi0gICAgICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgY2hhciAqX3MgPSBzOwotICAgICAgICAgICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgKl9wID0gcDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoX3MgPCBhbGlnbmVkX2VuZCkgewotICAgICAgICAgICAgICAgICAgICAvKiBSZWFkIGEgd2hvbGUgbG9uZyBhdCBhIHRpbWUgKGVpdGhlciA0IG9yIDggYnl0ZXMpLAotICAgICAgICAgICAgICAgICAgICAgICBhbmQgZG8gYSBmYXN0IHVucm9sbGVkIGNvcHkgaWYgaXQgb25seSBjb250YWlucyBBU0NJSQotICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJzLiAqLwotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSAqKHVuc2lnbmVkIGxvbmcgKikgX3M7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhICYgQVNDSUlfQ0hBUl9NQVNLKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzBdOwotICAgICAgICAgICAgICAgICAgICBfcFsxXSA9ICh1bnNpZ25lZCBjaGFyKSBfc1sxXTsKLSAgICAgICAgICAgICAgICAgICAgX3BbMl0gPSAodW5zaWduZWQgY2hhcikgX3NbMl07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzNdOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICBfcFs0XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s0XTsKLSAgICAgICAgICAgICAgICAgICAgX3BbNV0gPSAodW5zaWduZWQgY2hhcikgX3NbNV07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzZdID0gKHVuc2lnbmVkIGNoYXIpIF9zWzZdOwotICAgICAgICAgICAgICAgICAgICBfcFs3XSA9ICh1bnNpZ25lZCBjaGFyKSBfc1s3XTsKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICBfcyArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHMgPSBfczsKLSAgICAgICAgICAgICAgICBwID0gX3A7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPT0gZSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2ggPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIH0KKyAgICBvdXRwb3MgPSBhc2NpaV9kZWNvZGUocywgZW5kLCBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSk7CisgICAgcyArPSBvdXRwb3M7CisgICAgd2hpbGUgKHMgPCBlbmQpIHsKKyAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkodW5pY29kZSkpCisgICAgICAgICAgICAgICAgY2ggPSBhc2NpaWxpYl91dGY4X2RlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGNoID0gdWNzMWxpYl91dGY4X2RlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzFCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOworICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzJCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgIGNoID0gdWNzMmxpYl91dGY4X2RlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMkJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICBjaCA9IHVjczRsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlXzRCWVRFX0RBVEEodW5pY29kZSksICZvdXRwb3MpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGNoIDwgMHg4MCkgewotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotICAgICAgICAgICAgcysrOworICAgICAgICBzd2l0Y2ggKGNoKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIGlmIChzID09IGVuZCB8fCBjb25zdW1lZCkKKyAgICAgICAgICAgICAgICBnb3RvIEVuZDsKKyAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKKyAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzIC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKKyAgICAgICAgICAgIHdoaWxlIChlbmRpbnBvcyA8IHNpemUgJiYgKHN0YXJ0c1tlbmRpbnBvc10gJiAweEMwKSA9PSAweDgwKQorICAgICAgICAgICAgICAgIGVuZGlucG9zKys7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgc3RhcnQgYnl0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHM7CisgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOworICAgICAgICAgICAgd2hpbGUgKGVuZGlucG9zIDwgc2l6ZSAmJiAoc3RhcnRzW2VuZGlucG9zXSAmIDB4QzApID09IDB4ODApCisgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIG4gPSB1dGY4X2NvZGVfbGVuZ3RoW2NoXTsKLQotICAgICAgICBpZiAocyArIG4gPiBlKSB7Ci0gICAgICAgICAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAidW5leHBlY3RlZCBlbmQgb2YgZGF0YSI7Ci0gICAgICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgICAgIGZvciAoaz0xOyAoayA8IHNpemUtc3RhcnRpbnBvcykgJiYgKChzW2tdJjB4QzApID09IDB4ODApOyBrKyspCi0gICAgICAgICAgICAgICAgICAgIGVuZGlucG9zKys7Ci0gICAgICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG4pIHsKLQotICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICBlcnJtc2cgPSAiaW52YWxpZCBzdGFydCBieXRlIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0KLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgZXJybXNnID0gImludGVybmFsIGVycm9yIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcysxOwotICAgICAgICAgICAgZ290byB1dGY4RXJyb3I7Ci0KLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKChzWzFdICYgMHhjMCkgIT0gMHg4MCkgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgxZikgPDwgNikgKyAoc1sxXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDAwN0YpICYmIChjaCA8PSAweDA3RkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIC8qIERlY29kaW5nIFVURi04IHNlcXVlbmNlcyBpbiByYW5nZSBceGVkXHhhMFx4ODAtXHhlZFx4YmZceGJmCi0gICAgICAgICAgICAgICB3aWxsIHJlc3VsdCBpbiBzdXJyb2dhdGVzIGluIHJhbmdlIGQ4MDAtZGZmZi4gU3Vycm9nYXRlcyBhcmUKLSAgICAgICAgICAgICAgIG5vdCB2YWxpZCBVVEYtOCBzbyB0aGV5IGFyZSByZWplY3RlZC4KLSAgICAgICAgICAgICAgIFNlZSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3ZlcnNpb25zL1VuaWNvZGU1LjIuMC9jaDAzLnBkZgotICAgICAgICAgICAgICAgKHRhYmxlIDMtNykgYW5kIGh0dHA6Ly93d3cucmZjLWVkaXRvci5vcmcvcmZjL3JmYzM2MjkudHh0ICovCi0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwIHx8Ci0gICAgICAgICAgICAgICAgKHNbMl0gJiAweGMwKSAhPSAweDgwIHx8Ci0gICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyKXNbMF0gPT0gMHhFMCAmJgotICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilzWzFdIDwgMHhBMCkgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEVEICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPiAweDlGKSkgewotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJpbnZhbGlkIGNvbnRpbnVhdGlvbiBieXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLQotICAgICAgICAgICAgICAgIC8qIGlmIHNbMV0gZmlyc3QgdHdvIGJpdHMgYXJlIDEgYW5kIDAsIHRoZW4gdGhlIGludmFsaWQKLSAgICAgICAgICAgICAgICAgICBjb250aW51YXRpb24gYnl0ZSBpcyBzWzJdLCBzbyBpbmNyZW1lbnQgZW5kaW5wb3MgYnkgMSwKLSAgICAgICAgICAgICAgICAgICBpZiBub3QsIHNbMV0gaXMgaW52YWxpZCBhbmQgZW5kaW5wb3MgZG9lc24ndCBuZWVkIHRvCi0gICAgICAgICAgICAgICAgICAgYmUgaW5jcmVtZW50ZWQuICovCi0gICAgICAgICAgICAgICAgaWYgKChzWzFdICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjhFcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgwZikgPDwgMTIpICsgKChzWzFdICYgMHgzZikgPDwgNikgKyAoc1syXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1szXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEYwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweDkwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OEYpKSB7Ci0gICAgICAgICAgICAgICAgZXJybXNnID0gImludmFsaWQgY29udGludWF0aW9uIGJ5dGUiOwotICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MgKyAxOwotICAgICAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4QzApID09IDB4ODApIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kaW5wb3MrKzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChzWzJdICYgMHhDMCkgPT0gMHg4MCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZGlucG9zKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gdXRmOEVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDcpIDw8IDE4KSArICgoc1sxXSAmIDB4M2YpIDw8IDEyKSArCi0gICAgICAgICAgICAgICAgICgoc1syXSAmIDB4M2YpIDw8IDYpICsgKHNbM10gJiAweDNmKTsKLSAgICAgICAgICAgIGFzc2VydCAoKGNoID4gMHhGRkZGKSAmJiAoY2ggPD0gMHgxMGZmZmYpKTsKLQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKWNoOwotI2Vsc2UKLSAgICAgICAgICAgIC8qICBjb21wdXRlIGFuZCBhcHBlbmQgdGhlIHR3byBzdXJyb2dhdGVzOiAqLwotCi0gICAgICAgICAgICAvKiAgdHJhbnNsYXRlIGZyb20gMTAwMDAuLjEwRkZGRiB0byAwLi5GRkZGICovCi0gICAgICAgICAgICBjaCAtPSAweDEwMDAwOwotCi0gICAgICAgICAgICAvKiAgaGlnaCBzdXJyb2dhdGUgPSB0b3AgMTAgYml0cyBhZGRlZCB0byBEODAwICovCi0gICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpKDB4RDgwMCArIChjaCA+PiAxMCkpOwotCi0gICAgICAgICAgICAvKiAgbG93IHN1cnJvZ2F0ZSA9IGJvdHRvbSAxMCBiaXRzIGFkZGVkIHRvIERDMDAgKi8KLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSkoMHhEQzAwICsgKGNoICYgMHgwM0ZGKSk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIHMgKz0gbjsKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIHV0ZjhFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKTsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAidXRmLTgiLCBlcnJtc2csCi0gICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ1bmljb2RlLCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCisgICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MpKQogICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBhbGlnbmVkX2VuZCA9IChjb25zdCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOwogICAgIH0KLSAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICpjb25zdW1lZCA9IHMtc3RhcnRzOwogCi0gICAgLyogQWRqdXN0IGxlbmd0aCAqLwotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdW5pY29kZSwgcCAtIHVuaWNvZGUtPnN0cikgPCAwKQorRW5kOgorICAgIGlmICh1bmljb2RlX3Jlc2l6ZSgmdW5pY29kZSwgb3V0cG9zKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7CisgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAqY29uc3VtZWQgPSBzIC0gc3RhcnRzOwogCi0gIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7CisKK29uRXJyb3I6CisgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXhjKTsKKyAgICBQeV9YREVDUkVGKHVuaWNvZGUpOwogICAgIHJldHVybiBOVUxMOwogfQogCi0jdW5kZWYgQVNDSUlfQ0hBUl9NQVNLCi0KICNpZmRlZiBfX0FQUExFX18KIAogLyogU2ltcGxpZmllZCBVVEYtOCBkZWNvZGVyIHVzaW5nIHN1cnJvZ2F0ZWVzY2FwZSBlcnJvciBoYW5kbGVyLApAQCAtMjc5Nyw5ICs0ODE2LDkgQEAKIHdjaGFyX3QqCiBfUHlfRGVjb2RlVVRGOF9zdXJyb2dhdGVlc2NhcGUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotICAgIGludCBuOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgd2NoYXJfdCAqdW5pY29kZSwgKnA7CisgICAgd2NoYXJfdCAqdW5pY29kZTsKKyAgICBQeV9zc2l6ZV90IG91dHBvczsKIAogICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCiAgICAgICAgY2hhcmFjdGVyIGNvdW50ICovCkBAIC0yODEyLDI3NyArNDgzMSwxMDEgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBVbnBhY2sgVVRGLTggZW5jb2RlZCBkYXRhICovCi0gICAgcCA9IHVuaWNvZGU7CiAgICAgZSA9IHMgKyBzaXplOworICAgIG91dHBvcyA9IDA7CiAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgIFB5X1VDUzQgY2ggPSAodW5zaWduZWQgY2hhcikqczsKLQotICAgICAgICBpZiAoY2ggPCAweDgwKSB7Ci0gICAgICAgICAgICAqcCsrID0gKHdjaGFyX3QpY2g7Ci0gICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG4gPSB1dGY4X2NvZGVfbGVuZ3RoW2NoXTsKLSAgICAgICAgaWYgKHMgKyBuID4gZSkgewotICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKG4pIHsKLSAgICAgICAgY2FzZSAwOgotICAgICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLQotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoKHNbMV0gJiAweGMwKSAhPSAweDgwKQotICAgICAgICAgICAgICAgIGdvdG8gc3Vycm9nYXRlZXNjYXBlOwotICAgICAgICAgICAgY2ggPSAoKHNbMF0gJiAweDFmKSA8PCA2KSArIChzWzFdICYgMHgzZik7Ci0gICAgICAgICAgICBhc3NlcnQgKChjaCA+IDB4MDA3RikgJiYgKGNoIDw9IDB4MDdGRikpOwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KWNoOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgLyogRGVjb2RpbmcgVVRGLTggc2VxdWVuY2VzIGluIHJhbmdlIFx4ZWRceGEwXHg4MC1ceGVkXHhiZlx4YmYKLSAgICAgICAgICAgICAgIHdpbGwgcmVzdWx0IGluIHN1cnJvZ2F0ZXMgaW4gcmFuZ2UgZDgwMC1kZmZmLiBTdXJyb2dhdGVzIGFyZQotICAgICAgICAgICAgICAgbm90IHZhbGlkIFVURi04IHNvIHRoZXkgYXJlIHJlamVjdGVkLgotICAgICAgICAgICAgICAgU2VlIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdmVyc2lvbnMvVW5pY29kZTUuMi4wL2NoMDMucGRmCi0gICAgICAgICAgICAgICAodGFibGUgMy03KSBhbmQgaHR0cDovL3d3dy5yZmMtZWRpdG9yLm9yZy9yZmMvcmZjMzYyOS50eHQgKi8KLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEUwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweEEwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RUQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OUYpKSB7Ci0KLSAgICAgICAgICAgICAgICBnb3RvIHN1cnJvZ2F0ZWVzY2FwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNoID0gKChzWzBdICYgMHgwZikgPDwgMTIpICsgKChzWzFdICYgMHgzZikgPDwgNikgKyAoc1syXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweDA3RkYpICYmIChjaCA8PSAweEZGRkYpKTsKLSAgICAgICAgICAgICpwKysgPSAoUHlfVU5JQ09ERSljaDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmICgoc1sxXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1syXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoc1szXSAmIDB4YzApICE9IDB4ODAgfHwKLSAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIpc1swXSA9PSAweEYwICYmCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBjaGFyKXNbMV0gPCAweDkwKSB8fAotICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhcilzWzBdID09IDB4RjQgJiYKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc1sxXSA+IDB4OEYpKSB7Ci0gICAgICAgICAgICAgICAgZ290byBzdXJyb2dhdGVlc2NhcGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaCA9ICgoc1swXSAmIDB4NykgPDwgMTgpICsgKChzWzFdICYgMHgzZikgPDwgMTIpICsKLSAgICAgICAgICAgICAgICAgKChzWzJdICYgMHgzZikgPDwgNikgKyAoc1szXSAmIDB4M2YpOwotICAgICAgICAgICAgYXNzZXJ0ICgoY2ggPiAweEZGRkYpICYmIChjaCA8PSAweDEwZmZmZikpOwotCisgICAgICAgIFB5X1VDUzQgY2g7CiAjaWYgU0laRU9GX1dDSEFSX1QgPT0gNAotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KWNoOworICAgICAgICBjaCA9IHVjczRsaWJfdXRmOF9kZWNvZGUoJnMsIGUsIChQeV9VQ1M0ICopdW5pY29kZSwgJm91dHBvcyk7CiAjZWxzZQotICAgICAgICAgICAgLyogIGNvbXB1dGUgYW5kIGFwcGVuZCB0aGUgdHdvIHN1cnJvZ2F0ZXM6ICovCi0KLSAgICAgICAgICAgIC8qICB0cmFuc2xhdGUgZnJvbSAxMDAwMC4uMTBGRkZGIHRvIDAuLkZGRkYgKi8KLSAgICAgICAgICAgIGNoIC09IDB4MTAwMDA7Ci0KLSAgICAgICAgICAgIC8qICBoaWdoIHN1cnJvZ2F0ZSA9IHRvcCAxMCBiaXRzIGFkZGVkIHRvIEQ4MDAgKi8KLSAgICAgICAgICAgICpwKysgPSAod2NoYXJfdCkoMHhEODAwICsgKGNoID4+IDEwKSk7Ci0KLSAgICAgICAgICAgIC8qICBsb3cgc3Vycm9nYXRlID0gYm90dG9tIDEwIGJpdHMgYWRkZWQgdG8gREMwMCAqLwotICAgICAgICAgICAgKnArKyA9ICh3Y2hhcl90KSgweERDMDAgKyAoY2ggJiAweDAzRkYpKTsKKyAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjhfZGVjb2RlKCZzLCBlLCAoUHlfVUNTMiAqKXVuaWNvZGUsICZvdXRwb3MpOwogI2VuZGlmCi0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGNoID4gMHhGRikgeworI2lmIFNJWkVPRl9XQ0hBUl9UID09IDQKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyNlbHNlCisgICAgICAgICAgICBhc3NlcnQoUHlfVU5JQ09ERV9JU19TVVJST0dBVEUoY2gpKTsKKyAgICAgICAgICAgIC8qICBjb21wdXRlIGFuZCBhcHBlbmQgdGhlIHR3byBzdXJyb2dhdGVzOiAqLworICAgICAgICAgICAgdW5pY29kZVtvdXRwb3MrK10gPSAod2NoYXJfdClQeV9VTklDT0RFX0hJR0hfU1VSUk9HQVRFKGNoKTsKKyAgICAgICAgICAgIHVuaWNvZGVbb3V0cG9zKytdID0gKHdjaGFyX3QpUHlfVU5JQ09ERV9MT1dfU1VSUk9HQVRFKGNoKTsKKyNlbmRpZgogICAgICAgICB9Ci0gICAgICAgIHMgKz0gbjsKLSAgICAgICAgY29udGludWU7Ci0KLSAgICAgIHN1cnJvZ2F0ZWVzY2FwZToKLSAgICAgICAgKnArKyA9IDB4REMwMCArIGNoOwotICAgICAgICBzKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCFjaCAmJiBzID09IGUpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBzdXJyb2dhdGVlc2NhcGUgKi8KKyAgICAgICAgICAgIHVuaWNvZGVbb3V0cG9zKytdID0gMHhEQzAwICsgKHVuc2lnbmVkIGNoYXIpKnMrKzsKKyAgICAgICAgfQogICAgIH0KLSAgICAqcCA9IEwnXDAnOworICAgIHVuaWNvZGVbb3V0cG9zXSA9IEwnXDAnOwogICAgIHJldHVybiB1bmljb2RlOwogfQogCiAjZW5kaWYgLyogX19BUFBMRV9fICovCiAKLS8qIEFsbG9jYXRpb24gc3RyYXRlZ3k6ICBpZiB0aGUgc3RyaW5nIGlzIHNob3J0LCBjb252ZXJ0IGludG8gYSBzdGFjayBidWZmZXIKKy8qIFByaW1hcnkgaW50ZXJuYWwgZnVuY3Rpb24gd2hpY2ggY3JlYXRlcyB1dGY4IGVuY29kZWQgYnl0ZXMgb2JqZWN0cy4KKworICAgQWxsb2NhdGlvbiBzdHJhdGVneTogIGlmIHRoZSBzdHJpbmcgaXMgc2hvcnQsIGNvbnZlcnQgaW50byBhIHN0YWNrIGJ1ZmZlcgogICAgYW5kIGFsbG9jYXRlIGV4YWN0bHkgYXMgbXVjaCBzcGFjZSBuZWVkZWQgYXQgdGhlIGVuZC4gIEVsc2UgYWxsb2NhdGUgdGhlCiAgICBtYXhpbXVtIHBvc3NpYmxlIG5lZWRlZCAoNCByZXN1bHQgYnl0ZXMgcGVyIFVuaWNvZGUgY2hhcmFjdGVyKSwgYW5kIHJldHVybgogICAgdGhlIGV4Y2VzcyBtZW1vcnkgYXQgdGhlIGVuZC4KICovCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSNkZWZpbmUgTUFYX1NIT1JUX1VOSUNIQVJTIDMwMCAgLyogbGFyZ2VzdCBzaXplIHdlJ2xsIGRvIG9uIHRoZSBzdGFjayAqLworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKIAotICAgIFB5X3NzaXplX3QgaTsgICAgICAgICAgICAgICAgLyogaW5kZXggaW50byBzIG9mIG5leHQgaW5wdXQgYnl0ZSAqLwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7ICAgICAgICAgICAgLyogcmVzdWx0IHN0cmluZyBvYmplY3QgKi8KLSAgICBjaGFyICpwOyAgICAgICAgICAgICAgICAgICAgIC8qIG5leHQgZnJlZSBieXRlIGluIG91dHB1dCBidWZmZXIgKi8KLSAgICBQeV9zc2l6ZV90IG5hbGxvY2F0ZWQ7ICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBhbGxvY2F0ZWQgKi8KLSAgICBQeV9zc2l6ZV90IG5uZWVkZWQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIHJlc3VsdCBieXRlcyBuZWVkZWQgKi8KLSAgICBjaGFyIHN0YWNrYnVmW01BWF9TSE9SVF9VTklDSEFSUyAqIDRdOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotCi0gICAgYXNzZXJ0KHMgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KHNpemUgPj0gMCk7Ci0KLSAgICBpZiAoc2l6ZSA8PSBNQVhfU0hPUlRfVU5JQ0hBUlMpIHsKLSAgICAgICAgLyogV3JpdGUgaW50byB0aGUgc3RhY2sgYnVmZmVyOyBuYWxsb2NhdGVkIGNhbid0IG92ZXJmbG93LgotICAgICAgICAgKiBBdCB0aGUgZW5kLCB3ZSdsbCBhbGxvY2F0ZSBleGFjdGx5IGFzIG11Y2ggaGVhcCBzcGFjZSBhcyBpdAotICAgICAgICAgKiB0dXJucyBvdXQgd2UgbmVlZC4KLSAgICAgICAgICovCi0gICAgICAgIG5hbGxvY2F0ZWQgPSBQeV9TQUZFX0RPV05DQVNUKHNpemVvZihzdGFja2J1ZiksIHNpemVfdCwgaW50KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsgICAvKiB3aWxsIGFsbG9jYXRlIGFmdGVyIHdlJ3JlIGRvbmUgKi8KLSAgICAgICAgcCA9IHN0YWNrYnVmOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgLyogT3ZlcmFsbG9jYXRlIG9uIHRoZSBoZWFwLCBhbmQgZ2l2ZSB0aGUgZXhjZXNzIGJhY2sgYXQgdGhlIGVuZC4gKi8KLSAgICAgICAgbmFsbG9jYXRlZCA9IHNpemUgKiA0OwotICAgICAgICBpZiAobmFsbG9jYXRlZCAvIDQgIT0gc2l6ZSkgIC8qIG92ZXJmbG93ISAqLwotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTspIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9IHNbaSsrXTsKLQotICAgICAgICBpZiAoY2ggPCAweDgwKQotICAgICAgICAgICAgLyogRW5jb2RlIEFTQ0lJICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOwotCi0gICAgICAgIGVsc2UgaWYgKGNoIDwgMHgwODAwKSB7Ci0gICAgICAgICAgICAvKiBFbmNvZGUgTGF0aW4tMSAqLwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGMwIHwgKGNoID4+IDYpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgfSBlbHNlIGlmICgweEQ4MDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKSB7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgLyogU3BlY2lhbCBjYXNlOiBjaGVjayBmb3IgaGlnaCBhbmQgbG93IHN1cnJvZ2F0ZSAqLwotICAgICAgICAgICAgaWYgKGNoIDw9IDB4REJGRiAmJiBpICE9IHNpemUgJiYgMHhEQzAwIDw9IHNbaV0gJiYgc1tpXSA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoMiA9IHNbaV07Ci0gICAgICAgICAgICAgICAgLyogQ29tYmluZSB0aGUgdHdvIHN1cnJvZ2F0ZXMgdG8gZm9ybSBhIFVDUzQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICBjaCA9ICgoY2ggLSAweEQ4MDApIDw8IDEwIHwgKGNoMiAtIDB4REMwMCkpICsgMHgxMDAwMDsKLSAgICAgICAgICAgICAgICBpKys7Ci0KLSAgICAgICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGYwIHwgKGNoID4+IDE4KSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiAxMikgJiAweDNmKSk7Ci0gICAgICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoY2ggJiAweDNmKSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotI2VuZGlmCi0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnJlcDsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemUsIGs7Ci0gICAgICAgICAgICAgICAgcmVwID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgKGVycm9ycywgJmVycm9ySGFuZGxlciwgInV0Zi04IiwgInN1cnJvZ2F0ZXMgbm90IGFsbG93ZWQiLAotICAgICAgICAgICAgICAgICAgICAgcywgc2l6ZSwgJmV4YywgaS0xLCBpLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlcCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLQotICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX0dFVF9TSVpFKHJlcCk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHJlcCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmVwc2l6ZSA+IDQpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gcCAtIHN0YWNrYnVmOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwIC0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAobmFsbG9jYXRlZCA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSArIDQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG5hbGxvY2F0ZWQgKz0gcmVwc2l6ZSAtIDQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBuYWxsb2NhdGVkKSA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmFsbG9jYXRlZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X01FTUNQWShQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpLCBzdGFja2J1Ziwgb2Zmc2V0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIG9mZnNldDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXApKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYXIgKnByZXAgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXApOwotICAgICAgICAgICAgICAgICAgICBmb3IoayA9IHJlcHNpemU7IGsgPiAwOyBrLS0pCi0gICAgICAgICAgICAgICAgICAgICAgICAqcCsrID0gKnByZXArKzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFICpwcmVwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjOwotCi0gICAgICAgICAgICAgICAgICAgIGZvcihrPTA7IGs8cmVwc2l6ZTsgaysrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gcHJlcFtrXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgweDgwIDw9IGMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJ1dGYtOCIsIHMsIHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLTEsIGksICJzdXJyb2dhdGVzIG5vdCBhbGxvd2VkIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICpwKysgPSAoY2hhcilwcmVwW2tdOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICB9IGVsc2UgaWYgKGNoIDwgMHgxMDAwMCkgewotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweGUwIHwgKGNoID4+IDEyKSk7Ci0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ODAgfCAoKGNoID4+IDYpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKGNoICYgMHgzZikpOwotICAgICAgICB9IGVsc2UgLyogY2ggPj0gMHgxMDAwMCAqLyB7Ci0gICAgICAgICAgICAvKiBFbmNvZGUgVUNTNCBVbmljb2RlIG9yZGluYWxzICovCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpKDB4ZjAgfCAoY2ggPj4gMTgpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8ICgoY2ggPj4gMTIpICYgMHgzZikpOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSgweDgwIHwgKChjaCA+PiA2KSAmIDB4M2YpKTsKLSAgICAgICAgICAgICpwKysgPSAoY2hhcikoMHg4MCB8IChjaCAmIDB4M2YpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgewotICAgICAgICAvKiBUaGlzIHdhcyBzdGFjayBhbGxvY2F0ZWQuICovCi0gICAgICAgIG5uZWVkZWQgPSBwIC0gc3RhY2tidWY7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHN0YWNrYnVmLCBubmVlZGVkKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEN1dCBiYWNrIHRvIHNpemUgYWN0dWFsbHkgbmVlZGVkLiAqLwotICAgICAgICBubmVlZGVkID0gcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgICAgIGFzc2VydChubmVlZGVkIDw9IG5hbGxvY2F0ZWQpOwotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnJlc3VsdCwgbm5lZWRlZCk7Ci0gICAgfQotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLSBlcnJvcjoKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKLSAgICByZXR1cm4gTlVMTDsKLQotI3VuZGVmIE1BWF9TSE9SVF9VTklDSEFSUwotfQotCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzVVRGOFN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKLXsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX1VURjgodW5pY29kZSkpCisgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodW5pY29kZSkpOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgLyogdGhlIHN0cmluZyBjYW5ub3QgYmUgQVNDSUksIG9yIFB5VW5pY29kZV9VVEY4KCkgd291bGQgYmUgc2V0ICovCisgICAgICAgIGFzc2VydCghUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKTsKKyAgICAgICAgcmV0dXJuIHVjczFsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczRsaWJfdXRmOF9lbmNvZGVyKHVuaWNvZGUsIGRhdGEsIHNpemUsIGVycm9ycyk7CisgICAgfQorfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVVRGOChjb25zdCBQeV9VTklDT0RFICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICp2LCAqdW5pY29kZTsKKworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgdiA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiB2OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEY4U3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBOVUxMKTsKIH0KIAogLyogLS0tIFVURi0zMiBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC0zMTA3LDE0ICs0OTUwLDcgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgaW50IHBhaXJzID0gMDsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxcTsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgorICAgIFB5T2JqZWN0ICp1bmljb2RlOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplOwogICAgIGludCBibyA9IDA7ICAgICAgIC8qIGFzc3VtZSBuYXRpdmUgb3JkZXJpbmcgYnkgZGVmYXVsdCAqLwogICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9ICIiOwpAQCAtMzE3OCwyMyArNTAxNCwxMyBAQAogICAgICAgICBpb3JkZXJbM10gPSAwOwogICAgIH0KIAotICAgIC8qIE9uIG5hcnJvdyBidWlsZHMgd2Ugc3BsaXQgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCTVAgaW50byB0d28KLSAgICAgICBjb2RlcG9pbnRzID0+IGNvdW50IGhvdyBtdWNoIGV4dHJhIHNwYWNlIHdlIG5lZWQuICovCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGZvciAocXEgPSBxOyBxcSA8IGU7IHFxICs9IDQpCi0gICAgICAgIGlmIChxcVtpb3JkZXJbMl1dICE9IDAgfHwgcXFbaW9yZGVyWzNdXSAhPSAwKQotICAgICAgICAgICAgcGFpcnMrKzsKLSNlbmRpZgotCiAgICAgLyogVGhpcyBtaWdodCBiZSBvbmUgdG8gbXVjaCwgYmVjYXVzZSBvZiBhIEJPTSAqLwotICAgIHVuaWNvZGUgPSBfUHlVbmljb2RlX05ldygoc2l6ZSszKS80K3BhaXJzKTsKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldygoc2l6ZSszKS80LCAxMjcpOwogICAgIGlmICghdW5pY29kZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci0KLSAgICAvKiBVbnBhY2sgVVRGLTMyIGVuY29kZWQgZGF0YSAqLwotICAgIHAgPSB1bmljb2RlLT5zdHI7CisgICAgICAgIHJldHVybiB1bmljb2RlOworICAgIG91dHBvcyA9IDA7CiAKICAgICB3aGlsZSAocSA8IGUpIHsKICAgICAgICAgUHlfVUNTNCBjaDsKQEAgLTMyMTksMjQgKzUwNDUsMTYgQEAKICAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcys0OwogICAgICAgICAgICAgZ290byB1dGYzMkVycm9yOwogICAgICAgICB9Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkKLSAgICAgICAgewotICAgICAgICAgICAgKnArKyA9IDB4RDgwMCB8ICgoY2gtMHgxMDAwMCkgPj4gMTApOwotICAgICAgICAgICAgKnArKyA9IDB4REMwMCB8ICgoY2gtMHgxMDAwMCkgJiAweDNGRik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotI2VuZGlmCi0gICAgICAgICAgICAqcCsrID0gY2g7CisgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnVuaWNvZGUsICZvdXRwb3MsIGNoKSA8IDApCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIHEgKz0gNDsKICAgICAgICAgY29udGludWU7CiAgICAgICB1dGYzMkVycm9yOgotICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICJ1dGYzMiIsIGVycm1zZywKICAgICAgICAgICAgICAgICAmc3RhcnRzLCAoY29uc3QgY2hhciAqKikmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgKGNvbnN0IGNoYXIgKiopJnEsCi0gICAgICAgICAgICAgICAgJnVuaWNvZGUsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCkBAIC0zMjQ3LDEyICs1MDY1LDEyIEBACiAgICAgICAgICpjb25zdW1lZCA9IChjb25zdCBjaGFyICopcS1zdGFydHM7CiAKICAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gdW5pY29kZS0+c3RyKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYodW5pY29kZSk7CkBAIC0zMjYyLDE5ICs1MDgwLDE2IEBACiB9CiAKIFB5T2JqZWN0ICoKLVB5VW5pY29kZV9FbmNvZGVVVEYzMihjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IGJ5dGVvcmRlcikKK19QeVVuaWNvZGVfRW5jb2RlVVRGMzIoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICBpbnQgYnl0ZW9yZGVyKQogeworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7CiAgICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IG5zaXplLCBieXRlc2l6ZTsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgUHlfc3NpemVfdCBpLCBwYWlyczsKLSNlbHNlCi0gICAgY29uc3QgaW50IHBhaXJzID0gMDsKLSNlbmRpZgorICAgIFB5X3NzaXplX3QgbnNpemUsIGk7CiAgICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCiAjaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgaW9yZGVyW10gPSB7MCwgMSwgMiwgM307CkBAIC0zMjkxLDI2ICs1MTA2LDI3IEBACiAgICAgICAgIHAgKz0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSgwKQogCi0gICAgLyogSW4gbmFycm93IGJ1aWxkcyB3ZSBjYW4gb3V0cHV0IHN1cnJvZ2F0ZSBwYWlycyBhcyBvbmUgY29kZXBvaW50LAotICAgICAgIHNvIHdlIG5lZWQgbGVzcyBzcGFjZS4gKi8KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgZm9yIChpID0gcGFpcnMgPSAwOyBpIDwgc2l6ZS0xOyBpKyspCi0gICAgICAgIGlmICgweEQ4MDAgPD0gc1tpXSAmJiBzW2ldIDw9IDB4REJGRiAmJgotICAgICAgICAgICAgMHhEQzAwIDw9IHNbaSsxXSAmJiBzW2krMV0gPD0gMHhERkZGKQotICAgICAgICAgICAgcGFpcnMrKzsKLSNlbmRpZgotICAgIG5zaXplID0gKHNpemUgLSBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpOwotICAgIGJ5dGVzaXplID0gbnNpemUgKiA0OwotICAgIGlmIChieXRlc2l6ZSAvIDQgIT0gbnNpemUpCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3RyKSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworCisgICAgbnNpemUgPSBsZW4gKyAoYnl0ZW9yZGVyID09IDApOworICAgIGlmIChuc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gNCkKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNpemUpOworICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG5zaXplICogNCk7CiAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKICAgICBpZiAoYnl0ZW9yZGVyID09IDApCiAgICAgICAgIFNUT1JFQ0hBUigweEZFRkYpOwotICAgIGlmIChzaXplID09IDApCisgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICBnb3RvIGRvbmU7CiAKICAgICBpZiAoYnl0ZW9yZGVyID09IC0xKSB7CkBAIC0zMzI4LDM2ICs1MTQ0LDMzIEBACiAgICAgICAgIGlvcmRlclszXSA9IDA7CiAgICAgfQogCi0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVUNTNCBjaCA9ICpzKys7Ci0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoMHhEODAwIDw9IGNoICYmIGNoIDw9IDB4REJGRiAmJiBzaXplID4gMCkgewotICAgICAgICAgICAgUHlfVUNTNCBjaDIgPSAqczsKLSAgICAgICAgICAgIGlmICgweERDMDAgPD0gY2gyICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICBjaCA9ICgoKGNoICYgMHgzRkYpPDwxMCkgfCAoY2gyICYgMHgzRkYpKSArIDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIFNUT1JFQ0hBUihjaCk7Ci0gICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKKyAgICAgICAgU1RPUkVDSEFSKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKIAogICBkb25lOgogICAgIHJldHVybiB2OwogI3VuZGVmIFNUT1JFQ0hBUgogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlVVRGMzIoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7Ci0gICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKLSAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYzMihQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICByZXN1bHQgPSBfUHlVbmljb2RlX0VuY29kZVVURjMyKHRtcCwgZXJyb3JzLCBieXRlb3JkZXIpOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VURjMyU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjMyKHVuaWNvZGUsIE5VTEwsIDApOwogfQogCiAvKiAtLS0gVVRGLTE2IENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KQEAgLTMzNzEsMjMgKzUxODQsNiBAQAogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIGJ5dGVvcmRlciwgTlVMTCk7CiB9CiAKLS8qIFR3byBtYXNrcyBmb3IgZmFzdCBjaGVja2luZyBvZiB3aGV0aGVyIGEgQyAnbG9uZycgbWF5IGNvbnRhaW4KLSAgIFVURjE2LWVuY29kZWQgc3Vycm9nYXRlIGNoYXJhY3RlcnMuIFRoaXMgaXMgYW4gZWZmaWNpZW50IGhldXJpc3RpYywKLSAgIGFzc3VtaW5nIHRoYXQgbm9uLXN1cnJvZ2F0ZSBjaGFyYWN0ZXJzIHdpdGggYSBjb2RlIHBvaW50ID49IDB4ODAwMCBhcmUKLSAgIHJhcmUgaW4gbW9zdCBpbnB1dC4KLSAgIEZBU1RfQ0hBUl9NQVNLIGlzIHVzZWQgd2hlbiB0aGUgaW5wdXQgaXMgaW4gbmF0aXZlIGJ5dGUgb3JkZXJpbmcsCi0gICBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLIHdoZW4gdGhlIGlucHV0IGlzIGluIGJ5dGVzd2FwcGVkIG9yZGVyaW5nLgotKi8KLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSMgZGVmaW5lIEZBU1RfQ0hBUl9NQVNLICAgICAgICAgMHg4MDAwODAwMDgwMDA4MDAwTAotIyBkZWZpbmUgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSyAweDAwODAwMDgwMDA4MDAwODBMCi0jZWxpZiAoU0laRU9GX0xPTkcgPT0gNCkKLSMgZGVmaW5lIEZBU1RfQ0hBUl9NQVNLICAgICAgICAgMHg4MDAwODAwMEwKLSMgZGVmaW5lIFNXQVBQRURfRkFTVF9DSEFSX01BU0sgMHgwMDgwMDA4MEwKLSNlbHNlCi0jIGVycm9yIEMgJ2xvbmcnIHNpemUgc2hvdWxkIGJlIGVpdGhlciA0IG9yIDghCi0jZW5kaWYKLQogUHlPYmplY3QgKgogUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWwoY29uc3QgY2hhciAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKQEAgLTMzOTksMzEgKzUxOTUsMTQgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBQeV9zc2l6ZV90IG91dHBvczsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGU7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpxLCAqZSwgKmFsaWduZWRfZW5kOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnEsICplOwogICAgIGludCBibyA9IDA7ICAgICAgIC8qIGFzc3VtZSBuYXRpdmUgb3JkZXJpbmcgYnkgZGVmYXVsdCAqLwotICAgIGludCBuYXRpdmVfb3JkZXJpbmcgPSAwOworICAgIGludCBuYXRpdmVfb3JkZXJpbmc7CiAgICAgY29uc3QgY2hhciAqZXJybXNnID0gIiI7Ci0gICAgLyogT2Zmc2V0cyBmcm9tIHEgZm9yIHJldHJpZXZpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCi0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICBpbnQgaWhpID0gMSwgaWxvID0gMDsKLSNlbHNlCi0gICAgaW50IGloaSA9IDAsIGlsbyA9IDE7Ci0jZW5kaWYKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKIAotICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCi0gICAgICAgY2hhcmFjdGVyIGNvdW50ICovCi0gICAgdW5pY29kZSA9IF9QeVVuaWNvZGVfTmV3KHNpemUpOwotICAgIGlmICghdW5pY29kZSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXVuaWNvZGU7Ci0KLSAgICAvKiBVbnBhY2sgVVRGLTE2IGVuY29kZWQgZGF0YSAqLwotICAgIHAgPSB1bmljb2RlLT5zdHI7CiAgICAgcSA9ICh1bnNpZ25lZCBjaGFyICopczsKICAgICBlID0gcSArIHNpemU7CiAKQEAgLTM0MzQsMTc2ICs1MjEzLDk4IEBACiAgICAgICAgYnl0ZSBvcmRlciBzZXR0aW5nIGFjY29yZGluZ2x5LiBJbiBuYXRpdmUgbW9kZSwgdGhlIGxlYWRpbmcgQk9NCiAgICAgICAgbWFyayBpcyBza2lwcGVkLCBpbiBhbGwgb3RoZXIgbW9kZXMsIGl0IGlzIGNvcGllZCB0byB0aGUgb3V0cHV0CiAgICAgICAgc3RyZWFtIGFzLWlzIChnaXZpbmcgYSBaV05CU1AgY2hhcmFjdGVyKS4gKi8KLSAgICBpZiAoYm8gPT0gMCkgewotICAgICAgICBpZiAoc2l6ZSA+PSAyKSB7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFIGJvbSA9IChxW2loaV0gPDwgOCkgfCBxW2lsb107Ci0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICAgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gMTsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBpZiAoYm9tID09IDB4RkVGRikgewotICAgICAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgICAgICBibyA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib20gPT0gMHhGRkZFKSB7Ci0gICAgICAgICAgICAgICAgcSArPSAyOwotICAgICAgICAgICAgICAgIGJvID0gLTE7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICBpZiAoYm8gPT0gMCAmJiBzaXplID49IDIpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBib20gPSAocVsxXSA8PCA4KSB8IHFbMF07CisgICAgICAgIGlmIChib20gPT0gMHhGRUZGKSB7CisgICAgICAgICAgICBxICs9IDI7CisgICAgICAgICAgICBibyA9IC0xOwogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGJvbSA9PSAweEZGRkUpIHsKKyAgICAgICAgICAgIHEgKz0gMjsKKyAgICAgICAgICAgIGJvID0gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYnl0ZW9yZGVyKQorICAgICAgICAgICAgKmJ5dGVvcmRlciA9IGJvOwogICAgIH0KIAotICAgIGlmIChibyA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpaGkgPSAxOwotICAgICAgICBpbG8gPSAwOworICAgIGlmIChxID09IGUpIHsKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkID0gc2l6ZTsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9Ci0gICAgZWxzZSBpZiAoYm8gPT0gMSkgewotICAgICAgICAvKiBmb3JjZSBCRSAqLwotICAgICAgICBpaGkgPSAwOwotICAgICAgICBpbG8gPSAxOwotICAgIH0KKwogI2lmZGVmIEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOCi0gICAgbmF0aXZlX29yZGVyaW5nID0gaWxvIDwgaWhpOworICAgIG5hdGl2ZV9vcmRlcmluZyA9IGJvIDw9IDA7CiAjZWxzZQotICAgIG5hdGl2ZV9vcmRlcmluZyA9IGlsbyA+IGloaTsKKyAgICBuYXRpdmVfb3JkZXJpbmcgPSBibyA+PSAwOwogI2VuZGlmCiAKLSAgICBhbGlnbmVkX2VuZCA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopICgoc2l6ZV90KSBlICYgfkxPTkdfUFRSX01BU0spOworICAgIC8qIE5vdGU6IHNpemUgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZyBVbmljb2RlCisgICAgICAgY2hhcmFjdGVyIGNvdW50ICovCisgICAgdW5pY29kZSA9IFB5VW5pY29kZV9OZXcoKGUgLSBxICsgMSkgLyAyLCAxMjcpOworICAgIGlmICghdW5pY29kZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBvdXRwb3MgPSAwOwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2g7Ci0gICAgICAgIGlmIChlIC0gcSA8IDIpIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IDA7CisgICAgICAgIGlmIChlIC0gcSA+PSAyKSB7CisgICAgICAgICAgICBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHVuaWNvZGUpKQorICAgICAgICAgICAgICAgICAgICBjaCA9IGFzY2lpbGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2ggPSB1Y3MxbGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfMUJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVfb3JkZXJpbmcpOworICAgICAgICAgICAgfSBlbHNlIGlmIChraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgY2ggPSB1Y3MybGliX3V0ZjE2X2RlY29kZSgmcSwgZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCAmb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX29yZGVyaW5nKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGtpbmQgPT0gUHlVbmljb2RlXzRCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgIGNoID0gdWNzNGxpYl91dGYxNl9kZWNvZGUoJnEsIGUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgJm91dHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGNoKQorICAgICAgICB7CisgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgIC8qIHJlbWFpbmluZyBieXRlIGF0IHRoZSBlbmQ/IChzaXplIHNob3VsZCBiZSBldmVuKSAqLwogICAgICAgICAgICAgaWYgKHEgPT0gZSB8fCBjb25zdW1lZCkKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBnb3RvIEVuZDsKICAgICAgICAgICAgIGVycm1zZyA9ICJ0cnVuY2F0ZWQgZGF0YSI7CiAgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSBzdGFydHM7CiAgICAgICAgICAgICBlbmRpbnBvcyA9ICgoY29uc3QgY2hhciAqKWUpIC0gc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwotICAgICAgICAgICAgZ290byB1dGYxNkVycm9yOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAvKiBUaGUgcmVtYWluaW5nIGlucHV0IGNoYXJzIGFyZSBpZ25vcmVkIGlmIHRoZSBjYWxsYmFjawogICAgICAgICAgICAgICAgY2hvb3NlcyB0byBza2lwIHRoZSBpbnB1dCAqLwotICAgICAgICB9Ci0gICAgICAgIC8qIEZpcnN0IGNoZWNrIGZvciBwb3NzaWJsZSBhbGlnbmVkIHJlYWQgb2YgYSBDICdsb25nJy4gVW5hbGlnbmVkCi0gICAgICAgICAgIHJlYWRzIGFyZSBtb3JlIGV4cGVuc2l2ZSwgYmV0dGVyIHRvIGRlZmVyIHRvIGFub3RoZXIgaXRlcmF0aW9uLiAqLwotICAgICAgICBpZiAoISgoc2l6ZV90KSBxICYgTE9OR19QVFJfTUFTSykpIHsKLSAgICAgICAgICAgIC8qIEZhc3QgcGF0aCBmb3IgcnVucyBvZiBub24tc3Vycm9nYXRlIGNoYXJzLiAqLwotICAgICAgICAgICAgcmVnaXN0ZXIgY29uc3QgdW5zaWduZWQgY2hhciAqX3EgPSBxOwotICAgICAgICAgICAgUHlfVU5JQ09ERSAqX3AgPSBwOwotICAgICAgICAgICAgaWYgKG5hdGl2ZV9vcmRlcmluZykgewotICAgICAgICAgICAgICAgIC8qIE5hdGl2ZSBvcmRlcmluZyBpcyBzaW1wbGU6IGFzIGxvbmcgYXMgdGhlIGlucHV0IGNhbm5vdAotICAgICAgICAgICAgICAgICAgIHBvc3NpYmx5IGNvbnRhaW4gYSBzdXJyb2dhdGUgY2hhciwgZG8gYW4gdW5yb2xsZWQgY29weQotICAgICAgICAgICAgICAgICAgIG9mIHNldmVyYWwgMTYtYml0IGNvZGUgcG9pbnRzIHRvIHRoZSB0YXJnZXQgb2JqZWN0LgotICAgICAgICAgICAgICAgICAgIFRoZSBub24tc3Vycm9nYXRlIGNoZWNrIGlzIGRvbmUgb24gc2V2ZXJhbCBpbnB1dCBieXRlcwotICAgICAgICAgICAgICAgICAgIGF0IGEgdGltZSAoYXMgbWFueSBhcyBhIEMgJ2xvbmcnIGNhbiBjb250YWluKS4gKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoX3EgPCBhbGlnbmVkX2VuZCkgewotICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGRhdGEgPSAqICh1bnNpZ25lZCBsb25nICopIF9xOwotICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSAmIEZBU1RfQ0hBUl9NQVNLKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzBdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbMF07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzFdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbMV07Ci0jaWYgKFNJWkVPRl9MT05HID09IDgpCi0gICAgICAgICAgICAgICAgICAgIF9wWzJdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbMl07Ci0gICAgICAgICAgICAgICAgICAgIF9wWzNdID0gKCh1bnNpZ25lZCBzaG9ydCAqKSBfcSlbM107Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgX3EgKz0gU0laRU9GX0xPTkc7Ci0gICAgICAgICAgICAgICAgICAgIF9wICs9IFNJWkVPRl9MT05HIC8gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKiBCeXRlc3dhcHBlZCBvcmRlcmluZyBpcyBzaW1pbGFyLCBidXQgd2UgbXVzdCBkZWNvbXBvc2UKLSAgICAgICAgICAgICAgICAgICB0aGUgY29weSBieXRld2lzZSwgYW5kIHRha2UgY2FyZSBvZiB6ZXJvJ2luZyBvdXQgdGhlCi0gICAgICAgICAgICAgICAgICAgdXBwZXIgYnl0ZXMgaWYgdGhlIHRhcmdldCBvYmplY3QgaXMgaW4gMzItYml0IHVuaXRzCi0gICAgICAgICAgICAgICAgICAgKHRoYXQgaXMsIGluIFVDUy00IGJ1aWxkcykuICovCi0gICAgICAgICAgICAgICAgd2hpbGUgKF9xIDwgYWxpZ25lZF9lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBkYXRhID0gKiAodW5zaWduZWQgbG9uZyAqKSBfcTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiBTV0FQUEVEX0ZBU1RfQ0hBUl9NQVNLKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIC8qIFplcm8gdXBwZXIgYnl0ZXMgaW4gVUNTLTQgYnVpbGRzICovCi0jaWYgKFB5X1VOSUNPREVfU0laRSA+IDIpCi0gICAgICAgICAgICAgICAgICAgIF9wWzBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgX3BbMV0gPSAwOwotI2lmIChTSVpFT0ZfTE9ORyA9PSA4KQotICAgICAgICAgICAgICAgICAgICBfcFsyXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIF9wWzNdID0gMDsKLSNlbmRpZgotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIC8qIElzc3VlICM0OTE2OyBVQ1MtNCBidWlsZHMgb24gYmlnIGVuZGlhbiBtYWNoaW5lcyBtdXN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGZpbGwgdGhlIHR3byBsYXN0IGJ5dGVzIG9mIGVhY2ggNC1ieXRlIHVuaXQuICovCi0jaWYgKCFkZWZpbmVkKEJZVEVPUkRFUl9JU19MSVRUTEVfRU5ESUFOKSAmJiBQeV9VTklDT0RFX1NJWkUgPiAyKQotIyBkZWZpbmUgT0ZGIDIKLSNlbHNlCi0jIGRlZmluZSBPRkYgMAotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMV0gPSBfcVswXTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwXSA9IF9xWzFdOwotICAgICAgICAgICAgICAgICAgICAoKHVuc2lnbmVkIGNoYXIgKikgX3ApW09GRiArIDEgKyBQeV9VTklDT0RFX1NJWkVdID0gX3FbMl07Ci0gICAgICAgICAgICAgICAgICAgICgodW5zaWduZWQgY2hhciAqKSBfcClbT0ZGICsgMCArIFB5X1VOSUNPREVfU0laRV0gPSBfcVszXTsKLSNpZiAoU0laRU9GX0xPTkcgPT0gOCkKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgMiAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs0XTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwICsgMiAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs1XTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAxICsgMyAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs2XTsKLSAgICAgICAgICAgICAgICAgICAgKCh1bnNpZ25lZCBjaGFyICopIF9wKVtPRkYgKyAwICsgMyAqIFB5X1VOSUNPREVfU0laRV0gPSBfcVs3XTsKLSNlbmRpZgotI3VuZGVmIE9GRgotICAgICAgICAgICAgICAgICAgICBfcSArPSBTSVpFT0ZfTE9ORzsKLSAgICAgICAgICAgICAgICAgICAgX3AgKz0gU0laRU9GX0xPTkcgLyAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBfcDsKLSAgICAgICAgICAgIHEgPSBfcTsKLSAgICAgICAgICAgIGlmIChlIC0gcSA8IDIpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2ggPSAocVtpaGldIDw8IDgpIHwgcVtpbG9dOwotCi0gICAgICAgIHEgKz0gMjsKLQotICAgICAgICBpZiAoY2ggPCAweEQ4MDAgfHwgY2ggPiAweERGRkYpIHsKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgZXJybXNnID0gInVuZXhwZWN0ZWQgZW5kIG9mIGRhdGEiOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gMiAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gKChjb25zdCBjaGFyICopZSkgLSBzdGFydHM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgZXJybXNnID0gImlsbGVnYWwgZW5jb2RpbmciOworICAgICAgICAgICAgc3RhcnRpbnBvcyA9ICgoY29uc3QgY2hhciAqKXEpIC0gMiAtIHN0YXJ0czsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgZXJybXNnID0gImlsbGVnYWwgVVRGLTE2IHN1cnJvZ2F0ZSI7CisgICAgICAgICAgICBzdGFydGlucG9zID0gKChjb25zdCBjaGFyICopcSkgLSA0IC0gc3RhcnRzOworICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdW5pY29kZSwgJm91dHBvcywgY2gpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8qIFVURi0xNiBjb2RlIHBhaXI6ICovCi0gICAgICAgIGlmIChlIC0gcSA8IDIpIHsKLSAgICAgICAgICAgIGVycm1zZyA9ICJ1bmV4cGVjdGVkIGVuZCBvZiBkYXRhIjsKLSAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSAoKChjb25zdCBjaGFyICopcSkgLSAyKSAtIHN0YXJ0czsKLSAgICAgICAgICAgIGVuZGlucG9zID0gKChjb25zdCBjaGFyICopZSkgLSBzdGFydHM7Ci0gICAgICAgICAgICBnb3RvIHV0ZjE2RXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2gyID0gKHFbaWhpXSA8PCA4KSB8IHFbaWxvXTsKLSAgICAgICAgICAgIHEgKz0gMjsKLSAgICAgICAgICAgIGlmICgweERDMDAgPD0gY2gyICYmIGNoMiA8PSAweERGRkYpIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgKnArKyA9IGNoOwotICAgICAgICAgICAgICAgICpwKysgPSBjaDI7Ci0jZWxzZQotICAgICAgICAgICAgICAgICpwKysgPSAoKChjaCAmIDB4M0ZGKTw8MTApIHwgKGNoMiAmIDB4M0ZGKSkgKyAweDEwMDAwOwotI2VuZGlmCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBVVEYtMTYgc3Vycm9nYXRlIjsKLSAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gKCgoY29uc3QgY2hhciAqKXEpLTQpLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMjsKLSAgICAgICAgICAgICAgICBnb3RvIHV0ZjE2RXJyb3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgfQotICAgICAgICBlcnJtc2cgPSAiaWxsZWdhbCBlbmNvZGluZyI7Ci0gICAgICAgIHN0YXJ0aW5wb3MgPSAoKChjb25zdCBjaGFyICopcSktMiktc3RhcnRzOwotICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMjsKLSAgICAgICAgLyogRmFsbCB0aHJvdWdoIHRvIHJlcG9ydCB0aGUgZXJyb3IgKi8KLQotICAgICAgdXRmMTZFcnJvcjoKLSAgICAgICAgb3V0cG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpOwogICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgZXJyb3JzLAogICAgICAgICAgICAgICAgICZlcnJvckhhbmRsZXIsCkBAIC0zNjE1LDI3ICs1MzE2LDIxIEBACiAgICAgICAgICAgICAgICAgJmV4YywKICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKikmcSwKICAgICAgICAgICAgICAgICAmdW5pY29kZSwKLSAgICAgICAgICAgICAgICAmb3V0cG9zLAotICAgICAgICAgICAgICAgICZwKSkKKyAgICAgICAgICAgICAgICAmb3V0cG9zKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgLyogVXBkYXRlIGRhdGEgYmVjYXVzZSB1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlciBtaWdodCBoYXZlCi0gICAgICAgICAgIGNoYW5nZWQgdGhlIGlucHV0IG9iamVjdC4gKi8KLSAgICAgICAgYWxpZ25lZF9lbmQgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSAoKHNpemVfdCkgZSAmIH5MT05HX1BUUl9NQVNLKTsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyKQotICAgICAgICAqYnl0ZW9yZGVyID0gYm87Ci0KK0VuZDoKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IChjb25zdCBjaGFyICopcS1zdGFydHM7CiAKICAgICAvKiBBZGp1c3QgbGVuZ3RoICovCi0gICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ1bmljb2RlLCBwIC0gdW5pY29kZS0+c3RyKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdW5pY29kZTsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodW5pY29kZSk7CiAKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYodW5pY29kZSk7CkBAIC0zNjQ0LDggKzUzMzksNzcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotI3VuZGVmIEZBU1RfQ0hBUl9NQVNLCi0jdW5kZWYgU1dBUFBFRF9GQVNUX0NIQVJfTUFTSworUHlPYmplY3QgKgorX1B5VW5pY29kZV9FbmNvZGVVVEYxNihQeU9iamVjdCAqc3RyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCit7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIGNvbnN0IHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKnY7CisgICAgdW5zaWduZWQgc2hvcnQgKm91dDsKKyAgICBQeV9zc2l6ZV90IGJ5dGVzaXplOworICAgIFB5X3NzaXplX3QgcGFpcnM7CisjaWZkZWYgV09SRFNfQklHRU5ESUFOCisgICAgaW50IG5hdGl2ZV9vcmRlcmluZyA9IGJ5dGVvcmRlciA+PSAwOworI2Vsc2UKKyAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CisjZW5kaWYKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN0cikpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cik7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKworICAgIHBhaXJzID0gMDsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCkgeworICAgICAgICBjb25zdCBQeV9VQ1M0ICppbiA9IChjb25zdCBQeV9VQ1M0ICopZGF0YTsKKyAgICAgICAgY29uc3QgUHlfVUNTNCAqZW5kID0gaW4gKyBsZW47CisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkKKyAgICAgICAgICAgIGlmICgqaW4rKyA+PSAweDEwMDAwKQorICAgICAgICAgICAgICAgIHBhaXJzKys7CisgICAgfQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIGJ5dGVzaXplID0gKGxlbiArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKSkgKiAyOworICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGJ5dGVzaXplKTsKKyAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIG91dHB1dCBidWZmZXIgaXMgMi1ieXRlcyBhbGlnbmVkICovCisgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCAyKSk7CisgICAgb3V0ID0gKHVuc2lnbmVkIHNob3J0ICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQorICAgICAgICAqb3V0KysgPSAweEZFRkY7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiB7CisgICAgICAgIHVjczFsaWJfdXRmMTZfZW5jb2RlKG91dCwgKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiB7CisgICAgICAgIHVjczJsaWJfdXRmMTZfZW5jb2RlKG91dCwgKGNvbnN0IFB5X1VDUzIgKilkYXRhLCBsZW4sIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiB7CisgICAgICAgIHVjczRsaWJfdXRmMTZfZW5jb2RlKG91dCwgKGNvbnN0IFB5X1VDUzQgKilkYXRhLCBsZW4sIG5hdGl2ZV9vcmRlcmluZyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorCisgIGRvbmU6CisgICAgcmV0dXJuIHY7Cit9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9FbmNvZGVVVEYxNihjb25zdCBQeV9VTklDT0RFICpzLApAQCAtMzY1MywxMzYgKzU0MTcsMTQxIEBACiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgIGludCBieXRlb3JkZXIpCiB7Ci0gICAgUHlPYmplY3QgKnY7Ci0gICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICBQeV9zc2l6ZV90IG5zaXplLCBieXRlc2l6ZTsKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9zc2l6ZV90IGksIHBhaXJzOwotI2Vsc2UKLSAgICBjb25zdCBpbnQgcGFpcnMgPSAwOwotI2VuZGlmCi0gICAgLyogT2Zmc2V0cyBmcm9tIHAgZm9yIHN0b3JpbmcgYnl0ZSBwYWlycyBpbiB0aGUgcmlnaHQgb3JkZXIuICovCi0jaWZkZWYgQllURU9SREVSX0lTX0xJVFRMRV9FTkRJQU4KLSAgICBpbnQgaWhpID0gMSwgaWxvID0gMDsKLSNlbHNlCi0gICAgaW50IGloaSA9IDAsIGlsbyA9IDE7Ci0jZW5kaWYKLQotI2RlZmluZSBTVE9SRUNIQVIoQ0gpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwW2loaV0gPSAoKENIKSA+PiA4KSAmIDB4ZmY7ICAgICAgICAgICAgXAotICAgICAgICBwW2lsb10gPSAoQ0gpICYgMHhmZjsgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwICs9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUoMCkKLQotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGZvciAoaSA9IHBhaXJzID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICAgICAgaWYgKHNbaV0gPj0gMHgxMDAwMCkKLSAgICAgICAgICAgIHBhaXJzKys7Ci0jZW5kaWYKLSAgICAvKiAyICogKHNpemUgKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCkpICovCi0gICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCB8fAotICAgICAgICBzaXplID4gUFlfU1NJWkVfVF9NQVggLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCi0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIG5zaXplID0gc2l6ZSArIHBhaXJzICsgKGJ5dGVvcmRlciA9PSAwKTsKLSAgICBieXRlc2l6ZSA9IG5zaXplICogMjsKLSAgICBpZiAoYnl0ZXNpemUgLyAyICE9IG5zaXplKQotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB2ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7CisgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHAgPSAodW5zaWduZWQgY2hhciAqKVB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwotICAgIGlmIChieXRlb3JkZXIgPT0gMCkKLSAgICAgICAgU1RPUkVDSEFSKDB4RkVGRik7Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgZ290byBkb25lOwotCi0gICAgaWYgKGJ5dGVvcmRlciA9PSAtMSkgewotICAgICAgICAvKiBmb3JjZSBMRSAqLwotICAgICAgICBpaGkgPSAxOwotICAgICAgICBpbG8gPSAwOwotICAgIH0KLSAgICBlbHNlIGlmIChieXRlb3JkZXIgPT0gMSkgewotICAgICAgICAvKiBmb3JjZSBCRSAqLwotICAgICAgICBpaGkgPSAwOwotICAgICAgICBpbG8gPSAxOwotICAgIH0KLQotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotICAgICAgICBQeV9VTklDT0RFIGNoMiA9IDA7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChjaCA+PSAweDEwMDAwKSB7Ci0gICAgICAgICAgICBjaDIgPSAweERDMDAgfCAoKGNoLTB4MTAwMDApICYgMHgzRkYpOwotICAgICAgICAgICAgY2ggID0gMHhEODAwIHwgKChjaC0weDEwMDAwKSA+PiAxMCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBTVE9SRUNIQVIoY2gpOwotICAgICAgICBpZiAoY2gyKQotICAgICAgICAgICAgU1RPUkVDSEFSKGNoMik7Ci0gICAgfQotCi0gIGRvbmU6Ci0gICAgcmV0dXJuIHY7Ci0jdW5kZWYgU1RPUkVDSEFSCisgICAgcmVzdWx0ID0gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih0bXAsIGVycm9ycywgYnl0ZW9yZGVyKTsKKyAgICBQeV9ERUNSRUYodG1wKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNVVEYxNlN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVVVEYxNihQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYxNih1bmljb2RlLCBOVUxMLCAwKTsKIH0KIAogLyogLS0tIFVuaWNvZGUgRXNjYXBlIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKKy8qIEhlbHBlciBmdW5jdGlvbiBmb3IgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUsIGRldGVybWluZXMKKyAgIGlmIGFsbCB0aGUgZXNjYXBlcyBpbiB0aGUgc3RyaW5nIG1ha2UgaXQgc3RpbGwgYSB2YWxpZCBBU0NJSSBzdHJpbmcuCisgICBSZXR1cm5zIC0xIGlmIGFueSBlc2NhcGVzIHdlcmUgZm91bmQgd2hpY2ggY2F1c2UgdGhlIHN0cmluZyB0bworICAgcG9wIG91dCBvZiBBU0NJSSByYW5nZS4gIE90aGVyd2lzZSByZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlCisgICByZXF1aXJlZCBidWZmZXIgdG8gaG9sZCB0aGUgc3RyaW5nLgorICAgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitsZW5ndGhfb2ZfZXNjYXBlZF9hc2NpaV9zdHJpbmcoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKXM7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqZW5kID0gcCArIHNpemU7CisgICAgUHlfc3NpemVfdCBsZW5ndGggPSAwOworCisgICAgaWYgKHNpemUgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKDsgcCA8IGVuZDsgKytwKSB7CisgICAgICAgIGlmICgqcCA+IDEyNykgeworICAgICAgICAgICAgLyogTm9uLUFTQ0lJICovCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKnAgIT0gJ1xcJykgeworICAgICAgICAgICAgLyogTm9ybWFsIGNoYXJhY3RlciAqLworICAgICAgICAgICAgKytsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBCYWNrc2xhc2gtZXNjYXBlLCBjaGVjayBuZXh0IGNoYXIgKi8KKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIC8qIEVzY2FwZSBzZXF1ZW5jZSByZWFjaGVzIHRpbGwgZW5kIG9mIHN0cmluZyBvcgorICAgICAgICAgICAgICAgbm9uLUFTQ0lJIGZvbGxvdy11cC4gKi8KKyAgICAgICAgICAgIGlmIChwID49IGVuZCB8fCAqcCA+IDEyNykKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICBjYXNlICdcbic6CisgICAgICAgICAgICAgICAgLyogYmFja3NsYXNoICsgXG4gcmVzdWx0IGluIHplcm8gY2hhcmFjdGVycyAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcJyc6IGNhc2UgJ1wiJzoKKyAgICAgICAgICAgIGNhc2UgJ2InOiBjYXNlICdmJzogY2FzZSAndCc6CisgICAgICAgICAgICBjYXNlICduJzogY2FzZSAncic6IGNhc2UgJ3YnOiBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICArK2xlbmd0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgorICAgICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6CisgICAgICAgICAgICBjYXNlICd4JzogY2FzZSAndSc6IGNhc2UgJ1UnOiBjYXNlICdOJzoKKyAgICAgICAgICAgICAgICAvKiB0aGVzZSBkbyBub3QgZ3VhcmFudGVlIEFTQ0lJIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8qIGNvdW50IHRoZSBiYWNrc2xhc2ggKyB0aGUgb3RoZXIgY2hhcmFjdGVyICovCisgICAgICAgICAgICAgICAgbGVuZ3RoICs9IDI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKwogc3RhdGljIF9QeVVuaWNvZGVfTmFtZV9DQVBJICp1Y25oYXNoX0NBUEkgPSBOVUxMOwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwotICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIGludCBpOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIGludCBqOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjaGFyKiBtZXNzYWdlOwogICAgIFB5X1VDUzQgY2hyID0gMHhmZmZmZmZmZjsgLyogaW4gY2FzZSAnZ2V0Y29kZScgbWVzc2VzIHVwICovCiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlfc3NpemVfdCBpOwogCi0gICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKLSAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQotICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgotICAgICAgIChidXQgaWYgdGhlIGVycm9yIGNhbGxiYWNrIHJldHVybnMgYSBsb25nIHJlcGxhY2VtZW50IHN0cmluZwotICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbiA9IGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZyhzLCBzaXplKTsKKworICAgIC8qIEFmdGVyIGxlbmd0aF9vZl9lc2NhcGVkX2FzY2lpX3N0cmluZygpIHRoZXJlIGFyZSB0d28gYWx0ZXJuYXRpdmVzLAorICAgICAgIGVpdGhlciB0aGUgc3RyaW5nIGlzIHB1cmUgQVNDSUkgd2l0aCBuYW1lZCBlc2NhcGVzIGxpa2UgXG4sIGV0Yy4KKyAgICAgICBhbmQgd2UgZGV0ZXJtaW5lZCBpdCdzIGV4YWN0IHNpemUgKGNvbW1vbiBjYXNlKQorICAgICAgIG9yIGl0IGNvbnRhaW5zIFx4LCBcdSwgLi4uIGVzY2FwZSBzZXF1ZW5jZXMuICB0aGVuIHdlIGNyZWF0ZSBhCisgICAgICAgbGVnYWN5IHdjaGFyIHN0cmluZyBhbmQgcmVzaXplIGl0IGF0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbi4gKi8KKyAgICBpZiAobGVuID49IDApIHsKKyAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcobGVuLCAxMjcpOworICAgICAgICBpZiAoIXYpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORCh2KSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZworICAgICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQorICAgICAgICAgICBsZW5ndGggYWZ0ZXIgY29udmVyc2lvbiB0byB0aGUgdHJ1ZSB2YWx1ZS4KKyAgICAgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCisgICAgICAgICAgIHdlJ2xsIGhhdmUgdG8gYWxsb2NhdGUgbW9yZSBzcGFjZSkgKi8KKyAgICAgICAgdiA9IFB5VW5pY29kZV9OZXcoc2l6ZSwgMTI3KTsKKyAgICAgICAgaWYgKCF2KQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBsZW4gPSBzaXplOworICAgIH0KKwogICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOworICAgICAgICByZXR1cm4gdjsKKyAgICBpID0gMDsKICAgICBlbmQgPSBzICsgc2l6ZTsKIAogICAgIHdoaWxlIChzIDwgZW5kKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVU5JQ09ERSB4OworICAgICAgICBQeV9VQ1M0IHg7CiAgICAgICAgIGludCBkaWdpdHM7CiAKKyAgICAgICAgLyogVGhlIG9ubHkgY2FzZSBpbiB3aGljaCBpID09IGFzY2lpX2xlbmd0aCBpcyBhIGJhY2tzbGFzaAorICAgICAgICAgICBmb2xsb3dlZCBieSBhIG5ld2xpbmUuICovCisgICAgICAgIGFzc2VydChpIDw9IGxlbik7CisKICAgICAgICAgLyogTm9uLWVzY2FwZSBjaGFyYWN0ZXJzIGFyZSBpbnRlcnByZXRlZCBhcyBVbmljb2RlIG9yZGluYWxzICovCiAgICAgICAgIGlmICgqcyAhPSAnXFwnKSB7Ci0gICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmaSwgKHVuc2lnbmVkIGNoYXIpICpzKyspIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zNzkyLDIwICs1NTYxLDM0IEBACiAgICAgICAgIGMgPSAqcysrOwogICAgICAgICBpZiAocyA+IGVuZCkKICAgICAgICAgICAgIGMgPSAnXDAnOyAvKiBJbnZhbGlkIGFmdGVyIFwgKi8KKworICAgICAgICAvKiBUaGUgb25seSBjYXNlIGluIHdoaWNoIGkgPT0gYXNjaWlfbGVuZ3RoIGlzIGEgYmFja3NsYXNoCisgICAgICAgICAgIGZvbGxvd2VkIGJ5IGEgbmV3bGluZS4gKi8KKyAgICAgICAgYXNzZXJ0KGkgPCBsZW4gfHwgKGkgPT0gbGVuICYmIGMgPT0gJ1xuJykpOworCiAgICAgICAgIHN3aXRjaCAoYykgewogCiAgICAgICAgICAgICAvKiBceCBlc2NhcGVzICovCisjZGVmaW5lIFdSSVRFQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX3B1dGNoYXIoJnYsICZpLCBjaCkgPCAwKSAgICBcCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH13aGlsZSgwKQorCiAgICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xcJzogKnArKyA9ICdcXCc7IGJyZWFrOwotICAgICAgICBjYXNlICdcJyc6ICpwKysgPSAnXCcnOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCInOiAqcCsrID0gJ1wiJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiAqcCsrID0gJ1xiJzsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2YnOiAqcCsrID0gJ1wwMTQnOyBicmVhazsgLyogRkYgKi8KLSAgICAgICAgY2FzZSAndCc6ICpwKysgPSAnXHQnOyBicmVhazsKLSAgICAgICAgY2FzZSAnbic6ICpwKysgPSAnXG4nOyBicmVhazsKLSAgICAgICAgY2FzZSAncic6ICpwKysgPSAnXHInOyBicmVhazsKLSAgICAgICAgY2FzZSAndic6ICpwKysgPSAnXDAxMyc7IGJyZWFrOyAvKiBWVCAqLwotICAgICAgICBjYXNlICdhJzogKnArKyA9ICdcMDA3JzsgYnJlYWs7IC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLworICAgICAgICBjYXNlICdcXCc6IFdSSVRFQ0hBUignXFwnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1wnJzogV1JJVEVDSEFSKCdcJycpOyBicmVhazsKKyAgICAgICAgY2FzZSAnXCInOiBXUklURUNIQVIoJ1wiJyk7IGJyZWFrOworICAgICAgICBjYXNlICdiJzogV1JJVEVDSEFSKCdcYicpOyBicmVhazsKKyAgICAgICAgLyogRkYgKi8KKyAgICAgICAgY2FzZSAnZic6IFdSSVRFQ0hBUignXDAxNCcpOyBicmVhazsKKyAgICAgICAgY2FzZSAndCc6IFdSSVRFQ0hBUignXHQnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ24nOiBXUklURUNIQVIoJ1xuJyk7IGJyZWFrOworICAgICAgICBjYXNlICdyJzogV1JJVEVDSEFSKCdccicpOyBicmVhazsKKyAgICAgICAgLyogVlQgKi8KKyAgICAgICAgY2FzZSAndic6IFdSSVRFQ0hBUignXDAxMycpOyBicmVhazsKKyAgICAgICAgLyogQkVMLCBub3QgY2xhc3NpYyBDICovCisgICAgICAgIGNhc2UgJ2EnOiBXUklURUNIQVIoJ1wwMDcnKTsgYnJlYWs7CiAKICAgICAgICAgICAgIC8qIFxPT08gKG9jdGFsKSBlc2NhcGVzICovCiAgICAgICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOgpAQCAtMzgxNiw3ICs1NTk5LDcgQEAKICAgICAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKQogICAgICAgICAgICAgICAgICAgICB4ID0gKHg8PDMpICsgKnMrKyAtICcwJzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpwKysgPSB4OworICAgICAgICAgICAgV1JJVEVDSEFSKHgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIC8qIGhleCBlc2NhcGVzICovCkBAIC0zODM4LDI3ICs1NjIxLDI3IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICBoZXhlc2NhcGU6CiAgICAgICAgICAgICBjaHIgPSAwOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmIChzK2RpZ2l0cz5lbmQpIHsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHNpemU7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCAiZW5kIG9mIHN0cmluZyBpbiBlc2NhcGUgc2VxdWVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZpKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIGdvdG8gbmV4dEJ5dGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZGlnaXRzOyArK2kpIHsKLSAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHNbaV07CisgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZGlnaXRzOyArK2opIHsKKyAgICAgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpIHNbal07CiAgICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkgewotICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IChzK2krMSktc3RhcnRzOworICAgICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IChzK2orMSktc3RhcnRzOwogICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBjaHIgPSAoY2hyPDw0KSAmIH4weEY7CkBAIC0zODY5LDM0ICs1NjUyLDIyIEBACiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBjaHIgKz0gMTAgKyBjIC0gJ0EnOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcyArPSBpOworICAgICAgICAgICAgcyArPSBqOwogICAgICAgICAgICAgaWYgKGNociA9PSAweGZmZmZmZmZmICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICAgICAgLyogX2RlY29kaW5nX2Vycm9yIHdpbGwgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gaW50byB0aGUKICAgICAgICAgICAgICAgICAgICB0YXJnZXQgYnVmZmVyLiAqLwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBzdG9yZToKICAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNociBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgaWYgKGNociA8PSAweGZmZmYpCi0gICAgICAgICAgICAgICAgLyogVUNTLTIgY2hhcmFjdGVyICovCi0gICAgICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSBjaHI7Ci0gICAgICAgICAgICBlbHNlIGlmIChjaHIgPD0gMHgxMGZmZmYpIHsKLSAgICAgICAgICAgICAgICAvKiBVQ1MtNCBjaGFyYWN0ZXIuIEVpdGhlciBzdG9yZSBkaXJlY3RseSwgb3IgYXMKLSAgICAgICAgICAgICAgICAgICBzdXJyb2dhdGUgcGFpci4gKi8KLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAqcCsrID0gY2hyOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBjaHIgLT0gMHgxMDAwMEw7Ci0gICAgICAgICAgICAgICAgKnArKyA9IDB4RDgwMCArIChQeV9VTklDT0RFKSAoY2hyID4+IDEwKTsKLSAgICAgICAgICAgICAgICAqcCsrID0gMHhEQzAwICsgKFB5X1VOSUNPREUpIChjaHIgJiAweDAzRkYpOwotI2VuZGlmCisgICAgICAgICAgICBpZiAoY2hyIDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICAgICAgV1JJVEVDSEFSKGNocik7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcy1zdGFydHM7Ci0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzkwNiw3ICs1Njc3LDggQEAKICAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIC8qIGxvYWQgdGhlIHVuaWNvZGUgZGF0YSBtb2R1bGUgKi8KLSAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KFB5VW5pY29kZURhdGFfQ0FQU1VMRV9OQU1FLCAxKTsKKyAgICAgICAgICAgICAgICB1Y25oYXNoX0NBUEkgPSAoX1B5VW5pY29kZV9OYW1lX0NBUEkgKilQeUNhcHN1bGVfSW1wb3J0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlRGF0YV9DQVBTVUxFX05BTUUsIDEpOwogICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byB1Y25oYXNoRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0zOTE5LDE3ICs1NjkxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgIC8qIGZvdW5kIGEgbmFtZS4gIGxvb2sgaXQgdXAgaW4gdGhlIHVuaWNvZGUgZGF0YWJhc2UgKi8KICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJ1bmtub3duIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUiOwogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh1Y25oYXNoX0NBUEktPmdldGNvZGUoTlVMTCwgc3RhcnQsIChpbnQpKHMtc3RhcnQtMSksICZjaHIpKQorICAgICAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJLT5nZXRjb2RlKE5VTEwsIHN0YXJ0LCAoaW50KShzLXN0YXJ0LTEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaHIsIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBzdG9yZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAidW5pY29kZWVzY2FwZSIsIG1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdiwgJmkpKQogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zOTM4LDI4ICs1NzEwLDI5IEBACiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJcXCBhdCBlbmQgb2Ygc3RyaW5nIjsKICAgICAgICAgICAgICAgICBzLS07CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmljb2RlZXNjYXBlIiwgbWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmaSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcilzWy0xXTsKKyAgICAgICAgICAgICAgICBXUklURUNIQVIoJ1xcJyk7CisgICAgICAgICAgICAgICAgV1JJVEVDSEFSKHNbLTFdKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICBuZXh0Qnl0ZToKICAgICAgICAgOwogICAgIH0KLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnYsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSkgPCAwKQorI3VuZGVmIFdSSVRFQ0hBUgorCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBpKSA8IDApCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdCh2KTsKIAogICB1Y25oYXNoRXJyb3I6CiAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMzk4NSw3MCArNTc1OCw1NiBAQAogCiAqLwogCi1QeV9MT0NBTF9JTkxJTkUoY29uc3QgUHlfVU5JQ09ERSAqKSBmaW5kY2hhcihjb25zdCBQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7Ci0gICAgLyogbGlrZSB3Y3NjaHIsIGJ1dCBkb2Vzbid0IHN0b3AgYXQgTlVMTCBjaGFyYWN0ZXJzICovCi0KLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBpZiAoKnMgPT0gY2gpCi0gICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgcysrOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciAqaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOwotCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCi17CisgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSA9IDA7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgotCi0gICAgLyogWFhYKG5ub3J3aXR6KTogcmF0aGVyIHRoYW4gb3Zlci1hbGxvY2F0aW5nLCBpdCB3b3VsZCBiZQotICAgICAgIGJldHRlciB0byBjaG9vc2UgYSBkaWZmZXJlbnQgc2NoZW1lLiAgUGVyaGFwcyBzY2FuIHRoZQotICAgICAgIGZpcnN0IE4tY2hhcnMgb2YgdGhlIHN0cmluZyBhbmQgYWxsb2NhdGUgYmFzZWQgb24gdGhhdCBzaXplLgotICAgICovCi0gICAgLyogSW5pdGlhbCBhbGxvY2F0aW9uIGlzIGJhc2VkIG9uIHRoZSBsb25nZXN0LXBvc3NpYmxlIHVuaWNocgorICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSBjaGFyYWN0ZXIKICAgICAgICBlc2NhcGUuCiAKLSAgICAgICBJbiB3aWRlIChVVEYtMzIpIGJ1aWxkcyAnXFUwMHh4eHh4eCcgaXMgMTAgY2hhcnMgcGVyIHNvdXJjZQotICAgICAgIHVuaWNociwgc28gaW4gdGhpcyBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4gSW4KLSAgICAgICBuYXJyb3cgKFVURi0xNikgYnVpbGRzIHRoaXMgaXMgZml2ZSBjaGFycyBwZXIgc291cmNlIHVuaWNocgotICAgICAgIHNpbmNlIHRoZXJlIGFyZSB0d28gdW5pY2hycyBpbiB0aGUgc3Vycm9nYXRlIHBhaXIsIHNvIGluIG5hcnJvdwotICAgICAgIChVVEYtMTYpIGJ1aWxkcyBpdCdzIG5vdCB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSBvciBuYXJyb3cgYnVpbGRzICdcdXh4eHgnIGlzIDYgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIsCi0gICAgICAgc28gaW4gdGhlIG5hcnJvdyAoVVRGLTE2KSBidWlsZCBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyCi0gICAgICAgZXNjYXBlLgorICAgICAgIEZvciBVQ1MxIHN0cmluZ3MgaXQncyAnXHh4eCcsIDQgYnl0ZXMgcGVyIHNvdXJjZSBjaGFyYWN0ZXIuCisgICAgICAgRm9yIFVDUzIgc3RyaW5ncyBpdCdzICdcdXh4eHgnLCA2IGJ5dGVzIHBlciBzb3VyY2UgY2hhcmFjdGVyLgorICAgICAgIEZvciBVQ1M0IHN0cmluZ3MgaXQncyAnXFUwMHh4eHh4eCcsIDEwIGJ5dGVzIHBlciBzb3VyY2UgY2hhcmFjdGVyLgogICAgICovCiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSA0OyBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOiBleHBhbmRzaXplID0gNjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDEwOyBicmVhazsKKyAgICB9CisKKyAgICBpZiAobGVuID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwogCi0gICAgaWYgKHNpemUgPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiAoUFlfU1NJWkVfVF9NQVggLSAyIC0gMSkgLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAogICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwYW5kc2l6ZSpzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBleHBhbmRzaXplKmxlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7CiAgICAgaWYgKHJlcHIgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBwID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CiAKLSAgICB3aGlsZSAoc2l6ZS0tID4gMCkgewotICAgICAgICBQeV9VTklDT0RFIGNoID0gKnMrKzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIC8qIEVzY2FwZSBiYWNrc2xhc2hlcyAqLwogICAgICAgICBpZiAoY2ggPT0gJ1xcJykgewpAQCAtNDA1Nyw1NyArNTgxNiwzMCBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQogICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCiAgICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REMwMCkgewotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICBQeV9VQ1M0IHVjczsKLQotICAgICAgICAgICAgY2gyID0gKnMrKzsKLSAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgIGlmIChjaDIgPj0gMHhEQzAwICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICB1Y3MgPSAoKChjaCAmIDB4MDNGRikgPDwgMTApIHwgKGNoMiAmIDB4MDNGRikpICsgMHgwMDAxMDAwMDsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAqcCsrID0gJ1UnOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDIwKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMTIpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDgpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1t1Y3MgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaDogaXNvbGF0ZWQgc3Vycm9nYXRlcyBhcmUgY29waWVkIGFzLWlzICovCi0gICAgICAgICAgICBzLS07Ci0gICAgICAgICAgICBzaXplKys7Ci0gICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIC8qIE1hcCAxNi1iaXQgY2hhcmFjdGVycyB0byAnXHV4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMjU2KSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CiAgICAgICAgIH0KIAogICAgICAgICAvKiBNYXAgc3BlY2lhbCB3aGl0ZXNwYWNlIHRvICdcdCcsIFxuJywgJ1xyJyAqLwpAQCAtNDEyOCw4ICs1ODYwLDggQEAKICAgICAgICAgZWxzZSBpZiAoY2ggPCAnICcgfHwgY2ggPj0gMHg3RikgewogICAgICAgICAgICAgKnArKyA9ICdcXCc7CiAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCkBAIC00MTQzLDMwICs1ODc1LDMxIEBACiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqczsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzID0gUHlVbmljb2RlX0VuY29kZVVuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSk7Ci0gICAgcmV0dXJuIHM7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZyh0bXApOworICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8qIC0tLSBSYXcgVW5pY29kZSBFc2NhcGUgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpiczsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKQEAgLTQxNzYsMTIgKzU5MDksMTIgQEAKICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQogICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLiAoQnV0IGRlY29kaW5nIGVycm9yCiAgICAgICAgaGFuZGxlciBtaWdodCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nKSAqLwotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZW5kID0gcyArIHNpemU7CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBjOwpAQCAtNDE5MSw3ICs1OTI0LDggQEAKIAogICAgICAgICAvKiBOb24tZXNjYXBlIGNoYXJhY3RlcnMgYXJlIGludGVycHJldGVkIGFzIFVuaWNvZGUgb3JkaW5hbHMgKi8KICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAodW5zaWduZWQgY2hhcikqcysrOworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgKHVuc2lnbmVkIGNoYXIpKnMrKykgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKQEAgLTQyMDIsMTkgKzU5MzYsMTkgQEAKICAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKICAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSpzKys7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCAodW5zaWduZWQgY2hhcikqcysrKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CiAgICAgICAgIGlmICgoKHMgLSBicykgJiAxKSA9PSAwIHx8CiAgICAgICAgICAgICBzID49IGVuZCB8fAogICAgICAgICAgICAgKCpzICE9ICd1JyAmJiAqcyAhPSAnVScpKSB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBwLS07CisgICAgICAgIG91dHBvcy0tOwogICAgICAgICBjb3VudCA9ICpzPT0ndScgPyA0IDogODsKICAgICAgICAgcysrOwogCiAgICAgICAgIC8qIFx1WFhYWCB3aXRoIDQgaGV4IGRpZ2l0cywgXFV4eHh4eHh4eCB3aXRoIDggKi8KLSAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgZm9yICh4ID0gMCwgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK3MpIHsKICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKICAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKQEAgLTQyMjMsNyArNTk1Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBnb3RvIG5leHRCeXRlOwogICAgICAgICAgICAgfQpAQCAtNDIzNSwzNyArNTk2OSwyNiBAQAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwogICAgICAgICB9Ci0gICAgICAgIGlmICh4IDw9IDB4ZmZmZikKLSAgICAgICAgICAgIC8qIFVDUy0yIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSB4OwotICAgICAgICBlbHNlIGlmICh4IDw9IDB4MTBmZmZmKSB7Ci0gICAgICAgICAgICAvKiBVQ1MtNCBjaGFyYWN0ZXIuIEVpdGhlciBzdG9yZSBkaXJlY3RseSwgb3IgYXMKLSAgICAgICAgICAgICAgIHN1cnJvZ2F0ZSBwYWlyLiAqLwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgKnArKyA9IChQeV9VTklDT0RFKSB4OwotI2Vsc2UKLSAgICAgICAgICAgIHggLT0gMHgxMDAwMEw7Ci0gICAgICAgICAgICAqcCsrID0gMHhEODAwICsgKFB5X1VOSUNPREUpICh4ID4+IDEwKTsKLSAgICAgICAgICAgICpwKysgPSAweERDMDAgKyAoUHlfVU5JQ09ERSkgKHggJiAweDAzRkYpOwotI2VuZGlmCisgICAgICAgIGlmICh4IDw9IE1BWF9VTklDT0RFKSB7CisgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCB4KSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKLSAgICAgICAgICAgIG91dHBvcyA9IHAtUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCAiXFxVeHh4eHh4eHggb3V0IG9mIHJhbmdlIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmVuZCwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zLCAmcCkpCisgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgIG5leHRCeXRlOgogICAgICAgICA7CiAgICAgfQotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTQyNzQsMTQ0ICs1OTk3LDEzOSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUpCisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKICAgICBjaGFyICpxOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZSwgcG9zOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfc3NpemVfdCBsZW47CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBjb25zdCBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAxMDsKLSNlbHNlCi0gICAgY29uc3QgUHlfc3NpemVfdCBleHBhbmRzaXplID0gNjsKLSNlbmRpZgorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CisgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLworICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CiAKLSAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC8gZXhwYW5kc2l6ZSkKKyAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKIAotICAgIHJlcHIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGV4cGFuZHNpemUgKiBzaXplKTsKKyAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBleHBhbmRzaXplICogbGVuKTsKICAgICBpZiAocmVwciA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIHJlcHI7CiAKICAgICBwID0gcSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotICAgIHdoaWxlIChzaXplLS0gPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcysrOwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBwb3MrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKICAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwogICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgeworICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICpwKysgPSAnXFwnOwogICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICBlbHNlCi0jZWxzZQotICAgICAgICAgICAgLyogTWFwIFVURi0xNiBzdXJyb2dhdGUgcGFpcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDwgMHhEQzAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDI7Ci0gICAgICAgICAgICAgICAgUHlfVUNTNCB1Y3M7Ci0KLSAgICAgICAgICAgICAgICBjaDIgPSAqcysrOwotICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVjcyA9ICgoKGNoICYgMHgwM0ZGKSA8PCAxMCkgfCAoY2gyICYgMHgwM0ZGKSkgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4Zl07Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2g6IGlzb2xhdGVkIHN1cnJvZ2F0ZXMgYXJlIGNvcGllZCBhcy1pcyAqLwotICAgICAgICAgICAgICAgIHMtLTsKLSAgICAgICAgICAgICAgICBzaXplKys7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGlmIChjaCA+PSAyNTYpIHsKKyAgICAgICAgZWxzZSBpZiAoY2ggPj0gMjU2KSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1tjaCAmIDE1XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMTVdOwogICAgICAgICB9CiAgICAgICAgIC8qIENvcHkgZXZlcnl0aGluZyBlbHNlIGFzLWlzICovCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgfQotICAgIHNpemUgPSBwIC0gcTsKIAotICAgIGFzc2VydChzaXplID4gMCk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgc2l6ZSkgPCAwKQorICAgIGFzc2VydChwID4gcSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIHEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIHJlcHI7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoY29uc3QgUHlfVU5JQ09ERSAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSkKIHsKLSAgICBQeU9iamVjdCAqczsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgewotICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzLCBzaXplKTsKKyAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzID0gUHlVbmljb2RlX0VuY29kZVJhd1VuaWNvZGVFc2NhcGUoUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSk7Ci0KLSAgICByZXR1cm4gczsKKyAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CisgICAgUHlfREVDUkVGKHRtcCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogLS0tIFVuaWNvZGUgSW50ZXJuYWwgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlSW50ZXJuYWwoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9EZWNvZGVVbmljb2RlSW50ZXJuYWwoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwogICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp2OwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBjb25zdCBjaGFyICpyZWFzb247CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICBQeV9VTklDT0RFIHVuaW1heCA9IFB5VW5pY29kZV9HZXRNYXgoKTsKLSNlbmRpZgorICAgIGlmIChQeUVycl9XYXJuRXgoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwgY29kZWMgaGFzIGJlZW4gZGVwcmVjYXRlZCIsCisgICAgICAgICAgICAgICAgICAgICAxKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBYWFggb3ZlcmZsb3cgZGV0ZWN0aW9uIG1pc3NpbmcgKi8KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoKHNpemUrUHlfVU5JQ09ERV9TSVpFLTEpLyBQeV9VTklDT0RFX1NJWkUpOworICAgIHYgPSBQeVVuaWNvZGVfTmV3KChzaXplK1B5X1VOSUNPREVfU0laRS0xKS8gUHlfVU5JQ09ERV9TSVpFLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoUHlVbmljb2RlX0dldFNpemUoKFB5T2JqZWN0ICopdikgPT0gMCkKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKXY7Ci0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHYpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSA9PSAwKQorICAgICAgICByZXR1cm4gdjsKKyAgICBvdXRwb3MgPSAwOwogICAgIGVuZCA9IHMgKyBzaXplOwogCiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgbWVtY3B5KHAsIHMsIHNpemVvZihQeV9VTklDT0RFKSk7CisgICAgICAgIFB5X1VOSUNPREUgdWNoOworICAgICAgICBQeV9VQ1M0IGNoOworICAgICAgICAvKiBXZSBjb3B5IHRoZSByYXcgcmVwcmVzZW50YXRpb24gb25lIGJ5dGUgYXQgYSB0aW1lIGJlY2F1c2UgdGhlCisgICAgICAgICAgIHBvaW50ZXIgbWF5IGJlIHVuYWxpZ25lZCAoc2VlIHRlc3RfY29kZWNjYWxsYmFja3MpLiAqLworICAgICAgICAoKGNoYXIgKikgJnVjaClbMF0gPSBzWzBdOworICAgICAgICAoKGNoYXIgKikgJnVjaClbMV0gPSBzWzFdOworI2lmZGVmIFB5X1VOSUNPREVfV0lERQorICAgICAgICAoKGNoYXIgKikgJnVjaClbMl0gPSBzWzJdOworICAgICAgICAoKGNoYXIgKikgJnVjaClbM10gPSBzWzNdOworI2VuZGlmCisgICAgICAgIGNoID0gdWNoOworCiAgICAgICAgIC8qIFdlIGhhdmUgdG8gc2FuaXR5IGNoZWNrIHRoZSByYXcgZGF0YSwgb3RoZXJ3aXNlIGRvb20gbG9vbXMgZm9yCiAgICAgICAgICAgIHNvbWUgbWFsZm9ybWVkIFVDUy00IGRhdGEuICovCiAgICAgICAgIGlmICgKICNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICpwID4gdW5pbWF4IHx8ICpwIDwgMCB8fAorICAgICAgICAgICAgY2ggPiAweDEwZmZmZiB8fAogI2VuZGlmCiAgICAgICAgICAgICBlbmQtcyA8IFB5X1VOSUNPREVfU0laRQogICAgICAgICAgICAgKQpAQCAtNDQyNSwyNiArNjE0MywzOSBAQAogICAgICAgICAgICAgICAgIGVuZGlucG9zID0gcyAtIHN0YXJ0cyArIFB5X1VOSUNPREVfU0laRTsKICAgICAgICAgICAgICAgICByZWFzb24gPSAiaWxsZWdhbCBjb2RlIHBvaW50ICg+IDB4MTBGRkZGKSI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvdXRwb3MgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CiAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGVfaW50ZXJuYWwiLCByZWFzb24sCiAgICAgICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICZ2LCAmb3V0cG9zKSkKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOworI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKKyAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNfSElHSF9TVVJST0dBVEUoY2gpICYmIHMgPCBlbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFB5X1VOSUNPREUgdWNoMjsKKyAgICAgICAgICAgICgoY2hhciAqKSAmdWNoMilbMF0gPSBzWzBdOworICAgICAgICAgICAgKChjaGFyICopICZ1Y2gyKVsxXSA9IHNbMV07CisgICAgICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKHVjaDIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNoID0gUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVModWNoLCB1Y2gyKTsKKyAgICAgICAgICAgICAgICBzICs9IFB5X1VOSUNPREVfU0laRTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHArKzsKLSAgICAgICAgICAgIHMgKz0gUHlfVU5JQ09ERV9TSVpFOwotICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLCBjaCkgPCAwKQorICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LCBvdXRwb3MpIDwgMCkKICAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih2KTsKQEAgLTQ0NTUsNTcgKzYxODYsMjcgQEAKIAogLyogLS0tIExhdGluLTEgQ29kZWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIGNvbnN0IGNoYXIgKmUsICp1bnJvbGxlZF9lbmQ7Ci0KICAgICAvKiBMYXRpbi0xIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGZpcnN0IDI1NiBvcmRpbmFscyBpbiBVbmljb2RlLiAqLwotICAgIGlmIChzaXplID09IDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERSByID0gKih1bnNpZ25lZCBjaGFyKilzOwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKCZyLCAxKTsKLSAgICB9Ci0KLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKLSAgICBlID0gcyArIHNpemU7Ci0gICAgLyogVW5yb2xsaW5nIHRoZSBjb3B5IG1ha2VzIGl0IG11Y2ggZmFzdGVyIGJ5IHJlZHVjaW5nIHRoZSBsb29waW5nCi0gICAgICAgb3ZlcmhlYWQuIFRoaXMgaXMgc2ltaWxhciB0byB3aGF0IG1hbnkgbWVtY3B5KCkgaW1wbGVtZW50YXRpb25zIGRvLiAqLwotICAgIHVucm9sbGVkX2VuZCA9IGUgLSA0OwotICAgIHdoaWxlIChzIDwgdW5yb2xsZWRfZW5kKSB7Ci0gICAgICAgIHBbMF0gPSAodW5zaWduZWQgY2hhcikgc1swXTsKLSAgICAgICAgcFsxXSA9ICh1bnNpZ25lZCBjaGFyKSBzWzFdOwotICAgICAgICBwWzJdID0gKHVuc2lnbmVkIGNoYXIpIHNbMl07Ci0gICAgICAgIHBbM10gPSAodW5zaWduZWQgY2hhcikgc1szXTsKLSAgICAgICAgcyArPSA0OwotICAgICAgICBwICs9IDQ7Ci0gICAgfQotICAgIHdoaWxlIChzIDwgZSkKLSAgICAgICAgKnArKyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOwotICAgIHJldHVybiAoUHlPYmplY3QgKil2OwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRih2KTsKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9Gcm9tVUNTMSgodW5zaWduZWQgY2hhciopcywgc2l6ZSk7CiB9CiAKIC8qIGNyZWF0ZSBvciBhZGp1c3QgYSBVbmljb2RlRW5jb2RlRXJyb3IgKi8KLXN0YXRpYyB2b2lkIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK21ha2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkgewotICAgICAgICAqZXhjZXB0aW9uT2JqZWN0ID0gUHlVbmljb2RlRW5jb2RlRXJyb3JfQ3JlYXRlKAotICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICpleGNlcHRpb25PYmplY3QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oCisgICAgICAgICAgICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IsICJzT25ucyIsCisgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRTdGFydCgqZXhjZXB0aW9uT2JqZWN0LCBzdGFydHBvcykpCkBAIC00NTIyLDE0ICs2MjIzLDE1IEBACiB9CiAKIC8qIHJhaXNlcyBhIFVuaWNvZGVFbmNvZGVFcnJvciAqLwotc3RhdGljIHZvaWQgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKK3N0YXRpYyB2b2lkCityYWlzZV9lbmNvZGVfZXhjZXB0aW9uKFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24pCiB7CiAgICAgbWFrZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLCBzdGFydHBvcywgZW5kcG9zLCByZWFzb24pOwogICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ICE9IE5VTEwpCiAgICAgICAgIFB5Q29kZWNfU3RyaWN0RXJyb3JzKCpleGNlcHRpb25PYmplY3QpOwogfQpAQCAtNDUzOCwxNSArNjI0MCwxNiBAQAogICAgYnVpbGQgYXJndW1lbnRzLCBjYWxsIHRoZSBjYWxsYmFjayBhbmQgY2hlY2sgdGhlIGFyZ3VtZW50cywKICAgIHB1dCB0aGUgcmVzdWx0IGludG8gbmV3cG9zIGFuZCByZXR1cm4gdGhlIHJlcGxhY2VtZW50IHN0cmluZywgd2hpY2gKICAgIGhhcyB0byBiZSBmcmVlZCBieSB0aGUgY2FsbGVyICovCi1zdGF0aWMgUHlPYmplY3QgKnVuaWNvZGVfZW5jb2RlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnVuaWNvZGUsIFB5X3NzaXplX3Qgc2l6ZSwgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7Ci0KKyAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeU9iamVjdCAqcmVzdHVwbGU7CiAgICAgUHlPYmplY3QgKnJlc3VuaWNvZGU7CiAKQEAgLTQ1NTYsOCArNjI1OSwxMiBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisKICAgICBtYWtlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgdW5pY29kZSwgc2l6ZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTQ1ODEsOCArNjI4OCw4IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAoKm5ld3BvczwwKQotICAgICAgICAqbmV3cG9zID0gc2l6ZSsqbmV3cG9zOwotICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5zaXplKSB7CisgICAgICAgICpuZXdwb3MgPSBsZW4gKyAqbmV3cG9zOworICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5sZW4pIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0luZGV4RXJyb3IsICJwb3NpdGlvbiAlemQgZnJvbSBlcnJvciBoYW5kbGVyIG91dCBvZiBib3VuZHMiLCAqbmV3cG9zKTsKICAgICAgICAgUHlfREVDUkVGKHJlc3R1cGxlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00NTkyLDE4ICs2Mjk5LDE3IEBACiAgICAgcmV0dXJuIHJlc3VuaWNvZGU7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV9lbmNvZGVfdWNzMShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0KQorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfZW5jb2RlX3VjczEoUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0KQogeworICAgIC8qIGlucHV0IHN0YXRlICovCisgICAgUHlfc3NpemVfdCBwb3M9MCwgc2l6ZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOwogICAgIC8qIG91dHB1dCBvYmplY3QgKi8KICAgICBQeU9iamVjdCAqcmVzOwotICAgIC8qIHBvaW50ZXJzIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCsxIG9mIGlucHV0ICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3RhcnRwID0gcDsKLSAgICBjb25zdCBQeV9VTklDT0RFICplbmRwID0gcCArIHNpemU7Ci0gICAgLyogcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSB1bmVuY29kYWJsZSBjaGFyYWN0ZXJzICovCi0gICAgLyogY29uc3QgUHlfVU5JQ09ERSAqYmFkcCA9IE5VTEw7ICovCiAgICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KICAgICBjaGFyICpzdHI7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KQEAgLTQ2MTYsNiArNjMyMiwxMSBAQAogICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwogICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgZW5jb2Rpbmcgd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KICAgICBpZiAoc2l6ZSA9PSAwKQpAQCAtNDYyNiwyOCArNjMzNywyNCBAQAogICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7CiAgICAgcmVzc2l6ZSA9IHNpemU7CiAKLSAgICB3aGlsZSAocDxlbmRwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYyA9ICpwOworICAgIHdoaWxlIChwb3MgPCBzaXplKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHBvcyk7CiAKICAgICAgICAgLyogY2FuIHdlIGVuY29kZSB0aGlzPyAqLwogICAgICAgICBpZiAoYzxsaW1pdCkgewogICAgICAgICAgICAgLyogbm8gb3ZlcmZsb3cgY2hlY2ssIGJlY2F1c2Ugd2Uga25vdyB0aGF0IHRoZSBzcGFjZSBpcyBlbm91Z2ggKi8KICAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWM7Ci0gICAgICAgICAgICArK3A7CisgICAgICAgICAgICArK3BvczsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgdW5pY29kZXBvcyA9IHAtc3RhcnRwOwogICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemU7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZTsKLSAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXNwb3M7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1bmkyOworICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBuZXdwb3MsIHJlc3BvcywgaTsKICAgICAgICAgICAgIC8qIHN0YXJ0cG9zIGZvciBjb2xsZWN0aW5nIHVuZW5jb2RhYmxlIGNoYXJzICovCi0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsc3RhcnQgPSBwOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbGVuZCA9IHA7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydCA9IHBvczsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IHBvczsKICAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVuZWNvZGFibGUgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgd2hpbGUgKChjb2xsZW5kIDwgZW5kcCkgJiYgKCgqY29sbGVuZCk+PWxpbWl0KSkKKyAgICAgICAgICAgIHdoaWxlICgoY29sbGVuZCA8IHNpemUpICYmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBjb2xsZW5kKT49bGltaXQpKQogICAgICAgICAgICAgICAgICsrY29sbGVuZDsKICAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCiAgICAgICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewpAQCAtNDY2NCwzOSArNjM3MSwzNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKICAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgc3RhcnRwLCBzaXplLCBjb2xsc3RhcnQtc3RhcnRwLCBjb2xsZW5kLXN0YXJ0cCwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQsIHJlYXNvbik7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKGNvbGxzdGFydCsrPGNvbGxlbmQpCiAgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICc/JzsgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLwotICAgICAgICAgICAgICAgIHAgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCiAgICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICAvKiBkZXRlcm1pbmUgcmVwbGFjZW1lbnQgc2l6ZSAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0LCByZXBzaXplID0gMDsgcCA8IGNvbGxlbmQ7ICsrcCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKnA8MTApCisgICAgICAgICAgICAgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQsIHJlcHNpemUgPSAwOyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrMSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzIrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMCkKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVwc2l6ZSArPSAyKzMrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrNCsxOwotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis1KzE7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrNSsxOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDAwKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMDApCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBzaXplICs9IDIrNisxOwotICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHNpemUgKz0gMis3KzE7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoZW5kcC1jb2xsZW5kKTsKKyAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSByZXNwb3MrcmVwc2l6ZSsoc2l6ZS1jb2xsZW5kKTsKICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplID4gcmVzc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWRzaXplPDIqcmVzc2l6ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IDIqcmVzc2l6ZTsKQEAgLTQ3MDUsMTcgKzY0MTAsMTggQEAKICAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKICAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBwKSAqLwotICAgICAgICAgICAgICAgIGZvciAocCA9IGNvbGxzdGFydDsgcCA8IGNvbGxlbmQ7ICsrcCkgewotICAgICAgICAgICAgICAgICAgICBzdHIgKz0gc3ByaW50ZihzdHIsICImIyVkOyIsIChpbnQpKnApOworICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCisgICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCBzdGFydHAsIHNpemUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCAmbmV3cG9zKTsKLSAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQsIGNvbGxlbmQsICZuZXdwb3MpOworICAgICAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwgfHwgKFB5VW5pY29kZV9DaGVjayhyZXB1bmljb2RlKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShyZXB1bmljb2RlKSA9PSAtMSkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXB1bmljb2RlKSkgewogICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCkBAIC00NzMyLDcgKzY0MzgsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIG1lbWNweShzdHIsIFB5Qnl0ZXNfQXNTdHJpbmcocmVwdW5pY29kZSksIHJlcHNpemUpOwogICAgICAgICAgICAgICAgICAgICBzdHIgKz0gcmVwc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgcCA9IHN0YXJ0cCArIG5ld3BvczsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gbmV3cG9zOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KQEAgLTQ3NDAsOCArNjQ0Niw4IEBACiAgICAgICAgICAgICAgICAgICAgaGF2ZSt0aGUgcmVwbGFjZW1lbnQrdGhlIHJlc3Qgb2YgdGhlIHN0cmluZywgc28KICAgICAgICAgICAgICAgICAgICB3ZSB3b24ndCBoYXZlIHRvIGNoZWNrIHNwYWNlIGZvciBlbmNvZGFibGUgY2hhcmFjdGVycykgKi8KICAgICAgICAgICAgICAgICByZXNwb3MgPSBzdHIgLSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpOwotICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX1NJWkUocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zK3JlcHNpemUrKGVuZHAtY29sbGVuZCk7CisgICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIHJlcXVpcmVkc2l6ZSA9IHJlc3BvcytyZXBzaXplKyhzaXplLWNvbGxlbmQpOwogICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiByZXNzaXplKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemU8MipyZXNzaXplKQogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gMipyZXNzaXplOwpAQCAtNDc1NCwxNyArNjQ2MCwxNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUgcmVwbGFjZW1lbnQKICAgICAgICAgICAgICAgICAgICBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCi0gICAgICAgICAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7cmVwc2l6ZS0tPjA7ICsrdW5pMiwgKytzdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICp1bmkyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IHJlcHNpemUtLT4wOyArK2ksICsrc3RyKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHJlcHVuaWNvZGUsIGkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYyA+PSBsaW1pdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgc3RhcnRwLCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlcG9zLCB1bmljb2RlcG9zKzEsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQ3ODgsMzMgKzY0OTQsNTcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVMYXRpbjEoY29uc3QgUHlfVU5JQ09ERSAqcCwKKyAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEocCwgc2l6ZSwgZXJyb3JzLCAyNTYpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDI1Nik7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLCBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBGYXN0IHBhdGg6IGlmIGl0IGlzIGEgb25lLWJ5dGUgc3RyaW5nLCBjb25zdHJ1Y3QKKyAgICAgICBieXRlcyBvYmplY3QgZGlyZWN0bHkuICovCisgICAgaWYgKFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpID09IFB5VW5pY29kZV8xQllURV9LSU5EKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkpOworICAgIC8qIE5vbi1MYXRpbi0xIGNoYXJhY3RlcnMgcHJlc2VudC4gRGVmZXIgdG8gYWJvdmUgZnVuY3Rpb24gdG8KKyAgICAgICByYWlzZSB0aGUgZXhjZXB0aW9uLiAqLworICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKK30KKworUHlPYmplY3QqCitQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCit7CisgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgTlVMTCk7CiB9CiAKIC8qIC0tLSA3LWJpdCBBU0NJSSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZUFTQ0lJKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUFTQ0lJKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKICAgICBjb25zdCBjaGFyICpzdGFydHMgPSBzOwotICAgIFB5VW5pY29kZU9iamVjdCAqdjsKLSAgICBQeV9VTklDT0RFICpwOworICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CkBAIC00ODIyLDcwICs2NTUyLDk5IEBACiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICAvKiBBU0NJSSBpcyBlcXVpdmFsZW50IHRvIHRoZSBmaXJzdCAxMjggb3JkaW5hbHMgaW4gVW5pY29kZS4gKi8KLSAgICBpZiAoc2l6ZSA9PSAxICYmICoodW5zaWduZWQgY2hhciopcyA8IDEyOCkgewotICAgICAgICBQeV9VTklDT0RFIHIgPSAqKHVuc2lnbmVkIGNoYXIqKXM7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnIsIDEpOworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9CiAKLSAgICB2ID0gX1B5VW5pY29kZV9OZXcoc2l6ZSk7Ci0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICAvKiBBU0NJSSBpcyBlcXVpdmFsZW50IHRvIHRoZSBmaXJzdCAxMjggb3JkaW5hbHMgaW4gVW5pY29kZS4gKi8KKyAgICBpZiAoc2l6ZSA9PSAxICYmICh1bnNpZ25lZCBjaGFyKXNbMF0gPCAxMjgpCisgICAgICAgIHJldHVybiBnZXRfbGF0aW4xX2NoYXIoKHVuc2lnbmVkIGNoYXIpc1swXSk7CisKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisKICAgICBlID0gcyArIHNpemU7CisgICAgZGF0YSA9IFB5VW5pY29kZV8xQllURV9EQVRBKHVuaWNvZGUpOworICAgIG91dHBvcyA9IGFzY2lpX2RlY29kZShzLCBlLCAoUHlfVUNTMSAqKWRhdGEpOworICAgIGlmIChvdXRwb3MgPT0gc2l6ZSkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisKKyAgICBzICs9IG91dHBvczsKKyAgICBraW5kID0gUHlVbmljb2RlXzFCWVRFX0tJTkQ7CiAgICAgd2hpbGUgKHMgPCBlKSB7CiAgICAgICAgIHJlZ2lzdGVyIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSpzOwogICAgICAgICBpZiAoYyA8IDEyOCkgewotICAgICAgICAgICAgKnArKyA9IGM7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgb3V0cG9zKyssIGMpOwogICAgICAgICAgICAgKytzOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKLSAgICAgICAgICAgIG91dHBvcyA9IHAgLSAoUHlfVU5JQ09ERSAqKVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKQorICAgICAgICAgICAgICAgICAgICAmdW5pY29kZSwgJm91dHBvcykpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikgPCBQeVVuaWNvZGVfR0VUX1NJWkUodikpCi0gICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwgcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ1bmljb2RlLCBvdXRwb3MpIDwgMCkKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXY7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1bmljb2RlLCAxKSk7CisgICAgcmV0dXJuIHVuaWNvZGU7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHYpOworICAgIFB5X1hERUNSRUYodW5pY29kZSk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVBU0NJSShjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgcmV0dXJuIHVuaWNvZGVfZW5jb2RlX3VjczEocCwgc2l6ZSwgZXJyb3JzLCAxMjgpOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDEyOCk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSkKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyhQeU9iamVjdCAqdW5pY29kZSwgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUFTQ0lJKFB5VW5pY29kZV9BU19VTklDT0RFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgLyogRmFzdCBwYXRoOiBpZiBpdCBpcyBhbiBBU0NJSS1vbmx5IHN0cmluZywgY29uc3RydWN0IGJ5dGVzIG9iamVjdAorICAgICAgIGRpcmVjdGx5LiBFbHNlIGRlZmVyIHRvIGFib3ZlIGZ1bmN0aW9uIHRvIHJhaXNlIHRoZSBleGNlcHRpb24uICovCisgICAgaWYgKFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSA8IDEyOCkKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKTsKKyAgICByZXR1cm4gdW5pY29kZV9lbmNvZGVfdWNzMSh1bmljb2RlLCBlcnJvcnMsIDEyOCk7CiB9CiAKLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpICYmIGRlZmluZWQoSEFWRV9VU0FCTEVfV0NIQVJfVCkKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlKQoreworICAgIHJldHVybiBfUHlVbmljb2RlX0FzQVNDSUlTdHJpbmcodW5pY29kZSwgTlVMTCk7Cit9CisKKyNpZmRlZiBIQVZFX01CQ1MKIAogLyogLS0tIE1CQ1MgY29kZWNzIGZvciBXaW5kb3dzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTQ4OTMsMzM2ICs2NjUyLDg0MiBAQAogI2RlZmluZSBORUVEX1JFVFJZCiAjZW5kaWYKIAotLyogWFhYIFRoaXMgY29kZSBpcyBsaW1pdGVkIHRvICJ0cnVlIiBkb3VibGUtYnl0ZSBlbmNvZGluZ3MsIGFzCi0gICBhKSBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlIGJ5dGUsIGFuZAotICAgYikgSXNEQkNTTGVhZEJ5dGUgKHByb2JhYmx5KSBkb2VzIG5vdCB3b3JrIGZvciBub24tREJDUyBtdWx0aS1ieXRlCi0gICBlbmNvZGluZ3MsIHNlZSBJc0RCQ1NMZWFkQnl0ZUV4IGRvY3VtZW50YXRpb24uICovCisjaWZuZGVmIFdDX0VSUl9JTlZBTElEX0NIQVJTCisjICBkZWZpbmUgV0NfRVJSX0lOVkFMSURfQ0hBUlMgMHgwMDgwCisjZW5kaWYKIAotc3RhdGljIGludCBpc19kYmNzX2xlYWRfYnl0ZShjb25zdCBjaGFyICpzLCBpbnQgb2Zmc2V0KQorc3RhdGljIGNoYXIqCitjb2RlX3BhZ2VfbmFtZShVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvYmopCit7CisgICAgKm9iaiA9IE5VTEw7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9BQ1ApCisgICAgICAgIHJldHVybiAibWJjcyI7CisgICAgaWYgKGNvZGVfcGFnZSA9PSBDUF9VVEY3KQorICAgICAgICByZXR1cm4gIkNQX1VURjciOworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkKKyAgICAgICAgcmV0dXJuICJDUF9VVEY4IjsKKworICAgICpvYmogPSBQeUJ5dGVzX0Zyb21Gb3JtYXQoImNwJXUiLCBjb2RlX3BhZ2UpOworICAgIGlmICgqb2JqID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORygqb2JqKTsKK30KKworc3RhdGljIGludAoraXNfZGJjc19sZWFkX2J5dGUoVUlOVCBjb2RlX3BhZ2UsIGNvbnN0IGNoYXIgKnMsIGludCBvZmZzZXQpCiB7CiAgICAgY29uc3QgY2hhciAqY3VyciA9IHMgKyBvZmZzZXQ7CisgICAgY29uc3QgY2hhciAqcHJldjsKIAotICAgIGlmIChJc0RCQ1NMZWFkQnl0ZSgqY3VycikpIHsKLSAgICAgICAgY29uc3QgY2hhciAqcHJldiA9IENoYXJQcmV2KHMsIGN1cnIpOwotICAgICAgICByZXR1cm4gKHByZXYgPT0gY3VycikgfHwgIUlzREJDU0xlYWRCeXRlKCpwcmV2KSB8fCAoY3VyciAtIHByZXYgPT0gMik7Ci0gICAgfQorICAgIGlmICghSXNEQkNTTGVhZEJ5dGVFeChjb2RlX3BhZ2UsICpjdXJyKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwcmV2ID0gQ2hhclByZXZFeEEoY29kZV9wYWdlLCBzLCBjdXJyLCAwKTsKKyAgICBpZiAocHJldiA9PSBjdXJyKQorICAgICAgICByZXR1cm4gMTsKKyAgICAvKiBGSVhNRTogVGhpcyBjb2RlIGlzIGxpbWl0ZWQgdG8gInRydWUiIGRvdWJsZS1ieXRlIGVuY29kaW5ncywKKyAgICAgICBhcyBpdCBhc3N1bWVzIGFuIGluY29tcGxldGUgY2hhcmFjdGVyIGNvbnNpc3RzIG9mIGEgc2luZ2xlCisgICAgICAgYnl0ZS4gKi8KKyAgICBpZiAoY3VyciAtIHByZXYgPT0gMikKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKCFJc0RCQ1NMZWFkQnl0ZUV4KGNvZGVfcGFnZSwgKnByZXYpKQorICAgICAgICByZXR1cm4gMTsKICAgICByZXR1cm4gMDsKIH0KIAotLyoKLSAqIERlY29kZSBNQkNTIHN0cmluZyBpbnRvIHVuaWNvZGUgb2JqZWN0LiBJZiAnZmluYWwnIGlzIHNldCwgY29udmVydHMKLSAqIHRyYWlsaW5nIGxlYWQtYnl0ZSB0b28uIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCAtMSBvdGhlcndpc2UuCi0gKi8KLXN0YXRpYyBpbnQgZGVjb2RlX21iY3MoUHlVbmljb2RlT2JqZWN0ICoqdiwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgLyogTUJDUyBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIC8qIHNpemVvZiBNQkNTIHN0cmluZyAqLwotICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmluYWwsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3N0YXRpYyBEV09SRAorZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSkKIHsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X3NzaXplX3QgbjsKLSAgICBEV09SRCB1c2l6ZTsKLSAgICBEV09SRCBmbGFnczsKLQotICAgIGFzc2VydChzaXplID49IDApOwotCi0gICAgLyogY2hlY2sgYW5kIGhhbmRsZSAnZXJyb3JzJyBhcmcgKi8KLSAgICBpZiAoZXJyb3JzPT1OVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKT09MCkKLSAgICAgICAgZmxhZ3MgPSBNQl9FUlJfSU5WQUxJRF9DSEFSUzsKLSAgICBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIik9PTApCi0gICAgICAgIGZsYWdzID0gMDsKLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAibWJjcyBlbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IGVycm9ycz0nJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoY29kZV9wYWdlID09IENQX1VURjcpIHsKKyAgICAgICAgLyogVGhlIENQX1VURjcgZGVjb2RlciBvbmx5IHN1cHBvcnRzIGZsYWdzPTAgKi8KKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIE1CX0VSUl9JTlZBTElEX0NIQVJTOworfQogCi0gICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCi0gICAgaWYgKCFmaW5hbCAmJiBzaXplID49IDEgJiYgaXNfZGJjc19sZWFkX2J5dGUocywgc2l6ZSAtIDEpKQotICAgICAgICAtLXNpemU7CisvKgorICogRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZnJvbSBhIFdpbmRvd3MgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3QgaW4gc3RyaWN0CisgKiBtb2RlLgorICoKKyAqIFJldHVybnMgY29uc3VtZWQgc2l6ZSBpZiBzdWNjZWVkLCByZXR1cm5zIC0yIG9uIGRlY29kZSBlcnJvciwgb3IgcmFpc2UgYQorICogV2luZG93c0Vycm9yIGFuZCByZXR1cm5zIC0xIG9uIG90aGVyIGVycm9yLgorICovCitzdGF0aWMgaW50CitkZWNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqdiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmluLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc2l6ZSkKK3sKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGRlY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlKTsKKyAgICB3Y2hhcl90ICpvdXQ7CisgICAgRFdPUkQgb3V0c2l6ZTsKIAogICAgIC8qIEZpcnN0IGdldCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0ICovCi0gICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgIHVzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIGZsYWdzLCBzLCBzaXplLCBOVUxMLCAwKTsKLSAgICAgICAgaWYgKHVzaXplPT0wKQotICAgICAgICAgICAgZ290byBtYmNzX2RlY29kZV9lcnJvcjsKLSAgICB9IGVsc2UKLSAgICAgICAgdXNpemUgPSAwOworICAgIGFzc2VydChpbnNpemUgPiAwKTsKKyAgICBvdXRzaXplID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihjb2RlX3BhZ2UsIGZsYWdzLCBpbiwgaW5zaXplLCBOVUxMLCAwKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgaWYgKCp2ID09IE5VTEwpIHsKICAgICAgICAgLyogQ3JlYXRlIHVuaWNvZGUgb2JqZWN0ICovCi0gICAgICAgICp2ID0gX1B5VW5pY29kZV9OZXcodXNpemUpOworICAgICAgICAvKiBGSVhNRTogZG9uJ3QgdXNlIF9QeVVuaWNvZGVfTmV3KCksIGJ1dCBhbGxvY2F0ZSBhIHdjaGFyX3QqIGJ1ZmZlciAqLworICAgICAgICAqdiA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcob3V0c2l6ZSk7CiAgICAgICAgIGlmICgqdiA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBuID0gMDsKKyAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogRXh0ZW5kIHVuaWNvZGUgb2JqZWN0ICovCi0gICAgICAgIG4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnYpOwotICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUodiwgbiArIHVzaXplKSA8IDApCisgICAgICAgIFB5X3NzaXplX3QgbiA9IFB5VW5pY29kZV9HRVRfU0laRSgqdik7CisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBuICsgb3V0c2l6ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBvdXQgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdikgKyBuOwogICAgIH0KIAogICAgIC8qIERvIHRoZSBjb252ZXJzaW9uICovCi0gICAgaWYgKHVzaXplID4gMCkgewotICAgICAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgbjsKLSAgICAgICAgaWYgKDAgPT0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9BQ1AsIGZsYWdzLCBzLCBzaXplLCBwLCB1c2l6ZSkpIHsKLSAgICAgICAgICAgIGdvdG8gbWJjc19kZWNvZGVfZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHNpemU7CisgICAgb3V0c2l6ZSA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoY29kZV9wYWdlLCBmbGFncywgaW4sIGluc2l6ZSwgb3V0LCBvdXRzaXplKTsKKyAgICBpZiAob3V0c2l6ZSA8PSAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldHVybiBpbnNpemU7CiAKLW1iY3NfZGVjb2RlX2Vycm9yOgotICAgIC8qIElmIHRoZSBsYXN0IGVycm9yIHdhcyBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OLCB0aGVuCi0gICAgICAgd2UgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IgLSBlbHNlIGl0IGlzIGEgJ2dlbmVyaWMnCi0gICAgICAgd2luZG93cyBlcnJvcgotICAgICAqLwotICAgIGlmIChHZXRMYXN0RXJyb3IoKT09RVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTikgewotICAgICAgICAvKiBJZGVhbGx5LCB3ZSBzaG91bGQgZ2V0IHJlYXNvbiBmcm9tIEZvcm1hdE1lc3NhZ2UgLSB0aGlzCi0gICAgICAgICAgIGlzIHRoZSBXaW5kb3dzIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlCi0gICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgICAgICBjb25zdCBjaGFyICpyZWFzb24gPSAiTm8gbWFwcGluZyBmb3IgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIGV4aXN0cyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0aGUgdGFyZ2V0IG11bHRpLWJ5dGUgY29kZSBwYWdlLiI7Ci0gICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCAibWJjcyIsIHMsIHNpemUsIDAsIDAsIHJlYXNvbik7Ci0gICAgICAgIGlmIChleGMgIT0gTlVMTCkgewotICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihleGMpOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgfQorZXJyb3I6CisgICAgaWYgKEdldExhc3RFcnJvcigpID09IEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04pCisgICAgICAgIHJldHVybiAtMjsKKyAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKICAgICByZXR1cm4gLTE7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKKy8qCisgKiBEZWNvZGUgYSBieXRlIHN0cmluZyBmcm9tIGEgY29kZSBwYWdlIGludG8gdW5pY29kZSBvYmplY3Qgd2l0aCBhbiBlcnJvcgorICogaGFuZGxlci4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIHNpemUgaWYgc3VjY2VlZCwgb3IgcmFpc2UgYSBXaW5kb3dzRXJyb3Igb3IKKyAqIFVuaWNvZGVEZWNvZGVFcnJvciBleGNlcHRpb24gYW5kIHJldHVybnMgLTEgb24gZXJyb3IuCisgKi8KK3N0YXRpYyBpbnQKK2RlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKFVJTlQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKip2LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW4sIGNvbnN0IGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdiA9IE5VTEw7Ci0gICAgaW50IGRvbmU7CisgICAgY29uc3QgY2hhciAqc3RhcnRpbiA9IGluOworICAgIGNvbnN0IGNoYXIgKmVuZGluID0gaW4gKyBzaXplOworICAgIGNvbnN0IERXT1JEIGZsYWdzID0gZGVjb2RlX2NvZGVfcGFnZV9mbGFncyhjb2RlX3BhZ2UpOworICAgIC8qIElkZWFsbHksIHdlIHNob3VsZCBnZXQgcmVhc29uIGZyb20gRm9ybWF0TWVzc2FnZS4gVGhpcyBpcyB0aGUgV2luZG93cworICAgICAgIDIwMDAgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLiAqLworICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJObyBtYXBwaW5nIGZvciB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZXhpc3RzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gdGhlIHRhcmdldCBjb2RlIHBhZ2UuIjsKKyAgICAvKiBlYWNoIHN0ZXAgY2Fubm90IGRlY29kZSBtb3JlIHRoYW4gMSBjaGFyYWN0ZXIsIGJ1dCBhIGNoYXJhY3RlciBjYW4gYmUKKyAgICAgICByZXByZXNlbnRlZCBhcyBhIHN1cnJvZ2F0ZSBwYWlyICovCisgICAgd2NoYXJfdCBidWZmZXJbMl0sICpzdGFydG91dCwgKm91dDsKKyAgICBpbnQgaW5zaXplLCBvdXRzaXplOworICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOworICAgIGNoYXIgKmVuY29kaW5nOworICAgIERXT1JEIGVycjsKKyAgICBpbnQgcmV0ID0gLTE7CisKKyAgICBhc3NlcnQoc2l6ZSA+IDApOworCisgICAgZW5jb2RpbmcgPSBjb2RlX3BhZ2VfbmFtZShjb2RlX3BhZ2UsICZlbmNvZGluZ19vYmopOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sIHRoZW4gd2UgcmFpc2UgYQorICAgICAgICAgICBVbmljb2RlRGVjb2RlRXJyb3IuICovCisgICAgICAgIG1ha2VfZGVjb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgaW4sIHNpemUsIDAsIDAsIHJlYXNvbik7CisgICAgICAgIGlmIChleGMgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoZXhjKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKGV4Yyk7CisgICAgICAgIH0KKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoKnYgPT0gTlVMTCkgeworICAgICAgICAvKiBDcmVhdGUgdW5pY29kZSBvYmplY3QgKi8KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAvIChQeV9zc2l6ZV90KVB5X0FSUkFZX0xFTkdUSChidWZmZXIpKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICAvKiBGSVhNRTogZG9uJ3QgdXNlIF9QeVVuaWNvZGVfTmV3KCksIGJ1dCBhbGxvY2F0ZSBhIHdjaGFyX3QqIGJ1ZmZlciAqLworICAgICAgICAqdiA9IChQeU9iamVjdCopX1B5VW5pY29kZV9OZXcoc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKTsKKyAgICAgICAgaWYgKCp2ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzdGFydG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIEV4dGVuZCB1bmljb2RlIG9iamVjdCAqLworICAgICAgICBQeV9zc2l6ZV90IG4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoKnYpOworICAgICAgICBpZiAoc2l6ZSA+IChQWV9TU0laRV9UX01BWCAtIG4pIC8gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZSh2LCBuICsgc2l6ZSAqIFB5X0FSUkFZX0xFTkdUSChidWZmZXIpKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBzdGFydG91dCA9IFB5VW5pY29kZV9BU19VTklDT0RFKCp2KSArIG47CisgICAgfQorCisgICAgLyogRGVjb2RlIHRoZSBieXRlIHN0cmluZyBjaGFyYWN0ZXIgcGVyIGNoYXJhY3RlciAqLworICAgIG91dCA9IHN0YXJ0b3V0OworICAgIHdoaWxlIChpbiA8IGVuZGluKQorICAgIHsKKyAgICAgICAgLyogRGVjb2RlIGEgY2hhcmFjdGVyICovCisgICAgICAgIGluc2l6ZSA9IDE7CisgICAgICAgIGRvCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dHNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiwgaW5zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLCBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSk7CisgICAgICAgICAgICBpZiAob3V0c2l6ZSA+IDApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gRVJST1JfTk9fVU5JQ09ERV9UUkFOU0xBVElPTgorICAgICAgICAgICAgICAgICYmIGVyciAhPSBFUlJPUl9JTlNVRkZJQ0lFTlRfQlVGRkVSKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnNpemUrKzsKKyAgICAgICAgfQorICAgICAgICAvKiA0PW1heGltdW0gbGVuZ3RoIG9mIGEgVVRGLTggc2VxdWVuY2UgKi8KKyAgICAgICAgd2hpbGUgKGluc2l6ZSA8PSA0ICYmIChpbiArIGluc2l6ZSkgPD0gZW5kaW4pOworCisgICAgICAgIGlmIChvdXRzaXplIDw9IDApIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvcywgZW5kaW5wb3MsIG91dHBvczsKKworICAgICAgICAgICAgc3RhcnRpbnBvcyA9IGluIC0gc3RhcnRpbjsKKyAgICAgICAgICAgIGVuZGlucG9zID0gc3RhcnRpbnBvcyArIDE7CisgICAgICAgICAgICBvdXRwb3MgPSBvdXQgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqdik7CisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCisgICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwKKyAgICAgICAgICAgICAgICAgICAgJnN0YXJ0aW4sICZlbmRpbiwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJmluLAorICAgICAgICAgICAgICAgICAgICB2LCAmb3V0cG9zKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ID0gUHlVbmljb2RlX0FTX1VOSUNPREUoKnYpICsgb3V0cG9zOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW4gKz0gaW5zaXplOworICAgICAgICAgICAgbWVtY3B5KG91dCwgYnVmZmVyLCBvdXRzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKKyAgICAgICAgICAgIG91dCArPSBvdXRzaXplOworICAgICAgICB9CisgICAgfQorCisgICAgLyogd3JpdGUgYSBOVUwgY2hhcmFjdGVyIGF0IHRoZSBlbmQgKi8KKyAgICAqb3V0ID0gMDsKKworICAgIC8qIEV4dGVuZCB1bmljb2RlIG9iamVjdCAqLworICAgIG91dHNpemUgPSBvdXQgLSBzdGFydG91dDsKKyAgICBhc3NlcnQob3V0c2l6ZSA8PSBQeVVuaWNvZGVfV1NUUl9MRU5HVEgoKnYpKTsKKyAgICBpZiAodW5pY29kZV9yZXNpemUodiwgb3V0c2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldCA9IHNpemU7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitkZWNvZGVfY29kZV9wYWdlX3N0YXRlZnVsKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLCBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICBQeU9iamVjdCAqdiA9IE5VTEw7CisgICAgaW50IGNodW5rX3NpemUsIGZpbmFsLCBjb252ZXJ0ZWQsIGRvbmU7CisKKyAgICBpZiAoY29kZV9wYWdlIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImludmFsaWQgY29kZSBwYWdlIG51bWJlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICBpZiAoY29uc3VtZWQpCiAgICAgICAgICpjb25zdW1lZCA9IDA7CiAKKyAgICBkbworICAgIHsKICNpZmRlZiBORUVEX1JFVFJZCi0gIHJldHJ5OgotICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgZG9uZSA9IGRlY29kZV9tYmNzKCZ2LCBzLCBJTlRfTUFYLCAwLCBlcnJvcnMpOwotICAgIGVsc2UKKyAgICAgICAgaWYgKHNpemUgPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBjaHVua19zaXplID0gSU5UX01BWDsKKyAgICAgICAgICAgIGZpbmFsID0gMDsKKyAgICAgICAgICAgIGRvbmUgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UKICNlbmRpZgotICAgICAgICBkb25lID0gZGVjb2RlX21iY3MoJnYsIHMsIChpbnQpc2l6ZSwgIWNvbnN1bWVkLCBlcnJvcnMpOworICAgICAgICB7CisgICAgICAgICAgICBjaHVua19zaXplID0gKGludClzaXplOworICAgICAgICAgICAgZmluYWwgPSAoY29uc3VtZWQgPT0gTlVMTCk7CisgICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgfQogCi0gICAgaWYgKGRvbmUgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYodik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICAgICAgLyogU2tpcCB0cmFpbGluZyBsZWFkLWJ5dGUgdW5sZXNzICdmaW5hbCcgaXMgc2V0ICovCisgICAgICAgIGlmICghZmluYWwgJiYgaXNfZGJjc19sZWFkX2J5dGUoY29kZV9wYWdlLCBzLCBjaHVua19zaXplIC0gMSkpCisgICAgICAgICAgICAtLWNodW5rX3NpemU7CiAKLSAgICBpZiAoY29uc3VtZWQpCi0gICAgICAgICpjb25zdW1lZCArPSBkb25lOworICAgICAgICBpZiAoY2h1bmtfc2l6ZSA9PSAwICYmIGRvbmUpIHsKKyAgICAgICAgICAgIGlmICh2ICE9IE5VTEwpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgfQogCi0jaWZkZWYgTkVFRF9SRVRSWQotICAgIGlmIChzaXplID4gSU5UX01BWCkgewotICAgICAgICBzICs9IGRvbmU7Ci0gICAgICAgIHNpemUgLT0gZG9uZTsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICB9Ci0jZW5kaWYKIAotICAgIHJldHVybiAoUHlPYmplY3QgKil2OworICAgICAgICBjb252ZXJ0ZWQgPSBkZWNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplKTsKKyAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAtMikKKyAgICAgICAgICAgIGNvbnZlcnRlZCA9IGRlY29kZV9jb2RlX3BhZ2VfZXJyb3JzKGNvZGVfcGFnZSwgJnYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBjaHVua19zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgYXNzZXJ0KGNvbnZlcnRlZCAhPSAwKTsKKworICAgICAgICBpZiAoY29udmVydGVkIDwgMCkgeworICAgICAgICAgICAgUHlfWERFQ1JFRih2KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbnN1bWVkKQorICAgICAgICAgICAgKmNvbnN1bWVkICs9IGNvbnZlcnRlZDsKKworICAgICAgICBzICs9IGNvbnZlcnRlZDsKKyAgICAgICAgc2l6ZSAtPSBjb252ZXJ0ZWQ7CisgICAgfSB3aGlsZSAoIWRvbmUpOworCisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHYpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZU1CQ1MoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUNvZGVQYWdlU3RhdGVmdWwoaW50IGNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICByZXR1cm4gZGVjb2RlX2NvZGVfcGFnZV9zdGF0ZWZ1bChjb2RlX3BhZ2UsIHMsIHNpemUsIGVycm9ycywgY29uc3VtZWQpOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpjb25zdW1lZCkKK3sKKyAgICByZXR1cm4gZGVjb2RlX2NvZGVfcGFnZV9zdGF0ZWZ1bChDUF9BQ1AsIHMsIHNpemUsIGVycm9ycywgY29uc3VtZWQpOworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRGVjb2RlTUJDUyhjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDU1N0YXRlZnVsKHMsIHNpemUsIGVycm9ycywgTlVMTCk7CiB9CiAKK3N0YXRpYyBEV09SRAorZW5jb2RlX2NvZGVfcGFnZV9mbGFncyhVSU5UIGNvZGVfcGFnZSwgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGOCkgeworICAgICAgICBpZiAod2ludmVyLmR3TWFqb3JWZXJzaW9uID49IDYpCisgICAgICAgICAgICAvKiBDUF9VVEY4IHN1cHBvcnRzIFdDX0VSUl9JTlZBTElEX0NIQVJTIG9uIFdpbmRvd3MgVmlzdGEKKyAgICAgICAgICAgICAgIGFuZCBsYXRlciAqLworICAgICAgICAgICAgcmV0dXJuIFdDX0VSUl9JTlZBTElEX0NIQVJTOworICAgICAgICBlbHNlCisgICAgICAgICAgICAvKiBDUF9VVEY4IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCBvbiBXaW5kb3dzIG9sZGVyIHRoYW4gVmlzdGEgKi8KKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChjb2RlX3BhZ2UgPT0gQ1BfVVRGNykgeworICAgICAgICAvKiBDUF9VVEY3IG9ubHkgc3VwcG9ydHMgZmxhZ3M9MCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChlcnJvcnMgIT0gTlVMTCAmJiBzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpID09IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIFdDX05PX0JFU1RfRklUX0NIQVJTOworICAgIH0KK30KKwogLyoKLSAqIENvbnZlcnQgdW5pY29kZSBpbnRvIHN0cmluZyBvYmplY3QgKE1CQ1MpLgotICogUmV0dXJucyAwIGlmIHN1Y2NlZWQsIC0xIG90aGVyd2lzZS4KKyAqIEVuY29kZSBhIFVuaWNvZGUgc3RyaW5nIHRvIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byBhIGJ5dGUgc3RyaW5nIGluIHN0cmljdAorICogbW9kZS4KKyAqCisgKiBSZXR1cm5zIGNvbnN1bWVkIGNoYXJhY3RlcnMgaWYgc3VjY2VlZCwgcmV0dXJucyAtMiBvbiBlbmNvZGUgZXJyb3IsIG9yIHJhaXNlCisgKiBhIFdpbmRvd3NFcnJvciBhbmQgcmV0dXJucyAtMSBvbiBvdGhlciBlcnJvci4KICAqLwotc3RhdGljIGludCBlbmNvZGVfbWJjcyhQeU9iamVjdCAqKnJlcHIsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKnAsIC8qIHVuaWNvZGUgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUsIC8qIHNpemUgb2YgdW5pY29kZSAqLwotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJvcnMpCitzdGF0aWMgaW50CitlbmNvZGVfY29kZV9wYWdlX3N0cmljdChVSU5UIGNvZGVfcGFnZSwgUHlPYmplY3QgKipvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IG9mZnNldCwgaW50IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9ycykKIHsKICAgICBCT09MIHVzZWREZWZhdWx0Q2hhciA9IEZBTFNFOwotICAgIEJPT0wgKnB1c2VkRGVmYXVsdENoYXI7Ci0gICAgaW50IG1iY3NzaXplOwotICAgIFB5X3NzaXplX3QgbjsKKyAgICBCT09MICpwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKKyAgICBpbnQgb3V0c2l6ZTsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKLSAgICBEV09SRCBmbGFnczsKKyAgICB3Y2hhcl90ICpwOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBjb25zdCBEV09SRCBmbGFncyA9IGVuY29kZV9jb2RlX3BhZ2VfZmxhZ3MoY29kZV9wYWdlLCBOVUxMKTsKKyAgICBjaGFyICpvdXQ7CisgICAgLyogQ3JlYXRlIGEgc3Vic3RyaW5nIHNvIHRoYXQgd2UgY2FuIGdldCB0aGUgVVRGLTE2IHJlcHJlc2VudGF0aW9uCisgICAgICAgb2YganVzdCB0aGUgc2xpY2UgdW5kZXIgY29uc2lkZXJhdGlvbi4gKi8KKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogCi0gICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOwogCi0gICAgLyogY2hlY2sgYW5kIGhhbmRsZSAnZXJyb3JzJyBhcmcgKi8KLSAgICBpZiAoZXJyb3JzPT1OVUxMIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKT09MCkgewotICAgICAgICBmbGFncyA9IFdDX05PX0JFU1RfRklUX0NIQVJTOworICAgIGlmIChjb2RlX3BhZ2UgIT0gQ1BfVVRGOCAmJiBjb2RlX3BhZ2UgIT0gQ1BfVVRGNykKICAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9ICZ1c2VkRGVmYXVsdENoYXI7Ci0gICAgfSBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpPT0wKSB7Ci0gICAgICAgIGZsYWdzID0gMDsKKyAgICBlbHNlCiAgICAgICAgIHB1c2VkRGVmYXVsdENoYXIgPSBOVUxMOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAibWJjcyBlbmNvZGluZyBkb2VzIG5vdCBzdXBwb3J0IGVycm9ycz0nJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwotICAgICAgICAgcmV0dXJuIC0xOworCisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX1N1YnN0cmluZyh1bmljb2RlLCBvZmZzZXQsIG9mZnNldCtsZW4pOworICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShzdWJzdHJpbmcsICZzaXplKTsKKyAgICBpZiAocCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgLyogRmlyc3QgZ2V0IHRoZSBzaXplIG9mIHRoZSByZXN1bHQgKi8KLSAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgbWJjc3NpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX0FDUCwgZmxhZ3MsIHAsIHNpemUsIE5VTEwsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKTsKLSAgICAgICAgaWYgKG1iY3NzaXplID09IDApIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyV2l0aEZpbGVuYW1lKDAsIE5VTEwpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIC8qIElmIHdlIHVzZWQgYSBkZWZhdWx0IGNoYXIsIHRoZW4gd2UgZmFpbGVkISAqLwotICAgICAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKLSAgICAgICAgICAgIGdvdG8gbWJjc19lbmNvZGVfZXJyb3I7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWJjc3NpemUgPSAwOworICAgIG91dHNpemUgPSBXaWRlQ2hhclRvTXVsdGlCeXRlKGNvZGVfcGFnZSwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgIGlmIChvdXRzaXplIDw9IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgLyogSWYgd2UgdXNlZCBhIGRlZmF1bHQgY2hhciwgdGhlbiB3ZSBmYWlsZWQhICovCisgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgJiYgKnB1c2VkRGVmYXVsdENoYXIpIHsKKyAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgICAgIHJldHVybiAtMjsKICAgICB9CiAKLSAgICBpZiAoKnJlcHIgPT0gTlVMTCkgeworICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkgewogICAgICAgICAvKiBDcmVhdGUgc3RyaW5nIG9iamVjdCAqLwotICAgICAgICAqcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbWJjc3NpemUpOwotICAgICAgICBpZiAoKnJlcHIgPT0gTlVMTCkKKyAgICAgICAgKm91dGJ5dGVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBvdXRzaXplKTsKKyAgICAgICAgaWYgKCpvdXRieXRlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIEV4dGVuZCBzdHJpbmcgb2JqZWN0ICovCi0gICAgICAgIG4gPSBQeUJ5dGVzX1NpemUoKnJlcHIpOwotICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKHJlcHIsIG4gKyBtYmNzc2l6ZSkgPCAwKQorICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG4gPSBQeUJ5dGVzX1NpemUoKm91dGJ5dGVzKTsKKyAgICAgICAgaWYgKG91dHNpemUgPiBQWV9TU0laRV9UX01BWCAtIG4pIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuICsgb3V0c2l6ZSkgPCAwKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgbjsKICAgICB9CiAKICAgICAvKiBEbyB0aGUgY29udmVyc2lvbiAqLwotICAgIGlmIChzaXplID4gMCkgewotICAgICAgICBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoKnJlcHIpICsgbjsKLSAgICAgICAgaWYgKDAgPT0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9BQ1AsIGZsYWdzLCBwLCBzaXplLCBzLCBtYmNzc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBwdXNlZERlZmF1bHRDaGFyKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRmlsZW5hbWUoMCwgTlVMTCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHB1c2VkRGVmYXVsdENoYXIgJiYgKnB1c2VkRGVmYXVsdENoYXIpCi0gICAgICAgICAgICBnb3RvIG1iY3NfZW5jb2RlX2Vycm9yOwotICAgIH0KKyAgICBvdXRzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShjb2RlX3BhZ2UsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LCBvdXRzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgIFB5X0NMRUFSKHN1YnN0cmluZyk7CisgICAgaWYgKG91dHNpemUgPD0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAocHVzZWREZWZhdWx0Q2hhciAmJiAqcHVzZWREZWZhdWx0Q2hhcikKKyAgICAgICAgcmV0dXJuIC0yOwogICAgIHJldHVybiAwOwogCi1tYmNzX2VuY29kZV9lcnJvcjoKLSAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsICJtYmNzIiwgcCwgc2l6ZSwgMCwgMCwgImludmFsaWQgY2hhcmFjdGVyIik7Ci0gICAgUHlfWERFQ1JFRihleGMpOworZXJyb3I6CisgICAgUHlfWERFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChHZXRMYXN0RXJyb3IoKSA9PSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKQorICAgICAgICByZXR1cm4gLTI7CisgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CiAgICAgcmV0dXJuIC0xOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX0VuY29kZU1CQ1MoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLyoKKyAqIEVuY29kZSBhIFVuaWNvZGUgc3RyaW5nIHRvIGEgV2luZG93cyBjb2RlIHBhZ2UgaW50byBhIGJ5dGUgc3RyaW5nIHVzaW5nIGEKKyAqIGVycm9yIGhhbmRsZXIuCisgKgorICogUmV0dXJucyBjb25zdW1lZCBjaGFyYWN0ZXJzIGlmIHN1Y2NlZWQsIG9yIHJhaXNlIGEgV2luZG93c0Vycm9yIGFuZCByZXR1cm5zCisgKiAtMSBvbiBvdGhlciBlcnJvci4KKyAqLworc3RhdGljIGludAorZW5jb2RlX2NvZGVfcGFnZV9lcnJvcnMoVUlOVCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICoqb3V0Ynl0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCB1bmljb2RlX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7Ci0gICAgUHlPYmplY3QgKnJlcHIgPSBOVUxMOwotICAgIGludCByZXQ7CisgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSwgZXJyb3JzKTsKKyAgICBQeV9zc2l6ZV90IHBvcyA9IHVuaWNvZGVfb2Zmc2V0OworICAgIFB5X3NzaXplX3QgZW5kaW4gPSB1bmljb2RlX29mZnNldCArIGluc2l6ZTsKKyAgICAvKiBJZGVhbGx5LCB3ZSBzaG91bGQgZ2V0IHJlYXNvbiBmcm9tIEZvcm1hdE1lc3NhZ2UuIFRoaXMgaXMgdGhlIFdpbmRvd3MKKyAgICAgICAyMDAwIEVuZ2xpc2ggdmVyc2lvbiBvZiB0aGUgbWVzc2FnZS4gKi8KKyAgICBjb25zdCBjaGFyICpyZWFzb24gPSAiaW52YWxpZCBjaGFyYWN0ZXIiOworICAgIC8qIDQ9bWF4aW11bSBsZW5ndGggb2YgYSBVVEYtOCBzZXF1ZW5jZSAqLworICAgIGNoYXIgYnVmZmVyWzRdOworICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0UsICpwdXNlZERlZmF1bHRDaGFyOworICAgIFB5X3NzaXplX3Qgb3V0c2l6ZTsKKyAgICBjaGFyICpvdXQ7CisgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVuY29kaW5nX29iaiA9IE5VTEw7CisgICAgY2hhciAqZW5jb2Rpbmc7CisgICAgUHlfc3NpemVfdCBuZXdwb3MsIG5ld291dHNpemU7CisgICAgUHlPYmplY3QgKnJlcDsKKyAgICBpbnQgcmV0ID0gLTE7CiAKLSNpZmRlZiBORUVEX1JFVFJZCi0gIHJldHJ5OgotICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgcmV0ID0gZW5jb2RlX21iY3MoJnJlcHIsIHAsIElOVF9NQVgsIGVycm9ycyk7CisgICAgYXNzZXJ0KGluc2l6ZSA+IDApOworCisgICAgZW5jb2RpbmcgPSBjb2RlX3BhZ2VfbmFtZShjb2RlX3BhZ2UsICZlbmNvZGluZ19vYmopOworICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgLyogVGhlIGxhc3QgZXJyb3Igd2FzIEVSUk9SX05PX1VOSUNPREVfVFJBTlNMQVRJT04sCisgICAgICAgICAgIHRoZW4gd2UgcmFpc2UgYSBVbmljb2RlRW5jb2RlRXJyb3IuICovCisgICAgICAgIG1ha2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwgMCwgMCwgcmVhc29uKTsKKyAgICAgICAgaWYgKGV4YyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUNvZGVjX1N0cmljdEVycm9ycyhleGMpOworICAgICAgICAgICAgUHlfREVDUkVGKGV4Yyk7CisgICAgICAgIH0KKyAgICAgICAgUHlfWERFQ1JFRihlbmNvZGluZ19vYmopOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGNvZGVfcGFnZSAhPSBDUF9VVEY4ICYmIGNvZGVfcGFnZSAhPSBDUF9VVEY3KQorICAgICAgICBwdXNlZERlZmF1bHRDaGFyID0gJnVzZWREZWZhdWx0Q2hhcjsKICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgcmV0ID0gZW5jb2RlX21iY3MoJnJlcHIsIHAsIChpbnQpc2l6ZSwgZXJyb3JzKTsKKyAgICAgICAgcHVzZWREZWZhdWx0Q2hhciA9IE5VTEw7CiAKLSAgICBpZiAocmV0IDwgMCkgewotICAgICAgICBQeV9YREVDUkVGKHJlcHIpOworICAgIGlmIChQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKSA+IFBZX1NTSVpFX1RfTUFYIC8gaW5zaXplKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIG91dHNpemUgPSBpbnNpemUgKiBQeV9BUlJBWV9MRU5HVEgoYnVmZmVyKTsKKworICAgIGlmICgqb3V0Ynl0ZXMgPT0gTlVMTCkgeworICAgICAgICAvKiBDcmVhdGUgc3RyaW5nIG9iamVjdCAqLworICAgICAgICAqb3V0Ynl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIG91dHNpemUpOworICAgICAgICBpZiAoKm91dGJ5dGVzID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogRXh0ZW5kIHN0cmluZyBvYmplY3QgKi8KKyAgICAgICAgUHlfc3NpemVfdCBuID0gUHlCeXRlc19TaXplKCpvdXRieXRlcyk7CisgICAgICAgIGlmIChuID4gUFlfU1NJWkVfVF9NQVggLSBvdXRzaXplKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuICsgb3V0c2l6ZSkgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgb3V0ID0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKSArIG47CisgICAgfQorCisgICAgLyogRW5jb2RlIHRoZSBzdHJpbmcgY2hhcmFjdGVyIHBlciBjaGFyYWN0ZXIgKi8KKyAgICB3aGlsZSAocG9zIDwgZW5kaW4pCisgICAgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBwb3MpOworICAgICAgICB3Y2hhcl90IGNoYXJzWzJdOworICAgICAgICBpbnQgY2hhcnNpemU7CisgICAgICAgIGlmIChjaCA8IDB4MTAwMDApIHsKKyAgICAgICAgICAgIGNoYXJzWzBdID0gKHdjaGFyX3QpY2g7CisgICAgICAgICAgICBjaGFyc2l6ZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjaCAtPSAweDEwMDAwOworICAgICAgICAgICAgY2hhcnNbMF0gPSAweGQ4MDAgKyAoY2ggPj4gMTApOworICAgICAgICAgICAgY2hhcnNbMV0gPSAweGRjMDAgKyAoY2ggJiAweDNmZik7CisgICAgICAgICAgICBjaGFyc2l6ZSA9IDI7CisgICAgICAgIH0KKworICAgICAgICBvdXRzaXplID0gV2lkZUNoYXJUb011bHRpQnl0ZShjb2RlX3BhZ2UsIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFycywgY2hhcnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciwgUHlfQVJSQVlfTEVOR1RIKGJ1ZmZlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHB1c2VkRGVmYXVsdENoYXIpOworICAgICAgICBpZiAob3V0c2l6ZSA+IDApIHsKKyAgICAgICAgICAgIGlmIChwdXNlZERlZmF1bHRDaGFyID09IE5VTEwgfHwgISgqcHVzZWREZWZhdWx0Q2hhcikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcG9zKys7CisgICAgICAgICAgICAgICAgbWVtY3B5KG91dCwgYnVmZmVyLCBvdXRzaXplKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gb3V0c2l6ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9OT19VTklDT0RFX1RSQU5TTEFUSU9OKSB7CisgICAgICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycigwKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKworICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwgZW5jb2RpbmcsIHJlYXNvbiwKKyAgICAgICAgICAgICAgICAgIHVuaWNvZGUsICZleGMsCisgICAgICAgICAgICAgICAgICBwb3MsIHBvcyArIDEsICZuZXdwb3MpOworICAgICAgICBpZiAocmVwID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICBwb3MgPSBuZXdwb3M7CisKKyAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socmVwKSkgeworICAgICAgICAgICAgb3V0c2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVwKTsKKyAgICAgICAgICAgIGlmIChvdXRzaXplICE9IDEpIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9mZnNldCA9IG91dCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcyk7CisgICAgICAgICAgICAgICAgbmV3b3V0c2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUoKm91dGJ5dGVzKSArIChvdXRzaXplIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShvdXRieXRlcywgbmV3b3V0c2l6ZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBvdXQgPSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpICsgb2Zmc2V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgb3V0c2l6ZSk7CisgICAgICAgICAgICBvdXQgKz0gb3V0c2l6ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICAgICAgICAgIHZvaWQgKmRhdGE7CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG91dHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXApOworICAgICAgICAgICAgaWYgKG91dHNpemUgIT0gMSkgeworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2Zmc2V0ID0gb3V0IC0gUHlCeXRlc19BU19TVFJJTkcoKm91dGJ5dGVzKTsKKyAgICAgICAgICAgICAgICBuZXdvdXRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqb3V0Ynl0ZXMpICsgKG91dHNpemUgLSAxKTsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKG91dGJ5dGVzLCBuZXdvdXRzaXplKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKCpvdXRieXRlcykgKyBvZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVwKTsKKyAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXApOworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBvdXRzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gMTI3KSB7CisgICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCB1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBwb3MgKyAxLAorICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBlbmNvZGUgZXJyb3IgaGFuZGxlciByZXN1bHQgdG8gQVNDSUkiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpvdXQgPSAodW5zaWduZWQgY2hhciljaDsKKyAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBQeV9ERUNSRUYocmVwKTsKKyAgICB9CisgICAgLyogd3JpdGUgYSBOVUwgYnl0ZSAqLworICAgICpvdXQgPSAwOworICAgIG91dHNpemUgPSBvdXQgLSBQeUJ5dGVzX0FTX1NUUklORygqb3V0Ynl0ZXMpOworICAgIGFzc2VydChvdXRzaXplIDw9IFB5Qnl0ZXNfR0VUX1NJWkUoKm91dGJ5dGVzKSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZShvdXRieXRlcywgb3V0c2l6ZSkgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJldCA9IDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoZW5jb2Rpbmdfb2JqKTsKKyAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihleGMpOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitlbmNvZGVfY29kZV9wYWdlKGludCBjb2RlX3BhZ2UsCisgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlfc3NpemVfdCBsZW47CisgICAgUHlPYmplY3QgKm91dGJ5dGVzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBpbnQgY2h1bmtfbGVuLCByZXQsIGRvbmU7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKworICAgIGlmIChjb2RlX3BhZ2UgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBjb2RlIHBhZ2UgbnVtYmVyIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmZGVmIE5FRURfUkVUUlkKLSAgICBpZiAoc2l6ZSA+IElOVF9NQVgpIHsKLSAgICAgICAgcCArPSBJTlRfTUFYOwotICAgICAgICBzaXplIC09IElOVF9NQVg7Ci0gICAgICAgIGdvdG8gcmV0cnk7Ci0gICAgfQotI2VuZGlmCisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKIAotICAgIHJldHVybiByZXByOworICAgIG9mZnNldCA9IDA7CisgICAgZG8KKyAgICB7CisjaWZkZWYgTkVFRF9SRVRSWQorICAgICAgICAvKiBVVEYtMTYgZW5jb2RpbmcgbWF5IGRvdWJsZSB0aGUgc2l6ZSwgc28gdXNlIG9ubHkgSU5UX01BWC8yCisgICAgICAgICAgIGNodW5rcy4gKi8KKyAgICAgICAgaWYgKGxlbiA+IElOVF9NQVgvMikgeworICAgICAgICAgICAgY2h1bmtfbGVuID0gSU5UX01BWC8yOworICAgICAgICAgICAgZG9uZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorI2VuZGlmCisgICAgICAgIHsKKyAgICAgICAgICAgIGNodW5rX2xlbiA9IChpbnQpbGVuOworICAgICAgICAgICAgZG9uZSA9IDE7CisgICAgICAgIH0KKworICAgICAgICByZXQgPSBlbmNvZGVfY29kZV9wYWdlX3N0cmljdChjb2RlX3BhZ2UsICZvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgb2Zmc2V0LCBjaHVua19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIGlmIChyZXQgPT0gLTIpCisgICAgICAgICAgICByZXQgPSBlbmNvZGVfY29kZV9wYWdlX2Vycm9ycyhjb2RlX3BhZ2UsICZvdXRieXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX2xlbiwgZXJyb3JzKTsKKyAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYob3V0Ynl0ZXMpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBvZmZzZXQgKz0gY2h1bmtfbGVuOworICAgICAgICBsZW4gLT0gY2h1bmtfbGVuOworICAgIH0gd2hpbGUgKCFkb25lKTsKKworICAgIHJldHVybiBvdXRieXRlczsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRW5jb2RlTUJDUyhjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQoreworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqcmVzOworICAgIHVuaWNvZGUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocCwgc2l6ZSk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzID0gZW5jb2RlX2NvZGVfcGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiByZXM7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShpbnQgY29kZV9wYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICByZXR1cm4gZW5jb2RlX2NvZGVfcGFnZShjb2RlX3BhZ2UsIHVuaWNvZGUsIGVycm9ycyk7Cit9CisKK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9Bc01CQ1NTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTUJDUyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7CiB9CiAKICN1bmRlZiBORUVEX1JFVFJZCiAKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogSEFWRV9NQkNTICovCiAKIC8qIC0tLSBDaGFyYWN0ZXIgTWFwcGluZyBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi1QeU9iamVjdCAqUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorUHlVbmljb2RlX0RlY29kZUNoYXJtYXAoY29uc3QgY2hhciAqcywKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQogewogICAgIGNvbnN0IGNoYXIgKnN0YXJ0cyA9IHM7CiAgICAgUHlfc3NpemVfdCBzdGFydGlucG9zOwogICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CiAgICAgUHlfc3NpemVfdCBvdXRwb3M7CiAgICAgY29uc3QgY2hhciAqZTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnY7Ci0gICAgUHlfVU5JQ09ERSAqcDsKKyAgICBQeU9iamVjdCAqdjsKICAgICBQeV9zc2l6ZV90IGV4dHJhY2hhcnMgPSAwOwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIFB5X1VOSUNPREUgKm1hcHN0cmluZyA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBtYXBsZW4gPSAwOwogCiAgICAgLyogRGVmYXVsdCB0byBMYXRpbi0xICovCiAgICAgaWYgKG1hcHBpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMYXRpbjEocywgc2l6ZSwgZXJyb3JzKTsKIAotICAgIHYgPSBfUHlVbmljb2RlX05ldyhzaXplKTsKKyAgICB2ID0gUHlVbmljb2RlX05ldyhzaXplLCAxMjcpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodik7CisgICAgICAgIHJldHVybiB2OworICAgIG91dHBvcyA9IDA7CiAgICAgZSA9IHMgKyBzaXplOwogICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChtYXBwaW5nKSkgewotICAgICAgICBtYXBzdHJpbmcgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShtYXBwaW5nKTsKLSAgICAgICAgbWFwbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKG1hcHBpbmcpOworICAgICAgICBQeV9zc2l6ZV90IG1hcGxlbjsKKyAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBtYXBraW5kOworICAgICAgICB2b2lkICptYXBkYXRhOworICAgICAgICBQeV9VQ1M0IHg7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShtYXBwaW5nKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIG1hcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKG1hcHBpbmcpOworICAgICAgICBtYXBkYXRhID0gUHlVbmljb2RlX0RBVEEobWFwcGluZyk7CisgICAgICAgIG1hcGtpbmQgPSBQeVVuaWNvZGVfS0lORChtYXBwaW5nKTsKICAgICAgICAgd2hpbGUgKHMgPCBlKSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHggPSAweGZmZmU7IC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgY2g7CisgICAgICAgICAgICBpZiAobWFwa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCAmJiBtYXBsZW4gPj0gMjU2KSB7CisgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBvdXRraW5kID0gUHlVbmljb2RlX0tJTkQodik7CisgICAgICAgICAgICAgICAgaWYgKG91dGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3V0ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHYpOworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodik7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzIDwgZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjaCA9ICpzOworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5VW5pY29kZV9SRUFEKFB5VW5pY29kZV8yQllURV9LSU5ELCBtYXBkYXRhLCBjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA+IG1heGNoYXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBFcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfMUJZVEVfS0lORCwgb3V0ZGF0YSwgb3V0cG9zKyssIHgpOworICAgICAgICAgICAgICAgICAgICAgICAgKytzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvdXRraW5kID09IFB5VW5pY29kZV8yQllURV9LSU5EKSB7CisgICAgICAgICAgICAgICAgICAgIHZvaWQgKm91dGRhdGEgPSBQeVVuaWNvZGVfREFUQSh2KTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHMgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGNoID0gKnM7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQoUHlVbmljb2RlXzJCWVRFX0tJTkQsIG1hcGRhdGEsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IDB4RkZGRSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIEVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKFB5VW5pY29kZV8yQllURV9LSU5ELCBvdXRkYXRhLCBvdXRwb3MrKywgeCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2ggPSAqczsKIAogICAgICAgICAgICAgaWYgKGNoIDwgbWFwbGVuKQotICAgICAgICAgICAgICAgIHggPSBtYXBzdHJpbmdbY2hdOwotCi0gICAgICAgICAgICBpZiAoeCA9PSAweGZmZmUpIHsKKyAgICAgICAgICAgICAgICB4ID0gUHlVbmljb2RlX1JFQUQobWFwa2luZCwgbWFwZGF0YSwgY2gpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHggPSAweGZmZmU7IC8qIGludmFsaWQgdmFsdWUgKi8KK0Vycm9yOgorICAgICAgICAgICAgaWYgKHggPT0gMHhmZmZlKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIHVuZGVmaW5lZCBtYXBwaW5nICovCi0gICAgICAgICAgICAgICAgb3V0cG9zID0gcC1QeVVuaWNvZGVfQVNfVU5JQ09ERSh2KTsKICAgICAgICAgICAgICAgICBzdGFydGlucG9zID0gcy1zdGFydHM7CiAgICAgICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zKzE7CiAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgImNoYXJtYXAiLCAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iLAogICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MsICZwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgJnYsICZvdXRwb3MpKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcCsrID0geDsKKworICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgeCkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICsrczsKICAgICAgICAgfQogICAgIH0KQEAgLTUyNTAsNDggKzc1MTUsMjUgQEAKICAgICAgICAgICAgIC8qIEFwcGx5IG1hcHBpbmcgKi8KICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soeCkpIHsKICAgICAgICAgICAgICAgICBsb25nIHZhbHVlID0gUHlMb25nX0FTX0xPTkcoeCk7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDB4MTBGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcmFjdGVyIG1hcHBpbmcgbXVzdCBiZSBpbiByYW5nZSgweDExMDAwMCkiKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFyYWN0ZXIgbWFwcGluZyBtdXN0IGJlIGluIHJhbmdlKDB4JWx4KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylNQVhfVU5JQ09ERSArIDEpOwogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMHhGRkZGKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIHNlZSB0aGUgY29kZSBmb3IgMS1uIG1hcHBpbmcgYmVsb3cgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhY2hhcnMgPCAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNpemUgZmlyc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2xkcG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZWVkZWQgPSAxMCAtIGV4dHJhY2hhcnM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHRyYWNoYXJzICs9IG5lZWRlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCBvdmVyZmxvdyBkZXRlY3Rpb24gbWlzc2luZyAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRSh2KSArIG5lZWRlZCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIG9sZHBvczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKHZhbHVlID4+IDEwKTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IDB4REMwMCB8ICh2YWx1ZSAmIDB4M0ZGKTsKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyAtPSAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAqcCsrID0gKFB5X1VOSUNPREUpdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcHV0Y2hhcigmdiwgJm91dHBvcywgdmFsdWUpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoeCA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAgICAgLyogdW5kZWZpbmVkIG1hcHBpbmcgKi8KLSAgICAgICAgICAgICAgICBvdXRwb3MgPSBwLVB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKICAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHN0YXJ0aW5wb3MrMTsKICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhcm1hcCIsICJjaGFyYWN0ZXIgbWFwcyB0byA8dW5kZWZpbmVkPiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZSwgJnN0YXJ0aW5wb3MsICZlbmRpbnBvcywgJmV4YywgJnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcywgJnApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAmdiwgJm91dHBvcykpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQpAQCAtNTI5OSwzMiArNzU0MSwzNyBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCB0YXJnZXRzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHgpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdGFyZ2V0c2l6ZTsKIAotICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaXplID09IDEpCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh4KSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIHRhcmdldHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh4KTsKKworICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzaXplID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogMS0xIG1hcHBpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICpQeVVuaWNvZGVfQVNfVU5JQ09ERSh4KTsKLQorICAgICAgICAgICAgICAgICAgICBpZiAodW5pY29kZV9wdXRjaGFyKCZ2LCAmb3V0cG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoeCwgMCkpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0c2l6ZSA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgLyogMS1uIG1hcHBpbmcgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldHNpemUgPiBleHRyYWNoYXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiByZXNpemUgZmlyc3QgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb2xkcG9zID0gcCAtIFB5VW5pY29kZV9BU19VTklDT0RFKHYpOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBuZWVkZWQgPSAodGFyZ2V0c2l6ZSAtIGV4dHJhY2hhcnMpICsgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRzaXplIDw8IDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyArPSBuZWVkZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYWFggb3ZlcmZsb3cgZGV0ZWN0aW9uIG1pc3NpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUodikgKyBuZWVkZWQpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfcmVzaXplKCZ2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgbmVlZGVkKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIG9sZHBvczsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0c2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gdGFyZ2V0c2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVuaWNvZGVfd2lkZW4oJnYsIG91dHBvcywgUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHgpKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyh2LCBvdXRwb3MsIHgsIDAsIHRhcmdldHNpemUpOworICAgICAgICAgICAgICAgICAgICBvdXRwb3MgKz0gdGFyZ2V0c2l6ZTsKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjaGFycyAtPSB0YXJnZXRzaXplOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiAxLTAgbWFwcGluZzogc2tpcCB0aGUgY2hhcmFjdGVyICovCkBAIC01MzQwLDEyICs3NTg3LDExIEBACiAgICAgICAgICAgICArK3M7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSA8IFB5VW5pY29kZV9HRVRfU0laRSh2KSkKLSAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZ2LCBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUodikpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAodW5pY29kZV9yZXNpemUoJnYsIG91dHBvcykgPCAwKQorICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICByZXR1cm4gdW5pY29kZV9yZXN1bHQodik7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CkBAIC01MzU2LDcgKzc2MDIsNyBAQAogCiAvKiBDaGFybWFwIGVuY29kaW5nOiB0aGUgbG9va3VwIHRhYmxlICovCiAKLXN0cnVjdCBlbmNvZGluZ19tYXB7CitzdHJ1Y3QgZW5jb2RpbmdfbWFwIHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgdW5zaWduZWQgY2hhciBsZXZlbDFbMzJdOwogICAgIGludCBjb3VudDIsIGNvdW50MzsKQEAgLTU0MzAsNyArNzY3Niw2IEBACiBQeU9iamVjdCoKIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwKFB5T2JqZWN0KiBzdHJpbmcpCiB7Ci0gICAgUHlfVU5JQ09ERSAqZGVjb2RlOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgc3RydWN0IGVuY29kaW5nX21hcCAqbXJlc3VsdDsKICAgICBpbnQgaTsKQEAgLTU0MzksMzUgKzc2ODQsMzkgQEAKICAgICB1bnNpZ25lZCBjaGFyIGxldmVsMls1MTJdOwogICAgIHVuc2lnbmVkIGNoYXIgKm1sZXZlbDEsICptbGV2ZWwyLCAqbWxldmVsMzsKICAgICBpbnQgY291bnQyID0gMCwgY291bnQzID0gMDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuZ3RoOworICAgIFB5X1VDUzQgY2g7CiAKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdHJpbmcpIHx8IFB5VW5pY29kZV9HZXRTaXplKHN0cmluZykgIT0gMjU2KSB7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSB8fCAhUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKSkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZGVjb2RlID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOworICAgIGxlbmd0aCA9IFB5X01JTihsZW5ndGgsIDI1Nik7CiAgICAgbWVtc2V0KGxldmVsMSwgMHhGRiwgc2l6ZW9mIGxldmVsMSk7CiAgICAgbWVtc2V0KGxldmVsMiwgMHhGRiwgc2l6ZW9mIGxldmVsMik7CiAKICAgICAvKiBJZiB0aGVyZSBpc24ndCBhIG9uZS10by1vbmUgbWFwcGluZyBvZiBOVUxMIHRvIFwwLAogICAgICAgIG9yIGlmIHRoZXJlIGFyZSBub24tQk1QIGNoYXJhY3RlcnMsIHdlIG5lZWQgdG8gdXNlCiAgICAgICAgYSBtYXBwaW5nIGRpY3Rpb25hcnkuICovCi0gICAgaWYgKGRlY29kZVswXSAhPSAwKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSAhPSAwKQogICAgICAgICBuZWVkX2RpY3QgPSAxOwotICAgIGZvciAoaSA9IDE7IGkgPCAyNTY7IGkrKykgeworICAgIGZvciAoaSA9IDE7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBpbnQgbDEsIGwyOwotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDAKLSNpZmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgICAgIHx8IGRlY29kZVtpXSA+IDB4RkZGRgotI2VuZGlmCi0gICAgICAgICAgICApIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoID09IDAgfHwgY2ggPiAweEZGRkYpIHsKICAgICAgICAgICAgIG5lZWRfZGljdCA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAoZGVjb2RlW2ldID09IDB4RkZGRSkKKyAgICAgICAgaWYgKGNoID09IDB4RkZGRSkKICAgICAgICAgICAgIC8qIHVubWFwcGVkIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGwxID0gZGVjb2RlW2ldID4+IDExOwotICAgICAgICBsMiA9IGRlY29kZVtpXSA+PiA3OworICAgICAgICBsMSA9IGNoID4+IDExOworICAgICAgICBsMiA9IGNoID4+IDc7CiAgICAgICAgIGlmIChsZXZlbDFbbDFdID09IDB4RkYpCiAgICAgICAgICAgICBsZXZlbDFbbDFdID0gY291bnQyKys7CiAgICAgICAgIGlmIChsZXZlbDJbbDJdID09IDB4RkYpCkBAIC01NDgyLDkgKzc3MzEsOCBAQAogICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykgewotICAgICAgICAgICAga2V5ID0gdmFsdWUgPSBOVUxMOwotICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKGRlY29kZVtpXSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAga2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKICAgICAgICAgICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKGkpOwogICAgICAgICAgICAgaWYgKCFrZXkgfHwgIXZhbHVlKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkMTsKQEAgLTU1MTcsMTcgKzc3NjUsMTggQEAKICAgICBtZW1zZXQobWxldmVsMiwgMHhGRiwgMTYqY291bnQyKTsKICAgICBtZW1zZXQobWxldmVsMywgMCwgMTI4KmNvdW50Myk7CiAgICAgY291bnQzID0gMDsKLSAgICBmb3IgKGkgPSAxOyBpIDwgMjU2OyBpKyspIHsKKyAgICBmb3IgKGkgPSAxOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaW50IG8xLCBvMiwgbzMsIGkyLCBpMzsKLSAgICAgICAgaWYgKGRlY29kZVtpXSA9PSAweEZGRkUpCisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoID09IDB4RkZGRSkKICAgICAgICAgICAgIC8qIHVubWFwcGVkIGNoYXJhY3RlciAqLwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIG8xID0gZGVjb2RlW2ldPj4xMTsKLSAgICAgICAgbzIgPSAoZGVjb2RlW2ldPj43KSAmIDB4RjsKKyAgICAgICAgbzEgPSBjaD4+MTE7CisgICAgICAgIG8yID0gKGNoPj43KSAmIDB4RjsKICAgICAgICAgaTIgPSAxNiptbGV2ZWwxW28xXSArIG8yOwogICAgICAgICBpZiAobWxldmVsMltpMl0gPT0gMHhGRikKICAgICAgICAgICAgIG1sZXZlbDJbaTJdID0gY291bnQzKys7Ci0gICAgICAgIG8zID0gZGVjb2RlW2ldICYgMHg3RjsKKyAgICAgICAgbzMgPSBjaCAmIDB4N0Y7CiAgICAgICAgIGkzID0gMTI4Km1sZXZlbDJbaTJdICsgbzM7CiAgICAgICAgIG1sZXZlbDNbaTNdID0gaTsKICAgICB9CkBAIC01NTM1LDcgKzc3ODQsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1lbmNvZGluZ19tYXBfbG9va3VwKFB5X1VOSUNPREUgYywgUHlPYmplY3QgKm1hcHBpbmcpCitlbmNvZGluZ19tYXBfbG9va3VwKFB5X1VDUzQgYywgUHlPYmplY3QgKm1hcHBpbmcpCiB7CiAgICAgc3RydWN0IGVuY29kaW5nX21hcCAqbWFwID0gKHN0cnVjdCBlbmNvZGluZ19tYXAqKW1hcHBpbmc7CiAgICAgaW50IGwxID0gYz4+MTE7CkBAIC01NTQzLDExICs3NzkyLDggQEAKICAgICBpbnQgbDMgPSBjICYgMHg3RjsKICAgICBpbnQgaTsKIAotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgIGlmIChjID4gMHhGRkZGKSB7CisgICAgaWYgKGMgPiAweEZGRkYpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0jZW5kaWYKICAgICBpZiAoYyA9PSAwKQogICAgICAgICByZXR1cm4gMDsKICAgICAvKiBsZXZlbCAxKi8KQEAgLTU1NzEsNyArNzgxNyw4IEBACiAvKiBMb29rdXAgdGhlIGNoYXJhY3RlciBjaCBpbiB0aGUgbWFwcGluZy4gSWYgdGhlIGNoYXJhY3RlcgogICAgY2FuJ3QgYmUgZm91bmQsIFB5X05vbmUgaXMgcmV0dXJuZWQgKG9yIE5VTEwsIGlmIGFub3RoZXIKICAgIGVycm9yIG9jY3VycmVkKS4gKi8KLXN0YXRpYyBQeU9iamVjdCAqY2hhcm1hcGVuY29kZV9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZykKK3N0YXRpYyBQeU9iamVjdCAqCitjaGFybWFwZW5jb2RlX2xvb2t1cChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nKQogewogICAgIFB5T2JqZWN0ICp3ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKWMpOwogICAgIFB5T2JqZWN0ICp4OwpAQCAtNTYyOCwxNiArNzg3NSwxNiBAQAogCiB0eXBlZGVmIGVudW0gY2hhcm1hcGVuY29kZV9yZXN1bHQgewogICAgIGVuY19TVUNDRVNTLCBlbmNfRkFJTEVELCBlbmNfRVhDRVBUSU9OCi19Y2hhcm1hcGVuY29kZV9yZXN1bHQ7Cit9IGNoYXJtYXBlbmNvZGVfcmVzdWx0OwogLyogbG9va3VwIHRoZSBjaGFyYWN0ZXIsIHB1dCB0aGUgcmVzdWx0IGluIHRoZSBvdXRwdXQgc3RyaW5nIGFuZCBhZGp1c3QKICAgIHZhcmlvdXMgc3RhdGUgdmFyaWFibGVzLiBSZXNpemUgdGhlIG91dHB1dCBieXRlcyBvYmplY3QgaWYgbm90IGVub3VnaAogICAgc3BhY2UgaXMgYXZhaWxhYmxlLiBSZXR1cm4gYSBuZXcgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgdGhhdAogICAgd2FzIHB1dCBpbiB0aGUgb3V0cHV0IGJ1ZmZlciwgb3IgUHlfTm9uZSwgaWYgdGhlIG1hcHBpbmcgd2FzIHVuZGVmaW5lZAogICAgKGluIHdoaWNoIGNhc2Ugbm8gY2hhcmFjdGVyIHdhcyB3cml0dGVuKSBvciBOVUxMLCBpZiBhCiAgICByZWFsbG9jYXRpb24gZXJyb3Igb2NjdXJyZWQuIFRoZSBjYWxsZXIgbXVzdCBkZWNyZWYgdGhlIHJlc3VsdCAqLwotc3RhdGljCi1jaGFybWFwZW5jb2RlX3Jlc3VsdCBjaGFybWFwZW5jb2RlX291dHB1dChQeV9VTklDT0RFIGMsIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipvdXRvYmosIFB5X3NzaXplX3QgKm91dHBvcykKK3N0YXRpYyBjaGFybWFwZW5jb2RlX3Jlc3VsdAorY2hhcm1hcGVuY29kZV9vdXRwdXQoUHlfVUNTNCBjLCBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb3V0b2JqLCBQeV9zc2l6ZV90ICpvdXRwb3MpCiB7CiAgICAgUHlPYmplY3QgKnJlcDsKICAgICBjaGFyICpvdXRzdGFydDsKQEAgLTU2OTMsMTcgKzc5NDAsMTkgQEAKIAogLyogaGFuZGxlIGFuIGVycm9yIGluIFB5VW5pY29kZV9FbmNvZGVDaGFybWFwCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLwotc3RhdGljCi1pbnQgY2hhcm1hcF9lbmNvZGluZ19lcnJvcigKLSAgICBjb25zdCBQeV9VTklDT0RFICpwLCBQeV9zc2l6ZV90IHNpemUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKK3N0YXRpYyBpbnQKK2NoYXJtYXBfZW5jb2RpbmdfZXJyb3IoCisgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgKmlucG9zLCBQeU9iamVjdCAqbWFwcGluZywKICAgICBQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKICAgICBpbnQgKmtub3duX2Vycm9ySGFuZGxlciwgUHlPYmplY3QgKiplcnJvckhhbmRsZXIsIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICBQeU9iamVjdCAqKnJlcywgUHlfc3NpemVfdCAqcmVzcG9zKQogewogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCi0gICAgUHlfc3NpemVfdCByZXBzaXplOworICAgIFB5X3NzaXplX3Qgc2l6ZSwgcmVwc2l6ZTsKICAgICBQeV9zc2l6ZV90IG5ld3BvczsKLSAgICBQeV9VTklDT0RFICp1bmkyOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgaW5kZXg7CiAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KICAgICBQeV9zc2l6ZV90IGNvbGxzdGFydHBvcyA9ICppbnBvczsKICAgICBQeV9zc2l6ZV90IGNvbGxlbmRwb3MgPSAqaW5wb3MrMTsKQEAgLTU3MTEsMTkgKzc5NjAsMjYgQEAKICAgICBjaGFyICplbmNvZGluZyA9ICJjaGFybWFwIjsKICAgICBjaGFyICpyZWFzb24gPSAiY2hhcmFjdGVyIG1hcHMgdG8gPHVuZGVmaW5lZD4iOwogICAgIGNoYXJtYXBlbmNvZGVfcmVzdWx0IHg7CisgICAgUHlfVUNTNCBjaDsKKyAgICBpbnQgdmFsOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKICAgICAvKiBmaW5kIGFsbCB1bmVuY29kYWJsZSBjaGFyYWN0ZXJzICovCiAgICAgd2hpbGUgKGNvbGxlbmRwb3MgPCBzaXplKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXA7CiAgICAgICAgIGlmIChQeV9UWVBFKG1hcHBpbmcpID09ICZFbmNvZGluZ01hcFR5cGUpIHsKLSAgICAgICAgICAgIGludCByZXMgPSBlbmNvZGluZ19tYXBfbG9va3VwKHBbY29sbGVuZHBvc10sIG1hcHBpbmcpOwotICAgICAgICAgICAgaWYgKHJlcyAhPSAtMSkKKyAgICAgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBjb2xsZW5kcG9zKTsKKyAgICAgICAgICAgIHZhbCA9IGVuY29kaW5nX21hcF9sb29rdXAoY2gsIG1hcHBpbmcpOworICAgICAgICAgICAgaWYgKHZhbCAhPSAtMSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICsrY29sbGVuZHBvczsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcmVwID0gY2hhcm1hcGVuY29kZV9sb29rdXAocFtjb2xsZW5kcG9zXSwgbWFwcGluZyk7CisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBjb2xsZW5kcG9zKTsKKyAgICAgICAgcmVwID0gY2hhcm1hcGVuY29kZV9sb29rdXAoY2gsIG1hcHBpbmcpOwogICAgICAgICBpZiAocmVwPT1OVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBlbHNlIGlmIChyZXAhPVB5X05vbmUpIHsKQEAgLTU3NDksNyArODAwNSw3IEBACiAgICAgfQogICAgIHN3aXRjaCAoKmtub3duX2Vycm9ySGFuZGxlcikgewogICAgIGNhc2UgMTogLyogc3RyaWN0ICovCi0gICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3M8Y29sbGVuZHBvczsgKytjb2xscG9zKSB7CkBAIC01NzU4LDcgKzgwMTQsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHg9PWVuY19GQUlMRUQpIHsKLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHAsIHNpemUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU3NzEsMTMgKzgwMjcsMTMgQEAKICAgICAgICAgZm9yIChjb2xscG9zID0gY29sbHN0YXJ0cG9zOyBjb2xscG9zIDwgY29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07CiAgICAgICAgICAgICBjaGFyICpjcDsKLSAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCAoaW50KXBbY29sbHBvc10pOworICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICImIyVkOyIsIChpbnQpUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlLCBjb2xscG9zKSk7CiAgICAgICAgICAgICBmb3IgKGNwID0gYnVmZmVyOyAqY3A7ICsrY3ApIHsKICAgICAgICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoKmNwLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICBlbHNlIGlmICh4PT1lbmNfRkFJTEVEKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgcCwgc2l6ZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTU3ODYsNyArODA0Miw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHAsIHNpemUsIGV4Y2VwdGlvbk9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsIGV4Y2VwdGlvbk9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgJm5ld3Bvcyk7CiAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01ODEwLDE1ICs4MDY2LDIzIEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAgKi8KLSAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgZm9yICh1bmkyID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVwdW5pY29kZSk7IHJlcHNpemUtLT4wOyArK3VuaTIpIHsKLSAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dCgqdW5pMiwgbWFwcGluZywgcmVzLCByZXNwb3MpOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcHVuaWNvZGUpOworICAgICAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEocmVwdW5pY29kZSk7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChyZXB1bmljb2RlKTsKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgcmVwc2l6ZTsgaW5kZXgrKykgeworICAgICAgICAgICAgUHlfVUNTNCByZXBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGluZGV4KTsKKyAgICAgICAgICAgIHggPSBjaGFybWFwZW5jb2RlX291dHB1dChyZXBjaCwgbWFwcGluZywgcmVzLCByZXNwb3MpOwogICAgICAgICAgICAgaWYgKHg9PWVuY19FWENFUFRJT04pIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoeD09ZW5jX0ZBSUxFRCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHAsIHNpemUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKGV4Y2VwdGlvbk9iamVjdCwgZW5jb2RpbmcsIHVuaWNvZGUsIGNvbGxzdGFydHBvcywgY29sbGVuZHBvcywgcmVhc29uKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU4MjgsMTUgKzgwOTIsMTYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChQeU9iamVjdCAqdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgLyogb3V0cHV0IG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogICAgIC8qIGN1cnJlbnQgaW5wdXQgcG9zaXRpb24gKi8KICAgICBQeV9zc2l6ZV90IGlucG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgLyogY3VycmVudCBvdXRwdXQgcG9zaXRpb24gKi8KICAgICBQeV9zc2l6ZV90IHJlc3BvcyA9IDA7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CkBAIC01ODQ2LDkgKzgxMTEsMTMgQEAKICAgICAgKiAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwogICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKwogICAgIC8qIERlZmF1bHQgdG8gTGF0aW4tMSAqLwogICAgIGlmIChtYXBwaW5nID09IE5VTEwpCi0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTGF0aW4xKHAsIHNpemUsIGVycm9ycyk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VuY29kZV91Y3MxKHVuaWNvZGUsIGVycm9ycywgMjU2KTsKIAogICAgIC8qIGFsbG9jYXRlIGVub3VnaCBmb3IgYSBzaW1wbGUgZW5jb2Rpbmcgd2l0aG91dAogICAgICAgIHJlcGxhY2VtZW50cywgaWYgd2UgbmVlZCBtb3JlLCB3ZSdsbCByZXNpemUgKi8KQEAgLTU4NTksMTIgKzgxMjgsMTMgQEAKICAgICAgICAgcmV0dXJuIHJlczsKIAogICAgIHdoaWxlIChpbnBvczxzaXplKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaWNvZGUsIGlucG9zKTsKICAgICAgICAgLyogdHJ5IHRvIGVuY29kZSBpdCAqLwotICAgICAgICBjaGFybWFwZW5jb2RlX3Jlc3VsdCB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQocFtpbnBvc10sIG1hcHBpbmcsICZyZXMsICZyZXNwb3MpOworICAgICAgICBjaGFybWFwZW5jb2RlX3Jlc3VsdCB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoY2gsIG1hcHBpbmcsICZyZXMsICZyZXNwb3MpOwogICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgLyogZXJyb3IgKi8KICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgaWYgKHg9PWVuY19GQUlMRUQpIHsgLyogdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCi0gICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcihwLCBzaXplLCAmaW5wb3MsIG1hcHBpbmcsCisgICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcih1bmljb2RlLCAmaW5wb3MsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtub3duX2Vycm9ySGFuZGxlciwgJmVycm9ySGFuZGxlciwgZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcywgJnJlc3BvcykpIHsKQEAgLTU4OTIsMjggKzgxNjIsNDMgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcoUHlPYmplY3QgKnVuaWNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZykKKy8qIERlcHJlY2F0ZWQgKi8KK1B5T2JqZWN0ICoKK1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKGNvbnN0IFB5X1VOSUNPREUgKnAsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICp1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHAsIHNpemUpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcCh1bmljb2RlLCBtYXBwaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nKFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZykKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSB8fCBtYXBwaW5nID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlQ2hhcm1hcChQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVDaGFybWFwKHVuaWNvZGUsIG1hcHBpbmcsIE5VTEwpOwogfQogCiAvKiBjcmVhdGUgb3IgYWRqdXN0IGEgVW5pY29kZVRyYW5zbGF0ZUVycm9yICovCi1zdGF0aWMgdm9pZCBtYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKK3N0YXRpYyB2b2lkCittYWtlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQogewogICAgIGlmICgqZXhjZXB0aW9uT2JqZWN0ID09IE5VTEwpIHsKLSAgICAgICAgKmV4Y2VwdGlvbk9iamVjdCA9IFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0NyZWF0ZSgKLSAgICAgICAgICAgIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICpleGNlcHRpb25PYmplY3QgPSBfUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfQ3JlYXRlKAorICAgICAgICAgICAgdW5pY29kZSwgc3RhcnRwb3MsIGVuZHBvcywgcmVhc29uKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydCgqZXhjZXB0aW9uT2JqZWN0LCBzdGFydHBvcykpCkBAIC01OTMwLDEzICs4MjE1LDE0IEBACiB9CiAKIC8qIHJhaXNlcyBhIFVuaWNvZGVUcmFuc2xhdGVFcnJvciAqLwotc3RhdGljIHZvaWQgcmFpc2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihQeU9iamVjdCAqKmV4Y2VwdGlvbk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqdW5pY29kZSwgUHlfc3NpemVfdCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQorc3RhdGljIHZvaWQKK3JhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQogewogICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgIT0gTlVMTCkKICAgICAgICAgUHlDb2RlY19TdHJpY3RFcnJvcnMoKmV4Y2VwdGlvbk9iamVjdCk7CiB9CkBAIC01OTQ1LDEyICs4MjMxLDEzIEBACiAgICBidWlsZCBhcmd1bWVudHMsIGNhbGwgdGhlIGNhbGxiYWNrIGFuZCBjaGVjayB0aGUgYXJndW1lbnRzLAogICAgcHV0IHRoZSByZXN1bHQgaW50byBuZXdwb3MgYW5kIHJldHVybiB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nLCB3aGljaAogICAgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIgKi8KLXN0YXRpYyBQeU9iamVjdCAqdW5pY29kZV90cmFuc2xhdGVfY2FsbF9lcnJvcmhhbmRsZXIoY29uc3QgY2hhciAqZXJyb3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICp1bmljb2RlLCBQeV9zc2l6ZV90IHNpemUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0cG9zLCBQeV9zc2l6ZV90IGVuZHBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQorc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjt0cmFuc2xhdGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOwogCkBAIC01OTY1LDcgKzgyNTIsNyBAQAogICAgIH0KIAogICAgIG1ha2VfdHJhbnNsYXRlX2V4Y2VwdGlvbihleGNlcHRpb25PYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHNpemUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaWNvZGUsIHN0YXJ0cG9zLCBlbmRwb3MsIHJlYXNvbik7CiAgICAgaWYgKCpleGNlcHRpb25PYmplY3QgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTU5ODQsMTAgKzgyNzEsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChpX25ld3BvczwwKQotICAgICAgICAqbmV3cG9zID0gc2l6ZStpX25ld3BvczsKKyAgICAgICAgKm5ld3BvcyA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpK2lfbmV3cG9zOwogICAgIGVsc2UKICAgICAgICAgKm5ld3BvcyA9IGlfbmV3cG9zOwotICAgIGlmICgqbmV3cG9zPDAgfHwgKm5ld3Bvcz5zaXplKSB7CisgICAgaWYgKCpuZXdwb3M8MCB8fCAqbmV3cG9zPlB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbmRleEVycm9yLCAicG9zaXRpb24gJXpkIGZyb20gZXJyb3IgaGFuZGxlciBvdXQgb2YgYm91bmRzIiwgKm5ld3Bvcyk7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN0dXBsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjAwMCw4ICs4Mjg3LDggQEAKIC8qIExvb2t1cCB0aGUgY2hhcmFjdGVyIGNoIGluIHRoZSBtYXBwaW5nIGFuZCBwdXQgdGhlIHJlc3VsdCBpbiByZXN1bHQsCiAgICB3aGljaCBtdXN0IGJlIGRlY3JlZmVkIGJ5IHRoZSBjYWxsZXIuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLwotc3RhdGljCi1pbnQgY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlfVU5JQ09ERSBjLCBQeU9iamVjdCAqbWFwcGluZywgUHlPYmplY3QgKipyZXN1bHQpCitzdGF0aWMgaW50CitjaGFybWFwdHJhbnNsYXRlX2xvb2t1cChQeV9VQ1M0IGMsIFB5T2JqZWN0ICptYXBwaW5nLCBQeU9iamVjdCAqKnJlc3VsdCkKIHsKICAgICBQeU9iamVjdCAqdyA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZyljKTsKICAgICBQeU9iamVjdCAqeDsKQEAgLTYwNTAsMjAgKzgzMzcsMjEgQEAKIC8qIGVuc3VyZSB0aGF0ICpvdXRvYmogaXMgYXQgbGVhc3QgcmVxdWlyZWRzaXplIGNoYXJhY3RlcnMgbG9uZywKICAgIGlmIG5vdCByZWFsbG9jYXRlIGFuZCBhZGp1c3QgdmFyaW91cyBzdGF0ZSB2YXJpYWJsZXMuCiAgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBlcnJvciAqLwotc3RhdGljCi1pbnQgY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoUHlPYmplY3QgKipvdXRvYmosIFB5X1VOSUNPREUgKipvdXRwLAorc3RhdGljIGludAorY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoUHlfVUNTNCAqKm91dG9iaiwgUHlfc3NpemVfdCAqcHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUpCiB7Ci0gICAgUHlfc3NpemVfdCBvbGRzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKCpvdXRvYmopOworICAgIFB5X3NzaXplX3Qgb2xkc2l6ZSA9ICpwc2l6ZTsKKyAgICBQeV9VQ1M0ICpuZXdfb3V0b2JqOwogICAgIGlmIChyZXF1aXJlZHNpemUgPiBvbGRzaXplKSB7Ci0gICAgICAgIC8qIHJlbWVtYmVyIG9sZCBvdXRwdXQgcG9zaXRpb24gKi8KLSAgICAgICAgUHlfc3NpemVfdCBvdXRwb3MgPSAqb3V0cC1QeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKTsKICAgICAgICAgLyogZXhwb25lbnRpYWxseSBvdmVyYWxsb2NhdGUgdG8gbWluaW1pemUgcmVhbGxvY2F0aW9ucyAqLwogICAgICAgICBpZiAocmVxdWlyZWRzaXplIDwgMiAqIG9sZHNpemUpCiAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyICogb2xkc2l6ZTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9SZXNpemUob3V0b2JqLCByZXF1aXJlZHNpemUpIDwgMCkKKyAgICAgICAgbmV3X291dG9iaiA9IFB5TWVtX1JlYWxsb2MoKm91dG9iaiwgcmVxdWlyZWRzaXplICogc2l6ZW9mKFB5X1VDUzQpKTsKKyAgICAgICAgaWYgKG5ld19vdXRvYmogPT0gMCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm91dHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqb3V0b2JqKSArIG91dHBvczsKKyAgICAgICAgKm91dG9iaiA9IG5ld19vdXRvYmo7CisgICAgICAgICpwc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9CkBAIC02MDczLDM4ICs4MzYxLDQ0IEBACiAgICB1bmRlZmluZWQgKGluIHdoaWNoIGNhc2Ugbm8gY2hhcmFjdGVyIHdhcyB3cml0dGVuKS4KICAgIFRoZSBjYWxsZWQgbXVzdCBkZWNyZWYgcmVzdWx0LgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZXJyb3IuICovCi1zdGF0aWMKLWludCBjaGFybWFwdHJhbnNsYXRlX291dHB1dChjb25zdCBQeV9VTklDT0RFICpzdGFydGlucCwgY29uc3QgUHlfVU5JQ09ERSAqY3VyaW5wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaW5zaXplLCBQeU9iamVjdCAqbWFwcGluZywgUHlPYmplY3QgKipvdXRvYmosIFB5X1VOSUNPREUgKipvdXRwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcmVzKQorc3RhdGljIGludAorY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoUHlPYmplY3QgKmlucHV0LCBQeV9zc2l6ZV90IGlwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywgUHlfVUNTNCAqKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKm9zaXplLCBQeV9zc2l6ZV90ICpvcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipyZXMpCiB7Ci0gICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCpjdXJpbnAsIG1hcHBpbmcsIHJlcykpCisgICAgUHlfVUNTNCBjdXJpbnAgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKGlucHV0LCBpcG9zKTsKKyAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoY3VyaW5wLCBtYXBwaW5nLCByZXMpKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCpyZXM9PU5VTEwpIHsKICAgICAgICAgLyogbm90IGZvdW5kID0+IGRlZmF1bHQgdG8gMToxIG1hcHBpbmcgKi8KLSAgICAgICAgKigqb3V0cCkrKyA9ICpjdXJpbnA7CisgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gY3VyaW5wOwogICAgIH0KICAgICBlbHNlIGlmICgqcmVzPT1QeV9Ob25lKQogICAgICAgICA7CiAgICAgZWxzZSBpZiAoUHlMb25nX0NoZWNrKCpyZXMpKSB7CiAgICAgICAgIC8qIG5vIG92ZXJmbG93IGNoZWNrLCBiZWNhdXNlIHdlIGtub3cgdGhhdCB0aGUgc3BhY2UgaXMgZW5vdWdoICovCi0gICAgICAgICooKm91dHApKysgPSAoUHlfVU5JQ09ERSlQeUxvbmdfQVNfTE9ORygqcmVzKTsKKyAgICAgICAgKCpvdXRwdXQpWygqb3BvcykrK10gPSAoUHlfVUNTNClQeUxvbmdfQVNfTE9ORygqcmVzKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKCpyZXMpKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSgqcmVzKTsKKyAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKCpyZXMpID09IC0xKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoKnJlcyk7CiAgICAgICAgIGlmIChyZXBzaXplPT0xKSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAgICAgKigqb3V0cCkrKyA9ICpQeVVuaWNvZGVfQVNfVU5JQ09ERSgqcmVzKTsKKyAgICAgICAgICAgICgqb3V0cHV0KVsoKm9wb3MpKytdID0gUHlVbmljb2RlX1JFQURfQ0hBUigqcmVzLCAwKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChyZXBzaXplIT0wKSB7CiAgICAgICAgICAgICAvKiBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXF1aXJlZHNpemUgPSAoKm91dHAtUHlVbmljb2RlX0FTX1VOSUNPREUoKm91dG9iaikpICsKLSAgICAgICAgICAgICAgICAoaW5zaXplIC0gKGN1cmlucC1zdGFydGlucCkpICsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgcmVxdWlyZWRzaXplID0gKm9wb3MgKworICAgICAgICAgICAgICAgIChQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCkgLSBpcG9zKSArCiAgICAgICAgICAgICAgICAgcmVwc2l6ZSAtIDE7Ci0gICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2Uob3V0b2JqLCBvdXRwLCByZXF1aXJlZHNpemUpKQorICAgICAgICAgICAgUHlfc3NpemVfdCBpOworICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbWFrZXNwYWNlKG91dHB1dCwgb3NpemUsIHJlcXVpcmVkc2l6ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgbWVtY3B5KCpvdXRwLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqcmVzKSwgc2l6ZW9mKFB5X1VOSUNPREUpKnJlcHNpemUpOwotICAgICAgICAgICAgKm91dHAgKz0gcmVwc2l6ZTsKKyAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHJlcHNpemU7IGkrKykKKyAgICAgICAgICAgICAgICAoKm91dHB1dClbKCpvcG9zKSsrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIoKnJlcywgaSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtNjExMiwyMCArODQwNiwyMSBAQAogICAgIHJldHVybiAwOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoY29uc3QgUHlfVU5JQ09ERSAqcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorUHlPYmplY3QgKgorX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKFB5T2JqZWN0ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgLyogb3V0cHV0IG9iamVjdCAqLwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIC8qIHBvaW50ZXJzIHRvIHRoZSBiZWdpbm5pbmcgYW5kIGVuZCsxIG9mIGlucHV0ICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3RhcnRwID0gcDsKLSAgICBjb25zdCBQeV9VTklDT0RFICplbmRwID0gcCArIHNpemU7Ci0gICAgLyogcG9pbnRlciBpbnRvIHRoZSBvdXRwdXQgKi8KLSAgICBQeV9VTklDT0RFICpzdHI7CisgICAgLyogaW5wdXQgb2JqZWN0ICovCisgICAgY2hhciAqaWRhdGE7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIGludCBraW5kOworICAgIC8qIG91dHB1dCBidWZmZXIgKi8KKyAgICBQeV9VQ1M0ICpvdXRwdXQgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgb3NpemU7CisgICAgUHlPYmplY3QgKnJlczsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwotICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKKyAgICBQeV9zc2l6ZV90IG9wb3M7CiAgICAgY2hhciAqcmVhc29uID0gImNoYXJhY3RlciBtYXBzIHRvIDx1bmRlZmluZWQ+IjsKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKQEAgLTYxMzksMzggKzg0MzQsNTIgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShpbnB1dCkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlkYXRhID0gKGNoYXIqKVB5VW5pY29kZV9EQVRBKGlucHV0KTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoaW5wdXQpOworICAgIHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpbnB1dCk7CisgICAgaSA9IDA7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIFB5X0lOQ1JFRihpbnB1dCk7CisgICAgICAgIHJldHVybiBpbnB1dDsKKyAgICB9CisKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwotICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzaXplKTsKLSAgICBpZiAocmVzID09IE5VTEwpCisgICAgb3NpemUgPSBzaXplOworICAgIG91dHB1dCA9IFB5TWVtX01hbGxvYyhvc2l6ZSAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgb3BvcyA9IDA7CisgICAgaWYgKG91dHB1dCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICBpZiAoc2l6ZSA9PSAwKQotICAgICAgICByZXR1cm4gcmVzOwotICAgIHN0ciA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7CisgICAgfQogCi0gICAgd2hpbGUgKHA8ZW5kcCkgeworICAgIHdoaWxlIChpPHNpemUpIHsKICAgICAgICAgLyogdHJ5IHRvIGVuY29kZSBpdCAqLwogICAgICAgICBQeU9iamVjdCAqeCA9IE5VTEw7Ci0gICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX291dHB1dChzdGFydHAsIHAsIHNpemUsIG1hcHBpbmcsICZyZXMsICZzdHIsICZ4KSkgeworICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9vdXRwdXQoaW5wdXQsIGksIG1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0LCAmb3NpemUsICZvcG9zLCAmeCkpIHsKICAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRih4KTsKICAgICAgICAgaWYgKHghPVB5X05vbmUpIC8qIGl0IHdvcmtlZCA9PiBhZGp1c3QgaW5wdXQgcG9pbnRlciAqLwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgKytpOwogICAgICAgICBlbHNlIHsgLyogdW50cmFuc2xhdGFibGUgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBQeU9iamVjdCAqcmVwdW5pY29kZSA9IE5VTEw7IC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwogICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuZXdwb3M7Ci0gICAgICAgICAgICBQeV9VTklDT0RFICp1bmkyOworICAgICAgICAgICAgUHlfc3NpemVfdCB1bmkyOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW50cmFuc2xhdGFibGUgY2hhcnMgKi8KLSAgICAgICAgICAgIGNvbnN0IFB5X1VOSUNPREUgKmNvbGxzdGFydCA9IHA7Ci0gICAgICAgICAgICBjb25zdCBQeV9VTklDT0RFICpjb2xsZW5kID0gcCsxOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqY29sbDsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbGVuZCA9IGkrMTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbDsKIAogICAgICAgICAgICAgLyogZmluZCBhbGwgdW50cmFuc2xhdGFibGUgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgd2hpbGUgKGNvbGxlbmQgPCBlbmRwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYXJtYXB0cmFuc2xhdGVfbG9va3VwKCpjb2xsZW5kLCBtYXBwaW5nLCAmeCkpCisgICAgICAgICAgICB3aGlsZSAoY29sbGVuZCA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9sb29rdXAoUHlVbmljb2RlX1JFQUQoa2luZCxpZGF0YSwgY29sbGVuZCksIG1hcHBpbmcsICZ4KSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYoeCk7CiAgICAgICAgICAgICAgICAgaWYgKHghPVB5X05vbmUpCkBAIC02MTkzLDI2MSArODUwMiw0MTkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoa25vd25fZXJyb3JIYW5kbGVyKSB7CiAgICAgICAgICAgICBjYXNlIDE6IC8qIHN0cmljdCAqLwotICAgICAgICAgICAgICAgIHJhaXNlX3RyYW5zbGF0ZV9leGNlcHRpb24oJmV4Yywgc3RhcnRwLCBzaXplLCBjb2xsc3RhcnQtc3RhcnRwLCBjb2xsZW5kLXN0YXJ0cCwgcmVhc29uKTsKKyAgICAgICAgICAgICAgICByYWlzZV90cmFuc2xhdGVfZXhjZXB0aW9uKCZleGMsIGlucHV0LCBjb2xsc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZW5kLCByZWFzb24pOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwogICAgICAgICAgICAgICAgIC8qIE5vIG5lZWQgdG8gY2hlY2sgZm9yIHNwYWNlLCB0aGlzIGlzIGEgMToxIHJlcGxhY2VtZW50ICovCi0gICAgICAgICAgICAgICAgZm9yIChjb2xsID0gY29sbHN0YXJ0OyBjb2xsPGNvbGxlbmQ7ICsrY29sbCkKLSAgICAgICAgICAgICAgICAgICAgKnN0cisrID0gJz8nOworICAgICAgICAgICAgICAgIGZvciAoY29sbCA9IGNvbGxzdGFydDsgY29sbDxjb2xsZW5kOyBjb2xsKyspCisgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gJz8nOwogICAgICAgICAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgICAgICAgICAgY2FzZSAzOiAvKiBpZ25vcmUgKi8KLSAgICAgICAgICAgICAgICBwID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgNDogLyogeG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICAgICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICAgICAgZm9yIChwID0gY29sbHN0YXJ0OyBwIDwgY29sbGVuZDsgKytwKSB7CisgICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBpKSAqLworICAgICAgICAgICAgICAgIGZvciAoaSA9IGNvbGxzdGFydDsgaSA8IGNvbGxlbmQ7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyKzI5KzErMV07CiAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwOwotICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiYjJWQ7IiwgKGludCkqcCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGFybWFwdHJhbnNsYXRlX21ha2VzcGFjZSgmcmVzLCAmc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ci1QeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpKStzdHJsZW4oYnVmZmVyKSsoZW5kcC1jb2xsZW5kKSkpCisgICAgICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBpZGF0YSwgaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BvcytzdHJsZW4oYnVmZmVyKSsoc2l6ZS1jb2xsZW5kKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoY3AgPSBidWZmZXI7ICpjcDsgKytjcCkKLSAgICAgICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICpjcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtvcG9zKytdID0gKmNwOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwID0gY29sbGVuZDsKKyAgICAgICAgICAgICAgICBpID0gY29sbGVuZDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgcmVwdW5pY29kZSA9IHVuaWNvZGVfdHJhbnNsYXRlX2NhbGxfZXJyb3JoYW5kbGVyKGVycm9ycywgJmVycm9ySGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBzdGFydHAsIHNpemUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydC1zdGFydHAsIGNvbGxlbmQtc3RhcnRwLCAmbmV3cG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uLCBpbnB1dCwgJmV4YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0LCBjb2xsZW5kLCAmbmV3cG9zKTsKICAgICAgICAgICAgICAgICBpZiAocmVwdW5pY29kZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgICovCi0gICAgICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJnJlcywgJnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0ci1QeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpKStyZXBzaXplKyhlbmRwLWNvbGxlbmQpKSkgeworICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwdW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvciAodW5pMiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOyByZXBzaXplLS0+MDsgKyt1bmkyKQotICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAqdW5pMjsKLSAgICAgICAgICAgICAgICBwID0gc3RhcnRwICsgbmV3cG9zOworICAgICAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLworICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhcm1hcHRyYW5zbGF0ZV9tYWtlc3BhY2UoJm91dHB1dCwgJm9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcG9zK3JlcHNpemUrKHNpemUtY29sbGVuZCkpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKHVuaTIgPSAwOyByZXBzaXplLS0+MDsgKyt1bmkyKQorICAgICAgICAgICAgICAgICAgICBvdXRwdXRbb3BvcysrXSA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgdW5pMik7CisgICAgICAgICAgICAgICAgaSA9IG5ld3BvczsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogUmVzaXplIGlmIHdlIGFsbG9jYXRlZCB0byBtdWNoICovCi0gICAgcmVzcG9zID0gc3RyLVB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgaWYgKHJlc3BvczxQeVVuaWNvZGVfR0VUX1NJWkUocmVzKSkgewotICAgICAgICBpZiAoUHlVbmljb2RlX1Jlc2l6ZSgmcmVzLCByZXNwb3MpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB9CisgICAgcmVzID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfNEJZVEVfS0lORCwgb3V0cHV0LCBvcG9zKTsKKyAgICBpZiAoIXJlcykKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIFB5TWVtX0ZyZWUob3V0cHV0KTsKICAgICBQeV9YREVDUkVGKGV4Yyk7CiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHJlcyk7CisgICAgUHlNZW1fRnJlZShvdXRwdXQpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfVHJhbnNsYXRlKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKKy8qIERlcHJlY2F0ZWQuIFVzZSBQeVVuaWNvZGVfVHJhbnNsYXRlIGluc3RlYWQuICovCitQeU9iamVjdCAqCitQeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChjb25zdCBQeV9VTklDT0RFICpwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCit7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBzaXplKTsKKyAgICBpZiAoIXVuaWNvZGUpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcCh1bmljb2RlLCBtYXBwaW5nLCBlcnJvcnMpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitQeVVuaWNvZGVfVHJhbnNsYXRlKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAogICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7CiAgICAgaWYgKHN0ciA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgcmVzdWx0ID0gUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChzdHIsIG1hcHBpbmcsIGVycm9ycyk7CiAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgcmV0dXJuIHJlc3VsdDsKK30KIAotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gTlVMTDsKK3N0YXRpYyBQeV9VQ1M0CitmaXhfZGVjaW1hbF9hbmRfc3BhY2VfdG9fYXNjaWkoUHlPYmplY3QgKnNlbGYpCit7CisgICAgLyogTm8gbmVlZCB0byBjYWxsIFB5VW5pY29kZV9SRUFEWShzZWxmKSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gaXMgb25seQorICAgICAgIGNhbGxlZCBhcyBhIGNhbGxiYWNrIGZyb20gZml4dXAoKSB3aGljaCBkb2VzIGl0IGFscmVhZHkuICovCisgICAgY29uc3QgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBjb25zdCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjcsIGNoLCBmaXhlZDsKKyAgICBpbnQgbW9kaWZpZWQgPSAwOworICAgIFB5X3NzaXplX3QgaTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBmaXhlZCA9IDA7CisgICAgICAgIGlmIChjaCA+IDEyNykgeworICAgICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNTUEFDRShjaCkpCisgICAgICAgICAgICAgICAgZml4ZWQgPSAnICc7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zdCBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbCA+PSAwKQorICAgICAgICAgICAgICAgICAgICBmaXhlZCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZml4ZWQgIT0gMCkgeworICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgICAgICAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgZml4ZWQpOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpLCBmaXhlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGNoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAobW9kaWZpZWQpID8gbWF4Y2hhciA6IDA7Cit9CisKK1B5T2JqZWN0ICoKK19QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSShQeU9iamVjdCAqdW5pY29kZSkKK3sKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh1bmljb2RlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkgPD0gMTI3KSB7CisgICAgICAgIC8qIElmIHRoZSBzdHJpbmcgaXMgYWxyZWFkeSBBU0NJSSwganVzdCByZXR1cm4gdGhlIHNhbWUgc3RyaW5nICovCisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGU7CisgICAgfQorICAgIHJldHVybiBmaXh1cCh1bmljb2RlLCBmaXhfZGVjaW1hbF9hbmRfc3BhY2VfdG9fYXNjaWkpOwogfQogCiBQeU9iamVjdCAqCiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoUHlfVU5JQ09ERSAqcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X1VOSUNPREUgKnA7IC8qIHdyaXRlIHBvaW50ZXIgaW50byByZXN1bHQgKi8KKyAgICBQeU9iamVjdCAqZGVjaW1hbDsKICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgLyogQ29weSB0byBhIG5ldyBzdHJpbmcgKi8KLSAgICByZXN1bHQgPSAoUHlPYmplY3QgKilfUHlVbmljb2RlX05ldyhsZW5ndGgpOwotICAgIFB5X1VOSUNPREVfQ09QWShQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpLCBzLCBsZW5ndGgpOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKLSAgICAvKiBJdGVyYXRlIG92ZXIgY29kZSBwb2ludHMgKi8KKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBtYXhjaGFyID0gMTI3OwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewotICAgICAgICBQeV9VTklDT0RFIGNoID1zW2ldOworICAgICAgICBQeV9VTklDT0RFIGNoID0gc1tpXTsKICAgICAgICAgaWYgKGNoID4gMTI3KSB7CiAgICAgICAgICAgICBpbnQgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCi0gICAgICAgICAgICAgICAgcFtpXSA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgICAgICAgICAgY2ggPSAnMCcgKyBkZWNpbWFsOworICAgICAgICAgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIGNoKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OworCisgICAgLyogQ29weSB0byBhIG5ldyBzdHJpbmcgKi8KKyAgICBkZWNpbWFsID0gUHlVbmljb2RlX05ldyhsZW5ndGgsIG1heGNoYXIpOworICAgIGlmIChkZWNpbWFsID09IE5VTEwpCisgICAgICAgIHJldHVybiBkZWNpbWFsOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChkZWNpbWFsKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoZGVjaW1hbCk7CisgICAgLyogSXRlcmF0ZSBvdmVyIGNvZGUgcG9pbnRzICovCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VOSUNPREUgY2ggPSBzW2ldOworICAgICAgICBpZiAoY2ggPiAxMjcpIHsKKyAgICAgICAgICAgIGludCBkZWNpbWFsID0gUHlfVU5JQ09ERV9UT0RFQ0lNQUwoY2gpOworICAgICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkKKyAgICAgICAgICAgICAgICBjaCA9ICcwJyArIGRlY2ltYWw7CisgICAgICAgIH0KKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIGNoKTsKKyAgICB9CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KGRlY2ltYWwpOwogfQogLyogLS0tIERlY2ltYWwgRW5jb2RlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLWludCBQeVVuaWNvZGVfRW5jb2RlRGVjaW1hbChQeV9VTklDT0RFICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCitpbnQKK1B5VW5pY29kZV9FbmNvZGVEZWNpbWFsKFB5X1VOSUNPREUgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycykKIHsKLSAgICBQeV9VTklDT0RFICpwLCAqZW5kOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gImRlY2ltYWwiOwotICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9ICJpbnZhbGlkIGRlY2ltYWwgVW5pY29kZSBzdHJpbmciOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwgMz1pZ25vcmUsIDQ9eG1sY2hhcnJlZnJlcGxhY2UgKi8KLSAgICBpbnQga25vd25fZXJyb3JIYW5kbGVyID0gLTE7CisgICAgUHlPYmplY3QgKnVuaWNvZGU7CisgICAgUHlfc3NpemVfdCBpOworICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZDsKKyAgICB2b2lkICpkYXRhOwogCiAgICAgaWYgKG91dHB1dCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBwID0gczsKLSAgICBlbmQgPSBzICsgbGVuZ3RoOwotICAgIHdoaWxlIChwIDwgZW5kKSB7Ci0gICAgICAgIHJlZ2lzdGVyIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMsIGxlbmd0aCk7CisgICAgaWYgKHVuaWNvZGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKworICAgIGZvciAoaT0wOyBpIDwgbGVuZ3RoOyApIHsKKyAgICAgICAgUHlPYmplY3QgKmV4YzsKKyAgICAgICAgUHlfVUNTNCBjaDsKICAgICAgICAgaW50IGRlY2ltYWw7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICBQeV9zc2l6ZV90IHJlcHNpemU7Ci0gICAgICAgIFB5X3NzaXplX3QgbmV3cG9zOwotICAgICAgICBQeV9VTklDT0RFICp1bmkyOwotICAgICAgICBQeV9VTklDT0RFICpjb2xsc3RhcnQ7Ci0gICAgICAgIFB5X1VOSUNPREUgKmNvbGxlbmQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3M7CisKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1NQQUNFKGNoKSkgewogICAgICAgICAgICAgKm91dHB1dCsrID0gJyAnOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgZGVjaW1hbCA9IFB5X1VOSUNPREVfVE9ERUNJTUFMKGNoKTsKICAgICAgICAgaWYgKGRlY2ltYWwgPj0gMCkgewogICAgICAgICAgICAgKm91dHB1dCsrID0gJzAnICsgZGVjaW1hbDsKLSAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGlmICgwIDwgY2ggJiYgY2ggPCAyNTYpIHsKICAgICAgICAgICAgICpvdXRwdXQrKyA9IChjaGFyKWNoOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgLyogQWxsIG90aGVyIGNoYXJhY3RlcnMgYXJlIGNvbnNpZGVyZWQgdW5lbmNvZGFibGUgKi8KLSAgICAgICAgY29sbHN0YXJ0ID0gcDsKLSAgICAgICAgZm9yIChjb2xsZW5kID0gcCsxOyBjb2xsZW5kIDwgZW5kOyBjb2xsZW5kKyspIHsKLSAgICAgICAgICAgIGlmICgoMCA8ICpjb2xsZW5kICYmICpjb2xsZW5kIDwgMjU2KSB8fAotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRSgqY29sbGVuZCkgfHwKLSAgICAgICAgICAgICAgICAwIDw9IFB5X1VOSUNPREVfVE9ERUNJTUFMKCpjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAvKiBjYWNoZSBjYWxsYmFjayBuYW1lIGxvb2t1cAotICAgICAgICAgKiAoaWYgbm90IGRvbmUgeWV0LCBpLmUuIGl0J3MgdGhlIGZpcnN0IGVycm9yKSAqLwotICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMjsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikpCi0gICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KLSAgICAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oJmV4YywgZW5jb2RpbmcsIHMsIGxlbmd0aCwgY29sbHN0YXJ0LXMsIGNvbGxlbmQtcywgcmVhc29uKTsKLSAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgY2FzZSAyOiAvKiByZXBsYWNlICovCi0gICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApCi0gICAgICAgICAgICAgICAgKm91dHB1dCsrID0gJz8nOwotICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgIGNhc2UgMzogLyogaWdub3JlICovCi0gICAgICAgICAgICBwID0gY29sbGVuZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCi0gICAgICAgICAgICAvKiBnZW5lcmF0ZSByZXBsYWNlbWVudCAodGVtcG9yYXJpbHkgKG1pcyl1c2VzIHApICovCi0gICAgICAgICAgICBmb3IgKHAgPSBjb2xsc3RhcnQ7IHAgPCBjb2xsZW5kOyArK3ApCi0gICAgICAgICAgICAgICAgb3V0cHV0ICs9IHNwcmludGYob3V0cHV0LCAiJiMlZDsiLCAoaW50KSpwKTsKLSAgICAgICAgICAgIHAgPSBjb2xsZW5kOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHMsIGxlbmd0aCwgJmV4YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsc3RhcnQtcywgY29sbGVuZC1zLCAmbmV3cG9zKTsKLSAgICAgICAgICAgIGlmIChyZXB1bmljb2RlID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2socmVwdW5pY29kZSkpIHsKLSAgICAgICAgICAgICAgICAvKiBCeXRlIHJlc3VsdHMgbm90IHN1cHBvcnRlZCwgc2luY2UgdGhleSBoYXZlIG5vIGRlY2ltYWwgcHJvcGVydHkuICovCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVycm9yIGhhbmRsZXIgc2hvdWxkIHJldHVybiB1bmljb2RlIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICAqLwotICAgICAgICAgICAgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRShyZXB1bmljb2RlKTsKLSAgICAgICAgICAgIGZvciAodW5pMiA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHVuaWNvZGUpOyByZXBzaXplLS0+MDsgKyt1bmkyKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICp1bmkyOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTU1BBQ0UoY2gpKQotICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnICc7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlY2ltYWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChjaCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZWNpbWFsID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAnMCcgKyBkZWNpbWFsOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgwIDwgY2ggJiYgY2ggPCAyNTYpCi0gICAgICAgICAgICAgICAgICAgICAgICAqb3V0cHV0KysgPSAoY2hhciljaDsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCBsZW5ndGgsIGNvbGxzdGFydC1zLCBjb2xsZW5kLXMsIHJlYXNvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwID0gcyArIG5ld3BvczsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXB1bmljb2RlKTsKLSAgICAgICAgfQorCisgICAgICAgIHN0YXJ0cG9zID0gaTsKKyAgICAgICAgZXhjID0gTlVMTDsKKyAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCAiZGVjaW1hbCIsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRwb3MsIHN0YXJ0cG9zKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZGVjaW1hbCBVbmljb2RlIHN0cmluZyIpOworICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICAvKiAwLXRlcm1pbmF0ZSB0aGUgb3V0cHV0IHN0cmluZyAqLwogICAgICpvdXRwdXQrKyA9ICdcMCc7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9ERUNSRUYodW5pY29kZSk7CiAgICAgcmV0dXJuIDA7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwotICAgIHJldHVybiAtMTsKIH0KIAogLyogLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvdW5pY29kZWRlZnMuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZmFzdHNlYXJjaC5oIgorc3RhdGljIFB5X3NzaXplX3QKK2FueV9maW5kX3NsaWNlKGludCBkaXJlY3Rpb24sIFB5T2JqZWN0KiBzMSwgUHlPYmplY3QqIHMyLAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQoreworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CisgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yLCByZXN1bHQ7CiAKLSNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgotI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHMxKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHMyKTsKKyAgICBraW5kID0ga2luZDEgPiBraW5kMiA/IGtpbmQxIDoga2luZDI7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHMxKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoczIpOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoczEsIGtpbmQpOworICAgIGlmICghYnVmMSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoczIsIGtpbmQpOworICAgIGlmICghYnVmMikgeworICAgICAgICBpZiAoa2luZDEgIT0ga2luZCkgUHlNZW1fRnJlZShidWYxKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoczEpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzMik7CiAKLSNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcKLSNkZWZpbmUgX1B5X0luc2VydFRob3VzYW5kc0dyb3VwaW5nTG9jYWxlIF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmdMb2NhbGUKLSNpbmNsdWRlICJzdHJpbmdsaWIvbG9jYWxldXRpbC5oIgorICAgIGlmIChkaXJlY3Rpb24gPiAwKSB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHVjczFsaWJfZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmVzdWx0ID0gdWNzMmxpYl9maW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2ZpbmRfc2xpY2UoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gLTI7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN3aXRjaCAoa2luZCkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzMSkgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHMyKSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9yZmluZF9zbGljZShidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgPSB1Y3MxbGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3MybGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXN1bHQgPSB1Y3M0bGliX3JmaW5kX3NsaWNlKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IC0yOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeV9zc2l6ZV90CitfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IGluZGV4LAorICAgIFB5X3NzaXplX3Qgbl9idWZmZXIsCisgICAgdm9pZCAqZGlnaXRzLCBQeV9zc2l6ZV90IG5fZGlnaXRzLAorICAgIFB5X3NzaXplX3QgbWluX3dpZHRoLAorICAgIGNvbnN0IGNoYXIgKmdyb3VwaW5nLCBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcCwKKyAgICBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIHVuc2lnbmVkIGludCBraW5kLCB0aG91c2FuZHNfc2VwX2tpbmQ7CisgICAgY2hhciAqZGF0YSwgKnRob3VzYW5kc19zZXBfZGF0YTsKKyAgICBQeV9zc2l6ZV90IHRob3VzYW5kc19zZXBfbGVuOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCkgeworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgICAgIGRhdGEgPSAoY2hhciAqKSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSArIGluZGV4ICoga2luZDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfMUJZVEVfS0lORDsKKyAgICAgICAgZGF0YSA9IE5VTEw7CisgICAgfQorICAgIHRob3VzYW5kc19zZXBfa2luZCA9IFB5VW5pY29kZV9LSU5EKHRob3VzYW5kc19zZXApOworICAgIHRob3VzYW5kc19zZXBfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHRob3VzYW5kc19zZXApOworICAgIHRob3VzYW5kc19zZXBfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGhvdXNhbmRzX3NlcCk7CisgICAgaWYgKHVuaWNvZGUgIT0gTlVMTCAmJiB0aG91c2FuZHNfc2VwX2tpbmQgIT0ga2luZCkgeworICAgICAgICBpZiAodGhvdXNhbmRzX3NlcF9raW5kIDwga2luZCkgeworICAgICAgICAgICAgdGhvdXNhbmRzX3NlcF9kYXRhID0gX1B5VW5pY29kZV9Bc0tpbmQodGhvdXNhbmRzX3NlcCwga2luZCk7CisgICAgICAgICAgICBpZiAoIXRob3VzYW5kc19zZXBfZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBkYXRhID0gX1B5VW5pY29kZV9Bc0tpbmQodW5pY29kZSwgdGhvdXNhbmRzX3NlcF9raW5kKTsKKyAgICAgICAgICAgIGlmICghZGF0YSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAodW5pY29kZSAhPSBOVUxMICYmIFB5VW5pY29kZV9JU19BU0NJSSh1bmljb2RlKSkKKyAgICAgICAgICAgIGxlbiA9IGFzY2lpbGliX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgICAgIChQeV9VQ1MxICopIGRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTMSAqKSBkaWdpdHMsIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAgICAgKFB5X1VDUzEgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxlbiA9IHVjczFsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgKFB5X1VDUzEqKWRhdGEsIG5fYnVmZmVyLCAoUHlfVUNTMSopZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLAorICAgICAgICAgICAgICAgIChQeV9VQ1MxICopIHRob3VzYW5kc19zZXBfZGF0YSwgdGhvdXNhbmRzX3NlcF9sZW4pOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBsZW4gPSB1Y3MybGliX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgKFB5X1VDUzIgKikgZGF0YSwgbl9idWZmZXIsIChQeV9VQ1MyICopIGRpZ2l0cywgbl9kaWdpdHMsCisgICAgICAgICAgICBtaW5fd2lkdGgsIGdyb3VwaW5nLAorICAgICAgICAgICAgKFB5X1VDUzIgKikgdGhvdXNhbmRzX3NlcF9kYXRhLCB0aG91c2FuZHNfc2VwX2xlbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIGxlbiA9IHVjczRsaWJfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAoUHlfVUNTNCAqKSBkYXRhLCBuX2J1ZmZlciwgKFB5X1VDUzQgKikgZGlnaXRzLCBuX2RpZ2l0cywKKyAgICAgICAgICAgIG1pbl93aWR0aCwgZ3JvdXBpbmcsCisgICAgICAgICAgICAoUHlfVUNTNCAqKSB0aG91c2FuZHNfc2VwX2RhdGEsIHRob3VzYW5kc19zZXBfbGVuKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmICh1bmljb2RlICE9IE5VTEwgJiYgdGhvdXNhbmRzX3NlcF9raW5kICE9IGtpbmQpIHsKKyAgICAgICAgaWYgKHRob3VzYW5kc19zZXBfa2luZCA8IGtpbmQpCisgICAgICAgICAgICBQeU1lbV9GcmVlKHRob3VzYW5kc19zZXBfZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUoZGF0YSk7CisgICAgfQorICAgIGlmICh1bmljb2RlID09IE5VTEwpIHsKKyAgICAgICAgKm1heGNoYXIgPSAxMjc7CisgICAgICAgIGlmIChsZW4gIT0gbl9kaWdpdHMpIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh0aG91c2FuZHNfc2VwKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGxlbjsKK30KKwogCiAvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLwogI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXApAQCAtNjQ2NCw3MiArODkzMSwxMDIgQEAKICAgICAgICAgICAgIHN0YXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKLS8qIF9QeV9VTklDT0RFX05FWFQgaXMgYSBwcml2YXRlIG1hY3JvIHVzZWQgdG8gcmV0cmlldmUgdGhlIGNoYXJhY3RlciBwb2ludGVkCi0gKiBieSAncHRyJywgcG9zc2libHkgY29tYmluaW5nIHN1cnJvZ2F0ZSBwYWlycyBvbiBuYXJyb3cgYnVpbGRzLgotICogJ3B0cicgYW5kICdlbmQnIG11c3QgYmUgUHlfVU5JQ09ERSosIHdpdGggJ3B0cicgcG9pbnRpbmcgYXQgdGhlIGNoYXJhY3RlcgotICogdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYW5kICdlbmQnIHBvaW50aW5nIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLSAqICgnZW5kJyBpcyB1c2VkIG9uIG5hcnJvdyBidWlsZHMgdG8gZGV0ZWN0IGEgbG9uZSBzdXJyb2dhdGUgYXQgdGhlCi0gKiBlbmQgb2YgdGhlIGJ1ZmZlciB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCB1bmNoYW5nZWQuKQotICogVGhlIHB0ciBhbmQgZW5kIGFyZ3VtZW50cyBzaG91bGQgYmUgc2lkZS1lZmZlY3QgZnJlZSBhbmQgcHRyIG11c3QgYW4gbHZhbHVlLgotICogVGhlIHR5cGUgb2YgdGhlIHJldHVybmVkIGNoYXIgaXMgYWx3YXlzIFB5X1VDUzQuCi0gKgotICogTm90ZTogdGhlIG1hY3JvIGFkdmFuY2VzIHB0ciB0byBuZXh0IGNoYXIsIHNvIGl0IG1pZ2h0IGhhdmUgc2lkZS1lZmZlY3RzCi0gKiAgICAgICAoZXNwZWNpYWxseSBpZiB1c2VkIHdpdGggb3RoZXIgbWFjcm9zKS4KLSAqLwotCi0vKiBoZWxwZXIgbWFjcm9zIHVzZWQgYnkgX1B5X1VOSUNPREVfTkVYVCAqLwotI2RlZmluZSBfUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURShjaCkgKDB4RDgwMCA8PSBjaCAmJiBjaCA8PSAweERCRkYpCi0jZGVmaW5lIF9QeV9VTklDT0RFX0lTX0xPV19TVVJST0dBVEUoY2gpICgweERDMDAgPD0gY2ggJiYgY2ggPD0gMHhERkZGKQotLyogSm9pbiB0d28gc3Vycm9nYXRlIGNoYXJhY3RlcnMgYW5kIHJldHVybiBhIHNpbmdsZSBQeV9VQ1M0IHZhbHVlLiAqLwotI2RlZmluZSBfUHlfVU5JQ09ERV9KT0lOX1NVUlJPR0FURVMoaGlnaCwgbG93KSAgXAotICAgICgoKCgoUHlfVUNTNCkoaGlnaCkgJiAweDAzRkYpIDw8IDEwKSB8ICAgICAgXAotICAgICAgKChQeV9VQ1M0KShsb3cpICYgMHgwM0ZGKSkgKyAweDEwMDAwKQotCi0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIF9QeV9VTklDT0RFX05FWFQocHRyLCBlbmQpICoocHRyKSsrCi0jZWxzZQotI2RlZmluZSBfUHlfVU5JQ09ERV9ORVhUKHB0ciwgZW5kKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAoKChfUHlfVU5JQ09ERV9JU19ISUdIX1NVUlJPR0FURSgqKHB0cikpICYmIChwdHIpIDwgKGVuZCkpICYmICAgICAgXAotICAgICAgICBfUHlfVU5JQ09ERV9JU19MT1dfU1VSUk9HQVRFKChwdHIpWzFdKSkgPyAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICgocHRyKSArPSAyLF9QeV9VTklDT0RFX0pPSU5fU1VSUk9HQVRFUygocHRyKVstMl0sIChwdHIpWy0xXSkpIDogXAotICAgICAgIChQeV9VQ1M0KSoocHRyKSsrKQotI2VuZGlmCi0KLVB5X3NzaXplX3QgUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0NvdW50KFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5VW5pY29kZU9iamVjdCogc3RyX29iajsKLSAgICBQeVVuaWNvZGVPYmplY3QqIHN1Yl9vYmo7CisgICAgUHlPYmplY3QqIHN0cl9vYmo7CisgICAgUHlPYmplY3QqIHN1Yl9vYmo7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAotICAgIHN0cl9vYmogPSAoUHlVbmljb2RlT2JqZWN0KikgUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKKyAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKICAgICBpZiAoIXN0cl9vYmopCiAgICAgICAgIHJldHVybiAtMTsKLSAgICBzdWJfb2JqID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7CisgICAgc3ViX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7CiAgICAgaWYgKCFzdWJfb2JqKSB7CiAgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1Yl9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHN0cl9vYmotPmxlbmd0aCk7Ci0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2NvdW50KAotICAgICAgICBzdHJfb2JqLT5zdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsIHN1Yl9vYmotPnN0ciwgc3ViX29iai0+bGVuZ3RoLAotICAgICAgICBQWV9TU0laRV9UX01BWAotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKKyAgICBraW5kID0ga2luZDE7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOworICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkgeworICAgICAgICBpZiAoa2luZDIgPiBraW5kKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3ViX29iaiwga2luZCk7CisgICAgfQorICAgIGlmICghYnVmMikKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJfb2JqKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3ViX29iaik7CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4xKTsKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJfb2JqKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IGFzY2lpbGliX2NvdW50KAorICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICAgICApOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSB1Y3MxbGliX2NvdW50KAorICAgICAgICAgICAgICAgICgoUHlfVUNTMSopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MybGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1MyKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3M0bGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1M0KilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7IHJlc3VsdCA9IDA7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKIAorICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworCiAgICAgcmV0dXJuIHJlc3VsdDsKKyAgb25FcnJvcjoKKyAgICBQeV9ERUNSRUYoc3ViX29iaik7CisgICAgUHlfREVDUkVGKHN0cl9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIC0xOwogfQogCi1QeV9zc2l6ZV90IFB5VW5pY29kZV9GaW5kKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQorUHlfc3NpemVfdAorUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAorICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCkBAIC02NTQxLDE5ICs5MDM4LDE1IEBACiAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3ViKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CiAKLSAgICBpZiAoZGlyZWN0aW9uID4gMCkKLSAgICAgICAgcmVzdWx0ID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHIpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3RyKSwKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YiksIFB5VW5pY29kZV9HRVRfU0laRShzdWIpLAotICAgICAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICAgICAgKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN0ciksIFB5VW5pY29kZV9HRVRfU0laRShzdHIpLAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3ViKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YiksCi0gICAgICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICAgICApOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKGRpcmVjdGlvbiwKKyAgICAgICAgc3RyLCBzdWIsIHN0YXJ0LCBlbmQKKyAgICAgICAgKTsKIAogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWIpOwpAQCAtNjU2MSwzNyArOTA1NCwxMDQgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMKLWludCB0YWlsbWF0Y2goUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsCi0gICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmluZENoYXIoUHlPYmplY3QgKnN0ciwgUHlfVUNTNCBjaCwKKyAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewotICAgIGlmIChzdWJzdHJpbmctPmxlbmd0aCA9PSAwKQorICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgcmVzdWx0OworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGlmIChzdGFydCA8IDAgfHwgZW5kIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBpZiAoZW5kID4gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSkKKyAgICAgICAgZW5kID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICByZXN1bHQgPSBmaW5kY2hhcihQeVVuaWNvZGVfMUJZVEVfREFUQShzdHIpICsga2luZCpzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICBraW5kLCBlbmQtc3RhcnQsIGNoLCBkaXJlY3Rpb24pOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBzdGFydCArIHJlc3VsdDsKK30KKworc3RhdGljIGludAordGFpbG1hdGNoKFB5T2JqZWN0ICpzZWxmLAorICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcsCisgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKKyAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICBpbnQgZGlyZWN0aW9uKQoreworICAgIGludCBraW5kX3NlbGY7CisgICAgaW50IGtpbmRfc3ViOworICAgIHZvaWQgKmRhdGFfc2VsZjsKKyAgICB2b2lkICpkYXRhX3N1YjsKKyAgICBQeV9zc2l6ZV90IG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBlbmRfc3ViOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fAorICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKSA9PSAwKQogICAgICAgICByZXR1cm4gMTsKIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHNlbGYtPmxlbmd0aCk7Ci0gICAgZW5kIC09IHN1YnN0cmluZy0+bGVuZ3RoOworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICBlbmQgLT0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyaW5nKTsKICAgICBpZiAoZW5kIDwgc3RhcnQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKGRpcmVjdGlvbiA+IDApIHsKLSAgICAgICAgaWYgKFB5X1VOSUNPREVfTUFUQ0goc2VsZiwgZW5kLCBzdWJzdHJpbmcpKQorICAgIGtpbmRfc2VsZiA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGFfc2VsZiA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGtpbmRfc3ViID0gUHlVbmljb2RlX0tJTkQoc3Vic3RyaW5nKTsKKyAgICBkYXRhX3N1YiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgZW5kX3N1YiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgLSAxOworCisgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgIG9mZnNldCA9IGVuZDsKKyAgICBlbHNlCisgICAgICAgIG9mZnNldCA9IHN0YXJ0OworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmRfc2VsZiwgZGF0YV9zZWxmLCBvZmZzZXQpID09CisgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgMCkgJiYKKyAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZF9zZWxmLCBkYXRhX3NlbGYsIG9mZnNldCArIGVuZF9zdWIpID09CisgICAgICAgIFB5VW5pY29kZV9SRUFEKGtpbmRfc3ViLCBkYXRhX3N1YiwgZW5kX3N1YikpIHsKKyAgICAgICAgLyogSWYgYm90aCBhcmUgb2YgdGhlIHNhbWUga2luZCwgbWVtY21wIGlzIHN1ZmZpY2llbnQgKi8KKyAgICAgICAgaWYgKGtpbmRfc2VsZiA9PSBraW5kX3N1YikgeworICAgICAgICAgICAgcmV0dXJuICEgbWVtY21wKChjaGFyICopZGF0YV9zZWxmICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9mZnNldCAqIFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3ViLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZykgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpKTsKKyAgICAgICAgfQorICAgICAgICAvKiBvdGhlcndpc2Ugd2UgaGF2ZSB0byBjb21wYXJlIGVhY2ggY2hhcmFjdGVyIGJ5IGZpcnN0IGFjY2VzaW5nIGl0ICovCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8gY29tcGFyZSAwIGFuZCBsZW4oc3Vic3RyaW5nKS0xIGJlY2F1c2UKKyAgICAgICAgICAgICAgIHRoZSBpZiBzdGF0ZW1lbnQgYWJvdmUgZW5zdXJlZCBhbHJlYWR5IHRoYXQgdGhleSBhcmUgZXF1YWwKKyAgICAgICAgICAgICAgIHdoZW4gd2UgZW5kIHVwIGhlcmUuICovCisgICAgICAgICAgICAvKiBUT0RPOiBob25vciBkaXJlY3Rpb24gYW5kIGRvIGEgZm9yd2FyZCBvciBiYWNrd2FyZHMgc2VhcmNoICovCisgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDwgZW5kX3N1YjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEKGtpbmRfc2VsZiwgZGF0YV9zZWxmLCBvZmZzZXQgKyBpKSAhPQorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfUkVBRChraW5kX3N1YiwgZGF0YV9zdWIsIGkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChQeV9VTklDT0RFX01BVENIKHNlbGYsIHN0YXJ0LCBzdWJzdHJpbmcpKQotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gMDsKIH0KIAotUHlfc3NpemVfdCBQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1YnN0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24pCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfVGFpbG1hdGNoKFB5T2JqZWN0ICpzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwogCkBAIC02NjA0LDggKzkxNjQsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKChQeVVuaWNvZGVPYmplY3QgKilzdHIsCi0gICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilzdWJzdHIsCisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLAogICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWJzdHIpOwpAQCAtNjYxNSwxNjggKzkxNzQsMzEyIEBACiAvKiBBcHBseSBmaXhmY3QgZmlsdGVyIHRvIHRoZSBVbmljb2RlIG9iamVjdCBzZWxmIGFuZCByZXR1cm4gYQogICAgcmVmZXJlbmNlIHRvIHRoZSBtb2RpZmllZCBvYmplY3QgKi8KIAotc3RhdGljCi1QeU9iamVjdCAqZml4dXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgIGludCAoKmZpeGZjdCkoUHlVbmljb2RlT2JqZWN0ICpzKSkKK3N0YXRpYyBQeU9iamVjdCAqCitmaXh1cChQeU9iamVjdCAqc2VsZiwKKyAgICAgIFB5X1VDUzQgKCpmaXhmY3QpKFB5T2JqZWN0ICpzKSkKIHsKKyAgICBQeU9iamVjdCAqdTsKKyAgICBQeV9VQ1M0IG1heGNoYXJfb2xkLCBtYXhjaGFyX25ldyA9IDA7CisgICAgUHlPYmplY3QgKnY7CiAKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7Ci0KLSAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgIHUgPSBfUHlVbmljb2RlX0NvcHkoc2VsZik7CiAgICAgaWYgKHUgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbWF4Y2hhcl9vbGQgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodSk7CiAKLSAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgLyogZml4IGZ1bmN0aW9ucyByZXR1cm4gdGhlIG5ldyBtYXhpbXVtIGNoYXJhY3RlciBpbiBhIHN0cmluZywKKyAgICAgICBpZiB0aGUga2luZCBvZiB0aGUgcmVzdWx0aW5nIHVuaWNvZGUgb2JqZWN0IGRvZXMgbm90IGNoYW5nZSwKKyAgICAgICBldmVyeXRoaW5nIGlzIGZpbmUuICBPdGhlcndpc2Ugd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHN0cmluZyBraW5kCisgICAgICAgYW5kIHJlLXJ1biB0aGUgZml4IGZ1bmN0aW9uLiAqLworICAgIG1heGNoYXJfbmV3ID0gZml4ZmN0KHUpOwogCi0gICAgaWYgKCFmaXhmY3QodSkgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgLyogZml4ZmN0IHNob3VsZCByZXR1cm4gVFJVRSBpZiBpdCBtb2RpZmllZCB0aGUgYnVmZmVyLiBJZgotICAgICAgICAgICBGQUxTRSwgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBidWZmZXIgaW5zdGVhZAotICAgICAgICAgICAodG8gc2F2ZSBzcGFjZSwgbm90IHRpbWUpICovCi0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICBpZiAobWF4Y2hhcl9uZXcgPT0gMCkgeworICAgICAgICAvKiBubyBjaGFuZ2VzICovOworICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKKyAgICAgICAgICAgIHJldHVybiBzZWxmOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1OworICAgIH0KKworICAgIG1heGNoYXJfbmV3ID0gYWxpZ25fbWF4Y2hhcihtYXhjaGFyX25ldyk7CisKKyAgICBpZiAobWF4Y2hhcl9uZXcgPT0gbWF4Y2hhcl9vbGQpCisgICAgICAgIHJldHVybiB1OworCisgICAgLyogSW4gY2FzZSB0aGUgbWF4aW11bSBjaGFyYWN0ZXIgY2hhbmdlZCwgd2UgbmVlZCB0bworICAgICAgIGNvbnZlcnQgdGhlIHN0cmluZyB0byB0aGUgbmV3IGNhdGVnb3J5LiAqLworICAgIHYgPSBQeVVuaWNvZGVfTmV3KFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjaGFyX25ldyk7CisgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7CisgICAgaWYgKG1heGNoYXJfbmV3ID4gbWF4Y2hhcl9vbGQpIHsKKyAgICAgICAgLyogSWYgdGhlIG1heGNoYXIgaW5jcmVhc2VkIHNvIHRoYXQgdGhlIGtpbmQgY2hhbmdlZCwgbm90IGFsbAorICAgICAgICAgICBjaGFyYWN0ZXJzIGFyZSByZXByZXNlbnRhYmxlIGFueW1vcmUgYW5kIHdlIG5lZWQgdG8gZml4IHRoZQorICAgICAgICAgICBzdHJpbmcgYWdhaW4uIFRoaXMgb25seSBoYXBwZW5zIGluIHZlcnkgZmV3IGNhc2VzLiAqLworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh2LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCAwLCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSk7CisgICAgICAgIG1heGNoYXJfb2xkID0gZml4ZmN0KHYpOworICAgICAgICBhc3NlcnQobWF4Y2hhcl9vbGQgPiAwICYmIG1heGNoYXJfb2xkIDw9IG1heGNoYXJfbmV3KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHYsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpKTsKKyAgICB9CisgICAgUHlfREVDUkVGKHUpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodiwgMSkpOworICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMKLWludCBmaXh1cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCitzdGF0aWMgUHlPYmplY3QgKgorYXNjaWlfdXBwZXJfb3JfbG93ZXIoUHlPYmplY3QgKnNlbGYsIGludCBsb3dlcikKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IHNlbGYtPmxlbmd0aDsKLSAgICBQeV9VTklDT0RFICpzID0gc2VsZi0+c3RyOwotICAgIGludCBzdGF0dXMgPSAwOworICAgIFB5X3NzaXplX3QgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgY2hhciAqcmVzZGF0YSwgKmRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBQeU9iamVjdCAqcmVzOwogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGNoOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobGVuLCAxMjcpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmVzZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgaWYgKGxvd2VyKQorICAgICAgICBfUHlfYnl0ZXNfbG93ZXIocmVzZGF0YSwgZGF0YSwgbGVuKTsKKyAgICBlbHNlCisgICAgICAgIF9QeV9ieXRlc191cHBlcihyZXNkYXRhLCBkYXRhLCBsZW4pOworICAgIHJldHVybiByZXM7Cit9CiAKLSAgICAgICAgY2ggPSBQeV9VTklDT0RFX1RPVVBQRVIoKnMpOwotICAgICAgICBpZiAoY2ggIT0gKnMpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgICAgICAgICAqcyA9IGNoOworc3RhdGljIFB5X1VDUzQKK2hhbmRsZV9jYXBpdGFsX3NpZ21hKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfc3NpemVfdCBpKQoreworICAgIFB5X3NzaXplX3QgajsKKyAgICBpbnQgZmluYWxfc2lnbWE7CisgICAgUHlfVUNTNCBjOworICAgIC8qIFUrMDNBMyBpcyBpbiB0aGUgRmluYWxfU2lnbWEgY29udGV4dCB3aGVuLCBpdCBpcyBmb3VuZCBsaWtlIHRoaXM6CisKKyAgICAgXHB7Y2FzZWR9XHB7Y2FzZS1pZ25vcmFibGV9KlUrMDNBMyEoXHB7Y2FzZS1pZ25vcmFibGV9Klxwe2Nhc2VkfSkKKworICAgIHdoZXJlICEgaXMgYSBuZWdhdGlvbiBhbmQgXHB7eHh4fSBpcyBhIGNoYXJhY3RlciB3aXRoIHByb3BlcnR5IHh4eC4KKyAgICAqLworICAgIGZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkgeworICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc0Nhc2VJZ25vcmFibGUoYykpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgZmluYWxfc2lnbWEgPSBqID49IDAgJiYgX1B5VW5pY29kZV9Jc0Nhc2VkKGMpOworICAgIGlmIChmaW5hbF9zaWdtYSkgeworICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IGxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaik7CisgICAgICAgICAgICBpZiAoIV9QeVVuaWNvZGVfSXNDYXNlSWdub3JhYmxlKGMpKQorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHMrKzsKKyAgICAgICAgZmluYWxfc2lnbWEgPSBqID09IGxlbmd0aCB8fCAhX1B5VW5pY29kZV9Jc0Nhc2VkKGMpOwogICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7CisgICAgcmV0dXJuIChmaW5hbF9zaWdtYSkgPyAweDNDMiA6IDB4M0MzOwogfQogCi1zdGF0aWMKLWludCBmaXhsb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCitzdGF0aWMgaW50Citsb3dlcl91Y3M0KGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfc3NpemVfdCBpLAorICAgICAgICAgICBQeV9VQ1M0IGMsIFB5X1VDUzQgKm1hcHBlZCkKIHsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IHNlbGYtPmxlbmd0aDsKLSAgICBQeV9VTklDT0RFICpzID0gc2VsZi0+c3RyOwotICAgIGludCBzdGF0dXMgPSAwOworICAgIC8qIE9ic2N1cmUgc3BlY2lhbCBjYXNlLiAqLworICAgIGlmIChjID09IDB4M0EzKSB7CisgICAgICAgIG1hcHBlZFswXSA9IGhhbmRsZV9jYXBpdGFsX3NpZ21hKGtpbmQsIGRhdGEsIGxlbmd0aCwgaSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICByZXR1cm4gX1B5VW5pY29kZV9Ub0xvd2VyRnVsbChjLCBtYXBwZWQpOworfQogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICByZWdpc3RlciBQeV9VTklDT0RFIGNoOworc3RhdGljIFB5X3NzaXplX3QKK2RvX2NhcGl0YWxpemUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKKyAgICBpbnQgbl9yZXMsIGo7CisgICAgUHlfVUNTNCBjLCBtYXBwZWRbM107CiAKLSAgICAgICAgY2ggPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICBpZiAoY2ggIT0gKnMpIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgICAgICAgICAqcyA9IGNoOworICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKKyAgICB9CisgICAgZm9yIChpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IG5fcmVzOyBqKyspIHsKKyAgICAgICAgICAgICptYXhjaGFyID0gTUFYX01BWENIQVIoKm1heGNoYXIsIG1hcHBlZFtqXSk7CisgICAgICAgICAgICByZXNbaysrXSA9IG1hcHBlZFtqXTsKICAgICAgICAgfQotICAgICAgICBzKys7CiAgICAgfQotCi0gICAgcmV0dXJuIHN0YXR1czsKKyAgICByZXR1cm4gazsKIH0KIAotc3RhdGljCi1pbnQgZml4c3dhcGNhc2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7CitzdGF0aWMgUHlfc3NpemVfdAorZG9fc3dhcGNhc2UoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpIHsKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOwogCi0gICAgd2hpbGUgKGxlbi0tID4gMCkgewotICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKCpzKSkgewotICAgICAgICAgICAgKnMgPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICAgICAgc3RhdHVzID0gMTsKLSAgICAgICAgfSBlbHNlIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoKnMpKSB7Ci0gICAgICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgICAgICBzdGF0dXMgPSAxOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSwgbWFwcGVkWzNdOworICAgICAgICBpbnQgbl9yZXMsIGo7CisgICAgICAgIGlmIChQeV9VTklDT0RFX0lTVVBQRVIoYykpIHsKKyAgICAgICAgICAgIG5fcmVzID0gbG93ZXJfdWNzNChraW5kLCBkYXRhLCBsZW5ndGgsIGksIGMsIG1hcHBlZCk7CiAgICAgICAgIH0KLSAgICAgICAgcysrOwotICAgIH0KLQotICAgIHJldHVybiBzdGF0dXM7Ci19Ci0KLXN0YXRpYwotaW50IGZpeGNhcGl0YWxpemUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIFB5X3NzaXplX3QgbGVuID0gc2VsZi0+bGVuZ3RoOwotICAgIFB5X1VOSUNPREUgKnMgPSBzZWxmLT5zdHI7Ci0gICAgaW50IHN0YXR1cyA9IDA7Ci0KLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghUHlfVU5JQ09ERV9JU1VQUEVSKCpzKSkgewotICAgICAgICAqcyA9IFB5X1VOSUNPREVfVE9VUFBFUigqcyk7Ci0gICAgICAgIHN0YXR1cyA9IDE7Ci0gICAgfQotICAgIHMrKzsKLSAgICB3aGlsZSAoLS1sZW4gPiAwKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0xPV0VSKCpzKSkgewotICAgICAgICAgICAgKnMgPSBQeV9VTklDT0RFX1RPTE9XRVIoKnMpOwotICAgICAgICAgICAgc3RhdHVzID0gMTsKKyAgICAgICAgZWxzZSBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGMpKSB7CisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9VcHBlckZ1bGwoYywgbWFwcGVkKTsKICAgICAgICAgfQotICAgICAgICBzKys7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbl9yZXMgPSAxOworICAgICAgICAgICAgbWFwcGVkWzBdID0gYzsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBzdGF0dXM7CisgICAgcmV0dXJuIGs7CiB9CiAKLXN0YXRpYwotaW50IGZpeHRpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3N0YXRpYyBQeV9zc2l6ZV90Citkb191cHBlcl9vcl9sb3dlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywKKyAgICAgICAgICAgICAgICAgIFB5X1VDUzQgKm1heGNoYXIsIGludCBsb3dlcikKIHsKLSAgICByZWdpc3RlciBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGsgPSAwOworCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpLCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKKyAgICAgICAgaWYgKGxvd2VyKQorICAgICAgICAgICAgbl9yZXMgPSBsb3dlcl91Y3M0KGtpbmQsIGRhdGEsIGxlbmd0aCwgaSwgYywgbWFwcGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbl9yZXMgPSBfUHlVbmljb2RlX1RvVXBwZXJGdWxsKGMsIG1hcHBlZCk7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBuX3JlczsgaisrKSB7CisgICAgICAgICAgICAqbWF4Y2hhciA9IE1BWF9NQVhDSEFSKCptYXhjaGFyLCBtYXBwZWRbal0pOworICAgICAgICAgICAgcmVzW2srK10gPSBtYXBwZWRbal07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGs7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90Citkb191cHBlcihpbnQga2luZCwgdm9pZCAqZGF0YSwgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgKnJlcywgUHlfVUNTNCAqbWF4Y2hhcikKK3sKKyAgICByZXR1cm4gZG9fdXBwZXJfb3JfbG93ZXIoa2luZCwgZGF0YSwgbGVuZ3RoLCByZXMsIG1heGNoYXIsIDApOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fbG93ZXIoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgcmV0dXJuIGRvX3VwcGVyX29yX2xvd2VyKGtpbmQsIGRhdGEsIGxlbmd0aCwgcmVzLCBtYXhjaGFyLCAxKTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2RvX2Nhc2Vmb2xkKGludCBraW5kLCB2b2lkICpkYXRhLCBQeV9zc2l6ZV90IGxlbmd0aCwgUHlfVUNTNCAqcmVzLCBQeV9VQ1M0ICptYXhjaGFyKQoreworICAgIFB5X3NzaXplX3QgaSwgayA9IDA7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIFB5X1VDUzQgbWFwcGVkWzNdOworICAgICAgICBpbnQgaiwgbl9yZXMgPSBfUHlVbmljb2RlX1RvRm9sZGVkRnVsbChjLCBtYXBwZWQpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBrOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorZG9fdGl0bGUoaW50IGtpbmQsIHZvaWQgKmRhdGEsIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0ICpyZXMsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBpLCBrID0gMDsKICAgICBpbnQgcHJldmlvdXNfaXNfY2FzZWQ7CiAKLSAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSBQeV9VTklDT0RFX1RPVElUTEUoKnApOwotICAgICAgICBpZiAoKnAgIT0gY2gpIHsKLSAgICAgICAgICAgICpwID0gY2g7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBwcmV2aW91c19pc19jYXNlZCA9IDA7Ci0gICAgZm9yICg7IHAgPCBlOyBwKyspIHsKLSAgICAgICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSBjaCA9ICpwOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgUHlfVUNTNCBtYXBwZWRbM107CisgICAgICAgIGludCBuX3JlcywgajsKIAogICAgICAgICBpZiAocHJldmlvdXNfaXNfY2FzZWQpCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfVE9MT1dFUihjaCk7CisgICAgICAgICAgICBuX3JlcyA9IGxvd2VyX3VjczQoa2luZCwgZGF0YSwgbGVuZ3RoLCBpLCBjLCBtYXBwZWQpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCA9IFB5X1VOSUNPREVfVE9USVRMRShjaCk7CisgICAgICAgICAgICBuX3JlcyA9IF9QeVVuaWNvZGVfVG9UaXRsZUZ1bGwoYywgbWFwcGVkKTsKIAotICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU0xPV0VSKGNoKSB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fAotICAgICAgICAgICAgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKLSAgICAgICAgICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSAwOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgbl9yZXM7IGorKykgeworICAgICAgICAgICAgKm1heGNoYXIgPSBNQVhfTUFYQ0hBUigqbWF4Y2hhciwgbWFwcGVkW2pdKTsKKyAgICAgICAgICAgIHJlc1trKytdID0gbWFwcGVkW2pdOworICAgICAgICB9CisKKyAgICAgICAgcHJldmlvdXNfaXNfY2FzZWQgPSBfUHlVbmljb2RlX0lzQ2FzZWQoYyk7CiAgICAgfQotICAgIHJldHVybiAxOworICAgIHJldHVybiBrOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorY2FzZV9vcGVyYXRpb24oUHlPYmplY3QgKnNlbGYsCisgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICgqcGVyZm9ybSkoaW50LCB2b2lkICosIFB5X3NzaXplX3QsIFB5X1VDUzQgKiwgUHlfVUNTNCAqKSkKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aCwgbmV3bGVuZ3RoID0gMDsKKyAgICBpbnQga2luZCwgb3V0a2luZDsKKyAgICB2b2lkICpkYXRhLCAqb3V0ZGF0YTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAwLCAqdG1wLCAqdG1wZW5kOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShzZWxmKSk7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHRtcCA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlfVUNTNCkgKiAzICogbGVuZ3RoKTsKKyAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIG5ld2xlbmd0aCA9IHBlcmZvcm0oa2luZCwgZGF0YSwgbGVuZ3RoLCB0bXAsICZtYXhjaGFyKTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KG5ld2xlbmd0aCwgbWF4Y2hhcik7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICBnb3RvIGxlYXZlOworICAgIHRtcGVuZCA9IHRtcCArIG5ld2xlbmd0aDsKKyAgICBvdXRkYXRhID0gUHlVbmljb2RlX0RBVEEocmVzKTsKKyAgICBvdXRraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICBzd2l0Y2ggKG91dGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMSwgdG1wLCB0bXBlbmQsIG91dGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVUNTNCwgUHlfVUNTMiwgdG1wLCB0bXBlbmQsIG91dGRhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBtZW1jcHkob3V0ZGF0YSwgdG1wLCBzaXplb2YoUHlfVUNTNCkgKiBuZXdsZW5ndGgpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgbGVhdmU6CisgICAgUHlNZW1fRlJFRSh0bXApOworICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Kb2luKFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICpzZXEpCiB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSBibGFuayA9ICcgJzsKLSAgICBjb25zdCBQeV9VTklDT0RFICpzZXAgPSAmYmxhbms7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW4gPSAxOwotICAgIFB5VW5pY29kZU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLwotICAgIFB5X1VOSUNPREUgKnJlc19wOyAgICAgICAvKiBwb2ludGVyIHRvIGZyZWUgYnl0ZSBpbiByZXMncyBzdHJpbmcgYXJlYSAqLworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOyAvKiB0aGUgcmVzdWx0ICovCiAgICAgUHlPYmplY3QgKmZzZXE7ICAgICAgICAgIC8qIFB5U2VxdWVuY2VfRmFzdChzZXEpICovCiAgICAgUHlfc3NpemVfdCBzZXFsZW47ICAgICAgIC8qIGxlbihmc2VxKSAtLSBudW1iZXIgb2YgaXRlbXMgaW4gc2VxdWVuY2UgKi8KICAgICBQeU9iamVjdCAqKml0ZW1zOwogICAgIFB5T2JqZWN0ICppdGVtOwotICAgIFB5X3NzaXplX3Qgc3osIGk7CisgICAgUHlfc3NpemVfdCBzeiwgaSwgcmVzX29mZnNldDsKKyAgICBQeV9VQ1M0IG1heGNoYXI7CisgICAgUHlfVUNTNCBpdGVtX21heGNoYXI7CisgICAgaW50IHVzZV9tZW1jcHk7CisgICAgdW5zaWduZWQgY2hhciAqcmVzX2RhdGEgPSBOVUxMLCAqc2VwX2RhdGEgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsYXN0X29iajsKKyAgICB1bnNpZ25lZCBpbnQga2luZCA9IDA7CiAKICAgICBmc2VxID0gUHlTZXF1ZW5jZV9GYXN0KHNlcSwgIiIpOwogICAgIGlmIChmc2VxID09IE5VTEwpIHsKQEAgLTY3OTAsMjQgKzk0OTMsMzQgQEAKICAgICBzZXFsZW4gPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoZnNlcSk7CiAgICAgLyogSWYgZW1wdHkgc2VxdWVuY2UsIHJldHVybiB1IiIuICovCiAgICAgaWYgKHNlcWxlbiA9PSAwKSB7Ci0gICAgICAgIHJlcyA9IF9QeVVuaWNvZGVfTmV3KDApOyAgLyogZW1wdHkgc2VxdWVuY2U7IHJldHVybiB1IiIgKi8KLSAgICAgICAgZ290byBEb25lOworICAgICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmVzID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgcmV0dXJuIHJlczsKICAgICB9Ci0gICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CisKICAgICAvKiBJZiBzaW5nbGV0b24gc2VxdWVuY2Ugd2l0aCBhbiBleGFjdCBVbmljb2RlLCByZXR1cm4gdGhhdC4gKi8KKyAgICBsYXN0X29iaiA9IE5VTEw7CisgICAgaXRlbXMgPSBQeVNlcXVlbmNlX0Zhc3RfSVRFTVMoZnNlcSk7CiAgICAgaWYgKHNlcWxlbiA9PSAxKSB7Ci0gICAgICAgIGl0ZW0gPSBpdGVtc1swXTsKLSAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW0pKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoaXRlbSk7Ci0gICAgICAgICAgICByZXMgPSAoUHlVbmljb2RlT2JqZWN0ICopaXRlbTsKLSAgICAgICAgICAgIGdvdG8gRG9uZTsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGl0ZW1zWzBdKSkgeworICAgICAgICAgICAgcmVzID0gaXRlbXNbMF07CisgICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KKyAgICAgICAgc2VwbGVuID0gMDsKKyAgICAgICAgbWF4Y2hhciA9IDA7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICAvKiBTZXQgdXAgc2VwIGFuZCBzZXBsZW4gKi8KICAgICAgICAgaWYgKHNlcGFyYXRvciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzZXAgPSAmYmxhbms7CisgICAgICAgICAgICAvKiBmYWxsIGJhY2sgdG8gYSBibGFuayBzcGFjZSBzZXBhcmF0b3IgKi8KKyAgICAgICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCgnICcpOworICAgICAgICAgICAgaWYgKCFzZXApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgc2VwbGVuID0gMTsKKyAgICAgICAgICAgIG1heGNoYXIgPSAzMjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNlcGFyYXRvcikpIHsKQEAgLTY4MTcsOSArOTUzMCwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcGFyYXRvciktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlcGFyYXRvcik7Ci0gICAgICAgICAgICBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VwYXJhdG9yKTsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VwYXJhdG9yKSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBzZXAgPSBzZXBhcmF0b3I7CisgICAgICAgICAgICBzZXBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBhcmF0b3IpOworICAgICAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZXBhcmF0b3IpOworICAgICAgICAgICAgLyogaW5jIHJlZmNvdW50IHRvIGtlZXAgdGhpcyBjb2RlIHBhdGggc3ltbWV0cmljIHdpdGggdGhlCisgICAgICAgICAgICAgICBhYm92ZSBjYXNlIG9mIGEgYmxhbmsgc2VwYXJhdG9yICovCisgICAgICAgICAgICBQeV9JTkNSRUYoc2VwKTsKICAgICAgICAgfQorICAgICAgICBsYXN0X29iaiA9IHNlcDsKICAgICB9CiAKICAgICAvKiBUaGVyZSBhcmUgYXQgbGVhc3QgdHdvIHRoaW5ncyB0byBqb2luLCBvciBlbHNlIHdlIGhhdmUgYSBzdWJjbGFzcwpAQCAtNjgyOCw2ICs5NTQ4LDExIEBACiAgICAgICogbmVlZCAoc3opLCBhbmQgc2VlIHdoZXRoZXIgYWxsIGFyZ3VtZW50IGFyZSBzdHJpbmdzLgogICAgICAqLwogICAgIHN6ID0gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgIHVzZV9tZW1jcHkgPSAwOworI2Vsc2UKKyAgICB1c2VfbWVtY3B5ID0gMTsKKyNlbmRpZgogICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47IGkrKykgewogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG9sZF9zeiA9IHN6OwogICAgICAgICBpdGVtID0gaXRlbXNbaV07CkBAIC02ODM4LDcgKzk1NjMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpLCBQeV9UWVBFKGl0ZW0pLT50cF9uYW1lKTsKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgfQotICAgICAgICBzeiArPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXRlbSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoaXRlbSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHN6ICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBpdGVtX21heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoaXRlbSk7CisgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBpdGVtX21heGNoYXIpOwogICAgICAgICBpZiAoaSAhPSAwKQogICAgICAgICAgICAgc3ogKz0gc2VwbGVuOwogICAgICAgICBpZiAoc3ogPCBvbGRfc3ogfHwgc3ogPiBQWV9TU0laRV9UX01BWCkgewpAQCAtNjg0NiwyNjYgKzk1NzUsNzI1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImpvaW4oKSByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOwogICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICB9CisgICAgICAgIGlmICh1c2VfbWVtY3B5ICYmIGxhc3Rfb2JqICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfS0lORChsYXN0X29iaikgIT0gUHlVbmljb2RlX0tJTkQoaXRlbSkpCisgICAgICAgICAgICAgICAgdXNlX21lbWNweSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgbGFzdF9vYmogPSBpdGVtOwogICAgIH0KIAotICAgIHJlcyA9IF9QeVVuaWNvZGVfTmV3KHN6KTsKKyAgICByZXMgPSBQeVVuaWNvZGVfTmV3KHN6LCBtYXhjaGFyKTsKICAgICBpZiAocmVzID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIENhdGVuYXRlIGV2ZXJ5dGhpbmcuICovCi0gICAgcmVzX3AgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzZXFsZW47ICsraSkgeworI2lmZGVmIFB5X0RFQlVHCisgICAgdXNlX21lbWNweSA9IDA7CisjZWxzZQorICAgIGlmICh1c2VfbWVtY3B5KSB7CisgICAgICAgIHJlc19kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgICAgIGlmIChzZXBsZW4gIT0gMCkKKyAgICAgICAgICAgIHNlcF9kYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VwKTsKKyAgICB9CisjZW5kaWYKKyAgICBmb3IgKGkgPSAwLCByZXNfb2Zmc2V0ID0gMDsgaSA8IHNlcWxlbjsgKytpKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaXRlbWxlbjsKICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldOwotICAgICAgICBpdGVtbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKGl0ZW0pOwogICAgICAgICAvKiBDb3B5IGl0ZW0sIGFuZCBtYXliZSB0aGUgc2VwYXJhdG9yLiAqLwotICAgICAgICBpZiAoaSkgewotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHJlc19wLCBzZXAsIHNlcGxlbik7Ci0gICAgICAgICAgICByZXNfcCArPSBzZXBsZW47CisgICAgICAgIGlmIChpICYmIHNlcGxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBzZXBsZW4pOworICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBzZXBsZW47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIHJlc19vZmZzZXQsIHNlcCwgMCwgc2VwbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfb2Zmc2V0ICs9IHNlcGxlbjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBQeV9VTklDT0RFX0NPUFkocmVzX3AsIFB5VW5pY29kZV9BU19VTklDT0RFKGl0ZW0pLCBpdGVtbGVuKTsKLSAgICAgICAgcmVzX3AgKz0gaXRlbWxlbjsKKyAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0ZW0pOworICAgICAgICBpZiAoaXRlbWxlbiAhPSAwKSB7CisgICAgICAgICAgICBpZiAodXNlX21lbWNweSkgeworICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0RBVEEoaXRlbSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGtpbmQgKiBpdGVtbGVuKTsKKyAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogaXRlbWxlbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgcmVzX29mZnNldCwgaXRlbSwgMCwgaXRlbWxlbik7CisgICAgICAgICAgICAgICAgcmVzX29mZnNldCArPSBpdGVtbGVuOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQorICAgIGlmICh1c2VfbWVtY3B5KQorICAgICAgICBhc3NlcnQocmVzX2RhdGEgPT0gUHlVbmljb2RlXzFCWVRFX0RBVEEocmVzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBraW5kICogUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CisgICAgZWxzZQorICAgICAgICBhc3NlcnQocmVzX29mZnNldCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXMpKTsKIAotICBEb25lOgogICAgIFB5X0RFQ1JFRihmc2VxKTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzOworICAgIFB5X1hERUNSRUYoc2VwKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKICAgICBQeV9ERUNSRUYoZnNlcSk7CisgICAgUHlfWERFQ1JFRihzZXApOwogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljCi1QeVVuaWNvZGVPYmplY3QgKnBhZChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlZnQsCi0gICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERSBmaWxsKQorI2RlZmluZSBGSUxMKGtpbmQsIGRhdGEsIHZhbHVlLCBzdGFydCwgbGVuZ3RoKSBcCisgICAgZG8geyBcCisgICAgICAgIFB5X3NzaXplX3QgaV8gPSAwOyBcCisgICAgICAgIGFzc2VydChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKTsgXAorICAgICAgICBzd2l0Y2ggKChraW5kKSkgeyBcCisgICAgICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsgXAorICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqIHRvXyA9ICh1bnNpZ25lZCBjaGFyICopKChkYXRhKSkgKyAoc3RhcnQpOyBcCisgICAgICAgICAgICBtZW1zZXQodG9fLCAodW5zaWduZWQgY2hhcil2YWx1ZSwgKGxlbmd0aCkpOyBcCisgICAgICAgICAgICBicmVhazsgXAorICAgICAgICB9IFwKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeyBcCisgICAgICAgICAgICBQeV9VQ1MyICogdG9fID0gKFB5X1VDUzIgKikoKGRhdGEpKSArIChzdGFydCk7IFwKKyAgICAgICAgICAgIGZvciAoOyBpXyA8IChsZW5ndGgpOyArK2lfLCArK3RvXykgKnRvXyA9ICh2YWx1ZSk7IFwKKyAgICAgICAgICAgIGJyZWFrOyBcCisgICAgICAgIH0gXAorICAgICAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOiB7IFwKKyAgICAgICAgICAgIFB5X1VDUzQgKiB0b18gPSAoUHlfVUNTNCAqKSgoZGF0YSkpICsgKHN0YXJ0KTsgXAorICAgICAgICAgICAgZm9yICg7IGlfIDwgKGxlbmd0aCk7ICsraV8sICsrdG9fKSAqdG9fID0gKHZhbHVlKTsgXAorICAgICAgICAgICAgYnJlYWs7IFwKKyAgICAgICAgZGVmYXVsdDogYXNzZXJ0KDApOyBcCisgICAgICAgIH0gXAorICAgICAgICB9IFwKKyAgICB9IHdoaWxlICgwKQorCit2b2lkCitfUHlVbmljb2RlX0Zhc3RGaWxsKFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBmaWxsX2NoYXIpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OworICAgIGNvbnN0IGVudW0gUHlVbmljb2RlX0tpbmQga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGNvbnN0IHZvaWQgKmRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQodW5pY29kZV9tb2RpZmlhYmxlKHVuaWNvZGUpKTsKKyAgICBhc3NlcnQoZmlsbF9jaGFyIDw9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1bmljb2RlKSk7CisgICAgYXNzZXJ0KHN0YXJ0ID49IDApOworICAgIGFzc2VydChzdGFydCArIGxlbmd0aCA8PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKSk7CisgICAgRklMTChraW5kLCBkYXRhLCBmaWxsX2NoYXIsIHN0YXJ0LCBsZW5ndGgpOworfQorCitQeV9zc2l6ZV90CitQeVVuaWNvZGVfRmlsbChQeU9iamVjdCAqdW5pY29kZSwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhcikKK3sKKyAgICBQeV9zc2l6ZV90IG1heGxlbjsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodW5pY29kZV9jaGVja19tb2RpZmlhYmxlKHVuaWNvZGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAic3RyaW5nIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChmaWxsX2NoYXIgPiBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGwgY2hhcmFjdGVyIGlzIGJpZ2dlciB0aGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHN0cmluZyBtYXhpbXVtIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWF4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSkgLSBzdGFydDsKKyAgICBsZW5ndGggPSBQeV9NSU4obWF4bGVuLCBsZW5ndGgpOworICAgIGlmIChsZW5ndGggPD0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHVuaWNvZGUsIHN0YXJ0LCBsZW5ndGgsIGZpbGxfY2hhcik7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3BhZChQeU9iamVjdCAqc2VsZiwKKyAgICBQeV9zc2l6ZV90IGxlZnQsCisgICAgUHlfc3NpemVfdCByaWdodCwKKyAgICBQeV9VQ1M0IGZpbGwpCit7CisgICAgUHlPYmplY3QgKnU7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CiAKICAgICBpZiAobGVmdCA8IDApCiAgICAgICAgIGxlZnQgPSAwOwogICAgIGlmIChyaWdodCA8IDApCiAgICAgICAgIHJpZ2h0ID0gMDsKIAotICAgIGlmIChsZWZ0ID09IDAgJiYgcmlnaHQgPT0gMCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiBzZWxmOwotICAgIH0KKyAgICBpZiAobGVmdCA9PSAwICYmIHJpZ2h0ID09IDApCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiAKLSAgICBpZiAobGVmdCA+IFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+bGVuZ3RoIHx8Ci0gICAgICAgIHJpZ2h0ID4gUFlfU1NJWkVfVF9NQVggLSAobGVmdCArIHNlbGYtPmxlbmd0aCkpIHsKKyAgICBpZiAobGVmdCA+IFBZX1NTSVpFX1RfTUFYIC0gX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgfHwKKyAgICAgICAgcmlnaHQgPiBQWV9TU0laRV9UX01BWCAtIChsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicGFkZGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdSA9IF9QeVVuaWNvZGVfTmV3KGxlZnQgKyBzZWxmLT5sZW5ndGggKyByaWdodCk7Ci0gICAgaWYgKHUpIHsKLSAgICAgICAgaWYgKGxlZnQpCi0gICAgICAgICAgICBQeV9VTklDT0RFX0ZJTEwodS0+c3RyLCBmaWxsLCBsZWZ0KTsKLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0ciArIGxlZnQsIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoKTsKLSAgICAgICAgaWYgKHJpZ2h0KQotICAgICAgICAgICAgUHlfVU5JQ09ERV9GSUxMKHUtPnN0ciArIGxlZnQgKyBzZWxmLT5sZW5ndGgsIGZpbGwsIHJpZ2h0KTsKLSAgICB9CisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZWxmKTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgZmlsbCk7CisgICAgdSA9IFB5VW5pY29kZV9OZXcobGVmdCArIF9QeVVuaWNvZGVfTEVOR1RIKHNlbGYpICsgcmlnaHQsIG1heGNoYXIpOworICAgIGlmICghdSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgIGlmIChsZWZ0KQorICAgICAgICBGSUxMKGtpbmQsIGRhdGEsIGZpbGwsIDAsIGxlZnQpOworICAgIGlmIChyaWdodCkKKyAgICAgICAgRklMTChraW5kLCBkYXRhLCBmaWxsLCBsZWZ0ICsgX1B5VW5pY29kZV9MRU5HVEgoc2VsZiksIHJpZ2h0KTsKKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCBsZWZ0LCBzZWxmLCAwLCBfUHlVbmljb2RlX0xFTkdUSChzZWxmKSk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh1LCAxKSk7CiAgICAgcmV0dXJuIHU7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfU3BsaXRsaW5lcyhQeU9iamVjdCAqc3RyaW5nLCBpbnQga2VlcGVuZHMpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfU3BsaXRsaW5lcyhQeU9iamVjdCAqc3RyaW5nLCBpbnQga2VlcGVuZHMpCiB7CiAgICAgUHlPYmplY3QgKmxpc3Q7CiAKICAgICBzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJpbmcpOwogICAgIGlmIChzdHJpbmcgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdHJpbmcpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKLSAgICBsaXN0ID0gc3RyaW5nbGliX3NwbGl0bGluZXMoCi0gICAgICAgIChQeU9iamVjdCopIHN0cmluZywgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyaW5nKSwKLSAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHN0cmluZyksIGtlZXBlbmRzKTsKLQorICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyaW5nKSkKKyAgICAgICAgICAgIGxpc3QgPSBhc2NpaWxpYl9zcGxpdGxpbmVzKAorICAgICAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpLCBrZWVwZW5kcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxpc3QgPSB1Y3MxbGliX3NwbGl0bGluZXMoCisgICAgICAgICAgICAgICAgc3RyaW5nLCBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgbGlzdCA9IHVjczJsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzJCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgbGlzdCA9IHVjczRsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgICAgIHN0cmluZywgUHlVbmljb2RlXzRCWVRFX0RBVEEoc3RyaW5nKSwKKyAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyksIGtlZXBlbmRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBsaXN0ID0gMDsKKyAgICB9CiAgICAgUHlfREVDUkVGKHN0cmluZyk7CiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnNwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5T2JqZWN0ICoKK3NwbGl0KFB5T2JqZWN0ICpzZWxmLAorICAgICAgUHlPYmplY3QgKnN1YnN0cmluZywKKyAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgUHlPYmplY3QqIG91dDsKKwogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKAotICAgICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBtYXhjb3VudAotICAgICAgICAgICAgKTsKKyAgICAgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgbWF4Y291bnQKKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9zcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3NwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV80QllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogCi0gICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdCgKLSAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLAotICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgIG1heGNvdW50Ci0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfc3BsaXQoCisgICAgICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9zcGxpdCgKKyAgICAgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3MybGliX3NwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9zcGxpdCgKKyAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIG91dCA9IE5VTEw7CisgICAgfQorICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBvdXQ7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnJzcGxpdChQeVVuaWNvZGVPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQorc3RhdGljIFB5T2JqZWN0ICoKK3JzcGxpdChQeU9iamVjdCAqc2VsZiwKKyAgICAgICBQeU9iamVjdCAqc3Vic3RyaW5nLAorICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxLCAqYnVmMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CisgICAgUHlPYmplY3QqIG91dDsKKwogICAgIGlmIChtYXhjb3VudCA8IDApCiAgICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZSgKLSAgICAgICAgICAgIChQeU9iamVjdCopIHNlbGYsICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgbWF4Y291bnQKLSAgICAgICAgICAgICk7CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc2VsZikpIHsKKyAgICAgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB1Y3MxbGliX3JzcGxpdF93aGl0ZXNwYWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICAgICApOworICAgICAgICBjYXNlIFB5VW5pY29kZV8yQllURV9LSU5EOgorICAgICAgICAgICAgcmV0dXJuIHVjczJsaWJfcnNwbGl0X3doaXRlc3BhY2UoCisgICAgICAgICAgICAgICAgc2VsZiwgIFB5VW5pY29kZV8yQllURV9EQVRBKHNlbGYpLAorICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpLCBtYXhjb3VudAorICAgICAgICAgICAgICAgICk7CisgICAgICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgICAgICByZXR1cm4gdWNzNGxpYl9yc3BsaXRfd2hpdGVzcGFjZSgKKyAgICAgICAgICAgICAgICBzZWxmLCAgUHlVbmljb2RlXzRCWVRFX0RBVEEoc2VsZiksCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksIG1heGNvdW50CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAKLSAgICByZXR1cm4gc3RyaW5nbGliX3JzcGxpdCgKLSAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgIHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLAotICAgICAgICBzdWJzdHJpbmctPnN0ciwgc3Vic3RyaW5nLT5sZW5ndGgsCi0gICAgICAgIG1heGNvdW50Ci0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHJpbmcpOworICAgIGtpbmQgPSBraW5kMSA+IGtpbmQyID8ga2luZDEgOiBraW5kMjsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc3Vic3RyaW5nLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpIHsKKyAgICAgICAgaWYgKGtpbmQxICE9IGtpbmQpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1YnN0cmluZyk7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpICYmIFB5VW5pY29kZV9JU19BU0NJSShzdWJzdHJpbmcpKQorICAgICAgICAgICAgb3V0ID0gYXNjaWlsaWJfcnNwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG91dCA9IHVjczFsaWJfcnNwbGl0KAorICAgICAgICAgICAgICAgIHNlbGYsICBidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBtYXhjb3VudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfcnNwbGl0KAorICAgICAgICAgICAgc2VsZiwgIGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG1heGNvdW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9yc3BsaXQoCisgICAgICAgICAgICBzZWxmLCAgYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgbWF4Y291bnQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBvdXQgPSBOVUxMOworICAgIH0KKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKKyAgICByZXR1cm4gb3V0OwogfQogCi1zdGF0aWMKLVB5T2JqZWN0ICpyZXBsYWNlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMSwKLSAgICAgICAgICAgICAgICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitzdGF0aWMgUHlfc3NpemVfdAorYW55bGliX2ZpbmQoaW50IGtpbmQsIFB5T2JqZWN0ICpzdHIxLCB2b2lkICpidWYxLCBQeV9zc2l6ZV90IGxlbjEsCisgICAgICAgICAgICBQeU9iamVjdCAqc3RyMiwgdm9pZCAqYnVmMiwgUHlfc3NpemVfdCBsZW4yLCBQeV9zc2l6ZV90IG9mZnNldCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnU7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHIxKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc3RyMikpCisgICAgICAgICAgICByZXR1cm4gYXNjaWlsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIG9mZnNldCk7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKKyAgICAgICAgcmV0dXJuIHVjczJsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCBvZmZzZXQpOworICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgb2Zmc2V0KTsKKyAgICB9CisgICAgYXNzZXJ0KDApOworICAgIHJldHVybiAtMTsKK30KKworc3RhdGljIFB5X3NzaXplX3QKK2FueWxpYl9jb3VudChpbnQga2luZCwgUHlPYmplY3QgKnNzdHIsIHZvaWQqIHNidWYsIFB5X3NzaXplX3Qgc2xlbiwKKyAgICAgICAgICAgICBQeU9iamVjdCAqc3RyMSwgdm9pZCAqYnVmMSwgUHlfc3NpemVfdCBsZW4xLCBQeV9zc2l6ZV90IG1heGNvdW50KQoreworICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CisgICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3N0cikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN0cjEpKQorICAgICAgICAgICAgcmV0dXJuIGFzY2lpbGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfY291bnQoc2J1Ziwgc2xlbiwgYnVmMSwgbGVuMSwgbWF4Y291bnQpOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJldHVybiB1Y3MybGliX2NvdW50KHNidWYsIHNsZW4sIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICByZXR1cm4gdWNzNGxpYl9jb3VudChzYnVmLCBzbGVuLCBidWYxLCBsZW4xLCBtYXhjb3VudCk7CisgICAgfQorICAgIGFzc2VydCgwKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdHIxLAorICAgICAgICBQeU9iamVjdCAqc3RyMiwgUHlfc3NpemVfdCBtYXhjb3VudCkKK3sKKyAgICBQeU9iamVjdCAqdTsKKyAgICBjaGFyICpzYnVmID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgY2hhciAqYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cjEpOworICAgIGNoYXIgKmJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdHIyKTsKKyAgICBpbnQgc3JlbGVhc2UgPSAwLCByZWxlYXNlMSA9IDAsIHJlbGVhc2UyID0gMDsKKyAgICBpbnQgc2tpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBpbnQga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIxKTsKKyAgICBpbnQga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdHIyKTsKKyAgICBQeV9zc2l6ZV90IHNsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBQeV9zc2l6ZV90IGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKTsKKyAgICBQeV9zc2l6ZV90IGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIyKTsKKyAgICBpbnQgbWF5c2hyaW5rOworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcl9zdHIyOwogCiAgICAgaWYgKG1heGNvdW50IDwgMCkKICAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IHNlbGYtPmxlbmd0aCA9PSAwKQorICAgIGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgc2xlbiA9PSAwKQogICAgICAgICBnb3RvIG5vdGhpbmc7CiAKLSAgICBpZiAoc3RyMS0+bGVuZ3RoID09IHN0cjItPmxlbmd0aCkgewotICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgaWYgKHN0cjEgPT0gc3RyMikKKyAgICAgICAgZ290byBub3RoaW5nOworICAgIGlmIChza2luZCA8IGtpbmQxKQorICAgICAgICAvKiBzdWJzdHJpbmcgdG9vIHdpZGUgdG8gYmUgcHJlc2VudCAqLworICAgICAgICBnb3RvIG5vdGhpbmc7CisKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHNlbGYpOworICAgIG1heGNoYXJfc3RyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzdHIyKTsKKyAgICAvKiBSZXBsYWNpbmcgc3RyMSB3aXRoIHN0cjIgbWF5IGNhdXNlIGEgbWF4Y2hhciByZWR1Y3Rpb24gaW4gdGhlCisgICAgICAgcmVzdWx0IHN0cmluZy4gKi8KKyAgICBtYXlzaHJpbmsgPSAobWF4Y2hhcl9zdHIyIDwgbWF4Y2hhcik7CisgICAgbWF4Y2hhciA9IE1BWF9NQVhDSEFSKG1heGNoYXIsIG1heGNoYXJfc3RyMik7CisKKyAgICBpZiAobGVuMSA9PSBsZW4yKSB7CiAgICAgICAgIC8qIHNhbWUgbGVuZ3RoICovCi0gICAgICAgIGlmIChzdHIxLT5sZW5ndGggPT0gMCkKKyAgICAgICAgaWYgKGxlbjEgPT0gMCkKICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgaWYgKHN0cjEtPmxlbmd0aCA9PSAxKSB7CisgICAgICAgIGlmIChsZW4xID09IDEpIHsKICAgICAgICAgICAgIC8qIHJlcGxhY2UgY2hhcmFjdGVycyAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERSB1MSwgdTI7Ci0gICAgICAgICAgICBpZiAoIWZpbmRjaGFyKHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCBzdHIxLT5zdHJbMF0pKQorICAgICAgICAgICAgUHlfVUNTNCB1MSwgdTI7CisgICAgICAgICAgICBpbnQgcmtpbmQ7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGluZGV4LCBwb3M7CisgICAgICAgICAgICBjaGFyICpzcmM7CisKKyAgICAgICAgICAgIHUxID0gUHlVbmljb2RlX1JFQURfQ0hBUihzdHIxLCAwKTsKKyAgICAgICAgICAgIHBvcyA9IGZpbmRjaGFyKHNidWYsIFB5VW5pY29kZV9LSU5EKHNlbGYpLCBzbGVuLCB1MSwgMSk7CisgICAgICAgICAgICBpZiAocG9zIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgICAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgdTIgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHN0cjIsIDApOworICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9OZXcoc2xlbiwgbWF4Y2hhcik7CiAgICAgICAgICAgICBpZiAoIXUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyLCBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7Ci0gICAgICAgICAgICB1MSA9IHN0cjEtPnN0clswXTsKLSAgICAgICAgICAgIHUyID0gc3RyMi0+c3RyWzBdOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHUtPmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgIGlmICh1LT5zdHJbaV0gPT0gdTEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKC0tbWF4Y291bnQgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIHUtPnN0cltpXSA9IHUyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGkgPSBzdHJpbmdsaWJfZmluZCgKLSAgICAgICAgICAgICAgICBzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsIDAKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh1LCAwLCBzZWxmLCAwLCBzbGVuKTsKKyAgICAgICAgICAgIHJraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShya2luZCwgUHlVbmljb2RlX0RBVEEodSksIHBvcywgdTIpOworICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICAgICAgc3JjID0gc2J1ZjsKKyAgICAgICAgICAgIHdoaWxlICgtLW1heGNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgICAgIHNyYyArPSBwb3MgKiBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICAgICAgICAgICAgICBzbGVuIC09IHBvczsKKyAgICAgICAgICAgICAgICBpbmRleCArPSBwb3M7CisgICAgICAgICAgICAgICAgcG9zID0gZmluZGNoYXIoc3JjLCBQeVVuaWNvZGVfS0lORChzZWxmKSwgc2xlbiwgdTEsIDEpOworICAgICAgICAgICAgICAgIGlmIChwb3MgPCAwKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIFB5VW5pY29kZV9EQVRBKHUpLCBpbmRleCArIHBvcywgdTIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHJraW5kID0gc2tpbmQ7CisgICAgICAgICAgICBjaGFyICpyZXM7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChraW5kMSA8IHJraW5kKSB7CisgICAgICAgICAgICAgICAgLyogd2lkZW4gc3Vic3RyaW5nICovCisgICAgICAgICAgICAgICAgYnVmMSA9IF9QeVVuaWNvZGVfQXNLaW5kKHN0cjEsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIWJ1ZjEpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaSA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLCBzYnVmLCBzbGVuLCBzdHIxLCBidWYxLCBsZW4xLCAwKTsKICAgICAgICAgICAgIGlmIChpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIG5vdGhpbmc7Ci0gICAgICAgICAgICB1ID0gKFB5VW5pY29kZU9iamVjdCopIFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgaWYgKHJraW5kID4ga2luZDIpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiByZXBsYWNlbWVudCAqLworICAgICAgICAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdHIyLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFidWYyKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlbGVhc2UyID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHJraW5kIDwga2luZDIpIHsKKyAgICAgICAgICAgICAgICAvKiB3aWRlbiBzZWxmIGFuZCBidWYxICovCisgICAgICAgICAgICAgICAgcmtpbmQgPSBraW5kMjsKKyAgICAgICAgICAgICAgICBpZiAocmVsZWFzZTEpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgICAgICAgICAgc2J1ZiA9IF9QeVVuaWNvZGVfQXNLaW5kKHNlbGYsIHJraW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoIXNidWYpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgc3JlbGVhc2UgPSAxOworICAgICAgICAgICAgICAgIGJ1ZjEgPSBfUHlVbmljb2RlX0FzS2luZChzdHIxLCBya2luZCk7CisgICAgICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIHJlbGVhc2UxID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHUgPSBQeVVuaWNvZGVfTmV3KHNsZW4sIG1heGNoYXIpOwogICAgICAgICAgICAgaWYgKCF1KQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0ciwgc2VsZi0+c3RyLCBzZWxmLT5sZW5ndGgpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodSkgPT0gcmtpbmQpOworICAgICAgICAgICAgcmVzID0gUHlVbmljb2RlX0RBVEEodSk7CiAKKyAgICAgICAgICAgIG1lbWNweShyZXMsIHNidWYsIHJraW5kICogc2xlbik7CiAgICAgICAgICAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHUtPnN0citpLCBzdHIyLT5zdHIsIHN0cjItPmxlbmd0aCk7Ci0gICAgICAgICAgICBpICs9IHN0cjEtPmxlbmd0aDsKKyAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgYnVmMiwKKyAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgaSArPSBsZW4xOwogCiAgICAgICAgICAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaSA9IHN0cmluZ2xpYl9maW5kKHNlbGYtPnN0citpLCBzZWxmLT5sZW5ndGgtaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpOworICAgICAgICAgICAgICAgIGkgPSBhbnlsaWJfZmluZChya2luZCwgc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2J1Zitya2luZCppLCBzbGVuLWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEsIGJ1ZjEsIGxlbjEsIGkpOwogICAgICAgICAgICAgICAgIGlmIChpID09IC0xKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkodS0+c3RyK2ksIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBpICs9IHN0cjEtPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgICAgIGkgKz0gbGVuMTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeV9zc2l6ZV90IG4sIGksIGosIGlyZXM7CisgICAgICAgIFB5X3NzaXplX3QgbmV3X3NpemU7CisgICAgICAgIGludCBya2luZCA9IHNraW5kOworICAgICAgICBjaGFyICpyZXM7CiAKLSAgICAgICAgUHlfc3NpemVfdCBuLCBpLCBqOwotICAgICAgICBQeV9zc2l6ZV90IHByb2R1Y3QsIG5ld19zaXplLCBkZWx0YTsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKLQotICAgICAgICAvKiByZXBsYWNlIHN0cmluZ3MgKi8KLSAgICAgICAgbiA9IHN0cmluZ2xpYl9jb3VudChzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCwgc3RyMS0+c3RyLCBzdHIxLT5sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworICAgICAgICBpZiAoa2luZDEgPCBya2luZCkgeworICAgICAgICAgICAgLyogd2lkZW4gc3Vic3RyaW5nICovCisgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICB9CisgICAgICAgIG4gPSBhbnlsaWJfY291bnQocmtpbmQsIHNlbGYsIHNidWYsIHNsZW4sIHN0cjEsIGJ1ZjEsIGxlbjEsIG1heGNvdW50KTsKICAgICAgICAgaWYgKG4gPT0gMCkKICAgICAgICAgICAgIGdvdG8gbm90aGluZzsKLSAgICAgICAgLyogbmV3X3NpemUgPSBzZWxmLT5sZW5ndGggKyBuICogKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCkpOyAqLwotICAgICAgICBkZWx0YSA9IChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpOwotICAgICAgICBpZiAoZGVsdGEgPT0gMCkgewotICAgICAgICAgICAgbmV3X3NpemUgPSBzZWxmLT5sZW5ndGg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBwcm9kdWN0ID0gbiAqIChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpOwotICAgICAgICAgICAgaWYgKChwcm9kdWN0IC8gKHN0cjItPmxlbmd0aCAtIHN0cjEtPmxlbmd0aCkpICE9IG4pIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aCArIHByb2R1Y3Q7Ci0gICAgICAgICAgICBpZiAobmV3X3NpemUgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoa2luZDIgPCBya2luZCkgeworICAgICAgICAgICAgLyogd2lkZW4gcmVwbGFjZW1lbnQgKi8KKyAgICAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdHIyLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIWJ1ZjIpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICByZWxlYXNlMiA9IDE7CiAgICAgICAgIH0KLSAgICAgICAgdSA9IF9QeVVuaWNvZGVfTmV3KG5ld19zaXplKTsKKyAgICAgICAgZWxzZSBpZiAoa2luZDIgPiBya2luZCkgeworICAgICAgICAgICAgLyogd2lkZW4gc2VsZiBhbmQgYnVmMSAqLworICAgICAgICAgICAgcmtpbmQgPSBraW5kMjsKKyAgICAgICAgICAgIHNidWYgPSBfUHlVbmljb2RlX0FzS2luZChzZWxmLCBya2luZCk7CisgICAgICAgICAgICBpZiAoIXNidWYpIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBzcmVsZWFzZSA9IDE7CisgICAgICAgICAgICBpZiAocmVsZWFzZTEpIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyMSwgcmtpbmQpOworICAgICAgICAgICAgaWYgKCFidWYxKSBnb3RvIGVycm9yOworICAgICAgICAgICAgcmVsZWFzZTEgPSAxOworICAgICAgICB9CisgICAgICAgIC8qIG5ld19zaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZikgKyBuICogKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cjIpIC0KKyAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMSkpKTsgKi8KKyAgICAgICAgaWYgKGxlbjIgPiBsZW4xICYmIGxlbjIgLSBsZW4xID4gKFBZX1NTSVpFX1RfTUFYIC0gc2xlbikgLyBuKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgbmV3X3NpemUgPSBzbGVuICsgbiAqIChsZW4yIC0gbGVuMSk7CisgICAgICAgIGlmIChuZXdfc2l6ZSA9PSAwKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgICAgICB1ID0gdW5pY29kZV9lbXB0eTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3X3NpemUgPiAoUFlfU1NJWkVfVF9NQVggPj4gKHJraW5kLTEpKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHUgPSBQeVVuaWNvZGVfTmV3KG5ld19zaXplLCBtYXhjaGFyKTsKICAgICAgICAgaWYgKCF1KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGkgPSAwOwotICAgICAgICBwID0gdS0+c3RyOwotICAgICAgICBpZiAoc3RyMS0+bGVuZ3RoID4gMCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHUpID09IHJraW5kKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0RBVEEodSk7CisgICAgICAgIGlyZXMgPSBpID0gMDsKKyAgICAgICAgaWYgKGxlbjEgPiAwKSB7CiAgICAgICAgICAgICB3aGlsZSAobi0tID4gMCkgewogICAgICAgICAgICAgICAgIC8qIGxvb2sgZm9yIG5leHQgbWF0Y2ggKi8KLSAgICAgICAgICAgICAgICBqID0gc3RyaW5nbGliX2ZpbmQoc2VsZi0+c3RyK2ksIHNlbGYtPmxlbmd0aC1pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIxLT5zdHIsIHN0cjEtPmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSk7CisgICAgICAgICAgICAgICAgaiA9IGFueWxpYl9maW5kKHJraW5kLCBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLCBzbGVuLWksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjEsIGJ1ZjEsIGxlbjEsIGkpOwogICAgICAgICAgICAgICAgIGlmIChqID09IC0xKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChqID4gaSkgewogICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IHVuY2hhbmdlZCBwYXJ0IFtpOmpdICovCi0gICAgICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzZWxmLT5zdHIraSwgai1pKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSBqIC0gaTsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIChqLWkpKTsKKyAgICAgICAgICAgICAgICAgICAgaXJlcyArPSBqIC0gaTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogY29weSBzdWJzdGl0dXRpb24gc3RyaW5nICovCi0gICAgICAgICAgICAgICAgaWYgKHN0cjItPmxlbmd0aCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgcCArPSBzdHIyLT5sZW5ndGg7CisgICAgICAgICAgICAgICAgaWYgKGxlbjIgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmtpbmQgKiBsZW4yKTsKKyAgICAgICAgICAgICAgICAgICAgaXJlcyArPSBsZW4yOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpID0gaiArIHN0cjEtPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBpID0gaiArIGxlbjE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaSA8IHNlbGYtPmxlbmd0aCkKKyAgICAgICAgICAgIGlmIChpIDwgc2xlbikKICAgICAgICAgICAgICAgICAvKiBjb3B5IHRhaWwgW2k6XSAqLwotICAgICAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWkpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1lbWNweShyZXMgKyBya2luZCAqIGlyZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHNidWYgKyBya2luZCAqIGksCisgICAgICAgICAgICAgICAgICAgICAgIHJraW5kICogKHNsZW4taSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLyogaW50ZXJsZWF2ZSAqLwogICAgICAgICAgICAgd2hpbGUgKG4gPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHN0cjItPnN0ciwgc3RyMi0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBwICs9IHN0cjItPmxlbmd0aDsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICBidWYyLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCAqIGxlbjIpOworICAgICAgICAgICAgICAgIGlyZXMgKz0gbGVuMjsKICAgICAgICAgICAgICAgICBpZiAoLS1uIDw9IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICpwKysgPSBzZWxmLT5zdHJbaSsrXTsKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzICsgcmtpbmQgKiBpcmVzLAorICAgICAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgICAgICBya2luZCk7CisgICAgICAgICAgICAgICAgaXJlcysrOworICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShwLCBzZWxmLT5zdHIraSwgc2VsZi0+bGVuZ3RoLWkpOworICAgICAgICAgICAgbWVtY3B5KHJlcyArIHJraW5kICogaXJlcywKKyAgICAgICAgICAgICAgICAgICBzYnVmICsgcmtpbmQgKiBpLAorICAgICAgICAgICAgICAgICAgIHJraW5kICogKHNsZW4taSkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKikgdTsKKworICAgIGlmIChtYXlzaHJpbmspIHsKKyAgICAgICAgdW5pY29kZV9hZGp1c3RfbWF4Y2hhcigmdSk7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICBkb25lOgorICAgIGlmIChzcmVsZWFzZSkKKyAgICAgICAgUHlNZW1fRlJFRShzYnVmKTsKKyAgICBpZiAocmVsZWFzZTEpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMSk7CisgICAgaWYgKHJlbGVhc2UyKQorICAgICAgICBQeU1lbV9GUkVFKGJ1ZjIpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodSwgMSkpOworICAgIHJldHVybiB1OwogCiAgIG5vdGhpbmc6CiAgICAgLyogbm90aGluZyB0byByZXBsYWNlOyByZXR1cm4gb3JpZ2luYWwgc3RyaW5nICh3aGVuIHBvc3NpYmxlKSAqLwotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgc2VsZjsKLSAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzZWxmLT5zdHIsIHNlbGYtPmxlbmd0aCk7CisgICAgaWYgKHNyZWxlYXNlKQorICAgICAgICBQeU1lbV9GUkVFKHNidWYpOworICAgIGlmIChyZWxlYXNlMSkKKyAgICAgICAgUHlNZW1fRlJFRShidWYxKTsKKyAgICBpZiAocmVsZWFzZTIpCisgICAgICAgIFB5TWVtX0ZSRUUoYnVmMik7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICBlcnJvcjoKKyAgICBpZiAoc3JlbGVhc2UgJiYgc2J1ZikKKyAgICAgICAgUHlNZW1fRlJFRShzYnVmKTsKKyAgICBpZiAocmVsZWFzZTEgJiYgYnVmMSkKKyAgICAgICAgUHlNZW1fRlJFRShidWYxKTsKKyAgICBpZiAocmVsZWFzZTIgJiYgYnVmMikKKyAgICAgICAgUHlNZW1fRlJFRShidWYyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogLyogLS0tIFVuaWNvZGUgT2JqZWN0IE1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCkBAIC03MTE3LDkgKzEwMzA1LDExIEBACiBjaGFyYWN0ZXJzLCBhbGwgcmVtYWluaW5nIGNhc2VkIGNoYXJhY3RlcnMgaGF2ZSBsb3dlciBjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3RpdGxlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfdGl0bGUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeHRpdGxlKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fdGl0bGUpOwogfQogCiBQeURvY19TVFJWQVIoY2FwaXRhbGl6ZV9fZG9jX18sCkBAIC03MTI5LDU3ICsxMDMxOSwzOCBAQAogaGF2ZSB1cHBlciBjYXNlIGFuZCB0aGUgcmVzdCBsb3dlciBjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2NhcGl0YWxpemUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9jYXBpdGFsaXplKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhjYXBpdGFsaXplKTsKLX0KLQotI2lmIDAKLVB5RG9jX1NUUlZBUihjYXB3b3Jkc19fZG9jX18sCi0gICAgICAgICAgICAgIlMuY2Fwd29yZHMoKSAtPiBzdHJcblwKLVxuXAotQXBwbHkgLmNhcGl0YWxpemUoKSB0byBhbGwgd29yZHMgaW4gUyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgd2l0aFxuXAotbm9ybWFsaXplZCB3aGl0ZXNwYWNlIChhbGwgd2hpdGVzcGFjZSBzdHJpbmdzIGFyZSByZXBsYWNlZCBieSAnICcpLiIpOwotCi1zdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2NhcHdvcmRzKFB5VW5pY29kZU9iamVjdCAqc2VsZikKLXsKLSAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeV9zc2l6ZV90IGk7Ci0KLSAgICAvKiBTcGxpdCBpbnRvIHdvcmRzICovCi0gICAgbGlzdCA9IHNwbGl0KHNlbGYsIE5VTEwsIC0xKTsKLSAgICBpZiAoIWxpc3QpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBDYXBpdGFsaXplIGVhY2ggd29yZCAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBQeUxpc3RfR0VUX1NJWkUobGlzdCk7IGkrKykgewotICAgICAgICBpdGVtID0gZml4dXAoKFB5VW5pY29kZU9iamVjdCAqKVB5TGlzdF9HRVRfSVRFTShsaXN0LCBpKSwKLSAgICAgICAgICAgICAgICAgICAgIGZpeGNhcGl0YWxpemUpOwotICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICBQeV9ERUNSRUYoUHlMaXN0X0dFVF9JVEVNKGxpc3QsIGkpKTsKLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGxpc3QsIGksIGl0ZW0pOwotICAgIH0KLQotICAgIC8qIEpvaW4gdGhlIHdvcmRzIHRvIGZvcm0gYSBuZXcgc3RyaW5nICovCi0gICAgaXRlbSA9IFB5VW5pY29kZV9Kb2luKE5VTEwsIGxpc3QpOwotCi0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKGxpc3QpOwotICAgIHJldHVybiAoUHlPYmplY3QgKilpdGVtOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA9PSAwKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19jYXBpdGFsaXplKTsKIH0KLSNlbmRpZgorCitQeURvY19TVFJWQVIoY2FzZWZvbGRfX2RvY19fLAorICAgICAgICAgICAgICJTLmNhc2Vmb2xkKCkgLT4gc3RyXG5cCitcblwKK1JldHVybiBhIHZlcnNpb24gb2YgUyBzdWl0YWJsZSBmb3IgY2FzZWxlc3MgY29tcGFyaXNvbnMuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX2Nhc2Vmb2xkKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc2VsZikpCisgICAgICAgIHJldHVybiBhc2NpaV91cHBlcl9vcl9sb3dlcihzZWxmLCAxKTsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fY2FzZWZvbGQpOworfQorCiAKIC8qIEFyZ3VtZW50IGNvbnZlcnRlci4gIENvZXJjZXMgdG8gYSBzaW5nbGUgdW5pY29kZSBjaGFyYWN0ZXIgKi8KIAogc3RhdGljIGludAogY29udmVydF91YyhQeU9iamVjdCAqb2JqLCB2b2lkICphZGRyKQogewotICAgIFB5X1VOSUNPREUgKmZpbGxjaGFybG9jID0gKFB5X1VOSUNPREUgKilhZGRyOworICAgIFB5X1VDUzQgKmZpbGxjaGFybG9jID0gKFB5X1VDUzQgKilhZGRyOwogICAgIFB5T2JqZWN0ICp1bmlvYmo7Ci0gICAgUHlfVU5JQ09ERSAqdW5pc3RyOwogCiAgICAgdW5pb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qob2JqKTsKICAgICBpZiAodW5pb2JqID09IE5VTEwpIHsKQEAgLTcxODcsMTQgKzEwMzU4LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1bmlvYmopICE9IDEpIHsKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pb2JqKSAhPSAxKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIG11c3QgYmUgZXhhY3RseSBvbmUgY2hhcmFjdGVyIGxvbmciKTsKICAgICAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICB1bmlzdHIgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmlvYmopOwotICAgICpmaWxsY2hhcmxvYyA9IHVuaXN0clswXTsKKyAgICAqZmlsbGNoYXJsb2MgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKHVuaW9iaiwgMCk7CiAgICAgUHlfREVDUkVGKHVuaW9iaik7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC03MjA2LDExMiArMTAzNzYsNjQgQEAKIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9jZW50ZXIoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfY2VudGVyKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IG1hcmcsIGxlZnQ7CiAgICAgUHlfc3NpemVfdCB3aWR0aDsKLSAgICBQeV9VTklDT0RFIGZpbGxjaGFyID0gJyAnOworICAgIFB5X1VDUzQgZmlsbGNoYXIgPSAnICc7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIm58TyY6Y2VudGVyIiwgJndpZHRoLCBjb252ZXJ0X3VjLCAmZmlsbGNoYXIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChzZWxmLT5sZW5ndGggPj0gd2lkdGggJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtYXJnID0gd2lkdGggLSBzZWxmLT5sZW5ndGg7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgbWFyZyA9IHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAgICAgbGVmdCA9IG1hcmcgLyAyICsgKG1hcmcgJiB3aWR0aCAmIDEpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHBhZChzZWxmLCBsZWZ0LCBtYXJnIC0gbGVmdCwgZmlsbGNoYXIpOworICAgIHJldHVybiBwYWQoc2VsZiwgbGVmdCwgbWFyZyAtIGxlZnQsIGZpbGxjaGFyKTsKIH0KIAotI2lmIDAKLQotLyogVGhpcyBjb2RlIHNob3VsZCBnbyBpbnRvIHNvbWUgZnV0dXJlIFVuaWNvZGUgY29sbGF0aW9uIHN1cHBvcnQKLSAgIG1vZHVsZS4gVGhlIGJhc2ljIGNvbXBhcmlzb24gc2hvdWxkIGNvbXBhcmUgb3JkaW5hbHMgb24gYSBuYWl2ZQotICAgYmFzaXMgKHRoaXMgaXMgd2hhdCBKYXZhIGRvZXMgYW5kIHRodXMgSnl0aG9uIHRvbykuICovCi0KLS8qIHNwZWVkeSBVVEYtMTYgY29kZSBwb2ludCBvcmRlciBjb21wYXJpc29uICovCi0vKiBnbGVhbmVkIGZyb206ICovCi0vKiBodHRwOi8vd3d3LTQuaWJtLmNvbS9zb2Z0d2FyZS9kZXZlbG9wZXIvbGlicmFyeS91dGYxNi5odG1sP2R3em9uZT11bmljb2RlICovCi0KLXN0YXRpYyBzaG9ydCB1dGYxNkZpeHVwWzMyXSA9Ci17Ci0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCi0gICAgMCwgMCwgMCwgMHgyMDAwLCAtMHg4MDAsIC0weDgwMCwgLTB4ODAwLCAtMHg4MDAKLX07CisvKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBzdHIxIGFuZCBzdHIyIGFyZSByZWFkaWVkIGJ5IHRoZSBjYWxsZXIuICovCiAKIHN0YXRpYyBpbnQKLXVuaWNvZGVfY29tcGFyZShQeVVuaWNvZGVPYmplY3QgKnN0cjEsIFB5VW5pY29kZU9iamVjdCAqc3RyMikKK3VuaWNvZGVfY29tcGFyZShQeU9iamVjdCAqc3RyMSwgUHlPYmplY3QgKnN0cjIpCiB7Ci0gICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOworICAgIGludCBraW5kMSwga2luZDI7CisgICAgdm9pZCAqZGF0YTEsICpkYXRhMjsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjIsIGk7CiAKLSAgICBQeV9VTklDT0RFICpzMSA9IHN0cjEtPnN0cjsKLSAgICBQeV9VTklDT0RFICpzMiA9IHN0cjItPnN0cjsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cjEpOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3RyMik7CisgICAgZGF0YTEgPSBQeVVuaWNvZGVfREFUQShzdHIxKTsKKyAgICBkYXRhMiA9IFB5VW5pY29kZV9EQVRBKHN0cjIpOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIxKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyMik7CiAKLSAgICBsZW4xID0gc3RyMS0+bGVuZ3RoOwotICAgIGxlbjIgPSBzdHIyLT5sZW5ndGg7Ci0KLSAgICB3aGlsZSAobGVuMSA+IDAgJiYgbGVuMiA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjMSwgYzI7Ci0KLSAgICAgICAgYzEgPSAqczErKzsKLSAgICAgICAgYzIgPSAqczIrKzsKLQotICAgICAgICBpZiAoYzEgPiAoMTw8MTEpICogMjYpCi0gICAgICAgICAgICBjMSArPSB1dGYxNkZpeHVwW2MxPj4xMV07Ci0gICAgICAgIGlmIChjMiA+ICgxPDwxMSkgKiAyNikKLSAgICAgICAgICAgIGMyICs9IHV0ZjE2Rml4dXBbYzI+PjExXTsKLSAgICAgICAgLyogbm93IGMxIGFuZCBjMiBhcmUgaW4gVVRGLTMyLWNvbXBhdGlibGUgb3JkZXIgKi8KKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuMSAmJiBpIDwgbGVuMjsgKytpKSB7CisgICAgICAgIFB5X1VDUzQgYzEsIGMyOworICAgICAgICBjMSA9IFB5VW5pY29kZV9SRUFEKGtpbmQxLCBkYXRhMSwgaSk7CisgICAgICAgIGMyID0gUHlVbmljb2RlX1JFQUQoa2luZDIsIGRhdGEyLCBpKTsKIAogICAgICAgICBpZiAoYzEgIT0gYzIpCiAgICAgICAgICAgICByZXR1cm4gKGMxIDwgYzIpID8gLTEgOiAxOwotCi0gICAgICAgIGxlbjEtLTsgbGVuMi0tOwogICAgIH0KIAogICAgIHJldHVybiAobGVuMSA8IGxlbjIpID8gLTEgOiAobGVuMSAhPSBsZW4yKTsKIH0KIAotI2Vsc2UKLQotc3RhdGljIGludAotdW5pY29kZV9jb21wYXJlKFB5VW5pY29kZU9iamVjdCAqc3RyMSwgUHlVbmljb2RlT2JqZWN0ICpzdHIyKQoraW50CitQeVVuaWNvZGVfQ29tcGFyZShQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIHJlZ2lzdGVyIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKLQotICAgIFB5X1VOSUNPREUgKnMxID0gc3RyMS0+c3RyOwotICAgIFB5X1VOSUNPREUgKnMyID0gc3RyMi0+c3RyOwotCi0gICAgbGVuMSA9IHN0cjEtPmxlbmd0aDsKLSAgICBsZW4yID0gc3RyMi0+bGVuZ3RoOwotCi0gICAgd2hpbGUgKGxlbjEgPiAwICYmIGxlbjIgPiAwKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgYzEsIGMyOwotCi0gICAgICAgIGMxID0gKnMxKys7Ci0gICAgICAgIGMyID0gKnMyKys7Ci0KLSAgICAgICAgaWYgKGMxICE9IGMyKQotICAgICAgICAgICAgcmV0dXJuIChjMSA8IGMyKSA/IC0xIDogMTsKLQotICAgICAgICBsZW4xLS07IGxlbjItLTsKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGxlZnQpICYmIFB5VW5pY29kZV9DaGVjayhyaWdodCkpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsZWZ0KSA9PSAtMSB8fAorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJpZ2h0KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfY29tcGFyZShsZWZ0LCByaWdodCk7CiAgICAgfQotCi0gICAgcmV0dXJuIChsZW4xIDwgbGVuMikgPyAtMSA6IChsZW4xICE9IGxlbjIpOwotfQotCi0jZW5kaWYKLQotaW50IFB5VW5pY29kZV9Db21wYXJlKFB5T2JqZWN0ICpsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCkKLXsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGxlZnQpICYmIFB5VW5pY29kZV9DaGVjayhyaWdodCkpCi0gICAgICAgIHJldHVybiB1bmljb2RlX2NvbXBhcmUoKFB5VW5pY29kZU9iamVjdCAqKWxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5VW5pY29kZU9iamVjdCAqKXJpZ2h0KTsKICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAiQ2FuJ3QgY29tcGFyZSAlLjEwMHMgYW5kICUuMTAwcyIsCiAgICAgICAgICAgICAgICAgIGxlZnQtPm9iX3R5cGUtPnRwX25hbWUsCkBAIC03MzIyLDE3ICsxMDQ0NCwyMyBAQAogaW50CiBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhQeU9iamVjdCogdW5pLCBjb25zdCBjaGFyKiBzdHIpCiB7Ci0gICAgaW50IGk7Ci0gICAgUHlfVU5JQ09ERSAqaWQ7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayh1bmkpKTsKLSAgICBpZCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVuaSk7CisgICAgUHlfc3NpemVfdCBpOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisgICAgUHlfVUNTNCBjaHI7CisKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyh1bmkpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaSkgPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEodW5pKTsKICAgICAvKiBDb21wYXJlIFVuaWNvZGUgc3RyaW5nIGFuZCBzb3VyY2UgY2hhcmFjdGVyIHNldCBzdHJpbmcgKi8KLSAgICBmb3IgKGkgPSAwOyBpZFtpXSAmJiBzdHJbaV07IGkrKykKLSAgICAgICAgaWYgKGlkW2ldICE9IHN0cltpXSkKLSAgICAgICAgICAgIHJldHVybiAoKGludClpZFtpXSA8IChpbnQpc3RyW2ldKSA/IC0xIDogMTsKKyAgICBmb3IgKGkgPSAwOyAoY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpICYmIHN0cltpXTsgaSsrKQorICAgICAgICBpZiAoY2hyICE9IHN0cltpXSkKKyAgICAgICAgICAgIHJldHVybiAoY2hyIDwgKHVuc2lnbmVkIGNoYXIpKHN0cltpXSkpID8gLTEgOiAxOwogICAgIC8qIFRoaXMgY2hlY2sga2VlcHMgUHl0aG9uIHN0cmluZ3MgdGhhdCBlbmQgaW4gJ1wwJyBmcm9tIGNvbXBhcmluZyBlcXVhbAogICAgICB0byBDIHN0cmluZ3MgaWRlbnRpY2FsIHVwIHRvIHRoYXQgcG9pbnQuICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1bmkpICE9IGkgfHwgaWRbaV0pCisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaSkgIT0gaSB8fCBjaHIpCiAgICAgICAgIHJldHVybiAxOyAvKiB1bmkgaXMgbG9uZ2VyICovCiAgICAgaWYgKHN0cltpXSkKICAgICAgICAgcmV0dXJuIC0xOyAvKiBzdHIgaXMgbG9uZ2VyICovCkBAIC03MzQzLDE2ICsxMDQ3MSwxOCBAQAogI2RlZmluZSBURVNUX0NPTkQoY29uZCkgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICgoY29uZCkgPyBQeV9UcnVlIDogUHlfRmFsc2UpCiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfUmljaENvbXBhcmUoUHlPYmplY3QgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9wKQorUHlPYmplY3QgKgorUHlVbmljb2RlX1JpY2hDb21wYXJlKFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQsIGludCBvcCkKIHsKICAgICBpbnQgcmVzdWx0OwogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhsZWZ0KSAmJiBQeVVuaWNvZGVfQ2hlY2socmlnaHQpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICBpZiAoKChQeVVuaWNvZGVPYmplY3QgKikgbGVmdCktPmxlbmd0aCAhPQotICAgICAgICAgICAgKChQeVVuaWNvZGVPYmplY3QgKikgcmlnaHQpLT5sZW5ndGgpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsZWZ0KSA9PSAtMSB8fAorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJpZ2h0KSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgobGVmdCkgIT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmlnaHQpIHx8CisgICAgICAgICAgICBQeVVuaWNvZGVfS0lORChsZWZ0KSAhPSBQeVVuaWNvZGVfS0lORChyaWdodCkpIHsKICAgICAgICAgICAgIGlmIChvcCA9PSBQeV9FUSkgewogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9GYWxzZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFB5X0ZhbHNlOwpAQCAtNzM2NSw4ICsxMDQ5NSw3IEBACiAgICAgICAgIGlmIChsZWZ0ID09IHJpZ2h0KQogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gdW5pY29kZV9jb21wYXJlKChQeVVuaWNvZGVPYmplY3QgKilsZWZ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilyaWdodCk7CisgICAgICAgICAgICByZXN1bHQgPSB1bmljb2RlX2NvbXBhcmUobGVmdCwgcmlnaHQpOwogCiAgICAgICAgIC8qIENvbnZlcnQgdGhlIHJldHVybiB2YWx1ZSB0byBhIEJvb2xlYW4gKi8KICAgICAgICAgc3dpdGNoIChvcCkgewpAQCAtNzM5NiwxNCArMTA1MjUsMTYgQEAKICAgICAgICAgcmV0dXJuIHY7CiAgICAgfQogCi0gICAgUHlfSU5DUkVGKFB5X05vdEltcGxlbWVudGVkKTsKLSAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CisgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogfQogCi1pbnQgUHlVbmljb2RlX0NvbnRhaW5zKFB5T2JqZWN0ICpjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICplbGVtZW50KQoraW50CitQeVVuaWNvZGVfQ29udGFpbnMoUHlPYmplY3QgKmNvbnRhaW5lciwgUHlPYmplY3QgKmVsZW1lbnQpCiB7CiAgICAgUHlPYmplY3QgKnN0ciwgKnN1YjsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKICAgICBpbnQgcmVzdWx0OwogCiAgICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCkBAIC03NDIwLDUwICsxMDU1MSwxMDYgQEAKICAgICAgICAgUHlfREVDUkVGKHN1Yik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWIpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWIpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICB9CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfY29udGFpbnNfb2JqKHN0ciwgc3ViKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWIpOworICAgIGtpbmQgPSBraW5kMTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkgeworICAgICAgICBpZiAoa2luZDIgPiBraW5kKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZCk7CisgICAgfQorICAgIGlmICghYnVmMikgeworICAgICAgICBQeV9ERUNSRUYoc3ViKTsKKyAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7CisKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICByZXN1bHQgPSB1Y3MxbGliX2ZpbmQoYnVmMSwgbGVuMSwgYnVmMiwgbGVuMiwgMCkgIT0gLTE7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIHJlc3VsdCA9IHVjczJsaWJfZmluZChidWYxLCBsZW4xLCBidWYyLCBsZW4yLCAwKSAhPSAtMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgcmVzdWx0ID0gdWNzNGxpYl9maW5kKGJ1ZjEsIGxlbjEsIGJ1ZjIsIGxlbjIsIDApICE9IC0xOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXN1bHQgPSAtMTsKKyAgICAgICAgYXNzZXJ0KDApOworICAgIH0KIAogICAgIFB5X0RFQ1JFRihzdHIpOwogICAgIFB5X0RFQ1JFRihzdWIpOwogCisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvKiBDb25jYXQgdG8gc3RyaW5nIG9yIFVuaWNvZGUgb2JqZWN0IGdpdmluZyBhIG5ldyBVbmljb2RlIG9iamVjdC4gKi8KIAotUHlPYmplY3QgKlB5VW5pY29kZV9Db25jYXQoUHlPYmplY3QgKmxlZnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmlnaHQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfQ29uY2F0KFB5T2JqZWN0ICpsZWZ0LCBQeU9iamVjdCAqcmlnaHQpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTCwgKnc7CisgICAgUHlfVUNTNCBtYXhjaGFyLCBtYXhjaGFyMjsKKyAgICBQeV9zc2l6ZV90IHVfbGVuLCB2X2xlbiwgbmV3X2xlbjsKIAogICAgIC8qIENvZXJjZSB0aGUgdHdvIGFyZ3VtZW50cyAqLwotICAgIHUgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QobGVmdCk7CisgICAgdSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwogICAgIGlmICh1ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB2ID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KHJpZ2h0KTsKKyAgICB2ID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOwogICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb25FcnJvcjsKIAogICAgIC8qIFNob3J0Y3V0cyAqLwogICAgIGlmICh2ID09IHVuaWNvZGVfZW1wdHkpIHsKICAgICAgICAgUHlfREVDUkVGKHYpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdTsKKyAgICAgICAgcmV0dXJuIHU7CiAgICAgfQogICAgIGlmICh1ID09IHVuaWNvZGVfZW1wdHkpIHsKICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopdjsKKyAgICAgICAgcmV0dXJuIHY7CiAgICAgfQogCisgICAgdV9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KTsKKyAgICB2X2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpOworICAgIGlmICh1X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gdl9sZW4pIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOworICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgfQorICAgIG5ld19sZW4gPSB1X2xlbiArIHZfbGVuOworCisgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh1KTsKKyAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRSh2KTsKKyAgICBtYXhjaGFyID0gTUFYX01BWENIQVIobWF4Y2hhciwgbWF4Y2hhcjIpOworCiAgICAgLyogQ29uY2F0IHRoZSB0d28gVW5pY29kZSBzdHJpbmdzICovCi0gICAgdyA9IF9QeVVuaWNvZGVfTmV3KHUtPmxlbmd0aCArIHYtPmxlbmd0aCk7CisgICAgdyA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7CiAgICAgaWYgKHcgPT0gTlVMTCkKICAgICAgICAgZ290byBvbkVycm9yOwotICAgIFB5X1VOSUNPREVfQ09QWSh3LT5zdHIsIHUtPnN0ciwgdS0+bGVuZ3RoKTsKLSAgICBQeV9VTklDT0RFX0NPUFkody0+c3RyICsgdS0+bGVuZ3RoLCB2LT5zdHIsIHYtPmxlbmd0aCk7Ci0KKyAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCAwLCB1LCAwLCB1X2xlbik7CisgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnModywgdV9sZW4sIHYsIDAsIHZfbGVuKTsKICAgICBQeV9ERUNSRUYodSk7CiAgICAgUHlfREVDUkVGKHYpOwotICAgIHJldHVybiAoUHlPYmplY3QgKil3OworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodywgMSkpOworICAgIHJldHVybiB3OwogCiAgIG9uRXJyb3I6CiAgICAgUHlfWERFQ1JFRih1KTsKQEAgLTc0NzIsMTkgKzEwNjU5LDg5IEBACiB9CiAKIHZvaWQKLVB5VW5pY29kZV9BcHBlbmQoUHlPYmplY3QgKipwbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQorUHlVbmljb2RlX0FwcGVuZChQeU9iamVjdCAqKnBfbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5T2JqZWN0ICpuZXc7Ci0gICAgaWYgKCpwbGVmdCA9PSBOVUxMKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKHJpZ2h0ID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjaygqcGxlZnQpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRigqcGxlZnQpOwotICAgICAgICAqcGxlZnQgPSBOVUxMOworICAgIFB5T2JqZWN0ICpsZWZ0LCAqcmVzOworICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7CisgICAgUHlfc3NpemVfdCBsZWZ0X2xlbiwgcmlnaHRfbGVuLCBuZXdfbGVuOworCisgICAgaWYgKHBfbGVmdCA9PSBOVUxMKSB7CisgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG5ldyA9IFB5VW5pY29kZV9Db25jYXQoKnBsZWZ0LCByaWdodCk7Ci0gICAgUHlfREVDUkVGKCpwbGVmdCk7Ci0gICAgKnBsZWZ0ID0gbmV3OworICAgIGxlZnQgPSAqcF9sZWZ0OworICAgIGlmIChyaWdodCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sobGVmdCkpIHsKKyAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShsZWZ0KSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHJpZ2h0KSA9PSAtMSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIFNob3J0Y3V0cyAqLworICAgIGlmIChsZWZ0ID09IHVuaWNvZGVfZW1wdHkpIHsKKyAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICBQeV9JTkNSRUYocmlnaHQpOworICAgICAgICAqcF9sZWZ0ID0gcmlnaHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHJpZ2h0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybjsKKworICAgIGxlZnRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgobGVmdCk7CisgICAgcmlnaHRfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmlnaHQpOworICAgIGlmIChsZWZ0X2xlbiA+IFBZX1NTSVpFX1RfTUFYIC0gcmlnaHRfbGVuKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZ3MgYXJlIHRvbyBsYXJnZSB0byBjb25jYXQiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgbmV3X2xlbiA9IGxlZnRfbGVuICsgcmlnaHRfbGVuOworCisgICAgaWYgKHVuaWNvZGVfbW9kaWZpYWJsZShsZWZ0KQorICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChyaWdodCkKKyAgICAgICAgJiYgUHlVbmljb2RlX0tJTkQocmlnaHQpIDw9IFB5VW5pY29kZV9LSU5EKGxlZnQpCisgICAgICAgIC8qIERvbid0IHJlc2l6ZSBmb3IgYXNjaWkgKz0gbGF0aW4xLiBDb252ZXJ0IGFzY2lpIHRvIGxhdGluMSByZXF1aXJlcworICAgICAgICAgICB0byBjaGFuZ2UgdGhlIHN0cnVjdHVyZSBzaXplLCBidXQgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGp1c3QgYWZ0ZXIKKyAgICAgICAgICAgdGhlIHN0cnVjdHVyZSwgYW5kIHNvIGl0IHJlcXVpcmVzIHRvIG1vdmUgYWxsIGNoYXJhY3RlcnMgd2hpY2ggaXMKKyAgICAgICAgICAgbm90IHNvIGRpZmZlcmVudCB0aGFuIGR1cGxpY2F0aW5nIHRoZSBzdHJpbmcuICovCisgICAgICAgICYmICEoUHlVbmljb2RlX0lTX0FTQ0lJKGxlZnQpICYmICFQeVVuaWNvZGVfSVNfQVNDSUkocmlnaHQpKSkKKyAgICB7CisgICAgICAgIC8qIGFwcGVuZCBpbnBsYWNlICovCisgICAgICAgIGlmICh1bmljb2RlX3Jlc2l6ZShwX2xlZnQsIG5ld19sZW4pICE9IDApIHsKKyAgICAgICAgICAgIC8qIFhYWCBpZiBfUHlVbmljb2RlX1Jlc2l6ZSgpIGZhaWxzLCAnbGVmdCcgaGFzIGJlZW4KKyAgICAgICAgICAgICAqIGRlYWxsb2NhdGVkIHNvIGl0IGNhbm5vdCBiZSBwdXQgYmFjayBpbnRvCisgICAgICAgICAgICAgKiAndmFyaWFibGUnLiAgVGhlIE1lbW9yeUVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZXJlCisgICAgICAgICAgICAgKiBpcyBubyB2YWx1ZSBpbiAndmFyaWFibGUnLCB3aGljaCBtaWdodCAodmVyeQorICAgICAgICAgICAgICogcmVtb3RlbHkpIGJlIGEgY2F1c2Ugb2YgaW5jb21wYXRpYmlsaXRpZXMuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgLyogY29weSAncmlnaHQnIGludG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBhcmVhIG9mICdsZWZ0JyAqLworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycygqcF9sZWZ0LCBsZWZ0X2xlbiwgcmlnaHQsIDAsIHJpZ2h0X2xlbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGxlZnQpOworICAgICAgICBtYXhjaGFyMiA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShyaWdodCk7CisgICAgICAgIG1heGNoYXIgPSBNQVhfTUFYQ0hBUihtYXhjaGFyLCBtYXhjaGFyMik7CisKKyAgICAgICAgLyogQ29uY2F0IHRoZSB0d28gVW5pY29kZSBzdHJpbmdzICovCisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlcywgMCwgbGVmdCwgMCwgbGVmdF9sZW4pOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyhyZXMsIGxlZnRfbGVuLCByaWdodCwgMCwgcmlnaHRfbGVuKTsKKyAgICAgICAgUHlfREVDUkVGKGxlZnQpOworICAgICAgICAqcF9sZWZ0ID0gcmVzOworICAgIH0KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KCpwX2xlZnQsIDEpKTsKKyAgICByZXR1cm47CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKCpwX2xlZnQpOwogfQogCiB2b2lkCkBAIC03NTAyLDIzICsxMDc1OSw2NCBAQAogaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2NvdW50KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2NvdW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN1YnN0cmluZzsKKyAgICBQeU9iamVjdCAqc3Vic3RyaW5nOwogICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwogICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQga2luZDEsIGtpbmQyLCBraW5kOworICAgIHZvaWQgKmJ1ZjEsICpidWYyOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaXJlc3VsdDsKIAogICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIHNlbGYtPmxlbmd0aCk7Ci0gICAgcmVzdWx0ID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc2VsZi0+c3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RyaW5nLT5zdHIsIHN1YnN0cmluZy0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgUFlfU1NJWkVfVF9NQVgpCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQyID4ga2luZDEpCisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7CisgICAga2luZCA9IGtpbmQxOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyaW5nKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0cmluZywga2luZCk7CisgICAgaWYgKCFidWYyKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOworCisgICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuMSk7CisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaXJlc3VsdCA9IHVjczFsaWJfY291bnQoCisgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgYnVmMiwgbGVuMiwgUFlfU1NJWkVfVF9NQVgKKyAgICAgICAgICAgICk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIGlyZXN1bHQgPSB1Y3MybGliX2NvdW50KAorICAgICAgICAgICAgKChQeV9VQ1MyKilidWYxKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKKyAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCisgICAgICAgICAgICApOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBpcmVzdWx0ID0gdWNzNGxpYl9jb3VudCgKKyAgICAgICAgICAgICgoUHlfVUNTNCopYnVmMSkgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICBidWYyLCBsZW4yLCBQWV9TU0laRV9UX01BWAorICAgICAgICAgICAgKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOyBpcmVzdWx0ID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBQeUxvbmdfRnJvbVNzaXplX3QoaXJlc3VsdCk7CisKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCkBAIC03NTM2LDcgKzEwODM0LDcgQEAKIGNvZGVjcy5yZWdpc3Rlcl9lcnJvciB0aGF0IGNhbiBoYW5kbGUgVW5pY29kZUVuY29kZUVycm9ycy4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfZW5jb2RlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit1bmljb2RlX2VuY29kZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKICAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7CkBAIC03NTQ1LDcgKzEwODQzLDcgQEAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8c3M6ZW5jb2RlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZlbmNvZGluZywgJmVycm9ycykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKChQeU9iamVjdCAqKXNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOworICAgIHJldHVybiBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogfQogCiBQeURvY19TVFJWQVIoZXhwYW5kdGFic19fZG9jX18sCkBAIC03NTU1LDgyICsxMDg1Myw4MiBAQAogSWYgdGFic2l6ZSBpcyBub3QgZ2l2ZW4sIGEgdGFiIHNpemUgb2YgOCBjaGFyYWN0ZXJzIGlzIGFzc3VtZWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfZXhwYW5kdGFicyhQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9leHBhbmR0YWJzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9VTklDT0RFICplOwotICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgUHlfVU5JQ09ERSAqcTsKLSAgICBQeV9VTklDT0RFICpxZTsKLSAgICBQeV9zc2l6ZV90IGksIGosIGluY3I7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICp1OworICAgIFB5X3NzaXplX3QgaSwgaiwgbGluZV9wb3MsIHNyY19sZW4sIGluY3I7CisgICAgUHlfVUNTNCBjaDsKKyAgICBQeU9iamVjdCAqdTsKKyAgICB2b2lkICpzcmNfZGF0YSwgKmRlc3RfZGF0YTsKICAgICBpbnQgdGFic2l6ZSA9IDg7CisgICAgaW50IGtpbmQ7CisgICAgaW50IGZvdW5kOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpleHBhbmR0YWJzIiwgJnRhYnNpemUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgLyogRmlyc3QgcGFzczogZGV0ZXJtaW5lIHNpemUgb2Ygb3V0cHV0IHN0cmluZyAqLwotICAgIGkgPSAwOyAvKiBjaGFycyB1cCB0byBhbmQgaW5jbHVkaW5nIG1vc3QgcmVjZW50IFxuIG9yIFxyICovCi0gICAgaiA9IDA7IC8qIGNoYXJzIHNpbmNlIG1vc3QgcmVjZW50IFxuIG9yIFxyICh1c2UgaW4gdGFiIGNhbGN1bGF0aW9ucykgKi8KLSAgICBlID0gc2VsZi0+c3RyICsgc2VsZi0+bGVuZ3RoOyAvKiBlbmQgb2YgaW5wdXQgKi8KLSAgICBmb3IgKHAgPSBzZWxmLT5zdHI7IHAgPCBlOyBwKyspCi0gICAgICAgIGlmICgqcCA9PSAnXHQnKSB7CisgICAgc3JjX2xlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGkgPSBqID0gbGluZV9wb3MgPSAwOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBzcmNfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGZvdW5kID0gMDsKKyAgICBmb3IgKDsgaSA8IHNyY19sZW47IGkrKykgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIHNyY19kYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoID09ICdcdCcpIHsKKyAgICAgICAgICAgIGZvdW5kID0gMTsKICAgICAgICAgICAgIGlmICh0YWJzaXplID4gMCkgewotICAgICAgICAgICAgICAgIGluY3IgPSB0YWJzaXplIC0gKGogJSB0YWJzaXplKTsgLyogY2Fubm90IG92ZXJmbG93ICovCisgICAgICAgICAgICAgICAgaW5jciA9IHRhYnNpemUgLSAobGluZV9wb3MgJSB0YWJzaXplKTsgLyogY2Fubm90IG92ZXJmbG93ICovCiAgICAgICAgICAgICAgICAgaWYgKGogPiBQWV9TU0laRV9UX01BWCAtIGluY3IpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICAgICAgICAgIGxpbmVfcG9zICs9IGluY3I7CiAgICAgICAgICAgICAgICAgaiArPSBpbmNyOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaWYgKGogPiBQWV9TU0laRV9UX01BWCAtIDEpCi0gICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzE7CisgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKKyAgICAgICAgICAgIGxpbmVfcG9zKys7CiAgICAgICAgICAgICBqKys7Ci0gICAgICAgICAgICBpZiAoKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPiBQWV9TU0laRV9UX01BWCAtIGopCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cxOwotICAgICAgICAgICAgICAgIGkgKz0gajsKLSAgICAgICAgICAgICAgICBqID0gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnXG4nIHx8IGNoID09ICdccicpCisgICAgICAgICAgICAgICAgbGluZV9wb3MgPSAwOwogICAgICAgICB9Ci0KLSAgICBpZiAoaSA+IFBZX1NTSVpFX1RfTUFYIC0gaikKLSAgICAgICAgZ290byBvdmVyZmxvdzE7CisgICAgfQorICAgIGlmICghZm91bmQpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CiAKICAgICAvKiBTZWNvbmQgcGFzczogY3JlYXRlIG91dHB1dCBzdHJpbmcgYW5kIGZpbGwgaXQgKi8KLSAgICB1ID0gX1B5VW5pY29kZV9OZXcoaSArIGopOworICAgIHUgPSBQeVVuaWNvZGVfTmV3KGosIFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShzZWxmKSk7CiAgICAgaWYgKCF1KQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBkZXN0X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh1KTsKIAotICAgIGogPSAwOyAvKiBzYW1lIGFzIGluIGZpcnN0IHBhc3MgKi8KLSAgICBxID0gdS0+c3RyOyAvKiBuZXh0IG91dHB1dCBjaGFyICovCi0gICAgcWUgPSB1LT5zdHIgKyB1LT5sZW5ndGg7IC8qIGVuZCBvZiBvdXRwdXQgKi8KKyAgICBpID0gaiA9IGxpbmVfcG9zID0gMDsKIAotICAgIGZvciAocCA9IHNlbGYtPnN0cjsgcCA8IGU7IHArKykKLSAgICAgICAgaWYgKCpwID09ICdcdCcpIHsKKyAgICBmb3IgKDsgaSA8IHNyY19sZW47IGkrKykgeworICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIHNyY19kYXRhLCBpKTsKKyAgICAgICAgaWYgKGNoID09ICdcdCcpIHsKICAgICAgICAgICAgIGlmICh0YWJzaXplID4gMCkgewotICAgICAgICAgICAgICAgIGkgPSB0YWJzaXplIC0gKGogJSB0YWJzaXplKTsKLSAgICAgICAgICAgICAgICBqICs9IGk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGktLSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocSA+PSBxZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3cyOwotICAgICAgICAgICAgICAgICAgICAqcSsrID0gJyAnOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbmNyID0gdGFic2l6ZSAtIChsaW5lX3BvcyAlIHRhYnNpemUpOworICAgICAgICAgICAgICAgIGxpbmVfcG9zICs9IGluY3I7CisgICAgICAgICAgICAgICAgRklMTChraW5kLCBkZXN0X2RhdGEsICcgJywgaiwgaW5jcik7CisgICAgICAgICAgICAgICAgaiArPSBpbmNyOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKHEgPj0gcWUpCi0gICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzI7Ci0gICAgICAgICAgICAqcSsrID0gKnA7CisgICAgICAgICAgICBsaW5lX3BvcysrOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRlc3RfZGF0YSwgaiwgY2gpOwogICAgICAgICAgICAgaisrOwotICAgICAgICAgICAgaWYgKCpwID09ICdcbicgfHwgKnAgPT0gJ1xyJykKLSAgICAgICAgICAgICAgICBqID0gMDsKKyAgICAgICAgICAgIGlmIChjaCA9PSAnXG4nIHx8IGNoID09ICdccicpCisgICAgICAgICAgICAgICAgbGluZV9wb3MgPSAwOwogICAgICAgICB9CisgICAgfQorICAgIGFzc2VydCAoaiA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1KSk7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0KHUpOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHU7Ci0KLSAgb3ZlcmZsb3cyOgotICAgIFB5X0RFQ1JFRih1KTsKLSAgb3ZlcmZsb3cxOgorICBvdmVyZmxvdzoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgIm5ldyBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICByZXR1cm4gTlVMTDsKIH0KQEAgLTc2NDUsOSArMTA5NDMsOSBAQAogUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2ZpbmQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfZmluZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwpAQCAtNzY1Niw2MyArMTA5NTQsMTE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YnN0cmluZyksIFB5VW5pY29kZV9HRVRfU0laRShzdWJzdHJpbmcpLAotICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7CiAKICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKIAorICAgIGlmIChyZXN1bHQgPT0gLTIpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9nZXRpdGVtKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKK3VuaWNvZGVfZ2V0aXRlbShQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpbmRleCkKIHsKLSAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHNlbGYtPmxlbmd0aCkgeworICAgIHZvaWQgKmRhdGE7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIFB5X1VDUzQgY2g7CisgICAgUHlPYmplY3QgKnJlczsKKworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNlbGYpIHx8IFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgeworICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgInN0cmluZyBpbmRleCBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CisgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpbmRleCk7CisgICAgaWYgKGNoIDwgMjU2KQorICAgICAgICByZXR1cm4gZ2V0X2xhdGluMV9jaGFyKGNoKTsKIAotICAgIHJldHVybiAoUHlPYmplY3QqKSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoJnNlbGYtPnN0cltpbmRleF0sIDEpOworICAgIHJlcyA9IFB5VW5pY29kZV9OZXcoMSwgY2gpOworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIDAsIGNoKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgIHJldHVybiByZXM7CiB9CiAKIC8qIEJlbGlldmUgaXQgb3Igbm90LCB0aGlzIHByb2R1Y2VzIHRoZSBzYW1lIHZhbHVlIGZvciBBU0NJSSBzdHJpbmdzCi0gICBhcyBzdHJpbmdfaGFzaCgpLiAqLworICAgYXMgYnl0ZXNfaGFzaCgpLiAqLwogc3RhdGljIFB5X2hhc2hfdAotdW5pY29kZV9oYXNoKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaGFzaChQeU9iamVjdCAqc2VsZikKIHsKICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X2hhc2hfdCB4OworICAgIFB5X3VoYXNoX3QgeDsKIAogI2lmZGVmIFB5X0RFQlVHCiAgICAgYXNzZXJ0KF9QeV9IYXNoU2VjcmV0X0luaXRpYWxpemVkKTsKICNlbmRpZgotICAgIGlmIChzZWxmLT5oYXNoICE9IC0xKQotICAgICAgICByZXR1cm4gc2VsZi0+aGFzaDsKLSAgICBsZW4gPSBQeV9TSVpFKHNlbGYpOworICAgIGlmIChfUHlVbmljb2RlX0hBU0goc2VsZikgIT0gLTEpCisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0hBU0goc2VsZik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIC8qCiAgICAgICBXZSBtYWtlIHRoZSBoYXNoIG9mIHRoZSBlbXB0eSBzdHJpbmcgYmUgMCwgcmF0aGVyIHRoYW4gdXNpbmcKICAgICAgIChwcmVmaXggXiBzdWZmaXgpLCBzaW5jZSB0aGlzIHNsaWdodGx5IG9iZnVzY2F0ZXMgdGhlIGhhc2ggc2VjcmV0CiAgICAgKi8KICAgICBpZiAobGVuID09IDApIHsKLSAgICAgICAgc2VsZi0+aGFzaCA9IDA7CisgICAgICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IDA7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwID0gc2VsZi0+c3RyOwotICAgIHggPSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7Ci0gICAgeCBePSAqcCA8PCA3OwotICAgIHdoaWxlICgtLWxlbiA+PSAwKQotICAgICAgICB4ID0gKF9QeUhBU0hfTVVMVElQTElFUip4KSBeICpwKys7Ci0gICAgeCBePSBQeV9TSVpFKHNlbGYpOwotICAgIHggXj0gX1B5X0hhc2hTZWNyZXQuc3VmZml4OworCisgICAgLyogVGhlIGhhc2ggZnVuY3Rpb24gYXMgYSBtYWNybywgZ2V0cyBleHBhbmRlZCB0aHJlZSB0aW1lcyBiZWxvdy4gKi8KKyNkZWZpbmUgSEFTSChQKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHggXj0gKFB5X3VoYXNoX3QpICpQIDw8IDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgd2hpbGUgKC0tbGVuID49IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeCA9IChfUHlIQVNIX01VTFRJUExJRVIgKiB4KSBeIChQeV91aGFzaF90KSAqUCsrOyAgXAorCisgICAgeCA9IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5wcmVmaXg7CisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzZWxmKSkgeworICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6IHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYyA9IFB5VW5pY29kZV8xQllURV9EQVRBKHNlbGYpOworICAgICAgICBIQVNIKGMpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogeworICAgICAgICBjb25zdCBQeV9VQ1MyICpzID0gUHlVbmljb2RlXzJCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIEhBU0gocyk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIFB5X1VDUzQgKmw7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChzZWxmKSA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCAmJgorICAgICAgICAgICAgICAgIkltcG9zc2libGUgc3dpdGNoIGNhc2UgaW4gdW5pY29kZV9oYXNoIik7CisgICAgICAgIGwgPSBQeVVuaWNvZGVfNEJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgSEFTSChsKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKyAgICB4IF49IChQeV91aGFzaF90KSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICB4IF49IChQeV91aGFzaF90KSBfUHlfSGFzaFNlY3JldC5zdWZmaXg7CisKICAgICBpZiAoeCA9PSAtMSkKICAgICAgICAgeCA9IC0yOwotICAgIHNlbGYtPmhhc2ggPSB4OworICAgIF9QeVVuaWNvZGVfSEFTSChzZWxmKSA9IHg7CiAgICAgcmV0dXJuIHg7CiB9CisjdW5kZWYgSEFTSAogCiBQeURvY19TVFJWQVIoaW5kZXhfX2RvY19fLAogICAgICAgICAgICAgICJTLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXApAQCAtNzcyMCwxMCArMTEwNjksMTAgQEAKIExpa2UgUy5maW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfaW5kZXgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfaW5kZXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKIApAQCAtNzczMSwxNCArMTEwODAsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc3Vic3RyaW5nKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN1YnN0cmluZyksCi0gICAgICAgIHN0YXJ0LCBlbmQKLSAgICAgICAgKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBpZiAocmVzdWx0IDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInN1YnN0cmluZyBub3QgZm91bmQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NzU0LDI0ICsxMTEwNywzMSBAQAogYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNsb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzbG93ZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBpbnQgY2FzZWQ7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTTE9XRVIoKnApKTsKKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTTE9XRVIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKICAgICBjYXNlZCA9IDA7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBfUHlfVU5JQ09ERV9ORVhUKHAsIGUpOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CiAKICAgICAgICAgaWYgKFB5X1VOSUNPREVfSVNVUFBFUihjaCkgfHwgUHlfVU5JQ09ERV9JU1RJVExFKGNoKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CkBAIC03Nzg4LDI0ICsxMTE0OCwzMSBAQAogYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXN1cHBlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzdXBwZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBpbnQgY2FzZWQ7CiAKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhQeV9VTklDT0RFX0lTVVBQRVIoKnApICE9IDApOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNVUFBFUihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkgIT0gMCk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CiAgICAgY2FzZWQgPSAwOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogCiAgICAgICAgIGlmIChQeV9VTklDT0RFX0lTTE9XRVIoY2gpIHx8IFB5X1VOSUNPREVfSVNUSVRMRShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwpAQCAtNzgyNCwyNiArMTExOTEsMzQgQEAKIFJldHVybiBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXN0aXRsZShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzdGl0bGUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKICAgICBpbnQgY2FzZWQsIHByZXZpb3VzX2lzX2Nhc2VkOwogCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKwogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoKFB5X1VOSUNPREVfSVNUSVRMRSgqcCkgIT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlfVU5JQ09ERV9JU1VQUEVSKCpwKSAhPSAwKSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKSB7CisgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKTsKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygoUHlfVU5JQ09ERV9JU1RJVExFKGNoKSAhPSAwKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeV9VTklDT0RFX0lTVVBQRVIoY2gpICE9IDApKTsKKyAgICB9CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7CiAgICAgY2FzZWQgPSAwOwogICAgIHByZXZpb3VzX2lzX2Nhc2VkID0gMDsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IF9QeV9VTklDT0RFX05FWFQocCwgZSk7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAogICAgICAgICBpZiAoUHlfVU5JQ09ERV9JU1VQUEVSKGNoKSB8fCBQeV9VTklDT0RFX0lTVElUTEUoY2gpKSB7CiAgICAgICAgICAgICBpZiAocHJldmlvdXNfaXNfY2FzZWQpCkBAIC03ODcwLDIzICsxMTI0NSwyOSBAQAogYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgaW4gUywgRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzc3BhY2UoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQordW5pY29kZV9pc3NwYWNlKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTU1BBQ0UoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSkpOwogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW5ndGggPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNTUEFDRShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KQEAgLTc5MDAsMjMgKzExMjgxLDI5IEBACiBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBpbiBTLCBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNhbHBoYShQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzYWxwaGEoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmCi0gICAgICAgIFB5X1VOSUNPREVfSVNBTFBIQSgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU0FMUEhBKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0FMUEhBKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKQorICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNBTFBIQShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtNzkyOSwyMyArMTEzMTYsMzEgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2FsbnVtKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNhbG51bShQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5X3NzaXplX3QgbGVuLCBpOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTQUxOVU0oKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW4gPT0gMSkgeworICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCk7CisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoUHlfVU5JQ09ERV9JU0FMTlVNKGNoKSk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbCBjYXNlIGZvciBlbXB0eSBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAwKQorICAgIGlmIChsZW4gPT0gMCkKICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKIAotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIHdoaWxlIChwIDwgZSkgewotICAgICAgICBjb25zdCBQeV9VQ1M0IGNoID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOwogICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNBTE5VTShjaCkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KQEAgLTc5NTksMjMgKzExMzU0LDI5IEBACiBGYWxzZSBvdGhlcndpc2UuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfaXNkZWNpbWFsKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNkZWNpbWFsKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKTsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICplOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW5ndGggPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogU2hvcnRjdXQgZm9yIHNpbmdsZSBjaGFyYWN0ZXIgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMSAmJgotICAgICAgICBQeV9VTklDT0RFX0lTREVDSU1BTCgqcCkpCi0gICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CisgICAgaWYgKGxlbmd0aCA9PSAxKQorICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKAorICAgICAgICAgICAgUHlfVU5JQ09ERV9JU0RFQ0lNQUwoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgMCkpKTsKIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTREVDSU1BTChfUHlfVU5JQ09ERV9ORVhUKHAsIGUpKSkKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTREVDSU1BTChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpCiAgICAgICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogICAgIH0KICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOwpAQCAtNzk4OCwyMyArMTEzODksMzAgQEAKIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGluIFMsIEZhbHNlIG90aGVyd2lzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9pc2RpZ2l0KFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfaXNkaWdpdChQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU0RJR0lUKCpwKSkKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKKyAgICBpZiAobGVuZ3RoID09IDEpIHsKKyAgICAgICAgY29uc3QgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKFB5X1VOSUNPREVfSVNESUdJVChjaCkpOworICAgIH0KIAogICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAobGVuZ3RoID09IDApCiAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTRElHSVQoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU0RJR0lUKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMCk7CiAgICAgfQogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoMSk7CkBAIC04MDE3LDIzICsxMTQyNSwyOSBAQAogRmFsc2Ugb3RoZXJ3aXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX2lzbnVtZXJpYyhQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2lzbnVtZXJpYyhQeU9iamVjdCAqc2VsZikKIHsKLSAgICByZWdpc3RlciBjb25zdCBQeV9VTklDT0RFICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqZTsKKyAgICBQeV9zc2l6ZV90IGksIGxlbmd0aDsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKIAogICAgIC8qIFNob3J0Y3V0IGZvciBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDEgJiYKLSAgICAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoKnApKQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDEpOworICAgIGlmIChsZW5ndGggPT0gMSkKKyAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygKKyAgICAgICAgICAgIFB5X1VOSUNPREVfSVNOVU1FUklDKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2UgZm9yIGVtcHR5IHN0cmluZ3MgKi8KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpID09IDApCisgICAgaWYgKGxlbmd0aCA9PSAwKQogICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKDApOwogCi0gICAgZSA9IHAgKyBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgd2hpbGUgKHAgPCBlKSB7Ci0gICAgICAgIGlmICghUHlfVU5JQ09ERV9JU05VTUVSSUMoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU05VTUVSSUMoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpKQogICAgICAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygwKTsKICAgICB9CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygxKTsKQEAgLTgwNDIsMTMgKzExNDU2LDIxIEBACiBpbnQKIFB5VW5pY29kZV9Jc0lkZW50aWZpZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKChQeVVuaWNvZGVPYmplY3QqKXNlbGYpOwotICAgIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGk7CiAgICAgUHlfVUNTNCBmaXJzdDsKIAotICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLwotICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikgPT0gMCkKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoImlkZW50aWZpZXIgbm90IHJlYWR5Iik7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIFNwZWNpYWwgY2FzZSBmb3IgZW1wdHkgc3RyaW5ncyAqLworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOwogCiAgICAgLyogUEVQIDMxMzEgc2F5cyB0aGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBpbgogICAgICAgIFhJRF9TdGFydCBhbmQgc3Vic2VxdWVudCBjaGFyYWN0ZXJzIGluIFhJRF9Db250aW51ZSwKQEAgLTgwNTgsMTMgKzExNDgwLDEyIEBACiAgICAgICAgZGVmaW5pdGlvbiBvZiBYSURfU3RhcnQgYW5kIFhJRF9Db250aW51ZSwgaXQgaXMgc3VmZmljaWVudAogICAgICAgIHRvIGNoZWNrIGp1c3QgZm9yIHRoZXNlLCBleGNlcHQgdGhhdCBfIG11c3QgYmUgYWxsb3dlZAogICAgICAgIGFzIHN0YXJ0aW5nIGFuIGlkZW50aWZpZXIuICAqLwotICAgIGUgPSBwICsgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOwotICAgIGZpcnN0ID0gX1B5X1VOSUNPREVfTkVYVChwLCBlKTsKKyAgICBmaXJzdCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOwogICAgIGlmICghX1B5VW5pY29kZV9Jc1hpZFN0YXJ0KGZpcnN0KSAmJiBmaXJzdCAhPSAweDVGIC8qIExPVyBMSU5FICovKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHdoaWxlIChwIDwgZSkKLSAgICAgICAgaWYgKCFfUHlVbmljb2RlX0lzWGlkQ29udGludWUoX1B5X1VOSUNPREVfTkVYVChwLCBlKSkpCisgICAgZm9yIChpID0gMTsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOyBpKyspCisgICAgICAgIGlmICghX1B5VW5pY29kZV9Jc1hpZENvbnRpbnVlKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiAxOwogfQpAQCAtODA5MCwxNyArMTE1MTEsMjMgQEAKIHN0YXRpYyBQeU9iamVjdCoKIHVuaWNvZGVfaXNwcmludGFibGUoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmVnaXN0ZXIgY29uc3QgUHlfVU5JQ09ERSAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpOwotICAgIHJlZ2lzdGVyIGNvbnN0IFB5X1VOSUNPREUgKmU7CisgICAgUHlfc3NpemVfdCBpLCBsZW5ndGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKKyAgICBkYXRhID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAKICAgICAvKiBTaG9ydGN1dCBmb3Igc2luZ2xlIGNoYXJhY3RlciBzdHJpbmdzICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSA9PSAxICYmIFB5X1VOSUNPREVfSVNQUklOVEFCTEUoKnApKSB7Ci0gICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgIH0KKyAgICBpZiAobGVuZ3RoID09IDEpCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcoCisgICAgICAgICAgICBQeV9VTklDT0RFX0lTUFJJTlRBQkxFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApKSk7CiAKLSAgICBlID0gcCArIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKTsKLSAgICB3aGlsZSAocCA8IGUpIHsKLSAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKF9QeV9VTklDT0RFX05FWFQocCwgZSkpKSB7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICghUHlfVU5JQ09ERV9JU1BSSU5UQUJMRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpIHsKICAgICAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICAgICAgfQogICAgIH0KQEAgLTgxMjAsOSArMTE1NDcsMTEgQEAKIH0KIAogc3RhdGljIFB5X3NzaXplX3QKLXVuaWNvZGVfbGVuZ3RoKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfbGVuZ3RoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBzZWxmLT5sZW5ndGg7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxqdXN0X19kb2NfXywKQEAgLTgxMzIsMjAgKzExNTYxLDIxIEBACiBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2xqdXN0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX2xqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIFB5X1VOSUNPREUgZmlsbGNoYXIgPSAnICc7CisgICAgUHlfVUNTNCBmaWxsY2hhciA9ICcgJzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxPJjpsanVzdCIsICZ3aWR0aCwgY29udmVydF91YywgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHBhZChzZWxmLCAwLCB3aWR0aCAtIHNlbGYtPmxlbmd0aCwgZmlsbGNoYXIpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIHJldHVybiBwYWQoc2VsZiwgMCwgd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgZmlsbGNoYXIpOwogfQogCiBQeURvY19TVFJWQVIobG93ZXJfX2RvY19fLApAQCAtODE1NCw5ICsxMTU4NCwxMyBAQAogUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIFMgY29udmVydGVkIHRvIGxvd2VyY2FzZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9sb3dlcihQeVVuaWNvZGVPYmplY3QgKnNlbGYpCit1bmljb2RlX2xvd2VyKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBmaXh1cChzZWxmLCBmaXhsb3dlcik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkKKyAgICAgICAgcmV0dXJuIGFzY2lpX3VwcGVyX29yX2xvd2VyKHNlbGYsIDEpOworICAgIHJldHVybiBjYXNlX29wZXJhdGlvbihzZWxmLCBkb19sb3dlcik7CiB9CiAKICNkZWZpbmUgTEVGVFNUUklQIDAKQEAgLTgxNzAsMTkgKzExNjA0LDI3IEBACiAKIC8qIGV4dGVybmFsbHkgdmlzaWJsZSBmb3Igc3RyLnN0cmlwKHVuaWNvZGUpICovCiBQeU9iamVjdCAqCi1fUHlVbmljb2RlX1hTdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUsIFB5T2JqZWN0ICpzZXBvYmopCitfUHlVbmljb2RlX1hTdHJpcChQeU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKnNlcG9iaikKIHsKLSAgICBQeV9VTklDT0RFICpzID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZik7Ci0gICAgUHlfVU5JQ09ERSAqc2VwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2Vwb2JqKTsKLSAgICBQeV9zc2l6ZV90IHNlcGxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShzZXBvYmopOwotICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICB2b2lkICpkYXRhOworICAgIGludCBraW5kOworICAgIFB5X3NzaXplX3QgaSwgaiwgbGVuOworICAgIEJMT09NX01BU0sgc2VwbWFzazsKIAotICAgIEJMT09NX01BU0sgc2VwbWFzayA9IG1ha2VfYmxvb21fbWFzayhzZXAsIHNlcGxlbik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc2Vwb2JqKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOworICAgIHNlcG1hc2sgPSBtYWtlX2Jsb29tX21hc2soUHlVbmljb2RlX0tJTkQoc2Vwb2JqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHNlcG9iaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBvYmopKTsKIAogICAgIGkgPSAwOwogICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgewotICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJiBCTE9PTV9NRU1CRVIoc2VwbWFzaywgc1tpXSwgc2VwLCBzZXBsZW4pKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuICYmCisgICAgICAgICAgICAgICBCTE9PTV9NRU1CRVIoc2VwbWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSksIHNlcG9iaikpIHsKICAgICAgICAgICAgIGkrKzsKICAgICAgICAgfQogICAgIH0KQEAgLTgxOTEsMjggKzExNjMzLDcwIEBACiAgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKICAgICAgICAgZG8gewogICAgICAgICAgICAgai0tOwotICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgQkxPT01fTUVNQkVSKHNlcG1hc2ssIHNbal0sIHNlcCwgc2VwbGVuKSk7CisgICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJgorICAgICAgICAgICAgICAgICBCTE9PTV9NRU1CRVIoc2VwbWFzaywgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaiksIHNlcG9iaikpOwogICAgICAgICBqKys7CiAgICAgfQogCi0gICAgaWYgKGkgPT0gMCAmJiBqID09IGxlbiAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChzZWxmKSkgewotICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzK2ksIGotaSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9TdWJzdHJpbmcoc2VsZiwgaSwgaik7CiB9CiAKK1B5T2JqZWN0KgorUHlVbmljb2RlX1N1YnN0cmluZyhQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgdW5zaWduZWQgY2hhciAqZGF0YTsKKyAgICBpbnQga2luZDsKKyAgICBQeV9zc2l6ZV90IGxlbmd0aDsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbGVuZ3RoID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CisgICAgZW5kID0gUHlfTUlOKGVuZCwgbGVuZ3RoKTsKKworICAgIGlmIChzdGFydCA9PSAwICYmIGVuZCA9PSBsZW5ndGgpCisgICAgICAgIHJldHVybiB1bmljb2RlX3Jlc3VsdF91bmNoYW5nZWQoc2VsZik7CisKKyAgICBpZiAoc3RhcnQgPCAwIHx8IGVuZCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJzdHJpbmcgaW5kZXggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoIHx8IGVuZCA8IHN0YXJ0KSB7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorCisgICAgbGVuZ3RoID0gZW5kIC0gc3RhcnQ7CisgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkgeworICAgICAgICBkYXRhID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc2VsZik7CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0Zyb21BU0NJSSgoY2hhciopKGRhdGEgKyBzdGFydCksIGxlbmd0aCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VsZik7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfMUJZVEVfREFUQShzZWxmKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tS2luZEFuZERhdGEoa2luZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArIGtpbmQgKiBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoKTsKKyAgICB9Cit9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kb19zdHJpcChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIGludCBzdHJpcHR5cGUpCitkb19zdHJpcChQeU9iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSkKIHsKLSAgICBQeV9VTklDT0RFICpzID0gUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksIGksIGo7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9zc2l6ZV90IGxlbiwgaSwgajsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzZWxmKTsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKIAogICAgIGkgPSAwOwogICAgIGlmIChzdHJpcHR5cGUgIT0gUklHSFRTVFJJUCkgewotICAgICAgICB3aGlsZSAoaSA8IGxlbiAmJiBQeV9VTklDT0RFX0lTU1BBQ0Uoc1tpXSkpIHsKKyAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKSkgewogICAgICAgICAgICAgaSsrOwogICAgICAgICB9CiAgICAgfQpAQCAtODIyMSwyMSArMTE3MDUsMTYgQEAKICAgICBpZiAoc3RyaXB0eXBlICE9IExFRlRTVFJJUCkgewogICAgICAgICBkbyB7CiAgICAgICAgICAgICBqLS07Ci0gICAgICAgIH0gd2hpbGUgKGogPj0gaSAmJiBQeV9VTklDT0RFX0lTU1BBQ0Uoc1tqXSkpOworICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgUHlfVU5JQ09ERV9JU1NQQUNFKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGopKSk7CiAgICAgICAgIGorKzsKICAgICB9CiAKLSAgICBpZiAoaSA9PSAwICYmIGogPT0gbGVuICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopc2VsZjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHMraSwgai1pKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLCBpLCBqKTsKIH0KIAogCiBzdGF0aWMgUHlPYmplY3QgKgotZG9fYXJnc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqYXJncykKK2RvX2FyZ3N0cmlwKFB5T2JqZWN0ICpzZWxmLCBpbnQgc3RyaXB0eXBlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqc2VwID0gTlVMTDsKIApAQCAtODI2NSw3ICsxMTc0NCw3IEBACiBJZiBjaGFycyBpcyBnaXZlbiBhbmQgbm90IE5vbmUsIHJlbW92ZSBjaGFyYWN0ZXJzIGluIGNoYXJzIGluc3RlYWQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3N0cmlwKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3N0cmlwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQogICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgQk9USFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KQEAgLTgyODEsNyArMTE3NjAsNyBAQAogSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9sc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfbHN0cmlwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQogICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgTEVGVFNUUklQKTsgLyogQ29tbW9uIGNhc2UgKi8KQEAgLTgyOTcsNyArMTE3NzYsNyBAQAogSWYgY2hhcnMgaXMgZ2l2ZW4gYW5kIG5vdCBOb25lLCByZW1vdmUgY2hhcmFjdGVycyBpbiBjaGFycyBpbnN0ZWFkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9yc3RyaXAoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcnN0cmlwKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShhcmdzKSA9PSAwKQogICAgICAgICByZXR1cm4gZG9fc3RyaXAoc2VsZiwgUklHSFRTVFJJUCk7IC8qIENvbW1vbiBjYXNlICovCkBAIC04MzA3LDY0ICsxMTc4Niw3NiBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcmVwZWF0KFB5VW5pY29kZU9iamVjdCAqc3RyLCBQeV9zc2l6ZV90IGxlbikKK3VuaWNvZGVfcmVwZWF0KFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgbGVuKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLSAgICBQeV9VTklDT0RFICpwOwotICAgIFB5X3NzaXplX3QgbmNoYXJzOwotICAgIHNpemVfdCBuYnl0ZXM7CisgICAgUHlPYmplY3QgKnU7CisgICAgUHlfc3NpemVfdCBuY2hhcnMsIG47CiAKICAgICBpZiAobGVuIDwgMSkgewogICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKil1bmljb2RlX2VtcHR5OworICAgICAgICByZXR1cm4gdW5pY29kZV9lbXB0eTsKICAgICB9CiAKLSAgICBpZiAobGVuID09IDEgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RyKSkgewotICAgICAgICAvKiBubyByZXBlYXQsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgUHlfSU5DUkVGKHN0cik7Ci0gICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzdHI7Ci0gICAgfQorICAgIC8qIG5vIHJlcGVhdCwgcmV0dXJuIG9yaWdpbmFsIHN0cmluZyAqLworICAgIGlmIChsZW4gPT0gMSkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzdHIpOwogCi0gICAgLyogZW5zdXJlICMgb2YgY2hhcnMgbmVlZGVkIGRvZXNuJ3Qgb3ZlcmZsb3cgaW50IGFuZCAjIG9mIGJ5dGVzCi0gICAgICogbmVlZGVkIGRvZXNuJ3Qgb3ZlcmZsb3cgc2l6ZV90Ci0gICAgICovCi0gICAgbmNoYXJzID0gbGVuICogc3RyLT5sZW5ndGg7Ci0gICAgaWYgKG5jaGFycyAvIGxlbiAhPSBzdHItPmxlbmd0aCkgeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSA+IFBZX1NTSVpFX1RfTUFYIC8gbGVuKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInJlcGVhdGVkIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbmJ5dGVzID0gKG5jaGFycyArIDEpICogc2l6ZW9mKFB5X1VOSUNPREUpOwotICAgIGlmIChuYnl0ZXMgLyBzaXplb2YoUHlfVU5JQ09ERSkgIT0gKHNpemVfdCkobmNoYXJzICsgMSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwZWF0ZWQgc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICB1ID0gX1B5VW5pY29kZV9OZXcobmNoYXJzKTsKKyAgICBuY2hhcnMgPSBsZW4gKiBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworCisgICAgdSA9IFB5VW5pY29kZV9OZXcobmNoYXJzLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUoc3RyKSk7CiAgICAgaWYgKCF1KQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQodSkgPT0gUHlVbmljb2RlX0tJTkQoc3RyKSk7CiAKLSAgICBwID0gdS0+c3RyOwotCi0gICAgaWYgKHN0ci0+bGVuZ3RoID09IDEpIHsKLSAgICAgICAgUHlfVU5JQ09ERV9GSUxMKHAsIHN0ci0+c3RyWzBdLCBsZW4pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIFB5X3NzaXplX3QgZG9uZSA9IHN0ci0+bGVuZ3RoOyAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyBjb3BpZWQgdGhpcyBmYXIgKi8KLSAgICAgICAgUHlfVU5JQ09ERV9DT1BZKHAsIHN0ci0+c3RyLCBzdHItPmxlbmd0aCk7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cikgPT0gMSkgeworICAgICAgICBjb25zdCBpbnQga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAgICAgIGNvbnN0IFB5X1VDUzQgZmlsbF9jaGFyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgUHlVbmljb2RlX0RBVEEoc3RyKSwgMCk7CisgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgICAgICB2b2lkICp0byA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgICAgICAgICAgbWVtc2V0KHRvLCAodW5zaWduZWQgY2hhcilmaWxsX2NoYXIsIGxlbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICAgICAgUHlfVUNTMiAqdWNzMiA9IFB5VW5pY29kZV8yQllURV9EQVRBKHUpOworICAgICAgICAgICAgZm9yIChuID0gMDsgbiA8IGxlbjsgKytuKQorICAgICAgICAgICAgICAgIHVjczJbbl0gPSBmaWxsX2NoYXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBQeV9VQ1M0ICp1Y3M0ID0gUHlVbmljb2RlXzRCWVRFX0RBVEEodSk7CisgICAgICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7CisgICAgICAgICAgICBmb3IgKG4gPSAwOyBuIDwgbGVuOyArK24pCisgICAgICAgICAgICAgICAgdWNzNFtuXSA9IGZpbGxfY2hhcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29waWVkIHRoaXMgZmFyICovCisgICAgICAgIFB5X3NzaXplX3QgZG9uZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgY2hhcl9zaXplID0gUHlVbmljb2RlX0tJTkQoc3RyKTsKKyAgICAgICAgY2hhciAqdG8gPSAoY2hhciAqKSBQeVVuaWNvZGVfREFUQSh1KTsKKyAgICAgICAgUHlfTUVNQ1BZKHRvLCBQeVVuaWNvZGVfREFUQShzdHIpLAorICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAqIGNoYXJfc2l6ZSk7CiAgICAgICAgIHdoaWxlIChkb25lIDwgbmNoYXJzKSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IG4gPSAoZG9uZSA8PSBuY2hhcnMtZG9uZSkgPyBkb25lIDogbmNoYXJzLWRvbmU7Ci0gICAgICAgICAgICBQeV9VTklDT0RFX0NPUFkocCtkb25lLCBwLCBuKTsKKyAgICAgICAgICAgIG4gPSAoZG9uZSA8PSBuY2hhcnMtZG9uZSkgPyBkb25lIDogbmNoYXJzLWRvbmU7CisgICAgICAgICAgICBQeV9NRU1DUFkodG8gKyAoZG9uZSAqIGNoYXJfc2l6ZSksIHRvLCBuICogY2hhcl9zaXplKTsKICAgICAgICAgICAgIGRvbmUgKz0gbjsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QqKSB1OworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodSwgMSkpOworICAgIHJldHVybiB1OwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKm9iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vib2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsb2JqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsb2JqLAorICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKIHsKICAgICBQeU9iamVjdCAqc2VsZjsKICAgICBQeU9iamVjdCAqc3RyMTsKQEAgLTgzODUsMTAgKzExODc2LDEyIEBACiAgICAgICAgIFB5X0RFQ1JFRihzdHIxKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHJlcGxhY2UoKFB5VW5pY29kZU9iamVjdCAqKXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAoUHlVbmljb2RlT2JqZWN0ICopc3RyMSwKLSAgICAgICAgICAgICAgICAgICAgIChQeVVuaWNvZGVPYmplY3QgKilzdHIyLAotICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEgfHwKKyAgICAgICAgUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKKyAgICAgICAgcmVzdWx0ID0gTlVMTDsKKyAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwogICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICBQeV9ERUNSRUYoc3RyMSk7CiAgICAgUHlfREVDUkVGKHN0cjIpOwpAQCAtODQwMywxNzcgKzExODk2LDE4MSBAQAogZ2l2ZW4sIG9ubHkgdGhlIGZpcnN0IGNvdW50IG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9yZXBsYWNlKFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JlcGxhY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3RyMTsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnN0cjI7CisgICAgUHlPYmplY3QgKnN0cjE7CisgICAgUHlPYmplY3QgKnN0cjI7CiAgICAgUHlfc3NpemVfdCBtYXhjb3VudCA9IC0xOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9PfG46cmVwbGFjZSIsICZzdHIxLCAmc3RyMiwgJm1heGNvdW50KSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMSA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdCgoUHlPYmplY3QgKilzdHIxKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdHIxID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMSk7CiAgICAgaWYgKHN0cjEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgc3RyMiA9IChQeVVuaWNvZGVPYmplY3QgKilQeVVuaWNvZGVfRnJvbU9iamVjdCgoUHlPYmplY3QgKilzdHIyKTsKKyAgICBzdHIyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMik7CiAgICAgaWYgKHN0cjIgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc3RyMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyMSkgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cjIpID09IC0xKQorICAgICAgICByZXN1bHQgPSBOVUxMOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShzZWxmLCBzdHIxLCBzdHIyLCBtYXhjb3VudCk7CiAKICAgICBQeV9ERUNSRUYoc3RyMSk7CiAgICAgUHlfREVDUkVGKHN0cjIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYwotUHlPYmplY3QgKnVuaWNvZGVfcmVwcihQeU9iamVjdCAqdW5pY29kZSkKK3N0YXRpYyBQeU9iamVjdCAqCit1bmljb2RlX3JlcHIoUHlPYmplY3QgKnVuaWNvZGUpCiB7CiAgICAgUHlPYmplY3QgKnJlcHI7Ci0gICAgUHlfVU5JQ09ERSAqcDsKLSAgICBQeV9VTklDT0RFICpzID0gUHlVbmljb2RlX0FTX1VOSUNPREUodW5pY29kZSk7Ci0gICAgUHlfc3NpemVfdCBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHVuaWNvZGUpOworICAgIFB5X3NzaXplX3QgaXNpemU7CisgICAgUHlfc3NpemVfdCBvc2l6ZSwgc3F1b3RlLCBkcXVvdGUsIGksIG87CisgICAgUHlfVUNTNCBtYXgsIHF1b3RlOworICAgIGludCBpa2luZCwgb2tpbmQ7CisgICAgdm9pZCAqaWRhdGEsICpvZGF0YTsKIAotICAgIC8qIFhYWChubm9yd2l0eik6IHJhdGhlciB0aGFuIG92ZXItYWxsb2NhdGluZywgaXQgd291bGQgYmUKLSAgICAgICBiZXR0ZXIgdG8gY2hvb3NlIGEgZGlmZmVyZW50IHNjaGVtZS4gIFBlcmhhcHMgc2NhbiB0aGUKLSAgICAgICBmaXJzdCBOLWNoYXJzIG9mIHRoZSBzdHJpbmcgYW5kIGFsbG9jYXRlIGJhc2VkIG9uIHRoYXQgc2l6ZS4KLSAgICAqLwotICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSB1bmljaHIKLSAgICAgICBlc2NhcGUuCi0KLSAgICAgICBJbiB3aWRlIChVVEYtMzIpIGJ1aWxkcyAnXFUwMHh4eHh4eCcgaXMgMTAgY2hhcnMgcGVyIHNvdXJjZQotICAgICAgIHVuaWNociwgc28gaW4gdGhpcyBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyIGVzY2FwZS4gSW4KLSAgICAgICBuYXJyb3cgKFVURi0xNikgYnVpbGRzIHRoaXMgaXMgZml2ZSBjaGFycyBwZXIgc291cmNlIHVuaWNocgotICAgICAgIHNpbmNlIHRoZXJlIGFyZSB0d28gdW5pY2hycyBpbiB0aGUgc3Vycm9nYXRlIHBhaXIsIHNvIGluIG5hcnJvdwotICAgICAgIChVVEYtMTYpIGJ1aWxkcyBpdCdzIG5vdCB0aGUgbG9uZ2VzdCB1bmljaHIgZXNjYXBlLgotCi0gICAgICAgSW4gd2lkZSBvciBuYXJyb3cgYnVpbGRzICdcdXh4eHgnIGlzIDYgY2hhcnMgcGVyIHNvdXJjZSB1bmljaHIsCi0gICAgICAgc28gaW4gdGhlIG5hcnJvdyAoVVRGLTE2KSBidWlsZCBjYXNlIGl0J3MgdGhlIGxvbmdlc3QgdW5pY2hyCi0gICAgICAgZXNjYXBlLgotICAgICovCi0KLSAgICByZXByID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyIC8qIHF1b3RlcyAqLwotI2lmZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxMCpzaXplCi0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyA2KnNpemUKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpOworICAgIGlzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7CisgICAgaWRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKIAotICAgIC8qIEFkZCBxdW90ZSAqLwotICAgICpwKysgPSAoZmluZGNoYXIocywgc2l6ZSwgJ1wnJykgJiYKLSAgICAgICAgICAgICFmaW5kY2hhcihzLCBzaXplLCAnIicpKSA/ICciJyA6ICdcJyc7Ci0gICAgd2hpbGUgKHNpemUtLSA+IDApIHsKLSAgICAgICAgUHlfVU5JQ09ERSBjaCA9ICpzKys7CisgICAgLyogQ29tcHV0ZSBsZW5ndGggb2Ygb3V0cHV0LCBxdW90ZSBjaGFyYWN0ZXJzLCBhbmQKKyAgICAgICBtYXhpbXVtIGNoYXJhY3RlciAqLworICAgIG9zaXplID0gMjsgLyogcXVvdGVzICovCisgICAgbWF4ID0gMTI3OworICAgIHNxdW90ZSA9IGRxdW90ZSA9IDA7CisgICAgaWtpbmQgPSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgaXNpemU7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoaWtpbmQsIGlkYXRhLCBpKTsKKyAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICBjYXNlICdcJyc6IHNxdW90ZSsrOyBvc2l6ZSsrOyBicmVhazsKKyAgICAgICAgY2FzZSAnIic6ICBkcXVvdGUrKzsgb3NpemUrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXHQnOiBjYXNlICdccic6IGNhc2UgJ1xuJzoKKyAgICAgICAgICAgIG9zaXplICs9IDI7IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogRmFzdC1wYXRoIEFTQ0lJICovCisgICAgICAgICAgICBpZiAoY2ggPCAnICcgfHwgY2ggPT0gMHg3ZikKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSA0OyAvKiBceEhIICovCisgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDB4N2YpCisgICAgICAgICAgICAgICAgb3NpemUrKzsKKyAgICAgICAgICAgIGVsc2UgaWYgKFB5X1VOSUNPREVfSVNQUklOVEFCTEUoY2gpKSB7CisgICAgICAgICAgICAgICAgb3NpemUrKzsKKyAgICAgICAgICAgICAgICBtYXggPSBjaCA+IG1heCA/IGNoIDogbWF4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMCkKKyAgICAgICAgICAgICAgICBvc2l6ZSArPSA0OyAvKiBceEhIICovCisgICAgICAgICAgICBlbHNlIGlmIChjaCA8IDB4MTAwMDApCisgICAgICAgICAgICAgICAgb3NpemUgKz0gNjsgLyogXHVISEhIICovCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3NpemUgKz0gMTA7IC8qIFx1SEhISEhISEggKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIHF1b3RlID0gJ1wnJzsKKyAgICBpZiAoc3F1b3RlKSB7CisgICAgICAgIGlmIChkcXVvdGUpCisgICAgICAgICAgICAvKiBCb3RoIHNxdW90ZSBhbmQgZHF1b3RlIHByZXNlbnQuIFVzZSBzcXVvdGUsCisgICAgICAgICAgICAgICBhbmQgZXNjYXBlIHRoZW0gKi8KKyAgICAgICAgICAgIG9zaXplICs9IHNxdW90ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcXVvdGUgPSAnIic7CisgICAgfQorCisgICAgcmVwciA9IFB5VW5pY29kZV9OZXcob3NpemUsIG1heCk7CisgICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgb2tpbmQgPSBQeVVuaWNvZGVfS0lORChyZXByKTsKKyAgICBvZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcHIpOworCisgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgMCwgcXVvdGUpOworICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG9zaXplLTEsIHF1b3RlKTsKKworICAgIGZvciAoaSA9IDAsIG8gPSAxOyBpIDwgaXNpemU7IGkrKykgeworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoaWtpbmQsIGlkYXRhLCBpKTsKIAogICAgICAgICAvKiBFc2NhcGUgcXVvdGVzIGFuZCBiYWNrc2xhc2hlcyAqLwotICAgICAgICBpZiAoKGNoID09IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpWzBdKSB8fCAoY2ggPT0gJ1xcJykpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9IGNoOworICAgICAgICBpZiAoKGNoID09IHF1b3RlKSB8fCAoY2ggPT0gJ1xcJykpIHsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIGNoKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KICAgICAgICAgaWYgKGNoID09ICdcdCcpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd0JzsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICd0Jyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ24nOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ24nKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAncic7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssICdcXCcpOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAncicpOwogICAgICAgICB9CiAKICAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgdG8gJ1x4aGgnICovCiAgICAgICAgIGVsc2UgaWYgKGNoIDwgJyAnIHx8IGNoID09IDB4N0YpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAweDAwMEZdOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAnXFwnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3gnKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl0pOworICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIENvcHkgQVNDSUkgY2hhcmFjdGVycyBhcy1pcyAqLwogICAgICAgICBlbHNlIGlmIChjaCA8IDB4N0YpIHsKLSAgICAgICAgICAgICpwKysgPSBjaDsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgY2gpOwogICAgICAgICB9CiAKICAgICAgICAgLyogTm9uLUFTQ0lJIGNoYXJhY3RlcnMgKi8KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9VQ1M0IHVjcyA9IGNoOwotCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICAgICAgUHlfVU5JQ09ERSBjaDIgPSAwOwotICAgICAgICAgICAgLyogR2V0IGNvZGUgcG9pbnQgZnJvbSBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgaWYgKHNpemUgPiAwKSB7Ci0gICAgICAgICAgICAgICAgY2gyID0gKnM7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID49IDB4RDgwMCAmJiBjaCA8IDB4REMwMCAmJiBjaDIgPj0gMHhEQzAwCi0gICAgICAgICAgICAgICAgICAgICYmIGNoMiA8PSAweERGRkYpIHsKLSAgICAgICAgICAgICAgICAgICAgdWNzID0gKCgoY2ggJiAweDAzRkYpIDw8IDEwKSB8IChjaDIgJiAweDAzRkYpKQotICAgICAgICAgICAgICAgICAgICAgICAgKyAweDAwMDEwMDAwOwotICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKICAgICAgICAgICAgIC8qIE1hcCBVbmljb2RlIHdoaXRlc3BhY2UgYW5kIGNvbnRyb2wgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgKGNhdGVnb3JpZXMgWiogYW5kIEMqIGV4Y2VwdCBBU0NJSSBzcGFjZSkKICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNQUklOVEFCTEUodWNzKSkgeworICAgICAgICAgICAgaWYgKCFQeV9VTklDT0RFX0lTUFJJTlRBQkxFKGNoKSkgeworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1xcJyk7CiAgICAgICAgICAgICAgICAgLyogTWFwIDgtYml0IGNoYXJhY3RlcnMgdG8gJ1x4aGgnICovCi0gICAgICAgICAgICAgICAgaWYgKHVjcyA8PSAweGZmKSB7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyhjaCA+PiA0KSAmIDB4MDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbY2ggJiAweDAwMEZdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgICAgICAgICAgZWxzZSBpZiAodWNzID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9IGhleGRpZ2l0c1sodWNzID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbdWNzICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAgICAgaWYgKGNoIDw9IDB4ZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCAneCcpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPD0gMHhmZmZmKSB7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ3UnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzW2NoICYgMHhGXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMHh4eHh4eCcgKi8KICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSAndSc7Ci0gICAgICAgICAgICAgICAgICAgICpwKysgPSBoZXhkaWdpdHNbKHVjcyA+PiAxMikgJiAweDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gOCkgJiAweDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzWyh1Y3MgPj4gNCkgJiAweDAwMEZdOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gaGV4ZGlnaXRzW3VjcyAmIDB4MDAwRl07CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgJ1UnKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMjQpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhGXSk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShva2luZCwgb2RhdGEsIG8rKywgUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4Rl0pOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUob2tpbmQsIG9kYXRhLCBvKyssIFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweEZdKTsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBQeV9oZXhkaWdpdHNbY2ggJiAweEZdKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBDb3B5IGNoYXJhY3RlcnMgYXMtaXMgKi8KICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICpwKysgPSBjaDsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKHVjcyA+PSAweDEwMDAwKQotICAgICAgICAgICAgICAgICAgICAqcCsrID0gY2gyOwotI2VuZGlmCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKG9raW5kLCBvZGF0YSwgbysrLCBjaCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogQWRkIHF1b3RlICovCi0gICAgKnArKyA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcHIpWzBdOwotCi0gICAgKnAgPSAnXDAnOwotICAgIFB5VW5pY29kZV9SZXNpemUoJnJlcHIsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXByKSk7CisgICAgLyogQ2xvc2luZyBxdW90ZSBhbHJlYWR5IGFkZGVkIGF0IHRoZSBiZWdpbm5pbmcgKi8KKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcHIsIDEpKTsKICAgICByZXR1cm4gcmVwcjsKIH0KIApAQCAtODU4Nyw5ICsxMjA4NCw5IEBACiBSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcmZpbmQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfcmZpbmQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqc3Vic3RyaW5nOworICAgIFB5T2JqZWN0ICpzdWJzdHJpbmc7CiAgICAgUHlfc3NpemVfdCBzdGFydDsKICAgICBQeV9zc2l6ZV90IGVuZDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKQEAgLTg1OTgsMTQgKzEyMDk1LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmVzdWx0ID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZWxmKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdWJzdHJpbmcpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc3Vic3RyaW5nKSwKLSAgICAgICAgc3RhcnQsIGVuZAotICAgICAgICApOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKIAogICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogCisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CiB9CiAKQEAgLTg2MTUsOSArMTIxMTYsOSBAQAogTGlrZSBTLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXVuaWNvZGVfcmluZGV4KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JpbmRleChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5X3NzaXplX3QgcmVzdWx0OwpAQCAtODYyNiwxOCArMTIxMjcsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXN1bHQgPSBzdHJpbmdsaWJfcmZpbmRfc2xpY2UoCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHN1YnN0cmluZyksIFB5VW5pY29kZV9HRVRfU0laRShzdWJzdHJpbmcpLAotICAgICAgICBzdGFydCwgZW5kCi0gICAgICAgICk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKC0xLCBzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQpOwogCiAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKICAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7CiB9CiAKQEAgLTg2NDgsMjUgKzEyMTU0LDI1IEBACiBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgZmlsbCBjaGFyYWN0ZXIgKGRlZmF1bHQgaXMgYSBzcGFjZSkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3JqdXN0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JqdXN0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeV9zc2l6ZV90IHdpZHRoOwotICAgIFB5X1VOSUNPREUgZmlsbGNoYXIgPSAnICc7CisgICAgUHlfVUNTNCBmaWxsY2hhciA9ICcgJzsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibnxPJjpyanVzdCIsICZ3aWR0aCwgY29udmVydF91YywgJmZpbGxjaGFyKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoc2VsZi0+bGVuZ3RoID49IHdpZHRoICYmIFB5VW5pY29kZV9DaGVja0V4YWN0KHNlbGYpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIChQeU9iamVjdCopIHNlbGY7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIChQeU9iamVjdCopIHBhZChzZWxmLCB3aWR0aCAtIHNlbGYtPmxlbmd0aCwgMCwgZmlsbGNoYXIpOworICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSA+PSB3aWR0aCkKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKKworICAgIHJldHVybiBwYWQoc2VsZiwgd2lkdGggLSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSwgMCwgZmlsbGNoYXIpOwogfQogCi1QeU9iamVjdCAqUHlVbmljb2RlX1NwbGl0KFB5T2JqZWN0ICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqc2VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KQorUHlPYmplY3QgKgorUHlVbmljb2RlX1NwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKQEAgLTg2ODEsNyArMTIxODcsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmVzdWx0ID0gc3BsaXQoKFB5VW5pY29kZU9iamVjdCAqKXMsIChQeVVuaWNvZGVPYmplY3QgKilzZXAsIG1heHNwbGl0KTsKKyAgICByZXN1bHQgPSBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIAogICAgIFB5X0RFQ1JFRihzKTsKICAgICBQeV9YREVDUkVGKHNlcCk7CkBAIC04Njg5LDcgKzEyMTk1LDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKLSAgICAgICAgICAgICAiUy5zcGxpdChbc2VwWywgbWF4c3BsaXRdXSkgLT4gbGlzdCBvZiBzdHJpbmdzXG5cCisgICAgICAgICAgICAgIlMuc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKSAtPiBsaXN0IG9mIHN0cmluZ3NcblwKIFxuXAogUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gUywgdXNpbmcgc2VwIGFzIHRoZVxuXAogZGVsaW1pdGVyIHN0cmluZy4gIElmIG1heHNwbGl0IGlzIGdpdmVuLCBhdCBtb3N0IG1heHNwbGl0XG5cCkBAIC04Njk4LDIwICsxMjIwNCwyMiBAQAogcmVtb3ZlZCBmcm9tIHRoZSByZXN1bHQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfc3BsaXQoUHlVbmljb2RlT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3VuaWNvZGVfc3BsaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJtYXhzcGxpdCIsIDB9OwogICAgIFB5T2JqZWN0ICpzdWJzdHJpbmcgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE9uOnNwbGl0IiwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnNwbGl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZzdWJzdHJpbmcsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwogICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQotICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgKFB5VW5pY29kZU9iamVjdCAqKXN1YnN0cmluZywgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0KChQeU9iamVjdCAqKXNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwogfQogCiBQeU9iamVjdCAqCkBAIC04NzIwLDYgKzEyMjI4LDkgQEAKICAgICBQeU9iamVjdCogc3RyX29iajsKICAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OworICAgIGludCBraW5kMSwga2luZDIsIGtpbmQ7CisgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKICAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKICAgICBpZiAoIXN0cl9vYmopCkBAIC04NzI5LDE2ICsxMjI0MCw2MiBAQAogICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlcF9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7CisgICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgb3V0ID0gc3RyaW5nbGliX3BhcnRpdGlvbigKLSAgICAgICAgc3RyX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc3RyX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzdHJfb2JqKSwKLSAgICAgICAgc2VwX29iaiwgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VwX29iaiksIFB5VW5pY29kZV9HRVRfU0laRShzZXBfb2JqKQotICAgICAgICApOworICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKKyAgICBraW5kID0gUHlfTUFYKGtpbmQxLCBraW5kMik7CisgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyX29iaiwga2luZCk7CisgICAgaWYgKCFidWYxKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHNlcF9vYmopOworICAgIGlmIChraW5kMiAhPSBraW5kKQorICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZCk7CisgICAgaWYgKCFidWYyKQorICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cl9vYmopOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXBfb2JqKTsKKworICAgIHN3aXRjaCAoUHlVbmljb2RlX0tJTkQoc3RyX29iaikpIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cl9vYmopICYmIFB5VW5pY29kZV9JU19BU0NJSShzZXBfb2JqKSkKKyAgICAgICAgICAgIG91dCA9IGFzY2lpbGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb3V0ID0gdWNzMWxpYl9wYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfcGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFB5VW5pY29kZV80QllURV9LSU5EOgorICAgICAgICBvdXQgPSB1Y3M0bGliX3BhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KDApOworICAgICAgICBvdXQgPSAwOworICAgIH0KIAogICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMSk7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKICAgICByZXR1cm4gb3V0OworICBvbkVycm9yOgorICAgIFB5X0RFQ1JFRihzZXBfb2JqKTsKKyAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGtpbmQxICE9IGtpbmQgJiYgYnVmMSkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCAmJiBidWYyKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOworICAgIHJldHVybiBOVUxMOwogfQogCiAKQEAgLTg3NDgsNiArMTIzMDUsOSBAQAogICAgIFB5T2JqZWN0KiBzdHJfb2JqOwogICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CisgICAgaW50IGtpbmQxLCBraW5kMiwga2luZDsKKyAgICB2b2lkICpidWYxID0gTlVMTCwgKmJ1ZjIgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMjsKIAogICAgIHN0cl9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHJfaW4pOwogICAgIGlmICghc3RyX29iaikKQEAgLTg3NTgsMTUgKzEyMzE4LDU2IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIG91dCA9IHN0cmluZ2xpYl9ycGFydGl0aW9uKAotICAgICAgICBzdHJfb2JqLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzdHJfb2JqKSwgUHlVbmljb2RlX0dFVF9TSVpFKHN0cl9vYmopLAotICAgICAgICBzZXBfb2JqLCBQeVVuaWNvZGVfQVNfVU5JQ09ERShzZXBfb2JqKSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlcF9vYmopCi0gICAgICAgICk7CisgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHJfaW4pOworICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc2VwX29iaik7CisgICAga2luZCA9IFB5X01BWChraW5kMSwga2luZDIpOworICAgIGJ1ZjEgPSBQeVVuaWNvZGVfREFUQShzdHJfaW4pOworICAgIGlmIChraW5kMSAhPSBraW5kKQorICAgICAgICBidWYxID0gX1B5VW5pY29kZV9Bc0tpbmQoc3RyX2luLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjEpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc2VwX29iaik7CisgICAgaWYgKGtpbmQyICE9IGtpbmQpCisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzZXBfb2JqLCBraW5kKTsKKyAgICBpZiAoIWJ1ZjIpCisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7CisgICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlcF9vYmopOworCisgICAgc3dpdGNoIChQeVVuaWNvZGVfS0lORChzdHJfaW4pKSB7CisgICAgY2FzZSBQeVVuaWNvZGVfMUJZVEVfS0lORDoKKyAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShzdHJfb2JqKSAmJiBQeVVuaWNvZGVfSVNfQVNDSUkoc2VwX29iaikpCisgICAgICAgICAgICBvdXQgPSBhc2NpaWxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvdXQgPSB1Y3MxbGliX3JwYXJ0aXRpb24oc3RyX29iaiwgYnVmMSwgbGVuMSwgc2VwX29iaiwgYnVmMiwgbGVuMik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6CisgICAgICAgIG91dCA9IHVjczJsaWJfcnBhcnRpdGlvbihzdHJfb2JqLCBidWYxLCBsZW4xLCBzZXBfb2JqLCBidWYyLCBsZW4yKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKKyAgICAgICAgb3V0ID0gdWNzNGxpYl9ycGFydGl0aW9uKHN0cl9vYmosIGJ1ZjEsIGxlbjEsIHNlcF9vYmosIGJ1ZjIsIGxlbjIpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgIG91dCA9IDA7CisgICAgfQogCiAgICAgUHlfREVDUkVGKHNlcF9vYmopOwogICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYxKTsKKyAgICBpZiAoa2luZDIgIT0ga2luZCkKKyAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7CisgIG9uRXJyb3I6CisgICAgUHlfREVDUkVGKHNlcF9vYmopOworICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBpZiAoa2luZDEgIT0ga2luZCAmJiBidWYxKQorICAgICAgICBQeU1lbV9GcmVlKGJ1ZjEpOworICAgIGlmIChraW5kMiAhPSBraW5kICYmIGJ1ZjIpCisgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihwYXJ0aXRpb25fX2RvY19fLApAQCAtODc3Nyw5ICsxMjM3OCw5IEBACiBmb3VuZCwgcmV0dXJuIFMgYW5kIHR3byBlbXB0eSBzdHJpbmdzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3BhcnRpdGlvbihQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBhcmF0b3IpCit1bmljb2RlX3BhcnRpdGlvbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcGFyYXRvcikKIHsKLSAgICByZXR1cm4gUHlVbmljb2RlX1BhcnRpdGlvbigoUHlPYmplY3QgKilzZWxmLCBzZXBhcmF0b3IpOworICAgIHJldHVybiBQeVVuaWNvZGVfUGFydGl0aW9uKHNlbGYsIHNlcGFyYXRvcik7CiB9CiAKIFB5RG9jX1NUUlZBUihycGFydGl0aW9uX19kb2NfXywKQEAgLTg3OTAsMTQgKzEyMzkxLDEzIEBACiBzZXBhcmF0b3IgaXMgbm90IGZvdW5kLCByZXR1cm4gdHdvIGVtcHR5IHN0cmluZ3MgYW5kIFMuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcnBhcnRpdGlvbihQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBhcmF0b3IpCit1bmljb2RlX3JwYXJ0aXRpb24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXBhcmF0b3IpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9SUGFydGl0aW9uKChQeU9iamVjdCAqKXNlbGYsIHNlcGFyYXRvcik7CisgICAgcmV0dXJuIFB5VW5pY29kZV9SUGFydGl0aW9uKHNlbGYsIHNlcGFyYXRvcik7CiB9CiAKLVB5T2JqZWN0ICpQeVVuaWNvZGVfUlNwbGl0KFB5T2JqZWN0ICpzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4c3BsaXQpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfUlNwbGl0KFB5T2JqZWN0ICpzLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKQEAgLTg4MTIsNyArMTI0MTIsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmVzdWx0ID0gcnNwbGl0KChQeVVuaWNvZGVPYmplY3QgKilzLCAoUHlVbmljb2RlT2JqZWN0ICopc2VwLCBtYXhzcGxpdCk7CisgICAgcmVzdWx0ID0gcnNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwogCiAgICAgUHlfREVDUkVGKHMpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKQEAgLTg4MjAsNyArMTI0MjAsNyBAQAogfQogCiBQeURvY19TVFJWQVIocnNwbGl0X19kb2NfXywKLSAgICAgICAgICAgICAiUy5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAorICAgICAgICAgICAgICJTLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAogXG5cCiBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiBTLCB1c2luZyBzZXAgYXMgdGhlXG5cCiBkZWxpbWl0ZXIgc3RyaW5nLCBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYW5kXG5cCkBAIC04ODI5LDIwICsxMjQyOSwyMiBAQAogaXMgYSBzZXBhcmF0b3IuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfcnNwbGl0KFB5VW5pY29kZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX3JzcGxpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogeworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsic2VwIiwgIm1heHNwbGl0IiwgMH07CiAgICAgUHlPYmplY3QgKnN1YnN0cmluZyA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhjb3VudCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8T246cnNwbGl0IiwgJnN1YnN0cmluZywgJm1heGNvdW50KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9uOnJzcGxpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc3Vic3RyaW5nLCAmbWF4Y291bnQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7CiAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCi0gICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgKFB5VW5pY29kZU9iamVjdCAqKXN1YnN0cmluZywgbWF4Y291bnQpOworICAgICAgICByZXR1cm4gcnNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwogICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9SU3BsaXQoKFB5T2JqZWN0ICopc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7CisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfUlNwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOwogfQogCiBQeURvY19TVFJWQVIoc3BsaXRsaW5lc19fZG9jX18sCkBAIC04ODUzLDI2ICsxMjQ1NSwyMiBAQAogaXMgZ2l2ZW4gYW5kIHRydWUuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfc3BsaXRsaW5lcyhQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV9zcGxpdGxpbmVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CisgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJrZWVwZW5kcyIsIDB9OwogICAgIGludCBrZWVwZW5kcyA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOnNwbGl0bGluZXMiLCAma2VlcGVuZHMpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8aTpzcGxpdGxpbmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZrZWVwZW5kcykpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgcmV0dXJuIFB5VW5pY29kZV9TcGxpdGxpbmVzKChQeU9iamVjdCAqKXNlbGYsIGtlZXBlbmRzKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0bGluZXMoc2VsZiwga2VlcGVuZHMpOwogfQogCiBzdGF0aWMKIFB5T2JqZWN0ICp1bmljb2RlX3N0cihQeU9iamVjdCAqc2VsZikKIHsKLSAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICB9IGVsc2UKLSAgICAgICAgLyogU3VidHlwZSAtLSByZXR1cm4gZ2VudWluZSB1bmljb2RlIHN0cmluZyB3aXRoIHRoZSBzYW1lIHZhbHVlLiAqLwotICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Vbmljb2RlKFB5VW5pY29kZV9BU19VTklDT0RFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSk7CisgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKIH0KIAogUHlEb2NfU1RSVkFSKHN3YXBjYXNlX19kb2NfXywKQEAgLTg4ODIsOSArMTI0ODAsMTEgQEAKIGFuZCB2aWNlIHZlcnNhLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3N3YXBjYXNlKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfc3dhcGNhc2UoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeHN3YXBjYXNlKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gY2FzZV9vcGVyYXRpb24oc2VsZiwgZG9fc3dhcGNhc2UpOwogfQogCiBQeURvY19TVFJWQVIobWFrZXRyYW5zX19kb2NfXywKQEAgLTg5MDAsNyArMTI1MDAsNyBAQAogbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0byBOb25lIGluIHRoZSByZXN1bHQuIik7CiAKIHN0YXRpYyBQeU9iamVjdCoKLXVuaWNvZGVfbWFrZXRyYW5zKFB5VW5pY29kZU9iamVjdCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCit1bmljb2RlX21ha2V0cmFucyhQeU9iamVjdCAqbnVsbCwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKngsICp5ID0gTlVMTCwgKnogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuZXcgPSBOVUxMLCAqa2V5LCAqdmFsdWU7CkBAIC04OTEzLDI0ICsxMjUxMywzMCBAQAogICAgIGlmICghbmV3KQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoeSAhPSBOVUxMKSB7CisgICAgICAgIGludCB4X2tpbmQsIHlfa2luZCwgel9raW5kOworICAgICAgICB2b2lkICp4X2RhdGEsICp5X2RhdGEsICp6X2RhdGE7CisKICAgICAgICAgLyogeCBtdXN0IGJlIGEgc3RyaW5nIHRvbywgb2YgZXF1YWwgbGVuZ3RoICovCi0gICAgICAgIFB5X3NzaXplX3QgeWxlbiA9IFB5VW5pY29kZV9HRVRfU0laRSh5KTsKICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soeCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJmaXJzdCBtYWtldHJhbnMgYXJndW1lbnQgbXVzdCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlIGEgc3RyaW5nIGlmIHRoZXJlIGlzIGEgc2Vjb25kIGFyZ3VtZW50Iik7CiAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9TSVpFKHgpICE9IHlsZW4pIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHgpICE9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHkpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInRoZSBmaXJzdCB0d28gbWFrZXRyYW5zICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnRzIG11c3QgaGF2ZSBlcXVhbCBsZW5ndGgiKTsKICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICB9CiAgICAgICAgIC8qIGNyZWF0ZSBlbnRyaWVzIGZvciB0cmFuc2xhdGluZyBjaGFycyBpbiB4IHRvIHRob3NlIGluIHkgKi8KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VW5pY29kZV9HRVRfU0laRSh4KTsgaSsrKSB7Ci0gICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0FTX1VOSUNPREUoeClbaV0pOworICAgICAgICB4X2tpbmQgPSBQeVVuaWNvZGVfS0lORCh4KTsKKyAgICAgICAgeV9raW5kID0gUHlVbmljb2RlX0tJTkQoeSk7CisgICAgICAgIHhfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHgpOworICAgICAgICB5X2RhdGEgPSBQeVVuaWNvZGVfREFUQSh5KTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHgpOyBpKyspIHsKKyAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfUkVBRCh4X2tpbmQsIHhfZGF0YSwgaSkpOwogICAgICAgICAgICAgaWYgKCFrZXkpCiAgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgICAgICB2YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh5KVtpXSk7CisgICAgICAgICAgICB2YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfUkVBRCh5X2tpbmQsIHlfZGF0YSwgaSkpOwogICAgICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyOwpAQCAtODk0Myw4ICsxMjU0OSwxMCBAQAogICAgICAgICB9CiAgICAgICAgIC8qIGNyZWF0ZSBlbnRyaWVzIGZvciBkZWxldGluZyBjaGFycyBpbiB6ICovCiAgICAgICAgIGlmICh6ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVVuaWNvZGVfR0VUX1NJWkUoeik7IGkrKykgewotICAgICAgICAgICAgICAgIGtleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfQVNfVU5JQ09ERSh6KVtpXSk7CisgICAgICAgICAgICB6X2tpbmQgPSBQeVVuaWNvZGVfS0lORCh6KTsKKyAgICAgICAgICAgIHpfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHopOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKHopOyBpKyspIHsKKyAgICAgICAgICAgICAgICBrZXkgPSBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX1JFQUQoel9raW5kLCB6X2RhdGEsIGkpKTsKICAgICAgICAgICAgICAgICBpZiAoIWtleSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAgcmVzID0gUHlEaWN0X1NldEl0ZW0obmV3LCBrZXksIFB5X05vbmUpOwpAQCAtODk1NCw2ICsxMjU2Miw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgeworICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKKwogICAgICAgICAvKiB4IG11c3QgYmUgYSBkaWN0ICovCiAgICAgICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3QoeCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpZiB5b3UgZ2l2ZSBvbmx5IG9uZSBhcmd1bWVudCAiCkBAIC04OTY1LDEyICsxMjU3NiwxNCBAQAogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpKSB7CiAgICAgICAgICAgICAgICAgLyogY29udmVydCBzdHJpbmcga2V5cyB0byBpbnRlZ2VyIGtleXMgKi8KICAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmV3a2V5OwotICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUoa2V5KSAhPSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKGtleSkgIT0gMSkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInN0cmluZyBrZXlzIGluIHRyYW5zbGF0ZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFibGUgbXVzdCBiZSBvZiBsZW5ndGggMSIpOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmV3a2V5ID0gUHlMb25nX0Zyb21Mb25nKFB5VW5pY29kZV9BU19VTklDT0RFKGtleSlbMF0pOworICAgICAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChrZXkpOworICAgICAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShrZXkpOworICAgICAgICAgICAgICAgIG5ld2tleSA9IFB5TG9uZ19Gcm9tTG9uZyhQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCAwKSk7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXdrZXkpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtKG5ldywgbmV3a2V5LCB2YWx1ZSk7CkBAIC05MDA0LDkgKzEyNjE3LDkgQEAKIGFyZSBkZWxldGVkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3RyYW5zbGF0ZShQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSkKK3VuaWNvZGVfdHJhbnNsYXRlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUpCiB7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHNlbGYtPnN0ciwgc2VsZi0+bGVuZ3RoLCB0YWJsZSwgImlnbm9yZSIpOworICAgIHJldHVybiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc2VsZiwgdGFibGUsICJpZ25vcmUiKTsKIH0KIAogUHlEb2NfU1RSVkFSKHVwcGVyX19kb2NfXywKQEAgLTkwMTUsOSArMTI2MjgsMTMgQEAKIFJldHVybiBhIGNvcHkgb2YgUyBjb252ZXJ0ZWQgdG8gdXBwZXJjYXNlLiIpOwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3VwcGVyKFB5VW5pY29kZU9iamVjdCAqc2VsZikKK3VuaWNvZGVfdXBwZXIoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgcmV0dXJuIGZpeHVwKHNlbGYsIGZpeHVwcGVyKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHNlbGYpKQorICAgICAgICByZXR1cm4gYXNjaWlfdXBwZXJfb3JfbG93ZXIoc2VsZiwgMCk7CisgICAgcmV0dXJuIGNhc2Vfb3BlcmF0aW9uKHNlbGYsIGRvX3VwcGVyKTsKIH0KIAogUHlEb2NfU1RSVkFSKHpmaWxsX19kb2NfXywKQEAgLTkwMjcsNTUgKzEyNjQ0LDUwIEBACiBvZiB0aGUgc3BlY2lmaWVkIHdpZHRoLiBUaGUgc3RyaW5nIFMgaXMgbmV2ZXIgdHJ1bmNhdGVkLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV96ZmlsbChQeVVuaWNvZGVPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQordW5pY29kZV96ZmlsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlfc3NpemVfdCBmaWxsOwotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQorICAgIFB5T2JqZWN0ICp1OwogICAgIFB5X3NzaXplX3Qgd2lkdGg7CisgICAgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKKyAgICBQeV9VQ1M0IGNocjsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibjp6ZmlsbCIsICZ3aWR0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKHNlbGYtPmxlbmd0aCA+PSB3aWR0aCkgewotICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpCi0gICAgICAgICAgICAgICAgKTsKLSAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmaWxsID0gd2lkdGggLSBzZWxmLT5sZW5ndGg7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpID49IHdpZHRoKQorICAgICAgICByZXR1cm4gdW5pY29kZV9yZXN1bHRfdW5jaGFuZ2VkKHNlbGYpOworCisgICAgZmlsbCA9IHdpZHRoIC0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZik7CiAKICAgICB1ID0gcGFkKHNlbGYsIGZpbGwsIDAsICcwJyk7CiAKICAgICBpZiAodSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICh1LT5zdHJbZmlsbF0gPT0gJysnIHx8IHUtPnN0cltmaWxsXSA9PSAnLScpIHsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHUpOworICAgIGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGZpbGwpOworCisgICAgaWYgKGNociA9PSAnKycgfHwgY2hyID09ICctJykgewogICAgICAgICAvKiBtb3ZlIHNpZ24gdG8gYmVnaW5uaW5nIG9mIHN0cmluZyAqLwotICAgICAgICB1LT5zdHJbMF0gPSB1LT5zdHJbZmlsbF07Ci0gICAgICAgIHUtPnN0cltmaWxsXSA9ICcwJzsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIDAsIGNocik7CisgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBmaWxsLCAnMCcpOwogICAgIH0KIAotICAgIHJldHVybiAoUHlPYmplY3QqKSB1OworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kodSwgMSkpOworICAgIHJldHVybiB1OwogfQogCiAjaWYgMAotc3RhdGljIFB5T2JqZWN0KgotdW5pY29kZV9mcmVlbGlzdHNpemUoUHlVbmljb2RlT2JqZWN0ICpzZWxmKQotewotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcobnVtZnJlZSk7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX19kZWNpbWFsMmFzY2lpKFB5T2JqZWN0ICpzZWxmKQogewotICAgIHJldHVybiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbFRvQVNDSUkoUHlVbmljb2RlX0FTX1VOSUNPREUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoc2VsZikpOworICAgIHJldHVybiBQeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSShzZWxmKTsKIH0KICNlbmRpZgogCkBAIC05MDg4LDExICsxMjcwMCwxMSBAQAogcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3RyaW5ncyB0byB0cnkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX3N0YXJ0c3dpdGgoUHlVbmljb2RlT2JqZWN0ICpzZWxmLAordW5pY29kZV9zdGFydHN3aXRoKFB5T2JqZWN0ICpzZWxmLAogICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwogICAgIGludCByZXN1bHQ7CkBAIC05MTAyLDggKzEyNzE0LDcgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7CiAgICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7CkBAIC05MTE1LDcgKzEyNzI2LDcgQEAKICAgICAgICAgLyogbm90aGluZyBtYXRjaGVkICovCiAgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKICAgICB9Ci0gICAgc3Vic3RyaW5nID0gKFB5VW5pY29kZU9iamVjdCAqKVB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1Ym9iaik7CisgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdGFydHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCkBAIC05MTM3LDExICsxMjc0OCwxMSBAQAogc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3RyaW5ncyB0byB0cnkuIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2VuZHN3aXRoKFB5VW5pY29kZU9iamVjdCAqc2VsZiwKK3VuaWNvZGVfZW5kc3dpdGgoUHlPYmplY3QgKnNlbGYsCiAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzdWJzdHJpbmc7CisgICAgUHlPYmplY3QgKnN1YnN0cmluZzsKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwogICAgIGludCByZXN1bHQ7CkBAIC05MTUxLDcgKzEyNzYyLDcgQEAKICAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CiAgICAgICAgIFB5X3NzaXplX3QgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICBzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3QoCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdCgKICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSkpOwogICAgICAgICAgICAgaWYgKHN1YnN0cmluZyA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTE2Myw3ICsxMjc3NCw3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSAoUHlVbmljb2RlT2JqZWN0ICopUHlVbmljb2RlX0Zyb21PYmplY3Qoc3Vib2JqKTsKKyAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwogICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCkBAIC05MTc1LDcgKzEyNzg2LDE2MCBAQAogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKIH0KIAotI2luY2x1ZGUgInN0cmluZ2xpYi9zdHJpbmdfZm9ybWF0LmgiCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK19QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKK3sKKyAgICB3cml0ZXItPnNpemUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5tYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHdyaXRlci0+YnVmZmVyKTsKKyAgICB3cml0ZXItPmRhdGEgPSBQeVVuaWNvZGVfREFUQSh3cml0ZXItPmJ1ZmZlcik7CisgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX0tJTkQod3JpdGVyLT5idWZmZXIpOworfQorCit2b2lkCitfUHlVbmljb2RlV3JpdGVyX0luaXQoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeV9zc2l6ZV90IG1pbl9sZW5ndGgpCit7CisgICAgbWVtc2V0KHdyaXRlciwgMCwgc2l6ZW9mKCp3cml0ZXIpKTsKKyNpZmRlZiBQeV9ERUJVRworICAgIHdyaXRlci0+a2luZCA9IDU7ICAgIC8qIGludmFsaWQga2luZCAqLworI2VuZGlmCisgICAgd3JpdGVyLT5taW5fbGVuZ3RoID0gUHlfTUFYKG1pbl9sZW5ndGgsIDEwMCk7CisgICAgd3JpdGVyLT5vdmVyYWxsb2NhdGUgPSAobWluX2xlbmd0aCA+IDApOworfQorCitpbnQKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBuZXdsZW47CisgICAgUHlPYmplY3QgKm5ld2J1ZmZlcjsKKworICAgIGFzc2VydChsZW5ndGggPiAwKTsKKworICAgIGlmIChsZW5ndGggPiBQWV9TU0laRV9UX01BWCAtIHdyaXRlci0+cG9zKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgbmV3bGVuID0gd3JpdGVyLT5wb3MgKyBsZW5ndGg7CisKKyAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCkgeworICAgICAgICBpZiAod3JpdGVyLT5vdmVyYWxsb2NhdGUpIHsKKyAgICAgICAgICAgIC8qIG92ZXJhbGxvY2F0ZSAyNSUgdG8gbGltaXQgdGhlIG51bWJlciBvZiByZXNpemUgKi8KKyAgICAgICAgICAgIGlmIChuZXdsZW4gPD0gKFBZX1NTSVpFX1RfTUFYIC0gbmV3bGVuIC8gNCkpCisgICAgICAgICAgICAgICAgbmV3bGVuICs9IG5ld2xlbiAvIDQ7CisgICAgICAgICAgICBpZiAobmV3bGVuIDwgd3JpdGVyLT5taW5fbGVuZ3RoKQorICAgICAgICAgICAgICAgIG5ld2xlbiA9IHdyaXRlci0+bWluX2xlbmd0aDsKKyAgICAgICAgfQorICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5VW5pY29kZV9OZXcobmV3bGVuLCBtYXhjaGFyKTsKKyAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGlmIChuZXdsZW4gPiB3cml0ZXItPnNpemUpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICAvKiBvdmVyYWxsb2NhdGUgMjUlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVzaXplICovCisgICAgICAgICAgICBpZiAobmV3bGVuIDw9IChQWV9TU0laRV9UX01BWCAtIG5ld2xlbiAvIDQpKQorICAgICAgICAgICAgICAgIG5ld2xlbiArPSBuZXdsZW4gLyA0OworICAgICAgICAgICAgaWYgKG5ld2xlbiA8IHdyaXRlci0+bWluX2xlbmd0aCkKKyAgICAgICAgICAgICAgICBuZXdsZW4gPSB3cml0ZXItPm1pbl9sZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciB8fCB3cml0ZXItPnJlYWRvbmx5KSB7CisgICAgICAgICAgICAvKiByZXNpemUgKyB3aWRlbiAqLworICAgICAgICAgICAgbmV3YnVmZmVyID0gUHlVbmljb2RlX05ldyhuZXdsZW4sIG1heGNoYXIpOworICAgICAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKG5ld2J1ZmZlciwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyLCAwLCB3cml0ZXItPnBvcyk7CisgICAgICAgICAgICBQeV9ERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICAgICAgd3JpdGVyLT5yZWFkb25seSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuZXdidWZmZXIgPSByZXNpemVfY29tcGFjdCh3cml0ZXItPmJ1ZmZlciwgbmV3bGVuKTsKKyAgICAgICAgICAgIGlmIChuZXdidWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CisgICAgfQorICAgIGVsc2UgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIpIHsKKyAgICAgICAgYXNzZXJ0KCF3cml0ZXItPnJlYWRvbmx5KTsKKyAgICAgICAgbmV3YnVmZmVyID0gUHlVbmljb2RlX05ldyh3cml0ZXItPnNpemUsIG1heGNoYXIpOworICAgICAgICBpZiAobmV3YnVmZmVyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKG5ld2J1ZmZlciwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIDAsIHdyaXRlci0+cG9zKTsKKyAgICAgICAgUHlfREVDUkVGKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfVXBkYXRlKHdyaXRlcik7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitpbnQKK19QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLCBQeU9iamVjdCAqc3RyKQoreworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHN0cik7CisgICAgaWYgKG1heGNoYXIgPiB3cml0ZXItPm1heGNoYXIgfHwgbGVuID4gd3JpdGVyLT5zaXplIC0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgaWYgKHdyaXRlci0+YnVmZmVyID09IE5VTEwgJiYgIXdyaXRlci0+b3ZlcmFsbG9jYXRlKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc3RyKTsKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gc3RyOworICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUod3JpdGVyKTsKKyAgICAgICAgICAgIHdyaXRlci0+cmVhZG9ubHkgPSAxOworICAgICAgICAgICAgd3JpdGVyLT5zaXplID0gMDsKKyAgICAgICAgICAgIHdyaXRlci0+cG9zICs9IGxlbjsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVJbnRlcm5hbCh3cml0ZXIsIGxlbiwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIsIDAsIGxlbik7CisgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgIHJldHVybiAwOworfQorCitQeU9iamVjdCAqCitfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgaWYgKHdyaXRlci0+cG9zID09IDApIHsKKyAgICAgICAgUHlfWERFQ1JFRih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIFB5X0lOQ1JFRih1bmljb2RlX2VtcHR5KTsKKyAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgfQorICAgIGlmICh3cml0ZXItPnJlYWRvbmx5KSB7CisgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcikgPT0gd3JpdGVyLT5wb3MpOworICAgICAgICByZXR1cm4gd3JpdGVyLT5idWZmZXI7CisgICAgfQorICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcikgIT0gd3JpdGVyLT5wb3MpIHsKKyAgICAgICAgUHlPYmplY3QgKm5ld2J1ZmZlcjsKKyAgICAgICAgbmV3YnVmZmVyID0gcmVzaXplX2NvbXBhY3Qod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zKTsKKyAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYod3JpdGVyLT5idWZmZXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBuZXdidWZmZXI7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLT5idWZmZXIsIDEpKTsKKyAgICByZXR1cm4gd3JpdGVyLT5idWZmZXI7Cit9CisKK3ZvaWQKK19QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYyhfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlfQ0xFQVIod3JpdGVyLT5idWZmZXIpOworfQorCisjaW5jbHVkZSAic3RyaW5nbGliL3VuaWNvZGVfZm9ybWF0LmgiCiAKIFB5RG9jX1NUUlZBUihmb3JtYXRfX2RvY19fLAogICAgICAgICAgICAgICJTLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpIC0+IHN0clxuXApAQCAtOTE5MywxMyArMTI5NTcsMjMgQEAKIHVuaWNvZGVfX2Zvcm1hdF9fKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWM7CisgICAgX1B5VW5pY29kZVdyaXRlciB3cml0ZXI7CisgICAgaW50IHJldDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTpfX2Zvcm1hdF9fIiwgJmZvcm1hdF9zcGVjKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZChzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKGZvcm1hdF9zcGVjKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX1NJWkUoZm9ybWF0X3NwZWMpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBfUHlVbmljb2RlV3JpdGVyX0luaXQoJndyaXRlciwgMCk7CisgICAgcmV0ID0gX1B5VW5pY29kZV9Gb3JtYXRBZHZhbmNlZFdyaXRlcigmd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgZm9ybWF0X3NwZWMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChmb3JtYXRfc3BlYykpOworICAgIGlmIChyZXQgPT0gLTEpIHsKKyAgICAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogfQogCiBQeURvY19TVFJWQVIocF9mb3JtYXRfX2RvY19fLApAQCAtOTIwOCwyOCArMTI5ODIsNTUgQEAKIFJldHVybiBhIGZvcm1hdHRlZCB2ZXJzaW9uIG9mIFMgYXMgZGVzY3JpYmVkIGJ5IGZvcm1hdF9zcGVjLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotdW5pY29kZV9fc2l6ZW9mX18oUHlVbmljb2RlT2JqZWN0ICp2KQordW5pY29kZV9fc2l6ZW9mX18oUHlPYmplY3QgKnYpCiB7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplb2YoUHlVbmljb2RlT2JqZWN0KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoUHlfVU5JQ09ERSkgKiAodi0+bGVuZ3RoICsgMSkpOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIC8qIElmIGl0J3MgYSBjb21wYWN0IG9iamVjdCwgYWNjb3VudCBmb3IgYmFzZSBzdHJ1Y3R1cmUgKworICAgICAgIGNoYXJhY3RlciBkYXRhLiAqLworICAgIGlmIChQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh2KSkKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUFTQ0lJT2JqZWN0KSArIFB5VW5pY29kZV9HRVRfTEVOR1RIKHYpICsgMTsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfSVNfQ09NUEFDVCh2KSkKKyAgICAgICAgc2l6ZSA9IHNpemVvZihQeUNvbXBhY3RVbmljb2RlT2JqZWN0KSArCisgICAgICAgICAgICAoUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyAxKSAqIFB5VW5pY29kZV9LSU5EKHYpOworICAgIGVsc2UgeworICAgICAgICAvKiBJZiBpdCBpcyBhIHR3by1ibG9jayBvYmplY3QsIGFjY291bnQgZm9yIGJhc2Ugb2JqZWN0LCBhbmQKKyAgICAgICAgICAgZm9yIGNoYXJhY3RlciBibG9jayBpZiBwcmVzZW50LiAqLworICAgICAgICBzaXplID0gc2l6ZW9mKFB5VW5pY29kZU9iamVjdCk7CisgICAgICAgIGlmIChfUHlVbmljb2RlX0RBVEFfQU5ZKHYpKQorICAgICAgICAgICAgc2l6ZSArPSAoUHlVbmljb2RlX0dFVF9MRU5HVEgodikgKyAxKSAqCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0tJTkQodik7CisgICAgfQorICAgIC8qIElmIHRoZSB3c3RyIHBvaW50ZXIgaXMgcHJlc2VudCwgYWNjb3VudCBmb3IgaXQgdW5sZXNzIGl0IGlzIHNoYXJlZAorICAgICAgIHdpdGggdGhlIGRhdGEgcG9pbnRlci4gQ2hlY2sgaWYgdGhlIGRhdGEgaXMgbm90IHNoYXJlZC4gKi8KKyAgICBpZiAoX1B5VW5pY29kZV9IQVNfV1NUUl9NRU1PUlkodikpCisgICAgICAgIHNpemUgKz0gKFB5VW5pY29kZV9XU1RSX0xFTkdUSCh2KSArIDEpICogc2l6ZW9mKHdjaGFyX3QpOworICAgIGlmIChfUHlVbmljb2RlX0hBU19VVEY4X01FTU9SWSh2KSkKKyAgICAgICAgc2l6ZSArPSBQeVVuaWNvZGVfVVRGOF9MRU5HVEgodikgKyAxOworCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChzaXplKTsKIH0KIAogUHlEb2NfU1RSVkFSKHNpemVvZl9fZG9jX18sCiAgICAgICAgICAgICAgIlMuX19zaXplb2ZfXygpIC0+IHNpemUgb2YgUyBpbiBtZW1vcnksIGluIGJ5dGVzIik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi11bmljb2RlX2dldG5ld2FyZ3MoUHlVbmljb2RlT2JqZWN0ICp2KQordW5pY29kZV9nZXRuZXdhcmdzKFB5T2JqZWN0ICp2KQogewotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSMpIiwgdi0+c3RyLCB2LT5sZW5ndGgpOworICAgIFB5T2JqZWN0ICpjb3B5ID0gX1B5VW5pY29kZV9Db3B5KHYpOworICAgIGlmICghY29weSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihOKSIsIGNvcHkpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgdW5pY29kZV9tZXRob2RzW10gPSB7CiAgICAgeyJlbmNvZGUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfZW5jb2RlLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBlbmNvZGVfX2RvY19ffSwKICAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCByZXBsYWNlX19kb2NfX30sCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zcGxpdCwgTUVUSF9WQVJBUkdTLCBzcGxpdF9fZG9jX199LAotICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JzcGxpdCwgTUVUSF9WQVJBUkdTLCByc3BsaXRfX2RvY19ffSwKKyAgICB7InNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0LCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JzcGxpdCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywgcnNwbGl0X19kb2NfX30sCiAgICAgeyJqb2luIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2pvaW4sIE1FVEhfTywgam9pbl9fZG9jX199LAogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywgY2FwaXRhbGl6ZV9fZG9jX199LAorICAgIHsiY2FzZWZvbGQiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfY2FzZWZvbGQsIE1FVEhfTk9BUkdTLCBjYXNlZm9sZF9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfdGl0bGUsIE1FVEhfTk9BUkdTLCB0aXRsZV9fZG9jX199LAogICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKICAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCkBAIC05MjQ1LDcgKzEzMDQ2LDcgQEAKICAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIHJqdXN0X19kb2NfX30sCiAgICAgeyJyc3RyaXAiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfcnN0cmlwLCBNRVRIX1ZBUkFSR1MsIHJzdHJpcF9fZG9jX199LAogICAgIHsicnBhcnRpdGlvbiIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9ycGFydGl0aW9uLCBNRVRIX08sIHJwYXJ0aXRpb25fX2RvY19ffSwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfc3BsaXRsaW5lcywgTUVUSF9WQVJBUkdTLCBzcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsIHNwbGl0bGluZXNfX2RvY19ffSwKICAgICB7InN0cmlwIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX3N0cmlwLCBNRVRIX1ZBUkFSR1MsIHN0cmlwX19kb2NfX30sCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsIHN3YXBjYXNlX19kb2NfX30sCiAgICAgeyJ0cmFuc2xhdGUiLCAoUHlDRnVuY3Rpb24pIHVuaWNvZGVfdHJhbnNsYXRlLCBNRVRIX08sIHRyYW5zbGF0ZV9fZG9jX199LApAQCAtOTI3MSwxMiArMTMwNzIsNyBAQAogICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX1NUQVRJQywgbWFrZXRyYW5zX19kb2NfX30sCiAgICAgeyJfX3NpemVvZl9fIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX19zaXplb2ZfXywgTUVUSF9OT0FSR1MsIHNpemVvZl9fZG9jX199LAogI2lmIDAKLSAgICB7ImNhcHdvcmRzIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX2NhcHdvcmRzLCBNRVRIX05PQVJHUywgY2Fwd29yZHNfX2RvY19ffSwKLSNlbmRpZgotCi0jaWYgMAogICAgIC8qIFRoZXNlIG1ldGhvZHMgYXJlIGp1c3QgdXNlZCBmb3IgZGVidWdnaW5nIHRoZSBpbXBsZW1lbnRhdGlvbi4gKi8KLSAgICB7ImZyZWVsaXN0c2l6ZSIsIChQeUNGdW5jdGlvbikgdW5pY29kZV9mcmVlbGlzdHNpemUsIE1FVEhfTk9BUkdTfSwKICAgICB7Il9kZWNpbWFsMmFzY2lpIiwgKFB5Q0Z1bmN0aW9uKSB1bmljb2RlX19kZWNpbWFsMmFzY2lpLCBNRVRIX05PQVJHU30sCiAjZW5kaWYKIApAQCAtOTI4NywxMCArMTMwODMsOCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfbW9kKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdykKIHsKLSAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2KSkgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwotICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7Ci0gICAgfQorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHYpKQorICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gb3JtYXQodiwgdyk7CiB9CiAKQEAgLTkzMTMsNTAgKzEzMTA3LDY5IEBACiB9OwogCiBzdGF0aWMgUHlPYmplY3QqCi11bmljb2RlX3N1YnNjcmlwdChQeVVuaWNvZGVPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBpdGVtKQordW5pY29kZV9zdWJzY3JpcHQoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBpdGVtKQogeworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChpIDwgMCkKLSAgICAgICAgICAgIGkgKz0gUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpOworICAgICAgICAgICAgaSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKTsKICAgICAgICAgcmV0dXJuIHVuaWNvZGVfZ2V0aXRlbShzZWxmLCBpKTsKICAgICB9IGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGgsIGN1ciwgaTsKLSAgICAgICAgUHlfVU5JQ09ERSogc291cmNlX2J1ZjsKLSAgICAgICAgUHlfVU5JQ09ERSogcmVzdWx0X2J1ZjsKLSAgICAgICAgUHlPYmplY3QqIHJlc3VsdDsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICAgICAgdm9pZCAqc3JjX2RhdGEsICpkZXN0X2RhdGE7CisgICAgICAgIGludCBzcmNfa2luZCwgZGVzdF9raW5kOworICAgICAgICBQeV9VQ1M0IGNoLCBtYXhfY2hhciwga2luZF9saW1pdDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoaXRlbSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoaXRlbSwgUHlVbmljb2RlX0dFVF9MRU5HVEgoc2VsZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHNsaWNlbGVuZ3RoIDw9IDApIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT0gMCAmJiBzdGVwID09IDEgJiYgc2xpY2VsZW5ndGggPT0gc2VsZi0+bGVuZ3RoICYmCi0gICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihzZWxmKTsKLSAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilzZWxmOworICAgICAgICAgICAgUHlfSU5DUkVGKHVuaWNvZGVfZW1wdHkpOworICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfZW1wdHk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RhcnQgPT0gMCAmJiBzdGVwID09IDEgJiYKKyAgICAgICAgICAgICAgICAgICBzbGljZWxlbmd0aCA9PSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZWxmKSkgeworICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3VuY2hhbmdlZChzZWxmKTsKICAgICAgICAgfSBlbHNlIGlmIChzdGVwID09IDEpIHsKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoc2VsZi0+c3RyICsgc3RhcnQsIHNsaWNlbGVuZ3RoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNvdXJjZV9idWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgoUHlPYmplY3QqKXNlbGYpOwotICAgICAgICAgICAgcmVzdWx0X2J1ZiA9IChQeV9VTklDT0RFICopUHlPYmplY3RfTUFMTE9DKHNsaWNlbGVuZ3RoKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeV9VTklDT0RFKSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXN1bHRfYnVmID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICAgICAgICAgIGZvciAoY3VyID0gc3RhcnQsIGkgPSAwOyBpIDwgc2xpY2VsZW5ndGg7IGN1ciArPSBzdGVwLCBpKyspIHsKLSAgICAgICAgICAgICAgICByZXN1bHRfYnVmW2ldID0gc291cmNlX2J1ZltjdXJdOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocmVzdWx0X2J1Ziwgc2xpY2VsZW5ndGgpOwotICAgICAgICAgICAgUHlPYmplY3RfRlJFRShyZXN1bHRfYnVmKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX1N1YnN0cmluZyhzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIHN0YXJ0ICsgc2xpY2VsZW5ndGgpOwogICAgICAgICB9CisgICAgICAgIC8qIEdlbmVyYWwgY2FzZSAqLworICAgICAgICBzcmNfa2luZCA9IFB5VW5pY29kZV9LSU5EKHNlbGYpOworICAgICAgICBzcmNfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlbGYpOworICAgICAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShzZWxmKSkgeworICAgICAgICAgICAga2luZF9saW1pdCA9IGtpbmRfbWF4Y2hhcl9saW1pdChzcmNfa2luZCk7CisgICAgICAgICAgICBtYXhfY2hhciA9IDA7CisgICAgICAgICAgICBmb3IgKGN1ciA9IHN0YXJ0LCBpID0gMDsgaSA8IHNsaWNlbGVuZ3RoOyBjdXIgKz0gc3RlcCwgaSsrKSB7CisgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChzcmNfa2luZCwgc3JjX2RhdGEsIGN1cik7CisgICAgICAgICAgICAgICAgaWYgKGNoID4gbWF4X2NoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4X2NoYXIgPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IGtpbmRfbGltaXQpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWF4X2NoYXIgPSAxMjc7CisgICAgICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcoc2xpY2VsZW5ndGgsIG1heF9jaGFyKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGRlc3Rfa2luZCA9IFB5VW5pY29kZV9LSU5EKHJlc3VsdCk7CisgICAgICAgIGRlc3RfZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisKKyAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsgY3VyICs9IHN0ZXAsIGkrKykgeworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKHNyY19raW5kLCBzcmNfZGF0YSwgY3VyKTsKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShkZXN0X2tpbmQsIGRlc3RfZGF0YSwgaSwgY2gpOworICAgICAgICB9CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInN0cmluZyBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05MzkwLDE2ICsxMzIwMywxNyBAQAogCiAvKiBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIFB5VW5pY29kZSBvYmplY3QsIG9yIE5VTEwgb24gZmFpbHVyZS4gKi8KIAotc3RhdGljIFB5T2JqZWN0ICoKLWZvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3N0YXRpYyBpbnQKK2Zvcm1hdGZsb2F0KFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSwKKyAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9vdXRwdXQsIF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlcikKIHsKICAgICBjaGFyICpwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgZG91YmxlIHg7CisgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAocHJlYyA8IDApCiAgICAgICAgIHByZWMgPSA2OwpAQCAtOTQwNyw1NCArMTMyMjEsMTcwIEBACiAgICAgcCA9IFB5T1NfZG91YmxlX3RvX3N0cmluZyh4LCB0eXBlLCBwcmVjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsYWdzICYgRl9BTFQpID8gUHlfRFRTRl9BTFQgOiAwLCBOVUxMKTsKICAgICBpZiAocCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUocCwgc3RybGVuKHApKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGxlbiA9IHN0cmxlbihwKTsKKyAgICBpZiAod3JpdGVyKSB7CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCBsZW4sIDEyNykgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5TWVtX0ZyZWUocCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgdW5pY29kZV93cml0ZV9jc3RyKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywgcCwgbGVuKTsKKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gbGVuOworICAgIH0KKyAgICBlbHNlCisgICAgICAgICpwX291dHB1dCA9IF9QeVVuaWNvZGVfRnJvbUFTQ0lJKHAsIGxlbik7CiAgICAgUHlNZW1fRnJlZShwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiAwOwogfQogCisvKiBmb3JtYXRsb25nKCkgZW11bGF0ZXMgdGhlIGZvcm1hdCBjb2RlcyBkLCB1LCBvLCB4IGFuZCBYLCBhbmQKKyAqIHRoZSBGX0FMVCBmbGFnLCBmb3IgUHl0aG9uJ3MgbG9uZyAodW5ib3VuZGVkKSBpbnRzLiAgSXQncyBub3QgdXNlZCBmb3IKKyAqIFB5dGhvbidzIHJlZ3VsYXIgaW50cy4KKyAqIFJldHVybiB2YWx1ZTogIGEgbmV3IFB5VW5pY29kZU9iamVjdCosIG9yIE5VTEwgaWYgZXJyb3IuCisgKiAgICAgVGhlIG91dHB1dCBzdHJpbmcgaXMgb2YgdGhlIGZvcm0KKyAqICAgICAgICAgIi0iPyAoIjB4IiB8ICIwWCIpPyBkaWdpdCsKKyAqICAgICAiMHgiLyIwWCIgYXJlIHByZXNlbnQgb25seSBmb3IgeCBhbmQgWCBjb252ZXJzaW9ucywgd2l0aCBGX0FMVAorICogICAgICAgICBzZXQgaW4gZmxhZ3MuICBUaGUgY2FzZSBvZiBoZXggZGlnaXRzIHdpbGwgYmUgY29ycmVjdCwKKyAqICAgICBUaGVyZSB3aWxsIGJlIGF0IGxlYXN0IHByZWMgZGlnaXRzLCB6ZXJvLWZpbGxlZCBvbiB0aGUgbGVmdCBpZgorICogICAgICAgICBuZWNlc3NhcnkgdG8gZ2V0IHRoYXQgbWFueS4KKyAqIHZhbCAgICAgICAgICBvYmplY3QgdG8gYmUgY29udmVydGVkCisgKiBmbGFncyAgICAgICAgYml0bWFzayBvZiBmb3JtYXQgZmxhZ3M7IG9ubHkgRl9BTFQgaXMgbG9va2VkIGF0CisgKiBwcmVjICAgICAgICAgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzOyAwLWZpbGwgb24gbGVmdCBpZiBuZWVkZWQKKyAqIHR5cGUgICAgICAgICBhIGNoYXJhY3RlciBpbiBbZHVveFhdOyB1IGFjdHMgdGhlIHNhbWUgYXMgZAorICoKKyAqIENBVVRJT046ICBvLCB4IGFuZCBYIGNvbnZlcnNpb25zIG9uIHJlZ3VsYXIgaW50cyBjYW4gbmV2ZXIKKyAqIHByb2R1Y2UgYSAnLScgc2lnbiwgYnV0IGNhbiBmb3IgUHl0aG9uJ3MgdW5ib3VuZGVkIGludHMuCisgKi8KIHN0YXRpYyBQeU9iamVjdCoKIGZvcm1hdGxvbmcoUHlPYmplY3QgKnZhbCwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUpCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgY2hhciAqYnVmOwotICAgIGludCBsZW47Ci0gICAgUHlPYmplY3QgKnN0cjsgLyogdGVtcG9yYXJ5IHN0cmluZyBvYmplY3QuICovCi0gICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeV9zc2l6ZV90IGk7CisgICAgaW50IHNpZ247ICAgICAgICAgICAvKiAxIGlmICctJywgZWxzZSAwICovCisgICAgaW50IGxlbjsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY2hhcmFjdGVycyAqLworICAgIFB5X3NzaXplX3QgbGxlbjsKKyAgICBpbnQgbnVtZGlnaXRzOyAgICAgIC8qIGxlbiA9PSBudW1ub25kaWdpdHMgKyBudW1kaWdpdHMgKi8KKyAgICBpbnQgbnVtbm9uZGlnaXRzID0gMDsKIAotICAgIHN0ciA9IF9QeUJ5dGVzX0Zvcm1hdExvbmcodmFsLCBmbGFncywgcHJlYywgdHlwZSwgJmJ1ZiwgJmxlbik7Ci0gICAgaWYgKCFzdHIpCisgICAgLyogQXZvaWQgZXhjZWVkaW5nIFNTSVpFX1RfTUFYICovCisgICAgaWYgKHByZWMgPiBJTlRfTUFYLTMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAicHJlY2lzaW9uIHRvbyBsYXJnZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCBsZW4pOwotICAgIFB5X0RFQ1JFRihzdHIpOworICAgIH0KKworICAgIGFzc2VydChQeUxvbmdfQ2hlY2sodmFsKSk7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlICdkJzoKKyAgICBjYXNlICd1JzoKKyAgICAgICAgLyogU3BlY2lhbC1jYXNlIGJvb2xlYW46IHdlIHdhbnQgMC8xICovCisgICAgICAgIGlmIChQeUJvb2xfQ2hlY2sodmFsKSkKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDEwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gUHlfVFlQRSh2YWwpLT50cF9zdHIodmFsKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnbyc6CisgICAgICAgIG51bW5vbmRpZ2l0cyA9IDI7CisgICAgICAgIHJlc3VsdCA9IFB5TnVtYmVyX1RvQmFzZSh2YWwsIDgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICd4JzoKKyAgICBjYXNlICdYJzoKKyAgICAgICAgbnVtbm9uZGlnaXRzID0gMjsKKyAgICAgICAgcmVzdWx0ID0gUHlOdW1iZXJfVG9CYXNlKHZhbCwgMTYpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoISIndHlwZScgbm90IGluIFtkdW94WF0iKTsKKyAgICB9CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYXNzZXJ0KHVuaWNvZGVfbW9kaWZpYWJsZShyZXN1bHQpKTsKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHJlc3VsdCkpOworICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkocmVzdWx0KSk7CisKKyAgICAvKiBUbyBtb2RpZnkgdGhlIHN0cmluZyBpbi1wbGFjZSwgdGhlcmUgY2FuIG9ubHkgYmUgb25lIHJlZmVyZW5jZS4gKi8KKyAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgIT0gMSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGJ1ZiA9IFB5VW5pY29kZV9EQVRBKHJlc3VsdCk7CisgICAgbGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlc3VsdCk7CisgICAgaWYgKGxsZW4gPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN0cmluZyB0b28gbGFyZ2UgaW4gX1B5Qnl0ZXNfRm9ybWF0TG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbGVuID0gKGludClsbGVuOworICAgIHNpZ24gPSBidWZbMF0gPT0gJy0nOworICAgIG51bW5vbmRpZ2l0cyArPSBzaWduOworICAgIG51bWRpZ2l0cyA9IGxlbiAtIG51bW5vbmRpZ2l0czsKKyAgICBhc3NlcnQobnVtZGlnaXRzID4gMCk7CisKKyAgICAvKiBHZXQgcmlkIG9mIGJhc2UgbWFya2VyIHVubGVzcyBGX0FMVCAqLworICAgIGlmICgoKGZsYWdzICYgRl9BTFQpID09IDAgJiYKKyAgICAgICAgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKSkpIHsKKyAgICAgICAgYXNzZXJ0KGJ1ZltzaWduXSA9PSAnMCcpOworICAgICAgICBhc3NlcnQoYnVmW3NpZ24rMV0gPT0gJ3gnIHx8IGJ1ZltzaWduKzFdID09ICdYJyB8fAorICAgICAgICAgICAgICAgYnVmW3NpZ24rMV0gPT0gJ28nKTsKKyAgICAgICAgbnVtbm9uZGlnaXRzIC09IDI7CisgICAgICAgIGJ1ZiArPSAyOworICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgaWYgKHNpZ24pCisgICAgICAgICAgICBidWZbMF0gPSAnLSc7CisgICAgICAgIGFzc2VydChsZW4gPT0gbnVtbm9uZGlnaXRzICsgbnVtZGlnaXRzKTsKKyAgICAgICAgYXNzZXJ0KG51bWRpZ2l0cyA+IDApOworICAgIH0KKworICAgIC8qIEZpbGwgd2l0aCBsZWFkaW5nIHplcm9lcyB0byBtZWV0IG1pbmltdW0gd2lkdGguICovCisgICAgaWYgKHByZWMgPiBudW1kaWdpdHMpIHsKKyAgICAgICAgUHlPYmplY3QgKnIxID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1ub25kaWdpdHMgKyBwcmVjKTsKKyAgICAgICAgY2hhciAqYjE7CisgICAgICAgIGlmICghcjEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgYjEgPSBQeUJ5dGVzX0FTX1NUUklORyhyMSk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1ub25kaWdpdHM7ICsraSkKKyAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlYyAtIG51bWRpZ2l0czsgaSsrKQorICAgICAgICAgICAgKmIxKysgPSAnMCc7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1kaWdpdHM7IGkrKykKKyAgICAgICAgICAgICpiMSsrID0gKmJ1ZisrOworICAgICAgICAqYjEgPSAnXDAnOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gcjE7CisgICAgICAgIGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgIGxlbiA9IG51bW5vbmRpZ2l0cyArIHByZWM7CisgICAgfQorCisgICAgLyogRml4IHVwIGNhc2UgZm9yIGhleCBjb252ZXJzaW9ucy4gKi8KKyAgICBpZiAodHlwZSA9PSAnWCcpIHsKKyAgICAgICAgLyogTmVlZCB0byBjb252ZXJ0IGFsbCBsb3dlciBjYXNlIGxldHRlcnMgdG8gdXBwZXIgY2FzZS4KKyAgICAgICAgICAgYW5kIG5lZWQgdG8gY29udmVydCAweCB0byAwWCAoYW5kIC0weCB0byAtMFgpLiAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCisgICAgICAgICAgICBpZiAoYnVmW2ldID49ICdhJyAmJiBidWZbaV0gPD0gJ3gnKQorICAgICAgICAgICAgICAgIGJ1ZltpXSAtPSAnYSctJ0EnOworICAgIH0KKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhyZXN1bHQpIHx8IGxlbiAhPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyZXN1bHQpKSB7CisgICAgICAgIFB5T2JqZWN0ICp1bmljb2RlOworICAgICAgICB1bmljb2RlID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoYnVmLCBsZW4pOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmVzdWx0ID0gdW5pY29kZTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGludAotZm9ybWF0Y2hhcihQeV9VTklDT0RFICpidWYsCi0gICAgICAgICAgIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAgIFB5T2JqZWN0ICp2KQorc3RhdGljIFB5X1VDUzQKK2Zvcm1hdGNoYXIoUHlPYmplY3QgKnYpCiB7CiAgICAgLyogcHJlc3VtZSB0aGF0IHRoZSBidWZmZXIgaXMgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGxvbmcgKi8KICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHYpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX1NJWkUodikgPT0gMSkgewotICAgICAgICAgICAgYnVmWzBdID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMF07Ci0gICAgICAgICAgICBidWZbMV0gPSAnXDAnOwotICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KSA9PSAxKSB7CisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JFQURfQ0hBUih2LCAwKTsKICAgICAgICAgfQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLSAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh2KSA9PSAyKSB7Ci0gICAgICAgICAgICAvKiBEZWNvZGUgYSB2YWxpZCBzdXJyb2dhdGUgcGFpciAqLwotICAgICAgICAgICAgaW50IGMwID0gUHlVbmljb2RlX0FTX1VOSUNPREUodilbMF07Ci0gICAgICAgICAgICBpbnQgYzEgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KVsxXTsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gYzAgJiYgYzAgPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAgICAgMHhEQzAwIDw9IGMxICYmIGMxIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIGJ1ZlswXSA9IGMwOwotICAgICAgICAgICAgICAgIGJ1ZlsxXSA9IGMxOwotICAgICAgICAgICAgICAgIGJ1ZlsyXSA9ICdcMCc7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogICAgIGVsc2UgewpAQCAtOTQ2NCw0NSArMTMzOTQsMzUgQEAKICAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKIAotICAgICAgICBpZiAoeCA8IDAgfHwgeCA+IDB4MTBmZmZmKSB7CisgICAgICAgIGlmICh4IDwgMCB8fCB4ID4gTUFYX1VOSUNPREUpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKICAgICAgICAgfQogCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotICAgICAgICBpZiAoeCA+IDB4ZmZmZikgewotICAgICAgICAgICAgeCAtPSAweDEwMDAwOwotICAgICAgICAgICAgYnVmWzBdID0gKFB5X1VOSUNPREUpKDB4RDgwMCB8ICh4ID4+IDEwKSk7Ci0gICAgICAgICAgICBidWZbMV0gPSAoUHlfVU5JQ09ERSkoMHhEQzAwIHwgKHggJiAweDNGRikpOwotICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBidWZbMF0gPSAoUHlfVU5JQ09ERSkgeDsKLSAgICAgICAgYnVmWzFdID0gJ1wwJzsKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIHJldHVybiAoUHlfVUNTNCkgeDsKICAgICB9CiAKICAgb25FcnJvcjoKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiJWMgcmVxdWlyZXMgaW50IG9yIGNoYXIiKTsKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChQeV9VQ1M0KSAtMTsKIH0KIAotLyogZm10JSh2MSx2MiwuLi4pIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byBzcHJpbnRmKGZtdCwgdjEsIHYyLCAuLi4pCi0gICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIGNoYXJzIGFyZSBmb3JtYXR0ZWQuCi0qLwotI2RlZmluZSBGT1JNQVRCVUZMRU4gKHNpemVfdCkxMAotCi1QeU9iamVjdCAqUHlVbmljb2RlX0Zvcm1hdChQeU9iamVjdCAqZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MpCitQeU9iamVjdCAqCitQeVVuaWNvZGVfRm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKmZtdCwgKnJlczsKLSAgICBQeV9zc2l6ZV90IGZtdGNudCwgcmVzY250LCByZXNsZW4sIGFyZ2xlbiwgYXJnaWR4OworICAgIFB5X3NzaXplX3QgZm10Y250LCBmbXRwb3MsIGFyZ2xlbiwgYXJnaWR4OwogICAgIGludCBhcmdzX293bmVkID0gMDsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOworICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2Vjb25kID0gTlVMTDsKICAgICBQeU9iamVjdCAqdWZvcm1hdDsKKyAgICB2b2lkICpmbXQ7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kLCBmbXRraW5kOworICAgIF9QeVVuaWNvZGVXcml0ZXIgd3JpdGVyOworICAgIFB5X3NzaXplX3Qgc3VibGVuOworICAgIFB5X1VDUzQgbWF4Y2hhcjsKIAogICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCBhcmdzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CkBAIC05NTExLDE0ICsxMzQzMSwxNyBAQAogICAgIHVmb3JtYXQgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChmb3JtYXQpOwogICAgIGlmICh1Zm9ybWF0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGZtdCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHVmb3JtYXQpOwotICAgIGZtdGNudCA9IFB5VW5pY29kZV9HRVRfU0laRSh1Zm9ybWF0KTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVmb3JtYXQpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgcmVzbGVuID0gcmVzY250ID0gZm10Y250ICsgMTAwOwotICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVfTmV3KHJlc2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgcmVzID0gUHlVbmljb2RlX0FTX1VOSUNPREUocmVzdWx0KTsKKyAgICBmbXQgPSBQeVVuaWNvZGVfREFUQSh1Zm9ybWF0KTsKKyAgICBmbXRraW5kID0gUHlVbmljb2RlX0tJTkQodWZvcm1hdCk7CisgICAgZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodWZvcm1hdCk7CisgICAgZm10cG9zID0gMDsKKworICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyLCBmbXRjbnQgKyAxMDApOwogCiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9TaXplKGFyZ3MpOwpAQCAtOTUzMiwzNSArMTM0NTUsNDYgQEAKICAgICAgICAgZGljdCA9IGFyZ3M7CiAKICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewotICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpICsgcmVzbGVuIC0gcmVzY250OwotICAgICAgICAgICAgICAgIC0tcmVzY250OworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpICE9ICclJykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBub25mbXRwb3M7CisgICAgICAgICAgICBub25mbXRwb3MgPSBmbXRwb3MrKzsKKyAgICAgICAgICAgIHdoaWxlIChmbXRjbnQgPj0gMCAmJgorICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKSAhPSAnJScpIHsKKyAgICAgICAgICAgICAgICBmbXRwb3MrKzsKKyAgICAgICAgICAgICAgICBmbXRjbnQtLTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICpyZXMrKyA9ICpmbXQrKzsKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKQorICAgICAgICAgICAgICAgIGZtdHBvcy0tOworICAgICAgICAgICAgc3VibGVuID0gZm10cG9zIC0gbm9uZm10cG9zOworICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmZtdHBvcywgbm9uZm10cG9zICsgc3VibGVuKTsKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc3VibGVuLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci5idWZmZXIsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Zm9ybWF0LCBub25mbXRwb3MsIHN1Ymxlbik7CisgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIEdvdCBhIGZvcm1hdCBzcGVjaWZpZXIgKi8KICAgICAgICAgICAgIGludCBmbGFncyA9IDA7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHdpZHRoID0gLTE7CiAgICAgICAgICAgICBpbnQgcHJlYyA9IC0xOwotICAgICAgICAgICAgUHlfVU5JQ09ERSBjID0gJ1wwJzsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgZmlsbDsKKyAgICAgICAgICAgIFB5X1VDUzQgYyA9ICdcMCc7CisgICAgICAgICAgICBQeV9VQ1M0IGZpbGw7CisgICAgICAgICAgICBpbnQgc2lnbjsKKyAgICAgICAgICAgIFB5X1VDUzQgc2lnbmNoYXI7CiAgICAgICAgICAgICBpbnQgaXNudW1vazsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gTlVMTDsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gTlVMTDsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKnBidWY7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIHNpZ247Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgZm9ybWF0YnVmW0ZPUk1BVEJVRkxFTl07IC8qIEZvciBmb3JtYXRjaGFyKCkgKi8KKyAgICAgICAgICAgIHZvaWQgKnBidWYgPSBOVUxMOworICAgICAgICAgICAgUHlfc3NpemVfdCBwaW5kZXgsIGxlbjsKKyAgICAgICAgICAgIFB5X1VDUzQgYnVmbWF4Y2hhcjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmbGVuOwogCi0gICAgICAgICAgICBmbXQrKzsKLSAgICAgICAgICAgIGlmICgqZm10ID09ICcoJykgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgKmtleXN0YXJ0OworICAgICAgICAgICAgZm10cG9zKys7CisgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MpOworICAgICAgICAgICAgaWYgKGMgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBrZXlzdGFydDsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGtleWxlbjsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgICAgIGludCBwY291bnQgPSAxOwpAQCAtOTU3MCwzNCArMTM1MDQsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgcmVxdWlyZXMgYSBtYXBwaW5nIik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKytmbXQ7CisgICAgICAgICAgICAgICAgKytmbXRwb3M7CiAgICAgICAgICAgICAgICAgLS1mbXRjbnQ7Ci0gICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXQ7CisgICAgICAgICAgICAgICAga2V5c3RhcnQgPSBmbXRwb3M7CiAgICAgICAgICAgICAgICAgLyogU2tpcCBvdmVyIGJhbGFuY2VkIHBhcmVudGhlc2VzICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKHBjb3VudCA+IDAgJiYgLS1mbXRjbnQgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoKmZtdCA9PSAnKScpCisgICAgICAgICAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRChmbXRraW5kLCBmbXQsIGZtdHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICcpJykKICAgICAgICAgICAgICAgICAgICAgICAgIC0tcGNvdW50OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgqZm10ID09ICcoJykKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnKCcpCiAgICAgICAgICAgICAgICAgICAgICAgICArK3Bjb3VudDsKLSAgICAgICAgICAgICAgICAgICAgZm10Kys7CisgICAgICAgICAgICAgICAgICAgIGZtdHBvcysrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXQgLSBrZXlzdGFydCAtIDE7CisgICAgICAgICAgICAgICAga2V5bGVuID0gZm10cG9zIC0ga2V5c3RhcnQgLSAxOwogICAgICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwIHx8IHBjb3VudCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQga2V5Iik7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0jaWYgMAotICAgICAgICAgICAgICAgIC8qIGtleXMgYXJlIGNvbnZlcnRlZCB0byBzdHJpbmdzIHVzaW5nIFVURi04IGFuZAotICAgICAgICAgICAgICAgICAgIHRoZW4gbG9va2VkIHVwIHNpbmNlIFB5dGhvbiB1c2VzIHN0cmluZ3MgdG8gaG9sZAotICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlcyBuYW1lcyBldGMuIGluIGl0cyBuYW1lc3BhY2VzIGFuZCB3ZQotICAgICAgICAgICAgICAgICAgIHdvdWxkbid0IHdhbnQgdG8gYnJlYWsgY29tbW9uIGlkaW9tcy4gKi8KLSAgICAgICAgICAgICAgICBrZXkgPSBQeVVuaWNvZGVfRW5jb2RlVVRGOChrZXlzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShrZXlzdGFydCwga2V5bGVuKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGtleSA9IFB5VW5pY29kZV9TdWJzdHJpbmcodWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN0YXJ0LCBrZXlzdGFydCArIGtleWxlbik7CiAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBOVUxMKQogICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKQEAgLTk2MTQsNyArMTM1NDAsOCBAQAogICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKKyAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhc2UgJysnOiBmbGFncyB8PSBGX1NJR047IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGNhc2UgJyAnOiBmbGFncyB8PSBGX0JMQU5LOyBjb250aW51ZTsKQEAgLTk2NDAsMTUgKzEzNTY3LDE4IEBACiAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gLXdpZHRoOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKICAgICAgICAgICAgICAgICB3aWR0aCA9IGMgLSAnMCc7CiAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgod2lkdGgqMTApIC8gMTAgIT0gd2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogU2luY2UgYyBpcyB1bnNpZ25lZCwgdGhlIFJIUyB3b3VsZCBlbmQgdXAgYXMgdW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAgIG1peGluZyBzaWduZWQgYW5kIHVuc2lnbmVkIGNvbXBhcmlzb24uIFNpbmNlIGMgaXMgYmV0d2VlbgorICAgICAgICAgICAgICAgICAgICAgICAnMCcgYW5kICc5JywgY2FzdGluZyB0byBpbnQgaXMgc2FmZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gKFBZX1NTSVpFX1RfTUFYIC0gKChpbnQpYyAtICcwJykpIC8gMTApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWR0aCB0b28gYmlnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CkBAIC05NjU5LDcgKzEzNTg5LDcgQEAKICAgICAgICAgICAgIGlmIChjID09ICcuJykgewogICAgICAgICAgICAgICAgIHByZWMgPSAwOwogICAgICAgICAgICAgICAgIGlmICgtLWZtdGNudCA+PSAwKQotICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC05Njc1LDE1ICsxMzYwNSwxNSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVjID0gMDsKICAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgewogICAgICAgICAgICAgICAgICAgICBwcmVjID0gYyAtICcwJzsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gUHlVbmljb2RlX1JFQUQoZm10a2luZCwgZm10LCBmbXRwb3MrKyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID4gJzknKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwcmVjKjEwKSAvIDEwICE9IHByZWMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjID4gKElOVF9NQVggLSAoKGludCljIC0gJzAnKSkgLyAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlYyB0b28gYmlnIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwpAQCAtOTY5NSw3ICsxMzYyNSw3IEBACiAgICAgICAgICAgICBpZiAoZm10Y250ID49IDApIHsKICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnaCcgfHwgYyA9PSAnbCcgfHwgYyA9PSAnTCcpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCi0gICAgICAgICAgICAgICAgICAgICAgICBjID0gKmZtdCsrOworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEKGZtdGtpbmQsIGZtdCwgZm10cG9zKyspOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CkBAIC05NzAzLDI1ICsxMzYzMywzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoYyAhPSAnJScpIHsKLSAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICBpZiAoZm10Y250ID09IDApCisgICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisKKyAgICAgICAgICAgIGlmIChjID09ICclJykgeworICAgICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgMSwgJyUnKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICclJyk7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKICAgICAgICAgICAgIHNpZ24gPSAwOworICAgICAgICAgICAgc2lnbmNoYXIgPSAnXDAnOwogICAgICAgICAgICAgZmlsbCA9ICcgJzsKICAgICAgICAgICAgIHN3aXRjaCAoYykgewogCi0gICAgICAgICAgICBjYXNlICclJzoKLSAgICAgICAgICAgICAgICBwYnVmID0gZm9ybWF0YnVmOwotICAgICAgICAgICAgICAgIC8qIHByZXN1bWUgdGhhdCBidWZmZXIgbGVuZ3RoIGlzIGF0IGxlYXN0IDEgKi8KLSAgICAgICAgICAgICAgICBwYnVmWzBdID0gJyUnOwotICAgICAgICAgICAgICAgIGxlbiA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICBjYXNlICdhJzoKKyAgICAgICAgICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3QodikgJiYgd2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUxvbmdfRm9ybWF0V3JpdGVyKCZ3cml0ZXIsIHYsIDEwLCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSAmJiBjID09ICdzJykgewogICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdjsKICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHRlbXApOwpAQCAtOTczMywyMSArMTM2NzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IFB5T2JqZWN0X1JlcHIodik7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9BU0NJSSh2KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gKi87Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgYXJndW1lbnQgaGFzIG5vbi1zdHJpbmcgc3RyKCkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOwotICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKLSAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAnaSc6CkBAIC05NzU2LDYgKzEzNjgzLDMyIEBACiAgICAgICAgICAgICBjYXNlICdvJzoKICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgY2FzZSAnWCc6CisgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHYpCisgICAgICAgICAgICAgICAgICAgICYmIHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGMpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxMCwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCAxNiwgZmxhZ3MgJiBGX0FMVCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgICAgICBjYXNlICdvJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlMb25nX0Zvcm1hdFdyaXRlcigmd3JpdGVyLCB2LCA4LCBmbGFncyAmIEZfQUxUKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAwOwogICAgICAgICAgICAgICAgIGlmIChQeU51bWJlcl9DaGVjayh2KSkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW9iaj1OVUxMOwpAQCAtOTc3MCwxMyArMTM3MjMsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoaW9iaiE9TlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayhpb2JqKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzbnVtb2sgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKGlvYmosIGZsYWdzLCBwcmVjLCAoYyA9PSAnaSc/ICdkJzogYykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpb2JqKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRlbXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0FTX1VOSUNPREUodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHRlbXApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOwpAQCAtOTc5OSwyMiArMTM3NDgsMzggQEAKICAgICAgICAgICAgIGNhc2UgJ0YnOgogICAgICAgICAgICAgY2FzZSAnZyc6CiAgICAgICAgICAgICBjYXNlICdHJzoKLSAgICAgICAgICAgICAgICB0ZW1wID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMpOwotICAgICAgICAgICAgICAgIGlmICghdGVtcCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgICAgIHBidWYgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0ZW1wKTsKLSAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodGVtcCk7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0YXJnOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHNpZ24gPSAxOwogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsICZ0ZW1wLCBOVUxMKSA9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVtcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgICAgIHBidWYgPSBmb3JtYXRidWY7Ci0gICAgICAgICAgICAgICAgbGVuID0gZm9ybWF0Y2hhcihwYnVmLCBzaXplb2YoZm9ybWF0YnVmKS9zaXplb2YoUHlfVU5JQ09ERSksIHYpOwotICAgICAgICAgICAgICAgIGlmIChsZW4gPCAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBmb3JtYXRjaGFyKHYpOworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAoUHlfVUNTNCkgLTEpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCAxLCBjaCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsIGNoKTsKKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSAxOworICAgICAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRlbXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoY2gpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLApAQCAtOTgyMiw5MCArMTM3ODcsMTM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhdCBpbmRleCAlemQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMzE8PWMgJiYgYzw9MTI2KSA/IChjaGFyKWMgOiAnPycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpKGZtdCAtIDEgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodWZvcm1hdCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm10cG9zIC0gMSk7CiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBhc3NlcnQgKFB5VW5pY29kZV9DaGVjayh0ZW1wKSk7CisKKyAgICAgICAgICAgIGlmICh3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIoJndyaXRlciwgdGVtcCkgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBnb3RvIG5leHRhcmc7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodGVtcCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodGVtcCk7CisgICAgICAgICAgICBwYnVmID0gUHlVbmljb2RlX0RBVEEodGVtcCk7CisgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh0ZW1wKTsKKworICAgICAgICAgICAgaWYgKGMgPT0gJ3MnIHx8IGMgPT0gJ3InIHx8IGMgPT0gJ2EnKSB7CisgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQorICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBwYnVmIGlzIGluaXRpYWxpemVkIGhlcmUuICovCisgICAgICAgICAgICBwaW5kZXggPSAwOwogICAgICAgICAgICAgaWYgKHNpZ24pIHsKLSAgICAgICAgICAgICAgICBpZiAoKnBidWYgPT0gJy0nIHx8ICpwYnVmID09ICcrJykgewotICAgICAgICAgICAgICAgICAgICBzaWduID0gKnBidWYrKzsKKyAgICAgICAgICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJy0nIHx8IGNoID09ICcrJykgeworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9IGNoOwogICAgICAgICAgICAgICAgICAgICBsZW4tLTsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4Kys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgRl9TSUdOKQotICAgICAgICAgICAgICAgICAgICBzaWduID0gJysnOworICAgICAgICAgICAgICAgICAgICBzaWduY2hhciA9ICcrJzsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCi0gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnICc7CisgICAgICAgICAgICAgICAgICAgIHNpZ25jaGFyID0gJyAnOwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgc2lnbiA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAod2lkdGggPCBsZW4pCiAgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47Ci0gICAgICAgICAgICBpZiAocmVzY250IC0gKHNpZ24gIT0gMCkgPCB3aWR0aCkgewotICAgICAgICAgICAgICAgIHJlc2xlbiAtPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgcmVzY250ID0gd2lkdGggKyBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAocmVzbGVuIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgIC8qIENvbXB1dGUgdGhlIGxlbmd0aCBhbmQgbWF4aW11bSBjaGFyYWN0ZXIgb2YgdGhlCisgICAgICAgICAgICAgICB3cml0dGVuIGNoYXJhY3RlcnMgKi8KKyAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSAxMjc7CisgICAgICAgICAgICBpZiAoIShmbGFncyAmIEZfTEpVU1QpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNpZ24pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh3aWR0aC0xKSA+IGxlbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zm1heGNoYXIgPSBNQVhfTUFYQ0hBUihidWZtYXhjaGFyLCBmaWxsKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmbWF4Y2hhciA9IE1BWF9NQVhDSEFSKGJ1Zm1heGNoYXIsIGZpbGwpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXMgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgICsgcmVzbGVuIC0gcmVzY250OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgbWF4Y2hhciA9IF9QeVVuaWNvZGVfRmluZE1heENoYXIodGVtcCwgMCwgcGluZGV4K2xlbik7CisgICAgICAgICAgICBidWZtYXhjaGFyID0gTUFYX01BWENIQVIoYnVmbWF4Y2hhciwgbWF4Y2hhcik7CisKKyAgICAgICAgICAgIGJ1ZmxlbiA9IHdpZHRoOworICAgICAgICAgICAgaWYgKHNpZ24gJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGJ1ZmxlbisrOworCisgICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIGJ1ZmxlbiwgYnVmbWF4Y2hhcikgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworCisgICAgICAgICAgICAvKiBXcml0ZSBjaGFyYWN0ZXJzICovCiAgICAgICAgICAgICBpZiAoc2lnbikgewotICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKLSAgICAgICAgICAgICAgICByZXNjbnQtLTsKKyAgICAgICAgICAgICAgICBpZiAoZmlsbCAhPSAnICcpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywgc2lnbmNoYXIpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKICAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBGX0FMVCkgJiYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnIHx8IGMgPT0gJ28nKSkgewotICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9SRUFEKGtpbmQsIHBidWYsIHBpbmRleCkgPT0gJzAnKTsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4ICsgMSkgPT0gYyk7CiAgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKSB7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MsICcwJyk7CisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURSh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIHdyaXRlci5wb3MrMSwgYyk7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgcGluZGV4ICs9IDI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc2NudCAtPSAyOwogICAgICAgICAgICAgICAgIHdpZHRoIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGxlbiAtPSAyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuICYmICEoZmxhZ3MgJiBGX0xKVVNUKSkgewotICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IGZpbGw7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS13aWR0aCA+IGxlbik7CisgICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47CisgICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsIGZpbGwsIHdyaXRlci5wb3MsIHN1Ymxlbik7CisgICAgICAgICAgICAgICAgd3JpdGVyLnBvcyArPSBzdWJsZW47CisgICAgICAgICAgICAgICAgd2lkdGggPSBsZW47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2lnbikKLSAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCBzaWduY2hhcik7CisgICAgICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcgfHwgYyA9PSAnbycpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzBdID09ICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KSA9PSAnMCcpOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX1JFQUQoa2luZCwgcGJ1ZiwgcGluZGV4KzEpID09IGMpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zLCAnMCcpOworICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKzEsIGMpOworICAgICAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IDI7CisgICAgICAgICAgICAgICAgICAgIHBpbmRleCArPSAyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1VOSUNPREVfQ09QWShyZXMsIHBidWYsIGxlbik7Ci0gICAgICAgICAgICByZXMgKz0gbGVuOwotICAgICAgICAgICAgcmVzY250IC09IGxlbjsKLSAgICAgICAgICAgIHdoaWxlICgtLXdpZHRoID49IGxlbikgewotICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICpyZXMrKyA9ICcgJzsKKworICAgICAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci5idWZmZXIsIHdyaXRlci5wb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCwgcGluZGV4LCBsZW4pOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MgKz0gbGVuOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgc3VibGVuID0gd2lkdGggLSBsZW47CisgICAgICAgICAgICAgICAgRklMTCh3cml0ZXIua2luZCwgd3JpdGVyLmRhdGEsICcgJywgd3JpdGVyLnBvcywgc3VibGVuKTsKKyAgICAgICAgICAgICAgICB3cml0ZXIucG9zICs9IHN1YmxlbjsKKyAgICAgICAgICAgIH0KKworbmV4dGFyZzoKICAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pICYmIGMgIT0gJyUnKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCBhbGwgYXJndW1lbnRzIGNvbnZlcnRlZCBkdXJpbmcgc3RyaW5nIGZvcm1hdHRpbmciKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgICAgICAgICBQeV9DTEVBUih0ZW1wKTsKICAgICAgICAgfSAvKiAnJScgKi8KICAgICB9IC8qIHVudGlsIGVuZCAqLwogICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKQEAgLTk5MTQsMTcgKzEzOTI4LDE5IEBACiAgICAgICAgIGdvdG8gb25FcnJvcjsKICAgICB9CiAKLSAgICBpZiAoX1B5VW5pY29kZV9SZXNpemUoJnJlc3VsdCwgcmVzbGVuIC0gcmVzY250KSA8IDApCi0gICAgICAgIGdvdG8gb25FcnJvcjsKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQogICAgIFB5X0RFQ1JFRih1Zm9ybWF0KTsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVzdWx0OworICAgIFB5X1hERUNSRUYodGVtcCk7CisgICAgUHlfWERFQ1JFRihzZWNvbmQpOworICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICBQeV9ERUNSRUYodWZvcm1hdCk7CisgICAgUHlfWERFQ1JFRih0ZW1wKTsKKyAgICBQeV9YREVDUkVGKHNlY29uZCk7CisgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIGlmIChhcmdzX293bmVkKSB7CiAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICB9CkBAIC05OTQ3LDggKzEzOTYzLDEwIEBACiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPc3M6c3RyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2xpc3QsICZ4LCAmZW5jb2RpbmcsICZlcnJvcnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoeCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopX1B5VW5pY29kZV9OZXcoMCk7CisgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICBQeV9JTkNSRUYodW5pY29kZV9lbXB0eSk7CisgICAgICAgIHJldHVybiB1bmljb2RlX2VtcHR5OworICAgIH0KICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCAmJiBlcnJvcnMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cih4KTsKICAgICBlbHNlCkBAIC05OTU4LDMxICsxMzk3NiwxMDEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX3N1YnR5cGVfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5VW5pY29kZU9iamVjdCAqdG1wLCAqcG5ldzsKLSAgICBQeV9zc2l6ZV90IG47CisgICAgUHlPYmplY3QgKnVuaWNvZGUsICpzZWxmOworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBjaGFyX3NpemU7CisgICAgaW50IHNoYXJlX3dzdHIsIHNoYXJlX3V0Zjg7CisgICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgdm9pZCAqZGF0YTsKIAogICAgIGFzc2VydChQeVR5cGVfSXNTdWJ0eXBlKHR5cGUsICZQeVVuaWNvZGVfVHlwZSkpOwotICAgIHRtcCA9IChQeVVuaWNvZGVPYmplY3QgKil1bmljb2RlX25ldygmUHlVbmljb2RlX1R5cGUsIGFyZ3MsIGt3ZHMpOwotICAgIGlmICh0bXAgPT0gTlVMTCkKKworICAgIHVuaWNvZGUgPSB1bmljb2RlX25ldygmUHlVbmljb2RlX1R5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmICh1bmljb2RlID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2sodG1wKSk7Ci0gICAgcG5ldyA9IChQeVVuaWNvZGVPYmplY3QgKikgdHlwZS0+dHBfYWxsb2ModHlwZSwgbiA9IHRtcC0+bGVuZ3RoKTsKLSAgICBpZiAocG5ldyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIGFzc2VydChfUHlVbmljb2RlX0NIRUNLKHVuaWNvZGUpKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKSB7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHBuZXctPnN0ciA9IChQeV9VTklDT0RFKikgUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeV9VTklDT0RFKSAqIChuKzEpKTsKLSAgICBpZiAocG5ldy0+c3RyID09IE5VTEwpIHsKLSAgICAgICAgX1B5X0ZvcmdldFJlZmVyZW5jZSgoUHlPYmplY3QgKilwbmV3KTsKLSAgICAgICAgUHlPYmplY3RfRGVsKHBuZXcpOwotICAgICAgICBQeV9ERUNSRUYodG1wKTsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisKKyAgICBzZWxmID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHNlbGYgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodW5pY29kZSk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9VTklDT0RFX0NPUFkocG5ldy0+c3RyLCB0bXAtPnN0ciwgbisxKTsKLSAgICBwbmV3LT5sZW5ndGggPSBuOwotICAgIHBuZXctPmhhc2ggPSB0bXAtPmhhc2g7Ci0gICAgUHlfREVDUkVGKHRtcCk7Ci0gICAgcmV0dXJuIChQeU9iamVjdCAqKXBuZXc7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOworICAgIGxlbmd0aCA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworCisgICAgX1B5VW5pY29kZV9MRU5HVEgoc2VsZikgPSBsZW5ndGg7CisjaWZkZWYgUHlfREVCVUcKKyAgICBfUHlVbmljb2RlX0hBU0goc2VsZikgPSAtMTsKKyNlbHNlCisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpOworI2VuZGlmCisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5pbnRlcm5lZCA9IDA7CisgICAgX1B5VW5pY29kZV9TVEFURShzZWxmKS5raW5kID0ga2luZDsKKyAgICBfUHlVbmljb2RlX1NUQVRFKHNlbGYpLmNvbXBhY3QgPSAwOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikuYXNjaWkgPSBfUHlVbmljb2RlX1NUQVRFKHVuaWNvZGUpLmFzY2lpOworICAgIF9QeVVuaWNvZGVfU1RBVEUoc2VsZikucmVhZHkgPSAxOworICAgIF9QeVVuaWNvZGVfV1NUUihzZWxmKSA9IE5VTEw7CisgICAgX1B5VW5pY29kZV9VVEY4X0xFTkdUSChzZWxmKSA9IDA7CisgICAgX1B5VW5pY29kZV9VVEY4KHNlbGYpID0gTlVMTDsKKyAgICBfUHlVbmljb2RlX1dTVFJfTEVOR1RIKHNlbGYpID0gMDsKKyAgICBfUHlVbmljb2RlX0RBVEFfQU5ZKHNlbGYpID0gTlVMTDsKKworICAgIHNoYXJlX3V0ZjggPSAwOworICAgIHNoYXJlX3dzdHIgPSAwOworICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CisgICAgICAgIGNoYXJfc2l6ZSA9IDE7CisgICAgICAgIGlmIChQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUodW5pY29kZSkgPCAxMjgpCisgICAgICAgICAgICBzaGFyZV91dGY4ID0gMTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMkJZVEVfS0lORCkgeworICAgICAgICBjaGFyX3NpemUgPSAyOworICAgICAgICBpZiAoc2l6ZW9mKHdjaGFyX3QpID09IDIpCisgICAgICAgICAgICBzaGFyZV93c3RyID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKTsKKyAgICAgICAgY2hhcl9zaXplID0gNDsKKyAgICAgICAgaWYgKHNpemVvZih3Y2hhcl90KSA9PSA0KQorICAgICAgICAgICAgc2hhcmVfd3N0ciA9IDE7CisgICAgfQorCisgICAgLyogRW5zdXJlIHdlIHdvbid0IG92ZXJmbG93IHRoZSBsZW5ndGguICovCisgICAgaWYgKGxlbmd0aCA+IChQWV9TU0laRV9UX01BWCAvIGNoYXJfc2l6ZSAtIDEpKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CisgICAgZGF0YSA9IFB5T2JqZWN0X01BTExPQygobGVuZ3RoICsgMSkgKiBjaGFyX3NpemUpOworICAgIGlmIChkYXRhID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBvbkVycm9yOworICAgIH0KKworICAgIF9QeVVuaWNvZGVfREFUQV9BTlkoc2VsZikgPSBkYXRhOworICAgIGlmIChzaGFyZV91dGY4KSB7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOF9MRU5HVEgoc2VsZikgPSBsZW5ndGg7CisgICAgICAgIF9QeVVuaWNvZGVfVVRGOChzZWxmKSA9IGRhdGE7CisgICAgfQorICAgIGlmIChzaGFyZV93c3RyKSB7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUl9MRU5HVEgoc2VsZikgPSBsZW5ndGg7CisgICAgICAgIF9QeVVuaWNvZGVfV1NUUihzZWxmKSA9ICh3Y2hhcl90ICopZGF0YTsKKyAgICB9CisKKyAgICBQeV9NRU1DUFkoZGF0YSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCisgICAgICAgICAgICAgIGtpbmQgKiAobGVuZ3RoICsgMSkpOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc2VsZiwgMSkpOworI2lmZGVmIFB5X0RFQlVHCisgICAgX1B5VW5pY29kZV9IQVNIKHNlbGYpID0gX1B5VW5pY29kZV9IQVNIKHVuaWNvZGUpOworI2VuZGlmCisgICAgUHlfREVDUkVGKHVuaWNvZGUpOworICAgIHJldHVybiBzZWxmOworCitvbkVycm9yOgorICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICBQeV9ERUNSRUYoc2VsZik7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUih1bmljb2RlX2RvYywKQEAgLTEwMDQ1LDEyICsxNDEzMywxMiBAQAogCiAvKiBJbml0aWFsaXplIHRoZSBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAKLXZvaWQgX1B5VW5pY29kZV9Jbml0KHZvaWQpCitpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpCiB7CiAgICAgaW50IGk7CiAKICAgICAvKiBYWFggLSBtb3ZlIHRoaXMgYXJyYXkgdG8gdW5pY29kZWN0eXBlLmMgPyAqLwotICAgIFB5X1VOSUNPREUgbGluZWJyZWFrW10gPSB7CisgICAgUHlfVUNTMiBsaW5lYnJlYWtbXSA9IHsKICAgICAgICAgMHgwMDBBLCAvKiBMSU5FIEZFRUQgKi8KICAgICAgICAgMHgwMDBELCAvKiBDQVJSSUFHRSBSRVRVUk4gKi8KICAgICAgICAgMHgwMDFDLCAvKiBGSUxFIFNFUEFSQVRPUiAqLwpAQCAtMTAwNjIsMTEgKzE0MTUwLDEwIEBACiAgICAgfTsKIAogICAgIC8qIEluaXQgdGhlIGltcGxlbWVudGF0aW9uICovCi0gICAgZnJlZV9saXN0ID0gTlVMTDsKLSAgICBudW1mcmVlID0gMDsKLSAgICB1bmljb2RlX2VtcHR5ID0gX1B5VW5pY29kZV9OZXcoMCk7CisgICAgdW5pY29kZV9lbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgaWYgKCF1bmljb2RlX2VtcHR5KQotICAgICAgICByZXR1cm47CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGNyZWF0ZSBlbXB0eSBzdHJpbmciKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHVuaWNvZGVfZW1wdHksIDEpKTsKIAogICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKICAgICAgICAgdW5pY29kZV9sYXRpbjFbaV0gPSBOVUxMOwpAQCAtMTAwNzUsMTAgKzE0MTYyLDE5IEBACiAKICAgICAvKiBpbml0aWFsaXplIHRoZSBsaW5lYnJlYWsgYmxvb20gZmlsdGVyICovCiAgICAgYmxvb21fbGluZWJyZWFrID0gbWFrZV9ibG9vbV9tYXNrKAotICAgICAgICBsaW5lYnJlYWssIHNpemVvZihsaW5lYnJlYWspIC8gc2l6ZW9mKGxpbmVicmVha1swXSkKLSAgICAgICAgKTsKKyAgICAgICAgUHlVbmljb2RlXzJCWVRFX0tJTkQsIGxpbmVicmVhaywKKyAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGxpbmVicmVhaykpOwogCiAgICAgUHlUeXBlX1JlYWR5KCZFbmNvZGluZ01hcFR5cGUpOworCisjaWZkZWYgSEFWRV9NQkNTCisgICAgd2ludmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yod2ludmVyKTsKKyAgICBpZiAoIUdldFZlcnNpb25FeCgoT1NWRVJTSU9OSU5GTyopJndpbnZlcikpIHsKKyAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisjZW5kaWYKKyAgICByZXR1cm4gMDsKIH0KIAogLyogRmluYWxpemUgdGhlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KQEAgLTEwMDg2LDIxICsxNDE4Miw3IEBACiBpbnQKIFB5VW5pY29kZV9DbGVhckZyZWVMaXN0KHZvaWQpCiB7Ci0gICAgaW50IGZyZWVsaXN0X3NpemUgPSBudW1mcmVlOwotICAgIFB5VW5pY29kZU9iamVjdCAqdTsKLQotICAgIGZvciAodSA9IGZyZWVfbGlzdDsgdSAhPSBOVUxMOykgewotICAgICAgICBQeVVuaWNvZGVPYmplY3QgKnYgPSB1OwotICAgICAgICB1ID0gKihQeVVuaWNvZGVPYmplY3QgKiopdTsKLSAgICAgICAgaWYgKHYtPnN0cikKLSAgICAgICAgICAgIFB5T2JqZWN0X0RFTCh2LT5zdHIpOwotICAgICAgICBQeV9YREVDUkVGKHYtPmRlZmVuYyk7Ci0gICAgICAgIFB5T2JqZWN0X0RlbCh2KTsKLSAgICAgICAgbnVtZnJlZS0tOwotICAgIH0KLSAgICBmcmVlX2xpc3QgPSBOVUxMOwotICAgIGFzc2VydChudW1mcmVlID09IDApOwotICAgIHJldHVybiBmcmVlbGlzdF9zaXplOworICAgIHJldHVybiAwOwogfQogCiB2b2lkCkBAIC0xMDExNywxNyArMTQxOTksMjIgQEAKICAgICAgICAgICAgIHVuaWNvZGVfbGF0aW4xW2ldID0gTlVMTDsKICAgICAgICAgfQogICAgIH0KKyAgICBfUHlVbmljb2RlX0NsZWFyU3RhdGljU3RyaW5ncygpOwogICAgICh2b2lkKVB5VW5pY29kZV9DbGVhckZyZWVMaXN0KCk7CiB9CiAKIHZvaWQKIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKFB5T2JqZWN0ICoqcCkKIHsKLSAgICByZWdpc3RlciBQeVVuaWNvZGVPYmplY3QgKnMgPSAoUHlVbmljb2RlT2JqZWN0ICopKCpwKTsKKyAgICByZWdpc3RlciBQeU9iamVjdCAqcyA9ICpwOwogICAgIFB5T2JqZWN0ICp0OworI2lmZGVmIFB5X0RFQlVHCisgICAgYXNzZXJ0KHMgIT0gTlVMTCk7CisgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ0hFQ0socykpOworI2Vsc2UKICAgICBpZiAocyA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2socykpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAiUHlVbmljb2RlX0ludGVybkluUGxhY2U6IHVuaWNvZGUgc3RyaW5ncyBvbmx5IHBsZWFzZSEiKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCiAgICAgLyogSWYgaXQncyBhIHN1YmNsYXNzLCB3ZSBkb24ndCByZWFsbHkga25vdyB3aGF0IHB1dHRpbmcKICAgICAgICBpdCBpbiB0aGUgaW50ZXJuZWQgZGljdCBtaWdodCBkby4gKi8KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KHMpKQpAQCAtMTAxNDUsNyArMTQyMzIsNyBAQAogICAgICAgIHRob3VnaCB0aGUga2V5IGlzIHByZXNlbnQgaW4gdGhlIGRpY3Rpb25hcnksCiAgICAgICAgbmFtZWx5IHdoZW4gdGhpcyBoYXBwZW5zIGR1cmluZyBhIHN0YWNrIG92ZXJmbG93LiAqLwogICAgIFB5X0FMTE9XX1JFQ1VSU0lPTgotICAgICAgICB0ID0gUHlEaWN0X0dldEl0ZW0oaW50ZXJuZWQsIChQeU9iamVjdCAqKXMpOworICAgIHQgPSBQeURpY3RfR2V0SXRlbShpbnRlcm5lZCwgcyk7CiAgICAgUHlfRU5EX0FMTE9XX1JFQ1VSU0lPTgogCiAgICAgICAgIGlmICh0KSB7CkBAIC0xMDE1Niw3ICsxNDI0Myw3IEBACiAgICAgICAgIH0KIAogICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDE7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGludGVybmVkLCAoUHlPYmplY3QgKilzLCAoUHlPYmplY3QgKilzKSA8IDApIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIHMsIHMpIDwgMCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwogICAgICAgICByZXR1cm47CkBAIC0xMDE2NSw3ICsxNDI1Miw3IEBACiAgICAgLyogVGhlIHR3byByZWZlcmVuY2VzIGluIGludGVybmVkIGFyZSBub3QgY291bnRlZCBieSByZWZjbnQuCiAgICAgICAgVGhlIGRlYWxsb2NhdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgKi8KICAgICBQeV9SRUZDTlQocykgLT0gMjsKLSAgICBQeVVuaWNvZGVfQ0hFQ0tfSU5URVJORUQocykgPSBTU1RBVEVfSU5URVJORURfTU9SVEFMOworICAgIF9QeVVuaWNvZGVfU1RBVEUocykuaW50ZXJuZWQgPSBTU1RBVEVfSU5URVJORURfTU9SVEFMOwogfQogCiB2b2lkCkBAIC0xMDE3Myw3ICsxNDI2MCw3IEBACiB7CiAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UocCk7CiAgICAgaWYgKFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCgqcCkgIT0gU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMKSB7Ci0gICAgICAgIFB5VW5pY29kZV9DSEVDS19JTlRFUk5FRCgqcCkgPSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUw7CisgICAgICAgIF9QeVVuaWNvZGVfU1RBVEUoKnApLmludGVybmVkID0gU1NUQVRFX0lOVEVSTkVEX0lNTU9SVEFMOwogICAgICAgICBQeV9JTkNSRUYoKnApOwogICAgIH0KIH0KQEAgLTEwMTg4LDEwICsxNDI3NSwxMSBAQAogICAgIHJldHVybiBzOwogfQogCi12b2lkIF9QeV9SZWxlYXNlSW50ZXJuZWRVbmljb2RlU3RyaW5ncyh2b2lkKQordm9pZAorX1B5X1JlbGVhc2VJbnRlcm5lZFVuaWNvZGVTdHJpbmdzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKmtleXM7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICpzOworICAgIFB5T2JqZWN0ICpzOwogICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeV9zc2l6ZV90IGltbW9ydGFsX3NpemUgPSAwLCBtb3J0YWxfc2l6ZSA9IDA7CiAKQEAgLTEwMjEyLDIzICsxNDMwMCwyNyBAQAogICAgIGZwcmludGYoc3RkZXJyLCAicmVsZWFzaW5nICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgaW50ZXJuZWQgc3RyaW5nc1xuIiwKICAgICAgICAgICAgIG4pOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICAgICAgcyA9IChQeVVuaWNvZGVPYmplY3QgKikgUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOwotICAgICAgICBzd2l0Y2ggKHMtPnN0YXRlKSB7CisgICAgICAgIHMgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocykgPT0gLTEpIHsKKyAgICAgICAgICAgIGFzc2VydCgwICYmICJjb3VsZCBub3QgcmVhZHkgc3RyaW5nIik7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImNvdWxkIG5vdCByZWFkeSBzdHJpbmdcbiIpOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAoUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHMpKSB7CiAgICAgICAgIGNhc2UgU1NUQVRFX05PVF9JTlRFUk5FRDoKICAgICAgICAgICAgIC8qIFhYWCBTaG91bGRuJ3QgaGFwcGVuICovCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTU1RBVEVfSU5URVJORURfSU1NT1JUQUw6CiAgICAgICAgICAgICBQeV9SRUZDTlQocykgKz0gMTsKLSAgICAgICAgICAgIGltbW9ydGFsX3NpemUgKz0gcy0+bGVuZ3RoOworICAgICAgICAgICAgaW1tb3J0YWxfc2l6ZSArPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNTVEFURV9JTlRFUk5FRF9NT1JUQUw6CiAgICAgICAgICAgICBQeV9SRUZDTlQocykgKz0gMjsKLSAgICAgICAgICAgIG1vcnRhbF9zaXplICs9IHMtPmxlbmd0aDsKKyAgICAgICAgICAgIG1vcnRhbF9zaXplICs9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJJbmNvbnNpc3RlbnQgaW50ZXJuZWQgc3RyaW5nIHN0YXRlLiIpOwogICAgICAgICB9Ci0gICAgICAgIHMtPnN0YXRlID0gU1NUQVRFX05PVF9JTlRFUk5FRDsKKyAgICAgICAgX1B5VW5pY29kZV9TVEFURShzKS5pbnRlcm5lZCA9IFNTVEFURV9OT1RfSU5URVJORUQ7CiAgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCAidG90YWwgc2l6ZSBvZiBhbGwgaW50ZXJuZWQgc3RyaW5nczogIgogICAgICAgICAgICAgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQvJSIgUFlfRk9STUFUX1NJWkVfVCAiZCAiCkBAIC0xMDI0NSw3ICsxNDMzNyw3IEBACiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgUHlPYmplY3RfSEVBRAogICAgIFB5X3NzaXplX3QgaXRfaW5kZXg7Ci0gICAgUHlVbmljb2RlT2JqZWN0ICppdF9zZXE7IC8qIFNldCB0byBOVUxMIHdoZW4gaXRlcmF0b3IgaXMgZXhoYXVzdGVkICovCisgICAgUHlPYmplY3QgKml0X3NlcTsgICAgLyogU2V0IHRvIE5VTEwgd2hlbiBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KIH0gdW5pY29kZWl0ZXJvYmplY3Q7CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDI2NiwxOCArMTQzNTgsMTkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlaXRlcl9uZXh0KHVuaWNvZGVpdGVyb2JqZWN0ICppdCkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnNlcTsKLSAgICBQeU9iamVjdCAqaXRlbTsKKyAgICBQeU9iamVjdCAqc2VxLCAqaXRlbTsKIAogICAgIGFzc2VydChpdCAhPSBOVUxMKTsKICAgICBzZXEgPSBpdC0+aXRfc2VxOwogICAgIGlmIChzZXEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzZXEpKTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DSEVDSyhzZXEpKTsKIAotICAgIGlmIChpdC0+aXRfaW5kZXggPCBQeVVuaWNvZGVfR0VUX1NJWkUoc2VxKSkgewotICAgICAgICBpdGVtID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKAotICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUoc2VxKStpdC0+aXRfaW5kZXgsIDEpOworICAgIGlmIChpdC0+aXRfaW5kZXggPCBQeVVuaWNvZGVfR0VUX0xFTkdUSChzZXEpKSB7CisgICAgICAgIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc2VxKTsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHNlcSk7CisgICAgICAgIFB5X1VDUzQgY2hyID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaXQtPml0X2luZGV4KTsKKyAgICAgICAgaXRlbSA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaHIpOwogICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKQogICAgICAgICAgICAgKytpdC0+aXRfaW5kZXg7CiAgICAgICAgIHJldHVybiBpdGVtOwpAQCAtMTAyOTMsMTUgKzE0Mzg2LDQ5IEBACiB7CiAgICAgUHlfc3NpemVfdCBsZW4gPSAwOwogICAgIGlmIChpdC0+aXRfc2VxKQotICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUoaXQtPml0X3NlcSkgLSBpdC0+aXRfaW5kZXg7CisgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGl0LT5pdF9zZXEpIC0gaXQtPml0X2luZGV4OwogICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKIH0KIAogUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywgIlByaXZhdGUgbWV0aG9kIHJldHVybmluZyBhbiBlc3RpbWF0ZSBvZiBsZW4obGlzdChpdCkpLiIpOwogCitzdGF0aWMgUHlPYmplY3QgKgordW5pY29kZWl0ZXJfcmVkdWNlKHVuaWNvZGVpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnUgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CisgICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oTikiLCBfUHlPYmplY3RfR2V0QnVpbHRpbigiaXRlciIpLCB1KTsKKyAgICB9Cit9CisKK1B5RG9jX1NUUlZBUihyZWR1Y2VfZG9jLCAiUmV0dXJuIHN0YXRlIGluZm9ybWF0aW9uIGZvciBwaWNrbGluZy4iKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK3VuaWNvZGVpdGVyX3NldHN0YXRlKHVuaWNvZGVpdGVyb2JqZWN0ICppdCwgUHlPYmplY3QgKnN0YXRlKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBQeUxvbmdfQXNTc2l6ZV90KHN0YXRlKTsKKyAgICBpZiAoaW5kZXggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGluZGV4IDwgMCkKKyAgICAgICAgaW5kZXggPSAwOworICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0c3RhdGVfZG9jLCAiU2V0IHN0YXRlIGluZm9ybWF0aW9uIGZvciB1bnBpY2tsaW5nLiIpOworCiBzdGF0aWMgUHlNZXRob2REZWYgdW5pY29kZWl0ZXJfbWV0aG9kc1tdID0gewogICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXVuaWNvZGVpdGVyX2xlbiwgTUVUSF9OT0FSR1MsCiAgICAgIGxlbmd0aF9oaW50X2RvY30sCisgICAgeyJfX3JlZHVjZV9fIiwgICAgICAoUHlDRnVuY3Rpb24pdW5pY29kZWl0ZXJfcmVkdWNlLCBNRVRIX05PQVJHUywKKyAgICAgcmVkdWNlX2RvY30sCisgICAgeyJfX3NldHN0YXRlX18iLCAgICAoUHlDRnVuY3Rpb24pdW5pY29kZWl0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKICAgICB7TlVMTCwgICAgICBOVUxMfSAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTAzNDcsMTYgKzE0NDc0LDE5IEBACiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXEpID09IC0xKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyh1bmljb2RlaXRlcm9iamVjdCwgJlB5VW5pY29kZUl0ZXJfVHlwZSk7CiAgICAgaWYgKGl0ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGl0LT5pdF9pbmRleCA9IDA7CiAgICAgUHlfSU5DUkVGKHNlcSk7Ci0gICAgaXQtPml0X3NlcSA9IChQeVVuaWNvZGVPYmplY3QgKilzZXE7CisgICAgaXQtPml0X3NlcSA9IHNlcTsKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soaXQpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KIAorCiBzaXplX3QKIFB5X1VOSUNPREVfc3RybGVuKGNvbnN0IFB5X1VOSUNPREUgKnUpCiB7CkBAIC0xMDQ0OCwyNSArMTQ1NzgsMzEgQEAKIH0KIAogUHlfVU5JQ09ERSoKLVB5VW5pY29kZV9Bc1VuaWNvZGVDb3B5KFB5T2JqZWN0ICpvYmplY3QpCitQeVVuaWNvZGVfQXNVbmljb2RlQ29weShQeU9iamVjdCAqdW5pY29kZSkKIHsKLSAgICBQeVVuaWNvZGVPYmplY3QgKnVuaWNvZGUgPSAoUHlVbmljb2RlT2JqZWN0ICopb2JqZWN0OwotICAgIFB5X1VOSUNPREUgKmNvcHk7Ci0gICAgUHlfc3NpemVfdCBzaXplOworICAgIFB5X1VOSUNPREUgKnUsICpjb3B5OworICAgIFB5X3NzaXplX3QgbGVuLCBzaXplOwogCisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sodW5pY29kZSkpIHsKKyAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHUgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZSh1bmljb2RlLCAmbGVuKTsKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICAvKiBFbnN1cmUgd2Ugd29uJ3Qgb3ZlcmZsb3cgdGhlIHNpemUuICovCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSA+ICgoUFlfU1NJWkVfVF9NQVggLyBzaXplb2YoUHlfVU5JQ09ERSkpIC0gMSkpIHsKKyAgICBpZiAobGVuID4gKChQWV9TU0laRV9UX01BWCAvIHNpemVvZihQeV9VTklDT0RFKSkgLSAxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgc2l6ZSA9IFB5VW5pY29kZV9HRVRfU0laRSh1bmljb2RlKSArIDE7IC8qIGNvcHkgdGhlIG51bCBjaGFyYWN0ZXIgKi8KKyAgICBzaXplID0gbGVuICsgMTsgLyogY29weSB0aGUgbnVsbCBjaGFyYWN0ZXIgKi8KICAgICBzaXplICo9IHNpemVvZihQeV9VTklDT0RFKTsKICAgICBjb3B5ID0gUHlNZW1fTWFsbG9jKHNpemUpOwogICAgIGlmIChjb3B5ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbWNweShjb3B5LCBQeVVuaWNvZGVfQVNfVU5JQ09ERSh1bmljb2RlKSwgc2l6ZSk7CisgICAgbWVtY3B5KGNvcHksIHUsIHNpemUpOwogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmggYi9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKaW5kZXggODhhNzkxMi4uNDZhOTJiYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCisrKyBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaApAQCAtOCwxODQgKzgsOTkyIEBACiAgICAgezAsIDAsIDAsIDAsIDAsIDQ4fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTA1Nn0sCiAgICAgezAsIDAsIDAsIDAsIDAsIDEwMjR9LAotICAgIHswLCAwLCAwLCAwLCAwLCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgMSwgMSwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDIsIDIsIDU2Mzh9LAotICAgIHswLCAwLCAwLCAzLCAzLCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgNCwgNCwgNTYzOH0sCi0gICAgezAsIDAsIDAsIDUsIDUsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA2LCA2LCA1NjM4fSwKLSAgICB7MCwgMCwgMCwgNywgNywgNTYzOH0sCi0gICAgezAsIDAsIDAsIDgsIDgsIDU2Mzh9LAotICAgIHswLCAwLCAwLCA5LCA5LCA1NjM4fSwKLSAgICB7MCwgMzIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAwLCAwLCAwLCAwLCAxNTM2fSwKLSAgICB7NjU1MDQsIDAsIDY1NTA0LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDIsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCAzLCA1MTI0fSwKLSAgICB7NzQzLCAwLCA3NDMsIDAsIDAsIDE4MDF9LAotICAgIHswLCAwLCAwLCAwLCAxLCA1MTI0fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgNTEyMH0sCi0gICAgezEyMSwgMCwgMTIxLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NTM1LCAwLCA2NTUzNSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1MzM3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjUzMDQsIDAsIDY1MzA0LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0MTUsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTIzNiwgMCwgNjUyMzYsIDAsIDAsIDE4MDF9LAotICAgIHsxOTUsIDAsIDE5NSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIxMCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwNiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIwNSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDc5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjAyLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjAzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjA3LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7OTcsIDAsIDk3LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMjExLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMjA5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MTYzLCAwLCAxNjMsIDAsIDAsIDE4MDF9LAotICAgIHswLCAyMTMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHsxMzAsIDAsIDEzMCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIxNCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIxOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIxNywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDIxOSwgMCwgMCwgMCwgMTkyMX0sCisgICAgezAsIDAsIDAsIDAsIDAsIDM1OTB9LAorICAgIHswLCAwLCAwLCAxLCAxLCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgMiwgMiwgMzU5MH0sCisgICAgezAsIDAsIDAsIDMsIDMsIDM1OTB9LAorICAgIHswLCAwLCAwLCA0LCA0LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgNSwgNSwgMzU5MH0sCisgICAgezAsIDAsIDAsIDYsIDYsIDM1OTB9LAorICAgIHswLCAwLCAwLCA3LCA3LCAzNTkwfSwKKyAgICB7MCwgMCwgMCwgOCwgOCwgMzU5MH0sCisgICAgezAsIDAsIDAsIDksIDksIDM1OTB9LAorICAgIHswLCAzMiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxNTM2fSwKKyAgICB7LTMyLCAwLCAtMzIsIDAsIDAsIDk5OTN9LAorICAgIHswLCAwLCAwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNDA5Nn0sCisgICAgezAsIDAsIDAsIDAsIDIsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCAzLCAzMDc2fSwKKyAgICB7MTY3NzcyMTgsIDE3ODI1NzkyLCAxNjc3NzIxOCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAwLCAwLCAwLCAwLCA1NjMyfSwKKyAgICB7MCwgMCwgMCwgMCwgMSwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDAsIDMwNzJ9LAorICAgIHszMzU1NDQzOCwgMTg4NzQzNzEsIDMzNTU0NDQwLCAwLCAwLCAyNjM3N30sCisgICAgezEyMSwgMCwgMTIxLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMSwgMCwgLTEsIDAsIDAsIDk5OTN9LAorICAgIHsxNjc3NzIyOCwgMzM1NTQ0NDIsIDE2Nzc3MjI4LCAwLCAwLCAyNjQ5N30sCisgICAgey0yMzIsIDAsIC0yMzIsIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDQ0OCwgMTg4NzQzODEsIDMzNTU0NDQ4LCAwLCAwLCAyNjM3N30sCisgICAgezAsIC0xMjEsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTY3NzcyMzYsIDE3ODI1ODEwLCAxNjc3NzIzNiwgMCwgMCwgMjYzNzd9LAorICAgIHsxOTUsIDAsIDE5NSwgMCwgMCwgOTk5M30sCisgICAgezAsIDIxMCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDYsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjA1LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDc5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIwMiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjA3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezk3LCAwLCA5NywgMCwgMCwgOTk5M30sCisgICAgezAsIDIxMSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMDksIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTYzLCAwLCAxNjMsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyMTMsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTMwLCAwLCAxMzAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyMTQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMjE4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDIxNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAyMTksIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMTc5M30sCi0gICAgezU2LCAwLCA1NiwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDIsIDEsIDAsIDAsIDE5MjF9LAotICAgIHs2NTUzNSwgMSwgMCwgMCwgMCwgMTg1N30sCi0gICAgezY1NTM0LCAwLCA2NTUzNSwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDU3LCAwLCA2NTQ1NywgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDM5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0ODAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQwNiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDEwNzk1LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjUzNzMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAxMDc5MiwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezEwODE1LCAwLCAxMDgxNSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1MzQxLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjksIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA3MSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezEwNzgzLCAwLCAxMDc4MywgMCwgMCwgMTgwMX0sCi0gICAgezEwNzgwLCAwLCAxMDc4MCwgMCwgMCwgMTgwMX0sCi0gICAgezEwNzgyLCAwLCAxMDc4MiwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzI2LCAwLCA2NTMyNiwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzMwLCAwLCA2NTMzMCwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzMxLCAwLCA2NTMzMSwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzM0LCAwLCA2NTMzNCwgMCwgMCwgMTgwMX0sCi0gICAgezY1MzMzLCAwLCA2NTMzMywgMCwgMCwgMTgwMX0sCi0gICAgezY1MzI5LCAwLCA2NTMyOSwgMCwgMCwgMTgwMX0sCi0gICAgezQyODkzLCA2MTMsIDQyODkzLCAwLCAwLCAzODQ5fSwKLSAgICB7NjUzMjcsIDAsIDY1MzI3LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjUsIDAsIDY1MzI1LCAwLCAwLCAxODAxfSwKLSAgICB7MTA3NDMsIDAsIDEwNzQzLCAwLCAwLCAxODAxfSwKLSAgICB7MTA3NDksIDAsIDEwNzQ5LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjMsIDAsIDY1MzIzLCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMjIsIDAsIDY1MzIyLCAwLCAwLCAxODAxfSwKLSAgICB7MTA3MjcsIDAsIDEwNzI3LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMTgsIDAsIDY1MzE4LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NjcsIDAsIDY1NDY3LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMTksIDAsIDY1MzE5LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NjUsIDAsIDY1NDY1LCAwLCAwLCAxODAxfSwKLSAgICB7NjUzMTcsIDAsIDY1MzE3LCAwLCAwLCAxODAxfSwKLSAgICB7ODQsIDAsIDg0LCAwLCAwLCAxNTM2fSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTAyNX0sCi0gICAgezAsIDM4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMzcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDYzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU0OTgsIDAsIDY1NDk4LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0OTksIDAsIDY1NDk5LCAwLCAwLCAxODAxfSwKLSAgICB7NjU1MDUsIDAsIDY1NTA1LCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NzIsIDAsIDY1NDcyLCAwLCAwLCAxODAxfSwKLSAgICB7NjU0NzMsIDAsIDY1NDczLCAwLCAwLCAxODAxfSwKLSAgICB7MCwgOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDc0LCAwLCA2NTQ3NCwgMCwgMCwgMTgwMX0sCi0gICAgezY1NDc5LCAwLCA2NTQ3OSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ4OSwgMCwgNjU0ODksIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ4MiwgMCwgNjU0ODIsIDAsIDAsIDE4MDF9LAotICAgIHs2NTUyOCwgMCwgNjU1MjgsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ1MCwgMCwgNjU0NTAsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ1NiwgMCwgNjU0NTYsIDAsIDAsIDE4MDF9LAotICAgIHs3LCAwLCA3LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0NzYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTQ0MCwgMCwgNjU0NDAsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTUyOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDgwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMTUsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs2NTUyMSwgMCwgNjU1MjEsIDAsIDAsIDE4MDF9LAotICAgIHswLCA0OCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDg4LCAwLCA2NTQ4OCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDAsIDAsIDAsIDAsIDE1Mzd9LAotICAgIHswLCA3MjY0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgMCwgMCwgMCwgMSwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDIsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCAzLCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgNCwgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDUsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA2LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgNywgNTYzNn0sCi0gICAgezAsIDAsIDAsIDAsIDgsIDU2MzZ9LAotICAgIHswLCAwLCAwLCAwLCA5LCA1NjM2fSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgNTg4OH0sCi0gICAgezQyODc3LCA3NTQ1LCA0Mjg3NywgMCwgMCwgMzg0OX0sCi0gICAgezM4MTQsIDAsIDM4MTQsIDAsIDAsIDE4MDF9LAotICAgIHs2NTQ3NywgMCwgNjU0NzcsIDAsIDAsIDE4MDF9LAotICAgIHswLCA1NzkyMSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezgsIDAsIDgsIDAsIDAsIDE4MDF9LAotICAgIHswLCA2NTUyOCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezc0LCAwLCA3NCwgMCwgMCwgMTgwMX0sCi0gICAgezg2LCAwLCA4NiwgMCwgMCwgMTgwMX0sCi0gICAgezEwMCwgMCwgMTAwLCAwLCAwLCAxODAxfSwKLSAgICB7MTI4LCAwLCAxMjgsIDAsIDAsIDE4MDF9LAotICAgIHsxMTIsIDAsIDExMiwgMCwgMCwgMTgwMX0sCi0gICAgezEyNiwgMCwgMTI2LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU1MjgsIDAsIDAsIDAsIDE4NTd9LAotICAgIHs5LCAwLCA5LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgNjU0NjIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTUyNywgMCwgMCwgMCwgMTg1N30sCi0gICAgezU4MzMxLCAwLCA1ODMzMSwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDY1NDUwLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MzYsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA2NTQyNCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDY1NDA4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjU0MTAsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCAwLCAwLCAwLCAwLCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgNCwgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDUsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA2LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgNywgNTEyNH0sCi0gICAgezAsIDAsIDAsIDAsIDgsIDUxMjR9LAotICAgIHswLCAwLCAwLCAwLCA5LCA1MTI0fSwKLSAgICB7MCwgMCwgMCwgMCwgMCwgMTc5Mn0sCi0gICAgezAsIDU4MDE5LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTcxNTMsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NzI3NCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDI4LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7NjU1MDgsIDAsIDY1NTA4LCAwLCAwLCAxODAxfSwKLSAgICB7MCwgMTYsIDAsIDAsIDAsIDU4ODh9LAotICAgIHs2NTUyMCwgMCwgNjU1MjAsIDAsIDAsIDU4ODh9LAotICAgIHswLCAyNiwgMCwgMCwgMCwgMTAyNH0sCi0gICAgezY1NTEwLCAwLCA2NTUxMCwgMCwgMCwgMTAyNH0sCi0gICAgezAsIDU0NzkzLCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNjE3MjIsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDgwOSwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezU0NzQxLCAwLCA1NDc0MSwgMCwgMCwgMTgwMX0sCi0gICAgezU0NzQ0LCAwLCA1NDc0NCwgMCwgMCwgMTgwMX0sCi0gICAgezAsIDU0NzU2LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ3ODcsIDAsIDAsIDAsIDE5MjF9LAotICAgIHswLCA1NDc1MywgMCwgMCwgMCwgMTkyMX0sCi0gICAgezAsIDU0NzU0LCAwLCAwLCAwLCAxOTIxfSwKLSAgICB7MCwgNTQ3MjEsIDAsIDAsIDAsIDE5MjF9LAotICAgIHs1ODI3MiwgMCwgNTgyNzIsIDAsIDAsIDE4MDF9LAorICAgIHs1NiwgMCwgNTYsIDAsIDAsIDk5OTN9LAorICAgIHswLCAyLCAxLCAwLCAwLCAxMDExM30sCisgICAgey0xLCAxLCAwLCAwLCAwLCAxMDA0OX0sCisgICAgey0yLCAwLCAtMSwgMCwgMCwgOTk5M30sCisgICAgey03OSwgMCwgLTc5LCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ0NTYsIDE4ODc0Mzg5LCAzMzU1NDQ1NiwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtOTcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTU2LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMzAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgMTA3OTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTE2MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAxMDc5MiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHsxMDgxNSwgMCwgMTA4MTUsIDAsIDAsIDk5OTN9LAorICAgIHswLCAtMTk1LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDY5LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDcxLCAwLCAwLCAwLCAxMDExM30sCisgICAgezEwNzgzLCAwLCAxMDc4MywgMCwgMCwgOTk5M30sCisgICAgezEwNzgwLCAwLCAxMDc4MCwgMCwgMCwgOTk5M30sCisgICAgezEwNzgyLCAwLCAxMDc4MiwgMCwgMCwgOTk5M30sCisgICAgey0yMTAsIDAsIC0yMTAsIDAsIDAsIDk5OTN9LAorICAgIHstMjA2LCAwLCAtMjA2LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwNSwgMCwgLTIwNSwgMCwgMCwgOTk5M30sCisgICAgey0yMDIsIDAsIC0yMDIsIDAsIDAsIDk5OTN9LAorICAgIHstMjAzLCAwLCAtMjAzLCAwLCAwLCA5OTkzfSwKKyAgICB7LTIwNywgMCwgLTIwNywgMCwgMCwgOTk5M30sCisgICAgezQyMjgwLCAwLCA0MjI4MCwgMCwgMCwgOTk5M30sCisgICAgezQyMzA4LCAwLCA0MjMwOCwgMCwgMCwgOTk5M30sCisgICAgey0yMDksIDAsIC0yMDksIDAsIDAsIDk5OTN9LAorICAgIHstMjExLCAwLCAtMjExLCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3NDMsIDAsIDEwNzQzLCAwLCAwLCA5OTkzfSwKKyAgICB7MTA3NDksIDAsIDEwNzQ5LCAwLCAwLCA5OTkzfSwKKyAgICB7LTIxMywgMCwgLTIxMywgMCwgMCwgOTk5M30sCisgICAgey0yMTQsIDAsIC0yMTQsIDAsIDAsIDk5OTN9LAorICAgIHsxMDcyNywgMCwgMTA3MjcsIDAsIDAsIDk5OTN9LAorICAgIHstMjE4LCAwLCAtMjE4LCAwLCAwLCA5OTkzfSwKKyAgICB7LTY5LCAwLCAtNjksIDAsIDAsIDk5OTN9LAorICAgIHstMjE3LCAwLCAtMjE3LCAwLCAwLCA5OTkzfSwKKyAgICB7LTcxLCAwLCAtNzEsIDAsIDAsIDk5OTN9LAorICAgIHstMjE5LCAwLCAtMjE5LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTQwODl9LAogICAgIHswLCAwLCAwLCAwLCAwLCA1ODg5fSwKLSAgICB7NDI4NzcsIDc1NDUsIDQyODc3LCAwLCAwLCAzOTY5fSwKLSAgICB7NDI4OTMsIDYxMywgNDI4OTMsIDAsIDAsIDM5Njl9LAotICAgIHswLCA0MCwgMCwgMCwgMCwgMTkyMX0sCi0gICAgezY1NDk2LCAwLCA2NTQ5NiwgMCwgMCwgMTgwMX0sCisgICAgezE2Nzc3MjQ0LCAxNzgyNTgxOCwgMTY3NzcyNDQsIDAsIDAsIDMwMjE2fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTMzMjF9LAorICAgIHswLCAzOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAzNywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA2NCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCA2MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHs1MDMzMTY4MSwgMTk5MjI5NzMsIDUwMzMxNjgxLCAwLCAwLCAyNjM3N30sCisgICAgey0zOCwgMCwgLTM4LCAwLCAwLCA5OTkzfSwKKyAgICB7LTM3LCAwLCAtMzcsIDAsIDAsIDk5OTN9LAorICAgIHs1MDMzMTY4OCwgMTk5MjI5ODAsIDUwMzMxNjg4LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MjYxLCAxNzgyNTgzNSwgMTY3NzcyNjEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7LTY0LCAwLCAtNjQsIDAsIDAsIDk5OTN9LAorICAgIHstNjMsIDAsIC02MywgMCwgMCwgOTk5M30sCisgICAgezAsIDgsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTY3NzcyNjQsIDE3ODI1ODM4LCAxNjc3NzI2NCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzI2NywgMTc4MjU4NDEsIDE2Nzc3MjY3LCAwLCAwLCAyNjM3N30sCisgICAgezAsIDAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MTY3NzcyNzAsIDE3ODI1ODQ0LCAxNjc3NzI3MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzI3MywgMTc4MjU4NDcsIDE2Nzc3MjczLCAwLCAwLCAyNjM3N30sCisgICAgey04LCAwLCAtOCwgMCwgMCwgOTk5M30sCisgICAgezE2Nzc3Mjc2LCAxNzgyNTg1MCwgMTY3NzcyNzYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzcyNzksIDE3ODI1ODUzLCAxNjc3NzI3OSwgMCwgMCwgMjYzNzd9LAorICAgIHs3LCAwLCA3LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgLTYwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezE2Nzc3MjgyLCAxNzgyNTg1NiwgMTY3NzcyODIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgODAsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTgwLCAwLCAtODAsIDAsIDAsIDk5OTN9LAorICAgIHswLCAxNSwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHstMTUsIDAsIC0xNSwgMCwgMCwgOTk5M30sCisgICAgezAsIDQ4LCAwLCAwLCAwLCAxMDExM30sCisgICAgey00OCwgMCwgLTQ4LCAwLCAwLCA5OTkzfSwKKyAgICB7MzM1NTQ1MDIsIDE4ODc0NDM1LCAzMzU1NDUwNCwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxNTM3fSwKKyAgICB7MCwgNzI2NCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAwLCAwLCAwLCAxLCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgMiwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDMsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA0LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgNSwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDYsIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCA3LCAzNTg4fSwKKyAgICB7MCwgMCwgMCwgMCwgOCwgMzU4OH0sCisgICAgezAsIDAsIDAsIDAsIDksIDM1ODh9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzODQwfSwKKyAgICB7MzUzMzIsIDAsIDM1MzMyLCAwLCAwLCA5OTkzfSwKKyAgICB7MzgxNCwgMCwgMzgxNCwgMCwgMCwgOTk5M30sCisgICAgezMzNTU0NTA5LCAxODg3NDQ0MiwgMzM1NTQ1MDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1MTQsIDE4ODc0NDQ3LCAzMzU1NDUxNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDUxOSwgMTg4NzQ0NTIsIDMzNTU0NTE5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTI0LCAxODg3NDQ1NywgMzM1NTQ1MjQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1MjksIDE4ODc0NDYyLCAzMzU1NDUyOSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzMxNywgMTc4MjU4OTEsIDE2Nzc3MzE3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3MzIxLCAxODg3NDQ3MCwgMTY3NzczMjEsIDAsIDAsIDI2NDk3fSwKKyAgICB7OCwgMCwgOCwgMCwgMCwgOTk5M30sCisgICAgezAsIC04LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU0NTQxLCAxODg3NDQ3NCwgMzM1NTQ1NDEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzE3NjMsIDE5OTIzMDU1LCA1MDMzMTc2MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMTc3MCwgMTk5MjMwNjIsIDUwMzMxNzcwLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMxNzc3LCAxOTkyMzA2OSwgNTAzMzE3NzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NzQsIDAsIDc0LCAwLCAwLCA5OTkzfSwKKyAgICB7ODYsIDAsIDg2LCAwLCAwLCA5OTkzfSwKKyAgICB7MTAwLCAwLCAxMDAsIDAsIDAsIDk5OTN9LAorICAgIHsxMjgsIDAsIDEyOCwgMCwgMCwgOTk5M30sCisgICAgezExMiwgMCwgMTEyLCAwLCAwLCA5OTkzfSwKKyAgICB7MTI2LCAwLCAxMjYsIDAsIDAsIDk5OTN9LAorICAgIHszMzU1NDU2NywgMTg4NzQ1MDAsIDE2Nzc3MzUzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTczLCAxODg3NDUwNiwgMTY3NzczNTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1NzksIDE4ODc0NTEyLCAxNjc3NzM2NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDU4NSwgMTg4NzQ1MTgsIDE2Nzc3MzcxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NTkxLCAxODg3NDUyNCwgMTY3NzczNzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ1OTcsIDE4ODc0NTMwLCAxNjc3NzM4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDYwMywgMTg4NzQ1MzYsIDE2Nzc3Mzg5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjA5LCAxODg3NDU0MiwgMTY3NzczOTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2MTUsIDE4ODc0NTQ4LCAxNjc3NzQwMSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDYyMSwgMTg4NzQ1NTQsIDE2Nzc3NDA3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjI3LCAxODg3NDU2MCwgMTY3Nzc0MTMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2MzMsIDE4ODc0NTY2LCAxNjc3NzQxOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDYzOSwgMTg4NzQ1NzIsIDE2Nzc3NDI1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjQ1LCAxODg3NDU3OCwgMTY3Nzc0MzEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ2NTEsIDE4ODc0NTg0LCAxNjc3NzQzNywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDY1NywgMTg4NzQ1OTAsIDE2Nzc3NDQzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NjYzLCAxODg3NDU5NiwgMTY3Nzc0NDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2NjksIDE4ODc0NjAyLCAxNjc3NzQ1NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY3NSwgMTg4NzQ2MDgsIDE2Nzc3NDYxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NjgxLCAxODg3NDYxNCwgMTY3Nzc0NjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ2ODcsIDE4ODc0NjIwLCAxNjc3NzQ3MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDY5MywgMTg4NzQ2MjYsIDE2Nzc3NDc5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Njk5LCAxODg3NDYzMiwgMTY3Nzc0ODUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3MDUsIDE4ODc0NjM4LCAxNjc3NzQ5MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDcxMSwgMTg4NzQ2NDQsIDE2Nzc3NDk3LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzE3LCAxODg3NDY1MCwgMTY3Nzc1MDMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3MjMsIDE4ODc0NjU2LCAxNjc3NzUwOSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDcyOSwgMTg4NzQ2NjIsIDE2Nzc3NTE1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzM1LCAxODg3NDY2OCwgMTY3Nzc1MjEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3NDEsIDE4ODc0Njc0LCAxNjc3NzUyNywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDc0NywgMTg4NzQ2ODAsIDE2Nzc3NTMzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0NzUzLCAxODg3NDY4NiwgMTY3Nzc1MzksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ3NTksIDE4ODc0NjkyLCAxNjc3NzU0NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc2NSwgMTg4NzQ2OTgsIDE2Nzc3NTUxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0NzcxLCAxODg3NDcwNCwgMTY3Nzc1NTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3NzcsIDE4ODc0NzEwLCAxNjc3NzU2MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDc4MywgMTg4NzQ3MTYsIDE2Nzc3NTY5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0Nzg5LCAxODg3NDcyMiwgMTY3Nzc1NzUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAxNjc3NzU4MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgwMSwgMTg4NzQ3MzQsIDE2Nzc3NTg3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODA3LCAxODg3NDc0MCwgMTY3Nzc1OTMsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MTMsIDE4ODc0NzQ2LCAxNjc3NzU5OSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgxOSwgMTg4NzQ3NTIsIDE2Nzc3NjA1LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODI1LCAxODg3NDc1OCwgMTY3Nzc2MTEsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4MzEsIDE4ODc0NzY0LCAxNjc3NzYxNywgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDgzNywgMTg4NzQ3NzAsIDE2Nzc3NjIzLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDMzNTU0ODU3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODYyLCAxODg3NDc5NSwgMTY3Nzc2NDgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NjgsIDE4ODc0ODAxLCAzMzU1NDg3MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3NSwgMTg4NzQ4MDgsIDMzNTU0ODc1LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDk3LCAxOTkyMzM4OSwgNTAzMzIxMDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTc0LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU0ODkwLCAxODg3NDgyMywgMTY3Nzc2NzYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MTY3Nzc2NzksIDE3ODI2MjUzLCAxNjc3NzY3OSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg5OSwgMTg4NzQ4MzIsIDMzNTU0OTAxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTA2LCAxODg3NDgzOSwgMTY3Nzc2OTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTIsIDE4ODc0ODQ1LCAzMzU1NDkxNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkxOSwgMTg4NzQ4NTIsIDMzNTU0OTE5LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMTQxLCAxOTkyMzQzMywgNTAzMzIxNDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MCwgLTg2LCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU0OTM0LCAxODg3NDg2NywgMTY3Nzc3MjAsIDAsIDAsIDI2NDMzfSwKKyAgICB7NTAzMzIxNTcsIDE5OTIzNDQ5LCA1MDMzMjE1NywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjE2NCwgMTk5MjM0NTYsIDUwMzMyMTY0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTU0LCAxODg3NDg4NywgMzM1NTQ5NTQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIxNzYsIDE5OTIzNDY4LCA1MDMzMjE3NiwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtMTAwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezUwMzMyMTgzLCAxOTkyMzQ3NSwgNTAzMzIxODMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIxOTAsIDE5OTIzNDgyLCA1MDMzMjE5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk4MCwgMTg4NzQ5MTMsIDMzNTU0OTgwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTg1LCAxODg3NDkxOCwgMzM1NTQ5ODUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIyMDcsIDE5OTIzNDk5LCA1MDMzMjIwNywgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtMTEyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezMzNTU0OTk3LCAxODg3NDkzMCwgMzM1NTQ5OTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMDQsIDE4ODc0OTM3LCAxNjc3Nzc5MCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAxMCwgMTg4NzQ5NDMsIDMzNTU1MDEyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDE3LCAxODg3NDk1MCwgMzM1NTUwMTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIyMzksIDE5OTIzNTMxLCA1MDMzMjI0MiwgMCwgMCwgMjYzNzd9LAorICAgIHswLCAtMTI4LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMjYsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MzM1NTUwMzIsIDE4ODc0OTY1LCAxNjc3NzgxOCwgMCwgMCwgMjY0MzN9LAorICAgIHswLCAwLCAwLCAwLCAwLCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgNCwgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDUsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA2LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgNywgMzA3Nn0sCisgICAgezAsIDAsIDAsIDAsIDgsIDMwNzZ9LAorICAgIHswLCAwLCAwLCAwLCA5LCAzMDc2fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgMTc5Mn0sCisgICAgezAsIC03NTE3LCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC04MzgzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC04MjYyLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIDI4LCAwLCAwLCAwLCAxMDExM30sCisgICAgey0yOCwgMCwgLTI4LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMTYsIDAsIDAsIDAsIDEyMTYwfSwKKyAgICB7LTE2LCAwLCAtMTYsIDAsIDAsIDEyMDQwfSwKKyAgICB7MCwgMjYsIDAsIDAsIDAsIDkzNDR9LAorICAgIHstMjYsIDAsIC0yNiwgMCwgMCwgOTIyNH0sCisgICAgezAsIC0xMDc0MywgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMzgxNCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA3MjcsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTEwNzk1LCAwLCAtMTA3OTUsIDAsIDAsIDk5OTN9LAorICAgIHstMTA3OTIsIDAsIC0xMDc5MiwgMCwgMCwgOTk5M30sCisgICAgezAsIC0xMDc4MCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA3NDksIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTEwNzgzLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC0xMDc4MiwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHswLCAtMTA4MTUsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTcyNjQsIDAsIC03MjY0LCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTEyMX0sCisgICAgezAsIDAsIDAsIDAsIDAsIDM4NDF9LAorICAgIHswLCAtMzUzMzIsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7MCwgLTQyMjgwLCAwLCAwLCAwLCAxMDExM30sCisgICAgezAsIC00MjMwOCwgMCwgMCwgMCwgMTAxMTN9LAorICAgIHszMzU1NTAzOCwgMTg4NzQ5NzEsIDMzNTU1MDQwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDQ1LCAxODg3NDk3OCwgMzM1NTUwNDcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNTIsIDE4ODc0OTg1LCAzMzU1NTA1NCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjI3NiwgMTk5MjM1NjgsIDUwMzMyMjc5LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMjg2LCAxOTkyMzU3OCwgNTAzMzIyODksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwNzksIDE4ODc1MDEyLCAzMzU1NTA4MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4NiwgMTg4NzUwMTksIDMzNTU1MDg4LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDkzLCAxODg3NTAyNiwgMzM1NTUwOTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMDAsIDE4ODc1MDMzLCAzMzU1NTEwMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEwNywgMTg4NzUwNDAsIDMzNTU1MTA5LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTE0LCAxODg3NTA0NywgMzM1NTUxMTYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxMjEsIDE4ODc1MDU0LCAzMzU1NTEyMywgMCwgMCwgMjYzNzd9LAorICAgIHswLCAwLCAwLCAwLCAwLCAxMDI1fSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTYzM30sCisgICAgezAsIDQwLCAwLCAwLCAwLCAxMDExM30sCisgICAgey00MCwgMCwgLTQwLCAwLCAwLCA5OTkzfSwKK307CisKKy8qIGV4dGVuZGVkIGNhc2UgbWFwcGluZ3MgKi8KKworY29uc3QgUHlfVUNTNCBfUHlVbmljb2RlX0V4dGVuZGVkQ2FzZVtdID0geworICAgIDE4MSwKKyAgICA5NTYsCisgICAgOTI0LAorICAgIDIyMywKKyAgICAxMTUsCisgICAgMTE1LAorICAgIDgzLAorICAgIDgzLAorICAgIDgzLAorICAgIDExNSwKKyAgICAxMDUsCisgICAgNzc1LAorICAgIDMwNCwKKyAgICAzMjksCisgICAgNzAwLAorICAgIDExMCwKKyAgICA3MDAsCisgICAgNzgsCisgICAgMzgzLAorICAgIDExNSwKKyAgICA4MywKKyAgICA0OTYsCisgICAgMTA2LAorICAgIDc4MCwKKyAgICA3NCwKKyAgICA3ODAsCisgICAgODM3LAorICAgIDk1MywKKyAgICA5MjEsCisgICAgOTEyLAorICAgIDk1MywKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDkyMSwKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDk0NCwKKyAgICA5NjUsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5MzMsCisgICAgNzc2LAorICAgIDc2OSwKKyAgICA5NjIsCisgICAgOTYzLAorICAgIDkzMSwKKyAgICA5NzYsCisgICAgOTQ2LAorICAgIDkxNCwKKyAgICA5NzcsCisgICAgOTUyLAorICAgIDkyMCwKKyAgICA5ODEsCisgICAgOTY2LAorICAgIDkzNCwKKyAgICA5ODIsCisgICAgOTYwLAorICAgIDkyOCwKKyAgICAxMDA4LAorICAgIDk1NCwKKyAgICA5MjIsCisgICAgMTAwOSwKKyAgICA5NjEsCisgICAgOTI5LAorICAgIDEwMTMsCisgICAgOTQ5LAorICAgIDkxNywKKyAgICAxNDE1LAorICAgIDEzODEsCisgICAgMTQxMCwKKyAgICAxMzMzLAorICAgIDEzNjIsCisgICAgMTMzMywKKyAgICAxNDEwLAorICAgIDc4MzAsCisgICAgMTA0LAorICAgIDgxNywKKyAgICA3MiwKKyAgICA4MTcsCisgICAgNzgzMSwKKyAgICAxMTYsCisgICAgNzc2LAorICAgIDg0LAorICAgIDc3NiwKKyAgICA3ODMyLAorICAgIDExOSwKKyAgICA3NzgsCisgICAgODcsCisgICAgNzc4LAorICAgIDc4MzMsCisgICAgMTIxLAorICAgIDc3OCwKKyAgICA4OSwKKyAgICA3NzgsCisgICAgNzgzNCwKKyAgICA5NywKKyAgICA3MDIsCisgICAgNjUsCisgICAgNzAyLAorICAgIDc4MzUsCisgICAgNzc3NywKKyAgICA3Nzc2LAorICAgIDIyMywKKyAgICAxMTUsCisgICAgMTE1LAorICAgIDc4MzgsCisgICAgODAxNiwKKyAgICA5NjUsCisgICAgNzg3LAorICAgIDkzMywKKyAgICA3ODcsCisgICAgODAxOCwKKyAgICA5NjUsCisgICAgNzg3LAorICAgIDc2OCwKKyAgICA5MzMsCisgICAgNzg3LAorICAgIDc2OCwKKyAgICA4MDIwLAorICAgIDk2NSwKKyAgICA3ODcsCisgICAgNzY5LAorICAgIDkzMywKKyAgICA3ODcsCisgICAgNzY5LAorICAgIDgwMjIsCisgICAgOTY1LAorICAgIDc4NywKKyAgICA4MzQsCisgICAgOTMzLAorICAgIDc4NywKKyAgICA4MzQsCisgICAgODA2NCwKKyAgICA3OTM2LAorICAgIDk1MywKKyAgICA3OTQ0LAorICAgIDkyMSwKKyAgICA4MDcyLAorICAgIDgwNjUsCisgICAgNzkzNywKKyAgICA5NTMsCisgICAgNzk0NSwKKyAgICA5MjEsCisgICAgODA3MywKKyAgICA4MDY2LAorICAgIDc5MzgsCisgICAgOTUzLAorICAgIDc5NDYsCisgICAgOTIxLAorICAgIDgwNzQsCisgICAgODA2NywKKyAgICA3OTM5LAorICAgIDk1MywKKyAgICA3OTQ3LAorICAgIDkyMSwKKyAgICA4MDc1LAorICAgIDgwNjgsCisgICAgNzk0MCwKKyAgICA5NTMsCisgICAgNzk0OCwKKyAgICA5MjEsCisgICAgODA3NiwKKyAgICA4MDY5LAorICAgIDc5NDEsCisgICAgOTUzLAorICAgIDc5NDksCisgICAgOTIxLAorICAgIDgwNzcsCisgICAgODA3MCwKKyAgICA3OTQyLAorICAgIDk1MywKKyAgICA3OTUwLAorICAgIDkyMSwKKyAgICA4MDc4LAorICAgIDgwNzEsCisgICAgNzk0MywKKyAgICA5NTMsCisgICAgNzk1MSwKKyAgICA5MjEsCisgICAgODA3OSwKKyAgICA4MDY0LAorICAgIDc5MzYsCisgICAgOTUzLAorICAgIDc5NDQsCisgICAgOTIxLAorICAgIDgwNzIsCisgICAgODA2NSwKKyAgICA3OTM3LAorICAgIDk1MywKKyAgICA3OTQ1LAorICAgIDkyMSwKKyAgICA4MDczLAorICAgIDgwNjYsCisgICAgNzkzOCwKKyAgICA5NTMsCisgICAgNzk0NiwKKyAgICA5MjEsCisgICAgODA3NCwKKyAgICA4MDY3LAorICAgIDc5MzksCisgICAgOTUzLAorICAgIDc5NDcsCisgICAgOTIxLAorICAgIDgwNzUsCisgICAgODA2OCwKKyAgICA3OTQwLAorICAgIDk1MywKKyAgICA3OTQ4LAorICAgIDkyMSwKKyAgICA4MDc2LAorICAgIDgwNjksCisgICAgNzk0MSwKKyAgICA5NTMsCisgICAgNzk0OSwKKyAgICA5MjEsCisgICAgODA3NywKKyAgICA4MDcwLAorICAgIDc5NDIsCisgICAgOTUzLAorICAgIDc5NTAsCisgICAgOTIxLAorICAgIDgwNzgsCisgICAgODA3MSwKKyAgICA3OTQzLAorICAgIDk1MywKKyAgICA3OTUxLAorICAgIDkyMSwKKyAgICA4MDc5LAorICAgIDgwODAsCisgICAgNzk2OCwKKyAgICA5NTMsCisgICAgNzk3NiwKKyAgICA5MjEsCisgICAgODA4OCwKKyAgICA4MDgxLAorICAgIDc5NjksCisgICAgOTUzLAorICAgIDc5NzcsCisgICAgOTIxLAorICAgIDgwODksCisgICAgODA4MiwKKyAgICA3OTcwLAorICAgIDk1MywKKyAgICA3OTc4LAorICAgIDkyMSwKKyAgICA4MDkwLAorICAgIDgwODMsCisgICAgNzk3MSwKKyAgICA5NTMsCisgICAgNzk3OSwKKyAgICA5MjEsCisgICAgODA5MSwKKyAgICA4MDg0LAorICAgIDc5NzIsCisgICAgOTUzLAorICAgIDc5ODAsCisgICAgOTIxLAorICAgIDgwOTIsCisgICAgODA4NSwKKyAgICA3OTczLAorICAgIDk1MywKKyAgICA3OTgxLAorICAgIDkyMSwKKyAgICA4MDkzLAorICAgIDgwODYsCisgICAgNzk3NCwKKyAgICA5NTMsCisgICAgNzk4MiwKKyAgICA5MjEsCisgICAgODA5NCwKKyAgICA4MDg3LAorICAgIDc5NzUsCisgICAgOTUzLAorICAgIDc5ODMsCisgICAgOTIxLAorICAgIDgwOTUsCisgICAgODA4MCwKKyAgICA3OTY4LAorICAgIDk1MywKKyAgICA3OTc2LAorICAgIDkyMSwKKyAgICA4MDg4LAorICAgIDgwODEsCisgICAgNzk2OSwKKyAgICA5NTMsCisgICAgNzk3NywKKyAgICA5MjEsCisgICAgODA4OSwKKyAgICA4MDgyLAorICAgIDc5NzAsCisgICAgOTUzLAorICAgIDc5NzgsCisgICAgOTIxLAorICAgIDgwOTAsCisgICAgODA4MywKKyAgICA3OTcxLAorICAgIDk1MywKKyAgICA3OTc5LAorICAgIDkyMSwKKyAgICA4MDkxLAorICAgIDgwODQsCisgICAgNzk3MiwKKyAgICA5NTMsCisgICAgNzk4MCwKKyAgICA5MjEsCisgICAgODA5MiwKKyAgICA4MDg1LAorICAgIDc5NzMsCisgICAgOTUzLAorICAgIDc5ODEsCisgICAgOTIxLAorICAgIDgwOTMsCisgICAgODA4NiwKKyAgICA3OTc0LAorICAgIDk1MywKKyAgICA3OTgyLAorICAgIDkyMSwKKyAgICA4MDk0LAorICAgIDgwODcsCisgICAgNzk3NSwKKyAgICA5NTMsCisgICAgNzk4MywKKyAgICA5MjEsCisgICAgODA5NSwKKyAgICA4MDk2LAorICAgIDgwMzIsCisgICAgOTUzLAorICAgIDgwNDAsCisgICAgOTIxLAorICAgIDgxMDQsCisgICAgODA5NywKKyAgICA4MDMzLAorICAgIDk1MywKKyAgICA4MDQxLAorICAgIDkyMSwKKyAgICA4MTA1LAorICAgIDgwOTgsCisgICAgODAzNCwKKyAgICA5NTMsCisgICAgODA0MiwKKyAgICA5MjEsCisgICAgODEwNiwKKyAgICA4MDk5LAorICAgIDgwMzUsCisgICAgOTUzLAorICAgIDgwNDMsCisgICAgOTIxLAorICAgIDgxMDcsCisgICAgODEwMCwKKyAgICA4MDM2LAorICAgIDk1MywKKyAgICA4MDQ0LAorICAgIDkyMSwKKyAgICA4MTA4LAorICAgIDgxMDEsCisgICAgODAzNywKKyAgICA5NTMsCisgICAgODA0NSwKKyAgICA5MjEsCisgICAgODEwOSwKKyAgICA4MTAyLAorICAgIDgwMzgsCisgICAgOTUzLAorICAgIDgwNDYsCisgICAgOTIxLAorICAgIDgxMTAsCisgICAgODEwMywKKyAgICA4MDM5LAorICAgIDk1MywKKyAgICA4MDQ3LAorICAgIDkyMSwKKyAgICA4MTExLAorICAgIDgwOTYsCisgICAgODAzMiwKKyAgICA5NTMsCisgICAgODA0MCwKKyAgICA5MjEsCisgICAgODEwNCwKKyAgICA4MDk3LAorICAgIDgwMzMsCisgICAgOTUzLAorICAgIDgwNDEsCisgICAgOTIxLAorICAgIDgxMDUsCisgICAgODA5OCwKKyAgICA4MDM0LAorICAgIDk1MywKKyAgICA4MDQyLAorICAgIDkyMSwKKyAgICA4MTA2LAorICAgIDgwOTksCisgICAgODAzNSwKKyAgICA5NTMsCisgICAgODA0MywKKyAgICA5MjEsCisgICAgODEwNywKKyAgICA4MTAwLAorICAgIDgwMzYsCisgICAgOTUzLAorICAgIDgwNDQsCisgICAgOTIxLAorICAgIDgxMDgsCisgICAgODEwMSwKKyAgICA4MDM3LAorICAgIDk1MywKKyAgICA4MDQ1LAorICAgIDkyMSwKKyAgICA4MTA5LAorICAgIDgxMDIsCisgICAgODAzOCwKKyAgICA5NTMsCisgICAgODA0NiwKKyAgICA5MjEsCisgICAgODExMCwKKyAgICA4MTAzLAorICAgIDgwMzksCisgICAgOTUzLAorICAgIDgwNDcsCisgICAgOTIxLAorICAgIDgxMTEsCisgICAgODExNCwKKyAgICA4MDQ4LAorICAgIDk1MywKKyAgICA4MTIyLAorICAgIDkyMSwKKyAgICA4MTIyLAorICAgIDgzNywKKyAgICA4MTE1LAorICAgIDk0NSwKKyAgICA5NTMsCisgICAgOTEzLAorICAgIDkyMSwKKyAgICA4MTI0LAorICAgIDgxMTYsCisgICAgOTQwLAorICAgIDk1MywKKyAgICA5MDIsCisgICAgOTIxLAorICAgIDkwMiwKKyAgICA4MzcsCisgICAgODExOCwKKyAgICA5NDUsCisgICAgODM0LAorICAgIDkxMywKKyAgICA4MzQsCisgICAgODExOSwKKyAgICA5NDUsCisgICAgODM0LAorICAgIDk1MywKKyAgICA5MTMsCisgICAgODM0LAorICAgIDkyMSwKKyAgICA5MTMsCisgICAgODM0LAorICAgIDgzNywKKyAgICA4MTE1LAorICAgIDk0NSwKKyAgICA5NTMsCisgICAgOTEzLAorICAgIDkyMSwKKyAgICA4MTI0LAorICAgIDgxMjYsCisgICAgOTUzLAorICAgIDkyMSwKKyAgICA4MTMwLAorICAgIDgwNTIsCisgICAgOTUzLAorICAgIDgxMzgsCisgICAgOTIxLAorICAgIDgxMzgsCisgICAgODM3LAorICAgIDgxMzEsCisgICAgOTUxLAorICAgIDk1MywKKyAgICA5MTksCisgICAgOTIxLAorICAgIDgxNDAsCisgICAgODEzMiwKKyAgICA5NDIsCisgICAgOTUzLAorICAgIDkwNSwKKyAgICA5MjEsCisgICAgOTA1LAorICAgIDgzNywKKyAgICA4MTM0LAorICAgIDk1MSwKKyAgICA4MzQsCisgICAgOTE5LAorICAgIDgzNCwKKyAgICA4MTM1LAorICAgIDk1MSwKKyAgICA4MzQsCisgICAgOTUzLAorICAgIDkxOSwKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDkxOSwKKyAgICA4MzQsCisgICAgODM3LAorICAgIDgxMzEsCisgICAgOTUxLAorICAgIDk1MywKKyAgICA5MTksCisgICAgOTIxLAorICAgIDgxNDAsCisgICAgODE0NiwKKyAgICA5NTMsCisgICAgNzc2LAorICAgIDc2OCwKKyAgICA5MjEsCisgICAgNzc2LAorICAgIDc2OCwKKyAgICA4MTQ3LAorICAgIDk1MywKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDkyMSwKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDgxNTAsCisgICAgOTUzLAorICAgIDgzNCwKKyAgICA5MjEsCisgICAgODM0LAorICAgIDgxNTEsCisgICAgOTUzLAorICAgIDc3NiwKKyAgICA4MzQsCisgICAgOTIxLAorICAgIDc3NiwKKyAgICA4MzQsCisgICAgODE2MiwKKyAgICA5NjUsCisgICAgNzc2LAorICAgIDc2OCwKKyAgICA5MzMsCisgICAgNzc2LAorICAgIDc2OCwKKyAgICA4MTYzLAorICAgIDk2NSwKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDkzMywKKyAgICA3NzYsCisgICAgNzY5LAorICAgIDgxNjQsCisgICAgOTYxLAorICAgIDc4NywKKyAgICA5MjksCisgICAgNzg3LAorICAgIDgxNjYsCisgICAgOTY1LAorICAgIDgzNCwKKyAgICA5MzMsCisgICAgODM0LAorICAgIDgxNjcsCisgICAgOTY1LAorICAgIDc3NiwKKyAgICA4MzQsCisgICAgOTMzLAorICAgIDc3NiwKKyAgICA4MzQsCisgICAgODE3OCwKKyAgICA4MDYwLAorICAgIDk1MywKKyAgICA4MTg2LAorICAgIDkyMSwKKyAgICA4MTg2LAorICAgIDgzNywKKyAgICA4MTc5LAorICAgIDk2OSwKKyAgICA5NTMsCisgICAgOTM3LAorICAgIDkyMSwKKyAgICA4MTg4LAorICAgIDgxODAsCisgICAgOTc0LAorICAgIDk1MywKKyAgICA5MTEsCisgICAgOTIxLAorICAgIDkxMSwKKyAgICA4MzcsCisgICAgODE4MiwKKyAgICA5NjksCisgICAgODM0LAorICAgIDkzNywKKyAgICA4MzQsCisgICAgODE4MywKKyAgICA5NjksCisgICAgODM0LAorICAgIDk1MywKKyAgICA5MzcsCisgICAgODM0LAorICAgIDkyMSwKKyAgICA5MzcsCisgICAgODM0LAorICAgIDgzNywKKyAgICA4MTc5LAorICAgIDk2OSwKKyAgICA5NTMsCisgICAgOTM3LAorICAgIDkyMSwKKyAgICA4MTg4LAorICAgIDY0MjU2LAorICAgIDEwMiwKKyAgICAxMDIsCisgICAgNzAsCisgICAgNzAsCisgICAgNzAsCisgICAgMTAyLAorICAgIDY0MjU3LAorICAgIDEwMiwKKyAgICAxMDUsCisgICAgNzAsCisgICAgNzMsCisgICAgNzAsCisgICAgMTA1LAorICAgIDY0MjU4LAorICAgIDEwMiwKKyAgICAxMDgsCisgICAgNzAsCisgICAgNzYsCisgICAgNzAsCisgICAgMTA4LAorICAgIDY0MjU5LAorICAgIDEwMiwKKyAgICAxMDIsCisgICAgMTA1LAorICAgIDcwLAorICAgIDcwLAorICAgIDczLAorICAgIDcwLAorICAgIDEwMiwKKyAgICAxMDUsCisgICAgNjQyNjAsCisgICAgMTAyLAorICAgIDEwMiwKKyAgICAxMDgsCisgICAgNzAsCisgICAgNzAsCisgICAgNzYsCisgICAgNzAsCisgICAgMTAyLAorICAgIDEwOCwKKyAgICA2NDI2MSwKKyAgICAxMTUsCisgICAgMTE2LAorICAgIDgzLAorICAgIDg0LAorICAgIDgzLAorICAgIDExNiwKKyAgICA2NDI2MiwKKyAgICAxMTUsCisgICAgMTE2LAorICAgIDgzLAorICAgIDg0LAorICAgIDgzLAorICAgIDExNiwKKyAgICA2NDI3NSwKKyAgICAxMzk2LAorICAgIDEzOTgsCisgICAgMTM0OCwKKyAgICAxMzUwLAorICAgIDEzNDgsCisgICAgMTM5OCwKKyAgICA2NDI3NiwKKyAgICAxMzk2LAorICAgIDEzODEsCisgICAgMTM0OCwKKyAgICAxMzMzLAorICAgIDEzNDgsCisgICAgMTM4MSwKKyAgICA2NDI3NywKKyAgICAxMzk2LAorICAgIDEzODcsCisgICAgMTM0OCwKKyAgICAxMzM5LAorICAgIDEzNDgsCisgICAgMTM4NywKKyAgICA2NDI3OCwKKyAgICAxNDA2LAorICAgIDEzOTgsCisgICAgMTM1OCwKKyAgICAxMzUwLAorICAgIDEzNTgsCisgICAgMTM5OCwKKyAgICA2NDI3OSwKKyAgICAxMzk2LAorICAgIDEzODksCisgICAgMTM0OCwKKyAgICAxMzQxLAorICAgIDEzNDgsCisgICAgMTM4OSwKIH07CiAKIC8qIHR5cGUgaW5kZXhlcyAqLwpAQCAtMTk1LDcyICsxMDAzLDcyIEBACiAgICAgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNCwgMzUsIDM2LCAzNywgCiAgICAgMzgsIDM5LCAzNCwgMzQsIDM0LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgCiAgICAgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjQsIDY0LCA2NSwgNjYsIDY3LCA2NCwgCi0gICAgNjQsIDY0LCA2NCwgNjgsIDY5LCA2NCwgNjQsIDY0LCA2NCwgNjQsIDY0LCA3MCwgMTcsIDcxLCA3MiwgNzMsIDc0LCA3NSwgCi0gICAgNzYsIDY0LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgNjQsIDY0LCA4NCwgODUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDg2LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgNjQsIDY0LCA2NCwgNjgsIDY5LCA2NCwgNjQsIDY0LCA2NCwgNjQsIDY0LCA3MCwgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgCisgICAgNzcsIDY0LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgNjQsIDY0LCA4NSwgODYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDg3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4OCwgODksIDkwLCA5MSwgMzQsIDM0LCAzNCwgOTIsIDM0LCAzNCwgCi0gICAgMzQsIDkzLCA5NCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA5NSwgMzQsIDM0LCAzNCwgOTYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCA5NywgOTgsIDk5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDAsIDEwMSwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMTAzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDEwMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAxMDMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwNiwgMTA3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDEwOCwgMTA5LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDExMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMTExLCAzNCwgMzQsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCA4OSwgOTAsIDkxLCA5MiwgMzQsIDM0LCAzNCwgOTMsIDM0LCAzNCwgCisgICAgMzQsIDk0LCA5NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCA5NiwgMzQsIDM0LCAzNCwgOTcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCA5OCwgOTksIDEwMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTAxLCAxMDIsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTAzLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDEwNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDUsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAxMDEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMTA0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDcsIDEwOCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMDksIDExMCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxMTEsIDExMiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAxMTMsIDM0LCAzNCwgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsIDEyMiwgCisgICAgMTIzLCAxMjQsIDEyNSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMTI0LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjYsIDEyNywgMTI4LCAKLSAgICAxMjksIDEzMCwgMTMxLCAxMzIsIDM0LCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIAotICAgIDE3LCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTQ4LCAxNywgMTQ5LCAxNywgCi0gICAgMTUwLCAxNywgMTUxLCAxNywgMTUyLCAxNywgMTcsIDE3LCAxNTMsIDE3LCAxNywgMTcsIDE1NCwgMTU1LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTYsIDE3LCAxNTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxNTgsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAzNCwgMzQsIDM0LCAzNCwgMTU5LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTYwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCA2NCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNywgMTY1LCAxNywgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgCi0gICAgMTcyLCAxNzMsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3NCwgMTc1LCAxNzYsIAotICAgIDE3NywgMTc4LCAxNywgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDY1LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE4NywgMTg4LCAxODksIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDg2LCAxOTAsIDM0LCAxOTEsIAotICAgIDE5MiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMTI2LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAKKyAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAorICAgIDcxLCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTUwLCA3MSwgMTUxLCAxNTIsIAorICAgIDE1MywgNzEsIDE1NCwgNzEsIDE1NSwgNzEsIDcxLCA3MSwgMTU2LCA3MSwgNzEsIDcxLCAxNTcsIDE1OCwgMTU5LCAxNjAsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDE2MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTYyLCA3MSwgCisgICAgMTYzLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTY0LCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDM0LCAzNCwgMzQsIDE2NSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTY2LCAxNjcsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTY4LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA2NCwgMTY5LCAxNzAsIDE3MSwgMTcyLCA3MSwgMTczLCA3MSwgMTc0LCAxNzUsIDE3NiwgMTc3LCAxNzgsIAorICAgIDE3OSwgMTgwLCAxODEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTgyLCAxODMsIDcxLCA3MSwgMTg0LCAKKyAgICAxODUsIDE4NiwgMTg3LCAxODgsIDcxLCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgNjUsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTk3LCAxOTgsIAorICAgIDE5OSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIwMCwgCisgICAgMzQsIDIwMSwgMjAyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTkzLCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5NCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwMywgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTk1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjA1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxOTYsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMDYsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIApAQCAtMjY4LDg2MCArMTA3Niw4NjIgQEAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5NywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIwNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAzNCwgMTk4LCAzNCwgMTk5LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMzQsIDE5MywgMzQsIDM0LCAxOTksIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDIwMCwgMTcsIDIwMSwgMjAyLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAyMDMsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIAotICAgIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAKLSAgICAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgCi0gICAgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMTI1LCAxMjUsIDEyNSwgMjAzLCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMjA4LCAzNCwgMjA5LCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAorICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMzQsIDIwMywgMzQsIDM0LCAyMDksIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgCisgICAgNzEsIDcxLCA3MSwgNzEsIDIxMCwgNzEsIDIxMSwgMjEyLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAyMTMsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjEzLCAKIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGluZGV4MltdID0geworc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewogICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIsIDMsIDMsIDMsIDMsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDMsIDMsIDMsIDIsIDQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAKLSAgICAxNiwgMTYsIDE2LCAxNiwgNSwgNSwgNSwgNSwgMTcsIDUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNSwgNSwgCisgICAgMSwgMSwgMSwgMSwgMywgMywgMywgMiwgNCwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDYsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNiwgMTgsIDYsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAorICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgNSwgCiAgICAgNSwgNSwgMSwgMSwgMSwgMSwgMSwgMSwgMywgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTksIDUsIDUsIAotICAgIDEsIDUsIDUsIDUsIDUsIDIwLCAyMSwgNSwgMjIsIDUsIDE3LCA1LCAyMywgMTksIDUsIDI0LCAyNCwgMjQsIDUsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgNSwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE5LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDUsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjgsIDI5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMzAsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDMxLCAzMiwgMzMsIDI2LCAyNywgMjYsIDI3LCAzNCwgMjYsIAotICAgIDI3LCAzNSwgMzUsIDI2LCAyNywgMTksIDM2LCAzNywgMzgsIDI2LCAyNywgMzUsIDM5LCA0MCwgNDEsIDQyLCAyNiwgMjcsIAotICAgIDQzLCAxOSwgNDEsIDQ0LCA0NSwgNDYsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDQ3LCAyNiwgMjcsIDQ3LCAxOSwgMTksIAotICAgIDI2LCAyNywgNDcsIDI2LCAyNywgNDgsIDQ4LCAyNiwgMjcsIDI2LCAyNywgNDksIDI2LCAyNywgMTksIDUwLCAyNiwgMjcsIAotICAgIDE5LCA1MSwgNTAsIDUwLCA1MCwgNTAsIDUyLCA1MywgNTQsIDUyLCA1MywgNTQsIDUyLCA1MywgNTQsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCA1NSwgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTksIDUyLCA1MywgNTQsIAotICAgIDI2LCAyNywgNTYsIDU3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNTgsIDE5LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1OSwgMjYsIAotICAgIDI3LCA2MCwgNjEsIDYyLCA2MiwgMjYsIDI3LCA2MywgNjQsIDY1LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgNjYsIDY3LCA2OCwgNjksIDcwLCAxOSwgNzEsIDcxLCAxOSwgNzIsIDE5LCA3MywgMTksIDE5LCAxOSwgMTksIAotICAgIDcxLCAxOSwgMTksIDc0LCAxOSwgNzUsIDE5LCAxOSwgNzYsIDc3LCAxOSwgNzgsIDE5LCAxOSwgMTksIDc3LCAxOSwgNzksIAotICAgIDgwLCAxOSwgMTksIDgxLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgODIsIDE5LCAxOSwgODMsIDE5LCAxOSwgODMsIAotICAgIDE5LCAxOSwgMTksIDE5LCA4MywgODQsIDg1LCA4NSwgODYsIDE5LCAxOSwgMTksIDE5LCAxOSwgODcsIDE5LCA1MCwgMTksIAorICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDIsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDIwLCA1LCA1LCAKKyAgICAyMSwgNSwgNiwgNSwgNSwgMjIsIDIzLCA2LCAyNCwgNSwgMjUsIDYsIDI2LCAyMCwgNSwgMjcsIDI3LCAyNywgNSwgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAorICAgIDE3LCAxNywgMTcsIDE3LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMjgsIDE5LCAxOSwgMTksIDE5LCAxOSwgCiAgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1LCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMjksIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMyLCAzMywgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDM1LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNiwgMzcsIDM4LCAzMCwgMzEsIDMwLCAzMSwgMzksIAorICAgIDMwLCAzMSwgNDAsIDQwLCAzMCwgMzEsIDIwLCA0MSwgNDIsIDQzLCAzMCwgMzEsIDQwLCA0NCwgNDUsIDQ2LCA0NywgMzAsIAorICAgIDMxLCA0OCwgMjAsIDQ2LCA0OSwgNTAsIDUxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA1MiwgMzAsIDMxLCA1MiwgMjAsIAorICAgIDIwLCAzMCwgMzEsIDUyLCAzMCwgMzEsIDUzLCA1MywgMzAsIDMxLCAzMCwgMzEsIDU0LCAzMCwgMzEsIDIwLCA1NSwgMzAsIAorICAgIDMxLCAyMCwgNTYsIDU1LCA1NSwgNTUsIDU1LCA1NywgNTgsIDU5LCA1NywgNTgsIDU5LCA1NywgNTgsIDU5LCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNjAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDYxLCA1NywgNTgsIAorICAgIDU5LCAzMCwgMzEsIDYyLCA2MywgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDY0LCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNjUsIAorICAgIDMwLCAzMSwgNjYsIDY3LCA2OCwgNjgsIDMwLCAzMSwgNjksIDcwLCA3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgMjAsIDc3LCA3NywgMjAsIDc4LCAyMCwgNzksIDIwLCAyMCwgMjAsIAorICAgIDIwLCA3NywgMjAsIDIwLCA4MCwgMjAsIDgxLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCAyMCwgMjAsIDIwLCA4NCwgMjAsIAorICAgIDg2LCA4NywgMjAsIDIwLCA4OCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDg5LCAyMCwgMjAsIDkwLCAyMCwgMjAsIAorICAgIDkwLCAyMCwgMjAsIDIwLCAyMCwgOTAsIDkxLCA5MiwgOTIsIDkzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk0LCAyMCwgNTUsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NSwgOTUsIDYsIDYsIDYsIDYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIAorICAgIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgOTYsIDYsIDk2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCAKKyAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCA5NywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDk2LCA2LCAzMCwgMzEsIDAsIDAsIAorICAgIDk4LCA1MCwgNTAsIDUwLCA1LCAwLCAwLCAwLCAwLCAwLCA2LCA2LCA5OSwgMjUsIDEwMCwgMTAwLCAxMDAsIDAsIDEwMSwgMCwgCisgICAgMTAyLCAxMDIsIDEwMywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxMDQsIDEwNSwgMTA1LCAxMDUsIAorICAgIDEwNiwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxMDcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwOCwgMTA5LCAxMDksIDExMCwgMTExLCAxMTIsIAorICAgIDExMywgMTEzLCAxMTMsIDExNCwgMTE1LCAxMTYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDExNywgMTE4LCAxMTksIDIwLCAKKyAgICAxMjAsIDEyMSwgNSwgMzAsIDMxLCAxMjIsIDMwLCAzMSwgMjAsIDY0LCA2NCwgNjQsIDEyMywgMTIzLCAxMjMsIDEyMywgCisgICAgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTIzLCAxMjMsIDEyMywgMTcsIDE3LCAxNywgCiAgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDg4LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAyNiwgMjcsIDI2LCAyNywgNTAsIDUsIDI2LCAyNywgMCwgMCwgODksIAotICAgIDQ1LCA0NSwgNDUsIDUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDkwLCAxNywgOTEsIDkxLCA5MSwgMCwgOTIsIDAsIDkzLCA5MywgCi0gICAgMTksIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMCwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgOTQsIDk1LCA5NSwgOTUsIDE5LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDk2LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA5NywgOTgsIDk4LCA5OSwgMTAwLCAxMDEsIDEwMiwgMTAyLCAxMDIsIDEwMywgCi0gICAgMTA0LCAxMDUsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAKLSAgICAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDEwNiwgMTA3LCAxMDgsIDE5LCAxMDksIDExMCwgNSwgMjYsIDI3LCAKLSAgICAxMTEsIDI2LCAyNywgMTksIDU4LCA1OCwgNTgsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIAotICAgIDExMiwgMTEyLCAxMTIsIDExMiwgMTEyLCAxMTIsIDExMiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMTEzLCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDExNCwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAwLCAwLCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDE5LCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCAxNywgNSwgMTcsIDE3LCA1LCAxNywgMTcsIDUsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1LCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDAsIDAsIDUsIDUsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKLSAgICA1LCA1LCA1LCA1LCA1MCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1MCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgMTcsIDE3LCA1LCAKLSAgICAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1MCwgNTAsIDUwLCAKLSAgICA1LCA1LCA1MCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMSwgNTAsIDE3LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUwLCA1MCwgNSwgNSwgNSwgNSwgNTAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIAotICAgIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCA1MCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCisgICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIAorICAgIDEyNCwgMTI0LCAxMjQsIDEyNCwgMTI0LCAxMjQsIDEyNCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNiwgNiwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIAorICAgIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMTI1LCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEyNiwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAwLCAwLCA5NiwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOSwgMCwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgMjUsIDUsIDI1LCAyNSwgNSwgMjUsIDI1LCAKKyAgICA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNSwgNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgOTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA3LCA4LCAKKyAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyMSwgNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgOTYsIDk2LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1LCA1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMjEsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgOTYsIDk2LCA1LCA1LCA1LCA1LCA5NiwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA5NiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgOTYsIDI1LCAyNSwgMjUsIDk2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIAorICAgIDI1LCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgNTUsIDE4LCAxOCwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgNSwgNSwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAKKyAgICAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICA1NSwgNTUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAyNSwgMCwgMTgsIAorICAgIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAKKyAgICAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIAorICAgIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgCisgICAgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTgsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAKKyAgICAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE4LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMCwgMTgsIDE4LCAxOCwgMCwgCisgICAgMTgsIDE4LCAxOCwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAxMzAsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgCisgICAgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIAorICAgIDEzMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA5NiwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDUsIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAKKyAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDE4LCAxOCwgMTgsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgNTUsIAorICAgIDE4LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTgsIDE4LCAxOCwgMjUsIDUsIDUsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTMyLCAxMzMsIDEzNCwgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDE0MSwgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIAorICAgIDI1LCAyNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA5NiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAwLCA3LCAKKyAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDI1LCAyNSwgMjUsIDIsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDk2LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTMyLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMCwgMCwgNSwgNSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAwLCAwLCAyNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA5NiwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDU1LCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIAorICAgIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgNSwgNSwgNiwgCi0gICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAxNywgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDAsIDAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgCi0gICAgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIAotICAgIDE3LCAxNywgMCwgMCwgMTcsIDE3LCAxNywgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAwLCAwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIAotICAgIDUwLCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgMCwgMTcsIDAsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMTcsIDE3LCAwLCAwLCAxNywgMTcsIDE3LCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNywgMTcsIDUwLCA1MCwgNTAsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNywgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCAxNywgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMCwgCi0gICAgMTcsIDE3LCAxNywgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMTcsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMCwgMCwgMTcsIDE3LCAwLCAwLCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCA1LCA1MCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTcsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgMCwgMCwgMCwgNTAsIDUwLCAwLCA1MCwgMCwgNTAsIDUwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDUwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMjQsIDI0LCAyNCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTcsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMTcsIDE3LCAxNywgMCwgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgMCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDAsIDAsIDE3LCAxNywgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCA1MCwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgNiwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMTcsIDAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAwLCAwLCAwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAxNywgMTcsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAwLCAwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMTcsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDAsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3LCAxNywgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCAxMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCAwLCAwLCA1MCwgNTAsIDAsIDUwLCAwLCAwLCAKLSAgICA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgNTAsIDAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgMTE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCAKLSAgICAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAKLSAgICAwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDcsIDgsIAotICAgIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCAxNywgCi0gICAgNSwgMTcsIDUsIDE3LCA1LCA1LCA1LCA1LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCi0gICAgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCA1LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAyNSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIAorICAgIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgMTQyLCAyMCwgMjAsIDIwLCAxNDMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgOTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCisgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxNDQsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAyMCwgMjAsIDE1MCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDE1MSwgMTUxLCAKKyAgICAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgCisgICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMCwgMCwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMCwgMCwgCisgICAgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIAorICAgIDE1MiwgMTUyLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUyLCAxNTIsIDE1MiwgMTUyLCAKKyAgICAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDAsIDAsIDE1MiwgMTUyLCAxNTIsIAorICAgIDE1MiwgMTUyLCAxNTIsIDAsIDAsIDE1MywgMTUxLCAxNTQsIDE1MSwgMTU1LCAxNTEsIDE1NiwgMTUxLCAwLCAxNTIsIDAsIAorICAgIDE1MiwgMCwgMTUyLCAwLCAxNTIsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTEsIDE1MSwgMTUxLCAxNTIsIDE1MiwgCisgICAgMTUyLCAxNTIsIDE1MiwgMTUyLCAxNTIsIDE1MiwgMTU3LCAxNTcsIDE1OCwgMTU4LCAxNTgsIDE1OCwgMTU5LCAxNTksIAorICAgIDE2MCwgMTYwLCAxNjEsIDE2MSwgMTYyLCAxNjIsIDAsIDAsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgCisgICAgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIAorICAgIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAKKyAgICAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDE1MSwgCisgICAgMTUxLCAyMTEsIDIxMiwgMjEzLCAwLCAyMTQsIDIxNSwgMTUyLCAxNTIsIDIxNiwgMjE2LCAyMTcsIDYsIDIxOCwgNiwgNiwgCisgICAgNiwgMjE5LCAyMjAsIDIyMSwgMCwgMjIyLCAyMjMsIDIyNCwgMjI0LCAyMjQsIDIyNCwgMjI1LCA2LCA2LCA2LCAxNTEsIAorICAgIDE1MSwgMjI2LCAyMjcsIDAsIDAsIDIyOCwgMjI5LCAxNTIsIDE1MiwgMjMwLCAyMzAsIDAsIDYsIDYsIDYsIDE1MSwgMTUxLCAKKyAgICAyMzEsIDIzMiwgMjMzLCAxMTksIDIzNCwgMjM1LCAxNTIsIDE1MiwgMjM2LCAyMzYsIDEyMiwgNiwgNiwgNiwgMCwgMCwgCisgICAgMjM3LCAyMzgsIDIzOSwgMCwgMjQwLCAyNDEsIDI0MiwgMjQyLCAyNDMsIDI0MywgMjQ0LCA2LCA2LCAwLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDYsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDYsIDMsIDMsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMiwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMiwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNDUsIDk1LCAwLCAwLCAKKyAgICAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCA1LCA1LCA1LCA1LCA1LCA5NSwgMjQ1LCAyNiwgMjIsIDIzLCAyNDYsIAorICAgIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCA1LCA1LCA1LCA1LCA1LCAwLCA5NSwgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgCisgICAgOTUsIDk1LCA5NSwgOTUsIDk1LCA5NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgNTAsIDE3LCAxNywgMTcsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNTAsIDE3LCA2LCA3LCA4LCAKLSAgICA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAKLSAgICAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgCi0gICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1LCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDExOSwgMTIwLCAxMjEsIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAxMjcsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAwLCAwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1LCA1LCA1LCAxMjgsIDEyOCwgMTI4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDUsIDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDAsIDE3LCAxNywgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDEsIDEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUsIDUsIDUsIDUwLCA1LCA1LCA1LCA1LCA1MCwgMTcsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAyLCAwLCA2LCA3LCAKLSAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNywgNTAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDUsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDExOSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMTcsIDYsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAotICAgIDE0LCAxNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMTcsIDE3LCAxNywgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDUwLCA1MCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNiwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgNSwgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDUwLCAxMjksIAotICAgIDE5LCAxOSwgMTksIDEzMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIAotICAgIDE3LCAxNywgMTcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTMxLCAxOSwgMTksIDEzMiwgCi0gICAgMTksIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzQsIAotICAgIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMCwgMCwgCi0gICAgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMCwgMCwgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAKLSAgICAxMzMsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzMywgMTMzLCAxMzMsIAotICAgIDEzMywgMTMzLCAxMzMsIDAsIDAsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDAsIDAsIDE5LCAxMzMsIDE5LCAKLSAgICAxMzMsIDE5LCAxMzMsIDE5LCAxMzMsIDAsIDEzNCwgMCwgMTM0LCAwLCAxMzQsIDAsIDEzNCwgMTMzLCAxMzMsIDEzMywgCi0gICAgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzQsIDEzNCwgMTM0LCAxMzUsIAotICAgIDEzNSwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzcsIDEzNywgMTM4LCAxMzgsIDEzOSwgMTM5LCAxNDAsIDE0MCwgMCwgMCwgCi0gICAgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAotICAgIDE0MSwgMTQxLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTQxLCAxNDEsIDE0MSwgMTQxLCAKLSAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxMzMsIDEzMywgMTMzLCAxNDEsIDE0MSwgCi0gICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTMzLCAxMzMsIDE5LCAxNDIsIDE5LCAwLCAxOSwgMTksIDEzNCwgMTM0LCAKLSAgICAxNDMsIDE0MywgMTQ0LCA1LCAxNDUsIDUsIDUsIDUsIDE5LCAxNDIsIDE5LCAwLCAxOSwgMTksIDE0NiwgMTQ2LCAxNDYsIAotICAgIDE0NiwgMTQ0LCA1LCA1LCA1LCAxMzMsIDEzMywgMTksIDE5LCAwLCAwLCAxOSwgMTksIDEzNCwgMTM0LCAxNDcsIDE0NywgMCwgCi0gICAgNSwgNSwgNSwgMTMzLCAxMzMsIDE5LCAxOSwgMTksIDEwOCwgMTksIDE5LCAxMzQsIDEzNCwgMTQ4LCAxNDgsIDExMSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMTksIDE0MiwgMTksIDAsIDE5LCAxOSwgMTQ5LCAxNDksIDE1MCwgMTUwLCAxNDQsIDUsIDUsIDAsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDEsIDEsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDMsIDMsIDEsIDEsIDEsIDEsIDEsIDIsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIsIDEsIAotICAgIDEsIDEsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDE1MSwgNTAsIDAsIDAsIDE1MiwgMTUzLCAKLSAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDUsIDUsIDUsIDUsIDUsIDUwLCAxNTEsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIAotICAgIDE1NSwgMTU2LCAxNTcsIDUsIDUsIDUsIDUsIDUsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgNSwgNSwgNSwgNSwgMTcsIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgMTAyLCAKLSAgICA1LCA1LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxMDIsIDEwMiwgMTAyLCAxOSwgNSwgMTAyLCA1LCA1LCAxNTgsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDUsIDE1OSwgNSwgMTAyLCA1LCAxNjAsIAotICAgIDE2MSwgMTAyLCAxMDIsIDE1OCwgMTksIDEwMiwgMTAyLCAxNjIsIDEwMiwgMTksIDUwLCA1MCwgNTAsIDUwLCAxOSwgNSwgNSwgCi0gICAgMTksIDE5LCAxMDIsIDEwMiwgNSwgNSwgNSwgNSwgNSwgMTAyLCAxOSwgMTksIDE5LCAxOSwgNSwgNSwgNSwgNSwgMTYzLCA1LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMTY0LCAxNjQsIAotICAgIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAxNjQsIDE2NCwgMTY0LCAKLSAgICAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgMTY1LCAxNjUsIDE2NSwgCi0gICAgMTY1LCAxNjUsIDEyOCwgMTI4LCAxMjgsIDI2LCAyNywgMTI4LCAxMjgsIDEyOCwgMTI4LCAyNCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDYsIDYsIDYsIDYsIDI1LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAxMTMsIDUsIDUsIAorICAgIDUsIDUsIDExMywgNSwgNSwgMjAsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMjAsIDUsIDExMywgNSwgCisgICAgNSwgMjUyLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgNSwgNSwgNSwgNSwgNSwgNSwgMTEzLCA1LCAyNTMsIDUsIDExMywgCisgICAgNSwgMjU0LCAyNTUsIDExMywgMTEzLCAyNTIsIDIwLCAxMTMsIDExMywgMjU2LCAxMTMsIDIwLCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjAsIDUsIDUsIDIwLCAyMCwgMTEzLCAxMTMsIDUsIDUsIDUsIDUsIDUsIDExMywgMjAsIDIwLCAyMCwgMjAsIDUsIDUsIDUsIAorICAgIDUsIDI1NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMjcsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAyNTgsIDI1OCwgMjU4LCAKKyAgICAyNTgsIDI1OCwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgMjU5LCAyNTksIDI1OSwgCisgICAgMjU5LCAyNTksIDI1OSwgMjU5LCAxNDEsIDE0MSwgMTQxLCAzMCwgMzEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMTEzNSw2MzIgKzE5NDUsNjg0IEBACiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIAotICAgIDE1NiwgMTU3LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDIzLCAyMCwgMjEsIDE1MiwgCi0gICAgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIAotICAgIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxNjYsIDE2NywgMTY3LCAKLSAgICAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgCi0gICAgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNjcsIDE2NywgMTY3LCAxNTEsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAyNCwgCi0gICAgMTUxLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgCisgICAgMjUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAKKyAgICAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjYsIDIyLCAKKyAgICAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIAorICAgIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyNjAsIDI2MCwgMjYxLCAKKyAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCisgICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI0NSwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAKKyAgICAyNDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDIzLCAKLSAgICAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAyMywgMjAsIDIxLCAxNTIsIDE1MywgMTU0LCAxNTUsIAotICAgIDE1NiwgMTU3LCAyNCwgMjMsIDIwLCAyMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMjQsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAKKyAgICAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIAorICAgIDI1MCwgMjUxLCAyNywgMjYsIDIyLCAyMywgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyNTAsIDI1MSwgMjcsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDAsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgCi0gICAgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIAotICAgIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMTE2LCAKLSAgICAxMTYsIDExNiwgMTE2LCAxMTYsIDExNiwgMCwgMjYsIDI3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMjYsIDI3LCAyNiwgCi0gICAgMjcsIDI2LCAyNywgMTczLCAxNzQsIDE3NSwgMTc2LCAxOSwgMjYsIDI3LCAxOSwgMjYsIDI3LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCA1MCwgMTc3LCAxNzcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAKLSAgICAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAxOSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMjYsIDI3LCAyNiwgMjcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI0LCAKLSAgICA1LCA1LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIAotICAgIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAKLSAgICAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMTc4LCAxNzgsIDE3OCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA4OSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMiwgNSwgNSwgNSwgNSwgNTAsIDUwLCAxMjgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMTI4LCAxMjgsIAotICAgIDEyOCwgNTAsIDUwLCA1LCA1LCA1LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDAsIDAsIDE3LCAxNywgNSwgNSwgNTAsIDUwLCA1MCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNzksIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCAxNzksIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgMTc5LCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDE3OSwgCi0gICAgMTc5LCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDE3OSwgMTc5LCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDE3OSwgMTc5LCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCisgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAorICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCisgICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAorICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKKyAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDAsIDMwLCAzMSwgMjYyLCAyNjMsIAorICAgIDI2NCwgMjY1LCAyNjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDI2NywgMjY4LCAyNjksIDI3MCwgMjAsIDMwLCAzMSwgCisgICAgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCA5NSwgOTUsIDI3MSwgMjcxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMjAsIDUsIDUsIDUsIDUsIDUsIDUsIDMwLCAzMSwgMzAsIDMxLCAyNSwgMjUsIDI1LCAzMCwgMzEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAorICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKKyAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCisgICAgMjcyLCAyNzIsIDI3MiwgMCwgMjcyLCAwLCAwLCAwLCAwLCAwLCAyNzIsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOTYsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNzMsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDUwLCAxNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTcsIDE3LCA1LCA1MCwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIAotICAgIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDE5LCAxOSwgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgCi0gICAgMjYsIDI3LCA1MCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAyNiwgMjcsIDI2LCAyNywgMTgwLCAyNiwgMjcsIAotICAgIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIDI2LCAyNywgNTAsIDUsIDUsIDI2LCAyNywgMTgxLCAxOSwgMCwgMjYsIDI3LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjcsIDI2LCAyNywgMjYsIDI3LCAyNiwgMjcsIAotICAgIDI2LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDUwLCAKLSAgICA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIAotICAgIDUsIDUsIDAsIDAsIDAsIDAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKLSAgICAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIAotICAgIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAxNywgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUwLCAKLSAgICA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgMTcsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgMTcsIDE3LCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAwLCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUsIDUsIDUsIDUwLCAxNywgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTcsIDUwLCAxNywgMTcsIDE3LCA1MCwgNTAsIDE3LCAxNywgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAxNywgMTcsIDUwLCAxNywgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDE3LCAxNywgMCwgMCwgCi0gICAgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTAsIDE3LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDAsIDUwLCA1MCwgCi0gICAgMCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgODksIDg5LCA4OSwgODksIDg5LCA4OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA4OSwgODksIDUsIDUsIDAsIDAsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgMTcsIDE3LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIAotICAgIDE3LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA4OSwgNTAsIDg5LCA1MCwgODksIDAsIDg5LCA1MCwgODksIDUwLCA4OSwgNTAsIAotICAgIDg5LCA1MCwgODksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIAotICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgCi0gICAgMTYsIDE2LCAxNiwgNSwgNSwgNSwgNSwgMTcsIDUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAKLSAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxMTcsIDExNywgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEsIDEsIDEsIDUsIDUsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAwLCAwLCAKLSAgICAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIAotICAgIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMjQsIDI0LCAyNCwgMjQsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI0LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyLCA1LCA1LCA1LCA1LCA5NiwgNTUsIDE0MSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgNSwgOTYsIAorICAgIDk2LCA5NiwgOTYsIDk2LCA1LCA1LCAxNDEsIDE0MSwgMTQxLCA5NiwgNTUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCA2LCA2LCA5NiwgOTYsIDU1LCAKKyAgICA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA5NiwgOTYsIDk2LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI3NCwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNzQsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgMjc0LCAyNzQsIDI3NCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgMjc0LCAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxMjgsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTI4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgOTYsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgNTUsIDI1LCA2LCA2LCA2LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgNSwgOTYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIAorICAgIDYsIDYsIDYsIDYsIDYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDYsIDYsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDk1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAyNzUsIDMwLCAzMSwgCisgICAgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCA5NiwgNiwgNiwgMzAsIDMxLCAyNzYsIDIwLCAwLCAzMCwgMzEsIDMwLCAKKyAgICAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAKKyAgICAzMCwgMzEsIDI3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgNSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTUsIDk1LCAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAKKyAgICAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIAorICAgIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCA5NiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAKLSAgICAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgCi0gICAgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIAotICAgIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgyLCAxODIsIDE4MiwgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAKLSAgICAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCi0gICAgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIAotICAgIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCA2LCA3LCA4LCA5LCAxMCwgMTEsIAotICAgIDEyLCAxMywgMTQsIDE1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCAwLCAwLCA1MCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDAsIDAsIDAsIAotICAgIDUwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDUsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDAsIDAsIDAsIDUsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDE3LCAxNywgMTcsIDAsIDE3LCAxNywgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAKLSAgICAxNywgMTcsIDUwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCAwLCAwLCAwLCAwLCAxNywgMTcsIDE3LCAwLCAwLCAwLCAwLCAxNywgMjMsIDIwLCAyMSwgMTUyLCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyNCwgMjQsIDUsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDk2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1NSwgMTgsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMjUsIDI1LCAyNSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDk2LCA1LCA1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDE4LCAxOCwgNSwgNSwgNTUsIDk2LCA5NiwgCisgICAgMTgsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAyNSwgCisgICAgMTgsIDE4LCAyNSwgMTgsIDE4LCA1LCAxOCwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNzQsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgCi0gICAgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAwLCAxNywgMTcsIDE3LCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDAsIDAsIDAsIDAsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDI0LCAyNCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCA1LCA1LCAxLCA1LCAKLSAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNzgsIDI3OSwgMjgwLCAyODEsIDI4MiwgMjgzLCAyODQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDI4NSwgMjg2LCAyODcsIDI4OCwgMjg5LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyOTAsIDI5MCwgMjkwLCAyOTAsIDI5MCwgMjkwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDE1OCwgMTU4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIAotICAgIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAKLSAgICAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDE1OCwgMTU4LCAxMjgsIDEyOCwgCi0gICAgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEyOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjkwLCAyOTAsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIAorICAgIDE4LCA1LCA1LCA2LCAwLCA1LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyOTAsIDU1LCAyOTAsIDU1LCAyOTAsIDAsIDI5MCwgNTUsIDI5MCwgNTUsIAorICAgIDI5MCwgNTUsIDI5MCwgNTUsIDI5MCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjEsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDYsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDYsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA2LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCisgICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDYsIDE4LCA2LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA5NiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjkxLCAyOTEsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCA1LCA1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAyNywgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxNDEsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgCisgICAgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIAorICAgIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MiwgMjkyLCAyOTIsIDI5MywgMjkzLCAKKyAgICAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgCisgICAgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIAorICAgIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgMjkzLCAyOTMsIDI5MywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNSwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDI1LCAyNSwgMCwgMjUsIAorICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNiwgMjIsIDIzLCAyNDYsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDI3LCAyNywgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIDI0OSwgMjUwLCAyNTEsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDI0NiwgMjQ3LCAyNDgsIAorICAgIDI0OSwgMjUwLCAyNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDI1LCAyNSwgNSwgNSwgMjEsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAyNTIsIDI1MiwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIAorICAgIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAKKyAgICAxNDEsIDE0MSwgMTQxLCAyNTIsIDI1MiwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgMTQxLCAxNDEsIDE0MSwgCisgICAgMTQxLCAxNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCisgICAgMjUsIDI1LCAyNSwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDk2LCA5NiwgOTYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xNzc1LDI3MiArMjYzNywyODYgQEAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxNywgMTcsIDE3LCAxNywgMTcsIAotICAgIDUsIDUsIDUsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgNSwgNSwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE3LCAxNywgCi0gICAgMTcsIDE3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMTcsIDE3LCAxNywgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjQsIDI0LCAKLSAgICAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMjQsIDI0LCAyNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAwLCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxMDIsIDAsIDEwMiwgMTAyLCAwLCAwLCAxMDIsIDAsIDAsIDEwMiwgMTAyLCAwLCAwLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIAotICAgIDE5LCAxOSwgMCwgMTksIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDAsIDAsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAwLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDAsIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDAsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDAsIDEwMiwgMCwgMCwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAwLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMCwgMCwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgCi0gICAgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIAotICAgIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKLSAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgCi0gICAgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgNSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTAyLCAxOSwgMCwgMCwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNiwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNiwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTEsIDIzLCAyMCwgMjEsIDE1MiwgMTUzLCAKLSAgICAxNTQsIDE1NSwgMTU2LCAxNTcsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDExMywgMCwgMTEzLCAxMTMsIDAsIDAsIDExMywgMCwgMCwgCisgICAgMTEzLCAxMTMsIDAsIDAsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDIwLCAyMCwgMjAsIDIwLCAwLCAyMCwgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDAsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMCwgMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMCwgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMCwgMTEzLCAwLCAwLCAwLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIAorICAgIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDExMywgMTEzLCAKKyAgICAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgCisgICAgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDExMywgMTEzLCAxMTMsIDUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICA1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMTMsIDIwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIAorICAgIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgCisgICAgMTUsIDE2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgCisgICAgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCA1NSwgMCwgNTUsIDAsIAorICAgIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NSwgMjQ1LCAyNiwgMjIsIDIzLCAyNDYsIDI0NywgMjQ4LCAyNDksIAorICAgIDI1MCwgMjUxLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCAKKyAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKICAgICA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCAwLCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAKLSAgICAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNzQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjc0LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgMCwgNSwgMCwgNSwgMCwgNSwgMCwgNSwgCi0gICAgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMTc5LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTc5LCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDE3OSwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAxNzksIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAotICAgIDEsIDEsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgCi0gICAgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKLSAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKKyAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAwLCAwLCAKIH07CiAKIC8qIFJldHVybnMgdGhlIG51bWVyaWMgdmFsdWUgYXMgZG91YmxlIGZvciBVbmljb2RlIGNoYXJhY3RlcnMKQEAgLTIxMDAsNiArMjk3NiwxMCBAQAogICAgIGNhc2UgMHgxMDE4QToKICAgICBjYXNlIDB4MTA0QTA6CiAgICAgY2FzZSAweDExMDY2OgorICAgIGNhc2UgMHgxMTBGMDoKKyAgICBjYXNlIDB4MTExMzY6CisgICAgY2FzZSAweDExMUQwOgorICAgIGNhc2UgMHgxMTZDMDoKICAgICBjYXNlIDB4MUQ3Q0U6CiAgICAgY2FzZSAweDFEN0Q4OgogICAgIGNhc2UgMHgxRDdFMjoKQEAgLTIxODcsNiArMzA2NywxMCBAQAogICAgIGNhc2UgMHgxMEU2MDoKICAgICBjYXNlIDB4MTEwNTI6CiAgICAgY2FzZSAweDExMDY3OgorICAgIGNhc2UgMHgxMTBGMToKKyAgICBjYXNlIDB4MTExMzc6CisgICAgY2FzZSAweDExMUQxOgorICAgIGNhc2UgMHgxMTZDMToKICAgICBjYXNlIDB4MTI0MTU6CiAgICAgY2FzZSAweDEyNDFFOgogICAgIGNhc2UgMHgxMjQyQzoKQEAgLTIyNjMsNiArMzE0Nyw3IEBACiAgICAgY2FzZSAweDI3OTM6CiAgICAgY2FzZSAweDMwMzg6CiAgICAgY2FzZSAweDMyMjk6CisgICAgY2FzZSAweDMyNDg6CiAgICAgY2FzZSAweDMyODk6CiAgICAgY2FzZSAweDRFQzA6CiAgICAgY2FzZSAweDUzNDE6CkBAIC0yNDgzLDYgKzMzNjgsMTAgQEAKICAgICBjYXNlIDB4MTBFNjE6CiAgICAgY2FzZSAweDExMDUzOgogICAgIGNhc2UgMHgxMTA2ODoKKyAgICBjYXNlIDB4MTEwRjI6CisgICAgY2FzZSAweDExMTM4OgorICAgIGNhc2UgMHgxMTFEMjoKKyAgICBjYXNlIDB4MTE2QzI6CiAgICAgY2FzZSAweDEyNDAwOgogICAgIGNhc2UgMHgxMjQxNjoKICAgICBjYXNlIDB4MTI0MUY6CkBAIC0yNTE1LDYgKzM0MDQsNyBAQAogICAgIGNhc2UgMHgyNDlCOgogICAgIGNhc2UgMHgyNEY0OgogICAgIGNhc2UgMHgzMDM5OgorICAgIGNhc2UgMHgzMjQ5OgogICAgIGNhc2UgMHg1MzQ0OgogICAgIGNhc2UgMHg1RUZGOgogICAgIGNhc2UgMHgxMDExMToKQEAgLTI2MjYsNiArMzUxNiwxMCBAQAogICAgIGNhc2UgMHgxMEU2MjoKICAgICBjYXNlIDB4MTEwNTQ6CiAgICAgY2FzZSAweDExMDY5OgorICAgIGNhc2UgMHgxMTBGMzoKKyAgICBjYXNlIDB4MTExMzk6CisgICAgY2FzZSAweDExMUQzOgorICAgIGNhc2UgMHgxMTZDMzoKICAgICBjYXNlIDB4MTI0MDE6CiAgICAgY2FzZSAweDEyNDA4OgogICAgIGNhc2UgMHgxMjQxNzoKQEAgLTI2NzEsNiArMzU2NSw3IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvOC4wOwogICAgIGNhc2UgMHgxMzc0OgogICAgIGNhc2UgMHgzMDNBOgorICAgIGNhc2UgMHgzMjRBOgogICAgIGNhc2UgMHgzMjVBOgogICAgIGNhc2UgMHg1MzQ1OgogICAgIGNhc2UgMHgxMDExMjoKQEAgLTI3NzAsNiArMzY2NSwxMCBAQAogICAgIGNhc2UgMHgxMEU2MzoKICAgICBjYXNlIDB4MTEwNTU6CiAgICAgY2FzZSAweDExMDZBOgorICAgIGNhc2UgMHgxMTBGNDoKKyAgICBjYXNlIDB4MTExM0E6CisgICAgY2FzZSAweDExMUQ0OgorICAgIGNhc2UgMHgxMTZDNDoKICAgICBjYXNlIDB4MTI0MDI6CiAgICAgY2FzZSAweDEyNDA5OgogICAgIGNhc2UgMHgxMjQwRjoKQEAgLTI3OTksNiArMzY5OCw3IEBACiAgICAgY2FzZSAweDIxNTg6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA0LjAvNS4wOwogICAgIGNhc2UgMHgxMzc1OgorICAgIGNhc2UgMHgzMjRCOgogICAgIGNhc2UgMHgzMkI1OgogICAgIGNhc2UgMHg1MzRDOgogICAgIGNhc2UgMHgxMDExMzoKQEAgLTI5MDAsNiArMzgwMCwxMCBAQAogICAgIGNhc2UgMHgxMEU2NDoKICAgICBjYXNlIDB4MTEwNTY6CiAgICAgY2FzZSAweDExMDZCOgorICAgIGNhc2UgMHgxMTBGNToKKyAgICBjYXNlIDB4MTExM0I6CisgICAgY2FzZSAweDExMUQ1OgorICAgIGNhc2UgMHgxMTZDNToKICAgICBjYXNlIDB4MTI0MDM6CiAgICAgY2FzZSAweDEyNDBBOgogICAgIGNhc2UgMHgxMjQxMDoKQEAgLTI5MzEsNiArMzgzNSw3IEBACiAgICAgY2FzZSAweDIxNkM6CiAgICAgY2FzZSAweDIxN0M6CiAgICAgY2FzZSAweDIxODY6CisgICAgY2FzZSAweDMyNEM6CiAgICAgY2FzZSAweDMyQkY6CiAgICAgY2FzZSAweDEwMTE0OgogICAgIGNhc2UgMHgxMDE0NDoKQEAgLTMwMzQsNiArMzkzOSwxMCBAQAogICAgIGNhc2UgMHgxMEU2NToKICAgICBjYXNlIDB4MTEwNTc6CiAgICAgY2FzZSAweDExMDZDOgorICAgIGNhc2UgMHgxMTBGNjoKKyAgICBjYXNlIDB4MTExM0M6CisgICAgY2FzZSAweDExMUQ2OgorICAgIGNhc2UgMHgxMTZDNjoKICAgICBjYXNlIDB4MTI0MDQ6CiAgICAgY2FzZSAweDEyNDBCOgogICAgIGNhc2UgMHgxMjQxMToKQEAgLTMwNTEsNiArMzk2MCw3IEBACiAgICAgY2FzZSAweDIwQUVBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNi4wOwogICAgIGNhc2UgMHgxMzc3OgorICAgIGNhc2UgMHgzMjREOgogICAgIGNhc2UgMHgxMDExNToKICAgICBjYXNlIDB4MTBFNkU6CiAgICAgY2FzZSAweDExMDYwOgpAQCAtMzEyNCw2ICs0MDM0LDEwIEBACiAgICAgY2FzZSAweDEwRTY2OgogICAgIGNhc2UgMHgxMTA1ODoKICAgICBjYXNlIDB4MTEwNkQ6CisgICAgY2FzZSAweDExMEY3OgorICAgIGNhc2UgMHgxMTEzRDoKKyAgICBjYXNlIDB4MTExRDc6CisgICAgY2FzZSAweDExNkM3OgogICAgIGNhc2UgMHgxMjQwNToKICAgICBjYXNlIDB4MTI0MEM6CiAgICAgY2FzZSAweDEyNDEyOgpAQCAtMzE0Niw2ICs0MDYwLDcgQEAKICAgICBjYXNlIDB4MjE1RToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDcuMC84LjA7CiAgICAgY2FzZSAweDEzNzg6CisgICAgY2FzZSAweDMyNEU6CiAgICAgY2FzZSAweDEwMTE2OgogICAgIGNhc2UgMHgxMEU2RjoKICAgICBjYXNlIDB4MTEwNjE6CkBAIC0zMjE3LDYgKzQxMzIsMTAgQEAKICAgICBjYXNlIDB4MTBFNjc6CiAgICAgY2FzZSAweDExMDU5OgogICAgIGNhc2UgMHgxMTA2RToKKyAgICBjYXNlIDB4MTEwRjg6CisgICAgY2FzZSAweDExMTNFOgorICAgIGNhc2UgMHgxMTFEODoKKyAgICBjYXNlIDB4MTE2Qzg6CiAgICAgY2FzZSAweDEyNDA2OgogICAgIGNhc2UgMHgxMjQwRDoKICAgICBjYXNlIDB4MTI0MTM6CkBAIC0zMjMzLDYgKzQxNTIsNyBAQAogICAgIGNhc2UgMHgxRjEwOToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDguMDsKICAgICBjYXNlIDB4MTM3OToKKyAgICBjYXNlIDB4MzI0RjoKICAgICBjYXNlIDB4MTAxMTc6CiAgICAgY2FzZSAweDEwRTcwOgogICAgIGNhc2UgMHgxMTA2MjoKQEAgLTMzMDUsNiArNDIyNSwxMCBAQAogICAgIGNhc2UgMHgxMEU2ODoKICAgICBjYXNlIDB4MTEwNUE6CiAgICAgY2FzZSAweDExMDZGOgorICAgIGNhc2UgMHgxMTBGOToKKyAgICBjYXNlIDB4MTExM0Y6CisgICAgY2FzZSAweDExMUQ5OgorICAgIGNhc2UgMHgxMTZDOToKICAgICBjYXNlIDB4MTI0MDc6CiAgICAgY2FzZSAweDEyNDBFOgogICAgIGNhc2UgMHgxMjQxNDoKZGlmZiAtLWdpdCBhL09iamVjdHMvd2Vha3JlZm9iamVjdC5jIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKaW5kZXggMTMzMjNjZi4uZTA3YWRiMiAxMDA2NDQKLS0tIGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKKysrIGIvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMKQEAgLTE1NiwyOCArMTU2LDMyIEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2Vha3JlZl9yZXByKFB5V2Vha1JlZmVyZW5jZSAqc2VsZikKIHsKLSAgICBjaGFyIGJ1ZmZlclsyNTZdOwotICAgIGlmIChQeVdlYWtyZWZfR0VUX09CSkVDVChzZWxmKSA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIjx3ZWFrcmVmIGF0ICVwOyBkZWFkPiIsIHNlbGYpOworICAgIFB5T2JqZWN0ICpuYW1lLCAqcmVwcjsKKyAgICBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CisKKyAgICBpZiAoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikgPT0gUHlfTm9uZSkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8d2Vha3JlZiBhdCAlcDsgZGVhZD4iLCBzZWxmKTsKKworICAgIG5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpLCAmUHlJZF9fX25hbWVfXyk7CisgICAgaWYgKG5hbWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKG5hbWUpKSB7CisgICAgICAgIGlmIChuYW1lID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAiPHdlYWtyZWYgYXQgJXA7IHRvICclcycgYXQgJXA+IiwKKyAgICAgICAgICAgIHNlbGYsCisgICAgICAgICAgICBQeV9UWVBFKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpKS0+dHBfbmFtZSwKKyAgICAgICAgICAgIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgKm5hbWUgPSBOVUxMOwotICAgICAgICBQeU9iamVjdCAqbmFtZW9iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18iKTsKLSAgICAgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sobmFtZW9iaikpCi0gICAgICAgICAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcobmFtZW9iaik7Ci0gICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICBuYW1lID8gIjx3ZWFrcmVmIGF0ICVwOyB0byAnJS41MHMnIGF0ICVwICglcyk+IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPHdlYWtyZWYgYXQgJXA7IHRvICclLjUwcycgYXQgJXA+IiwKLSAgICAgICAgICAgICAgICAgICAgICBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikpLT50cF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICBQeV9YREVDUkVGKG5hbWVvYmopOworICAgICAgICByZXByID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICAgICAiPHdlYWtyZWYgYXQgJXA7IHRvICclcycgYXQgJXAgKCVVKT4iLAorICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikpLT50cF9uYW1lLAorICAgICAgICAgICAgUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZiksCisgICAgICAgICAgICBuYW1lKTsKICAgICB9Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKGJ1ZmZlcik7CisgICAgUHlfWERFQ1JFRihuYW1lKTsKKyAgICByZXR1cm4gcmVwcjsKIH0KIAogLyogV2VhayByZWZlcmVuY2VzIG9ubHkgc3VwcG9ydCBlcXVhbGl0eSwgbm90IG9yZGVyaW5nLiBUd28gd2VhayByZWZlcmVuY2VzCkBAIC0xOTAsOCArMTk0LDcgQEAKICAgICBpZiAoKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB8fAogICAgICAgICAhUHlXZWFrcmVmX0NoZWNrKHNlbGYpIHx8CiAgICAgICAgICFQeVdlYWtyZWZfQ2hlY2sob3RoZXIpKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob3RJbXBsZW1lbnRlZCk7Ci0gICAgICAgIHJldHVybiBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KICAgICBpZiAoUHlXZWFrcmVmX0dFVF9PQkpFQ1Qoc2VsZikgPT0gUHlfTm9uZQogICAgICAgICB8fCBQeVdlYWtyZWZfR0VUX09CSkVDVChvdGhlcikgPT0gUHlfTm9uZSkgewpAQCAtNDM4LDggKzQ0MSw5IEBACiAjZGVmaW5lIFdSQVBfTUVUSE9EKG1ldGhvZCwgc3BlY2lhbCkgXAogICAgIHN0YXRpYyBQeU9iamVjdCAqIFwKICAgICBtZXRob2QoUHlPYmplY3QgKnByb3h5KSB7IFwKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKHNwZWNpYWwpOyBcCiAgICAgICAgICAgICBVTldSQVAocHJveHkpOyBcCi0gICAgICAgICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxNZXRob2QocHJveHksIHNwZWNpYWwsICIiKTsgXAorICAgICAgICAgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHByb3h5LCAmUHlJZF8jI3NwZWNpYWwsICIiKTsgXAogICAgICAgICB9CiAKIApAQCAtNDUyLDEyICs0NTYsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBwcm94eV9yZXByKFB5V2Vha1JlZmVyZW5jZSAqcHJveHkpCiB7Ci0gICAgY2hhciBidWZbMTYwXTsKLSAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAiPHdlYWtwcm94eSBhdCAlcCB0byAlLjEwMHMgYXQgJXA+IiwgcHJveHksCi0gICAgICAgICAgICAgICAgICBQeV9UWVBFKFB5V2Vha3JlZl9HRVRfT0JKRUNUKHByb3h5KSktPnRwX25hbWUsCi0gICAgICAgICAgICAgICAgICBQeVdlYWtyZWZfR0VUX09CSkVDVChwcm94eSkpOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgIjx3ZWFrcHJveHkgYXQgJXAgdG8gJXMgYXQgJXA+IiwKKyAgICAgICAgcHJveHksCisgICAgICAgIFB5X1RZUEUoUHlXZWFrcmVmX0dFVF9PQkpFQ1QocHJveHkpKS0+dHBfbmFtZSwKKyAgICAgICAgUHlXZWFrcmVmX0dFVF9PQkpFQ1QocHJveHkpKTsKIH0KIAogCkBAIC01ODMsNyArNTg2LDcgQEAKIH0KIAogCi1XUkFQX01FVEhPRChwcm94eV9ieXRlcywgIl9fYnl0ZXNfXyIpCitXUkFQX01FVEhPRChwcm94eV9ieXRlcywgX19ieXRlc19fKQogCiAKIHN0YXRpYyBQeU1ldGhvZERlZiBwcm94eV9tZXRob2RzW10gPSB7CmRpZmYgLS1naXQgYS9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AgYi9QQy9WQzYvX211bHRpcHJvY2Vzc2luZy5kc3AKaW5kZXggMmRjYWY4My4uZTFiODQ3MCAxMDA2NDQKLS0tIGEvUEMvVkM2L19tdWx0aXByb2Nlc3NpbmcuZHNwCisrKyBiL1BDL1ZDNi9fbXVsdGlwcm9jZXNzaW5nLmRzcApAQCAtOTcsMTggKzk3LDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHBpcGVfY29ubmVjdGlvbi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc29ja2V0X2Nvbm5lY3Rpb24uYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0uLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcd2luMzJfZnVuY3Rpb25zLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgRW5kIFRhcmdldA0KZGlmZiAtLWdpdCBhL1BDL1ZDNi9weXRob25jb3JlLmRzcCBiL1BDL1ZDNi9weXRob25jb3JlLmRzcAppbmRleCA5MjYyNTZkLi4wY2U5OGQxIDEwMDY0NAotLS0gYS9QQy9WQzYvcHl0aG9uY29yZS5kc3AKKysrIGIvUEMvVkM2L3B5dGhvbmNvcmUuZHNwCkBAIC01NCw3ICs1NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGxhcmdlaW50LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZTAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL291dDoiLi9weXRob24zMi5kbGwiDQorIyBBREQgTElOSzMyIGxhcmdlaW50LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZTAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL291dDoiLi9weXRob24zMy5kbGwiDQogIyBTVUJUUkFDVCBMSU5LMzIgL3BkYjpub25lDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInB5dGhvbmNvcmUgLSBXaW4zMiBEZWJ1ZyINCkBAIC04Miw3ICs4Miw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOndpbmRvd3MgL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIGxhcmdlaW50LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgL25vbG9nbyAvYmFzZToiMHgxZTAwMDAwMCIgL3N1YnN5c3RlbTp3aW5kb3dzIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL25vZGVmYXVsdGxpYjoibGliYyIgL291dDoiLi9weXRob24zMl9kLmRsbCIgL3BkYnR5cGU6c2VwdA0KKyMgQUREIExJTkszMiBsYXJnZWludC5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIC9ub2xvZ28gL2Jhc2U6IjB4MWUwMDAwMDAiIC9zdWJzeXN0ZW06d2luZG93cyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9ub2RlZmF1bHRsaWI6ImxpYmMiIC9vdXQ6Ii4vcHl0aG9uMzNfZC5kbGwiIC9wZGJ0eXBlOnNlcHQNCiAjIFNVQlRSQUNUIExJTkszMiAvcGRiOm5vbmUNCiANCiAhRU5ESUYgDQpAQCAtNDY2LDExICs0NjYsNiBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXGltcG9ydF9udC5jDQotIyBBREQgQ1BQIC9JICIuLlwuLlxQeXRob24iDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXFB5dGhvblxpbXBvcnRkbC5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpkaWZmIC0tZ2l0IGEvUEMvVkM2L3JlYWRtZS50eHQgYi9QQy9WQzYvcmVhZG1lLnR4dAppbmRleCBmYTFhZTdkLi5kNmVjNmU2IDEwMDY0NAotLS0gYS9QQy9WQzYvcmVhZG1lLnR4dAorKysgYi9QQy9WQzYvcmVhZG1lLnR4dApAQCAtMTIsNyArMTIsNyBAQAogVGhlIHByb3BlciBvcmRlciB0byBidWlsZCBzdWJwcm9qZWN0czoKIAogMSkgcHl0aG9uY29yZSAodGhpcyBidWlsZHMgdGhlIG1haW4gUHl0aG9uIERMTCBhbmQgbGlicmFyeSBmaWxlcywKLSAgICAgICAgICAgICAgIHB5dGhvbjMyLntkbGwsIGxpYn0gaW4gUmVsZWFzZSBtb2RlKQorICAgICAgICAgICAgICAgcHl0aG9uMzMue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCiAKIDIpIHB5dGhvbiAodGhpcyBidWlsZHMgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUsCiAgICAgICAgICAgIHB5dGhvbi5leGUgaW4gUmVsZWFzZSBtb2RlKQpAQCAtMjMsNyArMjMsNyBAQAogICAgdG8gdGhlIHN1YnN5c3RlbXMgdGhleSBpbXBsZW1lbnQ7IHNlZSBTVUJQUk9KRUNUUyBiZWxvdykKIAogV2hlbiB1c2luZyB0aGUgRGVidWcgc2V0dGluZywgdGhlIG91dHB1dCBmaWxlcyBoYXZlIGEgX2QgYWRkZWQgdG8KLXRoZWlyIG5hbWU6ICBweXRob24zMl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBweWV4cGF0X2QucHlkLCBhbmQgc28gb24uCit0aGVpciBuYW1lOiAgcHl0aG9uMzNfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcHlleHBhdF9kLnB5ZCwgYW5kIHNvIG9uLgogCiBTVUJQUk9KRUNUUwogLS0tLS0tLS0tLS0KQEAgLTE1Myw5ICsxNTMsOSBAQAogCiAgICAgVW5wYWNrIGludG8gdGhlICJkaXN0IiBkaXJlY3RvcnksIHJldGFpbmluZyB0aGUgZm9sZGVyIG5hbWUgZnJvbQogICAgIHRoZSBhcmNoaXZlIC0gZm9yIGV4YW1wbGUsIHRoZSBsYXRlc3Qgc3RhYmxlIE9wZW5TU0wgd2lsbCBpbnN0YWxsIGFzCi0gICAgICAgIGRpc3Qvb3BlbnNzbC0xLjAuMGoKKyAgICAgICAgZGlzdC9vcGVuc3NsLTEuMC4xYwogCi0gICAgWW91IG5lZWQgdG8gdXNlIHZlcnNpb24gMS4wLjBqIG9mIE9wZW5TU0wuCisgICAgWW91IG5lZWQgdG8gdXNlIHZlcnNpb24gMS4wLjFjIG9mIE9wZW5TU0wuCiAKICAgICBZb3UgY2FuIGluc3RhbGwgdGhlIE5BU00gYXNzZW1ibGVyIGZyb20KICAgICAgICAgaHR0cDovL3d3dy5uYXNtLnVzLwpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2ogYi9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvagppbmRleCA3N2Y3ZDlkLi4wNWM0MTg0IDEwMDY0NAotLS0gYS9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvagorKysgYi9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvagpAQCAtMzksMTUgKzM5LDE1IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMyLmRsbCINCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMy5kbGwiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KIAkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KIAkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMi5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zMy5wZGIiDQogCQkJCVN1YlN5c3RlbT0iMiINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMi5saWIiDQorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24zMy5saWIiDQogCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQpAQCAtOTksMTUgKzk5LDE1IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMyX2QuZGxsIg0KKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzX2QuZGxsIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzJfZC5wZGIiDQorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24zM19kLnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMyX2QubGliIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzNfZC5saWIiDQogCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQpAQCAtMTY2LDE1ICsxNjYsMTUgQEAKIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQogCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQogCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMyLmRsbCINCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob24zMy5kbGwiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJGQUxTRSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCiAJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzIucGRiIg0KKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uMzMucGRiIg0KIAkJCQlTdWJTeXN0ZW09IjIiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzIubGliIg0KKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHl0aG9uMzMubGliIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KQEAgLTIzMywxNSArMjMzLDE1IEBACiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCiAJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMzIuZGxsIg0KKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjMzLmRsbCINCiAJCQkJTGlua0luY3JlbWVudGFsPSIxIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQogCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQogCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMyLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjMzLnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMyLmxpYiINCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjMzLmxpYiINCiAJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCkBAIC02MTYsMzMgKzYxNiw2IEBACiAJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnQuYyI+DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcaW1wb3J0X250LmMiPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQogCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyI+DQogCQk8L0ZpbGU+DQogCQk8RmlsZQ0KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3JlYWRtZS50eHQgYi9QQy9WUzcuMS9yZWFkbWUudHh0CmluZGV4IDhmYjA2OWYuLmJmZDhhNzAgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL3JlYWRtZS50eHQKKysrIGIvUEMvVlM3LjEvcmVhZG1lLnR4dApAQCAtMTIsNyArMTIsNyBAQAogVGhlIHByb3BlciBvcmRlciB0byBidWlsZCBzdWJwcm9qZWN0czoKIAogMSkgcHl0aG9uY29yZSAodGhpcyBidWlsZHMgdGhlIG1haW4gUHl0aG9uIERMTCBhbmQgbGlicmFyeSBmaWxlcywKLSAgICAgICAgICAgICAgIHB5dGhvbjI2LntkbGwsIGxpYn0gaW4gUmVsZWFzZSBtb2RlKQorICAgICAgICAgICAgICAgcHl0aG9uMzMue2RsbCwgbGlifSBpbiBSZWxlYXNlIG1vZGUpCiAgICAgICAgICAgICAgIE5PVEU6ICBpbiBwcmV2aW91cyByZWxlYXNlcywgdGhpcyBzdWJwcm9qZWN0IHdhcwogICAgICAgICAgICAgICBuYW1lZCBhZnRlciB0aGUgcmVsZWFzZSBudW1iZXIsIGUuZy4gcHl0aG9uMjAuCiAKQEAgLTI2LDcgKzI2LDcgQEAKICAgIHRlc3Qgc2xhdmU7IHNlZSBTVUJQUk9KRUNUUyBiZWxvdykKIAogV2hlbiB1c2luZyB0aGUgRGVidWcgc2V0dGluZywgdGhlIG91dHB1dCBmaWxlcyBoYXZlIGEgX2QgYWRkZWQgdG8KLXRoZWlyIG5hbWU6ICBweXRob24yNl9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4KK3RoZWlyIG5hbWU6ICBweXRob24zM19kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4KIAogU1VCUFJPSkVDVFMKIC0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiBiL1BDL1ZTOC4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCmluZGV4IGMyYmJlYzQuLjhmMWNhZmMgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCisrKyBiL1BDL1ZTOC4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCkBAIC01MjIsMTAgKzUyMiw2IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQogCQk8RmlsdGVyDQogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KQEAgLTUzNSwxOCArNTMxLDEwIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xwaXBlX2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzb2NrZXRfY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHdpbjMyX2Z1bmN0aW9ucy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQgYi9QQy9WUzguMC9idWlsZF9zc2wuYmF0CmluZGV4IDM5YzFmZjAuLjM1N2IwOGIgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQKKysrIGIvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdApAQCAtMiwxMCArMiwxMCBAQAogaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKAogICBpZiAlMSBFUVUgRGVidWcgKAogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUKLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzJfZC5kbGwgZXhpdCAxCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjMzX2QuZGxsIGV4aXQgMQogICApIEVMU0UgKAogICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjMyLmRsbCBleGl0IDEKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMzMuZGxsIGV4aXQgMQogICApCiApCiAlSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMwpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAva2lsbF9weXRob24uYyBiL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLmMKaW5kZXggNmI5MTY3OC4uYmIzMjNkMyAxMDA2NDQKLS0tIGEvUEMvVlM4LjAva2lsbF9weXRob24uYworKysgYi9QQy9WUzguMC9raWxsX3B5dGhvbi5jCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKICAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCi0gICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzJbX2RdLmRsbCksCisgICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzNbX2RdLmRsbCksCiAgICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgogICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCiAgICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzIGIvUEMvVlM4LjAvcHlwcm9qZWN0LnZzcHJvcHMKaW5kZXggMmE4MmU0OS4uZjg2Y2RlYyAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcHlwcm9qZWN0LnZzcHJvcHMKKysrIGIvUEMvVlM4LjAvcHlwcm9qZWN0LnZzcHJvcHMKQEAgLTM4LDcgKzM4LDcgQEAKIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJQeURsbE5hbWUiDQotCQlWYWx1ZT0icHl0aG9uMzIiDQorCQlWYWx1ZT0icHl0aG9uMzMiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9IlB5dGhvbkV4ZSINCkBAIC01OCw3ICs1OCw3IEBACiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0ib3BlbnNzbERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMGoiDQorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjFjIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJ0Y2x0a0RpciINCmRpZmYgLS1naXQgYS9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvaiBiL1BDL1ZTOC4wL3B5dGhvbmNvcmUudmNwcm9qCmluZGV4IGU4MTU1OWUuLmE3NWJiOWQgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3B5dGhvbmNvcmUudmNwcm9qCisrKyBiL1BDL1ZTOC4wL3B5dGhvbmNvcmUudmNwcm9qCkBAIC0xNzA3LDEwICsxNzA3LDYgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcaW1wb3J0X250LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtc3ZjcnRtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J6Mi52Y3Byb2ogYi9QQy9WUzkuMC9fYnoyLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL2J6Mi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19iejIudmNwcm9qCmluZGV4IGUyYjM1M2IuLjdjZWI4YzcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnoyLnZjcHJvagorKysgYi9QQy9WUzkuMC9fYnoyLnZjcHJvagpAQCAtMSw4ICsxLDggQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJiejIiDQorCVZlcnNpb249IjkuMDAiDQorCU5hbWU9Il9iejIiDQogCVByb2plY3RHVUlEPSJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCiAJUm9vdE5hbWVzcGFjZT0iYnoyIg0KIAlLZXl3b3JkPSJXaW4zMlByb2oiDQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xiejJtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iejJtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlcy52Y3Byb2ogYi9QQy9WUzkuMC9fY3R5cGVzLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDg4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19jdHlwZXMudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fY3R5cGVzLnZjcHJvagppbmRleCAxZWI4YjU3Li44ZTVjYmExIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19jdHlwZXMudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCkBAIC00Miw3ICs0Miw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTAzLDcgKzEwMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMTY0LDcgKzE2NCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMjI4LDcgKzIyOCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMjkxLDcgKzI5MSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMzU1LDcgKzM1NSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDE5LDcgKzQxOSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDgzLDcgKzQ4Myw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNTMxLDI3ICs1MzEsMjcgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaWNvbmZpZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTU1OSwzOSArNTU5LDM5IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiDQpAQCAtNjI3LDcgKzYyNyw3IEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3Byb2ogYi9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX2N0eXBlc190ZXN0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagppbmRleCAwYzdhYmJlLi43MDMzNTQ2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfY3R5cGVzX3Rlc3QiDQogCVByb2plY3RHVUlEPSJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCiAJUm9vdE5hbWVzcGFjZT0iX2N0eXBlc190ZXN0Ig0KQEAgLTUwMyw3ICs1MDMsNyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01MTEsNyArNTExLDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fY3R5cGVzLnZjcHJvaiBiL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDY5JQpjb3B5IGZyb20gUENidWlsZC9fY3R5cGVzLnZjcHJvagpjb3B5IHRvIFBDL1ZTOS4wL19kZWNpbWFsLnZjcHJvagppbmRleCAxZWI4YjU3Li5iOWZhYmIwIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19jdHlwZXMudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19kZWNpbWFsLnZjcHJvagpAQCAtMiw5ICsyLDkgQEAKIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KIAlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfY3R5cGVzIg0KLQlQcm9qZWN0R1VJRD0iezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQotCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXMiDQorCU5hbWU9Il9kZWNpbWFsIg0KKwlQcm9qZWN0R1VJRD0iezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQorCVJvb3ROYW1lc3BhY2U9Il9kZWNpbWFsIg0KIAlLZXl3b3JkPSJXaW4zMlByb2oiDQogCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCiAJPg0KQEAgLTQyLDcgKzQyLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xMDMsNyArMTA0LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTE2NCw3ICsxNjYsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTE3Nyw3ICsxODAsNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkvPg0KQEAgLTIyOCw3ICsyMzAsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMjQxLDcgKzI0NCw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCS8+DQpAQCAtMjkxLDcgKzI5Myw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtMzA0LDcgKzMwNyw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCS8+DQpAQCAtMzU1LDcgKzM1Nyw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsOy4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zNjgsNyArMzcxLDYgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQogCQkJCVN1YlN5c3RlbT0iMCINCiAJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQogCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KQEAgLTQxOSw3ICs0MjEsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00iDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQzMiw3ICs0MzUsNiBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCiAJCQkJU3ViU3lzdGVtPSIwIg0KIAkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCiAJCQkvPg0KQEAgLTQ4Myw3ICs0ODUsOCBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbDsuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQpAQCAtNDk2LDcgKzQ5OSw2IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KIAkJCQlTdWJTeXN0ZW09IjAiDQogCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCkBAIC01MzEsMjcgKzUzMyw3MSBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJhc2Vhcml0aC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYml0cy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxkb2NzdHJpbmdzLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtcGRlY2ltYWwuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHJhbnNwb3NlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHR5cGVhcml0aC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x1bW9kYXJpdGguaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNjb21wYXQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNzdGRpbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTU1OSw3NSArNjA1LDY3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXF9kZWNpbWFsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb250ZXh0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb252b2x1dGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGRpZnJhZGl4Mi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5jIg0KIAkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xpby5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtZW1vcnkuYyINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmMiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTY0Miw4ICs2ODAsOCBAQAogCQkJCQk+DQogCQkJCQk8VG9vbA0KIAkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTY1OSw4ICs2OTcsOCBAQAogCQkJCQk+DQogCQkJCQk8VG9vbA0KIAkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx2Y2RpdjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHZjZGl2NjQub2JqIg0KIAkJCQkJLz4NCiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtNjc2LDggKzcxNCw4IEBACiAJCQkJCT4NCiAJCQkJCTxUb29sDQogCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcdmNkaXY2NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx2Y2RpdjY0Lm9iaiINCiAJCQkJCS8+DQogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTY5Myw4ICs3MzEsOCBAQAogCQkJCQk+DQogCQkJCQk8VG9vbA0KIAkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHZjZGl2NjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcdmNkaXY2NC5vYmoiDQogCQkJCQkvPg0KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3Byb2ogYi9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggODclCnJlbmFtZSBmcm9tIFBDYnVpbGQvX2VsZW1lbnR0cmVlLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvagppbmRleCAzZTk2MzFmLi5mOWQ3Mzc1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfZWxlbWVudHRyZWUiDQogCVByb2plY3RHVUlEPSJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCiAJUm9vdE5hbWVzcGFjZT0iX2VsZW1lbnR0cmVlIg0KQEAgLTQyLDcgKzQyLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMTA0LDcgKzEwNCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTE2Niw3ICsxNjYsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0yMjksNyArMjI5LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMjkxLDcgKzI5MSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTM1NCw3ICszNTQsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00MTcsNyArNDE3LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNDgwLDcgKzQ4MCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTUyNyw2MyArNTI3LDYzIEBACiAJCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC01OTEsMTkgKzU5MSwxOSBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2hhc2hsaWIudmNwcm9qIGIvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX2hhc2hsaWIudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKaW5kZXggZTA1ZDk3ZS4uNzc0MTdlYyAxMDA2NDQKLS0tIGEvUENidWlsZC9faGFzaGxpYi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9oYXNobGliIg0KIAlQcm9qZWN0R1VJRD0iezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQogCVJvb3ROYW1lc3BhY2U9Il9oYXNobGliIg0KQEAgLTUyNyw3ICs1MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnoyLnZjcHJvaiBiL1BDL1ZTOS4wL19sem1hLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDgyJQpjb3B5IGZyb20gUENidWlsZC9iejIudmNwcm9qCmNvcHkgdG8gUEMvVlM5LjAvX2x6bWEudmNwcm9qCmluZGV4IGUyYjM1M2IuLjdjNjAwM2YgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnoyLnZjcHJvagorKysgYi9QQy9WUzkuMC9fbHptYS52Y3Byb2oKQEAgLTEsMTAgKzEsMTAgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJiejIiDQotCVByb2plY3RHVUlEPSJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCi0JUm9vdE5hbWVzcGFjZT0iYnoyIg0KKwlWZXJzaW9uPSI5LjAwIg0KKwlOYW1lPSJfbHptYSINCisJUHJvamVjdEdVSUQ9IntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9Ig0KKwlSb290TmFtZXNwYWNlPSJsem1hIg0KIAlLZXl3b3JkPSJXaW4zMlByb2oiDQogCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCiAJPg0KQEAgLTQyLDggKzQyLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTU2LDcgKzU2LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0xMDQsOCArMTA0LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTExOCw3ICsxMTgsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMTY2LDggKzE2Niw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0xODAsNyArMTgwLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0yMjksOCArMjI5LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTI0Myw3ICsyNDMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQpAQCAtMjkxLDggKzI5MSw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC0zMDUsNyArMzA1LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC0zNTQsOCArMzU0LDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTM2OCw3ICszNjgsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNDE3LDggKzQxNyw4IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGx6bWFEaXIpXGluY2x1ZGUiDQorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUMiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCkBAIC00MzEsNyArNDMxLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmEiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCkBAIC00ODAsOCArNDgwLDggQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQobHptYURpcilcaW5jbHVkZSINCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQyINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KQEAgLTQ5NCw3ICs0OTQsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGx6bWFEaXIpXGJpbl94ODYtNjRcbGlibHptYS5hIg0KIAkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNTI3LDUxICs1MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcYnoybW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWJfcHJpdmF0ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iYnppcDIgMS4wLjYgU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNvbXByZXNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY3JjdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxkZWNvbXByZXNzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcaHVmZm1hbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXHJhbmR0YWJsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2x6bWFtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX21zaS52Y3Byb2ogYi9QQy9WUzkuMC9fbXNpLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL19tc2kudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fbXNpLnZjcHJvagppbmRleCAwODRlZmRmLi5jYjIzMGUxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL19tc2kudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19tc2kudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il9tc2kiDQogCVByb2plY3RHVUlEPSJ7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfSINCiAJUm9vdE5hbWVzcGFjZT0iX21zaSINCkBAIC01MTksNyArNTE5LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xfbXNpLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcX21zaS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc29ja2V0LnZjcHJvaiBiL1BDL1ZTOS4wL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTUlCmNvcHkgZnJvbSBQQ2J1aWxkL19zb2NrZXQudmNwcm9qCmNvcHkgdG8gUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2oKaW5kZXggZWU3MmMxMC4uZmIzZDFlNyAxMDA2NDQKLS0tIGEvUENidWlsZC9fc29ja2V0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpAQCAtMSwxMCArMSwxMCBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il9zb2NrZXQiDQotCVByb2plY3RHVUlEPSJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NvY2tldCINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iX211bHRpcHJvY2Vzc2luZyINCisJUHJvamVjdEdVSUQ9Ins5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KKwlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIg0KIAlLZXl3b3JkPSJXaW4zMlByb2oiDQogCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCiAJPg0KQEAgLTUxOSw3ICs1MTksNyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTI3LDcgKzUyNywxMSBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc29ja2V0LnZjcHJvaiBiL1BDL1ZTOS4wL19zb2NrZXQudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX3NvY2tldC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL19zb2NrZXQudmNwcm9qCmluZGV4IGVlNzJjMTAuLmZmMWY2ZDQgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX3NvY2tldC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0iX3NvY2tldCINCiAJUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KIAlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KQEAgLTUxOSw3ICs1MTksNyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTUyNyw3ICs1MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc29ja2V0bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvX3NxbGl0ZTMudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKaW5kZXggYjMxZjliNi4uZjcxMDBmMSAxMDA2NDQKLS0tIGEvUENidWlsZC9fc3FsaXRlMy52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qCkBAIC01MjcsNDMgKzUyNyw0MyBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjYWNoZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtaWNyb3Byb3RvY29scy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTU3MSwzOSArNTcxLDM5IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxyb3cuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zc2wudmNwcm9qIGIvUEMvVlM5LjAvX3NzbC52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gUENidWlsZC9fc3NsLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX3NzbC52Y3Byb2oKaW5kZXggNTcyOGM4NC4uOTdhYTI5NCAxMDA2NDQKLS0tIGEvUENidWlsZC9fc3NsLnZjcHJvagorKysgYi9QQy9WUzkuMC9fc3NsLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfc3NsIg0KIAlQcm9qZWN0R1VJRD0ie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQogCVJvb3ROYW1lc3BhY2U9Il9zc2wiDQpAQCAtNTI3LDcgKzUyNyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3NsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3NsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGJ1ZmZlci52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5NyUKY29weSBmcm9tIFBDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvagpjb3B5IHRvIFBDL1ZTOS4wL190ZXN0YnVmZmVyLnZjcHJvagppbmRleCA1NWYyNDNmLi4wMzM3N2UxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3Rlc3RidWZmZXIudmNwcm9qCkBAIC0xLDEwICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3Rlc3RjYXBpIg0KLQlQcm9qZWN0R1VJRD0iezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQotCVJvb3ROYW1lc3BhY2U9Il90ZXN0Y2FwaSINCisJVmVyc2lvbj0iOS4wMCINCisJTmFtZT0iX3Rlc3RidWZmZXIiDQorCVByb2plY3RHVUlEPSJ7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fSINCisJUm9vdE5hbWVzcGFjZT0iX3Rlc3RidWZmZXIiDQogCUtleXdvcmQ9IldpbjMyUHJvaiINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KIAk+DQpAQCAtNTExLDcgKzUxMSw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX3Rlc3RjYXBpLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagppbmRleCA1NWYyNDNmLi40NTMzMDBhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJfdGVzdGNhcGkiDQogCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCiAJUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIg0KQEAgLTUxMSw3ICs1MTEsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3RraW50ZXIudmNwcm9qIGIvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvX3RraW50ZXIudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKaW5kZXggMWM1ZjBjYi4uNTE2MzMxNyAxMDA2NDQKLS0tIGEvUENidWlsZC9fdGtpbnRlci52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Il90a2ludGVyIg0KIAlQcm9qZWN0R1VJRD0iezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQogCVJvb3ROYW1lc3BhY2U9Il90a2ludGVyIg0KQEAgLTUyNywxMSArNTI3LDExIEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfdGtpbnRlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RraW50ZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcdGthcHBpbml0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0a2FwcGluaXQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3Byb2ogYi9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDc3JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL2JkaXN0X3dpbmluc3QudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagppbmRleCA2OGIzOTMxLi5iOGNjN2FkIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmNwcm9qCisrKyBiL1BDL1ZTOS4wL2JkaXN0X3dpbmluc3QudmNwcm9qCkBAIC0yMCw3ICsyMCw3IEBACiAJPENvbmZpZ3VyYXRpb25zPg0KIAkJPENvbmZpZ3VyYXRpb24NCiAJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KIAkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KIAkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KIAkJCVVzZU9mTUZDPSIwIg0KQEAgLTQ1LDE0ICs0NSwxNCBAQAogCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KIAkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCisJCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCiAJCQkJSGVhZGVyRmlsZU5hbWU9IiINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQogCQkJCU9wdGltaXphdGlvbj0iMSINCiAJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCiAJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCiAJCQkJUnVudGltZUxpYnJhcnk9IjAiDQpAQCAtNjcsNyArNjcsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQogCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTc1LDExICs3NSwxMSBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAuZXhlIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAuZXhlIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQogCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KQEAgLTEzNSwxNCArMTM1LDE0IEBACiAJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KIAkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQogCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KKwkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KIAkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJT3B0aW1pemF0aW9uPSIxIg0KIAkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KIAkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMCINCkBAIC0xNTcsNyArMTU3LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxQQzsuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC0xNjUsMTEgKzE2NSwxMSBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQuZXhlIg0KKwkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQuZXhlIg0KIAkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQogCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCiAJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LnBkYiINCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLWFtZDY0LnBkYiINCiAJCQkJU3ViU3lzdGVtPSIyIg0KIAkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQogCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KQEAgLTIwNiwzOCArMjA2LDM4IEBACiAJCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9InpsaWIiDQogCQkJCT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCkBAIC0yNDcsNyArMjQ3LDcgQEAKIAkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTI1NiwxMSArMjU2LDExIEBACiAJCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC9kZWJ1Zy52c3Byb3BzIGIvUEMvVlM5LjAvZGVidWcudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9kZWJ1Zy52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9raWxsX3B5dGhvbi5jIGIvUEMvVlM5LjAva2lsbF9weXRob24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjMyM2QzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvVlM5LjAva2lsbF9weXRob24uYwpAQCAtMCwwICsxLDE3OCBAQAorLyoKKyAqIEhlbHBlciBwcm9ncmFtIGZvciBraWxsaW5nIGxpbmdlcmluZyBweXRob25bX2RdLmV4ZSBwcm9jZXNzZXMgYmVmb3JlCisgKiBidWlsZGluZywgdGh1cyBhdHRlbXB0aW5nIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byBmaWxlcyBiZWluZworICogbG9ja2VkLgorICovCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8d2NoYXIuaD4KKyNpbmNsdWRlIDx0bGhlbHAzMi5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNwcmFnbWEgY29tbWVudChsaWIsICJwc2FwaSIpCisKKyNpZmRlZiBfREVCVUcKKyNkZWZpbmUgUFlUSE9OX0VYRSAgICAgICAgICAoTCJweXRob25fZC5leGUiKQorI2RlZmluZSBQWVRIT05fRVhFX0xFTiAgICAgICgxMikKKyNkZWZpbmUgS0lMTF9QWVRIT05fRVhFICAgICAoTCJraWxsX3B5dGhvbl9kLmV4ZSIpCisjZGVmaW5lIEtJTExfUFlUSE9OX0VYRV9MRU4gKDE3KQorI2Vsc2UKKyNkZWZpbmUgUFlUSE9OX0VYRSAgICAgICAgICAoTCJweXRob24uZXhlIikKKyNkZWZpbmUgUFlUSE9OX0VYRV9MRU4gICAgICAoMTApCisjZGVmaW5lIEtJTExfUFlUSE9OX0VYRSAgICAgKEwia2lsbF9weXRob24uZXhlIikKKyNkZWZpbmUgS0lMTF9QWVRIT05fRVhFX0xFTiAoMTUpCisjZW5kaWYKKworaW50CittYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgICBIQU5ETEUgICBocCwgaHNwLCBoc207IC8qIHByb2Nlc3MsIHNuYXBzaG90IHByb2Nlc3Nlcywgc25hcHNob3QgbW9kdWxlcyAqLworICAgIERXT1JEICAgIGRhYywgb3VyX3BpZDsKKyAgICBzaXplX3QgICBsZW47CisgICAgd2NoYXJfdCAgcGF0aFtNQVhfUEFUSCsxXTsKKworICAgIE1PRFVMRUVOVFJZMzJXICBtZTsKKyAgICBQUk9DRVNTRU5UUlkzMlcgcGU7CisKKyAgICBtZS5kd1NpemUgPSBzaXplb2YoTU9EVUxFRU5UUlkzMlcpOworICAgIHBlLmR3U2l6ZSA9IHNpemVvZihQUk9DRVNTRU5UUlkzMlcpOworCisgICAgbWVtc2V0KHBhdGgsIDAsIE1BWF9QQVRIKzEpOworCisgICAgb3VyX3BpZCA9IEdldEN1cnJlbnRQcm9jZXNzSWQoKTsKKworICAgIGhzbSA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUE1PRFVMRSwgb3VyX3BpZCk7CisgICAgaWYgKGhzbSA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgeworICAgICAgICBwcmludGYoIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdFsxXSBmYWlsZWQ6ICVkXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIGlmICghTW9kdWxlMzJGaXJzdFcoaHNtLCAmbWUpKSB7CisgICAgICAgIHByaW50ZigiTW9kdWxlMzJGaXJzdFdbMV0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICBDbG9zZUhhbmRsZShoc20pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEVudW1lcmF0ZSBvdmVyIHRoZSBtb2R1bGVzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIGluIG9yZGVyIHRvIGZpbmQKKyAgICAgKiBraWxsX3Byb2Nlc3NbX2RdLmV4ZSwgdGhlbiB0YWtlIGEgbm90ZSBvZiB0aGUgZGlyZWN0b3J5IGl0IGxpdmVzIGluLgorICAgICAqLworICAgIGRvIHsKKyAgICAgICAgaWYgKF93Y3NuaWNtcChtZS5zek1vZHVsZSwgS0lMTF9QWVRIT05fRVhFLCBLSUxMX1BZVEhPTl9FWEVfTEVOKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGxlbiA9IHdjc25sZW5fcyhtZS5zekV4ZVBhdGgsIE1BWF9QQVRIKSAtIEtJTExfUFlUSE9OX0VYRV9MRU47CisgICAgICAgIHdjc25jcHlfcyhwYXRoLCBNQVhfUEFUSCsxLCBtZS5zekV4ZVBhdGgsIGxlbik7IAorCisgICAgICAgIGJyZWFrOworCisgICAgfSB3aGlsZSAoTW9kdWxlMzJOZXh0Vyhoc20sICZtZSkpOworCisgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgcHJpbnRmKCJmYWlsZWQgdG8gZGlzY2VybiBkaXJlY3Rvcnkgb2YgcnVubmluZyBwcm9jZXNzXG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBUYWtlIGEgc25hcHNob3Qgb2Ygc3lzdGVtIHByb2Nlc3Nlcy4gIEVudW1lcmF0ZSBvdmVyIHRoZSBzbmFwc2hvdCwKKyAgICAgKiBsb29raW5nIGZvciBweXRob24gcHJvY2Vzc2VzLiAgV2hlbiB3ZSBmaW5kIG9uZSwgdmVyaWZ5IGl0IGxpdmVzCisgICAgICogaW4gdGhlIHNhbWUgZGlyZWN0b3J5IHdlIGxpdmUgaW4uICBJZiBpdCBkb2VzLCBraWxsIGl0LiAgSWYgd2UncmUKKyAgICAgKiB1bmFibGUgdG8ga2lsbCBpdCwgdHJlYXQgdGhpcyBhcyBhIGZhdGFsIGVycm9yIGFuZCByZXR1cm4gMS4KKyAgICAgKiAKKyAgICAgKiBUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGlzIHRoYXQgd2UncmUgY2FsbGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgCisgICAgICogYnVpbGQgcHJvY2VzcyBvbiB0aGUgYmFzaXMgdGhhdCB3ZSdsbCB0YWtlIGNhcmUgb2Yga2lsbGluZyBhbnkKKyAgICAgKiBydW5uaW5nIGluc3RhbmNlcywgc3VjaCB0aGF0IHRoZSBidWlsZCB3b24ndCBlbmNvdW50ZXIgcGVybWlzc2lvbgorICAgICAqIGRlbmllZCBlcnJvcnMgZHVyaW5nIGxpbmtpbmcuIElmIHdlIGNhbid0IGtpbGwgb25lIG9mIHRoZSBwcm9jZXNzZXMsCisgICAgICogd2UgY2FuJ3QgcHJvdmlkZSB0aGlzIGFzc3VyYW5jZSwgYW5kIHRoZSBidWlsZCBzaG91bGRuJ3Qgc3RhcnQuCisgICAgICovCisKKyAgICBoc3AgPSBDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBQUk9DRVNTLCAwKTsKKyAgICBpZiAoaHNwID09IElOVkFMSURfSEFORExFX1ZBTFVFKSB7CisgICAgICAgIHByaW50ZigiQ3JlYXRlVG9vbGhlbHAzMlNuYXBzaG90WzJdIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKCFQcm9jZXNzMzJGaXJzdFcoaHNwLCAmcGUpKSB7CisgICAgICAgIHByaW50ZigiUHJvY2VzczMyRmlyc3RXIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZGFjID0gUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiB8IFBST0NFU1NfVk1fUkVBRCB8IFBST0NFU1NfVEVSTUlOQVRFOworICAgIGRvIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBYWFggVE9ETzogaWYgd2UgcmVhbGx5IHdhbnRlZCB0byBiZSBmYW5jeSwgd2UgY291bGQgY2hlY2sgdGhlIAorICAgICAgICAgKiBtb2R1bGVzIGZvciBhbGwgcHJvY2Vzc2VzIChub3QganVzdCB0aGUgcHl0aG9uW19kXS5leGUgb25lcykKKyAgICAgICAgICogYW5kIHNlZSBpZiBhbnkgb2Ygb3VyIERMTHMgYXJlIGxvYWRlZCAoaS5lLiBweXRob24zM1tfZF0uZGxsKSwKKyAgICAgICAgICogYXMgdGhhdCB3b3VsZCBhbHNvIGluaGliaXQgb3VyIGFiaWxpdHkgdG8gcmVidWlsZCB0aGUgc29sdXRpb24uCisgICAgICAgICAqIE5vdCB3b3J0aCBsb29zaW5nIHNsZWVwIG92ZXIgdGhvdWdoOyBmb3Igbm93LCBhIHNpbXBsZSBjaGVjayAKKyAgICAgICAgICogZm9yIGp1c3QgdGhlIHB5dGhvbiBleGVjdXRhYmxlIHNob3VsZCBiZSBzdWZmaWNpZW50LgorICAgICAgICAgKi8KKworICAgICAgICBpZiAoX3djc25pY21wKHBlLnN6RXhlRmlsZSwgUFlUSE9OX0VYRSwgUFlUSE9OX0VYRV9MRU4pKQorICAgICAgICAgICAgLyogVGhpcyBpc24ndCBhIHB5dGhvbiBwcm9jZXNzLiAqLworICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyogSXQncyBhIHB5dGhvbiBwcm9jZXNzLCBzbyBmaWd1cmUgb3V0IHdoaWNoIGRpcmVjdG9yeSBpdCdzIGluLi4uICovCisgICAgICAgIGhzbSA9IENyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdChUSDMyQ1NfU05BUE1PRFVMRSwgcGUudGgzMlByb2Nlc3NJRCk7CisgICAgICAgIGlmIChoc20gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAgICAgICAgICAvKiAKKyAgICAgICAgICAgICAqIElmIG91ciBtb2R1bGUgc25hcHNob3QgZmFpbHMgKHdoaWNoIHdpbGwgaGFwcGVuIGlmIHdlIGRvbid0IG93bgorICAgICAgICAgICAgICogdGhlIHByb2Nlc3MpLCBqdXN0IGlnbm9yZSBpdCBhbmQgY29udGludWUuICAoSXQgc2VlbXMgZGlmZmVyZW50CisgICAgICAgICAgICAgKiB2ZXJzaW9ucyBvZiBXaW5kb3dzIHJldHVybiBkaWZmZXJlbnQgdmFsdWVzIGZvciBHZXRMYXN0RXJyb3IoKQorICAgICAgICAgICAgICogaW4gdGhpcyBzaXR1YXRpb247IGl0J3MgZWFzaWVyIHRvIGp1c3QgaWdub3JlIGl0IGFuZCBtb3ZlIG9uIHZzLgorICAgICAgICAgICAgICogc3RvcHBpbmcgdGhlIGJ1aWxkIGZvciB3aGF0IGNvdWxkIGJlIGEgZmFsc2UgcG9zaXRpdmUuKQorICAgICAgICAgICAgICovCisgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCFNb2R1bGUzMkZpcnN0Vyhoc20sICZtZSkpIHsKKyAgICAgICAgICAgIHByaW50ZigiTW9kdWxlMzJGaXJzdFdbMl0gZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNwKTsKKyAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGlmIChfd2NzbmljbXAobWUuc3pNb2R1bGUsIFBZVEhPTl9FWEUsIFBZVEhPTl9FWEVfTEVOKSkKKyAgICAgICAgICAgICAgICAvKiBXcm9uZyBtb2R1bGUsIHdlJ3JlIGxvb2tpbmcgZm9yIHB5dGhvbltfZF0uZXhlLi4uICovCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChfd2NzbmljbXAocGF0aCwgbWUuc3pFeGVQYXRoLCBsZW4pKQorICAgICAgICAgICAgICAgIC8qIFByb2Nlc3MgZG9lc24ndCBsaXZlIGluIG91ciBkaXJlY3RvcnkuICovCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8qIFB5dGhvbiBwcm9jZXNzIHJlc2lkaW5nIGluIHRoZSByaWdodCBkaXJlY3RvcnksIGtpbGwgaXQhICAqLworICAgICAgICAgICAgaHAgPSBPcGVuUHJvY2VzcyhkYWMsIEZBTFNFLCBwZS50aDMyUHJvY2Vzc0lEKTsKKyAgICAgICAgICAgIGlmICghaHApIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIk9wZW5Qcm9jZXNzIGZhaWxlZDogJWRcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShoc3ApOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzbSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghVGVybWluYXRlUHJvY2VzcyhocCwgMSkpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIlRlcm1pbmF0ZVByb2Nlc3MgZmFpbGVkOiAlZFxuIiwgR2V0TGFzdEVycm9yKCkpOworICAgICAgICAgICAgICAgIENsb3NlSGFuZGxlKGhzcCk7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaHNtKTsKKyAgICAgICAgICAgICAgICBDbG9zZUhhbmRsZShocCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIENsb3NlSGFuZGxlKGhwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIH0gd2hpbGUgKE1vZHVsZTMyTmV4dFcoaHNtLCAmbWUpKTsKKworICAgICAgICBDbG9zZUhhbmRsZShoc20pOworCisgICAgfSB3aGlsZSAoUHJvY2VzczMyTmV4dFcoaHNwLCAmcGUpKTsKKworICAgIENsb3NlSGFuZGxlKGhzcCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyogdmk6IHNldCB0cz04IHN3PTQgc3RzPTQgZXhwYW5kdGFiICovCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9raWxsX3B5dGhvbi52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8uYyBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI0YTY0YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLmMKQEAgLTAsMCArMSwxOTUgQEAKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPGlvLmg+CisKKyNkZWZpbmUgQ01EX1NJWkUgNTAwCisKKy8qIFRoaXMgZmlsZSBjcmVhdGVzIHRoZSBnZXRidWlsZGluZm8ubyBvYmplY3QsIGJ5IGZpcnN0CisgICBpbnZva2luZyBzdWJ3Y3Jldi5leGUgKGlmIGZvdW5kKSwgYW5kIHRoZW4gaW52b2tpbmcgY2wuZXhlLgorICAgQXMgYSBzaWRlIGVmZmVjdCwgaXQgbWlnaHQgZ2VuZXJhdGUgUENCdWlsZFxnZXRidWlsZGluZm8yLmMKKyAgIGFsc28uIElmIHRoaXMgaXNuJ3QgYSBzdWJ2ZXJzaW9uIGNoZWNrb3V0LCBvciBzdWJ3Y3JldiBpc24ndAorICAgZm91bmQsIGl0IGNvbXBpbGVzIC4uXFwuLlxcTW9kdWxlc1xcZ2V0YnVpbGRpbmZvLmMgaW5zdGVhZC4KKworICAgQ3VycmVudGx5LCBzdWJ3Y3Jldi5leGUgaXMgZm91bmQgZnJvbSB0aGUgcmVnaXN0cnkgZW50cmllcworICAgb2YgVG9ydG9pc2VTVk4uCisKKyAgIE5vIGF0dGVtcHQgaXMgbWFkZSB0byBwbGFjZSBnZXRidWlsZGluZm8ubyBpbnRvIHRoZSBwcm9wZXIKKyAgIGJpbmFyeSBkaXJlY3RvcnkuIFRoaXMgaXNuJ3QgbmVjZXNzYXJ5LCBhcyB0aGlzIHRvb2wgaXMKKyAgIGludm9rZWQgYXMgYSBwcmUtbGluayBzdGVwIGZvciBweXRob25jb3JlLCBzbyB0aGF0IG92ZXJ3cml0ZXMKKyAgIGFueSBwcmV2aW91cyBnZXRidWlsZGluZm8uby4KKworICAgSG93ZXZlciwgaWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJvdmlkZWQsIHRoaXMgd2lsbCBiZSB1c2VkCisgICBhcyBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkgd2hlcmUgYW55IGdldGJ1aWxkaW5mbzIuYyBhbmQKKyAgIGdldGJ1aWxkaW5mby5vIGZpbGVzIGFyZSBwdXQuICBUaGlzIGlzIHVzZWZ1bCBpZiBtdWx0aXBsZQorICAgY29uZmlndXJhdGlvbnMgYXJlIGJlaW5nIGJ1aWx0IGluIHBhcmFsbGVsLCB0byBhdm9pZCB0aGVtCisgICB0cmFtcGxpbmcgZWFjaCBvdGhlcidzIGZpbGVzLgorCisqLworCitpbnQgbWFrZV9idWlsZGluZm8yKGNvbnN0IGNoYXIgKnRtcHBhdGgpCit7CisgICAgc3RydWN0IF9zdGF0IHN0OworICAgIEhLRVkgaFRvcnRvaXNlOworICAgIGNoYXIgY29tbWFuZFtDTURfU0laRSsxXTsKKyAgICBEV09SRCB0eXBlLCBzaXplOworICAgIGlmIChfc3RhdCgiLnN2biIsICZzdCkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICAvKiBBbGxvdyBzdXBwcmVzc2lvbiBvZiBzdWJ3Y3Jldi5leGUgaW52b2NhdGlvbiBpZiBhIG5vX3N1YndjcmV2IGZpbGUgaXMgcHJlc2VudC4gKi8KKyAgICBpZiAoX3N0YXQoIm5vX3N1YndjcmV2IiwgJnN0KSA9PSAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUmVnT3BlbktleShIS0VZX0xPQ0FMX01BQ0hJTkUsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTICYmCisgICAgICAgIFJlZ09wZW5LZXkoSEtFWV9DVVJSRU5UX1VTRVIsICJTb2Z0d2FyZVxcVG9ydG9pc2VTVk4iLCAmaFRvcnRvaXNlKSAhPSBFUlJPUl9TVUNDRVNTKQorICAgICAgICAvKiBUb3J0b2lzZSBub3QgaW5zdGFsbGVkICovCisgICAgICAgIHJldHVybiAwOworICAgIGNvbW1hbmRbMF0gPSAnIic7ICAvKiBxdW90ZSB0aGUgcGF0aCB0byB0aGUgZXhlY3V0YWJsZSAqLworICAgIHNpemUgPSBzaXplb2YoY29tbWFuZCkgLSAxOworICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaFRvcnRvaXNlLCAiRGlyZWN0b3J5IiwgMCwgJnR5cGUsIGNvbW1hbmQrMSwgJnNpemUpICE9IEVSUk9SX1NVQ0NFU1MgfHwKKyAgICAgICAgdHlwZSAhPSBSRUdfU1opCisgICAgICAgIC8qIFJlZ2lzdHJ5IGNvcnJ1cHRlZCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImJpblxcc3Vid2NyZXYuZXhlIik7CisgICAgaWYgKF9zdGF0KGNvbW1hbmQrMSwgJnN0KSA8IDApCisgICAgICAgIC8qIHN1YndjcmV2LmV4ZSBub3QgcGFydCBvZiB0aGUgcmVsZWFzZSAqLworICAgICAgICByZXR1cm4gMDsKKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlwiIC4uXFwuLiAuLlxcLi5cXE1vZHVsZXNcXGdldGJ1aWxkaW5mby5jIFwiIik7CisgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOyAvKiBxdW90ZWQgdG1wcGF0aCAqLworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIiKTsKKworICAgIHB1dHMoY29tbWFuZCk7IGZmbHVzaChzdGRvdXQpOworICAgIGlmIChzeXN0ZW0oY29tbWFuZCkgPCAwKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKworY29uc3QgY2hhciBERUxJTVNbXSA9IHsgIiBcbiIgfTsKKworaW50IGdldF9tZXJjdXJpYWxfaW5mbyhjaGFyICogaGdicmFuY2gsIGNoYXIgKiBoZ3RhZywgY2hhciAqIGhncmV2LCBpbnQgc2l6ZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBjaGFyIGZpbGVuYW1lW0NNRF9TSVpFXTsKKyAgICBjaGFyIGNtZGxpbmVbQ01EX1NJWkVdOworCisgICAgc3RyY3B5X3MoZmlsZW5hbWUsIENNRF9TSVpFLCAidG1wWFhYWFhYIik7CisgICAgaWYgKF9ta3RlbXBfcyhmaWxlbmFtZSwgQ01EX1NJWkUpID09IDApIHsKKyAgICAgICAgaW50IHJjOworCisgICAgICAgIHN0cmNweV9zKGNtZGxpbmUsIENNRF9TSVpFLCAiaGcgaWQgLWJpdCA+ICIpOworICAgICAgICBzdHJjYXRfcyhjbWRsaW5lLCBDTURfU0laRSwgZmlsZW5hbWUpOworICAgICAgICByYyA9IHN5c3RlbShjbWRsaW5lKTsKKyAgICAgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgICAgIEZJTEUgKiBmcDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZvcGVuX3MoJmZwLCBmaWxlbmFtZSwgInIiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgY2hhciAqIGNwID0gZmdldHMoY21kbGluZSwgQ01EX1NJWkUsIGZwKTsKKworICAgICAgICAgICAgICAgIGlmIChjcCkgeworICAgICAgICAgICAgICAgICAgICBjaGFyICogY29udGV4dCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgKiB0cCA9IHN0cnRva19zKGNwLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3Jldiwgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhnYnJhbmNoLCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGd0YWcsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfdW5saW5rKGZpbGVuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQoreworICAgIGNoYXIgY29tbWFuZFtDTURfU0laRV0gPSAiY2wuZXhlIC1jIC1EX1dJTjMyIC1EVVNFX0RMX0VYUE9SVCAtRF9XSU5ET1dTIC1EV0lOMzIgLURfV0lORExMICI7CisgICAgY2hhciB0bXBwYXRoW0NNRF9TSVpFXSA9ICIiOworICAgIGludCBkb191bmxpbmssIHJlc3VsdDsKKyAgICBjaGFyICp0bXBkaXIgPSBOVUxMOworICAgIGlmIChhcmdjIDw9IDIgfHwgYXJnYyA+IDMpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWtlX2J1aWxkaW5mbyAkKENvbmZpZ3VyYXRpb25OYW1lKSBbdG1wZGlyXVxuIik7CisgICAgICAgIHJldHVybiBFWElUX0ZBSUxVUkU7CisgICAgfQorICAgIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2UiKSA9PSAwKSB7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EICIpOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIkRlYnVnIikgPT0gMCkgeworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1EX0RFQlVHIC1NRGQgIik7CisgICAgfQorICAgIGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAiUmVsZWFzZUl0YW5pdW0iKSA9PSAwKSB7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19JVEFOSVVNICIpOworICAgIH0KKyAgICBlbHNlIGlmIChzdHJjbXAoYXJndlsxXSwgIlJlbGVhc2VBTUQ2NCIpID09IDApIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICItTUQgIik7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLU1EIC9VU0VDTDpNU19PUFRFUk9OICIpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bnN1cHBvcnRlZCBjb25maWd1cmF0aW9uICVzXG4iLCBhcmd2WzFdKTsKKyAgICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKyAgICB9CisgICAgaWYgKGFyZ2MgPiAyKSB7CisgICAgICAgIHRtcGRpciA9IGFyZ3ZbMl07CisgICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCB0bXBkaXIpOworICAgICAgICAvKiBIYWNrIGZpeCBmb3IgYmFkIGNvbW1hbmQgbGluZTogIElmIHRoZSBjb21tYW5kIGlzIGlzc3VlZCBsaWtlIHRoaXM6CisgICAgICAgICAqICQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBEZWJ1ZyAiJChJbnREaXIpIgorICAgICAgICAgKiB3ZSB3aWxsIGdldCBhIHRyYWlsaW5nIHF1b3RlIGJlY2F1c2UgSW50RGlyIGVuZHMgd2l0aCBhIGJhY2tzbGFzaCB0aGF0IHRoZW4KKyAgICAgICAgICogZXNjYXBlcyB0aGUgZmluYWwgIi4gIFRvIHNpbXBsaWZ5IHRoZSBsaWZlIGZvciBkZXZlbG9wZXJzLCBjYXRjaCB0aGF0IHByb2JsZW0KKyAgICAgICAgICogaGVyZSBieSBjdXR0aW5nIGl0IG9mZi4KKyAgICAgICAgICogVGhlIHByb3BlciBjb21tYW5kIGxpbmUsIGJ0dyBpczoKKyAgICAgICAgICogJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIERlYnVnICIkKEludERpcilcIgorICAgICAgICAgKiBIb29yYXkgZm9yIGNvbW1hbmQgbGluZSBwYXJzaW5nIG9uIHdpbmRvd3MuCisgICAgICAgICAqLworICAgICAgICBpZiAoc3RybGVuKHRtcHBhdGgpID4gMCAmJiB0bXBwYXRoW3N0cmxlbih0bXBwYXRoKS0xXSA9PSAnIicpCisgICAgICAgICAgICB0bXBwYXRoW3N0cmxlbih0bXBwYXRoKS0xXSA9ICdcMCc7CisgICAgICAgIHN0cmNhdF9zKHRtcHBhdGgsIF9jb3VudG9mKHRtcHBhdGgpLCAiXFwiKTsKKyAgICB9CisKKyAgICBpZiAoKGRvX3VubGluayA9IG1ha2VfYnVpbGRpbmZvMih0bXBwYXRoKSkpIHsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcIiIpOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgdG1wcGF0aCk7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiZ2V0YnVpbGRpbmZvMi5jXCIgLURTVUJXQ1JFViAiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGNoYXIgaGd0YWdbQ01EX1NJWkVdOworICAgICAgICBjaGFyIGhnYnJhbmNoW0NNRF9TSVpFXTsKKyAgICAgICAgY2hhciBoZ3JldltDTURfU0laRV07CisKKyAgICAgICAgaWYgKGdldF9tZXJjdXJpYWxfaW5mbyhoZ2JyYW5jaCwgaGd0YWcsIGhncmV2LCBDTURfU0laRSkpIHsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLURIR0JSQU5DSD1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdicmFuY2gpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiIik7CisKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiIC1ESEdUQUc9XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhndGFnKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOworCisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVkVSU0lPTj1cXFwiIik7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgaGdyZXYpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICJcXFwiICIpOworICAgICAgICB9CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiLi5cXC4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyIpOworICAgIH0KKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtRm9cIiIpOworICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKKyAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mby5vXCIgLUkuLlxcLi5cXEluY2x1ZGUgLUkuLlxcLi5cXFBDIik7CisgICAgcHV0cyhjb21tYW5kKTsgZmZsdXNoKHN0ZG91dCk7CisgICAgcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmQpOworICAgIGlmIChkb191bmxpbmspIHsKKyAgICAgICAgY29tbWFuZFswXSA9ICdcMCc7CisgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKKyAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOworICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIik7CisgICAgICAgIF91bmxpbmsoY29tbWFuZCk7CisgICAgfQorICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3Byb2ogYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagppbmRleCAxOTEwYjllLi45MjQwNjVkIDEwMDY0NAotLS0gYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjcHJvagorKysgYi9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTAiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ibWFrZV9idWlsZGluZm8iDQogCVByb2plY3RHVUlEPSJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCiAJUm9vdE5hbWVzcGFjZT0ibWFrZV9idWlsZGluZm8iDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCmluZGV4IDg4MWY0NGIuLjBhMWZkMjggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKKysrIGIvUEMvVlM5LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyINCiAJUHJvamVjdEdVSUQ9IntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KIAlSb290TmFtZXNwYWNlPSJtYWtlX3ZlcnNpb25pbmZvIg0KQEAgLTMyLDggKzMyLDggQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KIAkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yYy5oIg0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQpAQCAtOTIsNyArOTIsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC0xMDYsOCArMTA2LDggQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KIAkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yYy5oIg0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQpAQCAtMTU4LDcgKzE1OCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KIAkJCS8+DQogCQk8L0NvbmZpZ3VyYXRpb24+DQogCQk8Q29uZmlndXJhdGlvbg0KQEAgLTE3NSw4ICsxNzUsOCBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQogCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yY19kLmgiDQorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCkBAIC0yMzUsNyArMjM1LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCiAJCQkvPg0KIAkJPC9Db25maWd1cmF0aW9uPg0KIAkJPENvbmZpZ3VyYXRpb24NCkBAIC0yNDksOCArMjQ5LDggQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KIAkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQpAQCAtMzAzLDcgKzMwMyw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQogCQkJLz4NCiAJCTwvQ29uZmlndXJhdGlvbj4NCiAJPC9Db25maWd1cmF0aW9ucz4NCkBAIC0zMTQsNyArMzE0LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGNidWlsZC5zbG4gYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjhjYmI2Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvVlM5LjAvcGNidWlsZC5zbG4KQEAgLTAsMCArMSw2NTggQEAKK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwDQorIyBWaXN1YWwgU3R1ZGlvIDIwMDgNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmNwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSA9IHtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmNwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSA9IHtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInc5eHBvcGVuIiwgInc5eHBvcGVuLnZjcHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfYnVpbGRpbmZvIiwgIm1ha2VfYnVpbGRpbmZvLnZjcHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCisJUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQorCQkuLlwuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KKwkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQNCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZGVjaW1hbCIsICJfZGVjaW1hbC52Y3Byb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2J6MiIsICJfYnoyLnZjcHJvaiIsICJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9sem1hIiwgIl9sem1hLnZjcHJvaiIsICJ7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmNwcm9qIiwgInsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmNwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjcHJvaiIsICJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmNwcm9qIiwgIns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9Ig0KKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSA9IHtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQorCUVuZFByb2plY3RTZWN0aW9uDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3FsaXRlMyIsICJzcWxpdGUzLnZjcHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tdWx0aXByb2Nlc3NpbmciLCAiX211bHRpcHJvY2Vzc2luZy52Y3Byb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCisJRW5kUHJvamVjdFNlY3Rpb24NCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzc2wiLCAic3NsLnZjcHJvaiIsICJ7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImtpbGxfcHl0aG9uIiwgImtpbGxfcHl0aG9uLnZjcHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24zZGxsIiwgInB5dGhvbjNkbGwudmNwcm9qIiwgIns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInh4bGltaXRlZCIsICJ4eGxpbWl0ZWQudmNwcm9qIiwgIntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0YnVmZmVyIiwgIl90ZXN0YnVmZmVyLnZjcHJvaiIsICJ7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fSINCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KKwlFbmRQcm9qZWN0U2VjdGlvbg0KK0VuZFByb2plY3QNCitHbG9iYWwNCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KKwkJUEdJbnN0cnVtZW50fFdpbjMyID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQlQR0luc3RydW1lbnR8eDY0ID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJUEdVcGRhdGV8V2luMzIgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJUEdVcGRhdGV8eDY0ID0gUEdVcGRhdGV8eDY0DQorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KKwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NA0KKwlFbmRHbG9iYWxTZWN0aW9uDQorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJRW5kR2xvYmFsU2VjdGlvbg0KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQorCUVuZEdsb2JhbFNlY3Rpb24NCitFbmRHbG9iYWwNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BnaW5zdHJ1bWVudC52c3Byb3BzIGIvUEMvVlM5LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcGdpbnN0cnVtZW50LnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BndXBkYXRlLnZzcHJvcHMgYi9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3BndXBkYXRlLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3BndXBkYXRlLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkLnZzcHJvcHMgYi9QQy9WUzkuMC9weWQudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9weWQudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcHlkLnZzcHJvcHMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkX2QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZF9kLnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHlkX2QudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcHlkX2QudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWV4cGF0LnZjcHJvaiBiL1BDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHlleHBhdC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3B5ZXhwYXQudmNwcm9qCmluZGV4IDVhMjBhNTEuLmE4ZDJjZDcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlleHBhdC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHlleHBhdC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0icHlleHBhdCINCiAJUHJvamVjdEdVSUQ9IntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KIAlSb290TmFtZXNwYWNlPSJweWV4cGF0Ig0KQEAgLTQyLDcgKzQyLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTEwMyw3ICsxMDMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMTY0LDcgKzE2NCw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC0yMjYsNyArMjI2LDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTI4Nyw3ICsyODcsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtMzQ5LDcgKzM0OSw3IEBACiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cTW9kdWxlc1xleHBhdCINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KIAkJCS8+DQogCQkJPFRvb2wNCkBAIC00MTEsNyArNDExLDcgQEAKIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlxNb2R1bGVzXGV4cGF0Ig0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQogCQkJLz4NCiAJCQk8VG9vbA0KQEAgLTQ3Myw3ICs0NzMsNyBAQAogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXE1vZHVsZXNcZXhwYXQiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCiAJCQkvPg0KIAkJCTxUb29sDQpAQCAtNTE5LDExICs1MTksMTEgQEAKIAkJCU5hbWU9IkhlYWRlciBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTUzMSwxOSArNTMxLDE5IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xweWV4cGF0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweWV4cGF0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5cHJvamVjdC52c3Byb3BzIGIvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gUENidWlsZC9weXByb2plY3QudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMKaW5kZXggNmE5NGE2OC4uMDFjN2NhNyAxMDA2NDQKLS0tIGEvUENidWlsZC9weXByb2plY3QudnNwcm9wcworKysgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwpAQCAtMTEsNyArMTEsNyBAQAogCQlPcHRpbWl6YXRpb249IjIiDQogCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCiAJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0idHJ1ZSINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGU7IC4uXFBDIg0KKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsgLi5cLi5cUEMiDQogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjMyIg0KIAkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCiAJCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KQEAgLTM0LDExICszNCwxMSBAQAogCS8+DQogCTxUb29sDQogCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUEM7Li5cSW5jbHVkZSINCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXEluY2x1ZGUiDQogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9IlB5RGxsTmFtZSINCi0JCVZhbHVlPSJweXRob24zMiINCisJCVZhbHVlPSJweXRob24zMyINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0iUHl0aG9uRXhlIg0KQEAgLTQ2LDE5ICs0NiwyMyBAQAogCS8+DQogCTxVc2VyTWFjcm8NCiAJCU5hbWU9ImV4dGVybmFsc0RpciINCi0JCVZhbHVlPSIuLlwuLiINCisJCVZhbHVlPSIuLlwuLlwuLiINCiAJLz4NCiAJPFVzZXJNYWNybw0KIAkJTmFtZT0ic3FsaXRlM0RpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcc3FsaXRlLTMuNy40Ig0KKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy43LjEyIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJiejJEaXIiDQogCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42Ig0KIAkvPg0KIAk8VXNlck1hY3JvDQorCQlOYW1lPSJsem1hRGlyIg0KKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx4ei01LjAuMyINCisJLz4NCisJPFVzZXJNYWNybw0KIAkJTmFtZT0ib3BlbnNzbERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMGoiDQorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjFjIg0KIAkvPg0KIAk8VXNlck1hY3JvDQogCQlOYW1lPSJ0Y2x0a0RpciINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24udmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIFBDYnVpbGQvcHl0aG9uLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvcHl0aG9uLnZjcHJvagppbmRleCA0N2IyODllLi5iMDdkZTIxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJweXRob24iDQogCVByb2plY3RHVUlEPSJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KQEAgLTIwMiw3ICsyMDIsNyBAQAogCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQogCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXEluY2x1ZGUiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQogCQkJLz4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQpAQCAtMjc3LDcgKzI3Nyw3IEBACiAJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCiAJCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cSW5jbHVkZSINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCiAJCQkvPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCkBAIC02MTUsMTEgKzYxNSwxMSBAQAogCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHljb24uaWNvIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uLmljbyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbl9leGUucmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTYyNyw3ICs2MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNccHl0aG9uLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweXRob24uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDY5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5dGhvbjNkbGwudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9weXRob24zZGxsLnZjcHJvagppbmRleCA1MmM2NzUyLi5lZDczMzNiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3B5dGhvbjNkbGwudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InB5dGhvbjNkbGwiDQogCVByb2plY3RHVUlEPSJ7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfSINCiAJUm9vdE5hbWVzcGFjZT0icHl0aG9uM2RsbCINCkBAIC0yNyw5ICsyNyw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtNDYsOSArNDYsOSBAQAogCQkJPg0KIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQotCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCisJCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIg0KKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW4iDQogCQkJCU91dHB1dD0iJChPdXREaXIpXHB5dGhvbjMuZGxsIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KIAkJCQlJbmNsdWRlU2VhcmNoUGF0aD0iIg0KQEAgLTY1LDkgKzY1LDkgQEAKIAkJCT4NCiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW4iDQorCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCisJCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KIAkJCQlPdXRwdXQ9IiQoT3V0RGlyKVxweXRob24zLmRsbCINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCiAJCQkJSW5jbHVkZVNlYXJjaFBhdGg9IiINCkBAIC04NCw5ICs4NCw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtMTAzLDkgKzEwMyw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtMTIyLDkgKzEyMiw5IEBACiAJCQk+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNOTWFrZVRvb2wiDQotCQkJCUJ1aWxkQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZCINCi0JCQkJQ2xlYW5Db21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIGNsZWFuIg0KKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJjZCAkKElucHV0RGlyKVwuLlwuLlxQQyYjeDBEOyYjeDBBO25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikiDQorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iY2QgJChJbnB1dERpcilcLi5cLi5cUEMmI3gwRDsmI3gwQTtubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQiDQorCQkJCUNsZWFuQ29tbWFuZExpbmU9ImNkICQoSW5wdXREaXIpXC4uXC4uXFBDJiN4MEQ7JiN4MEE7bm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSBjbGVhbiINCiAJCQkJT3V0cHV0PSIkKE91dERpcilccHl0aG9uMy5kbGwiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiDQogCQkJCUluY2x1ZGVTZWFyY2hQYXRoPSIiDQpAQCAtMTQ0LDcgKzE0NCw3IEBACiAJCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob24zLmRlZiINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob24zLmRlZiINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQpAQCAtMTcyLDcgKzE3Miw3IEBACiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xweXRob24zZGxsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uM2RsbC5jIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KIAkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCkBAIC0yMTIsNyArMjEyLDcgQEAKIAkJCVVuaXF1ZUlkZW50aWZpZXI9Ins2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9Ig0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5dGhvbl9udC5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fbnQucmMiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3Byb2ogYi9QQy9WUzkuMC9weXRob25jb3JlLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDYxJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5dGhvbmNvcmUudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9weXRob25jb3JlLnZjcHJvagppbmRleCA1ZTYxMzA4Li45ZmI2M2ZmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbmNvcmUudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InB5dGhvbmNvcmUiDQogCVByb2plY3RHVUlEPSJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCiAJUm9vdE5hbWVzcGFjZT0icHl0aG9uY29yZSINCkBAIC00Myw3ICs0Myw3IEBACiAJCQk8VG9vbA0KIAkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYiINCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KIAkJCQlSdW50aW1lTGlicmFyeT0iMiINCiAJCQkvPg0KQEAgLTU0LDcgKzU0LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTExOCw3ICsxMTgsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJLz4NCkBAIC0xMjksNyArMTI5LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTE5Niw3ICsxOTYsNyBAQAogCQkJCU9wdGltaXphdGlvbj0iMCINCiAJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQogCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiDQogCQkJLz4NCkBAIC0yMDcsNyArMjA3LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTI3NCw3ICsyNzQsNyBAQAogCQkJCU9wdGltaXphdGlvbj0iMCINCiAJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQogCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjMiDQogCQkJLz4NCkBAIC0yODUsNyArMjg1LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTM0OCw3ICszNDgsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJLz4NCkBAIC0zNTksNyArMzU5LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTQyMyw3ICs0MjMsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJLz4NCkBAIC00MzQsNyArNDM0LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTQ5OCw3ICs0OTgsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJLz4NCkBAIC01MDksNyArNTA5LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTU3Myw3ICs1NzMsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWIiDQorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCiAJCQkJUnVudGltZUxpYnJhcnk9IjIiDQogCQkJLz4NCkBAIC01ODQsNyArNTg0LDcgQEAKIAkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KIAkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlxJbmNsdWRlIg0KKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KIAkJCS8+DQogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KQEAgLTYzMSwzNTkgKzYzMSwzNjMgQEAKIAkJCU5hbWU9IkluY2x1ZGUiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxhYnN0cmFjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYWJzdHJhY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYWNjdS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYWNjdS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxhc2RsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxhc2RsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGFzdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJpdHNldC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYml0c2V0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGJvb2xvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJvb2xvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcYnl0ZXNfbWV0aG9kcy5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZXNfbWV0aG9kcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxieXRlYXJyYXlvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZXNvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY2VsbG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2VsbG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjZXZhbC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2V2YWwuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGNvZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY29kZWNzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlY3MuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcY29tcGlsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGlsZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGRhdGV0aW1lLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkYXRldGltZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGVzY3JvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZGljdG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGljdG9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxkeW5hbWljX2Fubm90YXRpb25zLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkeW5hbWljX2Fubm90YXRpb25zLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGVudW1vYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGVudW1vYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZXJyY29kZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZXJyY29kZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxldmFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxldmFsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZpbGVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZpbGVvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZmlsZXV0aWxzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxldXRpbHMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZsb2F0b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGZvcm1hdHRlcl91bmljb2RlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZnVuY29iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxnZW5vYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcZ2Vub2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtaW5pdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxncmFtaW5pdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZ3JhbW1hci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxncmFtbWFyLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbXBvcnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcaW1wb3J0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbnRyY2hlY2suaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcaW50cmNoZWNrLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpdGVyb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxpc3RvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbG9uZ2ludHJlcHIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbG9uZ2ludHJlcHIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWFyc2hhbC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtYXJzaGFsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZXRhZ3JhbW1hci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtZXRhZ3JhbW1hci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbW9kc3VwcG9ydC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxuYW1lc3BhY2VvYmplY3QuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbm9kZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxub2RlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmppbXBsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXG9iamltcGwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9wY29kZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxvcGNvZGUuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9zZGVmcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxvc2RlZnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhcnNldG9rLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBnZW4uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccGdlbi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGdlbmhlYWRlcnMuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccGdlbmhlYWRlcnMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweV9jdXJzZXMuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5YXJlbmEuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlhcmVuYS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHljYXBzdWxlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHljdHlwZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWN0eXBlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWRlYnVnLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5ZGVidWcuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWV4cGF0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5ZXhwYXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZnBlLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5ZnBlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWdldG9wdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweWdldG9wdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWN0b29sYm94LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5bWFjdG9vbGJveC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYXRoLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5bWF0aC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aW1lLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHB5dGltZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYWNyby5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweW1lbS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltZW0uaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlwb3J0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXBvcnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlzdGF0ZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdGF0ZS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXN0cmNtcC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlzdHJjbXAuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccHlzdHJ0b2QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RydG9kLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXGR0b2EuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR0b2EuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxQeXRob24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXRob25ydW4uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxweXRocmVhZC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHl0aHJlYWQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHNldG9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc2V0b2JqZWN0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHNsaWNlb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzdHJ1Y3RzZXEuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVxzeW10YWJsZS5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3ltdGFibGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdGltZWZ1bmNzLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0aW1lZnVuY3MuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcdG9rZW4uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRva2VuLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHRyYWNlYmFjay5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cSW5jbHVkZVx1Y25oYXNoLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1Y25oYXNoLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxJbmNsdWRlXHVuaWNvZGVvYmplY3QuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVuaWNvZGVvYmplY3QuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtOTkxLDIyMiArOTk1LDIyMiBAQAogCQkJTmFtZT0iTW9kdWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfY3N2LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3N2LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9mdW5jdG9vbHNtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2pzb24uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9qc29uLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2xzcHJvZi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xzcHJvZi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbWF0aC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX21hdGguaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tYXRoLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9waWNrbGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9waWNrbGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfc3JlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3JlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zdHJ1Y3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3RpbWUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF90aW1lLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfd2luYXBpLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF93ZWFrcmVmLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhcnJheW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xhcnJheW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGF0ZXhpdG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXVkaW9vcC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xhdWRpb29wLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiaW5hc2NpaS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xiaW5hc2NpaS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9kYXRldGltZW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfZGF0ZXRpbWVtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xmYXVsdGhhbmRsZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGdjbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG1haW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1haW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXG9wZXJhdG9yLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xvcGVyYXRvci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccG9zaXhtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzaWduYWxtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RocmVhZG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHh4c3VidHlwZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHppcGltcG9ydC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemlwaW1wb3J0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsdGVyDQogCQkJCU5hbWU9Il9pbyINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCkBAIC0xMjE0LDMxICsxMjE4LDMxIEBACiAJCQkJTmFtZT0iemxpYiINCiAJCQkJPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcZ3ppby5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZ3ppby5jIg0KIAkJCQkJPg0KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uDQogCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCkBAIC0xMzA2LDY3ICsxMzEwLDY3IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmZpeGVkLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmaXhlZC5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcdHJlZXMuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmluLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6Y29uZi5pbi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6bGliLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6bGliLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCTwvRmlsdGVyPg0KQEAgLTEzNzQsNzEgKzEzNzgsNzEgQEAKIAkJCQlOYW1lPSJjamtjb2RlY3MiDQogCQkJCT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19pc28yMDIyLmMiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcZW11X2ppc3gwMjEzXzIwMDAuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcZW11X2ppc3gwMjEzXzIwMDAuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfamlzeDAyMTNfcGFpci5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyINCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJPC9GaWx0ZXI+DQpAQCAtMTQ0NywxNzUgKzE0NTEsMTc5IEBACiAJCQlOYW1lPSJPYmplY3RzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYWJzdHJhY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGFic3RyYWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGFjY3UuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGFjY3UuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcYm9vbG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYm9vbG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc19tZXRob2RzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlc29iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xjYXBzdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjYXBzdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGNlbGxvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNlbGxvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGNvZGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvZGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZGVzY3JvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZGljdG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZGljdG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGZpbGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZpbGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcZnVuY29iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnVuY29iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xnZW5vYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGdlbm9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXGxpc3RvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxpc3RvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcbG9uZ29iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbG9uZ29iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG5hbWVzcGFjZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xvYm1hbGxvYy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG9ibWFsbG9jLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJccGFydGl0aW9uLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHNldG9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNccmFuZ2VvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNldG9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHN0cnVjdHNlcS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdHlwZW9iamVjdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGVjdHlwZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x1bmljb2RldHlwZV9kYi5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2RldHlwZV9kYi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC0xNjIzLDU5ICsxNjMxLDU5IEBACiAJCQlOYW1lPSJQYXJzZXIiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGFjY2VsZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXGJpdHNldC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxiaXRzZXQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxmaXJzdHNldHMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZmlyc3RzZXRzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcZ3JhbW1hci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcZ3JhbW1hcjEuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hcjEuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxsaXN0bm9kZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxsaXN0bm9kZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXG1ldGFncmFtbWFyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG1ldGFncmFtbWFyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcbXlyZWFkbGluZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJcbm9kZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxub2RlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQYXJzZXJccGFyc2VyLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHBhcnNlci5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclxwYXJzZXRvay5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXRvay5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUGFyc2VyXHRva2VuaXplci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBhcnNlclx0b2tlbml6ZXIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC0xNjgzLDM5ICsxNjkxLDMxIEBACiAJCQlOYW1lPSJQQyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xfc3VicHJvY2Vzcy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnJlZy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcd2lucmVnLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcY29uZmlnLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xjb25maWcuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xkbF9udC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcZGxfbnQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xlcnJtYXAuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXGVycm1hcC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGdldHBhdGhwLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xnZXRwYXRocC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1zdmNydG1vZHVsZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcaW1wb3J0X250LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQQ1xtc3ZjcnRtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHB5Y29uZmlnLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb25maWcuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KQEAgLTE3MjMsMTkxICsxNzIzLDE5MSBAQAogCQkJTmFtZT0iUHl0aG9uIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxfd2FybmluZ3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cX3dhcm5pbmdzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cYXNkbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc2RsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cYXN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cY2V2YWwuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY2V2YWwuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxjb2RlY3MuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY29kZWNzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cY29tcGlsZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZHluYW1pY19hbm5vdGF0aW9ucy5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZHlubG9hZF93aW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHlubG9hZF93aW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxlcnJvcnMuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZXJyb3JzLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZmlsZXV0aWxzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZpbGV1dGlscy5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZnJvemVuLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZyb3plbi5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGZ1dHVyZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmdXR1cmUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXRhcmdzLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGFyZ3MuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXRjb21waWxlci5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXRvcHQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0b3B0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cZ2V0cGxhdGZvcm0uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0cGxhdGZvcm0uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHZlcnNpb24uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxncmFtaW5pdC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGltcG9ydC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnQuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxpbXBvcnRkbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXGltcG9ydGRsLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cbWFyc2hhbC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtYXJzaGFsLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cbW9kc3VwcG9ydC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtb2RzdXBwb3J0LmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cbXlzbnByaW50Zi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXNucHJpbnRmLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cbXlzdHJ0b3VsLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c3RydG91bC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHBlZXBob2xlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHBlZXBob2xlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlhcmVuYS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWFyZW5hLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHljdHlwZS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlmcGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlmcGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweW1hdGguYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHltYXRoLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHl0aW1lLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5dGltZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5c3RhdGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdGF0ZS5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHB5c3RyY21wLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RyY21wLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25ccHlzdHJ0b2QuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJ0b2QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxkdG9hLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGR0b2EuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxQeXRob24tYXN0LmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxweXRob25ydW4uYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aG9ucnVuLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHJhbmRvbS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxyYW5kb20uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cc3ltdGFibGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3ltdGFibGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblxzeXNtb2R1bGUuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxQeXRob25cdGhyZWFkLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRocmVhZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUHl0aG9uXHRocmVhZF9udC5oIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWRfbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFB5dGhvblx0cmFjZWJhY2suYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdHJhY2ViYWNrLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCkBAIC0xOTE1LDcgKzE5MTUsNyBAQAogCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uX250LnJjIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9udC5yYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9udy52Y3Byb2ogYi9QQy9WUzkuMC9weXRob253LnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3B5dGhvbncudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9weXRob253LnZjcHJvagppbmRleCA3YWU1NjJhLi43ZjVjMDRiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbncudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3B5dGhvbncudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InB5dGhvbnciDQogCVByb2plY3RHVUlEPSJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCiAJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KQEAgLTYwMCw3ICs2MDAsNyBAQAogCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENccHl0aG9uX2V4ZS5yYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNjA4LDcgKzYwOCw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcV2luTWFpbi5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXFdpbk1haW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVsZWFzZS52c3Byb3BzIGIvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3JlbGVhc2UudnNwcm9wcwpyZW5hbWUgdG8gUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3Byb2ogYi9QQy9WUzkuMC9zZWxlY3QudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvc2VsZWN0LnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvc2VsZWN0LnZjcHJvagppbmRleCAwMmUwYTJmLi42MzdmZDk3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NlbGVjdC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJzZWxlY3QiDQogCVByb2plY3RHVUlEPSJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCiAJUm9vdE5hbWVzcGFjZT0ic2VsZWN0Ig0KQEAgLTUyNyw3ICs1MjcsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3NxbGl0ZTMudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC9zcWxpdGUzLnZjcHJvagppbmRleCBlMTc3MWY0Li5lZjhjMzI4IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NxbGl0ZTMudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3NxbGl0ZTMudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9InNxbGl0ZTMiDQogCVByb2plY3RHVUlEPSJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCiAJUm9vdE5hbWVzcGFjZT0ic3FsaXRlMyINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudnNwcm9wcyBiL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gUENidWlsZC9zcWxpdGUzLnZzcHJvcHMKcmVuYW1lIHRvIFBDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC9zc2wudmNwcm9qIGIvUEMvVlM5LjAvc3NsLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3NzbC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3NzbC52Y3Byb2oKaW5kZXggZWMyYmUzMC4uZDMwZTg3NyAxMDA2NDQKLS0tIGEvUENidWlsZC9zc2wudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3NzbC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ic3NsIg0KIAlQcm9qZWN0R1VJRD0ie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iDQogCVJvb3ROYW1lc3BhY2U9InNzbCINCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjcHJvaiBiL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3VuaWNvZGVkYXRhLnZjcHJvagpyZW5hbWUgdG8gUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCmluZGV4IDU5NjgyYTEuLmI2NmZmNzIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvdW5pY29kZWRhdGEudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagpAQCAtMSw3ICsxLDcgQEAKIDw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KIDxWaXN1YWxTdHVkaW9Qcm9qZWN0DQogCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KKwlWZXJzaW9uPSI5LjAwIg0KIAlOYW1lPSJ1bmljb2RlZGF0YSINCiAJUHJvamVjdEdVSUQ9IntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KIAlSb290TmFtZXNwYWNlPSJ1bmljb2RlZGF0YSINCkBAIC01MTEsMTEgKzUxMSwxMSBAQAogCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpAQCAtNTIzLDcgKzUyMyw3IEBACiAJCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvdzl4cG9wZW4udmNwcm9qIGIvUEMvVlM5LjAvdzl4cG9wZW4udmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIFBDYnVpbGQvdzl4cG9wZW4udmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC93OXhwb3Blbi52Y3Byb2oKaW5kZXggMDVkOGY4MS4uN2E4NWIwMCAxMDA2NDQKLS0tIGEvUENidWlsZC93OXhwb3Blbi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvdzl4cG9wZW4udmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9Inc5eHBvcGVuIg0KIAlQcm9qZWN0R1VJRD0ie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQogCVJvb3ROYW1lc3BhY2U9Inc5eHBvcGVuIg0KQEAgLTU2Niw3ICs1NjYsNyBAQAogCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KIAkJCT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFBDXHc5eHBvcGVuLmMiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcdzl4cG9wZW4uYyINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCTwvRmlsdGVyPg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmNwcm9qIGIvUEMvVlM5LjAvd2luc291bmQudmNwcm9qCnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIFBDYnVpbGQvd2luc291bmQudmNwcm9qCnJlbmFtZSB0byBQQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKaW5kZXggNjk0NzBjYy4uNDdkYmYyOSAxMDA2NDQKLS0tIGEvUENidWlsZC93aW5zb3VuZC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvd2luc291bmQudmNwcm9qCkBAIC0xLDcgKzEsNyBAQAogPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQogPFZpc3VhbFN0dWRpb1Byb2plY3QNCiAJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQorCVZlcnNpb249IjkuMDAiDQogCU5hbWU9IndpbnNvdW5kIg0KIAlQcm9qZWN0R1VJRD0iezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQogCVJvb3ROYW1lc3BhY2U9IndpbnNvdW5kIg0KQEAgLTUxMyw3ICs1MTMsNyBAQAogCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iDQogCQkJPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cUENcd2luc291bmQuYyINCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5zb3VuZC5jIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQpkaWZmIC0tZ2l0IGEvUENidWlsZC94NjQudnNwcm9wcyBiL1BDL1ZTOS4wL3g2NC52c3Byb3BzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3g2NC52c3Byb3BzCnJlbmFtZSB0byBQQy9WUzkuMC94NjQudnNwcm9wcwpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmNwcm9qIGIvUEMvVlM5LjAveHhsaW1pdGVkLnZjcHJvagpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBQQ2J1aWxkL3h4bGltaXRlZC52Y3Byb2oKcmVuYW1lIHRvIFBDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKaW5kZXggNmRhMjAxNi4uYTNhYWFkNiAxMDA2NDQKLS0tIGEvUENidWlsZC94eGxpbWl0ZWQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3h4bGltaXRlZC52Y3Byb2oKQEAgLTEsNyArMSw3IEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCiA8VmlzdWFsU3R1ZGlvUHJvamVjdA0KIAlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCisJVmVyc2lvbj0iOS4wMCINCiAJTmFtZT0ieHhsaW1pdGVkIg0KIAlQcm9qZWN0R1VJRD0ie0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0iDQogCVJvb3ROYW1lc3BhY2U9Inh4bGltaXRlZCINCkBAIC00MDcsNyArNDA3LDcgQEAKIAkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCiAJCQk+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXHh4bGltaXRlZC5jIg0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNceHhsaW1pdGVkLmMiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQk8L0ZpbHRlcj4NCmRpZmYgLS1naXQgYS9QQy9fbXNpLmMgYi9QQy9fbXNpLmMKaW5kZXggZDRkODQ4My4uMGI1Yjk0ZSAxMDA2NDQKLS0tIGEvUEMvX21zaS5jCisrKyBiL1BDL19tc2kuYwpAQCAtMTgsNyArMTgsNyBAQAogdXVpZGNyZWF0ZShQeU9iamVjdCogb2JqLCBQeU9iamVjdCphcmdzKQogewogICAgIFVVSUQgcmVzdWx0OwotICAgIHVuc2lnbmVkIHNob3J0ICpjcmVzdWx0OworICAgIHdjaGFyX3QgKmNyZXN1bHQ7CiAgICAgUHlPYmplY3QgKm9yZXN1bHQ7CiAKICAgICAvKiBNYXkgcmV0dXJuIG9rLCBsb2NhbCBvbmx5LCBhbmQgbm8gYWRkcmVzcy4KQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgb3Jlc3VsdCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShjcmVzdWx0LCB3Y3NsZW4oY3Jlc3VsdCkpOworICAgIG9yZXN1bHQgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGNyZXN1bHQsIHdjc2xlbihjcmVzdWx0KSk7CiAgICAgUnBjU3RyaW5nRnJlZVcoJmNyZXN1bHQpOwogICAgIHJldHVybiBvcmVzdWx0OwogCkBAIC0xMjIsNyArMTIyLDkgQEAKIHN0YXRpYyBGTkZDSVNUQVRVUyhjYl9zdGF0dXMpCiB7CiAgICAgaWYgKHB2KSB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHB2LCAic3RhdHVzIiwgImlpaSIsIHR5cGVTdGF0dXMsIGNiMSwgY2IyKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc3RhdHVzKTsKKworICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwdiwgJlB5SWRfc3RhdHVzLCAiaWlpIiwgdHlwZVN0YXR1cywgY2IxLCBjYjIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwpAQCAtMTMzLDcgKzEzNSw5IEBACiBzdGF0aWMgRk5GQ0lHRVRORVhUQ0FCSU5FVChjYl9nZXRuZXh0Y2FiaW5ldCkKIHsKICAgICBpZiAocHYpIHsKLSAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QocHYsICJnZXRuZXh0Y2FiaW5ldCIsICJpIiwgcGNjYWItPmlDYWIpOworICAgICAgICBfUHlfSURFTlRJRklFUihnZXRuZXh0Y2FiaW5ldCk7CisKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocHYsICZQeUlkX2dldG5leHRjYWJpbmV0LCAiaSIsIHBjY2FiLT5pQ2FiKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socmVzdWx0KSkgewpAQCAtMzc1LDcgKzM3OSw3IEBACiAgICAgfQogICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuIG1zaWVycm9yKChpbnQpIHN0YXR1cyk7Ci0gICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHJlcywgc2l6ZSk7CisgICAgc3RyaW5nID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihyZXMsIHNpemUpOwogICAgIGlmIChidWYgIT0gcmVzKQogICAgICAgICBmcmVlKHJlcyk7CiAgICAgcmV0dXJuIHN0cmluZzsKQEAgLTM5Nyw3ICs0MDEsNyBAQAogewogICAgIGludCBzdGF0dXM7CiAgICAgaW50IGZpZWxkOwotICAgIFB5X1VOSUNPREUgKmRhdGE7CisgICAgd2NoYXJfdCAqZGF0YTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXU6U2V0U3RyaW5nIiwgJmZpZWxkLCAmZGF0YSkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDE0LDcgKzQxOCw3IEBACiB7CiAgICAgaW50IHN0YXR1czsKICAgICBpbnQgZmllbGQ7Ci0gICAgUHlfVU5JQ09ERSAqZGF0YTsKKyAgICB3Y2hhcl90ICpkYXRhOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpdTpTZXRTdHJlYW0iLCAmZmllbGQsICZkYXRhKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9QQy9fc3VicHJvY2Vzcy5jIGIvUEMvX3N1YnByb2Nlc3MuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjlhNzlhNy4uMDAwMDAwMAotLS0gYS9QQy9fc3VicHJvY2Vzcy5jCisrKyAvZGV2L251bGwKQEAgLTEsNjkwICswLDAgQEAKLS8qCi0gKiBzdXBwb3J0IHJvdXRpbmVzIGZvciBzdWJwcm9jZXNzIG1vZHVsZQotICoKLSAqIEN1cnJlbnRseSwgdGhpcyBleHRlbnNpb24gbW9kdWxlIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB1c2luZyB0aGUKLSAqIHN1YnByb2Nlc3MgbW9kdWxlIG9uIFdpbmRvd3MsIGJ1dCBpbiB0aGUgZnV0dXJlLCBzdHVicyBmb3Igb3RoZXIKLSAqIHBsYXRmb3JtcyBtaWdodCBiZSBhZGRlZCBoZXJlIGFzIHdlbGwuCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0IGJ5IEZyZWRyaWsgTHVuZGggPGZyZWRyaWtAcHl0aG9ud2FyZS5jb20+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgYnkgU2VjcmV0IExhYnMgQUIsIGh0dHA6Ly93d3cucHl0aG9ud2FyZS5jb20KLSAqIENvcHlyaWdodCAoYykgMjAwNCBieSBQZXRlciBBc3RyYW5kIDxhc3RyYW5kQGx5c2F0b3IubGl1LnNlPgotICoKLSAqIEJ5IG9idGFpbmluZywgdXNpbmcsIGFuZC9vciBjb3B5aW5nIHRoaXMgc29mdHdhcmUgYW5kL29yIGl0cwotICogYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLCB5b3UgYWdyZWUgdGhhdCB5b3UgaGF2ZSByZWFkLCB1bmRlcnN0b29kLAotICogYW5kIHdpbGwgY29tcGx5IHdpdGggdGhlIGZvbGxvd2luZyB0ZXJtcyBhbmQgY29uZGl0aW9uczoKLSAqCi0gKiBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGFuZAotICogaXRzIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgYW5kIHdpdGhvdXQgZmVlIGlzCi0gKiBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXJzIGluCi0gKiBhbGwgY29waWVzLCBhbmQgdGhhdCBib3RoIHRoYXQgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uCi0gKiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgdGhlCi0gKiBhdXRob3JzIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvCi0gKiBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IKLSAqIHBlcm1pc3Npb24uCi0gKgotICogVEhFIEFVVEhPUlMgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEggUkVHQVJEIFRPIFRISVMgU09GVFdBUkUsCi0gKiBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MuCi0gKiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUwotICogT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAotICogTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLSAqIFdJVEggVEhFIFVTRSBPUiBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotICoKLSAqLwotCi0vKiBMaWNlbnNlZCB0byBQU0YgdW5kZXIgYSBDb250cmlidXRvciBBZ3JlZW1lbnQuICovCi0vKiBTZWUgaHR0cDovL3d3dy5weXRob24ub3JnLzIuNC9saWNlbnNlIGZvciBsaWNlbnNpbmcgZGV0YWlscy4gKi8KLQotI2luY2x1ZGUgIlB5dGhvbi5oIgotCi0jZGVmaW5lIFdJTkRPV1NfTEVBTl9BTkRfTUVBTgotI2luY2x1ZGUgIndpbmRvd3MuaCIKLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qIGhhbmRsZSB3cmFwcGVyLiAgbm90ZSB0aGF0IHRoaXMgbGlicmFyeSB1c2VzIGludGVnZXJzIHdoZW4gcGFzc2luZwotICAgaGFuZGxlcyB0byBhIGZ1bmN0aW9uLCBhbmQgaGFuZGxlIHdyYXBwZXJzIHdoZW4gcmV0dXJuaW5nIGhhbmRsZXMuCi0gICB0aGUgd3JhcHBlciBpcyB1c2VkIHRvIHByb3ZpZGUgRGV0YWNoIGFuZCBDbG9zZSBtZXRob2RzICovCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi0gICAgSEFORExFIGhhbmRsZTsKLX0gc3BfaGFuZGxlX29iamVjdDsKLQotc3RhdGljIFB5VHlwZU9iamVjdCBzcF9oYW5kbGVfdHlwZTsKLQotc3RhdGljIFB5T2JqZWN0Kgotc3BfaGFuZGxlX25ldyhIQU5ETEUgaGFuZGxlKQotewotICAgIHNwX2hhbmRsZV9vYmplY3QqIHNlbGY7Ci0KLSAgICBzZWxmID0gUHlPYmplY3RfTkVXKHNwX2hhbmRsZV9vYmplY3QsICZzcF9oYW5kbGVfdHlwZSk7Ci0gICAgaWYgKHNlbGYgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBzZWxmLT5oYW5kbGUgPSBoYW5kbGU7Ci0KLSAgICByZXR1cm4gKFB5T2JqZWN0Kikgc2VsZjsKLX0KLQotI2lmIGRlZmluZWQoTVNfV0lOMzIpICYmICFkZWZpbmVkKE1TX1dJTjY0KQotI2RlZmluZSBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpIGhhbmRsZSkKLSNkZWZpbmUgUFlfSEFORExFX1BBUkFNICJsIgotI2Vsc2UKLSNkZWZpbmUgSEFORExFX1RPX1BZTlVNKGhhbmRsZSkgUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKSBoYW5kbGUpCi0jZGVmaW5lIFBZX0hBTkRMRV9QQVJBTSAiTCIKLSNlbmRpZgotCi1zdGF0aWMgUHlPYmplY3QqCi1zcF9oYW5kbGVfZGV0YWNoKHNwX2hhbmRsZV9vYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEhBTkRMRSBoYW5kbGU7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6RGV0YWNoIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaGFuZGxlID0gc2VsZi0+aGFuZGxlOwotCi0gICAgc2VsZi0+aGFuZGxlID0gSU5WQUxJRF9IQU5ETEVfVkFMVUU7Ci0KLSAgICAvKiBub3RlOiByZXR1cm4gdGhlIGN1cnJlbnQgaGFuZGxlLCBhcyBhbiBpbnRlZ2VyICovCi0gICAgcmV0dXJuIEhBTkRMRV9UT19QWU5VTShoYW5kbGUpOwotfQotCi1zdGF0aWMgUHlPYmplY3QqCi1zcF9oYW5kbGVfY2xvc2Uoc3BfaGFuZGxlX29iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOkNsb3NlIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKHNlbGYtPmhhbmRsZSAhPSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgewotICAgICAgICBDbG9zZUhhbmRsZShzZWxmLT5oYW5kbGUpOwotICAgICAgICBzZWxmLT5oYW5kbGUgPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsKLSAgICB9Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotfQotCi1zdGF0aWMgdm9pZAotc3BfaGFuZGxlX2RlYWxsb2Moc3BfaGFuZGxlX29iamVjdCogc2VsZikKLXsKLSAgICBpZiAoc2VsZi0+aGFuZGxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICBDbG9zZUhhbmRsZShzZWxmLT5oYW5kbGUpOwotICAgIFB5T2JqZWN0X0ZSRUUoc2VsZik7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBzcF9oYW5kbGVfbWV0aG9kc1tdID0gewotICAgIHsiRGV0YWNoIiwgKFB5Q0Z1bmN0aW9uKSBzcF9oYW5kbGVfZGV0YWNoLCBNRVRIX1ZBUkFSR1N9LAotICAgIHsiQ2xvc2UiLCAgKFB5Q0Z1bmN0aW9uKSBzcF9oYW5kbGVfY2xvc2UsICBNRVRIX1ZBUkFSR1N9LAotICAgIHtOVUxMLCBOVUxMfQotfTsKLQotc3RhdGljIFB5T2JqZWN0Kgotc3BfaGFuZGxlX2FzX2ludChzcF9oYW5kbGVfb2JqZWN0KiBzZWxmKQotewotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oc2VsZi0+aGFuZGxlKTsKLX0KLQotc3RhdGljIFB5TnVtYmVyTWV0aG9kcyBzcF9oYW5kbGVfYXNfbnVtYmVyOwotCi1zdGF0aWMgUHlUeXBlT2JqZWN0IHNwX2hhbmRsZV90eXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQotICAgICJfc3VicHJvY2Vzc19oYW5kbGUiLCBzaXplb2Yoc3BfaGFuZGxlX29iamVjdCksIDAsCi0gICAgKGRlc3RydWN0b3IpIHNwX2hhbmRsZV9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgICZzcF9oYW5kbGVfYXNfbnVtYmVyLCAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgICAgICAgICAgIC8qdHBfZmxhZ3MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlcm5leHQqLwotICAgIHNwX2hhbmRsZV9tZXRob2RzLCAgICAgICAgICAgICAgICAgIC8qdHBfbWV0aG9kcyovCi19OwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotLyogd2luZG93cyBBUEkgZnVuY3Rpb25zICovCi0KLVB5RG9jX1NUUlZBUihHZXRTdGRIYW5kbGVfZG9jLAotIkdldFN0ZEhhbmRsZShoYW5kbGUpIC0+IGludGVnZXJcblwKLVxuXAotUmV0dXJuIGEgaGFuZGxlIHRvIHRoZSBzcGVjaWZpZWQgc3RhbmRhcmQgZGV2aWNlXG5cCi0oU1REX0lOUFVUX0hBTkRMRSwgU1REX09VVFBVVF9IQU5ETEUsIFNURF9FUlJPUl9IQU5ETEUpLlxuXAotVGhlIGludGVnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBoYW5kbGUgb2JqZWN0IGlzIHJldHVybmVkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfR2V0U3RkSGFuZGxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKLXsKLSAgICBIQU5ETEUgaGFuZGxlOwotICAgIGludCBzdGRfaGFuZGxlOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaTpHZXRTdGRIYW5kbGUiLCAmc3RkX2hhbmRsZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGhhbmRsZSA9IEdldFN0ZEhhbmRsZSgoRFdPUkQpIHN0ZF9oYW5kbGUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoaGFuZGxlID09IElOVkFMSURfSEFORExFX1ZBTFVFKQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgaWYgKCEgaGFuZGxlKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgfQotCi0gICAgLyogbm90ZTogcmV0dXJucyBpbnRlZ2VyLCBub3QgaGFuZGxlIG9iamVjdCAqLwotICAgIHJldHVybiBIQU5ETEVfVE9fUFlOVU0oaGFuZGxlKTsKLX0KLQotUHlEb2NfU1RSVkFSKEdldEN1cnJlbnRQcm9jZXNzX2RvYywKLSJHZXRDdXJyZW50UHJvY2VzcygpIC0+IGhhbmRsZVxuXAotXG5cCi1SZXR1cm4gYSBoYW5kbGUgb2JqZWN0IGZvciB0aGUgY3VycmVudCBwcm9jZXNzLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfR2V0Q3VycmVudFByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpHZXRDdXJyZW50UHJvY2VzcyIpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJldHVybiBzcF9oYW5kbGVfbmV3KEdldEN1cnJlbnRQcm9jZXNzKCkpOwotfQotCi1QeURvY19TVFJWQVIoRHVwbGljYXRlSGFuZGxlX2RvYywKLSJEdXBsaWNhdGVIYW5kbGUoc291cmNlX3Byb2NfaGFuZGxlLCBzb3VyY2VfaGFuZGxlLFxuXAotICAgICAgICAgICAgICAgICB0YXJnZXRfcHJvY19oYW5kbGUsIHRhcmdldF9oYW5kbGUsIGFjY2VzcyxcblwKLSAgICAgICAgICAgICAgICAgaW5oZXJpdFssIG9wdGlvbnNdKSAtPiBoYW5kbGVcblwKLVxuXAotUmV0dXJuIGEgZHVwbGljYXRlIGhhbmRsZSBvYmplY3QuXG5cCi1cblwKLVRoZSBkdXBsaWNhdGUgaGFuZGxlIHJlZmVycyB0byB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIG9yaWdpbmFsXG5cCi1oYW5kbGUuIFRoZXJlZm9yZSwgYW55IGNoYW5nZXMgdG8gdGhlIG9iamVjdCBhcmUgcmVmbGVjdGVkXG5cCi10aHJvdWdoIGJvdGggaGFuZGxlcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0R1cGxpY2F0ZUhhbmRsZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgSEFORExFIHRhcmdldF9oYW5kbGU7Ci0gICAgQk9PTCByZXN1bHQ7Ci0KLSAgICBIQU5ETEUgc291cmNlX3Byb2Nlc3NfaGFuZGxlOwotICAgIEhBTkRMRSBzb3VyY2VfaGFuZGxlOwotICAgIEhBTkRMRSB0YXJnZXRfcHJvY2Vzc19oYW5kbGU7Ci0gICAgaW50IGRlc2lyZWRfYWNjZXNzOwotICAgIGludCBpbmhlcml0X2hhbmRsZTsKLSAgICBpbnQgb3B0aW9ucyA9IDA7Ci0KLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9IQU5ETEVfUEFSQU0gUFlfSEFORExFX1BBUkFNIFBZX0hBTkRMRV9QQVJBTQotICAgICAgICAgICAgICAgICAgICAgICAgICAgImlpfGk6RHVwbGljYXRlSGFuZGxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzb3VyY2VfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc291cmNlX2hhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZGVzaXJlZF9hY2Nlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5oZXJpdF9oYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IER1cGxpY2F0ZUhhbmRsZSgKLSAgICAgICAgc291cmNlX3Byb2Nlc3NfaGFuZGxlLAotICAgICAgICBzb3VyY2VfaGFuZGxlLAotICAgICAgICB0YXJnZXRfcHJvY2Vzc19oYW5kbGUsCi0gICAgICAgICZ0YXJnZXRfaGFuZGxlLAotICAgICAgICBkZXNpcmVkX2FjY2VzcywKLSAgICAgICAgaW5oZXJpdF9oYW5kbGUsCi0gICAgICAgIG9wdGlvbnMKLSAgICApOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gc3BfaGFuZGxlX25ldyh0YXJnZXRfaGFuZGxlKTsKLX0KLQotUHlEb2NfU1RSVkFSKENyZWF0ZVBpcGVfZG9jLAotIkNyZWF0ZVBpcGUocGlwZV9hdHRycywgc2l6ZSkgLT4gKHJlYWRfaGFuZGxlLCB3cml0ZV9oYW5kbGUpXG5cCi1cblwKLUNyZWF0ZSBhbiBhbm9ueW1vdXMgcGlwZSwgYW5kIHJldHVybiBoYW5kbGVzIHRvIHRoZSByZWFkIGFuZFxuXAotd3JpdGUgZW5kcyBvZiB0aGUgcGlwZS5cblwKLVxuXAotcGlwZV9hdHRycyBpcyBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfQ3JlYXRlUGlwZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgSEFORExFIHJlYWRfcGlwZTsKLSAgICBIQU5ETEUgd3JpdGVfcGlwZTsKLSAgICBCT09MIHJlc3VsdDsKLQotICAgIFB5T2JqZWN0KiBwaXBlX2F0dHJpYnV0ZXM7IC8qIGlnbm9yZWQgKi8KLSAgICBpbnQgc2l6ZTsKLQotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9pOkNyZWF0ZVBpcGUiLCAmcGlwZV9hdHRyaWJ1dGVzLCAmc2l6ZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IENyZWF0ZVBpcGUoJnJlYWRfcGlwZSwgJndyaXRlX3BpcGUsIE5VTEwsIHNpemUpOwotICAgIFB5X0VORF9BTExPV19USFJFQURTCi0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgKLSAgICAgICAgIk5OIiwgc3BfaGFuZGxlX25ldyhyZWFkX3BpcGUpLCBzcF9oYW5kbGVfbmV3KHdyaXRlX3BpcGUpKTsKLX0KLQotLyogaGVscGVycyBmb3IgY3JlYXRlcHJvY2VzcyAqLwotCi1zdGF0aWMgaW50Ci1nZXRpbnQoUHlPYmplY3QqIG9iaiwgY2hhciogbmFtZSkKLXsKLSAgICBQeU9iamVjdCogdmFsdWU7Ci0gICAgaW50IHJldDsKLQotICAgIHZhbHVlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIG5hbWUpOwotICAgIGlmICghIHZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3I/ICovCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXQgPSAoaW50KSBQeUxvbmdfQXNMb25nKHZhbHVlKTsKLSAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBIQU5ETEUKLWdldGhhbmRsZShQeU9iamVjdCogb2JqLCBjaGFyKiBuYW1lKQotewotICAgIHNwX2hhbmRsZV9vYmplY3QqIHZhbHVlOwotICAgIEhBTkRMRSByZXQ7Ci0KLSAgICB2YWx1ZSA9IChzcF9oYW5kbGVfb2JqZWN0KikgUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosIG5hbWUpOwotICAgIGlmICghIHZhbHVlKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIEZJWE1FOiBwcm9wYWdhdGUgZXJyb3I/ICovCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlfVFlQRSh2YWx1ZSkgIT0gJnNwX2hhbmRsZV90eXBlKQotICAgICAgICByZXQgPSBOVUxMOwotICAgIGVsc2UKLSAgICAgICAgcmV0ID0gdmFsdWUtPmhhbmRsZTsKLSAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCoKLWdldGVudmlyb25tZW50KFB5T2JqZWN0KiBlbnZpcm9ubWVudCkKLXsKLSAgICBpbnQgaTsKLSAgICBQeV9zc2l6ZV90IGVudnNpemU7Ci0gICAgUHlPYmplY3QqIG91dCA9IE5VTEw7Ci0gICAgUHlPYmplY3QqIGtleXM7Ci0gICAgUHlPYmplY3QqIHZhbHVlczsKLSAgICBQeV9VTklDT0RFKiBwOwotCi0gICAgLyogY29udmVydCBlbnZpcm9ubWVudCBkaWN0aW9uYXJ5IHRvIHdpbmRvd3MgZW52aXJvbWVudCBzdHJpbmcgKi8KLSAgICBpZiAoISBQeU1hcHBpbmdfQ2hlY2soZW52aXJvbm1lbnQpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwgImVudmlyb25tZW50IG11c3QgYmUgZGljdGlvbmFyeSBvciBOb25lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGVudnNpemUgPSBQeU1hcHBpbmdfTGVuZ3RoKGVudmlyb25tZW50KTsKLQotICAgIGtleXMgPSBQeU1hcHBpbmdfS2V5cyhlbnZpcm9ubWVudCk7Ci0gICAgdmFsdWVzID0gUHlNYXBwaW5nX1ZhbHVlcyhlbnZpcm9ubWVudCk7Ci0gICAgaWYgKCFrZXlzIHx8ICF2YWx1ZXMpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICBvdXQgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMjA0OCk7Ci0gICAgaWYgKCEgb3V0KQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKG91dCk7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgZW52c2l6ZTsgaSsrKSB7Ci0gICAgICAgIFB5X3NzaXplX3Qga3NpemUsIHZzaXplLCB0b3RhbHNpemU7Ci0gICAgICAgIFB5T2JqZWN0KiBrZXkgPSBQeUxpc3RfR0VUX0lURU0oa2V5cywgaSk7Ci0gICAgICAgIFB5T2JqZWN0KiB2YWx1ZSA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZXMsIGkpOwotCi0gICAgICAgIGlmICghIFB5VW5pY29kZV9DaGVjayhrZXkpIHx8ICEgUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiZW52aXJvbm1lbnQgY2FuIG9ubHkgY29udGFpbiBzdHJpbmdzIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIGtzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKGtleSk7Ci0gICAgICAgIHZzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKHZhbHVlKTsKLSAgICAgICAgdG90YWxzaXplID0gKHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpKSArIGtzaXplICsgMSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZzaXplICsgMSArIDE7Ci0gICAgICAgIGlmICh0b3RhbHNpemUgPiBQeVVuaWNvZGVfR0VUX1NJWkUob3V0KSkgewotICAgICAgICAgICAgUHlfc3NpemVfdCBvZmZzZXQgPSBwIC0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0KTsKLSAgICAgICAgICAgIFB5VW5pY29kZV9SZXNpemUoJm91dCwgdG90YWxzaXplICsgMTAyNCk7Ci0gICAgICAgICAgICBwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob3V0KSArIG9mZnNldDsKLSAgICAgICAgfQotICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgUHlVbmljb2RlX0FTX1VOSUNPREUoa2V5KSwga3NpemUpOwotICAgICAgICBwICs9IGtzaXplOwotICAgICAgICAqcCsrID0gJz0nOwotICAgICAgICBQeV9VTklDT0RFX0NPUFkocCwgUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpLCB2c2l6ZSk7Ci0gICAgICAgIHAgKz0gdnNpemU7Ci0gICAgICAgICpwKysgPSAnXDAnOwotICAgIH0KLQotICAgIC8qIGFkZCB0cmFpbGluZyBudWxsIGJ5dGUgKi8KLSAgICAqcCsrID0gJ1wwJzsKLSAgICBQeVVuaWNvZGVfUmVzaXplKCZvdXQsIHAgLSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvdXQpKTsKLQotICAgIC8qIFB5T2JqZWN0X1ByaW50KG91dCwgc3Rkb3V0LCAwKTsgKi8KLQotICAgIFB5X1hERUNSRUYoa2V5cyk7Ci0gICAgUHlfWERFQ1JFRih2YWx1ZXMpOwotCi0gICAgcmV0dXJuIG91dDsKLQotIGVycm9yOgotICAgIFB5X1hERUNSRUYob3V0KTsKLSAgICBQeV9YREVDUkVGKGtleXMpOwotICAgIFB5X1hERUNSRUYodmFsdWVzKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQotUHlEb2NfU1RSVkFSKENyZWF0ZVByb2Nlc3NfZG9jLAotIkNyZWF0ZVByb2Nlc3MoYXBwX25hbWUsIGNtZF9saW5lLCBwcm9jX2F0dHJzLCB0aHJlYWRfYXR0cnMsXG5cCi0gICAgICAgICAgICAgICBpbmhlcml0LCBmbGFncywgZW52X21hcHBpbmcsIGN1cmRpcixcblwKLSAgICAgICAgICAgICAgIHN0YXJ0dXBfaW5mbykgLT4gKHByb2NfaGFuZGxlLCB0aHJlYWRfaGFuZGxlLFxuXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkLCB0aWQpXG5cCi1cblwKLUNyZWF0ZSBhIG5ldyBwcm9jZXNzIGFuZCBpdHMgcHJpbWFyeSB0aHJlYWQuIFRoZSByZXR1cm5cblwKLXZhbHVlIGlzIGEgdHVwbGUgb2YgdGhlIHByb2Nlc3MgaGFuZGxlLCB0aHJlYWQgaGFuZGxlLFxuXAotcHJvY2VzcyBJRCwgYW5kIHRocmVhZCBJRC5cblwKLVxuXAotcHJvY19hdHRycyBhbmQgdGhyZWFkX2F0dHJzIGFyZSBpZ25vcmVkIGludGVybmFsbHkgYW5kIGNhbiBiZSBOb25lLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotc3BfQ3JlYXRlUHJvY2VzcyhQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgUFJPQ0VTU19JTkZPUk1BVElPTiBwaTsKLSAgICBTVEFSVFVQSU5GT1cgc2k7Ci0gICAgUHlPYmplY3QqIGVudmlyb25tZW50OwotCi0gICAgUHlfVU5JQ09ERSogYXBwbGljYXRpb25fbmFtZTsKLSAgICBQeV9VTklDT0RFKiBjb21tYW5kX2xpbmU7Ci0gICAgUHlPYmplY3QqIHByb2Nlc3NfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIFB5T2JqZWN0KiB0aHJlYWRfYXR0cmlidXRlczsgLyogaWdub3JlZCAqLwotICAgIGludCBpbmhlcml0X2hhbmRsZXM7Ci0gICAgaW50IGNyZWF0aW9uX2ZsYWdzOwotICAgIFB5T2JqZWN0KiBlbnZfbWFwcGluZzsKLSAgICBQeV9VTklDT0RFKiBjdXJyZW50X2RpcmVjdG9yeTsKLSAgICBQeU9iamVjdCogc3RhcnR1cF9pbmZvOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWlpPT2lpT1pPOkNyZWF0ZVByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFwcGxpY2F0aW9uX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWFuZF9saW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2Nlc3NfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aHJlYWRfYXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0X2hhbmRsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY3JlYXRpb25fZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmZW52X21hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VycmVudF9kaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnR1cF9pbmZvKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBaZXJvTWVtb3J5KCZzaSwgc2l6ZW9mKHNpKSk7Ci0gICAgc2kuY2IgPSBzaXplb2Yoc2kpOwotCi0gICAgLyogbm90ZTogd2Ugb25seSBzdXBwb3J0IGEgc21hbGwgc3Vic2V0IG9mIGFsbCBTSSBhdHRyaWJ1dGVzICovCi0gICAgc2kuZHdGbGFncyA9IGdldGludChzdGFydHVwX2luZm8sICJkd0ZsYWdzIik7Ci0gICAgc2kud1Nob3dXaW5kb3cgPSBnZXRpbnQoc3RhcnR1cF9pbmZvLCAid1Nob3dXaW5kb3ciKTsKLSAgICBzaS5oU3RkSW5wdXQgPSBnZXRoYW5kbGUoc3RhcnR1cF9pbmZvLCAiaFN0ZElucHV0Iik7Ci0gICAgc2kuaFN0ZE91dHB1dCA9IGdldGhhbmRsZShzdGFydHVwX2luZm8sICJoU3RkT3V0cHV0Iik7Ci0gICAgc2kuaFN0ZEVycm9yID0gZ2V0aGFuZGxlKHN0YXJ0dXBfaW5mbywgImhTdGRFcnJvciIpOwotCi0gICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGVudl9tYXBwaW5nID09IFB5X05vbmUpCi0gICAgICAgIGVudmlyb25tZW50ID0gTlVMTDsKLSAgICBlbHNlIHsKLSAgICAgICAgZW52aXJvbm1lbnQgPSBnZXRlbnZpcm9ubWVudChlbnZfbWFwcGluZyk7Ci0gICAgICAgIGlmICghIGVudmlyb25tZW50KQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIHJlc3VsdCA9IENyZWF0ZVByb2Nlc3NXKGFwcGxpY2F0aW9uX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX2xpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRfaGFuZGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uX2ZsYWdzIHwgQ1JFQVRFX1VOSUNPREVfRU5WSVJPTk1FTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCA/IFB5VW5pY29kZV9BU19VTklDT0RFKGVudmlyb25tZW50KSA6IE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2RpcmVjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwaSk7Ci0gICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLQotICAgIFB5X1hERUNSRUYoZW52aXJvbm1lbnQpOwotCi0gICAgaWYgKCEgcmVzdWx0KQotICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoR2V0TGFzdEVycm9yKCkpOwotCi0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5OaWkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNwX2hhbmRsZV9uZXcocGkuaFByb2Nlc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNwX2hhbmRsZV9uZXcocGkuaFRocmVhZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGkuZHdQcm9jZXNzSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGkuZHdUaHJlYWRJZCk7Ci19Ci0KLVB5RG9jX1NUUlZBUihUZXJtaW5hdGVQcm9jZXNzX2RvYywKLSJUZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgZXhpdF9jb2RlKSAtPiBOb25lXG5cCi1cblwKLVRlcm1pbmF0ZSB0aGUgc3BlY2lmaWVkIHByb2Nlc3MgYW5kIGFsbCBvZiBpdHMgdGhyZWFkcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX1Rlcm1pbmF0ZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIEJPT0wgcmVzdWx0OwotCi0gICAgSEFORExFIHByb2Nlc3M7Ci0gICAgaW50IGV4aXRfY29kZTsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIFBZX0hBTkRMRV9QQVJBTSAiaTpUZXJtaW5hdGVQcm9jZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcm9jZXNzLCAmZXhpdF9jb2RlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBUZXJtaW5hdGVQcm9jZXNzKHByb2Nlc3MsIGV4aXRfY29kZSk7Ci0KLSAgICBpZiAoISByZXN1bHQpCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tV2luZG93c0VycihHZXRMYXN0RXJyb3IoKSk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7Ci19Ci0KLVB5RG9jX1NUUlZBUihHZXRFeGl0Q29kZVByb2Nlc3NfZG9jLAotIkdldEV4aXRDb2RlUHJvY2VzcyhoYW5kbGUpIC0+IEV4aXQgY29kZVxuXAotXG5cCi1SZXR1cm4gdGhlIHRlcm1pbmF0aW9uIHN0YXR1cyBvZiB0aGUgc3BlY2lmaWVkIHByb2Nlc3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRFeGl0Q29kZVByb2Nlc3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIERXT1JEIGV4aXRfY29kZTsKLSAgICBCT09MIHJlc3VsdDsKLQotICAgIEhBTkRMRSBwcm9jZXNzOwotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgUFlfSEFORExFX1BBUkFNICI6R2V0RXhpdENvZGVQcm9jZXNzIiwgJnByb2Nlc3MpKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IEdldEV4aXRDb2RlUHJvY2Vzcyhwcm9jZXNzLCAmZXhpdF9jb2RlKTsKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoZXhpdF9jb2RlKTsKLX0KLQotUHlEb2NfU1RSVkFSKFdhaXRGb3JTaW5nbGVPYmplY3RfZG9jLAotIldhaXRGb3JTaW5nbGVPYmplY3QoaGFuZGxlLCB0aW1lb3V0KSAtPiByZXN1bHRcblwKLVxuXAotV2FpdCB1bnRpbCB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBpbiB0aGUgc2lnbmFsZWQgc3RhdGUgb3JcblwKLXRoZSB0aW1lLW91dCBpbnRlcnZhbCBlbGFwc2VzLiBUaGUgdGltZW91dCB2YWx1ZSBpcyBzcGVjaWZpZWRcblwKLWluIG1pbGxpc2Vjb25kcy4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX1dhaXRGb3JTaW5nbGVPYmplY3QoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIERXT1JEIHJlc3VsdDsKLQotICAgIEhBTkRMRSBoYW5kbGU7Ci0gICAgaW50IG1pbGxpc2Vjb25kczsKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIFBZX0hBTkRMRV9QQVJBTSAiaTpXYWl0Rm9yU2luZ2xlT2JqZWN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoYW5kbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWlsbGlzZWNvbmRzKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgcmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChoYW5kbGUsIChEV09SRCkgbWlsbGlzZWNvbmRzKTsKLSAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgaWYgKHJlc3VsdCA9PSBXQUlUX0ZBSUxFRCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoKGludCkgcmVzdWx0KTsKLX0KLQotUHlEb2NfU1RSVkFSKEdldFZlcnNpb25fZG9jLAotIkdldFZlcnNpb24oKSAtPiB2ZXJzaW9uXG5cCi1cblwKLVJldHVybiB0aGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGN1cnJlbnQgb3BlcmF0aW5nIHN5c3RlbS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLXNwX0dldFZlcnNpb24oUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQotewotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpHZXRWZXJzaW9uIikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygoaW50KSBHZXRWZXJzaW9uKCkpOwotfQotCi1QeURvY19TVFJWQVIoR2V0TW9kdWxlRmlsZU5hbWVfZG9jLAotIkdldE1vZHVsZUZpbGVOYW1lKG1vZHVsZSkgLT4gcGF0aFxuXAotXG5cCi1SZXR1cm4gdGhlIGZ1bGx5LXF1YWxpZmllZCBwYXRoIGZvciB0aGUgZmlsZSB0aGF0IGNvbnRhaW5zXG5cCi10aGUgc3BlY2lmaWVkIG1vZHVsZS4gVGhlIG1vZHVsZSBtdXN0IGhhdmUgYmVlbiBsb2FkZWQgYnkgdGhlXG5cCi1jdXJyZW50IHByb2Nlc3MuXG5cCi1cblwKLVRoZSBtb2R1bGUgcGFyYW1ldGVyIHNob3VsZCBiZSBhIGhhbmRsZSB0byB0aGUgbG9hZGVkIG1vZHVsZVxuXAotd2hvc2UgcGF0aCBpcyBiZWluZyByZXF1ZXN0ZWQuIElmIHRoaXMgcGFyYW1ldGVyIGlzIDAsIFxuXAotR2V0TW9kdWxlRmlsZU5hbWUgcmV0cmlldmVzIHRoZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGZpbGVcblwKLW9mIHRoZSBjdXJyZW50IHByb2Nlc3MuIik7Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1zcF9HZXRNb2R1bGVGaWxlTmFtZShQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCi17Ci0gICAgQk9PTCByZXN1bHQ7Ci0gICAgSE1PRFVMRSBtb2R1bGU7Ci0gICAgV0NIQVIgZmlsZW5hbWVbTUFYX1BBVEhdOwotCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZShhcmdzLCBQWV9IQU5ETEVfUEFSQU0gIjpHZXRNb2R1bGVGaWxlTmFtZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAmbW9kdWxlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHQgPSBHZXRNb2R1bGVGaWxlTmFtZVcobW9kdWxlLCBmaWxlbmFtZSwgTUFYX1BBVEgpOwotICAgIGZpbGVuYW1lW01BWF9QQVRILTFdID0gJ1wwJzsKLQotICAgIGlmICghIHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKEdldExhc3RFcnJvcigpKTsKLQotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoZmlsZW5hbWUsIFB5X1VOSUNPREVfc3RybGVuKGZpbGVuYW1lKSk7Ci19Ci0KLXN0YXRpYyBQeU1ldGhvZERlZiBzcF9mdW5jdGlvbnNbXSA9IHsKLSAgICB7IkdldFN0ZEhhbmRsZSIsIHNwX0dldFN0ZEhhbmRsZSwgTUVUSF9WQVJBUkdTLCBHZXRTdGRIYW5kbGVfZG9jfSwKLSAgICB7IkdldEN1cnJlbnRQcm9jZXNzIiwgc3BfR2V0Q3VycmVudFByb2Nlc3MsICAgICAgICAgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEN1cnJlbnRQcm9jZXNzX2RvY30sCi0gICAgeyJEdXBsaWNhdGVIYW5kbGUiLCAgICAgICAgIHNwX0R1cGxpY2F0ZUhhbmRsZSwgICAgIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlSGFuZGxlX2RvY30sCi0gICAgeyJDcmVhdGVQaXBlIiwgc3BfQ3JlYXRlUGlwZSwgTUVUSF9WQVJBUkdTLCBDcmVhdGVQaXBlX2RvY30sCi0gICAgeyJDcmVhdGVQcm9jZXNzIiwgc3BfQ3JlYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLCBDcmVhdGVQcm9jZXNzX2RvY30sCi0gICAgeyJUZXJtaW5hdGVQcm9jZXNzIiwgc3BfVGVybWluYXRlUHJvY2VzcywgTUVUSF9WQVJBUkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVybWluYXRlUHJvY2Vzc19kb2N9LAotICAgIHsiR2V0RXhpdENvZGVQcm9jZXNzIiwgc3BfR2V0RXhpdENvZGVQcm9jZXNzLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldEV4aXRDb2RlUHJvY2Vzc19kb2N9LAotICAgIHsiV2FpdEZvclNpbmdsZU9iamVjdCIsIHNwX1dhaXRGb3JTaW5nbGVPYmplY3QsIE1FVEhfVkFSQVJHUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0X2RvY30sCi0gICAgeyJHZXRWZXJzaW9uIiwgc3BfR2V0VmVyc2lvbiwgTUVUSF9WQVJBUkdTLCBHZXRWZXJzaW9uX2RvY30sCi0gICAgeyJHZXRNb2R1bGVGaWxlTmFtZSIsIHNwX0dldE1vZHVsZUZpbGVOYW1lLCBNRVRIX1ZBUkFSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0TW9kdWxlRmlsZU5hbWVfZG9jfSwKLSAgICB7TlVMTCwgTlVMTH0KLX07Ci0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLXN0YXRpYyB2b2lkCi1kZWZpbnQoUHlPYmplY3QqIGQsIGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkKLXsKLSAgICBQeU9iamVjdCogdiA9IFB5TG9uZ19Gcm9tTG9uZygobG9uZykgdmFsdWUpOwotICAgIGlmICh2KSB7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsIChjaGFyKikgbmFtZSwgdik7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgX3N1YnByb2Nlc3Ntb2R1bGUgPSB7Ci0gICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJfc3VicHJvY2VzcyIsCi0gICAgTlVMTCwKLSAgICAtMSwKLSAgICBzcF9mdW5jdGlvbnMsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTAotfTsKLQotUHlNT0RJTklUX0ZVTkMKLVB5SW5pdF9fc3VicHJvY2VzcygpCi17Ci0gICAgUHlPYmplY3QgKmQ7Ci0gICAgUHlPYmplY3QgKm07Ci0KLSAgICAvKiBwYXRjaCB1cCBvYmplY3QgZGVzY3JpcHRvcnMgKi8KLSAgICBzcF9oYW5kbGVfYXNfbnVtYmVyLm5iX2ludCA9ICh1bmFyeWZ1bmMpIHNwX2hhbmRsZV9hc19pbnQ7Ci0gICAgaWYgKFB5VHlwZV9SZWFkeSgmc3BfaGFuZGxlX3R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZfc3VicHJvY2Vzc21vZHVsZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0KLSAgICAvKiBjb25zdGFudHMgKi8KLSAgICBkZWZpbnQoZCwgIlNURF9JTlBVVF9IQU5ETEUiLCBTVERfSU5QVVRfSEFORExFKTsKLSAgICBkZWZpbnQoZCwgIlNURF9PVVRQVVRfSEFORExFIiwgU1REX09VVFBVVF9IQU5ETEUpOwotICAgIGRlZmludChkLCAiU1REX0VSUk9SX0hBTkRMRSIsIFNURF9FUlJPUl9IQU5ETEUpOwotICAgIGRlZmludChkLCAiRFVQTElDQVRFX1NBTUVfQUNDRVNTIiwgRFVQTElDQVRFX1NBTUVfQUNDRVNTKTsKLSAgICBkZWZpbnQoZCwgIlNUQVJURl9VU0VTVERIQU5ETEVTIiwgU1RBUlRGX1VTRVNUREhBTkRMRVMpOwotICAgIGRlZmludChkLCAiU1RBUlRGX1VTRVNIT1dXSU5ET1ciLCBTVEFSVEZfVVNFU0hPV1dJTkRPVyk7Ci0gICAgZGVmaW50KGQsICJTV19ISURFIiwgU1dfSElERSk7Ci0gICAgZGVmaW50KGQsICJJTkZJTklURSIsIElORklOSVRFKTsKLSAgICBkZWZpbnQoZCwgIldBSVRfT0JKRUNUXzAiLCBXQUlUX09CSkVDVF8wKTsKLSAgICBkZWZpbnQoZCwgIkNSRUFURV9ORVdfQ09OU09MRSIsIENSRUFURV9ORVdfQ09OU09MRSk7Ci0gICAgZGVmaW50KGQsICJDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVAiLCBDUkVBVEVfTkVXX1BST0NFU1NfR1JPVVApOwotICAgIGRlZmludChkLCAiU1RJTExfQUNUSVZFIiwgU1RJTExfQUNUSVZFKTsKLQotICAgIHJldHVybiBtOwotfQpkaWZmIC0tZ2l0IGEvUEMvY29uZmlnLmMgYi9QQy9jb25maWcuYwppbmRleCAxZmMyYjQwLi41N2I1MDczIDEwMDY0NAotLS0gYS9QQy9jb25maWcuYworKysgYi9QQy9jb25maWcuYwpAQCAtMTIsNiArMTIsNyBAQAogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfYmluYXNjaWkodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9jbWF0aCh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X2Vycm5vKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfZmF1bHRoYW5kbGVyKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfZ2Modm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9tYXRoKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX21kNSh2b2lkKTsKQEAgLTU1LDcgKzU2LDcgQEAKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19jb2RlY3NfanAodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fY29kZWNzX2tyKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2NvZGVjc190dyh2b2lkKTsKLWV4dGVybiBQeU9iamVjdCogUHlJbml0X19zdWJwcm9jZXNzKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3dpbmFwaSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19sc3Byb2Yodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fYXN0KHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX2lvKHZvaWQpOwpAQCAtODIsNiArODMsNyBAQAogICAgIHsiYmluYXNjaWkiLCBQeUluaXRfYmluYXNjaWl9LAogICAgIHsiY21hdGgiLCBQeUluaXRfY21hdGh9LAogICAgIHsiZXJybm8iLCBQeUluaXRfZXJybm99LAorICAgIHsiZmF1bHRoYW5kbGVyIiwgUHlJbml0X2ZhdWx0aGFuZGxlcn0sCiAgICAgeyJnYyIsIFB5SW5pdF9nY30sCiAgICAgeyJtYXRoIiwgUHlJbml0X21hdGh9LAogICAgIHsibnQiLCBQeUluaXRfbnR9LCAvKiBVc2UgdGhlIE5UIG9zIGZ1bmN0aW9ucywgbm90IHBvc2l4ICovCkBAIC05OSw4ICsxMDEsOCBAQAogICAgIHsibXN2Y3J0IiwgUHlJbml0X21zdmNydH0sCiAgICAgeyJfbG9jYWxlIiwgUHlJbml0X19sb2NhbGV9LAogI2VuZGlmCi0gICAgLyogWFhYIFNob3VsZCBfc3VicHJvY2VzcyBnbyBpbiBhIFdJTjMyIGJsb2NrPyAgbm90IFdJTjY0PyAqLwotICAgIHsiX3N1YnByb2Nlc3MiLCBQeUluaXRfX3N1YnByb2Nlc3N9LAorICAgIC8qIFhYWCBTaG91bGQgX3dpbmFwaSBnbyBpbiBhIFdJTjMyIGJsb2NrPyAgbm90IFdJTjY0PyAqLworICAgIHsiX3dpbmFwaSIsIFB5SW5pdF9fd2luYXBpfSwKIAogICAgIHsiX2NvZGVjcyIsIFB5SW5pdF9fY29kZWNzfSwKICAgICB7Il93ZWFrcmVmIiwgUHlJbml0X193ZWFrcmVmfSwKQEAgLTE0MSwxMCArMTQzLDkgQEAKICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCiAKICAgICAvKiBUaGlzIGxpdmVzIGl0IHdpdGggaW1wb3J0LmMgKi8KLSAgICB7ImltcCIsIFB5SW5pdF9pbXB9LAorICAgIHsiX2ltcCIsIFB5SW5pdF9pbXB9LAogCiAgICAgLyogVGhlc2UgZW50cmllcyBhcmUgaGVyZSBmb3Igc3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzICovCi0gICAgeyJfX21haW5fXyIsIE5VTEx9LAogICAgIHsiYnVpbHRpbnMiLCBOVUxMfSwKICAgICB7InN5cyIsIE5VTEx9LAogICAgIHsiX3dhcm5pbmdzIiwgX1B5V2FybmluZ3NfSW5pdH0sCmRpZmYgLS1naXQgYS9QQy9kbF9udC5jIGIvUEMvZGxfbnQuYwppbmRleCBlZjFjZTA5Li5hZTEwZmI1IDEwMDY0NAotLS0gYS9QQy9kbF9udC5jCisrKyBiL1BDL2RsX250LmMKQEAgLTE4LDcgKzE4LDggQEAKIEhNT0RVTEUgUHlXaW5fRExMaE1vZHVsZSA9IE5VTEw7CiBjb25zdCBjaGFyICpQeVdpbl9ETExWZXJzaW9uU3RyaW5nID0gZGxsVmVyc2lvbkJ1ZmZlcjsKIAotLy8gV2luZG93cyAiQWN0aXZhdGlvbiBDb250ZXh0IiB3b3JrOgorI2lmIEhBVkVfU1hTCisvLyBXaW5kb3dzICJBY3RpdmF0aW9uIENvbnRleHQiIHdvcmsuCiAvLyBPdXIgLnB5ZCBleHRlbnNpb24gbW9kdWxlcyBhcmUgZ2VuZXJhbGx5IGJ1aWx0IHdpdGhvdXQgYSBtYW5pZmVzdCAoaWUsCiAvLyB0aG9zZSBpbmNsdWRlZCB3aXRoIFB5dGhvbiBhbmQgdGhvc2UgYnVpbHQgd2l0aCBhIGRlZmF1bHQgZGlzdHV0aWxzLgogLy8gVGhpcyByZXF1aXJlcyB3ZSBwZXJmb3JtIHNvbWUgImFjdGl2YXRpb24gY29udGV4dCIgbWFnaWMgd2hlbiBsb2FkaW5nIG91cgpAQCAtMjksNiArMzAsOCBAQAogLy8gQXMgYW4gYWRkZWQgY29tcGxpY2F0aW9uLCB0aGlzIG1hZ2ljIG9ubHkgd29ya3Mgb24gWFAgb3IgbGF0ZXIgLSB3ZSBzaW1wbHkKIC8vIHVzZSB0aGUgZXhpc3RlbmNlIChvciBub3QpIG9mIHRoZSByZWxldmFudCBmdW5jdGlvbiBwb2ludGVycyBmcm9tIGtlcm5lbDMyLgogLy8gU2VlIGJ1ZyA0NTY2IChodHRwOi8vcHl0aG9uLm9yZy9zZi80NTY2KSBmb3IgbW9yZSBkZXRhaWxzLgorLy8gSW4gVmlzdWFsIFN0dWRpbyAyMDEwLCBzaWRlIGJ5IHNpZGUgYXNzZW1ibGllcyBhcmUgbm8gbG9uZ2VyIHVzZWQgYnkKKy8vIGRlZmF1bHQuCiAKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOX0dFVENVUlJFTlRBQ1RDVFgpKEhBTkRMRSAqKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOX0FDVElWQVRFQUNUQ1RYKShIQU5ETEUsIFVMT05HX1BUUiAqKTsKQEAgLTc1LDYgKzc4LDcgQEAKICAgICAgICAgaWYgKCEoKnBmbkRlYWN0aXZhdGVBY3RDdHgpKDAsIGNvb2tpZSkpCiAgICAgICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZygiUHl0aG9uIGZhaWxlZCB0byBkZS1hY3RpdmF0ZSB0aGUgYWN0aXZhdGlvbiBjb250ZXh0XG4iKTsKIH0KKyNlbmRpZiAvKiBIQVZFX1NYUyAqLwogCiBCT09MICAgIFdJTkFQSSAgRGxsTWFpbiAoSEFORExFIGhJbnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkcgdWxfcmVhc29uX2Zvcl9jYWxsLApAQCAtODcsMTcgKzkxLDIxIEBACiAgICAgICAgICAgICAvLyAxMDAwIGlzIGEgbWFnaWMgbnVtYmVyIEkgcGlja2VkIG91dCBvZiB0aGUgYWlyLiAgQ291bGQgZG8gd2l0aCBhICNkZWZpbmUsIEkgc3Bvc2UuLi4KICAgICAgICAgICAgIExvYWRTdHJpbmcoaEluc3QsIDEwMDAsIGRsbFZlcnNpb25CdWZmZXIsIHNpemVvZihkbGxWZXJzaW9uQnVmZmVyKSk7CiAKKyNpZiBIQVZFX1NYUwogICAgICAgICAgICAgLy8gYW5kIGNhcHR1cmUgb3VyIGFjdGl2YXRpb24gY29udGV4dCBmb3IgdXNlIHdoZW4gbG9hZGluZyBleHRlbnNpb25zLgogICAgICAgICAgICAgX0xvYWRBY3RDdHhQb2ludGVycygpOwogICAgICAgICAgICAgaWYgKHBmbkdldEN1cnJlbnRBY3RDdHggJiYgcGZuQWRkUmVmQWN0Q3R4KQogICAgICAgICAgICAgICAgIGlmICgoKnBmbkdldEN1cnJlbnRBY3RDdHgpKCZQeVdpbl9ETExoQWN0aXZhdGlvbkNvbnRleHQpKQogICAgICAgICAgICAgICAgICAgICBpZiAoISgqcGZuQWRkUmVmQWN0Q3R4KShQeVdpbl9ETExoQWN0aXZhdGlvbkNvbnRleHQpKQogICAgICAgICAgICAgICAgICAgICAgICAgT3V0cHV0RGVidWdTdHJpbmcoIlB5dGhvbiBmYWlsZWQgdG8gbG9hZCB0aGUgZGVmYXVsdCBhY3RpdmF0aW9uIGNvbnRleHRcbiIpOworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIERMTF9QUk9DRVNTX0RFVEFDSDoKKyNpZiBIQVZFX1NYUwogICAgICAgICAgICAgaWYgKHBmblJlbGVhc2VBY3RDdHgpCiAgICAgICAgICAgICAgICAgKCpwZm5SZWxlYXNlQWN0Q3R4KShQeVdpbl9ETExoQWN0aXZhdGlvbkNvbnRleHQpOworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFRSVUU7CmRpZmYgLS1naXQgYS9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qIGIvUEMvZXhhbXBsZV9udC9leGFtcGxlLnZjcHJvagppbmRleCBmOTI0YzdkLi5mYmEwMGI2IDEwMDY0NAotLS0gYS9QQy9leGFtcGxlX250L2V4YW1wbGUudmNwcm9qCisrKyBiL1BDL2V4YW1wbGVfbnQvZXhhbXBsZS52Y3Byb2oKQEAgLTM5LDcgKzM5LDcgQEAKIAkJCTxUb29sDQogCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCiAJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9leHBvcnQ6aW5pdGV4YW1wbGUiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjI2LmxpYiINCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMzMubGliIg0KIAkJCQlPdXRwdXRGaWxlPSIuXFJlbGVhc2UvZXhhbXBsZS5weWQiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KQEAgLTEwNSw3ICsxMDUsNyBAQAogCQkJPFRvb2wNCiAJCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KIAkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL2V4cG9ydDppbml0ZXhhbXBsZSINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0ib2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgcHl0aG9uMjZfZC5saWIiDQorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Im9kYmMzMi5saWIgb2RiY2NwMzIubGliIHB5dGhvbjMzX2QubGliIg0KIAkJCQlPdXRwdXRGaWxlPSIuXERlYnVnL2V4YW1wbGVfZC5weWQiDQogCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCiAJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KZGlmZiAtLWdpdCBhL1BDL2Zyb3plbl9kbGxtYWluLmMgYi9QQy9mcm96ZW5fZGxsbWFpbi5jCmluZGV4IGE4Y2M4ODUuLjAxNTZjNTAgMTAwNjQ0Ci0tLSBhL1BDL2Zyb3plbl9kbGxtYWluLmMKKysrIGIvUEMvZnJvemVuX2RsbG1haW4uYwpAQCAtNzcsNyArNzcsNyBAQAogewogICAgIC8vIE11c3QgZ28gYmFja3dhcmRzCiAgICAgY2hhciAqKm1vZE5hbWU7Ci0gICAgZm9yIChtb2ROYW1lID0gcG9zc2libGVNb2R1bGVzKyhzaXplb2YocG9zc2libGVNb2R1bGVzKSAvIHNpemVvZihjaGFyICopKS0yOworICAgIGZvciAobW9kTmFtZSA9IHBvc3NpYmxlTW9kdWxlcytQeV9BUlJBWV9MRU5HVEgocG9zc2libGVNb2R1bGVzKS0yOwogICAgICAgICAgbW9kTmFtZSA+PSBwb3NzaWJsZU1vZHVsZXM7CiAgICAgICAgICAqbW9kTmFtZS0tKSB7CiAvKiAgICAgICAgICAgICAgcHJpbnRmKCJUZXJtaW5hdGluZyAnJXMnXG4iLCAqbW9kTmFtZSk7Ki8KQEAgLTEwMyw3ICsxMDMsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICAvLyBNdXN0IGdvIGJhY2t3YXJkcwogICAgICAgICAgICAgY2hhciAqKm1vZE5hbWU7Ci0gICAgICAgICAgICBmb3IgKG1vZE5hbWUgPSBwb3NzaWJsZU1vZHVsZXMrKHNpemVvZihwb3NzaWJsZU1vZHVsZXMpIC8gc2l6ZW9mKGNoYXIgKikpLTI7CisgICAgICAgICAgICBmb3IgKG1vZE5hbWUgPSBwb3NzaWJsZU1vZHVsZXMrUHlfQVJSQVlfTEVOR1RIKHBvc3NpYmxlTW9kdWxlcyktMjsKICAgICAgICAgICAgICAgICAgbW9kTmFtZSA+PSBwb3NzaWJsZU1vZHVsZXM7CiAgICAgICAgICAgICAgICAgICptb2ROYW1lLS0pCiAgICAgICAgICAgICAgICAgQ2FsbE1vZHVsZURsbE1haW4oKm1vZE5hbWUsIERMTF9QUk9DRVNTX0RFVEFDSCk7CkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICBCT09MIChXSU5BUEkgKiBwZm5kbGxtYWluKShISU5TVEFOQ0UsIERXT1JELCBMUFZPSUQpOwogCiAgICAgY2hhciBmdW5jTmFtZVsyNTVdOwotICAgIEhNT0RVTEUgaG1vZCA9IEdldE1vZHVsZUhhbmRsZShOVUxMKTsKKyAgICBITU9EVUxFIGhtb2QgPSBHZXRNb2R1bGVIYW5kbGVXKE5VTEwpOwogICAgIHN0cmNweShmdW5jTmFtZSwgIl9EbGxNYWluIik7CiAgICAgc3RyY2F0KGZ1bmNOYW1lLCBtb2ROYW1lKTsKICAgICBzdHJjYXQoZnVuY05hbWUsICJAMTIiKTsgLy8gc3RkY2FsbCBjb252ZW50aW9uLgpkaWZmIC0tZ2l0IGEvUEMvZ2V0cGF0aHAuYyBiL1BDL2dldHBhdGhwLmMKaW5kZXggY2QzYTRiMi4uYjViZjMyNSAxMDA2NDQKLS0tIGEvUEMvZ2V0cGF0aHAuYworKysgYi9QQy9nZXRwYXRocC5jCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgICBpZiAoa2V5QnVmPT1OVUxMKSBnb3RvIGRvbmU7CiAKICAgICBtZW1jcHkoa2V5QnVmUHRyLCBrZXlQcmVmaXgsIHNpemVvZihrZXlQcmVmaXgpLXNpemVvZihXQ0hBUikpOwotICAgIGtleUJ1ZlB0ciArPSBzaXplb2Yoa2V5UHJlZml4KS9zaXplb2YoV0NIQVIpIC0gMTsKKyAgICBrZXlCdWZQdHIgKz0gUHlfQVJSQVlfTEVOR1RIKGtleVByZWZpeCkgLSAxOwogICAgIG1ic3Rvd2NzKGtleUJ1ZlB0ciwgUHlXaW5fRExMVmVyc2lvblN0cmluZywgdmVyc2lvbkxlbik7CiAgICAga2V5QnVmUHRyICs9IHZlcnNpb25MZW47CiAgICAgLyogTlVMTCBjb21lcyB3aXRoIHRoaXMgb25lISAqLwpAQCAtNDIzLDYgKzQyMyw1MyBAQAogICAgICAgICBwcm9ncGF0aFswXSA9ICdcMCc7CiB9CiAKK3N0YXRpYyBpbnQKK2ZpbmRfZW52X2NvbmZpZ192YWx1ZShGSUxFICogZW52X2ZpbGUsIGNvbnN0IHdjaGFyX3QgKiBrZXksIHdjaGFyX3QgKiB2YWx1ZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsgLyogbWVhbmluZyBub3QgZm91bmQgKi8KKyAgICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVOKjIrMV07ICAvKiBhbGxvdyBleHRyYSBmb3Iga2V5LCAnPScsIGV0Yy4gKi8KKworICAgIGZzZWVrKGVudl9maWxlLCAwLCBTRUVLX1NFVCk7CisgICAgd2hpbGUgKCFmZW9mKGVudl9maWxlKSkgeworICAgICAgICBjaGFyICogcCA9IGZnZXRzKGJ1ZmZlciwgTUFYUEFUSExFTioyLCBlbnZfZmlsZSk7CisgICAgICAgIHdjaGFyX3QgdG1wYnVmZmVyW01BWFBBVEhMRU4qMisxXTsKKyAgICAgICAgUHlPYmplY3QgKiBkZWNvZGVkOworICAgICAgICBpbnQgbjsKKworICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG4gPSBzdHJsZW4ocCk7CisgICAgICAgIGlmIChwW24gLSAxXSAhPSAnXG4nKSB7CisgICAgICAgICAgICAvKiBsaW5lIGhhcyBvdmVyZmxvd2VkIC0gYmFpbCAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBbMF0gPT0gJyMnKSAgICAvKiBDb21tZW50IC0gc2tpcCAqLworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGRlY29kZWQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChidWZmZXIsIG4sICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgaWYgKGRlY29kZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlfc3NpemVfdCBrOworICAgICAgICAgICAgayA9IFB5VW5pY29kZV9Bc1dpZGVDaGFyKGRlY29kZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wYnVmZmVyLCBNQVhQQVRITEVOICogMik7CisgICAgICAgICAgICBQeV9ERUNSRUYoZGVjb2RlZCk7CisgICAgICAgICAgICBpZiAoayA+PSAwKSB7CisgICAgICAgICAgICAgICAgd2NoYXJfdCAqIHRvayA9IHdjc3Rvayh0bXBidWZmZXIsIEwiIFx0XHJcbiIpOworICAgICAgICAgICAgICAgIGlmICgodG9rICE9IE5VTEwpICYmICF3Y3NjbXAodG9rLCBrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIiBcdCIpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHRvayAhPSBOVUxMKSAmJiAhd2NzY21wKHRvaywgTCI9IikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvayA9IHdjc3RvayhOVUxMLCBMIlxyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2sgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdjc25jcHkodmFsdWUsIHRvaywgTUFYUEFUSExFTik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgdm9pZAogY2FsY3VsYXRlX3BhdGgodm9pZCkKIHsKQEAgLTQ1Nyw2ICs1MDQsNDAgQEAKICAgICAvKiBwcm9ncGF0aCBndWFyYW50ZWVkIFwwIHRlcm1pbmF0ZWQgaW4gTUFYUEFUSCsxIGJ5dGVzLiAqLwogICAgIHdjc2NweShhcmd2MF9wYXRoLCBwcm9ncGF0aCk7CiAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOworCisgICAgLyogU2VhcmNoIGZvciBhbiBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZpbGUsIGZpcnN0IGluIHRoZQorICAgICAgIGV4ZWN1dGFibGUncyBkaXJlY3RvcnkgYW5kIHRoZW4gaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuCisgICAgICAgSWYgZm91bmQsIG9wZW4gaXQgZm9yIHVzZSB3aGVuIHNlYXJjaGluZyBmb3IgcHJlZml4ZXMuCisgICAgKi8KKworICAgIHsKKyAgICAgICAgd2NoYXJfdCB0bXBidWZmZXJbTUFYUEFUSExFTisxXTsKKyAgICAgICAgd2NoYXJfdCAqZW52X2NmZyA9IEwicHl2ZW52LmNmZyI7CisgICAgICAgIEZJTEUgKiBlbnZfZmlsZSA9IE5VTEw7CisKKyAgICAgICAgd2NzY3B5KHRtcGJ1ZmZlciwgYXJndjBfcGF0aCk7CisgICAgICAgIGpvaW4odG1wYnVmZmVyLCBlbnZfY2ZnKTsKKyAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgIGlmIChlbnZfZmlsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnJubyA9IDA7CisgICAgICAgICAgICByZWR1Y2UodG1wYnVmZmVyKTsKKyAgICAgICAgICAgIHJlZHVjZSh0bXBidWZmZXIpOworICAgICAgICAgICAgam9pbih0bXBidWZmZXIsIGVudl9jZmcpOworICAgICAgICAgICAgZW52X2ZpbGUgPSBfUHlfd2ZvcGVuKHRtcGJ1ZmZlciwgTCJyIik7CisgICAgICAgICAgICBpZiAoZW52X2ZpbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGVycm5vID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoZW52X2ZpbGUgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogTG9vayBmb3IgYSAnaG9tZScgdmFyaWFibGUgYW5kIHNldCBhcmd2MF9wYXRoIHRvIGl0LCBpZiBmb3VuZCAqLworICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJob21lIiwgdG1wYnVmZmVyKSkgeworICAgICAgICAgICAgICAgIHdjc2NweShhcmd2MF9wYXRoLCB0bXBidWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZmNsb3NlKGVudl9maWxlKTsKKyAgICAgICAgICAgIGVudl9maWxlID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGlmIChweXRob25ob21lID09IE5VTEwgfHwgKnB5dGhvbmhvbWUgPT0gJ1wwJykgewogICAgICAgICBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQogICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKQEAgLTcwOCw4ICs3ODksOCBAQAogICAgIHJldHVybiBwcm9ncGF0aDsKIH0KIAotLyogTG9hZCBweXRob24zLmRsbCBiZWZvcmUgbG9hZGluZyBhbnkgZXh0ZW5zaW9uIG1vZHVsZSB0aGF0IG1pZ2h0IHJlZmVyIAotICAgdG8gaXQuIFRoYXQgd2F5LCB3ZSBjYW4gYmUgc3VyZSB0aGF0IGFsd2F5cyB0aGUgcHl0aG9uMy5kbGwgY29ycmVzcG9uZGluZyAKKy8qIExvYWQgcHl0aG9uMy5kbGwgYmVmb3JlIGxvYWRpbmcgYW55IGV4dGVuc2lvbiBtb2R1bGUgdGhhdCBtaWdodCByZWZlcgorICAgdG8gaXQuIFRoYXQgd2F5LCB3ZSBjYW4gYmUgc3VyZSB0aGF0IGFsd2F5cyB0aGUgcHl0aG9uMy5kbGwgY29ycmVzcG9uZGluZwogICAgdG8gdGhpcyBweXRob24gRExMIGlzIGxvYWRlZCwgbm90IGEgcHl0aG9uMy5kbGwgdGhhdCBtaWdodCBiZSBvbiB0aGUgcGF0aAogICAgYnkgY2hhbmNlLgogICAgUmV0dXJuIHdoZXRoZXIgdGhlIERMTCB3YXMgZm91bmQuCmRpZmYgLS1naXQgYS9QQy9pbXBvcnRfbnQuYyBiL1BDL2ltcG9ydF9udC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTZhNzc0Li4wMDAwMDAwCi0tLSBhL1BDL2ltcG9ydF9udC5jCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSBpbXBvcnRfbnQuYwotCi0gIFdpbjMyIHNwZWNpZmljIGltcG9ydCBjb2RlLgotCi0qLwotCi0jaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAib3NkZWZzLmgiCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgImltcG9ydGRsLmgiCi0jaW5jbHVkZSAibWFsbG9jLmgiIC8qIGZvciBhbGxvY2EgKi8KLQotLyogYSBzdHJpbmcgbG9hZGVkIGZyb20gdGhlIERMTCBhdCBzdGFydHVwICovCi1leHRlcm4gY29uc3QgY2hhciAqUHlXaW5fRExMVmVyc2lvblN0cmluZzsKLQotRklMRSAqUHlXaW5fRmluZFJlZ2lzdGVyZWRNb2R1bGUoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmaWxlZGVzY3IgKipwcEZpbGVEZXNjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqcGF0aEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcGF0aExlbikKLXsKLSAgICBjaGFyICptb2R1bGVLZXk7Ci0gICAgY29uc3QgY2hhciBrZXlQcmVmaXhbXSA9ICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFwiOwotICAgIGNvbnN0IGNoYXIga2V5U3VmZml4W10gPSAiXFxNb2R1bGVzXFwiOwotI2lmZGVmIF9ERUJVRwotICAgIC8qIEluIGRlYnVnZ2luZyBidWlsZHMsIHdlIF9tdXN0XyBoYXZlIHRoZSBkZWJ1ZyB2ZXJzaW9uCi0gICAgICogcmVnaXN0ZXJlZC4KLSAgICAgKi8KLSAgICBjb25zdCBjaGFyIGRlYnVnU3RyaW5nW10gPSAiXFxEZWJ1ZyI7Ci0jZWxzZQotICAgIGNvbnN0IGNoYXIgZGVidWdTdHJpbmdbXSA9ICIiOwotI2VuZGlmCi0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwID0gTlVMTDsKLSAgICBGSUxFICpmcDsKLSAgICBIS0VZIGtleUJhc2UgPSBIS0VZX0NVUlJFTlRfVVNFUjsKLSAgICBpbnQgbW9kTmFtZVNpemU7Ci0gICAgbG9uZyByZWdTdGF0OwotCi0gICAgLyogQ2FsY3VsYXRlIHRoZSBzaXplIGZvciB0aGUgc3ByaW50ZiBidWZmZXIuCi0gICAgICogR2V0IHRoZSBzaXplIG9mIHRoZSBjaGFycyBvbmx5LCBwbHVzIDEgTlVMTC4KLSAgICAgKi8KLSAgICBzaXplX3QgYnVmU2l6ZSA9IHNpemVvZihrZXlQcmVmaXgpLTEgKwotICAgICAgICAgICAgICAgICAgICAgc3RybGVuKFB5V2luX0RMTFZlcnNpb25TdHJpbmcpICsKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZihrZXlTdWZmaXgpICsKLSAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihtb2R1bGVOYW1lKSArCi0gICAgICAgICAgICAgICAgICAgICBzaXplb2YoZGVidWdTdHJpbmcpIC0gMTsKLSAgICAvKiBhbGxvY2EgPT0gbm8gZnJlZSByZXF1aXJlZCwgYnV0IG1lbW9yeSBvbmx5IGxvY2FsIHRvIGZuLAotICAgICAqIGFsc28gbm8gaGVhcCBmcmFnbWVudGF0aW9uIQotICAgICAqLwotICAgIG1vZHVsZUtleSA9IGFsbG9jYShidWZTaXplKTsKLSAgICBQeU9TX3NucHJpbnRmKG1vZHVsZUtleSwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICJTb2Z0d2FyZVxcUHl0aG9uXFxQeXRob25Db3JlXFwlc1xcTW9kdWxlc1xcJXMlcyIsCi0gICAgICAgICAgICAgICAgICBQeVdpbl9ETExWZXJzaW9uU3RyaW5nLCBtb2R1bGVOYW1lLCBkZWJ1Z1N0cmluZyk7Ci0KLSAgICBhc3NlcnQocGF0aExlbiA8IElOVF9NQVgpOwotICAgIG1vZE5hbWVTaXplID0gKGludClwYXRoTGVuOwotICAgIHJlZ1N0YXQgPSBSZWdRdWVyeVZhbHVlKGtleUJhc2UsIG1vZHVsZUtleSwgcGF0aEJ1ZiwgJm1vZE5hbWVTaXplKTsKLSAgICBpZiAocmVnU3RhdCAhPSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgIC8qIE5vIHVzZXIgc2V0dGluZyAtIGxvb2t1cCBpbiBtYWNoaW5lIHNldHRpbmdzICovCi0gICAgICAgIGtleUJhc2UgPSBIS0VZX0xPQ0FMX01BQ0hJTkU7Ci0gICAgICAgIC8qIGJlIGFuYWwgLSBmYWlsdXJlIG1heSBoYXZlIHJlc2V0IHNpemUgcGFyYW0gKi8KLSAgICAgICAgbW9kTmFtZVNpemUgPSAoaW50KXBhdGhMZW47Ci0gICAgICAgIHJlZ1N0YXQgPSBSZWdRdWVyeVZhbHVlKGtleUJhc2UsIG1vZHVsZUtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aEJ1ZiwgJm1vZE5hbWVTaXplKTsKLQotICAgICAgICBpZiAocmVnU3RhdCAhPSBFUlJPUl9TVUNDRVNTKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIC8qIHVzZSB0aGUgZmlsZSBleHRlbnNpb24gdG8gbG9jYXRlIHRoZSB0eXBlIGVudHJ5LiAqLwotICAgIGZvciAoZmRwID0gX1B5SW1wb3J0X0ZpbGV0YWI7IGZkcC0+c3VmZml4ICE9IE5VTEw7IGZkcCsrKSB7Ci0gICAgICAgIHNpemVfdCBleHRMZW4gPSBzdHJsZW4oZmRwLT5zdWZmaXgpOwotICAgICAgICBhc3NlcnQobW9kTmFtZVNpemUgPj0gMCk7IC8qIGVsc2UgY2FzdCB0byBzaXplX3QgaXMgd3JvbmcgKi8KLSAgICAgICAgaWYgKChzaXplX3QpbW9kTmFtZVNpemUgPiBleHRMZW4gJiYKLSAgICAgICAgICAgIHN0cm5pY21wKHBhdGhCdWYgKyAoKHNpemVfdCltb2ROYW1lU2l6ZS1leHRMZW4tMSksCi0gICAgICAgICAgICAgICAgICAgICBmZHAtPnN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgIGV4dExlbikgPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoZmRwLT5zdWZmaXggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnAgPSBmb3BlbihwYXRoQnVmLCBmZHAtPm1vZGUpOwotICAgIGlmIChmcCAhPSBOVUxMKQotICAgICAgICAqcHBGaWxlRGVzYyA9IGZkcDsKLSAgICByZXR1cm4gZnA7Ci19CmRpZmYgLS1naXQgYS9QQy9sYXVuY2hlci5jIGIvUEMvbGF1bmNoZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZmFkNDRhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvbGF1bmNoZXIuYwpAQCAtMCwwICsxLDEzNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBWaW5heSBTYWppcC4KKyAqIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIGNvbnRyaWJ1dG9yIGFncmVlbWVudC4KKyAqCisgKiBCYXNlZCBvbiB0aGUgd29yayBvZjoKKyAqCisgKiBNYXJrIEhhbW1vbmQgKG9yaWdpbmFsIGF1dGhvciBvZiBQeXRob24gdmVyc2lvbikKKyAqIEN1cnQgSGFnZW5sb2NoZXIgKGpvYiBtYW5hZ2VtZW50KQorICovCisKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8c2hsb2JqLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx0Y2hhci5oPgorCisjZGVmaW5lIEJVRlNJWkUgMjU2CisjZGVmaW5lIE1TR1NJWkUgMTAyNAorCisvKiBCdWlsZCBvcHRpb25zLiAqLworI2RlZmluZSBTS0lQX1BSRUZJWAorLyogI2RlZmluZSBTRUFSQ0hfUEFUSCAqLworCisvKiBKdXN0IGZvciBub3cgLSBzdGF0aWMgZGVmaW5pdGlvbiAqLworCitzdGF0aWMgRklMRSAqIGxvZ19mcCA9IE5VTEw7CisKK3N0YXRpYyB3Y2hhcl90ICoKK3NraXBfd2hpdGVzcGFjZSh3Y2hhcl90ICogcCkKK3sKKyAgICB3aGlsZSAoKnAgJiYgaXNzcGFjZSgqcCkpCisgICAgICAgICsrcDsKKyAgICByZXR1cm4gcDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgaGVyZSB0byBzaW1wbGlmeSBtZW1vcnkgbWFuYWdlbWVudAorICogYW5kIHRvIHRyZWF0IGJsYW5rIHZhbHVlcyBhcyBpZiB0aGV5IGFyZSBhYnNlbnQuCisgKi8KK3N0YXRpYyB3Y2hhcl90ICogZ2V0X2Vudih3Y2hhcl90ICoga2V5KQoreworICAgIC8qIFRoaXMgaXMgbm90IHRocmVhZC1zYWZlLCBqdXN0IGxpa2UgZ2V0ZW52ICovCisgICAgc3RhdGljIHdjaGFyX3QgYnVmWzI1Nl07CisgICAgRFdPUkQgcmVzdWx0ID0gR2V0RW52aXJvbm1lbnRWYXJpYWJsZVcoa2V5LCBidWYsIDI1Nik7CisKKyAgICBpZiAocmVzdWx0ID4gMjU1KSB7CisgICAgICAgIC8qIExhcmdlIGVudmlyb25tZW50IHZhcmlhYmxlLiBBY2NlcHQgc29tZSBsZWFrYWdlICovCisgICAgICAgIHdjaGFyX3QgKmJ1ZjIgPSAod2NoYXJfdCopbWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIChyZXN1bHQrMSkpOworICAgICAgICBHZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhrZXksIGJ1ZjIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBidWYyOworICAgIH0KKworICAgIGlmIChyZXN1bHQgPT0gMCkKKyAgICAgICAgLyogRWl0aGVyIHNvbWUgZXJyb3IsIGUuZy4gRVJST1JfRU5WVkFSX05PVF9GT1VORCwKKyAgICAgICAgICAgb3IgYW4gZW1wdHkgZW52aXJvbm1lbnQgdmFyaWFibGUuICovCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIGJ1ZjsKK30KKworCitzdGF0aWMgdm9pZAorZGVidWcod2NoYXJfdCAqIGZvcm1hdCwgLi4uKQoreworICAgIHZhX2xpc3QgdmE7CisKKyAgICBpZiAobG9nX2ZwICE9IE5VTEwpIHsKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgICAgIHZmd3ByaW50Zl9zKGxvZ19mcCwgZm9ybWF0LCB2YSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZAord2luZXJyb3IoaW50IHJjLCB3Y2hhcl90ICogbWVzc2FnZSwgaW50IHNpemUpCit7CisgICAgRm9ybWF0TWVzc2FnZVcoCisgICAgICAgIEZPUk1BVF9NRVNTQUdFX0ZST01fU1lTVEVNIHwgRk9STUFUX01FU1NBR0VfSUdOT1JFX0lOU0VSVFMsCisgICAgICAgIE5VTEwsIHJjLCBNQUtFTEFOR0lEKExBTkdfTkVVVFJBTCwgU1VCTEFOR19ERUZBVUxUKSwKKyAgICAgICAgbWVzc2FnZSwgc2l6ZSwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkCitlcnJvcihpbnQgcmMsIHdjaGFyX3QgKiBmb3JtYXQsIC4uLiApCit7CisgICAgdmFfbGlzdCB2YTsKKyAgICB3Y2hhcl90IG1lc3NhZ2VbTVNHU0laRV07CisgICAgd2NoYXJfdCB3aW5fbWVzc2FnZVtNU0dTSVpFXTsKKyAgICBpbnQgbGVuOworCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgbGVuID0gX3ZzbndwcmludGZfcyhtZXNzYWdlLCBNU0dTSVpFLCBfVFJVTkNBVEUsIGZvcm1hdCwgdmEpOworCisgICAgaWYgKHJjID09IDApIHsgIC8qIGEgV2luZG93cyBlcnJvciAqLworICAgICAgICB3aW5lcnJvcihHZXRMYXN0RXJyb3IoKSwgd2luX21lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICBpZiAobGVuID49IDApIHsKKyAgICAgICAgICAgIF9zbndwcmludGZfcygmbWVzc2FnZVtsZW5dLCBNU0dTSVpFIC0gbGVuLCBfVFJVTkNBVEUsIEwiOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgd2luX21lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisjaWYgIWRlZmluZWQoX1dJTkRPV1MpCisgICAgZndwcmludGYoc3RkZXJyLCBMIiVzXG4iLCBtZXNzYWdlKTsKKyNlbHNlCisgICAgTWVzc2FnZUJveChOVUxMLCBtZXNzYWdlLCBURVhUKCJQeXRob24gTGF1bmNoZXIgaXMgc29ycnkgdG8gc2F5IC4uLiIpLCBNQl9PSyk7IAorI2VuZGlmCisgICAgRXhpdFByb2Nlc3MocmMpOworfQorCisjaWYgZGVmaW5lZChfV0lORE9XUykKKworI2RlZmluZSBQWVRIT05fRVhFQ1VUQUJMRSBMInB5dGhvbncuZXhlIgorCisjZWxzZQorCisjZGVmaW5lIFBZVEhPTl9FWEVDVVRBQkxFIEwicHl0aG9uLmV4ZSIKKworI2VuZGlmCisKKyNkZWZpbmUgUkNfTk9fU1REX0hBTkRMRVMgICAxMDAKKyNkZWZpbmUgUkNfQ1JFQVRFX1BST0NFU1MgICAxMDEKKyNkZWZpbmUgUkNfQkFEX1ZJUlRVQUxfUEFUSCAxMDIKKyNkZWZpbmUgUkNfTk9fUFlUSE9OICAgICAgICAxMDMKKworI2RlZmluZSBNQVhfVkVSU0lPTl9TSVpFICAgIDQKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHdjaGFyX3QgdmVyc2lvbltNQVhfVkVSU0lPTl9TSVpFXTsgLyogbS5uICovCisgICAgaW50IGJpdHM7ICAgLyogMzIgb3IgNjQgKi8KKyAgICB3Y2hhcl90IGV4ZWN1dGFibGVbTUFYX1BBVEhdOworfSBJTlNUQUxMRURfUFlUSE9OOworCisvKgorICogVG8gYXZvaWQgbWVzc2luZyBhYm91dCB3aXRoIGhlYXAgYWxsb2NhdGlvbnMsIGp1c3QgYXNzdW1lIHdlIGNhbiBhbGxvY2F0ZQorICogc3RhdGljYWxseSBhbmQgbmV2ZXIgaGF2ZSB0byBkZWFsIHdpdGggbW9yZSB2ZXJzaW9ucyB0aGFuIHRoaXMuCisgKi8KKyNkZWZpbmUgTUFYX0lOU1RBTExFRF9QWVRIT05TICAgMTAwCisKK3N0YXRpYyBJTlNUQUxMRURfUFlUSE9OIGluc3RhbGxlZF9weXRob25zW01BWF9JTlNUQUxMRURfUFlUSE9OU107CisKK3N0YXRpYyBzaXplX3QgbnVtX2luc3RhbGxlZF9weXRob25zID0gMDsKKworLyogdG8gaG9sZCBTT0ZUV0FSRVxQeXRob25cUHl0aG9uQ29yZVxYLllcSW5zdGFsbFBhdGggKi8KKyNkZWZpbmUgSVBfQkFTRV9TSVpFIDQwCisjZGVmaW5lIElQX1NJWkUgKElQX0JBU0VfU0laRSArIE1BWF9WRVJTSU9OX1NJWkUpCisjZGVmaW5lIENPUkVfUEFUSCBMIlNPRlRXQVJFXFxQeXRob25cXFB5dGhvbkNvcmUiCisKK3N0YXRpYyB3Y2hhcl90ICogbG9jYXRpb25fY2hlY2tzW10gPSB7CisgICAgTCJcXCIsCisgICAgTCJcXFBDQnVpbGRcXCIsCisgICAgTCJcXFBDQnVpbGRcXGFtZDY0XFwiLAorICAgIE5VTEwKK307CisKK3N0YXRpYyBJTlNUQUxMRURfUFlUSE9OICoKK2ZpbmRfZXhpc3RpbmdfcHl0aG9uKHdjaGFyX3QgKiBwYXRoKQoreworICAgIElOU1RBTExFRF9QWVRIT04gKiByZXN1bHQgPSBOVUxMOworICAgIHNpemVfdCBpOworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDsKKworICAgIGZvciAoaSA9IDAsIGlwID0gaW5zdGFsbGVkX3B5dGhvbnM7IGkgPCBudW1faW5zdGFsbGVkX3B5dGhvbnM7IGkrKywgaXArKykgeworICAgICAgICBpZiAoX3djc2ljbXAocGF0aCwgaXAtPmV4ZWN1dGFibGUpID09IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGlwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK2xvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWSByb290LCBSRUdTQU0gZmxhZ3MpCit7CisgICAgSEtFWSBjb3JlX3Jvb3QsIGlwX2tleTsKKyAgICBMU1RBVFVTIHN0YXR1cyA9IFJlZ09wZW5LZXlFeFcocm9vdCwgQ09SRV9QQVRILCAwLCBmbGFncywgJmNvcmVfcm9vdCk7CisgICAgd2NoYXJfdCBtZXNzYWdlW01TR1NJWkVdOworICAgIERXT1JEIGk7CisgICAgc2l6ZV90IG47CisgICAgQk9PTCBvazsKKyAgICBEV09SRCB0eXBlLCBkYXRhX3NpemUsIGF0dHJzOworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcCwgKiBwaXA7CisgICAgd2NoYXJfdCBpcF9wYXRoW0lQX1NJWkVdOworICAgIHdjaGFyX3QgKiBjaGVjazsKKyAgICB3Y2hhcl90ICoqIGNoZWNrcDsKKyAgICB3Y2hhcl90ICprZXlfbmFtZSA9IChyb290ID09IEhLRVlfTE9DQUxfTUFDSElORSkgPyBMIkhLTE0iIDogTCJIS0NVIjsKKworICAgIGlmIChzdGF0dXMgIT0gRVJST1JfU1VDQ0VTUykKKyAgICAgICAgZGVidWcoTCJsb2NhdGVfcHl0aG9uc19mb3Jfa2V5OiB1bmFibGUgdG8gb3BlbiBQeXRob25Db3JlIGtleSBpbiAlc1xuIiwKKyAgICAgICAgICAgICAga2V5X25hbWUpOworICAgIGVsc2UgeworICAgICAgICBpcCA9ICZpbnN0YWxsZWRfcHl0aG9uc1tudW1faW5zdGFsbGVkX3B5dGhvbnNdOworICAgICAgICBmb3IgKGkgPSAwOyBudW1faW5zdGFsbGVkX3B5dGhvbnMgPCBNQVhfSU5TVEFMTEVEX1BZVEhPTlM7IGkrKykgeworICAgICAgICAgICAgc3RhdHVzID0gUmVnRW51bUtleVcoY29yZV9yb290LCBpLCBpcC0+dmVyc2lvbiwgTUFYX1ZFUlNJT05fU0laRSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IEVSUk9SX05PX01PUkVfSVRFTVMpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogdW5leHBlY3RlZCBlcnJvciAqLworICAgICAgICAgICAgICAgICAgICB3aW5lcnJvcihzdGF0dXMsIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIkNhbid0IGVudW1lcmF0ZSByZWdpc3RyeSBrZXkgZm9yIHZlcnNpb24gJXM6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+dmVyc2lvbiwgbWVzc2FnZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGlwX3BhdGgsIElQX1NJWkUsIF9UUlVOQ0FURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlc1xcJXNcXEluc3RhbGxQYXRoIiwgQ09SRV9QQVRILCBpcC0+dmVyc2lvbik7CisgICAgICAgICAgICAgICAgc3RhdHVzID0gUmVnT3BlbktleUV4Vyhyb290LCBpcF9wYXRoLCAwLCBmbGFncywgJmlwX2tleSk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdGU6ICdtZXNzYWdlJyBhbHJlYWR5IGhhcyBhIHRyYWlsaW5nIFxuCisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJXNcXCVzOiAlcyIsIGtleV9uYW1lLCBpcF9wYXRoLCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSA9IHNpemVvZihpcC0+ZXhlY3V0YWJsZSkgLSAxOworICAgICAgICAgICAgICAgIHN0YXR1cyA9IFJlZ1F1ZXJ5VmFsdWVFeFcoaXBfa2V5LCBOVUxMLCBOVUxMLCAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpaXAtPmV4ZWN1dGFibGUsICZkYXRhX3NpemUpOworICAgICAgICAgICAgICAgIFJlZ0Nsb3NlS2V5KGlwX2tleSk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKHN0YXR1cywgbWVzc2FnZSwgTVNHU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiJXNcXCVzOiAlc1xuIiwga2V5X25hbWUsIGlwX3BhdGgsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUkVHX1NaKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFfc2l6ZSA9IGRhdGFfc2l6ZSAvIHNpemVvZih3Y2hhcl90KSAtIDE7ICAvKiBmb3IgTlVMICovCisgICAgICAgICAgICAgICAgICAgIGlmIChpcC0+ZXhlY3V0YWJsZVtkYXRhX3NpemUgLSAxXSA9PSBMJ1xcJykKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tZGF0YV9zaXplOyAvKiByZWcgdmFsdWUgZW5kZWQgaW4gYSBiYWNrc2xhc2ggKi8KKyAgICAgICAgICAgICAgICAgICAgLyogaXAtPmV4ZWN1dGFibGUgaXMgZGF0YV9zaXplIGxvbmcgKi8KKyAgICAgICAgICAgICAgICAgICAgZm9yIChjaGVja3AgPSBsb2NhdGlvbl9jaGVja3M7ICpjaGVja3A7ICsrY2hlY2twKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGVjayA9ICpjaGVja3A7CisgICAgICAgICAgICAgICAgICAgICAgICBfc253cHJpbnRmX3MoJmlwLT5leGVjdXRhYmxlW2RhdGFfc2l6ZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1BBVEggLSBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1BBVEggLSBkYXRhX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlcyVzIiwgY2hlY2ssIFBZVEhPTl9FWEVDVVRBQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzID0gR2V0RmlsZUF0dHJpYnV0ZXNXKGlwLT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBJTlZBTElEX0ZJTEVfQVRUUklCVVRFUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmVycm9yKEdldExhc3RFcnJvcigpLCBtZXNzYWdlLCBNU0dTSVpFKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cnMgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICclcycgaXMgYSBcCitkaXJlY3RvcnlcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIGF0dHJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpbmRfZXhpc3RpbmdfcHl0aG9uKGlwLT5leGVjdXRhYmxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXM6IGFscmVhZHkgXAorZm91bmQ6ICVzXG4iLCBpcC0+ZXhlY3V0YWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayB0aGUgZXhlY3V0YWJsZSB0eXBlLiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gR2V0QmluYXJ5VHlwZVcoaXAtPmV4ZWN1dGFibGUsICZhdHRycyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIkZhaWx1cmUgZ2V0dGluZyBiaW5hcnkgdHlwZTogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdHRycyA9PSBTQ1NfNjRCSVRfQklOQVJZKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmJpdHMgPSA2NDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYXR0cnMgPT0gU0NTXzMyQklUX0JJTkFSWSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5iaXRzID0gMzI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5iaXRzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlwLT5iaXRzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwibG9jYXRlX3B5dGhvbnNfZm9yX2tleTogJXM6IFwKK2ludmFsaWQgYmluYXJ5IHR5cGU6ICVYXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIGF0dHJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3Y3NjaHIoaXAtPmV4ZWN1dGFibGUsIEwnICcpICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBoYXMgc3BhY2VzLCBzbyBxdW90ZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB3Y3NsZW4oaXAtPmV4ZWN1dGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW1vdmUoJmlwLT5leGVjdXRhYmxlWzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGUsIG4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwLT5leGVjdXRhYmxlWzBdID0gTCdcIic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGVbbiArIDFdID0gTCdcIic7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXAtPmV4ZWN1dGFibGVbbiArIDJdID0gTCdcMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMImxvY2F0ZV9weXRob25zX2Zvcl9rZXk6ICVzIFwKK2lzIGEgJWRiaXQgZXhlY3V0YWJsZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcC0+ZXhlY3V0YWJsZSwgaXAtPmJpdHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytudW1faW5zdGFsbGVkX3B5dGhvbnM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXAgPSBpcCsrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bV9pbnN0YWxsZWRfcHl0aG9ucyA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9JTlNUQUxMRURfUFlUSE9OUykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENvcHkgb3ZlciB0aGUgYXR0cmlidXRlcyBmb3IgdGhlIG5leHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICppcCA9ICpwaXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUmVnQ2xvc2VLZXkoY29yZV9yb290KTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBhcmVfcHl0aG9ucyhjb25zdCB2b2lkICogcDEsIGNvbnN0IHZvaWQgKiBwMikKK3sKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXAxID0gKElOU1RBTExFRF9QWVRIT04gKikgcDE7CisgICAgSU5TVEFMTEVEX1BZVEhPTiAqIGlwMiA9IChJTlNUQUxMRURfUFlUSE9OICopIHAyOworICAgIC8qIG5vdGUgcmV2ZXJzZSBzb3J0aW5nIG9uIHZlcnNpb24gKi8KKyAgICBpbnQgcmVzdWx0ID0gd2NzY21wKGlwMi0+dmVyc2lvbiwgaXAxLT52ZXJzaW9uKTsKKworICAgIGlmIChyZXN1bHQgPT0gMCkKKyAgICAgICAgcmVzdWx0ID0gaXAyLT5iaXRzIC0gaXAxLT5iaXRzOyAvKiA2NCBiZWZvcmUgMzIgKi8KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorbG9jYXRlX2FsbF9weXRob25zKCkKK3sKKyNpZiBkZWZpbmVkKF9NX1g2NCkKKyAgICAvLyBJZiB3ZSBhcmUgYSA2NGJpdCBwcm9jZXNzLCBmaXJzdCBoaXQgdGhlIDMyYml0IGtleXMuCisgICAgZGVidWcoTCJsb2NhdGluZyBQeXRob25zIGluIDMyYml0IHJlZ2lzdHJ5XG4iKTsKKyAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfQ1VSUkVOVF9VU0VSLCBLRVlfUkVBRCB8IEtFWV9XT1c2NF8zMktFWSk7CisgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0xPQ0FMX01BQ0hJTkUsIEtFWV9SRUFEIHwgS0VZX1dPVzY0XzMyS0VZKTsKKyNlbHNlCisgICAgLy8gSWYgd2UgYXJlIGEgMzJiaXQgcHJvY2VzcyBvbiBhIDY0Yml0IFdpbmRvd3MsIGZpcnN0IGhpdCB0aGUgNjRiaXQga2V5cy4KKyAgICBCT09MIGY2NCA9IEZBTFNFOworICAgIGlmIChJc1dvdzY0UHJvY2VzcyhHZXRDdXJyZW50UHJvY2VzcygpLCAmZjY0KSAmJiBmNjQpIHsKKyAgICAgICAgZGVidWcoTCJsb2NhdGluZyBQeXRob25zIGluIDY0Yml0IHJlZ2lzdHJ5XG4iKTsKKyAgICAgICAgbG9jYXRlX3B5dGhvbnNfZm9yX2tleShIS0VZX0NVUlJFTlRfVVNFUiwgS0VZX1JFQUQgfCBLRVlfV09XNjRfNjRLRVkpOworICAgICAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfTE9DQUxfTUFDSElORSwgS0VZX1JFQUQgfCBLRVlfV09XNjRfNjRLRVkpOworICAgIH0KKyNlbmRpZiAgICAKKyAgICAvLyBub3cgaGl0IHRoZSAibmF0aXZlIiBrZXkgZm9yIHRoaXMgcHJvY2VzcyBiaXR0ZWRuZXNzLgorICAgIGRlYnVnKEwibG9jYXRpbmcgUHl0aG9ucyBpbiBuYXRpdmUgcmVnaXN0cnlcbiIpOworICAgIGxvY2F0ZV9weXRob25zX2Zvcl9rZXkoSEtFWV9DVVJSRU5UX1VTRVIsIEtFWV9SRUFEKTsKKyAgICBsb2NhdGVfcHl0aG9uc19mb3Jfa2V5KEhLRVlfTE9DQUxfTUFDSElORSwgS0VZX1JFQUQpOworICAgIHFzb3J0KGluc3RhbGxlZF9weXRob25zLCBudW1faW5zdGFsbGVkX3B5dGhvbnMsIHNpemVvZihJTlNUQUxMRURfUFlUSE9OKSwKKyAgICAgICAgICBjb21wYXJlX3B5dGhvbnMpOworfQorCitzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiAqCitmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKHdjaGFyX3QgY29uc3QgKiB3YW50ZWRfdmVyKQoreworICAgIElOU1RBTExFRF9QWVRIT04gKiByZXN1bHQgPSBOVUxMOworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcCA9IGluc3RhbGxlZF9weXRob25zOworICAgIHNpemVfdCBpLCBuOworICAgIHNpemVfdCB3bGVuID0gd2NzbGVuKHdhbnRlZF92ZXIpOworICAgIGludCBiaXRzID0gMDsKKworICAgIGlmICh3Y3NzdHIod2FudGVkX3ZlciwgTCItMzIiKSkKKyAgICAgICAgYml0cyA9IDMyOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1faW5zdGFsbGVkX3B5dGhvbnM7IGkrKywgaXArKykgeworICAgICAgICBuID0gd2NzbGVuKGlwLT52ZXJzaW9uKTsKKyAgICAgICAgaWYgKG4gPiB3bGVuKQorICAgICAgICAgICAgbiA9IHdsZW47CisgICAgICAgIGlmICgod2NzbmNtcChpcC0+dmVyc2lvbiwgd2FudGVkX3ZlciwgbikgPT0gMCkgJiYKKyAgICAgICAgICAgIC8qIGJpdHMgPT0gMCA9PiBkb24ndCBjYXJlICovCisgICAgICAgICAgICAoKGJpdHMgPT0gMCkgfHwgKGlwLT5iaXRzID09IGJpdHMpKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gaXA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK3N0YXRpYyB3Y2hhcl90IGFwcGRhdGFfaW5pX3BhdGhbTUFYX1BBVEhdOworc3RhdGljIHdjaGFyX3QgbGF1bmNoZXJfaW5pX3BhdGhbTUFYX1BBVEhdOworCisvKgorICogR2V0IGEgdmFsdWUgZWl0aGVyIGZyb20gdGhlIGVudmlyb25tZW50IG9yIGEgY29uZmlndXJhdGlvbiBmaWxlLgorICogVGhlIGtleSBwYXNzZWQgaW4gd2lsbCBlaXRoZXIgYmUgInB5dGhvbiIsICJweXRob24yIiBvciAicHl0aG9uMyIuCisgKi8KK3N0YXRpYyB3Y2hhcl90ICoKK2dldF9jb25maWd1cmVkX3ZhbHVlKHdjaGFyX3QgKiBrZXkpCit7CisvKgorICogTm90ZTogdGhpcyBzdGF0aWMgdmFsdWUgaXMgdXNlZCB0byByZXR1cm4gYSBjb25maWd1cmVkIHZhbHVlCisgKiBvYnRhaW5lZCBlaXRoZXIgZnJvbSB0aGUgZW52aXJvbm1lbnQgb3IgY29uZmlndXJhdGlvbiBmaWxlLgorICogVGhpcyBzaG91bGQgYmUgT0sgc2luY2UgdGhlcmUgd291bGRuJ3QgYmUgYW55IGNvbmN1cnJlbnQgY2FsbHMuCisgKi8KKyAgICBzdGF0aWMgd2NoYXJfdCBjb25maWd1cmVkX3ZhbHVlW01TR1NJWkVdOworICAgIHdjaGFyX3QgKiByZXN1bHQgPSBOVUxMOworICAgIHdjaGFyX3QgKiBmb3VuZF9pbiA9IEwiZW52aXJvbm1lbnQiOworICAgIERXT1JEIHNpemU7CisKKyAgICAvKiBGaXJzdCwgc2VhcmNoIHRoZSBlbnZpcm9ubWVudC4gKi8KKyAgICBfc253cHJpbnRmX3MoY29uZmlndXJlZF92YWx1ZSwgTVNHU0laRSwgX1RSVU5DQVRFLCBMInB5XyVzIiwga2V5KTsKKyAgICByZXN1bHQgPSBnZXRfZW52KGNvbmZpZ3VyZWRfdmFsdWUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCAmJiBhcHBkYXRhX2luaV9wYXRoWzBdKSB7CisgICAgICAgIC8qIE5vdCBpbiBlbnZpcm9ubWVudDogY2hlY2sgbG9jYWwgY29uZmlndXJhdGlvbi4gKi8KKyAgICAgICAgc2l6ZSA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImRlZmF1bHRzIiwga2V5LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWRfdmFsdWUsIE1TR1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgIGlmIChzaXplID4gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gY29uZmlndXJlZF92YWx1ZTsKKyAgICAgICAgICAgIGZvdW5kX2luID0gYXBwZGF0YV9pbmlfcGF0aDsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocmVzdWx0ID09IE5VTEwgJiYgbGF1bmNoZXJfaW5pX3BhdGhbMF0pIHsKKyAgICAgICAgLyogTm90IGluIGVudmlyb25tZW50IG9yIGxvY2FsOiBjaGVjayBnbG9iYWwgY29uZmlndXJhdGlvbi4gKi8KKyAgICAgICAgc2l6ZSA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImRlZmF1bHRzIiwga2V5LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWRfdmFsdWUsIE1TR1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICBpZiAoc2l6ZSA+IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbmZpZ3VyZWRfdmFsdWU7CisgICAgICAgICAgICBmb3VuZF9pbiA9IGxhdW5jaGVyX2luaV9wYXRoOworICAgICAgICB9CisgICAgfQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgZGVidWcoTCJmb3VuZCBjb25maWd1cmVkIHZhbHVlICclcz0lcycgaW4gJXNcbiIsCisgICAgICAgICAgICAgIGtleSwgcmVzdWx0LCBmb3VuZF9pbiA/IGZvdW5kX2luIDogTCIodW5rbm93bikiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZyhMImZvdW5kIG5vIGNvbmZpZ3VyZWQgdmFsdWUgZm9yICclcydcbiIsIGtleSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBJTlNUQUxMRURfUFlUSE9OICoKK2xvY2F0ZV9weXRob24od2NoYXJfdCAqIHdhbnRlZF92ZXIpCit7CisgICAgc3RhdGljIHdjaGFyX3QgY29uZmlnX2tleSBbXSA9IHsgTCJweXRob25YIiB9OworICAgIHN0YXRpYyB3Y2hhcl90ICogbGFzdF9jaGFyID0gJmNvbmZpZ19rZXlbc2l6ZW9mKGNvbmZpZ19rZXkpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih3Y2hhcl90KSAtIDJdOworICAgIElOU1RBTExFRF9QWVRIT04gKiByZXN1bHQgPSBOVUxMOworICAgIHNpemVfdCBuID0gd2NzbGVuKHdhbnRlZF92ZXIpOworICAgIHdjaGFyX3QgKiBjb25maWd1cmVkX3ZhbHVlOworCisgICAgaWYgKG51bV9pbnN0YWxsZWRfcHl0aG9ucyA9PSAwKQorICAgICAgICBsb2NhdGVfYWxsX3B5dGhvbnMoKTsKKworICAgIGlmIChuID09IDEpIHsgICAvKiBqdXN0IG1ham9yIHZlcnNpb24gc3BlY2lmaWVkICovCisgICAgICAgICpsYXN0X2NoYXIgPSAqd2FudGVkX3ZlcjsKKyAgICAgICAgY29uZmlndXJlZF92YWx1ZSA9IGdldF9jb25maWd1cmVkX3ZhbHVlKGNvbmZpZ19rZXkpOworICAgICAgICBpZiAoY29uZmlndXJlZF92YWx1ZSAhPSBOVUxMKQorICAgICAgICAgICAgd2FudGVkX3ZlciA9IGNvbmZpZ3VyZWRfdmFsdWU7CisgICAgfQorICAgIGlmICgqd2FudGVkX3ZlcikgeworICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKHdhbnRlZF92ZXIpOworICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgUHl0aG9uIHZlcnNpb24gJyVzJyBmb3VuZCAiLCB3YW50ZWRfdmVyKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgZGVidWcoTCInJXMnXG4iLCByZXN1bHQtPmV4ZWN1dGFibGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJubyBpbnRlcnByZXRlclxuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgICpsYXN0X2NoYXIgPSBMJ1wwJzsgLyogbG9vayBmb3IgYW4gb3ZlcmFsbCBkZWZhdWx0ICovCisgICAgICAgIGNvbmZpZ3VyZWRfdmFsdWUgPSBnZXRfY29uZmlndXJlZF92YWx1ZShjb25maWdfa2V5KTsKKyAgICAgICAgaWYgKGNvbmZpZ3VyZWRfdmFsdWUpCisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGNvbmZpZ3VyZWRfdmFsdWUpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMiIpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKEwiMyIpOworICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgZGVmYXVsdCBQeXRob24gZm91bmQgIik7CisgICAgICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgICAgIGRlYnVnKEwidmVyc2lvbiAlcyBhdCAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgcmVzdWx0LT52ZXJzaW9uLCByZXN1bHQtPmV4ZWN1dGFibGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJubyBpbnRlcnByZXRlclxuIik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoKKyAqIFByb2Nlc3MgY3JlYXRpb24gY29kZQorICovCisKK3N0YXRpYyBCT09MCitzYWZlX2R1cGxpY2F0ZV9oYW5kbGUoSEFORExFIGluLCBIQU5ETEUgKiBwb3V0KQoreworICAgIEJPT0wgb2s7CisgICAgSEFORExFIHByb2Nlc3MgPSBHZXRDdXJyZW50UHJvY2VzcygpOworICAgIERXT1JEIHJjOworCisgICAgKnBvdXQgPSBOVUxMOworICAgIG9rID0gRHVwbGljYXRlSGFuZGxlKHByb2Nlc3MsIGluLCBwcm9jZXNzLCBwb3V0LCAwLCBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgIERVUExJQ0FURV9TQU1FX0FDQ0VTUyk7CisgICAgaWYgKCFvaykgeworICAgICAgICByYyA9IEdldExhc3RFcnJvcigpOworICAgICAgICBpZiAocmMgPT0gRVJST1JfSU5WQUxJRF9IQU5ETEUpIHsKKyAgICAgICAgICAgIGRlYnVnKEwiRHVwbGljYXRlSGFuZGxlIHJldHVybmVkIEVSUk9SX0lOVkFMSURfSEFORExFXG4iKTsKKyAgICAgICAgICAgIG9rID0gVFJVRTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwiRHVwbGljYXRlSGFuZGxlIHJldHVybmVkICVkXG4iLCByYyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG9rOworfQorCitzdGF0aWMgQk9PTCBXSU5BUEkKK2N0cmxfY19oYW5kbGVyKERXT1JEIGNvZGUpCit7CisgICAgcmV0dXJuIFRSVUU7ICAgIC8qIFdlIGp1c3QgaWdub3JlIGFsbCBjb250cm9sIGV2ZW50cy4gKi8KK30KKworc3RhdGljIHZvaWQKK3J1bl9jaGlsZCh3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICBIQU5ETEUgam9iOworICAgIEpPQk9CSkVDVF9FWFRFTkRFRF9MSU1JVF9JTkZPUk1BVElPTiBpbmZvOworICAgIERXT1JEIHJjOworICAgIEJPT0wgb2s7CisgICAgU1RBUlRVUElORk9XIHNpOworICAgIFBST0NFU1NfSU5GT1JNQVRJT04gcGk7CisKKyAgICBkZWJ1ZyhMInJ1bl9jaGlsZDogYWJvdXQgdG8gcnVuICclcydcbiIsIGNtZGxpbmUpOworICAgIGpvYiA9IENyZWF0ZUpvYk9iamVjdChOVUxMLCBOVUxMKTsKKyAgICBvayA9IFF1ZXJ5SW5mb3JtYXRpb25Kb2JPYmplY3Qoam9iLCBKb2JPYmplY3RFeHRlbmRlZExpbWl0SW5mb3JtYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8sIHNpemVvZihpbmZvKSwgJnJjKTsKKyAgICBpZiAoIW9rIHx8IChyYyAhPSBzaXplb2YoaW5mbykpIHx8ICFqb2IpCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMIkpvYiBpbmZvcm1hdGlvbiBxdWVyeWluZyBmYWlsZWQiKTsKKyAgICBpbmZvLkJhc2ljTGltaXRJbmZvcm1hdGlvbi5MaW1pdEZsYWdzIHw9IEpPQl9PQkpFQ1RfTElNSVRfS0lMTF9PTl9KT0JfQ0xPU0UgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSk9CX09CSkVDVF9MSU1JVF9TSUxFTlRfQlJFQUtBV0FZX09LOworICAgIG9rID0gU2V0SW5mb3JtYXRpb25Kb2JPYmplY3Qoam9iLCBKb2JPYmplY3RFeHRlbmRlZExpbWl0SW5mb3JtYXRpb24sICZpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGluZm8pKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJKb2IgaW5mb3JtYXRpb24gc2V0dGluZyBmYWlsZWQiKTsKKyAgICBtZW1zZXQoJnNpLCAwLCBzaXplb2Yoc2kpKTsKKyAgICBzaS5jYiA9IHNpemVvZihzaSk7CisgICAgb2sgPSBzYWZlX2R1cGxpY2F0ZV9oYW5kbGUoR2V0U3RkSGFuZGxlKFNURF9JTlBVVF9IQU5ETEUpLCAmc2kuaFN0ZElucHV0KTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19OT19TVERfSEFORExFUywgTCJzdGRpbiBkdXBsaWNhdGlvbiBmYWlsZWQiKTsKKyAgICBvayA9IHNhZmVfZHVwbGljYXRlX2hhbmRsZShHZXRTdGRIYW5kbGUoU1REX09VVFBVVF9IQU5ETEUpLCAmc2kuaFN0ZE91dHB1dCk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfTk9fU1REX0hBTkRMRVMsIEwic3Rkb3V0IGR1cGxpY2F0aW9uIGZhaWxlZCIpOworICAgIG9rID0gc2FmZV9kdXBsaWNhdGVfaGFuZGxlKEdldFN0ZEhhbmRsZShTVERfRVJST1JfSEFORExFKSwgJnNpLmhTdGRFcnJvcik7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfTk9fU1REX0hBTkRMRVMsIEwic3RkZXJyIGR1cGxpY2F0aW9uIGZhaWxlZCIpOworCisgICAgb2sgPSBTZXRDb25zb2xlQ3RybEhhbmRsZXIoY3RybF9jX2hhbmRsZXIsIFRSVUUpOworICAgIGlmICghb2spCisgICAgICAgIGVycm9yKFJDX0NSRUFURV9QUk9DRVNTLCBMImNvbnRyb2wgaGFuZGxlciBzZXR0aW5nIGZhaWxlZCIpOworCisgICAgc2kuZHdGbGFncyA9IFNUQVJURl9VU0VTVERIQU5ETEVTOworICAgIG9rID0gQ3JlYXRlUHJvY2Vzc1coTlVMTCwgY21kbGluZSwgTlVMTCwgTlVMTCwgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIDAsIE5VTEwsIE5VTEwsICZzaSwgJnBpKTsKKyAgICBpZiAoIW9rKQorICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJVbmFibGUgdG8gY3JlYXRlIHByb2Nlc3MgdXNpbmcgJyVzJyIsIGNtZGxpbmUpOworICAgIEFzc2lnblByb2Nlc3NUb0pvYk9iamVjdChqb2IsIHBpLmhQcm9jZXNzKTsKKyAgICBDbG9zZUhhbmRsZShwaS5oVGhyZWFkKTsKKyAgICBXYWl0Rm9yU2luZ2xlT2JqZWN0KHBpLmhQcm9jZXNzLCBJTkZJTklURSk7CisgICAgb2sgPSBHZXRFeGl0Q29kZVByb2Nlc3MocGkuaFByb2Nlc3MsICZyYyk7CisgICAgaWYgKCFvaykKKyAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwiRmFpbGVkIHRvIGdldCBleGl0IGNvZGUgb2YgcHJvY2VzcyIpOworICAgIGRlYnVnKEwiY2hpbGQgcHJvY2VzcyBleGl0IGNvZGU6ICVkXG4iLCByYyk7CisgICAgRXhpdFByb2Nlc3MocmMpOworfQorCitzdGF0aWMgdm9pZAoraW52b2tlX2NoaWxkKHdjaGFyX3QgKiBleGVjdXRhYmxlLCB3Y2hhcl90ICogc3VmZml4LCB3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICB3Y2hhcl90ICogY2hpbGRfY29tbWFuZDsKKyAgICBzaXplX3QgY2hpbGRfY29tbWFuZF9zaXplOworICAgIEJPT0wgbm9fc3VmZml4ID0gKHN1ZmZpeCA9PSBOVUxMKSB8fCAoKnN1ZmZpeCA9PSBMJ1wwJyk7CisgICAgQk9PTCBub19jbWRsaW5lID0gKCpjbWRsaW5lID09IEwnXDAnKTsKKworICAgIGlmIChub19zdWZmaXggJiYgbm9fY21kbGluZSkKKyAgICAgICAgcnVuX2NoaWxkKGV4ZWN1dGFibGUpOworICAgIGVsc2UgeworICAgICAgICBpZiAobm9fc3VmZml4KSB7CisgICAgICAgICAgICAvKiBhZGQgMiBmb3Igc3BhY2Ugc2VwYXJhdG9yICsgdGVybWluYXRpbmcgTlVMLiAqLworICAgICAgICAgICAgY2hpbGRfY29tbWFuZF9zaXplID0gd2NzbGVuKGV4ZWN1dGFibGUpICsgd2NzbGVuKGNtZGxpbmUpICsgMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8qIGFkZCAzIGZvciAyIHNwYWNlIHNlcGFyYXRvcnMgKyB0ZXJtaW5hdGluZyBOVUwuICovCisgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgPSB3Y3NsZW4oZXhlY3V0YWJsZSkgKyB3Y3NsZW4oc3VmZml4KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y3NsZW4oY21kbGluZSkgKyAzOworICAgICAgICB9CisgICAgICAgIGNoaWxkX2NvbW1hbmQgPSBjYWxsb2MoY2hpbGRfY29tbWFuZF9zaXplLCBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICBpZiAoY2hpbGRfY29tbWFuZCA9PSBOVUxMKQorICAgICAgICAgICAgZXJyb3IoUkNfQ1JFQVRFX1BST0NFU1MsIEwidW5hYmxlIHRvIGFsbG9jYXRlICVkIGJ5dGVzIGZvciBjaGlsZCBjb21tYW5kLiIsCisgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUpOworICAgICAgICBpZiAobm9fc3VmZml4KQorICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlLCBjbWRsaW5lKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgX3Nud3ByaW50Zl9zKGNoaWxkX2NvbW1hbmQsIGNoaWxkX2NvbW1hbmRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZF9jb21tYW5kX3NpemUgLSAxLCBMIiVzICVzICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlLCBzdWZmaXgsIGNtZGxpbmUpOworICAgICAgICBydW5fY2hpbGQoY2hpbGRfY29tbWFuZCk7CisgICAgICAgIGZyZWUoY2hpbGRfY29tbWFuZCk7CisgICAgfQorfQorCitzdGF0aWMgd2NoYXJfdCAqIGJ1aWx0aW5fdmlydHVhbF9wYXRocyBbXSA9IHsKKyAgICBMIi91c3IvYmluL2VudiBweXRob24iLAorICAgIEwiL3Vzci9iaW4vcHl0aG9uIiwKKyAgICBMIi91c3IvbG9jYWwvYmluL3B5dGhvbiIsCisgICAgTCJweXRob24iLAorICAgIE5VTEwKK307CisKKy8qIEZvciBub3csIGEgc3RhdGljIGFycmF5IG9mIGNvbW1hbmRzLiAqLworCisjZGVmaW5lIE1BWF9DT01NQU5EUyAxMDAKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHdjaGFyX3Qga2V5W01BWF9QQVRIXTsKKyAgICB3Y2hhcl90IHZhbHVlW01TR1NJWkVdOworfSBDT01NQU5EOworCitzdGF0aWMgQ09NTUFORCBjb21tYW5kc1tNQVhfQ09NTUFORFNdOworc3RhdGljIGludCBudW1fY29tbWFuZHMgPSAwOworCisjaWYgZGVmaW5lZChTS0lQX1BSRUZJWCkKKworc3RhdGljIHdjaGFyX3QgKiBidWlsdGluX3ByZWZpeGVzIFtdID0geworICAgIC8qIFRoZXNlIG11c3QgYmUgaW4gYW4gb3JkZXIgdGhhdCB0aGUgbG9uZ2VzdCBtYXRjaGVzIHNob3VsZCBiZSBmb3VuZCwKKyAgICAgKiBpLmUuIGlmIHRoZSBwcmVmaXggaXMgIi91c3IvYmluL2VudiAiLCBpdCBzaG91bGQgbWF0Y2ggdGhhdCBlbnRyeQorICAgICAqICpiZWZvcmUqIG1hdGNoaW5nICIvdXNyL2Jpbi8iLgorICAgICAqLworICAgIEwiL3Vzci9iaW4vZW52ICIsCisgICAgTCIvdXNyL2Jpbi8iLAorICAgIEwiL3Vzci9sb2NhbC9iaW4vIiwKKyAgICBOVUxMCit9OworCitzdGF0aWMgd2NoYXJfdCAqIHNraXBfcHJlZml4KHdjaGFyX3QgKiBuYW1lKQoreworICAgIHdjaGFyX3QgKiogcHAgPSBidWlsdGluX3ByZWZpeGVzOworICAgIHdjaGFyX3QgKiByZXN1bHQgPSBuYW1lOworICAgIHdjaGFyX3QgKiBwOworICAgIHNpemVfdCBuOworCisgICAgZm9yICg7IHAgPSAqcHA7IHBwKyspIHsKKyAgICAgICAgbiA9IHdjc2xlbihwKTsKKyAgICAgICAgaWYgKF93Y3NuaWNtcChwLCBuYW1lLCBuKSA9PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gbjsgICAvKiBza2lwIHRoZSBwcmVmaXggKi8KKyAgICAgICAgICAgIGlmIChwW24gLSAxXSA9PSBMJyAnKSAvKiBObyBlbXB0eSBzdHJpbmdzIGluIHRhYmxlLCBzbyBuID4gMSAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNraXBfd2hpdGVzcGFjZShyZXN1bHQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKKyNpZiBkZWZpbmVkKFNFQVJDSF9QQVRIKQorCitzdGF0aWMgQ09NTUFORCBwYXRoX2NvbW1hbmQ7CisKK3N0YXRpYyBDT01NQU5EICogZmluZF9vbl9wYXRoKHdjaGFyX3QgKiBuYW1lKQoreworICAgIHdjaGFyX3QgKiBwYXRoZXh0OworICAgIHNpemVfdCAgICB2YXJzaXplOworICAgIHdjaGFyX3QgKiBjb250ZXh0ID0gTlVMTDsKKyAgICB3Y2hhcl90ICogZXh0ZW5zaW9uOworICAgIENPTU1BTkQgKiByZXN1bHQgPSBOVUxMOworICAgIERXT1JEICAgICBsZW47CisgICAgZXJybm9fdCAgIHJjOworCisgICAgd2NzY3B5X3MocGF0aF9jb21tYW5kLmtleSwgTUFYX1BBVEgsIG5hbWUpOworICAgIGlmICh3Y3NjaHIobmFtZSwgTCcuJykgIT0gTlVMTCkgeworICAgICAgICAvKiBhc3N1bWUgaXQgaGFzIGFuIGV4dGVuc2lvbi4gKi8KKyAgICAgICAgbGVuID0gU2VhcmNoUGF0aFcoTlVMTCwgbmFtZSwgTlVMTCwgTVNHU0laRSwgcGF0aF9jb21tYW5kLnZhbHVlLCBOVUxMKTsKKyAgICAgICAgaWYgKGxlbikgeworICAgICAgICAgICAgcmVzdWx0ID0gJnBhdGhfY29tbWFuZDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgLyogTm8gZXh0ZW5zaW9uIC0gc2VhcmNoIHVzaW5nIHJlZ2lzdGVyZWQgZXh0ZW5zaW9ucy4gKi8KKyAgICAgICAgcmMgPSBfd2R1cGVudl9zKCZwYXRoZXh0LCAmdmFyc2l6ZSwgTCJQQVRIRVhUIik7CisgICAgICAgIGlmIChyYyA9PSAwKSB7CisgICAgICAgICAgICBleHRlbnNpb24gPSB3Y3N0b2tfcyhwYXRoZXh0LCBMIjsiLCAmY29udGV4dCk7CisgICAgICAgICAgICB3aGlsZSAoZXh0ZW5zaW9uKSB7CisgICAgICAgICAgICAgICAgbGVuID0gU2VhcmNoUGF0aFcoTlVMTCwgbmFtZSwgZXh0ZW5zaW9uLCBNU0dTSVpFLCBwYXRoX2NvbW1hbmQudmFsdWUsIE5VTEwpOworICAgICAgICAgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gJnBhdGhfY29tbWFuZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9IHdjc3Rva19zKE5VTEwsIEwiOyIsICZjb250ZXh0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyZWUocGF0aGV4dCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworI2VuZGlmCisKK3N0YXRpYyBDT01NQU5EICogZmluZF9jb21tYW5kKHdjaGFyX3QgKiBuYW1lKQoreworICAgIENPTU1BTkQgKiByZXN1bHQgPSBOVUxMOworICAgIENPTU1BTkQgKiBjcCA9IGNvbW1hbmRzOworICAgIGludCBpOworCisgICAgZm9yIChpID0gMDsgaSA8IG51bV9jb21tYW5kczsgaSsrLCBjcCsrKSB7CisgICAgICAgIGlmIChfd2NzaWNtcChjcC0+a2V5LCBuYW1lKSA9PSAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBjcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorI2lmIGRlZmluZWQoU0VBUkNIX1BBVEgpCisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXN1bHQgPSBmaW5kX29uX3BhdGgobmFtZSk7CisjZW5kaWYKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAordXBkYXRlX2NvbW1hbmQoQ09NTUFORCAqIGNwLCB3Y2hhcl90ICogbmFtZSwgd2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgd2NzbmNweV9zKGNwLT5rZXksIE1BWF9QQVRILCBuYW1lLCBfVFJVTkNBVEUpOworICAgIHdjc25jcHlfcyhjcC0+dmFsdWUsIE1TR1NJWkUsIGNtZGxpbmUsIF9UUlVOQ0FURSk7Cit9CisKK3N0YXRpYyB2b2lkCithZGRfY29tbWFuZCh3Y2hhcl90ICogbmFtZSwgd2NoYXJfdCAqIGNtZGxpbmUpCit7CisgICAgaWYgKG51bV9jb21tYW5kcyA+PSBNQVhfQ09NTUFORFMpIHsKKyAgICAgICAgZGVidWcoTCJjYW4ndCBhZGQgJXMgPSAnJXMnOiBubyByb29tXG4iLCBuYW1lLCBjbWRsaW5lKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIENPTU1BTkQgKiBjcCA9ICZjb21tYW5kc1tudW1fY29tbWFuZHMrK107CisKKyAgICAgICAgdXBkYXRlX2NvbW1hbmQoY3AsIG5hbWUsIGNtZGxpbmUpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK3JlYWRfY29uZmlnX2ZpbGUod2NoYXJfdCAqIGNvbmZpZ19wYXRoKQoreworICAgIHdjaGFyX3Qga2V5bmFtZXNbTVNHU0laRV07CisgICAgd2NoYXJfdCB2YWx1ZVtNU0dTSVpFXTsKKyAgICBEV09SRCByZWFkOworICAgIHdjaGFyX3QgKiBrZXk7CisgICAgQ09NTUFORCAqIGNwOworICAgIHdjaGFyX3QgKiBjbWRwOworCisgICAgcmVhZCA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImNvbW1hbmRzIiwgTlVMTCwgTlVMTCwga2V5bmFtZXMsIE1TR1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGF0aCk7CisgICAgaWYgKHJlYWQgPT0gTVNHU0laRSAtIDEpIHsKKyAgICAgICAgZGVidWcoTCJyZWFkX2NvbW1hbmRzOiAlczogbm90IGVub3VnaCBzcGFjZSBmb3IgbmFtZXNcbiIsIGNvbmZpZ19wYXRoKTsKKyAgICB9CisgICAga2V5ID0ga2V5bmFtZXM7CisgICAgd2hpbGUgKCprZXkpIHsKKyAgICAgICAgcmVhZCA9IEdldFByaXZhdGVQcm9maWxlU3RyaW5nVyhMImNvbW1hbmRzIiwga2V5LCBOVUxMLCB2YWx1ZSwgTVNHU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoKTsKKyAgICAgICAgaWYgKHJlYWQgPT0gTVNHU0laRSAtIDEpIHsKKyAgICAgICAgICAgIGRlYnVnKEwicmVhZF9jb21tYW5kczogJXM6IG5vdCBlbm91Z2ggc3BhY2UgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgY29uZmlnX3BhdGgsIGtleSk7CisgICAgICAgIH0KKyAgICAgICAgY21kcCA9IHNraXBfd2hpdGVzcGFjZSh2YWx1ZSk7CisgICAgICAgIGlmICgqY21kcCkgeworICAgICAgICAgICAgY3AgPSBmaW5kX2NvbW1hbmQoa2V5KTsKKyAgICAgICAgICAgIGlmIChjcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGFkZF9jb21tYW5kKGtleSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVwZGF0ZV9jb21tYW5kKGNwLCBrZXksIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBrZXkgKz0gd2NzbGVuKGtleSkgKyAxOworICAgIH0KK30KKworc3RhdGljIHZvaWQgcmVhZF9jb21tYW5kcygpCit7CisgICAgaWYgKGxhdW5jaGVyX2luaV9wYXRoWzBdKQorICAgICAgICByZWFkX2NvbmZpZ19maWxlKGxhdW5jaGVyX2luaV9wYXRoKTsKKyAgICBpZiAoYXBwZGF0YV9pbmlfcGF0aFswXSkKKyAgICAgICAgcmVhZF9jb25maWdfZmlsZShhcHBkYXRhX2luaV9wYXRoKTsKK30KKworc3RhdGljIEJPT0wKK3BhcnNlX3NoZWJhbmcod2NoYXJfdCAqIHNoZWJhbmdfbGluZSwgaW50IG5jaGFycywgd2NoYXJfdCAqKiBjb21tYW5kLAorICAgICAgICAgICAgICB3Y2hhcl90ICoqIHN1ZmZpeCkKK3sKKyAgICBCT09MIHJjID0gRkFMU0U7CisgICAgd2NoYXJfdCAqKiB2cHA7CisgICAgc2l6ZV90IHBsZW47CisgICAgd2NoYXJfdCAqIHA7CisgICAgd2NoYXJfdCB6YXBwZWQ7CisgICAgd2NoYXJfdCAqIGVuZHAgPSBzaGViYW5nX2xpbmUgKyBuY2hhcnMgLSAxOworICAgIENPTU1BTkQgKiBjcDsKKyAgICB3Y2hhcl90ICogc2tpcHBlZDsKKworICAgICpjb21tYW5kID0gTlVMTDsgICAgLyogZmFpbHVyZSByZXR1cm4gKi8KKyAgICAqc3VmZml4ID0gTlVMTDsKKworICAgIGlmICgoKnNoZWJhbmdfbGluZSsrID09IEwnIycpICYmICgqc2hlYmFuZ19saW5lKysgPT0gTCchJykpIHsKKyAgICAgICAgc2hlYmFuZ19saW5lID0gc2tpcF93aGl0ZXNwYWNlKHNoZWJhbmdfbGluZSk7CisgICAgICAgIGlmICgqc2hlYmFuZ19saW5lKSB7CisgICAgICAgICAgICAqY29tbWFuZCA9IHNoZWJhbmdfbGluZTsKKyAgICAgICAgICAgIGZvciAodnBwID0gYnVpbHRpbl92aXJ0dWFsX3BhdGhzOyAqdnBwOyArK3ZwcCkgeworICAgICAgICAgICAgICAgIHBsZW4gPSB3Y3NsZW4oKnZwcCk7CisgICAgICAgICAgICAgICAgaWYgKHdjc25jbXAoc2hlYmFuZ19saW5lLCAqdnBwLCBwbGVuKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJjID0gVFJVRTsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UgY2FuIGRvIHRoaXMgYmVjYXVzZSBhbGwgYnVpbHRpbiBjb21tYW5kcyBjb250YWluCisgICAgICAgICAgICAgICAgICAgICAqICJweXRob24iLgorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgKmNvbW1hbmQgPSB3Y3NzdHIoc2hlYmFuZ19saW5lLCBMInB5dGhvbiIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKnZwcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBOb3QgZm91bmQgaW4gYnVpbHRpbnMgLSBsb29rIGluIGN1c3RvbWlzZWQgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBXZSBjYW4ndCBwZXJtYW5lbnRseSBtb2RpZnkgdGhlIHNoZWJhbmcgbGluZSBpbiBjYXNlCisgICAgICAgICAgICAgICAgICogaXQncyBub3QgYSBjdXN0b21pc2VkIGNvbW1hbmQsIGJ1dCB3ZSBjYW4gdGVtcG9yYXJpbHkKKyAgICAgICAgICAgICAgICAgKiBzdGljayBhIE5VTCBhZnRlciB0aGUgY29tbWFuZCB3aGlsZSBzZWFyY2hpbmcgZm9yIGl0LAorICAgICAgICAgICAgICAgICAqIHRoZW4gcHV0IGJhY2sgdGhlIGNoYXIgd2UgemFwcGVkLgorICAgICAgICAgICAgICAgICAqLworI2lmIGRlZmluZWQoU0tJUF9QUkVGSVgpCisgICAgICAgICAgICAgICAgc2tpcHBlZCA9IHNraXBfcHJlZml4KHNoZWJhbmdfbGluZSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHNraXBwZWQgPSBzaGViYW5nX2xpbmU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBwID0gd2NzcGJyayhza2lwcGVkLCBMIiBcdFxyXG4iKTsKKyAgICAgICAgICAgICAgICBpZiAocCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIHphcHBlZCA9ICpwOworICAgICAgICAgICAgICAgICAgICAqcCA9IEwnXDAnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjcCA9IGZpbmRfY29tbWFuZChza2lwcGVkKTsKKyAgICAgICAgICAgICAgICBpZiAocCAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAqcCA9IHphcHBlZDsKKyAgICAgICAgICAgICAgICBpZiAoY3AgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAqY29tbWFuZCA9IGNwLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpzdWZmaXggPSBza2lwX3doaXRlc3BhY2UocCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogcmVtb3ZlIHRyYWlsaW5nIHdoaXRlc3BhY2UgKi8KKyAgICAgICAgICAgIHdoaWxlICgoZW5kcCA+IHNoZWJhbmdfbGluZSkgJiYgaXNzcGFjZSgqZW5kcCkpCisgICAgICAgICAgICAgICAgLS1lbmRwOworICAgICAgICAgICAgaWYgKGVuZHAgPiBzaGViYW5nX2xpbmUpCisgICAgICAgICAgICAgICAgZW5kcFsxXSA9IEwnXDAnOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworLyogI2RlZmluZSBDUF9VVEY4ICAgICAgICAgICAgIDY1MDAxIGRlZmluZWQgaW4gd2lubmxzLmggKi8KKyNkZWZpbmUgQ1BfVVRGMTZMRSAgICAgICAgICAxMjAwCisjZGVmaW5lIENQX1VURjE2QkUgICAgICAgICAgMTIwMQorI2RlZmluZSBDUF9VVEYzMkxFICAgICAgICAgIDEyMDAwCisjZGVmaW5lIENQX1VURjMyQkUgICAgICAgICAgMTIwMDEKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIGludCBsZW5ndGg7CisgICAgY2hhciBzZXF1ZW5jZVs0XTsKKyAgICBVSU5UIGNvZGVfcGFnZTsKK30gQk9NOworCisvKgorICogU3RyaWN0bHksIHdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIFVURi0xNiBhbmYgVVRGLTMyLCBzaW5jZSBQeXRob24gaXRzZWxmCisgKiBkb2Vzbid0LiBOZXZlciBtaW5kLCBvbmUgZGF5IGl0IG1pZ2h0IC0gdGhlcmUncyBubyBoYXJtIGxlYXZpbmcgaXQgaW4uCisgKi8KK3N0YXRpYyBCT00gQk9Nc1tdID0geworICAgIHsgMywgeyAweEVGLCAweEJCLCAweEJGIH0sIENQX1VURjggfSwgICAgICAgICAgIC8qIFVURi04IC0ga2VlcCBmaXJzdCAqLworICAgIHsgMiwgeyAweEZGLCAweEZFIH0sIENQX1VURjE2TEUgfSwgICAgICAgICAgICAgIC8qIFVURi0xNkxFICovCisgICAgeyAyLCB7IDB4RkUsIDB4RkYgfSwgQ1BfVVRGMTZCRSB9LCAgICAgICAgICAgICAgLyogVVRGLTE2QkUgKi8KKyAgICB7IDQsIHsgMHhGRiwgMHhGRSwgMHgwMCwgMHgwMCB9LCBDUF9VVEYzMkxFIH0sICAvKiBVVEYtMzJMRSAqLworICAgIHsgNCwgeyAweDAwLCAweDAwLCAweEZFLCAweEZGIH0sIENQX1VURjMyQkUgfSwgIC8qIFVURi0zMkJFICovCisgICAgeyAwIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBCT00gKgorZmluZF9CT00oY2hhciAqIGJ1ZmZlcikKK3sKKy8qCisgKiBMb29rIGZvciBhIEJPTSBpbiB0aGUgaW5wdXQgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlCisgKiBjb3JyZXNwb25kaW5nIHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBub3QgZm91bmQuCisgKi8KKyAgICBCT00gKiByZXN1bHQgPSBOVUxMOworICAgIEJPTSAqYm9tOworCisgICAgZm9yIChib20gPSBCT01zOyBib20tPmxlbmd0aDsgYm9tKyspIHsKKyAgICAgICAgaWYgKHN0cm5jbXAoYm9tLT5zZXF1ZW5jZSwgYnVmZmVyLCBib20tPmxlbmd0aCkgPT0gMCkgeworICAgICAgICAgICAgcmVzdWx0ID0gYm9tOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGNoYXIgKgorZmluZF90ZXJtaW5hdG9yKGNoYXIgKiBidWZmZXIsIGludCBsZW4sIEJPTSAqYm9tKQoreworICAgIGNoYXIgKiByZXN1bHQgPSBOVUxMOworICAgIGNoYXIgKiBlbmQgPSBidWZmZXIgKyBsZW47CisgICAgY2hhciAgKiBwOworICAgIGNoYXIgYzsKKyAgICBpbnQgY3A7CisKKyAgICBmb3IgKHAgPSBidWZmZXI7IHAgPCBlbmQ7IHArKykgeworICAgICAgICBjID0gKnA7CisgICAgICAgIGlmIChjID09ICdccicpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoYyA9PSAnXG4nKSB7CisgICAgICAgICAgICByZXN1bHQgPSBwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIGNwID0gYm9tLT5jb2RlX3BhZ2U7CisKKyAgICAgICAgLyogYWRqdXN0bWVudHMgdG8gaW5jbHVkZSBhbGwgYnl0ZXMgb2YgdGhlIGNoYXIgKi8KKyAgICAgICAgLyogbm8gYWRqdXN0bWVudCBuZWVkZWQgZm9yIFVURi04IG9yIGJpZyBlbmRpYW4gKi8KKyAgICAgICAgaWYgKGNwID09IENQX1VURjE2TEUpCisgICAgICAgICAgICArK3Jlc3VsdDsKKyAgICAgICAgZWxzZSBpZiAoY3AgPT0gQ1BfVVRGMzJMRSkKKyAgICAgICAgICAgIHJlc3VsdCArPSAzOworICAgICAgICArK3Jlc3VsdDsgLyogcG9pbnQganVzdCBwYXN0IHRlcm1pbmF0b3IgKi8KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEJPT0wKK3ZhbGlkYXRlX3ZlcnNpb24od2NoYXJfdCAqIHApCit7CisgICAgQk9PTCByZXN1bHQgPSBUUlVFOworCisgICAgaWYgKCFpc2RpZ2l0KCpwKSkgICAgICAgICAgICAgICAvKiBleHBlY3QgbWFqb3IgdmVyc2lvbiAqLworICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICBlbHNlIGlmICgqKytwKSB7ICAgICAgICAgICAgICAgIC8qIG1vcmUgdG8gZG8gKi8KKyAgICAgICAgaWYgKCpwICE9IEwnLicpICAgICAgICAgICAgIC8qIG1ham9yL21pbm9yIHNlcGFyYXRvciAqLworICAgICAgICAgICAgcmVzdWx0ID0gRkFMU0U7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKytwOworICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpwKSkgICAgICAgLyogZXhwZWN0IG1pbm9yIHZlcnNpb24gKi8KKyAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICBpZiAoKnApIHsgICAgICAgICAgIC8qIG1vcmUgdG8gZG8gKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKCpwICE9IEwnLScpCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCpwICE9ICczJykgJiYgKCorK3AgIT0gJzInKSAmJiAhKisrcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdW5zaWduZWQgc2hvcnQgbWluOworICAgIHVuc2lnbmVkIHNob3J0IG1heDsKKyAgICB3Y2hhcl90IHZlcnNpb25bTUFYX1ZFUlNJT05fU0laRV07Cit9IFBZQ19NQUdJQzsKKworc3RhdGljIFBZQ19NQUdJQyBtYWdpY192YWx1ZXNbXSA9IHsKKyAgICB7IDB4YzY4NywgMHhjNjg3LCBMIjIuMCIgfSwKKyAgICB7IDB4ZWIyYSwgMHhlYjJhLCBMIjIuMSIgfSwKKyAgICB7IDB4ZWQyZCwgMHhlZDJkLCBMIjIuMiIgfSwKKyAgICB7IDB4ZjIzYiwgMHhmMjQ1LCBMIjIuMyIgfSwKKyAgICB7IDB4ZjI1OSwgMHhmMjZkLCBMIjIuNCIgfSwKKyAgICB7IDB4ZjI3NywgMHhmMmIzLCBMIjIuNSIgfSwKKyAgICB7IDB4ZjJjNywgMHhmMmQxLCBMIjIuNiIgfSwKKyAgICB7IDB4ZjJkYiwgMHhmMzAzLCBMIjIuNyIgfSwKKyAgICB7IDB4MGJiOCwgMHgwYzNiLCBMIjMuMCIgfSwKKyAgICB7IDB4MGM0NSwgMHgwYzRmLCBMIjMuMSIgfSwKKyAgICB7IDB4MGM1OCwgMHgwYzZjLCBMIjMuMiIgfSwKKyAgICB7IDB4MGM3NiwgMHgwYzc2LCBMIjMuMyIgfSwKKyAgICB7IDAgfQorfTsKKworc3RhdGljIElOU1RBTExFRF9QWVRIT04gKgorZmluZF9ieV9tYWdpYyh1bnNpZ25lZCBzaG9ydCBtYWdpYykKK3sKKyAgICBJTlNUQUxMRURfUFlUSE9OICogcmVzdWx0ID0gTlVMTDsKKyAgICBQWUNfTUFHSUMgKiBtcDsKKworICAgIGZvciAobXAgPSBtYWdpY192YWx1ZXM7IG1wLT5taW47IG1wKyspIHsKKyAgICAgICAgaWYgKChtYWdpYyA+PSBtcC0+bWluKSAmJiAobWFnaWMgPD0gbXAtPm1heCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24pOworICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkCittYXliZV9oYW5kbGVfc2hlYmFuZyh3Y2hhcl90ICoqIGFyZ3YsIHdjaGFyX3QgKiBjbWRsaW5lKQoreworLyoKKyAqIExvb2sgZm9yIGEgc2hlYmFuZyBsaW5lIGluIHRoZSBmaXJzdCBhcmd1bWVudC4gIElmIGZvdW5kCisgKiBhbmQgd2Ugc3Bhd24gYSBjaGlsZCBwcm9jZXNzLCB0aGlzIG5ldmVyIHJldHVybnMuICBJZiBpdAorICogZG9lcyByZXR1cm4gdGhlbiB3ZSBwcm9jZXNzIHRoZSBhcmdzICJub3JtYWxseSIuCisgKgorICogYXJndlswXSBtaWdodCBiZSBhIGZpbGVuYW1lIHdpdGggYSBzaGViYW5nLgorICovCisgICAgRklMRSAqIGZwOworICAgIGVycm5vX3QgcmMgPSBfd2ZvcGVuX3MoJmZwLCAqYXJndiwgTCJyYiIpOworICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW0JVRlNJWkVdOworICAgIHdjaGFyX3Qgc2hlYmFuZ19saW5lW0JVRlNJWkUgKyAxXTsKKyAgICBzaXplX3QgcmVhZDsKKyAgICBjaGFyICpwOworICAgIGNoYXIgKiBzdGFydDsKKyAgICBjaGFyICogc2hlYmFuZ19hbGlhcyA9IChjaGFyICopIHNoZWJhbmdfbGluZTsKKyAgICBCT00qIGJvbTsKKyAgICBpbnQgaSwgaiwgbmNoYXJzID0gMDsKKyAgICBpbnQgaGVhZGVyX2xlbjsKKyAgICBCT09MIGlzX3ZpcnQ7CisgICAgd2NoYXJfdCAqIGNvbW1hbmQ7CisgICAgd2NoYXJfdCAqIHN1ZmZpeDsKKyAgICBJTlNUQUxMRURfUFlUSE9OICogaXA7CisKKyAgICBpZiAocmMgPT0gMCkgeworICAgICAgICByZWFkID0gZnJlYWQoYnVmZmVyLCBzaXplb2YoY2hhciksIEJVRlNJWkUsIGZwKTsKKyAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogcmVhZCAlZCBieXRlc1xuIiwgcmVhZCk7CisgICAgICAgIGZjbG9zZShmcCk7CisKKyAgICAgICAgaWYgKChyZWFkID49IDQpICYmIChidWZmZXJbM10gPT0gJ1xuJykgJiYgKGJ1ZmZlclsyXSA9PSAnXHInKSkgeworICAgICAgICAgICAgaXAgPSBmaW5kX2J5X21hZ2ljKChidWZmZXJbMV0gPDwgOCB8IGJ1ZmZlclswXSkgJiAweEZGRkYpOworICAgICAgICAgICAgaWYgKGlwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZyhMInNjcmlwdCBmaWxlIGlzIGNvbXBpbGVkIGFnYWluc3QgUHl0aG9uICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgIGlwLT52ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoaXAtPmV4ZWN1dGFibGUsIE5VTEwsIGNtZGxpbmUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIExvb2sgZm9yIEJPTSAqLworICAgICAgICBib20gPSBmaW5kX0JPTShidWZmZXIpOworICAgICAgICBpZiAoYm9tID09IE5VTEwpIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gYnVmZmVyOworICAgICAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogQk9NIG5vdCBmb3VuZCwgdXNpbmcgVVRGLThcbiIpOworICAgICAgICAgICAgYm9tID0gQk9NczsgLyogcG9pbnRzIHRvIFVURi04IGVudHJ5IC0gdGhlIGRlZmF1bHQgKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IEJPTSBmb3VuZCwgY29kZSBwYWdlICVkXG4iLAorICAgICAgICAgICAgICAgICAgYm9tLT5jb2RlX3BhZ2UpOworICAgICAgICAgICAgc3RhcnQgPSAmYnVmZmVyW2JvbS0+bGVuZ3RoXTsKKyAgICAgICAgfQorICAgICAgICBwID0gZmluZF90ZXJtaW5hdG9yKHN0YXJ0LCBCVUZTSVpFLCBib20pOworICAgICAgICAvKgorICAgICAgICAgKiBJZiBubyBDUiBvciBMRiB3YXMgZm91bmQgaW4gdGhlIGhlYWRpbmcsCisgICAgICAgICAqIHdlIGFzc3VtZSBpdCdzIG5vdCBhIHNoZWJhbmcgZmlsZS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChwID09IE5VTEwpIHsKKyAgICAgICAgICAgIGRlYnVnKEwibWF5YmVfaGFuZGxlX3NoZWJhbmc6IE5vIGxpbmUgdGVybWluYXRvciBmb3VuZFxuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRm91bmQgbGluZSB0ZXJtaW5hdG9yIC0gcGFyc2UgdGhlIHNoZWJhbmcuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogU3RyaWN0bHksIHdlIGRvbid0IG5lZWQgdG8gaGFuZGxlIFVURi0xNiBhbmYgVVRGLTMyLAorICAgICAgICAgICAgICogc2luY2UgUHl0aG9uIGl0c2VsZiBkb2Vzbid0LgorICAgICAgICAgICAgICogTmV2ZXIgbWluZCwgb25lIGRheSBpdCBtaWdodC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaGVhZGVyX2xlbiA9IChpbnQpIChwIC0gc3RhcnQpOworICAgICAgICAgICAgc3dpdGNoKGJvbS0+Y29kZV9wYWdlKSB7CisgICAgICAgICAgICBjYXNlIENQX1VURjg6CisgICAgICAgICAgICAgICAgbmNoYXJzID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihib20tPmNvZGVfcGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgaGVhZGVyX2xlbiwgc2hlYmFuZ19saW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlVGU0laRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENQX1VURjE2QkU6CisgICAgICAgICAgICAgICAgaWYgKGhlYWRlcl9sZW4gJSAyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJtYXliZV9oYW5kbGVfc2hlYmFuZzogVVRGLTE2QkUsIGJ1dCBhbiBvZGQgbnVtYmVyIFwKK29mIGJ5dGVzOiAlZFxuIiwgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gaGVhZGVyX2xlbjsgaSA+IDA7IGkgLT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tpIC0gMV0gPSBzdGFydFtpIC0gMl07CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2kgLSAyXSA9IHN0YXJ0W2kgLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuY2hhcnMgPSBoZWFkZXJfbGVuIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGMTZMRToKKyAgICAgICAgICAgICAgICBpZiAoKGhlYWRlcl9sZW4gJSAyKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiVVRGLTE2TEUsIGJ1dCBhbiBvZGQgbnVtYmVyIG9mIGJ5dGVzOiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogbm8gYWN0dWFsIGNvbnZlcnNpb24gbmVlZGVkLiAqLworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc2hlYmFuZ19saW5lLCBzdGFydCwgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIG5jaGFycyA9IGhlYWRlcl9sZW4gLyBzaXplb2Yod2NoYXJfdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDUF9VVEYzMkJFOgorICAgICAgICAgICAgICAgIGlmIChoZWFkZXJfbGVuICUgNCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRlYnVnKEwiVVRGLTMyQkUsIGJ1dCBub3QgZGl2aXNpYmxlIGJ5IDQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJfbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgLyogbmNoYXJzID0gMDsgTm90IG5lZWRlZCAtIGluaXRpYWxpc2VkIHRvIDAuICovCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBoZWFkZXJfbGVuLCBqID0gaGVhZGVyX2xlbiAvIDI7IGkgPiAwOyBpIC09IDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tqIC0gMV0gPSBzdGFydFtpIC0gMl07CisgICAgICAgICAgICAgICAgICAgICAgICBzaGViYW5nX2FsaWFzW2ogLSAyXSA9IHN0YXJ0W2kgLSAxXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuY2hhcnMgPSBoZWFkZXJfbGVuIC8gc2l6ZW9mKHdjaGFyX3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ1BfVVRGMzJMRToKKyAgICAgICAgICAgICAgICBpZiAoaGVhZGVyX2xlbiAlIDQgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMIlVURi0zMkxFLCBidXQgbm90IGRpdmlzaWJsZSBieSA0OiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX2xlbik7CisgICAgICAgICAgICAgICAgICAgIC8qIG5jaGFycyA9IDA7IE5vdCBuZWVkZWQgLSBpbml0aWFsaXNlZCB0byAwLiAqLworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gaGVhZGVyX2xlbiwgaiA9IGhlYWRlcl9sZW4gLyAyOyBpID4gMDsgaSAtPSA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqIC09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoZWJhbmdfYWxpYXNbaiAtIDFdID0gc3RhcnRbaSAtIDNdOworICAgICAgICAgICAgICAgICAgICAgICAgc2hlYmFuZ19hbGlhc1tqIC0gMl0gPSBzdGFydFtpIC0gNF07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbmNoYXJzID0gaGVhZGVyX2xlbiAvIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmNoYXJzID4gMCkgeworICAgICAgICAgICAgICAgIHNoZWJhbmdfbGluZVstLW5jaGFyc10gPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICBpc192aXJ0ID0gcGFyc2Vfc2hlYmFuZyhzaGViYW5nX2xpbmUsIG5jaGFycywgJmNvbW1hbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1ZmZpeCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZyhMInBhcnNlX3NoZWJhbmc6IGZvdW5kIGNvbW1hbmQ6ICVzXG4iLCBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc192aXJ0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnZva2VfY2hpbGQoY29tbWFuZCwgc3VmZml4LCBjbWRsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHdjc2Nocihjb21tYW5kLCBMJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWZmaXggIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdWZmaXgrKyA9IEwnXDAnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHNraXBfd2hpdGVzcGFjZShzdWZmaXgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdjc25jbXAoY29tbWFuZCwgTCJweXRob24iLCA2KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIlVua25vd24gdmlydHVhbCBcCitwYXRoICclcyciLCBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgKz0gNjsgICAvKiBza2lwIHBhc3QgInB5dGhvbiIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgqY29tbWFuZCAmJiAhdmFsaWRhdGVfdmVyc2lvbihjb21tYW5kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcihSQ19CQURfVklSVFVBTF9QQVRILCBMIkludmFsaWQgdmVyc2lvbiBcCitzcGVjaWZpY2F0aW9uOiAnJXMnLlxuSW4gdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNjcmlwdCwgJ3B5dGhvbicgbmVlZHMgdG8gYmUgXAorZm9sbG93ZWQgYnkgYSB2YWxpZCB2ZXJzaW9uIHNwZWNpZmllci5cblBsZWFzZSBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpOworICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9ETyBjb3VsZCBjYWxsIHZhbGlkYXRlX3ZlcnNpb24oY29tbWFuZCkgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIlJlcXVlc3RlZCBQeXRob24gdmVyc2lvbiBcCisoJXMpIGlzIG5vdCBpbnN0YWxsZWQiLCBjb21tYW5kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgc3VmZml4LCBjbWRsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHdjaGFyX3QgKgorc2tpcF9tZSh3Y2hhcl90ICogY21kbGluZSkKK3sKKyAgICBCT09MIHF1b3RlZDsKKyAgICB3Y2hhcl90IGM7CisgICAgd2NoYXJfdCAqIHJlc3VsdCA9IGNtZGxpbmU7CisKKyAgICBxdW90ZWQgPSBjbWRsaW5lWzBdID09IEwnXCInOworICAgIGlmICghcXVvdGVkKQorICAgICAgICBjID0gTCcgJzsKKyAgICBlbHNlIHsKKyAgICAgICAgYyA9IEwnXCInOworICAgICAgICArK3Jlc3VsdDsKKyAgICB9CisgICAgcmVzdWx0ID0gd2NzY2hyKHJlc3VsdCwgYyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSAvKiB3aGVuLCBmb3IgZXhhbXBsZSwganVzdCBleGUgbmFtZSBvbiBjb21tYW5kIGxpbmUgKi8KKyAgICAgICAgcmVzdWx0ID0gTCIiOworICAgIGVsc2UgeworICAgICAgICArK3Jlc3VsdDsgLyogc2tpcCBwYXN0IHNwYWNlIG9yIGNsb3NpbmcgcXVvdGUgKi8KKyAgICAgICAgcmVzdWx0ID0gc2tpcF93aGl0ZXNwYWNlKHJlc3VsdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBEV09SRCB2ZXJzaW9uX2hpZ2ggPSAwOworc3RhdGljIERXT1JEIHZlcnNpb25fbG93ID0gMDsKKworc3RhdGljIHZvaWQKK2dldF92ZXJzaW9uX2luZm8od2NoYXJfdCAqIHZlcnNpb25fdGV4dCwgc2l6ZV90IHNpemUpCit7CisgICAgV09SRCBtYWosIG1pbiwgcmVsLCBibGQ7CisKKyAgICBpZiAoIXZlcnNpb25faGlnaCAmJiAhdmVyc2lvbl9sb3cpCisgICAgICAgIHdjc25jcHlfcyh2ZXJzaW9uX3RleHQsIHNpemUsIEwiMC4xIiwgX1RSVU5DQVRFKTsgICAvKiBmYWxsYmFjayAqLworICAgIGVsc2UgeworICAgICAgICBtYWogPSBISVdPUkQodmVyc2lvbl9oaWdoKTsKKyAgICAgICAgbWluID0gTE9XT1JEKHZlcnNpb25faGlnaCk7CisgICAgICAgIHJlbCA9IEhJV09SRCh2ZXJzaW9uX2xvdyk7CisgICAgICAgIGJsZCA9IExPV09SRCh2ZXJzaW9uX2xvdyk7CisgICAgICAgIF9zbndwcmludGZfcyh2ZXJzaW9uX3RleHQsIHNpemUsIF9UUlVOQ0FURSwgTCIlZC4lZC4lZC4lZCIsIG1haiwKKyAgICAgICAgICAgICAgICAgICAgIG1pbiwgcmVsLCBibGQpOworICAgIH0KK30KKworc3RhdGljIGludAorcHJvY2VzcyhpbnQgYXJnYywgd2NoYXJfdCAqKiBhcmd2KQoreworICAgIHdjaGFyX3QgKiB3cDsKKyAgICB3Y2hhcl90ICogY29tbWFuZDsKKyAgICB3Y2hhcl90ICogcDsKKyAgICBpbnQgcmMgPSAwOworICAgIHNpemVfdCBwbGVuOworICAgIElOU1RBTExFRF9QWVRIT04gKiBpcDsKKyAgICBCT09MIHZhbGlkOworICAgIERXT1JEIHNpemUsIGF0dHJzOworICAgIEhSRVNVTFQgaHI7CisgICAgd2NoYXJfdCBtZXNzYWdlW01TR1NJWkVdOworICAgIHdjaGFyX3QgdmVyc2lvbl90ZXh0IFtNQVhfUEFUSF07CisgICAgdm9pZCAqIHZlcnNpb25fZGF0YTsKKyAgICBWU19GSVhFREZJTEVJTkZPICogZmlsZV9pbmZvOworICAgIFVJTlQgYmxvY2tfc2l6ZTsKKworICAgIHdwID0gZ2V0X2VudihMIlBZTEFVTkNIX0RFQlVHIik7CisgICAgaWYgKCh3cCAhPSBOVUxMKSAmJiAoKndwICE9IEwnXDAnKSkKKyAgICAgICAgbG9nX2ZwID0gc3RkZXJyOworCisjaWYgZGVmaW5lZChfTV9YNjQpCisgICAgZGVidWcoTCJsYXVuY2hlciBidWlsZDogNjRiaXRcbiIpOworI2Vsc2UKKyAgICBkZWJ1ZyhMImxhdW5jaGVyIGJ1aWxkOiAzMmJpdFxuIik7CisjZW5kaWYKKyNpZiBkZWZpbmVkKF9XSU5ET1dTKQorICAgIGRlYnVnKEwibGF1bmNoZXIgZXhlY3V0YWJsZTogV2luZG93c1xuIik7CisjZWxzZQorICAgIGRlYnVnKEwibGF1bmNoZXIgZXhlY3V0YWJsZTogQ29uc29sZVxuIik7CisjZW5kaWYKKyAgICAvKiBHZXQgdGhlIGxvY2FsIGFwcGRhdGEgZm9sZGVyIChub24tcm9hbWluZykgKi8KKyAgICBociA9IFNIR2V0Rm9sZGVyUGF0aFcoTlVMTCwgQ1NJRExfTE9DQUxfQVBQREFUQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgaWYgKGhyICE9IFNfT0spIHsKKyAgICAgICAgZGVidWcoTCJTSEdldEZvbGRlclBhdGggZmFpbGVkOiAlWFxuIiwgaHIpOworICAgICAgICBhcHBkYXRhX2luaV9wYXRoWzBdID0gTCdcMCc7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwbGVuID0gd2NzbGVuKGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICBwID0gJmFwcGRhdGFfaW5pX3BhdGhbcGxlbl07CisgICAgICAgIHdjc25jcHlfcyhwLCBNQVhfUEFUSCAtIHBsZW4sIEwiXFxweS5pbmkiLCBfVFJVTkNBVEUpOworICAgICAgICBhdHRycyA9IEdldEZpbGVBdHRyaWJ1dGVzVyhhcHBkYXRhX2luaV9wYXRoKTsKKyAgICAgICAgaWYgKGF0dHJzID09IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSB7CisgICAgICAgICAgICBkZWJ1ZyhMIkZpbGUgJyVzJyBub24tZXhpc3RlbnRcbiIsIGFwcGRhdGFfaW5pX3BhdGgpOworICAgICAgICAgICAgYXBwZGF0YV9pbmlfcGF0aFswXSA9IEwnXDAnOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVidWcoTCJVc2luZyBsb2NhbCBjb25maWd1cmF0aW9uIGZpbGUgJyVzJ1xuIiwgYXBwZGF0YV9pbmlfcGF0aCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcGxlbiA9IEdldE1vZHVsZUZpbGVOYW1lVyhOVUxMLCBsYXVuY2hlcl9pbmlfcGF0aCwgTUFYX1BBVEgpOworICAgIHNpemUgPSBHZXRGaWxlVmVyc2lvbkluZm9TaXplVyhsYXVuY2hlcl9pbmlfcGF0aCwgJnNpemUpOworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgd2luZXJyb3IoR2V0TGFzdEVycm9yKCksIG1lc3NhZ2UsIE1TR1NJWkUpOworICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mb1NpemUgZmFpbGVkOiAlc1xuIiwgbWVzc2FnZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2ZXJzaW9uX2RhdGEgPSBtYWxsb2Moc2l6ZSk7CisgICAgICAgIGlmICh2ZXJzaW9uX2RhdGEpIHsKKyAgICAgICAgICAgIHZhbGlkID0gR2V0RmlsZVZlcnNpb25JbmZvVyhsYXVuY2hlcl9pbmlfcGF0aCwgMCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uX2RhdGEpOworICAgICAgICAgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgICAgICAgICBkZWJ1ZyhMIkdldEZpbGVWZXJzaW9uSW5mbyBmYWlsZWQ6ICVYXG4iLCBHZXRMYXN0RXJyb3IoKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YWxpZCA9IFZlclF1ZXJ5VmFsdWVXKHZlcnNpb25fZGF0YSwgTCJcXCIsICZmaWxlX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYmxvY2tfc2l6ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWxpZCkKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoTCJWZXJRdWVyeVZhbHVlIGZhaWxlZDogJVhcbiIsIEdldExhc3RFcnJvcigpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbl9oaWdoID0gZmlsZV9pbmZvLT5kd0ZpbGVWZXJzaW9uTVM7CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb25fbG93ID0gZmlsZV9pbmZvLT5kd0ZpbGVWZXJzaW9uTFM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZSh2ZXJzaW9uX2RhdGEpOworICAgICAgICB9CisgICAgfQorICAgIHAgPSB3Y3NyY2hyKGxhdW5jaGVyX2luaV9wYXRoLCBMJ1xcJyk7CisgICAgaWYgKHAgPT0gTlVMTCkgeworICAgICAgICBkZWJ1ZyhMIkdldE1vZHVsZUZpbGVOYW1lVyByZXR1cm5lZCB2YWx1ZSBoYXMgbm8gYmFja3NsYXNoOiAlc1xuIiwKKyAgICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICBsYXVuY2hlcl9pbmlfcGF0aFswXSA9IEwnXDAnOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgd2NzbmNweV9zKHAsIE1BWF9QQVRIIC0gKHAgLSBsYXVuY2hlcl9pbmlfcGF0aCksIEwiXFxweS5pbmkiLAorICAgICAgICAgICAgICAgICAgX1RSVU5DQVRFKTsKKyAgICAgICAgYXR0cnMgPSBHZXRGaWxlQXR0cmlidXRlc1cobGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICBpZiAoYXR0cnMgPT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKKyAgICAgICAgICAgIGRlYnVnKEwiRmlsZSAnJXMnIG5vbi1leGlzdGVudFxuIiwgbGF1bmNoZXJfaW5pX3BhdGgpOworICAgICAgICAgICAgbGF1bmNoZXJfaW5pX3BhdGhbMF0gPSBMJ1wwJzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRlYnVnKEwiVXNpbmcgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gZmlsZSAnJXMnXG4iLCBsYXVuY2hlcl9pbmlfcGF0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb21tYW5kID0gc2tpcF9tZShHZXRDb21tYW5kTGluZVcoKSk7CisgICAgZGVidWcoTCJDYWxsZWQgd2l0aCBjb21tYW5kIGxpbmU6ICVzIiwgY29tbWFuZCk7CisgICAgaWYgKGFyZ2MgPD0gMSkgeworICAgICAgICB2YWxpZCA9IEZBTFNFOworICAgICAgICBwID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHAgPSBhcmd2WzFdOworICAgICAgICBwbGVuID0gd2NzbGVuKHApOworICAgICAgICBpZiAocFswXSAhPSBMJy0nKSB7CisgICAgICAgICAgICByZWFkX2NvbW1hbmRzKCk7CisgICAgICAgICAgICBtYXliZV9oYW5kbGVfc2hlYmFuZygmYXJndlsxXSwgY29tbWFuZCk7CisgICAgICAgIH0KKyAgICAgICAgLyogTm8gZmlsZSB3aXRoIHNoZWJhbmcsIG9yIGFuIHVucmVjb2duaXNlZCBzaGViYW5nLgorICAgICAgICAgKiBJcyB0aGUgZmlyc3QgYXJnIGEgc3BlY2lhbCB2ZXJzaW9uIHF1YWxpZmllcj8KKyAgICAgICAgICovCisgICAgICAgIHZhbGlkID0gKCpwID09IEwnLScpICYmIHZhbGlkYXRlX3ZlcnNpb24oJnBbMV0pOworICAgICAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbigmcFsxXSk7CisgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uICglcykgbm90IFwKK2luc3RhbGxlZCIsICZwWzFdKTsKKyAgICAgICAgICAgIGNvbW1hbmQgKz0gd2NzbGVuKHApOworICAgICAgICAgICAgY29tbWFuZCA9IHNraXBfd2hpdGVzcGFjZShjb21tYW5kKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXZhbGlkKSB7CisgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIpOworICAgICAgICBpZiAoaXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJDYW4ndCBmaW5kIGEgZGVmYXVsdCBQeXRob24uIik7CisgICAgICAgIGlmICgoYXJnYyA9PSAyKSAmJiAoIV93Y3NpY21wKHAsIEwiLWgiKSB8fCAhX3djc2ljbXAocCwgTCItLWhlbHAiKSkpIHsKKyNpZiBkZWZpbmVkKF9NX1g2NCkKKyAgICAgICAgICAgIEJPT0wgY2FuRG82NGJpdCA9IFRSVUU7CisjZWxzZQorICAgIC8vIElmIHdlIGFyZSBhIDMyYml0IHByb2Nlc3Mgb24gYSA2NGJpdCBXaW5kb3dzLCBmaXJzdCBoaXQgdGhlIDY0Yml0IGtleXMuCisgICAgICAgICAgICBCT09MIGNhbkRvNjRiaXQgPSBGQUxTRTsKKyAgICAgICAgICAgIElzV293NjRQcm9jZXNzKEdldEN1cnJlbnRQcm9jZXNzKCksICZjYW5EbzY0Yml0KTsKKyNlbmRpZgorCisgICAgICAgICAgICBnZXRfdmVyc2lvbl9pbmZvKHZlcnNpb25fdGV4dCwgTUFYX1BBVEgpOworICAgICAgICAgICAgZndwcmludGYoc3Rkb3V0LCBMIlwKK1B5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyBWZXJzaW9uICVzXG5cbiIsIHZlcnNpb25fdGV4dCk7CisgICAgICAgICAgICBmd3ByaW50ZihzdGRvdXQsIEwiXAordXNhZ2U6ICVzIFsgbGF1bmNoZXItYXJndW1lbnRzIF0gc2NyaXB0IFsgc2NyaXB0LWFyZ3VtZW50cyBdXG5cbiIsIGFyZ3ZbMF0pOworICAgICAgICAgICAgZnB1dHdzKEwiXAorTGF1bmNoZXIgYXJndW1lbnRzOlxuXG5cCistMiAgICAgOiBMYXVuY2ggdGhlIGxhdGVzdCBQeXRob24gMi54IHZlcnNpb25cblwKKy0zICAgICA6IExhdW5jaCB0aGUgbGF0ZXN0IFB5dGhvbiAzLnggdmVyc2lvblxuXAorLVguWSAgIDogTGF1bmNoIHRoZSBzcGVjaWZpZWQgUHl0aG9uIHZlcnNpb25cbiIsIHN0ZG91dCk7CisgICAgICAgICAgICBpZiAoY2FuRG82NGJpdCkgeworICAgICAgICAgICAgICAgIGZwdXR3cyhMIlwKKy1YLlktMzI6IExhdW5jaCB0aGUgc3BlY2lmaWVkIDMyYml0IFB5dGhvbiB2ZXJzaW9uIiwgc3Rkb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZwdXR3cyhMIlxuXG5UaGUgZm9sbG93aW5nIGhlbHAgdGV4dCBpcyBmcm9tIFB5dGhvbjpcblxuIiwgc3Rkb3V0KTsKKyAgICAgICAgICAgIGZmbHVzaChzdGRvdXQpOworICAgICAgICB9CisgICAgfQorICAgIGludm9rZV9jaGlsZChpcC0+ZXhlY3V0YWJsZSwgTlVMTCwgY29tbWFuZCk7CisgICAgcmV0dXJuIHJjOworfQorCisjaWYgZGVmaW5lZChfV0lORE9XUykKKworaW50IFdJTkFQSSB3V2luTWFpbihISU5TVEFOQ0UgaEluc3RhbmNlLCBISU5TVEFOQ0UgaFByZXZJbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICBMUFdTVFIgbHBzdHJDbWQsIGludCBuU2hvdykKK3sKKyAgICByZXR1cm4gcHJvY2VzcyhfX2FyZ2MsIF9fd2FyZ3YpOworfQorCisjZWxzZQorCitpbnQgY2RlY2wgd21haW4oaW50IGFyZ2MsIHdjaGFyX3QgKiogYXJndikKK3sKKyAgICByZXR1cm4gcHJvY2VzcyhhcmdjLCBhcmd2KTsKK30KKworI2VuZGlmClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUEMvbGF1bmNoZXIuaWNvIGIvUEMvbGF1bmNoZXIuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZDdkNTcKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9sYXVuY2hlci5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvbXN2Y3J0bW9kdWxlLmMgYi9QQy9tc3ZjcnRtb2R1bGUuYwppbmRleCAxNjZkZjAzLi4wNGQyMDg4IDEwMDc1NQotLS0gYS9QQy9tc3ZjcnRtb2R1bGUuYworKysgYi9QQy9tc3ZjcnRtb2R1bGUuYwpAQCAtMjcsNiArMjcsOCBAQAogI2lmZGVmIF9NU0NfVkVSCiAjaWYgX01TQ19WRVIgPj0gMTUwMCAmJiBfTVNDX1ZFUiA8IDE2MDAKICNpbmNsdWRlIDxjcnRhc3NlbS5oPgorI2VsaWYgX01TQ19WRVIgPj0gMTYwMAorI2luY2x1ZGUgPGNydHZlcnNpb24uaD4KICNlbmRpZgogI2VuZGlmCiAKQEAgLTIxMSw4ICsyMTMsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIG1zdmNydF9nZXR3Y2goUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgY2g7Ci0gICAgUHlfVU5JQ09ERSB1WzFdOworICAgIHdjaGFyX3QgY2g7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIjpnZXR3Y2giKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMjAsOCArMjIxLDcgQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0d2NoKCk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKLSAgICB1WzBdID0gY2g7Ci0gICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tVW5pY29kZSh1LCAxKTsKKyAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKIH0KIAogUHlEb2NfU1RSVkFSKGdldHdjaF9kb2MsCkBAIC0yNTYsOCArMjU2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBtc3ZjcnRfZ2V0d2NoZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfVU5JQ09ERSBjaDsKLSAgICBQeV9VTklDT0RFIHNbMV07CisgICAgd2NoYXJfdCBjaDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiOmdldHdjaGUiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNjUsOCArMjY0LDcgQEAKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgY2ggPSBfZ2V0d2NoZSgpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCi0gICAgc1swXSA9IGNoOwotICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgMSk7CisgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbChjaCk7CiB9CiAKIFB5RG9jX1NUUlZBUihnZXR3Y2hlX2RvYywKQEAgLTQ2OCw3ICs0NjYsNyBAQAogUHlJbml0X21zdmNydCh2b2lkKQogewogICAgIGludCBzdDsKLSAgICBQeU9iamVjdCAqZDsKKyAgICBQeU9iamVjdCAqZCwgKnZlcnNpb247CiAgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJm1zdmNydG1vZHVsZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC00OTgsNiArNDk2LDcgQEAKICNlbmRpZgogCiAgICAgLyogY29uc3RhbnRzIGZvciB0aGUgY3J0IHZlcnNpb25zICovCisgICAgKHZvaWQpc3Q7CiAjaWZkZWYgX1ZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOCiAgICAgc3QgPSBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOKTsKQEAgLTUxNCw1ICs1MTMsMTUgQEAKICAgICBpZiAoc3QgPCAwKSByZXR1cm4gTlVMTDsKICNlbmRpZgogCisgICAgLyogY29uc3RhbnRzIGZvciB0aGUgMjAxMCBjcnQgdmVyc2lvbnMgKi8KKyNpZiBkZWZpbmVkKF9WQ19DUlRfTUFKT1JfVkVSU0lPTikgJiYgZGVmaW5lZCAoX1ZDX0NSVF9NSU5PUl9WRVJTSU9OKSAmJiBkZWZpbmVkKF9WQ19DUlRfQlVJTERfVkVSU0lPTikgJiYgZGVmaW5lZChfVkNfQ1JUX1JCVUlMRF9WRVJTSU9OKQorICAgIHZlcnNpb24gPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJWQuJWQuJWQuJWQiLCBfVkNfQ1JUX01BSk9SX1ZFUlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9WQ19DUlRfTUlOT1JfVkVSU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0NSVF9CVUlMRF9WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVkNfQ1JUX1JCVUlMRF9WRVJTSU9OKTsKKyAgICBzdCA9IFB5TW9kdWxlX0FkZE9iamVjdChtLCAiQ1JUX0FTU0VNQkxZX1ZFUlNJT04iLCB2ZXJzaW9uKTsKKyAgICBpZiAoc3QgPCAwKSByZXR1cm4gTlVMTDsKKyNlbmRpZgorCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9QQy9vczJlbXgvTWFrZWZpbGUgYi9QQy9vczJlbXgvTWFrZWZpbGUKaW5kZXggZDljZGVkNy4uODAwNjEwZSAxMDA2NDQKLS0tIGEvUEMvb3MyZW14L01ha2VmaWxlCisrKyBiL1BDL29zMmVteC9NYWtlZmlsZQpAQCAtMjM3LDcgKzIzNyw3IEBACiAKICMgT3V0cHV0IGZpbGUgbmFtZXMKIFBZVEhPTl9WRVI9CTIuNgotUFlUSE9OX0xJQj0JcHl0aG9uMjYKK1BZVEhPTl9MSUI9CXB5dGhvbjMzCiBQWVRIT04uTElCPQkkKFBZVEhPTl9MSUIpX3MkQQogUFlUSE9OLklNUExJQj0JJChQWVRIT05fTElCKSRBCiBpZmVxICgkKEVYRU9NRikseWVzKQpkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L1JFQURNRS5vczJlbXggYi9QQy9vczJlbXgvUkVBRE1FLm9zMmVteAppbmRleCBmY2Y1NWQyLi42MWNmNmRmIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvUkVBRE1FLm9zMmVteAorKysgYi9QQy9vczJlbXgvUkVBRE1FLm9zMmVteApAQCAtMzA1LDcgKzMwNSw3IEBACiAgICB0byBiZSBpbnN0YWxsZWQgaW4gYSBkaXJlY3Rvcnkgb3RoZXIgdGhhbiB0aGUgUFlUSE9OSE9NRSBkaXJlY3RvcnksIHNldCAKICAgIHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgRVhFX0RJUiB0byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5LgogCi0zLiBJZiB5b3Ugd2lzaCB0aGUgUHl0aG9uIGNvcmUgRExMIChweXRob24yNi5kbGwpIHRvIGJlIGluc3RhbGxlZCBpbiBhIAorMy4gSWYgeW91IHdpc2ggdGhlIFB5dGhvbiBjb3JlIERMTCAocHl0aG9uMzMuZGxsKSB0byBiZSBpbnN0YWxsZWQgaW4gYSAKICAgIGRpcmVjdG9yeSBvdGhlciB0aGFuIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIFB5dGhvbiBleGVjdXRhYmxlcyBhcmUgCiAgICBpbnN0YWxsZWQgKGJ5IGRlZmF1bHQsIHRoZSBQWVRIT05IT01FIGRpcmVjdG9yeSksIHNldCB0aGUgdmFsdWUgb2YgdGhlIAogICAgTWFrZWZpbGUgdmFyaWFibGUgRExMX0RJUiB0byB0aGUgYXBwcm9wcmlhdGUgZGlyZWN0b3J5LiAgVGhpcyBETEwgbXVzdCAKZGlmZiAtLWdpdCBhL1BDL29zMmVteC9jb25maWcuYyBiL1BDL29zMmVteC9jb25maWcuYwppbmRleCAyMThhYTY4Li41ODc5MTEwIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvY29uZmlnLmMKKysrIGIvUEMvb3MyZW14L2NvbmZpZy5jCkBAIC0xNTAsMTAgKzE1MCw5IEBACiAgICAgeyJtYXJzaGFsIiwgUHlNYXJzaGFsX0luaXR9LAogCiAgICAgLyogVGhpcyBsaXZlcyBpdCB3aXRoIGltcG9ydC5jICovCi0gICAgeyJpbXAiLCBpbml0aW1wfSwKKyAgICB7Il9pbXAiLCBpbml0aW1wfSwKIAogICAgIC8qIFRoZXNlIGVudHJpZXMgYXJlIGhlcmUgZm9yIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyAqLwotICAgIHsiX19tYWluX18iLCBOVUxMfSwKICAgICB7ImJ1aWx0aW5zIiwgTlVMTH0sCiAgICAgeyJzeXMiLCBOVUxMfSwKIApkaWZmIC0tZ2l0IGEvUEMvb3MyZW14L3B5Y29uZmlnLmggYi9QQy9vczJlbXgvcHljb25maWcuaAppbmRleCAzODBlMTljLi5lNTYxMDVhIDEwMDY0NAotLS0gYS9QQy9vczJlbXgvcHljb25maWcuaAorKysgYi9QQy9vczJlbXgvcHljb25maWcuaApAQCAtMSw2ICsxLDggQEAKICNpZm5kZWYgUHlfQ09ORklHX0gKICNkZWZpbmUgUHlfQ09ORklHX0gKIAorI2Vycm9yICJQRVAgMTE6IE9TLzIgaXMgbm93IHVuc3VwcG9ydGVkLCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy40IgorCiAvKiBjb25maWcuaC4KICAqIEF0IHNvbWUgdGltZSBpbiB0aGUgcGFzdCwgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkvZnJvbSBjb25maWd1cmUuCiAgKiBub3cgbWFpbnRhaW5lZCBtYW51YWxseS4KZGlmZiAtLWdpdCBhL1BDL29zMmVteC9weXRob24yNy5kZWYgYi9QQy9vczJlbXgvcHl0aG9uMzMuZGVmCnNpbWlsYXJpdHkgaW5kZXggODUlCnJlbmFtZSBmcm9tIFBDL29zMmVteC9weXRob24yNy5kZWYKcmVuYW1lIHRvIFBDL29zMmVteC9weXRob24zMy5kZWYKaW5kZXggZDg3ZGQ3Ni4uMjU2NzI2YiAxMDA2NDQKLS0tIGEvUEMvb3MyZW14L3B5dGhvbjI3LmRlZgorKysgYi9QQy9vczJlbXgvcHl0aG9uMzMuZGVmCkBAIC0xLDcyICsxLDcyIEBACi1MSUJSQVJZIHB5dGhvbjI2IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UgCitMSUJSQVJZIHB5dGhvbjMzIElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UgCiBERVNDUklQVElPTiAiUHl0aG9uIDIuNiBDb3JlIERMTCIgCiBQUk9UTU9ERSAKIERBVEEgTVVMVElQTEUgTk9OU0hBUkVEIAogRVhQT1JUUyAKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvbmZpZykKKzsgRnJvbSBweXRob24zM19zLmxpYihjb25maWcpCiAgICJfUHlJbXBvcnRfSW5pdHRhYiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGRsZmNuKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGRsZmNuKQogOyAgImRsb3BlbiIKIDsgICJkbHN5bSIKIDsgICJkbGNsb3NlIgogOyAgImRsZXJyb3IiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRwYXRocCkKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRwYXRocCkKICAgIlB5X0dldFByb2dyYW1GdWxsUGF0aCIKICAgIlB5X0dldFByZWZpeCIKICAgIlB5X0dldEV4ZWNQcmVmaXgiCiAgICJQeV9HZXRQYXRoIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0YnVpbGRpbmZvKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdldGJ1aWxkaW5mbykKICAgIlB5X0dldEJ1aWxkSW5mbyIKICAgIl9QeV9zdm52ZXJzaW9uIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWFpbikKKzsgRnJvbSBweXRob24zM19zLmxpYihtYWluKQogICAiUHlfTWFpbiIKICAgIlB5X0dldEFyZ2NBcmd2IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoYWNjZWxlcikKKzsgRnJvbSBweXRob24zM19zLmxpYihhY2NlbGVyKQogICAiUHlHcmFtbWFyX0FkZEFjY2VsZXJhdG9ycyIKICAgIlB5R3JhbW1hcl9SZW1vdmVBY2NlbGVyYXRvcnMiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihncmFtbWFyMSkKKzsgRnJvbSBweXRob24zM19zLmxpYihncmFtbWFyMSkKICAgIlB5R3JhbW1hcl9GaW5kREZBIgogICAiUHlHcmFtbWFyX0xhYmVsUmVwciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGxpc3Rub2RlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGxpc3Rub2RlKQogICAiUHlOb2RlX0xpc3RUcmVlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobm9kZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihub2RlKQogICAiUHlOb2RlX05ldyIKICAgIlB5Tm9kZV9BZGRDaGlsZCIKICAgIlB5Tm9kZV9GcmVlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocGFyc2VyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHBhcnNlcikKICAgIlB5UGFyc2VyX0FkZFRva2VuIgogICAiUHlQYXJzZXJfTmV3IgogICAiUHlQYXJzZXJfRGVsZXRlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocGFyc2V0b2spCis7IEZyb20gcHl0aG9uMzNfcy5saWIocGFyc2V0b2spCiAgICJQeVBhcnNlcl9QYXJzZVN0cmluZyIKICAgIlB5UGFyc2VyX1BhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZSIKICAgIlB5UGFyc2VyX1BhcnNlRmlsZSIKICAgIlB5UGFyc2VyX1BhcnNlRmlsZUZsYWdzIgogICAiUHlQYXJzZXJfUGFyc2VTdHJpbmdGbGFncyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJpdHNldCkKKzsgRnJvbSBweXRob24zM19zLmxpYihiaXRzZXQpCiAgICJfUHlfbmV3Yml0c2V0IgogICAiX1B5X2RlbGJpdHNldCIKICAgIl9QeV9hZGRiaXQiCiAgICJfUHlfc2FtZWJpdHNldCIKICAgIl9QeV9tZXJnZWJpdHNldCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG1ldGFncmFtbWFyKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1ldGFncmFtbWFyKQogICAiX1B5X21ldGFfZ3JhbW1hciIKICAgIlB5X21ldGFfZ3JhbW1hciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRva2VuaXplcikKKzsgRnJvbSBweXRob24zM19zLmxpYih0b2tlbml6ZXIpCiAgICJQeVRva2VuX09uZUNoYXIiCiAgICJQeVRva2VuX1R3b0NoYXJzIgogICAiUHlUb2tlbl9UaHJlZUNoYXJzIgpAQCAtNzYsMTQgKzc2LDE0IEBACiAgICJQeVRva2VuaXplcl9HZXQiCiAgICJfUHlQYXJzZXJfVG9rZW5OYW1lcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG15cmVhZGxpbmUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobXlyZWFkbGluZSkKICAgIl9QeU9TX1JlYWRsaW5lVFN0YXRlIgogICAiUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlciIKICAgIlB5T1NfU3RkaW9SZWFkbGluZSIKICAgIlB5T1NfUmVhZGxpbmUiCiAgICJQeU9TX0lucHV0SG9vayIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFic3RyYWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGFic3RyYWN0KQogICAiX1B5T2JqZWN0X0xlbmd0aEhpbnQiCiAgICJQeU1hcHBpbmdfU2l6ZSIKICAgIlB5T2JqZWN0X0NhbGxNZXRob2QiCkBAIC0xNzQsMTMgKzE3NCwxMyBAQAogICAiUHlPYmplY3RfSXNJbnN0YW5jZSIKICAgIlB5T2JqZWN0X0lzU3ViY2xhc3MiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihib29sb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJvb2xvYmplY3QpCiAgICJQeUJvb2xfRnJvbUxvbmciCiAgICJQeUJvb2xfVHlwZSIKICAgIl9QeV9aZXJvU3RydWN0IgogICAiX1B5X1RydWVTdHJ1Y3QiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihidWZmZXJvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYnVmZmVyb2JqZWN0KQogICAiUHlCdWZmZXJfRnJvbU9iamVjdCIKICAgIlB5QnVmZmVyX0Zyb21SZWFkV3JpdGVPYmplY3QiCiAgICJQeUJ1ZmZlcl9Gcm9tTWVtb3J5IgpAQCAtMTg4LDEzICsxODgsMTMgQEAKICAgIlB5QnVmZmVyX05ldyIKICAgIlB5QnVmZmVyX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjZWxsb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNlbGxvYmplY3QpCiAgICJQeUNlbGxfTmV3IgogICAiUHlDZWxsX0dldCIKICAgIlB5Q2VsbF9TZXQiCiAgICJQeUNlbGxfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNsYXNzb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNsYXNzb2JqZWN0KQogICAiUHlDbGFzc19OZXciCiAgICJQeUNsYXNzX0lzU3ViY2xhc3MiCiAgICJQeUluc3RhbmNlX05ldyIKQEAgLTIwOSw3ICsyMDksNyBAQAogICAiUHlJbnN0YW5jZV9UeXBlIgogICAiUHlNZXRob2RfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNhcHN1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY2Fwc3VsZSkKICAgIlB5Q2Fwc3VsZV9HZXRDb250ZXh0IgogICAiUHlDYXBzdWxlX0dldERlc3RydWN0b3IiCiAgICJQeUNhcHN1bGVfR2V0TmFtZSIKQEAgLTIyMiw3ICsyMjIsNyBAQAogICAiUHlDYXBzdWxlX1NldE5hbWUiCiAgICJQeUNhcHN1bGVfU2V0UG9pbnRlciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29iamVjdCkKICAgIlB5Q09iamVjdF9Gcm9tVm9pZFB0ciIKICAgIlB5Q09iamVjdF9Gcm9tVm9pZFB0ckFuZERlc2MiCiAgICJQeUNPYmplY3RfQXNWb2lkUHRyIgpAQCAtMjMxLDEzICsyMzEsMTMgQEAKICAgIlB5Q09iamVjdF9TZXRWb2lkUHRyIgogICAiUHlDT2JqZWN0X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb2Rlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvZGVvYmplY3QpCiAgICJQeUNvZGVfTmV3IgogICAiUHlDb2RlX0FkZHIyTGluZSIKICAgIlB5Q29kZV9DaGVja0xpbmVOdW1iZXIiCiAgICJQeUNvZGVfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvbXBsZXhvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29tcGxleG9iamVjdCkKICAgIl9QeV9jX3BvdyIKICAgIl9QeV9jX3N1bSIKICAgIl9QeV9jX2RpZmYiCkBAIC0yNTEsNyArMjUxLDcgQEAKICAgIlB5Q29tcGxleF9Bc0NDb21wbGV4IgogICAiUHlDb21wbGV4X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkZXNjcm9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihkZXNjcm9iamVjdCkKICAgIlB5V3JhcHBlcl9OZXciCiAgICJQeURlc2NyX05ld01ldGhvZCIKICAgIlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QiCkBAIC0yNjIsNyArMjYyLDcgQEAKICAgIlB5V3JhcHBlckRlc2NyX1R5cGUiCiAgICJQeVByb3BlcnR5X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihkaWN0b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGRpY3RvYmplY3QpCiAgICJQeURpY3RfTmV3IgogICAiUHlEaWN0X0dldEl0ZW0iCiAgICJQeURpY3RfU2V0SXRlbSIKQEAgLTI4NiwxMSArMjg2LDExIEBACiAgICJQeURpY3RJdGVyVmFsdWVfVHlwZSIKICAgIlB5RGljdEl0ZXJJdGVtX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihlbnVtb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGVudW1vYmplY3QpCiAgICJQeUVudW1fVHlwZSIKICAgIlB5UmV2ZXJzZWRfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZpbGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZmlsZW9iamVjdCkKICAgIlB5RmlsZV9Gcm9tU3RyaW5nIgogICAiUHlfVW5pdmVyc2FsTmV3bGluZUZyZWFkIgogICAiUHlGaWxlX0dldExpbmUiCkBAIC0zMDYsNyArMzA2LDcgQEAKICAgIlB5RmlsZV9OYW1lIgogICAiUHlGaWxlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihmbG9hdG9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihmbG9hdG9iamVjdCkKICAgIlB5RmxvYXRfRnJvbVN0cmluZyIKICAgIlB5RmxvYXRfQXNEb3VibGUiCiAgICJQeUZsb2F0X0ZpbmkiCkBAIC0zMjEsNyArMzIxLDcgQEAKICAgIlB5RmxvYXRfQXNTdHJpbmdFeCIKICAgIlB5RmxvYXRfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZyYW1lb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGZyYW1lb2JqZWN0KQogICAiUHlGcmFtZV9OZXciCiAgICJQeUZyYW1lX0Zhc3RUb0xvY2FscyIKICAgIlB5RnJhbWVfTG9jYWxzVG9GYXN0IgpAQCAtMzMxLDcgKzMzMSw3IEBACiAgICJQeUZyYW1lX0Jsb2NrUG9wIgogICAiUHlGcmFtZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnVuY29iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihmdW5jb2JqZWN0KQogICAiUHlGdW5jdGlvbl9OZXciCiAgICJQeUZ1bmN0aW9uX0dldENvZGUiCiAgICJQeUZ1bmN0aW9uX0dldEdsb2JhbHMiCkBAIC0zNDYsMTIgKzM0NiwxMiBAQAogICAiUHlDbGFzc01ldGhvZF9UeXBlIgogICAiUHlTdGF0aWNNZXRob2RfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdlbm9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihnZW5vYmplY3QpCiAgICJQeUdlbl9OZXciCiAgICJQeUdlbl9OZWVkc0ZpbmFsaXppbmciCiAgICJQeUdlbl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaW50b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGludG9iamVjdCkKICAgIlB5SW50X0FzTG9uZyIKICAgIlB5SW50X0FzVW5zaWduZWRMb25nTWFzayIKICAgIlB5SW50X0FzVW5zaWduZWRMb25nTG9uZ01hc2siCkBAIC0zNjYsMTMgKzM2NiwxMyBAQAogICAiX1B5SW50X0luaXQiCiAgICJQeUludF9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaXRlcm9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihpdGVyb2JqZWN0KQogICAiUHlTZXFJdGVyX05ldyIKICAgIlB5Q2FsbEl0ZXJfTmV3IgogICAiUHlTZXFJdGVyX1R5cGUiCiAgICJQeUNhbGxJdGVyX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihsaXN0b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGxpc3RvYmplY3QpCiAgICJQeUxpc3RfTmV3IgogICAiUHlMaXN0X0FwcGVuZCIKICAgIlB5TGlzdF9TaXplIgpAQCAtMzkwLDcgKzM5MCw3IEBACiAgICJQeUxpc3RJdGVyX1R5cGUiCiAgICJQeUxpc3RSZXZJdGVyX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihsb25nb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGxvbmdvYmplY3QpCiAgICJQeUxvbmdfRnJvbURvdWJsZSIKICAgIlB5TG9uZ19Bc0xvbmciCiAgICJfUHlMb25nX0FzU3NpemVfdCIKQEAgLTQyMCw3ICs0MjAsNyBAQAogICAiUHlMb25nX1R5cGUiCiAgICJfUHlMb25nX0RpZ2l0VmFsdWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtZXRob2RvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWV0aG9kb2JqZWN0KQogICAiUHlDRnVuY3Rpb25fQ2FsbCIKICAgIlB5X0ZpbmRNZXRob2RJbkNoYWluIgogICAiUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24iCkBAIC00MzIsNyArNDMyLDcgQEAKICAgIlB5Q0Z1bmN0aW9uX05ldyIKICAgIlB5Q0Z1bmN0aW9uX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtb2R1bGVvYmplY3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobW9kdWxlb2JqZWN0KQogICAiUHlNb2R1bGVfTmV3IgogICAiX1B5TW9kdWxlX0NsZWFyIgogICAiUHlNb2R1bGVfR2V0RGljdCIKQEAgLTQ0MCw3ICs0NDAsNyBAQAogICAiUHlNb2R1bGVfR2V0RmlsZW5hbWUiCiAgICJQeU1vZHVsZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIob2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG9iamVjdCkKICAgIlB5X0RpdmlzaW9uV2FybmluZ0ZsYWciCiAgICJQeU9iamVjdF9TdHIiCiAgICJQeU9iamVjdF9SZXByIgpAQCAtNDkzLDE1ICs0OTMsMTUgQEAKICAgIl9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIgogICAiX1B5VHJhc2hfZGVsZXRlX2xhdGVyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIob2JtYWxsb2MpCis7IEZyb20gcHl0aG9uMzNfcy5saWIob2JtYWxsb2MpCiAgICJQeU9iamVjdF9NYWxsb2MiCiAgICJQeU9iamVjdF9GcmVlIgogICAiUHlPYmplY3RfUmVhbGxvYyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHJhbmdlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHJhbmdlb2JqZWN0KQogICAiUHlSYW5nZV9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2V0b2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNldG9iamVjdCkKICAgIlB5U2V0X1BvcCIKICAgIlB5U2V0X05ldyIKICAgIlB5RnJvemVuU2V0X05ldyIKQEAgLTUxNiw3ICs1MTYsNyBAQAogICAiUHlTZXRfVHlwZSIKICAgIlB5RnJvemVuU2V0X1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzbGljZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihzbGljZW9iamVjdCkKICAgIl9QeVNsaWNlX0Zyb21JbmRpY2VzIgogICAiUHlTbGljZV9HZXRJbmRpY2VzIgogICAiUHlTbGljZV9HZXRJbmRpY2VzRXgiCkBAIC01MjQsNyArNTI0LDcgQEAKICAgIl9QeV9FbGxpcHNpc09iamVjdCIKICAgIlB5U2xpY2VfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN0cmluZ29iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihzdHJpbmdvYmplY3QpCiAgICJQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZSIKICAgIlB5U3RyaW5nX0ludGVybkluUGxhY2UiCiAgICJQeVN0cmluZ19Gcm9tU3RyaW5nIgpAQCAtNTU1LDEyICs1NTUsMTIgQEAKICAgIlB5U3RyaW5nX1R5cGUiCiAgICJQeUJhc2VTdHJpbmdfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN0cnVjdHNlcSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzdHJ1Y3RzZXEpCiAgICJQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlIgogICAiUHlTdHJ1Y3RTZXF1ZW5jZV9OZXciCiAgICJQeVN0cnVjdFNlcXVlbmNlX1VubmFtZWRGaWVsZCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHR1cGxlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHR1cGxlb2JqZWN0KQogICAiUHlUdXBsZV9OZXciCiAgICJQeVR1cGxlX1BhY2siCiAgICJfUHlUdXBsZV9SZXNpemUiCkBAIC01NzIsNyArNTcyLDcgQEAKICAgIlB5VHVwbGVfVHlwZSIKICAgIlB5VHVwbGVJdGVyX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0eXBlb2JqZWN0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHR5cGVvYmplY3QpCiAgICJQeVR5cGVfSXNTdWJ0eXBlIgogICAiX1B5VHlwZV9Mb29rdXAiCiAgICJQeVR5cGVfUmVhZHkiCkBAIC01ODMsNyArNTgzLDcgQEAKICAgIlB5QmFzZU9iamVjdF9UeXBlIgogICAiUHlTdXBlcl9UeXBlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodW5pY29kZW9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYih1bmljb2Rlb2JqZWN0KQogICAiUHlVbmljb2RlVUNTMl9SZXNpemUiCiAgICJQeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsIgogICAiUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0IgpAQCAtNjQ5LDcgKzY0OSw3IEBACiAgICJQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0IgogICAiUHlVbmljb2RlX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih1bmljb2RlY3R5cGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodW5pY29kZWN0eXBlKQogICAiX1B5VW5pY29kZV9UeXBlUmVjb3JkcyIKICAgIl9QeVVuaWNvZGVVQ1MyX1RvTnVtZXJpYyIKICAgIl9QeVVuaWNvZGVVQ1MyX0lzTG93ZXJjYXNlIgpAQCAtNjY3LDcgKzY2Nyw3IEBACiAgICJfUHlVbmljb2RlVUNTMl9Jc051bWVyaWMiCiAgICJfUHlVbmljb2RlVUNTMl9Jc0FscGhhIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIod2Vha3JlZm9iamVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYih3ZWFrcmVmb2JqZWN0KQogICAiUHlXZWFrcmVmX05ld1JlZiIKICAgIlB5V2Vha3JlZl9OZXdQcm94eSIKICAgIlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMiCkBAIC02NzgsNyArNjc4LDcgQEAKICAgIl9QeVdlYWtyZWZfUHJveHlUeXBlIgogICAiX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKFB5dGhvbi1hc3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoUHl0aG9uLWFzdCkKIDsgICJpbml0X2FzdCIKICAgIk1vZHVsZSIKICAgIkludGVyYWN0aXZlIgpAQCAtNzM3LDE4ICs3MzcsMTggQEAKICAgImFsaWFzIgogICAiUHlBU1RfbW9kMm9iaiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGFzZGwpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYXNkbCkKICAgImFzZGxfc2VxX25ldyIKICAgImFzZGxfaW50X3NlcV9uZXciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihhc3QpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoYXN0KQogICAiUHlBU1RfRnJvbU5vZGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihibHRpbm1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihibHRpbm1vZHVsZSkKICAgIl9QeUJ1aWx0aW5fSW5pdCIKICAgIlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihleGNlcHRpb25zKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGV4Y2VwdGlvbnMpCiAgICJQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydCIKICAgIlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0IgogICAiUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kIgpAQCAtODI0LDcgKzgyNCw3IEBACiAgICJQeUV4Y19JbXBvcnRXYXJuaW5nIgogICAiUHlFeGNfTWVtb3J5RXJyb3JJbnN0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoY2V2YWwpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY2V2YWwpCiAgICJQeUV2YWxfRXZhbEZyYW1lRXgiCiAgICJQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyIKICAgIlB5RXZhbF9FdmFsQ29kZUV4IgpAQCAtODYzLDEzICs4NjMsMTMgQEAKICAgIl9QeV9DaGVja0ludGVydmFsIgogICAiX1B5X1RpY2tlciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvbXBpbGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29tcGlsZSkKICAgIl9QeV9NYW5nbGUiCiAgICJQeUFTVF9Db21waWxlIgogICAiUHlOb2RlX0NvbXBpbGUiCiAgICJQeV9PcHRpbWl6ZUZsYWciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjb2RlY3MpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoY29kZWNzKQogICAiX1B5Q29kZWNfTG9va3VwIgogICAiUHlDb2RlY19FbmNvZGUiCiAgICJQeUNvZGVjX0RlY29kZSIKQEAgLTg4OCw3ICs4ODgsNyBAQAogICAiUHlDb2RlY19Mb29rdXBFcnJvciIKICAgIlB5Q29kZWNfU3RyaWN0RXJyb3JzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZXJyb3JzKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGVycm9ycykKICAgIlB5RXJyX1NldE5vbmUiCiAgICJQeUVycl9TZXRTdHJpbmciCiAgICJQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMiCkBAIC05MTQsMTYgKzkxNCwxNiBAQAogICAiUHlFcnJfV2FybiIKICAgIlB5RXJyX1dhcm5FeHBsaWNpdCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZyb3plbikKKzsgRnJvbSBweXRob24zM19zLmxpYihmcm96ZW4pCiAgICJQeUltcG9ydF9Gcm96ZW5Nb2R1bGVzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZnJvemVubWFpbikKKzsgRnJvbSBweXRob24zM19zLmxpYihmcm96ZW5tYWluKQogICAiUHlfRnJvemVuTWFpbiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGZ1dHVyZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihmdXR1cmUpCiAgICJQeUZ1dHVyZV9Gcm9tQVNUIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0YXJncykKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRhcmdzKQogICAiUHlBcmdfUGFyc2UiCiAgICJfUHlBcmdfUGFyc2VfU2l6ZVQiCiAgICJQeUFyZ19QYXJzZVR1cGxlIgpAQCAtOTM3LDIyICs5MzcsMjIgQEAKICAgIl9QeUFyZ19WYVBhcnNlX1NpemVUIgogICAiX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0Y29tcGlsZXIpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0Y29tcGlsZXIpCiAgICJQeV9HZXRDb21waWxlciIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdldGNvcHlyaWdodCkKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRjb3B5cmlnaHQpCiAgICJQeV9HZXRDb3B5cmlnaHQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRwbGF0Zm9ybSkKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXRwbGF0Zm9ybSkKICAgIlB5X0dldFBsYXRmb3JtIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZ2V0dmVyc2lvbikKKzsgRnJvbSBweXRob24zM19zLmxpYihnZXR2ZXJzaW9uKQogICAiUHlfR2V0VmVyc2lvbiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGdyYW1pbml0KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGdyYW1pbml0KQogICAiX1B5UGFyc2VyX0dyYW1tYXIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihpbXBvcnQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoaW1wb3J0KQogICAiX1B5SW1wb3J0X0luaXQiCiAgICJfUHlJbXBvcnRIb29rc19Jbml0IgogICAiUHlJbXBvcnRfSW1wb3J0TW9kdWxlIgpAQCAtOTc5LDEwICs5NzksMTAgQEAKICAgIlB5SW1wb3J0X0luaXR0YWIiCiAgICJfUHlJbXBvcnRfRmlsZXRhYiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGltcG9ydGRsKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGltcG9ydGRsKQogICAiX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWFyc2hhbCkKKzsgRnJvbSBweXRob24zM19zLmxpYihtYXJzaGFsKQogICAiUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUiCiAgICJQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyIKICAgIlB5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUiCkBAIC05OTMsNyArOTkzLDcgQEAKICAgIlB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZyIKICAgIlB5TWFyc2hhbF9Jbml0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobW9kc3VwcG9ydCkKKzsgRnJvbSBweXRob24zM19zLmxpYihtb2RzdXBwb3J0KQogICAiUHlfSW5pdE1vZHVsZTQiCiAgICJQeV9CdWlsZFZhbHVlIgogICAiX1B5X0J1aWxkVmFsdWVfU2l6ZVQiCkBAIC0xMDA2LDI0ICsxMDA2LDI0IEBACiAgICJQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudCIKICAgIl9QeV9QYWNrYWdlQ29udGV4dCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG15c25wcmludGYpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobXlzbnByaW50ZikKICAgIlB5T1Nfc25wcmludGYiCiAgICJQeU9TX3ZzbnByaW50ZiIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKG15c3RydG91bCkKKzsgRnJvbSBweXRob24zM19zLmxpYihteXN0cnRvdWwpCiAgICJQeU9TX3N0cnRvdWwiCiAgICJQeU9TX3N0cnRvbCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHB5YXJlbmEpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocHlhcmVuYSkKICAgIlB5QXJlbmFfTmV3IgogICAiUHlBcmVuYV9GcmVlIgogICAiUHlBcmVuYV9NYWxsb2MiCiAgICJQeUFyZW5hX0FkZFB5T2JqZWN0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocHlmcGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocHlmcGUpCiAgICJQeUZQRV9kdW1teSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHB5c3RhdGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIocHlzdGF0ZSkKICAgIlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhciIKICAgIlB5VGhyZWFkU3RhdGVfQ2xlYXIiCiAgICJfUHlUaHJlYWRfQ3VycmVudEZyYW1lcyIKQEAgLTEwNDgsNyArMTA0OCw3IEBACiAgICJfUHlUaHJlYWRTdGF0ZV9DdXJyZW50IgogICAiX1B5VGhyZWFkU3RhdGVfR2V0RnJhbWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihweXRob25ydW4pCis7IEZyb20gcHl0aG9uMzNfcy5saWIocHl0aG9ucnVuKQogICAiUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnIgogICAiUHlfRGVidWdGbGFnIgogICAiUHlfVmVyYm9zZUZsYWciCkBAIC0xMTEwLDIwICsxMTEwLDIwIEBACiAgICJQeV9Vbmljb2RlRmxhZyIKICAgIl9QeV9RbmV3RmxhZyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN0cnVjdG1lbWJlcikKKzsgRnJvbSBweXRob24zM19zLmxpYihzdHJ1Y3RtZW1iZXIpCiAgICJQeU1lbWJlcl9HZXQiCiAgICJQeU1lbWJlcl9HZXRPbmUiCiAgICJQeU1lbWJlcl9TZXRPbmUiCiAgICJQeU1lbWJlcl9TZXQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzeW10YWJsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzeW10YWJsZSkKICAgIlB5U3ltdGFibGVfQnVpbGQiCiAgICJQeVN5bXRhYmxlX0ZyZWUiCiAgICJQeVNUX0dldFNjb3BlIgogICAiUHlTeW10YWJsZV9Mb29rdXAiCiAgICJQeVNURW50cnlfVHlwZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHN5c21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzeXNtb2R1bGUpCiAgICJfUHlTeXNfSW5pdCIKICAgIlB5U3lzX1dyaXRlU3RkZXJyIgogICAiUHlTeXNfU2V0UGF0aCIKQEAgLTExMzcsMjIgKzExMzcsMjIgQEAKICAgIlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMiCiAgICJQeVN5c19BZGRXYXJuT3B0aW9uIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodHJhY2ViYWNrKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRyYWNlYmFjaykKICAgIlB5VHJhY2VCYWNrX0hlcmUiCiAgICJQeVRyYWNlQmFja19QcmludCIKICAgIlB5VHJhY2VCYWNrX1R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnZXRvcHQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZ2V0b3B0KQogICAiX1B5T1NfR2V0T3B0IgogICAiX1B5T1Nfb3B0ZXJyIgogICAiX1B5T1Nfb3B0aW5kIgogICAiX1B5T1Nfb3B0YXJnIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZHlubG9hZF9zaGxpYikKKzsgRnJvbSBweXRob24zM19zLmxpYihkeW5sb2FkX3NobGliKQogICAiX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiIgogICAiX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIodGhyZWFkKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHRocmVhZCkKICAgIlB5VGhyZWFkX2RlbGV0ZV9rZXlfdmFsdWUiCiAgICJQeVRocmVhZF9pbml0X3RocmVhZCIKICAgIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQiCkBAIC0xMTY5LDcgKzExNjksNyBAQAogICAiUHlUaHJlYWRfc2V0X2tleV92YWx1ZSIKICAgIlB5VGhyZWFkX2dldF9rZXlfdmFsdWUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihnY21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihnY21vZHVsZSkKIDsgICJpbml0Z2MiCiAgICJfUHlPYmplY3RfR0NfTmV3IgogICAiX1B5T2JqZWN0X0dDX05ld1ZhciIKQEAgLTExODUsNyArMTE4NSw3IEBACiAgICJfUHlPYmplY3RfR0NfRGVsIgogICAiX1B5R0NfZ2VuZXJhdGlvbjAiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzaWduYWxtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2lnbmFsbW9kdWxlKQogOyAgImluaXRzaWduYWwiCiAgICJQeUVycl9DaGVja1NpZ25hbHMiCiAgICJQeUVycl9TZXRJbnRlcnJ1cHQiCkBAIC0xMTk0LDEyMSArMTE5NCwxMjEgQEAKICAgIlB5T1NfSW5pdEludGVycnVwdHMiCiAgICJQeU9TX0FmdGVyRm9yayIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHBvc2l4bW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHBvc2l4bW9kdWxlKQogOyAgImluaXRvczIiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfdGhyZWFkbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF90aHJlYWRtb2R1bGUpCiA7ICAiaW5pdF90aHJlYWQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihhcnJheW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihhcnJheW1vZHVsZSkKIDsgICJpbml0YXJyYXkiCiA7ICAiYXJyYXlfbWV0aG9kcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGJpbmFzY2lpKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGJpbmFzY2lpKQogOyAgImluaXRiaW5hc2NpaSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNtYXRobW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNtYXRobW9kdWxlKQogOyAgImluaXRjbWF0aCIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKF9jb2RlY3Ntb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoX2NvZGVjc21vZHVsZSkKIDsgICJpbml0X2NvZGVjcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKGNvbGxlY3Rpb25zbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNvbGxlY3Rpb25zbW9kdWxlKQogOyAgImluaXRjb2xsZWN0aW9ucyIKICAgImRlcXVlaXRlcl90eXBlIgogICAiZGVxdWVyZXZpdGVyX3R5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihjUGlja2xlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGNQaWNrbGUpCiA7ICAiaW5pdGNQaWNrbGUiCiA7ICAiZmFzdF9zYXZlX2xlYXZlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX2NzdikKKzsgRnJvbSBweXRob24zM19zLmxpYihfY3N2KQogOyAgImluaXRfY3N2IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZGF0ZXRpbWVtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGF0ZXRpbWVtb2R1bGUpCiA7ICAiaW5pdGRhdGV0aW1lIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZGxtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZGxtb2R1bGUpCiA7ICAiaW5pdGRsIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZXJybm9tb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZXJybm9tb2R1bGUpCiA7ICAiaW5pdGVycm5vIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoZmNudGxtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoZmNudGxtb2R1bGUpCiA7ICAiaW5pdGZjbnRsIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX2Z1bmN0b29sc21vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfZnVuY3Rvb2xzbW9kdWxlKQogOyAgImluaXRfZnVuY3Rvb2xzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX2hlYXBxbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKF9oZWFwcW1vZHVsZSkKIDsgICJpbml0X2hlYXBxIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaW1hZ2VvcCkKKzsgRnJvbSBweXRob24zM19zLmxpYihpbWFnZW9wKQogOyAgImluaXRpbWFnZW9wIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoaXRlcnRvb2xzbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKGl0ZXJ0b29sc21vZHVsZSkKIDsgICJpbml0aXRlcnRvb2xzIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX2xvY2FsZW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfbG9jYWxlbW9kdWxlKQogOyAgImluaXRfbG9jYWxlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWF0aG1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihtYXRobW9kdWxlKQogOyAgImluaXRtYXRoIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIobWQ1KQorOyBGcm9tIHB5dGhvbjMzX3MubGliKG1kNSkKICAgIm1kNV9maW5pc2giCiAgICJtZDVfaW5pdCIKICAgIm1kNV9hcHBlbmQiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihtZDVtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIobWQ1bW9kdWxlKQogOyAgImluaXRfbWQ1IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIob3BlcmF0b3IpCis7IEZyb20gcHl0aG9uMzNfcy5saWIob3BlcmF0b3IpCiA7ICAiaW5pdG9wZXJhdG9yIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX3JhbmRvbW1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfcmFuZG9tbW9kdWxlKQogOyAgImluaXRfcmFuZG9tIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIocmdiaW1nbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHJnYmltZ21vZHVsZSkKIDsgICJpbml0cmdiaW1nIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc2hhbW9kdWxlKQorOyBGcm9tIHB5dGhvbjMzX3MubGliKHNoYW1vZHVsZSkKIDsgICJpbml0X3NoYSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHNoYTI1Nm1vZHVsZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihzaGEyNTZtb2R1bGUpCiA7ICAiaW5pdF9zaGEyNTYiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihzaGE1MTJtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc2hhNTEybW9kdWxlKQogOyAgImluaXRfc2hhNTEyIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX3NyZSkKKzsgRnJvbSBweXRob24zM19zLmxpYihfc3JlKQogOyAgImluaXRfc3JlIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3Ryb3Btb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3Ryb3Btb2R1bGUpCiA7ICAiaW5pdHN0cm9wIgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoX3N0cnVjdCkKKzsgRnJvbSBweXRob24zM19zLmxpYihfc3RydWN0KQogOyAgImluaXRfc3RydWN0IgogCi07IEZyb20gcHl0aG9uMjZfcy5saWIoc3ltdGFibGVtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoc3ltdGFibGVtb2R1bGUpCiA7ICAiaW5pdF9zeW10YWJsZSIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRlcm1pb3MpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodGVybWlvcykKIDsgICJpbml0dGVybWlvcyIKIAotOyBGcm9tIHB5dGhvbjI2X3MubGliKHRpbWVtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodGltZW1vZHVsZSkKIDsgICJpbml0dGltZSIKICAgIl9QeVRpbWVfRG91YmxlVG9UaW1ldCIKIDsgICJpbml0dGltZXpvbmUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih0aW1pbmdtb2R1bGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIodGltaW5nbW9kdWxlKQogOyAgImluaXR0aW1pbmciCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYihfd2Vha3JlZikKKzsgRnJvbSBweXRob24zM19zLmxpYihfd2Vha3JlZikKIDsgICJpbml0X3dlYWtyZWYiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih4eHN1YnR5cGUpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoeHhzdWJ0eXBlKQogOyAgImluaXR4eHN1YnR5cGUiCiAKLTsgRnJvbSBweXRob24yNl9zLmxpYih6aXBpbXBvcnQpCis7IEZyb20gcHl0aG9uMzNfcy5saWIoemlwaW1wb3J0KQogOyAgImluaXR6aXBpbXBvcnQiCmRpZmYgLS1naXQgYS9QQy9vczJ2YWNwcC9jb25maWcuYyBiL1BDL29zMnZhY3BwL2NvbmZpZy5jCmluZGV4IGJiZGY2ZjMuLmIyNmI1MjEgMTAwNjQ0Ci0tLSBhL1BDL29zMnZhY3BwL2NvbmZpZy5jCisrKyBiL1BDL29zMnZhY3BwL2NvbmZpZy5jCkBAIC04OCwxMCArODgsOSBAQAogICAgICAgICB7Im1hcnNoYWwiLCBQeU1hcnNoYWxfSW5pdH0sCiAKICAgICAgICAgLyogVGhpcyBsaXZlcyBpdCB3aXRoIGltcG9ydC5jICovCi0gICAgICAgIHsiaW1wIiwgaW5pdGltcH0sCisgICAgICAgIHsiX2ltcCIsIGluaXRpbXB9LAogCiAgICAgICAgIC8qIFRoZXNlIGVudHJpZXMgYXJlIGhlcmUgZm9yIHN5cy5idWlsdGluX21vZHVsZV9uYW1lcyAqLwotICAgICAgICB7Il9fbWFpbl9fIiwgTlVMTH0sCiAgICAgICAgIHsiYnVpbHRpbnMiLCBOVUxMfSwKICAgICAgICAgeyJzeXMiLCBOVUxMfSwKIApkaWZmIC0tZ2l0IGEvUEMvcHljb25maWcuaCBiL1BDL3B5Y29uZmlnLmgKaW5kZXggYmE4MDgwMC4uZDZkZTVmMCAxMDA2NDQKLS0tIGEvUEMvcHljb25maWcuaAorKysgYi9QQy9weWNvbmZpZy5oCkBAIC0yMTUsMTQgKzIxNSwxOSBAQAogI2RlZmluZSBjb3B5c2lnbiBfY29weXNpZ24KICNkZWZpbmUgaHlwb3QgX2h5cG90CiAKLSNlbmRpZiAvKiBfTVNDX1ZFUiAqLworLyogU2lkZSBieSBTaWRlIGFzc2VtYmxpZXMgc3VwcG9ydGVkIGluIFZTIDIwMDUgYW5kIFZTIDIwMDggYnV0IG5vdCAyMDEwKi8KKyNpZiBfTVNDX1ZFUiA+PSAxNDAwICYmIF9NU0NfVkVSIDwgMTYwMAorI2RlZmluZSBIQVZFX1NYUyAxCisjZW5kaWYKIAogLyogZGVmaW5lIHNvbWUgQU5TSSB0eXBlcyB0aGF0IGFyZSBub3QgZGVmaW5lZCBpbiBlYXJsaWVyIFdpbiBoZWFkZXJzICovCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gMTIwMAorI2lmIF9NU0NfVkVSID49IDEyMDAKIC8qIFRoaXMgZmlsZSBvbmx5IGV4aXN0cyBpbiBWQyA2LjAgb3IgaGlnaGVyICovCiAjaW5jbHVkZSA8YmFzZXRzZC5oPgogI2VuZGlmCiAKKyNlbmRpZiAvKiBfTVNDX1ZFUiAqLworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyogVGhlIEJvcmxhbmQgY29tcGlsZXIgZGVmaW5lcyBfX0JPUkxBTkRDX18gKi8KIC8qIFhYWCBUaGVzZSBkZWZpbmVzIGFyZSBsaWtlbHkgaW5jb21wbGV0ZSwgYnV0IHNob3VsZCBiZSBlYXN5IHRvIGZpeC4gKi8KQEAgLTMxOSwxMSArMzI0LDExIEBACiAJCQl0aGVpciBNYWtlZmlsZSAob3RoZXIgY29tcGlsZXJzIGFyZSBnZW5lcmFsbHkKIAkJCXRha2VuIGNhcmUgb2YgYnkgZGlzdHV0aWxzLikgKi8KICMJCQlpZiBkZWZpbmVkKF9ERUJVRykKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zMl9kLmxpYiIpCisjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzNfZC5saWIiKQogIwkJCWVsaWYgZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkKICMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zLmxpYiIpCiAjCQkJZWxzZQotIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjMyLmxpYiIpCisjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzMubGliIikKICMJCQllbmRpZiAvKiBfREVCVUcgKi8KICMJCWVuZGlmIC8qIF9NU0NfVkVSICovCiAjCWVuZGlmIC8qIFB5X0JVSUxEX0NPUkUgKi8KQEAgLTU1MCwxMCArNTU1LDYgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIEdOVSByZWFkbGluZSBsaWJyYXJ5ICovCiAvKiAjZGVmaW5lIFdJVEhfUkVBRExJTkUgMSAqLwogCi0vKiBEZWZpbmUgYXMgdGhlIHNpemUgb2YgdGhlIHVuaWNvZGUgdHlwZS4gKi8KLS8qIFRoaXMgaXMgZW5vdWdoIGZvciB1bmljb2Rlb2JqZWN0LmggdG8gZG8gdGhlICJyaWdodCB0aGluZyIgb24gV2luZG93cy4gKi8KLSNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIDIKLQogLyogVXNlIFB5dGhvbidzIG93biBzbWFsbC1ibG9jayBtZW1vcnktYWxsb2NhdG9yLiAqLwogI2RlZmluZSBXSVRIX1BZTUFMTE9DIDEKIApAQCAtNzE0LDkgKzcxNSw2IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdXRzbmFtZS5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1VUU05BTUVfSCAxICovCiAKLS8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPHRocmVhZC5oPiBoZWFkZXIgZmlsZS4gICovCi0vKiAjdW5kZWYgSEFWRV9USFJFQURfSCAqLwotCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICAqLwogLyogI2RlZmluZSBIQVZFX1VOSVNURF9IIDEgKi8KIApkaWZmIC0tZ2l0IGEvUEMvcHlsYXVuY2hlci5yYyBiL1BDL3B5bGF1bmNoZXIucmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY1ODI0YQotLS0gL2Rldi9udWxsCisrKyBiL1BDL3B5bGF1bmNoZXIucmMKQEAgLTAsMCArMSw1MSBAQAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworI2RlZmluZSBNU19XSU5ET1dTCisjaW5jbHVkZSAiLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiCisjaW5jbHVkZSAiLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiCisjaWZkZWYgX0RFQlVHCisjICAgaW5jbHVkZSAicHl0aG9ubnRfcmNfZC5oIgorI2Vsc2UKKyMgICBpbmNsdWRlICJweXRob25udF9yYy5oIgorI2VuZGlmCisKKyNkZWZpbmUgUFlUSE9OX1ZFUlNJT04gUFlfVkVSU0lPTiAiXDAiCisjZGVmaW5lIFBZVkVSU0lPTjY0IFBZX01BSk9SX1ZFUlNJT04sIFBZX01JTk9SX1ZFUlNJT04sIEZJRUxEMywgUFlUSE9OX0FQSV9WRVJTSU9OCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTworIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CisgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKKyBGSUxFRkxBR1NNQVNLIDB4MTdMCisjaWZkZWYgX0RFQlVHCisgRklMRUZMQUdTIDB4MUwKKyNlbHNlCisgRklMRUZMQUdTIDB4MEwKKyNlbmRpZgorIEZJTEVPUyAweDRMCisgRklMRVRZUEUgMHgxTAorIEZJTEVTVUJUWVBFIDB4MEwKK0JFR0lOCisgICAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICAgIEJFR0lOCisgICAgICAgIEJMT0NLICIwODA5MDRiMCIKKyAgICAgICAgQkVHSU4KKyAgICAgICAgICAgIFZBTFVFICJDb21tZW50cyIsICJQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MiCisgICAgICAgICAgICBWQUxVRSAiQ29tcGFueU5hbWUiLCAiUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24iCisgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyAoQ29uc29sZSkiCisgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJweSIKKyAgICAgICAgICAgIFZBTFVFICJMZWdhbENvcHlyaWdodCIsICJDb3B5cmlnaHQgKEMpIDIwMTEtMjAxMiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiIKKyAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgInB5IgorICAgICAgICAgICAgVkFMVUUgIlByb2R1Y3ROYW1lIiwgIlB5dGhvbiBMYXVuY2hlciBmb3IgV2luZG93cyIKKyAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgIEVORAorICAgIEVORAorICAgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgICBCRUdJTgorICAgICAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDgwOSwgMTIwMAorICAgIEVORAorRU5ECisKK0lESV9JQ09OMSAgICAgICAgICAgICAgIElDT04gICAgICAgICAgICAgICAgICAgICJsYXVuY2hlci5pY28iCisKKwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMy5kZWYgYi9QQy9weXRob24zLmRlZgppbmRleCBhODQ1MzM1Li5kNzI2NTI1IDEwMDY0NAotLS0gYS9QQy9weXRob24zLmRlZgorKysgYi9QQy9weXRob24zLmRlZgpAQCAtMSw2ODkgKzEsNjk5IEBACis7IFdoZW4gY2hhbmdpbmcgdGhpcyBmaWxlLCBydW4gcHl0aG9uMzNnZW4ucHkKIExJQlJBUlkJInB5dGhvbjMiCiBFWFBPUlRTCi0gIFB5QXJnX1BhcnNlPXB5dGhvbjMyLlB5QXJnX1BhcnNlCi0gIFB5QXJnX1BhcnNlVHVwbGU9cHl0aG9uMzIuUHlBcmdfUGFyc2VUdXBsZQotICBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzIuUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzCi0gIFB5QXJnX1VucGFja1R1cGxlPXB5dGhvbjMyLlB5QXJnX1VucGFja1R1cGxlCi0gIFB5QXJnX1ZhUGFyc2U9cHl0aG9uMzIuUHlBcmdfVmFQYXJzZQotICBQeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zMi5QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHM9cHl0aG9uMzIuUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzCi0gIFB5QmFzZU9iamVjdF9UeXBlPXB5dGhvbjMyLlB5QmFzZU9iamVjdF9UeXBlIERBVEEKLSAgUHlCb29sX0Zyb21Mb25nPXB5dGhvbjMyLlB5Qm9vbF9Gcm9tTG9uZwotICBQeUJvb2xfVHlwZT1weXRob24zMi5QeUJvb2xfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5SXRlcl9UeXBlPXB5dGhvbjMyLlB5Qnl0ZUFycmF5SXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlQXJyYXlfQXNTdHJpbmc9cHl0aG9uMzIuUHlCeXRlQXJyYXlfQXNTdHJpbmcKLSAgUHlCeXRlQXJyYXlfQ29uY2F0PXB5dGhvbjMyLlB5Qnl0ZUFycmF5X0NvbmNhdAotICBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0PXB5dGhvbjMyLlB5Qnl0ZUFycmF5X0Zyb21PYmplY3QKLSAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzIuUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlQXJyYXlfUmVzaXplPXB5dGhvbjMyLlB5Qnl0ZUFycmF5X1Jlc2l6ZQotICBQeUJ5dGVBcnJheV9TaXplPXB5dGhvbjMyLlB5Qnl0ZUFycmF5X1NpemUKLSAgUHlCeXRlQXJyYXlfVHlwZT1weXRob24zMi5QeUJ5dGVBcnJheV9UeXBlIERBVEEKLSAgUHlCeXRlc0l0ZXJfVHlwZT1weXRob24zMi5QeUJ5dGVzSXRlcl9UeXBlIERBVEEKLSAgUHlCeXRlc19Bc1N0cmluZz1weXRob24zMi5QeUJ5dGVzX0FzU3RyaW5nCi0gIFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplPXB5dGhvbjMyLlB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfQ29uY2F0PXB5dGhvbjMyLlB5Qnl0ZXNfQ29uY2F0Ci0gIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsPXB5dGhvbjMyLlB5Qnl0ZXNfQ29uY2F0QW5kRGVsCi0gIFB5Qnl0ZXNfRGVjb2RlRXNjYXBlPXB5dGhvbjMyLlB5Qnl0ZXNfRGVjb2RlRXNjYXBlCi0gIFB5Qnl0ZXNfRnJvbUZvcm1hdD1weXRob24zMi5QeUJ5dGVzX0Zyb21Gb3JtYXQKLSAgUHlCeXRlc19Gcm9tRm9ybWF0Vj1weXRob24zMi5QeUJ5dGVzX0Zyb21Gb3JtYXRWCi0gIFB5Qnl0ZXNfRnJvbU9iamVjdD1weXRob24zMi5QeUJ5dGVzX0Zyb21PYmplY3QKLSAgUHlCeXRlc19Gcm9tU3RyaW5nPXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbVN0cmluZwotICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMyLlB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUKLSAgUHlCeXRlc19SZXByPXB5dGhvbjMyLlB5Qnl0ZXNfUmVwcgotICBQeUJ5dGVzX1NpemU9cHl0aG9uMzIuUHlCeXRlc19TaXplCi0gIFB5Qnl0ZXNfVHlwZT1weXRob24zMi5QeUJ5dGVzX1R5cGUgREFUQQotICBQeUNGdW5jdGlvbl9DYWxsPXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX0NhbGwKLSAgUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdD1weXRob24zMi5QeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0Ci0gIFB5Q0Z1bmN0aW9uX0dldEZsYWdzPXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX0dldEZsYWdzCi0gIFB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uPXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX0dldEZ1bmN0aW9uCi0gIFB5Q0Z1bmN0aW9uX0dldFNlbGY9cHl0aG9uMzIuUHlDRnVuY3Rpb25fR2V0U2VsZgotICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zMi5QeUNGdW5jdGlvbl9OZXdFeAotICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjMyLlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQotICBQeUNhbGxJdGVyX05ldz1weXRob24zMi5QeUNhbGxJdGVyX05ldwotICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzIuUHlDYWxsSXRlcl9UeXBlIERBVEEKLSAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zMi5QeUNhbGxhYmxlX0NoZWNrCi0gIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjMyLlB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjMyLlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjMyLlB5Q2Fwc3VsZV9HZXROYW1lCi0gIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjMyLlB5Q2Fwc3VsZV9HZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzIuUHlDYXBzdWxlX0ltcG9ydAotICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zMi5QeUNhcHN1bGVfSXNWYWxpZAotICBQeUNhcHN1bGVfTmV3PXB5dGhvbjMyLlB5Q2Fwc3VsZV9OZXcKLSAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzIuUHlDYXBzdWxlX1NldENvbnRleHQKLSAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzIuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzIuUHlDYXBzdWxlX1NldE5hbWUKLSAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzIuUHlDYXBzdWxlX1NldFBvaW50ZXIKLSAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzIuUHlDYXBzdWxlX1R5cGUgREFUQQotICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zMi5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zMi5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzIuUHlDb2RlY19EZWNvZGUKLSAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjMyLlB5Q29kZWNfRGVjb2RlcgotICBQeUNvZGVjX0VuY29kZT1weXRob24zMi5QeUNvZGVjX0VuY29kZQotICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzIuUHlDb2RlY19FbmNvZGVyCi0gIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjMyLlB5Q29kZWNfSWdub3JlRXJyb3JzCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjMyLlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjMyLlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCi0gIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zMi5QeUNvZGVjX0tub3duRW5jb2RpbmcKLSAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zMi5QeUNvZGVjX0xvb2t1cEVycm9yCi0gIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzIuUHlDb2RlY19SZWdpc3RlcgotICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzIuUHlDb2RlY19SZWdpc3RlckVycm9yCi0gIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zMi5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzIuUHlDb2RlY19TdHJlYW1SZWFkZXIKLSAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzIuUHlDb2RlY19TdHJlYW1Xcml0ZXIKLSAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzIuUHlDb2RlY19TdHJpY3RFcnJvcnMKLSAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zMi5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCi0gIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zMi5QeUNvbXBsZXhfRnJvbURvdWJsZXMKLSAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zMi5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi0gIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzIuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQotICBQeUNvbXBsZXhfVHlwZT1weXRob24zMi5QeUNvbXBsZXhfVHlwZSBEQVRBCi0gIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzIuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotICBQeURlc2NyX05ld0dldFNldD1weXRob24zMi5QeURlc2NyX05ld0dldFNldAotICBQeURlc2NyX05ld01lbWJlcj1weXRob24zMi5QeURlc2NyX05ld01lbWJlcgotICBQeURlc2NyX05ld01ldGhvZD1weXRob24zMi5QeURlc2NyX05ld01ldGhvZAotICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjMyLlB5RGljdEl0ZW1zX1R5cGUgREFUQQotICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjMyLlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQotICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzIuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzIuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQotICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzIuUHlEaWN0S2V5c19UeXBlIERBVEEKLSAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjMyLlB5RGljdFByb3h5X05ldwotICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjMyLlB5RGljdFByb3h5X1R5cGUgREFUQQotICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zMi5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5RGljdF9DbGVhcj1weXRob24zMi5QeURpY3RfQ2xlYXIKLSAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjMyLlB5RGljdF9Db250YWlucwotICBQeURpY3RfQ29weT1weXRob24zMi5QeURpY3RfQ29weQotICBQeURpY3RfRGVsSXRlbT1weXRob24zMi5QeURpY3RfRGVsSXRlbQotICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zMi5QeURpY3RfRGVsSXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbT1weXRob24zMi5QeURpY3RfR2V0SXRlbQotICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zMi5QeURpY3RfR2V0SXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zMi5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotICBQeURpY3RfSXRlbXM9cHl0aG9uMzIuUHlEaWN0X0l0ZW1zCi0gIFB5RGljdF9LZXlzPXB5dGhvbjMyLlB5RGljdF9LZXlzCi0gIFB5RGljdF9NZXJnZT1weXRob24zMi5QeURpY3RfTWVyZ2UKLSAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzIuUHlEaWN0X01lcmdlRnJvbVNlcTIKLSAgUHlEaWN0X05ldz1weXRob24zMi5QeURpY3RfTmV3Ci0gIFB5RGljdF9OZXh0PXB5dGhvbjMyLlB5RGljdF9OZXh0Ci0gIFB5RGljdF9TZXRJdGVtPXB5dGhvbjMyLlB5RGljdF9TZXRJdGVtCi0gIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjMyLlB5RGljdF9TZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9TaXplPXB5dGhvbjMyLlB5RGljdF9TaXplCi0gIFB5RGljdF9UeXBlPXB5dGhvbjMyLlB5RGljdF9UeXBlIERBVEEKLSAgUHlEaWN0X1VwZGF0ZT1weXRob24zMi5QeURpY3RfVXBkYXRlCi0gIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzIuUHlEaWN0X1ZhbHVlcwotICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzIuUHlFbGxpcHNpc19UeXBlIERBVEEKLSAgUHlFbnVtX1R5cGU9cHl0aG9uMzIuUHlFbnVtX1R5cGUgREFUQQotICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zMi5QeUVycl9CYWRBcmd1bWVudAotICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzIuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zMi5QeUVycl9DaGVja1NpZ25hbHMKLSAgUHlFcnJfQ2xlYXI9cHl0aG9uMzIuUHlFcnJfQ2xlYXIKLSAgUHlFcnJfRGlzcGxheT1weXRob24zMi5QeUVycl9EaXNwbGF5Ci0gIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzIuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9GZXRjaD1weXRob24zMi5QeUVycl9GZXRjaAotICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzIuUHlFcnJfRm9ybWF0Ci0gIFB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zMi5QeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXMKLSAgUHlFcnJfTmV3RXhjZXB0aW9uPXB5dGhvbjMyLlB5RXJyX05ld0V4Y2VwdGlvbgotICBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jPXB5dGhvbjMyLlB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2MKLSAgUHlFcnJfTm9NZW1vcnk9cHl0aG9uMzIuUHlFcnJfTm9NZW1vcnkKLSAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uPXB5dGhvbjMyLlB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbgotICBQeUVycl9PY2N1cnJlZD1weXRob24zMi5QeUVycl9PY2N1cnJlZAotICBQeUVycl9QcmludD1weXRob24zMi5QeUVycl9QcmludAotICBQeUVycl9QcmludEV4PXB5dGhvbjMyLlB5RXJyX1ByaW50RXgKLSAgUHlFcnJfUHJvZ3JhbVRleHQ9cHl0aG9uMzIuUHlFcnJfUHJvZ3JhbVRleHQKLSAgUHlFcnJfUmVzdG9yZT1weXRob24zMi5QeUVycl9SZXN0b3JlCi0gIFB5RXJyX1NldEZyb21FcnJubz1weXRob24zMi5QeUVycl9TZXRGcm9tRXJybm8KLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lPXB5dGhvbjMyLlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZQotICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3Q9cHl0aG9uMzIuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0Ci0gIFB5RXJyX1NldEludGVycnVwdD1weXRob24zMi5QeUVycl9TZXRJbnRlcnJ1cHQKLSAgUHlFcnJfU2V0Tm9uZT1weXRob24zMi5QeUVycl9TZXROb25lCi0gIFB5RXJyX1NldE9iamVjdD1weXRob24zMi5QeUVycl9TZXRPYmplY3QKLSAgUHlFcnJfU2V0U3RyaW5nPXB5dGhvbjMyLlB5RXJyX1NldFN0cmluZwotICBQeUVycl9TeW50YXhMb2NhdGlvbj1weXRob24zMi5QeUVycl9TeW50YXhMb2NhdGlvbgotICBQeUVycl9XYXJuRXg9cHl0aG9uMzIuUHlFcnJfV2FybkV4Ci0gIFB5RXJyX1dhcm5FeHBsaWNpdD1weXRob24zMi5QeUVycl9XYXJuRXhwbGljaXQKLSAgUHlFcnJfV2FybkZvcm1hdD1weXRob24zMi5QeUVycl9XYXJuRm9ybWF0Ci0gIFB5RXJyX1dyaXRlVW5yYWlzYWJsZT1weXRob24zMi5QeUVycl9Xcml0ZVVucmFpc2FibGUKLSAgUHlFdmFsX0FjcXVpcmVMb2NrPXB5dGhvbjMyLlB5RXZhbF9BY3F1aXJlTG9jawotICBQeUV2YWxfQWNxdWlyZVRocmVhZD1weXRob24zMi5QeUV2YWxfQWNxdWlyZVRocmVhZAotICBQeUV2YWxfQ2FsbEZ1bmN0aW9uPXB5dGhvbjMyLlB5RXZhbF9DYWxsRnVuY3Rpb24KLSAgUHlFdmFsX0NhbGxNZXRob2Q9cHl0aG9uMzIuUHlFdmFsX0NhbGxNZXRob2QKLSAgUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHM9cHl0aG9uMzIuUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMKLSAgUHlFdmFsX0V2YWxDb2RlPXB5dGhvbjMyLlB5RXZhbF9FdmFsQ29kZQotICBQeUV2YWxfRXZhbENvZGVFeD1weXRob24zMi5QeUV2YWxfRXZhbENvZGVFeAotICBQeUV2YWxfRXZhbEZyYW1lPXB5dGhvbjMyLlB5RXZhbF9FdmFsRnJhbWUKLSAgUHlFdmFsX0V2YWxGcmFtZUV4PXB5dGhvbjMyLlB5RXZhbF9FdmFsRnJhbWVFeAotICBQeUV2YWxfR2V0QnVpbHRpbnM9cHl0aG9uMzIuUHlFdmFsX0dldEJ1aWx0aW5zCi0gIFB5RXZhbF9HZXRDYWxsU3RhdHM9cHl0aG9uMzIuUHlFdmFsX0dldENhbGxTdGF0cwotICBQeUV2YWxfR2V0RnJhbWU9cHl0aG9uMzIuUHlFdmFsX0dldEZyYW1lCi0gIFB5RXZhbF9HZXRGdW5jRGVzYz1weXRob24zMi5QeUV2YWxfR2V0RnVuY0Rlc2MKLSAgUHlFdmFsX0dldEZ1bmNOYW1lPXB5dGhvbjMyLlB5RXZhbF9HZXRGdW5jTmFtZQotICBQeUV2YWxfR2V0R2xvYmFscz1weXRob24zMi5QeUV2YWxfR2V0R2xvYmFscwotICBQeUV2YWxfR2V0TG9jYWxzPXB5dGhvbjMyLlB5RXZhbF9HZXRMb2NhbHMKLSAgUHlFdmFsX0luaXRUaHJlYWRzPXB5dGhvbjMyLlB5RXZhbF9Jbml0VGhyZWFkcwotICBQeUV2YWxfUmVJbml0VGhyZWFkcz1weXRob24zMi5QeUV2YWxfUmVJbml0VGhyZWFkcwotICBQeUV2YWxfUmVsZWFzZUxvY2s9cHl0aG9uMzIuUHlFdmFsX1JlbGVhc2VMb2NrCi0gIFB5RXZhbF9SZWxlYXNlVGhyZWFkPXB5dGhvbjMyLlB5RXZhbF9SZWxlYXNlVGhyZWFkCi0gIFB5RXZhbF9SZXN0b3JlVGhyZWFkPXB5dGhvbjMyLlB5RXZhbF9SZXN0b3JlVGhyZWFkCi0gIFB5RXZhbF9TYXZlVGhyZWFkPXB5dGhvbjMyLlB5RXZhbF9TYXZlVGhyZWFkCi0gIFB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQ9cHl0aG9uMzIuUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZAotICBQeUV4Y19Bcml0aG1ldGljRXJyb3I9cHl0aG9uMzIuUHlFeGNfQXJpdGhtZXRpY0Vycm9yIERBVEEKLSAgUHlFeGNfQXNzZXJ0aW9uRXJyb3I9cHl0aG9uMzIuUHlFeGNfQXNzZXJ0aW9uRXJyb3IgREFUQQotICBQeUV4Y19BdHRyaWJ1dGVFcnJvcj1weXRob24zMi5QeUV4Y19BdHRyaWJ1dGVFcnJvciBEQVRBCi0gIFB5RXhjX0Jhc2VFeGNlcHRpb249cHl0aG9uMzIuUHlFeGNfQmFzZUV4Y2VwdGlvbiBEQVRBCi0gIFB5RXhjX0J1ZmZlckVycm9yPXB5dGhvbjMyLlB5RXhjX0J1ZmZlckVycm9yIERBVEEKLSAgUHlFeGNfQnl0ZXNXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX0J5dGVzV2FybmluZyBEQVRBCi0gIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zMi5QeUV4Y19EZXByZWNhdGlvbldhcm5pbmcgREFUQQotICBQeUV4Y19FT0ZFcnJvcj1weXRob24zMi5QeUV4Y19FT0ZFcnJvciBEQVRBCi0gIFB5RXhjX0Vudmlyb25tZW50RXJyb3I9cHl0aG9uMzIuUHlFeGNfRW52aXJvbm1lbnRFcnJvciBEQVRBCi0gIFB5RXhjX0V4Y2VwdGlvbj1weXRob24zMi5QeUV4Y19FeGNlcHRpb24gREFUQQotICBQeUV4Y19GbG9hdGluZ1BvaW50RXJyb3I9cHl0aG9uMzIuUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yIERBVEEKLSAgUHlFeGNfRnV0dXJlV2FybmluZz1weXRob24zMi5QeUV4Y19GdXR1cmVXYXJuaW5nIERBVEEKLSAgUHlFeGNfR2VuZXJhdG9yRXhpdD1weXRob24zMi5QeUV4Y19HZW5lcmF0b3JFeGl0IERBVEEKLSAgUHlFeGNfSU9FcnJvcj1weXRob24zMi5QeUV4Y19JT0Vycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0RXJyb3I9cHl0aG9uMzIuUHlFeGNfSW1wb3J0RXJyb3IgREFUQQotICBQeUV4Y19JbXBvcnRXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX0ltcG9ydFdhcm5pbmcgREFUQQotICBQeUV4Y19JbmRlbnRhdGlvbkVycm9yPXB5dGhvbjMyLlB5RXhjX0luZGVudGF0aW9uRXJyb3IgREFUQQotICBQeUV4Y19JbmRleEVycm9yPXB5dGhvbjMyLlB5RXhjX0luZGV4RXJyb3IgREFUQQotICBQeUV4Y19LZXlFcnJvcj1weXRob24zMi5QeUV4Y19LZXlFcnJvciBEQVRBCi0gIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0PXB5dGhvbjMyLlB5RXhjX0tleWJvYXJkSW50ZXJydXB0IERBVEEKLSAgUHlFeGNfTG9va3VwRXJyb3I9cHl0aG9uMzIuUHlFeGNfTG9va3VwRXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvcj1weXRob24zMi5QeUV4Y19NZW1vcnlFcnJvciBEQVRBCi0gIFB5RXhjX01lbW9yeUVycm9ySW5zdD1weXRob24zMi5QeUV4Y19NZW1vcnlFcnJvckluc3QgREFUQQotICBQeUV4Y19OYW1lRXJyb3I9cHl0aG9uMzIuUHlFeGNfTmFtZUVycm9yIERBVEEKLSAgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcj1weXRob24zMi5QeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yIERBVEEKLSAgUHlFeGNfT1NFcnJvcj1weXRob24zMi5QeUV4Y19PU0Vycm9yIERBVEEKLSAgUHlFeGNfT3ZlcmZsb3dFcnJvcj1weXRob24zMi5QeUV4Y19PdmVyZmxvd0Vycm9yIERBVEEKLSAgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZz1weXRob24zMi5QeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0PXB5dGhvbjMyLlB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdCBEQVRBCi0gIFB5RXhjX1JlZmVyZW5jZUVycm9yPXB5dGhvbjMyLlB5RXhjX1JlZmVyZW5jZUVycm9yIERBVEEKLSAgUHlFeGNfUnVudGltZUVycm9yPXB5dGhvbjMyLlB5RXhjX1J1bnRpbWVFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1J1bnRpbWVXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3RvcEl0ZXJhdGlvbj1weXRob24zMi5QeUV4Y19TdG9wSXRlcmF0aW9uIERBVEEKLSAgUHlFeGNfU3ludGF4RXJyb3I9cHl0aG9uMzIuUHlFeGNfU3ludGF4RXJyb3IgREFUQQotICBQeUV4Y19TeW50YXhXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1N5bnRheFdhcm5pbmcgREFUQQotICBQeUV4Y19TeXN0ZW1FcnJvcj1weXRob24zMi5QeUV4Y19TeXN0ZW1FcnJvciBEQVRBCi0gIFB5RXhjX1N5c3RlbUV4aXQ9cHl0aG9uMzIuUHlFeGNfU3lzdGVtRXhpdCBEQVRBCi0gIFB5RXhjX1RhYkVycm9yPXB5dGhvbjMyLlB5RXhjX1RhYkVycm9yIERBVEEKLSAgUHlFeGNfVHlwZUVycm9yPXB5dGhvbjMyLlB5RXhjX1R5cGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuYm91bmRMb2NhbEVycm9yPXB5dGhvbjMyLlB5RXhjX1VuYm91bmRMb2NhbEVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZURlY29kZUVycm9yPXB5dGhvbjMyLlB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcj1weXRob24zMi5QeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRXJyb3I9cHl0aG9uMzIuUHlFeGNfVW5pY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yPXB5dGhvbjMyLlB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVXYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1VuaWNvZGVXYXJuaW5nIERBVEEKLSAgUHlFeGNfVXNlcldhcm5pbmc9cHl0aG9uMzIuUHlFeGNfVXNlcldhcm5pbmcgREFUQQotICBQeUV4Y19WYWx1ZUVycm9yPXB5dGhvbjMyLlB5RXhjX1ZhbHVlRXJyb3IgREFUQQotICBQeUV4Y19XYXJuaW5nPXB5dGhvbjMyLlB5RXhjX1dhcm5pbmcgREFUQQotICBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcj1weXRob24zMi5QeUV4Y19aZXJvRGl2aXNpb25FcnJvciBEQVRBCi0gIFB5RXhjZXB0aW9uX0dldENhdXNlPXB5dGhvbjMyLlB5RXhjZXB0aW9uX0dldENhdXNlCi0gIFB5RXhjZXB0aW9uX0dldENvbnRleHQ9cHl0aG9uMzIuUHlFeGNlcHRpb25fR2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2s9cHl0aG9uMzIuUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrCi0gIFB5RXhjZXB0aW9uX1NldENhdXNlPXB5dGhvbjMyLlB5RXhjZXB0aW9uX1NldENhdXNlCi0gIFB5RXhjZXB0aW9uX1NldENvbnRleHQ9cHl0aG9uMzIuUHlFeGNlcHRpb25fU2V0Q29udGV4dAotICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2s9cHl0aG9uMzIuUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrCi0gIFB5RmlsZV9Gcm9tRmQ9cHl0aG9uMzIuUHlGaWxlX0Zyb21GZAotICBQeUZpbGVfR2V0TGluZT1weXRob24zMi5QeUZpbGVfR2V0TGluZQotICBQeUZpbGVfV3JpdGVPYmplY3Q9cHl0aG9uMzIuUHlGaWxlX1dyaXRlT2JqZWN0Ci0gIFB5RmlsZV9Xcml0ZVN0cmluZz1weXRob24zMi5QeUZpbGVfV3JpdGVTdHJpbmcKLSAgUHlGaWx0ZXJfVHlwZT1weXRob24zMi5QeUZpbHRlcl9UeXBlIERBVEEKLSAgUHlGbG9hdF9Bc0RvdWJsZT1weXRob24zMi5QeUZsb2F0X0FzRG91YmxlCi0gIFB5RmxvYXRfRnJvbURvdWJsZT1weXRob24zMi5QeUZsb2F0X0Zyb21Eb3VibGUKLSAgUHlGbG9hdF9Gcm9tU3RyaW5nPXB5dGhvbjMyLlB5RmxvYXRfRnJvbVN0cmluZwotICBQeUZsb2F0X0dldEluZm89cHl0aG9uMzIuUHlGbG9hdF9HZXRJbmZvCi0gIFB5RmxvYXRfR2V0TWF4PXB5dGhvbjMyLlB5RmxvYXRfR2V0TWF4Ci0gIFB5RmxvYXRfR2V0TWluPXB5dGhvbjMyLlB5RmxvYXRfR2V0TWluCi0gIFB5RmxvYXRfVHlwZT1weXRob24zMi5QeUZsb2F0X1R5cGUgREFUQQotICBQeUZyb3plblNldF9OZXc9cHl0aG9uMzIuUHlGcm96ZW5TZXRfTmV3Ci0gIFB5RnJvemVuU2V0X1R5cGU9cHl0aG9uMzIuUHlGcm96ZW5TZXRfVHlwZSBEQVRBCi0gIFB5R0NfQ29sbGVjdD1weXRob24zMi5QeUdDX0NvbGxlY3QKLSAgUHlHSUxTdGF0ZV9FbnN1cmU9cHl0aG9uMzIuUHlHSUxTdGF0ZV9FbnN1cmUKLSAgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGU9cHl0aG9uMzIuUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUKLSAgUHlHSUxTdGF0ZV9SZWxlYXNlPXB5dGhvbjMyLlB5R0lMU3RhdGVfUmVsZWFzZQotICBQeUdldFNldERlc2NyX1R5cGU9cHl0aG9uMzIuUHlHZXRTZXREZXNjcl9UeXBlIERBVEEKLSAgUHlJbXBvcnRfQWRkTW9kdWxlPXB5dGhvbjMyLlB5SW1wb3J0X0FkZE1vZHVsZQotICBQeUltcG9ydF9BcHBlbmRJbml0dGFiPXB5dGhvbjMyLlB5SW1wb3J0X0FwcGVuZEluaXR0YWIKLSAgUHlJbXBvcnRfQ2xlYW51cD1weXRob24zMi5QeUltcG9ydF9DbGVhbnVwCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlPXB5dGhvbjMyLlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlCi0gIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXg9cHl0aG9uMzIuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXM9cHl0aG9uMzIuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzCi0gIFB5SW1wb3J0X0dldEltcG9ydGVyPXB5dGhvbjMyLlB5SW1wb3J0X0dldEltcG9ydGVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyPXB5dGhvbjMyLlB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyCi0gIFB5SW1wb3J0X0dldE1hZ2ljVGFnPXB5dGhvbjMyLlB5SW1wb3J0X0dldE1hZ2ljVGFnCi0gIFB5SW1wb3J0X0dldE1vZHVsZURpY3Q9cHl0aG9uMzIuUHlJbXBvcnRfR2V0TW9kdWxlRGljdAotICBQeUltcG9ydF9JbXBvcnQ9cHl0aG9uMzIuUHlJbXBvcnRfSW1wb3J0Ci0gIFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZT1weXRob24zMi5QeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlPXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydE1vZHVsZQotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbD1weXRob24zMi5QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbAotICBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrPXB5dGhvbjMyLlB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2sKLSAgUHlJbXBvcnRfUmVsb2FkTW9kdWxlPXB5dGhvbjMyLlB5SW1wb3J0X1JlbG9hZE1vZHVsZQotICBQeUludGVycHJldGVyU3RhdGVfQ2xlYXI9cHl0aG9uMzIuUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyCi0gIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGU9cHl0aG9uMzIuUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZQotICBQeUludGVycHJldGVyU3RhdGVfTmV3PXB5dGhvbjMyLlB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXcKLSAgUHlJdGVyX05leHQ9cHl0aG9uMzIuUHlJdGVyX05leHQKLSAgUHlMaXN0SXRlcl9UeXBlPXB5dGhvbjMyLlB5TGlzdEl0ZXJfVHlwZSBEQVRBCi0gIFB5TGlzdFJldkl0ZXJfVHlwZT1weXRob24zMi5QeUxpc3RSZXZJdGVyX1R5cGUgREFUQQotICBQeUxpc3RfQXBwZW5kPXB5dGhvbjMyLlB5TGlzdF9BcHBlbmQKLSAgUHlMaXN0X0FzVHVwbGU9cHl0aG9uMzIuUHlMaXN0X0FzVHVwbGUKLSAgUHlMaXN0X0dldEl0ZW09cHl0aG9uMzIuUHlMaXN0X0dldEl0ZW0KLSAgUHlMaXN0X0dldFNsaWNlPXB5dGhvbjMyLlB5TGlzdF9HZXRTbGljZQotICBQeUxpc3RfSW5zZXJ0PXB5dGhvbjMyLlB5TGlzdF9JbnNlcnQKLSAgUHlMaXN0X05ldz1weXRob24zMi5QeUxpc3RfTmV3Ci0gIFB5TGlzdF9SZXZlcnNlPXB5dGhvbjMyLlB5TGlzdF9SZXZlcnNlCi0gIFB5TGlzdF9TZXRJdGVtPXB5dGhvbjMyLlB5TGlzdF9TZXRJdGVtCi0gIFB5TGlzdF9TZXRTbGljZT1weXRob24zMi5QeUxpc3RfU2V0U2xpY2UKLSAgUHlMaXN0X1NpemU9cHl0aG9uMzIuUHlMaXN0X1NpemUKLSAgUHlMaXN0X1NvcnQ9cHl0aG9uMzIuUHlMaXN0X1NvcnQKLSAgUHlMaXN0X1R5cGU9cHl0aG9uMzIuUHlMaXN0X1R5cGUgREFUQQotICBQeUxvbmdSYW5nZUl0ZXJfVHlwZT1weXRob24zMi5QeUxvbmdSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5TG9uZ19Bc0RvdWJsZT1weXRob24zMi5QeUxvbmdfQXNEb3VibGUKLSAgUHlMb25nX0FzTG9uZz1weXRob24zMi5QeUxvbmdfQXNMb25nCi0gIFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdz1weXRob24zMi5QeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cKLSAgUHlMb25nX0FzTG9uZ0xvbmc9cHl0aG9uMzIuUHlMb25nX0FzTG9uZ0xvbmcKLSAgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdz1weXRob24zMi5QeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc1NpemVfdD1weXRob24zMi5QeUxvbmdfQXNTaXplX3QKLSAgUHlMb25nX0FzU3NpemVfdD1weXRob24zMi5QeUxvbmdfQXNTc2l6ZV90Ci0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZz1weXRob24zMi5QeUxvbmdfQXNVbnNpZ25lZExvbmcKLSAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZz1weXRob24zMi5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrPXB5dGhvbjMyLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2s9cHl0aG9uMzIuUHlMb25nX0FzVW5zaWduZWRMb25nTWFzawotICBQeUxvbmdfQXNWb2lkUHRyPXB5dGhvbjMyLlB5TG9uZ19Bc1ZvaWRQdHIKLSAgUHlMb25nX0Zyb21Eb3VibGU9cHl0aG9uMzIuUHlMb25nX0Zyb21Eb3VibGUKLSAgUHlMb25nX0Zyb21Mb25nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tTG9uZwotICBQeUxvbmdfRnJvbUxvbmdMb25nPXB5dGhvbjMyLlB5TG9uZ19Gcm9tTG9uZ0xvbmcKLSAgUHlMb25nX0Zyb21TaXplX3Q9cHl0aG9uMzIuUHlMb25nX0Zyb21TaXplX3QKLSAgUHlMb25nX0Zyb21Tc2l6ZV90PXB5dGhvbjMyLlB5TG9uZ19Gcm9tU3NpemVfdAotICBQeUxvbmdfRnJvbVN0cmluZz1weXRob24zMi5QeUxvbmdfRnJvbVN0cmluZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZz1weXRob24zMi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZwotICBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzIuUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nCi0gIFB5TG9uZ19Gcm9tVm9pZFB0cj1weXRob24zMi5QeUxvbmdfRnJvbVZvaWRQdHIKLSAgUHlMb25nX0dldEluZm89cHl0aG9uMzIuUHlMb25nX0dldEluZm8KLSAgUHlMb25nX1R5cGU9cHl0aG9uMzIuUHlMb25nX1R5cGUgREFUQQotICBQeU1hcF9UeXBlPXB5dGhvbjMyLlB5TWFwX1R5cGUgREFUQQotICBQeU1hcHBpbmdfQ2hlY2s9cHl0aG9uMzIuUHlNYXBwaW5nX0NoZWNrCi0gIFB5TWFwcGluZ19HZXRJdGVtU3RyaW5nPXB5dGhvbjMyLlB5TWFwcGluZ19HZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19IYXNLZXk9cHl0aG9uMzIuUHlNYXBwaW5nX0hhc0tleQotICBQeU1hcHBpbmdfSGFzS2V5U3RyaW5nPXB5dGhvbjMyLlB5TWFwcGluZ19IYXNLZXlTdHJpbmcKLSAgUHlNYXBwaW5nX0l0ZW1zPXB5dGhvbjMyLlB5TWFwcGluZ19JdGVtcwotICBQeU1hcHBpbmdfS2V5cz1weXRob24zMi5QeU1hcHBpbmdfS2V5cwotICBQeU1hcHBpbmdfTGVuZ3RoPXB5dGhvbjMyLlB5TWFwcGluZ19MZW5ndGgKLSAgUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlNYXBwaW5nX1NldEl0ZW1TdHJpbmcKLSAgUHlNYXBwaW5nX1NpemU9cHl0aG9uMzIuUHlNYXBwaW5nX1NpemUKLSAgUHlNYXBwaW5nX1ZhbHVlcz1weXRob24zMi5QeU1hcHBpbmdfVmFsdWVzCi0gIFB5TWVtX0ZyZWU9cHl0aG9uMzIuUHlNZW1fRnJlZQotICBQeU1lbV9NYWxsb2M9cHl0aG9uMzIuUHlNZW1fTWFsbG9jCi0gIFB5TWVtX1JlYWxsb2M9cHl0aG9uMzIuUHlNZW1fUmVhbGxvYwotICBQeU1lbWJlckRlc2NyX1R5cGU9cHl0aG9uMzIuUHlNZW1iZXJEZXNjcl9UeXBlIERBVEEKLSAgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3Q9cHl0aG9uMzIuUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QKLSAgUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXM9cHl0aG9uMzIuUHlNZW1vcnlWaWV3X0dldENvbnRpZ3VvdXMKLSAgUHlNZW1vcnlWaWV3X1R5cGU9cHl0aG9uMzIuUHlNZW1vcnlWaWV3X1R5cGUgREFUQQotICBQeU1ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzIuUHlNZXRob2REZXNjcl9UeXBlIERBVEEKLSAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQ9cHl0aG9uMzIuUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQKLSAgUHlNb2R1bGVfQWRkT2JqZWN0PXB5dGhvbjMyLlB5TW9kdWxlX0FkZE9iamVjdAotICBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudD1weXRob24zMi5QeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudAotICBQeU1vZHVsZV9DcmVhdGUyPXB5dGhvbjMyLlB5TW9kdWxlX0NyZWF0ZTIKLSAgUHlNb2R1bGVfR2V0RGVmPXB5dGhvbjMyLlB5TW9kdWxlX0dldERlZgotICBQeU1vZHVsZV9HZXREaWN0PXB5dGhvbjMyLlB5TW9kdWxlX0dldERpY3QKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWU9cHl0aG9uMzIuUHlNb2R1bGVfR2V0RmlsZW5hbWUKLSAgUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3Q9cHl0aG9uMzIuUHlNb2R1bGVfR2V0RmlsZW5hbWVPYmplY3QKLSAgUHlNb2R1bGVfR2V0TmFtZT1weXRob24zMi5QeU1vZHVsZV9HZXROYW1lCi0gIFB5TW9kdWxlX0dldFN0YXRlPXB5dGhvbjMyLlB5TW9kdWxlX0dldFN0YXRlCi0gIFB5TW9kdWxlX05ldz1weXRob24zMi5QeU1vZHVsZV9OZXcKLSAgUHlNb2R1bGVfVHlwZT1weXRob24zMi5QeU1vZHVsZV9UeXBlIERBVEEKLSAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zMi5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKLSAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzIuUHlOdW1iZXJfQWJzb2x1dGUKLSAgUHlOdW1iZXJfQWRkPXB5dGhvbjMyLlB5TnVtYmVyX0FkZAotICBQeU51bWJlcl9BbmQ9cHl0aG9uMzIuUHlOdW1iZXJfQW5kCi0gIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zMi5QeU51bWJlcl9Bc1NzaXplX3QKLSAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzIuUHlOdW1iZXJfQ2hlY2sKLSAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjMyLlB5TnVtYmVyX0Rpdm1vZAotICBQeU51bWJlcl9GbG9hdD1weXRob24zMi5QeU51bWJlcl9GbG9hdAotICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zMi5QeU51bWJlcl9GbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VBZGQKLSAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zMi5QeU51bWJlcl9JblBsYWNlQW5kCi0gIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zMi5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKLSAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zMi5QeU51bWJlcl9JblBsYWNlTHNoaWZ0Ci0gIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zMi5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKLSAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VPcgotICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCi0gIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzIuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgotICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAotICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zMi5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQotICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjMyLlB5TnVtYmVyX0luUGxhY2VYb3IKLSAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzIuUHlOdW1iZXJfSW5kZXgKLSAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjMyLlB5TnVtYmVyX0ludmVydAotICBQeU51bWJlcl9Mb25nPXB5dGhvbjMyLlB5TnVtYmVyX0xvbmcKLSAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjMyLlB5TnVtYmVyX0xzaGlmdAotICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zMi5QeU51bWJlcl9NdWx0aXBseQotICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zMi5QeU51bWJlcl9OZWdhdGl2ZQotICBQeU51bWJlcl9Pcj1weXRob24zMi5QeU51bWJlcl9PcgotICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zMi5QeU51bWJlcl9Qb3NpdGl2ZQotICBQeU51bWJlcl9Qb3dlcj1weXRob24zMi5QeU51bWJlcl9Qb3dlcgotICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzIuUHlOdW1iZXJfUmVtYWluZGVyCi0gIFB5TnVtYmVyX1JzaGlmdD1weXRob24zMi5QeU51bWJlcl9Sc2hpZnQKLSAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzIuUHlOdW1iZXJfU3VidHJhY3QKLSAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjMyLlB5TnVtYmVyX1RvQmFzZQotICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjMyLlB5TnVtYmVyX1RydWVEaXZpZGUKLSAgUHlOdW1iZXJfWG9yPXB5dGhvbjMyLlB5TnVtYmVyX1hvcgotICBQeU9TX0FmdGVyRm9yaz1weXRob24zMi5QeU9TX0FmdGVyRm9yawotICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjMyLlB5T1NfSW5pdEludGVycnVwdHMKLSAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzIuUHlPU19JbnB1dEhvb2sgREFUQQotICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjMyLlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKLSAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zMi5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKLSAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjMyLlB5T1NfZG91YmxlX3RvX3N0cmluZwotICBQeU9TX2dldHNpZz1weXRob24zMi5QeU9TX2dldHNpZwotICBQeU9TX215c3RyaWNtcD1weXRob24zMi5QeU9TX215c3RyaWNtcAotICBQeU9TX215c3RybmljbXA9cHl0aG9uMzIuUHlPU19teXN0cm5pY21wCi0gIFB5T1Nfc2V0c2lnPXB5dGhvbjMyLlB5T1Nfc2V0c2lnCi0gIFB5T1Nfc25wcmludGY9cHl0aG9uMzIuUHlPU19zbnByaW50ZgotICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzIuUHlPU19zdHJpbmdfdG9fZG91YmxlCi0gIFB5T1Nfc3RydG9sPXB5dGhvbjMyLlB5T1Nfc3RydG9sCi0gIFB5T1Nfc3RydG91bD1weXRob24zMi5QeU9TX3N0cnRvdWwKLSAgUHlPU192c25wcmludGY9cHl0aG9uMzIuUHlPU192c25wcmludGYKLSAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzIuUHlPYmplY3RfQVNDSUkKLSAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjMyLlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgotICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjMyLlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKLSAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjMyLlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjMyLlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKLSAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzIuUHlPYmplY3RfQnl0ZXMKLSAgUHlPYmplY3RfQ2FsbD1weXRob24zMi5QeU9iamVjdF9DYWxsCi0gIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zMi5QeU9iamVjdF9DYWxsRnVuY3Rpb24KLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zMi5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzIuUHlPYmplY3RfQ2FsbE1ldGhvZAotICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zMi5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncwotICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjMyLlB5T2JqZWN0X0NhbGxPYmplY3QKLSAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjMyLlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgotICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjMyLlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKLSAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zMi5QeU9iamVjdF9EZWxJdGVtCi0gIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzIuUHlPYmplY3RfRGVsSXRlbVN0cmluZwotICBQeU9iamVjdF9EaXI9cHl0aG9uMzIuUHlPYmplY3RfRGlyCi0gIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zMi5QeU9iamVjdF9Gb3JtYXQKLSAgUHlPYmplY3RfRnJlZT1weXRob24zMi5QeU9iamVjdF9GcmVlCi0gIFB5T2JqZWN0X0dDX0RlbD1weXRob24zMi5QeU9iamVjdF9HQ19EZWwKLSAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzIuUHlPYmplY3RfR0NfVHJhY2sKLSAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zMi5QeU9iamVjdF9HQ19VblRyYWNrCi0gIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjMyLlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCi0gIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjMyLlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzIuUHlPYmplY3RfR2V0QXR0cgotICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjMyLlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zMi5QeU9iamVjdF9HZXRJdGVtCi0gIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzIuUHlPYmplY3RfR2V0SXRlcgotICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjMyLlB5T2JqZWN0X0hhc0F0dHIKLSAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zMi5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzIuUHlPYmplY3RfSGFzaAotICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzIuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCi0gIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzIuUHlPYmplY3RfSW5pdAotICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjMyLlB5T2JqZWN0X0luaXRWYXIKLSAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zMi5QeU9iamVjdF9Jc0luc3RhbmNlCi0gIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzIuUHlPYmplY3RfSXNTdWJjbGFzcwotICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzIuUHlPYmplY3RfSXNUcnVlCi0gIFB5T2JqZWN0X0xlbmd0aD1weXRob24zMi5QeU9iamVjdF9MZW5ndGgKLSAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjMyLlB5T2JqZWN0X01hbGxvYwotICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzIuUHlPYmplY3RfTm90Ci0gIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzIuUHlPYmplY3RfUmVhbGxvYwotICBQeU9iamVjdF9SZXByPXB5dGhvbjMyLlB5T2JqZWN0X1JlcHIKLSAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzIuUHlPYmplY3RfUmljaENvbXBhcmUKLSAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjMyLlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAotICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zMi5QeU9iamVjdF9TZWxmSXRlcgotICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjMyLlB5T2JqZWN0X1NldEF0dHIKLSAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zMi5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCi0gIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzIuUHlPYmplY3RfU2V0SXRlbQotICBQeU9iamVjdF9TaXplPXB5dGhvbjMyLlB5T2JqZWN0X1NpemUKLSAgUHlPYmplY3RfU3RyPXB5dGhvbjMyLlB5T2JqZWN0X1N0cgotICBQeU9iamVjdF9UeXBlPXB5dGhvbjMyLlB5T2JqZWN0X1R5cGUgREFUQQotICBQeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncz1weXRob24zMi5QeVBhcnNlcl9TaW1wbGVQYXJzZUZpbGVGbGFncwotICBQeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzPXB5dGhvbjMyLlB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3MKLSAgUHlQcm9wZXJ0eV9UeXBlPXB5dGhvbjMyLlB5UHJvcGVydHlfVHlwZSBEQVRBCi0gIFB5UmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzIuUHlSYW5nZUl0ZXJfVHlwZSBEQVRBCi0gIFB5UmFuZ2VfVHlwZT1weXRob24zMi5QeVJhbmdlX1R5cGUgREFUQQotICBQeVJldmVyc2VkX1R5cGU9cHl0aG9uMzIuUHlSZXZlcnNlZF9UeXBlIERBVEEKLSAgUHlTZXFJdGVyX05ldz1weXRob24zMi5QeVNlcUl0ZXJfTmV3Ci0gIFB5U2VxSXRlcl9UeXBlPXB5dGhvbjMyLlB5U2VxSXRlcl9UeXBlIERBVEEKLSAgUHlTZXF1ZW5jZV9DaGVjaz1weXRob24zMi5QeVNlcXVlbmNlX0NoZWNrCi0gIFB5U2VxdWVuY2VfQ29uY2F0PXB5dGhvbjMyLlB5U2VxdWVuY2VfQ29uY2F0Ci0gIFB5U2VxdWVuY2VfQ29udGFpbnM9cHl0aG9uMzIuUHlTZXF1ZW5jZV9Db250YWlucwotICBQeVNlcXVlbmNlX0NvdW50PXB5dGhvbjMyLlB5U2VxdWVuY2VfQ291bnQKLSAgUHlTZXF1ZW5jZV9EZWxJdGVtPXB5dGhvbjMyLlB5U2VxdWVuY2VfRGVsSXRlbQotICBQeVNlcXVlbmNlX0RlbFNsaWNlPXB5dGhvbjMyLlB5U2VxdWVuY2VfRGVsU2xpY2UKLSAgUHlTZXF1ZW5jZV9GYXN0PXB5dGhvbjMyLlB5U2VxdWVuY2VfRmFzdAotICBQeVNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzIuUHlTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U2VxdWVuY2VfR2V0U2xpY2U9cHl0aG9uMzIuUHlTZXF1ZW5jZV9HZXRTbGljZQotICBQeVNlcXVlbmNlX0luPXB5dGhvbjMyLlB5U2VxdWVuY2VfSW4KLSAgUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0PXB5dGhvbjMyLlB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdAotICBQeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQ9cHl0aG9uMzIuUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0Ci0gIFB5U2VxdWVuY2VfSW5kZXg9cHl0aG9uMzIuUHlTZXF1ZW5jZV9JbmRleAotICBQeVNlcXVlbmNlX0xlbmd0aD1weXRob24zMi5QeVNlcXVlbmNlX0xlbmd0aAotICBQeVNlcXVlbmNlX0xpc3Q9cHl0aG9uMzIuUHlTZXF1ZW5jZV9MaXN0Ci0gIFB5U2VxdWVuY2VfUmVwZWF0PXB5dGhvbjMyLlB5U2VxdWVuY2VfUmVwZWF0Ci0gIFB5U2VxdWVuY2VfU2V0SXRlbT1weXRob24zMi5QeVNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTZXF1ZW5jZV9TZXRTbGljZT1weXRob24zMi5QeVNlcXVlbmNlX1NldFNsaWNlCi0gIFB5U2VxdWVuY2VfU2l6ZT1weXRob24zMi5QeVNlcXVlbmNlX1NpemUKLSAgUHlTZXF1ZW5jZV9UdXBsZT1weXRob24zMi5QeVNlcXVlbmNlX1R1cGxlCi0gIFB5U2V0SXRlcl9UeXBlPXB5dGhvbjMyLlB5U2V0SXRlcl9UeXBlIERBVEEKLSAgUHlTZXRfQWRkPXB5dGhvbjMyLlB5U2V0X0FkZAotICBQeVNldF9DbGVhcj1weXRob24zMi5QeVNldF9DbGVhcgotICBQeVNldF9Db250YWlucz1weXRob24zMi5QeVNldF9Db250YWlucwotICBQeVNldF9EaXNjYXJkPXB5dGhvbjMyLlB5U2V0X0Rpc2NhcmQKLSAgUHlTZXRfTmV3PXB5dGhvbjMyLlB5U2V0X05ldwotICBQeVNldF9Qb3A9cHl0aG9uMzIuUHlTZXRfUG9wCi0gIFB5U2V0X1NpemU9cHl0aG9uMzIuUHlTZXRfU2l6ZQotICBQeVNldF9UeXBlPXB5dGhvbjMyLlB5U2V0X1R5cGUgREFUQQotICBQeVNsaWNlX0dldEluZGljZXM9cHl0aG9uMzIuUHlTbGljZV9HZXRJbmRpY2VzCi0gIFB5U2xpY2VfR2V0SW5kaWNlc0V4PXB5dGhvbjMyLlB5U2xpY2VfR2V0SW5kaWNlc0V4Ci0gIFB5U2xpY2VfTmV3PXB5dGhvbjMyLlB5U2xpY2VfTmV3Ci0gIFB5U2xpY2VfVHlwZT1weXRob24zMi5QeVNsaWNlX1R5cGUgREFUQQotICBQeVNvcnRXcmFwcGVyX1R5cGU9cHl0aG9uMzIuUHlTb3J0V3JhcHBlcl9UeXBlIERBVEEKLSAgUHlTdGF0ZV9GaW5kTW9kdWxlPXB5dGhvbjMyLlB5U3RhdGVfRmluZE1vZHVsZQotICBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW09cHl0aG9uMzIuUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtCi0gIFB5U3RydWN0U2VxdWVuY2VfTmV3PXB5dGhvbjMyLlB5U3RydWN0U2VxdWVuY2VfTmV3Ci0gIFB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZT1weXRob24zMi5QeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjMyLlB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbQotICBQeVN1cGVyX1R5cGU9cHl0aG9uMzIuUHlTdXBlcl9UeXBlIERBVEEKLSAgUHlTeXNfQWRkV2Fybk9wdGlvbj1weXRob24zMi5QeVN5c19BZGRXYXJuT3B0aW9uCi0gIFB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlPXB5dGhvbjMyLlB5U3lzX0FkZFdhcm5PcHRpb25Vbmljb2RlCi0gIFB5U3lzX0Zvcm1hdFN0ZGVycj1weXRob24zMi5QeVN5c19Gb3JtYXRTdGRlcnIKLSAgUHlTeXNfRm9ybWF0U3Rkb3V0PXB5dGhvbjMyLlB5U3lzX0Zvcm1hdFN0ZG91dAotICBQeVN5c19HZXRPYmplY3Q9cHl0aG9uMzIuUHlTeXNfR2V0T2JqZWN0Ci0gIFB5U3lzX0hhc1dhcm5PcHRpb25zPXB5dGhvbjMyLlB5U3lzX0hhc1dhcm5PcHRpb25zCi0gIFB5U3lzX1Jlc2V0V2Fybk9wdGlvbnM9cHl0aG9uMzIuUHlTeXNfUmVzZXRXYXJuT3B0aW9ucwotICBQeVN5c19TZXRBcmd2PXB5dGhvbjMyLlB5U3lzX1NldEFyZ3YKLSAgUHlTeXNfU2V0QXJndkV4PXB5dGhvbjMyLlB5U3lzX1NldEFyZ3ZFeAotICBQeVN5c19TZXRPYmplY3Q9cHl0aG9uMzIuUHlTeXNfU2V0T2JqZWN0Ci0gIFB5U3lzX1NldFBhdGg9cHl0aG9uMzIuUHlTeXNfU2V0UGF0aAotICBQeVN5c19Xcml0ZVN0ZGVycj1weXRob24zMi5QeVN5c19Xcml0ZVN0ZGVycgotICBQeVN5c19Xcml0ZVN0ZG91dD1weXRob24zMi5QeVN5c19Xcml0ZVN0ZG91dAotICBQeVRocmVhZFN0YXRlX0NsZWFyPXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfQ2xlYXIKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGU9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9EZWxldGUKLSAgUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50PXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudAotICBQeVRocmVhZFN0YXRlX0dldD1weXRob24zMi5QeVRocmVhZFN0YXRlX0dldAotICBQeVRocmVhZFN0YXRlX0dldERpY3Q9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9HZXREaWN0Ci0gIFB5VGhyZWFkU3RhdGVfTmV3PXB5dGhvbjMyLlB5VGhyZWFkU3RhdGVfTmV3Ci0gIFB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGM9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4YwotICBQeVRocmVhZFN0YXRlX1N3YXA9cHl0aG9uMzIuUHlUaHJlYWRTdGF0ZV9Td2FwCi0gIFB5VHJhY2VCYWNrX0hlcmU9cHl0aG9uMzIuUHlUcmFjZUJhY2tfSGVyZQotICBQeVRyYWNlQmFja19QcmludD1weXRob24zMi5QeVRyYWNlQmFja19QcmludAotICBQeVRyYWNlQmFja19UeXBlPXB5dGhvbjMyLlB5VHJhY2VCYWNrX1R5cGUgREFUQQotICBQeVR1cGxlSXRlcl9UeXBlPXB5dGhvbjMyLlB5VHVwbGVJdGVyX1R5cGUgREFUQQotICBQeVR1cGxlX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzIuUHlUdXBsZV9DbGVhckZyZWVMaXN0Ci0gIFB5VHVwbGVfR2V0SXRlbT1weXRob24zMi5QeVR1cGxlX0dldEl0ZW0KLSAgUHlUdXBsZV9HZXRTbGljZT1weXRob24zMi5QeVR1cGxlX0dldFNsaWNlCi0gIFB5VHVwbGVfTmV3PXB5dGhvbjMyLlB5VHVwbGVfTmV3Ci0gIFB5VHVwbGVfUGFjaz1weXRob24zMi5QeVR1cGxlX1BhY2sKLSAgUHlUdXBsZV9TZXRJdGVtPXB5dGhvbjMyLlB5VHVwbGVfU2V0SXRlbQotICBQeVR1cGxlX1NpemU9cHl0aG9uMzIuUHlUdXBsZV9TaXplCi0gIFB5VHVwbGVfVHlwZT1weXRob24zMi5QeVR1cGxlX1R5cGUgREFUQQotICBQeVR5cGVfQ2xlYXJDYWNoZT1weXRob24zMi5QeVR5cGVfQ2xlYXJDYWNoZQotICBQeVR5cGVfRnJvbVNwZWM9cHl0aG9uMzIuUHlUeXBlX0Zyb21TcGVjCi0gIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzIuUHlUeXBlX0dlbmVyaWNBbGxvYwotICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zMi5QeVR5cGVfR2VuZXJpY05ldwotICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzIuUHlUeXBlX0dldEZsYWdzCi0gIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzIuUHlUeXBlX0lzU3VidHlwZQotICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzIuUHlUeXBlX01vZGlmaWVkCi0gIFB5VHlwZV9SZWFkeT1weXRob24zMi5QeVR5cGVfUmVhZHkKLSAgUHlUeXBlX1R5cGU9cHl0aG9uMzIuUHlUeXBlX1R5cGUgREFUQQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zMi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzIuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjMyLlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzIuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjMyLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zMi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXBwZW5kCi0gIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9BcHBlbmRBbmREZWwKLSAgUHlVbmljb2RlX0FzQVNDSUlTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0FTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0NoYXJtYXBTdHJpbmcKLSAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNEZWNvZGVkVW5pY29kZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzRGVjb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRVbmljb2RlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNFbmNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Bc0xhdGluMVN0cmluZwotICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1VURjE2U3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNVVEYxNlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzVVRGMzJTdHJpbmcKLSAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0FzVVRGOFN0cmluZwotICBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQXNXaWRlQ2hhcgotICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0NsZWFyRnJlZWxpc3QKLSAgUHlVbmljb2RlX0NvbXBhcmU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Db21wYXJlCi0gIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Db25jYXQKLSAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQ29udGFpbnMKLSAgUHlVbmljb2RlX0NvdW50PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfQ291bnQKLSAgUHlVbmljb2RlX0RlY29kZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZQotICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVBU0NJSQotICBQeVVuaWNvZGVfRGVjb2RlQ2hhcm1hcD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZUNoYXJtYXAKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdAotICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZUZTRGVmYXVsdEFuZFNpemUKLSAgUHlVbmljb2RlX0RlY29kZUxhdGluMT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZUxhdGluMQotICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTYKLSAgUHlVbmljb2RlX0RlY29kZVVURjE2U3RhdGVmdWw9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYxNlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMzJTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVVRGOD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjgKLSAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjhTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0RlY29kZVVuaWNvZGVFc2NhcGUKLSAgUHlVbmljb2RlX0ZTQ29udmVydGVyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRlNDb252ZXJ0ZXIKLSAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0ZTRGVjb2RlcgotICBQeVVuaWNvZGVfRmluZD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0ZpbmQKLSAgUHlVbmljb2RlX0Zvcm1hdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zvcm1hdAotICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tRW5jb2RlZE9iamVjdAotICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXQKLSAgUHlVbmljb2RlX0Zyb21Gb3JtYXRWPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbUZvcm1hdFYKLSAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX0Zyb21PcmRpbmFsCi0gIFB5VW5pY29kZV9Gcm9tU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbVN0cmluZwotICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Gcm9tU3RyaW5nQW5kU2l6ZQotICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfRnJvbVdpZGVDaGFyCi0gIFB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9HZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9HZXRTaXplCi0gIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Jc0lkZW50aWZpZXIKLSAgUHlVbmljb2RlX0pvaW49cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9Kb2luCi0gIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9QYXJ0aXRpb24KLSAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9SUGFydGl0aW9uCi0gIFB5VW5pY29kZV9SU3BsaXQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9SU3BsaXQKLSAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9SZXBsYWNlCi0gIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9SZXNpemUKLSAgUHlVbmljb2RlX1JpY2hDb21wYXJlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfUmljaENvbXBhcmUKLSAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1NldERlZmF1bHRFbmNvZGluZwotICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzIuUHlVbmljb2RlVUNTMl9TcGxpdAotICBQeVVuaWNvZGVfU3BsaXRsaW5lcz1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1NwbGl0bGluZXMKLSAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zMi5QeVVuaWNvZGVVQ1MyX1RhaWxtYXRjaAotICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjMyLlB5VW5pY29kZVVDUzJfVHJhbnNsYXRlCi0gIFB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwPXB5dGhvbjMyLlB5VW5pY29kZV9CdWlsZEVuY29kaW5nTWFwCi0gIFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nPXB5dGhvbjMyLlB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY3PXB5dGhvbjMyLlB5VW5pY29kZV9EZWNvZGVVVEY3Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWw9cHl0aG9uMzIuUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bAotICBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0PXB5dGhvbjMyLlB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQKLSAgUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmc9cHl0aG9uMzIuUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcKLSAgUHlVbmljb2RlX0ludGVybkltbW9ydGFsPXB5dGhvbjMyLlB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbAotICBQeVVuaWNvZGVfSW50ZXJuSW5QbGFjZT1weXRob24zMi5QeVVuaWNvZGVfSW50ZXJuSW5QbGFjZQotICBQeVVuaWNvZGVfVHlwZT1weXRob24zMi5QeVVuaWNvZGVfVHlwZSBEQVRBCi0gIFB5V2Vha3JlZl9HZXRPYmplY3Q9cHl0aG9uMzIuUHlXZWFrcmVmX0dldE9iamVjdCBEQVRBCi0gIFB5V2Vha3JlZl9OZXdQcm94eT1weXRob24zMi5QeVdlYWtyZWZfTmV3UHJveHkKLSAgUHlXZWFrcmVmX05ld1JlZj1weXRob24zMi5QeVdlYWtyZWZfTmV3UmVmCi0gIFB5V3JhcHBlckRlc2NyX1R5cGU9cHl0aG9uMzIuUHlXcmFwcGVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5V3JhcHBlcl9OZXc9cHl0aG9uMzIuUHlXcmFwcGVyX05ldwotICBQeVppcF9UeXBlPXB5dGhvbjMyLlB5WmlwX1R5cGUgREFUQQotICBQeV9BZGRQZW5kaW5nQ2FsbD1weXRob24zMi5QeV9BZGRQZW5kaW5nQ2FsbAotICBQeV9BdEV4aXQ9cHl0aG9uMzIuUHlfQXRFeGl0Ci0gIFB5X0J1aWxkVmFsdWU9cHl0aG9uMzIuUHlfQnVpbGRWYWx1ZQotICBQeV9Db21waWxlU3RyaW5nPXB5dGhvbjMyLlB5X0NvbXBpbGVTdHJpbmcKLSAgUHlfRGVjUmVmPXB5dGhvbjMyLlB5X0RlY1JlZgotICBQeV9FbmRJbnRlcnByZXRlcj1weXRob24zMi5QeV9FbmRJbnRlcnByZXRlcgotICBQeV9FeGl0PXB5dGhvbjMyLlB5X0V4aXQKLSAgUHlfRmF0YWxFcnJvcj1weXRob24zMi5QeV9GYXRhbEVycm9yCi0gIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzIuUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCi0gIFB5X0ZpbmFsaXplPXB5dGhvbjMyLlB5X0ZpbmFsaXplCi0gIFB5X0dldEJ1aWxkSW5mbz1weXRob24zMi5QeV9HZXRCdWlsZEluZm8KLSAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzIuUHlfR2V0Q29tcGlsZXIKLSAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjMyLlB5X0dldENvcHlyaWdodAotICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjMyLlB5X0dldEV4ZWNQcmVmaXgKLSAgUHlfR2V0UGF0aD1weXRob24zMi5QeV9HZXRQYXRoCi0gIFB5X0dldFBsYXRmb3JtPXB5dGhvbjMyLlB5X0dldFBsYXRmb3JtCi0gIFB5X0dldFByZWZpeD1weXRob24zMi5QeV9HZXRQcmVmaXgKLSAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjMyLlB5X0dldFByb2dyYW1GdWxsUGF0aAotICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zMi5QeV9HZXRQcm9ncmFtTmFtZQotICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjMyLlB5X0dldFB5dGhvbkhvbWUKLSAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzIuUHlfR2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfR2V0VmVyc2lvbj1weXRob24zMi5QeV9HZXRWZXJzaW9uCi0gIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzIuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCi0gIFB5X0luY1JlZj1weXRob24zMi5QeV9JbmNSZWYKLSAgUHlfSW5pdGlhbGl6ZT1weXRob24zMi5QeV9Jbml0aWFsaXplCi0gIFB5X0luaXRpYWxpemVFeD1weXRob24zMi5QeV9Jbml0aWFsaXplRXgKLSAgUHlfSXNJbml0aWFsaXplZD1weXRob24zMi5QeV9Jc0luaXRpYWxpemVkCi0gIFB5X01haW49cHl0aG9uMzIuUHlfTWFpbgotICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjMyLlB5X01ha2VQZW5kaW5nQ2FsbHMKLSAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzIuUHlfTmV3SW50ZXJwcmV0ZXIKLSAgUHlfUmVwckVudGVyPXB5dGhvbjMyLlB5X1JlcHJFbnRlcgotICBQeV9SZXByTGVhdmU9cHl0aG9uMzIuUHlfUmVwckxlYXZlCi0gIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjMyLlB5X1NldFByb2dyYW1OYW1lCi0gIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzIuUHlfU2V0UHl0aG9uSG9tZQotICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zMi5QeV9TZXRSZWN1cnNpb25MaW1pdAotICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zMi5QeV9TeW10YWJsZVN0cmluZwotICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzIuUHlfVmFCdWlsZFZhbHVlCi0gIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzIuX1B5RXJyX0JhZEludGVybmFsQ2FsbAotICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjMyLl9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKLSAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzIuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKLSAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zMi5fUHlPYmplY3RfR0NfTWFsbG9jCi0gIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzIuX1B5T2JqZWN0X0dDX05ldwotICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjMyLl9QeU9iamVjdF9HQ19OZXdWYXIKLSAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zMi5fUHlPYmplY3RfR0NfUmVzaXplCi0gIF9QeU9iamVjdF9OZXc9cHl0aG9uMzIuX1B5T2JqZWN0X05ldwotICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjMyLl9QeU9iamVjdF9OZXdWYXIKLSAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjMyLl9QeVN0YXRlX0FkZE1vZHVsZQotICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjMyLl9QeVRocmVhZFN0YXRlX0luaXQKLSAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzIuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKLSAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjMyLl9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCi0gIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjMyLl9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKLSAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzIuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKLSAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zMi5fUHlUcmFzaF9kZXN0cm95X2NoYWluCi0gIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzIuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjMyLl9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKLSAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjMyLl9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCi0gIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMyLl9QeV9CdWlsZFZhbHVlX1NpemVUCi0gIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjMyLl9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKLSAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zMi5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCi0gIF9QeV9EZWFsbG9jPXB5dGhvbjMyLl9QeV9EZWFsbG9jCi0gIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zMi5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQotICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzIuX1B5X0ZhbHNlU3RydWN0IERBVEEKLSAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzIuX1B5X05vbmVTdHJ1Y3QgREFUQQotICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzIuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKLSAgX1B5X1N3YXBwZWRPcD1weXRob24zMi5fUHlfU3dhcHBlZE9wIERBVEEKLSAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzIuX1B5X1RydWVTdHJ1Y3QgREFUQQotICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjMyLl9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgUHlBcmdfUGFyc2U9cHl0aG9uMzMuUHlBcmdfUGFyc2UKKyAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zMy5QeUFyZ19QYXJzZVR1cGxlCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zMy5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzMuUHlBcmdfVW5wYWNrVHVwbGUKKyAgUHlBcmdfVmFQYXJzZT1weXRob24zMy5QeUFyZ19WYVBhcnNlCisgIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjMzLlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zMy5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKKyAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzMuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQorICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzMuUHlCb29sX0Zyb21Mb25nCisgIFB5Qm9vbF9UeXBlPXB5dGhvbjMzLlB5Qm9vbF9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzMuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zMy5QeUJ5dGVBcnJheV9Bc1N0cmluZworICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzMuUHlCeXRlQXJyYXlfQ29uY2F0CisgIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzMuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAorICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zMy5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzMuUHlCeXRlQXJyYXlfUmVzaXplCisgIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzMuUHlCeXRlQXJyYXlfU2l6ZQorICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjMzLlB5Qnl0ZUFycmF5X1R5cGUgREFUQQorICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjMzLlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjMzLlB5Qnl0ZXNfQXNTdHJpbmcKKyAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzMuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzMuUHlCeXRlc19Db25jYXQKKyAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzMuUHlCeXRlc19Db25jYXRBbmREZWwKKyAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzMuUHlCeXRlc19EZWNvZGVFc2NhcGUKKyAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbUZvcm1hdAorICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbUZvcm1hdFYKKyAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjMzLlB5Qnl0ZXNfRnJvbU9iamVjdAorICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzMuUHlCeXRlc19Gcm9tU3RyaW5nCisgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzMuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzMuUHlCeXRlc19SZXByCisgIFB5Qnl0ZXNfU2l6ZT1weXRob24zMy5QeUJ5dGVzX1NpemUKKyAgUHlCeXRlc19UeXBlPXB5dGhvbjMzLlB5Qnl0ZXNfVHlwZSBEQVRBCisgIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzMuUHlDRnVuY3Rpb25fQ2FsbAorICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKKyAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzMuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKKyAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzMuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KKyAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zMy5QeUNGdW5jdGlvbl9HZXRTZWxmCisgIFB5Q0Z1bmN0aW9uX05ld0V4PXB5dGhvbjMzLlB5Q0Z1bmN0aW9uX05ld0V4CisgIFB5Q0Z1bmN0aW9uX1R5cGU9cHl0aG9uMzMuUHlDRnVuY3Rpb25fVHlwZSBEQVRBCisgIFB5Q2FsbEl0ZXJfTmV3PXB5dGhvbjMzLlB5Q2FsbEl0ZXJfTmV3CisgIFB5Q2FsbEl0ZXJfVHlwZT1weXRob24zMy5QeUNhbGxJdGVyX1R5cGUgREFUQQorICBQeUNhbGxhYmxlX0NoZWNrPXB5dGhvbjMzLlB5Q2FsbGFibGVfQ2hlY2sKKyAgUHlDYXBzdWxlX0dldENvbnRleHQ9cHl0aG9uMzMuUHlDYXBzdWxlX0dldENvbnRleHQKKyAgUHlDYXBzdWxlX0dldERlc3RydWN0b3I9cHl0aG9uMzMuUHlDYXBzdWxlX0dldERlc3RydWN0b3IKKyAgUHlDYXBzdWxlX0dldE5hbWU9cHl0aG9uMzMuUHlDYXBzdWxlX0dldE5hbWUKKyAgUHlDYXBzdWxlX0dldFBvaW50ZXI9cHl0aG9uMzMuUHlDYXBzdWxlX0dldFBvaW50ZXIKKyAgUHlDYXBzdWxlX0ltcG9ydD1weXRob24zMy5QeUNhcHN1bGVfSW1wb3J0CisgIFB5Q2Fwc3VsZV9Jc1ZhbGlkPXB5dGhvbjMzLlB5Q2Fwc3VsZV9Jc1ZhbGlkCisgIFB5Q2Fwc3VsZV9OZXc9cHl0aG9uMzMuUHlDYXBzdWxlX05ldworICBQeUNhcHN1bGVfU2V0Q29udGV4dD1weXRob24zMy5QeUNhcHN1bGVfU2V0Q29udGV4dAorICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3Rvcj1weXRob24zMy5QeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfU2V0TmFtZT1weXRob24zMy5QeUNhcHN1bGVfU2V0TmFtZQorICBQeUNhcHN1bGVfU2V0UG9pbnRlcj1weXRob24zMy5QeUNhcHN1bGVfU2V0UG9pbnRlcgorICBQeUNhcHN1bGVfVHlwZT1weXRob24zMy5QeUNhcHN1bGVfVHlwZSBEQVRBCisgIFB5Q2xhc3NNZXRob2REZXNjcl9UeXBlPXB5dGhvbjMzLlB5Q2xhc3NNZXRob2REZXNjcl9UeXBlIERBVEEKKyAgUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycworICBQeUNvZGVjX0RlY29kZT1weXRob24zMy5QeUNvZGVjX0RlY29kZQorICBQeUNvZGVjX0RlY29kZXI9cHl0aG9uMzMuUHlDb2RlY19EZWNvZGVyCisgIFB5Q29kZWNfRW5jb2RlPXB5dGhvbjMzLlB5Q29kZWNfRW5jb2RlCisgIFB5Q29kZWNfRW5jb2Rlcj1weXRob24zMy5QeUNvZGVjX0VuY29kZXIKKyAgUHlDb2RlY19JZ25vcmVFcnJvcnM9cHl0aG9uMzMuUHlDb2RlY19JZ25vcmVFcnJvcnMKKyAgUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXI9cHl0aG9uMzMuUHlDb2RlY19JbmNyZW1lbnRhbERlY29kZXIKKyAgUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXI9cHl0aG9uMzMuUHlDb2RlY19JbmNyZW1lbnRhbEVuY29kZXIKKyAgUHlDb2RlY19Lbm93bkVuY29kaW5nPXB5dGhvbjMzLlB5Q29kZWNfS25vd25FbmNvZGluZworICBQeUNvZGVjX0xvb2t1cEVycm9yPXB5dGhvbjMzLlB5Q29kZWNfTG9va3VwRXJyb3IKKyAgUHlDb2RlY19SZWdpc3Rlcj1weXRob24zMy5QeUNvZGVjX1JlZ2lzdGVyCisgIFB5Q29kZWNfUmVnaXN0ZXJFcnJvcj1weXRob24zMy5QeUNvZGVjX1JlZ2lzdGVyRXJyb3IKKyAgUHlDb2RlY19SZXBsYWNlRXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfUmVwbGFjZUVycm9ycworICBQeUNvZGVjX1N0cmVhbVJlYWRlcj1weXRob24zMy5QeUNvZGVjX1N0cmVhbVJlYWRlcgorICBQeUNvZGVjX1N0cmVhbVdyaXRlcj1weXRob24zMy5QeUNvZGVjX1N0cmVhbVdyaXRlcgorICBQeUNvZGVjX1N0cmljdEVycm9ycz1weXRob24zMy5QeUNvZGVjX1N0cmljdEVycm9ycworICBQeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzPXB5dGhvbjMzLlB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnMKKyAgUHlDb21wbGV4X0Zyb21Eb3VibGVzPXB5dGhvbjMzLlB5Q29tcGxleF9Gcm9tRG91YmxlcworICBQeUNvbXBsZXhfSW1hZ0FzRG91YmxlPXB5dGhvbjMzLlB5Q29tcGxleF9JbWFnQXNEb3VibGUKKyAgUHlDb21wbGV4X1JlYWxBc0RvdWJsZT1weXRob24zMy5QeUNvbXBsZXhfUmVhbEFzRG91YmxlCisgIFB5Q29tcGxleF9UeXBlPXB5dGhvbjMzLlB5Q29tcGxleF9UeXBlIERBVEEKKyAgUHlEZXNjcl9OZXdDbGFzc01ldGhvZD1weXRob24zMy5QeURlc2NyX05ld0NsYXNzTWV0aG9kCisgIFB5RGVzY3JfTmV3R2V0U2V0PXB5dGhvbjMzLlB5RGVzY3JfTmV3R2V0U2V0CisgIFB5RGVzY3JfTmV3TWVtYmVyPXB5dGhvbjMzLlB5RGVzY3JfTmV3TWVtYmVyCisgIFB5RGVzY3JfTmV3TWV0aG9kPXB5dGhvbjMzLlB5RGVzY3JfTmV3TWV0aG9kCisgIFB5RGljdEl0ZW1zX1R5cGU9cHl0aG9uMzMuUHlEaWN0SXRlbXNfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJJdGVtX1R5cGU9cHl0aG9uMzMuUHlEaWN0SXRlckl0ZW1fVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJLZXlfVHlwZT1weXRob24zMy5QeURpY3RJdGVyS2V5X1R5cGUgREFUQQorICBQeURpY3RJdGVyVmFsdWVfVHlwZT1weXRob24zMy5QeURpY3RJdGVyVmFsdWVfVHlwZSBEQVRBCisgIFB5RGljdEtleXNfVHlwZT1weXRob24zMy5QeURpY3RLZXlzX1R5cGUgREFUQQorICBQeURpY3RQcm94eV9OZXc9cHl0aG9uMzMuUHlEaWN0UHJveHlfTmV3CisgIFB5RGljdFByb3h5X1R5cGU9cHl0aG9uMzMuUHlEaWN0UHJveHlfVHlwZSBEQVRBCisgIFB5RGljdFZhbHVlc19UeXBlPXB5dGhvbjMzLlB5RGljdFZhbHVlc19UeXBlIERBVEEKKyAgUHlEaWN0X0NsZWFyPXB5dGhvbjMzLlB5RGljdF9DbGVhcgorICBQeURpY3RfQ29udGFpbnM9cHl0aG9uMzMuUHlEaWN0X0NvbnRhaW5zCisgIFB5RGljdF9Db3B5PXB5dGhvbjMzLlB5RGljdF9Db3B5CisgIFB5RGljdF9EZWxJdGVtPXB5dGhvbjMzLlB5RGljdF9EZWxJdGVtCisgIFB5RGljdF9EZWxJdGVtU3RyaW5nPXB5dGhvbjMzLlB5RGljdF9EZWxJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtPXB5dGhvbjMzLlB5RGljdF9HZXRJdGVtCisgIFB5RGljdF9HZXRJdGVtU3RyaW5nPXB5dGhvbjMzLlB5RGljdF9HZXRJdGVtU3RyaW5nCisgIFB5RGljdF9HZXRJdGVtV2l0aEVycm9yPXB5dGhvbjMzLlB5RGljdF9HZXRJdGVtV2l0aEVycm9yCisgIFB5RGljdF9JdGVtcz1weXRob24zMy5QeURpY3RfSXRlbXMKKyAgUHlEaWN0X0tleXM9cHl0aG9uMzMuUHlEaWN0X0tleXMKKyAgUHlEaWN0X01lcmdlPXB5dGhvbjMzLlB5RGljdF9NZXJnZQorICBQeURpY3RfTWVyZ2VGcm9tU2VxMj1weXRob24zMy5QeURpY3RfTWVyZ2VGcm9tU2VxMgorICBQeURpY3RfTmV3PXB5dGhvbjMzLlB5RGljdF9OZXcKKyAgUHlEaWN0X05leHQ9cHl0aG9uMzMuUHlEaWN0X05leHQKKyAgUHlEaWN0X1NldEl0ZW09cHl0aG9uMzMuUHlEaWN0X1NldEl0ZW0KKyAgUHlEaWN0X1NldEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlEaWN0X1NldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X1NpemU9cHl0aG9uMzMuUHlEaWN0X1NpemUKKyAgUHlEaWN0X1R5cGU9cHl0aG9uMzMuUHlEaWN0X1R5cGUgREFUQQorICBQeURpY3RfVXBkYXRlPXB5dGhvbjMzLlB5RGljdF9VcGRhdGUKKyAgUHlEaWN0X1ZhbHVlcz1weXRob24zMy5QeURpY3RfVmFsdWVzCisgIFB5RWxsaXBzaXNfVHlwZT1weXRob24zMy5QeUVsbGlwc2lzX1R5cGUgREFUQQorICBQeUVudW1fVHlwZT1weXRob24zMy5QeUVudW1fVHlwZSBEQVRBCisgIFB5RXJyX0JhZEFyZ3VtZW50PXB5dGhvbjMzLlB5RXJyX0JhZEFyZ3VtZW50CisgIFB5RXJyX0JhZEludGVybmFsQ2FsbD1weXRob24zMy5QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgUHlFcnJfQ2hlY2tTaWduYWxzPXB5dGhvbjMzLlB5RXJyX0NoZWNrU2lnbmFscworICBQeUVycl9DbGVhcj1weXRob24zMy5QeUVycl9DbGVhcgorICBQeUVycl9EaXNwbGF5PXB5dGhvbjMzLlB5RXJyX0Rpc3BsYXkKKyAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcz1weXRob24zMy5QeUVycl9FeGNlcHRpb25NYXRjaGVzCisgIFB5RXJyX0ZldGNoPXB5dGhvbjMzLlB5RXJyX0ZldGNoCisgIFB5RXJyX0Zvcm1hdD1weXRob24zMy5QeUVycl9Gb3JtYXQKKyAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjMzLlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzMuUHlFcnJfTmV3RXhjZXB0aW9uCisgIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzMuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYworICBQeUVycl9Ob01lbW9yeT1weXRob24zMy5QeUVycl9Ob01lbW9yeQorICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzMuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCisgIFB5RXJyX09jY3VycmVkPXB5dGhvbjMzLlB5RXJyX09jY3VycmVkCisgIFB5RXJyX1ByaW50PXB5dGhvbjMzLlB5RXJyX1ByaW50CisgIFB5RXJyX1ByaW50RXg9cHl0aG9uMzMuUHlFcnJfUHJpbnRFeAorICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zMy5QeUVycl9Qcm9ncmFtVGV4dAorICBQeUVycl9SZXN0b3JlPXB5dGhvbjMzLlB5RXJyX1Jlc3RvcmUKKyAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjMzLlB5RXJyX1NldEZyb21FcnJubworICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzMuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zMy5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjMzLlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjMzLlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjMzLlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzMuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjMzLlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1dhcm5FeD1weXRob24zMy5QeUVycl9XYXJuRXgKKyAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjMzLlB5RXJyX1dhcm5FeHBsaWNpdAorICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjMzLlB5RXJyX1dhcm5Gb3JtYXQKKyAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjMzLlB5RXJyX1dyaXRlVW5yYWlzYWJsZQorICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzMuUHlFdmFsX0FjcXVpcmVMb2NrCisgIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjMzLlB5RXZhbF9BY3F1aXJlVGhyZWFkCisgIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzMuUHlFdmFsX0NhbGxGdW5jdGlvbgorICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zMy5QeUV2YWxfQ2FsbE1ldGhvZAorICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zMy5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcworICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzMuUHlFdmFsX0V2YWxDb2RlCisgIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjMzLlB5RXZhbF9FdmFsQ29kZUV4CisgIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzMuUHlFdmFsX0V2YWxGcmFtZQorICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzMuUHlFdmFsX0V2YWxGcmFtZUV4CisgIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zMy5QeUV2YWxfR2V0QnVpbHRpbnMKKyAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zMy5QeUV2YWxfR2V0Q2FsbFN0YXRzCisgIFB5RXZhbF9HZXRGcmFtZT1weXRob24zMy5QeUV2YWxfR2V0RnJhbWUKKyAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjMzLlB5RXZhbF9HZXRGdW5jRGVzYworICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzMuUHlFdmFsX0dldEZ1bmNOYW1lCisgIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjMzLlB5RXZhbF9HZXRHbG9iYWxzCisgIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzMuUHlFdmFsX0dldExvY2FscworICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzMuUHlFdmFsX0luaXRUaHJlYWRzCisgIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjMzLlB5RXZhbF9SZUluaXRUaHJlYWRzCisgIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zMy5QeUV2YWxfUmVsZWFzZUxvY2sKKyAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzMuUHlFdmFsX1JlbGVhc2VUaHJlYWQKKyAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzMuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKKyAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzMuUHlFdmFsX1NhdmVUaHJlYWQKKyAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zMy5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCisgIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zMy5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQorICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zMy5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCisgIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjMzLlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKKyAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zMy5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzMuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzMuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjMzLlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX0VPRkVycm9yPXB5dGhvbjMzLlB5RXhjX0VPRkVycm9yIERBVEEKKyAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zMy5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKKyAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjMzLlB5RXhjX0V4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zMy5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQorICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjMzLlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQorICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjMzLlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQorICBQeUV4Y19JT0Vycm9yPXB5dGhvbjMzLlB5RXhjX0lPRXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zMy5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzMuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCisgIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzMuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCisgIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzMuUHlFeGNfSW5kZXhFcnJvciBEQVRBCisgIFB5RXhjX0tleUVycm9yPXB5dGhvbjMzLlB5RXhjX0tleUVycm9yIERBVEEKKyAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzMuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQorICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zMy5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjMzLlB5RXhjX01lbW9yeUVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjMzLlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zMy5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjMzLlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQorICBQeUV4Y19PU0Vycm9yPXB5dGhvbjMzLlB5RXhjX09TRXJyb3IgREFUQQorICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjMzLlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQorICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjMzLlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzMuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzMuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzMuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzMuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjMzLlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQorICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zMy5QeUV4Y19TeW50YXhFcnJvciBEQVRBCisgIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzMuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCisgIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjMzLlB5RXhjX1N5c3RlbUVycm9yIERBVEEKKyAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zMy5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKKyAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzMuUHlFeGNfVGFiRXJyb3IgREFUQQorICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVHlwZUVycm9yIERBVEEKKyAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjMzLlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zMy5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzMuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQorICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zMy5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCisgIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzMuUHlFeGNfVmFsdWVFcnJvciBEQVRBCisgIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzMuUHlFeGNfV2FybmluZyBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjMzLlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzMuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zMy5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zMy5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzMuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zMy5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zMy5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zMy5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjMzLlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zMy5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjMzLlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjMzLlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjMzLlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjMzLlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzMuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zMy5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzMuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzMuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjMzLlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zMy5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zMy5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjMzLlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zMy5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zMy5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzMuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zMy5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzMuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzMuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgorICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjMzLlB5SW1wb3J0X0NsZWFudXAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzMuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zMy5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4CisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zMy5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKKyAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzMuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzMuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzMuUHlJbXBvcnRfR2V0TWFnaWNUYWcKKyAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zMy5QeUltcG9ydF9HZXRNb2R1bGVEaWN0CisgIFB5SW1wb3J0X0ltcG9ydD1weXRob24zMy5QeUltcG9ydF9JbXBvcnQKKyAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjMzLlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzMuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaworICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzMuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zMy5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKKyAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zMy5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzMuUHlJbnRlcnByZXRlclN0YXRlX05ldworICBQeUl0ZXJfTmV4dD1weXRob24zMy5QeUl0ZXJfTmV4dAorICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzMuUHlMaXN0SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjMzLlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzMuUHlMaXN0X0FwcGVuZAorICBQeUxpc3RfQXNUdXBsZT1weXRob24zMy5QeUxpc3RfQXNUdXBsZQorICBQeUxpc3RfR2V0SXRlbT1weXRob24zMy5QeUxpc3RfR2V0SXRlbQorICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzMuUHlMaXN0X0dldFNsaWNlCisgIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzMuUHlMaXN0X0luc2VydAorICBQeUxpc3RfTmV3PXB5dGhvbjMzLlB5TGlzdF9OZXcKKyAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzMuUHlMaXN0X1JldmVyc2UKKyAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzMuUHlMaXN0X1NldEl0ZW0KKyAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjMzLlB5TGlzdF9TZXRTbGljZQorICBQeUxpc3RfU2l6ZT1weXRob24zMy5QeUxpc3RfU2l6ZQorICBQeUxpc3RfU29ydD1weXRob24zMy5QeUxpc3RfU29ydAorICBQeUxpc3RfVHlwZT1weXRob24zMy5QeUxpc3RfVHlwZSBEQVRBCisgIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjMzLlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjMzLlB5TG9uZ19Bc0RvdWJsZQorICBQeUxvbmdfQXNMb25nPXB5dGhvbjMzLlB5TG9uZ19Bc0xvbmcKKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjMzLlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zMy5QeUxvbmdfQXNMb25nTG9uZworICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjMzLlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjMzLlB5TG9uZ19Bc1NpemVfdAorICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjMzLlB5TG9uZ19Bc1NzaXplX3QKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjMzLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjMzLlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzMuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zMy5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCisgIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzMuUHlMb25nX0FzVm9pZFB0cgorICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zMy5QeUxvbmdfRnJvbURvdWJsZQorICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21Mb25nCisgIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzMuUHlMb25nX0Zyb21Mb25nTG9uZworICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zMy5QeUxvbmdfRnJvbVNpemVfdAorICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzMuUHlMb25nX0Zyb21Tc2l6ZV90CisgIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tU3RyaW5nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjMzLlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zMy5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjMzLlB5TG9uZ19Gcm9tVm9pZFB0cgorICBQeUxvbmdfR2V0SW5mbz1weXRob24zMy5QeUxvbmdfR2V0SW5mbworICBQeUxvbmdfVHlwZT1weXRob24zMy5QeUxvbmdfVHlwZSBEQVRBCisgIFB5TWFwX1R5cGU9cHl0aG9uMzMuUHlNYXBfVHlwZSBEQVRBCisgIFB5TWFwcGluZ19DaGVjaz1weXRob24zMy5QeU1hcHBpbmdfQ2hlY2sKKyAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzMuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zMy5QeU1hcHBpbmdfSGFzS2V5CisgIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzMuUHlNYXBwaW5nX0hhc0tleVN0cmluZworICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzMuUHlNYXBwaW5nX0l0ZW1zCisgIFB5TWFwcGluZ19LZXlzPXB5dGhvbjMzLlB5TWFwcGluZ19LZXlzCisgIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzMuUHlNYXBwaW5nX0xlbmd0aAorICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zMy5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfU2l6ZT1weXRob24zMy5QeU1hcHBpbmdfU2l6ZQorICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjMzLlB5TWFwcGluZ19WYWx1ZXMKKyAgUHlNZW1fRnJlZT1weXRob24zMy5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zMy5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zMy5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zMy5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zMy5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zMy5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zMy5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zMy5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zMy5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzMuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjMzLlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzMuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzMuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzMuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zMy5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zMy5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjMzLlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzMuUHlNb2R1bGVfR2V0U3RhdGUKKyAgUHlNb2R1bGVfTmV3PXB5dGhvbjMzLlB5TW9kdWxlX05ldworICBQeU1vZHVsZV9UeXBlPXB5dGhvbjMzLlB5TW9kdWxlX1R5cGUgREFUQQorICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjMzLlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQorICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zMy5QeU51bWJlcl9BYnNvbHV0ZQorICBQeU51bWJlcl9BZGQ9cHl0aG9uMzMuUHlOdW1iZXJfQWRkCisgIFB5TnVtYmVyX0FuZD1weXRob24zMy5QeU51bWJlcl9BbmQKKyAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjMzLlB5TnVtYmVyX0FzU3NpemVfdAorICBQeU51bWJlcl9DaGVjaz1weXRob24zMy5QeU51bWJlcl9DaGVjaworICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzMuUHlOdW1iZXJfRGl2bW9kCisgIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjMzLlB5TnVtYmVyX0Zsb2F0CisgIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjMzLlB5TnVtYmVyX0Zsb29yRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZUFkZAorICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VBbmQKKyAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQorICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZU9yCisgIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zMy5QeU51bWJlcl9JblBsYWNlUG93ZXIKKyAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zMy5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCisgIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAorICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0CisgIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjMzLlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCisgIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzMuUHlOdW1iZXJfSW5QbGFjZVhvcgorICBQeU51bWJlcl9JbmRleD1weXRob24zMy5QeU51bWJlcl9JbmRleAorICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzMuUHlOdW1iZXJfSW52ZXJ0CisgIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzMuUHlOdW1iZXJfTG9uZworICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzMuUHlOdW1iZXJfTHNoaWZ0CisgIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjMzLlB5TnVtYmVyX011bHRpcGx5CisgIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjMzLlB5TnVtYmVyX05lZ2F0aXZlCisgIFB5TnVtYmVyX09yPXB5dGhvbjMzLlB5TnVtYmVyX09yCisgIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjMzLlB5TnVtYmVyX1Bvc2l0aXZlCisgIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjMzLlB5TnVtYmVyX1Bvd2VyCisgIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zMy5QeU51bWJlcl9SZW1haW5kZXIKKyAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjMzLlB5TnVtYmVyX1JzaGlmdAorICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zMy5QeU51bWJlcl9TdWJ0cmFjdAorICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzMuUHlOdW1iZXJfVG9CYXNlCisgIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzMuUHlOdW1iZXJfVHJ1ZURpdmlkZQorICBQeU51bWJlcl9Yb3I9cHl0aG9uMzMuUHlOdW1iZXJfWG9yCisgIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjMzLlB5T1NfQWZ0ZXJGb3JrCisgIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzMuUHlPU19Jbml0SW50ZXJydXB0cworICBQeU9TX0lucHV0SG9vaz1weXRob24zMy5QeU9TX0lucHV0SG9vayBEQVRBCisgIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzMuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAorICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjMzLlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQorICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzMuUHlPU19kb3VibGVfdG9fc3RyaW5nCisgIFB5T1NfZ2V0c2lnPXB5dGhvbjMzLlB5T1NfZ2V0c2lnCisgIFB5T1NfbXlzdHJpY21wPXB5dGhvbjMzLlB5T1NfbXlzdHJpY21wCisgIFB5T1NfbXlzdHJuaWNtcD1weXRob24zMy5QeU9TX215c3RybmljbXAKKyAgUHlPU19zZXRzaWc9cHl0aG9uMzMuUHlPU19zZXRzaWcKKyAgUHlPU19zbnByaW50Zj1weXRob24zMy5QeU9TX3NucHJpbnRmCisgIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zMy5QeU9TX3N0cmluZ190b19kb3VibGUKKyAgUHlPU19zdHJ0b2w9cHl0aG9uMzMuUHlPU19zdHJ0b2wKKyAgUHlPU19zdHJ0b3VsPXB5dGhvbjMzLlB5T1Nfc3RydG91bAorICBQeU9TX3ZzbnByaW50Zj1weXRob24zMy5QeU9TX3ZzbnByaW50ZgorICBQeU9iamVjdF9BU0NJST1weXRob24zMy5QeU9iamVjdF9BU0NJSQorICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzMuUHlPYmplY3RfQXNDaGFyQnVmZmVyCisgIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzMuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgorICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzMuUHlPYmplY3RfQXNSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzMuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgorICBQeU9iamVjdF9CeXRlcz1weXRob24zMy5QeU9iamVjdF9CeXRlcworICBQeU9iamVjdF9DYWxsPXB5dGhvbjMzLlB5T2JqZWN0X0NhbGwKKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxGdW5jdGlvbgorICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKKyAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zMy5QeU9iamVjdF9DYWxsTWV0aG9kCisgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjMzLlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzMuUHlPYmplY3RfQ2FsbE9iamVjdAorICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzMuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCisgIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzMuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcworICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjMzLlB5T2JqZWN0X0RlbEl0ZW0KKyAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zMy5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCisgIFB5T2JqZWN0X0Rpcj1weXRob24zMy5QeU9iamVjdF9EaXIKKyAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjMzLlB5T2JqZWN0X0Zvcm1hdAorICBQeU9iamVjdF9GcmVlPXB5dGhvbjMzLlB5T2JqZWN0X0ZyZWUKKyAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjMzLlB5T2JqZWN0X0dDX0RlbAorICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zMy5QeU9iamVjdF9HQ19UcmFjaworICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjMzLlB5T2JqZWN0X0dDX1VuVHJhY2sKKyAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzMuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKKyAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzMuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKKyAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zMy5QeU9iamVjdF9HZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzMuUHlPYmplY3RfR2V0QXR0clN0cmluZworICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjMzLlB5T2JqZWN0X0dldEl0ZW0KKyAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zMy5QeU9iamVjdF9HZXRJdGVyCisgIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzMuUHlPYmplY3RfSGFzQXR0cgorICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjMzLlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKKyAgUHlPYmplY3RfSGFzaD1weXRob24zMy5QeU9iamVjdF9IYXNoCisgIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zMy5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKKyAgUHlPYmplY3RfSW5pdD1weXRob24zMy5QeU9iamVjdF9Jbml0CisgIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzMuUHlPYmplY3RfSW5pdFZhcgorICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjMzLlB5T2JqZWN0X0lzSW5zdGFuY2UKKyAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zMy5QeU9iamVjdF9Jc1N1YmNsYXNzCisgIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zMy5QeU9iamVjdF9Jc1RydWUKKyAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjMzLlB5T2JqZWN0X0xlbmd0aAorICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzMuUHlPYmplY3RfTWFsbG9jCisgIFB5T2JqZWN0X05vdD1weXRob24zMy5QeU9iamVjdF9Ob3QKKyAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zMy5QeU9iamVjdF9SZWFsbG9jCisgIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzMuUHlPYmplY3RfUmVwcgorICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zMy5QeU9iamVjdF9SaWNoQ29tcGFyZQorICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzMuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCisgIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjMzLlB5T2JqZWN0X1NlbGZJdGVyCisgIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzMuUHlPYmplY3RfU2V0QXR0cgorICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjMzLlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zMy5QeU9iamVjdF9TZXRJdGVtCisgIFB5T2JqZWN0X1NpemU9cHl0aG9uMzMuUHlPYmplY3RfU2l6ZQorICBQeU9iamVjdF9TdHI9cHl0aG9uMzMuUHlPYmplY3RfU3RyCisgIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzMuUHlPYmplY3RfVHlwZSBEQVRBCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjMzLlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzMuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncworICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzMuUHlQcm9wZXJ0eV9UeXBlIERBVEEKKyAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zMy5QeVJhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlSYW5nZV9UeXBlPXB5dGhvbjMzLlB5UmFuZ2VfVHlwZSBEQVRBCisgIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zMy5QeVJldmVyc2VkX1R5cGUgREFUQQorICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjMzLlB5U2VxSXRlcl9OZXcKKyAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzMuUHlTZXFJdGVyX1R5cGUgREFUQQorICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjMzLlB5U2VxdWVuY2VfQ2hlY2sKKyAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzMuUHlTZXF1ZW5jZV9Db25jYXQKKyAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zMy5QeVNlcXVlbmNlX0NvbnRhaW5zCisgIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzMuUHlTZXF1ZW5jZV9Db3VudAorICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzMuUHlTZXF1ZW5jZV9EZWxJdGVtCisgIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzMuUHlTZXF1ZW5jZV9EZWxTbGljZQorICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzMuUHlTZXF1ZW5jZV9GYXN0CisgIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zMy5QeVNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zMy5QeVNlcXVlbmNlX0dldFNsaWNlCisgIFB5U2VxdWVuY2VfSW49cHl0aG9uMzMuUHlTZXF1ZW5jZV9JbgorICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzMuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0CisgIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zMy5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKKyAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zMy5QeVNlcXVlbmNlX0luZGV4CisgIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjMzLlB5U2VxdWVuY2VfTGVuZ3RoCisgIFB5U2VxdWVuY2VfTGlzdD1weXRob24zMy5QeVNlcXVlbmNlX0xpc3QKKyAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzMuUHlTZXF1ZW5jZV9SZXBlYXQKKyAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjMzLlB5U2VxdWVuY2VfU2V0SXRlbQorICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjMzLlB5U2VxdWVuY2VfU2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjMzLlB5U2VxdWVuY2VfU2l6ZQorICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjMzLlB5U2VxdWVuY2VfVHVwbGUKKyAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzMuUHlTZXRJdGVyX1R5cGUgREFUQQorICBQeVNldF9BZGQ9cHl0aG9uMzMuUHlTZXRfQWRkCisgIFB5U2V0X0NsZWFyPXB5dGhvbjMzLlB5U2V0X0NsZWFyCisgIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjMzLlB5U2V0X0NvbnRhaW5zCisgIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzMuUHlTZXRfRGlzY2FyZAorICBQeVNldF9OZXc9cHl0aG9uMzMuUHlTZXRfTmV3CisgIFB5U2V0X1BvcD1weXRob24zMy5QeVNldF9Qb3AKKyAgUHlTZXRfU2l6ZT1weXRob24zMy5QeVNldF9TaXplCisgIFB5U2V0X1R5cGU9cHl0aG9uMzMuUHlTZXRfVHlwZSBEQVRBCisgIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zMy5QeVNsaWNlX0dldEluZGljZXMKKyAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzMuUHlTbGljZV9HZXRJbmRpY2VzRXgKKyAgUHlTbGljZV9OZXc9cHl0aG9uMzMuUHlTbGljZV9OZXcKKyAgUHlTbGljZV9UeXBlPXB5dGhvbjMzLlB5U2xpY2VfVHlwZSBEQVRBCisgIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zMy5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQorICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzMuUHlTdGF0ZV9GaW5kTW9kdWxlCisgIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjMzLlB5U3RhdGVfQWRkTW9kdWxlCisgIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjMzLlB5U3RhdGVfUmVtb3ZlTW9kdWxlCisgIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zMy5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzMuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjMzLlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQorICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzMuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U3VwZXJfVHlwZT1weXRob24zMy5QeVN1cGVyX1R5cGUgREFUQQorICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjMzLlB5U3lzX0FkZFdhcm5PcHRpb24KKyAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzMuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKKyAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjMzLlB5U3lzX0Zvcm1hdFN0ZGVycgorICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzMuUHlTeXNfRm9ybWF0U3Rkb3V0CisgIFB5U3lzX0dldE9iamVjdD1weXRob24zMy5QeVN5c19HZXRPYmplY3QKKyAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzMuUHlTeXNfSGFzV2Fybk9wdGlvbnMKKyAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zMy5QeVN5c19SZXNldFdhcm5PcHRpb25zCisgIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzMuUHlTeXNfU2V0QXJndgorICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzMuUHlTeXNfU2V0QXJndkV4CisgIFB5U3lzX1NldE9iamVjdD1weXRob24zMy5QeVN5c19TZXRPYmplY3QKKyAgUHlTeXNfU2V0UGF0aD1weXRob24zMy5QeVN5c19TZXRQYXRoCisgIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjMzLlB5U3lzX1dyaXRlU3RkZXJyCisgIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjMzLlB5U3lzX1dyaXRlU3Rkb3V0CisgIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9DbGVhcgorICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zMy5QeVRocmVhZFN0YXRlX0RlbGV0ZQorICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50CisgIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjMzLlB5VGhyZWFkU3RhdGVfR2V0CisgIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zMy5QeVRocmVhZFN0YXRlX0dldERpY3QKKyAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzMuUHlUaHJlYWRTdGF0ZV9OZXcKKyAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zMy5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCisgIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zMy5QeVRocmVhZFN0YXRlX1N3YXAKKyAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zMy5QeVRyYWNlQmFja19IZXJlCisgIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjMzLlB5VHJhY2VCYWNrX1ByaW50CisgIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzMuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCisgIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzMuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCisgIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zMy5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKKyAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjMzLlB5VHVwbGVfR2V0SXRlbQorICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjMzLlB5VHVwbGVfR2V0U2xpY2UKKyAgUHlUdXBsZV9OZXc9cHl0aG9uMzMuUHlUdXBsZV9OZXcKKyAgUHlUdXBsZV9QYWNrPXB5dGhvbjMzLlB5VHVwbGVfUGFjaworICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzMuUHlUdXBsZV9TZXRJdGVtCisgIFB5VHVwbGVfU2l6ZT1weXRob24zMy5QeVR1cGxlX1NpemUKKyAgUHlUdXBsZV9UeXBlPXB5dGhvbjMzLlB5VHVwbGVfVHlwZSBEQVRBCisgIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjMzLlB5VHlwZV9DbGVhckNhY2hlCisgIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zMy5QeVR5cGVfRnJvbVNwZWMKKyAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjMzLlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcworICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjMzLlB5VHlwZV9HZW5lcmljQWxsb2MKKyAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzMuUHlUeXBlX0dlbmVyaWNOZXcKKyAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjMzLlB5VHlwZV9HZXRGbGFncworICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjMzLlB5VHlwZV9Jc1N1YnR5cGUKKyAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjMzLlB5VHlwZV9Nb2RpZmllZAorICBQeVR5cGVfUmVhZHk9cHl0aG9uMzMuUHlUeXBlX1JlYWR5CisgIFB5VHlwZV9UeXBlPXB5dGhvbjMzLlB5VHlwZV9UeXBlIERBVEEKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzMuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjMzLlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zMy5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjMzLlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zMy5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzMuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FwcGVuZAorICBQeVVuaWNvZGVfQXBwZW5kQW5kRGVsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXBwZW5kQW5kRGVsCisgIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNBU0NJSVN0cmluZworICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNDaGFybWFwU3RyaW5nCisgIFB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0RlY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc0VuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFN0cmluZworICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzRW5jb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQXNMYXRpbjFTdHJpbmcKKyAgUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzVVRGMTZTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1VURjMyU3RyaW5nCisgIFB5VW5pY29kZV9Bc1VURjhTdHJpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Bc1VURjhTdHJpbmcKKyAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzVW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0FzV2lkZUNoYXIKKyAgUHlVbmljb2RlX0NsZWFyRnJlZWxpc3Q9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9DbGVhckZyZWVsaXN0CisgIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ29tcGFyZQorICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfQ29uY2F0CisgIFB5VW5pY29kZV9Db250YWlucz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NvbnRhaW5zCisgIFB5VW5pY29kZV9Db3VudD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0NvdW50CisgIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGUKKyAgUHlVbmljb2RlX0RlY29kZUFTQ0lJPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlQVNDSUkKKyAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVDaGFybWFwCisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHQKKyAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCisgIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVMYXRpbjEKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVSYXdVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjE2CisgIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEYzMgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzJTdGF0ZWZ1bD1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0RlY29kZVVURjMyU3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4CisgIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVVEY4U3RhdGVmdWwKKyAgUHlVbmljb2RlX0RlY29kZVVuaWNvZGVFc2NhcGU9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9EZWNvZGVVbmljb2RlRXNjYXBlCisgIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0ZTQ29udmVydGVyCisgIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9GU0RlY29kZXIKKyAgUHlVbmljb2RlX0ZpbmQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9GaW5kCisgIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbUVuY29kZWRPYmplY3QKKyAgUHlVbmljb2RlX0Zyb21Gb3JtYXQ9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tRm9ybWF0CisgIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21Gb3JtYXRWCisgIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbU9iamVjdAorICBQeVVuaWNvZGVfRnJvbU9yZGluYWw9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9Gcm9tT3JkaW5hbAorICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21TdHJpbmcKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfRnJvbVN0cmluZ0FuZFNpemUKKyAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcj1weXRob24zMy5QeVVuaWNvZGVVQ1MyX0Zyb21XaWRlQ2hhcgorICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfR2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfR2V0U2l6ZQorICBQeVVuaWNvZGVfSXNJZGVudGlmaWVyPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfSXNJZGVudGlmaWVyCisgIFB5VW5pY29kZV9Kb2luPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfSm9pbgorICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUGFydGl0aW9uCisgIFB5VW5pY29kZV9SUGFydGl0aW9uPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUlBhcnRpdGlvbgorICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUlNwbGl0CisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUmVwbGFjZQorICBQeVVuaWNvZGVfUmVzaXplPXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfUmVzaXplCisgIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9TZXREZWZhdWx0RW5jb2RpbmcKKyAgUHlVbmljb2RlX1NwbGl0PXB5dGhvbjMzLlB5VW5pY29kZVVDUzJfU3BsaXQKKyAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9TcGxpdGxpbmVzCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzMuUHlVbmljb2RlVUNTMl9UYWlsbWF0Y2gKKyAgUHlVbmljb2RlX1RyYW5zbGF0ZT1weXRob24zMy5QeVVuaWNvZGVVQ1MyX1RyYW5zbGF0ZQorICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zMy5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAorICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zMy5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZworICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zMy5QeVVuaWNvZGVfRGVjb2RlVVRGNworICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjMzLlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKKyAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zMy5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0CisgIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjMzLlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCisgIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zMy5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKKyAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzMuUHlVbmljb2RlX0ludGVybkluUGxhY2UKKyAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzMuUHlVbmljb2RlX1R5cGUgREFUQQorICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjMzLlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQorICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzMuUHlXZWFrcmVmX05ld1Byb3h5CisgIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzMuUHlXZWFrcmVmX05ld1JlZgorICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjMzLlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQorICBQeVdyYXBwZXJfTmV3PXB5dGhvbjMzLlB5V3JhcHBlcl9OZXcKKyAgUHlaaXBfVHlwZT1weXRob24zMy5QeVppcF9UeXBlIERBVEEKKyAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzMuUHlfQWRkUGVuZGluZ0NhbGwKKyAgUHlfQXRFeGl0PXB5dGhvbjMzLlB5X0F0RXhpdAorICBQeV9CdWlsZFZhbHVlPXB5dGhvbjMzLlB5X0J1aWxkVmFsdWUKKyAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zMy5QeV9Db21waWxlU3RyaW5nCisgIFB5X0RlY1JlZj1weXRob24zMy5QeV9EZWNSZWYKKyAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzMuUHlfRW5kSW50ZXJwcmV0ZXIKKyAgUHlfRXhpdD1weXRob24zMy5QeV9FeGl0CisgIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzMuUHlfRmF0YWxFcnJvcgorICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjMzLlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9GaW5hbGl6ZT1weXRob24zMy5QeV9GaW5hbGl6ZQorICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzMuUHlfR2V0QnVpbGRJbmZvCisgIFB5X0dldENvbXBpbGVyPXB5dGhvbjMzLlB5X0dldENvbXBpbGVyCisgIFB5X0dldENvcHlyaWdodD1weXRob24zMy5QeV9HZXRDb3B5cmlnaHQKKyAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zMy5QeV9HZXRFeGVjUHJlZml4CisgIFB5X0dldFBhdGg9cHl0aG9uMzMuUHlfR2V0UGF0aAorICBQeV9HZXRQbGF0Zm9ybT1weXRob24zMy5QeV9HZXRQbGF0Zm9ybQorICBQeV9HZXRQcmVmaXg9cHl0aG9uMzMuUHlfR2V0UHJlZml4CisgIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zMy5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKKyAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzMuUHlfR2V0UHJvZ3JhbU5hbWUKKyAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zMy5QeV9HZXRQeXRob25Ib21lCisgIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjMzLlB5X0dldFJlY3Vyc2lvbkxpbWl0CisgIFB5X0dldFZlcnNpb249cHl0aG9uMzMuUHlfR2V0VmVyc2lvbgorICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjMzLlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQorICBQeV9JbmNSZWY9cHl0aG9uMzMuUHlfSW5jUmVmCisgIFB5X0luaXRpYWxpemU9cHl0aG9uMzMuUHlfSW5pdGlhbGl6ZQorICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzMuUHlfSW5pdGlhbGl6ZUV4CisgIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzMuUHlfSXNJbml0aWFsaXplZAorICBQeV9NYWluPXB5dGhvbjMzLlB5X01haW4KKyAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zMy5QeV9NYWtlUGVuZGluZ0NhbGxzCisgIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjMzLlB5X05ld0ludGVycHJldGVyCisgIFB5X1JlcHJFbnRlcj1weXRob24zMy5QeV9SZXByRW50ZXIKKyAgUHlfUmVwckxlYXZlPXB5dGhvbjMzLlB5X1JlcHJMZWF2ZQorICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zMy5QeV9TZXRQcm9ncmFtTmFtZQorICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjMzLlB5X1NldFB5dGhvbkhvbWUKKyAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzMuUHlfU2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzMuUHlfU3ltdGFibGVTdHJpbmcKKyAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjMzLlB5X1ZhQnVpbGRWYWx1ZQorICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjMzLl9QeUVycl9CYWRJbnRlcm5hbENhbGwKKyAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zMy5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCisgIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjMzLl9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCisgIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzMuX1B5T2JqZWN0X0dDX01hbGxvYworICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjMzLl9QeU9iamVjdF9HQ19OZXcKKyAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zMy5fUHlPYmplY3RfR0NfTmV3VmFyCisgIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzMuX1B5T2JqZWN0X0dDX1Jlc2l6ZQorICBfUHlPYmplY3RfTmV3PXB5dGhvbjMzLl9QeU9iamVjdF9OZXcKKyAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zMy5fUHlPYmplY3RfTmV3VmFyCisgIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zMy5fUHlTdGF0ZV9BZGRNb2R1bGUKKyAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zMy5fUHlUaHJlYWRTdGF0ZV9Jbml0CisgIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjMzLl9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCisgIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zMy5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQorICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zMy5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCisgIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjMzLl9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0CisgIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzMuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgorICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjMzLl9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQorICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zMy5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zMy5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zMy5fUHlfQnVpbGRWYWx1ZV9TaXplVAorICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zMy5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCisgIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzMuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAorICBfUHlfRGVhbGxvYz1weXRob24zMy5fUHlfRGVhbGxvYworICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzMuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKKyAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjMzLl9QeV9GYWxzZVN0cnVjdCBEQVRBCisgIF9QeV9Ob25lU3RydWN0PXB5dGhvbjMzLl9QeV9Ob25lU3RydWN0IERBVEEKKyAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjMzLl9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCisgIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzMuX1B5X1N3YXBwZWRPcCBEQVRBCisgIF9QeV9UcnVlU3RydWN0PXB5dGhvbjMzLl9QeV9UcnVlU3RydWN0IERBVEEKKyAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zMy5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCisgIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zMy5fUHlBcmdfUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzMuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zMy5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjMzLl9QeUFyZ19WYVBhcnNlX1NpemVUCisgIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zMy5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzMuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMubWFrIGIvUEMvcHl0aG9uMy5tYWsKaW5kZXggYTdmMDFjYi4uMmVjOTE4NSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5tYWsKKysrIGIvUEMvcHl0aG9uMy5tYWsKQEAgLTEsMTAgKzEsMTAgQEAKLSQoT3V0RGlyKXB5dGhvbjMuZGxsOglweXRob24zLmRlZiAkKE91dERpcilweXRob24zMnN0dWIubGliCi0JY2wgL0xEIC9GZSQoT3V0RGlyKXB5dGhvbjMuZGxsIHB5dGhvbjNkbGwuYyBweXRob24zLmRlZiAkKE91dERpcilweXRob24zMnN0dWIubGliCiskKE91dERpcilweXRob24zLmRsbDoJcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzNzdHViLmxpYgorCWNsIC9MRCAvRmUkKE91dERpcilweXRob24zLmRsbCBweXRob24zZGxsLmMgcHl0aG9uMy5kZWYgJChPdXREaXIpcHl0aG9uMzNzdHViLmxpYgogCi0kKE91dERpcilweXRob24zMnN0dWIubGliOglweXRob24zMnN0dWIuZGVmCi0JbGliIC9kZWY6cHl0aG9uMzJzdHViLmRlZiAvb3V0OiQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWIgL01BQ0hJTkU6JChNQUNISU5FKQorJChPdXREaXIpcHl0aG9uMzNzdHViLmxpYjoJcHl0aG9uMzNzdHViLmRlZgorCWxpYiAvZGVmOnB5dGhvbjMzc3R1Yi5kZWYgL291dDokKE91dERpcilweXRob24zM3N0dWIubGliIC9NQUNISU5FOiQoTUFDSElORSkKIAogY2xlYW46Ci0JZGVsICQoT3V0RGlyKXB5dGhvbjMuZGxsICQoT3V0RGlyKXB5dGhvbjMubGliICQoT3V0RGlyKXB5dGhvbjMyc3R1Yi5saWIgJChPdXREaXIpcHl0aG9uMy5leHAgJChPdXREaXIpcHl0aG9uMzJzdHViLmV4cAorCWRlbCAkKE91dERpcilweXRob24zLmRsbCAkKE91dERpcilweXRob24zLmxpYiAkKE91dERpcilweXRob24zM3N0dWIubGliICQoT3V0RGlyKXB5dGhvbjMuZXhwICQoT3V0RGlyKXB5dGhvbjMzc3R1Yi5leHAKIAogcmVidWlsZDogY2xlYW4gJChPdXREaXIpcHl0aG9uMy5kbGwKZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMyZ2VuLnB5IGIvUEMvcHl0aG9uMzNnZW4ucHkKc2ltaWxhcml0eSBpbmRleCA2MyUKcmVuYW1lIGZyb20gUEMvcHl0aG9uMzJnZW4ucHkKcmVuYW1lIHRvIFBDL3B5dGhvbjMzZ2VuLnB5CmluZGV4IDkxODJkNTQuLjIxYjlmNTYgMTAwNjQ0Ci0tLSBhL1BDL3B5dGhvbjMyZ2VuLnB5CisrKyBiL1BDL3B5dGhvbjMzZ2VuLnB5CkBAIC0xLDE4ICsxLDIwIEBACi0jIEdlbmVyYXRlIHB5dGhvbjMyc3R1Yi5kZWYgb3V0IG9mIHB5dGhvbjMuZGVmCisjIEdlbmVyYXRlIHB5dGhvbjMzc3R1Yi5kZWYgb3V0IG9mIHB5dGhvbjMuZGVmCiAjIFRoZSByZWd1bGFyIGltcG9ydCBsaWJyYXJ5IGNhbm5vdCBiZSB1c2VkLAogIyBzaW5jZSBpdCBkb2Vzbid0IHByb3ZpZGUgdGhlIHJpZ2h0IHN5bWJvbHMgZm9yCiAjIGRhdGEgZm9yd2FyZGluZwotb3V0ID0gb3BlbigicHl0aG9uMzJzdHViLmRlZiIsICJ3IikKLW91dC53cml0ZSgnTElCUkFSWSAicHl0aG9uMzIiXG4nKQorb3V0ID0gb3BlbigicHl0aG9uMzNzdHViLmRlZiIsICJ3IikKK291dC53cml0ZSgnTElCUkFSWSAicHl0aG9uMzMiXG4nKQogb3V0LndyaXRlKCdFWFBPUlRTXG4nKQogCiBpbnAgPSBvcGVuKCJweXRob24zLmRlZiIpCi1pbnAucmVhZGxpbmUoKQogbGluZSA9IGlucC5yZWFkbGluZSgpCit3aGlsZSBsaW5lLnN0cmlwKCkuc3RhcnRzd2l0aCgnOycpOgorICAgIGxpbmUgPSBpbnAucmVhZGxpbmUoKQorbGluZSA9IGlucC5yZWFkbGluZSgpICMgTElCUkFSWQogYXNzZXJ0IGxpbmUuc3RyaXAoKT09J0VYUE9SVFMnCiAKIGZvciBsaW5lIGluIGlucDoKLSAgICAjIFNZTTE9cHl0aG9uMzIuU1lNMlsgREFUQV0KKyAgICAjIFNZTTE9cHl0aG9uMzMuU1lNMlsgREFUQV0KICAgICBoZWFkLCB0YWlsID0gbGluZS5zcGxpdCgnLicpCiAgICAgaWYgJ0RBVEEnIGluIHRhaWw6CiAgICAgICAgIHN5bWJvbCwgdGFpbCA9IHRhaWwuc3BsaXQoJyAnKQpAQCAtMjIsNCArMjQsMyBAQAogCiBpbnAuY2xvc2UoKQogb3V0LmNsb3NlKCkKLQpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uMzJzdHViLmRlZiBiL1BDL3B5dGhvbjMzc3R1Yi5kZWYKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gUEMvcHl0aG9uMzJzdHViLmRlZgpyZW5hbWUgdG8gUEMvcHl0aG9uMzNzdHViLmRlZgppbmRleCAwOTQzZWYwLi41YjhjY2Y2IDEwMDY0NAotLS0gYS9QQy9weXRob24zMnN0dWIuZGVmCisrKyBiL1BDL3B5dGhvbjMzc3R1Yi5kZWYKQEAgLTEsNCArMSw0IEBACi1MSUJSQVJZICJweXRob24zMiIKK0xJQlJBUlkgInB5dGhvbjMzIgogRVhQT1JUUwogUHlBcmdfUGFyc2UKIFB5QXJnX1BhcnNlVHVwbGUKQEAgLTQ3MSw2ICs0NzEsOCBAQAogUHlTbGljZV9UeXBlCiBQeVNvcnRXcmFwcGVyX1R5cGUKIFB5U3RhdGVfRmluZE1vZHVsZQorUHlTdGF0ZV9BZGRNb2R1bGUKK1B5U3RhdGVfUmVtb3ZlTW9kdWxlCiBQeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KIFB5U3RydWN0U2VxdWVuY2VfTmV3CiBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGUKQEAgLTUxMSw2ICs1MTMsNyBAQAogUHlUdXBsZV9UeXBlCiBQeVR5cGVfQ2xlYXJDYWNoZQogUHlUeXBlX0Zyb21TcGVjCitQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXMKIFB5VHlwZV9HZW5lcmljQWxsb2MKIFB5VHlwZV9HZW5lcmljTmV3CiBQeVR5cGVfR2V0RmxhZ3MKQEAgLTY4NywzICs2OTAsOSBAQAogX1B5X1N3YXBwZWRPcAogX1B5X1RydWVTdHJ1Y3QKIF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKK19QeUFyZ19QYXJzZV9TaXplVAorX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKK19QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKK19QeUFyZ19WYVBhcnNlX1NpemVUCitfUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKK19QeV9CdWlsZFZhbHVlX1NpemVUCmRpZmYgLS1naXQgYS9QQy9weXRob25fbnQucmMgYi9QQy9weXRob25fbnQucmMKaW5kZXggNTI5NTYxMC4uNTAxMGJhYSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uX250LnJjCisrKyBiL1BDL3B5dGhvbl9udC5yYwpAQCAtMTIsNyArMTIsNyBAQAogIyAgIGluY2x1ZGUgInB5dGhvbm50X3JjLmgiCiAjZW5kaWYKIAotLyogZS5nLiwgMi4xYTIKKy8qIGUuZy4sIDMuMy4wYTEKICAqIFBZX1ZFUlNJT04gY29tZXMgZnJvbSBwYXRjaGV2ZWwuaAogICovCiAjZGVmaW5lIFBZVEhPTl9WRVJTSU9OIFBZX1ZFUlNJT04gIlwwIgpkaWZmIC0tZ2l0IGEvUEMvcmVhZG1lLnR4dCBiL1BDL3JlYWRtZS50eHQKaW5kZXggYjVhNWE4Ny4uZmRjMDlhYiAxMDA2NDQKLS0tIGEvUEMvcmVhZG1lLnR4dAorKysgYi9QQy9yZWFkbWUudHh0CkBAIC02Myw3ICs2Myw3IEBACiAKIHB5dGhvbl9udC5yYyAgIFJlc291cmNlIGNvbXBpbGVyIGlucHV0IGZvciBweXRob24xNS5kbGwuCiAKLWRsX250LmMsIGltcG9ydF9udC5jCitkbF9udC5jCiAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIHNvdXJjZXMgdXNlZCBmb3IgMzItYml0IFdpbmRvd3MgZmVhdHVyZXMuCiAKIGdldHBhdGhwLmMgICAgIERlZmF1bHQgc3lzLnBhdGggY2FsY3VsYXRpb25zIChmb3IgYWxsIFBDIHBsYXRmb3JtcykuCmRpZmYgLS1naXQgYS9QQy93aW5yZWcuYyBiL1BDL3dpbnJlZy5jCmluZGV4IDI0MGNhNjkuLjNhNWM4YTYgMTAwNjQ0Ci0tLSBhL1BDL3dpbnJlZy5jCisrKyBiL1BDL3dpbnJlZy5jCkBAIC03NjAsMjYgKzc2MCwyNyBAQAogICAgICAgICBjYXNlIFJFR19TWjoKICAgICAgICAgY2FzZSBSRUdfRVhQQU5EX1NaOgogICAgICAgICAgICAgewotICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gMTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKyBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRSh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgRFdPUkQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRCwgKnJldERhdGFTaXplKTsKLSAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7Ci0gICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKLSAgICAgICAgICAgICAgICB3Y3NjcHkoKHdjaGFyX3QgKikqcmV0RGF0YUJ1ZiwgTCIiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3Y3NjcHkoKHdjaGFyX3QgKikqcmV0RGF0YUJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FTX1VOSUNPREUodmFsdWUpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUqKVB5VW5pY29kZV9Bc1dpZGVDaGFyU3RyaW5nKHZhbHVlLCAmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAgICAgICAgICpyZXREYXRhU2l6ZSA9IFB5X1NBRkVfRE9XTkNBU1QoCisgICAgICAgICAgICAgICAgICAgICAgICAobGVuICsgMSkgKiBzaXplb2Yod2NoYXJfdCksCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90LCBEV09SRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKHdjaGFyX3QsIDEpOworICAgICAgICAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWYgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAoKHdjaGFyX3QgKikqcmV0RGF0YUJ1ZilbMF0gPSBMJ1wwJzsKKyAgICAgICAgICAgICAgICAgICAgKnJldERhdGFTaXplID0gMSAqIHNpemVvZih3Y2hhcl90KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIGNhc2UgUkVHX01VTFRJX1NaOgogICAgICAgICAgICAgewpAQCAtNzk2LDEwICs3OTcsMTYgQEAKICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgaTsgaisrKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnQ7CisgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndzdHI7CisgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworCiAgICAgICAgICAgICAgICAgICAgIHQgPSBQeUxpc3RfR0VUX0lURU0odmFsdWUsIGopOwogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZSArPSBQeV9TQUZFX0RPV05DQVNUKDIgKyBQeVVuaWNvZGVfR0VUX0RBVEFfU0laRSh0KSwKKyAgICAgICAgICAgICAgICAgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHQsICZsZW4pOworICAgICAgICAgICAgICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICBzaXplICs9IFB5X1NBRkVfRE9XTkNBU1QoKGxlbiArIDEpICogc2l6ZW9mKHdjaGFyX3QpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LCBEV09SRCk7CiAgICAgICAgICAgICAgICAgfQogCkBAIC04MTUsMTAgKzgyMiwxNSBAQAogICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBpOyBqKyspCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdDsKKyAgICAgICAgICAgICAgICAgICAgd2NoYXJfdCAqd3N0cjsKKyAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisKICAgICAgICAgICAgICAgICAgICAgdCA9IFB5TGlzdF9HRVRfSVRFTSh2YWx1ZSwgaik7Ci0gICAgICAgICAgICAgICAgICAgIHdjc2NweShQLCBQeVVuaWNvZGVfQVNfVU5JQ09ERSh0KSk7Ci0gICAgICAgICAgICAgICAgICAgIFAgKz0gMSArIHdjc2xlbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHQpKTsKKyAgICAgICAgICAgICAgICAgICAgd3N0ciA9IFB5VW5pY29kZV9Bc1VuaWNvZGVBbmRTaXplKHQsICZsZW4pOworICAgICAgICAgICAgICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgICAgICAgICB3Y3NjcHkoUCwgd3N0cik7CisgICAgICAgICAgICAgICAgICAgIFAgKz0gKGxlbiArIDEpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBBbmQgZG91Ymx5LXRlcm1pbmF0ZSB0aGUgbGlzdC4uLiAqLwogICAgICAgICAgICAgICAgICpQID0gJ1wwJzsKQEAgLTg4Miw3ICs4OTQsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXREYXRhU2l6ZSAtPSAyOwogICAgICAgICAgICAgICAgIGlmIChyZXREYXRhU2l6ZSA8PSAwKQogICAgICAgICAgICAgICAgICAgICBkYXRhID0gTCIiOwotICAgICAgICAgICAgICAgIG9iRGF0YSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShkYXRhLCByZXREYXRhU2l6ZS8yKTsKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKGRhdGEsIHJldERhdGFTaXplLzIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICBjYXNlIFJFR19NVUxUSV9TWjoKQEAgLTkxMyw3ICs5MjUsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9TZXRJdGVtKG9iRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tVW5pY29kZShzdHJbaW5kZXhdLCBsZW4pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihzdHJbaW5kZXhdLCBsZW4pKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZnJlZShzdHIpOwogCkBAIC0xMDU0LDcgKzEwNjYsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4gKi8KLSAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlKCJhZHZhcGkzMi5kbGwiKTsKKyAgICBoTW9kID0gR2V0TW9kdWxlSGFuZGxlVyhMImFkdmFwaTMyLmRsbCIpOwogICAgIGlmIChoTW9kKQogICAgICAgICBwZm4gPSAoUkRLRUZ1bmMpR2V0UHJvY0FkZHJlc3MoaE1vZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnRGVsZXRlS2V5RXhXIik7CkBAIC0xMTIzLDcgKzExMzUsNyBAQAogICAgIGlmIChyYyAhPSBFUlJPUl9TVUNDRVNTKQogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmMsICJSZWdFbnVtS2V5RXgiKTsKIAotICAgIHJldFN0ciA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh0bXBidWYsIGxlbik7CisgICAgcmV0U3RyID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcih0bXBidWYsIGxlbik7CiAgICAgcmV0dXJuIHJldFN0cjsgIC8qIGNhbiBiZSBOVUxMICovCiB9CiAKQEAgLTEyMTUsOCArMTIyNyw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUHlFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKnJldFZhbHVlID0gTlVMTDsKLSAgICBQeV9VTklDT0RFICpzcmM7CisgICAgd2NoYXJfdCAqcmV0VmFsdWUgPSBOVUxMOworICAgIHdjaGFyX3QgKnNyYzsKICAgICBEV09SRCByZXRWYWx1ZVNpemU7CiAgICAgRFdPUkQgcmM7CiAgICAgUHlPYmplY3QgKm87CkBAIC0xMjI5LDcgKzEyNDEsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiKTsKICAgICB9Ci0gICAgcmV0VmFsdWUgPSAoUHlfVU5JQ09ERSAqKVB5TWVtX01hbGxvYyhyZXRWYWx1ZVNpemUgKiBzaXplb2YoUHlfVU5JQ09ERSkpOworICAgIHJldFZhbHVlID0gKHdjaGFyX3QgKilQeU1lbV9NYWxsb2MocmV0VmFsdWVTaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICBpZiAocmV0VmFsdWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICB9CkBAIC0xMjQwLDcgKzEyNTIsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnJXaXRoRnVuY3Rpb24ocmV0VmFsdWVTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiKTsKICAgICB9Ci0gICAgbyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShyZXRWYWx1ZSwgd2NzbGVuKHJldFZhbHVlKSk7CisgICAgbyA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmV0VmFsdWUsIHdjc2xlbihyZXRWYWx1ZSkpOwogICAgIFB5TWVtX0ZyZWUocmV0VmFsdWUpOwogICAgIHJldHVybiBvOwogfQpAQCAtMTM5NCw3ICsxNDA2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWdRdWVyeVZhbHVlIik7CiAgICAgfQogCi0gICAgcmV0U3RyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHJldEJ1Ziwgd2NzbGVuKHJldEJ1ZikpOworICAgIHJldFN0ciA9IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIocmV0QnVmLCB3Y3NsZW4ocmV0QnVmKSk7CiAgICAgUHlNZW1fRnJlZShyZXRCdWYpOwogICAgIHJldHVybiByZXRTdHI7CiB9CkBAIC0xNTI1LDcgKzE1MzcsNyBAQAogewogICAgIEhLRVkgaEtleTsKICAgICBQeU9iamVjdCAqb2JLZXk7Ci0gICAgUHlfVU5JQ09ERSAqdmFsdWVOYW1lOworICAgIHdjaGFyX3QgKnZhbHVlTmFtZTsKICAgICBQeU9iamVjdCAqb2JSZXM7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIEJZVEUgKmRhdGE7CkBAIC0xNTc4LDcgKzE1OTAsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwotICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGUoImFkdmFwaTMyLmRsbCIpOworICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CiAgICAgaWYgKGhNb2QpCiAgICAgICAgIHBmbiA9IChSRFJLRnVuYylHZXRQcm9jQWRkcmVzcyhoTW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0Rpc2FibGVSZWZsZWN0aW9uS2V5Iik7CkBAIC0xNjE0LDcgKzE2MjYsNyBAQAogCiAgICAgLyogT25seSBhdmFpbGFibGUgb24gNjRiaXQgcGxhdGZvcm1zLCBzbyB3ZSBtdXN0IGxvYWQgaXQKICAgICAgICBkeW5hbWljYWxseS4qLwotICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGUoImFkdmFwaTMyLmRsbCIpOworICAgIGhNb2QgPSBHZXRNb2R1bGVIYW5kbGVXKEwiYWR2YXBpMzIuZGxsIik7CiAgICAgaWYgKGhNb2QpCiAgICAgICAgIHBmbiA9IChSRVJLRnVuYylHZXRQcm9jQWRkcmVzcyhoTW9kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0VuYWJsZVJlZmxlY3Rpb25LZXkiKTsKQEAgLTE2NTEsNyArMTY2Myw3IEBACiAKICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiA2NGJpdCBwbGF0Zm9ybXMsIHNvIHdlIG11c3QgbG9hZCBpdAogICAgICAgIGR5bmFtaWNhbGx5LiovCi0gICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZSgiYWR2YXBpMzIuZGxsIik7CisgICAgaE1vZCA9IEdldE1vZHVsZUhhbmRsZVcoTCJhZHZhcGkzMi5kbGwiKTsKICAgICBpZiAoaE1vZCkKICAgICAgICAgcGZuID0gKFJRUktGdW5jKUdldFByb2NBZGRyZXNzKGhNb2QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVnUXVlcnlSZWZsZWN0aW9uS2V5Iik7CmRpZmYgLS1naXQgYS9QQy93aW5zb3VuZC5jIGIvUEMvd2luc291bmQuYwppbmRleCAxZWQ5NWJhLi5iNTY0ZWFiIDEwMDY0NAotLS0gYS9QQy93aW5zb3VuZC5jCisrKyBiL1BDL3dpbnNvdW5kLmMKQEAgLTcyLDcgKzcyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzb3VuZF9wbGF5c291bmQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X1VOSUNPREUgKndzb3VuZDsKKyAgICB3Y2hhcl90ICp3c291bmQ7CiAgICAgaW50IGZsYWdzOwogICAgIGludCBvazsKIApkaWZmIC0tZ2l0IGEvUENidWlsZC9fYnoyLnZjeHByb2ogYi9QQ2J1aWxkL19iejIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg3ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fYnoyLnZjeHByb2oKQEAgLTAsMCArMSwyNjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5iejI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGJ6MkRpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE3MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoYnoyRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTcwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChiejJEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNzAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2J6Mm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJsb2Nrc29ydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcY29tcHJlc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGRlY29tcHJlc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxodWZmbWFuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWJfcHJpdmF0ZS5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fYnoyLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2J6Mi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFjNjRkZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2J6Mi52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw0OCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZjUzYTg1OWQtZGFkMi00ZDViLWFlNDEtZjI4ZDhiNTcxZjVhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57N2UwYmVkMDUtYWUzMy00M2I3LTg3OTctNjU2NDU1YmJiN2YzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9ImJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZWQ1NzRiODktNjk4My00Y2RmLTlmOTgtZmU3MDQ4ZDllODljfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iejJtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGJsb2Nrc29ydC5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWIuYyI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChiejJEaXIpXGNvbXByZXNzLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilcaHVmZm1hbi5jIj4KKyAgICAgIDxGaWx0ZXI+YnppcDIgMS4wLjYgU291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiPgorICAgICAgPEZpbHRlcj5iemlwMiAxLjAuNiBTb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGJ6MkRpcilcYnpsaWIuaCI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IEhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCI+CisgICAgICA8RmlsdGVyPmJ6aXAyIDEuMC42IEhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjAyY2IxZgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX2N0eXBlcy52Y3hwcm9qCkBAIC0wLDAgKzEsMjk0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2N0eXBlczwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpd2luNjQub2JqIiAiJShGdWxsUGF0aCkiCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8Q29tbWFuZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvRm8gIiQoSW50RGlyKXdpbjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxDb21tYW5kIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil3aW42NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKEludERpcil3aW42NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXMudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2Q3YTdiCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDY1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns4MDYwODFlZS0yYWYwLTQ4ZDAtYTgzZS1lZTAyYTc0YmFhMGZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntkYmRlYTFmMi1hZDhiLTQ0Y2EtYjc4Mi1mY2Y2NWQ5MTU1OWJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEN1c3RvbUJ1aWxkIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0N1c3RvbUJ1aWxkPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19jdHlwZXNfdGVzdC52Y3hwcm9qIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWUyOTliCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvagpAQCAtMCwwICsxLDE5MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9jdHlwZXNfdGVzdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2N0eXBlc190ZXN0LnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWU5NGNlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fY3R5cGVzX3Rlc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhmZDcwMTE5LTU0ODEtNGU1ZC1iMTg3LWQwYjE0ZWIyN2UzOH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezM4YWJjNDg2LWUxNDMtNDlkYy04Y2YwLThhZWZhYjBlMGQzZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvaiBiL1BDYnVpbGQvX2RlY2ltYWwudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGJhODFkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qCkBAIC0wLDAgKzEsMzA4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2RlY2ltYWw8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfMzIgL0RQUFJPIC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgL0RDT05GSUdfNjQgL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzsuLlxJbmNsdWRlOy4uXFBDOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR18zMiAvRFBQUk8gL0RNQVNNICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcX2RlY2ltYWw7Li5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlYzslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Ob3RTZXQ8L1N1YlN5c3RlbT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMUEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzY0IC9ETUFTTSAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXF9kZWNpbWFsOy4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWM7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Tm90U2V0PC9TdWJTeXN0ZW0+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDFBMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC9EQ09ORklHXzMyIC9EUFBSTyAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L0RfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAvRENPTkZJR182NCAvRE1BU00gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xfZGVjaW1hbDsuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPk5vdFNldDwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxQTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGJpdHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGRvY3N0cmluZ3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xudW1iZXJ0aGVvcnkuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdHlwZWFyaXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2NvbXBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y3N0ZGludC5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcYmFzZWFyaXRoLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnN0YW50cy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb250ZXh0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGNvbnZvbHV0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjcnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xmb3Vyc3RlcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xtZW1vcnkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xzaXhzdGVwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChJbnREaXIpdmNkaXY2NC5vYmo7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+bWw2NCAvbm9sb2dvIC9jIC9GbyAiJChJbnREaXIpdmNkaXY2NC5vYmoiICIlKEZ1bGxQYXRoKSIKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5tbDY0IC9ub2xvZ28gL2MgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKEludERpcil2Y2RpdjY0Lm9iajslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPENvbW1hbmQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPm1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICIkKEludERpcil2Y2RpdjY0Lm9iaiIgIiUoRnVsbFBhdGgpIgorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoSW50RGlyKXZjZGl2NjQub2JqOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZD4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19kZWNpbWFsLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTE5YWEyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fZGVjaW1hbC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2YzNWE3OGE2LTNlZjAtNGUzNi1iZDhiLWFmYWVmMjJmYmI3Y308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezEzODA4OWY4LWZhYmEtNDk0Zi1iNmVkLTA1MWYzMWZiYWYyZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiaXRzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29uc3RhbnRzLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcZG9jc3RyaW5ncy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZudC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXGZvdXJzdGVwLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbXBkZWNpbWFsLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcbnVtYmVydGhlb3J5LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcc2l4c3RlcC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHRyYW5zcG9zZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHR5cGVhcml0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHVtb2Rhcml0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHZjY29tcGF0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcdmNzdGRpbnQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcX2RlY2ltYWwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xiYXNlYXJpdGguYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb25zdGFudHMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xjb250ZXh0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY29udm9sdXRlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcY3J0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZGlmcmFkaXgyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm50LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RlY2ltYWxcbGlibXBkZWNcZm91cnN0ZXAuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1xpby5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1lbW9yeS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG1wZGVjaW1hbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXG51bWJlcnRoZW9yeS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9kZWNpbWFsXGxpYm1wZGVjXHNpeHN0ZXAuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x0cmFuc3Bvc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q3VzdG9tQnVpbGQgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGVjaW1hbFxsaWJtcGRlY1x2Y2RpdjY0LmFzbSI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ3VzdG9tQnVpbGQ+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ogYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MDJhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCkBAIC0wLDAgKzEsMjcwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2VsZW1lbnR0cmVlPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNzgyOTUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw3MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjQzZDg2MDctZDAyNC00MGZlLTg1ODMtMTgyM2M5NjQzMGYwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57N2I1MzM1YWQtMDU5Zi00ODZmLTg1ZTQtZjQ3NTdlMjZhOWJmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxleHBhdC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaWFzY2lpdGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxtYWNjb25maWcuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcdXRmOHRhYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIGIvUENidWlsZC9fZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MTk3YWYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2oKQEAgLTAsMCArMSwxODggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9PC9Qcm9qZWN0R3VpZD4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2ZyZWV6ZV9pbXBvcnRsaWI8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbmtJbmNyZW1lbnRhbD50cnVlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TGlua0luY3JlbWVudGFsPnRydWU8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFByZWNvbXBpbGVkSGVhZGVyPgorICAgICAgPC9QcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO05ERUJVRztfQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+dHJ1ZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4kKFRhcmdldFBhdGgpIC4uXExpYlxpbXBvcnRsaWJcX2Jvb3RzdHJhcC5weSAuLlxQeXRob25caW1wb3J0bGliLmg8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8TWVzc2FnZT5jcmVhdGluZyBpbXBvcnRsaWIuaDwvTWVzc2FnZT4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxQcmVjb21waWxlZEhlYWRlcj4KKyAgICAgIDwvUHJlY29tcGlsZWRIZWFkZXI+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtOREVCVUc7X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPnRydWU8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+JChUYXJnZXRQYXRoKSAuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkgLi5cUHl0aG9uXGltcG9ydGxpYi5oPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPE1lc3NhZ2U+Y3JlYXRpbmcgaW1wb3J0bGliLmg8L01lc3NhZ2U+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnJlZXplX2ltcG9ydGxpYi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UHJpdmF0ZT50cnVlPC9Qcml2YXRlPgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PnRydWU8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgICAgPENvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+ZmFsc2U8L0NvcHlMb2NhbFNhdGVsbGl0ZUFzc2VtYmxpZXM+CisgICAgICA8TGlua0xpYnJhcnlEZXBlbmRlbmNpZXM+dHJ1ZTwvTGlua0xpYnJhcnlEZXBlbmRlbmNpZXM+CisgICAgICA8VXNlTGlicmFyeURlcGVuZGVuY3lJbnB1dHM+ZmFsc2U8L1VzZUxpYnJhcnlEZXBlbmRlbmN5SW5wdXRzPgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cTGliXGltcG9ydGxpYlxfYm9vdHN0cmFwLnB5IiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2ZyZWV6ZV9pbXBvcnRsaWIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZWMxOTMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19mcmVlemVfaW1wb3J0bGliLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezkzOTk1MzgwLTg5QkQtNGIwNC04OEVCLTYyNUZCRTUyRUJGQn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sO2luYzt4c2Q8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjdEQTZBQjYtRjgwMC00YzA4LThCN0EtODNCQjEyMUFBRDAxfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPnJjO2ljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZTtyZXN4O3RpZmY7dGlmO3BuZzt3YXY7bWZjcmliYm9uLW1zPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2ZyZWV6ZV9pbXBvcnRsaWIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxMaWJcaW1wb3J0bGliXF9ib290c3RyYXAucHkiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvaiBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjQzM2VkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9faGFzaGxpYi52Y3hwcm9qCkBAIC0wLDAgKzEsMjgyIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X2hhc2hsaWI8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmM2NDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChvcGVuc3NsRGlyKVxpbmMzMjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWI7JChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2IxMWQ3NTBmLWNkMWYtNGE5Ni04NWNlLWU2OWE1YzUyNTlmOX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzc2wudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57ZTViMDRjYzAtZWI0Yy00MmFiLWI0ZGMtMThlZjk1Zjg2NGIwfTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2hhc2hsaWIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZDk5M2UKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19oYXNobGliLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntjYzQ1OTYzZC1iZDI1LTRlYjgtYmRiYS1hNTUwNzA5MGJjYTR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbHptYS52Y3hwcm9qIGIvUENidWlsZC9fbHptYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMjVjODAKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKQEAgLTAsMCArMSwyNTAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5sem1hPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQobHptYURpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKGx6bWFEaXIpXGJpbl9pNDg2XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX2k0ODZcbGlibHptYS5hOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NDtfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTtMWk1BX0FQSV9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQ7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEU7TFpNQV9BUElfU1RBVElDOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQobHptYURpcilcYmluX3g4Ni02NFxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sem1hbW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19sem1hLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2x6bWEudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNWVkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19sem1hLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns1M2U2OGVkYS0zOWZjLTQzMzYtYTY1OC1kYzVmNWQ1OTg3NjB9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2x6bWFtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tc2kudmN4cHJvaiBiL1BDYnVpbGQvX21zaS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMjNkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19tc2kudmN4cHJvagpAQCAtMCwwICsxLDIyNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9tc2k8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPmZjaS5saWI7bXNpLmxpYjtycGNydDQubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDE2MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5mY2kubGliO21zaS5saWI7cnBjcnQ0LmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxNjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+ZmNpLmxpYjttc2kubGliO3JwY3J0NC5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xfbXNpLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tc2kudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fbXNpLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGVjNTJkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fbXNpLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiZGVmNzcxMC1lNDMzLTRhYzAtODRlMC0xNGYzNDQ1NGJkM2V9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXF9tc2kuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ2MzM3ZC4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL19tdWx0aXByb2Nlc3NpbmcudmNwcm9qCisrKyAvZGV2L251bGwKQEAgLTEsNTU3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlQcm9qZWN0R1VJRD0iezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQotCVJvb3ROYW1lc3BhY2U9Il9tdWx0aXByb2Nlc3NpbmciDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xwaXBlX2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzb2NrZXRfY29ubmVjdGlvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHdpbjMyX2Z1bmN0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qIGIvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRiYjU2OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qCkBAIC0wLDAgKzEsMjMwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X211bHRpcHJvY2Vzc2luZzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNlbWFwaG9yZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fbXVsdGlwcm9jZXNzaW5nLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMzNlYwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX211bHRpcHJvY2Vzc2luZy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NjIzYzk1NmMtMTg5My00M2Q5LWE3ZGMtOTZlNGZlZjIwZjkzfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MzQ2MTVhNjItZjk5OS00NjU5LTgzZjUtMTlkMTdhNjQ0NTMwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zb2NrZXQudmN4cHJvaiBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzODM2ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zb2NrZXQudmN4cHJvagpAQCAtMCwwICsxLDIyOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9zb2NrZXQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUQwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFEMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc29ja2V0LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkwZmZhOAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NvY2tldC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MTQ1MjIwN2YtNzA3Yy00ZTg0LWI1MzItMzA3MTkzYTBmZDg1fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MWVkZmUwZDAtN2I5ZC00ZGM4LWEzMzUtYjIxZmVmN2NjNzdhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzkyZGFkMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3NxbGl0ZTMudmN4cHJvagpAQCAtMCwwICsxLDI3NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPl9zcWxpdGUzPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQoc3FsaXRlM0Rpcik7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5NT0RVTEVfTkFNRT0ic3FsaXRlMyI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxODAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHNxbGl0ZTNEaXIpOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TU9EVUxFX05BTUU9InNxbGl0ZTMiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMTgwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk1PRFVMRV9OQU1FPSJzcWxpdGUzIjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTE4MDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJzcWxpdGUzLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2ExYTI5NWU1LTQ2M2MtNDM3Zi04MWNhLTFmMzIzNjc2ODVkYX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19zcWxpdGUzLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGU1ZmRiCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSw3MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZGFjOGFiM2ItY2UxNi00YmVmLWJlZjktNzY0NjNhMDFmNWM0fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ODE0YjE4N2QtNDRhZC00ZjJiLWJhYTctMThjYThhOGE2YTc3fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNvbm5lY3Rpb24uaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1vZHVsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVccm93LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxzcWxpdGVjb21wYXQuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fc3NsLnZjeHByb2ogYi9QQ2J1aWxkL19zc2wudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTcxZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fc3NsLnZjeHByb2oKQEAgLTAsMCArMSwyODYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fc3NsPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jNjQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQob3BlbnNzbERpcilcaW5jMzI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53czJfMzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliOyQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzMyOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKG9wZW5zc2xEaXIpXGluYzY0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxDb21tYW5kPgorICAgICAgPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYjskKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3NzbC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InNzbC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntlNWIwNGNjMC1lYjRjLTQyYWItYjRkYy0xOGVmOTVmODY0YjB9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0iX3NvY2tldC52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0Pns4NjkzN2Y1My1jMTg5LTQwZWYtOGNlOC04NzU5ZDhlN2Q0ODB9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3NzbC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL19zc2wudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YjE0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL19zc2wudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY5NTM0OGY3LWU5ZjYtNGZlMS1iYzAzLTVmMDhmZmM4MDk1Yn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3NsLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMjY1ZjYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0YnVmZmVyLnZjeHByb2oKQEAgLTAsMCArMSwyMTcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGJ1ZmZlcjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMUYwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0YnVmZmVyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdGJ1ZmZlci52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkZjI4MgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RidWZmZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhkMjMyMjQwLTkyMWEtNGJjMi04N2MzLTkzZmZkMzQ2MmYwYX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGVzdGJ1ZmZlci5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2ogYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OWE3ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qCkBAIC0wLDAgKzEsMjE4IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+X3Rlc3RjYXBpPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTFGMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUxRjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190ZXN0Y2FwaS52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E2YWQxYQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3RjYXBpLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthNzZhOTBkOC04ZThiLTRjMzYtOGY1OC04YmQ0NmFiZTlmNWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3ZjcyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2oKQEAgLTAsMCArMSwyNTEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGtpbnRlcjwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKHRjbHRrRGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGtMaWJEZWJ1Zyk7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYkRlYnVnKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0a0RpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrTGliKTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGs2NERpcilcaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJVEhfQVBQSU5JVDslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKHRjbHRrNjRMaWIpOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiQodGNsdGtEaXIpXGluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSVRIX0FQUElOSVQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JCh0Y2x0a0xpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JCh0Y2x0azY0RGlyKVxpbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+V0lUSF9BUFBJTklUOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQodGNsdGs2NExpYik7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL190a2ludGVyLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTVjZDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9fdGtpbnRlci52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YjljZTY0ZGQtY2I5NS00NzJkLWJiZTgtNTU4M2IyY2QzNzVifTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90a2ludGVyLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGthcHBpbml0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2ogYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTI3NmEyCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9iZGlzdF93aW5pbnN0LnZjeHByb2oKQEAgLTAsMCArMSwxNTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPndpbmluc3Q8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8T3V0RGlyIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFw8L091dERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPE91dERpciBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXDwvT3V0RGlyPgorICAgIDxJbnREaXIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgICA8TGlua0luY3JlbWVudGFsIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5mYWxzZTwvTGlua0luY3JlbWVudGFsPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPi5leGU8L1RhcmdldEV4dD4KKyAgICA8VGFyZ2V0RXh0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4uZXhlPC9UYXJnZXRFeHQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+V2luMzI8L1RhcmdldEVudmlyb25tZW50PgorICAgICAgPFR5cGVMaWJyYXJ5TmFtZT4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYjwvVHlwZUxpYnJhcnlOYW1lPgorICAgICAgPEhlYWRlckZpbGVOYW1lPgorICAgICAgPC9IZWFkZXJGaWxlTmFtZT4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWluU3BhY2U8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwMDAwPC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUEM7Li5cUENcYmRpc3Rfd2luaW5zdDsuLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz5jb21jdGwzMi5saWI7aW1hZ2VobHAubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4uLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC0xMC4wLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5MSUJDOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFByb2dyYW1EYXRhYmFzZUZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDg2PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxNa1R5cExpYkNvbXBhdGlibGU+dHJ1ZTwvTWtUeXBMaWJDb21wYXRpYmxlPgorICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICAgIDxUeXBlTGlicmFyeU5hbWU+LlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGI8L1R5cGVMaWJyYXJ5TmFtZT4KKyAgICAgIDxIZWFkZXJGaWxlTmFtZT4KKyAgICAgIDwvSGVhZGVyRmlsZU5hbWU+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1pblNwYWNlPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxTdXBwcmVzc1N0YXJ0dXBCYW5uZXI+dHJ1ZTwvU3VwcHJlc3NTdGFydHVwQmFubmVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDAwMDwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+Y29tY3RsMzIubGliO2ltYWdlaGxwLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+Li5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtMTAuMC1hbWQ2NC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3VwcHJlc3NTdGFydHVwQmFubmVyPnRydWU8L1N1cHByZXNzU3RhcnR1cEJhbm5lcj4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+TElCQzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPi4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5wZGI8L1Byb2dyYW1EYXRhYmFzZUZpbGU+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICAgIDxSYW5kb21pemVkQmFzZUFkZHJlc3M+ZmFsc2U8L1JhbmRvbWl6ZWRCYXNlQWRkcmVzcz4KKyAgICAgIDxEYXRhRXhlY3V0aW9uUHJldmVudGlvbj4KKyAgICAgIDwvRGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYmRpc3Rfd2luaW5zdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YjZhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2JkaXN0X3dpbmluc3QudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsNjEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezI5M2IxMDkyLTAzYWQtNGI3Yy1hY2I5LWM0YWI2MmU1MmY1NX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzXHpsaWIiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBlZGMwNDA2LTI4MmYtNGRiYy1iNjBlLWE4NjdjMzRhMmEzMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2VhMGMwZjBlLTNiNzMtNDc0ZS1hOTk5LWU5Njg5ZDAzMmNjY308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5oO2hwcDtoeHg7aG07aW5sPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezBjNzdjMWNmLTNmODctNGY4Ny1iZDg2LWI0MjUyMTFjMjE4MX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5pY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENcYmRpc3Rfd2luaW5zdFxhcmNoaXZlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGQuYmF0IGIvUENidWlsZC9idWlsZC5iYXQKaW5kZXggYTczNTYwZS4uZmEwZDk1YiAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZC5iYXQKKysrIGIvUENidWlsZC9idWlsZC5iYXQKQEAgLTUsMTQgKzUsMTUgQEAKIHNldGxvY2FsCiBzZXQgcGxhdGY9V2luMzIKIHNldCBjb25mPVJlbGVhc2UKLXNldCBidWlsZD0KK3NldCB0YXJnZXQ9YnVpbGQKK3NldCBkaXI9JX5kcDAKIAogOkNoZWNrT3B0cwogaWYgIiUxIj09Ii1jIiAoc2V0IGNvbmY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCiBpZiAiJTEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCi1pZiAiJTEiPT0iLXIiIChzZXQgYnVpbGQ9L3JlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1yIiAoc2V0IHRhcmdldD1yZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKIGlmICIlMSI9PSItZCIgKHNldCBjb25mPURlYnVnKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKIAotc2V0IGNtZD12Y2J1aWxkIC91c2VlbnYgcGNidWlsZC5zbG4gJWJ1aWxkJSAiJWNvbmYlfCVwbGF0ZiUiCitzZXQgY21kPW1zYnVpbGQgL3A6dXNlZW52PXRydWUgJWRpciVwY2J1aWxkLnNsbiAvdDoldGFyZ2V0JSAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlCiBlY2hvICVjbWQlCiAlY21kJQpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9zc2wuYmF0IGIvUENidWlsZC9idWlsZF9zc2wuYmF0CmluZGV4IGNlZTY0YTguLjM1N2IwOGIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfc3NsLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkX3NzbC5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIGlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgKICAgaWYgJTEgRVFVIERlYnVnICgKICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjMxX2QuZGxsIGV4aXQgMQorICAgIGlmIG5vdCBleGlzdCBweXRob24zM19kLmRsbCBleGl0IDEKICAgKSBFTFNFICgKICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQotICAgIGlmIG5vdCBleGlzdCBweXRob24zMS5kbGwgZXhpdCAxCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjMzLmRsbCBleGl0IDEKICAgKQogKQogJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfc3NsLnB5IGIvUENidWlsZC9idWlsZF9zc2wucHkKaW5kZXggOTM4ODEyNC4uNWE3YTg5ZSAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF9zc2wucHkKKysrIGIvUENidWlsZC9idWlsZF9zc2wucHkKQEAgLTY1LDkgKzY1LDkgQEAKIAogIyBGZXRjaCBTU0wgZGlyZWN0b3J5IGZyb20gVkMgcHJvcGVydGllcwogZGVmIGdldF9zc2xfZGlyKCk6Ci0gICAgcHJvcGZpbGUgPSAob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdweXByb2plY3QudnNwcm9wcycpKQorICAgIHByb3BmaWxlID0gKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAncHlwcm9qZWN0LnByb3BzJykpCiAgICAgd2l0aCBvcGVuKHByb3BmaWxlKSBhcyBmOgotICAgICAgICBtID0gcmUuc2VhcmNoKCdvcGVuc3NsLShbXiJdKykiJywgZi5yZWFkKCkpCisgICAgICAgIG0gPSByZS5zZWFyY2goJ29wZW5zc2wtKFtePF0rKTwnLCBmLnJlYWQoKSkKICAgICAgICAgcmV0dXJuICIuLlwuLlxvcGVuc3NsLSIrbS5ncm91cCgxKQogCiAKQEAgLTIyOCw5ICsyMjgsOSBAQAogCiAgICAgICAgICMgTm93IHJ1biBtYWtlLgogICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCI6Ci0gICAgICAgICAgICByYyA9IG9zLnN5c3RlbSgibWw2NCAtYyAtRm9tc1xcdXB0YWJsZS5vYmogbXNcXHVwdGFibGUuYXNtIikKKyAgICAgICAgICAgIHJjID0gb3Muc3lzdGVtKCJuYXNtIC1mIHdpbjY0IC1ETkVBUiAtT3ggLWcgbXNcXHVwdGFibGUuYXNtIikKICAgICAgICAgICAgIGlmIHJjOgotICAgICAgICAgICAgICAgIHByaW50KCJtbDY0IGFzc2VtYmxlciBoYXMgZmFpbGVkLiIpCisgICAgICAgICAgICAgICAgcHJpbnQoIm5hc20gYXNzZW1ibGVyIGhhcyBmYWlsZWQuIikKICAgICAgICAgICAgICAgICBzeXMuZXhpdChyYykKIAogICAgICAgICBjb3B5KHIiY3J5cHRvXGJ1aWxkaW5mXyVzLmgiICUgYXJjaCwgciJjcnlwdG9cYnVpbGRpbmYuaCIpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkgYi9QQ2J1aWxkL2J1aWxkX3RraW50ZXIucHkKaW5kZXggZWIxZDA5Mi4uNDE5NmNmMyAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZF90a2ludGVyLnB5CisrKyBiL1BDYnVpbGQvYnVpbGRfdGtpbnRlci5weQpAQCAtMTEsOCArMTEsOCBAQAogaGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQogcGFyID0gb3MucGF0aC5wYXJkaXIKIAotVENMID0gInRjbDguNS45IgotVEsgPSAidGs4LjUuOSIKK1RDTCA9ICJ0Y2w4LjUuMTEiCitUSyA9ICJ0azguNS4xMSIKIFRJWCA9ICJ0aXgtOC40LjMueCIKIAogUk9PVCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oaGVyZSwgcGFyLCBwYXIpKQpAQCAtMzIsNyArMzIsNyBAQAogZGVmIGJ1aWxkKHBsYXRmb3JtLCBjbGVhbik6CiAgICAgaWYgcGxhdGZvcm0gPT0gIldpbjMyIjoKICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGsiKQotICAgICAgICBtYWNoaW5lID0gIlg4NiIKKyAgICAgICAgbWFjaGluZSA9ICJJWDg2IgogICAgIGVsaWYgcGxhdGZvcm0gPT0gIkFNRDY0IjoKICAgICAgICAgZGVzdCA9IG9zLnBhdGguam9pbihST09ULCAidGNsdGs2NCIpCiAgICAgICAgIG1hY2hpbmUgPSAiQU1ENjQiCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2RlYnVnLnByb3BzIGIvUENidWlsZC9kZWJ1Zy5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjdhNjVhCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9kZWJ1Zy5wcm9wcwpAQCAtMCwwICsxLDI3IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIj4KKyAgICA8UHlEZWJ1Z0V4dD5fZDwvUHlEZWJ1Z0V4dD4KKyAgICA8S2lsbFB5dGhvbkV4ZT4kKE91dERpcilraWxsX3B5dGhvbl9kLmV4ZTwvS2lsbFB5dGhvbkV4ZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPFRhcmdldE5hbWU+JChQcm9qZWN0TmFtZSlfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHlEZWJ1Z0V4dCI+CisgICAgICA8VmFsdWU+JChQeURlYnVnRXh0KTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IktpbGxQeXRob25FeGUiPgorICAgICAgPFZhbHVlPiQoS2lsbFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9lbnYuYmF0IGIvUENidWlsZC9lbnYuYmF0CmluZGV4IDYzOGIxNmMuLjA4ZGM4ZWYgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvZW52LmJhdAorKysgYi9QQ2J1aWxkL2Vudi5iYXQKQEAgLTEsNSArMSw5IEBACiBAZWNobyBvZmYKLXNldCBWUzk9JVByb2dyYW1GaWxlcyVcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gOS4wCitzZXQgVlMxMD0lUHJvZ3JhbUZpbGVzKHg4NiklXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjAKK0lGIEVYSVNUICIlVlMxMCUiIEdPVE8gb2sKK3NldCBWUzEwPSVQcm9ncmFtRmlsZXMlXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDEwLjAKKzpvaworCiBlY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBpYTY0LCBhbWQ2NCwgeDg2X2FtZDY0LCB4ODZfaWE2NAogZWNoby4KLWNhbGwgIiVWUzklXFZDXHZjdmFyc2FsbC5iYXQiICUxCitjYWxsICIlVlMxMCVcVkNcdmN2YXJzYWxsLmJhdCIgJTEKZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24uYyBiL1BDYnVpbGQva2lsbF9weXRob24uYwppbmRleCA2YjkxNjc4Li5iYjMyM2QzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2tpbGxfcHl0aG9uLmMKKysrIGIvUENidWlsZC9raWxsX3B5dGhvbi5jCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYIFRPRE86IGlmIHdlIHJlYWxseSB3YW50ZWQgdG8gYmUgZmFuY3ksIHdlIGNvdWxkIGNoZWNrIHRoZSAKICAgICAgICAgICogbW9kdWxlcyBmb3IgYWxsIHByb2Nlc3NlcyAobm90IGp1c3QgdGhlIHB5dGhvbltfZF0uZXhlIG9uZXMpCi0gICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzJbX2RdLmRsbCksCisgICAgICAgICAqIGFuZCBzZWUgaWYgYW55IG9mIG91ciBETExzIGFyZSBsb2FkZWQgKGkuZS4gcHl0aG9uMzNbX2RdLmRsbCksCiAgICAgICAgICAqIGFzIHRoYXQgd291bGQgYWxzbyBpbmhpYml0IG91ciBhYmlsaXR5IHRvIHJlYnVpbGQgdGhlIHNvbHV0aW9uLgogICAgICAgICAgKiBOb3Qgd29ydGggbG9vc2luZyBzbGVlcCBvdmVyIHRob3VnaDsgZm9yIG5vdywgYSBzaW1wbGUgY2hlY2sgCiAgICAgICAgICAqIGZvciBqdXN0IHRoZSBweXRob24gZXhlY3V0YWJsZSBzaG91bGQgYmUgc3VmZmljaWVudC4KZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvaiBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjY3YzQwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qCkBAIC0wLDAgKzEsMTIwIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+a2lsbF9weXRob248L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9raWxsX3B5dGhvbi52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMzZDc1MQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQva2lsbF9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezQ4NjA2NTkxLWM4YjYtNDFhNS05NWM1LTlhMDg5MGM1NTA0Zn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ia2lsbF9weXRob24uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLmMKaW5kZXggZmQzYTJlMi4uZjlhYWRlZSAxMDA2NDQKLS0tIGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby5jCisrKyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8uYwpAQCAtMiw2ICsyLDcgQEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8aW8uaD4KIAogI2RlZmluZSBDTURfU0laRSA1MDAKIApAQCAtNjEsNiArNjIsNTEgQEAKICAgICByZXR1cm4gMTsKIH0KIAorY29uc3QgY2hhciBERUxJTVNbXSA9IHsgIiBcbiIgfTsKKworaW50IGdldF9tZXJjdXJpYWxfaW5mbyhjaGFyICogaGdicmFuY2gsIGNoYXIgKiBoZ3RhZywgY2hhciAqIGhncmV2LCBpbnQgc2l6ZSkKK3sKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBjaGFyIGZpbGVuYW1lW0NNRF9TSVpFXTsKKyAgICBjaGFyIGNtZGxpbmVbQ01EX1NJWkVdOworCisgICAgc3RyY3B5X3MoZmlsZW5hbWUsIENNRF9TSVpFLCAidG1wWFhYWFhYIik7CisgICAgaWYgKF9ta3RlbXBfcyhmaWxlbmFtZSwgQ01EX1NJWkUpID09IDApIHsKKyAgICAgICAgaW50IHJjOworCisgICAgICAgIHN0cmNweV9zKGNtZGxpbmUsIENNRF9TSVpFLCAiaGcgaWQgLWJpdCA+ICIpOworICAgICAgICBzdHJjYXRfcyhjbWRsaW5lLCBDTURfU0laRSwgZmlsZW5hbWUpOworICAgICAgICByYyA9IHN5c3RlbShjbWRsaW5lKTsKKyAgICAgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgICAgIEZJTEUgKiBmcDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZvcGVuX3MoJmZwLCBmaWxlbmFtZSwgInIiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgY2hhciAqIGNwID0gZmdldHMoY21kbGluZSwgQ01EX1NJWkUsIGZwKTsKKworICAgICAgICAgICAgICAgIGlmIChjcCkgeworICAgICAgICAgICAgICAgICAgICBjaGFyICogY29udGV4dCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgKiB0cCA9IHN0cnRva19zKGNwLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHlfcyhoZ3Jldiwgc2l6ZSwgdHApOworICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0cCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweV9zKGhnYnJhbmNoLCBzaXplLCB0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAgPSBzdHJ0b2tfcyhOVUxMLCBERUxJTVMsICZjb250ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyY3B5X3MoaGd0YWcsIHNpemUsIHRwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBfdW5saW5rKGZpbGVuYW1lKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqYXJndltdKQogewogICAgIGNoYXIgY29tbWFuZFtDTURfU0laRV0gPSAiY2wuZXhlIC1jIC1EX1dJTjMyIC1EVVNFX0RMX0VYUE9SVCAtRF9XSU5ET1dTIC1EV0lOMzIgLURfV0lORExMICI7CkBAIC0xMDksOCArMTU1LDI3IEBACiAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXCIiKTsKICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIHRtcHBhdGgpOwogICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mbzIuY1wiIC1EU1VCV0NSRVYgIik7Ci0gICAgfSBlbHNlCisgICAgfQorICAgIGVsc2UgeworICAgICAgICBjaGFyIGhndGFnW0NNRF9TSVpFXTsKKyAgICAgICAgY2hhciBoZ2JyYW5jaFtDTURfU0laRV07CisgICAgICAgIGNoYXIgaGdyZXZbQ01EX1NJWkVdOworCisgICAgICAgIGlmIChnZXRfbWVyY3VyaWFsX2luZm8oaGdicmFuY2gsIGhndGFnLCBoZ3JldiwgQ01EX1NJWkUpKSB7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi1ESEdCUkFOQ0g9XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhnYnJhbmNoKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiIpOworCisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtREhHVEFHPVxcXCIiKTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCBoZ3RhZyk7CisgICAgICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIlxcXCIiKTsKKworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsICIgLURIR1ZFUlNJT049XFxcIiIpOworICAgICAgICAgICAgc3RyY2F0X3MoY29tbWFuZCwgQ01EX1NJWkUsIGhncmV2KTsKKyAgICAgICAgICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCAiXFxcIiAiKTsKKyAgICAgICAgfQogICAgICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIi4uXFxNb2R1bGVzXFxnZXRidWlsZGluZm8uYyIpOworICAgIH0KICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgIiAtRm9cIiIpOwogICAgIHN0cmNhdF9zKGNvbW1hbmQsIENNRF9TSVpFLCB0bXBwYXRoKTsKICAgICBzdHJjYXRfcyhjb21tYW5kLCBDTURfU0laRSwgImdldGJ1aWxkaW5mby5vXCIgLUkuLlxcSW5jbHVkZSAtSS4uXFxQQyIpOwpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qIGIvUENidWlsZC9tYWtlX2J1aWxkaW5mby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlZTdmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2oKQEAgLTAsMCArMSw1MiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5tYWtlX2J1aWxkaW5mbzwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjQwMjE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpbWFrZV9idWlsZGluZm8uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvbWFrZV9idWlsZGluZm8udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMjdmOGMKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfYnVpbGRpbmZvLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDE0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+Y3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXg8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFrZV9idWlsZGluZm8uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvaiBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZjUwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL21ha2VfdmVyc2lvbmluZm8udmN4cHJvagpAQCAtMCwwICsxLDIwMCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPm1ha2VfdmVyc2lvbmluZm88L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC40MDIxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmMuaAorPC9Db21tYW5kPgorICAgICAgPE91dHB1dHM+JChTb2x1dGlvbkRpcikuLlxQQ1xweXRob25udF9yYy5oOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgICA8SW5wdXRzPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGU8L0lucHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQgLz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8Q3VzdG9tQnVpbGRTdGVwPgorICAgICAgPE1lc3NhZ2U+QnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmg8L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yYy5oCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjLmg7JShPdXRwdXRzKTwvT3V0cHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD5jZCAkKFNvbHV0aW9uRGlyKQorbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlxQQ1xweXRob25fbnQuaAorPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDdXN0b21CdWlsZFN0ZXA+CisgICAgICA8TWVzc2FnZT5CdWlsZCBQQy9weXRob25udF9yYyhfZCkuaDwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9ubnRfcmNfZC5oCis8L0NvbW1hbmQ+CisgICAgICA8T3V0cHV0cz4kKFNvbHV0aW9uRGlyKS4uXFBDXHB5dGhvbm50X3JjX2QuaDslKE91dHB1dHMpPC9PdXRwdXRzPgorICAgICAgPElucHV0cz4kKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGU8L0lucHV0cz4KKyAgICA8L0N1c3RvbUJ1aWxkU3RlcD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgICA8UG9zdEJ1aWxkRXZlbnQ+CisgICAgICA8Q29tbWFuZD4KKyAgICAgIDwvQ29tbWFuZD4KKyAgICA8L1Bvc3RCdWlsZEV2ZW50PgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPEN1c3RvbUJ1aWxkU3RlcD4KKyAgICAgIDxNZXNzYWdlPkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+Y2QgJChTb2x1dGlvbkRpcikKK21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlxQQ1xweXRob25udF9yY19kLmgKKzwvQ29tbWFuZD4KKyAgICAgIDxPdXRwdXRzPiQoU29sdXRpb25EaXIpLi5cUENccHl0aG9ubnRfcmNfZC5oOyUoT3V0cHV0cyk8L091dHB1dHM+CisgICAgPC9DdXN0b21CdWlsZFN0ZXA+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICAgIDxQb3N0QnVpbGRFdmVudD4KKyAgICAgIDxDb21tYW5kPmNkICQoU29sdXRpb25EaXIpCittYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cUENccHl0aG9uX250X2QuaAorPC9Db21tYW5kPgorICAgIDwvUG9zdEJ1aWxkRXZlbnQ+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9tYWtlX3ZlcnNpb25pbmZvLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZjMDQzNAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvbWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ZTQxODA5NTQtYzNhNS00NzQ5LWI5YTQtMzFiODA0ZWU0ZmE4fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wY2J1aWxkLnNsbiBiL1BDYnVpbGQvcGNidWlsZC5zbG4KaW5kZXggMWRlNGVhMS4uZDZhMDIyZiAxMDA2NDQKLS0tIGEvUENidWlsZC9wY2J1aWxkLnNsbgorKysgYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCkBAIC0xLDE0MSArMSw3OCBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTAuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAwOA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3Byb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9ID0ge0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmNwcm9qIiwgIntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3Byb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9ID0ge0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0NCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9ID0ge0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmNwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLUVuZFByb2plY3QNCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMS4wMA0KKyMgVmlzdWFsIFN0dWRpbyAyMDEwDQogUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSINCiAJUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0DQogCQkuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KIAkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQNCiAJRW5kUHJvamVjdFNlY3Rpb24NCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmN4cHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX3ZlcnNpb25pbmZvIiwgIm1ha2VfdmVyc2lvbmluZm8udmN4cHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjeHByb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3hwcm9qIiwgIntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInc5eHBvcGVuIiwgInc5eHBvcGVuLnZjeHByb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmN4cHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3Byb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9ID0ge0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbnNvdW5kIiwgIndpbnNvdW5kLnZjeHByb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0gPSB7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2RlY2ltYWwiLCAiX2RlY2ltYWwudmN4cHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjeHByb2oiLCAiezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjeHByb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmN4cHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX21zaSIsICJfbXNpLnZjeHByb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmNwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmN4cHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3hwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmN4cHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3Byb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0NCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9ID0ge0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmN4cHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmNwcm9qIiwgIntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3hwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tdWx0aXByb2Nlc3NpbmciLCAiX211bHRpcHJvY2Vzc2luZy52Y3Byb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9iejIiLCAiX2J6Mi52Y3hwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KIEVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbCIsICJzc2wudmNwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCUVuZFByb2plY3RTZWN0aW9uDQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjeHByb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iDQogRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2x6bWEiLCAiX2x6bWEudmN4cHJvaiIsICJ7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24zZGxsIiwgInB5dGhvbjNkbGwudmNwcm9qIiwgIns4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9Ig0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmN4cHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCiBFbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ4eGxpbWl0ZWQiLCAieHhsaW1pdGVkLnZjcHJvaiIsICJ7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfSINCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3hwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3hwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjeHByb2oiLCAiezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3FsaXRlMyIsICJzcWxpdGUzLnZjeHByb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3NsIiwgInNzbC52Y3hwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImtpbGxfcHl0aG9uIiwgImtpbGxfcHl0aG9uLnZjeHByb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uM2RsbCIsICJweXRob24zZGxsLnZjeHByb2oiLCAiezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAieHhsaW1pdGVkIiwgInh4bGltaXRlZC52Y3hwcm9qIiwgIntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9Ig0KK0VuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0YnVmZmVyIiwgIl90ZXN0YnVmZmVyLnZjeHByb2oiLCAie0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlsYXVuY2hlciIsICJweWxhdW5jaGVyLnZjeHByb2oiLCAiezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0iDQorRW5kUHJvamVjdA0KK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl3bGF1bmNoZXIiLCAicHl3bGF1bmNoZXIudmN4cHJvaiIsICJ7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fSINCitFbmRQcm9qZWN0DQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZnJlZXplX2ltcG9ydGxpYiIsICJfZnJlZXplX2ltcG9ydGxpYi52Y3hwcm9qIiwgInsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9Ig0KIEVuZFByb2plY3QNCiBHbG9iYWwNCiAJR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCkBAIC0yNjEsNiArMTk4LDIyIEBACiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCiAJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQogCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KIAkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQogCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQpAQCAtNDM3LDYgKzM5MCwyMiBAQAogCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7RjlENzE3ODAtRjM5My0xMUUwLUJFNTAtMDgwMDIwMEM5QTY2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0Y5RDcxNzgwLUYzOTMtMTFFMC1CRTUwLTA4MDAyMDBDOUE2Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGOUQ3MTc4MC1GMzkzLTExRTAtQkU1MC0wODAwMjAwQzlBNjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCiAJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KIAkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KQEAgLTU1OCwzNiArNTI3LDkwIEBACiAJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQogCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCiAJCXs4ODVENDg5OC1EMDhELTQwOTEtOUM0MC1DNzAwQ0ZFM0ZDNUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQorCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezg4NUQ0ODk4LUQwOEQtNDA5MS05QzQwLUM3MDBDRkUzRkM1QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCisJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCiAJCXtGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7Rjc0OUI4MjItQjQ4OS00Q0E1LUEzQUQtQ0UwNzhGNUYzMzhBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJe0Y3NDlCODIyLUI0ODktNENBNS1BM0FELUNFMDc4RjVGMzM4QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QTI2OTdCRDMtMjhDMS00QUVDLTkxMDYtOEI3NDg2MzlGRDE2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0EyNjk3QkQzLTI4QzEtNEFFQy05MTA2LThCNzQ4NjM5RkQxNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtBMjY5N0JEMy0yOEMxLTRBRUMtOTEwNi04Qjc0ODYzOUZEMTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7N0IyNzI3QjUtNUEzRi00MEVFLUE4NjYtNDNBMTNDRDMxNDQ2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCisJCXs3QjI3MjdCNS01QTNGLTQwRUUtQTg2Ni00M0ExM0NEMzE0NDZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KKwkJezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQorCQl7MUQ0QjE4RDMtN0MxMi00RUNCLTkxNzktODUzMUZGODc2Q0U2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxRDRCMThEMy03QzEyLTRFQ0ItOTE3OS04NTMxRkY4NzZDRTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7MTlDMEMxM0YtNDdDQS00NDMyLUFGRjMtNzk5QTI5NkE0RERDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXsxOUMwQzEzRi00N0NBLTQ0MzItQUZGMy03OTlBMjk2QTREREN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJezE5QzBDMTNGLTQ3Q0EtNDQzMi1BRkYzLTc5OUEyOTZBNEREQ30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCiAJRW5kR2xvYmFsU2VjdGlvbg0KIAlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KIAkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMgYi9QQ2J1aWxkL3BnaW5zdHJ1bWVudC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg0OTk1Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9wZ2luc3RydW1lbnQucHJvcHMKQEAgLTAsMCArMSwzOCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CisgICAgPE91dERpclBHST4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVw8L091dERpclBHST4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKE91dERpclBHSSlcPC9PdXREaXI+CisgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLXBnaVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8RmF2b3JTaXplT3JTcGVlZD5TaXplPC9GYXZvclNpemVPclNwZWVkPgorICAgICAgPE9taXRGcmFtZVBvaW50ZXJzPnRydWU8L09taXRGcmFtZVBvaW50ZXJzPgorICAgICAgPEVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+ZmFsc2U8L0VuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM+CisgICAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+CisgICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPEJ1ZmZlclNlY3VyaXR5Q2hlY2s+ZmFsc2U8L0J1ZmZlclNlY3VyaXR5Q2hlY2s+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPExpbmtUaW1lQ29kZUdlbmVyYXRpb24+UEdJbnN0cnVtZW50PC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPFByb2ZpbGVHdWlkZWREYXRhYmFzZT4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm0pLXBnaVwkKFRhcmdldE5hbWUpLnBnZDwvUHJvZmlsZUd1aWRlZERhdGFiYXNlPgorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9Ik91dERpclBHSSI+CisgICAgICA8VmFsdWU+JChPdXREaXJQR0kpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9wZ3VwZGF0ZS5wcm9wcyBiL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc3NWEwMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcGd1cGRhdGUucHJvcHMKQEAgLTAsMCArMSwxNyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoU29sdXRpb25EaXIpXHBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxPdXREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdvXDwvT3V0RGlyPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz4lKEFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz4KKyAgICAgIDxMaW5rVGltZUNvZGVHZW5lcmF0aW9uPlBHVXBkYXRlPC9MaW5rVGltZUNvZGVHZW5lcmF0aW9uPgorICAgICAgPEltcG9ydExpYnJhcnk+JChPdXREaXIpJChUYXJnZXROYW1lKS5saWI8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWQucHJvcHMgYi9QQ2J1aWxkL3B5ZC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Njk5NjZlCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWQucHJvcHMKQEAgLTAsMCArMSwyNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8R2VuZXJhdGVNYW5pZmVzdD5mYWxzZTwvR2VuZXJhdGVNYW5pZmVzdD4KKyAgICA8RW1iZWRNYW5pZmVzdD5mYWxzZTwvRW1iZWRNYW5pZmVzdD4KKyAgICA8VGFyZ2V0RXh0Pi5weWQ8L1RhcmdldEV4dD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0JVSUxEX0NPUkVfTU9EVUxFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICA8L0xpbms+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlkX2QucHJvcHMgYi9QQ2J1aWxkL3B5ZF9kLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMjMyODgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5ZF9kLnByb3BzCkBAIC0wLDAgKzEsMzEgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8TGlua0luY3JlbWVudGFsPmZhbHNlPC9MaW5rSW5jcmVtZW50YWw+CisgICAgPEdlbmVyYXRlTWFuaWZlc3Q+ZmFsc2U8L0dlbmVyYXRlTWFuaWZlc3Q+CisgICAgPEVtYmVkTWFuaWZlc3Q+ZmFsc2U8L0VtYmVkTWFuaWZlc3Q+CisgICAgPFRhcmdldEV4dD4ucHlkPC9UYXJnZXRFeHQ+CisgICAgPFRhcmdldE5hbWU+JChQcm9qZWN0TmFtZSlfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPkRlZmF1bHQ8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0JVSUxEX0NPUkVfTU9EVUxFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rIC8+CisgICAgPFBvc3RCdWlsZEV2ZW50PgorICAgICAgPENvbW1hbmQ+CisgICAgICA8L0NvbW1hbmQ+CisgICAgPC9Qb3N0QnVpbGRFdmVudD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwIC8+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWV4cGF0LnZjeHByb2ogYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NzRmZDNkCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2oKQEAgLTAsMCArMSwyMzcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weWV4cGF0PC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi5cLi5cTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+LlwuLlxNb2R1bGVzXGV4cGF0OyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+UFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uXC4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5QWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5ZXhwYXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiZjM2MmYKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJIZWFkZXIgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2RkYWU3N2E2LTdjYTAtNGExYi1iNzFjLWRlZWE1ZjQwMjVkZX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezVhZjlkNDBjLWZjNDYtNDY0MC1hZDg0LTNkMWRkMzRhNzFkN308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5ZXhwYXQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvaiBiL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYTkzZGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvagpAQCAtMCwwICsxLDMxMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezdCMjcyN0I1LTVBM0YtNDBFRS1BODY2LTQzQTEzQ0QzMTQ0Nn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5bGF1bmNoZXI8L1Jvb3ROYW1lc3BhY2U+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz50cnVlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPnRydWU8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VEZWJ1Z0xpYnJhcmllcz5mYWxzZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+ZmFsc2U8L1VzZURlYnVnTGlicmFyaWVzPgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICAgIDxDaGFyYWN0ZXJTZXQ+TXVsdGlCeXRlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iUHJvcGVydHlTaGVldHMiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5X2Q8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weV9kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8VGFyZ2V0TmFtZT5weTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChUYXJnZXROYW1lKSQoVGFyZ2V0RXh0KTwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTtOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj50cnVlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8RW5hYmxlQ09NREFURm9sZGluZz5mYWxzZTwvRW5hYmxlQ09NREFURm9sZGluZz4KKyAgICAgIDxPcHRpbWl6ZVJlZmVyZW5jZXM+dHJ1ZTwvT3B0aW1pemVSZWZlcmVuY2VzPgorICAgICAgPElnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+ZmFsc2U8L0lnbm9yZUFsbERlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXGxhdW5jaGVyLmljbyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX3ZlcnNpb25pbmZvLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2YwZTA1NDFlLWYxN2QtNDMwYi05N2M0LTkzYWRmMGRkMjg0ZX08L1Byb2plY3Q+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHlsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjIzZDIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5pY28iPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXByb2plY3QucHJvcHMgYi9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZiZTNjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXByb2plY3QucHJvcHMKQEAgLTAsMCArMSwxMDUgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChQbGF0Zm9ybSknPT0nV2luMzInIj4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPE91dERpcj4kKFNvbHV0aW9uRGlyKTwvT3V0RGlyPgorICAgIDxJbnREaXI+JChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb24pXCQoUHJvamVjdE5hbWUpXDwvSW50RGlyPgorICAgIDxMaW5rSW5jcmVtZW50YWw+ZmFsc2U8L0xpbmtJbmNyZW1lbnRhbD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPiAgCisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J3g2NCciPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8X1Byb3BlcnR5U2hlZXREaXNwbGF5TmFtZT5hbWQ2NDwvX1Byb3BlcnR5U2hlZXREaXNwbGF5TmFtZT4KKyAgICA8T3V0RGlyPiQoU29sdXRpb25EaXIpYW1kNjRcPC9PdXREaXI+CisgICAgPEludERpcj4kKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbilcJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiPgorICAgIDxQeURsbE5hbWU+cHl0aG9uMzMkKFB5RGVidWdFeHQpPC9QeURsbE5hbWU+CisgICAgPFB5dGhvbkV4ZT4kKE91dERpcilweXRob24kKFB5RGVidWdFeHQpLmV4ZTwvUHl0aG9uRXhlPgorICAgIDxLaWxsUHl0aG9uRXhlPiQoT3V0RGlyKWtpbGxfcHl0aG9uJChQeURlYnVnRXh0KS5leGU8L0tpbGxQeXRob25FeGU+CisgICAgPGV4dGVybmFsc0Rpcj4uLlwuLjwvZXh0ZXJuYWxzRGlyPgorICAgIDxzcWxpdGUzRGlyPiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy43LjEyPC9zcWxpdGUzRGlyPgorICAgIDxiejJEaXI+JChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42PC9iejJEaXI+CisgICAgPGx6bWFEaXI+JChleHRlcm5hbHNEaXIpXHh6LTUuMC4zPC9sem1hRGlyPgorICAgIDxvcGVuc3NsRGlyPiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTEuMC4xYzwvb3BlbnNzbERpcj4KKyAgICA8dGNsdGtEaXI+JChleHRlcm5hbHNEaXIpXHRjbHRrPC90Y2x0a0Rpcj4KKyAgICA8dGNsdGs2NERpcj4kKGV4dGVybmFsc0RpcilcdGNsdGs2NDwvdGNsdGs2NERpcj4KKyAgICA8dGNsdGtMaWI+JCh0Y2x0a0RpcilcbGliXHRjbDg1LmxpYjskKHRjbHRrRGlyKVxsaWJcdGs4NS5saWI8L3RjbHRrTGliPgorICAgIDx0Y2x0a0xpYkRlYnVnPiQodGNsdGtEaXIpXGxpYlx0Y2w4NWcubGliOyQodGNsdGtEaXIpXGxpYlx0azg1Zy5saWI8L3RjbHRrTGliRGVidWc+CisgICAgPHRjbHRrNjRMaWI+JCh0Y2x0azY0RGlyKVxsaWJcdGNsODUubGliOyQodGNsdGs2NERpcilcbGliXHRrODUubGliPC90Y2x0azY0TGliPgorICAgIDx0Y2x0azY0TGliRGVidWc+JCh0Y2x0azY0RGlyKVxsaWJcdGNsODVnLmxpYjskKHRjbHRrNjREaXIpXGxpYlx0azg1Zy5saWI8L3RjbHRrNjRMaWJEZWJ1Zz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPnRydWU8L0ludHJpbnNpY0Z1bmN0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7IC4uXFBDOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8RXhjZXB0aW9uSGFuZGxpbmc+CisgICAgICA8L0V4Y2VwdGlvbkhhbmRsaW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PlByb2dyYW1EYXRhYmFzZTwvRGVidWdJbmZvcm1hdGlvbkZvcm1hdD4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+JChPdXREaXIpOyUoQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxQcm9ncmFtRGF0YWJhc2VGaWxlPiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiPC9Qcm9ncmFtRGF0YWJhc2VGaWxlPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8UmFuZG9taXplZEJhc2VBZGRyZXNzPmZhbHNlPC9SYW5kb21pemVkQmFzZUFkZHJlc3M+CisgICAgICA8RGF0YUV4ZWN1dGlvblByZXZlbnRpb24+CisgICAgICA8L0RhdGFFeGVjdXRpb25QcmV2ZW50aW9uPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFBDOy4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9IlB5RGxsTmFtZSI+CisgICAgICA8VmFsdWU+JChQeURsbE5hbWUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKFB5dGhvbkV4ZSk8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJLaWxsUHl0aG9uRXhlIj4KKyAgICAgIDxWYWx1ZT4kKEtpbGxQeXRob25FeGUpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iZXh0ZXJuYWxzRGlyIj4KKyAgICAgIDxWYWx1ZT4kKGV4dGVybmFsc0Rpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJzcWxpdGUzRGlyIj4KKyAgICAgIDxWYWx1ZT4kKHNxbGl0ZTNEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iYnoyRGlyIj4KKyAgICAgIDxWYWx1ZT4kKGJ6MkRpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJsem1hRGlyIj4KKyAgICAgIDxWYWx1ZT4kKGx6bWFEaXIpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0ib3BlbnNzbERpciI+CisgICAgICA8VmFsdWU+JChvcGVuc3NsRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrRGlyIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrRGlyKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjREaXIiPgorICAgICAgPFZhbHVlPiQodGNsdGs2NERpcik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYiI+CisgICAgICA8VmFsdWU+JCh0Y2x0a0xpYik8L1ZhbHVlPgorICAgIDwvQnVpbGRNYWNybz4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJ0Y2x0a0xpYkRlYnVnIj4KKyAgICAgIDxWYWx1ZT4kKHRjbHRrTGliRGVidWcpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0idGNsdGs2NExpYiI+CisgICAgICA8VmFsdWU+JCh0Y2x0azY0TGliKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICAgIDxCdWlsZE1hY3JvIEluY2x1ZGU9InRjbHRrNjRMaWJEZWJ1ZyI+CisgICAgICA8VmFsdWU+JCh0Y2x0azY0TGliRGVidWcpPC9WYWx1ZT4KKyAgICA8L0J1aWxkTWFjcm8+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDBhOWRlMAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKQEAgLTAsMCArMSwzNjggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9PC9Qcm9qZWN0R3VpZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWdETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEJyb3dzZUluZm9ybWF0aW9uPnRydWU8L0Jyb3dzZUluZm9ybWF0aW9uPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uX2QuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMTAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob24uZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPEltcG9ydExpYnJhcnk+CisgICAgICA8L0ltcG9ydExpYnJhcnk+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NPTlNPTEU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbi5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fQ09OU09MRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9uLmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xweWNvbi5pY28iIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHB5dGhvbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJ3OXhwb3Blbi52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntlOWUwYTFmNi0wMDA5LTRlOGMtYjhmOC0xYjhmNWQ0OWEwNTh9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDkwNmE0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob24udmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMjYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJSZXNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MmQ2OTA3OTUtZGU4My00YTMzLTgyMzUtM2M1ZGFmZTQ1ZWZhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OGIwMTBhMTktNWIyOS00NWYxLWE4YTAtZjY3MmUyYmJiMTFhfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHljb24uaWNvIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyI+CisgICAgICA8RmlsdGVyPlJlc291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweXRob24uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNDU5YjUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvagpAQCAtMCwwICsxLDE4NCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICA8L0l0ZW1Hcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9Ikdsb2JhbHMiPgorICAgIDxQcm9qZWN0R3VpZD57ODg1RDQ4OTgtRDA4RC00MDkxLTlDNDAtQzcwMENGRTNGQzVBfTwvUHJvamVjdEd1aWQ+CisgICAgPFJvb3ROYW1lc3BhY2U+cHl0aG9uM2RsbDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5NYWtlZmlsZTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg2NCBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14ODYgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcik8L05NYWtlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VSZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKSByZWJ1aWxkPC9OTWFrZVJlQnVpbGRDb21tYW5kTGluZT4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChPdXREaXIpcHl0aG9uMy5kbGw8L05NYWtlT3V0cHV0PgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAkKFByb2plY3REaXIpXC4uXFBDCitubWFrZSAvZiBweXRob24zLm1hayBNQUNISU5FPXg4NiBPdXREaXI9JChPdXREaXIpIHJlYnVpbGQ8L05NYWtlUmVCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDg2IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoT3V0RGlyKXB5dGhvbjMuZGxsPC9OTWFrZU91dHB1dD4KKyAgICA8Tk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZEluY2x1ZGVzKTwvTk1ha2VGb3JjZWRJbmNsdWRlcz4KKyAgICA8Tk1ha2VBc3NlbWJseVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+Y2QgJChQcm9qZWN0RGlyKVwuLlxQQworbm1ha2UgL2YgcHl0aG9uMy5tYWsgTUFDSElORT14NjQgT3V0RGlyPSQoT3V0RGlyKTwvTk1ha2VCdWlsZENvbW1hbmRMaW5lPgorICAgIDxOTWFrZVJlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgcmVidWlsZDwvTk1ha2VSZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPmNkICQoUHJvamVjdERpcilcLi5cUEMKK25tYWtlIC9mIHB5dGhvbjMubWFrIE1BQ0hJTkU9eDY0IE91dERpcj0kKE91dERpcikgY2xlYW48L05NYWtlQ2xlYW5Db21tYW5kTGluZT4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE91dERpcilweXRob24zLmRsbDwvTk1ha2VPdXRwdXQ+CisgICAgPE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRJbmNsdWRlcyk8L05NYWtlRm9yY2VkSW5jbHVkZXM+CisgICAgPE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxOb25lIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbjMuZGVmIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbjNkbGwuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uM2RsbC52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNTBjNDUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbjNkbGwudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENccHl0aG9uMy5kZWYiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L05vbmU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uM2RsbC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTQ5M2UzCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKQEAgLTAsMCArMSw2ODAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5weXRob25jb3JlPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChQeURsbE5hbWUpPC9UYXJnZXROYW1lPgorICAgIDxUYXJnZXROYW1lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgICA8VGFyZ2V0TmFtZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKFB5RGxsTmFtZSk8L1RhcmdldE5hbWU+CisgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPiQoUHlEbGxOYW1lKTwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9abTIwMCAgJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cUHl0aG9uOy4uXE1vZHVsZXNcemxpYjslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxJbmNsdWRlOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPFByZUxpbmtFdmVudD4KKyAgICAgIDxNZXNzYWdlPkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uPC9NZXNzYWdlPgorICAgICAgPENvbW1hbmQ+IiQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlIiBSZWxlYXNlICIkKEludERpcikiPC9Db21tYW5kPgorICAgIDwvUHJlTGlua0V2ZW50PgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+JChJbnREaXIpZ2V0YnVpbGRpbmZvLm87JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+RGVmYXVsdDwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8SW50cmluc2ljRnVuY3Rpb25zPmZhbHNlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1Z0RMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgRGVidWcgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQeURsbE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZTAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vWm0yMDAgICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXFB5dGhvbjsuLlxNb2R1bGVzXHpsaWI7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMjslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+Li5cSW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxQcmVMaW5rRXZlbnQ+CisgICAgICA8TWVzc2FnZT5HZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLjwvTWVzc2FnZT4KKyAgICAgIDxDb21tYW5kPiIkKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSIgUmVsZWFzZSAiJChJbnREaXIpIjwvQ29tbWFuZD4KKyAgICA8L1ByZUxpbmtFdmVudD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoSW50RGlyKWdldGJ1aWxkaW5mby5vOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFB5RGxsTmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L1ptMjAwICAlKEFkZGl0aW9uYWxPcHRpb25zKTwvQWRkaXRpb25hbE9wdGlvbnM+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4uLlxQeXRob247Li5cTW9kdWxlc1x6bGliOyUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXEluY2x1ZGU7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8UHJlTGlua0V2ZW50PgorICAgICAgPE1lc3NhZ2U+R2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi48L01lc3NhZ2U+CisgICAgICA8Q29tbWFuZD4iJChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUiIFJlbGVhc2UgIiQoSW50RGlyKSI8L0NvbW1hbmQ+CisgICAgPC9QcmVMaW5rRXZlbnQ+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz4kKEludERpcilnZXRidWlsZGluZm8ubzslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWUwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWJzdHJhY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYWNjdS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhc2RsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxiaXRzZXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYm9vbG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNldmFsLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvZGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29kZWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNvbXBpbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29tcGxleG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkYXRldGltZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR5bmFtaWNfYW5ub3RhdGlvbnMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZW51bW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxlcnJjb2RlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGV2YWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmaWxldXRpbHMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZnJhbWVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZnVuY29iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxnZW5vYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ3JhbWluaXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZ3JhbW1hci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpbXBvcnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaW50cmNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsb25naW50cmVwci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1hcnNoYWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxuYW1lc3BhY2VvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbm9kZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqaW1wbC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvcGNvZGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweV9jdXJzZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlhcmVuYS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWNhcHN1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHljdHlwZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWRlYnVnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZXhwYXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlmcGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlnZXRvcHQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYXRoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGltZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1hY3JvLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWVtLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5cG9ydC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0YXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RyY21wLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5c3RydG9kLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGR0b2EuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxQeXRob24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHl0aG9ucnVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGhyZWFkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHJhbmdlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHNldG9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzdHJ1Y3RtZW1iZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3RydWN0c2VxLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN5bXRhYmxlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN5c21vZHVsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0b2tlbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx0cmFjZWJhY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdWNuaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx0cmVlcy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6bGliLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcenV0aWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcY2prY29kZWNzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2hrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3Nfa3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZhc3RzZWFyY2guaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGZpbmQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJpbmdsaWJcc3BsaXQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZXR5cGVfZGIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBDXGVycm1hcC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENccHljb25maWcuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbF9naWwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb25kdmFyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Nzdi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfanNvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbG9jYWxlbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9sc3Byb2YuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX21hdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3BpY2tsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfcmFuZG9tbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfd2Vha3JlZi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhcnJheW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xhdGV4aXRtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXVkaW9vcC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xiaW5hc2NpaS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZGF0ZXRpbWVtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZmF1bHRoYW5kbGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGdjbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtYWluLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcb3BlcmF0b3IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccGFyc2VybW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGExbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2lnbmFsbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHN5bXRhYmxlbW9kdWxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90aHJlYWRtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemlwaW1wb3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGZpbGVpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cYnl0ZXNpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGJ1ZmZlcmVkaW8uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF93aW5hcGkuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYWJzdHJhY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYWNjdS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVzX21ldGhvZHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZWFycmF5b2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJ5dGVzb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNhcHN1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2VsbG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjbGFzc29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZGVzY3JvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZGljdG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZmlsZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmbG9hdG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmdW5jb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGdlbm9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGxpc3RvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbG9uZ29iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xuYW1lc3BhY2VvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9ibWFsbG9jLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHJhbmdlb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHNldG9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzbGljZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdHlwZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcYWNjZWxlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGJpdHNldC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGZpcnN0c2V0cy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGdyYW1tYXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyMS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGxpc3Rub2RlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxteXJlYWRsaW5lLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbm9kZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNldG9rLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcdG9rZW5pemVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5yZWcuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGNvbmZpZy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZGxfbnQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXGdldHBhdGhwLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xtc3ZjcnRtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxyYW5kb20uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxfd2FybmluZ3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxhc2RsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYmx0aW5tb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjZXZhbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvZGVjcy5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbXBpbGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHlubG9hZF93aW4uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxlcnJvcnMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmaWxldXRpbHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZyb3plbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZ1dHVyZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGFyZ3MuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRjb21waWxlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldGNvcHlyaWdodC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldG9wdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0dmVyc2lvbi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdyYW1pbml0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxtYXJzaGFsLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbW9kc3VwcG9ydC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXG15c25wcmludGYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxteXN0cnRvdWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxwZWVwaG9sZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5YXJlbmEuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweWN0eXBlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlmcGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweW1hdGguYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXRpbWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0YXRlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJjbXAuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cnRvZC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR0b2EuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxQeXRob24tYXN0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHl0aG9ucnVuLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3ltdGFibGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzeXNtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0cmFjZWJhY2suYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweXRob25fbnQucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezZkZTEwNzQ0LWUzOTYtNDBhNS1iNGUyLTFiNjlhYTdjOGQzMX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJtYWtlX2J1aWxkaW5mby52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjNzNmMGVjMS0zNThiLTQxNzctOTQwZi0wODQ2YWM4YjA0Y2R9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0ibWFrZV92ZXJzaW9uaW5mby52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntmMGUwNTQxZS1mMTdkLTQzMGItOTdjNC05M2FkZjBkZDI4NGV9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YjRiYjQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsOTI1IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSW5jbHVkZSI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MDg2YjBhZmItMjcwYy00NjAzLWEwMmEtNjNkNDZmMGIyYjkyfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezhlODE2MDlmLTEzY2EtNGVhZS05ZmRiLWY4YWYyMGM3MTBjN308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgICAgPEZpbHRlciBJbmNsdWRlPSJNb2R1bGVzXF9pbyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57ODc4N2M1YmItYmFiNi00NTg2LWE0MmUtNGEyN2M3YjNmZmI2fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcemxpYiI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NWQ2ZDJkNmMtOWU2MS00YTFkLWIwYjItNWNjMmY0NDZkNjllfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9Ik1vZHVsZXNcY2prY29kZWNzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5ZjEyYzRiMS0zMjJlLTQzMWUtYWJmMS1lMDI1NTBmNTAwMzJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iT2JqZWN0cyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57YWIyOWE1NTgtMTQzZC00ZmU3LWEwMzktYjQzMWZiNDI5ODU2fTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlBhcnNlciI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTczNDlmZWUtMGFiZi00OGIwLWE4ZjUtNzcxYmYzOWI4YWVlfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlBDIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlYTIxZmM5OC1kZTg5LTQ3NDYtYTk3OS1jNTYxNjk2NDMyOWF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUHl0aG9uIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntmMjY5NjQwNi0xNGJjLTQ4YmQtOTBjNS1lOTNhYjgyYTIxYWN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2MzZTAzYTVjLTU2YzctNDVmZC04NTQzLWU1ZDIzMjZiOTA3ZH08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhYnN0cmFjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxhY2N1LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGFzZGwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYXN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJpdHNldC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVzX21ldGhvZHMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGJ5dGVzb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGNlbGxvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2V2YWwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY2xhc3NvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29kZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb2RlY3MuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcY29tcGlsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRhdGV0aW1lLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGRpY3RvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZHluYW1pY19hbm5vdGF0aW9ucy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGVycmNvZGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcZXZhbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGZpbGV1dGlscy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGdlbm9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxncmFtaW5pdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxncmFtbWFyLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGltcG9ydC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxpbnRyY2hlY2suaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcaXRlcm9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxsaXN0b2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXGxvbmdvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWFyc2hhbC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWV0YWdyYW1tYXIuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbWV0aG9kb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcbW9kdWxlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG5vZGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9iamltcGwuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3Bjb2RlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zZGVmcy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXJzZXRvay5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxwYXRjaGxldmVsLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBnZW4uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbmhlYWRlcnMuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlfY3Vyc2VzLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5YXJlbmEuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHljYXBzdWxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Y3R5cGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlkZWJ1Zy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWVycm9ycy5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweWV4cGF0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5ZnBlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5Z2V0b3B0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5bWF0aC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRpbWUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHltYWNyby5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweW1lbS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXBvcnQuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccHlzdGF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cmNtcC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXN0cnRvZC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxkdG9hLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcUHl0aG9uLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxweXRocmVhZC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzZXRvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcc3RydWN0bWVtYmVyLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzeW10YWJsZS5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxzeXNtb2R1bGUuaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdG9rZW4uaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdHJhY2ViYWNrLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHR1cGxlb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHVjbmhhc2guaCI+CisgICAgICA8RmlsdGVyPkluY2x1ZGU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcdW5pY29kZW9iamVjdC5oIj4KKyAgICAgIDxGaWx0ZXI+SW5jbHVkZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVx3ZWFrcmVmb2JqZWN0LmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxpbmZmaXhlZC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6Y29uZi5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHpsaWIuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHp1dGlsLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGFsZ19qaXN4MDIwMS5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGNqa2NvZGVjcy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfY24uaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19oay5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qcC5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2tyLmgiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXGNvdW50LmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQYXJzZXJccGFyc2VyLmgiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuaCI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENcZXJybWFwLmgiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUENccHljb25maWcuaCI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0ZGwuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG5hbWVzcGFjZW9iamVjdC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbmR2YXIuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsX2dpbC5oIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9jc3YuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2pzb24uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfbHNwcm9mLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9waWNrbGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc3JlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zdHJ1Y3QuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3dlYWtyZWYuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYXRleGl0bW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGF1ZGlvb3AuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcYmluYXNjaWkuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2RhdGV0aW1lbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGZhdWx0aGFuZGxlci5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnY21vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xpdGVydG9vbHNtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcbWFpbi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXG9wZXJhdG9yLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhMW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzaGEyNTZtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcc2hhNTEybW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfdGhyZWFkbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHRpbWVtb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHppcGltcG9ydC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcX2lvPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXGNvbXByZXNzLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcemxpYjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx1bmNvbXByLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXHpsaWI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1x6bGliPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2NuLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19oay5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfanAuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXNcY2prY29kZWNzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2tyLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlc1xjamtjb2RlY3M8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXGNqa2NvZGVjczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xhYnN0cmFjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xhY2N1LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGJvb2xvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcYnl0ZXNvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY2Fwc3VsZS5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGNvZGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGVudW1vYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXGl0ZXJvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbGlzdG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xsb25nb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG1lbW9yeW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbW9kdWxlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXG9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xvYm1hbGxvYy5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cT2JqZWN0c1xzZXRvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcc3RydWN0c2VxLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHR1cGxlb2JqZWN0LmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHR5cGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiPgorICAgICAgPEZpbHRlcj5PYmplY3RzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxPYmplY3RzXHVuaWNvZGVvYmplY3QuYyI+CisgICAgICA8RmlsdGVyPk9iamVjdHM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIj4KKyAgICAgIDxGaWx0ZXI+T2JqZWN0czwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGFjY2VsZXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXGJpdHNldC5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcZmlyc3RzZXRzLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxncmFtbWFyMS5jIj4KKyAgICAgIDxGaWx0ZXI+UGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQYXJzZXJcbGlzdG5vZGUuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXG1ldGFncmFtbWFyLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxteXJlYWRsaW5lLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxub2RlLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclxwYXJzZXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUGFyc2VyXHBhcnNldG9rLmMiPgorICAgICAgPEZpbHRlcj5QYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBhcnNlclx0b2tlbml6ZXIuYyI+CisgICAgICA8RmlsdGVyPlBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2lucmVnLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcY29uZmlnLmMiPgorICAgICAgPEZpbHRlcj5QQzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcZGxfbnQuYyI+CisgICAgICA8RmlsdGVyPlBDPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xnZXRwYXRocC5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXG1zdmNydG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxfd2FybmluZ3MuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGFzZGwuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGFzdC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cYmx0aW5tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxjb2RlY3MuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbXBpbGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmxvYWRfd2luLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxlcnJvcnMuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZpbGV1dGlscy5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGZyb3plbi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZnV0dXJlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRhcmdzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRjb21waWxlci5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXRvcHQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxncmFtaW5pdC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25caW1wb3J0LmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnRkbC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbWFyc2hhbC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbW9kc3VwcG9ydC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbXlzbnByaW50Zi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cbXlzdHJ0b3VsLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxwZWVwaG9sZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlhcmVuYS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHljdHlwZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlmcGUuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5bWF0aC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHl0aW1lLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0YXRlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxweXN0cmNtcC5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccHlzdHJ0b2QuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR0b2EuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHB5dGhvbnJ1bi5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxzeW10YWJsZS5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cc3lzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWQuYyI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRyYWNlYmFjay5jIj4KKyAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25ccmFuZG9tLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3dpbmFwaS5jIj4KKyAgICAgIDxGaWx0ZXI+UEM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE9iamVjdHNcbmFtZXNwYWNlb2JqZWN0LmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjE0NTY5Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9weXRob253LnZjeHByb2oKQEAgLTAsMCArMSwzNDYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9PC9Qcm9qZWN0R3VpZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlT2ZNZmM+ZmFsc2U8L1VzZU9mTWZjPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbndfZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz5mYWxzZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERlYnVnRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0RFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbndfZC5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWRETEw8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPENvbXBpbGVBcz5EZWZhdWx0PC9Db21waWxlQXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPFJlc291cmNlQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPEN1bHR1cmU+MHgwNDA5PC9DdWx0dXJlPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpcHl0aG9udy5leGU8L091dHB1dEZpbGU+CisgICAgICA8U3RhY2tSZXNlcnZlU2l6ZT4yMDAwMDAwPC9TdGFja1Jlc2VydmVTaXplPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MWQwMDAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg4NjwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZERMTDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgICA8Q29tcGlsZUFzPkRlZmF1bHQ8L0NvbXBpbGVBcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8UmVzb3VyY2VDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPk5ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8Q3VsdHVyZT4weDA0MDk8L0N1bHR1cmU+CisgICAgPC9SZXNvdXJjZUNvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcilweXRob253LmV4ZTwvT3V0cHV0RmlsZT4KKyAgICAgIDxTdGFja1Jlc2VydmVTaXplPjIwMDAwMDA8L1N0YWNrUmVzZXJ2ZVNpemU+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxZDAwMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYODY8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRExMPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxDb21waWxlQXM+RGVmYXVsdDwvQ29tcGlsZUFzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxSZXNvdXJjZUNvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxDdWx0dXJlPjB4MDQwOTwvQ3VsdHVyZT4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKXB5dGhvbncuZXhlPC9PdXRwdXRGaWxlPgorICAgICAgPFN0YWNrUmVzZXJ2ZVNpemU+MjAwMDAwMDwvU3RhY2tSZXNlcnZlU2l6ZT4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFkMDAwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcV2luTWFpbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU5ODY2ZgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl0aG9udy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnswNDM0Y2YxMS1hMzExLTRhOTItOGE2Yy00MTY0YWE3OWE3ZjJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlMWQ4ZWE2Yi1jNjVkLTQyZjQtOWVlZC02MDEwODQ2ZWQzNzh9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbl9leGUucmMiPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvUmVzb3VyY2VDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXFdpbk1haW4uYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2ogYi9QQ2J1aWxkL3B5d2xhdW5jaGVyLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhlMzVhNwotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvagpAQCAtMCwwICsxLDI0NiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezFENEIxOEQzLTdDMTItNEVDQi05MTc5LTg1MzFGRjg3NkNFNn08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnB5d2xhdW5jaGVyPC9Sb290TmFtZXNwYWNlPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkFwcGxpY2F0aW9uPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8VXNlRGVidWdMaWJyYXJpZXM+dHJ1ZTwvVXNlRGVidWdMaWJyYXJpZXM+CisgICAgPENoYXJhY3RlclNldD5Vbmljb2RlPC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZURlYnVnTGlicmFyaWVzPmZhbHNlPC9Vc2VEZWJ1Z0xpYnJhcmllcz4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2hhcmFjdGVyU2V0PlVuaWNvZGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iQ29uZmlndXJhdGlvbiIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxDaGFyYWN0ZXJTZXQ+VW5pY29kZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyIgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9ImRlYnVnLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIiBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weXdfZDwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxUYXJnZXROYW1lPnB5d19kPC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxUYXJnZXROYW1lPnB5dzwvVGFyZ2V0TmFtZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPFRhcmdldE5hbWU+cHl3PC9UYXJnZXROYW1lPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8VGFyZ2V0TmFtZT5weXc8L1RhcmdldE5hbWU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5EaXNhYmxlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPFN1YlN5c3RlbT5XaW5kb3dzPC9TdWJTeXN0ZW0+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFRhcmdldE5hbWUpJChUYXJnZXRFeHQpPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDM8L1dhcm5pbmdMZXZlbD4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICAgIDxJbnRyaW5zaWNGdW5jdGlvbnM+dHJ1ZTwvSW50cmluc2ljRnVuY3Rpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPnRydWU8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxFbmFibGVDT01EQVRGb2xkaW5nPmZhbHNlPC9FbmFibGVDT01EQVRGb2xkaW5nPgorICAgICAgPE9wdGltaXplUmVmZXJlbmNlcz50cnVlPC9PcHRpbWl6ZVJlZmVyZW5jZXM+CisgICAgICA8SWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz5mYWxzZTwvSWdub3JlQWxsRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8U3ViU3lzdGVtPldpbmRvd3M8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8V2FybmluZ0xldmVsPkxldmVsMzwvV2FybmluZ0xldmVsPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgICAgPEludHJpbnNpY0Z1bmN0aW9ucz50cnVlPC9JbnRyaW5zaWNGdW5jdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+dHJ1ZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPEVuYWJsZUNPTURBVEZvbGRpbmc+ZmFsc2U8L0VuYWJsZUNPTURBVEZvbGRpbmc+CisgICAgICA8T3B0aW1pemVSZWZlcmVuY2VzPnRydWU8L09wdGltaXplUmVmZXJlbmNlcz4KKyAgICAgIDxJZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPmZhbHNlPC9JZ25vcmVBbGxEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxTdWJTeXN0ZW0+V2luZG93czwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+dmVyc2lvbi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5fV0lORE9XUztOREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1dJTkRPV1M7TkRFQlVHO19XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz52ZXJzaW9uLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU5ET1dTO05ERUJVRztfV0lONjQ7X01fWDY0OyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPE5vbmUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuaWNvIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5bGF1bmNoZXIucmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weXdsYXVuY2hlci52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTRiMjNkMgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvcHl3bGF1bmNoZXIudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMzIgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTM5OTUzODAtODlCRC00YjA0LTg4RUItNjI1RkJFNTJFQkZCfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmg7aHBwO2h4eDtobTtpbmw7aW5jO3hzZDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlJlc291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns2N0RBNkFCNi1GODAwLTRjMDgtOEI3QS04M0JCMTIxQUFEMDF9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+cmM7aWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlO3Jlc3g7dGlmZjt0aWY7cG5nO3dhdjttZmNyaWJib24tbXM8L0V4dGVuc2lvbnM+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcbGF1bmNoZXIuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Tm9uZSBJbmNsdWRlPSIuLlxQQ1xsYXVuY2hlci5pY28iPgorICAgICAgPEZpbHRlcj5SZXNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvTm9uZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFJlc291cmNlQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1xweWxhdW5jaGVyLnJjIj4KKyAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L1Jlc291cmNlQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IGM3ZTNjNzIuLmU3NDk0MjkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTEsNCArMSw0IEBACi1CdWlsZGluZyBQeXRob24gdXNpbmcgVkMrKyA5LjAKK0J1aWxkaW5nIFB5dGhvbiB1c2luZyBWQysrIDEwLjAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGlzIGRpcmVjdG9yeSBpcyB1c2VkIHRvIGJ1aWxkIFB5dGhvbiBmb3IgV2luMzIgYW5kIHg2NCBwbGF0Zm9ybXMsIGUuZy4gCkBAIC0zNyw3ICszNyw3IEBACiAgICBydW5uaW5nIGEgUHl0aG9uIGNvcmUgYnVpbGRib3QgdGVzdCBzbGF2ZTsgc2VlIFNVQlBST0pFQ1RTIGJlbG93KQogCiBXaGVuIHVzaW5nIHRoZSBEZWJ1ZyBzZXR0aW5nLCB0aGUgb3V0cHV0IGZpbGVzIGhhdmUgYSBfZCBhZGRlZCB0bwotdGhlaXIgbmFtZTogIHB5dGhvbjMyX2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiBCb3RoCit0aGVpciBuYW1lOiAgcHl0aG9uMzNfZC5kbGwsIHB5dGhvbl9kLmV4ZSwgcGFyc2VyX2QucHlkLCBhbmQgc28gb24uIEJvdGgKIHRoZSBidWlsZCBhbmQgcnQgYmF0Y2ggZmlsZXMgYWNjZXB0IGEgLWQgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuCiAKIFRoZSAzMmJpdCBidWlsZHMgZW5kIHVwIGluIHRoZSBzb2x1dGlvbiBmb2xkZXIgUENidWlsZCB3aGlsZSB0aGUgeDY0IGJ1aWxkcwpAQCAtNjIsMTcgKzYyLDExIEBACiBDIFJVTlRJTUUKIC0tLS0tLS0tLQogCi1WaXN1YWwgU3R1ZGlvIDIwMDggdXNlcyB2ZXJzaW9uIDkgb2YgdGhlIEMgcnVudGltZSAoTVNWQ1JUOSkuICBUaGUgZXhlY3V0YWJsZXMKLWFyZSBsaW5rZWQgdG8gYSBDUlQgInNpZGUgYnkgc2lkZSIgYXNzZW1ibHkgd2hpY2ggbXVzdCBiZSBwcmVzZW50IG9uIHRoZSB0YXJnZXQKLW1hY2hpbmUuICBUaGlzIGlzIGF2YWxpYmxlIHVuZGVyIHRoZSBWQy9SZWRpc3QgZm9sZGVyIG9mIHlvdXIgdmlzdWFsIHN0dWRpbwotZGlzdHJpYnV0aW9uLiBPbiBYUCBhbmQgbGF0ZXIgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBzdXBwb3J0Ci1zaWRlLWJ5LXNpZGUgYXNzZW1ibGllcyBpdCBpcyBub3QgZW5vdWdoIHRvIGhhdmUgdGhlIG1zdmNydDkwLmRsbCBwcmVzZW50LAotaXQgaGFzIHRvIGJlIHRoZXJlIGFzIGEgd2hvbGUgYXNzZW1ibHksIHRoYXQgaXMsIGEgZm9sZGVyIHdpdGggdGhlIC5kbGwKLWFuZCBhIC5tYW5pZmVzdC4gIEFsc28sIGEgY2hlY2sgaXMgbWFkZSBmb3IgdGhlIGNvcnJlY3QgdmVyc2lvbi4KLVRoZXJlZm9yZSwgb25lIHNob3VsZCBkaXN0cmlidXRlIHRoaXMgYXNzZW1ibHkgd2l0aCB0aGUgZGxscywgYW5kIGtlZXAKLWl0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgc3lzdGVtcywgb25lIHNob3VsZAotYWxzbyBzZXQgdGhlIFBBVEggdG8gdGhpcyBkaXJlY3Rvcnkgc28gdGhhdCB0aGUgZGxsIGNhbiBiZSBmb3VuZC4KLUZvciBtb3JlIGluZm8sIHNlZSB0aGUgUmVhZG1lIGluIHRoZSBWQy9SZWRpc3QgZm9sZGVyLgorVmlzdWFsIFN0dWRpbyAyMDEwIHVzZXMgdmVyc2lvbiAxMCBvZiB0aGUgQyBydW50aW1lIChNU1ZDUlQ5KS4gIFRoZSBleGVjdXRhYmxlcworbm8gbG9uZ2VyIHVzZSB0aGUgIlNpZGUgYnkgU2lkZSIgYXNzZW1ibGllcyB1c2VkIGluIHByZXZpb3VzIHZlcnNpb25zIG9mIHRoZQorY29tcGlsZXIuICBUaGlzIHNpbXBsaWZpZXMgZGlzdHJpYnV0aW9uIG9mIGFwcGxpY2F0aW9ucy4KK1RoZSBydW4gdGltZSBsaWJyYXJpZXMgYXJlIGF2YWxpYmxlIHVuZGVyIHRoZSBWQy9SZWRpc3QgZm9sZGVyIG9mIHlvdXIgdmlzdWFsIHN0dWRpbworZGlzdHJpYnV0aW9uLiBGb3IgbW9yZSBpbmZvLCBzZWUgdGhlIFJlYWRtZSBpbiB0aGUgVkMvUmVkaXN0IGZvbGRlci4KIAogU1VCUFJPSkVDVFMKIC0tLS0tLS0tLS0tCkBAIC05Miw2ICs4Niw5IEBACiBfdGVzdGNhcGkKICAgICB0ZXN0cyBvZiB0aGUgUHl0aG9uIEMgQVBJLCBydW4gdmlhIExpYi90ZXN0L3Rlc3RfY2FwaS5weSwgYW5kCiAgICAgaW1wbGVtZW50ZWQgYnkgbW9kdWxlIE1vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKK190ZXN0YnVmZmVyCisgICAgYnVmZmVyIHByb3RvY29sIHRlc3RzLCBydW4gdmlhIExpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5LCBhbmQKKyAgICBpbXBsZW1lbnRlZCBieSBtb2R1bGUgTW9kdWxlcy9fdGVzdGJ1ZmZlci5jCiBweWV4cGF0CiAgICAgUHl0aG9uIHdyYXBwZXIgZm9yIGFjY2VsZXJhdGVkIFhNTCBwYXJzaW5nLCB3aGljaCBpbmNvcnBvcmF0ZXMgc3RhYmxlCiAgICAgY29kZSBmcm9tIHRoZSBFeHBhdCBwcm9qZWN0OiAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9leHBhdC8KQEAgLTExMiw5ICsxMDksOSBAQAogICAgIHByZS1idWlsdCBUY2wvVGsgaW4gZWl0aGVyIC4uXC4uXHRjbHRrIGZvciAzMi1iaXQgb3IgLi5cLi5cdGNsdGs2NCBmb3IKICAgICA2NC1iaXQgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KS4gIFNlZSBiZWxvdyBmb3IgaW5zdHJ1Y3Rpb25zIHRvIGJ1aWxkCiAgICAgVGNsL1RrLiAKLWJ6MgotICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGliYnoyIGNvbXByZXNzaW9uIGxpYnJhcnkuICBIb21lcGFnZQotICAgICAgICBodHRwOi8vc291cmNlcy5yZWRoYXQuY29tL2J6aXAyLworX2J6MgorICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGliYnppcDIgY29tcHJlc3Npb24gbGlicmFyeS4gIEhvbWVwYWdlCisgICAgICAgIGh0dHA6Ly93d3cuYnppcC5vcmcvCiAgICAgRG93bmxvYWQgdGhlIHNvdXJjZSBmcm9tIHRoZSBweXRob24ub3JnIGNvcHkgaW50byB0aGUgZGlzdAogICAgIGRpcmVjdG9yeToKIApAQCAtMTMzLDEzICsxMzAsMTkgQEAKIAogICAgIEFsbCBvZiB0aGlzIG1hbmFnZWQgdG8gYnVpbGQgbGliYnoyLmxpYiBpbiAKICAgICBiemlwMi0xLjAuNlwkcGxhdGZvcm0tJGNvbmZpZ3VyYXRpb25cLCB3aGljaCB0aGUgUHl0aG9uIHByb2plY3QgbGlua3MgaW4uCitfbHptYQorICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgbGlibHptYSBjb21wcmVzc2lvbiBsaWJyYXJ5LgorCisgICAgRG93bmxvYWQgdGhlIHByZS1idWlsdCBXaW5kb3dzIGJpbmFyaWVzIGZyb20gaHR0cDovL3R1a2Fhbmkub3JnL3h6LywgYW5kCisgICAgZXh0cmFjdCB0byAuLlx4ei01LjAuMy4gSWYgeW91IGFyZSB1c2luZyBhIG1vcmUgcmVjZW50IHZlcnNpb24gb2YgbGlibHptYSwKKyAgICBpdCB3aWxsIGJlIG5lY2Vzc2FyeSB0byByZW5hbWUgdGhlIGRpcmVjdG9yeSBmcm9tIHh6LTxWRVJTSU9OPiB0byB4ei01LjAuMy4KIAogX3NzbAogICAgIFB5dGhvbiB3cmFwcGVyIGZvciB0aGUgc2VjdXJlIHNvY2tldHMgbGlicmFyeS4KIAogICAgIEdldCB0aGUgc291cmNlIGNvZGUgdGhyb3VnaAogCi0gICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvb3BlbnNzbC0xLjAuMGoKKyAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4xYwogCiAgICAgKiogTk9URTogaWYgeW91IHVzZSB0aGUgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwoLWFtZDY0KS5iYXQgYXBwcm9hY2ggZm9yCiAgICAgb2J0YWluaW5nIGV4dGVybmFsIHNvdXJjZXMgdGhlbiB5b3UgZG9uJ3QgbmVlZCB0byBtYW51YWxseSBnZXQgdGhlIHNvdXJjZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWxlYXNlLnByb3BzIGIvUENidWlsZC9yZWxlYXNlLnByb3BzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZmUzZTQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3JlbGVhc2UucHJvcHMKQEAgLTAsMCArMSwxOSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyI+CisgICAgPFB5RGVidWdFeHQgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPEJ1aWxkTWFjcm8gSW5jbHVkZT0iUHlEZWJ1Z0V4dCI+CisgICAgICA8VmFsdWU+JChQeURlYnVnRXh0KTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzM2ZDY0Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zZWxlY3QudmN4cHJvagpAQCAtMCwwICsxLDIzNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM308L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNlbGVjdDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3MyXzMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zZWxlY3QudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9zZWxlY3QudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTJmYzgKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NlbGVjdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwxMyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57OTgzNDYwNzctOTAwYy00YzdhLTg1MmYtYTIzNDcwZTM3YjQwfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvc3FsaXRlMy5wcm9wcyBiL1BDYnVpbGQvc3FsaXRlMy5wcm9wcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2VlMDJjCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zcWxpdGUzLnByb3BzCkBAIC0wLDAgKzEsMTYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvaiBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZjAxMGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpAQCAtMCwwICsxLDI0MCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNxbGl0ZTM8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5wcm9wcyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25TZXR0aW5ncyI+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ic3FsaXRlMy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJzcWxpdGUzLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InNxbGl0ZTMucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4lKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSlfZC5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKV9kLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxPdXRwdXRGaWxlPiQoT3V0RGlyKSQoUHJvamVjdE5hbWUpLmRsbDwvT3V0cHV0RmlsZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPE91dHB1dEZpbGU+JChPdXREaXIpJChQcm9qZWN0TmFtZSkuZGxsPC9PdXRwdXRGaWxlPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8T3V0cHV0RmlsZT4kKE91dERpcikkKFByb2plY3ROYW1lKS5kbGw8L091dHB1dEZpbGU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPiUoQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcyk8L0FkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzZXh0LmgiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9ImtpbGxfcHl0aG9uLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezZkZTEwNzQ0LWUzOTYtNDBhNS1iNGUyLTFiNjlhYTdjOGQzMX08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY2ODBjMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvc3FsaXRlMy52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyNCBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IkhlYWRlciBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57Y2U1YjY0OWQtYTZmNy00NDU5LTk0MjUtYzg4Mzc5NWQ3OWRmfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57MGU4NDJmZTItMTc2Yi00ZTgzLTlkMWYtMGFkMTNhODU5ZWZkfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChzcWxpdGUzRGlyKVxzcWxpdGUzZXh0LmgiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3NzbC52Y3hwcm9qIGIvUENidWlsZC9zc2wudmN4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MWZkNzgwCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9zc2wudmN4cHJvagpAQCAtMCwwICsxLDIyMSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnNzbDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5NYWtlRmlsZVByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+TWFrZWZpbGU8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPk1ha2VmaWxlPC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgICAgPE5NYWtlQnVpbGRDb21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPE5NYWtlQ2xlYW5Db21tYW5kTGluZSBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxOTWFrZU91dHB1dCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L05NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgPE5NYWtlSW5jbHVkZVNlYXJjaFBhdGggQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+JChOTWFrZUluY2x1ZGVTZWFyY2hQYXRoKTwvTk1ha2VJbmNsdWRlU2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRJbmNsdWRlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4kKE5NYWtlQXNzZW1ibHlTZWFyY2hQYXRoKTwvTk1ha2VBc3NlbWJseVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPiQoTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMpPC9OTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcz4KKyAgICA8Tk1ha2VCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxOTWFrZUNsZWFuQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPE5NYWtlT3V0cHV0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9OTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDxOTWFrZUluY2x1ZGVTZWFyY2hQYXRoIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlSW5jbHVkZVNlYXJjaFBhdGgpPC9OTWFrZUluY2x1ZGVTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZEluY2x1ZGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCk8L05NYWtlQXNzZW1ibHlTZWFyY2hQYXRoPgorICAgIDxOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyI+JChOTWFrZUZvcmNlZFVzaW5nQXNzZW1ibGllcyk8L05NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzPgorICAgIDxOTWFrZUJ1aWxkQ29tbWFuZExpbmUgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5jZCAiJChTb2x1dGlvbkRpcikiCisiJChQeXRob25FeGUpIiBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtKSAtYQorPC9OTWFrZUJ1aWxkQ29tbWFuZExpbmU+CisgICAgPE5NYWtlUmVCdWlsZENvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Tk1ha2VDbGVhbkNvbW1hbmRMaW5lIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Tk1ha2VPdXRwdXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+JChOTWFrZVByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvTk1ha2VQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8Tk1ha2VJbmNsdWRlU2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VJbmNsdWRlU2VhcmNoUGF0aCk8L05NYWtlSW5jbHVkZVNlYXJjaFBhdGg+CisgICAgPE5NYWtlRm9yY2VkSW5jbHVkZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkSW5jbHVkZXMpPC9OTWFrZUZvcmNlZEluY2x1ZGVzPgorICAgIDxOTWFrZUFzc2VtYmx5U2VhcmNoUGF0aCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPiQoTk1ha2VBc3NlbWJseVNlYXJjaFBhdGgpPC9OTWFrZUFzc2VtYmx5U2VhcmNoUGF0aD4KKyAgICA8Tk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4kKE5NYWtlRm9yY2VkVXNpbmdBc3NlbWJsaWVzKTwvTk1ha2VGb3JjZWRVc2luZ0Fzc2VtYmxpZXM+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob24udmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57YjExZDc1MGYtY2QxZi00YTk2LTg1Y2UtZTY5YTVjNTI1OWY5fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ogYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlkNTI3OAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvagpAQCAtMCwwICsxLDIyMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPnVuaWNvZGVkYXRhPC9Sb290TmFtZXNwYWNlPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZF9kLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iVXNlck1hY3JvcyIgLz4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPF9Qcm9qZWN0RmlsZVZlcnNpb24+MTAuMC4zMDMxOS4xPC9fUHJvamVjdEZpbGVWZXJzaW9uPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPkFsbFJ1bGVzLnJ1bGVzZXQ8L0NvZGVBbmFseXNpc1J1bGVTZXQ+CisgICAgPENvZGVBbmFseXNpc1J1bGVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEyMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMjAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICAgIDxSZWZlcmVuY2VPdXRwdXRBc3NlbWJseT5mYWxzZTwvUmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+CisgICAgPC9Qcm9qZWN0UmVmZXJlbmNlPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvdW5pY29kZWRhdGEudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwZTY0MGUKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3VuaWNvZGVkYXRhLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDI0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntiOTM5YThmMS1jY2Q3LTQyMGEtOTc0YS0yNDM2MDZkY2NkNzR9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPntlMmMwNTViYi1lYzYyLTRiYmMtYWExYy1kODhkYTRkNGFkMWN9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCI+CisgICAgICA8RmlsdGVyPkhlYWRlciBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIj4KKyAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvdnM5dG8xMC5weSBiL1BDYnVpbGQvdnM5dG8xMC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmY4MzJhCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC92czl0bzEwLnB5CkBAIC0wLDAgKzEsNTYgQEAKKyNSdW4gdGhpcyBmaWxlIGFmdGVyIGF1dG9tYXRpYyBjb252ZXJ0c2lvbiBvZiB0aGUgVmlzdWFsU3R1ZGlvIDIwMDggc29sdXRpb24gYnkgVmlzdWFsU3R1ZGlvIDIwMTAuCisjVGhpcyBjYW4gYmUgZG9uZSB3aGVuZXZlciB0aGUgMjAwOCBzb2x1dGlvbiBjaGFuZ2VzLgorI0l0IHdpbGwgbWFrZSB0aGUgbmVjZXNzYXJ5IGNsZWFudXAgYW5kIHVwZGF0ZXMgdG8gdGhlIHZjeHByb2ogZmlsZXMKKyN0aGUgLnByb3BzIGZpbGVzIG5lZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBoYW5kIGlmIHRoZSAudnNwcm9wcyBmaWxlcyBjaGFuZ2UKKworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorCitkZWYgdnM5dG8xMChzcmMsIGRlc3QpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoc3JjKToKKyAgICAgICAgcGF0aCwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChuYW1lKQorICAgICAgICBpZiBleHQubG93ZXIoKSBub3QgaW4gKCcudmN4cHJvaicsKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihzcmMsIG5hbWUpKQorICAgICAgICBkZXN0bmFtZSA9IG9zLnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGRlc3QsIG5hbWUpKQorICAgICAgICBwcmludCgiJXMgLT4gJXMiICUgKGZpbGVuYW1lLCBkZXN0bmFtZSkpCisKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsYXN0bGluZSA9IGIiIgorICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3JiJykgYXMgZmluOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgorICAgICAgICAgICAgICAgICNyZW1vdmUgcmVkdW5kYW50IGxpbmtlciBvdXRwdXQgaW5mbworICAgICAgICAgICAgICAgIGlmIGIiPE91dHB1dExpbmU+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGIiPFByb2dyYW1EYXRhYmFzZUZpbGU+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydExpYnJhcnk+IiBpbiBsaW5lIGFuZCBiIjwvSW1wb3J0TGlicmFyeT4iIGluIGxpbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAjYWRkIG5ldyBwcm9wZXJ0eSBzaGVldCB0byB0aGUgcHl0aG9uY29yZQorICAgICAgICAgICAgICAgIGlmIGltcG9ydGdyb3VwIGFuZCAicHl0aG9uY29yZSIgaW4gbmFtZS5sb3dlcigpOgorICAgICAgICAgICAgICAgICAgICBpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgYiJkZWJ1Zy5wcm9wcyIgaW4gbGFzdGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGInICAgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uY29yZV9kLnByb3BzIiAvPlxyXG4nKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBiInB5dGhvbmNvcmUiIG5vdCBpbiBsYXN0bGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoYicgICAgPEltcG9ydCBQcm9qZWN0PSJweXRob25jb3JlLnByb3BzIiAvPlxyXG4nKQorICAgICAgICAgICAgICAgIGlmIGIiPEltcG9ydEdyb3VwIENvbmRpdGlvbiIgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0Z3JvdXAgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiBiIjwvSW1wb3J0R3JvdXA+IiBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnRncm91cCA9IEZhbHNlCisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICAgICAgbGFzdGxpbmUgPSBsaW5lCisgICAgICAgIHdpdGggb3BlbihkZXN0bmFtZSwgJ3diJykgYXMgZm91dDoKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzcmMgPSAiLiIgaWYgbGVuKHN5cy5hcmd2KSA8IDIgZWxzZSBzeXMuYXJndlsxXQorICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGguYWJzcGF0aChzcmMpKQorICAgIGRlc3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNyYywgIi4uIiwgbmFtZSArICJVcGQiKSkKKyAgICBvcy5tYWtlZGlycyhkZXN0KQorICAgIHZzOXRvMTAoc3JjLCBkZXN0KQpkaWZmIC0tZ2l0IGEvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qIGIvUENidWlsZC93OXhwb3Blbi52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYWZlMjIKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2oKQEAgLTAsMCArMSwyODcgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT53OXhwb3BlbjwvUm9vdE5hbWVzcGFjZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+QXBwbGljYXRpb248L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxVc2VPZk1mYz5mYWxzZTwvVXNlT2ZNZmM+CisgICAgPENoYXJhY3RlclNldD5NdWx0aUJ5dGU8L0NoYXJhY3RlclNldD4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5BcHBsaWNhdGlvbjwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPFVzZU9mTWZjPmZhbHNlPC9Vc2VPZk1mYz4KKyAgICA8Q2hhcmFjdGVyU2V0Pk11bHRpQnl0ZTwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5cHJvamVjdC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InJlbGVhc2UucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ3VwZGF0ZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0iZGVidWcucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJyZWxlYXNlLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGdpbnN0cnVtZW50LnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlwcm9qZWN0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icmVsZWFzZS5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJkZWJ1Zy5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuNDAyMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QmFzaWNSdW50aW1lQ2hlY2tzPkVuYWJsZUZhc3RDaGVja3M8L0Jhc2ljUnVudGltZUNoZWNrcz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkRGVidWc8L1J1bnRpbWVMaWJyYXJ5PgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+RGlzYWJsZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxCYXNpY1J1bnRpbWVDaGVja3M+RW5hYmxlRmFzdENoZWNrczwvQmFzaWNSdW50aW1lQ2hlY2tzPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWREZWJ1ZzwvUnVudGltZUxpYnJhcnk+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxPcHRpbWl6YXRpb24+TWF4U3BlZWQ8L09wdGltaXphdGlvbj4KKyAgICAgIDxJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj5Pbmx5RXhwbGljaXRJbmxpbmU8L0lubGluZUZ1bmN0aW9uRXhwYW5zaW9uPgorICAgICAgPFN0cmluZ1Bvb2xpbmc+dHJ1ZTwvU3RyaW5nUG9vbGluZz4KKyAgICAgIDxSdW50aW1lTGlicmFyeT5NdWx0aVRocmVhZGVkPC9SdW50aW1lTGlicmFyeT4KKyAgICAgIDxGdW5jdGlvbkxldmVsTGlua2luZz50cnVlPC9GdW5jdGlvbkxldmVsTGlua2luZz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+ZmFsc2U8L0dlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciPgorICAgIDxDbENvbXBpbGU+CisgICAgICA8T3B0aW1pemF0aW9uPk1heFNwZWVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8SW5saW5lRnVuY3Rpb25FeHBhbnNpb24+T25seUV4cGxpY2l0SW5saW5lPC9JbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj4KKyAgICAgIDxTdHJpbmdQb29saW5nPnRydWU8L1N0cmluZ1Bvb2xpbmc+CisgICAgICA8UnVudGltZUxpYnJhcnk+TXVsdGlUaHJlYWRlZDwvUnVudGltZUxpYnJhcnk+CisgICAgICA8RnVuY3Rpb25MZXZlbExpbmtpbmc+dHJ1ZTwvRnVuY3Rpb25MZXZlbExpbmtpbmc+CisgICAgPC9DbENvbXBpbGU+CisgICAgPExpbms+CisgICAgICA8R2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPmZhbHNlPC9HZW5lcmF0ZURlYnVnSW5mb3JtYXRpb24+CisgICAgICA8U3ViU3lzdGVtPkNvbnNvbGU8L1N1YlN5c3RlbT4KKyAgICAgIDxJbXBvcnRMaWJyYXJ5PgorICAgICAgPC9JbXBvcnRMaWJyYXJ5PgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj4KKyAgICA8TWlkbD4KKyAgICAgIDxUYXJnZXRFbnZpcm9ubWVudD5YNjQ8L1RhcmdldEVudmlyb25tZW50PgorICAgIDwvTWlkbD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPE9wdGltaXphdGlvbj5NYXhTcGVlZDwvT3B0aW1pemF0aW9uPgorICAgICAgPElubGluZUZ1bmN0aW9uRXhwYW5zaW9uPk9ubHlFeHBsaWNpdElubGluZTwvSW5saW5lRnVuY3Rpb25FeHBhbnNpb24+CisgICAgICA8U3RyaW5nUG9vbGluZz50cnVlPC9TdHJpbmdQb29saW5nPgorICAgICAgPFJ1bnRpbWVMaWJyYXJ5Pk11bHRpVGhyZWFkZWQ8L1J1bnRpbWVMaWJyYXJ5PgorICAgICAgPEZ1bmN0aW9uTGV2ZWxMaW5raW5nPnRydWU8L0Z1bmN0aW9uTGV2ZWxMaW5raW5nPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj5mYWxzZTwvR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPgorICAgICAgPFN1YlN5c3RlbT5Db25zb2xlPC9TdWJTeXN0ZW0+CisgICAgICA8SW1wb3J0TGlicmFyeT4KKyAgICAgIDwvSW1wb3J0TGlicmFyeT4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3OXhwb3Blbi5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvdzl4cG9wZW4udmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlYzY3YWQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3c5eHBvcGVuLnZjeHByb2ouZmlsdGVycwpAQCAtMCwwICsxLDEzIEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iU291cmNlIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPnthYmMyZGZmZC0zZjJhLTQ3YmQtYjg5Yi0wMzE0Yzk5ZWYyMWV9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgIDwvRmlsdGVyPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHc5eHBvcGVuLmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtR3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmNTE4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3dpbnNvdW5kLnZjeHByb2oKQEAgLTAsMCArMSwyMTggQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cCBMYWJlbD0iUHJvamVjdENvbmZpZ3VyYXRpb25zIj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IkRlYnVnfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPnsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT53aW5zb3VuZDwvUm9vdE5hbWVzcGFjZT4KKyAgICA8S2V5d29yZD5XaW4zMlByb2o8L0tleXdvcmQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAuRGVmYXVsdC5wcm9wcyIgLz4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgICAgPFdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj50cnVlPC9XaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkX2QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0ieDY0LnByb3BzIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icGd1cGRhdGUucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWRfZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxfUHJvamVjdEZpbGVWZXJzaW9uPjEwLjAuMzAzMTkuMTwvX1Byb2plY3RGaWxlVmVyc2lvbj4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+QWxsUnVsZXMucnVsZXNldDwvQ29kZUFuYWx5c2lzUnVsZVNldD4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyI+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53aW5tbS5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndpbm1tLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d2lubW0ubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8VGFyZ2V0TWFjaGluZT5NYWNoaW5lWDY0PC9UYXJnZXRNYWNoaW5lPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcd2luc291bmQuYyIgLz4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPFByb2plY3RSZWZlcmVuY2UgSW5jbHVkZT0icHl0aG9uY29yZS52Y3hwcm9qIj4KKyAgICAgIDxQcm9qZWN0PntjZjdhYzNkMS1lMmRmLTQxZDItYmVhNi0xZTI1NTZjZGVhMjZ9PC9Qcm9qZWN0PgorICAgICAgPFJlZmVyZW5jZU91dHB1dEFzc2VtYmx5PmZhbHNlPC9SZWZlcmVuY2VPdXRwdXRBc3NlbWJseT4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvd2luc291bmQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC93aW5zb3VuZC52Y3hwcm9qLmZpbHRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwODkzMQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvd2luc291bmQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTQgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5jcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteDwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQQ1x3aW5zb3VuZC5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQveDY0LnByb3BzIGIvUENidWlsZC94NjQucHJvcHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg5ZDk1YgotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQveDY0LnByb3BzCkBAIC0wLDAgKzEsMjAgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBEZWZhdWx0VGFyZ2V0cz0iQnVpbGQiIFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPFByb3BlcnR5R3JvdXAgTGFiZWw9IlVzZXJNYWNyb3MiIENvbmRpdGlvbj0iJyQoSE9TVF9QWVRIT04pJyE9JyciPgorICAgIDxQeXRob25FeGU+JChIT1NUX1BZVEhPTik8L1B5dGhvbkV4ZT4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPEFkZGl0aW9uYWxPcHRpb25zPi9VU0VDTDpNU19PUFRFUk9OIC9HUy0gJShBZGRpdGlvbmFsT3B0aW9ucyk8L0FkZGl0aW9uYWxPcHRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9XSU42NDtfTV9YNjQ7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8QnVpbGRNYWNybyBJbmNsdWRlPSJQeXRob25FeGUiPgorICAgICAgPFZhbHVlPiQoUHl0aG9uRXhlKTwvVmFsdWU+CisgICAgPC9CdWlsZE1hY3JvPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ogYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YmMyMGQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCkBAIC0wLDAgKzEsMTk0IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPFByb2plY3QgRGVmYXVsdFRhcmdldHM9IkJ1aWxkIiBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXAgTGFiZWw9IlByb2plY3RDb25maWd1cmF0aW9ucyI+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHSW5zdHJ1bWVudHx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+V2luMzI8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlJlbGVhc2V8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UmVsZWFzZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgIDwvSXRlbUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBMYWJlbD0iR2xvYmFscyI+CisgICAgPFByb2plY3RHdWlkPntGNzQ5QjgyMi1CNDg5LTRDQTUtQTNBRC1DRTA3OEY1RjMzOEF9PC9Qcm9qZWN0R3VpZD4KKyAgICA8Um9vdE5hbWVzcGFjZT54eGxpbWl0ZWQ8L1Jvb3ROYW1lc3BhY2U+CisgICAgPEtleXdvcmQ+V2luMzJQcm9qPC9LZXl3b3JkPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgTGFiZWw9IkNvbmZpZ3VyYXRpb24iPgorICAgIDxDb25maWd1cmF0aW9uVHlwZT5EeW5hbWljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgICAgPENoYXJhY3RlclNldD5Ob3RTZXQ8L0NoYXJhY3RlclNldD4KKyAgICA8V2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPnRydWU8L1dob2xlUHJvZ3JhbU9wdGltaXphdGlvbj4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorICA8UHJvcGVydHlHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIiBMYWJlbD0iQ29uZmlndXJhdGlvbiI+CisgICAgPENvbmZpZ3VyYXRpb25UeXBlPkR5bmFtaWNMaWJyYXJ5PC9Db25maWd1cmF0aW9uVHlwZT4KKyAgICA8Q2hhcmFjdGVyU2V0Pk5vdFNldDwvQ2hhcmFjdGVyU2V0PgorICAgIDxXaG9sZVByb2dyYW1PcHRpbWl6YXRpb24+dHJ1ZTwvV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnByb3BzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblNldHRpbmdzIj4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBnaW5zdHJ1bWVudC5wcm9wcyIgLz4KKyAgPC9JbXBvcnRHcm91cD4KKyAgPEltcG9ydEdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciIExhYmVsPSJQcm9wZXJ0eVNoZWV0cyI+CisgICAgPEltcG9ydCBQcm9qZWN0PSIkKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMiIENvbmRpdGlvbj0iZXhpc3RzKCckKFVzZXJSb290RGlyKVxNaWNyb3NvZnQuQ3BwLiQoUGxhdGZvcm0pLnVzZXIucHJvcHMnKSIgTGFiZWw9IkxvY2FsQXBwRGF0YVBsYXRmb3JtIiAvPgorICAgIDxJbXBvcnQgUHJvamVjdD0icHlkLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIiBMYWJlbD0iUHJvcGVydHlTaGVldHMiPgorICAgIDxJbXBvcnQgUHJvamVjdD0iJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzIiBDb25kaXRpb249ImV4aXN0cygnJChVc2VyUm9vdERpcilcTWljcm9zb2Z0LkNwcC4kKFBsYXRmb3JtKS51c2VyLnByb3BzJykiIExhYmVsPSJMb2NhbEFwcERhdGFQbGF0Zm9ybSIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InB5ZC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9Ing2NC5wcm9wcyIgLz4KKyAgICA8SW1wb3J0IFByb2plY3Q9InBndXBkYXRlLnByb3BzIiAvPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJwZ2luc3RydW1lbnQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxJbXBvcnRHcm91cCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweWQucHJvcHMiIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJ4NjQucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHSW5zdHJ1bWVudHx4NjQnIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfFdpbjMyJyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXxXaW4zMiciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVTZXQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR1VwZGF0ZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1BHVXBkYXRlfHg2NCciIC8+CisgICAgPENvZGVBbmFseXNpc1J1bGVBc3NlbWJsaWVzIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZVNldCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlQXNzZW1ibGllcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIiAvPgorICAgIDxDb2RlQW5hbHlzaXNSdWxlU2V0IENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj5BbGxSdWxlcy5ydWxlc2V0PC9Db2RlQW5hbHlzaXNSdWxlU2V0PgorICAgIDxDb2RlQW5hbHlzaXNSdWxlcyBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyIgLz4KKyAgICA8Q29kZUFuYWx5c2lzUnVsZUFzc2VtYmxpZXMgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciIC8+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5OREVCVUc7X1dJTjMyO19XSU5ETEw7UHlfTElNSVRFRF9BUEk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXAgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQR0luc3RydW1lbnR8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0xJTUlURURfQVBJOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdJbnN0cnVtZW50fHg2NCciPgorICAgIDxNaWRsPgorICAgICAgPFRhcmdldEVudmlyb25tZW50Plg2NDwvVGFyZ2V0RW52aXJvbm1lbnQ+CisgICAgPC9NaWRsPgorICAgIDxMaW5rPgorICAgICAgPEFkZGl0aW9uYWxEZXBlbmRlbmNpZXM+d3NvY2szMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+bGliYzslKElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcyk8L0lnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz4KKyAgICAgIDxCYXNlQWRkcmVzcz4weDFEMTEwMDAwPC9CYXNlQWRkcmVzcz4KKyAgICAgIDxUYXJnZXRNYWNoaW5lPk1hY2hpbmVYNjQ8L1RhcmdldE1hY2hpbmU+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8V2luMzInIj4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlB5X0xJTUlURURfQVBJOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CisgICAgICA8SWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPmxpYmM7JShJZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXMpPC9JZ25vcmVTcGVjaWZpY0RlZmF1bHRMaWJyYXJpZXM+CisgICAgICA8QmFzZUFkZHJlc3M+MHgxRDExMDAwMDwvQmFzZUFkZHJlc3M+CisgICAgPC9MaW5rPgorICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CisgIDxJdGVtRGVmaW5pdGlvbkdyb3VwIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUEdVcGRhdGV8eDY0JyI+CisgICAgPE1pZGw+CisgICAgICA8VGFyZ2V0RW52aXJvbm1lbnQ+WDY0PC9UYXJnZXRFbnZpcm9ubWVudD4KKyAgICA8L01pZGw+CisgICAgPExpbms+CisgICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcz53c29jazMyLmxpYjslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgorICAgICAgPElnbm9yZVNwZWNpZmljRGVmYXVsdExpYnJhcmllcz5saWJjOyUoSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzKTwvSWdub3JlU3BlY2lmaWNEZWZhdWx0TGlicmFyaWVzPgorICAgICAgPEJhc2VBZGRyZXNzPjB4MUQxMTAwMDA8L0Jhc2VBZGRyZXNzPgorICAgICAgPFRhcmdldE1hY2hpbmU+TWFjaGluZVg2NDwvVGFyZ2V0TWFjaGluZT4KKyAgICA8L0xpbms+CisgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNceHhsaW1pdGVkLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxQcm9qZWN0UmVmZXJlbmNlIEluY2x1ZGU9InB5dGhvbmNvcmUudmN4cHJvaiI+CisgICAgICA8UHJvamVjdD57Y2Y3YWMzZDEtZTJkZi00MWQyLWJlYTYtMWUyNTU2Y2RlYTI2fTwvUHJvamVjdD4KKyAgICA8L1Byb2plY3RSZWZlcmVuY2U+CisgIDwvSXRlbUdyb3VwPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC50YXJnZXRzIiAvPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IkV4dGVuc2lvblRhcmdldHMiPgorICA8L0ltcG9ydEdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2ouZmlsdGVycwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWRiNDY4Ci0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvai5maWx0ZXJzCkBAIC0wLDAgKzEsMTMgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8UHJvamVjdCBUb29sc1ZlcnNpb249IjQuMCIgeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vZGV2ZWxvcGVyL21zYnVpbGQvMjAwMyI+CisgIDxJdGVtR3JvdXA+CisgICAgPEZpbHRlciBJbmNsdWRlPSJTb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+e2ViNWVlYmM3LTM3ODctNGY4Zi1iMjgyLTIwNGRiMjk2MmNjM308L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgPC9GaWx0ZXI+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1x4eGxpbWl0ZWQuYyI+CisgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICA8L0l0ZW1Hcm91cD4KKzwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggOTQwN2IyZi4uNmIwNmRlYyAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtMSwxMTkgKzEsMTIwIEBACi0tLSBBU0RMJ3MgZm91ciBidWlsdGluIHR5cGVzIGFyZSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgb2JqZWN0CistLSBBU0RMJ3MgZml2ZSBidWlsdGluIHR5cGVzIGFyZSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdAogCi1tb2R1bGUgUHl0aG9uIHZlcnNpb24gIiRSZXZpc2lvbiQiCittb2R1bGUgUHl0aG9uCiB7Ci0JbW9kID0gTW9kdWxlKHN0bXQqIGJvZHkpCi0JICAgIHwgSW50ZXJhY3RpdmUoc3RtdCogYm9keSkKLQkgICAgfCBFeHByZXNzaW9uKGV4cHIgYm9keSkKKyAgICBtb2QgPSBNb2R1bGUoc3RtdCogYm9keSkKKyAgICAgICAgfCBJbnRlcmFjdGl2ZShzdG10KiBib2R5KQorICAgICAgICB8IEV4cHJlc3Npb24oZXhwciBib2R5KQogCi0JICAgIC0tIG5vdCByZWFsbHkgYW4gYWN0dWFsIG5vZGUgYnV0IHVzZWZ1bCBpbiBKeXRob24ncyB0eXBlc3lzdGVtLgotCSAgICB8IFN1aXRlKHN0bXQqIGJvZHkpCisgICAgICAgIC0tIG5vdCByZWFsbHkgYW4gYWN0dWFsIG5vZGUgYnV0IHVzZWZ1bCBpbiBKeXRob24ncyB0eXBlc3lzdGVtLgorICAgICAgICB8IFN1aXRlKHN0bXQqIGJvZHkpCiAKLQlzdG10ID0gRnVuY3Rpb25EZWYoaWRlbnRpZmllciBuYW1lLCBhcmd1bWVudHMgYXJncywgCisgICAgc3RtdCA9IEZ1bmN0aW9uRGVmKGlkZW50aWZpZXIgbmFtZSwgYXJndW1lbnRzIGFyZ3MsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdCogYm9keSwgZXhwciogZGVjb3JhdG9yX2xpc3QsIGV4cHI/IHJldHVybnMpCi0JICAgICAgfCBDbGFzc0RlZihpZGVudGlmaWVyIG5hbWUsIAotCQkJIGV4cHIqIGJhc2VzLAotCQkJIGtleXdvcmQqIGtleXdvcmRzLAotCQkJIGV4cHI/IHN0YXJhcmdzLAotCQkJIGV4cHI/IGt3YXJncywKLQkJCSBzdG10KiBib2R5LAotCQkJIGV4cHIqIGRlY29yYXRvcl9saXN0KQotCSAgICAgIHwgUmV0dXJuKGV4cHI/IHZhbHVlKQorICAgICAgICAgIHwgQ2xhc3NEZWYoaWRlbnRpZmllciBuYW1lLCAKKyAgICAgICAgICAgICBleHByKiBiYXNlcywKKyAgICAgICAgICAgICBrZXl3b3JkKiBrZXl3b3JkcywKKyAgICAgICAgICAgICBleHByPyBzdGFyYXJncywKKyAgICAgICAgICAgICBleHByPyBrd2FyZ3MsCisgICAgICAgICAgICAgc3RtdCogYm9keSwKKyAgICAgICAgICAgICBleHByKiBkZWNvcmF0b3JfbGlzdCkKKyAgICAgICAgICB8IFJldHVybihleHByPyB2YWx1ZSkKIAotCSAgICAgIHwgRGVsZXRlKGV4cHIqIHRhcmdldHMpCi0JICAgICAgfCBBc3NpZ24oZXhwciogdGFyZ2V0cywgZXhwciB2YWx1ZSkKLQkgICAgICB8IEF1Z0Fzc2lnbihleHByIHRhcmdldCwgb3BlcmF0b3Igb3AsIGV4cHIgdmFsdWUpCisgICAgICAgICAgfCBEZWxldGUoZXhwciogdGFyZ2V0cykKKyAgICAgICAgICB8IEFzc2lnbihleHByKiB0YXJnZXRzLCBleHByIHZhbHVlKQorICAgICAgICAgIHwgQXVnQXNzaWduKGV4cHIgdGFyZ2V0LCBvcGVyYXRvciBvcCwgZXhwciB2YWx1ZSkKIAotCSAgICAgIC0tIHVzZSAnb3JlbHNlJyBiZWNhdXNlIGVsc2UgaXMgYSBrZXl3b3JkIGluIHRhcmdldCBsYW5ndWFnZXMKLQkgICAgICB8IEZvcihleHByIHRhcmdldCwgZXhwciBpdGVyLCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBXaGlsZShleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKLQkgICAgICB8IElmKGV4cHIgdGVzdCwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQotCSAgICAgIHwgV2l0aChleHByIGNvbnRleHRfZXhwciwgZXhwcj8gb3B0aW9uYWxfdmFycywgc3RtdCogYm9keSkKKyAgICAgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCisgICAgICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQorICAgICAgICAgIHwgV2hpbGUoZXhwciB0ZXN0LCBzdG10KiBib2R5LCBzdG10KiBvcmVsc2UpCisgICAgICAgICAgfCBJZihleHByIHRlc3QsIHN0bXQqIGJvZHksIHN0bXQqIG9yZWxzZSkKKyAgICAgICAgICB8IFdpdGgod2l0aGl0ZW0qIGl0ZW1zLCBzdG10KiBib2R5KQogCi0JICAgICAgfCBSYWlzZShleHByPyBleGMsIGV4cHI/IGNhdXNlKQotCSAgICAgIHwgVHJ5RXhjZXB0KHN0bXQqIGJvZHksIGV4Y2VwdGhhbmRsZXIqIGhhbmRsZXJzLCBzdG10KiBvcmVsc2UpCi0JICAgICAgfCBUcnlGaW5hbGx5KHN0bXQqIGJvZHksIHN0bXQqIGZpbmFsYm9keSkKLQkgICAgICB8IEFzc2VydChleHByIHRlc3QsIGV4cHI/IG1zZykKKyAgICAgICAgICB8IFJhaXNlKGV4cHI/IGV4YywgZXhwcj8gY2F1c2UpCisgICAgICAgICAgfCBUcnkoc3RtdCogYm9keSwgZXhjZXB0aGFuZGxlciogaGFuZGxlcnMsIHN0bXQqIG9yZWxzZSwgc3RtdCogZmluYWxib2R5KQorICAgICAgICAgIHwgQXNzZXJ0KGV4cHIgdGVzdCwgZXhwcj8gbXNnKQogCi0JICAgICAgfCBJbXBvcnQoYWxpYXMqIG5hbWVzKQotCSAgICAgIHwgSW1wb3J0RnJvbShpZGVudGlmaWVyPyBtb2R1bGUsIGFsaWFzKiBuYW1lcywgaW50PyBsZXZlbCkKKyAgICAgICAgICB8IEltcG9ydChhbGlhcyogbmFtZXMpCisgICAgICAgICAgfCBJbXBvcnRGcm9tKGlkZW50aWZpZXI/IG1vZHVsZSwgYWxpYXMqIG5hbWVzLCBpbnQ/IGxldmVsKQogCi0JICAgICAgfCBHbG9iYWwoaWRlbnRpZmllciogbmFtZXMpCi0JICAgICAgfCBOb25sb2NhbChpZGVudGlmaWVyKiBuYW1lcykKLQkgICAgICB8IEV4cHIoZXhwciB2YWx1ZSkKLQkgICAgICB8IFBhc3MgfCBCcmVhayB8IENvbnRpbnVlCisgICAgICAgICAgfCBHbG9iYWwoaWRlbnRpZmllciogbmFtZXMpCisgICAgICAgICAgfCBOb25sb2NhbChpZGVudGlmaWVyKiBuYW1lcykKKyAgICAgICAgICB8IEV4cHIoZXhwciB2YWx1ZSkKKyAgICAgICAgICB8IFBhc3MgfCBCcmVhayB8IENvbnRpbnVlCiAKLQkgICAgICAtLSBYWFggSnl0aG9uIHdpbGwgYmUgZGlmZmVyZW50Ci0JICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcwotCSAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQorICAgICAgICAgIC0tIFhYWCBKeXRob24gd2lsbCBiZSBkaWZmZXJlbnQKKyAgICAgICAgICAtLSBjb2xfb2Zmc2V0IGlzIHRoZSBieXRlIG9mZnNldCBpbiB0aGUgdXRmOCBzdHJpbmcgdGhlIHBhcnNlciB1c2VzCisgICAgICAgICAgYXR0cmlidXRlcyAoaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCiAKLQkgICAgICAtLSBCb29sT3AoKSBjYW4gdXNlIGxlZnQgJiByaWdodD8KLQlleHByID0gQm9vbE9wKGJvb2xvcCBvcCwgZXhwciogdmFsdWVzKQotCSAgICAgfCBCaW5PcChleHByIGxlZnQsIG9wZXJhdG9yIG9wLCBleHByIHJpZ2h0KQotCSAgICAgfCBVbmFyeU9wKHVuYXJ5b3Agb3AsIGV4cHIgb3BlcmFuZCkKLQkgICAgIHwgTGFtYmRhKGFyZ3VtZW50cyBhcmdzLCBleHByIGJvZHkpCi0JICAgICB8IElmRXhwKGV4cHIgdGVzdCwgZXhwciBib2R5LCBleHByIG9yZWxzZSkKLQkgICAgIHwgRGljdChleHByKiBrZXlzLCBleHByKiB2YWx1ZXMpCi0JICAgICB8IFNldChleHByKiBlbHRzKQotCSAgICAgfCBMaXN0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIHwgU2V0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIHwgRGljdENvbXAoZXhwciBrZXksIGV4cHIgdmFsdWUsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCi0JICAgICB8IEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKLQkgICAgIC0tIHRoZSBncmFtbWFyIGNvbnN0cmFpbnMgd2hlcmUgeWllbGQgZXhwcmVzc2lvbnMgY2FuIG9jY3VyCi0JICAgICB8IFlpZWxkKGV4cHI/IHZhbHVlKQotCSAgICAgLS0gbmVlZCBzZXF1ZW5jZXMgZm9yIGNvbXBhcmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgotCSAgICAgLS0geCA8IDQgPCAzIGFuZCAoeCA8IDQpIDwgMwotCSAgICAgfCBDb21wYXJlKGV4cHIgbGVmdCwgY21wb3AqIG9wcywgZXhwciogY29tcGFyYXRvcnMpCi0JICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcywKLQkJCSBleHByPyBzdGFyYXJncywgZXhwcj8ga3dhcmdzKQotCSAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCi0JICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPwotCSAgICAgfCBCeXRlcyhzdHJpbmcgcykKLQkgICAgIHwgRWxsaXBzaXMKLQkgICAgIC0tIG90aGVyIGxpdGVyYWxzPyBib29scz8KKyAgICAgICAgICAtLSBCb29sT3AoKSBjYW4gdXNlIGxlZnQgJiByaWdodD8KKyAgICBleHByID0gQm9vbE9wKGJvb2xvcCBvcCwgZXhwciogdmFsdWVzKQorICAgICAgICAgfCBCaW5PcChleHByIGxlZnQsIG9wZXJhdG9yIG9wLCBleHByIHJpZ2h0KQorICAgICAgICAgfCBVbmFyeU9wKHVuYXJ5b3Agb3AsIGV4cHIgb3BlcmFuZCkKKyAgICAgICAgIHwgTGFtYmRhKGFyZ3VtZW50cyBhcmdzLCBleHByIGJvZHkpCisgICAgICAgICB8IElmRXhwKGV4cHIgdGVzdCwgZXhwciBib2R5LCBleHByIG9yZWxzZSkKKyAgICAgICAgIHwgRGljdChleHByKiBrZXlzLCBleHByKiB2YWx1ZXMpCisgICAgICAgICB8IFNldChleHByKiBlbHRzKQorICAgICAgICAgfCBMaXN0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIHwgU2V0Q29tcChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIHwgRGljdENvbXAoZXhwciBrZXksIGV4cHIgdmFsdWUsIGNvbXByZWhlbnNpb24qIGdlbmVyYXRvcnMpCisgICAgICAgICB8IEdlbmVyYXRvckV4cChleHByIGVsdCwgY29tcHJlaGVuc2lvbiogZ2VuZXJhdG9ycykKKyAgICAgICAgIC0tIHRoZSBncmFtbWFyIGNvbnN0cmFpbnMgd2hlcmUgeWllbGQgZXhwcmVzc2lvbnMgY2FuIG9jY3VyCisgICAgICAgICB8IFlpZWxkKGV4cHI/IHZhbHVlKQorICAgICAgICAgICAgIHwgWWllbGRGcm9tKGV4cHI/IHZhbHVlKQorICAgICAgICAgLS0gbmVlZCBzZXF1ZW5jZXMgZm9yIGNvbXBhcmUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorICAgICAgICAgLS0geCA8IDQgPCAzIGFuZCAoeCA8IDQpIDwgMworICAgICAgICAgfCBDb21wYXJlKGV4cHIgbGVmdCwgY21wb3AqIG9wcywgZXhwciogY29tcGFyYXRvcnMpCisgICAgICAgICB8IENhbGwoZXhwciBmdW5jLCBleHByKiBhcmdzLCBrZXl3b3JkKiBrZXl3b3JkcywKKyAgICAgICAgICAgICBleHByPyBzdGFyYXJncywgZXhwcj8ga3dhcmdzKQorICAgICAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCisgICAgICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPworICAgICAgICAgfCBCeXRlcyhieXRlcyBzKQorICAgICAgICAgfCBFbGxpcHNpcworICAgICAgICAgLS0gb3RoZXIgbGl0ZXJhbHM/IGJvb2xzPwogCi0JICAgICAtLSB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb24gY2FuIGFwcGVhciBpbiBhc3NpZ25tZW50IGNvbnRleHQKLQkgICAgIHwgQXR0cmlidXRlKGV4cHIgdmFsdWUsIGlkZW50aWZpZXIgYXR0ciwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgU3Vic2NyaXB0KGV4cHIgdmFsdWUsIHNsaWNlIHNsaWNlLCBleHByX2NvbnRleHQgY3R4KQotCSAgICAgfCBTdGFycmVkKGV4cHIgdmFsdWUsIGV4cHJfY29udGV4dCBjdHgpCi0JICAgICB8IE5hbWUoaWRlbnRpZmllciBpZCwgZXhwcl9jb250ZXh0IGN0eCkKLQkgICAgIHwgTGlzdChleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KSAKLQkgICAgIHwgVHVwbGUoZXhwciogZWx0cywgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIC0tIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBjYW4gYXBwZWFyIGluIGFzc2lnbm1lbnQgY29udGV4dAorICAgICAgICAgfCBBdHRyaWJ1dGUoZXhwciB2YWx1ZSwgaWRlbnRpZmllciBhdHRyLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBTdWJzY3JpcHQoZXhwciB2YWx1ZSwgc2xpY2Ugc2xpY2UsIGV4cHJfY29udGV4dCBjdHgpCisgICAgICAgICB8IFN0YXJyZWQoZXhwciB2YWx1ZSwgZXhwcl9jb250ZXh0IGN0eCkKKyAgICAgICAgIHwgTmFtZShpZGVudGlmaWVyIGlkLCBleHByX2NvbnRleHQgY3R4KQorICAgICAgICAgfCBMaXN0KGV4cHIqIGVsdHMsIGV4cHJfY29udGV4dCBjdHgpIAorICAgICAgICAgfCBUdXBsZShleHByKiBlbHRzLCBleHByX2NvbnRleHQgY3R4KQogCi0JICAgICAgLS0gY29sX29mZnNldCBpcyB0aGUgYnl0ZSBvZmZzZXQgaW4gdGhlIHV0Zjggc3RyaW5nIHRoZSBwYXJzZXIgdXNlcwotCSAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQorICAgICAgICAgIC0tIGNvbF9vZmZzZXQgaXMgdGhlIGJ5dGUgb2Zmc2V0IGluIHRoZSB1dGY4IHN0cmluZyB0aGUgcGFyc2VyIHVzZXMKKyAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAotCWV4cHJfY29udGV4dCA9IExvYWQgfCBTdG9yZSB8IERlbCB8IEF1Z0xvYWQgfCBBdWdTdG9yZSB8IFBhcmFtCisgICAgZXhwcl9jb250ZXh0ID0gTG9hZCB8IFN0b3JlIHwgRGVsIHwgQXVnTG9hZCB8IEF1Z1N0b3JlIHwgUGFyYW0KIAotCXNsaWNlID0gU2xpY2UoZXhwcj8gbG93ZXIsIGV4cHI/IHVwcGVyLCBleHByPyBzdGVwKSAKLQkgICAgICB8IEV4dFNsaWNlKHNsaWNlKiBkaW1zKSAKLQkgICAgICB8IEluZGV4KGV4cHIgdmFsdWUpIAorICAgIHNsaWNlID0gU2xpY2UoZXhwcj8gbG93ZXIsIGV4cHI/IHVwcGVyLCBleHByPyBzdGVwKSAKKyAgICAgICAgICB8IEV4dFNsaWNlKHNsaWNlKiBkaW1zKSAKKyAgICAgICAgICB8IEluZGV4KGV4cHIgdmFsdWUpIAogCi0JYm9vbG9wID0gQW5kIHwgT3IgCisgICAgYm9vbG9wID0gQW5kIHwgT3IgCiAKLQlvcGVyYXRvciA9IEFkZCB8IFN1YiB8IE11bHQgfCBEaXYgfCBNb2QgfCBQb3cgfCBMU2hpZnQgCisgICAgb3BlcmF0b3IgPSBBZGQgfCBTdWIgfCBNdWx0IHwgRGl2IHwgTW9kIHwgUG93IHwgTFNoaWZ0IAogICAgICAgICAgICAgICAgICB8IFJTaGlmdCB8IEJpdE9yIHwgQml0WG9yIHwgQml0QW5kIHwgRmxvb3JEaXYKIAotCXVuYXJ5b3AgPSBJbnZlcnQgfCBOb3QgfCBVQWRkIHwgVVN1YgorICAgIHVuYXJ5b3AgPSBJbnZlcnQgfCBOb3QgfCBVQWRkIHwgVVN1YgogCi0JY21wb3AgPSBFcSB8IE5vdEVxIHwgTHQgfCBMdEUgfCBHdCB8IEd0RSB8IElzIHwgSXNOb3QgfCBJbiB8IE5vdEluCisgICAgY21wb3AgPSBFcSB8IE5vdEVxIHwgTHQgfCBMdEUgfCBHdCB8IEd0RSB8IElzIHwgSXNOb3QgfCBJbiB8IE5vdEluCiAKLQljb21wcmVoZW5zaW9uID0gKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIGV4cHIqIGlmcykKKyAgICBjb21wcmVoZW5zaW9uID0gKGV4cHIgdGFyZ2V0LCBleHByIGl0ZXIsIGV4cHIqIGlmcykKIAotCS0tIG5vdCBzdXJlIHdoYXQgdG8gY2FsbCB0aGUgZmlyc3QgYXJndW1lbnQgZm9yIHJhaXNlIGFuZCBleGNlcHQKLQlleGNlcHRoYW5kbGVyID0gRXhjZXB0SGFuZGxlcihleHByPyB0eXBlLCBpZGVudGlmaWVyPyBuYW1lLCBzdG10KiBib2R5KQotCSAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKKyAgICBleGNlcHRoYW5kbGVyID0gRXhjZXB0SGFuZGxlcihleHByPyB0eXBlLCBpZGVudGlmaWVyPyBuYW1lLCBzdG10KiBib2R5KQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIChpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCkKIAotCWFyZ3VtZW50cyA9IChhcmcqIGFyZ3MsIGlkZW50aWZpZXI/IHZhcmFyZywgZXhwcj8gdmFyYXJnYW5ub3RhdGlvbiwKKyAgICBhcmd1bWVudHMgPSAoYXJnKiBhcmdzLCBpZGVudGlmaWVyPyB2YXJhcmcsIGV4cHI/IHZhcmFyZ2Fubm90YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICBhcmcqIGt3b25seWFyZ3MsIGlkZW50aWZpZXI/IGt3YXJnLAogICAgICAgICAgICAgICAgICAgICAgZXhwcj8ga3dhcmdhbm5vdGF0aW9uLCBleHByKiBkZWZhdWx0cywKICAgICAgICAgICAgICAgICAgICAgIGV4cHIqIGt3X2RlZmF1bHRzKQotCWFyZyA9IChpZGVudGlmaWVyIGFyZywgZXhwcj8gYW5ub3RhdGlvbikKKyAgICBhcmcgPSAoaWRlbnRpZmllciBhcmcsIGV4cHI/IGFubm90YXRpb24pCiAKLSAgICAgICAgLS0ga2V5d29yZCBhcmd1bWVudHMgc3VwcGxpZWQgdG8gY2FsbAotICAgICAgICBrZXl3b3JkID0gKGlkZW50aWZpZXIgYXJnLCBleHByIHZhbHVlKQorICAgIC0tIGtleXdvcmQgYXJndW1lbnRzIHN1cHBsaWVkIHRvIGNhbGwKKyAgICBrZXl3b3JkID0gKGlkZW50aWZpZXIgYXJnLCBleHByIHZhbHVlKQogCi0gICAgICAgIC0tIGltcG9ydCBuYW1lIHdpdGggb3B0aW9uYWwgJ2FzJyBhbGlhcy4KLSAgICAgICAgYWxpYXMgPSAoaWRlbnRpZmllciBuYW1lLCBpZGVudGlmaWVyPyBhc25hbWUpCisgICAgLS0gaW1wb3J0IG5hbWUgd2l0aCBvcHRpb25hbCAnYXMnIGFsaWFzLgorICAgIGFsaWFzID0gKGlkZW50aWZpZXIgbmFtZSwgaWRlbnRpZmllcj8gYXNuYW1lKQorCisgICAgd2l0aGl0ZW0gPSAoZXhwciBjb250ZXh0X2V4cHIsIGV4cHI/IG9wdGlvbmFsX3ZhcnMpCiB9CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9hc2RsLnB5IGIvUGFyc2VyL2FzZGwucHkKaW5kZXggN2I0ZTJkYy4uMDhhYTA1YiAxMDA2NDQKLS0tIGEvUGFyc2VyL2FzZGwucHkKKysrIGIvUGFyc2VyL2FzZGwucHkKQEAgLTExNCwyOCArMTE0LDIwIEBACiAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcih0b2subGluZW5vLCB0b2spCiAKICAgICBkZWYgcF9tb2R1bGVfMChzZWxmLCBpbmZvKToKLSAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHZlcnNpb24geyB9ICIKLSAgICAgICAgbW9kdWxlLCBuYW1lLCB2ZXJzaW9uLCBfMCwgXzEgPSBpbmZvCisgICAgICAgICIgbW9kdWxlIDo6PSBJZCBJZCB7IH0gIgorICAgICAgICBtb2R1bGUsIG5hbWUsIF8wLCBfMSA9IGluZm8KICAgICAgICAgaWYgbW9kdWxlLnZhbHVlICE9ICJtb2R1bGUiOgogICAgICAgICAgICAgcmFpc2UgQVNETFN5bnRheEVycm9yKG1vZHVsZS5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCAnbW9kdWxlJywgZm91bmQgJXMiICUgbW9kdWxlKQotICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIE5vbmUsIHZlcnNpb24pCisgICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgTm9uZSkKIAogICAgIGRlZiBwX21vZHVsZShzZWxmLCBpbmZvKToKLSAgICAgICAgIiBtb2R1bGUgOjo9IElkIElkIHZlcnNpb24geyBkZWZpbml0aW9ucyB9ICIKLSAgICAgICAgbW9kdWxlLCBuYW1lLCB2ZXJzaW9uLCBfMCwgZGVmaW5pdGlvbnMsIF8xID0gaW5mbworICAgICAgICAiIG1vZHVsZSA6Oj0gSWQgSWQgeyBkZWZpbml0aW9ucyB9ICIKKyAgICAgICAgbW9kdWxlLCBuYW1lLCBfMCwgZGVmaW5pdGlvbnMsIF8xID0gaW5mbwogICAgICAgICBpZiBtb2R1bGUudmFsdWUgIT0gIm1vZHVsZSI6CiAgICAgICAgICAgICByYWlzZSBBU0RMU3ludGF4RXJyb3IobW9kdWxlLmxpbmVubywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICdtb2R1bGUnLCBmb3VuZCAlcyIgJSBtb2R1bGUpCi0gICAgICAgIHJldHVybiBNb2R1bGUobmFtZSwgZGVmaW5pdGlvbnMsIHZlcnNpb24pCi0KLSAgICBkZWYgcF92ZXJzaW9uKHNlbGYsIGluZm8pOgotICAgICAgICAidmVyc2lvbiA6Oj0gSWQgU3RyaW5nIgotICAgICAgICB2ZXJzaW9uLCBWID0gaW5mbwotICAgICAgICBpZiB2ZXJzaW9uLnZhbHVlICE9ICJ2ZXJzaW9uIjoKLSAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcih2ZXJzaW9uLmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9ImV4cGVjdGVkICd2ZXJzaW9uJywgZm91bmQgJSIgJSB2ZXJzaW9uKQotICAgICAgICByZXR1cm4gVgorICAgICAgICByZXR1cm4gTW9kdWxlKG5hbWUsIGRlZmluaXRpb25zKQogCiAgICAgZGVmIHBfZGVmaW5pdGlvbl8wKHNlbGYsIGRlZmluaXRpb24pOgogICAgICAgICAiIGRlZmluaXRpb25zIDo6PSBkZWZpbml0aW9uICIKQEAgLTE2NCwxNSArMTU2LDExIEBACiAgICAgICAgIGlmIGlkLnZhbHVlICE9ICJhdHRyaWJ1dGVzIjoKICAgICAgICAgICAgIHJhaXNlIEFTRExTeW50YXhFcnJvcihpZC5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCBhdHRyaWJ1dGVzLCBmb3VuZCAlcyIgJSBpZCkKLSAgICAgICAgaWYgYXR0cmlidXRlczoKLSAgICAgICAgICAgIGF0dHJpYnV0ZXMucmV2ZXJzZSgpCiAgICAgICAgIHJldHVybiBTdW0oc3VtLCBhdHRyaWJ1dGVzKQogCiAgICAgZGVmIHBfcHJvZHVjdChzZWxmLCBpbmZvKToKICAgICAgICAgIiBwcm9kdWN0IDo6PSAoIGZpZWxkcyApICIKICAgICAgICAgXzAsIGZpZWxkcywgXzEgPSBpbmZvCi0gICAgICAgICMgWFhYIGNhbid0IEkganVzdCBjb25zdHJ1Y3QgdGhpbmdzIGluIHRoZSByaWdodCBvcmRlcj8KLSAgICAgICAgZmllbGRzLnJldmVyc2UoKQogICAgICAgICByZXR1cm4gUHJvZHVjdChmaWVsZHMpCiAKICAgICBkZWYgcF9zdW1fMChzZWxmLCBjb25zdHJ1Y3Rvcik6CkBAIC0xOTYsOCArMTg0LDYgQEAKICAgICBkZWYgcF9jb25zdHJ1Y3Rvcl8xKHNlbGYsIGluZm8pOgogICAgICAgICAiIGNvbnN0cnVjdG9yIDo6PSBJZCAoIGZpZWxkcyApICIKICAgICAgICAgaWQsIF8wLCBmaWVsZHMsIF8xID0gaW5mbwotICAgICAgICAjIFhYWCBjYW4ndCBJIGp1c3QgY29uc3RydWN0IHRoaW5ncyBpbiB0aGUgcmlnaHQgb3JkZXI/Ci0gICAgICAgIGZpZWxkcy5yZXZlcnNlKCkKICAgICAgICAgcmV0dXJuIENvbnN0cnVjdG9yKGlkLCBmaWVsZHMpCiAKICAgICBkZWYgcF9maWVsZHNfMChzZWxmLCBmaWVsZCk6CkBAIC0yMDUsOCArMTkxLDggQEAKICAgICAgICAgcmV0dXJuIFtmaWVsZFswXV0KIAogICAgIGRlZiBwX2ZpZWxkc18xKHNlbGYsIGluZm8pOgotICAgICAgICAiIGZpZWxkcyA6Oj0gZmllbGQgLCBmaWVsZHMgIgotICAgICAgICBmaWVsZCwgXywgZmllbGRzID0gaW5mbworICAgICAgICAiIGZpZWxkcyA6Oj0gZmllbGRzICwgZmllbGQgIgorICAgICAgICBmaWVsZHMsIF8sIGZpZWxkID0gaW5mbwogICAgICAgICByZXR1cm4gZmllbGRzICsgW2ZpZWxkXQogCiAgICAgZGVmIHBfZmllbGRfMChzZWxmLCB0eXBlXyk6CkBAIC0yMzYsNyArMjIyLDcgQEAKICAgICAgICAgIiBmaWVsZCA6Oj0gSWQgPyAiCiAgICAgICAgIHJldHVybiBGaWVsZCh0eXBlWzBdLCBvcHQ9VHJ1ZSkKIAotYnVpbHRpbl90eXBlcyA9ICgiaWRlbnRpZmllciIsICJzdHJpbmciLCAiaW50IiwgImJvb2wiLCAib2JqZWN0IikKK2J1aWx0aW5fdHlwZXMgPSAoImlkZW50aWZpZXIiLCAic3RyaW5nIiwgImJ5dGVzIiwgImludCIsICJvYmplY3QiKQogCiAjIGJlbG93IGlzIGEgY29sbGVjdGlvbiBvZiBjbGFzc2VzIHRvIGNhcHR1cmUgdGhlIEFTVCBvZiBhbiBBU1QgOi0pCiAjIG5vdCBzdXJlIGlmIGFueSBvZiB0aGUgbWV0aG9kcyBhcmUgdXNlZnVsIHlldCwgYnV0IEknbSBhZGRpbmcgdGhlbQpAQCAtMjQ2LDEwICsyMzIsOSBAQAogICAgIHBhc3MgIyBhIG1hcmtlciBjbGFzcwogCiBjbGFzcyBNb2R1bGUoQVNUKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgZGZucywgdmVyc2lvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGRmbnMpOgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuZGZucyA9IGRmbnMKLSAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgogICAgICAgICBzZWxmLnR5cGVzID0ge30gIyBtYXBzIHR5cGUgbmFtZSB0byB2YWx1ZSAoZnJvbSBkZm5zKQogICAgICAgICBmb3IgdHlwZSBpbiBkZm5zOgogICAgICAgICAgICAgc2VsZi50eXBlc1t0eXBlLm5hbWUudmFsdWVdID0gdHlwZS52YWx1ZQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGxfYy5weSBiL1BhcnNlci9hc2RsX2MucHkKaW5kZXggN2Y2MTNkYi4uYTllNjYyNiAxMDA3NTUKLS0tIGEvUGFyc2VyL2FzZGxfYy5weQorKysgYi9QYXJzZXIvYXNkbF9jLnB5CkBAIC04NCw4ICs4NCwxNiBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUpOgogICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCisgICAgICAgIHNlbGYuaWRlbnRpZmllcnMgPSBzZXQoKQogICAgICAgICBzdXBlcihFbWl0VmlzaXRvciwgc2VsZikuX19pbml0X18oKQogCisgICAgZGVmIGVtaXRfaWRlbnRpZmllcihzZWxmLCBuYW1lKToKKyAgICAgICAgbmFtZSA9IHN0cihuYW1lKQorICAgICAgICBpZiBuYW1lIGluIHNlbGYuaWRlbnRpZmllcnM6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgc2VsZi5lbWl0KCJfUHlfSURFTlRJRklFUiglcyk7IiAlIG5hbWUsIDApCisgICAgICAgIHNlbGYuaWRlbnRpZmllcnMuYWRkKG5hbWUpCisKICAgICBkZWYgZW1pdChzZWxmLCBzLCBkZXB0aCwgcmVmbG93PVRydWUpOgogICAgICAgICAjIFhYWCByZWZsb3cgbG9uZyBsaW5lcz8KICAgICAgICAgaWYgcmVmbG93OgpAQCAtNDg1LDEyICs0OTMsMTIgQEAKIAogICAgIGRlZiB2aXNpdEZpZWxkKHNlbGYsIGZpZWxkLCBuYW1lLCBzdW09Tm9uZSwgcHJvZD1Ob25lLCBkZXB0aD0wKToKICAgICAgICAgY3R5cGUgPSBnZXRfY190eXBlKGZpZWxkLnR5cGUpCi0gICAgICAgIHNlbGYuZW1pdCgiaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCBcIiVzXCIpKSB7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKQorICAgICAgICBzZWxmLmVtaXQoImlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfJXMpKSB7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKQogICAgICAgICBzZWxmLmVtaXQoImludCByZXM7IiwgZGVwdGgrMSkKICAgICAgICAgaWYgZmllbGQuc2VxOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJQeV9zc2l6ZV90IGxlbjsiLCBkZXB0aCsxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJQeV9zc2l6ZV90IGk7IiwgZGVwdGgrMSkKLSAgICAgICAgc2VsZi5lbWl0KCJ0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgXCIlc1wiKTsiICUgZmllbGQubmFtZSwgZGVwdGgrMSkKKyAgICAgICAgc2VsZi5lbWl0KCJ0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfJXMpOyIgJSBmaWVsZC5uYW1lLCBkZXB0aCsxKQogICAgICAgICBzZWxmLmVtaXQoImlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7IiwgZGVwdGgrMSkKICAgICAgICAgaWYgZmllbGQuc2VxOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7IiwgZGVwdGgrMSkKQEAgLTU1Miw2ICs1NjAsOCBAQAogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIG5hbWUsIDApCiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqXyVzKHZvaWQqKTsiICUgbmFtZSwgMCkKICAgICAgICAgaWYgcHJvZC5maWVsZHM6CisgICAgICAgICAgICBmb3IgZiBpbiBwcm9kLmZpZWxkczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXRfaWRlbnRpZmllcihmLm5hbWUpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBjaGFyIColc19maWVsZHNbXT17IiAlIG5hbWUsMCkKICAgICAgICAgICAgIGZvciBmIGluIHByb2QuZmllbGRzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgnIiVzIiwnICUgZi5uYW1lLCAxKQpAQCAtNTYwLDYgKzU3MCw4IEBACiAgICAgZGVmIHZpc2l0U3VtKHNlbGYsIHN1bSwgbmFtZSk6CiAgICAgICAgIHNlbGYuZW1pdCgic3RhdGljIFB5VHlwZU9iamVjdCAqJXNfdHlwZTsiICUgbmFtZSwgMCkKICAgICAgICAgaWYgc3VtLmF0dHJpYnV0ZXM6CisgICAgICAgICAgICBmb3IgYSBpbiBzdW0uYXR0cmlidXRlczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXRfaWRlbnRpZmllcihhLm5hbWUpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBjaGFyIColc19hdHRyaWJ1dGVzW10gPSB7IiAlIG5hbWUsIDApCiAgICAgICAgICAgICBmb3IgYSBpbiBzdW0uYXR0cmlidXRlczoKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoJyIlcyIsJyAlIGEubmFtZSwgMSkKQEAgLTU3OSw2ICs1OTEsOCBAQAogICAgIGRlZiB2aXNpdENvbnN0cnVjdG9yKHNlbGYsIGNvbnMsIG5hbWUpOgogICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBQeVR5cGVPYmplY3QgKiVzX3R5cGU7IiAlIGNvbnMubmFtZSwgMCkKICAgICAgICAgaWYgY29ucy5maWVsZHM6CisgICAgICAgICAgICBmb3IgdCBpbiBjb25zLmZpZWxkczoKKyAgICAgICAgICAgICAgICBzZWxmLmVtaXRfaWRlbnRpZmllcih0Lm5hbWUpCiAgICAgICAgICAgICBzZWxmLmVtaXQoInN0YXRpYyBjaGFyIColc19maWVsZHNbXT17IiAlIGNvbnMubmFtZSwgMCkKICAgICAgICAgICAgIGZvciB0IGluIGNvbnMuZmllbGRzOgogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgnIiVzIiwnICUgdC5uYW1lLCAxKQpAQCAtNTg4LDEzICs2MDIsMzkgQEAKIAogICAgIGRlZiB2aXNpdE1vZHVsZShzZWxmLCBtb2QpOgogICAgICAgICBzZWxmLmVtaXQoIiIiCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICpkaWN0OworfSBBU1Rfb2JqZWN0OworCitzdGF0aWMgdm9pZAorYXN0X2RlYWxsb2MoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOworfQorCitzdGF0aWMgaW50Cithc3RfdHJhdmVyc2UoQVNUX29iamVjdCAqc2VsZiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoc2VsZi0+ZGljdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCithc3RfY2xlYXIoQVNUX29iamVjdCAqc2VsZikKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5kaWN0KTsKK30KKwogc3RhdGljIGludAogYXN0X3R5cGVfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdykKIHsKKyAgICBfUHlfSURFTlRJRklFUihfZmllbGRzKTsKICAgICBQeV9zc2l6ZV90IGksIG51bWZpZWxkcyA9IDA7CiAgICAgaW50IHJlcyA9IC0xOwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmZpZWxkczsKLSAgICBmaWVsZHMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgIl9maWVsZHMiKTsKKyAgICBmaWVsZHMgPSBfUHlPYmplY3RfR2V0QXR0cklkKChQeU9iamVjdCopUHlfVFlQRShzZWxmKSwgJlB5SWRfX2ZpZWxkcyk7CiAgICAgaWYgKCFmaWVsZHMpCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgaWYgKGZpZWxkcykgewpAQCAtNjQ0LDcgKzY4NCw4IEBACiBhc3RfdHlwZV9yZWR1Y2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp1bnVzZWQpCiB7CiAgICAgUHlPYmplY3QgKnJlczsKLSAgICBQeU9iamVjdCAqZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc2VsZiwgIl9fZGljdF9fIik7CisgICAgX1B5X0lERU5USUZJRVIoX19kaWN0X18pOworICAgIFB5T2JqZWN0ICpkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZChzZWxmLCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgaWYgKGRpY3QgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtNjY0LDEyICs3MDUsMTcgQEAKICAgICB7TlVMTH0KIH07CiAKK3N0YXRpYyBQeUdldFNldERlZiBhc3RfdHlwZV9nZXRzZXRzW10gPSB7CisgICAgeyJfX2RpY3RfXyIsIFB5T2JqZWN0X0dlbmVyaWNHZXREaWN0LCBQeU9iamVjdF9HZW5lcmljU2V0RGljdH0sCisgICAge05VTEx9Cit9OworCiBzdGF0aWMgUHlUeXBlT2JqZWN0IEFTVF90eXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIl9hc3QuQVNUIiwKLSAgICBzaXplb2YoUHlPYmplY3QpLAorICAgIHNpemVvZihBU1Rfb2JqZWN0KSwKICAgICAwLAotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgKGRlc3RydWN0b3IpYXN0X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCkBAIC02ODQsMjYgKzczMCwyNiBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAvKiB0cF9nZXRhdHRybyAqLwogICAgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyLCAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgICh0cmF2ZXJzZXByb2MpYXN0X3RyYXZlcnNlLCAvKiB0cF90cmF2ZXJzZSAqLworICAgIChpbnF1aXJ5KWFzdF9jbGVhciwgICAgICAvKiB0cF9jbGVhciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgYXN0X3R5cGVfbWV0aG9kcywgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgICBhc3RfdHlwZV9nZXRzZXRzLCAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICBvZmZzZXRvZihBU1Rfb2JqZWN0LCBkaWN0KSwvKiB0cF9kaWN0b2Zmc2V0ICovCiAgICAgKGluaXRwcm9jKWFzdF90eXBlX2luaXQsIC8qIHRwX2luaXQgKi8KICAgICBQeVR5cGVfR2VuZXJpY0FsbG9jLCAgICAgLyogdHBfYWxsb2MgKi8KICAgICBQeVR5cGVfR2VuZXJpY05ldywgICAgICAgLyogdHBfbmV3ICovCi0gICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KKyAgICBQeU9iamVjdF9HQ19EZWwsICAgICAgICAgLyogdHBfZnJlZSAqLwogfTsKIAogCkBAIC03MzAsNiArNzc2LDcgQEAKIHN0YXRpYyBpbnQgYWRkX2F0dHJpYnV0ZXMoUHlUeXBlT2JqZWN0KiB0eXBlLCBjaGFyKiphdHRycywgaW50IG51bV9maWVsZHMpCiB7CiAgICAgaW50IGksIHJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihfYXR0cmlidXRlcyk7CiAgICAgUHlPYmplY3QgKnMsICpsID0gUHlUdXBsZV9OZXcobnVtX2ZpZWxkcyk7CiAgICAgaWYgKCFsKQogICAgICAgICByZXR1cm4gMDsKQEAgLTc0MSw3ICs3ODgsNyBAQAogICAgICAgICB9CiAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obCwgaSwgcyk7CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoKFB5T2JqZWN0Kil0eXBlLCAiX2F0dHJpYnV0ZXMiLCBsKSA+PSAwOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9TZXRBdHRySWQoKFB5T2JqZWN0Kil0eXBlLCAmUHlJZF9fYXR0cmlidXRlcywgbCkgPj0gMDsKICAgICBQeV9ERUNSRUYobCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTc1MCw3ICs3OTcsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfbGlzdChhc2RsX3NlcSAqc2VxLCBQeU9iamVjdCogKCpmdW5jKSh2b2lkKikpCiB7Ci0gICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKKyAgICBQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oc2VxKTsKICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlMaXN0X05ldyhuKTsKICAgICBQeU9iamVjdCAqdmFsdWU7CiAgICAgaWYgKCFyZXN1bHQpCkBAIC03NzUsNiArODIyLDcgQEAKIH0KICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2ludChsb25nIGIpCiB7CkBAIC04MTIsNiArODYwLDE1IEBACiAgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9ieXRlcyhQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiQVNUIGJ5dGVzIG11c3QgYmUgb2YgdHlwZSBieXRlcyIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIG9iajJhc3Rfb2JqZWN0KG9iaiwgb3V0LCBhcmVuYSk7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pbnQoUHlPYmplY3QqIG9iaiwgaW50KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGludCBpOwpAQCAtOTEwLDEwICs5NjcsNiBAQAogICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQVNUIiwgKFB5T2JqZWN0KikmQVNUX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7JywgMSkKICAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIlB5Q0ZfT05MWV9BU1QiLCBQeUNGX09OTFlfQVNUKSA8IDApJywgMSkKICAgICAgICAgc2VsZi5lbWl0KCJyZXR1cm4gTlVMTDsiLCAyKQotICAgICAgICAjIFZhbHVlIG9mIHZlcnNpb246ICIkUmV2aXNpb24kIgotICAgICAgICBzZWxmLmVtaXQoJ2lmIChQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiX192ZXJzaW9uX18iLCAiJXMiKSA8IDApJwotICAgICAgICAgICAgICAgICUgbW9kLnZlcnNpb24sIDEpCi0gICAgICAgIHNlbGYuZW1pdCgicmV0dXJuIE5VTEw7IiwgMikKICAgICAgICAgZm9yIGRmbiBpbiBtb2QuZGZuczoKICAgICAgICAgICAgIHNlbGYudmlzaXQoZGZuKQogICAgICAgICBzZWxmLmVtaXQoInJldHVybiBtOyIsIDEpCkBAIC05OTcsNyArMTA1MCw3IEBACiAgICAgICAgIGZvciBhIGluIHN1bS5hdHRyaWJ1dGVzOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJ2YWx1ZSA9IGFzdDJvYmpfJXMoby0+JXMpOyIgJSAoYS50eXBlLCBhLm5hbWUpLCAxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsiLCAxKQotICAgICAgICAgICAgc2VsZi5lbWl0KCdpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICIlcyIsIHZhbHVlKSA8IDApJyAlIGEubmFtZSwgMSkKKyAgICAgICAgICAgIHNlbGYuZW1pdCgnaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF8lcywgdmFsdWUpIDwgMCknICUgYS5uYW1lLCAxKQogICAgICAgICAgICAgc2VsZi5lbWl0KCdnb3RvIGZhaWxlZDsnLCAyKQogICAgICAgICAgICAgc2VsZi5lbWl0KCdQeV9ERUNSRUYodmFsdWUpOycsIDEpCiAgICAgICAgIHNlbGYuZnVuY19lbmQoKQpAQCAtMTA0Myw3ICsxMDk2LDcgQEAKICAgICAgICAgICAgIHZhbHVlID0gIm8tPnYuJXMuJXMiICUgKG5hbWUsIGZpZWxkLm5hbWUpCiAgICAgICAgIHNlbGYuc2V0KGZpZWxkLCB2YWx1ZSwgZGVwdGgpCiAgICAgICAgIGVtaXQoImlmICghdmFsdWUpIGdvdG8gZmFpbGVkOyIsIDApCi0gICAgICAgIGVtaXQoJ2lmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIiVzIiwgdmFsdWUpID09IC0xKScgJSBmaWVsZC5uYW1lLCAwKQorICAgICAgICBlbWl0KCdpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkXyVzLCB2YWx1ZSkgPT0gLTEpJyAlIGZpZWxkLm5hbWUsIDApCiAgICAgICAgIGVtaXQoImdvdG8gZmFpbGVkOyIsIDEpCiAgICAgICAgIGVtaXQoIlB5X0RFQ1JFRih2YWx1ZSk7IiwgMCkKIApAQCAtMTA2Niw3ICsxMTE5LDcgQEAKICAgICAgICAgICAgICAgICAjIFdoaWxlIHRoZSBzZXF1ZW5jZSBlbGVtZW50cyBhcmUgc3RvcmVkIGFzIHZvaWQqLAogICAgICAgICAgICAgICAgICMgYXN0Mm9ial9jbXBvcCBleHBlY3RzIGFuIGVudW0KICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoInsiLCBkZXB0aCkKLSAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImludCBpLCBuID0gYXNkbF9zZXFfTEVOKCVzKTsiICUgdmFsdWUsIGRlcHRoKzEpCisgICAgICAgICAgICAgICAgc2VsZi5lbWl0KCJQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oJXMpOyIgJSB2YWx1ZSwgZGVwdGgrMSkKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoInZhbHVlID0gUHlMaXN0X05ldyhuKTsiLCBkZXB0aCsxKQogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7IiwgZGVwdGgrMSkKICAgICAgICAgICAgICAgICBzZWxmLmVtaXQoImZvcihpID0gMDsgaSA8IG47IGkrKykiLCBkZXB0aCsxKQpAQCAtMTEzNCwyNCArMTE4NywxMiBAQAogCiBjb21tb25fbXNnID0gIi8qIEZpbGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgJXMuICovXG5cbiIKIAotY19maWxlX21zZyA9ICIiIgotLyoKLSAgIF9fdmVyc2lvbl9fICVzLgotCi0gICBUaGlzIG1vZHVsZSBtdXN0IGJlIGNvbW1pdHRlZCBzZXBhcmF0ZWx5IGFmdGVyIGVhY2ggQVNUIGdyYW1tYXIgY2hhbmdlOwotICAgVGhlIF9fdmVyc2lvbl9fIG51bWJlciBpcyBzZXQgdG8gdGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgY29tbWl0Ci0gICBjb250YWluaW5nIHRoZSBncmFtbWFyIGNoYW5nZS4KLSovCi0KLSIiIgotCiBkZWYgbWFpbihzcmNmaWxlKToKICAgICBhcmd2MCA9IHN5cy5hcmd2WzBdCiAgICAgY29tcG9uZW50cyA9IGFyZ3YwLnNwbGl0KG9zLnNlcCkKICAgICBhcmd2MCA9IG9zLnNlcC5qb2luKGNvbXBvbmVudHNbLTI6XSkKICAgICBhdXRvX2dlbl9tc2cgPSBjb21tb25fbXNnICUgYXJndjAKICAgICBtb2QgPSBhc2RsLnBhcnNlKHNyY2ZpbGUpCi0gICAgbW9kLnZlcnNpb24gPSAiODIxNjMiCiAgICAgaWYgbm90IGFzZGwuY2hlY2sobW9kKToKICAgICAgICAgc3lzLmV4aXQoMSkKICAgICBpZiBJTkNfRElSOgpAQCAtMTE3Myw3ICsxMjE0LDggQEAKICAgICAgICAgcCA9IG9zLnBhdGguam9pbihTUkNfRElSLCBzdHIobW9kLm5hbWUpICsgIi1hc3QuYyIpCiAgICAgICAgIGYgPSBvcGVuKHAsICJ3IikKICAgICAgICAgZi53cml0ZShhdXRvX2dlbl9tc2cpCi0gICAgICAgIGYud3JpdGUoY19maWxlX21zZyAlIG1vZC52ZXJzaW9uKQorICAgICAgICBmLndyaXRlKCcjaW5jbHVkZSA8c3RkZGVmLmg+XG4nKQorICAgICAgICBmLndyaXRlKCdcbicpCiAgICAgICAgIGYud3JpdGUoJyNpbmNsdWRlICJQeXRob24uaCJcbicpCiAgICAgICAgIGYud3JpdGUoJyNpbmNsdWRlICIlcy1hc3QuaCJcbicgJSBtb2QubmFtZSkKICAgICAgICAgZi53cml0ZSgnXG4nKQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2ludHJjaGVjay5jIGIvUGFyc2VyL2ludHJjaGVjay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDM5ODY0Li4wMDAwMDAwCi0tLSBhL1BhcnNlci9pbnRyY2hlY2suYworKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0KLS8qIENoZWNrIGZvciBpbnRlcnJ1cHRzICovCi0KLSNpbmNsdWRlICJQeXRob24uaCIKLSNpbmNsdWRlICJweXRocmVhZC5oIgotCi0jaWZkZWYgUVVJQ0tXSU4KLQotI2luY2x1ZGUgPGlvLmg+Ci0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICBfd3lpZWxkKCk7Ci19Ci0KLSNkZWZpbmUgT0sKLQotI2VuZGlmIC8qIFFVSUNLV0lOICovCi0KLSNpZiBkZWZpbmVkKF9NX0lYODYpICYmICFkZWZpbmVkKF9fUU5YX18pCi0jaW5jbHVkZSA8aW8uaD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChNU0RPUykgJiYgIWRlZmluZWQoUVVJQ0tXSU4pCi0KLSNpZmRlZiBfX0dOVUNfXwotCi0vKiBUaGlzIGlzIGZvciBESkdQUCdzIEdPMzIgZXh0ZW5kZXIuICBJIGRvbid0IGtub3cgaG93IHRvIHRyYXAKLSAqIGNvbnRyb2wtQyAgKFRoZXJlJ3Mgbm8gQVBJIGZvciBjdHJsLUMsIGFuZCBJIGRvbid0IHdhbnQgdG8gbWVzcyB3aXRoCi0gKiB0aGUgaW50ZXJydXB0IHZlY3RvcnMuKSAgSG93ZXZlciwgdGhpcyBET0VTIGNhdGNoIGNvbnRyb2wtYnJlYWsuCi0gKiAtLUFtcml0Ci0gKi8KLQotI2luY2x1ZGUgPGdvMzIuaD4KLQotdm9pZAotUHlPU19Jbml0SW50ZXJydXB0cyh2b2lkKQotewotICAgIF9nbzMyX3dhbnRfY3RybF9icmVhaygxIC8qIFRSVUUgKi8pOwotfQotCi12b2lkCi1QeU9TX0ZpbmlJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLWludAotUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCh2b2lkKQotewotICAgIHJldHVybiBfZ28zMl93YXNfY3RybF9icmVha19oaXQoKTsKLX0KLQotI2Vsc2UgLyogIV9fR05VQ19fICovCi0KLS8qIFRoaXMgbWlnaHQgd29yayBmb3IgTVMtRE9TICh1bnRlc3RlZCB0aG91Z2gpOiAqLwotCi12b2lkCi1QeU9TX0luaXRJbnRlcnJ1cHRzKHZvaWQpCi17Ci19Ci0KLXZvaWQKLVB5T1NfRmluaUludGVycnVwdHModm9pZCkKLXsKLX0KLQotaW50Ci1QeU9TX0ludGVycnVwdE9jY3VycmVkKHZvaWQpCi17Ci0gICAgaW50IGludGVycnVwdGVkID0gMDsKLSAgICB3aGlsZSAoa2JoaXQoKSkgewotICAgICAgICBpZiAoZ2V0Y2goKSA9PSAnXDAwMycpCi0gICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IDE7Ci0gICAgfQotICAgIHJldHVybiBpbnRlcnJ1cHRlZDsKLX0KLQotI2VuZGlmIC8qIF9fR05VQ19fICovCi0KLSNkZWZpbmUgT0sKLQotI2VuZGlmIC8qIE1TRE9TICYmICFRVUlDS1dJTiAqLwotCi0KLSNpZm5kZWYgT0sKLQotLyogRGVmYXVsdCB2ZXJzaW9uIC0tIGZvciByZWFsIG9wZXJhdGluZyBzeXN0ZW1zIGFuZCBmb3IgU3RhbmRhcmQgQyAqLwotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KLQotc3RhdGljIGludCBpbnRlcnJ1cHRlZDsKLQotdm9pZAotUHlFcnJfU2V0SW50ZXJydXB0KHZvaWQpCi17Ci0gICAgaW50ZXJydXB0ZWQgPSAxOwotfQotCi1leHRlcm4gaW50IFB5RXJyX0NoZWNrU2lnbmFscyh2b2lkKTsKLQotc3RhdGljIGludAotY2hlY2tzaWduYWxzX3dpdGhhcmcodm9pZCAqIGFyZykKLXsKLSAgICByZXR1cm4gUHlFcnJfQ2hlY2tTaWduYWxzKCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1pbnRjYXRjaGVyKGludCBzaWcpCi17Ci0gICAgZXh0ZXJuIHZvaWQgUHlfRXhpdChpbnQpOwotICAgIHN0YXRpYyBjaGFyIG1lc3NhZ2VbXSA9Ci0icHl0aG9uOiB0byBpbnRlcnJ1cHQgYSB0cnVseSBoYW5naW5nIFB5dGhvbiBwcm9ncmFtLCBpbnRlcnJ1cHQgb25jZSBtb3JlLlxuIjsKLSAgICBzd2l0Y2ggKGludGVycnVwdGVkKyspIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgd3JpdGUoMiwgbWVzc2FnZSwgc3RybGVuKG1lc3NhZ2UpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAyOgotICAgICAgICBpbnRlcnJ1cHRlZCA9IDA7Ci0gICAgICAgIFB5X0V4aXQoMSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBQeU9TX3NldHNpZyhTSUdJTlQsIGludGNhdGNoZXIpOwotICAgIFB5X0FkZFBlbmRpbmdDYWxsKGNoZWNrc2lnbmFsc193aXRoYXJnLCBOVUxMKTsKLX0KLQotc3RhdGljIHZvaWQgKCpvbGRfc2lnaW50aGFuZGxlcikoaW50KSA9IFNJR19ERkw7Ci0KLXZvaWQKLVB5T1NfSW5pdEludGVycnVwdHModm9pZCkKLXsKLSAgICBpZiAoKG9sZF9zaWdpbnRoYW5kbGVyID0gUHlPU19zZXRzaWcoU0lHSU5ULCBTSUdfSUdOKSkgIT0gU0lHX0lHTikKLSAgICAgICAgUHlPU19zZXRzaWcoU0lHSU5ULCBpbnRjYXRjaGVyKTsKLX0KLQotdm9pZAotUHlPU19GaW5pSW50ZXJydXB0cyh2b2lkKQotewotICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgb2xkX3NpZ2ludGhhbmRsZXIpOwotfQotCi1pbnQKLVB5T1NfSW50ZXJydXB0T2NjdXJyZWQodm9pZCkKLXsKLSAgICBpZiAoIWludGVycnVwdGVkKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpbnRlcnJ1cHRlZCA9IDA7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLSNlbmRpZiAvKiAhT0sgKi8KLQotdm9pZAotUHlPU19BZnRlckZvcmsodm9pZCkKLXsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIFB5RXZhbF9SZUluaXRUaHJlYWRzKCk7Ci0gICAgUHlUaHJlYWRfUmVJbml0VExTKCk7Ci0jZW5kaWYKLX0KZGlmZiAtLWdpdCBhL1BhcnNlci9teXJlYWRsaW5lLmMgYi9QYXJzZXIvbXlyZWFkbGluZS5jCmluZGV4IDkzZWRkN2YuLmQ4NjQ2MjMgMTAwNjQ0Ci0tLSBhL1BhcnNlci9teXJlYWRsaW5lLmMKKysrIGIvUGFyc2VyL215cmVhZGxpbmUuYwpAQCAtMzUsMTIgKzM1LDExIEBACiBzdGF0aWMgaW50CiBteV9mZ2V0cyhjaGFyICpidWYsIGludCBsZW4sIEZJTEUgKmZwKQogeworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50OworI2VuZGlmCiAgICAgY2hhciAqcDsKICAgICBpbnQgZXJyOwotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICBpbnQgaTsKLSNlbmRpZgotCiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgaWYgKFB5T1NfSW5wdXRIb29rICE9IE5VTEwpCiAgICAgICAgICAgICAodm9pZCkoUHlPU19JbnB1dEhvb2spKCk7CkBAIC01NywyMCArNTYsMjQgQEAKICAgICAgICAgLyogQ3RybC1DIGFueXdoZXJlIG9uIHRoZSBsaW5lIG9yIEN0cmwtWiBpZiB0aGUgb25seSBjaGFyYWN0ZXIKICAgICAgICAgICAgb24gYSBsaW5lIHdpbGwgc2V0IEVSUk9SX09QRVJBVElPTl9BQk9SVEVELiBVbmRlciBub3JtYWwKICAgICAgICAgICAgY2lyY3Vtc3RhbmNlcyBDdHJsLUMgd2lsbCBhbHNvIGhhdmUgY2F1c2VkIHRoZSBTSUdJTlQgaGFuZGxlcgotICAgICAgICAgICB0byBmaXJlLiBUaGlzIHNpZ25hbCBmaXJlcyBpbiBhbm90aGVyIHRocmVhZCBhbmQgaXMgbm90Ci0gICAgICAgICAgIGd1YXJhbnRlZWQgdG8gaGF2ZSBvY2N1cnJlZCBiZWZvcmUgdGhpcyBwb2ludCBpbiB0aGUgY29kZS4KKyAgICAgICAgICAgdG8gZmlyZSB3aGljaCB3aWxsIGhhdmUgc2V0IHRoZSBldmVudCBvYmplY3QgcmV0dXJuZWQgYnkKKyAgICAgICAgICAgX1B5T1NfU2lnaW50RXZlbnQuIFRoaXMgc2lnbmFsIGZpcmVzIGluIGFub3RoZXIgdGhyZWFkIGFuZAorICAgICAgICAgICBpcyBub3QgZ3VhcmFudGVlZCB0byBoYXZlIG9jY3VycmVkIGJlZm9yZSB0aGlzIHBvaW50IGluIHRoZQorICAgICAgICAgICBjb2RlLgogCi0gICAgICAgICAgIFRoZXJlZm9yZTogY2hlY2sgaW4gYSBzbWFsbCBsb29wIHRvIHNlZSBpZiB0aGUgdHJpZ2dlciBoYXMKLSAgICAgICAgICAgZmlyZWQsIGluIHdoaWNoIGNhc2UgYXNzdW1lIHRoaXMgaXMgYSBDdHJsLUMgZXZlbnQuIElmIGl0Ci0gICAgICAgICAgIGhhc24ndCBmaXJlZCB3aXRoaW4gMTBtcyBhc3N1bWUgdGhhdCB0aGlzIGlzIGEgQ3RybC1aIG9uIGl0cwotICAgICAgICAgICBvd24gb3IgdGhhdCB0aGUgc2lnbmFsIGlzbid0IGdvaW5nIHRvIGZpcmUgZm9yIHNvbWUgb3RoZXIKLSAgICAgICAgICAgcmVhc29uIGFuZCBkcm9wIHRocm91Z2ggdG8gY2hlY2sgZm9yIEVPRi4KKyAgICAgICAgICAgVGhlcmVmb3JlOiBjaGVjayB3aGV0aGVyIHRoZSBldmVudCBpcyBzZXQgd2l0aCBhIHNtYWxsIHRpbWVvdXQuCisgICAgICAgICAgIElmIGl0IGlzLCBhc3N1bWUgdGhpcyBpcyBhIEN0cmwtQyBhbmQgcmVzZXQgdGhlIGV2ZW50LiBJZiBpdAorICAgICAgICAgICBpc24ndCBzZXQgYXNzdW1lIHRoYXQgdGhpcyBpcyBhIEN0cmwtWiBvbiBpdHMgb3duIGFuZCBkcm9wCisgICAgICAgICAgIHRocm91Z2ggdG8gY2hlY2sgZm9yIEVPRi4KICAgICAgICAgKi8KICAgICAgICAgaWYgKEdldExhc3RFcnJvcigpPT1FUlJPUl9PUEVSQVRJT05fQUJPUlRFRCkgewotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFNsZWVwKDEpOworICAgICAgICAgICAgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoV2FpdEZvclNpbmdsZU9iamVjdChoSW50ZXJydXB0RXZlbnQsIDEwKSkgeworICAgICAgICAgICAgY2FzZSBXQUlUX09CSkVDVF8wOgorICAgICAgICAgICAgICAgIFJlc2V0RXZlbnQoaEludGVycnVwdEV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogSW50ZXJydXB0ICovCisgICAgICAgICAgICBjYXNlIFdBSVRfRkFJTEVEOgorICAgICAgICAgICAgICAgIHJldHVybiAtMjsgLyogRXJyb3IgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KQEAgLTkwLDcgKzkzLDcgQEAKICNlbmRpZgogICAgICAgICAgICAgaWYgKHMgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKLQkgICAgLyogdHJ5IGFnYWluICovCisgICAgICAgIC8qIHRyeSBhZ2FpbiAqLwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvUGFyc2VyL25vZGUuYyBiL1BhcnNlci9ub2RlLmMKaW5kZXggMGRlYTMwZi4uMWU0ZjBkYSAxMDA2NDQKLS0tIGEvUGFyc2VyL25vZGUuYworKysgYi9QYXJzZXIvbm9kZS5jCkBAIC03MSw3ICs3MSw3IEBACiAgKiBjYXBhY2l0eS4gIFRoZSBjb2RlIGlzIHRyaWNreSB0byBhdm9pZCB0aGF0LgogICovCiAjZGVmaW5lIFhYWFJPVU5EVVAobikgKChuKSA8PSAxID8gKG4pIDogICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgIChuKSA8PSAxMjggPyAoKChuKSArIDMpICYgfjMpIDogICAgICAgICAgXAorICAgICAgICAgICAgICAgKG4pIDw9IDEyOCA/IF9QeV9TSVpFX1JPVU5EX1VQKChuKSwgNCkgOiBcCiAgICAgICAgICAgICAgICBmYW5jeV9yb3VuZHVwKG4pKQogCiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRvay5jIGIvUGFyc2VyL3BhcnNldG9rLmMKaW5kZXggYmI5YWZjNC4uN2JlYjczNSAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNldG9rLmMKKysrIGIvUGFyc2VyL3BhcnNldG9rLmMKQEAgLTEzLDcgKzEzLDcgQEAKIAogLyogRm9yd2FyZCAqLwogc3RhdGljIG5vZGUgKnBhcnNldG9rKHN0cnVjdCB0b2tfc3RhdGUgKiwgZ3JhbW1hciAqLCBpbnQsIHBlcnJkZXRhaWwgKiwgaW50ICopOwotc3RhdGljIHZvaWQgaW5pdGVycihwZXJyZGV0YWlsICplcnJfcmV0LCBjb25zdCBjaGFyKiBmaWxlbmFtZSk7CitzdGF0aWMgaW50IGluaXRlcnIocGVycmRldGFpbCAqZXJyX3JldCwgY29uc3QgY2hhciogZmlsZW5hbWUpOwogCiAvKiBQYXJzZSBpbnB1dCBjb21pbmcgZnJvbSBhIHN0cmluZy4gIFJldHVybiBlcnJvciBjb2RlLCBwcmludCBzb21lIGVycm9ycy4gKi8KIG5vZGUgKgpAQCAtNDgsNyArNDgsOCBAQAogICAgIHN0cnVjdCB0b2tfc3RhdGUgKnRvazsKICAgICBpbnQgZXhlY19pbnB1dCA9IHN0YXJ0ID09IGZpbGVfaW5wdXQ7CiAKLSAgICBpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKTsKKyAgICBpZiAoaW5pdGVycihlcnJfcmV0LCBmaWxlbmFtZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICgqZmxhZ3MgJiBQeVBBUlNFX0lHTk9SRV9DT09LSUUpCiAgICAgICAgIHRvayA9IFB5VG9rZW5pemVyX0Zyb21VVEY4KHMsIGV4ZWNfaW5wdXQpOwpAQCAtNTksNyArNjAsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgdG9rLT5maWxlbmFtZSA9IGZpbGVuYW1lID8gZmlsZW5hbWUgOiAiPHN0cmluZz4iOworI2lmbmRlZiBQR0VOCisgICAgUHlfSU5DUkVGKGVycl9yZXQtPmZpbGVuYW1lKTsKKyAgICB0b2stPmZpbGVuYW1lID0gZXJyX3JldC0+ZmlsZW5hbWU7CisjZW5kaWYKICAgICByZXR1cm4gcGFyc2V0b2sodG9rLCBnLCBzdGFydCwgZXJyX3JldCwgZmxhZ3MpOwogfQogCkBAIC05MCwxMyArOTQsMTcgQEAKIHsKICAgICBzdHJ1Y3QgdG9rX3N0YXRlICp0b2s7CiAKLSAgICBpbml0ZXJyKGVycl9yZXQsIGZpbGVuYW1lKTsKKyAgICBpZiAoaW5pdGVycihlcnJfcmV0LCBmaWxlbmFtZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmICgodG9rID0gUHlUb2tlbml6ZXJfRnJvbUZpbGUoZnAsIChjaGFyICopZW5jLCBwczEsIHBzMikpID09IE5VTEwpIHsKICAgICAgICAgZXJyX3JldC0+ZXJyb3IgPSBFX05PTUVNOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG9rLT5maWxlbmFtZSA9IGZpbGVuYW1lOworI2lmbmRlZiBQR0VOCisgICAgUHlfSU5DUkVGKGVycl9yZXQtPmZpbGVuYW1lKTsKKyAgICB0b2stPmZpbGVuYW1lID0gZXJyX3JldC0+ZmlsZW5hbWU7CisjZW5kaWYKICAgICByZXR1cm4gcGFyc2V0b2sodG9rLCBnLCBzdGFydCwgZXJyX3JldCwgZmxhZ3MpOwogfQogCkBAIC0yMTYsNiArMjI0LDM2IEBACiAgICAgaWYgKGVycl9yZXQtPmVycm9yID09IEVfRE9ORSkgewogICAgICAgICBuID0gcHMtPnBfdHJlZTsKICAgICAgICAgcHMtPnBfdHJlZSA9IE5VTEw7CisKKyNpZm5kZWYgUEdFTgorICAgICAgICAvKiBDaGVjayB0aGF0IHRoZSBzb3VyY2UgZm9yIGEgc2luZ2xlIGlucHV0IHN0YXRlbWVudCByZWFsbHkKKyAgICAgICAgICAgaXMgYSBzaW5nbGUgc3RhdGVtZW50IGJ5IGxvb2tpbmcgYXQgd2hhdCBpcyBsZWZ0IGluIHRoZQorICAgICAgICAgICBidWZmZXIgYWZ0ZXIgcGFyc2luZy4gIFRyYWlsaW5nIHdoaXRlc3BhY2UgYW5kIGNvbW1lbnRzCisgICAgICAgICAgIGFyZSBPSy4gICovCisgICAgICAgIGlmIChzdGFydCA9PSBzaW5nbGVfaW5wdXQpIHsKKyAgICAgICAgICAgIGNoYXIgKmN1ciA9IHRvay0+Y3VyOworICAgICAgICAgICAgY2hhciBjID0gKnRvay0+Y3VyOworCisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSAnXDAxNCcpCisgICAgICAgICAgICAgICAgICAgIGMgPSAqKytjdXI7CisKKyAgICAgICAgICAgICAgICBpZiAoIWMpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgaWYgKGMgIT0gJyMnKSB7CisgICAgICAgICAgICAgICAgICAgIGVycl9yZXQtPmVycm9yID0gRV9CQURTSU5HTEU7CisgICAgICAgICAgICAgICAgICAgIFB5Tm9kZV9GcmVlKG4pOworICAgICAgICAgICAgICAgICAgICBuID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogU3VjayB1cCBjb21tZW50LiAqLworICAgICAgICAgICAgICAgIHdoaWxlIChjICYmIGMgIT0gJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgYyA9ICorK2N1cjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCiAgICAgfQogICAgIGVsc2UKICAgICAgICAgbiA9IE5VTEw7CkBAIC0yMjYsNyArMjY0LDcgQEAKICAgICBQeVBhcnNlcl9EZWxldGUocHMpOwogCiAgICAgaWYgKG4gPT0gTlVMTCkgewotICAgICAgICBpZiAodG9rLT5saW5lbm8gPD0gMSAmJiB0b2stPmRvbmUgPT0gRV9FT0YpCisgICAgICAgIGlmICh0b2stPmRvbmUgPT0gRV9FT0YpCiAgICAgICAgICAgICBlcnJfcmV0LT5lcnJvciA9IEVfRU9GOwogICAgICAgICBlcnJfcmV0LT5saW5lbm8gPSB0b2stPmxpbmVubzsKICAgICAgICAgaWYgKHRvay0+YnVmICE9IE5VTEwpIHsKQEAgLTI2OSwxNCArMzA3LDI0IEBACiAgICAgcmV0dXJuIG47CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgaW50CiBpbml0ZXJyKHBlcnJkZXRhaWwgKmVycl9yZXQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIGVycl9yZXQtPmVycm9yID0gRV9PSzsKLSAgICBlcnJfcmV0LT5maWxlbmFtZSA9IGZpbGVuYW1lOwogICAgIGVycl9yZXQtPmxpbmVubyA9IDA7CiAgICAgZXJyX3JldC0+b2Zmc2V0ID0gMDsKICAgICBlcnJfcmV0LT50ZXh0ID0gTlVMTDsKICAgICBlcnJfcmV0LT50b2tlbiA9IC0xOwogICAgIGVycl9yZXQtPmV4cGVjdGVkID0gLTE7CisjaWZuZGVmIFBHRU4KKyAgICBpZiAoZmlsZW5hbWUpCisgICAgICAgIGVycl9yZXQtPmZpbGVuYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChmaWxlbmFtZSk7CisgICAgZWxzZQorICAgICAgICBlcnJfcmV0LT5maWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8c3RyaW5nPiIpOworICAgIGlmIChlcnJfcmV0LT5maWxlbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGVycl9yZXQtPmVycm9yID0gRV9FUlJPUjsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNldG9rX3BnZW4uYyBiL1BhcnNlci9wYXJzZXRva19wZ2VuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiOTI4OAotLS0gL2Rldi9udWxsCisrKyBiL1BhcnNlci9wYXJzZXRva19wZ2VuLmMKQEAgLTAsMCArMSwyIEBACisjZGVmaW5lIFBHRU4KKyNpbmNsdWRlICJwYXJzZXRvay5jIgpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW5tYWluLmMgYi9QYXJzZXIvcGdlbm1haW4uYwppbmRleCA0YjdiNTVhLi41MmI4MzgwIDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbm1haW4uYworKysgYi9QYXJzZXIvcGdlbm1haW4uYwpAQCAtMjksNiArMjksOCBAQAogLyogRm9yd2FyZCAqLwogZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSk7CiAKK3ZvaWQgUHlfRXhpdChpbnQpIF9QeV9OT19SRVRVUk47CisKIHZvaWQKIFB5X0V4aXQoaW50IHN0cykKIHsKZGlmZiAtLWdpdCBhL1BhcnNlci90b2tlbml6ZXIuYyBiL1BhcnNlci90b2tlbml6ZXIuYwppbmRleCA1YmExMmE0Li45M2E0YTVjIDEwMDY0NAotLS0gYS9QYXJzZXIvdG9rZW5pemVyLmMKKysrIGIvUGFyc2VyL3Rva2VuaXplci5jCkBAIC0xMjgsNyArMTI4LDYgQEAKICAgICB0b2stPnByb21wdCA9IHRvay0+bmV4dHByb21wdCA9IE5VTEw7CiAgICAgdG9rLT5saW5lbm8gPSAwOwogICAgIHRvay0+bGV2ZWwgPSAwOwotICAgIHRvay0+ZmlsZW5hbWUgPSBOVUxMOwogICAgIHRvay0+YWx0d2FybmluZyA9IDE7CiAgICAgdG9rLT5hbHRlcnJvciA9IDE7CiAgICAgdG9rLT5hbHR0YWJzaXplID0gMTsKQEAgLTE0MCw2ICsxMzksNyBAQAogICAgIHRvay0+ZW5jb2RpbmcgPSBOVUxMOwogICAgIHRvay0+Y29udF9saW5lID0gMDsKICNpZm5kZWYgUEdFTgorICAgIHRvay0+ZmlsZW5hbWUgPSBOVUxMOwogICAgIHRvay0+ZGVjb2RpbmdfcmVhZGxpbmUgPSBOVUxMOwogICAgIHRvay0+ZGVjb2RpbmdfYnVmZmVyID0gTlVMTDsKICNlbmRpZgpAQCAtNDYyLDYgKzQ2Miw4IEBACiBmcF9zZXRyZWFkbChzdHJ1Y3QgdG9rX3N0YXRlICp0b2ssIGNvbnN0IGNoYXIqIGVuYykKIHsKICAgICBQeU9iamVjdCAqcmVhZGxpbmUgPSBOVUxMLCAqc3RyZWFtID0gTlVMTCwgKmlvID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKKyAgICBfUHlfSURFTlRJRklFUihyZWFkbGluZSk7CiAgICAgaW50IGZkOwogCiAgICAgaW8gPSBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKCJpbyIpOwpAQCAtNDc0LDEzICs0NzYsMTMgQEAKICAgICAgICAgZ290byBjbGVhbnVwOwogICAgIH0KIAotICAgIHN0cmVhbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgImlzaXNPT08iLAorICAgIHN0cmVhbSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJpc2lzT09PIiwKICAgICAgICAgICAgICAgICAgICAgZmQsICJyIiwgLTEsIGVuYywgUHlfTm9uZSwgUHlfTm9uZSwgUHlfRmFsc2UpOwogICAgIGlmIChzdHJlYW0gPT0gTlVMTCkKICAgICAgICAgZ290byBjbGVhbnVwOwogCiAgICAgUHlfWERFQ1JFRih0b2stPmRlY29kaW5nX3JlYWRsaW5lKTsKLSAgICByZWFkbGluZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoc3RyZWFtLCAicmVhZGxpbmUiKTsKKyAgICByZWFkbGluZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3RyZWFtLCAmUHlJZF9yZWFkbGluZSk7CiAgICAgdG9rLT5kZWNvZGluZ19yZWFkbGluZSA9IHJlYWRsaW5lOwogCiAgICAgLyogVGhlIGZpbGUgaGFzIGJlZW4gcmVvcGVuZWQ7IHBhcnNpbmcgd2lsbCByZXN0YXJ0IGZyb20KQEAgLTU0NSw3ICs1NDcsNiBAQAogewogICAgIGNoYXIgKmxpbmUgPSBOVUxMOwogICAgIGludCBiYWRjaGFyID0gMDsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgZm9yICg7OykgewogICAgICAgICBpZiAodG9rLT5kZWNvZGluZ19zdGF0ZSA9PSBTVEFURV9OT1JNQUwpIHsKICAgICAgICAgICAgIC8qIFdlIGFscmVhZHkgaGF2ZSBhIGNvZGVjIGFzc29jaWF0ZWQgd2l0aApAQCAtNTg2LDE5ICs1ODcsMTIgQEAKICAgICBpZiAoYmFkY2hhcikgewogICAgICAgICAvKiBOZWVkIHRvIGFkZCAxIHRvIHRoZSBsaW5lIG51bWJlciwgc2luY2UgdGhpcyBsaW5lCiAgICAgICAgICAgIGhhcyBub3QgYmVlbiBjb3VudGVkLCB5ZXQuICAqLwotICAgICAgICBpZiAodG9rLT5maWxlbmFtZSAhPSBOVUxMKQotICAgICAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHRvay0+ZmlsZW5hbWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZmlsZT4iKTsKLSAgICAgICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIk5vbi1VVEYtOCBjb2RlIHN0YXJ0aW5nIHdpdGggJ1xceCUuMngnICIKLSAgICAgICAgICAgICAgICAgICAgImluIGZpbGUgJVUgb24gbGluZSAlaSwgIgotICAgICAgICAgICAgICAgICAgICAiYnV0IG5vIGVuY29kaW5nIGRlY2xhcmVkOyAiCi0gICAgICAgICAgICAgICAgICAgICJzZWUgaHR0cDovL3B5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAyNjMvIGZvciBkZXRhaWxzIiwKLSAgICAgICAgICAgICAgICAgICAgYmFkY2hhciwgZmlsZW5hbWUsIHRvay0+bGluZW5vICsgMSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwotICAgICAgICB9CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAiTm9uLVVURi04IGNvZGUgc3RhcnRpbmcgd2l0aCAnXFx4JS4yeCcgIgorICAgICAgICAgICAgICAgICJpbiBmaWxlICVVIG9uIGxpbmUgJWksICIKKyAgICAgICAgICAgICAgICAiYnV0IG5vIGVuY29kaW5nIGRlY2xhcmVkOyAiCisgICAgICAgICAgICAgICAgInNlZSBodHRwOi8vcHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDI2My8gZm9yIGRldGFpbHMiLAorICAgICAgICAgICAgICAgIGJhZGNoYXIsIHRvay0+ZmlsZW5hbWUsIHRvay0+bGluZW5vICsgMSk7CiAgICAgICAgIHJldHVybiBlcnJvcl9yZXQodG9rKTsKICAgICB9CiAjZW5kaWYKQEAgLTg1Niw2ICs4NTAsNyBAQAogI2lmbmRlZiBQR0VOCiAgICAgUHlfWERFQ1JFRih0b2stPmRlY29kaW5nX3JlYWRsaW5lKTsKICAgICBQeV9YREVDUkVGKHRvay0+ZGVjb2RpbmdfYnVmZmVyKTsKKyAgICBQeV9YREVDUkVGKHRvay0+ZmlsZW5hbWUpOwogI2VuZGlmCiAgICAgaWYgKHRvay0+ZnAgIT0gTlVMTCAmJiB0b2stPmJ1ZiAhPSBOVUxMKQogICAgICAgICBQeU1lbV9GUkVFKHRvay0+YnVmKTsKQEAgLTEyNTAsOCArMTI0NSwxMyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKHRvay0+YWx0d2FybmluZykgewotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiJXM6IGluY29uc2lzdGVudCB1c2Ugb2YgdGFicyBhbmQgc3BhY2VzICIKKyNpZmRlZiBQR0VOCisgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbmNvbnNpc3RlbnQgdXNlIG9mIHRhYnMgYW5kIHNwYWNlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBpbmRlbnRhdGlvblxuIik7CisjZWxzZQorICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiVVOiBpbmNvbnNpc3RlbnQgdXNlIG9mIHRhYnMgYW5kIHNwYWNlcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiBpbmRlbnRhdGlvblxuIiwgdG9rLT5maWxlbmFtZSk7CisjZW5kaWYKICAgICAgICAgdG9rLT5hbHR3YXJuaW5nID0gMDsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC0xMjYwLDE0ICsxMjYwLDE2IEBACiAjaWZkZWYgUEdFTgogI2RlZmluZSB2ZXJpZnlfaWRlbnRpZmllcih0b2spIDEKICNlbHNlCi0vKiBWZXJpZnkgdGhhdCB0aGUgaWRlbnRpZmllciBmb2xsb3dzIFBFUCAzMTMxLiAqLworLyogVmVyaWZ5IHRoYXQgdGhlIGlkZW50aWZpZXIgZm9sbG93cyBQRVAgMzEzMS4KKyAgIEFsbCBpZGVudGlmaWVyIHN0cmluZ3MgYXJlIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiB1bmljb2RlIG9iamVjdHMuCisgKi8KIHN0YXRpYyBpbnQKIHZlcmlmeV9pZGVudGlmaWVyKHN0cnVjdCB0b2tfc3RhdGUgKnRvaykKIHsKICAgICBQeU9iamVjdCAqczsKICAgICBpbnQgcmVzdWx0OwogICAgIHMgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0b2stPnN0YXJ0LCB0b2stPmN1ciAtIHRvay0+c3RhcnQsIE5VTEwpOwotICAgIGlmIChzID09IE5VTEwpIHsKKyAgICBpZiAocyA9PSBOVUxMIHx8IFB5VW5pY29kZV9SRUFEWShzKSA9PSAtMSkgewogICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgdG9rLT5kb25lID0gRV9JREVOVElGSUVSOwpAQCAtMTQxMCwxMyArMTQxMiwyMCBAQAogICAgIC8qIElkZW50aWZpZXIgKG1vc3QgZnJlcXVlbnQgdG9rZW4hKSAqLwogICAgIG5vbmFzY2lpID0gMDsKICAgICBpZiAoaXNfcG90ZW50aWFsX2lkZW50aWZpZXJfc3RhcnQoYykpIHsKLSAgICAgICAgLyogUHJvY2VzcyBiIiIsIHIiIiBhbmQgYnIiIiAqLwotICAgICAgICBpZiAoYyA9PSAnYicgfHwgYyA9PSAnQicpIHsKLSAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCi0gICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSB7CisgICAgICAgIC8qIFByb2Nlc3MgYiIiLCByIiIsIHUiIiwgYnIiIiBhbmQgcmIiIiAqLworICAgICAgICBpbnQgc2F3X2IgPSAwLCBzYXdfciA9IDAsIHNhd191ID0gMDsKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191KSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQorICAgICAgICAgICAgICAgIHNhd19iID0gMTsKKyAgICAgICAgICAgIC8qIFNpbmNlIHRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGxpdGVyYWwgd2UgZG9uJ3QKKyAgICAgICAgICAgICAgIHdhbnQgdG8gc3VwcG9ydCBpdCBpbiBhcmJpdHJhcnkgb3JkZXIgbGlrZSBieXRlIGxpdGVyYWxzLiAqLworICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfcikgJiYgKGMgPT0gJ3UnIHx8IGMgPT0gJ1UnKSkKKyAgICAgICAgICAgICAgICBzYXdfdSA9IDE7CisgICAgICAgICAgICAvKiB1ciIiIGFuZCBydSIiIGFyZSBub3Qgc3VwcG9ydGVkICovCisgICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKQorICAgICAgICAgICAgICAgIHNhd19yID0gMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCiAgICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7CkBAIC0xNjkyLDE3ICsxNzAxLDE4IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotLyogR2V0IC0qLSBlbmNvZGluZyAtKi0gZnJvbSBhIFB5dGhvbiBmaWxlLgorLyogR2V0IHRoZSBlbmNvZGluZyBvZiBhIFB5dGhvbiBmaWxlLiBDaGVjayBmb3IgdGhlIGNvZGluZyBjb29raWUgYW5kIGNoZWNrIGlmCisgICB0aGUgZmlsZSBzdGFydHMgd2l0aCBhIEJPTS4KIAotICAgUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nIHJldHVybnMgTlVMTCB3aGVuIGl0IGNhbid0IGZpbmQgdGhlIGVuY29kaW5nIGluCi0gICB0aGUgZmlyc3Qgb3Igc2Vjb25kIGxpbmUgb2YgdGhlIGZpbGUgKGluIHdoaWNoIGNhc2UgdGhlIGVuY29kaW5nCi0gICBzaG91bGQgYmUgYXNzdW1lZCB0byBiZSBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nKCkpLgorICAgUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoKSByZXR1cm5zIE5VTEwgd2hlbiBpdCBjYW4ndCBmaW5kIHRoZQorICAgZW5jb2RpbmcgaW4gdGhlIGZpcnN0IG9yIHNlY29uZCBsaW5lIG9mIHRoZSBmaWxlIChpbiB3aGljaCBjYXNlIHRoZSBlbmNvZGluZworICAgc2hvdWxkIGJlIGFzc3VtZWQgdG8gYmUgVVRGLTgpLgogCi0gICBUaGUgY2hhciAqIHJldHVybmVkIGlzIG1hbGxvYydlZCB2aWEgUHlNZW1fTUFMTE9DKCkgYW5kIHRodXMgbXVzdCBiZSBmcmVlZAotICAgYnkgdGhlIGNhbGxlci4KLSovCisgICBUaGUgY2hhciogcmV0dXJuZWQgaXMgbWFsbG9jJ2VkIHZpYSBQeU1lbV9NQUxMT0MoKSBhbmQgdGh1cyBtdXN0IGJlIGZyZWVkCisgICBieSB0aGUgY2FsbGVyLiAqLworCiBjaGFyICoKLVB5VG9rZW5pemVyX0ZpbmRFbmNvZGluZyhpbnQgZmQpCitQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShpbnQgZmQsIFB5T2JqZWN0ICpmaWxlbmFtZSkKIHsKICAgICBzdHJ1Y3QgdG9rX3N0YXRlICp0b2s7CiAgICAgRklMRSAqZnA7CkBAIC0xNzIxLDYgKzE3MzEsMjAgQEAKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorI2lmbmRlZiBQR0VOCisgICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZpbGVuYW1lKTsKKyAgICAgICAgdG9rLT5maWxlbmFtZSA9IGZpbGVuYW1lOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdG9rLT5maWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8c3RyaW5nPiIpOworICAgICAgICBpZiAodG9rLT5maWxlbmFtZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBmY2xvc2UoZnApOworICAgICAgICAgICAgUHlUb2tlbml6ZXJfRnJlZSh0b2spOworICAgICAgICAgICAgcmV0dXJuIGVuY29kaW5nOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgd2hpbGUgKHRvay0+bGluZW5vIDwgMiAmJiB0b2stPmRvbmUgPT0gRV9PSykgewogICAgICAgICBQeVRva2VuaXplcl9HZXQodG9rLCAmcF9zdGFydCwgJnBfZW5kKTsKICAgICB9CkBAIC0xNzM0LDYgKzE3NTgsMTIgQEAKICAgICByZXR1cm4gZW5jb2Rpbmc7CiB9CiAKK2NoYXIgKgorUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCBmZCkKK3sKKyAgICByZXR1cm4gUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoZmQsIE5VTEwpOworfQorCiAjaWZkZWYgUHlfREVCVUcKIAogdm9pZApkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5oIGIvUGFyc2VyL3Rva2VuaXplci5oCmluZGV4IDJiZTNiZjIuLmVkMWYzYWEgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuaAorKysgYi9QYXJzZXIvdG9rZW5pemVyLmgKQEAgLTQwLDcgKzQwLDEzIEBACiAgICAgaW50IGxldmVsOyAgICAgICAgICAvKiAoKSBbXSB7fSBQYXJlbnRoZXNlcyBuZXN0aW5nIGxldmVsICovCiAgICAgICAgICAgICAvKiBVc2VkIHRvIGFsbG93IGZyZWUgY29udGludWF0aW9ucyBpbnNpZGUgdGhlbSAqLwogICAgIC8qIFN0dWZmIGZvciBjaGVja2luZyBvbiBkaWZmZXJlbnQgdGFiIHNpemVzICovCi0gICAgY29uc3QgY2hhciAqZmlsZW5hbWU7ICAgLyogZW5jb2RlZCB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyAqLworI2lmbmRlZiBQR0VOCisgICAgLyogcGdlbiBkb2Vzbid0IGhhdmUgYWNjZXNzIHRvIFB5dGhvbiBjb2RlY3MsIGl0IGNhbm5vdCBkZWNvZGUgdGhlIGlucHV0CisgICAgICAgZmlsZW5hbWUuIFRoZSBieXRlcyBmaWxlbmFtZSBtaWdodCBiZSBrZXB0LCBidXQgaXQgaXMgb25seSB1c2VkIGJ5CisgICAgICAgaW5kZW50ZXJyb3IoKSBhbmQgaXQgaXMgbm90IHJlYWxseSBuZWVkZWQ6IHBnZW4gb25seSBjb21waWxlcyBvbmUgZmlsZQorICAgICAgIChHcmFtbWFyL0dyYW1tYXIpLiAqLworICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKKyNlbmRpZgogICAgIGludCBhbHR3YXJuaW5nOyAgICAgLyogSXNzdWUgd2FybmluZyBpZiBhbHRlcm5hdGUgdGFicyBkb24ndCBtYXRjaCAqLwogICAgIGludCBhbHRlcnJvcjsgICAgICAgLyogSXNzdWUgZXJyb3IgaWYgYWx0ZXJuYXRlIHRhYnMgZG9uJ3QgbWF0Y2ggKi8KICAgICBpbnQgYWx0dGFic2l6ZTsgICAgIC8qIEFsdGVybmF0ZSB0YWIgc3BhY2luZyAqLwpAQCAtNjksNyArNzUsNiBAQAogZXh0ZXJuIGludCBQeVRva2VuaXplcl9HZXQoc3RydWN0IHRva19zdGF0ZSAqLCBjaGFyICoqLCBjaGFyICoqKTsKIGV4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfUmVzdG9yZUVuY29kaW5nKHN0cnVjdCB0b2tfc3RhdGUqIHRvaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4sIGludCAqb2Zmc2V0KTsKLWV4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCk7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL1B5dGhvbi1hc3QuYyBiL1B5dGhvbi9QeXRob24tYXN0LmMKaW5kZXggYTI3NmI2Yy4uODA1ZjJiOCAxMDA2NDQKLS0tIGEvUHl0aG9uL1B5dGhvbi1hc3QuYworKysgYi9QeXRob24vUHl0aG9uLWFzdC5jCkBAIC0xLDEzICsxLDYgQEAKIC8qIEZpbGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgUGFyc2VyL2FzZGxfYy5weS4gKi8KIAotCi0vKgotICAgX192ZXJzaW9uX18gODIxNjMuCi0KLSAgIFRoaXMgbW9kdWxlIG11c3QgYmUgY29tbWl0dGVkIHNlcGFyYXRlbHkgYWZ0ZXIgZWFjaCBBU1QgZ3JhbW1hciBjaGFuZ2U7Ci0gICBUaGUgX192ZXJzaW9uX18gbnVtYmVyIGlzIHNldCB0byB0aGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjb21taXQKLSAgIGNvbnRhaW5pbmcgdGhlIGdyYW1tYXIgY2hhbmdlLgotKi8KKyNpbmNsdWRlIDxzdGRkZWYuaD4KIAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgIlB5dGhvbi1hc3QuaCIKQEAgLTE2LDYgKzksNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqbW9kX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfbW9kKHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk1vZHVsZV90eXBlOworX1B5X0lERU5USUZJRVIoYm9keSk7CiBzdGF0aWMgY2hhciAqTW9kdWxlX2ZpZWxkc1tdPXsKICAgICAgICAgImJvZHkiLAogfTsKQEAgLTMyLDEyICsyNiwxOCBAQAogICAgICAgICAiYm9keSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqc3RtdF90eXBlOworX1B5X0lERU5USUZJRVIobGluZW5vKTsKK19QeV9JREVOVElGSUVSKGNvbF9vZmZzZXQpOwogc3RhdGljIGNoYXIgKnN0bXRfYXR0cmlidXRlc1tdID0gewogICAgICAgICAibGluZW5vIiwKICAgICAgICAgImNvbF9vZmZzZXQiLAogfTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9zdG10KHZvaWQqKTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkZ1bmN0aW9uRGVmX3R5cGU7CitfUHlfSURFTlRJRklFUihuYW1lKTsKK19QeV9JREVOVElGSUVSKGFyZ3MpOworX1B5X0lERU5USUZJRVIoZGVjb3JhdG9yX2xpc3QpOworX1B5X0lERU5USUZJRVIocmV0dXJucyk7CiBzdGF0aWMgY2hhciAqRnVuY3Rpb25EZWZfZmllbGRzW109ewogICAgICAgICAibmFtZSIsCiAgICAgICAgICJhcmdzIiwKQEAgLTQ2LDYgKzQ2LDEwIEBACiAgICAgICAgICJyZXR1cm5zIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpDbGFzc0RlZl90eXBlOworX1B5X0lERU5USUZJRVIoYmFzZXMpOworX1B5X0lERU5USUZJRVIoa2V5d29yZHMpOworX1B5X0lERU5USUZJRVIoc3RhcmFyZ3MpOworX1B5X0lERU5USUZJRVIoa3dhcmdzKTsKIHN0YXRpYyBjaGFyICpDbGFzc0RlZl9maWVsZHNbXT17CiAgICAgICAgICJuYW1lIiwKICAgICAgICAgImJhc2VzIiwKQEAgLTU2LDEwICs2MCwxMiBAQAogICAgICAgICAiZGVjb3JhdG9yX2xpc3QiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKlJldHVybl90eXBlOworX1B5X0lERU5USUZJRVIodmFsdWUpOwogc3RhdGljIGNoYXIgKlJldHVybl9maWVsZHNbXT17CiAgICAgICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRGVsZXRlX3R5cGU7CitfUHlfSURFTlRJRklFUih0YXJnZXRzKTsKIHN0YXRpYyBjaGFyICpEZWxldGVfZmllbGRzW109ewogICAgICAgICAidGFyZ2V0cyIsCiB9OwpAQCAtNjksMTIgKzc1LDE2IEBACiAgICAgICAgICJ2YWx1ZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQXVnQXNzaWduX3R5cGU7CitfUHlfSURFTlRJRklFUih0YXJnZXQpOworX1B5X0lERU5USUZJRVIob3ApOwogc3RhdGljIGNoYXIgKkF1Z0Fzc2lnbl9maWVsZHNbXT17CiAgICAgICAgICJ0YXJnZXQiLAogICAgICAgICAib3AiLAogICAgICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkZvcl90eXBlOworX1B5X0lERU5USUZJRVIoaXRlcik7CitfUHlfSURFTlRJRklFUihvcmVsc2UpOwogc3RhdGljIGNoYXIgKkZvcl9maWVsZHNbXT17CiAgICAgICAgICJ0YXJnZXQiLAogICAgICAgICAiaXRlciIsCkBAIC04Miw2ICs5Miw3IEBACiAgICAgICAgICJvcmVsc2UiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKldoaWxlX3R5cGU7CitfUHlfSURFTlRJRklFUih0ZXN0KTsKIHN0YXRpYyBjaGFyICpXaGlsZV9maWVsZHNbXT17CiAgICAgICAgICJ0ZXN0IiwKICAgICAgICAgImJvZHkiLApAQCAtOTQsMzcgKzEwNSw0MSBAQAogICAgICAgICAib3JlbHNlIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpXaXRoX3R5cGU7CitfUHlfSURFTlRJRklFUihpdGVtcyk7CiBzdGF0aWMgY2hhciAqV2l0aF9maWVsZHNbXT17Ci0gICAgICAgICJjb250ZXh0X2V4cHIiLAotICAgICAgICAib3B0aW9uYWxfdmFycyIsCisgICAgICAgICJpdGVtcyIsCiAgICAgICAgICJib2R5IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpSYWlzZV90eXBlOworX1B5X0lERU5USUZJRVIoZXhjKTsKK19QeV9JREVOVElGSUVSKGNhdXNlKTsKIHN0YXRpYyBjaGFyICpSYWlzZV9maWVsZHNbXT17CiAgICAgICAgICJleGMiLAogICAgICAgICAiY2F1c2UiLAogfTsKLXN0YXRpYyBQeVR5cGVPYmplY3QgKlRyeUV4Y2VwdF90eXBlOwotc3RhdGljIGNoYXIgKlRyeUV4Y2VwdF9maWVsZHNbXT17CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpUcnlfdHlwZTsKK19QeV9JREVOVElGSUVSKGhhbmRsZXJzKTsKK19QeV9JREVOVElGSUVSKGZpbmFsYm9keSk7CitzdGF0aWMgY2hhciAqVHJ5X2ZpZWxkc1tdPXsKICAgICAgICAgImJvZHkiLAogICAgICAgICAiaGFuZGxlcnMiLAogICAgICAgICAib3JlbHNlIiwKLX07Ci1zdGF0aWMgUHlUeXBlT2JqZWN0ICpUcnlGaW5hbGx5X3R5cGU7Ci1zdGF0aWMgY2hhciAqVHJ5RmluYWxseV9maWVsZHNbXT17Ci0gICAgICAgICJib2R5IiwKICAgICAgICAgImZpbmFsYm9keSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQXNzZXJ0X3R5cGU7CitfUHlfSURFTlRJRklFUihtc2cpOwogc3RhdGljIGNoYXIgKkFzc2VydF9maWVsZHNbXT17CiAgICAgICAgICJ0ZXN0IiwKICAgICAgICAgIm1zZyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqSW1wb3J0X3R5cGU7CitfUHlfSURFTlRJRklFUihuYW1lcyk7CiBzdGF0aWMgY2hhciAqSW1wb3J0X2ZpZWxkc1tdPXsKICAgICAgICAgIm5hbWVzIiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpJbXBvcnRGcm9tX3R5cGU7CitfUHlfSURFTlRJRklFUihtb2R1bGUpOworX1B5X0lERU5USUZJRVIobGV2ZWwpOwogc3RhdGljIGNoYXIgKkltcG9ydEZyb21fZmllbGRzW109ewogICAgICAgICAibW9kdWxlIiwKICAgICAgICAgIm5hbWVzIiwKQEAgLTE1MiwxNyArMTY3LDIxIEBACiB9Owogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2V4cHIodm9pZCopOwogc3RhdGljIFB5VHlwZU9iamVjdCAqQm9vbE9wX3R5cGU7CitfUHlfSURFTlRJRklFUih2YWx1ZXMpOwogc3RhdGljIGNoYXIgKkJvb2xPcF9maWVsZHNbXT17CiAgICAgICAgICJvcCIsCiAgICAgICAgICJ2YWx1ZXMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkJpbk9wX3R5cGU7CitfUHlfSURFTlRJRklFUihsZWZ0KTsKK19QeV9JREVOVElGSUVSKHJpZ2h0KTsKIHN0YXRpYyBjaGFyICpCaW5PcF9maWVsZHNbXT17CiAgICAgICAgICJsZWZ0IiwKICAgICAgICAgIm9wIiwKICAgICAgICAgInJpZ2h0IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpVbmFyeU9wX3R5cGU7CitfUHlfSURFTlRJRklFUihvcGVyYW5kKTsKIHN0YXRpYyBjaGFyICpVbmFyeU9wX2ZpZWxkc1tdPXsKICAgICAgICAgIm9wIiwKICAgICAgICAgIm9wZXJhbmQiLApAQCAtMTc5LDE1ICsxOTgsMTkgQEAKICAgICAgICAgIm9yZWxzZSIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRGljdF90eXBlOworX1B5X0lERU5USUZJRVIoa2V5cyk7CiBzdGF0aWMgY2hhciAqRGljdF9maWVsZHNbXT17CiAgICAgICAgICJrZXlzIiwKICAgICAgICAgInZhbHVlcyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqU2V0X3R5cGU7CitfUHlfSURFTlRJRklFUihlbHRzKTsKIHN0YXRpYyBjaGFyICpTZXRfZmllbGRzW109ewogICAgICAgICAiZWx0cyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqTGlzdENvbXBfdHlwZTsKK19QeV9JREVOVElGSUVSKGVsdCk7CitfUHlfSURFTlRJRklFUihnZW5lcmF0b3JzKTsKIHN0YXRpYyBjaGFyICpMaXN0Q29tcF9maWVsZHNbXT17CiAgICAgICAgICJlbHQiLAogICAgICAgICAiZ2VuZXJhdG9ycyIsCkBAIC0xOTgsNiArMjIxLDcgQEAKICAgICAgICAgImdlbmVyYXRvcnMiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkRpY3RDb21wX3R5cGU7CitfUHlfSURFTlRJRklFUihrZXkpOwogc3RhdGljIGNoYXIgKkRpY3RDb21wX2ZpZWxkc1tdPXsKICAgICAgICAgImtleSIsCiAgICAgICAgICJ2YWx1ZSIsCkBAIC0yMTIsMTMgKzIzNiwyMCBAQAogc3RhdGljIGNoYXIgKllpZWxkX2ZpZWxkc1tdPXsKICAgICAgICAgInZhbHVlIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpZaWVsZEZyb21fdHlwZTsKK3N0YXRpYyBjaGFyICpZaWVsZEZyb21fZmllbGRzW109eworICAgICAgICAidmFsdWUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkNvbXBhcmVfdHlwZTsKK19QeV9JREVOVElGSUVSKG9wcyk7CitfUHlfSURFTlRJRklFUihjb21wYXJhdG9ycyk7CiBzdGF0aWMgY2hhciAqQ29tcGFyZV9maWVsZHNbXT17CiAgICAgICAgICJsZWZ0IiwKICAgICAgICAgIm9wcyIsCiAgICAgICAgICJjb21wYXJhdG9ycyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqQ2FsbF90eXBlOworX1B5X0lERU5USUZJRVIoZnVuYyk7CiBzdGF0aWMgY2hhciAqQ2FsbF9maWVsZHNbXT17CiAgICAgICAgICJmdW5jIiwKICAgICAgICAgImFyZ3MiLApAQCAtMjI3LDEwICsyNTgsMTIgQEAKICAgICAgICAgImt3YXJncyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqTnVtX3R5cGU7CitfUHlfSURFTlRJRklFUihuKTsKIHN0YXRpYyBjaGFyICpOdW1fZmllbGRzW109ewogICAgICAgICAibiIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqU3RyX3R5cGU7CitfUHlfSURFTlRJRklFUihzKTsKIHN0YXRpYyBjaGFyICpTdHJfZmllbGRzW109ewogICAgICAgICAicyIsCiB9OwpAQCAtMjQwLDEyICsyNzMsMTUgQEAKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFbGxpcHNpc190eXBlOwogc3RhdGljIFB5VHlwZU9iamVjdCAqQXR0cmlidXRlX3R5cGU7CitfUHlfSURFTlRJRklFUihhdHRyKTsKK19QeV9JREVOVElGSUVSKGN0eCk7CiBzdGF0aWMgY2hhciAqQXR0cmlidXRlX2ZpZWxkc1tdPXsKICAgICAgICAgInZhbHVlIiwKICAgICAgICAgImF0dHIiLAogICAgICAgICAiY3R4IiwKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpTdWJzY3JpcHRfdHlwZTsKK19QeV9JREVOVElGSUVSKHNsaWNlKTsKIHN0YXRpYyBjaGFyICpTdWJzY3JpcHRfZmllbGRzW109ewogICAgICAgICAidmFsdWUiLAogICAgICAgICAic2xpY2UiLApAQCAtMjU3LDYgKzI5Myw3IEBACiAgICAgICAgICJjdHgiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKk5hbWVfdHlwZTsKK19QeV9JREVOVElGSUVSKGlkKTsKIHN0YXRpYyBjaGFyICpOYW1lX2ZpZWxkc1tdPXsKICAgICAgICAgImlkIiwKICAgICAgICAgImN0eCIsCkBAIC0yODQsMTIgKzMyMSwxNiBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqc2xpY2VfdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9zbGljZSh2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpTbGljZV90eXBlOworX1B5X0lERU5USUZJRVIobG93ZXIpOworX1B5X0lERU5USUZJRVIodXBwZXIpOworX1B5X0lERU5USUZJRVIoc3RlcCk7CiBzdGF0aWMgY2hhciAqU2xpY2VfZmllbGRzW109ewogICAgICAgICAibG93ZXIiLAogICAgICAgICAidXBwZXIiLAogICAgICAgICAic3RlcCIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqRXh0U2xpY2VfdHlwZTsKK19QeV9JREVOVElGSUVSKGRpbXMpOwogc3RhdGljIGNoYXIgKkV4dFNsaWNlX2ZpZWxkc1tdPXsKICAgICAgICAgImRpbXMiLAogfTsKQEAgLTM0NSw2ICszODYsNyBAQAogc3RhdGljIFB5VHlwZU9iamVjdCAqTm90SW5fdHlwZTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmNvbXByZWhlbnNpb25fdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9jb21wcmVoZW5zaW9uKHZvaWQqKTsKK19QeV9JREVOVElGSUVSKGlmcyk7CiBzdGF0aWMgY2hhciAqY29tcHJlaGVuc2lvbl9maWVsZHNbXT17CiAgICAgICAgICJ0YXJnZXQiLAogICAgICAgICAiaXRlciIsCkBAIC0zNTcsNiArMzk5LDcgQEAKIH07CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfZXhjZXB0aGFuZGxlcih2b2lkKik7CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpFeGNlcHRIYW5kbGVyX3R5cGU7CitfUHlfSURFTlRJRklFUih0eXBlKTsKIHN0YXRpYyBjaGFyICpFeGNlcHRIYW5kbGVyX2ZpZWxkc1tdPXsKICAgICAgICAgInR5cGUiLAogICAgICAgICAibmFtZSIsCkBAIC0zNjQsNiArNDA3LDEzIEBACiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqYXJndW1lbnRzX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfYXJndW1lbnRzKHZvaWQqKTsKK19QeV9JREVOVElGSUVSKHZhcmFyZyk7CitfUHlfSURFTlRJRklFUih2YXJhcmdhbm5vdGF0aW9uKTsKK19QeV9JREVOVElGSUVSKGt3b25seWFyZ3MpOworX1B5X0lERU5USUZJRVIoa3dhcmcpOworX1B5X0lERU5USUZJRVIoa3dhcmdhbm5vdGF0aW9uKTsKK19QeV9JREVOVElGSUVSKGRlZmF1bHRzKTsKK19QeV9JREVOVElGSUVSKGt3X2RlZmF1bHRzKTsKIHN0YXRpYyBjaGFyICphcmd1bWVudHNfZmllbGRzW109ewogICAgICAgICAiYXJncyIsCiAgICAgICAgICJ2YXJhcmciLApAQCAtMzc2LDYgKzQyNiw4IEBACiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqYXJnX3R5cGU7CiBzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfYXJnKHZvaWQqKTsKK19QeV9JREVOVElGSUVSKGFyZyk7CitfUHlfSURFTlRJRklFUihhbm5vdGF0aW9uKTsKIHN0YXRpYyBjaGFyICphcmdfZmllbGRzW109ewogICAgICAgICAiYXJnIiwKICAgICAgICAgImFubm90YXRpb24iLApAQCAtMzg4LDE5ICs0NDAsNTQgQEAKIH07CiBzdGF0aWMgUHlUeXBlT2JqZWN0ICphbGlhc190eXBlOwogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2FsaWFzKHZvaWQqKTsKK19QeV9JREVOVElGSUVSKGFzbmFtZSk7CiBzdGF0aWMgY2hhciAqYWxpYXNfZmllbGRzW109ewogICAgICAgICAibmFtZSIsCiAgICAgICAgICJhc25hbWUiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKndpdGhpdGVtX3R5cGU7CitzdGF0aWMgUHlPYmplY3QqIGFzdDJvYmpfd2l0aGl0ZW0odm9pZCopOworX1B5X0lERU5USUZJRVIoY29udGV4dF9leHByKTsKK19QeV9JREVOVElGSUVSKG9wdGlvbmFsX3ZhcnMpOworc3RhdGljIGNoYXIgKndpdGhpdGVtX2ZpZWxkc1tdPXsKKyAgICAgICAgImNvbnRleHRfZXhwciIsCisgICAgICAgICJvcHRpb25hbF92YXJzIiwKK307CiAKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeU9iamVjdCAqZGljdDsKK30gQVNUX29iamVjdDsKKworc3RhdGljIHZvaWQKK2FzdF9kZWFsbG9jKEFTVF9vYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZShzZWxmKTsKK30KKworc3RhdGljIGludAorYXN0X3RyYXZlcnNlKEFTVF9vYmplY3QgKnNlbGYsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKHNlbGYtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorYXN0X2NsZWFyKEFTVF9vYmplY3QgKnNlbGYpCit7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZGljdCk7Cit9CisKIHN0YXRpYyBpbnQKIGFzdF90eXBlX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCiB7CisgICAgX1B5X0lERU5USUZJRVIoX2ZpZWxkcyk7CiAgICAgUHlfc3NpemVfdCBpLCBudW1maWVsZHMgPSAwOwogICAgIGludCByZXMgPSAtMTsKICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpmaWVsZHM7Ci0gICAgZmllbGRzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoc2VsZiksICJfZmllbGRzIik7CisgICAgZmllbGRzID0gX1B5T2JqZWN0X0dldEF0dHJJZCgoUHlPYmplY3QqKVB5X1RZUEUoc2VsZiksICZQeUlkX19maWVsZHMpOwogICAgIGlmICghZmllbGRzKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGlmIChmaWVsZHMpIHsKQEAgLTQ1MCw3ICs1MzcsOCBAQAogYXN0X3R5cGVfcmVkdWNlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgUHlPYmplY3QgKmRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHNlbGYsICJfX2RpY3RfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICBQeU9iamVjdCAqZGljdCA9IF9QeU9iamVjdF9HZXRBdHRySWQoc2VsZiwgJlB5SWRfX19kaWN0X18pOwogICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTQ3MCwxMiArNTU4LDE3IEBACiAgICAge05VTEx9CiB9OwogCitzdGF0aWMgUHlHZXRTZXREZWYgYXN0X3R5cGVfZ2V0c2V0c1tdID0geworICAgIHsiX19kaWN0X18iLCBQeU9iamVjdF9HZW5lcmljR2V0RGljdCwgUHlPYmplY3RfR2VuZXJpY1NldERpY3R9LAorICAgIHtOVUxMfQorfTsKKwogc3RhdGljIFB5VHlwZU9iamVjdCBBU1RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJfYXN0LkFTVCIsCi0gICAgc2l6ZW9mKFB5T2JqZWN0KSwKKyAgICBzaXplb2YoQVNUX29iamVjdCksCiAgICAgMCwKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIChkZXN0cnVjdG9yKWFzdF9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLwpAQCAtNDkwLDI2ICs1ODMsMjYgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgLyogdHBfZ2V0YXR0cm8gKi8KICAgICBQeU9iamVjdF9HZW5lcmljU2V0QXR0ciwgLyogdHBfc2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgLyogdHBfZmxhZ3MgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAodHJhdmVyc2Vwcm9jKWFzdF90cmF2ZXJzZSwgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAoaW5xdWlyeSlhc3RfY2xlYXIsICAgICAgLyogdHBfY2xlYXIgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIGFzdF90eXBlX21ldGhvZHMsICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCisgICAgYXN0X3R5cGVfZ2V0c2V0cywgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX3NldCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCisgICAgb2Zmc2V0b2YoQVNUX29iamVjdCwgZGljdCksLyogdHBfZGljdG9mZnNldCAqLwogICAgIChpbml0cHJvYylhc3RfdHlwZV9pbml0LCAvKiB0cF9pbml0ICovCiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgIC8qIHRwX2FsbG9jICovCiAgICAgUHlUeXBlX0dlbmVyaWNOZXcsICAgICAgIC8qIHRwX25ldyAqLwotICAgIFB5T2JqZWN0X0RlbCwgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgUHlPYmplY3RfR0NfRGVsLCAgICAgICAgIC8qIHRwX2ZyZWUgKi8KIH07CiAKIApAQCAtNTM2LDYgKzYyOSw3IEBACiBzdGF0aWMgaW50IGFkZF9hdHRyaWJ1dGVzKFB5VHlwZU9iamVjdCogdHlwZSwgY2hhcioqYXR0cnMsIGludCBudW1fZmllbGRzKQogewogICAgIGludCBpLCByZXN1bHQ7CisgICAgX1B5X0lERU5USUZJRVIoX2F0dHJpYnV0ZXMpOwogICAgIFB5T2JqZWN0ICpzLCAqbCA9IFB5VHVwbGVfTmV3KG51bV9maWVsZHMpOwogICAgIGlmICghbCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC01NDcsNyArNjQxLDcgQEAKICAgICAgICAgfQogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGwsIGksIHMpOwogICAgIH0KLSAgICByZXN1bHQgPSBQeU9iamVjdF9TZXRBdHRyU3RyaW5nKChQeU9iamVjdCopdHlwZSwgIl9hdHRyaWJ1dGVzIiwgbCkgPj0gMDsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfU2V0QXR0cklkKChQeU9iamVjdCopdHlwZSwgJlB5SWRfX2F0dHJpYnV0ZXMsIGwpID49IDA7CiAgICAgUHlfREVDUkVGKGwpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01NTYsNyArNjUwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0KiBhc3Qyb2JqX2xpc3QoYXNkbF9zZXEgKnNlcSwgUHlPYmplY3QqICgqZnVuYykodm9pZCopKQogewotICAgIGludCBpLCBuID0gYXNkbF9zZXFfTEVOKHNlcSk7CisgICAgUHlfc3NpemVfdCBpLCBuID0gYXNkbF9zZXFfTEVOKHNlcSk7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IFB5TGlzdF9OZXcobik7CiAgICAgUHlPYmplY3QgKnZhbHVlOwogICAgIGlmICghcmVzdWx0KQpAQCAtNTgxLDYgKzY3NSw3IEBACiB9CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CiAKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9pbnQobG9uZyBiKQogewpAQCAtNjE4LDYgKzcxMywxNSBAQAogICAgIHJldHVybiBvYmoyYXN0X29iamVjdChvYmosIG91dCwgYXJlbmEpOwogfQogCitzdGF0aWMgaW50IG9iajJhc3RfYnl0ZXMoUHlPYmplY3QqIG9iaiwgUHlPYmplY3QqKiBvdXQsIFB5QXJlbmEqIGFyZW5hKQoreworICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkFTVCBieXRlcyBtdXN0IGJlIG9mIHR5cGUgYnl0ZXMiKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiBvYmoyYXN0X29iamVjdChvYmosIG91dCwgYXJlbmEpOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaW50KFB5T2JqZWN0KiBvYmosIGludCogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpbnQgaTsKQEAgLTY5MSwxNSArNzk1LDEyIEBACiAgICAgICAgIGlmICghV2hpbGVfdHlwZSkgcmV0dXJuIDA7CiAgICAgICAgIElmX3R5cGUgPSBtYWtlX3R5cGUoIklmIiwgc3RtdF90eXBlLCBJZl9maWVsZHMsIDMpOwogICAgICAgICBpZiAoIUlmX3R5cGUpIHJldHVybiAwOwotICAgICAgICBXaXRoX3R5cGUgPSBtYWtlX3R5cGUoIldpdGgiLCBzdG10X3R5cGUsIFdpdGhfZmllbGRzLCAzKTsKKyAgICAgICAgV2l0aF90eXBlID0gbWFrZV90eXBlKCJXaXRoIiwgc3RtdF90eXBlLCBXaXRoX2ZpZWxkcywgMik7CiAgICAgICAgIGlmICghV2l0aF90eXBlKSByZXR1cm4gMDsKICAgICAgICAgUmFpc2VfdHlwZSA9IG1ha2VfdHlwZSgiUmFpc2UiLCBzdG10X3R5cGUsIFJhaXNlX2ZpZWxkcywgMik7CiAgICAgICAgIGlmICghUmFpc2VfdHlwZSkgcmV0dXJuIDA7Ci0gICAgICAgIFRyeUV4Y2VwdF90eXBlID0gbWFrZV90eXBlKCJUcnlFeGNlcHQiLCBzdG10X3R5cGUsIFRyeUV4Y2VwdF9maWVsZHMsIDMpOwotICAgICAgICBpZiAoIVRyeUV4Y2VwdF90eXBlKSByZXR1cm4gMDsKLSAgICAgICAgVHJ5RmluYWxseV90eXBlID0gbWFrZV90eXBlKCJUcnlGaW5hbGx5Iiwgc3RtdF90eXBlLCBUcnlGaW5hbGx5X2ZpZWxkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIpOwotICAgICAgICBpZiAoIVRyeUZpbmFsbHlfdHlwZSkgcmV0dXJuIDA7CisgICAgICAgIFRyeV90eXBlID0gbWFrZV90eXBlKCJUcnkiLCBzdG10X3R5cGUsIFRyeV9maWVsZHMsIDQpOworICAgICAgICBpZiAoIVRyeV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgQXNzZXJ0X3R5cGUgPSBtYWtlX3R5cGUoIkFzc2VydCIsIHN0bXRfdHlwZSwgQXNzZXJ0X2ZpZWxkcywgMik7CiAgICAgICAgIGlmICghQXNzZXJ0X3R5cGUpIHJldHVybiAwOwogICAgICAgICBJbXBvcnRfdHlwZSA9IG1ha2VfdHlwZSgiSW1wb3J0Iiwgc3RtdF90eXBlLCBJbXBvcnRfZmllbGRzLCAxKTsKQEAgLTc0Nyw2ICs4NDgsOCBAQAogICAgICAgICBpZiAoIUdlbmVyYXRvckV4cF90eXBlKSByZXR1cm4gMDsKICAgICAgICAgWWllbGRfdHlwZSA9IG1ha2VfdHlwZSgiWWllbGQiLCBleHByX3R5cGUsIFlpZWxkX2ZpZWxkcywgMSk7CiAgICAgICAgIGlmICghWWllbGRfdHlwZSkgcmV0dXJuIDA7CisgICAgICAgIFlpZWxkRnJvbV90eXBlID0gbWFrZV90eXBlKCJZaWVsZEZyb20iLCBleHByX3R5cGUsIFlpZWxkRnJvbV9maWVsZHMsIDEpOworICAgICAgICBpZiAoIVlpZWxkRnJvbV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgQ29tcGFyZV90eXBlID0gbWFrZV90eXBlKCJDb21wYXJlIiwgZXhwcl90eXBlLCBDb21wYXJlX2ZpZWxkcywgMyk7CiAgICAgICAgIGlmICghQ29tcGFyZV90eXBlKSByZXR1cm4gMDsKICAgICAgICAgQ2FsbF90eXBlID0gbWFrZV90eXBlKCJDYWxsIiwgZXhwcl90eXBlLCBDYWxsX2ZpZWxkcywgNSk7CkBAIC05NDksNiArMTA1Miw4IEBACiAgICAgICAgIGlmICgha2V5d29yZF90eXBlKSByZXR1cm4gMDsKICAgICAgICAgYWxpYXNfdHlwZSA9IG1ha2VfdHlwZSgiYWxpYXMiLCAmQVNUX3R5cGUsIGFsaWFzX2ZpZWxkcywgMik7CiAgICAgICAgIGlmICghYWxpYXNfdHlwZSkgcmV0dXJuIDA7CisgICAgICAgIHdpdGhpdGVtX3R5cGUgPSBtYWtlX3R5cGUoIndpdGhpdGVtIiwgJkFTVF90eXBlLCB3aXRoaXRlbV9maWVsZHMsIDIpOworICAgICAgICBpZiAoIXdpdGhpdGVtX3R5cGUpIHJldHVybiAwOwogICAgICAgICBpbml0aWFsaXplZCA9IDE7CiAgICAgICAgIHJldHVybiAxOwogfQpAQCAtOTcxLDYgKzEwNzYsNyBAQAogc3RhdGljIGludCBvYmoyYXN0X2FyZyhQeU9iamVjdCogb2JqLCBhcmdfdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpOwogc3RhdGljIGludCBvYmoyYXN0X2tleXdvcmQoUHlPYmplY3QqIG9iaiwga2V5d29yZF90eSogb3V0LCBQeUFyZW5hKiBhcmVuYSk7CiBzdGF0aWMgaW50IG9iajJhc3RfYWxpYXMoUHlPYmplY3QqIG9iaiwgYWxpYXNfdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpOworc3RhdGljIGludCBvYmoyYXN0X3dpdGhpdGVtKFB5T2JqZWN0KiBvYmosIHdpdGhpdGVtX3R5KiBvdXQsIFB5QXJlbmEqIGFyZW5hKTsKIAogbW9kX3R5CiBNb2R1bGUoYXNkbF9zZXEgKiBib2R5LCBQeUFyZW5hICphcmVuYSkKQEAgLTEyMzYsMjEgKzEzNDIsMTUgQEAKIH0KIAogc3RtdF90eQotV2l0aChleHByX3R5IGNvbnRleHRfZXhwciwgZXhwcl90eSBvcHRpb25hbF92YXJzLCBhc2RsX3NlcSAqIGJvZHksIGludCBsaW5lbm8sCi0gICAgIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK1dpdGgoYXNkbF9zZXEgKiBpdGVtcywgYXNkbF9zZXEgKiBib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYQorICAgICAqYXJlbmEpCiB7CiAgICAgICAgIHN0bXRfdHkgcDsKLSAgICAgICAgaWYgKCFjb250ZXh0X2V4cHIpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGNvbnRleHRfZXhwciBpcyByZXF1aXJlZCBmb3IgV2l0aCIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CiAgICAgICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CiAgICAgICAgIGlmICghcCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcC0+a2luZCA9IFdpdGhfa2luZDsKLSAgICAgICAgcC0+di5XaXRoLmNvbnRleHRfZXhwciA9IGNvbnRleHRfZXhwcjsKLSAgICAgICAgcC0+di5XaXRoLm9wdGlvbmFsX3ZhcnMgPSBvcHRpb25hbF92YXJzOworICAgICAgICBwLT52LldpdGguaXRlbXMgPSBpdGVtczsKICAgICAgICAgcC0+di5XaXRoLmJvZHkgPSBib2R5OwogICAgICAgICBwLT5saW5lbm8gPSBsaW5lbm87CiAgICAgICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OwpAQCAtMTI3MywzMyArMTM3MywxOCBAQAogfQogCiBzdG10X3R5Ci1UcnlFeGNlcHQoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGhhbmRsZXJzLCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50IGxpbmVubywKLSAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCitUcnkoYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIGhhbmRsZXJzLCBhc2RsX3NlcSAqIG9yZWxzZSwgYXNkbF9zZXEgKgorICAgIGZpbmFsYm9keSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgICAgICBzdG10X3R5IHA7CiAgICAgICAgIHAgPSAoc3RtdF90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CiAgICAgICAgIGlmICghcCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcC0+a2luZCA9IFRyeUV4Y2VwdF9raW5kOwotICAgICAgICBwLT52LlRyeUV4Y2VwdC5ib2R5ID0gYm9keTsKLSAgICAgICAgcC0+di5UcnlFeGNlcHQuaGFuZGxlcnMgPSBoYW5kbGVyczsKLSAgICAgICAgcC0+di5UcnlFeGNlcHQub3JlbHNlID0gb3JlbHNlOwotICAgICAgICBwLT5saW5lbm8gPSBsaW5lbm87Ci0gICAgICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OwotICAgICAgICByZXR1cm4gcDsKLX0KLQotc3RtdF90eQotVHJ5RmluYWxseShhc2RsX3NlcSAqIGJvZHksIGFzZGxfc2VxICogZmluYWxib2R5LCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwKLSAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCi17Ci0gICAgICAgIHN0bXRfdHkgcDsKLSAgICAgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKLSAgICAgICAgaWYgKCFwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwLT5raW5kID0gVHJ5RmluYWxseV9raW5kOwotICAgICAgICBwLT52LlRyeUZpbmFsbHkuYm9keSA9IGJvZHk7Ci0gICAgICAgIHAtPnYuVHJ5RmluYWxseS5maW5hbGJvZHkgPSBmaW5hbGJvZHk7CisgICAgICAgIHAtPmtpbmQgPSBUcnlfa2luZDsKKyAgICAgICAgcC0+di5UcnkuYm9keSA9IGJvZHk7CisgICAgICAgIHAtPnYuVHJ5LmhhbmRsZXJzID0gaGFuZGxlcnM7CisgICAgICAgIHAtPnYuVHJ5Lm9yZWxzZSA9IG9yZWxzZTsKKyAgICAgICAgcC0+di5UcnkuZmluYWxib2R5ID0gZmluYWxib2R5OwogICAgICAgICBwLT5saW5lbm8gPSBsaW5lbm87CiAgICAgICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OwogICAgICAgICByZXR1cm4gcDsKQEAgLTE3MTQsNiArMTc5OSwyMCBAQAogfQogCiBleHByX3R5CitZaWVsZEZyb20oZXhwcl90eSB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgICAgICBleHByX3R5IHA7CisgICAgICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcC0+a2luZCA9IFlpZWxkRnJvbV9raW5kOworICAgICAgICBwLT52LllpZWxkRnJvbS52YWx1ZSA9IHZhbHVlOworICAgICAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgICAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQ29tcGFyZShleHByX3R5IGxlZnQsIGFzZGxfaW50X3NlcSAqIG9wcywgYXNkbF9zZXEgKiBjb21wYXJhdG9ycywgaW50IGxpbmVubywKICAgICAgICAgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMTc5OCw3ICsxODk3LDcgQEAKIH0KIAogZXhwcl90eQotQnl0ZXMoc3RyaW5nIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKK0J5dGVzKGJ5dGVzIHMsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0LCBQeUFyZW5hICphcmVuYSkKIHsKICAgICAgICAgZXhwcl90eSBwOwogICAgICAgICBpZiAoIXMpIHsKQEAgLTIxNDYsNiArMjI0NSwyMyBAQAogICAgICAgICByZXR1cm4gcDsKIH0KIAord2l0aGl0ZW1fdHkKK3dpdGhpdGVtKGV4cHJfdHkgY29udGV4dF9leHByLCBleHByX3R5IG9wdGlvbmFsX3ZhcnMsIFB5QXJlbmEgKmFyZW5hKQoreworICAgICAgICB3aXRoaXRlbV90eSBwOworICAgICAgICBpZiAoIWNvbnRleHRfZXhwcikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgY29udGV4dF9leHByIGlzIHJlcXVpcmVkIGZvciB3aXRoaXRlbSIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHAgPSAod2l0aGl0ZW1fdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHAtPmNvbnRleHRfZXhwciA9IGNvbnRleHRfZXhwcjsKKyAgICAgICAgcC0+b3B0aW9uYWxfdmFycyA9IG9wdGlvbmFsX3ZhcnM7CisgICAgICAgIHJldHVybiBwOworfQorCiAKIFB5T2JqZWN0KgogYXN0Mm9ial9tb2Qodm9pZCogX28pCkBAIC0yMTYzLDcgKzIyNzksNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52Lk1vZHVsZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE3Miw3ICsyMjg4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JbnRlcmFjdGl2ZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE4MSw3ICsyMjk3LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5FeHByZXNzaW9uLmJvZHkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjE5MCw3ICsyMzA2LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5TdWl0ZS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjIxOCwyOSArMjMzNCwyOSBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkZ1bmN0aW9uRGVmLm5hbWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9hcmd1bWVudHMoby0+di5GdW5jdGlvbkRlZi5hcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkZ1bmN0aW9uRGVmLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5GdW5jdGlvbkRlZi5kZWNvcmF0b3JfbGlzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRlY29yYXRvcl9saXN0IiwgdmFsdWUpID09CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kZWNvcmF0b3JfbGlzdCwgdmFsdWUpID09CiAgICAgICAgICAgICAgICAgICAgIC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZ1bmN0aW9uRGVmLnJldHVybnMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInJldHVybnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9yZXR1cm5zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjI0OSwzOCArMjM2NSwzOCBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkNsYXNzRGVmLm5hbWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm5hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuYmFzZXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYmFzZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9iYXNlcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmtleXdvcmRzLCBhc3Qyb2JqX2tleXdvcmQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleXdvcmRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5d29yZHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DbGFzc0RlZi5zdGFyYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic3RhcmFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zdGFyYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNsYXNzRGVmLmt3YXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ2xhc3NEZWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkNsYXNzRGVmLmRlY29yYXRvcl9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZGVjb3JhdG9yX2xpc3QiLCB2YWx1ZSkgPT0KKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2RlY29yYXRvcl9saXN0LCB2YWx1ZSkgPT0KICAgICAgICAgICAgICAgICAgICAgLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwpAQCAtMjI5MCw3ICsyNDA2LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5SZXR1cm4udmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjk5LDcgKzI0MTUsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkRlbGV0ZS50YXJnZXRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMwOCwxMiArMjQyNCwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkFzc2lnbi50YXJnZXRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQXNzaWduLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjMyMiwxNyArMjQzOCwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF1Z0Fzc2lnbi50YXJnZXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRhcmdldCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfb3BlcmF0b3Ioby0+di5BdWdBc3NpZ24ub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5BdWdBc3NpZ24udmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzQxLDIyICsyNDU3LDIyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9yLnRhcmdldCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGFyZ2V0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRm9yLml0ZXIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIml0ZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9pdGVyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRm9yLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Gb3Iub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIzNjUsMTcgKzI0ODEsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5XaGlsZS50ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0ZXN0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGVzdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LldoaWxlLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5XaGlsZS5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3JlbHNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3JlbHNlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM4NCwzNyArMjUwMCwzMSBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmLnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSWYuYm9keSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYm9keSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LklmLm9yZWxzZSwgYXN0Mm9ial9zdG10KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJvcmVsc2UiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcmVsc2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2l0aF9raW5kOgogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFdpdGhfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuV2l0aC5jb250ZXh0X2V4cHIpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2l0aC5pdGVtcywgYXN0Mm9ial93aXRoaXRlbSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29udGV4dF9leHByIiwgdmFsdWUpID09IC0xKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LldpdGgub3B0aW9uYWxfdmFycyk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3B0aW9uYWxfdmFycyIsIHZhbHVlKSA9PQotICAgICAgICAgICAgICAgICAgICAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2l0ZW1zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuV2l0aC5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQyMyw0NiArMjUzMywzNiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlJhaXNlLmV4Yyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZXhjIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZXhjLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuUmFpc2UuY2F1c2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNhdXNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY2F1c2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHJ5RXhjZXB0X2tpbmQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoVHJ5RXhjZXB0X3R5cGUsIE5VTEwsIE5VTEwpOworICAgICAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KFRyeV90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlFeGNlcHQuYm9keSwgYXN0Mm9ial9zdG10KTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeS5ib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RXhjZXB0LmhhbmRsZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfZXhjZXB0aGFuZGxlcik7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnkuaGFuZGxlcnMsIGFzdDJvYmpfZXhjZXB0aGFuZGxlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiaGFuZGxlcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9oYW5kbGVycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlRyeUV4Y2VwdC5vcmVsc2UsIGFzdDJvYmpfc3RtdCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Ucnkub3JlbHNlLCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUcnlGaW5hbGx5X2tpbmQ6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoVHJ5RmluYWxseV90eXBlLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnlGaW5hbGx5LmJvZHksIGFzdDJvYmpfc3RtdCk7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5UcnkuZmluYWxib2R5LCBhc3Qyb2JqX3N0bXQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuVHJ5RmluYWxseS5maW5hbGJvZHksIGFzdDJvYmpfc3RtdCk7Ci0gICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZmluYWxib2R5IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZmluYWxib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ3MSwxMiArMjU3MSwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzc2VydC50ZXN0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0ZXN0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdGVzdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFzc2VydC5tc2cpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm1zZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX21zZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI0ODUsNyArMjU4NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuSW1wb3J0Lm5hbWVzLCBhc3Qyb2JqX2FsaWFzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ5NCwxNyArMjU5NCwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkltcG9ydEZyb20ubW9kdWxlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJtb2R1bGUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9tb2R1bGUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5JbXBvcnRGcm9tLm5hbWVzLCBhc3Qyb2JqX2FsaWFzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJuYW1lcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWVzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+di5JbXBvcnRGcm9tLmxldmVsKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsZXZlbCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xldmVsLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUxMyw3ICsyNjEzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5HbG9iYWwubmFtZXMsIGFzdDJvYmpfaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1MjIsNyArMjYyMiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTm9ubG9jYWwubmFtZXMsIGFzdDJvYmpfaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1MzEsNyArMjYzMSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRXhwci52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1NTAsMTIgKzI2NTAsMTIgQEAKICAgICAgICAgfQogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmxpbmVubyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsaW5lbm8iLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xpbmVubywgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5jb2xfb2Zmc2V0KTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImNvbF9vZmZzZXQiLCB2YWx1ZSkgPCAwKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbF9vZmZzZXQsIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0yNTgxLDEyICsyNjgxLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9ib29sb3Aoby0+di5Cb29sT3Aub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Cb29sT3AudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhbHVlcyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlcywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI1OTUsMTcgKzI2OTUsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5CaW5PcC5sZWZ0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJsZWZ0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGVmdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfb3BlcmF0b3Ioby0+di5CaW5PcC5vcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3AiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkJpbk9wLnJpZ2h0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJyaWdodCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3JpZ2h0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYxNCwxMiArMjcxNCwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfdW5hcnlvcChvLT52LlVuYXJ5T3Aub3ApOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3AsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5VbmFyeU9wLm9wZXJhbmQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9wZXJhbmQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9vcGVyYW5kLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjYyOCwxMiArMjcyOCwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfYXJndW1lbnRzKG8tPnYuTGFtYmRhLmFyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuTGFtYmRhLmJvZHkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImJvZHkiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9ib2R5LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY0MiwxNyArMjc0MiwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LklmRXhwLnRlc3QpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInRlc3QiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90ZXN0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuSWZFeHAuYm9keSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JZkV4cC5vcmVsc2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIm9yZWxzZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29yZWxzZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI2NjEsMTIgKzI3NjEsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EaWN0LmtleXMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia2V5cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5EaWN0LnZhbHVlcywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZXMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNjc1LDcgKzI3NzUsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlNldC5lbHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY4NCwxMyArMjc4NCwxMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52Lkxpc3RDb21wLmVsdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZWx0LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTGlzdENvbXAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjY5OSwxMyArMjc5OSwxMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNldENvbXAuZWx0KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJlbHQiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5TZXRDb21wLmdlbmVyYXRvcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0Mm9ial9jb21wcmVoZW5zaW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJnZW5lcmF0b3JzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZ2VuZXJhdG9ycywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI3MTQsMTggKzI4MTQsMTggQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5EaWN0Q29tcC5rZXkpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2tleSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkRpY3RDb21wLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuRGljdENvbXAuZ2VuZXJhdG9ycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Qyb2JqX2NvbXByZWhlbnNpb24pOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImdlbmVyYXRvcnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9nZW5lcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjczNCwxMyArMjgzNCwxMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkdlbmVyYXRvckV4cC5lbHQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkdlbmVyYXRvckV4cC5nZW5lcmF0b3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdDJvYmpfY29tcHJlaGVuc2lvbik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZ2VuZXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2dlbmVyYXRvcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yNzQ5LDcgKzI4NDksMTYgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5ZaWVsZC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhZaWVsZEZyb21fdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuWWllbGRGcm9tLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc1OCwyMyArMjg2NywyMyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNvbXBhcmUubGVmdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGVmdCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2xlZnQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4oby0+di5Db21wYXJlLm9wcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGksIG4gPSBhc2RsX3NlcV9MRU4oby0+di5Db21wYXJlLm9wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFB5TGlzdF9OZXcobik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IG47IGkrKykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X1NFVF9JVEVNKHZhbHVlLCBpLCBhc3Qyb2JqX2NtcG9wKChjbXBvcF90eSlhc2RsX3NlcV9HRVQoby0+di5Db21wYXJlLm9wcywgaSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAib3BzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfb3BzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuQ29tcGFyZS5jb21wYXJhdG9ycywgYXN0Mm9ial9leHByKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb21wYXJhdG9ycyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbXBhcmF0b3JzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjc4MywyNyArMjg5MiwyNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkNhbGwuZnVuYyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZnVuYyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Z1bmMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DYWxsLmFyZ3MsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5DYWxsLmtleXdvcmRzLCBhc3Qyb2JqX2tleXdvcmQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImtleXdvcmRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa2V5d29yZHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5DYWxsLnN0YXJhcmdzKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJzdGFyYXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0YXJhcmdzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQ2FsbC5rd2FyZ3MpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3YXJncyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3YXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4MTIsNyArMjkyMSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9vYmplY3Qoby0+di5OdW0ubik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yODIxLDE2ICsyOTMwLDE2IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9zdHJpbmcoby0+di5TdHIucyk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAicyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQnl0ZXNfa2luZDoKICAgICAgICAgICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhCeXRlc190eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX3N0cmluZyhvLT52LkJ5dGVzLnMpOworICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9ieXRlcyhvLT52LkJ5dGVzLnMpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg0MywxNyArMjk1MiwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkF0dHJpYnV0ZS52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkF0dHJpYnV0ZS5hdHRyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhdHRyIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXR0ciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcl9jb250ZXh0KG8tPnYuQXR0cmlidXRlLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg2MiwxNyArMjk3MSwxNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlN1YnNjcmlwdC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfc2xpY2Uoby0+di5TdWJzY3JpcHQuc2xpY2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInNsaWNlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfc2xpY2UsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LlN1YnNjcmlwdC5jdHgpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImN0eCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2N0eCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4ODEsMTIgKzI5OTAsMTIgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TdGFycmVkLnZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5TdGFycmVkLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjg5NSwxMiArMzAwNCwxMiBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52Lk5hbWUuaWQpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImlkIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWQsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52Lk5hbWUuY3R4KTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjdHgiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jdHgsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTA5LDEyICszMDE4LDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPnYuTGlzdC5lbHRzLCBhc3Qyb2JqX2V4cHIpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImVsdHMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9lbHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByX2NvbnRleHQoby0+di5MaXN0LmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkyMywyNCArMzAzMiwyNCBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LlR1cGxlLmVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiZWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2VsdHMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHJfY29udGV4dChvLT52LlR1cGxlLmN0eCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY3R4IiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY3R4LCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+bGluZW5vKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImxpbmVubyIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfbGluZW5vLCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPmNvbF9vZmZzZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiY29sX29mZnNldCIsIHZhbHVlKSA8IDApCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfY29sX29mZnNldCwgdmFsdWUpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTI5OTMsMTcgKzMxMDIsMTcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5TbGljZS5sb3dlcik7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibG93ZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9sb3dlciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LlNsaWNlLnVwcGVyKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ1cHBlciIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3VwcGVyLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuU2xpY2Uuc3RlcCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAic3RlcCIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3N0ZXAsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zMDEyLDcgKzMxMjEsNyBAQAogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT52LkV4dFNsaWNlLmRpbXMsIGFzdDJvYmpfc2xpY2UpOwogICAgICAgICAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImRpbXMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kaW1zLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzAyMSw3ICszMTMwLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+di5JbmRleC52YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFsdWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMxNjcsMTcgKzMyNzYsMTcgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT50YXJnZXQpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidGFyZ2V0IiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3RhcmdldCwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5pdGVyKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgIml0ZXIiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXRlciwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5pZnMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJpZnMiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaWZzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMjAzLDI5ICszMzEyLDI5IEBACiAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuRXhjZXB0SGFuZGxlci50eXBlKTsKICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ0eXBlIiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdHlwZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52LkV4Y2VwdEhhbmRsZXIubmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX25hbWUsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5FeGNlcHRIYW5kbGVyLmJvZHksIGFzdDJvYmpfc3RtdCk7CiAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYm9keSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2JvZHksIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2ludChvLT5saW5lbm8pOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibGluZW5vIiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9saW5lbm8sIHZhbHVlKSA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+Y29sX29mZnNldCk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJjb2xfb2Zmc2V0IiwgdmFsdWUpIDwgMCkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb2xfb2Zmc2V0LCB2YWx1ZSkgPCAwKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzI0OSw0MiArMzM1OCw0MiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9saXN0KG8tPmFyZ3MsIGFzdDJvYmpfYXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZ3MiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXJncywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT52YXJhcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAidmFyYXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhcmFyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52YXJhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgInZhcmFyZ2Fubm90YXRpb24iLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFyYXJnYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5rd29ubHlhcmdzLCBhc3Qyb2JqX2FyZyk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJrd29ubHlhcmdzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3b25seWFyZ3MsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+a3dhcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAia3dhcmciLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfa3dhcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+a3dhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3YXJnYW5ub3RhdGlvbiIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9rd2FyZ2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+ZGVmYXVsdHMsIGFzdDJvYmpfZXhwcik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJkZWZhdWx0cyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9kZWZhdWx0cywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfbGlzdChvLT5rd19kZWZhdWx0cywgYXN0Mm9ial9leHByKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImt3X2RlZmF1bHRzIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2t3X2RlZmF1bHRzLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzA4LDEyICszNDE3LDEyIEBACiAgICAgICAgIGlmICghcmVzdWx0KSByZXR1cm4gTlVMTDsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2lkZW50aWZpZXIoby0+YXJnKTsKICAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7Ci0gICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHJlc3VsdCwgImFyZyIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9hcmcsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+YW5ub3RhdGlvbik7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhbm5vdGF0aW9uIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2Fubm90YXRpb24sIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTMzMzcsMTIgKzM0NDYsMTIgQEAKICAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaWRlbnRpZmllcihvLT5hcmcpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAiYXJnIiwgdmFsdWUpID09IC0xKQorICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2FyZywgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52YWx1ZSk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJ2YWx1ZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZSwgdmFsdWUpID09IC0xKQogICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzM2NiwxMiArMzQ3NSw0MSBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPm5hbWUpOwogICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcocmVzdWx0LCAibmFtZSIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9uYW1lLCB2YWx1ZSkgPT0gLTEpCiAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXN0Mm9ial9pZGVudGlmaWVyKG8tPmFzbmFtZSk7CiAgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOwotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhyZXN1bHQsICJhc25hbWUiLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYXNuYW1lLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CitmYWlsZWQ6CisgICAgICAgIFB5X1hERUNSRUYodmFsdWUpOworICAgICAgICBQeV9YREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiBOVUxMOworfQorCitQeU9iamVjdCoKK2FzdDJvYmpfd2l0aGl0ZW0odm9pZCogX28pCit7CisgICAgICAgIHdpdGhpdGVtX3R5IG8gPSAod2l0aGl0ZW1fdHkpX287CisgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMLCAqdmFsdWUgPSBOVUxMOworICAgICAgICBpZiAoIW8pIHsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyh3aXRoaXRlbV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIHJldHVybiBOVUxMOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT5jb250ZXh0X2V4cHIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF9jb250ZXh0X2V4cHIsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2V4cHIoby0+b3B0aW9uYWxfdmFycyk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX29wdGlvbmFsX3ZhcnMsIHZhbHVlKSA9PSAtMSkKICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM0MDAsMTEgKzM1MzgsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIk1vZHVsZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM0MzYsMTEgKzM1NzQsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkludGVyYWN0aXZlIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzQ3Miw5ICszNjEwLDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmJvZHksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNDk1LDExICszNjMzLDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJTdWl0ZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM1NDQsOSArMzY4Miw5IEBACiAgICAgICAgICAgICAgICAgKm91dCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGluZW5vIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9saW5lbm8pOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmbGluZW5vLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM1NTYsOSArMzY5NCw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibGluZW5vXCIgbWlzc2luZyBmcm9tIHN0bXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0IikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb2xfb2Zmc2V0Iik7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbF9vZmZzZXQpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNTc5LDkgKzM3MTcsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKICAgICAgICAgICAgICAgICBleHByX3R5IHJldHVybnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJm5hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNTkxLDkgKzM3MjksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2FyZ3VtZW50cyh0bXAsICZhcmdzLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzYwMywxMSArMzc0MSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYXJnc1wiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZ1bmN0aW9uRGVmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzYyOCwxMSArMzc2NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBGdW5jdGlvbkRlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkZWNvcmF0b3JfbGlzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJGdW5jdGlvbkRlZiBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zNjUzLDkgKzM3OTEsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBtaXNzaW5nIGZyb20gRnVuY3Rpb25EZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJyZXR1cm5zIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3JldHVybnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJyZXR1cm5zIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcmV0dXJucyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnJldHVybnMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNjgyLDkgKzM4MjAsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBkZWNvcmF0b3JfbGlzdDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmbmFtZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM2OTQsMTEgKzM4MzIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm5hbWVcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJiYXNlcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9iYXNlcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYmFzZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9iYXNlcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJiYXNlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzcxOSwxMSArMzg1NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYmFzZXNcIiBtaXNzaW5nIGZyb20gQ2xhc3NEZWYiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXl3b3JkcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5d29yZHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXl3b3Jkcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJrZXl3b3Jkc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzc0NCw5ICszODgyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImtleXdvcmRzXCIgbWlzc2luZyBmcm9tIENsYXNzRGVmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RhcmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNzU1LDkgKzM4OTMsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zNzY2LDExICszOTA0LDExIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzc5MSwxMSArMzkyOSwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBDbGFzc0RlZiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImRlY29yYXRvcl9saXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJkZWNvcmF0b3JfbGlzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2RlY29yYXRvcl9saXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDbGFzc0RlZiBmaWVsZCBcImRlY29yYXRvcl9saXN0XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC0zODI4LDkgKzM5NjYsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhbHVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTM4NTAsMTEgKzM5ODgsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdGFyZ2V0czsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3RhcmdldHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRlbGV0ZSBmaWVsZCBcInRhcmdldHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTM4ODcsMTEgKzQwMjUsMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogdGFyZ2V0czsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGFyZ2V0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQXNzaWduIGZpZWxkIFwidGFyZ2V0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtMzkxMiw5ICs0MDUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldHNcIiBtaXNzaW5nIGZyb20gQXNzaWduIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTM3LDkgKzQwNzUsOSBAQAogICAgICAgICAgICAgICAgIG9wZXJhdG9yX3R5IG9wOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzk0OSw5ICs0MDg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBdWdBc3NpZ24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfb3BlcmF0b3IodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTYxLDkgKzQwOTksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BcIiBtaXNzaW5nIGZyb20gQXVnQXNzaWduIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC0zOTg3LDkgKzQxMjUsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0YXJnZXQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGFyZ2V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtMzk5OSw5ICs0MTM3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBGb3IiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJpdGVyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpdGVyIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJml0ZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MDExLDExICs0MTQ5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpdGVyXCIgbWlzc2luZyBmcm9tIEZvciIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYm9keSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2JvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkZvciBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQwMzYsMTEgKzQxNzQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gRm9yIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJGb3IgZmllbGQgXCJvcmVsc2VcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQwNzUsOSArNDIxMyw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRlc3QiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGVzdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInRlc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF90ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGVzdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQwODcsMTEgKzQyMjUsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gV2hpbGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJXaGlsZSBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQxMTIsMTEgKzQyNTAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gV2hpbGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldoaWxlIGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MTUwLDkgKzQyODgsOSBAQAogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBib2R5OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBvcmVsc2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0ZXN0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3Rlc3QpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0ZXN0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnRlc3QsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MTYyLDExICs0MzAwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0ZXN0XCIgbWlzc2luZyBmcm9tIElmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSWYgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC00MTg3LDExICs0MzI1LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIElmIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3JlbHNlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29yZWxzZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3JlbHNlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJZiBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDIyMSwzOCArNDM1OSwzOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBjb250ZXh0X2V4cHI7Ci0gICAgICAgICAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBpdGVtczsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImNvbnRleHRfZXhwciIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjb250ZXh0X2V4cHIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmY29udGV4dF9leHByLCBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiY29udGV4dF9leHByXCIgbWlzc2luZyBmcm9tIFdpdGgiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcHRpb25hbF92YXJzIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wdGlvbmFsX3ZhcnMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmb3B0aW9uYWxfdmFycywgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsX3ZhcnMgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZW1zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlbXMpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIldpdGggZmllbGQgXCJpdGVtc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGl0ZW1fdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfd2l0aGl0ZW0oUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoaXRlbXMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIml0ZW1zXCIgbWlzc2luZyBmcm9tIFdpdGgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiV2l0aCBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQyNzMsOCArNDQxMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJib2R5XCIgbWlzc2luZyBmcm9tIFdpdGgiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqb3V0ID0gV2l0aChjb250ZXh0X2V4cHIsIG9wdGlvbmFsX3ZhcnMsIGJvZHksIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgKm91dCA9IFdpdGgoaXRlbXMsIGJvZHksIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC00Mjg2LDkgKzQ0MjQsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZXhjOwogICAgICAgICAgICAgICAgIGV4cHJfdHkgY2F1c2U7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJleGMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZXhjKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZXhjIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZXhjKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZXhjLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDI5Nyw5ICs0NDM1LDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgZXhjID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY2F1c2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY2F1c2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjYXVzZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NhdXNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmY2F1c2UsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00MzEyLDcgKzQ0NTAsNyBAQAogICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilUcnlFeGNlcHRfdHlwZSk7CisgICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilUcnlfdHlwZSk7CiAgICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KQEAgLTQzMjAsMTUgKzQ0NTgsMTYgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogaGFuZGxlcnM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG9yZWxzZTsKKyAgICAgICAgICAgICAgICBhc2RsX3NlcSogZmluYWxib2R5OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5RXhjZXB0IGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwiYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDM0MywxNyArNDQ4MiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBUcnlFeGNlcHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaGFuZGxlcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaGFuZGxlcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImhhbmRsZXJzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaGFuZGxlcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUV4Y2VwdCBmaWVsZCBcImhhbmRsZXJzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJUcnkgZmllbGQgXCJoYW5kbGVyc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDM2OCwxNyArNDUwNywxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaGFuZGxlcnNcIiBtaXNzaW5nIGZyb20gVHJ5RXhjZXB0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJoYW5kbGVyc1wiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcmVsc2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3JlbHNlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUV4Y2VwdCBmaWVsZCBcIm9yZWxzZVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiVHJ5IGZpZWxkIFwib3JlbHNlXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CkBAIC00MzkzLDU1ICs0NTMyLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcmVsc2VcIiBtaXNzaW5nIGZyb20gVHJ5RXhjZXB0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcmVsc2VcIiBtaXNzaW5nIGZyb20gVHJ5Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKm91dCA9IFRyeUV4Y2VwdChib2R5LCBoYW5kbGVycywgb3JlbHNlLCBsaW5lbm8sIGNvbF9vZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVuYSk7Ci0gICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKVRyeUZpbmFsbHlfdHlwZSk7Ci0gICAgICAgIGlmIChpc2luc3RhbmNlID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcSogYm9keTsKLSAgICAgICAgICAgICAgICBhc2RsX3NlcSogZmluYWxib2R5OwotCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9maW5hbGJvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9maW5hbGJvZHkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUZpbmFsbHkgZmllbGQgXCJib2R5XCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImJvZHlcIiBtaXNzaW5nIGZyb20gVHJ5RmluYWxseSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImZpbmFsYm9keSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImZpbmFsYm9keSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeUZpbmFsbHkgZmllbGQgXCJmaW5hbGJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlRyeSBmaWVsZCBcImZpbmFsYm9keVwiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRSh0bXApOwpAQCAtNDQ1NiwxMCArNDU1NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZmluYWxib2R5XCIgbWlzc2luZyBmcm9tIFRyeUZpbmFsbHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImZpbmFsYm9keVwiIG1pc3NpbmcgZnJvbSBUcnkiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqb3V0ID0gVHJ5RmluYWxseShib2R5LCBmaW5hbGJvZHksIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAgICAgICAgICpvdXQgPSBUcnkoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgZmluYWxib2R5LCBsaW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfb2Zmc2V0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KQEAgLTQ0NzEsOSArNDU3Myw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB0ZXN0OwogICAgICAgICAgICAgICAgIGV4cHJfdHkgbXNnOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDQ4Myw5ICs0NTg1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gQXNzZXJ0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibXNnIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX21zZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm1zZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX21zZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJm1zZywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ1MDUsMTEgKzQ2MDcsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiSW1wb3J0IGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ1NDMsOSArNDY0NSw5IEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIG5hbWVzOwogICAgICAgICAgICAgICAgIGludCBsZXZlbDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm1vZHVsZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9tb2R1bGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJtb2R1bGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9tb2R1bGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZtb2R1bGUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NTU0LDExICs0NjU2LDExIEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm5hbWVzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX25hbWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJuYW1lcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJJbXBvcnRGcm9tIGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ1NzksOSArNDY4MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJuYW1lc1wiIG1pc3NpbmcgZnJvbSBJbXBvcnRGcm9tIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGV2ZWwiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGV2ZWwpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsZXZlbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xldmVsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZsZXZlbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ2MDIsMTEgKzQ3MDQsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiR2xvYmFsIGZpZWxkIFwibmFtZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTQ2MzgsMTEgKzQ3NDAsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogbmFtZXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJuYW1lcyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTm9ubG9jYWwgZmllbGQgXCJuYW1lc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDY3NCw5ICs0Nzc2LDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NzQwLDkgKzQ4NDIsOSBAQAogICAgICAgICAgICAgICAgICpvdXQgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsaW5lbm8iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxpbmVubywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00NzUyLDkgKzQ4NTQsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxpbmVub1wiIG1pc3NpbmcgZnJvbSBleHByIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDc3Miw5ICs0ODc0LDkgQEAKICAgICAgICAgICAgICAgICBib29sb3BfdHkgb3A7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9wIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3AiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9ib29sb3AodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00Nzg0LDExICs0ODg2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBCb29sT3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkJvb2xPcCBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDgyMiw5ICs0OTI0LDkgQEAKICAgICAgICAgICAgICAgICBvcGVyYXRvcl90eSBvcDsKICAgICAgICAgICAgICAgICBleHByX3R5IHJpZ2h0OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibGVmdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9sZWZ0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibGVmdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xlZnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZsZWZ0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDgzNCw5ICs0OTM2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxlZnRcIiBtaXNzaW5nIGZyb20gQmluT3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfb3BlcmF0b3IodG1wLCAmb3AsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00ODQ2LDkgKzQ5NDgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwib3BcIiBtaXNzaW5nIGZyb20gQmluT3AiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJyaWdodCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9yaWdodCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInJpZ2h0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfcmlnaHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZyaWdodCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4NzAsOSArNDk3Miw5IEBACiAgICAgICAgICAgICAgICAgdW5hcnlvcF90eSBvcDsKICAgICAgICAgICAgICAgICBleHByX3R5IG9wZXJhbmQ7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIm9wIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfdW5hcnlvcCh0bXAsICZvcCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ4ODIsOSArNDk4NCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJvcFwiIG1pc3NpbmcgZnJvbSBVbmFyeU9wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAib3BlcmFuZCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcGVyYW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAib3BlcmFuZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX29wZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcGVyYW5kLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDkwNiw5ICs1MDA4LDkgQEAKICAgICAgICAgICAgICAgICBhcmd1bWVudHNfdHkgYXJnczsKICAgICAgICAgICAgICAgICBleHByX3R5IGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJhcmdzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9hcmd1bWVudHModG1wLCAmYXJncywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5MTgsOSArNTAyMCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIExhbWJkYSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImJvZHkiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYm9keSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImJvZHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9ib2R5KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmYm9keSwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTQ5NDMsOSArNTA0NSw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBib2R5OwogICAgICAgICAgICAgICAgIGV4cHJfdHkgb3JlbHNlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90ZXN0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidGVzdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3Rlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0ZXN0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNDk1NSw5ICs1MDU3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRlc3RcIiBtaXNzaW5nIGZyb20gSWZFeHAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJib2R5IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2JvZHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmJvZHksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTY3LDkgKzUwNjksOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYm9keVwiIG1pc3NpbmcgZnJvbSBJZkV4cCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIm9yZWxzZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcmVsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcmVsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZvcmVsc2UsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC00OTkxLDExICs1MDkzLDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGtleXM7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIHZhbHVlczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa2V5cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia2V5cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRpY3QgZmllbGQgXCJrZXlzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MDE2LDExICs1MTE4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXlzXCIgbWlzc2luZyBmcm9tIERpY3QiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRpY3QgZmllbGQgXCJ2YWx1ZXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUwNTIsMTEgKzUxNTQsMTEgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZWx0czsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlNldCBmaWVsZCBcImVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUwODksOSArNTE5MSw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQ7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGdlbmVyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJlbHQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmZWx0LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTEwMSwxMSArNTIwMywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZWx0XCIgbWlzc2luZyBmcm9tIExpc3RDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTGlzdENvbXAgZmllbGQgXCJnZW5lcmF0b3JzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC01MTM4LDkgKzUyNDAsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0OwogICAgICAgICAgICAgICAgIGFzZGxfc2VxKiBnZW5lcmF0b3JzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2VsdCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImVsdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmVsdCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTUxNTAsMTEgKzUyNTIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdFwiIG1pc3NpbmcgZnJvbSBTZXRDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiU2V0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUxODgsOSArNTI5MCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rZXkpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrZXksIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MjAwLDkgKzUzMDIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwia2V5XCIgbWlzc2luZyBmcm9tIERpY3RDb21wIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MjEyLDExICs1MzE0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ2YWx1ZVwiIG1pc3NpbmcgZnJvbSBEaWN0Q29tcCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImdlbmVyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2dlbmVyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkRpY3RDb21wIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTI1MCw5ICs1MzUyLDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IGVsdDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZ2VuZXJhdG9yczsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9lbHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZlbHQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MjYyLDExICs1MzY0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRcIiBtaXNzaW5nIGZyb20gR2VuZXJhdG9yRXhwIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZ2VuZXJhdG9ycyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9nZW5lcmF0b3JzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJnZW5lcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZ2VuZXJhdG9ycyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiR2VuZXJhdG9yRXhwIGZpZWxkIFwiZ2VuZXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTI5OCw5ICs1NDAwLDkgQEAKICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MzEzLDYgKzU0MTUsMjggQEAKICAgICAgICAgICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQorICAgICAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopWWllbGRGcm9tX3R5cGUpOworICAgICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKKworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpvdXQgPSBZaWVsZEZyb20odmFsdWUsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilDb21wYXJlX3R5cGUpOwogICAgICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtNTMyMiw5ICs1NDQ2LDkgQEAKICAgICAgICAgICAgICAgICBhc2RsX2ludF9zZXEqIG9wczsKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogY29tcGFyYXRvcnM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJsZWZ0IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2xlZnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsZWZ0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGVmdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmxlZnQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01MzM0LDExICs1NDU4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJsZWZ0XCIgbWlzc2luZyBmcm9tIENvbXBhcmUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJvcHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfb3BzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJvcHMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9vcHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNvbXBhcmUgZmllbGQgXCJvcHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTUzNTksMTEgKzU0ODMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcIm9wc1wiIG1pc3NpbmcgZnJvbSBDb21wYXJlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29tcGFyYXRvcnMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29tcGFyYXRvcnMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImNvbXBhcmF0b3JzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY29tcGFyYXRvcnMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkNvbXBhcmUgZmllbGQgXCJjb21wYXJhdG9yc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTQwMCw5ICs1NTI0LDkgQEAKICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzOwogICAgICAgICAgICAgICAgIGV4cHJfdHkga3dhcmdzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZnVuYyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9mdW5jKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZnVuYyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2Z1bmMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZmdW5jLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTQxMiwxMSArNTUzNiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZnVuY1wiIG1pc3NpbmcgZnJvbSBDYWxsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hcmdzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmdzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiQ2FsbCBmaWVsZCBcImFyZ3NcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU0MzcsMTEgKzU1NjEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImFyZ3NcIiBtaXNzaW5nIGZyb20gQ2FsbCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImtleXdvcmRzIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrZXl3b3JkcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2tleXdvcmRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJDYWxsIGZpZWxkIFwia2V5d29yZHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU0NjIsOSArNTU4Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrZXl3b3Jkc1wiIG1pc3NpbmcgZnJvbSBDYWxsIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic3RhcmFyZ3MiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc3RhcmFyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzdGFyYXJncyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3N0YXJhcmdzKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmc3RhcmFyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NDczLDkgKzU1OTcsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJncyA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJncyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZ3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9rd2FyZ3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ3MsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NDk2LDkgKzU2MjAsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIG9iamVjdCBuOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibiIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX24pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfb2JqZWN0KHRtcCwgJm4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NTE5LDkgKzU2NDMsOSBAQAogICAgICAgICBpZiAoaXNpbnN0YW5jZSkgewogICAgICAgICAgICAgICAgIHN0cmluZyBzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAicyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RyaW5nKHRtcCwgJnMsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NTQwLDEzICs1NjY0LDEzIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICAgICBzdHJpbmcgczsKKyAgICAgICAgICAgICAgICBieXRlcyBzOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAicyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAicyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RyaW5nKHRtcCwgJnMsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYnl0ZXModG1wLCAmcywgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC01NTc3LDkgKzU3MDEsOSBAQAogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgYXR0cjsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NTg5LDkgKzU3MTMsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gQXR0cmlidXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXR0ciIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9hdHRyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYXR0ciIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2F0dHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhdHRyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTYwMSw5ICs1NzI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImF0dHJcIiBtaXNzaW5nIGZyb20gQXR0cmlidXRlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY3R4IikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2N0eCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImN0eCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2N0eCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByX2NvbnRleHQodG1wLCAmY3R4LCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTYyNiw5ICs1NzUwLDkgQEAKICAgICAgICAgICAgICAgICBzbGljZV90eSBzbGljZTsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NjM4LDkgKzU3NjIsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gU3Vic2NyaXB0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAic2xpY2UiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfc2xpY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzbGljZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3NsaWNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3NsaWNlKHRtcCwgJnNsaWNlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTY1MCw5ICs1Nzc0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInNsaWNlXCIgbWlzc2luZyBmcm9tIFN1YnNjcmlwdCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU2NzQsOSArNTc5OCw5IEBACiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAidmFsdWUiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YWx1ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01Njg2LDkgKzU4MTAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gU3RhcnJlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU3MTAsOSArNTgzNCw5IEBACiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBpZDsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaWQiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfaWQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIodG1wLCAmaWQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01NzIyLDkgKzU4NDYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaWRcIiBtaXNzaW5nIGZyb20gTmFtZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImN0eCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9jdHgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJjdHgiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jdHgpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcl9jb250ZXh0KHRtcCwgJmN0eCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTU3NDYsMTEgKzU4NzAsMTEgQEAKICAgICAgICAgICAgICAgICBhc2RsX3NlcSogZWx0czsKICAgICAgICAgICAgICAgICBleHByX2NvbnRleHRfdHkgY3R4OwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZWx0cyIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9lbHRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJlbHRzIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZWx0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiTGlzdCBmaWVsZCBcImVsdHNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTU3NzEsOSArNTg5NSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJlbHRzXCIgbWlzc2luZyBmcm9tIExpc3QiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01Nzk1LDExICs1OTE5LDExIEBACiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGVsdHM7CiAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5IGN0eDsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImVsdHMiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfZWx0cykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZWx0cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2VsdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIlR1cGxlIGZpZWxkIFwiZWx0c1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNTgyMCw5ICs1OTQ0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImVsdHNcIiBtaXNzaW5nIGZyb20gVHVwbGUiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJjdHgiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY3R4KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY3R4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfY3R4KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHJfY29udGV4dCh0bXAsICZjdHgsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTIxLDkgKzYwNDUsOSBAQAogICAgICAgICAgICAgICAgIGV4cHJfdHkgdXBwZXI7CiAgICAgICAgICAgICAgICAgZXhwcl90eSBzdGVwOwogCi0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibG93ZXIiKSkgeworICAgICAgICAgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbG93ZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsb3dlciIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2xvd2VyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmbG93ZXIsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTMyLDkgKzYwNTYsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsb3dlciA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInVwcGVyIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3VwcGVyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidXBwZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF91cHBlcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnVwcGVyLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNTk0Myw5ICs2MDY3LDkgQEAKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgdXBwZXIgPSBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJzdGVwIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3N0ZXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJzdGVwIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfc3RlcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnN0ZXAsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC01OTY1LDExICs2MDg5LDExIEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGRpbXM7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJkaW1zIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RpbXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImRpbXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9kaW1zKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJFeHRTbGljZSBmaWVsZCBcImRpbXNcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTYwMDEsOSArNjEyNSw5IEBACiAgICAgICAgIGlmIChpc2luc3RhbmNlKSB7CiAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKIAotICAgICAgICAgICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF92YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjI5Niw5ICs2NDIwLDkgQEAKICAgICAgICAgZXhwcl90eSBpdGVyOwogICAgICAgICBhc2RsX3NlcSogaWZzOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInRhcmdldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0YXJnZXQiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ0YXJnZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjMwOCw5ICs2NDMyLDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJ0YXJnZXRcIiBtaXNzaW5nIGZyb20gY29tcHJlaGVuc2lvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2l0ZXIpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgIml0ZXIiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaXRlcik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmaXRlciwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02MzIwLDExICs2NDQ0LDExIEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaXRlclwiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiaWZzIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pZnMpKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGk7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJpZnMiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfaWZzKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIGlmICghUHlMaXN0X0NoZWNrKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJjb21wcmVoZW5zaW9uIGZpZWxkIFwiaWZzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02MzY1LDkgKzY0ODksOSBAQAogICAgICAgICAgICAgICAgICpvdXQgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImxpbmVubyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJsaW5lbm8iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfbGluZW5vKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmxpbmVubywgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02Mzc3LDkgKzY1MDEsOSBAQAogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcImxpbmVub1wiIG1pc3NpbmcgZnJvbSBleGNlcHRoYW5kbGVyIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29sX29mZnNldCkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiY29sX29mZnNldCIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb2xfb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaW50KHRtcCwgJmNvbF9vZmZzZXQsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjM5OCw5ICs2NTIyLDkgQEAKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIG5hbWU7CiAgICAgICAgICAgICAgICAgYXNkbF9zZXEqIGJvZHk7CiAKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfSGFzQXR0clN0cmluZyhvYmosICJ0eXBlIikpIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3R5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ0eXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdHlwZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnR5cGUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NDA5LDkgKzY1MzMsOSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX25hbWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjQyMCwxMSArNjU0NCwxMSBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gTlVMTDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYm9keSIpKSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9ib2R5KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlczsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJib2R5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYm9keSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiRXhjZXB0SGFuZGxlciBmaWVsZCBcImJvZHlcIiBtdXN0IGJlIGEgbGlzdCwgbm90IGEgJS4yMDBzIiwgdG1wLT5vYl90eXBlLT50cF9uYW1lKTsKQEAgLTY0NzAsMTEgKzY1OTQsMTEgQEAKICAgICAgICAgYXNkbF9zZXEqIGRlZmF1bHRzOwogICAgICAgICBhc2RsX3NlcSoga3dfZGVmYXVsdHM7CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYXJncyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJncykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImFyZ3MiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwiYXJnc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjQ5NSw5ICs2NjE5LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhcmFyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJ2YXJhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZ2YXJhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjUwNiw5ICs2NjMwLDkgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXJhcmcgPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhcmFyZ2Fubm90YXRpb24iKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3ZhcmFyZ2Fubm90YXRpb24pKSB7CiAgICAgICAgICAgICAgICAgaW50IHJlczsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgInZhcmFyZ2Fubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFyYXJnYW5ub3RhdGlvbik7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFyYXJnYW5ub3RhdGlvbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CkBAIC02NTE3LDExICs2NjQxLDExIEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdmFyYXJnYW5ub3RhdGlvbiA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dvbmx5YXJncyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dvbmx5YXJncykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgICAgICAgICB0bXAgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG9iaiwgImt3b25seWFyZ3MiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dvbmx5YXJncyk7CiAgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAiYXJndW1lbnRzIGZpZWxkIFwia3dvbmx5YXJnc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNjU0Miw5ICs2NjY2LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJrd29ubHlhcmdzXCIgbWlzc2luZyBmcm9tIGFyZ3VtZW50cyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJnIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9rd2FyZykpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmcpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKHRtcCwgJmt3YXJnLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY1NTMsOSArNjY3Nyw5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAga3dhcmcgPSBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImt3YXJnYW5ub3RhdGlvbiIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfa3dhcmdhbm5vdGF0aW9uKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJrd2FyZ2Fubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dhcmdhbm5vdGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZrd2FyZ2Fubm90YXRpb24sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjU2NCwxMSArNjY4OCwxMSBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGt3YXJnYW5ub3RhdGlvbiA9IE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiZGVmYXVsdHMiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2RlZmF1bHRzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiZGVmYXVsdHMiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZGVmYXVsdHMpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImRlZmF1bHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NTg5LDExICs2NzEzLDExIEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiZGVmYXVsdHNcIiBtaXNzaW5nIGZyb20gYXJndW1lbnRzIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAia3dfZGVmYXVsdHMiKSkgeworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX2t3X2RlZmF1bHRzKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAia3dfZGVmYXVsdHMiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfa3dfZGVmYXVsdHMpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUxpc3RfQ2hlY2sodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImFyZ3VtZW50cyBmaWVsZCBcImt3X2RlZmF1bHRzXCIgbXVzdCBiZSBhIGxpc3QsIG5vdCBhICUuMjAwcyIsIHRtcC0+b2JfdHlwZS0+dHBfbmFtZSk7CkBAIC02NjI5LDkgKzY3NTMsOSBAQAogICAgICAgICBpZGVudGlmaWVyIGFyZzsKICAgICAgICAgZXhwcl90eSBhbm5vdGF0aW9uOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjY0MSw5ICs2NzY1LDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdcIiBtaXNzaW5nIGZyb20gYXJnIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAiYW5ub3RhdGlvbiIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbikpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAiYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9hbm5vdGF0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZhbm5vdGF0aW9uLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY2NjYsOSArNjc5MCw5IEBACiAgICAgICAgIGlkZW50aWZpZXIgYXJnOwogICAgICAgICBleHByX3R5IHZhbHVlOwogCi0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFyZyIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXJnKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhcmciKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXJnKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhcmcsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjY3OCw5ICs2ODAyLDkgQEAKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJhcmdcIiBtaXNzaW5nIGZyb20ga2V5d29yZCIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgInZhbHVlIikpIHsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAidmFsdWUiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJnZhbHVlLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY3MDQsOSArNjgyOCw5IEBACiAgICAgICAgIGlkZW50aWZpZXIgbmFtZTsKICAgICAgICAgaWRlbnRpZmllciBhc25hbWU7CiAKLSAgICAgICAgaWYgKFB5T2JqZWN0X0hhc0F0dHJTdHJpbmcob2JqLCAibmFtZSIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfbmFtZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgcmVzOwotICAgICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob2JqLCAibmFtZSIpOworICAgICAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZuYW1lLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKQEAgLTY3MTYsOSArNjg0MCw5IEBACiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwibmFtZVwiIG1pc3NpbmcgZnJvbSBhbGlhcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG9iaiwgImFzbmFtZSIpKSB7CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYXNuYW1lKSkgewogICAgICAgICAgICAgICAgIGludCByZXM7Ci0gICAgICAgICAgICAgICAgdG1wID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvYmosICJhc25hbWUiKTsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYXNuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfaWRlbnRpZmllcih0bXAsICZhc25hbWUsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwpAQCAtNjczNCw2ICs2ODU4LDQzIEBACiAgICAgICAgIHJldHVybiAxOwogfQogCitpbnQKK29iajJhc3Rfd2l0aGl0ZW0oUHlPYmplY3QqIG9iaiwgd2l0aGl0ZW1fdHkqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgICAgIFB5T2JqZWN0KiB0bXAgPSBOVUxMOworICAgICAgICBleHByX3R5IGNvbnRleHRfZXhwcjsKKyAgICAgICAgZXhwcl90eSBvcHRpb25hbF92YXJzOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfY29udGV4dF9leHByKSkgeworICAgICAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2NvbnRleHRfZXhwcik7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmY29udGV4dF9leHByLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJjb250ZXh0X2V4cHJcIiBtaXNzaW5nIGZyb20gd2l0aGl0ZW0iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX29wdGlvbmFsX3ZhcnMpKSB7CisgICAgICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfb3B0aW9uYWxfdmFycyk7CisgICAgICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmb3B0aW9uYWxfdmFycywgYXJlbmEpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3B0aW9uYWxfdmFycyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IHdpdGhpdGVtKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgYXJlbmEpOworICAgICAgICByZXR1cm4gMDsKK2ZhaWxlZDoKKyAgICAgICAgUHlfWERFQ1JFRih0bXApOworICAgICAgICByZXR1cm4gMTsKK30KKwogCiBzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9hc3Rtb2R1bGUgPSB7CiAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgIl9hc3QiCkBAIC02NzUwLDggKzY5MTEsNiBAQAogICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJQeUNGX09OTFlfQVNUIiwgUHlDRl9PTkxZX0FTVCkgPCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQobSwgIl9fdmVyc2lvbl9fIiwgIjgyMTYzIikgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIm1vZCIsIChQeU9iamVjdCopbW9kX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOwogICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIk1vZHVsZSIsIChQeU9iamVjdCopTW9kdWxlX3R5cGUpIDwgMCkKQEAgLTY3ODUsMTAgKzY5NDQsOCBAQAogICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJSYWlzZSIsIChQeU9iamVjdCopUmFpc2VfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgICAgIE5VTEw7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5RXhjZXB0IiwgKFB5T2JqZWN0KilUcnlFeGNlcHRfdHlwZSkgPAotICAgICAgICAgICAgMCkgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiVHJ5RmluYWxseSIsIChQeU9iamVjdCopVHJ5RmluYWxseV90eXBlKSA8Ci0gICAgICAgICAgICAwKSByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJUcnkiLCAoUHlPYmplY3QqKVRyeV90eXBlKSA8IDApIHJldHVybgorICAgICAgICAgICAgTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBc3NlcnQiLCAoUHlPYmplY3QqKUFzc2VydF90eXBlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJbXBvcnQiLCAoUHlPYmplY3QqKUltcG9ydF90eXBlKSA8IDApCkBAIC02ODMzLDYgKzY5OTAsOCBAQAogICAgICAgICAgICAgKFB5T2JqZWN0KilHZW5lcmF0b3JFeHBfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJZaWVsZCIsIChQeU9iamVjdCopWWllbGRfdHlwZSkgPCAwKSByZXR1cm4KICAgICAgICAgICAgIE5VTEw7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiWWllbGRGcm9tIiwgKFB5T2JqZWN0KilZaWVsZEZyb21fdHlwZSkgPAorICAgICAgICAgICAgMCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ29tcGFyZSIsIChQeU9iamVjdCopQ29tcGFyZV90eXBlKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDYWxsIiwgKFB5T2JqZWN0KilDYWxsX3R5cGUpIDwgMCkgcmV0dXJuCkBAIC02OTUxLDYgKzcxMTAsOCBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiYWxpYXMiLCAoUHlPYmplY3QqKWFsaWFzX3R5cGUpIDwgMCkgcmV0dXJuCiAgICAgICAgICAgICBOVUxMOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIndpdGhpdGVtIiwgKFB5T2JqZWN0Kil3aXRoaXRlbV90eXBlKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIG07CiB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9fd2FybmluZ3MuYyBiL1B5dGhvbi9fd2FybmluZ3MuYwppbmRleCBjMTJkYjQ0Li5mMzNlNDc3IDEwMDY0NAotLS0gYS9QeXRob24vX3dhcm5pbmdzLmMKKysrIGIvUHl0aG9uL193YXJuaW5ncy5jCkBAIC0xOCwxMSArMTgsMTIgQEAKIGNoZWNrX21hdGNoZWQoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZykKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKG1hdGNoKTsKICAgICBpbnQgcmM7CiAKICAgICBpZiAob2JqID09IFB5X05vbmUpCiAgICAgICAgIHJldHVybiAxOwotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2Qob2JqLCAibWF0Y2giLCAiTyIsIGFyZyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChvYmosICZQeUlkX21hdGNoLCAiTyIsIGFyZyk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKQEAgLTIwMiwxMyArMjAzLDEzIEBACiAKICAgICBtb2Rfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZyhmaWxlbmFtZSk7CiAgICAgaWYgKG1vZF9zdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKGZpbGVuYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgbGVuID0gUHlVbmljb2RlX0dldExlbmd0aChmaWxlbmFtZSk7CiAgICAgaWYgKGxlbiA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChsZW4gPj0gMyAmJgogICAgICAgICBzdHJuY21wKG1vZF9zdHIgKyAobGVuIC0gMyksICIucHkiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1vZHVsZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZShtb2Rfc3RyLCBsZW4tMyk7CisgICAgICAgIG1vZHVsZSA9IFB5VW5pY29kZV9TdWJzdHJpbmcoZmlsZW5hbWUsIDAsIGxlbi0zKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIG1vZHVsZSA9IGZpbGVuYW1lOwpAQCAtMjQ2LDEwICsyNDcsMTEgQEAKICAgICBQeU9iamVjdCAqZl9zdGRlcnI7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgY2hhciBsaW5lbm9fc3RyWzEyOF07CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOwogCiAgICAgUHlPU19zbnByaW50ZihsaW5lbm9fc3RyLCBzaXplb2YobGluZW5vX3N0ciksICI6JWQ6ICIsIGxpbmVubyk7CiAKLSAgICBuYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjYXRlZ29yeSwgIl9fbmFtZV9fIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2F0ZWdvcnksICZQeUlkX19fbmFtZV9fKTsKICAgICBpZiAobmFtZSA9PSBOVUxMKSAgLyogWFhYIENhbiBhbiBvYmplY3QgbGFjayBhICdfX25hbWVfXycgYXR0cmlidXRlPyAqLwogICAgICAgICByZXR1cm47CiAKQEAgLTQwOSwxMCArNDExLDEwIEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKIAotICAgICAgICAgICAgaWYgKCFQeU1ldGhvZF9DaGVjayhzaG93X2Z4bikgJiYgIVB5RnVuY3Rpb25fQ2hlY2soc2hvd19meG4pKSB7CisgICAgICAgICAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soc2hvd19meG4pKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndhcm5pbmdzLnNob3d3YXJuaW5nKCkgbXVzdCBiZSBzZXQgdG8gYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiBvciBtZXRob2QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIik7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKICAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgICAgICAgICB9CkBAIC00OTcsMTggKzQ5OSwyOCBAQAogICAgIC8qIFNldHVwIGZpbGVuYW1lLiAqLwogICAgICpmaWxlbmFtZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGdsb2JhbHMsICJfX2ZpbGVfXyIpOwogICAgIGlmICgqZmlsZW5hbWUgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soKmZpbGVuYW1lKSkgewotICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5VW5pY29kZV9HZXRTaXplKCpmaWxlbmFtZSk7Ci0gICAgICAgIFB5X1VOSUNPREUgKnVuaWNvZGUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSgqZmlsZW5hbWUpOworICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CiAKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWSgqZmlsZW5hbWUpKQorICAgICAgICAgICAgZ290byBoYW5kbGVfZXJyb3I7CisKKyAgICAgICAgbGVuID0gUHlVbmljb2RlX0dldExlbmd0aCgqZmlsZW5hbWUpOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQoKmZpbGVuYW1lKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKCpmaWxlbmFtZSk7CisKKyNkZWZpbmUgYXNjaWlfbG93ZXIoYykgKChjIDw9IDEyNykgPyBQeV9UT0xPV0VSKGMpIDogMCkKICAgICAgICAgLyogaWYgZmlsZW5hbWUubG93ZXIoKS5lbmRzd2l0aCgoIi5weWMiLCAiLnB5byIpKTogKi8KICAgICAgICAgaWYgKGxlbiA+PSA0ICYmCi0gICAgICAgICAgICB1bmljb2RlW2xlbi00XSA9PSAnLicgJiYKLSAgICAgICAgICAgIFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0zXSkgPT0gJ3AnICYmCi0gICAgICAgICAgICBQeV9VTklDT0RFX1RPTE9XRVIodW5pY29kZVtsZW4tMl0pID09ICd5JyAmJgotICAgICAgICAgICAgKFB5X1VOSUNPREVfVE9MT1dFUih1bmljb2RlW2xlbi0xXSkgPT0gJ2MnIHx8Ci0gICAgICAgICAgICAgICAgUHlfVU5JQ09ERV9UT0xPV0VSKHVuaWNvZGVbbGVuLTFdKSA9PSAnbycpKQorICAgICAgICAgICAgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTQpID09ICcuJyAmJgorICAgICAgICAgICAgYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTMpKSA9PSAncCcgJiYKKyAgICAgICAgICAgIGFzY2lpX2xvd2VyKFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGxlbi0yKSkgPT0gJ3knICYmCisgICAgICAgICAgICAoYXNjaWlfbG93ZXIoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgbGVuLTEpKSA9PSAnYycgfHwKKyAgICAgICAgICAgICAgICBhc2NpaV9sb3dlcihQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBsZW4tMSkpID09ICdvJykpCiAgICAgICAgIHsKLSAgICAgICAgICAgICpmaWxlbmFtZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZSh1bmljb2RlLCBsZW4tMSk7CisgICAgICAgICAgICAqZmlsZW5hbWUgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKCpmaWxlbmFtZSwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoKmZpbGVuYW1lKS0xKTsKICAgICAgICAgICAgIGlmICgqZmlsZW5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKICAgICAgICAgfQpAQCAtNjQzLDggKzY1NSw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZV9nbG9iYWxzKSB7Ci0gICAgICAgIHN0YXRpYyBQeU9iamVjdCAqZ2V0X3NvdXJjZV9uYW1lID0gTlVMTDsKLSAgICAgICAgc3RhdGljIFB5T2JqZWN0ICpzcGxpdGxpbmVzX25hbWUgPSBOVUxMOworICAgICAgICBfUHlfSURFTlRJRklFUihnZXRfc291cmNlKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoc3BsaXRsaW5lcyk7CisgICAgICAgIFB5T2JqZWN0ICp0bXA7CiAgICAgICAgIFB5T2JqZWN0ICpsb2FkZXI7CiAgICAgICAgIFB5T2JqZWN0ICptb2R1bGVfbmFtZTsKICAgICAgICAgUHlPYmplY3QgKnNvdXJjZTsKQEAgLTY1MiwxNiArNjY1LDEwIEBACiAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2VfbGluZTsKICAgICAgICAgUHlPYmplY3QgKnJldHVybmVkOwogCi0gICAgICAgIGlmIChnZXRfc291cmNlX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgZ2V0X3NvdXJjZV9uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoImdldF9zb3VyY2UiKTsKLSAgICAgICAgICAgIGlmICghZ2V0X3NvdXJjZV9uYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzcGxpdGxpbmVzX25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgc3BsaXRsaW5lc19uYW1lID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoInNwbGl0bGluZXMiKTsKLSAgICAgICAgICAgIGlmICghc3BsaXRsaW5lc19uYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIGlmICgodG1wID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfZ2V0X3NvdXJjZSkpID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKCh0bXAgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9zcGxpdGxpbmVzKSkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgICAgIC8qIENoZWNrL2dldCB0aGUgcmVxdWlzaXRlIHBpZWNlcyBuZWVkZWQgZm9yIHRoZSBsb2FkZXIuICovCiAgICAgICAgIGxvYWRlciA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZV9nbG9iYWxzLCAiX19sb2FkZXJfXyIpOwpAQCAtNjcxLDExICs2NzgsMTEgQEAKICAgICAgICAgICAgIGdvdG8gc3RhbmRhcmRfY2FsbDsKIAogICAgICAgICAvKiBNYWtlIHN1cmUgdGhlIGxvYWRlciBpbXBsZW1lbnRzIHRoZSBvcHRpb25hbCBnZXRfc291cmNlKCkgbWV0aG9kLiAqLwotICAgICAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcobG9hZGVyLCAiZ2V0X3NvdXJjZSIpKQorICAgICAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQobG9hZGVyLCAmUHlJZF9nZXRfc291cmNlKSkKICAgICAgICAgICAgICAgICBnb3RvIHN0YW5kYXJkX2NhbGw7CiAgICAgICAgIC8qIENhbGwgZ2V0X3NvdXJjZSgpIHRvIGdldCB0aGUgc291cmNlIGNvZGUuICovCi0gICAgICAgIHNvdXJjZSA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKGxvYWRlciwgZ2V0X3NvdXJjZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUsIE5VTEwpOworICAgICAgICBzb3VyY2UgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhsb2FkZXIsIFB5SWRfZ2V0X3NvdXJjZS5vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9uYW1lLCBOVUxMKTsKICAgICAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgZWxzZSBpZiAoc291cmNlID09IFB5X05vbmUpIHsKQEAgLTY4NCw4ICs2OTEsOSBAQAogICAgICAgICB9CiAKICAgICAgICAgLyogU3BsaXQgdGhlIHNvdXJjZSBpbnRvIGxpbmVzLiAqLwotICAgICAgICBzb3VyY2VfbGlzdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNvdXJjZSwgc3BsaXRsaW5lc19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICBzb3VyY2VfbGlzdCA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUlkX3NwbGl0bGluZXMub2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoc291cmNlKTsKICAgICAgICAgaWYgKCFzb3VyY2VfbGlzdCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTUwLDIzICs5NTgsMzAgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9maWx0ZXJzID0gaW5pdF9maWx0ZXJzKCk7Ci0gICAgaWYgKF9maWx0ZXJzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfZmlsdGVycyA9PSBOVUxMKSB7CisgICAgICAgIF9maWx0ZXJzID0gaW5pdF9maWx0ZXJzKCk7CisgICAgICAgIGlmIChfZmlsdGVycyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0lOQ1JFRihfZmlsdGVycyk7CiAgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiZmlsdGVycyIsIF9maWx0ZXJzKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgX29uY2VfcmVnaXN0cnkgPSBQeURpY3RfTmV3KCk7Ci0gICAgaWYgKF9vbmNlX3JlZ2lzdHJ5ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChfb25jZV9yZWdpc3RyeSA9PSBOVUxMKSB7CisgICAgICAgIF9vbmNlX3JlZ2lzdHJ5ID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoX29uY2VfcmVnaXN0cnkgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBQeV9JTkNSRUYoX29uY2VfcmVnaXN0cnkpOwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9vbmNlcmVnaXN0cnkiLCBfb25jZV9yZWdpc3RyeSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIF9kZWZhdWx0X2FjdGlvbiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJkZWZhdWx0Iik7Ci0gICAgaWYgKF9kZWZhdWx0X2FjdGlvbiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoX2RlZmF1bHRfYWN0aW9uID09IE5VTEwpIHsKKyAgICAgICAgX2RlZmF1bHRfYWN0aW9uID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoImRlZmF1bHQiKTsKKyAgICAgICAgaWYgKF9kZWZhdWx0X2FjdGlvbiA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihfZGVmYXVsdF9hY3Rpb24pOwogICAgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QobSwgIl9kZWZhdWx0YWN0aW9uIiwgX2RlZmF1bHRfYWN0aW9uKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBtOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzZGwuYyBiL1B5dGhvbi9hc2RsLmMKaW5kZXggYzMwZDdkMjAuLmU3ZTMyODAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9hc2RsLmMKKysrIGIvUHl0aG9uL2FzZGwuYwpAQCAtMiw3ICsyLDcgQEAKICNpbmNsdWRlICJhc2RsLmgiCiAKIGFzZGxfc2VxICoKLWFzZGxfc2VxX25ldyhpbnQgc2l6ZSwgUHlBcmVuYSAqYXJlbmEpCithc2RsX3NlcV9uZXcoUHlfc3NpemVfdCBzaXplLCBQeUFyZW5hICphcmVuYSkKIHsKICAgICBhc2RsX3NlcSAqc2VxID0gTlVMTDsKICAgICBzaXplX3QgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKQEAgLTMzLDcgKzMzLDcgQEAKIH0KIAogYXNkbF9pbnRfc2VxICoKLWFzZGxfaW50X3NlcV9uZXcoaW50IHNpemUsIFB5QXJlbmEgKmFyZW5hKQorYXNkbF9pbnRfc2VxX25ldyhQeV9zc2l6ZV90IHNpemUsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGFzZGxfaW50X3NlcSAqc2VxID0gTlVMTDsKICAgICBzaXplX3QgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc3QuYyBiL1B5dGhvbi9hc3QuYwppbmRleCBkMmYwNjNiLi4wYzBjMWE2IDEwMDY0NAotLS0gYS9QeXRob24vYXN0LmMKKysrIGIvUHl0aG9uL2FzdC5jCkBAIC0xLDI0ICsxLDUwNyBAQAogLyoKICAqIFRoaXMgZmlsZSBpbmNsdWRlcyBmdW5jdGlvbnMgdG8gdHJhbnNmb3JtIGEgY29uY3JldGUgc3ludGF4IHRyZWUgKENTVCkgdG8KLSAqIGFuIGFic3RyYWN0IHN5bnRheCB0cmVlIChBU1QpLiAgVGhlIG1haW4gZnVuY3Rpb24gaXMgUHlBU1RfRnJvbU5vZGUoKS4KKyAqIGFuIGFic3RyYWN0IHN5bnRheCB0cmVlIChBU1QpLiBUaGUgbWFpbiBmdW5jdGlvbiBpcyBQeUFTVF9Gcm9tTm9kZSgpLgogICoKICAqLwogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgIlB5dGhvbi1hc3QuaCIKLSNpbmNsdWRlICJncmFtbWFyLmgiCiAjaW5jbHVkZSAibm9kZS5oIgogI2luY2x1ZGUgImFzdC5oIgogI2luY2x1ZGUgInRva2VuLmgiCi0jaW5jbHVkZSAicGFyc2V0b2suaCIKLSNpbmNsdWRlICJncmFtaW5pdC5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKK3N0YXRpYyBpbnQgdmFsaWRhdGVfc3RtdHMoYXNkbF9zZXEgKik7CitzdGF0aWMgaW50IHZhbGlkYXRlX2V4cHJzKGFzZGxfc2VxICosIGV4cHJfY29udGV4dF90eSwgaW50KTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfbm9uZW1wdHlfc2VxKGFzZGxfc2VxICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfc3RtdChzdG10X3R5KTsKK3N0YXRpYyBpbnQgdmFsaWRhdGVfZXhwcihleHByX3R5LCBleHByX2NvbnRleHRfdHkpOworCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9jb21wcmVoZW5zaW9uKGFzZGxfc2VxICpnZW5zKQoreworICAgIGludCBpOworICAgIGlmICghYXNkbF9zZXFfTEVOKGdlbnMpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiY29tcHJlaGVuc2lvbiB3aXRoIG5vIGdlbmVyYXRvcnMiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oZ2Vucyk7IGkrKykgeworICAgICAgICBjb21wcmVoZW5zaW9uX3R5IGNvbXAgPSBhc2RsX3NlcV9HRVQoZ2VucywgaSk7CisgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihjb21wLT50YXJnZXQsIFN0b3JlKSB8fAorICAgICAgICAgICAgIXZhbGlkYXRlX2V4cHIoY29tcC0+aXRlciwgTG9hZCkgfHwKKyAgICAgICAgICAgICF2YWxpZGF0ZV9leHBycyhjb21wLT5pZnMsIExvYWQsIDApKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50Cit2YWxpZGF0ZV9zbGljZShzbGljZV90eSBzbGljZSkKK3sKKyAgICBzd2l0Y2ggKHNsaWNlLT5raW5kKSB7CisgICAgY2FzZSBTbGljZV9raW5kOgorICAgICAgICByZXR1cm4gKCFzbGljZS0+di5TbGljZS5sb3dlciB8fCB2YWxpZGF0ZV9leHByKHNsaWNlLT52LlNsaWNlLmxvd2VyLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghc2xpY2UtPnYuU2xpY2UudXBwZXIgfHwgdmFsaWRhdGVfZXhwcihzbGljZS0+di5TbGljZS51cHBlciwgTG9hZCkpICYmCisgICAgICAgICAgICAoIXNsaWNlLT52LlNsaWNlLnN0ZXAgfHwgdmFsaWRhdGVfZXhwcihzbGljZS0+di5TbGljZS5zdGVwLCBMb2FkKSk7CisgICAgY2FzZSBFeHRTbGljZV9raW5kOiB7CisgICAgICAgIGludCBpOworICAgICAgICBpZiAoIXZhbGlkYXRlX25vbmVtcHR5X3NlcShzbGljZS0+di5FeHRTbGljZS5kaW1zLCAiZGltcyIsICJFeHRTbGljZSIpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBhc2RsX3NlcV9MRU4oc2xpY2UtPnYuRXh0U2xpY2UuZGltcyk7IGkrKykKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfc2xpY2UoYXNkbF9zZXFfR0VUKHNsaWNlLT52LkV4dFNsaWNlLmRpbXMsIGkpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc2xpY2UtPnYuSW5kZXgudmFsdWUsIExvYWQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVua25vd24gc2xpY2Ugbm9kZSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2tleXdvcmRzKGFzZGxfc2VxICprZXl3b3JkcykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsgaSsrKQorICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoKChrZXl3b3JkX3R5KWFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSkpLT52YWx1ZSwgTG9hZCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfYXJncyhhc2RsX3NlcSAqYXJncykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGFyZ3MpOyBpKyspIHsKKyAgICAgICAgYXJnX3R5IGFyZyA9IGFzZGxfc2VxX0dFVChhcmdzLCBpKTsKKyAgICAgICAgaWYgKGFyZy0+YW5ub3RhdGlvbiAmJiAhdmFsaWRhdGVfZXhwcihhcmctPmFubm90YXRpb24sIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitleHByX2NvbnRleHRfbmFtZShleHByX2NvbnRleHRfdHkgY3R4KQoreworICAgIHN3aXRjaCAoY3R4KSB7CisgICAgY2FzZSBMb2FkOgorICAgICAgICByZXR1cm4gIkxvYWQiOworICAgIGNhc2UgU3RvcmU6CisgICAgICAgIHJldHVybiAiU3RvcmUiOworICAgIGNhc2UgRGVsOgorICAgICAgICByZXR1cm4gIkRlbCI7CisgICAgY2FzZSBBdWdMb2FkOgorICAgICAgICByZXR1cm4gIkF1Z0xvYWQiOworICAgIGNhc2UgQXVnU3RvcmU6CisgICAgICAgIHJldHVybiAiQXVnU3RvcmUiOworICAgIGNhc2UgUGFyYW06CisgICAgICAgIHJldHVybiAiUGFyYW0iOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICAgICAgcmV0dXJuICIodW5rbm93bikiOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfYXJndW1lbnRzKGFyZ3VtZW50c190eSBhcmdzKQoreworICAgIGlmICghdmFsaWRhdGVfYXJncyhhcmdzLT5hcmdzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24pIHsKKyAgICAgICAgaWYgKCFhcmdzLT52YXJhcmcpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidmFyYXJnYW5ub3RhdGlvbiBidXQgbm8gdmFyYXJnIG9uIGFyZ3VtZW50cyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9leHByKGFyZ3MtPnZhcmFyZ2Fubm90YXRpb24sIExvYWQpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmICghdmFsaWRhdGVfYXJncyhhcmdzLT5rd29ubHlhcmdzKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKGFyZ3MtPmt3YXJnYW5ub3RhdGlvbikgeworICAgICAgICBpZiAoIWFyZ3MtPmt3YXJnKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImt3YXJnYW5ub3RhdGlvbiBidXQgbm8ga3dhcmcgb24gYXJndW1lbnRzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoYXJncy0+a3dhcmdhbm5vdGF0aW9uLCBMb2FkKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKSA+IGFzZGxfc2VxX0xFTihhcmdzLT5hcmdzKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1vcmUgcG9zaXRpb25hbCBkZWZhdWx0cyB0aGFuIGFyZ3Mgb24gYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYXNkbF9zZXFfTEVOKGFyZ3MtPmt3X2RlZmF1bHRzKSAhPSBhc2RsX3NlcV9MRU4oYXJncy0+a3dvbmx5YXJncykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZW5ndGggb2Yga3dvbmx5YXJncyBpcyBub3QgdGhlIHNhbWUgYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgImt3X2RlZmF1bHRzIG9uIGFyZ3VtZW50cyIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGFyZ3MtPmRlZmF1bHRzLCBMb2FkLCAwKSAmJiB2YWxpZGF0ZV9leHBycyhhcmdzLT5rd19kZWZhdWx0cywgTG9hZCwgMSk7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2V4cHIoZXhwcl90eSBleHAsIGV4cHJfY29udGV4dF90eSBjdHgpCit7CisgICAgaW50IGNoZWNrX2N0eCA9IDE7CisgICAgZXhwcl9jb250ZXh0X3R5IGFjdHVhbF9jdHg7CisKKyAgICAvKiBGaXJzdCBjaGVjayBleHByZXNzaW9uIGNvbnRleHQuICovCisgICAgc3dpdGNoIChleHAtPmtpbmQpIHsKKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LkF0dHJpYnV0ZS5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU3Vic2NyaXB0X2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuU3Vic2NyaXB0LmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGFycmVkX2tpbmQ6CisgICAgICAgIGFjdHVhbF9jdHggPSBleHAtPnYuU3RhcnJlZC5jdHg7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTmFtZV9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52Lk5hbWUuY3R4OworICAgICAgICBicmVhazsKKyAgICBjYXNlIExpc3Rfa2luZDoKKyAgICAgICAgYWN0dWFsX2N0eCA9IGV4cC0+di5MaXN0LmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUdXBsZV9raW5kOgorICAgICAgICBhY3R1YWxfY3R4ID0gZXhwLT52LlR1cGxlLmN0eDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGN0eCAhPSBMb2FkKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgImV4cHJlc3Npb24gd2hpY2ggY2FuJ3QgYmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NpZ25lZCB0byBpbiAlcyBjb250ZXh0IiwgZXhwcl9jb250ZXh0X25hbWUoY3R4KSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBjaGVja19jdHggPSAwOworICAgIH0KKyAgICBpZiAoY2hlY2tfY3R4ICYmIGFjdHVhbF9jdHggIT0gY3R4KSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiZXhwcmVzc2lvbiBtdXN0IGhhdmUgJXMgY29udGV4dCBidXQgaGFzICVzIGluc3RlYWQiLAorICAgICAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X25hbWUoY3R4KSwgZXhwcl9jb250ZXh0X25hbWUoYWN0dWFsX2N0eCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBOb3cgdmFsaWRhdGUgZXhwcmVzc2lvbi4gKi8KKyAgICBzd2l0Y2ggKGV4cC0+a2luZCkgeworICAgIGNhc2UgQm9vbE9wX2tpbmQ6CisgICAgICAgIGlmIChhc2RsX3NlcV9MRU4oZXhwLT52LkJvb2xPcC52YWx1ZXMpIDwgMikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJCb29sT3Agd2l0aCBsZXNzIHRoYW4gMiB2YWx1ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuQm9vbE9wLnZhbHVlcywgTG9hZCwgMCk7CisgICAgY2FzZSBCaW5PcF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQmluT3AubGVmdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LkJpbk9wLnJpZ2h0LCBMb2FkKTsKKyAgICBjYXNlIFVuYXJ5T3Bfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoZXhwLT52LlVuYXJ5T3Aub3BlcmFuZCwgTG9hZCk7CisgICAgY2FzZSBMYW1iZGFfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2FyZ3VtZW50cyhleHAtPnYuTGFtYmRhLmFyZ3MpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5MYW1iZGEuYm9keSwgTG9hZCk7CisgICAgY2FzZSBJZkV4cF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuSWZFeHAudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LklmRXhwLmJvZHksIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5JZkV4cC5vcmVsc2UsIExvYWQpOworICAgIGNhc2UgRGljdF9raW5kOgorICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGV4cC0+di5EaWN0LmtleXMpICE9IGFzZGxfc2VxX0xFTihleHAtPnYuRGljdC52YWx1ZXMpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGljdCBkb2Vzbid0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGtleXMgYXMgdmFsdWVzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkRpY3Qua2V5cywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5EaWN0LnZhbHVlcywgTG9hZCwgMCk7CisgICAgY2FzZSBTZXRfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHJzKGV4cC0+di5TZXQuZWx0cywgTG9hZCwgMCk7CisjZGVmaW5lIENPTVAoTkFNRSkgXAorICAgICAgICBjYXNlIE5BTUUgIyMgX2tpbmQ6IFwKKyAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9jb21wcmVoZW5zaW9uKGV4cC0+di5OQU1FLmdlbmVyYXRvcnMpICYmIFwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5OQU1FLmVsdCwgTG9hZCk7CisgICAgQ09NUChMaXN0Q29tcCkKKyAgICBDT01QKFNldENvbXApCisgICAgQ09NUChHZW5lcmF0b3JFeHApCisjdW5kZWYgQ09NUAorICAgIGNhc2UgRGljdENvbXBfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2NvbXByZWhlbnNpb24oZXhwLT52LkRpY3RDb21wLmdlbmVyYXRvcnMpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5EaWN0Q29tcC5rZXksIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5EaWN0Q29tcC52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBZaWVsZF9raW5kOgorICAgICAgICByZXR1cm4gIWV4cC0+di5ZaWVsZC52YWx1ZSB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZC52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBZaWVsZEZyb21fa2luZDoKKyAgICAgICAgcmV0dXJuICFleHAtPnYuWWllbGRGcm9tLnZhbHVlIHx8CisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5ZaWVsZEZyb20udmFsdWUsIExvYWQpOworICAgIGNhc2UgQ29tcGFyZV9raW5kOgorICAgICAgICBpZiAoIWFzZGxfc2VxX0xFTihleHAtPnYuQ29tcGFyZS5jb21wYXJhdG9ycykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcGFyZSB3aXRoIG5vIGNvbXBhcmF0b3JzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLmNvbXBhcmF0b3JzKSAhPQorICAgICAgICAgICAgYXNkbF9zZXFfTEVOKGV4cC0+di5Db21wYXJlLm9wcykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ29tcGFyZSBoYXMgYSBkaWZmZXJlbnQgbnVtYmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2YgY29tcGFyYXRvcnMgYW5kIG9wZXJhbmRzIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNvbXBhcmUuY29tcGFyYXRvcnMsIExvYWQsIDApICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKGV4cC0+di5Db21wYXJlLmxlZnQsIExvYWQpOworICAgIGNhc2UgQ2FsbF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQ2FsbC5mdW5jLCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcnMoZXhwLT52LkNhbGwuYXJncywgTG9hZCwgMCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2tleXdvcmRzKGV4cC0+di5DYWxsLmtleXdvcmRzKSAmJgorICAgICAgICAgICAgKCFleHAtPnYuQ2FsbC5zdGFyYXJncyB8fCB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLnN0YXJhcmdzLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghZXhwLT52LkNhbGwua3dhcmdzIHx8IHZhbGlkYXRlX2V4cHIoZXhwLT52LkNhbGwua3dhcmdzLCBMb2FkKSk7CisgICAgY2FzZSBOdW1fa2luZDogeworICAgICAgICBQeU9iamVjdCAqbiA9IGV4cC0+di5OdW0ubjsKKyAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2tFeGFjdChuKSAmJiAhUHlGbG9hdF9DaGVja0V4YWN0KG4pICYmCisgICAgICAgICAgICAhUHlDb21wbGV4X0NoZWNrRXhhY3QobikpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub24tbnVtZXJpYyB0eXBlIGluIE51bSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGNhc2UgU3RyX2tpbmQ6IHsKKyAgICAgICAgUHlPYmplY3QgKnMgPSBleHAtPnYuU3RyLnM7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3QocykpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub24tc3RyaW5nIHR5cGUgaW4gU3RyIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgY2FzZSBCeXRlc19raW5kOiB7CisgICAgICAgIFB5T2JqZWN0ICpiID0gZXhwLT52LkJ5dGVzLnM7CisgICAgICAgIGlmICghUHlCeXRlc19DaGVja0V4YWN0KGIpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibm9uLWJ5dGVzIHR5cGUgaW4gQnl0ZXMiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuQXR0cmlidXRlLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfc2xpY2UoZXhwLT52LlN1YnNjcmlwdC5zbGljZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoZXhwLT52LlN1YnNjcmlwdC52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBTdGFycmVkX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5TdGFycmVkLnZhbHVlLCBjdHgpOworICAgIGNhc2UgTGlzdF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52Lkxpc3QuZWx0cywgY3R4LCAwKTsKKyAgICBjYXNlIFR1cGxlX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHBycyhleHAtPnYuVHVwbGUuZWx0cywgY3R4LCAwKTsKKyAgICAvKiBUaGVzZSBsYXN0IGNhc2VzIGRvbid0IGhhdmUgYW55IGNoZWNraW5nLiAqLworICAgIGNhc2UgTmFtZV9raW5kOgorICAgIGNhc2UgRWxsaXBzaXNfa2luZDoKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLCAidW5leHBlY3RlZCBleHByZXNzaW9uIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIGludAordmFsaWRhdGVfbm9uZW1wdHlfc2VxKGFzZGxfc2VxICpzZXEsIGNvbnN0IGNoYXIgKndoYXQsIGNvbnN0IGNoYXIgKm93bmVyKQoreworICAgIGlmIChhc2RsX3NlcV9MRU4oc2VxKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJlbXB0eSAlcyBvbiAlcyIsIHdoYXQsIG93bmVyKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfYXNzaWdubGlzdChhc2RsX3NlcSAqdGFyZ2V0cywgZXhwcl9jb250ZXh0X3R5IGN0eCkKK3sKKyAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHRhcmdldHMsICJ0YXJnZXRzIiwgY3R4ID09IERlbCA/ICJEZWxldGUiIDogIkFzc2lnbiIpICYmCisgICAgICAgIHZhbGlkYXRlX2V4cHJzKHRhcmdldHMsIGN0eCwgMCk7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX2JvZHkoYXNkbF9zZXEgKmJvZHksIGNvbnN0IGNoYXIgKm93bmVyKQoreworICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoYm9keSwgImJvZHkiLCBvd25lcikgJiYgdmFsaWRhdGVfc3RtdHMoYm9keSk7Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3N0bXQoc3RtdF90eSBzdG10KQoreworICAgIGludCBpOworICAgIHN3aXRjaCAoc3RtdC0+a2luZCkgeworICAgIGNhc2UgRnVuY3Rpb25EZWZfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5GdW5jdGlvbkRlZi5ib2R5LCAiRnVuY3Rpb25EZWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYXJndW1lbnRzKHN0bXQtPnYuRnVuY3Rpb25EZWYuYXJncykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuRnVuY3Rpb25EZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuRnVuY3Rpb25EZWYucmV0dXJucyB8fAorICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5GdW5jdGlvbkRlZi5yZXR1cm5zLCBMb2FkKSk7CisgICAgY2FzZSBDbGFzc0RlZl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LkNsYXNzRGVmLmJvZHksICJDbGFzc0RlZiIpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhzdG10LT52LkNsYXNzRGVmLmJhc2VzLCBMb2FkLCAwKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoc3RtdC0+di5DbGFzc0RlZi5rZXl3b3JkcykgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHJzKHN0bXQtPnYuQ2xhc3NEZWYuZGVjb3JhdG9yX2xpc3QsIExvYWQsIDApICYmCisgICAgICAgICAgICAoIXN0bXQtPnYuQ2xhc3NEZWYuc3RhcmFyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLnN0YXJhcmdzLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICghc3RtdC0+di5DbGFzc0RlZi5rd2FyZ3MgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkNsYXNzRGVmLmt3YXJncywgTG9hZCkpOworICAgIGNhc2UgUmV0dXJuX2tpbmQ6CisgICAgICAgIHJldHVybiAhc3RtdC0+di5SZXR1cm4udmFsdWUgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LlJldHVybi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBEZWxldGVfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2Fzc2lnbmxpc3Qoc3RtdC0+di5EZWxldGUudGFyZ2V0cywgRGVsKTsKKyAgICBjYXNlIEFzc2lnbl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYXNzaWdubGlzdChzdG10LT52LkFzc2lnbi50YXJnZXRzLCBTdG9yZSkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bc3NpZ24udmFsdWUsIExvYWQpOworICAgIGNhc2UgQXVnQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXVnQXNzaWduLnRhcmdldCwgU3RvcmUpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQXVnQXNzaWduLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIEZvcl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci50YXJnZXQsIFN0b3JlKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkZvci5pdGVyLCBMb2FkKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfYm9keShzdG10LT52LkZvci5ib2R5LCAiRm9yIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuRm9yLm9yZWxzZSk7CisgICAgY2FzZSBXaGlsZV9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LldoaWxlLnRlc3QsIExvYWQpICYmCisgICAgICAgICAgICB2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuV2hpbGUuYm9keSwgIldoaWxlIikgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX3N0bXRzKHN0bXQtPnYuV2hpbGUub3JlbHNlKTsKKyAgICBjYXNlIElmX2tpbmQ6CisgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKHN0bXQtPnYuSWYudGVzdCwgTG9hZCkgJiYKKyAgICAgICAgICAgIHZhbGlkYXRlX2JvZHkoc3RtdC0+di5JZi5ib2R5LCAiSWYiKSAmJgorICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5JZi5vcmVsc2UpOworICAgIGNhc2UgV2l0aF9raW5kOgorICAgICAgICBpZiAoIXZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LldpdGguaXRlbXMsICJpdGVtcyIsICJXaXRoIikpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10LT52LldpdGguaXRlbXMpOyBpKyspIHsKKyAgICAgICAgICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc2RsX3NlcV9HRVQoc3RtdC0+di5XaXRoLml0ZW1zLCBpKTsKKyAgICAgICAgICAgIGlmICghdmFsaWRhdGVfZXhwcihpdGVtLT5jb250ZXh0X2V4cHIsIExvYWQpIHx8CisgICAgICAgICAgICAgICAgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMgJiYgIXZhbGlkYXRlX2V4cHIoaXRlbS0+b3B0aW9uYWxfdmFycywgU3RvcmUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsaWRhdGVfYm9keShzdG10LT52LldpdGguYm9keSwgIldpdGgiKTsKKyAgICBjYXNlIFJhaXNlX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LlJhaXNlLmV4YykgeworICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SYWlzZS5leGMsIExvYWQpICYmCisgICAgICAgICAgICAgICAgKCFzdG10LT52LlJhaXNlLmNhdXNlIHx8IHZhbGlkYXRlX2V4cHIoc3RtdC0+di5SYWlzZS5jYXVzZSwgTG9hZCkpOworICAgICAgICB9CisgICAgICAgIGlmIChzdG10LT52LlJhaXNlLmNhdXNlKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIlJhaXNlIHdpdGggY2F1c2UgYnV0IG5vIGV4Y2VwdGlvbiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBUcnlfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9ib2R5KHN0bXQtPnYuVHJ5LmJvZHksICJUcnkiKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBpZiAoIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5oYW5kbGVycykgJiYKKyAgICAgICAgICAgICFhc2RsX3NlcV9MRU4oc3RtdC0+di5UcnkuZmluYWxib2R5KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJUcnkgaGFzIG5laXRoZXIgZXhjZXB0IGhhbmRsZXJzIG5vciBmaW5hbGJvZHkiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5LmhhbmRsZXJzKSAmJgorICAgICAgICAgICAgYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5Lm9yZWxzZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiVHJ5IGhhcyBvcmVsc2UgYnV0IG5vIGV4Y2VwdCBoYW5kbGVycyIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5oYW5kbGVycyk7IGkrKykgeworICAgICAgICAgICAgZXhjZXB0aGFuZGxlcl90eSBoYW5kbGVyID0gYXNkbF9zZXFfR0VUKHN0bXQtPnYuVHJ5LmhhbmRsZXJzLCBpKTsKKyAgICAgICAgICAgIGlmICgoaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLnR5cGUgJiYKKyAgICAgICAgICAgICAgICAgIXZhbGlkYXRlX2V4cHIoaGFuZGxlci0+di5FeGNlcHRIYW5kbGVyLnR5cGUsIExvYWQpKSB8fAorICAgICAgICAgICAgICAgICF2YWxpZGF0ZV9ib2R5KGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci5ib2R5LCAiRXhjZXB0SGFuZGxlciIpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoIWFzZGxfc2VxX0xFTihzdG10LT52LlRyeS5maW5hbGJvZHkpIHx8CisgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3RtdHMoc3RtdC0+di5UcnkuZmluYWxib2R5KSkgJiYKKyAgICAgICAgICAgICghYXNkbF9zZXFfTEVOKHN0bXQtPnYuVHJ5Lm9yZWxzZSkgfHwKKyAgICAgICAgICAgICB2YWxpZGF0ZV9zdG10cyhzdG10LT52LlRyeS5vcmVsc2UpKTsKKyAgICBjYXNlIEFzc2VydF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkFzc2VydC50ZXN0LCBMb2FkKSAmJgorICAgICAgICAgICAgKCFzdG10LT52LkFzc2VydC5tc2cgfHwgdmFsaWRhdGVfZXhwcihzdG10LT52LkFzc2VydC5tc2csIExvYWQpKTsKKyAgICBjYXNlIEltcG9ydF9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfbm9uZW1wdHlfc2VxKHN0bXQtPnYuSW1wb3J0Lm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0Iik7CisgICAgY2FzZSBJbXBvcnRGcm9tX2tpbmQ6CisgICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAtMSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJJbXBvcnRGcm9tIGxldmVsIGxlc3MgdGhhbiAtMSIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52LkltcG9ydEZyb20ubmFtZXMsICJuYW1lcyIsICJJbXBvcnRGcm9tIik7CisgICAgY2FzZSBHbG9iYWxfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52Lkdsb2JhbC5uYW1lcywgIm5hbWVzIiwgIkdsb2JhbCIpOworICAgIGNhc2UgTm9ubG9jYWxfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX25vbmVtcHR5X3NlcShzdG10LT52Lk5vbmxvY2FsLm5hbWVzLCAibmFtZXMiLCAiTm9ubG9jYWwiKTsKKyAgICBjYXNlIEV4cHJfa2luZDoKKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5FeHByLnZhbHVlLCBMb2FkKTsKKyAgICBjYXNlIFBhc3Nfa2luZDoKKyAgICBjYXNlIEJyZWFrX2tpbmQ6CisgICAgY2FzZSBDb250aW51ZV9raW5kOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsICJ1bmV4cGVjdGVkIHN0YXRlbWVudCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3ZhbGlkYXRlX3N0bXRzKGFzZGxfc2VxICpzZXEpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzZXEpOyBpKyspIHsKKyAgICAgICAgc3RtdF90eSBzdG10ID0gYXNkbF9zZXFfR0VUKHNlcSwgaSk7CisgICAgICAgIGlmIChzdG10KSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX3N0bXQoc3RtdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9uZSBkaXNhbGxvd2VkIGluIHN0YXRlbWVudCBsaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAordmFsaWRhdGVfZXhwcnMoYXNkbF9zZXEgKmV4cHJzLCBleHByX2NvbnRleHRfdHkgY3R4LCBpbnQgbnVsbF9vaykKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKGV4cHJzKTsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZXhwciA9IGFzZGxfc2VxX0dFVChleHBycywgaSk7CisgICAgICAgIGlmIChleHByKSB7CisgICAgICAgICAgICBpZiAoIXZhbGlkYXRlX2V4cHIoZXhwciwgY3R4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghbnVsbF9vaykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vbmUgZGlzYWxsb3dlZCBpbiBleHByZXNzaW9uIGxpc3QiKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK2ludAorUHlBU1RfVmFsaWRhdGUobW9kX3R5IG1vZCkKK3sKKyAgICBpbnQgcmVzID0gMDsKKworICAgIHN3aXRjaCAobW9kLT5raW5kKSB7CisgICAgY2FzZSBNb2R1bGVfa2luZDoKKyAgICAgICAgcmVzID0gdmFsaWRhdGVfc3RtdHMobW9kLT52Lk1vZHVsZS5ib2R5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBJbnRlcmFjdGl2ZV9raW5kOgorICAgICAgICByZXMgPSB2YWxpZGF0ZV9zdG10cyhtb2QtPnYuSW50ZXJhY3RpdmUuYm9keSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXhwcmVzc2lvbl9raW5kOgorICAgICAgICByZXMgPSB2YWxpZGF0ZV9leHByKG1vZC0+di5FeHByZXNzaW9uLmJvZHksIExvYWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN1aXRlX2tpbmQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiU3VpdGUgaXMgbm90IHZhbGlkIGluIHRoZSBDUHl0aG9uIGNvbXBpbGVyIik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgImltcG9zc2libGUgbW9kdWxlIG5vZGUiKTsKKyAgICAgICAgcmVzID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qIFRoaXMgaXMgZG9uZSBoZXJlLCBzbyBkZWZpbmVzIGxpa2UgInRlc3QiIGRvbid0IGludGVyZmVyZSB3aXRoIEFTVCB1c2UgYWJvdmUuICovCisjaW5jbHVkZSAiZ3JhbW1hci5oIgorI2luY2x1ZGUgInBhcnNldG9rLmgiCisjaW5jbHVkZSAiZ3JhbWluaXQuaCIKKwogLyogRGF0YSBzdHJ1Y3R1cmUgdXNlZCBpbnRlcm5hbGx5ICovCiBzdHJ1Y3QgY29tcGlsaW5nIHsKICAgICBjaGFyICpjX2VuY29kaW5nOyAvKiBzb3VyY2UgZW5jb2RpbmcgKi8KICAgICBQeUFyZW5hICpjX2FyZW5hOyAvKiBhcmVuYSBmb3IgYWxsb2NhdGluZyBtZW1lb3J5ICovCiAgICAgY29uc3QgY2hhciAqY19maWxlbmFtZTsgLyogZmlsZW5hbWUgKi8KKyAgICBQeU9iamVjdCAqY19ub3JtYWxpemU7IC8qIE5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZnJvbSB1bmljb2RlZGF0YS4gKi8KKyAgICBQeU9iamVjdCAqY19ub3JtYWxpemVfYXJnczsgLyogTm9ybWFsaXphdGlvbiBhcmd1bWVudCB0dXBsZS4gKi8KIH07CiAKIHN0YXRpYyBhc2RsX3NlcSAqc2VxX2Zvcl90ZXN0bGlzdChzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IG5vZGUgKik7CkBAIC0zOCwxMjcgKzUyMSw5NiBAQAogc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpieXRlc21vZGUpOwogCi0jaWZuZGVmIExJTkVOTwotI2RlZmluZSBMSU5FTk8obikgICAgICAgKChuKS0+bl9saW5lbm8pCi0jZW5kaWYKLQogI2RlZmluZSBDT01QX0dFTkVYUCAgIDAKICNkZWZpbmUgQ09NUF9MSVNUQ09NUCAxCiAjZGVmaW5lIENPTVBfU0VUQ09NUCAgMgogCitzdGF0aWMgaW50Citpbml0X25vcm1hbGl6YXRpb24oc3RydWN0IGNvbXBpbGluZyAqYykKK3sKKyAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInVuaWNvZGVkYXRhIik7CisgICAgaWYgKCFtKQorICAgICAgICByZXR1cm4gMDsKKyAgICBjLT5jX25vcm1hbGl6ZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobSwgIm5vcm1hbGl6ZSIpOworICAgIFB5X0RFQ1JFRihtKTsKKyAgICBpZiAoIWMtPmNfbm9ybWFsaXplKQorICAgICAgICByZXR1cm4gMDsKKyAgICBjLT5jX25vcm1hbGl6ZV9hcmdzID0gUHlfQnVpbGRWYWx1ZSgiKHNOKSIsICJORktDIiwgUHlfTm9uZSk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShjLT5jX25vcm1hbGl6ZV9hcmdzLCAxLCBOVUxMKTsKKyAgICBpZiAoIWMtPmNfbm9ybWFsaXplX2FyZ3MpIHsKKyAgICAgICAgUHlfQ0xFQVIoYy0+Y19ub3JtYWxpemUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIHN0YXRpYyBpZGVudGlmaWVyCi1uZXdfaWRlbnRpZmllcihjb25zdCBjaGFyICpuLCBQeUFyZW5hICphcmVuYSkKK25ld19pZGVudGlmaWVyKGNvbnN0IGNoYXIgKm4sIHN0cnVjdCBjb21waWxpbmcgKmMpCiB7CiAgICAgUHlPYmplY3QgKmlkID0gUHlVbmljb2RlX0RlY29kZVVURjgobiwgc3RybGVuKG4pLCBOVUxMKTsKLSAgICBQeV9VTklDT0RFICp1OwogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShpZCk7CisgICAgLyogUHlVbmljb2RlX0RlY29kZVVURjggc2hvdWxkIGFsd2F5cyByZXR1cm4gYSByZWFkeSBzdHJpbmcuICovCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWShpZCkpOwogICAgIC8qIENoZWNrIHdoZXRoZXIgdGhlcmUgYXJlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGluIHRoZQogICAgICAgIGlkZW50aWZpZXI7IGlmIHNvLCBub3JtYWxpemUgdG8gTkZLQy4gKi8KLSAgICBmb3IgKDsgKnU7IHUrKykgewotICAgICAgICBpZiAoKnUgPj0gMTI4KSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqbSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2soInVuaWNvZGVkYXRhIik7Ci0gICAgICAgICAgICBQeU9iamVjdCAqaWQyOwotICAgICAgICAgICAgaWYgKCFtKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWQyID0gUHlPYmplY3RfQ2FsbE1ldGhvZChtLCAibm9ybWFsaXplIiwgInNPIiwgIk5GS0MiLCBpZCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobSk7Ci0gICAgICAgICAgICBpZiAoIWlkMikKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIVB5VW5pY29kZV9JU19BU0NJSShpZCkpIHsKKyAgICAgICAgUHlPYmplY3QgKmlkMjsKKyAgICAgICAgaWYgKCFjLT5jX25vcm1hbGl6ZSAmJiAhaW5pdF9ub3JtYWxpemF0aW9uKGMpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaWQpOwotICAgICAgICAgICAgaWQgPSBpZDI7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYy0+Y19ub3JtYWxpemVfYXJncywgMSwgaWQpOworICAgICAgICBpZDIgPSBQeU9iamVjdF9DYWxsKGMtPmNfbm9ybWFsaXplLCBjLT5jX25vcm1hbGl6ZV9hcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGlkKTsKKyAgICAgICAgaWYgKCFpZDIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWQgPSBpZDI7CiAgICAgfQogICAgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlKCZpZCk7Ci0gICAgUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgaWQpOworICAgIFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgaWQpOwogICAgIHJldHVybiBpZDsKIH0KIAotI2RlZmluZSBORVdfSURFTlRJRklFUihuKSBuZXdfaWRlbnRpZmllcihTVFIobiksIGMtPmNfYXJlbmEpCi0KLS8qIFRoaXMgcm91dGluZSBwcm92aWRlcyBhbiBpbnZhbGlkIG9iamVjdCBmb3IgdGhlIHN5bnRheCBlcnJvci4KLSAgIFRoZSBvdXRlcm1vc3Qgcm91dGluZSBtdXN0IHVucGFjayB0aGlzIGVycm9yIGFuZCBjcmVhdGUgdGhlCi0gICBwcm9wZXIgb2JqZWN0LiAgV2UgZG8gdGhpcyBzbyB0aGF0IHdlIGRvbid0IGhhdmUgdG8gcGFzcwotICAgdGhlIGZpbGVuYW1lIHRvIGV2ZXJ5dGhpbmcgZnVuY3Rpb24uCi0KLSAgIFhYWCBNYXliZSB3ZSBzaG91bGQganVzdCBwYXNzIHRoZSBmaWxlbmFtZS4uLgotKi8KKyNkZWZpbmUgTkVXX0lERU5USUZJRVIobikgbmV3X2lkZW50aWZpZXIoU1RSKG4pLCBjKQogCiBzdGF0aWMgaW50Ci1hc3RfZXJyb3IoY29uc3Qgbm9kZSAqbiwgY29uc3QgY2hhciAqZXJyc3RyKQorYXN0X2Vycm9yKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGNvbnN0IGNoYXIgKmVycm1zZykKIHsKLSAgICBQeU9iamVjdCAqdSA9IFB5X0J1aWxkVmFsdWUoInppaSIsIGVycnN0ciwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQpLCAqc2F2ZTsKLSAgICBpZiAoIXUpCi0gICAgICAgIHJldHVybiAwOwotICAgIC8qCi0gICAgICogUHJldmVudCB0aGUgZXJyb3IgZnJvbSBiZWluZyBjaGFpbmVkLiBQeUVycl9TZXRPYmplY3Qgd2lsbCBub3JtYWxpemUgdGhlCi0gICAgICogZXhjZXB0aW9uIGluIG9yZGVyIHRvIGNoYWluIGl0LiBhc3RfZXJyb3JfZmluaXNoLCBob3dldmVyLCByZXF1aXJlcyB0aGUKLSAgICAgKiBlcnJvciBub3QgdG8gYmUgbm9ybWFsaXplZC4KLSAgICAgKi8KLSAgICBzYXZlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+ZXhjX3ZhbHVlOwotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPmV4Y192YWx1ZSA9IE5VTEw7Ci0gICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX1N5bnRheEVycm9yLCB1KTsKLSAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5leGNfdmFsdWUgPSBzYXZlOwotICAgIFB5X0RFQ1JFRih1KTsKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQKLWFzdF9lcnJvcl9maW5pc2goY29uc3QgY2hhciAqZmlsZW5hbWUpCi17Ci0gICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiYWNrLCAqZXJyc3RyLCAqb2Zmc2V0LCAqbG9jLCAqdG1wOworICAgIFB5T2JqZWN0ICp2YWx1ZSwgKmVycnN0ciwgKmxvYywgKnRtcDsKICAgICBQeU9iamVjdCAqZmlsZW5hbWVfb2JqOwotICAgIGxvbmcgbGluZW5vOwogCi0gICAgYXNzZXJ0KFB5RXJyX09jY3VycmVkKCkpOwotICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeW50YXhFcnJvcikpCi0gICAgICAgIHJldHVybjsKLQotICAgIFB5RXJyX0ZldGNoKCZ0eXBlLCAmdmFsdWUsICZ0YmFjayk7Ci0gICAgZXJyc3RyID0gUHlUdXBsZV9HZXRJdGVtKHZhbHVlLCAwKTsKLSAgICBpZiAoIWVycnN0cikKLSAgICAgICAgcmV0dXJuOwotICAgIFB5X0lOQ1JFRihlcnJzdHIpOwotICAgIGxpbmVubyA9IFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HZXRJdGVtKHZhbHVlLCAxKSk7Ci0gICAgaWYgKGxpbmVubyA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBvZmZzZXQgPSBQeVR1cGxlX0dldEl0ZW0odmFsdWUsIDIpOwotICAgIGlmICghb2Zmc2V0KSB7Ci0gICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0KLSAgICBsb2MgPSBQeUVycl9Qcm9ncmFtVGV4dChmaWxlbmFtZSwgbGluZW5vKTsKKyAgICBsb2MgPSBQeUVycl9Qcm9ncmFtVGV4dChjLT5jX2ZpbGVuYW1lLCBMSU5FTk8obikpOwogICAgIGlmICghbG9jKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgbG9jID0gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOwotICAgIGVsc2UgeworICAgIGlmIChjLT5jX2ZpbGVuYW1lKSB7CisgICAgICAgIGZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYy0+Y19maWxlbmFtZSk7CisgICAgICAgIGlmICghZmlsZW5hbWVfb2JqKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobG9jKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfSBlbHNlIHsKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICBmaWxlbmFtZV9vYmogPSBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoZmlsZW5hbWVfb2JqICE9IE5VTEwpCi0gICAgICAgIHRtcCA9IFB5X0J1aWxkVmFsdWUoIihObE9PKSIsIGZpbGVuYW1lX29iaiwgbGluZW5vLCBvZmZzZXQsIGxvYyk7Ci0gICAgZWxzZQotICAgICAgICB0bXAgPSBOVUxMOwotICAgIFB5X0RFQ1JFRihsb2MpOwotICAgIGlmICghdG1wKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwotICAgICAgICByZXR1cm47CisgICAgdG1wID0gUHlfQnVpbGRWYWx1ZSgiKE5paU4pIiwgZmlsZW5hbWVfb2JqLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgbG9jKTsKKyAgICBpZiAoIXRtcCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZXJyc3RyID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoZXJybXNnKTsKKyAgICBpZiAoIWVycnN0cikgeworICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHZhbHVlID0gUHlUdXBsZV9QYWNrKDIsIGVycnN0ciwgdG1wKTsKICAgICBQeV9ERUNSRUYoZXJyc3RyKTsKICAgICBQeV9ERUNSRUYodG1wKTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWx1ZSwgdGJhY2spOworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3ludGF4RXJyb3IsIHZhbHVlKTsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CiB9CiAKIC8qIG51bV9zdG10cygpIHJldHVybnMgbnVtYmVyIG9mIGNvbnRhaW5lZCBzdGF0ZW1lbnRzLgpAQCAtMjM0LDEzICs2ODYsMTcgQEAKICAgICBzdG10X3R5IHM7CiAgICAgbm9kZSAqY2g7CiAgICAgc3RydWN0IGNvbXBpbGluZyBjOworICAgIG1vZF90eSByZXMgPSBOVUxMOwogCisgICAgYy5jX2FyZW5hID0gYXJlbmE7CisgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgYy5jX25vcm1hbGl6ZSA9IGMuY19ub3JtYWxpemVfYXJncyA9IE5VTEw7CiAgICAgaWYgKGZsYWdzICYmIGZsYWdzLT5jZl9mbGFncyAmIFB5Q0ZfU09VUkNFX0lTX1VURjgpIHsKICAgICAgICAgYy5jX2VuY29kaW5nID0gInV0Zi04IjsKICAgICAgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkgewogI2lmIDAKLSAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiZW5jb2RpbmcgZGVjbGFyYXRpb24gaW4gVW5pY29kZSBzdHJpbmciKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImVuY29kaW5nIGRlY2xhcmF0aW9uIGluIFVuaWNvZGUgc3RyaW5nIik7CisgICAgICAgICAgICBnb3RvIG91dDsKICNlbmRpZgogICAgICAgICAgICAgbiA9IENISUxEKG4sIDApOwogICAgICAgICB9CkBAIC0yNTEsMTUgKzcwNywxMyBAQAogICAgICAgICAvKiBQRVAgMzEyMCAqLwogICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwogICAgIH0KLSAgICBjLmNfYXJlbmEgPSBhcmVuYTsKLSAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKIAogICAgIGsgPSAwOwogICAgIHN3aXRjaCAoVFlQRShuKSkgewogICAgICAgICBjYXNlIGZpbGVfaW5wdXQ6CiAgICAgICAgICAgICBzdG10cyA9IGFzZGxfc2VxX25ldyhudW1fc3RtdHMobiksIGFyZW5hKTsKICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pIC0gMTsgaSsrKSB7CiAgICAgICAgICAgICAgICAgY2ggPSBDSElMRChuLCBpKTsKICAgICAgICAgICAgICAgICBpZiAoVFlQRShjaCkgPT0gTkVXTElORSkKQEAgLTI2OSw3ICs3MjMsNyBAQAogICAgICAgICAgICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBjaCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcykKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHN0bXRzLCBrKyssIHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTI3OCw0MiArNzMyLDQ0IEBACiAgICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBudW07IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGFzdF9mb3Jfc3RtdCgmYywgQ0hJTEQoY2gsIGogKiAyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgaysrLCBzKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBNb2R1bGUoc3RtdHMsIGFyZW5hKTsKKyAgICAgICAgICAgIHJlcyA9IE1vZHVsZShzdG10cywgYXJlbmEpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgZXZhbF9pbnB1dDogewogICAgICAgICAgICAgZXhwcl90eSB0ZXN0bGlzdF9hc3Q7CiAKICAgICAgICAgICAgIC8qIFhYWCBXaHkgbm90IGNvbXBfZm9yIGhlcmU/ICovCiAgICAgICAgICAgICB0ZXN0bGlzdF9hc3QgPSBhc3RfZm9yX3Rlc3RsaXN0KCZjLCBDSElMRChuLCAwKSk7CiAgICAgICAgICAgICBpZiAoIXRlc3RsaXN0X2FzdCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgcmV0dXJuIEV4cHJlc3Npb24odGVzdGxpc3RfYXN0LCBhcmVuYSk7CisgICAgICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgICAgICByZXMgPSBFeHByZXNzaW9uKHRlc3RsaXN0X2FzdCwgYXJlbmEpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBzaW5nbGVfaW5wdXQ6CiAgICAgICAgICAgICBpZiAoVFlQRShDSElMRChuLCAwKSkgPT0gTkVXTElORSkgewogICAgICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KDEsIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0bXRzKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIDAsIFBhc3Mobi0+bl9saW5lbm8sIG4tPm5fY29sX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbmEpKTsKICAgICAgICAgICAgICAgICBpZiAoIWFzZGxfc2VxX0dFVChzdG10cywgMCkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgICAgIHJlcyA9IEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBuID0gQ0hJTEQobiwgMCk7CiAgICAgICAgICAgICAgICAgbnVtID0gbnVtX3N0bXRzKG4pOwogICAgICAgICAgICAgICAgIHN0bXRzID0gYXNkbF9zZXFfbmV3KG51bSwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmICghc3RtdHMpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgIGlmIChudW0gPT0gMSkgewogICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBuKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoc3RtdHMsIDAsIHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIHsKQEAgLTMyNCwyMSArNzgwLDI2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBzID0gYXN0X2Zvcl9zdG10KCZjLCBDSElMRChuLCBpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG91dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzdG10cywgaSAvIDIsIHMpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgcmV0dXJuIEludGVyYWN0aXZlKHN0bXRzLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgcmVzID0gSW50ZXJhY3RpdmUoc3RtdHMsIGFyZW5hKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIG5vZGUgJWQgZm9yIFB5QVNUX0Zyb21Ob2RlIiwgVFlQRShuKSk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgZ290byBvdXQ7CiAgICAgfQotIGVycm9yOgotICAgIGFzdF9lcnJvcl9maW5pc2goZmlsZW5hbWUpOwotICAgIHJldHVybiBOVUxMOworIG91dDoKKyAgICBpZiAoYy5jX25vcm1hbGl6ZSkgeworICAgICAgICBQeV9ERUNSRUYoYy5jX25vcm1hbGl6ZSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYy5jX25vcm1hbGl6ZV9hcmdzLCAxLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGMuY19ub3JtYWxpemVfYXJncyk7CisgICAgfQorICAgIHJldHVybiByZXM7CiB9CiAKIC8qIFJldHVybiB0aGUgQVNUIHJlcHIuIG9mIHRoZSBvcGVyYXRvciByZXByZXNlbnRlZCBhcyBzeW50YXggKHwsIF4sIGV0Yy4pCkBAIC0zODMsMTggKzg0NCwxOCBAQAogfTsKIAogc3RhdGljIGludAotZm9yYmlkZGVuX25hbWUoaWRlbnRpZmllciBuYW1lLCBjb25zdCBub2RlICpuLCBpbnQgZnVsbF9jaGVja3MpCitmb3JiaWRkZW5fbmFtZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBpZGVudGlmaWVyIG5hbWUsIGNvbnN0IG5vZGUgKm4sIGludCBmdWxsX2NoZWNrcykKIHsKICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKG5hbWUpKTsKICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgIl9fZGVidWdfXyIpID09IDApIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJhc3NpZ25tZW50IHRvIGtleXdvcmQiKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmIChmdWxsX2NoZWNrcykgewogICAgICAgICBjb25zdCBjaGFyICoqcDsKICAgICAgICAgZm9yIChwID0gRk9SQklEREVOOyAqcDsgcCsrKSB7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgKnApID09IDApIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiYXNzaWdubWVudCB0byBrZXl3b3JkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQzMCw3ICs4OTEsNyBAQAogICAgIHN3aXRjaCAoZS0+a2luZCkgewogICAgICAgICBjYXNlIEF0dHJpYnV0ZV9raW5kOgogICAgICAgICAgICAgZS0+di5BdHRyaWJ1dGUuY3R4ID0gY3R4OwotICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShlLT52LkF0dHJpYnV0ZS5hdHRyLCBuLCAxKSkKKyAgICAgICAgICAgIGlmIChjdHggPT0gU3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoYywgZS0+di5BdHRyaWJ1dGUuYXR0ciwgbiwgMSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKQEAgLTQ0Myw3ICs5MDQsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTmFtZV9raW5kOgogICAgICAgICAgICAgaWYgKGN0eCA9PSBTdG9yZSkgewotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShlLT52Lk5hbWUuaWQsIG4sIDEpKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBlLT52Lk5hbWUuaWQsIG4sIDEpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsgLyogZm9yYmlkZGVuX25hbWUoKSBjYWxscyBhc3RfZXJyb3IoKSAqLwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZS0+di5OYW1lLmN0eCA9IGN0eDsKQEAgLTQ3Niw2ICs5MzcsNyBAQAogICAgICAgICAgICAgZXhwcl9uYW1lID0gImdlbmVyYXRvciBleHByZXNzaW9uIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFlpZWxkX2tpbmQ6CisgICAgICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6CiAgICAgICAgICAgICBleHByX25hbWUgPSAieWllbGQgZXhwcmVzc2lvbiI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMaXN0Q29tcF9raW5kOgpAQCAtNTE2LDcgKzk3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgImNhbid0ICVzICVzIiwKICAgICAgICAgICAgICAgICAgICAgICBjdHggPT0gU3RvcmUgPyAiYXNzaWduIHRvIiA6ICJkZWxldGUiLAogICAgICAgICAgICAgICAgICAgICAgIGV4cHJfbmFtZSk7Ci0gICAgICAgIHJldHVybiBhc3RfZXJyb3IobiwgYnVmKTsKKyAgICAgICAgcmV0dXJuIGFzdF9lcnJvcihjLCBuLCBidWYpOwogICAgIH0KIAogICAgIC8qIElmIHRoZSBMSFMgaXMgYSBsaXN0IG9yIHR1cGxlLCB3ZSBuZWVkIHRvIHNldCB0aGUgYXNzaWdubWVudApAQCAtNjY0LDcgKzExMjYsNyBAQAogICAgIG5hbWUgPSBORVdfSURFTlRJRklFUihjaCk7CiAgICAgaWYgKCFuYW1lKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZm9yYmlkZGVuX25hbWUobmFtZSwgY2gsIDApKQorICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBuYW1lLCBjaCwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKE5DSChuKSA9PSAzICYmIFRZUEUoQ0hJTEQobiwgMSkpID09IENPTE9OKSB7CkBAIC02OTQsNyArMTE1Niw3IEBACiAgICAgaW50IGogPSAwOyAvKiBpbmRleCBmb3Iga3dkZWZhdWx0cyBhbmQga3dvbmx5YXJncyAqLwogCiAgICAgaWYgKGt3b25seWFyZ3MgPT0gTlVMTCkgewotICAgICAgICBhc3RfZXJyb3IoQ0hJTEQobiwgc3RhcnQpLCAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOworICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQobiwgc3RhcnQpLCAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGFzc2VydChrd2RlZmF1bHRzICE9IE5VTEwpOwpAQCAtNzI2LDcgKzExODgsNyBAQAogICAgICAgICAgICAgICAgIGFyZ25hbWUgPSBORVdfSURFTlRJRklFUihjaCk7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmduYW1lKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShhcmduYW1lLCBjaCwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGFyZ25hbWUsIGNoLCAwKSkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICBhcmcgPSBhcmcoYXJnbmFtZSwgYW5ub3RhdGlvbiwgYy0+Y19hcmVuYSk7CiAgICAgICAgICAgICAgICAgaWYgKCFhcmcpCkBAIC03MzcsNyArMTE5OSw3IEBACiAgICAgICAgICAgICBjYXNlIERPVUJMRVNUQVI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGk7CiAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjaCwgInVuZXhwZWN0ZWQgbm9kZSIpOworICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwgInVuZXhwZWN0ZWQgbm9kZSIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgIH0KICAgICB9CkBAIC04MjksNyArMTI5MSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG5wb3NhcmdzICsgbmt3b25seWFyZ3MgPiAyNTUpIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJtb3JlIHRoYW4gMjU1IGFyZ3VtZW50cyIpOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtODU3LDcgKzEzMTksNyBAQAogICAgICAgICAgICAgICAgICAgICBmb3VuZF9kZWZhdWx0ID0gMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm91bmRfZGVmYXVsdCkgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tZGVmYXVsdCBhcmd1bWVudCBmb2xsb3dzIGRlZmF1bHQgYXJndW1lbnQiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtODY5LDcgKzEzMzEsNyBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVEFSOgogICAgICAgICAgICAgICAgIGlmIChpKzEgPj0gTkNIKG4pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChuLCBpKSwKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKG4sIGkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWVkIGFyZ3VtZW50cyBtdXN0IGZvbGxvdyBiYXJlICoiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtODg2LDcgKzEzNDgsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YXJhcmcgPSBORVdfSURFTlRJRklFUihDSElMRChjaCwgMCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmFyZykKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUodmFyYXJnLCBDSElMRChjaCwgMCksIDApKQorICAgICAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgdmFyYXJnLCBDSElMRChjaCwgMCksIDApKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIGlmIChOQ0goY2gpID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgLyogdGhlcmUgaXMgYW4gYW5ub3RhdGlvbiBvbiB0aGUgdmFyYXJnICovCkBAIC05MTcsNyArMTM3OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmICgha3dhcmdhbm5vdGF0aW9uKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShrd2FyZywgQ0hJTEQoY2gsIDApLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywga3dhcmcsIENISUxEKGNoLCAwKSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIGkgKz0gMzsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEwMzYsNyArMTQ5OCw3IEBACiAgICAgbmFtZSA9IE5FV19JREVOVElGSUVSKENISUxEKG4sIG5hbWVfaSkpOwogICAgIGlmICghbmFtZSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKGZvcmJpZGRlbl9uYW1lKG5hbWUsIENISUxEKG4sIG5hbWVfaSksIDApKQorICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBuYW1lLCBDSElMRChuLCBuYW1lX2kpLCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYXJncyA9IGFzdF9mb3JfYXJndW1lbnRzKGMsIENISUxEKG4sIG5hbWVfaSArIDEpKTsKICAgICBpZiAoIWFyZ3MpCkBAIC0xMzc3LDEwICsxODM5LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGNoYXIgYnVmWzEyOF07CiAgICAgICAgICAgICAgICAgICAgIHMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGVycnN0cik7CiAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIih1bmljb2RlIGVycm9yKSAlcyIsIHMpOwotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sIGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihuLCAiKHVuaWNvZGUgZXJyb3IpIHVua25vd24gZXJyb3IiKTsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICIodW5pY29kZSBlcnJvcikgdW5rbm93biBlcnJvciIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHlwZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKQEAgLTE4OTcsMTIgKzIzNTksMjUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBhc3RfZm9yX2Jpbm9wKGMsIG4pOwogICAgICAgICBjYXNlIHlpZWxkX2V4cHI6IHsKKyAgICAgICAgICAgIG5vZGUgKmFuID0gTlVMTDsKKyAgICAgICAgICAgIG5vZGUgKmVuID0gTlVMTDsKKyAgICAgICAgICAgIGludCBpc19mcm9tID0gMDsKICAgICAgICAgICAgIGV4cHJfdHkgZXhwID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChOQ0gobikgPT0gMikgewotICAgICAgICAgICAgICAgIGV4cCA9IGFzdF9mb3JfdGVzdGxpc3QoYywgQ0hJTEQobiwgMSkpOworICAgICAgICAgICAgaWYgKE5DSChuKSA+IDEpCisgICAgICAgICAgICAgICAgYW4gPSBDSElMRChuLCAxKTsgLyogeWllbGRfYXJnICovCisgICAgICAgICAgICBpZiAoYW4pIHsKKyAgICAgICAgICAgICAgICBlbiA9IENISUxEKGFuLCBOQ0goYW4pIC0gMSk7CisgICAgICAgICAgICAgICAgaWYgKE5DSChhbikgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBpc19mcm9tID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZXhwID0gYXN0X2Zvcl9leHByKGMsIGVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBleHAgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIGVuKTsKICAgICAgICAgICAgICAgICBpZiAoIWV4cCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNfZnJvbSkKKyAgICAgICAgICAgICAgICByZXR1cm4gWWllbGRGcm9tKGV4cCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICAgICAgcmV0dXJuIFlpZWxkKGV4cCwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZmFjdG9yOgpAQCAtMTkyNyw3ICsyNDAyLDcgQEAKICAgICAvKgogICAgICAgYXJnbGlzdDogKGFyZ3VtZW50ICcsJykqIChhcmd1bWVudCBbJywnXXwgJyonIHRlc3QgWycsJyAnKionIHRlc3RdCiAgICAgICAgICAgICAgICB8ICcqKicgdGVzdCkKLSAgICAgIGFyZ3VtZW50OiBbdGVzdCAnPSddIHRlc3QgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CisgICAgICBhcmd1bWVudDogW3Rlc3QgJz0nXSAodGVzdCkgW2NvbXBfZm9yXSAgICAgICAgIyBSZWFsbHkgW2tleXdvcmQgJz0nXSB0ZXN0CiAgICAgKi8KIAogICAgIGludCBpLCBuYXJncywgbmtleXdvcmRzLCBuZ2VuczsKQEAgLTE5NTIsMTQgKzI0MjcsMTQgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAobmdlbnMgPiAxIHx8IChuZ2VucyAmJiAobmFyZ3MgfHwgbmtleXdvcmRzKSkpIHsKLSAgICAgICAgYXN0X2Vycm9yKG4sICJHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgIgorICAgICAgICBhc3RfZXJyb3IoYywgbiwgIkdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCAiCiAgICAgICAgICAgICAgICAgICAiaWYgbm90IHNvbGUgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5hcmdzICsgbmtleXdvcmRzICsgbmdlbnMgPiAyNTUpIHsKLSAgICAgIGFzdF9lcnJvcihuLCAibW9yZSB0aGFuIDI1NSBhcmd1bWVudHMiKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgIm1vcmUgdGhhbiAyNTUgYXJndW1lbnRzIik7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAogICAgIGFyZ3MgPSBhc2RsX3NlcV9uZXcobmFyZ3MgKyBuZ2VucywgYy0+Y19hcmVuYSk7CkBAIC0xOTc2LDEyICsyNDUxLDEyIEBACiAgICAgICAgICAgICBleHByX3R5IGU7CiAgICAgICAgICAgICBpZiAoTkNIKGNoKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5rZXl3b3JkcykgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vbi1rZXl3b3JkIGFyZyBhZnRlciBrZXl3b3JkIGFyZyIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHZhcmFyZykgewotICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLAorICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQoY2gsIDApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgbmFtZWQgYXJndW1lbnRzIG1heSBmb2xsb3cgKmV4cHJlc3Npb24iKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjAxMSwxOSArMjQ4NiwxOSBAQAogICAgICAgICAgICAgICAgICAqIHRoZW4gaXMgdmVyeSBjb25mdXNpbmcuCiAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgaWYgKGUtPmtpbmQgPT0gTGFtYmRhX2tpbmQpIHsKLSAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihDSElMRChjaCwgMCksICJsYW1iZGEgY2Fubm90IGNvbnRhaW4gYXNzaWdubWVudCIpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJsYW1iZGEgY2Fubm90IGNvbnRhaW4gYXNzaWdubWVudCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUtPmtpbmQgIT0gTmFtZV9raW5kKSB7Ci0gICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoQ0hJTEQoY2gsIDApLCAia2V5d29yZCBjYW4ndCBiZSBhbiBleHByZXNzaW9uIik7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcmJpZGRlbl9uYW1lKGUtPnYuTmFtZS5pZCwgY2gsIDEpKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIENISUxEKGNoLCAwKSwgImtleXdvcmQgY2FuJ3QgYmUgYW4gZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGUtPnYuTmFtZS5pZCwgY2gsIDEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBrZXkgPSBlLT52Lk5hbWUuaWQ7CiAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IG5rZXl3b3JkczsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgIHRtcCA9ICgoa2V5d29yZF90eSlhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGspKS0+YXJnOwogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKHRtcCwga2V5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKENISUxEKGNoLCAwKSwgImtleXdvcmQgYXJndW1lbnQgcmVwZWF0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBDSElMRChjaCwgMCksICJrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkIik7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIxMTYsNyArMjU5MSw3IEBACiAgICAgICAgICAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoY2gsICJpbGxlZ2FsIGV4cHJlc3Npb24gZm9yIGF1Z21lbnRlZCBhc3NpZ25tZW50Iik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAiaWxsZWdhbCBleHByZXNzaW9uIGZvciBhdWdtZW50ZWQgYXNzaWdubWVudCIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTIxNDksNyArMjYyNCw3IEBACiAgICAgICAgICAgICBleHByX3R5IGU7CiAgICAgICAgICAgICBub2RlICpjaCA9IENISUxEKG4sIGkpOwogICAgICAgICAgICAgaWYgKFRZUEUoY2gpID09IHlpZWxkX2V4cHIpIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IoY2gsICJhc3NpZ25tZW50IHRvIHlpZWxkIGV4cHJlc3Npb24gbm90IHBvc3NpYmxlIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIGNoLCAiYXNzaWdubWVudCB0byB5aWVsZCBleHByZXNzaW9uIG5vdCBwb3NzaWJsZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZSA9IGFzdF9mb3JfdGVzdGxpc3QoYywgY2gpOwpAQCAtMjIyMSw3ICsyNjk2LDcgQEAKICAgICAgIGNvbnRpbnVlX3N0bXQ6ICdjb250aW51ZScKICAgICAgIHJldHVybl9zdG10OiAncmV0dXJuJyBbdGVzdGxpc3RdCiAgICAgICB5aWVsZF9zdG10OiB5aWVsZF9leHByCi0gICAgICB5aWVsZF9leHByOiAneWllbGQnIHRlc3RsaXN0CisgICAgICB5aWVsZF9leHByOiAneWllbGQnIHRlc3RsaXN0IHwgJ3lpZWxkJyAnZnJvbScgdGVzdAogICAgICAgcmFpc2Vfc3RtdDogJ3JhaXNlJyBbdGVzdCBbJywnIHRlc3QgWycsJyB0ZXN0XV1dCiAgICAgKi8KICAgICBub2RlICpjaDsKQEAgLTIyOTYsMTEgKzI3NzEsMTEgQEAKICAgICAgICAgICAgICAgICBzdHIgPSBORVdfSURFTlRJRklFUihzdHJfbm9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFzdHIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGlmIChzdG9yZSAmJiBmb3JiaWRkZW5fbmFtZShzdHIsIHN0cl9ub2RlLCAwKSkKKyAgICAgICAgICAgICAgICBpZiAoc3RvcmUgJiYgZm9yYmlkZGVuX25hbWUoYywgc3RyLCBzdHJfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKG5hbWUsIG5hbWVfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIG5hbWVfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGFsaWFzKG5hbWUsIHN0ciwgYy0+Y19hcmVuYSk7CkBAIC0yMzE5LDcgKzI3OTQsNyBAQAogICAgICAgICAgICAgICAgIGEtPmFzbmFtZSA9IE5FV19JREVOVElGSUVSKGFzbmFtZV9ub2RlKTsKICAgICAgICAgICAgICAgICBpZiAoIWEtPmFzbmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGEtPmFzbmFtZSwgYXNuYW1lX25vZGUsIDApKQorICAgICAgICAgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBhLT5hc25hbWUsIGFzbmFtZV9ub2RlLCAwKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGE7CiAgICAgICAgICAgICB9CkBAIC0yMzMwLDcgKzI4MDUsNyBAQAogICAgICAgICAgICAgICAgIG5hbWUgPSBORVdfSURFTlRJRklFUihuYW1lX25vZGUpOwogICAgICAgICAgICAgICAgIGlmICghbmFtZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKG5hbWUsIG5hbWVfbm9kZSwgMCkpCisgICAgICAgICAgICAgICAgaWYgKHN0b3JlICYmIGZvcmJpZGRlbl9uYW1lKGMsIG5hbWUsIG5hbWVfbm9kZSwgMCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiBhbGlhcyhuYW1lLCBOVUxMLCBjLT5jX2FyZW5hKTsKICAgICAgICAgICAgIH0KQEAgLTI0NTksMTMgKzI5MzQsMTMgQEAKICAgICAgICAgICAgIG4gPSBDSElMRChuLCBpZHgpOwogICAgICAgICAgICAgbl9jaGlsZHJlbiA9IE5DSChuKTsKICAgICAgICAgICAgIGlmIChuX2NoaWxkcmVuICUgMiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJ0cmFpbGluZyBjb21tYSBub3QgYWxsb3dlZCB3aXRob3V0IgorICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAidHJhaWxpbmcgY29tbWEgbm90IGFsbG93ZWQgd2l0aG91dCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzdXJyb3VuZGluZyBwYXJlbnRoZXNlcyIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3RfZXJyb3IobiwgIlVuZXhwZWN0ZWQgbm9kZS10eXBlIGluIGZyb20taW1wb3J0Iik7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgIlVuZXhwZWN0ZWQgbm9kZS10eXBlIGluIGZyb20taW1wb3J0Iik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCkBAIC0yODcxLDcgKzMzNDYsNyBAQAogICAgICAgICBpZGVudGlmaWVyIGUgPSBORVdfSURFTlRJRklFUihDSElMRChleGMsIDMpKTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShlLCBDSElMRChleGMsIDMpLCAwKSkKKyAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGUsIENISUxEKGV4YywgMyksIDApKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGV4cHJlc3Npb24gPSBhc3RfZm9yX2V4cHIoYywgQ0hJTEQoZXhjLCAxKSk7CiAgICAgICAgIGlmICghZXhwcmVzc2lvbikKQEAgLTI4OTUsNyArMzM3MCw3IEBACiB7CiAgICAgY29uc3QgaW50IG5jaCA9IE5DSChuKTsKICAgICBpbnQgbl9leGNlcHQgPSAobmNoIC0gMykvMzsKLSAgICBhc2RsX3NlcSAqYm9keSwgKm9yZWxzZSA9IE5VTEwsICpmaW5hbGx5ID0gTlVMTDsKKyAgICBhc2RsX3NlcSAqYm9keSwgKmhhbmRsZXJzID0gTlVMTCwgKm9yZWxzZSA9IE5VTEwsICpmaW5hbGx5ID0gTlVMTDsKIAogICAgIFJFUShuLCB0cnlfc3RtdCk7CiAKQEAgLTI5MzAsMTUgKzM0MDUsMTQgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChUWVBFKENISUxEKG4sIG5jaCAtIDMpKSAhPSBleGNlcHRfY2xhdXNlKSB7Ci0gICAgICAgIGFzdF9lcnJvcihuLCAibWFsZm9ybWVkICd0cnknIHN0YXRlbWVudCIpOworICAgICAgICBhc3RfZXJyb3IoYywgbiwgIm1hbGZvcm1lZCAndHJ5JyBzdGF0ZW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5fZXhjZXB0ID4gMCkgewogICAgICAgICBpbnQgaTsKLSAgICAgICAgc3RtdF90eSBleGNlcHRfc3Q7CiAgICAgICAgIC8qIHByb2Nlc3MgZXhjZXB0IHN0YXRlbWVudHMgdG8gY3JlYXRlIGEgdHJ5IC4uLiBleGNlcHQgKi8KLSAgICAgICAgYXNkbF9zZXEgKmhhbmRsZXJzID0gYXNkbF9zZXFfbmV3KG5fZXhjZXB0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgaGFuZGxlcnMgPSBhc2RsX3NlcV9uZXcobl9leGNlcHQsIGMtPmNfYXJlbmEpOwogICAgICAgICBpZiAoaGFuZGxlcnMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0yOTQ5LDI4ICszNDIzLDE1IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoaGFuZGxlcnMsIGksIGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgZXhjZXB0X3N0ID0gVHJ5RXhjZXB0KGJvZHksIGhhbmRsZXJzLCBvcmVsc2UsIExJTkVOTyhuKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Ci0gICAgICAgIGlmICghZmluYWxseSkKLSAgICAgICAgICAgIHJldHVybiBleGNlcHRfc3Q7Ci0KLSAgICAgICAgLyogaWYgYSAnZmluYWxseScgaXMgcHJlc2VudCB0b28sIHdlIG5lc3QgdGhlIFRyeUV4Y2VwdCB3aXRoaW4gYQotICAgICAgICAgICBUcnlGaW5hbGx5IHRvIGVtdWxhdGUgdHJ5IC4uLiBleGNlcHQgLi4uIGZpbmFsbHkgKi8KLSAgICAgICAgYm9keSA9IGFzZGxfc2VxX25ldygxLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgMCwgZXhjZXB0X3N0KTsKICAgICB9CiAKLSAgICAvKiBtdXN0IGJlIGEgdHJ5IC4uLiBmaW5hbGx5IChleGNlcHQgY2xhdXNlcyBhcmUgaW4gYm9keSwgaWYgYW55IGV4aXN0KSAqLwotICAgIGFzc2VydChmaW5hbGx5ICE9IE5VTEwpOwotICAgIHJldHVybiBUcnlGaW5hbGx5KGJvZHksIGZpbmFsbHksIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICBhc3NlcnQoZmluYWxseSAhPSBOVUxMIHx8IGFzZGxfc2VxX0xFTihoYW5kbGVycykpOworICAgIHJldHVybiBUcnkoYm9keSwgaGFuZGxlcnMsIG9yZWxzZSwgZmluYWxseSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCiAvKiB3aXRoX2l0ZW06IHRlc3QgWydhcycgZXhwcl0gKi8KLXN0YXRpYyBzdG10X3R5Ci1hc3RfZm9yX3dpdGhfaXRlbShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBhc2RsX3NlcSAqY29udGVudCkKK3N0YXRpYyB3aXRoaXRlbV90eQorYXN0X2Zvcl93aXRoX2l0ZW0oc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBleHByX3R5IGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycyA9IE5VTEw7CiAKQEAgLTI5ODksNDMgKzM0NTAsMzQgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBXaXRoKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgY29udGVudCwgTElORU5PKG4pLAotICAgICAgICAgICAgICAgIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgcmV0dXJuIHdpdGhpdGVtKGNvbnRleHRfZXhwciwgb3B0aW9uYWxfdmFycywgYy0+Y19hcmVuYSk7CiB9CiAKIC8qIHdpdGhfc3RtdDogJ3dpdGgnIHdpdGhfaXRlbSAoJywnIHdpdGhfaXRlbSkqICc6JyBzdWl0ZSAqLwogc3RhdGljIHN0bXRfdHkKIGFzdF9mb3Jfd2l0aF9zdG10KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCiB7Ci0gICAgaW50IGk7Ci0gICAgc3RtdF90eSByZXQ7Ci0gICAgYXNkbF9zZXEgKmlubmVyOworICAgIGludCBpLCBuX2l0ZW1zOworICAgIGFzZGxfc2VxICppdGVtcywgKmJvZHk7CiAKICAgICBSRVEobiwgd2l0aF9zdG10KTsKIAotICAgIC8qIHByb2Nlc3MgdGhlIHdpdGggaXRlbXMgaW5zaWRlLW91dCAqLwotICAgIGkgPSBOQ0gobikgLSAxOwotICAgIC8qIHRoZSBzdWl0ZSBvZiB0aGUgaW5uZXJtb3N0IHdpdGggaXRlbSBpcyB0aGUgc3VpdGUgb2YgdGhlIHdpdGggc3RtdCAqLwotICAgIGlubmVyID0gYXN0X2Zvcl9zdWl0ZShjLCBDSElMRChuLCBpKSk7Ci0gICAgaWYgKCFpbm5lcikKKyAgICBuX2l0ZW1zID0gKE5DSChuKSAtIDIpIC8gMjsKKyAgICBpdGVtcyA9IGFzZGxfc2VxX25ldyhuX2l0ZW1zLCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIWl0ZW1zKQogICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgaSAtPSAyOwotICAgICAgICByZXQgPSBhc3RfZm9yX3dpdGhfaXRlbShjLCBDSElMRChuLCBpKSwgaW5uZXIpOwotICAgICAgICBpZiAoIXJldCkKKyAgICBmb3IgKGkgPSAxOyBpIDwgTkNIKG4pIC0gMjsgaSArPSAyKSB7CisgICAgICAgIHdpdGhpdGVtX3R5IGl0ZW0gPSBhc3RfZm9yX3dpdGhfaXRlbShjLCBDSElMRChuLCBpKSk7CisgICAgICAgIGlmICghaXRlbSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiB3YXMgdGhpcyB0aGUgbGFzdCBpdGVtPyAqLwotICAgICAgICBpZiAoaSA9PSAxKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8qIGlmIG5vdCwgd3JhcCB0aGUgcmVzdWx0IHNvIGZhciBpbiBhIG5ldyBzZXF1ZW5jZSAqLwotICAgICAgICBpbm5lciA9IGFzZGxfc2VxX25ldygxLCBjLT5jX2FyZW5hKTsKLSAgICAgICAgaWYgKCFpbm5lcikKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBhc2RsX3NlcV9TRVQoaW5uZXIsIDAsIHJldCk7CisgICAgICAgIGFzZGxfc2VxX1NFVChpdGVtcywgKGkgLSAxKSAvIDIsIGl0ZW0pOwogICAgIH0KIAotICAgIHJldHVybiByZXQ7CisgICAgYm9keSA9IGFzdF9mb3Jfc3VpdGUoYywgQ0hJTEQobiwgTkNIKG4pIC0gMSkpOworICAgIGlmICghYm9keSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gV2l0aChpdGVtcywgYm9keSwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwogfQogCiBzdGF0aWMgc3RtdF90eQpAQCAtMzA0NSw3ICszNDk3LDcgQEAKICAgICAgICAgY2xhc3NuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgMSkpOwogICAgICAgICBpZiAoIWNsYXNzbmFtZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCisgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAogICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwpAQCAtMzA1OCw3ICszNTEwLDcgQEAKICAgICAgICAgY2xhc3NuYW1lID0gTkVXX0lERU5USUZJRVIoQ0hJTEQobiwgMSkpOwogICAgICAgICBpZiAoIWNsYXNzbmFtZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoY2xhc3NuYW1lLCBDSElMRChuLCAzKSwgMCkpCisgICAgICAgIGlmIChmb3JiaWRkZW5fbmFtZShjLCBjbGFzc25hbWUsIENISUxEKG4sIDMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXR1cm4gQ2xhc3NEZWYoY2xhc3NuYW1lLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLCBzLCBkZWNvcmF0b3Jfc2VxLAogICAgICAgICAgICAgICAgICAgICAgICAgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOwpAQCAtMzA4Myw3ICszNTM1LDcgQEAKICAgICBjbGFzc25hbWUgPSBORVdfSURFTlRJRklFUihDSElMRChuLCAxKSk7CiAgICAgaWYgKCFjbGFzc25hbWUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChmb3JiaWRkZW5fbmFtZShjbGFzc25hbWUsIENISUxEKG4sIDEpLCAwKSkKKyAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgY2xhc3NuYW1lLCBDSElMRChuLCAxKSwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmV0dXJuIENsYXNzRGVmKGNsYXNzbmFtZSwgY2FsbC0+di5DYWxsLmFyZ3MsIGNhbGwtPnYuQ2FsbC5rZXl3b3JkcywKQEAgLTMyMDksMjAgKzM2NjEsMTQgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlY29kZV91dGY4KHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKipzUHRyLCBjb25zdCBjaGFyICplbmQsIGNoYXIqIGVuY29kaW5nKQorZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKLSAgICBQeU9iamVjdCAqdSwgKnY7CiAgICAgY2hhciAqcywgKnQ7CiAgICAgdCA9IHMgPSAoY2hhciAqKSpzUHRyOwogICAgIC8qIHdoaWxlIChzIDwgZW5kICYmICpzICE9ICdcXCcpIHMrKzsgKi8gLyogaW5lZmZpY2llbnQgZm9yIHUiLi4iICovCiAgICAgd2hpbGUgKHMgPCBlbmQgJiYgKCpzICYgMHg4MCkpIHMrKzsKICAgICAqc1B0ciA9IHM7Ci0gICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHQsIHMgLSB0LCBOVUxMKTsKLSAgICBpZiAodSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCBlbmNvZGluZywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKHUpOwotICAgIHJldHVybiB2OworICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOCh0LCBzIC0gdCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0zMjM0LDcgKzM2ODAsNiBAQAogICAgIGNvbnN0IGNoYXIgKmVuZDsKIAogICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIGJ1ZiA9IChjaGFyICopczsKICAgICAgICAgdSA9IE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTMyNTcsMjIgKzM3MDIsMjAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnc7Ci0gICAgICAgICAgICAgICAgY2hhciAqcjsKLSAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHJuLCBpOwotICAgICAgICAgICAgICAgIHcgPSBkZWNvZGVfdXRmOChjLCAmcywgZW5kLCAidXRmLTMyLWJlIik7CisgICAgICAgICAgICAgICAgaW50IGtpbmQ7CisgICAgICAgICAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwgaTsKKyAgICAgICAgICAgICAgICB3ID0gZGVjb2RlX3V0ZjgoYywgJnMsIGVuZCk7CiAgICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByID0gUHlCeXRlc19BU19TVFJJTkcodyk7Ci0gICAgICAgICAgICAgICAgcm4gPSBQeV9TSVpFKHcpOwotICAgICAgICAgICAgICAgIGFzc2VydChybiAlIDQgPT0gMCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHJuOyBpICs9IDQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTAyeCUwMnglMDJ4JTAyeCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgMF0gJiAweEZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbaSArIDFdICYgMHhGRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByW2kgKyAyXSAmIDB4RkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcltpICsgM10gJiAweEZGKTsKKyAgICAgICAgICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodyk7CisgICAgICAgICAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHcpOworICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IGNociA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKICAgICAgICAgICAgICAgICAgICAgcCArPSAxMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KQEAgLTMzMDYsMTMgKzM3NDksMjEgQEAKICAgICBpbnQgcmF3bW9kZSA9IDA7CiAgICAgaW50IG5lZWRfZW5jb2Rpbmc7CiAgICAgaWYgKGlzYWxwaGEocXVvdGUpKSB7Ci0gICAgICAgIGlmIChxdW90ZSA9PSAnYicgfHwgcXVvdGUgPT0gJ0InKSB7Ci0gICAgICAgICAgICBxdW90ZSA9ICorK3M7Ci0gICAgICAgICAgICAqYnl0ZXNtb2RlID0gMTsKLSAgICAgICAgfQotICAgICAgICBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgewotICAgICAgICAgICAgcXVvdGUgPSAqKytzOwotICAgICAgICAgICAgcmF3bW9kZSA9IDE7CisgICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhcmF3bW9kZSkgeworICAgICAgICAgICAgaWYgKHF1b3RlID09ICdiJyB8fCBxdW90ZSA9PSAnQicpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICAgICAgKmJ5dGVzbW9kZSA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAndScgfHwgcXVvdGUgPT0gJ1UnKSB7CisgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocXVvdGUgPT0gJ3InIHx8IHF1b3RlID09ICdSJykgeworICAgICAgICAgICAgICAgIHF1b3RlID0gKisrczsKKyAgICAgICAgICAgICAgICByYXdtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChxdW90ZSAhPSAnXCcnICYmIHF1b3RlICE9ICdcIicpIHsKQEAgLTMzNDMsMTAgKzM3OTQsMTAgQEAKICAgICB9CiAgICAgaWYgKCpieXRlc21vZGUpIHsKICAgICAgICAgLyogRGlzYWxsb3cgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKGJ1dCBub3QgZXNjYXBlcykgKi8KLSAgICAgICAgY29uc3QgY2hhciAqYzsKLSAgICAgICAgZm9yIChjID0gczsgKmM7IGMrKykgewotICAgICAgICAgICAgaWYgKFB5X0NIQVJNQVNLKCpjKSA+PSAweDgwKSB7Ci0gICAgICAgICAgICAgICAgYXN0X2Vycm9yKG4sICJieXRlcyBjYW4gb25seSBjb250YWluIEFTQ0lJICIKKyAgICAgICAgY29uc3QgY2hhciAqY2g7CisgICAgICAgIGZvciAoY2ggPSBzOyAqY2g7IGNoKyspIHsKKyAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqY2gpID49IDB4ODApIHsKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImJ5dGVzIGNhbiBvbmx5IGNvbnRhaW4gQVNDSUkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAibGl0ZXJhbCBjaGFyYWN0ZXJzLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMzM5NCw3ICszODQ1LDcgQEAKICAgICAgICAgICAgIGlmIChzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwogICAgICAgICAgICAgaWYgKCpieXRlc21vZGUgIT0gc3ViYm0pIHsKLSAgICAgICAgICAgICAgICBhc3RfZXJyb3IobiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7CisgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJjYW5ub3QgbWl4IGJ5dGVzIGFuZCBub25ieXRlcyBsaXRlcmFscyIpOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IGI4NWUzN2IuLjBlNmU2ZmYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC02LDYgKzYsOSBAQAogI2luY2x1ZGUgIm5vZGUuaCIKICNpbmNsdWRlICJjb2RlLmgiCiAKKyNpbmNsdWRlICJhc2RsLmgiCisjaW5jbHVkZSAiYXN0LmgiCisKICNpbmNsdWRlIDxjdHlwZS5oPgogCiAjaWZkZWYgSEFWRV9MQU5HSU5GT19ICkBAIC0xOCwyMCArMjEsMjAgQEAKICAgIERvbid0IGZvcmdldCB0byBtb2RpZnkgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCgpIGlmIHlvdSB0b3VjaCBhbnkgb2YgdGhlCiAgICB2YWx1ZXMgZm9yIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmchCiAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgZGVmaW5lZChIQVZFX1VTQUJMRV9XQ0hBUl9UKQorI2lmZGVmIEhBVkVfTUJDUwogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKIGludCBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gMTsKICNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQogY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJ1dGYtOCI7CiBpbnQgUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IDE7Ci0jZWxpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQorI2Vsc2UKIGNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBOVUxMOyAvKiBzZXQgYnkgaW5pdGZzZW5jb2RpbmcoKSAqLwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAwOwotI2Vsc2UKLWNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOwotaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwogI2VuZGlmCiAKK19QeV9JREVOVElGSUVSKGZpbGVubyk7CitfUHlfSURFTlRJRklFUihmbHVzaCk7CisKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX19fYnVpbGRfY2xhc3NfXyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewpAQCAtMzksNiArNDIsNyBAQAogICAgIFB5T2JqZWN0ICpjbHMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAgICAgaW50IGlzY2xhc3M7CisgICAgX1B5X0lERU5USUZJRVIoX19wcmVwYXJlX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCk7CiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CkBAIC05OSw2ICsxMDMsNyBAQAogICAgICAgICBQeV9JTkNSRUYobWV0YSk7CiAgICAgICAgIGlzY2xhc3MgPSAxOyAgLyogbWV0YSBpcyByZWFsbHkgYSBjbGFzcyAqLwogICAgIH0KKwogICAgIGlmIChpc2NsYXNzKSB7CiAgICAgICAgIC8qIG1ldGEgaXMgcmVhbGx5IGEgY2xhc3MsIHNvIGNoZWNrIGZvciBhIG1vcmUgZGVyaXZlZAogICAgICAgICAgICBtZXRhY2xhc3MsIG9yIHBvc3NpYmxlIG1ldGFjbGFzcyBjb25mbGljdHM6ICovCkBAIC0xMTgsNyArMTIzLDcgQEAKICAgICB9CiAgICAgLyogZWxzZTogbWV0YSBpcyBub3QgYSBjbGFzcywgc28gd2UgY2Fubm90IGRvIHRoZSBtZXRhY2xhc3MKICAgICAgICBjYWxjdWxhdGlvbiwgc28gd2Ugd2lsbCB1c2UgdGhlIGV4cGxpY2l0bHkgZ2l2ZW4gb2JqZWN0IGFzIGl0IGlzICovCi0gICAgcHJlcCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobWV0YSwgIl9fcHJlcGFyZV9fIik7CisgICAgcHJlcCA9IF9QeU9iamVjdF9HZXRBdHRySWQobWV0YSwgJlB5SWRfX19wcmVwYXJlX18pOwogICAgIGlmIChwcmVwID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMTc5LDIxICsxODQsMTggQEAKIHsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im5hbWUiLCAiZ2xvYmFscyIsICJsb2NhbHMiLCAiZnJvbWxpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiLCAwfTsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbG9jYWxzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBOVUxMOwotICAgIGludCBsZXZlbCA9IC0xOworICAgIFB5T2JqZWN0ICpuYW1lLCAqZ2xvYmFscyA9IE5VTEwsICpsb2NhbHMgPSBOVUxMLCAqZnJvbWxpc3QgPSBOVUxMOworICAgIGludCBsZXZlbCA9IDA7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAic3xPT09pOl9faW1wb3J0X18iLAorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJVfE9PT2k6X19pbXBvcnRfXyIsCiAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm5hbWUsICZnbG9iYWxzLCAmbG9jYWxzLCAmZnJvbWxpc3QsICZsZXZlbCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChuYW1lLCBnbG9iYWxzLCBsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBsZXZlbCk7CisgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KG5hbWUsIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3QsIGxldmVsKTsKIH0KIAogUHlEb2NfU1RSVkFSKGltcG9ydF9kb2MsCi0iX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0tMSkgLT4gbW9kdWxlXG5cCisiX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lLCBmcm9tbGlzdD0oKSwgbGV2ZWw9MCkgLT4gbW9kdWxlXG5cCiBcblwKIEltcG9ydCBhIG1vZHVsZS4gQmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciB1c2UgYnkgdGhlIFB5dGhvblxuXAogaW50ZXJwcmV0ZXIgYW5kIG5vdCBmb3IgZ2VuZXJhbCB1c2UgaXQgaXMgYmV0dGVyIHRvIHVzZVxuXApAQCAtMjA2LDggKzIwOCw3IEBACiBXaGVuIGltcG9ydGluZyBhIG1vZHVsZSBmcm9tIGEgcGFja2FnZSwgbm90ZSB0aGF0IF9faW1wb3J0X18oJ0EuQicsIC4uLilcblwKIHJldHVybnMgcGFja2FnZSBBIHdoZW4gZnJvbWxpc3QgaXMgZW1wdHksIGJ1dCBpdHMgc3VibW9kdWxlIEIgd2hlblxuXAogZnJvbWxpc3QgaXMgbm90IGVtcHR5LiAgTGV2ZWwgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0byBwZXJmb3JtIFxuXAotYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gIC0xIGlzIHRoZSBvcmlnaW5hbCBzdHJhdGVneSBvZiBhdHRlbXB0aW5nXG5cCi1ib3RoIGFic29sdXRlIGFuZCByZWxhdGl2ZSBpbXBvcnRzLCAwIGlzIGFic29sdXRlLCBhIHBvc2l0aXZlIG51bWJlclxuXAorYWJzb2x1dGUgb3IgcmVsYXRpdmUgaW1wb3J0cy4gMCBpcyBhYnNvbHV0ZSB3aGlsZSBhIHBvc2l0aXZlIG51bWJlclxuXAogaXMgdGhlIG51bWJlciBvZiBwYXJlbnQgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IG1vZHVsZS4iKTsKIAogCkBAIC00MzYsNiArNDM3LDE5IEBACiAgICAgfQogfQogCitzdGF0aWMgUHlPYmplY3QgKgorZmlsdGVyX3JlZHVjZShmaWx0ZXJvYmplY3QgKmx6KQoreworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPKE9PKSIsIFB5X1RZUEUobHopLCBsei0+ZnVuYywgbHotPml0KTsKK30KKworUHlEb2NfU1RSVkFSKHJlZHVjZV9kb2MsICJSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLiIpOworCitzdGF0aWMgUHlNZXRob2REZWYgZmlsdGVyX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgIChQeUNGdW5jdGlvbilmaWx0ZXJfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKwogUHlEb2NfU1RSVkFSKGZpbHRlcl9kb2MsCiAiZmlsdGVyKGZ1bmN0aW9uIG9yIE5vbmUsIGl0ZXJhYmxlKSAtLT4gZmlsdGVyIG9iamVjdFxuXAogXG5cCkBAIC00NzIsNyArNDg2LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKWZpbHRlcl9uZXh0LCAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICBmaWx0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWVtYmVycyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2UgKi8KQEAgLTUxNiwxNyArNTMwLDEwIEBACiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh4KTsKIH0KIAotUHlEb2NfVkFSKGNocl9kb2MpID0gUHlEb2NfU1RSKAorUHlEb2NfU1RSVkFSKGNocl9kb2MsCiAiY2hyKGkpIC0+IFVuaWNvZGUgY2hhcmFjdGVyXG5cCiBcblwKLVJldHVybiBhIFVuaWNvZGUgc3RyaW5nIG9mIG9uZSBjaGFyYWN0ZXIgd2l0aCBvcmRpbmFsIGk7IDAgPD0gaSA8PSAweDEwZmZmZi4iCi0pCi0jaWZuZGVmIFB5X1VOSUNPREVfV0lERQotUHlEb2NfU1RSKAotIlxuSWYgMHgxMDAwMCA8PSBpLCBhIHN1cnJvZ2F0ZSBwYWlyIGlzIHJldHVybmVkLiIKLSkKLSNlbmRpZgotOworUmV0dXJuIGEgVW5pY29kZSBzdHJpbmcgb2Ygb25lIGNoYXJhY3RlciB3aXRoIG9yZGluYWwgaTsgMCA8PSBpIDw9IDB4MTBmZmZmLiIpOwogCiAKIHN0YXRpYyBjaGFyICoKQEAgLTUzNyw4ICs1NDQsOCBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhjbWQpKSB7CiAgICAgICAgIGNmLT5jZl9mbGFncyB8PSBQeUNGX0lHTk9SRV9DT09LSUU7Ci0gICAgICAgIGNtZCA9IF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhjbWQsIE5VTEwpOwotICAgICAgICBpZiAoY21kID09IE5VTEwpCisgICAgICAgIHN0ciA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGNtZCwgJnNpemUpOworICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSBpZiAoIVB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcihjbWQpKSB7CkBAIC01NDcsOSArNTU0LDEwIEBACiAgICAgICAgICAgZnVuY25hbWUsIHdoYXQpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X0FzUmVhZEJ1ZmZlcihjbWQsIChjb25zdCB2b2lkICoqKSZzdHIsICZzaXplKSA8IDApIHsKKyAgICBlbHNlIGlmIChQeU9iamVjdF9Bc1JlYWRCdWZmZXIoY21kLCAoY29uc3Qgdm9pZCAqKikmc3RyLCAmc2l6ZSkgPCAwKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKwogICAgIGlmIChzdHJsZW4oc3RyKSAhPSBzaXplKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIGNvZGUgc3RyaW5nIGNhbm5vdCBjb250YWluIG51bGwgYnl0ZXMiKTsKQEAgLTYzOCw2ICs2NDYsMTAgQEAKICAgICAgICAgICAgICAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIVB5QVNUX1ZhbGlkYXRlKG1vZCkpIHsKKyAgICAgICAgICAgICAgICBQeUFyZW5hX0ZyZWUoYXJlbmEpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSAoUHlPYmplY3QqKVB5QVNUX0NvbXBpbGVFeChtb2QsIGZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNmLCBvcHRpbWl6ZSwgYXJlbmEpOwogICAgICAgICAgICAgUHlBcmVuYV9GcmVlKGFyZW5hKTsKQEAgLTc5Myw3ICs4MDUsNiBAQAogewogICAgIFB5T2JqZWN0ICp2OwogICAgIFB5T2JqZWN0ICpwcm9nLCAqZ2xvYmFscyA9IFB5X05vbmUsICpsb2NhbHMgPSBQeV9Ob25lOwotICAgIGludCBwbGFpbiA9IDA7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwgMSwgMywgJnByb2csICZnbG9iYWxzLCAmbG9jYWxzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04MDIsNyArODEzLDYgQEAKICAgICAgICAgZ2xvYmFscyA9IFB5RXZhbF9HZXRHbG9iYWxzKCk7CiAgICAgICAgIGlmIChsb2NhbHMgPT0gUHlfTm9uZSkgewogICAgICAgICAgICAgbG9jYWxzID0gUHlFdmFsX0dldExvY2FscygpOwotICAgICAgICAgICAgcGxhaW4gPSAxOwogICAgICAgICB9CiAgICAgICAgIGlmICghZ2xvYmFscyB8fCAhbG9jYWxzKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCkBAIC0xMDU4LDYgKzEwNjgsMzEgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgorbWFwX3JlZHVjZShtYXBvYmplY3QgKmx6KQoreworICAgIFB5X3NzaXplX3QgbnVtYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUobHotPml0ZXJzKTsKKyAgICBQeU9iamVjdCAqYXJncyA9IFB5VHVwbGVfTmV3KG51bWFyZ3MrMSk7CisgICAgUHlfc3NpemVfdCBpOworICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIFB5X0lOQ1JFRihsei0+ZnVuYyk7CisgICAgUHlUdXBsZV9TRVRfSVRFTShhcmdzLCAwLCBsei0+ZnVuYyk7CisgICAgZm9yIChpID0gMDsgaTxudW1hcmdzOyBpKyspeworICAgICAgICBQeU9iamVjdCAqaXQgPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5pdGVycywgaSk7CisgICAgICAgIFB5X0lOQ1JFRihpdCk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaSsxLCBpdCk7CisgICAgfQorCisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk9OIiwgUHlfVFlQRShseiksIGFyZ3MpOworfQorCitzdGF0aWMgUHlNZXRob2REZWYgbWFwX21ldGhvZHNbXSA9IHsKKyAgICB7Il9fcmVkdWNlX18iLCAgIChQeUNGdW5jdGlvbiltYXBfcmVkdWNlLCAgIE1FVEhfTk9BUkdTLCByZWR1Y2VfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworCiBQeURvY19TVFJWQVIobWFwX2RvYywKICJtYXAoZnVuYywgKml0ZXJhYmxlcykgLS0+IG1hcCBvYmplY3RcblwKIFxuXApAQCAtMTA5NCw3ICsxMTI5LDcgQEAKICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwogICAgIFB5T2JqZWN0X1NlbGZJdGVyLCAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KICAgICAoaXRlcm5leHRmdW5jKW1hcF9uZXh0LCAgICAgLyogdHBfaXRlcm5leHQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgbWFwX21ldGhvZHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNlICovCkBAIC0xMTE4LDcgKzExNTMsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoIVB5SXRlcl9DaGVjayhpdCkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICIlLjIwMHMgb2JqZWN0IGlzIG5vdCBhbiBpdGVyYXRvciIsCisgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhbiBpdGVyYXRvciIsCiAgICAgICAgICAgICBpdC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE0MjQsMjQgKzE0NTksMTMgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgewotICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaik7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKICAgICAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICAgICAgb3JkID0gKGxvbmcpKlB5VW5pY29kZV9BU19VTklDT0RFKG9iaik7CisgICAgICAgICAgICBvcmQgPSAobG9uZylQeVVuaWNvZGVfUkVBRF9DSEFSKG9iaiwgMCk7CiAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9yZCk7CiAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgIGlmIChzaXplID09IDIpIHsKLSAgICAgICAgICAgIC8qIERlY29kZSBhIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyICovCi0gICAgICAgICAgICBpbnQgYzAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmopWzBdOwotICAgICAgICAgICAgaW50IGMxID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKVsxXTsKLSAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gYzAgJiYgYzAgPD0gMHhEQkZGICYmCi0gICAgICAgICAgICAgICAgMHhEQzAwIDw9IGMxICYmIGMxIDw9IDB4REZGRikgewotICAgICAgICAgICAgICAgIG9yZCA9ICgoKChjMCAmIDB4MDNGRikgPDwgMTApIHwgKGMxICYgMHgwM0ZGKSkgKwotICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKG9yZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH0KICAgICBlbHNlIGlmIChQeUJ5dGVBcnJheV9DaGVjayhvYmopKSB7CiAgICAgICAgIC8qIFhYWCBIb3BlZnVsbHkgdGhpcyBpcyB0ZW1wb3JhcnkgKi8KQEAgLTE0NjksMTMgKzE0OTMsNyBAQAogIm9yZChjKSAtPiBpbnRlZ2VyXG5cCiBcblwKIFJldHVybiB0aGUgaW50ZWdlciBvcmRpbmFsIG9mIGEgb25lLWNoYXJhY3RlciBzdHJpbmcuIgotKQotI2lmbmRlZiBQeV9VTklDT0RFX1dJREUKLVB5RG9jX1NUUigKLSJcbkEgdmFsaWQgc3Vycm9nYXRlIHBhaXIgaXMgYWxzbyBhY2NlcHRlZC4iCi0pCi0jZW5kaWYKLTsKKyk7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE0OTksMTUgKzE1MTcsMTUgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3ByaW50KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJzZXAiLCAiZW5kIiwgImZpbGUiLCAwfTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNlcCIsICJlbmQiLCAiZmlsZSIsICJmbHVzaCIsIDB9OwogICAgIHN0YXRpYyBQeU9iamVjdCAqZHVtbXlfYXJnczsKLSAgICBQeU9iamVjdCAqc2VwID0gTlVMTCwgKmVuZCA9IE5VTEwsICpmaWxlID0gTlVMTDsKKyAgICBQeU9iamVjdCAqc2VwID0gTlVMTCwgKmVuZCA9IE5VTEwsICpmaWxlID0gTlVMTCwgKmZsdXNoID0gTlVMTDsKICAgICBpbnQgaSwgZXJyOwogCiAgICAgaWYgKGR1bW15X2FyZ3MgPT0gTlVMTCAmJiAhKGR1bW15X2FyZ3MgPSBQeVR1cGxlX05ldygwKSkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhkdW1teV9hcmdzLCBrd2RzLCAifE9PTzpwcmludCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc2VwLCAmZW5kLCAmZmlsZSkpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGR1bW15X2FyZ3MsIGt3ZHMsICJ8T09PTzpwcmludCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dsaXN0LCAmc2VwLCAmZW5kLCAmZmlsZSwgJmZsdXNoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKGZpbGUgPT0gTlVMTCB8fCBmaWxlID09IFB5X05vbmUpIHsKICAgICAgICAgZmlsZSA9IFB5U3lzX0dldE9iamVjdCgic3Rkb3V0Iik7CkBAIC0xNTU4LDE3ICsxNTc2LDMyIEBACiAgICAgaWYgKGVycikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKKyAgICBpZiAoZmx1c2ggIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqdG1wOworICAgICAgICBpbnQgZG9fZmx1c2ggPSBQeU9iamVjdF9Jc1RydWUoZmx1c2gpOworICAgICAgICBpZiAoZG9fZmx1c2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZWxzZSBpZiAoZG9fZmx1c2gpIHsKKyAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmlsZSwgImZsdXNoIiwgIiIpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICB9CisgICAgfQorCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihwcmludF9kb2MsCi0icHJpbnQodmFsdWUsIC4uLiwgc2VwPScgJywgZW5kPSdcXG4nLCBmaWxlPXN5cy5zdGRvdXQpXG5cCisicHJpbnQodmFsdWUsIC4uLiwgc2VwPScgJywgZW5kPSdcXG4nLCBmaWxlPXN5cy5zdGRvdXQsIGZsdXNoPUZhbHNlKVxuXAogXG5cCiBQcmludHMgdGhlIHZhbHVlcyB0byBhIHN0cmVhbSwgb3IgdG8gc3lzLnN0ZG91dCBieSBkZWZhdWx0LlxuXAogT3B0aW9uYWwga2V5d29yZCBhcmd1bWVudHM6XG5cCi1maWxlOiBhIGZpbGUtbGlrZSBvYmplY3QgKHN0cmVhbSk7IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHN5cy5zdGRvdXQuXG5cCi1zZXA6ICBzdHJpbmcgaW5zZXJ0ZWQgYmV0d2VlbiB2YWx1ZXMsIGRlZmF1bHQgYSBzcGFjZS5cblwKLWVuZDogIHN0cmluZyBhcHBlbmRlZCBhZnRlciB0aGUgbGFzdCB2YWx1ZSwgZGVmYXVsdCBhIG5ld2xpbmUuIik7CitmaWxlOiAgYSBmaWxlLWxpa2Ugb2JqZWN0IChzdHJlYW0pOyBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBzeXMuc3Rkb3V0LlxuXAorc2VwOiAgIHN0cmluZyBpbnNlcnRlZCBiZXR3ZWVuIHZhbHVlcywgZGVmYXVsdCBhIHNwYWNlLlxuXAorZW5kOiAgIHN0cmluZyBhcHBlbmRlZCBhZnRlciB0aGUgbGFzdCB2YWx1ZSwgZGVmYXVsdCBhIG5ld2xpbmUuXG5cCitmbHVzaDogd2hldGhlciB0byBmb3JjaWJseSBmbHVzaCB0aGUgc3RyZWFtLiIpOwogCiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0xNjA0LDcgKzE2MzcsNyBAQAogICAgIH0KIAogICAgIC8qIEZpcnN0IG9mIGFsbCwgZmx1c2ggc3RkZXJyICovCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmZXJyLCAiZmx1c2giLCAiIik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xNjEzLDcgKzE2NDYsNyBAQAogICAgIC8qIFdlIHNob3VsZCBvbmx5IHVzZSAoR05VKSByZWFkbGluZSBpZiBQeXRob24ncyBzeXMuc3RkaW4gYW5kCiAgICAgICAgc3lzLnN0ZG91dCBhcmUgdGhlIHNhbWUgYXMgQydzIHN0ZGluIGFuZCBzdGRvdXQsIGJlY2F1c2Ugd2UKICAgICAgICBuZWVkIHRvIHBhc3MgaXQgdGhvc2UuICovCi0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmaW4sICJmaWxlbm8iLCAiIik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgIiIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB0dHkgPSAwOwpAQCAtMTYyNiw3ICsxNjU5LDcgQEAKICAgICAgICAgdHR5ID0gZmQgPT0gZmlsZW5vKHN0ZGluKSAmJiBpc2F0dHkoZmQpOwogICAgIH0KICAgICBpZiAodHR5KSB7Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm91dCwgImZpbGVubyIsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9maWxlbm8sICIiKTsKICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgZWxzZSB7CkBAIC0xNjQ4LDkgKzE2ODEsMTEgQEAKICAgICAgICAgY2hhciAqc3RkaW5fZW5jb2Rpbmdfc3RyLCAqc3RkaW5fZXJyb3JzX3N0cjsKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICAgICAgc2l6ZV90IGxlbjsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoZW5jb2RpbmcpOworICAgICAgICBfUHlfSURFTlRJRklFUihlcnJvcnMpOwogCi0gICAgICAgIHN0ZGluX2VuY29kaW5nID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhmaW4sICJlbmNvZGluZyIpOwotICAgICAgICBzdGRpbl9lcnJvcnMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbiwgImVycm9ycyIpOworICAgICAgICBzdGRpbl9lbmNvZGluZyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmluLCAmUHlJZF9lbmNvZGluZyk7CisgICAgICAgIHN0ZGluX2Vycm9ycyA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmluLCAmUHlJZF9lcnJvcnMpOwogICAgICAgICBpZiAoIXN0ZGluX2VuY29kaW5nIHx8ICFzdGRpbl9lcnJvcnMpCiAgICAgICAgICAgICAvKiBzdGRpbiBpcyBhIHRleHQgc3RyZWFtLCBzbyBpdCBtdXN0IGhhdmUgYW4KICAgICAgICAgICAgICAgIGVuY29kaW5nLiAqLwpAQCAtMTY1OSw3ICsxNjk0LDcgQEAKICAgICAgICAgc3RkaW5fZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3RkaW5fZXJyb3JzKTsKICAgICAgICAgaWYgKCFzdGRpbl9lbmNvZGluZ19zdHIgfHwgIXN0ZGluX2Vycm9yc19zdHIpCiAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm91dCwgImZsdXNoIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKQEAgLTE2NjgsOCArMTcwMyw4IEBACiAgICAgICAgICAgICAvKiBXZSBoYXZlIGEgcHJvbXB0LCBlbmNvZGUgaXQgYXMgc3Rkb3V0IHdvdWxkICovCiAgICAgICAgICAgICBjaGFyICpzdGRvdXRfZW5jb2Rpbmdfc3RyLCAqc3Rkb3V0X2Vycm9yc19zdHI7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3RyaW5ncG87Ci0gICAgICAgICAgICBzdGRvdXRfZW5jb2RpbmcgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZvdXQsICJlbmNvZGluZyIpOwotICAgICAgICAgICAgc3Rkb3V0X2Vycm9ycyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoZm91dCwgImVycm9ycyIpOworICAgICAgICAgICAgc3Rkb3V0X2VuY29kaW5nID0gX1B5T2JqZWN0X0dldEF0dHJJZChmb3V0LCAmUHlJZF9lbmNvZGluZyk7CisgICAgICAgICAgICBzdGRvdXRfZXJyb3JzID0gX1B5T2JqZWN0X0dldEF0dHJJZChmb3V0LCAmUHlJZF9lcnJvcnMpOwogICAgICAgICAgICAgaWYgKCFzdGRvdXRfZW5jb2RpbmcgfHwgIXN0ZG91dF9lcnJvcnMpCiAgICAgICAgICAgICAgICAgZ290byBfcmVhZGxpbmVfZXJyb3JzOwogICAgICAgICAgICAgc3Rkb3V0X2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2VuY29kaW5nKTsKQEAgLTE3MzksNyArMTc3NCw3IEBACiAgICAgICAgIGlmIChQeUZpbGVfV3JpdGVPYmplY3QocHJvbXB0YXJnLCBmb3V0LCBQeV9QUklOVF9SQVcpICE9IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmb3V0LCAiZmx1c2giLCAiIik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwogICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xODIxLDYgKzE4NTYsNyBAQAogICAgIFB5T2JqZWN0ICpjYWxsYWJsZTsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Iml0ZXJhYmxlIiwgImtleSIsICJyZXZlcnNlIiwgMH07CiAgICAgaW50IHJldmVyc2U7CisgICAgX1B5X0lERU5USUZJRVIoc29ydCk7CiAKICAgICAvKiBhcmdzIDEtMyBzaG91bGQgbWF0Y2ggbGlzdHNvcnQgaW4gT2JqZWN0cy9saXN0b2JqZWN0LmMgKi8KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPaTpzb3J0ZWQiLApAQCAtMTgzMSw3ICsxODY3LDcgQEAKICAgICBpZiAobmV3bGlzdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGNhbGxhYmxlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhuZXdsaXN0LCAic29ydCIpOworICAgIGNhbGxhYmxlID0gX1B5T2JqZWN0X0dldEF0dHJJZChuZXdsaXN0LCAmUHlJZF9zb3J0KTsKICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTg3Nyw3ICsxOTEzLDggQEAKICAgICAgICAgICAgIFB5X0lOQ1JFRihkKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHYsICJfX2RpY3RfXyIpOworICAgICAgICBfUHlfSURFTlRJRklFUihfX2RpY3RfXyk7CisgICAgICAgIGQgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX19fZGljdF9fKTsKICAgICAgICAgaWYgKGQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAidmFycygpIGFyZ3VtZW50IG11c3QgaGF2ZSBfX2RpY3RfXyBhdHRyaWJ1dGUiKTsKQEAgLTE5MjEsMTIgKzE5NTgsMTggQEAKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUJ5dGVBcnJheV9DaGVjayhyZXN1bHQpKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlc3VsdCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgInN1bSgpIGNhbid0IHN1bSBieXRlcyBbdXNlIGInJy5qb2luKHNlcSkgaW5zdGVhZF0iKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIGlmIChQeUJ5dGVBcnJheV9DaGVjayhyZXN1bHQpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICJzdW0oKSBjYW4ndCBzdW0gYnl0ZWFycmF5IFt1c2UgYicnLmpvaW4oc2VxKSBpbnN0ZWFkXSIpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAogICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKICAgICB9CkBAIC0yMjI5LDYgKzIyNzIsMTggQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QgKgoremlwX3JlZHVjZSh6aXBvYmplY3QgKmx6KQoreworICAgIC8qIEp1c3QgcmVjcmVhdGUgdGhlIHppcCB3aXRoIHRoZSBpbnRlcm5hbCBpdGVyYXRvciB0dXBsZSAqLworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJPTyIsIFB5X1RZUEUobHopLCBsei0+aXR0dXBsZSk7Cit9CisKK3N0YXRpYyBQeU1ldGhvZERlZiB6aXBfbWV0aG9kc1tdID0geworICAgIHsiX19yZWR1Y2VfXyIsICAgKFB5Q0Z1bmN0aW9uKXppcF9yZWR1Y2UsICAgTUVUSF9OT0FSR1MsIHJlZHVjZV9kb2N9LAorICAgIHtOVUxMLCAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCit9OworCiBQeURvY19TVFJWQVIoemlwX2RvYywKICJ6aXAoaXRlcjEgWyxpdGVyMiBbLi4uXV0pIC0tPiB6aXAgb2JqZWN0XG5cCiBcblwKQEAgLTIyNjcsNyArMjMyMiw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KICAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCiAgICAgKGl0ZXJuZXh0ZnVuYyl6aXBfbmV4dCwgICAgIC8qIHRwX2l0ZXJuZXh0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIHppcF9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsLmMgYi9QeXRob24vY2V2YWwuYwppbmRleCBmMGVhN2M5Li44MmJmY2M2IDEwMDY0NAotLS0gYS9QeXRob24vY2V2YWwuYworKysgYi9QeXRob24vY2V2YWwuYwpAQCAtMTM4LDcgKzEzOCw3IEBACiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX3VuYm91bmQoUHlDb2RlT2JqZWN0ICpjbywgaW50IG9wYXJnKTsKIHN0YXRpYyBQeU9iamVjdCAqIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCB1bnNpZ25lZCBjaGFyICopOwotc3RhdGljIFB5T2JqZWN0ICogc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKiwgY2hhciAqLCBQeU9iamVjdCAqKik7CitzdGF0aWMgUHlPYmplY3QgKiBzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqLCBfUHlfSWRlbnRpZmllciAqKTsKIAogI2RlZmluZSBOQU1FX0VSUk9SX01TRyBcCiAgICAgIm5hbWUgJyUuMjAwcycgaXMgbm90IGRlZmluZWQiCkBAIC0zNzIsNiArMzcyLDcgQEAKIHZvaWQKIFB5RXZhbF9SZUluaXRUaHJlYWRzKHZvaWQpCiB7CisgICAgX1B5X0lERU5USUZJRVIoX2FmdGVyX2ZvcmspOwogICAgIFB5T2JqZWN0ICp0aHJlYWRpbmcsICpyZXN1bHQ7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKIApAQCAtMzkyLDcgKzM5Myw3IEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZCh0aHJlYWRpbmcsICJfYWZ0ZXJfZm9yayIsIE5VTEwpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fYWZ0ZXJfZm9yaywgTlVMTCk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQogICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUodGhyZWFkaW5nKTsKICAgICBlbHNlCkBAIC00OTEsNyArNDkyLDYgQEAKIH0gcGVuZGluZ2NhbGxzW05QRU5ESU5HQ0FMTFNdOwogc3RhdGljIGludCBwZW5kaW5nZmlyc3QgPSAwOwogc3RhdGljIGludCBwZW5kaW5nbGFzdCA9IDA7Ci1zdGF0aWMgY2hhciBwZW5kaW5nYnVzeSA9IDA7CiAKIGludAogUHlfQWRkUGVuZGluZ0NhbGwoaW50ICgqZnVuYykodm9pZCAqKSwgdm9pZCAqYXJnKQpAQCAtNTM4LDYgKzUzOCw3IEBACiBpbnQKIFB5X01ha2VQZW5kaW5nQ2FsbHModm9pZCkKIHsKKyAgICBzdGF0aWMgaW50IGJ1c3kgPSAwOwogICAgIGludCBpOwogICAgIGludCByID0gMDsKIApAQCAtNTUyLDkgKzU1Myw5IEBACiAgICAgaWYgKG1haW5fdGhyZWFkICYmIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSAhPSBtYWluX3RocmVhZCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgLyogZG9uJ3QgcGVyZm9ybSByZWN1cnNpdmUgcGVuZGluZyBjYWxscyAqLwotICAgIGlmIChwZW5kaW5nYnVzeSkKKyAgICBpZiAoYnVzeSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcGVuZGluZ2J1c3kgPSAxOworICAgIGJ1c3kgPSAxOwogICAgIC8qIHBlcmZvcm0gYSBib3VuZGVkIG51bWJlciBvZiBjYWxscywgaW4gY2FzZSBvZiByZWN1cnNpb24gKi8KICAgICBmb3IgKGk9MDsgaTxOUEVORElOR0NBTExTOyBpKyspIHsKICAgICAgICAgaW50IGo7CkBAIC01ODMsNyArNTg0LDcgQEAKICAgICAgICAgaWYgKHIpCiAgICAgICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcGVuZGluZ2J1c3kgPSAwOworICAgIGJ1c3kgPSAwOwogICAgIHJldHVybiByOwogfQogCkBAIC03NDksNiArNzUwLDkgQEAKICAgICAgICAgV0hZX1NJTEVOQ0VEID0gIDB4MDA4MCAgLyogRXhjZXB0aW9uIHNpbGVuY2VkIGJ5ICd3aXRoJyAqLwogfTsKIAorc3RhdGljIHZvaWQgc2F2ZV9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgc3dhcF9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICopOworc3RhdGljIHZvaWQgcmVzdG9yZV9hbmRfY2xlYXJfZXhjX3N0YXRlKFB5VGhyZWFkU3RhdGUgKiwgUHlGcmFtZU9iamVjdCAqKTsKIHN0YXRpYyBlbnVtIHdoeV9jb2RlIGRvX3JhaXNlKFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIGludCB1bnBhY2tfaXRlcmFibGUoUHlPYmplY3QgKiwgaW50LCBpbnQsIFB5T2JqZWN0ICoqKTsKIApAQCAtODE3LDkgKzgyMSw5IEBACiAgICAgdW5zaWduZWQgY2hhciAqZmlyc3RfaW5zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwogICAgIFB5T2JqZWN0ICpjb25zdHM7Ci0jaWYgZGVmaW5lZChQeV9ERUJVRykgfHwgZGVmaW5lZChMTFRSQUNFKQotICAgIC8qIE1ha2UgaXQgZWFzaWVyIHRvIGZpbmQgb3V0IHdoZXJlIHdlIGFyZSB3aXRoIGEgZGVidWdnZXIgKi8KLSAgICBjaGFyICpmaWxlbmFtZTsKKworI2lmZGVmIExMVFJBQ0UKKyAgICBfUHlfSURFTlRJRklFUihfX2x0cmFjZV9fKTsKICNlbmRpZgogCiAvKiBDb21wdXRlZCBHT1RPcywgb3IKQEAgLTExMTQsNTkgKzExMTgsOCBAQAogICAgICAgICBQeV9YREVDUkVGKHRyYWNlYmFjayk7IFwKICAgICB9CiAKLSNkZWZpbmUgU0FWRV9FWENfU1RBVEUoKSBcCi0gICAgeyBcCi0gICAgICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0cmFjZWJhY2s7IFwKLSAgICAgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y190eXBlKTsgXAotICAgICAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3ZhbHVlKTsgXAotICAgICAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayk7IFwKLSAgICAgICAgdHlwZSA9IGYtPmZfZXhjX3R5cGU7IFwKLSAgICAgICAgdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsgXAotICAgICAgICB0cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgZi0+Zl9leGNfdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7IFwKLSAgICAgICAgZi0+Zl9leGNfdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsgXAotICAgICAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7IFwKLSAgICAgICAgUHlfWERFQ1JFRih0eXBlKTsgXAotICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsgXAotICAgICAgICBQeV9YREVDUkVGKHRyYWNlYmFjayk7IFwKLSAgICB9Ci0KLSNkZWZpbmUgU1dBUF9FWENfU1RBVEUoKSBcCi0gICAgeyBcCi0gICAgICAgIFB5T2JqZWN0ICp0bXA7IFwKLSAgICAgICAgdG1wID0gdHN0YXRlLT5leGNfdHlwZTsgXAotICAgICAgICB0c3RhdGUtPmV4Y190eXBlID0gZi0+Zl9leGNfdHlwZTsgXAotICAgICAgICBmLT5mX2V4Y190eXBlID0gdG1wOyBcCi0gICAgICAgIHRtcCA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gZi0+Zl9leGNfdmFsdWU7IFwKLSAgICAgICAgZi0+Zl9leGNfdmFsdWUgPSB0bXA7IFwKLSAgICAgICAgdG1wID0gdHN0YXRlLT5leGNfdHJhY2ViYWNrOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsgXAotICAgICAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSB0bXA7IFwKLSAgICB9Ci0KLSNkZWZpbmUgUkVTVE9SRV9BTkRfQ0xFQVJfRVhDX1NUQVRFKCkgXAotICAgIHsgXAotICAgICAgICBQeU9iamVjdCAqdHlwZSwgKnZhbHVlLCAqdGI7IFwKLSAgICAgICAgdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7IFwKLSAgICAgICAgdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsgXAotICAgICAgICB0YiA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsgXAotICAgICAgICB0c3RhdGUtPmV4Y190eXBlID0gZi0+Zl9leGNfdHlwZTsgXAotICAgICAgICB0c3RhdGUtPmV4Y192YWx1ZSA9IGYtPmZfZXhjX3ZhbHVlOyBcCi0gICAgICAgIHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayA9IGYtPmZfZXhjX3RyYWNlYmFjazsgXAotICAgICAgICBmLT5mX2V4Y190eXBlID0gTlVMTDsgXAotICAgICAgICBmLT5mX2V4Y192YWx1ZSA9IE5VTEw7IFwKLSAgICAgICAgZi0+Zl9leGNfdHJhY2ViYWNrID0gTlVMTDsgXAotICAgICAgICBQeV9YREVDUkVGKHR5cGUpOyBcCi0gICAgICAgIFB5X1hERUNSRUYodmFsdWUpOyBcCi0gICAgICAgIFB5X1hERUNSRUYodGIpOyBcCi0gICAgfQotCiAvKiBTdGFydCBvZiBjb2RlICovCiAKLSAgICBpZiAoZiA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIC8qIHB1c2ggZnJhbWUgKi8KICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIiKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjIxLDYgKzExNzQsOCBAQAogICAgICAgIGYtPmZfbGFzdGkgdG8gLTEgKGkuZS4gdGhlIGluZGV4ICpiZWZvcmUqIHRoZSBmaXJzdCBpbnN0cnVjdGlvbikKICAgICAgICBhbmQgWUlFTERfVkFMVUUgZG9lc24ndCBmaWRkbGUgd2l0aCBmX2xhc3RpIGFueSBtb3JlLiAgU28gdGhpcwogICAgICAgIGRvZXMgd29yay4gIFByb21pc2UuCisgICAgICAgWUlFTERfRlJPTSBzZXRzIGZfbGFzdGkgdG8gaXRzZWxmLCBpbiBvcmRlciB0byByZXBlYXRlZCB5aWVsZAorICAgICAgIG11bHRpcGxlIHZhbHVlcy4KIAogICAgICAgIFdoZW4gdGhlIFBSRURJQ1QoKSBtYWNyb3MgYXJlIGVuYWJsZWQsIHNvbWUgb3Bjb2RlIHBhaXJzIGZvbGxvdyBpbgogICAgICAgIGRpcmVjdCBzdWNjZXNzaW9uIHdpdGhvdXQgdXBkYXRpbmcgZi0+Zl9sYXN0aS4gIEEgc3VjY2Vzc2Z1bApAQCAtMTI0MCwyNyArMTE5NSwxNCBAQAogICAgICAgICAgICAgLyogV2Ugd2VyZSBpbiBhbiBleGNlcHQgaGFuZGxlciB3aGVuIHdlIGxlZnQsCiAgICAgICAgICAgICAgICByZXN0b3JlIHRoZSBleGNlcHRpb24gc3RhdGUgd2hpY2ggd2FzIHB1dCBhc2lkZQogICAgICAgICAgICAgICAgKHNlZSBZSUVMRF9WQUxVRSkuICovCi0gICAgICAgICAgICBTV0FQX0VYQ19TVEFURSgpOworICAgICAgICAgICAgc3dhcF9leGNfc3RhdGUodHN0YXRlLCBmKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNBVkVfRVhDX1NUQVRFKCk7Ci0gICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2F2ZV9leGNfc3RhdGUodHN0YXRlLCBmKTsKICAgICB9CiAKICNpZmRlZiBMTFRSQUNFCi0gICAgbGx0cmFjZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGYtPmZfZ2xvYmFscywgIl9fbGx0cmFjZV9fIikgIT0gTlVMTDsKLSNlbmRpZgotI2lmIGRlZmluZWQoUHlfREVCVUcpIHx8IGRlZmluZWQoTExUUkFDRSkKLSAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7Ci0gICAgICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOwotICAgICAgICBmaWxlbmFtZSA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoY28tPmNvX2ZpbGVuYW1lKTsKLSAgICAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwgJiYgdHN0YXRlLT5vdmVyZmxvd2VkKSB7Ci0gICAgICAgICAgICAvKiBtYXhpbXVtIHJlY3Vyc2lvbiBkZXB0aCBleGNlZWRlZCAqLwotICAgICAgICAgICAgZ290byBleGl0X2V2YWxfZnJhbWU7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJvcl90eXBlLCBlcnJvcl92YWx1ZSwgZXJyb3JfdHJhY2ViYWNrKTsKLSAgICB9CisgICAgbGx0cmFjZSA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfZ2xvYmFscywgJlB5SWRfX19sdHJhY2VfXykgIT0gTlVMTDsKICNlbmRpZgogCiAgICAgd2h5ID0gV0hZX05PVDsKQEAgLTE0MTIsOCArMTM1NCw2IEBACiAgICAgICAgICAgIHggdG8gTlVMTCwgZXJyIHRvIG5vbnplcm8sIG9yIHdoeSB0byBhbnl0aGluZyBidXQgV0hZX05PVCwKICAgICAgICAgICAgYW5kIHRoYXQgbm8gb3BlcmF0aW9uIHRoYXQgc3VjY2VlZHMgZG9lcyB0aGlzISAqLwogCi0gICAgICAgIC8qIGNhc2UgU1RPUF9DT0RFOiB0aGlzIGlzIGFuIGVycm9yISAqLwotCiAgICAgICAgIFRBUkdFVChOT1ApCiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAKQEAgLTE4OTQsNiArMTgzNCw0MCBAQAogICAgICAgICAgICAgd2h5ID0gV0hZX1JFVFVSTjsKICAgICAgICAgICAgIGdvdG8gZmFzdF9ibG9ja19lbmQ7CiAKKyAgICAgICAgVEFSR0VUKFlJRUxEX0ZST00pCisgICAgICAgICAgICB1ID0gUE9QKCk7CisgICAgICAgICAgICB4ID0gVE9QKCk7CisgICAgICAgICAgICAvKiBzZW5kIHUgdG8geCAqLworICAgICAgICAgICAgaWYgKFB5R2VuX0NoZWNrRXhhY3QoeCkpIHsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QgKil4LCB1KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc2VuZCk7CisgICAgICAgICAgICAgICAgaWYgKHUgPT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gUHlfVFlQRSh4KS0+dHBfaXRlcm5leHQoeCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHgsICZQeUlkX3NlbmQsICJPIiwgdSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9ERUNSRUYodSk7CisgICAgICAgICAgICBpZiAoIXJldHZhbCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWw7CisgICAgICAgICAgICAgICAgeCA9IFBPUCgpOyAvKiBSZW1vdmUgaXRlciBmcm9tIHN0YWNrICovCisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHgpOworICAgICAgICAgICAgICAgIGVyciA9IF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHggPSB2YWw7CisgICAgICAgICAgICAgICAgUFVTSCh4KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIHggcmVtYWlucyBvbiBzdGFjaywgcmV0dmFsIGlzIHZhbHVlIHRvIGJlIHlpZWxkZWQgKi8KKyAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOworICAgICAgICAgICAgd2h5ID0gV0hZX1lJRUxEOworICAgICAgICAgICAgLyogYW5kIHJlcGVhdC4uLiAqLworICAgICAgICAgICAgZi0+Zl9sYXN0aS0tOworICAgICAgICAgICAgZ290byBmYXN0X3lpZWxkOworCiAgICAgICAgIFRBUkdFVChZSUVMRF9WQUxVRSkKICAgICAgICAgICAgIHJldHZhbCA9IFBPUCgpOwogICAgICAgICAgICAgZi0+Zl9zdGFja3RvcCA9IHN0YWNrX3BvaW50ZXI7CkBAIC0xOTU2LDE2ICsxOTMwLDMzIEBACiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBUQVJHRVQoTE9BRF9CVUlMRF9DTEFTUykKLSAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbVN0cmluZyhmLT5mX2J1aWx0aW5zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2J1aWxkX2NsYXNzX18iKTsKLSAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2J1aWxkX2NsYXNzX18gbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYnVpbGRfY2xhc3NfXyk7CisKKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkgeworICAgICAgICAgICAgICAgIHggPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2J1aWxkX2NsYXNzX18pOworICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2J1aWxkX2NsYXNzX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYnVpbGRfY2xhc3Nfc3RyID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfX19idWlsZF9jbGFzc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYnVpbGRfY2xhc3Nfc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIGJ1aWxkX2NsYXNzX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJfX2J1aWxkX2NsYXNzX18gbm90IGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0goeCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChTVE9SRV9OQU1FKQogICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKQEAgLTIxMDEsNzAgKzIwOTIsNjIgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICB4ID0gUHlEaWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCB3KTsKKyAgICAgICAgICAgICAgICBQeV9YSU5DUkVGKHgpOwogICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtKGYtPmZfYnVpbHRpbnMsIHcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5BTUVfRVJST1JfTVNHLCB3KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgeCA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9idWlsdGlucywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQU1FX0VSUk9SX01TRywgdyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUFVTSCh4KTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAKICAgICAgICAgVEFSR0VUKExPQURfR0xPQkFMKQogICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKLSAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh3KSkgewotICAgICAgICAgICAgICAgIC8qIElubGluZSB0aGUgUHlEaWN0X0dldEl0ZW0oKSBjYWxscy4KLSAgICAgICAgICAgICAgICAgICBXQVJOSU5HOiB0aGlzIGlzIGFuIGV4dHJlbWUgc3BlZWQgaGFjay4KLSAgICAgICAgICAgICAgICAgICBEbyBub3QgdHJ5IHRoaXMgYXQgaG9tZS4gKi8KLSAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCA9ICgoUHlVbmljb2RlT2JqZWN0ICopdyktPmhhc2g7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc2ggIT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlEaWN0T2JqZWN0ICpkOwotICAgICAgICAgICAgICAgICAgICBQeURpY3RFbnRyeSAqZTsKLSAgICAgICAgICAgICAgICAgICAgZCA9IChQeURpY3RPYmplY3QgKikoZi0+Zl9nbG9iYWxzKTsKLSAgICAgICAgICAgICAgICAgICAgZSA9IGQtPm1hX2xvb2t1cChkLCB3LCBoYXNoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgeCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB4ID0gZS0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh4ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBVU0goeCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBESVNQQVRDSCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGQgPSAoUHlEaWN0T2JqZWN0ICopKGYtPmZfYnVpbHRpbnMpOwotICAgICAgICAgICAgICAgICAgICBlID0gZC0+bWFfbG9va3VwKGQsIHcsIGhhc2gpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHggPSBlLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgUFVTSCh4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIERJU1BBVENIKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZ290byBsb2FkX2dsb2JhbF9lcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBUaGlzIGlzIHRoZSB1bi1pbmxpbmVkIHZlcnNpb24gb2YgdGhlIGNvZGUgYWJvdmUgKi8KLSAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2dsb2JhbHMsIHcpOwotICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2dsb2JhbHMpCisgICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICB4ID0gX1B5RGljdF9Mb2FkR2xvYmFsKChQeURpY3RPYmplY3QgKilmLT5mX2dsb2JhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEaWN0T2JqZWN0ICopZi0+Zl9idWlsdGlucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcpOwogICAgICAgICAgICAgICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgIGxvYWRfZ2xvYmFsX2Vycm9yOgotICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfTmFtZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfTkFNRV9FUlJPUl9NU0csIHcpOworICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZXhjX2NoZWNrX2FyZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfTkFNRV9FUlJPUl9NU0csIHcpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfSU5DUkVGKHgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogU2xvdy1wYXRoIGlmIGdsb2JhbHMgb3IgYnVpbHRpbnMgaXMgbm90IGEgZGljdCAqLworICAgICAgICAgICAgICAgIHggPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfZ2xvYmFscywgdyk7CisgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICB4ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCB3KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9leGNfY2hlY2tfYXJnKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX05hbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfTkFNRV9FUlJPUl9NU0csIHcpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQVVNIKHgpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKIApAQCAtMjMxMyw4ICsyMjk2LDEwIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogCiAgICAgICAgIFRBUkdFVChJTVBPUlRfTkFNRSkKKyAgICAgICAgeworICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoX19pbXBvcnRfXyk7CiAgICAgICAgICAgICB3ID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgeCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGYtPmZfYnVpbHRpbnMsICJfX2ltcG9ydF9fIik7CisgICAgICAgICAgICB4ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9idWlsdGlucywgJlB5SWRfX19pbXBvcnRfXyk7CiAgICAgICAgICAgICBpZiAoeCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbXBvcnRfXyBub3QgZm91bmQiKTsKQEAgLTIzNTUsNiArMjM0MCw3IEBACiAgICAgICAgICAgICBTRVRfVE9QKHgpOwogICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkgRElTUEFUQ0goKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKElNUE9SVF9TVEFSKQogICAgICAgICAgICAgdiA9IFBPUCgpOwpAQCAtMjU1OSwxMyArMjU0NSwxNCBAQAogCiAgICAgICAgIFRBUkdFVChTRVRVUF9XSVRIKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgUHlPYmplY3QgKmV4aXQsICplbnRlcjsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZXhpdF9fKTsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fZW50ZXJfXyk7CiAgICAgICAgICAgICB3ID0gVE9QKCk7Ci0gICAgICAgICAgICB4ID0gc3BlY2lhbF9sb29rdXAodywgIl9fZXhpdF9fIiwgJmV4aXQpOworICAgICAgICAgICAgeCA9IHNwZWNpYWxfbG9va3VwKHcsICZQeUlkX19fZXhpdF9fKTsKICAgICAgICAgICAgIGlmICgheCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIFNFVF9UT1AoeCk7Ci0gICAgICAgICAgICB1ID0gc3BlY2lhbF9sb29rdXAodywgIl9fZW50ZXJfXyIsICZlbnRlcik7CisgICAgICAgICAgICB1ID0gc3BlY2lhbF9sb29rdXAodywgJlB5SWRfX19lbnRlcl9fKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih3KTsKICAgICAgICAgICAgIGlmICghdSkgewogICAgICAgICAgICAgICAgIHggPSBOVUxMOwpAQCAtMjcyNSw3ICsyNzEyLDcgQEAKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoKnBmdW5jKTsKICAgICAgICAgICAgICAgICAqcGZ1bmMgPSBzZWxmOwogICAgICAgICAgICAgICAgIG5hKys7Ci0gICAgICAgICAgICAgICAgbisrOworICAgICAgICAgICAgICAgIC8qIG4rKzsgKi8KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIHNwID0gc3RhY2tfcG9pbnRlcjsKQEAgLTI3NTMsOSArMjc0MCwxMSBAQAogICAgICAgICAgICAgaW50IGt3ZGVmYXVsdHMgPSAob3Bhcmc+PjgpICYgMHhmZjsKICAgICAgICAgICAgIGludCBudW1fYW5ub3RhdGlvbnMgPSAob3BhcmcgPj4gMTYpICYgMHg3ZmZmOwogCisgICAgICAgICAgICB3ID0gUE9QKCk7IC8qIHF1YWxuYW1lICovCiAgICAgICAgICAgICB2ID0gUE9QKCk7IC8qIGNvZGUgb2JqZWN0ICovCi0gICAgICAgICAgICB4ID0gUHlGdW5jdGlvbl9OZXcodiwgZi0+Zl9nbG9iYWxzKTsKKyAgICAgICAgICAgIHggPSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZSh2LCBmLT5mX2dsb2JhbHMsIHcpOwogICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICAgICAgUHlfREVDUkVGKHcpOwogCiAgICAgICAgICAgICBpZiAoeCAhPSBOVUxMICYmIG9wY29kZSA9PSBNQUtFX0NMT1NVUkUpIHsKICAgICAgICAgICAgICAgICB2ID0gUE9QKCk7CkBAIC0zMDQ5LDkgKzMwMzgsOSBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAoaSA9PSBmLT5mX2libG9jaykKICAgICAgICAgICAgIC8qIFdlIGRpZCBub3QgY3JlYXRlIHRoaXMgZXhjZXB0aW9uLiAqLwotICAgICAgICAgICAgUkVTVE9SRV9BTkRfQ0xFQVJfRVhDX1NUQVRFKCkKKyAgICAgICAgICAgIHJlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBTV0FQX0VYQ19TVEFURSgpCisgICAgICAgICAgICBzd2FwX2V4Y19zdGF0ZSh0c3RhdGUsIGYpOwogICAgIH0KIAogICAgIGlmICh0c3RhdGUtPnVzZV90cmFjaW5nKSB7CkBAIC0zMDgxLDcgKzMwNzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVRyYWNlX1JFVFVSTiwgcmV0dmFsKSkgewogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYocmV0dmFsKTsKICAgICAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOwotICAgICAgICAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CisgICAgICAgICAgICAgICAgLyogd2h5ID0gV0hZX0VYQ0VQVElPTjsgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTMwOTQsNiArMzA4MywxNTYgQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCitzdGF0aWMgdm9pZAorZm9ybWF0X21pc3NpbmcoY29uc3QgY2hhciAqa2luZCwgUHlDb2RlT2JqZWN0ICpjbywgUHlPYmplY3QgKm5hbWVzKQoreworICAgIGludCBlcnI7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeUxpc3RfR0VUX1NJWkUobmFtZXMpOworICAgIFB5T2JqZWN0ICpuYW1lX3N0ciwgKmNvbW1hLCAqdGFpbCwgKnRtcDsKKworICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChuYW1lcykpOworICAgIGFzc2VydChsZW4gPj0gMSk7CisgICAgLyogRGVhbCB3aXRoIHRoZSBqb3lzIG9mIG5hdHVyYWwgbGFuZ3VhZ2UuICovCisgICAgc3dpdGNoIChsZW4pIHsKKyAgICBjYXNlIDE6CisgICAgICAgIG5hbWVfc3RyID0gUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCAwKTsKKyAgICAgICAgUHlfSU5DUkVGKG5hbWVfc3RyKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBuYW1lX3N0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCIlVSBhbmQgJVUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShuYW1lcywgbGVuIC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBsZW4gLSAxKSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHRhaWwgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiLCAlVSwgYW5kICVVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HRVRfSVRFTShuYW1lcywgbGVuIC0gMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0obmFtZXMsIGxlbiAtIDEpKTsKKyAgICAgICAgaWYgKHRhaWwgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLyogQ2hvcCBvZmYgdGhlIGxhc3QgdHdvIG9iamVjdHMgaW4gdGhlIGxpc3QuIFRoaXMgc2hvdWxkbid0IGFjdHVhbGx5CisgICAgICAgICAgIGZhaWwsIGJ1dCB3ZSBjYW4ndCBiZSB0b28gY2FyZWZ1bC4gKi8KKyAgICAgICAgZXJyID0gUHlMaXN0X1NldFNsaWNlKG5hbWVzLCBsZW4gLSAyLCBsZW4sIE5VTEwpOworICAgICAgICBpZiAoZXJyID09IC0xKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLyogU3RpdGNoIGV2ZXJ5dGhpbmcgdXAgaW50byBhIG5pY2UgY29tbWEtc2VwYXJhdGVkIGxpc3QuICovCisgICAgICAgIGNvbW1hID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIiwgIik7CisgICAgICAgIGlmIChjb21tYSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdG1wID0gUHlVbmljb2RlX0pvaW4oY29tbWEsIG5hbWVzKTsKKyAgICAgICAgUHlfREVDUkVGKGNvbW1hKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYodGFpbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmFtZV9zdHIgPSBQeVVuaWNvZGVfQ29uY2F0KHRtcCwgdGFpbCk7CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgICAgICBQeV9ERUNSRUYodGFpbCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAobmFtZV9zdHIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICIlVSgpIG1pc3NpbmcgJWkgcmVxdWlyZWQgJXMgYXJndW1lbnQlczogJVUiLAorICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKKyAgICAgICAgICAgICAgICAgbGVuLAorICAgICAgICAgICAgICAgICBraW5kLAorICAgICAgICAgICAgICAgICBsZW4gPT0gMSA/ICIiIDogInMiLAorICAgICAgICAgICAgICAgICBuYW1lX3N0cik7CisgICAgUHlfREVDUkVGKG5hbWVfc3RyKTsKK30KKworc3RhdGljIHZvaWQKK21pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIGludCBtaXNzaW5nLCBpbnQgZGVmY291bnQsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCit7CisgICAgaW50IGksIGogPSAwOworICAgIGludCBzdGFydCwgZW5kOworICAgIGludCBwb3NpdGlvbmFsID0gZGVmY291bnQgIT0gLTE7CisgICAgY29uc3QgY2hhciAqa2luZCA9IHBvc2l0aW9uYWwgPyAicG9zaXRpb25hbCIgOiAia2V5d29yZC1vbmx5IjsKKyAgICBQeU9iamVjdCAqbWlzc2luZ19uYW1lczsKKworICAgIC8qIENvbXB1dGUgdGhlIG5hbWVzIG9mIHRoZSBhcmd1bWVudHMgdGhhdCBhcmUgbWlzc2luZy4gKi8KKyAgICBtaXNzaW5nX25hbWVzID0gUHlMaXN0X05ldyhtaXNzaW5nKTsKKyAgICBpZiAobWlzc2luZ19uYW1lcyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisgICAgaWYgKHBvc2l0aW9uYWwpIHsKKyAgICAgICAgc3RhcnQgPSAwOworICAgICAgICBlbmQgPSBjby0+Y29fYXJnY291bnQgLSBkZWZjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0YXJ0ID0gY28tPmNvX2FyZ2NvdW50OworICAgICAgICBlbmQgPSBzdGFydCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsKKyAgICB9CisgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlPYmplY3QgKnJhdyA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX3Zhcm5hbWVzLCBpKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlPYmplY3RfUmVwcihyYXcpOworICAgICAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtaXNzaW5nX25hbWVzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0obWlzc2luZ19uYW1lcywgaisrLCBuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBhc3NlcnQoaiA9PSBtaXNzaW5nKTsKKyAgICBmb3JtYXRfbWlzc2luZyhraW5kLCBjbywgbWlzc2luZ19uYW1lcyk7CisgICAgUHlfREVDUkVGKG1pc3NpbmdfbmFtZXMpOworfQorCitzdGF0aWMgdm9pZAordG9vX21hbnlfcG9zaXRpb25hbChQeUNvZGVPYmplY3QgKmNvLCBpbnQgZ2l2ZW4sIGludCBkZWZjb3VudCwgUHlPYmplY3QgKipmYXN0bG9jYWxzKQoreworICAgIGludCBwbHVyYWw7CisgICAgaW50IGt3b25seV9naXZlbiA9IDA7CisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKnNpZywgKmt3b25seV9zaWc7CisKKyAgICBhc3NlcnQoKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpID09IDApOworICAgIC8qIENvdW50IG1pc3Npbmcga2V5d29yZC1vbmx5IGFyZ3MuICovCisgICAgZm9yIChpID0gY28tPmNvX2FyZ2NvdW50OyBpIDwgY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspCisgICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQorICAgICAgICAgICAga3dvbmx5X2dpdmVuKys7CisgICAgaWYgKGRlZmNvdW50KSB7CisgICAgICAgIGludCBhdGxlYXN0ID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIHBsdXJhbCA9IDE7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICVkIHRvICVkIiwgYXRsZWFzdCwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBsdXJhbCA9IGNvLT5jb19hcmdjb3VudCAhPSAxOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJWQiLCBjby0+Y29fYXJnY291bnQpOworICAgIH0KKyAgICBpZiAoc2lnID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoa3dvbmx5X2dpdmVuKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJWQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKKyAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwgZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiLCBrd29ubHlfZ2l2ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuICE9IDEgPyAicyIgOiAiIik7CisgICAgICAgIGlmIChrd29ubHlfc2lnID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzaWcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBUaGlzIHdpbGwgbm90IGZhaWwuICovCisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbVN0cmluZygiIik7CisgICAgICAgIGFzc2VydChrd29ubHlfc2lnICE9IE5VTEwpOworICAgIH0KKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiJVUoKSB0YWtlcyAlVSBwb3NpdGlvbmFsIGFyZ3VtZW50JXMgYnV0ICVkJVUgJXMgZ2l2ZW4iLAorICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKKyAgICAgICAgICAgICAgICAgc2lnLAorICAgICAgICAgICAgICAgICBwbHVyYWwgPyAicyIgOiAiIiwKKyAgICAgICAgICAgICAgICAgZ2l2ZW4sCisgICAgICAgICAgICAgICAgIGt3b25seV9zaWcsCisgICAgICAgICAgICAgICAgIGdpdmVuID09IDEgJiYgIWt3b25seV9naXZlbiA/ICJ3YXMiIDogIndlcmUiKTsKKyAgICBQeV9ERUNSRUYoc2lnKTsKKyAgICBQeV9ERUNSRUYoa3dvbmx5X3NpZyk7Cit9CisKIC8qIFRoaXMgaXMgZ29ubmEgc2VlbSAqcmVhbCB3ZWlyZCosIGJ1dCBpZiB5b3UgcHV0IHNvbWUgb3RoZXIgY29kZSBiZXR3ZWVuCiAgICBQeUV2YWxfRXZhbEZyYW1lKCkgYW5kIFB5RXZhbF9FdmFsQ29kZUV4KCkgeW91IHdpbGwgbmVlZCB0byBhZGp1c3QKICAgIHRoZSB0ZXN0IGluIHRoZSBpZiBzdGF0ZW1lbnRzIGluIE1pc2MvZ2RiaW5pdCAocHlzdGFjayBhbmQgcHlzdGFja3YpLiAqLwpAQCAtMzExMCw2ICszMjQ5LDkgQEAKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIFB5T2JqZWN0ICp4LCAqdTsKICAgICBpbnQgdG90YWxfYXJncyA9IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsKKyAgICBpbnQgaTsKKyAgICBpbnQgbiA9IGFyZ2NvdW50OworICAgIFB5T2JqZWN0ICprd2RpY3QgPSBOVUxMOwogCiAgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCkBAIC0zMTI2LDIxMiArMzI2OCwxNTMgQEAKICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwogICAgIGZyZWV2YXJzID0gZi0+Zl9sb2NhbHNwbHVzICsgY28tPmNvX25sb2NhbHM7CiAKLSAgICBpZiAodG90YWxfYXJncyB8fCBjby0+Y29fZmxhZ3MgJiAoQ09fVkFSQVJHUyB8IENPX1ZBUktFWVdPUkRTKSkgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgaW50IG4gPSBhcmdjb3VudDsKLSAgICAgICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJLRVlXT1JEUykgewotICAgICAgICAgICAga3dkaWN0ID0gUHlEaWN0X05ldygpOwotICAgICAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIGkgPSB0b3RhbF9hcmdzOwotICAgICAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCi0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpIHsKLSAgICAgICAgICAgIGlmICghKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJXMgJWQgIgotICAgICAgICAgICAgICAgICAgICAicG9zaXRpb25hbCBhcmd1bWVudCVzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgZGVmY291bnQgPyAiYXQgbW9zdCIgOiAiZXhhY3RseSIsCi0gICAgICAgICAgICAgICAgICAgIGNvLT5jb19hcmdjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX2FyZ2NvdW50ID09IDEgPyAiIiA6ICJzIiwKLSAgICAgICAgICAgICAgICAgICAgYXJnY291bnQgKyBrd2NvdW50KTsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBuID0gY28tPmNvX2FyZ2NvdW50OwotICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAvKiBQYXJzZSBhcmd1bWVudHMuICovCisgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7CisgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBpID0gdG90YWxfYXJnczsKKyAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCisgICAgICAgICAgICBpKys7CisgICAgICAgIFNFVExPQ0FMKGksIGt3ZGljdCk7CisgICAgfQorICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCkKKyAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIHggPSBhcmdzW2ldOworICAgICAgICBQeV9JTkNSRUYoeCk7CisgICAgICAgIFNFVExPQ0FMKGksIHgpOworICAgIH0KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSQVJHUykgeworICAgICAgICB1ID0gUHlUdXBsZV9OZXcoYXJnY291bnQgLSBuKTsKKyAgICAgICAgaWYgKHUgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgU0VUTE9DQUwodG90YWxfYXJncywgdSk7CisgICAgICAgIGZvciAoaSA9IG47IGkgPCBhcmdjb3VudDsgaSsrKSB7CiAgICAgICAgICAgICB4ID0gYXJnc1tpXTsKICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgIFNFVExPQ0FMKGksIHgpOworICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7Ci0gICAgICAgICAgICB1ID0gUHlUdXBsZV9OZXcoYXJnY291bnQgLSBuKTsKLSAgICAgICAgICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgU0VUTE9DQUwodG90YWxfYXJncywgdSk7Ci0gICAgICAgICAgICBmb3IgKGkgPSBuOyBpIDwgYXJnY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIHggPSBhcmdzW2ldOwotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih4KTsKLSAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHUsIGktbiwgeCk7Ci0gICAgICAgICAgICB9CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKipjb192YXJuYW1lczsKKyAgICAgICAgUHlPYmplY3QgKmtleXdvcmQgPSBrd3NbMippXTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dzWzIqaSArIDFdOworICAgICAgICBpbnQgajsKKyAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOworICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7Ci0gICAgICAgICAgICBQeU9iamVjdCAqa2V5d29yZCA9IGt3c1syKmldOwotICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dzWzIqaSArIDFdOwotICAgICAgICAgICAgaW50IGo7Ci0gICAgICAgICAgICBpZiAoa2V5d29yZCA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2soa2V5d29yZCkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiJVUoKSBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAotICAgICAgICAgICAgICAgICAgICBjby0+Y29fbmFtZSk7CisgICAgICAgIC8qIFNwZWVkIGhhY2s6IGRvIHJhdyBwb2ludGVyIGNvbXBhcmVzLiBBcyBuYW1lcyBhcmUKKyAgICAgICAgICAgbm9ybWFsbHkgaW50ZXJuZWQgdGhpcyBzaG91bGQgYWxtb3N0IGFsd2F5cyBoaXQuICovCisgICAgICAgIGNvX3Zhcm5hbWVzID0gKChQeVR1cGxlT2JqZWN0ICopKGNvLT5jb192YXJuYW1lcykpLT5vYl9pdGVtOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgdG90YWxfYXJnczsgaisrKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKKyAgICAgICAgICAgIGlmIChubSA9PSBrZXl3b3JkKQorICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgIH0KKyAgICAgICAgLyogU2xvdyBmYWxsYmFjaywganVzdCBpbiBjYXNlICovCisgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaW50IGNtcCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgKKyAgICAgICAgICAgICAgICBrZXl3b3JkLCBubSwgUHlfRVEpOworICAgICAgICAgICAgaWYgKGNtcCA+IDApCisgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNtcCA8IDApCiAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQotICAgICAgICAgICAgICAgbm9ybWFsbHkgaW50ZXJuZWQgdGhpcyBzaG91bGQgYWxtb3N0IGFsd2F5cyBoaXQuICovCi0gICAgICAgICAgICBjb192YXJuYW1lcyA9ICgoUHlUdXBsZU9iamVjdCAqKShjby0+Y29fdmFybmFtZXMpKS0+b2JfaXRlbTsKLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbm0gPSBjb192YXJuYW1lc1tqXTsKLSAgICAgICAgICAgICAgICBpZiAobm0gPT0ga2V5d29yZCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBrd19mb3VuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIFNsb3cgZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqLwotICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgICAgIGludCBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woCi0gICAgICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7Ci0gICAgICAgICAgICAgICAgaWYgKGNtcCA+IDApCi0gICAgICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGogPj0gdG90YWxfYXJncyAmJiBrd2RpY3QgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmQgYXJndW1lbnQgJyVTJyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkKTsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbShrd2RpY3QsIGtleXdvcmQsIHZhbHVlKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgIGt3X2ZvdW5kOgotICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGopICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3Iga2V5d29yZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50ICclUyciLAorICAgICAgICB9CisgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOwotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKLSAgICAgICAgICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IHRvdGFsX2FyZ3M7IGkrKykgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOwotICAgICAgICAgICAgICAgIGlmIChHRVRMT0NBTChpKSAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fdmFybmFtZXMsIGkpOwotICAgICAgICAgICAgICAgIGlmIChrd2RlZnMgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmID0gUHlEaWN0X0dldEl0ZW0oa3dkZWZzLCBuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlZikgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGRlZik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTRVRMT0NBTChpLCBkZWYpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIiVVKCkgbmVlZHMga2V5d29yZC1vbmx5IGFyZ3VtZW50ICVTIiwKLSAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIG5hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXl3b3JkLCB2YWx1ZSk7CisgICAgICAgIGNvbnRpbnVlOworICAgICAga3dfZm91bmQ6CisgICAgICAgIGlmIChHRVRMT0NBTChqKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgInZhbHVlcyBmb3IgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFyZ2NvdW50IDwgY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgICAgICBpbnQgbSA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OwotICAgICAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgaiwgZ2l2ZW4gPSAwOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgY28tPmNvX2FyZ2NvdW50OyBqKyspCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4rKzsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzICVzICVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICIoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgKChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmNvdW50KSA/ICJhdCBsZWFzdCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiZXhhY3RseSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0sIG0gPT0gMSA/ICIiIDogInMiLCBnaXZlbik7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobiA+IG0pCi0gICAgICAgICAgICAgICAgaSA9IG4gLSBtOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgZm9yICg7IGkgPCBkZWZjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKEdFVExPQ0FMKG0raSkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmID0gZGVmc1tpXTsKLSAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGRlZik7Ci0gICAgICAgICAgICAgICAgICAgIFNFVExPQ0FMKG0raSwgZGVmKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICAgICAgU0VUTE9DQUwoaiwgdmFsdWUpOwogICAgIH0KLSAgICBlbHNlIGlmIChhcmdjb3VudCA+IDAgfHwga3djb3VudCA+IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlVSgpIHRha2VzIG5vIGFyZ3VtZW50cyAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgYXJnY291bnQgKyBrd2NvdW50KTsKKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQgJiYgIShjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSkgeworICAgICAgICB0b29fbWFueV9wb3NpdGlvbmFsKGNvLCBhcmdjb3VudCwgZGVmY291bnQsIGZhc3Rsb2NhbHMpOwogICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQotICAgIC8qIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplIHN0b3JhZ2UgZm9yIGNlbGwgdmFycywgYW5kIGNvcHkgZnJlZQotICAgICAgIHZhcnMgaW50byBmcmFtZS4gIFRoaXMgaXNuJ3QgdG9vIGVmZmljaWVudCByaWdodCBub3cuICovCi0gICAgaWYgKFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSkgewotICAgICAgICBpbnQgaSwgaiwgbmFyZ3MsIGZvdW5kOwotICAgICAgICBQeV9VTklDT0RFICpjZWxsbmFtZSwgKmFyZ25hbWU7Ci0gICAgICAgIFB5T2JqZWN0ICpjOwotCi0gICAgICAgIG5hcmdzID0gdG90YWxfYXJnczsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCi0gICAgICAgICAgICBuYXJncysrOwotICAgICAgICBpZiAoY28tPmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMpCi0gICAgICAgICAgICBuYXJncysrOwotCi0gICAgICAgIC8qIEluaXRpYWxpemUgZWFjaCBjZWxsIHZhciwgdGFraW5nIGludG8gYWNjb3VudAotICAgICAgICAgICBjZWxsIHZhcnMgdGhhdCBhcmUgaW5pdGlhbGl6ZWQgZnJvbSBhcmd1bWVudHMuCi0KLSAgICAgICAgICAgU2hvdWxkIGFycmFuZ2UgZm9yIHRoZSBjb21waWxlciB0byBwdXQgY2VsbHZhcnMKLSAgICAgICAgICAgdGhhdCBhcmUgYXJndW1lbnRzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNlbGx2YXJzCi0gICAgICAgICAgIGxpc3Qgc28gdGhhdCB3ZSBjYW4gbWFyY2ggb3ZlciBpdCBtb3JlIGVmZmljaWVudGx5PwotICAgICAgICAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpOyArK2kpIHsKLSAgICAgICAgICAgIGNlbGxuYW1lID0gUHlVbmljb2RlX0FTX1VOSUNPREUoCi0gICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fY2VsbHZhcnMsIGkpKTsKLSAgICAgICAgICAgIGZvdW5kID0gMDsKLSAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBuYXJnczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgYXJnbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKAotICAgICAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb192YXJuYW1lcywgaikpOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmNtcChjZWxsbmFtZSwgYXJnbmFtZSkgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjID0gUHlDZWxsX05ldyhHRVRMT0NBTChqKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjID09IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAgICAgICAgICAgICAgIEdFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSkgPSBjOwotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChmb3VuZCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgYyA9IFB5Q2VsbF9OZXcoTlVMTCk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICAgICAgICAgIFNFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSwgYyk7CisgICAgaWYgKGFyZ2NvdW50IDwgY28tPmNvX2FyZ2NvdW50KSB7CisgICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIGludCBtaXNzaW5nID0gMDsKKyAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspCisgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBtaXNzaW5nKys7CisgICAgICAgIGlmIChtaXNzaW5nKSB7CisgICAgICAgICAgICBtaXNzaW5nX2FyZ3VtZW50cyhjbywgbWlzc2luZywgZGVmY291bnQsIGZhc3Rsb2NhbHMpOworICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgICAgIGlmIChuID4gbSkKKyAgICAgICAgICAgIGkgPSBuIC0gbTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaSA9IDA7CisgICAgICAgIGZvciAoOyBpIDwgZGVmY291bnQ7IGkrKykgeworICAgICAgICAgICAgaWYgKEdFVExPQ0FMKG0raSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWYgPSBkZWZzW2ldOworICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWYpOworICAgICAgICAgICAgICAgIFNFVExPQ0FMKG0raSwgZGVmKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoUHlUdXBsZV9HRVRfU0laRShjby0+Y29fZnJlZXZhcnMpKSB7Ci0gICAgICAgIGludCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShjby0+Y29fZnJlZXZhcnMpOyArK2kpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlUdXBsZV9HRVRfSVRFTShjbG9zdXJlLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihvKTsKLSAgICAgICAgICAgIGZyZWV2YXJzW1B5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKSArIGldID0gbzsKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID4gMCkgeworICAgICAgICBpbnQgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IHRvdGFsX2FyZ3M7IGkrKykgeworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWU7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIG5hbWUgPSBQeVR1cGxlX0dFVF9JVEVNKGNvLT5jb192YXJuYW1lcywgaSk7CisgICAgICAgICAgICBpZiAoa3dkZWZzICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmID0gUHlEaWN0X0dldEl0ZW0oa3dkZWZzLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoZGVmKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWYpOworICAgICAgICAgICAgICAgICAgICBTRVRMT0NBTChpLCBkZWYpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtaXNzaW5nKys7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1pc3NpbmcpIHsKKyAgICAgICAgICAgIG1pc3NpbmdfYXJndW1lbnRzKGNvLCBtaXNzaW5nLCAtMSwgZmFzdGxvY2Fscyk7CisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBzdG9yYWdlIGZvciBjZWxsIHZhcnMsIGFuZCBjb3B5IGZyZWUKKyAgICAgICB2YXJzIGludG8gZnJhbWUuICovCisgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoY28tPmNvX2NlbGx2YXJzKTsgKytpKSB7CisgICAgICAgIFB5T2JqZWN0ICpjOworICAgICAgICBpbnQgYXJnOworICAgICAgICAvKiBQb3NzaWJseSBhY2NvdW50IGZvciB0aGUgY2VsbCB2YXJpYWJsZSBiZWluZyBhbiBhcmd1bWVudC4gKi8KKyAgICAgICAgaWYgKGNvLT5jb19jZWxsMmFyZyAhPSBOVUxMICYmCisgICAgICAgICAgICAoYXJnID0gY28tPmNvX2NlbGwyYXJnW2ldKSAhPSBDT19DRUxMX05PVF9BTl9BUkcpCisgICAgICAgICAgICBjID0gUHlDZWxsX05ldyhHRVRMT0NBTChhcmcpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYyA9IFB5Q2VsbF9OZXcoTlVMTCk7CisgICAgICAgIGlmIChjID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIFNFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSwgYyk7CisgICAgfQorICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgeworICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7CisgICAgICAgIFB5X0lOQ1JFRihvKTsKKyAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOwogICAgIH0KIAogICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19HRU5FUkFUT1IpIHsKQEAgLTMzNjUsMTggKzM0NDgsNzIgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotc3BlY2lhbF9sb29rdXAoUHlPYmplY3QgKm8sIGNoYXIgKm1ldGgsIFB5T2JqZWN0ICoqY2FjaGUpCitzcGVjaWFsX2xvb2t1cChQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKmlkKQogewogICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgbWV0aCwgY2FjaGUpOworICAgIHJlcyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sIGlkKTsKICAgICBpZiAocmVzID09IE5VTEwgJiYgIVB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCAqY2FjaGUpOworICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIGlkLT5vYmplY3QpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKIH0KIAogCisvKiBUaGVzZSAzIGZ1bmN0aW9ucyBkZWFsIHdpdGggdGhlIGV4Y2VwdGlvbiBzdGF0ZSBvZiBnZW5lcmF0b3JzLiAqLworCitzdGF0aWMgdm9pZAorc2F2ZV9leGNfc3RhdGUoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBQeUZyYW1lT2JqZWN0ICpmKQoreworICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0cmFjZWJhY2s7CisgICAgUHlfWElOQ1JFRih0c3RhdGUtPmV4Y190eXBlKTsKKyAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3ZhbHVlKTsKKyAgICBQeV9YSU5DUkVGKHRzdGF0ZS0+ZXhjX3RyYWNlYmFjayk7CisgICAgdHlwZSA9IGYtPmZfZXhjX3R5cGU7CisgICAgdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsKKyAgICB0cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7CisgICAgZi0+Zl9leGNfdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgZi0+Zl9leGNfdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICBmLT5mX2V4Y190cmFjZWJhY2sgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKHRyYWNlYmFjayk7Cit9CisKK3N0YXRpYyB2b2lkCitzd2FwX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUsIFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgUHlPYmplY3QgKnRtcDsKKyAgICB0bXAgPSB0c3RhdGUtPmV4Y190eXBlOworICAgIHRzdGF0ZS0+ZXhjX3R5cGUgPSBmLT5mX2V4Y190eXBlOworICAgIGYtPmZfZXhjX3R5cGUgPSB0bXA7CisgICAgdG1wID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsKKyAgICBmLT5mX2V4Y192YWx1ZSA9IHRtcDsKKyAgICB0bXAgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7CisgICAgdHN0YXRlLT5leGNfdHJhY2ViYWNrID0gZi0+Zl9leGNfdHJhY2ViYWNrOworICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IHRtcDsKK30KKworc3RhdGljIHZvaWQKK3Jlc3RvcmVfYW5kX2NsZWFyX2V4Y19zdGF0ZShQeVRocmVhZFN0YXRlICp0c3RhdGUsIFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgUHlPYmplY3QgKnR5cGUsICp2YWx1ZSwgKnRiOworICAgIHR5cGUgPSB0c3RhdGUtPmV4Y190eXBlOworICAgIHZhbHVlID0gdHN0YXRlLT5leGNfdmFsdWU7CisgICAgdGIgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7CisgICAgdHN0YXRlLT5leGNfdHlwZSA9IGYtPmZfZXhjX3R5cGU7CisgICAgdHN0YXRlLT5leGNfdmFsdWUgPSBmLT5mX2V4Y192YWx1ZTsKKyAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBmLT5mX2V4Y190cmFjZWJhY2s7CisgICAgZi0+Zl9leGNfdHlwZSA9IE5VTEw7CisgICAgZi0+Zl9leGNfdmFsdWUgPSBOVUxMOworICAgIGYtPmZfZXhjX3RyYWNlYmFjayA9IE5VTEw7CisgICAgUHlfWERFQ1JFRih0eXBlKTsKKyAgICBQeV9YREVDUkVGKHZhbHVlKTsKKyAgICBQeV9YREVDUkVGKHRiKTsKK30KKworCiAvKiBMb2dpYyBmb3IgdGhlIHJhaXNlIHN0YXRlbWVudCAodG9vIGNvbXBsaWNhdGVkIGZvciBpbmxpbmluZykuCiAgICBUaGlzICpjb25zdW1lcyogYSByZWZlcmVuY2UgY291bnQgdG8gZWFjaCBvZiBpdHMgYXJndW1lbnRzLiAqLwogc3RhdGljIGVudW0gd2h5X2NvZGUKQEAgLTM0NDYsNiArMzU4MywxMCBAQAogICAgICAgICBlbHNlIGlmIChQeUV4Y2VwdGlvbkluc3RhbmNlX0NoZWNrKGNhdXNlKSkgewogICAgICAgICAgICAgZml4ZWRfY2F1c2UgPSBjYXVzZTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjYXVzZSA9PSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2F1c2UpOworICAgICAgICAgICAgZml4ZWRfY2F1c2UgPSBOVUxMOworICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0aW9uIGNhdXNlcyBtdXN0IGRlcml2ZSBmcm9tICIKQEAgLTQxOTIsNyArNDMzMyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkgewogICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgc2VxdWVuY2UsIG5vdCAlMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIHNlcXVlbmNlLCBub3QgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJhcmctPm9iX3R5cGUtPnRwX25hbWUpOwpAQCAtNDM0Miw3ICs0NDgzLDkgQEAKIHN0YXRpYyBpbnQKIGltcG9ydF9hbGxfZnJvbShQeU9iamVjdCAqbG9jYWxzLCBQeU9iamVjdCAqdikKIHsKLSAgICBQeU9iamVjdCAqYWxsID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh2LCAiX19hbGxfXyIpOworICAgIF9QeV9JREVOVElGSUVSKF9fYWxsX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fZGljdF9fKTsKKyAgICBQeU9iamVjdCAqYWxsID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2LCAmUHlJZF9fX2FsbF9fKTsKICAgICBQeU9iamVjdCAqZGljdCwgKm5hbWUsICp2YWx1ZTsKICAgICBpbnQgc2tpcF9sZWFkaW5nX3VuZGVyc2NvcmVzID0gMDsKICAgICBpbnQgcG9zLCBlcnI7CkBAIC00MzUxLDcgKzQ0OTQsNyBAQAogICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBVbmV4cGVjdGVkIGVycm9yICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGRpY3QgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHYsICJfX2RpY3RfXyIpOworICAgICAgICBkaWN0ID0gX1B5T2JqZWN0X0dldEF0dHJJZCh2LCAmUHlJZF9fX2RpY3RfXyk7CiAgICAgICAgIGlmIChkaWN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNDM3Nyw3ICs0NTIwLDggQEAKICAgICAgICAgfQogICAgICAgICBpZiAoc2tpcF9sZWFkaW5nX3VuZGVyc2NvcmVzICYmCiAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sobmFtZSkgJiYKLSAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpWzBdID09ICdfJykKKyAgICAgICAgICAgIFB5VW5pY29kZV9SRUFEWShuYW1lKSAhPSAtMSAmJgorICAgICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihuYW1lLCAwKSA9PSAnXycpCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDQzNywxOSArNDU4MSw5IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywKLSAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCB1bnNpZ25lZCBjaGFyICpuZXh0X2luc3RyKQorICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmLCB1bnNpZ25lZCBjaGFyICpuZXh0X2luc3RyKQogewotICAgIC8qIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyAndmFyaWFibGUgKz0gZXhwcicgd2hlbiBib3RoIGFyZ3VtZW50cwotICAgICAgIGFyZSAoVW5pY29kZSkgc3RyaW5ncy4gKi8KLSAgICBQeV9zc2l6ZV90IHZfbGVuID0gUHlVbmljb2RlX0dFVF9TSVpFKHYpOwotICAgIFB5X3NzaXplX3Qgd19sZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUodyk7Ci0gICAgUHlfc3NpemVfdCBuZXdfbGVuID0gdl9sZW4gKyB3X2xlbjsKLSAgICBpZiAobmV3X2xlbiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KKyAgICBQeU9iamVjdCAqcmVzOwogICAgIGlmIChQeV9SRUZDTlQodikgPT0gMikgewogICAgICAgICAvKiBJbiB0aGUgY29tbW9uIGNhc2UsIHRoZXJlIGFyZSAyIHJlZmVyZW5jZXMgdG8gdGhlIHZhbHVlCiAgICAgICAgICAqIHN0b3JlZCBpbiAndmFyaWFibGUnIHdoZW4gdGhlICs9IGlzIHBlcmZvcm1lZDogb25lIG9uIHRoZQpAQCAtNDQ5MCwzMSArNDYyNCw5IEBACiAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLQotICAgIGlmIChQeV9SRUZDTlQodikgPT0gMSAmJiAhUHlVbmljb2RlX0NIRUNLX0lOVEVSTkVEKHYpKSB7Ci0gICAgICAgIC8qIE5vdyB3ZSBvd24gdGhlIGxhc3QgcmVmZXJlbmNlIHRvICd2Jywgc28gd2UgY2FuIHJlc2l6ZSBpdAotICAgICAgICAgKiBpbi1wbGFjZS4KLSAgICAgICAgICovCi0gICAgICAgIGlmIChQeVVuaWNvZGVfUmVzaXplKCZ2LCBuZXdfbGVuKSAhPSAwKSB7Ci0gICAgICAgICAgICAvKiBYWFggaWYgUHlVbmljb2RlX1Jlc2l6ZSgpIGZhaWxzLCAndicgaGFzIGJlZW4KLSAgICAgICAgICAgICAqIGRlYWxsb2NhdGVkIHNvIGl0IGNhbm5vdCBiZSBwdXQgYmFjayBpbnRvCi0gICAgICAgICAgICAgKiAndmFyaWFibGUnLiAgVGhlIE1lbW9yeUVycm9yIGlzIHJhaXNlZCB3aGVuIHRoZXJlCi0gICAgICAgICAgICAgKiBpcyBubyB2YWx1ZSBpbiAndmFyaWFibGUnLCB3aGljaCBtaWdodCAodmVyeQotICAgICAgICAgICAgICogcmVtb3RlbHkpIGJlIGEgY2F1c2Ugb2YgaW5jb21wYXRpYmlsaXRpZXMuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIC8qIGNvcHkgJ3cnIGludG8gdGhlIG5ld2x5IGFsbG9jYXRlZCBhcmVhIG9mICd2JyAqLwotICAgICAgICBtZW1jcHkoUHlVbmljb2RlX0FTX1VOSUNPREUodikgKyB2X2xlbiwKLSAgICAgICAgICAgICAgIFB5VW5pY29kZV9BU19VTklDT0RFKHcpLCB3X2xlbipzaXplb2YoUHlfVU5JQ09ERSkpOwotICAgICAgICByZXR1cm4gdjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIFdoZW4gaW4tcGxhY2UgcmVzaXppbmcgaXMgbm90IGFuIG9wdGlvbi4gKi8KLSAgICAgICAgdyA9IFB5VW5pY29kZV9Db25jYXQodiwgdyk7Ci0gICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgcmV0dXJuIHc7Ci0gICAgfQorICAgIHJlcyA9IHY7CisgICAgUHlVbmljb2RlX0FwcGVuZCgmcmVzLCB3KTsKKyAgICByZXR1cm4gcmVzOwogfQogCiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NldmFsX2dpbC5oIGIvUHl0aG9uL2NldmFsX2dpbC5oCmluZGV4IGJmN2EzNTAuLjI3MDJkNWMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbF9naWwuaAorKysgYi9QeXRob24vY2V2YWxfZ2lsLmgKQEAgLTU5LDIxMyArNTksNDkgQEAKICAgICAgKE5vdGU6IHRoaXMgbWVjaGFuaXNtIGlzIGVuYWJsZWQgd2l0aCBGT1JDRV9TV0lUQ0hJTkcgYWJvdmUpCiAqLwogCi0jaWZuZGVmIF9QT1NJWF9USFJFQURTCi0vKiBUaGlzIG1lYW5zIHB0aHJlYWRzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbGliYyBoZWFkZXJzLCBoZW5jZSB0aGUgbWFjcm8KLSAgIG5vdCBwcmVzZW50IGluIHVuaXN0ZC5oLiBCdXQgdGhleSBzdGlsbCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZXJuYWwKLSAgIGxpYnJhcnkgKGUuZy4gZ251IHB0aCBpbiBwdGhyZWFkIGVtdWxhdGlvbikgKi8KLSMgaWZkZWYgSEFWRV9QVEhSRUFEX0gKLSMgIGluY2x1ZGUgPHB0aHJlYWQuaD4gLyogX1BPU0lYX1RIUkVBRFMgKi8KLSMgZW5kaWYKKyNpbmNsdWRlICJjb25kdmFyLmgiCisjaWZuZGVmIFB5X0hBVkVfQ09ORFZBUgorI2Vycm9yIFlvdSBuZWVkIGVpdGhlciBhIFBPU0lYLWNvbXBhdGlibGUgb3IgYSBXaW5kb3dzIHN5c3RlbSEKICNlbmRpZgogCi0KLSNpZmRlZiBfUE9TSVhfVEhSRUFEUwotCi0vKgotICogUE9TSVggc3VwcG9ydAotICovCi0KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLSNkZWZpbmUgQUREX01JQ1JPU0VDT05EUyh0diwgaW50ZXJ2YWwpIFwKLWRvIHsgXAotICAgIHR2LnR2X3VzZWMgKz0gKGxvbmcpIGludGVydmFsOyBcCi0gICAgdHYudHZfc2VjICs9IHR2LnR2X3VzZWMgLyAxMDAwMDAwOyBcCi0gICAgdHYudHZfdXNlYyAlPSAxMDAwMDAwOyBcCi19IHdoaWxlICgwKQotCi0vKiBXZSBhc3N1bWUgYWxsIG1vZGVybiBQT1NJWCBzeXN0ZW1zIGhhdmUgZ2V0dGltZW9mZGF5KCkgKi8KLSNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKLSNkZWZpbmUgR0VUVElNRU9GREFZKHB0dikgZ2V0dGltZW9mZGF5KHB0dikKLSNlbHNlCi0jZGVmaW5lIEdFVFRJTUVPRkRBWShwdHYpIGdldHRpbWVvZmRheShwdHYsIChzdHJ1Y3QgdGltZXpvbmUgKilOVUxMKQotI2VuZGlmCi0KLSNkZWZpbmUgTVVURVhfVCBwdGhyZWFkX211dGV4X3QKKyNkZWZpbmUgTVVURVhfVCBQeU1VVEVYX1QKICNkZWZpbmUgTVVURVhfSU5JVChtdXQpIFwKLSAgICBpZiAocHRocmVhZF9tdXRleF9pbml0KCZtdXQsIE5VTEwpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9tdXRleF9pbml0KCIgI211dCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlNVVRFWF9JTklUKCYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeU1VVEVYX0lOSVQoIiAjbXV0ICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBNVVRFWF9GSU5JKG11dCkgXAotICAgIGlmIChwdGhyZWFkX211dGV4X2Rlc3Ryb3koJm11dCkpIHsgXAotICAgICAgICBQeV9GYXRhbEVycm9yKCJwdGhyZWFkX211dGV4X2Rlc3Ryb3koIiAjbXV0ICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeU1VVEVYX0ZJTkkoJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5TVVURVhfRklOSSgiICNtdXQgIikgZmFpbGVkIik7IH07CiAjZGVmaW5lIE1VVEVYX0xPQ0sobXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0KSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfbXV0ZXhfbG9jaygiICNtdXQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5TVVURVhfTE9DSygmKG11dCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlNVVRFWF9MT0NLKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgTVVURVhfVU5MT0NLKG11dCkgXAotICAgIGlmIChwdGhyZWFkX211dGV4X3VubG9jaygmbXV0KSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfbXV0ZXhfdW5sb2NrKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlNVVRFWF9VTkxPQ0soJihtdXQpKSkgeyBcCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5TVVURVhfVU5MT0NLKCIgI211dCAiKSBmYWlsZWQiKTsgfTsKIAotI2RlZmluZSBDT05EX1QgcHRocmVhZF9jb25kX3QKKyNkZWZpbmUgQ09ORF9UIFB5Q09ORF9UCiAjZGVmaW5lIENPTkRfSU5JVChjb25kKSBcCi0gICAgaWYgKHB0aHJlYWRfY29uZF9pbml0KCZjb25kLCBOVUxMKSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF9pbml0KCIgI2NvbmQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5Q09ORF9JTklUKCYoY29uZCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX0lOSVQoIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKICNkZWZpbmUgQ09ORF9GSU5JKGNvbmQpIFwKLSAgICBpZiAocHRocmVhZF9jb25kX2Rlc3Ryb3koJmNvbmQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX2Rlc3Ryb3koIiAjY29uZCAiKSBmYWlsZWQiKTsgfTsKKyAgICBpZiAoUHlDT05EX0ZJTkkoJihjb25kKSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfRklOSSgiICNjb25kICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBDT05EX1NJR05BTChjb25kKSBcCi0gICAgaWYgKHB0aHJlYWRfY29uZF9zaWduYWwoJmNvbmQpKSB7IFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX3NpZ25hbCgiICNjb25kICIpIGZhaWxlZCIpOyB9OworICAgIGlmIChQeUNPTkRfU0lHTkFMKCYoY29uZCkpKSB7IFwKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlDT05EX1NJR05BTCgiICNjb25kICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBDT05EX1dBSVQoY29uZCwgbXV0KSBcCi0gICAgaWYgKHB0aHJlYWRfY29uZF93YWl0KCZjb25kLCAmbXV0KSkgeyBcCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoInB0aHJlYWRfY29uZF93YWl0KCIgI2NvbmQgIikgZmFpbGVkIik7IH07CisgICAgaWYgKFB5Q09ORF9XQUlUKCYoY29uZCksICYobXV0KSkpIHsgXAorICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfV0FJVCgiICNjb25kICIpIGZhaWxlZCIpOyB9OwogI2RlZmluZSBDT05EX1RJTUVEX1dBSVQoY29uZCwgbXV0LCBtaWNyb3NlY29uZHMsIHRpbWVvdXRfcmVzdWx0KSBcCiAgICAgeyBcCi0gICAgICAgIGludCByOyBcCi0gICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0czsgXAotICAgICAgICBzdHJ1Y3QgdGltZXZhbCBkZWFkbGluZTsgXAotICAgICAgICBcCi0gICAgICAgIEdFVFRJTUVPRkRBWSgmZGVhZGxpbmUpOyBcCi0gICAgICAgIEFERF9NSUNST1NFQ09ORFMoZGVhZGxpbmUsIG1pY3Jvc2Vjb25kcyk7IFwKLSAgICAgICAgdHMudHZfc2VjID0gZGVhZGxpbmUudHZfc2VjOyBcCi0gICAgICAgIHRzLnR2X25zZWMgPSBkZWFkbGluZS50dl91c2VjICogMTAwMDsgXAotICAgICAgICBcCi0gICAgICAgIHIgPSBwdGhyZWFkX2NvbmRfdGltZWR3YWl0KCZjb25kLCAmbXV0LCAmdHMpOyBcCi0gICAgICAgIGlmIChyID09IEVUSU1FRE9VVCkgXAorICAgICAgICBpbnQgciA9IFB5Q09ORF9USU1FRFdBSVQoJihjb25kKSwgJihtdXQpLCAobWljcm9zZWNvbmRzKSk7IFwKKyAgICAgICAgaWYgKHIgPCAwKSBcCisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeUNPTkRfV0FJVCgiICNjb25kICIpIGZhaWxlZCIpOyBcCisgICAgICAgIGlmIChyKSAvKiAxID09IHRpbWVvdXQsIDIgPT0gaW1wbC4gY2FuJ3Qgc2F5LCBzbyBhc3N1bWUgdGltZW91dCAqLyBcCiAgICAgICAgICAgICB0aW1lb3V0X3Jlc3VsdCA9IDE7IFwKLSAgICAgICAgZWxzZSBpZiAocikgXAotICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigicHRocmVhZF9jb25kX3RpbWVkd2FpdCgiICNjb25kICIpIGZhaWxlZCIpOyBcCiAgICAgICAgIGVsc2UgXAogICAgICAgICAgICAgdGltZW91dF9yZXN1bHQgPSAwOyBcCiAgICAgfSBcCiAKLSNlbGlmIGRlZmluZWQoTlRfVEhSRUFEUykKLQotLyoKLSAqIFdpbmRvd3MgKDIwMDAgYW5kIGxhdGVyLCBhcyB3ZWxsIGFzIChob3BlZnVsbHkpIENFKSBzdXBwb3J0Ci0gKi8KLQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotI2RlZmluZSBNVVRFWF9UIENSSVRJQ0FMX1NFQ1RJT04KLSNkZWZpbmUgTVVURVhfSU5JVChtdXQpIGRvIHsgXAotICAgIGlmICghKEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb25BbmRTcGluQ291bnQoJihtdXQpLCA0MDAwKSkpIFwKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ3JlYXRlTXV0ZXgoIiAjbXV0ICIpIGZhaWxlZCIpOyBcCi19IHdoaWxlICgwKQotI2RlZmluZSBNVVRFWF9GSU5JKG11dCkgXAotICAgIERlbGV0ZUNyaXRpY2FsU2VjdGlvbigmKG11dCkpCi0jZGVmaW5lIE1VVEVYX0xPQ0sobXV0KSBcCi0gICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oJihtdXQpKQotI2RlZmluZSBNVVRFWF9VTkxPQ0sobXV0KSBcCi0gICAgTGVhdmVDcml0aWNhbFNlY3Rpb24oJihtdXQpKQotCi0vKiBXZSBlbXVsYXRlIGNvbmRpdGlvbiB2YXJpYWJsZXMgd2l0aCBhIHNlbWFwaG9yZS4KLSAgIFdlIHVzZSBhIFNlbWFwaG9yZSByYXRoZXIgdGhhbiBhbiBhdXRvLXJlc2V0IGV2ZW50LCBiZWNhdXNlIGFsdGhvdWdoCi0gICBhbiBhdXRvLXJlc2VudCBldmVudCBtaWdodCBhcHBlYXIgdG8gc29sdmUgdGhlIGxvc3Qtd2FrZXVwIGJ1ZyAocmFjZQotICAgY29uZGl0aW9uIGJldHdlZW4gcmVsZWFzaW5nIHRoZSBvdXRlciBsb2NrIGFuZCB3YWl0aW5nKSBiZWNhdXNlIGl0Ci0gICBtYWludGFpbnMgc3RhdGUgZXZlbiB0aG91Z2ggYSB3YWl0IGhhc24ndCBoYXBwZW5lZCwgdGhlcmUgaXMgc3RpbGwKLSAgIGEgbG9zdCB3YWtldXAgcHJvYmxlbSBpZiBtb3JlIHRoYW4gb25lIHRocmVhZCBhcmUgaW50ZXJydXB0ZWQgaW4gdGhlCi0gICBjcml0aWNhbCBwbGFjZS4gIEEgc2VtYXBob3JlIHNvbHZlcyB0aGF0LgotICAgQmVjYXVzZSBpdCBpcyBvayB0byBzaWduYWwgYSBjb25kaXRpb24gdmFyaWFibGUgd2l0aCBubyBvbmUKLSAgIHdhaXRpbmcsIHdlIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgbnVtYmVyIG9mCi0gICB3YWl0aW5nIHRocmVhZHMuICBPdGhlcndpc2UsIHRoZSBzZW1hcGhvcmUncyBzdGF0ZSBjb3VsZCByaXNlCi0gICB3aXRob3V0IGJvdW5kLgotCi0gICBHZW5lcmljIGVtdWxhdGlvbnMgb2YgdGhlIHB0aHJlYWRfY29uZF8qIEFQSSB1c2luZwotICAgV2luMzIgZnVuY3Rpb25zIGNhbiBiZSBmb3VuZCBvbiB0aGUgV2ViLgotICAgVGhlIGZvbGxvd2luZyByZWFkIGNhbiBiZSBlZGlmaWNhdGluZyAob3Igbm90KToKLSAgIGh0dHA6Ly93d3cuY3NlLnd1c3RsLmVkdS9+c2NobWlkdC93aW4zMi1jdi0xLmh0bWwKLSovCi10eXBlZGVmIHN0cnVjdCBDT05EX1QKLXsKLSAgICBIQU5ETEUgc2VtOyAgICAvKiB0aGUgc2VtYXBob3JlICovCi0gICAgaW50IG5fd2FpdGluZzsgLyogaG93IG1hbnkgYXJlIHVucmVsZWFzZWQgKi8KLX0gQ09ORF9UOwotCi1fX2lubGluZSBzdGF0aWMgdm9pZCBfY29uZF9pbml0KENPTkRfVCAqY29uZCkKLXsKLSAgICAvKiBBIHNlbWFwaG9yZSB3aXRoIGEgbGFyZ2UgbWF4IHZhbHVlLCAgVGhlIHBvc2l0aXZlIHZhbHVlCi0gICAgICogaXMgb25seSBuZWVkZWQgdG8gY2F0Y2ggdGhvc2UgImxvc3Qgd2FrZXVwIiBldmVudHMgYW5kCi0gICAgICogcmFjZSBjb25kaXRpb25zIHdoZW4gYSB0aW1lZCB3YWl0IGVsYXBzZXMuCi0gICAgICovCi0gICAgaWYgKCEoY29uZC0+c2VtID0gQ3JlYXRlU2VtYXBob3JlKE5VTEwsIDAsIDEwMDAsIE5VTEwpKSkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ3JlYXRlU2VtYXBob3JlKCkgZmFpbGVkIik7Ci0gICAgY29uZC0+bl93YWl0aW5nID0gMDsKLX0KLQotX19pbmxpbmUgc3RhdGljIHZvaWQgX2NvbmRfZmluaShDT05EX1QgKmNvbmQpCi17Ci0gICAgQk9PTCBvayA9IENsb3NlSGFuZGxlKGNvbmQtPnNlbSk7Ci0gICAgaWYgKCFvaykKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2xvc2VIYW5kbGUoKSBmYWlsZWQiKTsKLX0KLQotX19pbmxpbmUgc3RhdGljIHZvaWQgX2NvbmRfd2FpdChDT05EX1QgKmNvbmQsIE1VVEVYX1QgKm11dCkKLXsKLSAgICArK2NvbmQtPm5fd2FpdGluZzsKLSAgICBNVVRFWF9VTkxPQ0soKm11dCk7Ci0gICAgLyogImxvc3Qgd2FrZXVwIGJ1ZyIgd291bGQgb2NjdXIgaWYgdGhlIGNhbGxlciB3ZXJlIGludGVycnVwdGVkIGhlcmUsCi0gICAgICogYnV0IHdlIGFyZSBzYWZlIGJlY2F1c2Ugd2UgYXJlIHVzaW5nIGEgc2VtYXBob3JlIHdpY2ggaGFzIGFuIGludGVybmFsCi0gICAgICogY291bnQuCi0gICAgICovCi0gICAgaWYgKFdhaXRGb3JTaW5nbGVPYmplY3QoY29uZC0+c2VtLCBJTkZJTklURSkgPT0gV0FJVF9GQUlMRUQpCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIldhaXRGb3JTaW5nbGVPYmplY3QoKSBmYWlsZWQiKTsKLSAgICBNVVRFWF9MT0NLKCptdXQpOwotfQotCi1fX2lubGluZSBzdGF0aWMgaW50IF9jb25kX3RpbWVkX3dhaXQoQ09ORF9UICpjb25kLCBNVVRFWF9UICptdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdXMpCi17Ci0gICAgRFdPUkQgcjsKLSAgICArK2NvbmQtPm5fd2FpdGluZzsKLSAgICBNVVRFWF9VTkxPQ0soKm11dCk7Ci0gICAgciA9IFdhaXRGb3JTaW5nbGVPYmplY3QoY29uZC0+c2VtLCB1cyAvIDEwMDApOwotICAgIGlmIChyID09IFdBSVRfRkFJTEVEKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJXYWl0Rm9yU2luZ2xlT2JqZWN0KCkgZmFpbGVkIik7Ci0gICAgTVVURVhfTE9DSygqbXV0KTsKLSAgICBpZiAociA9PSBXQUlUX1RJTUVPVVQpCi0gICAgICAgIC0tY29uZC0+bl93YWl0aW5nOwotICAgICAgICAvKiBIZXJlIHdlIGhhdmUgYSBiZW5pZ24gcmFjZSBjb25kaXRpb24gd2l0aCBfY29uZF9zaWduYWwuICBJZiB0aGUKLSAgICAgICAgICogd2FpdCBvcGVyYXRpb24gaGFzIHRpbWVkIG91dCwgYnV0IGJlZm9yZSB3ZSBjYW4gYWNxdWlyZSB0aGUKLSAgICAgICAgICogbXV0ZXggYWdhaW4gdG8gZGVjcmVtZW50IG5fd2FpdGluZywgYSB0aHJlYWQgaG9sZGluZyB0aGUgbXV0ZXgKLSAgICAgICAgICogc3RpbGwgc2VlcyBhIHBvc2l0aXZlIG5fd2FpdGluZyB2YWx1ZSBhbmQgbWF5IGNhbGwKLSAgICAgICAgICogUmVsZWFzZVNlbWFwaG9yZSBhbmQgZGVjcmVtZW50IG5fd2FpdGluZy4KLSAgICAgICAgICogVGhpcyB3aWxsIGNhdXNlIG5fd2FpdGluZyB0byBiZSBkZWNyZW1lbnRlZCB0d2ljZS4KLSAgICAgICAgICogVGhpcyBpcyBiZW5pZ24sIHRob3VnaCwgYmVjYXVzZSBSZWxlYXNlU2VtYXBob3JlIHdpbGwgYWxzbyBoYXZlCi0gICAgICAgICAqIGJlZW4gY2FsbGVkLCBsZWF2aW5nIHRoZSBzZW1hcGhvcmUgc3RhdGUgcG9zaXRpdmUuICBXZSBtYXkKLSAgICAgICAgICogdGh1cyBlbmQgdXAgd2l0aCBzZW1hcGhvcmUgaW4gc3RhdGUgMSwgYW5kIG5fd2FpdGluZyA9PSAtMSwgYW5kCi0gICAgICAgICAqIHRoZSBuZXh0IHRpbWUgc29tZW9uZSBjYWxscyBfY29uZF93YWl0KCksIHRoYXQgdGhyZWFkIHdpbGwKLSAgICAgICAgICogcGFzcyByaWdodCB0aHJvdWdoLCBkZWNyZW1lbnRpbmcgdGhlIHNlbWFwaG9yZSBzdGF0ZSBhbmQKLSAgICAgICAgICogaW5jcmVtZW50aW5nIG5fd2FpdGluZywgdGh1cyBjb3JyZWN0aW5nIHRoZSBleHRyYSBfY29uZF9zaWduYWwuCi0gICAgICAgICAqLwotICAgIHJldHVybiByID09IFdBSVRfVElNRU9VVDsKLX0KLQotX19pbmxpbmUgc3RhdGljIHZvaWQgX2NvbmRfc2lnbmFsKENPTkRfVCAgKmNvbmQpIHsKLSAgICAvKiBOT1RFOiBUaGlzIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG11dGV4IGhlbGQgKi8KLSAgICBpZiAoY29uZC0+bl93YWl0aW5nID4gMCkgewotICAgICAgICBpZiAoIVJlbGVhc2VTZW1hcGhvcmUoY29uZC0+c2VtLCAxLCBOVUxMKSkKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlJlbGVhc2VTZW1hcGhvcmUoKSBmYWlsZWQiKTsKLSAgICAgICAgLS1jb25kLT5uX3dhaXRpbmc7Ci0gICAgfQotfQotCi0jZGVmaW5lIENPTkRfSU5JVChjb25kKSBcCi0gICAgX2NvbmRfaW5pdCgmKGNvbmQpKQotI2RlZmluZSBDT05EX0ZJTkkoY29uZCkgXAotICAgIF9jb25kX2ZpbmkoJihjb25kKSkKLSNkZWZpbmUgQ09ORF9TSUdOQUwoY29uZCkgXAotICAgIF9jb25kX3NpZ25hbCgmKGNvbmQpKQotI2RlZmluZSBDT05EX1dBSVQoY29uZCwgbXV0KSBcCi0gICAgX2NvbmRfd2FpdCgmKGNvbmQpLCAmKG11dCkpCi0jZGVmaW5lIENPTkRfVElNRURfV0FJVChjb25kLCBtdXQsIHVzLCB0aW1lb3V0X3Jlc3VsdCkgZG8geyBcCi0gICAgKHRpbWVvdXRfcmVzdWx0KSA9IF9jb25kX3RpbWVkX3dhaXQoJihjb25kKSwgJihtdXQpLCB1cyk7IFwKLX0gd2hpbGUgKDApCi0KLSNlbHNlCi0KLSNlcnJvciBZb3UgbmVlZCBlaXRoZXIgYSBQT1NJWC1jb21wYXRpYmxlIG9yIGEgV2luZG93cyBzeXN0ZW0hCi0KLSNlbmRpZiAvKiBfUE9TSVhfVEhSRUFEUywgTlRfVEhSRUFEUyAqLwogCiAKIC8qIFdoZXRoZXIgdGhlIEdJTCBpcyBhbHJlYWR5IHRha2VuICgtMSBpZiB1bmluaXRpYWxpemVkKS4gVGhpcyBpcyBhdG9taWMKQEAgLTMxMywxMyArMTQ5LDE0IEBACiAKIHN0YXRpYyB2b2lkIGRlc3Ryb3lfZ2lsKHZvaWQpCiB7CisgICAgLyogc29tZSBwdGhyZWFkLWxpa2UgaW1wbGVtZW50YXRpb25zIHRpZSB0aGUgbXV0ZXggdG8gdGhlIGNvbmQKKyAgICAgKiBhbmQgbXVzdCBoYXZlIHRoZSBjb25kIGRlc3Ryb3llZCBmaXJzdC4KKyAgICAgKi8KKyAgICBDT05EX0ZJTkkoZ2lsX2NvbmQpOwogICAgIE1VVEVYX0ZJTkkoZ2lsX211dGV4KTsKICNpZmRlZiBGT1JDRV9TV0lUQ0hJTkcKLSAgICBNVVRFWF9GSU5JKHN3aXRjaF9tdXRleCk7Ci0jZW5kaWYKLSAgICBDT05EX0ZJTkkoZ2lsX2NvbmQpOwotI2lmZGVmIEZPUkNFX1NXSVRDSElORwogICAgIENPTkRfRklOSShzd2l0Y2hfY29uZCk7CisgICAgTVVURVhfRklOSShzd2l0Y2hfbXV0ZXgpOwogI2VuZGlmCiAgICAgX1B5X2F0b21pY19zdG9yZV9leHBsaWNpdCgmZ2lsX2xvY2tlZCwgLTEsIF9QeV9tZW1vcnlfb3JkZXJfcmVsZWFzZSk7CiAgICAgX1B5X0FOTk9UQVRFX1JXTE9DS19ERVNUUk9ZKCZnaWxfbG9ja2VkKTsKQEAgLTM1NSwxMyArMTkyLDEzIEBACiAgICAgICAgIE1VVEVYX0xPQ0soc3dpdGNoX211dGV4KTsKICAgICAgICAgLyogTm90IHN3aXRjaGVkIHlldCA9PiB3YWl0ICovCiAgICAgICAgIGlmIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyKSA9PSB0c3RhdGUpIHsKLQkgICAgUkVTRVRfR0lMX0RST1BfUkVRVUVTVCgpOworICAgICAgICBSRVNFVF9HSUxfRFJPUF9SRVFVRVNUKCk7CiAgICAgICAgICAgICAvKiBOT1RFOiBpZiBDT05EX1dBSVQgZG9lcyBub3QgYXRvbWljYWxseSBzdGFydCB3YWl0aW5nIHdoZW4KICAgICAgICAgICAgICAgIHJlbGVhc2luZyB0aGUgbXV0ZXgsIGFub3RoZXIgdGhyZWFkIGNhbiBydW4gdGhyb3VnaCwgdGFrZQogICAgICAgICAgICAgICAgdGhlIEdJTCBhbmQgZHJvcCBpdCBhZ2FpbiwgYW5kIHJlc2V0IHRoZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIGJlZm9yZSB3ZSBldmVuIGhhZCBhIGNoYW5jZSB0byB3YWl0IGZvciBpdC4gKi8KICAgICAgICAgICAgIENPTkRfV0FJVChzd2l0Y2hfY29uZCwgc3dpdGNoX211dGV4KTsKLQl9CisgICAgfQogICAgICAgICBNVVRFWF9VTkxPQ0soc3dpdGNoX211dGV4KTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1B5dGhvbi9jb2RlY3MuYyBiL1B5dGhvbi9jb2RlY3MuYwppbmRleCA5MGYxY2Y2Li41NDcwNTAwIDEwMDY0NAotLS0gYS9QeXRob24vY29kZWNzLmMKKysrIGIvUHl0aG9uL2NvZGVjcy5jCkBAIC0xMSw2ICsxMSw4IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorY29uc3QgY2hhciAqUHlfaGV4ZGlnaXRzID0gIjAxMjM0NTY3ODlhYmNkZWYiOworCiAvKiAtLS0gQ29kZWMgUmVnaXN0cnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyogSW1wb3J0IHRoZSBzdGFuZGFyZCBlbmNvZGluZ3MgcGFja2FnZSB3aGljaCB3aWxsIHJlZ2lzdGVyIHRoZSBmaXJzdApAQCAtNDY1LDkgKzQ2NywxMSBAQAogCiBzdGF0aWMgdm9pZCB3cm9uZ19leGNlcHRpb25fdHlwZShQeU9iamVjdCAqZXhjKQogewotICAgIFB5T2JqZWN0ICp0eXBlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhleGMsICJfX2NsYXNzX18iKTsKKyAgICBfUHlfSURFTlRJRklFUihfX2NsYXNzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fbmFtZV9fKTsKKyAgICBQeU9iamVjdCAqdHlwZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXhjLCAmUHlJZF9fX2NsYXNzX18pOwogICAgIGlmICh0eXBlICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHR5cGUsICJfX25hbWVfXyIpOworICAgICAgICBQeU9iamVjdCAqbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodHlwZSwgJlB5SWRfX19uYW1lX18pOwogICAgICAgICBQeV9ERUNSRUYodHlwZSk7CiAgICAgICAgIGlmIChuYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC01MDYsNTcgKzUxMCw1OCBAQAogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgLyogb3VjaDogcGFzc2luZyBOVUxMLCAwLCBwb3MgZ2l2ZXMgTm9uZSBpbnN0ZWFkIG9mIHUnJyAqLwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsICZlbmQsIDAsIGVuZCk7CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCBQeVVuaWNvZGVfTmV3KDAsIDApLCBlbmQpOwogfQogCiAKIFB5T2JqZWN0ICpQeUNvZGVjX1JlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKIHsKLSAgICBQeU9iamVjdCAqcmVzdHVwbGU7Ci0gICAgUHlfc3NpemVfdCBzdGFydDsKLSAgICBQeV9zc2l6ZV90IGVuZDsKLSAgICBQeV9zc2l6ZV90IGk7CisgICAgUHlfc3NpemVfdCBzdGFydCwgZW5kLCBpLCBsZW47CiAKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBlbmQtc3RhcnQpOworICAgICAgICBsZW4gPSBlbmQgLSBzdGFydDsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhsZW4sICc/Jyk7CiAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpLCBpID0gc3RhcnQ7Ci0gICAgICAgICAgICBpPGVuZDsgKytwLCArK2kpCi0gICAgICAgICAgICAqcCA9ICc/JzsKLSAgICAgICAgcmVzdHVwbGUgPSBQeV9CdWlsZFZhbHVlKCIoT24pIiwgcmVzLCBlbmQpOwotICAgICAgICBQeV9ERUNSRUYocmVzKTsKLSAgICAgICAgcmV0dXJuIHJlc3R1cGxlOworICAgICAgICBraW5kID0gUHlVbmljb2RlX0tJTkQocmVzKTsKKyAgICAgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHJlcyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKKyAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCBpLCAnPycpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKLSAgICAgICAgUHlfVU5JQ09ERSByZXMgPSBQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUjsKICAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIodSNuKSIsICZyZXMsIDEsIGVuZCk7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoQ24pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClQeV9VTklDT0RFX1JFUExBQ0VNRU5UX0NIQVJBQ1RFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kKTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcikpIHsKICAgICAgICAgUHlPYmplY3QgKnJlczsKLSAgICAgICAgUHlfVU5JQ09ERSAqcDsKKyAgICAgICAgaW50IGtpbmQ7CisgICAgICAgIHZvaWQgKmRhdGE7CiAgICAgICAgIGlmIChQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCBlbmQtc3RhcnQpOworICAgICAgICBsZW4gPSBlbmQgLSBzdGFydDsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhsZW4sIFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGZvciAocCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyksIGkgPSBzdGFydDsKLSAgICAgICAgICAgIGk8ZW5kOyArK3AsICsraSkKLSAgICAgICAgICAgICpwID0gUHlfVU5JQ09ERV9SRVBMQUNFTUVOVF9DSEFSQUNURVI7Ci0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7Ci0gICAgICAgIHJldHVybiByZXN0dXBsZTsKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHJlcyk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShyZXMpOworICAgICAgICBmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKQorICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIGksIFB5X1VOSUNPREVfUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTsKKyAgICAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShyZXMsIDEpKTsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwpAQCAtNTY5LDgyICs1NzQsNzIgQEAKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKICAgICAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgICAgICBQeU9iamVjdCAqb2JqZWN0OworICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgICAgIFB5X3NzaXplX3QgZW5kOwogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOwotICAgICAgICBQeV9VTklDT0RFICpzdGFydHA7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dHA7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHA7CiAgICAgICAgIGludCByZXNzaXplOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpZiAoUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQoZXhjLCAmc3RhcnQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQoZXhjLCAmZW5kKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RhcnRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqZWN0KTsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0LCByZXNzaXplID0gMDsgcCA8IHN0YXJ0cCtlbmQ7ICsrcCkgewotICAgICAgICAgICAgaWYgKCpwPDEwKQorICAgICAgICBmb3IgKGkgPSBzdGFydCwgcmVzc2l6ZSA9IDA7IGkgPCBlbmQ7ICsraSkgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CisgICAgICAgICAgICBpZiAoY2g8MTApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzErMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMCkKICAgICAgICAgICAgICAgICByZXNzaXplICs9IDIrMisxOwotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMCkKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzMrMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwKQorICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzQrMTsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDApCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzUrMTsKLSNlbHNlCi0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwMDApCi0gICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzUrMTsKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMDApCisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwMDAwKQogICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMis2KzE7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAyKzcrMTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIC8qIGFsbG9jYXRlIHJlcGxhY2VtZW50ICovCi0gICAgICAgIHJlcyA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShOVUxMLCByZXNzaXplKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX05ldyhyZXNzaXplLCAxMjcpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgb3V0cCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CiAgICAgICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCi0gICAgICAgIGZvciAocCA9IHN0YXJ0cCtzdGFydCwgb3V0cCA9IFB5VW5pY29kZV9BU19VTklDT0RFKHJlcyk7Ci0gICAgICAgICAgICBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGMgPSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkgewogICAgICAgICAgICAgaW50IGRpZ2l0czsKICAgICAgICAgICAgIGludCBiYXNlOworICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CiAgICAgICAgICAgICAqb3V0cCsrID0gJyYnOwogICAgICAgICAgICAgKm91dHArKyA9ICcjJzsKLSAgICAgICAgICAgIGlmICgqcDwxMCkgeworICAgICAgICAgICAgaWYgKGNoPDEwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gMTsKICAgICAgICAgICAgICAgICBiYXNlID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gMjsKICAgICAgICAgICAgICAgICBiYXNlID0gMTA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgqcDwxMDAwKSB7CisgICAgICAgICAgICBlbHNlIGlmIChjaDwxMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gMzsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDApIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNDsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDsKICAgICAgICAgICAgIH0KLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoPDEwMDAwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDU7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDAwOwogICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGVsc2UgaWYgKCpwPDEwMDAwMCkgewotICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDU7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IDEwMDAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoKnA8MTAwMDAwMCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY2g8MTAwMDAwMCkgewogICAgICAgICAgICAgICAgIGRpZ2l0cyA9IDY7CiAgICAgICAgICAgICAgICAgYmFzZSA9IDEwMDAwMDsKICAgICAgICAgICAgIH0KQEAgLTY1MiwxNiArNjQ3LDE1IEBACiAgICAgICAgICAgICAgICAgZGlnaXRzID0gNzsKICAgICAgICAgICAgICAgICBiYXNlID0gMTAwMDAwMDsKICAgICAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICAgICAgd2hpbGUgKGRpZ2l0cy0tPjApIHsKLSAgICAgICAgICAgICAgICAqb3V0cCsrID0gJzAnICsgYy9iYXNlOwotICAgICAgICAgICAgICAgIGMgJT0gYmFzZTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gJzAnICsgY2gvYmFzZTsKKyAgICAgICAgICAgICAgICBjaCAlPSBiYXNlOwogICAgICAgICAgICAgICAgIGJhc2UgLz0gMTA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqb3V0cCsrID0gJzsnOwogICAgICAgICB9Ci0gICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE9uKSIsIHJlcywgZW5kKTsKLSAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzLCAxKSk7CisgICAgICAgIHJlc3R1cGxlID0gUHlfQnVpbGRWYWx1ZSgiKE5uKSIsIHJlcywgZW5kKTsKICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgIHJldHVybiByZXN0dXBsZTsKICAgICB9CkBAIC02NzEsODcgKzY2NSw2NSBAQAogICAgIH0KIH0KIAotc3RhdGljIFB5X1VOSUNPREUgaGV4ZGlnaXRzW10gPSB7Ci0gICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsCi0gICAgJzgnLCAnOScsICdhJywgJ2InLCAnYycsICdkJywgJ2UnLCAnZicKLX07Ci0KIFB5T2JqZWN0ICpQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMoUHlPYmplY3QgKmV4YykKIHsKLSNpZm5kZWYgUHlfVU5JQ09ERV9XSURFCi0jZGVmaW5lIElTX1NVUlJPR0FURV9QQUlSKHAsIGVuZCkgXAotICAgICgqcCA+PSAweEQ4MDAgJiYgKnAgPD0gMHhEQkZGICYmIChwICsgMSkgPCBlbmQgJiYgXAotICAgICAqKHAgKyAxKSA+PSAweERDMDAgJiYgKihwICsgMSkgPD0gMHhERkZGKQotI2Vsc2UKLSNkZWZpbmUgSVNfU1VSUk9HQVRFX1BBSVIocCwgZW5kKSAwCi0jZW5kaWYKICAgICBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcikpIHsKICAgICAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgICAgICBQeU9iamVjdCAqb2JqZWN0OworICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQ7CiAgICAgICAgIFB5X3NzaXplX3QgZW5kOwogICAgICAgICBQeU9iamVjdCAqcmVzOwotICAgICAgICBQeV9VTklDT0RFICpwOwotICAgICAgICBQeV9VTklDT0RFICpzdGFydHA7Ci0gICAgICAgIFB5X1VOSUNPREUgKm91dHA7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dHA7CiAgICAgICAgIGludCByZXNzaXplOworICAgICAgICBQeV9VQ1M0IGM7CiAgICAgICAgIGlmIChQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZChleGMsICZlbmQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKG9iamVjdCA9IFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdChleGMpKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBzdGFydHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShvYmplY3QpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIHJlc3NpemUgPSAwOyBwIDwgc3RhcnRwK2VuZDsgKytwKSB7Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICBpZiAoKnAgPj0gMHgwMDAxMDAwMCkKKyAgICAgICAgZm9yIChpID0gc3RhcnQsIHJlc3NpemUgPSAwOyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAweDEwMDAwKSB7CiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErODsKLSAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgaWYgKCpwID49IDB4MTAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKElTX1NVUlJPR0FURV9QQUlSKHAsIHN0YXJ0cCtlbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzg7Ci0gICAgICAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXNzaXplICs9IDErMSs0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAweDEwMCkgeworICAgICAgICAgICAgICAgIHJlc3NpemUgKz0gMSsxKzQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVzc2l6ZSArPSAxKzErMjsKICAgICAgICAgfQotICAgICAgICByZXMgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgcmVzc2l6ZSk7CisgICAgICAgIHJlcyA9IFB5VW5pY29kZV9OZXcocmVzc2l6ZSwgMTI3KTsKICAgICAgICAgaWYgKHJlcz09TlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQsIG91dHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShyZXMpOwotICAgICAgICAgICAgcCA8IHN0YXJ0cCtlbmQ7ICsrcCkgewotICAgICAgICAgICAgUHlfVUNTNCBjID0gKFB5X1VDUzQpICpwOworICAgICAgICBmb3IgKGkgPSBzdGFydCwgb3V0cCA9IFB5VW5pY29kZV8xQllURV9EQVRBKHJlcyk7CisgICAgICAgICAgICBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgICAgIGMgPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CiAgICAgICAgICAgICAqb3V0cCsrID0gJ1xcJzsKLSAgICAgICAgICAgIGlmIChJU19TVVJST0dBVEVfUEFJUihwLCBzdGFydHArZW5kKSkgewotICAgICAgICAgICAgICAgIGMgPSAoKCpwICYgMHgzRkYpIDw8IDEwKSArICgqKHAgKyAxKSAmIDB4M0ZGKSArIDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgKytwOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGMgPj0gMHgwMDAxMDAwMCkgewogICAgICAgICAgICAgICAgICpvdXRwKysgPSAnVSc7Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+MjgpJjB4Zl07Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+MjQpJjB4Zl07Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+MjApJjB4Zl07Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+MTYpJjB4Zl07Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+MTIpJjB4Zl07Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+OCkmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yOCkmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yNCkmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4yMCkmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xNikmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj44KSYweGZdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAweDEwMCkgewogICAgICAgICAgICAgICAgICpvdXRwKysgPSAndSc7Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+MTIpJjB4Zl07Ci0gICAgICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1soYz4+OCkmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj4xMikmMHhmXTsKKyAgICAgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj44KSYweGZdOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICpvdXRwKysgPSAneCc7Ci0gICAgICAgICAgICAqb3V0cCsrID0gaGV4ZGlnaXRzWyhjPj40KSYweGZdOwotICAgICAgICAgICAgKm91dHArKyA9IGhleGRpZ2l0c1tjJjB4Zl07CisgICAgICAgICAgICAqb3V0cCsrID0gUHlfaGV4ZGlnaXRzWyhjPj40KSYweGZdOworICAgICAgICAgICAgKm91dHArKyA9IFB5X2hleGRpZ2l0c1tjJjB4Zl07CiAgICAgICAgIH0KIAotICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihPbikiLCByZXMsIGVuZCk7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXMpOworICAgICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOworICAgICAgICByZXN0dXBsZSA9IFB5X0J1aWxkVmFsdWUoIihObikiLCByZXMsIGVuZCk7CiAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICByZXR1cm4gcmVzdHVwbGU7CiAgICAgfQpAQCAtNzU5LDcgKzczMSw2IEBACiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSN1bmRlZiBJU19TVVJST0dBVEVfUEFJUgogfQogCiAvKiBUaGlzIGhhbmRsZXIgaXMgZGVjbGFyZWQgc3RhdGljIHVudGlsIHNvbWVvbmUgZGVtb25zdHJhdGVzCkBAIC03NjksMTIgKzc0MCwxMSBAQAogewogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKICAgICAgICAgY2hhciAqb3V0cDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzgyLDE1ICs3NTIsMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RhcnRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqZWN0KTsKICAgICAgICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAzKihlbmQtc3RhcnQpKTsKICAgICAgICAgaWYgKCFyZXMpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmplY3QpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgb3V0cCA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzKTsKLSAgICAgICAgZm9yIChwID0gc3RhcnRwK3N0YXJ0OyBwIDwgc3RhcnRwK2VuZDsgcCsrKSB7Ci0gICAgICAgICAgICBQeV9VTklDT0RFIGNoID0gKnA7CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIC8qIG9iamVjdCBpcyBndWFyYW50ZWVkIHRvIGJlICJyZWFkeSIgKi8KKyAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRF9DSEFSKG9iamVjdCwgaSk7CiAgICAgICAgICAgICBpZiAoY2ggPCAweGQ4MDAgfHwgY2ggPiAweGRmZmYpIHsKICAgICAgICAgICAgICAgICAvKiBOb3QgYSBzdXJyb2dhdGUsIGZhaWwgd2l0aCBvcmlnaW5hbCBleGNlcHRpb24gKi8KICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOwpAQCAtODA5LDcgKzc3OSw3IEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IpKSB7CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgY2ggPSAwOworICAgICAgICBQeV9VQ1M0IGNoID0gMDsKICAgICAgICAgaWYgKFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCkBAIC04MzYsNyArODA2LDEwIEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIih1I24pIiwgJmNoLCAxLCBzdGFydCszKTsKKyAgICAgICAgcmVzID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGNoKTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgcmVzLCBzdGFydCszKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHdyb25nX2V4Y2VwdGlvbl90eXBlKGV4Yyk7CkBAIC04NDksMTIgKzgyMiwxMSBAQAogewogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKICAgICBQeU9iamVjdCAqb2JqZWN0OworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeV9zc2l6ZV90IHN0YXJ0OwogICAgIFB5X3NzaXplX3QgZW5kOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5T2JqZWN0X0lzSW5zdGFuY2UoZXhjLCBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IpKSB7Ci0gICAgICAgIFB5X1VOSUNPREUgKnA7Ci0gICAgICAgIFB5X1VOSUNPREUgKnN0YXJ0cDsKICAgICAgICAgY2hhciAqb3V0cDsKICAgICAgICAgaWYgKFB5VW5pY29kZUVuY29kZUVycm9yX0dldFN0YXJ0KGV4YywgJnN0YXJ0KSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtODYyLDE1ICs4MzQsMTUgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBpZiAoIShvYmplY3QgPSBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QoZXhjKSkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgc3RhcnRwID0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqZWN0KTsKICAgICAgICAgcmVzID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBlbmQtc3RhcnQpOwogICAgICAgICBpZiAoIXJlcykgewogICAgICAgICAgICAgUHlfREVDUkVGKG9iamVjdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBvdXRwID0gUHlCeXRlc19Bc1N0cmluZyhyZXMpOwotICAgICAgICBmb3IgKHAgPSBzdGFydHArc3RhcnQ7IHAgPCBzdGFydHArZW5kOyBwKyspIHsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSAqcDsKKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAgLyogb2JqZWN0IGlzIGd1YXJhbnRlZWQgdG8gYmUgInJlYWR5IiAqLworICAgICAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqZWN0LCBpKTsKICAgICAgICAgICAgIGlmIChjaCA8IDB4ZGM4MCB8fCBjaCA+IDB4ZGNmZikgewogICAgICAgICAgICAgICAgIC8qIE5vdCBhIFVURi04YiBzdXJyb2dhdGUsIGZhaWwgd2l0aCBvcmlnaW5hbCBleGNlcHRpb24gKi8KICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNlcHRpb25JbnN0YW5jZV9DbGFzcyhleGMpLCBleGMpOwpAQCAtODg2LDggKzg1OCw5IEBACiAgICAgICAgIHJldHVybiByZXN0dXBsZTsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlPYmplY3RfSXNJbnN0YW5jZShleGMsIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKKyAgICAgICAgUHlPYmplY3QgKnN0cjsKICAgICAgICAgdW5zaWduZWQgY2hhciAqcDsKLSAgICAgICAgUHlfVU5JQ09ERSBjaFs0XTsgLyogZGVjb2RlIHVwIHRvIDQgYmFkIGJ5dGVzLiAqLworICAgICAgICBQeV9VQ1MyIGNoWzRdOyAvKiBkZWNvZGUgdXAgdG8gNCBiYWQgYnl0ZXMuICovCiAgICAgICAgIGludCBjb25zdW1lZCA9IDA7CiAgICAgICAgIGlmIChQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydChleGMsICZzdGFydCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTkxMiw3ICs4ODUsMTAgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y2VwdGlvbkluc3RhbmNlX0NsYXNzKGV4YyksIGV4Yyk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHUjbikiLCBjaCwgY29uc3VtZWQsIHN0YXJ0K2NvbnN1bWVkKTsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX0Zyb21LaW5kQW5kRGF0YShQeVVuaWNvZGVfMkJZVEVfS0lORCwgY2gsIGNvbnN1bWVkKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoTm4pIiwgc3RyLCBzdGFydCtjb25zdW1lZCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICB3cm9uZ19leGNlcHRpb25fdHlwZShleGMpOwpAQCAtMTA0OSw3ICsxMDI1LDcgQEAKICAgICBpbnRlcnAtPmNvZGVjX2Vycm9yX3JlZ2lzdHJ5ID0gUHlEaWN0X05ldygpOwogCiAgICAgaWYgKGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkpIHsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZihtZXRob2RzKS9zaXplb2YobWV0aG9kc1swXSk7ICsraSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlfQVJSQVlfTEVOR1RIKG1ldGhvZHMpOyArK2kpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUHlDRnVuY3Rpb25fTmV3KCZtZXRob2RzW2ldLmRlZiwgTlVMTCk7CiAgICAgICAgICAgICBpbnQgcmVzOwogICAgICAgICAgICAgaWYgKCFmdW5jKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbXBpbGUuYyBiL1B5dGhvbi9jb21waWxlLmMKaW5kZXggZDZmNjQwZi4uZmY1NTIyMCAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbXBpbGUuYworKysgYi9QeXRob24vY29tcGlsZS5jCkBAIC05MCw2ICs5MCwxMyBAQAogICAgIGJhc2ljYmxvY2sgKmZiX2Jsb2NrOwogfTsKIAorZW51bSB7CisgICAgQ09NUElMRVJfU0NPUEVfTU9EVUxFLAorICAgIENPTVBJTEVSX1NDT1BFX0NMQVNTLAorICAgIENPTVBJTEVSX1NDT1BFX0ZVTkNUSU9OLAorICAgIENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04sCit9OworCiAvKiBUaGUgZm9sbG93aW5nIGl0ZW1zIGNoYW5nZSBvbiBlbnRyeSBhbmQgZXhpdCBvZiBjb2RlIGJsb2Nrcy4KICAgIFRoZXkgbXVzdCBiZSBzYXZlZCBhbmQgcmVzdG9yZWQgd2hlbiByZXR1cm5pbmcgdG8gYSBibG9jay4KICovCkBAIC05Nyw2ICsxMDQsOSBAQAogICAgIFB5U1RFbnRyeU9iamVjdCAqdV9zdGU7CiAKICAgICBQeU9iamVjdCAqdV9uYW1lOworICAgIFB5T2JqZWN0ICp1X3F1YWxuYW1lOyAgLyogZG90LXNlcGFyYXRlZCBxdWFsaWZpZWQgbmFtZSAobGF6eSkgKi8KKyAgICBpbnQgdV9zY29wZV90eXBlOworCiAgICAgLyogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIGRpY3RzIHRoYXQgbWFwIG9iamVjdHMgdG8KICAgICAgICB0aGUgaW5kZXggb2YgdGhlbSBpbiBjb19YWFguICAgICAgVGhlIGluZGV4IGlzIHVzZWQgYXMKICAgICAgICB0aGUgYXJndW1lbnQgZm9yIG9wY29kZXMgdGhhdCByZWZlciB0byB0aG9zZSBjb2xsZWN0aW9ucy4KQEAgLTEzNSw2ICsxNDUsNyBAQAogCiBzdHJ1Y3QgY29tcGlsZXIgewogICAgIGNvbnN0IGNoYXIgKmNfZmlsZW5hbWU7CisgICAgUHlPYmplY3QgKmNfZmlsZW5hbWVfb2JqOwogICAgIHN0cnVjdCBzeW10YWJsZSAqY19zdDsKICAgICBQeUZ1dHVyZUZlYXR1cmVzICpjX2Z1dHVyZTsgLyogcG9pbnRlciB0byBtb2R1bGUncyBfX2Z1dHVyZV9fICovCiAgICAgUHlDb21waWxlckZsYWdzICpjX2ZsYWdzOwpAQCAtMTQ4LDcgKzE1OSw3IEBACiAgICAgUHlBcmVuYSAqY19hcmVuYTsgICAgICAgICAgICAvKiBwb2ludGVyIHRvIG1lbW9yeSBhbGxvY2F0aW9uIGFyZW5hICovCiB9OwogCi1zdGF0aWMgaW50IGNvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqLCBpZGVudGlmaWVyLCB2b2lkICosIGludCk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqLCBpZGVudGlmaWVyLCBpbnQsIHZvaWQgKiwgaW50KTsKIHN0YXRpYyB2b2lkIGNvbXBpbGVyX2ZyZWUoc3RydWN0IGNvbXBpbGVyICopOwogc3RhdGljIGJhc2ljYmxvY2sgKmNvbXBpbGVyX25ld19ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX25leHRfaW5zdHIoc3RydWN0IGNvbXBpbGVyICosIGJhc2ljYmxvY2sgKik7CkBAIC0xNzgsMTIgKzE4OSwxMyBAQAogc3RhdGljIGludCBpbnBsYWNlX2Jpbm9wKHN0cnVjdCBjb21waWxlciAqLCBvcGVyYXRvcl90eSk7CiBzdGF0aWMgaW50IGV4cHJfY29uc3RhbnQoc3RydWN0IGNvbXBpbGVyICosIGV4cHJfdHkpOwogCi1zdGF0aWMgaW50IGNvbXBpbGVyX3dpdGgoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOworc3RhdGljIGludCBjb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5LCBpbnQpOwogc3RhdGljIGludCBjb21waWxlcl9jYWxsX2hlbHBlcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGludCBuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHN0YXJhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGt3YXJncyk7CitzdGF0aWMgaW50IGNvbXBpbGVyX3RyeV9leGNlcHQoc3RydWN0IGNvbXBpbGVyICosIHN0bXRfdHkpOwogCiBzdGF0aWMgUHlDb2RlT2JqZWN0ICphc3NlbWJsZShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50IGFkZE5vbmUpOwogc3RhdGljIFB5T2JqZWN0ICpfX2RvY19fOwpAQCAtMTk1LDE2ICsyMDcsMTcgQEAKIHsKICAgICAvKiBOYW1lIG1hbmdsaW5nOiBfX3ByaXZhdGUgYmVjb21lcyBfY2xhc3NuYW1lX19wcml2YXRlLgogICAgICAgIFRoaXMgaXMgaW5kZXBlbmRlbnQgZnJvbSBob3cgdGhlIG5hbWUgaXMgdXNlZC4gKi8KLSAgICBjb25zdCBQeV9VTklDT0RFICpwLCAqbmFtZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGlkZW50KTsKLSAgICBQeV9VTklDT0RFICpidWZmZXI7Ci0gICAgc2l6ZV90IG5sZW4sIHBsZW47CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBzaXplX3QgbmxlbiwgcGxlbiwgaXByaXY7CisgICAgUHlfVUNTNCBtYXhjaGFyOwogICAgIGlmIChwcml2YXRlb2JqID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayhwcml2YXRlb2JqKSB8fAotICAgICAgICBuYW1lID09IE5VTEwgfHwgbmFtZVswXSAhPSAnXycgfHwgbmFtZVsxXSAhPSAnXycpIHsKKyAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgMCkgIT0gJ18nIHx8CisgICAgICAgIFB5VW5pY29kZV9SRUFEX0NIQVIoaWRlbnQsIDEpICE9ICdfJykgewogICAgICAgICBQeV9JTkNSRUYoaWRlbnQpOwogICAgICAgICByZXR1cm4gaWRlbnQ7CiAgICAgfQotICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShwcml2YXRlb2JqKTsKLSAgICBubGVuID0gUHlfVU5JQ09ERV9zdHJsZW4obmFtZSk7CisgICAgbmxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKGlkZW50KTsKKyAgICBwbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocHJpdmF0ZW9iaik7CiAgICAgLyogRG9uJ3QgbWFuZ2xlIF9faWRfXyBvciBuYW1lcyB3aXRoIGRvdHMuCiAKICAgICAgICBUaGUgb25seSB0aW1lIGEgbmFtZSB3aXRoIGEgZG90IGNhbiBvY2N1ciBpcyB3aGVuCkBAIC0yMTQsMzIgKzIyNyw0NCBAQAogICAgICAgIFRPRE8oamh5bHRvbik6IERlY2lkZSB3aGV0aGVyIHdlIHdhbnQgdG8gc3VwcG9ydAogICAgICAgIG1hbmdsaW5nIG9mIHRoZSBtb2R1bGUgbmFtZSwgZS5nLiBfX00uWC4KICAgICAqLwotICAgIGlmICgobmFtZVtubGVuLTFdID09ICdfJyAmJiBuYW1lW25sZW4tMl0gPT0gJ18nKQotICAgICAgICB8fCBQeV9VTklDT0RFX3N0cmNocihuYW1lLCAnLicpKSB7CisgICAgaWYgKChQeVVuaWNvZGVfUkVBRF9DSEFSKGlkZW50LCBubGVuLTEpID09ICdfJyAmJgorICAgICAgICAgUHlVbmljb2RlX1JFQURfQ0hBUihpZGVudCwgbmxlbi0yKSA9PSAnXycpIHx8CisgICAgICAgIFB5VW5pY29kZV9GaW5kQ2hhcihpZGVudCwgJy4nLCAwLCBubGVuLCAxKSAhPSAtMSkgewogICAgICAgICBQeV9JTkNSRUYoaWRlbnQpOwogICAgICAgICByZXR1cm4gaWRlbnQ7IC8qIERvbid0IG1hbmdsZSBfX3doYXRldmVyX18gKi8KICAgICB9CiAgICAgLyogU3RyaXAgbGVhZGluZyB1bmRlcnNjb3JlcyBmcm9tIGNsYXNzIG5hbWUgKi8KLSAgICB3aGlsZSAoKnAgPT0gJ18nKQotICAgICAgICBwKys7Ci0gICAgaWYgKCpwID09IDApIHsKKyAgICBpcHJpdiA9IDA7CisgICAgd2hpbGUgKFB5VW5pY29kZV9SRUFEX0NIQVIocHJpdmF0ZW9iaiwgaXByaXYpID09ICdfJykKKyAgICAgICAgaXByaXYrKzsKKyAgICBpZiAoaXByaXYgPT0gcGxlbikgewogICAgICAgICBQeV9JTkNSRUYoaWRlbnQpOwogICAgICAgICByZXR1cm4gaWRlbnQ7IC8qIERvbid0IG1hbmdsZSBpZiBjbGFzcyBpcyBqdXN0IHVuZGVyc2NvcmVzICovCiAgICAgfQotICAgIHBsZW4gPSBQeV9VTklDT0RFX3N0cmxlbihwKTsKKyAgICBwbGVuIC09IGlwcml2OwogCiAgICAgYXNzZXJ0KDEgPD0gUFlfU1NJWkVfVF9NQVggLSBubGVuKTsKICAgICBhc3NlcnQoMSArIG5sZW4gPD0gUFlfU1NJWkVfVF9NQVggLSBwbGVuKTsKIAotICAgIGlkZW50ID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDEgKyBubGVuICsgcGxlbik7Ci0gICAgaWYgKCFpZGVudCkKKyAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKGlkZW50KTsKKyAgICBpZiAoUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHByaXZhdGVvYmopID4gbWF4Y2hhcikKKyAgICAgICAgbWF4Y2hhciA9IFB5VW5pY29kZV9NQVhfQ0hBUl9WQUxVRShwcml2YXRlb2JqKTsKKworICAgIHJlc3VsdCA9IFB5VW5pY29kZV9OZXcoMSArIG5sZW4gKyBwbGVuLCBtYXhjaGFyKTsKKyAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgLyogaWRlbnQgPSAiXyIgKyBwWzpwbGVuXSArIG5hbWUgIyBpLmUuIDErcGxlbitubGVuIGJ5dGVzICovCi0gICAgYnVmZmVyID0gUHlVbmljb2RlX0FTX1VOSUNPREUoaWRlbnQpOwotICAgIGJ1ZmZlclswXSA9ICdfJzsKLSAgICBQeV9VTklDT0RFX3N0cm5jcHkoYnVmZmVyKzEsIHAsIHBsZW4pOwotICAgIFB5X1VOSUNPREVfc3RyY3B5KGJ1ZmZlcisxK3BsZW4sIG5hbWUpOwotICAgIHJldHVybiBpZGVudDsKKyAgICAvKiBpZGVudCA9ICJfIiArIHByaXZbaXByaXY6XSArIGlkZW50ICMgaS5lLiAxK3BsZW4rbmxlbiBieXRlcyAqLworICAgIFB5VW5pY29kZV9XUklURShQeVVuaWNvZGVfS0lORChyZXN1bHQpLCBQeVVuaWNvZGVfREFUQShyZXN1bHQpLCAwLCAnXycpOworICAgIGlmIChQeVVuaWNvZGVfQ29weUNoYXJhY3RlcnMocmVzdWx0LCAxLCBwcml2YXRlb2JqLCBpcHJpdiwgcGxlbikgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db3B5Q2hhcmFjdGVycyhyZXN1bHQsIHBsZW4rMSwgaWRlbnQsIDAsIG5sZW4pIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGludApAQCAtMjcyLDYgKzI5Nyw5IEBACiAgICAgaWYgKCFjb21waWxlcl9pbml0KCZjKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgYy5jX2ZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgYy5jX2ZpbGVuYW1lX29iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOworICAgIGlmICghYy5jX2ZpbGVuYW1lX29iaikKKyAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGMuY19hcmVuYSA9IGFyZW5hOwogICAgIGMuY19mdXR1cmUgPSBQeUZ1dHVyZV9Gcm9tQVNUKG1vZCwgZmlsZW5hbWUpOwogICAgIGlmIChjLmNfZnV0dXJlID09IE5VTEwpCkBAIC0zMjQsNiArMzUyLDggQEAKICAgICAgICAgUHlTeW10YWJsZV9GcmVlKGMtPmNfc3QpOwogICAgIGlmIChjLT5jX2Z1dHVyZSkKICAgICAgICAgUHlPYmplY3RfRnJlZShjLT5jX2Z1dHVyZSk7CisgICAgaWYgKGMtPmNfZmlsZW5hbWVfb2JqKQorICAgICAgICBQeV9ERUNSRUYoYy0+Y19maWxlbmFtZV9vYmopOwogICAgIFB5X0RFQ1JFRihjLT5jX3N0YWNrKTsKIH0KIApAQCAtNDU4LDYgKzQ4OCw3IEBACiAgICAgfQogICAgIFB5X0NMRUFSKHUtPnVfc3RlKTsKICAgICBQeV9DTEVBUih1LT51X25hbWUpOworICAgIFB5X0NMRUFSKHUtPnVfcXVhbG5hbWUpOwogICAgIFB5X0NMRUFSKHUtPnVfY29uc3RzKTsKICAgICBQeV9DTEVBUih1LT51X25hbWVzKTsKICAgICBQeV9DTEVBUih1LT51X3Zhcm5hbWVzKTsKQEAgLTQ2OCw4ICs0OTksOCBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9lbnRlcl9zY29wZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGlkZW50aWZpZXIgbmFtZSwgdm9pZCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVubykKK2NvbXBpbGVyX2VudGVyX3Njb3BlKHN0cnVjdCBjb21waWxlciAqYywgaWRlbnRpZmllciBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgaW50IHNjb3BlX3R5cGUsIHZvaWQgKmtleSwgaW50IGxpbmVubykKIHsKICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqdTsKIApAQCAtNDgwLDYgKzUxMSw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBtZW1zZXQodSwgMCwgc2l6ZW9mKHN0cnVjdCBjb21waWxlcl91bml0KSk7CisgICAgdS0+dV9zY29wZV90eXBlID0gc2NvcGVfdHlwZTsKICAgICB1LT51X2FyZ2NvdW50ID0gMDsKICAgICB1LT51X2t3b25seWFyZ2NvdW50ID0gMDsKICAgICB1LT51X3N0ZSA9IFB5U3ltdGFibGVfTG9va3VwKGMtPmNfc3QsIGtleSk7CkBAIC01NjcsNiArNTk5LDU5IEBACiAKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2NvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKHN0cnVjdCBjb21waWxlciAqYykKK3sKKyAgICBQeV9zc2l6ZV90IHN0YWNrX3NpemUsIGk7CisgICAgX1B5X3N0YXRpY19zdHJpbmcoZG90LCAiLiIpOworICAgIF9QeV9zdGF0aWNfc3RyaW5nKGxvY2FscywgIjxsb2NhbHM+Iik7CisgICAgc3RydWN0IGNvbXBpbGVyX3VuaXQgKnU7CisgICAgUHlPYmplY3QgKmNhcHN1bGUsICpuYW1lLCAqc2VxLCAqZG90X3N0ciwgKmxvY2Fsc19zdHI7CisKKyAgICB1ID0gYy0+dTsKKyAgICBpZiAodS0+dV9xdWFsbmFtZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRih1LT51X3F1YWxuYW1lKTsKKyAgICAgICAgcmV0dXJuIHUtPnVfcXVhbG5hbWU7CisgICAgfQorCisgICAgc2VxID0gUHlMaXN0X05ldygwKTsKKyAgICBpZiAoc2VxID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RhY2tfc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShjLT5jX3N0YWNrKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3RhY2tfc2l6ZTsgaSsrKSB7CisgICAgICAgIGNhcHN1bGUgPSBQeUxpc3RfR0VUX0lURU0oYy0+Y19zdGFjaywgaSk7CisgICAgICAgIHUgPSAoc3RydWN0IGNvbXBpbGVyX3VuaXQgKilQeUNhcHN1bGVfR2V0UG9pbnRlcihjYXBzdWxlLCBDT01QSUxFUl9DQVBTVUxFX05BTUVfQ09NUElMRVJfVU5JVCk7CisgICAgICAgIGFzc2VydCh1KTsKKyAgICAgICAgaWYgKHUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKFB5TGlzdF9BcHBlbmQoc2VxLCB1LT51X25hbWUpKQorICAgICAgICAgICAgZ290byBfZXJyb3I7CisgICAgICAgIGlmICh1LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04pIHsKKyAgICAgICAgICAgIGxvY2Fsc19zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmbG9jYWxzKTsKKyAgICAgICAgICAgIGlmIChsb2NhbHNfc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgZ290byBfZXJyb3I7CisgICAgICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzZXEsIGxvY2Fsc19zdHIpKQorICAgICAgICAgICAgICAgIGdvdG8gX2Vycm9yOworICAgICAgICB9CisgICAgfQorICAgIHUgPSBjLT51OworICAgIGlmIChQeUxpc3RfQXBwZW5kKHNlcSwgdS0+dV9uYW1lKSkKKyAgICAgICAgZ290byBfZXJyb3I7CisgICAgZG90X3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZkb3QpOworICAgIGlmIChkb3Rfc3RyID09IE5VTEwpCisgICAgICAgIGdvdG8gX2Vycm9yOworICAgIG5hbWUgPSBQeVVuaWNvZGVfSm9pbihkb3Rfc3RyLCBzZXEpOworICAgIFB5X0RFQ1JFRihzZXEpOworICAgIHUtPnVfcXVhbG5hbWUgPSBuYW1lOworICAgIFB5X1hJTkNSRUYobmFtZSk7CisgICAgcmV0dXJuIG5hbWU7CisKK19lcnJvcjoKKyAgICBQeV9YREVDUkVGKHNlcSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIC8qIEFsbG9jYXRlIGEgbmV3IGJsb2NrIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIGl0LgogICAgUmV0dXJucyBOVUxMIG9uIGVycm9yLgogKi8KQEAgLTc3Nyw3ICs4NjIsOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIFlJRUxEX1ZBTFVFOgogICAgICAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICAgICAgY2FzZSBZSUVMRF9GUk9NOgorICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIFBPUF9CTE9DSzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIFBPUF9FWENFUFQ6CkBAIC04NjMsOSArOTQ5LDkgQEAKICAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVzoKICAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpLTI7CiAgICAgICAgIGNhc2UgTUFLRV9GVU5DVElPTjoKLSAgICAgICAgICAgIHJldHVybiAtTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAgICAgcmV0dXJuIC0xIC1OQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7CiAgICAgICAgIGNhc2UgTUFLRV9DTE9TVVJFOgotICAgICAgICAgICAgcmV0dXJuIC0xIC0gTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAgICAgcmV0dXJuIC0yIC0gTkFSR1Mob3BhcmcpIC0gKChvcGFyZyA+PiAxNikgJiAweGZmZmYpOwogI3VuZGVmIE5BUkdTCiAgICAgICAgIGNhc2UgQlVJTERfU0xJQ0U6CiAgICAgICAgICAgICBpZiAob3BhcmcgPT0gMykKQEAgLTExOTUsNyArMTI4MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgLyogVXNlIDAgZm9yIGZpcnN0bGluZW5vIGluaXRpYWxseSwgd2lsbCBmaXh1cCBpbiBhc3NlbWJsZSgpLiAqLwotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbW9kdWxlLCBtb2QsIDApKQorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbW9kdWxlLCBDT01QSUxFUl9TQ09QRV9NT0RVTEUsIG1vZCwgMCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHN3aXRjaCAobW9kLT5raW5kKSB7CiAgICAgY2FzZSBNb2R1bGVfa2luZDoKQEAgLTEyNzEsMTEgKzEzNTcsMTUgQEAKIH0KIAogc3RhdGljIGludAotY29tcGlsZXJfbWFrZV9jbG9zdXJlKHN0cnVjdCBjb21waWxlciAqYywgUHlDb2RlT2JqZWN0ICpjbywgaW50IGFyZ3MpCitjb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBpbnQgYXJncywgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIGludCBpLCBmcmVlID0gUHlDb2RlX0dldE51bUZyZWUoY28pOworICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMKQorICAgICAgICBxdWFsbmFtZSA9IGNvLT5jb19uYW1lOworCiAgICAgaWYgKGZyZWUgPT0gMCkgewogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIChQeU9iamVjdCopY28sIGNvbnN0cyk7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7CiAgICAgICAgIEFERE9QX0koYywgTUFLRV9GVU5DVElPTiwgYXJncyk7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTEzMTIsNiArMTQwMiw3IEBACiAgICAgfQogICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGZyZWUpOwogICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHF1YWxuYW1lLCBjb25zdHMpOwogICAgIEFERE9QX0koYywgTUFLRV9DTE9TVVJFLCBhcmdzKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTE0NTcsNyArMTU0OCw3IEBACiBjb21waWxlcl9mdW5jdGlvbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwotICAgIFB5T2JqZWN0ICpmaXJzdF9jb25zdCA9IFB5X05vbmU7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqZmlyc3RfY29uc3QgPSBQeV9Ob25lOwogICAgIGFyZ3VtZW50c190eSBhcmdzID0gcy0+di5GdW5jdGlvbkRlZi5hcmdzOwogICAgIGV4cHJfdHkgcmV0dXJucyA9IHMtPnYuRnVuY3Rpb25EZWYucmV0dXJuczsKICAgICBhc2RsX3NlcSogZGVjb3MgPSBzLT52LkZ1bmN0aW9uRGVmLmRlY29yYXRvcl9saXN0OwpAQCAtMTQ4Myw3ICsxNTc0LDggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYXNzZXJ0KChudW1fYW5ub3RhdGlvbnMgJiAweEZGRkYpID09IG51bV9hbm5vdGF0aW9ucyk7CiAKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuRnVuY3Rpb25EZWYubmFtZSwgKHZvaWQgKilzLAorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgcy0+di5GdW5jdGlvbkRlZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sICh2b2lkICopcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xNTA1LDE0ICsxNTk3LDE5IEBACiAgICAgICAgIFZJU0lUX0lOX1NDT1BFKGMsIHN0bXQsIHN0KTsKICAgICB9CiAgICAgY28gPSBhc3NlbWJsZShjLCAxKTsKKyAgICBxdWFsbmFtZSA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOwogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7Ci0gICAgaWYgKGNvID09IE5VTEwpCisgICAgaWYgKHF1YWxuYW1lID09IE5VTEwgfHwgY28gPT0gTlVMTCkgeworICAgICAgICBQeV9YREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgUHlfWERFQ1JFRihjbyk7CiAgICAgICAgIHJldHVybiAwOworICAgIH0KIAogICAgIGFyZ2xlbmd0aCA9IGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cyk7CiAgICAgYXJnbGVuZ3RoIHw9IGt3X2RlZmF1bHRfY291bnQgPDwgODsKICAgICBhcmdsZW5ndGggfD0gbnVtX2Fubm90YXRpb25zIDw8IDE2OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoKTsKKyAgICBjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIGFyZ2xlbmd0aCwgcXVhbG5hbWUpOworICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CiAgICAgUHlfREVDUkVGKGNvKTsKIAogICAgIC8qIGRlY29yYXRvcnMgKi8KQEAgLTE1NDcsNyArMTY0NCw4IEBACiAgICAgKi8KIAogICAgIC8qIDEuIGNvbXBpbGUgdGhlIGNsYXNzIGJvZHkgaW50byBhIGNvZGUgb2JqZWN0ICovCi0gICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBzLT52LkNsYXNzRGVmLm5hbWUsICh2b2lkICopcywgcy0+bGluZW5vKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIHMtPnYuQ2xhc3NEZWYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTVBJTEVSX1NDT1BFX0NMQVNTLCAodm9pZCAqKXMsIHMtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIHRoaXMgYmxvY2sgcmVwcmVzZW50cyB3aGF0IHdlIGRvIGluIHRoZSBuZXcgc2NvcGUgKi8KICAgICB7CkBAIC0xNTc3LDYgKzE2NzUsMjEgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICAvKiBzdG9yZSB0aGUgX19xdWFsbmFtZV9fICovCisgICAgICAgIHN0ciA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOworICAgICAgICBpZiAoIXN0cikgeworICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgc3RyLCBjb25zdHMpOworICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fcXVhbG5hbWVfXyIpOworICAgICAgICBpZiAoIXN0ciB8fCAhY29tcGlsZXJfbmFtZW9wKGMsIHN0ciwgU3RvcmUpKSB7CisgICAgICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgUHlfREVDUkVGKHN0cik7CiAgICAgICAgIC8qIGNvbXBpbGUgdGhlIGJvZHkgcHJvcGVyICovCiAgICAgICAgIGlmICghY29tcGlsZXJfYm9keShjLCBzLT52LkNsYXNzRGVmLmJvZHkpKSB7CiAgICAgICAgICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwpAQCAtMTYxMyw3ICsxNzI2LDcgQEAKICAgICBBRERPUChjLCBMT0FEX0JVSUxEX0NMQVNTKTsKIAogICAgIC8qIDMuIGxvYWQgYSBmdW5jdGlvbiAob3IgY2xvc3VyZSkgbWFkZSBmcm9tIHRoZSBjb2RlIG9iamVjdCAqLwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCAwLCBOVUxMKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgLyogNC4gbG9hZCBjbGFzcyBuYW1lICovCkBAIC0xNjY0LDYgKzE3NzcsNyBAQAogY29tcGlsZXJfbGFtYmRhKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewogICAgIFB5Q29kZU9iamVjdCAqY287CisgICAgUHlPYmplY3QgKnF1YWxuYW1lOwogICAgIHN0YXRpYyBpZGVudGlmaWVyIG5hbWU7CiAgICAgaW50IGt3X2RlZmF1bHRfY291bnQgPSAwLCBhcmdsZW5ndGg7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBlLT52LkxhbWJkYS5hcmdzOwpAQCAtMTY4Myw3ICsxNzk3LDggQEAKICAgICB9CiAgICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQogICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgKHZvaWQgKillLCBlLT5saW5lbm8pKQorICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfRlVOQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogTWFrZSBOb25lIHRoZSBmaXJzdCBjb25zdGFudCwgc28gdGhlIGxhbWJkYSBjYW4ndCBoYXZlIGEKQEAgLTE3MDEsMTMgKzE4MTYsMTUgQEAKICAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKICAgICB9CiAgICAgY28gPSBhc3NlbWJsZShjLCAxKTsKKyAgICBxdWFsbmFtZSA9IGNvbXBpbGVyX3Njb3BlX3F1YWxuYW1lKGMpOwogICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7Ci0gICAgaWYgKGNvID09IE5VTEwpCisgICAgaWYgKHF1YWxuYW1lID09IE5VTEwgfHwgY28gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBhcmdsZW5ndGggPSBhc2RsX3NlcV9MRU4oYXJncy0+ZGVmYXVsdHMpOwogICAgIGFyZ2xlbmd0aCB8PSBrd19kZWZhdWx0X2NvdW50IDw8IDg7Ci0gICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBhcmdsZW5ndGgpOworICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYoY28pOwogCiAgICAgcmV0dXJuIDE7CkBAIC0xOTE2LDcgKzIwMzMsMTMgQEAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBib2R5KTsKICAgICBpZiAoIWNvbXBpbGVyX3B1c2hfZmJsb2NrKGMsIEZJTkFMTFlfVFJZLCBib2R5KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RmluYWxseS5ib2R5KTsKKyAgICBpZiAocy0+di5UcnkuaGFuZGxlcnMgJiYgYXNkbF9zZXFfTEVOKHMtPnYuVHJ5LmhhbmRsZXJzKSkgeworICAgICAgICBpZiAoIWNvbXBpbGVyX3RyeV9leGNlcHQoYywgcykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeS5ib2R5KTsKKyAgICB9CiAgICAgQURET1AoYywgUE9QX0JMT0NLKTsKICAgICBjb21waWxlcl9wb3BfZmJsb2NrKGMsIEZJTkFMTFlfVFJZLCBib2R5KTsKIApAQCAtMTkyNCw3ICsyMDQ3LDcgQEAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBlbmQpOwogICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRklOQUxMWV9FTkQsIGVuZCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeUZpbmFsbHkuZmluYWxib2R5KTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnkuZmluYWxib2R5KTsKICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CiAgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBGSU5BTExZX0VORCwgZW5kKTsKIApAQCAtMTk3OCwxNSArMjEwMSwxNSBAQAogICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGJvZHkpOwogICAgIGlmICghY29tcGlsZXJfcHVzaF9mYmxvY2soYywgRVhDRVBULCBib2R5KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuVHJ5RXhjZXB0LmJvZHkpOworICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LlRyeS5ib2R5KTsKICAgICBBRERPUChjLCBQT1BfQkxPQ0spOwogICAgIGNvbXBpbGVyX3BvcF9mYmxvY2soYywgRVhDRVBULCBib2R5KTsKICAgICBBRERPUF9KUkVMKGMsIEpVTVBfRk9SV0FSRCwgb3JlbHNlKTsKLSAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzKTsKKyAgICBuID0gYXNkbF9zZXFfTEVOKHMtPnYuVHJ5LmhhbmRsZXJzKTsKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOwogICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgZXhjZXB0aGFuZGxlcl90eSBoYW5kbGVyID0gKGV4Y2VwdGhhbmRsZXJfdHkpYXNkbF9zZXFfR0VUKAotICAgICAgICAgICAgcy0+di5UcnlFeGNlcHQuaGFuZGxlcnMsIGkpOworICAgICAgICAgICAgcy0+di5UcnkuaGFuZGxlcnMsIGkpOwogICAgICAgICBpZiAoIWhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci50eXBlICYmIGkgPCBuLTEpCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgImRlZmF1bHQgJ2V4Y2VwdDonIG11c3QgYmUgbGFzdCIpOwogICAgICAgICBjLT51LT51X2xpbmVub19zZXQgPSAwOwpAQCAtMjA3MywxMiArMjE5NiwyMSBAQAogICAgIH0KICAgICBBRERPUChjLCBFTkRfRklOQUxMWSk7CiAgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgb3JlbHNlKTsKLSAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5UcnlFeGNlcHQub3JlbHNlKTsKKyAgICBWSVNJVF9TRVEoYywgc3RtdCwgcy0+di5Ucnkub3JlbHNlKTsKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBlbmQpOwogICAgIHJldHVybiAxOwogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl90cnkoc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMpIHsKKyAgICBpZiAocy0+di5UcnkuZmluYWxib2R5ICYmIGFzZGxfc2VxX0xFTihzLT52LlRyeS5maW5hbGJvZHkpKQorICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2ZpbmFsbHkoYywgcyk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5X2V4Y2VwdChjLCBzKTsKK30KKworCitzdGF0aWMgaW50CiBjb21waWxlcl9pbXBvcnRfYXMoc3RydWN0IGNvbXBpbGVyICpjLCBpZGVudGlmaWVyIG5hbWUsIGlkZW50aWZpZXIgYXNuYW1lKQogewogICAgIC8qIFRoZSBJTVBPUlRfTkFNRSBvcGNvZGUgd2FzIGFscmVhZHkgZ2VuZXJhdGVkLiAgVGhpcyBmdW5jdGlvbgpAQCAtMjA4NywyMiArMjIxOSwyNyBAQAogICAgICAgIElmIHRoZXJlIGlzIGEgZG90IGluIG5hbWUsIHdlIG5lZWQgdG8gc3BsaXQgaXQgYW5kIGVtaXQgYQogICAgICAgIExPQURfQVRUUiBmb3IgZWFjaCBuYW1lLgogICAgICovCi0gICAgY29uc3QgUHlfVU5JQ09ERSAqc3JjID0gUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSk7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqZG90ID0gUHlfVU5JQ09ERV9zdHJjaHIoc3JjLCAnLicpOwotICAgIGlmIChkb3QpIHsKKyAgICBQeV9zc2l6ZV90IGRvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihuYW1lLCAnLicsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSksIDEpOworICAgIGlmIChkb3QgPT0gLTIpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZG90ICE9IC0xKSB7CiAgICAgICAgIC8qIENvbnN1bWUgdGhlIGJhc2UgbW9kdWxlIG5hbWUgdG8gZ2V0IHRoZSBmaXJzdCBhdHRyaWJ1dGUgKi8KLSAgICAgICAgc3JjID0gZG90ICsgMTsKLSAgICAgICAgd2hpbGUgKGRvdCkgewotICAgICAgICAgICAgLyogTkIgc3JjIGlzIG9ubHkgZGVmaW5lZCB3aGVuIGRvdCAhPSBOVUxMICovCisgICAgICAgIFB5X3NzaXplX3QgcG9zID0gZG90ICsgMTsKKyAgICAgICAgd2hpbGUgKGRvdCAhPSAtMSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmF0dHI7Ci0gICAgICAgICAgICBkb3QgPSBQeV9VTklDT0RFX3N0cmNocihzcmMsICcuJyk7Ci0gICAgICAgICAgICBhdHRyID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90ID8gZG90IC0gc3JjIDogUHlfVU5JQ09ERV9zdHJsZW4oc3JjKSk7CisgICAgICAgICAgICBkb3QgPSBQeVVuaWNvZGVfRmluZENoYXIobmFtZSwgJy4nLCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgobmFtZSksIDEpOworICAgICAgICAgICAgaWYgKGRvdCA9PSAtMikKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBhdHRyID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG90ICE9IC0xKSA/IGRvdCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSk7CiAgICAgICAgICAgICBpZiAoIWF0dHIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0FUVFIsIGF0dHIsIG5hbWVzKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKLSAgICAgICAgICAgIHNyYyA9IGRvdCArIDE7CisgICAgICAgICAgICBwb3MgPSBkb3QgKyAxOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBjb21waWxlcl9uYW1lb3AoYywgYXNuYW1lLCBTdG9yZSk7CkBAIC0yMTQxLDEzICsyMjc4LDEyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZGVudGlmaWVyIHRtcCA9IGFsaWFzLT5uYW1lOwotICAgICAgICAgICAgY29uc3QgUHlfVU5JQ09ERSAqYmFzZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFsaWFzLT5uYW1lKTsKLSAgICAgICAgICAgIFB5X1VOSUNPREUgKmRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKGJhc2UsICcuJyk7Ci0gICAgICAgICAgICBpZiAoZG90KQotICAgICAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShiYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QgLSBiYXNlKTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKAorICAgICAgICAgICAgICAgIGFsaWFzLT5uYW1lLCAnLicsIDAsIFB5VW5pY29kZV9HRVRfTEVOR1RIKGFsaWFzLT5uYW1lKSwgMSk7CisgICAgICAgICAgICBpZiAoZG90ICE9IC0xKQorICAgICAgICAgICAgICAgIHRtcCA9IFB5VW5pY29kZV9TdWJzdHJpbmcoYWxpYXMtPm5hbWUsIDAsIGRvdCk7CiAgICAgICAgICAgICByID0gY29tcGlsZXJfbmFtZW9wKGMsIHRtcCwgU3RvcmUpOwotICAgICAgICAgICAgaWYgKGRvdCkgeworICAgICAgICAgICAgaWYgKGRvdCAhPSAtMSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFyKQpAQCAtMjIxMCw3ICsyMzQ2LDcgQEAKICAgICAgICAgYWxpYXNfdHkgYWxpYXMgPSAoYWxpYXNfdHkpYXNkbF9zZXFfR0VUKHMtPnYuSW1wb3J0RnJvbS5uYW1lcywgaSk7CiAgICAgICAgIGlkZW50aWZpZXIgc3RvcmVfbmFtZTsKIAotICAgICAgICBpZiAoaSA9PSAwICYmICpQeVVuaWNvZGVfQVNfVU5JQ09ERShhbGlhcy0+bmFtZSkgPT0gJyonKSB7CisgICAgICAgIGlmIChpID09IDAgJiYgUHlVbmljb2RlX1JFQURfQ0hBUihhbGlhcy0+bmFtZSwgMCkgPT0gJyonKSB7CiAgICAgICAgICAgICBhc3NlcnQobiA9PSAxKTsKICAgICAgICAgICAgIEFERE9QKGMsIElNUE9SVF9TVEFSKTsKICAgICAgICAgICAgIHJldHVybiAxOwpAQCAtMjMyNSwxMCArMjQ2MSw4IEBACiAgICAgICAgIH0KICAgICAgICAgQURET1BfSShjLCBSQUlTRV9WQVJBUkdTLCBuKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUcnlFeGNlcHRfa2luZDoKLSAgICAgICAgcmV0dXJuIGNvbXBpbGVyX3RyeV9leGNlcHQoYywgcyk7Ci0gICAgY2FzZSBUcnlGaW5hbGx5X2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl90cnlfZmluYWxseShjLCBzKTsKKyAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfdHJ5KGMsIHMpOwogICAgIGNhc2UgQXNzZXJ0X2tpbmQ6CiAgICAgICAgIHJldHVybiBjb21waWxlcl9hc3NlcnQoYywgcyk7CiAgICAgY2FzZSBJbXBvcnRfa2luZDoKQEAgLTIzNTksNyArMjQ5Myw3IEBACiAgICAgY2FzZSBDb250aW51ZV9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfY29udGludWUoYyk7CiAgICAgY2FzZSBXaXRoX2tpbmQ6Ci0gICAgICAgIHJldHVybiBjb21waWxlcl93aXRoKGMsIHMpOworICAgICAgICByZXR1cm4gY29tcGlsZXJfd2l0aChjLCBzLCAwKTsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0yNTI2LDcgKzI2NjAsNyBAQAogICAgIH0KIAogICAgIC8qIFhYWCBMZWF2ZSBhc3NlcnQgaGVyZSwgYnV0IGhhbmRsZSBfX2RvY19fIGFuZCB0aGUgbGlrZSBiZXR0ZXIgKi8KLSAgICBhc3NlcnQoc2NvcGUgfHwgUHlVbmljb2RlX0FTX1VOSUNPREUobmFtZSlbMF0gPT0gJ18nKTsKKyAgICBhc3NlcnQoc2NvcGUgfHwgUHlVbmljb2RlX1JFQURfQ0hBUihuYW1lLCAwKSA9PSAnXycpOwogCiAgICAgc3dpdGNoIChvcHR5cGUpIHsKICAgICBjYXNlIE9QX0RFUkVGOgpAQCAtMjkwNCwxMSArMzAzOCwxMyBAQAogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwogICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gTlVMTDsKIAogICAgIG91dGVybW9zdF9pdGVyID0gKChjb21wcmVoZW5zaW9uX3R5KQogICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCAwKSktPml0ZXI7CiAKLSAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsICh2b2lkICopZSwgZS0+bGluZW5vKSkKKyAgICBpZiAoIWNvbXBpbGVyX2VudGVyX3Njb3BlKGMsIG5hbWUsIENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWUsIGUtPmxpbmVubykpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAodHlwZSAhPSBDT01QX0dFTkVYUCkgewpAQCAtMjk0MSwxMiArMzA3NywxNCBAQAogICAgIH0KIAogICAgIGNvID0gYXNzZW1ibGUoYywgMSk7CisgICAgcXVhbG5hbWUgPSBjb21waWxlcl9zY29wZV9xdWFsbmFtZShjKTsKICAgICBjb21waWxlcl9leGl0X3Njb3BlKGMpOwotICAgIGlmIChjbyA9PSBOVUxMKQorICAgIGlmIChxdWFsbmFtZSA9PSBOVUxMIHx8IGNvID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKLSAgICBpZiAoIWNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgMCkpCisgICAgaWYgKCFjb21waWxlcl9tYWtlX2Nsb3N1cmUoYywgY28sIDAsIHF1YWxuYW1lKSkKICAgICAgICAgZ290byBlcnJvcjsKKyAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKICAgICBWSVNJVChjLCBleHByLCBvdXRlcm1vc3RfaXRlcik7CkBAIC0yOTU2LDYgKzMwOTQsNyBAQAogZXJyb3JfaW5fc2NvcGU6CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKIGVycm9yOgorICAgIFB5X1hERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X1hERUNSRUYoY28pOwogICAgIHJldHVybiAwOwogfQpAQCAtMzA0OSw4ICszMTg4LDcgQEAKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52LlN0ci5zKTsKICAgICBjYXNlIE5hbWVfa2luZDoKICAgICAgICAgLyogb3B0aW1pemUgYXdheSBuYW1lcyB0aGF0IGNhbid0IGJlIHJlYXNzaWduZWQgKi8KLSAgICAgICAgaWQgPSBQeUJ5dGVzX0FTX1NUUklORygKLSAgICAgICAgICAgIF9QeVVuaWNvZGVfQXNEZWZhdWx0RW5jb2RlZFN0cmluZyhlLT52Lk5hbWUuaWQsIE5VTEwpKTsKKyAgICAgICAgaWQgPSBQeVVuaWNvZGVfQXNVVEY4KGUtPnYuTmFtZS5pZCk7CiAgICAgICAgIGlmIChzdHJjbXAoaWQsICJUcnVlIikgPT0gMCkgcmV0dXJuIDE7CiAgICAgICAgIGlmIChzdHJjbXAoaWQsICJGYWxzZSIpID09IDApIHJldHVybiAwOwogICAgICAgICBpZiAoc3RyY21wKGlkLCAiTm9uZSIpID09IDApIHJldHVybiAwOwpAQCAtMzA4Niw5ICszMjI0LDEwIEBACiAgICAgICAgZXhpdCgqZXhjKQogICovCiBzdGF0aWMgaW50Ci1jb21waWxlcl93aXRoKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQorY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcywgaW50IHBvcykKIHsKICAgICBiYXNpY2Jsb2NrICpibG9jaywgKmZpbmFsbHk7CisgICAgd2l0aGl0ZW1fdHkgaXRlbSA9IGFzZGxfc2VxX0dFVChzLT52LldpdGguaXRlbXMsIHBvcyk7CiAKICAgICBhc3NlcnQocy0+a2luZCA9PSBXaXRoX2tpbmQpOwogCkBAIC0zMDk4LDcgKzMyMzcsNyBAQAogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8qIEV2YWx1YXRlIEVYUFIgKi8KLSAgICBWSVNJVChjLCBleHByLCBzLT52LldpdGguY29udGV4dF9leHByKTsKKyAgICBWSVNJVChjLCBleHByLCBpdGVtLT5jb250ZXh0X2V4cHIpOwogICAgIEFERE9QX0pSRUwoYywgU0VUVVBfV0lUSCwgZmluYWxseSk7CiAKICAgICAvKiBTRVRVUF9XSVRIIHB1c2hlcyBhIGZpbmFsbHkgYmxvY2suICovCkBAIC0zMTA3LDE2ICszMjQ2LDIwIEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGlmIChzLT52LldpdGgub3B0aW9uYWxfdmFycykgewotICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LldpdGgub3B0aW9uYWxfdmFycyk7CisgICAgaWYgKGl0ZW0tPm9wdGlvbmFsX3ZhcnMpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgaXRlbS0+b3B0aW9uYWxfdmFycyk7CiAgICAgfQogICAgIGVsc2UgewogICAgIC8qIERpc2NhcmQgcmVzdWx0IGZyb20gY29udGV4dC5fX2VudGVyX18oKSAqLwogICAgICAgICBBRERPUChjLCBQT1BfVE9QKTsKICAgICB9CiAKLSAgICAvKiBCTE9DSyBjb2RlICovCi0gICAgVklTSVRfU0VRKGMsIHN0bXQsIHMtPnYuV2l0aC5ib2R5KTsKKyAgICBwb3MrKzsKKyAgICBpZiAocG9zID09IGFzZGxfc2VxX0xFTihzLT52LldpdGguaXRlbXMpKQorICAgICAgICAvKiBCTE9DSyBjb2RlICovCisgICAgICAgIFZJU0lUX1NFUShjLCBzdG10LCBzLT52LldpdGguYm9keSkKKyAgICBlbHNlIGlmICghY29tcGlsZXJfd2l0aChjLCBzLCBwb3MpKQorICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvKiBFbmQgb2YgdHJ5IGJsb2NrOyBzdGFydCB0aGUgZmluYWxseSBibG9jayAqLwogICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CkBAIC0zMTkzLDE2ICszMzM2LDI3IEBACiAgICAgY2FzZSBEaWN0Q29tcF9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfZGljdGNvbXAoYywgZSk7CiAgICAgY2FzZSBZaWVsZF9raW5kOgorICAgIGNhc2UgWWllbGRGcm9tX2tpbmQ6IHsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKLSAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpIHsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOworICAgICAgICB2YWx1ZSA9IChlLT5raW5kID09IFlpZWxkRnJvbV9raW5kKSA/IGUtPnYuWWllbGRGcm9tLnZhbHVlIDogZS0+di5ZaWVsZC52YWx1ZTsKKyAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CiAgICAgICAgIH0KLSAgICAgICAgQURET1AoYywgWUlFTERfVkFMVUUpOworICAgICAgICBpZiAoZS0+a2luZCA9PSBZaWVsZEZyb21fa2luZCkgeworICAgICAgICAgICAgQURET1AoYywgR0VUX0lURVIpOworICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBQeV9Ob25lLCBjb25zdHMpOworICAgICAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBRERPUChjLCBZSUVMRF9WQUxVRSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgQ29tcGFyZV9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfY29tcGFyZShjLCBlKTsKICAgICBjYXNlIENhbGxfa2luZDoKQEAgLTMzODUsNyArMzUzOSw3IEBACiBzdGF0aWMgaW50CiBjb21waWxlcl9lcnJvcihzdHJ1Y3QgY29tcGlsZXIgKmMsIGNvbnN0IGNoYXIgKmVycnN0cikKIHsKLSAgICBQeU9iamVjdCAqbG9jLCAqZmlsZW5hbWU7CisgICAgUHlPYmplY3QgKmxvYzsKICAgICBQeU9iamVjdCAqdSA9IE5VTEwsICp2ID0gTlVMTDsKIAogICAgIGxvYyA9IFB5RXJyX1Byb2dyYW1UZXh0KGMtPmNfZmlsZW5hbWUsIGMtPnUtPnVfbGluZW5vKTsKQEAgLTMzOTMsMTYgKzM1NDcsNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIGxvYyA9IFB5X05vbmU7CiAgICAgfQotICAgIGlmIChjLT5jX2ZpbGVuYW1lICE9IE5VTEwpIHsKLSAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGMtPmNfZmlsZW5hbWUpOwotICAgICAgICBpZiAoIWZpbGVuYW1lKQotICAgICAgICAgICAgZ290byBleGl0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICBmaWxlbmFtZSA9IFB5X05vbmU7Ci0gICAgfQotICAgIHUgPSBQeV9CdWlsZFZhbHVlKCIoTmlpTykiLCBmaWxlbmFtZSwgYy0+dS0+dV9saW5lbm8sCisgICAgdSA9IFB5X0J1aWxkVmFsdWUoIihPaWlPKSIsIGMtPmNfZmlsZW5hbWVfb2JqLCBjLT51LT51X2xpbmVubywKICAgICAgICAgICAgICAgICAgICAgICBjLT51LT51X2NvbF9vZmZzZXQsIGxvYyk7CiAgICAgaWYgKCF1KQogICAgICAgICBnb3RvIGV4aXQ7CkBAIC0zOTUxLDcgKzQwOTYsNiBAQAogICAgIFB5T2JqZWN0ICpjb25zdHMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lcyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnZhcm5hbWVzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqZmlsZW5hbWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTDsKICAgICBQeU9iamVjdCAqZnJlZXZhcnMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjZWxsdmFycyA9IE5VTEw7CkBAIC0zOTc1LDEwICs0MTE5LDYgQEAKICAgICBmcmVldmFycyA9IGRpY3Rfa2V5c19pbm9yZGVyKGMtPnUtPnVfZnJlZXZhcnMsIFB5VHVwbGVfU2l6ZShjZWxsdmFycykpOwogICAgIGlmICghZnJlZXZhcnMpCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGMtPmNfZmlsZW5hbWUpOwotICAgIGlmICghZmlsZW5hbWUpCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0KICAgICBubG9jYWxzID0gUHlEaWN0X1NpemUoYy0+dS0+dV92YXJuYW1lcyk7CiAgICAgZmxhZ3MgPSBjb21wdXRlX2NvZGVfZmxhZ3MoYyk7CiAgICAgaWYgKGZsYWdzIDwgMCkKQEAgLTM5OTgsMTQgKzQxMzgsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgbmxvY2Fscywgc3RhY2tkZXB0aChjKSwgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlLCBjb25zdHMsIG5hbWVzLCB2YXJuYW1lcywKICAgICAgICAgICAgICAgICAgICAgZnJlZXZhcnMsIGNlbGx2YXJzLAotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgYy0+dS0+dV9uYW1lLAorICAgICAgICAgICAgICAgICAgICBjLT5jX2ZpbGVuYW1lX29iaiwgYy0+dS0+dV9uYW1lLAogICAgICAgICAgICAgICAgICAgICBjLT51LT51X2ZpcnN0bGluZW5vLAogICAgICAgICAgICAgICAgICAgICBhLT5hX2xub3RhYik7CiAgZXJyb3I6CiAgICAgUHlfWERFQ1JFRihjb25zdHMpOwogICAgIFB5X1hERUNSRUYobmFtZXMpOwogICAgIFB5X1hERUNSRUYodmFybmFtZXMpOwotICAgIFB5X1hERUNSRUYoZmlsZW5hbWUpOwogICAgIFB5X1hERUNSRUYobmFtZSk7CiAgICAgUHlfWERFQ1JFRihmcmVldmFycyk7CiAgICAgUHlfWERFQ1JFRihjZWxsdmFycyk7CmRpZmYgLS1naXQgYS9QeXRob24vY29uZHZhci5oIGIvUHl0aG9uL2NvbmR2YXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTZiZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2NvbmR2YXIuaApAQCAtMCwwICsxLDM5MCBAQAorLyogCisgKiBQb3J0YWJsZSBjb25kaXRpb24gdmFyaWFibGUgc3VwcG9ydCBmb3Igd2luZG93cyBhbmQgcHRocmVhZHMuCisgKiBFdmVyeXRoaW5nIGlzIGlubGluZSwgdGhpcyBoZWFkZXIgY2FuIGJlIGluY2x1ZGVkIHdoZXJlIG5lZWRlZC4KKyAqCisgKiBBUElzIGdlbmVyYWxseSByZXR1cm4gMCBvbiBzdWNjZXNzIGFuZCBub24temVybyBvbiBlcnJvciwKKyAqIGFuZCB0aGUgY2FsbGVyIG5lZWRzIHRvIHVzZSBpdHMgcGxhdGZvcm0ncyBlcnJvciBtZWNoYW5pc20gdG8KKyAqIGRpc2NvdmVyIHRoZSBlcnJvciAoZXJybm8sIG9yIEdldExhc3RFcnJvcigpKQorICoKKyAqIE5vdGUgdGhhdCBzb21lIGltcGxlbWVudGF0aW9ucyBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhCisgKiBjb25kaXRpb24gdmFyaWFibGUgd2FpdCB0aW1lLW91dCBhbmQgc3VjY2Vzc2Z1bCB3YWl0LiBNb3N0IG9mdGVuCisgKiB0aGUgZGlmZmVyZW5jZSBpcyBtb290IGFueXdheSBzaW5jZSB0aGUgd2FpdCBjb25kaXRpb24gbXVzdCBiZQorICogcmUtY2hlY2tlZC4KKyAqIFB5Q09ORF9USU1FRFdBSVQsIGluIGFkZGl0aW9uIHRvIHJldHVybmluZyBuZWdhdGl2ZSBvbiBlcnJvciwKKyAqIHRodXMgcmV0dXJucyAwIG9uIHJlZ3VsYXIgc3VjY2VzcywgMSBvbiB0aW1lb3V0CisgKiBvciAyIGlmIGl0IGNhbid0IHRlbGwuCisgKgorICogVGhlcmUgYXJlIGF0IGxlYXN0IHR3byBjYXZlYXRzIHdpdGggdXNpbmcgdGhlc2UgY29uZGl0aW9uIHZhcmlhYmxlcywKKyAqIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZXkgbWF5IGJlIGVtdWxhdGVkIHdpdGggU2VtYXBob3JlcyBvbgorICogV2luZG93czoKKyAqIDEpIFdoaWxlIFB5Q09ORF9TSUdOQUwoKSB3aWxsIHdha2UgdXAgYXQgbGVhc3Qgb25lIHRocmVhZCwgd2UKKyAqICAgIGNhbm5vdCBjdXJyZW50bHkgZ3VhcmFudGVlIHRoYXQgaXQgd2lsbCBiZSBvbmUgb2YgdGhlIHRocmVhZHMKKyAqICAgIGFscmVhZHkgd2FpdGluZyBpbiBhIFB5Q09ORF9XQUlUKCkgY2FsbC4gIEl0IF9jb3VsZF8gY2F1c2UKKyAqICAgIHRoZSB3YWtldXAgb2YgYSBzdWJzZXF1ZW50IHRocmVhZCB0byB0cnkgYSBQeUNPTkRfV0FJVCgpLAorICogICAgaW5jbHVkaW5nIHRoZSB0aHJlYWQgZG9pbmcgdGhlIFB5Q09ORF9TSUdOQUwoKSBpdHNlbGYuCisgKiAgICBUaGUgc2FtZSBhcHBsaWVzIHRvIFB5Q09ORF9CUk9BRENBU1QoKSwgaWYgTiB0aHJlYWRzIGFyZSB3YWl0aW5nCisgKiAgICB0aGVuIGF0IGxlYXN0IE4gdGhyZWFkcyB3aWxsIGJlIHdva2VuIHVwLCBidXQgbm90IG5lY2Vzc2FyaWx5CisgKiAgICB0aG9zZSBhbHJlYWR5IHdhaXRpbmcuCisgKiAgICBGb3IgdGhpcyByZWFzb24sIGRvbid0IG1ha2UgdGhlIHNjaGVkdWxpbmcgYXNzdW1wdGlvbiB0aGF0IGEKKyAqICAgIHNwZWNpZmljIG90aGVyIHRocmVhZCB3aWxsIGdldCB0aGUgd2FrZXVwIHNpZ25hbAorICogMikgVGhlIF9tdXRleF8gbXVzdCBiZSBoZWxkIHdoZW4gY2FsbGluZyBQeUNPTkRfU0lHTkFMKCkgYW5kCisgKiAgICBQeUNPTkRfQlJPQURDQVNUKCkuCisgKiAgICBXaGlsZSBlLmcuIHRoZSBwb3NpeCBzdGFuZGFyZCBzdHJvbmdseSByZWNvbW1lbmRzIHRoYXQgdGhlIG11dGV4CisgKiAgICBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbmRpdGlvbiB2YXJpYWJsZSBpcyBoZWxkIHdoZW4gYQorICogICAgcHRocmVhZF9jb25kX3NpZ25hbCgpIGNhbGwgaXMgbWFkZSwgdGhpcyBpcyBub3QgYSBoYXJkIHJlcXVpcmVtZW50LAorICogICAgYWx0aG91Z2ggc2NoZWR1bGluZyB3aWxsIG5vdCBiZSAicmVsaWFibGUiIGlmIGl0IGlzbid0LiAgSGVyZQorICogICAgdGhlIG11dGV4IGlzIHVzZWQgZm9yIGludGVybmFsIHN5bmNocm9uaXphdGlvbiBvZiB0aGUgZW11bGF0ZWQKKyAqICAgIENvbmRpdGlvbiBWYXJpYWJsZS4KKyAqLworCisjaWZuZGVmIF9DT05EVkFSX0hfCisjZGVmaW5lIF9DT05EVkFSX0hfCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmbmRlZiBfUE9TSVhfVEhSRUFEUworLyogVGhpcyBtZWFucyBwdGhyZWFkcyBhcmUgbm90IGltcGxlbWVudGVkIGluIGxpYmMgaGVhZGVycywgaGVuY2UgdGhlIG1hY3JvCisgICBub3QgcHJlc2VudCBpbiB1bmlzdGQuaC4gQnV0IHRoZXkgc3RpbGwgY2FuIGJlIGltcGxlbWVudGVkIGFzIGFuIGV4dGVybmFsCisgICBsaWJyYXJ5IChlLmcuIGdudSBwdGggaW4gcHRocmVhZCBlbXVsYXRpb24pICovCisjIGlmZGVmIEhBVkVfUFRIUkVBRF9ICisjICBpbmNsdWRlIDxwdGhyZWFkLmg+IC8qIF9QT1NJWF9USFJFQURTICovCisjIGVuZGlmCisjZW5kaWYKKworI2lmZGVmIF9QT1NJWF9USFJFQURTCisvKgorICogUE9TSVggc3VwcG9ydAorICovCisjZGVmaW5lIFB5X0hBVkVfQ09ORFZBUgorCisjaW5jbHVkZSA8cHRocmVhZC5oPgorCisjZGVmaW5lIFB5Q09ORF9BRERfTUlDUk9TRUNPTkRTKHR2LCBpbnRlcnZhbCkgXAorZG8geyBcCisgICAgdHYudHZfdXNlYyArPSAobG9uZykgaW50ZXJ2YWw7IFwKKyAgICB0di50dl9zZWMgKz0gdHYudHZfdXNlYyAvIDEwMDAwMDA7IFwKKyAgICB0di50dl91c2VjICU9IDEwMDAwMDA7IFwKK30gd2hpbGUgKDApCisKKy8qIFdlIGFzc3VtZSBhbGwgbW9kZXJuIFBPU0lYIHN5c3RlbXMgaGF2ZSBnZXR0aW1lb2ZkYXkoKSAqLworI2lmZGVmIEdFVFRJTUVPRkRBWV9OT19UWgorI2RlZmluZSBQeUNPTkRfR0VUVElNRU9GREFZKHB0dikgZ2V0dGltZW9mZGF5KHB0dikKKyNlbHNlCisjZGVmaW5lIFB5Q09ORF9HRVRUSU1FT0ZEQVkocHR2KSBnZXR0aW1lb2ZkYXkocHR2LCAoc3RydWN0IHRpbWV6b25lICopTlVMTCkKKyNlbmRpZgorCisvKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyByZXR1cm4gMCBvbiBzdWNjZXNzLCBub256ZXJvIG9uIGVycm9yICovCisjZGVmaW5lIFB5TVVURVhfVCBwdGhyZWFkX211dGV4X3QKKyNkZWZpbmUgUHlNVVRFWF9JTklUKG11dCkgICAgICAgcHRocmVhZF9tdXRleF9pbml0KChtdXQpLCBOVUxMKQorI2RlZmluZSBQeU1VVEVYX0ZJTkkobXV0KSAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3kobXV0KQorI2RlZmluZSBQeU1VVEVYX0xPQ0sobXV0KSAgICAgICBwdGhyZWFkX211dGV4X2xvY2sobXV0KQorI2RlZmluZSBQeU1VVEVYX1VOTE9DSyhtdXQpICAgICBwdGhyZWFkX211dGV4X3VubG9jayhtdXQpCisKKyNkZWZpbmUgUHlDT05EX1QgcHRocmVhZF9jb25kX3QKKyNkZWZpbmUgUHlDT05EX0lOSVQoY29uZCkgICAgICAgcHRocmVhZF9jb25kX2luaXQoKGNvbmQpLCBOVUxMKQorI2RlZmluZSBQeUNPTkRfRklOSShjb25kKSAgICAgICBwdGhyZWFkX2NvbmRfZGVzdHJveShjb25kKQorI2RlZmluZSBQeUNPTkRfU0lHTkFMKGNvbmQpICAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKGNvbmQpCisjZGVmaW5lIFB5Q09ORF9CUk9BRENBU1QoY29uZCkgIHB0aHJlYWRfY29uZF9icm9hZGNhc3QoY29uZCkKKyNkZWZpbmUgUHlDT05EX1dBSVQoY29uZCwgbXV0KSAgcHRocmVhZF9jb25kX3dhaXQoKGNvbmQpLCAobXV0KSkKKworLyogcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIDEgb24gdGltZW91dCwgLTEgb24gZXJyb3IgKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjb25kLCBQeU1VVEVYX1QgKm11dCwgbG9uZyB1cykKK3sKKyAgICBpbnQgcjsKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisgICAgc3RydWN0IHRpbWV2YWwgZGVhZGxpbmU7CisKKyAgICBQeUNPTkRfR0VUVElNRU9GREFZKCZkZWFkbGluZSk7CisgICAgUHlDT05EX0FERF9NSUNST1NFQ09ORFMoZGVhZGxpbmUsIHVzKTsKKyAgICB0cy50dl9zZWMgPSBkZWFkbGluZS50dl9zZWM7CisgICAgdHMudHZfbnNlYyA9IGRlYWRsaW5lLnR2X3VzZWMgKiAxMDAwOworCisgICAgciA9IHB0aHJlYWRfY29uZF90aW1lZHdhaXQoKGNvbmQpLCAobXV0KSwgJnRzKTsKKyAgICBpZiAociA9PSBFVElNRURPVVQpCisgICAgICAgIHJldHVybiAxOworICAgIGVsc2UgaWYgKHIpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlIAorICAgICAgICByZXR1cm4gMDsKK30KKworI2VsaWYgZGVmaW5lZChOVF9USFJFQURTKQorLyoKKyAqIFdpbmRvd3MgKFhQLCAyMDAzIHNlcnZlciBhbmQgbGF0ZXIsIGFzIHdlbGwgYXMgKGhvcGVmdWxseSkgQ0UpIHN1cHBvcnQKKyAqCisgKiBFbXVsYXRlZCBjb25kaXRpb24gdmFyaWFibGVzIG9uZXMgdGhhdCB3b3JrIHdpdGggWFAgYW5kIGxhdGVyLCBwbHVzCisgKiBleGFtcGxlIG5hdGl2ZSBzdXBwb3J0IG9uIFZJU1RBIGFuZCBvbndhcmRzLgorICovCisjZGVmaW5lIFB5X0hBVkVfQ09ORFZBUgorCisKKy8qIGluY2x1ZGUgd2luZG93cyBpZiBpdCBoYXNuJ3QgYmVlbiBkb25lIGJlZm9yZSAqLworI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCisjaW5jbHVkZSA8d2luZG93cy5oPgorCisvKiBvcHRpb25zICovCisvKiBub24tZW11bGF0ZWQgY29uZGl0aW9uIHZhcmlhYmxlcyBhcmUgcHJvdmlkZWQgZm9yIHRob3NlIHRoYXQgd2FudAorICogdG8gdGFyZ2V0IFdpbmRvd3MgVmlzdGEuICBNb2RpZnkgdGhpcyBtYWNybyB0byBlbmFibGUgdGhlbS4KKyAqLworI2lmbmRlZiBfUFlfRU1VTEFURURfV0lOX0NWCisjZGVmaW5lIF9QWV9FTVVMQVRFRF9XSU5fQ1YgMSAgLyogdXNlIGVtdWxhdGVkIGNvbmRpdGlvbiB2YXJpYWJsZXMgKi8KKyNlbmRpZgorCisvKiBmYWxsIGJhY2sgdG8gZW11bGF0aW9uIGlmIG5vdCB0YXJnZXRpbmcgVmlzdGEgKi8KKyNpZiAhZGVmaW5lZCBOVERESV9WSVNUQSB8fCBOVERESV9WRVJTSU9OIDwgTlRERElfVklTVEEKKyN1bmRlZiBfUFlfRU1VTEFURURfV0lOX0NWCisjZGVmaW5lIF9QWV9FTVVMQVRFRF9XSU5fQ1YgMQorI2VuZGlmCisKKworI2lmIF9QWV9FTVVMQVRFRF9XSU5fQ1YKKworLyogVGhlIG11dGV4IGlzIGEgQ3JpdGljYWxTZWN0aW9uIG9iamVjdCBhbmQKKyAgIFRoZSBjb25kaXRpb24gdmFyaWFibGVzIGlzIGVtdWxhdGVkIHdpdGggdGhlIGhlbHAgb2YgYSBzZW1hcGhvcmUuCisgICBTZW1hcGhvcmVzIGFyZSBhdmFpbGFibGUgb24gV2luZG93cyBYUCAoMjAwMyBzZXJ2ZXIpIGFuZCBsYXRlci4KKyAgIFdlIHVzZSBhIFNlbWFwaG9yZSByYXRoZXIgdGhhbiBhbiBhdXRvLXJlc2V0IGV2ZW50LCBiZWNhdXNlIGFsdGhvdWdoCisgICBhbiBhdXRvLXJlc2VudCBldmVudCBtaWdodCBhcHBlYXIgdG8gc29sdmUgdGhlIGxvc3Qtd2FrZXVwIGJ1ZyAocmFjZQorICAgY29uZGl0aW9uIGJldHdlZW4gcmVsZWFzaW5nIHRoZSBvdXRlciBsb2NrIGFuZCB3YWl0aW5nKSBiZWNhdXNlIGl0CisgICBtYWludGFpbnMgc3RhdGUgZXZlbiB0aG91Z2ggYSB3YWl0IGhhc24ndCBoYXBwZW5lZCwgdGhlcmUgaXMgc3RpbGwKKyAgIGEgbG9zdCB3YWtldXAgcHJvYmxlbSBpZiBtb3JlIHRoYW4gb25lIHRocmVhZCBhcmUgaW50ZXJydXB0ZWQgaW4gdGhlCisgICBjcml0aWNhbCBwbGFjZS4gIEEgc2VtYXBob3JlIHNvbHZlcyB0aGF0LCBiZWNhdXNlIGl0cyBzdGF0ZSBpcyBjb3VudGVkLAorICAgbm90IEJvb2xlYW4uCisgICBCZWNhdXNlIGl0IGlzIG9rIHRvIHNpZ25hbCBhIGNvbmRpdGlvbiB2YXJpYWJsZSB3aXRoIG5vIG9uZQorICAgd2FpdGluZywgd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YKKyAgIHdhaXRpbmcgdGhyZWFkcy4gIE90aGVyd2lzZSwgdGhlIHNlbWFwaG9yZSdzIHN0YXRlIGNvdWxkIHJpc2UKKyAgIHdpdGhvdXQgYm91bmQuICBUaGlzIGFsc28gaGVscHMgcmVkdWNlIHRoZSBudW1iZXIgb2YgInNwdXJpb3VzIHdha2V1cHMiCisgICB0aGF0IHdvdWxkIG90aGVyd2lzZSBoYXBwZW4uCisKKyAgIFRoaXMgaW1wbGVtZW50YXRpb24gc3RpbGwgaGFzIHRoZSBwcm9ibGVtIHRoYXQgdGhlIHRocmVhZHMgd29rZW4KKyAgIHdpdGggYSAic2lnbmFsIiBhcmVuJ3QgbmVjZXNzYXJpbHkgdGhvc2UgdGhhdCBhcmUgYWxyZWFkeQorICAgd2FpdGluZy4gIEl0IGNvcnJlc3BvbmRzIHRvIGxpc3RpbmcgMiBpbjoKKyAgIGh0dHA6Ly9iaXJyZWxsLm9yZy9hbmRyZXcvcGFwZXJzL0ltcGxlbWVudGluZ0NWcy5wZGYKKworICAgR2VuZXJpYyBlbXVsYXRpb25zIG9mIHRoZSBwdGhyZWFkX2NvbmRfKiBBUEkgdXNpbmcKKyAgIGVhcmxpZXIgV2luMzIgZnVuY3Rpb25zIGNhbiBiZSBmb3VuZCBvbiB0aGUgV2ViLgorICAgVGhlIGZvbGxvd2luZyByZWFkIGNhbiBiZSBlZGlmaWNhdGluZyAob3Igbm90KToKKyAgIGh0dHA6Ly93d3cuY3NlLnd1c3RsLmVkdS9+c2NobWlkdC93aW4zMi1jdi0xLmh0bWwKKworICAgU2VlIGFsc28gCisqLworCit0eXBlZGVmIENSSVRJQ0FMX1NFQ1RJT04gUHlNVVRFWF9UOworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9JTklUKFB5TVVURVhfVCAqY3MpCit7CisgICAgSW5pdGlhbGl6ZUNyaXRpY2FsU2VjdGlvbihjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeU1VVEVYX0ZJTkkoUHlNVVRFWF9UICpjcykKK3sKKyAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9MT0NLKFB5TVVURVhfVCAqY3MpCit7CisgICAgRW50ZXJDcml0aWNhbFNlY3Rpb24oY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9VTkxPQ0soUHlNVVRFWF9UICpjcykKK3sKKyAgICBMZWF2ZUNyaXRpY2FsU2VjdGlvbihjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFRoZSBDb25kaXRpb25WYXJpYWJsZSBvYmplY3QuICBGcm9tIFhQIG9ud2FyZHMgaXQgaXMgZWFzaWx5IGVtdWxhdGVkIHdpdGgKKyAqIGEgU2VtYXBob3JlCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgX1B5Q09ORF9UCit7CisgICAgSEFORExFIHNlbTsKKyAgICBpbnQgd2FpdGluZzsgLyogdG8gYWxsb3cgUHlDT05EX1NJR05BTCB0byBiZSBhIG5vLW9wICovCit9IFB5Q09ORF9UOworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0lOSVQoUHlDT05EX1QgKmN2KQoreworICAgIC8qIEEgc2VtYXBob3JlIHdpdGggYSAibGFyZ2UiIG1heCB2YWx1ZSwgIFRoZSBwb3NpdGl2ZSB2YWx1ZQorICAgICAqIGlzIG9ubHkgbmVlZGVkIHRvIGNhdGNoIHRob3NlICJsb3N0IHdha2V1cCIgZXZlbnRzIGFuZAorICAgICAqIHJhY2UgY29uZGl0aW9ucyB3aGVuIGEgdGltZWQgd2FpdCBlbGFwc2VzLgorICAgICAqLworICAgIGN2LT5zZW0gPSBDcmVhdGVTZW1hcGhvcmUoTlVMTCwgMCwgMTAwMDAwLCBOVUxMKTsKKyAgICBpZiAoY3YtPnNlbT09TlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGN2LT53YWl0aW5nID0gMDsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9GSU5JKFB5Q09ORF9UICpjdikKK3sKKyAgICByZXR1cm4gQ2xvc2VIYW5kbGUoY3YtPnNlbSkgPyAwIDogLTE7Cit9CisKKy8qIHRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGRldGVjdCBhIHRpbWVvdXQuICBSZXR1cm5zIDEgb24gdGltZW91dCwKKyAqIDAgb3RoZXJ3aXNlIChhbmQgLTEgb24gZXJyb3IpCisgKi8KK1B5X0xPQ0FMX0lOTElORShpbnQpCitfUHlDT05EX1dBSVRfTVMoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBEV09SRCBtcykKK3sKKyAgICBEV09SRCB3YWl0OworICAgIGN2LT53YWl0aW5nKys7CisgICAgUHlNVVRFWF9VTkxPQ0soY3MpOworICAgIC8qICJsb3N0IHdha2V1cCBidWciIHdvdWxkIG9jY3VyIGlmIHRoZSBjYWxsZXIgd2VyZSBpbnRlcnJ1cHRlZCBoZXJlLAorICAgICAqIGJ1dCB3ZSBhcmUgc2FmZSBiZWNhdXNlIHdlIGFyZSB1c2luZyBhIHNlbWFwaG9yZSB3aWNoIGhhcyBhbiBpbnRlcm5hbAorICAgICAqIGNvdW50LgorICAgICAqLworICAgIHdhaXQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGN2LT5zZW0sIG1zKTsKKyAgICBQeU1VVEVYX0xPQ0soY3MpOworICAgIGlmICh3YWl0ICE9IFdBSVRfT0JKRUNUXzApCisgICAgICAgIC0tY3YtPndhaXRpbmc7CisgICAgICAgIC8qIEhlcmUgd2UgaGF2ZSBhIGJlbmlnbiByYWNlIGNvbmRpdGlvbiB3aXRoIFB5Q09ORF9TSUdOQUwuCisgICAgICAgICAqIFdoZW4gZmFpbHVyZSBvY2N1cnMgb3IgdGltZW91dCwgaXQgaXMgcG9zc2libGUgdGhhdAorICAgICAgICAgKiBQeUNPTkRfU0lHTkFMIGFsc28gZGVjcmVtZW50cyB0aGlzIHZhbHVlCisgICAgICAgICAqIGFuZCBzaWduYWxzIHJlbGVhc2VzIHRoZSBtdXRleC4gIFRoaXMgaXMgYmVuaWduIGJlY2F1c2UgaXQKKyAgICAgICAgICoganVzdCBtZWFucyBhbiBleHRyYSBzcHVyaW91cyB3YWtldXAgZm9yIGEgd2FpdGluZyB0aHJlYWQuCisgICAgICAgICAqICgnd2FpdGluZycgY29ycmVzcG9uZHMgdG8gdGhlIHNlbWFwaG9yZSdzICJuZWdhdGl2ZSIgY291bnQgYW5kCisgICAgICAgICAqIHdlIG1heSBlbmQgdXAgd2l0aCBlLmcuICh3YWl0aW5nID09IC0xICYmIHNlbS5jb3VudCA9PSAxKS4gIFdoZW4KKyAgICAgICAgICogYSBuZXcgdGhyZWFkIGNvbWVzIGFsb25nLCBpdCB3aWxsIHBhc3MgcmlnaHQgdGhyb3VoZ2gsIGhhdmluZworICAgICAgICAgKiBhZGp1c3RlZCBpdCB0byAod2FpdGluZyA9PSAwICYmIHNlbS5jb3VudCA9PSAwKS4KKyAgICAgICAgICovCisgICAgICAgICAKKyAgICBpZiAod2FpdCA9PSBXQUlUX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIC8qIHJldHVybiAwIG9uIHN1Y2Nlc3MsIDEgb24gdGltZW91dCAqLworICAgIHJldHVybiB3YWl0ICE9IFdBSVRfT0JKRUNUXzA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MpCit7CisgICAgaW50IHJlc3VsdCA9IF9QeUNPTkRfV0FJVF9NUyhjdiwgY3MsIElORklOSVRFKTsKKyAgICByZXR1cm4gcmVzdWx0ID49IDAgPyAwIDogcmVzdWx0OworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIGxvbmcgdXMpCit7CisgICAgcmV0dXJuIF9QeUNPTkRfV0FJVF9NUyhjdiwgY3MsIHVzLzEwMDApOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1NJR05BTChQeUNPTkRfVCAqY3YpCit7CisgICAgLyogdGhpcyB0ZXN0IGFsbG93cyBQeUNPTkRfU0lHTkFMIHRvIGJlIGEgbm8tb3AgdW5sZXNzIHJlcXVpcmVkCisgICAgICogdG8gd2FrZSBzb21lb25lIHVwLCB0aHVzIHByZXZlbnRpbmcgYW4gdW5ib3VuZGVkIGluY3JlYXNlIG9mCisgICAgICogdGhlIHNlbWFwaG9yZSdzIGludGVybmFsIGNvdW50ZXIuCisgICAgICovCisgICAgaWYgKGN2LT53YWl0aW5nID4gMCkgeworICAgICAgICAvKiBub3RpZnlpbmcgdGhyZWFkIGRlY3JlYXNlcyB0aGUgY3YtPndhaXRpbmcgY291bnQgc28gdGhhdAorICAgICAgICAgKiBhIGRlbGF5IGJldHdlZW4gbm90aWZ5IGFuZCBhY3R1YWwgd2FrZXVwIG9mIHRoZSB0YXJnZXQgdGhyZWFkCisgICAgICAgICAqIGRvZXNuJ3QgY2F1c2UgYSBudW1iZXIgb2YgZXh0cmEgUmVsZWFzZVNlbWFwaG9yZSBjYWxscy4KKyAgICAgICAgICovCisgICAgICAgIGN2LT53YWl0aW5nLS07CisgICAgICAgIHJldHVybiBSZWxlYXNlU2VtYXBob3JlKGN2LT5zZW0sIDEsIE5VTEwpID8gMCA6IC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9CUk9BRENBU1QoUHlDT05EX1QgKmN2KQoreworICAgIGlmIChjdi0+d2FpdGluZyA+IDApIHsKKyAgICAgICAgcmV0dXJuIFJlbGVhc2VTZW1hcGhvcmUoY3YtPnNlbSwgY3YtPndhaXRpbmcsIE5VTEwpID8gMCA6IC0xOworCQljdi0+d2FpdGluZyA9IDA7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisjZWxzZQorCisvKiBVc2UgbmF0aXZlIFdpbjcgcHJpbWl0aXZlcyBpZiBidWlsZCB0YXJnZXQgaXMgV2luNyBvciBoaWdoZXIgKi8KKworLyogU1JXTE9DSyBpcyBmYXN0ZXIgYW5kIGJldHRlciB0aGFuIENyaXRpY2FsU2VjdGlvbiAqLwordHlwZWRlZiBTUldMT0NLIFB5TVVURVhfVDsKKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfSU5JVChQeU1VVEVYX1QgKmNzKQoreworICAgIEluaXRpYWxpemVTUldMb2NrKGNzKTsKKyAgICByZXR1cm4gMDsKK30KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5TVVURVhfRklOSShQeU1VVEVYX1QgKmNzKQoreworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9MT0NLKFB5TVVURVhfVCAqY3MpCit7CisgICAgQWNxdWlyZVNSV0xvY2tFeGNsdXNpdmUoY3MpOworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlNVVRFWF9VTkxPQ0soUHlNVVRFWF9UICpjcykKK3sKKyAgICBSZWxlYXNlU1JXTG9ja0V4Y2x1c2l2ZShjcyk7CisgICAgcmV0dXJuIDA7Cit9CisKKwordHlwZWRlZiBDT05ESVRJT05fVkFSSUFCTEUgIFB5Q09ORF9UOworCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0lOSVQoUHlDT05EX1QgKmN2KQoreworICAgIEluaXRpYWxpemVDb25kaXRpb25WYXJpYWJsZShjdik7CisgICAgcmV0dXJuIDA7Cit9CitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX0ZJTkkoUHlDT05EX1QgKmN2KQoreworICAgIHJldHVybiAwOworfQorCitQeV9MT0NBTF9JTkxJTkUoaW50KQorUHlDT05EX1dBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzKQoreworICAgIHJldHVybiBTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKGN2LCBjcywgSU5GSU5JVEUsIDApID8gMCA6IC0xOworfQorCisvKiBUaGlzIGltcGxlbWVudGF0aW9uIG1ha2VzIG5vIGRpc3RpbmN0aW9uIGFib3V0IHRpbWVvdXRzLiAgU2lnbmFsCisgKiAyIHRvIGluZGljYXRlIHRoYXQgd2UgZG9uJ3Qga25vdy4KKyAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIHVzKQoreworICAgIHJldHVybiBTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKGN2LCBjcywgdXMvMTAwMCwgMCkgPyAyIDogLTE7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfU0lHTkFMKFB5Q09ORF9UICpjdikKK3sKKyAgICAgV2FrZUNvbmRpdGlvblZhcmlhYmxlKGN2KTsKKyAgICAgcmV0dXJuIDA7Cit9CisKK1B5X0xPQ0FMX0lOTElORShpbnQpCitQeUNPTkRfQlJPQURDQVNUKFB5Q09ORF9UICpjdikKK3sKKyAgICAgV2FrZUFsbENvbmRpdGlvblZhcmlhYmxlKGN2KTsKKyAgICAgcmV0dXJuIDA7Cit9CisKKworI2VuZGlmIC8qIF9QWV9FTVVMQVRFRF9XSU5fQ1YgKi8KKworI2VuZGlmIC8qIF9QT1NJWF9USFJFQURTLCBOVF9USFJFQURTICovCisKKyNlbmRpZiAvKiBfQ09ORFZBUl9IXyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R0b2EuYyBiL1B5dGhvbi9kdG9hLmMKaW5kZXggNDRkYzAxZi4uODM4NjFhYyAxMDA2NDQKLS0tIGEvUHl0aG9uL2R0b2EuYworKysgYi9QeXRob24vZHRvYS5jCkBAIC0yNjUsNiArMjY1LDE2IEBACiAjZGVmaW5lIEJpZzAgKEZyYWNfbWFzazEgfCBFeHBfbXNrMSooREJMX01BWF9FWFArQmlhcy0xKSkKICNkZWZpbmUgQmlnMSAweGZmZmZmZmZmCiAKKy8qIFN0YW5kYXJkIE5hTiB1c2VkIGJ5IF9QeV9kZ19zdGRuYW4uICovCisKKyNkZWZpbmUgTkFOX1dPUkQwIDB4N2ZmODAwMDAKKyNkZWZpbmUgTkFOX1dPUkQxIDAKKworLyogQml0cyBvZiB0aGUgcmVwcmVzZW50YXRpb24gb2YgcG9zaXRpdmUgaW5maW5pdHkuICovCisKKyNkZWZpbmUgUE9TSU5GX1dPUkQwIDB4N2ZmMDAwMDAKKyNkZWZpbmUgUE9TSU5GX1dPUkQxIDAKKwogLyogc3RydWN0IEJDaW5mbyBpcyB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gZnJvbSBfUHlfZGdfc3RydG9kIHRvIGJpZ2NvbXAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgQkNpbmZvIEJDaW5mbzsKQEAgLTE0ODYsNiArMTQ5NiwzNiBAQAogICAgIHJldHVybiAwOwogfQogCisvKiBSZXR1cm4gYSAnc3RhbmRhcmQnIE5hTiB2YWx1ZS4KKworICAgVGhlcmUgYXJlIGV4YWN0bHkgdHdvIHF1aWV0IE5hTnMgdGhhdCBkb24ndCBhcmlzZSBieSAncXVpZXRpbmcnIHNpZ25hbGluZworICAgTmFOcyAoc2VlIElFRUUgNzU0LTIwMDgsIHNlY3Rpb24gNi4yLjEpLiAgSWYgc2lnbiA9PSAwLCByZXR1cm4gdGhlIG9uZSB3aG9zZQorICAgc2lnbiBiaXQgaXMgY2xlYXJlZC4gIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBvbmUgd2hvc2Ugc2lnbiBiaXQgaXMgc2V0LgorKi8KKworZG91YmxlCitfUHlfZGdfc3RkbmFuKGludCBzaWduKQoreworICAgIFUgcnY7CisgICAgd29yZDAoJnJ2KSA9IE5BTl9XT1JEMDsKKyAgICB3b3JkMSgmcnYpID0gTkFOX1dPUkQxOworICAgIGlmIChzaWduKQorICAgICAgICB3b3JkMCgmcnYpIHw9IFNpZ25fYml0OworICAgIHJldHVybiBkdmFsKCZydik7Cit9CisKKy8qIFJldHVybiBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBpbmZpbml0eSwgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBzaWduICgwIGZvcgorICogcG9zaXRpdmUgaW5maW5pdHksIDEgZm9yIG5lZ2F0aXZlIGluZmluaXR5KS4gKi8KKworZG91YmxlCitfUHlfZGdfaW5maW5pdHkoaW50IHNpZ24pCit7CisgICAgVSBydjsKKyAgICB3b3JkMCgmcnYpID0gUE9TSU5GX1dPUkQwOworICAgIHdvcmQxKCZydikgPSBQT1NJTkZfV09SRDE7CisgICAgcmV0dXJuIHNpZ24gPyAtZHZhbCgmcnYpIDogZHZhbCgmcnYpOworfQorCiBkb3VibGUKIF9QeV9kZ19zdHJ0b2QoY29uc3QgY2hhciAqczAwLCBjaGFyICoqc2UpCiB7CkBAIC0xODg2LDIwICsxOTI2LDIwIEBACiAgICAgICAgIGJkMisrOwogCiAgICAgICAgIC8qIEF0IHRoaXMgc3RhZ2UgYmQ1IC0gYmI1ID09IGUgPT0gYmQyIC0gYmIyICsgYmJlLCBiYjIgLSBiczIgPT0gMSwKLQkgICBhbmQgYnMgPT0gMSwgc286CisgICAgICAgICAgIGFuZCBicyA9PSAxLCBzbzoKIAogICAgICAgICAgICAgICB0ZHYgPT0gYmQgKiAxMCoqZSA9IGJkICogMioqKGJiZSAtIGJiMiArIGJkMikgKiA1KiooYmQ1IC0gYmI1KQogICAgICAgICAgICAgICBzcnYgPT0gYmIgKiAyKipiYmUgPSBiYiAqIDIqKihiYmUgLSBiYjIgKyBiYjIpCi0JICAgICAgMC41IHVscChzcnYpID09IDIqKihiYmUtMSkgPSBicyAqIDIqKihiYmUgLSBiYjIgKyBiczIpCisgICAgICAgICAgICAgIDAuNSB1bHAoc3J2KSA9PSAyKiooYmJlLTEpID0gYnMgKiAyKiooYmJlIC0gYmIyICsgYnMyKQogCi0JICAgSXQgZm9sbG93cyB0aGF0OgorICAgICAgICAgICBJdCBmb2xsb3dzIHRoYXQ6CiAKICAgICAgICAgICAgICAgTSAqIHRkdiA9IGJkICogMioqYmQyICogNSoqYmQ1CiAgICAgICAgICAgICAgIE0gKiBzcnYgPSBiYiAqIDIqKmJiMiAqIDUqKmJiNQogICAgICAgICAgICAgICBNICogMC41IHVscChzcnYpID0gYnMgKiAyKipiczIgKiA1KipiYjUKIAotCSAgIGZvciBzb21lIGNvbnN0YW50IE0uICAoQWN0dWFsbHksIE0gPT0gMioqKGJiMiAtIGJiZSkgKiA1KipiYjUsIGJ1dAotCSAgIHRoaXMgZmFjdCBpcyBub3QgbmVlZGVkIGJlbG93LikKKyAgICAgICAgICAgZm9yIHNvbWUgY29uc3RhbnQgTS4gIChBY3R1YWxseSwgTSA9PSAyKiooYmIyIC0gYmJlKSAqIDUqKmJiNSwgYnV0CisgICAgICAgICAgIHRoaXMgZmFjdCBpcyBub3QgbmVlZGVkIGJlbG93LikKICAgICAgICAgKi8KIAogICAgICAgICAvKiBSZW1vdmUgZmFjdG9yIG9mIDIqKmksIHdoZXJlIGkgPSBtaW4oYmIyLCBiZDIsIGJzMikuICovCkBAIC0yMDU1LDcgKzIwOTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKyBFeHBfbXNrMQogICAgICAgICAgICAgICAgICAgICAgICAgOwogICAgICAgICAgICAgICAgICAgICB3b3JkMSgmcnYpID0gMDsKLSAgICAgICAgICAgICAgICAgICAgZHNpZ24gPSAwOworICAgICAgICAgICAgICAgICAgICAvKiBkc2lnbiA9IDA7ICovCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTIwOTIsNyArMjEzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5kZmw7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZHNpZ24gPSAxIC0gZHNpZ247CisgICAgICAgICAgICAvKiBkc2lnbiA9IDEgLSBkc2lnbjsgKi8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmICgoYWFkaiA9IHJhdGlvKGRlbHRhLCBicykpIDw9IDIuKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9haXguYyBiL1B5dGhvbi9keW5sb2FkX2FpeC5jCmluZGV4IDE0OTk5MGQuLmI0ZjcxZjIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX2FpeC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2FpeC5jCkBAIC0yNiwxMSArMjYsNyBAQAogICAgIHZvaWQgICAgICAgICAgKmVudHJ5OwogfSBNb2R1bGUsICpNb2R1bGVQdHI7CiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAgeyIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5zbyIsIE5VTEx9OwogCiBzdGF0aWMgaW50CiBhaXhfZ2V0b2xkbW9kdWxlcyh2b2lkICoqbW9kbGlzdHB0cikKQEAgLTEwOSw2ICsxMDUsOCBAQAogewogCiAgICAgY2hhciAqbWVzc2FnZVsxMDI0XSwgZXJyYnVmWzEwMjRdOworICAgIFB5T2JqZWN0ICpwYXRobmFtZV9vYiA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycmJ1Zl9vYiA9IE5VTEw7CiAgICAgcmVnaXN0ZXIgaW50IGksajsKIAogICAgIHN0cnVjdCBlcnJ0YWIgewpAQCAtMTI5LDcgKzEyNyw2IEBACiAgICAgICAgIHtMX0VSUk9SX0VSUk5PLCAgICAgICAgICAgICAgICAgTlVMTH0KICAgICB9OwogCi0jZGVmaW5lIExPQURfRVJSVEFCX0xFTiAoc2l6ZW9mKGxvYWRfZXJydGFiKS9zaXplb2YobG9hZF9lcnJ0YWJbMF0pKQogI2RlZmluZSBFUlJCVUZfQVBQRU5EKHMpIHN0cm5jYXQoZXJyYnVmLCBzLCBzaXplb2YoZXJyYnVmKS1zdHJsZW4oZXJyYnVmKS0xKQogCiAgICAgUHlPU19zbnByaW50ZihlcnJidWYsIHNpemVvZihlcnJidWYpLCAiZnJvbSBtb2R1bGUgJS4yMDBzICIsIHBhdGhuYW1lKTsKQEAgLTE0MCw3ICsxMzcsNyBAQAogICAgIH0KICAgICBmb3IoaSA9IDA7IG1lc3NhZ2VbaV0gJiYgKm1lc3NhZ2VbaV07IGkrKykgewogICAgICAgICBpbnQgbmVyciA9IGF0b2kobWVzc2FnZVtpXSk7Ci0gICAgICAgIGZvciAoaj0wOyBqPExPQURfRVJSVEFCX0xFTiA7IGorKykgeworICAgICAgICBmb3IgKGo9MDsgaiA8IFB5X0FSUkFZX0xFTkdUSChsb2FkX2VycnRhYik7IGorKykgewogICAgICAgICAgICAgaWYgKG5lcnIgPT0gbG9hZF9lcnJ0YWJbal0uZXJyTm8gJiYgbG9hZF9lcnJ0YWJbal0uZXJyc3RyKQogICAgICAgICAgICAgRVJSQlVGX0FQUEVORChsb2FkX2VycnRhYltqXS5lcnJzdHIpOwogICAgICAgICB9CkBAIC0xNDksMTIgKzE0NiwxNiBAQAogICAgICAgICBFUlJCVUZfQVBQRU5EKCJcbiIpOwogICAgIH0KICAgICBlcnJidWZbc3RybGVuKGVycmJ1ZiktMV0gPSAnXDAnOyAgICAgICAgICAgIC8qIHRyaW0gb2ZmIGxhc3QgbmV3bGluZSAqLwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgZXJyYnVmKTsKKyAgICBwYXRobmFtZV9vYiA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKHBhdGhuYW1lKTsKKyAgICBlcnJidWZfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJidWYpOworICAgIFB5RXJyX1NldEltcG9ydEVycm9yKGVycmJ1Zl9vYiwgTlVMTCwgcGF0aG5hbWUpOworICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYik7CisgICAgUHlfREVDUkVGKGVycmJ1Zl9vYik7CiAgICAgcmV0dXJuOwogfQogCiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2RsLmMgYi9QeXRob24vZHlubG9hZF9kbC5jCmluZGV4IDI2MDZlMWUuLjU4MzZjYjNiIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9kbC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX2RsLmMKQEAgLTksMTggKzksMTQgQEAKIAogZXh0ZXJuIGNoYXIgKlB5X0dldFByb2dyYW1OYW1lKHZvaWQpOwogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotCXsiLm8iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0JeyJtb2R1bGUubyIsICJyYiIsIENfRVhURU5TSU9OfSwKLQl7MCwgMH0KLX07Citjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsiLm8iLCBOVUxMfTsKIAogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLQkJCQkgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewotCWNoYXIgZnVuY25hbWVbMjU4XTsKKyAgICBjaGFyIGZ1bmNuYW1lWzI1OF07CiAKLQlQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7Ci0JcmV0dXJuIGRsX2xvYWRtb2QoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgcGF0aG5hbWUsIGZ1bmNuYW1lKTsKKyAgICBQeU9TX3NucHJpbnRmKGZ1bmNuYW1lLCBzaXplb2YoZnVuY25hbWUpLCAiUHlJbml0XyUuMjAwcyIsIHNob3J0bmFtZSk7CisgICAgcmV0dXJuIGRsX2xvYWRtb2QoUHlfR2V0UHJvZ3JhbU5hbWUoKSwgcGF0aG5hbWUsIGZ1bmNuYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9keW5sb2FkX2hwdXguYyBiL1B5dGhvbi9keW5sb2FkX2hwdXguYwppbmRleCAxOGE4MTM3Li5jOTU1NDE0IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9ocHV4LmMKKysrIGIvUHl0aG9uL2R5bmxvYWRfaHB1eC5jCkBAIC0xMywxMyArMTMsOSBAQAogI2RlZmluZSBGVU5DTkFNRV9QQVRURVJOICJQeUluaXRfJS4yMDBzIgogI2VuZGlmCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0gICAge1NITElCX0VYVCwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlIlNITElCX0VYVCwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0ge1NITElCX0VYVCwgTlVMTH07CiAKLWRsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKmZxbmFtZSwgY29uc3QgY2hhciAqc2hvcnRuYW1lLAorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcDsKQEAgLTM3LDExICszMywyMSBAQAogICAgIC8qIFhYWCBDaHVjayBCbGFrZSBvbmNlIHdyb3RlIHRoYXQgMCBzaG91bGQgYmUgQklORF9OT1NUQVJUPyAqLwogICAgIGlmIChsaWIgPT0gTlVMTCkgewogICAgICAgICBjaGFyIGJ1ZlsyNTZdOworICAgICAgICBQeU9iamVjdCAqcGF0aG5hbWVfb2IgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqYnVmX29iID0gTlVMTDsKKyAgICAgICAgUHlPYmplY3QgKnNob3J0bmFtZV9vYiA9IE5VTEw7CisKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICAgICAgcGVycm9yKHBhdGhuYW1lKTsKICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiRmFpbGVkIHRvIGxvYWQgJS4yMDBzIiwKICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgYnVmKTsKKyAgICAgICAgYnVmX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoYnVmKTsKKyAgICAgICAgc2hvcnRuYW1lX29iID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKTsKKyAgICAgICAgcGF0aG5hbWVfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKGJ1Zl9vYiwgc2hvcnRuYW1lX29iLCBwYXRobmFtZV9vYik7CisgICAgICAgIFB5X0RFQ1JFRihidWZfb2IpOworICAgICAgICBQeV9ERUNSRUYoc2hvcnRuYW1lX29iKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lX29iKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksIEZVTkNOQU1FX1BBVFRFUk4sIHNob3J0bmFtZSk7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9uZXh0LmMgYi9QeXRob24vZHlubG9hZF9uZXh0LmMKaW5kZXggY2FiZjliOS4uODVjOTViNCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfbmV4dC5jCisrKyBiL1B5dGhvbi9keW5sb2FkX25leHQuYwpAQCAtOCwxMSArOCw3IEBACiAKICNpbmNsdWRlIDxtYWNoLW8vZHlsZC5oPgogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHsiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHswLCAwfQotfTsKK2NvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geyIuc28iLCBOVUxMfTsKIAogLyoKICoqIFB5dGhvbiBtb2R1bGVzIGFyZSBNYWNoLU8gTUhfQlVORExFIGZpbGVzLiBUaGUgYmVzdCB3YXkgdG8gbG9hZCB0aGVzZQpAQCAtMzEsOCArMjcsOCBAQAogI2RlZmluZSBMSU5LT1BUSU9OUyBOU0xJTktNT0RVTEVfT1BUSU9OX0JJTkROT1d8IFwKICAgICBOU0xJTktNT0RVTEVfT1BUSU9OX1JFVFVSTl9PTl9FUlJPUnxOU0xJTktNT0RVTEVfT1BUSU9OX1BSSVZBVEUKICNlbmRpZgotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQorZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKQogewogICAgIGRsX2Z1bmNwdHIgcCA9IE5VTEw7CiAgICAgY2hhciBmdW5jbmFtZVsyNThdOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfb3MyLmMgYi9QeXRob24vZHlubG9hZF9vczIuYwppbmRleCAxMDFjMDI0Li4wZTFiOTA3IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9vczIuYworKysgYi9QeXRob24vZHlubG9hZF9vczIuYwpAQCAtOSwxMyArOSw5IEBACiAjaW5jbHVkZSAiaW1wb3J0ZGwuaCIKIAogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0gewotICAgIHsiLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ii5weWQiLCAiLmRsbCIsIE5VTEx9OwogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRGdW5jKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKIHsKICAgICBkbF9mdW5jcHRyIHA7CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9zaGxpYi5jIGIvUHl0aG9uL2R5bmxvYWRfc2hsaWIuYwppbmRleCA3ZWE1MTBlLi4wY2E2NWM3IDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF9zaGxpYi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3NobGliLmMKQEAgLTM2LDMxICszNiwyNSBAQAogICAgbGl2ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuICBFLmcuIGZvb21vZHVsZS5jcHl0aG9uLTMyLnNvCiAqLwogCi1jb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdID0geworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7CiAjaWZkZWYgX19DWUdXSU5fXwotICAgIHsiLmRsbCIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5kbGwiLCAicmIiLCBDX0VYVEVOU0lPTn0sCisgICAgIi5kbGwiLAogI2Vsc2UgIC8qICFfX0NZR1dJTl9fICovCiAjaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChQWUNDX0dDQykKLSAgICB7Ii5weWQiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuZGxsIiwgInJiIiwgQ19FWFRFTlNJT059LAorICAgICIucHlkIiwKKyAgICAiLmRsbCIsCiAjZWxzZSAgLyogIShkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKSkgKi8KICNpZmRlZiBfX1ZNUwotICAgIHsiLmV4ZSIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5FWEUiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyJtb2R1bGUuZXhlIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsiTU9EVUxFLkVYRSIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLmV4ZSIsCisgICAgIi5FWEUiLAogI2Vsc2UgIC8qICFfX1ZNUyAqLwotICAgIHsiLiIgU09BQkkgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS4iIFNPQUJJICIuc28iLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0gICAgeyIuYWJpIiBQWVRIT05fQUJJX1NUUklORyAiLnNvIiwgInJiIiwgQ19FWFRFTlNJT059LAotICAgIHsibW9kdWxlLmFiaSIgUFlUSE9OX0FCSV9TVFJJTkcgIi5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Ii5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKLSAgICB7Im1vZHVsZS5zbyIsICJyYiIsIENfRVhURU5TSU9OfSwKKyAgICAiLiIgU09BQkkgIi5zbyIsCisgICAgIi5hYmkiIFBZVEhPTl9BQklfU1RSSU5HICIuc28iLAorICAgICIuc28iLAogI2VuZGlmICAvKiBfX1ZNUyAqLwogI2VuZGlmICAvKiBkZWZpbmVkKFBZT1NfT1MyKSAmJiBkZWZpbmVkKFBZQ0NfR0NDKSAqLwogI2VuZGlmICAvKiBfX0NZR1dJTl9fICovCi0gICAgezAsIDB9CisgICAgTlVMTCwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgewpAQCAtNzUsNyArNjksNyBAQAogc3RhdGljIGludCBuaGFuZGxlcyA9IDA7CiAKIAotZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZEZ1bmMoY29uc3QgY2hhciAqZnFuYW1lLCBjb25zdCBjaGFyICpzaG9ydG5hbWUsCitkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwpAQCAtMTIxLDEwICsxMTUsNiBAQAogICAgIGRsb3BlbmZsYWdzID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwLT5kbG9wZW5mbGFnczsKICNlbmRpZgogCi0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiZGxvcGVuKFwiJXNcIiwgJXgpO1xuIiwgcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRsb3BlbmZsYWdzKTsKLQogI2lmZGVmIF9fVk1TCiAgICAgLyogVk1TIGN1cnJlbnRseSBkb24ndCBhbGxvdyBhIHBhdGhuYW1lLCB1c2UgYSBsb2dpY2FsIG5hbWUgaW5zdGVhZCAqLwogICAgIC8qIENvbmNhdGVuYXRlICdweXRob25fbW9kdWxlXycgYW5kIHNob3J0bmFtZSAqLwpAQCAtMTM5LDEwICsxMjksMTkgQEAKICAgICBoYW5kbGUgPSBkbG9wZW4ocGF0aG5hbWUsIGRsb3BlbmZsYWdzKTsKIAogICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbW9kX25hbWUgPSBOVUxMOworICAgICAgICBQeU9iamVjdCAqcGF0aCA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICplcnJvcl9vYiA9IE5VTEw7CiAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9yID0gZGxlcnJvcigpOwogICAgICAgICBpZiAoZXJyb3IgPT0gTlVMTCkKICAgICAgICAgICAgIGVycm9yID0gInVua25vd24gZGxvcGVuKCkgZXJyb3IiOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsIGVycm9yKTsKKyAgICAgICAgZXJyb3Jfb2IgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhlcnJvcik7CisgICAgICAgIHBhdGggPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhwYXRobmFtZSk7CisgICAgICAgIG1vZF9uYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IoZXJyb3Jfb2IsIG1vZF9uYW1lLCBwYXRoKTsKKyAgICAgICAgUHlfWERFQ1JFRihlcnJvcl9vYik7CisgICAgICAgIFB5X1hERUNSRUYocGF0aCk7CisgICAgICAgIFB5X1hERUNSRUYobW9kX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGZwICE9IE5VTEwgJiYgbmhhbmRsZXMgPCAxMjgpCmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF9zdHViLmMgYi9QeXRob24vZHlubG9hZF9zdHViLmMKaW5kZXggNjlmOGI0NS4uNTkxNjA0OCAxMDA2NDQKLS0tIGEvUHl0aG9uL2R5bmxvYWRfc3R1Yi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3N0dWIuYwpAQCAtNiw2ICs2LDQgQEAKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCiAKLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0JezAsIDB9Ci19OworY29uc3QgY2hhciAqX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7TlVMTH07CmRpZmYgLS1naXQgYS9QeXRob24vZHlubG9hZF93aW4uYyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCmluZGV4IDczYTFkY2YuLjI1YjY2ODAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9keW5sb2FkX3dpbi5jCisrKyBiL1B5dGhvbi9keW5sb2FkX3dpbi5jCkBAIC0xMiwxNiArMTIsMTggQEAKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAKIC8vICJhY3RpdmF0aW9uIGNvbnRleHQiIG1hZ2ljIC0gc2VlIGRsX250LmMuLi4KKyNpZiBIQVZFX1NYUwogZXh0ZXJuIFVMT05HX1BUUiBfUHlfQWN0aXZhdGVBY3RDdHgoKTsKIHZvaWQgX1B5X0RlYWN0aXZhdGVBY3RDdHgoVUxPTkdfUFRSIGNvb2tpZSk7Ci0KLWNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW10gPSB7Ci0jaWZkZWYgX0RFQlVHCi0gICAgeyJfZC5weWQiLCAicmIiLCBDX0VYVEVOU0lPTn0sCi0jZWxzZQotICAgIHsiLnB5ZCIsICJyYiIsIENfRVhURU5TSU9OfSwKICNlbmRpZgotICAgIHswLCAwfQorCitjb25zdCBjaGFyICpfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWJbXSA9IHsKKyNpZmRlZiBfREVCVUcKKyAgICAiX2QucHlkIiwKKyNlbHNlCisgICAgIi5weWQiLAorI2VuZGlmCisgICAgTlVMTAogfTsKIAogCkBAIC0xNzEsNDMgKzE3Myw0NCBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1kbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpmcW5hbWUsIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK2RsX2Z1bmNwdHIgX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApCiB7CiAgICAgZGxfZnVuY3B0ciBwOwogICAgIGNoYXIgZnVuY25hbWVbMjU4XSwgKmltcG9ydF9weXRob247CisgICAgd2NoYXJfdCAqd3BhdGhuYW1lOwogCiAjaWZuZGVmIF9ERUJVRwogICAgIF9QeV9DaGVja1B5dGhvbjMoKTsKICNlbmRpZgogCisgICAgd3BhdGhuYW1lID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRobmFtZSk7CisgICAgaWYgKHdwYXRobmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIFB5T1Nfc25wcmludGYoZnVuY25hbWUsIHNpemVvZihmdW5jbmFtZSksICJQeUluaXRfJS4yMDBzIiwgc2hvcnRuYW1lKTsKIAogICAgIHsKICAgICAgICAgSElOU1RBTkNFIGhETEwgPSBOVUxMOwotICAgICAgICBjaGFyIHBhdGhidWZbMjYwXTsKLSAgICAgICAgTFBUU1RSIGR1bW15OwogICAgICAgICB1bnNpZ25lZCBpbnQgb2xkX21vZGU7CisjaWYgSEFWRV9TWFMKICAgICAgICAgVUxPTkdfUFRSIGNvb2tpZSA9IDA7Ci0gICAgICAgIC8qIFdlIHVzZSBMb2FkTGlicmFyeUV4IHNvIFdpbmRvd3MgbG9va3MgZm9yIGRlcGVuZGVudCBETExzCi0gICAgICAgICAgICBpbiBkaXJlY3Rvcnkgb2YgcGF0aG5hbWUgZmlyc3QuICBIb3dldmVyLCBXaW5kb3dzOTUKLSAgICAgICAgICAgIGNhbiBzb21ldGltZXMgbm90IHdvcmsgY29ycmVjdGx5IHVubGVzcyB0aGUgYWJzb2x1dGUKLSAgICAgICAgICAgIHBhdGggaXMgdXNlZC4gIElmIEdldEZ1bGxQYXRoTmFtZSgpIGZhaWxzLCB0aGUgTG9hZExpYnJhcnkKLSAgICAgICAgICAgIHdpbGwgY2VydGFpbmx5IGZhaWwgdG9vLCBzbyB1c2UgaXRzIGVycm9yIGNvZGUgKi8KKyNlbmRpZgogCiAgICAgICAgIC8qIERvbid0IGRpc3BsYXkgYSBtZXNzYWdlIGJveCB3aGVuIFB5dGhvbiBjYW4ndCBsb2FkIGEgRExMICovCiAgICAgICAgIG9sZF9tb2RlID0gU2V0RXJyb3JNb2RlKFNFTV9GQUlMQ1JJVElDQUxFUlJPUlMpOwogCi0gICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWUocGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHBhdGhidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR1bW15KSkgewotICAgICAgICAgICAgVUxPTkdfUFRSIGNvb2tpZSA9IF9QeV9BY3RpdmF0ZUFjdEN0eCgpOwotICAgICAgICAgICAgLyogWFhYIFRoaXMgY2FsbCBkb2Vzbid0IGV4aXN0IGluIFdpbmRvd3MgQ0UgKi8KLSAgICAgICAgICAgIGhETEwgPSBMb2FkTGlicmFyeUV4KHBhdGhuYW1lLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpOwotICAgICAgICAgICAgX1B5X0RlYWN0aXZhdGVBY3RDdHgoY29va2llKTsKLSAgICAgICAgfQorI2lmIEhBVkVfU1hTCisgICAgICAgIGNvb2tpZSA9IF9QeV9BY3RpdmF0ZUFjdEN0eCgpOworI2VuZGlmCisgICAgICAgIC8qIFdlIHVzZSBMb2FkTGlicmFyeUV4IHNvIFdpbmRvd3MgbG9va3MgZm9yIGRlcGVuZGVudCBETExzCisgICAgICAgICAgICBpbiBkaXJlY3Rvcnkgb2YgcGF0aG5hbWUgZmlyc3QuICovCisgICAgICAgIC8qIFhYWCBUaGlzIGNhbGwgZG9lc24ndCBleGlzdCBpbiBXaW5kb3dzIENFICovCisgICAgICAgIGhETEwgPSBMb2FkTGlicmFyeUV4Vyh3cGF0aG5hbWUsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCk7CisjaWYgSEFWRV9TWFMKKyAgICAgICAgX1B5X0RlYWN0aXZhdGVBY3RDdHgoY29va2llKTsKKyNlbmRpZgogCiAgICAgICAgIC8qIHJlc3RvcmUgb2xkIGVycm9yIG1vZGUgc2V0dGluZ3MgKi8KICAgICAgICAgU2V0RXJyb3JNb2RlKG9sZF9tb2RlKTsKQEAgLTI1NCwzMSArMjU3LDM0IEBACiAgICAgICAgICAgICAgICAgICAgICJETEwgbG9hZCBmYWlsZWQ6ICIpOwogCiAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Vbmljb2RlKAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKAogICAgICAgICAgICAgICAgICAgICAgICAgdGhlSW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZUxlbmd0aCkpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0ltcG9ydEVycm9yLCBtZXNzYWdlKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYobWVzc2FnZSk7CisgICAgICAgICAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobWVzc2FnZSwgUHlVbmljb2RlX0Zyb21TdHJpbmcoc2hvcnRuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjaGFyIGJ1ZmZlclsyNTZdOwogCisgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCiAjaWZkZWYgX0RFQlVHCi0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICJweXRob24lZCVkX2QuZGxsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkJWRfZC5kbGwiLAogI2Vsc2UKLSAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgInB5dGhvbiVkJWQuZGxsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiVkJWQuZGxsIiwKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICBQWV9NQUpPUl9WRVJTSU9OLFBZX01JTk9SX1ZFUlNJT04pOwogICAgICAgICAgICAgaW1wb3J0X3B5dGhvbiA9IEdldFB5dGhvbkltcG9ydChoRExMKTsKIAogICAgICAgICAgICAgaWYgKGltcG9ydF9weXRob24gJiYKICAgICAgICAgICAgICAgICBzdHJjYXNlY21wKGJ1ZmZlcixpbXBvcnRfcHl0aG9uKSkgewotICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgdXNlIG9mICUuMTUwcyBjb25mbGljdHMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbi4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0X3B5dGhvbik7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIHVzZSBvZiAlLjE1MHMgY29uZmxpY3RzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpdGggdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbi4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRfcHl0aG9uKTsKICAgICAgICAgICAgICAgICBGcmVlTGlicmFyeShoRExMKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCA1YTlhNjI0Li42MjZiMTZlIDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC0zMjAsNiArMzIwLDM5IEBACiAgICAgUHlFcnJfUmVzdG9yZShOVUxMLCBOVUxMLCBOVUxMKTsKIH0KIAordm9pZAorUHlFcnJfR2V0RXhjSW5mbyhQeU9iamVjdCAqKnBfdHlwZSwgUHlPYmplY3QgKipwX3ZhbHVlLCBQeU9iamVjdCAqKnBfdHJhY2ViYWNrKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICAqcF90eXBlID0gdHN0YXRlLT5leGNfdHlwZTsKKyAgICAqcF92YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOworICAgICpwX3RyYWNlYmFjayA9IHRzdGF0ZS0+ZXhjX3RyYWNlYmFjazsKKworICAgIFB5X1hJTkNSRUYoKnBfdHlwZSk7CisgICAgUHlfWElOQ1JFRigqcF92YWx1ZSk7CisgICAgUHlfWElOQ1JFRigqcF90cmFjZWJhY2spOworfQorCit2b2lkCitQeUVycl9TZXRFeGNJbmZvKFB5T2JqZWN0ICpwX3R5cGUsIFB5T2JqZWN0ICpwX3ZhbHVlLCBQeU9iamVjdCAqcF90cmFjZWJhY2spCit7CisgICAgUHlPYmplY3QgKm9sZHR5cGUsICpvbGR2YWx1ZSwgKm9sZHRyYWNlYmFjazsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgb2xkdHlwZSA9IHRzdGF0ZS0+ZXhjX3R5cGU7CisgICAgb2xkdmFsdWUgPSB0c3RhdGUtPmV4Y192YWx1ZTsKKyAgICBvbGR0cmFjZWJhY2sgPSB0c3RhdGUtPmV4Y190cmFjZWJhY2s7CisKKyAgICB0c3RhdGUtPmV4Y190eXBlID0gcF90eXBlOworICAgIHRzdGF0ZS0+ZXhjX3ZhbHVlID0gcF92YWx1ZTsKKyAgICB0c3RhdGUtPmV4Y190cmFjZWJhY2sgPSBwX3RyYWNlYmFjazsKKworICAgIFB5X1hERUNSRUYob2xkdHlwZSk7CisgICAgUHlfWERFQ1JFRihvbGR2YWx1ZSk7CisgICAgUHlfWERFQ1JFRihvbGR0cmFjZWJhY2spOworfQorCiAvKiBDb252ZW5pZW5jZSBmdW5jdGlvbnMgdG8gc2V0IGEgdHlwZSBlcnJvciBleGNlcHRpb24gYW5kIHJldHVybiAwICovCiAKIGludApAQCAtMzQxLDExICszNzQsOSBAQAogUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5T2JqZWN0ICpleGMsIFB5T2JqZWN0ICpmaWxlbmFtZU9iamVjdCkKIHsKICAgICBQeU9iamVjdCAqbWVzc2FnZTsKLSAgICBQeU9iamVjdCAqdjsKKyAgICBQeU9iamVjdCAqdiwgKmFyZ3M7CiAgICAgaW50IGkgPSBlcnJubzsKLSNpZm5kZWYgTVNfV0lORE9XUwotICAgIGNoYXIgKnM7Ci0jZWxzZQorI2lmZGVmIE1TX1dJTkRPV1MKICAgICBXQ0hBUiAqc19idWYgPSBOVUxMOwogI2VuZGlmIC8qIFVuaXgvV2luZG93cyAqLwogCkBAIC0zNTUsMTEgKzM4NiwxNCBAQAogI2VuZGlmCiAKICNpZm5kZWYgTVNfV0lORE9XUwotICAgIGlmIChpID09IDApCi0gICAgICAgIHMgPSAiRXJyb3IiOyAvKiBTb21ldGltZXMgZXJybm8gZGlkbid0IGdldCBzZXQgKi8KLSAgICBlbHNlCi0gICAgICAgIHMgPSBzdHJlcnJvcihpKTsKLSAgICBtZXNzYWdlID0gUHlVbmljb2RlX0RlY29kZVVURjgocywgc3RybGVuKHMpLCAiaWdub3JlIik7CisgICAgaWYgKGkgIT0gMCkgeworICAgICAgICBjaGFyICpzID0gc3RyZXJyb3IoaSk7CisgICAgICAgIG1lc3NhZ2UgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHMsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIFNvbWV0aW1lcyBlcnJubyBkaWRuJ3QgZ2V0IHNldCAqLworICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVycm9yIik7CisgICAgfQogI2Vsc2UKICAgICBpZiAoaSA9PSAwKQogICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoIkVycm9yIik7IC8qIFNvbWV0aW1lcyBlcnJubyBkaWRuJ3QgZ2V0IHNldCAqLwpAQCAtMzk1LDcgKzQyOSw3IEBACiAgICAgICAgICAgICAgICAgLyogcmVtb3ZlIHRyYWlsaW5nIGNyL2xmIGFuZCBkb3RzICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDAgJiYgKHNfYnVmW2xlbi0xXSA8PSBMJyAnIHx8IHNfYnVmW2xlbi0xXSA9PSBMJy4nKSkKICAgICAgICAgICAgICAgICAgICAgc19idWZbLS1sZW5dID0gTCdcMCc7Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShzX2J1ZiwgbGVuKTsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihzX2J1ZiwgbGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTQxMCwxNCArNDQ0LDE4IEBACiAgICAgfQogCiAgICAgaWYgKGZpbGVuYW1lT2JqZWN0ICE9IE5VTEwpCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaU9PKSIsIGksIG1lc3NhZ2UsIGZpbGVuYW1lT2JqZWN0KTsKKyAgICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihpT08pIiwgaSwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QpOwogICAgIGVsc2UKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpTykiLCBpLCBtZXNzYWdlKTsKKyAgICAgICAgYXJncyA9IFB5X0J1aWxkVmFsdWUoIihpTykiLCBpLCBtZXNzYWdlKTsKICAgICBQeV9ERUNSRUYobWVzc2FnZSk7CiAKLSAgICBpZiAodiAhPSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldE9iamVjdChleGMsIHYpOwotICAgICAgICBQeV9ERUNSRUYodik7CisgICAgaWYgKGFyZ3MgIT0gTlVMTCkgeworICAgICAgICB2ID0gUHlPYmplY3RfQ2FsbChleGMsIGFyZ3MsIE5VTEwpOworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgICAgIGlmICh2ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKikgUHlfVFlQRSh2KSwgdik7CisgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgIH0KICAgICB9CiAjaWZkZWYgTVNfV0lORE9XUwogICAgIExvY2FsRnJlZShzX2J1Zik7CkBAIC00NjQsNyArNTAyLDcgQEAKICAgICBpbnQgbGVuOwogICAgIFdDSEFSICpzX2J1ZiA9IE5VTEw7IC8qIEZyZWUgdmlhIExvY2FsRnJlZSAqLwogICAgIFB5T2JqZWN0ICptZXNzYWdlOwotICAgIFB5T2JqZWN0ICp2OworICAgIFB5T2JqZWN0ICphcmdzLCAqdjsKICAgICBEV09SRCBlcnIgPSAoRFdPUkQpaWVycjsKICAgICBpZiAoZXJyPT0wKSBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKICAgICBsZW4gPSBGb3JtYXRNZXNzYWdlVygKQEAgLTQ4Nyw3ICs1MjUsNyBAQAogICAgICAgICAvKiByZW1vdmUgdHJhaWxpbmcgY3IvbGYgYW5kIGRvdHMgKi8KICAgICAgICAgd2hpbGUgKGxlbiA+IDAgJiYgKHNfYnVmW2xlbi0xXSA8PSBMJyAnIHx8IHNfYnVmW2xlbi0xXSA9PSBMJy4nKSkKICAgICAgICAgICAgIHNfYnVmWy0tbGVuXSA9IEwnXDAnOwotICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKHNfYnVmLCBsZW4pOworICAgICAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihzX2J1ZiwgbGVuKTsKICAgICB9CiAKICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQpAQCAtNDk2LDE1ICs1MzQsMjAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZpbGVuYW1lT2JqZWN0ICE9IE5VTEwpCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoaU9PKSIsIGVyciwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QpOwotICAgIGVsc2UKLSAgICAgICAgdiA9IFB5X0J1aWxkVmFsdWUoIihpTykiLCBlcnIsIG1lc3NhZ2UpOworICAgIGlmIChmaWxlbmFtZU9iamVjdCA9PSBOVUxMKQorICAgICAgICBmaWxlbmFtZU9iamVjdCA9IFB5X05vbmU7CisgICAgLyogVGhpcyBpcyB0aGUgY29uc3RydWN0b3Igc2lnbmF0dXJlIGZvciBwYXNzaW5nIGEgV2luZG93cyBlcnJvciBjb2RlLgorICAgICAgIFRoZSBQT1NJWCB0cmFuc2xhdGlvbiB3aWxsIGJlIGZpZ3VyZWQgb3V0IGJ5IHRoZSBjb25zdHJ1Y3Rvci4gKi8KKyAgICBhcmdzID0gUHlfQnVpbGRWYWx1ZSgiKGlPT2kpIiwgMCwgbWVzc2FnZSwgZmlsZW5hbWVPYmplY3QsIGVycik7CiAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogCi0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRPYmplY3QoZXhjLCB2KTsKLSAgICAgICAgUHlfREVDUkVGKHYpOworICAgIGlmIChhcmdzICE9IE5VTEwpIHsKKyAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGwoZXhjLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICBpZiAodiAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoKFB5T2JqZWN0ICopIFB5X1RZUEUodiksIHYpOworICAgICAgICAgICAgUHlfREVDUkVGKHYpOworICAgICAgICB9CiAgICAgfQogICAgIExvY2FsRnJlZShzX2J1Zik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01NzUsNiArNjE4LDQ5IEBACiB9CiAjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCitQeU9iamVjdCAqCitQeUVycl9TZXRJbXBvcnRFcnJvcihQeU9iamVjdCAqbXNnLCBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgpCit7CisgICAgUHlPYmplY3QgKmFyZ3MsICprd2FyZ3MsICplcnJvcjsKKworICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7CisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBrd2FyZ3MgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3YXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeworICAgICAgICBuYW1lID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAocGF0aCA9PSBOVUxMKSB7CisgICAgICAgIHBhdGggPSBQeV9Ob25lOworICAgIH0KKworICAgIFB5X0lOQ1JFRihtc2cpOworICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKKyAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSk7CisgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpOworCisgICAgZXJyb3IgPSBQeU9iamVjdF9DYWxsKFB5RXhjX0ltcG9ydEVycm9yLCBhcmdzLCBrd2FyZ3MpOworICAgIGlmIChlcnJvciAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKilQeV9UWVBFKGVycm9yKSwgZXJyb3IpOworICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOworICAgIH0KKworICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKworICAgIHJldHVybiBOVUxMOworfQorCiB2b2lkCiBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgbGluZW5vKQogewpAQCAtNjU2LDcgKzc0Miw3IEBACiAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KLSAgICAvKiBDcmVhdGUgYSByZWFsIG5ldy1zdHlsZSBjbGFzcy4gKi8KKyAgICAvKiBDcmVhdGUgYSByZWFsIGNsYXNzLiAqLwogICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikmUHlUeXBlX1R5cGUsICJzT08iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QrMSwgYmFzZXMsIGRpY3QpOwogICBmYWlsdXJlOgpAQCAtNzA3LDYgKzc5Myw3IEBACiB2b2lkCiBQeUVycl9Xcml0ZVVucmFpc2FibGUoUHlPYmplY3QgKm9iaikKIHsKKyAgICBfUHlfSURFTlRJRklFUihfX21vZHVsZV9fKTsKICAgICBQeU9iamVjdCAqZiwgKnQsICp2LCAqdGI7CiAgICAgUHlFcnJfRmV0Y2goJnQsICZ2LCAmdGIpOwogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwpAQCAtNzIzLDcgKzgxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSA9IGRvdCsxOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBtb2R1bGVOYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0LCAiX19tb2R1bGVfXyIpOworICAgICAgICAgICAgbW9kdWxlTmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodCwgJlB5SWRfX19tb2R1bGVfXyk7CiAgICAgICAgICAgICBpZiAobW9kdWxlTmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIFB5RmlsZV9Xcml0ZVN0cmluZygiPHVua25vd24+IiwgZik7CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTc3NCw2ICs4NjEsMTIgQEAKIFB5RXJyX1N5bnRheExvY2F0aW9uRXgoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogewogICAgIFB5T2JqZWN0ICpleGMsICp2LCAqdGIsICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5hbWUpOworICAgIF9QeV9JREVOVElGSUVSKGxpbmVubyk7CisgICAgX1B5X0lERU5USUZJRVIobXNnKTsKKyAgICBfUHlfSURFTlRJRklFUihvZmZzZXQpOworICAgIF9QeV9JREVOVElGSUVSKHByaW50X2ZpbGVfYW5kX2xpbmUpOworICAgIF9QeV9JREVOVElGSUVSKHRleHQpOwogCiAgICAgLyogYWRkIGF0dHJpYnV0ZXMgZm9yIHRoZSBsaW5lIG51bWJlciBhbmQgZmlsZW5hbWUgZm9yIHRoZSBlcnJvciAqLwogICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2LCAmdGIpOwpAQCAtNzg0LDcgKzg3Nyw3IEBACiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UgewotICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAibGluZW5vIiwgdG1wKSkKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfbGluZW5vLCB0bXApKQogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQpAQCAtNzkzLDcgKzg4Niw3IEBACiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgIm9mZnNldCIsIHRtcCkpCisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9vZmZzZXQsIHRtcCkpCiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgICAgICB9CkBAIC04MDMsMzUgKzg5NiwzNSBAQAogICAgICAgICBpZiAodG1wID09IE5VTEwpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJmaWxlbmFtZSIsIHRtcCkpCisgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9maWxlbmFtZSwgdG1wKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgIH0KIAogICAgICAgICB0bXAgPSBQeUVycl9Qcm9ncmFtVGV4dChmaWxlbmFtZSwgbGluZW5vKTsKICAgICAgICAgaWYgKHRtcCkgewotICAgICAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgInRleHQiLCB0bXApKQorICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfdGV4dCwgdG1wKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcodiwgIm9mZnNldCIsIFB5X05vbmUpKSB7CisgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQodiwgJlB5SWRfb2Zmc2V0LCBQeV9Ob25lKSkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KICAgICBpZiAoZXhjICE9IFB5RXhjX1N5bnRheEVycm9yKSB7Ci0gICAgICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh2LCAibXNnIikpIHsKKyAgICAgICAgaWYgKCFfUHlPYmplY3RfSGFzQXR0cklkKHYsICZQeUlkX21zZykpIHsKICAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X1N0cih2KTsKICAgICAgICAgICAgIGlmICh0bXApIHsKLSAgICAgICAgICAgICAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyh2LCAibXNnIiwgdG1wKSkKKyAgICAgICAgICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZCh2LCAmUHlJZF9tc2csIHRtcCkpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKHYsICJwcmludF9maWxlX2FuZF9saW5lIikpIHsKLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nKHYsICJwcmludF9maWxlX2FuZF9saW5lIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUpKQorICAgICAgICBpZiAoIV9QeU9iamVjdF9IYXNBdHRySWQodiwgJlB5SWRfcHJpbnRfZmlsZV9hbmRfbGluZSkpIHsKKyAgICAgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHYsICZQeUlkX3ByaW50X2ZpbGVfYW5kX2xpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lKSkKICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ZpbGV1dGlscy5jIGIvUHl0aG9uL2ZpbGV1dGlscy5jCmluZGV4IGM1NjNlYWEuLjUwMWNiOGMgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9maWxldXRpbHMuYworKysgYi9QeXRob24vZmlsZXV0aWxzLmMKQEAgLTMsNiArMyw0MCBAQAogIyAgaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX0xBTkdJTkZPX0gKKyNpbmNsdWRlIDxsYW5naW5mby5oPgorI2VuZGlmCisKK1B5T2JqZWN0ICoKK19QeV9kZXZpY2VfZW5jb2RpbmcoaW50IGZkKQoreworI2lmIGRlZmluZWQoTVNfV0lORE9XUykgfHwgZGVmaW5lZChNU19XSU42NCkKKyAgICBVSU5UIGNwOworI2VuZGlmCisgICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8ICFpc2F0dHkoZmQpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoTVNfV0lONjQpCisgICAgaWYgKGZkID09IDApCisgICAgICAgIGNwID0gR2V0Q29uc29sZUNQKCk7CisgICAgZWxzZSBpZiAoZmQgPT0gMSB8fCBmZCA9PSAyKQorICAgICAgICBjcCA9IEdldENvbnNvbGVPdXRwdXRDUCgpOworICAgIGVsc2UKKyAgICAgICAgY3AgPSAwOworICAgIC8qIEdldENvbnNvbGVDUCgpIGFuZCBHZXRDb25zb2xlT3V0cHV0Q1AoKSByZXR1cm4gMCBpZiB0aGUgYXBwbGljYXRpb24KKyAgICAgICBoYXMgbm8gY29uc29sZSAqLworICAgIGlmIChjcCAhPSAwKQorICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImNwJXUiLCAodW5zaWduZWQgaW50KWNwKTsKKyNlbGlmIGRlZmluZWQoQ09ERVNFVCkKKyAgICB7CisgICAgICAgIGNoYXIgKmNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKKyAgICAgICAgaWYgKGNvZGVzZXQgIT0gTlVMTCAmJiBjb2Rlc2V0WzBdICE9IDApCisgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoY29kZXNldCk7CisgICAgfQorI2VuZGlmCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKICNpZmRlZiBIQVZFX1NUQVQKIAogLyogRGVjb2RlIGEgYnl0ZSBzdHJpbmcgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nIHdpdGggdGhlCkBAIC0xNiw3ICs1MCw5IEBACiAgICBSZXR1cm4gYSBwb2ludGVyIHRvIGEgbmV3bHkgYWxsb2NhdGVkIHdpZGUgY2hhcmFjdGVyIHN0cmluZyAodXNlCiAgICBQeU1lbV9GcmVlKCkgdG8gZnJlZSB0aGUgbWVtb3J5KSBhbmQgd3JpdGUgdGhlIG51bWJlciBvZiB3cml0dGVuIHdpZGUKICAgIGNoYXJhY3RlcnMgZXhjbHVkaW5nIHRoZSBudWxsIGNoYXJhY3RlciBpbnRvICpzaXplIGlmIHNpemUgaXMgbm90IE5VTEwsIG9yCi0gICBOVUxMIG9uIGVycm9yIChjb252ZXJzaW9uIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yKS4KKyAgIE5VTEwgb24gZXJyb3IgKGRlY29kaW5nIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yKS4gSWYgc2l6ZSBpcyBub3QgTlVMTCwKKyAgICpzaXplIGlzIHNldCB0byAoc2l6ZV90KS0xIG9uIG1lbW9yeSBlcnJvciBhbmQgKHNpemVfdCktMiBvbiBkZWNvZGluZworICAgZXJyb3IuCiAKICAgIENvbnZlcnNpb24gZXJyb3JzIHNob3VsZCBuZXZlciBoYXBwZW4sIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgQwogICAgbGlicmFyeS4gKi8KQEAgLTgyLDggKzExOCw5IEBACiAgICAgICAgICAgICAgICBzaW5jZSB3ZSBwcm92aWRlIGV2ZXJ5dGhpbmcgdGhhdCB3ZSBoYXZlIC0KICAgICAgICAgICAgICAgIHVubGVzcyB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgQyBsaWJyYXJ5LCBvciBJCiAgICAgICAgICAgICAgICBtaXN1bmRlcnN0b29kIGhvdyBtYnJ0b3djIHdvcmtzLiAqLwotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmV4cGVjdGVkIG1icnRvd2MgcmVzdWx0IC0yXG4iKTsKICAgICAgICAgICAgIFB5TWVtX0ZyZWUocmVzKTsKKyAgICAgICAgICAgIGlmIChzaXplICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKnNpemUgPSAoc2l6ZV90KS0yOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGNvbnZlcnRlZCA9PSAoc2l6ZV90KS0xKSB7CkBAIC0xMTIsNyArMTQ5LDggQEAKICAgICAgICBpcyBBU0NJSSAoaS5lLiBlc2NhcGUgYWxsIGJ5dGVzID4gMTI4LiBUaGlzIHdpbGwgc3RpbGwgcm91bmR0cmlwCiAgICAgICAgY29ycmVjdGx5IGluIHRoZSBsb2NhbGUncyBjaGFyc2V0LCB3aGljaCBtdXN0IGJlIGFuIEFTQ0lJIHN1cGVyc2V0LiAqLwogICAgIHJlcyA9IFB5TWVtX01hbGxvYygoc3RybGVuKGFyZykrMSkqc2l6ZW9mKHdjaGFyX3QpKTsKLSAgICBpZiAoIXJlcykgZ290byBvb207CisgICAgaWYgKCFyZXMpCisgICAgICAgIGdvdG8gb29tOwogICAgIGluID0gKHVuc2lnbmVkIGNoYXIqKWFyZzsKICAgICBvdXQgPSByZXM7CiAgICAgd2hpbGUoKmluKQpAQCAtMTI2LDcgKzE2NCw4IEBACiAgICAgICAgICpzaXplID0gb3V0IC0gcmVzOwogICAgIHJldHVybiByZXM7CiBvb206Ci0gICAgZnByaW50ZihzdGRlcnIsICJvdXQgb2YgbWVtb3J5XG4iKTsKKyAgICBpZiAoc2l6ZSAhPSBOVUxMKQorICAgICAgICAqc2l6ZSA9IChzaXplX3QpLTE7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTEzNywxMCArMTc2LDEwIEBACiAgICBUaGlzIGZ1bmN0aW9uIGlzIHRoZSByZXZlcnNlIG9mIF9QeV9jaGFyMndjaGFyKCkuCiAKICAgIFJldHVybiBhIHBvaW50ZXIgdG8gYSBuZXdseSBhbGxvY2F0ZWQgYnl0ZSBzdHJpbmcgKHVzZSBQeU1lbV9GcmVlKCkgdG8gZnJlZQotICAgdGhlIG1lbW9yeSksIG9yIE5VTEwgb24gY29udmVyc2lvbiBvciBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvci4KKyAgIHRoZSBtZW1vcnkpLCBvciBOVUxMIG9uIGVuY29kaW5nIG9yIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yLgogCiAgICBJZiBlcnJvcl9wb3MgaXMgbm90IE5VTEw6ICplcnJvcl9wb3MgaXMgdGhlIGluZGV4IG9mIHRoZSBpbnZhbGlkIGNoYXJhY3RlcgotICAgb24gY29udmVyc2lvbiBlcnJvciwgb3IgKHNpemVfdCktMSBvdGhlcndpc2UuICovCisgICBvbiBlbmNvZGluZyBlcnJvciwgb3IgKHNpemVfdCktMSBvdGhlcndpc2UuICovCiBjaGFyKgogX1B5X3djaGFyMmNoYXIoY29uc3Qgd2NoYXJfdCAqdGV4dCwgc2l6ZV90ICplcnJvcl9wb3MpCiB7CkBAIC0yMzUsOCArMjc0LDggQEAKIC8qIENhbGwgX3dzdGF0KCkgb24gV2luZG93cywgb3IgZW5jb2RlIHRoZSBwYXRoIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIGFuZAogICAgY2FsbCBzdGF0KCkgb3RoZXJ3aXNlLiBPbmx5IGZpbGwgc3RfbW9kZSBhdHRyaWJ1dGUgb24gV2luZG93cy4KIAotICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gX3dzdGF0KCkgLyBzdGF0KCkgZXJyb3Igb3IgKGlmIFB5RXJyX09jY3VycmVkKCkpCi0gICB1bmljb2RlIGVycm9yLiAqLworICAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gX3dzdGF0KCkgLyBzdGF0KCkgZXJyb3IsIC0yIGlmIGFuIGV4Y2VwdGlvbiB3YXMKKyAgIHJhaXNlZC4gKi8KIAogaW50CiBfUHlfc3RhdChQeU9iamVjdCAqcGF0aCwgc3RydWN0IHN0YXQgKnN0YXRidWYpCkBAIC0yNDQsOCArMjgzLDEyIEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIGludCBlcnI7CiAgICAgc3RydWN0IF9zdGF0IHdzdGF0YnVmOworICAgIHdjaGFyX3QgKndwYXRoOwogCi0gICAgZXJyID0gX3dzdGF0KFB5VW5pY29kZV9BU19VTklDT0RFKHBhdGgpLCAmd3N0YXRidWYpOworICAgIHdwYXRoID0gUHlVbmljb2RlX0FzVW5pY29kZShwYXRoKTsKKyAgICBpZiAod3BhdGggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0yOworICAgIGVyciA9IF93c3RhdCh3cGF0aCwgJndzdGF0YnVmKTsKICAgICBpZiAoIWVycikKICAgICAgICAgc3RhdGJ1Zi0+c3RfbW9kZSA9IHdzdGF0YnVmLnN0X21vZGU7CiAgICAgcmV0dXJuIGVycjsKQEAgLTI1Myw3ICsyOTYsNyBAQAogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKmJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRoKTsKICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gLTI7CiAgICAgcmV0ID0gc3RhdChQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksIHN0YXRidWYpOwogICAgIFB5X0RFQ1JFRihieXRlcyk7CiAgICAgcmV0dXJuIHJldDsKQEAgLTI5NywxOCArMzQwLDI5IEBACiBfUHlfZm9wZW4oUHlPYmplY3QgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpCiB7CiAjaWZkZWYgTVNfV0lORE9XUworICAgIHdjaGFyX3QgKndwYXRoOwogICAgIHdjaGFyX3Qgd21vZGVbMTBdOwogICAgIGludCB1c2l6ZTsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAic3RyIGZpbGUgcGF0aCBleHBlY3RlZCB1bmRlciBXaW5kb3dzLCBnb3QgJVIiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShwYXRoKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICB3cGF0aCA9IFB5VW5pY29kZV9Bc1VuaWNvZGUocGF0aCk7CisgICAgaWYgKHdwYXRoID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCiAgICAgdXNpemUgPSBNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX0FDUCwgMCwgbW9kZSwgLTEsIHdtb2RlLCBzaXplb2Yod21vZGUpKTsKICAgICBpZiAodXNpemUgPT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gX3dmb3BlbihQeVVuaWNvZGVfQVNfVU5JQ09ERShwYXRoKSwgd21vZGUpOworICAgIHJldHVybiBfd2ZvcGVuKHdwYXRoLCB3bW9kZSk7CiAjZWxzZQogICAgIEZJTEUgKmY7Ci0gICAgUHlPYmplY3QgKmJ5dGVzID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRoKTsKLSAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKKyAgICBQeU9iamVjdCAqYnl0ZXM7CisgICAgaWYgKCFQeVVuaWNvZGVfRlNDb252ZXJ0ZXIocGF0aCwgJmJ5dGVzKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZiA9IGZvcGVuKFB5Qnl0ZXNfQVNfU1RSSU5HKGJ5dGVzKSwgbW9kZSk7CiAgICAgUHlfREVDUkVGKGJ5dGVzKTsKQEAgLTMxOSw3ICszNzMsNyBAQAogI2lmZGVmIEhBVkVfUkVBRExJTksKIAogLyogUmVhZCB2YWx1ZSBvZiBzeW1ib2xpYyBsaW5rLiBFbmNvZGUgdGhlIHBhdGggdG8gdGhlIGxvY2FsZSBlbmNvZGluZywgZGVjb2RlCi0gICB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKyAgIHRoZSByZXN1bHQgZnJvbSB0aGUgbG9jYWxlIGVuY29kaW5nLiBSZXR1cm4gLTEgb24gZXJyb3IuICovCiAKIGludAogX1B5X3dyZWFkbGluayhjb25zdCB3Y2hhcl90ICpwYXRoLCB3Y2hhcl90ICpidWYsIHNpemVfdCBidWZzaXopCkBAIC0zNjMsNyArNDE3LDggQEAKICNpZmRlZiBIQVZFX1JFQUxQQVRICiAKIC8qIFJldHVybiB0aGUgY2Fub25pY2FsaXplZCBhYnNvbHV0ZSBwYXRobmFtZS4gRW5jb2RlIHBhdGggdG8gdGhlIGxvY2FsZQotICAgZW5jb2RpbmcsIGRlY29kZSB0aGUgcmVzdWx0IGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKyAgIGVuY29kaW5nLCBkZWNvZGUgdGhlIHJlc3VsdCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuCisgICBSZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KIAogd2NoYXJfdCoKIF9QeV93cmVhbHBhdGgoY29uc3Qgd2NoYXJfdCAqcGF0aCwKQEAgLTQwMSw3ICs0NTYsOCBAQAogI2VuZGlmCiAKIC8qIEdldCB0aGUgY3VycmVudCBkaXJlY3RvcnkuIHNpemUgaXMgdGhlIGJ1ZmZlciBzaXplIGluIHdpZGUgY2hhcmFjdGVycwotICAgaW5jbHVkaW5nIHRoZSBudWxsIGNoYXJhY3Rlci4gRGVjb2RlIHRoZSBwYXRoIGZyb20gdGhlIGxvY2FsZSBlbmNvZGluZy4gKi8KKyAgIGluY2x1ZGluZyB0aGUgbnVsbCBjaGFyYWN0ZXIuIERlY29kZSB0aGUgcGF0aCBmcm9tIHRoZSBsb2NhbGUgZW5jb2RpbmcuCisgICBSZXR1cm4gTlVMTCBvbiBlcnJvci4gKi8KIAogd2NoYXJfdCoKIF9QeV93Z2V0Y3dkKHdjaGFyX3QgKmJ1Ziwgc2l6ZV90IHNpemUpCmRpZmYgLS1naXQgYS9QeXRob24vZm9ybWF0dGVyX3VuaWNvZGUuYyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCmluZGV4IGMzNTA5MDcuLmFhNjI1MDIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCisrKyBiL1B5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5jCkBAIC0zLDEyICszLDE1MzQgQEAKICAgIG9mIGludC5fX2Zsb2F0X18sIGV0Yy4sIHRoYXQgdGFrZSBhbmQgcmV0dXJuIHVuaWNvZGUgb2JqZWN0cyAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCi0jaW5jbHVkZSAiLi4vT2JqZWN0cy9zdHJpbmdsaWIvdW5pY29kZWRlZnMuaCIKKyNpbmNsdWRlIDxsb2NhbGUuaD4KKworLyogUmFpc2VzIGFuIGV4Y2VwdGlvbiBhYm91dCBhbiB1bmtub3duIHByZXNlbnRhdGlvbiB0eXBlIGZvciB0aGlzCisgKiB0eXBlLiAqLworCitzdGF0aWMgdm9pZAordW5rbm93bl9wcmVzZW50YXRpb25fdHlwZShQeV9VQ1M0IHByZXNlbnRhdGlvbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0eXBlX25hbWUpCit7CisgICAgLyogJWMgbWlnaHQgYmUgb3V0LW9mLXJhbmdlLCBoZW5jZSB0aGUgdHdvIGNhc2VzLiAqLworICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIGZvcm1hdCBjb2RlICclYycgIgorICAgICAgICAgICAgICAgICAgICAgImZvciBvYmplY3Qgb2YgdHlwZSAnJS4yMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIHR5cGVfbmFtZSk7CisgICAgZWxzZQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIGZvcm1hdCBjb2RlICdcXHgleCcgIgorICAgICAgICAgICAgICAgICAgICAgImZvciBvYmplY3Qgb2YgdHlwZSAnJS4yMDBzJyIsCisgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgdHlwZV9uYW1lKTsKK30KKworc3RhdGljIHZvaWQKK2ludmFsaWRfY29tbWFfdHlwZShQeV9VQ1M0IHByZXNlbnRhdGlvbl90eXBlKQoreworICAgIGlmIChwcmVzZW50YXRpb25fdHlwZSA+IDMyICYmIHByZXNlbnRhdGlvbl90eXBlIDwgMTI4KQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnJWMnLiIsCisgICAgICAgICAgICAgICAgICAgICAoY2hhcilwcmVzZW50YXRpb25fdHlwZSk7CisgICAgZWxzZQorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJDYW5ub3Qgc3BlY2lmeSAnLCcgd2l0aCAnXFx4JXgnLiIsCisgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgaW50KXByZXNlbnRhdGlvbl90eXBlKTsKK30KKworLyoKKyAgICBnZXRfaW50ZWdlciBjb25zdW1lcyAwIG9yIG1vcmUgZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXJzIGZyb20gYW4KKyAgICBpbnB1dCBzdHJpbmcsIHVwZGF0ZXMgKnJlc3VsdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aXZlCisgICAgaW50ZWdlciwgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBkaWdpdHMgY29uc3VtZWQuCisKKyAgICByZXR1cm5zIC0xIG9uIGVycm9yLgorKi8KK3N0YXRpYyBpbnQKK2dldF9pbnRlZ2VyKFB5T2JqZWN0ICpzdHIsIFB5X3NzaXplX3QgKnBvcywgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpyZXN1bHQpCit7CisgICAgUHlfc3NpemVfdCBhY2N1bXVsYXRvciwgZGlnaXR2YWw7CisgICAgaW50IG51bWRpZ2l0czsKKyAgICBhY2N1bXVsYXRvciA9IG51bWRpZ2l0cyA9IDA7CisgICAgZm9yICg7OygqcG9zKSsrLCBudW1kaWdpdHMrKykgeworICAgICAgICBpZiAoKnBvcyA+PSBlbmQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGlnaXR2YWwgPSBQeV9VTklDT0RFX1RPREVDSU1BTChQeVVuaWNvZGVfUkVBRF9DSEFSKHN0ciwgKnBvcykpOworICAgICAgICBpZiAoZGlnaXR2YWwgPCAwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8qCisgICAgICAgICAgIERldGVjdCBwb3NzaWJsZSBvdmVyZmxvdyBiZWZvcmUgaXQgaGFwcGVuczoKKworICAgICAgICAgICAgICBhY2N1bXVsYXRvciAqIDEwICsgZGlnaXR2YWwgPiBQWV9TU0laRV9UX01BWCBpZiBhbmQgb25seSBpZgorICAgICAgICAgICAgICBhY2N1bXVsYXRvciA+IChQWV9TU0laRV9UX01BWCAtIGRpZ2l0dmFsKSAvIDEwLgorICAgICAgICAqLworICAgICAgICBpZiAoYWNjdW11bGF0b3IgPiAoUFlfU1NJWkVfVF9NQVggLSBkaWdpdHZhbCkgLyAxMCkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBtYW55IGRlY2ltYWwgZGlnaXRzIGluIGZvcm1hdCBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBhY2N1bXVsYXRvciA9IGFjY3VtdWxhdG9yICogMTAgKyBkaWdpdHZhbDsKKyAgICB9CisgICAgKnJlc3VsdCA9IGFjY3VtdWxhdG9yOworICAgIHJldHVybiBudW1kaWdpdHM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKiogc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciBwYXJzaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyogcmV0dXJucyB0cnVlIGlmIHRoaXMgY2hhcmFjdGVyIGlzIGEgc3BlY2lmaWVyIGFsaWdubWVudCB0b2tlbiAqLworUHlfTE9DQUxfSU5MSU5FKGludCkKK2lzX2FsaWdubWVudF90b2tlbihQeV9VQ1M0IGMpCit7CisgICAgc3dpdGNoIChjKSB7CisgICAgY2FzZSAnPCc6IGNhc2UgJz4nOiBjYXNlICc9JzogY2FzZSAnXic6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworLyogcmV0dXJucyB0cnVlIGlmIHRoaXMgY2hhcmFjdGVyIGlzIGEgc2lnbiBlbGVtZW50ICovCitQeV9MT0NBTF9JTkxJTkUoaW50KQoraXNfc2lnbl9lbGVtZW50KFB5X1VDUzQgYykKK3sKKyAgICBzd2l0Y2ggKGMpIHsKKyAgICBjYXNlICcgJzogY2FzZSAnKyc6IGNhc2UgJy0nOgorICAgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CiAKIAotI2RlZmluZSBGT1JNQVRfU1RSSU5HICBfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkCi0jZGVmaW5lIEZPUk1BVF9MT05HICAgIF9QeUxvbmdfRm9ybWF0QWR2YW5jZWQKLSNkZWZpbmUgRk9STUFUX0ZMT0FUICAgX1B5RmxvYXRfRm9ybWF0QWR2YW5jZWQKLSNkZWZpbmUgRk9STUFUX0NPTVBMRVggX1B5Q29tcGxleF9Gb3JtYXRBZHZhbmNlZAordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5X1VDUzQgZmlsbF9jaGFyOworICAgIFB5X1VDUzQgYWxpZ247CisgICAgaW50IGFsdGVybmF0ZTsKKyAgICBQeV9VQ1M0IHNpZ247CisgICAgUHlfc3NpemVfdCB3aWR0aDsKKyAgICBpbnQgdGhvdXNhbmRzX3NlcGFyYXRvcnM7CisgICAgUHlfc3NpemVfdCBwcmVjaXNpb247CisgICAgUHlfVUNTNCB0eXBlOworfSBJbnRlcm5hbEZvcm1hdFNwZWM7CiAKLSNpbmNsdWRlICIuLi9PYmplY3RzL3N0cmluZ2xpYi9mb3JtYXR0ZXIuaCIKKyNpZiAwCisvKiBPY2Nhc3Npb25hbGx5IHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBTaG91bGQgbm9ybWFsbHkgYmUgY29tbWVudGVkIG91dC4gKi8KK3N0YXRpYyB2b2lkCitERUJVR19QUklOVF9GT1JNQVRfU1BFQyhJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCkKK3sKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBmaWxsX2NoYXIgJWRcbiIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBhbGlnbiAlZFxuIiwgZm9ybWF0LT5hbGlnbik7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogYWx0ZXJuYXRlICVkXG4iLCBmb3JtYXQtPmFsdGVybmF0ZSk7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogc2lnbiAlZFxuIiwgZm9ybWF0LT5zaWduKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiB3aWR0aCAlemRcbiIsIGZvcm1hdC0+d2lkdGgpOworICAgIHByaW50ZigiaW50ZXJuYWwgZm9ybWF0IHNwZWM6IHRob3VzYW5kc19zZXBhcmF0b3JzICVkXG4iLAorICAgICAgICAgICBmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKTsKKyAgICBwcmludGYoImludGVybmFsIGZvcm1hdCBzcGVjOiBwcmVjaXNpb24gJXpkXG4iLCBmb3JtYXQtPnByZWNpc2lvbik7CisgICAgcHJpbnRmKCJpbnRlcm5hbCBmb3JtYXQgc3BlYzogdHlwZSAlY1xuIiwgZm9ybWF0LT50eXBlKTsKKyAgICBwcmludGYoIlxuIik7Cit9CisjZW5kaWYKKworCisvKgorICBwdHIgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiB0aGUgZm9ybWF0X3NwZWMsIGVuZCBwb2ludHMganVzdCBwYXN0IGl0cyBlbmQuCisgIGZpbGxzIGluIGZvcm1hdCB3aXRoIHRoZSBwYXJzZWQgaW5mb3JtYXRpb24uCisgIHJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uIGZhaWx1cmUuCisgIGlmIGZhaWx1cmUsIHNldHMgdGhlIGV4Y2VwdGlvbgorKi8KK3N0YXRpYyBpbnQKK3BhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgUHlfc3NpemVfdCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBkZWZhdWx0X2FsaWduKQoreworICAgIFB5X3NzaXplX3QgcG9zID0gc3RhcnQ7CisgICAgLyogZW5kLXBvcyBpcyB1c2VkIHRocm91Z2hvdXQgdGhpcyBjb2RlIHRvIHNwZWNpZnkgdGhlIGxlbmd0aCBvZgorICAgICAgIHRoZSBpbnB1dCBzdHJpbmcgKi8KKyNkZWZpbmUgUkVBRF9zcGVjKGluZGV4KSBQeVVuaWNvZGVfUkVBRF9DSEFSKGZvcm1hdF9zcGVjLCBpbmRleCkKKworICAgIFB5X3NzaXplX3QgY29uc3VtZWQ7CisgICAgaW50IGFsaWduX3NwZWNpZmllZCA9IDA7CisKKyAgICBmb3JtYXQtPmZpbGxfY2hhciA9ICdcMCc7CisgICAgZm9ybWF0LT5hbGlnbiA9IGRlZmF1bHRfYWxpZ247CisgICAgZm9ybWF0LT5hbHRlcm5hdGUgPSAwOworICAgIGZvcm1hdC0+c2lnbiA9ICdcMCc7CisgICAgZm9ybWF0LT53aWR0aCA9IC0xOworICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAwOworICAgIGZvcm1hdC0+cHJlY2lzaW9uID0gLTE7CisgICAgZm9ybWF0LT50eXBlID0gZGVmYXVsdF90eXBlOworCisgICAgLyogSWYgdGhlIHNlY29uZCBjaGFyIGlzIGFuIGFsaWdubWVudCB0b2tlbiwKKyAgICAgICB0aGVuIHBhcnNlIHRoZSBmaWxsIGNoYXIgKi8KKyAgICBpZiAoZW5kLXBvcyA+PSAyICYmIGlzX2FsaWdubWVudF90b2tlbihSRUFEX3NwZWMocG9zKzEpKSkgeworICAgICAgICBmb3JtYXQtPmFsaWduID0gUkVBRF9zcGVjKHBvcysxKTsKKyAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPSBSRUFEX3NwZWMocG9zKTsKKyAgICAgICAgYWxpZ25fc3BlY2lmaWVkID0gMTsKKyAgICAgICAgcG9zICs9IDI7CisgICAgfQorICAgIGVsc2UgaWYgKGVuZC1wb3MgPj0gMSAmJiBpc19hbGlnbm1lbnRfdG9rZW4oUkVBRF9zcGVjKHBvcykpKSB7CisgICAgICAgIGZvcm1hdC0+YWxpZ24gPSBSRUFEX3NwZWMocG9zKTsKKyAgICAgICAgYWxpZ25fc3BlY2lmaWVkID0gMTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogUGFyc2UgdGhlIHZhcmlvdXMgc2lnbiBvcHRpb25zICovCisgICAgaWYgKGVuZC1wb3MgPj0gMSAmJiBpc19zaWduX2VsZW1lbnQoUkVBRF9zcGVjKHBvcykpKSB7CisgICAgICAgIGZvcm1hdC0+c2lnbiA9IFJFQURfc3BlYyhwb3MpOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBJZiB0aGUgbmV4dCBjaGFyYWN0ZXIgaXMgIywgd2UncmUgaW4gYWx0ZXJuYXRlIG1vZGUuICBUaGlzIG9ubHkKKyAgICAgICBhcHBsaWVzIHRvIGludGVnZXJzLiAqLworICAgIGlmIChlbmQtcG9zID49IDEgJiYgUkVBRF9zcGVjKHBvcykgPT0gJyMnKSB7CisgICAgICAgIGZvcm1hdC0+YWx0ZXJuYXRlID0gMTsKKyAgICAgICAgKytwb3M7CisgICAgfQorCisgICAgLyogVGhlIHNwZWNpYWwgY2FzZSBmb3IgMC1wYWRkaW5nIChiYWNrd2FyZHMgY29tcGF0KSAqLworICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnICYmIGVuZC1wb3MgPj0gMSAmJiBSRUFEX3NwZWMocG9zKSA9PSAnMCcpIHsKKyAgICAgICAgZm9ybWF0LT5maWxsX2NoYXIgPSAnMCc7CisgICAgICAgIGlmICghYWxpZ25fc3BlY2lmaWVkKSB7CisgICAgICAgICAgICBmb3JtYXQtPmFsaWduID0gJz0nOworICAgICAgICB9CisgICAgICAgICsrcG9zOworICAgIH0KKworICAgIGNvbnN1bWVkID0gZ2V0X2ludGVnZXIoZm9ybWF0X3NwZWMsICZwb3MsIGVuZCwgJmZvcm1hdC0+d2lkdGgpOworICAgIGlmIChjb25zdW1lZCA9PSAtMSkKKyAgICAgICAgLyogT3ZlcmZsb3cgZXJyb3IuIEV4Y2VwdGlvbiBhbHJlYWR5IHNldC4gKi8KKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBJZiBjb25zdW1lZCBpcyAwLCB3ZSBkaWRuJ3QgY29uc3VtZSBhbnkgY2hhcmFjdGVycyBmb3IgdGhlCisgICAgICAgd2lkdGguIEluIHRoYXQgY2FzZSwgcmVzZXQgdGhlIHdpZHRoIHRvIC0xLCBiZWNhdXNlCisgICAgICAgZ2V0X2ludGVnZXIoKSB3aWxsIGhhdmUgc2V0IGl0IHRvIHplcm8uIC0xIGlzIGhvdyB3ZSByZWNvcmQKKyAgICAgICB0aGF0IHRoZSB3aWR0aCB3YXNuJ3Qgc3BlY2lmaWVkLiAqLworICAgIGlmIChjb25zdW1lZCA9PSAwKQorICAgICAgICBmb3JtYXQtPndpZHRoID0gLTE7CisKKyAgICAvKiBDb21tYSBzaWduaWZpZXMgYWRkIHRob3VzYW5kcyBzZXBhcmF0b3JzICovCisgICAgaWYgKGVuZC1wb3MgJiYgUkVBRF9zcGVjKHBvcykgPT0gJywnKSB7CisgICAgICAgIGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPSAxOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBQYXJzZSBmaWVsZCBwcmVjaXNpb24gKi8KKyAgICBpZiAoZW5kLXBvcyAmJiBSRUFEX3NwZWMocG9zKSA9PSAnLicpIHsKKyAgICAgICAgKytwb3M7CisKKyAgICAgICAgY29uc3VtZWQgPSBnZXRfaW50ZWdlcihmb3JtYXRfc3BlYywgJnBvcywgZW5kLCAmZm9ybWF0LT5wcmVjaXNpb24pOworICAgICAgICBpZiAoY29uc3VtZWQgPT0gLTEpCisgICAgICAgICAgICAvKiBPdmVyZmxvdyBlcnJvci4gRXhjZXB0aW9uIGFscmVhZHkgc2V0LiAqLworICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgLyogTm90IGhhdmluZyBhIHByZWNpc2lvbiBhZnRlciBhIGRvdCBpcyBhbiBlcnJvci4gKi8KKyAgICAgICAgaWYgKGNvbnN1bWVkID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGb3JtYXQgc3BlY2lmaWVyIG1pc3NpbmcgcHJlY2lzaW9uIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgLyogRmluYWxseSwgcGFyc2UgdGhlIHR5cGUgZmllbGQuICovCisKKyAgICBpZiAoZW5kLXBvcyA+IDEpIHsKKyAgICAgICAgLyogTW9yZSB0aGFuIG9uZSBjaGFyIHJlbWFpbiwgaW52YWxpZCBmb3JtYXQgc3BlY2lmaWVyLiAqLworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIkludmFsaWQgZm9ybWF0IHNwZWNpZmllciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoZW5kLXBvcyA9PSAxKSB7CisgICAgICAgIGZvcm1hdC0+dHlwZSA9IFJFQURfc3BlYyhwb3MpOworICAgICAgICArK3BvczsKKyAgICB9CisKKyAgICAvKiBEbyBhcyBtdWNoIHZhbGlkYXRpbmcgYXMgd2UgY2FuLCBqdXN0IGJ5IGxvb2tpbmcgYXQgdGhlIGZvcm1hdAorICAgICAgIHNwZWNpZmllci4gIERvIG5vdCB0YWtlIGludG8gYWNjb3VudCB3aGF0IHR5cGUgb2YgZm9ybWF0dGluZworICAgICAgIHdlJ3JlIGRvaW5nIChpbnQsIGZsb2F0LCBzdHJpbmcpLiAqLworCisgICAgaWYgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMpIHsKKyAgICAgICAgc3dpdGNoIChmb3JtYXQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgIGNhc2UgJ2UnOgorICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgY2FzZSAnZyc6CisgICAgICAgIGNhc2UgJ0UnOgorICAgICAgICBjYXNlICdHJzoKKyAgICAgICAgY2FzZSAnJSc6CisgICAgICAgIGNhc2UgJ0YnOgorICAgICAgICBjYXNlICdcMCc6CisgICAgICAgICAgICAvKiBUaGVzZSBhcmUgYWxsb3dlZC4gU2VlIFBFUCAzNzguKi8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaW52YWxpZF9jb21tYV90eXBlKGZvcm1hdC0+dHlwZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGFzc2VydCAoZm9ybWF0LT5hbGlnbiA8PSAxMjcpOworICAgIGFzc2VydCAoZm9ybWF0LT5zaWduIDw9IDEyNyk7CisgICAgcmV0dXJuIDE7Cit9CisKKy8qIENhbGN1bGF0ZSB0aGUgcGFkZGluZyBuZWVkZWQuICovCitzdGF0aWMgdm9pZAorY2FsY19wYWRkaW5nKFB5X3NzaXplX3QgbmNoYXJzLCBQeV9zc2l6ZV90IHdpZHRoLCBQeV9VQ1M0IGFsaWduLAorICAgICAgICAgICAgIFB5X3NzaXplX3QgKm5fbHBhZGRpbmcsIFB5X3NzaXplX3QgKm5fcnBhZGRpbmcsCisgICAgICAgICAgICAgUHlfc3NpemVfdCAqbl90b3RhbCkKK3sKKyAgICBpZiAod2lkdGggPj0gMCkgeworICAgICAgICBpZiAobmNoYXJzID4gd2lkdGgpCisgICAgICAgICAgICAqbl90b3RhbCA9IG5jaGFyczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKm5fdG90YWwgPSB3aWR0aDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIG5vdCBzcGVjaWZpZWQsIHVzZSBhbGwgb2YgdGhlIGNoYXJzIGFuZCBubyBtb3JlICovCisgICAgICAgICpuX3RvdGFsID0gbmNoYXJzOworICAgIH0KKworICAgIC8qIEZpZ3VyZSBvdXQgaG93IG11Y2ggbGVhZGluZyBzcGFjZSB3ZSBuZWVkLCBiYXNlZCBvbiB0aGUKKyAgICAgICBhbGlnbmluZyAqLworICAgIGlmIChhbGlnbiA9PSAnPicpCisgICAgICAgICpuX2xwYWRkaW5nID0gKm5fdG90YWwgLSBuY2hhcnM7CisgICAgZWxzZSBpZiAoYWxpZ24gPT0gJ14nKQorICAgICAgICAqbl9scGFkZGluZyA9ICgqbl90b3RhbCAtIG5jaGFycykgLyAyOworICAgIGVsc2UgaWYgKGFsaWduID09ICc8JyB8fCBhbGlnbiA9PSAnPScpCisgICAgICAgICpuX2xwYWRkaW5nID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgLyogV2Ugc2hvdWxkIG5ldmVyIGhhdmUgYW4gdW5zcGVjaWZpZWQgYWxpZ25tZW50LiAqLworICAgICAgICAqbl9scGFkZGluZyA9IDA7CisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CisKKyAgICAqbl9ycGFkZGluZyA9ICpuX3RvdGFsIC0gbmNoYXJzIC0gKm5fbHBhZGRpbmc7Cit9CisKKy8qIERvIHRoZSBwYWRkaW5nLCBhbmQgcmV0dXJuIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgY2FsbGVyLXN1cHBsaWVkCisgICBjb250ZW50IGdvZXMuICovCitzdGF0aWMgUHlfc3NpemVfdAorZmlsbF9wYWRkaW5nKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICBQeV9zc2l6ZV90IG5jaGFycywKKyAgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhciwgUHlfc3NpemVfdCBuX2xwYWRkaW5nLAorICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9ycGFkZGluZykKK3sKKyAgICBQeV9zc2l6ZV90IHBvczsKKworICAgIC8qIFBhZCBvbiBsZWZ0LiAqLworICAgIGlmIChuX2xwYWRkaW5nKSB7CisgICAgICAgIHBvcyA9IHdyaXRlci0+cG9zOworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLCBwb3MsIG5fbHBhZGRpbmcsIGZpbGxfY2hhcik7CisgICAgfQorCisgICAgLyogUGFkIG9uIHJpZ2h0LiAqLworICAgIGlmIChuX3JwYWRkaW5nKSB7CisgICAgICAgIHBvcyA9IHdyaXRlci0+cG9zICsgbmNoYXJzICsgbl9scGFkZGluZzsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0RmlsbCh3cml0ZXItPmJ1ZmZlciwgcG9zLCBuX3JwYWRkaW5nLCBmaWxsX2NoYXIpOworICAgIH0KKworICAgIC8qIFBvaW50ZXIgdG8gdGhlIHVzZXIgY29udGVudC4gKi8KKyAgICB3cml0ZXItPnBvcyArPSBuX2xwYWRkaW5nOworICAgIHJldHVybiAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGNvbW1vbiByb3V0aW5lcyBmb3IgbnVtZXJpYyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIExvY2FsZSB0eXBlIGNvZGVzLiAqLworI2RlZmluZSBMVF9DVVJSRU5UX0xPQ0FMRSAwCisjZGVmaW5lIExUX0RFRkFVTFRfTE9DQUxFIDEKKyNkZWZpbmUgTFRfTk9fTE9DQUxFIDIKKworLyogTG9jYWxlIGluZm8gbmVlZGVkIGZvciBmb3JtYXR0aW5nIGludGVnZXJzIGFuZCB0aGUgcGFydCBvZiBmbG9hdHMKKyAgIGJlZm9yZSBhbmQgaW5jbHVkaW5nIHRoZSBkZWNpbWFsLiBOb3RlIHRoYXQgbG9jYWxlcyBvbmx5IHN1cHBvcnQKKyAgIDgtYml0IGNoYXJzLCBub3QgdW5pY29kZS4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdCAqZGVjaW1hbF9wb2ludDsKKyAgICBQeU9iamVjdCAqdGhvdXNhbmRzX3NlcDsKKyAgICBjb25zdCBjaGFyICpncm91cGluZzsKK30gTG9jYWxlSW5mbzsKKworI2RlZmluZSBTVEFUSUNfTE9DQUxFX0lORk9fSU5JVCB7MCwgMCwgMH0KKworLyogZGVzY3JpYmVzIHRoZSBsYXlvdXQgZm9yIGFuIGludGVnZXIsIHNlZSB0aGUgY29tbWVudCBpbgorICAgY2FsY19udW1iZXJfd2lkdGhzKCkgZm9yIGRldGFpbHMgKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeV9zc2l6ZV90IG5fbHBhZGRpbmc7CisgICAgUHlfc3NpemVfdCBuX3ByZWZpeDsKKyAgICBQeV9zc2l6ZV90IG5fc3BhZGRpbmc7CisgICAgUHlfc3NpemVfdCBuX3JwYWRkaW5nOworICAgIGNoYXIgc2lnbjsKKyAgICBQeV9zc2l6ZV90IG5fc2lnbjsgICAgICAvKiBudW1iZXIgb2YgZGlnaXRzIG5lZWRlZCBmb3Igc2lnbiAoMC8xKSAqLworICAgIFB5X3NzaXplX3Qgbl9ncm91cGVkX2RpZ2l0czsgLyogU3BhY2UgdGFrZW4gdXAgYnkgdGhlIGRpZ2l0cywgaW5jbHVkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnkgZ3JvdXBpbmcgY2hhcnMuICovCisgICAgUHlfc3NpemVfdCBuX2RlY2ltYWw7ICAgLyogMCBpZiBvbmx5IGFuIGludGVnZXIgKi8KKyAgICBQeV9zc2l6ZV90IG5fcmVtYWluZGVyOyAvKiBEaWdpdHMgaW4gZGVjaW1hbCBhbmQvb3IgZXhwb25lbnQgcGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRpbmcgdGhlIGRlY2ltYWwgaXRzZWxmLCBpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXNlbnQuICovCisKKyAgICAvKiBUaGVzZSAyIGFyZSBub3QgdGhlIHdpZHRocyBvZiBmaWVsZHMsIGJ1dCBhcmUgbmVlZGVkIGJ5CisgICAgICAgU1RSSU5HTElCX0dST1VQSU5HLiAqLworICAgIFB5X3NzaXplX3Qgbl9kaWdpdHM7ICAgIC8qIFRoZSBudW1iZXIgb2YgZGlnaXRzIGJlZm9yZSBhIGRlY2ltYWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBleHBvbmVudC4gKi8KKyAgICBQeV9zc2l6ZV90IG5fbWluX3dpZHRoOyAvKiBUaGUgbWluX3dpZHRoIHdlIHVzZWQgd2hlbiB3ZSBjb21wdXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuX2dyb3VwZWRfZGlnaXRzIHdpZHRoLiAqLworfSBOdW1iZXJGaWVsZFdpZHRoczsKKworCisvKiBHaXZlbiBhIG51bWJlciBvZiB0aGUgZm9ybToKKyAgIGRpZ2l0c1tyZW1haW5kZXJdCisgICB3aGVyZSBwdHIgcG9pbnRzIHRvIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50cyB0byB0aGUgZW5kLCBmaW5kIHdoZXJlCisgICAgdGhlIGludGVnZXIgcGFydCBlbmRzLiBUaGlzIGNvdWxkIGJlIGEgZGVjaW1hbCwgYW4gZXhwb25lbnQsIGJvdGgsCisgICAgb3IgbmVpdGhlci4KKyAgIElmIGEgZGVjaW1hbCBwb2ludCBpcyBwcmVzZW50LCBzZXQgKmhhc19kZWNpbWFsIGFuZCBpbmNyZW1lbnQKKyAgICByZW1haW5kZXIgYmV5b25kIGl0LgorICAgUmVzdWx0cyBhcmUgdW5kZWZpbmVkIChidXQgc2hvdWxkbid0IGNyYXNoKSBmb3IgaW1wcm9wZXJseQorICAgIGZvcm1hdHRlZCBzdHJpbmdzLgorKi8KK3N0YXRpYyB2b2lkCitwYXJzZV9udW1iZXIoUHlPYmplY3QgKnMsIFB5X3NzaXplX3QgcG9zLCBQeV9zc2l6ZV90IGVuZCwKKyAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuX3JlbWFpbmRlciwgaW50ICpoYXNfZGVjaW1hbCkKK3sKKyAgICBQeV9zc2l6ZV90IHJlbWFpbmRlcjsKKworICAgIHdoaWxlIChwb3M8ZW5kICYmIGlzZGlnaXQoUHlVbmljb2RlX1JFQURfQ0hBUihzLCBwb3MpKSkKKyAgICAgICAgKytwb3M7CisgICAgcmVtYWluZGVyID0gcG9zOworCisgICAgLyogRG9lcyByZW1haW5kZXIgc3RhcnQgd2l0aCBhIGRlY2ltYWwgcG9pbnQ/ICovCisgICAgKmhhc19kZWNpbWFsID0gcG9zPGVuZCAmJiBQeVVuaWNvZGVfUkVBRF9DSEFSKHMsIHJlbWFpbmRlcikgPT0gJy4nOworCisgICAgLyogU2tpcCB0aGUgZGVjaW1hbCBwb2ludC4gKi8KKyAgICBpZiAoKmhhc19kZWNpbWFsKQorICAgICAgICByZW1haW5kZXIrKzsKKworICAgICpuX3JlbWFpbmRlciA9IGVuZCAtIHJlbWFpbmRlcjsKK30KKworLyogbm90IGFsbCBmaWVsZHMgb2YgZm9ybWF0IGFyZSB1c2VkLiAgZm9yIGV4YW1wbGUsIHByZWNpc2lvbiBpcworICAgdW51c2VkLiAgc2hvdWxkIHRoaXMgdGFrZSBkaXNjcmV0ZSBwYXJhbXMgaW4gb3JkZXIgdG8gYmUgbW9yZSBjbGVhcgorICAgYWJvdXQgd2hhdCBpdCBkb2VzPyAgb3IgaXMgcGFzc2luZyBhIHNpbmdsZSBmb3JtYXQgcGFyYW1ldGVyIGVhc2llcgorICAgYW5kIG1vcmUgZWZmaWNpZW50IGVub3VnaCB0byBqdXN0aWZ5IGEgbGl0dGxlIG9iZnVzY2F0aW9uPyAqLworc3RhdGljIFB5X3NzaXplX3QKK2NhbGNfbnVtYmVyX3dpZHRocyhOdW1iZXJGaWVsZFdpZHRocyAqc3BlYywgUHlfc3NpemVfdCBuX3ByZWZpeCwKKyAgICAgICAgICAgICAgICAgICBQeV9VQ1M0IHNpZ25fY2hhciwgUHlPYmplY3QgKm51bWJlciwgUHlfc3NpemVfdCBuX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgbl9lbmQsIFB5X3NzaXplX3Qgbl9yZW1haW5kZXIsCisgICAgICAgICAgICAgICAgICAgaW50IGhhc19kZWNpbWFsLCBjb25zdCBMb2NhbGVJbmZvICpsb2NhbGUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXRTcGVjICpmb3JtYXQsIFB5X1VDUzQgKm1heGNoYXIpCit7CisgICAgUHlfc3NpemVfdCBuX25vbl9kaWdpdF9ub25fcGFkZGluZzsKKyAgICBQeV9zc2l6ZV90IG5fcGFkZGluZzsKKworICAgIHNwZWMtPm5fZGlnaXRzID0gbl9lbmQgLSBuX3N0YXJ0IC0gbl9yZW1haW5kZXIgLSAoaGFzX2RlY2ltYWw/MTowKTsKKyAgICBzcGVjLT5uX2xwYWRkaW5nID0gMDsKKyAgICBzcGVjLT5uX3ByZWZpeCA9IG5fcHJlZml4OworICAgIHNwZWMtPm5fZGVjaW1hbCA9IGhhc19kZWNpbWFsID8gUHlVbmljb2RlX0dFVF9MRU5HVEgobG9jYWxlLT5kZWNpbWFsX3BvaW50KSA6IDA7CisgICAgc3BlYy0+bl9yZW1haW5kZXIgPSBuX3JlbWFpbmRlcjsKKyAgICBzcGVjLT5uX3NwYWRkaW5nID0gMDsKKyAgICBzcGVjLT5uX3JwYWRkaW5nID0gMDsKKyAgICBzcGVjLT5zaWduID0gJ1wwJzsKKyAgICBzcGVjLT5uX3NpZ24gPSAwOworCisgICAgLyogdGhlIG91dHB1dCB3aWxsIGxvb2sgbGlrZToKKyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICAgfCA8bHBhZGRpbmc+IDxzaWduPiA8cHJlZml4PiA8c3BhZGRpbmc+IDxncm91cGVkX2RpZ2l0cz4gPGRlY2ltYWw+IDxyZW1haW5kZXI+IDxycGFkZGluZz4gfAorICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKworICAgICAgIHNpZ24gaXMgY29tcHV0ZWQgZnJvbSBmb3JtYXQtPnNpZ24gYW5kIHRoZSBhY3R1YWwKKyAgICAgICBzaWduIG9mIHRoZSBudW1iZXIKKworICAgICAgIHByZWZpeCBpcyBnaXZlbiAoaXQncyBmb3IgdGhlICcweCcgcHJlZml4KQorCisgICAgICAgZGlnaXRzIGlzIGFscmVhZHkga25vd24KKworICAgICAgIHRoZSB0b3RhbCB3aWR0aCBpcyBlaXRoZXIgZ2l2ZW4sIG9yIGNvbXB1dGVkIGZyb20gdGhlCisgICAgICAgYWN0dWFsIGRpZ2l0cworCisgICAgICAgb25seSBvbmUgb2YgbHBhZGRpbmcsIHNwYWRkaW5nLCBhbmQgcnBhZGRpbmcgY2FuIGJlIG5vbi16ZXJvLAorICAgICAgIGFuZCBpdCdzIGNhbGN1bGF0ZWQgZnJvbSB0aGUgd2lkdGggYW5kIG90aGVyIGZpZWxkcworICAgICovCisKKyAgICAvKiBjb21wdXRlIHRoZSB2YXJpb3VzIHBhcnRzIHdlJ3JlIGdvaW5nIHRvIHdyaXRlICovCisgICAgc3dpdGNoIChmb3JtYXQtPnNpZ24pIHsKKyAgICBjYXNlICcrJzoKKyAgICAgICAgLyogYWx3YXlzIHB1dCBhICsgb3IgLSAqLworICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOworICAgICAgICBzcGVjLT5zaWduID0gKHNpZ25fY2hhciA9PSAnLScgPyAnLScgOiAnKycpOworICAgICAgICBicmVhazsKKyAgICBjYXNlICcgJzoKKyAgICAgICAgc3BlYy0+bl9zaWduID0gMTsKKyAgICAgICAgc3BlYy0+c2lnbiA9IChzaWduX2NoYXIgPT0gJy0nID8gJy0nIDogJyAnKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogTm90IHNwZWNpZmllZCwgb3IgdGhlIGRlZmF1bHQgKC0pICovCisgICAgICAgIGlmIChzaWduX2NoYXIgPT0gJy0nKSB7CisgICAgICAgICAgICBzcGVjLT5uX3NpZ24gPSAxOworICAgICAgICAgICAgc3BlYy0+c2lnbiA9ICctJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFRoZSBudW1iZXIgb2YgY2hhcnMgdXNlZCBmb3Igbm9uLWRpZ2l0cyBhbmQgbm9uLXBhZGRpbmcuICovCisgICAgbl9ub25fZGlnaXRfbm9uX3BhZGRpbmcgPSBzcGVjLT5uX3NpZ24gKyBzcGVjLT5uX3ByZWZpeCArIHNwZWMtPm5fZGVjaW1hbCArCisgICAgICAgIHNwZWMtPm5fcmVtYWluZGVyOworCisgICAgLyogbWluX3dpZHRoIGNhbiBnbyBuZWdhdGl2ZSwgdGhhdCdzIG9rYXkuIGZvcm1hdC0+d2lkdGggPT0gLTEgbWVhbnMKKyAgICAgICB3ZSBkb24ndCBjYXJlLiAqLworICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnMCcgJiYgZm9ybWF0LT5hbGlnbiA9PSAnPScpCisgICAgICAgIHNwZWMtPm5fbWluX3dpZHRoID0gZm9ybWF0LT53aWR0aCAtIG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nOworICAgIGVsc2UKKyAgICAgICAgc3BlYy0+bl9taW5fd2lkdGggPSAwOworCisgICAgaWYgKHNwZWMtPm5fZGlnaXRzID09IDApCisgICAgICAgIC8qIFRoaXMgY2FzZSBvbmx5IG9jY3VycyB3aGVuIHVzaW5nICdjJyBmb3JtYXR0aW5nLCB3ZSBuZWVkCisgICAgICAgICAgIHRvIHNwZWNpYWwgY2FzZSBpdCBiZWNhdXNlIHRoZSBncm91cGluZyBjb2RlIGFsd2F5cyB3YW50cworICAgICAgICAgICB0byBoYXZlIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIuICovCisgICAgICAgIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgPSAwOworICAgIGVsc2UgeworICAgICAgICBQeV9VQ1M0IGdyb3VwaW5nX21heGNoYXI7CisgICAgICAgIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgPSBfUHlVbmljb2RlX0luc2VydFRob3VzYW5kc0dyb3VwaW5nKAorICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgIDAsIE5VTEwsCisgICAgICAgICAgICBzcGVjLT5uX2RpZ2l0cywgc3BlYy0+bl9taW5fd2lkdGgsCisgICAgICAgICAgICBsb2NhbGUtPmdyb3VwaW5nLCBsb2NhbGUtPnRob3VzYW5kc19zZXAsICZncm91cGluZ19tYXhjaGFyKTsKKyAgICAgICAgKm1heGNoYXIgPSBQeV9NQVgoKm1heGNoYXIsIGdyb3VwaW5nX21heGNoYXIpOworICAgIH0KKworICAgIC8qIEdpdmVuIHRoZSBkZXNpcmVkIHdpZHRoIGFuZCB0aGUgdG90YWwgb2YgZGlnaXQgYW5kIG5vbi1kaWdpdAorICAgICAgIHNwYWNlIHdlIGNvbnN1bWUsIHNlZSBpZiB3ZSBuZWVkIGFueSBwYWRkaW5nLiBmb3JtYXQtPndpZHRoIGNhbgorICAgICAgIGJlIG5lZ2F0aXZlIChtZWFuaW5nIG5vIHBhZGRpbmcpLCBidXQgdGhpcyBjb2RlIHN0aWxsIHdvcmtzIGluCisgICAgICAgdGhhdCBjYXNlLiAqLworICAgIG5fcGFkZGluZyA9IGZvcm1hdC0+d2lkdGggLQorICAgICAgICAgICAgICAgICAgICAgICAgKG5fbm9uX2RpZ2l0X25vbl9wYWRkaW5nICsgc3BlYy0+bl9ncm91cGVkX2RpZ2l0cyk7CisgICAgaWYgKG5fcGFkZGluZyA+IDApIHsKKyAgICAgICAgLyogU29tZSBwYWRkaW5nIGlzIG5lZWRlZC4gRGV0ZXJtaW5lIGlmIGl0J3MgbGVmdCwgc3BhY2UsIG9yIHJpZ2h0LiAqLworICAgICAgICBzd2l0Y2ggKGZvcm1hdC0+YWxpZ24pIHsKKyAgICAgICAgY2FzZSAnPCc6CisgICAgICAgICAgICBzcGVjLT5uX3JwYWRkaW5nID0gbl9wYWRkaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ14nOgorICAgICAgICAgICAgc3BlYy0+bl9scGFkZGluZyA9IG5fcGFkZGluZyAvIDI7CisgICAgICAgICAgICBzcGVjLT5uX3JwYWRkaW5nID0gbl9wYWRkaW5nIC0gc3BlYy0+bl9scGFkZGluZzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICc9JzoKKyAgICAgICAgICAgIHNwZWMtPm5fc3BhZGRpbmcgPSBuX3BhZGRpbmc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnPic6CisgICAgICAgICAgICBzcGVjLT5uX2xwYWRkaW5nID0gbl9wYWRkaW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiBTaG91bGRuJ3QgZ2V0IGhlcmUsIGJ1dCB0cmVhdCBpdCBhcyAnPicgKi8KKyAgICAgICAgICAgIHNwZWMtPm5fbHBhZGRpbmcgPSBuX3BhZGRpbmc7CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzcGVjLT5uX2xwYWRkaW5nIHx8IHNwZWMtPm5fc3BhZGRpbmcgfHwgc3BlYy0+bl9ycGFkZGluZykKKyAgICAgICAgKm1heGNoYXIgPSBQeV9NQVgoKm1heGNoYXIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKKworICAgIGlmIChzcGVjLT5uX2RlY2ltYWwpCisgICAgICAgICptYXhjaGFyID0gUHlfTUFYKCptYXhjaGFyLCBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobG9jYWxlLT5kZWNpbWFsX3BvaW50KSk7CisKKyAgICByZXR1cm4gc3BlYy0+bl9scGFkZGluZyArIHNwZWMtPm5fc2lnbiArIHNwZWMtPm5fcHJlZml4ICsKKyAgICAgICAgc3BlYy0+bl9zcGFkZGluZyArIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMgKyBzcGVjLT5uX2RlY2ltYWwgKworICAgICAgICBzcGVjLT5uX3JlbWFpbmRlciArIHNwZWMtPm5fcnBhZGRpbmc7Cit9CisKKy8qIEZpbGwgaW4gdGhlIGRpZ2l0IHBhcnRzIG9mIGEgbnVtYmVycydzIHN0cmluZyByZXByZXNlbnRhdGlvbiwKKyAgIGFzIGRldGVybWluZWQgaW4gY2FsY19udW1iZXJfd2lkdGhzKCkuCisgICBSZXR1cm4gLTEgb24gZXJyb3IsIG9yIDAgb24gc3VjY2Vzcy4gKi8KK3N0YXRpYyBpbnQKK2ZpbGxfbnVtYmVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgY29uc3QgTnVtYmVyRmllbGRXaWR0aHMgKnNwZWMsCisgICAgICAgICAgICBQeU9iamVjdCAqZGlnaXRzLCBQeV9zc2l6ZV90IGRfc3RhcnQsIFB5X3NzaXplX3QgZF9lbmQsCisgICAgICAgICAgICBQeU9iamVjdCAqcHJlZml4LCBQeV9zc2l6ZV90IHBfc3RhcnQsCisgICAgICAgICAgICBQeV9VQ1M0IGZpbGxfY2hhciwKKyAgICAgICAgICAgIExvY2FsZUluZm8gKmxvY2FsZSwgaW50IHRvdXBwZXIpCit7CisgICAgLyogVXNlZCB0byBrZWVwIHRyYWNrIG9mIGRpZ2l0cywgZGVjaW1hbCwgYW5kIHJlbWFpbmRlci4gKi8KKyAgICBQeV9zc2l6ZV90IGRfcG9zID0gZF9zdGFydDsKKyAgICBjb25zdCBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQgPSB3cml0ZXItPmtpbmQ7CisgICAgY29uc3Qgdm9pZCAqZGF0YSA9IHdyaXRlci0+ZGF0YTsKKyAgICBQeV9zc2l6ZV90IHI7CisKKyAgICBpZiAoc3BlYy0+bl9scGFkZGluZykgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+cG9zLCBzcGVjLT5uX2xwYWRkaW5nLCBmaWxsX2NoYXIpOworICAgICAgICB3cml0ZXItPnBvcyArPSBzcGVjLT5uX2xwYWRkaW5nOworICAgIH0KKyAgICBpZiAoc3BlYy0+bl9zaWduID09IDEpIHsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci0+cG9zLCBzcGVjLT5zaWduKTsKKyAgICAgICAgd3JpdGVyLT5wb3MrKzsKKyAgICB9CisgICAgaWYgKHNwZWMtPm5fcHJlZml4KSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4LCBwX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjLT5uX3ByZWZpeCk7CisgICAgICAgIGlmICh0b3VwcGVyKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IHQ7CisgICAgICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9wcmVmaXg7IHQrKykgeworICAgICAgICAgICAgICAgIFB5X1VDUzQgYyA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIHdyaXRlci0+cG9zICsgdCk7CisgICAgICAgICAgICAgICAgYyA9IFB5X1RPVVBQRVIoYyk7CisgICAgICAgICAgICAgICAgYXNzZXJ0IChjIDw9IDEyNyk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci0+cG9zICsgdCwgYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9wcmVmaXg7CisgICAgfQorICAgIGlmIChzcGVjLT5uX3NwYWRkaW5nKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdEZpbGwod3JpdGVyLT5idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5wb3MsIHNwZWMtPm5fc3BhZGRpbmcsIGZpbGxfY2hhcik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fc3BhZGRpbmc7CisgICAgfQorCisgICAgLyogT25seSBmb3IgdHlwZSAnYycgc3BlY2lhbCBjYXNlLCBpdCBoYXMgbm8gZGlnaXRzLiAqLworICAgIGlmIChzcGVjLT5uX2RpZ2l0cyAhPSAwKSB7CisgICAgICAgIC8qIEZpbGwgdGhlIGRpZ2l0cyB3aXRoIEluc2VydFRob3VzYW5kc0dyb3VwaW5nLiAqLworICAgICAgICBjaGFyICpwZGlnaXRzOworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGRpZ2l0cykpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHBkaWdpdHMgPSBQeVVuaWNvZGVfREFUQShkaWdpdHMpOworICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQoZGlnaXRzKSA8IGtpbmQpIHsKKyAgICAgICAgICAgIHBkaWdpdHMgPSBfUHlVbmljb2RlX0FzS2luZChkaWdpdHMsIGtpbmQpOworICAgICAgICAgICAgaWYgKHBkaWdpdHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgciA9IF9QeVVuaWNvZGVfSW5zZXJ0VGhvdXNhbmRzR3JvdXBpbmcoCisgICAgICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zLAorICAgICAgICAgICAgICAgIHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMsCisgICAgICAgICAgICAgICAgcGRpZ2l0cyArIGtpbmQgKiBkX3BvcywKKyAgICAgICAgICAgICAgICBzcGVjLT5uX2RpZ2l0cywgc3BlYy0+bl9taW5fd2lkdGgsCisgICAgICAgICAgICAgICAgbG9jYWxlLT5ncm91cGluZywgbG9jYWxlLT50aG91c2FuZHNfc2VwLCBOVUxMKTsKKyAgICAgICAgaWYgKHIgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGFzc2VydChyID09IHNwZWMtPm5fZ3JvdXBlZF9kaWdpdHMpOworICAgICAgICBpZiAoUHlVbmljb2RlX0tJTkQoZGlnaXRzKSA8IGtpbmQpCisgICAgICAgICAgICBQeU1lbV9GcmVlKHBkaWdpdHMpOworICAgICAgICBkX3BvcyArPSBzcGVjLT5uX2RpZ2l0czsKKyAgICB9CisgICAgaWYgKHRvdXBwZXIpIHsKKyAgICAgICAgUHlfc3NpemVfdCB0OworICAgICAgICBmb3IgKHQgPSAwOyB0IDwgc3BlYy0+bl9ncm91cGVkX2RpZ2l0czsgdCsrKSB7CisgICAgICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCB3cml0ZXItPnBvcyArIHQpOworICAgICAgICAgICAgYyA9IFB5X1RPVVBQRVIoYyk7CisgICAgICAgICAgICBpZiAoYyA+IDEyNykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgIm5vbi1hc2NpaSBncm91cGVkIGRpZ2l0Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKGtpbmQsIGRhdGEsIHdyaXRlci0+cG9zICsgdCwgYyk7CisgICAgICAgIH0KKyAgICB9CisgICAgd3JpdGVyLT5wb3MgKz0gc3BlYy0+bl9ncm91cGVkX2RpZ2l0czsKKworICAgIGlmIChzcGVjLT5uX2RlY2ltYWwpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICBsb2NhbGUtPmRlY2ltYWxfcG9pbnQsIDAsIHNwZWMtPm5fZGVjaW1hbCk7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fZGVjaW1hbDsKKyAgICAgICAgZF9wb3MgKz0gMTsKKyAgICB9CisKKyAgICBpZiAoc3BlYy0+bl9yZW1haW5kZXIpIHsKKyAgICAgICAgX1B5VW5pY29kZV9GYXN0Q29weUNoYXJhY3RlcnMoCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciwgd3JpdGVyLT5wb3MsCisgICAgICAgICAgICBkaWdpdHMsIGRfcG9zLCBzcGVjLT5uX3JlbWFpbmRlcik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fcmVtYWluZGVyOworICAgICAgICAvKiBkX3BvcyArPSBzcGVjLT5uX3JlbWFpbmRlcjsgKi8KKyAgICB9CisKKyAgICBpZiAoc3BlYy0+bl9ycGFkZGluZykgeworICAgICAgICBfUHlVbmljb2RlX0Zhc3RGaWxsKHdyaXRlci0+YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlci0+cG9zLCBzcGVjLT5uX3JwYWRkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxfY2hhcik7CisgICAgICAgIHdyaXRlci0+cG9zICs9IHNwZWMtPm5fcnBhZGRpbmc7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgY2hhciBub19ncm91cGluZ1sxXSA9IHtDSEFSX01BWH07CisKKy8qIEZpbmQgdGhlIGRlY2ltYWwgcG9pbnQgY2hhcmFjdGVyKHM/KSwgdGhvdXNhbmRzX3NlcGFyYXRvcihzPyksIGFuZAorICAgZ3JvdXBpbmcgZGVzY3JpcHRpb24sIGVpdGhlciBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlIGlmIHR5cGUgaXMKKyAgIExUX0NVUlJFTlRfTE9DQUxFLCBhIGhhcmQtY29kZWQgbG9jYWxlIGlmIExUX0RFRkFVTFRfTE9DQUxFLCBvcgorICAgbm9uZSBpZiBMVF9OT19MT0NBTEUuICovCitzdGF0aWMgaW50CitnZXRfbG9jYWxlX2luZm8oaW50IHR5cGUsIExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTFRfQ1VSUkVOVF9MT0NBTEU6IHsKKyAgICAgICAgc3RydWN0IGxjb252ICpsb2NhbGVfZGF0YSA9IGxvY2FsZWNvbnYoKTsKKyAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGVfZGF0YS0+ZGVjaW1hbF9wb2ludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGlmIChsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCA9IFB5VW5pY29kZV9EZWNvZGVMb2NhbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZV9kYXRhLT50aG91c2FuZHNfc2VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gbG9jYWxlX2RhdGEtPmdyb3VwaW5nOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBMVF9ERUZBVUxUX0xPQ0FMRToKKyAgICAgICAgbG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJy4nKTsKKyAgICAgICAgbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXAgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoJywnKTsKKyAgICAgICAgaWYgKCFsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCB8fCAhbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQpOworICAgICAgICAgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gIlwzIjsgLyogR3JvdXAgZXZlcnkgMyBjaGFyYWN0ZXJzLiAgVGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbXBsaWNpdCkgdHJhaWxpbmcgMCBtZWFucyByZXBlYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVseS4gKi8KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBMVF9OT19MT0NBTEU6CisgICAgICAgIGxvY2FsZV9pbmZvLT5kZWNpbWFsX3BvaW50ID0gUHlVbmljb2RlX0Zyb21PcmRpbmFsKCcuJyk7CisgICAgICAgIGxvY2FsZV9pbmZvLT50aG91c2FuZHNfc2VwID0gUHlVbmljb2RlX05ldygwLCAwKTsKKyAgICAgICAgaWYgKCFsb2NhbGVfaW5mby0+ZGVjaW1hbF9wb2ludCB8fCAhbG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApIHsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQpOworICAgICAgICAgICAgUHlfWERFQ1JFRihsb2NhbGVfaW5mby0+dGhvdXNhbmRzX3NlcCk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbG9jYWxlX2luZm8tPmdyb3VwaW5nID0gbm9fZ3JvdXBpbmc7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCgwKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2xvY2FsZV9pbmZvKExvY2FsZUluZm8gKmxvY2FsZV9pbmZvKQoreworICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPmRlY2ltYWxfcG9pbnQpOworICAgIFB5X1hERUNSRUYobG9jYWxlX2luZm8tPnRob3VzYW5kc19zZXApOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIHN0cmluZyBmb3JtYXR0aW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK2Zvcm1hdF9zdHJpbmdfaW50ZXJuYWwoUHlPYmplY3QgKnZhbHVlLCBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIFB5X3NzaXplX3QgbHBhZDsKKyAgICBQeV9zc2l6ZV90IHJwYWQ7CisgICAgUHlfc3NpemVfdCB0b3RhbDsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlfVUNTNCBtYXhjaGFyOworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19SRUFEWSh2YWx1ZSkpOworICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHZhbHVlKTsKKworICAgIC8qIHNpZ24gaXMgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLworICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJ1wwJykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJTaWduIG5vdCBhbGxvd2VkIGluIHN0cmluZyBmb3JtYXQgc3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiBhbHRlcm5hdGUgaXMgbm90IGFsbG93ZWQgb24gc3RyaW5ncyAqLworICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJBbHRlcm5hdGUgZm9ybSAoIykgbm90IGFsbG93ZWQgaW4gc3RyaW5nIGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICAvKiAnPScgYWxpZ25tZW50IG5vdCBhbGxvd2VkIG9uIHN0cmluZ3MgKi8KKyAgICBpZiAoZm9ybWF0LT5hbGlnbiA9PSAnPScpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiJz0nIGFsaWdubWVudCBub3QgYWxsb3dlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiaW4gc3RyaW5nIGZvcm1hdCBzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIGlmIChmb3JtYXQtPndpZHRoID09IC0xICYmIGZvcm1hdC0+cHJlY2lzaW9uID09IC0xKSB7CisgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKiBpZiBwcmVjaXNpb24gaXMgc3BlY2lmaWVkLCBvdXRwdXQgbm8gbW9yZSB0aGF0IGZvcm1hdC5wcmVjaXNpb24KKyAgICAgICBjaGFyYWN0ZXJzICovCisgICAgaWYgKGZvcm1hdC0+cHJlY2lzaW9uID49IDAgJiYgbGVuID49IGZvcm1hdC0+cHJlY2lzaW9uKSB7CisgICAgICAgIGxlbiA9IGZvcm1hdC0+cHJlY2lzaW9uOworICAgIH0KKworICAgIGNhbGNfcGFkZGluZyhsZW4sIGZvcm1hdC0+d2lkdGgsIGZvcm1hdC0+YWxpZ24sICZscGFkLCAmcnBhZCwgJnRvdGFsKTsKKworICAgIG1heGNoYXIgPSBfUHlVbmljb2RlX0ZpbmRNYXhDaGFyKHZhbHVlLCAwLCBsZW4pOworICAgIGlmIChscGFkICE9IDAgfHwgcnBhZCAhPSAwKQorICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKKworICAgIC8qIGFsbG9jYXRlIHRoZSByZXN1bHRpbmcgc3RyaW5nICovCisgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHRvdGFsLCBtYXhjaGFyKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogV3JpdGUgaW50byB0aGF0IHNwYWNlLiBGaXJzdCB0aGUgcGFkZGluZy4gKi8KKyAgICByZXN1bHQgPSBmaWxsX3BhZGRpbmcod3JpdGVyLCBsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyPT0nXDAnPycgJzpmb3JtYXQtPmZpbGxfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHBhZCwgcnBhZCk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogVGhlbiB0aGUgc291cmNlIHN0cmluZy4gKi8KKyAgICBpZiAobGVuKSB7CisgICAgICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHdyaXRlci0+YnVmZmVyLCB3cml0ZXItPnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIDAsIGxlbik7CisgICAgfQorICAgIHdyaXRlci0+cG9zICs9IChsZW4gKyBycGFkKTsKKyAgICByZXN1bHQgPSAwOworCitkb25lOgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBsb25nIGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50Citmb3JtYXRfbG9uZ19pbnRlcm5hbChQeU9iamVjdCAqdmFsdWUsIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBQeV9VQ1M0IG1heGNoYXIgPSAxMjc7CisgICAgUHlPYmplY3QgKnRtcCA9IE5VTEw7CisgICAgUHlfc3NpemVfdCBpbnVtZXJpY19jaGFyczsKKyAgICBQeV9VQ1M0IHNpZ25fY2hhciA9ICdcMCc7CisgICAgUHlfc3NpemVfdCBuX2RpZ2l0czsgICAgICAgLyogY291bnQgb2YgZGlnaXRzIG5lZWQgZnJvbSB0aGUgY29tcHV0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKi8KKyAgICBQeV9zc2l6ZV90IG5fcmVtYWluZGVyID0gMDsgLyogVXNlZCBvbmx5IGZvciAnYycgZm9ybWF0dGluZywgd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjZXMgbm9uLWRpZ2l0cyAqLworICAgIFB5X3NzaXplX3Qgbl9wcmVmaXggPSAwOyAgIC8qIENvdW50IG9mIHByZWZpeCBjaGFycywgKGUuZy4sICcweCcpICovCisgICAgUHlfc3NpemVfdCBuX3RvdGFsOworICAgIFB5X3NzaXplX3QgcHJlZml4ID0gMDsKKyAgICBOdW1iZXJGaWVsZFdpZHRocyBzcGVjOworICAgIGxvbmcgeDsKKworICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKKyAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KKyAgICBMb2NhbGVJbmZvIGxvY2FsZSA9IFNUQVRJQ19MT0NBTEVfSU5GT19JTklUOworCisgICAgLyogbm8gcHJlY2lzaW9uIGFsbG93ZWQgb24gaW50ZWdlcnMgKi8KKyAgICBpZiAoZm9ybWF0LT5wcmVjaXNpb24gIT0gLTEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJlY2lzaW9uIG5vdCBhbGxvd2VkIGluIGludGVnZXIgZm9ybWF0IHNwZWNpZmllciIpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgLyogc3BlY2lhbCBjYXNlIGZvciBjaGFyYWN0ZXIgZm9ybWF0dGluZyAqLworICAgIGlmIChmb3JtYXQtPnR5cGUgPT0gJ2MnKSB7CisgICAgICAgIC8qIGVycm9yIHRvIHNwZWNpZnkgYSBzaWduICovCisgICAgICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJ1wwJykgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNpZ24gbm90IGFsbG93ZWQgd2l0aCBpbnRlZ2VyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm9ybWF0IHNwZWNpZmllciAnYyciKTsKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHRha2VuIGZyb20gdW5pY29kZW9iamVjdC5jIGZvcm1hdGNoYXIoKSAqLworICAgICAgICAvKiBJbnRlZ2VyIGlucHV0IHRydW5jYXRlZCB0byBhIGNoYXJhY3RlciAqLworICAgICAgICB4ID0gUHlMb25nX0FzTG9uZyh2YWx1ZSk7CisgICAgICAgIGlmICh4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIGlmICh4IDwgMCB8fCB4ID4gMHgxMGZmZmYpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgICAgIHRtcCA9IFB5VW5pY29kZV9Gcm9tT3JkaW5hbCh4KTsKKyAgICAgICAgaW51bWVyaWNfY2hhcnMgPSAwOworICAgICAgICBuX2RpZ2l0cyA9IDE7CisgICAgICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgKFB5X1VDUzQpeCk7CisKKyAgICAgICAgLyogQXMgYSBzb3J0LW9mIGhhY2ssIHdlIHRlbGwgY2FsY19udW1iZXJfd2lkdGhzIHRoYXQgd2Ugb25seQorICAgICAgICAgICBoYXZlICJyZW1haW5kZXIiIGNoYXJhY3RlcnMuIGNhbGNfbnVtYmVyX3dpZHRocyB0aGlua3MKKyAgICAgICAgICAgdGhlc2UgYXJlIGNoYXJhY3RlcnMgdGhhdCBkb24ndCBnZXQgZm9ybWF0dGVkLCBvbmx5IGNvcGllZAorICAgICAgICAgICBpbnRvIHRoZSBvdXRwdXQgc3RyaW5nLiBXZSBkbyB0aGlzIGZvciAnYycgZm9ybWF0dGluZywKKyAgICAgICAgICAgYmVjYXVzZSB0aGUgY2hhcmFjdGVycyBhcmUgbGlrZWx5IHRvIGJlIG5vbi1kaWdpdHMuICovCisgICAgICAgIG5fcmVtYWluZGVyID0gMTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGludCBiYXNlOworICAgICAgICBpbnQgbGVhZGluZ19jaGFyc190b19za2lwID0gMDsgIC8qIE51bWJlciBvZiBjaGFyYWN0ZXJzIGFkZGVkIGJ5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlOdW1iZXJfVG9CYXNlIHRoYXQgd2Ugd2FudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXAgb3Zlci4gKi8KKworICAgICAgICAvKiBDb21wdXRlIHRoZSBiYXNlIGFuZCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgYWRkZWQgYnkKKyAgICAgICAgICAgUHlOdW1iZXJfVG9CYXNlICovCisgICAgICAgIHN3aXRjaCAoZm9ybWF0LT50eXBlKSB7CisgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgYmFzZSA9IDI7CisgICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAwYiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICBsZWFkaW5nX2NoYXJzX3RvX3NraXAgPSAyOyAvKiAwbyAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgIGJhc2UgPSAxNjsKKyAgICAgICAgICAgIGxlYWRpbmdfY2hhcnNfdG9fc2tpcCA9IDI7IC8qIDB4ICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDogIC8qIHNob3VsZG4ndCBiZSBuZWVkZWQsIGJ1dCBzdG9wcyBhIGNvbXBpbGVyIHdhcm5pbmcgKi8KKyAgICAgICAgY2FzZSAnZCc6CisgICAgICAgIGNhc2UgJ24nOgorICAgICAgICAgICAgYmFzZSA9IDEwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9ybWF0LT5zaWduICE9ICcrJyAmJiBmb3JtYXQtPnNpZ24gIT0gJyAnCisgICAgICAgICAgICAmJiBmb3JtYXQtPndpZHRoID09IC0xCisgICAgICAgICAgICAmJiBmb3JtYXQtPnR5cGUgIT0gJ1gnICYmIGZvcm1hdC0+dHlwZSAhPSAnbicKKyAgICAgICAgICAgICYmICFmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzCisgICAgICAgICAgICAmJiBQeUxvbmdfQ2hlY2tFeGFjdCh2YWx1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgcmV0dXJuIF9QeUxvbmdfRm9ybWF0V3JpdGVyKHdyaXRlciwgdmFsdWUsIGJhc2UsIGZvcm1hdC0+YWx0ZXJuYXRlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFRoZSBudW1iZXIgb2YgcHJlZml4IGNoYXJzIGlzIHRoZSBzYW1lIGFzIHRoZSBsZWFkaW5nCisgICAgICAgICAgIGNoYXJzIHRvIHNraXAgKi8KKyAgICAgICAgaWYgKGZvcm1hdC0+YWx0ZXJuYXRlKQorICAgICAgICAgICAgbl9wcmVmaXggPSBsZWFkaW5nX2NoYXJzX3RvX3NraXA7CisKKyAgICAgICAgLyogRG8gdGhlIGhhcmQgcGFydCwgY29udmVydGluZyB0byBhIHN0cmluZyBpbiBhIGdpdmVuIGJhc2UgKi8KKyAgICAgICAgdG1wID0gX1B5TG9uZ19Gb3JtYXQodmFsdWUsIGJhc2UpOworICAgICAgICBpZiAodG1wID09IE5VTEwgfHwgUHlVbmljb2RlX1JFQURZKHRtcCkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAgICAgaW51bWVyaWNfY2hhcnMgPSAwOworICAgICAgICBuX2RpZ2l0cyA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRtcCk7CisKKyAgICAgICAgcHJlZml4ID0gaW51bWVyaWNfY2hhcnM7CisKKyAgICAgICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKKyAgICAgICAgICAgYW5kIHNraXAgaXQgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEX0NIQVIodG1wLCBpbnVtZXJpY19jaGFycykgPT0gJy0nKSB7CisgICAgICAgICAgICBzaWduX2NoYXIgPSAnLSc7CisgICAgICAgICAgICArK3ByZWZpeDsKKyAgICAgICAgICAgICsrbGVhZGluZ19jaGFyc190b19za2lwOworICAgICAgICB9CisKKyAgICAgICAgLyogU2tpcCBvdmVyIHRoZSBsZWFkaW5nIGNoYXJzICgweCwgMGIsIGV0Yy4pICovCisgICAgICAgIG5fZGlnaXRzIC09IGxlYWRpbmdfY2hhcnNfdG9fc2tpcDsKKyAgICAgICAgaW51bWVyaWNfY2hhcnMgKz0gbGVhZGluZ19jaGFyc190b19za2lwOworICAgIH0KKworICAgIC8qIERldGVybWluZSB0aGUgZ3JvdXBpbmcsIHNlcGFyYXRvciwgYW5kIGRlY2ltYWwgcG9pbnQsIGlmIGFueS4gKi8KKyAgICBpZiAoZ2V0X2xvY2FsZV9pbmZvKGZvcm1hdC0+dHlwZSA9PSAnbicgPyBMVF9DVVJSRU5UX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0LT50aG91c2FuZHNfc2VwYXJhdG9ycyA/CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfREVGQVVMVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIExUX05PX0xPQ0FMRSksCisgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlKSA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLworICAgIG5fdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnNwZWMsIG5fcHJlZml4LCBzaWduX2NoYXIsIHRtcCwgaW51bWVyaWNfY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnVtZXJpY19jaGFycyArIG5fZGlnaXRzLCBuX3JlbWFpbmRlciwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIGZvcm1hdCwgJm1heGNoYXIpOworCisgICAgLyogQWxsb2NhdGUgdGhlIG1lbW9yeS4gKi8KKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgbl90b3RhbCwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuICovCisgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICB0bXAsIGludW1lcmljX2NoYXJzLCBpbnVtZXJpY19jaGFycyArIG5fZGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCwgcHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC0+ZmlsbF9jaGFyID09ICdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAmbG9jYWxlLCBmb3JtYXQtPnR5cGUgPT0gJ1gnKTsKKworZG9uZToKKyAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgZnJlZV9sb2NhbGVfaW5mbygmbG9jYWxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGZsb2F0IGZvcm1hdHRpbmcgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qIG11Y2ggb2YgdGhpcyBpcyB0YWtlbiBmcm9tIHVuaWNvZGVvYmplY3QuYyAqLworc3RhdGljIGludAorZm9ybWF0X2Zsb2F0X2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdFNwZWMgKmZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgY2hhciAqYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBuX2RpZ2l0czsKKyAgICBQeV9zc2l6ZV90IG5fcmVtYWluZGVyOworICAgIFB5X3NzaXplX3Qgbl90b3RhbDsKKyAgICBpbnQgaGFzX2RlY2ltYWw7CisgICAgZG91YmxlIHZhbDsKKyAgICBQeV9zc2l6ZV90IHByZWNpc2lvbiA9IGZvcm1hdC0+cHJlY2lzaW9uOworICAgIFB5X3NzaXplX3QgZGVmYXVsdF9wcmVjaXNpb24gPSA2OworICAgIFB5X1VDUzQgdHlwZSA9IGZvcm1hdC0+dHlwZTsKKyAgICBpbnQgYWRkX3BjdCA9IDA7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBOdW1iZXJGaWVsZFdpZHRocyBzcGVjOworICAgIGludCBmbGFncyA9IDA7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5X1VDUzQgbWF4Y2hhciA9IDEyNzsKKyAgICBQeV9VQ1M0IHNpZ25fY2hhciA9ICdcMCc7CisgICAgaW50IGZsb2F0X3R5cGU7IC8qIFVzZWQgdG8gc2VlIGlmIHdlIGhhdmUgYSBuYW4sIGluZiwgb3IgcmVndWxhciBmbG9hdC4gKi8KKyAgICBQeU9iamVjdCAqdW5pY29kZV90bXAgPSBOVUxMOworCisgICAgLyogTG9jYWxlIHNldHRpbmdzLCBlaXRoZXIgZnJvbSB0aGUgYWN0dWFsIGxvY2FsZSBvcgorICAgICAgIGZyb20gYSBoYXJkLWNvZGUgcHNldWRvLWxvY2FsZSAqLworICAgIExvY2FsZUluZm8gbG9jYWxlID0gU1RBVElDX0xPQ0FMRV9JTkZPX0lOSVQ7CisKKyAgICBpZiAoZm9ybWF0LT5hbHRlcm5hdGUpCisgICAgICAgIGZsYWdzIHw9IFB5X0RUU0ZfQUxUOworCisgICAgaWYgKHR5cGUgPT0gJ1wwJykgeworICAgICAgICAvKiBPbWl0dGVkIHR5cGUgc3BlY2lmaWVyLiAgQmVoYXZlcyBpbiB0aGUgc2FtZSB3YXkgYXMgcmVwcih4KQorICAgICAgICAgICBhbmQgc3RyKHgpIGlmIG5vIHByZWNpc2lvbiBpcyBnaXZlbiwgZWxzZSBsaWtlICdnJywgYnV0IHdpdGgKKyAgICAgICAgICAgYXQgbGVhc3Qgb25lIGRpZ2l0IGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LiAqLworICAgICAgICBmbGFncyB8PSBQeV9EVFNGX0FERF9ET1RfMDsKKyAgICAgICAgdHlwZSA9ICdyJzsKKyAgICAgICAgZGVmYXVsdF9wcmVjaXNpb24gPSAwOworICAgIH0KKworICAgIGlmICh0eXBlID09ICduJykKKyAgICAgICAgLyogJ24nIGlzIHRoZSBzYW1lIGFzICdnJywgZXhjZXB0IGZvciB0aGUgbG9jYWxlIHVzZWQgdG8KKyAgICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQuIFdlIHRha2UgY2FyZSBvZiB0aGF0IGxhdGVyLiAqLworICAgICAgICB0eXBlID0gJ2cnOworCisgICAgdmFsID0gUHlGbG9hdF9Bc0RvdWJsZSh2YWx1ZSk7CisgICAgaWYgKHZhbCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGlmICh0eXBlID09ICclJykgeworICAgICAgICB0eXBlID0gJ2YnOworICAgICAgICB2YWwgKj0gMTAwOworICAgICAgICBhZGRfcGN0ID0gMTsKKyAgICB9CisKKyAgICBpZiAocHJlY2lzaW9uIDwgMCkKKyAgICAgICAgcHJlY2lzaW9uID0gZGVmYXVsdF9wcmVjaXNpb247CisgICAgZWxzZSBpZiAodHlwZSA9PSAncicpCisgICAgICAgIHR5cGUgPSAnZyc7CisKKyAgICAvKiBDYXN0ICJ0eXBlIiwgYmVjYXVzZSBpZiB3ZSdyZSBpbiB1bmljb2RlIHdlIG5lZWQgdG8gcGFzcyBhCisgICAgICAgOC1iaXQgY2hhci4gVGhpcyBpcyBzYWZlLCBiZWNhdXNlIHdlJ3ZlIHJlc3RyaWN0ZWQgd2hhdCAidHlwZSIKKyAgICAgICBjYW4gYmUuICovCisgICAgYnVmID0gUHlPU19kb3VibGVfdG9fc3RyaW5nKHZhbCwgKGNoYXIpdHlwZSwgcHJlY2lzaW9uLCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsb2F0X3R5cGUpOworICAgIGlmIChidWYgPT0gTlVMTCkKKyAgICAgICAgZ290byBkb25lOworICAgIG5fZGlnaXRzID0gc3RybGVuKGJ1Zik7CisKKyAgICBpZiAoYWRkX3BjdCkgeworICAgICAgICAvKiBXZSBrbm93IHRoYXQgYnVmIGhhcyBhIHRyYWlsaW5nIHplcm8gKHNpbmNlIHdlIGp1c3QgY2FsbGVkCisgICAgICAgICAgIHN0cmxlbigpIG9uIGl0KSwgYW5kIHdlIGRvbid0IHVzZSB0aGF0IGZhY3QgYW55IG1vcmUuIFNvIHdlCisgICAgICAgICAgIGNhbiBqdXN0IHdyaXRlIG92ZXIgdGhlIHRyYWlsaW5nIHplcm8uICovCisgICAgICAgIGJ1ZltuX2RpZ2l0c10gPSAnJSc7CisgICAgICAgIG5fZGlnaXRzICs9IDE7CisgICAgfQorCisgICAgLyogU2luY2UgdGhlcmUgaXMgbm8gdW5pY29kZSB2ZXJzaW9uIG9mIFB5T1NfZG91YmxlX3RvX3N0cmluZywKKyAgICAgICBqdXN0IHVzZSB0aGUgOCBiaXQgdmVyc2lvbiBhbmQgdGhlbiBjb252ZXJ0IHRvIHVuaWNvZGUuICovCisgICAgdW5pY29kZV90bXAgPSBfUHlVbmljb2RlX0Zyb21BU0NJSShidWYsIG5fZGlnaXRzKTsKKyAgICBQeU1lbV9GcmVlKGJ1Zik7CisgICAgaWYgKHVuaWNvZGVfdG1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGlmIChmb3JtYXQtPnNpZ24gIT0gJysnICYmIGZvcm1hdC0+c2lnbiAhPSAnICcKKyAgICAgICAgJiYgZm9ybWF0LT53aWR0aCA9PSAtMQorICAgICAgICAmJiBmb3JtYXQtPnR5cGUgIT0gJ24nCisgICAgICAgICYmICFmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzKQorICAgIHsKKyAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgIHJlc3VsdCA9IF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVTdHIod3JpdGVyLCB1bmljb2RlX3RtcCk7CisgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX3RtcCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyogSXMgYSBzaWduIGNoYXJhY3RlciBwcmVzZW50IGluIHRoZSBvdXRwdXQ/ICBJZiBzbywgcmVtZW1iZXIgaXQKKyAgICAgICBhbmQgc2tpcCBpdCAqLworICAgIGluZGV4ID0gMDsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUih1bmljb2RlX3RtcCwgaW5kZXgpID09ICctJykgeworICAgICAgICBzaWduX2NoYXIgPSAnLSc7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIC0tbl9kaWdpdHM7CisgICAgfQorCisgICAgLyogRGV0ZXJtaW5lIGlmIHdlIGhhdmUgYW55ICJyZW1haW5kZXIiIChhZnRlciB0aGUgZGlnaXRzLCBtaWdodCBpbmNsdWRlCisgICAgICAgZGVjaW1hbCBvciBleHBvbmVudCBvciBib3RoIChvciBuZWl0aGVyKSkgKi8KKyAgICBwYXJzZV9udW1iZXIodW5pY29kZV90bXAsIGluZGV4LCBpbmRleCArIG5fZGlnaXRzLCAmbl9yZW1haW5kZXIsICZoYXNfZGVjaW1hbCk7CisKKyAgICAvKiBEZXRlcm1pbmUgdGhlIGdyb3VwaW5nLCBzZXBhcmF0b3IsIGFuZCBkZWNpbWFsIHBvaW50LCBpZiBhbnkuICovCisgICAgaWYgKGdldF9sb2NhbGVfaW5mbyhmb3JtYXQtPnR5cGUgPT0gJ24nID8gTFRfQ1VSUkVOVF9MT0NBTEUgOgorICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdC0+dGhvdXNhbmRzX3NlcGFyYXRvcnMgPworICAgICAgICAgICAgICAgICAgICAgICAgIExUX0RFRkFVTFRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9OT19MT0NBTEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSkgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIENhbGN1bGF0ZSBob3cgbXVjaCBtZW1vcnkgd2UnbGwgbmVlZC4gKi8KKyAgICBuX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZzcGVjLCAwLCBzaWduX2NoYXIsIHVuaWNvZGVfdG1wLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ICsgbl9kaWdpdHMsIG5fcmVtYWluZGVyLCBoYXNfZGVjaW1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIGZvcm1hdCwgJm1heGNoYXIpOworCisgICAgLyogQWxsb2NhdGUgdGhlIG1lbW9yeS4gKi8KKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKHdyaXRlciwgbl90b3RhbCwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuICovCisgICAgcmVzdWx0ID0gZmlsbF9udW1iZXIod3JpdGVyLCAmc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlX3RtcCwgaW5kZXgsIGluZGV4ICsgbl9kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQtPmZpbGxfY2hhciA9PSAnXDAnID8gJyAnIDogZm9ybWF0LT5maWxsX2NoYXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2FsZSwgMCk7CisKK2RvbmU6CisgICAgUHlfWERFQ1JFRih1bmljb2RlX3RtcCk7CisgICAgZnJlZV9sb2NhbGVfaW5mbygmbG9jYWxlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqKioqKioqKioqIGNvbXBsZXggZm9ybWF0dGluZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBpbnQKK2Zvcm1hdF9jb21wbGV4X2ludGVybmFsKFB5T2JqZWN0ICp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVybmFsRm9ybWF0U3BlYyAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQoreworICAgIGRvdWJsZSByZTsKKyAgICBkb3VibGUgaW07CisgICAgY2hhciAqcmVfYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCisgICAgY2hhciAqaW1fYnVmID0gTlVMTDsgICAgICAgLyogYnVmZmVyIHJldHVybmVkIGZyb20gUHlPU19kb3VibGVfdG9fc3RyaW5nICovCisKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgdG1wX2Zvcm1hdCA9ICpmb3JtYXQ7CisgICAgUHlfc3NpemVfdCBuX3JlX2RpZ2l0czsKKyAgICBQeV9zc2l6ZV90IG5faW1fZGlnaXRzOworICAgIFB5X3NzaXplX3Qgbl9yZV9yZW1haW5kZXI7CisgICAgUHlfc3NpemVfdCBuX2ltX3JlbWFpbmRlcjsKKyAgICBQeV9zc2l6ZV90IG5fcmVfdG90YWw7CisgICAgUHlfc3NpemVfdCBuX2ltX3RvdGFsOworICAgIGludCByZV9oYXNfZGVjaW1hbDsKKyAgICBpbnQgaW1faGFzX2RlY2ltYWw7CisgICAgUHlfc3NpemVfdCBwcmVjaXNpb24gPSBmb3JtYXQtPnByZWNpc2lvbjsKKyAgICBQeV9zc2l6ZV90IGRlZmF1bHRfcHJlY2lzaW9uID0gNjsKKyAgICBQeV9VQ1M0IHR5cGUgPSBmb3JtYXQtPnR5cGU7CisgICAgUHlfc3NpemVfdCBpX3JlOworICAgIFB5X3NzaXplX3QgaV9pbTsKKyAgICBOdW1iZXJGaWVsZFdpZHRocyByZV9zcGVjOworICAgIE51bWJlckZpZWxkV2lkdGhzIGltX3NwZWM7CisgICAgaW50IGZsYWdzID0gMDsKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgUHlfVUNTNCBtYXhjaGFyID0gMTI3OworICAgIGVudW0gUHlVbmljb2RlX0tpbmQgcmtpbmQ7CisgICAgdm9pZCAqcmRhdGE7CisgICAgUHlfVUNTNCByZV9zaWduX2NoYXIgPSAnXDAnOworICAgIFB5X1VDUzQgaW1fc2lnbl9jaGFyID0gJ1wwJzsKKyAgICBpbnQgcmVfZmxvYXRfdHlwZTsgLyogVXNlZCB0byBzZWUgaWYgd2UgaGF2ZSBhIG5hbiwgaW5mLCBvciByZWd1bGFyIGZsb2F0LiAqLworICAgIGludCBpbV9mbG9hdF90eXBlOworICAgIGludCBhZGRfcGFyZW5zID0gMDsKKyAgICBpbnQgc2tpcF9yZSA9IDA7CisgICAgUHlfc3NpemVfdCBscGFkOworICAgIFB5X3NzaXplX3QgcnBhZDsKKyAgICBQeV9zc2l6ZV90IHRvdGFsOworICAgIFB5T2JqZWN0ICpyZV91bmljb2RlX3RtcCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmltX3VuaWNvZGVfdG1wID0gTlVMTDsKKworICAgIC8qIExvY2FsZSBzZXR0aW5ncywgZWl0aGVyIGZyb20gdGhlIGFjdHVhbCBsb2NhbGUgb3IKKyAgICAgICBmcm9tIGEgaGFyZC1jb2RlIHBzZXVkby1sb2NhbGUgKi8KKyAgICBMb2NhbGVJbmZvIGxvY2FsZSA9IFNUQVRJQ19MT0NBTEVfSU5GT19JTklUOworCisgICAgLyogWmVybyBwYWRkaW5nIGlzIG5vdCBhbGxvd2VkLiAqLworICAgIGlmIChmb3JtYXQtPmZpbGxfY2hhciA9PSAnMCcpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiWmVybyBwYWRkaW5nIGlzIG5vdCBhbGxvd2VkIGluIGNvbXBsZXggZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJzcGVjaWZpZXIiKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIE5laXRoZXIgaXMgJz0nIGFsaWdubWVudCAuICovCisgICAgaWYgKGZvcm1hdC0+YWxpZ24gPT0gJz0nKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIic9JyBhbGlnbm1lbnQgZmxhZyBpcyBub3QgYWxsb3dlZCBpbiBjb21wbGV4IGZvcm1hdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVyIik7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICByZSA9IFB5Q29tcGxleF9SZWFsQXNEb3VibGUodmFsdWUpOworICAgIGlmIChyZSA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpbSA9IFB5Q29tcGxleF9JbWFnQXNEb3VibGUodmFsdWUpOworICAgIGlmIChpbSA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIGlmIChmb3JtYXQtPmFsdGVybmF0ZSkKKyAgICAgICAgZmxhZ3MgfD0gUHlfRFRTRl9BTFQ7CisKKyAgICBpZiAodHlwZSA9PSAnXDAnKSB7CisgICAgICAgIC8qIE9taXR0ZWQgdHlwZSBzcGVjaWZpZXIuIFNob3VsZCBiZSBsaWtlIHN0cihzZWxmKS4gKi8KKyAgICAgICAgdHlwZSA9ICdyJzsKKyAgICAgICAgZGVmYXVsdF9wcmVjaXNpb24gPSAwOworICAgICAgICBpZiAocmUgPT0gMC4wICYmIGNvcHlzaWduKDEuMCwgcmUpID09IDEuMCkKKyAgICAgICAgICAgIHNraXBfcmUgPSAxOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRfcGFyZW5zID0gMTsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSAnbicpCisgICAgICAgIC8qICduJyBpcyB0aGUgc2FtZSBhcyAnZycsIGV4Y2VwdCBmb3IgdGhlIGxvY2FsZSB1c2VkIHRvCisgICAgICAgICAgIGZvcm1hdCB0aGUgcmVzdWx0LiBXZSB0YWtlIGNhcmUgb2YgdGhhdCBsYXRlci4gKi8KKyAgICAgICAgdHlwZSA9ICdnJzsKKworICAgIGlmIChwcmVjaXNpb24gPCAwKQorICAgICAgICBwcmVjaXNpb24gPSBkZWZhdWx0X3ByZWNpc2lvbjsKKyAgICBlbHNlIGlmICh0eXBlID09ICdyJykKKyAgICAgICAgdHlwZSA9ICdnJzsKKworICAgIC8qIENhc3QgInR5cGUiLCBiZWNhdXNlIGlmIHdlJ3JlIGluIHVuaWNvZGUgd2UgbmVlZCB0byBwYXNzIGEKKyAgICAgICA4LWJpdCBjaGFyLiBUaGlzIGlzIHNhZmUsIGJlY2F1c2Ugd2UndmUgcmVzdHJpY3RlZCB3aGF0ICJ0eXBlIgorICAgICAgIGNhbiBiZS4gKi8KKyAgICByZV9idWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcocmUsIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZV9mbG9hdF90eXBlKTsKKyAgICBpZiAocmVfYnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpbV9idWYgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoaW0sIChjaGFyKXR5cGUsIHByZWNpc2lvbiwgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbV9mbG9hdF90eXBlKTsKKyAgICBpZiAoaW1fYnVmID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIG5fcmVfZGlnaXRzID0gc3RybGVuKHJlX2J1Zik7CisgICAgbl9pbV9kaWdpdHMgPSBzdHJsZW4oaW1fYnVmKTsKKworICAgIC8qIFNpbmNlIHRoZXJlIGlzIG5vIHVuaWNvZGUgdmVyc2lvbiBvZiBQeU9TX2RvdWJsZV90b19zdHJpbmcsCisgICAgICAganVzdCB1c2UgdGhlIDggYml0IHZlcnNpb24gYW5kIHRoZW4gY29udmVydCB0byB1bmljb2RlLiAqLworICAgIHJlX3VuaWNvZGVfdG1wID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkocmVfYnVmLCBuX3JlX2RpZ2l0cyk7CisgICAgaWYgKHJlX3VuaWNvZGVfdG1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpX3JlID0gMDsKKworICAgIGltX3VuaWNvZGVfdG1wID0gX1B5VW5pY29kZV9Gcm9tQVNDSUkoaW1fYnVmLCBuX2ltX2RpZ2l0cyk7CisgICAgaWYgKGltX3VuaWNvZGVfdG1wID09IE5VTEwpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBpX2ltID0gMDsKKworICAgIC8qIElzIGEgc2lnbiBjaGFyYWN0ZXIgcHJlc2VudCBpbiB0aGUgb3V0cHV0PyAgSWYgc28sIHJlbWVtYmVyIGl0CisgICAgICAgYW5kIHNraXAgaXQgKi8KKyAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihyZV91bmljb2RlX3RtcCwgaV9yZSkgPT0gJy0nKSB7CisgICAgICAgIHJlX3NpZ25fY2hhciA9ICctJzsKKyAgICAgICAgKytpX3JlOworICAgICAgICAtLW5fcmVfZGlnaXRzOworICAgIH0KKyAgICBpZiAoUHlVbmljb2RlX1JFQURfQ0hBUihpbV91bmljb2RlX3RtcCwgaV9pbSkgPT0gJy0nKSB7CisgICAgICAgIGltX3NpZ25fY2hhciA9ICctJzsKKyAgICAgICAgKytpX2ltOworICAgICAgICAtLW5faW1fZGlnaXRzOworICAgIH0KKworICAgIC8qIERldGVybWluZSBpZiB3ZSBoYXZlIGFueSAicmVtYWluZGVyIiAoYWZ0ZXIgdGhlIGRpZ2l0cywgbWlnaHQgaW5jbHVkZQorICAgICAgIGRlY2ltYWwgb3IgZXhwb25lbnQgb3IgYm90aCAob3IgbmVpdGhlcikpICovCisgICAgcGFyc2VfbnVtYmVyKHJlX3VuaWNvZGVfdG1wLCBpX3JlLCBpX3JlICsgbl9yZV9kaWdpdHMsCisgICAgICAgICAgICAgICAgICZuX3JlX3JlbWFpbmRlciwgJnJlX2hhc19kZWNpbWFsKTsKKyAgICBwYXJzZV9udW1iZXIoaW1fdW5pY29kZV90bXAsIGlfaW0sIGlfaW0gKyBuX2ltX2RpZ2l0cywKKyAgICAgICAgICAgICAgICAgJm5faW1fcmVtYWluZGVyLCAmaW1faGFzX2RlY2ltYWwpOworCisgICAgLyogRGV0ZXJtaW5lIHRoZSBncm91cGluZywgc2VwYXJhdG9yLCBhbmQgZGVjaW1hbCBwb2ludCwgaWYgYW55LiAqLworICAgIGlmIChnZXRfbG9jYWxlX2luZm8oZm9ybWF0LT50eXBlID09ICduJyA/IExUX0NVUlJFTlRfTE9DQUxFIDoKKyAgICAgICAgICAgICAgICAgICAgICAgIChmb3JtYXQtPnRob3VzYW5kc19zZXBhcmF0b3JzID8KKyAgICAgICAgICAgICAgICAgICAgICAgICBMVF9ERUZBVUxUX0xPQ0FMRSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgTFRfTk9fTE9DQUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUpID09IC0xKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKiBUdXJuIG9mZiBhbnkgcGFkZGluZy4gV2UnbGwgZG8gaXQgbGF0ZXIgYWZ0ZXIgd2UndmUgY29tcG9zZWQKKyAgICAgICB0aGUgbnVtYmVycyB3aXRob3V0IHBhZGRpbmcuICovCisgICAgdG1wX2Zvcm1hdC5maWxsX2NoYXIgPSAnXDAnOworICAgIHRtcF9mb3JtYXQuYWxpZ24gPSAnPCc7CisgICAgdG1wX2Zvcm1hdC53aWR0aCA9IC0xOworCisgICAgLyogQ2FsY3VsYXRlIGhvdyBtdWNoIG1lbW9yeSB3ZSdsbCBuZWVkLiAqLworICAgIG5fcmVfdG90YWwgPSBjYWxjX251bWJlcl93aWR0aHMoJnJlX3NwZWMsIDAsIHJlX3NpZ25fY2hhciwgcmVfdW5pY29kZV90bXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpX3JlLCBpX3JlICsgbl9yZV9kaWdpdHMsIG5fcmVfcmVtYWluZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVfaGFzX2RlY2ltYWwsICZsb2NhbGUsICZ0bXBfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heGNoYXIpOworCisgICAgLyogU2FtZSBmb3JtYXR0aW5nLCBidXQgYWx3YXlzIGluY2x1ZGUgYSBzaWduLCB1bmxlc3MgdGhlIHJlYWwgcGFydCBpcworICAgICAqIGdvaW5nIHRvIGJlIG9taXR0ZWQsIGluIHdoaWNoIGNhc2Ugd2UgdXNlIHdoYXRldmVyIHNpZ24gY29udmVudGlvbiB3YXMKKyAgICAgKiByZXF1ZXN0ZWQgYnkgdGhlIG9yaWdpbmFsIGZvcm1hdC4gKi8KKyAgICBpZiAoIXNraXBfcmUpCisgICAgICAgIHRtcF9mb3JtYXQuc2lnbiA9ICcrJzsKKyAgICBuX2ltX3RvdGFsID0gY2FsY19udW1iZXJfd2lkdGhzKCZpbV9zcGVjLCAwLCBpbV9zaWduX2NoYXIsIGltX3VuaWNvZGVfdG1wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaV9pbSwgaV9pbSArIG5faW1fZGlnaXRzLCBuX2ltX3JlbWFpbmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltX2hhc19kZWNpbWFsLCAmbG9jYWxlLCAmdG1wX2Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhjaGFyKTsKKworICAgIGlmIChza2lwX3JlKQorICAgICAgICBuX3JlX3RvdGFsID0gMDsKKworICAgIC8qIEFkZCAxIGZvciB0aGUgJ2onLCBhbmQgb3B0aW9uYWxseSAyIGZvciBwYXJlbnMuICovCisgICAgY2FsY19wYWRkaW5nKG5fcmVfdG90YWwgKyBuX2ltX3RvdGFsICsgMSArIGFkZF9wYXJlbnMgKiAyLAorICAgICAgICAgICAgICAgICBmb3JtYXQtPndpZHRoLCBmb3JtYXQtPmFsaWduLCAmbHBhZCwgJnJwYWQsICZ0b3RhbCk7CisKKyAgICBpZiAobHBhZCB8fCBycGFkKQorICAgICAgICBtYXhjaGFyID0gUHlfTUFYKG1heGNoYXIsIGZvcm1hdC0+ZmlsbF9jaGFyKTsKKworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCB0b3RhbCwgbWF4Y2hhcikgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBya2luZCA9IHdyaXRlci0+a2luZDsKKyAgICByZGF0YSA9IHdyaXRlci0+ZGF0YTsKKworICAgIC8qIFBvcHVsYXRlIHRoZSBtZW1vcnkuIEZpcnN0LCB0aGUgcGFkZGluZy4gKi8KKyAgICByZXN1bHQgPSBmaWxsX3BhZGRpbmcod3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuX3JlX3RvdGFsICsgbl9pbV90b3RhbCArIDEgKyBhZGRfcGFyZW5zICogMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LT5maWxsX2NoYXI9PSdcMCcgPyAnICcgOiBmb3JtYXQtPmZpbGxfY2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbHBhZCwgcnBhZCk7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgaWYgKGFkZF9wYXJlbnMpIHsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCByZGF0YSwgd3JpdGVyLT5wb3MsICcoJyk7CisgICAgICAgIHdyaXRlci0+cG9zKys7CisgICAgfQorCisgICAgaWYgKCFza2lwX3JlKSB7CisgICAgICAgIHJlc3VsdCA9IGZpbGxfbnVtYmVyKHdyaXRlciwgJnJlX3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlX3VuaWNvZGVfdG1wLCBpX3JlLCBpX3JlICsgbl9yZV9kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIDApOworICAgICAgICBpZiAocmVzdWx0ID09IC0xKQorICAgICAgICAgICAgZ290byBkb25lOworICAgIH0KKyAgICByZXN1bHQgPSBmaWxsX251bWJlcih3cml0ZXIsICZpbV9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgIGltX3VuaWNvZGVfdG1wLCBpX2ltLCBpX2ltICsgbl9pbV9kaWdpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbGUsIDApOworICAgIGlmIChyZXN1bHQgPT0gLTEpCisgICAgICAgIGdvdG8gZG9uZTsKKyAgICBQeVVuaWNvZGVfV1JJVEUocmtpbmQsIHJkYXRhLCB3cml0ZXItPnBvcywgJ2onKTsKKyAgICB3cml0ZXItPnBvcysrOworCisgICAgaWYgKGFkZF9wYXJlbnMpIHsKKyAgICAgICAgUHlVbmljb2RlX1dSSVRFKHJraW5kLCByZGF0YSwgd3JpdGVyLT5wb3MsICcpJyk7CisgICAgICAgIHdyaXRlci0+cG9zKys7CisgICAgfQorCisgICAgd3JpdGVyLT5wb3MgKz0gcnBhZDsKKworZG9uZToKKyAgICBQeU1lbV9GcmVlKHJlX2J1Zik7CisgICAgUHlNZW1fRnJlZShpbV9idWYpOworICAgIFB5X1hERUNSRUYocmVfdW5pY29kZV90bXApOworICAgIFB5X1hERUNSRUYoaW1fdW5pY29kZV90bXApOworICAgIGZyZWVfbG9jYWxlX2luZm8oJmxvY2FsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKioqKioqKioqKiBidWlsdCBpbiBmb3JtYXR0ZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIGludAorZm9ybWF0X29iaihQeU9iamVjdCAqb2JqLCBfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCit7CisgICAgUHlPYmplY3QgKnN0cjsKKyAgICBpbnQgZXJyOworCisgICAgc3RyID0gUHlPYmplY3RfU3RyKG9iaik7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgZXJyID0gX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIHN0cik7CisgICAgUHlfREVDUkVGKHN0cik7CisgICAgcmV0dXJuIGVycjsKK30KKworaW50CitfUHlVbmljb2RlX0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OworCisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhvYmopKTsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikpCisgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9Xcml0ZVN0cih3cml0ZXIsIG9iaik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXRfb2JqKG9iaiwgd3JpdGVyKTsKKyAgICB9CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAncycsICc8JykpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHR5cGUgY29udmVyc2lvbj8gKi8KKyAgICBzd2l0Y2ggKGZvcm1hdC50eXBlKSB7CisgICAgY2FzZSAncyc6CisgICAgICAgIC8qIG5vIHR5cGUgY29udmVyc2lvbiBuZWVkZWQsIGFscmVhZHkgYSBzdHJpbmcuICBkbyB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXR1cm4gZm9ybWF0X3N0cmluZ19pbnRlcm5hbChvYmosICZmb3JtYXQsIHdyaXRlcik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogdW5rbm93biAqLworICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfQorCitpbnQKK19QeUxvbmdfRm9ybWF0QWR2YW5jZWRXcml0ZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5T2JqZWN0ICp0bXAgPSBOVUxMLCAqc3RyID0gTlVMTDsKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OworICAgIGludCByZXN1bHQgPSAtMTsKKworICAgIC8qIGNoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIG9mIHplcm8gbGVuZ3RoIGZvcm1hdCBzcGVjLCBtYWtlCisgICAgICAgaXQgZXF1aXZhbGVudCB0byBzdHIob2JqKSAqLworICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9iaikpCisgICAgICAgICAgICByZXR1cm4gX1B5TG9uZ19Gb3JtYXRXcml0ZXIod3JpdGVyLCBvYmosIDEwLCAwKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworICAgIH0KKworICAgIC8qIHBhcnNlIHRoZSBmb3JtYXRfc3BlYyAqLworICAgIGlmICghcGFyc2VfaW50ZXJuYWxfcmVuZGVyX2Zvcm1hdF9zcGVjKGZvcm1hdF9zcGVjLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmb3JtYXQsICdkJywgJz4nKSkKKyAgICAgICAgZ290byBkb25lOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdiJzoKKyAgICBjYXNlICdjJzoKKyAgICBjYXNlICdkJzoKKyAgICBjYXNlICdvJzoKKyAgICBjYXNlICd4JzoKKyAgICBjYXNlICdYJzoKKyAgICBjYXNlICduJzoKKyAgICAgICAgLyogbm8gdHlwZSBjb252ZXJzaW9uIG5lZWRlZCwgYWxyZWFkeSBhbiBpbnQgKG9yIGxvbmcpLiAgZG8KKyAgICAgICAgICAgdGhlIGZvcm1hdHRpbmcgKi8KKyAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2xvbmdfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB3cml0ZXIpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgIGNhc2UgJyUnOgorICAgICAgICAvKiBjb252ZXJ0IHRvIGZsb2F0ICovCisgICAgICAgIHRtcCA9IFB5TnVtYmVyX0Zsb2F0KG9iaik7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZG9uZTsKKyAgICAgICAgcmVzdWx0ID0gZm9ybWF0X2Zsb2F0X2ludGVybmFsKHRtcCwgJmZvcm1hdCwgd3JpdGVyKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKiB1bmtub3duICovCisgICAgICAgIHVua25vd25fcHJlc2VudGF0aW9uX3R5cGUoZm9ybWF0LnR5cGUsIG9iai0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKK2RvbmU6CisgICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hERUNSRUYoc3RyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitpbnQKK19QeUZsb2F0X0Zvcm1hdEFkdmFuY2VkV3JpdGVyKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBJbnRlcm5hbEZvcm1hdFNwZWMgZm9ybWF0OworCisgICAgLyogY2hlY2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgemVybyBsZW5ndGggZm9ybWF0IHNwZWMsIG1ha2UKKyAgICAgICBpdCBlcXVpdmFsZW50IHRvIHN0cihvYmopICovCisgICAgaWYgKHN0YXJ0ID09IGVuZCkKKyAgICAgICAgcmV0dXJuIGZvcm1hdF9vYmoob2JqLCB3cml0ZXIpOworCisgICAgLyogcGFyc2UgdGhlIGZvcm1hdF9zcGVjICovCisgICAgaWYgKCFwYXJzZV9pbnRlcm5hbF9yZW5kZXJfZm9ybWF0X3NwZWMoZm9ybWF0X3NwZWMsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdCwgJ1wwJywgJz4nKSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgLyogdHlwZSBjb252ZXJzaW9uPyAqLworICAgIHN3aXRjaCAoZm9ybWF0LnR5cGUpIHsKKyAgICBjYXNlICdcMCc6IC8qIE5vIGZvcm1hdCBjb2RlOiBsaWtlICdnJywgYnV0IHdpdGggYXQgbGVhc3Qgb25lIGRlY2ltYWwuICovCisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgY2FzZSAnbic6CisgICAgY2FzZSAnJSc6CisgICAgICAgIC8qIG5vIGNvbnZlcnNpb24sIGFscmVhZHkgYSBmbG9hdC4gIGRvIHRoZSBmb3JtYXR0aW5nICovCisgICAgICAgIHJldHVybiBmb3JtYXRfZmxvYXRfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB3cml0ZXIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogdW5rbm93biAqLworICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfQorCitpbnQKK19QeUNvbXBsZXhfRm9ybWF0QWR2YW5jZWRXcml0ZXIoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqb2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZm9ybWF0X3NwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIFB5X3NzaXplX3QgZW5kKQoreworICAgIEludGVybmFsRm9ybWF0U3BlYyBmb3JtYXQ7CisKKyAgICAvKiBjaGVjayBmb3IgdGhlIHNwZWNpYWwgY2FzZSBvZiB6ZXJvIGxlbmd0aCBmb3JtYXQgc3BlYywgbWFrZQorICAgICAgIGl0IGVxdWl2YWxlbnQgdG8gc3RyKG9iaikgKi8KKyAgICBpZiAoc3RhcnQgPT0gZW5kKQorICAgICAgICByZXR1cm4gZm9ybWF0X29iaihvYmosIHdyaXRlcik7CisKKyAgICAvKiBwYXJzZSB0aGUgZm9ybWF0X3NwZWMgKi8KKyAgICBpZiAoIXBhcnNlX2ludGVybmFsX3JlbmRlcl9mb3JtYXRfc3BlYyhmb3JtYXRfc3BlYywgc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCAnXDAnLCAnPicpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiB0eXBlIGNvbnZlcnNpb24/ICovCisgICAgc3dpdGNoIChmb3JtYXQudHlwZSkgeworICAgIGNhc2UgJ1wwJzogLyogTm8gZm9ybWF0IGNvZGU6IGxpa2UgJ2cnLCBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbC4gKi8KKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICBjYXNlICduJzoKKyAgICAgICAgLyogbm8gY29udmVyc2lvbiwgYWxyZWFkeSBhIGNvbXBsZXguICBkbyB0aGUgZm9ybWF0dGluZyAqLworICAgICAgICByZXR1cm4gZm9ybWF0X2NvbXBsZXhfaW50ZXJuYWwob2JqLCAmZm9ybWF0LCB3cml0ZXIpOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogdW5rbm93biAqLworICAgICAgICB1bmtub3duX3ByZXNlbnRhdGlvbl90eXBlKGZvcm1hdC50eXBlLCBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2Zyb3plbi5jIGIvUHl0aG9uL2Zyb3plbi5jCmluZGV4IGRkZjYyMjQuLjI1ZmRjMTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9mcm96ZW4uYworKysgYi9QeXRob24vZnJvemVuLmMKQEAgLTIsNiArMiw3IEBACiAvKiBEdW1teSBmcm96ZW4gbW9kdWxlcyBpbml0aWFsaXplciAqLwogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAiaW1wb3J0bGliLmgiCiAKIC8qIEluIG9yZGVyIHRvIHRlc3QgdGhlIHN1cHBvcnQgZm9yIGZyb3plbiBtb2R1bGVzLCBieSBkZWZhdWx0IHdlCiAgICBkZWZpbmUgYSBzaW5nbGUgZnJvemVuIG1vZHVsZSwgX19oZWxsb19fLiAgTG9hZGluZyBpdCB3aWxsIHByaW50CkBAIC0yOCw2ICsyOSw4IEBACiAjZGVmaW5lIFNJWkUgKGludClzaXplb2YoTV9fX2hlbGxvX18pCiAKIHN0YXRpYyBzdHJ1Y3QgX2Zyb3plbiBfUHlJbXBvcnRfRnJvemVuTW9kdWxlc1tdID0geworICAgIC8qIGltcG9ydGxpYiAqLworICAgIHsiX2Zyb3plbl9pbXBvcnRsaWIiLCBfUHlfTV9faW1wb3J0bGliLCAoaW50KXNpemVvZihfUHlfTV9faW1wb3J0bGliKX0sCiAgICAgLyogVGVzdCBtb2R1bGUgKi8KICAgICB7Il9faGVsbG9fXyIsIE1fX19oZWxsb19fLCBTSVpFfSwKICAgICAvKiBUZXN0IHBhY2thZ2UgKG5lZ2F0aXZlIHNpemUgaW5kaWNhdGVzIHBhY2thZ2UtbmVzcykgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRhcmdzLmMgYi9QeXRob24vZ2V0YXJncy5jCmluZGV4IGE3N2JiMDUuLjE4YzhlOTEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRhcmdzLmMKKysrIGIvUHl0aG9uL2dldGFyZ3MuYwpAQCAtMzMsMTYgKzMzLDMzIEBACiAjZGVmaW5lIEZMQUdfQ09NUEFUIDEKICNkZWZpbmUgRkxBR19TSVpFX1QgMgogCit0eXBlZGVmIGludCAoKmRlc3RyX3QpKFB5T2JqZWN0ICosIHZvaWQgKik7CisKKworLyogS2VlcCB0cmFjayBvZiAib2JqZWN0cyIgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIG9yIGluaXRpYWxpemVkIGFuZAorICAgd2hpY2ggd2lsbCBuZWVkIHRvIGJlIGRlYWxsb2NhdGVkIG9yIGNsZWFuZWQgdXAgc29tZWhvdyBpZiBvdmVyYWxsCisgICBwYXJzaW5nIGZhaWxzLgorKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgdm9pZCAqaXRlbTsKKyAgZGVzdHJfdCBkZXN0cnVjdG9yOworfSBmcmVlbGlzdGVudHJ5X3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgaW50IGZpcnN0X2F2YWlsYWJsZTsKKyAgZnJlZWxpc3RlbnRyeV90ICplbnRyaWVzOworfSBmcmVlbGlzdF90OworCiAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyBpbnQgdmdldGFyZ3MxKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgdmFfbGlzdCAqLCBpbnQpOwogc3RhdGljIHZvaWQgc2V0ZXJyb3IoaW50LCBjb25zdCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgY2hhciAqY29udmVydGl0ZW0oUHlPYmplY3QgKiwgY29uc3QgY2hhciAqKiwgdmFfbGlzdCAqLCBpbnQsIGludCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBQeU9iamVjdCAqKik7CisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBzaXplX3QsIGZyZWVsaXN0X3QgKik7CiBzdGF0aWMgY2hhciAqY29udmVydHR1cGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgY2hhciAqLCBzaXplX3QsIGludCwgUHlPYmplY3QgKiopOworICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiwgY2hhciAqLCBzaXplX3QsIGludCwgZnJlZWxpc3RfdCAqKTsKIHN0YXRpYyBjaGFyICpjb252ZXJ0c2ltcGxlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiosIHZhX2xpc3QgKiwgaW50LCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsIFB5T2JqZWN0ICoqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgZnJlZWxpc3RfdCAqKTsKIHN0YXRpYyBQeV9zc2l6ZV90IGNvbnZlcnRidWZmZXIoUHlPYmplY3QgKiwgdm9pZCAqKnAsIGNoYXIgKiopOwogc3RhdGljIGludCBnZXRidWZmZXIoUHlPYmplY3QgKiwgUHlfYnVmZmVyICosIGNoYXIqKik7CiAKQEAgLTEyMywxMTUgKzE0MCw1NCBAQAogCiAvKiBIYW5kbGUgY2xlYW51cCBvZiBhbGxvY2F0ZWQgbWVtb3J5IGluIGNhc2Ugb2YgZXhjZXB0aW9uICovCiAKLSNkZWZpbmUgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9QVFIgImdldGFyZ3MuY2xlYW51cF9wdHIiCi0jZGVmaW5lIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfQlVGRkVSICJnZXRhcmdzLmNsZWFudXBfYnVmZmVyIgotI2RlZmluZSBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0NPTlZFUlQgImdldGFyZ3MuY2xlYW51cF9jb252ZXJ0IgotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9wdHIoUHlPYmplY3QgKnNlbGYpCitzdGF0aWMgaW50CitjbGVhbnVwX3B0cihQeU9iamVjdCAqc2VsZiwgdm9pZCAqcHRyKQogewotICAgIHZvaWQgKnB0ciA9IFB5Q2Fwc3VsZV9HZXRQb2ludGVyKHNlbGYsIEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfUFRSKTsKICAgICBpZiAocHRyKSB7CiAgICAgICAgIFB5TWVtX0ZSRUUocHRyKTsKICAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX2J1ZmZlcihQeU9iamVjdCAqc2VsZikKLXsKLSAgICBQeV9idWZmZXIgKnB0ciA9IChQeV9idWZmZXIgKilQeUNhcHN1bGVfR2V0UG9pbnRlcihzZWxmLCBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0JVRkZFUik7Ci0gICAgaWYgKHB0cikgewotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKHB0cik7Ci0gICAgfQotfQotCi1zdGF0aWMgaW50Ci1hZGRjbGVhbnVwKHZvaWQgKnB0ciwgUHlPYmplY3QgKipmcmVlbGlzdCwgaW50IGlzX2J1ZmZlcikKLXsKLSAgICBQeU9iamVjdCAqY29iajsKLSAgICBjb25zdCBjaGFyICpuYW1lOwotICAgIFB5Q2Fwc3VsZV9EZXN0cnVjdG9yIGRlc3RyOwotCi0gICAgaWYgKGlzX2J1ZmZlcikgewotICAgICAgICBkZXN0ciA9IGNsZWFudXBfYnVmZmVyOwotICAgICAgICBuYW1lID0gR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9CVUZGRVI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZGVzdHIgPSBjbGVhbnVwX3B0cjsKLSAgICAgICAgbmFtZSA9IEdFVEFSR1NfQ0FQU1VMRV9OQU1FX0NMRUFOVVBfUFRSOwotICAgIH0KLQotICAgIGlmICghKmZyZWVsaXN0KSB7Ci0gICAgICAgICpmcmVlbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgIGlmICghKmZyZWVsaXN0KSB7Ci0gICAgICAgICAgICBkZXN0cihwdHIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY29iaiA9IFB5Q2Fwc3VsZV9OZXcocHRyLCBuYW1lLCBkZXN0cik7Ci0gICAgaWYgKCFjb2JqKSB7Ci0gICAgICAgIGRlc3RyKHB0cik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQoKmZyZWVsaXN0LCBjb2JqKSkgewotICAgICAgICBQeV9ERUNSRUYoY29iaik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKGNvYmopOwotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9jb252ZXJ0KFB5T2JqZWN0ICpzZWxmKQotewotICAgIHR5cGVkZWYgaW50ICgqZGVzdHJfdCkoUHlPYmplY3QgKiwgdm9pZCAqKTsKLSAgICBkZXN0cl90IGRlc3RyID0gKGRlc3RyX3QpUHlDYXBzdWxlX0dldENvbnRleHQoc2VsZik7Ci0gICAgdm9pZCAqcHRyID0gUHlDYXBzdWxlX0dldFBvaW50ZXIoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkdTX0NBUFNVTEVfTkFNRV9DTEVBTlVQX0NPTlZFUlQpOwotICAgIGlmIChwdHIgJiYgZGVzdHIpCi0gICAgICAgIGRlc3RyKE5VTEwsIHB0cik7Ci19Ci0KLXN0YXRpYyBpbnQKLWFkZGNsZWFudXBfY29udmVydCh2b2lkICpwdHIsIFB5T2JqZWN0ICoqZnJlZWxpc3QsIGludCAoKmRlc3RyKShQeU9iamVjdCosdm9pZCopKQotewotICAgIFB5T2JqZWN0ICpjb2JqOwotICAgIGlmICghKmZyZWVsaXN0KSB7Ci0gICAgICAgICpmcmVlbGlzdCA9IFB5TGlzdF9OZXcoMCk7Ci0gICAgICAgIGlmICghKmZyZWVsaXN0KSB7Ci0gICAgICAgICAgICBkZXN0cihOVUxMLCBwdHIpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgfQotICAgIGNvYmogPSBQeUNhcHN1bGVfTmV3KHB0ciwgR0VUQVJHU19DQVBTVUxFX05BTUVfQ0xFQU5VUF9DT05WRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXBfY29udmVydCk7Ci0gICAgaWYgKCFjb2JqKSB7Ci0gICAgICAgIGRlc3RyKE5VTEwsIHB0cik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKFB5Q2Fwc3VsZV9TZXRDb250ZXh0KGNvYmosIGRlc3RyKSA9PSAtMSkgewotICAgICAgICAvKiBUaGlzIHJlYWxseSBzaG91bGQgbm90IGhhcHBlbi4gKi8KLSAgICAgICAgUHlfRmF0YWxFcnJvcigiY2Fwc3VsZSByZWZ1c2VkIHNldHRpbmcgb2YgY29udGV4dC4iKTsKLSAgICB9Ci0gICAgaWYgKFB5TGlzdF9BcHBlbmQoKmZyZWVsaXN0LCBjb2JqKSkgewotICAgICAgICBQeV9ERUNSRUYoY29iaik7IC8qIFRoaXMgd2lsbCBhbHNvIGNhbGwgZGVzdHIuICovCi0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgUHlfREVDUkVGKGNvYmopOwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50Ci1jbGVhbnJldHVybihpbnQgcmV0dmFsLCBQeU9iamVjdCAqZnJlZWxpc3QpCitjbGVhbnVwX2J1ZmZlcihQeU9iamVjdCAqc2VsZiwgdm9pZCAqcHRyKQogewotICAgIGlmIChmcmVlbGlzdCAmJiByZXR2YWwgIT0gMCkgewotICAgICAgICAvKiBXZSB3ZXJlIHN1Y2Nlc3NmdWwsIHJlc2V0IHRoZSBkZXN0cnVjdG9ycyBzbyB0aGF0IHRoZXkKLSAgICAgICAgICAgZG9uJ3QgZ2V0IGNhbGxlZC4gKi8KLSAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeUxpc3RfR0VUX1NJWkUoZnJlZWxpc3QpLCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICAgICAgICBQeUNhcHN1bGVfU2V0RGVzdHJ1Y3RvcihQeUxpc3RfR0VUX0lURU0oZnJlZWxpc3QsIGkpLCBOVUxMKTsKKyAgICBQeV9idWZmZXIgKmJ1ZiA9IChQeV9idWZmZXIgKilwdHI7CisgICAgaWYgKGJ1ZikgeworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKGJ1Zik7CiAgICAgfQotICAgIFB5X1hERUNSRUYoZnJlZWxpc3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CithZGRjbGVhbnVwKHZvaWQgKnB0ciwgZnJlZWxpc3RfdCAqZnJlZWxpc3QsIGRlc3RyX3QgZGVzdHJ1Y3RvcikKK3sKKyAgICBpbnQgaW5kZXg7CisKKyAgICBpbmRleCA9IGZyZWVsaXN0LT5maXJzdF9hdmFpbGFibGU7CisgICAgZnJlZWxpc3QtPmZpcnN0X2F2YWlsYWJsZSArPSAxOworCisgICAgZnJlZWxpc3QtPmVudHJpZXNbaW5kZXhdLml0ZW0gPSBwdHI7CisgICAgZnJlZWxpc3QtPmVudHJpZXNbaW5kZXhdLmRlc3RydWN0b3IgPSBkZXN0cnVjdG9yOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK2NsZWFucmV0dXJuKGludCByZXR2YWwsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQoreworICAgIGludCBpbmRleDsKKworICAgIGlmIChyZXR2YWwgPT0gMCkgeworICAgICAgLyogQSBmYWlsdXJlIG9jY3VycmVkLCB0aGVyZWZvcmUgZXhlY3V0ZSBhbGwgb2YgdGhlIGNsZWFudXAKKyAgICAgICAgIGZ1bmN0aW9ucy4KKyAgICAgICovCisgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBmcmVlbGlzdC0+Zmlyc3RfYXZhaWxhYmxlOyArK2luZGV4KSB7CisgICAgICAgICAgZnJlZWxpc3QtPmVudHJpZXNbaW5kZXhdLmRlc3RydWN0b3IoTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlbGlzdC0+ZW50cmllc1tpbmRleF0uaXRlbSk7CisgICAgICB9CisgICAgfQorICAgIFB5TWVtX0ZSRUUoZnJlZWxpc3QtPmVudHJpZXMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTI1MCw3ICsyMDYsNyBAQAogICAgIGNvbnN0IGNoYXIgKmZvcm1hdHNhdmUgPSBmb3JtYXQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgY2hhciAqbXNnOwotICAgIFB5T2JqZWN0ICpmcmVlbGlzdCA9IE5VTEw7CisgICAgZnJlZWxpc3RfdCBmcmVlbGlzdCA9IHswLCBOVUxMfTsKICAgICBpbnQgY29tcGF0ID0gZmxhZ3MgJiBGTEFHX0NPTVBBVDsKIAogICAgIGFzc2VydChjb21wYXQgfHwgKGFyZ3MgIT0gKFB5T2JqZWN0KilOVUxMKSk7CkBAIC0zMDYsNjQgKzI2Miw2NiBAQAogCiAgICAgZm9ybWF0ID0gZm9ybWF0c2F2ZTsKIAorICAgIGZyZWVsaXN0LmVudHJpZXMgPSBQeU1lbV9ORVcoZnJlZWxpc3RlbnRyeV90LCBtYXgpOworICAgIGlmIChmcmVlbGlzdC5lbnRyaWVzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKGNvbXBhdCkgewogICAgICAgICBpZiAobWF4ID09IDApIHsKICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyB0YWtlcyBubyBhcmd1bWVudHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgbXNnYnVmKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgbm8gYXJndW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIik7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChtaW4gPT0gMSAmJiBtYXggPT0gMSkgewogICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYobXNnYnVmLCBzaXplb2YobXNnYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJXMgdGFrZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtc2didWYpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlcyB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiIiA6ICIoKSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbXNnID0gY29udmVydGl0ZW0oYXJncywgJmZvcm1hdCwgcF92YSwgZmxhZ3MsIGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksICZmcmVlbGlzdCk7CiAgICAgICAgICAgICBpZiAobXNnID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKICAgICAgICAgICAgIHNldGVycm9yKGxldmVsc1swXSwgbXNnLCBsZXZlbHMrMSwgZm5hbWUsIG1lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICJvbGQgc3R5bGUgZ2V0YXJncyBmb3JtYXQgdXNlcyBuZXcgZmVhdHVyZXMiKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soYXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgIm5ldyBzdHlsZSBnZXRhcmdzIGZvcm1hdCBidXQgYXJndW1lbnQgaXMgbm90IGEgdHVwbGUiKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIGxlbiA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAKICAgICBpZiAobGVuIDwgbWluIHx8IG1heCA8IGxlbikgewotICAgICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9TX3NucHJpbnRmKG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIlLjE1MHMlcyB0YWtlcyAlcyAlZCBhcmd1bWVudCVzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIiglbGQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm5hbWU9PU5VTEwgPyAiZnVuY3Rpb24iIDogZm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZuYW1lPT1OVUxMID8gIiIgOiAiKCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49PW1heCA/ICJleGFjdGx5IgotICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxlbiA8IG1pbiA/ICJhdCBsZWFzdCIgOiAiYXQgbW9zdCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA8IG1pbiA/IG1pbiA6IG1heCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbiA8IG1pbiA/IG1pbiA6IG1heCkgPT0gMSA/ICIiIDogInMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TQUZFX0RPV05DQVNUKGxlbiwgUHlfc3NpemVfdCwgbG9uZykpOwotICAgICAgICAgICAgbWVzc2FnZSA9IG1zZ2J1ZjsKLSAgICAgICAgfQotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtZXNzYWdlKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChtZXNzYWdlID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjE1MHMlcyB0YWtlcyAlcyAlZCBhcmd1bWVudCVzICglbGQgZ2l2ZW4pIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZT09TlVMTCA/ICIiIDogIigpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtaW49PW1heCA/ICJleGFjdGx5IgorICAgICAgICAgICAgICAgICAgICAgICAgIDogbGVuIDwgbWluID8gImF0IGxlYXN0IiA6ICJhdCBtb3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPCBtaW4gPyBtaW4gOiBtYXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgKGxlbiA8IG1pbiA/IG1pbiA6IG1heCkgPT0gMSA/ICIiIDogInMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QobGVuLCBQeV9zc2l6ZV90LCBsb25nKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIG1lc3NhZ2UpOworICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKQEAgLTM3NCw3ICszMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobXNnYnVmKSwgJmZyZWVsaXN0KTsKICAgICAgICAgaWYgKG1zZykgewogICAgICAgICAgICAgc2V0ZXJyb3IoaSsxLCBtc2csIGxldmVscywgZm5hbWUsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4MywxMCArMzQxLDEwIEBACiAgICAgICAgICpmb3JtYXQgIT0gJ3wnICYmICpmb3JtYXQgIT0gJzonICYmICpmb3JtYXQgIT0gJzsnKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJiYWQgZm9ybWF0IHN0cmluZzogJS4yMDBzIiwgZm9ybWF0c2F2ZSk7Ci0gICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAotICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsICZmcmVlbGlzdCk7CiB9CiAKIApAQCAtNDUwLDcgKzQwOCw3IEBACiBzdGF0aWMgY2hhciAqCiBjb252ZXJ0dHVwbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGludCB0b3BsZXZlbCwKLSAgICAgICAgICAgICBQeU9iamVjdCAqKmZyZWVsaXN0KQorICAgICAgICAgICAgIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewogICAgIGludCBsZXZlbCA9IDA7CiAgICAgaW50IG4gPSAwOwpAQCAtNTI1LDcgKzQ4Myw3IEBACiAKIHN0YXRpYyBjaGFyICoKIGNvbnZlcnRpdGVtKFB5T2JqZWN0ICphcmcsIGNvbnN0IGNoYXIgKipwX2Zvcm1hdCwgdmFfbGlzdCAqcF92YSwgaW50IGZsYWdzLAotICAgICAgICAgICAgaW50ICpsZXZlbHMsIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIFB5T2JqZWN0ICoqZnJlZWxpc3QpCisgICAgICAgICAgICBpbnQgKmxldmVscywgY2hhciAqbXNnYnVmLCBzaXplX3QgYnVmc2l6ZSwgZnJlZWxpc3RfdCAqZnJlZWxpc3QpCiB7CiAgICAgY2hhciAqbXNnOwogICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICpwX2Zvcm1hdDsKQEAgLTU1MCw5ICs1MDgsNiBAQAogCiAKIAotI2RlZmluZSBVTklDT0RFX0RFRkFVTFRfRU5DT0RJTkcoYXJnKSBcCi0gICAgX1B5VW5pY29kZV9Bc0RlZmF1bHRFbmNvZGVkU3RyaW5nKGFyZywgTlVMTCkKLQogLyogRm9ybWF0IGFuIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGVkIGJ5IGNvbnZlcnRzaW1wbGUoKS4gKi8KIAogc3RhdGljIGNoYXIgKgpAQCAtNTkzLDcgKzU0OCw3IEBACiAKIHN0YXRpYyBjaGFyICoKIGNvbnZlcnRzaW1wbGUoUHlPYmplY3QgKmFyZywgY29uc3QgY2hhciAqKnBfZm9ybWF0LCB2YV9saXN0ICpwX3ZhLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICAgIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIFB5T2JqZWN0ICoqZnJlZWxpc3QpCisgICAgICAgICAgICAgIGNoYXIgKm1zZ2J1Ziwgc2l6ZV90IGJ1ZnNpemUsIGZyZWVsaXN0X3QgKmZyZWVsaXN0KQogewogICAgIC8qIEZvciAjIGNvZGVzICovCiAjZGVmaW5lIEZFVENIX1NJWkUgICAgICBpbnQgKnE9TlVMTDtQeV9zc2l6ZV90ICpxMj1OVUxMO1wKQEAgLTYxNSw3ICs1NzAsNyBAQAogCiAgICAgY29uc3QgY2hhciAqZm9ybWF0ID0gKnBfZm9ybWF0OwogICAgIGNoYXIgYyA9ICpmb3JtYXQrKzsKLSAgICBQeU9iamVjdCAqdWFyZzsKKyAgICBjaGFyICpzYXJnOwogCiAgICAgc3dpdGNoIChjKSB7CiAKQEAgLTgzMiw2ICs3ODcsOCBAQAogICAgICAgICBjaGFyICpwID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOwogICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfU2l6ZShhcmcpID09IDEpCiAgICAgICAgICAgICAqcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKGFyZylbMF07CisgICAgICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfU2l6ZShhcmcpID09IDEpCisgICAgICAgICAgICAqcCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhhcmcpWzBdOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiYSBieXRlIHN0cmluZyBvZiBsZW5ndGggMSIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgYnJlYWs7CkBAIC04MzksMTEgKzc5NiwzMyBAQAogCiAgICAgY2FzZSAnQyc6IHsvKiB1bmljb2RlIGNoYXIgKi8KICAgICAgICAgaW50ICpwID0gdmFfYXJnKCpwX3ZhLCBpbnQgKik7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSAmJgotICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKGFyZykgPT0gMSkKLSAgICAgICAgICAgICpwID0gUHlVbmljb2RlX0FTX1VOSUNPREUoYXJnKVswXTsKLSAgICAgICAgZWxzZQorICAgICAgICBpbnQga2luZDsKKyAgICAgICAgdm9pZCAqZGF0YTsKKworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhhcmcpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImEgdW5pY29kZSBjaGFyYWN0ZXIiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisKKyAgICAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShhcmcpKQorICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKKworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoYXJnKSAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoImEgdW5pY29kZSBjaGFyYWN0ZXIiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CisKKyAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGFyZyk7CisgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShhcmcpOworICAgICAgICAqcCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIDApOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlICdwJzogey8qIGJvb2xlYW4gKnAqcmVkaWNhdGUgKi8KKyAgICAgICAgaW50ICpwID0gdmFfYXJnKCpwX3ZhLCBpbnQgKik7CisgICAgICAgIGludCB2YWwgPSBQeU9iamVjdF9Jc1RydWUoYXJnKTsKKyAgICAgICAgaWYgKHZhbCA+IDApCisgICAgICAgICAgICAqcCA9IDE7CisgICAgICAgIGVsc2UgaWYgKHZhbCA9PSAwKQorICAgICAgICAgICAgKnAgPSAwOworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTg1OCw3ICs4MzcsNyBAQAogICAgICAgICAgICAgaWYgKGdldGJ1ZmZlcihhcmcsIChQeV9idWZmZXIqKXAsICZidWYpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihidWYsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIGZvcm1hdCsrOwotICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIDEpKSB7CisgICAgICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgY2xlYW51cF9idWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCiAgICAgICAgICAgICAgICAgICAgIGFyZywgbXNnYnVmLCBidWZzaXplKTsKQEAgLTg5MSwyMCArODcwLDE5IEBACiAgICAgICAgICAgICBpZiAoYyA9PSAneicgJiYgYXJnID09IFB5X05vbmUpCiAgICAgICAgICAgICAgICAgUHlCdWZmZXJfRmlsbEluZm8ocCwgTlVMTCwgTlVMTCwgMCwgMSwgMCk7CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgIHVhcmcgPSBVTklDT0RFX0RFRkFVTFRfRU5DT0RJTkcoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAodWFyZyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgIHNhcmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgICAgIFB5QnVmZmVyX0ZpbGxJbmZvKHAsIGFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh1YXJnKSwgUHlCeXRlc19HRVRfU0laRSh1YXJnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAwKTsKKyAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9GaWxsSW5mbyhwLCBhcmcsIHNhcmcsIGxlbiwgMSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsgLyogYW55IGJ1ZmZlci1saWtlIG9iamVjdCAqLwogICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZjsKICAgICAgICAgICAgICAgICBpZiAoZ2V0YnVmZmVyKGFyZywgcCwgJmJ1ZikgPCAwKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihidWYsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKHAsIGZyZWVsaXN0LCAxKSkgeworICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIGNsZWFudXBfYnVmZmVyKSkgewogICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKAogICAgICAgICAgICAgICAgICAgICAiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC05MjAsMTIgKzg5OCwxMyBAQAogICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUoMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkgewotICAgICAgICAgICAgICAgIHVhcmcgPSBVTklDT0RFX0RFRkFVTFRfRU5DT0RJTkcoYXJnKTsKLSAgICAgICAgICAgICAgICBpZiAodWFyZyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgICAgIHNhcmcgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmIChzYXJnID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKENPTlZfVU5JQ09ERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcodWFyZyk7Ci0gICAgICAgICAgICAgICAgU1RPUkVfU0laRShQeUJ5dGVzX0dFVF9TSVpFKHVhcmcpKTsKKyAgICAgICAgICAgICAgICAqcCA9IHNhcmc7CisgICAgICAgICAgICAgICAgU1RPUkVfU0laRShsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7IC8qIGFueSBidWZmZXItbGlrZSBvYmplY3QgKi8KICAgICAgICAgICAgICAgICAvKiBYWFggUmVhbGx5PyAqLwpAQCAtOTM5LDI1ICs5MTgsMjUgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qICJzIiBvciAieiIgKi8KICAgICAgICAgICAgIGNoYXIgKipwID0gdmFfYXJnKCpwX3ZhLCBjaGFyICoqKTsKLSAgICAgICAgICAgIHVhcmcgPSBOVUxMOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBzYXJnID0gTlVMTDsKIAogICAgICAgICAgICAgaWYgKGMgPT0gJ3onICYmIGFyZyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgICAgICpwID0gTlVMTDsKICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgdWFyZyA9IFVOSUNPREVfREVGQVVMVF9FTkNPRElORyhhcmcpOwotICAgICAgICAgICAgICAgIGlmICh1YXJnID09IE5VTEwpCisgICAgICAgICAgICAgICAgc2FyZyA9IFB5VW5pY29kZV9Bc1VURjhBbmRTaXplKGFyZywgJmxlbik7CisgICAgICAgICAgICAgICAgaWYgKHNhcmcgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoQ09OVl9VTklDT0RFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyh1YXJnKTsKKyAgICAgICAgICAgICAgICAqcCA9IHNhcmc7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoYyA9PSAneicgPyAic3RyIG9yIE5vbmUiIDogInN0ciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwotICAgICAgICAgICAgaWYgKCpwICE9IE5VTEwgJiYgdWFyZyAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgKFB5X3NzaXplX3QpIHN0cmxlbigqcCkgIT0gUHlCeXRlc19HRVRfU0laRSh1YXJnKSkKKyAgICAgICAgICAgIGlmICgqcCAhPSBOVUxMICYmIHNhcmcgIT0gTlVMTCAmJiAoUHlfc3NpemVfdCkgc3RybGVuKCpwKSAhPSBsZW4pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCi0gICAgICAgICAgICAgICAgICAgIGMgPT0gJ3onID8gInN0ciB3aXRob3V0IG51bGwgYnl0ZXMgb3IgTm9uZSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAic3RyIHdpdGhvdXQgbnVsbCBieXRlcyIsCisgICAgICAgICAgICAgICAgICAgIGMgPT0gJ3onID8gInN0ciB3aXRob3V0IG51bGwgY2hhcmFjdGVycyBvciBOb25lIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMiLAogICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CkBAIC05NjYsOSArOTQ1LDEwIEBACiAgICAgY2FzZSAndSc6IC8qIHJhdyB1bmljb2RlIGJ1ZmZlciAoUHlfVU5JQ09ERSAqKSAqLwogICAgIGNhc2UgJ1onOiAvKiByYXcgdW5pY29kZSBidWZmZXIgb3IgTm9uZSAqLwogICAgIHsKKyAgICAgICAgUHlfVU5JQ09ERSAqKnAgPSB2YV9hcmcoKnBfdmEsIFB5X1VOSUNPREUgKiopOworCiAgICAgICAgIGlmICgqZm9ybWF0ID09ICcjJykgeyAvKiBhbnkgYnVmZmVyLWxpa2Ugb2JqZWN0ICovCiAgICAgICAgICAgICAvKiAicyMiIG9yICJaIyIgKi8KLSAgICAgICAgICAgIFB5X1VOSUNPREUgKipwID0gdmFfYXJnKCpwX3ZhLCBQeV9VTklDT0RFICoqKTsKICAgICAgICAgICAgIEZFVENIX1NJWkU7CiAKICAgICAgICAgICAgIGlmIChjID09ICdaJyAmJiBhcmcgPT0gUHlfTm9uZSkgewpAQCAtOTc2LDIzICs5NTYsMjcgQEAKICAgICAgICAgICAgICAgICBTVE9SRV9TSVpFKDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKGFyZykpIHsKLSAgICAgICAgICAgICAgICAqcCA9IFB5VW5pY29kZV9BU19VTklDT0RFKGFyZyk7Ci0gICAgICAgICAgICAgICAgU1RPUkVfU0laRShQeVVuaWNvZGVfR0VUX1NJWkUoYXJnKSk7CisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmICgqcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgICAgIFNUT1JFX1NJWkUobGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigic3RyIG9yIE5vbmUiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICBmb3JtYXQrKzsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qICJzIiBvciAiWiIgKi8KLSAgICAgICAgICAgIFB5X1VOSUNPREUgKipwID0gdmFfYXJnKCpwX3ZhLCBQeV9VTklDT0RFICoqKTsKLQogICAgICAgICAgICAgaWYgKGMgPT0gJ1onICYmIGFyZyA9PSBQeV9Ob25lKQogICAgICAgICAgICAgICAgICpwID0gTlVMTDsKICAgICAgICAgICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShhcmcpOwotICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmxlbigqcCkgIT0gUHlVbmljb2RlX0dFVF9TSVpFKGFyZykpCisgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICAgICAgKnAgPSBQeVVuaWNvZGVfQXNVbmljb2RlQW5kU2l6ZShhcmcsICZsZW4pOworICAgICAgICAgICAgICAgIGlmICgqcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBSRVRVUk5fRVJSX09DQ1VSUkVEOworICAgICAgICAgICAgICAgIGlmIChQeV9VTklDT0RFX3N0cmxlbigqcCkgIT0gbGVuKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlciBvciBOb25lIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHIgd2l0aG91dCBudWxsIGNoYXJhY3RlcnMgb3IgTm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycihjID09ICdaJyA/ICJzdHIgb3IgTm9uZSIgOiAic3RyIiwKQEAgLTExMTAsNyArMTA5NCw3IEBACiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgICAgIFJFVFVSTl9FUlJfT0NDVVJSRUQ7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKCpidWZmZXIsIGZyZWVsaXN0LCAwKSkgeworICAgICAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKCpidWZmZXIsIGZyZWVsaXN0LCBjbGVhbnVwX3B0cikpIHsKICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigKICAgICAgICAgICAgICAgICAgICAgICAgICIoY2xlYW51cCBwcm9ibGVtKSIsCkBAIC0xMTUyLDcgKzExMzYsNyBAQAogICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhZGRjbGVhbnVwKCpidWZmZXIsIGZyZWVsaXN0LCAwKSkgeworICAgICAgICAgICAgaWYgKGFkZGNsZWFudXAoKmJ1ZmZlciwgZnJlZWxpc3QsIGNsZWFudXBfcHRyKSkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzKTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKGNsZWFudXAgcHJvYmxlbSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC0xMTgzLDggKzExNjcsMTEgQEAKIAogICAgIGNhc2UgJ1UnOiB7IC8qIFB5VW5pY29kZSBvYmplY3QgKi8KICAgICAgICAgUHlPYmplY3QgKipwID0gdmFfYXJnKCpwX3ZhLCBQeU9iamVjdCAqKik7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soYXJnKSkKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKGFyZykgPT0gLTEpCisgICAgICAgICAgICAgICAgUkVUVVJOX0VSUl9PQ0NVUlJFRDsKICAgICAgICAgICAgICpwID0gYXJnOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJzdHIiLCBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTIxMyw3ICsxMjAwLDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gY29udmVydGVycigiKHVuc3BlY2lmaWVkKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICAgICAgaWYgKHJlcyA9PSBQeV9DTEVBTlVQX1NVUFBPUlRFRCAmJgotICAgICAgICAgICAgICAgIGFkZGNsZWFudXBfY29udmVydChhZGRyLCBmcmVlbGlzdCwgY29udmVydCkgPT0gLTEpCisgICAgICAgICAgICAgICAgYWRkY2xlYW51cChhZGRyLCBmcmVlbGlzdCwgY29udmVydCkgPT0gLTEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLCBtc2didWYsIGJ1ZnNpemUpOwogICAgICAgICB9CkBAIC0xMjQ0LDcgKzEyMzEsNyBAQAogICAgICAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgoUHlfYnVmZmVyKilwKTsKICAgICAgICAgICAgIHJldHVybiBjb252ZXJ0ZXJyKCJjb250aWd1b3VzIGJ1ZmZlciIsIGFyZywgbXNnYnVmLCBidWZzaXplKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYWRkY2xlYW51cChwLCBmcmVlbGlzdCwgMSkpIHsKKyAgICAgICAgaWYgKGFkZGNsZWFudXAocCwgZnJlZWxpc3QsIGNsZWFudXBfYnVmZmVyKSkgewogICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlcnIoCiAgICAgICAgICAgICAgICAgIihjbGVhbnVwIHByb2JsZW0pIiwKICAgICAgICAgICAgICAgICBhcmcsIG1zZ2J1ZiwgYnVmc2l6ZSk7CkBAIC0xNDMxLDggKzE0MTgsMTAgQEAKICAgICBpbnQgbGV2ZWxzWzMyXTsKICAgICBjb25zdCBjaGFyICpmbmFtZSwgKm1zZywgKmN1c3RvbV9tc2csICprZXl3b3JkOwogICAgIGludCBtaW4gPSBJTlRfTUFYOworICAgIGludCBtYXggPSBJTlRfTUFYOwogICAgIGludCBpLCBsZW4sIG5hcmdzLCBua2V5d29yZHM7Ci0gICAgUHlPYmplY3QgKmZyZWVsaXN0ID0gTlVMTCwgKmN1cnJlbnRfYXJnOworICAgIFB5T2JqZWN0ICpjdXJyZW50X2FyZzsKKyAgICBmcmVlbGlzdF90IGZyZWVsaXN0ID0gezAsIE5VTEx9OwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa2V5d29yZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa2V5d29yZHMpKTsKQEAgLTE0NTYsMzEgKzE0NDUsNjggQEAKICAgICBmb3IgKGxlbj0wOyBrd2xpc3RbbGVuXTsgbGVuKyspCiAgICAgICAgIGNvbnRpbnVlOwogCisgICAgZnJlZWxpc3QuZW50cmllcyA9IFB5TWVtX05FVyhmcmVlbGlzdGVudHJ5X3QsIGxlbik7CisgICAgaWYgKGZyZWVsaXN0LmVudHJpZXMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBuYXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoYXJncyk7CiAgICAgbmtleXdvcmRzID0gKGtleXdvcmRzID09IE5VTEwpID8gMCA6IFB5RGljdF9TaXplKGtleXdvcmRzKTsKICAgICBpZiAobmFyZ3MgKyBua2V5d29yZHMgPiBsZW4pIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIiVzJXMgdGFrZXMgYXQgbW9zdCAlZCAiCi0gICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQlcyAoJWQgZ2l2ZW4pIiwKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlcyVzIHRha2VzIGF0IG1vc3QgJWQgYXJndW1lbnQlcyAoJWQgZ2l2ZW4pIiwKICAgICAgICAgICAgICAgICAgICAgIChmbmFtZSA9PSBOVUxMKSA/ICJmdW5jdGlvbiIgOiBmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgIChmbmFtZSA9PSBOVUxMKSA/ICIiIDogIigpIiwKICAgICAgICAgICAgICAgICAgICAgIGxlbiwKICAgICAgICAgICAgICAgICAgICAgIChsZW4gPT0gMSkgPyAiIiA6ICJzIiwKICAgICAgICAgICAgICAgICAgICAgIG5hcmdzICsgbmtleXdvcmRzKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgIH0KIAogICAgIC8qIGNvbnZlcnQgdHVwbGUgYXJncyBhbmQga2V5d29yZCBhcmdzIGluIHNhbWUgbG9vcCwgdXNpbmcga3dsaXN0IHRvIGRyaXZlIHByb2Nlc3MgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAga2V5d29yZCA9IGt3bGlzdFtpXTsKICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJ3wnKSB7CisgICAgICAgICAgICBpZiAobWluICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICh8IHNwZWNpZmllZCB0d2ljZSkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgbWluID0gaTsKICAgICAgICAgICAgIGZvcm1hdCsrOworCisgICAgICAgICAgICBpZiAobWF4ICE9IElOVF9NQVgpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBmb3JtYXQgc3RyaW5nICgkIGJlZm9yZSB8KSIpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICgqZm9ybWF0ID09ICckJykgeworICAgICAgICAgICAgaWYgKG1heCAhPSBJTlRfTUFYKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgZm9ybWF0IHN0cmluZyAoJCBzcGVjaWZpZWQgdHdpY2UpIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1heCA9IGk7CisgICAgICAgICAgICBmb3JtYXQrKzsKKworICAgICAgICAgICAgaWYgKG1heCA8IG5hcmdzKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHRha2VzICVzICVkIHBvc2l0aW9uYWwgYXJndW1lbnRzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICglZCBnaXZlbikiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWluICE9IElOVF9NQVgpID8gImF0IG1vc3QiIDogImV4YWN0bHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgsIG5hcmdzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoSVNfRU5EX09GX0ZPUk1BVCgqZm9ybWF0KSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSBrZXl3b3JkIGxpc3QgZW50cmllcyAoJWQpIHRoYW4gIgogICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgc3BlY2lmaWVycyAoJWQpIiwgbGVuLCBpKTsKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgJmZyZWVsaXN0KTsKICAgICAgICAgfQogICAgICAgICBjdXJyZW50X2FyZyA9IE5VTEw7CiAgICAgICAgIGlmIChua2V5d29yZHMpIHsKQEAgLTE0OTQsMTEgKzE1MjAsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFyZ3VtZW50IGdpdmVuIGJ5IG5hbWUgKCclcycpICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwb3NpdGlvbiAoJWQpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZCwgaSsxKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5rZXl3b3JkcyAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICBlbHNlIGlmIChpIDwgbmFyZ3MpCiAgICAgICAgICAgICBjdXJyZW50X2FyZyA9IFB5VHVwbGVfR0VUX0lURU0oYXJncywgaSk7CiAKQEAgLTE1MDcsNyArMTUzMyw3IEBACiAgICAgICAgICAgICAgICAgbGV2ZWxzLCBtc2didWYsIHNpemVvZihtc2didWYpLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgaWYgKG1zZykgewogICAgICAgICAgICAgICAgIHNldGVycm9yKGkrMSwgbXNnLCBsZXZlbHMsIGZuYW1lLCBjdXN0b21fbXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KQEAgLTE1MTYsMTQgKzE1NDIsMTQgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJSZXF1aXJlZCBhcmd1bWVudCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiclcycgKHBvcyAlZCkgbm90IGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBrZXl3b3JkLCBpKzEpOwotICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICB9CiAgICAgICAgIC8qIGN1cnJlbnQgY29kZSByZXBvcnRzIHN1Y2Nlc3Mgd2hlbiBhbGwgcmVxdWlyZWQgYXJncwogICAgICAgICAgKiBmdWxmaWxsZWQgYW5kIG5vIGtleXdvcmQgYXJncyBsZWZ0LCB3aXRoIG5vIGZ1cnRoZXIKICAgICAgICAgICogdmFsaWRhdGlvbi4gWFhYIE1heWJlIHNraXAgdGhpcyBpbiBkZWJ1ZyBidWlsZCA/CiAgICAgICAgICAqLwogICAgICAgICBpZiAoIW5rZXl3b3JkcykKLSAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigxLCBmcmVlbGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIAogICAgICAgICAvKiBXZSBhcmUgaW50byBvcHRpb25hbCBhcmdzLCBza2lwIHRocnUgdG8gYW55IHJlbWFpbmluZwogICAgICAgICAgKiBrZXl3b3JkIGFyZ3MgKi8KQEAgLTE1MzEsMTUgKzE1NTcsMTUgQEAKICAgICAgICAgaWYgKG1zZykgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwgIiVzOiAnJXMnIiwgbXNnLAogICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7Ci0gICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKmZvcm1hdCAhPSAnfCcpIHsKKyAgICBpZiAoIUlTX0VORF9PRl9GT1JNQVQoKmZvcm1hdCkgJiYgKCpmb3JtYXQgIT0gJ3wnKSAmJiAoKmZvcm1hdCAhPSAnJCcpKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAibW9yZSBhcmd1bWVudCBzcGVjaWZpZXJzIHRoYW4ga2V5d29yZCBsaXN0IGVudHJpZXMgIgogICAgICAgICAgICAgIihyZW1haW5pbmcgZm9ybWF0OiclcycpIiwgZm9ybWF0KTsKLSAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsIGZyZWVsaXN0KTsKKyAgICAgICAgcmV0dXJuIGNsZWFucmV0dXJuKDAsICZmcmVlbGlzdCk7CiAgICAgfQogCiAgICAgLyogbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBleHRyYW5lb3VzIGtleXdvcmQgYXJndW1lbnRzICovCkBAIC0xNTUyLDcgKzE1NzgsNyBAQAogICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soa2V5KSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogY2hlY2sgdGhhdCBfUHlVbmljb2RlX0FzU3RyaW5nKCkgcmVzdWx0IGlzIG5vdCBOVUxMICovCiAgICAgICAgICAgICBrcyA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoa2V5KTsKQEAgLTE1NjksMTIgKzE1OTUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclVScgaXMgYW4gaW52YWxpZCBrZXl3b3JkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY2xlYW5yZXR1cm4oMCwgZnJlZWxpc3QpOworICAgICAgICAgICAgICAgIHJldHVybiBjbGVhbnJldHVybigwLCAmZnJlZWxpc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGNsZWFucmV0dXJuKDEsIGZyZWVsaXN0KTsKKyAgICByZXR1cm4gY2xlYW5yZXR1cm4oMSwgJmZyZWVsaXN0KTsKIH0KIAogCkBAIC0xNTg2LDggKzE2MTIsMTAgQEAKIAogICAgIHN3aXRjaCAoYykgewogCi0gICAgLyogc2ltcGxlIGNvZGVzCi0gICAgICogVGhlIGluZGl2aWR1YWwgdHlwZXMgKHNlY29uZCBhcmcgb2YgdmFfYXJnKSBhcmUgaXJyZWxldmFudCAqLworICAgIC8qCisgICAgICogY29kZXMgdGhhdCB0YWtlIGEgc2luZ2xlIGRhdGEgcG9pbnRlciBhcyBhbiBhcmd1bWVudAorICAgICAqICh0aGUgdHlwZSBvZiB0aGUgcG9pbnRlciBpcyBpcnJlbGV2YW50KQorICAgICAqLwogCiAgICAgY2FzZSAnYic6IC8qIGJ5dGUgLS0gdmVyeSBzaG9ydCBpbnQgKi8KICAgICBjYXNlICdCJzogLyogYnl0ZSBhcyBiaXRmaWVsZCAqLwpAQCAtMTYwMSwyMiArMTYyOSwyMSBAQAogICAgIGNhc2UgJ0wnOiAvKiBQWV9MT05HX0xPTkcgKi8KICAgICBjYXNlICdLJzogLyogUFlfTE9OR19MT05HIHNpemVkIGJpdGZpZWxkICovCiAjZW5kaWYKKyAgICBjYXNlICduJzogLyogUHlfc3NpemVfdCAqLwogICAgIGNhc2UgJ2YnOiAvKiBmbG9hdCAqLwogICAgIGNhc2UgJ2QnOiAvKiBkb3VibGUgKi8KICAgICBjYXNlICdEJzogLyogY29tcGxleCBkb3VibGUgKi8KICAgICBjYXNlICdjJzogLyogY2hhciAqLwogICAgIGNhc2UgJ0MnOiAvKiB1bmljb2RlIGNoYXIgKi8KKyAgICBjYXNlICdwJzogLyogYm9vbGVhbiBwcmVkaWNhdGUgKi8KKyAgICBjYXNlICdTJzogLyogc3RyaW5nIG9iamVjdCAqLworICAgIGNhc2UgJ1knOiAvKiBzdHJpbmcgb2JqZWN0ICovCisgICAgY2FzZSAnVSc6IC8qIHVuaWNvZGUgc3RyaW5nIG9iamVjdCAqLwogICAgICAgICB7CiAgICAgICAgICAgICAodm9pZCkgdmFfYXJnKCpwX3ZhLCB2b2lkICopOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgIGNhc2UgJ24nOiAvKiBQeV9zc2l6ZV90ICovCi0gICAgICAgIHsKLSAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIFB5X3NzaXplX3QgKik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCiAgICAgLyogc3RyaW5nIGNvZGVzICovCiAKICAgICBjYXNlICdlJzogLyogc3RyaW5nIHdpdGggZW5jb2RpbmcgKi8KQEAgLTE2NDksMTYgKzE2NzYsNiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgIC8qIG9iamVjdCBjb2RlcyAqLwotCi0gICAgY2FzZSAnUyc6IC8qIHN0cmluZyBvYmplY3QgKi8KLSAgICBjYXNlICdZJzogLyogc3RyaW5nIG9iamVjdCAqLwotICAgIGNhc2UgJ1UnOiAvKiB1bmljb2RlIHN0cmluZyBvYmplY3QgKi8KLSAgICAgICAgewotICAgICAgICAgICAgKHZvaWQpIHZhX2FyZygqcF92YSwgUHlPYmplY3QgKiopOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQogICAgIGNhc2UgJ08nOiAvKiBvYmplY3QgKi8KICAgICAgICAgewogICAgICAgICAgICAgaWYgKCpmb3JtYXQgPT0gJyEnKSB7CmRpZmYgLS1naXQgYS9QeXRob24vZ2V0Y29weXJpZ2h0LmMgYi9QeXRob24vZ2V0Y29weXJpZ2h0LmMKaW5kZXggZDFlMjU3OC4uZDgzYzZkYSAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGNvcHlyaWdodC5jCisrKyBiL1B5dGhvbi9nZXRjb3B5cmlnaHQuYwpAQCAtMTksNSArMTksNSBAQAogY29uc3QgY2hhciAqCiBQeV9HZXRDb3B5cmlnaHQodm9pZCkKIHsKLQlyZXR1cm4gY3BydDsKKyAgICByZXR1cm4gY3BydDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9ncmFtaW5pdC5jIGIvUHl0aG9uL2dyYW1pbml0LmMKaW5kZXggY2FiYzRkNi4uZTA0OTk5YiAxMDA2NDQKLS0tIGEvUHl0aG9uL2dyYW1pbml0LmMKKysrIGIvUHl0aG9uL2dyYW1pbml0LmMKQEAgLTE3OTEsNyArMTc5MSw3IEBACiAgICAgezE2NywgMX0sCiB9Owogc3RhdGljIGFyYyBhcmNzXzgwXzFbMl0gPSB7Ci0gICAgezksIDJ9LAorICAgIHsxNjgsIDJ9LAogICAgIHswLCAxfSwKIH07CiBzdGF0aWMgYXJjIGFyY3NfODBfMlsxXSA9IHsKQEAgLTE4MDIsMTcxICsxODAyLDE4OCBAQAogICAgIHsyLCBhcmNzXzgwXzF9LAogICAgIHsxLCBhcmNzXzgwXzJ9LAogfTsKLXN0YXRpYyBkZmEgZGZhc1s4MV0gPSB7Ci0gICAgezI1NiwgInNpbmdsZV9pbnB1dCIsIDAsIDMsIHN0YXRlc18wLAotICAgICAiXDAwNFwwNTBcMDYwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMjIwXDA0NVwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjA0In0sCi0gICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKLSAgICAgIlwyMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNCJ9LAotICAgIHsyNTgsICJldmFsX2lucHV0IiwgMCwgMywgc3RhdGVzXzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MjU5LCAiZGVjb3JhdG9yIiwgMCwgNywgc3RhdGVzXzMsCi0gICAgICJcMDAwXDAxMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MSwgImRlY29yYXRlZCIsIDAsIDMsIHN0YXRlc181LAotICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2MiwgImZ1bmNkZWYiLCAwLCA4LCBzdGF0ZXNfNiwKLSAgICAgIlwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjMsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzcsCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY0LCAidHlwZWRhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfOCwKLSAgICAgIlwwMDBcMDAwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjUsICJ0ZnBkZWYiLCAwLCA0LCBzdGF0ZXNfOSwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNjYsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTAsCi0gICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjY3LCAidmZwZGVmIiwgMCwgMiwgc3RhdGVzXzExLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI2OCwgInN0bXQiLCAwLCAyLCBzdGF0ZXNfMTIsCi0gICAgICJcMDAwXDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDQifSwKLSAgICB7MjY5LCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTMsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDAifSwKLSAgICB7MjcwLCAic21hbGxfc3RtdCIsIDAsIDIsIHN0YXRlc18xNCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwMCJ9LAotICAgIHsyNzEsICJleHByX3N0bXQiLCAwLCA2LCBzdGF0ZXNfMTUsCi0gICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MjcyLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE2LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezI3MywgImF1Z2Fzc2lnbiIsIDAsIDIsIHN0YXRlc18xNywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwzNzZcMDM3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzQsICJkZWxfc3RtdCIsIDAsIDMsIHN0YXRlc18xOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzUsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTksCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc2LCAiZmxvd19zdG10IiwgMCwgMiwgc3RhdGVzXzIwLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzQwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCi0gICAgezI3NywgImJyZWFrX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjc4LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyNzksICJyZXR1cm5fc3RtdCIsIDAsIDMsIHN0YXRlc18yMywKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODAsICJ5aWVsZF9zdG10IiwgMCwgMiwgc3RhdGVzXzI0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwIn0sCi0gICAgezI4MSwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjUsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgyLCAiaW1wb3J0X3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MjgzLCAiaW1wb3J0X25hbWUiLCAwLCAzLCBzdGF0ZXNfMjcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg0LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjgsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg1LCAiaW1wb3J0X2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMjksCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg2LCAiZG90dGVkX2FzX25hbWUiLCAwLCA0LCBzdGF0ZXNfMzAsCi0gICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMxLAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI4OCwgImRvdHRlZF9hc19uYW1lcyIsIDAsIDIsIHN0YXRlc18zMiwKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyODksICJkb3R0ZWRfbmFtZSIsIDAsIDIsIHN0YXRlc18zMywKLSAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTAsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTEsICJub25sb2NhbF9zdG10IiwgMCwgMywgc3RhdGVzXzM1LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MiwgImFzc2VydF9zdG10IiwgMCwgNSwgc3RhdGVzXzM2LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5MywgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzcsCi0gICAgICJcMDAwXDAxMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDQ1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDQifSwKLSAgICB7Mjk0LCAiaWZfc3RtdCIsIDAsIDgsIHN0YXRlc18zOCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTUsICJ3aGlsZV9zdG10IiwgMCwgOCwgc3RhdGVzXzM5LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5NiwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHsyOTcsICJ0cnlfc3RtdCIsIDAsIDEzLCBzdGF0ZXNfNDEsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDA0XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7Mjk4LCAid2l0aF9zdG10IiwgMCwgNSwgc3RhdGVzXzQyLAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezI5OSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180MywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMDAsICJleGNlcHRfY2xhdXNlIiwgMCwgNSwgc3RhdGVzXzQ0LAotICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMwMSwgInN1aXRlIiwgMCwgNSwgc3RhdGVzXzQ1LAotICAgICAiXDAwNFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwyNDBcMzQwXDIyM1wxNjBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMjAwIn0sCi0gICAgezMwMiwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDYsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzAzLCAidGVzdF9ub2NvbmQiLCAwLCAyLCBzdGF0ZXNfNDcsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzA0LCAibGFtYmRlZiIsIDAsIDUsIHN0YXRlc180OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDUsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc180OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMDYsICJvcl90ZXN0IiwgMCwgMiwgc3RhdGVzXzUwLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwNywgImFuZF90ZXN0IiwgMCwgMiwgc3RhdGVzXzUxLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwOCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzUyLAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMwOSwgImNvbXBhcmlzb24iLCAwLCAyLCBzdGF0ZXNfNTMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzEwLCAiY29tcF9vcCIsIDAsIDQsIHN0YXRlc181NCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDJcMDAwXDIyMFwxNzdcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMTEsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTUsCi0gICAgICJcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzEyLCAiZXhwciIsIDAsIDIsIHN0YXRlc181NiwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTMsICJ4b3JfZXhwciIsIDAsIDIsIHN0YXRlc181NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTQsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc181OCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTUsICJzaGlmdF9leHByIiwgMCwgMiwgc3RhdGVzXzU5LAotICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMxNiwgImFyaXRoX2V4cHIiLCAwLCAyLCBzdGF0ZXNfNjAsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE3LCAidGVybSIsIDAsIDIsIHN0YXRlc182MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMTgsICJmYWN0b3IiLCAwLCAzLCBzdGF0ZXNfNjIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzE5LCAicG93ZXIiLCAwLCA0LCBzdGF0ZXNfNjMsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTIwXDA3NlwwMDAifSwKLSAgICB7MzIwLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NCwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjEsICJ0ZXN0bGlzdF9jb21wIiwgMCwgNSwgc3RhdGVzXzY1LAotICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwIn0sCi0gICAgezMyMiwgInRyYWlsZXIiLCAwLCA3LCBzdGF0ZXNfNjYsCi0gICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMTAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDAifSwKLSAgICB7MzIzLCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc182NywKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjQsICJzdWJzY3JpcHQiLCAwLCA1LCBzdGF0ZXNfNjgsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI1LCAic2xpY2VvcCIsIDAsIDMsIHN0YXRlc182OSwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMjYsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjcsICJ0ZXN0bGlzdCIsIDAsIDMsIHN0YXRlc183MSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMjgsICJkaWN0b3JzZXRtYWtlciIsIDAsIDExLCBzdGF0ZXNfNzIsCi0gICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDAifSwKLSAgICB7MzI5LCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzMsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDQifSwKLSAgICB7MzMwLCAiYXJnbGlzdCIsIDAsIDgsIHN0YXRlc183NCwKLSAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMzEsICJhcmd1bWVudCIsIDAsIDQsIHN0YXRlc183NSwKLSAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMCJ9LAotICAgIHszMzIsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzYsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzMzLCAiY29tcF9mb3IiLCAwLCA2LCBzdGF0ZXNfNzcsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKLSAgICB7MzM0LCAiY29tcF9pZiIsIDAsIDQsIHN0YXRlc183OCwKLSAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAotICAgIHszMzUsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzc5LAotICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCi0gICAgezMzNiwgInlpZWxkX2V4cHIiLCAwLCAzLCBzdGF0ZXNfODAsCi0gICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDAifSwKK3N0YXRpYyBhcmMgYXJjc184MV8wWzJdID0geworICAgIHs3MywgMX0sCisgICAgezksIDJ9LAogfTsKLXN0YXRpYyBsYWJlbCBsYWJlbHNbMTY4XSA9IHsKK3N0YXRpYyBhcmMgYXJjc184MV8xWzFdID0geworICAgIHsyNCwgMn0sCit9Oworc3RhdGljIGFyYyBhcmNzXzgxXzJbMV0gPSB7CisgICAgezAsIDJ9LAorfTsKK3N0YXRpYyBzdGF0ZSBzdGF0ZXNfODFbM10gPSB7CisgICAgezIsIGFyY3NfODFfMH0sCisgICAgezEsIGFyY3NfODFfMX0sCisgICAgezEsIGFyY3NfODFfMn0sCit9Oworc3RhdGljIGRmYSBkZmFzWzgyXSA9IHsKKyAgICB7MjU2LCAic2luZ2xlX2lucHV0IiwgMCwgMywgc3RhdGVzXzAsCisgICAgICJcMDA0XDA1MFwwNjBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwyMjBcMDQ1XDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDRcMDAwIn0sCisgICAgezI1NywgImZpbGVfaW5wdXQiLCAwLCAyLCBzdGF0ZXNfMSwKKyAgICAgIlwyMDRcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICB7MjU4LCAiZXZhbF9pbnB1dCIsIDAsIDMsIHN0YXRlc18yLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHsyNTksICJkZWNvcmF0b3IiLCAwLCA3LCBzdGF0ZXNfMywKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYwLCAiZGVjb3JhdG9ycyIsIDAsIDIsIHN0YXRlc180LAorICAgICAiXDAwMFwwMTBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjEsICJkZWNvcmF0ZWQiLCAwLCAzLCBzdGF0ZXNfNSwKKyAgICAgIlwwMDBcMDEwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjYyLCAiZnVuY2RlZiIsIDAsIDgsIHN0YXRlc182LAorICAgICAiXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjMsICJwYXJhbWV0ZXJzIiwgMCwgNCwgc3RhdGVzXzcsCisgICAgICJcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NCwgInR5cGVkYXJnc2xpc3QiLCAwLCAxOCwgc3RhdGVzXzgsCisgICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NSwgInRmcGRlZiIsIDAsIDQsIHN0YXRlc185LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNjYsICJ2YXJhcmdzbGlzdCIsIDAsIDE4LCBzdGF0ZXNfMTAsCisgICAgICJcMDAwXDAwMFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI2NywgInZmcGRlZiIsIDAsIDIsIHN0YXRlc18xMSwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjY4LCAic3RtdCIsIDAsIDIsIHN0YXRlc18xMiwKKyAgICAgIlwwMDBcMDUwXDA2MFwyMDBcMDAwXDAwMFwwMDBcMjQwXDM0MFwyMjNcMTYwXDIyMFwwNDVcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDIwNFwwMDAifSwKKyAgICB7MjY5LCAic2ltcGxlX3N0bXQiLCAwLCA0LCBzdGF0ZXNfMTMsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCisgICAgezI3MCwgInNtYWxsX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTQsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCisgICAgezI3MSwgImV4cHJfc3RtdCIsIDAsIDYsIHN0YXRlc18xNSwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MjcyLCAidGVzdGxpc3Rfc3Rhcl9leHByIiwgMCwgMywgc3RhdGVzXzE2LAorICAgICAiXDAwMFwwNDBcMDQwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHsyNzMsICJhdWdhc3NpZ24iLCAwLCAyLCBzdGF0ZXNfMTcsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMzc2XDAzN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NCwgImRlbF9zdG10IiwgMCwgMywgc3RhdGVzXzE4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyNzUsICJwYXNzX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMTksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI3NiwgImZsb3dfc3RtdCIsIDAsIDIsIHN0YXRlc18yMCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDM0MFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDAifSwKKyAgICB7Mjc3LCAiYnJlYWtfc3RtdCIsIDAsIDIsIHN0YXRlc18yMSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc4LCAiY29udGludWVfc3RtdCIsIDAsIDIsIHN0YXRlc18yMiwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjc5LCAicmV0dXJuX3N0bXQiLCAwLCAzLCBzdGF0ZXNfMjMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MCwgInlpZWxkX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMjQsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwIn0sCisgICAgezI4MSwgInJhaXNlX3N0bXQiLCAwLCA1LCBzdGF0ZXNfMjUsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4MiwgImltcG9ydF9zdG10IiwgMCwgMiwgc3RhdGVzXzI2LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODMsICJpbXBvcnRfbmFtZSIsIDAsIDMsIHN0YXRlc18yNywKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg0LCAiaW1wb3J0X2Zyb20iLCAwLCA4LCBzdGF0ZXNfMjgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4NSwgImltcG9ydF9hc19uYW1lIiwgMCwgNCwgc3RhdGVzXzI5LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODYsICJkb3R0ZWRfYXNfbmFtZSIsIDAsIDQsIHN0YXRlc18zMCwKKyAgICAgIlwwMDBcMDAwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjg3LCAiaW1wb3J0X2FzX25hbWVzIiwgMCwgMywgc3RhdGVzXzMxLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyODgsICJkb3R0ZWRfYXNfbmFtZXMiLCAwLCAyLCBzdGF0ZXNfMzIsCisgICAgICJcMDAwXDAwMFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI4OSwgImRvdHRlZF9uYW1lIiwgMCwgMiwgc3RhdGVzXzMzLAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTAsICJnbG9iYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkxLCAibm9ubG9jYWxfc3RtdCIsIDAsIDMsIHN0YXRlc18zNSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MjkyLCAiYXNzZXJ0X3N0bXQiLCAwLCA1LCBzdGF0ZXNfMzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDEwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5MywgImNvbXBvdW5kX3N0bXQiLCAwLCAyLCBzdGF0ZXNfMzcsCisgICAgICJcMDAwXDAxMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMjBcMDQ1XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCisgICAgezI5NCwgImlmX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzgsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NSwgIndoaWxlX3N0bXQiLCAwLCA4LCBzdGF0ZXNfMzksCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5NiwgImZvcl9zdG10IiwgMCwgMTAsIHN0YXRlc180MCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7Mjk3LCAidHJ5X3N0bXQiLCAwLCAxMywgc3RhdGVzXzQxLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwNFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHsyOTgsICJ3aXRoX3N0bXQiLCAwLCA1LCBzdGF0ZXNfNDIsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezI5OSwgIndpdGhfaXRlbSIsIDAsIDQsIHN0YXRlc180MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzAwLCAiZXhjZXB0X2NsYXVzZSIsIDAsIDUsIHN0YXRlc180NCwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzAxLCAic3VpdGUiLCAwLCA1LCBzdGF0ZXNfNDUsCisgICAgICJcMDA0XDA0MFwwNDBcMjAwXDAwMFwwMDBcMDAwXDI0MFwzNDBcMjIzXDE2MFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwyMDBcMDAwIn0sCisgICAgezMwMiwgInRlc3QiLCAwLCA2LCBzdGF0ZXNfNDYsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwMywgInRlc3Rfbm9jb25kIiwgMCwgMiwgc3RhdGVzXzQ3LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDQsICJsYW1iZGVmIiwgMCwgNSwgc3RhdGVzXzQ4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMDUsICJsYW1iZGVmX25vY29uZCIsIDAsIDUsIHN0YXRlc180OSwKKyAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzA2LCAib3JfdGVzdCIsIDAsIDIsIHN0YXRlc181MCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzA3LCAiYW5kX3Rlc3QiLCAwLCAyLCBzdGF0ZXNfNTEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMwOCwgIm5vdF90ZXN0IiwgMCwgMywgc3RhdGVzXzUyLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMDksICJjb21wYXJpc29uIiwgMCwgMiwgc3RhdGVzXzUzLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTAsICJjb21wX29wIiwgMCwgNCwgc3RhdGVzXzU0LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMjIwXDE3N1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMTEsICJzdGFyX2V4cHIiLCAwLCAzLCBzdGF0ZXNfNTUsCisgICAgICJcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMxMiwgImV4cHIiLCAwLCAyLCBzdGF0ZXNfNTYsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMxMywgInhvcl9leHByIiwgMCwgMiwgc3RhdGVzXzU3LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTQsICJhbmRfZXhwciIsIDAsIDIsIHN0YXRlc181OCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE1LCAic2hpZnRfZXhwciIsIDAsIDIsIHN0YXRlc181OSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE2LCAiYXJpdGhfZXhwciIsIDAsIDIsIHN0YXRlc182MCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE3LCAidGVybSIsIDAsIDIsIHN0YXRlc182MSwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzE4LCAiZmFjdG9yIiwgMCwgMywgc3RhdGVzXzYyLAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMTksICJwb3dlciIsIDAsIDQsIHN0YXRlc182MywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzIwLCAiYXRvbSIsIDAsIDksIHN0YXRlc182NCwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzIxLCAidGVzdGxpc3RfY29tcCIsIDAsIDUsIHN0YXRlc182NSwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzIyLCAidHJhaWxlciIsIDAsIDcsIHN0YXRlc182NiwKKyAgICAgIlwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwxMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAwXDAwMFwwMDAifSwKKyAgICB7MzIzLCAic3Vic2NyaXB0bGlzdCIsIDAsIDMsIHN0YXRlc182NywKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDJcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI0LCAic3Vic2NyaXB0IiwgMCwgNSwgc3RhdGVzXzY4LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMjUsICJzbGljZW9wIiwgMCwgMywgc3RhdGVzXzY5LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMjYsICJleHBybGlzdCIsIDAsIDMsIHN0YXRlc183MCwKKyAgICAgIlwwMDBcMDQwXDA0MFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI3LCAidGVzdGxpc3QiLCAwLCAzLCBzdGF0ZXNfNzEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMyOCwgImRpY3RvcnNldG1ha2VyIiwgMCwgMTEsIHN0YXRlc183MiwKKyAgICAgIlwwMDBcMDQwXDA0MFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwyMDBcMDAwXDAwMFwwMDBcMjAwXDAyMFwwMDBcMDAwXDIwNlwxMjBcMDc2XDAwMFwwMDAifSwKKyAgICB7MzI5LCAiY2xhc3NkZWYiLCAwLCA4LCBzdGF0ZXNfNzMsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDRcMDAwIn0sCisgICAgezMzMCwgImFyZ2xpc3QiLCAwLCA4LCBzdGF0ZXNfNzQsCisgICAgICJcMDAwXDA0MFwwNDBcMjAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCisgICAgezMzMSwgImFyZ3VtZW50IiwgMCwgNCwgc3RhdGVzXzc1LAorICAgICAiXDAwMFwwNDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDIwMFwwMDBcMDAwXDAwMFwyMDBcMDIwXDAwMFwwMDBcMjA2XDEyMFwwNzZcMDAwXDAwMCJ9LAorICAgIHszMzIsICJjb21wX2l0ZXIiLCAwLCAyLCBzdGF0ZXNfNzYsCisgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIn0sCisgICAgezMzMywgImNvbXBfZm9yIiwgMCwgNiwgc3RhdGVzXzc3LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzQsICJjb21wX2lmIiwgMCwgNCwgc3RhdGVzXzc4LAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDIwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzUsICJlbmNvZGluZ19kZWNsIiwgMCwgMiwgc3RhdGVzXzc5LAorICAgICAiXDAwMFwwMDBcMDQwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMCJ9LAorICAgIHszMzYsICJ5aWVsZF9leHByIiwgMCwgMywgc3RhdGVzXzgwLAorICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAwXDAwMCJ9LAorICAgIHszMzcsICJ5aWVsZF9hcmciLCAwLCAzLCBzdGF0ZXNfODEsCisgICAgICJcMDAwXDA0MFwwNDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMjAyXDAwMFwwMDBcMDAwXDIwMFwwMjBcMDAwXDAwMFwyMDZcMTIwXDA3NlwwMDBcMDAwIn0sCit9Oworc3RhdGljIGxhYmVsIGxhYmVsc1sxNjldID0gewogICAgIHswLCAiRU1QVFkifSwKICAgICB7MjU2LCAwfSwKICAgICB7NCwgMH0sCkBAIC0yMTM1LDEwICsyMTUyLDExIEBACiAgICAgezMzNCwgMH0sCiAgICAgezMzNSwgMH0sCiAgICAgezEsICJ5aWVsZCJ9LAorICAgIHszMzcsIDB9LAogfTsKIGdyYW1tYXIgX1B5UGFyc2VyX0dyYW1tYXIgPSB7Ci0gICAgODEsCisgICAgODIsCiAgICAgZGZhcywKLSAgICB7MTY4LCBsYWJlbHN9LAorICAgIHsxNjksIGxhYmVsc30sCiAgICAgMjU2CiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydC5jIGIvUHl0aG9uL2ltcG9ydC5jCmluZGV4IGY2NTVlNTEuLjJmNzFiOTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnQuYworKysgYi9QeXRob24vaW1wb3J0LmMKQEAgLTgsNiArOCw3IEBACiAjaW5jbHVkZSAiZXJyY29kZS5oIgogI2luY2x1ZGUgIm1hcnNoYWwuaCIKICNpbmNsdWRlICJjb2RlLmgiCisjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvc2RlZnMuaCIKICNpbmNsdWRlICJpbXBvcnRkbC5oIgogCkBAIC0yNiwxNzYgKzI3LDM4IEBACiAjZW5kaWYKIAogCi0vKiBNYWdpYyB3b3JkIHRvIHJlamVjdCAucHljIGZpbGVzIGdlbmVyYXRlZCBieSBvdGhlciBQeXRob24gdmVyc2lvbnMuCi0gICBJdCBzaG91bGQgY2hhbmdlIGZvciBlYWNoIGluY29tcGF0aWJsZSBjaGFuZ2UgdG8gdGhlIGJ5dGVjb2RlLgotCi0gICBUaGUgdmFsdWUgb2YgQ1IgYW5kIExGIGlzIGluY29ycG9yYXRlZCBzbyBpZiB5b3UgZXZlciByZWFkIG9yIHdyaXRlCi0gICBhIC5weWMgZmlsZSBpbiB0ZXh0IG1vZGUgdGhlIG1hZ2ljIG51bWJlciB3aWxsIGJlIHdyb25nOyBhbHNvLCB0aGUKLSAgIEFwcGxlIE1QVyBjb21waWxlciBzd2FwcyB0aGVpciB2YWx1ZXMsIGJvdGNoaW5nIHN0cmluZyBjb25zdGFudHMuCi0KLSAgIFRoZSBtYWdpYyBudW1iZXJzIG11c3QgYmUgc3BhY2VkIGFwYXJ0IGF0IGxlYXN0IDIgdmFsdWVzLCBhcyB0aGUKLSAgIC1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KLSAgIG9kZCBudW1iZXJzIGZvciBzb21lIHRpbWUgbm93LgotCi0gICBUaGVyZSB3ZXJlIGEgdmFyaWV0eSBvZiBvbGQgc2NoZW1lcyBmb3Igc2V0dGluZyB0aGUgbWFnaWMgbnVtYmVyLgotICAgVGhlIGN1cnJlbnQgd29ya2luZyBzY2hlbWUgaXMgdG8gaW5jcmVtZW50IHRoZSBwcmV2aW91cyB2YWx1ZSBieQotICAgMTAuCi0KLSAgIFN0YXJ0aW5nIHdpdGggdGhlIGFkb3B0aW9uIG9mIFBFUCAzMTQ3IGluIFB5dGhvbiAzLjIsIGV2ZXJ5IGJ1bXAgaW4gbWFnaWMKLSAgIG51bWJlciBhbHNvIGluY2x1ZGVzIGEgbmV3ICJtYWdpYyB0YWciLCBpLmUuIGEgaHVtYW4gcmVhZGFibGUgc3RyaW5nIHVzZWQKLSAgIHRvIHJlcHJlc2VudCB0aGUgbWFnaWMgbnVtYmVyIGluIF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzLiAgV2hlbiB5b3UgY2hhbmdlCi0gICB0aGUgbWFnaWMgbnVtYmVyLCB5b3UgbXVzdCBhbHNvIHNldCBhIG5ldyB1bmlxdWUgbWFnaWMgdGFnLiAgR2VuZXJhbGx5IHRoaXMKLSAgIGNhbiBiZSBuYW1lZCBhZnRlciB0aGUgUHl0aG9uIG1ham9yIHZlcnNpb24gb2YgdGhlIG1hZ2ljIG51bWJlciBidW1wLCBidXQKLSAgIGl0IGNhbiByZWFsbHkgYmUgYW55dGhpbmcsIGFzIGxvbmcgYXMgaXQncyBkaWZmZXJlbnQgdGhhbiBhbnl0aGluZyBlbHNlCi0gICB0aGF0J3MgY29tZSBiZWZvcmUuICBUaGUgdGFncyBhcmUgaW5jbHVkZWQgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSwgc3RhcnRpbmcKLSAgIHdpdGggUHl0aG9uIDMuMmEwLgotCi0gICBLbm93biB2YWx1ZXM6Ci0gICAgICAgUHl0aG9uIDEuNTogICAyMDEyMQotICAgICAgIFB5dGhvbiAxLjUuMTogMjAxMjEKLSAgICAgICBQeXRob24gMS41LjI6IDIwMTIxCi0gICAgICAgUHl0aG9uIDEuNjogICA1MDQyOAotICAgICAgIFB5dGhvbiAyLjA6ICAgNTA4MjMKLSAgICAgICBQeXRob24gMi4wLjE6IDUwODIzCi0gICAgICAgUHl0aG9uIDIuMTogICA2MDIwMgotICAgICAgIFB5dGhvbiAyLjEuMTogNjAyMDIKLSAgICAgICBQeXRob24gMi4xLjI6IDYwMjAyCi0gICAgICAgUHl0aG9uIDIuMjogICA2MDcxNwotICAgICAgIFB5dGhvbiAyLjNhMDogNjIwMTEKLSAgICAgICBQeXRob24gMi4zYTA6IDYyMDIxCi0gICAgICAgUHl0aG9uIDIuM2EwOiA2MjAxMSAoISkKLSAgICAgICBQeXRob24gMi40YTA6IDYyMDQxCi0gICAgICAgUHl0aG9uIDIuNGEzOiA2MjA1MQotICAgICAgIFB5dGhvbiAyLjRiMTogNjIwNjEKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDcxCi0gICAgICAgUHl0aG9uIDIuNWEwOiA2MjA4MSAoYXN0LWJyYW5jaCkKLSAgICAgICBQeXRob24gMi41YTA6IDYyMDkxICh3aXRoKQotICAgICAgIFB5dGhvbiAyLjVhMDogNjIwOTIgKGNoYW5nZWQgV0lUSF9DTEVBTlVQIG9wY29kZSkKLSAgICAgICBQeXRob24gMi41YjM6IDYyMTAxIChmaXggd3JvbmcgY29kZTogZm9yIHgsIGluIC4uLikKLSAgICAgICBQeXRob24gMi41YjM6IDYyMTExIChmaXggd3JvbmcgY29kZTogeCArPSB5aWVsZCkKLSAgICAgICBQeXRob24gMi41YzE6IDYyMTIxIChmaXggd3JvbmcgbG5vdGFiIHdpdGggZm9yIGxvb3BzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmcgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiByZW1vdmVkKQotICAgICAgIFB5dGhvbiAyLjVjMjogNjIxMzEgKGZpeCB3cm9uZyBjb2RlOiBmb3IgeCwgaW4gLi4uIGluIGxpc3Rjb21wL2dlbmV4cCkKLSAgICAgICBQeXRob24gMi42YTA6IDYyMTUxIChwZWVwaG9sZSBvcHRpbWl6YXRpb25zIGFuZCBTVE9SRV9NQVAgb3Bjb2RlKQotICAgICAgIFB5dGhvbiAyLjZhMTogNjIxNjEgKFdJVEhfQ0xFQU5VUCBvcHRpbWl6YXRpb24pCi0gICAgICAgUHl0aG9uIDMwMDA6ICAgMzAwMAotICAgICAgICAgICAgICAgICAgICAgIDMwMTAgKHJlbW92ZWQgVU5BUllfQ09OVkVSVCkKLSAgICAgICAgICAgICAgICAgICAgICAzMDIwIChhZGRlZCBCVUlMRF9TRVQpCi0gICAgICAgICAgICAgICAgICAgICAgMzAzMCAoYWRkZWQga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgMzA0MCAoYWRkZWQgc2lnbmF0dXJlIGFubm90YXRpb25zKQotICAgICAgICAgICAgICAgICAgICAgIDMwNTAgKHByaW50IGJlY29tZXMgYSBmdW5jdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAzMDYwIChQRVAgMzExNSBtZXRhY2xhc3Mgc3ludGF4KQotICAgICAgICAgICAgICAgICAgICAgIDMwNjEgKHN0cmluZyBsaXRlcmFscyBiZWNvbWUgdW5pY29kZSkKLSAgICAgICAgICAgICAgICAgICAgICAzMDcxIChQRVAgMzEwOSByYWlzZSBjaGFuZ2VzKQotICAgICAgICAgICAgICAgICAgICAgIDMwODEgKFBFUCAzMTM3IG1ha2UgX19maWxlX18gYW5kIF9fbmFtZV9fIHVuaWNvZGUpCi0gICAgICAgICAgICAgICAgICAgICAgMzA5MSAoa2lsbCBzdHI4IGludGVybmluZykKLSAgICAgICAgICAgICAgICAgICAgICAzMTAxIChtZXJnZSBmcm9tIDIuNmEwLCBzZWUgNjIxNTEpCi0gICAgICAgICAgICAgICAgICAgICAgMzEwMyAoX19maWxlX18gcG9pbnRzIHRvIHNvdXJjZSBmaWxlKQotICAgICAgIFB5dGhvbiAzLjBhNDogMzExMSAoV0lUSF9DTEVBTlVQIG9wdGltaXphdGlvbikuCi0gICAgICAgUHl0aG9uIDMuMGE1OiAzMTMxIChsZXhpY2FsIGV4Y2VwdGlvbiBzdGFja2luZywgaW5jbHVkaW5nIFBPUF9FWENFUFQpCi0gICAgICAgUHl0aG9uIDMuMWEwOiAzMTQxIChvcHRpbWl6ZSBsaXN0LCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnM6Ci0gICAgICAgICAgICAgICBjaGFuZ2UgTElTVF9BUFBFTkQgYW5kIFNFVF9BREQsIGFkZCBNQVBfQUREKQotICAgICAgIFB5dGhvbiAzLjFhMDogMzE1MSAob3B0aW1pemUgY29uZGl0aW9uYWwgYnJhbmNoZXM6Ci0gICAgICAgICAgICAgICBpbnRyb2R1Y2UgUE9QX0pVTVBfSUZfRkFMU0UgYW5kIFBPUF9KVU1QX0lGX1RSVUUpCi0gICAgICAgUHl0aG9uIDMuMmEwOiAzMTYwIChhZGQgU0VUVVBfV0lUSCkKLSAgICAgICAgICAgICAgICAgICAgIHRhZzogY3B5dGhvbi0zMgotICAgICAgIFB5dGhvbiAzLjJhMTogMzE3MCAoYWRkIERVUF9UT1BfVFdPLCByZW1vdmUgRFVQX1RPUFggYW5kIFJPVF9GT1VSKQotICAgICAgICAgICAgICAgICAgICAgdGFnOiBjcHl0aG9uLTMyCi0gICAgICAgUHl0aG9uIDMuMmEyICAzMTgwIChhZGQgREVMRVRFX0RFUkVGKQotKi8KLQotLyogTUFHSUMgbXVzdCBjaGFuZ2Ugd2hlbmV2ZXIgdGhlIGJ5dGVjb2RlIGVtaXR0ZWQgYnkgdGhlIGNvbXBpbGVyIG1heSBubwotICAgbG9uZ2VyIGJlIHVuZGVyc3Rvb2QgYnkgb2xkZXIgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBldmFsIGxvb3AgKHVzdWFsbHkKLSAgIGR1ZSB0byB0aGUgYWRkaXRpb24gb2YgbmV3IG9wY29kZXMpCi0gICBUQUcgbXVzdCBjaGFuZ2UgZm9yIGVhY2ggbWFqb3IgUHl0aG9uIHJlbGVhc2UuIFRoZSBtYWdpYyBudW1iZXIgd2lsbCB0YWtlCi0gICBjYXJlIG9mIGFueSBieXRlY29kZSBjaGFuZ2VzIHRoYXQgb2NjdXIgZHVyaW5nIGRldmVsb3BtZW50LgotKi8KLSNkZWZpbmUgTUFHSUMgKDMxODAgfCAoKGxvbmcpJ1xyJzw8MTYpIHwgKChsb25nKSdcbic8PDI0KSkKLSNkZWZpbmUgVEFHICJjcHl0aG9uLTMyIgogI2RlZmluZSBDQUNIRURJUiAiX19weWNhY2hlX18iCi0vKiBDdXJyZW50IG1hZ2ljIHdvcmQgYW5kIHN0cmluZyB0YWcgYXMgZ2xvYmFscy4gKi8KLXN0YXRpYyBsb25nIHB5Y19tYWdpYyA9IE1BR0lDOwotc3RhdGljIGNvbnN0IGNoYXIgKnB5Y190YWcgPSBUQUc7CiAKLS8qIFNlZSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKCkgYmVsb3cgKi8KKy8qIFNlZSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25PYmplY3QoKSBiZWxvdyAqLwogc3RhdGljIFB5T2JqZWN0ICpleHRlbnNpb25zID0gTlVMTDsKIAorLyogRnVuY3Rpb24gZnJvbSBQYXJzZXIvdG9rZW5pemVyLmMgKi8KK2V4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoaW50LCBQeU9iamVjdCAqKTsKKwogLyogVGhpcyB0YWJsZSBpcyBkZWZpbmVkIGluIGNvbmZpZy5jOiAqLwogZXh0ZXJuIHN0cnVjdCBfaW5pdHRhYiBfUHlJbXBvcnRfSW5pdHRhYltdOwogCi0vKiBNZXRob2QgZnJvbSBQYXJzZXIvdG9rZW5pemVyLmMgKi8KLWV4dGVybiBjaGFyICogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGludCk7Ci0KIHN0cnVjdCBfaW5pdHRhYiAqUHlJbXBvcnRfSW5pdHRhYiA9IF9QeUltcG9ydF9Jbml0dGFiOwogCi0vKiB0aGVzZSB0YWJsZXMgZGVmaW5lIHRoZSBtb2R1bGUgc3VmZml4ZXMgdGhhdCBQeXRob24gcmVjb2duaXplcyAqLwotc3RydWN0IGZpbGVkZXNjciAqIF9QeUltcG9ydF9GaWxldGFiID0gTlVMTDsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYltdID0gewotICAgIHsiLnB5IiwgIlUiLCBQWV9TT1VSQ0V9LAotI2lmZGVmIE1TX1dJTkRPV1MKLSAgICB7Ii5weXciLCAiVSIsIFBZX1NPVVJDRX0sCi0jZW5kaWYKLSAgICB7Ii5weWMiLCAicmIiLCBQWV9DT01QSUxFRH0sCi0gICAgezAsIDB9Ci19OwotCitzdGF0aWMgUHlPYmplY3QgKmluaXRzdHIgPSBOVUxMOwogCiAvKiBJbml0aWFsaXplIHRoaW5ncyAqLwogCiB2b2lkCiBfUHlJbXBvcnRfSW5pdCh2b2lkKQogewotICAgIGNvbnN0IHN0cnVjdCBmaWxlZGVzY3IgKnNjYW47Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmlsZXRhYjsKLSAgICBpbnQgY291bnREID0gMDsKLSAgICBpbnQgY291bnRTID0gMDsKLQotICAgIC8qIHByZXBhcmUgX1B5SW1wb3J0X0ZpbGV0YWI6IGNvcHkgZW50cmllcyBmcm9tCi0gICAgICAgX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiIGFuZCBfUHlJbXBvcnRfU3RhbmRhcmRGaWxldGFiLgotICAgICAqLwotI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCi0gICAgZm9yIChzY2FuID0gX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiOyBzY2FuLT5zdWZmaXggIT0gTlVMTDsgKytzY2FuKQotICAgICAgICArK2NvdW50RDsKLSNlbmRpZgotICAgIGZvciAoc2NhbiA9IF9QeUltcG9ydF9TdGFuZGFyZEZpbGV0YWI7IHNjYW4tPnN1ZmZpeCAhPSBOVUxMOyArK3NjYW4pCi0gICAgICAgICsrY291bnRTOwotICAgIGZpbGV0YWIgPSBQeU1lbV9ORVcoc3RydWN0IGZpbGVkZXNjciwgY291bnREICsgY291bnRTICsgMSk7Ci0gICAgaWYgKGZpbGV0YWIgPT0gTlVMTCkKLSAgICAgICAgUHlfRmF0YWxFcnJvcigiQ2FuJ3QgaW5pdGlhbGl6ZSBpbXBvcnQgZmlsZSB0YWJsZS4iKTsKLSNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwotICAgIG1lbWNweShmaWxldGFiLCBfUHlJbXBvcnRfRHluTG9hZEZpbGV0YWIsCi0gICAgICAgICAgIGNvdW50RCAqIHNpemVvZihzdHJ1Y3QgZmlsZWRlc2NyKSk7Ci0jZW5kaWYKLSAgICBtZW1jcHkoZmlsZXRhYiArIGNvdW50RCwgX1B5SW1wb3J0X1N0YW5kYXJkRmlsZXRhYiwKLSAgICAgICAgICAgY291bnRTICogc2l6ZW9mKHN0cnVjdCBmaWxlZGVzY3IpKTsKLSAgICBmaWxldGFiW2NvdW50RCArIGNvdW50U10uc3VmZml4ID0gTlVMTDsKLQotICAgIF9QeUltcG9ydF9GaWxldGFiID0gZmlsZXRhYjsKLQotICAgIGlmIChQeV9PcHRpbWl6ZUZsYWcpIHsKLSAgICAgICAgLyogUmVwbGFjZSAiLnB5YyIgd2l0aCAiLnB5byIgaW4gX1B5SW1wb3J0X0ZpbGV0YWIgKi8KLSAgICAgICAgZm9yICg7IGZpbGV0YWItPnN1ZmZpeCAhPSBOVUxMOyBmaWxldGFiKyspIHsKLSAgICAgICAgICAgIGlmIChzdHJjbXAoZmlsZXRhYi0+c3VmZml4LCAiLnB5YyIpID09IDApCi0gICAgICAgICAgICAgICAgZmlsZXRhYi0+c3VmZml4ID0gIi5weW8iOwotICAgICAgICB9Ci0gICAgfQorICAgIGluaXRzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19pbml0X18iKTsKKyAgICBpZiAoaW5pdHN0ciA9PSBOVUxMKQorICAgICAgICBQeV9GYXRhbEVycm9yKCJDYW4ndCBpbml0aWFsaXplIGltcG9ydCB2YXJpYWJsZXMiKTsKIH0KIAogdm9pZAogX1B5SW1wb3J0SG9va3NfSW5pdCh2b2lkKQogewotICAgIFB5T2JqZWN0ICp2LCAqcGF0aF9ob29rcyA9IE5VTEwsICp6aW1waW1wb3J0OworICAgIFB5T2JqZWN0ICp2LCAqcGF0aF9ob29rcyA9IE5VTEw7CiAgICAgaW50IGVyciA9IDA7CiAKLSAgICAvKiBhZGRpbmcgc3lzLnBhdGhfaG9va3MgYW5kIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlLCBzZXR0aW5nIHVwCi0gICAgICAgemlwaW1wb3J0ICovCi0gICAgaWYgKFB5VHlwZV9SZWFkeSgmUHlOdWxsSW1wb3J0ZXJfVHlwZSkgPCAwKQotICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBpbnN0YWxsaW5nIHppcGltcG9ydCBob29rXG4iKTsKLQorICAgIC8qIGFkZGluZyBzeXMucGF0aF9ob29rcyBhbmQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUgKi8KICAgICB2ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjE2LDExICs3OSwyNSBAQAogICAgIGVyciA9IFB5U3lzX1NldE9iamVjdCgicGF0aF9ob29rcyIsIHBhdGhfaG9va3MpOwogICAgIGlmIChlcnIpIHsKICAgZXJyb3I6Ci0gICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImluaXRpYWxpemluZyBzeXMubWV0YV9wYXRoLCBzeXMucGF0aF9ob29rcywgIgotICAgICAgICAgICAgICAgICAgICAgICJwYXRoX2ltcG9ydGVyX2NhY2hlLCBvciBOdWxsSW1wb3J0ZXIgZmFpbGVkIgotICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgUHlFcnJfUHJpbnQoKTsKKyAgICBQeV9GYXRhbEVycm9yKCJpbml0aWFsaXppbmcgc3lzLm1ldGFfcGF0aCwgc3lzLnBhdGhfaG9va3MsICIKKyAgICAgICAgICAgICAgICAgICJvciBwYXRoX2ltcG9ydGVyX2NhY2hlIGZhaWxlZCIpOwogICAgIH0KKyAgICBQeV9ERUNSRUYocGF0aF9ob29rcyk7Cit9CisKK3ZvaWQKK19QeUltcG9ydFppcF9Jbml0KHZvaWQpCit7CisgICAgUHlPYmplY3QgKnBhdGhfaG9va3MsICp6aW1waW1wb3J0OworICAgIGludCBlcnIgPSAwOworCisgICAgcGF0aF9ob29rcyA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9ob29rcyIpOworICAgIGlmIChwYXRoX2hvb2tzID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCisgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGluc3RhbGxpbmcgemlwaW1wb3J0IGhvb2tcbiIpOwogCiAgICAgemltcGltcG9ydCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgiemlwaW1wb3J0Iik7CiAgICAgaWYgKHppbXBpbXBvcnQgPT0gTlVMTCkgewpAQCAtMjI5LDggKzEwNiw5IEBACiAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjYW4ndCBpbXBvcnQgemlwaW1wb3J0XG4iKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICp6aXBpbXBvcnRlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoemltcGltcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiemlwaW1wb3J0ZXIiKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoemlwaW1wb3J0ZXIpOworICAgICAgICBQeU9iamVjdCAqemlwaW1wb3J0ZXIgPSBfUHlPYmplY3RfR2V0QXR0cklkKHppbXBpbXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfemlwaW1wb3J0ZXIpOwogICAgICAgICBQeV9ERUNSRUYoemltcGltcG9ydCk7CiAgICAgICAgIGlmICh6aXBpbXBvcnRlciA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBObyB6aXBpbXBvcnRlciBvYmplY3QgLS0gb2theSAqLwpAQCAtMjM5LDE3ICsxMTcsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgIiMgY2FuJ3QgaW1wb3J0IHppcGltcG9ydC56aXBpbXBvcnRlclxuIik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAvKiBzeXMucGF0aF9ob29rcy5hcHBlbmQoemlwaW1wb3J0ZXIpICovCi0gICAgICAgICAgICBlcnIgPSBQeUxpc3RfQXBwZW5kKHBhdGhfaG9va3MsIHppcGltcG9ydGVyKTsKKyAgICAgICAgICAgIC8qIHN5cy5wYXRoX2hvb2tzLmluc2VydCgwLCB6aXBpbXBvcnRlcikgKi8KKyAgICAgICAgICAgIGVyciA9IFB5TGlzdF9JbnNlcnQocGF0aF9ob29rcywgMCwgemlwaW1wb3J0ZXIpOwogICAgICAgICAgICAgUHlfREVDUkVGKHppcGltcG9ydGVyKTsKLSAgICAgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgICBpZiAoZXJyIDwgMCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCiAgICAgICAgICAgICAgICAgICAgICIjIGluc3RhbGxlZCB6aXBpbXBvcnQgaG9va1xuIik7CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfREVDUkVGKHBhdGhfaG9va3MpOworCisgICAgcmV0dXJuOworCisgIGVycm9yOgorICAgIFB5RXJyX1ByaW50KCk7CisgICAgUHlfRmF0YWxFcnJvcigiaW5pdGlhbGl6aW5nIHppcGltcG9ydCBmYWlsZWQiKTsKIH0KIAogLyogTG9ja2luZyBwcmltaXRpdmVzIHRvIHByZXZlbnQgcGFyYWxsZWwgaW1wb3J0cyBvZiB0aGUgc2FtZSBtb2R1bGUKQEAgLTMxOSw3ICsyMDMsNyBAQAogICAgICAgICAvKiBGb3JrZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBpbXBvcnQgKi8KICAgICAgICAgbG9uZyBtZSA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKICAgICAgICAgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKGltcG9ydF9sb2NrLCAwKTsKLQkvKiBYWFg6IGNhbiB0aGUgcHJldmlvdXMgbGluZSBmYWlsPyAqLworICAgICAgICAvKiBYWFg6IGNhbiB0aGUgcHJldmlvdXMgbGluZSBmYWlsPyAqLwogICAgICAgICBpbXBvcnRfbG9ja190aHJlYWQgPSBtZTsKICAgICAgICAgaW1wb3J0X2xvY2tfbGV2ZWwtLTsKICAgICB9IGVsc2UgewpAQCAtMzY5LDggKzI1Myw2IEBACiB7CiAgICAgUHlfWERFQ1JFRihleHRlbnNpb25zKTsKICAgICBleHRlbnNpb25zID0gTlVMTDsKLSAgICBQeU1lbV9ERUwoX1B5SW1wb3J0X0ZpbGV0YWIpOwotICAgIF9QeUltcG9ydF9GaWxldGFiID0gTlVMTDsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChpbXBvcnRfbG9jayAhPSBOVUxMKSB7CiAgICAgICAgIFB5VGhyZWFkX2ZyZWVfbG9jayhpbXBvcnRfbG9jayk7CkBAIC0zNzksMTQgKzI2MSw2IEBACiAjZW5kaWYKIH0KIAotc3RhdGljIHZvaWQKLWltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcih2b2lkKQotewotICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HZXQoKS0+aW50ZXJwOwotICAgIGlmIChpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nICE9IE5VTEwpCi0gICAgICAgIFB5RGljdF9DbGVhcihpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nKTsKLX0KLQogLyogSGVscGVyIGZvciBzeXMgKi8KIAogUHlPYmplY3QgKgpAQCAtNDIzLDcgKzI5Nyw2IEBACiBQeUltcG9ydF9DbGVhbnVwKHZvaWQpCiB7CiAgICAgUHlfc3NpemVfdCBwb3MsIG5kb25lOwotICAgIGNoYXIgKm5hbWU7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqZGljdDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycDsKICAgICBQeU9iamVjdCAqbW9kdWxlcyA9IGludGVycC0+bW9kdWxlczsKQEAgLTQ5NiwxNCArMzY5LDEzIEBACiAgICAgICAgICAgICBpZiAodmFsdWUtPm9iX3JlZmNudCAhPSAxKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVjayhrZXkpICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewotICAgICAgICAgICAgICAgIG5hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKGtleSk7Ci0gICAgICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAiYnVpbHRpbnMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhrZXksICJidWlsdGlucyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgInN5cyIpID09IDApCisgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgInN5cyIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgICAgICAgICAiIyBjbGVhbnVwWzFdICVzXG4iLCBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKAorICAgICAgICAgICAgICAgICAgICAgICAgIiMgY2xlYW51cFsxXSAlVVxuIiwga2V5KTsKICAgICAgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIodmFsdWUpOwogICAgICAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtKG1vZHVsZXMsIGtleSwgUHlfTm9uZSk7CiAgICAgICAgICAgICAgICAgbmRvbmUrKzsKQEAgLTUxNSwxMyArMzg3LDEyIEBACiAgICAgcG9zID0gMDsKICAgICB3aGlsZSAoUHlEaWN0X05leHQobW9kdWxlcywgJnBvcywgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrKGtleSkgJiYgUHlNb2R1bGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICBuYW1lID0gX1B5VW5pY29kZV9Bc1N0cmluZyhrZXkpOwotICAgICAgICAgICAgaWYgKHN0cmNtcChuYW1lLCAiYnVpbHRpbnMiKSA9PSAwKQorICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKGtleSwgImJ1aWx0aW5zIikgPT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChzdHJjbXAobmFtZSwgInN5cyIpID09IDApCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoa2V5LCAic3lzIikgPT0gMCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhbnVwWzJdICVzXG4iLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoIiMgY2xlYW51cFsyXSAlVVxuIiwga2V5KTsKICAgICAgICAgICAgIF9QeU1vZHVsZV9DbGVhcih2YWx1ZSk7CiAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpOwogICAgICAgICB9CkBAIC01NDcsNyArNDE4LDYgQEAKICAgICBQeURpY3RfQ2xlYXIobW9kdWxlcyk7CiAgICAgaW50ZXJwLT5tb2R1bGVzID0gTlVMTDsKICAgICBQeV9ERUNSRUYobW9kdWxlcyk7Ci0gICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyk7CiB9CiAKIApAQCAtNTU2LDI1ICs0MjYsMzYgQEAKIGxvbmcKIFB5SW1wb3J0X0dldE1hZ2ljTnVtYmVyKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHB5Y19tYWdpYzsKKyAgICBsb25nIHJlczsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycCA9IFB5VGhyZWFkU3RhdGVfR2V0KCktPmludGVycDsKKyAgICBQeU9iamVjdCAqcHljX21hZ2ljID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX1JBV19NQUdJQ19OVU1CRVIiKTsKKyAgICBpZiAocHljX21hZ2ljID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXMgPSBQeUxvbmdfQXNMb25nKHB5Y19tYWdpYyk7CisgICAgUHlfREVDUkVGKHB5Y19tYWdpYyk7CisgICAgcmV0dXJuIHJlczsKIH0KIAogCitleHRlcm4gY29uc3QgY2hhciAqIF9QeVN5c19JbXBsQ2FjaGVUYWc7CisKIGNvbnN0IGNoYXIgKgogUHlJbXBvcnRfR2V0TWFnaWNUYWcodm9pZCkKIHsKLSAgICByZXR1cm4gcHljX3RhZzsKKyAgICByZXR1cm4gX1B5U3lzX0ltcGxDYWNoZVRhZzsKIH0KIAorCiAvKiBNYWdpYyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMgKGJ1aWx0LWluIGFzIHdlbGwgYXMgZHluYW1pY2FsbHkKICAgIGxvYWRlZCkuICBUbyBwcmV2ZW50IGluaXRpYWxpemluZyBhbiBleHRlbnNpb24gbW9kdWxlIG1vcmUgdGhhbgogICAgb25jZSwgd2Uga2VlcCBhIHN0YXRpYyBkaWN0aW9uYXJ5ICdleHRlbnNpb25zJyBrZXllZCBieSBtb2R1bGUgbmFtZQogICAgKGZvciBidWlsdC1pbiBtb2R1bGVzKSBvciBieSBmaWxlbmFtZSAoZm9yIGR5bmFtaWNhbGx5IGxvYWRlZAogICAgbW9kdWxlcyksIGNvbnRhaW5pbmcgdGhlc2UgbW9kdWxlcy4gIEEgY29weSBvZiB0aGUgbW9kdWxlJ3MKLSAgIGRpY3Rpb25hcnkgaXMgc3RvcmVkIGJ5IGNhbGxpbmcgX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uVW5pY29kZSgpCisgICBkaWN0aW9uYXJ5IGlzIHN0b3JlZCBieSBjYWxsaW5nIF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdCgpCiAgICBpbW1lZGlhdGVseSBhZnRlciB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHN1Y2NlZWRzLiAgQQogICAgY29weSBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlcmUgYnkgY2FsbGluZwotICAgX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKCkuCisgICBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdCgpLgogCiAgICBNb2R1bGVzIHdoaWNoIGRvIHN1cHBvcnQgbXVsdGlwbGUgaW5pdGlhbGl6YXRpb24gc2V0IHRoZWlyIG1fc2l6ZQogICAgZmllbGQgdG8gYSBub24tbmVnYXRpdmUgbnVtYmVyIChpbmRpY2F0aW5nIHRoZSBzaXplIG9mIHRoZQpAQCAtNTgzLDcgKzQ2NCw4IEBACiAqLwogCiBpbnQKLV9QeUltcG9ydF9GaXh1cEV4dGVuc2lvblVuaWNvZGUoUHlPYmplY3QgKm1vZCwgY2hhciAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQorX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmaWxlbmFtZSkKIHsKICAgICBQeU9iamVjdCAqbW9kdWxlcywgKmRpY3Q7CiAgICAgc3RydWN0IFB5TW9kdWxlRGVmICpkZWY7CkBAIC02MDIsMTAgKzQ4NCwxMCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIG1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIG1vZCkgPCAwKQorICAgIGlmIChQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBuYW1lLCBtb2QpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmIChfUHlTdGF0ZV9BZGRNb2R1bGUobW9kLCBkZWYpIDwgMCkgewotICAgICAgICBQeURpY3RfRGVsSXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKTsKKyAgICAgICAgUHlEaWN0X0RlbEl0ZW0obW9kdWxlcywgbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKGRlZi0+bV9zaXplID09IC0xKSB7CkBAIC02MzEsMTcgKzUxMywxNyBAQAogX1B5SW1wb3J0X0ZpeHVwQnVpbHRpbihQeU9iamVjdCAqbW9kLCBjaGFyICpuYW1lKQogewogICAgIGludCByZXM7Ci0gICAgUHlPYmplY3QgKmZpbGVuYW1lOwotICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCisgICAgUHlPYmplY3QgKm5hbWVvYmo7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXMgPSBfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKG1vZCwgbmFtZSwgZmlsZW5hbWUpOwotICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgcmVzID0gX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG1vZCwgbmFtZW9iaiwgbmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOwogICAgIHJldHVybiByZXM7CiB9CiAKIFB5T2JqZWN0ICoKLV9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZShjaGFyICpuYW1lLCBQeU9iamVjdCAqZmlsZW5hbWUpCitfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKmZpbGVuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2QsICptZGljdDsKICAgICBQeU1vZHVsZURlZiogZGVmOwpAQCAtNjU0LDcgKzUzNiw3IEBACiAgICAgICAgIC8qIE1vZHVsZSBkb2VzIG5vdCBzdXBwb3J0IHJlcGVhdGVkIGluaXRpYWxpemF0aW9uICovCiAgICAgICAgIGlmIChkZWYtPm1fYmFzZS5tX2NvcHkgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBtb2QgPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgICAgIG1vZCA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICAgICAgaWYgKG1vZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIG1kaWN0ID0gUHlNb2R1bGVfR2V0RGljdChtb2QpOwpAQCAtNjY5LDMwICs1NTEsMzAgQEAKICAgICAgICAgbW9kID0gZGVmLT5tX2Jhc2UubV9pbml0KCk7CiAgICAgICAgIGlmIChtb2QgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUsIG1vZCk7CisgICAgICAgIFB5RGljdF9TZXRJdGVtKFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKSwgbmFtZSwgbW9kKTsKICAgICAgICAgUHlfREVDUkVGKG1vZCk7CiAgICAgfQogICAgIGlmIChfUHlTdGF0ZV9BZGRNb2R1bGUobW9kLCBkZWYpIDwgMCkgewotICAgICAgICBQeURpY3RfRGVsSXRlbVN0cmluZyhQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUpOworICAgICAgICBQeURpY3RfRGVsSXRlbShQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCksIG5hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgJXMgIyBwcmV2aW91c2x5IGxvYWRlZCAoJVUpXG4iLAorICAgICAgICBQeVN5c19Gb3JtYXRTdGRlcnIoImltcG9ydCAlVSAjIHByZXZpb3VzbHkgbG9hZGVkICglUilcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGZpbGVuYW1lKTsKICAgICByZXR1cm4gbW9kOwogCiB9CiAKIFB5T2JqZWN0ICoKLV9QeUltcG9ydF9GaW5kQnVpbHRpbihjaGFyICpuYW1lKQorX1B5SW1wb3J0X0ZpbmRCdWlsdGluKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKnJlcywgKmZpbGVuYW1lOwotICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7Ci0gICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCisgICAgUHlPYmplY3QgKnJlcywgKm5hbWVvYmo7CisgICAgbmFtZW9iaiA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKG5hbWUpOworICAgIGlmIChuYW1lb2JqID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uVW5pY29kZShuYW1lLCBmaWxlbmFtZSk7Ci0gICAgUHlfREVDUkVGKGZpbGVuYW1lKTsKKyAgICByZXMgPSBfUHlJbXBvcnRfRmluZEV4dGVuc2lvbk9iamVjdChuYW1lb2JqLCBuYW1lb2JqKTsKKyAgICBQeV9ERUNSRUYobmFtZW9iaik7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNzAzLDE4ICs1ODUsMTggQEAKICAgICdORVcnIFJFRkVSRU5DRSEgKi8KIAogUHlPYmplY3QgKgotUHlJbXBvcnRfQWRkTW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCitQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7CiAgICAgUHlPYmplY3QgKm07CiAKLSAgICBpZiAoKG0gPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSkgIT0gTlVMTCAmJgorICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIG5hbWUpKSAhPSBOVUxMICYmCiAgICAgICAgIFB5TW9kdWxlX0NoZWNrKG0pKQogICAgICAgICByZXR1cm4gbTsKLSAgICBtID0gUHlNb2R1bGVfTmV3KG5hbWUpOworICAgIG0gPSBQeU1vZHVsZV9OZXdPYmplY3QobmFtZSk7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIG0pICE9IDApIHsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW0obW9kdWxlcywgbmFtZSwgbSkgIT0gMCkgewogICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTcyMywyMiArNjA1LDMxIEBACiAgICAgcmV0dXJuIG07CiB9CiAKK1B5T2JqZWN0ICoKK1B5SW1wb3J0X0FkZE1vZHVsZShjb25zdCBjaGFyICpuYW1lKQoreworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqbW9kdWxlOworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBtb2R1bGUgPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZW9iaik7CisgICAgUHlfREVDUkVGKG5hbWVvYmopOworICAgIHJldHVybiBtb2R1bGU7Cit9CisKKwogLyogUmVtb3ZlIG5hbWUgZnJvbSBzeXMubW9kdWxlcywgaWYgaXQncyB0aGVyZS4gKi8KIHN0YXRpYyB2b2lkCi1yZW1vdmVfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCityZW1vdmVfbW9kdWxlKFB5T2JqZWN0ICpuYW1lKQogewogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lKSA9PSBOVUxMKQorICAgIGlmIChQeURpY3RfR2V0SXRlbShtb2R1bGVzLCBuYW1lKSA9PSBOVUxMKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKFB5RGljdF9EZWxJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpIDwgMCkKKyAgICBpZiAoUHlEaWN0X0RlbEl0ZW0obW9kdWxlcywgbmFtZSkgPCAwKQogICAgICAgICBQeV9GYXRhbEVycm9yKCJpbXBvcnQ6ICBkZWxldGluZyBleGlzdGluZyBrZXkgaW4iCiAgICAgICAgICAgICAgICAgICAgICAgInN5cy5tb2R1bGVzIGZhaWxlZCIpOwogfQogCi1zdGF0aWMgUHlPYmplY3QgKiBnZXRfc291cmNlZmlsZShjaGFyICpmaWxlKTsKLXN0YXRpYyBjaGFyICptYWtlX3NvdXJjZV9wYXRobmFtZShjaGFyICpwYXRobmFtZSwgY2hhciAqYnVmKTsKLXN0YXRpYyBjaGFyICptYWtlX2NvbXBpbGVkX3BhdGhuYW1lKGNoYXIgKnBhdGhuYW1lLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVidWcpOwogCiAvKiBFeGVjdXRlIGEgY29kZSBvYmplY3QgaW4gYSBtb2R1bGUgYW5kIHJldHVybiB0aGUgbW9kdWxlIG9iamVjdAogICogV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQuICBJZiBhbiBlcnJvciBvY2N1cnMsIG5hbWUgaXMKQEAgLTc2OCwxMCArNjU5LDYwIEBACiBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMoY2hhciAqbmFtZSwgUHlPYmplY3QgKmNvLCBjaGFyICpwYXRobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcGF0aG5hbWUpCiB7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworICAgIFB5T2JqZWN0ICpuYW1lb2JqLCAqcGF0aG9iaiA9IE5VTEwsICpjcGF0aG9iaiA9IE5VTEw7CisKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoY3BhdGhuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgY3BhdGhvYmogPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNwYXRobmFtZSk7CisgICAgICAgIGlmIChjcGF0aG9iaiA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBjcGF0aG9iaiA9IE5VTEw7CisKKyAgICBpZiAocGF0aG5hbWUgIT0gTlVMTCkgeworICAgICAgICBwYXRob2JqID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7CisgICAgICAgIGlmIChwYXRob2JqID09IE5VTEwpCisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChjcGF0aG9iaiAhPSBOVUxMKSB7CisgICAgICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgICAgICBfUHlfSURFTlRJRklFUihfZ2V0X3NvdXJjZWZpbGUpOworCisgICAgICAgIGlmIChpbnRlcnAgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBpbnRlcnByZXRlciEiKTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGhvYmogPSBfUHlPYmplY3RfQ2FsbE1ldGhvZE9iaklkQXJncyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19nZXRfc291cmNlZmlsZSwgY3BhdGhvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgaWYgKHBhdGhvYmogPT0gTlVMTCkKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcGF0aG9iaiA9IE5VTEw7CisKKyAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QobmFtZW9iaiwgY28sIHBhdGhvYmosIGNwYXRob2JqKTsKK2Vycm9yOgorICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICBQeV9YREVDUkVGKHBhdGhvYmopOworICAgIFB5X1hERUNSRUYoY3BhdGhvYmopOworICAgIHJldHVybiBtOworfQorCitQeU9iamVjdCoKK1B5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlT2JqZWN0KFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqY28sIFB5T2JqZWN0ICpwYXRobmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjcGF0aG5hbWUpCit7CiAgICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7CiAgICAgUHlPYmplY3QgKm0sICpkLCAqdjsKIAotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICAvKiBJZiB0aGUgbW9kdWxlIGlzIGJlaW5nIHJlbG9hZGVkLCB3ZSBnZXQgdGhlIG9sZCBtb2R1bGUgYmFjawpAQCAtNzgyLDQzICs3MjMsMzMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRCdWlsdGlucygpKSAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9Ci0gICAgLyogUmVtZW1iZXIgdGhlIGZpbGVuYW1lIGFzIHRoZSBfX2ZpbGVfXyBhdHRyaWJ1dGUgKi8KLSAgICB2ID0gTlVMTDsKICAgICBpZiAocGF0aG5hbWUgIT0gTlVMTCkgewotICAgICAgICB2ID0gZ2V0X3NvdXJjZWZpbGUocGF0aG5hbWUpOwotICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgdiA9IHBhdGhuYW1lOwogICAgIH0KLSAgICBpZiAodiA9PSBOVUxMKSB7CisgICAgZWxzZSB7CiAgICAgICAgIHYgPSAoKFB5Q29kZU9iamVjdCAqKWNvKS0+Y29fZmlsZW5hbWU7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICB9CisgICAgUHlfSU5DUkVGKHYpOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19maWxlX18iLCB2KSAhPSAwKQogICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBOb3QgaW1wb3J0YW50IGVub3VnaCB0byByZXBvcnQgKi8KICAgICBQeV9ERUNSRUYodik7CiAKICAgICAvKiBSZW1lbWJlciB0aGUgcHljIHBhdGggbmFtZSBhcyB0aGUgX19jYWNoZWRfXyBhdHRyaWJ1dGUuICovCi0gICAgaWYgKGNwYXRobmFtZSA9PSBOVUxMKSB7CisgICAgaWYgKGNwYXRobmFtZSAhPSBOVUxMKQorICAgICAgICB2ID0gY3BhdGhuYW1lOworICAgIGVsc2UKICAgICAgICAgdiA9IFB5X05vbmU7Ci0gICAgICAgIFB5X0lOQ1JFRih2KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoKHYgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhjcGF0aG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7IC8qIE5vdCBpbXBvcnRhbnQgZW5vdWdoIHRvIHJlcG9ydCAqLwotICAgICAgICB2ID0gUHlfTm9uZTsKLSAgICAgICAgUHlfSU5DUkVGKHYpOwotICAgIH0KICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fY2FjaGVkX18iLCB2KSAhPSAwKQogICAgICAgICBQeUVycl9DbGVhcigpOyAvKiBOb3QgaW1wb3J0YW50IGVub3VnaCB0byByZXBvcnQgKi8KLSAgICBQeV9ERUNSRUYodik7CiAKICAgICB2ID0gUHlFdmFsX0V2YWxDb2RlKGNvLCBkLCBkKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0RFQ1JFRih2KTsKIAotICAgIGlmICgobSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpKSA9PSBOVUxMKSB7CisgICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW0obW9kdWxlcywgbmFtZSkpID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkxvYWRlZCBtb2R1bGUgJS4yMDBzIG5vdCBmb3VuZCBpbiBzeXMubW9kdWxlcyIsCisgICAgICAgICAgICAgICAgICAgICAiTG9hZGVkIG1vZHVsZSAlUiBub3QgZm91bmQgaW4gc3lzLm1vZHVsZXMiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTgzMyw0MTUgKzc2NCw2IEBACiB9CiAKIAotLyogTGlrZSBzdHJyY2hyKHN0cmluZywgJy8nKSBidXQgc2VhcmNoZXMgZm9yIHRoZSByaWdodG1vc3Qgb2YgZWl0aGVyIFNFUAotICAgb3IgQUxUU0VQLCBpZiB0aGUgbGF0dGVyIGlzIGRlZmluZWQuCi0qLwotc3RhdGljIGNoYXIgKgotcmlnaHRtb3N0X3NlcChjaGFyICpzKQotewotICAgIGNoYXIgKmZvdW5kLCBjOwotICAgIGZvciAoZm91bmQgPSBOVUxMOyAoYyA9ICpzKTsgcysrKSB7Ci0gICAgICAgIGlmIChjID09IFNFUAotI2lmZGVmIEFMVFNFUAotICAgICAgICAgICAgfHwgYyA9PSBBTFRTRVAKLSNlbmRpZgotICAgICAgICAgICAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3VuZCA9IHM7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZvdW5kOwotfQotCi0KLS8qIEdpdmVuIGEgcGF0aG5hbWUgZm9yIGEgUHl0aG9uIHNvdXJjZSBmaWxlLCBmaWxsIGEgYnVmZmVyIHdpdGggdGhlCi0gICBwYXRobmFtZSBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY29tcGlsZWQgZmlsZS4gIFJldHVybiB0aGUgcGF0aG5hbWUKLSAgIGZvciB0aGUgY29tcGlsZWQgZmlsZSwgb3IgTlVMTCBpZiB0aGVyZSdzIG5vIHNwYWNlIGluIHRoZSBidWZmZXIuCi0gICBEb2Vzbid0IHNldCBhbiBleGNlcHRpb24uICovCi0KLXN0YXRpYyBjaGFyICoKLW1ha2VfY29tcGlsZWRfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwgaW50IGRlYnVnKQotewotICAgIC8qIGZvby5weSAtPiBfX3B5Y2FjaGVfXy9mb28uPHRhZz4ucHljICovCi0gICAgc2l6ZV90IGxlbiA9IHN0cmxlbihwYXRobmFtZSk7Ci0gICAgc2l6ZV90IGksIHNhdmU7Ci0gICAgY2hhciAqcG9zOwotICAgIGludCBzZXAgPSBTRVA7Ci0KLSAgICAvKiBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgYnVmZmVyIGhhcyByb3VnaGx5IGVub3VnaCBzcGFjZSB0byBob2xkIHdoYXQKLSAgICAgICB3aWxsIGV2ZW50dWFsbHkgYmUgdGhlIGZ1bGwgcGF0aCB0byB0aGUgY29tcGlsZWQgZmlsZS4gIFRoZSA1IGV4dHJhCi0gICAgICAgYnl0ZXMgaW5jbHVkZSB0aGUgc2xhc2ggYWZlciBfX3B5Y2FjaGVfXywgdGhlIHR3byBleHRyYSBkb3RzLCB0aGUKLSAgICAgICBleHRyYSB0cmFpbGluZyBjaGFyYWN0ZXIgKCdjJyBvciAnbycpIGFuZCBudWxsLiAgVGhpcyBpc24ndCBleGFjdAotICAgICAgIGJlY2F1c2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgY2FuIGFmZmVjdCBob3cgbWFueSBhY3R1YWwKLSAgICAgICBjaGFyYWN0ZXJzIG9mIHRoZSBzdHJpbmcgZ2V0IGludG8gdGhlIGJ1ZmZlci4gIFdlJ2xsIGRvIGEgZmluYWwKLSAgICAgICBzYW5pdHkgY2hlY2sgYmVmb3JlIHdyaXRpbmcgdGhlIGV4dGVuc2lvbiB0byBlbnN1cmUgd2UgZG8gbm90Ci0gICAgICAgb3ZlcmZsb3cgdGhlIGJ1ZmZlci4KLSAgICAqLwotICAgIGlmIChsZW4gKyBzdHJsZW4oQ0FDSEVESVIpICsgc3RybGVuKHB5Y190YWcpICsgNSA+IGJ1ZmxlbikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAvKiBGaW5kIHRoZSBsYXN0IHBhdGggc2VwYXJhdG9yIGFuZCBjb3B5IGV2ZXJ5dGhpbmcgZnJvbSB0aGUgc3RhcnQgb2YKLSAgICAgICB0aGUgc291cmNlIHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoZSBzZXBhcmF0b3IuCi0gICAgKi8KLSAgICBpZiAoKHBvcyA9IHJpZ2h0bW9zdF9zZXAocGF0aG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIGkgPSAwOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc2VwID0gKnBvczsKLSAgICAgICAgaSA9IHBvcyAtIHBhdGhuYW1lICsgMTsKLSAgICAgICAgc3RybmNweShidWYsIHBhdGhuYW1lLCBpKTsKLSAgICB9Ci0KLSAgICBzYXZlID0gaTsKLSAgICBidWZbaSsrXSA9ICdcMCc7Ci0gICAgLyogQWRkIF9fcHljYWNoZV9fLyAqLwotICAgIHN0cmNhdChidWYsIENBQ0hFRElSKTsKLSAgICBpICs9IHN0cmxlbihDQUNIRURJUikgLSAxOwotICAgIGJ1ZltpKytdID0gc2VwOwotICAgIGJ1ZltpKytdID0gJ1wwJzsKLSAgICAvKiBBZGQgdGhlIGJhc2UgZmlsZW5hbWUsIGJ1dCByZW1vdmUgdGhlIC5weSBvciAucHl3IGV4dGVuc2lvbiwgc2luY2UKLSAgICAgICB0aGUgdGFnIG5hbWUgbXVzdCBnbyBiZWZvcmUgdGhlIGV4dGVuc2lvbi4KLSAgICAqLwotICAgIHN0cmNhdChidWYsIHBhdGhuYW1lICsgc2F2ZSk7Ci0gICAgaWYgKChwb3MgPSBzdHJyY2hyKGJ1ZiwgJy4nKSkgIT0gTlVMTCkKLSAgICAgICAgKisrcG9zID0gJ1wwJzsKLSAgICBzdHJjYXQoYnVmLCBweWNfdGFnKTsKLSAgICAvKiBUaGUgbGVuZ3RoIHRlc3QgYWJvdmUgYXNzdW1lcyB0aGF0IHdlJ3JlIG9ubHkgYWRkaW5nIG9uZSBjaGFyYWN0ZXIKLSAgICAgICB0byB0aGUgZW5kIG9mIHdoYXQgd291bGQgbm9ybWFsbHkgYmUgdGhlIGV4dGVuc2lvbi4gIFdoYXQgaWYgdGhlcmUKLSAgICAgICBpcyBubyBleHRlbnNpb24sIG9yIHRoZSBzdHJpbmcgZW5kcyBpbiAnLicgb3IgJy5wJywgYW5kIG90aGVyd2lzZQotICAgICAgIGZpbGxzIHRoZSBidWZmZXI/ICBCeSBhcHBlbmRpbmcgNCBtb3JlIGNoYXJhY3RlcnMgb250byB0aGUgc3RyaW5nCi0gICAgICAgaGVyZSwgd2UgY291bGQgb3ZlcnJ1biB0aGUgYnVmZmVyLgotCi0gICAgICAgQXMgYSBzaW1wbGUgZXhhbXBsZSwgbGV0J3Mgc2F5IGJ1Zmxlbj0zMiBhbmQgdGhlIGlucHV0IHN0cmluZyBpcwotICAgICAgICd4eHgucHknLiAgc3RybGVuKCkgd291bGQgYmUgNiBhbmQgdGhlIHRlc3QgYWJvdmUgd291bGQgeWllbGQ6Ci0KLSAgICAgICAoNiArIDExICsgMTAgKyA1ID09IDMyKSA+IDMyCi0KLSAgICAgICB3aGljaCBpcyBmYWxzZSBhbmQgc28gdGhlIG5hbWUgbWFuZ2xpbmcgd291bGQgY29udGludWUuICBUaGlzIHdvdWxkCi0gICAgICAgYmUgZmluZSBiZWNhdXNlIHdlJ2QgZW5kIHVwIHdpdGggdGhpcyBzdHJpbmcgaW4gYnVmOgotCi0gICAgICAgX19weWNhY2hlX18veHh4LmNweXRob24tMzIucHljXDAKLQotICAgICAgIHN0cmxlbihvZiB0aGF0KSA9PSAzMCArIHRoZSBudWwgZml0cyBpbnNpZGUgYSAzMiBjaGFyYWN0ZXIgYnVmZmVyLgotICAgICAgIFdlIGNhbiBldmVuIGhhbmRsZSBhbiBpbnB1dCBzdHJpbmcgb2Ygc2F5ICd4eHh4eCcgYWJvdmUgYmVjYXVzZQotICAgICAgIHRoYXQncyAoNSArIDExICsgMTAgKyA1ID09IDMxKSA+IDMyIHdoaWNoIGlzIGFsc28gZmFsc2UuICBOYW1lCi0gICAgICAgbWFuZ2xpbmcgdGhhdCB5aWVsZHM6Ci0KLSAgICAgICBfX3B5Y2FjaGVfXy94eHh4eGNweXRob24tMzIucHljXDAKLQotICAgICAgIHdoaWNoIGlzIDMyIGNoYXJhY3RlcnMgaW5jbHVkaW5nIHRoZSBudWwsIGFuZCB0aHVzIGZpdHMgaW4gdGhlCi0gICAgICAgYnVmZmVyLiBIb3dldmVyLCBhbiBpbnB1dCBzdHJpbmcgb2YgJ3h4eHh4eCcgd291bGQgeWllbGQgYSByZXN1bHQKLSAgICAgICBzdHJpbmcgb2Y6Ci0KLSAgICAgICBfX3B5Y2FjaGVfXy94eHh4eHhjcHl0aG9uLTMyLnB5Y1wwCi0KLSAgICAgICB3aGljaCBpcyAzMyBjaGFyYWN0ZXJzIGxvbmcgKGluY2x1ZGluZyB0aGUgbnVsKSwgdGh1cyBvdmVyZmxvd2luZwotICAgICAgIHRoZSBidWZmZXIsIGV2ZW4gdGhvdWdoIHRoZSBmaXJzdCB0ZXN0IHdvdWxkIGZhaWwsIGkuZS46IHRoZSBpbnB1dAotICAgICAgIHN0cmluZyBpcyBhbHNvIDYgY2hhcmFjdGVycyBsb25nLCBzbyAzMiA+IDMyIGlzIGZhbHNlLgotCi0gICAgICAgVGhlIHJlYXNvbiB0aGUgZmlyc3QgdGVzdCBmYWlscyBidXQgd2Ugc3RpbGwgb3ZlcmZsb3cgdGhlIGJ1ZmZlciBpcwotICAgICAgIHRoYXQgdGhlIHRlc3QgYWJvdmUgb25seSBleHBlY3RzIHRvIGFkZCBvbmUgZXh0cmEgY2hhcmFjdGVyIHRvIGJlCi0gICAgICAgYWRkZWQgdG8gdGhlIGV4dGVuc2lvbiwgYW5kIGhlcmUgd2UncmUgYWRkaW5nIHRocmVlIChweWMpLiAgV2UKLSAgICAgICBkb24ndCBhZGQgdGhlIGZpcnN0IGRvdCwgc28gdGhhdCByZWNsYWltcyBvbmUgb2YgZXhwZWN0ZWQKLSAgICAgICBwb3NpdGlvbnMsIGxlYXZpbmcgdXMgb3ZlcmZsb3dpbmcgYnkgMSBieXRlICgzIGV4dHJhIC0gMSByZWNsYWltZWQKLSAgICAgICBkb3QgLSAxIGV4cGVjdGVkIGV4dHJhID09IDEgb3ZlcmZsb3dlZCkuCi0KLSAgICAgICBUaGUgYmVzdCB3ZSBjYW4gZG8gaXMgZW5zdXJlIHRoYXQgd2Ugc3RpbGwgaGF2ZSBlbm91Z2ggcm9vbSBpbiB0aGUKLSAgICAgICB0YXJnZXQgYnVmZmVyIGJlZm9yZSB3ZSB3cml0ZSB0aGUgZXh0ZW5zaW9uLiAgQmVjYXVzZSBpdCdzIGFsd2F5cwotICAgICAgIG9ubHkgdGhlIGV4dGVuc2lvbiB0aGF0IGNhbiBjYXVzZSB0aGUgb3ZlcmZsb3csIGFuZCBuZXZlciB0aGUgb3RoZXIKLSAgICAgICBwYXRoIGJ5dGVzIHdlJ3ZlIHdyaXR0ZW4sIGl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGRvIG9uZSBtb3JlIHRlc3QKLSAgICAgICBoZXJlLiAgU3RpbGwsIHRoZSBhc3NlcnRpb24gdGhhdCBmb2xsb3dzIGNhbid0IGh1cnQuCi0gICAgKi8KLSNpZiAwCi0gICAgcHJpbnRmKCJzdHJsZW4oYnVmKTogJWQ7IGJ1ZmxlbjogJWRcbiIsIChpbnQpc3RybGVuKGJ1ZiksIChpbnQpYnVmbGVuKTsKLSNlbmRpZgotICAgIGlmIChzdHJsZW4oYnVmKSArIDUgPiBidWZsZW4pCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cmNhdChidWYsIGRlYnVnID8gIi5weWMiIDogIi5weW8iKTsKLSAgICBhc3NlcnQoc3RybGVuKGJ1ZikgPCBidWZsZW4pOwotICAgIHJldHVybiBidWY7Ci19Ci0KLQotLyogR2l2ZW4gYSBwYXRobmFtZSB0byBhIFB5dGhvbiBieXRlIGNvbXBpbGVkIGZpbGUsIHJldHVybiB0aGUgcGF0aCB0byB0aGUKLSAgIHNvdXJjZSBmaWxlLCBpZiB0aGUgcGF0aCBtYXRjaGVzIHRoZSBQRVAgMzE0NyBmb3JtYXQuICBUaGlzIGRvZXMgbm90IGNoZWNrCi0gICBmb3IgYW55IGZpbGUgZXhpc3RlbmNlLCBob3dldmVyLCBpZiB0aGUgcHljIGZpbGUgbmFtZSBkb2VzIG5vdCBtYXRjaCBQRVAKLSAgIDMxNDcgc3R5bGUsIE5VTEwgaXMgcmV0dXJuZWQuICBidWYgbXVzdCBiZSBhdCBsZWFzdCBhcyBiaWcgYXMgcGF0aG5hbWU7Ci0gICB0aGUgcmVzdWx0aW5nIHBhdGggd2lsbCBhbHdheXMgYmUgc2hvcnRlci4gKi8KLQotc3RhdGljIGNoYXIgKgotbWFrZV9zb3VyY2VfcGF0aG5hbWUoY2hhciAqcGF0aG5hbWUsIGNoYXIgKmJ1ZikKLXsKLSAgICAvKiBfX3B5Y2FjaGVfXy9mb28uPHRhZz4ucHljIC0+IGZvby5weSAqLwotICAgIHNpemVfdCBpLCBqOwotICAgIGNoYXIgKmxlZnQsICpyaWdodCwgKmRvdDAsICpkb3QxLCBzZXA7Ci0KLSAgICAvKiBMb29rIGJhY2sgdHdvIHNsYXNoZXMgZnJvbSB0aGUgZW5kLiAgSW4gYmV0d2VlbiB0aGVzZSB0d28gc2xhc2hlcwotICAgICAgIG11c3QgYmUgdGhlIHN0cmluZyBfX3B5Y2FjaGVfXyBvciB0aGlzIGlzIG5vdCBhIFBFUCAzMTQ3IHN0eWxlCi0gICAgICAgcGF0aC4gIEl0J3MgcG9zc2libGUgZm9yIHRoZXJlIHRvIGJlIG9ubHkgb25lIHNsYXNoLgotICAgICovCi0gICAgaWYgKChyaWdodCA9IHJpZ2h0bW9zdF9zZXAocGF0aG5hbWUpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXAgPSAqcmlnaHQ7Ci0gICAgKnJpZ2h0ID0gJ1wwJzsKLSAgICBsZWZ0ID0gcmlnaHRtb3N0X3NlcChwYXRobmFtZSk7Ci0gICAgKnJpZ2h0ID0gc2VwOwotICAgIGlmIChsZWZ0ID09IE5VTEwpCi0gICAgICAgIGxlZnQgPSBwYXRobmFtZTsKLSAgICBlbHNlCi0gICAgICAgIGxlZnQrKzsKLSAgICBpZiAocmlnaHQtbGVmdCAhPSBzdHJsZW4oQ0FDSEVESVIpIHx8Ci0gICAgICAgIHN0cm5jbXAobGVmdCwgQ0FDSEVESVIsIHJpZ2h0LWxlZnQpICE9IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyogTm93IHZlcmlmeSB0aGF0IHRoZSBwYXRoIGNvbXBvbmVudCB0byB0aGUgcmlnaHQgb2YgdGhlIGxhc3Qgc2xhc2gKLSAgICAgICBoYXMgdHdvIGRvdHMgaW4gaXQuCi0gICAgKi8KLSAgICBpZiAoKGRvdDAgPSBzdHJjaHIocmlnaHQgKyAxLCAnLicpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoKGRvdDEgPSBzdHJjaHIoZG90MCArIDEsICcuJykpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIFRvbyBtYW55IGRvdHM/ICovCi0gICAgaWYgKHN0cmNocihkb3QxICsgMSwgJy4nKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qIFRoaXMgaXMgYSBQRVAgMzE0NyBwYXRoLiAgU3RhcnQgYnkgY29weWluZyBldmVyeXRoaW5nIGZyb20gdGhlCi0gICAgICAgc3RhcnQgb2YgcGF0aG5hbWUgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgbGVmdG1vc3Qgc2xhc2guICBUaGVuCi0gICAgICAgY29weSB0aGUgZmlsZSdzIGJhc2VuYW1lLCByZW1vdmluZyB0aGUgbWFnaWMgdGFnIGFuZCBhZGRpbmcgYSAucHkKLSAgICAgICBzdWZmaXguCi0gICAgKi8KLSAgICBzdHJuY3B5KGJ1ZiwgcGF0aG5hbWUsIChpPWxlZnQtcGF0aG5hbWUpKTsKLSAgICBzdHJuY3B5KGJ1ZitpLCByaWdodCsxLCAoaj1kb3QwLXJpZ2h0KSk7Ci0gICAgc3RyY3B5KGJ1ZitpK2osICJweSIpOwotICAgIHJldHVybiBidWY7Ci19Ci0KLS8qIEdpdmVuIGEgcGF0aG5hbWUgZm9yIGEgUHl0aG9uIHNvdXJjZSBmaWxlLCBpdHMgdGltZSBvZiBsYXN0Ci0gICBtb2RpZmljYXRpb24sIGFuZCBhIHBhdGhuYW1lIGZvciBhIGNvbXBpbGVkIGZpbGUsIGNoZWNrIHdoZXRoZXIgdGhlCi0gICBjb21waWxlZCBmaWxlIHJlcHJlc2VudHMgdGhlIHNhbWUgdmVyc2lvbiBvZiB0aGUgc291cmNlLiAgSWYgc28sCi0gICByZXR1cm4gYSBGSUxFIHBvaW50ZXIgZm9yIHRoZSBjb21waWxlZCBmaWxlLCBwb3NpdGlvbmVkIGp1c3QgYWZ0ZXIKLSAgIHRoZSBoZWFkZXI7IGlmIG5vdCwgcmV0dXJuIE5VTEwuCi0gICBEb2Vzbid0IHNldCBhbiBleGNlcHRpb24uICovCi0KLXN0YXRpYyBGSUxFICoKLWNoZWNrX2NvbXBpbGVkX21vZHVsZShjaGFyICpwYXRobmFtZSwgdGltZV90IG10aW1lLCBjaGFyICpjcGF0aG5hbWUpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgbG9uZyBtYWdpYzsKLSAgICBsb25nIHB5Y19tdGltZTsKLQotICAgIGZwID0gZm9wZW4oY3BhdGhuYW1lLCAicmIiKTsKLSAgICBpZiAoZnAgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbWFnaWMgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgaWYgKG1hZ2ljICE9IHB5Y19tYWdpYykgewotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyAlcyBoYXMgYmFkIG1hZ2ljXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICBmY2xvc2UoZnApOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcHljX210aW1lID0gUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwotICAgIGlmIChweWNfbXRpbWUgIT0gbXRpbWUpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgaGFzIGJhZCBtdGltZVxuIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgJXMgbWF0Y2hlcyAlc1xuIiwgY3BhdGhuYW1lLCBwYXRobmFtZSk7Ci0gICAgcmV0dXJuIGZwOwotfQotCi0KLS8qIFJlYWQgYSBjb2RlIG9iamVjdCBmcm9tIGEgZmlsZSBhbmQgY2hlY2sgaXQgZm9yIHZhbGlkaXR5ICovCi0KLXN0YXRpYyBQeUNvZGVPYmplY3QgKgotcmVhZF9jb21waWxlZF9tb2R1bGUoY2hhciAqY3BhdGhuYW1lLCBGSUxFICpmcCkKLXsKLSAgICBQeU9iamVjdCAqY287Ci0KLSAgICBjbyA9IFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlKGZwKTsKLSAgICBpZiAoY28gPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUNvZGVfQ2hlY2soY28pKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJOb24tY29kZSBvYmplY3QgaW4gJS4yMDBzIiwgY3BhdGhuYW1lKTsKLSAgICAgICAgUHlfREVDUkVGKGNvKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiAoUHlDb2RlT2JqZWN0ICopY287Ci19Ci0KLQotLyogTG9hZCBhIG1vZHVsZSBmcm9tIGEgY29tcGlsZWQgZmlsZSwgZXhlY3V0ZSBpdCwgYW5kIHJldHVybiBpdHMKLSAgIG1vZHVsZSBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQgKi8KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfY29tcGlsZWRfbW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKmNwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgbG9uZyBtYWdpYzsKLSAgICBQeUNvZGVPYmplY3QgKmNvOwotICAgIFB5T2JqZWN0ICptOwotCi0gICAgbWFnaWMgPSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7Ci0gICAgaWYgKG1hZ2ljICE9IHB5Y19tYWdpYykgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiQmFkIG1hZ2ljIG51bWJlciBpbiAlLjIwMHMiLCBjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgKHZvaWQpIFB5TWFyc2hhbF9SZWFkTG9uZ0Zyb21GaWxlKGZwKTsKLSAgICBjbyA9IHJlYWRfY29tcGlsZWRfbW9kdWxlKGNwYXRobmFtZSwgZnApOwotICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBwcmVjb21waWxlZCBmcm9tICVzXG4iLAotICAgICAgICAgICAgbmFtZSwgY3BhdGhuYW1lKTsKLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzKAotICAgICAgICBuYW1lLCAoUHlPYmplY3QgKiljbywgY3BhdGhuYW1lLCBjcGF0aG5hbWUpOwotICAgIFB5X0RFQ1JFRihjbyk7Ci0KLSAgICByZXR1cm4gbTsKLX0KLQotLyogUGFyc2UgYSBzb3VyY2UgZmlsZSBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGNvZGUgb2JqZWN0ICovCi0KLXN0YXRpYyBQeUNvZGVPYmplY3QgKgotcGFyc2Vfc291cmNlX21vZHVsZShjb25zdCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCi17Ci0gICAgUHlDb2RlT2JqZWN0ICpjbyA9IE5VTEw7Ci0gICAgbW9kX3R5IG1vZDsKLSAgICBQeUNvbXBpbGVyRmxhZ3MgZmxhZ3M7Ci0gICAgUHlBcmVuYSAqYXJlbmEgPSBQeUFyZW5hX05ldygpOwotICAgIGlmIChhcmVuYSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZsYWdzLmNmX2ZsYWdzID0gMDsKLSAgICBtb2QgPSBQeVBhcnNlcl9BU1RGcm9tRmlsZShmcCwgcGF0aG5hbWUsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfZmlsZV9pbnB1dCwgMCwgMCwgJmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIGFyZW5hKTsKLSAgICBpZiAobW9kKSB7Ci0gICAgICAgIGNvID0gUHlBU1RfQ29tcGlsZShtb2QsIHBhdGhuYW1lLCBOVUxMLCBhcmVuYSk7Ci0gICAgfQotICAgIFB5QXJlbmFfRnJlZShhcmVuYSk7Ci0gICAgcmV0dXJuIGNvOwotfQotCi0KLS8qIEhlbHBlciB0byBvcGVuIGEgYnl0ZWNvZGUgZmlsZSBmb3Igd3JpdGluZyBpbiBleGNsdXNpdmUgbW9kZSAqLwotCi1zdGF0aWMgRklMRSAqCi1vcGVuX2V4Y2x1c2l2ZShjaGFyICpmaWxlbmFtZSwgbW9kZV90IG1vZGUpCi17Ci0jaWYgZGVmaW5lZChPX0VYQ0wpJiZkZWZpbmVkKE9fQ1JFQVQpJiZkZWZpbmVkKE9fV1JPTkxZKSYmZGVmaW5lZChPX1RSVU5DKQotICAgIC8qIFVzZSBPX0VYQ0wgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiB3aGVuIGFub3RoZXIgcHJvY2VzcyB0cmllcyB0bwotICAgICAgIHdyaXRlIHRoZSBzYW1lIGZpbGUuICBXaGVuIHRoYXQgaGFwcGVucywgb3VyIG9wZW4oKSBjYWxsIGZhaWxzLAotICAgICAgIHdoaWNoIGlzIGp1c3QgZmluZSAoc2luY2UgaXQncyBvbmx5IGEgY2FjaGUpLgotICAgICAgIFhYWCBJZiB0aGUgZmlsZSBleGlzdHMgYW5kIGlzIHdyaXRhYmxlIGJ1dCB0aGUgZGlyZWN0b3J5IGlzIG5vdAotICAgICAgIHdyaXRhYmxlLCB0aGUgZmlsZSB3aWxsIG5ldmVyIGJlIHdyaXR0ZW4uICBPaCB3ZWxsLgotICAgICovCi0gICAgaW50IGZkOwotICAgICh2b2lkKSB1bmxpbmsoZmlsZW5hbWUpOwotICAgIGZkID0gb3BlbihmaWxlbmFtZSwgT19FWENMfE9fQ1JFQVR8T19XUk9OTFl8T19UUlVOQwotI2lmZGVmIE9fQklOQVJZCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfE9fQklOQVJZICAgLyogbmVjZXNzYXJ5IGZvciBXaW5kb3dzICovCi0jZW5kaWYKLSNpZmRlZiBfX1ZNUwotICAgICAgICAgICAgLCBtb2RlLCAiY3R4dD1iaW4iLCAic2hyPW5pbCIKLSNlbHNlCi0gICAgICAgICAgICAsIG1vZGUKLSNlbmRpZgotICAgICAgICAgICk7Ci0gICAgaWYgKGZkIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIGZkb3BlbihmZCwgIndiIik7Ci0jZWxzZQotICAgIC8qIEJlc3Qgd2UgY2FuIGRvIC0tIG9uIFdpbmRvd3MgdGhpcyBjYW4ndCBoYXBwZW4gYW55d2F5ICovCi0gICAgcmV0dXJuIGZvcGVuKGZpbGVuYW1lLCAid2IiKTsKLSNlbmRpZgotfQotCi0KLS8qIFdyaXRlIGEgY29tcGlsZWQgbW9kdWxlIHRvIGEgZmlsZSwgcGxhY2luZyB0aGUgdGltZSBvZiBsYXN0Ci0gICBtb2RpZmljYXRpb24gb2YgaXRzIHNvdXJjZSBpbnRvIHRoZSBoZWFkZXIuCi0gICBFcnJvcnMgYXJlIGlnbm9yZWQsIGlmIGEgd3JpdGUgZXJyb3Igb2NjdXJzIGFuIGF0dGVtcHQgaXMgbWFkZSB0bwotICAgcmVtb3ZlIHRoZSBmaWxlLiAqLwotCi1zdGF0aWMgdm9pZAotd3JpdGVfY29tcGlsZWRfbW9kdWxlKFB5Q29kZU9iamVjdCAqY28sIGNoYXIgKmNwYXRobmFtZSwgc3RydWN0IHN0YXQgKnNyY3N0YXQpCi17Ci0gICAgRklMRSAqZnA7Ci0gICAgY2hhciAqZGlycGF0aDsKLSAgICB0aW1lX3QgbXRpbWUgPSBzcmNzdGF0LT5zdF9tdGltZTsKLSAgICBpbnQgc2F2ZWQ7Ci0jaWZkZWYgTVNfV0lORE9XUyAgIC8qIHNpbmNlIFdpbmRvd3MgdXNlcyBkaWZmZXJlbnQgcGVybWlzc2lvbnMgICovCi0gICAgbW9kZV90IG1vZGUgPSBzcmNzdGF0LT5zdF9tb2RlICYgflNfSUVYRUM7Ci0gICAgLyogSXNzdWUgIzYwNzQ6IFdlIGVuc3VyZSB1c2VyIHdyaXRlIGFjY2Vzcywgc28gd2UgY2FuIGRlbGV0ZSBpdCBsYXRlcgotICAgICAqIHdoZW4gdGhlIHNvdXJjZSBmaWxlIGNoYW5nZXMuIChPbiBQT1NJWCwgdGhpcyBvbmx5IHJlcXVpcmVzIHdyaXRlCi0gICAgICogYWNjZXNzIHRvIHRoZSBkaXJlY3RvcnksIG9uIFdpbmRvd3MsIHdlIG5lZWQgd3JpdGUgYWNjZXNzIHRvIHRoZSBmaWxlCi0gICAgICogYXMgd2VsbCkKLSAgICAgKi8KLSAgICBtb2RlIHw9IF9TX0lXUklURTsKLSNlbHNlCi0gICAgbW9kZV90IG1vZGUgPSBzcmNzdGF0LT5zdF9tb2RlICYgflNfSVhVU1IgJiB+U19JWEdSUCAmIH5TX0lYT1RIOwotICAgIG1vZGVfdCBkaXJtb2RlID0gKHNyY3N0YXQtPnN0X21vZGUgfAotICAgICAgICAgICAgICAgICAgICAgIFNfSVhVU1IgfCBTX0lYR1JQIHwgU19JWE9USCB8Ci0gICAgICAgICAgICAgICAgICAgICAgU19JV1VTUiB8IFNfSVdHUlAgfCBTX0lXT1RIKTsKLSNlbmRpZgotCi0gICAgLyogRW5zdXJlIHRoYXQgdGhlIF9fcHljYWNoZV9fIGRpcmVjdG9yeSBleGlzdHMuICovCi0gICAgZGlycGF0aCA9IHJpZ2h0bW9zdF9zZXAoY3BhdGhuYW1lKTsKLSAgICBpZiAoZGlycGF0aCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICIjIG5vICVzIHBhdGggZm91bmQgJXNcbiIsCi0gICAgICAgICAgICAgICAgQ0FDSEVESVIsIGNwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgc2F2ZWQgPSAqZGlycGF0aDsKLSAgICAqZGlycGF0aCA9ICdcMCc7Ci0KLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKF9ta2RpcihjcGF0aG5hbWUpIDwgMCAmJiBlcnJubyAhPSBFRVhJU1QpIHsKLSNlbHNlCi0gICAgaWYgKG1rZGlyKGNwYXRobmFtZSwgZGlybW9kZSkgPCAwICYmIGVycm5vICE9IEVFWElTVCkgewotI2VuZGlmCi0gICAgICAgICpkaXJwYXRoID0gc2F2ZWQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgICAgICIjIGNhbm5vdCBjcmVhdGUgY2FjaGUgZGlyICVzXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICpkaXJwYXRoID0gc2F2ZWQ7Ci0KLSAgICBmcCA9IG9wZW5fZXhjbHVzaXZlKGNwYXRobmFtZSwgbW9kZSk7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoCi0gICAgICAgICAgICAgICAgIiMgY2FuJ3QgY3JlYXRlICVzXG4iLCBjcGF0aG5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUocHljX21hZ2ljLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICAvKiBGaXJzdCB3cml0ZSBhIDAgZm9yIG10aW1lICovCi0gICAgUHlNYXJzaGFsX1dyaXRlTG9uZ1RvRmlsZSgwTCwgZnAsIFB5X01BUlNIQUxfVkVSU0lPTik7Ci0gICAgUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9GaWxlKChQeU9iamVjdCAqKWNvLCBmcCwgUHlfTUFSU0hBTF9WRVJTSU9OKTsKLSAgICBpZiAoZmZsdXNoKGZwKSAhPSAwIHx8IGZlcnJvcihmcCkpIHsKLSAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQotICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2FuJ3Qgd3JpdGUgJXNcbiIsIGNwYXRobmFtZSk7Ci0gICAgICAgIC8qIERvbid0IGtlZXAgcGFydGlhbCBmaWxlICovCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgICh2b2lkKSB1bmxpbmsoY3BhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvKiBOb3cgd3JpdGUgdGhlIHRydWUgbXRpbWUgKGFzIGEgMzItYml0IGZpZWxkKSAqLwotICAgIGZzZWVrKGZwLCA0TCwgMCk7Ci0gICAgYXNzZXJ0KG10aW1lIDw9IDB4RkZGRkZGRkYpOwotICAgIFB5TWFyc2hhbF9Xcml0ZUxvbmdUb0ZpbGUoKGxvbmcpbXRpbWUsIGZwLCBQeV9NQVJTSEFMX1ZFUlNJT04pOwotICAgIGZmbHVzaChmcCk7Ci0gICAgZmNsb3NlKGZwKTsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIHdyb3RlICVzXG4iLCBjcGF0aG5hbWUpOwotfQotCiBzdGF0aWMgdm9pZAogdXBkYXRlX2NvZGVfZmlsZW5hbWVzKFB5Q29kZU9iamVjdCAqY28sIFB5T2JqZWN0ICpvbGRuYW1lLCBQeU9iamVjdCAqbmV3bmFtZSkKIHsKQEAgLTEyNjYsMjI3ICs3ODgsNjAgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBpbnQKLXVwZGF0ZV9jb21waWxlZF9tb2R1bGUoUHlDb2RlT2JqZWN0ICpjbywgY2hhciAqcGF0aG5hbWUpCitzdGF0aWMgdm9pZAordXBkYXRlX2NvbXBpbGVkX21vZHVsZShQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqbmV3bmFtZSkKIHsKLSAgICBQeU9iamVjdCAqb2xkbmFtZSwgKm5ld25hbWU7CisgICAgUHlPYmplY3QgKm9sZG5hbWU7CiAKLSAgICBuZXduYW1lID0gUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdChwYXRobmFtZSk7Ci0gICAgaWYgKG5ld25hbWUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShjby0+Y29fZmlsZW5hbWUsIG5ld25hbWUpKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXduYW1lKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZShjby0+Y29fZmlsZW5hbWUsIG5ld25hbWUpID09IDApCisgICAgICAgIHJldHVybjsKIAogICAgIG9sZG5hbWUgPSBjby0+Y29fZmlsZW5hbWU7CiAgICAgUHlfSU5DUkVGKG9sZG5hbWUpOwogICAgIHVwZGF0ZV9jb2RlX2ZpbGVuYW1lcyhjbywgb2xkbmFtZSwgbmV3bmFtZSk7CiAgICAgUHlfREVDUkVGKG9sZG5hbWUpOwotICAgIFB5X0RFQ1JFRihuZXduYW1lKTsKLSAgICByZXR1cm4gMTsKIH0KIAotLyogTG9hZCBhIHNvdXJjZSBtb2R1bGUgZnJvbSBhIGdpdmVuIGZpbGUgYW5kIHJldHVybiBpdHMgbW9kdWxlCi0gICBvYmplY3QgV0lUSCBJTkNSRU1FTlRFRCBSRUZFUkVOQ0UgQ09VTlQuICBJZiB0aGVyZSdzIGEgbWF0Y2hpbmcKLSAgIGJ5dGUtY29tcGlsZWQgZmlsZSwgdXNlIHRoYXQgaW5zdGVhZC4gKi8KLQogc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfc291cmNlX21vZHVsZShjaGFyICpuYW1lLCBjaGFyICpwYXRobmFtZSwgRklMRSAqZnApCitpbXBfZml4X2NvX2ZpbGVuYW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBGSUxFICpmcGM7Ci0gICAgY2hhciAqYnVmOwotICAgIGNoYXIgKmNwYXRobmFtZTsKLSAgICBQeUNvZGVPYmplY3QgKmNvID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbTsKKyAgICBQeU9iamVjdCAqY287CisgICAgUHlPYmplY3QgKmZpbGVfcGF0aDsKIAotICAgIGlmIChmc3RhdChmaWxlbm8oZnApLCAmc3QpICE9IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZ2V0IGZpbGUgc3RhdHVzIGZyb20gJyVzJyIsCi0gICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPTzpfZml4X2NvX2ZpbGVuYW1lIiwgJmNvLCAmZmlsZV9wYXRoKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpZiAoIVB5Q29kZV9DaGVjayhjbykpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgY29kZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChzaXplb2Ygc3Quc3RfbXRpbWUgPiA0KSB7Ci0gICAgICAgIC8qIFB5dGhvbidzIC5weWMgdGltZXN0YW1wIGhhbmRsaW5nIHByZXN1bWVzIHRoYXQgdGhlIHRpbWVzdGFtcCBmaXRzCi0gICAgICAgICAgIGluIDQgYnl0ZXMuIFNpbmNlIHRoZSBjb2RlIG9ubHkgZG9lcyBhbiBlcXVhbGl0eSBjb21wYXJpc29uLAotICAgICAgICAgICBvcmRlcmluZyBpcyBub3QgaW1wb3J0YW50IGFuZCB3ZSBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgaGlnaGVyIGJpdHMKLSAgICAgICAgICAgKGNvbGxpc2lvbnMgYXJlIGV4dHJlbWVseSB1bmxpa2VseSkuCi0gICAgICAgICAqLwotICAgICAgICBzdC5zdF9tdGltZSAmPSAweEZGRkZGRkZGOwotICAgIH0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGNwYXRobmFtZSA9IG1ha2VfY29tcGlsZWRfcGF0aG5hbWUoCi0gICAgICAgIHBhdGhuYW1lLCBidWYsIChzaXplX3QpTUFYUEFUSExFTiArIDEsICFQeV9PcHRpbWl6ZUZsYWcpOwotICAgIGlmIChjcGF0aG5hbWUgIT0gTlVMTCAmJgotICAgICAgICAoZnBjID0gY2hlY2tfY29tcGlsZWRfbW9kdWxlKHBhdGhuYW1lLCBzdC5zdF9tdGltZSwgY3BhdGhuYW1lKSkpIHsKLSAgICAgICAgY28gPSByZWFkX2NvbXBpbGVkX21vZHVsZShjcGF0aG5hbWUsIGZwYyk7Ci0gICAgICAgIGZjbG9zZShmcGMpOwotICAgICAgICBpZiAoY28gPT0gTlVMTCkKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgaWYgKHVwZGF0ZV9jb21waWxlZF9tb2R1bGUoY28sIHBhdGhuYW1lKSA8IDApCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBwcmVjb21waWxlZCBmcm9tICVzXG4iLAotICAgICAgICAgICAgICAgIG5hbWUsIGNwYXRobmFtZSk7Ci0gICAgICAgIHBhdGhuYW1lID0gY3BhdGhuYW1lOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgY28gPSBwYXJzZV9zb3VyY2VfbW9kdWxlKHBhdGhuYW1lLCBmcCk7Ci0gICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiaW1wb3J0ICVzICMgZnJvbSAlc1xuIiwKLSAgICAgICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgICAgIGlmIChjcGF0aG5hbWUpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpybyA9IFB5U3lzX0dldE9iamVjdCgiZG9udF93cml0ZV9ieXRlY29kZSIpOwotICAgICAgICAgICAgaW50IGIgPSAocm8gPT0gTlVMTCkgPyAwIDogUHlPYmplY3RfSXNUcnVlKHJvKTsKLSAgICAgICAgICAgIGlmIChiIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICBpZiAoIWIpCi0gICAgICAgICAgICAgICAgd3JpdGVfY29tcGlsZWRfbW9kdWxlKGNvLCBjcGF0aG5hbWUsICZzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygKLSAgICAgICAgbmFtZSwgKFB5T2JqZWN0ICopY28sIHBhdGhuYW1lLCBjcGF0aG5hbWUpOwotICAgIFB5X0RFQ1JFRihjbyk7CiAKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIG07CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soZmlsZV9wYXRoKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotZXJyb3JfZXhpdDoKLSAgICBQeV9YREVDUkVGKGNvKTsKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgdXBkYXRlX2NvbXBpbGVkX21vZHVsZSgoUHlDb2RlT2JqZWN0KiljbywgZmlsZV9wYXRoKTsKKworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCi0vKiBHZXQgc291cmNlIGZpbGUgLT4gdW5pY29kZSBvciBOb25lCi0gKiBSZXR1cm5zIHRoZSBwYXRoIHRvIHRoZSBweSBmaWxlIGlmIGF2YWlsYWJsZSwgZWxzZSB0aGUgZ2l2ZW4gcGF0aAotICovCi1zdGF0aWMgUHlPYmplY3QgKgotZ2V0X3NvdXJjZWZpbGUoY2hhciAqZmlsZSkKLXsKLSAgICBjaGFyICpweSA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBsZW47Ci0gICAgUHlPYmplY3QgKnU7Ci0gICAgc3RydWN0IHN0YXQgc3RhdGJ1ZjsKLQotICAgIGlmICghZmlsZSB8fCAhKmZpbGUpIHsKLSAgICAgICAgUHlfUkVUVVJOX05PTkU7Ci0gICAgfQotCi0gICAgbGVuID0gc3RybGVuKGZpbGUpOwotICAgIC8qIG1hdGNoICcqLnB5PycgKi8KLSAgICBpZiAobGVuID4gTUFYUEFUSExFTiB8fCBQeU9TX3N0cm5pY21wKCZmaWxlW2xlbi00XSwgIi5weSIsIDMpICE9IDApIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoZmlsZSk7Ci0gICAgfQotCi0gICAgcHkgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAocHkgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKLSAgICB9Ci0gICAgLyogU3RhcnQgYnkgdHJ5aW5nIHRvIHR1cm4gUEVQIDMxNDcgcGF0aCBpbnRvIHNvdXJjZSBwYXRoLiAgSWYgdGhhdAotICAgICAqIGZhaWxzLCBqdXN0IGNob3Agb2ZmIHRoZSB0cmFpbGluZyBjaGFyYWN0ZXIsIGkuZS4gbGVnYWN5IHB5YyBwYXRoCi0gICAgICogdG8gcHkuCi0gICAgICovCi0gICAgaWYgKG1ha2Vfc291cmNlX3BhdGhuYW1lKGZpbGUsIHB5KSA9PSBOVUxMKSB7Ci0gICAgICAgIHN0cm5jcHkocHksIGZpbGUsIGxlbi0xKTsKLSAgICAgICAgcHlbbGVuLTFdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICBpZiAoc3RhdChweSwgJnN0YXRidWYpID09IDAgJiYKLSAgICAgICAgU19JU1JFRyhzdGF0YnVmLnN0X21vZGUpKSB7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KHB5KTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGZpbGUpOwotICAgIH0KLSAgICBQeU1lbV9GUkVFKHB5KTsKLSAgICByZXR1cm4gdTsKLX0KIAogLyogRm9yd2FyZCAqLwotc3RhdGljIFB5T2JqZWN0ICpsb2FkX21vZHVsZShjaGFyICosIEZJTEUgKiwgY2hhciAqLCBpbnQsIFB5T2JqZWN0ICopOwotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgKmZpbmRfbW9kdWxlKGNoYXIgKiwgY2hhciAqLCBQeU9iamVjdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgc2l6ZV90LCBGSUxFICoqLCBQeU9iamVjdCAqKik7Ci1zdGF0aWMgc3RydWN0IF9mcm96ZW4gKiBmaW5kX2Zyb3plbihjaGFyICopOwotCi0vKiBMb2FkIGEgcGFja2FnZSBhbmQgcmV0dXJuIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQKLSAgIFJFRkVSRU5DRSBDT1VOVCAqLwotCi1zdGF0aWMgUHlPYmplY3QgKgotbG9hZF9wYWNrYWdlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lKQotewotICAgIFB5T2JqZWN0ICptLCAqZDsKLSAgICBQeU9iamVjdCAqZmlsZSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwotICAgIGludCBlcnI7Ci0gICAgY2hhciAqYnVmID0gTlVMTDsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwOwotCi0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKLSAgICBpZiAobSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJpbXBvcnQgJXMgIyBkaXJlY3RvcnkgJXNcbiIsCi0gICAgICAgICAgICBuYW1lLCBwYXRobmFtZSk7Ci0gICAgZCA9IFB5TW9kdWxlX0dldERpY3QobSk7Ci0gICAgZmlsZSA9IGdldF9zb3VyY2VmaWxlKHBhdGhuYW1lKTsKLSAgICBpZiAoZmlsZSA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIHBhdGggPSBQeV9CdWlsZFZhbHVlKCJbT10iLCBmaWxlKTsKLSAgICBpZiAocGF0aCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGVyciA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2ZpbGVfXyIsIGZpbGUpOwotICAgIGlmIChlcnIgPT0gMCkKLSAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fcGF0aF9fIiwgcGF0aCk7Ci0gICAgaWYgKGVyciAhPSAwKQotICAgICAgICBnb3RvIGVycm9yOwotICAgIGJ1ZiA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBidWZbMF0gPSAnXDAnOwotICAgIGZkcCA9IGZpbmRfbW9kdWxlKG5hbWUsICJfX2luaXRfXyIsIHBhdGgsIGJ1ZiwgTUFYUEFUSExFTisxLCAmZnAsIE5VTEwpOwotICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpIHsKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbSA9IE5VTEw7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICB9Ci0gICAgbSA9IGxvYWRfbW9kdWxlKG5hbWUsIGZwLCBidWYsIGZkcC0+dHlwZSwgTlVMTCk7Ci0gICAgaWYgKGZwICE9IE5VTEwpCi0gICAgICAgIGZjbG9zZShmcCk7Ci0gICAgZ290byBjbGVhbnVwOwotCi0gIGVycm9yOgotICAgIG0gPSBOVUxMOwotICBjbGVhbnVwOgotICAgIGlmIChidWYpCi0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgIFB5X1hERUNSRUYoZmlsZSk7Ci0gICAgcmV0dXJuIG07Ci19CitzdGF0aWMgc3RydWN0IF9mcm96ZW4gKiBmaW5kX2Zyb3plbihQeU9iamVjdCAqKTsKIAogCiAvKiBIZWxwZXIgdG8gdGVzdCBmb3IgYnVpbHQtaW4gbW9kdWxlICovCiAKIHN0YXRpYyBpbnQKLWlzX2J1aWx0aW4oY2hhciAqbmFtZSkKK2lzX2J1aWx0aW4oUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgaW50IGk7CisgICAgaW50IGksIGNtcDsKICAgICBmb3IgKGkgPSAwOyBQeUltcG9ydF9Jbml0dGFiW2ldLm5hbWUgIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgIGlmIChzdHJjbXAobmFtZSwgUHlJbXBvcnRfSW5pdHRhYltpXS5uYW1lKSA9PSAwKSB7CisgICAgICAgIGNtcCA9IFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIFB5SW1wb3J0X0luaXR0YWJbaV0ubmFtZSk7CisgICAgICAgIGlmIChjbXAgPT0gMCkgewogICAgICAgICAgICAgaWYgKFB5SW1wb3J0X0luaXR0YWJbaV0uaW5pdGZ1bmMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBlbHNlCkBAIC0xNTQyLDE1ICs4OTcsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIH0KICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICBpbXBvcnRlciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoCi0gICAgICAgICAgICAoUHlPYmplY3QgKikmUHlOdWxsSW1wb3J0ZXJfVHlwZSwgcCwgTlVMTAotICAgICAgICApOwotICAgICAgICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfSW1wb3J0RXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9CiAgICAgaWYgKGltcG9ydGVyICE9IE5VTEwpIHsKICAgICAgICAgaW50IGVyciA9IFB5RGljdF9TZXRJdGVtKHBhdGhfaW1wb3J0ZXJfY2FjaGUsIHAsIGltcG9ydGVyKTsKQEAgLTE1NzUsNjYxICs5MjIsMzggQEAKICAgICByZXR1cm4gaW1wb3J0ZXI7CiB9CiAKLS8qIFNlYXJjaCB0aGUgcGF0aCAoZGVmYXVsdCBzeXMucGF0aCkgZm9yIGEgbW9kdWxlLiAgUmV0dXJuIHRoZQotICAgY29ycmVzcG9uZGluZyBmaWxlZGVzY3Igc3RydWN0LCBhbmQgKHZpYSByZXR1cm4gYXJndW1lbnRzKSB0aGUKLSAgIHBhdGhuYW1lIGFuZCBhbiBvcGVuIGZpbGUuICBSZXR1cm4gTlVMTCBpZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZC4gKi8KIAotI2lmZGVmIE1TX0NPUkVETEwKLWV4dGVybiBGSUxFICpQeVdpbl9GaW5kUmVnaXN0ZXJlZE1vZHVsZShjb25zdCBjaGFyICosIHN0cnVjdCBmaWxlZGVzY3IgKiosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqLCBQeV9zc2l6ZV90KTsKLSNlbmRpZgotCi1zdGF0aWMgaW50IGNhc2Vfb2soY2hhciAqLCBQeV9zc2l6ZV90LCBQeV9zc2l6ZV90LCBjaGFyICopOwotc3RhdGljIGludCBmaW5kX2luaXRfbW9kdWxlKGNoYXIgKik7IC8qIEZvcndhcmQgKi8KLXN0YXRpYyBzdHJ1Y3QgZmlsZWRlc2NyIGltcG9ydGhvb2tkZXNjciA9IHsiIiwgIiIsIElNUF9IT09LfTsKLQotc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgKgotZmluZF9tb2R1bGUoY2hhciAqZnVsbG5hbWUsIGNoYXIgKnN1Ym5hbWUsIFB5T2JqZWN0ICpwYXRoLCBjaGFyICpidWYsCi0gICAgICAgICAgICBzaXplX3QgYnVmbGVuLCBGSUxFICoqcF9mcCwgUHlPYmplY3QgKipwX2xvYWRlcikKLXsKLSAgICBQeV9zc2l6ZV90IGksIG5wYXRoOwotICAgIHNpemVfdCBsZW4sIG5hbWVsZW47Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwID0gTlVMTDsKLSAgICBjaGFyICpmaWxlbW9kZTsKLSAgICBGSUxFICpmcCA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKnBhdGhfaG9va3MsICpwYXRoX2ltcG9ydGVyX2NhY2hlOwotICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0gICAgc3RhdGljIHN0cnVjdCBmaWxlZGVzY3IgZmRfZnJvemVuID0geyIiLCAiIiwgUFlfRlJPWkVOfTsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9idWlsdGluID0geyIiLCAiIiwgQ19CVUlMVElOfTsKLSAgICBzdGF0aWMgc3RydWN0IGZpbGVkZXNjciBmZF9wYWNrYWdlID0geyIiLCAiIiwgUEtHX0RJUkVDVE9SWX07Ci0gICAgY2hhciAqbmFtZTsKLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIHNpemVfdCBzYXZlZF9sZW47Ci0gICAgc2l6ZV90IHNhdmVkX25hbWVsZW47Ci0gICAgY2hhciAqc2F2ZWRfYnVmID0gTlVMTDsKLSNlbmRpZgotICAgIGlmIChwX2xvYWRlciAhPSBOVUxMKQotICAgICAgICAqcF9sb2FkZXIgPSBOVUxMOwotCi0gICAgaWYgKHN0cmxlbihzdWJuYW1lKSA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlIG5hbWUgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG5hbWUgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzdHJjcHkobmFtZSwgc3VibmFtZSk7Ci0KLSAgICAvKiBzeXMubWV0YV9wYXRoIGltcG9ydCBob29rICovCi0gICAgaWYgKHBfbG9hZGVyICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm1ldGFfcGF0aDsKLQotICAgICAgICBtZXRhX3BhdGggPSBQeVN5c19HZXRPYmplY3QoIm1ldGFfcGF0aCIpOwotICAgICAgICBpZiAobWV0YV9wYXRoID09IE5VTEwgfHwgIVB5TGlzdF9DaGVjayhtZXRhX3BhdGgpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMubWV0YV9wYXRoIG11c3QgYmUgYSBsaXN0IG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGhvb2tzIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKG1ldGFfcGF0aCk7ICAvKiB6YXAgZ3VhcmQgKi8KLSAgICAgICAgbnBhdGggPSBQeUxpc3RfU2l6ZShtZXRhX3BhdGgpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnBhdGg7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKmxvYWRlcjsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpob29rID0gUHlMaXN0X0dldEl0ZW0obWV0YV9wYXRoLCBpKTsKLSAgICAgICAgICAgIGxvYWRlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaG9vaywgImZpbmRfbW9kdWxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNPIiwgZnVsbG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggIT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggOiBQeV9Ob25lKTsKLSAgICAgICAgICAgIGlmIChsb2FkZXIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRhX3BhdGgpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsgIC8qIHRydWUgZXJyb3IgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsb2FkZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgIC8qIGEgbG9hZGVyIHdhcyBmb3VuZCAqLwotICAgICAgICAgICAgICAgICpwX2xvYWRlciA9IGxvYWRlcjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWV0YV9wYXRoKTsKLSAgICAgICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgICAgIHJldHVybiAmaW1wb3J0aG9va2Rlc2NyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKG1ldGFfcGF0aCk7Ci0gICAgfQotCi0gICAgaWYgKGZpbmRfZnJvemVuKGZ1bGxuYW1lKSAhPSBOVUxMKSB7Ci0gICAgICAgIHN0cmNweShidWYsIGZ1bGxuYW1lKTsKLSAgICAgICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICAgICAgcmV0dXJuICZmZF9mcm96ZW47Ci0gICAgfQotCi0gICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICBpZiAoaXNfYnVpbHRpbihuYW1lKSkgewotICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgbmFtZSk7Ci0gICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuICZmZF9idWlsdGluOwotICAgICAgICB9Ci0jaWZkZWYgTVNfQ09SRURMTAotICAgICAgICBmcCA9IFB5V2luX0ZpbmRSZWdpc3RlcmVkTW9kdWxlKG5hbWUsICZmZHAsIGJ1ZiwgYnVmbGVuKTsKLSAgICAgICAgaWYgKGZwICE9IE5VTEwpIHsKLSAgICAgICAgICAgICpwX2ZwID0gZnA7Ci0gICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIGZkcDsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIHBhdGggPSBQeVN5c19HZXRPYmplY3QoInBhdGgiKTsKLSAgICB9Ci0KLSAgICBpZiAocGF0aCA9PSBOVUxMIHx8ICFQeUxpc3RfQ2hlY2socGF0aCkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzeXMucGF0aCBtdXN0IGJlIGEgbGlzdCBvZiBkaXJlY3RvcnkgbmFtZXMiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KLQotICAgIHBhdGhfaG9va3MgPSBQeVN5c19HZXRPYmplY3QoInBhdGhfaG9va3MiKTsKLSAgICBpZiAocGF0aF9ob29rcyA9PSBOVUxMIHx8ICFQeUxpc3RfQ2hlY2socGF0aF9ob29rcykpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzeXMucGF0aF9ob29rcyBtdXN0IGJlIGEgbGlzdCBvZiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGhvb2tzIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0gICAgcGF0aF9pbXBvcnRlcl9jYWNoZSA9IFB5U3lzX0dldE9iamVjdCgicGF0aF9pbXBvcnRlcl9jYWNoZSIpOwotICAgIGlmIChwYXRoX2ltcG9ydGVyX2NhY2hlID09IE5VTEwgfHwKLSAgICAgICAgIVB5RGljdF9DaGVjayhwYXRoX2ltcG9ydGVyX2NhY2hlKSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIG11c3QgYmUgYSBkaWN0Iik7Ci0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICB9Ci0KLSAgICBucGF0aCA9IFB5TGlzdF9TaXplKHBhdGgpOwotICAgIG5hbWVsZW4gPSBzdHJsZW4obmFtZSk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5wYXRoOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKnYgPSBQeUxpc3RfR2V0SXRlbShwYXRoLCBpKTsKLSAgICAgICAgUHlPYmplY3QgKm9yaWd2ID0gdjsKLSAgICAgICAgY29uc3QgY2hhciAqYmFzZTsKLSAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICBpZiAoIXYpCi0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHYpOwotICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIVB5Qnl0ZXNfQ2hlY2sodikpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUHlfSU5DUkVGKHYpOwotCi0gICAgICAgIGJhc2UgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUodik7Ci0gICAgICAgIGxlbiA9IHNpemU7Ci0gICAgICAgIGlmIChsZW4gKyAyICsgbmFtZWxlbiArIE1BWFNVRkZJWFNJWkUgPj0gYnVmbGVuKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICBjb250aW51ZTsgLyogVG9vIGxvbmcgKi8KLSAgICAgICAgfQotICAgICAgICBzdHJjcHkoYnVmLCBiYXNlKTsKLSAgICAgICAgUHlfREVDUkVGKHYpOwotCi0gICAgICAgIGlmIChzdHJsZW4oYnVmKSAhPSBsZW4pIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB2IGNvbnRhaW5zICdcMCcgKi8KLSAgICAgICAgfQotCi0gICAgICAgIC8qIHN5cy5wYXRoX2hvb2tzIGltcG9ydCBob29rICovCi0gICAgICAgIGlmIChwX2xvYWRlciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqaW1wb3J0ZXI7Ci0KLSAgICAgICAgICAgIGltcG9ydGVyID0gZ2V0X3BhdGhfaW1wb3J0ZXIocGF0aF9pbXBvcnRlcl9jYWNoZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9ob29rcywgb3JpZ3YpOwotICAgICAgICAgICAgaWYgKGltcG9ydGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKiBOb3RlOiBpbXBvcnRlciBpcyBhIGJvcnJvd2VkIHJlZmVyZW5jZSAqLwotICAgICAgICAgICAgaWYgKGltcG9ydGVyICE9IFB5X05vbmUpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG9hZGVyOwotICAgICAgICAgICAgICAgIGxvYWRlciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW1wb3J0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInMiLCBmdWxsbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKGxvYWRlciA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7ICAvKiBlcnJvciAqLwotICAgICAgICAgICAgICAgIGlmIChsb2FkZXIgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgICAgICAgICAvKiBhIGxvYWRlciB3YXMgZm91bmQgKi8KLSAgICAgICAgICAgICAgICAgICAgKnBfbG9hZGVyID0gbG9hZGVyOwotICAgICAgICAgICAgICAgICAgICBQeU1lbV9GUkVFKG5hbWUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJmltcG9ydGhvb2tkZXNjcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGxvYWRlcik7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLyogbm8gaG9vayB3YXMgZm91bmQsIHVzZSBidWlsdGluIGltcG9ydCAqLwotCi0gICAgICAgIGlmIChsZW4gPiAwICYmIGJ1ZltsZW4tMV0gIT0gU0VQCi0jaWZkZWYgQUxUU0VQCi0gICAgICAgICAgICAmJiBidWZbbGVuLTFdICE9IEFMVFNFUAotI2VuZGlmCi0gICAgICAgICAgICApCi0gICAgICAgICAgICBidWZbbGVuKytdID0gU0VQOwotICAgICAgICBzdHJjcHkoYnVmK2xlbiwgbmFtZSk7Ci0gICAgICAgIGxlbiArPSBuYW1lbGVuOwotCi0gICAgICAgIC8qIENoZWNrIGZvciBwYWNrYWdlIGltcG9ydCAoYnVmIGhvbGRzIGEgZGlyZWN0b3J5IG5hbWUsCi0gICAgICAgICAgIGFuZCB0aGVyZSdzIGFuIF9faW5pdF9fIG1vZHVsZSBpbiB0aGF0IGRpcmVjdG9yeSAqLwotI2lmZGVmIEhBVkVfU1RBVAotICAgICAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwICYmICAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgICAgICBTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkgJiYgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBjYXNlX29rKGJ1ZiwgbGVuLCBuYW1lbGVuLCBuYW1lKSkgeyAvKiBjYXNlIG1hdGNoZXMgKi8KLSAgICAgICAgICAgIGlmIChmaW5kX2luaXRfbW9kdWxlKGJ1ZikpIHsgLyogYW5kIGhhcyBfX2luaXRfXy5weSAqLwotICAgICAgICAgICAgICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZmZF9wYWNrYWdlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdW5pY29kZSA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYnVmKTsKLSAgICAgICAgICAgICAgICBpZiAodW5pY29kZSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICAgICAgZXJyID0gUHlFcnJfV2FybkZvcm1hdChQeUV4Y19JbXBvcnRXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAiTm90IGltcG9ydGluZyBkaXJlY3RvcnkgJyVVJzogbWlzc2luZyBfX2luaXRfXy5weSIsCi0gICAgICAgICAgICAgICAgICAgIHVuaWNvZGUpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKLSAgICAgICAgICAgICAgICBpZiAoZXJyKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSNlbmRpZgotI2lmIGRlZmluZWQoUFlPU19PUzIpCi0gICAgICAgIC8qIHRha2UgYSBzbmFwc2hvdCBvZiB0aGUgbW9kdWxlIHNwZWMgZm9yIHJlc3RvcmF0aW9uCi0gICAgICAgICAqIGFmdGVyIHRoZSA4IGNoYXJhY3RlciBETEwgaGFja2VyeQotICAgICAgICAgKi8KLSAgICAgICAgc2F2ZWRfYnVmID0gc3RyZHVwKGJ1Zik7Ci0gICAgICAgIHNhdmVkX2xlbiA9IGxlbjsKLSAgICAgICAgc2F2ZWRfbmFtZWxlbiA9IG5hbWVsZW47Ci0jZW5kaWYgLyogUFlPU19PUzIgKi8KLSAgICAgICAgZm9yIChmZHAgPSBfUHlJbXBvcnRfRmlsZXRhYjsgZmRwLT5zdWZmaXggIT0gTlVMTDsgZmRwKyspIHsKLSAgICAgICAgICAgIHN0cnVjdCBzdGF0IHN0YXRidWY7Ci0jaWYgZGVmaW5lZChQWU9TX09TMikgJiYgZGVmaW5lZChIQVZFX0RZTkFNSUNfTE9BRElORykKLSAgICAgICAgICAgIC8qIE9TLzIgbGltaXRzIERMTHMgdG8gOCBjaGFyYWN0ZXIgbmFtZXMgKHcvbwotICAgICAgICAgICAgICAgZXh0ZW5zaW9uKQotICAgICAgICAgICAgICogc28gaWYgdGhlIG5hbWUgaXMgbG9uZ2VyIHRoYW4gdGhhdCBhbmQgaXRzIGEKLSAgICAgICAgICAgICAqIGR5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGUgd2UncmUgZ29pbmcgdG8gdHJ5LAotICAgICAgICAgICAgICogdHJ1bmNhdGUgdGhlIG5hbWUgYmVmb3JlIHRyeWluZwotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoc3RybGVuKHN1Ym5hbWUpID4gOCkgewotICAgICAgICAgICAgICAgIC8qIGlzIHRoaXMgYW4gYXR0ZW1wdCB0byBsb2FkIGEgQyBleHRlbnNpb24/ICovCi0gICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZpbGVkZXNjciAqc2NhbjsKLSAgICAgICAgICAgICAgICBzY2FuID0gX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiOwotICAgICAgICAgICAgICAgIHdoaWxlIChzY2FuLT5zdWZmaXggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcChzY2FuLT5zdWZmaXgsIGZkcC0+c3VmZml4KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBzY2FuKys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzY2FuLT5zdWZmaXggIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAvKiB5ZXMsIHNvIHRydW5jYXRlIHRoZSBuYW1lICovCi0gICAgICAgICAgICAgICAgICAgIG5hbWVsZW4gPSA4OwotICAgICAgICAgICAgICAgICAgICBsZW4gLT0gc3RybGVuKHN1Ym5hbWUpIC0gbmFtZWxlbjsKLSAgICAgICAgICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNlbmRpZiAvKiBQWU9TX09TMiAqLwotICAgICAgICAgICAgc3RyY3B5KGJ1ZitsZW4sIGZkcC0+c3VmZml4KTsKLSAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZyA+IDEpCi0gICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgdHJ5aW5nICVzXG4iLCBidWYpOwotCi0gICAgICAgICAgICBmaWxlbW9kZSA9IGZkcC0+bW9kZTsKLSAgICAgICAgICAgIGlmIChmaWxlbW9kZVswXSA9PSAnVScpCi0gICAgICAgICAgICAgICAgZmlsZW1vZGUgPSAiciIgUFlfU1RESU9URVhUTU9ERTsKLQotICAgICAgICAgICAgaWYgKHN0YXQoYnVmLCAmc3RhdGJ1ZikgPT0gMCAmJiBTX0lTRElSKHN0YXRidWYuc3RfbW9kZSkpCi0gICAgICAgICAgICAgICAgLyogaXQncyBhIGRpcmVjdG9yeSAqLwotICAgICAgICAgICAgICAgIGZwID0gTlVMTDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmcCA9IGZvcGVuKGJ1ZiwgZmlsZW1vZGUpOwotICAgICAgICAgICAgaWYgKGZwICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FzZV9vayhidWYsIGxlbiwgbmFtZWxlbiwgbmFtZSkpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAvKiBjb250aW51ZSBzZWFyY2ggKi8KLSAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgICAgICAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSNpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgICAgICAgICAgLyogcmVzdG9yZSB0aGUgc2F2ZWQgc25hcHNob3QgKi8KLSAgICAgICAgICAgIHN0cmNweShidWYsIHNhdmVkX2J1Zik7Ci0gICAgICAgICAgICBsZW4gPSBzYXZlZF9sZW47Ci0gICAgICAgICAgICBuYW1lbGVuID0gc2F2ZWRfbmFtZWxlbjsKLSNlbmRpZgotICAgICAgICB9Ci0jaWYgZGVmaW5lZChQWU9TX09TMikKLSAgICAgICAgLyogZG9uJ3QgbmVlZC93YW50IHRoZSBtb2R1bGUgbmFtZSBzbmFwc2hvdCBhbnltb3JlICovCi0gICAgICAgIGlmIChzYXZlZF9idWYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyZWUoc2F2ZWRfYnVmKTsKLSAgICAgICAgICAgIHNhdmVkX2J1ZiA9IE5VTEw7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBpZiAoZnAgIT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiTm8gbW9kdWxlIG5hbWVkICUuMjAwcyIsIG5hbWUpOwotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0gICAgfQotICAgICpwX2ZwID0gZnA7Ci0gICAgUHlNZW1fRlJFRShuYW1lKTsKLSAgICByZXR1cm4gZmRwOwotCi1lcnJvcl9leGl0OgotICAgIFB5TWVtX0ZSRUUobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qIGNhc2Vfb2soY2hhciogYnVmLCBQeV9zc2l6ZV90IGxlbiwgUHlfc3NpemVfdCBuYW1lbGVuLCBjaGFyKiBuYW1lKQotICogVGhlIGFyZ3VtZW50cyBoZXJlIGFyZSB0cmlja3ksIGJlc3Qgc2hvd24gYnkgZXhhbXBsZToKLSAqICAgIC9hL2IvYy9kL2UvZi9nL2gvaS9qL2svc29tZV9sb25nX21vZHVsZV9uYW1lLnB5XDAKLSAqICAgIF4gICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICBeICAgIF4KLSAqICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0gYnVmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwKLSAqICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS0tLS18Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0gbmFtZSAtLS0tLS0tfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICB8LS0tLS0gbmFtZWxlbiAtLS0tLXwKLSAqIGJ1ZiBpcyB0aGUgZnVsbCBwYXRoLCBidXQgbGVuIG9ubHkgY291bnRzIHVwIHRvICgmIGV4Y2x1c2l2ZSBvZikgdGhlCi0gKiBleHRlbnNpb24uICBuYW1lIGlzIHRoZSBtb2R1bGUgbmFtZSwgYWxzbyBleGNsdXNpdmUgb2YgZXh0ZW5zaW9uLgotICoKLSAqIFdlJ3ZlIGFscmVhZHkgZG9uZSBhIHN1Y2Nlc3NmdWwgc3RhdCgpIG9yIGZvcGVuKCkgb24gYnVmLCBzbyBrbm93IHRoYXQKLSAqIHRoZXJlJ3Mgc29tZSBtYXRjaCwgcG9zc2libHkgY2FzZS1pbnNlbnNpdGl2ZS4KLSAqCi0gKiBjYXNlX29rKCkgaXMgdG8gcmV0dXJuIDEgaWYgdGhlcmUncyBhIGNhc2Utc2Vuc2l0aXZlIG1hdGNoIGZvcgotICogbmFtZSwgZWxzZSAwLiAgY2FzZV9vaygpIGlzIGFsc28gdG8gcmV0dXJuIDEgaWYgZW52YXIgUFlUSE9OQ0FTRU9LCi0gKiBleGlzdHMuCi0gKgotICogY2FzZV9vaygpIGlzIHVzZWQgdG8gaW1wbGVtZW50IGNhc2Utc2Vuc2l0aXZlIGltcG9ydCBzZW1hbnRpY3MgZXZlbgotICogb24gcGxhdGZvcm1zIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4gIEl0J3MgdHJpdmlhbCB0byBpbXBsZW1lbnQKLSAqIGZvciBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4gIEl0J3MgcHJldHR5IG11Y2ggYSBjcm9zcy1wbGF0Zm9ybQotICogbmlnaHRtYXJlIGZvciBzeXN0ZW1zIHdpdGggY2FzZS1pbnNlbnNpdGl2ZSBmaWxlc3lzdGVtcy4KLSAqLwotCi0vKiBGaXJzdCB3ZSBtYXkgbmVlZCBhIHBpbGUgb2YgcGxhdGZvcm0tc3BlY2lmaWMgaGVhZGVyIGZpbGVzOyB0aGUgc2VxdWVuY2UKLSAqIG9mICNpZidzIGhlcmUgc2hvdWxkIG1hdGNoIHRoZSBzZXF1ZW5jZSBpbiB0aGUgYm9keSBvZiBjYXNlX29rKCkuCi0gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCi0jaW5jbHVkZSA8d2luZG93cy5oPgotCi0jZWxpZiBkZWZpbmVkKERKR1BQKQotI2luY2x1ZGUgPGRpci5oPgotCi0jZWxpZiAoZGVmaW5lZChfX01BQ0hfXykgJiYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykpICYmIGRlZmluZWQoSEFWRV9ESVJFTlRfSCkKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxkaXJlbnQuaD4KLQotI2VsaWYgZGVmaW5lZChQWU9TX09TMikKLSNkZWZpbmUgSU5DTF9ET1MKLSNkZWZpbmUgSU5DTF9ET1NFUlJPUlMKLSNkZWZpbmUgSU5DTF9OT1BNQVBJCi0jaW5jbHVkZSA8b3MyLmg+Ci0jZW5kaWYKLQotc3RhdGljIGludAotY2FzZV9vayhjaGFyICpidWYsIFB5X3NzaXplX3QgbGVuLCBQeV9zc2l6ZV90IG5hbWVsZW4sIGNoYXIgKm5hbWUpCi17Ci0vKiBQaWNrIGEgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb247IHRoZSBzZXF1ZW5jZSBvZiAjaWYncyBoZXJlIHNob3VsZAotICogbWF0Y2ggdGhlIHNlcXVlbmNlIGp1c3QgYWJvdmUuCi0gKi8KLQotLyogTVNfV0lORE9XUyAqLwotI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBXSU4zMl9GSU5EX0RBVEEgZGF0YTsKLSAgICBIQU5ETEUgaDsKLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgaCA9IEZpbmRGaXJzdEZpbGUoYnVmLCAmZGF0YSk7Ci0gICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX05hbWVFcnJvciwKLSAgICAgICAgICAiQ2FuJ3QgZmluZCBmaWxlIGZvciBtb2R1bGUgJS4xMDBzXG4oZmlsZW5hbWUgJS4zMDBzKSIsCi0gICAgICAgICAgbmFtZSwgYnVmKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIEZpbmRDbG9zZShoKTsKLSAgICByZXR1cm4gc3RybmNtcChkYXRhLmNGaWxlTmFtZSwgbmFtZSwgbmFtZWxlbikgPT0gMDsKLQotLyogREpHUFAgKi8KLSNlbGlmIGRlZmluZWQoREpHUFApCi0gICAgc3RydWN0IGZmYmxrIGZmYmxrOwotICAgIGludCBkb25lOwotCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OQ0FTRU9LIikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICBkb25lID0gZmluZGZpcnN0KGJ1ZiwgJmZmYmxrLCBGQV9BUkNIfEZBX1JET05MWXxGQV9ISURERU58RkFfRElSRUMpOwotICAgIGlmIChkb25lKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19OYW1lRXJyb3IsCi0gICAgICAgICAgIkNhbid0IGZpbmQgZmlsZSBmb3IgbW9kdWxlICUuMTAwc1xuKGZpbGVuYW1lICUuMzAwcykiLAotICAgICAgICAgIG5hbWUsIGJ1Zik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gc3RybmNtcChmZmJsay5mZl9uYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBuZXctZmFuZ2xlZCBtYWNpbnRvc2ggKG1hY29zeCkgb3IgQ3lnd2luICovCi0jZWxpZiAoZGVmaW5lZChfX01BQ0hfXykgJiYgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykpICYmIGRlZmluZWQoSEFWRV9ESVJFTlRfSCkKLSAgICBESVIgKmRpcnA7Ci0gICAgc3RydWN0IGRpcmVudCAqZHA7Ci0gICAgY2hhciBkaXJuYW1lW01BWFBBVEhMRU4gKyAxXTsKLSAgICBjb25zdCBpbnQgZGlybGVuID0gbGVuIC0gbmFtZWxlbiAtIDE7IC8qIGRvbid0IHdhbnQgdHJhaWxpbmcgU0VQICovCi0KLSAgICBpZiAoUHlfR0VURU5WKCJQWVRIT05DQVNFT0siKSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIC8qIENvcHkgdGhlIGRpciBjb21wb25lbnQgaW50byBkaXJuYW1lOyBzdWJzdGl0dXRlICIuIiBpZiBlbXB0eSAqLwotICAgIGlmIChkaXJsZW4gPD0gMCkgewotICAgICAgICBkaXJuYW1lWzBdID0gJy4nOwotICAgICAgICBkaXJuYW1lWzFdID0gJ1wwJzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGFzc2VydChkaXJsZW4gPD0gTUFYUEFUSExFTik7Ci0gICAgICAgIG1lbWNweShkaXJuYW1lLCBidWYsIGRpcmxlbik7Ci0gICAgICAgIGRpcm5hbWVbZGlybGVuXSA9ICdcMCc7Ci0gICAgfQotICAgIC8qIE9wZW4gdGhlIGRpcmVjdG9yeSBhbmQgc2VhcmNoIHRoZSBlbnRyaWVzIGZvciBhbiBleGFjdCBtYXRjaC4gKi8KLSAgICBkaXJwID0gb3BlbmRpcihkaXJuYW1lKTsKLSAgICBpZiAoZGlycCkgewotICAgICAgICBjaGFyICpuYW1lV2l0aEV4dCA9IGJ1ZiArIGxlbiAtIG5hbWVsZW47Ci0gICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGRpcnApKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgdGhpc2xlbiA9Ci0jaWZkZWYgX0RJUkVOVF9IQVZFX0RfTkFNRUxFTgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHAtPmRfbmFtbGVuOwotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbihkcC0+ZF9uYW1lKTsKLSNlbmRpZgotICAgICAgICAgICAgaWYgKHRoaXNsZW4gPj0gbmFtZWxlbiAmJgotICAgICAgICAgICAgICAgIHN0cmNtcChkcC0+ZF9uYW1lLCBuYW1lV2l0aEV4dCkgPT0gMCkgewotICAgICAgICAgICAgICAgICh2b2lkKWNsb3NlZGlyKGRpcnApOwotICAgICAgICAgICAgICAgIHJldHVybiAxOyAvKiBGb3VuZCAqLwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICh2b2lkKWNsb3NlZGlyKGRpcnApOwotICAgIH0KLSAgICByZXR1cm4gMCA7IC8qIE5vdCBmb3VuZCAqLwotCi0vKiBPUy8yICovCi0jZWxpZiBkZWZpbmVkKFBZT1NfT1MyKQotICAgIEhESVIgaGRpciA9IDE7Ci0gICAgVUxPTkcgc3JjaGNudCA9IDE7Ci0gICAgRklMRUZJTkRCVUYzIGZmYnVmOwotICAgIEFQSVJFVCByYzsKLQotICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTkNBU0VPSyIpICE9IE5VTEwpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgcmMgPSBEb3NGaW5kRmlyc3QoYnVmLAotICAgICAgICAgICAgICAgICAgICAgICZoZGlyLAotICAgICAgICAgICAgICAgICAgICAgIEZJTEVfUkVBRE9OTFkgfCBGSUxFX0hJRERFTiB8IEZJTEVfU1lTVEVNIHwgRklMRV9ESVJFQ1RPUlksCi0gICAgICAgICAgICAgICAgICAgICAgJmZmYnVmLCBzaXplb2YoZmZidWYpLAotICAgICAgICAgICAgICAgICAgICAgICZzcmNoY250LAotICAgICAgICAgICAgICAgICAgICAgIEZJTF9TVEFOREFSRCk7Ci0gICAgaWYgKHJjICE9IE5PX0VSUk9SKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gc3RybmNtcChmZmJ1Zi5hY2hOYW1lLCBuYW1lLCBuYW1lbGVuKSA9PSAwOwotCi0vKiBhc3N1bWluZyBpdCdzIGEgY2FzZS1zZW5zaXRpdmUgZmlsZXN5c3RlbSwgc28gdGhlcmUncyBub3RoaW5nIHRvIGRvISAqLwotI2Vsc2UKLSAgICByZXR1cm4gMTsKLQotI2VuZGlmCi19Ci0KLSNpZmRlZiBIQVZFX1NUQVQKLQotLyogSGVscGVyIHRvIGxvb2sgZm9yIF9faW5pdF9fLnB5IG9yIF9faW5pdF9fLnB5W2NvXSBpbiBwb3RlbnRpYWwgcGFja2FnZSAqLwotc3RhdGljIGludAotZmluZF9pbml0X21vZHVsZShjaGFyICpidWYpCi17Ci0gICAgY29uc3Qgc2l6ZV90IHNhdmVfbGVuID0gc3RybGVuKGJ1Zik7Ci0gICAgc2l6ZV90IGkgPSBzYXZlX2xlbjsKLSAgICBjaGFyICpwbmFtZTsgIC8qIHBvaW50ZXIgdG8gc3RhcnQgb2YgX19pbml0X18gKi8KLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCi0vKiAgICAgIEZvciBjYWxsaW5nIGNhc2Vfb2soYnVmLCBsZW4sIG5hbWVsZW4sIG5hbWUpOgotICogICAgICAvYS9iL2MvZC9lL2YvZy9oL2kvai9rL3NvbWVfbG9uZ19tb2R1bGVfbmFtZS5weVwwCi0gKiAgICAgIF4gICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICAgICAgICAgICBeICAgIF4KLSAqICAgICAgfC0tLS0tLS0tLS0tLS0tLS0tLS0tLSBidWYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgICB8LS0tLS0tLS0tLS0tLS0tLS0tLSBsZW4gLS0tLS0tLS0tLS0tLS0tLS0tfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLS0gbmFtZSAtLS0tLS0tfAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwtLS0tLSBuYW1lbGVuIC0tLS0tfAotICovCi0gICAgaWYgKHNhdmVfbGVuICsgMTMgPj0gTUFYUEFUSExFTikKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgYnVmW2krK10gPSBTRVA7Ci0gICAgcG5hbWUgPSBidWYgKyBpOwotICAgIHN0cmNweShwbmFtZSwgIl9faW5pdF9fLnB5Iik7Ci0gICAgaWYgKHN0YXQoYnVmLCAmc3RhdGJ1ZikgPT0gMCkgewotICAgICAgICBpZiAoY2FzZV9vayhidWYsCi0gICAgICAgICAgICAgICAgICAgIHNhdmVfbGVuICsgOSwgICAgICAgICAgICAgICAvKiBsZW4oIi9fX2luaXRfXyIpICovCi0gICAgICAgICAgICAgICAgOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsZW4oIl9faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICBwbmFtZSkpIHsKLSAgICAgICAgICAgIGJ1ZltzYXZlX2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaSArPSBzdHJsZW4ocG5hbWUpOwotICAgIHN0cmNweShidWYraSwgUHlfT3B0aW1pemVGbGFnID8gIm8iIDogImMiKTsKLSAgICBpZiAoc3RhdChidWYsICZzdGF0YnVmKSA9PSAwKSB7Ci0gICAgICAgIGlmIChjYXNlX29rKGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgc2F2ZV9sZW4gKyA5LCAgICAgICAgICAgICAgIC8qIGxlbigiL19faW5pdF9fIikgKi8KLSAgICAgICAgICAgICAgICA4LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbigiX19pbml0X18iKSAqLwotICAgICAgICAgICAgICAgIHBuYW1lKSkgewotICAgICAgICAgICAgYnVmW3NhdmVfbGVuXSA9ICdcMCc7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBidWZbc2F2ZV9sZW5dID0gJ1wwJzsKLSAgICByZXR1cm4gMDsKLX0KLQotI2VuZGlmIC8qIEhBVkVfU1RBVCAqLwotCi0KLXN0YXRpYyBpbnQgaW5pdF9idWlsdGluKGNoYXIgKik7IC8qIEZvcndhcmQgKi8KLQotc3RhdGljIFB5T2JqZWN0KgotbG9hZF9idWlsdGluKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBpbnQgdHlwZSkKLXsKLSAgICBQeU9iamVjdCAqbSwgKm1vZHVsZXM7Ci0gICAgaW50IGVycjsKLQotICAgIGlmIChwYXRobmFtZSAhPSBOVUxMICYmIHBhdGhuYW1lWzBdICE9ICdcMCcpCi0gICAgICAgIG5hbWUgPSBwYXRobmFtZTsKLQotICAgIGlmICh0eXBlID09IENfQlVJTFRJTikKLSAgICAgICAgZXJyID0gaW5pdF9idWlsdGluKG5hbWUpOwotICAgIGVsc2UKLSAgICAgICAgZXJyID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKG5hbWUpOwotICAgIGlmIChlcnIgPCAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoZXJyID09IDApIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICJQdXJwb3J0ZWQgJXMgbW9kdWxlICUuMjAwcyBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQ19CVUlMVElOID8KLSAgICAgICAgICAgICAgICAiYnVpbHRpbiIgOiAiZnJvemVuIiwKLSAgICAgICAgICAgICAgICBuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgbmFtZSk7Ci0gICAgaWYgKG0gPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICAgICAgIiVzIG1vZHVsZSAlLjIwMHMgbm90IHByb3Blcmx5IGluaXRpYWxpemVkIiwKLSAgICAgICAgICAgICAgICB0eXBlID09IENfQlVJTFRJTiA/Ci0gICAgICAgICAgICAgICAgImJ1aWx0aW4iIDogImZyb3plbiIsCi0gICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9JTkNSRUYobSk7Ci0gICAgcmV0dXJuIG07Ci19Ci0KLS8qIExvYWQgYW4gZXh0ZXJuYWwgbW9kdWxlIHVzaW5nIHRoZSBkZWZhdWx0IHNlYXJjaCBwYXRoIGFuZCByZXR1cm4KLSAgIGl0cyBtb2R1bGUgb2JqZWN0IFdJVEggSU5DUkVNRU5URUQgUkVGRVJFTkNFIENPVU5UICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1sb2FkX21vZHVsZShjaGFyICpuYW1lLCBGSUxFICpmcCwgY2hhciAqcGF0aG5hbWUsIGludCB0eXBlLCBQeU9iamVjdCAqbG9hZGVyKQotewotICAgIFB5T2JqZWN0ICptOwotCi0gICAgLyogRmlyc3QgY2hlY2sgdGhhdCB0aGVyZSdzIGFuIG9wZW4gZmlsZSAoaWYgd2UgbmVlZCBvbmUpICAqLwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUFlfU09VUkNFOgotICAgIGNhc2UgUFlfQ09NUElMRUQ6Ci0gICAgICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICJmaWxlIG9iamVjdCByZXF1aXJlZCBmb3IgaW1wb3J0ICh0eXBlIGNvZGUgJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0KLSAgICBjYXNlIFBZX1NPVVJDRToKLSAgICAgICAgbSA9IGxvYWRfc291cmNlX21vZHVsZShuYW1lLCBwYXRobmFtZSwgZnApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUFlfQ09NUElMRUQ6Ci0gICAgICAgIG0gPSBsb2FkX2NvbXBpbGVkX21vZHVsZShuYW1lLCBwYXRobmFtZSwgZnApOwotICAgICAgICBicmVhazsKLQotI2lmZGVmIEhBVkVfRFlOQU1JQ19MT0FESU5HCi0gICAgY2FzZSBDX0VYVEVOU0lPTjoKLSAgICAgICAgbSA9IF9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShuYW1lLCBwYXRobmFtZSwgZnApOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgY2FzZSBQS0dfRElSRUNUT1JZOgotICAgICAgICBtID0gbG9hZF9wYWNrYWdlKG5hbWUsIHBhdGhuYW1lKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIENfQlVJTFRJTjoKLSAgICBjYXNlIFBZX0ZST1pFTjoKLSAgICAgICAgbSA9IGxvYWRfYnVpbHRpbihuYW1lLCBwYXRobmFtZSwgdHlwZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBJTVBfSE9PSzogewotICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGhvb2sgd2l0aG91dCBsb2FkZXIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIG0gPSBQeU9iamVjdF9DYWxsTWV0aG9kKGxvYWRlciwgImxvYWRfbW9kdWxlIiwgInMiLCBuYW1lKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGtub3cgaG93IHRvIGltcG9ydCAlLjIwMHMgKHR5cGUgY29kZSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHR5cGUpOwotICAgICAgICBtID0gTlVMTDsKLQotICAgIH0KLQotICAgIHJldHVybiBtOwotfQotCitzdGF0aWMgaW50IGluaXRfYnVpbHRpbihQeU9iamVjdCAqKTsgLyogRm9yd2FyZCAqLwogCiAvKiBJbml0aWFsaXplIGEgYnVpbHQtaW4gbW9kdWxlLgogICAgUmV0dXJuIDEgZm9yIHN1Y2Nlc3MsIDAgaWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQsIGFuZCAtMSB3aXRoCiAgICBhbiBleGNlcHRpb24gc2V0IGlmIHRoZSBpbml0aWFsaXphdGlvbiBmYWlsZWQuICovCiAKIHN0YXRpYyBpbnQKLWluaXRfYnVpbHRpbihjaGFyICpuYW1lKQoraW5pdF9idWlsdGluKFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfaW5pdHRhYiAqcDsKIAotICAgIGlmIChfUHlJbXBvcnRfRmluZEJ1aWx0aW4obmFtZSkgIT0gTlVMTCkKKyAgICBpZiAoX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25PYmplY3QobmFtZSwgbmFtZSkgIT0gTlVMTCkKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBmb3IgKHAgPSBQeUltcG9ydF9Jbml0dGFiOyBwLT5uYW1lICE9IE5VTEw7IHArKykgewogICAgICAgICBQeU9iamVjdCAqbW9kOwogICAgICAgICBQeU1vZHVsZURlZiAqZGVmOwotICAgICAgICBpZiAoc3RyY21wKG5hbWUsIHAtPm5hbWUpID09IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsIHAtPm5hbWUpID09IDApIHsKICAgICAgICAgICAgIGlmIChwLT5pbml0ZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IHJlLWluaXQgaW50ZXJuYWwgbW9kdWxlICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcmUtaW5pdCBpbnRlcm5hbCBtb2R1bGUgJVIiLAogICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGJ1aWx0aW5cbiIsIG5hbWUpOwogICAgICAgICAgICAgbW9kID0gKCpwLT5pbml0ZnVuYykoKTsKICAgICAgICAgICAgIGlmIChtb2QgPT0gMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAvKiBSZW1lbWJlciBwb2ludGVyIHRvIG1vZHVsZSBpbml0IGZ1bmN0aW9uLiAqLwogICAgICAgICAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgICAgICAgICBkZWYtPm1fYmFzZS5tX2luaXQgPSBwLT5pbml0ZnVuYzsKLSAgICAgICAgICAgIGlmIChfUHlJbXBvcnRfRml4dXBCdWlsdGluKG1vZCwgbmFtZSkgPCAwKQorICAgICAgICAgICAgaWYgKF9QeUltcG9ydF9GaXh1cEV4dGVuc2lvbk9iamVjdChtb2QsIG5hbWUsIG5hbWUpIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAvKiBGaXh1cEV4dGVuc2lvbiBoYXMgcHV0IHRoZSBtb2R1bGUgaW50byBzeXMubW9kdWxlcywKICAgICAgICAgICAgICAgIHNvIHdlIGNhbiByZWxlYXNlIG91ciBvd24gcmVmZXJlbmNlLiAqLwpAQCAtMjI0NCwzNyArOTY4LDM3IEBACiAvKiBGcm96ZW4gbW9kdWxlcyAqLwogCiBzdGF0aWMgc3RydWN0IF9mcm96ZW4gKgotZmluZF9mcm96ZW4oY2hhciAqbmFtZSkKK2ZpbmRfZnJvemVuKFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfZnJvemVuICpwOwogCi0gICAgaWYgKCFuYW1lKQorICAgIGlmIChuYW1lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZm9yIChwID0gUHlJbXBvcnRfRnJvemVuTW9kdWxlczsgOyBwKyspIHsKICAgICAgICAgaWYgKHAtPm5hbWUgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBpZiAoc3RyY21wKHAtPm5hbWUsIG5hbWUpID09IDApCisgICAgICAgIGlmIChQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhuYW1lLCBwLT5uYW1lKSA9PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBwOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X2Zyb3plbl9vYmplY3QoY2hhciAqbmFtZSkKK2dldF9mcm96ZW5fb2JqZWN0KFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfZnJvemVuICpwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgaW50IHNpemU7CiAKICAgICBpZiAocCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAocC0+Y29kZSA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAiRXhjbHVkZWQgZnJvemVuIG9iamVjdCBuYW1lZCAlUiIsCiAgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtMjI4NSwxNCArMTAwOSwxNCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotaXNfZnJvemVuX3BhY2thZ2UoY2hhciAqbmFtZSkKK2lzX2Zyb3plbl9wYWNrYWdlKFB5T2JqZWN0ICpuYW1lKQogewogICAgIHN0cnVjdCBfZnJvemVuICpwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgaW50IHNpemU7CiAKICAgICBpZiAocCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJObyBzdWNoIGZyb3plbiBvYmplY3QgbmFtZWQgJVIiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTIzMTIsMTkgKzEwMzYsMjAgQEAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyB1c2VkIGZyb20gZnJvemVubWFpbi5jICovCiAKIGludAotUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKGNoYXIgKm5hbWUpCitQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGVPYmplY3QoUHlPYmplY3QgKm5hbWUpCiB7Ci0gICAgc3RydWN0IF9mcm96ZW4gKnAgPSBmaW5kX2Zyb3plbihuYW1lKTsKLSAgICBQeU9iamVjdCAqY287Ci0gICAgUHlPYmplY3QgKm07CisgICAgc3RydWN0IF9mcm96ZW4gKnA7CisgICAgUHlPYmplY3QgKmNvLCAqbSwgKnBhdGg7CiAgICAgaW50IGlzcGFja2FnZTsKICAgICBpbnQgc2l6ZTsKIAorICAgIHAgPSBmaW5kX2Zyb3plbihuYW1lKTsKKwogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChwLT5jb2RlID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkV4Y2x1ZGVkIGZyb3plbiBvYmplY3QgbmFtZWQgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICJFeGNsdWRlZCBmcm96ZW4gb2JqZWN0IG5hbWVkICVSIiwKICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQpAQCAtMjMzMiw0MSArMTA1NywzOSBAQAogICAgIGlzcGFja2FnZSA9IChzaXplIDwgMCk7CiAgICAgaWYgKGlzcGFja2FnZSkKICAgICAgICAgc2l6ZSA9IC1zaXplOwotICAgIGlmIChQeV9WZXJib3NlRmxhZykKLSAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoImltcG9ydCAlcyAjIGZyb3plbiVzXG4iLAotICAgICAgICAgICAgbmFtZSwgaXNwYWNrYWdlID8gIiBwYWNrYWdlIiA6ICIiKTsKICAgICBjbyA9IFB5TWFyc2hhbF9SZWFkT2JqZWN0RnJvbVN0cmluZygoY2hhciAqKXAtPmNvZGUsIHNpemUpOwogICAgIGlmIChjbyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgaWYgKCFQeUNvZGVfQ2hlY2soY28pKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiZnJvemVuIG9iamVjdCAlLjIwMHMgaXMgbm90IGEgY29kZSBvYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgImZyb3plbiBvYmplY3QgJVIgaXMgbm90IGEgY29kZSBvYmplY3QiLAogICAgICAgICAgICAgICAgICAgICAgbmFtZSk7CiAgICAgICAgIGdvdG8gZXJyX3JldHVybjsKICAgICB9CiAgICAgaWYgKGlzcGFja2FnZSkgewogICAgICAgICAvKiBTZXQgX19wYXRoX18gdG8gdGhlIHBhY2thZ2UgbmFtZSAqLwotICAgICAgICBQeU9iamVjdCAqZCwgKnMsICpsOworICAgICAgICBQeU9iamVjdCAqZCwgKmw7CiAgICAgICAgIGludCBlcnI7Ci0gICAgICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGVPYmplY3QobmFtZSk7CiAgICAgICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwotICAgICAgICBzID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcobmFtZSk7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIGwgPSBQeUxpc3RfTmV3KDEpOwogICAgICAgICBpZiAobCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7CiAgICAgICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgUHlMaXN0X1NFVF9JVEVNKGwsIDAsIHMpOworICAgICAgICBQeV9JTkNSRUYobmFtZSk7CisgICAgICAgIFB5TGlzdF9TRVRfSVRFTShsLCAwLCBuYW1lKTsKICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fcGF0aF9fIiwgbCk7CiAgICAgICAgIFB5X0RFQ1JFRihsKTsKICAgICAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICAgICAgZ290byBlcnJfcmV0dXJuOwogICAgIH0KLSAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeChuYW1lLCBjbywgIjxmcm96ZW4+Iik7CisgICAgcGF0aCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCI8ZnJvemVuPiIpOworICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyX3JldHVybjsKKyAgICBtID0gUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVPYmplY3QobmFtZSwgY28sIHBhdGgsIE5VTEwpOworICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycl9yZXR1cm47CiAgICAgUHlfREVDUkVGKGNvKTsKQEAgLTIzNzcsNiArMTEwMCwxOSBAQAogICAgIHJldHVybiAtMTsKIH0KIAoraW50CitQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoY2hhciAqbmFtZSkKK3sKKyAgICBQeU9iamVjdCAqbmFtZW9iajsKKyAgICBpbnQgcmV0OworICAgIG5hbWVvYmogPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZyhuYW1lKTsKKyAgICBpZiAobmFtZW9iaiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlT2JqZWN0KG5hbWVvYmopOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gcmV0OworfQorCiAKIC8qIEltcG9ydCBhIG1vZHVsZSwgZWl0aGVyIGJ1aWx0LWluLCBmcm96ZW4sIG9yIGV4dGVybmFsLCBhbmQgcmV0dXJuCiAgICBpdHMgbW9kdWxlIG9iamVjdCBXSVRIIElOQ1JFTUVOVEVEIFJFRkVSRU5DRSBDT1VOVCAqLwpAQCAtMjQwNyw1ODUgKzExNDMsNDExIEBACiBQeU9iamVjdCAqCiBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrKGNvbnN0IGNoYXIgKm5hbWUpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBQeU9iamVjdCAqbW9kdWxlczsKLSNpZmRlZiBXSVRIX1RIUkVBRAotICAgIGxvbmcgbWU7Ci0jZW5kaWYKLQotICAgIC8qIFRyeSB0byBnZXQgdGhlIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzW25hbWVdICovCi0gICAgbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKLSAgICBpZiAobW9kdWxlcyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHJlc3VsdCA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpOwotICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgfQotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgLyogY2hlY2sgdGhlIGltcG9ydCBsb2NrCi0gICAgICogbWUgbWlnaHQgYmUgLTEgYnV0IEkgaWdub3JlIHRoZSBlcnJvciBoZXJlLCB0aGUgbG9jayBmdW5jdGlvbgotICAgICAqIHRha2VzIGNhcmUgb2YgdGhlIHByb2JsZW0gKi8KLSAgICBtZSA9IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKTsKLSAgICBpZiAoaW1wb3J0X2xvY2tfdGhyZWFkID09IC0xIHx8IGltcG9ydF9sb2NrX3RocmVhZCA9PSBtZSkgewotICAgICAgICAvKiBubyB0aHJlYWQgb3IgbWUgaXMgaG9sZGluZyB0aGUgbG9jayAqLwotICAgICAgICByZXR1cm4gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKG5hbWUpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBpbXBvcnQgJS4yMDBzIGJlY2F1c2UgdGhlIGltcG9ydCBsb2NrIgotICAgICAgICAgICAgICAgICAgICAgImlzIGhlbGQgYnkgYW5vdGhlciB0aHJlYWQuIiwKLSAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0jZWxzZQogICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnRNb2R1bGUobmFtZSk7Ci0jZW5kaWYKIH0KIAotLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgZm9yIGhlbHBlciByb3V0aW5lcyAqLwotc3RhdGljIFB5T2JqZWN0ICpnZXRfcGFyZW50KFB5T2JqZWN0ICpnbG9iYWxzLCBjaGFyICpidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqcF9idWZsZW4sIGludCBsZXZlbCk7Ci1zdGF0aWMgUHlPYmplY3QgKmxvYWRfbmV4dChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYWx0bW9kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnBfbmFtZSwgY2hhciAqYnVmLCBQeV9zc2l6ZV90ICpwX2J1Zmxlbik7Ci1zdGF0aWMgaW50IG1hcmtfbWlzcyhjaGFyICpuYW1lKTsKLXN0YXRpYyBpbnQgZW5zdXJlX2Zyb21saXN0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICpmcm9tbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmJ1ZiwgUHlfc3NpemVfdCBidWZsZW4sIGludCByZWN1cnNpdmUpOwotc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X3N1Ym1vZHVsZShQeU9iamVjdCAqbW9kLCBjaGFyICpuYW1lLCBjaGFyICpmdWxsbmFtZSk7CiAKLS8qIFRoZSBNYWdudW0gT3B1cyBvZiBkb3R0ZWQtbmFtZSBpbXBvcnQgOi0pICovCi0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBvcnRfbW9kdWxlX2xldmVsKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKKy8qIFJlbW92ZSBpbXBvcnRsaWIgZnJhbWVzIGZyb20gdGhlIHRyYWNlYmFjaywKKyAqIGV4Y2VwdCBpbiBWZXJib3NlIG1vZGUuICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXModm9pZCkKIHsKLSAgICBjaGFyICpidWY7Ci0gICAgUHlfc3NpemVfdCBidWZsZW4gPSAwOwotICAgIFB5T2JqZWN0ICpwYXJlbnQsICpoZWFkLCAqbmV4dCwgKnRhaWw7CisgICAgY29uc3QgY2hhciAqaW1wb3J0bGliX2ZpbGVuYW1lID0gIjxmcm96ZW4gaW1wb3J0bGliLl9ib290c3RyYXA+IjsKKyAgICBjb25zdCBjaGFyICpyZW1vdmVfZnJhbWVzID0gIl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQiOworICAgIGludCBhbHdheXNfdHJpbSA9IDA7CisgICAgaW50IGluX2ltcG9ydGxpYiA9IDA7CisgICAgUHlPYmplY3QgKmV4Y2VwdGlvbiwgKnZhbHVlLCAqYmFzZV90YiwgKnRiOworICAgIFB5T2JqZWN0ICoqcHJldl9saW5rLCAqKm91dGVyX2xpbmsgPSBOVUxMOwogCi0gICAgaWYgKHN0cmNocihuYW1lLCAnLycpICE9IE5VTEwKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgIHx8IHN0cmNocihuYW1lLCAnXFwnKSAhPSBOVUxMCisgICAgLyogU3lub3BzaXM6IGlmIGl0J3MgYW4gSW1wb3J0RXJyb3IsIHdlIHRyaW0gYWxsIGltcG9ydGxpYiBjaHVua3MKKyAgICAgICBmcm9tIHRoZSB0cmFjZWJhY2suIFdlIGFsd2F5cyB0cmltIGNodW5rcworICAgICAgIHdoaWNoIGVuZCB3aXRoIGEgY2FsbCB0byAiX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZCIuICovCisKKyAgICBQeUVycl9GZXRjaCgmZXhjZXB0aW9uLCAmdmFsdWUsICZiYXNlX3RiKTsKKyAgICBpZiAoIWV4Y2VwdGlvbiB8fCBQeV9WZXJib3NlRmxhZykKKyAgICAgICAgZ290byBkb25lOworICAgIGlmIChQeVR5cGVfSXNTdWJ0eXBlKChQeVR5cGVPYmplY3QgKikgZXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIChQeVR5cGVPYmplY3QgKikgUHlFeGNfSW1wb3J0RXJyb3IpKQorICAgICAgICBhbHdheXNfdHJpbSA9IDE7CisKKyAgICBwcmV2X2xpbmsgPSAmYmFzZV90YjsKKyAgICB0YiA9IGJhc2VfdGI7CisgICAgd2hpbGUgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlUcmFjZWJhY2tPYmplY3QgKnRyYWNlYmFjayA9IChQeVRyYWNlYmFja09iamVjdCAqKXRiOworICAgICAgICBQeU9iamVjdCAqbmV4dCA9IChQeU9iamVjdCAqKSB0cmFjZWJhY2stPnRiX25leHQ7CisgICAgICAgIFB5RnJhbWVPYmplY3QgKmZyYW1lID0gdHJhY2ViYWNrLT50Yl9mcmFtZTsKKyAgICAgICAgUHlDb2RlT2JqZWN0ICpjb2RlID0gZnJhbWUtPmZfY29kZTsKKyAgICAgICAgaW50IG5vd19pbl9pbXBvcnRsaWI7CisKKyAgICAgICAgYXNzZXJ0KFB5VHJhY2VCYWNrX0NoZWNrKHRiKSk7CisgICAgICAgIG5vd19pbl9pbXBvcnRsaWIgPSAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWJfZmlsZW5hbWUpID09IDApOworICAgICAgICBpZiAobm93X2luX2ltcG9ydGxpYiAmJiAhaW5faW1wb3J0bGliKSB7CisgICAgICAgICAgICAvKiBUaGlzIGlzIHRoZSBsaW5rIHRvIHRoaXMgY2h1bmsgb2YgaW1wb3J0bGliIHRyYWNlYmFja3MgKi8KKyAgICAgICAgICAgIG91dGVyX2xpbmsgPSBwcmV2X2xpbms7CisgICAgICAgIH0KKyAgICAgICAgaW5faW1wb3J0bGliID0gbm93X2luX2ltcG9ydGxpYjsKKworICAgICAgICBpZiAoaW5faW1wb3J0bGliICYmCisgICAgICAgICAgICAoYWx3YXlzX3RyaW0gfHwKKyAgICAgICAgICAgICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZyhjb2RlLT5jb19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZV9mcmFtZXMpID09IDApKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gKm91dGVyX2xpbms7CisgICAgICAgICAgICAqb3V0ZXJfbGluayA9IG5leHQ7CisgICAgICAgICAgICBQeV9YSU5DUkVGKG5leHQpOworICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBwcmV2X2xpbmsgPSBvdXRlcl9saW5rOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcHJldl9saW5rID0gKFB5T2JqZWN0ICoqKSAmdHJhY2ViYWNrLT50Yl9uZXh0OworICAgICAgICB9CisgICAgICAgIHRiID0gbmV4dDsKKyAgICB9Citkb25lOgorICAgIFB5RXJyX1Jlc3RvcmUoZXhjZXB0aW9uLCB2YWx1ZSwgYmFzZV90Yik7Cit9CisKKworUHlPYmplY3QgKgorUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWxPYmplY3QoUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpnaXZlbl9nbG9iYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmxvY2FscywgUHlPYmplY3QgKmdpdmVuX2Zyb21saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKQoreworICAgIF9QeV9JREVOVElGSUVSKF9faW1wb3J0X18pOworICAgIF9QeV9JREVOVElGSUVSKF9faW5pdGlhbGl6aW5nX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fcGFja2FnZV9fKTsKKyAgICBfUHlfSURFTlRJRklFUihfX3BhdGhfXyk7CisgICAgX1B5X0lERU5USUZJRVIoX19uYW1lX18pOworICAgIF9QeV9JREVOVElGSUVSKF9maW5kX2FuZF9sb2FkKTsKKyAgICBfUHlfSURFTlRJRklFUihfaGFuZGxlX2Zyb21saXN0KTsKKyAgICBfUHlfSURFTlRJRklFUihfbG9ja191bmxvY2tfbW9kdWxlKTsKKyAgICBfUHlfc3RhdGljX3N0cmluZyhzaW5nbGVfZG90LCAiLiIpOworICAgIFB5T2JqZWN0ICphYnNfbmFtZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKmJ1aWx0aW5zX2ltcG9ydCA9IE5VTEw7CisgICAgUHlPYmplY3QgKmZpbmFsX21vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1vZCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnBhY2thZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBOVUxMOworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworCisgICAgLyogTWFrZSBzdXJlIHRvIHVzZSBkZWZhdWx0IHZhbHVlcyBzbyBhcyB0byBub3QgaGF2ZQorICAgICAgIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKCkgdHJ1bmNhdGUgdGhlIHBhcmFtZXRlciBsaXN0IGJlY2F1c2Ugb2YgYQorICAgICAgIE5VTEwgYXJndW1lbnQuICovCisgICAgaWYgKGdpdmVuX2dsb2JhbHMgPT0gTlVMTCkgeworICAgICAgICBnbG9iYWxzID0gUHlEaWN0X05ldygpOworICAgICAgICBpZiAoZ2xvYmFscyA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBPbmx5IGhhdmUgdG8gY2FyZSB3aGF0IGdpdmVuX2dsb2JhbHMgaXMgaWYgaXQgd2lsbCBiZSB1c2VkCisgICAgICAgICAgIGZvciBzb21ldGhpbmcuICovCisgICAgICAgIGlmIChsZXZlbCA+IDAgJiYgIVB5RGljdF9DaGVjayhnaXZlbl9nbG9iYWxzKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImdsb2JhbHMgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgZ2xvYmFscyA9IGdpdmVuX2dsb2JhbHM7CisgICAgICAgIFB5X0lOQ1JFRihnbG9iYWxzKTsKKyAgICB9CisKKyAgICBpZiAoZ2l2ZW5fZnJvbWxpc3QgPT0gTlVMTCkgeworICAgICAgICBmcm9tbGlzdCA9IFB5TGlzdF9OZXcoMCk7CisgICAgICAgIGlmIChmcm9tbGlzdCA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmcm9tbGlzdCA9IGdpdmVuX2Zyb21saXN0OworICAgICAgICBQeV9JTkNSRUYoZnJvbWxpc3QpOworICAgIH0KKyAgICBpZiAobmFtZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvKiBUaGUgYmVsb3cgY29kZSBpcyBpbXBvcnRsaWIuX19pbXBvcnRfXygpICYgX2djZF9pbXBvcnQoKSwgcG9ydGVkIHRvIEMKKyAgICAgICBmb3IgYWRkZWQgcGVyZm9ybWFuY2UuICovCisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAibW9kdWxlIG5hbWUgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfUkVBRFkobmFtZSkgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChsZXZlbCA8IDApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsZXZlbCBtdXN0IGJlID49IDAiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgZWxzZSBpZiAobGV2ZWwgPiAwKSB7CisgICAgICAgIHBhY2thZ2UgPSBfUHlEaWN0X0dldEl0ZW1JZChnbG9iYWxzLCAmUHlJZF9fX3BhY2thZ2VfXyk7CisgICAgICAgIGlmIChwYWNrYWdlICE9IE5VTEwgJiYgcGFja2FnZSAhPSBQeV9Ob25lKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhwYWNrYWdlKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJwYWNrYWdlIG11c3QgYmUgYSBzdHJpbmciKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcGFja2FnZSA9IF9QeURpY3RfR2V0SXRlbUlkKGdsb2JhbHMsICZQeUlkX19fbmFtZV9fKTsKKyAgICAgICAgICAgIGlmIChwYWNrYWdlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICInX19uYW1lX18nIG5vdCBpbiBnbG9iYWxzIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCFQeVVuaWNvZGVfQ2hlY2socGFja2FnZSkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiX19uYW1lX18gbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfSU5DUkVGKHBhY2thZ2UpOworCisgICAgICAgICAgICBpZiAoX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19wYXRoX18pID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqcGFydGl0aW9uID0gTlVMTDsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYm9ycm93ZWRfZG90ID0gX1B5VW5pY29kZV9Gcm9tSWQoJnNpbmdsZV9kb3QpOworICAgICAgICAgICAgICAgIGlmIChib3Jyb3dlZF9kb3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUlBhcnRpdGlvbihwYWNrYWdlLCBib3Jyb3dlZF9kb3QpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYWNrYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFja2FnZSA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYocGFja2FnZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHBhcnRpdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oaW50ZXJwLT5tb2R1bGVzLCBwYWNrYWdlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJQYXJlbnQgbW9kdWxlICVSIG5vdCBsb2FkZWQsIGNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlICIKKyAgICAgICAgICAgICAgICAgICAgImltcG9ydCIsIHBhY2thZ2UpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsgIC8qIGxldmVsID09IDAgKi8KKyAgICAgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID09IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgcGFja2FnZSA9IFB5X05vbmU7CisgICAgICAgIFB5X0lOQ1JFRihwYWNrYWdlKTsKKyAgICB9CisKKyAgICBpZiAobGV2ZWwgPiAwKSB7CisgICAgICAgIFB5X3NzaXplX3QgbGFzdF9kb3QgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChwYWNrYWdlKTsKKyAgICAgICAgUHlPYmplY3QgKmJhc2UgPSBOVUxMOworICAgICAgICBpbnQgbGV2ZWxfdXAgPSAxOworCisgICAgICAgIGZvciAobGV2ZWxfdXAgPSAxOyBsZXZlbF91cCA8IGxldmVsOyBsZXZlbF91cCArPSAxKSB7CisgICAgICAgICAgICBsYXN0X2RvdCA9IFB5VW5pY29kZV9GaW5kQ2hhcihwYWNrYWdlLCAnLicsIDAsIGxhc3RfZG90LCAtMSk7CisgICAgICAgICAgICBpZiAobGFzdF9kb3QgPT0gLTIpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobGFzdF9kb3QgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgYmV5b25kIHRvcC1sZXZlbCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYWNrYWdlIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlID0gUHlVbmljb2RlX1N1YnN0cmluZyhwYWNrYWdlLCAwLCBsYXN0X2RvdCk7CisgICAgICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSA+IDApIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpib3Jyb3dlZF9kb3QsICpzZXEgPSBOVUxMOworCisgICAgICAgICAgICBib3Jyb3dlZF9kb3QgPSBfUHlVbmljb2RlX0Zyb21JZCgmc2luZ2xlX2RvdCk7CisgICAgICAgICAgICBzZXEgPSBQeVR1cGxlX1BhY2soMiwgYmFzZSwgbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYmFzZSk7CisgICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwgfHwgc2VxID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBhYnNfbmFtZSA9IFB5VW5pY29kZV9Kb2luKGJvcnJvd2VkX2RvdCwgc2VxKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZXEpOworICAgICAgICAgICAgaWYgKGFic19uYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWJzX25hbWUgPSBiYXNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhYnNfbmFtZSA9IG5hbWU7CisgICAgICAgIFB5X0lOQ1JFRihhYnNfbmFtZSk7CisgICAgfQorCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKICNlbmRpZgotICAgICAgICApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIkltcG9ydCBieSBmaWxlbmFtZSBpcyBub3Qgc3VwcG9ydGVkLiIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgIC8qIEZyb20gdGhpcyBwb2ludCBmb3J3YXJkLCBnb3RvIGVycm9yX3dpdGhfdW5sb2NrISAqLworICAgIGlmIChQeURpY3RfQ2hlY2soZ2xvYmFscykpIHsKKyAgICAgICAgYnVpbHRpbnNfaW1wb3J0ID0gX1B5RGljdF9HZXRJdGVtSWQoZ2xvYmFscywgJlB5SWRfX19pbXBvcnRfXyk7CiAgICAgfQotCi0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBwYXJlbnQgPSBnZXRfcGFyZW50KGdsb2JhbHMsIGJ1ZiwgJmJ1ZmxlbiwgbGV2ZWwpOwotICAgIGlmIChwYXJlbnQgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotCi0gICAgaGVhZCA9IGxvYWRfbmV4dChwYXJlbnQsIGxldmVsIDwgMCA/IFB5X05vbmUgOiBwYXJlbnQsICZuYW1lLCBidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAmYnVmbGVuKTsKLSAgICBpZiAoaGVhZCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Ci0KLSAgICB0YWlsID0gaGVhZDsKLSAgICBQeV9JTkNSRUYodGFpbCk7Ci0gICAgd2hpbGUgKG5hbWUpIHsKLSAgICAgICAgbmV4dCA9IGxvYWRfbmV4dCh0YWlsLCB0YWlsLCAmbmFtZSwgYnVmLCAmYnVmbGVuKTsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaGVhZCk7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CisgICAgaWYgKGJ1aWx0aW5zX2ltcG9ydCA9PSBOVUxMKSB7CisgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCA9IF9QeURpY3RfR2V0SXRlbUlkKGludGVycC0+YnVpbHRpbnMsICZQeUlkX19faW1wb3J0X18pOworICAgICAgICBpZiAoYnVpbHRpbnNfaW1wb3J0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIl9faW1wb3J0X18gbWlzc2luZyIpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBuZXh0OwogICAgIH0KLSAgICBpZiAodGFpbCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgIC8qIElmIHRhaWwgaXMgUHlfTm9uZSwgYm90aCBnZXRfcGFyZW50IGFuZCBsb2FkX25leHQgZm91bmQKLSAgICAgICAgICAgYW4gZW1wdHkgbW9kdWxlIG5hbWU6IHNvbWVvbmUgY2FsbGVkIF9faW1wb3J0X18oIiIpIG9yCi0gICAgICAgICAgIGRvY3RvcmVkIGZhdWx0eSBieXRlY29kZSAqLwotICAgICAgICBQeV9ERUNSRUYodGFpbCk7Ci0gICAgICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiRW1wdHkgbW9kdWxlIG5hbWUiKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgIH0KKyAgICBQeV9JTkNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKIAotICAgIGlmIChmcm9tbGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgIGludCBiID0gKGZyb21saXN0ID09IFB5X05vbmUpID8gMCA6IFB5T2JqZWN0X0lzVHJ1ZShmcm9tbGlzdCk7Ci0gICAgICAgIGlmIChiIDwgMCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGhlYWQpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgIG1vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgYWJzX25hbWUpOworICAgIGlmIChtb2QgPT0gUHlfTm9uZSkgeworICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoImltcG9ydCBvZiAlUiBoYWx0ZWQ7ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb25lIGluIHN5cy5tb2R1bGVzIiwgYWJzX25hbWUpOworICAgICAgICBpZiAobXNnICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldEltcG9ydEVycm9yKG1zZywgYWJzX25hbWUsIE5VTEwpOworICAgICAgICAgICAgUHlfREVDUkVGKG1zZyk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFiKQotICAgICAgICAgICAgZnJvbWxpc3QgPSBOVUxMOworICAgICAgICBtb2QgPSBOVUxMOworICAgICAgICBnb3RvIGVycm9yX3dpdGhfdW5sb2NrOwogICAgIH0KKyAgICBlbHNlIGlmIChtb2QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgIGludCBpbml0aWFsaXppbmcgPSAwOwogCi0gICAgaWYgKGZyb21saXN0ID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHRhaWwpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiBoZWFkOworICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgLyogT3B0aW1pemF0aW9uOiBvbmx5IGNhbGwgX2Jvb3RzdHJhcC5fbG9ja191bmxvY2tfbW9kdWxlKCkgaWYKKyAgICAgICAgICAgX19pbml0aWFsaXppbmdfXyBpcyB0cnVlLgorICAgICAgICAgICBOT1RFOiBiZWNhdXNlIG9mIHRoaXMsIF9faW5pdGlhbGl6aW5nX18gbXVzdCBiZSBzZXQgKmJlZm9yZSoKKyAgICAgICAgICAgc3R1ZmZpbmcgdGhlIG5ldyBtb2R1bGUgaW4gc3lzLm1vZHVsZXMuCisgICAgICAgICAqLworICAgICAgICB2YWx1ZSA9IF9QeU9iamVjdF9HZXRBdHRySWQobW9kLCAmUHlJZF9fX2luaXRpYWxpemluZ19fKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGluaXRpYWxpemluZyA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICAgICAgaWYgKGluaXRpYWxpemluZyA9PSAtMSkKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CisgICAgICAgIGlmIChpbml0aWFsaXppbmcgPiAwKSB7CisgICAgICAgICAgICAvKiBfYm9vdHN0cmFwLl9sb2NrX3VubG9ja19tb2R1bGUoKSByZWxlYXNlcyB0aGUgaW1wb3J0IGxvY2sgKi8KKyAgICAgICAgICAgIHZhbHVlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RPYmpJZEFyZ3MoaW50ZXJwLT5pbXBvcnRsaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19sb2NrX3VubG9ja19tb2R1bGUsIGFic19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIm5vdCBob2xkaW5nIHRoZSBpbXBvcnQgbG9jayIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgfQogICAgIH0KLQotICAgIFB5X0RFQ1JFRihoZWFkKTsKLSAgICBpZiAoIWVuc3VyZV9mcm9tbGlzdCh0YWlsLCBmcm9tbGlzdCwgYnVmLCBidWZsZW4sIDApKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih0YWlsKTsKLSAgICAgICAgZ290byBlcnJvcl9leGl0OworICAgIGVsc2UgeworICAgICAgICAvKiBfYm9vdHN0cmFwLl9maW5kX2FuZF9sb2FkKCkgcmVsZWFzZXMgdGhlIGltcG9ydCBsb2NrICovCisgICAgICAgIG1vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fZmluZF9hbmRfbG9hZCwgYWJzX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWx0aW5zX2ltcG9ydCwgTlVMTCk7CisgICAgICAgIGlmIChtb2QgPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQogICAgIH0KKyAgICAvKiBGcm9tIG5vdyBvbiB3ZSBkb24ndCBob2xkIHRoZSBpbXBvcnQgbG9jayBhbnltb3JlLiAqLwogCi0gICAgUHlNZW1fRlJFRShidWYpOwotICAgIHJldHVybiB0YWlsOworICAgIGlmIChQeU9iamVjdF9Ob3QoZnJvbWxpc3QpKSB7CisgICAgICAgIGlmIChsZXZlbCA9PSAwIHx8IFB5VW5pY29kZV9HRVRfTEVOR1RIKG5hbWUpID4gMCkgeworICAgICAgICAgICAgUHlPYmplY3QgKmZyb250ID0gTlVMTDsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpwYXJ0aXRpb24gPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKmJvcnJvd2VkX2RvdCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZzaW5nbGVfZG90KTsKIAotZXJyb3JfZXhpdDoKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAoYm9ycm93ZWRfZG90ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwYXJ0aXRpb24gPSBQeVVuaWNvZGVfUGFydGl0aW9uKG5hbWUsIGJvcnJvd2VkX2RvdCk7CisgICAgICAgICAgICBpZiAocGFydGl0aW9uID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoUHlUdXBsZV9HRVRfSVRFTShwYXJ0aXRpb24sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogTm8gZG90IGluIG1vZHVsZSBuYW1lLCBzaW1wbGUgZXhpdCAqLworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJ0aXRpb24pOworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IG1vZDsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYobW9kKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmcm9udCA9IFB5VHVwbGVfR0VUX0lURU0ocGFydGl0aW9uLCAwKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihmcm9udCk7CisgICAgICAgICAgICBQeV9ERUNSRUYocGFydGl0aW9uKTsKKworICAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKKyAgICAgICAgICAgICAgICBmaW5hbF9tb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGJ1aWx0aW5zX2ltcG9ydCwgZnJvbnQsIE5VTEwpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmcm9udCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGN1dF9vZmYgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoZnJvbnQpOworICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYWJzX25hbWVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoYWJzX25hbWUpOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp0b19yZXR1cm4gPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGFic19uYW1lLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfbmFtZV9sZW4gLSBjdXRfb2ZmKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnJvbnQpOworICAgICAgICAgICAgICAgIGlmICh0b19yZXR1cm4gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZpbmFsX21vZCA9IFB5RGljdF9HZXRJdGVtKGludGVycC0+bW9kdWxlcywgdG9fcmV0dXJuKTsKKyAgICAgICAgICAgICAgICBpZiAoZmluYWxfbW9kID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX0tleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVSIG5vdCBpbiBzeXMubW9kdWxlcyBhcyBleHBlY3RlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b19yZXR1cm4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfSU5DUkVGKGZpbmFsX21vZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0b19yZXR1cm4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZmluYWxfbW9kID0gbW9kOworICAgICAgICAgICAgUHlfSU5DUkVGKG1vZCk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZpbmFsX21vZCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kT2JqSWRBcmdzKGludGVycC0+aW1wb3J0bGliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9faGFuZGxlX2Zyb21saXN0LCBtb2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21saXN0LCBidWlsdGluc19pbXBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIH0KKyAgICBnb3RvIGVycm9yOworCisgIGVycm9yX3dpdGhfdW5sb2NrOgorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7CisgICAgfQorI2VuZGlmCisgIGVycm9yOgorICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOworICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKKyAgICBQeV9YREVDUkVGKG1vZCk7CisgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKKyAgICBQeV9YREVDUkVGKGdsb2JhbHMpOworICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOworICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKKyAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKKyAgICByZXR1cm4gZmluYWxfbW9kOwogfQogCiBQeU9iamVjdCAqCi1QeUltcG9ydF9JbXBvcnRNb2R1bGVMZXZlbChjaGFyICpuYW1lLCBQeU9iamVjdCAqZ2xvYmFscywgUHlPYmplY3QgKmxvY2FscywKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QsIGludCBsZXZlbCkKK1B5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsKGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZyb21saXN0LCBpbnQgbGV2ZWwpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLSAgICBfUHlJbXBvcnRfQWNxdWlyZUxvY2soKTsKLSAgICByZXN1bHQgPSBpbXBvcnRfbW9kdWxlX2xldmVsKG5hbWUsIGdsb2JhbHMsIGxvY2FscywgZnJvbWxpc3QsIGxldmVsKTsKLSAgICBpZiAoX1B5SW1wb3J0X1JlbGVhc2VMb2NrKCkgPCAwKSB7Ci0gICAgICAgIFB5X1hERUNSRUYocmVzdWx0KTsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJub3QgaG9sZGluZyB0aGUgaW1wb3J0IGxvY2siKTsKKyAgICBQeU9iamVjdCAqbmFtZW9iaiwgKm1vZDsKKyAgICBuYW1lb2JqID0gUHlVbmljb2RlX0Zyb21TdHJpbmcobmFtZSk7CisgICAgaWYgKG5hbWVvYmogPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIFJldHVybiB0aGUgcGFja2FnZSB0aGF0IGFuIGltcG9ydCBpcyBiZWluZyBwZXJmb3JtZWQgaW4uICBJZiBnbG9iYWxzIGNvbWVzCi0gICBmcm9tIHRoZSBtb2R1bGUgZm9vLmJhci5iYXQgKG5vdCBpdHNlbGYgYSBwYWNrYWdlKSwgdGhpcyByZXR1cm5zIHRoZQotICAgc3lzLm1vZHVsZXMgZW50cnkgZm9yIGZvby5iYXIuICBJZiBnbG9iYWxzIGlzIGZyb20gYSBwYWNrYWdlJ3MgX19pbml0X18ucHksCi0gICB0aGUgcGFja2FnZSdzIGVudHJ5IGluIHN5cy5tb2R1bGVzIGlzIHJldHVybmVkLCBhcyBhIGJvcnJvd2VkIHJlZmVyZW5jZS4KLQotICAgVGhlICpuYW1lKiBvZiB0aGUgcmV0dXJuZWQgcGFja2FnZSBpcyByZXR1cm5lZCBpbiBidWYsIHdpdGggdGhlIGxlbmd0aCBvZgotICAgdGhlIG5hbWUgaW4gKnBfYnVmbGVuLgotCi0gICBJZiBnbG9iYWxzIGRvZXNuJ3QgY29tZSBmcm9tIGEgcGFja2FnZSBvciBhIG1vZHVsZSBpbiBhIHBhY2thZ2UsIG9yIGEKLSAgIGNvcnJlc3BvbmRpbmcgZW50cnkgaXMgbm90IGZvdW5kIGluIHN5cy5tb2R1bGVzLCBQeV9Ob25lIGlzIHJldHVybmVkLgotKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1nZXRfcGFyZW50KFB5T2JqZWN0ICpnbG9iYWxzLCBjaGFyICpidWYsIFB5X3NzaXplX3QgKnBfYnVmbGVuLCBpbnQgbGV2ZWwpCi17Ci0gICAgc3RhdGljIFB5T2JqZWN0ICpuYW1lc3RyID0gTlVMTDsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnBhdGhzdHIgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqcGtnc3RyID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcGtnbmFtZSwgKm1vZG5hbWUsICptb2RwYXRoLCAqbW9kdWxlcywgKnBhcmVudDsKLSAgICBpbnQgb3JpZ19sZXZlbCA9IGxldmVsOwotCi0gICAgaWYgKGdsb2JhbHMgPT0gTlVMTCB8fCAhUHlEaWN0X0NoZWNrKGdsb2JhbHMpIHx8ICFsZXZlbCkKLSAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0KLSAgICBpZiAobmFtZXN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIG5hbWVzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19uYW1lX18iKTsKLSAgICAgICAgaWYgKG5hbWVzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAocGF0aHN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHBhdGhzdHIgPSBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZygiX19wYXRoX18iKTsKLSAgICAgICAgaWYgKHBhdGhzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAocGtnc3RyID09IE5VTEwpIHsKLSAgICAgICAgcGtnc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fcGFja2FnZV9fIik7Ci0gICAgICAgIGlmIChwa2dzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgICpidWYgPSAnXDAnOwotICAgICpwX2J1ZmxlbiA9IDA7Ci0gICAgcGtnbmFtZSA9IFB5RGljdF9HZXRJdGVtKGdsb2JhbHMsIHBrZ3N0cik7Ci0KLSAgICBpZiAoKHBrZ25hbWUgIT0gTlVMTCkgJiYgKHBrZ25hbWUgIT0gUHlfTm9uZSkpIHsKLSAgICAgICAgLyogX19wYWNrYWdlX18gaXMgc2V0LCBzbyB1c2UgaXQgKi8KLSAgICAgICAgY2hhciAqcGtnbmFtZV9zdHI7Ci0gICAgICAgIFB5X3NzaXplX3QgbGVuOwotCi0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHBrZ25hbWUpKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19wYWNrYWdlX18gc2V0IHRvIG5vbi1zdHJpbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHBrZ25hbWVfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUocGtnbmFtZSwgJmxlbik7Ci0gICAgICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICAgICAgaWYgKGxldmVsID4gMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdGVkIHJlbGF0aXZlIGltcG9ydCBpbiBub24tcGFja2FnZSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxlbiA+IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWNrYWdlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHN0cmNweShidWYsIHBrZ25hbWVfc3RyKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvKiBfX3BhY2thZ2VfXyBub3Qgc2V0LCBzbyBmaWd1cmUgaXQgb3V0IGFuZCBzZXQgaXQgKi8KLSAgICAgICAgbW9kbmFtZSA9IFB5RGljdF9HZXRJdGVtKGdsb2JhbHMsIG5hbWVzdHIpOwotICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sobW9kbmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLQotICAgICAgICBtb2RwYXRoID0gUHlEaWN0X0dldEl0ZW0oZ2xvYmFscywgcGF0aHN0cik7Ci0gICAgICAgIGlmIChtb2RwYXRoICE9IE5VTEwpIHsKLSAgICAgICAgICAgIC8qIF9fcGF0aF9fIGlzIHNldCwgc28gbW9kbmFtZSBpcyBhbHJlYWR5IHRoZSBwYWNrYWdlIG5hbWUgKi8KLSAgICAgICAgICAgIGNoYXIgKm1vZG5hbWVfc3RyOwotICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47Ci0gICAgICAgICAgICBpbnQgZXJyb3I7Ci0KLSAgICAgICAgICAgIG1vZG5hbWVfc3RyID0gX1B5VW5pY29kZV9Bc1N0cmluZ0FuZFNpemUobW9kbmFtZSwgJmxlbik7Ci0gICAgICAgICAgICBpZiAobGVuID4gTUFYUEFUSExFTikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cmNweShidWYsIG1vZG5hbWVfc3RyKTsKLSAgICAgICAgICAgIGVycm9yID0gUHlEaWN0X1NldEl0ZW0oZ2xvYmFscywgcGtnc3RyLCBtb2RuYW1lKTsKLSAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHNldCBfX3BhY2thZ2VfXyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogTm9ybWFsIG1vZHVsZSwgc28gd29yayBvdXQgdGhlIHBhY2thZ2UgbmFtZSBpZiBhbnkgKi8KLSAgICAgICAgICAgIGNoYXIgKnN0YXJ0ID0gX1B5VW5pY29kZV9Bc1N0cmluZyhtb2RuYW1lKTsKLSAgICAgICAgICAgIGNoYXIgKmxhc3Rkb3QgPSBzdHJyY2hyKHN0YXJ0LCAnLicpOwotICAgICAgICAgICAgc2l6ZV90IGxlbjsKLSAgICAgICAgICAgIGludCBlcnJvcjsKLSAgICAgICAgICAgIGlmIChsYXN0ZG90ID09IE5VTEwgJiYgbGV2ZWwgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGluIG5vbi1wYWNrYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobGFzdGRvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIFB5X05vbmUpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gUHlfTm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxlbiA9IGxhc3Rkb3QgLSBzdGFydDsKLSAgICAgICAgICAgIGlmIChsZW4gPj0gTUFYUEFUSExFTikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cm5jcHkoYnVmLCBzdGFydCwgbGVuKTsKLSAgICAgICAgICAgIGJ1ZltsZW5dID0gJ1wwJzsKLSAgICAgICAgICAgIHBrZ25hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgICAgICAgICAgaWYgKHBrZ25hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXJyb3IgPSBQeURpY3RfU2V0SXRlbShnbG9iYWxzLCBwa2dzdHIsIHBrZ25hbWUpOwotICAgICAgICAgICAgUHlfREVDUkVGKHBrZ25hbWUpOwotICAgICAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3Qgc2V0IF9fcGFja2FnZV9fIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgd2hpbGUgKC0tbGV2ZWwgPiAwKSB7Ci0gICAgICAgIGNoYXIgKmRvdCA9IHN0cnJjaHIoYnVmLCAnLicpOwotICAgICAgICBpZiAoZG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICJBdHRlbXB0ZWQgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCAiCi0gICAgICAgICAgICAgICAgInRvcGxldmVsIHBhY2thZ2UiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgICpkb3QgPSAnXDAnOwotICAgIH0KLSAgICAqcF9idWZsZW4gPSBzdHJsZW4oYnVmKTsKLQotICAgIG1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgcGFyZW50ID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgYnVmKTsKLSAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKLSAgICAgICAgaWYgKG9yaWdfbGV2ZWwgPCAxKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqZXJyX21zZyA9IFB5Qnl0ZXNfRnJvbUZvcm1hdCgKLSAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAnJS4yMDBzJyBub3QgZm91bmQgIgotICAgICAgICAgICAgICAgICJ3aGlsZSBoYW5kbGluZyBhYnNvbHV0ZSBpbXBvcnQiLCBidWYpOwotICAgICAgICAgICAgaWYgKGVycl9tc2cgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFQeUVycl9XYXJuRXgoUHlFeGNfUnVudGltZVdhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FzU3RyaW5nKGVycl9tc2cpLCAxKSkgewotICAgICAgICAgICAgICAgICpidWYgPSAnXDAnOwotICAgICAgICAgICAgICAgICpwX2J1ZmxlbiA9IDA7Ci0gICAgICAgICAgICAgICAgcGFyZW50ID0gUHlfTm9uZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihlcnJfbXNnKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAiUGFyZW50IG1vZHVsZSAnJS4yMDBzJyBub3QgbG9hZGVkLCAiCi0gICAgICAgICAgICAgICAgImNhbm5vdCBwZXJmb3JtIHJlbGF0aXZlIGltcG9ydCIsIGJ1Zik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHBhcmVudDsKLSAgICAvKiBXZSBleHBlY3QsIGJ1dCBjYW4ndCBndWFyYW50ZWUsIGlmIHBhcmVudCAhPSBOb25lLCB0aGF0OgotICAgICAgIC0gcGFyZW50Ll9fbmFtZV9fID09IGJ1ZgotICAgICAgIC0gcGFyZW50Ll9fZGljdF9fIGlzIGdsb2JhbHMKLSAgICAgICBJZiB0aGlzIGlzIHZpb2xhdGVkLi4uICBXaG8gY2FyZXM/ICovCi19Ci0KLS8qIGFsdG1vZCBpcyBlaXRoZXIgTm9uZSBvciBzYW1lIGFzIG1vZCAqLwotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfbmV4dChQeU9iamVjdCAqbW9kLCBQeU9iamVjdCAqYWx0bW9kLCBjaGFyICoqcF9uYW1lLCBjaGFyICpidWYsCi0gICAgICAgICAgUHlfc3NpemVfdCAqcF9idWZsZW4pCi17Ci0gICAgY2hhciAqbmFtZSA9ICpwX25hbWU7Ci0gICAgY2hhciAqZG90ID0gc3RyY2hyKG5hbWUsICcuJyk7Ci0gICAgc2l6ZV90IGxlbjsKLSAgICBjaGFyICpwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBpZiAoc3RybGVuKG5hbWUpID09IDApIHsKLSAgICAgICAgLyogY29tcGxldGVseSBlbXB0eSBtb2R1bGUgbmFtZSBzaG91bGQgb25seSBoYXBwZW4gaW4KLSAgICAgICAgICAgJ2Zyb20gLiBpbXBvcnQnIChvciAnX19pbXBvcnRfXygiIiknKSovCi0gICAgICAgIFB5X0lOQ1JFRihtb2QpOwotICAgICAgICAqcF9uYW1lID0gTlVMTDsKLSAgICAgICAgcmV0dXJuIG1vZDsKLSAgICB9Ci0KLSAgICBpZiAoZG90ID09IE5VTEwpIHsKLSAgICAgICAgKnBfbmFtZSA9IE5VTEw7Ci0gICAgICAgIGxlbiA9IHN0cmxlbihuYW1lKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgICpwX25hbWUgPSBkb3QrMTsKLSAgICAgICAgbGVuID0gZG90LW5hbWU7Ci0gICAgfQotICAgIGlmIChsZW4gPT0gMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJFbXB0eSBtb2R1bGUgbmFtZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBwID0gYnVmICsgKnBfYnVmbGVuOwotICAgIGlmIChwICE9IGJ1ZikKLSAgICAgICAgKnArKyA9ICcuJzsKLSAgICBpZiAocCtsZW4tYnVmID49IE1BWFBBVEhMRU4pIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiTW9kdWxlIG5hbWUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHN0cm5jcHkocCwgbmFtZSwgbGVuKTsKLSAgICBwW2xlbl0gPSAnXDAnOwotICAgICpwX2J1ZmxlbiA9IHArbGVuLWJ1ZjsKLQotICAgIHJlc3VsdCA9IGltcG9ydF9zdWJtb2R1bGUobW9kLCBwLCBidWYpOwotICAgIGlmIChyZXN1bHQgPT0gUHlfTm9uZSAmJiBhbHRtb2QgIT0gbW9kKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAvKiBIZXJlLCBhbHRtb2QgbXVzdCBiZSBOb25lIGFuZCBtb2QgbXVzdCBub3QgYmUgTm9uZSAqLwotICAgICAgICByZXN1bHQgPSBpbXBvcnRfc3VibW9kdWxlKGFsdG1vZCwgcCwgcCk7Ci0gICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiByZXN1bHQgIT0gUHlfTm9uZSkgewotICAgICAgICAgICAgaWYgKG1hcmtfbWlzcyhidWYpICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN0cm5jcHkoYnVmLCBuYW1lLCBsZW4pOwotICAgICAgICAgICAgYnVmW2xlbl0gPSAnXDAnOwotICAgICAgICAgICAgKnBfYnVmbGVuID0gbGVuOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAocmVzdWx0ID09IFB5X05vbmUpIHsKLSAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJObyBtb2R1bGUgbmFtZWQgJS4yMDBzIiwgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBpbnQKLW1hcmtfbWlzcyhjaGFyICpuYW1lKQotewotICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIHJldHVybiBQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCBuYW1lLCBQeV9Ob25lKTsKLX0KLQotc3RhdGljIGludAotZW5zdXJlX2Zyb21saXN0KFB5T2JqZWN0ICptb2QsIFB5T2JqZWN0ICpmcm9tbGlzdCwgY2hhciAqYnVmLCBQeV9zc2l6ZV90IGJ1ZmxlbiwKLSAgICAgICAgICAgICAgICBpbnQgcmVjdXJzaXZlKQotewotICAgIGludCBpOwotCi0gICAgaWYgKCFQeU9iamVjdF9IYXNBdHRyU3RyaW5nKG1vZCwgIl9fcGF0aF9fIikpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgZm9yIChpID0gMDsgOyBpKyspIHsKLSAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVNlcXVlbmNlX0dldEl0ZW0oZnJvbWxpc3QsIGkpOwotICAgICAgICBpbnQgaGFzaXQ7Ci0gICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0luZGV4RXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKGl0ZW0pKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJdGVtIGluIGBgZnJvbSBsaXN0Jycgbm90IGEgc3RyaW5nIik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoUHlVbmljb2RlX0FTX1VOSUNPREUoaXRlbSlbMF0gPT0gJyonKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYWxsOwotICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgLyogU2VlIGlmIHRoZSBwYWNrYWdlIGRlZmluZXMgX19hbGxfXyAqLwotICAgICAgICAgICAgaWYgKHJlY3Vyc2l2ZSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogQXZvaWQgZW5kbGVzcyByZWN1cnNpb24gKi8KLSAgICAgICAgICAgIGFsbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcobW9kLCAiX19hbGxfXyIpOwotICAgICAgICAgICAgaWYgKGFsbCA9PSBOVUxMKQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgcmV0ID0gZW5zdXJlX2Zyb21saXN0KG1vZCwgYWxsLCBidWYsIGJ1ZmxlbiwgMSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGFsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZXQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgaGFzaXQgPSBQeU9iamVjdF9IYXNBdHRyKG1vZCwgaXRlbSk7Ci0gICAgICAgIGlmICghaGFzaXQpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtODsKLSAgICAgICAgICAgIGNoYXIgKnN1Ym5hbWU7Ci0gICAgICAgICAgICBQeU9iamVjdCAqc3VibW9kOwotICAgICAgICAgICAgY2hhciAqcDsKLSAgICAgICAgICAgIGl0ZW04ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChpdGVtKTsKLSAgICAgICAgICAgIGlmICghaXRlbTgpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkNhbm5vdCBlbmNvZGUgcGF0aCBpdGVtIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdWJuYW1lID0gUHlCeXRlc19BU19TVFJJTkcoaXRlbTgpOwotICAgICAgICAgICAgaWYgKGJ1ZmxlbiArIHN0cmxlbihzdWJuYW1lKSA+PSBNQVhQQVRITEVOKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb2R1bGUgbmFtZSB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHAgPSBidWYgKyBidWZsZW47Ci0gICAgICAgICAgICAqcCsrID0gJy4nOwotICAgICAgICAgICAgc3RyY3B5KHAsIHN1Ym5hbWUpOwotICAgICAgICAgICAgc3VibW9kID0gaW1wb3J0X3N1Ym1vZHVsZShtb2QsIHN1Ym5hbWUsIGJ1Zik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoaXRlbTgpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihzdWJtb2QpOwotICAgICAgICAgICAgaWYgKHN1Ym1vZCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKLSAgICB9Ci0KLSAgICAvKiBOT1RSRUFDSEVEICovCi19Ci0KLXN0YXRpYyBpbnQKLWFkZF9zdWJtb2R1bGUoUHlPYmplY3QgKm1vZCwgUHlPYmplY3QgKnN1Ym1vZCwgY2hhciAqZnVsbG5hbWUsIGNoYXIgKnN1Ym5hbWUsCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGVzKQotewotICAgIGlmIChtb2QgPT0gUHlfTm9uZSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgLyogSXJyZXNwZWN0aXZlIG9mIHRoZSBzdWNjZXNzIG9mIHRoaXMgbG9hZCwgbWFrZSBhCi0gICAgICAgcmVmZXJlbmNlIHRvIGl0IGluIHRoZSBwYXJlbnQgcGFja2FnZSBtb2R1bGUuICBBIGNvcHkgZ2V0cwotICAgICAgIHNhdmVkIGluIHRoZSBtb2R1bGVzIGRpY3Rpb25hcnkgdW5kZXIgdGhlIGZ1bGwgbmFtZSwgc28gZ2V0IGEKLSAgICAgICByZWZlcmVuY2UgZnJvbSB0aGVyZSwgaWYgbmVlZCBiZS4gIChUaGUgZXhjZXB0aW9uIGlzIHdoZW4gdGhlCi0gICAgICAgbG9hZCBmYWlsZWQgd2l0aCBhIFN5bnRheEVycm9yIC0tIHRoZW4gdGhlcmUncyBubyB0cmFjZSBpbgotICAgICAgIHN5cy5tb2R1bGVzLiAgSW4gdGhhdCBjYXNlLCBvZiBjb3Vyc2UsIGRvIG5vdGhpbmcgZXh0cmEuKSAqLwotICAgIGlmIChzdWJtb2QgPT0gTlVMTCkgewotICAgICAgICBzdWJtb2QgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhtb2R1bGVzLCBmdWxsbmFtZSk7Ci0gICAgICAgIGlmIChzdWJtb2QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgIH0KLSAgICBpZiAoUHlNb2R1bGVfQ2hlY2sobW9kKSkgewotICAgICAgICAvKiBXZSBjYW4ndCB1c2Ugc2V0YXR0ciBoZXJlIHNpbmNlIGl0IGNhbiBnaXZlIGEKLSAgICAgICAgICogc3B1cmlvdXMgd2FybmluZyBpZiB0aGUgc3VibW9kdWxlIG5hbWUgc2hhZG93cyBhCi0gICAgICAgICAqIGJ1aWx0aW4gbmFtZSAqLwotICAgICAgICBQeU9iamVjdCAqZGljdCA9IFB5TW9kdWxlX0dldERpY3QobW9kKTsKLSAgICAgICAgaWYgKCFkaWN0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCBzdWJuYW1lLCBzdWJtb2QpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcobW9kLCBzdWJuYW1lLCBzdWJtb2QpIDwgMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICByZXR1cm4gMTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcG9ydF9zdWJtb2R1bGUoUHlPYmplY3QgKm1vZCwgY2hhciAqc3VibmFtZSwgY2hhciAqZnVsbG5hbWUpCi17Ci0gICAgUHlPYmplY3QgKm1vZHVsZXMgPSBQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCk7Ci0gICAgUHlPYmplY3QgKm0gPSBOVUxMOwotCi0gICAgLyogUmVxdWlyZToKLSAgICAgICBpZiBtb2QgPT0gTm9uZTogc3VibmFtZSA9PSBmdWxsbmFtZQotICAgICAgIGVsc2U6IG1vZC5fX25hbWVfXyArICIuIiArIHN1Ym5hbWUgPT0gZnVsbG5hbWUKLSAgICAqLwotCi0gICAgaWYgKChtID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgZnVsbG5hbWUpKSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5T2JqZWN0ICpwYXRoLCAqbG9hZGVyID0gTlVMTDsKLSAgICAgICAgY2hhciAqYnVmOwotICAgICAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgICAgIEZJTEUgKmZwID0gTlVMTDsKLQotICAgICAgICBpZiAobW9kID09IFB5X05vbmUpCi0gICAgICAgICAgICBwYXRoID0gTlVMTDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwYXRoID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhtb2QsICJfX3BhdGhfXyIpOwotICAgICAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICAgICAgICAgIHJldHVybiBQeV9Ob25lOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmWzBdID0gJ1wwJzsKLSAgICAgICAgZmRwID0gZmluZF9tb2R1bGUoZnVsbG5hbWUsIHN1Ym5hbWUsIHBhdGgsIGJ1ZiwgTUFYUEFUSExFTisxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZnAsICZsb2FkZXIpOwotICAgICAgICBQeV9YREVDUkVGKHBhdGgpOwotICAgICAgICBpZiAoZmRwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19JbXBvcnRFcnJvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgICAgICAgICAgcmV0dXJuIFB5X05vbmU7Ci0gICAgICAgIH0KLSAgICAgICAgbSA9IGxvYWRfbW9kdWxlKGZ1bGxuYW1lLCBmcCwgYnVmLCBmZHAtPnR5cGUsIGxvYWRlcik7Ci0gICAgICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLSAgICAgICAgaWYgKGZwKQotICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgaWYgKCFhZGRfc3VibW9kdWxlKG1vZCwgbSwgZnVsbG5hbWUsIHN1Ym5hbWUsIG1vZHVsZXMpKSB7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKG0pOwotICAgICAgICAgICAgbSA9IE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgIH0KLQotICAgIHJldHVybiBtOworICAgIG1vZCA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KG5hbWVvYmosIGdsb2JhbHMsIGxvY2FscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwgbGV2ZWwpOworICAgIFB5X0RFQ1JFRihuYW1lb2JqKTsKKyAgICByZXR1cm4gbW9kOwogfQogCiAKQEAgLTI5OTUsMTAzICsxNTU3LDIzIEBACiBQeU9iamVjdCAqCiBQeUltcG9ydF9SZWxvYWRNb2R1bGUoUHlPYmplY3QgKm0pCiB7Ci0gICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAgPSBQeVRocmVhZFN0YXRlX0dldCgpLT5pbnRlcnA7Ci0gICAgUHlPYmplY3QgKm1vZHVsZXNfcmVsb2FkaW5nID0gaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZzsKKyAgICBfUHlfSURFTlRJRklFUihyZWxvYWQpOworICAgIFB5T2JqZWN0ICpyZWxvYWRlZF9tb2R1bGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTCwgKmxvYWRlciA9IE5VTEwsICpleGlzdGluZ19tID0gTlVMTDsKLSAgICBjaGFyICpuYW1lLCAqc3VibmFtZTsKLSAgICBjaGFyICpidWY7Ci0gICAgc3RydWN0IGZpbGVkZXNjciAqZmRwOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBQeU9iamVjdCAqbmV3bTsKLQotICAgIGlmIChtb2R1bGVzX3JlbG9hZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5SW1wb3J0X1JlbG9hZE1vZHVsZTogIgotICAgICAgICAgICAgICAgICAgICAgICJubyBtb2R1bGVzX3JlbG9hZGluZyBkaWN0aW9uYXJ5ISIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeU9iamVjdCAqaW1wID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgImltcCIpOworICAgIGlmIChpbXAgPT0gTlVMTCkgeworICAgICAgICBpbXAgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImltcCIpOworICAgICAgICBpZiAoaW1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQotCi0gICAgaWYgKG0gPT0gTlVMTCB8fCAhUHlNb2R1bGVfQ2hlY2sobSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWxvYWQoKSBhcmd1bWVudCBtdXN0IGJlIG1vZHVsZSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgbmFtZSA9IChjaGFyKilQeU1vZHVsZV9HZXROYW1lKG0pOwotICAgIGlmIChuYW1lID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChtICE9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUpKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJyZWxvYWQoKTogbW9kdWxlICUuMjAwcyBub3QgaW4gc3lzLm1vZHVsZXMiLAotICAgICAgICAgICAgICAgICAgICAgbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBleGlzdGluZ19tID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlc19yZWxvYWRpbmcsIG5hbWUpOwotICAgIGlmIChleGlzdGluZ19tICE9IE5VTEwpIHsKLSAgICAgICAgLyogRHVlIHRvIGEgcmVjdXJzaXZlIHJlbG9hZCwgdGhpcyBtb2R1bGUgaXMgYWxyZWFkeQotICAgICAgICAgICBiZWluZyByZWxvYWRlZC4gKi8KLSAgICAgICAgUHlfSU5DUkVGKGV4aXN0aW5nX20pOwotICAgICAgICByZXR1cm4gZXhpc3RpbmdfbTsKLSAgICB9Ci0gICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXNfcmVsb2FkaW5nLCBuYW1lLCBtKSA8IDApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgc3VibmFtZSA9IHN0cnJjaHIobmFtZSwgJy4nKTsKLSAgICBpZiAoc3VibmFtZSA9PSBOVUxMKQotICAgICAgICBzdWJuYW1lID0gbmFtZTsKICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKnBhcmVudG5hbWUsICpwYXJlbnQ7Ci0gICAgICAgIHBhcmVudG5hbWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUobmFtZSwgKHN1Ym5hbWUtbmFtZSkpOwotICAgICAgICBpZiAocGFyZW50bmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpbXBfbW9kdWxlc19yZWxvYWRpbmdfY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHBhcmVudCA9IFB5RGljdF9HZXRJdGVtKG1vZHVsZXMsIHBhcmVudG5hbWUpOwotICAgICAgICBpZiAocGFyZW50ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAicmVsb2FkKCk6IHBhcmVudCAlVSBub3QgaW4gc3lzLm1vZHVsZXMiLAotICAgICAgICAgICAgICAgICBwYXJlbnRuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXJlbnRuYW1lKTsKLSAgICAgICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHBhcmVudG5hbWUpOwotICAgICAgICBzdWJuYW1lKys7Ci0gICAgICAgIHBhdGggPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHBhcmVudCwgIl9fcGF0aF9fIik7Ci0gICAgICAgIGlmIChwYXRoID09IE5VTEwpCi0gICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgUHlfWERFQ1JFRihwYXRoKTsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUobmFtZSwgc3VibmFtZSwgcGF0aCwgYnVmLCBNQVhQQVRITEVOKzEsICZmcCwgJmxvYWRlcik7Ci0gICAgUHlfWERFQ1JFRihwYXRoKTsKLQotICAgIGlmIChmZHAgPT0gTlVMTCkgewotICAgICAgICBQeV9YREVDUkVGKGxvYWRlcik7Ci0gICAgICAgIGltcF9tb2R1bGVzX3JlbG9hZGluZ19jbGVhcigpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoaW1wKTsKICAgICB9CiAKLSAgICBuZXdtID0gbG9hZF9tb2R1bGUobmFtZSwgZnAsIGJ1ZiwgZmRwLT50eXBlLCBsb2FkZXIpOwotICAgIFB5X1hERUNSRUYobG9hZGVyKTsKLQotICAgIGlmIChmcCkKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICBpZiAobmV3bSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIGxvYWRfbW9kdWxlIHByb2JhYmx5IHJlbW92ZWQgbmFtZSBmcm9tIG1vZHVsZXMgYmVjYXVzZSBvZgotICAgICAgICAgKiB0aGUgZXJyb3IuICBQdXQgYmFjayB0aGUgb3JpZ2luYWwgbW9kdWxlIG9iamVjdC4gIFdlJ3JlCi0gICAgICAgICAqIGdvaW5nIHRvIHJldHVybiBOVUxMIGluIHRoaXMgY2FzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIKLSAgICAgICAgICogcmVwbGFjaW5nIG5hbWUgc3VjY2VlZHMsIHNvIHRoZSByZXR1cm4gdmFsdWUgaXMgaWdub3JlZC4KLSAgICAgICAgICovCi0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsIG5hbWUsIG0pOwotICAgIH0KLSAgICBpbXBfbW9kdWxlc19yZWxvYWRpbmdfY2xlYXIoKTsKLSAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgcmV0dXJuIG5ld207CisgICAgcmVsb2FkZWRfbW9kdWxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbXAsICZQeUlkX3JlbG9hZCwgIk8iLCBtKTsKKyAgICBQeV9ERUNSRUYoaW1wKTsKKyAgICByZXR1cm4gcmVsb2FkZWRfbW9kdWxlOwogfQogCiAKQEAgLTMxODEsNDggKzE2NjMsMTkgQEAKICAgICByZXR1cm4gcjsKIH0KIAotCi0vKiBNb2R1bGUgJ2ltcCcgcHJvdmlkZXMgUHl0aG9uIGFjY2VzcyB0byB0aGUgcHJpbWl0aXZlcyB1c2VkIGZvcgotICAgaW1wb3J0aW5nIG1vZHVsZXMuCi0qLwotCiBzdGF0aWMgUHlPYmplY3QgKgotaW1wX21ha2VfbWFnaWMobG9uZyBtYWdpYykKLXsKLSAgICBjaGFyIGJ1Zls0XTsKLQotICAgIGJ1ZlswXSA9IChjaGFyKSAoKG1hZ2ljID4+ICAwKSAmIDB4ZmYpOwotICAgIGJ1ZlsxXSA9IChjaGFyKSAoKG1hZ2ljID4+ICA4KSAmIDB4ZmYpOwotICAgIGJ1ZlsyXSA9IChjaGFyKSAoKG1hZ2ljID4+IDE2KSAmIDB4ZmYpOwotICAgIGJ1ZlszXSA9IChjaGFyKSAoKG1hZ2ljID4+IDI0KSAmIDB4ZmYpOwotCi0gICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoYnVmLCA0KTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9nZXRfbWFnaWMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpub2FyZ3MpCi17Ci0gICAgcmV0dXJuIGltcF9tYWtlX21hZ2ljKHB5Y19tYWdpYyk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfZ2V0X3RhZyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocHljX3RhZyk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfZ2V0X3N1ZmZpeGVzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqbm9hcmdzKQoraW1wX2V4dGVuc2lvbl9zdWZmaXhlcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5vYXJncykKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7CisgICAgY29uc3QgY2hhciAqc3VmZml4OworICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CiAKICAgICBsaXN0ID0gUHlMaXN0X05ldygwKTsKICAgICBpZiAobGlzdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmb3IgKGZkcCA9IF9QeUltcG9ydF9GaWxldGFiOyBmZHAtPnN1ZmZpeCAhPSBOVUxMOyBmZHArKykgewotICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5X0J1aWxkVmFsdWUoInNzaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRwLT5zdWZmaXgsIGZkcC0+bW9kZSwgZmRwLT50eXBlKTsKKyNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORworICAgIHdoaWxlICgoc3VmZml4ID0gX1B5SW1wb3J0X0R5bkxvYWRGaWxldGFiW2luZGV4XSkpIHsKKyAgICAgICAgUHlPYmplY3QgKml0ZW0gPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhzdWZmaXgpOwogICAgICAgICBpZiAoaXRlbSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyMzMsMTAyICsxNjg2LDE5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CisgICAgICAgIGluZGV4ICs9IDE7CiAgICAgfQorI2VuZGlmCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1jYWxsX2ZpbmRfbW9kdWxlKGNoYXIgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQotewotICAgIGV4dGVybiBpbnQgZmNsb3NlKEZJTEUgKik7Ci0gICAgUHlPYmplY3QgKmZvYiwgKnJldDsKLSAgICBQeU9iamVjdCAqcGF0aG9iajsKLSAgICBzdHJ1Y3QgZmlsZWRlc2NyICpmZHA7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgRklMRSAqZnAgPSBOVUxMOwotICAgIGludCBmZCA9IC0xOwotICAgIGNoYXIgKmZvdW5kX2VuY29kaW5nID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZyA9IE5VTEw7Ci0KLSAgICBwYXRobmFtZSA9IFB5TWVtX01BTExPQyhNQVhQQVRITEVOKzEpOwotICAgIGlmIChwYXRobmFtZSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBwYXRobmFtZVswXSA9ICdcMCc7Ci0gICAgaWYgKHBhdGggPT0gUHlfTm9uZSkKLSAgICAgICAgcGF0aCA9IE5VTEw7Ci0gICAgZmRwID0gZmluZF9tb2R1bGUoTlVMTCwgbmFtZSwgcGF0aCwgcGF0aG5hbWUsIE1BWFBBVEhMRU4rMSwgJmZwLCBOVUxMKTsKLSAgICBpZiAoZmRwID09IE5VTEwpCi0gICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICBpZiAoZnAgIT0gTlVMTCkgewotICAgICAgICBmZCA9IGZpbGVubyhmcCk7Ci0gICAgICAgIGlmIChmZCAhPSAtMSkKLSAgICAgICAgICAgIGZkID0gZHVwKGZkKTsKLSAgICAgICAgZmNsb3NlKGZwKTsKLSAgICAgICAgZnAgPSBOVUxMOwotICAgICAgICBpZiAoZmQgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZmQgIT0gLTEpIHsKLSAgICAgICAgaWYgKHN0cmNocihmZHAtPm1vZGUsICdiJykgPT0gTlVMTCkgewotICAgICAgICAgICAgLyogUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKCkgcmV0dXJucyBQeU1lbV9NQUxMT0MnZWQKLSAgICAgICAgICAgICAgIG1lbW9yeS4gKi8KLSAgICAgICAgICAgIGZvdW5kX2VuY29kaW5nID0gUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nKGZkKTsKLSAgICAgICAgICAgIGxzZWVrKGZkLCAwLCAwKTsgLyogUmVzZXQgcG9zaXRpb24gKi8KLSAgICAgICAgICAgIGlmIChmb3VuZF9lbmNvZGluZyA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZW5jb2RpbmcgPSAoZm91bmRfZW5jb2RpbmcgIT0gTlVMTCkgPyBmb3VuZF9lbmNvZGluZyA6Ci0gICAgICAgICAgICAgICAgICAgKGNoYXIqKVB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcoKTsKLSAgICAgICAgfQotICAgICAgICBmb2IgPSBQeUZpbGVfRnJvbUZkKGZkLCBwYXRobmFtZSwgZmRwLT5tb2RlLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopZW5jb2RpbmcsIE5VTEwsIE5VTEwsIDEpOwotICAgICAgICBpZiAoZm9iID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgICAgIFB5TWVtX0ZSRUUoZm91bmRfZW5jb2RpbmcpOwotICAgICAgICAgICAgZ290byBlcnJvcl9leGl0OwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBmb2IgPSBQeV9Ob25lOwotICAgICAgICBQeV9JTkNSRUYoZm9iKTsKLSAgICB9Ci0gICAgcGF0aG9iaiA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOwotICAgIHJldCA9IFB5X0J1aWxkVmFsdWUoIk5OKHNzaSkiLAotICAgICAgICAgICAgICAgICAgZm9iLCBwYXRob2JqLCBmZHAtPnN1ZmZpeCwgZmRwLT5tb2RlLCBmZHAtPnR5cGUpOwotICAgIFB5TWVtX0ZSRUUoZm91bmRfZW5jb2RpbmcpOwotICAgIFB5TWVtX0ZSRUUocGF0aG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci0KLWVycm9yX2V4aXQ6Ci0gICAgUHlNZW1fRlJFRShwYXRobmFtZSk7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfZmluZF9tb2R1bGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5T2JqZWN0ICpuYW1lOwotICAgIFB5T2JqZWN0ICpyZXQsICpwYXRoID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mfE86ZmluZF9tb2R1bGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmcGF0aCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldCA9IGNhbGxfZmluZF9tb2R1bGUoUHlCeXRlc19BU19TVFJJTkcobmFtZSksIHBhdGgpOwotICAgIFB5X0RFQ1JFRihuYW1lKTsKLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgogaW1wX2luaXRfYnVpbHRpbihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpbnQgcmV0OwogICAgIFB5T2JqZWN0ICptOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczppbml0X2J1aWx0aW4iLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmluaXRfYnVpbHRpbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0ID0gaW5pdF9idWlsdGluKG5hbWUpOwogICAgIGlmIChyZXQgPCAwKQpAQCAtMzMzNyw3ICsxNzA3LDcgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZShuYW1lKTsKKyAgICBtID0gUHlJbXBvcnRfQWRkTW9kdWxlT2JqZWN0KG5hbWUpOwogICAgIFB5X1hJTkNSRUYobSk7CiAgICAgcmV0dXJuIG07CiB9CkBAIC0zMzQ1LDE5ICsxNzE1LDE5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2luaXRfZnJvemVuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBjaGFyICpuYW1lOworICAgIFB5T2JqZWN0ICpuYW1lOwogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmluaXRfZnJvemVuIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0ID0gUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlKG5hbWUpOworICAgIHJldCA9IFB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZU9iamVjdChuYW1lKTsKICAgICBpZiAocmV0IDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHJldCA9PSAwKSB7CiAgICAgICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICAgICAgcmV0dXJuIFB5X05vbmU7CiAgICAgfQotICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUobmFtZSk7CisgICAgbSA9IFB5SW1wb3J0X0FkZE1vZHVsZU9iamVjdChuYW1lKTsKICAgICBQeV9YSU5DUkVGKG0pOwogICAgIHJldHVybiBtOwogfQpAQCAtMzM2NSw5ICsxNzM1LDkgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBpbXBfZ2V0X2Zyb3plbl9vYmplY3QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6Z2V0X2Zyb3plbl9vYmplY3QiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gZ2V0X2Zyb3plbl9vYmplY3QobmFtZSk7CiB9CkBAIC0zMzc1LDkgKzE3NDUsOSBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9pc19mcm96ZW5fcGFja2FnZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczppc19mcm96ZW5fcGFja2FnZSIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBpc19mcm96ZW5fcGFja2FnZShuYW1lKTsKIH0KQEAgLTMzODUsOCArMTc1NSw4IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2lzX2J1aWx0aW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2J1aWx0aW4iLCAmbmFtZSkpCisgICAgUHlPYmplY3QgKm5hbWU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOmlzX2J1aWx0aW4iLCAmbmFtZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoaXNfYnVpbHRpbihuYW1lKSk7CiB9CkBAIC0zMzk0LDMzMyArMTc2NCw1NCBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGltcF9pc19mcm96ZW4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWU7CisgICAgUHlPYmplY3QgKm5hbWU7CiAgICAgc3RydWN0IF9mcm96ZW4gKnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBwID0gZmluZF9mcm96ZW4obmFtZSk7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZygobG9uZykgKHAgPT0gTlVMTCA/IDAgOiBwLT5zaXplKSk7CiB9CiAKLXN0YXRpYyBGSUxFICoKLWdldF9maWxlKGNoYXIgKnBhdGhuYW1lLCBQeU9iamVjdCAqZm9iLCBjaGFyICptb2RlKQotewotICAgIEZJTEUgKmZwOwotICAgIGlmIChtb2RlWzBdID09ICdVJykKLSAgICAgICAgbW9kZSA9ICJyIiBQWV9TVERJT1RFWFRNT0RFOwotICAgIGlmIChmb2IgPT0gTlVMTCkgewotICAgICAgICBmcCA9IGZvcGVuKHBhdGhuYW1lLCBtb2RlKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGludCBmZCA9IFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IoZm9iKTsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIC8qIHRoZSBGSUxFIHN0cnVjdCBnZXRzIGEgbmV3IGZkLCBzbyB0aGF0IGl0IGNhbiBiZSBjbG9zZWQKLSAgICAgICAgICogaW5kZXBlbmRlbnRseSBvZiB0aGUgZmlsZSBkZXNjcmlwdG9yIGdpdmVuCi0gICAgICAgICAqLwotICAgICAgICBmZCA9IGR1cChmZCk7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGZwID0gZmRvcGVuKGZkLCBtb2RlKTsKLSAgICB9Ci0gICAgaWYgKGZwKQotICAgICAgICByZXR1cm4gZnA7Ci1lcnJvcjoKLSAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbG9hZF9jb21waWxlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmZvYiA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKm07Ci0gICAgRklMRSAqZnA7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzTyZ8Tzpsb2FkX2NvbXBpbGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9GU0NvbnZlcnRlciwgJnBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9iKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZnAgPSBnZXRfZmlsZShQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSksIGZvYiwgInJiIik7Ci0gICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIG0gPSBsb2FkX2NvbXBpbGVkX21vZHVsZShuYW1lLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSksIGZwKTsKLSAgICBmY2xvc2UoZnApOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgcmV0dXJuIG07Ci19Ci0KICNpZmRlZiBIQVZFX0RZTkFNSUNfTE9BRElORwogCiBzdGF0aWMgUHlPYmplY3QgKgogaW1wX2xvYWRfZHluYW1pYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqcGF0aGJ5dGVzOwotICAgIGNoYXIgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICpmb2IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOwotICAgIEZJTEUgKmZwID0gTlVMTDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJnxPOmxvYWRfZHluYW1pYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoYnl0ZXMsICZmb2IpKQorICAgIFB5T2JqZWN0ICpuYW1lLCAqcGF0aG5hbWUsICpmb2IgPSBOVUxMLCAqbW9kOworICAgIEZJTEUgKmZwOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyZ8Tzpsb2FkX2R5bmFtaWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJnBhdGhuYW1lLCAmZm9iKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcGF0aG5hbWUgPSBQeUJ5dGVzX0FTX1NUUklORyhwYXRoYnl0ZXMpOwotICAgIGlmIChmb2IpIHsKLSAgICAgICAgZnAgPSBnZXRfZmlsZShwYXRobmFtZSwgZm9iLCAiciIpOworICAgIGlmIChmb2IgIT0gTlVMTCkgeworICAgICAgICBmcCA9IF9QeV9mb3BlbihwYXRobmFtZSwgInIiKTsKICAgICAgICAgaWYgKGZwID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOworICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKKyAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSAgICBtID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7Ci0gICAgUHlfREVDUkVGKHBhdGhieXRlcyk7CisgICAgZWxzZQorICAgICAgICBmcCA9IE5VTEw7CisgICAgbW9kID0gX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKG5hbWUsIHBhdGhuYW1lLCBmcCk7CisgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKICAgICBpZiAoZnApCiAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgcmV0dXJuIG07CisgICAgcmV0dXJuIG1vZDsKIH0KIAogI2VuZGlmIC8qIEhBVkVfRFlOQU1JQ19MT0FESU5HICovCiAKLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbG9hZF9zb3VyY2UoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIGNoYXIgKm5hbWU7Ci0gICAgUHlPYmplY3QgKnBhdGhuYW1lOwotICAgIFB5T2JqZWN0ICpmb2IgPSBOVUxMOwotICAgIFB5T2JqZWN0ICptOwotICAgIEZJTEUgKmZwOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic08mfE86bG9hZF9zb3VyY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZmb2IpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBmcCA9IGdldF9maWxlKFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZm9iLCAiciIpOwotICAgIGlmIChmcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBtID0gbG9hZF9zb3VyY2VfbW9kdWxlKG5hbWUsIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lKSwgZnApOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgZmNsb3NlKGZwKTsKLSAgICByZXR1cm4gbTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9sb2FkX21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBQeU9iamVjdCAqZm9iOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqIHJldDsKLSAgICBjaGFyICpzdWZmaXg7IC8qIFVudXNlZCAqLwotICAgIGNoYXIgKm1vZGU7Ci0gICAgaW50IHR5cGU7Ci0gICAgRklMRSAqZnA7Ci0KLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPTyYoc3NpKTpsb2FkX21vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lLCAmZm9iLAotICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1ZmZpeCwgJm1vZGUsICZ0eXBlKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCptb2RlKSB7Ci0gICAgICAgIC8qIE1vZGUgbXVzdCBzdGFydCB3aXRoICdyJyBvciAnVScgYW5kIG11c3Qgbm90IGNvbnRhaW4gJysnLgotICAgICAgICAgICBJbXBsaWNpdCBpbiB0aGlzIHRlc3QgaXMgdGhlIGFzc3VtcHRpb24gdGhhdCB0aGUgbW9kZQotICAgICAgICAgICBtYXkgY29udGFpbiBvdGhlciBtb2RpZmllcnMgbGlrZSAnYicgb3IgJ3QnLiAqLwotCi0gICAgICAgIGlmICghKCptb2RlID09ICdyJyB8fCAqbW9kZSA9PSAnVScpIHx8IHN0cmNocihtb2RlLCAnKycpKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBmaWxlIG9wZW4gbW9kZSAlLjIwMHMiLCBtb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZm9iID09IFB5X05vbmUpCi0gICAgICAgIGZwID0gTlVMTDsKLSAgICBlbHNlIHsKLSAgICAgICAgZnAgPSBnZXRfZmlsZShOVUxMLCBmb2IsIG1vZGUpOwotICAgICAgICBpZiAoZnAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHBhdGhuYW1lKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldCA9IGxvYWRfbW9kdWxlKG5hbWUsIGZwLCBQeUJ5dGVzX0FTX1NUUklORyhwYXRobmFtZSksIHR5cGUsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihwYXRobmFtZSk7Ci0gICAgaWYgKGZwKQotICAgICAgICBmY2xvc2UoZnApOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbG9hZF9wYWNrYWdlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBjaGFyICpuYW1lOwotICAgIFB5T2JqZWN0ICpwYXRobmFtZTsKLSAgICBQeU9iamVjdCAqIHJldDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInNPJjpsb2FkX3BhY2thZ2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZSwgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWUpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXQgPSBsb2FkX3BhY2thZ2UobmFtZSwgUHlCeXRlc19BU19TVFJJTkcocGF0aG5hbWUpKTsKLSAgICBQeV9ERUNSRUYocGF0aG5hbWUpOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1pbXBfbmV3X21vZHVsZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi17Ci0gICAgY2hhciAqbmFtZTsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInM6bmV3X21vZHVsZSIsICZuYW1lKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TW9kdWxlX05ldyhuYW1lKTsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9yZWxvYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2KQotewotICAgIHJldHVybiBQeUltcG9ydF9SZWxvYWRNb2R1bGUodik7Ci19Ci0KLVB5RG9jX1NUUlZBUihkb2NfcmVsb2FkLAotInJlbG9hZChtb2R1bGUpIC0+IG1vZHVsZVxuXAotXG5cCi1SZWxvYWQgdGhlIG1vZHVsZS4gIFRoZSBtb2R1bGUgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGltcG9ydGVkIGJlZm9yZS4iKTsKLQotc3RhdGljIFB5T2JqZWN0ICoKLWltcF9jYWNoZV9mcm9tX3NvdXJjZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd3MpCi17Ci0gICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJwYXRoIiwgImRlYnVnX292ZXJyaWRlIiwgTlVMTH07Ci0KLSAgICBjaGFyICpidWY7Ci0gICAgUHlPYmplY3QgKnBhdGhieXRlczsKLSAgICBjaGFyICpjcGF0aG5hbWU7Ci0gICAgUHlPYmplY3QgKmRlYnVnX292ZXJyaWRlID0gTlVMTDsKLSAgICBpbnQgZGVidWcgPSAhUHlfT3B0aW1pemVGbGFnOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCi0gICAgICAgICAgICAgICAgYXJncywga3dzLCAiTyZ8TyIsIGt3bGlzdCwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIsICZwYXRoYnl0ZXMsICZkZWJ1Z19vdmVycmlkZSkpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgaWYgKGRlYnVnX292ZXJyaWRlICE9IE5VTEwgJiYKLSAgICAgICAgKGRlYnVnID0gUHlPYmplY3RfSXNUcnVlKGRlYnVnX292ZXJyaWRlKSkgPCAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBidWYgPSBQeU1lbV9NQUxMT0MoTUFYUEFUSExFTisxKTsKLSAgICBpZiAoYnVmID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgfQotICAgIGNwYXRobmFtZSA9IG1ha2VfY29tcGlsZWRfcGF0aG5hbWUoCi0gICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhieXRlcyksCi0gICAgICAgIGJ1ZiwgTUFYUEFUSExFTisxLCBkZWJ1Zyk7Ci0gICAgUHlfREVDUkVGKHBhdGhieXRlcyk7Ci0KLSAgICBpZiAoY3BhdGhuYW1lID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLCAicGF0aCBidWZmZXIgdG9vIHNob3J0Iik7Ci0gICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnJldCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQoYnVmKTsKLSAgICAgICAgUHlNZW1fRlJFRShidWYpOwotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KLX0KLQotUHlEb2NfU1RSVkFSKGRvY19jYWNoZV9mcm9tX3NvdXJjZSwKLSJjYWNoZV9mcm9tX3NvdXJjZShwYXRoLCBbZGVidWdfb3ZlcnJpZGVdKSAtPiBwYXRoXG5cCi1HaXZlbiB0aGUgcGF0aCB0byBhIC5weSBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weWMvLnB5byBmaWxlLlxuXAotXG5cCi1UaGUgLnB5IGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0byB0aGVcblwKLS5weWMvLnB5byBmaWxlIGNhbGN1bGF0ZWQgYXMgaWYgdGhlIC5weSBmaWxlIHdlcmUgaW1wb3J0ZWQuICBUaGUgZXh0ZW5zaW9uXG5cCi13aWxsIGJlIC5weWMgdW5sZXNzIF9fZGVidWdfXyBpcyBub3QgZGVmaW5lZCwgdGhlbiBpdCB3aWxsIGJlIC5weW8uXG5cCi1cblwKLUlmIGRlYnVnX292ZXJyaWRlIGlzIG5vdCBOb25lLCB0aGVuIGl0IG11c3QgYmUgYSBib29sZWFuIGFuZCBpcyB0YWtlbiBhc1xuXAotdGhlIHZhbHVlIG9mIF9fZGVidWdfXyBpbnN0ZWFkLiIpOwotCi1zdGF0aWMgUHlPYmplY3QgKgotaW1wX3NvdXJjZV9mcm9tX2NhY2hlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3cykKLXsKLSAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InBhdGgiLCBOVUxMfTsKLQotICAgIFB5T2JqZWN0ICpwYXRobmFtZV9vYmo7Ci0gICAgY2hhciAqcGF0aG5hbWU7Ci0gICAgY2hhciAqYnVmOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoCi0gICAgICAgICAgICAgICAgYXJncywga3dzLCAiTyYiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aG5hbWVfb2JqKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBwYXRobmFtZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGhuYW1lX29iaik7Ci0gICAgYnVmID0gUHlNZW1fTUFMTE9DKE1BWFBBVEhMRU4rMSk7Ci0gICAgaWYgKGJ1ZiA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgIH0KLSAgICBpZiAobWFrZV9zb3VyY2VfcGF0aG5hbWUocGF0aG5hbWUsIGJ1ZikgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwgIk5vdCBhIFBFUCAzMTQ3IHB5YyBwYXRoOiAlcyIsCi0gICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXRobmFtZV9vYmopOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBQeV9ERUNSRUYocGF0aG5hbWVfb2JqKTsKLSAgICB7Ci0gICAgICAgIFB5T2JqZWN0ICpyZXQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhidWYpOwotICAgICAgICBQeU1lbV9GUkVFKGJ1Zik7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotfQotCi1QeURvY19TVFJWQVIoZG9jX3NvdXJjZV9mcm9tX2NhY2hlLAotInNvdXJjZV9mcm9tX2NhY2hlKHBhdGgpIC0+IHBhdGhcblwKLUdpdmVuIHRoZSBwYXRoIHRvIGEgLnB5Yy4vLnB5byBmaWxlLCByZXR1cm4gdGhlIHBhdGggdG8gaXRzIC5weSBmaWxlLlxuXAotXG5cCi1UaGUgLnB5Yy8ucHlvIGZpbGUgZG9lcyBub3QgbmVlZCB0byBleGlzdDsgdGhpcyBzaW1wbHkgcmV0dXJucyB0aGUgcGF0aCB0b1xuXAotdGhlIC5weSBmaWxlIGNhbGN1bGF0ZWQgdG8gY29ycmVzcG9uZCB0byB0aGUgLnB5Yy8ucHlvIGZpbGUuICBJZiBwYXRoXG5cCi1kb2VzIG5vdCBjb25mb3JtIHRvIFBFUCAzMTQ3IGZvcm1hdCwgVmFsdWVFcnJvciB3aWxsIGJlIHJhaXNlZC4iKTsKIAogLyogRG9jIHN0cmluZ3MgKi8KIAogUHlEb2NfU1RSVkFSKGRvY19pbXAsCi0iVGhpcyBtb2R1bGUgcHJvdmlkZXMgdGhlIGNvbXBvbmVudHMgbmVlZGVkIHRvIGJ1aWxkIHlvdXIgb3duXG5cCi1fX2ltcG9ydF9fIGZ1bmN0aW9uLiAgVW5kb2N1bWVudGVkIGZ1bmN0aW9ucyBhcmUgb2Jzb2xldGUuIik7CisiKEV4dHJlbWVseSkgbG93LWxldmVsIGltcG9ydCBtYWNoaW5lcnkgYml0cyBhcyB1c2VkIGJ5IGltcG9ydGxpYiBhbmQgaW1wLiIpOwogCi1QeURvY19TVFJWQVIoZG9jX2ZpbmRfbW9kdWxlLAotImZpbmRfbW9kdWxlKG5hbWUsIFtwYXRoXSkgLT4gKGZpbGUsIGZpbGVuYW1lLCAoc3VmZml4LCBtb2RlLCB0eXBlKSlcblwKLVNlYXJjaCBmb3IgYSBtb2R1bGUuICBJZiBwYXRoIGlzIG9taXR0ZWQgb3IgTm9uZSwgc2VhcmNoIGZvciBhXG5cCi1idWlsdC1pbiwgZnJvemVuIG9yIHNwZWNpYWwgbW9kdWxlIGFuZCBjb250aW51ZSBzZWFyY2ggaW4gc3lzLnBhdGguXG5cCi1UaGUgbW9kdWxlIG5hbWUgY2Fubm90IGNvbnRhaW4gJy4nOyB0byBzZWFyY2ggZm9yIGEgc3VibW9kdWxlIG9mIGFcblwKLXBhY2thZ2UsIHBhc3MgdGhlIHN1Ym1vZHVsZSBuYW1lIGFuZCB0aGUgcGFja2FnZSdzIF9fcGF0aF9fLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2xvYWRfbW9kdWxlLAotImxvYWRfbW9kdWxlKG5hbWUsIGZpbGUsIGZpbGVuYW1lLCAoc3VmZml4LCBtb2RlLCB0eXBlKSkgLT4gbW9kdWxlXG5cCi1Mb2FkIGEgbW9kdWxlLCBnaXZlbiBpbmZvcm1hdGlvbiByZXR1cm5lZCBieSBmaW5kX21vZHVsZSgpLlxuXAotVGhlIG1vZHVsZSBuYW1lIG11c3QgaW5jbHVkZSB0aGUgZnVsbCBwYWNrYWdlIG5hbWUsIGlmIGFueS4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19nZXRfbWFnaWMsCi0iZ2V0X21hZ2ljKCkgLT4gc3RyaW5nXG5cCi1SZXR1cm4gdGhlIG1hZ2ljIG51bWJlciBmb3IgLnB5YyBvciAucHlvIGZpbGVzLiIpOwotCi1QeURvY19TVFJWQVIoZG9jX2dldF90YWcsCi0iZ2V0X3RhZygpIC0+IHN0cmluZ1xuXAotUmV0dXJuIHRoZSBtYWdpYyB0YWcgZm9yIC5weWMgb3IgLnB5byBmaWxlcy4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19nZXRfc3VmZml4ZXMsCi0iZ2V0X3N1ZmZpeGVzKCkgLT4gWyhzdWZmaXgsIG1vZGUsIHR5cGUpLCAuLi5dXG5cCi1SZXR1cm4gYSBsaXN0IG9mIChzdWZmaXgsIG1vZGUsIHR5cGUpIHR1cGxlcyBkZXNjcmliaW5nIHRoZSBmaWxlc1xuXAotdGhhdCBmaW5kX21vZHVsZSgpIGxvb2tzIGZvci4iKTsKLQotUHlEb2NfU1RSVkFSKGRvY19uZXdfbW9kdWxlLAotIm5ld19tb2R1bGUobmFtZSkgLT4gbW9kdWxlXG5cCi1DcmVhdGUgYSBuZXcgbW9kdWxlLiAgRG8gbm90IGVudGVyIGl0IGluIHN5cy5tb2R1bGVzLlxuXAotVGhlIG1vZHVsZSBuYW1lIG11c3QgaW5jbHVkZSB0aGUgZnVsbCBwYWNrYWdlIG5hbWUsIGlmIGFueS4iKTsKK1B5RG9jX1NUUlZBUihkb2NfZXh0ZW5zaW9uX3N1ZmZpeGVzLAorImV4dGVuc2lvbl9zdWZmaXhlcygpIC0+IGxpc3Qgb2Ygc3RyaW5nc1xuXAorUmV0dXJucyB0aGUgbGlzdCBvZiBmaWxlIHN1ZmZpeGVzIHVzZWQgdG8gaWRlbnRpZnkgZXh0ZW5zaW9uIG1vZHVsZXMuIik7CiAKIFB5RG9jX1NUUlZBUihkb2NfbG9ja19oZWxkLAogImxvY2tfaGVsZCgpIC0+IGJvb2xlYW5cblwKQEAgLTM3NDAsMTc5ICsxODMxLDI4IEBACiBPbiBwbGF0Zm9ybXMgd2l0aG91dCB0aHJlYWRzLCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90aGluZy4iKTsKIAogc3RhdGljIFB5TWV0aG9kRGVmIGltcF9tZXRob2RzW10gPSB7Ci0gICAgeyJmaW5kX21vZHVsZSIsICAgICAgaW1wX2ZpbmRfbW9kdWxlLCAgTUVUSF9WQVJBUkdTLCBkb2NfZmluZF9tb2R1bGV9LAotICAgIHsiZ2V0X21hZ2ljIiwgICAgICAgIGltcF9nZXRfbWFnaWMsICAgIE1FVEhfTk9BUkdTLCAgZG9jX2dldF9tYWdpY30sCi0gICAgeyJnZXRfdGFnIiwgICAgICAgICAgaW1wX2dldF90YWcsICAgICAgTUVUSF9OT0FSR1MsICBkb2NfZ2V0X3RhZ30sCi0gICAgeyJnZXRfc3VmZml4ZXMiLCBpbXBfZ2V0X3N1ZmZpeGVzLCBNRVRIX05PQVJHUywgIGRvY19nZXRfc3VmZml4ZXN9LAotICAgIHsibG9hZF9tb2R1bGUiLCAgICAgIGltcF9sb2FkX21vZHVsZSwgIE1FVEhfVkFSQVJHUywgZG9jX2xvYWRfbW9kdWxlfSwKLSAgICB7Im5ld19tb2R1bGUiLCAgICAgICBpbXBfbmV3X21vZHVsZSwgICBNRVRIX1ZBUkFSR1MsIGRvY19uZXdfbW9kdWxlfSwKKyAgICB7ImV4dGVuc2lvbl9zdWZmaXhlcyIsIGltcF9leHRlbnNpb25fc3VmZml4ZXMsIE1FVEhfTk9BUkdTLAorICAgICAgICBkb2NfZXh0ZW5zaW9uX3N1ZmZpeGVzfSwKICAgICB7ImxvY2tfaGVsZCIsICAgICAgICBpbXBfbG9ja19oZWxkLCAgICBNRVRIX05PQVJHUywgIGRvY19sb2NrX2hlbGR9LAogICAgIHsiYWNxdWlyZV9sb2NrIiwgaW1wX2FjcXVpcmVfbG9jaywgTUVUSF9OT0FSR1MsICBkb2NfYWNxdWlyZV9sb2NrfSwKICAgICB7InJlbGVhc2VfbG9jayIsIGltcF9yZWxlYXNlX2xvY2ssIE1FVEhfTk9BUkdTLCAgZG9jX3JlbGVhc2VfbG9ja30sCi0gICAgeyJyZWxvYWQiLCAgICAgICBpbXBfcmVsb2FkLCAgICAgICBNRVRIX08sICAgICAgIGRvY19yZWxvYWR9LAotICAgIHsiY2FjaGVfZnJvbV9zb3VyY2UiLCAoUHlDRnVuY3Rpb24paW1wX2NhY2hlX2Zyb21fc291cmNlLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkb2NfY2FjaGVfZnJvbV9zb3VyY2V9LAotICAgIHsic291cmNlX2Zyb21fY2FjaGUiLCAoUHlDRnVuY3Rpb24paW1wX3NvdXJjZV9mcm9tX2NhY2hlLAotICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBkb2Nfc291cmNlX2Zyb21fY2FjaGV9LAotICAgIC8qIFRoZSByZXN0IGFyZSBvYnNvbGV0ZSAqLwogICAgIHsiZ2V0X2Zyb3plbl9vYmplY3QiLCAgICAgICBpbXBfZ2V0X2Zyb3plbl9vYmplY3QsICBNRVRIX1ZBUkFSR1N9LAogICAgIHsiaXNfZnJvemVuX3BhY2thZ2UiLCAgIGltcF9pc19mcm96ZW5fcGFja2FnZSwgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpbml0X2J1aWx0aW4iLCAgICAgICAgICAgIGltcF9pbml0X2J1aWx0aW4sICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpbml0X2Zyb3plbiIsICAgICAgICAgICAgIGltcF9pbml0X2Zyb3plbiwgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19idWlsdGluIiwgICAgICAgICAgICAgIGltcF9pc19idWlsdGluLCAgICAgICAgIE1FVEhfVkFSQVJHU30sCiAgICAgeyJpc19mcm96ZW4iLCAgICAgICAgICAgICAgIGltcF9pc19mcm96ZW4sICAgICAgICAgIE1FVEhfVkFSQVJHU30sCi0gICAgeyJsb2FkX2NvbXBpbGVkIiwgICAgICAgICAgIGltcF9sb2FkX2NvbXBpbGVkLCAgICAgIE1FVEhfVkFSQVJHU30sCiAjaWZkZWYgSEFWRV9EWU5BTUlDX0xPQURJTkcKICAgICB7ImxvYWRfZHluYW1pYyIsICAgICAgICAgICAgaW1wX2xvYWRfZHluYW1pYywgICAgICAgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgotICAgIHsibG9hZF9wYWNrYWdlIiwgICAgICAgICAgICBpbXBfbG9hZF9wYWNrYWdlLCAgICAgICBNRVRIX1ZBUkFSR1N9LAotICAgIHsibG9hZF9zb3VyY2UiLCAgICAgICAgICAgICBpbXBfbG9hZF9zb3VyY2UsICAgICAgICBNRVRIX1ZBUkFSR1N9LAorICAgIHsiX2ZpeF9jb19maWxlbmFtZSIsICAgICAgICBpbXBfZml4X2NvX2ZpbGVuYW1lLCAgICBNRVRIX1ZBUkFSR1N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgICAgICAgICBOVUxMfSAgICAgICAgICAgLyogc2VudGluZWwgKi8KIH07CiAKLXN0YXRpYyBpbnQKLXNldGludChQeU9iamVjdCAqZCwgY2hhciAqbmFtZSwgaW50IHZhbHVlKQotewotICAgIFB5T2JqZWN0ICp2OwotICAgIGludCBlcnI7Ci0KLSAgICB2ID0gUHlMb25nX0Zyb21Mb25nKChsb25nKXZhbHVlKTsKLSAgICBlcnIgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCBuYW1lLCB2KTsKLSAgICBQeV9YREVDUkVGKHYpOwotICAgIHJldHVybiBlcnI7Ci19Ci0KLXR5cGVkZWYgc3RydWN0IHsKLSAgICBQeU9iamVjdF9IRUFECi19IE51bGxJbXBvcnRlcjsKLQotc3RhdGljIGludAotTnVsbEltcG9ydGVyX2luaXQoTnVsbEltcG9ydGVyICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0jaWZuZGVmIE1TX1dJTkRPV1MKLSAgICBQeU9iamVjdCAqcGF0aDsKLSAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotICAgIGludCBydjsKLQotICAgIGlmICghX1B5QXJnX05vS2V5d29yZHMoIk51bGxJbXBvcnRlcigpIiwga3dkcykpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyY6TnVsbEltcG9ydGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ZTQ29udmVydGVyLCAmcGF0aCkpCi0gICAgICAgIHJldHVybiAtMTsKLQotICAgIGlmIChQeUJ5dGVzX0dFVF9TSVpFKHBhdGgpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKHBhdGgpOwotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJlbXB0eSBwYXRobmFtZSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcnYgPSBzdGF0KFB5Qnl0ZXNfQVNfU1RSSU5HKHBhdGgpLCAmc3RhdGJ1Zik7Ci0gICAgUHlfREVDUkVGKHBhdGgpOwotICAgIGlmIChydiA9PSAwKSB7Ci0gICAgICAgIC8qIGl0IGV4aXN0cyAqLwotICAgICAgICBpZiAoU19JU0RJUihzdGF0YnVmLnN0X21vZGUpKSB7Ci0gICAgICAgICAgICAvKiBpdCdzIGEgZGlyZWN0b3J5ICovCi0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJleGlzdGluZyBkaXJlY3RvcnkiKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLSNlbHNlIC8qIE1TX1dJTkRPV1MgKi8KLSAgICBQeU9iamVjdCAqcGF0aG9iajsKLSAgICBEV09SRCBydjsKLSAgICB3Y2hhcl90ICpwYXRoOwotCi0gICAgaWYgKCFfUHlBcmdfTm9LZXl3b3JkcygiTnVsbEltcG9ydGVyKCkiLCBrd2RzKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVOk51bGxJbXBvcnRlciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICZwYXRob2JqKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgaWYgKFB5VW5pY29kZV9HRVRfU0laRShwYXRob2JqKSA9PSAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwgImVtcHR5IHBhdGhuYW1lIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBwYXRoID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcocGF0aG9iaiwgTlVMTCk7Ci0gICAgaWYgKHBhdGggPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIC8qIHNlZSBpc3N1ZTEyOTMgYW5kIGlzc3VlMzY3NzoKLSAgICAgKiBzdGF0KCkgb24gV2luZG93cyBkb2Vzbid0IHJlY29nbmlzZSBwYXRocyBsaWtlCi0gICAgICogImU6XFxzaGFyZWRcXCIgYW5kICJcXFxcd2hpdGVyYWItYzJ6bmxoXFxzaGFyZWQiIGFzIGRpcnMuCi0gICAgICovCi0gICAgcnYgPSBHZXRGaWxlQXR0cmlidXRlc1cocGF0aCk7Ci0gICAgUHlNZW1fRnJlZShwYXRoKTsKLSAgICBpZiAocnYgIT0gSU5WQUxJRF9GSUxFX0FUVFJJQlVURVMpIHsKLSAgICAgICAgLyogaXQgZXhpc3RzICovCi0gICAgICAgIGlmIChydiAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkgewotICAgICAgICAgICAgLyogaXQncyBhIGRpcmVjdG9yeSAqLwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0ltcG9ydEVycm9yLCAiZXhpc3RpbmcgZGlyZWN0b3J5Iik7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLU51bGxJbXBvcnRlcl9maW5kX21vZHVsZShOdWxsSW1wb3J0ZXIgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotewotICAgIFB5X1JFVFVSTl9OT05FOwotfQotCi1zdGF0aWMgUHlNZXRob2REZWYgTnVsbEltcG9ydGVyX21ldGhvZHNbXSA9IHsKLSAgICB7ImZpbmRfbW9kdWxlIiwgKFB5Q0Z1bmN0aW9uKU51bGxJbXBvcnRlcl9maW5kX21vZHVsZSwgTUVUSF9WQVJBUkdTLAotICAgICAiQWx3YXlzIHJldHVybiBOb25lIgotICAgIH0sCi0gICAge05VTEx9ICAvKiBTZW50aW5lbCAqLwotfTsKLQotCi1QeVR5cGVPYmplY3QgUHlOdWxsSW1wb3J0ZXJfVHlwZSA9IHsKLSAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKLSAgICAiaW1wLk51bGxJbXBvcnRlciIsICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihOdWxsSW1wb3J0ZXIpLCAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAvKnRwX2ZsYWdzKi8KLSAgICAiTnVsbCBpbXBvcnRlciBvYmplY3QiLCAgICAvKiB0cF9kb2MgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwotICAgIE51bGxJbXBvcnRlcl9tZXRob2RzLCAgICAgIC8qIHRwX21ldGhvZHMgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3QgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kaWN0b2Zmc2V0ICovCi0gICAgKGluaXRwcm9jKU51bGxJbXBvcnRlcl9pbml0LCAgICAgIC8qIHRwX2luaXQgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwotICAgIFB5VHlwZV9HZW5lcmljTmV3ICAgICAgICAgIC8qIHRwX25ldyAqLwotfTsKIAogc3RhdGljIHN0cnVjdCBQeU1vZHVsZURlZiBpbXBtb2R1bGUgPSB7CiAgICAgUHlNb2R1bGVEZWZfSEVBRF9JTklULAotICAgICJpbXAiLAorICAgICJfaW1wIiwKICAgICBkb2NfaW1wLAogICAgIDAsCiAgICAgaW1wX21ldGhvZHMsCkBAIC0zOTI3LDkgKzE4NjcsNiBAQAogewogICAgIFB5T2JqZWN0ICptLCAqZDsKIAotICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5TnVsbEltcG9ydGVyX1R5cGUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KICAgICBtID0gUHlNb2R1bGVfQ3JlYXRlKCZpbXBtb2R1bGUpOwogICAgIGlmIChtID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbHVyZTsKQEAgLTM5MzcsMTkgKzE4NzQsNiBAQAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIGdvdG8gZmFpbHVyZTsKIAotICAgIGlmIChzZXRpbnQoZCwgIlNFQVJDSF9FUlJPUiIsIFNFQVJDSF9FUlJPUikgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiUFlfU09VUkNFIiwgUFlfU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9DT01QSUxFRCIsIFBZX0NPTVBJTEVEKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJDX0VYVEVOU0lPTiIsIENfRVhURU5TSU9OKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9SRVNPVVJDRSIsIFBZX1JFU09VUkNFKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQS0dfRElSRUNUT1JZIiwgUEtHX0RJUkVDVE9SWSkgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiQ19CVUlMVElOIiwgQ19CVUlMVElOKSA8IDApIGdvdG8gZmFpbHVyZTsKLSAgICBpZiAoc2V0aW50KGQsICJQWV9GUk9aRU4iLCBQWV9GUk9aRU4pIDwgMCkgZ290byBmYWlsdXJlOwotICAgIGlmIChzZXRpbnQoZCwgIlBZX0NPREVSRVNPVVJDRSIsIFBZX0NPREVSRVNPVVJDRSkgPCAwKSBnb3RvIGZhaWx1cmU7Ci0gICAgaWYgKHNldGludChkLCAiSU1QX0hPT0siLCBJTVBfSE9PSykgPCAwKSBnb3RvIGZhaWx1cmU7Ci0KLSAgICBQeV9JTkNSRUYoJlB5TnVsbEltcG9ydGVyX1R5cGUpOwotICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiTnVsbEltcG9ydGVyIiwgKFB5T2JqZWN0ICopJlB5TnVsbEltcG9ydGVyX1R5cGUpOwogICAgIHJldHVybiBtOwogICBmYWlsdXJlOgogICAgIFB5X1hERUNSRUYobSk7CmRpZmYgLS1naXQgYS9QeXRob24vaW1wb3J0ZGwuYyBiL1B5dGhvbi9pbXBvcnRkbC5jCmluZGV4IDljYWVkNDUuLjk0MmU0YjggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRkbC5jCisrKyBiL1B5dGhvbi9pbXBvcnRkbC5jCkBAIC0xMiw1MCArMTIsNzMgQEAKIAogI2luY2x1ZGUgImltcG9ydGRsLmgiCiAKLWV4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNob3J0bmFtZSwKKyNpZmRlZiBNU19XSU5ET1dTCitleHRlcm4gZGxfZnVuY3B0ciBfUHlJbXBvcnRfR2V0RHluTG9hZFdpbmRvd3MoY29uc3QgY2hhciAqc2hvcnRuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpwYXRobmFtZSwgRklMRSAqZnApOworI2Vsc2UKK2V4dGVybiBkbF9mdW5jcHRyIF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhjb25zdCBjaGFyICpzaG9ydG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcGF0aG5hbWUsIEZJTEUgKmZwKTsKLQotCisjZW5kaWYKIAogUHlPYmplY3QgKgotX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKGNoYXIgKm5hbWUsIGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCkKK19QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnBhdGgsIEZJTEUgKmZwKQogewotICAgIFB5T2JqZWN0ICptOwotICAgIFB5T2JqZWN0ICpwYXRoOwotICAgIGNoYXIgKmxhc3Rkb3QsICpzaG9ydG5hbWUsICpwYWNrYWdlY29udGV4dCwgKm9sZGNvbnRleHQ7CisgICAgUHlPYmplY3QgKm0gPSBOVUxMOworI2lmbmRlZiBNU19XSU5ET1dTCisgICAgUHlPYmplY3QgKnBhdGhieXRlczsKKyNlbmRpZgorICAgIFB5T2JqZWN0ICpuYW1lYXNjaWk7CisgICAgY2hhciAqbmFtZXN0ciwgKmxhc3Rkb3QsICpzaG9ydG5hbWUsICpwYWNrYWdlY29udGV4dCwgKm9sZGNvbnRleHQ7CiAgICAgZGxfZnVuY3B0ciBwMDsKICAgICBQeU9iamVjdCogKCpwKSh2b2lkKTsKICAgICBzdHJ1Y3QgUHlNb2R1bGVEZWYgKmRlZjsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgcGF0aCA9IFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQocGF0aG5hbWUpOwotICAgIGlmIChwYXRoID09IE5VTEwpCisgICAgbSA9IF9QeUltcG9ydF9GaW5kRXh0ZW5zaW9uT2JqZWN0KG5hbWUsIHBhdGgpOworICAgIGlmIChtICE9IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKG0pOworICAgICAgICByZXR1cm4gbTsKKyAgICB9CisKKyAgICAvKiBuYW1lIG11c3QgYmUgZW5jb2RhYmxlIHRvIEFTQ0lJIGJlY2F1c2UgZHluYW1pYyBtb2R1bGUgbXVzdCBoYXZlIGEKKyAgICAgICBmdW5jdGlvbiBjYWxsZWQgIlB5SW5pdF9OQU1FIiwgdGhleSBhcmUgd3JpdHRlbiBpbiBDLCBhbmQgdGhlIEMgbGFuZ3VhZ2UKKyAgICAgICBkb2Vzbid0IGFjY2VwdCBub24tQVNDSUkgaWRlbnRpZmllcnMuICovCisgICAgbmFtZWFzY2lpID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCAiYXNjaWkiLCBOVUxMKTsKKyAgICBpZiAobmFtZWFzY2lpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKChtID0gX1B5SW1wb3J0X0ZpbmRFeHRlbnNpb25Vbmljb2RlKG5hbWUsIHBhdGgpKSAhPSBOVUxMKSB7Ci0gICAgICAgIFB5X0lOQ1JFRihtKTsKLSAgICAgICAgcmVzdWx0ID0gbTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBsYXN0ZG90ID0gc3RycmNocihuYW1lLCAnLicpOworICAgIG5hbWVzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhuYW1lYXNjaWkpOworICAgIGlmIChuYW1lc3RyID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBsYXN0ZG90ID0gc3RycmNocihuYW1lc3RyLCAnLicpOwogICAgIGlmIChsYXN0ZG90ID09IE5VTEwpIHsKICAgICAgICAgcGFja2FnZWNvbnRleHQgPSBOVUxMOwotICAgICAgICBzaG9ydG5hbWUgPSBuYW1lOworICAgICAgICBzaG9ydG5hbWUgPSBuYW1lc3RyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcGFja2FnZWNvbnRleHQgPSBuYW1lOworICAgICAgICBwYWNrYWdlY29udGV4dCA9IG5hbWVzdHI7CiAgICAgICAgIHNob3J0bmFtZSA9IGxhc3Rkb3QrMTsKICAgICB9CiAKLSAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhuYW1lLCBzaG9ydG5hbWUsIHBhdGhuYW1lLCBmcCk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIHAwID0gX1B5SW1wb3J0X0dldER5bkxvYWRXaW5kb3dzKHNob3J0bmFtZSwgcGF0aCwgZnApOworI2Vsc2UKKyAgICBwYXRoYnl0ZXMgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KHBhdGgpOworICAgIGlmIChwYXRoYnl0ZXMgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBwMCA9IF9QeUltcG9ydF9HZXREeW5Mb2FkRnVuYyhzaG9ydG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcocGF0aGJ5dGVzKSwgZnApOworICAgIFB5X0RFQ1JFRihwYXRoYnl0ZXMpOworI2VuZGlmCiAgICAgcCA9IChQeU9iamVjdCooKikodm9pZCkpcDA7CiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKHAgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfSW1wb3J0RXJyb3IsCi0gICAgICAgICAgICJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgaW5pdCBmdW5jdGlvbiAoUHlJbml0XyUuMjAwcykiLAotICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKKyAgICAgICAgUHlPYmplY3QgKm1zZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJkeW5hbWljIG1vZHVsZSBkb2VzIG5vdCBkZWZpbmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluaXQgZnVuY3Rpb24gKFB5SW5pdF8lcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKKyAgICAgICAgUHlFcnJfU2V0SW1wb3J0RXJyb3IobXNnLCBuYW1lLCBwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKG1zZyk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIG9sZGNvbnRleHQgPSBfUHlfUGFja2FnZUNvbnRleHQ7CkBAIC02Niw3ICs4OSw2IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBQeV9ERUNSRUYobSk7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICJpbml0aWFsaXphdGlvbiBvZiAlcyByYWlzZWQgdW5yZXBvcnRlZCBleGNlcHRpb24iLAogICAgICAgICAgICAgICAgICAgICAgc2hvcnRuYW1lKTsKQEAgLTgzLDIwICsxMDUsMTUgQEAKICAgICBlbHNlCiAgICAgICAgIFB5X0lOQ1JFRihwYXRoKTsKIAotICAgIGlmIChfUHlJbXBvcnRfRml4dXBFeHRlbnNpb25Vbmljb2RlKG0sIG5hbWUsIHBhdGgpIDwgMCkKKyAgICBpZiAoX1B5SW1wb3J0X0ZpeHVwRXh0ZW5zaW9uT2JqZWN0KG0sIG5hbWUsIHBhdGgpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCi0gICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKAotICAgICAgICAgICAgImltcG9ydCAlcyAjIGR5bmFtaWNhbGx5IGxvYWRlZCBmcm9tICVzXG4iLAotICAgICAgICAgICAgbmFtZSwgcGF0aG5hbWUpOwotICAgIHJlc3VsdCA9IG07Ci0gICAgZ290byBmaW5hbGx5OworICAgIFB5X0RFQ1JFRihuYW1lYXNjaWkpOworICAgIHJldHVybiBtOwogCiBlcnJvcjoKLSAgICByZXN1bHQgPSBOVUxMOwotZmluYWxseToKLSAgICBQeV9ERUNSRUYocGF0aCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBQeV9ERUNSRUYobmFtZWFzY2lpKTsKKyAgICBQeV9YREVDUkVGKG0pOworICAgIHJldHVybiBOVUxMOwogfQogCiAjZW5kaWYgLyogSEFWRV9EWU5BTUlDX0xPQURJTkcgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRkbC5oIGIvUHl0aG9uL2ltcG9ydGRsLmgKaW5kZXggYjRkMjFiZS4uNmI5Y2Y3NSAxMDA2NDQKLS0tIGEvUHl0aG9uL2ltcG9ydGRsLmgKKysrIGIvUHl0aG9uL2ltcG9ydGRsLmgKQEAgLTYsMjkgKzYsOSBAQAogI2VuZGlmCiAKIAotLyogRGVmaW5pdGlvbnMgZm9yIGR5bmFtaWMgbG9hZGluZyBvZiBleHRlbnNpb24gbW9kdWxlcyAqLwotZW51bSBmaWxldHlwZSB7Ci0gICAgU0VBUkNIX0VSUk9SLAotICAgIFBZX1NPVVJDRSwKLSAgICBQWV9DT01QSUxFRCwKLSAgICBDX0VYVEVOU0lPTiwKLSAgICBQWV9SRVNPVVJDRSwgLyogTWFjIG9ubHkgKi8KLSAgICBQS0dfRElSRUNUT1JZLAotICAgIENfQlVJTFRJTiwKLSAgICBQWV9GUk9aRU4sCi0gICAgUFlfQ09ERVJFU09VUkNFLCAvKiBNYWMgb25seSAqLwotICAgIElNUF9IT09LCi19OworZXh0ZXJuIGNvbnN0IGNoYXIgKl9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdOwogCi1zdHJ1Y3QgZmlsZWRlc2NyIHsKLSAgICBjaGFyICpzdWZmaXg7Ci0gICAgY2hhciAqbW9kZTsKLSAgICBlbnVtIGZpbGV0eXBlIHR5cGU7Ci19OwotZXh0ZXJuIHN0cnVjdCBmaWxlZGVzY3IgKiBfUHlJbXBvcnRfRmlsZXRhYjsKLWV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZWRlc2NyIF9QeUltcG9ydF9EeW5Mb2FkRmlsZXRhYltdOwotCi1leHRlcm4gUHlPYmplY3QgKl9QeUltcG9ydF9Mb2FkRHluYW1pY01vZHVsZShjaGFyICpuYW1lLCBjaGFyICpwYXRobmFtZSwKK2V4dGVybiBQeU9iamVjdCAqX1B5SW1wb3J0X0xvYWREeW5hbWljTW9kdWxlKFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFICopOwogCiAvKiBNYXggbGVuZ3RoIG9mIG1vZHVsZSBzdWZmaXggc2VhcmNoZWQgZm9yIC0tIGFjY29tbW9kYXRlcyAibW9kdWxlLnNsYiIgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnRsaWIuaCBiL1B5dGhvbi9pbXBvcnRsaWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2Q3MTZmCi0tLSAvZGV2L251bGwKKysrIGIvUHl0aG9uL2ltcG9ydGxpYi5oCkBAIC0wLDAgKzEsNDQwNCBAQAorLyogQXV0by1nZW5lcmF0ZWQgYnkgTW9kdWxlcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCit1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKKyAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKKyAgICAwLDY0LDAsMCwwLDExNSwyMDAsMywwLDAsMTAwLDAsMCw5MCwwLDAsCisgICAgMTAwLDEyOSwwLDkwLDEsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKKyAgICAyLDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsMywwLDEwMCw4LAorICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDQsMCwxMDAsMTAsMCwxMDAsMTEsMCwKKyAgICAxMzIsMCwwLDkwLDUsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAorICAgIDYsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTYsCisgICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDgsMCwxMDAsMTgsMCwxMDAsMTksMCwKKyAgICAxMzIsMCwwLDkwLDksMCwxMDAsMjAsMCwxMDAsMjEsMCwxMDAsMjIsMCwxMzIsCisgICAgMSwwLDkwLDEwLDAsMTAwLDIzLDAsMTAwLDI0LDAsMTMyLDAsMCw5MCwxMSwKKyAgICAwLDEwMSwxMiwwLDEwMSwxMSwwLDEwNiwxMywwLDEzMSwxLDAsOTAsMTQsMCwKKyAgICAxMDAsMjUsMCwxMDAsMjYsMCwxMzIsMCwwLDkwLDE1LDAsMTA1LDAsMCw5MCwKKyAgICAxNiwwLDEwNSwwLDAsOTAsMTcsMCw3MSwxMDAsMjcsMCwxMDAsMjgsMCwxMzIsCisgICAgMCwwLDEwMCwyOCwwLDEwMSwxOCwwLDEzMSwzLDAsOTAsMTksMCw3MSwxMDAsCisgICAgMjksMCwxMDAsMzAsMCwxMzIsMCwwLDEwMCwzMCwwLDEzMSwyLDAsOTAsMjAsCisgICAgMCw3MSwxMDAsMzEsMCwxMDAsMzIsMCwxMzIsMCwwLDEwMCwzMiwwLDEzMSwyLAorICAgIDAsOTAsMjEsMCwxMDAsMzMsMCwxMDAsMzQsMCwxMzIsMCwwLDkwLDIyLDAsCisgICAgMTAwLDM1LDAsMTAwLDM2LDAsMTMyLDAsMCw5MCwyMywwLDEwMCwzNywwLDEwMCwKKyAgICAzOCwwLDEzMiwwLDAsOTAsMjQsMCwxMDAsMzksMCwxMDEsMjUsMCwxMDAsNDAsCisgICAgMCwxMzEsMSwwLDEwMCw0MSwwLDYyLDY2LDEwMSwyNSwwLDEwMCw0MiwwLDEzMSwKKyAgICAxLDAsMTAwLDQzLDAsNjIsNjYsOTAsMjYsMCwxMDEsMjcsMCwxMDAsNDQsMCwKKyAgICAxMDAsNDUsMCwxMzIsMCwwLDEwMSwyOCwwLDEwMCw0NiwwLDEwMCw0NywwLDEwMCwKKyAgICA0OCwwLDEzMSwzLDAsNjgsMTMxLDEsMCwxMzEsMSwwLDkwLDI5LDAsMTAwLAorICAgIDQ5LDAsOTAsMzAsMCwxMDAsNTAsMCwxMDMsMSwwLDkwLDMxLDAsMTAwLDUxLAorICAgIDAsMTAzLDEsMCw5MCwzMiwwLDEwMCw1MiwwLDEwMywxLDAsOTAsMzMsMCwKKyAgICAxMDAsMTI4LDAsMTAwLDUzLDAsMTAwLDU0LDAsMTMyLDEsMCw5MCwzNSwwLDEwMCwKKyAgICA1NSwwLDEwMCw1NiwwLDEzMiwwLDAsOTAsMzYsMCwxMDAsNTcsMCwxMDAsNTgsCisgICAgMCwxMzIsMCwwLDkwLDM3LDAsMTAwLDU5LDAsMTAwLDYwLDAsMTMyLDAsMCwKKyAgICA5MCwzOCwwLDEwMCw2MSwwLDEwMCw2MiwwLDEzMiwwLDAsOTAsMzksMCwxMDAsCisgICAgNjMsMCwxMDAsNjQsMCwxMzIsMCwwLDkwLDQwLDAsMTAwLDY1LDAsMTAwLDY2LAorICAgIDAsMTMyLDAsMCw5MCw0MSwwLDEwMCw2NywwLDEwMCw2OCwwLDEzMiwwLDAsCisgICAgOTAsNDIsMCwxMDAsNjksMCwxMDAsNzAsMCwxMzIsMCwwLDkwLDQzLDAsMTAwLAorICAgIDcxLDAsMTAwLDcyLDAsMTMyLDAsMCw5MCw0NCwwLDEwMCw3MywwLDEwMCw3NCwKKyAgICAwLDEzMiwwLDAsOTAsNDUsMCw3MSwxMDAsNzUsMCwxMDAsNzYsMCwxMzIsMCwKKyAgICAwLDEwMCw3NiwwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzcsMCwxMDAsNzgsCisgICAgMCwxMzIsMCwwLDEwMCw3OCwwLDEzMSwyLDAsOTAsNDcsMCw3MSwxMDAsNzksCisgICAgMCwxMDAsODAsMCwxMzIsMCwwLDEwMCw4MCwwLDEzMSwyLDAsOTAsNDgsMCwKKyAgICA3MSwxMDAsODEsMCwxMDAsODIsMCwxMzIsMCwwLDEwMCw4MiwwLDEzMSwyLDAsCisgICAgOTAsNDksMCw3MSwxMDAsODMsMCwxMDAsODQsMCwxMzIsMCwwLDEwMCw4NCwwLAorICAgIDEwMSw0OSwwLDEzMSwzLDAsOTAsNTAsMCw3MSwxMDAsODUsMCwxMDAsODYsMCwKKyAgICAxMzIsMCwwLDEwMCw4NiwwLDEzMSwyLDAsOTAsNTEsMCw3MSwxMDAsODcsMCwKKyAgICAxMDAsODgsMCwxMzIsMCwwLDEwMCw4OCwwLDEwMSw1MSwwLDEwMSw1MCwwLDEzMSwKKyAgICA0LDAsOTAsNTIsMCw3MSwxMDAsODksMCwxMDAsOTAsMCwxMzIsMCwwLDEwMCwKKyAgICA5MCwwLDEwMSw1MSwwLDEwMSw0OSwwLDEzMSw0LDAsOTAsNTMsMCwxMDMsMCwKKyAgICAwLDkwLDU0LDAsNzEsMTAwLDkxLDAsMTAwLDkyLDAsMTMyLDAsMCwxMDAsOTIsCisgICAgMCwxMzEsMiwwLDkwLDU1LDAsNzEsMTAwLDkzLDAsMTAwLDk0LDAsMTMyLDAsCisgICAgMCwxMDAsOTQsMCwxMzEsMiwwLDkwLDU2LDAsNzEsMTAwLDk1LDAsMTAwLDk2LAorICAgIDAsMTMyLDAsMCwxMDAsOTYsMCwxMzEsMiwwLDkwLDU3LDAsNzEsMTAwLDk3LAorICAgIDAsMTAwLDk4LDAsMTMyLDAsMCwxMDAsOTgsMCwxMzEsMiwwLDkwLDU4LDAsCisgICAgNzEsMTAwLDk5LDAsMTAwLDEwMCwwLDEzMiwwLDAsMTAwLDEwMCwwLDEzMSwyLDAsCisgICAgOTAsNTksMCw3MSwxMDAsMTAxLDAsMTAwLDEwMiwwLDEzMiwwLDAsMTAwLDEwMiwwLAorICAgIDEzMSwyLDAsOTAsNjAsMCwxMDAsMTAzLDAsMTAwLDEwNCwwLDEzMiwwLDAsOTAsCisgICAgNjEsMCwxMDAsMTA1LDAsMTAwLDEwNiwwLDEzMiwwLDAsOTAsNjIsMCwxMDAsMTA3LAorICAgIDAsMTAwLDEwOCwwLDEzMiwwLDAsOTAsNjMsMCwxMDAsMTA5LDAsOTAsNjQsMCwKKyAgICAxMDAsMTEwLDAsMTAwLDExMSwwLDEzMiwwLDAsOTAsNjUsMCwxMDAsMTEyLDAsMTAwLAorICAgIDExMywwLDEzMiwwLDAsOTAsNjYsMCwxMDAsMTI4LDAsMTAwLDQ2LDAsMTAwLDExNCwKKyAgICAwLDEwMCwxMTUsMCwxMzIsMiwwLDkwLDY3LDAsMTAwLDExNiwwLDEwMCwxMTcsMCwKKyAgICAxMzIsMCwwLDkwLDY4LDAsMTAwLDExOCwwLDEwMCwxMTksMCwxMzIsMCwwLDkwLAorICAgIDY5LDAsMTAwLDEyMCwwLDEwMCwxMjEsMCwxMzIsMCwwLDkwLDcwLDAsMTAwLDEyOCwKKyAgICAwLDEwMCwxMjgsMCwxMDIsMCwwLDEwMCw0NiwwLDEwMCwxMjIsMCwxMDAsMTIzLDAsCisgICAgMTMyLDQsMCw5MCw3MSwwLDEwMCwxMjQsMCwxMDAsMTI1LDAsMTMyLDAsMCw5MCwKKyAgICA3MiwwLDEwMCwxMjYsMCwxMDAsMTI3LDAsMTMyLDAsMCw5MCw3MywwLDEwMCwxMjgsCisgICAgMCw4Myw0MCwxMzAsMCwwLDAsMTE3LDgzLDEsMCwwLDY3LDExMSwxMTQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLDg0LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsNzksODQsMzIsMTA5LAorICAgIDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKKyAgICAxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMzLDMyLDczLDExNiwKKyAgICAzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsMTE1LDEwNSwxMDMsMTEwLAorICAgIDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsMzIsMTA1LDExNiwzMiwKKyAgICA5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICAxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiwKKyAgICA5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsCisgICAgMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwxMDEsOTksMTE2LDEwNSwKKyAgICAxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsMTE2LDExNiwxMTQsMTA1LAorICAgIDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLDEwMSwxMTQsMzIsMTE2LAorICAgIDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsCisgICAgMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwxMDUsOTksNDUsMTAyLAorICAgIDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwzMiwxMTEsMTAyLAorICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwxMTcsCisgICAgMywwLDAsMCwxMTksMTA1LDExMCwxMTcsNiwwLDAsMCw5OSwxMjEsMTAzLDExOSwKKyAgICAxMDUsMTEwLDExNyw2LDAsMCwwLDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsNDksMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsCisgICAgMTE2LDMsMCwxMzEsMSwwLDExNCwzMywwLDEwMCwxLDAsMTAwLDIsMCwxMzIsCisgICAgMCwwLDEyNSwwLDAsMTEwLDEyLDAsMTAwLDMsMCwxMDAsMiwwLDEzMiwwLAorICAgIDAsMTI1LDAsMCwxMjQsMCwwLDgzLDQwLDQsMCwwLDAsNzgsOTksMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw4MywKKyAgICAwLDAsMCwxMTUsMTMsMCwwLDAsMTAwLDEsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTA3LDYsMCw4Myw0MCwyLDAsMCwwLDExNyw1MywwLDAsMCw4NCwKKyAgICAxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLAorICAgIDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LAorICAgIDEwMSwxMDgsMTIxLDQ2LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2NywKKyAgICA2NSw4Myw2OSw3OSw3NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk1LAorICAgIDExMSwxMTUsMTE3LDcsMCwwLDAsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsMTEwLDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsMzQsCisgICAgMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywzNywwLDAsMCw5NSwKKyAgICAxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSw0NiwKKyAgICA2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICAwLDgzLDQwLDIsMCwwLDAsMTE3LDUzLDAsMCwwLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNzAsNDAsMSwwLDAsMCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LAorICAgIDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywKKyAgICAxMTUsMTAxLDM4LDAsMCwwLDExNSwyLDAsMCwwLDAsMiw0MCw0LDAsCisgICAgMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw4LDAsMCwwLDExMiwKKyAgICAxMDgsOTcsMTE2LDEwMiwxMTEsMTE0LDEwOSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywxMTQsCisgICAgMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDI3LDAsMCwwLDk1LDY3LDY1LDgzLDY5LAorICAgIDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LAorICAgIDg0LDcwLDc5LDgyLDc3LDgzLDQwLDEsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwOSw5NywxMDcsCisgICAgMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMyLDAsMCwwLAorICAgIDExNSw4LDAsMCwwLDAsMSwxOCwxLDE1LDQsMTIsMywxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LAorICAgIDExNSwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTA4LDAsMCwwLDExNiwwLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDEyNSwwLDAsMTAzLDAsMCwxMjUsMSwwLDEyNCwxLAorICAgIDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDEyNCwKKyAgICAxLDAsMTA2LDEsMCwxMjQsMCwwLDEwMCwyLDAsNjMsMTAwLDEsMCw2NCwKKyAgICAxMzEsMSwwLDEsMTI0LDEsMCwxMDYsMSwwLDEyNCwwLDAsMTAwLDMsMCwKKyAgICA2MywxMDAsMSwwLDY0LDEzMSwxLDAsMSwxMjQsMSwwLDEwNiwxLDAsMTI0LAorICAgIDAsMCwxMDAsNCwwLDYzLDEwMCwxLDAsNjQsMTMxLDEsMCwxLDExNiwyLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDUsMCwwLDAsMTE3LDExMSwwLAorICAgIDAsMCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw1MSw1MCw0NSw5OCwKKyAgICAxMDUsMTE2LDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCwzMiwxMTYsMTExLDMyLDEwOCwxMDUsCisgICAgMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODgsODgsODgsMzIsODQsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLAorICAgIDExNywxMTAsMTE2LDEwNSwxMDgsMzIsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwzOSwxMTUsMzIsCisgICAgMTA4LDExMSwxMTAsMTAzLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsOTcsCisgICAgMTE0LDEwMSwzMiwxMDEsMTIwLDExMiwxMTEsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMTA1LDI1NSwwLDAsMCwxMDUsOCwwLDAsMCwxMDUsMTYsMCwwLDAsCisgICAgMTA1LDI0LDAsMCwwLDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsMTA1LAorICAgIDExMCwxMTYsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsOSwwLAorICAgIDAsMCw5OCwxMjEsMTE2LDEwMSw5NywxMTQsMTE0LDk3LDEyMSw0MCwyLDAsMCwwLAorICAgIDExNywxLDAsMCwwLDEyMCwxMTcsOSwwLDAsMCwxMDUsMTEwLDExNiw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSwxMTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ1LDAsMCwwLAorICAgIDExNSwxNCwwLDAsMCwwLDYsMTIsMSw2LDEsMTcsMSwyMSwxLDIxLAorICAgIDEsMjEsMSwxMTcsNywwLDAsMCw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDY4LDAsMCwwLDEyNCwwLDAsMTAwLDEsMCwyNSwKKyAgICAxMjUsMSwwLDEyNCwxLDAsMTI0LDAsMCwxMDAsMiwwLDI1LDEwMCwzLDAsCisgICAgNjIsNzksMTI1LDEsMCwxMjQsMSwwLDEyNCwwLDAsMTAwLDQsMCwyNSwxMDAsCisgICAgNSwwLDYyLDc5LDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCw2LDAsCisgICAgMjUsMTAwLDcsMCw2Miw3OSwxMjUsMSwwLDEyNCwxLDAsODMsNDAsOCwwLAorICAgIDAsMCwxMTcsMTE1LDAsMCwwLDY3LDExMSwxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDUyLAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwzMiw5NywxMTAsMzIsMTA1LDExMCwKKyAgICAxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg4LDg4LDg4LDMyLAorICAgIDg0LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwxMTcsMTEwLDExNiwxMDUsMTA4LDMyLAorICAgIDEwOSw5NywxMTQsMTE1LDEwNCw5NywxMDgsMzksMTE1LDMyLDEwOCwxMTEsMTEwLDEwMywzMiwxMDIsCisgICAgMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTIwLDExMiwxMTEsCisgICAgMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTA1LDAsMCwwLDAsMTA1LAorICAgIDEsMCwwLDAsMTA1LDgsMCwwLDAsMTA1LDIsMCwwLDAsMTA1LDE2LAorICAgIDAsMCwwLDEwNSwzLDAsMCwwLDEwNSwyNCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDQwLDIsMCwwLDAsMTE3LDksMCwwLDAsMTA1LDExMCwxMTYsOTUsCisgICAgOTgsMTIxLDExNiwxMDEsMTE1LDExNywxLDAsMCwwLDEyMCw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsCisgICAgMTExLDExMCwxMDMsNjEsMCwwLDAsMTE1LDEwLDAsMCwwLDAsNiwxMCwxLAorICAgIDE4LDEsMTgsMSwxOCwxLDExNyw3LDAsMCwwLDk1LDExNCw5NSwxMDgsMTExLAorICAgIDExMCwxMDMsOTksMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwKKyAgICAwLDAsMCw3MSwwLDAsMCwxMTUsMTAzLDAsMCwwLDEwMywwLDAsMTI1LAorICAgIDEsMCwxMjAsNzEsMCwxMjQsMCwwLDY4LDkzLDYzLDAsMTI1LDIsMCwxMjQsCisgICAgMiwwLDExNSwzMSwwLDExMywxMywwLDExMCwwLDAsMTI0LDEsMCwxMDYsMCwKKyAgICAwLDEyNCwyLDAsMTMxLDEsMCwxLDEyNCwyLDAsMTAwLDQsMCwyNSwxMTYsCisgICAgMSwwLDEwNyw3LDAsMTE0LDEzLDAsMTI0LDEsMCwxMDYsMCwwLDExNiwyLAorICAgIDAsMTMxLDEsMCwxLDExMywxMywwLDExMywxMywwLDg3LDEwMCwyLDAsMTA2LAorICAgIDMsMCwxMjQsMSwwLDEwMCwzLDAsMTAwLDUsMCwxMzMsMiwwLDI1LDEzMSwKKyAgICAxLDAsODMsNDAsNiwwLDAsMCwxMTcsMzEsMCwwLDAsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwxMDUsMSwwLDAsCisgICAgMCwxMTcsMCwwLDAsMCw3OCwxMDUsMjU1LDI1NSwyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwKKyAgICAyNTUsNDAsNCwwLDAsMCwxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsCisgICAgMTAwLDExNywxNSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsCisgICAgOTcsMTE2LDExMSwxMTQsMTE1LDExNyw4LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwKKyAgICAxMDEsMTEyLDExNyw0LDAsMCwwLDEwNiwxMTEsMTA1LDExMCw0MCwzLDAsMCwwLAorICAgIDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE3LAorICAgIDksMCwwLDAsMTEwLDEwMSwxMTksOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNyw0LDAsCisgICAgMCwwLDExMiw5NywxMTQsMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LAorICAgIDExMCw3NCwwLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDYsMSwxMywxLAorICAgIDYsMSw2LDEsMTMsMSwxNiwxLDIwLDEsMTE3LDEwLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSw4NSwKKyAgICAwLDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCw2OCwKKyAgICA5MywyOCwwLDEyNSwxLDAsMTI0LDEsMCwxMTYsMSwwLDEwNyw2LDAsMTE0LAorICAgIDEzLDAsMTI0LDEsMCwxMjUsMiwwLDgwLDExMywxMywwLDExMywxMywwLDg3LAorICAgIDExNiwyLDAsMTI1LDIsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDIsMCwxMzEsCisgICAgMSwwLDkyLDMsMCwxMjUsMywwLDEyNSw0LDAsMTI1LDUsMCwxMjQsMywKKyAgICAwLDEyNCw1LDAsMTAyLDIsMCw4Myw0MCwxLDAsMCwwLDExNywzMiwwLAorICAgIDAsMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTE1LDExMiwxMDgsMTA1LDExNiw0MCwKKyAgICA0MSw0Niw0MCw0LDAsMCwwLDExNyw4LDAsMCwwLDExNCwxMDEsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwMSwxMDAsMTE3LDE1LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsCisgICAgMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwKKyAgICAxMDQsOTUsMTE1LDEwMSwxMTIsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsCisgICAgMTE2LDEwNSwxMTEsMTEwLDQwLDYsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDEsMCwwLDAsMTIwLDExNywzLDAsMCwwLDExNSwxMDEsMTEyLAorICAgIDExNyw1LDAsMCwwLDEwMiwxMTQsMTExLDExMCwxMTYsMTE3LDEsMCwwLDAsOTUsCisgICAgMTE3LDQsMCwwLDAsMTE2LDk3LDEwNSwxMDgsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExMiwxMDgsMTA1LDExNiw4NiwwLDAsMCwxMTUsMTQsMCwwLDAsMCwyLAorICAgIDE5LDEsMTIsMSw2LDEsOCwyLDYsMSwyNCwxLDExNywxMSwwLDAsCisgICAgMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw2MSwwLDAsMCwxMjEsMTksMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsMiwwLAorICAgIDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDEwMCwyLDAsODMsODksMTEwLDEsCisgICAgMCw4OCwxMjQsMiwwLDEwNiw0LDAsMTAwLDEsMCw2NCwxMjQsMSwwLDEwNywKKyAgICAyLDAsODMsNDAsMywwLDAsMCwxMTcsNDksMCwwLDAsODQsMTAxLDExNSwKKyAgICAxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKKyAgICAxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDEwNSwwLAorICAgIDI0MCwwLDAsNzAsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsCisgICAgMTE1LDExNyw0LDAsMCwwLDExNSwxMTYsOTcsMTE2LDExNyw3LDAsMCwwLDc5LAorICAgIDgzLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwKKyAgICAxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDEwOSwxMTEsMTAwLDEwMSw0MCwzLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwOSwKKyAgICAxMTEsMTAwLDEwMSwxMTcsOSwwLDAsMCwxMTUsMTE2LDk3LDExNiw5NSwxMDUsMTEwLDEwMiwKKyAgICAxMTEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTgsMCwKKyAgICAwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCisgICAgMTE2LDEyMSwxMTIsMTAxLDk4LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKKyAgICAxLDE5LDEsMTMsMSw5LDEsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTAwLDEsCisgICAgMCwxMzEsMiwwLDgzLDQwLDIsMCwwLDAsMTE3LDMxLDAsMCwwLDgyLAorICAgIDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTExLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMCwKKyAgICAxMjgsMCwwLDQwLDEsMCwwLDAsMTE3LDE4LDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMTUsOTUsMTA5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDEwOCwwLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDIsMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLAorICAgIDEyNCwwLDAsMTE1LDIxLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTI1LAorICAgIDAsMCwxMTAsMCwwLDExNiwyLDAsMTI0LDAsMCwxMDAsMSwwLDEzMSwyLAorICAgIDAsODMsNDAsMiwwLDAsMCwxMTcsMzAsMCwwLDAsODIsMTAxLDExMiwxMDgsCisgICAgOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiwKKyAgICA5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsNjQsMCwwLDQwLAorICAgIDMsMCwwLDAsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNiwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5OSwxMTksMTAwLDExNywxOCwwLDAsMCw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsNDAsMSwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsMTE0LDExNCwwLDAsMCwxMTUsNiwwLDAsCisgICAgMCwwLDIsNiwxLDE1LDEsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsNiwwLDAsMCwxNywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTkyLDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDExNiwKKyAgICAxLDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwyLDAsMTI1LDMsMCwxMTYsMiwKKyAgICAwLDEwNiwzLDAsMTI0LDMsMCwxMTYsMiwwLDEwNiw0LDAsMTE2LDIsMCwKKyAgICAxMDYsNSwwLDY2LDExNiwyLDAsMTA2LDYsMCw2NiwxMjQsMiwwLDEwMCwyLAorICAgIDAsNjQsMTMxLDMsMCwxMjUsNCwwLDEyMSw2MCwwLDExNiw3LDAsMTA2LDgsCisgICAgMCwxMjQsNCwwLDEwMCwzLDAsMTMxLDIsMCwxNDMsMjAsMCwxMjUsNSwwLAorICAgIDEyNCw1LDAsMTA2LDksMCwxMjQsMSwwLDEzMSwxLDAsMSw4NywxMDAsNCwKKyAgICAwLDgxLDg4LDExNiwyLDAsMTA2LDEwLDAsMTI0LDMsMCwxMjQsMCwwLDEzMSwKKyAgICAyLDAsMSw4NywxMTAsNTksMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODcsCisgICAgMCwxLDEsMSwxMjEsMTcsMCwxMTYsMiwwLDEwNiwxMiwwLDEyNCwzLDAsCisgICAgMTMxLDEsMCwxLDg3LDExMCwxOCwwLDQsMTE2LDExLDAsMTA3LDEwLDAsMTE0LAorICAgIDE3OSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTMwLDAsMCw4OSwxMTAsMSwKKyAgICAwLDg4LDEwMCw0LDAsODMsNDAsNSwwLDAsMCwxMTcsMTYyLDAsMCwwLAorICAgIDY2LDEwMSwxMTUsMTE2LDQ1LDEwMSwxMDIsMTAyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTcsMTEwLDk5LAorICAgIDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDExOSwxMTQsMTA1LDExNiwxMDEsMzIsMTAwLDk3LAorICAgIDExNiw5NywzMiwxMTYsMTExLDMyLDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNiwxMTEsCisgICAgMTA5LDEwNSw5OSw5NywxMDgsMTA4LDEyMSw0NiwxMCwzMiwzMiwzMiwzMiw2NiwxMDEsMzIsCisgICAgMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwzMiw5NywzMiw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LDExNSwxMTYsMTE1LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTAyLDMyLDk5LDExMSwxMTAsOTksMTE3LDExNCwxMTQsMTAxLAorICAgIDExMCwxMTYsMzIsMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwKKyAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsCisgICAgMTAwLDQ2LDExNyw1LDAsMCwwLDEyMywxMjUsNDYsMTIzLDEyNSwxMDUsMTgyLDEsMCwKKyAgICAwLDExNywyLDAsMCwwLDExOSw5OCw3OCw0MCwxMywwLDAsMCwxMTcsNiwKKyAgICAwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywyLDAsMCwwLDEwNSwxMDAsCisgICAgMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTEsMTEyLDEwMSwKKyAgICAxMTAsMTE3LDYsMCwwLDAsNzksOTUsNjksODgsNjcsNzYsMTE3LDcsMCwwLAorICAgIDAsNzksOTUsNjcsODIsNjksNjUsODQsMTE3LDgsMCwwLDAsNzksOTUsODcsCisgICAgODIsNzksNzgsNzYsODksMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsNiwwLAorICAgIDAsMCw3MCwxMDUsMTA4LDEwMSw3Myw3OSwxMTcsNSwwLDAsMCwxMTksMTE0LDEwNSwKKyAgICAxMTYsMTAxLDExNyw3LDAsMCwwLDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE3LDcsCisgICAgMCwwLDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDExNywKKyAgICAxMTAsMTA4LDEwNSwxMTAsMTA3LDQwLDYsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsNCwwLDAsCisgICAgMCwxMDksMTExLDEwMCwxMDEsMTE3LDgsMCwwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTE2LAorICAgIDEwOSwxMTIsMTE3LDIsMCwwLDAsMTAyLDEwMCwxMTcsNCwwLDAsMCwxMDIsMTA1LAorICAgIDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTMsCisgICAgMCwwLDAsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksCisgICAgMTIxLDAsMCwwLDExNSwyNiwwLDAsMCwwLDUsMjQsMSw5LDEsMzMsCisgICAgMSwzLDMsMjEsMSwxOSwxLDIwLDEsMTMsMSwzLDEsMTcsMSwxMywKKyAgICAxLDUsMSwxMTcsMTMsMCwwLDAsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5NywKKyAgICAxMTYsMTExLDEwOSwxMDUsOTksOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsNywwLDAsMCw2NywwLDAsMCwxMTUsOTUsMCwwLDAsMTIwLAorICAgIDY5LDAsMTAwLDEsMCwxMDAsMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwKKyAgICAwLDY4LDkzLDQ5LDAsMTI1LDIsMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsCisgICAgMCwxMzEsMiwwLDExNCwxOSwwLDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLAorICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTMxLDMsMCwxLAorICAgIDExMywxOSwwLDExMywxOSwwLDg3LDEyNCwwLDAsMTA2LDMsMCwxMDYsNCwwLAorICAgIDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsMTAwLDUsMCw4Myw0MCw2LAorICAgIDAsMCwwLDExNyw0NywwLDAsMCw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKKyAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCisgICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCisgICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsCisgICAgNzgsNDAsNSwwLDAsMCwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNyw3LDAsMCwwLDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw3LAorICAgIDAsMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDExNyw2LDAsMCwwLDExNywxMTIsMTAwLDk3LAorICAgIDExNiwxMDEsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwxMTAsMTAxLDExOSwxMTcsCisgICAgMywwLDAsMCwxMTEsMTA4LDEwMCwxMTcsNywwLDAsMCwxMTQsMTAxLDExMiwxMDgsCisgICAgOTcsOTksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDUsMCwwLDAsOTUsMTE5LDExNCw5NywxMTIsMTQzLDAsMCwwLDExNSw4LDAsCisgICAgMCwwLDAsMiwyNSwxLDE1LDEsMzIsMSwxMTcsNSwwLDAsMCw5NSwKKyAgICAxMTksMTE0LDk3LDExMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwKKyAgICAwLDExNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDEzMSwxLDAsODMsNDAsMSwKKyAgICAwLDAsMCwxMTcsNzUsMCwwLDAsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LAorICAgIDMyLDExMCwxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMDEsMTEwLDExNiwxMDEsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwxMTYsMTExLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwKKyAgICAzMiwzMiwzMiw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNiwxMjEsMTEyLAorICAgIDEwMSwxMTcsMywwLDAsMCw5NSwxMDUsMTExLDQwLDEsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTU0LDAsMCwwLDExNSwyLDAsMCwwLDAsNiwxMTcsMTAsMCwKKyAgICAwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NiwwLDAsCisgICAgMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwwLDkwLDEsMCwKKyAgICAxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LAorICAgIDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDc4LDQwLDMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSwKKyAgICA5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwwLDAsOTUsNjgsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMTcxLDAsMCwwLDExNSwyLDAsMCwKKyAgICAwLDE2LDEsMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwKKyAgICAxMDcsNjksMTE0LDExNCwxMTEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLAorICAgIDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDg2LDAsMCwwLAorICAgIDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsCisgICAgMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCisgICAgNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNiwKKyAgICAwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwwLAorICAgIDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsOTAsCisgICAgOCwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywxMSwwLDAsMCwKKyAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDE2OSwwLDAsMCwKKyAgICA2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsCisgICAgMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsMTA0LDExNCwxMDEsCisgICAgOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwxMTEsMzIsMTE2LAorICAgIDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwxMDQsMTAxLDExMCwKKyAgICAzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNTAsCisgICAgMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsCisgICAgOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LDEwNCwxMDEsMTEwLAorICAgIDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDcwLAorICAgIDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsCisgICAgMiwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNCwwLDAsOTUsMywKKyAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSw0LDAsMTAwLDAsMCwxMjQsMCwwLAorICAgIDk1LDYsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNywwLDEwMCwxLDAsMTI0LAorICAgIDAsMCw5NSw4LDAsMTAwLDAsMCw4Myw0MCwyLDAsMCwwLDc4LDEwNSwKKyAgICAwLDAsMCwwLDQwLDksMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsMTMsMCwwLDAsOTcsMTA4LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTcsNCwwLDAsMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsNiwwLDAsMCwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNyw1LDAsCisgICAgMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsCisgICAgMTE2LDExNyw3LDAsMCwwLDExOSw5NywxMDUsMTE2LDEwMSwxMTQsMTE1LDQwLDIsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLAorICAgIDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE4MSwwLDAsCisgICAgMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwxLAorICAgIDksMSwxMTcsMjAsMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw4NywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw1OSwwLDExNiwzLDAsCisgICAgMTA2LDQsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwKKyAgICAwLDAsMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LAorICAgIDIsMCwxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwKKyAgICAwLDEwMCwyLDAsODMsMTEzLDI0LDAsMTAwLDAsMCw4Myw0MCwzLDAsMCwKKyAgICAwLDc4LDcwLDg0LDQwLDgsMCwwLDAsMTE3LDcsMCwwLDAsOTUsMTE2LAorICAgIDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsOSwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDUsMTAwLAorICAgIDEwMSwxMTAsMTE2LDExNyw1LDAsMCwwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDEyLDAsCisgICAgMCwwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDMsCisgICAgMCwwLDAsMTAzLDEwMSwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LAorICAgIDUsMCwwLDAsNzAsOTcsMTA4LDExNSwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LAorICAgIDExNywxMDEsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDIsMCwwLDAsMTA5LDEwMSwxMTcsMywwLDAsMCwxMTYsMTA1LDEwMCwxMTcsCisgICAgNCwwLDAsMCwxMDgsMTExLDk5LDEwNyw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCwxMDQsOTcsMTE1LDk1LDEwMCwxMDEsOTcsCisgICAgMTAwLDEwOCwxMTEsOTksMTA3LDE4OSwwLDAsMCwxMTUsMTgsMCwwLDAsMCwyLAorICAgIDEyLDEsOSwxLDMsMSwxNSwxLDEyLDEsNCwxLDksMSwxMiwxLAorICAgIDExNywyNCwwLDAsMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsCisgICAgNDYsMTA0LDk3LDExNSw5NSwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNyw5OSwxLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwxNywwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLAorICAgIDEyNSwxLDAsMTI0LDAsMCwxMTYsMiwwLDEyNCwxLDAsNjAsMTIyLDE3NywwLAorICAgIDEyMCwxNzAsMCwxMjQsMCwwLDEwNiwzLDAsMTQzLDEzMCwwLDEsMTI0LDAsMCwKKyAgICAxMDYsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTUsNjgsMCwxMjQsMCwwLDEwNiwKKyAgICA1LDAsMTI0LDEsMCwxMDcsMiwwLDExNCw5NiwwLDEyNCwxLDAsMTI0LDAsCisgICAgMCw5NSw1LDAsMTI0LDAsMCw0LDEwNiw0LDAsMTAwLDIsMCw1NSwyLAorICAgIDk1LDQsMCwxMDAsNSwwLDgzLDEyNCwwLDAsMTA2LDcsMCwxMzEsMCwwLAorICAgIDExNCwxMjcsMCwxMTYsOCwwLDEwMCwzLDAsMTI0LDAsMCwyMiwxMzEsMSwwLAorICAgIDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw5LDAsMTA2LDEwLDAsMTAwLAorICAgIDYsMCwxMzEsMSwwLDExNCwxNjMsMCwxMjQsMCwwLDQsMTA2LDEyLDAsMTAwLAorICAgIDIsMCw1NSwyLDk1LDEyLDAsMTEwLDAsMCw4NywxMDAsNCwwLDgxLDg4LAorICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTAsMCwxMzEsMCwwLDEsMTI0LDAsMCwKKyAgICAxMDYsOSwwLDEwNiwxMywwLDEzMSwwLDAsMSwxMTMsMjgsMCw4NywxMDAsNCwKKyAgICAwLDExNiwyLDAsMTI0LDEsMCw2MSw4OCwxMDAsNCwwLDgzLDQwLDcsMCwKKyAgICAwLDAsMTE3LDE4NSwwLDAsMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDQ2LDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMTIsCisgICAgMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksCisgICAgMTA3LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwxMDEsMTAwLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk3LDMyLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSwKKyAgICA5OSwxMDcsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMTE5LDEwNSwxMTUsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwNSwKKyAgICAxMTUsMzIsOTcsMTA4LDExOSw5NywxMjEsMTE1LDMyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTAwLDMyLDk3LDExMCwxMDAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTQsMTAxLAorICAgIDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDEwNSwwLDAsMCwwLDEwNSwxLDAsMCwwLDExNywyMywwLDAsMCwxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3OCw4NCw3MCw0MCwxNCwwLDAsMCwxMTcsNywKKyAgICAwLDAsMCw5NSwxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDExNyw5LDAsMCwwLDEwMywKKyAgICAxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLDExMCwxMTYsMTE3LDEyLDAsMCwwLDk1LDk4LDEwOCwKKyAgICAxMTEsOTksMTA3LDEwNSwxMTAsMTAzLDk1LDExMSwxMTAsMTE3LDQsMCwwLDAsMTA4LDExMSwKKyAgICA5OSwxMDcsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDExNyw1LDAsMCwKKyAgICAwLDExMSwxMTksMTEwLDEwMSwxMTQsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LAorICAgIDEyLDAsMCwwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDExOSw5NywxMDcsMTAxLDExNywxMTIsMTE3LDcsCisgICAgMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsNSwwLDAsMCw3MCwKKyAgICA5NywxMDgsMTE1LDEwMSwxMTcsNywwLDAsMCwxMTksOTcsMTA1LDExNiwxMDEsMTE0LDExNSwKKyAgICAxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MCwyLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMywwLDAsMCwxMTYsCisgICAgMTA1LDEwMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LAorICAgIDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMjAxLDAsMCwwLDExNSwzMiwKKyAgICAwLDAsMCwwLDYsMTIsMSwxMCwxLDMsMSwzLDEsMTAsMSwzMCwKKyAgICAxLDksMSwxNSwxLDQsMSwxMiwxLDE5LDEsMTgsMSwyNCwyLDEzLAorICAgIDEsMjAsMiwxMTcsMTksMCwwLDAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwKKyAgICAxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTAsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDE2NSwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDIsMCwxNDMsMTM4LDAsMSwxMjQsMCwwLDEwNiwzLAorICAgIDAsMTI0LDEsMCwxMDcsMywwLDExNCw1MiwwLDExNiw0LDAsMTAwLDEsMCwKKyAgICAxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMCwwLDEwNiw1LDAsMTAwLAorICAgIDIsMCwxMDcsNCwwLDExNSw3MywwLDExNiw2LDAsMTMwLDEsMCwxMjQsMCwKKyAgICAwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsOTUsNSwwLDEyNCwwLDAsCisgICAgMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE1NSwwLDEwMCwwLDAsMTI0LAorICAgIDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsOCwwLDExNCwxNTUsMCwxMjQsMCwKKyAgICAwLDQsMTA2LDgsMCwxMDAsMywwLDU2LDIsOTUsOCwwLDEyNCwwLDAsCisgICAgMTA2LDksMCwxMDYsMTAsMCwxMzEsMCwwLDEsMTEzLDE1NSwwLDExMCwwLDAsCisgICAgODcsMTAwLDAsMCw4MSw4OCwxMDAsMCwwLDgzLDQwLDQsMCwwLDAsNzgsCisgICAgMTE3LDMxLDAsMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDEwNSwwLDAsMCwwLDEwNSwxLDAsMCwwLDQwLDExLAorICAgIDAsMCwwLDExNyw3LDAsMCwwLDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LAorICAgIDksMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTA1LDEwMCwxMDEsMTEwLDExNiwxMTcsNCwwLAorICAgIDAsMCwxMDgsMTExLDk5LDEwNywxMTcsNSwwLDAsMCwxMTEsMTE5LDExMCwxMDEsMTE0LAorICAgIDExNywxMiwwLDAsMCw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwKKyAgICAxMTQsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDExNywxNCwwLDAsMCwKKyAgICA2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNCwKKyAgICAwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNywwLDAsMCwxMTksOTcsMTA1LDExNiwKKyAgICAxMDEsMTE0LDExNSwxMTcsNiwwLDAsMCwxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNyw3LAorICAgIDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywzLDAsMCwwLDExNiwxMDUsMTAwLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLAorICAgIDAsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMjI2LDAsMCwwLDExNSwyMiwwLDAsCisgICAgMCwwLDEsMTIsMSwxMCwxLDE1LDEsMTUsMSwyMSwxLDE1LDEsMTUsCisgICAgMSw5LDEsOSwxLDE1LDEsMTE3LDE5LDAsMCwwLDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMDAsMSwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMDIsMiwwLDIyLDgzLAorICAgIDQwLDIsMCwwLDAsNzgsMTE3LDIxLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0MCwzNywxMTQsNDEsMzIsOTcsMTE2LDMyLDM3LDEwMCwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywyLAorICAgIDAsMCwwLDEwNSwxMDAsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjM5LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMSwxMTcsMjAsMCwwLDAsOTUsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSwKKyAgICA3OCw0MCw5LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksCisgICAgMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDEyLDAsMCwKKyAgICAwLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMTE3LDcsMCwKKyAgICAwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLAorICAgIDEwOCwxMDEsOTcsMTE1LDEwMSwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTUsOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSwKKyAgICA5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwKKyAgICAxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKKyAgICAxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNywxNzUsMCwwLDAsMTE1LDEyLDAsMCwwLDE2LDQsNiwyLDEyLAorICAgIDgsMTIsMTIsMTIsMjUsMTIsMTMsMTE3LDExLDAsMCwwLDk1LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwwLDExNSw3NCwwLDAsCisgICAgMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwKKyAgICAwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLAorICAgIDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLAorICAgIDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LDAsMTAwLDksCisgICAgMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCw4Myw0MCwxMSwwLDAsMCwKKyAgICAxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzYsMTExLDk5LDEwNywxMTcsODYsMCwwLDAsNjUsMzIsMTE1LDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwKKyAgICAxMTMsMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwKKyAgICAxMTYsMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMTExLDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LAorICAgIDExNCwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0NiwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsCisgICAgOTUsMCwwLDEwMCwxLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4MywKKyAgICA0MCwyLDAsMCwwLDc4LDEwNSwwLDAsMCwwLDQwLDIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDUsMCwwLDAsOTksMTExLAorICAgIDExNywxMTAsMTE2LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsCisgICAgMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsCisgICAgMTE2LDk1LDk1LDI0NywwLDAsMCwxMTUsNCwwLDAsMCwwLDEsOSwxLAorICAgIDExNywyNSwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxOSwwLDAsMCwxMjQsMCwwLDQsMTA2LDAsMCwxMDAsCisgICAgMSwwLDU1LDIsOTUsMCwwLDEwMCwyLDAsODMsNDAsMywwLDAsMCwKKyAgICA3OCwxMDUsMSwwLDAsMCw4NCw0MCwyLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDk5LDExMSwxMTcsMTEwLDExNiwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSw0MCwKKyAgICAxLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw3LDAsMCwwLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMjUxLDAsMCwwLDExNSw0LDAsMCwwLDAsMSwKKyAgICAxNSwxLDExNywyNCwwLDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNDksMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKKyAgICAxLDAsMTA3LDIsMCwxMTQsMzAsMCwxMTYsMSwwLDEwMCwyLDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTI0LDAsMCw0LDEwNiwwLDAsMTAwLDMsCisgICAgMCw1NiwyLDk1LDAsMCwxMDAsMCwwLDgzLDQwLDQsMCwwLDAsNzgsCisgICAgMTA1LDAsMCwwLDAsMTE3LDMxLDAsMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwKKyAgICAzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDEwNSwxLDAsMCwwLDQwLDIsCisgICAgMCwwLDAsMTE3LDUsMCwwLDAsOTksMTExLDExNywxMTAsMTE2LDExNywxMiwwLAorICAgIDAsMCw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDAsMSwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsNDAsMCwwLDAsCisgICAgMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsCisgICAgMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwKKyAgICAxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwKKyAgICAxMDEsOTcsMTE1LDEwMSwyNTUsMCwwLDAsMTE1LDYsMCwwLDAsMCwxLDE1LAorICAgIDEsMTUsMSwxMTcsMjQsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwKKyAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCw0LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSwyMywwLDAsMCwxMDAsMSwwLDEyNCwwLDAsCisgICAgMTA2LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMDIsMiwwLDIyLAorICAgIDgzLDQwLDIsMCwwLDAsNzgsMTE3LDI2LDAsMCwwLDk1LDY4LDExNywxMDksCisgICAgMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMzcsMTE0LDQxLAorICAgIDMyLDk3LDExNiwzMiwzNywxMDAsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsMiwwLDAsMCwxMDUsMTAwLDQwLDEsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LAorICAgIDk1LDk1LDQsMSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyNSwwLAorICAgIDAsMCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsCisgICAgOTksMTA3LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MCw4LDAsMCwKKyAgICAwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwKKyAgICAwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwKKyAgICAwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsCisgICAgMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsOCwwLDAsMCw5NSwKKyAgICA5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDcsMCwwLDAsOTcsOTksMTEzLDExNywKKyAgICAxMDUsMTE0LDEwMSwxMTcsNywwLDAsMCwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNDAsMSwwLDAsCisgICAgMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwKKyAgICAwLDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMjQzLDAsMCwwLDExNSwxMCwwLDAsMCwxNiwyLDYsMiwxMiw0LAorICAgIDEyLDQsMTIsNSwxMTcsMTYsMCwwLDAsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwxMSwwLDAsMCwzLDAsMCwwLDExNSwxNDIsCisgICAgMCwwLDAsMTAwLDMsMCwxMjUsMSwwLDEyMSwxNywwLDExNiwxLDAsMTM2LAorICAgIDAsMCwyNSwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKKyAgICAwLDEwNywxMCwwLDExNCw0MywwLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LAorICAgIDEsMCwxMDAsMywwLDEwNyw4LDAsMTE0LDEzOCwwLDExNiwzLDAsMTAwLDMsCisgICAgMCwxMDcsOCwwLDExNCw4MywwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLAorICAgIDEyNSwxLDAsMTEwLDEyLDAsMTE2LDUsMCwxMzYsMCwwLDEzMSwxLDAsMTI1LAorICAgIDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAorICAgIDAsMTI1LDIsMCwxMTYsNiwwLDEwNiw3LDAsMTI0LDEsMCwxMjQsMiwwLAorICAgIDEzMSwyLDAsMTE2LDEsMCwxMzYsMCwwLDYwLDExMCwwLDAsMTI0LDEsMCwKKyAgICA4Myw0MCw0LDAsMCwwLDExNywxMDksMCwwLDAsNzEsMTAxLDExNiwzMiwxMTEsCisgICAgMTE0LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsCisgICAgMTA1LDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTExLDExMCwKKyAgICAxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsCisgICAgMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksCisgICAgMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMSwwLDAsMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMSwwLAorICAgIDAsMCwxMTYsMCwwLDEzNiwwLDAsNjEsMTAwLDAsMCw4Myw0MCwxLDAsCisgICAgMCwwLDc4LDQwLDEsMCwwLDAsMTE3LDEzLDAsMCwwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNSw0MCwxLDAsMCwwLDExNywKKyAgICAxLDAsMCwwLDk1LDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLAorICAgIDk3LDEwOSwxMDEsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIsMCwwLDAsOTksCisgICAgOTgsMjQsMSwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywyOCwwLDAsCisgICAgMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LAorICAgIDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNzgsNDAsOCwKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTMsMCwwLAorICAgIDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDExNyw4LAorICAgIDAsMCwwLDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLAorICAgIDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTE3LDE2LDAsMCwwLDk1LDY4LDExNywxMDksCisgICAgMTA5LDEyMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsMTE3LDExLDAsMCwKKyAgICAwLDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMTcsOCwwLDAsCisgICAgMCw5NSwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiwxMTcsMywwLDAsMCwxMTQsMTAxLAorICAgIDEwMiw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywKKyAgICA0LDAsMCwwLDEwOCwxMTEsOTksMTA3LDExNywyLDAsMCwwLDk5LDk4LDQwLAorICAgIDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsCisgICAgMTA5LDEwMSwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDEwLDEsMCwwLDExNSwyNCwwLAorICAgIDAsMCwwLDQsNiwxLDMsMSwxNywxLDEzLDEsNSwxLDEyLDEsCisgICAgMTIsMSwxNSwyLDEyLDEsMTgsMiwyNSwxLDExNywxNiwwLDAsMCw5NSwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMSwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsNzEsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwKKyAgICAxLDAsMTI1LDEsMCwxMTYsMSwwLDEwNiwyLDAsMTMxLDAsMCwxLDEyMSwKKyAgICAxNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMCwwLDEsODcsMTEwLDE4LDAsCisgICAgNCwxMTYsNCwwLDEwNywxMCwwLDExNCw1NiwwLDEsMSwxLDg5LDExMCwxMSwKKyAgICAwLDg4LDEyNCwxLDAsMTA2LDUsMCwxMzEsMCwwLDEsMTAwLDEsMCw4MywKKyAgICA0MCwyLDAsMCwwLDExNywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDAsNiwwLDAsMCwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDQsMCwwLDAsOTUsCisgICAgMTA1LDEwOSwxMTIsMTE3LDEyLDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LAorICAgIDEwOCwxMTEsOTksMTA3LDExNyw3LDAsMCwwLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsCisgICAgMTE3LDE0LDAsMCwwLDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLAorICAgIDIsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwKKyAgICAwLDAsMTA4LDExMSw5OSwxMDcsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsCisgICAgMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyOSwxLDAsMCwxMTUsMTQsCisgICAgMCwwLDAsMCw3LDEyLDEsMTAsMSwzLDEsMTQsMSwxMywzLDUsCisgICAgMiwxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsMTExLAorICAgIDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDc5LDAsMCwwLDExNSwxMywKKyAgICAwLDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxNDIsMCwwLDgzLAorICAgIDQwLDEsMCwwLDAsMTE3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLAorICAgIDExNSwzMiwxMDUsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsCisgICAgMTA4LDEwOCwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsCisgICAgMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsCisgICAgMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsCisgICAgMzIsOTcsMzIsOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwKKyAgICAxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LAorICAgIDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsCisgICAgOTcsMzIsMTEwLDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsCisgICAgMzIsMTEyLDEwOCw5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCwKKyAgICA5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsCisgICAgMzIsMTA1LDExMCwxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsCisgICAgMTEwLDExNiwxMDEsMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDEwLDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDQxLDEwLDMyLDMyLDMyLDMyLDQwLDAsMCwwLDAsNDAsMywwLAorICAgIDAsMCwxMTcsMSwwLDAsMCwxMDIsMTE3LDQsMCwwLDAsOTcsMTE0LDEwMywKKyAgICAxMTUsMTE3LDQsMCwwLDAsMTA3LDExOSwxMDAsMTE1LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDQ5LDEsMCwwLDExNSwyLDAsMCwwLDAsOCwxMTcsCisgICAgMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLAorICAgIDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTA1LDE1OCwxMiwKKyAgICAwLDAsMTE3LDEsMCwwLDAsMTMsMTA1LDE2LDAsMCwwLDExNywxLDAsCisgICAgMCwwLDEwLDEwNSwyNCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCwzLDAsMCwwLDk5LDAsMCwwLDExNSwyOSwwLAorICAgIDAsMCwxMjQsMCwwLDkzLDE5LDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLAorICAgIDAsNjMsMTAwLDAsMCw2NCw4NiwxLDExMywzLDAsMTAwLDEsMCw4Myw0MCwKKyAgICAyLDAsMCwwLDEwNSwyNTUsMCwwLDAsNzgsNDAsMSwwLDAsMCwxMTcsCisgICAgMTcsMCwwLDAsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsCisgICAgODUsNzcsNjYsNjksODIsNDAsMiwwLDAsMCwxMTcsMiwwLDAsMCw0NiwKKyAgICA0OCwxMTcsMSwwLDAsMCwxMTAsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsCisgICAgNjIsMTUwLDEsMCwwLDExNSwyLDAsMCwwLDYsMCwxMTcsOSwwLDAsCisgICAgMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTA1LDAsMCwwLDAsMTA1LAorICAgIDI1LDAsMCwwLDEwNSw4LDAsMCwwLDExNywxMSwwLDAsMCw5NSw5NSwKKyAgICAxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTUsOTUsMTE3LDMsMCwwLDAsNDYsMTEyLAorICAgIDEyMSwxMTcsNCwwLDAsMCw0NiwxMTIsMTIxLDk5LDExNyw0LDAsMCwwLDQ2LAorICAgIDExMiwxMjEsMTExLDk5LDIsMCwwLDAsMCwwLDAsMCwxMSwwLDAsMCwKKyAgICA2LDAsMCwwLDY3LDAsMCwwLDExNSwxODAsMCwwLDAsMTI0LDEsMCwKKyAgICAxMDAsNSwwLDEwNyw4LDAsMTE0LDI1LDAsMTE2LDEsMCwxMDYsMiwwLDEwNiwKKyAgICAzLDAsMTIsMTEwLDMsMCwxMjQsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTQsCisgICAgNDYsMCwxMTYsNCwwLDEyNSwzLDAsMTEwLDYsMCwxMTYsNSwwLDEyNSwzLAorICAgIDAsMTE2LDYsMCwxMjQsMCwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsCisgICAgMTI1LDUsMCwxMjQsNSwwLDEwNiw3LDAsMTAwLDEsMCwxMzEsMSwwLDkyLAorICAgIDMsMCwxMjUsNiwwLDEyNSw3LDAsMTI1LDgsMCwxMTYsMSwwLDEwNiw4LAorICAgIDAsMTA2LDksMCwxMjUsOSwwLDEyNCw5LDAsMTAwLDUsMCwxMDcsOCwwLAorICAgIDExNCwxMzMsMCwxMTYsMTAsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCisgICAgMCwwLDEwMCwzLDAsMTA2LDExLDAsMTI0LDYsMCwxMjQsNywwLDEyNCw5LAorICAgIDAsMTI0LDMsMCwxMDAsNCwwLDI1LDEwMyw0LDAsMTMxLDEsMCwxMjUsMTAsCisgICAgMCwxMTYsMTIsMCwxMjQsNCwwLDExNiwxMywwLDEyNCwxMCwwLDEzMSwzLDAsCisgICAgODMsNDAsNiwwLDAsMCwxMTcsMjQ0LDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LAorICAgIDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwxMTUsMzIsCisgICAgNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLAorICAgIDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LAorICAgIDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsCisgICAgMzIsMzIsNDYsMTEyLDEyMSw5OSw0Nyw0NiwxMTIsMTIxLDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwKKyAgICAxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LAorICAgIDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTgsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTE3LDExMCwKKyAgICAxMDgsMTAxLDExNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsMTE1LDQ2LDExMSwKKyAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExMCw0NSwxMjIsCisgICAgMTAxLDExNCwxMTEsNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDEwNSwxMTYsMzIsMTE5LDEwNSwxMDgsCisgICAgMTA4LDMyLDk4LDEwMSwzMiw0NiwxMTIsMTIxLDExMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsMTA1LDExNiwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDk3LAorICAgIDMyLDk4LDExMSwxMTEsMTA4LDEwMSw5NywxMTAsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTE1LDMyLAorICAgIDExNywxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDEwLDMyLDMyLDMyLDMyLDExMiwxMDgsOTcsOTksCisgICAgMTAxLDMyLDExMSwxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTAyLDEwOCw5NywxMDMsMTE1LDQ2LDExMSwKKyAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLAorICAgIDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKKyAgICAxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwKKyAgICAzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwKKyAgICAxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTcsCisgICAgMSwwLDAsMCw0NiwxMTcsMzYsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LAorICAgIDEwNCwxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDExNywwLAorICAgIDAsMCwwLDEwNSwwLDAsMCwwLDc4LDQwLDE0LDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywKKyAgICA1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsOCwwLDAsMCwxMTEsMTEyLAorICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsMTAxLDExNywyMywwLDAsMCw2OCw2OSw2Niw4NSw3MSwKKyAgICA5NSw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCwKKyAgICA2OSw4MywxMTcsMjcsMCwwLDAsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsCisgICAgOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsCisgICAgNjksODMsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LAorICAgIDEwNSwxMTYsMTE3LDksMCwwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTcsMTQsMCwwLDAsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAorICAgIDEwNSwxMTEsMTEwLDExNyw5LDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE2LDk3LAorICAgIDEwMywxMTcsMTksMCwwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDEwNiwxMTEsCisgICAgMTA1LDExMCwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsCisgICAgMTEwLDExNyw4LDAsMCwwLDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDQwLDExLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxNCwwLDAsCisgICAgMCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwxMTcsCisgICAgNSwwLDAsMCwxMDAsMTAxLDk4LDExNywxMDMsMTE3LDgsMCwwLDAsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsNCwwLDAsMCwxMDQsMTAxLDk3LDEwMCwxMTcsCisgICAgNCwwLDAsMCwxMTYsOTcsMTA1LDEwOCwxMTcsMTMsMCwwLDAsOTgsOTcsMTE1LAorICAgIDEwMSw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDMsMCwwLDAsMTE1LAorICAgIDEwMSwxMTIsMTE3LDEsMCwwLDAsOTUsMTE3LDMsMCwwLDAsMTE2LDk3LDEwMywKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTksOTcsCisgICAgOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxNTksCisgICAgMSwwLDAsMTE1LDIyLDAsMCwwLDAsMTMsMzEsMSw2LDEsOSwyLAorICAgIDYsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDE1LDEsMzEsMSwxMTcsMTcsCisgICAgMCwwLDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsCisgICAgMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwxOTMsMCwwLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNiwyLDAsMTAwLDcsMCwxMDcsOCwwLDExNCwzMywwLAorICAgIDExNiw0LDAsMTAwLDEsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMTYsCisgICAgNSwwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwKKyAgICAwLDExNiw1LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLAorICAgIDEyNSwzLDAsMTI0LDMsMCwxMTYsNiwwLDEwNywzLDAsMTE0LDEwOCwwLDExNiwKKyAgICA3LDAsMTAwLDIsMCwxMDYsOCwwLDExNiw2LDAsMTI0LDAsMCwxMzEsMiwKKyAgICAwLDEzMSwxLDAsMTMwLDEsMCwxMTAsMCwwLDEyNCwyLDAsMTA2LDksMCwKKyAgICAxMDAsMywwLDEzMSwxLDAsMTAwLDQsMCwxMDcsMywwLDExNCwxNTMsMCwxMTYsCisgICAgNywwLDEwMCw1LDAsMTA2LDgsMCwxMjQsMiwwLDEzMSwxLDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTI0LDIsMCwxMDYsMTAsMCwxMDAsMywwLAorICAgIDEzMSwxLDAsMTAwLDYsMCwyNSwxMjUsNCwwLDExNiwxMSwwLDEyNCwxLDAsCisgICAgMTI0LDQsMCwxMTYsMTIsMCwxMDAsNiwwLDI1LDIzLDEzMSwyLDAsODMsNDAsCisgICAgOCwwLDAsMCwxMTcsMTIxLDEsMCwwLDcxLDEwNSwxMTgsMTAxLDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LDMyLDQ2LDExMiwxMjEsCisgICAgOTksNDYsNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsCisgICAgMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsCisgICAgMzIsMTA1LDExNiwxMTUsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDk5LDQ3LDQ2LDExMiwxMjEsCisgICAgMTExLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsCisgICAgMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsCisgICAgMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCisgICAgOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OSwxMTEsCisgICAgMTE0LDExNCwxMDEsMTE1LDExMiwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDQ2LDExMiwxMjEsOTksNDcsNDYsMTEyLDEyMSwxMTEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDMyLAorICAgIDMyLDczLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDAsMTExLDEwMSwxMTUsMTAsMzIsMzIsCisgICAgMzIsMzIsMTEwLDExMSwxMTYsMzIsOTksMTExLDExMCwxMDIsMTExLDExNCwxMDksMzIsMTE2LDExMSwKKyAgICAzMiw4MCw2OSw4MCwzMiw1MSw0OSw1Miw1NSwzMiwxMDIsMTExLDExNCwxMDksOTcsMTE2LAorICAgIDQ0LDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMTksMTA1LDEwOCwKKyAgICAxMDgsMzIsOTgsMTAxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMzIsNzMsMTAyLDEwLAorICAgIDMyLDMyLDMyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzgsMTExLAorICAgIDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTcsMzYsMCwwLDAsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsMTA4LDEwMSwKKyAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwxMDEsOTUsCisgICAgMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDExNywzNywwLDAsMCwKKyAgICAxMjMsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDExMSwxMTYsMTE2LDExMSwxMDksNDUsMTA4LDEwMSwKKyAgICAxMTgsMTAxLDEwOCwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwNSwxMTAsCisgICAgMzIsMTIzLDMzLDExNCwxMjUsMTE3LDEsMCwwLDAsNDYsMTA1LDIsMCwwLDAsCisgICAgMTE3LDI4LDAsMCwwLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLAorICAgIDEwOCwxMjEsMzIsNTAsMzIsMTAwLDExMSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsMTA1LDAsMCwwLDAsNzgsNDAsMTMsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTE1LDEyMSwxMTUsMTE3LDE0LDAsMCwwLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwKKyAgICAxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwxMTcsOSwwLDAsMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExNiw5NywxMDMsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDE5LAorICAgIDAsMCwwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsCisgICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw4MCw4OSw2Nyw2NSwKKyAgICA2Nyw3Miw2OSwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDUsMCwKKyAgICAwLDAsOTksMTExLDExNywxMTAsMTE2LDExNyw5LDAsMCwwLDExMiw5NywxMTQsMTE2LAorICAgIDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDEwLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LAorICAgIDEwNiwxMTEsMTA1LDExMCwxMTcsMTUsMCwwLDAsODMsNzksODUsODIsNjcsNjksOTUsCisgICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDAsNSwwLDAsMCwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDQsMTAxLDk3LDEwMCwxMTcsCisgICAgMTYsMCwwLDAsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMTE3LDEzLDAsMCwwLDk4LDk3LDExNSwxMDEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywKKyAgICAxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LAorICAgIDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTg2LDEsMCwwLDExNSwyNCwwLDAsMCwwLDksMTgsCisgICAgMSwxNSwxLDE4LDEsMTgsMSwxMiwxLDksMSwxOCwxLDIxLDEsOSwKKyAgICAxLDE1LDEsMTksMSwxMTcsMTcsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsNSwwLDAsMCwxMywwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMTY0LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsMSwwLDEwMCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMjIsMCwxMDAsNiwwLDgzLDEyNCwwLDAsMTA2LDIsCisgICAgMCwxMDAsMiwwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwKKyAgICAxMjUsMywwLDEyNCwxLDAsMTIsMTE1LDgxLDAsMTI0LDMsMCwxMDYsMywwLAorICAgIDEzMSwwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMywyLDAsMjUsMTAwLDUsMCwKKyAgICAxMDcsMywwLDExNCw4NSwwLDEyNCwwLDAsODMsMTIxLDE2LDAsMTE2LDQsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCw4NywxMTAsNDAsMCw0LDExNiw1LAorICAgIDAsMTE2LDYsMCwxMDIsMiwwLDEwNywxMCwwLDExNCwxNDMsMCwxLDEsMSwKKyAgICAxMTYsNywwLDEwMCw5LDAsMTAwLDYsMCwxMzMsMiwwLDI1LDEyNSw0LDAsCisgICAgODksMTEwLDEsMCw4OCwxMTYsOCwwLDExNiw5LDAsMTMxLDEsMCwxMTQsMTYwLAorICAgIDAsMTI0LDQsMCw4MywxMjQsMCwwLDgzLDQwLDEwLDAsMCwwLDExNywxODgsCisgICAgMCwwLDAsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLAorICAgIDExNiwxMTEsMzIsOTcsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwKKyAgICAzMiw0MCwxMDUsMTAyLDMyLDExMiwxMTEsMTE1LDExNSwxMDUsOTgsMTA4LDEwMSw0MSw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LAorICAgIDExMSwxMTAsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMzIsMTEyLDExNywxMTQsMTAxLDEwOCwxMjEsCisgICAgMzIsMTAyLDExMSwxMTQsMzIsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDExNSw0NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwNSwxMDgsMTA1LDExNiwxMjEsMzIsMTAyLDExMSwxMTQsCisgICAgMTAsMzIsMzIsMzIsMzIsODAsMTIxLDczLDEwOSwxMTIsMTExLDExNCwxMTYsOTUsNjksMTIwLAorICAgIDEwMSw5OSw2NywxMTEsMTAwLDEwMSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDg3LDEwNSwxMTYsMTA0LAorICAgIDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSw0MCw0MSwzMiwxMDUsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDY3LDMyLDY1LDgwLDczLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDEwNSwKKyAgICAwLDAsMCwwLDExNywxLDAsMCwwLDQ2LDEwNSwzLDAsMCwwLDEwNSwKKyAgICAxLDAsMCwwLDExNywzLDAsMCwwLDQ2LDExMiwxMjEsNzgsMTA1LDI1MywyNTUsCisgICAgMjU1LDI1NSwxMDUsMjU1LDI1NSwyNTUsMjU1LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsMTAsMCwwLAorICAgIDAsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LDQsMCwwLDAsNzgsMTExLAorICAgIDExMCwxMDEsMTE3LDksMCwwLDAsMTE0LDExMiw5NywxMTQsMTA1LDExNiwxMDUsMTExLDExMCwKKyAgICAxMTcsNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDExNywxNywwLDAsMCwxMTUsCisgICAgMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKKyAgICAxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDEwLDAsMCwwLDg2LDk3LDEwOCwKKyAgICAxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTIsMCwwLDAsOTgsMTIxLDExNiw5OSwKKyAgICAxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsMTE3LDEyLDAsMCwwLDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDQwLDUsMCwwLDAsMTE3LAorICAgIDEzLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDExNyw0LDAsMCwwLDExNCwxMDEsMTE1LDExNiwxMTcsMSwwLDAsMCw5NSwKKyAgICAxMTcsOSwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMTcsMTEsCisgICAgMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCw5NSwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LDEwMSwyMDksMSwKKyAgICAwLDAsMTE1LDIwLDAsMCwwLDAsNywxOCwxLDQsMSwyNCwxLDM1LAorICAgIDEsNCwyLDMsMSwxNiwxLDE5LDEsMjEsMiwxMTcsMTUsMCwwLDAsCisgICAgOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMDIsMTA1LDEwOCwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwKKyAgICA3MSwwLDAsMCwxMTUsNzUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwKKyAgICAyLDAsMTE0LDcxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsCisgICAgMCwxMTUsNDAsMCwxMDAsMywwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTAsMCwKKyAgICAwLDExNiw0LDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTQwLDAsMCwKKyAgICAxMDAsNCwwLDExNiwwLDAsMTA2LDYsMCwxMzEsMSwxLDEsMTEwLDAsMCwKKyAgICAxMDAsNSwwLDgzLDQwLDcsMCwwLDAsMTE3LDYxLDAsMCwwLDgwLDExNCwKKyAgICAxMDUsMTEwLDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LAorICAgIDgwLDg5LDg0LDcyLDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsCisgICAgMzIsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwxMTcsMSwwLDAsMCwKKyAgICAzNSwxMTcsNywwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTcsMiwwLAorICAgIDAsMCwzNSwzMiwxMTcsNCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsNzgsNDAsMiwKKyAgICAwLDAsMCwxMTcsMSwwLDAsMCwzNSwxMTcsNywwLDAsMCwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwzMiw0MCw3LDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw1LDAsMCwwLDEwMiwxMDgsOTcsMTAzLDExNSwxMTcsNywwLDAsCisgICAgMCwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSwxMTcsMTAsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMTE3LDUsMCwwLDAsMTEyLDExNCwxMDUsMTEwLAorICAgIDExNiwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNyw2LDAsMCwKKyAgICAwLDExNSwxMTYsMTAwLDEwMSwxMTQsMTE0LDQwLDIsMCwwLDAsMTE3LDcsMCwwLAorICAgIDAsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDQsMCwwLDAsOTcsMTE0LDEwMywKKyAgICAxMTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTYsMCwKKyAgICAwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LAorICAgIDEwMywxMDEsMjMwLDEsMCwwLDExNSw4LDAsMCwwLDAsMiwxMiwxLDE1LAorICAgIDEsMTMsMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsCisgICAgOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwzNSwwLAorICAgIDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLAorICAgIDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLAorICAgIDEsMTI0LDEsMCw4Myw0MCwzLDAsMCwwLDExNywzOSwwLDAsMCw4MywKKyAgICAxMDEsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTEsCisgICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTksMCwwLDAsMCwwLDAsMCwwLDMsCisgICAgMCwwLDAsNCwwLDAsMCwzMSwwLDAsMCwxMTUsMTAxLDAsMCwwLAorICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDE0MiwwLDAsMTI1LDIsMCwxMTYsCisgICAgMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCisgICAgMCwxMDcsOCwwLDExNCw5NywwLDEyNCwyLDAsMTA2LDIsMCwxMjQsMiwwLAorICAgIDk1LDMsMCwxMTYsNCwwLDEyNCwyLDAsMTAwLDIsMCwxMzEsMiwwLDExNSwKKyAgICA5NywwLDEyNCwyLDAsMTA2LDMsMCwxMDYsNSwwLDEwMCwzLDAsMTMxLDEsCisgICAgMCwxMDAsNCwwLDI1LDEyNCwyLDAsOTUsMywwLDExMyw5NywwLDExMCwwLAorICAgIDAsMTI0LDIsMCw4Myw0MCw1LDAsMCwwLDc4LDExNywxMSwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDEsMCwwLDAsNDYsMTA1LDAsCisgICAgMCwwLDAsNDAsNiwwLDAsMCwxMTcsNywwLDAsMCwxMDMsMTAxLDExNiwKKyAgICA5NywxMTYsMTE2LDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsOCwwLAorICAgIDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNyw3LDAsMCwwLDEwNCwKKyAgICA5NywxMTUsOTcsMTE2LDExNiwxMTQsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwKKyAgICAxMDUsMTE2LDEwNSwxMTEsMTEwLDQwLDMsMCwwLDAsMTE3LDQsMCwwLDAsOTcsCisgICAgMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTcsNiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywzLAorICAgIDAsMCwwLDEwMiwxMjAsMTEwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxOSwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsMTE5LDExNCwKKyAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjQwLDEsMCwwLDExNSwxMiwwLDAsMCwwLDEsCisgICAgMTUsMSwyNCwxLDEyLDEsMTUsMSwzMSwxLDExNyw0MCwwLDAsMCwxMTUsCisgICAgMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDYyLDQ2LDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSwKKyAgICAxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwxLDAsMCwwLDExNyw1LDAsMCwKKyAgICAwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgMTAyLDEyMCwxMTAsMTE3LDE5LDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwwLDAsMCwwLAorICAgIDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDI5LDAsCisgICAgMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywKKyAgICAxMSwwLDAsMCwxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjM4LAorICAgIDEsMCwwLDExNSw2LDAsMCwwLDAsMiwxOCw3LDEzLDEsMTE3LDExLAorICAgIDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwKKyAgICAwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwKKyAgICAxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQwLDMsMCwwLDAsCisgICAgMTE3LDM4LDAsMCwwLDgzLDEwMSwxMTYsMzIsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw5NSw5NSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCwzMSwwLDAsMCwKKyAgICAxMTUsNDksMCwwLDAsMTM2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsCisgICAgMCwxNDIsMSwwLDEyNSwzLDAsMTE2LDAsMCwxMjQsMywwLDEwMCwxLDAsCisgICAgMTMxLDIsMCwxMTUsNDUsMCwxMjQsMCwwLDEyNCwzLDAsOTUsMSwwLDExMCwKKyAgICAwLDAsMTI0LDMsMCw4Myw0MCwyLDAsMCwwLDc4LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDIsMCwwLDAsCisgICAgMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSw0MCw0LDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCw5NywxMTQsCisgICAgMTAzLDExNSwxMTcsNiwwLDAsMCwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDExNyw2LDAsCisgICAgMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE4LDAsMCwKKyAgICAwLDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsCisgICAgMTEyLDEwMSwxMTQsMjUzLDEsMCwwLDExNSw4LDAsMCwwLDAsMSwxOCwxLAorICAgIDE1LDEsMTIsMSwxMTcsMzgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsMTE1LDEwMSwxMTYsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0MCwKKyAgICAxLDAsMCwwLDExNyw1LDAsMCwwLDk1LDExOSwxMTQsOTcsMTEyLDQwLDIsCisgICAgMCwwLDAsMTE3LDMsMCwwLDAsMTAyLDEyMCwxMTAsMTE3LDE4LDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLAorICAgIDEwMSwxMTQsNDAsMCwwLDAsMCw0MCwxLDAsMCwwLDExNywzLDAsMCwKKyAgICAwLDEwMiwxMjAsMTEwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwyNTEsMSwwLDAsMTE1LDYsMCwwLDAsMCwyLAorICAgIDE4LDUsMTMsMSwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsCisgICAgMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwKKyAgICAwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLAorICAgIDQwLDMsMCwwLDAsMTE3LDQyLDMsMCwwLDY4LDEwMSw5OSwxMTEsMTE0LDk3LAorICAgIDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTUsMTAxLAorICAgIDEwOCwxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTQsMTExLDExMiwKKyAgICAxMDEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsCisgICAgMTAwLDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDUsMTE1LDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsCisgICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDEwLDMyLDMyLDMyLDMyLDExMCw5NywxMDksMTAxLDQ2LDMyLDg0LAorICAgIDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwKKyAgICAzMiwxMDUsMTEwLDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsMTAyLDExNCwKKyAgICAxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDUsCisgICAgMTAyLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTYsMzIsOTcsMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwKKyAgICAzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsCisgICAgMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMTksCisgICAgNDQsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE2LDExMSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCw0NCwzMiw5NSw5NSwxMDgsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsMzIsMTE2LAorICAgIDExMSwzMiwxMTUsMTAxLDEwOCwxMDIsNDQsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwzMiw5Nyw5OSw5OSwxMTEsMTE0LDEwMCwxMDUsMTEwLDEwMywxMDgsMTIxLDMyLDQwLAorICAgIDEwNSwxMDIsMzIsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDQwLDQxLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMTAwLDQxLAorICAgIDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsCisgICAgMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMzIsMTEyLDk3LAorICAgIDExNSwxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDEsOTksMTExLAorICAgIDExNCw5NywxMTYsMTAxLDEwMCwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsNDAsCisgICAgMTA1LDEwMiwzMiwxMTUsMTAxLDEwOCwxMDIsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDAsNDEsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE2LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsCisgICAgMzIsMTE1LDEwMSwxMTYsMzIsMTEyLDExMSwxMTUsMTE2LDQ1LDEwOCwxMTEsOTcsMTAwLDQxLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiw5NywxMTAsMzIsMTAxLDEyMCw5OSwxMDEsCisgICAgMTEyLDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsCisgICAgOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwKKyAgICAxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE2LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LAorICAgIDExNyw5OCwxMTUsMTAxLDExMywxMTcsMTAxLDExMCwxMTYsMTA4LDEyMSwzMiwxMTQsMTAxLDEwOSwxMTEsCisgICAgMTE4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwMCwKKyAgICAxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwzMiw5NywxMTUsMTE1LDExNywxMDksMTAxLDExNSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDEwMSwxMDAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiw5NywxMDcsCisgICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsCisgICAgMTA5LDEwMSwzMiw5NywxMTUsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICA5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDcsMCwwLAorICAgIDAsMjUsMCwwLDAsMzEsMCwwLDAsMTE1LDI1NCwwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwKKyAgICAxMjQsNCwwLDEwMCwwLDAsMTA3LDksMCwxMjUsNSwwLDEyNCw1LDAsMTE1LAorICAgIDE2OCwwLDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw0LDAsMTAwLDMsCisgICAgMCwxMjQsNCwwLDk1LDYsMCwxMjQsNCwwLDExNiwwLDAsMTA2LDEsMCwKKyAgICAxMjQsMSwwLDYwLDEyNCwwLDAsMTI0LDQsMCw5NSw3LDAsMTIxLDE5LDAsCisgICAgMTI0LDAsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsNiwwLDg3LAorICAgIDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwxMDIsMiwwLDEwNywxMCwwLAorICAgIDExNCwxMjQsMCwxLDEsMSw4OSwxMTMsMTc3LDAsODgsMTI0LDYsMCwxMTQsMTQzLAorICAgIDAsMTI0LDEsMCwxMjQsNCwwLDk1LDExLDAsMTEzLDE3NywwLDEyNCwxLDAsCisgICAgMTA2LDEyLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCwyLDAsMjUsMTI0LDQsMCwKKyAgICA5NSwxMSwwLDExMCw5LDAsMTAwLDMsMCwxMjQsNCwwLDk1LDYsMCwxMjIsCisgICAgNjAsMCwxMjEsMjMsMCwxMzYsMCwwLDEyNCwwLDAsMTI0LDQsMCwxMjQsMiwKKyAgICAwLDEyNCwzLDAsMTQyLDIsMCw4Myw4NywxMTAsMzAsMCwxLDEsMSwxMjQsCisgICAgNSwwLDExNSwyMjgsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCw2MSwxMTAsCisgICAgMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCw4NywxMDAsMCwwLDEwMCw0LAorICAgIDAsMTI0LDQsMCw5NSw2LDAsODgsMTAwLDAsMCw4Myw0MCw1LDAsMCwKKyAgICAwLDc4LDExNywxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDg0LDcwLDQwLAorICAgIDE0LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMywwLDAsMCwxMDMsMTAxLDExNiwKKyAgICAxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTAsMCwwLDAsMTEwLDEwMSwKKyAgICAxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywKKyAgICAxMDEsMTE3LDE2LDAsMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwKKyAgICAxMjIsMTA1LDExMCwxMDMsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTQsMCwwLDAsNjUsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKKyAgICAxMTYsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LAorICAgIDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwKKyAgICAxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwKKyAgICA0MCw3LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsCisgICAgOTcsMTE0LDEwMywxMTUsMTE3LDYsMCwwLDAsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTcsCisgICAgNiwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsOSwwLDAsMCwxMDUsCisgICAgMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQwLDEsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsMTAyLDEyMCwxMTAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDI1LDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjQsMiwwLDAsMTE1LDQ0LDAsCisgICAgMCwwLDAsMSwxOCwxLDEyLDEsNiw0LDEyLDMsOSwxLDEzLDEsCisgICAgOSwxLDMsMSwxOSwxLDE5LDEsNSwyLDYsMSwxMiwyLDI1LDIsCisgICAgOSwxLDYsMiwyMywxLDMsMSw2LDEsMTMsMSwxMiwyLDExNyw1MiwKKyAgICAwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDEsMCwwLDAsMTE3LDUsMCwwLAorICAgIDAsOTUsMTE5LDExNCw5NywxMTIsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCwKKyAgICAxMDIsMTIwLDExMCwxMTcsMjUsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTAyLAorICAgIDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLAorICAgIDExNCw0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgMTAyLDEyMCwxMTAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LAorICAgIDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDYsMiwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwxOCwxOCwzMywxMywxLDExNywxNywwLDAsMCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAorICAgIDAsMywwLDAsMCwxMTUsMzgsMCwwLDAsMTAwLDMsMCwxMzUsMCwwLAorICAgIDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwxLDAsMTI1LDEsMCwxMTYsCisgICAgMSwwLDEyNCwxLDAsMTM2LDAsMCwxMzEsMiwwLDEsMTI0LDEsMCw4MywKKyAgICA0MCw0LDAsMCwwLDExNywyNTIsMCwwLDAsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsCisgICAgMTA1LDExMCwxMDMsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LAorICAgIDExNiw5OSwxMDQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwKKyAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCisgICAgMzIsNDAsMTE1LDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksCisgICAgMTAxLDExMCwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywKKyAgICAxMTQsMTAxLDEwMCwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiwKKyAgICA5NywxMDUsMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDUsMCwwLDAsMzEsMCwwLDAsMTE1LDgzLDAsMCwwLAorICAgIDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyNCwwLDEyNCwwLDAsMTA2LAorICAgIDEsMCwxMjUsMSwwLDExMCw0MCwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwKKyAgICAwLDEwNywzLDAsMTE0LDY0LDAsMTE2LDIsMCwxMDAsMSwwLDEyNCwxLDAsCisgICAgMjIsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLAorICAgIDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwxNDIsCisgICAgMiwwLDgzLDQwLDMsMCwwLDAsNzgsMTE3LDIzLDAsMCwwLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMzIsMzcsMTE1LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDMsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDQsMCwwLAorICAgIDAsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwKKyAgICAwLDk3LDExNCwxMDMsMTE1LDExNyw2LDAsMCwwLDEwNywxMTksOTcsMTE0LDEwMywxMTUsCisgICAgNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTksMCwwLDAsOTUsOTksMTA0LDEwMSwKKyAgICA5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNjksCisgICAgMiwwLDAsMTE1LDEwLDAsMCwwLDAsMSwxMiwxLDEyLDEsMTUsMSwKKyAgICAyNSwxLDExNyw0MCwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsOTksMTA0LDEwMSwKKyAgICA5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNzgsCisgICAgNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNSwKKyAgICAwLDAsMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNyw2LDAsCisgICAgMCwwLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxOSwwLDAsMCw5NSw5OSwxMDQsCisgICAgMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCwKKyAgICA0MCwwLDAsMCwwLDQwLDEsMCwwLDAsMTE3LDYsMCwwLDAsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwKKyAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwwLDAsMCw5NSw5OSwxMDQsMTAxLAorICAgIDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw2MSwyLDAsMCwxMTUsNiwwLDAsMCwKKyAgICAwLDgsMjEsNiwxMywxLDExNywxMSwwLDAsMCw5NSw5OSwxMDQsMTAxLDk5LAorICAgIDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLAorICAgIDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsCisgICAgMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsCisgICAgMSwwLDgzLDQwLDMsMCwwLDAsMTE3LDQ5LDAsMCwwLDY4LDEwMSw5OSwKKyAgICAxMTEsMTE0LDk3LDExNiwxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDMyLDEwNSwxMTUsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDYsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCwxOSwKKyAgICAwLDAsMCwxMTUsNTgsMCwwLDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTA3LDcsMCwxMTQsNDUsMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLAorICAgIDEsMCwxMTAsMCwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAorICAgIDAsODMsNDAsMywwLDAsMCw3OCwxMTcsMjcsMCwwLDAsMTIzLDEyNSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LDAsMCwwLDExMCw5NywxMDksCisgICAgMTAxLDQwLDQsMCwwLDAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDIwLAorICAgIDAsMCwwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LAorICAgIDk3LDExNiw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMSwwLAorICAgIDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMjUsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwKKyAgICA5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw4MSwKKyAgICAyLDAsMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyLDEsCisgICAgMTE3LDUyLDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAorICAgIDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwKKyAgICAwLDAsMCw5NSwxMTksMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsCisgICAgMCwwLDEwMiwxMjAsMTEwLDExNywyNSwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLAorICAgIDExMiwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMSwwLDAsMCwxMTcsMywwLAorICAgIDAsMCwxMDIsMTIwLDExMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE3LDAsMCwwLDk1LDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzksMiwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCwyLDE4LDUsMTMsMSwxMTcsMTcsMCwwLAorICAgIDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAorICAgIDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwwLDEzNSwwLDAsMTAyLAorICAgIDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMSwwLDExNiwwLAorICAgIDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsMSwwLDgzLDQwLAorICAgIDMsMCwwLDAsMTE3LDQ3LDAsMCwwLDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTgsMCwKKyAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDUsCisgICAgMCwxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsCisgICAgMTAwLDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMCwwLDEzNiwKKyAgICAwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDAsMywwLDAsCisgICAgMCw3OCwxMTcsMjUsMCwwLDAsMTIzLDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDQwLDQsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICA0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwKKyAgICAwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMSwwLDAsMCwKKyAgICAxMTcsMywwLDAsMCwxMDIsMTIwLDExMCw0MCwwLDAsMCwwLDExNywyOSwwLAorICAgIDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsCisgICAgMjQsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCw5NSwxMTksMTE0LDk3LDExMiwxMTIsMTAxLDExNCw5MiwyLDAsMCwKKyAgICAxMTUsOCwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyLDEsMTE3LDUwLDAsCisgICAgMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTEzLAorICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywKKyAgICAxMTIsMTEyLDEwMSwxMTQsNDAsMSwwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTksCisgICAgMTE0LDk3LDExMiw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDEwMiwxMjAsMTEwLAorICAgIDExNywyNCwwLDAsMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQwLDAsMCwKKyAgICAwLDAsNDAsMSwwLDAsMCwxMTcsMywwLDAsMCwxMDIsMTIwLDExMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDE2LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTAsMiwwLDAsMTE1LDYsMCwwLDAsMCwKKyAgICAyLDE4LDUsMTMsMSwxMTcsMTYsMCwwLDAsOTUsMTE0LDEwMSwxMTMsMTE3LDEwNSwKKyAgICAxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA4NywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLAorICAgIDkyLDIsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMywwLDEwNywKKyAgICA4LDAsMTE0LDgzLDAsMTE2LDIsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgzLAorICAgIDAsMTAwLDEsMCwxMjUsNCwwLDExNiwzLDAsMTA2LDQsMCwxMjQsNCwwLAorICAgIDEwNiw1LDAsMTI0LDMsMCwxMDAsMiwwLDI1LDEzMSwxLDAsMTE2LDYsMCwKKyAgICAxMzEsMiwwLDEsMTEwLDAsMCwxMjQsMiwwLDgzLDQwLDQsMCwwLDAsCisgICAgMTE3LDg2LDAsMCwwLDg0LDExNCwxMjEsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsCisgICAgMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLDk3LDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTA4LDEwMiw0NiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCw0MSw0NiwxMTcsNDQsMCwwLDAsCisgICAgNzgsMTExLDExNiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywzMiwxMDAsMTA1LAorICAgIDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEyMywxMjUsNTgsMzIsMTA5LDEwNSwxMTUsMTE1LAorICAgIDEwNSwxMTAsMTAzLDMyLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMDUsMCwwLDAsCisgICAgMCw3OCw0MCw3LDAsMCwwLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwKKyAgICAxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsOSwwLDAsMCw5NSwxMTksOTcsCisgICAgMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LDk3LDExNCwxMTAsMTE3LAorICAgIDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTMsMCwwLDAsNzMsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQwLDUsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwKKyAgICAxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNyw4LDAsMCwwLDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsMTE3LAorICAgIDMsMCwwLDAsMTA5LDExNSwxMDMsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwxMDEsMiwwLDAsMTE1LDEwLDAsCisgICAgMCwwLDAsNiwyMSwxLDI0LDEsNiwxLDMyLDEsMTE3LDE3LDAsMCwKKyAgICAwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LAorICAgIDEwNSwxMDksOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNiwKKyAgICAwLDAsMCw2NiwwLDAsMCwxMTUsMTczLDAsMCwwLDEyNCwwLDAsNjksCisgICAgMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwKKyAgICAzLDAsMTAxLDQsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwKKyAgICAwLDkwLDUsMCwxMDEsNCwwLDEwMCwxNCwwLDEwMCw0LDAsMTAwLDUsMCwKKyAgICAxMzIsMSwwLDEzMSwxLDAsOTAsNywwLDEwMSw0LDAsMTAxLDgsMCwxMDEsCisgICAgOSwwLDEwMSwxMCwwLDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDEzMSwxLAorICAgIDAsMTMxLDEsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTEsMCwxMDEsNCwwLAorICAgIDEwMSwxMCwwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAorICAgIDEsMCw5MCwxMiwwLDEwMSw0LDAsMTAxLDEwLDAsMTAwLDEwLDAsMTAwLDExLAorICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsNCwwLAorICAgIDEwMSwxMCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDE0LDAsMTAwLDE0LDAsODMsNDAsMTUsMCwwLDAsMTE3LDE1LAorICAgIDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDExNCwxMTcsMTQ0LDAsMCwwLDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDk3LAorICAgIDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsCisgICAgMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICAxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwKKyAgICAwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwxLDAsMTMxLDEsMCwKKyAgICA4Myw0MCwyLDAsMCwwLDc4LDExNywyNCwwLDAsMCw2MCwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwzOSwxMjMsMTI1LDM5LDMyLDQwLDk4LDExNywxMDUsMTA4LDExNiw0NSwKKyAgICAxMDUsMTEwLDQxLDYyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLDAsMTAyLDExMSwKKyAgICAxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDYsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTE0LDEwMSwxMTIsMTE0LDEyNywyLDAsMCwxMTUsMiwwLDAsMCwwLDIsCisgICAgMTE3LDI3LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMzksMCwwLDAsMTI0LDIsMCwxMDAsMSwwLAorICAgIDEwNyw5LDAsMTE0LDE2LDAsMTAwLDEsMCw4MywxMTYsMSwwLDEwNiwyLDAsCisgICAgMTI0LDEsMCwxMzEsMSwwLDExNCwzNSwwLDEyNCwwLDAsODMsMTAwLDEsMCwKKyAgICA4Myw0MCwyLDAsMCwwLDExNywxMTMsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTAyLAorICAgIDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDEwNSwxMTUsMzIsMTAxLDExOCwxMDEsMTE0LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExNSwxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsCisgICAgMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLDk3LDMyLDEwMiw5NywxMDUsMTA4LDExNywxMTQsCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQwLDMsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDQsMCwwLDAsCisgICAgOTUsMTA1LDEwOSwxMTIsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsCisgICAgMTE2LDEwNSwxMTAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTMxLDIsMCwwLDExNSw2LDAsMCwwLDAsNywxMiwxLDQsCisgICAgMSwxMTcsMjcsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw5LDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw4OCwwLDAsMCwxMjQsMSwwLDExNiwwLAorICAgIDAsMTA2LDEsMCwxMDcsNiwwLDEyNSwyLDAsMTIxLDIwLDAsMTE2LDIsMCwKKyAgICAxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLDgzLDg3LDExMCw0NiwKKyAgICAwLDEsMSwxLDEyNCwyLDAsMTIsMTE0LDc2LDAsMTI0LDEsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTA3LDYsMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLDAsCisgICAgMTI0LDEsMCw2MSwxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsCisgICAgMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDIzLDAsMCwwLDc2LDExMSw5NywKKyAgICAxMDAsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNDYsNzgsNDAsNSwwLDAsMCwxMTcsMywwLDAsMCwxMTUsCisgICAgMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCisgICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwKKyAgICAwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCwxMDUsMTEwLDEwNSwxMTYsOTUsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDAsMywwLDAsMCwxMTcsMywwLDAsMCwKKyAgICA5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTA4LAorICAgIDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTQyLDIsMCwwLDExNSwxNCwKKyAgICAwLDAsMCwwLDYsMTUsMSwzLDEsMjAsMSwzLDEsMjIsMSwxMywKKyAgICAxLDExNywyNywwLDAsMCw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwwLDgzLDQwLAorICAgIDIsMCwwLDAsMTE3LDU3LDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLAorICAgIDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKKyAgICAxMTUsNDYsNzgsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLAorICAgIDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsCisgICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsMTU2LDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsCisgICAgMjQsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNywKKyAgICA1NiwwLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLAorICAgIDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDQwLDEsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsNDAsMiwwLDAsMCwKKyAgICAxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDE2MiwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTE3LDI2LDAsMCwwLAorICAgIDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwKKyAgICAwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw1MiwwLAorICAgIDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LAorICAgIDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwxMTUsNDYsNzAsNDAsMSwwLDAsMCwxMTcsNSwwLDAsCisgICAgMCw3MCw5NywxMDgsMTE1LDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLAorICAgIDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwKKyAgICAwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDE2OCwyLDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDQsMTE3LDI2LDAsMCwwLDY2LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw3OCw0MCwxNSwwLDAsMCwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDExMywxMTcsCisgICAgOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LDk1LDEwMCwKKyAgICAxMTEsOTksOTUsOTUsMTE3LDExLDAsMCwwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNywxMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKKyAgICAxMTQsMTAxLDExMiwxMTQsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDExLDAsCisgICAgMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwKKyAgICAwLDAsMTE1LDEwMSwxMTYsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywxMCwwLAorICAgIDAsMCwxMTUsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxNywwLDAsCisgICAgMCw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwKKyAgICAxMDUsMTEwLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTcsCisgICAgMTAsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTAsCisgICAgMCwwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMSwwLAorICAgIDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LAorICAgIDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsCisgICAgNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE1LDAsCisgICAgMCwwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCwxMTgsMiwwLDAsMTE1LDI4LDAsMCwwLDE2LDcsNiwyLDE4LDQsCisgICAgMywxLDE4LDEwLDMsMSwzLDEsMywxLDI3LDExLDMsMSwyMSw1LAorICAgIDMsMSwyMSw1LDMsMSwxMTcsMTUsMCwwLDAsNjYsMTE3LDEwNSwxMDgsMTE2LAorICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk5LDEsMCwwLDAsMCwKKyAgICAwLDAsMCwxLDAsMCwwLDYsMCwwLDAsNjYsMCwwLDAsMTE1LAorICAgIDE3MywwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLAorICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsMCwxMDAsCisgICAgMTQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDcsCisgICAgMCwxMDEsNCwwLDEwMSw4LDAsMTAxLDksMCwxMDEsMTAsMCwxMDAsNiwwLAorICAgIDEwMCw3LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDExLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsOCwwLDEwMCw5LAorICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTIsMCwxMDEsNCwwLAorICAgIDEwMSwxMCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCisgICAgMSwwLDkwLDEzLDAsMTAxLDQsMCwxMDEsMTAsMCwxMDAsMTIsMCwxMDAsMTMsCisgICAgMCwxMzIsMCwwLDEzMSwxLDAsMTMxLDEsMCw5MCwxNCwwLDEwMCwxNCwwLAorICAgIDgzLDQwLDE1LDAsMCwwLDExNywxNCwwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMTcsMTQyLDAsMCwwLDc3LDEwMSwKKyAgICAxMTYsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExMSwxMTQsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksCisgICAgMTA4LDk3LDExNSwxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LAorICAgIDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwKKyAgICAxLDAsMTMxLDEsMCw4Myw0MCwyLDAsMCwwLDc4LDExNywyMiwwLDAsCisgICAgMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwzOSwxMjMsMTI1LDM5LDMyLDQwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDQxLDYyLDQwLDIsMCwwLDAsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTAsOTcsCisgICAgMTA5LDEwMSw5NSw5NSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwKKyAgICAxMTUsMTE3LDEsMCwwLDAsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCwxODQsMiwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyNiwKKyAgICAwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMjMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsCisgICAgMTMxLDEsMCwxMTQsMTksMCwxMjQsMCwwLDgzLDEwMCwxLDAsODMsNDAsMiwKKyAgICAwLDAsMCwxMTcsMjEsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsOSwwLDAsCisgICAgMCwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNyw0LDAsMCwwLDc4LAorICAgIDExMSwxMTAsMTAxLDQwLDMsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LDExNSwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDE4OCwyLDAsMCwxMTUsMiwwLDAsMCwwLDMsMTE3LDI2LDAsCisgICAgMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsNCwwLDAsMCw5LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMDAsMCwwLDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAorICAgIDYsMCwxMjUsMiwwLDEyMSwzMiwwLDExNiwyLDAsMTE2LDMsMCwxMDYsNCwKKyAgICAwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsOTYsNSwwLAorICAgIDEyNCwzLDAsODMsODcsMTEwLDQ2LDAsMSwxLDEsMTI0LDIsMCwxMiwxMTQsCisgICAgODgsMCwxMjQsMSwwLDExNiwwLDAsMTA2LDEsMCwxMDcsNiwwLDExNCw4OCwKKyAgICAwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDYxLDExMCwwLDAsMTMwLDAsCisgICAgMCw4OSwxMTAsMSwwLDg4LDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMjEsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCw0MCw2LDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSwxMTcsMjUsMCwwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LAorICAgIDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwKKyAgICAxMDAsMTE3LDQsMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDExLDAsMCwwLDEwNSwKKyAgICAxMTAsMTA1LDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwxMTcsOCwwLDAsMCw5NSwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsOTUsNDAsNCwwLDAsMCwxMTcsMywwLDAsCisgICAgMCw5OSwxMDgsMTE1LDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSwxMTcsOSwwLDAsMCwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LDExMSw5NywxMDAsMTE3LAorICAgIDEsMCwwLDAsMTA5LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDE5MywyLDAsMCwxMTUsMTgsMCwwLDAsMCw2LDE1LDEsMywxLAorICAgIDE4LDIsNiwxLDgsMSwzLDEsMjIsMSwxMywxLDExNywyNiwwLDAsCisgICAgMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwKKyAgICAwLDgzLDQwLDEsMCwwLDAsMTE3LDQ1LDAsMCwwLDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDQwLDIsMCwwLDAsMTE3LDQsCisgICAgMCwwLDAsOTUsMTA1LDEwOSwxMTIsMTE3LDE3LDAsMCwwLDEwMywxMDEsMTE2LDk1LAorICAgIDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiw0MCwyLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLAorICAgIDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCisgICAgMjEwLDIsMCwwLDExNSwyLDAsMCwwLDAsNCwxMTcsMjMsMCwwLDAsCisgICAgNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLAorICAgIDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsCisgICAgMCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDU0LDAsMCwwLDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsNzgsMTExLDExMCwxMDEsMzIsOTcsMTE1LDMyLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTExLDMyLAorICAgIDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsCisgICAgOTksMTExLDEwMCwxMDEsNDYsNzgsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwKKyAgICA3OCwxMTEsMTEwLDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwKKyAgICAxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywKKyAgICAxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMjE2LDIsMCwwLDExNSwyLDAsCisgICAgMCwwLDAsNCwxMTcsMjUsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMTYsMCwwLDEwNiwKKyAgICAxLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDQ2LAorICAgIDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA0Niw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywKKyAgICAxNywwLDAsMCwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSw0MCwyLDAsMCwwLDExNywzLDAsMCwwLDk5LAorICAgIDEwOCwxMTUsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLAorICAgIDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDIyMiwyLDAsMCwxMTUsMiwKKyAgICAwLDAsMCwwLDQsMTE3LDI1LDAsMCwwLDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDc4LDQwLDE1LDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSwKKyAgICA5NSw5NSwxMTcsMTEsMCwwLDAsOTksMTA4LDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCisgICAgMTEyLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMTEsMCwwLDAsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwKKyAgICAxMTUsMTAxLDExNiw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExNSwxMDEsMTE2LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE2LDAsMCwwLDk1LAorICAgIDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LAorICAgIDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywKKyAgICA4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxMCwwLDAsMCwKKyAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MCwxLDAsMCwwLDExNywKKyAgICAxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwKKyAgICAwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LAorICAgIDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LAorICAgIDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwwLDAsNzAsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTc1LDIsMCwKKyAgICAwLDExNSwyOCwwLDAsMCwxNiw3LDYsMiwxOCw0LDMsMSwxOCw0LAorICAgIDMsMSwzLDEsMywxLDI3LDE0LDMsMSwyMSw1LDMsMSwyMSw1LAorICAgIDMsMSwxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsNCwwLDAsMCw2NiwwLDAsMCwxMTUsMTAxLDAsMCwwLDEyNCwKKyAgICAwLDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLAorICAgIDEsMCw5MCwzLDAsMTAwLDIsMCw5MCw0LDAsMTAwLDMsMCw5MCw1LAorICAgIDAsMTAwLDExLDAsOTAsNywwLDEwMSw4LDAsMTAwLDQsMCwxMDAsNSwwLAorICAgIDEzMiwwLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDgsMCwxMDAsNiwwLDEwMCwKKyAgICA3LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDgsMCwxMDAsMTAsCisgICAgMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDEsMCwxMzEsMSwwLDkwLDEyLDAsCisgICAgMTAwLDEwLDAsODMsNDAsMTIsMCwwLDAsMTE3LDIxLDAsMCwwLDg3LDEwNSwKKyAgICAxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDExNyw2NywwLDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDMyLDExNCwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTAsMzIsMzIsMzIsMzIsMTE3LDU5LDAsMCwwLAorICAgIDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsOTIsCisgICAgODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsOTUsCisgICAgMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICA5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMTcsNjUsMCwwLDAsCisgICAgODMsMTExLDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5MiwKKyAgICA4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwKKyAgICAxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDkyLDEyMywxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsCisgICAgMTAzLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTE2LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCwKKyAgICA4Myw4NywxMTAsMzcsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwKKyAgICAxLDEsMTE2LDAsMCwxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwKKyAgICAwLDEzMSwyLDAsODMsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQwLDEsCisgICAgMCwwLDAsNzgsNDAsNSwwLDAsMCwxMTcsNywwLDAsMCw5NSwxMTksCisgICAgMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsNywwLDAsMCw3OSwxMTIsMTAxLDExMCw3NSwxMDEsCisgICAgMTIxLDExNywxNywwLDAsMCw3Miw3NSw2OSw4OSw5NSw2Nyw4NSw4Miw4Miw2OSwKKyAgICA3OCw4NCw5NSw4NSw4Myw2OSw4MiwxMTcsMTIsMCwwLDAsODcsMTA1LDExMCwxMDAsCisgICAgMTExLDExOSwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNywxOCwwLDAsMCw3Miw3NSw2OSwKKyAgICA4OSw5NSw3Niw3OSw2Nyw2NSw3Niw5NSw3Nyw2NSw2Nyw3Miw3Myw3OCw2OSw0MCwKKyAgICAyLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDMsMCwwLAorICAgIDAsMTA3LDEwMSwxMjEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsMTQsMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsCisgICAgMTE2LDExNCwxMjEsMjQyLDIsMCwwLDExNSw4LDAsMCwwLDAsMiwzLDEsCisgICAgMjMsMSwxMywxLDExNywzNiwwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSwKKyAgICA4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwKKyAgICAxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQyLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMTQsMjEsMCwKKyAgICAxMjQsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsOSwwLDEyNCwwLDAsMTA2LAorICAgIDIsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDMsMCwxMDAsMSwwLDEyNCwxLAorICAgIDAsMTAwLDIsMCwxMTYsNCwwLDEwNiw1LDAsMTAwLDAsMCwxMDAsMywwLAorICAgIDEzMywyLDAsMjUsMTMxLDAsMiwxMjUsMywwLDEyMSw0NiwwLDEyNCwwLDAsCisgICAgMTA2LDYsMCwxMjQsMywwLDEzMSwxLDAsMTQzLDI1LDAsMTI1LDQsMCwxMTYsCisgICAgNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsNCwwLDEzMSwyLDAsMTI1LDUsCisgICAgMCw4NywxMDAsMCwwLDgxLDg4LDg3LDExMCwyMiwwLDQsMTE2LDksMCwxMDcsCisgICAgMTAsMCwxMTQsMTM3LDAsMSwxLDEsMTAwLDAsMCw4Myw4OSwxMTAsMSwwLAorICAgIDg4LDEyNCw1LDAsODMsNDAsNSwwLDAsMCw3OCwxMTcsOCwwLDAsMCwKKyAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDExNSwxMjEsMTE1LAorICAgIDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMDUsMywwLDAsMCwxMTcsMCwwLAorICAgIDAsMCw0MCwxMSwwLDAsMCwxMTcsMTEsMCwwLDAsNjgsNjksNjYsODUsCisgICAgNzEsOTUsNjYsODUsNzMsNzYsNjgsMTE3LDE4LDAsMCwwLDgyLDY5LDcxLDczLAorICAgIDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDExNywxMiwKKyAgICAwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTcsCisgICAgNiwwLDAsMCwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw3LDAsMCwwLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMTcsMTQsCisgICAgMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwKKyAgICAxMjEsMTE3LDcsMCwwLDAsOTUsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsMTE3LDEwLDAsCisgICAgMCwwLDgxLDExNywxMDEsMTE0LDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTcsMTIsMCwwLAorICAgIDAsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsCisgICAgMCwwLDc4LDExMSwxMTAsMTAxLDQwLDYsMCwwLDAsMTE3LDMsMCwwLDAsCisgICAgOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsOTUsMTA3LDEwMSwKKyAgICAxMjEsMTE3LDMsMCwwLDAsMTA3LDEwMSwxMjEsMTE3LDQsMCwwLDAsMTA0LDEwNywKKyAgICAxMDEsMTIxLDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTIsOTcsMTE2LDEwNCw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNiwwLDAsMCwKKyAgICA5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwKKyAgICAyNDksMiwwLDAsMTE1LDIyLDAsMCwwLDAsMiw5LDEsMTIsMiw5LAorICAgIDEsMTUsMSwyMiwxLDMsMSwxOCwxLDI4LDEsMTMsMSw5LDEsMTE3LAorICAgIDM4LDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKKyAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExNSwxMDEsOTcsMTE0LDk5LAorICAgIDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw3LDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxNDAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICAxMjUsMywwLDEyNCwzLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzMSwwLDEwMCwKKyAgICAxLDAsODMsMTIxLDE3LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLDAsMTMxLAorICAgIDEsMCwxLDg3LDExMCwyMiwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsNzIsCisgICAgMCwxLDEsMSwxMDAsMSwwLDgzLDg5LDExMCwxLDAsODgsMTIwLDYwLDAsCisgICAgMTE2LDUsMCwxMzEsMCwwLDY4LDkzLDQ5LDAsOTIsMywwLDEyNSw0LDAsCisgICAgMTI1LDUsMCwxMjUsNiwwLDEyNCwzLDAsMTA2LDYsMCwxMTYsNywwLDEyNCwKKyAgICA1LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4MywwLDEyNCw0LDAsMTI0LDEsCisgICAgMCwxMjQsMywwLDEzMSwyLDAsODMsMTEzLDgzLDAsODcsMTAwLDEsMCw4MywKKyAgICA0MCwyLDAsMCwwLDExNywzNCwwLDAsMCw3MCwxMDUsMTEwLDEwMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LDc4LDQwLDgsMCwKKyAgICAwLDAsMTE3LDE2LDAsMCwwLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMTQsCisgICAgMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywKKyAgICAxMTYsMTE3LDcsMCwwLDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNywyNywwLAorICAgIDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE3LDgsMCwKKyAgICAwLDAsMTAxLDExMCwxMDAsMTE1LDExOSwxMDUsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMTYsCisgICAgMTE3LDExMiwxMDgsMTAxLDQwLDcsMCwwLDAsMTE3LDMsMCwwLDAsOTksMTA4LAorICAgIDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LAorICAgIDgsMCwwLDAsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTcsMSwwLDAsCisgICAgMCw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwKKyAgICAwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOCwzLAorICAgIDAsMCwxMTUsMjAsMCwwLDAsMCwzLDE1LDEsMTIsMSw0LDEsMywKKyAgICAxLDE3LDEsMTMsMSw5LDEsMjUsMSwyMSwxLDExNywzMywwLDAsMCwKKyAgICA4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNzgsNzAsNDAsMTMsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsCisgICAgOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LAorICAgIDk1LDExNywxMiwwLDAsMCw4Miw2OSw3MSw3Myw4Myw4NCw4Miw4OSw5NSw3NSwKKyAgICA2OSw4OSwxMTcsMTgsMCwwLDAsODIsNjksNzEsNzMsODMsODQsODIsODksOTUsCisgICAgNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMTE3LDUsMCwwLDAsNzAsOTcsCisgICAgMTA4LDExNSwxMDEsMTE3LDExLDAsMCwwLDY4LDY5LDY2LDg1LDcxLDk1LDY2LDg1LAorICAgIDczLDc2LDY4LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LDExNSwxMDksMTAxLDExNiwKKyAgICAxMDQsMTExLDEwMCwxMTcsMTQsMCwwLDAsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsCisgICAgMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsMTE3LDE2LDAsMCwwLDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDExNyw0LDAsMCwwLAorICAgIDc4LDExMSwxMTAsMTAxLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LAorICAgIDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDIyOSwyLAorICAgIDAsMCwxMTUsMTYsMCwwLDAsMTYsMyw2LDMsNiwzLDYsMiw2LAorICAgIDIsMTgsNywxOCwxNSwzLDEsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLAorICAgIDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDUsMCwKKyAgICAwLDAsNjYsMCwwLDAsMTE1LDc0LDAsMCwwLDEyNCwwLDAsNjksMTAxLAorICAgIDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLAorICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsCisgICAgMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLDEwMCw2LDAsMTAwLAorICAgIDEwLDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDEsMTMxLDEsMCw5MCw4LAorICAgIDAsMTAwLDksMCw4Myw0MCwxMSwwLDAsMCwxMTcsMTMsMCwwLDAsOTUsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDExNyw4MywwLDAsCisgICAgMCw2Niw5NywxMTUsMTAxLDMyLDk5LDEwOCw5NywxMTUsMTE1LDMyLDExMSwxMDIsMzIsOTksCisgICAgMTExLDEwOSwxMDksMTExLDExMCwzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsOTgsMTExLDExNiwxMDQsMzIsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDg4LDAsMCwwLDExNiwwLAorICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEwMCwxLDAsMjUsMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCwKKyAgICAxMDAsMSwwLDEzMSwyLDAsMTAwLDMsMCwyNSwxMjUsMywwLDEyNCwxLDAsCisgICAgMTA2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTAwLDQsMCwyNSwxMjUsNCwwLAorICAgIDEyNCwzLDAsMTAwLDUsMCwxMDcsMiwwLDExMSw4NywwLDEyNCw0LDAsMTAwLAorICAgIDUsMCwxMDcsMywwLDgzLDQwLDYsMCwwLDAsMTE3LDE0MSwwLDAsMCwKKyAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCisgICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwzMiw5OCwxMjEsMzIsOTksMTA0LDEwMSw5OSwxMDcsMTA1LDExMCwxMDMsMzIsCisgICAgMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsCisgICAgOTcsMTE2LDEwNCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTA0LDk3LDExNSwKKyAgICAzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwzOSwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsMTEyLDEyMSwzOSw0NiwxMDUsMSwwLAorICAgIDAsMCwxMTcsMSwwLDAsMCw0NiwxMDUsMCwwLDAsMCwxMDUsMiwwLAorICAgIDAsMCwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsCisgICAgNCwwLDAsMCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDExMiwxMDgsMTA1LDExNiwxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLDExNCwxMTUsMTEyLDEwOCwxMDUsMTE2LAorICAgIDExNywxMCwwLDAsMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MCwKKyAgICA1LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLAorICAgIDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNywxMywwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSwxMTcsOSwwLDAsMCwxMTYsOTcsCisgICAgMTA1LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsCisgICAgMTAzLDEwMSwyOCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMjUsMSwyMiwKKyAgICAxLDE5LDEsMTE3LDI0LDAsMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2NiwKKyAgICA5NywxMTUsMTA1LDk5LDExNSw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5OSw1LDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMjIsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDE5OCwxLDAsMCwxMjQsMiwwLDEwMCwxLDAsCisgICAgMTAwLDIsMCwxMzMsMiwwLDI1LDEyNSw1LDAsMTI0LDIsMCwxMDAsMiwwLAorICAgIDEwMCwzLDAsMTMzLDIsMCwyNSwxMjUsNiwwLDEyNCwyLDAsMTAwLDMsMCwKKyAgICAxMDAsNCwwLDEzMywyLDAsMjUsMTI1LDcsMCwxMjQsNSwwLDExNiwwLDAsCisgICAgMTA3LDMsMCwxMTQsMTA1LDAsMTAwLDUsMCwxMDYsMSwwLDEyNCwxLDAsMTI0LAorICAgIDUsMCwxMzEsMiwwLDEyNSw4LDAsMTE2LDIsMCwxMjQsOCwwLDEwMCw2LAorICAgIDAsMTI0LDEsMCwxMDAsNywwLDEyNCwzLDAsMTMxLDEsMiwxMzAsMSwwLAorICAgIDExMCwxMTYsMCwxMTYsMywwLDEyNCw2LDAsMTMxLDEsMCwxMDAsMiwwLDEwNywKKyAgICAzLDAsMTE0LDE2MywwLDEwMCw4LDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLAorICAgIDAsMTI1LDksMCwxMTYsNCwwLDEyNCw5LDAsMTMxLDEsMCwxLDExNiw1LAorICAgIDAsMTI0LDksMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDU4LDAsMTE2LDMsMCwKKyAgICAxMjQsNywwLDEzMSwxLDAsMTAwLDIsMCwxMDcsMywwLDExNCwyMjEsMCwxMDAsCisgICAgOSwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw5LDAsMTE2LDQsCisgICAgMCwxMjQsOSwwLDEzMSwxLDAsMSwxMTYsNSwwLDEyNCw5LDAsMTMxLDEsCisgICAgMCwxMzAsMSwwLDExMCwwLDAsMTI0LDQsMCwxMDAsMSwwLDEwNyw5LDAsCisgICAgMTE0LDE4NCwxLDEyMSwyMCwwLDExNiw3LDAsMTI0LDQsMCwxMDAsMTAsMCwyNSwKKyAgICAxMzEsMSwwLDEyNSwxMCwwLDg3LDExMCwxOCwwLDQsMTE2LDgsMCwxMDcsMTAsCisgICAgMCwxMTQsMTcsMSwxLDEsMSw4OSwxMTAsNzEsMCw4OCwxMTYsOSwwLDEyNCwKKyAgICA2LDAsMTMxLDEsMCwxMjQsMTAsMCwxMDcsMywwLDExNCw4OCwxLDEwMCwxMSwKKyAgICAwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSw5LDAsMTE2LDQsMCwKKyAgICAxMjQsOSwwLDEzMSwxLDAsMSwxMTYsMiwwLDEyNCw5LDAsMTAwLDYsMCwKKyAgICAxMjQsMSwwLDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsMTEwLAorICAgIDAsMCwxMjEsMTgsMCwxMjQsNCwwLDEwMCwxMiwwLDI1LDEwMCwxMywwLDY0LAorICAgIDEyNSwxMSwwLDg3LDExMCwxOCwwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsMTI2LAorICAgIDEsMSwxLDEsODksMTEzLDE4NCwxLDg4LDExNiw5LDAsMTI0LDcsMCwxMzEsCisgICAgMSwwLDEyNCwxMSwwLDEwNywzLDAsMTE0LDE4NCwxLDExNiwyLDAsMTAwLDExLAorICAgIDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLDYsMCwxMjQsMSwwLAorICAgIDEwMCw3LDAsMTI0LDMsMCwxMzEsMSwyLDEzMCwxLDAsMTEzLDE4NCwxLDExMCwKKyAgICAwLDAsMTI0LDIsMCwxMDAsNCwwLDEwMCwxLDAsMTMzLDIsMCwyNSw4MywKKyAgICA0MCwxNCwwLDAsMCwxMTcsMTkzLDAsMCwwLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwKKyAgICA5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDQ0LDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsNDQsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsCisgICAgMTA5LDExMiwzMiw5NywxMTAsMTAwLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTE1LDEwNSwKKyAgICAxMjIsMTAxLDMyLDk3LDEwOCwxMTEsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTksOTcsMTIxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiwxMDUsMTE1LDMyLDc4LDExMSwKKyAgICAxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTUsMTA3LDEwNSwxMTIsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiw5OSwxMDQsMTAxLDk5LDEwNywKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMDUsNCwwLDAsCisgICAgMCwxMDUsOCwwLDAsMCwxMDUsMTIsMCwwLDAsMTE3LDMwLDAsMCwwLAorICAgIDk4LDk3LDEwMCwzMiwxMDksOTcsMTAzLDEwNSw5OSwzMiwxMTAsMTE3LDEwOSw5OCwxMDEsMTE0LAorICAgIDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsMTIzLDMzLDExNCwxMjUsMTE3LDQsCisgICAgMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDE5LDAsMCwwLDk4LDk3LDEwMCwzMiwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywKKyAgICAxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsMTQsMCwwLDAsOTgsOTcsMTAwLAorICAgIDMyLDExNSwxMDUsMTIyLDEwMSwzMiwxMDUsMTEwLDMyLDEyMywxMjUsMTE3LDUsMCwwLDAsCisgICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsMjQsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLAorICAgIDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCisgICAgMTIzLDEyNSwxMTcsNCwwLDAsMCwxMTUsMTA1LDEyMiwxMDEsMTA4LDMsMCwwLDAsCisgICAgMjU1LDEyNywyNTUsMTI3LDMsMCw0MCwxMCwwLDAsMCwxMTcsMTIsMCwwLDAsCisgICAgOTUsNzcsNjUsNzEsNzMsNjcsOTUsNjYsODksODQsNjksODMsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDMsMCwwLDAsMTA4LDEwMSwxMTAsMTE3LAorICAgIDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LAorICAgIDExNSw5NywxMDMsMTAxLDExNyw4LDAsMCwwLDY5LDc5LDcwLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsMywwLDAsMCwxMDUsCisgICAgMTEwLDExNiwxMTcsOCwwLDAsMCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsCisgICAgNywwLDAsMCw5NSwxMTQsOTUsMTA4LDExMSwxMTAsMTAzLDQwLDEyLDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LAorICAgIDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5NywxMTcsCisgICAgMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDExNiw5NywKKyAgICAxMTYsMTE1LDExNyw1LDAsMCwwLDEwOSw5NywxMDMsMTA1LDk5LDExNywxMywwLDAsCisgICAgMCwxMTQsOTcsMTE5LDk1LDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMTE3LDgsCisgICAgMCwwLDAsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE3LDMsMCwwLDAsCisgICAgMTA5LDExNSwxMDMsMTE3LDcsMCwwLDAsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LAorICAgIDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwKKyAgICAxMTcsMTEsMCwwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMjAsMCwwLAorICAgIDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzNiwzLDAsMCwxMTUsNjYsMCwwLDAsMCw3LAorICAgIDE2LDEsMTYsMSwxNiwxLDEyLDEsMTgsMSwyNywxLDE4LDEsMTUsMSwKKyAgICAxMCwxLDE1LDEsMTgsMSwxNSwxLDEwLDEsMTUsMSwxMiwxLDMsMSwKKyAgICAyMCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwxMCwxLDE1LDEsMTIsMSwKKyAgICAzLDEsMTgsMSwxMywxLDUsMiwxOCwxLDMsMSwxNSwxLDIxLDMsCisgICAgMTE3LDM0LDAsMCwwLDk1LDc2LDExMSw5NywxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LAorICAgIDk5LDExNSw0Niw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAorICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsMCwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDEwOCwxMDEsMTE1LDExNSw5OSwyLDAsMCwwLDEsMCwwLDAsNSwKKyAgICAwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwwLAorICAgIDEyNCwxLDAsMTA2LDAsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsCisgICAgMywwLDEzMSwxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDMsCisgICAgMCwxMzEsMSwwLDEyNCwxLDAsOTUsMywwLDEyNCwyLDAsMTE1LDEwNiwwLAorICAgIDEyMSwyMiwwLDExNiw0LDAsMTI0LDEsMCwxMDYsMywwLDEzMSwxLDAsMTI0LAorICAgIDEsMCw5NSw1LDAsODcsMTEzLDExOCwwLDQsMTE2LDYsMCwxMDcsMTAsMCwKKyAgICAxMTQsMTAyLDAsMSwxLDEsMTI0LDEsMCwxMDYsMywwLDEyNCwxLDAsOTUsCisgICAgNSwwLDg5LDExMywxMTgsMCw4OCwxMTAsMTIsMCwxMjQsMSwwLDEwNiwzLDAsCisgICAgMTI0LDEsMCw5NSw1LDAsMTI0LDMsMCwxMjQsMSwwLDk1LDcsMCwxMjQsCisgICAgMCwwLDEwNiw4LDAsMTI0LDMsMCwxMzEsMSwwLDExNCwxNzAsMCwxMTYsOSwKKyAgICAwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEwMCwxLDAsMjUsMTAzLDEsCisgICAgMCwxMjQsMSwwLDk1LDEwLDAsMTEwLDI1LDAsMTI0LDEsMCwxMDYsNywwLAorICAgIDEwNiwxMSwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEyNCwxLDAsCisgICAgOTUsNywwLDEyNCwwLDAsMTI0LDEsMCw5NSwxMiwwLDExNiwxMywwLDExNiwKKyAgICAxNCwwLDEyNCw0LDAsMTI0LDEsMCwxMDYsMTUsMCwxMzEsMywwLDEsMTI0LAorICAgIDEsMCw4Myw0MCwzLDAsMCwwLDExNyw4MiwwLDAsMCw3MiwxMDEsMTA4LAorICAgIDExMiwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDQsOTcsMTEwLDEwMCwKKyAgICAxMDgsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCisgICAgMzIsMTExLDExNCwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMDUsCisgICAgMCwwLDAsMCwxMTcsMSwwLDAsMCw0Niw0MCwxNiwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsOCwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwxMTcsMTIsMCwwLDAsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLDk1LAorICAgIDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSwxMTcsMTcsMCwwLDAsOTksOTcsOTksMTA0LAorICAgIDEwMSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMTE3LDE5LDAsMCwKKyAgICAwLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywKKyAgICAxMDMsMTAxLDk1LDk1LDExNywxMCwwLDAsMCwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExMiwKKyAgICAxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwKKyAgICAxMTcsMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LAorICAgIDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDI1LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsCisgICAgOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwKKyAgICAwLDEwMSwxMjAsMTAxLDk5LDExNyw4LDAsMCwwLDk1LDk1LDEwMCwxMDUsOTksMTE2LAorICAgIDk1LDk1LDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw2LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMCwwLDAsMCwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwxMTcsNCwwLDAsMCwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTcsMTEsMCwwLDAsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDEyLDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDgxLDMsMCwwLDExNSwzMiwwLDAsMCwwLDQsOSwxLDE1LDEsMTgsCisgICAgMSw2LDEsMywxLDIyLDEsMTMsMSwyMCwyLDEyLDEsOSwxLDE1LAorICAgIDEsMjgsMiwyNSwxLDksMSwxOSwxLDExNywyNiwwLDAsMCw5NSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNzAsNDAsOSwwLDAsMCwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLAorICAgIDAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLAorICAgIDk1LDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwKKyAgICAwLDk1LDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsOTUsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNywyMCwwLDAsMCw5NSw5OCwxMjEsMTE2LAorICAgIDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDExNywxNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDIsMTExLDExNCw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw1LDAsMCwwLDcwLDk3LDEwOCwxMTUsMTAxLAorICAgIDExNywxMiwwLDAsMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywKKyAgICAyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiwKKyAgICA2MiwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwKKyAgICAxMDUsOTksMTE1LDIzLDMsMCwwLDExNSwxMCwwLDAsMCwxNiwzLDYsMiwKKyAgICAxMiw4LDEyLDQ1LDYsMSwxMTcsMTMsMCwwLDAsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwwLDAsMTE1LDEwNCwwLAorICAgIDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsCisgICAgMiwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDkwLDMsMCwxMDAsMywKKyAgICAwLDEwMCw0LDAsMTMyLDAsMCw5MCw0LDAsMTAwLDUsMCwxMDAsNiwwLAorICAgIDEzMiwwLDAsOTAsNSwwLDEwMCw3LDAsMTAwLDgsMCwxMzIsMCwwLDkwLAorICAgIDYsMCwxMDAsOSwwLDEwMCwxMCwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMSwKKyAgICAwLDEwMCwxMiwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMywwLDEwMCwxNCwwLAorICAgIDEzMiwwLDAsOTAsOSwwLDEwMCwxNSwwLDgzLDQwLDE2LDAsMCwwLDExNywKKyAgICAxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDAsMTMwLDEsMCwKKyAgICAxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDEyMSwwLDAsMCw3OSwxMTIsCisgICAgMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAorICAgIDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMDUsMTA5LDEwMSwKKyAgICAzMiw0MCw5NywxMTAsMzIsMTA1LDExMCwxMTYsNDEsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKKyAgICAxMDUsMTAxLDEwMCwzMiwxMTIsOTcsMTE2LDEwNCw0NCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLAorICAgIDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsOTcsMzIsMTE1LDExNiwxMTQsNDYsMTAsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDAsMSwwLDAsMCwxMTcsMTksMCwKKyAgICAwLDAsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LAorICAgIDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTA3LDMsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsNCwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDIwLDAsMCwwLDEwNSwxLDAsMTI0LDAsMCwxMDYsMCwKKyAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMSwwLDU0LDgzLDQwLDIsMCwwLAorICAgIDAsMTE3LDExNCwxLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMDUsMTEwLDEwMywzMiwKKyAgICA5NywzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMCwxMDUsOTksMTE2LDMyLAorICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKKyAgICAxMDAsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE2LAorICAgIDExMSwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsMTE1LAorICAgIDExNiwxMTQsNDEsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODAsMTExLDExNSwKKyAgICAxMTUsMTA1LDk4LDEwOCwxMDEsMzIsMTA3LDEwMSwxMjEsMTE1LDU4LDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDEwOSwxMTYsMTA1LDEwOSwxMDEsMzksMzIsNDAsMTA5LAorICAgIDk3LDExMCwxMDAsOTcsMTE2LDExMSwxMTQsMTIxLDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsCisgICAgMTA5LDExMiwzMiwxMTEsMTAyLDMyLDEwOCw5NywxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDU5LDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQ1LDMyLDM5LDExNSwxMDUsMTIyLDEwMSwzOSwzMiwKKyAgICA0MCwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsNDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsCisgICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwKKyAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMTUsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDExNCwxMDEsOTcsMTAwLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE3LDUsMCwwLDAsMTA5LDExNiwxMDUsCisgICAgMTA5LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5NSwxMDksMTE2LDEwNSwxMDksMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsCisgICAgMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTMsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxMCwxMTcsMjMsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsOTksCisgICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwKKyAgICAyLDAsMTI0LDMsMCwxMzEsMiwwLDgzLDQwLDEsMCwwLDAsMTE3LDIyOCwKKyAgICAwLDAsMCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsCisgICAgMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiwKKyAgICA5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LAorICAgIDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLAorICAgIDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLAorICAgIDEwMCwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLAorICAgIDk5LDExMSwxMTQsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMTYsMTE0LDk3LDExMCwxMTUsMTAyLAorICAgIDEwMSwxMTQsMzIsMTEyLDEwMSwxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw0MCwxLDAsMCwwLDExNyw4LDAsMCwKKyAgICAwLDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDAsNCwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDEwLDAsMCwwLDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5Nyw0MCwKKyAgICAwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwKKyAgICAxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsCisgICAgOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNSwwLDAsMCwKKyAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDEyNSwKKyAgICAzLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE3LDI4LDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5OSwzLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwxMCwwLDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MCwKKyAgICAyLDAsMCwwLDExNywxNTEsMCwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywKKyAgICAxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwKKyAgICAxMTQsMTA1LDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsNDAsOTgsMTIxLDExNiwxMDEsCisgICAgMTE1LDQxLDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDQwLDk3LDMyLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDk3LDEwOCwxMDgsCisgICAgMTExLDExOSwxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICA3OCw0MCwxLDAsMCwwLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsNDAsMywKKyAgICAwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTAwLDk3LDExNiw5Nyw0MCwwLAorICAgIDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsCisgICAgMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsCisgICAgOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw4LDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTM1LDMsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsNiwxMTcsMjEsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCw5LDAsMCwwLDQ0LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw2MiwxLDAsMCwxMDAsMSwwLDEwMCwyLDAsMTA4LDAsMCwxMjUsCisgICAgMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDMsCisgICAgMCwxMjEsMTksMCwxMjQsMCwwLDEwNiwyLDAsMTI0LDMsMCwxMzEsMSwwLAorICAgIDEyNSw0LDAsODcsMTEwLDU4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwxMDYsCisgICAgMCwxLDEyNSw1LDAsMSwxMjIsMjYsMCwxMTYsNCwwLDEwMCwzLDAsMTAwLAorICAgIDQsMCwxMjQsMSwwLDEzMSwxLDEsMTI0LDUsMCwxMzAsMiwwLDg3LDg5LAorICAgIDEwMCwyLDAsMTAwLDIsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEwLDEsMCwKKyAgICA4OCwxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEwNiw3LDAsCisgICAgMTI1LDYsMCwxMjEsMTksMCwxMjQsMiwwLDEwNiw4LDAsMTI0LDYsMCwxMzEsCisgICAgMSwwLDEyNSw3LDAsODcsMTEwLDU4LDAsNCwxMTYsOSwwLDEwNywxMCwwLAorICAgIDExNCwyMDQsMCwxLDEyNSw1LDAsMSwxMjIsMjYsMCwxMTYsNCwwLDEwMCw1LAorICAgIDAsMTAwLDQsMCwxMjQsMSwwLDEzMSwxLDEsMTI0LDUsMCwxMzAsMiwwLAorICAgIDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEwLAorICAgIDEsMCw4OCwxMTYsNSwwLDEwNiwxMCwwLDEwMCwyLDAsMTAwLDcsMCwxMzEsCisgICAgMiwwLDEyNSw4LDAsMTIxLDMwLDAsMTI0LDgsMCwxMDYsMTMsMCwxMjQsNCwKKyAgICAwLDEwNiwxMywwLDEyNCw3LDAsMTAwLDEsMCwyNSwxMzEsMSwwLDEzMSwxLAorICAgIDAsODMsODcsMTEwLDU4LDAsNCwxMTYsMTQsMCwxMDcsMTAsMCwxMTQsNTcsMSwKKyAgICAxLDEyNSw1LDAsMSwxMjIsMjYsMCwxMTYsNCwwLDEwMCw2LDAsMTAwLDQsCisgICAgMCwxMjQsMSwwLDEzMSwxLDEsMTI0LDUsMCwxMzAsMiwwLDg3LDg5LDEwMCwKKyAgICAyLDAsMTAwLDIsMCwxMjUsNSwwLDEyNiw1LDAsODgsMTEwLDEsMCw4OCwKKyAgICAxMDAsMiwwLDgzLDQwLDgsMCwwLDAsMTE3LDUyLDAsMCwwLDY3LDExMSwKKyAgICAxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNDYsMTA1LDAsMCwwLDAsNzgsMTE3LDM5LDAsMCwwLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LAorICAgIDEwMSwzMiwxMTYsMTA0LDExNCwxMTEsMTE3LDEwMywxMDQsMzIsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5Nyw0MCw0MSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsMjUsMCwKKyAgICAwLDAsNzAsOTcsMTA1LDEwOCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLAorICAgIDk5LDExNiwzMiwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMTE3LDI4LDAsMCwwLAorICAgIDcwLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCisgICAgMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsODQsNDAsMTUsMCwKKyAgICAwLDAsMTE3LDgsMCwwLDAsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTcsCisgICAgMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLAorICAgIDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsMTE3LDcsMCwKKyAgICAwLDAsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDExNywxMSwwLDAsMCw3MywxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLDAsMCw5NSwxMDUsCisgICAgMTExLDExNyw3LDAsMCwwLDY2LDEyMSwxMTYsMTAxLDExNSw3Myw3OSwxMTcsOCwwLAorICAgIDAsMCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LDExMCwxMDEsMTE3LDE1LDAsMCwwLDEwMCwKKyAgICAxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDExNywxMSwKKyAgICAwLDAsMCw4MywxMjEsMTEwLDExNiw5NywxMjAsNjksMTE0LDExNCwxMTEsMTE0LDExNywyNSwKKyAgICAwLDAsMCw3MywxMTAsOTksMTE0LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTA4LDc4LDEwMSwKKyAgICAxMTksMTA4LDEwNSwxMTAsMTAxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE3LDQsMCwwLAorICAgIDAsNzgsMTExLDExMCwxMDEsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsMTE3LDYsCisgICAgMCwwLDAsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsMTgsMCwwLDAsODUsMTEwLAorICAgIDEwNSw5OSwxMTEsMTAwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsNjksMTE0LDExNCwxMTEsMTE0LAorICAgIDQwLDksMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LAorICAgIDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMTcsOCwwLDAsMCwKKyAgICAxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsCisgICAgMTA0LDExNywxMiwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDExNSwxMTcsMywwLDAsMCwxMDEsMTIwLDk5LDExNywxMCwwLDAsMCwxMTQsCisgICAgMTAxLDk3LDEwMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LDAsMCwwLDEwMSwxMTAsCisgICAgOTksMTExLDEwMCwxMDUsMTEwLDEwMywxMTcsMTUsMCwwLDAsMTEwLDEwMSwxMTksMTA4LDEwNSwKKyAgICAxMTAsMTAxLDk1LDEwMCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTQ0LDMsMCwwLDExNSwzOCwwLDAsMCwwLDIsCisgICAgMTIsMSwxNSwxLDMsMSwxOSwxLDE4LDEsOSwxLDMxLDEsMTgsMSwKKyAgICAzLDEsMTksMSwxOCwxLDksMSwzMSwxLDE4LDEsMywxLDMwLDEsCisgICAgMTgsMSw5LDEsMTE3LDIzLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsNDUsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDUyLDIsMCwwLDEyNCwwLDAsMTA2LDAsMCwKKyAgICAxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMDAsMTAsMCwxMjUsMywwLDEyMSwKKyAgICAxNiwwLDExNiwyLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSw0LDAsODcsMTEwLAorICAgIDI0LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2MywwLDEsMSwxLDEwMCwKKyAgICAxMCwwLDEyNSw0LDAsODksMTEwLDE0LDEsODgsMTIxLDE5LDAsMTI0LDAsMCwKKyAgICAxMDYsNCwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLDg3LDExMCwxOCwwLAorICAgIDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLDEsODksMTEwLDIzMCwKKyAgICAwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMTI1LAorICAgIDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwKKyAgICAwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKKyAgICAxNTksMCwxLDEsMSw4OSwxMTAsMTc0LDAsODgsMTIxLDI4LDAsMTI0LDAsMCwKKyAgICAxMDYsOCwwLDEyNCwxLDAsMTI0LDYsMCwxMjQsNCwwLDEyNCw1LDAsMTMxLAorICAgIDQsMCwxMjUsNywwLDg3LDExMCwyNCwwLDQsMTE2LDksMCwxMTYsMTAsMCwKKyAgICAxMDIsMiwwLDEwNywxMCwwLDExNCwyMTQsMCwxLDEsMSw4OSwxMTAsMTE5LDAsCisgICAgODgsMTE2LDExLDAsMTAwLDIsMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDMsMCwKKyAgICAxLDExNiwxMiwwLDEwNiwxMywwLDEyNCw3LDAsMTMxLDEsMCwxMjUsOCwwLAorICAgIDExNiwxNCwwLDEyNCw4LDAsMTE2LDE1LDAsMTMxLDIsMCwxMTQsMzgsMSwxMTYsCisgICAgMTYsMCwxMDYsMTcsMCwxMjQsOCwwLDEyNCwyLDAsMTMxLDIsMCwxLDExNiwKKyAgICAxMSwwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwwLDEsMTI0LDgsMCw4MywKKyAgICAxMDAsNCwwLDEyNSw5LDAsMTE2LDksMCwxMjQsOSwwLDEwNiwxOCwwLDEyNCwKKyAgICA0LDAsMTMxLDEsMCwxMDAsNSwwLDEyNCwxLDAsMTAwLDYsMCwxMjQsNCwKKyAgICAwLDEzMSwxLDIsMTMwLDEsMCwxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwKKyAgICAxMzEsMSwwLDEyNSwxMCwwLDExNiwxOSwwLDExNiwyMCwwLDEyNCwxMCwwLDEyNCwKKyAgICAyLDAsMTAwLDcsMCwxMDAsOCwwLDEwMCwxMSwwLDEzMSw0LDEsMTI1LDExLAorICAgIDAsMTE2LDExLDAsMTAwLDMsMCwxMjQsMiwwLDEzMSwyLDAsMSwxMTYsMjIsCisgICAgMCwxMDYsMjMsMCwxMiwxMTQsNDgsMiwxMjQsNCwwLDEwMCwxMCwwLDEwNyw5LAorICAgIDAsMTE0LDQ4LDIsMTI0LDMsMCwxMDAsMTAsMCwxMDcsOSwwLDExNCw0OCwyLAorICAgIDExNiwyNCwwLDExNiwyNSwwLDEzMSwxLDAsMTI1LDYsMCwxMjQsNiwwLDEwNiwKKyAgICAyNiwwLDExNiwyNywwLDEyNCwzLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTI0LAorICAgIDYsMCwxMDYsMjYsMCwxMTYsMjcsMCwxMTYsMjgsMCwxMjQsMTAsMCwxMzEsMSwKKyAgICAwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCw2LDAsMTA2LDI2LDAsMTE2LDEyLAorICAgIDAsMTA2LDI5LDAsMTI0LDExLDAsMTMxLDEsMCwxMzEsMSwwLDEsMTIxLDM2LAorICAgIDAsMTI0LDAsMCwxMDYsMzAsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsMCwKKyAgICAxMzEsMywwLDEsMTE2LDExLDAsMTAwLDksMCwxMjQsNCwwLDEzMSwyLDAsCisgICAgMSw4NywxMTMsNDgsMiw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDQ0LDIsMSwKKyAgICAxLDEsODksMTEzLDQ4LDIsODgsMTEwLDAsMCwxMjQsMTEsMCw4Myw0MCwxMiwKKyAgICAwLDAsMCwxMTcsMTkwLDAsMCwwLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDgyLDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LAorICAgIDMyLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwzMiwxMTYsMTExLDMyLDk4LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDMyLDg0LAorICAgIDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ0LDMyLDExNSwxMDEsMTE2LDk1LDEwMCw5NywKKyAgICAxMTYsOTcsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk3LDEwOCwxMTUsMTExLDMyLDk4LDEwMSwzMiwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNyw1LDAsMCwwLDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTE3LDEzLDAsMCwwLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKKyAgICAxMjMsMTI1LDExNywxOSwwLDAsMCw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSwKKyAgICA5OSwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywxMjUsMTE3LDIxLDAsMCwwLDc4LAorICAgIDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwKKyAgICAxMTAsMzIsMTIzLDEyNSwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDEsMTIwLDEwMSw5OSwxMTcsCisgICAgMTIsMCwwLDAsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKKyAgICAxMTcsMTAsMCwwLDAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw3OCwKKyAgICA4NCw0MCwzMSwwLDAsMCwxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLAorICAgIDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxOSwwLDAsMCw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDEwLAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTcsMywwLAorICAgIDAsMCwxMDUsMTEwLDExNiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDExNyw3LDAsMCwwLDczLDc5LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMjAsCisgICAgMCwwLDAsOTUsOTgsMTIxLDExNiwxMDEsMTE1LDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OCwKKyAgICAxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDgsMCwwLDAsNjksNzksNzAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsNywwLDAsMCwxMDksOTcsCisgICAgMTE0LDExNSwxMDQsOTcsMTA4LDExNyw1LDAsMCwwLDEwOCwxMTEsOTcsMTAwLDExNSwxMTcsCisgICAgMTAsMCwwLDAsMTA1LDExNSwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTcsMTAsCisgICAgMCwwLDAsOTUsOTksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDExNyw0LDAsCisgICAgMCwwLDk1LDEwNSwxMDksMTEyLDExNywxNiwwLDAsMCw5NSwxMDIsMTA1LDEyMCw5NSwKKyAgICA5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw2LDAsMCwwLAorICAgIDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDExNyw3LDAsMCwwLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLAorICAgIDExNyw0LDAsMCwwLDg0LDExNCwxMTcsMTAxLDExNywzLDAsMCwwLDExNSwxMjEsCisgICAgMTE1LDExNywxOSwwLDAsMCwxMDAsMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICA5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOSwwLDAsMCw5OCwxMjEsCisgICAgMTE2LDEwMSw5NywxMTQsMTE0LDk3LDEyMSwxMTcsMTIsMCwwLDAsOTUsNzcsNjUsNzEsCisgICAgNzMsNjcsOTUsNjYsODksODQsNjksODMsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsCisgICAgMTAxLDExMCwxMDAsMTE3LDcsMCwwLDAsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMywxMTcsCisgICAgMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsNSwwLDAsMCwxMDAsMTE3LDEwOSwxMTIsCisgICAgMTE1LDExNywxNSwwLDAsMCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsCisgICAgMTAxLDk5LDExMSwxMDAsMTAxLDQwLDEyLDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgMTE3LDEyLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTA5LDExNiwxMDUsMTA5LAorICAgIDEwMSwxMTcsMTMsMCwwLDAsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDIsMCwwLDAsMTE1LDExNiwxMTcsNCwwLDAsMCwxMDAsCisgICAgOTcsMTE2LDk3LDExNywxMCwwLDAsMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LAorICAgIDExNiw5NywxMTcsNSwwLDAsMCwxMDIsMTExLDExNywxMTAsMTAwLDExNywzLDAsMCwKKyAgICAwLDEwOSwxMTUsMTAzLDExNywxMiwwLDAsMCwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LAorICAgIDk4LDEyMSwxMTYsMTAxLDExNSwxMTcsMTEsMCwwLDAsOTksMTExLDEwMCwxMDEsOTUsMTExLAorICAgIDk4LDEwNiwxMDEsOTksMTE2LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTY2LDMsCisgICAgMCwwLDExNSw5OCwwLDAsMCwwLDcsMTUsMSw2LDEsMywxLDE2LAorICAgIDEsMTMsMSwxMSwyLDMsMSwxOSwxLDEzLDEsNSwyLDE2LDEsMywKKyAgICAxLDE5LDEsMTMsMSw1LDIsMywxLDEyLDEsMywxLDEzLDEsMTksCisgICAgMSw1LDIsOSwxLDcsMSwxNSwxLDE1LDEsMTYsMSw2LDEsNywKKyAgICAxLDQsMiw2LDEsMTgsMSwxNSwxLDE1LDEsNiwxLDEyLDEsOSwKKyAgICAxLDEzLDEsMjIsMSwxMiwxLDEyLDEsMTksMSwyNSwxLDIyLDEsMywKKyAgICAxLDE5LDEsMTcsMSwxMywxLDgsMSwxMTcsMjEsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMjQsMCwwLAorICAgIDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LAorICAgIDAsMSwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzYsCisgICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSwzMiw2OSwxMjAsMTAxLDk5LDExNywxMTYsMTA1LDExMSwxMTAsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAorICAgIDEwMSwzMiw5NywxMTAsMTAwLDMyLDgyLDEwMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsCisgICAgMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMTA5LDEwMSwxMTAsMTE2LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLDk3LDEwMCwzMiwKKyAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQ2LDMyLDg1LDExNSwxMDEsCisgICAgMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDEwMCwxMDUsOTksMTE2LDk3LDExNiwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTksMTA0LDEwMSwxMTYsCisgICAgMTA0LDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTAzLDEwMSwxMTYsOTUsCisgICAgOTksMTExLDEwMCwxMDEsMzIsMTE3LDExNSwxMDEsMTE1LDQ3LDExOSwxMTQsMTA1LDExNiwxMDEsMTE1LAorICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDQwLDEsMCwwLDAsMTE3LDEyLDAsMCwwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwyMjgsMywwLDAsMTE1LDIsMCwwLDAsMCw4LDExNywyNCwwLDAsCisgICAgMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDEwLDAsMCwwLDExNywKKyAgICA4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDEwLDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTcsMTUsMCwwLDAsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxMTcsOCwKKyAgICAwLDAsMCwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDExNywxMCwwLDAsMCwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNyw4LDAsMCwwLDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCwxLDAsMCwwLDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCwKKyAgICA0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTIsMCwwLDAsODMsMTExLDExNywxMTQsCisgICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMDUsMywwLDAsMTE1LDE0LDAsMCwKKyAgICAwLDE2LDIsMTIsNiwxMiwxMiwxMiwxMCwxMiw5LDEyLDIyLDEyLDYyLDExNywKKyAgICAxMiwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLAorICAgIDAsMiwwLDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCw2OSwxMDEsMCwKKyAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwKKyAgICAxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAxLDUsMCwxMzUsCisgICAgMCwwLDEwMiwxLDAsMTAwLDQsMCwxMDAsNSwwLDEzNCwwLDAsMTMxLDEsCisgICAgMCw5MCw2LDAsMTAxLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCwKKyAgICAxMzEsMSwwLDkwLDcsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCw5MCwKKyAgICA4LDAsMTM1LDAsMCw4Myw0MCwxMCwwLDAsMCwxMTcsMTAsMCwwLDAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMDMsMCwwLDAsNjYsCisgICAgOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICA5OSwxMDgsOTcsMTE1LDExNSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCisgICAgMTAwLDExNSwzMiwxMTYsMTA0LDk3LDExNiwxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLAorICAgIDExNywxMTUsOTcsMTAzLDEwMSw0Niw5OSwzLDAsMCwwLDAsMCwwLDAsMywKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwKKyAgICAxMjQsMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwKKyAgICAxLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw3NSwwLDAsMCwKKyAgICA2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLAorICAgIDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNzgsNDAsMiwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsCisgICAgOTcsMTE2LDEwNCw0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LAorICAgIDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTE3LDQsCisgICAgMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwKKyAgICAwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LAorICAgIDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsCisgICAgMjQ0LDMsMCwwLDExNSw0LDAsMCwwLDAsMyw5LDEsMTE3LDE5LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsCisgICAgMCwwLDExNiwxLDAsMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsMTE3LDI2LDAsMCwwLDc2LAorICAgIDExMSw5NywxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MCwzLDAsMCwwLDExNyw1LAorICAgIDAsMCwwLDExNSwxMTcsMTEyLDEwMSwxMTQsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsOTUsOTUsOTksMTA4LAorICAgIDk3LDExNSwxMTUsOTUsOTUsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwKKyAgICAwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDI1MCwzLDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDUsMTE3LDIyLDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LAorICAgIDAsMCw4Myw0MCwxLDAsMCwwLDExNyw1OCwwLDAsMCw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsCisgICAgOTcsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQwLDEsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsNDAsMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwKKyAgICAwLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxLDQsMCwKKyAgICAwLDExNSwyLDAsMCwwLDAsMywxMTcsMjMsMCwwLDAsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCw4LDAsMCwwLDY3LDAsMCwwLDExNSw0MSwwLDAsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLDAsMTQzLDE3LDAsCisgICAgMTI1LDIsMCwxMjQsMiwwLDEwNiwyLDAsMTMxLDAsMCw4Myw4NywxMDAsMiwKKyAgICAwLDgxLDg4LDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMzksMCwwLAorICAgIDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsOTcsMTE2LDk3LAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5NywxMTUsMzIsMTE0LDk3LAorICAgIDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMTE3LDEsMCwwLDAsMTE0LDc4LDQwLAorICAgIDMsMCwwLDAsMTE3LDMsMCwwLDAsOTUsMTA1LDExMSwxMTcsNiwwLDAsCisgICAgMCw3MCwxMDUsMTA4LDEwMSw3Myw3OSwxMTcsNCwwLDAsMCwxMTQsMTAxLDk3LDEwMCwKKyAgICA0MCwzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwKKyAgICAwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDIsMTA1LDEwOCwxMDEsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsCisgICAgMCwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDYsNCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwyLDIxLDEsMTE3LDE5LDAsMCwwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDksCisgICAgMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsCisgICAgMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywKKyAgICAxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwKKyAgICAxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsOTksCisgICAgMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDEwOCwxMTEsCisgICAgOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMiwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE3LDgsMCwwLDAsMTAzLAorICAgIDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MCwxLDAsMCwwLDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCwKKyAgICA0MCwxLDAsMCwwLDExNyw5LDAsMCwwLDk1LDk1LDk5LDEwOCw5NywxMTUsCisgICAgMTE1LDk1LDk1LDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDIzOSwzLDAsMCwxMTUsMTAsMCwwLDAsMTYsMyw2LAorICAgIDIsMTIsNiwyNCw3LDE4LDUsMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKKyAgICAwLDAsMCw0LDAsMCwwLDY2LDAsMCwwLDExNSw2OCwwLDAsMCwKKyAgICAxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAorICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAorICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwxLDkwLDYsMCwKKyAgICAxMDAsMTAsMCw4Myw0MCwxMSwwLDAsMCwxMTcsMTYsMCwwLDAsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsNjIsCisgICAgMCwwLDAsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LAorICAgIDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwKKyAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSwzOSwwLDAsMCwxMTYsMCwwLDEwNiwxLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTA1LDIsMCwxMjQsMiwwLAorICAgIDEwNiwyLDAsMTAwLDEsMCw1NCwxMjQsMiwwLDEwNiwzLDAsMTAwLDIsMCwKKyAgICA1NCw4Myw0MCwzLDAsMCwwLDExNywzMywwLDAsMCw4MiwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsMTE3LDUsMCwKKyAgICAwLDAsMTA5LDExNiwxMDUsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTUsMTA1LDEyMiwxMDEsCisgICAgNDAsNCwwLDAsMCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw0LDAsCisgICAgMCwwLDExNSwxMTYsOTcsMTE2LDExNyw4LDAsMCwwLDExNSwxMTYsOTUsMTA5LDExNiwKKyAgICAxMDUsMTA5LDEwMSwxMTcsNywwLDAsMCwxMTUsMTE2LDk1LDExNSwxMDUsMTIyLDEwMSw0MCwKKyAgICAzLDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLAorICAgIDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsMiwwLDAsMCwxMTUsMTE2LDQwLDAsMCwKKyAgICAwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsCisgICAgMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwKKyAgICAxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEwLDAsMCwwLDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSwxNiw0LDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDIsMTUsMSwxMTcsMjcsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMTUsMTE2LDk3LDExNiwxMTUsOTksNCwwLDAsMCwwLDAsMCwwLDUsMCwKKyAgICAwLDAsMTMsMCwwLDAsNjcsMCwwLDAsMTE1LDgxLDAsMCwwLDEyMSwKKyAgICAyMiwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTA2LDIsCisgICAgMCwxMjUsNCwwLDg3LDExMCwyNCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCisgICAgNDgsMCwxLDEsMSwxMDAsMSwwLDEyNSw0LDAsODksMTEwLDEsMCw4OCwKKyAgICAxMjQsNCwwLDEwMCwyLDAsNzksMTI1LDQsMCwxMjQsMCwwLDEwNiw0LDAsCisgICAgMTI0LDIsMCwxMjQsMywwLDEwMCwzLDAsMTI0LDQsMCwxMzEsMiwxLDgzLAorICAgIDQwLDQsMCwwLDAsNzgsMTA1LDE4MiwxLDAsMCwxMDUsMTI4LDAsMCwwLAorICAgIDExNyw1LDAsMCwwLDk1LDEwOSwxMTEsMTAwLDEwMSw0MCw1LDAsMCwwLDExNywKKyAgICAzLDAsMCwwLDk1LDExMSwxMTUsMTE3LDQsMCwwLDAsMTE1LDExNiw5NywxMTYsCisgICAgMTE3LDcsMCwwLDAsMTE1LDExNiw5NSwxMDksMTExLDEwMCwxMDEsMTE3LDcsMCwwLAorICAgIDAsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDExNyw4LDAsMCwwLDExNSwxMDEsMTE2LAorICAgIDk1LDEwMCw5NywxMTYsOTcsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDExLDAsMCwwLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDEzLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLDEwMCw5NywxMTYsOTcsMTE3LDQsCisgICAgMCwwLDAsMTA5LDExMSwxMDAsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsCisgICAgMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjEsNCwwLDAsMTE1LDEyLDAsMCwwLAorICAgIDAsMiwzLDEsMjIsMSwxMywxLDExLDMsMTAsMSwxMTcsMzIsMCwwLAorICAgIDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCw0Niw5NSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDExNyw1LDAsMCwwLDk1LDEwOSwxMTEsMTAwLDEwMSwxMDUsMTgyLDEsMCwwLAorICAgIDk5LDMsMCwwLDAsMSwwLDAsMCw5LDAsMCwwLDE4LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw1MywxLDAsMCwxMTYsMCwwLDEyNCwxLDAsCisgICAgMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNSwwLDEwMywwLDAsMTI1LAorICAgIDYsMCwxMjAsNTQsMCwxMjQsNCwwLDExNCw4MCwwLDExNiwxLDAsMTI0LDQsCisgICAgMCwxMzEsMSwwLDEyLDExNCw4MCwwLDExNiwwLDAsMTI0LDQsMCwxMzEsMSwKKyAgICAwLDkyLDIsMCwxMjUsNCwwLDEyNSw3LDAsMTI0LDYsMCwxMDYsMiwwLAorICAgIDEyNCw3LDAsMTMxLDEsMCwxLDExMywyNywwLDg3LDEyMCwxMzIsMCwxMTYsMywKKyAgICAwLDEyNCw2LDAsMTMxLDEsMCw2OCw5MywxMTgsMCwxMjUsNywwLDExNiw0LAorICAgIDAsMTI0LDQsMCwxMjQsNywwLDEzMSwyLDAsMTI1LDQsMCwxMjEsMTcsMCwKKyAgICAxMTYsNSwwLDEwNiw2LDAsMTI0LDQsMCwxMzEsMSwwLDEsODcsMTEzLDk0LAorICAgIDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwxNTUsMCwxLDEsMSwxMTksOTQsCisgICAgMCw4OSwxMTMsOTQsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIxMSwwLDEsCisgICAgMTI1LDgsMCwxLDEyMiwyNSwwLDExNiw5LDAsMTAwLDEsMCwxMjQsNCwwLAorICAgIDEyNCw4LDAsMTMxLDMsMCwxLDEwMCwyLDAsODMsODcsODksMTAwLDIsMCwKKyAgICAxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTMsOTQsMCw4OCwxMTMsOTQsCisgICAgMCw4NywxMjEsMzMsMCwxMTYsMTAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsCisgICAgMCwxMzEsMywwLDEsMTE2LDksMCwxMDAsMywwLDEyNCwxLDAsMTMxLDIsCisgICAgMCwxLDg3LDExMCw1MywwLDQsMTE2LDgsMCwxMDcsMTAsMCwxMTQsNDgsMSwKKyAgICAxLDEyNSw4LDAsMSwxMjIsMjEsMCwxMTYsOSwwLDEwMCwxLDAsMTI0LDEsCisgICAgMCwxMjQsOCwwLDEzMSwzLDAsMSw4Nyw4OSwxMDAsMiwwLDEwMCwyLDAsCisgICAgMTI1LDgsMCwxMjYsOCwwLDg4LDExMCwxLDAsODgsMTAwLDIsMCw4Myw0MCwKKyAgICA0LDAsMCwwLDExNywyNywwLDAsMCw4NywxMTQsMTA1LDExNiwxMDEsMzIsOTgsCisgICAgMTIxLDExNiwxMDEsMTE1LDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDYsMTE3LDI3LDAsMCwwLDk5LDExMSwxMTcsMTA4LDEwMCwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNTgsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzgsMTE3LDEyLDAsMCwwLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICAxMDAsMzIsMTIzLDMzLDExNCwxMjUsNDAsMTEsMCwwLDAsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsMTE3LDExLDAsMCwwLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsMTE3LDYsMCwwLDAsCisgICAgOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsOCwwLDAsMCwxMTQsMTAxLDExOCwxMDEsMTE0LAorICAgIDExNSwxMDEsMTAwLDExNywxMCwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDYsMTExLAorICAgIDEwNSwxMTAsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNSwwLDAsMCwxMDksCisgICAgMTA3LDEwMCwxMDUsMTE0LDExNywxNSwwLDAsMCw3MCwxMDUsMTA4LDEwMSw2OSwxMjAsMTA1LAorICAgIDExNSwxMTYsMTE1LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLDAsMCw3OSw4Myw2OSwKKyAgICAxMTQsMTE0LDExMSwxMTQsMTE3LDE2LDAsMCwwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCisgICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNywxMywwLDAsMCw5NSwxMTksCisgICAgMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSw0MCw5LDAsMCwwLAorICAgIDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTcsNCwwLDAsMCwxMDAsOTcsMTE2LDk3LDExNyw1LDAsMCwwLAorICAgIDk1LDEwOSwxMTEsMTAwLDEwMSwxMTcsNiwwLDAsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDExNyw4LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTEyLDk3LDExNiwxMDQsOTUsMTEyLDk3LDExNCwxMTYsMTE1LDExNyw0LDAsMCwKKyAgICAwLDExMiw5NywxMTQsMTE2LDExNywzLDAsMCwwLDEwMSwxMjAsOTksNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMTUsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDQsMCwwLDExNSwzOCwwLDAsMCwwLAorICAgIDIsMTgsMSw2LDIsMjIsMSwxOCwxLDE3LDIsMTksMSwxNSwxLDMsCisgICAgMSwxNywxLDEzLDIsNywxLDE4LDMsMTYsMSwyNywxLDMsMSwxNiwKKyAgICAxLDE3LDEsMTgsMiwxMTcsMjUsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDc4LDQwLDcsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwKKyAgICAxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LAorICAgIDk1LDk1LDExNywxMCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwKKyAgICAxMTUsMTE3LDE1LDAsMCwwLDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwKKyAgICAxMDEsOTksMTExLDEwMCwxMDEsMTE3LDgsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LAorICAgIDExNiw5Nyw0MCwxLDAsMCwwLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLAorICAgIDk5LDk3LDEwOCwxMTUsOTUsOTUsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLAorICAgIDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw2MiwxMTcsMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMiw0LDAsMCwxMTUsOCwwLDAsMCwKKyAgICAxNiwyLDYsMiwxMiw1LDEyLDExLDExNywxNiwwLDAsMCw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjYsMCwKKyAgICAwLDAsMTE1LDYyLDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLAorICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCisgICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAorICAgIDAsMTAwLDgsMCw4Myw0MCw5LDAsMCwwLDExNywyMCwwLDAsMCw4MywKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsNDUsMCwwLDAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExOSwKKyAgICAxMDQsMTA1LDk5LDEwNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTE1LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsMSwKKyAgICAxLDgzLDQwLDMsMCwwLDAsNzgsMTE3LDEwLDAsMCwwLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDg0LDQwLDIsMCwwLDAsMTE3LDEyLDAsCisgICAgMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw0LAorICAgIDAsMCwwLDg0LDExNCwxMTcsMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsCisgICAgMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwKKyAgICAwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMSwKKyAgICAwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2NSw0LAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDMyLDAsMCwwLDgzLDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsCisgICAgMCwwLDAsMCwwLDAsMCw2LDAsMCwwLDYsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEzOCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCisgICAgMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsCisgICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwKKyAgICAzLDAsMTI0LDIsMCwxMDAsMCwwLDEzMSw0LDAsMTI1LDQsMCwxMTYsNCwKKyAgICAwLDEwNiw1LDAsMTI0LDQsMCwxMzEsMSwwLDEyNSw1LDAsMTE2LDYsMCwKKyAgICAxMjQsNSwwLDExNiw3LDAsMTMxLDIsMCwxMTQsMTAxLDAsMTE2LDgsMCwxMDAsCisgICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCw1LDAsODMsMTE2LDksMCwKKyAgICAxMDAsMiwwLDEwNiwxMCwwLDEyNCwyLDAsMTMxLDEsMCwxMDAsMywwLDEyNCwKKyAgICAxLDAsMTAwLDQsMCwxMjQsMiwwLDEzMSwxLDIsMTMwLDEsMCwxMDAsMCwKKyAgICAwLDgzLDQwLDUsMCwwLDAsNzgsMTE3LDIxLDAsMCwwLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLAorICAgIDExNCwxMjUsMTE3LDIxLDAsMCwwLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDEyNSwxMTcsNCwwLDAsCisgICAgMCwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwxMSwKKyAgICAwLDAsMCwxMTcsMTIsMCwwLDAsMTAzLDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLAorICAgIDExMCw5NywxMDksMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsCisgICAgOTcsMTE3LDIwLDAsMCwwLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwKKyAgICAxMDksOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE3LDQsMCwwLDAsNzgsCisgICAgMTExLDExMCwxMDEsMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCwxMTcsCisgICAgNSwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMTUsMTE3LDEwLDAsMCwwLDEwNSwxMTUsCisgICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwKKyAgICAxMDAsMTAxLDk1LDExNiwxMjEsMTEyLDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsCisgICAgOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDExLDAsMCwKKyAgICAwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwKKyAgICAwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsNDAsNiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywKKyAgICAxMDksMTAxLDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw0LDAsMCwwLAorICAgIDEwMCw5NywxMTYsOTcsMTE3LDEwLDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsCisgICAgOTcsMTE2LDk3LDExNyw1LDAsMCwwLDEwMiwxMTEsMTE3LDExMCwxMDAsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw2OCw0LDAsMCwxMTUsMTgsMCwwLDAsMCwKKyAgICAxLDE1LDEsMTUsMSwyNCwxLDE1LDEsMTUsMSwxMywxLDQsMiwxOCwKKyAgICAxLDExNywyOSwwLDAsMCw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LAorICAgIDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwKKyAgICAxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKKyAgICAxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsCisgICAgODMsNDAsMiwwLDAsMCwxMTcsMzksMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LAorICAgIDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLAorICAgIDEwMSw0Niw3OCw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNywKKyAgICA4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwKKyAgICAwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwKKyAgICAxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLAorICAgIDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiwKKyAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDgwLDQsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsMiwxMTcsMzEsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LAorICAgIDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw3OCw0MCw3LDAsMCwwLDExNyw4LDAsMCwKKyAgICAwLDk1LDk1LDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLAorICAgIDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSwxMTcsMTEsMCwwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwMSwxMTYsOTUsOTksMTExLAorICAgIDEwMCwxMDEsMTE3LDEwLDAsMCwwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDIwLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDYxLDQsMCwwLDExNSw4LAorICAgIDAsMCwwLDE2LDIsNiwyLDEyLDMsMTIsMTIsMTE3LDIwLDAsMCwwLAorICAgIDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDUsMCwwLDAsNjYsMCwwLDAsMTE1LDEwNCwwLDAsMCwxMjQsMCwKKyAgICAwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLAorICAgIDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwKKyAgICAxMDEsNSwwLDEwMSw2LDAsMTAxLDcsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAorICAgIDAsMCwxMzEsMSwwLDEzMSwxLDAsMTMxLDEsMCw5MCw4LDAsMTAwLDYsCisgICAgMCwxMDAsNywwLDEzMiwwLDAsOTAsOSwwLDEwMCw4LDAsMTAwLDksMCwKKyAgICAxMzIsMCwwLDkwLDEwLDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsMCw5MCwKKyAgICAxMSwwLDEwMCwxMiwwLDgzLDQwLDEzLDAsMCwwLDExNywxOSwwLDAsMCwKKyAgICA2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsOTMsMCwwLDAsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LAorICAgIDExMSwxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwKKyAgICAxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksCisgICAgMTA1LDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsCisgICAgMSwwLDEyNCwwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLAorICAgIDAsMTAwLDAsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDIsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsNDAsMywwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsCisgICAgMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwKKyAgICAwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTcsNCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDksMSwxMTcsMjgsMCwwLDAsNjksMTIwLDExNiwKKyAgICAxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCw0LDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSwxNzUsCisgICAgMCwwLDAsMTI0LDEsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LDYsMCwxMjUsCisgICAgMiwwLDEyMSwxMDcsMCwxMTYsMiwwLDExNiwzLDAsMTA2LDQsMCwxMjQsMSwKKyAgICAwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMywwLDEyNSwzLDAsMTE2LDYsMCwKKyAgICAxMDAsMSwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMiwwLDEsMTI0LDAsMCwKKyAgICAxMDYsNywwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMTE3LDAsMTE2LDgsMCwxMjQsCisgICAgMywwLDEwMCwyLDAsMTMxLDIsMCwxMiwxMTQsMTE3LDAsMTE2LDksMCwxMjQsCisgICAgMCwwLDEwNiw1LDAsMTMxLDEsMCwxMDAsMywwLDI1LDEwMywxLDAsMTI0LAorICAgIDMsMCw5NSwxMCwwLDExMCwwLDAsMTI0LDMsMCw4Myw4NywxMTAsNDYsMCwKKyAgICAxLDEsMSwxMjQsMiwwLDEyLDExNCwxNjMsMCwxMjQsMSwwLDExNiwwLDAsCisgICAgMTA2LDEsMCwxMDcsNiwwLDExNCwxNjMsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LAorICAgIDEsMCw2MSwxMTAsMCwwLDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwKKyAgICAwLDgzLDQwLDUsMCwwLDAsMTE3LDI1LDAsMCwwLDc2LDExMSw5NywxMDAsCisgICAgMzIsOTcsMTEwLDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDExNywzMywwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LDEyNSwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMDUsMCwwLDAsMCw3OCw0MCwxMSwKKyAgICAwLDAsMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMTE3LDI1LDAsMCwwLDk1LDk5LDk3LDEwOCwKKyAgICAxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwKKyAgICAxMDksMTExLDExOCwxMDEsMTAwLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwKKyAgICAwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwxMDAsMTIxLDExMCw5NywxMDksMTA1LDk5LDExNywKKyAgICA0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNywxNiwwLDAsMCw5NSwxMTgsMTAxLAorICAgIDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDcsMCwwLAorICAgIDAsMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsOTUsMTE1LDExMiwxMDgsMTA1LDExNiwxMTcsOCwwLDAsMCw5NSw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5NSw0MCw0LDAsMCwwLDExNyw0LDAsMCwwLDExNSwKKyAgICAxMDEsMTA4LDEwMiwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE3LDksMCwwLDAsMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDEwMSw0LDAsMCwxMTUsMjQsMCwwLDAsMCw1LAorICAgIDE1LDEsMywxLDksMSwxNSwxLDE2LDEsMzEsMSwyOCwxLDgsMSwKKyAgICAzLDEsMjIsMSwxMywxLDExNywzMSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsCisgICAgMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDgsCisgICAgMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsMTE1LAorICAgIDQ4LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwxLDAsCisgICAgMTAwLDEsMCwyNSwxMzcsMCwwLDExNiwyLDAsMTM1LDAsMCwxMDIsMSwwLAorICAgIDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDExNiwzLDAsNjgsMTMxLDEsMCwKKyAgICAxMzEsMSwwLDgzLDQwLDQsMCwwLDAsMTE3LDQ5LDAsMCwwLDgyLDEwMSwKKyAgICAxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NiwxMDUsCisgICAgMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwKKyAgICAwLDkzLDIxLDAsMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwKKyAgICAyMywxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQwLDIsMCwKKyAgICAwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDc4LAorICAgIDQwLDAsMCwwLDAsNDAsMiwwLDAsMCwxMTcsMiwwLDAsMCw0NiwKKyAgICA0OCwxMTcsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw0MCwxLDAsMCwKKyAgICAwLDExNyw5LDAsMCwwLDEwMiwxMDUsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTIyLDQsMCwwLDExNSwyLDAsMCwwLDYsMSwxMTcsCisgICAgNDksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAorICAgIDEwMSwxMjAsMTEyLDExNCw2Miw0MCw0LDAsMCwwLDExNywxMSwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDExNywzLDAsMCwwLDk3LDExMCwxMjEsMTE3LDE4LDAsMCwwLAorICAgIDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLAorICAgIDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsCisgICAgMCwwLDQwLDEsMCwwLDAsMTE3LDksMCwwLDAsMTAyLDEwNSwxMDgsMTAxLAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsCisgICAgMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTAsMCwwLDAsMTA1LDExNSw5NSwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE5LDQsMCwwLDExNSw2LDAsMCwwLDAsCisgICAgMiwxOSwxLDE4LDEsMTE3LDMwLDAsMCwwLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsCisgICAgMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKKyAgICAwLDAsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw2MywwLDAsMCwKKyAgICA4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5NywKKyAgICAxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwKKyAgICAzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsNzgsCisgICAgNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwyLAorICAgIDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsOCwwLDAsCisgICAgMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCisgICAgMTAwLDEwMSwxMjUsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLDExNywyOCwwLAorICAgIDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDAsMiwwLDAsCisgICAgMCwxMTcsNTMsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLAorICAgIDEwMSwzMiw5NywxMTUsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExMCwxMTEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCw0MCwxLDAsMCwKKyAgICAwLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDQwLDIsMCwwLDAsMTE3LAorICAgIDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw4LDAsMCwwLDEwMiwxMTcsMTA4LAorICAgIDEwOCwxMTAsOTcsMTA5LDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDEyOSw0LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDMwLDAsMCwwLAorICAgIDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNzgsNDAsCisgICAgMTIsMCwwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LAorICAgIDExNywxMiwwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSwKKyAgICA5NSwxMTcsNywwLDAsMCw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNyw4LDAsCisgICAgMCwwLDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwxMTcsMTEsMCwwLDAsOTUsCisgICAgOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDExLDAsMCwwLDExNSwKKyAgICAxMDEsMTE2LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsMTE1LAorICAgIDEwMSwxMTYsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEwLDAsMCwwLDEwNSwxMTUsCisgICAgOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw4LDAsMCwwLDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDExMSwxMDAsMTAxLDExNywxMCwwLDAsMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLAorICAgIDExNywxMTQsOTksMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw4OSw0LDAsMCwKKyAgICAxMTUsMTYsMCwwLDAsMTYsNiw2LDIsMTIsNCwzLDEsMywxLDI0LAorICAgIDE2LDEyLDYsMTIsNCwxMTcsMTksMCwwLDAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NiwwLAorICAgIDAsMCwxMTUsMTM0LDAsMCwwLDEyNCwwLDAsNjksMTAxLDAsMCw5MCwxLAorICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKKyAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCisgICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAorICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAorICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKKyAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCisgICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAwLDE4LDAsCisgICAgMTAwLDE5LDAsMTMyLDAsMCw5MCwxMiwwLDEwMCwyMCwwLDgzLDQwLDIxLDAsCisgICAgMCwwLDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDgwLDk3LDExNiwxMDQsMTE3LDM3LDEsMCwwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsCisgICAgMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsCisgICAgMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLAorICAgIDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsCisgICAgMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LAorICAgIDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsCisgICAgMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsCisgICAgODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwKKyAgICAxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLAorICAgIDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsCisgICAgMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLAorICAgIDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiwKKyAgICA3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsCisgICAgMzIsMzIsMzIsMTA1LDExNSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0Niw5OSwKKyAgICA0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw1MiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsCisgICAgMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTE2LDIsMCwxMjQsMCwKKyAgICAwLDEwNiwzLDAsMTMxLDAsMCwxMzEsMSwwLDEyNCwwLDAsOTUsNCwwLAorICAgIDEyNCwzLDAsMTI0LDAsMCw5NSw1LDAsMTAwLDAsMCw4Myw0MCwxLDAsCisgICAgMCwwLDc4LDQwLDYsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDUsMCwwLAorICAgIDAsMTE2LDExNywxMTIsMTA4LDEwMSwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsCisgICAgMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTcsMCwwLDAsCisgICAgOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsMTIsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDExLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLAorICAgIDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsCisgICAgMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE0MSw0LDAsMCwxMTUsCisgICAgOCwwLDAsMCwwLDEsOSwxLDksMSwyMSwxLDExNywyMywwLDAsCisgICAgMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDUzLDAsCisgICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsCisgICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwKKyAgICAxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCw4MywxMjQsMSwwLAorICAgIDEwMCw1LDAsMTAyLDIsMCw4Myw0MCw3LDAsMCwwLDExNyw2MiwwLDAsCisgICAgMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLAorICAgIDMyLDExMSwxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LAorICAgIDExMiw5NywxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNywKKyAgICAxLDAsMCwwLDQ2LDExNywwLDAsMCwwLDExNywzLDAsMCwwLDExNSwKKyAgICAxMjEsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LDExNyw4LDAsMCwwLAorICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQwLDIsMCwwLDAsMTE3LDMsMCwKKyAgICAwLDAsMTE1LDEyMSwxMTUsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMiwKKyAgICAwLDAsMCwxMTcsNSwwLDAsMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsNDAsNCwwLDAsCisgICAgMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDYsMCwwLDAsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiwxMTcsMywwLDAsMCwxMDAsMTExLDExNiwxMTcsMiwwLAorICAgIDAsMCwxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsCisgICAgMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxNDcsNCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LDMsMTE3LDM4LDAsCisgICAgMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwKKyAgICA0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsMCwKKyAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwxLAorICAgIDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwwLAorICAgIDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MCwxLDAsMCwwLDc4LDQwLDQsCisgICAgMCwwLDAsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsCisgICAgNywwLDAsMCwxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwxMTcsMywwLDAsMCwKKyAgICAxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDAsCisgICAgMywwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDE4LDAsCisgICAgMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMTE3LDE0LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDk3LDExNiwKKyAgICAxMTYsMTE0LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsCisgICAgMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMTU3LDQsMCwwLDExNSw0LDAsMCwKKyAgICAwLDAsMSwxOCwxLDExNywzMSwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTEyLDk3LAorICAgIDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMDMsCisgICAgMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMzEsCisgICAgMSwwLDEyNSwxLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwyLDAsMTA3LDMsCisgICAgMCwxMTQsOTYsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDAsMCwxMDYsNCwwLAorICAgIDEyNCwxLDAsMTMxLDIsMCw5MiwyLDAsMTI1LDIsMCwxMjUsMywwLDEyNCwKKyAgICAyLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw4NCwwLDEyNCwzLDAsMTI0LDAsCisgICAgMCw5NSw2LDAsMTEwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMiwwLAorICAgIDExMCwwLDAsMTI0LDAsMCwxMDYsNiwwLDgzLDQwLDEsMCwwLDAsNzgsCisgICAgNDAsNywwLDAsMCwxMTcsNSwwLDAsMCwxMTYsMTE3LDExMiwxMDgsMTAxLDExNywKKyAgICAxNiwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNywxNywwLDAsMCw5NSwxMDgsOTcsMTE1LDExNiw5NSwxMTIsCisgICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDExNywxMiwwLDAsMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTcsNSwwLDAsMCwKKyAgICA5NSwxMTAsOTcsMTA5LDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSwxMTcsNSwKKyAgICAwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw0MCw0LDAsMCwwLDExNyw0LDAsCisgICAgMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsMTEsMCwwLDAsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDExNyw4LDAsMCwwLDExMCwxMDEsMTE5LDk1LDExMiw5NywxMTYsMTA0LDQwLDAsCisgICAgMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwKKyAgICAxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSwKKyAgICA5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDEyLDAsMCwwLDk1LAorICAgIDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsMTE2LDEwMSwxNjEsNCwwLDAsMTE1LAorICAgIDE0LDAsMCwwLDAsMiwxOCwxLDE1LDEsMjcsMywxMiwxLDEyLDEsCisgICAgMTIsMSwxMTcsMjcsMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDExNCwxMDEsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCisgICAgMTE2LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLDEyNCwKKyAgICAwLDAsMTA2LDEsMCwxMzEsMCwwLDEzMSwxLDAsODMsNDAsMSwwLDAsCisgICAgMCw3OCw0MCwyLDAsMCwwLDExNyw0LDAsMCwwLDEwNSwxMTYsMTAxLDExNCwKKyAgICAxMTcsMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsCisgICAgMTAxLDQwLDEsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLAorICAgIDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKKyAgICA5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LDE3Myw0LDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTE3LDIzLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwKKyAgICAxLDAsMTMxLDAsMCwxMzEsMSwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsCisgICAgMiwwLDAsMCwxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsMTIsMCwwLAorICAgIDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDQwLDEsMCwKKyAgICAwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDcsMCwwLDAsOTUsOTUsMTA4LDEwMSwKKyAgICAxMTAsOTUsOTUsMTc2LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwxMTcsMjIsCisgICAgMCwwLDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsCisgICAgMTA0LDQ2LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAorICAgIDEsMCw4Myw0MCwyLDAsMCwwLDc4LDExNywyMCwwLDAsMCw5NSw3OCwKKyAgICA5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDAsMTIzLDMzLDExNCwKKyAgICAxMjUsNDEsNDAsMiwwLDAsMCwxMTcsNiwwLDAsMCwxMDIsMTExLDExNCwxMDksCisgICAgOTcsMTE2LDExNyw1LDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDQwLDEsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsCisgICAgMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsCisgICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwKKyAgICAxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsCisgICAgMTE0LDk1LDk1LDE3OSw0LDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDIzLAorICAgIDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAorICAgIDEwNCw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTYsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwKKyAgICAxMDcsNiwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsMSwwLDAsMCwxMTcsCisgICAgMTIsMCwwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAorICAgIDQwLDIsMCwwLDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LAorICAgIDAsMCwwLDEwNSwxMTYsMTAxLDEwOSw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMiwwLDAsMCw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsCisgICAgMTEwLDExNSw5NSw5NSwxODIsNCwwLDAsMTE1LDIsMCwwLDAsMCwxLDExNywKKyAgICAyNywwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAorICAgIDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LDExMCwxMTUsOTUsOTUsOTksCisgICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMjAsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwKKyAgICAxLDAsMTI0LDEsMCwxMzEsMSwwLDEsMTAwLDAsMCw4Myw0MCwxLDAsCisgICAgMCwwLDc4LDQwLDIsMCwwLDAsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw0MCwyLDAsCisgICAgMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsNCwwLDAsMCwKKyAgICAxMDUsMTE2LDEwMSwxMDksNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwKKyAgICAwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwKKyAgICAxMTcsNiwwLDAsMCw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDE4NSw0LDAsMCwxMTUsCisgICAgMiwwLDAsMCwwLDEsMTE3LDIxLDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsCisgICAgMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLAorICAgIDc4LDQwLDEzLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksCisgICAgMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICA5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDIzLDAsMCwKKyAgICAwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwxMTcsMTYsMCwwLDAsOTUsMTAzLDEwMSwKKyAgICAxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsMTIsMCwKKyAgICAwLDAsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDExNyw4LAorICAgIDAsMCwwLDk1LDk1LDEwNSwxMTYsMTAxLDExNCw5NSw5NSwxMTcsNywwLDAsMCwKKyAgICA5NSw5NSwxMDgsMTAxLDExMCw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMTQsMTAxLAorICAgIDExMiwxMTQsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LDk5LDExMSwxMTAsMTE2LDk3LAorICAgIDEwNSwxMTAsMTE1LDk1LDk1LDExNyw2LDAsMCwwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsCisgICAgNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksCisgICAgMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsCisgICAgMTE3LDE0LDAsMCwwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsCisgICAgOTcsMTE2LDEwNCwxMzQsNCwwLDAsMTE1LDIwLDAsMCwwLDE2LDUsNiwyLAorICAgIDEyLDYsMTIsMTAsMTIsNCwxMiwxMiwxMiwzLDEyLDMsMTIsMywxMiwzLAorICAgIDExNywxNCwwLDAsMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAorICAgIDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NiwwLDAsMCwxMTUsNjgsMCwwLDAsMTI0LDAsMCwKKyAgICA2OSwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLAorICAgIDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsMCwxMDAsMywwLDEwMCwKKyAgICA0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNiwwLDEwMCw1LAorICAgIDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNywwLDEwMCw3LDAsCisgICAgODMsNDAsOCwwLDAsMCwxMTcsMTUsMCwwLDAsNzgsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsOTksNCwwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTI0LDMsMCwKKyAgICAxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwwLDAsODMsNDAsMSwwLAorICAgIDAsMCw3OCw0MCwyLDAsMCwwLDExNywxNCwwLDAsMCw5NSw3OCw5NywKKyAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsMTE3LDUsMCwwLDAsCisgICAgOTUsMTEyLDk3LDExNiwxMDQsNDAsNCwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsCisgICAgMTAxLDEwOCwxMDIsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLAorICAgIDAsMTEyLDk3LDExNiwxMDQsMTE3LDExLDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwMiwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDE5MCw0LAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDI0LDAsMCwwLDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LAorICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwKKyAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsCisgICAgNDAsMiwwLDAsMCw3OCwxMTcsMjUsMCwwLDAsNjAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMzIsMzksMTIzLDEyNSwzOSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw0MSw2Miw0MCwyLDAsMCwwLDExNyw2LDAsMCwwLDEwMiwxMTEsCisgICAgMTE0LDEwOSw5NywxMTYsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCisgICAgOTUsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwKKyAgICAwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsCisgICAgMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk1LDExNCwxMDEsMTEyLDExNCwxOTMsNCwwLDAsMTE1LDIsMCwwLDAsMCwyLAorICAgIDExNywyNywwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsMCwxMDAsMSwwLAorICAgIDEyNCwwLDAsMTA2LDEsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMDYsMSwwLAorICAgIDEyNCwxLDAsOTUsMiwwLDEyNCwxLDAsODMsNDAsMiwwLDAsMCwxMTcsCisgICAgMjQsMCwwLDAsNzYsMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsCisgICAgMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMTcsMzgsMCwwLAorICAgIDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDAsMywwLDAsMCwxMTcsMTYsMCwwLAorICAgIDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywKKyAgICAxMDEsMTE3LDUsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDAsMiwwLDAsMCwxMTcsNCwwLAorICAgIDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwKKyAgICAwLDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTk3LDQsMCwKKyAgICAwLDExNSw2LDAsMCwwLDAsMywxNiwxLDEyLDEsMTE3LDI3LDAsMCwKKyAgICAwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQwLDgsMCwKKyAgICAwLDAsMTE3LDgsMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LAorICAgIDEwLDAsMCwwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwKKyAgICAwLDAsMCw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsCisgICAgOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDExLDAsMCwKKyAgICAwLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNywxMSwwLDAsCisgICAgMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMTE3LDE3LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTEsMTE0LDk1LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE3LDExLDAsMCwwLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsCisgICAgMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsCisgICAgMTEyLDYyLDExNywxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxODksNCwwLDAsMTE1LDYsMCwwLDAsMTYsCisgICAgMSwxMiwzLDE4LDQsMTE3LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDQsMCwwLDAsNjYsMCwwLDAsMTE1LDExOSwKKyAgICAwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsCisgICAgOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLDIsMCwxMDAsCisgICAgMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDQsMCwxMDAsNCwKKyAgICAwLDEwMCw1LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDYsMCwxMDEsNCwwLAorICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNywwLDEwMSwKKyAgICA0LDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsMTMxLDEsMCw5MCw4LAorICAgIDAsMTAxLDQsMCwxMDAsMTIsMCwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMSwwLAorICAgIDEzMSwxLDAsOTAsMTAsMCwxMDAsMTIsMCw4Myw0MCwxMywwLDAsMCwxMTcsCisgICAgMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNyw2MiwKKyAgICAwLDAsMCw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LAorICAgIDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk1LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsCisgICAgNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLDAsMTIwLDUxLDAsMTE2LDAsCisgICAgMCwxMDYsMSwwLDEwNiwyLDAsMTMxLDAsMCw2OCw5MywzNCwwLDEyNSwxLAorICAgIDAsMTE2LDMsMCwxMjQsMSwwLDEwMCwxLDAsMTMxLDIsMCwxMTQsMTYsMCwKKyAgICAxMjQsMSwwLDEwNiw0LDAsMTMxLDAsMCwxLDExMywxNiwwLDExMywxNiwwLAorICAgIDg3LDEwMCwyLDAsODMsNDAsMywwLDAsMCwxMTcsMTI1LDAsMCwwLDY3LAorICAgIDk3LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsCisgICAgMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw0MCw0MSwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDEwOCwxMDgsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLAorICAgIDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTUsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTUsCisgICAgMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LAorICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDMyLDQwLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0MSw0NiwxMTcsMTcsMCwwLAorICAgIDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNSw3OCw0MCw1LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LAorICAgIDExNywxOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDYsMCwwLDAsMTE4LDk3LDEwOCwKKyAgICAxMTcsMTAxLDExNSwxMTcsNywwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywKKyAgICAxNywwLDAsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LAorICAgIDk3LDk5LDEwNCwxMDEsMTE1LDQwLDIsMCwwLDAsMTE3LDMsMCwwLDAsOTksCisgICAgMTA4LDExNSwxMTcsNiwwLDAsMCwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0MCwwLDAsCisgICAgMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLAorICAgIDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNywxNywwLDAsMCwxMDUsMTEwLAorICAgIDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDIxMSwKKyAgICA0LDAsMCwxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDExNywyOCwKKyAgICAwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwKKyAgICAxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMiwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsOTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNSwKKyAgICAyOCwwLDExNiwyLDAsMTA2LDMsMCwxMDAsMSwwLDExNiw0LDAsMTMxLDIsCisgICAgMCwxLDExMCwwLDAsMTIwLDU5LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLAorICAgIDQ0LDAsMTI1LDIsMCwxMjEsMTQsMCwxMjQsMiwwLDEyNCwxLDAsMTMxLDEsCisgICAgMCw4Myw4NywxMTMsMzgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDgxLDAsCisgICAgMSwxLDEsMTE5LDM4LDAsODksMTEzLDM4LDAsODgsMTEzLDM4LDAsODcsMTAwLAorICAgIDIsMCw4MywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDExMywwLDAsCisgICAgMCw4MywxMDEsOTcsMTE0LDk5LDEwNCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsCisgICAgMzIsMTExLDEwMiwzMiwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LAorICAgIDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwzOSwKKyAgICAxMDQsMTExLDExMSwxMDcsMTE1LDM5LDMyLDEwNSwxMTUsMzIsMTAyLDk3LDEwOCwxMTUsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDExMCwzMiwxMTcsMTE1LDEwMSwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDExNywyMywwLDAsMCwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICAxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw3OCw0MCwKKyAgICA3LDAsMCwwLDExNywzLDAsMCwwLDExNSwxMjEsMTE1LDExNywxMCwwLDAsCisgICAgMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNyw5LDAsMCwwLAorICAgIDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsNCwwLDAsMCwxMTksOTcsCisgICAgMTE0LDExMCwxMTcsMTMsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsCisgICAgMTEwLDEwNSwxMTAsMTAzLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwxMTcsNCwwLDAsMCw3OCwxMTEsMTEwLDEwMSw0MCwzLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDQsMCwwLDAsMTA0LDExMSwxMTEsMTA3LDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMjE5LDQsMCwwLDExNSwxNiwwLDAsCisgICAgMCwwLDcsOSwxLDE5LDEsMTYsMSwzLDEsMTQsMSwxMywxLDEyLAorICAgIDIsMTE3LDIyLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw5MSwwLDAsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsCisgICAgMjEsMCwxMDAsMiwwLDEyNSwxLDAsMTEwLDAsMCwxMjEsMTcsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTI0LDEsMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsCisgICAgMTE2LDIsMCwxMDcsMTAsMCwxMTQsODYsMCwxLDEsMSwxMjQsMCwwLDEwNiwKKyAgICAzLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMTYsMCwKKyAgICAwLDEwNiwxLDAsMTI0LDEsMCw2MCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsCisgICAgODMsNDAsMywwLDAsMCwxMTcsMjEwLDAsMCwwLDcxLDEwMSwxMTYsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLDExMCwxMTYsMTE0LDEyMSwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMDEsMTEwLDExNiwxMTQsMTIxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDExMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDQ0LDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5NywxMTIsMTEyLDExNCwxMTEsMTEyLDExNCwxMDUsOTcsMTE2LDEwMSwzMiwKKyAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsMTA1LDExNiw0NiwzMiw3MywxMDIsMzIsCisgICAgMTEwLDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywKKyAgICAxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDQsMzIsMTE1LDExNiwxMTEsMTE0LDEwMSwzMiw3OCwxMTEsCisgICAgMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTcsMCwwLAorICAgIDAsMCwxMTcsMSwwLDAsMCw0Niw0MCw0LDAsMCwwLDExNywzLDAsCisgICAgMCwwLDExNSwxMjEsMTE1LDExNywxOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDgsMCwKKyAgICAwLDAsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDExLDAsMCwwLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDAsMywwLDAsMCwxMTcsCisgICAgMywwLDAsMCw5OSwxMDgsMTE1LDExNyw0LDAsMCwwLDExMiw5NywxMTYsMTA0LAorICAgIDExNyw2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDIwLDAsMCwwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICAyMzYsNCwwLDAsMTE1LDE2LDAsMCwwLDAsOCwxMiwxLDksMSwzLAorICAgIDEsMTcsMSwxMywxLDE1LDEsMTgsMSwxMTcsMzEsMCwwLDAsODAsOTcsCisgICAgMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwzLDAsCisgICAgMCwwLDAsMCwwLDAsOCwwLDAsMCw0LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNjIsMCwwLDAsMTAzLDAsMCwxMjUsMywwLDEyMCwxNDksMCwKKyAgICAxMjQsMiwwLDY4LDkzLDEzMSwwLDEyNSw0LDAsMTI0LDAsMCwxMDYsMCwwLAorICAgIDEyNCw0LDAsMTMxLDEsMCwxMjUsNSwwLDEyNCw1LDAsMTAwLDIsMCwxMDcsCisgICAgOSwwLDExNCwxMywwLDExNiwyLDAsMTI0LDUsMCwxMDAsMSwwLDEzMSwyLAorICAgIDAsMTE0LDg1LDAsMTI0LDUsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwKKyAgICA5MiwyLDAsMTI1LDYsMCwxMjUsNywwLDExMCwyMSwwLDEyNCw1LDAsMTA2LAorICAgIDQsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDYsMCwxMDMsMCwwLDEyNSw3LAorICAgIDAsMTI0LDYsMCwxMDAsMiwwLDEwNyw5LDAsMTE0LDEyOCwwLDEyNCw2LDAsCisgICAgMTI0LDMsMCwxMDIsMiwwLDgzLDEyNCwzLDAsMTA2LDUsMCwxMjQsNywwLAorICAgIDEzMSwxLDAsMSwxMTMsMTMsMCwxMTMsMTMsMCw4NywxMDAsMiwwLDEyNCwzLAorICAgIDAsMTAyLDIsMCw4MywxMDAsMiwwLDgzLDQwLDMsMCwwLDAsMTE3LDYzLAorICAgIDAsMCwwLDcwLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMzIsMTExLDExNCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsNDcsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDExMCw5NywxMDksCisgICAgMTAxLDQ2LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsCisgICAgMTAxLDExNCw3OCw0MCw2LDAsMCwwLDExNywyMCwwLDAsMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDcsMCwwLDAsMTA0LAorICAgIDk3LDExNSw5NywxMTYsMTE2LDExNCwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LAorICAgIDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNiwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLAorICAgIDEwMCw0MCw4LDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDgsCisgICAgMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNywxNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LAorICAgIDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsNSwwLDAsMCwxMDEsMTEwLDExNiwxMTQsCisgICAgMTIxLDExNyw2LDAsMCwwLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNyw2LDAsMCwKKyAgICAwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDgsMCwwLDAsMTEyLDExMSwxMTQsMTE2LAorICAgIDEwNSwxMTEsMTEwLDExNSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNywxMSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDI1Myw0LDAsMCwxMTUsMjQsMCwwLDAsMCw1LDYsMSwxMywxLDE1LAorICAgIDEsMTIsMSwxNSwxLDI0LDIsMTUsMSw2LDEsMTIsMiwxMCw1LDIwLAorICAgIDIsMTE3LDIyLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw5NSwxMDMsMTAxLDExNiw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDk3LDAsMCwwLDEyNCwyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwKKyAgICAyNCwwLDExNiwxLDAsMTA2LDIsMCwxMjUsMiwwLDExMCwwLDAsMTI0LDAsCisgICAgMCwxMDYsMywwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDkyLDIsMCwKKyAgICAxMjUsMywwLDEyNSw0LDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LAorICAgIDY0LDAsMTI0LDMsMCw4MywxMjQsNCwwLDExNCw4OSwwLDExNiw0LDAsMTI0LAorICAgIDEsMCwxMjQsNCwwLDEyNCwwLDAsMTA2LDMsMCwxMzEsMywwLDgzLDEwMCwKKyAgICAxLDAsODMsMTAwLDEsMCw4Myw0MCwyLDAsMCwwLDExNyw5OCwwLDAsCisgICAgMCw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDMyLDExMSwxMTQsMzIsCisgICAgMzksMTEyLDk3LDExNiwxMDQsMzksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDk3LAorICAgIDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw5NSw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDQ2LDc4LDQwLDUsMCwwLDAsMTE3LDQsMCwwLDAsNzgsMTExLAorICAgIDExMCwxMDEsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDExLDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMTE3LDE1LDAsMCwwLDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQwLDUsMCwwLDAsMTE3LDMsMCwwLAorICAgIDAsOTksMTA4LDExNSwxMTcsOCwwLDAsMCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsMTE3LDYsMCwwLDAsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiwKKyAgICA5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsNDAsMCwwLDAsMCw0MCwwLDAsCisgICAgMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDIyLDUsMCwwLDExNSwxNiwwLDAsMCwwLDQsMTIsCisgICAgMSwxMiwxLDI0LDEsMTIsMSw0LDIsNiwzLDE5LDIsMTE3LDIyLDAsCisgICAgMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwKKyAgICAxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsNDAsMTEsMCwwLDAsMTE3LDgsCisgICAgMCwwLDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLAorICAgIDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDExNywxMiwwLDAsMCw5NSwKKyAgICA5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsNywwLDAsMCwKKyAgICA5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDExNywxMSwwLDAsMCw5OSwxMDgsOTcsMTE1LAorICAgIDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsMTcsMCwwLDAsMTA1LDExMCwxMTgsOTcsCisgICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSwxMTcsMTEsMCwKKyAgICAwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwxMTcsMjAsMCwKKyAgICAwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKKyAgICA5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMSwwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywKKyAgICAxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsCisgICAgMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSw5NywxMDgsCisgICAgMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDEwLDAsMCwwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwyMDcsNCwKKyAgICAwLDAsMTE1LDE0LDAsMCwwLDE2LDIsNiwyLDE4LDgsMTgsMTcsMTgsCisgICAgMTcsMTgsMjUsMywxLDExNywxMCwwLDAsMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMywwLDAsMCw2NiwwLDAsMCwxMTUsMTEwLDAsMCwwLDEyNCwwLAorICAgIDAsNjksMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsCisgICAgMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsNCwwLAorICAgIDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsNiwwLDkwLAorICAgIDcsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw4LDAsMTAwLDgsCisgICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsOSwwLDEwMSwxMCwwLDEwMCwxMCwwLAorICAgIDEwMCwxMSwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMSwwLDEwMCwxMiwwLDEwMCwKKyAgICAxMywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTQsMCw4Myw0MCwxNSwwLDAsCisgICAgMCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICAxMTcsMTcyLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDExMCwxMTYsCisgICAgMTAxLDExNCw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTcsCisgICAgMTE0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTIsMTAxLAorICAgIDExNCwxMDIsMTExLDExNCwxMDksOTcsMTEwLDk5LDEwMSw0NCwzMiw5OCwxMDEsMTA1LDExMCwxMDMsCisgICAgMTAsMzIsMzIsMzIsMzIsMTE0LDEwMSwxMDIsMTE0LDEwMSwxMTUsMTA0LDEwMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwKKyAgICAxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwKKyAgICAxMDQsOTcsMTEwLDEwMCwxMDgsMTA1LDExMCwxMDMsMzIsMTA0LDk3LDExNSwzMiw5OCwxMDEsMTAxLAorICAgIDExMCwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEwNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwKKyAgICAwLDAsNywwLDAsMCwxMTUsMTIyLDAsMCwwLDEwMywwLDAsMTI1LDMsCisgICAgMCwxMjAsNTIsMCwxMjQsMiwwLDY4LDkzLDQ0LDAsOTIsMiwwLDEzNywwLAorICAgIDAsMTI1LDQsMCwxMjQsMywwLDEwNiwwLDAsMTM1LDAsMCwxMDIsMSwwLAorICAgIDEwMCwxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNCw0LDAsNjgsMTMxLDEsMCwKKyAgICAxMzEsMSwwLDEsMTEzLDEzLDAsODcsMTI0LDMsMCwxMjQsMCwwLDk1LDEsCisgICAgMCwxMjQsMSwwLDExMiw3OSwwLDEwMCwzLDAsMTI0LDAsMCw5NSwyLDAsCisgICAgMTAwLDYsMCwxMjQsMCwwLDk1LDMsMCwxMTYsNCwwLDEzMSwwLDAsMTI0LAorICAgIDAsMCw5NSw1LDAsMTE2LDQsMCwxMzEsMCwwLDEyNCwwLDAsOTUsNiwKKyAgICAwLDEwMCw1LDAsODMsNDAsNywwLDAsMCwxMTcsMjAxLDAsMCwwLDczLAorICAgIDExMCwxMDUsMTE2LDEwNSw5NywxMDgsMTA1LDEyMiwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE1LDEwMSw5NywxMTQsOTksCisgICAgMTA0LDMyLDExMSwxMTAsMzIsOTcsMTEwLDEwMCwzMiw5NywzMiwxMTgsOTcsMTE0LDEwNSw5NywKKyAgICA5OCwxMDgsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwxMCwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiw1MSw0NSwxMTYsMTE3LDExMiwxMDgsMTAxLDExNSwzMiw5OSwKKyAgICAxMTEsMTEwLDExNiw5NywxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsCisgICAgMTIwLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTQsCisgICAgMTAxLDk5LDExMSwxMDMsMTEwLDEwNSwxMjIsMTAxLDExNSw0NCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDk4LDExMSwxMTEsMTA4LDEwMSw5NywxMTAsCisgICAgMzIsMTExLDEwMiwzMiwxMTksMTA0LDEwMSwxMTYsMTA0LDEwMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDExNSwzMiwxMTIsCisgICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDMsMCwwLDAsNTEsMCwwLDAsMTE1LDI3LDAsCisgICAgMCwwLDEyNCwwLDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTM2LDAsCisgICAgMCwxMDIsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLDQwLDEsMCwKKyAgICAwLDAsNzgsNDAsMCwwLDAsMCw0MCwyLDAsMCwwLDExNywyLDAsCisgICAgMCwwLDQ2LDQ4LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDQwLAorICAgIDEsMCwwLDAsMTE3LDYsMCwwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsNTUsNSwwLDAsMTE1LDIsMCwwLDAsNiwwLDExNywKKyAgICAzOCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LAorICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsCisgICAgNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDExNywxLDAsMCwwLDQ2LAorICAgIDEwNSwxLDAsMCwwLDc4LDEwNSwyNTUsMjU1LDI1NSwyNTUsNDAsNywwLDAsMCwKKyAgICAxMTcsNiwwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDEwMCwxMTcsOCwwLDAsMCwKKyAgICA5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LAorICAgIDEwMSwxMTcsMywwLDAsMCwxMTUsMTAxLDExNiwxMTcsMTEsMCwwLDAsOTUsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwxMTcsMTksMCwwLDAsOTUsMTE0LAorICAgIDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSw0MCw1LDAsMCwwLDExNyw0LDAsMCwwLDExNSwxMDEsMTA4LDEwMiwxMTcsCisgICAgNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsNywwLDAsMCwxMDAsMTAxLDExNiwKKyAgICA5NywxMDUsMTA4LDExNSwxMTcsNywwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwKKyAgICAxMTcsOCwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDQwLDAsMCwKKyAgICAwLDAsNDAsMSwwLDAsMCwxMTcsNiwwLDAsMCwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsCisgICAgOTUsNDksNSwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LDEsMTksMSwKKyAgICAzNiwxLDksMiwxNSwxLDksMSwxMiwxLDExNywxOSwwLDAsMCw3MCwKKyAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAorICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywwLDEyNCwKKyAgICAwLDAsOTUsMCwwLDEwMCwyLDAsODMsNDAsNCwwLDAsMCwxMTcsMzEsCisgICAgMCwwLDAsNzMsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwxMDUsMTA5LAorICAgIDEwMSw0NiwxMDUsMSwwLDAsMCw3OCwxMDUsMjU1LDI1NSwyNTUsMjU1LDQwLDEsMCwKKyAgICAwLDAsMTE3LDExLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LAorICAgIDEwOSwxMDEsNDAsMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLAorICAgIDAsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDExNSw2Myw1LDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE3LDI4LDAsCisgICAgMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsCisgICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE3MiwxLDAsMCwxMDAsNSwwLDEyNSwyLDAsMTI0LDEsCisgICAgMCwxMDYsMSwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsMiwwLDI1LDEyNSwzLAorICAgIDAsMTIxLDI1LDAsMTE2LDIsMCwxMDYsMywwLDEyNCwwLDAsMTA2LDQsMCwKKyAgICAxMzEsMSwwLDEwNiw1LDAsMTI1LDQsMCw4NywxMTAsMjQsMCw0LDExNiw2LAorICAgIDAsMTA3LDEwLDAsMTE0LDc2LDAsMSwxLDEsMTAwLDYsMCwxMjUsNCwwLAorICAgIDg5LDExMCwxLDAsODgsMTI0LDQsMCwxMjQsMCwwLDEwNiw3LDAsMTA3LDMsCisgICAgMCwxMTQsMTE0LDAsMTI0LDAsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMjQsNCwKKyAgICAwLDEyNCwwLDAsOTUsNywwLDExMCwwLDAsMTE2LDksMCwxMzEsMCwwLAorICAgIDExNCwxNDcsMCwxMjQsMCwwLDEwNiwxMCwwLDEyNSw1LDAsMTI0LDMsMCwxMDYsCisgICAgMTEsMCwxMzEsMCwwLDEyNSw2LDAsMTEwLDE1LDAsMTI0LDAsMCwxMDYsMTIsCisgICAgMCwxMjUsNSwwLDEyNCwzLDAsMTI1LDYsMCwxMjQsNiwwLDEyNCw1LDAsCisgICAgMTA3LDYsMCwxMTQsNDUsMSwxMTYsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LAorICAgIDMsMCwxMzEsMiwwLDEyNSw3LDAsMTE2LDE0LDAsMTI0LDcsMCwxMzEsMSwKKyAgICAwLDExNCw0NSwxLDEyMCw5MSwwLDEyNCwwLDAsMTA2LDE1LDAsNjgsOTMsNzEsCisgICAgMCw5MiwyLDAsMTI1LDgsMCwxMjUsOSwwLDEwMCw0LDAsMTI0LDgsMCwKKyAgICAyMywxMjUsMTAsMCwxMTYsMTMsMCwxMjQsNywwLDEyNCwxMCwwLDEzMSwyLDAsCisgICAgMTI1LDExLDAsMTE2LDE2LDAsMTI0LDExLDAsMTMxLDEsMCwxMTQsMjE0LDAsMTI0LAorICAgIDksMCwxMjQsMSwwLDEyNCwxMSwwLDEzMSwyLDAsMTI0LDcsMCwxMDMsMSwKKyAgICAwLDEwMiwyLDAsODMsMTEzLDIxNCwwLDg3LDEwMCw3LDAsMTI1LDIsMCwxMTMsCisgICAgNDUsMSwxMTAsMCwwLDEyMCw5NSwwLDEyNCwwLDAsMTA2LDE1LDAsNjgsOTMsCisgICAgODQsMCw5MiwyLDAsMTI1LDgsMCwxMjUsOSwwLDEyNCw2LDAsMTI0LDgsCisgICAgMCwyMywxMjQsNSwwLDEwNyw2LDAsMTE0LDU1LDEsMTE2LDEzLDAsMTI0LDAsCisgICAgMCwxMDYsNCwwLDEyNCwzLDAsMTI0LDgsMCwyMywxMzEsMiwwLDEyNSwxMSwKKyAgICAwLDExNiwxNiwwLDEyNCwxMSwwLDEzMSwxLDAsMTE0LDEzOSwxLDEyNCw5LDAsCisgICAgMTI0LDEsMCwxMjQsMTEsMCwxMzEsMiwwLDEwMywwLDAsMTAyLDIsMCw4MywKKyAgICAxMTMsNTUsMSwxMTMsNTUsMSw4NywxMjQsMiwwLDExNCwxNjIsMSwxMDAsOCwwLAorICAgIDEyNCw3LDAsMTAzLDEsMCwxMDIsMiwwLDgzLDEwMCw4LDAsMTAzLDAsMCwKKyAgICAxMDIsMiwwLDgzLDQwLDksMCwwLDAsMTE3LDEyNSwwLDAsMCw4NCwxMTQsCisgICAgMTIxLDMyLDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LAorICAgIDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMTEsMTE0LDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTIsMTExLAorICAgIDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDMyLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLAorICAgIDQwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDQsMzIsMTA4LDEwNSwxMTUsMTE2LDQ1LDExMSwxMDIsCisgICAgNDUsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDExNSw0MSw0NiwxMTcsMSwwLDAsMCwKKyAgICA0NiwxMDUsMiwwLDAsMCwxMDUsMSwwLDAsMCwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNzAsMTA1LDI1NSwyNTUsMjU1LDI1NSw4NCw3OCwKKyAgICA0MCwxOSwwLDAsMCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsCisgICAgMTAsMCwwLDAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDMsCisgICAgMCwwLDAsOTUsMTExLDExNSwxMTcsNCwwLDAsMCwxMTUsMTE2LDk3LDExNiwxMTcsCisgICAgNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCwxMTcsOCwwLDAsMCwxMTUsMTE2LDk1LAorICAgIDEwOSwxMTYsMTA1LDEwOSwxMDEsMTE3LDcsMCwwLDAsNzksODMsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LDEwNSwxMDksCisgICAgMTAxLDExNywxMSwwLDAsMCw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTcsMTEsMCwwLDAsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwKKyAgICAxMDEsMTE3LDE5LDAsMCwwLDk1LDExNCwxMDEsMTA4LDk3LDEyMCwxMDEsMTAwLDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE3LDUsMCwwLDAsMTA4LDExMSwKKyAgICAxMTksMTAxLDExNCwxMTcsMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsCisgICAgOTksMTA0LDEwMSwxMTcsMTAsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwKKyAgICAxMDUsMTEwLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwKKyAgICAxMDUsMTE0LDExNyw4LDAsMCwwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNywKKyAgICAxMiwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsNCwwLDAsMCw3OCwxMTEsCisgICAgMTEwLDEwMSw0MCwxMiwwLDAsMCwxMTcsNCwwLDAsMCwxMTUsMTAxLDEwOCwxMDIsCisgICAgMTE3LDgsMCwwLDAsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDExNywxMiwwLAorICAgIDAsMCwxMDUsMTE1LDk1LDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDExNywxMSwKKyAgICAwLDAsMCwxMTYsOTcsMTA1LDEwOCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNSwKKyAgICAwLDAsMCwxMDksMTE2LDEwNSwxMDksMTAxLDExNyw1LDAsMCwwLDk5LDk3LDk5LAorICAgIDEwNCwxMDEsMTE3LDEyLDAsMCwwLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMTE3LDksMCwwLDAsOTgsOTcsMTE1LDEwMSw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTcsNiwwLDAsMCwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMTcsNiwwLDAsCisgICAgMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNywxMywwLDAsMCwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNyw5LDAsMCwwLDEwMiwxMTcsCisgICAgMTA4LDEwOCw5NSwxMTIsOTcsMTE2LDEwNCw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw2OSw1LDAsMCwxMTUsNjIsMCwwLDAsMCwzLDYsMSwKKyAgICAxOSwxLDMsMSwyNSwxLDEzLDEsMTEsMSwxNSwxLDEwLDEsMTIsMiwKKyAgICA5LDEsOSwxLDE1LDIsOSwxLDYsMiwxMiwxLDE4LDEsMTIsMSwKKyAgICAyMiwxLDEwLDEsMTUsMSwxMiwxLDI2LDQsMTIsMiwyMiwxLDE2LDEsCisgICAgMjIsMSwxMiwxLDI2LDEsNiwxLDEzLDEsMTE3LDIyLDAsMCwwLDcwLAorICAgIDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTksMSwwLDAsMCwwLDAsMCwwLDksMCwKKyAgICAwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDI1NSwwLDAsMCwxMjQsCisgICAgMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMTksMCwxMTYsMSwwLDEwNiwyLAorICAgIDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDI0LDAsNCwxMTYsCisgICAgMywwLDEwNywxMCwwLDExNCw1NCwwLDEsMSwxLDEwMywwLDAsMTI1LDIsCisgICAgMCw4OSwxMTAsMSwwLDg4LDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDEwMCwKKyAgICAxLDAsMTMxLDEsMCwxMTUsOTEsMCwxMTYsNywwLDEyNCwyLDAsMTMxLDEsCisgICAgMCwxMjQsMCwwLDk1LDgsMCwxMTAsMTExLDAsMTE2LDcsMCwxMzEsMCwwLAorICAgIDEyNSwzLDAsMTIwLDkwLDAsMTI0LDIsMCw2OCw5Myw4MiwwLDEyNSw0LDAsCisgICAgMTI0LDQsMCwxMDYsOSwwLDEwMCwyLDAsMTMxLDEsMCw5MiwzLDAsMTI1LAorICAgIDUsMCwxMjUsNiwwLDEyNSw3LDAsMTI0LDYsMCwxMTQsMTcwLDAsMTAwLDMsCisgICAgMCwxMDYsMTAsMCwxMjQsNSwwLDEyNCw3LDAsMTA2LDExLDAsMTMxLDAsMCwKKyAgICAxMzEsMiwwLDEyNSw4LDAsMTEwLDYsMCwxMjQsNSwwLDEyNSw4LDAsMTI0LAorICAgIDMsMCwxMDYsMTIsMCwxMjQsOCwwLDEzMSwxLDAsMSwxMTMsMTA3LDAsODcsCisgICAgMTI0LDMsMCwxMjQsMCwwLDk1LDgsMCwxMTYsNCwwLDEwNiw1LDAsMTA2LAorICAgIDYsMCwxMTYsMTMsMCwxMzEsMSwwLDExNCwyNTEsMCwxMTYsNywwLDEwMCw0LAorICAgIDAsMTAwLDUsMCwxMzIsMCwwLDEyNCwyLDAsNjgsMTMxLDEsMCwxMzEsMSwKKyAgICAwLDEyNCwwLDAsOTUsMTQsMCwxMTAsMCwwLDEwMCw2LDAsODMsNDAsNywKKyAgICAwLDAsMCwxMTcsNjgsMCwwLDAsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsOTksOTcsOTksMTA0LDEwMSwzMiwxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LAorICAgIDEwNSw5NywxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwKKyAgICAxMTUsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NiwxMTcsMywwLDAsCisgICAgMCwxMTksMTA1LDExMCwxMTcsMSwwLDAsMCw0NiwxMTcsNSwwLDAsMCwxMjMsCisgICAgMTI1LDQ2LDEyMywxMjUsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMiwwLDAsMCwxMTUsMCwwLDAsMTE1LDI3LDAsMCwwLDEyNCwwLAorICAgIDAsOTMsMTcsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDAsMCwxMzEsMCwwLAorICAgIDg2LDEsMTEzLDMsMCwxMDAsMCwwLDgzLDQwLDEsMCwwLDAsNzgsNDAsCisgICAgMSwwLDAsMCwxMTcsNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDQwLDIsCisgICAgMCwwLDAsMTE3LDIsMCwwLDAsNDYsNDgsMTE3LDIsMCwwLDAsMTAyLAorICAgIDExMCw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LDAsMCwwLAorICAgIDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsCisgICAgOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDExNyw5LDAsCisgICAgMCwwLDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMzksNSwwLDAsMTE1LAorICAgIDIsMCwwLDAsNiwwLDExNyw0MSwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsNzgsNDAsMTUsMCwwLDAsMTE3LDQsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsMTE3LDMsMCwwLDAsOTUsMTExLDExNSwxMTcsNywwLDAsMCwKKyAgICAxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE3LDE3LDAsMCwwLDcwLDEwNSwxMDgsMTAxLAorICAgIDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsMywwLAorICAgIDAsMCwxMTUsMTIxLDExNSwxMTcsOCwwLDAsMCwxMTIsMTA4LDk3LDExNiwxMDIsMTExLAorICAgIDExNCwxMDksMTE3LDEwLDAsMCwwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsCisgICAgMTA0LDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywxMSwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNyw5LDAsMCwwLDExMiw5NywKKyAgICAxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsMTA5LAorICAgIDk3LDExNiwxMTcsNSwwLDAsMCwxMDgsMTExLDExOSwxMDEsMTE0LDExNywzLDAsMCwKKyAgICAwLDk3LDEwMCwxMDAsMTE3LDI3LDAsMCwwLDk1LDY3LDY1LDgzLDY5LDk1LDczLAorICAgIDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLAorICAgIDc5LDgyLDc3LDgzLDExNywxOSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLAorICAgIDEwMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQwLDksMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsMTE1LDEwMSwxMDgsMTAyLDExNyw0LDAsMCwwLDExMiwKKyAgICA5NywxMTYsMTA0LDExNyw4LDAsMCwwLDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMTcsMjEsMCwwLDAsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LAorICAgIDEyMCw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE3LDQsMCwwLDAsMTA1LAorICAgIDExNiwxMDEsMTA5LDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywzLDAsMCwKKyAgICAwLDEwMCwxMTEsMTE2LDExNyw2LDAsMCwwLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDExNywKKyAgICA4LDAsMCwwLDExMCwxMDEsMTE5LDk1LDExMCw5NywxMDksMTAxLDQwLDAsMCwwLAorICAgIDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsCisgICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDExLDAsMCwwLDk1LDEwMiwxMDUsCisgICAgMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExMSw1LDAsMCwxMTUsMzQsMCwwLAorICAgIDAsMCwyLDksMSwzLDEsMTksMSwxMywyLDExLDMsMTgsMSwxOCwKKyAgICA3LDksMSwxMywxLDI0LDEsNiwxLDI3LDIsNiwxLDE3LDEsOSwKKyAgICAxLDE4LDEsMTE3LDIyLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLAorICAgIDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw3LAorICAgIDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLDEzNSwxLDAsMTAyLDIsCisgICAgMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMiwwLDEyNCwyLDAsCisgICAgODMsNDAsMywwLDAsMCwxMTcsMjAsMSwwLDAsNjUsMzIsOTksMTA4LDk3LAorICAgIDExNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiw5OSwxMDgsMTExLDExNSwxMTcsMTE0LAorICAgIDEwMSwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTA1LDEwOCwxMDgsMzIsMTE0LDEwMSwxMTYsCisgICAgMTE3LDExNCwxMTAsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDMyLAorICAgIDExNywxMTUsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKKyAgICAxMDUsMTAxLDEwMCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiw5NywxMTAsMTAwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LAorICAgIDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsCisgICAgMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsCisgICAgMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSwKKyAgICA5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsCisgICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCisgICAgMTksMCwwLDAsMTE1LDQ2LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsCisgICAgMSwwLDExNSwzMywwLDExNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwwLAorICAgIDAsMTMxLDEsMSwxMzAsMSwwLDExMCwwLDAsMTM2LDAsMCwxMjQsMCwwLAorICAgIDEzNiwxLDAsMTQwLDEsMCw4Myw0MCwzLDAsMCwwLDExNyw0NSwwLDAsCisgICAgMCw4MCw5NywxMTYsMTA0LDMyLDEwNCwxMTEsMTExLDEwNywzMiwxMDIsMTExLDExNCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsCisgICAgMTE0LDEyMSw0Niw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDExNywzMCwKKyAgICAwLDAsMCwxMTEsMTEwLDEwOCwxMjEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LAorICAgIDEwNSwxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMDAsMTE3LDQsMCwwLDAsMTEyLDk3LDExNiwxMDQsNDAsMiwwLDAsMCwxMTcsCisgICAgMTEsMCwwLDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCwxMTcsCisgICAgMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsNDAsCisgICAgMSwwLDAsMCwxMTcsNCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw0MCwyLDAsCisgICAgMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDE0LDAsMCwwLDEwOCwKKyAgICAxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDI0LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsCisgICAgMTExLDEwNyw5NSwxMDIsMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDE1MSw1LDAsMCwxMTUsNiwwLDAsMCwwLDIsMTIsMSwyMSwxLAorICAgIDExNyw1NCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwKKyAgICAxMTUsNjIsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk1LDEwMiwxMTEsMTE0LAorICAgIDk1LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDAsMCwwLDAsMCwKKyAgICA0MCwzLDAsMCwwLDExNywzLDAsMCwwLDk5LDEwOCwxMTUsMTE3LDE0LDAsCisgICAgMCwwLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsCisgICAgMTE3LDI0LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsCisgICAgMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDAsMCwKKyAgICAwLDAsNDAsMiwwLDAsMCwxMTcsMywwLDAsMCw5OSwxMDgsMTE1LDExNywKKyAgICAxNCwwLDAsMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwKKyAgICAxMDgsMTE1LDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsCisgICAgMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsMTQxLDUsMCwwLDExNSw0LDAsMCwwLDAsMTAsMjEsNiwxMTcsCisgICAgMjAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwKKyAgICAwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTAyLDEsMCwyMiw4MywKKyAgICA0MCwyLDAsMCwwLDc4LDExNywxNCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDM3LDExNCw0MSw0MCwxLDAsMCwwLDExNyw0LAorICAgIDAsMCwwLDExMiw5NywxMTYsMTA0LDQwLDEsMCwwLDAsMTE3LDQsMCwwLAorICAgIDAsMTE1LDEwMSwxMDgsMTAyLDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDE1OSw1LAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDEsMTE3LDE5LDAsMCwwLDcwLDEwNSwKKyAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LAorICAgIDk1LDc4LDQwLDEzLDAsMCwwLDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDExNywxMCwwLDAsMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5NSw5NSwxMTcsMTIsMCwwLDAsOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LAorICAgIDEwOSwxMDEsOTUsOTUsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwKKyAgICAxMTcsOCwwLDAsMCw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsMTE3LDE3LDAsCisgICAgMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSwxMTUsMTE3LDE3LDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMTE3LDExLDAsMCwwLDEwMiwxMDUsCisgICAgMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTEsMCwwLDAsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDExLDAsMCwwLDk1LDEwMiwKKyAgICAxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxMSwwLDAsMCw5OSwxMDgsCisgICAgOTcsMTE1LDExNSwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTcsOSwwLDAsMCwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE3LDgsMCwwLDAsOTUsOTUsMTE0LDEwMSwKKyAgICAxMTIsMTE0LDk1LDk1LDQwLDEsMCwwLDAsMTE3LDEwLDAsMCwwLDk1LDk1LAorICAgIDEwOCwxMTEsOTksOTcsMTA4LDExNSw5NSw5NSw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLAorICAgIDEwMCwxMDEsMTE0LDQwLDUsMCwwLDExNSwxNiwwLDAsMCwxNiw3LDYsMiwKKyAgICAxMiwxNCwxMiw0LDYsMiwxMiw0MiwxMiwzMCwxOCwxOCwxMTcsMTAsMCwwLAorICAgIDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY2LDAsMCwwLAorICAgIDExNSw1MCwwLDAsMCwxMjQsMCwwLDY5LDEwMSwwLDAsOTAsMSwwLDEwMCwKKyAgICAwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsCisgICAgMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCwKKyAgICA5MCw1LDAsMTAwLDYsMCw4Myw0MCw3LDAsMCwwLDExNywxOCwwLDAsCisgICAgMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsCisgICAgMTAxLDEyMCwxMTYsMTE3LDM2LDAsMCwwLDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDMyLAorICAgIDEwOSw5NywxMTAsOTcsMTAzLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LDExMSw5OSwxMDcsNDYsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwKKyAgICAxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDI0LDAsMCwwLDY1LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsMTA4LDExMSw5OSwxMDcsNDYsNzgsNDAsMiwwLDAsMCwxMTcsNCwwLDAsCisgICAgMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsOTcsOTksMTEzLDExNywxMDUsMTE0LAorICAgIDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0MCwxLDAsMCwwLDExNyw0LDAsMCwwLAorICAgIDExNSwxMDEsMTA4LDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LDI5LAorICAgIDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLAorICAgIDExNyw5LDAsMCwwLDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsMTY5LDUsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMiwxMTcsMjgsMCwwLDAsOTUsNzMsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LAorICAgIDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksNCwwLDAsMCwwLAorICAgIDAsMCwwLDQsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMDAsMSwKKyAgICAwLDgzLDQwLDIsMCwwLDAsMTE3LDYwLDAsMCwwLDgyLDEwMSwxMDgsMTAxLAorICAgIDk3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTE0LDEwMSwxMDMsOTcsMTE0LDEwMCwxMDgsMTAxLDExNSwxMTUsMzIsMTExLAorICAgIDEwMiwzMiw5NywxMTAsMTIxLDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTAxLDEyMCw5OSwKKyAgICAxMDEsMTEyLDExNiwxMDUsMTExLDExMCwxMTUsNDYsNzgsNDAsMiwwLDAsMCwxMTcsNCwKKyAgICAwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTE0LDEwMSwxMDgsMTAxLAorICAgIDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsNDAsNCwwLDAsMCwxMTcsNCwwLAorICAgIDAsMCwxMTUsMTAxLDEwOCwxMDIsMTE3LDgsMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTYsCisgICAgMTIxLDExMiwxMDEsMTE3LDksMCwwLDAsMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMTE3LDEzLDAsMCwwLDEwMSwxMjAsOTksOTUsMTE2LDExNCw5Nyw5OSwxMDEsOTgsCisgICAgOTcsOTksMTA3LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwKKyAgICAwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE3Myw1LDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsMTE3LDI3LDAsMCwwLDk1LDczLDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsNzYsMTExLDk5LDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiw0Niw5NSwKKyAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDAsNiwwLDAsMCwxMTcsOCwwLAorICAgIDAsMCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwxMTcsMTAsMCwwLDAsOTUsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsOTUsMTE3LDEyLDAsMCwwLDk1LDk1LAorICAgIDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDExNyw3LDAsMCwwLDk1LAorICAgIDk1LDEwMCwxMTEsOTksOTUsOTUsMTE3LDksMCwwLDAsOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxMTcsOCwwLDAsMCw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsOTUsCisgICAgOTUsNDAsMSwwLDAsMCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMDgsMTE1LDk1LDk1LDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsCisgICAgMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsCisgICAgNjIsMTE3LDE4LDAsMCwwLDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LAorICAgIDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxNjUsNSwwLDAsMTE1LDYsMCwwLAorICAgIDAsMTYsMiw2LDIsMTIsNCwxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDk5LDMsCisgICAgMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDkxLDAsMCwwLDEyNCwxLDAsMTA2LDAsMCwxMDAsMSwKKyAgICAwLDEyNCwyLDAsMTAwLDIsMCwyNCwxMzEsMiwwLDEyNSwzLDAsMTE2LDEsCisgICAgMCwxMjQsMywwLDEzMSwxLDAsMTI0LDIsMCwxMDcsMCwwLDExNCw1NSwwLAorICAgIDExNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsCisgICAgMywwLDEwMCw0LDAsMjUsMTI1LDQsMCwxMjQsMCwwLDExNCw4NywwLDEwMCwKKyAgICA1LDAsMTA2LDMsMCwxMjQsNCwwLDEyNCwwLDAsMTMxLDIsMCw4MywxMjQsCisgICAgNCwwLDgzLDQwLDYsMCwwLDAsMTE3LDUwLDAsMCwwLDgyLDEwMSwxMTUsCisgICAgMTExLDEwOCwxMTgsMTAxLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LAorICAgIDExMCwzMiw5Nyw5OCwxMTUsMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTcsCisgICAgMSwwLDAsMCw0NiwxMDUsMSwwLDAsMCwxMTcsNTAsMCwwLDAsOTcsCisgICAgMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LDExOCwKKyAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLAorICAgIDEwMSwxMDUsMCwwLDAsMCwxMTcsNSwwLDAsMCwxMjMsMTI1LDQ2LDEyMywxMjUsCisgICAgNDAsNCwwLDAsMCwxMTcsNiwwLDAsMCwxMTQsMTE1LDExMiwxMDgsMTA1LDExNiwKKyAgICAxMTcsMywwLDAsMCwxMDgsMTAxLDExMCwxMTcsMTAsMCwwLDAsODYsOTcsMTA4LAorICAgIDExNywxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSwKKyAgICA5NywxMTYsNDAsNSwwLDAsMCwxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDUsMCwwLAorICAgIDAsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMTcsNCwwLDAsMCw5OCwxMDUsMTE2LDExNSwxMTcsCisgICAgNCwwLDAsMCw5OCw5NywxMTUsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLAorICAgIDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsNjIsMTE3LDEzLDAsMCwwLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LAorICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxNzgsNSwwLDAsMTE1LDEwLDAsMCwwLDAsCisgICAgMiwyMiwxLDE4LDEsMTUsMSwxMCwxLDExNywxMywwLDAsMCw5NSwxMTQsCisgICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsOTUsMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDQsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEzOCwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTE1LDI4LDAsMTE2LDIsCisgICAgMCwxMDYsMywwLDEwMCwxLDAsMTE2LDQsMCwxMzEsMiwwLDEsMTEwLDAsCisgICAgMCwxMjAsMTAzLDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDg4LDAsMTI1LDIsCisgICAgMCwxMTYsNSwwLDEzMSwwLDAsMTQzLDIzLDAsMSwxMjQsMiwwLDEwNiw2LAorICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDMsMCw4NywxMDAsMiwKKyAgICAwLDgxLDg4LDEyNCwzLDAsMTAwLDIsMCwxMDcsOSwwLDExNCwzOCwwLDEyNCwKKyAgICAwLDAsMTE2LDAsMCwxMDYsOCwwLDEwNyw3LDAsMTE0LDEwOSwwLDEyNCwzLAorICAgIDAsODMsMTE2LDAsMCwxMDYsOCwwLDEyNCwwLDAsMjUsMTA2LDksMCw4MywKKyAgICAxMTMsMzgsMCwxMTMsMzgsMCw4NywxMDAsMiwwLDgzLDEwMCwyLDAsODMsNDAsCisgICAgMywwLDAsMCwxMTcsMjMsMCwwLDAsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTE3LDIyLDAsMCwwLDExNSwxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywKKyAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSw3OCw0MCwxMCwwLDAsCisgICAgMCwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsOSwwLDAsMCwxMDksMTAxLAorICAgIDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwxMTcsOSwwLDAsMCw5NSwxMTksOTcsMTE0LAorICAgIDExMCwxMDUsMTEwLDEwMywxMTUsMTE3LDQsMCwwLDAsMTE5LDk3LDExNCwxMTAsMTE3LDEzLAorICAgIDAsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywKKyAgICAxMTcsMTgsMCwwLDAsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LAorICAgIDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDExNywxMSwwLDAsMCwxMDIsMTA1LDExMCwxMDAsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsCisgICAgMTE3LDcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNywxMCwwLDAsCisgICAgMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDQwLDQsMCwwLDAsCisgICAgMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDQsMCwwLDAsMTEyLDk3LAorICAgIDExNiwxMDQsMTE3LDYsMCwwLDAsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE3LDYsMCwKKyAgICAwLDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MCwwLDAsMCwwLDQwLDAsMCwKKyAgICAwLDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwKKyAgICAxMTQsOTcsMTEyLDYyLDExNywxMiwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTg3LDUsMCwwLDExNSwyMCwwLDAsMCwwLDIsCisgICAgOSwxLDE5LDEsMTYsMSwxMCwxLDI0LDEsMTIsMiwxNSwxLDQsMiwKKyAgICAyMSwyLDExNywxMiwwLDAsMCw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTksMywwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsMTk0LDAsMCwwLDExNiwwLDAsCisgICAgMTI0LDAsMCwxMTYsMSwwLDEzMSwyLDAsMTE1LDQ1LDAsMTE2LDIsMCwxMDAsCisgICAgMSwwLDEwNiwzLDAsMTE2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsCisgICAgMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMjQsMiwwLDEwMCwyLDAsCisgICAgMTA3LDAsMCwxMTQsNzIsMCwxMTYsNSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsCisgICAgMSwwLDExMCwwLDAsMTI0LDEsMCwxMTQsMTU2LDAsMTE2LDAsMCwxMjQsMSwKKyAgICAwLDExNiwxLDAsMTMxLDIsMCwxMTUsMTA4LDAsMTE2LDIsMCwxMDAsNCwwLAorICAgIDEzMSwxLDAsMTMwLDEsMCwxMTMsMTU2LDAsMTI0LDEsMCwxMTYsNiwwLDEwNiwKKyAgICA3LDAsMTA3LDcsMCwxMTQsMTU2LDAsMTAwLDUsMCwxMjUsMywwLDExNiw4LAorICAgIDAsMTI0LDMsMCwxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMzEsMSwwLAorICAgIDEzMCwxLDAsMTEzLDE1NiwwLDExMCwwLDAsMTI0LDAsMCwxMiwxMTQsMTkwLDAsCisgICAgMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDE5MCwwLDExNiw1LDAsMTAwLAorICAgIDYsMCwxMzEsMSwwLDEzMCwxLDAsMTEwLDAsMCwxMDAsNywwLDgzLDQwLAorICAgIDgsMCwwLDAsMTE3LDI4LDAsMCwwLDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsCisgICAgOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSwKKyAgICA5NywxMTAsMTAxLDM0LDQ2LDExNywzMSwwLDAsMCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsCisgICAgMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsMTA1LDAsMCwwLDAsMTE3LDE4LAorICAgIDAsMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwKKyAgICAzMiw2Miw2MSwzMiw0OCwxMTcsMzEsMCwwLDAsOTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDk1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMDEsMTE2LDMyLDExNiwxMTEsCisgICAgMzIsOTcsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTE3LDYxLDAsMCwwLDgwLDk3LAorICAgIDExNCwxMDEsMTEwLDExNiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDQ0LDMyLDk5LDk3LDExMCwKKyAgICAxMTAsMTExLDExNiwzMiwxMTIsMTAxLDExNCwxMDIsMTExLDExNCwxMDksMzIsMTE0LDEwMSwxMDgsOTcsCisgICAgMTE2LDEwNSwxMTgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNywxNywwLDAsMCwKKyAgICA2OSwxMDksMTEyLDExNiwxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwKKyAgICAxMDEsNzgsNDAsOSwwLDAsMCwxMTcsMTAsMCwwLDAsMTA1LDExNSwxMDUsMTEwLAorICAgIDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTcsMywwLDAsMCwxMTUsMTE2LDExNCwxMTcsOSwKKyAgICAwLDAsMCw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDYsMCwwLAorICAgIDAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTcsNCwwLDAsMCwxMTYsMTIxLDExMiwxMDEsCisgICAgMTE3LDEwLDAsMCwwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTcsCisgICAgMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsNywwLDAsMCwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwxMTUsMTE3LDExLDAsMCwwLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDQwLDQsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE3LDcsMCwwLDAsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw1LDAsCisgICAgMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE3LDMsMCwwLDAsMTA5LDExNSwxMDMsNDAsCisgICAgMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LAorICAgIDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTMsMCwwLDAsCisgICAgOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywyMDQsNSwwLAorICAgIDAsMTE1LDI0LDAsMCwwLDAsMiwxNSwxLDMwLDEsMTIsMSwxNSwxLAorICAgIDYsMSwxNSwxLDE1LDEsMTUsMSw2LDIsMjcsMSwxOSwxLDExNywxMywKKyAgICAwLDAsMCw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDExNywyMCwwLDAsMCw3OCwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCw5LDAsMCwwLDI3LDAsMCwwLDY3LDAsMCwwLDExNSwxMiwKKyAgICAyLDAsMCwxMDAsMCwwLDEyNSwyLDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwKKyAgICAxLDAsMTMxLDEsMCwxMDAsMiwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsCisgICAgMTc4LDAsMTI0LDMsMCwxMTYsMiwwLDEwNiwzLDAsMTA3LDcsMCwxMTQsNjIsCisgICAgMCwxMTYsNCwwLDEyNCwxLDAsMTI0LDMsMCwxMzEsMiwwLDEsMTEwLDAsCisgICAgMCwxMjQsMCwwLDExNiwyLDAsMTA2LDMsMCwxMDcsNiwwLDExNCw4OCwwLAorICAgIDExNiwyLDAsMTA2LDMsMCwxMjQsMCwwLDI1LDgzLDExNiwyLDAsMTA2LDMsCisgICAgMCwxMjQsMywwLDI1LDEyNSw0LDAsMTIxLDEzLDAsMTI0LDQsMCwxMDYsNSwKKyAgICAwLDEyNSwyLDAsODcsMTEzLDE3OCwwLDQsMTE2LDYsMCwxMDcsMTAsMCwxMTQsCisgICAgMTc0LDAsMSwxLDEsMTE2LDcsMCwxMDAsMywwLDIzLDEwNiw4LDAsMTI0LAorICAgIDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LDUsMCwxMTYsOSwwLDEyNCw1LAorICAgIDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLDEsMCw4OSwxMTMsMTc4LAorICAgIDAsODgsMTEwLDAsMCwxMTYsMTAsMCwxMjQsMCwwLDEyNCwyLDAsMTMxLDIsCisgICAgMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyNTAsMCwKKyAgICAxMTYsOSwwLDExNiw3LDAsMTA2LDgsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLAorICAgIDQsMCwxMjQsMCwwLDEzMSwxLDEsMTI1LDcsMCwxMDAsMTAsMCwxMjQsNywKKyAgICAwLDk1LDEyLDAsMTI0LDcsMCwxMzAsMSwwLDExMCw0NywwLDEyNCwwLDAsCisgICAgMTE2LDIsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDQxLDEsMTI0LDYsMCwxMDYsCisgICAgMTMsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMTYsMTQsMCwxMDAsNSwwLDEyNCwKKyAgICAwLDAsMTI0LDYsMCwxMzEsMywwLDEsMTEwLDAsMCwxMTYsMiwwLDEwNiwKKyAgICAzLDAsMTI0LDAsMCwyNSwxMjUsOCwwLDEyNCwzLDAsMTE0LDEwNSwxLDExNiwKKyAgICAyLDAsMTA2LDMsMCwxMjQsMywwLDI1LDEyNSw0LDAsMTE2LDE1LDAsMTI0LAorICAgIDQsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMzEsMSwwLDEwMCw2LAorICAgIDAsMjUsMTI0LDgsMCwxMzEsMywwLDEsMTEwLDAsMCwxMTYsMTYsMCwxMjQsCisgICAgOCwwLDEwMCw3LDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsCisgICAgMCwxMTQsMjEyLDEsMTIxLDU5LDAsMTI0LDgsMCwxMDYsMTcsMCwxMjQsOCwwLAorICAgIDk1LDE4LDAsMTE2LDE5LDAsMTI0LDgsMCwxMDAsOCwwLDEzMSwyLDAsMTE1LAorICAgIDE4NywxLDEyNCw4LDAsMTA2LDE4LDAsMTA2LDEsMCwxMDAsMSwwLDEzMSwxLAorICAgIDAsMTAwLDIsMCwyNSwxMjQsOCwwLDk1LDE4LDAsMTEwLDAsMCw4NywxMTMsCisgICAgMjEyLDEsNCwxMTYsNiwwLDEwNywxMCwwLDExNCwyMDgsMSwxLDEsMSw4OSwKKyAgICAxMTMsMjEyLDEsODgsMTEwLDAsMCwxMTYsMTksMCwxMjQsOCwwLDEwMCw5LDAsCisgICAgMTMxLDIsMCwxMTUsOCwyLDEyMSwxMywwLDEyNCw2LDAsMTI0LDgsMCw5NSwKKyAgICAyMCwwLDg3LDExMyw4LDIsNCwxMTYsNiwwLDEwNywxMCwwLDExNCw0LDIsCisgICAgMSwxLDEsODksMTEzLDgsMiw4OCwxMTAsMCwwLDEyNCw4LDAsODMsNDAsCisgICAgMTEsMCwwLDAsNzgsMTE3LDEsMCwwLDAsNDYsMTA1LDAsMCwwLDAsCisgICAgMTE3LDIxLDAsMCwwLDU5LDMyLDEyMywxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwKKyAgICAzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDQsMCwwLDAsMTEwLAorICAgIDk3LDEwOSwxMDEsMTE3LDE4LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywKKyAgICAzMywxMTQsMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDEwNSwyLDAsMCwwLDExNywKKyAgICAxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LAorICAgIDgsMCwwLDAsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDEwLDAsMCwKKyAgICAwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsODQsNDAsMjEsMCwwLAorICAgIDAsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDEwLDAsMCwwLDExNCwKKyAgICAxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLDExNywzLDAsMCwwLDExNSwxMjEsCisgICAgMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsMjUsMCwKKyAgICAwLDAsOTUsOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywKKyAgICAxMDksMTAxLDExNSw5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDgsMCwwLDAsCisgICAgOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE3LDE0LDAsMCwwLDY1LDExNiwxMTYsCisgICAgMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE3LDgsMCwwLDAsCisgICAgOTUsNjksODIsODIsOTUsNzcsODMsNzEsMTE3LDYsMCwwLDAsMTAyLDExMSwxMTQsCisgICAgMTA5LDk3LDExNiwxMTcsMTEsMCwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMTE3LDEyLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTcsNCwwLDAsMCw4NCwxMTQsMTE3LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsOTUsMTEwLDExMSwxMTYsOTUsMTAyLDExMSwxMTcsMTEwLDEwMCwxMTcsMTEsMCwwLAorICAgIDAsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDE2LDAsMCwKKyAgICAwLDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsCisgICAgMTAxLDExNyw3LDAsMCwwLDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw3LDAsCisgICAgMCwwLDEwMywxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCw5NSw5NSwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsOTUsOTUsMTE3LDcsMCwwLDAsMTA0LDk3LDExNSw5NywxMTYsCisgICAgMTE2LDExNCwxMTcsMTAsMCwwLDAsOTUsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwKKyAgICA5NSw0MCw5LDAsMCwwLDExNyw0LDAsMCwwLDExMCw5NywxMDksMTAxLDExNywKKyAgICA3LDAsMCwwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNyw0LDAsMCwwLAorICAgIDExMiw5NywxMTYsMTA0LDExNyw2LDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMTE3LAorICAgIDEzLDAsMCwwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE3LDMsMCwwLDAsMTA5LDExNSwxMDMsMTE3LDYsMCwwLDAsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsMywwLDAsMCwxMDEsMTIwLDk5LDExNyw2LDAsMCwKKyAgICAwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDAsMCwwLDAsNDAsMCwwLDAsCisgICAgMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsNjIsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsCisgICAgMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwyMjMsCisgICAgNSwwLDAsMTE1LDc2LDAsMCwwLDAsMSw2LDEsMTksMSw2LDEsCisgICAgMTUsMSwxNiwyLDE1LDEsMTEsMiwxMywxLDMsMSwxMywxLDEzLDEsCisgICAgMjIsMSwyNiwxLDE1LDEsMTIsMSwyNywzLDksMSw5LDEsMTUsMiwKKyAgICAxMywxLDE5LDIsMTMsMSw2LDIsMTMsMSwzMiwyLDI0LDEsMywxLAorICAgIDEyLDEsMTUsMSwzMiwxLDEzLDEsOCwyLDE1LDEsMywxLDEzLDEsCisgICAgMTMsMSw4LDEsMTE3LDIzLDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywKKyAgICAxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxOCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNzUsMCwwLDAsMTIyLDE2LDAsMTE2LDAsMCwKKyAgICAxMjQsMCwwLDEzMSwxLDAsMTI1LDIsMCw4NywxMDAsMSwwLDExNiwxLDAsCisgICAgMTA2LDIsMCwxMzEsMCwwLDEsODgsMTI0LDIsMCwxMDYsMywwLDEzMSwwLAorICAgIDAsMSwxMjIsMTcsMCwxMTYsNCwwLDEyNCwwLDAsMTI0LDEsMCwxMzEsMiwKKyAgICAwLDgzLDg3LDEwMCwxLDAsMTI0LDIsMCwxMDYsNSwwLDEzMSwwLDAsMSwKKyAgICA4OCwxMDAsMSwwLDgzLDQwLDIsMCwwLDAsMTE3LDU0LDAsMCwwLDcwLAorICAgIDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDEwOCwKKyAgICAxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICAxMDgsMTExLDk5LDEwNyw0Niw3OCw0MCw2LDAsMCwwLDExNywxNiwwLDAsMCwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTIsMCwwLDAsMTE0LDEwMSwKKyAgICAxMDgsMTAxLDk3LDExNSwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE3LDcsMCwwLDAsOTcsCisgICAgOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMTcsMjMsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLAorICAgIDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LDExMCwxMDgsMTExLDk5LDEwNywKKyAgICAxMDEsMTAwLDExNyw3LDAsMCwwLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQwLDMsCisgICAgMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwwLAorICAgIDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE3LDQsMCwwLDAsMTA4LDExMSw5OSwKKyAgICAxMDcsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTQsMCwKKyAgICAwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSw5NywxMDAsCisgICAgMTcsNiwwLDAsMTE1LDE0LDAsMCwwLDAsMiwzLDEsMTYsMiwxMSwKKyAgICAxLDEwLDEsMywxLDE3LDIsMTE3LDE0LDAsMCwwLDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk5LDMsMCwwLDAsMCwKKyAgICAwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDE3MiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLAorICAgIDEzMSwzLDAsMSwxMjQsMiwwLDEwMCwxLDAsMTA3LDQsMCwxMTQsNDksMCwKKyAgICAxMTYsMSwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LAorICAgIDAsMCwxMTAsMCwwLDExNiwyLDAsMTA2LDMsMCwxMzEsMCwwLDEsMTI0LAorICAgIDAsMCwxMTYsNCwwLDEwNiw1LDAsMTA3LDcsMCwxMTQsODcsMCwxMTYsNiwKKyAgICAwLDEyNCwwLDAsMTE2LDcsMCwxMzEsMiwwLDgzLDExNiw0LDAsMTA2LDUsCisgICAgMCwxMjQsMCwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMDAsNCwwLDEwNyw4LAorICAgIDAsMTE0LDE1OCwwLDExNiwyLDAsMTA2LDksMCwxMzEsMCwwLDEsMTAwLDIsCisgICAgMCwxMDYsMTAsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDQsMCwxMTYsMTEsMCwKKyAgICAxMjQsNCwwLDEwMCwzLDAsMTI0LDAsMCwxMzEsMSwxLDEzMCwxLDAsMTEwLAorICAgIDAsMCwxMTYsMTIsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMjQsMywwLDgzLAorICAgIDQwLDUsMCwwLDAsMTE3LDUwLDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLAorICAgIDEwNSwxMTYsMTE1LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICA5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsOTgsMTAxLDEwNSwxMTAsMTAzLDMyLDEwOSw5NywxMDAsMTAxLAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOCwKKyAgICAxMDEsMTE4LDEwMSwxMDgsMzIsOTcsMTAwLDEwNiwxMTcsMTE1LDExNiwxMDksMTAxLDExMCwxMTYsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksMTE2LAorICAgIDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDExNSwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDMsMTE0LDEwMSw5NywxMTYsMTAxLDExNSwxMTYsMzIsOTksMTExLDEwOSwxMDksCisgICAgMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMTEsMTA5LDEwNSwxMTAsOTcsMTE2LDExMSwxMTQsMzIsMTExLAorICAgIDEwMiwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDEwNSwxMTYsMTIxLDEwLAorICAgIDMyLDMyLDMyLDMyLDk4LDEwMSwxMTYsMTE5LDEwMSwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk3LDExMCwxMDAsMzIsOTUsOTUsCisgICAgMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsOTUsNDYsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LAorICAgIDExMCw5OSwxMDgsMTE3LDEwMCwxMDEsMTE1LDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwKKyAgICA5NSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTUsOTUsMzIsMTA1LDEwMiwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMCwxMDUsCisgICAgMTAwLDMyLDExMCwxMTEsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDEwNSwwLDAsMCwKKyAgICAwLDExNyw0MCwwLDAsMCwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTEsMTAyLDMyLAorICAgIDEyMywxMjUsMzIsMTA0LDk3LDEwOCwxMTYsMTAxLDEwMCw1OSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKKyAgICAxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsNCwKKyAgICAwLDAsMCwxMTAsOTcsMTA5LDEwMSw3OCw0MCwxMywwLDAsMCwxMTcsMTMsMCwKKyAgICAwLDAsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywxMTcsCisgICAgMTMsMCwwLDAsOTUsMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksCisgICAgMTAxLDExNyw0LDAsMCwwLDk1LDEwNSwxMDksMTEyLDExNywxMiwwLDAsMCw5NywKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNywzLDAsMCwwLAorICAgIDExNSwxMjEsMTE1LDExNyw3LDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwxMTcsCisgICAgMTQsMCwwLDAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsOTUsMTA4LDExMSwKKyAgICA5NywxMDAsMTE3LDExLDAsMCwwLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwxMDEsMTE3LDEyLDAsMCwwLAorICAgIDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNyw2LDAsMCwKKyAgICAwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDExLDAsMCwwLDczLDEwOSwxMTIsMTExLAorICAgIDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNywxOSwwLDAsMCw5NSwxMDgsMTExLDk5LAorICAgIDEwNyw5NSwxMTcsMTEwLDEwOCwxMTEsOTksMTA3LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLAorICAgIDUsMCwwLDAsMTE3LDQsMCwwLDAsMTEwLDk3LDEwOSwxMDEsMTE3LDcsMCwKKyAgICAwLDAsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNyw1LDAsMCwwLDEwOCwxMDEsCisgICAgMTE4LDEwMSwxMDgsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDcsCisgICAgMCwwLDAsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsNDAsMCwwLDAsMCw0MCwKKyAgICAwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTEsMCwwLDAsOTUsMTAzLDk5LDEwMCw5NSwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMCw2LDAsMCwxMTUsMjgsMCwwLDAsMCwKKyAgICA5LDE2LDEsMTIsMSwyMSwxLDEwLDEsMTUsMSwxMywxLDEzLDEsMTIsCisgICAgMSwxMCwxLDYsMSw5LDEsMjEsMSwxMCwxLDExNywxMSwwLDAsMCwKKyAgICA5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk5LDMsMCwwLDAsCisgICAgMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSwyNTQsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsCisgICAgMCwxMTQsMjUwLDAsMTAwLDIsMCwxMjQsMSwwLDEwNyw2LDAsMTE0LDg5LDAsCisgICAgMTE2LDEsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDEsMCwxMjQsMSwwLDEwNiwKKyAgICAyLDAsMTAwLDIsMCwxMzEsMSwwLDEsMTE2LDAsMCwxMjQsMCwwLDEwMCwKKyAgICAzLDAsMTMxLDIsMCwxMTQsODksMCwxMjQsMSwwLDEwNiwzLDAsMTI0LDAsCisgICAgMCwxMDYsNCwwLDEzMSwxLDAsMSwxMTMsODksMCwxMTAsMCwwLDEyMCwxNTgsCisgICAgMCwxMjQsMSwwLDY4LDkzLDE0NywwLDEyNSwzLDAsMTE2LDAsMCwxMjQsMCwKKyAgICAwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTYsMCwxMDAsNCwwLDEwNiw1LDAsCisgICAgMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsMCwxMjUsNCwwLDEyMSwKKyAgICAxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLDEzMSwyLDAsMSw4NywKKyAgICAxMTMsMjQzLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyMzksMCwxLDEyNSw1LAorICAgIDAsMSwxMjIsNTAsMCwxMTYsOSwwLDEyNCw1LDAsMTAwLDUsMCwxMDAsNywKKyAgICAwLDEzMSwzLDAsMTE0LDIxOCwwLDEyNCw1LDAsMTA2LDExLDAsMTI0LDQsMCwKKyAgICAxMDcsMiwwLDExNCwyMTgsMCwxMTksOTYsMCwxMTMsMjE4LDAsMTEwLDAsMCwxMzAsCisgICAgMCwwLDg3LDg5LDEwMCw2LDAsMTAwLDYsMCwxMjUsNSwwLDEyNiw1LDAsCisgICAgODgsMTEzLDI0MywwLDg4LDExMyw5NiwwLDExMyw5NiwwLDg3LDExMCwwLDAsMTI0LAorICAgIDAsMCw4Myw0MCw4LDAsMCwwLDExNywyMzgsMCwwLDAsNzAsMTA1LDEwMywKKyAgICAxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LDExNiwzMiw5NSw5NSwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTQsCisgICAgMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLAorICAgIDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsOTcsOTgsMTA4LDEwMSwzMiwKKyAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTE2LAorICAgIDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw3MywxMTYsCisgICAgMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCisgICAgMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMTcsMTEwLAorICAgIDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsOTcsMTE1LDExNSwxMTcsMTA5LAorICAgIDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzksMTE1LDEwLAorICAgIDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsCisgICAgMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE1LAorICAgIDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTcsOCwwLDAsMCwKKyAgICA5NSw5NSwxMTIsOTcsMTE2LDEwNCw5NSw5NSwxMTcsMSwwLDAsMCw0MiwxMTcsNywKKyAgICAwLDAsMCw5NSw5NSw5NywxMDgsMTA4LDk1LDk1LDExNyw1LDAsMCwwLDEyMywKKyAgICAxMjUsNDYsMTIzLDEyNSwxMTcsMTAsMCwwLDAsOTUsMTEwLDExMSwxMTYsOTUsMTAyLDExMSwKKyAgICAxMTcsMTEwLDEwMCw3OCw3MCw0MCwxMiwwLDAsMCwxMTcsNywwLDAsMCwxMDQsCisgICAgOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNyw0LDAsMCwwLDEwOCwxMDUsMTE1LDExNiwxMTcsCisgICAgNiwwLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMTcsNiwwLDAsMCwxMDEsCisgICAgMTIwLDExNiwxMDEsMTEwLDEwMCwxMTcsNywwLDAsMCw5NSw5NSw5NywxMDgsMTA4LDk1LAorICAgIDk1LDExNyw2LDAsMCwwLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMTE3LDgsMCwwLAorICAgIDAsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMTE3LDI1LDAsMCwwLDk1LDk5LAorICAgIDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsCisgICAgMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLDExNywxMSwwLDAsMCw3MywxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLDAsMCwxMDMsMTAxLDExNiw5NywKKyAgICAxMTYsMTE2LDExNCwxMTcsNSwwLDAsMCw3MCw5NywxMDgsMTE1LDEwMSwxMTcsNCwwLAorICAgIDAsMCwxMTAsOTcsMTA5LDEwMSw0MCw2LDAsMCwwLDExNyw2LDAsMCwwLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw4LDAsMCwwLDEwMiwxMTQsMTExLDEwOSwxMDgsCisgICAgMTA1LDExNSwxMTYsMTE3LDcsMCwwLDAsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMTE3LAorICAgIDEsMCwwLDAsMTIwLDExNyw5LDAsMCwwLDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsCisgICAgOTcsMTA5LDEwMSwxMTcsMywwLDAsMCwxMDEsMTIwLDk5LDQwLDAsMCwwLDAsCisgICAgNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0Niw5NSw5OCwxMTEsMTExLAorICAgIDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDE2LDAsMCwwLDk1LDEwNCw5NywxMTAsCisgICAgMTAwLDEwOCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiw1NCw2LDAsMCwKKyAgICAxMTUsMzQsMCwwLDAsMCwxMCwxNSwxLDEyLDEsMTIsMSwxMywxLDE1LAorICAgIDEsMjIsMSwxMywxLDE1LDEsMjEsMSwzLDEsMTcsMSwxOCw2LDE4LAorICAgIDEsMTUsMSw5LDEsMzIsMSwxMTcsMTYsMCwwLDAsOTUsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSw5NSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDk5LDEsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDc4LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwKKyAgICAxLDAsMTI1LDEsMCwxMjQsMSwwLDEwMCw2LDAsMTA3LDgsMCwxMTQsNzQsCisgICAgMCwxMjQsMCwwLDEwMCwyLDAsMjUsMTI1LDEsMCwxMDAsMywwLDEyNCwwLAorICAgIDAsMTA3LDcsMCwxMTQsNzQsMCwxMjQsMSwwLDEwNiwyLDAsMTAwLDQsMCwKKyAgICAxMzEsMSwwLDEwMCw1LDAsMjUsMTI1LDEsMCwxMTMsNzQsMCwxMTAsMCwwLAorICAgIDEyNCwxLDAsODMsNDAsNywwLDAsMCwxMTcsMTY3LDAsMCwwLDY3LDk3LAorICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAorICAgIDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCwKKyAgICA5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLAorICAgIDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCisgICAgMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywKKyAgICAxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTcsMTEsMCwwLDAsOTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDExMCw5NywxMDksMTAxLAorICAgIDk1LDk1LDExNyw4LDAsMCwwLDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNywKKyAgICAxLDAsMCwwLDQ2LDEwNSwwLDAsMCwwLDc4LDQwLDMsMCwwLDAsCisgICAgMTE3LDMsMCwwLDAsMTAzLDEwMSwxMTYsMTE3LDQsMCwwLDAsNzgsMTExLDExMCwKKyAgICAxMDEsMTE3LDEwLDAsMCwwLDExNCwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwxMTEsMTEwLAorICAgIDQwLDIsMCwwLDAsMTE3LDcsMCwwLDAsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LAorICAgIDExNSwxMTcsNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsNDAsMCwwLAorICAgIDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwKKyAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAorICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsMTcsMCwwLDAsOTUsOTksCisgICAgOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw4OCwKKyAgICA2LDAsMCwxMTUsMTIsMCwwLDAsMCw3LDE1LDEsMTIsMSwxMCwxLAorICAgIDEyLDEsMjUsMSwxMTcsMTcsMCwwLDAsOTUsOTksOTcsMTA4LDk5LDk1LDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA1NSwwLDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLAorICAgIDEwMiwyLDAsMTI1LDAsMCwxMTYsMywwLDExNiw0LDAsMTAyLDIsMCwxMjUsCisgICAgMSwwLDExNiw1LDAsMTE2LDYsMCwxMDIsMiwwLDEyNSwyLDAsMTI0LDAsCisgICAgMCwxMjQsMSwwLDEyNCwyLDAsMTAzLDMsMCw4Myw0MCwxLDAsMCwwLAorICAgIDExNywxMTEsMCwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTA4LAorICAgIDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDQ1LDk4LDk3LDExNSwxMDEsCisgICAgMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDY5LDk3LDk5LDEwNCwzMiwxMDUsMTE2LDEwMSwxMDksCisgICAgMzIsMTA1LDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDQwLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsNDQsMzIsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSw0NCwzMiw5NywKKyAgICAxMDgsMTA4LDExMSwxMTksOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNSw0MSw0NiwxMCwKKyAgICAzMiwzMiwzMiwzMiw0MCw3LDAsMCwwLDExNywxOSwwLDAsMCw2OSwxMjAsCisgICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAorICAgIDExNCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMTgsMCwwLDAsMTAxLAorICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsOTUsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLAorICAgIDExNSwxMTcsMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTUsMCwwLDAsODMsNzksODUsODIsNjcsCisgICAgNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDIwLDAsMCwwLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNywxNywwLDAsMCw2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSwKKyAgICA5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MCwzLDAsMCwwLDExNywxMCwKKyAgICAwLDAsMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwxMTUsMTE3LDYsMCwKKyAgICAwLDAsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwxMTcsOCwwLDAsMCw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw0MCwwLDAsMCwwLDQwLDAsMCwwLDAsMTE3LAorICAgIDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLAorICAgIDYyLDExNywyNywwLDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LDExMiwxMTIsMTExLAorICAgIDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTUsMTAzLDYsMCwwLDExNSw4LDAsMCwwLDAsNSwxOCwxLDEyLDEsCisgICAgMTIsMSwxMTcsMjcsMCwwLDAsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExNywxMTIsMTEyLAorICAgIDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsMTE1LDk5LDUsMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIyNywwLDAsMCwxMjQsNCwwLDEwMCwKKyAgICAxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCisgICAgMCwxMjUsNSwwLDExMCw1NCwwLDEyNCwxLDAsMTAwLDMsMCwxMDcsOSwwLAorICAgIDExNCw0NSwwLDEyNCwxLDAsMTEwLDMsMCwxMDUsMCwwLDEyNSw2LDAsMTE2LAorICAgIDIsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsMCwxMTYsMCwwLDEyNCwwLAorICAgIDAsMTI0LDcsMCwxMjQsNCwwLDEzMSwzLDAsMTI1LDUsMCwxMjQsMywwLAorICAgIDExNSwyMDcsMCwxMjQsNCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMTIyLDAsMTE2LAorICAgIDAsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDIsMCwxMzEsMSwwLDEwMCwxLAorICAgIDAsMjUsMTMxLDEsMCw4MywxMjQsMCwwLDExNSwxMzIsMCwxMjQsNSwwLDgzLAorICAgIDExNiw0LDAsMTI0LDAsMCwxMzEsMSwwLDExNiw0LDAsMTI0LDAsMCwxMDYsCisgICAgMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzMSwxLDAsMjQsCisgICAgMTI1LDgsMCwxMTYsNSwwLDEwNiw2LDAsMTI0LDUsMCwxMDYsNywwLDEwMCwKKyAgICAzLDAsMTE2LDQsMCwxMjQsNSwwLDEwNiw3LDAsMTMxLDEsMCwxMjQsOCwKKyAgICAwLDI0LDEzMywyLDAsMjUsMjUsODMsMTEwLDE2LDAsMTE2LDgsMCwxMjQsNSwKKyAgICAwLDEyNCwzLDAsMTE2LDAsMCwxMzEsMywwLDgzLDEwMCwzLDAsODMsNDAsCisgICAgNCwwLDAsMCwxMTcsMjE0LDEsMCwwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCisgICAgOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwzOSwxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsCisgICAgMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLAorICAgIDMyLDEwNSwxMTAsMTAyLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDUsMTE1LDMyLDExMSw5OSw5OSwxMTcsMTE0LAorICAgIDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLAorICAgIDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLDMyLAorICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwxMTEsCisgICAgOTksOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LAorICAgIDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LDExNCwKKyAgICAxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTE1LAorICAgIDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsMTA1LAorICAgIDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwxMTUsCisgICAgMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsMTE0LAorICAgIDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwxMDEsCisgICAgMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsMTAzLAorICAgIDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLDk5LAorICAgIDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAorICAgIDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCisgICAgMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwxMDEsCisgICAgNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LDEwMywKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksMTExLAorICAgIDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LDEwMSwKKyAgICAxMDgsMzksMzIsMTExLDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMDUsCisgICAgMCwwLDAsMCwxMTcsMSwwLDAsMCw0Niw3OCw0MCw5LDAsMCwwLAorICAgIDExNywxMSwwLDAsMCw5NSwxMDMsOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDExNyw0LDAsMCwwLDc4LDExMSwxMTAsMTAxLDExNywxNywwLDAsMCw5NSw5OSwKKyAgICA5NywxMDgsOTksOTUsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDExNywKKyAgICA5LDAsMCwwLDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsMTE3LDMsMCwKKyAgICAwLDAsMTA4LDEwMSwxMTAsMTE3LDMsMCwwLDAsMTE1LDEyMSwxMTUsMTE3LDcsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxNiwwLDAsMCw5NSwxMDQsOTcsMTEwLDEwMCwKKyAgICAxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNDAsOSwwLDAsMCwKKyAgICAxMTcsNCwwLDAsMCwxMTAsOTcsMTA5LDEwMSwxMTcsNywwLDAsMCwxMDMsMTA4LAorICAgIDExMSw5OCw5NywxMDgsMTE1LDExNyw2LDAsMCwwLDEwOCwxMTEsOTksOTcsMTA4LDExNSwKKyAgICAxMTcsOCwwLDAsMCwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDExNyw1LDAsCisgICAgMCwwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE3LDYsMCwwLDAsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsMTE3LDgsMCwwLDAsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSw5NSwxMTcsCisgICAgNywwLDAsMCwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE3LDcsMCwwLDAsCisgICAgOTksMTE3LDExNiw5NSwxMTEsMTAyLDEwMiw0MCwwLDAsMCwwLDQwLDAsMCwwLAorICAgIDAsMTE3LDI5LDAsMCwwLDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsCisgICAgOTcsMTEyLDYyLDExNywxMCwwLDAsMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA5NSw5NSwxMTQsNiwwLDAsMTE1LDI2LDAsMCwwLDAsMTEsMTIsMSwxNSwKKyAgICAyLDI0LDEsMTIsMSwxOCwxLDYsMywxMiwxLDIzLDEsNiwxLDQsCisgICAgNCwzNSwzLDQwLDIsMTE3LDEwLDAsMCwwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwxNCwwLDAsCisgICAgMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTk2LDIsMCwwLDEyNCwxLAorICAgIDAsOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwxLDAsMTA2LDIsMCwKKyAgICAxMDYsMywwLDExNCwzMywwLDExNiw0LDAsOTcsNSwwLDExMCw2LDAsMTE2LAorICAgIDYsMCw5Nyw1LDAsMTIwLDQ3LDAsMTE2LDAsMCwxMTYsMSwwLDEwMiwyLAorICAgIDAsNjgsOTMsMzMsMCwxMjUsMiwwLDExNiw3LDAsMTI0LDIsMCwxMDAsMSwKKyAgICAwLDEzMSwyLDAsMTE1LDUyLDAsMTE2LDgsMCwxMjQsMiwwLDk1LDksMCwKKyAgICAxMTMsNTIsMCwxMTMsNTIsMCw4NywxMTYsMSwwLDEwNiwxMCwwLDExNiwxMSwwLAorICAgIDI1LDEyNSwzLDAsMTIwLDc2LDAsMTAwLDI4LDAsNjgsOTMsNjgsMCwxMjUsNCwKKyAgICAwLDEyNCw0LDAsMTE2LDEsMCwxMDYsMTAsMCwxMDcsNywwLDExNCwxNDgsMCwKKyAgICAxMTYsOCwwLDEwNiwxMiwwLDEyNCw0LDAsMTMxLDEsMCwxMjUsNSwwLDExMCwKKyAgICAxMywwLDExNiwxLDAsMTA2LDEwLDAsMTI0LDQsMCwyNSwxMjUsNSwwLDExNiwKKyAgICAxMywwLDEyNCwzLDAsMTI0LDQsMCwxMjQsNSwwLDEzMSwzLDAsMSwxMTMsCisgICAgMTA5LDAsODcsMTAwLDYsMCwxMDAsNywwLDEwMywxLDAsMTAyLDIsMCwxMDAsCisgICAgOCwwLDEwMCw5LDAsMTAwLDcsMCwxMDMsMiwwLDEwMiwyLDAsMTAwLDEwLAorICAgIDAsMTAwLDksMCwxMDAsNywwLDEwMywyLDAsMTAyLDIsMCwxMDIsMywwLAorICAgIDEyNSw2LDAsMTIwLDE4OSwwLDEyNCw2LDAsNjgsOTMsMTY5LDAsOTIsMiwwLAorICAgIDEyNSw3LDAsMTI1LDgsMCwxMTYsMTQsMCwxMDAsMTEsMCwxMDAsMTIsMCwxMzIsCisgICAgMCwwLDEyNCw4LDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNSwyMywxLDExNiwKKyAgICAxNSwwLDEzMCwxLDAsMTI0LDgsMCwxMDAsMTMsMCwyNSwxMjUsOSwwLDEyNCwKKyAgICA3LDAsMTE2LDEsMCwxMDYsMTAsMCwxMDcsNiwwLDExNCw2NSwxLDExNiwxLAorICAgIDAsMTA2LDEwLDAsMTI0LDcsMCwyNSwxMjUsMTAsMCw4MCwxMTMsMjM2LDAsMTIxLAorICAgIDYwLDAsMTE2LDgsMCwxMDYsMTIsMCwxMjQsNywwLDEzMSwxLDAsMTI1LDEwLAorICAgIDAsMTI0LDcsMCwxMDAsMTAsMCwxMDcsMiwwLDExNCwxMjMsMSwxMDAsMTQsMCwKKyAgICAxMTYsMSwwLDEwNiwxNiwwLDEwNyw2LDAsMTE0LDEyMywxLDEyNCw4LDAsMTAwLAorICAgIDE1LDAsMjUsMTI1LDksMCwxMTAsMCwwLDgwLDg3LDExMywyMzYsMCw0LDExNiwKKyAgICAxNywwLDEwNywxMCwwLDExNCwxNDgsMSwxLDEsMSwxMTksMjM2LDAsODksMTEzLAorICAgIDIzNiwwLDg4LDExMywyMzYsMCw4NywxMTYsMTcsMCwxMDAsMTYsMCwxMzEsMSwwLAorICAgIDEzMCwxLDAsMTIxLDE5LDAsMTE2LDgsMCwxMDYsMTIsMCwxMDAsMTcsMCwxMzEsCisgICAgMSwwLDEyNSwxMSwwLDg3LDExMCwyNCwwLDQsMTE2LDE3LDAsMTA3LDEwLDAsCisgICAgMTE0LDIxMCwxLDEsMSwxLDEwMCwyNywwLDEyNSwxMSwwLDg5LDExMCwxLDAsCisgICAgODgsMTE2LDgsMCwxMDYsMTIsMCwxMDAsMTgsMCwxMzEsMSwwLDEyNSwxMiwwLAorICAgIDEyNCw3LDAsMTAwLDgsMCwxMDcsMiwwLDExNCwxNiwyLDExNiw4LDAsMTA2LAorICAgIDEyLDAsMTAwLDE5LDAsMTMxLDEsMCwxMjUsMTMsMCwxMTYsMTMsMCwxMjQsMywKKyAgICAwLDEwMCwyMCwwLDEyNCwxMywwLDEzMSwzLDAsMSwxMTAsMCwwLDExNiwxMywKKyAgICAwLDEyNCwzLDAsMTAwLDIxLDAsMTI0LDEwLDAsMTMxLDMsMCwxLDExNiwxMywKKyAgICAwLDEyNCwzLDAsMTAwLDE3LDAsMTI0LDExLDAsMTMxLDMsMCwxLDExNiwxMywKKyAgICAwLDEyNCwzLDAsMTAwLDE4LDAsMTI0LDEyLDAsMTMxLDMsMCwxLDExNiwxMywKKyAgICAwLDEyNCwzLDAsMTAwLDIyLDAsMTI0LDksMCwxMzEsMywwLDEsMTE2LDEzLAorICAgIDAsMTI0LDMsMCwxMDAsMjMsMCwxMTYsMTksMCwxMjQsOCwwLDEzMSwxLDAsCisgICAgMTMxLDMsMCwxLDExNiwxMywwLDEyNCwzLDAsMTAwLDI0LDAsMTE2LDIwLDAsCisgICAgMTMxLDAsMCwxMzEsMywwLDEsMTE2LDIxLDAsMTA2LDIyLDAsMTE2LDAsMCwKKyAgICAxMDYsMjMsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsNywwLDEwMCw4LDAsCisgICAgMTA3LDIsMCwxMTQsMTkyLDIsMTE2LDI0LDAsMTA2LDI1LDAsMTAwLDI1LDAsMTMxLAorICAgIDEsMCwxLDEwMCwyNiwwLDExNiwyMSwwLDEwNyw2LDAsMTE0LDE5MiwyLDEwMCwKKyAgICAyOSwwLDExNiwyNywwLDk1LDI4LDAsMTEzLDE5MiwyLDExMCwwLDAsMTAwLDI3LAorICAgIDAsODMsNDAsMzAsMCwwLDAsMTE3LDI1MCwwLDAsMCw4MywxMDEsMTE2LDExNywKKyAgICAxMTIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsCisgICAgOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LAorICAgIDMyLDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTA0LDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSwKKyAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsCisgICAgOTcsMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwKKyAgICAxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LAorICAgIDMyLDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSwKKyAgICA5OSwxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDExNywxMCwwLDAsMCw5NSw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDk1LDk1LDExNywzLDAsMCwwLDk1LDEwNSwxMTEsMTE3LDksMCwKKyAgICAwLDAsOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LDExNyw4LDAsMCwwLAorICAgIDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDExNSwxMTcsNywwLDAsMCwxMDksOTcsMTE0LAorICAgIDExNSwxMDQsOTcsMTA4LDExNyw1LDAsMCwwLDExMiwxMTEsMTE1LDEwNSwxMjAsMTE3LDEsCisgICAgMCwwLDAsNDcsMTE3LDIsMCwwLDAsMTEwLDExNiwxMTcsMSwwLDAsMCwKKyAgICA5MiwxMTcsMywwLDAsMCwxMTEsMTE1LDUwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsMTE1LDAsMCwwLDExNSwzMywKKyAgICAwLDAsMCwxMjQsMCwwLDkzLDIzLDAsMTI1LDEsMCwxMTYsMCwwLDEyNCwKKyAgICAxLDAsMTMxLDEsMCwxMDAsMCwwLDEwNywyLDAsODYsMSwxMTMsMywwLAorICAgIDEwMCwxLDAsODMsNDAsMiwwLDAsMCwxMDUsMSwwLDAsMCw3OCw0MCwKKyAgICAxLDAsMCwwLDExNywzLDAsMCwwLDEwOCwxMDEsMTEwLDQwLDIsMCwwLAorICAgIDAsMTE3LDIsMCwwLDAsNDYsNDgsMTE3LDMsMCwwLDAsMTE1LDEwMSwxMTIsCisgICAgNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCw2MCwKKyAgICAxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LAorICAgIDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsOSwwLDAsCisgICAgMCw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTgyLDYsMCwwLDExNSwyLAorICAgIDAsMCwwLDYsMCwxMTcsMjUsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiwKKyAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwKKyAgICAxMTIsMTE0LDYyLDEwNSwwLDAsMCwwLDExNyw3LDAsMCwwLDY5LDc3LDg4LAorICAgIDMyLDcxLDY3LDY3LDEwNSwxLDAsMCwwLDExNywzMCwwLDAsMCwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsCisgICAgMzIsMTEyLDExMSwxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE3LDcsMCwwLAorICAgIDAsOTUsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTcsOCwwLDAsMCw5NSwxMTksMTAxLAorICAgIDk3LDEwNywxMTQsMTAxLDEwMiwxMTcsNiwwLDAsMCwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywKKyAgICAxMTcsNywwLDAsMCw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTcsMywwLDAsCisgICAgMCw5NSwxMTEsMTE1LDExNyw4LDAsMCwwLDExMiw5NywxMTYsMTA0LDk1LDExNSwxMDEsCisgICAgMTEyLDExNywxNSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsCisgICAgOTcsMTE2LDExMSwxMTQsMTE1LDExNywxMSwwLDAsMCw5NSwxMTQsMTAxLDEwOCw5NywxMjAsCisgICAgOTUsOTksOTcsMTE1LDEwMSwxMTcsNCwwLDAsMCw0NiwxMTIsMTIxLDExOSwxMTcsNiwKKyAgICAwLDAsMCw5NSwxMDAsNDYsMTEyLDEyMSwxMDAsNzgsNDAsNCwwLDAsMCwxMTcsCisgICAgMywwLDAsMCw5NSwxMDUsMTExLDExNyw5LDAsMCwwLDk1LDExOSw5NywxMTQsCisgICAgMTEwLDEwNSwxMTAsMTAzLDExNSwxMTcsOCwwLDAsMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAorICAgIDExMCwxMTUsMTE3LDcsMCwwLDAsMTA5LDk3LDExNCwxMTUsMTA0LDk3LDEwOCw4NCw0MCwKKyAgICAyOSwwLDAsMCwxMTcsNCwwLDAsMCw5NSwxMDUsMTA5LDExMiwxMTcsMywwLAorICAgIDAsMCwxMTUsMTIxLDExNSwxMTcsNSwwLDAsMCwxMDIsMTA4LDk3LDEwMywxMTUsMTE3LAorICAgIDgsMCwwLDAsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDEwMSwxMTcsMjcsMCwwLAorICAgIDAsNzksODAsODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksNjcsCisgICAgNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDE3LDAsMCwKKyAgICAwLDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LAorICAgIDY5LDgzLDExNywyMywwLDAsMCw2OCw2OSw2Niw4NSw3MSw5NSw2Niw4OSw4NCwKKyAgICA2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsNywKKyAgICAwLDAsMCwxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LDExNywxNSwwLDAsMCw2NiwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE3LDEwLAorICAgIDAsMCwwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTUsMTE3LDcsMCwKKyAgICAwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywxMSwwLDAsMCwxMDgsMTExLDk3LDEwMCw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsNywwLDAsMCwxMTUsMTAxLDExNiw5NywxMTYsCisgICAgMTE2LDExNCwxMTcsMywwLDAsMCw5NywxMDgsMTA4LDExNywxNCwwLDAsMCw2NSwKKyAgICAxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTcsNywwLAorICAgIDAsMCwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE3LDExLDAsMCwwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDExNyw0LDAsMCwwLDc4LDExMSwKKyAgICAxMTAsMTAxLDExNywzLDAsMCwwLDExNSwxMDEsMTE2LDExNywxNiwwLDAsMCw5NSwKKyAgICAxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LDEwMSwxMTcsCisgICAgMTgsMCwwLDAsNjksODgsODQsNjksNzgsODMsNzMsNzksNzgsOTUsODMsODUsCisgICAgNzAsNzAsNzMsODgsNjksODMsMTE3LDYsMCwwLDAsMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMDAsMTE3LDE4LDAsMCwwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LAorICAgIDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsMTE3LDE1LDAsMCwwLDgzLDc5LDg1LAorICAgIDgyLDY3LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw2LDAsMCwKKyAgICAwLDk3LDExMiwxMTIsMTAxLDExMCwxMDAsMTE3LDQsMCwwLDAsODQsMTE0LDExNywxMDEsCisgICAgMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LAorICAgIDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxMSwwLDAsMCw2OCwKKyAgICA2OSw2Niw4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCw0MCwxNCwwLDAsMCwxMTcsCisgICAgMTAsMCwwLDAsMTE1LDEyMSwxMTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDExLAorICAgIDAsMCwwLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNyw2LAorICAgIDAsMCwwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMSwwLDAsMCwxMTUsMTAxLAorICAgIDEwOCwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE3LDEyLDAsMCwwLDk4LDExNywKKyAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLDExNywxNCwwLDAsMCw5OCwKKyAgICAxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMTAsMCwKKyAgICAwLDAsMTExLDExNSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSwxMTcsMTAsMCwwLAorICAgIDAsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTExLDExNSwxMTcsMTUsMCwwLDAsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSwxMTcsCisgICAgOCwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiwxMTcsOSwwLDAsCisgICAgMCwxMTEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMywwLDAsMCwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxNCwwLDAsCisgICAgMCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsCisgICAgMTMsMCwwLDAsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDAsMCwwLDAsMCw0MCwwLDAsMCwwLDExNywyOSwwLDAsMCwKKyAgICA2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LAorICAgIDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw2MiwxMTcsNiwwLAorICAgIDAsMCw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDE1MCw2LDAsMCwxMTUsOTYsMCwwLAorICAgIDAsMCw5LDYsMSw2LDIsMTIsMSw5LDIsNiwyLDE5LDEsMTUsCisgICAgMSwxNiwyLDEzLDEsMTMsMSwxNSwxLDE4LDIsMTMsMSwyMCwyLDQ4LAorICAgIDEsMTksMiwzMSwxLDEwLDEsMTUsMSwxMywxLDQsMiwzLDEsMTUsCisgICAgMiwyNywxLDEzLDEsNSwxLDEzLDEsMTIsMiwxMiwyLDMsMSwxOSwKKyAgICAxLDEzLDIsMTEsMSwxNSwyLDEyLDEsMTUsMSwxOSwyLDE2LDEsMTYsCisgICAgMSwxNiwxLDE2LDEsMjIsMiwxOSwxLDE5LDEsMTIsMSwxMywxLDEyLAorICAgIDEsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw5OSwyLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxMzYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAorICAgIDIsMCwxLDExNiwxLDAsMTMxLDAsMCwxMjUsMiwwLDExNiwyLDAsMTA2LAorICAgIDMsMCwxMDYsNCwwLDExNiw1LDAsMTA2LDYsMCwxMjQsMiwwLDE0MCwwLAorICAgIDAsMTAzLDEsMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsNywwLDEwNiw4LAorICAgIDAsMTE2LDksMCwxMzEsMSwwLDEsMTE2LDIsMCwxMDYsNywwLDEwNiw4LAorICAgIDAsMTE2LDEwLDAsMTMxLDEsMCwxLDExNiwxMSwwLDEwNiwxMiwwLDEwMCwxLAorICAgIDAsMTA3LDIsMCwxMTQsMTE2LDAsMTE2LDIsMCwxMDYsNywwLDEwNiw4LDAsCisgICAgMTE2LDEzLDAsMTMxLDEsMCwxLDExMCwwLDAsMTE2LDIsMCwxMDYsNywwLAorICAgIDEwNiw4LDAsMTE2LDE0LDAsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDAsMywKKyAgICAwLDAsMCwxMTcsNTAsMCwwLDAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsCisgICAgMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTcsMiwwLDAsMCwxMTAsCisgICAgMTE2LDc4LDQwLDE1LDAsMCwwLDExNyw2LDAsMCwwLDk1LDExNSwxMDEsMTE2LAorICAgIDExNywxMTIsMTE3LDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDExNSwxMTcsMywwLDAsMCwxMTUsMTIxLDExNSwxMTcsMTAsMCwwLDAsMTEyLAorICAgIDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwxMTcsNiwwLDAsMCwxMDEsMTIwLAorICAgIDExNiwxMDEsMTEwLDEwMCwxMTcsMTAsMCwwLDAsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwKKyAgICAxMDAsMTAxLDExNCwxMTcsOSwwLDAsMCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKKyAgICAxMDcsMTE3LDksMCwwLDAsMTA5LDEwMSwxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE3LAorICAgIDYsMCwwLDAsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCwxMTcsMTUsMCwwLDAsNjYsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDExNywxNCwKKyAgICAwLDAsMCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDExNCwxMTcsMywwLDAsMCw5NSwxMTEsMTE1LDExNyw4LDAsMCwwLDk1LDk1LAorICAgIDExMCw5NywxMDksMTAxLDk1LDk1LDExNywyMSwwLDAsMCw4NywxMDUsMTEwLDEwMCwxMTEsCisgICAgMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICAxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLAorICAgIDMsMCwwLDAsMTE3LDEwLDAsMCwwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDExNywxMSwwLDAsMCw5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwKKyAgICAxMTcsMTA4LDEwMSwxMTcsMTcsMCwwLDAsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMDAsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDAsMCwwLDAsMCw0MCwwLAorICAgIDAsMCwwLDExNywyOSwwLDAsMCw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LDExNSwKKyAgICAxMTYsMTE0LDk3LDExMiw2MiwxMTcsOCwwLDAsMCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsCisgICAgMTA4LDEwOCwyMjQsNiwwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMywxLDksCisgICAgMSwyOCwxLDE2LDEsMTYsMSwxNSwxLDE5LDEsMTE3LDgsMCwwLDAsCisgICAgOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsNzgsNDAsMywwLDAsMCwxMTcsMywKKyAgICAwLDAsMCwxMTksMTA1LDExMCwxMTcsNiwwLDAsMCw5OSwxMjEsMTAzLDExOSwxMDUsCisgICAgMTEwLDExNyw2LDAsMCwwLDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsNDAsNzQsMCwwLAorICAgIDAsMTE3LDcsMCwwLDAsOTUsOTUsMTAwLDExMSw5OSw5NSw5NSwxMTcsMjcsMCwKKyAgICAwLDAsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksNzgsODMsNzMsODQsCisgICAgNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsODMsMTE3LDE2LDAsCisgICAgMCwwLDk1LDEwOSw5NywxMDcsMTAxLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywKKyAgICAxMTUsMTAxLDExNyw3LDAsMCwwLDk1LDExOSw5NSwxMDgsMTExLDExMCwxMDMsMTE3LDcsCisgICAgMCwwLDAsOTUsMTE0LDk1LDEwOCwxMTEsMTEwLDEwMywxMTcsMTAsMCwwLDAsOTUsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDExNywxMSwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsMTE2LDExNywxOCwwLDAsMCw5NSwxMTIsCisgICAgOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDk1LDEwOSwxMTEsMTAwLDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsCisgICAgMTE3LDEyLDAsMCwwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsCisgICAgMTAxLDExNywxMSwwLDAsMCw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTE1LDEwMCwxMDUsCisgICAgMTE0LDExNywxMywwLDAsMCw5NSwxMTksMTE0LDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsCisgICAgMTA5LDEwNSw5OSwxMTcsNSwwLDAsMCw5NSwxMTksMTE0LDk3LDExMiwxMTcsNCwwLAorICAgIDAsMCwxMTYsMTIxLDExMiwxMDEsMTE3LDgsMCwwLDAsOTUsOTUsOTksMTExLDEwMCwKKyAgICAxMDEsOTUsOTUsMTE3LDEwLDAsMCwwLDk1LDk5LDExMSwxMDAsMTAxLDk1LDExNiwxMjEsCisgICAgMTEyLDEwMSwxMTcsMTAsMCwwLDAsMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMTE3LDEzLDAsMCwwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDExNSwxMTcsMTIsMCwwLDAsOTUsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDExMCwKKyAgICAxMDMsOTUsMTExLDExMCwxMTcsMTIsMCwwLDAsODIsMTE3LDExMCwxMTYsMTA1LDEwOSwxMDEsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDExNywxNCwwLDAsMCw5NSw2OCwxMDEsOTcsMTAwLDEwOCwKKyAgICAxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLDExNCwxMTcsMTEsMCwwLDAsOTUsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNywxNiwwLDAsMCw5NSw2OCwxMTcsCisgICAgMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDExNywxNiwwLAorICAgIDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLAorICAgIDk5LDEwNywxMTcsMTksMCwwLDAsOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LDExMCwxMDgsCisgICAgMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTcsMjUsMCwwLDAsOTUsCisgICAgOTksOTcsMTA4LDEwOCw5NSwxMTksMTA1LDExNiwxMDQsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwKKyAgICA5NSwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwxMDAsMTE3LDMsMCwwLDAsMTExLDExNCwxMDAsCisgICAgMTE3LDE3LDAsMCwwLDk1LDgyLDY1LDg3LDk1LDc3LDY1LDcxLDczLDY3LDk1LAorICAgIDc4LDg1LDc3LDY2LDY5LDgyLDExNyw1LDAsMCwwLDk4LDEyMSwxMTYsMTAxLDExNSwKKyAgICAxMTcsNSwwLDAsMCwxMTQsOTcsMTEwLDEwMywxMDEsMTE3LDEyLDAsMCwwLDk1LAorICAgIDc3LDY1LDcxLDczLDY3LDk1LDY2LDg5LDg0LDY5LDgzLDExNyw4LDAsMCwwLAorICAgIDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDExNywxNSwwLDAsMCw4Myw3OSw4NSwKKyAgICA4Miw2Nyw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4MywxMTcsMjMsMCwwLAorICAgIDAsNjgsNjksNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksOTUsCisgICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE3LDI3LDAsMCwwLDc5LDgwLDg0LAorICAgIDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LAorICAgIDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNyw0LDAsMCwwLDc4LDExMSwxMTAsCisgICAgMTAxLDExNywxNywwLDAsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwKKyAgICA5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNywxNywwLDAsMCwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNywxNSwwLAorICAgIDAsMCw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwMiwxMDUsMTA4LAorICAgIDEwMSwxMTcsMTYsMCwwLDAsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwxMDEsOTUsMTA5LAorICAgIDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE3LDExLDAsMCwwLDExNSwxMDEsMTE2LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTcsMTAsMCwwLDAsMTE1LDEwMSwxMTYsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTcsMCwwLDAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTAyLDExMSwxMTQsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTEsMCwwLDAsCisgICAgOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsMTE3LDE3LDAsMCwwLAorICAgIDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwKKyAgICAxMTAsMTE3LDE2LDAsMCwwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE3LDE3LDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksMTE3LDE1LDAsMCwKKyAgICAwLDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwKKyAgICAxMTcsMTQsMCwwLDAsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDEwMSwxMTQsMTE3LDIxLDAsMCwwLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLAorICAgIDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNywxMywwLAorICAgIDAsMCw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTE3LAorICAgIDEyLDAsMCwwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCisgICAgMTE3LDEwLDAsMCwwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsCisgICAgMTYsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCwxMTcsMjAsMCwwLDAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwKKyAgICAxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTE3LDE4LDAsCisgICAgMCwwLDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDk1LDgzLDg1LDcwLDcwLAorICAgIDczLDg4LDY5LDgzLDExNywxOSwwLDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMTcsMTQsMCwwLAorICAgIDAsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDExNywKKyAgICAxNSwwLDAsMCw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTcsMTAsMCwwLDAsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDExNywxMCwwLDAsMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsCisgICAgMTE0LDExNywxOCwwLDAsMCw5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwKKyAgICAxMDcsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMTE3LDEzLDAsMCwwLDk1LDExNCwxMDEsCisgICAgMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTcsMTIsMCwwLDAsOTUsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNywxMywwLDAsMCwKKyAgICA5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLDk1LDk5LDEwNCwxMDEsOTksMTA3LDExNyw4LDAsCisgICAgMCwwLDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNywyMywwLDAsMCw5NSwKKyAgICAxMDIsMTA1LDExMCwxMDAsOTUsOTcsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMTcsMTEwLAorICAgIDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsMTE3LDE0LDAsMCwwLDk1LDEwMiwxMDUsMTEwLDEwMCwKKyAgICA5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDExNywxMSwwLDAsMCw5NSwxMDMsCisgICAgOTksMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNywxNiwwLDAsMCw5NSwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE3LDE3LAorICAgIDAsMCwwLDk1LDk5LDk3LDEwOCw5OSw5NSw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTUsOTUsMTE3LDI3LDAsMCwwLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTcsCisgICAgMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsMTExLDk3LAorICAgIDEwMCwxMDEsMTE0LDExNSwxMTcsMTAsMCwwLDAsOTUsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsOTUsOTUsMTE3LDYsMCwwLDAsOTUsMTE1LDEwMSwxMTYsMTE3LDExMiwxMTcsOCwKKyAgICAwLDAsMCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCw0MCwwLDAsMCwwLAorICAgIDQwLDAsMCwwLDAsNDAsMCwwLDAsMCwxMTcsMjksMCwwLDAsNjAsCisgICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwKKyAgICA0Niw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsNjIsMTE3LDgsMCwwLAorICAgIDAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNjIsOCwwLDAsMCwxMTUsMTMyLDAsCisgICAgMCwwLDYsMjEsNiwzLDEyLDEzLDEyLDE2LDEyLDEzLDEyLDEyLDEyLDEyLAorICAgIDEyLDEwLDEyLDYsMTIsNywxNSwyMiwxMiw4LDE1LDMsMTIsMTIsNiwyLAorICAgIDYsMywyMiw0LDE5LDY4LDE5LDIzLDEyLDE5LDEyLDIwLDEyLDEwMCwzNCwxLAorICAgIDM3LDIsNiwyLDksMiw5LDEsOSwyLDE1LDI3LDEyLDIzLDEyLDIxLAorICAgIDEyLDgsMTIsMTMsMTIsMTEsMTIsNTUsMTIsMTgsMTIsMTEsMTIsMTEsMTIsMTcsCisgICAgMTksNTcsMTksNTQsMTksNTAsMTksODIsMjIsMTM0LDE5LDI5LDI1LDQ5LDI1LDI1LAorICAgIDYsMywxOSw0NSwxOSw1NSwxOSwxOCwxOSw4OSwxOSwxMjUsMTksMTMsMTIsOSwKKyAgICAxMiwxNywxMiwxNyw2LDIsMTIsNTAsMTIsMTMsMTgsMjQsMTIsMzQsMTIsMTUsCisgICAgMTIsMTEsMjQsMzYsMTIsNzQsCit9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5IGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CmluZGV4IDVkOGU1YTkuLmQ5YTA4NTUgMTAwNzU1Ci0tLSBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorKysgYi9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKQEAgLTIzLDkgKzIzLDYgQEAKICAgICBvcGNvZGUgPSBmaW5kX21vZHVsZSgib3Bjb2RlIikKICAgICB0YXJnZXRzID0gWydfdW5rbm93bl9vcGNvZGUnXSAqIDI1NgogICAgIGZvciBvcG5hbWUsIG9wIGluIG9wY29kZS5vcG1hcC5pdGVtcygpOgotICAgICAgICBpZiBvcG5hbWUgPT0gIlNUT1BfQ09ERSI6Ci0gICAgICAgICAgICAjIFhYWCBvcGNvZGUgbm90IGltcGxlbWVudGVkCi0gICAgICAgICAgICBjb250aW51ZQogICAgICAgICB0YXJnZXRzW29wXSA9ICJUQVJHRVRfJXMiICUgb3BuYW1lCiAgICAgZi53cml0ZSgic3RhdGljIHZvaWQgKm9wY29kZV90YXJnZXRzWzI1Nl0gPSB7XG4iKQogICAgIGYud3JpdGUoIixcbiIuam9pbihbIiAgICAmJiVzIiAlIHMgZm9yIHMgaW4gdGFyZ2V0c10pKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL21hcnNoYWwuYyBiL1B5dGhvbi9tYXJzaGFsLmMKaW5kZXggM2UyZmJlYi4uNmQ1MmE4NCAxMDA2NDQKLS0tIGEvUHl0aG9uL21hcnNoYWwuYworKysgYi9QeXRob24vbWFyc2hhbC5jCkBAIC0zMSw2ICszMSw5IEBACiAjZGVmaW5lIFRZUEVfU1RPUElURVIgICAgICAgICAgICdTJwogI2RlZmluZSBUWVBFX0VMTElQU0lTICAgICAgICAgICAnLicKICNkZWZpbmUgVFlQRV9JTlQgICAgICAgICAgICAgICAgJ2knCisvKiBUWVBFX0lOVDY0IGlzIGRlcHJlY2F0ZWQuIEl0IGlzIG5vdAorICAgZ2VuZXJhdGVkIGFueW1vcmUsIGFuZCBzdXBwb3J0IGZvciByZWFkaW5nIGl0CisgICB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNC4gKi8KICNkZWZpbmUgVFlQRV9JTlQ2NCAgICAgICAgICAgICAgJ0knCiAjZGVmaW5lIFRZUEVfRkxPQVQgICAgICAgICAgICAgICdmJwogI2RlZmluZSBUWVBFX0JJTkFSWV9GTE9BVCAgICAgICAnZycKQEAgLTU5LDkgKzYyLDkgQEAKICAgICAvKiBJZiBmcCA9PSBOVUxMLCB0aGUgZm9sbG93aW5nIGFyZSB2YWxpZDogKi8KICAgICBQeU9iamVjdCAqcmVhZGFibGU7ICAgIC8qIFN0cmVhbS1saWtlIG9iamVjdCBiZWluZyByZWFkIGZyb20gKi8KICAgICBQeU9iamVjdCAqc3RyOworICAgIFB5T2JqZWN0ICpjdXJyZW50X2ZpbGVuYW1lOwogICAgIGNoYXIgKnB0cjsKICAgICBjaGFyICplbmQ7Ci0gICAgUHlPYmplY3QgKnN0cmluZ3M7IC8qIGRpY3Qgb24gbWFyc2hhbCwgbGlzdCBvbiB1bm1hcnNoYWwgKi8KICAgICBpbnQgdmVyc2lvbjsKIH0gV0ZJTEU7CiAKQEAgLTEyMSwxNSArMTI0LDYgQEAKICAgICB3X2J5dGUoKGNoYXIpKCh4Pj4yNCkgJiAweGZmKSwgcCk7CiB9CiAKLSNpZiBTSVpFT0ZfTE9ORyA+IDQKLXN0YXRpYyB2b2lkCi13X2xvbmc2NChsb25nIHgsIFdGSUxFICpwKQotewotICAgIHdfbG9uZyh4LCBwKTsKLSAgICB3X2xvbmcoeD4+MzIsIHApOwotfQotI2VuZGlmCi0KIC8qIFdlIGFzc3VtZSB0aGF0IFB5dGhvbiBsb25ncyBhcmUgc3RvcmVkIGludGVybmFsbHkgaW4gYmFzZSBzb21lIHBvd2VyIG9mCiAgICAyKioxNTsgZm9yIHRoZSBzYWtlIG9mIHBvcnRhYmlsaXR5IHdlJ2xsIGFsd2F5cyByZWFkIGFuZCB3cml0ZSB0aGVtIGluIGJhc2UKICAgIGV4YWN0bHkgMioqMTUuICovCkBAIC0yMTksOCArMjEzLDggQEAKICNpZiBTSVpFT0ZfTE9ORyA+IDQKICAgICAgICAgICAgIGxvbmcgeSA9IFB5X0FSSVRITUVUSUNfUklHSFRfU0hJRlQobG9uZywgeCwgMzEpOwogICAgICAgICAgICAgaWYgKHkgJiYgeSAhPSAtMSkgewotICAgICAgICAgICAgICAgIHdfYnl0ZShUWVBFX0lOVDY0LCBwKTsKLSAgICAgICAgICAgICAgICB3X2xvbmc2NCh4LCBwKTsKKyAgICAgICAgICAgICAgICAvKiBUb28gbGFyZ2UgZm9yIFRZUEVfSU5UICovCisgICAgICAgICAgICAgICAgd19QeUxvbmcoKFB5TG9uZ09iamVjdCopdiwgcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAjZW5kaWYKQEAgLTMxMSw5ICszMDUsNyBAQAogICAgIH0KICAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2KSkgewogICAgICAgICBQeU9iamVjdCAqdXRmODsKLSAgICAgICAgdXRmOCA9IFB5VW5pY29kZV9FbmNvZGVVVEY4KFB5VW5pY29kZV9BU19VTklDT0RFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9TSVpFKHYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZXBhc3MiKTsKKyAgICAgICAgdXRmOCA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodiwgInV0ZjgiLCAic3Vycm9nYXRlcGFzcyIpOwogICAgICAgICBpZiAodXRmOCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBwLT5kZXB0aC0tOwogICAgICAgICAgICAgcC0+ZXJyb3IgPSBXRkVSUl9VTk1BUlNIQUxMQUJMRTsKQEAgLTQ0NSw3ICs0MzcsNiBAQAogICAgIHdmLmZwID0gZnA7CiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7Ci0gICAgd2Yuc3RyaW5ncyA9IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19sb25nKHgsICZ3Zik7CiB9CkBAIC00NTcsMTAgKzQ0OCw4IEBACiAgICAgd2YuZnAgPSBmcDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKLSAgICB3Zi5zdHJpbmdzID0gKHZlcnNpb24gPiAwKSA/IFB5RGljdF9OZXcoKSA6IE5VTEw7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247CiAgICAgd19vYmplY3QoeCwgJndmKTsKLSAgICBQeV9YREVDUkVGKHdmLnN0cmluZ3MpOwogfQogCiB0eXBlZGVmIFdGSUxFIFJGSUxFOyAvKiBTYW1lIHN0cnVjdCB3aXRoIGRpZmZlcmVudCBpbnZhcmlhbnRzICovCkBAIC00ODUsNyArNDc0LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlPYmplY3QgKmRhdGEgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHAtPnJlYWRhYmxlLCAicmVhZCIsICJpIiwgbik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOworCisgICAgICAgIFB5T2JqZWN0ICpkYXRhID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwLT5yZWFkYWJsZSwgJlB5SWRfcmVhZCwgImkiLCBuKTsKICAgICAgICAgcmVhZCA9IDA7CiAgICAgICAgIGlmIChkYXRhICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhkYXRhKSkgewpAQCAtMTA2OSw2ICsxMDYwLDE4IEBACiAgICAgICAgICAgICBmaWxlbmFtZSA9IHJfb2JqZWN0KHApOwogICAgICAgICAgICAgaWYgKGZpbGVuYW1lID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBjb2RlX2Vycm9yOworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KGZpbGVuYW1lKSkgeworICAgICAgICAgICAgICAgIGlmIChwLT5jdXJyZW50X2ZpbGVuYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeVVuaWNvZGVfQ29tcGFyZShmaWxlbmFtZSwgcC0+Y3VycmVudF9maWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmaWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYocC0+Y3VycmVudF9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHAtPmN1cnJlbnRfZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHAtPmN1cnJlbnRfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBuYW1lID0gcl9vYmplY3QocCk7CiAgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gY29kZV9lcnJvcjsKQEAgLTExMzEsNyArMTEzNCw3IEBACiAgICAgYXNzZXJ0KGZwKTsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CiAgICAgcmYuZnAgPSBmcDsKLSAgICByZi5zdHJpbmdzID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5lbmQgPSByZi5wdHIgPSBOVUxMOwogICAgIHJldHVybiByX3Nob3J0KCZyZik7CiB9CkBAIC0xMTQyLDcgKzExNDUsNyBAQAogICAgIFJGSUxFIHJmOwogICAgIHJmLmZwID0gZnA7CiAgICAgcmYucmVhZGFibGUgPSBOVUxMOwotICAgIHJmLnN0cmluZ3MgPSBOVUxMOworICAgIHJmLmN1cnJlbnRfZmlsZW5hbWUgPSBOVUxMOwogICAgIHJmLnB0ciA9IHJmLmVuZCA9IE5VTEw7CiAgICAgcmV0dXJuIHJfbG9uZygmcmYpOwogfQpAQCAtMTIwNCwxMSArMTIwNywxMCBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgcmYuZnAgPSBmcDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7Ci0gICAgcmYuc3RyaW5ncyA9IFB5TGlzdF9OZXcoMCk7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYuZGVwdGggPSAwOwogICAgIHJmLnB0ciA9IHJmLmVuZCA9IE5VTEw7CiAgICAgcmVzdWx0ID0gcl9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTIxOSwxMiArMTIyMSwxMSBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgcmYuZnAgPSBOVUxMOwogICAgIHJmLnJlYWRhYmxlID0gTlVMTDsKKyAgICByZi5jdXJyZW50X2ZpbGVuYW1lID0gTlVMTDsKICAgICByZi5wdHIgPSBzdHI7CiAgICAgcmYuZW5kID0gc3RyICsgbGVuOwotICAgIHJmLnN0cmluZ3MgPSBQeUxpc3RfTmV3KDApOwogICAgIHJmLmRlcHRoID0gMDsKICAgICByZXN1bHQgPSByX29iamVjdCgmcmYpOwotICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMjMyLDcgKzEyMzMsNiBAQAogUHlNYXJzaGFsX1dyaXRlT2JqZWN0VG9TdHJpbmcoUHlPYmplY3QgKngsIGludCB2ZXJzaW9uKQogewogICAgIFdGSUxFIHdmOwotICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwogCiAgICAgd2YuZnAgPSBOVUxMOwogICAgIHdmLnJlYWRhYmxlID0gTlVMTDsKQEAgLTEyNDQsOSArMTI0NCw3IEBACiAgICAgd2YuZXJyb3IgPSBXRkVSUl9PSzsKICAgICB3Zi5kZXB0aCA9IDA7CiAgICAgd2YudmVyc2lvbiA9IHZlcnNpb247Ci0gICAgd2Yuc3RyaW5ncyA9ICh2ZXJzaW9uID4gMCkgPyBQeURpY3RfTmV3KCkgOiBOVUxMOwogICAgIHdfb2JqZWN0KHgsICZ3Zik7Ci0gICAgUHlfWERFQ1JFRih3Zi5zdHJpbmdzKTsKICAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKICAgICAgICAgY2hhciAqYmFzZSA9IFB5Qnl0ZXNfQVNfU1RSSU5HKChQeUJ5dGVzT2JqZWN0ICopd2Yuc3RyKTsKICAgICAgICAgaWYgKHdmLnB0ciAtIGJhc2UgPiBQWV9TU0laRV9UX01BWCkgewpAQCAtMTI2OCwxMiArMTI2Niw3IEBACiAgICAgICAgICAgICAgICA6Im9iamVjdCB0b28gZGVlcGx5IG5lc3RlZCB0byBtYXJzaGFsIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAod2Yuc3RyICE9IE5VTEwpIHsKLSAgICAgICAgLyogWFhYIFF1aWNrIGhhY2sgLS0gbmVlZCB0byBkbyB0aGlzIGRpZmZlcmVudGx5ICovCi0gICAgICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbU9iamVjdCh3Zi5zdHIpOwotICAgICAgICBQeV9ERUNSRUYod2Yuc3RyKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlczsKKyAgICByZXR1cm4gd2Yuc3RyOwogfQogCiAvKiBBbmQgYW4gaW50ZXJmYWNlIGZvciBQeXRob24gcHJvZ3JhbXMuLi4gKi8KQEAgLTEyODcsMTIgKzEyODAsMTQgQEAKICAgICBpbnQgdmVyc2lvbiA9IFB5X01BUlNIQUxfVkVSU0lPTjsKICAgICBQeU9iamVjdCAqczsKICAgICBQeU9iamVjdCAqcmVzOworICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT098aTpkdW1wIiwgJngsICZmLCAmdmVyc2lvbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHMgPSBQeU1hcnNoYWxfV3JpdGVPYmplY3RUb1N0cmluZyh4LCB2ZXJzaW9uKTsKICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGYsICJ3cml0ZSIsICJPIiwgcyk7CisgICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF93cml0ZSwgIk8iLCBzKTsKICAgICBQeV9ERUNSRUYocyk7CiAgICAgcmV0dXJuIHJlczsKIH0KQEAgLTEzMTQsNiArMTMwOSw3IEBACiBtYXJzaGFsX2xvYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpmKQogewogICAgIFB5T2JqZWN0ICpkYXRhLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKHJlYWQpOwogICAgIFJGSUxFIHJmOwogCiAgICAgLyoKQEAgLTEzMjEsNyArMTMxNyw3IEBACiAgICAgICogVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB0aGUgb2JqZWN0IHBhc3NlZCBpbiBhdCBsZWFzdAogICAgICAqIGhhcyBhIHJlYWQgbWV0aG9kIHdoaWNoIHJldHVybnMgYnl0ZXMuCiAgICAgICovCi0gICAgZGF0YSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgInJlYWQiLCAiaSIsIDApOworICAgIGRhdGEgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX3JlYWQsICJpIiwgMCk7CiAgICAgaWYgKGRhdGEgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKGRhdGEpKSB7CkBAIC0xMzMxLDEyICsxMzI3LDExIEBACiAgICAgICAgIHJlc3VsdCA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICAgICAgcmYuZGVwdGggPSAwOwogICAgICAgICByZi5mcCA9IE5VTEw7CiAgICAgICAgIHJmLnJlYWRhYmxlID0gZjsKKyAgICAgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgICAgIHJlc3VsdCA9IHJlYWRfb2JqZWN0KCZyZik7Ci0gICAgICAgIFB5X0RFQ1JFRihyZi5zdHJpbmdzKTsKICAgICB9CiAgICAgUHlfREVDUkVGKGRhdGEpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMzg5LDEyICsxMzg0LDExIEBACiAgICAgbiA9IHAubGVuOwogICAgIHJmLmZwID0gTlVMTDsKICAgICByZi5yZWFkYWJsZSA9IE5VTEw7CisgICAgcmYuY3VycmVudF9maWxlbmFtZSA9IE5VTEw7CiAgICAgcmYucHRyID0gczsKICAgICByZi5lbmQgPSBzICsgbjsKLSAgICByZi5zdHJpbmdzID0gUHlMaXN0X05ldygwKTsKICAgICByZi5kZXB0aCA9IDA7CiAgICAgcmVzdWx0ID0gcmVhZF9vYmplY3QoJnJmKTsKLSAgICBQeV9ERUNSRUYocmYuc3RyaW5ncyk7CiAgICAgUHlCdWZmZXJfUmVsZWFzZSgmcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDg1YjBkNjYuLjQyODkxNGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMTQ4LDE1ICsxNDgsNiBAQAogICAgIHJldHVybiB2OwogfQogCi1zdGF0aWMgaW50Ci1fdXN0cmxlbihQeV9VTklDT0RFICp1KQotewotICAgIGludCBpID0gMDsKLSAgICBQeV9VTklDT0RFICp2ID0gdTsKLSAgICB3aGlsZSAoKnYgIT0gMCkgeyBpKys7IHYrKzsgfQotICAgIHJldHVybiBpOwotfQotCiBzdGF0aWMgUHlPYmplY3QgKgogZG9fbWt0dXBsZShjb25zdCBjaGFyICoqcF9mb3JtYXQsIHZhX2xpc3QgKnBfdmEsIGludCBlbmRjaGFyLCBpbnQgbiwgaW50IGZsYWdzKQogewpAQCAtMjY5LDcgKzI2MCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAobiA8IDApCi0gICAgICAgICAgICAgICAgICAgIG4gPSBfdXN0cmxlbih1KTsKKyAgICAgICAgICAgICAgICAgICAgbiA9IFB5X1VOSUNPREVfc3RybGVuKHUpOwogICAgICAgICAgICAgICAgIHYgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUodSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdjsKQEAgLTI5MiwxMSArMjgzLDYgQEAKICAgICAgICAgY2FzZSAnQyc6CiAgICAgICAgIHsKICAgICAgICAgICAgIGludCBpID0gdmFfYXJnKCpwX3ZhLCBpbnQpOwotICAgICAgICAgICAgaWYgKGkgPCAwIHx8IGkgPiBQeVVuaWNvZGVfR2V0TWF4KCkpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVjIGFyZyBub3QgaW4gcmFuZ2UoMHgxMTAwMDApIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21PcmRpbmFsKGkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKaW5kZXggYTkxZGE3OS4uMmQ2YmNkYSAxMDA2NDQKLS0tIGEvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKKysrIGIvUHl0aG9uL29wY29kZV90YXJnZXRzLmgKQEAgLTcxLDcgKzcxLDcgQEAKICAgICAmJlRBUkdFVF9TVE9SRV9MT0NBTFMsCiAgICAgJiZUQVJHRVRfUFJJTlRfRVhQUiwKICAgICAmJlRBUkdFVF9MT0FEX0JVSUxEX0NMQVNTLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX1lJRUxEX0ZST00sCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfSU5QTEFDRV9MU0hJRlQsCmRpZmYgLS1naXQgYS9QeXRob24vcGVlcGhvbGUuYyBiL1B5dGhvbi9wZWVwaG9sZS5jCmluZGV4IDM1OWVkYTguLjVkNTM2NzcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9wZWVwaG9sZS5jCisrKyBiL1B5dGhvbi9wZWVwaG9sZS5jCkBAIC0yMyw2ICsyMyw2NCBAQAogI2RlZmluZSBJU0JBU0lDQkxPQ0soYmxvY2tzLCBzdGFydCwgYnl0ZXMpIFwKICAgICAoYmxvY2tzW3N0YXJ0XT09YmxvY2tzW3N0YXJ0K2J5dGVzLTFdKQogCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfQ1JFQVRFKCkgeyBcCisgICAgY29uc3Rfc3RhY2tfc2l6ZSA9IDI1NjsgXAorICAgIGNvbnN0X3N0YWNrID0gUHlNZW1fTmV3KFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgbG9hZF9jb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAorICAgIGlmICghY29uc3Rfc3RhY2sgfHwgIWxvYWRfY29uc3Rfc3RhY2spIHsgXAorICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCisgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCisgICAgfSBcCisgICAgfQorCisjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAorICAgIGlmIChjb25zdF9zdGFjaykgXAorICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAorICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCisgICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKSBkbyB7IFwKKyAgICBQeU9iamVjdCAqX3g7IFwKKyAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsgXAorICAgIGFzc2VydChQeUxpc3RfR0VUX1NJWkUoY29uc3RzKSA+IEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBfeCA9IFB5TGlzdF9HRVRfSVRFTShjb25zdHMsIEdFVEFSRyhjb2Rlc3RyLCBpKSk7IFwKKyAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCisgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAorICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCisgICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAorICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7IFwKKyAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOyBcCisgICAgICAgIH0gXAorICAgIH0gXAorICAgIGxvYWRfY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IGk7IFwKKyAgICBjb25zdF9zdGFja1tjb25zdF9zdGFja190b3BdID0gX3g7IFwKKyAgICBpbl9jb25zdHMgPSAxOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1JFU0VUKCkgZG8geyBcCisgICAgY29uc3Rfc3RhY2tfdG9wID0gLTE7IFwKKyAgICB9IHdoaWxlKDApCisKKyNkZWZpbmUgQ09OU1RfU1RBQ0tfVE9QKCkgXAorICAgIGNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0KKworI2RlZmluZSBDT05TVF9TVEFDS19MQVNUTihpKSBcCisgICAgJmNvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXQorCisjZGVmaW5lIENPTlNUX1NUQUNLX1BPUChpKSBkbyB7IFwKKyAgICBhc3NlcnQoY29uc3Rfc3RhY2tfdG9wICsgMSA+PSBpKTsgXAorICAgIGNvbnN0X3N0YWNrX3RvcCAtPSBpOyBcCisgICAgfSB3aGlsZSgwKQorCisjZGVmaW5lIENPTlNUX1NUQUNLX09QX0xBU1ROKGkpIFwKKyAgICAoKGNvbnN0X3N0YWNrX3RvcCA+PSBpIC0gMSkgPyBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcCAtIGkgKyAxXSA6IC0xKQorCisKIC8qIFJlcGxhY2UgTE9BRF9DT05TVCBjMS4gTE9BRF9DT05TVCBjMiAuLi4gTE9BRF9DT05TVCBjbiBCVUlMRF9UVVBMRSBuCiAgICB3aXRoICAgIExPQURfQ09OU1QgKGMxLCBjMiwgLi4uIGNuKS4KICAgIFRoZSBjb25zdHMgdGFibGUgbXVzdCBzdGlsbCBiZSBpbiBsaXN0IGZvcm0gc28gdGhhdCB0aGUKQEAgLTMzLDE3ICs5MSwxNCBAQAogICAgdGVzdDsgZm9yIEJVSUxEX1NFVCBpdCBhc3NlbWJsZXMgYSBmcm96ZW5zZXQgcmF0aGVyIHRoYW4gYSB0dXBsZS4KICovCiBzdGF0aWMgaW50Ci10dXBsZV9vZl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlfc3NpemVfdCBuLCBQeU9iamVjdCAqY29uc3RzKQordHVwbGVfb2ZfY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5X3NzaXplX3QgbiwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7Ci0gICAgUHlfc3NpemVfdCBpLCBhcmcsIGxlbl9jb25zdHM7CisgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwogCiAgICAgLyogUHJlLWNvbmRpdGlvbnMgKi8KICAgICBhc3NlcnQoUHlMaXN0X0NoZWNrRXhhY3QoY29uc3RzKSk7Ci0gICAgYXNzZXJ0KGNvZGVzdHJbbiozXSA9PSBCVUlMRF9UVVBMRSB8fCBjb2Rlc3RyW24qM10gPT0gQlVJTERfTElTVCB8fCBjb2Rlc3RyW24qM10gPT0gQlVJTERfU0VUKTsKLSAgICBhc3NlcnQoR0VUQVJHKGNvZGVzdHIsIChuKjMpKSA9PSBuKTsKLSAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykKLSAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaSozXSA9PSBMT0FEX0NPTlNUKTsKIAogICAgIC8qIEJ1aWxkdXAgbmV3IHR1cGxlIG9mIGNvbnN0YW50cyAqLwogICAgIG5ld2NvbnN0ID0gUHlUdXBsZV9OZXcobik7CkBAIC01MSwxNiArMTA2LDE0IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewotICAgICAgICBhcmcgPSBHRVRBUkcoY29kZXN0ciwgKGkqMykpOwotICAgICAgICBhc3NlcnQoYXJnIDwgbGVuX2NvbnN0cyk7Ci0gICAgICAgIGNvbnN0YW50ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgYXJnKTsKKyAgICAgICAgY29uc3RhbnQgPSBvYmpzW2ldOwogICAgICAgICBQeV9JTkNSRUYoY29uc3RhbnQpOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2NvbnN0LCBpLCBjb25zdGFudCk7CiAgICAgfQogCiAgICAgLyogSWYgaXQncyBhIEJVSUxEX1NFVCwgdXNlIHRoZSBQeVR1cGxlIHdlIGp1c3QgYnVpbHQgdG8gY3JlYXRlIGEKICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCi0gICAgaWYgKGNvZGVzdHJbbiozXSA9PSBCVUlMRF9TRVQpIHsKKyAgICBpZiAoY29kZXN0clswXSA9PSBCVUlMRF9TRVQpIHsKICAgICAgICAgUHlPYmplY3QgKnR1cGxlID0gbmV3Y29uc3Q7CiAgICAgICAgIG5ld2NvbnN0ID0gUHlGcm96ZW5TZXRfTmV3KHR1cGxlKTsKICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKQEAgLTc3LDkgKzEzMCw4IEBACiAKICAgICAvKiBXcml0ZSBOT1BzIG92ZXIgb2xkIExPQURfQ09OU1RTIGFuZAogICAgICAgIGFkZCBhIG5ldyBMT0FEX0NPTlNUIG5ld2NvbnN0IG9uIHRvcCBvZiB0aGUgQlVJTERfVFVQTEUgbiAqLwotICAgIG1lbXNldChjb2Rlc3RyLCBOT1AsIG4qMyk7Ci0gICAgY29kZXN0cltuKjNdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgKG4qMyksIGxlbl9jb25zdHMpOworICAgIGNvZGVzdHJbMF0gPSBMT0FEX0NPTlNUOworICAgIFNFVEFSRyhjb2Rlc3RyLCAwLCBsZW5fY29uc3RzKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtODcsMTQgKzEzOSwxNCBAQAogICAgd2l0aCAgICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKQogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IGNhbiBiZSBhcHBlbmRlZC4KLSAgIENhbGxlZCB3aXRoIGNvZGVzdHIgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IExPQURfQ09OU1QuCisgICBDYWxsZWQgd2l0aCBjb2Rlc3RyIHBvaW50aW5nIHRvIHRoZSBCSU5PUC4KICAgIEFiYW5kb25zIHRoZSB0cmFuc2Zvcm1hdGlvbiBpZiB0aGUgZm9sZGluZyBmYWlscyAoaS5lLiAgMSsnYScpLgogICAgSWYgdGhlIG5ldyBjb25zdGFudCBpcyBhIHNlcXVlbmNlLCBvbmx5IGZvbGRzIHdoZW4gdGhlIHNpemUKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCiBzdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cykKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqKm9ianMpCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqdiwgKnc7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzLCBzaXplOwpAQCAtMTAyLDEzICsxNTQsMTEgQEAKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOwotICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOwotICAgIGFzc2VydChjb2Rlc3RyWzNdID09IExPQURfQ09OU1QpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwotICAgIHYgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMCkpOwotICAgIHcgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMykpOwotICAgIG9wY29kZSA9IGNvZGVzdHJbNl07CisgICAgdiA9IG9ianNbMF07CisgICAgdyA9IG9ianNbMV07CisgICAgb3Bjb2RlID0gY29kZXN0clswXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIEJJTkFSWV9QT1dFUjoKICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfUG93ZXIodiwgdywgUHlfTm9uZSk7CkBAIC0xMzMsMjQgKzE4Myw2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBCSU5BUllfU1VCU0NSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU9iamVjdF9HZXRJdGVtKHYsIHcpOwotICAgICAgICAgICAgLyogIzUwNTc6IGlmIHYgaXMgdW5pY29kZSwgdGhlcmUgbWlnaHQgYmUgZGlmZmVyZW5jZXMgYmV0d2VlbgotICAgICAgICAgICAgICAgd2lkZSBhbmQgbmFycm93IGJ1aWxkcyBpbiBjYXNlcyBsaWtlICdcVTAwMDEyMzQ1J1swXS4KLSAgICAgICAgICAgICAgIFdpZGUgYnVpbGRzIHdpbGwgcmV0dXJuIGEgbm9uLUJNUCBjaGFyLCB3aGVyZWFzIG5hcnJvdyBidWlsZHMKLSAgICAgICAgICAgICAgIHdpbGwgcmV0dXJuIGEgc3Vycm9nYXRlLiAgSW4gYm90aCB0aGUgY2FzZXMgc2tpcCB0aGUKLSAgICAgICAgICAgICAgIG9wdGltaXphdGlvbiBpbiBvcmRlciB0byBwcm9kdWNlIGNvbXBhdGlibGUgcHljcy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKG5ld2NvbnN0ICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQ2hlY2sodikgJiYgUHlVbmljb2RlX0NoZWNrKG5ld2NvbnN0KSkgewotICAgICAgICAgICAgICAgIFB5X1VOSUNPREUgY2ggPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShuZXdjb25zdClbMF07Ci0jaWZkZWYgUHlfVU5JQ09ERV9XSURFCi0gICAgICAgICAgICAgICAgaWYgKGNoID4gMHhGRkZGKSB7Ci0jZWxzZQotICAgICAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPD0gMHhERkZGKSB7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQklOQVJZX0xTSElGVDoKICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfTHNoaWZ0KHYsIHcpOwpAQCAtMTk4LDE2ICsyMzAsMTUgQEAKICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwogCiAgICAgLyogV3JpdGUgTk9QIE5PUCBOT1AgTk9QIExPQURfQ09OU1QgbmV3Y29uc3QgKi8KLSAgICBtZW1zZXQoY29kZXN0ciwgTk9QLCA0KTsKLSAgICBjb2Rlc3RyWzRdID0gTE9BRF9DT05TVDsKLSAgICBTRVRBUkcoY29kZXN0ciwgNCwgbGVuX2NvbnN0cyk7CisgICAgY29kZXN0clstMl0gPSBMT0FEX0NPTlNUOworICAgIFNFVEFSRyhjb2Rlc3RyLCAtMiwgbGVuX2NvbnN0cyk7CiAgICAgcmV0dXJuIDE7CiB9CiAKIHN0YXRpYyBpbnQKLWZvbGRfdW5hcnlvcHNfb25fY29uc3RhbnRzKHVuc2lnbmVkIGNoYXIgKmNvZGVzdHIsIFB5T2JqZWN0ICpjb25zdHMpCitmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKIHsKLSAgICBQeU9iamVjdCAqbmV3Y29uc3Q9TlVMTCwgKnY7CisgICAgUHlPYmplY3QgKm5ld2NvbnN0OwogICAgIFB5X3NzaXplX3QgbGVuX2NvbnN0czsKICAgICBpbnQgb3Bjb2RlOwogCkBAIC0yMTYsMTMgKzI0NywxMCBAQAogICAgIGFzc2VydChjb2Rlc3RyWzBdID09IExPQURfQ09OU1QpOwogCiAgICAgLyogQ3JlYXRlIG5ldyBjb25zdGFudCAqLwotICAgIHYgPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgMCkpOwogICAgIG9wY29kZSA9IGNvZGVzdHJbM107CiAgICAgc3dpdGNoIChvcGNvZGUpIHsKICAgICAgICAgY2FzZSBVTkFSWV9ORUdBVElWRToKLSAgICAgICAgICAgIC8qIFByZXNlcnZlIHRoZSBzaWduIG9mIC0wLjAgKi8KLSAgICAgICAgICAgIGlmIChQeU9iamVjdF9Jc1RydWUodikgPT0gMSkKLSAgICAgICAgICAgICAgICBuZXdjb25zdCA9IFB5TnVtYmVyX05lZ2F0aXZlKHYpOworICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVOQVJZX0lOVkVSVDoKICAgICAgICAgICAgIG5ld2NvbnN0ID0gUHlOdW1iZXJfSW52ZXJ0KHYpOwpAQCAtMzU4LDcgKzM4NiwxMSBAQAogICAgIHVuc2lnbmVkIGNoYXIgKmxpbmVubzsKICAgICBpbnQgKmFkZHJtYXAgPSBOVUxMOwogICAgIGludCBuZXdfbGluZSwgY3VtX29yaWdfbGluZSwgbGFzdF9saW5lLCB0YWJzaXo7Ci0gICAgaW50IGN1bWxjPTAsIGxhc3RsYz0wOyAgICAgIC8qIENvdW50IHJ1bnMgb2YgY29uc2VjdXRpdmUgTE9BRF9DT05TVHMgKi8KKyAgICBQeU9iamVjdCAqKmNvbnN0X3N0YWNrID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90ICpsb2FkX2NvbnN0X3N0YWNrID0gTlVMTDsKKyAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3RvcCA9IC0xOworICAgIFB5X3NzaXplX3QgY29uc3Rfc3RhY2tfc2l6ZSA9IDA7CisgICAgaW50IGluX2NvbnN0cyA9IDA7ICAvKiB3aGV0aGVyIHdlIGFyZSBpbiBhIExPQURfQ09OU1Qgc2VxdWVuY2UgKi8KICAgICB1bnNpZ25lZCBpbnQgKmJsb2NrcyA9IE5VTEw7CiAgICAgY2hhciAqbmFtZTsKIApAQCAtNDA0LDEyICs0MzYsMTYgQEAKICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVjayhjb25zdHMpKTsKIAorICAgIENPTlNUX1NUQUNLX0NSRUFURSgpOworCiAgICAgZm9yIChpPTAgOyBpPGNvZGVsZW4gOyBpICs9IENPREVTSVpFKGNvZGVzdHJbaV0pKSB7CiAgICAgICByZW9wdGltaXplX2N1cnJlbnQ6CiAgICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CiAKLSAgICAgICAgbGFzdGxjID0gY3VtbGM7Ci0gICAgICAgIGN1bWxjID0gMDsKKyAgICAgICAgaWYgKCFpbl9jb25zdHMpIHsKKyAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CisgICAgICAgIH0KKyAgICAgICAgaW5fY29uc3RzID0gMDsKIAogICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICAgICAgLyogUmVwbGFjZSBVTkFSWV9OT1QgUE9QX0pVTVBfSUZfRkFMU0UKQEAgLTQ1MCwyMSArNDg2LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdEVycm9yOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGggPT0gMCkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgY3VtbGMgPSBsYXN0bGMgKyAxOworICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBTa2lwIG92ZXIgTE9BRF9DT05TVCB0cnVlY29uc3QKICAgICAgICAgICAgICAgICAgICBQT1BfSlVNUF9JRl9GQUxTRSB4eC4gVGhpcyBpbXByb3ZlcwogICAgICAgICAgICAgICAgICAgICJ3aGlsZSAxIiBwZXJmb3JtYW5jZS4gKi8KICAgICAgICAgICAgIGNhc2UgTE9BRF9DT05TVDoKLSAgICAgICAgICAgICAgICBjdW1sYyA9IGxhc3RsYyArIDE7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwogICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gUE9QX0pVTVBfSUZfRkFMU0UgIHx8CiAgICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgIHx8CiAgICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgaikpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpLCBOT1AsIDYpOwotICAgICAgICAgICAgICAgIGN1bWxjID0gMDsKKyAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogVHJ5IHRvIGZvbGQgdHVwbGVzIG9mIGNvbnN0YW50cyAoaW5jbHVkZXMgYSBjYXNlIGZvciBsaXN0cyBhbmQgc2V0cwpAQCAtNDc2LDE5ICs1MTIsMjMgQEAKICAgICAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgICAgIGNhc2UgQlVJTERfU0VUOgogICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaCA9IGkgLSAzICogajsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICAmJgotICAgICAgICAgICAgICAgICAgICBqIDw9IGxhc3RsYyAgICAgICAgICAgICAgICAgICYmCisgICAgICAgICAgICAgICAgaWYgKGogPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKGopOworICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgaikpOworICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYgaiA+IDAgJiYgaiA8PSBDT05TVF9TVEFDS19MRU4oKSAmJgogICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIDMqKGorMSkpKSB8fAorICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCszKSkgfHwKICAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM109PUNPTVBBUkVfT1AgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCAzKihqKzIpKSAmJgorICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCs2KSAmJgogICAgICAgICAgICAgICAgICAgICAgIChHRVRBUkcoY29kZXN0cixpKzMpPT02IHx8CiAgICAgICAgICAgICAgICAgICAgICAgIEdFVEFSRyhjb2Rlc3RyLGkrMyk9PTcpKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgdHVwbGVfb2ZfY29uc3RhbnRzKCZjb2Rlc3RyW2hdLCBqLCBjb25zdHMpKSB7CisgICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltpXSwgaiwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTihqKSkpIHsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1bWxjID0gMTsKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZjb2Rlc3RyW2hdLCBOT1AsIGkgLSBoKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKGopOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSszXSAhPSBVTlBBQ0tfU0VRVUVOQ0UgIHx8CkBAIC01MDEsMTAgKzU0MSwxMiBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaiA9PSAyKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBST1RfVFdPOwogICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgNSk7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDMpIHsKICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9USFJFRTsKICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzFdID0gUk9UX1RXTzsKICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsyLCBOT1AsIDQpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19SRVNFVCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTIzLDEyICs1NjUsMTggQEAKICAgICAgICAgICAgIGNhc2UgQklOQVJZX0FORDoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX1hPUjoKICAgICAgICAgICAgIGNhc2UgQklOQVJZX09SOgotICAgICAgICAgICAgICAgIGlmIChsYXN0bGMgPj0gMiAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGktNiwgNykgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTZdLCBjb25zdHMpKSB7CisgICAgICAgICAgICAgICAgLyogTk9URTogTE9BRF9DT05TVCBpcyBzYXZlZCBhdCBgaS0yYCBzaW5jZSBpdCBoYXMgYW4gYXJnCisgICAgICAgICAgICAgICAgICAgd2hpbGUgQklOT1AgaGFzbid0ICovCisgICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKDIpOworICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgMikpOworICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzEpICAmJgorICAgICAgICAgICAgICAgICAgICBmb2xkX2Jpbm9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaV0sIGNvbnN0cywgQ09OU1RfU1RBQ0tfTEFTVE4oMikpKSB7CiAgICAgICAgICAgICAgICAgICAgIGkgLT0gMjsKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KCZjb2Rlc3RyW2hdLCBOT1AsIGkgLSBoKTsKICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1bWxjID0gMTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOworICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTM3LDEyICs1ODUsMTUgQEAKICAgICAgICAgICAgIGNhc2UgVU5BUllfTkVHQVRJVkU6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX0lOVkVSVDoKICAgICAgICAgICAgIGNhc2UgVU5BUllfUE9TSVRJVkU6Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RsYyA+PSAxICAgICAgICAgICAgICAgICAgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaS0zLCA0KSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzKSkgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKDEpOworICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgMSkpOworICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgaS1oKzEpICAmJgorICAgICAgICAgICAgICAgICAgICBmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpLTNdLCBjb25zdHMsIENPTlNUX1NUQUNLX1RPUCgpKSkgewogICAgICAgICAgICAgICAgICAgICBpIC09IDI7CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjb2Rlc3RyW2ldID09IExPQURfQ09OU1QpOwotICAgICAgICAgICAgICAgICAgICBjdW1sYyA9IDE7CisgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgxKTsKKyAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY5OSw2ICs3NTAsNyBAQAogICAgIGFzc2VydChoICsgbm9wcyA9PSBjb2RlbGVuKTsKIAogICAgIGNvZGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopY29kZXN0ciwgaCk7CisgICAgQ09OU1RfU1RBQ0tfREVMRVRFKCk7CiAgICAgUHlNZW1fRnJlZShhZGRybWFwKTsKICAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKQEAgLTcwOCw2ICs3NjAsNyBAQAogICAgIGNvZGUgPSBOVUxMOwogCiAgZXhpdFVuY2hhbmdlZDoKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKICAgICBpZiAoYmxvY2tzICE9IE5VTEwpCiAgICAgICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKICAgICBpZiAoYWRkcm1hcCAhPSBOVUxMKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5YXJlbmEuYyBiL1B5dGhvbi9weWFyZW5hLmMKaW5kZXggNWEyNTVhZS4uYmIyZmQxZSAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5YXJlbmEuYworKysgYi9QeXRob24vcHlhcmVuYS5jCkBAIC0xMiw4ICsxMiw2IEBACiAKICNkZWZpbmUgREVGQVVMVF9CTE9DS19TSVpFIDgxOTIKICNkZWZpbmUgQUxJR05NRU5UICAgICAgICAgICAgICAgOAotI2RlZmluZSBBTElHTk1FTlRfTUFTSyAgICAgICAgICAoQUxJR05NRU5UIC0gMSkKLSNkZWZpbmUgUk9VTkRVUCh4KSAgICAgICAgICAgICAgKCgoeCkgKyBBTElHTk1FTlRfTUFTSykgJiB+QUxJR05NRU5UX01BU0spCiAKIHR5cGVkZWYgc3RydWN0IF9ibG9jayB7CiAgICAgLyogVG90YWwgbnVtYmVyIG9mIGJ5dGVzIG93bmVkIGJ5IHRoaXMgYmxvY2sgYXZhaWxhYmxlIHRvIHBhc3Mgb3V0LgpAQCAtODUsOCArODMsOCBAQAogICAgIGItPmFiX3NpemUgPSBzaXplOwogICAgIGItPmFiX21lbSA9ICh2b2lkICopKGIgKyAxKTsKICAgICBiLT5hYl9uZXh0ID0gTlVMTDsKLSAgICBiLT5hYl9vZmZzZXQgPSBST1VORFVQKChQeV91aW50cHRyX3QpKGItPmFiX21lbSkpIC0KLSAgICAgIChQeV91aW50cHRyX3QpKGItPmFiX21lbSk7CisgICAgYi0+YWJfb2Zmc2V0ID0gKGNoYXIgKilfUHlfQUxJR05fVVAoYi0+YWJfbWVtLCBBTElHTk1FTlQpIC0KKyAgICAgICAgICAgIChjaGFyICopKGItPmFiX21lbSk7CiAgICAgcmV0dXJuIGI7CiB9CiAKQEAgLTEwNCw3ICsxMDIsNyBAQAogewogICAgIHZvaWQgKnA7CiAgICAgYXNzZXJ0KGIpOwotICAgIHNpemUgPSBST1VORFVQKHNpemUpOworICAgIHNpemUgPSBfUHlfU0laRV9ST1VORF9VUChzaXplLCBBTElHTk1FTlQpOwogICAgIGlmIChiLT5hYl9vZmZzZXQgKyBzaXplID4gYi0+YWJfc2l6ZSkgewogICAgICAgICAvKiBJZiB3ZSBuZWVkIHRvIGFsbG9jYXRlIG1vcmUgbWVtb3J5IHRoYW4gd2lsbCBmaXQgaW4KICAgICAgICAgICAgdGhlIGRlZmF1bHQgYmxvY2ssIGFsbG9jYXRlIGEgb25lLW9mZiBibG9jayB0aGF0IGlzCmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCA0MmJjM2VjLi5jZmQ2MWQwIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTY5LDcgKzY5LDYgQEAKICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkNhbid0IGluaXRpYWxpemUgdGhyZWFkcyBmb3IgaW50ZXJwcmV0ZXIiKTsKICNlbmRpZgogICAgICAgICBpbnRlcnAtPm1vZHVsZXMgPSBOVUxMOwotICAgICAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5tb2R1bGVzX2J5X2luZGV4ID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gTlVMTDsKICAgICAgICAgaW50ZXJwLT5idWlsdGlucyA9IE5VTEw7CkBAIC03OSw2ICs3OCw3IEBACiAgICAgICAgIGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkgPSBOVUxMOwogICAgICAgICBpbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDA7CisgICAgICAgIGludGVycC0+aW1wb3J0bGliID0gTlVMTDsKICNpZmRlZiBIQVZFX0RMT1BFTgogI2lmZGVmIFJUTERfTk9XCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX05PVzsKQEAgLTExMyw5ICsxMTMsOSBAQAogICAgIFB5X0NMRUFSKGludGVycC0+Y29kZWNfZXJyb3JfcmVnaXN0cnkpOwogICAgIFB5X0NMRUFSKGludGVycC0+bW9kdWxlcyk7CiAgICAgUHlfQ0xFQVIoaW50ZXJwLT5tb2R1bGVzX2J5X2luZGV4KTsKLSAgICBQeV9DTEVBUihpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPnN5c2RpY3QpOwogICAgIFB5X0NMRUFSKGludGVycC0+YnVpbHRpbnMpOworICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0bGliKTsKIH0KIAogCkBAIC0yNDIsOSArMjQyLDkgQEAKIH0KIAogUHlPYmplY3QqCi1QeVN0YXRlX0ZpbmRNb2R1bGUoc3RydWN0IFB5TW9kdWxlRGVmKiBtKQorUHlTdGF0ZV9GaW5kTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogbW9kdWxlKQogewotICAgIFB5X3NzaXplX3QgaW5kZXggPSBtLT5tX2Jhc2UubV9pbmRleDsKKyAgICBQeV9zc2l6ZV90IGluZGV4ID0gbW9kdWxlLT5tX2Jhc2UubV9pbmRleDsKICAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKGluZGV4ID09IDApCkBAIC0yNzYsNiArMjc2LDQ3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi0+bV9iYXNlLm1faW5kZXgsIG1vZHVsZSk7CiB9CiAKK2ludAorUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqIG1vZHVsZSwgc3RydWN0IFB5TW9kdWxlRGVmKiBkZWYpCit7CisgICAgUHlfc3NpemVfdCBpbmRleDsKKyAgICBQeUludGVycHJldGVyU3RhdGUgKnN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOworICAgIGlmICghZGVmKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfQWRkTW9kdWxlOiBNb2R1bGUgRGVmaW5pdGlvbiBpcyBOVUxMIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaW5kZXggPSBkZWYtPm1fYmFzZS5tX2luZGV4OworICAgIGlmIChzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCkgeworICAgICAgICBpZihQeUxpc3RfR0VUX1NJWkUoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgpID49IGluZGV4KSB7CisgICAgICAgICAgICBpZihtb2R1bGUgPT0gUHlMaXN0X0dFVF9JVEVNKHN0YXRlLT5tb2R1bGVzX2J5X2luZGV4LCBpbmRleCkpIHsKKyAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJQeVN0YXRlX0FkZE1vZHVsZTogTW9kdWxlIGFscmVhZHkgYWRkZWQhIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBfUHlTdGF0ZV9BZGRNb2R1bGUobW9kdWxlLCBkZWYpOworfQorCitpbnQKK1B5U3RhdGVfUmVtb3ZlTW9kdWxlKHN0cnVjdCBQeU1vZHVsZURlZiogZGVmKQoreworICAgIFB5X3NzaXplX3QgaW5kZXggPSBkZWYtPm1fYmFzZS5tX2luZGV4OworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqc3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpLT5pbnRlcnA7CisgICAgaWYgKGluZGV4ID09IDApIHsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlTdGF0ZV9SZW1vdmVNb2R1bGU6IE1vZHVsZSBpbmRleCBpbnZhbGlkLiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChzdGF0ZS0+bW9kdWxlc19ieV9pbmRleCA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfUmVtb3ZlTW9kdWxlOiBJbnRlcnByZXRlcnMgbW9kdWxlLWxpc3Qgbm90IGFjZXNzaWJsZS4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoaW5kZXggPiBQeUxpc3RfR0VUX1NJWkUoc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgpKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5U3RhdGVfUmVtb3ZlTW9kdWxlOiBNb2R1bGUgaW5kZXggb3V0IG9mIGJvdW5kcy4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gUHlMaXN0X1NldEl0ZW0oc3RhdGUtPm1vZHVsZXNfYnlfaW5kZXgsIGluZGV4LCBQeV9Ob25lKTsKK30KKwogdm9pZAogUHlUaHJlYWRTdGF0ZV9DbGVhcihQeVRocmVhZFN0YXRlICp0c3RhdGUpCiB7CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdHJ0b2QuYyBiL1B5dGhvbi9weXN0cnRvZC5jCmluZGV4IDc1ZTMwMzIuLjRhYjhmMDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXN0cnRvZC5jCisrKyBiL1B5dGhvbi9weXN0cnRvZC5jCkBAIC0yMiw2ICsyMiw0MyBAQAogICAgdGhlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgcG9ydGlvbiBvZiB0aGUgc3RyaW5nLiAgT24gZmFpbHVyZSwgcmV0dXJuIC0xLjAgYW5kCiAgICBzZXQgKmVuZHB0ciB0byBwb2ludCB0byB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZy4gKi8KIAorI2lmbmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisKK2RvdWJsZQorX1B5X3BhcnNlX2luZl9vcl9uYW4oY29uc3QgY2hhciAqcCwgY2hhciAqKmVuZHB0cikKK3sKKyAgICBkb3VibGUgcmV0dmFsOworICAgIGNvbnN0IGNoYXIgKnM7CisgICAgaW50IG5lZ2F0ZSA9IDA7CisKKyAgICBzID0gcDsKKyAgICBpZiAoKnMgPT0gJy0nKSB7CisgICAgICAgIG5lZ2F0ZSA9IDE7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgZWxzZSBpZiAoKnMgPT0gJysnKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgImluZiIpKSB7CisgICAgICAgIHMgKz0gMzsKKyAgICAgICAgaWYgKGNhc2VfaW5zZW5zaXRpdmVfbWF0Y2gocywgImluaXR5IikpCisgICAgICAgICAgICBzICs9IDU7CisgICAgICAgIHJldHZhbCA9IF9QeV9kZ19pbmZpbml0eShuZWdhdGUpOworICAgIH0KKyAgICBlbHNlIGlmIChjYXNlX2luc2Vuc2l0aXZlX21hdGNoKHMsICJuYW4iKSkgeworICAgICAgICBzICs9IDM7CisgICAgICAgIHJldHZhbCA9IF9QeV9kZ19zdGRuYW4obmVnYXRlKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHMgPSBwOworICAgICAgICByZXR2YWwgPSAtMS4wOworICAgIH0KKyAgICAqZW5kcHRyID0gKGNoYXIgKilzOworICAgIHJldHVybiByZXR2YWw7Cit9CisKKyNlbHNlCisKIGRvdWJsZQogX1B5X3BhcnNlX2luZl9vcl9uYW4oY29uc3QgY2hhciAqcCwgY2hhciAqKmVuZHB0cikKIHsKQEAgLTU3LDYgKzk0LDggQEAKICAgICByZXR1cm4gcmV0dmFsOwogfQogCisjZW5kaWYKKwogLyoqCiAgKiBfUHlPU19hc2NpaV9zdHJ0b2Q6CiAgKiBAbnB0cjogICAgdGhlIHN0cmluZyB0byBjb252ZXJ0IHRvIGEgbnVtZXJpYyB2YWx1ZS4KQEAgLTk1NCw3ICs5OTMsNyBAQAogICAgICAgICAgICAgLyogc2hvdWxkbid0IGdldCBoZXJlOiBHYXkncyBjb2RlIHNob3VsZCBhbHdheXMgcmV0dXJuCiAgICAgICAgICAgICAgICBzb21ldGhpbmcgc3RhcnRpbmcgd2l0aCBhIGRpZ2l0LCBhbiAnSScsICBvciAnTicgKi8KICAgICAgICAgICAgIHN0cm5jcHkocCwgIkVSUiIsIDMpOwotICAgICAgICAgICAgcCArPSAzOworICAgICAgICAgICAgLyogcCArPSAzOyAqLwogICAgICAgICAgICAgYXNzZXJ0KDApOwogICAgICAgICB9CiAgICAgICAgIGdvdG8gZXhpdDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRob25ydW4uYyBiL1B5dGhvbi9weXRob25ydW4uYwppbmRleCBjZjRlMzRjLi5iMWNhMTI1IDEwMDY0NAotLS0gYS9QeXRob24vcHl0aG9ucnVuLmMKKysrIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCkBAIC01Miw3ICs1Miw3IEBACiBleHRlcm4gZ3JhbW1hciBfUHlQYXJzZXJfR3JhbW1hcjsgLyogRnJvbSBncmFtaW5pdC5jICovCiAKIC8qIEZvcndhcmQgKi8KLXN0YXRpYyB2b2lkIGluaXRtYWluKHZvaWQpOworc3RhdGljIHZvaWQgaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApOwogc3RhdGljIGludCBpbml0ZnNlbmNvZGluZyhQeUludGVycHJldGVyU3RhdGUgKmludGVycCk7CiBzdGF0aWMgdm9pZCBpbml0c2l0ZSh2b2lkKTsKIHN0YXRpYyBpbnQgaW5pdHN0ZGlvKHZvaWQpOwpAQCAtNjIsMTQgKzYyLDE3IEBACiBzdGF0aWMgUHlPYmplY3QgKnJ1bl9weWNfZmlsZShGSUxFICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqKTsKIHN0YXRpYyB2b2lkIGVycl9pbnB1dChwZXJyZGV0YWlsICopOworc3RhdGljIHZvaWQgZXJyX2ZyZWUocGVycmRldGFpbCAqKTsKIHN0YXRpYyB2b2lkIGluaXRzaWdzKHZvaWQpOwogc3RhdGljIHZvaWQgY2FsbF9weV9leGl0ZnVuY3Modm9pZCk7CiBzdGF0aWMgdm9pZCB3YWl0X2Zvcl90aHJlYWRfc2h1dGRvd24odm9pZCk7CiBzdGF0aWMgdm9pZCBjYWxsX2xsX2V4aXRmdW5jcyh2b2lkKTsKLWV4dGVybiB2b2lkIF9QeVVuaWNvZGVfSW5pdCh2b2lkKTsKK2V4dGVybiBpbnQgX1B5VW5pY29kZV9Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgX1B5VW5pY29kZV9GaW5pKHZvaWQpOwogZXh0ZXJuIGludCBfUHlMb25nX0luaXQodm9pZCk7CiBleHRlcm4gdm9pZCBQeUxvbmdfRmluaSh2b2lkKTsKK2V4dGVybiBpbnQgX1B5RmF1bHRoYW5kbGVyX0luaXQodm9pZCk7CitleHRlcm4gdm9pZCBfUHlGYXVsdGhhbmRsZXJfRmluaSh2b2lkKTsKIAogI2lmZGVmIFdJVEhfVEhSRUFECiBleHRlcm4gdm9pZCBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqLCBQeVRocmVhZFN0YXRlICopOwpAQCAtMTM5LDEyICsxNDIsMTMgQEAKIHsKICAgICBjaGFyICpuYW1lX3V0ZjgsICpuYW1lX3N0cjsKICAgICBQeU9iamVjdCAqY29kZWMsICpuYW1lID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihuYW1lKTsKIAogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKGVuY29kaW5nKTsKICAgICBpZiAoIWNvZGVjKQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgbmFtZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoY29kZWMsICJuYW1lIik7CisgICAgbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29kZWMsICZQeUlkX25hbWUpOwogICAgIFB5X0NMRUFSKGNvZGVjKTsKICAgICBpZiAoIW5hbWUpCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0xNjYsMjEgKzE3MCw3OSBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi0jaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKIHN0YXRpYyBjaGFyKgotZ2V0X2NvZGVzZXQodm9pZCkKK2dldF9sb2NhbGVfZW5jb2Rpbmcodm9pZCkKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgY2hhciBjb2RlcGFnZVsxMDBdOworICAgIFB5T1Nfc25wcmludGYoY29kZXBhZ2UsIHNpemVvZihjb2RlcGFnZSksICJjcCVkIiwgR2V0QUNQKCkpOworICAgIHJldHVybiBnZXRfY29kZWNfbmFtZShjb2RlcGFnZSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfTEFOR0lORk9fSCkgJiYgZGVmaW5lZChDT0RFU0VUKQogICAgIGNoYXIqIGNvZGVzZXQgPSBubF9sYW5naW5mbyhDT0RFU0VUKTsKICAgICBpZiAoIWNvZGVzZXQgfHwgY29kZXNldFswXSA9PSAnXDAnKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQ09ERVNFVCBpcyBub3Qgc2V0IG9yIGVtcHR5Iik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoY29kZXNldCk7Ci19CisjZWxzZQorICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CisgICAgcmV0dXJuIE5VTEw7CiAjZW5kaWYKK30KKworc3RhdGljIHZvaWQKK2ltcG9ydF9pbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLCBQeU9iamVjdCAqc3lzbW9kKQoreworICAgIFB5T2JqZWN0ICppbXBvcnRsaWI7CisgICAgUHlPYmplY3QgKmltcG1vZDsKKyAgICBQeU9iamVjdCAqc3lzX21vZHVsZXM7CisgICAgUHlPYmplY3QgKnZhbHVlOworCisgICAgLyogSW1wb3J0IF9pbXBvcnRsaWIgdGhyb3VnaCBpdHMgZnJvemVuIHZlcnNpb24sIF9mcm96ZW5faW1wb3J0bGliLiAqLworICAgIGlmIChQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGUoIl9mcm96ZW5faW1wb3J0bGliIikgPD0gMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgX2Zyb3plbl9pbXBvcnRsaWIgIyBmcm96ZW5cbiIpOworICAgIH0KKyAgICBpbXBvcnRsaWIgPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9mcm96ZW5faW1wb3J0bGliIik7CisgICAgaWYgKGltcG9ydGxpYiA9PSBOVUxMKSB7CisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNvdWxkbid0IGdldCBfZnJvemVuX2ltcG9ydGxpYiBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXMiKTsKKyAgICB9CisgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBpbXBvcnRsaWI7CisgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0bGliKTsKKworICAgIC8qIEluc3RhbGwgX2ltcG9ydGxpYiBhcyBfX2ltcG9ydF9fICovCisgICAgaW1wbW9kID0gUHlJbml0X2ltcCgpOworICAgIGlmIChpbXBtb2QgPT0gTlVMTCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbXBvcnQgaW1wIik7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X1ZlcmJvc2VGbGFnKSB7CisgICAgICAgIFB5U3lzX0Zvcm1hdFN0ZGVycigiaW1wb3J0IGltcCAjIGJ1aWx0aW5cbiIpOworICAgIH0KKyAgICBzeXNfbW9kdWxlcyA9IFB5SW1wb3J0X0dldE1vZHVsZURpY3QoKTsKKyAgICBpZiAoUHlfVmVyYm9zZUZsYWcpIHsKKyAgICAgICAgUHlTeXNfRm9ybWF0U3RkZXJyKCJpbXBvcnQgc3lzICMgYnVpbHRpblxuIik7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhzeXNfbW9kdWxlcywgIl9pbXAiLCBpbXBtb2QpIDwgMCkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBzYXZlIF9pbXAgdG8gc3lzLm1vZHVsZXMiKTsKKyAgICB9CisKKyAgICB2YWx1ZSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW1wb3J0bGliLCAiX2luc3RhbGwiLCAiT08iLCBzeXNtb2QsIGltcG1vZCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogaW1wb3J0bGliIGluc3RhbGwgZmFpbGVkIik7CisgICAgfQorICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgUHlfREVDUkVGKGltcG1vZCk7CisKKyAgICBfUHlJbXBvcnRaaXBfSW5pdCgpOworfQorCiAKIHZvaWQKLVB5X0luaXRpYWxpemVFeChpbnQgaW5zdGFsbF9zaWdzKQorX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCBpbnN0YWxsX3NpZ3MsIGludCBpbnN0YWxsX2ltcG9ydGxpYikKIHsKICAgICBQeUludGVycHJldGVyU3RhdGUgKmludGVycDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CkBAIC0yNTIsMTIgKzMxNCwxMCBAQAogICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKICAgICBpZiAoaW50ZXJwLT5tb2R1bGVzID09IE5VTEwpCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IG1ha2UgbW9kdWxlcyBkaWN0aW9uYXJ5Iik7Ci0gICAgaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoaW50ZXJwLT5tb2R1bGVzX3JlbG9hZGluZyA9PSBOVUxMKQotICAgICAgICBQeV9GYXRhbEVycm9yKCJQeV9Jbml0aWFsaXplOiBjYW4ndCBtYWtlIG1vZHVsZXNfcmVsb2FkaW5nIGRpY3Rpb25hcnkiKTsKIAogICAgIC8qIEluaXQgVW5pY29kZSBpbXBsZW1lbnRhdGlvbjsgcmVsaWVzIG9uIHRoZSBjb2RlYyByZWdpc3RyeSAqLwotICAgIF9QeVVuaWNvZGVfSW5pdCgpOworICAgIGlmIChfUHlVbmljb2RlX0luaXQoKSA8IDApCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgdW5pY29kZSIpOwogCiAgICAgYmltb2QgPSBfUHlCdWlsdGluX0luaXQoKTsKICAgICBpZiAoYmltb2QgPT0gTlVMTCkKQEAgLTI2OSw3ICszMjksNyBAQAogICAgIFB5X0lOQ1JFRihpbnRlcnAtPmJ1aWx0aW5zKTsKIAogICAgIC8qIGluaXRpYWxpemUgYnVpbHRpbiBleGNlcHRpb25zICovCi0gICAgX1B5RXhjX0luaXQoKTsKKyAgICBfUHlFeGNfSW5pdChiaW1vZCk7CiAKICAgICBzeXNtb2QgPSBfUHlTeXNfSW5pdCgpOwogICAgIGlmIChzeXNtb2QgPT0gTlVMTCkKQEAgLTI5OSw2ICszNTksMTUgQEAKICAgICAvKiBJbml0aWFsaXplIF93YXJuaW5ncy4gKi8KICAgICBfUHlXYXJuaW5nc19Jbml0KCk7CiAKKyAgICBpZiAoIWluc3RhbGxfaW1wb3J0bGliKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBvcnRfaW5pdChpbnRlcnAsIHN5c21vZCk7CisKKyAgICAvKiBpbml0aWFsaXplIHRoZSBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgaWYgKF9QeUZhdWx0aGFuZGxlcl9Jbml0KCkpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgZmF1bHRoYW5kbGVyIik7CisKICAgICBfUHlUaW1lX0luaXQoKTsKIAogICAgIGlmIChpbml0ZnNlbmNvZGluZyhpbnRlcnApIDwgMCkKQEAgLTMwNyw3ICszNzYsNyBAQAogICAgIGlmIChpbnN0YWxsX3NpZ3MpCiAgICAgICAgIGluaXRzaWdzKCk7IC8qIFNpZ25hbCBoYW5kbGluZyBzdHVmZiwgaW5jbHVkaW5nIGluaXRpbnRyKCkgKi8KIAotICAgIGluaXRtYWluKCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLworICAgIGluaXRtYWluKGludGVycCk7IC8qIE1vZHVsZSBfX21haW5fXyAqLwogICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCiAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwpAQCAtMzI3LDYgKzM5NiwxMiBAQAogfQogCiB2b2lkCitQeV9Jbml0aWFsaXplRXgoaW50IGluc3RhbGxfc2lncykKK3sKKyAgICBfUHlfSW5pdGlhbGl6ZUV4X1ByaXZhdGUoaW5zdGFsbF9zaWdzLCAxKTsKK30KKwordm9pZAogUHlfSW5pdGlhbGl6ZSh2b2lkKQogewogICAgIFB5X0luaXRpYWxpemVFeCgxKTsKQEAgLTM2MSw5ICs0MzYsMTAgQEAKICAgICBQeU9iamVjdCAqZm91dCA9IFB5U3lzX0dldE9iamVjdCgic3Rkb3V0Iik7CiAgICAgUHlPYmplY3QgKmZlcnIgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOwogCiAgICAgaWYgKGZvdXQgIT0gTlVMTCAmJiBmb3V0ICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZvdXQpKSB7Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZm91dCwgImZsdXNoIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKICAgICAgICAgZWxzZQpAQCAtMzcxLDcgKzQ0Nyw3IEBACiAgICAgfQogCiAgICAgaWYgKGZlcnIgIT0gTlVMTCAmJiBmZXJyICE9IFB5X05vbmUgJiYgIWZpbGVfaXNfY2xvc2VkKGZlcnIpKSB7Ci0gICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZmVyciwgImZsdXNoIiwgIiIpOworICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKQEAgLTQ2NCw3ICs1NDAsNyBAQAogICAgIGZsdXNoX3N0ZF9maWxlcygpOwogCiAgICAgLyogQ29sbGVjdCBmaW5hbCBnYXJiYWdlLiAgVGhpcyBkaXNwb3NlcyBvZiBjeWNsZXMgY3JlYXRlZCBieQotICAgICAqIG5ldy1zdHlsZSBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCisgICAgICogY2xhc3MgZGVmaW5pdGlvbnMsIGZvciBleGFtcGxlLgogICAgICAqIFhYWCBUaGlzIGlzIGRpc2FibGVkIGJlY2F1c2UgaXQgY2F1c2VkIHRvbyBtYW55IHByb2JsZW1zLiAgSWYKICAgICAgKiBYWFggYSBfX2RlbF9fIG9yIHdlYWtyZWYgY2FsbGJhY2sgdHJpZ2dlcnMgaGVyZSwgUHl0aG9uIGNvZGUgaGFzCiAgICAgICogWFhYIGEgaGFyZCB0aW1lIHJ1bm5pbmcsIGJlY2F1c2UgZXZlbiB0aGUgc3lzIG1vZHVsZSBoYXMgYmVlbgpAQCAtNDg1LDYgKzU2MSw5IEBACiAgICAgLyogRGVzdHJveSB0aGUgZGF0YWJhc2UgdXNlZCBieSBfUHlJbXBvcnRfe0ZpeHVwLEZpbmR9RXh0ZW5zaW9uICovCiAgICAgX1B5SW1wb3J0X0ZpbmkoKTsKIAorICAgIC8qIHVubG9hZCBmYXVsdGhhbmRsZXIgbW9kdWxlICovCisgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKwogICAgIC8qIERlYnVnZ2luZyBzdHVmZiAqLwogI2lmZGVmIENPVU5UX0FMTE9DUwogICAgIGR1bXBfY291bnRzKHN0ZG91dCk7CkBAIC01MzQsNiArNjEzLDcgQEAKICAgICBQeUxvbmdfRmluaSgpOwogICAgIFB5RmxvYXRfRmluaSgpOwogICAgIFB5RGljdF9GaW5pKCk7CisgICAgUHlTbGljZV9GaW5pKCk7CiAKICAgICAvKiBDbGVhbnVwIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gKi8KICAgICBfUHlVbmljb2RlX0ZpbmkoKTsKQEAgLTU2Miw3ICs2NDIsNyBAQAogI2VuZGlmIC8qIFB5X1RSQUNFX1JFRlMgKi8KICNpZmRlZiBQWU1BTExPQ19ERUJVRwogICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIikpCi0gICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKCk7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CiAjZW5kaWYKIAogICAgIGNhbGxfbGxfZXhpdGZ1bmNzKCk7CkBAIC02MDYsNyArNjg2LDYgQEAKICAgICAvKiBYWFggVGhlIGZvbGxvd2luZyBpcyBsYXggaW4gZXJyb3IgY2hlY2tpbmcgKi8KIAogICAgIGludGVycC0+bW9kdWxlcyA9IFB5RGljdF9OZXcoKTsKLSAgICBpbnRlcnAtPm1vZHVsZXNfcmVsb2FkaW5nID0gUHlEaWN0X05ldygpOwogCiAgICAgYmltb2QgPSBfUHlJbXBvcnRfRmluZEJ1aWx0aW4oImJ1aWx0aW5zIik7CiAgICAgaWYgKGJpbW9kICE9IE5VTEwpIHsKQEAgLTYxNywxMSArNjk2LDEyIEBACiAgICAgfQogCiAgICAgLyogaW5pdGlhbGl6ZSBidWlsdGluIGV4Y2VwdGlvbnMgKi8KLSAgICBfUHlFeGNfSW5pdCgpOworICAgIF9QeUV4Y19Jbml0KGJpbW9kKTsKIAogICAgIHN5c21vZCA9IF9QeUltcG9ydF9GaW5kQnVpbHRpbigic3lzIik7CiAgICAgaWYgKGJpbW9kICE9IE5VTEwgJiYgc3lzbW9kICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnBzdGRlcnI7CisKICAgICAgICAgaW50ZXJwLT5zeXNkaWN0ID0gUHlNb2R1bGVfR2V0RGljdChzeXNtb2QpOwogICAgICAgICBpZiAoaW50ZXJwLT5zeXNkaWN0ID09IE5VTEwpCiAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKQEAgLTY0MCwxMyArNzIwLDE1IEBACiAKICAgICAgICAgX1B5SW1wb3J0SG9va3NfSW5pdCgpOwogCisgICAgICAgIGltcG9ydF9pbml0KGludGVycCwgc3lzbW9kKTsKKwogICAgICAgICBpZiAoaW5pdGZzZW5jb2RpbmcoaW50ZXJwKSA8IDApCiAgICAgICAgICAgICBnb3RvIGhhbmRsZV9lcnJvcjsKIAogICAgICAgICBpZiAoaW5pdHN0ZGlvKCkgPCAwKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigKICAgICAgICAgICAgICJQeV9Jbml0aWFsaXplOiBjYW4ndCBpbml0aWFsaXplIHN5cyBzdGFuZGFyZCBzdHJlYW1zIik7Ci0gICAgICAgIGluaXRtYWluKCk7CisgICAgICAgIGluaXRtYWluKGludGVycCk7CiAgICAgICAgIGlmICghUHlfTm9TaXRlRmxhZykKICAgICAgICAgICAgIGluaXRzaXRlKCk7CiAgICAgfQpAQCAtNzQzLDcgKzgyNSw3IEBACiAvKiBDcmVhdGUgX19tYWluX18gbW9kdWxlICovCiAKIHN0YXRpYyB2b2lkCi1pbml0bWFpbih2b2lkKQoraW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7CiAgICAgUHlPYmplY3QgKm0sICpkOwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CkBAIC03NTIsMzUgKzgzNCw0OCBAQAogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOwogICAgIGlmIChQeURpY3RfR2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIikgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqYmltb2QgPSBQeUltcG9ydF9JbXBvcnRNb2R1bGUoImJ1aWx0aW5zIik7Ci0gICAgICAgIGlmIChiaW1vZCA9PSBOVUxMIHx8Ci0gICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiX19idWlsdGluc19fIiwgYmltb2QpICE9IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJjYW4ndCBhZGQgX19idWlsdGluc19fIHRvIF9fbWFpbl9fIik7CisgICAgICAgIGlmIChiaW1vZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmV0cmlldmUgYnVpbHRpbnMgbW9kdWxlIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2J1aWx0aW5zX18iLCBiaW1vZCkgPCAwKSB7CisgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2J1aWx0aW5zX18iKTsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYoYmltb2QpOwogICAgIH0KKyAgICAvKiBNYWluIGlzIGEgbGl0dGxlIHNwZWNpYWwgLSBpbXAuaXNfYnVpbHRpbigiX19tYWluX18iKSB3aWxsIHJldHVybgorICAgICAqIEZhbHNlLCBidXQgQnVpbHRpbkltcG9ydGVyIGlzIHN0aWxsIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGluaXRpYWwKKyAgICAgKiBzZXR0aW5nIGZvciBpdHMgX19sb2FkZXJfXyBhdHRyaWJ1dGUuIEEgbW9yZSBzdWl0YWJsZSB2YWx1ZSB3aWxsCisgICAgICogYmUgc2V0IGlmIF9fbWFpbl9fIGdldHMgZnVydGhlciBpbml0aWFsaXplZCBsYXRlciBpbiB0aGUgc3RhcnR1cAorICAgICAqIHByb2Nlc3MuCisgICAgICovCisgICAgaWYgKFB5RGljdF9HZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIikgPT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdCAqbG9hZGVyID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhpbnRlcnAtPmltcG9ydGxpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkJ1aWx0aW5JbXBvcnRlciIpOworICAgICAgICBpZiAobG9hZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byByZXRyaWV2ZSBCdWlsdGluSW1wb3J0ZXIiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIl9fbG9hZGVyX18iLCBsb2FkZXIpIDwgMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiRmFpbGVkIHRvIGluaXRpYWxpemUgX19tYWluX18uX19sb2FkZXJfXyIpOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIH0KIH0KIAogc3RhdGljIGludAogaW5pdGZzZW5jb2RpbmcoUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7CiAgICAgUHlPYmplY3QgKmNvZGVjOwotI2lmIGRlZmluZWQoSEFWRV9MQU5HSU5GT19IKSAmJiBkZWZpbmVkKENPREVTRVQpCi0gICAgY2hhciAqY29kZXNldCA9IE5VTEw7CiAKLSAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIE9uIFVuaXgsIHNldCB0aGUgZmlsZSBzeXN0ZW0gZW5jb2RpbmcgYWNjb3JkaW5nIHRvIHRoZQotICAgICAgICAgICB1c2VyJ3MgcHJlZmVyZW5jZSwgaWYgdGhlIENPREVTRVQgbmFtZXMgYSB3ZWxsLWtub3duCi0gICAgICAgICAgIFB5dGhvbiBjb2RlYywgYW5kIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgaXNuJ3QKLSAgICAgICAgICAgaW5pdGlhbGl6ZWQgYnkgb3RoZXIgbWVhbnMuICovCi0gICAgICAgIGNvZGVzZXQgPSBnZXRfY29kZXNldCgpOwotICAgICAgICBpZiAoY29kZXNldCA9PSBOVUxMKQorICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCisgICAgeworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOworICAgICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9PSBOVUxMKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfSW5pdGlhbGl6ZTogVW5hYmxlIHRvIGdldCB0aGUgbG9jYWxlIGVuY29kaW5nIik7CiAKLSAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9IGNvZGVzZXQ7CiAgICAgICAgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAwOwogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0jZW5kaWYKIAogICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwpAQCAtODIyLDYgKzkxNywxMSBAQAogICAgIGNvbnN0IGNoYXIqIG5ld2xpbmU7CiAgICAgUHlPYmplY3QgKmxpbmVfYnVmZmVyaW5nOwogICAgIGludCBidWZmZXJpbmcsIGlzYXR0eTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKKyAgICBfUHlfSURFTlRJRklFUihpc2F0dHkpOworICAgIF9QeV9JREVOVElGSUVSKFRleHRJT1dyYXBwZXIpOworICAgIF9QeV9JREVOVElGSUVSKG5hbWUpOworICAgIF9QeV9JREVOVElGSUVSKG1vZGUpOwogCiAgICAgLyogc3RkaW4gaXMgYWx3YXlzIG9wZW5lZCBpbiBidWZmZXJlZCBtb2RlLCBmaXJzdCBiZWNhdXNlIGl0IHNob3VsZG4ndAogICAgICAgIG1ha2UgYSBkaWZmZXJlbmNlIGluIGNvbW1vbiB1c2UgY2FzZXMsIHNlY29uZCBiZWNhdXNlIFRleHRJT1dyYXBwZXIKQEAgLTgzNiwxNCArOTM2LDE1IEBACiAgICAgICAgIG1vZGUgPSAid2IiOwogICAgIGVsc2UKICAgICAgICAgbW9kZSA9ICJyYiI7Ci0gICAgYnVmID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIm9wZW4iLCAiaXNpT09PaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgYnVmID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChpbywgJlB5SWRfb3BlbiwgImlzaU9PT2kiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQsIG1vZGUsIGJ1ZmZlcmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X05vbmUsIFB5X05vbmUsIFB5X05vbmUsIDApOwogICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgIGlmIChidWZmZXJpbmcpIHsKLSAgICAgICAgcmF3ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhidWYsICJyYXciKTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIocmF3KTsKKyAgICAgICAgcmF3ID0gX1B5T2JqZWN0X0dldEF0dHJJZChidWYsICZQeUlkX3Jhdyk7CiAgICAgICAgIGlmIChyYXcgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQpAQCAtODUzLDkgKzk1NCw5IEBACiAgICAgfQogCiAgICAgdGV4dCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG5hbWUpOwotICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgUHlPYmplY3RfU2V0QXR0clN0cmluZyhyYXcsICJuYW1lIiwgdGV4dCkgPCAwKQorICAgIGlmICh0ZXh0ID09IE5VTEwgfHwgX1B5T2JqZWN0X1NldEF0dHJJZChyYXcsICZQeUlkX25hbWUsIHRleHQpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKHJhdywgImlzYXR0eSIsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHJhdywgJlB5SWRfaXNhdHR5LCAiIik7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIGlzYXR0eSA9IFB5T2JqZWN0X0lzVHJ1ZShyZXMpOwpAQCAtODgxLDkgKzk4Miw5IEBACiAgICAgbmV3bGluZSA9ICJcbiI7CiAjZW5kaWYKIAotICAgIHN0cmVhbSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJUZXh0SU9XcmFwcGVyIiwgIk9zc3NPIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZW5jb2RpbmcsIGVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld2xpbmUsIGxpbmVfYnVmZmVyaW5nKTsKKyAgICBzdHJlYW0gPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9UZXh0SU9XcmFwcGVyLCAiT3Nzc08iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBlbmNvZGluZywgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bGluZSwgbGluZV9idWZmZXJpbmcpOwogICAgIFB5X0NMRUFSKGJ1Zik7CiAgICAgaWYgKHN0cmVhbSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwpAQCAtODkzLDcgKzk5NCw3IEBACiAgICAgZWxzZQogICAgICAgICBtb2RlID0gInIiOwogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhtb2RlKTsKLSAgICBpZiAoIXRleHQgfHwgUHlPYmplY3RfU2V0QXR0clN0cmluZyhzdHJlYW0sICJtb2RlIiwgdGV4dCkgPCAwKQorICAgIGlmICghdGV4dCB8fCBfUHlPYmplY3RfU2V0QXR0cklkKHN0cmVhbSwgJlB5SWRfbW9kZSwgdGV4dCkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogICAgIFB5X0NMRUFSKHRleHQpOwogICAgIHJldHVybiBzdHJlYW07CkBAIC0xMTMzLDEzICsxMjM0LDE0IEBACiAgICAgUHlBcmVuYSAqYXJlbmE7CiAgICAgY2hhciAqcHMxID0gIiIsICpwczIgPSAiIiwgKmVuYyA9IE5VTEw7CiAgICAgaW50IGVycmNvZGUgPSAwOworICAgIF9QeV9JREVOVElGSUVSKGVuY29kaW5nKTsKIAogICAgIGlmIChmcCA9PSBzdGRpbikgewogICAgICAgICAvKiBGZXRjaCBlbmNvZGluZyBmcm9tIHN5cy5zdGRpbiAqLwogICAgICAgICB2ID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRpbiIpOwogICAgICAgICBpZiAodiA9PSBOVUxMIHx8IHYgPT0gUHlfTm9uZSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgb2VuYyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodiwgImVuY29kaW5nIik7CisgICAgICAgIG9lbmMgPSBfUHlPYmplY3RfR2V0QXR0cklkKHYsICZQeUlkX2VuY29kaW5nKTsKICAgICAgICAgaWYgKCFvZW5jKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBlbmMgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG9lbmMpOwpAQCAtMTI1Miw2ICsxMzU0LDMyIEBACiB9CiAKIGludAorc3RhdGljIHNldF9tYWluX2xvYWRlcihQeU9iamVjdCAqZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmxvYWRlcl9uYW1lKQoreworICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZTsKKyAgICBQeU9iamVjdCAqbG9hZGVyX3R5cGUsICpsb2FkZXI7CisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgLyogR2V0IGN1cnJlbnQgdGhyZWFkIHN0YXRlIGFuZCBpbnRlcnByZXRlciBwb2ludGVyICovCisgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBpbnRlcnAgPSB0c3RhdGUtPmludGVycDsKKyAgICBsb2FkZXJfdHlwZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoaW50ZXJwLT5pbXBvcnRsaWIsIGxvYWRlcl9uYW1lKTsKKyAgICBpZiAobG9hZGVyX3R5cGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxvYWRlciA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihsb2FkZXJfdHlwZSwgInNzIiwgIl9fbWFpbl9fIiwgZmlsZW5hbWUpOworICAgIFB5X0RFQ1JFRihsb2FkZXJfdHlwZSk7CisgICAgaWYgKGxvYWRlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2xvYWRlcl9fIiwgbG9hZGVyKSA8IDApIHsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorICAgIFB5X0RFQ1JFRihsb2FkZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2ludAogUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MoRklMRSAqZnAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgY2xvc2VpdCwKICAgICAgICAgICAgICAgICAgICAgICAgIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MpCiB7CkBAIC0xMjgzLDEwICsxNDExLDExIEBACiAgICAgbGVuID0gc3RybGVuKGZpbGVuYW1lKTsKICAgICBleHQgPSBmaWxlbmFtZSArIGxlbiAtIChsZW4gPiA0ID8gNCA6IDApOwogICAgIGlmIChtYXliZV9weWNfZmlsZShmcCwgZmlsZW5hbWUsIGV4dCwgY2xvc2VpdCkpIHsKKyAgICAgICAgRklMRSAqcHljX2ZwOwogICAgICAgICAvKiBUcnkgdG8gcnVuIGEgcHljIGZpbGUuIEZpcnN0LCByZS1vcGVuIGluIGJpbmFyeSAqLwogICAgICAgICBpZiAoY2xvc2VpdCkKICAgICAgICAgICAgIGZjbG9zZShmcCk7Ci0gICAgICAgIGlmICgoZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IE5VTEwpIHsKKyAgICAgICAgaWYgKChweWNfZnAgPSBmb3BlbihmaWxlbmFtZSwgInJiIikpID09IE5VTEwpIHsKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBDYW4ndCByZW9wZW4gLnB5YyBmaWxlXG4iKTsKICAgICAgICAgICAgIHJldCA9IC0xOwogICAgICAgICAgICAgZ290byBkb25lOwpAQCAtMTI5NCw4ICsxNDIzLDIzIEBACiAgICAgICAgIC8qIFR1cm4gb24gb3B0aW1pemF0aW9uIGlmIGEgLnB5byBmaWxlIGlzIGdpdmVuICovCiAgICAgICAgIGlmIChzdHJjbXAoZXh0LCAiLnB5byIpID09IDApCiAgICAgICAgICAgICBQeV9PcHRpbWl6ZUZsYWcgPSAxOwotICAgICAgICB2ID0gcnVuX3B5Y19maWxlKGZwLCBmaWxlbmFtZSwgZCwgZCwgZmxhZ3MpOworCisgICAgICAgIGlmIChzZXRfbWFpbl9sb2FkZXIoZCwgZmlsZW5hbWUsICJTb3VyY2VsZXNzRmlsZUxvYWRlciIpIDwgMCkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJweXRob246IGZhaWxlZCB0byBzZXQgX19tYWluX18uX19sb2FkZXJfX1xuIik7CisgICAgICAgICAgICByZXQgPSAtMTsKKyAgICAgICAgICAgIGZjbG9zZShweWNfZnApOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgICAgIHYgPSBydW5fcHljX2ZpbGUocHljX2ZwLCBmaWxlbmFtZSwgZCwgZCwgZmxhZ3MpOworICAgICAgICBmY2xvc2UocHljX2ZwKTsKICAgICB9IGVsc2UgeworICAgICAgICAvKiBXaGVuIHJ1bm5pbmcgZnJvbSBzdGRpbiwgbGVhdmUgX19tYWluX18uX19sb2FkZXJfXyBhbG9uZSAqLworICAgICAgICBpZiAoc3RyY21wKGZpbGVuYW1lLCAiPHN0ZGluPiIpICE9IDAgJiYKKyAgICAgICAgICAgIHNldF9tYWluX2xvYWRlcihkLCBmaWxlbmFtZSwgIlNvdXJjZUZpbGVMb2FkZXIiKSA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicHl0aG9uOiBmYWlsZWQgdG8gc2V0IF9fbWFpbl9fLl9fbG9hZGVyX19cbiIpOworICAgICAgICAgICAgcmV0ID0gLTE7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KICAgICAgICAgdiA9IFB5UnVuX0ZpbGVFeEZsYWdzKGZwLCBmaWxlbmFtZSwgUHlfZmlsZV9pbnB1dCwgZCwgZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlaXQsIGZsYWdzKTsKICAgICB9CkBAIC0xMzM2LDIwICsxNDgwLDIwIEBACiB7CiAgICAgbG9uZyBob2xkOwogICAgIFB5T2JqZWN0ICp2OwotCi0gICAgLyogb2xkIHN0eWxlIGVycm9ycyAqLwotICAgIGlmIChQeVR1cGxlX0NoZWNrKGVycikpCi0gICAgICAgIHJldHVybiBQeUFyZ19QYXJzZVR1cGxlKGVyciwgIk8oemlpeikiLCBtZXNzYWdlLCBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vLCBvZmZzZXQsIHRleHQpOworICAgIF9QeV9JREVOVElGSUVSKG1zZyk7CisgICAgX1B5X0lERU5USUZJRVIoZmlsZW5hbWUpOworICAgIF9QeV9JREVOVElGSUVSKGxpbmVubyk7CisgICAgX1B5X0lERU5USUZJRVIob2Zmc2V0KTsKKyAgICBfUHlfSURFTlRJRklFUih0ZXh0KTsKIAogICAgICptZXNzYWdlID0gTlVMTDsKIAogICAgIC8qIG5ldyBzdHlsZSBlcnJvcnMuICBgZXJyJyBpcyBhbiBpbnN0YW5jZSAqLwotICAgICptZXNzYWdlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJtc2ciKTsKKyAgICAqbWVzc2FnZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9tc2cpOwogICAgIGlmICghKm1lc3NhZ2UpCiAgICAgICAgIGdvdG8gZmluYWxseTsKIAotICAgIHYgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGVyciwgImZpbGVuYW1lIik7CisgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9maWxlbmFtZSk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaWYgKHYgPT0gUHlfTm9uZSkgewpAQCAtMTM2Myw3ICsxNTA3LDcgQEAKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICB9CiAKLSAgICB2ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhlcnIsICJsaW5lbm8iKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX2xpbmVubyk7CiAgICAgaWYgKCF2KQogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CkBAIC0xMzcyLDcgKzE1MTYsNyBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgKmxpbmVubyA9IChpbnQpaG9sZDsKIAotICAgIHYgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGVyciwgIm9mZnNldCIpOworICAgIHYgPSBfUHlPYmplY3RfR2V0QXR0cklkKGVyciwgJlB5SWRfb2Zmc2V0KTsKICAgICBpZiAoIXYpCiAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICBpZiAodiA9PSBQeV9Ob25lKSB7CkBAIC0xMzg2LDcgKzE1MzAsNyBAQAogICAgICAgICAqb2Zmc2V0ID0gKGludClob2xkOwogICAgIH0KIAotICAgIHYgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGVyciwgInRleHQiKTsKKyAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX3RleHQpOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwogICAgIGlmICh2ID09IFB5X05vbmUpIHsKQEAgLTE0NjAsNyArMTYwNCw4IEBACiAgICAgICAgIGdvdG8gZG9uZTsKICAgICBpZiAoUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgLyogVGhlIGVycm9yIGNvZGUgc2hvdWxkIGJlIGluIHRoZSBgY29kZScgYXR0cmlidXRlLiAqLwotICAgICAgICBQeU9iamVjdCAqY29kZSA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodmFsdWUsICJjb2RlIik7CisgICAgICAgIF9QeV9JREVOVElGSUVSKGNvZGUpOworICAgICAgICBQeU9iamVjdCAqY29kZSA9IF9QeU9iamVjdF9HZXRBdHRySWQodmFsdWUsICZQeUlkX2NvZGUpOwogICAgICAgICBpZiAoY29kZSkgewogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgIHZhbHVlID0gY29kZTsKQEAgLTE1NjcsNiArMTcxMiw3IEBACiB7CiAgICAgaW50IGVyciA9IDA7CiAgICAgUHlPYmplY3QgKnR5cGUsICp0YjsKKyAgICBfUHlfSURFTlRJRklFUihwcmludF9maWxlX2FuZF9saW5lKTsKIAogICAgIGlmICghUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlGaWxlX1dyaXRlU3RyaW5nKCJUeXBlRXJyb3I6IHByaW50X2V4Y2VwdGlvbigpOiBFeGNlcHRpb24gZXhwZWN0ZWQgZm9yIHZhbHVlLCAiLCBmKTsKQEAgLTE1ODIsNyArMTcyOCw3IEBACiAgICAgaWYgKHRiICYmIHRiICE9IFB5X05vbmUpCiAgICAgICAgIGVyciA9IFB5VHJhY2VCYWNrX1ByaW50KHRiLCBmKTsKICAgICBpZiAoZXJyID09IDAgJiYKLSAgICAgICAgUHlPYmplY3RfSGFzQXR0clN0cmluZyh2YWx1ZSwgInByaW50X2ZpbGVfYW5kX2xpbmUiKSkKKyAgICAgICAgX1B5T2JqZWN0X0hhc0F0dHJJZCh2YWx1ZSwgJlB5SWRfcHJpbnRfZmlsZV9hbmRfbGluZSkpCiAgICAgewogICAgICAgICBQeU9iamVjdCAqbWVzc2FnZTsKICAgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsICp0ZXh0OwpAQCAtMTYxNyw2ICsxNzYzLDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QqIG1vZHVsZU5hbWU7CiAgICAgICAgIGNoYXIqIGNsYXNzTmFtZTsKKyAgICAgICAgX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiAgICAgICAgIGFzc2VydChQeUV4Y2VwdGlvbkNsYXNzX0NoZWNrKHR5cGUpKTsKICAgICAgICAgY2xhc3NOYW1lID0gUHlFeGNlcHRpb25DbGFzc19OYW1lKHR5cGUpOwogICAgICAgICBpZiAoY2xhc3NOYW1lICE9IE5VTEwpIHsKQEAgLTE2MjUsMTAgKzE3NzIsMTAgQEAKICAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSBkb3QrMTsKICAgICAgICAgfQogCi0gICAgICAgIG1vZHVsZU5hbWUgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHR5cGUsICJfX21vZHVsZV9fIik7CisgICAgICAgIG1vZHVsZU5hbWUgPSBfUHlPYmplY3RfR2V0QXR0cklkKHR5cGUsICZQeUlkX19fbW9kdWxlX18pOwogICAgICAgICBpZiAobW9kdWxlTmFtZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sobW9kdWxlTmFtZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtb2R1bGVOYW1lKTsKKyAgICAgICAgICAgIFB5X1hERUNSRUYobW9kdWxlTmFtZSk7CiAgICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVTdHJpbmcoIjx1bmtub3duPiIsIGYpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTY1NSw3ICsxODAyLDcgQEAKICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgIGVyciA9IC0xOwogICAgICAgICBlbHNlIGlmICghUHlVbmljb2RlX0NoZWNrKHMpIHx8Ci0gICAgICAgICAgICBQeVVuaWNvZGVfR2V0U2l6ZShzKSAhPSAwKQorICAgICAgICAgICAgUHlVbmljb2RlX0dldExlbmd0aChzKSAhPSAwKQogICAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlU3RyaW5nKCI6ICIsIGYpOwogICAgICAgICBpZiAoZXJyID09IDApCiAgICAgICAgICAgZXJyID0gUHlGaWxlX1dyaXRlT2JqZWN0KHMsIGYsIFB5X1BSSU5UX1JBVyk7CkBAIC0xNzAzLDcgKzE4NTAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY2F1c2VfbWVzc2FnZSwgZik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoY29udGV4dCkgeworICAgICAgICAgICAgZWxzZSBpZiAoY29udGV4dCAmJgorICAgICAgICAgICAgICAgICEoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXZhbHVlKS0+c3VwcHJlc3NfY29udGV4dCkgewogICAgICAgICAgICAgICAgIHJlcyA9IFB5U2V0X0NvbnRhaW5zKHNlZW4sIGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC0xNzkyLDEzICsxOTQwLDE0IEBACiB7CiAgICAgUHlPYmplY3QgKmYsICpyOwogICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0cmFjZWJhY2s7CisgICAgX1B5X0lERU5USUZJRVIoZmx1c2gpOwogCiAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24gKi8KICAgICBQeUVycl9GZXRjaCgmdHlwZSwgJnZhbHVlLCAmdHJhY2ViYWNrKTsKIAogICAgIGYgPSBQeVN5c19HZXRPYmplY3QoInN0ZGVyciIpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IFB5T2JqZWN0X0NhbGxNZXRob2QoZiwgImZsdXNoIiwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTgwNiw3ICsxOTU1LDcgQEAKICAgICB9CiAgICAgZiA9IFB5U3lzX0dldE9iamVjdCgic3Rkb3V0Iik7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gUHlPYmplY3RfQ2FsbE1ldGhvZChmLCAiZmx1c2giLCAiIik7CisgICAgICAgIHIgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGYsICZQeUlkX2ZsdXNoLCAiIik7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC0xODQ1LDkgKzE5OTQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAiQmFkIG1hZ2ljIG51bWJlciBpbiAucHljIGZpbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIC8qIFNraXAgbXRpbWUgYW5kIHNpemUgKi8KKyAgICAodm9pZCkgUHlNYXJzaGFsX1JlYWRMb25nRnJvbUZpbGUoZnApOwogICAgICh2b2lkKSBQeU1hcnNoYWxfUmVhZExvbmdGcm9tRmlsZShmcCk7CiAgICAgdiA9IFB5TWFyc2hhbF9SZWFkTGFzdE9iamVjdEZyb21GaWxlKGZwKTsKLSAgICBmY2xvc2UoZnApOwogICAgIGlmICh2ID09IE5VTEwgfHwgIVB5Q29kZV9DaGVjayh2KSkgewogICAgICAgICBQeV9YREVDUkVGKHYpOwogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLApAQCAtMTkzNywxMiArMjA4NywxMyBAQAogICAgICAgICBmbGFncy0+Y2ZfZmxhZ3MgfD0gaWZsYWdzICYgUHlDRl9NQVNLOwogICAgICAgICBtb2QgPSBQeUFTVF9Gcm9tTm9kZShuLCBmbGFncywgZmlsZW5hbWUsIGFyZW5hKTsKICAgICAgICAgUHlOb2RlX0ZyZWUobik7Ci0gICAgICAgIHJldHVybiBtb2Q7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBlcnJfaW5wdXQoJmVycik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBtb2QgPSBOVUxMOwogICAgIH0KKyAgICBlcnJfZnJlZSgmZXJyKTsKKyAgICByZXR1cm4gbW9kOwogfQogCiBtb2RfdHkKQEAgLTE5NjcsMTQgKzIxMTgsMTUgQEAKICAgICAgICAgZmxhZ3MtPmNmX2ZsYWdzIHw9IGlmbGFncyAmIFB5Q0ZfTUFTSzsKICAgICAgICAgbW9kID0gUHlBU1RfRnJvbU5vZGUobiwgZmxhZ3MsIGZpbGVuYW1lLCBhcmVuYSk7CiAgICAgICAgIFB5Tm9kZV9GcmVlKG4pOwotICAgICAgICByZXR1cm4gbW9kOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOwogICAgICAgICBpZiAoZXJyY29kZSkKICAgICAgICAgICAgICplcnJjb2RlID0gZXJyLmVycm9yOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgbW9kID0gTlVMTDsKICAgICB9CisgICAgZXJyX2ZyZWUoJmVycik7CisgICAgcmV0dXJuIG1vZDsKIH0KIAogLyogU2ltcGxpZmllZCBpbnRlcmZhY2UgdG8gcGFyc2VmaWxlIC0tIHJldHVybiBub2RlIG9yIHNldCBleGNlcHRpb24gKi8KQEAgLTE5ODgsNiArMjE0MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBOVUxMLCBOVUxMLCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogCiAgICAgcmV0dXJuIG47CiB9CkBAIC0yMDAyLDYgKzIxNTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCAmZXJyLCBmbGFncyk7CiAgICAgaWYgKG4gPT0gTlVMTCkKICAgICAgICAgZXJyX2lucHV0KCZlcnIpOworICAgIGVycl9mcmVlKCZlcnIpOwogICAgIHJldHVybiBuOwogfQogCkBAIC0yMDE0LDYgKzIxNjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZfUHlQYXJzZXJfR3JhbW1hciwgc3RhcnQsICZlcnIsIGZsYWdzKTsKICAgICBpZiAobiA9PSBOVUxMKQogICAgICAgICBlcnJfaW5wdXQoJmVycik7CisgICAgZXJyX2ZyZWUoJmVycik7CiAgICAgcmV0dXJuIG47CiB9CiAKQEAgLTIwMjcsMTEgKzIxODIsMjMgQEAKICAgIGV2ZW4gcGFyc2VyIG1vZHVsZXMuICovCiAKIHZvaWQKK1B5UGFyc2VyX0NsZWFyRXJyb3IocGVycmRldGFpbCAqZXJyKQoreworICAgIGVycl9mcmVlKGVycik7Cit9CisKK3ZvaWQKIFB5UGFyc2VyX1NldEVycm9yKHBlcnJkZXRhaWwgKmVycikKIHsKICAgICBlcnJfaW5wdXQoZXJyKTsKIH0KIAorc3RhdGljIHZvaWQKK2Vycl9mcmVlKHBlcnJkZXRhaWwgKmVycikKK3sKKyAgICBQeV9DTEVBUihlcnItPmZpbGVuYW1lKTsKK30KKwogLyogU2V0IHRoZSBlcnJvciBhcHByb3ByaWF0ZSB0byB0aGUgZ2l2ZW4gaW5wdXQgZXJyb3IgY29kZSAoc2VlIGVycmNvZGUuaCkgKi8KIAogc3RhdGljIHZvaWQKQEAgLTIwMzksNyArMjIwNiw2IEBACiB7CiAgICAgUHlPYmplY3QgKnYsICp3LCAqZXJydHlwZSwgKmVycnRleHQ7CiAgICAgUHlPYmplY3QgKm1zZ19vYmogPSBOVUxMOwotICAgIFB5T2JqZWN0ICpmaWxlbmFtZTsKICAgICBjaGFyICptc2cgPSBOVUxMOwogCiAgICAgZXJydHlwZSA9IFB5RXhjX1N5bnRheEVycm9yOwpAQCAtMjExMSw2ICsyMjc3LDkgQEAKICAgICBjYXNlIEVfSURFTlRJRklFUjoKICAgICAgICAgbXNnID0gImludmFsaWQgY2hhcmFjdGVyIGluIGlkZW50aWZpZXIiOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEVfQkFEU0lOR0xFOgorICAgICAgICBtc2cgPSAibXVsdGlwbGUgc3RhdGVtZW50cyBmb3VuZCB3aGlsZSBjb21waWxpbmcgYSBzaW5nbGUgc3RhdGVtZW50IjsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJlcnJvcj0lZFxuIiwgZXJyLT5lcnJvcik7CiAgICAgICAgIG1zZyA9ICJ1bmtub3duIHBhcnNpbmcgZXJyb3IiOwpAQCAtMjEyNSwxNyArMjI5NCw4IEBACiAgICAgICAgIGVycnRleHQgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChlcnItPnRleHQsIHN0cmxlbihlcnItPnRleHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2UiKTsKICAgICB9Ci0gICAgaWYgKGVyci0+ZmlsZW5hbWUgIT0gTlVMTCkKLSAgICAgICAgZmlsZW5hbWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGVyci0+ZmlsZW5hbWUpOwotICAgIGVsc2UgewotICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgICAgIGZpbGVuYW1lID0gUHlfTm9uZTsKLSAgICB9Ci0gICAgaWYgKGZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoTmlpTikiLCBmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLT5saW5lbm8sIGVyci0+b2Zmc2V0LCBlcnJ0ZXh0KTsKLSAgICBlbHNlCi0gICAgICAgIHYgPSBOVUxMOworICAgIHYgPSBQeV9CdWlsZFZhbHVlKCIoT2lpTikiLCBlcnItPmZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIGVyci0+bGluZW5vLCBlcnItPm9mZnNldCwgZXJydGV4dCk7CiAgICAgaWYgKHYgIT0gTlVMTCkgewogICAgICAgICBpZiAobXNnX29iaikKICAgICAgICAgICAgIHcgPSBQeV9CdWlsZFZhbHVlKCIoT08pIiwgbXNnX29iaiwgdik7CkBAIC0yMTU5LDExICsyMzE5LDI0IEBACiB2b2lkCiBQeV9GYXRhbEVycm9yKGNvbnN0IGNoYXIgKm1zZykKIHsKKyAgICBjb25zdCBpbnQgZmQgPSBmaWxlbm8oc3RkZXJyKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhdGFsIFB5dGhvbiBlcnJvcjogJXNcbiIsIG1zZyk7CiAgICAgZmZsdXNoKHN0ZGVycik7IC8qIGl0IGhlbHBzIGluIFdpbmRvd3MgZGVidWcgYnVpbGQgKi8KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBQeUVycl9QcmludEV4KDApOwogICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdHN0YXRlID0gX1B5X2F0b21pY19sb2FkX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQpOworICAgICAgICBpZiAodHN0YXRlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgICAgIH0KKyAgICAgICAgX1B5RmF1bHRoYW5kbGVyX0ZpbmkoKTsKKyAgICB9CisKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgewogICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKG1zZyk7CkBAIC0yMjE4LDYgKzIzOTEsNyBAQAogd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKHZvaWQpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBfUHlfSURFTlRJRklFUihfc2h1dGRvd24pOwogICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICBQeU9iamVjdCAqdGhyZWFkaW5nID0gUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcodHN0YXRlLT5pbnRlcnAtPm1vZHVsZXMsCkBAIC0yMjI3LDcgKzI0MDEsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QodGhyZWFkaW5nLCAiX3NodXRkb3duIiwgIiIpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGltZS5jIGIvUHl0aG9uL3B5dGltZS5jCmluZGV4IDZmYjc2OTUuLmJlZWFiODcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRpbWUuYworKysgYi9QeXRob24vcHl0aW1lLmMKQEAgLTEsNyArMSw5IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCisjaWZkZWYgTVNfV0lORE9XUworI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbmRpZgogCi0jaWZkZWYgX19BUFBMRV9fCi0jaWYgZGVmaW5lZChIQVZFX0dFVFRJTUVPRkRBWSkgJiYgZGVmaW5lZChIQVZFX0ZUSU1FKQorI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBkZWZpbmVkKEhBVkVfR0VUVElNRU9GREFZKSAmJiBkZWZpbmVkKEhBVkVfRlRJTUUpCiAgIC8qCiAgICAqIF9QeVRpbWVfZ2V0dGltZW9mZGF5IGZhbGxzIGJhY2sgdG8gZnRpbWUgd2hlbiBnZXR0dGltZW9mZGF5IGZhaWxzIGJlY2F1c2UgdGhlIGxhdHRlcgogICAgKiBtaWdodCBmYWlsIG9uIHNvbWUgcGxhdGZvcm1zLiBUaGlzIGZhbGxiYWNrIGlzIHVud2FudGVkIG9uIE1hY09TWCBiZWNhdXNlCkBAIC0xMCwxOCArMTIsNDEgQEAKICAgICovCiAjIHVuZGVmIEhBVkVfRlRJTUUKICNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX0ZUSU1FKSAmJiAhZGVmaW5lZChNU19XSU5ET1dTKQorI2luY2x1ZGUgPHN5cy90aW1lYi5oPgorZXh0ZXJuIGludCBmdGltZShzdHJ1Y3QgdGltZWIgKik7CiAjZW5kaWYKIAotI2lmZGVmIEhBVkVfRlRJTUUKLSNpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSNpZiAhZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChQWU9TX09TMikKLWV4dGVybiBpbnQgZnRpbWUoc3RydWN0IHRpbWViICopOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KLSNlbmRpZiAvKiBIQVZFX0ZUSU1FICovCi0KLXZvaWQKLV9QeVRpbWVfZ2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHApCitzdGF0aWMgdm9pZAorcHlnZXR0aW1lb2ZkYXkoX1B5VGltZV90aW1ldmFsICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbykKIHsKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgRklMRVRJTUUgc3lzdGVtX3RpbWU7CisgICAgVUxBUkdFX0lOVEVHRVIgbGFyZ2U7CisgICAgVUxPTkdMT05HIG1pY3Jvc2Vjb25kczsKKworICAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZzeXN0ZW1fdGltZSk7CisgICAgbGFyZ2UudS5Mb3dQYXJ0ID0gc3lzdGVtX3RpbWUuZHdMb3dEYXRlVGltZTsKKyAgICBsYXJnZS51LkhpZ2hQYXJ0ID0gc3lzdGVtX3RpbWUuZHdIaWdoRGF0ZVRpbWU7CisgICAgLyogMTEsNjQ0LDQ3Myw2MDAsMDAwLDAwMDogbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuCisgICAgICAgdGhlIDFzdCBqYW51YXJ5IDE2MDEgYW5kIHRoZSAxc3QgamFudWFyeSAxOTcwICgzNjkgeWVhcnMgKyA4OSBsZWFwCisgICAgICAgZGF5cykuICovCisgICAgbWljcm9zZWNvbmRzID0gbGFyZ2UuUXVhZFBhcnQgLyAxMCAtIDExNjQ0NDczNjAwMDAwMDAwOworICAgIHRwLT50dl9zZWMgPSBtaWNyb3NlY29uZHMgLyAxMDAwMDAwOworICAgIHRwLT50dl91c2VjID0gbWljcm9zZWNvbmRzICUgMTAwMDAwMDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBEV09SRCB0aW1lQWRqdXN0bWVudCwgdGltZUluY3JlbWVudDsKKyAgICAgICAgQk9PTCBpc1RpbWVBZGp1c3RtZW50RGlzYWJsZWQ7CisKKyAgICAgICAgaW5mby0+aW1wbGVtZW50YXRpb24gPSAiR2V0U3lzdGVtVGltZUFzRmlsZVRpbWUoKSI7CisgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICh2b2lkKSBHZXRTeXN0ZW1UaW1lQWRqdXN0bWVudCgmdGltZUFkanVzdG1lbnQsICZ0aW1lSW5jcmVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlzVGltZUFkanVzdG1lbnREaXNhYmxlZCk7CisgICAgICAgIGluZm8tPnJlc29sdXRpb24gPSB0aW1lSW5jcmVtZW50ICogMWUtNzsKKyAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgfQorI2Vsc2UKICAgICAvKiBUaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBnZXQgdGhlIHRpbWU6CiAgICAgICAoMSkgZ2V0dGltZW9mZGF5KCkgLS0gcmVzb2x1dGlvbiBpbiBtaWNyb3NlY29uZHMKICAgICAgICgyKSBmdGltZSgpIC0tIHJlc29sdXRpb24gaW4gbWlsbGlzZWNvbmRzCkBAIC0zMCwyNyArNTUsMTczIEBACiAgICAgICBTaW5jZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gU0NPIE9EVCAzLjApIGdldHRpbWVvZmRheSgpIG1heQogICAgICAgZmFpbCwgc28gd2UgZmFsbCBiYWNrIG9uIGZ0aW1lKCkgb3IgdGltZSgpLgogICAgICAgTm90ZTogY2xvY2sgcmVzb2x1dGlvbiBkb2VzIG5vdCBpbXBseSBjbG9jayBhY2N1cmFjeSEgKi8KKwogI2lmZGVmIEhBVkVfR0VUVElNRU9GREFZCisgICAgaW50IGVycjsKICNpZmRlZiBHRVRUSU1FT0ZEQVlfTk9fVFoKLSAgICBpZiAoZ2V0dGltZW9mZGF5KHRwKSA9PSAwKQorICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCk7CisjZWxzZQorICAgIGVyciA9IGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpOworI2VuZGlmCisgICAgaWYgKGVyciA9PSAwKSB7CisgICAgICAgIGlmIChpbmZvKSB7CisgICAgICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJnZXR0aW1lb2ZkYXkoKSI7CisgICAgICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMWUtNjsKKyAgICAgICAgICAgIGluZm8tPm1vbm90b25pYyA9IDA7CisgICAgICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47Ci0jZWxzZSAvKiAhR0VUVElNRU9GREFZX05PX1RaICovCi0gICAgaWYgKGdldHRpbWVvZmRheSh0cCwgKHN0cnVjdCB0aW1lem9uZSAqKU5VTEwpID09IDApCi0gICAgICAgIHJldHVybjsKLSNlbmRpZiAvKiAhR0VUVElNRU9GREFZX05PX1RaICovCi0jZW5kaWYgLyogIUhBVkVfR0VUVElNRU9GREFZICovCisgICAgfQorI2VuZGlmICAgLyogSEFWRV9HRVRUSU1FT0ZEQVkgKi8KKwogI2lmIGRlZmluZWQoSEFWRV9GVElNRSkKICAgICB7CiAgICAgICAgIHN0cnVjdCB0aW1lYiB0OwogICAgICAgICBmdGltZSgmdCk7CiAgICAgICAgIHRwLT50dl9zZWMgPSB0LnRpbWU7CiAgICAgICAgIHRwLT50dl91c2VjID0gdC5taWxsaXRtICogMTAwMDsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIGluZm8tPmltcGxlbWVudGF0aW9uID0gImZ0aW1lKCkiOworICAgICAgICAgICAgaW5mby0+cmVzb2x1dGlvbiA9IDFlLTM7CisgICAgICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICAgICAgaW5mby0+YWRqdXN0YWJsZSA9IDE7CisgICAgICAgIH0KICAgICB9CiAjZWxzZSAvKiAhSEFWRV9GVElNRSAqLwogICAgIHRwLT50dl9zZWMgPSB0aW1lKE5VTEwpOwogICAgIHRwLT50dl91c2VjID0gMDsKKyAgICBpZiAoaW5mbykgeworICAgICAgICBpbmZvLT5pbXBsZW1lbnRhdGlvbiA9ICJ0aW1lKCkiOworICAgICAgICBpbmZvLT5yZXNvbHV0aW9uID0gMS4wOworICAgICAgICBpbmZvLT5tb25vdG9uaWMgPSAwOworICAgICAgICBpbmZvLT5hZGp1c3RhYmxlID0gMTsKKyAgICB9CiAjZW5kaWYgLyogIUhBVkVfRlRJTUUgKi8KLSAgICByZXR1cm47CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCit9CisKK3ZvaWQKK19QeVRpbWVfZ2V0dGltZW9mZGF5KF9QeVRpbWVfdGltZXZhbCAqdHApCit7CisgICAgcHlnZXR0aW1lb2ZkYXkodHAsIE5VTEwpOworfQorCit2b2lkCitfUHlUaW1lX2dldHRpbWVvZmRheV9pbmZvKF9QeVRpbWVfdGltZXZhbCAqdHAsIF9QeV9jbG9ja19pbmZvX3QgKmluZm8pCit7CisgICAgcHlnZXR0aW1lb2ZkYXkodHAsIGluZm8pOworfQorCitzdGF0aWMgdm9pZAorZXJyb3JfdGltZV90X292ZXJmbG93KHZvaWQpCit7CisgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJ0aW1lc3RhbXAgb3V0IG9mIHJhbmdlIGZvciBwbGF0Zm9ybSB0aW1lX3QiKTsKK30KKwordGltZV90CitfUHlMb25nX0FzVGltZV90KFB5T2JqZWN0ICpvYmopCit7CisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgUFlfTE9OR19MT05HIHZhbDsKKyAgICB2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOworI2Vsc2UKKyAgICBsb25nIHZhbDsKKyAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICB2YWwgPSBQeUxvbmdfQXNMb25nKG9iaik7CisjZW5kaWYKKyAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gKHRpbWVfdCl2YWw7Cit9CisKK1B5T2JqZWN0ICoKK19QeUxvbmdfRnJvbVRpbWVfdCh0aW1lX3QgdCkKK3sKKyNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiBTSVpFT0ZfVElNRV9UID09IFNJWkVPRl9MT05HX0xPTkcKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXQpOworI2Vsc2UKKyAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKChsb25nKXQpOworI2VuZGlmCit9CisKK3N0YXRpYyBpbnQKK19QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnVtZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvcikKK3sKKyAgICBhc3NlcnQoZGVub21pbmF0b3IgPD0gTE9OR19NQVgpOworICAgIGlmIChQeUZsb2F0X0NoZWNrKG9iaikpIHsKKyAgICAgICAgZG91YmxlIGQsIGludHBhcnQsIGVycjsKKyAgICAgICAgLyogdm9sYXRpbGUgYXZvaWRzIHVuc2FmZSBvcHRpbWl6YXRpb24gb24gZmxvYXQgZW5hYmxlZCBieSBnY2MgLU8zICovCisgICAgICAgIHZvbGF0aWxlIGRvdWJsZSBmbG9hdHBhcnQ7CisKKyAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgZmxvYXRwYXJ0ID0gbW9kZihkLCAmaW50cGFydCk7CisgICAgICAgIGlmIChmbG9hdHBhcnQgPCAwKSB7CisgICAgICAgICAgICBmbG9hdHBhcnQgPSAxLjAgKyBmbG9hdHBhcnQ7CisgICAgICAgICAgICBpbnRwYXJ0IC09IDEuMDsKKyAgICAgICAgfQorCisgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7CisgICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGZsb2F0cGFydCAqPSBkZW5vbWluYXRvcjsKKyAgICAgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAqc2VjID0gX1B5TG9uZ19Bc1RpbWVfdChvYmopOworICAgICAgICBpZiAoKnNlYyA9PSAodGltZV90KS0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICpudW1lcmF0b3IgPSAwOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9PYmplY3RUb1RpbWVfdChQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYykKK3sKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7CisgICAgICAgIGRvdWJsZSBkLCBpbnRwYXJ0LCBlcnI7CisKKyAgICAgICAgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgKHZvaWQpbW9kZihkLCAmaW50cGFydCk7CisKKyAgICAgICAgKnNlYyA9ICh0aW1lX3QpaW50cGFydDsKKyAgICAgICAgZXJyID0gaW50cGFydCAtIChkb3VibGUpKnNlYzsKKyAgICAgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgICAgIGVycm9yX3RpbWVfdF9vdmVyZmxvdygpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgaWYgKCpzZWMgPT0gKHRpbWVfdCktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK2ludAorX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpuc2VjKQoreworICAgIHJldHVybiBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIG5zZWMsIDFlOSk7Cit9CisKK2ludAorX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKnVzZWMpCit7CisgICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2KTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvUHl0aG9uL3JhbmRvbS5jIGIvUHl0aG9uL3JhbmRvbS5jCmluZGV4IDgyNTI2MGYuLjUzNTE4YzIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9yYW5kb20uYworKysgYi9QeXRob24vcmFuZG9tLmMKQEAgLTI1OCwxNyArMjU4LDYgQEAKICAgICBfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCA9IDE7CiAKICAgICAvKgotICAgICAgQnkgZGVmYXVsdCwgaGFzaCByYW5kb21pemF0aW9uIGlzIGRpc2FibGVkLCBhbmQgb25seQotICAgICAgZW5hYmxlZCBpZiBQWVRIT05IQVNIU0VFRCBpcyBzZXQgdG8gbm9uLWVtcHR5IG9yIGlmCi0gICAgICAiLVIiIGlzIHByb3ZpZGVkIGF0IHRoZSBjb21tYW5kIGxpbmU6Ci0gICAgKi8KLSAgICBpZiAoIVB5X0hhc2hSYW5kb21pemF0aW9uRmxhZykgewotICAgICAgICAvKiBEaXNhYmxlIHRoZSByYW5kb21pemVkIGhhc2g6ICovCi0gICAgICAgIG1lbXNldChzZWNyZXQsIDAsIHNlY3JldF9zaXplKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8qCiAgICAgICBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZC4gIEdlbmVyYXRlIGEgcGVyLXByb2Nlc3Mgc2VjcmV0LAogICAgICAgdXNpbmcgUFlUSE9OSEFTSFNFRUQgaWYgcHJvdmlkZWQuCiAgICAgKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9zeW10YWJsZS5jIGIvUHl0aG9uL3N5bXRhYmxlLmMKaW5kZXggMzVmYzZlMS4uMWMyOTFiYiAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5bXRhYmxlLmMKKysrIGIvUHl0aG9uL3N5bXRhYmxlLmMKQEAgLTE5LDEwICsxOSw2IEBACiAKICNkZWZpbmUgSU1QT1JUX1NUQVJfV0FSTklORyAiaW1wb3J0ICogb25seSBhbGxvd2VkIGF0IG1vZHVsZSBsZXZlbCIKIAotI2RlZmluZSBSRVRVUk5fVkFMX0lOX0dFTkVSQVRPUiBcCi0gICAgIidyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvciIKLQotCiBzdGF0aWMgUHlTVEVudHJ5T2JqZWN0ICoKIHN0ZV9uZXcoc3RydWN0IHN5bXRhYmxlICpzdCwgaWRlbnRpZmllciBuYW1lLCBfUHlfYmxvY2tfdHkgYmxvY2ssCiAgICAgICAgIHZvaWQgKmtleSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQpCkBAIC0xODcsNiArMTgzLDcgQEAKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfYXJnYW5ub3RhdGlvbnMoc3RydWN0IHN5bXRhYmxlICpzdCwgYXNkbF9zZXEgKmFyZ3MpOwogc3RhdGljIGludCBzeW10YWJsZV9pbXBsaWNpdF9hcmcoc3RydWN0IHN5bXRhYmxlICpzdCwgaW50IHBvcyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2Fubm90YXRpb25zKHN0cnVjdCBzeW10YWJsZSAqc3QsIHN0bXRfdHkgcyk7CitzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X3dpdGhpdGVtKHN0cnVjdCBzeW10YWJsZSAqc3QsIHdpdGhpdGVtX3R5IGl0ZW0pOwogCiAKIHN0YXRpYyBpZGVudGlmaWVyIHRvcCA9IE5VTEwsIGxhbWJkYSA9IE5VTEwsIGdlbmV4cHIgPSBOVUxMLApAQCAtNzUyLDcgKzc0OSw3IEBACiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAotICAgIC8qIFJlY3Vyc2l2ZWx5IGNhbGwgYW5hbHl6ZV9ibG9jaygpIG9uIGVhY2ggY2hpbGQgYmxvY2suCisgICAgLyogUmVjdXJzaXZlbHkgY2FsbCBhbmFseXplX2NoaWxkX2Jsb2NrKCkgb24gZWFjaCBjaGlsZCBibG9jay4KIAogICAgICAgIG5ld2JvdW5kLCBuZXdnbG9iYWwgbm93IGNvbnRhaW4gdGhlIG5hbWVzIHZpc2libGUgaW4KICAgICAgICBuZXN0ZWQgYmxvY2tzLiAgVGhlIGZyZWUgdmFyaWFibGVzIGluIHRoZSBjaGlsZHJlbiB3aWxsCkBAIC04OTUsMTggKzg5MiwxNSBAQAogc3RhdGljIGludAogc3ltdGFibGVfZXhpdF9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB2b2lkICphc3QpCiB7Ci0gICAgUHlfc3NpemVfdCBlbmQ7CisgICAgUHlfc3NpemVfdCBzaXplOwogCi0gICAgUHlfQ0xFQVIoc3QtPnN0X2N1cik7Ci0gICAgZW5kID0gUHlMaXN0X0dFVF9TSVpFKHN0LT5zdF9zdGFjaykgLSAxOwotICAgIGlmIChlbmQgPj0gMCkgewotICAgICAgICBzdC0+c3RfY3VyID0gKFB5U1RFbnRyeU9iamVjdCAqKVB5TGlzdF9HRVRfSVRFTShzdC0+c3Rfc3RhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCk7Ci0gICAgICAgIGlmIChzdC0+c3RfY3VyID09IE5VTEwpCisgICAgc3QtPnN0X2N1ciA9IE5VTEw7CisgICAgc2l6ZSA9IFB5TGlzdF9HRVRfU0laRShzdC0+c3Rfc3RhY2spOworICAgIGlmIChzaXplKSB7CisgICAgICAgIGlmIChQeUxpc3RfU2V0U2xpY2Uoc3QtPnN0X3N0YWNrLCBzaXplIC0gMSwgc2l6ZSwgTlVMTCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFB5X0lOQ1JFRihzdC0+c3RfY3VyKTsKLSAgICAgICAgaWYgKFB5U2VxdWVuY2VfRGVsSXRlbShzdC0+c3Rfc3RhY2ssIGVuZCkgPCAwKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmICgtLXNpemUpCisgICAgICAgICAgICBzdC0+c3RfY3VyID0gKFB5U1RFbnRyeU9iamVjdCAqKVB5TGlzdF9HRVRfSVRFTShzdC0+c3Rfc3RhY2ssIHNpemUgLSAxKTsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC05MTUsMjMgKzkwOSwyMyBAQAogc3ltdGFibGVfZW50ZXJfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgaWRlbnRpZmllciBuYW1lLCBfUHlfYmxvY2tfdHkgYmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICB2b2lkICphc3QsIGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQogewotICAgIFB5U1RFbnRyeU9iamVjdCAqcHJldiA9IE5VTEw7CisgICAgUHlTVEVudHJ5T2JqZWN0ICpwcmV2ID0gTlVMTCwgKnN0ZTsKIAotICAgIGlmIChzdC0+c3RfY3VyKSB7Ci0gICAgICAgIHByZXYgPSBzdC0+c3RfY3VyOwotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChzdC0+c3Rfc3RhY2ssIChQeU9iamVjdCAqKXN0LT5zdF9jdXIpIDwgMCkgewotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgUHlfREVDUkVGKHN0LT5zdF9jdXIpOwotICAgIH0KLSAgICBzdC0+c3RfY3VyID0gc3RlX25ldyhzdCwgbmFtZSwgYmxvY2ssIGFzdCwgbGluZW5vLCBjb2xfb2Zmc2V0KTsKLSAgICBpZiAoc3QtPnN0X2N1ciA9PSBOVUxMKQorICAgIHN0ZSA9IHN0ZV9uZXcoc3QsIG5hbWUsIGJsb2NrLCBhc3QsIGxpbmVubywgY29sX29mZnNldCk7CisgICAgaWYgKHN0ZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoUHlMaXN0X0FwcGVuZChzdC0+c3Rfc3RhY2ssIChQeU9iamVjdCAqKXN0ZSkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdGUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcHJldiA9IHN0LT5zdF9jdXI7CisgICAgLyogVGhlIGVudHJ5IGlzIG93bmVkIGJ5IHRoZSBzdGFjay4gQm9ycm93IGl0IGZvciBzdF9jdXIuICovCisgICAgUHlfREVDUkVGKHN0ZSk7CisgICAgc3QtPnN0X2N1ciA9IHN0ZTsKICAgICBpZiAoYmxvY2sgPT0gTW9kdWxlQmxvY2spCiAgICAgICAgIHN0LT5zdF9nbG9iYWwgPSBzdC0+c3RfY3VyLT5zdGVfc3ltYm9sczsKICAgICBpZiAocHJldikgewotICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChwcmV2LT5zdGVfY2hpbGRyZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKXN0LT5zdF9jdXIpIDwgMCkgeworICAgICAgICBpZiAoUHlMaXN0X0FwcGVuZChwcmV2LT5zdGVfY2hpbGRyZW4sIChQeU9iamVjdCAqKXN0ZSkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTEwMjUsMTIgKzEwMTksNiBAQAogICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgKFYpKSkgXAogICAgICAgICByZXR1cm4gMDsKIAotI2RlZmluZSBWSVNJVF9JTl9CTE9DSyhTVCwgVFlQRSwgViwgUykgXAotICAgIGlmICghc3ltdGFibGVfdmlzaXRfICMjIFRZUEUoKFNUKSwgKFYpKSkgeyBcCi0gICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soKFNUKSwgKFMpKTsgXAotICAgICAgICByZXR1cm4gMDsgXAotICAgIH0KLQogI2RlZmluZSBWSVNJVF9TRVEoU1QsIFRZUEUsIFNFUSkgeyBcCiAgICAgaW50IGk7IFwKICAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXApAQCAtMTA0MSwxOCArMTAyOSw2IEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfU0VRX0lOX0JMT0NLKFNULCBUWVBFLCBTRVEsIFMpIHsgXAotICAgIGludCBpOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKLSAgICBmb3IgKGkgPSAwOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCi0gICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIHsgXAotICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0KLQogI2RlZmluZSBWSVNJVF9TRVFfVEFJTChTVCwgVFlQRSwgU0VRLCBTVEFSVCkgeyBcCiAgICAgaW50IGk7IFwKICAgICBhc2RsX3NlcSAqc2VxID0gKFNFUSk7IC8qIGF2b2lkIHZhcmlhYmxlIGNhcHR1cmUgKi8gXApAQCAtMTA2MywxOCArMTAzOSw2IEBACiAgICAgfSBcCiB9CiAKLSNkZWZpbmUgVklTSVRfU0VRX1RBSUxfSU5fQkxPQ0soU1QsIFRZUEUsIFNFUSwgU1RBUlQsIFMpIHsgXAotICAgIGludCBpOyBcCi0gICAgYXNkbF9zZXEgKnNlcSA9IChTRVEpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKLSAgICBmb3IgKGkgPSAoU1RBUlQpOyBpIDwgYXNkbF9zZXFfTEVOKHNlcSk7IGkrKykgeyBcCi0gICAgICAgIFRZUEUgIyMgX3R5IGVsdCA9IChUWVBFICMjIF90eSlhc2RsX3NlcV9HRVQoc2VxLCBpKTsgXAotICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0XyAjIyBUWVBFKChTVCksIGVsdCkpIHsgXAotICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jaygoU1QpLCAoUykpOyBcCi0gICAgICAgICAgICByZXR1cm4gMDsgXAotICAgICAgICB9IFwKLSAgICB9IFwKLX0KLQogI2RlZmluZSBWSVNJVF9LV09OTFlERUZBVUxUUyhTVCwgS1dfREVGQVVMVFMpIHsgXAogICAgIGludCBpID0gMDsgXAogICAgIGFzZGxfc2VxICpzZXEgPSAoS1dfREVGQVVMVFMpOyAvKiBhdm9pZCB2YXJpYWJsZSBjYXB0dXJlICovIFwKQEAgLTExMjQsOCArMTA4OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKilzLCBzLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGFyZ3VtZW50cywgcy0+di5GdW5jdGlvbkRlZi5hcmdzLCBzKTsKLSAgICAgICAgVklTSVRfU0VRX0lOX0JMT0NLKHN0LCBzdG10LCBzLT52LkZ1bmN0aW9uRGVmLmJvZHksIHMpOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBzLT52LkZ1bmN0aW9uRGVmLmFyZ3MpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnJlYWs7CkBAIC0xMTUzLDcgKzExMTcsNyBAQAogICAgICAgICB9CiAgICAgICAgIHRtcCA9IHN0LT5zdF9wcml2YXRlOwogICAgICAgICBzdC0+c3RfcHJpdmF0ZSA9IHMtPnYuQ2xhc3NEZWYubmFtZTsKLSAgICAgICAgVklTSVRfU0VRX0lOX0JMT0NLKHN0LCBzdG10LCBzLT52LkNsYXNzRGVmLmJvZHksIHMpOworICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuQ2xhc3NEZWYuYm9keSk7CiAgICAgICAgIHN0LT5zdF9wcml2YXRlID0gdG1wOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsIHMpKQogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMTYzLDE0ICsxMTI3LDYgQEAKICAgICAgICAgaWYgKHMtPnYuUmV0dXJuLnZhbHVlKSB7CiAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5SZXR1cm4udmFsdWUpOwogICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX3JldHVybnNfdmFsdWUgPSAxOwotICAgICAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgIFJFVFVSTl9WQUxfSU5fR0VORVJBVE9SKTsKLSAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbkV4KHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRGVsZXRlX2tpbmQ6CkBAIC0xMjA3LDE5ICsxMTYzLDE2IEBACiAgICAgY2FzZSBSYWlzZV9raW5kOgogICAgICAgICBpZiAocy0+di5SYWlzZS5leGMpIHsKICAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmV4Yyk7Ci0gICAgICAgIGlmIChzLT52LlJhaXNlLmNhdXNlKSB7Ci0gICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LlJhaXNlLmNhdXNlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPnYuUmFpc2UuY2F1c2UpIHsKKyAgICAgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5SYWlzZS5jYXVzZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUcnlFeGNlcHRfa2luZDoKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUV4Y2VwdC5ib2R5KTsKLSAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LlRyeUV4Y2VwdC5vcmVsc2UpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIGV4Y2VwdGhhbmRsZXIsIHMtPnYuVHJ5RXhjZXB0LmhhbmRsZXJzKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUcnlGaW5hbGx5X2tpbmQ6Ci0gICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnlGaW5hbGx5LmJvZHkpOwotICAgICAgICBWSVNJVF9TRVEoc3QsIHN0bXQsIHMtPnYuVHJ5RmluYWxseS5maW5hbGJvZHkpOworICAgIGNhc2UgVHJ5X2tpbmQ6CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnkuYm9keSk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5Ucnkub3JlbHNlKTsKKyAgICAgICAgVklTSVRfU0VRKHN0LCBleGNlcHRoYW5kbGVyLCBzLT52LlRyeS5oYW5kbGVycyk7CisgICAgICAgIFZJU0lUX1NFUShzdCwgc3RtdCwgcy0+di5UcnkuZmluYWxib2R5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBc3NlcnRfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQXNzZXJ0LnRlc3QpOwpAQCAtMTMwNywxMCArMTI2MCw3IEBACiAgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gaGVyZSAqLwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdpdGhfa2luZDoKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuV2l0aC5jb250ZXh0X2V4cHIpOwotICAgICAgICBpZiAocy0+di5XaXRoLm9wdGlvbmFsX3ZhcnMpIHsKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBzLT52LldpdGgub3B0aW9uYWxfdmFycyk7Ci0gICAgICAgIH0KKyAgICAgICAgVklTSVRfU0VRKHN0LCB3aXRoaXRlbSwgcy0+di5XaXRoLml0ZW1zKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LldpdGguYm9keSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEzNDMsOCArMTI5Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKillLCBlLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGFyZ3VtZW50cywgZS0+di5MYW1iZGEuYXJncywgKHZvaWQqKWUpOwotICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgZS0+di5MYW1iZGEuYm9keSwgKHZvaWQqKWUpOworICAgICAgICBWSVNJVChzdCwgYXJndW1lbnRzLCBlLT52LkxhbWJkYS5hcmdzKTsKKyAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuTGFtYmRhLmJvZHkpOwogICAgICAgICBpZiAoIXN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnJlYWs7CkBAIC0xMzc4LDE3ICsxMzI4LDE0IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBZaWVsZF9raW5kOgotICAgICAgICBpZiAoZS0+di5ZaWVsZC52YWx1ZSkKLSAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LllpZWxkLnZhbHVlKTsKKyAgICBjYXNlIFlpZWxkRnJvbV9raW5kOiB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIHZhbHVlID0gKGUtPmtpbmQgPT0gWWllbGRGcm9tX2tpbmQpID8gZS0+di5ZaWVsZEZyb20udmFsdWUgOiBlLT52LllpZWxkLnZhbHVlOworICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgdmFsdWUpOwogICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMTsKLSAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV9yZXR1cm5zX3ZhbHVlKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3ludGF4RXJyb3IsCi0gICAgICAgICAgICAgICAgUkVUVVJOX1ZBTF9JTl9HRU5FUkFUT1IpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25FeChzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUtPmxpbmVubywgZS0+Y29sX29mZnNldCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQogICAgICAgICBicmVhazsKKyAgICB9CiAgICAgY2FzZSBDb21wYXJlX2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkNvbXBhcmUubGVmdCk7CiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5Db21wYXJlLmNvbXBhcmF0b3JzKTsKQEAgLTE1NDUsNiArMTQ5MiwxNiBAQAogICAgIHJldHVybiAxOwogfQogCitzdGF0aWMgaW50CitzeW10YWJsZV92aXNpdF93aXRoaXRlbShzdHJ1Y3Qgc3ltdGFibGUgKnN0LCB3aXRoaXRlbV90eSBpdGVtKQoreworICAgIFZJU0lUKHN0LCBleHByLCBpdGVtLT5jb250ZXh0X2V4cHIpOworICAgIGlmIChpdGVtLT5vcHRpb25hbF92YXJzKSB7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBpdGVtLT5vcHRpb25hbF92YXJzKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIAogc3RhdGljIGludAogc3ltdGFibGVfdmlzaXRfYWxpYXMoc3RydWN0IHN5bXRhYmxlICpzdCwgYWxpYXNfdHkgYSkKQEAgLTE1NTUsMTAgKzE1MTIsMTAgQEAKICAgICAqLwogICAgIFB5T2JqZWN0ICpzdG9yZV9uYW1lOwogICAgIFB5T2JqZWN0ICpuYW1lID0gKGEtPmFzbmFtZSA9PSBOVUxMKSA/IGEtPm5hbWUgOiBhLT5hc25hbWU7Ci0gICAgY29uc3QgUHlfVU5JQ09ERSAqYmFzZSA9IFB5VW5pY29kZV9BU19VTklDT0RFKG5hbWUpOwotICAgIFB5X1VOSUNPREUgKmRvdCA9IFB5X1VOSUNPREVfc3RyY2hyKGJhc2UsICcuJyk7Ci0gICAgaWYgKGRvdCkgewotICAgICAgICBzdG9yZV9uYW1lID0gUHlVbmljb2RlX0Zyb21Vbmljb2RlKGJhc2UsIGRvdCAtIGJhc2UpOworICAgIFB5X3NzaXplX3QgZG90ID0gUHlVbmljb2RlX0ZpbmRDaGFyKG5hbWUsICcuJywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChuYW1lKSwgMSk7CisgICAgaWYgKGRvdCAhPSAtMSkgeworICAgICAgICBzdG9yZV9uYW1lID0gUHlVbmljb2RlX1N1YnN0cmluZyhuYW1lLCAwLCBkb3QpOwogICAgICAgICBpZiAoIXN0b3JlX25hbWUpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNjU1LDEzICsxNjEyLDEyIEBACiAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgb3V0ZXJtb3N0LT50YXJnZXQsICh2b2lkKillKTsKLSAgICBWSVNJVF9TRVFfSU5fQkxPQ0soc3QsIGV4cHIsIG91dGVybW9zdC0+aWZzLCAodm9pZCopZSk7Ci0gICAgVklTSVRfU0VRX1RBSUxfSU5fQkxPQ0soc3QsIGNvbXByZWhlbnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycywgMSwgKHZvaWQqKWUpOworICAgIFZJU0lUKHN0LCBleHByLCBvdXRlcm1vc3QtPnRhcmdldCk7CisgICAgVklTSVRfU0VRKHN0LCBleHByLCBvdXRlcm1vc3QtPmlmcyk7CisgICAgVklTSVRfU0VRX1RBSUwoc3QsIGNvbXByZWhlbnNpb24sIGdlbmVyYXRvcnMsIDEpOwogICAgIGlmICh2YWx1ZSkKLSAgICAgICAgVklTSVRfSU5fQkxPQ0soc3QsIGV4cHIsIHZhbHVlLCAodm9pZCopZSk7Ci0gICAgVklTSVRfSU5fQkxPQ0soc3QsIGV4cHIsIGVsdCwgKHZvaWQqKWUpOworICAgICAgICBWSVNJVChzdCwgZXhwciwgdmFsdWUpOworICAgIFZJU0lUKHN0LCBleHByLCBlbHQpOwogICAgIHJldHVybiBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwogfQogCmRpZmYgLS1naXQgYS9QeXRob24vc3lzbW9kdWxlLmMgYi9QeXRob24vc3lzbW9kdWxlLmMKaW5kZXggYzRmMjdkMC4uMjBiZmE1NSAxMDA2NDQKLS0tIGEvUHl0aG9uL3N5c21vZHVsZS5jCisrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwpAQCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIlB5dGhvbi5oIgogI2luY2x1ZGUgImNvZGUuaCIKICNpbmNsdWRlICJmcmFtZW9iamVjdC5oIgorI2luY2x1ZGUgInB5dGhyZWFkLmgiCiAKICNpbmNsdWRlICJvc2RlZnMuaCIKIApAQCAtNzgsOCArNzksMTAgQEAKICAgICBQeU9iamVjdCAqZW5jb2RlZCwgKmVzY2FwZWRfc3RyLCAqcmVwcl9zdHIsICpidWZmZXIsICpyZXN1bHQ7CiAgICAgY2hhciAqc3Rkb3V0X2VuY29kaW5nX3N0cjsKICAgICBpbnQgcmV0OworICAgIF9QeV9JREVOVElGSUVSKGVuY29kaW5nKTsKKyAgICBfUHlfSURFTlRJRklFUihidWZmZXIpOwogCi0gICAgc3Rkb3V0X2VuY29kaW5nID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvdXRmLCAiZW5jb2RpbmciKTsKKyAgICBzdGRvdXRfZW5jb2RpbmcgPSBfUHlPYmplY3RfR2V0QXR0cklkKG91dGYsICZQeUlkX2VuY29kaW5nKTsKICAgICBpZiAoc3Rkb3V0X2VuY29kaW5nID09IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgc3Rkb3V0X2VuY29kaW5nX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3Rkb3V0X2VuY29kaW5nKTsKQEAgLTk2LDkgKzk5LDEwIEBACiAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGJ1ZmZlciA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcob3V0ZiwgImJ1ZmZlciIpOworICAgIGJ1ZmZlciA9IF9QeU9iamVjdF9HZXRBdHRySWQob3V0ZiwgJlB5SWRfYnVmZmVyKTsKICAgICBpZiAoYnVmZmVyKSB7Ci0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxNZXRob2QoYnVmZmVyLCAid3JpdGUiLCAiKE8pIiwgZW5jb2RlZCk7CisgICAgICAgIF9QeV9JREVOVElGSUVSKHdyaXRlKTsKKyAgICAgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChidWZmZXIsICZQeUlkX3dyaXRlLCAiKE8pIiwgZW5jb2RlZCk7CiAgICAgICAgIFB5X0RFQ1JFRihidWZmZXIpOwogICAgICAgICBQeV9ERUNSRUYoZW5jb2RlZCk7CiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKQEAgLTEzNSw2ICsxMzksNyBAQAogICAgIFB5T2JqZWN0ICptb2R1bGVzID0gaW50ZXJwLT5tb2R1bGVzOwogICAgIFB5T2JqZWN0ICpidWlsdGlucyA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsICJidWlsdGlucyIpOwogICAgIGludCBlcnI7CisgICAgX1B5X0lERU5USUZJRVIoXyk7CiAKICAgICBpZiAoYnVpbHRpbnMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibG9zdCBidWlsdGlucyBtb2R1bGUiKTsKQEAgLTE0OCw3ICsxNTMsNyBAQAogICAgICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgICAgIHJldHVybiBQeV9Ob25lOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfU2V0QXR0clN0cmluZyhidWlsdGlucywgIl8iLCBQeV9Ob25lKSAhPSAwKQorICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKGJ1aWx0aW5zLCAmUHlJZF9fLCBQeV9Ob25lKSAhPSAwKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBvdXRmID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRvdXQiKTsKICAgICBpZiAob3V0ZiA9PSBOVUxMIHx8IG91dGYgPT0gUHlfTm9uZSkgewpAQCAtMTcwLDcgKzE3NSw3IEBACiAgICAgfQogICAgIGlmIChQeUZpbGVfV3JpdGVTdHJpbmcoIlxuIiwgb3V0ZikgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5T2JqZWN0X1NldEF0dHJTdHJpbmcoYnVpbHRpbnMsICJfIiwgbykgIT0gMCkKKyAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChidWlsdGlucywgJlB5SWRfXywgbykgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgIHJldHVybiBQeV9Ob25lOwpAQCAtNzcwLDkgKzc3NSw3IEBACiBhIGxhenkgcmVzb2x2aW5nIG9mIHN5bWJvbHMgd2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUsIGlmIGNhbGxlZCBhc1xuXAogc3lzLnNldGRsb3BlbmZsYWdzKDApLiAgVG8gc2hhcmUgc3ltYm9scyBhY3Jvc3MgZXh0ZW5zaW9uIG1vZHVsZXMsIGNhbGwgYXNcblwKIHN5cy5zZXRkbG9wZW5mbGFncyhjdHlwZXMuUlRMRF9HTE9CQUwpLiAgU3ltYm9saWMgbmFtZXMgZm9yIHRoZSBmbGFnIG1vZHVsZXNcblwKLWNhbiBiZSBlaXRoZXIgZm91bmQgaW4gdGhlIGN0eXBlcyBtb2R1bGUsIG9yIGluIHRoZSBETEZDTiBtb2R1bGUuIElmIERMRkNOXG5cCi1pcyBub3QgYXZhaWxhYmxlLCBpdCBjYW4gYmUgZ2VuZXJhdGVkIGZyb20gL3Vzci9pbmNsdWRlL2RsZmNuLmggdXNpbmcgdGhlXG5cCi1oMnB5IHNjcmlwdC4iKTsKK2NhbiBiZSBmb3VuZCBpbiB0aGUgb3MgbW9kdWxlIChSVExEX3h4eCBjb25zdGFudHMsIGUuZy4gb3MuUlRMRF9MQVpZKS4iKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIHN5c19nZXRkbG9wZW5mbGFncyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC04MTEsMTAgKzgxNCwxMSBAQAogc3lzX2dldHNpemVvZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOwotICAgIHN0YXRpYyBQeU9iamVjdCAqc3RyX19zaXplb2ZfXyA9IE5VTEwsICpnY19oZWFkX3NpemUgPSBOVUxMOworICAgIHN0YXRpYyBQeU9iamVjdCAqZ2NfaGVhZF9zaXplID0gTlVMTDsKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7Im9iamVjdCIsICJkZWZhdWx0IiwgMH07CiAgICAgUHlPYmplY3QgKm8sICpkZmx0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqbWV0aG9kOworICAgIF9QeV9JREVOVElGSUVSKF9fc2l6ZW9mX18pOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98TzpnZXRzaXplb2YiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3bGlzdCwgJm8sICZkZmx0KSkKQEAgLTgzMSw4ICs4MzUsNyBAQAogICAgIGlmIChQeVR5cGVfUmVhZHkoUHlfVFlQRShvKSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIG1ldGhvZCA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKG8sICJfX3NpemVvZl9fIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyX19zaXplb2ZfXyk7CisgICAgbWV0aG9kID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX19zaXplb2ZfXyk7CiAgICAgaWYgKG1ldGhvZCA9PSBOVUxMKSB7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCkBAIC05OTQsNiArOTk3LDI3IEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2RlYnVnbWFsbG9jc3RhdHMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworI2lmZGVmIFdJVEhfUFlNQUxMT0MKKyAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisjZW5kaWYKKyAgICBfUHlPYmplY3RfRGVidWdUeXBlU3RhdHMoc3RkZXJyKTsKKworICAgIFB5X1JFVFVSTl9OT05FOworfQorUHlEb2NfU1RSVkFSKGRlYnVnbWFsbG9jc3RhdHNfZG9jLAorIl9kZWJ1Z21hbGxvY3N0YXRzKClcblwKK1xuXAorUHJpbnQgc3VtbWFyeSBpbmZvIHRvIHN0ZGVyciBhYm91dCB0aGUgc3RhdGUgb2ZcblwKK3B5bWFsbG9jJ3Mgc3RydWN0dXJlcy5cblwKK1xuXAorSW4gUHlfREVCVUcgbW9kZSwgYWxzbyBwZXJmb3JtIHNvbWUgZXhwZW5zaXZlIGludGVybmFsIGNvbnNpc3RlbmN5XG5cCitjaGVja3MuXG5cCisiKTsKKwogI2lmZGVmIFB5X1RSQUNFX1JFRlMKIC8qIERlZmluZWQgaW4gb2JqZWN0cy5jIGJlY2F1c2UgaXQgdXNlcyBzdGF0aWMgZ2xvYmFscyBpZiB0aGF0IGZpbGUgKi8KIGV4dGVybiBQeU9iamVjdCAqX1B5X0dldE9iamVjdHMoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CkBAIC0xMDkwLDYgKzExMTQsOCBAQAogICAgIHsic2V0dHJhY2UiLCAgICAgICAgc3lzX3NldHRyYWNlLCBNRVRIX08sIHNldHRyYWNlX2RvY30sCiAgICAgeyJnZXR0cmFjZSIsICAgICAgICBzeXNfZ2V0dHJhY2UsIE1FVEhfTk9BUkdTLCBnZXR0cmFjZV9kb2N9LAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKKyAgICB7Il9kZWJ1Z21hbGxvY3N0YXRzIiwgc3lzX2RlYnVnbWFsbG9jc3RhdHMsIE1FVEhfVkFSQVJHUywKKyAgICAgZGVidWdtYWxsb2NzdGF0c19kb2N9LAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC0xMTc3LDcgKzEyMDMsNiBAQAogICAgIFB5T2JqZWN0ICpvcHRzOwogICAgIFB5T2JqZWN0ICpuYW1lID0gTlVMTCwgKnZhbHVlID0gTlVMTDsKICAgICBjb25zdCB3Y2hhcl90ICpuYW1lX2VuZDsKLSAgICBpbnQgcjsKIAogICAgIG9wdHMgPSBnZXRfeG9wdGlvbnMoKTsKICAgICBpZiAob3B0cyA9PSBOVUxMKQpAQCAtMTE5NSw3ICsxMjIwLDcgQEAKICAgICB9CiAgICAgaWYgKG5hbWUgPT0gTlVMTCB8fCB2YWx1ZSA9PSBOVUxMKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIHIgPSBQeURpY3RfU2V0SXRlbShvcHRzLCBuYW1lLCB2YWx1ZSk7CisgICAgUHlEaWN0X1NldEl0ZW0ob3B0cywgbmFtZSwgdmFsdWUpOwogICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIHJldHVybjsKQEAgLTEyNTIsMjEgKzEyNzcsMjIgQEAKICJcblwKIFN0YXRpYyBvYmplY3RzOlxuXAogXG5cCi1mbG9hdF9pbmZvIC0tIGEgZGljdCB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmbG9hdCBpbXBsZW1lbnRhdGlvbi5cblwKK2J1aWx0aW5fbW9kdWxlX25hbWVzIC0tIHR1cGxlIG9mIG1vZHVsZSBuYW1lcyBidWlsdCBpbnRvIHRoaXMgaW50ZXJwcmV0ZXJcblwKK2NvcHlyaWdodCAtLSBjb3B5cmlnaHQgbm90aWNlIHBlcnRhaW5pbmcgdG8gdGhpcyBpbnRlcnByZXRlclxuXAorZXhlY19wcmVmaXggLS0gcHJlZml4IHVzZWQgdG8gZmluZCB0aGUgbWFjaGluZS1zcGVjaWZpYyBQeXRob24gbGlicmFyeVxuXAorZXhlY3V0YWJsZSAtLSBhYnNvbHV0ZSBwYXRoIG9mIHRoZSBleGVjdXRhYmxlIGJpbmFyeSBvZiB0aGUgUHl0aG9uIGludGVycHJldGVyXG5cCitmbG9hdF9pbmZvIC0tIGEgc3RydWN0IHNlcXVlbmNlIHdpdGggaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZsb2F0IGltcGxlbWVudGF0aW9uLlxuXAorZmxvYXRfcmVwcl9zdHlsZSAtLSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgc3R5bGUgb2YgcmVwcigpIG91dHB1dCBmb3IgZmxvYXRzXG5cCitoZXh2ZXJzaW9uIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gZW5jb2RlZCBhcyBhIHNpbmdsZSBpbnRlZ2VyXG5cCitpbXBsZW1lbnRhdGlvbiAtLSBQeXRob24gaW1wbGVtZW50YXRpb24gaW5mb3JtYXRpb24uXG5cCiBpbnRfaW5mbyAtLSBhIHN0cnVjdCBzZXF1ZW5jZSB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnQgaW1wbGVtZW50YXRpb24uXG5cCiBtYXhzaXplIC0tIHRoZSBsYXJnZXN0IHN1cHBvcnRlZCBsZW5ndGggb2YgY29udGFpbmVycy5cblwKLW1heHVuaWNvZGUgLS0gdGhlIGxhcmdlc3Qgc3VwcG9ydGVkIGNoYXJhY3RlclxuXAotYnVpbHRpbl9tb2R1bGVfbmFtZXMgLS0gdHVwbGUgb2YgbW9kdWxlIG5hbWVzIGJ1aWx0IGludG8gdGhpcyBpbnRlcnByZXRlclxuXAotc3VidmVyc2lvbiAtLSBzdWJ2ZXJzaW9uIGluZm9ybWF0aW9uIG9mIHRoZSBidWlsZCBhcyB0dXBsZVxuXAorbWF4dW5pY29kZSAtLSB0aGUgdmFsdWUgb2YgdGhlIGxhcmdlc3QgVW5pY29kZSBjb2RlcG9pbnRcblwKK3BsYXRmb3JtIC0tIHBsYXRmb3JtIGlkZW50aWZpZXJcblwKK3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBQeXRob24gbGlicmFyeVxuXAordGhyZWFkX2luZm8gLS0gYSBzdHJ1Y3Qgc2VxdWVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGhyZWFkIGltcGxlbWVudGF0aW9uLlxuXAogdmVyc2lvbiAtLSB0aGUgdmVyc2lvbiBvZiB0aGlzIGludGVycHJldGVyIGFzIGEgc3RyaW5nXG5cCiB2ZXJzaW9uX2luZm8gLS0gdmVyc2lvbiBpbmZvcm1hdGlvbiBhcyBhIG5hbWVkIHR1cGxlXG5cCi1oZXh2ZXJzaW9uIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gZW5jb2RlZCBhcyBhIHNpbmdsZSBpbnRlZ2VyXG5cCi1jb3B5cmlnaHQgLS0gY29weXJpZ2h0IG5vdGljZSBwZXJ0YWluaW5nIHRvIHRoaXMgaW50ZXJwcmV0ZXJcblwKLXBsYXRmb3JtIC0tIHBsYXRmb3JtIGlkZW50aWZpZXJcblwKLWV4ZWN1dGFibGUgLS0gYWJzb2x1dGUgcGF0aCBvZiB0aGUgZXhlY3V0YWJsZSBiaW5hcnkgb2YgdGhlIFB5dGhvbiBpbnRlcnByZXRlclxuXAotcHJlZml4IC0tIHByZWZpeCB1c2VkIHRvIGZpbmQgdGhlIFB5dGhvbiBsaWJyYXJ5XG5cCi1leGVjX3ByZWZpeCAtLSBwcmVmaXggdXNlZCB0byBmaW5kIHRoZSBtYWNoaW5lLXNwZWNpZmljIFB5dGhvbiBsaWJyYXJ5XG5cCi1mbG9hdF9yZXByX3N0eWxlIC0tIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBzdHlsZSBvZiByZXByKCkgb3V0cHV0IGZvciBmbG9hdHNcblwKICIKICkKICNpZmRlZiBNU19XSU5ET1dTCkBAIC0xMzA1LDQzICsxMzMxLDYgQEAKICkKIC8qIGVuZCBvZiBzeXNfZG9jICovIDsKIAotLyogU3VidmVyc2lvbiBicmFuY2ggYW5kIHJldmlzaW9uIG1hbmFnZW1lbnQgKi8KLXN0YXRpYyBpbnQgc3ZuX2luaXRpYWxpemVkOwotc3RhdGljIGNoYXIgcGF0Y2hsZXZlbF9yZXZpc2lvbls1MF07IC8qIEp1c3QgdGhlIG51bWJlciAqLwotc3RhdGljIGNoYXIgYnJhbmNoWzUwXTsKLXN0YXRpYyBjaGFyIHNob3J0YnJhbmNoWzUwXTsKLXN0YXRpYyBjb25zdCBjaGFyICpzdm5fcmV2aXNpb247Ci0KLXN0YXRpYyB2b2lkCi1zdm52ZXJzaW9uX2luaXQodm9pZCkKLXsKLSAgICBpZiAoc3ZuX2luaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdm5faW5pdGlhbGl6ZWQgPSAxOwotICAgICpwYXRjaGxldmVsX3JldmlzaW9uID0gJ1wwJzsKLSAgICBzdHJjcHkoYnJhbmNoLCAiIik7Ci0gICAgc3RyY3B5KHNob3J0YnJhbmNoLCAidW5rbm93biIpOwotICAgIHN2bl9yZXZpc2lvbiA9ICIiOwotfQotCi0vKiBSZXR1cm4gc3ZudmVyc2lvbiBvdXRwdXQgaWYgYXZhaWxhYmxlLgotICAgRWxzZSByZXR1cm4gUmV2aXNpb24gb2YgcGF0Y2hsZXZlbC5oIGlmIG9uIGJyYW5jaC4KLSAgIEVsc2UgcmV0dXJuIGVtcHR5IHN0cmluZyAqLwotY29uc3QgY2hhcioKLVB5X1N1YnZlcnNpb25SZXZpc2lvbigpCi17Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgcmV0dXJuIHN2bl9yZXZpc2lvbjsKLX0KLQotY29uc3QgY2hhcioKLVB5X1N1YnZlcnNpb25TaG9ydEJyYW5jaCgpCi17Ci0gICAgc3ZudmVyc2lvbl9pbml0KCk7Ci0gICAgcmV0dXJuIHNob3J0YnJhbmNoOwotfQotCiAKIFB5RG9jX1NUUlZBUihmbGFnc19fZG9jX18sCiAic3lzLmZsYWdzXG5cCkBAIC0xMzUyLDcgKzEzNDEsNiBAQAogCiBzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9GaWVsZCBmbGFnc19maWVsZHNbXSA9IHsKICAgICB7ImRlYnVnIiwgICAgICAgICAgICAgICAgICAgIi1kIn0sCi0gICAgeyJkaXZpc2lvbl93YXJuaW5nIiwgICAgICAgICItUSJ9LAogICAgIHsiaW5zcGVjdCIsICAgICAgICAgICAgICAgICAiLWkifSwKICAgICB7ImludGVyYWN0aXZlIiwgICAgICAgICAgICAgIi1pIn0sCiAgICAgeyJvcHRpbWl6ZSIsICAgICAgICAgICAgICAgICItTyBvciAtT08ifSwKQEAgLTEzNzcsOSArMTM2NSw5IEBACiAgICAgZmxhZ3NfX2RvY19fLCAgICAgICAvKiBkb2MgKi8KICAgICBmbGFnc19maWVsZHMsICAgICAgIC8qIGZpZWxkcyAqLwogI2lmZGVmIFJJU0NPUwotICAgIDE0Ci0jZWxzZQogICAgIDEzCisjZWxzZQorICAgIDEyCiAjZW5kaWYKIH07CiAKQEAgLTEzOTcsNyArMTM4NSw2IEBACiAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTShzZXEsIHBvcysrLCBQeUxvbmdfRnJvbUxvbmcoZmxhZykpCiAKICAgICBTZXRGbGFnKFB5X0RlYnVnRmxhZyk7Ci0gICAgU2V0RmxhZyhQeV9EaXZpc2lvbldhcm5pbmdGbGFnKTsKICAgICBTZXRGbGFnKFB5X0luc3BlY3RGbGFnKTsKICAgICBTZXRGbGFnKFB5X0ludGVyYWN0aXZlRmxhZyk7CiAgICAgU2V0RmxhZyhQeV9PcHRpbWl6ZUZsYWcpOwpAQCAtMTQ5MSw2ICsxNDc4LDczIEBACiAgICAgcmV0dXJuIHZlcnNpb25faW5mbzsKIH0KIAorLyogc3lzLmltcGxlbWVudGF0aW9uIHZhbHVlcyAqLworI2RlZmluZSBOQU1FICJjcHl0aG9uIgorY29uc3QgY2hhciAqX1B5U3lzX0ltcGxOYW1lID0gTkFNRTsKKyNkZWZpbmUgUVVPVEUoYXJnKSAjYXJnCisjZGVmaW5lIFNUUklGWShuYW1lKSBRVU9URShuYW1lKQorI2RlZmluZSBNQUpPUiBTVFJJRlkoUFlfTUFKT1JfVkVSU0lPTikKKyNkZWZpbmUgTUlOT1IgU1RSSUZZKFBZX01JTk9SX1ZFUlNJT04pCisjZGVmaW5lIFRBRyBOQU1FICItIiBNQUpPUiBNSU5PUjsKK2NvbnN0IGNoYXIgKl9QeVN5c19JbXBsQ2FjaGVUYWcgPSBUQUc7CisjdW5kZWYgTkFNRQorI3VuZGVmIFFVT1RFCisjdW5kZWYgU1RSSUZZCisjdW5kZWYgTUFKT1IKKyN1bmRlZiBNSU5PUgorI3VuZGVmIFRBRworCitzdGF0aWMgUHlPYmplY3QgKgorbWFrZV9pbXBsX2luZm8oUHlPYmplY3QgKnZlcnNpb25faW5mbykKK3sKKyAgICBpbnQgcmVzOworICAgIFB5T2JqZWN0ICppbXBsX2luZm8sICp2YWx1ZSwgKm5zOworCisgICAgaW1wbF9pbmZvID0gUHlEaWN0X05ldygpOworICAgIGlmIChpbXBsX2luZm8gPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBwb3B1bGF0ZSB0aGUgZGljdCAqLworCisgICAgdmFsdWUgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhfUHlTeXNfSW1wbE5hbWUpOworICAgIGlmICh2YWx1ZSA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHJlcyA9IFB5RGljdF9TZXRJdGVtU3RyaW5nKGltcGxfaW5mbywgIm5hbWUiLCB2YWx1ZSk7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoX1B5U3lzX0ltcGxDYWNoZVRhZyk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiY2FjaGVfdGFnIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJ2ZXJzaW9uIiwgdmVyc2lvbl9pbmZvKTsKKyAgICBpZiAocmVzIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHZhbHVlID0gUHlMb25nX0Zyb21Mb25nKFBZX1ZFUlNJT05fSEVYKTsKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICByZXMgPSBQeURpY3RfU2V0SXRlbVN0cmluZyhpbXBsX2luZm8sICJoZXh2ZXJzaW9uIiwgdmFsdWUpOworICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgaWYgKHJlcyA8IDApCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAvKiBkaWN0IHJlYWR5ICovCisKKyAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoaW1wbF9pbmZvKTsKKyAgICBQeV9ERUNSRUYoaW1wbF9pbmZvKTsKKyAgICByZXR1cm4gbnM7CisKK2Vycm9yOgorICAgIFB5X0NMRUFSKGltcGxfaW5mbyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyBzdHJ1Y3QgUHlNb2R1bGVEZWYgc3lzbW9kdWxlID0gewogICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwKICAgICAic3lzIiwKQEAgLTE1MDYsNyArMTU2MCw3IEBACiBQeU9iamVjdCAqCiBfUHlTeXNfSW5pdCh2b2lkKQogewotICAgIFB5T2JqZWN0ICptLCAqdiwgKnN5c2RpY3Q7CisgICAgUHlPYmplY3QgKm0sICp2LCAqc3lzZGljdCwgKnZlcnNpb25faW5mbzsKICAgICBjaGFyICpzOwogCiAgICAgbSA9IFB5TW9kdWxlX0NyZWF0ZSgmc3lzbW9kdWxlKTsKQEAgLTE1NDcsMTAgKzE2MDEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFZlcnNpb24oKSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImhleHZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Gcm9tTG9uZyhQWV9WRVJTSU9OX0hFWCkpOwotICAgIHN2bnZlcnNpb25faW5pdCgpOwotICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInN1YnZlcnNpb24iLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHNzcykiLCAiQ1B5dGhvbiIsIGJyYW5jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ZuX3JldmlzaW9uKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiX21lcmN1cmlhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoc3p6KSIsICJDUHl0aG9uIiwgX1B5X2hnaWRlbnRpZmllcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGd2ZXJzaW9uKCkpKTsKQEAgLTE1NjksNiArMTYxOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRQcmVmaXgoKSwgLTEpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJleGVjX3ByZWZpeCIsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldEV4ZWNQcmVmaXgoKSwgLTEpKTsKKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJiYXNlX3ByZWZpeCIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyKFB5X0dldFByZWZpeCgpLCAtMSkpOworICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImJhc2VfZXhlY19wcmVmaXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21XaWRlQ2hhcihQeV9HZXRFeGVjUHJlZml4KCksIC0xKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygibWF4c2l6ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbVNzaXplX3QoUFlfU1NJWkVfVF9NQVgpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJmbG9hdF9pbmZvIiwKQEAgLTE1ODEsNyArMTYzNSw3IEBACiAgICAgU0VUX1NZU19GUk9NX1NUUklORygiaGFzaF9pbmZvIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9oYXNoX2luZm8oKSk7CiAgICAgU0VUX1NZU19GUk9NX1NUUklORygibWF4dW5pY29kZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoUHlVbmljb2RlX0dldE1heCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUxvbmdfRnJvbUxvbmcoMHgxMEZGRkYpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJidWlsdGluX21vZHVsZV9uYW1lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2J1aWx0aW5fbW9kdWxlX25hbWVzKCkpOwogICAgIHsKQEAgLTE2MjYsMTEgKzE2ODAsMTUgQEAKICAgICAvKiB2ZXJzaW9uX2luZm8gKi8KICAgICBpZiAoVmVyc2lvbkluZm9UeXBlLnRwX25hbWUgPT0gMCkKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmVmVyc2lvbkluZm9UeXBlLCAmdmVyc2lvbl9pbmZvX2Rlc2MpOwotICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInZlcnNpb25faW5mbyIsIG1ha2VfdmVyc2lvbl9pbmZvKCkpOworICAgIHZlcnNpb25faW5mbyA9IG1ha2VfdmVyc2lvbl9pbmZvKCk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygidmVyc2lvbl9pbmZvIiwgdmVyc2lvbl9pbmZvKTsKICAgICAvKiBwcmV2ZW50IHVzZXIgZnJvbSBjcmVhdGluZyBuZXcgaW5zdGFuY2VzICovCiAgICAgVmVyc2lvbkluZm9UeXBlLnRwX2luaXQgPSBOVUxMOwogICAgIFZlcnNpb25JbmZvVHlwZS50cF9uZXcgPSBOVUxMOwogCisgICAgLyogaW1wbGVtZW50YXRpb24gKi8KKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJpbXBsZW1lbnRhdGlvbiIsIG1ha2VfaW1wbF9pbmZvKHZlcnNpb25faW5mbykpOworCiAgICAgLyogZmxhZ3MgKi8KICAgICBpZiAoRmxhZ3NUeXBlLnRwX25hbWUgPT0gMCkKICAgICAgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZSgmRmxhZ3NUeXBlLCAmZmxhZ3NfZGVzYyk7CkBAIC0xNjU4LDYgKzE3MTYsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJsZWdhY3kiKSk7CiAjZW5kaWYKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgU0VUX1NZU19GUk9NX1NUUklORygidGhyZWFkX2luZm8iLCBQeVRocmVhZF9HZXRJbmZvKCkpOworI2VuZGlmCisKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTgxMiw3ICsxODc0LDcgQEAKICAgICAgICAgdGhlIGFyZ3VtZW50IG11c3QgYmUgdGhlIGZ1bGwgcGF0aCBhbnl3YXkuICovCiAgICAgICAgIHdjaGFyX3QgKnB0ZW1wOwogICAgICAgICBpZiAoR2V0RnVsbFBhdGhOYW1lVyhhcmd2MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihmdWxscGF0aCkvc2l6ZW9mKGZ1bGxwYXRoWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0FSUkFZX0xFTkdUSChmdWxscGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxscGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwdGVtcCkpIHsKICAgICAgICAgICAgIGFyZ3YwID0gZnVsbHBhdGg7CkBAIC0xODgxLDExICsxOTQzLDEyIEBACiB7CiAgICAgUHlPYmplY3QgKndyaXRlciA9IE5VTEwsICphcmdzID0gTlVMTCwgKnJlc3VsdCA9IE5VTEw7CiAgICAgaW50IGVycjsKKyAgICBfUHlfSURFTlRJRklFUih3cml0ZSk7CiAKICAgICBpZiAoZmlsZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB3cml0ZXIgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGZpbGUsICJ3cml0ZSIpOworICAgIHdyaXRlciA9IF9QeU9iamVjdF9HZXRBdHRySWQoZmlsZSwgJlB5SWRfd3JpdGUpOwogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZC5jIGIvUHl0aG9uL3RocmVhZC5jCmluZGV4IGQyMjQwNDYuLmU1NWQzNDIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWQuYworKysgYi9QeXRob24vdGhyZWFkLmMKQEAgLTcsNyArNyw2IEBACiAKICNpbmNsdWRlICJQeXRob24uaCIKIAotCiAjaWZuZGVmIF9QT1NJWF9USFJFQURTCiAvKiBUaGlzIG1lYW5zIHB0aHJlYWRzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbGliYyBoZWFkZXJzLCBoZW5jZSB0aGUgbWFjcm8KICAgIG5vdCBwcmVzZW50IGluIHVuaXN0ZC5oLiBCdXQgdGhleSBzdGlsbCBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgYW4gZXh0ZXJuYWwKQEAgLTI3LDE4ICsyNiw2IEBACiAKICNpZm5kZWYgX1BPU0lYX1RIUkVBRFMKIAotI2lmZGVmIF9fc2dpCi0jZGVmaW5lIFNHSV9USFJFQURTCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfVEhSRUFEX0gKLSNkZWZpbmUgU09MQVJJU19USFJFQURTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoc3VuKSAmJiAhZGVmaW5lZChTT0xBUklTX1RIUkVBRFMpCi0jZGVmaW5lIFNVTl9MV1AKLSNlbmRpZgotCiAvKiBDaGVjayBpZiB3ZSdyZSBydW5uaW5nIG9uIEhQLVVYIGFuZCBfU0NfVEhSRUFEUyBpcyBkZWZpbmVkLiBJZiBzbywgdGhlbgogICAgZW5vdWdoIG9mIHRoZSBQb3NpeCB0aHJlYWRzIHBhY2thZ2UgaXMgaW1wbGVtZW50ZWQgdG8gc3VwcG9ydCBweXRob24KICAgIHRocmVhZHMuCkBAIC05NCw0NyArODEsMjEgQEAKICAgIG9yIHRoZSBzaXplIHNwZWNpZmllZCBieSB0aGUgVEhSRUFEX1NUQUNLX1NJWkUgbWFjcm8uICovCiBzdGF0aWMgc2l6ZV90IF9weXRocmVhZF9zdGFja3NpemUgPSAwOwogCi0jaWZkZWYgU0dJX1RIUkVBRFMKLSNlcnJvciBTR0kgSXJpeCB0aHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX3NnaS5oIgotI2VuZGlmCi0KLSNpZmRlZiBTT0xBUklTX1RIUkVBRFMKLSNpbmNsdWRlICJ0aHJlYWRfc29sYXJpcy5oIgotI2VuZGlmCi0KLSNpZmRlZiBTVU5fTFdQCi0jZXJyb3IgU3VuT1MgbGlnaHR3ZWlnaHQgcHJvY2Vzc2VzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX2x3cC5oIgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1BUSAotI2Vycm9yIEdOVSBwdGggdGhyZWFkcyBhcmUgbm93IHVuc3VwcG9ydGVkLCBhbmQgY29kZSB3aWxsIGJlIHJlbW92ZWQgaW4gMy4zLgotI2luY2x1ZGUgInRocmVhZF9wdGguaCIKLSN1bmRlZiBfUE9TSVhfVEhSRUFEUwotI2VuZGlmCi0KICNpZmRlZiBfUE9TSVhfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJwdGhyZWFkIgogI2luY2x1ZGUgInRocmVhZF9wdGhyZWFkLmgiCiAjZW5kaWYKIAotI2lmZGVmIENfVEhSRUFEUwotI2Vycm9yIE1hY2ggQyBUaHJlYWRzIGFyZSBub3cgdW5zdXBwb3J0ZWQsIGFuZCBjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjMuCi0jaW5jbHVkZSAidGhyZWFkX2N0aHJlYWQuaCIKLSNlbmRpZgotCiAjaWZkZWYgTlRfVEhSRUFEUworI2RlZmluZSBQWVRIUkVBRF9OQU1FICJudCIKICNpbmNsdWRlICJ0aHJlYWRfbnQuaCIKICNlbmRpZgogCiAjaWZkZWYgT1MyX1RIUkVBRFMKKyNkZWZpbmUgUFlUSFJFQURfTkFNRSAib3MyIgogI2luY2x1ZGUgInRocmVhZF9vczIuaCIKICNlbmRpZgogCi0jaWZkZWYgUExBTjlfVEhSRUFEUwotI2luY2x1ZGUgInRocmVhZF9wbGFuOS5oIgotI2VuZGlmCi0KIC8qCiAjaWZkZWYgRk9PQkFSX1RIUkVBRFMKICNpbmNsdWRlICJ0aHJlYWRfZm9vYmFyLmgiCkBAIC00MDksMyArMzcwLDg0IEBACiB9CiAKICNlbmRpZiAvKiBQeV9IQVZFX05BVElWRV9UTFMgKi8KKworUHlEb2NfU1RSVkFSKHRocmVhZGluZm9fX2RvY19fLAorInN5cy50aHJlYWRfaW5mb1xuXAorXG5cCitBIHN0cnVjdCBzZXF1ZW5jZSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQgaW1wbGVtZW50YXRpb24uIik7CisKK3N0YXRpYyBQeVN0cnVjdFNlcXVlbmNlX0ZpZWxkIHRocmVhZGluZm9fZmllbGRzW10gPSB7CisgICAgeyJuYW1lIiwgICAgIm5hbWUgb2YgdGhlIHRocmVhZCBpbXBsZW1lbnRhdGlvbiJ9LAorICAgIHsibG9jayIsICAgICJuYW1lIG9mIHRoZSBsb2NrIGltcGxlbWVudGF0aW9uIn0sCisgICAgeyJ2ZXJzaW9uIiwgIm5hbWUgYW5kIHZlcnNpb24gb2YgdGhlIHRocmVhZCBsaWJyYXJ5In0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIHRocmVhZGluZm9fZGVzYyA9IHsKKyAgICAic3lzLnRocmVhZF9pbmZvIiwgICAgICAgICAgIC8qIG5hbWUgKi8KKyAgICB0aHJlYWRpbmZvX19kb2NfXywgICAgICAgICAgIC8qIGRvYyAqLworICAgIHRocmVhZGluZm9fZmllbGRzLCAgICAgICAgICAgLyogZmllbGRzICovCisgICAgMworfTsKKworc3RhdGljIFB5VHlwZU9iamVjdCBUaHJlYWRJbmZvVHlwZTsKKworUHlPYmplY3QqCitQeVRocmVhZF9HZXRJbmZvKHZvaWQpCit7CisgICAgUHlPYmplY3QgKnRocmVhZGluZm8sICp2YWx1ZTsKKyAgICBpbnQgcG9zID0gMDsKKyNpZiAoZGVmaW5lZChfUE9TSVhfVEhSRUFEUykgJiYgZGVmaW5lZChIQVZFX0NPTkZTVFIpIFwKKyAgICAgJiYgZGVmaW5lZChfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTikpCisgICAgY2hhciBidWZmZXJbMjU1XTsKKyAgICBpbnQgbGVuOworI2VuZGlmCisKKyAgICBpZiAoVGhyZWFkSW5mb1R5cGUudHBfbmFtZSA9PSAwKQorICAgICAgICBQeVN0cnVjdFNlcXVlbmNlX0luaXRUeXBlKCZUaHJlYWRJbmZvVHlwZSwgJnRocmVhZGluZm9fZGVzYyk7CisKKyAgICB0aHJlYWRpbmZvID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlRocmVhZEluZm9UeXBlKTsKKyAgICBpZiAodGhyZWFkaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoUFlUSFJFQURfTkFNRSk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHRocmVhZGluZm8pOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh0aHJlYWRpbmZvLCBwb3MrKywgdmFsdWUpOworCisjaWZkZWYgX1BPU0lYX1RIUkVBRFMKKyNpZmRlZiBVU0VfU0VNQVBIT1JFUworICAgIHZhbHVlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoInNlbWFwaG9yZSIpOworI2Vsc2UKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCJtdXRleCtjb25kIik7CisjZW5kaWYKKyAgICBpZiAodmFsdWUgPT0gTlVMTCkgeworICAgICAgICBQeV9ERUNSRUYodGhyZWFkaW5mbyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyNlbHNlCisgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIHZhbHVlID0gUHlfTm9uZTsKKyNlbmRpZgorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGhyZWFkaW5mbywgcG9zKyssIHZhbHVlKTsKKworI2lmIChkZWZpbmVkKF9QT1NJWF9USFJFQURTKSAmJiBkZWZpbmVkKEhBVkVfQ09ORlNUUikgXAorICAgICAmJiBkZWZpbmVkKF9DU19HTlVfTElCUFRIUkVBRF9WRVJTSU9OKSkKKyAgICB2YWx1ZSA9IE5VTEw7CisgICAgbGVuID0gY29uZnN0cihfQ1NfR05VX0xJQlBUSFJFQURfVkVSU0lPTiwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgaWYgKDEgPCBsZW4gJiYgbGVuIDwgc2l6ZW9mKGJ1ZmZlcikpIHsKKyAgICAgICAgdmFsdWUgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShidWZmZXIsIGxlbi0xKTsKKyAgICAgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgIH0KKyAgICBpZiAodmFsdWUgPT0gTlVMTCkKKyNlbmRpZgorICAgIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICB2YWx1ZSA9IFB5X05vbmU7CisgICAgfQorICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odGhyZWFkaW5mbywgcG9zKyssIHZhbHVlKTsKKyAgICByZXR1cm4gdGhyZWFkaW5mbzsKK30KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfY3RocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiM2UzOTAuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9jdGhyZWFkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotCi0jaWZkZWYgTUFDSF9DX1RIUkVBRFMKLSNpbmNsdWRlIDxtYWNoL2N0aHJlYWRzLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEhVUkRfQ19USFJFQURTCi0jaW5jbHVkZSA8Y3RocmVhZHMuaD4KLSNlbmRpZgotCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkCi1QeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLSNpZm5kZWYgSFVSRF9DX1RIUkVBRFMKLSAgICAvKiBSb2xhbmQgTWNHcmF0aCBzYWlkIHRoaXMgc2hvdWxkIG5vdCBiZSB1c2VkIHNpbmNlIHRoaXMgaXMKLSAgICBkb25lIHdoaWxlIGxpbmtpbmcgdG8gdGhyZWFkcyAqLwotICAgIGN0aHJlYWRfaW5pdCgpOwotI2Vsc2UKLS8qIGRvIG5vdGhpbmcgKi8KLSAgICA7Ci0jZW5kaWYKLX0KLQotLyoKLSAqIFRocmVhZCBzdXBwb3J0LgotICovCi1sb25nCi1QeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSAwOyAgICAgICAgICAgIC8qIGluaXQgbm90IG5lZWRlZCB3aGVuIFNPTEFSSVNfVEhSRUFEUyBhbmQgKi8KLSAgICAgICAgICAgICAgICAvKiBDX1RIUkVBRFMgaW1wbGVtZW50ZWQgcHJvcGVybHkgKi8KLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgLyogbG9va3MgbGlrZSBzb2xhcmlzIGRldGFjaGVzIHRoZSB0aHJlYWQgdG8gbmV2ZXIgcmVqb2luCi0gICAgICogc28gd2VsbCBkbyBpdCBoZXJlCi0gICAgICovCi0gICAgY3RocmVhZF9kZXRhY2goY3RocmVhZF9mb3JrKChjdGhyZWFkX2ZuX3QpIGZ1bmMsIGFyZykpOwotICAgIHJldHVybiBzdWNjZXNzIDwgMCA/IC0xIDogMDsKLX0KLQotbG9uZwotUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgcmV0dXJuIChsb25nKSBjdGhyZWFkX3NlbGYoKTsKLX0KLQotdm9pZAotUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICBjdGhyZWFkX2V4aXQoMCk7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jawotUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIG11dGV4X3QgbG9jazsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBsb2NrID0gbXV0ZXhfYWxsb2MoKTsKLSAgICBpZiAobXV0ZXhfaW5pdChsb2NrKSkgewotICAgICAgICBwZXJyb3IoIm11dGV4X2luaXQiKTsKLSAgICAgICAgZnJlZSgodm9pZCAqKSBsb2NrKTsKLSAgICAgICAgbG9jayA9IDA7Ci0gICAgfQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCkgLT4gJXBcbiIsIGxvY2spKTsKLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgbG9jazsKLX0KLQotdm9pZAotUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG11dGV4X2ZyZWUobG9jayk7Ci19Ci0KLWludAotUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3MgPSBGQUxTRTsKLQotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSBjYWxsZWRcbiIsIGxvY2ssIHdhaXRmbGFnKSk7Ci0gICAgaWYgKHdhaXRmbGFnKSB7ICAgICAgICAgICAgIC8qIGJsb2NraW5nICovCi0gICAgICAgIG11dGV4X2xvY2soKG11dGV4X3QpbG9jayk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBUUlVFOwotICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBub24gYmxvY2tpbmcgKi8KLSAgICAgICAgc3VjY2VzcyA9IG11dGV4X3RyeV9sb2NrKChtdXRleF90KWxvY2spOwotICAgIH0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBtdXRleF91bmxvY2soKG11dGV4X3QgKWxvY2spOwotfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9sd3AuaCBiL1B5dGhvbi90aHJlYWRfbHdwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhN2IzN2EuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9sd3AuaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxsd3AvbHdwLmg+Ci0jaW5jbHVkZSA8bHdwL3N0YWNrZGVwLmg+Ci0KLSNkZWZpbmUgU1RBQ0tTSVpFICAgICAgIDEwMDAgICAgLyogc3RhY2tzaXplIGZvciBhIHRocmVhZCAqLwotI2RlZmluZSBOU1RBQ0tTICAgICAgICAgMiAgICAgICAvKiAjIHN0YWNrcyB0byBiZSBwdXQgaW4gY2FjaGUgaW5pdGlhbGx5ICovCi0KLXN0cnVjdCBsb2NrIHsKLSAgICBpbnQgbG9ja19sb2NrZWQ7Ci0gICAgY3ZfdCBsb2NrX2NvbmR2YXI7Ci0gICAgbW9uX3QgbG9ja19tb25pdG9yOwotfTsKLQotCi0vKgotICogSW5pdGlhbGl6YXRpb24uCi0gKi8KLXN0YXRpYyB2b2lkIFB5VGhyZWFkX19pbml0X3RocmVhZCh2b2lkKQotewotICAgIGx3cF9zZXRzdGtjYWNoZShTVEFDS1NJWkUsIE5TVEFDS1MpOwotfQotCi0vKgotICogVGhyZWFkIHN1cHBvcnQuCi0gKi8KLQotCi1sb25nIFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICB0aHJlYWRfdCB0aWQ7Ci0gICAgaW50IHN1Y2Nlc3M7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBzdWNjZXNzID0gbHdwX2NyZWF0ZSgmdGlkLCBmdW5jLCBNSU5QUklPLCAwLCBsd3BfbmV3c3RrKCksIDEsIGFyZyk7Ci0gICAgcmV0dXJuIHN1Y2Nlc3MgPCAwID8gLTEgOiAwOwotfQotCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICB0aHJlYWRfdCB0aWQ7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBpZiAobHdwX3NlbGYoJnRpZCkgPCAwKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIHRpZC50aHJlYWRfaWQ7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZXhpdF90aHJlYWQodm9pZCkKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgZXhpdCgwKTsKLSAgICBsd3BfZGVzdHJveShTRUxGKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICBzdHJ1Y3QgbG9jayAqbG9jazsKLSAgICBleHRlcm4gY2hhciAqbWFsbG9jKHNpemVfdCk7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgbG9jayA9IChzdHJ1Y3QgbG9jayAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBsb2NrKSk7Ci0gICAgbG9jay0+bG9ja19sb2NrZWQgPSAwOwotICAgICh2b2lkKSBtb25fY3JlYXRlKCZsb2NrLT5sb2NrX21vbml0b3IpOwotICAgICh2b2lkKSBjdl9jcmVhdGUoJmxvY2stPmxvY2tfY29uZHZhciwgbG9jay0+bG9ja19tb25pdG9yKTsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwotICAgIG1vbl9kZXN0cm95KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgZnJlZSgoY2hhciAqKSBsb2NrKTsKLX0KLQotaW50IFB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIGNhbGxlZFxuIiwgbG9jaywgd2FpdGZsYWcpKTsKLSAgICBzdWNjZXNzID0gMDsKLQotICAgICh2b2lkKSBtb25fZW50ZXIoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19tb25pdG9yKTsKLSAgICBpZiAod2FpdGZsYWcpCi0gICAgICAgIHdoaWxlICgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCkKLSAgICAgICAgICAgIGN2X3dhaXQoKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19jb25kdmFyKTsKLSAgICBpZiAoISgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbG9ja2VkKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSAxOwotICAgICAgICAoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2xvY2tlZCA9IDE7Ci0gICAgfQotICAgIGN2X2Jyb2FkY2FzdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIG1vbl9leGl0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkIFB5VGhyZWFkX3JlbGVhc2VfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfcmVsZWFzZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICAodm9pZCkgbW9uX2VudGVyKCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci0gICAgKChzdHJ1Y3QgbG9jayAqKSBsb2NrKS0+bG9ja19sb2NrZWQgPSAwOwotICAgIGN2X2Jyb2FkY2FzdCgoKHN0cnVjdCBsb2NrICopIGxvY2spLT5sb2NrX2NvbmR2YXIpOwotICAgIG1vbl9leGl0KCgoc3RydWN0IGxvY2sgKikgbG9jayktPmxvY2tfbW9uaXRvcik7Ci19CmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX250LmggYi9QeXRob24vdGhyZWFkX250LmgKaW5kZXggZDFiYjBlNS4uOTM4YmYxZSAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9udC5oCisrKyBiL1B5dGhvbi90aHJlYWRfbnQuaApAQCAtOSw2ICs5LDEwOSBAQAogI2luY2x1ZGUgPHByb2Nlc3MuaD4KICNlbmRpZgogCisvKiBvcHRpb25zICovCisjaWZuZGVmIF9QWV9VU0VfQ1ZfTE9DS1MKKyNkZWZpbmUgX1BZX1VTRV9DVl9MT0NLUyAxICAgICAvKiB1c2UgbG9ja3MgYmFzZWQgb24gY29uZCB2YXJzICovCisjZW5kaWYKKworLyogTm93LCBkZWZpbmUgYSBub24tcmVjdXJzaXZlIG11dGV4IHVzaW5nIGVpdGhlciBjb25kaXRpb24gdmFyaWFibGVzCisgKiBhbmQgY3JpdGljYWwgc2VjdGlvbnMgKGZhc3QpIG9yIHVzaW5nIG9wZXJhdGluZyBzeXN0ZW0gbXV0ZXhlcworICogKHNsb3cpCisgKi8KKworI2lmIF9QWV9VU0VfQ1ZfTE9DS1MKKworI2luY2x1ZGUgImNvbmR2YXIuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX05STVVURVgKK3sKKyAgICBQeU1VVEVYX1QgY3M7CisgICAgUHlDT05EX1QgY3Y7CisgICAgaW50IGxvY2tlZDsKK30gTlJNVVRFWDsKK3R5cGVkZWYgTlJNVVRFWCAqUE5STVVURVg7CisKK1BOUk1VVEVYCitBbGxvY05vblJlY3Vyc2l2ZU11dGV4KCkKK3sKKyAgICBQTlJNVVRFWCBtID0gKFBOUk1VVEVYKW1hbGxvYyhzaXplb2YoTlJNVVRFWCkpOworICAgIGlmICghbSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKFB5Q09ORF9JTklUKCZtLT5jdikpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoUHlNVVRFWF9JTklUKCZtLT5jcykpIHsKKyAgICAgICAgUHlDT05EX0ZJTkkoJm0tPmN2KTsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBtLT5sb2NrZWQgPSAwOworICAgIHJldHVybiBtOworZmFpbDoKKyAgICBmcmVlKG0pOworICAgIHJldHVybiBOVUxMOworfQorCitWT0lECitGcmVlTm9uUmVjdXJzaXZlTXV0ZXgoUE5STVVURVggbXV0ZXgpCit7CisgICAgaWYgKG11dGV4KSB7CisgICAgICAgIFB5Q09ORF9GSU5JKCZtdXRleC0+Y3YpOworICAgICAgICBQeU1VVEVYX0ZJTkkoJm11dGV4LT5jcyk7CisgICAgICAgIGZyZWUobXV0ZXgpOworICAgIH0KK30KKworRFdPUkQKK0VudGVyTm9uUmVjdXJzaXZlTXV0ZXgoUE5STVVURVggbXV0ZXgsIERXT1JEIG1pbGxpc2Vjb25kcykKK3sKKyAgICBEV09SRCByZXN1bHQgPSBXQUlUX09CSkVDVF8wOworICAgIGlmIChQeU1VVEVYX0xPQ0soJm11dGV4LT5jcykpCisgICAgICAgIHJldHVybiBXQUlUX0ZBSUxFRDsKKyAgICBpZiAobWlsbGlzZWNvbmRzID09IElORklOSVRFKSB7CisgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7CisgICAgICAgICAgICBpZiAoUHlDT05EX1dBSVQoJm11dGV4LT5jdiwgJm11dGV4LT5jcykpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBXQUlUX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAobWlsbGlzZWNvbmRzICE9IDApIHsKKyAgICAgICAgLyogd2FpdCBhdCBsZWFzdCB1bnRpbCB0aGUgdGFyZ2V0ICovCisgICAgICAgIERXT1JEIG5vdywgdGFyZ2V0ID0gR2V0VGlja0NvdW50KCkgKyBtaWxsaXNlY29uZHM7CisgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7CisgICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCBtaWxsaXNlY29uZHMqMTAwMCkgPCAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gV0FJVF9GQUlMRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBub3cgPSBHZXRUaWNrQ291bnQoKTsKKyAgICAgICAgICAgIGlmICh0YXJnZXQgPD0gbm93KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbWlsbGlzZWNvbmRzID0gdGFyZ2V0LW5vdzsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIW11dGV4LT5sb2NrZWQpIHsKKyAgICAgICAgbXV0ZXgtPmxvY2tlZCA9IDE7CisgICAgICAgIHJlc3VsdCA9IFdBSVRfT0JKRUNUXzA7CisgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gV0FJVF9PQkpFQ1RfMCkKKyAgICAgICAgcmVzdWx0ID0gV0FJVF9USU1FT1VUOworICAgIC8qIGVsc2UsIGl0IGlzIFdBSVRfRkFJTEVEICovCisgICAgUHlNVVRFWF9VTkxPQ0soJm11dGV4LT5jcyk7IC8qIG11c3QgaWdub3JlIHJlc3VsdCBoZXJlICovCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQk9PTAorTGVhdmVOb25SZWN1cnNpdmVNdXRleChQTlJNVVRFWCBtdXRleCkKK3sKKyAgICBCT09MIHJlc3VsdDsKKyAgICBpZiAoUHlNVVRFWF9MT0NLKCZtdXRleC0+Y3MpKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgbXV0ZXgtPmxvY2tlZCA9IDA7CisgICAgcmVzdWx0ID0gUHlDT05EX1NJR05BTCgmbXV0ZXgtPmN2KTsKKyAgICByZXN1bHQgJj0gUHlNVVRFWF9VTkxPQ0soJm11dGV4LT5jcyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30gICAgCisKKyNlbHNlIC8qIGlmICEgX1BZX1VTRV9DVl9MT0NLUyAqLworCisvKiBOUi1sb2NrcyBiYXNlZCBvbiBhIGtlcm5lbCBtdXRleCAqLwogI2RlZmluZSBQTlJNVVRFWCBIQU5ETEUKIAogUE5STVVURVgKQEAgLTM1LDYgKzEzOCw3IEBACiB7CiAgICAgcmV0dXJuIFJlbGVhc2VTZW1hcGhvcmUobXV0ZXgsIDEsIE5VTEwpOwogfQorI2VuZGlmIC8qIF9QWV9VU0VfQ1ZfTE9DS1MgKi8KIAogbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpOwogCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkX3B0aC5oIGIvUHl0aG9uL3RocmVhZF9wdGguaAppbmRleCA4MmEwMGU3Li41NzA0MjY2IDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX3B0aC5oCisrKyBiL1B5dGhvbi90aHJlYWRfcHRoLmgKQEAgLTY5LDkgKzY5LDggQEAKICAgICB2b2xhdGlsZSBwdGhfdCB0aHJlYWRpZDsKICAgICBpZiAoIWluaXRpYWxpemVkKQogICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIC8qIEp1bXAgdGhyb3VnaCBzb21lIGhvb3BzIGZvciBBbHBoYSBPU0YvMSAqLwogICAgIHRocmVhZGlkID0gcHRoX3NlbGYoKTsKLSAgICByZXR1cm4gKGxvbmcpICoobG9uZyAqKSAmdGhyZWFkaWQ7CisgICAgcmV0dXJuIChsb25nKSB0aHJlYWRpZDsKIH0KIAogdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmggYi9QeXRob24vdGhyZWFkX3B0aHJlYWQuaAppbmRleCAzY2RlMDM1Li41MDA3YWFmIDEwMDY0NAotLS0gYS9QeXRob24vdGhyZWFkX3B0aHJlYWQuaAorKysgYi9QeXRob24vdGhyZWFkX3B0aHJlYWQuaApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgKiBJbml0aWFsaXphdGlvbi4KICAqLwogCi0jaWZkZWYgX0hBVkVfQlNESQorI2lmIGRlZmluZWQoX0hBVkVfQlNESSkKIHN0YXRpYwogdm9pZCBfbm9vcCh2b2lkKQogewpAQCAtMjQ0LDggKzI0NCw3IEBACiAgICBob3NlZCIgYmVjYXVzZToKICAgICAgLSBJdCBkb2VzIG5vdCBndWFyYW50ZWUgdGhlIHByb21pc2UgdGhhdCBhIG5vbi16ZXJvIGludGVnZXIgaXMgcmV0dXJuZWQuCiAgICAgIC0gVGhlIGNhc3QgdG8gbG9uZyBpcyBpbmhlcmVudGx5IHVuc2FmZS4KLSAgICAgLSBJdCBpcyBub3QgY2xlYXIgdGhhdCB0aGUgJ3ZvbGF0aWxlJyAoZm9yIEFJWD8pIGFuZCB1Z2x5IGNhc3RpbmcgaW4gdGhlCi0gICAgICAgbGF0dGVyIHJldHVybiBzdGF0ZW1lbnQgKGZvciBBbHBoYSBPU0YvMSkgYXJlIGFueSBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAtIEl0IGlzIG5vdCBjbGVhciB0aGF0IHRoZSAndm9sYXRpbGUnIChmb3IgQUlYPykgYXJlIGFueSBsb25nZXIgbmVjZXNzYXJ5LgogKi8KIGxvbmcKIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKQEAgLTI1MywxMyArMjUyLDggQEAKICAgICB2b2xhdGlsZSBwdGhyZWFkX3QgdGhyZWFkaWQ7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICAvKiBKdW1wIHRocm91Z2ggc29tZSBob29wcyBmb3IgQWxwaGEgT1NGLzEgKi8KICAgICB0aHJlYWRpZCA9IHB0aHJlYWRfc2VsZigpOwotI2lmIFNJWkVPRl9QVEhSRUFEX1QgPD0gU0laRU9GX0xPTkcKICAgICByZXR1cm4gKGxvbmcpIHRocmVhZGlkOwotI2Vsc2UKLSAgICByZXR1cm4gKGxvbmcpICoobG9uZyAqKSAmdGhyZWFkaWQ7Ci0jZW5kaWYKIH0KIAogdm9pZApAQCAtNDQ5LDEyICs0NDMsMTUgQEAKIAogICAgIGRwcmludGYoKCJQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgbG9jaykpOwogCi0gICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF9kZXN0cm95KCAmdGhlbG9jay0+bXV0ICk7Ci0gICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X2Rlc3Ryb3kiKTsKLQorICAgIC8qIHNvbWUgcHRocmVhZC1saWtlIGltcGxlbWVudGF0aW9ucyB0aWUgdGhlIG11dGV4IHRvIHRoZSBjb25kCisgICAgICogYW5kIG11c3QgaGF2ZSB0aGUgY29uZCBkZXN0cm95ZWQgZmlyc3QuCisgICAgICovCiAgICAgc3RhdHVzID0gcHRocmVhZF9jb25kX2Rlc3Ryb3koICZ0aGVsb2NrLT5sb2NrX3JlbGVhc2VkICk7CiAgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX2NvbmRfZGVzdHJveSIpOwogCisgICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF9kZXN0cm95KCAmdGhlbG9jay0+bXV0ICk7CisgICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X2Rlc3Ryb3kiKTsKKwogICAgIGZyZWUoKHZvaWQgKil0aGVsb2NrKTsKIH0KIApAQCAtNTM3LDEyICs1MzQsMTIgQEAKIAogICAgIHRoZWxvY2stPmxvY2tlZCA9IDA7CiAKLSAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOwotICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF91bmxvY2tbM10iKTsKLQogICAgIC8qIHdha2UgdXAgc29tZW9uZSAoYW55b25lLCBpZiBhbnkpIHdhaXRpbmcgb24gdGhlIGxvY2sgKi8KICAgICBzdGF0dXMgPSBwdGhyZWFkX2NvbmRfc2lnbmFsKCAmdGhlbG9jay0+bG9ja19yZWxlYXNlZCApOwogICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9jb25kX3NpZ25hbCIpOworCisgICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF91bmxvY2soICZ0aGVsb2NrLT5tdXQgKTsKKyAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfdW5sb2NrWzNdIik7CiB9CiAKICNlbmRpZiAvKiBVU0VfU0VNQVBIT1JFUyAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9zZ2kuaCBiL1B5dGhvbi90aHJlYWRfc2dpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3MWFiMmMuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9zZ2kuaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0jaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci0jaW5jbHVkZSA8dWxvY2tzLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLQotI2RlZmluZSBIRFJfU0laRSAgICAgICAgMjY4MCAgICAvKiBzaXplb2YodXNoZHJfdCkgKi8KLSNkZWZpbmUgTUFYUFJPQyAgICAgICAgIDEwMCAgICAgLyogbWF4ICMgb2YgdGhyZWFkcyB0aGF0IGNhbiBiZSBzdGFydGVkICovCi0KLXN0YXRpYyB1c3B0cl90ICpzaGFyZWRfYXJlbmE7Ci1zdGF0aWMgdWxvY2tfdCBjb3VudF9sb2NrOyAgICAgIC8qIHByb3RlY3Rpb24gZm9yIHNvbWUgdmFyaWFibGVzICovCi1zdGF0aWMgdWxvY2tfdCB3YWl0X2xvY2s7ICAgICAgIC8qIGxvY2sgdXNlZCB0byB3YWl0IGZvciBvdGhlciB0aHJlYWRzICovCi1zdGF0aWMgaW50IHdhaXRpbmdfZm9yX3RocmVhZHM7IC8qIHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IG50aHJlYWRzOyAgICAgICAgICAgIC8qIHByb3RlY3RlZCBieSBjb3VudF9sb2NrICovCi1zdGF0aWMgaW50IGV4aXRfc3RhdHVzOwotc3RhdGljIGludCBleGl0aW5nOyAgICAgICAgICAgICAvKiB3ZSdyZSBhbHJlYWR5IGV4aXRpbmcgKGZvciBtYXliZV9leGl0KSAqLwotc3RhdGljIHBpZF90IG15X3BpZDsgICAgICAgICAgICAvKiBQSUQgb2YgbWFpbiB0aHJlYWQgKi8KLXN0YXRpYyBzdHJ1Y3QgcGlkbGlzdCB7Ci0gICAgcGlkX3QgcGFyZW50OwotICAgIHBpZF90IGNoaWxkOwotfSBwaWRsaXN0W01BWFBST0NdOyAgICAgLyogUElEcyBvZiBvdGhlciB0aHJlYWRzOyBwcm90ZWN0ZWQgYnkgY291bnRfbG9jayAqLwotc3RhdGljIGludCBtYXhwaWRpbmRleDsgICAgICAgICAvKiAjIG9mIFBJRHMgaW4gcGlkbGlzdCAqLwotLyoKLSAqIEluaXRpYWxpemF0aW9uLgotICovCi1zdGF0aWMgdm9pZCBQeVRocmVhZF9faW5pdF90aHJlYWQodm9pZCkKLXsKLSNpZmRlZiBVU0VfREwKLSAgICBsb25nIGFkZHIsIHNpemU7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0KLQotI2lmZGVmIFVTRV9ETAotICAgIGlmICgoc2l6ZSA9IHVzY29uZmlnKENPTkZfSU5JVFNJWkUsIDY0KjEwMjQpKSA8IDApCi0gICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChjaGVjaykiKTsKLSAgICBpZiAodXNjb25maWcoQ09ORl9JTklUU0laRSwgc2l6ZSkgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUU0laRSAocmVzZXQpIik7Ci0gICAgYWRkciA9IChsb25nKSBkbF9nZXRyYW5nZShzaXplICsgSERSX1NJWkUpOwotICAgIGRwcmludGYoKCJ0cnlpbmcgdG8gdXNlIGFkZHIgJXAtJXAgZm9yIHNoYXJlZCBhcmVuYVxuIiwgYWRkciwgYWRkcitzaXplKSk7Ci0gICAgZXJybm8gPSAwOwotICAgIGlmICgoYWRkciA9IHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikpIDwgMCAmJiBlcnJubyAhPSAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChzZXQpIik7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaWYgKHVzY29uZmlnKENPTkZfSU5JVFVTRVJTLCAxNikgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUVVNFUlMiKTsKLSAgICBteV9waWQgPSBnZXRwaWQoKTsgICAgICAgICAgLyogc28gdGhhdCB3ZSBrbm93IHdoaWNoIGlzIHRoZSBtYWluIHRocmVhZCAqLwotICAgIGlmICh1c2NvbmZpZyhDT05GX0FSRU5BVFlQRSwgVVNfU0hBUkVET05MWSkgPCAwKQotICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BUkVOQVRZUEUiKTsKLSAgICB1c2NvbmZpZyhDT05GX0xPQ0tUWVBFLCBVU19ERUJVRyk7IC8qIFhYWCAqLwotI2lmZGVmIFB5X0RFQlVHCi0gICAgaWYgKHRocmVhZF9kZWJ1ZyAmIDQpCi0gICAgICAgIHVzY29uZmlnKENPTkZfTE9DS1RZUEUsIFVTX0RFQlVHUExVUyk7Ci0gICAgZWxzZSBpZiAodGhyZWFkX2RlYnVnICYgMikKLSAgICAgICAgdXNjb25maWcoQ09ORl9MT0NLVFlQRSwgVVNfREVCVUcpOwotI2VuZGlmIC8qIFB5X0RFQlVHICovCi0gICAgaWYgKChzaGFyZWRfYXJlbmEgPSB1c2luaXQodG1wbmFtKDApKSkgPT0gMCkKLSAgICAgICAgcGVycm9yKCJ1c2luaXQiKTsKLSNpZmRlZiBVU0VfREwKLSAgICBpZiAodXNjb25maWcoQ09ORl9BVFRBQ0hBRERSLCBhZGRyKSA8IDApIC8qIHJlc2V0IGFkZHJlc3MgKi8KLSAgICAgICAgcGVycm9yKCJ1c2NvbmZpZyAtIENPTkZfQVRUQUNIQUREUiAocmVzZXQpIik7Ci0jZW5kaWYgLyogVVNFX0RMICovCi0gICAgaWYgKChjb3VudF9sb2NrID0gdXNuZXdsb2NrKHNoYXJlZF9hcmVuYSkpID09IE5VTEwpCi0gICAgICAgIHBlcnJvcigidXNuZXdsb2NrIChjb3VudF9sb2NrKSIpOwotICAgICh2b2lkKSB1c2luaXRsb2NrKGNvdW50X2xvY2spOwotICAgIGlmICgod2FpdF9sb2NrID0gdXNuZXdsb2NrKHNoYXJlZF9hcmVuYSkpID09IE5VTEwpCi0gICAgICAgIHBlcnJvcigidXNuZXdsb2NrICh3YWl0X2xvY2spIik7Ci0gICAgZHByaW50ZigoImFyZW5hIHN0YXJ0OiAlcCwgYXJlbmEgc2l6ZTogJWxkXG4iLCAgc2hhcmVkX2FyZW5hLCAobG9uZykgdXNjb25maWcoQ09ORl9HRVRTSVpFLCBzaGFyZWRfYXJlbmEpKSk7Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotCi1zdGF0aWMgdm9pZCBjbGVhbl90aHJlYWRzKHZvaWQpCi17Ci0gICAgaW50IGksIGo7Ci0gICAgcGlkX3QgbXlwaWQsIHBpZDsKLQotICAgIC8qIGNsZWFuIHVwIGFueSBleGl0ZWQgdGhyZWFkcyAqLwotICAgIG15cGlkID0gZ2V0cGlkKCk7Ci0gICAgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBtYXhwaWRpbmRleCkgewotICAgICAgICBpZiAocGlkbGlzdFtpXS5wYXJlbnQgPT0gbXlwaWQgJiYgKHBpZCA9IHBpZGxpc3RbaV0uY2hpbGQpID4gMCkgewotICAgICAgICAgICAgcGlkID0gd2FpdHBpZChwaWQsIDAsIFdOT0hBTkcpOwotICAgICAgICAgICAgaWYgKHBpZCA+IDApIHsKLSAgICAgICAgICAgICAgICAvKiBhIHRocmVhZCBoYXMgZXhpdGVkICovCi0gICAgICAgICAgICAgICAgcGlkbGlzdFtpXSA9IHBpZGxpc3RbLS1tYXhwaWRpbmRleF07Ci0gICAgICAgICAgICAgICAgLyogcmVtb3ZlIHJlZmVyZW5jZXMgdG8gY2hpbGRyZW4gb2YgZGVhZCBwcm9jICovCi0gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IG1heHBpZGluZGV4OyBqKyspCi0gICAgICAgICAgICAgICAgICAgIGlmIChwaWRsaXN0W2pdLnBhcmVudCA9PSBwaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBwaWRsaXN0W2pdLmNoaWxkID0gLTE7Ci0gICAgICAgICAgICAgICAgY29udGludWU7IC8qIGRvbid0IGluY3JlbWVudCBpICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaSsrOwotICAgIH0KLSAgICAvKiBjbGVhbiB1cCB0aGUgbGlzdCAqLwotICAgIGkgPSAwOwotICAgIHdoaWxlIChpIDwgbWF4cGlkaW5kZXgpIHsKLSAgICAgICAgaWYgKHBpZGxpc3RbaV0uY2hpbGQgPT0gLTEpIHsKLSAgICAgICAgICAgIHBpZGxpc3RbaV0gPSBwaWRsaXN0Wy0tbWF4cGlkaW5kZXhdOwotICAgICAgICAgICAgY29udGludWU7IC8qIGRvbid0IGluY3JlbWVudCBpICovCi0gICAgICAgIH0KLSAgICAgICAgaSsrOwotICAgIH0KLX0KLQotbG9uZyBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0jaWZkZWYgVVNFX0RMCi0gICAgbG9uZyBhZGRyLCBzaXplOwotICAgIHN0YXRpYyBpbnQgbG9jYWxfaW5pdGlhbGl6ZWQgPSAwOwotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgIGludCBzdWNjZXNzID0gMDsgICAgICAgICAgICAvKiBpbml0IG5vdCBuZWVkZWQgd2hlbiBTT0xBUklTX1RIUkVBRFMgYW5kICovCi0gICAgICAgICAgICAgICAgLyogQ19USFJFQURTIGltcGxlbWVudGVkIHByb3Blcmx5ICovCi0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotICAgIHN3aXRjaCAodXNzZXRsb2NrKGNvdW50X2xvY2spKSB7Ci0gICAgY2FzZSAwOiByZXR1cm4gMDsKLSAgICBjYXNlIC0xOiBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICB9Ci0gICAgaWYgKG1heHBpZGluZGV4ID49IE1BWFBST0MpCi0gICAgICAgIHN1Y2Nlc3MgPSAtMTsKLSAgICBlbHNlIHsKLSNpZmRlZiBVU0VfREwKLSAgICAgICAgaWYgKCFsb2NhbF9pbml0aWFsaXplZCkgewotICAgICAgICAgICAgaWYgKChzaXplID0gdXNjb25maWcoQ09ORl9JTklUU0laRSwgNjQqMTAyNCkpIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9JTklUU0laRSAoY2hlY2spIik7Ci0gICAgICAgICAgICBpZiAodXNjb25maWcoQ09ORl9JTklUU0laRSwgc2l6ZSkgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0lOSVRTSVpFIChyZXNldCkiKTsKLSAgICAgICAgICAgIGFkZHIgPSAobG9uZykgZGxfZ2V0cmFuZ2Uoc2l6ZSArIEhEUl9TSVpFKTsKLSAgICAgICAgICAgIGRwcmludGYoKCJ0cnlpbmcgdG8gdXNlIGFkZHIgJXAtJXAgZm9yIHNwcm9jXG4iLAotICAgICAgICAgICAgICAgICAgICAgYWRkciwgYWRkcitzaXplKSk7Ci0gICAgICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICAgICBpZiAoKGFkZHIgPSB1c2NvbmZpZyhDT05GX0FUVEFDSEFERFIsIGFkZHIpKSA8IDAgJiYKLSAgICAgICAgICAgICAgICBlcnJubyAhPSAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXNjb25maWcgLSBDT05GX0FUVEFDSEFERFIgKHNldCkiKTsKLSAgICAgICAgfQotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgICAgICBjbGVhbl90aHJlYWRzKCk7Ci0gICAgICAgIGlmICgoc3VjY2VzcyA9IHNwcm9jKGZ1bmMsIFBSX1NBTEwsIGFyZykpIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigic3Byb2MiKTsKLSNpZmRlZiBVU0VfREwKLSAgICAgICAgaWYgKCFsb2NhbF9pbml0aWFsaXplZCkgewotICAgICAgICAgICAgaWYgKHVzY29uZmlnKENPTkZfQVRUQUNIQUREUiwgYWRkcikgPCAwKQotICAgICAgICAgICAgICAgIC8qIHJlc2V0IGFkZHJlc3MgKi8KLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzY29uZmlnIC0gQ09ORl9BVFRBQ0hBRERSIChyZXNldCkiKTsKLSAgICAgICAgICAgIGxvY2FsX2luaXRpYWxpemVkID0gMTsKLSAgICAgICAgfQotI2VuZGlmIC8qIFVTRV9ETCAqLwotICAgICAgICBpZiAoc3VjY2VzcyA+PSAwKSB7Ci0gICAgICAgICAgICBudGhyZWFkcysrOwotICAgICAgICAgICAgcGlkbGlzdFttYXhwaWRpbmRleF0ucGFyZW50ID0gZ2V0cGlkKCk7Ci0gICAgICAgICAgICBwaWRsaXN0W21heHBpZGluZGV4KytdLmNoaWxkID0gc3VjY2VzczsKLSAgICAgICAgICAgIGRwcmludGYoKCJwaWRsaXN0WyVkXSA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgbWF4cGlkaW5kZXgtMSwgc3VjY2VzcykpOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICh1c3Vuc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLWxvbmcgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIHJldHVybiBnZXRwaWQoKTsKLX0KLQotdm9pZCBQeVRocmVhZF9leGl0X3RocmVhZCh2b2lkKQotewotICAgIGRwcmludGYoKCJQeVRocmVhZF9leGl0X3RocmVhZCBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIGlmICh1c3NldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICBudGhyZWFkcy0tOwotICAgIGlmIChnZXRwaWQoKSA9PSBteV9waWQpIHsKLSAgICAgICAgLyogbWFpbiB0aHJlYWQ7IHdhaXQgZm9yIG90aGVyIHRocmVhZHMgdG8gZXhpdCAqLwotICAgICAgICBleGl0aW5nID0gMTsKLSAgICAgICAgd2FpdGluZ19mb3JfdGhyZWFkcyA9IDE7Ci0gICAgICAgIGlmICh1c3NldGxvY2sod2FpdF9sb2NrKSA8IDApCi0gICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICBpZiAobnRocmVhZHMgPCAwKSB7Ci0gICAgICAgICAgICAgICAgZHByaW50ZigoInJlYWxseSBleGl0ICglZClcbiIsIGV4aXRfc3RhdHVzKSk7Ci0gICAgICAgICAgICAgICAgZXhpdChleGl0X3N0YXR1cyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodXN1bnNldGxvY2soY291bnRfbG9jaykgPCAwKQotICAgICAgICAgICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgICAgICAgICBkcHJpbnRmKCgid2FpdGluZyBmb3Igb3RoZXIgdGhyZWFkcyAoJWQpXG4iLCBudGhyZWFkcykpOwotICAgICAgICAgICAgaWYgKHVzc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgICAgICBwZXJyb3IoInVzc2V0bG9jayAod2FpdF9sb2NrKSIpOwotICAgICAgICAgICAgaWYgKHVzc2V0bG9jayhjb3VudF9sb2NrKSA8IDApCi0gICAgICAgICAgICAgICAgcGVycm9yKCJ1c3NldGxvY2sgKGNvdW50X2xvY2spIik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogbm90IHRoZSBtYWluIHRocmVhZCAqLwotICAgIGlmICh3YWl0aW5nX2Zvcl90aHJlYWRzKSB7Ci0gICAgICAgIGRwcmludGYoKCJtYWluIHRocmVhZCBpcyB3YWl0aW5nXG4iKSk7Ci0gICAgICAgIGlmICh1c3Vuc2V0bG9jayh3YWl0X2xvY2spIDwgMCkKLSAgICAgICAgICAgIHBlcnJvcigidXN1bnNldGxvY2sgKHdhaXRfbG9jaykiKTsKLSAgICB9Ci0gICAgaWYgKHVzdW5zZXRsb2NrKGNvdW50X2xvY2spIDwgMCkKLSAgICAgICAgcGVycm9yKCJ1c3Vuc2V0bG9jayAoY291bnRfbG9jaykiKTsKLSAgICBfZXhpdCgwKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4KLSAqLwotUHlUaHJlYWRfdHlwZV9sb2NrIFB5VGhyZWFkX2FsbG9jYXRlX2xvY2sodm9pZCkKLXsKLSAgICB1bG9ja190IGxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgaWYgKChsb2NrID0gdXNuZXdsb2NrKHNoYXJlZF9hcmVuYSkpID09IE5VTEwpCi0gICAgICAgIHBlcnJvcigidXNuZXdsb2NrIik7Ci0gICAgKHZvaWQpIHVzaW5pdGxvY2sobG9jayk7Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKSAtPiAlcFxuIiwgbG9jaykpOwotICAgIHJldHVybiAoUHlUaHJlYWRfdHlwZV9sb2NrKSBsb2NrOwotfQotCi12b2lkIFB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICB1c2ZyZWVsb2NrKCh1bG9ja190KSBsb2NrLCBzaGFyZWRfYXJlbmEpOwotfQotCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGVycm5vID0gMDsgICAgICAgICAgICAgICAgICAvKiBjbGVhciBpdCBqdXN0IGluIGNhc2UgKi8KLSAgICBpZiAod2FpdGZsYWcpCi0gICAgICAgIHN1Y2Nlc3MgPSB1c3NldGxvY2soKHVsb2NrX3QpIGxvY2spOwotICAgIGVsc2UKLSAgICAgICAgc3VjY2VzcyA9IHVzY3NldGxvY2soKHVsb2NrX3QpIGxvY2ssIDEpOyAvKiBUcnkgaXQgb25jZSAqLwotICAgIGlmIChzdWNjZXNzIDwgMCkKLSAgICAgICAgcGVycm9yKHdhaXRmbGFnID8gInVzc2V0bG9jayIgOiAidXNjc2V0bG9jayIpOwotICAgIGRwcmludGYoKCJQeVRocmVhZF9hY3F1aXJlX2xvY2soJXAsICVkKSAtPiAlZFxuIiwgbG9jaywgd2FpdGZsYWcsIHN1Y2Nlc3MpKTsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBQeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgaWYgKHVzdW5zZXRsb2NrKCh1bG9ja190KSBsb2NrKSA8IDApCi0gICAgICAgIHBlcnJvcigidXN1bnNldGxvY2siKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfc29sYXJpcy5oIGIvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjZTFjZmMuLjAwMDAwMDAKLS0tIGEvUHl0aG9uL3RocmVhZF9zb2xhcmlzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAgKzAsMCBAQAotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPC91c3IvaW5jbHVkZS90aHJlYWQuaD4KLSN1bmRlZiBfUE9TSVhfVEhSRUFEUwotCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbi4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotc3RydWN0IGZ1bmNfYXJnIHsKLSAgICB2b2lkICgqZnVuYykodm9pZCAqKTsKLSAgICB2b2lkICphcmc7Ci19OwotCi1zdGF0aWMgdm9pZCAqCi1uZXdfZnVuYyh2b2lkICpmdW5jYXJnKQotewotICAgIHZvaWQgKCpmdW5jKSh2b2lkICopOwotICAgIHZvaWQgKmFyZzsKLQotICAgIGZ1bmMgPSAoKHN0cnVjdCBmdW5jX2FyZyAqKSBmdW5jYXJnKS0+ZnVuYzsKLSAgICBhcmcgPSAoKHN0cnVjdCBmdW5jX2FyZyAqKSBmdW5jYXJnKS0+YXJnOwotICAgIGZyZWUoZnVuY2FyZyk7Ci0gICAgKCpmdW5jKShhcmcpOwotICAgIHJldHVybiAwOwotfQotCi0KLWxvbmcKLVB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQodm9pZCAoKmZ1bmMpKHZvaWQgKiksIHZvaWQgKmFyZykKLXsKLSAgICB0aHJlYWRfdCB0aWQ7Ci0gICAgc3RydWN0IGZ1bmNfYXJnICpmdW5jYXJnOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgUHlUaHJlYWRfaW5pdF90aHJlYWQoKTsKLSAgICBmdW5jYXJnID0gKHN0cnVjdCBmdW5jX2FyZyAqKSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBmdW5jX2FyZykpOwotICAgIGZ1bmNhcmctPmZ1bmMgPSBmdW5jOwotICAgIGZ1bmNhcmctPmFyZyA9IGFyZzsKLSAgICBpZiAodGhyX2NyZWF0ZSgwLCAwLCBuZXdfZnVuYywgZnVuY2FyZywKLSAgICAgICAgICAgICAgICAgICBUSFJfREVUQUNIRUQgfCBUSFJfTkVXX0xXUCwgJnRpZCkpIHsKLSAgICAgICAgcGVycm9yKCJ0aHJfY3JlYXRlIik7Ci0gICAgICAgIGZyZWUoKHZvaWQgKikgZnVuY2FyZyk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIHRpZDsKLX0KLQotbG9uZwotUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCh2b2lkKQotewotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0gICAgcmV0dXJuIHRocl9zZWxmKCk7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIikpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIGV4aXQoMCk7Ci0gICAgdGhyX2V4aXQoMCk7Ci19Ci0KLS8qCi0gKiBMb2NrIHN1cHBvcnQuCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jawotUHlUaHJlYWRfYWxsb2NhdGVfbG9jayh2b2lkKQotewotICAgIG11dGV4X3QgKmxvY2s7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgbG9jayA9IChtdXRleF90ICopIG1hbGxvYyhzaXplb2YobXV0ZXhfdCkpOwotICAgIGlmIChtdXRleF9pbml0KGxvY2ssIFVTWU5DX1RIUkVBRCwgMCkpIHsKLSAgICAgICAgcGVycm9yKCJtdXRleF9pbml0Iik7Ci0gICAgICAgIGZyZWUoKHZvaWQgKikgbG9jayk7Ci0gICAgICAgIGxvY2sgPSAwOwotICAgIH0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBsb2NrKSk7Ci0gICAgcmV0dXJuIChQeVRocmVhZF90eXBlX2xvY2spIGxvY2s7Ci19Ci0KLXZvaWQKLVB5VGhyZWFkX2ZyZWVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaykKLXsKLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfZnJlZV9sb2NrKCVwKSBjYWxsZWRcbiIsIGxvY2spKTsKLSAgICBtdXRleF9kZXN0cm95KChtdXRleF90ICopIGxvY2spOwotICAgIGZyZWUoKHZvaWQgKikgbG9jayk7Ci19Ci0KLWludAotUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBsb2NrLCBpbnQgd2FpdGZsYWcpCi17Ci0gICAgaW50IHN1Y2Nlc3M7Ci0KLSAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwotICAgIGlmICh3YWl0ZmxhZykKLSAgICAgICAgc3VjY2VzcyA9IG11dGV4X2xvY2soKG11dGV4X3QgKikgbG9jayk7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gbXV0ZXhfdHJ5bG9jaygobXV0ZXhfdCAqKSBsb2NrKTsKLSAgICBpZiAoc3VjY2VzcyA8IDApCi0gICAgICAgIHBlcnJvcih3YWl0ZmxhZyA/ICJtdXRleF9sb2NrIiA6ICJtdXRleF90cnlsb2NrIik7Ci0gICAgZWxzZQotICAgICAgICBzdWNjZXNzID0gIXN1Y2Nlc3M7IC8qIHNvbGFyaXMgZG9lcyBpdCB0aGUgb3RoZXIgd2F5IHJvdW5kICovCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBsb2NrLCB3YWl0ZmxhZywgc3VjY2VzcykpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQotCi12b2lkCi1QeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGxvY2spCi17Ci0gICAgZHByaW50ZigoIlB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBsb2NrKSk7Ci0gICAgaWYgKG11dGV4X3VubG9jaygobXV0ZXhfdCAqKSBsb2NrKSkKLSAgICAgICAgcGVycm9yKCJtdXRleF91bmxvY2siKTsKLX0KZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfd2luY2UuaCBiL1B5dGhvbi90aHJlYWRfd2luY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkZGMwMi4uMDAwMDAwMAotLS0gYS9QeXRob24vdGhyZWFkX3dpbmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotCi0vKiBUaGlzIGNvZGUgaW1wbGVtZW50ZWQgYnkgTWFyayBIYW1tb25kIChNSGFtbW9uZEBza2lwcGluZXQuY29tLmF1KSAqLwotCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHB5ZGVidWcuaD4KLQotbG9uZyBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KHZvaWQpOwotCi0vKgotICogQ2hhbmdlIGFsbCBoZWFkZXJzIHRvIHB1cmUgQU5TSSBhcyBubyBvbmUgd2lsbCB1c2UgSyZSIHN0eWxlIG9uIGFuCi0gKiBOVAotICovCi0KLS8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiB0aGUgQyBwYWNrYWdlLCBzaG91bGQgbm90IGJlIG5lZWRlZC4KLSAqLwotc3RhdGljIHZvaWQgUHlUaHJlYWRfX2luaXRfdGhyZWFkKHZvaWQpCi17Ci19Ci0KLS8qCi0gKiBUaHJlYWQgc3VwcG9ydC4KLSAqLwotbG9uZyBQeVRocmVhZF9zdGFydF9uZXdfdGhyZWFkKHZvaWQgKCpmdW5jKSh2b2lkICopLCB2b2lkICphcmcpCi17Ci0gICAgbG9uZyBydjsKLSAgICBpbnQgc3VjY2VzcyA9IC0xOwotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfc3RhcnRfbmV3X3RocmVhZCBjYWxsZWRcbiIsIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQoKSkpOwotICAgIGlmICghaW5pdGlhbGl6ZWQpCi0gICAgICAgIFB5VGhyZWFkX2luaXRfdGhyZWFkKCk7Ci0KLSAgICBydiA9IF9iZWdpbnRocmVhZChmdW5jLCAwLCBhcmcpOyAvKiB1c2UgZGVmYXVsdCBzdGFjayBzaXplICovCi0KLSAgICBpZiAocnYgIT0gLTEpIHsKLSAgICAgICAgc3VjY2VzcyA9IDA7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgc3VjY2VlZGVkOlxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN1Y2Nlc3M7Ci19Ci0KLS8qCi0gKiBSZXR1cm4gdGhlIHRocmVhZCBJZCBpbnN0ZWFkIG9mIGFuIGhhbmRsZS4gVGhlIElkIGlzIHNhaWQgdG8gdW5pcXVlbHkgaWRlbnRpZnkgdGhlCi0gKiB0aHJlYWQgaW4gdGhlIHN5c3RlbQotICovCi1sb25nIFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQodm9pZCkKLXsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgcmV0dXJuIEdldEN1cnJlbnRUaHJlYWRJZCgpOwotfQotCi12b2lkIFB5VGhyZWFkX2V4aXRfdGhyZWFkKHZvaWQpCi17Ci0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfZXhpdF90aHJlYWQgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkpKTsKLSAgICBpZiAoIWluaXRpYWxpemVkKQotICAgICAgICBleGl0KDApOwotICAgIF9lbmR0aHJlYWQoKTsKLX0KLQotLyoKLSAqIExvY2sgc3VwcG9ydC4gSXQgaGFzIHRvIGJlIGltcGxlbWVudGVkIHVzaW5nIE11dGV4ZXMsIGFzCi0gKiBDRSBkb2VzbnQgc3VwcG9ydCBzZW1hcGhvcmVzLiAgVGhlcmVmb3JlIHdlIHVzZSBzb21lIGhhY2tzIHRvCi0gKiBzaW11bGF0ZSB0aGUgbm9uIHJlZW50cmFudCByZXF1aXJlbWVudHMgb2YgUHl0aG9uIGxvY2tzCi0gKi8KLVB5VGhyZWFkX3R5cGVfbG9jayBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKHZvaWQpCi17Ci0gICAgSEFORExFIGFMb2NrOwotCi0gICAgZHByaW50ZigoIlB5VGhyZWFkX2FsbG9jYXRlX2xvY2sgY2FsbGVkXG4iKSk7Ci0gICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICBQeVRocmVhZF9pbml0X3RocmVhZCgpOwotCi0gICAgYUxvY2sgPSBDcmVhdGVFdmVudChOVUxMLCAgICAgICAgICAgLyogU2VjdXJpdHkgYXR0cmlidXRlcyAgICAgICovCi0gICAgICAgICAgICAwLCAgICAgICAgICAgICAgLyogTWFudWFsLVJlc2V0ICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAvKiBJcyBpbml0aWFsbHkgc2lnbmFsbGVkICAqLwotICAgICAgICAgICAgTlVMTCk7ICAgICAgICAgIC8qIE5hbWUgb2YgZXZlbnQgICAgICAgICAgICAqLwotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWxsb2NhdGVfbG9jaygpIC0+ICVwXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGFMb2NrKSk7Ci0KLSAgICByZXR1cm4gKFB5VGhyZWFkX3R5cGVfbG9jaykgYUxvY2s7Ci19Ci0KLXZvaWQgUHlUaHJlYWRfZnJlZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBhTG9jaykKLXsKLSAgICBkcHJpbnRmKCgiJWxkOiBQeVRocmVhZF9mcmVlX2xvY2soJXApIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLGFMb2NrKSk7Ci0KLSAgICBDbG9zZUhhbmRsZShhTG9jayk7Ci19Ci0KLS8qCi0gKiBSZXR1cm4gMSBvbiBzdWNjZXNzIGlmIHRoZSBsb2NrIHdhcyBhY3F1aXJlZAotICoKLSAqIGFuZCAwIGlmIHRoZSBsb2NrIHdhcyBub3QgYWNxdWlyZWQuIFRoaXMgbWVhbnMgYSAwIGlzIHJldHVybmVkCi0gKiBpZiB0aGUgbG9jayBoYXMgYWxyZWFkeSBiZWVuIGFjcXVpcmVkIGJ5IHRoaXMgdGhyZWFkIQotICovCi1pbnQgUHlUaHJlYWRfYWNxdWlyZV9sb2NrKFB5VGhyZWFkX3R5cGVfbG9jayBhTG9jaywgaW50IHdhaXRmbGFnKQotewotICAgIGludCBzdWNjZXNzID0gMTsKLSAgICBEV09SRCB3YWl0UmVzdWx0OwotCi0gICAgZHByaW50ZigoIiVsZDogUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2ssIHdhaXRmbGFnKSk7Ci0KLSNpZm5kZWYgREVCVUcKLSAgICB3YWl0UmVzdWx0ID0gV2FpdEZvclNpbmdsZU9iamVjdChhTG9jaywgKHdhaXRmbGFnID8gSU5GSU5JVEUgOiAwKSk7Ci0jZWxzZQotICAgIC8qIFRvIGFpZCBpbiBkZWJ1Z2dpbmcsIHdlIHJlZ3VsYXJseSB3YWtlIHVwLiAgVGhpcyBhbGxvd3MgdXMgdG8KLSAgICBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciAqLwotICAgIHdoaWxlIChUUlVFKSB7Ci0gICAgICAgIHdhaXRSZXN1bHQgPSBXYWl0Rm9yU2luZ2xlT2JqZWN0KGFMb2NrLCB3YWl0ZmxhZyA/IDMwMDAgOiAwKTsKLSAgICAgICAgaWYgKHdhaXRmbGFnPT0wIHx8ICh3YWl0ZmxhZyAmJiB3YWl0UmVzdWx0ID09IFdBSVRfT0JKRUNUXzApKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAod2FpdFJlc3VsdCAhPSBXQUlUX09CSkVDVF8wKSB7Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDA7ICAgIC8qIFdlIGZhaWxlZCAqLwotICAgIH0KLQotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2FjcXVpcmVfbG9jayglcCwgJWQpIC0+ICVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7Ci0KLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotdm9pZCBQeVRocmVhZF9yZWxlYXNlX2xvY2soUHlUaHJlYWRfdHlwZV9sb2NrIGFMb2NrKQotewotICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3JlbGVhc2VfbG9jayglcCkgY2FsbGVkXG4iLCBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksYUxvY2spKTsKLQotICAgIGlmICghU2V0RXZlbnQoYUxvY2spKQotICAgIGRwcmludGYoKCIlbGQ6IENvdWxkIG5vdCBQeVRocmVhZF9yZWxlYXNlX2xvY2soJXApIGVycm9yOiAlbFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBhTG9jaywgR2V0TGFzdEVycm9yKCkpKTsKLX0KLQotCmRpZmYgLS1naXQgYS9QeXRob24vdHJhY2ViYWNrLmMgYi9QeXRob24vdHJhY2ViYWNrLmMKaW5kZXggNTliYjNmMC4uYjkyODkwMiAxMDA2NDQKLS0tIGEvUHl0aG9uL3RyYWNlYmFjay5jCisrKyBiL1B5dGhvbi90cmFjZWJhY2suYwpAQCAtMTMsOCArMTMsMTMgQEAKIAogI2RlZmluZSBPRkYoeCkgb2Zmc2V0b2YoUHlUcmFjZWJhY2tPYmplY3QsIHgpCiAKLS8qIE1ldGhvZCBmcm9tIFBhcnNlci90b2tlbml6ZXIuYyAqLwotZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoaW50KTsKKyNkZWZpbmUgUFVUUyhmZCwgc3RyKSB3cml0ZShmZCwgc3RyLCBzdHJsZW4oc3RyKSkKKyNkZWZpbmUgTUFYX1NUUklOR19MRU5HVEggNTAwCisjZGVmaW5lIE1BWF9GUkFNRV9ERVBUSCAxMDAKKyNkZWZpbmUgTUFYX05USFJFQURTIDEwMAorCisvKiBGdW5jdGlvbiBmcm9tIFBhcnNlci90b2tlbml6ZXIuYyAqLworZXh0ZXJuIGNoYXIgKiBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmdGaWxlbmFtZShpbnQsIFB5T2JqZWN0ICopOwogCiBzdGF0aWMgUHlPYmplY3QgKgogdGJfZGlyKFB5VHJhY2ViYWNrT2JqZWN0ICpzZWxmKQpAQCAtMTQ3LDYgKzE1Miw3IEBACiAgICAgY29uc3QgY2hhciogZmlsZXBhdGg7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QqIHJlc3VsdDsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKIAogICAgIGZpbGVieXRlcyA9IFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQoZmlsZW5hbWUpOwogICAgIGlmIChmaWxlYnl0ZXMgPT0gTlVMTCkgewpAQCAtMTk0LDcgKzIwMCw3IEBACiAgICAgICAgICAgICBuYW1lYnVmW2xlbisrXSA9IFNFUDsKICAgICAgICAgc3RyY3B5KG5hbWVidWYrbGVuLCB0YWlsKTsKIAotICAgICAgICBiaW5hcnkgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGlvLCAib3BlbiIsICJzcyIsIG5hbWVidWYsICJyYiIpOworICAgICAgICBiaW5hcnkgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAic3MiLCBuYW1lYnVmLCAicmIiKTsKICAgICAgICAgaWYgKGJpbmFyeSAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBiaW5hcnk7CiAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CkBAIC0yMjQsOCArMjMwLDExIEBACiAgICAgUHlPYmplY3QgKmxpbmVvYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgY2hhciBidWZbTUFYUEFUSExFTisxXTsKLSAgICBQeV9VTklDT0RFICp1LCAqcDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIF9QeV9JREVOVElGSUVSKGNsb3NlKTsKKyAgICBfUHlfSURFTlRJRklFUihvcGVuKTsKKyAgICBfUHlfSURFTlRJRklFUihUZXh0SU9XcmFwcGVyKTsKIAogICAgIC8qIG9wZW4gdGhlIGZpbGUgKi8KICAgICBpZiAoZmlsZW5hbWUgPT0gTlVMTCkKQEAgLTIzNCw3ICsyNDMsNyBAQAogICAgIGlvID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaygiaW8iKTsKICAgICBpZiAoaW8gPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGJpbmFyeSA9IFB5T2JqZWN0X0NhbGxNZXRob2QoaW8sICJvcGVuIiwgIk9zIiwgZmlsZW5hbWUsICJyYiIpOworICAgIGJpbmFyeSA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoaW8sICZQeUlkX29wZW4sICJPcyIsIGZpbGVuYW1lLCAicmIiKTsKIAogICAgIGlmIChiaW5hcnkgPT0gTlVMTCkgewogICAgICAgICBiaW5hcnkgPSBfUHlfRmluZFNvdXJjZUZpbGUoZmlsZW5hbWUsIGJ1Ziwgc2l6ZW9mKGJ1ZiksIGlvKTsKQEAgLTI0NiwxMCArMjU1LDEwIEBACiAKICAgICAvKiB1c2UgdGhlIHJpZ2h0IGVuY29kaW5nIHRvIGRlY29kZSB0aGUgZmlsZSBhcyB1bmljb2RlICovCiAgICAgZmQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKGJpbmFyeSk7Ci0gICAgZm91bmRfZW5jb2RpbmcgPSBQeVRva2VuaXplcl9GaW5kRW5jb2RpbmcoZmQpOworICAgIGZvdW5kX2VuY29kaW5nID0gUHlUb2tlbml6ZXJfRmluZEVuY29kaW5nRmlsZW5hbWUoZmQsIGZpbGVuYW1lKTsKICAgICBlbmNvZGluZyA9IChmb3VuZF9lbmNvZGluZyAhPSBOVUxMKSA/IGZvdW5kX2VuY29kaW5nIDogInV0Zi04IjsKICAgICBsc2VlayhmZCwgMCwgMCk7IC8qIFJlc2V0IHBvc2l0aW9uICovCi0gICAgZm9iID0gUHlPYmplY3RfQ2FsbE1ldGhvZChpbywgIlRleHRJT1dyYXBwZXIiLCAiT3MiLCBiaW5hcnksIGVuY29kaW5nKTsKKyAgICBmb2IgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9UZXh0SU9XcmFwcGVyLCAiT3MiLCBiaW5hcnksIGVuY29kaW5nKTsKICAgICBQeV9ERUNSRUYoaW8pOwogICAgIFB5X0RFQ1JFRihiaW5hcnkpOwogICAgIFB5TWVtX0ZSRUUoZm91bmRfZW5jb2RpbmcpOwpAQCAtMjY4LDcgKzI3Nyw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBQeU9iamVjdF9DYWxsTWV0aG9kKGZvYiwgImNsb3NlIiwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm9iLCAmUHlJZF9jbG9zZSwgIiIpOwogICAgIGlmIChyZXMpCiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIGVsc2UKQEAgLTI4MCwxMyArMjg5LDE2IEBACiAgICAgfQogCiAgICAgLyogcmVtb3ZlIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgbGluZSAqLwotICAgIHUgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERShsaW5lb2JqKTsKLSAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX1NJWkUobGluZW9iaik7Ci0gICAgZm9yIChwPXU7ICpwID09ICcgJyB8fCAqcCA9PSAnXHQnIHx8ICpwID09ICdcMDE0JzsgcCsrKQotICAgICAgICBsZW4tLTsKLSAgICBpZiAodSAhPSBwKSB7CisgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGxpbmVvYmopOworICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShsaW5lb2JqKTsKKyAgICBmb3IgKGk9MDsgaSA8IFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmVvYmopOyBpKyspIHsKKyAgICAgICAgUHlfVUNTNCBjaCA9IFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpOworICAgICAgICBpZiAoY2ggIT0gJyAnICYmIGNoICE9ICdcdCcgJiYgY2ggIT0gJ1wwMTQnKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmIChpKSB7CiAgICAgICAgIFB5T2JqZWN0ICp0cnVuY2F0ZWQ7Ci0gICAgICAgIHRydW5jYXRlZCA9IFB5VW5pY29kZV9Gcm9tVW5pY29kZShwLCBsZW4pOworICAgICAgICB0cnVuY2F0ZWQgPSBQeVVuaWNvZGVfU3Vic3RyaW5nKGxpbmVvYmosIGksIFB5VW5pY29kZV9HRVRfTEVOR1RIKGxpbmVvYmopKTsKICAgICAgICAgaWYgKHRydW5jYXRlZCkgewogICAgICAgICAgICAgUHlfREVDUkVGKGxpbmVvYmopOwogICAgICAgICAgICAgbGluZW9iaiA9IHRydW5jYXRlZDsKQEAgLTMzMiw3ICszNDQsMTAgQEAKICAgICBQeV9ERUNSRUYobGluZSk7CiAgICAgaWYgKGVyciAhPSAwKQogICAgICAgICByZXR1cm4gZXJyOwotICAgIHJldHVybiBfUHlfRGlzcGxheVNvdXJjZUxpbmUoZiwgZmlsZW5hbWUsIGxpbmVubywgNCk7CisgICAgLyogaWdub3JlIGVycm9ycyBzaW5jZSB3ZSBjYW4ndCByZXBvcnQgdGhlbSwgY2FuIHdlPyAqLworICAgIGlmIChfUHlfRGlzcGxheVNvdXJjZUxpbmUoZiwgZmlsZW5hbWUsIGxpbmVubywgNCkpCisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGludApAQCAtNDAyLDMgKzQxNywyNTAgQEAKICAgICAgICAgZXJyID0gdGJfcHJpbnRpbnRlcm5hbCgoUHlUcmFjZWJhY2tPYmplY3QgKil2LCBmLCBsaW1pdCk7CiAgICAgcmV0dXJuIGVycjsKIH0KKworLyogUmV2ZXJzZSBhIHN0cmluZy4gRm9yIGV4YW1wbGUsICJhYmNkIiBiZWNvbWVzICJkY2JhIi4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK3JldmVyc2Vfc3RyaW5nKGNoYXIgKnRleHQsIGNvbnN0IHNpemVfdCBsZW4pCit7CisgICAgY2hhciB0bXA7CisgICAgc2l6ZV90IGksIGo7CisgICAgaWYgKGxlbiA9PSAwKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChpPTAsIGo9bGVuLTE7IGkgPCBqOyBpKyssIGotLSkgeworICAgICAgICB0bXAgPSB0ZXh0W2ldOworICAgICAgICB0ZXh0W2ldID0gdGV4dFtqXTsKKyAgICAgICAgdGV4dFtqXSA9IHRtcDsKKyAgICB9Cit9CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyA5OTk5OTldIHRvIGRlY2ltYWwsCisgICBhbmQgd3JpdGUgaXQgaW50byB0aGUgZmlsZSBmZC4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfZGVjaW1hbChpbnQgZmQsIGludCB2YWx1ZSkKK3sKKyAgICBjaGFyIGJ1ZmZlcls3XTsKKyAgICBpbnQgbGVuOworICAgIGlmICh2YWx1ZSA8IDAgfHwgOTk5OTk5IDwgdmFsdWUpCisgICAgICAgIHJldHVybjsKKyAgICBsZW4gPSAwOworICAgIGRvIHsKKyAgICAgICAgYnVmZmVyW2xlbl0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CisgICAgICAgIHZhbHVlIC89IDEwOworICAgICAgICBsZW4rKzsKKyAgICB9IHdoaWxlICh2YWx1ZSk7CisgICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOworICAgIHdyaXRlKGZkLCBidWZmZXIsIGxlbik7Cit9CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGluIHJhbmdlIFswOyAweGZmZmZmZmZmXSB0byBoZXhkZWNpbWFsIG9mICd3aWR0aCcgZGlnaXRzLAorICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCisKK3N0YXRpYyB2b2lkCitkdW1wX2hleGFkZWNpbWFsKGludCB3aWR0aCwgdW5zaWduZWQgbG9uZyB2YWx1ZSwgaW50IGZkKQoreworICAgIGludCBsZW47CisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdOworICAgIGxlbiA9IDA7CisgICAgZG8geworICAgICAgICBidWZmZXJbbGVuXSA9IFB5X2hleGRpZ2l0c1t2YWx1ZSAmIDE1XTsKKyAgICAgICAgdmFsdWUgPj49IDQ7CisgICAgICAgIGxlbisrOworICAgIH0gd2hpbGUgKGxlbiA8IHdpZHRoIHx8IHZhbHVlKTsKKyAgICByZXZlcnNlX3N0cmluZyhidWZmZXIsIGxlbik7CisgICAgd3JpdGUoZmQsIGJ1ZmZlciwgbGVuKTsKK30KKworLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAorZHVtcF9hc2NpaShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQoreworICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil0ZXh0OworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBpbnQgdHJ1bmNhdGVkOworICAgIGludCBraW5kOworICAgIHZvaWQgKmRhdGEgPSBOVUxMOworICAgIHdjaGFyX3QgKndzdHIgPSBOVUxMOworICAgIFB5X1VDUzQgY2g7CisKKyAgICBzaXplID0gYXNjaWktPmxlbmd0aDsKKyAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7CisgICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CisgICAgICAgIGlmIChhc2NpaS0+c3RhdGUuYXNjaWkpCisgICAgICAgICAgICBkYXRhID0gKChQeUFTQ0lJT2JqZWN0Kil0ZXh0KSArIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGEgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QqKXRleHQpICsgMTsKKyAgICB9CisgICAgZWxzZSBpZiAoa2luZCAhPSBQeVVuaWNvZGVfV0NIQVJfS0lORCkgeworICAgICAgICBkYXRhID0gKChQeVVuaWNvZGVPYmplY3QgKil0ZXh0KS0+ZGF0YS5hbnk7CisgICAgICAgIGlmIChkYXRhID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB3c3RyID0gKChQeUFTQ0lJT2JqZWN0ICopdGV4dCktPndzdHI7CisgICAgICAgIGlmICh3c3RyID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNpemUgPSAoKFB5Q29tcGFjdFVuaWNvZGVPYmplY3QgKil0ZXh0KS0+d3N0cl9sZW5ndGg7CisgICAgfQorCisgICAgaWYgKE1BWF9TVFJJTkdfTEVOR1RIIDwgc2l6ZSkgeworICAgICAgICBzaXplID0gTUFYX1NUUklOR19MRU5HVEg7CisgICAgICAgIHRydW5jYXRlZCA9IDE7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgdHJ1bmNhdGVkID0gMDsKKworICAgIGZvciAoaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChraW5kICE9IFB5VW5pY29kZV9XQ0hBUl9LSU5EKQorICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2ggPSB3c3RyW2ldOworICAgICAgICBpZiAoY2ggPCAxMjgpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IChjaGFyKWNoOworICAgICAgICAgICAgd3JpdGUoZmQsICZjLCAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjaCA8IDB4ZmYpIHsKKyAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKKyAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoMiwgY2gsIGZkKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjaCA8IDB4ZmZmZikgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxcdSIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCg0LCBjaCwgZmQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUFVUUyhmZCwgIlxcVSIpOworICAgICAgICAgICAgZHVtcF9oZXhhZGVjaW1hbCg4LCBjaCwgZmQpOworICAgICAgICB9CisgICAgfQorICAgIGlmICh0cnVuY2F0ZWQpCisgICAgICAgIFBVVFMoZmQsICIuLi4iKTsKK30KKworLyogV3JpdGUgYSBmcmFtZSBpbnRvIHRoZSBmaWxlIGZkOiAiRmlsZSAieHh4IiwgbGluZSB4eHggaW4geHh4Ii4KKworICAgVGhpcyBmdW5jdGlvbiBpcyBzaWduYWwgc2FmZS4gKi8KKworc3RhdGljIHZvaWQKK2R1bXBfZnJhbWUoaW50IGZkLCBQeUZyYW1lT2JqZWN0ICpmcmFtZSkKK3sKKyAgICBQeUNvZGVPYmplY3QgKmNvZGU7CisgICAgaW50IGxpbmVubzsKKworICAgIGNvZGUgPSBmcmFtZS0+Zl9jb2RlOworICAgIFBVVFMoZmQsICIgIEZpbGUgIik7CisgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19maWxlbmFtZSAhPSBOVUxMCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19maWxlbmFtZSkpCisgICAgeworICAgICAgICB3cml0ZShmZCwgIlwiIiwgMSk7CisgICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgd3JpdGUoZmQsICJcIiIsIDEpOworICAgIH0gZWxzZSB7CisgICAgICAgIFBVVFMoZmQsICI/Pz8iKTsKKyAgICB9CisKKyAgICAvKiBQeUZyYW1lX0dldExpbmVOdW1iZXIoKSB3YXMgaW50cm9kdWNlZCBpbiBQeXRob24gMi43LjAgYW5kIDMuMi4wICovCisgICAgbGluZW5vID0gUHlDb2RlX0FkZHIyTGluZShjb2RlLCBmcmFtZS0+Zl9sYXN0aSk7CisgICAgUFVUUyhmZCwgIiwgbGluZSAiKTsKKyAgICBkdW1wX2RlY2ltYWwoZmQsIGxpbmVubyk7CisgICAgUFVUUyhmZCwgIiBpbiAiKTsKKworICAgIGlmIChjb2RlICE9IE5VTEwgJiYgY29kZS0+Y29fbmFtZSAhPSBOVUxMCisgICAgICAgICYmIFB5VW5pY29kZV9DaGVjayhjb2RlLT5jb19uYW1lKSkKKyAgICAgICAgZHVtcF9hc2NpaShmZCwgY29kZS0+Y29fbmFtZSk7CisgICAgZWxzZQorICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CisKKyAgICB3cml0ZShmZCwgIlxuIiwgMSk7Cit9CisKK3N0YXRpYyB2b2lkCitkdW1wX3RyYWNlYmFjayhpbnQgZmQsIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSwgaW50IHdyaXRlX2hlYWRlcikKK3sKKyAgICBQeUZyYW1lT2JqZWN0ICpmcmFtZTsKKyAgICB1bnNpZ25lZCBpbnQgZGVwdGg7CisKKyAgICBpZiAod3JpdGVfaGVhZGVyKQorICAgICAgICBQVVRTKGZkLCAiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbiIpOworCisgICAgZnJhbWUgPSBfUHlUaHJlYWRTdGF0ZV9HZXRGcmFtZSh0c3RhdGUpOworICAgIGlmIChmcmFtZSA9PSBOVUxMKQorICAgICAgICByZXR1cm47CisKKyAgICBkZXB0aCA9IDA7CisgICAgd2hpbGUgKGZyYW1lICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKE1BWF9GUkFNRV9ERVBUSCA8PSBkZXB0aCkgeworICAgICAgICAgICAgUFVUUyhmZCwgIiAgLi4uXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICghUHlGcmFtZV9DaGVjayhmcmFtZSkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZHVtcF9mcmFtZShmZCwgZnJhbWUpOworICAgICAgICBmcmFtZSA9IGZyYW1lLT5mX2JhY2s7CisgICAgICAgIGRlcHRoKys7CisgICAgfQorfQorCit2b2lkCitfUHlfRHVtcFRyYWNlYmFjayhpbnQgZmQsIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKK3sKKyAgICBkdW1wX3RyYWNlYmFjayhmZCwgdHN0YXRlLCAxKTsKK30KKworLyogV3JpdGUgdGhlIHRocmVhZCBpZGVudGlmaWVyIGludG8gdGhlIGZpbGUgJ2ZkJzogIkN1cnJlbnQgdGhyZWFkIDB4SEhISDpcIiBpZgorICAgaXNfY3VycmVudCBpcyB0cnVlLCAiVGhyZWFkIDB4SEhISDpcbiIgb3RoZXJ3aXNlLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworCitzdGF0aWMgdm9pZAord3JpdGVfdGhyZWFkX2lkKGludCBmZCwgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlLCBpbnQgaXNfY3VycmVudCkKK3sKKyAgICBpZiAoaXNfY3VycmVudCkKKyAgICAgICAgUFVUUyhmZCwgIkN1cnJlbnQgdGhyZWFkIDB4Iik7CisgICAgZWxzZQorICAgICAgICBQVVRTKGZkLCAiVGhyZWFkIDB4Iik7CisgICAgZHVtcF9oZXhhZGVjaW1hbChzaXplb2YobG9uZykqMiwgKHVuc2lnbmVkIGxvbmcpdHN0YXRlLT50aHJlYWRfaWQsIGZkKTsKKyAgICBQVVRTKGZkLCAiOlxuIik7Cit9CisKK2NvbnN0IGNoYXIqCitfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisgICAgdW5zaWduZWQgaW50IG50aHJlYWRzOworCisgICAgLyogR2V0IHRoZSBjdXJyZW50IGludGVycHJldGVyIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkICovCisgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKKyAgICBpZiAodHN0YXRlID09IE5VTEwpCisgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgdGhyZWFkIGhlYWQgc3RhdGUiOworCisgICAgLyogRHVtcCB0aGUgdHJhY2ViYWNrIG9mIGVhY2ggdGhyZWFkICovCisgICAgdHN0YXRlID0gUHlJbnRlcnByZXRlclN0YXRlX1RocmVhZEhlYWQoaW50ZXJwKTsKKyAgICBudGhyZWFkcyA9IDA7CisgICAgZG8KKyAgICB7CisgICAgICAgIGlmIChudGhyZWFkcyAhPSAwKQorICAgICAgICAgICAgd3JpdGUoZmQsICJcbiIsIDEpOworICAgICAgICBpZiAobnRocmVhZHMgPj0gTUFYX05USFJFQURTKSB7CisgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90aHJlYWQpOworICAgICAgICBkdW1wX3RyYWNlYmFjayhmZCwgdHN0YXRlLCAwKTsKKyAgICAgICAgdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9OZXh0KHRzdGF0ZSk7CisgICAgICAgIG50aHJlYWRzKys7CisgICAgfSB3aGlsZSAodHN0YXRlICE9IE5VTEwpOworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCBiMTM4MDZiLi5jZWY3Mzg0IDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0xLDQgKzEsNCBAQAotVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjIuMworVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjMuMAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsCkBAIC0xNSw2ICsxNSw4IEBACiAKIE9uIFVuaXgsIExpbnV4LCBCU0QsIE9TWCwgYW5kIEN5Z3dpbjoKIAorTmV3IHRleHQKKwogICAgIC4vY29uZmlndXJlCiAgICAgbWFrZQogICAgIG1ha2UgdGVzdApAQCAtNTAsOSArNTIsOSBAQAogLS0tLS0tLS0tLQogCiBXZSB0cnkgdG8gaGF2ZSBhIGNvbXByZWhlbnNpdmUgb3ZlcnZpZXcgb2YgdGhlIGNoYW5nZXMgaW4gdGhlICJXaGF0J3MgTmV3IGluCi1QeXRob24gMy4yIiBkb2N1bWVudCwgZm91bmQgYXQKK1B5dGhvbiAzLjMiIGRvY3VtZW50LCBmb3VuZCBhdAogCi0gICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvd2hhdHNuZXcvMy4yLmh0bWwKKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy93aGF0c25ldy8zLjMuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sIGlzCiBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNyByZWxlYXNlIHVuZGVyCkBAIC02NSw5ICs2Nyw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjIgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuMyBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMi8KKyAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy8KIAogSXQgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiBtYW55IGZvcm1hdHMgZm9yIGZhc3RlciBhY2Nlc3MuICBUaGUgZG9jdW1lbnRhdGlvbgogaXMgZG93bmxvYWRhYmxlIGluIEhUTUwsIFBERiwgYW5kIHJlU3RydWN0dXJlZFRleHQgZm9ybWF0czsgdGhlIGxhdHRlciB2ZXJzaW9uCkBAIC04NSwxOCArODcsMTYgQEAKIEEgc291cmNlLXRvLXNvdXJjZSB0cmFuc2xhdGlvbiB0b29sLCAiMnRvMyIsIGNhbiB0YWtlIGNhcmUgb2YgdGhlIG11bmRhbmUgdGFzawogb2YgY29udmVydGluZyBsYXJnZSBhbW91bnRzIG9mIHNvdXJjZSBjb2RlLiAgSXQgaXMgbm90IGEgY29tcGxldGUgc29sdXRpb24gYnV0CiBpcyBjb21wbGVtZW50ZWQgYnkgdGhlIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGluIDIuNi4gIFNlZQotaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zLjIvbGlicmFyeS8ydG8zLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCitodHRwOi8vZG9jcy5weXRob24ub3JnLzMuMy9saWJyYXJ5LzJ0bzMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogCiBUZXN0aW5nCiAtLS0tLS0tCiAKLVRvIHRlc3QgdGhlIGludGVycHJldGVyLCB0eXBlICJtYWtlIHRlc3QiIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LiAgVGhpcyBydW5zCi10aGUgdGVzdCBzZXQgdHdpY2UgKG9uY2Ugd2l0aCBubyBjb21waWxlZCBmaWxlcywgb25jZSB3aXRoIHRoZSBjb21waWxlZCBmaWxlcwotbGVmdCBieSB0aGUgcHJldmlvdXMgdGVzdCBydW4pLiAgVGhlIHRlc3Qgc2V0IHByb2R1Y2VzIHNvbWUgb3V0cHV0LiAgWW91IGNhbgotZ2VuZXJhbGx5IGlnbm9yZSB0aGUgbWVzc2FnZXMgYWJvdXQgc2tpcHBlZCB0ZXN0cyBkdWUgdG8gb3B0aW9uYWwgZmVhdHVyZXMgd2hpY2gKLWNhbid0IGJlIGltcG9ydGVkLiAgSWYgYSBtZXNzYWdlIGlzIHByaW50ZWQgYWJvdXQgYSBmYWlsZWQgdGVzdCBvciBhIHRyYWNlYmFjawotb3IgY29yZSBkdW1wIGlzIHByb2R1Y2VkLCBzb21ldGhpbmcgaXMgd3JvbmcuCitUbyB0ZXN0IHRoZSBpbnRlcnByZXRlciwgdHlwZSAibWFrZSB0ZXN0IiBpbiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeS4gIFRoZSB0ZXN0CitzZXQgcHJvZHVjZXMgc29tZSBvdXRwdXQuICBZb3UgY2FuIGdlbmVyYWxseSBpZ25vcmUgdGhlIG1lc3NhZ2VzIGFib3V0IHNraXBwZWQKK3Rlc3RzIGR1ZSB0byBvcHRpb25hbCBmZWF0dXJlcyB3aGljaCBjYW4ndCBiZSBpbXBvcnRlZC4gIElmIGEgbWVzc2FnZSBpcyBwcmludGVkCithYm91dCBhIGZhaWxlZCB0ZXN0IG9yIGEgdHJhY2ViYWNrIG9yIGNvcmUgZHVtcCBpcyBwcm9kdWNlZCwgc29tZXRoaW5nIGlzIHdyb25nLgogCiBCeSBkZWZhdWx0LCB0ZXN0cyBhcmUgcHJldmVudGVkIGZyb20gb3ZlcnVzaW5nIHJlc291cmNlcyBsaWtlIGRpc2sgc3BhY2UgYW5kCiBtZW1vcnkuICBUbyBlbmFibGUgdGhlc2UgdGVzdHMsIHJ1biAibWFrZSB0ZXN0YWxsIi4KQEAgLTEyNSw4ICsxMjUsOCBAQAogSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZwogIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjUsIDIuNiBhbmQgMy4yIHdpdGggMi42IGJlaW5nIHRoZQotcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNiBidWlsZCBkaXJlY3RvcnkKK0ZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy4zIHdpdGggMi43IGJlaW5nIHRoZQorcHJpbWFyeSB2ZXJzaW9uLCB5b3Ugd291bGQgZXhlY3V0ZSAibWFrZSBpbnN0YWxsIiBpbiB5b3VyIDIuNyBidWlsZCBkaXJlY3RvcnkKIGFuZCAibWFrZSBhbHRpbnN0YWxsIiBpbiB0aGUgb3RoZXJzLgogCiAKQEAgLTE2MSw3ICsxNjEsNyBAQAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDM5MiBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTIvCitTZWUgUEVQIDM5OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTgvCiAKIAogQ29weXJpZ2h0IGFuZCBMaWNlbnNlIEluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Ub29scy9SRUFETUUgYi9Ub29scy9SRUFETUUKaW5kZXggYzFmODliYS4uMGQ5NjFkZSAxMDA2NDQKLS0tIGEvVG9vbHMvUkVBRE1FCisrKyBiL1Rvb2xzL1JFQURNRQpAQCAtMyw3ICszLDcgQEAKIAogYnVpbGRib3QgICAgICAgIEJhdGNoZmlsZXMgZm9yIHJ1bm5pbmcgb24gV2luZG93cyBidWlsZHNsYXZlcy4KIAotY2NiZW5jaCAgICAgICAgIEEgUHl0aG9uIGNvbmN1cnJlbmN5IGJlbmNobWFyay4KK2NjYmVuY2ggICAgICAgICBBIFB5dGhvbiB0aHJlYWRzLWJhc2VkIGNvbmN1cnJlbmN5IGJlbmNobWFyay4gKCopCiAKIGRlbW8gICAgICAgICAgICBTZXZlcmFsIFB5dGhvbiBwcm9ncmFtbWluZyBkZW1vcy4KIApAQCAtMTcsMTMgKzE3LDEzIEBACiAgICAgICAgICAgICAgICAgYW5kIG1zZ2ZtdC5weSBnZW5lcmF0ZXMgYSBiaW5hcnkgbWVzc2FnZSBjYXRhbG9nCiAgICAgICAgICAgICAgICAgZnJvbSBhIGNhdGFsb2cgaW4gdGV4dCBmb3JtYXQuCiAKLWlvYmVuY2ggICAgICAgICBCZW5jaG1hcmsgZm9yIHRoZSBuZXcgUHl0aG9uIEkvTyBzeXN0ZW0uCitpb2JlbmNoICAgICAgICAgQmVuY2htYXJrIGZvciB0aGUgbmV3IFB5dGhvbiBJL08gc3lzdGVtLiAoKikKIAogbXNpICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHBhY2thZ2luZyBQeXRob24gYXMgYW4gTVNJIHBhY2thZ2Ugb24gV2luZG93cy4KIAogcGFyc2VyICAgICAgICAgIFVuLXBhcnNpbmcgdG9vbCB0byBnZW5lcmF0ZSBjb2RlIGZyb20gYW4gQVNULgogCi1weWJlbmNoICAgICAgICAgQ29tcHJlaGVuc2l2ZSBQeXRob24gYmVuY2htYXJraW5nIHN1aXRlLgorcHliZW5jaCAgICAgICAgIExvdy1sZXZlbCBiZW5jaG1hcmtpbmcgZm9yIHRoZSBQeXRob24gZXZhbHVhdGlvbiBsb29wLiAoKikKIAogcHluY2hlICAgICAgICAgIEEgVGtpbnRlci1iYXNlZCBjb2xvciBlZGl0b3IuCiAKQEAgLTMyLDYgKzMyLDkgQEAKICAgICAgICAgICAgICAgICB0YWJzIGFuZCBzcGFjZXMsIGFuZCAydG8zLCB3aGljaCBjb252ZXJ0cyBQeXRob24gMiBjb2RlCiAgICAgICAgICAgICAgICAgdG8gUHl0aG9uIDMgY29kZS4KIAorc3RyaW5nYmVuY2ggICAgIEEgc3VpdGUgb2YgbWljcm8tYmVuY2htYXJrcyBmb3IgdmFyaW91cyBvcGVyYXRpb25zIG9uCisgICAgICAgICAgICAgICAgc3RyaW5ncyAoYm90aCA4LWJpdCBhbmQgdW5pY29kZSkuICgqKQorCiB0ZXN0MnRvMyAgICAgICAgQSBkZW1vbnN0cmF0aW9uIG9mIGhvdyB0byB1c2UgMnRvMyB0cmFuc3BhcmVudGx5IGluIHNldHVwLnB5LgogCiB1bmljb2RlICAgICAgICAgVG9vbHMgZm9yIGdlbmVyYXRpbmcgdW5pY29kZWRhdGEgYW5kIGNvZGVjcyBmcm9tIHVuaWNvZGUub3JnCkBAIC00MCwzICs0Myw2IEBACiAKIHVuaXR0ZXN0Z3VpICAgICBBIFRraW50ZXIgYmFzZWQgR1VJIHRlc3QgcnVubmVyIGZvciB1bml0dGVzdCwgd2l0aCB0ZXN0CiAgICAgICAgICAgICAgICAgZGlzY292ZXJ5LgorCisKKygqKSBBIGdlbmVyaWMgYmVuY2htYXJrIHN1aXRlIGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBhdCBodHRwOi8vaGcucHl0aG9uLm9yZy9iZW5jaG1hcmtzLwpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CmluZGV4IDg3MTNiMzguLjdlZTdiMmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKQEAgLTEsNyArMSw3IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLgotc2V0IEhPU1RfUFlUSE9OPSIlQ0QlXFBDYnVpbGRcYW1kNjRccHl0aG9uX2QuZXhlIgogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLWFtZDY0LmJhdAotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIGNtZCAvYyBUb29sc1xidWlsZGJvdFxjbGVhbi1hbWQ2NC5iYXQKLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXGtpbGxfcHl0aG9uLnZjcHJvaiAiRGVidWd8eDY0IiAmJiBQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gIkRlYnVnfHg2NCIKK21zYnVpbGQgUENidWlsZFxraWxsX3B5dGhvbi52Y3hwcm9qIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CitQQ2J1aWxkXGFtZDY0XGtpbGxfcHl0aG9uX2QuZXhlCittc2J1aWxkIFBDYnVpbGRccGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybT14NjQKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdAppbmRleCBhYjNlYTdkLi5jOTNjZmQ1IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CkBAIC0xLDcgKzEsOCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4KIGNtZCAvYyBUb29sc1xidWlsZGJvdFxleHRlcm5hbC5iYXQKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBjbWQgL2MgVG9vbHNcYnVpbGRib3RcY2xlYW4uYmF0Ci12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxraWxsX3B5dGhvbi52Y3Byb2ogIkRlYnVnfFdpbjMyIiAmJiBQQ2J1aWxkXGtpbGxfcHl0aG9uX2QuZXhlCi12Y2J1aWxkIC91c2VlbnYgUENidWlsZFxwY2J1aWxkLnNsbiAiRGVidWd8V2luMzIiCittc2J1aWxkIFBDYnVpbGRca2lsbF9weXRob24udmN4cHJvaiAvcDpDb25maWd1cmF0aW9uPURlYnVnIC9wOlBsYXRmb3JtVGFyZ2V0PXg4NgorUENidWlsZFxraWxsX3B5dGhvbl9kLmV4ZQorbXNidWlsZCBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm09V2luMzIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0IGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CmluZGV4IDQ0MzBjYjguLmFlOTNlNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKQEAgLTIsMTAgKzIsMTAgQEAKIAogY21kIC9jIFRvb2xzXGJ1aWxkYm90XGV4dGVybmFsLmJhdAogQHJlbSBidWlsZCByZWxlYXNlIHZlcnNpb25zIG9mIHRoaW5ncwotY2FsbCAiJVZTOTBDT01OVE9PTFMldnN2YXJzMzIuYmF0IgorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKIAogQHJlbSBidWlsZCBQeXRob24KLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXHBjYnVpbGQuc2xuICJSZWxlYXNlfFdpbjMyIgorbXNidWlsZCAvcDp1c2VlbnY9dHJ1ZSBQQ2J1aWxkXHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249UmVsZWFzZSAvcDpQbGF0Zm9ybT1XaW4zMgogCiBAcmVtIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uCiBiYXNoLmV4ZSAtYyAnY2QgRG9jO21ha2UgUFlUSE9OPXB5dGhvbjIuNSB1cGRhdGUgaHRtbGhlbHAnCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKaW5kZXggNzE1ODA1YS4uMjQ2NjBhZiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdApAQCAtMSwxMCArMSwxMCBAQAogQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY2xlYW4iIHN0ZXAuCi1jYWxsICIlVlM5MENPTU5UT09MUyVcLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgeDg2X2FtZDY0CitjYWxsICIlVlMxMDBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAogQGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgogZGVsIC9zIExpYlwqLnB5YyBMaWJcKi5weW8KIEBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLgogcm1kaXIgL3MgL3EgYnVpbGQKIGNkIFBDYnVpbGQKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJSZWxlYXNlfHg2NCIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3x4NjQiCittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtVGFyZ2V0PXg2NAorbXNidWlsZCAvdGFyZ2V0OmNsZWFuIHBjYnVpbGQuc2xuIC9wOkNvbmZpZ3VyYXRpb249RGVidWcgL3A6UGxhdGZvcm1UYXJnZXQ9eDY0CiBjZCAuLgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0IGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CmluZGV4IDBjMDRiOGUuLjIxOGZhY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKQEAgLTEsOCArMSw4IEBACiBAcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCIKK2NhbGwgIiVWUzEwMENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCiBAZWNobyBEZWxldGluZyB0ZXN0IGxlZnRvdmVycyAuLi4KIHJtZGlyIC9zIC9xIGJ1aWxkCiBjZCBQQ2J1aWxkCi12Y2J1aWxkIC9jbGVhbiBwY2J1aWxkLnNsbiAiUmVsZWFzZXxXaW4zMiIKLXZjYnVpbGQgL2NsZWFuIHBjYnVpbGQuc2xuICJEZWJ1Z3xXaW4zMiIKK21zYnVpbGQgL3RhcmdldDpjbGVhbiBwY2J1aWxkLnNsbiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm1UYXJnZXQ9eDg2Cittc2J1aWxkIC90YXJnZXQ6Y2xlYW4gcGNidWlsZC5zbG4gL3A6Q29uZmlndXJhdGlvbj1EZWJ1ZyAvcDpQbGF0Zm9ybVRhcmdldD14ODYKIGNkIC4uCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKaW5kZXggOTU0MjM4ZS4uZDJmZjI1NSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdApAQCAtMiwyMCArMiwyMCBAQAogCiBAcmVtIEFzc3VtZSB3ZSBzdGFydCBpbnNpZGUgdGhlIFB5dGhvbiBzb3VyY2UgZGlyZWN0b3J5CiBjYWxsICJUb29sc1xidWlsZGJvdFxleHRlcm5hbC1jb21tb24uYmF0IgotY2FsbCAiJVZTOTBDT01OVE9PTFMlXC4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiIHg4Nl9hbWQ2NAorY2FsbCAiJVZTMTAwQ09NTlRPT0xTJVwuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiB4ODZfYW1kNjQKIAogaWYgbm90IGV4aXN0IHRjbHRrNjRcYmluXHRjbDg1Zy5kbGwgKAotICAgIGNkIHRjbC04LjUuOS4wXHdpbgorICAgIGNkIHRjbC04LjUuMTEuMFx3aW4KICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IGNsZWFuIGFsbAogICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0azY0XGJpblx0azg1Zy5kbGwgKAotICAgIGNkIHRrLTguNS45LjBcd2luICAgIAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIE1BQ0hJTkU9QU1ENjQgSU5TVEFMTERJUj0uLlwuLlx0Y2x0azY0IFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBhbGwKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS45LjAgaW5zdGFsbAorICAgIGNkIHRrLTguNS4xMS4wXHdpbiAgICAKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGNsZWFuCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgTUFDSElORT1BTUQ2NCBJTlNUQUxMRElSPS4uXC4uXHRjbHRrNjQgVENMRElSPS4uXC4uXHRjbC04LjUuMTEuMCBhbGwKKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBNQUNISU5FPUFNRDY0IElOU1RBTExESVI9Li5cLi5cdGNsdGs2NCBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQogCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtY29tbW9uLmJhdAppbmRleCAyMTY1YjhhLi40ZTlmZTQxIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1jb21tb24uYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWNvbW1vbi5iYXQKQEAgLTE0LDggKzE0LDggQEAKIEByZW0gaWYgZXhpc3QgdGs4LjQuMTYgcmQgL3MvcSB0azguNC4xNgogQHJlbSBpZiBleGlzdCB0ay04LjQuMTguMSByZCAvcy9xIHRrLTguNC4xOC4xCiBAcmVtIGlmIGV4aXN0IGRiLTQuNC4yMCByZCAvcy9xIGRiLTQuNC4yMAotQHJlbSBpZiBleGlzdCBvcGVuc3NsLTEuMC4waiByZCAvcy9xIG9wZW5zc2wtMS4wLjBqCi1AcmVtIGlmIGV4aXN0IHNxbGl0ZS0zLjcuNCByZCAvcy9xIHNxbGl0ZS0zLjcuNCAgICAKK0ByZW0gaWYgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgcmQgL3MvcSBvcGVuc3NsLTEuMC4xYworQHJlbSBpZiBleGlzdCBzcWxpdGUtMy43LjEyIHJkIC9zL3Egc3FsaXRlLTMuNy4xMiAgICAKIAogQHJlbSBiemlwCiBpZiBub3QgZXhpc3QgYnppcDItMS4wLjYgKApAQCAtMjQsMTcgKzI0LDI1IEBACiApCiAKIEByZW0gT3BlblNTTAotaWYgbm90IGV4aXN0IG9wZW5zc2wtMS4wLjBqIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjBqCitpZiBub3QgZXhpc3Qgb3BlbnNzbC0xLjAuMWMgKAorICAgIHJkIC9zL3Egb3BlbnNzbC0xLjAuMGoKKyAgICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9vcGVuc3NsLTEuMC4xYworKQogCiBAcmVtIHRjbC90awotaWYgbm90IGV4aXN0IHRjbC04LjUuOS4wICgKK2lmIG5vdCBleGlzdCB0Y2wtOC41LjExLjAgKAogICAgcmQgL3MvcSB0Y2x0ayB0Y2x0azY0Ci0gICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90Y2wtOC41LjkuMAorICAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGNsLTguNS4xMS4wCiApCi1pZiBub3QgZXhpc3QgdGstOC41LjkuMCBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC90ay04LjUuOS4wCitpZiBub3QgZXhpc3QgdGstOC41LjExLjAgc3ZuIGV4cG9ydCBodHRwOi8vc3ZuLnB5dGhvbi5vcmcvcHJvamVjdHMvZXh0ZXJuYWwvdGstOC41LjExLjAKIAogQHJlbSBzcWxpdGUzCi1pZiBub3QgZXhpc3Qgc3FsaXRlLTMuNy40ICgKLSAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNi4yMQotICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC9zcWxpdGUtMy43LjQKK2lmIG5vdCBleGlzdCBzcWxpdGUtMy43LjEyICgKKyAgcmQgL3MvcSBzcWxpdGUtc291cmNlLTMuNy40CisgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL3NxbGl0ZS0zLjcuMTIKKykKKworQHJlbSBsem1hCitpZiBub3QgZXhpc3QgeHotNS4wLjMgKAorICBzdm4gZXhwb3J0IGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC94ei01LjAuMwogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmluZGV4IGU5NThmZDYuLmVkNWMxMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKQEAgLTIsMjAgKzIsMjAgQEAKIAogQHJlbSBBc3N1bWUgd2Ugc3RhcnQgaW5zaWRlIHRoZSBQeXRob24gc291cmNlIGRpcmVjdG9yeQogY2FsbCAiVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwtY29tbW9uLmJhdCIKLWNhbGwgIiVWUzkwQ09NTlRPT0xTJVx2c3ZhcnMzMi5iYXQiCitjYWxsICIlVlMxMDBDT01OVE9PTFMlXHZzdmFyczMyLmJhdCIKIAogaWYgbm90IGV4aXN0IHRjbHRrXGJpblx0Y2w4NWcuZGxsICgKICAgICBAcmVtIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwKLSAgICBjZCB0Y2wtOC41LjkuMFx3aW4KKyAgICBjZCB0Y2wtOC41LjExLjBcd2luCiAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIGNsZWFuIGFsbCAKICAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgaW5zdGFsbAogICAgIGNkIC4uXC4uCiApCiAKIGlmIG5vdCBleGlzdCB0Y2x0a1xiaW5cdGs4NWcuZGxsICgKLSAgICBjZCB0ay04LjUuOS4wXHdpbiAgICAKLSAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjkuMCBjbGVhbgotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGFsbAotICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIENPTVBJTEVSRkxBR1M9LURXSU5WRVI9MHgwNTAwIE9QVFM9bm94cCBERUJVRz0xIElOU1RBTExESVI9Li5cLi5cdGNsdGsgVENMRElSPS4uXC4uXHRjbC04LjUuOS4wIGluc3RhbGwKKyAgICBjZCB0ay04LjUuMTEuMFx3aW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgY2xlYW4KKyAgICBubWFrZSAtZiBtYWtlZmlsZS52YyBDT01QSUxFUkZMQUdTPS1EV0lOVkVSPTB4MDUwMCBPUFRTPW5veHAgREVCVUc9MSBJTlNUQUxMRElSPS4uXC4uXHRjbHRrIFRDTERJUj0uLlwuLlx0Y2wtOC41LjExLjAgYWxsCisgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgQ09NUElMRVJGTEFHUz0tRFdJTlZFUj0weDA1MDAgT1BUUz1ub3hwIERFQlVHPTEgSU5TVEFMTERJUj0uLlwuLlx0Y2x0ayBUQ0xESVI9Li5cLi5cdGNsLTguNS4xMS4wIGluc3RhbGwKICAgICBjZCAuLlwuLgogKQpkaWZmIC0tZ2l0IGEvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5IGIvVG9vbHMvY2NiZW5jaC9jY2JlbmNoLnB5CmluZGV4IDlmNzExOGYuLjYwY2VjM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2NjYmVuY2gvY2NiZW5jaC5weQorKysgYi9Ub29scy9jY2JlbmNoL2NjYmVuY2gucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0aW1lCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC00MzUsNzAgKzQzNCw3MCBAQAogZGVmIHJ1bl9iYW5kd2lkdGhfdGVzdChmdW5jLCBhcmdzLCBudGhyZWFkcyk6CiAgICAgIyBDcmVhdGUgYSBsaXN0ZW5pbmcgc29ja2V0IHRvIHJlY2VpdmUgdGhlIHBhY2tldHMuIFdlIHVzZSBVRFAgd2hpY2ggc2hvdWxkCiAgICAgIyBiZSBwYWlubGVzc2x5IGNyb3NzLXBsYXRmb3JtLgotICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkKLSAgICBzb2NrLmJpbmQoKCIxMjcuMC4wLjEiLCAwKSkKLSAgICBhZGRyID0gc29jay5nZXRzb2NrbmFtZSgpCisgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19ER1JBTSkgYXMgc29jazoKKyAgICAgICAgc29jay5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgIGFkZHIgPSBzb2NrLmdldHNvY2tuYW1lKCkKIAotICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCi0gICAgcGFja2V0X3NpemUgPSBCQU5EV0lEVEhfUEFDS0VUX1NJWkUKLQotICAgIHJlc3VsdHMgPSBbXQotICAgIHRocmVhZHMgPSBbXQotICAgIGVuZF9ldmVudCA9IFtdCi0gICAgc3RhcnRfY29uZCA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgIHN0YXJ0ZWQgPSBGYWxzZQotICAgIGlmIG50aHJlYWRzID4gMDoKLSAgICAgICAgIyBXYXJtIHVwCi0gICAgICAgIGZ1bmMoKmFyZ3MpCisgICAgICAgIGR1cmF0aW9uID0gQkFORFdJRFRIX0RVUkFUSU9OCisgICAgICAgIHBhY2tldF9zaXplID0gQkFORFdJRFRIX1BBQ0tFVF9TSVpFCiAKICAgICAgICAgcmVzdWx0cyA9IFtdCi0gICAgICAgIGxvb3AgPSBUaW1lZExvb3AoZnVuYywgYXJncykKLSAgICAgICAgcmVhZHkgPSBbXQotICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHRocmVhZHMgPSBbXQorICAgICAgICBlbmRfZXZlbnQgPSBbXQorICAgICAgICBzdGFydF9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisgICAgICAgIHN0YXJ0ZWQgPSBGYWxzZQorICAgICAgICBpZiBudGhyZWFkcyA+IDA6CisgICAgICAgICAgICAjIFdhcm0gdXAKKyAgICAgICAgICAgIGZ1bmMoKmFyZ3MpCiAKLSAgICAgICAgZGVmIHJ1bigpOgorICAgICAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgICAgICBsb29wID0gVGltZWRMb29wKGZ1bmMsIGFyZ3MpCisgICAgICAgICAgICByZWFkeSA9IFtdCisgICAgICAgICAgICByZWFkeV9jb25kID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpCisKKyAgICAgICAgICAgIGRlZiBydW4oKToKKyAgICAgICAgICAgICAgICB3aXRoIHJlYWR5X2NvbmQ6CisgICAgICAgICAgICAgICAgICAgIHJlYWR5LmFwcGVuZChOb25lKQorICAgICAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCisgICAgICAgICAgICAgICAgd2l0aCBzdGFydF9jb25kOgorICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCisgICAgICAgICAgICAgICAgbG9vcChzdGFydF90aW1lLCBkdXJhdGlvbiAqIDEuNSwgZW5kX2V2ZW50LCBkb195aWVsZD1GYWxzZSkKKworICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnRocmVhZHMpOgorICAgICAgICAgICAgICAgIHRocmVhZHMuYXBwZW5kKHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bikpCisgICAgICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgICAgIHQuc2V0RGFlbW9uKFRydWUpCisgICAgICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKICAgICAgICAgICAgIHdpdGggcmVhZHlfY29uZDoKLSAgICAgICAgICAgICAgICByZWFkeS5hcHBlbmQoTm9uZSkKLSAgICAgICAgICAgICAgICByZWFkeV9jb25kLm5vdGlmeSgpCi0gICAgICAgICAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbm90IHN0YXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0X2NvbmQud2FpdCgpCi0gICAgICAgICAgICBsb29wKHN0YXJ0X3RpbWUsIGR1cmF0aW9uICogMS41LCBlbmRfZXZlbnQsIGRvX3lpZWxkPUZhbHNlKQorICAgICAgICAgICAgICAgIHdoaWxlIGxlbihyZWFkeSkgPCBudGhyZWFkczoKKyAgICAgICAgICAgICAgICAgICAgcmVhZHlfY29uZC53YWl0KCkKIAotICAgICAgICBmb3IgaSBpbiByYW5nZShudGhyZWFkcyk6Ci0gICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1ydW4pKQotICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgotICAgICAgICAgICAgdC5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgICAgIHQuc3RhcnQoKQotICAgICAgICAjIFdhaXQgZm9yIHRocmVhZHMgdG8gYmUgcmVhZHkKLSAgICAgICAgd2l0aCByZWFkeV9jb25kOgotICAgICAgICAgICAgd2hpbGUgbGVuKHJlYWR5KSA8IG50aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlYWR5X2NvbmQud2FpdCgpCi0KLSAgICAjIFJ1biB0aGUgY2xpZW50IGFuZCB3YWl0IGZvciB0aGUgZmlyc3QgcGFja2V0IHRvIGFycml2ZSBiZWZvcmUKLSAgICAjIHVuYmxvY2tpbmcgdGhlIGJhY2tncm91bmQgdGhyZWFkcy4KLSAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfc2l6ZT1wYWNrZXRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249ZHVyYXRpb24pCi0gICAgX3RpbWUgPSB0aW1lLnRpbWUKLSAgICAjIFRoaXMgd2lsbCBhbHNvIHdhaXQgZm9yIHRoZSBwYXJlbnQgdG8gYmUgcmVhZHkKLSAgICBzID0gX3JlY3Yoc29jaywgcGFja2V0X3NpemUpCi0gICAgcmVtb3RlX2FkZHIgPSBldmFsKHMucGFydGl0aW9uKCcjJylbMF0pCi0KLSAgICB3aXRoIHN0YXJ0X2NvbmQ6Ci0gICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCi0gICAgICAgIHN0YXJ0ZWQgPSBUcnVlCi0gICAgICAgIHN0YXJ0X2NvbmQubm90aWZ5KG50aHJlYWRzKQotCi0gICAgbiA9IDAKLSAgICBmaXJzdF90aW1lID0gTm9uZQotICAgIHdoaWxlIG5vdCBlbmRfZXZlbnQgYW5kIEJXX0VORCBub3QgaW4gczoKLSAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgIyBSdW4gdGhlIGNsaWVudCBhbmQgd2FpdCBmb3IgdGhlIGZpcnN0IHBhY2tldCB0byBhcnJpdmUgYmVmb3JlCisgICAgICAgICMgdW5ibG9ja2luZyB0aGUgYmFja2dyb3VuZCB0aHJlYWRzLgorICAgICAgICBwcm9jZXNzID0gcnVuX2JhbmR3aWR0aF9jbGllbnQoYWRkcj1hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3NpemU9cGFja2V0X3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1kdXJhdGlvbikKKyAgICAgICAgX3RpbWUgPSB0aW1lLnRpbWUKKyAgICAgICAgIyBUaGlzIHdpbGwgYWxzbyB3YWl0IGZvciB0aGUgcGFyZW50IHRvIGJlIHJlYWR5CiAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKLSAgICAgICAgaWYgZmlyc3RfdGltZSBpcyBOb25lOgotICAgICAgICAgICAgZmlyc3RfdGltZSA9IF90aW1lKCkKLSAgICAgICAgbiArPSAxCi0gICAgZW5kX3RpbWUgPSBfdGltZSgpCisgICAgICAgIHJlbW90ZV9hZGRyID0gZXZhbChzLnBhcnRpdGlvbignIycpWzBdKQorCisgICAgICAgIHdpdGggc3RhcnRfY29uZDoKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBfdGltZSgpCisgICAgICAgICAgICBzdGFydGVkID0gVHJ1ZQorICAgICAgICAgICAgc3RhcnRfY29uZC5ub3RpZnkobnRocmVhZHMpCisKKyAgICAgICAgbiA9IDAKKyAgICAgICAgZmlyc3RfdGltZSA9IE5vbmUKKyAgICAgICAgd2hpbGUgbm90IGVuZF9ldmVudCBhbmQgQldfRU5EIG5vdCBpbiBzOgorICAgICAgICAgICAgX3NlbmR0byhzb2NrLCBzLCByZW1vdGVfYWRkcikKKyAgICAgICAgICAgIHMgPSBfcmVjdihzb2NrLCBwYWNrZXRfc2l6ZSkKKyAgICAgICAgICAgIGlmIGZpcnN0X3RpbWUgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBmaXJzdF90aW1lID0gX3RpbWUoKQorICAgICAgICAgICAgbiArPSAxCisgICAgICAgIGVuZF90aW1lID0gX3RpbWUoKQogCiAgICAgZW5kX2V2ZW50LmFwcGVuZChOb25lKQogICAgIGZvciB0IGluIHRocmVhZHM6CmRpZmYgLS1naXQgYS9Ub29scy9kZW1vL2xpZmUucHkgYi9Ub29scy9kZW1vL2xpZmUucHkKaW5kZXggZGZiOWFiOC4uZmM0Y2I0OSAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9saWZlLnB5CisrKyBiL1Rvb2xzL2RlbW8vbGlmZS5weQpAQCAtNDYsMzggKzQ2LDM4IEBACiAgICAgICAgIHNlbGYuc3RhdGUgPSB7fQogICAgICAgICBzZWxmLnNjciA9IHNjcgogICAgICAgICBZLCBYID0gc2VsZi5zY3IuZ2V0bWF4eXgoKQotICAgICAgICBzZWxmLlgsIHNlbGYuWSA9IFgtMiwgWS0yLTEKKyAgICAgICAgc2VsZi5YLCBzZWxmLlkgPSBYIC0gMiwgWSAtIDIgLSAxCiAgICAgICAgIHNlbGYuY2hhciA9IGNoYXIKICAgICAgICAgc2VsZi5zY3IuY2xlYXIoKQogCiAgICAgICAgICMgRHJhdyBhIGJvcmRlciBhcm91bmQgdGhlIGJvYXJkCi0gICAgICAgIGJvcmRlcl9saW5lID0gJysnKyhzZWxmLlgqJy0nKSsnKycKKyAgICAgICAgYm9yZGVyX2xpbmUgPSAnKycgKyAoc2VsZi5YICogJy0nKSArICcrJwogICAgICAgICBzZWxmLnNjci5hZGRzdHIoMCwgMCwgYm9yZGVyX2xpbmUpCi0gICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkrMSwgMCwgYm9yZGVyX2xpbmUpCisgICAgICAgIHNlbGYuc2NyLmFkZHN0cihzZWxmLlkgKyAxLCAwLCBib3JkZXJfbGluZSkKICAgICAgICAgZm9yIHkgaW4gcmFuZ2UoMCwgc2VsZi5ZKToKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIDAsICd8JykKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxK3ksIHNlbGYuWCsxLCAnfCcpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRzdHIoMSArIHksIDAsICd8JykKKyAgICAgICAgICAgIHNlbGYuc2NyLmFkZHN0cigxICsgeSwgc2VsZi5YICsgMSwgJ3wnKQogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKIAogICAgIGRlZiBzZXQoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlNldCBhIGNlbGwgdG8gdGhlIGxpdmUgc3RhdGUiIiIKLSAgICAgICAgaWYgeDwwIG9yIHNlbGYuWDw9eCBvciB5PDAgb3Igc2VsZi5ZPD15OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiUgKHksIHgpKQotICAgICAgICBzZWxmLnN0YXRlW3gseV0gPSAxCisgICAgICAgIGlmIHggPCAwIG9yIHNlbGYuWCA8PSB4IG9yIHkgPCAwIG9yIHNlbGYuWSA8PSB5OgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ29vcmRpbmF0ZXMgb3V0IG9mIHJhbmdlICVpLCVpIiAlICh5LCB4KSkKKyAgICAgICAgc2VsZi5zdGF0ZVt4LCB5XSA9IDEKIAogICAgIGRlZiB0b2dnbGUoc2VsZiwgeSwgeCk6CiAgICAgICAgICIiIlRvZ2dsZSBhIGNlbGwncyBzdGF0ZSBiZXR3ZWVuIGxpdmUgYW5kIGRlYWQiIiIKICAgICAgICAgaWYgeCA8IDAgb3Igc2VsZi5YIDw9IHggb3IgeSA8IDAgb3Igc2VsZi5ZIDw9IHk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiJSAoeSwgeCkpCisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJDb29yZGluYXRlcyBvdXQgb2YgcmFuZ2UgJWksJWkiICUgKHksIHgpKQogICAgICAgICBpZiAoeCwgeSkgaW4gc2VsZi5zdGF0ZToKICAgICAgICAgICAgIGRlbCBzZWxmLnN0YXRlW3gsIHldCi0gICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5KzEsIHgrMSwgJyAnKQorICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goeSArIDEsIHggKyAxLCAnICcpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN0YXRlW3gsIHldID0gMQogICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAjIExldCdzIHBpY2sgYSByYW5kb20gY29sb3IhCiAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYXR0cnNldChjdXJzZXMuY29sb3JfcGFpcihyYW5kb20ucmFuZHJhbmdlKDEsIDcpKSkKLSAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKHkrMSwgeCsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICBzZWxmLnNjci5hZGRjaCh5ICsgMSwgeCArIDEsIHNlbGYuY2hhcikKICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoMCkKICAgICAgICAgc2VsZi5zY3IucmVmcmVzaCgpCiAKQEAgLTg4LDQzICs4OCw0NiBAQAogCiAgICAgZGVmIGRpc3BsYXkoc2VsZiwgdXBkYXRlX2JvYXJkPVRydWUpOgogICAgICAgICAiIiJEaXNwbGF5IHRoZSB3aG9sZSBib2FyZCwgb3B0aW9uYWxseSBjb21wdXRpbmcgb25lIGdlbmVyYXRpb24iIiIKLSAgICAgICAgTSxOID0gc2VsZi5YLCBzZWxmLlkKKyAgICAgICAgTSwgTiA9IHNlbGYuWCwgc2VsZi5ZCiAgICAgICAgIGlmIG5vdCB1cGRhdGVfYm9hcmQ6CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCBNKToKICAgICAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBOKToKLSAgICAgICAgICAgICAgICAgICAgaWYgKGksaikgaW4gc2VsZi5zdGF0ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIChpLCBqKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCBzZWxmLmNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hZGRjaChqKzEsIGkrMSwgJyAnKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKICAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGQgPSB7fQogICAgICAgICBzZWxmLmJvcmluZyA9IDEKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgTSk6Ci0gICAgICAgICAgICBMID0gcmFuZ2UoIG1heCgwLCBpLTEpLCBtaW4oTSwgaSsyKSApCisgICAgICAgICAgICBMID0gcmFuZ2UobWF4KDAsIGkgLSAxKSwgbWluKE0sIGkgKyAyKSkKICAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDAsIE4pOgogICAgICAgICAgICAgICAgIHMgPSAwCi0gICAgICAgICAgICAgICAgbGl2ZSA9IChpLGopIGluIHNlbGYuc3RhdGUKLSAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZSggbWF4KDAsIGotMSksIG1pbihOLCBqKzIpICk6CisgICAgICAgICAgICAgICAgbGl2ZSA9IChpLCBqKSBpbiBzZWxmLnN0YXRlCisgICAgICAgICAgICAgICAgZm9yIGsgaW4gcmFuZ2UobWF4KDAsIGogLSAxKSwgbWluKE4sIGogKyAyKSk6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIEw6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobCxrKSBpbiBzZWxmLnN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwsIGspIGluIHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArPSAxCiAgICAgICAgICAgICAgICAgcyAtPSBsaXZlCiAgICAgICAgICAgICAgICAgaWYgcyA9PSAzOgogICAgICAgICAgICAgICAgICAgICAjIEJpcnRoCi0gICAgICAgICAgICAgICAgICAgIGRbaSxqXSA9IDEKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICAgICAgaWYgY3Vyc2VzLmhhc19jb2xvcnMoKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgTGV0J3MgcGljayBhIHJhbmRvbSBjb2xvciEKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLnJhbmRyYW5nZSgxLCA3KSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGorMSwgaSsxLCBzZWxmLmNoYXIpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NyLmFkZGNoKGogKyAxLCBpICsgMSwgc2VsZi5jaGFyKQogICAgICAgICAgICAgICAgICAgICBzZWxmLnNjci5hdHRyc2V0KDApCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOiBzZWxmLmJvcmluZyA9IDAKLSAgICAgICAgICAgICAgICBlbGlmIHMgPT0gMiBhbmQgbGl2ZTogZFtpLGpdID0gMSAgICAgICAjIFN1cnZpdmFsCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaXZlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib3JpbmcgPSAwCisgICAgICAgICAgICAgICAgZWxpZiBzID09IDIgYW5kIGxpdmU6CisgICAgICAgICAgICAgICAgICAgICMgU3Vydml2YWwKKyAgICAgICAgICAgICAgICAgICAgZFtpLCBqXSA9IDEKICAgICAgICAgICAgICAgICBlbGlmIGxpdmU6CiAgICAgICAgICAgICAgICAgICAgICMgRGVhdGgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaisxLCBpKzEsICcgJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zY3IuYWRkY2goaiArIDEsIGkgKyAxLCAnICcpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYm9yaW5nID0gMAogICAgICAgICBzZWxmLnN0YXRlID0gZAogICAgICAgICBzZWxmLnNjci5yZWZyZXNoKCkKQEAgLTEzNSwxNiArMTM4LDE3IEBACiAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIHNlbGYuWCk6CiAgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSgwLCBzZWxmLlkpOgogICAgICAgICAgICAgICAgIGlmIHJhbmRvbS5yYW5kb20oKSA+IDAuNToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXQoaixpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldChqLCBpKQogCiAKIGRlZiBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KToKICAgICAiQ2xlYXIgdGhlIHNwYWNlIHdoZXJlIHRoZSBtZW51IHJlc2lkZXMiCiAgICAgc3Rkc2NyLm1vdmUobWVudV95LCAwKQogICAgIHN0ZHNjci5jbHJ0b2VvbCgpCi0gICAgc3Rkc2NyLm1vdmUobWVudV95KzEsIDApCisgICAgc3Rkc2NyLm1vdmUobWVudV95ICsgMSwgMCkKICAgICBzdGRzY3IuY2xydG9lb2woKQogCisKIGRlZiBkaXNwbGF5X21lbnUoc3Rkc2NyLCBtZW51X3kpOgogICAgICJEaXNwbGF5IHRoZSBtZW51IG9mIHBvc3NpYmxlIGtleXN0cm9rZSBjb21tYW5kcyIKICAgICBlcmFzZV9tZW51KHN0ZHNjciwgbWVudV95KQpAQCAtMTU0LDE1ICsxNTgsMTYgQEAKICAgICAgICAgc3Rkc2NyLmF0dHJzZXQoY3Vyc2VzLmNvbG9yX3BhaXIoMSkpCiAgICAgc3Rkc2NyLmFkZHN0cihtZW51X3ksIDQsCiAgICAgICAgICdVc2UgdGhlIGN1cnNvciBrZXlzIHRvIG1vdmUsIGFuZCBzcGFjZSBvciBFbnRlciB0byB0b2dnbGUgYSBjZWxsLicpCi0gICAgc3Rkc2NyLmFkZHN0cihtZW51X3krMSwgNCwKKyAgICBzdGRzY3IuYWRkc3RyKG1lbnVfeSArIDEsIDQsCiAgICAgICAgICdFKXJhc2UgdGhlIGJvYXJkLCBSKWFuZG9tIGZpbGwsIFMpdGVwIG9uY2Ugb3IgQylvbnRpbnVvdXNseSwgUSl1aXQnKQogICAgIHN0ZHNjci5hdHRyc2V0KDApCiAKKwogZGVmIGtleWxvb3Aoc3Rkc2NyKToKICAgICAjIENsZWFyIHRoZSBzY3JlZW4gYW5kIGRpc3BsYXkgdGhlIG1lbnUgb2Yga2V5cwogICAgIHN0ZHNjci5jbGVhcigpCiAgICAgc3Rkc2NyX3ksIHN0ZHNjcl94ID0gc3Rkc2NyLmdldG1heHl4KCkKLSAgICBtZW51X3kgPSAoc3Rkc2NyX3ktMyktMQorICAgIG1lbnVfeSA9IChzdGRzY3JfeSAtIDMpIC0gMQogICAgIGRpc3BsYXlfbWVudShzdGRzY3IsIG1lbnVfeSkKIAogICAgICMgSWYgY29sb3IsIHRoZW4gaW5pdGlhbGl6ZSB0aGUgY29sb3IgcGFpcnMKQEAgLTE3OSwxNiArMTg0LDE2IEBACiAgICAgY3Vyc2VzLm1vdXNlbWFzayhjdXJzZXMuQlVUVE9OMV9DTElDS0VEKQogCiAgICAgIyBBbGxvY2F0ZSBhIHN1YndpbmRvdyBmb3IgdGhlIExpZmUgYm9hcmQgYW5kIGNyZWF0ZSB0aGUgYm9hcmQgb2JqZWN0Ci0gICAgc3Vid2luID0gc3Rkc2NyLnN1YndpbihzdGRzY3JfeS0zLCBzdGRzY3JfeCwgMCwgMCkKKyAgICBzdWJ3aW4gPSBzdGRzY3Iuc3Vid2luKHN0ZHNjcl95IC0gMywgc3Rkc2NyX3gsIDAsIDApCiAgICAgYm9hcmQgPSBMaWZlQm9hcmQoc3Vid2luLCBjaGFyPW9yZCgnKicpKQogICAgIGJvYXJkLmRpc3BsYXkodXBkYXRlX2JvYXJkPUZhbHNlKQogCiAgICAgIyB4cG9zLCB5cG9zIGFyZSB0aGUgY3Vyc29yJ3MgcG9zaXRpb24KLSAgICB4cG9zLCB5cG9zID0gYm9hcmQuWC8vMiwgYm9hcmQuWS8vMgorICAgIHhwb3MsIHlwb3MgPSBib2FyZC5YIC8vIDIsIGJvYXJkLlkgLy8gMgogCiAgICAgIyBNYWluIGxvb3A6CiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgc3Rkc2NyLm1vdmUoMSt5cG9zLCAxK3hwb3MpICAgICAjIE1vdmUgdGhlIGN1cnNvcgorICAgICAgICBzdGRzY3IubW92ZSgxICsgeXBvcywgMSArIHhwb3MpICAgIyBNb3ZlIHRoZSBjdXJzb3IKICAgICAgICAgYyA9IHN0ZHNjci5nZXRjaCgpICAgICAgICAgICAgICAgICMgR2V0IGEga2V5c3Ryb2tlCiAgICAgICAgIGlmIDAgPCBjIDwgMjU2OgogICAgICAgICAgICAgYyA9IGNocihjKQpAQCAtMjI0LDE1ICsyMjksMjEgQEAKICAgICAgICAgICAgICAgICBib2FyZC5kaXNwbGF5KHVwZGF0ZV9ib2FyZD1GYWxzZSkKICAgICAgICAgICAgIGVsaWYgYyBpbiAnU3MnOgogICAgICAgICAgICAgICAgIGJvYXJkLmRpc3BsYXkoKQotICAgICAgICAgICAgZWxzZTogcGFzcyAgICAgICAgICAgICAgICAgICMgSWdub3JlIGluY29ycmVjdCBrZXlzCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDogICAgICAgICAgICB5cG9zIC09IDEKLSAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfRE9XTiBhbmQgeXBvcyA8IGJvYXJkLlktMTogIHlwb3MgKz0gMQotICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9MRUZUIGFuZCB4cG9zID4gMDogICAgICAgICAgeHBvcyAtPSAxCi0gICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1JJR0hUIGFuZCB4cG9zIDwgYm9hcmQuWC0xOiB4cG9zICs9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBJZ25vcmUgaW5jb3JyZWN0IGtleXMKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsaWYgYyA9PSBjdXJzZXMuS0VZX1VQIGFuZCB5cG9zID4gMDoKKyAgICAgICAgICAgIHlwb3MgLT0gMQorICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9ET1dOIGFuZCB5cG9zICsgMSA8IGJvYXJkLlk6CisgICAgICAgICAgICB5cG9zICs9IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfTEVGVCBhbmQgeHBvcyA+IDA6CisgICAgICAgICAgICB4cG9zIC09IDEKKyAgICAgICAgZWxpZiBjID09IGN1cnNlcy5LRVlfUklHSFQgYW5kIHhwb3MgKyAxIDwgYm9hcmQuWDoKKyAgICAgICAgICAgIHhwb3MgKz0gMQogICAgICAgICBlbGlmIGMgPT0gY3Vyc2VzLktFWV9NT1VTRToKICAgICAgICAgICAgIG1vdXNlX2lkLCBtb3VzZV94LCBtb3VzZV95LCBtb3VzZV96LCBidXR0b25fc3RhdGUgPSBjdXJzZXMuZ2V0bW91c2UoKQotICAgICAgICAgICAgaWYgKG1vdXNlX3ggPiAwIGFuZCBtb3VzZV94IDwgYm9hcmQuWCsxIGFuZAotICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSsxKToKKyAgICAgICAgICAgIGlmIChtb3VzZV94ID4gMCBhbmQgbW91c2VfeCA8IGJvYXJkLlggKyAxIGFuZAorICAgICAgICAgICAgICAgIG1vdXNlX3kgPiAwIGFuZCBtb3VzZV95IDwgYm9hcmQuWSArIDEpOgogICAgICAgICAgICAgICAgIHhwb3MgPSBtb3VzZV94IC0gMQogICAgICAgICAgICAgICAgIHlwb3MgPSBtb3VzZV95IC0gMQogICAgICAgICAgICAgICAgIGJvYXJkLnRvZ2dsZSh5cG9zLCB4cG9zKQpAQCAtMjQ1LDcgKzI1Niw3IEBACiAKIAogZGVmIG1haW4oc3Rkc2NyKToKLSAgICBrZXlsb29wKHN0ZHNjcikgICAgICAgICAgICAgICAgICAgICMgRW50ZXIgdGhlIG1haW4gbG9vcAorICAgIGtleWxvb3Aoc3Rkc2NyKSAgICAgICAgICAgICAgICAgIyBFbnRlciB0aGUgbWFpbiBsb29wCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgY3Vyc2VzLndyYXBwZXIobWFpbikKZGlmZiAtLWdpdCBhL1Rvb2xzL2RlbW8vc3MxLnB5IGIvVG9vbHMvZGVtby9zczEucHkKaW5kZXggNGNlYTY2Ny4uNzFjOWJlOCAxMDA3NTUKLS0tIGEvVG9vbHMvZGVtby9zczEucHkKKysrIGIvVG9vbHMvZGVtby9zczEucHkKQEAgLTgxMiw3ICs4MTIsNiBAQAogCiBkZWYgdGVzdF9iYXNpYygpOgogICAgICJCYXNpYyBub24tZ3VpIHNlbGYtdGVzdC4iCi0gICAgaW1wb3J0IG9zCiAgICAgYSA9IFNoZWV0KCkKICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMSk6CiAgICAgICAgIGZvciB5IGluIHJhbmdlKDEsIDExKToKZGlmZiAtLWdpdCBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CmluZGV4IDhiYmJiMTAuLjM2OGE3ZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2dkYi9saWJweXRob24ucHkKKysrIGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQpAQCAtNDksNiArNDksMTEgQEAKIF90eXBlX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCdjaGFyJykucG9pbnRlcigpICMgY2hhcioKIF90eXBlX3Vuc2lnbmVkX2NoYXJfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd1bnNpZ25lZCBjaGFyJykucG9pbnRlcigpICMgdW5zaWduZWQgY2hhcioKIF90eXBlX3ZvaWRfcHRyID0gZ2RiLmxvb2t1cF90eXBlKCd2b2lkJykucG9pbnRlcigpICMgdm9pZCoKK190eXBlX3Vuc2lnbmVkX3Nob3J0X3B0ciA9IGdkYi5sb29rdXBfdHlwZSgndW5zaWduZWQgc2hvcnQnKS5wb2ludGVyKCkKK190eXBlX3Vuc2lnbmVkX2ludF9wdHIgPSBnZGIubG9va3VwX3R5cGUoJ3Vuc2lnbmVkIGludCcpLnBvaW50ZXIoKQorCisjIHZhbHVlIGNvbXB1dGVkIGxhdGVyLCBzZWUgUHlVbmljb2RlT2JqZWN0UHRyLnByb3h5KCkKK19pc19wZXAzOTMgPSBOb25lCiAKIFNJWkVPRl9WT0lEX1AgPSBfdHlwZV92b2lkX3B0ci5zaXplb2YKIApAQCAtMzIyLDcgKzMyNyw2IEBACiAKICAgICAgICAgbmFtZV9tYXAgPSB7J2Jvb2wnOiBQeUJvb2xPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdjbGFzc29iaic6IFB5Q2xhc3NPYmplY3RQdHIsCi0gICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSc6IFB5SW5zdGFuY2VPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdOb25lVHlwZSc6IFB5Tm9uZVN0cnVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ2ZyYW1lJzogUHlGcmFtZU9iamVjdFB0ciwKICAgICAgICAgICAgICAgICAgICAgJ3NldCcgOiBQeVNldE9iamVjdFB0ciwKQEAgLTM5Niw3ICs0MDAsNyBAQAogCiAKIGRlZiBfd3JpdGVfaW5zdGFuY2VfcmVwcihvdXQsIHZpc2l0ZWQsIG5hbWUsIHB5b3BfYXR0cmRpY3QsIGFkZHJlc3MpOgotICAgICcnJ1NoYXJlZCBjb2RlIGZvciB1c2UgYnkgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgY2xhc3NlczoKKyAgICAnJydTaGFyZWQgY29kZSBmb3IgdXNlIGJ5IGFsbCBjbGFzc2VzOgogICAgIHdyaXRlIGEgcmVwcmVzZW50YXRpb24gdG8gZmlsZS1saWtlIG9iamVjdCAib3V0IicnJwogICAgIG91dC53cml0ZSgnPCcpCiAgICAgb3V0LndyaXRlKG5hbWUpCkBAIC00NzksNyArNDgzLDcgQEAKIAogICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKICAgICAgICAgJycnCi0gICAgICAgIFN1cHBvcnQgZm9yIG5ldy1zdHlsZSBjbGFzc2VzLgorICAgICAgICBTdXBwb3J0IGZvciBjbGFzc2VzLgogCiAgICAgICAgIEN1cnJlbnRseSB3ZSBqdXN0IGxvY2F0ZSB0aGUgZGljdGlvbmFyeSB1c2luZyBhIHRyYW5zbGl0ZXJhdGlvbiB0bwogICAgICAgICBweXRob24gb2YgX1B5T2JqZWN0X0dldERpY3RQdHIsIGlnbm9yaW5nIGRlc2NyaXB0b3JzCkBAIC00OTYsNyArNTAwLDcgQEAKICAgICAgICAgICAgIGF0dHJfZGljdCA9IHt9CiAgICAgICAgIHRwX25hbWUgPSBzZWxmLnNhZmVfdHBfbmFtZSgpCiAKLSAgICAgICAgIyBOZXctc3R5bGUgY2xhc3M6CisgICAgICAgICMgQ2xhc3M6CiAgICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KHRwX25hbWUsIGF0dHJfZGljdCwgbG9uZyhzZWxmLl9nZGJ2YWwpKQogCiAgICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKQEAgLTYzMCw5ICs2MzQsMTQgQEAKICAgICAgICAgWWllbGRzIGEgc2VxdWVuY2Ugb2YgKFB5T2JqZWN0UHRyIGtleSwgUHlPYmplY3RQdHIgdmFsdWUpIHBhaXJzLAogICAgICAgICBhbmFsYWdvdXMgdG8gZGljdC5pdGVyaXRlbXMoKQogICAgICAgICAnJycKLSAgICAgICAgZm9yIGkgaW4gc2FmZV9yYW5nZShzZWxmLmZpZWxkKCdtYV9tYXNrJykgKyAxKToKLSAgICAgICAgICAgIGVwID0gc2VsZi5maWVsZCgnbWFfdGFibGUnKSArIGkKLSAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKKyAgICAgICAga2V5cyA9IHNlbGYuZmllbGQoJ21hX2tleXMnKQorICAgICAgICB2YWx1ZXMgPSBzZWxmLmZpZWxkKCdtYV92YWx1ZXMnKQorICAgICAgICBmb3IgaSBpbiBzYWZlX3JhbmdlKGtleXNbJ2RrX3NpemUnXSk6CisgICAgICAgICAgICBlcCA9IGtleXNbJ2RrX2VudHJpZXMnXS5hZGRyZXNzICsgaQorICAgICAgICAgICAgaWYgbG9uZyh2YWx1ZXMpOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cih2YWx1ZXNbaV0pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHB5b3BfdmFsdWUgPSBQeU9iamVjdFB0ci5mcm9tX3B5b2JqZWN0X3B0cihlcFsnbWVfdmFsdWUnXSkKICAgICAgICAgICAgIGlmIG5vdCBweW9wX3ZhbHVlLmlzX251bGwoKToKICAgICAgICAgICAgICAgICBweW9wX2tleSA9IFB5T2JqZWN0UHRyLmZyb21fcHlvYmplY3RfcHRyKGVwWydtZV9rZXknXSkKICAgICAgICAgICAgICAgICB5aWVsZCAocHlvcF9rZXksIHB5b3BfdmFsdWUpCkBAIC02NjgsNDQgKzY3Nyw2IEBACiAgICAgICAgICAgICBweW9wX3ZhbHVlLndyaXRlX3JlcHIob3V0LCB2aXNpdGVkKQogICAgICAgICBvdXQud3JpdGUoJ30nKQogCi1jbGFzcyBQeUluc3RhbmNlT2JqZWN0UHRyKFB5T2JqZWN0UHRyKToKLSAgICBfdHlwZW5hbWUgPSAnUHlJbnN0YW5jZU9iamVjdCcKLQotICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKLSAgICAgICAgIyBHdWFyZCBhZ2FpbnN0IGluZmluaXRlIGxvb3BzOgotICAgICAgICBpZiBzZWxmLmFzX2FkZHJlc3MoKSBpbiB2aXNpdGVkOgotICAgICAgICAgICAgcmV0dXJuIFByb3h5QWxyZWFkeVZpc2l0ZWQoJzwuLi4+JykKLSAgICAgICAgdmlzaXRlZC5hZGQoc2VsZi5hc19hZGRyZXNzKCkpCi0KLSAgICAgICAgIyBHZXQgbmFtZSBvZiBjbGFzczoKLSAgICAgICAgaW5fY2xhc3MgPSBzZWxmLnB5b3BfZmllbGQoJ2luX2NsYXNzJykKLSAgICAgICAgY2xfbmFtZSA9IGluX2NsYXNzLnB5b3BfZmllbGQoJ2NsX25hbWUnKS5wcm94eXZhbCh2aXNpdGVkKQotCi0gICAgICAgICMgR2V0IGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgYXR0cmlidXRlczoKLSAgICAgICAgaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpLnByb3h5dmFsKHZpc2l0ZWQpCi0KLSAgICAgICAgIyBPbGQtc3R5bGUgY2xhc3M6Ci0gICAgICAgIHJldHVybiBJbnN0YW5jZVByb3h5KGNsX25hbWUsIGluX2RpY3QsIGxvbmcoc2VsZi5fZ2RidmFsKSkKLQotICAgIGRlZiB3cml0ZV9yZXByKHNlbGYsIG91dCwgdmlzaXRlZCk6Ci0gICAgICAgICMgR3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBsb29wczoKLSAgICAgICAgaWYgc2VsZi5hc19hZGRyZXNzKCkgaW4gdmlzaXRlZDoKLSAgICAgICAgICAgIG91dC53cml0ZSgnPC4uLj4nKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHZpc2l0ZWQuYWRkKHNlbGYuYXNfYWRkcmVzcygpKQotCi0gICAgICAgICMgT2xkLXN0eWxlIGNsYXNzOgotCi0gICAgICAgICMgR2V0IG5hbWUgb2YgY2xhc3M6Ci0gICAgICAgIGluX2NsYXNzID0gc2VsZi5weW9wX2ZpZWxkKCdpbl9jbGFzcycpCi0gICAgICAgIGNsX25hbWUgPSBpbl9jbGFzcy5weW9wX2ZpZWxkKCdjbF9uYW1lJykucHJveHl2YWwodmlzaXRlZCkKLQotICAgICAgICAjIEdldCBkaWN0aW9uYXJ5IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXM6Ci0gICAgICAgIHB5b3BfaW5fZGljdCA9IHNlbGYucHlvcF9maWVsZCgnaW5fZGljdCcpCi0KLSAgICAgICAgX3dyaXRlX2luc3RhbmNlX3JlcHIob3V0LCB2aXNpdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbF9uYW1lLCBweW9wX2luX2RpY3QsIHNlbGYuYXNfYWRkcmVzcygpKQotCiBjbGFzcyBQeUxpc3RPYmplY3RQdHIoUHlPYmplY3RQdHIpOgogICAgIF90eXBlbmFtZSA9ICdQeUxpc3RPYmplY3QnCiAKQEAgLTExMjMsMTUgKzEwOTQsNDYgQEAKICAgICAgICAgcmV0dXJuIF90eXBlX1B5X1VOSUNPREUuc2l6ZW9mCiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6Ci0gICAgICAgICMgRnJvbSB1bmljb2Rlb2JqZWN0Lmg6Ci0gICAgICAgICMgICAgIFB5X3NzaXplX3QgbGVuZ3RoOyAgLyogTGVuZ3RoIG9mIHJhdyBVbmljb2RlIGRhdGEgaW4gYnVmZmVyICovCi0gICAgICAgICMgICAgIFB5X1VOSUNPREUgKnN0cjsgICAgLyogUmF3IFVuaWNvZGUgYnVmZmVyICovCi0gICAgICAgIGZpZWxkX2xlbmd0aCA9IGxvbmcoc2VsZi5maWVsZCgnbGVuZ3RoJykpCi0gICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgIGdsb2JhbCBfaXNfcGVwMzkzCisgICAgICAgIGlmIF9pc19wZXAzOTMgaXMgTm9uZToKKyAgICAgICAgICAgIGZpZWxkcyA9IGdkYi5sb29rdXBfdHlwZSgnUHlVbmljb2RlT2JqZWN0JykudGFyZ2V0KCkuZmllbGRzKCkKKyAgICAgICAgICAgIF9pc19wZXAzOTMgPSAnZGF0YScgaW4gW2YubmFtZSBmb3IgZiBpbiBmaWVsZHNdCisgICAgICAgIGlmIF9pc19wZXAzOTM6CisgICAgICAgICAgICAjIFB5dGhvbiAzLjMgYW5kIG5ld2VyCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gRmFsc2UKKyAgICAgICAgICAgIGNvbXBhY3QgPSBzZWxmLmZpZWxkKCdfYmFzZScpCisgICAgICAgICAgICBhc2NpaSA9IGNvbXBhY3RbJ19iYXNlJ10KKyAgICAgICAgICAgIHN0YXRlID0gYXNjaWlbJ3N0YXRlJ10KKyAgICAgICAgICAgIGlzX2NvbXBhY3RfYXNjaWkgPSAoaW50KHN0YXRlWydhc2NpaSddKSBhbmQgaW50KHN0YXRlWydjb21wYWN0J10pKQorICAgICAgICAgICAgaWYgbm90IGludChzdGF0ZVsncmVhZHknXSk6CisgICAgICAgICAgICAgICAgIyBzdHJpbmcgaXMgbm90IHJlYWR5CisgICAgICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhjb21wYWN0Wyd3c3RyX2xlbmd0aCddKQorICAgICAgICAgICAgICAgIG1heV9oYXZlX3N1cnJvZ2F0ZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gYXNjaWlbJ3dzdHInXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmaWVsZF9sZW5ndGggPSBsb25nKGFzY2lpWydsZW5ndGgnXSkKKyAgICAgICAgICAgICAgICBpZiBpc19jb21wYWN0X2FzY2lpOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBhc2NpaS5hZGRyZXNzICsgMQorICAgICAgICAgICAgICAgIGVsaWYgaW50KHN0YXRlWydjb21wYWN0J10pOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBjb21wYWN0LmFkZHJlc3MgKyAxCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gc2VsZi5maWVsZCgnZGF0YScpWydhbnknXQorICAgICAgICAgICAgICAgIHJlcHJfa2luZCA9IGludChzdGF0ZVsna2luZCddKQorICAgICAgICAgICAgICAgIGlmIHJlcHJfa2luZCA9PSAxOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9jaGFyX3B0cikKKyAgICAgICAgICAgICAgICBlbGlmIHJlcHJfa2luZCA9PSAyOgorICAgICAgICAgICAgICAgICAgICBmaWVsZF9zdHIgPSBmaWVsZF9zdHIuY2FzdChfdHlwZV91bnNpZ25lZF9zaG9ydF9wdHIpCisgICAgICAgICAgICAgICAgZWxpZiByZXByX2tpbmQgPT0gNDoKKyAgICAgICAgICAgICAgICAgICAgZmllbGRfc3RyID0gZmllbGRfc3RyLmNhc3QoX3R5cGVfdW5zaWduZWRfaW50X3B0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgUHl0aG9uIDMuMiBhbmQgZWFybGllcgorICAgICAgICAgICAgZmllbGRfbGVuZ3RoID0gbG9uZyhzZWxmLmZpZWxkKCdsZW5ndGgnKSkKKyAgICAgICAgICAgIGZpZWxkX3N0ciA9IHNlbGYuZmllbGQoJ3N0cicpCisgICAgICAgICAgICBtYXlfaGF2ZV9zdXJyb2dhdGVzID0gc2VsZi5jaGFyX3dpZHRoKCkgPT0gMgogCiAgICAgICAgICMgR2F0aGVyIGEgbGlzdCBvZiBpbnRzIGZyb20gdGhlIFB5X1VOSUNPREUgYXJyYXk7IHRoZXNlIGFyZSBlaXRoZXIKLSAgICAgICAgIyBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKLSAgICAgICAgaWYgc2VsZi5jaGFyX3dpZHRoKCkgPiAyOgorICAgICAgICAjIFVDUy0xLCBVQ1MtMiBvciBVQ1MtNCBjb2RlIHBvaW50czoKKyAgICAgICAgaWYgbm90IG1heV9oYXZlX3N1cnJvZ2F0ZXM6CiAgICAgICAgICAgICBQeV9VTklDT0RFcyA9IFtpbnQoZmllbGRfc3RyW2ldKSBmb3IgaSBpbiBzYWZlX3JhbmdlKGZpZWxkX2xlbmd0aCldCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIEEgbW9yZSBlbGFib3JhdGUgcm91dGluZSBpZiBzaXplb2YoUHlfVU5JQ09ERSkgaXMgMiBpbiB0aGUKQEAgLTEzMzAsNyArMTMzMiw3IEBACiAgIC91c3IvbGliL2RlYnVnL3Vzci9saWIvbGlicHl0aG9uMi42LnNvLjEuMC5kZWJ1Zy1nZGIucHkKICIiIgogZGVmIHJlZ2lzdGVyIChvYmopOgotICAgIGlmIG9iaiA9PSBOb25lOgorICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICBvYmogPSBnZGIKIAogICAgICMgV2lyZSB1cCB0aGUgcHJldHR5LXByaW50ZXIKQEAgLTEzODgsNiArMTM5MCwyMyBAQAogICAgICAgICAgICAgaXRlcl9mcmFtZSA9IGl0ZXJfZnJhbWUubmV3ZXIoKQogICAgICAgICByZXR1cm4gaW5kZXgKIAorICAgICMgV2UgZGl2aWRlIGZyYW1lcyBpbnRvOgorICAgICMgICAtICJweXRob24gZnJhbWVzIjoKKyAgICAjICAgICAgIC0gImJ5dGVjb2RlIGZyYW1lcyIgaS5lLiBQeUV2YWxfRXZhbEZyYW1lRXgKKyAgICAjICAgICAgIC0gIm90aGVyIHB5dGhvbiBmcmFtZXMiOiB0aGluZ3MgdGhhdCBhcmUgb2YgaW50ZXJlc3QgZnJvbSBhIHB5dGhvbgorICAgICMgICAgICAgICBQT1YsIGJ1dCBhcmVuJ3QgYnl0ZWNvZGUgKGUuZy4gR0MsIEdJTCkKKyAgICAjICAgLSBldmVyeXRoaW5nIGVsc2UKKworICAgIGRlZiBpc19weXRob25fZnJhbWUoc2VsZik6CisgICAgICAgICcnJ0lzIHRoaXMgYSBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWUsIG9yIHNvbWUgb3RoZXIgaW1wb3J0YW50CisgICAgICAgIGZyYW1lPyAoc2VlIGlzX290aGVyX3B5dGhvbl9mcmFtZSBmb3Igd2hhdCAiaW1wb3J0YW50IiBtZWFucyBpbiB0aGlzCisgICAgICAgIGNvbnRleHQpJycnCisgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHNlbGYuaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBpc19ldmFsZnJhbWVleChzZWxmKToKICAgICAgICAgJycnSXMgdGhpcyBhIFB5RXZhbF9FdmFsRnJhbWVFeCBmcmFtZT8nJycKICAgICAgICAgaWYgc2VsZi5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUV2YWxfRXZhbEZyYW1lRXgnOgpAQCAtMTQwNCw2ICsxNDIzLDQ5IEBACiAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgaXNfb3RoZXJfcHl0aG9uX2ZyYW1lKHNlbGYpOgorICAgICAgICAnJydJcyB0aGlzIGZyYW1lIHdvcnRoIGRpc3BsYXlpbmcgaW4gcHl0aG9uIGJhY2t0cmFjZXM/CisgICAgICAgIEV4YW1wbGVzOgorICAgICAgICAgIC0gd2FpdGluZyBvbiB0aGUgR0lMCisgICAgICAgICAgLSBnYXJiYWdlLWNvbGxlY3RpbmcKKyAgICAgICAgICAtIHdpdGhpbiBhIENGdW5jdGlvbgorICAgICAgICAgSWYgaXQgaXMsIHJldHVybiBhIGRlc2NyaXB0aXZlIHN0cmluZworICAgICAgICAgRm9yIG90aGVyIGZyYW1lcywgcmV0dXJuIEZhbHNlCisgICAgICAgICAnJycKKyAgICAgICAgaWYgc2VsZi5pc193YWl0aW5nX2Zvcl9naWwoKToKKyAgICAgICAgICAgIHJldHVybiAnV2FpdGluZyBmb3IgdGhlIEdJTCcKKyAgICAgICAgZWxpZiBzZWxmLmlzX2djX2NvbGxlY3QoKToKKyAgICAgICAgICAgIHJldHVybiAnR2FyYmFnZS1jb2xsZWN0aW5nJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBEZXRlY3QgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzOgorICAgICAgICAgICAgb2xkZXIgPSBzZWxmLm9sZGVyKCkKKyAgICAgICAgICAgIGlmIG9sZGVyIGFuZCBvbGRlci5fZ2RiZnJhbWUubmFtZSgpID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKKyAgICAgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgorICAgICAgICAgICAgICAgICMgICAiZnVuYyIgaXMgdGhlIGxvY2FsIGNvbnRhaW5pbmcgdGhlIFB5T2JqZWN0KiBvZiB0aGUKKyAgICAgICAgICAgICAgICAjIFB5Q0Z1bmN0aW9uT2JqZWN0IGluc3RhbmNlCisgICAgICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKKyAgICAgICAgICAgICAgICAjICAgInNlbGYiIGlzIHRoZSAoUHlPYmplY3QqKSBvZiB0aGUgJ3NlbGYnCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6CisgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBvbGRlci5fZ2RiZnJhbWUucmVhZF92YXIoJ2Z1bmMnKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RyKGZ1bmMpCisgICAgICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdQeUNGdW5jdGlvbiBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAiZnVuYyIpJworCisgICAgICAgICMgVGhpcyBmcmFtZSBpc24ndCB3b3J0aCByZXBvcnRpbmc6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGlzX3dhaXRpbmdfZm9yX2dpbChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSB3YWl0aW5nIG9uIHRoZSBHSUw/JycnCisgICAgICAgICMgVGhpcyBhc3N1bWVzIHRoZSBfUE9TSVhfVEhSRUFEUyB2ZXJzaW9uIG9mIFB5dGhvbi9jZXZhbF9naWwuaDoKKyAgICAgICAgbmFtZSA9IHNlbGYuX2dkYmZyYW1lLm5hbWUoKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3RhcnRzd2l0aCgncHRocmVhZF9jb25kX3RpbWVkd2FpdCcpCisKKyAgICBkZWYgaXNfZ2NfY29sbGVjdChzZWxmKToKKyAgICAgICAgJycnSXMgdGhpcyBmcmFtZSAiY29sbGVjdCIgd2l0aGluIHRoZSB0aGUgZ2FyYmFnZS1jb2xsZWN0b3I/JycnCisgICAgICAgIHJldHVybiBzZWxmLl9nZGJmcmFtZS5uYW1lKCkgPT0gJ2NvbGxlY3QnCisKICAgICBkZWYgZ2V0X3B5b3Aoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGYgPSBzZWxmLl9nZGJmcmFtZS5yZWFkX3ZhcignZicpCkBAIC0xNDMzLDggKzE0OTUsMjIgQEAKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKGNscyk6Ci0gICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uIGNvZGUgaW4gdGhlIHNlbGVjdGVkIGZyYW1lLAotICAgICAgICBvciBOb25lJycnCisgICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uLXJlbGF0ZWQgY29kZSBpbiB0aGUgc2VsZWN0ZWQKKyAgICAgICAgZnJhbWUsIG9yIE5vbmUnJycKKyAgICAgICAgZnJhbWUgPSBjbHMuZ2V0X3NlbGVjdGVkX2ZyYW1lKCkKKworICAgICAgICB3aGlsZSBmcmFtZToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgorICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZQorICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlcigpCisKKyAgICAgICAgIyBOb3QgZm91bmQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X3NlbGVjdGVkX2J5dGVjb2RlX2ZyYW1lKGNscyk6CisgICAgICAgICcnJ1RyeSB0byBvYnRhaW4gdGhlIEZyYW1lIGZvciB0aGUgcHl0aG9uIGJ5dGVjb2RlIGludGVycHJldGVyIGluIHRoZQorICAgICAgICBzZWxlY3RlZCBHREIgZnJhbWUsIG9yIE5vbmUnJycKICAgICAgICAgZnJhbWUgPSBjbHMuZ2V0X3NlbGVjdGVkX2ZyYW1lKCkKIAogICAgICAgICB3aGlsZSBmcmFtZToKQEAgLTE0NTgsNyArMTUzNCwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcjJWkgKHVuYWJsZSB0byByZWFkIHB5dGhvbiBmcmFtZSBpbmZvcm1hdGlvbilcbicgJSBzZWxmLmdldF9pbmRleCgpKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyMlaSAlc1xuJyAlIChzZWxmLmdldF9pbmRleCgpLCBpbmZvKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnIyVpXG4nICUgc2VsZi5nZXRfaW5kZXgoKSkKIAogICAgIGRlZiBwcmludF90cmFjZWJhY2soc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaXNfZXZhbGZyYW1lZXgoKToKQEAgLTE0NzIsNyArMTU1MiwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgICh1bmFibGUgdG8gcmVhZCBweXRob24gZnJhbWUgaW5mb3JtYXRpb24pXG4nKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnICAobm90IGEgcHl0aG9uIGZyYW1lKVxuJykKKyAgICAgICAgICAgIGluZm8gPSBzZWxmLmlzX290aGVyX3B5dGhvbl9mcmFtZSgpCisgICAgICAgICAgICBpZiBpbmZvOgorICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJyAgJXNcbicgJSBpbmZvKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCcgIChub3QgYSBweXRob24gZnJhbWUpXG4nKQogCiBjbGFzcyBQeUxpc3QoZ2RiLkNvbW1hbmQpOgogICAgICcnJ0xpc3QgdGhlIGN1cnJlbnQgUHl0aG9uIHNvdXJjZSBjb2RlLCBpZiBhbnkKQEAgLTE1MDgsOSArMTU5MiwxMCBAQAogICAgICAgICBpZiBtOgogICAgICAgICAgICAgc3RhcnQsIGVuZCA9IG1hcChpbnQsIG0uZ3JvdXBzKCkpCiAKLSAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKKyAgICAgICAgIyBweS1saXN0IHJlcXVpcmVzIGFuIGFjdHVhbCBQeUV2YWxfRXZhbEZyYW1lRXggZnJhbWU6CisgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX2J5dGVjb2RlX2ZyYW1lKCkKICAgICAgICAgaWYgbm90IGZyYW1lOgotICAgICAgICAgICAgcHJpbnQgJ1VuYWJsZSB0byBsb2NhdGUgcHl0aG9uIGZyYW1lJworICAgICAgICAgICAgcHJpbnQgJ1VuYWJsZSB0byBsb2NhdGUgZ2RiIGZyYW1lIGZvciBweXRob24gYnl0ZWNvZGUgaW50ZXJwcmV0ZXInCiAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBweW9wID0gZnJhbWUuZ2V0X3B5b3AoKQpAQCAtMTU2Miw3ICsxNjQ3LDcgQEAKICAgICAgICAgaWYgbm90IGl0ZXJfZnJhbWU6CiAgICAgICAgICAgICBicmVhawogCi0gICAgICAgIGlmIGl0ZXJfZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgaWYgaXRlcl9mcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICMgUmVzdWx0OgogICAgICAgICAgICAgaWYgaXRlcl9mcmFtZS5zZWxlY3QoKToKICAgICAgICAgICAgICAgICBpdGVyX2ZyYW1lLnByaW50X3N1bW1hcnkoKQpAQCAtMTYxNiw3ICsxNzAxLDcgQEAKICAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKICAgICAgICAgZnJhbWUgPSBGcmFtZS5nZXRfc2VsZWN0ZWRfcHl0aG9uX2ZyYW1lKCkKICAgICAgICAgd2hpbGUgZnJhbWU6Ci0gICAgICAgICAgICBpZiBmcmFtZS5pc19ldmFsZnJhbWVleCgpOgorICAgICAgICAgICAgaWYgZnJhbWUuaXNfcHl0aG9uX2ZyYW1lKCk6CiAgICAgICAgICAgICAgICAgZnJhbWUucHJpbnRfc3VtbWFyeSgpCiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKIApAQCAtMTYzNSw3ICsxNzIwLDcgQEAKICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbicpCiAgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZSgpCiAgICAgICAgIHdoaWxlIGZyYW1lOgotICAgICAgICAgICAgaWYgZnJhbWUuaXNfZXZhbGZyYW1lZXgoKToKKyAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgogICAgICAgICAgICAgICAgIGZyYW1lLnByaW50X3RyYWNlYmFjaygpCiAgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvaGcvaGd0b3VjaC5weSBiL1Rvb2xzL2hnL2hndG91Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2MWExMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTAsMCArMSwxMDMgQEAKKyIiIkJyaW5nIHRpbWUgc3RhbXBzIG9mIGdlbmVyYXRlZCBjaGVja2VkLWluIGZpbGVzIGludG8gdGhlIHJpZ2h0IG9yZGVyCisKK0EgdmVyc2lvbmVkIGNvbmZpZ3VyYXRpb24gZmlsZSAuaGd0b3VjaCBzcGVjaWZpZXMgZ2VuZXJhdGVkIGZpbGVzLCBpbiB0aGUKK3N5bnRheCBvZiBtYWtlIHJ1bGVzLgorCisgIG91dHB1dDogICAgaW5wdXQxIGlucHV0MgorCitJbiBhZGRpdGlvbiB0byB0aGUgZGVwZW5kZW5jeSBzeW50YXgsICMtY29tbWVudHMgYXJlIHN1cHBvcnRlZC4KKyIiIgoraW1wb3J0IGVycm5vCitpbXBvcnQgb3MKKworZGVmIHBhcnNlX2NvbmZpZyhyZXBvKToKKyAgICB0cnk6CisgICAgICAgIGZwID0gcmVwby53ZmlsZSgiLmhndG91Y2giKQorICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHJldHVybiB7fQorICAgIHJlc3VsdCA9IHt9CisgICAgd2l0aCBmcDoKKyAgICAgICAgZm9yIGxpbmUgaW4gZnA6CisgICAgICAgICAgICAjIHN0cmlwIGNvbW1lbnRzCisgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgnIycpWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIGlmICc6JyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgb3V0cHV0cywgaW5wdXRzID0gbGluZS5zcGxpdCgnOicsIDEpCisgICAgICAgICAgICBvdXRwdXRzID0gb3V0cHV0cy5zcGxpdCgpCisgICAgICAgICAgICBpbnB1dHMgPSBpbnB1dHMuc3BsaXQoKQorICAgICAgICAgICAgZm9yIG8gaW4gb3V0cHV0czoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtvXS5leHRlbmQoaW5wdXRzKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W29dID0gaW5wdXRzCisgICAgcmV0dXJuIHJlc3VsdAorCitkZWYgY2hlY2tfcnVsZSh1aSwgcmVwbywgbW9kaWZpZWQsIG91dHB1dCwgaW5wdXRzKToKKyAgICBmX291dHB1dCA9IHJlcG8ud2pvaW4ob3V0cHV0KQorICAgIHRyeToKKyAgICAgICAgb190aW1lID0gb3Muc3RhdChmX291dHB1dCkuc3RfbXRpbWUKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgdWkud2FybigiR2VuZXJhdGVkIGZpbGUgJXMgZG9lcyBub3QgZXhpc3RcbiIgJSBvdXRwdXQpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIG5lZWRfdG91Y2ggPSBGYWxzZQorICAgIGJhY2tkYXRlID0gTm9uZQorICAgIGJhY2tkYXRlX3NvdXJjZSA9IE5vbmUKKyAgICBmb3IgaSBpbiBpbnB1dHM6CisgICAgICAgIGZfaSA9IHJlcG8ud2pvaW4oaSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaV90aW1lID0gb3Muc3RhdChmX2kpLnN0X210aW1lCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgdWkud2FybigiLmhndG91Y2ggaW5wdXQgZmlsZSAlcyBkb2VzIG5vdCBleGlzdFxuIiAlIGkpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgaSBpbiBtb2RpZmllZDoKKyAgICAgICAgICAgICMgaW5wdXQgaXMgbW9kaWZpZWQuIE5lZWQgdG8gYmFja2RhdGUgYXQgbGVhc3QgdG8gaV90aW1lCisgICAgICAgICAgICBpZiBiYWNrZGF0ZSBpcyBOb25lIG9yIGJhY2tkYXRlID4gaV90aW1lOgorICAgICAgICAgICAgICAgIGJhY2tkYXRlID0gaV90aW1lCisgICAgICAgICAgICAgICAgYmFja2RhdGVfc291cmNlID0gaQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgb190aW1lIDw9IGlfdGltZToKKyAgICAgICAgICAgICMgZ2VuZXJhdGVkIGZpbGUgaXMgb2xkZXIsIHRvdWNoCisgICAgICAgICAgICBuZWVkX3RvdWNoID0gVHJ1ZQorICAgIGlmIGJhY2tkYXRlIGlzIG5vdCBOb25lOgorICAgICAgICB1aS53YXJuKCJJbnB1dCAlcyBmb3IgZmlsZSAlcyBsb2NhbGx5IG1vZGlmaWVkXG4iICUgKGJhY2tkYXRlX3NvdXJjZSwgb3V0cHV0KSkKKyAgICAgICAgIyBzZXQgdG8gMXMgYmVmb3JlIG9sZGVzdCBtb2RpZmllZCBpbnB1dAorICAgICAgICBiYWNrZGF0ZSAtPSAxCisgICAgICAgIG9zLnV0aW1lKGZfb3V0cHV0LCAoYmFja2RhdGUsIGJhY2tkYXRlKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgaWYgbmVlZF90b3VjaDoKKyAgICAgICAgdWkubm90ZSgiVG91Y2hpbmcgJXNcbiIgJSBvdXRwdXQpCisgICAgICAgIG9zLnV0aW1lKGZfb3V0cHV0LCBOb25lKQorICAgIHJldHVybiBUcnVlCisKK2RlZiBkb190b3VjaCh1aSwgcmVwbyk6CisgICAgbW9kaWZpZWQgPSByZXBvLnN0YXR1cygpWzBdCisgICAgZGVwZW5kZW5jaWVzID0gcGFyc2VfY29uZmlnKHJlcG8pCisgICAgc3VjY2VzcyA9IFRydWUKKyAgICAjIHRyeSBwcm9jZXNzaW5nIGFsbCBydWxlcyBpbiB0b3BvbG9naWNhbCBvcmRlcgorICAgIGhvbGRfYmFjayA9IHt9CisgICAgd2hpbGUgZGVwZW5kZW5jaWVzOgorICAgICAgICBvdXRwdXQsIGlucHV0cyA9IGRlcGVuZGVuY2llcy5wb3BpdGVtKCkKKyAgICAgICAgIyBjaGVjayB3aGV0aGVyIGFueSBvZiB0aGUgaW5wdXRzIGlzIGdlbmVyYXRlZAorICAgICAgICBmb3IgaSBpbiBpbnB1dHM6CisgICAgICAgICAgICBpZiBpIGluIGRlcGVuZGVuY2llczoKKyAgICAgICAgICAgICAgICBob2xkX2JhY2tbb3V0cHV0XSA9IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHN1Y2Nlc3MgPSBjaGVja19ydWxlKHVpLCByZXBvLCBtb2RpZmllZCwgb3V0cHV0LCBpbnB1dHMpCisgICAgICAgICMgcHV0IGJhY2sgaGVsZCBiYWNrIHJ1bGVzCisgICAgICAgIGRlcGVuZGVuY2llcy51cGRhdGUoaG9sZF9iYWNrKQorICAgICAgICBob2xkX2JhY2sgPSB7fQorICAgIGlmIGhvbGRfYmFjazoKKyAgICAgICAgdWkud2FybigiQ3ljbGljIGRlcGVuZGVuY3kgaW52b2x2aW5nICVzXG4iICUgKCcgJy5qb2luKGhvbGRfYmFjay5rZXlzKCkpKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIHN1Y2Nlc3MKKworZGVmIHRvdWNoKHVpLCByZXBvKToKKyAgICAidG91Y2ggZ2VuZXJhdGVkIGZpbGVzIHRoYXQgYXJlIG9sZGVyIHRoYW4gdGhlaXIgc291cmNlcyBhZnRlciBhbiB1cGRhdGUuIgorICAgIGRvX3RvdWNoKHVpLCByZXBvKQorCitjbWR0YWJsZSA9IHsKKyAgICAidG91Y2giOiAodG91Y2gsIFtdLAorICAgICAgICAgICAgICAidG91Y2ggZ2VuZXJhdGVkIGZpbGVzIGFjY29yZGluZyB0byB0aGUgLmhndG91Y2ggY29uZmlndXJhdGlvbiIpCit9CmRpZmYgLS1naXQgYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weSBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CmluZGV4IDY3YTk2MGYuLjkzYjJiNzkgMTAwNzU1Ci0tLSBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CisrKyBiL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5CkBAIC0xNjMsNyArMTYzLDYgQEAKIGltcG9ydCBnZXRvcHQKIGltcG9ydCB0b2tlbgogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgb3BlcmF0b3IKIAogX192ZXJzaW9uX18gPSAnMS41JwogCmRpZmYgLS1naXQgYS9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUgYi9Ub29scy9pbXBvcnRiZW5jaC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFhNTU0NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2ltcG9ydGJlbmNoL1JFQURNRQpAQCAtMCwwICsxLDYgQEAKK0ltcG9ydGJlbmNoIGlzIGEgc2V0IG9mIG1pY3JvLWJlbmNobWFya3MgZm9yIHZhcmlvdXMgaW1wb3J0IHNjZW5hcmlvcy4KKworSXQgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGFuIG92ZXJhbGwgYmVuY2htYXJrIG9mIGltcG9ydCBwZXJmb3JtYW5jZSwgYnV0IHJhdGhlcgorYW4gZWFzeSB3YXkgdG8gbWVhc3VyZSBpbXBhY3Qgb2YgcG9zc2libGUgY29kZSBjaGFuZ2VzLiBGb3IgYSByZWFsLXdvcmxkCitiZW5jaG1hcmsgb2YgaW1wb3J0LCB1c2UgdGhlIG5vcm1hbF9zdGFydHVwIGJlbmNobWFyayBmcm9tCitoZy5weXRob24ub3JnL2JlbmNobWFya3MuCmRpZmYgLS1naXQgYS9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weSBiL1Rvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNGMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9pbXBvcnRiZW5jaC9pbXBvcnRiZW5jaC5weQpAQCAtMCwwICsxLDI1MiBAQAorIiIiQmVuY2htYXJrIHNvbWUgYmFzaWMgaW1wb3J0IHVzZS1jYXNlcy4KKworVGhlIGFzc3VtcHRpb24gaXMgbWFkZSB0aGF0IHRoaXMgYmVuY2htYXJrIGlzIHJ1biBpbiBhIGZyZXNoIGludGVycHJldGVyIGFuZAordGh1cyBoYXMgbm8gZXh0ZXJuYWwgY2hhbmdlcyBtYWRlIHRvIGltcG9ydC1yZWxhdGVkIGF0dHJpYnV0ZXMgaW4gc3lzLgorCisiIiIKK2Zyb20gdGVzdC50ZXN0X2ltcG9ydGxpYiBpbXBvcnQgdXRpbAorZnJvbSB0ZXN0LnRlc3RfaW1wb3J0bGliLnNvdXJjZSBpbXBvcnQgdXRpbCBhcyBzb3VyY2VfdXRpbAoraW1wb3J0IGRlY2ltYWwKK2ltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQganNvbgoraW1wb3J0IG9zCitpbXBvcnQgcHlfY29tcGlsZQoraW1wb3J0IHN5cworaW1wb3J0IHRhYm5hbm55CitpbXBvcnQgdGltZWl0CisKKworZGVmIGJlbmNoKG5hbWUsIGNsZWFudXA9bGFtYmRhOiBOb25lLCAqLCBzZWNvbmRzPTEsIHJlcGVhdD0zKToKKyAgICAiIiJCZW5jaCB0aGUgZ2l2ZW4gc3RhdGVtZW50IGFzIG1hbnkgdGltZXMgYXMgbmVjZXNzYXJ5IHVudGlsIHRvdGFsCisgICAgZXhlY3V0aW9ucyB0YWtlIG9uZSBzZWNvbmQuIiIiCisgICAgc3RtdCA9ICJfX2ltcG9ydF9fKHshcn0pIi5mb3JtYXQobmFtZSkKKyAgICB0aW1lciA9IHRpbWVpdC5UaW1lcihzdG10KQorICAgIGZvciB4IGluIHJhbmdlKHJlcGVhdCk6CisgICAgICAgIHRvdGFsX3RpbWUgPSAwCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSB0b3RhbF90aW1lIDwgc2Vjb25kczoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB0b3RhbF90aW1lICs9IHRpbWVyLnRpbWVpdCgxKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBjbGVhbnVwKCkKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgT25lIGV4ZWN1dGlvbiB0b28gZmFyCisgICAgICAgICAgICBpZiB0b3RhbF90aW1lID4gc2Vjb25kczoKKyAgICAgICAgICAgICAgICBjb3VudCAtPSAxCisgICAgICAgIHlpZWxkIGNvdW50IC8vIHNlY29uZHMKKworZGVmIGZyb21fY2FjaGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJzeXMubW9kdWxlcyIiIgorICAgIG5hbWUgPSAnPGJlbmNobWFyayBpbXBvcnQ+JworICAgIG1vZHVsZSA9IGltcC5uZXdfbW9kdWxlKG5hbWUpCisgICAgbW9kdWxlLl9fZmlsZV9fID0gJzx0ZXN0PicKKyAgICBtb2R1bGUuX19wYWNrYWdlX18gPSAnJworICAgIHdpdGggdXRpbC51bmNhY2hlKG5hbWUpOgorICAgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIHJlcGVhdD1yZXBlYXQsIHNlY29uZHM9c2Vjb25kcyk6CisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgYnVpbHRpbl9tb2Qoc2Vjb25kcywgcmVwZWF0KToKKyAgICAiIiJCdWlsdC1pbiBtb2R1bGUiIiIKKyAgICBuYW1lID0gJ2Vycm5vJworICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgICMgUmVseWluZyBvbiBidWlsdC1pbiBpbXBvcnRlciBiZWluZyBpbXBsaWNpdC4KKyAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgeWllbGQgcmVzdWx0CisKKworZGVmIHNvdXJjZV93b19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3L28gYnl0ZWNvZGU6IHNtYWxsIiIiCisgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBUcnVlCisgICAgdHJ5OgorICAgICAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgICAgICMgQ2xlYXJzIG91dCBzeXMubW9kdWxlcyBhbmQgcHV0cyBhbiBlbnRyeSBhdCB0aGUgZnJvbnQgb2Ygc3lzLnBhdGguCisgICAgICAgIHdpdGggc291cmNlX3V0aWwuY3JlYXRlX21vZHVsZXMobmFtZSkgYXMgbWFwcGluZzoKKyAgICAgICAgICAgIGFzc2VydCBub3Qgb3MucGF0aC5leGlzdHMoaW1wLmNhY2hlX2Zyb21fc291cmNlKG1hcHBpbmdbbmFtZV0pKQorICAgICAgICAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoaW1wb3J0bGliLm1hY2hpbmVyeS5QYXRoRmluZGVyKQorICAgICAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgICAgIHN5cy5wYXRoX2hvb2tzLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIucGF0aF9ob29rKGxvYWRlcikpCisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLCByZXBlYXQ9cmVwZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gRmFsc2UKKworCitkZWYgX3dvX2J5dGVjb2RlKG1vZHVsZSk6CisgICAgbmFtZSA9IG1vZHVsZS5fX25hbWVfXworICAgIGRlZiBiZW5jaG1hcmtfd29fYnl0ZWNvZGUoc2Vjb25kcywgcmVwZWF0KToKKyAgICAgICAgIiIiU291cmNlIHcvbyBieXRlY29kZToge30iIiIKKyAgICAgICAgYnl0ZWNvZGVfcGF0aCA9IGltcC5jYWNoZV9mcm9tX3NvdXJjZShtb2R1bGUuX19maWxlX18pCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGJ5dGVjb2RlX3BhdGgpOgorICAgICAgICAgICAgb3MudW5saW5rKGJ5dGVjb2RlX3BhdGgpCisgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gVHJ1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgcmVzdWx0IGluIGJlbmNoKG5hbWUsIGxhbWJkYTogc3lzLm1vZHVsZXMucG9wKG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgPSBGYWxzZQorCisgICAgYmVuY2htYXJrX3dvX2J5dGVjb2RlLl9fZG9jX18gPSBiZW5jaG1hcmtfd29fYnl0ZWNvZGUuX19kb2NfXy5mb3JtYXQobmFtZSkKKyAgICByZXR1cm4gYmVuY2htYXJrX3dvX2J5dGVjb2RlCisKK3RhYm5hbm55X3dvX2J5dGVjb2RlID0gX3dvX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF93b19ieXRlY29kZSA9IF93b19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBzb3VyY2Vfd3JpdGluZ19ieXRlY29kZShzZWNvbmRzLCByZXBlYXQpOgorICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIGFzc2VydCBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKKyAgICBuYW1lID0gJ19faW1wb3J0bGliX3Rlc3RfYmVuY2htYXJrX18nCisgICAgd2l0aCBzb3VyY2VfdXRpbC5jcmVhdGVfbW9kdWxlcyhuYW1lKSBhcyBtYXBwaW5nOgorICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChpbXBvcnRsaWIubWFjaGluZXJ5LlBhdGhGaW5kZXIpCisgICAgICAgIGxvYWRlciA9IChpbXBvcnRsaWIubWFjaGluZXJ5LlNvdXJjZUZpbGVMb2FkZXIsCisgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgZGVmIGNsZWFudXAoKToKKyAgICAgICAgICAgIHN5cy5tb2R1bGVzLnBvcChuYW1lKQorICAgICAgICAgICAgb3MudW5saW5rKGltcC5jYWNoZV9mcm9tX3NvdXJjZShtYXBwaW5nW25hbWVdKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgICAgICB5aWVsZCByZXN1bHQKKworCitkZWYgX3dyaXRpbmdfYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIHdyaXRpbmdfYnl0ZWNvZGVfYmVuY2htYXJrKHNlY29uZHMsIHJlcGVhdCk6CisgICAgICAgICIiIlNvdXJjZSB3cml0aW5nIGJ5dGVjb2RlOiB7fSIiIgorICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIGRlZiBjbGVhbnVwKCk6CisgICAgICAgICAgICBzeXMubW9kdWxlcy5wb3AobmFtZSkKKyAgICAgICAgICAgIG9zLnVubGluayhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobW9kdWxlLl9fZmlsZV9fKSkKKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaChuYW1lLCBjbGVhbnVwLCByZXBlYXQ9cmVwZWF0LCBzZWNvbmRzPXNlY29uZHMpOgorICAgICAgICAgICAgeWllbGQgcmVzdWx0CisKKyAgICB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cml0aW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKKyAgICByZXR1cm4gd3JpdGluZ19ieXRlY29kZV9iZW5jaG1hcmsKKwordGFibmFubnlfd3JpdGluZ19ieXRlY29kZSA9IF93cml0aW5nX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlID0gX3dyaXRpbmdfYnl0ZWNvZGUoZGVjaW1hbCkKKworCitkZWYgc291cmNlX3VzaW5nX2J5dGVjb2RlKHNlY29uZHMsIHJlcGVhdCk6CisgICAgIiIiU291cmNlIHcvIGJ5dGVjb2RlOiBzbWFsbCIiIgorICAgIG5hbWUgPSAnX19pbXBvcnRsaWJfdGVzdF9iZW5jaG1hcmtfXycKKyAgICB3aXRoIHNvdXJjZV91dGlsLmNyZWF0ZV9tb2R1bGVzKG5hbWUpIGFzIG1hcHBpbmc6CisgICAgICAgIHN5cy5tZXRhX3BhdGguYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcikKKyAgICAgICAgbG9hZGVyID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFUywgVHJ1ZSkKKyAgICAgICAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlci5wYXRoX2hvb2sobG9hZGVyKSkKKyAgICAgICAgcHlfY29tcGlsZS5jb21waWxlKG1hcHBpbmdbbmFtZV0pCisgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhpbXAuY2FjaGVfZnJvbV9zb3VyY2UobWFwcGluZ1tuYW1lXSkpCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisKK2RlZiBfdXNpbmdfYnl0ZWNvZGUobW9kdWxlKToKKyAgICBuYW1lID0gbW9kdWxlLl9fbmFtZV9fCisgICAgZGVmIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyayhzZWNvbmRzLCByZXBlYXQpOgorICAgICAgICAiIiJTb3VyY2Ugdy8gYnl0ZWNvZGU6IHt9IiIiCisgICAgICAgIHB5X2NvbXBpbGUuY29tcGlsZShtb2R1bGUuX19maWxlX18pCisgICAgICAgIGZvciByZXN1bHQgaW4gYmVuY2gobmFtZSwgbGFtYmRhOiBzeXMubW9kdWxlcy5wb3AobmFtZSksIHJlcGVhdD1yZXBlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcz1zZWNvbmRzKToKKyAgICAgICAgICAgIHlpZWxkIHJlc3VsdAorCisgICAgdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrLl9fZG9jX18gPSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nX2J5dGVjb2RlX2JlbmNobWFyay5fX2RvY19fLmZvcm1hdChuYW1lKSkKKyAgICByZXR1cm4gdXNpbmdfYnl0ZWNvZGVfYmVuY2htYXJrCisKK3RhYm5hbm55X3VzaW5nX2J5dGVjb2RlID0gX3VzaW5nX2J5dGVjb2RlKHRhYm5hbm55KQorZGVjaW1hbF91c2luZ19ieXRlY29kZSA9IF91c2luZ19ieXRlY29kZShkZWNpbWFsKQorCisKK2RlZiBtYWluKGltcG9ydF8sIG9wdGlvbnMpOgorICAgIGlmIG9wdGlvbnMuc291cmNlX2ZpbGU6CisgICAgICAgIHdpdGggb3B0aW9ucy5zb3VyY2VfZmlsZToKKyAgICAgICAgICAgIHByZXZfcmVzdWx0cyA9IGpzb24ubG9hZChvcHRpb25zLnNvdXJjZV9maWxlKQorICAgIGVsc2U6CisgICAgICAgIHByZXZfcmVzdWx0cyA9IHt9CisgICAgX19idWlsdGluc19fLl9faW1wb3J0X18gPSBpbXBvcnRfCisgICAgYmVuY2htYXJrcyA9IChmcm9tX2NhY2hlLCBidWlsdGluX21vZCwKKyAgICAgICAgICAgICAgICAgIHNvdXJjZV93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgc291cmNlX3dvX2J5dGVjb2RlLCBzb3VyY2VfdXNpbmdfYnl0ZWNvZGUsCisgICAgICAgICAgICAgICAgICB0YWJuYW5ueV93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgdGFibmFubnlfd29fYnl0ZWNvZGUsIHRhYm5hbm55X3VzaW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgZGVjaW1hbF93cml0aW5nX2J5dGVjb2RlLAorICAgICAgICAgICAgICAgICAgZGVjaW1hbF93b19ieXRlY29kZSwgZGVjaW1hbF91c2luZ19ieXRlY29kZSwKKyAgICAgICAgICAgICAgICApCisgICAgaWYgb3B0aW9ucy5iZW5jaG1hcms6CisgICAgICAgIGZvciBiIGluIGJlbmNobWFya3M6CisgICAgICAgICAgICBpZiBiLl9fZG9jX18gPT0gb3B0aW9ucy5iZW5jaG1hcms6CisgICAgICAgICAgICAgICAgYmVuY2htYXJrcyA9IFtiXQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgnVW5rbm93biBiZW5jaG1hcms6IHshcn0nLmZvcm1hdChvcHRpb25zLmJlbmNobWFyaywKKyAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgIHNlY29uZHMgPSAxCisgICAgc2Vjb25kc19wbHVyYWwgPSAncycgaWYgc2Vjb25kcyA+IDEgZWxzZSAnJworICAgIHJlcGVhdCA9IDMKKyAgICBoZWFkZXIgPSAoJ01lYXN1cmluZyBpbXBvcnRzL3NlY29uZCBvdmVyIHt9IHNlY29uZHt9LCBiZXN0IG91dCBvZiB7fVxuJworICAgICAgICAgICAgICAnRW50aXJlIGJlbmNobWFyayBydW4gc2hvdWxkIHRha2UgYWJvdXQge30gc2Vjb25kc1xuJworICAgICAgICAgICAgICAnVXNpbmcgeyFyfSBhcyBfX2ltcG9ydF9fXG4nKQorICAgIHByaW50KGhlYWRlci5mb3JtYXQoc2Vjb25kcywgc2Vjb25kc19wbHVyYWwsIHJlcGVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlbihiZW5jaG1hcmtzKSAqIHNlY29uZHMgKiByZXBlYXQsIF9faW1wb3J0X18pKQorICAgIG5ld19yZXN1bHRzID0ge30KKyAgICBmb3IgYmVuY2htYXJrIGluIGJlbmNobWFya3M6CisgICAgICAgIHByaW50KGJlbmNobWFyay5fX2RvY19fLCAiWyIsIGVuZD0nICcpCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHJlc3VsdCBpbiBiZW5jaG1hcmsoc2Vjb25kcz1zZWNvbmRzLCByZXBlYXQ9cmVwZWF0KToKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHJlc3VsdCkKKyAgICAgICAgICAgIHByaW50KHJlc3VsdCwgZW5kPScgJykKKyAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBhc3NlcnQgbm90IHN5cy5kb250X3dyaXRlX2J5dGVjb2RlCisgICAgICAgIHByaW50KCJdIiwgImJlc3QgaXMiLCBmb3JtYXQobWF4KHJlc3VsdHMpLCAnLGQnKSkKKyAgICAgICAgbmV3X3Jlc3VsdHNbYmVuY2htYXJrLl9fZG9jX19dID0gcmVzdWx0cworICAgIGlmIHByZXZfcmVzdWx0czoKKyAgICAgICAgcHJpbnQoJ1xuXG5Db21wYXJpbmcgbmV3IHZzLiBvbGRcbicpCisgICAgICAgIGZvciBiZW5jaG1hcmsgaW4gYmVuY2htYXJrczoKKyAgICAgICAgICAgIGJlbmNobWFya19uYW1lID0gYmVuY2htYXJrLl9fZG9jX18KKyAgICAgICAgICAgIG9sZF9yZXN1bHQgPSBtYXgocHJldl9yZXN1bHRzW2JlbmNobWFya19uYW1lXSkKKyAgICAgICAgICAgIG5ld19yZXN1bHQgPSBtYXgobmV3X3Jlc3VsdHNbYmVuY2htYXJrX25hbWVdKQorICAgICAgICAgICAgcmVzdWx0ID0gJ3s6LGR9IHZzLiB7OixkfSAoezolfSknLmZvcm1hdChuZXdfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yZXN1bHQvb2xkX3Jlc3VsdCkKKyAgICAgICAgICAgIHByaW50KGJlbmNobWFya19uYW1lLCAnOicsIHJlc3VsdCkKKyAgICBpZiBvcHRpb25zLmRlc3RfZmlsZToKKyAgICAgICAgd2l0aCBvcHRpb25zLmRlc3RfZmlsZToKKyAgICAgICAgICAgIGpzb24uZHVtcChuZXdfcmVzdWx0cywgb3B0aW9ucy5kZXN0X2ZpbGUsIGluZGVudD0yKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaW1wb3J0IGFyZ3BhcnNlCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1idWlsdGluJywgZGVzdD0nYnVpbHRpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSJ1c2UgdGhlIGJ1aWx0LWluIF9faW1wb3J0X18iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmVhZCcsIGRlc3Q9J3NvdXJjZV9maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3InKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdG8gcmVhZCBiZW5jaG1hcmsgZGF0YSBmcm9tIHRvIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWdhaW5zdCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXcnLCAnLS13cml0ZScsIGRlc3Q9J2Rlc3RfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCd3JyksCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlIHRvIHdyaXRlIGJlbmNobWFyayBkYXRhIHRvJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWJlbmNobWFyaycsIGRlc3Q9J2JlbmNobWFyaycsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzcGVjaWZpYyBiZW5jaG1hcmsgdG8gcnVuJykKKyAgICBvcHRpb25zID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGltcG9ydF8gPSBfX2ltcG9ydF9fCisgICAgaWYgbm90IG9wdGlvbnMuYnVpbHRpbjoKKyAgICAgICAgaW1wb3J0XyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCisKKyAgICBtYWluKGltcG9ydF8sIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkgYi9Ub29scy9pb2JlbmNoL2lvYmVuY2gucHkKaW5kZXggNWVjNmYxNy4uNTMwYmM3OSAxMDA2NDQKLS0tIGEvVG9vbHMvaW9iZW5jaC9pb2JlbmNoLnB5CisrKyBiL1Rvb2xzL2lvYmVuY2gvaW9iZW5jaC5weQpAQCAtMSwxMyArMSwxMiBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICMgVGhpcyBmaWxlIHNob3VsZCBiZSBrZXB0IGNvbXBhdGlibGUgd2l0aCBib3RoIFB5dGhvbiAyLjYgYW5kIFB5dGhvbiA+PSAzLjAuCiAKLWltcG9ydCB0aW1lCitpbXBvcnQgaXRlcnRvb2xzCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IGZ1bmN0b29scwotaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHRpbWUKIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNlcgogCiBvdXQgPSBzeXMuc3Rkb3V0CkBAIC0zMDcsNiArMzA2LDE2IEBACiAgICAgICAgICJsYXJnZSI6IDIsCiAgICAgfQogCisgICAgcHJpbnQoIlB5dGhvbiAlcyIgJSBzeXMudmVyc2lvbikKKyAgICBpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgICAgICBpZiBzeXMubWF4dW5pY29kZSA+IDB4ZmZmZjoKKyAgICAgICAgICAgIHRleHQgPSAiVUNTLTQgKHdpZGUgYnVpbGQpIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGV4dCA9ICJVVEYtMTYgKG5hcnJvdyBidWlsZCkiCisgICAgZWxzZToKKyAgICAgICAgdGV4dCA9ICJQRVAgMzkzIgorICAgIHByaW50KCJVbmljb2RlOiAlcyIgJSB0ZXh0KQorICAgIHByaW50KHBsYXRmb3JtLnBsYXRmb3JtKCkpCiAgICAgYmluYXJ5X2ZpbGVzID0gbGlzdChnZXRfYmluYXJ5X2ZpbGVzKCkpCiAgICAgdGV4dF9maWxlcyA9IGxpc3QoZ2V0X3RleHRfZmlsZXMoKSkKICAgICBpZiAiYiIgaW4gb3B0aW9uczoKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHkgYi9Ub29scy9tc2kvbXNpLnB5CmluZGV4IDUwODgxNmQuLjIwNTdiZWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHkKKysrIGIvVG9vbHMvbXNpL21zaS5weQpAQCAtMiwxMiArMiwxMSBAQAogIyAoQykgMjAwMyBNYXJ0aW4gdi4gTG9ld2lzCiAjIFNlZSAiRk9PIiBpbiBjb21tZW50cyByZWZlcnMgdG8gTVNETiBzZWN0aW9ucyB3aXRoIHRoZSB0aXRsZSBGT08uCiBpbXBvcnQgbXNpbGliLCBzY2hlbWEsIHNlcXVlbmNlLCBvcywgZ2xvYiwgdGltZSwgcmUsIHNodXRpbCwgemlwZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MsIHRlbXBmaWxlCiBmcm9tIG1zaWxpYiBpbXBvcnQgRmVhdHVyZSwgQ0FCLCBEaXJlY3RvcnksIERpYWxvZywgQmluYXJ5LCBhZGRfZGF0YQogaW1wb3J0IHVpc2FtcGxlCiBmcm9tIHdpbjMyY29tLmNsaWVudCBpbXBvcnQgY29uc3RhbnRzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi1mcm9tIHV1aWRzIGltcG9ydCBwcm9kdWN0X2NvZGVzCi1pbXBvcnQgdGVtcGZpbGUKIAogIyBTZXR0aW5ncyBjYW4gYmUgb3ZlcnJpZGRlbiBpbiBjb25maWcucHkgYmVsb3cKICMgMCBmb3Igb2ZmaWNpYWwgcHl0aG9uLm9yZyByZWxlYXNlcwpAQCAtMjgsNyArMjcsNyBAQAogIyBwYXRoIHRvIFBDYnVpbGQgZGlyZWN0b3J5CiBQQ0JVSUxEPSJQQ2J1aWxkIgogIyBtc3ZjcnQgdmVyc2lvbgotTVNWQ1IgPSAiOTAiCitNU1ZDUiA9ICIxMDAiCiAjIE5hbWUgb2YgY2VydGlmaWNhdGUgaW4gZGVmYXVsdCBzdG9yZSB0byBzaWduIE1TSSB3aXRoCiBjZXJ0bmFtZSA9IE5vbmUKICMgTWFrZSBhIHppcCBmaWxlIGNvbnRhaW5pbmcgdGhlIFBEQiBmaWxlcyBmb3IgdGhpcyBidWlsZD8KQEAgLTc3LDE5ICs3NiwxNiBAQAogCiBpZiBzbmFwc2hvdDoKICAgICBjdXJyZW50X3ZlcnNpb24gPSAiJXMuJXMuJXMiICUgKG1ham9yLCBtaW5vciwgaW50KHRpbWUudGltZSgpLzM2MDAvMjQpKQotICAgIHByb2R1Y3RfY29kZSA9IG1zaWxpYi5nZW5fdXVpZCgpCi1lbHNlOgotICAgIHByb2R1Y3RfY29kZSA9IHByb2R1Y3RfY29kZXNbY3VycmVudF92ZXJzaW9uXQogCiBpZiBmdWxsX2N1cnJlbnRfdmVyc2lvbiBpcyBOb25lOgogICAgIGZ1bGxfY3VycmVudF92ZXJzaW9uID0gY3VycmVudF92ZXJzaW9uCiAKIGV4dGVuc2lvbnMgPSBbCi0gICAgJ2J6Mi5weWQnLAogICAgICdweWV4cGF0LnB5ZCcsCiAgICAgJ3NlbGVjdC5weWQnLAogICAgICd1bmljb2RlZGF0YS5weWQnLAogICAgICd3aW5zb3VuZC5weWQnLAorICAgICdfYnoyLnB5ZCcsCiAgICAgJ19lbGVtZW50dHJlZS5weWQnLAogICAgICdfc29ja2V0LnB5ZCcsCiAgICAgJ19zc2wucHlkJywKQEAgLTEwMCw3ICs5NiwxMCBAQAogICAgICdfY3R5cGVzX3Rlc3QucHlkJywKICAgICAnX3NxbGl0ZTMucHlkJywKICAgICAnX2hhc2hsaWIucHlkJywKLSAgICAnX211bHRpcHJvY2Vzc2luZy5weWQnCisgICAgJ19tdWx0aXByb2Nlc3NpbmcucHlkJywKKyAgICAnX2x6bWEucHlkJywKKyAgICAnX2RlY2ltYWwucHlkJywKKyAgICAnX3Rlc3RidWZmZXIucHlkJwogXQogCiAjIFdlbGwta25vd24gY29tcG9uZW50IFVVSURzCkBAIC0xMTksMTIgKzExOCwxMSBAQAogICAgICIzMCI6Ins2OTUzYmMzYi02NzY4LTQyOTEtODQxMC03OTE0Y2U2ZTJjYTh9IiwKICAgICAiMzEiOiJ7NGFmY2JhMGItMTNlNC00N2MzLWJlYmUtNDc3NDI4YjQ2OTEzfSIsCiAgICAgIjMyIjoiezNmZjk1MzE1LTEwOTYtNGQzMS1iZDg2LTYwMWQ1NDM4YWQ1ZX0iLAorICAgICIzMyI6IntmNzU4MWNhNC1kMzY4LTRlZWEtOGY4Mi1kNDhjNjRjNGYwNDd9IiwKICAgICB9IFttYWpvcittaW5vcl0KIAogIyBDb21wdXRlIHRoZSBuYW1lIHRoYXQgU3BoaW54IGdpdmVzIHRvIHRoZSBkb2NmaWxlCi1kb2NmaWxlID0gIiIKLWlmIGludChtaWNybyk6Ci0gICAgZG9jZmlsZSA9IG1pY3JvCitkb2NmaWxlID0gbWljcm8KIGlmIGxldmVsIDwgMHhmOgogICAgIGlmIGxldmVsID09IDB4QzoKICAgICAgICAgZG9jZmlsZSArPSAicmMlcyIgJSAoc2VyaWFsLCkKQEAgLTE4NSwxMiArMTgzLDE5IEBACiBtc2lsaWIuc2V0X2FyY2hfZnJvbV9maWxlKGRsbF9wYXRoKQogaWYgbXNpbGliLnBlX3R5cGUoZGxsX3BhdGgpICE9IG1zaWxpYi5wZV90eXBlKCJtc2lzdXBwb3J0LmRsbCIpOgogICAgIHJhaXNlIFN5c3RlbUVycm9yKCJtc2lzdXBwb3J0LmRsbCBmb3IgaW5jb3JyZWN0IGFyY2hpdGVjdHVyZSIpCisKIGlmIG1zaWxpYi5XaW42NDoKICAgICB1cGdyYWRlX2NvZGUgPSB1cGdyYWRlX2NvZGVfNjQKLSAgICAjIEJ1bXAgdGhlIGxhc3QgZGlnaXQgb2YgdGhlIGNvZGUgYnkgb25lLCBzbyB0aGF0IDMyLWJpdCBhbmQgNjQtYml0Ci0gICAgIyByZWxlYXNlcyBnZXQgc2VwYXJhdGUgcHJvZHVjdCBjb2RlcwotICAgIGRpZ2l0ID0gaGV4KChpbnQocHJvZHVjdF9jb2RlWy0yXSwxNikrMSklMTYpWy0xXQotICAgIHByb2R1Y3RfY29kZSA9IHByb2R1Y3RfY29kZVs6LTJdICsgZGlnaXQgKyAnfScKKworaWYgc25hcHNob3Q6CisgICAgcHJvZHVjdF9jb2RlID0gbXNpbGliLmdlbl91dWlkKCkKK2Vsc2U6CisgICAgIyBvZmZpY2lhbCByZWxlYXNlOiBnZW5lcmF0ZSBVVUlEIGZyb20gdGhlIGRvd25sb2FkIGxpbmsgdGhhdCB0aGUgZmlsZSB3aWxsIGhhdmUKKyAgICBpbXBvcnQgdXVpZAorICAgIHByb2R1Y3RfY29kZSA9IHV1aWQudXVpZDModXVpZC5OQU1FU1BBQ0VfVVJMLAorICAgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJXMuJXMuJXMvcHl0aG9uLSVzJXMubXNpJyAlCisgICAgICAgICAgICAgICAgICAgIChtYWpvciwgbWlub3IsIG1pY3JvLCBmdWxsX2N1cnJlbnRfdmVyc2lvbiwgbXNpbGliLmFyY2hfZXh0KSkKKyAgICBwcm9kdWN0X2NvZGUgPSAneyVzfScgJSBwcm9kdWN0X2NvZGUKIAogaWYgdGVzdHBhY2thZ2U6CiAgICAgZXh0ID0gJ3B4JwpAQCAtMjgxLDcgKzI4Niw3IEBACiAgICAgICAgICAgICAgIE5vbmUsIG1pZ3JhdGVfZmVhdHVyZXMsIE5vbmUsICJSRU1PVkVPTERTTkFQU0hPVCIpXSkKICAgICAgICAgcHJvcHMgPSAiUkVNT1ZFT0xEU05BUFNIT1Q7UkVNT1ZFT0xEVkVSU0lPTiIKIAotICAgIHByb3BzICs9ICI7VEFSR0VURElSO0RMTERJUiIKKyAgICBwcm9wcyArPSAiO1RBUkdFVERJUjtETExESVI7TEFVTkNIRVJESVIiCiAgICAgIyBJbnN0YWxsZXIgY29sbGVjdHMgdGhlIHByb2R1Y3QgY29kZXMgb2YgdGhlIGVhcmxpZXIgcmVsZWFzZXMgaW4KICAgICAjIHRoZXNlIHByb3BlcnRpZXMuIEluIG9yZGVyIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiB0aGUgcHJvcGVydGllcywKICAgICAjIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBhcyBzZWN1cmUuIFNlZSAiU2VjdXJlQ3VzdG9tUHJvcGVydGllcyBQcm9wZXJ0eSIKQEAgLTQyMSw2ICs0MjYsOCBAQAogICAgICAgICAgIltXaW5kb3dzVm9sdW1lXVB5dGhvbiVzJXMiICUgKG1ham9yLCBtaW5vcikpLAogICAgICAgICAoIlNldERMTERpclRvVGFyZ2V0IiwgMzA3LCAiRExMRElSIiwgIltUQVJHRVRESVJdIiksCiAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsIDMwNywgIkRMTERJUiIsIFN5c3RlbUZvbGRlck5hbWUpLAorICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAzMDcsICJMQVVOQ0hFUkRJUiIsICJbVEFSR0VURElSXSIpLAorICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgMzA3LCAiTEFVTkNIRVJESVIiLCAiW1dpbmRvd3NGb2xkZXJdIiksCiAgICAgICAgICMgbXNpZGJDdXN0b21BY3Rpb25UeXBlRXhlICsgbXNpZGJDdXN0b21BY3Rpb25UeXBlU291cmNlRmlsZQogICAgICAgICAjIFNlZSAiQ3VzdG9tIEFjdGlvbiBUeXBlIDE4IgogICAgICAgICAoIkNvbXBpbGVQeWMiLCAxOCwgInB5dGhvbi5leGUiLCBjb21waWxlYXJncyksCkBAIC00MzcsNiArNDQ0LDggQEAKICAgICAgICAgICAgICAgIyBJbiB0aGUgdXNlciBpbnRlcmZhY2UsIGFzc3VtZSBhbGwtdXNlcnMgaW5zdGFsbGF0aW9uIGlmIHByaXZpbGVnZWQuCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9TeXN0ZW0zMiIsICdETExESVI9IiIgYW5kICcgKyBzeXMzMmNvbmQsIDc1MSksCiAgICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvV2luZG93cyIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgJyArIHN5czMyY29uZCwgNzUzKSwKKyAgICAgICAgICAgICAgKCJTZXRMYXVuY2hlckRpclRvVGFyZ2V0IiwgJ0xBVU5DSEVSRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzU0KSwKICAgICAgICAgICAgICAgKCJTZWxlY3REaXJlY3RvcnlEbGciLCAiTm90IEluc3RhbGxlZCIsIDEyMzApLAogICAgICAgICAgICAgICAjIFhYWCBubyBzdXBwb3J0IGZvciByZXN1bWUgaW5zdGFsbGF0aW9ucyB5ZXQKICAgICAgICAgICAgICAgIygiUmVzdW1lRGxnIiwgIkluc3RhbGxlZCBBTkQgKFJFU1VNRSBPUiBQcmVzZWxlY3RlZCkiLCAxMjQwKSwKQEAgLTQ0NSwxMyArNDU0LDIwIEBACiAgICAgYWRkX2RhdGEoZGIsICJBZG1pblVJU2VxdWVuY2UiLAogICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAgKCJTZXRETExEaXJUb1RhcmdldCIsICdETExESVI9IiInLCA3NTEpLAorICAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAogICAgICAgICAgICAgIF0pCiAKKyAgICAjIFByZXBlbmQgVEFSR0VURElSIHRvIHRoZSBzeXN0ZW0gcGF0aCwgYW5kIHJlbW92ZSBpdCBvbiB1bmluc3RhbGwuCisgICAgYWRkX2RhdGEoZGIsICJFbnZpcm9ubWVudCIsCisgICAgICAgICAgICAgWygiUGF0aEFkZGl0aW9uIiwgIj0tKlBhdGgiLCAiW1RBUkdFVERJUl07W35dIiwgIlJFR0lTVFJZLnBhdGgiKV0pCisKICAgICAjIEV4ZWN1dGUgU2VxdWVuY2VzCiAgICAgYWRkX2RhdGEoZGIsICJJbnN0YWxsRXhlY3V0ZVNlcXVlbmNlIiwKICAgICAgICAgICAgIFsoIkluaXRpYWxUYXJnZXREaXIiLCAnVEFSR0VURElSPSIiJywgNzUwKSwKICAgICAgICAgICAgICAoIlNldERMTERpclRvU3lzdGVtMzIiLCAnRExMRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTEpLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiIGFuZCBub3QgJyArIHN5czMyY29uZCwgNzUyKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9XaW5kb3dzIiwgJ0xBVU5DSEVSRElSPSIiIGFuZCAnICsgc3lzMzJjb25kLCA3NTMpLAorICAgICAgICAgICAgICgiU2V0TGF1bmNoZXJEaXJUb1RhcmdldCIsICdMQVVOQ0hFUkRJUj0iIiBhbmQgbm90ICcgKyBzeXMzMmNvbmQsIDc1NCksCiAgICAgICAgICAgICAgKCJVcGRhdGVFZGl0SURMRSIsIE5vbmUsIDEwNTApLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNjgwMCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA2ODAxKSwKQEAgLTQ2MCw2ICs0NzYsNyBAQAogICAgIGFkZF9kYXRhKGRiLCAiQWRtaW5FeGVjdXRlU2VxdWVuY2UiLAogICAgICAgICAgICAgWygiSW5pdGlhbFRhcmdldERpciIsICdUQVJHRVRESVI9IiInLCA3NTApLAogICAgICAgICAgICAgICgiU2V0RExMRGlyVG9UYXJnZXQiLCAnRExMRElSPSIiJywgNzUxKSwKKyAgICAgICAgICAgICAoIlNldExhdW5jaGVyRGlyVG9UYXJnZXQiLCAnTEFVTkNIRVJESVI9IiInLCA3NTIpLAogICAgICAgICAgICAgICgiQ29tcGlsZVB5YyIsICJDT01QSUxFQUxMIiwgNjgwMCksCiAgICAgICAgICAgICAgKCJDb21waWxlUHlvIiwgIkNPTVBJTEVBTEwiLCA2ODAxKSwKICAgICAgICAgICAgICAoIkNvbXBpbGVHcmFtbWFyIiwgIkNPTVBJTEVBTEwiLCA2ODAyKSwKQEAgLTY3MCwxMSArNjg3LDExIEBACiAgICAgYz1mZWF0dXJlcy54YnV0dG9uKCJBZHZhbmNlZCIsICJBZHZhbmNlZCIsIE5vbmUsIDAuMzApCiAgICAgYy5ldmVudCgiU3Bhd25EaWFsb2ciLCAiQWR2YW5jZWREbGciKQogCi0gICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtRGVzY3JpcHRpb24iLCAxNDAsIDE4MCwgMjEwLCAzMCwgMywKKyAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1EZXNjcmlwdGlvbiIsIDE0MCwgMTgwLCAyMTAsIDQwLCAzLAogICAgICAgICAgICAgICAgICAgIk11bHRpbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGl0ZW0uIikKICAgICBjLm1hcHBpbmcoIlNlbGVjdGlvbkRlc2NyaXB0aW9uIiwiVGV4dCIpCiAKLSAgICBjPWZlYXR1cmVzLnRleHQoIkl0ZW1TaXplIiwgMTQwLCAyMTAsIDIxMCwgNDUsIDMsCisgICAgYz1mZWF0dXJlcy50ZXh0KCJJdGVtU2l6ZSIsIDE0MCwgMjI1LCAyMTAsIDMzLCAzLAogICAgICAgICAgICAgICAgICAgICAiVGhlIHNpemUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBpdGVtLiIpCiAgICAgYy5tYXBwaW5nKCJTZWxlY3Rpb25TaXplIiwgIlRleHQiKQogCkBAIC04MjgsNyArODQ1LDcgQEAKICAgICAjIChpLmUuIGFkZGl0aW9uYWwgUHl0aG9uIGxpYnJhcmllcykgbmVlZCB0byBmb2xsb3cgdGhlIHBhcmVudCBmZWF0dXJlLgogICAgICMgRmVhdHVyZXMgdGhhdCBoYXZlIG5vIGFkdmVydGlzZW1lbnQgdHJpZ2dlciAoZS5nLiB0aGUgdGVzdCBzdWl0ZSkKICAgICAjIG11c3Qgbm90IHN1cHBvcnQgYWR2ZXJ0aXNlbWVudAotICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydAorICAgIGdsb2JhbCBkZWZhdWx0X2ZlYXR1cmUsIHRjbHRrLCBodG1sZmlsZXMsIHRvb2xzLCB0ZXN0c3VpdGUsIGV4dF9mZWF0dXJlLCBwcml2YXRlX2NydCwgcHJlcGVuZF9wYXRoCiAgICAgZGVmYXVsdF9mZWF0dXJlID0gRmVhdHVyZShkYiwgIkRlZmF1bHRGZWF0dXJlIiwgIlB5dGhvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIEludGVycHJldGVyIGFuZCBMaWJyYXJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgZGlyZWN0b3J5ID0gIlRBUkdFVERJUiIpCkBAIC04NDgsMzIgKzg2NSwzOCBAQAogICAgIGh0bWxmaWxlcyA9IEZlYXR1cmUoZGIsICJEb2N1bWVudGF0aW9uIiwgIkRvY3VtZW50YXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIlB5dGhvbiBIVE1MSGVscCBGaWxlIiwgNywgcGFyZW50ID0gZGVmYXVsdF9mZWF0dXJlKQogICAgIHRvb2xzID0gRmVhdHVyZShkYiwgIlRvb2xzIiwgIlV0aWxpdHkgU2NyaXB0cyIsCi0gICAgICAgICAgICAgICAgICAgICJQeXRob24gdXRpbGl0eSBzY3JpcHRzIChUb29scy8iLCA5LAorICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHV0aWxpdHkgc2NyaXB0cyAoVG9vbHMvKSIsIDksCiAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yKQogICAgIHRlc3RzdWl0ZSA9IEZlYXR1cmUoZGIsICJUZXN0c3VpdGUiLCAiVGVzdCBzdWl0ZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUHl0aG9uIHRlc3Qgc3VpdGUgKExpYi90ZXN0LykiLCAxMSwKICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgpCisgICAgIyBwcmVwZW5kX3BhdGggaXMgYW4gYWRkaXRpb25hbCBmZWF0dXJlIHdoaWNoIGlzIHRvIGJlIG9mZiBieSBkZWZhdWx0LgorICAgICMgU2luY2UgdGhlIGRlZmF1bHQgbGV2ZWwgZm9yIHRoZSBhYm92ZSBmZWF0dXJlcyBpcyAxLCB0aGlzIG5lZWRzIHRvIGJlCisgICAgIyBhdCBsZWFzdCBsZXZlbCBoaWdoZXIuCisgICAgcHJlcGVuZF9wYXRoID0gRmVhdHVyZShkYiwgIlByZXBlbmRQYXRoIiwgIkFkZCBweXRob24uZXhlIHRvIFBhdGgiLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBlbmQgW1RBUkdFVERJUl0gdG8gdGhlIHN5c3RlbSBQYXRoIHZhcmlhYmxlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBhbGxvd3MgeW91IHRvIHR5cGUgJ3B5dGhvbicgaW50byBhIGNvbW1hbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgInByb21wdCB3aXRob3V0IG5lZWRpbmcgdGhlIGZ1bGwgcGF0aC4iLCAxMywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IGRlZmF1bHRfZmVhdHVyZSwgYXR0cmlidXRlcz0yfDgsCisgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0yKQogCi1kZWYgZXh0cmFjdF9tc3ZjcjkwKCk6CitkZWYgZXh0cmFjdF9tc3ZjcjEwMCgpOgogICAgICMgRmluZCB0aGUgcmVkaXN0cmlidXRhYmxlIGZpbGVzCiAgICAgaWYgbXNpbGliLldpbjY0OgotICAgICAgICBhcmNoID0gImFtZDY0IgorICAgICAgICBhcmNoID0gIng2NCIKICAgICBlbHNlOgogICAgICAgICBhcmNoID0gIng4NiIKLSAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlM5MENPTU5UT09MUyddLCByIi4uXC4uXFZDXHJlZGlzdFwlc1xNaWNyb3NvZnQuVkM5MC5DUlQiICUgYXJjaCkKKyAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MuZW52aXJvblsnVlMxMDBDT01OVE9PTFMnXSwgciIuLlwuLlxWQ1xyZWRpc3RcJXNcTWljcm9zb2Z0LlZDMTAwLkNSVCIgJSBhcmNoKQogCiAgICAgcmVzdWx0ID0gW10KICAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCi0gICAgIyBvbWl0IG1zdmNtOTAgYW5kIG1zdmNwOTAsIGFzIHRoZXkgYXJlbid0IHJlYWxseSBuZWVkZWQKLSAgICBmaWxlcyA9IFsiTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IiwgIm1zdmNyOTAuZGxsIl0KLSAgICBmb3IgZiBpbiBmaWxlczoKLSAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXIsIGYpCi0gICAgICAgIGt3ID0geydzcmMnOnBhdGh9Ci0gICAgICAgIGlmIGYuZW5kc3dpdGgoJy5kbGwnKToKLSAgICAgICAgICAgIGt3Wyd2ZXJzaW9uJ10gPSBpbnN0YWxsZXIuRmlsZVZlcnNpb24ocGF0aCwgMCkKLSAgICAgICAgICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoKGYsIGt3KSkKLSAgICByZXR1cm4gcmVzdWx0CisgICAgIyBBdCBsZWFzdCBmb3IgVlMyMDEwLCBtYW5pZmVzdHMgYXJlIG5vIGxvbmdlciBwcm92aWRlZAorICAgIG5hbWUgPSAibXN2Y3IxMDAuZGxsIgorICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyLCBuYW1lKQorICAgIGt3ID0geydzcmMnOnBhdGh9CisgICAga3dbJ3ZlcnNpb24nXSA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihwYXRoLCAwKQorICAgIGt3WydsYW5ndWFnZSddID0gaW5zdGFsbGVyLkZpbGVWZXJzaW9uKHBhdGgsIDEpCisgICAgcmV0dXJuIG5hbWUsIGt3CiAKIGRlZiBnZW5lcmF0ZV9saWNlbnNlKCk6CiAgICAgaW1wb3J0IHNodXRpbCwgZ2xvYgpAQCAtODg5LDcgKzkxMiw3IEBACiAgICAgICAgIGRpcnMgPSBnbG9iLmdsb2Ioc3JjZGlyKyIvLi4vIitwYXQpCiAgICAgICAgIGlmIG5vdCBkaXJzOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIkNvdWxkIG5vdCBmaW5kICIrc3JjZGlyKyIvLi4vIitwYXQKLSAgICAgICAgaWYgbGVuKGRpcnMpID4gMjoKKyAgICAgICAgaWYgbGVuKGRpcnMpID4gMiBhbmQgbm90IHNuYXBzaG90OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgIk11bHRpcGxlIGNvcGllcyBvZiAiK3BhdAogICAgICAgICBkaXIgPSBkaXJzWzBdCiAgICAgICAgIHNodXRpbC5jb3B5ZmlsZW9iaihvcGVuKG9zLnBhdGguam9pbihkaXIsIGZpbGUpKSwgb3V0KQpAQCAtOTA0LDE2ICs5MjcsMjggQEAKICAgICAgICAgICAgIGt3Wydjb21wb25lbnRmbGFncyddID0gMiAjbXNpZGJDb21wb25lbnRBdHRyaWJ1dGVzT3B0aW9uYWwKICAgICAgICAgRGlyZWN0b3J5Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3KQogCi0gICAgZGVmIGNoZWNrX3VucGFja2FnZWQoc2VsZik6Ci0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5kaXNjYXJkKCdfX3B5Y2FjaGVfXycpCi0gICAgICAgIHNlbGYudW5wYWNrYWdlZF9maWxlcy5kaXNjYXJkKCcuc3ZuJykKLSAgICAgICAgaWYgc2VsZi51bnBhY2thZ2VkX2ZpbGVzOgotICAgICAgICAgICAgcHJpbnQgIldhcm5pbmc6IFVucGFja2FnZWQgZmlsZXMgaW4gJXMiICUgc2VsZi5hYnNvbHV0ZQotICAgICAgICAgICAgcHJpbnQgc2VsZi51bnBhY2thZ2VkX2ZpbGVzCitkZWYgaGdtYW5pZmVzdCgpOgorICAgICMgRmV0Y2ggZmlsZSBsaXN0IGZyb20gTWVyY3VyaWFsCisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydoZycsICdtYW5pZmVzdCddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgIyBDcmVhdGUgbmVzdGVkIGRpcmVjdG9yaWVzIGZvciBmaWxlIHRyZWUKKyAgICByZXN1bHQgPSB7fQorICAgIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVzKCk6CisgICAgICAgIGNvbXBvbmVudHMgPSBsaW5lLnNwbGl0KCcvJykKKyAgICAgICAgZCA9IHJlc3VsdAorICAgICAgICB3aGlsZSBsZW4oY29tcG9uZW50cykgPiAxOgorICAgICAgICAgICAgZDEgPSBkLnNldGRlZmF1bHQoY29tcG9uZW50c1swXSwge30pCisgICAgICAgICAgICBkID0gZDEKKyAgICAgICAgICAgIGRlbCBjb21wb25lbnRzWzBdCisgICAgICAgIGRbY29tcG9uZW50c1swXV0gPSBOb25lCisgICAgcmV0dXJuIHJlc3VsdAorCiAKICMgU2VlICJGaWxlIFRhYmxlIiwgIkNvbXBvbmVudCBUYWJsZSIsICJEaXJlY3RvcnkgVGFibGUiLAogIyAiRmVhdHVyZUNvbXBvbmVudHMgVGFibGUiCiBkZWYgYWRkX2ZpbGVzKGRiKToKKyAgICBpbnN0YWxsZXIgPSBtc2lsaWIuTWFrZUluc3RhbGxlcigpCisgICAgaGdmaWxlcyA9IGhnbWFuaWZlc3QoKQogICAgIGNhYiA9IENBQigicHl0aG9uIikKICAgICB0bXBmaWxlcyA9IFtdCiAgICAgIyBBZGQgYWxsIGV4ZWN1dGFibGVzLCBpY29ucywgdGV4dCBmaWxlcyBpbnRvIHRoZSBUQVJHRVRESVIgY29tcG9uZW50CkBAIC05MzIsMTEgKzk2NywzMiBAQAogCiAgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXNTaGFyZWREbGxSZWZDb3VudCA9IDgsIHNlZSAiQ29tcG9uZW50IFRhYmxlIgogICAgIGRsbGRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkRMTERJUiIsICIuIikKKyAgICBsYXVuY2hlcmRpciA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHJvb3QsIHNyY2RpciwgIkxBVU5DSEVSRElSIiwgIi4iKQorCisgICAgIyBtc2lkYkNvbXBvbmVudEF0dHJpYnV0ZXM2NGJpdCA9IDI1NjsgdGhpcyBkaXNhYmxlcyByZWdpc3RyeSByZWRpcmVjdGlvbgorICAgICMgdG8gYWxsb3cgc2V0dGluZyB0aGUgU2hhcmVkRExMcyBrZXkgaW4gdGhlIDY0LWJpdCBwb3J0aW9uIGV2ZW4gZm9yIGEKKyAgICAjIDMyLWJpdCBpbnN0YWxsZXIuCisgICAgIyBYWFggZG9lcyB0aGlzIHN0aWxsIGFsbG93IHRvIGluc3RhbGwgdGhlIGNvbXBvbmVudCBvbiBhIDMyLWJpdCBzeXN0ZW0/CisgICAgIyBQaWNrIHVwIDMyLWJpdCBiaW5hcnkgYWx3YXlzCisgICAgbGF1bmNoZXJzcmMgPSBQQ0JVSUxECisgICAgaWYgbGF1bmNoZXJzcmMubG93ZXIoKSA9PSAncGNidWlsZFxceDY0LXBnbyc6CisgICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGRcXHdpbjMyLXBnbycKKyAgICBpZiBsYXVuY2hlcnNyYy5sb3dlcigpID09ICdwY2J1aWxkXFxhbWQ2NCc6CisgICAgICAgIGxhdW5jaGVyc3JjID0gJ1BDQnVpbGQnCisgICAgbGF1bmNoZXIgPSBvcy5wYXRoLmpvaW4oc3JjZGlyLCBsYXVuY2hlcnNyYywgInB5LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuc3RhcnRfY29tcG9uZW50KCJsYXVuY2hlciIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5LmV4ZSIpCisgICAgbGF1bmNoZXJkaXIuYWRkX2ZpbGUobGF1bmNoZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1pbnN0YWxsZXIuRmlsZVZlcnNpb24obGF1bmNoZXIsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlciwgMSkpCisgICAgbGF1bmNoZXJ3ID0gb3MucGF0aC5qb2luKHNyY2RpciwgbGF1bmNoZXJzcmMsICJweXcuZXhlIikKKyAgICBsYXVuY2hlcmRpci5zdGFydF9jb21wb25lbnQoImxhdW5jaGVydyIsIGZsYWdzID0gOCsyNTYsIGtleWZpbGU9InB5dy5leGUiKQorICAgIGxhdW5jaGVyZGlyLmFkZF9maWxlKGxhdW5jaGVydywKKyAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlcncsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmd1YWdlPWluc3RhbGxlci5GaWxlVmVyc2lvbihsYXVuY2hlcncsIDEpKQogCiAgICAgcHlkbGwgPSAicHl0aG9uJXMlcy5kbGwiICUgKG1ham9yLCBtaW5vcikKICAgICBweWRsbHNyYyA9IG9zLnBhdGguam9pbihzcmNkaXIsIFBDQlVJTEQsIHB5ZGxsKQogICAgIGRsbGRpci5zdGFydF9jb21wb25lbnQoIkRMTERJUiIsIGZsYWdzID0gOCwga2V5ZmlsZSA9IHB5ZGxsLCB1dWlkID0gcHl0aG9uZGxsX3V1aWQpCi0gICAgaW5zdGFsbGVyID0gbXNpbGliLk1ha2VJbnN0YWxsZXIoKQogICAgIHB5dmVyc2lvbiA9IGluc3RhbGxlci5GaWxlVmVyc2lvbihweWRsbHNyYywgMCkKICAgICBpZiBub3Qgc25hcHNob3Q6CiAgICAgICAgICMgRm9yIHJlbGVhc2VzLCB0aGUgUHl0aG9uIERMTCBoYXMgdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUKQEAgLTk1Miw5ICsxMDA4LDggQEAKICAgICAjIHBvaW50aW5nIHRvIHRoZSByb290IGRpcmVjdG9yeQogICAgIHJvb3Quc3RhcnRfY29tcG9uZW50KCJtc3ZjcjkwIiwgZmVhdHVyZT1wcml2YXRlX2NydCkKICAgICAjIFJlc3VsdHMgYXJlIElELGtleXdvcmQgcGFpcnMKLSAgICBtYW5pZmVzdCwgY3J0ZGxsID0gZXh0cmFjdF9tc3ZjcjkwKCkKLSAgICByb290LmFkZF9maWxlKG1hbmlmZXN0WzBdLCAqKm1hbmlmZXN0WzFdKQotICAgIHJvb3QuYWRkX2ZpbGUoY3J0ZGxsWzBdLCAqKmNydGRsbFsxXSkKKyAgICBjcnRkbGwsIGt3ZHMgPSBleHRyYWN0X21zdmNyMTAwKCkKKyAgICByb290LmFkZF9maWxlKGNydGRsbCwgKiprd2RzKQogICAgICMgQ29weSB0aGUgbWFuaWZlc3QKICAgICAjIEFjdHVhbGx5LCBkb24ndCBkbyB0aGF0IGFueW1vcmUgLSBubyBETEwgaW4gRExMcyBzaG91bGQgaGF2ZSBhIG1hbmlmZXN0CiAgICAgIyBkZXBlbmRlbmN5IG9uIG1zdmNyOTAuZGxsIGFueW1vcmUsIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkKQEAgLTk3NSwxMDQgKzEwMzAsNDAgQEAKIAogICAgICMgQWRkIGFsbCAucHkgZmlsZXMgaW4gTGliLCBleGNlcHQgdGtpbnRlciwgdGVzdAogICAgIGRpcnMgPSBbXQotICAgIHB5ZGlycyA9IFsocm9vdCwiTGliIildCisgICAgcHlkaXJzID0gWyhyb290LCAiTGliIiwgaGdmaWxlc1siTGliIl0sIGRlZmF1bHRfZmVhdHVyZSldCiAgICAgd2hpbGUgcHlkaXJzOgogICAgICAgICAjIENvbW1pdCBldmVyeSBub3cgYW5kIHRoZW4sIG9yIGVsc2UgaW5zdGFsbGVyIHdpbGwgY29tcGxhaW4KICAgICAgICAgZGIuQ29tbWl0KCkKLSAgICAgICAgcGFyZW50LCBkaXIgPSBweWRpcnMucG9wKCkKLSAgICAgICAgaWYgZGlyID09ICIuc3ZuIiBvciBkaXIgPT0gJ19fcHljYWNoZV9fJyBvciBkaXIuc3RhcnRzd2l0aCgicGxhdC0iKToKKyAgICAgICAgcGFyZW50LCBkaXIsIGZpbGVzLCBmZWF0dXJlID0gcHlkaXJzLnBvcCgpCisgICAgICAgIGlmIGRpci5zdGFydHN3aXRoKCJwbGF0LSIpOgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxpZiBkaXIgaW4gWyJ0a2ludGVyIiwgImlkbGVsaWIiLCAiSWNvbnMiXToKKyAgICAgICAgaWYgZGlyIGluIFsidGtpbnRlciIsICJpZGxlbGliIiwgInR1cnRsZWRlbW8iXToKICAgICAgICAgICAgIGlmIG5vdCBoYXZlX3RjbDoKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmVhdHVyZSA9IHRjbHRrCiAgICAgICAgICAgICB0Y2x0ay5zZXRfY3VycmVudCgpCi0gICAgICAgIGVsaWYgZGlyIGluIFsndGVzdCcsICd0ZXN0cycsICdkYXRhJywgJ291dHB1dCddOgotICAgICAgICAgICAgIyB0ZXN0OiBMaWIsIExpYi9lbWFpbCwgTGliL2N0eXBlcywgTGliL3NxbGl0ZTMKLSAgICAgICAgICAgICMgdGVzdHM6IExpYi9kaXN0dXRpbHMKLSAgICAgICAgICAgICMgZGF0YTogTGliL2VtYWlsL3Rlc3QKLSAgICAgICAgICAgICMgb3V0cHV0OiBMaWIvdGVzdAotICAgICAgICAgICAgdGVzdHN1aXRlLnNldF9jdXJyZW50KCkKKyAgICAgICAgZWxpZiBkaXIgaW4gKCd0ZXN0JywgJ3Rlc3RzJyk6CisgICAgICAgICAgICBmZWF0dXJlID0gdGVzdHN1aXRlCiAgICAgICAgIGVsaWYgbm90IGhhdmVfY3R5cGVzIGFuZCBkaXIgPT0gImN0eXBlcyI6CiAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGVmYXVsdF9mZWF0dXJlLnNldF9jdXJyZW50KCkKKyAgICAgICAgZmVhdHVyZS5zZXRfY3VycmVudCgpCiAgICAgICAgIGxpYiA9IFB5RGlyZWN0b3J5KGRiLCBjYWIsIHBhcmVudCwgZGlyLCBkaXIsICIlc3wlcyIgJSAocGFyZW50Lm1ha2Vfc2hvcnQoZGlyKSwgZGlyKSkKLSAgICAgICAgIyBBZGQgYWRkaXRpb25hbCBmaWxlcwogICAgICAgICBkaXJzLmFwcGVuZChsaWIpCi0gICAgICAgIGxpYi5nbG9iKCIqLnR4dCIpCi0gICAgICAgIGlmIGRpcj09J3NpdGUtcGFja2FnZXMnOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJSRUFETUUudHh0Iiwgc3JjPSJSRUFETUUiKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZmlsZXMgPSBsaWIuZ2xvYigiKi5weSIpCi0gICAgICAgIGZpbGVzICs9IGxpYi5nbG9iKCIqLnB5dyIpCi0gICAgICAgIGlmIGZpbGVzOgotICAgICAgICAgICAgIyBBZGQgYW4gZW50cnkgdG8gdGhlIFJlbW92ZUZpbGUgdGFibGUgdG8gcmVtb3ZlIGJ5dGVjb2RlIGZpbGVzLgotICAgICAgICAgICAgbGliLnJlbW92ZV9weWMoKQotICAgICAgICAjIHBhY2thZ2UgUkVBRE1FcyBpZiBwcmVzZW50Ci0gICAgICAgIGxpYi5nbG9iKCJSRUFETUUiKQotICAgICAgICBpZiBkaXI9PSdMaWInOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCd3c2dpcmVmLmVnZy1pbmZvJykKLSAgICAgICAgaWYgZGlyPT0ndGVzdCcgYW5kIHBhcmVudC5waHlzaWNhbD09J0xpYic6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIjE4NXRlc3QuZGIiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJhdWRpb3Rlc3QuYXUiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJzZ21sX2lucHV0Lmh0bWwiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJ0ZXN0dGFyLnRhciIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3RfZGlmZmxpYl9leHBlY3QuaHRtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImNoZWNrX3NvdW5kY2FyZC52YnMiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJlbXB0eS52YnMiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJTaW5lLTEwMDBIei0zMDBtcy5haWYiKQotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJtaW1lLnR5cGVzIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnV1ZSIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiKi5wZW0iKQotICAgICAgICAgICAgbGliLmdsb2IoIioucGNrIikKLSAgICAgICAgICAgIGxpYi5nbG9iKCJjZmdwYXJzZXIuKiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInppcF9jcDQzN19oZWFkZXIuemlwIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiemlwZGlyLnppcCIpCi0gICAgICAgIGlmIGRpcj09J2NhcGF0aCc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigiKi4wIikKLSAgICAgICAgaWYgZGlyPT0ndGVzdHMnIGFuZCBwYXJlbnQucGh5c2ljYWw9PSdkaXN0dXRpbHMnOgotICAgICAgICAgICAgbGliLmFkZF9maWxlKCJTZXR1cC5zYW1wbGUiKQotICAgICAgICBpZiBkaXI9PSdkZWNpbWFsdGVzdGRhdGEnOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZGVjVGVzdCIpCi0gICAgICAgIGlmIGRpcj09J3htbHRlc3RkYXRhJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLnhtbCIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInRlc3QueG1sLm91dCIpCi0gICAgICAgIGlmIGRpcj09J291dHB1dCc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigidGVzdF8qIikKLSAgICAgICAgaWYgZGlyPT0nc25kaGRyZGF0YSc6Ci0gICAgICAgICAgICBsaWIuZ2xvYigic25kaGRyLioiKQotICAgICAgICBpZiBkaXI9PSdpZGxlbGliJzoKLSAgICAgICAgICAgIGxpYi5nbG9iKCIqLmRlZiIpCi0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoImlkbGUuYmF0IikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiQ2hhbmdlTG9nIikKLSAgICAgICAgaWYgZGlyPT0iSWNvbnMiOgotICAgICAgICAgICAgbGliLmdsb2IoIiouZ2lmIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiaWRsZS5pY25zIikKLSAgICAgICAgaWYgZGlyPT0iY29tbWFuZCIgYW5kIHBhcmVudC5waHlzaWNhbD09ImRpc3R1dGlscyI6Ci0gICAgICAgICAgICBsaWIuZ2xvYigid2luaW5zdCouZXhlIikKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiY29tbWFuZF90ZW1wbGF0ZSIpCi0gICAgICAgIGlmIGRpcj09ImxpYjJ0bzMiOgotICAgICAgICAgICAgbGliLnJlbW92ZWZpbGUoInBpY2tsZSIsICIqLnBpY2tsZSIpCi0gICAgICAgIGlmIGRpcj09Im1hY2hvbGliIjoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLmN0eXBlcyIpCi0gICAgICAgICAgICBsaWIuZ2xvYigiZmV0Y2hfbWFjaG9saWIqIikKLSAgICAgICAgaWYgZGlyPT0ndHVydGxlZGVtbyc6Ci0gICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInR1cnRsZS5jZmciKQotICAgICAgICBpZiBkaXI9PSJweWRvY19kYXRhIjoKLSAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiX3B5ZG9jLmNzcyIpCi0gICAgICAgIGlmIGRpcj09ImRhdGEiIGFuZCBwYXJlbnQucGh5c2ljYWw9PSJ0ZXN0IiBhbmQgcGFyZW50LmJhc2VkaXIucGh5c2ljYWw9PSJlbWFpbCI6Ci0gICAgICAgICAgICAjIFRoaXMgc2hvdWxkIGNvbnRhaW4gYWxsIG5vbi0uc3ZuIGZpbGVzIGxpc3RlZCBpbiBzdWJ2ZXJzaW9uCi0gICAgICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGxpYi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICAgICAgaWYgZi5lbmRzd2l0aCgiLnR4dCIpIG9yIGY9PSIuc3ZuIjpjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoIi5hdSIpIG9yIGYuZW5kc3dpdGgoIi5naWYiKToKLSAgICAgICAgICAgICAgICAgICAgbGliLmFkZF9maWxlKGYpCisgICAgICAgIGhhc19weSA9IEZhbHNlCisgICAgICAgIGZvciBuYW1lLCBzdWJkaXIgaW4gZmlsZXMuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHN1YmRpciBpcyBOb25lOgorICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4obGliLmFic29sdXRlLCBuYW1lKSkKKyAgICAgICAgICAgICAgICBpZiBuYW1lID09ICdSRUFETUUnOgorICAgICAgICAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIlJFQURNRS50eHQiLCBzcmM9IlJFQURNRSIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIldBUk5JTkc6IE5ldyBmaWxlICVzIGluIGVtYWlsL3Rlc3QvZGF0YSIgJSBmKQotICAgICAgICBmb3IgZiBpbiBvcy5saXN0ZGlyKGxpYi5hYnNvbHV0ZSk6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIGYpKToKLSAgICAgICAgICAgICAgICBweWRpcnMuYXBwZW5kKChsaWIsIGYpKQotICAgIGZvciBkIGluIGRpcnM6Ci0gICAgICAgIGQuY2hlY2tfdW5wYWNrYWdlZCgpCisgICAgICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZShuYW1lKQorICAgICAgICAgICAgICAgICAgICBoYXNfcHkgPSBoYXNfcHkgb3IgbmFtZS5lbmRzd2l0aCgiLnB5Iikgb3IgbmFtZS5lbmRzd2l0aCgiLnB5dyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFzc2VydCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihsaWIuYWJzb2x1dGUsIG5hbWUpKQorICAgICAgICAgICAgICAgIHB5ZGlycy5hcHBlbmQoKGxpYiwgbmFtZSwgc3ViZGlyLCBmZWF0dXJlKSkKKworICAgICAgICBpZiBoYXNfcHk6CisgICAgICAgICAgICBsaWIucmVtb3ZlX3B5YygpCiAgICAgIyBBZGQgRExMcwogICAgIGRlZmF1bHRfZmVhdHVyZS5zZXRfY3VycmVudCgpCiAgICAgbGliID0gRExMcwpAQCAtMTE1OSw2ICsxMTUwLDggQEAKICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgiUkVBRE1FLnR4dCIsIHNyYz0iUkVBRE1FIikKICAgICAgICAgaWYgZiA9PSAnU2NyaXB0cyc6CiAgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoIjJ0bzMucHkiLCBzcmM9IjJ0bzMiKQorICAgICAgICAgICAgbGliLmFkZF9maWxlKCJweWRvYzMucHkiLCBzcmM9InB5ZG9jMyIpCisgICAgICAgICAgICBsaWIuYWRkX2ZpbGUoInB5dmVudi5weSIsIHNyYz0icHl2ZW52IikKICAgICAgICAgICAgIGlmIGhhdmVfdGNsOgogICAgICAgICAgICAgICAgIGxpYi5zdGFydF9jb21wb25lbnQoInB5ZG9jZ3VpLnB5dyIsIHRjbHRrLCBrZXlmaWxlPSJweWRvY2d1aS5weXciKQogICAgICAgICAgICAgICAgIGxpYi5hZGRfZmlsZSgicHlkb2NndWkucHl3IikKQEAgLTExOTAsNiArMTE4Myw4IEBACiAgICAgICAgICAgICAgICAiSW5zdGFsbFBhdGgiKSwKICAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kb2MiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwgTm9uZSwKICAgICAgICAgICAgICAgICJEb2N1bWVudGF0aW9uIiksCisgICAgICAgICAgICAgICgiUkVHSVNUUlkucGF0aCIsIG1zaWxpYi5nZW5fdXVpZCgpLCAiVEFSR0VURElSIiwgcmVnaXN0cnlfY29tcG9uZW50LCBOb25lLAorICAgICAgICAgICAgICBOb25lKSwKICAgICAgICAgICAgICAgKCJSRUdJU1RSWS5kZWYiLCBtc2lsaWIuZ2VuX3V1aWQoKSwgIlRBUkdFVERJUiIsIHJlZ2lzdHJ5X2NvbXBvbmVudCwKICAgICAgICAgICAgICAgIE5vbmUsIE5vbmUpXSArIHRjbGRhdGEpCiAgICAgIyBTZWUgIkZlYXR1cmVDb21wb25lbnRzIFRhYmxlIi4KQEAgLTEyMDYsNiArMTIwMSw3IEBACiAgICAgYWRkX2RhdGEoZGIsICJGZWF0dXJlQ29tcG9uZW50cyIsCiAgICAgICAgICAgICAgWyhkZWZhdWx0X2ZlYXR1cmUuaWQsICJSRUdJU1RSWSIpLAogICAgICAgICAgICAgICAoaHRtbGZpbGVzLmlkLCAiUkVHSVNUUlkuZG9jIiksCisgICAgICAgICAgICAgIChwcmVwZW5kX3BhdGguaWQsICJSRUdJU1RSWS5wYXRoIiksCiAgICAgICAgICAgICAgIChleHRfZmVhdHVyZS5pZCwgIlJFR0lTVFJZLmRlZiIpXSArCiAgICAgICAgICAgICAgIHRjbGRhdGEKICAgICAgICAgICAgICAgKQpAQCAtMTI0NCwxMSArMTI0MCwxMSBAQAogICAgICAgICAgICAgICAidGV4dC9wbGFpbiIsICJSRUdJU1RSWS5kZWYiKSwKICAgICAgICAgICAgICAjVmVyYnMKICAgICAgICAgICAgICAoInB5Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICIiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob24uZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAorICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHkuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgICgicHl3Lm9wZW4iLCAtMSwgcGF0ICUgKHRlc3RwcmVmaXgsICJOb0NvbiIsICJvcGVuIiksICIiLAotICAgICAgICAgICAgICByJyJbVEFSR0VURElSXXB5dGhvbncuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAorICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHl3LmV4ZSIgIiUxIiAlKicsICJSRUdJU1RSWS5kZWYiKSwKICAgICAgICAgICAgICAoInB5Yy5vcGVuIiwgLTEsIHBhdCAlICh0ZXN0cHJlZml4LCAiQ29tcGlsZWQiLCAib3BlbiIpLCAiIiwKLSAgICAgICAgICAgICAgciciW1RBUkdFVERJUl1weXRob24uZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAorICAgICAgICAgICAgICByJyJbTEFVTkNIRVJESVJdcHkuZXhlIiAiJTEiICUqJywgIlJFR0lTVFJZLmRlZiIpLAogICAgICAgICAgICAgIF0gKyB0Y2xfdmVyYnMgKyBbCiAgICAgICAgICAgICAgI0ljb25zCiAgICAgICAgICAgICAgKCJweS5pY29uIiwgLTEsIHBhdDIgJSAodGVzdHByZWZpeCwgIiIpLCAiIiwKQEAgLTEzNDcsOSArMTM0Myw5IEBACiAjIE1lcmdlIENSVCBpbnRvIE1TSSBmaWxlLiBUaGlzIHJlcXVpcmVzIHRoZSBkYXRhYmFzZSB0byBiZSBjbG9zZWQuCiBtb2RfZGlyID0gb3MucGF0aC5qb2luKG9zLmVudmlyb25bIlByb2dyYW1GaWxlcyJdLCAiQ29tbW9uIEZpbGVzIiwgIk1lcmdlIE1vZHVsZXMiKQogaWYgbXNpbGliLldpbjY0OgotICAgIG1vZHVsZXMgPSBbIk1pY3Jvc29mdF9WQzkwX0NSVF94ODZfeDY0Lm1zbSIsICJwb2xpY3lfOV8wX01pY3Jvc29mdF9WQzkwX0NSVF94ODZfeDY0Lm1zbSJdCisgICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDMTAwX0NSVF94NjQubXNtIl0KIGVsc2U6Ci0gICAgbW9kdWxlcyA9IFsiTWljcm9zb2Z0X1ZDOTBfQ1JUX3g4Ni5tc20iLCJwb2xpY3lfOV8wX01pY3Jvc29mdF9WQzkwX0NSVF94ODYubXNtIl0KKyAgICBtb2R1bGVzID0gWyJNaWNyb3NvZnRfVkMxMDBfQ1JUX3g4Ni5tc20iXQogCiBmb3IgaSwgbiBpbiBlbnVtZXJhdGUobW9kdWxlcyk6CiAgICAgbW9kdWxlc1tpXSA9IG9zLnBhdGguam9pbihtb2RfZGlyLCBuKQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaWxpYi5weSBiL1Rvb2xzL21zaS9tc2lsaWIucHkKaW5kZXggNTc5NWQwZS4uNDcyZDlkNCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21zaWxpYi5weQorKysgYi9Ub29scy9tc2kvbXNpbGliLnB5CkBAIC00MDgsNyArNDA4LDcgQEAKICAgICAgICAgc2VsZi5waHlzaWNhbCA9IHBoeXNpY2FsCiAgICAgICAgIHNlbGYubG9naWNhbCA9IGxvZ2ljYWwKICAgICAgICAgc2VsZi5jb21wb25lbnQgPSBOb25lCi0gICAgICAgIHNlbGYuc2hvcnRfbmFtZXMgPSBzZXRzLlNldCgpCisgICAgICAgIHNlbGYuc2hvcnRfbmFtZXMgPSB7fQogICAgICAgICBzZWxmLmlkcyA9IHNldHMuU2V0KCkKICAgICAgICAgc2VsZi5rZXlmaWxlcyA9IHt9CiAgICAgICAgIHNlbGYuY29tcG9uZW50ZmxhZ3MgPSBjb21wb25lbnRmbGFncwpAQCAtNDU2LDIzICs0NTYsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFsoZmVhdHVyZS5pZCwgY29tcG9uZW50KV0pCiAKICAgICBkZWYgbWFrZV9zaG9ydChzZWxmLCBmaWxlKToKKyAgICAgICAgbG9uZyA9IGZpbGUKICAgICAgICAgZmlsZSA9IHJlLnN1YihyJ1tcP3w+PDovKiIrLDs9XFtcXV0nLCAnXycsIGZpbGUpICMgcmVzdHJpY3Rpb25zIG9uIHNob3J0IG5hbWVzCi0gICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIpCisgICAgICAgIHBhcnRzID0gZmlsZS5zcGxpdCgiLiIsIDEpCiAgICAgICAgIGlmIGxlbihwYXJ0cyk+MToKLSAgICAgICAgICAgIHN1ZmZpeCA9IHBhcnRzWy0xXS51cHBlcigpCisgICAgICAgICAgICBzdWZmaXggPSBwYXJ0c1sxXS51cHBlcigpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdWZmaXggPSBOb25lCisgICAgICAgICAgICBzdWZmaXggPSAnJwogICAgICAgICBwcmVmaXggPSBwYXJ0c1swXS51cHBlcigpCi0gICAgICAgIGlmIGxlbihwcmVmaXgpIDw9IDggYW5kIChub3Qgc3VmZml4IG9yIGxlbihzdWZmaXgpPD0zKToKKyAgICAgICAgaWYgbGVuKHByZWZpeCkgPD0gOCBhbmQgJy4nIG5vdCBpbiBzdWZmaXggYW5kIGxlbihzdWZmaXgpIDw9IDM6CiAgICAgICAgICAgICBpZiBzdWZmaXg6CiAgICAgICAgICAgICAgICAgZmlsZSA9IHByZWZpeCsiLiIrc3VmZml4CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZpbGUgPSBwcmVmaXgKLSAgICAgICAgICAgIGFzc2VydCBmaWxlIG5vdCBpbiBzZWxmLnNob3J0X25hbWVzCisgICAgICAgICAgICBhc3NlcnQgZmlsZSBub3QgaW4gc2VsZi5zaG9ydF9uYW1lcywgKGZpbGUsIHNlbGYuc2hvcnRfbmFtZXNbZmlsZV0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwcmVmaXggPSBwcmVmaXhbOjZdCiAgICAgICAgICAgICBpZiBzdWZmaXg6Ci0gICAgICAgICAgICAgICAgc3VmZml4ID0gc3VmZml4WzozXQorICAgICAgICAgICAgICAgICMgbGFzdCB0aHJlZSBjaGFyYWN0ZXJzIG9mIGxhc3Qgc3VmZml4CisgICAgICAgICAgICAgICAgc3VmZml4ID0gc3VmZml4LnJzcGxpdCgnLicpWy0xXVs6M10KICAgICAgICAgICAgIHBvcyA9IDEKICAgICAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICAgICAgaWYgc3VmZml4OgpAQCAtNDg0LDcgKzQ4Niw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0IHBvcyA8IDEwMDAwCiAgICAgICAgICAgICAgICAgaWYgcG9zIGluICgxMCwgMTAwLCAxMDAwKToKICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gcHJlZml4WzotMV0KLSAgICAgICAgc2VsZi5zaG9ydF9uYW1lcy5hZGQoZmlsZSkKKyAgICAgICAgc2VsZi5zaG9ydF9uYW1lc1tmaWxlXSA9IGxvbmcKICAgICAgICAgcmV0dXJuIGZpbGUKIAogICAgIGRlZiBhZGRfZmlsZShzZWxmLCBmaWxlLCBzcmM9Tm9uZSwgdmVyc2lvbj1Ob25lLCBsYW5ndWFnZT1Ob25lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS91dWlkcy5weSBiL1Rvb2xzL21zaS91dWlkcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBkMTdhZC4uMDAwMDAwMAotLS0gYS9Ub29scy9tc2kvdXVpZHMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIFRoaXMgc2hvdWxkIGJlIGV4dGVuZGVkIGZvciBlYWNoIFB5dGhvbiByZWxlYXNlLgotIyBUaGUgcHJvZHVjdCBjb2RlIG11c3QgY2hhbmdlIHdoZW5ldmVyIHRoZSBuYW1lIG9mIHRoZSBNU0kgZmlsZQotIyBjaGFuZ2VzLCBhbmQgd2hlbiBuZXcgY29tcG9uZW50IGNvZGVzIGFyZSBpc3N1ZWQgZm9yIGV4aXN0aW5nCi0jIGNvbXBvbmVudHMuIFNlZSAiQ2hhbmdpbmcgdGhlIFByb2R1Y3QgQ29kZSIuIEFzIHdlIGNoYW5nZSB0aGUKLSMgY29tcG9uZW50IGNvZGVzIHdpdGggZXZlcnkgYnVpbGQsIHdlIG5lZWQgYSBuZXcgcHJvZHVjdCBjb2RlCi0jIGVhY2ggdGltZS4gRm9yIGludGVybWVkaWF0ZSAoc25hcHNob3QpIHJlbGVhc2VzLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5Ci0jIGdlbmVyYXRlZC4gRm9yIG9mZmljaWFsIHJlbGVhc2VzLCB3ZSByZWNvcmQgdGhlIHByb2R1Y3QgY29kZXMsCi0jIHNvIHBlb3BsZSBjYW4gcmVmZXIgdG8gdGhlbS4KLXByb2R1Y3RfY29kZXMgPSB7Ci0gICAgJzIuNS4xMDEnOiAne2JjMTRjZTNlLTVlNzItNGE2NC1hYzFmLWJmNTlhNTcxODk4Y30nLCAjIDIuNWExCi0gICAgJzIuNS4xMDInOiAnezVlZWQ1MWMxLThlOWQtNDA3MS05NGM1LWI0MGRlNWQ0OWJhNX0nLCAjIDIuNWEyCi0gICAgJzIuNS4xMDMnOiAnezczZGNkOTY2LWZmZWMtNDE1Zi1iYjM5LTgzNDJjMWY0NzAxN30nLCAjIDIuNWEzCi0gICAgJzIuNS4xMTEnOiAne2M3OTdlY2Y4LWE4ZTYtNGZlYy1iYjk5LTUyNmI2NWYyODYyNn0nLCAjIDIuNWIxCi0gICAgJzIuNS4xMTInOiAnezMyYmViNzc0LWY2MjUtNDM5ZC1iNTg3LTcxODc0ODdiYWYxNX0nLCAjIDIuNWIyCi0gICAgJzIuNS4xMTMnOiAnezg5ZjIzOTE4LTExY2YtNGYwOC1iZTEzLWI5YjJlNjQ2M2ZkOX0nLCAjIDIuNWIzCi0gICAgJzIuNS4xMjEnOiAnezhlOTMyMWJjLTZiMjQtNDhhMy04ZmQ0LWM5NWY4ZTUzMWU1Zn0nLCAjIDIuNWMxCi0gICAgJzIuNS4xMjInOiAne2E2Y2Q1MDhkLTk1OTktNDVkYS1hNDQxLWNiZmZhOWY3ZTA3MH0nLCAjIDIuNWMyCi0gICAgJzIuNS4xNTAnOiAnezBhMmM1ODU0LTU1N2UtNDhjOC04MzVhLTNiOWYwNzRiZGNhYX0nLCAjIDIuNS4wCi0gICAgJzIuNS4xMTIxJzonezAzNzhiNDNlLTYxODQtNGMyZi1iZTFhLTRhMzY3NzgxY2Q1NH0nLCAjIDIuNS4xYzEKLSAgICAnMi41LjExNTAnOid7MzE4MDAwMDQtNjM4Ni00OTk5LWE1MTktNTE4ZjJkNzhkOGYwfScsICMgMi41LjEKLSAgICAnMi41LjIxNTAnOid7NjMwNGE3ZGEtMTEzMi00ZTkxLWEzNDMtYTI5NjI2OWVhYjhhfScsICMgMi41LjJjMQotICAgICcyLjUuMjE1MCc6J3s2Yjk3NmFkZi04YWU4LTQzNGUtYjI4Mi1hMDZjN2Y2MjRkMmZ9JywgIyAyLjUuMgotICAgICcyLjYuMTAxJzogJ3swYmE4MmUxYi01MmZkLTRlMDMtODYxMC1hNmM3NjIzOGU4YTh9JywgIyAyLjZhMQotICAgICcyLjYuMTAyJzogJ3szYjI3ZTE2Yy01NmRiLTQ1NzAtYTJkMy1lOWEyNjE4MGM2MGJ9JywgIyAyLjZhMgotICAgICcyLjYuMTAzJzogJ3tjZDA2YTljNS1iZGU1LTRiZDctOTg3NC00ODkzMzk5NzEyMmF9JywgIyAyLjZhMwotICAgICcyLjYuMTA0JzogJ3tkYzZlZDYzNC00NzRhLTRhNTAtYTU0Ny04ZGU0Yjc0OTFlNTN9JywgIyAyLjZhNAotICAgICcyLjYuMTExJzogJ3szZjgyMDc5YS01YmVlLTRjNGEtOGE0MS04MjkyMzg5ZTI0YWV9JywgIyAyLjZiMQotICAgICcyLjYuMTEyJzogJ3s4YTBlNTk3MC1mM2U2LTQ3MzctOWEyYi1iYzVmZjBmMTVmYjV9JywgIyAyLjZiMgotICAgICcyLjYuMTEzJzogJ3tkZjRmNWMyMS02ZmNjLTQ1NDAtOTVkZS04NWZlYmE2MzRlNzZ9JywgIyAyLjZiMwotICAgICcyLjYuMTIxJzogJ3tiYmQzNDQ2NC1kZGViLTQwMjgtOTllNS1mMTZjNGE4ZmJkYjN9JywgIyAyLjZjMQotICAgICcyLjYuMTIyJzogJ3s4ZjY0Nzg3ZS1hMDIzLTRjNjAtYmZlZS0yNWQzYTNmNTkyYzZ9JywgIyAyLjZjMgotICAgICcyLjYuMTUwJzogJ3sxMTBlYjVjNC1lOTk1LTRjZmItYWI4MC1hNWYzMTViZWE5ZTh9JywgIyAyLjYuMAotICAgICcyLjYuMTE1MCc6J3s5Y2M4OTE3MC0wMDBiLTQ1N2QtOTFmMS01MzY5MWY4NWIyMjN9JywgIyAyLjYuMQotICAgICcyLjYuMjEyMSc6J3thZGFjNDEyYi1iMjA5LTRjMTUtYjZhYi1kY2ExYjZlNDcxNDR9JywgIyAyLjYuMmMxCi0gICAgJzIuNi4yMTUwJzonezI0YWFiNDIwLTRlMzAtNDQ5Ni05NzM5LTNlMjE2ZjNkZTZhZX0nLCAjIDIuNi4yCi0gICAgJzIuNi4zMTIxJzone2E3M2UwMjU0LWRjZGEtNGZlNC1iZjM3LWM3ZTFjNGY0ZWJiNn0nLCAjIDIuNi4zYzEKLSAgICAnMi42LjMxNTAnOid7M2Q5YWMwOTUtZTExNS00ZTk0LWJkZWYtN2Y3ZWRmMTc2OTdkfScsICMgMi42LjMKLSAgICAnMi42LjQxMjEnOid7NzI3ZGU2MDUtMDM1OS00NjA2LWE5NGItYzIwMzM2NTIzNzlifScsICMgMi42LjRjMQotICAgICcyLjYuNDEyMic6J3s0Zjc2MDNjNi02MzUyLTQyOTktYTM5OC0xNTBhMzFiMTlhY2N9JywgIyAyLjYuNGMyCi0gICAgJzIuNi40MTUwJzone2U3Mzk0YTBmLTNmODAtNDViMS04N2ZjLWFiY2Q1MTg5MzI0Nn0nLCAjIDIuNi40Ci0gICAgJzIuNi41MTIxJzone2UwZTI3M2Q3LTc1OTgtNDcwMS04MzI1LWM5MGMwNjlmZDVmZn0nLCAjIDIuNi41YzEKLSAgICAnMi42LjUxMjInOid7ZmEyMjdiNzYtMDY3MS00ZGM2LWI4MjYtYzJmZjJhNzBkZmQ1fScsICMgMi42LjVjMgotICAgICcyLjYuNTE1MCc6J3s0NzIzZjE5OS1mYTY0LTQyMzMtOGU2ZS05ZmNjYzk1YTE4ZWV9JywgIyAyLjYuNQotICAgICcyLjcuMTAxJzogJ3tlY2ExYmJlZi00MzJjLTQ5YWUtYTY2Ny1jMjEzY2M3YmJmMjJ9JywgIyAyLjdhMQotICAgICcyLjcuMTAyJzogJ3syMWNlMTZlZC03M2M0LTQ2MGQtOWIxMS01MjJmNDE3YjIwOTB9JywgIyAyLjdhMgotICAgICcyLjcuMTAzJzogJ3s2ZTdkYmQ1NS1iYTRhLTQ4YWMtYTY4OC02Yzc1ZGI0ZDc1MDB9JywgIyAyLjdhMwotICAgICcyLjcuMTA0JzogJ3tlZTc3NGJhMy03NGE1LTQ4ZDktYjQyNS1iMzVhMjg3MjYwYzh9JywgIyAyLjdhNAotICAgICcyLjcuMTExJzogJ3s5Y2ZkOWVjNy1hOWM3LTQ5ODAtYTFjNi0wNTRmYzY0OTNlYjN9JywgIyAyLjdiMQotICAgICcyLjcuMTEyJzogJ3s5YTcyZmFmNi1jMzA0LTQxNjUtODU5NS05MjkxZmYzMGNhYzZ9JywgIyAyLjdiMgotICAgICcyLjcuMTIxJzogJ3tmNTMwYzk0YS1kZDUzLTRkZTktOTQ4ZS1iNjMyYjljYjQ4ZDJ9JywgIyAyLjdjMQotICAgICcyLjcuMTIyJzogJ3tmODA5MDVkMi1kZDhkLTRiOGUtOGE0MC1jMjNjOTNkY2EwN2R9JywgIyAyLjdjMgotICAgICcyLjcuMTUwJzogJ3syMGMzMTQzNS0yYTBhLTQ1ODAtYmU4Yi1hYzA2ZmMyNDNjYTR9JywgIyAyLjcuMAotICAgICczLjAuMTAxJzogJ3s4NTU0MjYzYS0zMjQyLTQ4NTctOTM1OS1hYTg3YmMyYzU4YzJ9JywgIyAzLjBhMQotICAgICczLjAuMTAyJzogJ3s2OTJkNmUyYy1mMGFjLTQwYjgtYTEzMy03MTkxYWVlYjY3Zjl9JywgIyAzLjBhMgotICAgICczLjAuMTAzJzogJ3s0OWNiMjk5NS03NTFhLTQ3NTMtYmU3YS1kMGIxYmI1ODVlMDZ9JywgIyAzLjBhMwotICAgICczLjAuMTA0JzogJ3s4N2NiMDE5ZS0xOWZkLTQyMzgtYjFjNy04NTc1MTQzN2Q2NDZ9JywgIyAzLjBhNAotICAgICczLjAuMTA1JzogJ3tjZjI2NTlhZi0xOWVjLTQzZDItOGMzNS0wZjZhMDk0MzlkNDJ9JywgIyAzLjBhNQotICAgICczLjAuMTExJzogJ3szNmMyNmY1NS04MzdkLTQ1Y2YtODQ4Yy01ZjVjMGZiNDdhMjh9JywgIyAzLjBiMQotICAgICczLjAuMTEyJzogJ3swNTZhMGZiYy1jOGZlLTRjNjEtYWFkZS1jNDQxMWI3MGM5OTh9JywgIyAzLjBiMgotICAgICczLjAuMTEzJzogJ3syYjJlODlhOS04M2FmLTQzZjktYjdkNS05NmU4MGM1YTNmMjZ9JywgIyAzLjBiMwotICAgICczLjAuMTE0JzogJ3tlOTVjMzFhZi02OWJlLTRkZDctOTZlNi1lNWZjODVlNjYwZTZ9JywgIyAzLjBiNAotICAgICczLjAuMTIxJzogJ3tkMDk3OWM1ZS1jZDNjLTQyZWMtYmU0Yy1lMjk0ZGE3OTM1NzN9JywgIyAzLjBjMQotICAgICczLjAuMTIyJzogJ3tmNzA3YjhlOS1hMjU3LTQwNDUtODE4ZS00OTIzZmMyMGZiYjZ9JywgIyAzLjBjMgotICAgICczLjAuMTIzJzogJ3s1ZTcyMDhmMS04NjQzLTRlYTItYWI1ZS00NjQ0ODg3MTEyZTN9JywgIyAzLjBjMwotICAgICczLjAuMTUwJzogJ3tlMGU1NmUyMS01NWRlLTRmNzctYTEwOS0xYmFhNzIzNDg3NDN9JywgIyAzLjAuMAotICAgICczLjAuMTEyMSc6J3tkMzViMWVhNS0zZDcwLTQ4NzItYmY3ZS1jZDA2NmE3N2E5Yzl9JywgIyAzLjAuMWMxCi0gICAgJzMuMC4xMTUwJzone2RlMmYyZDljLTUzZTItNDBlZS04MjA5LTc0ZGE2M2NiMDYwZX0nLCAjIDMuMC4xCi0gICAgJzMuMC4yMTIxJzone2NlZjc5ZTdmLTk4MDktNDllMi1hZmQyLWUyNDE0OGQ3Yzg1NX0nLCAjIDMuMC4yYzEKLSAgICAnMy4wLjIxNTAnOid7MGNmM2I5NWEtODM4Mi00NjA3LTk3NzktYzM2NDA3ZmYzNjJjfScsICMgMy4wLjIKLSAgICAnMy4xLjEwMSc6ICd7YzQyM2VhZGEtYzQ5OC00ZDUxLTllYjQtYmZlYWU2NDdlMGEwfScsICMgMy4xYTEKLSAgICAnMy4xLjEwMic6ICd7ZjZlMTk5YmYtZGM2NC00MmYzLTg3ZDQtMTUyNTk5MWEwMTNlfScsICMgMy4xYTIKLSAgICAnMy4xLjExMSc6ICd7YzNjODI4OTMtNjliMi00Njc2LTg1NTQtMWI2ZWU2YzE5MWU5fScsICMgMy4xYjEKLSAgICAnMy4xLjEyMSc6ICd7ZGEyYjUxNzAtMTJmMy00ZDk5LThhMWYtNTQ5MjZjY2E3YWNkfScsICMgMy4xYzEKLSAgICAnMy4xLjEyMic6ICd7YmNlYjUxMzMtZTJlZS00MTA5LTk1MWYtYWM3ZTk0MWExNjkyfScsICMgMy4xYzIKLSAgICAnMy4xLjE1MCc6ICd7M2FkNjFlZTUtODFkMi00ZDdlLWFkZWYtZGExZGQzNzI3N2QxfScsICMgMy4xLjAKLSAgICAnMy4xLjExMjEnOid7NTc4MmY5NTctNmQ0OS00MWQ0LWJhZDAtNjY4NzE1ZGZkNjM4fScsICMgMy4xLjFjMQotICAgICczLjEuMTE1MCc6J3s3ZmY5MDQ2MC04OWI3LTQzNWItYjU4My1iMzdiMjgxNWNjYzd9JywgIyAzLjEuMQotICAgICczLjEuMjEyMSc6J3tlYzQ1NjI0YS0zNzhjLTQzYmUtOTFmMy0zZjdhNTliMGQ5MGN9JywgIyAzLjEuMmMxCi0gICAgJzMuMS4yMTUwJzone2Q0MGFmMDE2LTUwNmMtNDNmYi1hNzM4LWJkNTRmYThjMWU4NX0nLCAjIDMuMS4yCi0gICAgJzMuMi4xMDEnIDone2I0MTFmMTY4LTdhMzYtNGZmZi05MDJjLWE1NTRkMWM3OGE0Zn0nLCAjIDMuMmExCi0gICAgJzMuMi4xMDInIDonezc5ZmY3M2I3LTgzNTktNDEwZi1iOWM1LTE1MmQyMDI2ZjhjOH0nLCAjIDMuMmEyCi0gICAgJzMuMi4xMDMnIDone2U3NjM1YzY1LWMyMjEtNGI5Yi1iNzBhLTU2MTFiODM2OWQ3N30nLCAjIDMuMmEzCi0gICAgJzMuMi4xMDQnIDonezc0OGNkMTM5LTc1YjgtNGNhOC05OGE3LTU4MjYyMjk4MTgxZX0nLCAjIDMuMmE0Ci0gICAgJzMuMi4xMTEnIDonezIwYmZjMTZmLWM3Y2QtNGZjMC04Zjk2LTk5MTQ2MTRhM2M1MH0nLCAjIDMuMmIxCi0gICAgJzMuMi4xMTInIDonezBlMzUwYzk4LThkNzMtNDk5My1iNjg2LWNmZTg3MTYwMDQ2ZX0nLCAjIDMuMmIyCi0gICAgJzMuMi4xMjEnIDonezIwOTQ5NjhkLTc1ODMtNDdmNi1hN2ZkLTIyMzA0NTMyZTA5Zn0nLCAjIDMuMnJjMQotICAgICczLjIuMTIyJyA6J3s0ZjNlZGZhNi1jZjcwLTQ2OWEtODI1Zi1lMTIwNmFhN2Y0MTJ9JywgIyAzLjJyYzIKLSAgICAnMy4yLjEyMycgOid7OTBjNjczZDctOGNmZC00OTY5LTk4MTYtZjdkNzBiYWQ4N2YzfScsICMgMy4ycmMzCi0gICAgJzMuMi4xNTAnIDone2IyMDQyZDVlLTk4NmQtNDRlYy1hZWUzLWFmZTQxMDhjY2M5M30nLCAjIDMuMi4wCi0gICAgJzMuMi4xMTIxJzonezRmOTBkZTRhLTgzZGQtNDQ0My1iNjI1LWNhMTMwZmYzNjFkZH0nLCAjIDMuMi4xcmMxCi0gICAgJzMuMi4xMTIyJzone2RjNWViMDRkLWZmOGEtNGJlZC04Zjk2LTIzOTQyZmQ1OWU1Zn0nLCAjIDMuMi4xcmMyCi0gICAgJzMuMi4xMTUwJzonezM0YjI1MzBjLTYzNDktNDI5Mi05ZGMzLTYwYmRhNGFlZDkzY30nLCAjIDMuMi4xCi0gICAgJzMuMi4yMTIxJzone0RGQjI5QTUzLUFDQzQtNDRlNi04NUE2LUQwREEyNkZFOEU0RX0nLCAjIDMuMi4ycmMxCi0gICAgJzMuMi4yMTUwJzonezRDREUzMTY4LUQwNjAtNGI3Yy1CQzc0LTREOEY5QkIwMUFGRH0nLCAjIDMuMi4yCi0gICAgJzMuMi4zMTIxJzone0I4RThDRkY3LUU0QzYtNGE3Yy05RjA2LUJCM0E4Qjc1RERBOH0nLCAjIDMuMi4zcmMxCi0gICAgJzMuMi4zMTIyJzone0U4RENEM0UwLTEyQjYtNGZiNy05REI1LTU0M0MyRTY3MzcyRX0nLCAjIDMuMi4zcmMyCi0gICAgJzMuMi4zMTUwJzonezc4OUM5NjQ0LTlGODItNDRkMy1CNENBLUFDMzFGNDZGNTg4Mn0nLCAjIDMuMi4zCi0KLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdGVzdF91bnBhcnNlLnB5CmluZGV4IDJhYzFlYTYuLmJlODQ0MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3BhcnNlci90ZXN0X3VucGFyc2UucHkKKysrIGIvVG9vbHMvcGFyc2VyL3Rlc3RfdW5wYXJzZS5weQpAQCAtMiw5ICsyLDEwIEBACiBpbXBvcnQgdGVzdC5zdXBwb3J0CiBpbXBvcnQgaW8KIGltcG9ydCBvcworaW1wb3J0IHJhbmRvbQogaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgYXN0CiBpbXBvcnQgdW5wYXJzZQoraW1wb3J0IGFzdAogCiBkZWYgcmVhZF9weWZpbGUoZmlsZW5hbWUpOgogICAgICIiIlJlYWQgYW5kIHJldHVybiB0aGUgY29udGVudHMgb2YgYSBQeXRob24gc291cmNlIGZpbGUgKGFzIGEKQEAgLTkzLDYgKzk0LDIxIEBACiAgICAgc3VpdGU1CiAiIiIKIAord2l0aF9zaW1wbGUgPSAiIiJcCit3aXRoIGYoKToKKyAgICBzdWl0ZTEKKyIiIgorCit3aXRoX2FzID0gIiIiXAord2l0aCBmKCkgYXMgeDoKKyAgICBzdWl0ZTEKKyIiIgorCit3aXRoX3R3b19pdGVtcyA9ICIiIlwKK3dpdGggZigpIGFzIHgsIGcoKSBhcyB5OgorICAgIHN1aXRlMQorIiIiCisKIGNsYXNzIEFTVFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgYXNzZXJ0QVNURXF1YWwoc2VsZiwgYXN0MSwgYXN0Mik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN0LmR1bXAoYXN0MSksIGFzdC5kdW1wKGFzdDIpKQpAQCAtMjE1LDYgKzIzMSwxNSBAQAogICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCgiYSwgKmJbMF0sIGMgPSBzZXEiKQogICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCgiYSwgKihiLCBjKSA9IHNlcSIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3NpbXBsZShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAod2l0aF9zaW1wbGUpCisKKyAgICBkZWYgdGVzdF93aXRoX2FzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcCh3aXRoX2FzKQorCisgICAgZGVmIHRlc3Rfd2l0aF90d29faXRlbXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHdpdGhfdHdvX2l0ZW1zKQorCiAKIGNsYXNzIERpcmVjdG9yeVRlc3RDYXNlKEFTVFRlc3RDYXNlKToKICAgICAiIiJUZXN0IHJvdW5kdHJpcCBiZWhhdmlvdXIgb24gYWxsIGZpbGVzIGluIExpYiBhbmQgTGliL3Rlc3QuIiIiCkBAIC0yMzMsNiArMjU4LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgbi5lbmRzd2l0aCgnLnB5JykgYW5kIG5vdCBuLnN0YXJ0c3dpdGgoJ2JhZCcpOgogICAgICAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQob3MucGF0aC5qb2luKHRlc3RfZGlyLCBuKSkKIAorICAgICAgICAjIFRlc3QgbGltaXRlZCBzdWJzZXQgb2YgZmlsZXMgdW5sZXNzIHRoZSAnY3B1JyByZXNvdXJjZSBpcyBzcGVjaWZpZWQuCisgICAgICAgIGlmIG5vdCB0ZXN0LnN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgiY3B1Iik6CisgICAgICAgICAgICBuYW1lcyA9IHJhbmRvbS5zYW1wbGUobmFtZXMsIDEwKQorCiAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAgIGlmIHRlc3Quc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50KCdUZXN0aW5nICVzJyAlIGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQppbmRleCBkOWZjYTk3Li5iNTVlMmM2IDEwMDY0NAotLS0gYS9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQorKysgYi9Ub29scy9wYXJzZXIvdW5wYXJzZS5weQpAQCAtMSw2ICsxLDUgQEAKICJVc2FnZTogdW5wYXJzZS5weSA8cGF0aCB0byBzb3VyY2UgZmlsZT4iCiBpbXBvcnQgc3lzCi1pbXBvcnQgbWF0aAogaW1wb3J0IGFzdAogaW1wb3J0IHRva2VuaXplCiBpbXBvcnQgaW8KQEAgLTE0Nyw2ICsxNDYsMTQgQEAKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2godC52YWx1ZSkKICAgICAgICAgc2VsZi53cml0ZSgiKSIpCiAKKyAgICBkZWYgX1lpZWxkRnJvbShzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgIHNlbGYud3JpdGUoInlpZWxkIGZyb20iKQorICAgICAgICBpZiB0LnZhbHVlOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQudmFsdWUpCisgICAgICAgIHNlbGYud3JpdGUoIikiKQorCiAgICAgZGVmIF9SYWlzZShzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJyYWlzZSIpCiAgICAgICAgIGlmIG5vdCB0LmV4YzoKQEAgLTE1OCwxMiArMTY1LDExIEBACiAgICAgICAgICAgICBzZWxmLndyaXRlKCIgZnJvbSAiKQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNhdXNlKQogCi0gICAgZGVmIF9UcnlFeGNlcHQoc2VsZiwgdCk6CisgICAgZGVmIF9Ucnkoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgidHJ5IikKICAgICAgICAgc2VsZi5lbnRlcigpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC5ib2R5KQogICAgICAgICBzZWxmLmxlYXZlKCkKLQogICAgICAgICBmb3IgZXggaW4gdC5oYW5kbGVyczoKICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2goZXgpCiAgICAgICAgIGlmIHQub3JlbHNlOgpAQCAtMTcxLDIyICsxNzcsMTIgQEAKICAgICAgICAgICAgIHNlbGYuZW50ZXIoKQogICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lm9yZWxzZSkKICAgICAgICAgICAgIHNlbGYubGVhdmUoKQotCi0gICAgZGVmIF9UcnlGaW5hbGx5KHNlbGYsIHQpOgotICAgICAgICBpZiBsZW4odC5ib2R5KSA9PSAxIGFuZCBpc2luc3RhbmNlKHQuYm9keVswXSwgYXN0LlRyeUV4Y2VwdCk6Ci0gICAgICAgICAgICAjIHRyeS1leGNlcHQtZmluYWxseQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmZpbGwoInRyeSIpCisgICAgICAgIGlmIHQuZmluYWxib2R5OgorICAgICAgICAgICAgc2VsZi5maWxsKCJmaW5hbGx5IikKICAgICAgICAgICAgIHNlbGYuZW50ZXIoKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQuZmluYWxib2R5KQogICAgICAgICAgICAgc2VsZi5sZWF2ZSgpCiAKLSAgICAgICAgc2VsZi5maWxsKCJmaW5hbGx5IikKLSAgICAgICAgc2VsZi5lbnRlcigpCi0gICAgICAgIHNlbGYuZGlzcGF0Y2godC5maW5hbGJvZHkpCi0gICAgICAgIHNlbGYubGVhdmUoKQotCiAgICAgZGVmIF9FeGNlcHRIYW5kbGVyKHNlbGYsIHQpOgogICAgICAgICBzZWxmLmZpbGwoImV4Y2VwdCIpCiAgICAgICAgIGlmIHQudHlwZToKQEAgLTI5NiwxMCArMjkyLDcgQEAKIAogICAgIGRlZiBfV2l0aChzZWxmLCB0KToKICAgICAgICAgc2VsZi5maWxsKCJ3aXRoICIpCi0gICAgICAgIHNlbGYuZGlzcGF0Y2godC5jb250ZXh0X2V4cHIpCi0gICAgICAgIGlmIHQub3B0aW9uYWxfdmFyczoKLSAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhcyAiKQotICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0Lm9wdGlvbmFsX3ZhcnMpCisgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLmRpc3BhdGNoLCB0Lml0ZW1zKQogICAgICAgICBzZWxmLmVudGVyKCkKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmJvZHkpCiAgICAgICAgIHNlbGYubGVhdmUoKQpAQCAtNTY0LDYgKzU1NywxMiBAQAogICAgICAgICBpZiB0LmFzbmFtZToKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiBhcyAiK3QuYXNuYW1lKQogCisgICAgZGVmIF93aXRoaXRlbShzZWxmLCB0KToKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmNvbnRleHRfZXhwcikKKyAgICAgICAgaWYgdC5vcHRpb25hbF92YXJzOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiIGFzICIpCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoKHQub3B0aW9uYWxfdmFycykKKwogZGVmIHJvdW5kdHJpcChmaWxlbmFtZSwgb3V0cHV0PXN5cy5zdGRvdXQpOgogICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgcHlmaWxlOgogICAgICAgICBlbmNvZGluZyA9IHRva2VuaXplLmRldGVjdF9lbmNvZGluZyhweWZpbGUucmVhZGxpbmUpWzBdCmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkgYi9Ub29scy9weWJlbmNoL3B5YmVuY2gucHkKaW5kZXggOGVhYWQ2My4uOTQyZjU2ZCAxMDA3NTUKLS0tIGEvVG9vbHMvcHliZW5jaC9weWJlbmNoLnB5CisrKyBiL1Rvb2xzL3B5YmVuY2gvcHliZW5jaC5weQpAQCAtMzUsNyArMzUsOSBAQAogV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUgIQogIiIiCiAKLWltcG9ydCBzeXMsIHRpbWUsIG9wZXJhdG9yLCBwbGF0Zm9ybQoraW1wb3J0IHN5cworaW1wb3J0IHRpbWUKK2ltcG9ydCBwbGF0Zm9ybQogZnJvbSBDb21tYW5kTGluZSBpbXBvcnQgKgogCiB0cnk6CkBAIC03MywxMSArNzUsMTUgQEAKIAogIyBUaW1lciB0eXBlcwogVElNRVJfVElNRV9USU1FID0gJ3RpbWUudGltZScKK1RJTUVSX1RJTUVfUFJPQ0VTU19USU1FID0gJ3RpbWUucHJvY2Vzc190aW1lJworVElNRVJfVElNRV9QRVJGX0NPVU5URVIgPSAndGltZS5wZXJmX2NvdW50ZXInCiBUSU1FUl9USU1FX0NMT0NLID0gJ3RpbWUuY2xvY2snCiBUSU1FUl9TWVNUSU1FU19QUk9DRVNTVElNRSA9ICdzeXN0aW1lcy5wcm9jZXNzdGltZScKIAogIyBDaG9vc2UgcGxhdGZvcm0gZGVmYXVsdCB0aW1lcgotaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKK2lmIGhhc2F0dHIodGltZSwgJ3BlcmZfY291bnRlcicpOgorICAgIFRJTUVSX1BMQVRGT1JNX0RFRkFVTFQgPSBUSU1FUl9USU1FX1BFUkZfQ09VTlRFUgorZWxpZiBzeXMucGxhdGZvcm1bOjNdID09ICd3aW4nOgogICAgICMgT24gV2luWFAgdGhpcyBoYXMgMi41bXMgcmVzb2x1dGlvbgogICAgIFRJTUVSX1BMQVRGT1JNX0RFRkFVTFQgPSBUSU1FUl9USU1FX0NMT0NLCiBlbHNlOgpAQCAtOTMsNiArOTksMTAgQEAKIAogICAgIGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1RJTUU6CiAgICAgICAgIHJldHVybiB0aW1lLnRpbWUKKyAgICBlbGlmIHRpbWVydHlwZSA9PSBUSU1FUl9USU1FX1BST0NFU1NfVElNRToKKyAgICAgICAgcmV0dXJuIHRpbWUucHJvY2Vzc190aW1lCisgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfVElNRV9QRVJGX0NPVU5URVI6CisgICAgICAgIHJldHVybiB0aW1lLnBlcmZfY291bnRlcgogICAgIGVsaWYgdGltZXJ0eXBlID09IFRJTUVSX1RJTUVfQ0xPQ0s6CiAgICAgICAgIHJldHVybiB0aW1lLmNsb2NrCiAgICAgZWxpZiB0aW1lcnR5cGUgPT0gVElNRVJfU1lTVElNRVNfUFJPQ0VTU1RJTUU6CkBAIC0xMDcsNiArMTE3LDcgQEAKICAgICAgICAgcHJpbnQoJ0dldHRpbmcgbWFjaGluZSBkZXRhaWxzLi4uJykKICAgICBidWlsZG5vLCBidWlsZGRhdGUgPSBwbGF0Zm9ybS5weXRob25fYnVpbGQoKQogICAgIHB5dGhvbiA9IHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkKKyAgICAjIFhYWCB0aGlzIGlzIG5vdyBhbHdheXMgVUNTNCwgbWF5YmUgcmVwbGFjZSBpdCB3aXRoICdQRVAzOTMnIGluIDMuMys/CiAgICAgaWYgc3lzLm1heHVuaWNvZGUgPT0gNjU1MzU6CiAgICAgICAgICMgVUNTMiBidWlsZCAoc3RhbmRhcmQpCiAgICAgICAgIHVuaXR5cGUgPSAnVUNTMicKQEAgLTg2NSw3ICs4NzYsMTggQEAKICAgICAgICAgICAgIHByaW50KCcqIHVzaW5nIHRpbWVyOiBzeXN0aW1lcy5wcm9jZXNzdGltZSAoJXMpJyAlIFwKICAgICAgICAgICAgICAgICAgIHN5c3RpbWVzLlNZU1RJTUVTX0lNUExFTUVOVEFUSU9OKQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBjbG9jayBmdW5jdGlvbiBkb2VzIGV4aXN0CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZ2V0X3RpbWVyKHRpbWVyKQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwcmludCgiKiBFcnJvcjogVW5rbm93biB0aW1lcjogJXMiICUgdGltZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgICAgIHByaW50KCcqIHVzaW5nIHRpbWVyOiAlcycgJSB0aW1lcikKKyAgICAgICAgICAgIGlmIGhhc2F0dHIodGltZSwgJ2dldF9jbG9ja19pbmZvJyk6CisgICAgICAgICAgICAgICAgaW5mbyA9IHRpbWUuZ2V0X2Nsb2NrX2luZm8odGltZXJbNTpdKQorICAgICAgICAgICAgICAgIHByaW50KCcqIHRpbWVyOiByZXNvbHV0aW9uPSVzLCBpbXBsZW1lbnRhdGlvbj0lcycKKyAgICAgICAgICAgICAgICAgICAgICAlIChpbmZvLnJlc29sdXRpb24sIGluZm8uaW1wbGVtZW50YXRpb24pKQogCiAgICAgICAgIHByaW50KCkKIApAQCAtOTQzLDggKzk2NSw2IEBACiAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoYmVuY2gsZikKICAgICAgICAgICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIHJlYXNvbjoKLSAgICAgICAgICAgICAgICBwcmludCgnKiBFcnJvciBvcGVuaW5nL3dyaXRpbmcgcmVwb3J0ZmlsZScpCi0gICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyByZWFzb246CiAgICAgICAgICAgICAgICAgcHJpbnQoJyogRXJyb3Igb3BlbmluZy93cml0aW5nIHJlcG9ydGZpbGUgJXM6ICVzJyAlICgKICAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZmlsZSwKICAgICAgICAgICAgICAgICAgICAgcmVhc29uKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvUkVBRE1FIGIvVG9vbHMvc2NyaXB0cy9SRUFETUUKaW5kZXggOGMwMjUyOS4uZDY1ZDFmZCAxMDA2NDQKLS0tIGEvVG9vbHMvc2NyaXB0cy9SRUFETUUKKysrIGIvVG9vbHMvc2NyaXB0cy9SRUFETUUKQEAgLTE1LDcgKzE1LDcgQEAKIGRpZmYucHkgICAgICAgICAgICAgICAgIFByaW50IGZpbGUgZGlmZnMgaW4gY29udGV4dCwgdW5pZmllZCwgb3IgbmRpZmYgZm9ybWF0cwogZHV0cmVlLnB5ICAgICAgICAgICAgICAgRm9ybWF0IGR1KDEpIG91dHB1dCBhcyBhIHRyZWUgc29ydGVkIGJ5IHNpemUKIGVwdGFncy5weSAgICAgICAgICAgICAgIENyZWF0ZSBFbWFjcyBUQUdTIGZpbGUgZm9yIFB5dGhvbiBtb2R1bGVzCi1maW5kX3JlY3Vyc2lvbmxpbWl0LnB5ICBGaW5kIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBsaW1pdCBvbiB0aGlzIG1hY2hpbmUgCitmaW5kX3JlY3Vyc2lvbmxpbWl0LnB5ICBGaW5kIHRoZSBtYXhpbXVtIHJlY3Vyc2lvbiBsaW1pdCBvbiB0aGlzIG1hY2hpbmUKIGZpbmRkaXYucHkgICAgICAgICAgICAgIEEgZ3JlcC1saWtlIHRvb2wgdGhhdCBsb29rcyBmb3IgZGl2aXNpb24gb3BlcmF0b3JzCiBmaW5kbGlua3N0by5weSAgICAgICAgICBSZWN1cnNpdmVseSBmaW5kIHN5bWJvbGljIGxpbmtzIHRvIGEgZ2l2ZW4gcGF0aCBwcmVmaXgKIGZpbmRub2NvZGluZy5weSAgICAgICAgIEZpbmQgc291cmNlIGZpbGVzIHdoaWNoIG5lZWQgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24KQEAgLTI4LDYgKzI4LDcgQEAKIGdvb2dsZS5weSAgICAgICAgICAgICAgIE9wZW4gYSB3ZWJicm93c2VyIHdpdGggR29vZ2xlCiBncHJvZjJodG1sLnB5ICAgICAgICAgICBUcmFuc2Zvcm0gZ3Byb2YoMSkgb3V0cHV0IGludG8gdXNlZnVsIEhUTUwKIGgycHkucHkgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSAjZGVmaW5lJ3MgaW50byBQeXRob24gYXNzaWdubWVudHMKK2hpZ2hsaWdodC5weSAgICAgICAgICAgIFB5dGhvbiBzeW50YXggaGlnaGxpZ2h0aW5nIHdpdGggSFRNTCBvdXRwdXQKIGlkbGUzICAgICAgICAgICAgICAgICAgIE1haW4gcHJvZ3JhbSB0byBzdGFydCBJRExFCiBpZmRlZi5weSAgICAgICAgICAgICAgICBSZW1vdmUgI2lmKG4pZGVmIGdyb3VwcyBmcm9tIEMgc291cmNlcwogbGZjci5weSAgICAgICAgICAgICAgICAgQ2hhbmdlIExGIGxpbmUgZW5kaW5ncyB0byBDUkxGIChVbml4IHRvIFdpbmRvd3MpCkBAIC01Myw2ICs1NCw3IEBACiByZWluZGVudC5weSAgICAgICAgICAgICBDaGFuZ2UgLnB5IGZpbGVzIHRvIHVzZSA0LXNwYWNlIGluZGVudHMKIHJlaW5kZW50LXJzdC5weSAgICAgICAgIEZpeC11cCByZVN0cnVjdHVyZWRUZXh0IGZpbGUgd2hpdGVzcGFjZQogcmdyZXAucHkgICAgICAgICAgICAgICAgUmV2ZXJzZSBncmVwIHRocm91Z2ggYSBmaWxlICh1c2VmdWwgZm9yIGJpZyBsb2dmaWxlcykKK3J1bl90ZXN0cy5weSAgICAgICAgICAgIFJ1biB0aGUgdGVzdCBzdWl0ZSB3aXRoIG1vcmUgc2Vuc2libGUgZGVmYXVsdCBvcHRpb25zCiBzZXJ2ZS5weSAgICAgICAgICAgICAgICBTbWFsbCB3c2dpcmVmLWJhc2VkIHdlYiBzZXJ2ZXIsIHVzZWQgaW4gbWFrZSBzZXJ2ZSBpbiBEb2MKIHN1ZmYucHkgICAgICAgICAgICAgICAgIFNvcnQgYSBsaXN0IG9mIGZpbGVzIGJ5IHN1ZmZpeAogc3ZuZW9sLnB5ICAgICAgICAgICAgICAgU2V0IHN2bjplb2wtc3R5bGUgb24gYWxsIGZpbGVzIGluIGRpcmVjdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5IGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CmluZGV4IDllZmIwNzguLmY5YjE0YmYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQorKysgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKQEAgLTksNiArOSwxMiBAQAogIiIiCiAKIGltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBvcHRwYXJzZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lCisKK2RlZiBmaWxlX210aW1lKHBhdGgpOgorICAgIHQgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKG9zLnN0YXQocGF0aCkuc3RfbXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXpvbmUudXRjKQorICAgIHJldHVybiB0LmFzdGltZXpvbmUoKS5pc29mb3JtYXQoKQogCiBkZWYgbWFpbigpOgogCkBAIC0zMCwxMCArMzYsMTIgQEAKICAgICBuID0gb3B0aW9ucy5saW5lcwogICAgIGZyb21maWxlLCB0b2ZpbGUgPSBhcmdzCiAKLSAgICBmcm9tZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdChmcm9tZmlsZSkuc3RfbXRpbWUpCi0gICAgdG9kYXRlID0gdGltZS5jdGltZShvcy5zdGF0KHRvZmlsZSkuc3RfbXRpbWUpCi0gICAgZnJvbWxpbmVzID0gb3Blbihmcm9tZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQotICAgIHRvbGluZXMgPSBvcGVuKHRvZmlsZSwgJ1UnKS5yZWFkbGluZXMoKQorICAgIGZyb21kYXRlID0gZmlsZV9tdGltZShmcm9tZmlsZSkKKyAgICB0b2RhdGUgPSBmaWxlX210aW1lKHRvZmlsZSkKKyAgICB3aXRoIG9wZW4oZnJvbWZpbGUsICdVJykgYXMgZmY6CisgICAgICAgIGZyb21saW5lcyA9IGZmLnJlYWRsaW5lcygpCisgICAgd2l0aCBvcGVuKHRvZmlsZSwgJ1UnKSBhcyB0ZjoKKyAgICAgICAgdG9saW5lcyA9IHRmLnJlYWRsaW5lcygpCiAKICAgICBpZiBvcHRpb25zLnU6CiAgICAgICAgIGRpZmYgPSBkaWZmbGliLnVuaWZpZWRfZGlmZihmcm9tbGluZXMsIHRvbGluZXMsIGZyb21maWxlLCB0b2ZpbGUsIGZyb21kYXRlLCB0b2RhdGUsIG49bikKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZmluZG5vY29kaW5nLnB5IGIvVG9vbHMvc2NyaXB0cy9maW5kbm9jb2RpbmcucHkKaW5kZXggYTQ5NGE0OC4uYjNlOWRjNyAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9maW5kbm9jb2RpbmcucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9maW5kbm9jb2RpbmcucHkKQEAgLTIsNyArMiw3IEBACiAKICIiIkxpc3QgYWxsIHRob3NlIFB5dGhvbiBmaWxlcyB0aGF0IHJlcXVpcmUgYSBjb2RpbmcgZGlyZWN0aXZlCiAKLVVzYWdlOiBub2NvZGluZy5weSBkaXIxIFtkaXIyLi4uXQorVXNhZ2U6IGZpbmRub2NvZGluZy5weSBkaXIxIFtkaXIyLi4uXQogIiIiCiAKIF9fYXV0aG9yX18gPSAiT2xlZyBCcm95dG1hbm4sIEdlb3JnIEJyYW5kbCIKQEAgLTMyLDcgKzMyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gc29waGlzdGljYXRlZCBQeXRob24gc291cmNlIGZpbGUgc2VhcmNoIHdpbGwgYmUgZG9uZS4iLCBmaWxlPXN5cy5zdGRlcnIpCiAKIAotZGVjbF9yZSA9IHJlLmNvbXBpbGUociJjb2RpbmdbPTpdXHMqKFstXHcuXSspIikKK2RlY2xfcmUgPSByZS5jb21waWxlKHJiImNvZGluZ1s9Ol1ccyooWy1cdy5dKykiKQogCiBkZWYgZ2V0X2RlY2xhcmF0aW9uKGxpbmUpOgogICAgIG1hdGNoID0gZGVjbF9yZS5zZWFyY2gobGluZSkKQEAgLTUwLDIxICs1MCwyMCBAQAogCiBkZWYgbmVlZHNfZGVjbGFyYXRpb24oZnVsbHBhdGgpOgogICAgIHRyeToKLSAgICAgICAgaW5maWxlID0gb3BlbihmdWxscGF0aCwgJ3JVJykKKyAgICAgICAgaW5maWxlID0gb3BlbihmdWxscGF0aCwgJ3JiJykKICAgICBleGNlcHQgSU9FcnJvcjogIyBPb3BzLCB0aGUgZmlsZSB3YXMgcmVtb3ZlZCAtIGlnbm9yZSBpdAogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgbGluZTEgPSBpbmZpbGUucmVhZGxpbmUoKQotICAgIGxpbmUyID0gaW5maWxlLnJlYWRsaW5lKCkKKyAgICB3aXRoIGluZmlsZToKKyAgICAgICAgbGluZTEgPSBpbmZpbGUucmVhZGxpbmUoKQorICAgICAgICBsaW5lMiA9IGluZmlsZS5yZWFkbGluZSgpCiAKLSAgICBpZiBnZXRfZGVjbGFyYXRpb24obGluZTEpIG9yIGdldF9kZWNsYXJhdGlvbihsaW5lMik6Ci0gICAgICAgICMgdGhlIGZpbGUgZG9lcyBoYXZlIGFuIGVuY29kaW5nIGRlY2xhcmF0aW9uLCBzbyB0cnVzdCBpdAotICAgICAgICBpbmZpbGUuY2xvc2UoKQotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgZ2V0X2RlY2xhcmF0aW9uKGxpbmUxKSBvciBnZXRfZGVjbGFyYXRpb24obGluZTIpOgorICAgICAgICAgICAgIyB0aGUgZmlsZSBkb2VzIGhhdmUgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24sIHNvIHRydXN0IGl0CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICMgY2hlY2sgdGhlIHdob2xlIGZpbGUgZm9yIG5vbiB1dGYtOCBjaGFyYWN0ZXJzCi0gICAgcmVzdCA9IGluZmlsZS5yZWFkKCkKLSAgICBpbmZpbGUuY2xvc2UoKQorICAgICAgICAjIGNoZWNrIHRoZSB3aG9sZSBmaWxlIGZvciBub24gdXRmLTggY2hhcmFjdGVycworICAgICAgICByZXN0ID0gaW5maWxlLnJlYWQoKQogCiAgICAgaWYgaGFzX2NvcnJlY3RfZW5jb2RpbmcobGluZTErbGluZTIrcmVzdCwgInV0Zi04Iik6CiAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkgYi9Ub29scy9zY3JpcHRzL2hpZ2hsaWdodC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZmY1Y2FlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKQEAgLTAsMCArMSwyNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKycnJ0FkZCBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIFB5dGhvbiBzb3VyY2UgY29kZScnJworCitfX2F1dGhvcl9fID0gJ1JheW1vbmQgSGV0dGluZ2VyJworCitpbXBvcnQga2V5d29yZCwgdG9rZW5pemUsIGNnaSwgcmUsIGZ1bmN0b29scwordHJ5OgorICAgIGltcG9ydCBidWlsdGlucworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBfX2J1aWx0aW5fXyBhcyBidWlsdGlucworCisjIyMjIEFuYWx5emUgUHl0aG9uIFNvdXJjZSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzX2J1aWx0aW4ocyk6CisgICAgJ1JldHVybiBUcnVlIGlmIHMgaXMgdGhlIG5hbWUgb2YgYSBidWlsdGluJworICAgIHJldHVybiBoYXNhdHRyKGJ1aWx0aW5zLCBzKQorCitkZWYgY29tYmluZV9yYW5nZShsaW5lcywgc3RhcnQsIGVuZCk6CisgICAgJ0pvaW4gY29udGVudCBmcm9tIGEgcmFuZ2Ugb2YgbGluZXMgYmV0d2VlbiBzdGFydCBhbmQgZW5kJworICAgIChzcm93LCBzY29sKSwgKGVyb3csIGVjb2wpID0gc3RhcnQsIGVuZAorICAgIGlmIHNyb3cgPT0gZXJvdzoKKyAgICAgICAgcmV0dXJuIGxpbmVzW3Nyb3ctMV1bc2NvbDplY29sXSwgZW5kCisgICAgcm93cyA9IFtsaW5lc1tzcm93LTFdW3Njb2w6XV0gKyBsaW5lc1tzcm93OiBlcm93LTFdICsgW2xpbmVzW2Vyb3ctMV1bOmVjb2xdXQorICAgIHJldHVybiAnJy5qb2luKHJvd3MpLCBlbmQKKworZGVmIGFuYWx5emVfcHl0aG9uKHNvdXJjZSk6CisgICAgJycnR2VuZXJhdGUgYW5kIGNsYXNzaWZ5IGNodW5rcyBvZiBQeXRob24gZm9yIHN5bnRheCBoaWdobGlnaHRpbmcuCisgICAgICAgWWllbGRzIHR1cGxlcyBpbiB0aGUgZm9ybTogKGNhdGVnb3J5LCBjYXRlZ29yaXplZF90ZXh0KS4KKyAgICAnJycKKyAgICBsaW5lcyA9IHNvdXJjZS5zcGxpdGxpbmVzKFRydWUpCisgICAgbGluZXMuYXBwZW5kKCcnKQorICAgIHJlYWRsaW5lID0gZnVuY3Rvb2xzLnBhcnRpYWwobmV4dCwgaXRlcihsaW5lcyksICcnKQorICAgIGtpbmQgPSB0b2tfc3RyID0gJycKKyAgICB0b2tfdHlwZSA9IHRva2VuaXplLkNPTU1FTlQKKyAgICB3cml0dGVuID0gKDEsIDApCisgICAgZm9yIHRvayBpbiB0b2tlbml6ZS5nZW5lcmF0ZV90b2tlbnMocmVhZGxpbmUpOgorICAgICAgICBwcmV2X3Rva190eXBlLCBwcmV2X3Rva19zdHIgPSB0b2tfdHlwZSwgdG9rX3N0cgorICAgICAgICB0b2tfdHlwZSwgdG9rX3N0ciwgKHNyb3csIHNjb2wpLCAoZXJvdywgZWNvbCksIGxvZ2ljYWxfbGluZW5vID0gdG9rCisgICAgICAgIGtpbmQgPSAnJworICAgICAgICBpZiB0b2tfdHlwZSA9PSB0b2tlbml6ZS5DT01NRU5UOgorICAgICAgICAgICAga2luZCA9ICdjb21tZW50JworICAgICAgICBlbGlmIHRva190eXBlID09IHRva2VuaXplLk9QIGFuZCB0b2tfc3RyWzoxXSBub3QgaW4gJ3t9W10oKSwuOjtAJzoKKyAgICAgICAgICAgIGtpbmQgPSAnb3BlcmF0b3InCisgICAgICAgIGVsaWYgdG9rX3R5cGUgPT0gdG9rZW5pemUuU1RSSU5HOgorICAgICAgICAgICAga2luZCA9ICdzdHJpbmcnCisgICAgICAgICAgICBpZiBwcmV2X3Rva190eXBlID09IHRva2VuaXplLklOREVOVCBvciBzY29sPT0wOgorICAgICAgICAgICAgICAgIGtpbmQgPSAnZG9jc3RyaW5nJworICAgICAgICBlbGlmIHRva190eXBlID09IHRva2VuaXplLk5BTUU6CisgICAgICAgICAgICBpZiB0b2tfc3RyIGluICgnZGVmJywgJ2NsYXNzJywgJ2ltcG9ydCcsICdmcm9tJyk6CisgICAgICAgICAgICAgICAga2luZCA9ICdkZWZpbml0aW9uJworICAgICAgICAgICAgZWxpZiBwcmV2X3Rva19zdHIgaW4gKCdkZWYnLCAnY2xhc3MnKToKKyAgICAgICAgICAgICAgICBraW5kID0gJ2RlZm5hbWUnCisgICAgICAgICAgICBlbGlmIGtleXdvcmQuaXNrZXl3b3JkKHRva19zdHIpOgorICAgICAgICAgICAgICAgIGtpbmQgPSAna2V5d29yZCcKKyAgICAgICAgICAgIGVsaWYgaXNfYnVpbHRpbih0b2tfc3RyKSBhbmQgcHJldl90b2tfc3RyICE9ICcuJzoKKyAgICAgICAgICAgICAgICBraW5kID0gJ2J1aWx0aW4nCisgICAgICAgIGlmIGtpbmQ6CisgICAgICAgICAgICB0ZXh0LCB3cml0dGVuID0gY29tYmluZV9yYW5nZShsaW5lcywgd3JpdHRlbiwgKHNyb3csIHNjb2wpKQorICAgICAgICAgICAgeWllbGQgJycsIHRleHQKKyAgICAgICAgICAgIHRleHQsIHdyaXR0ZW4gPSB0b2tfc3RyLCAoZXJvdywgZWNvbCkKKyAgICAgICAgICAgIHlpZWxkIGtpbmQsIHRleHQKKyAgICBsaW5lX3VwdG9fdG9rZW4sIHdyaXR0ZW4gPSBjb21iaW5lX3JhbmdlKGxpbmVzLCB3cml0dGVuLCAoZXJvdywgZWNvbCkpCisgICAgeWllbGQgJycsIGxpbmVfdXB0b190b2tlbgorCisjIyMjIFJhdyBPdXRwdXQgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIHJhd19oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KToKKyAgICAnU3RyYWlnaHQgdGV4dCBkaXNwbGF5IG9mIHRleHQgY2xhc3NpZmljYXRpb25zJworICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICByZXN1bHQuYXBwZW5kKCclMTVzOiAgJXJcbicgJSAoa2luZCBvciAncGxhaW4nLCB0ZXh0KSkKKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKKyMjIyMgQU5TSSBPdXRwdXQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWZhdWx0X2Fuc2kgPSB7CisgICAgJ2NvbW1lbnQnOiAoJ1wwMzNbMDszMW0nLCAnXDAzM1swbScpLAorICAgICdzdHJpbmcnOiAoJ1wwMzNbMDszMm0nLCAnXDAzM1swbScpLAorICAgICdkb2NzdHJpbmcnOiAoJ1wwMzNbMDszMm0nLCAnXDAzM1swbScpLAorICAgICdrZXl3b3JkJzogKCdcMDMzWzA7MzNtJywgJ1wwMzNbMG0nKSwKKyAgICAnYnVpbHRpbic6ICgnXDAzM1swOzM1bScsICdcMDMzWzBtJyksCisgICAgJ2RlZmluaXRpb24nOiAoJ1wwMzNbMDszM20nLCAnXDAzM1swbScpLAorICAgICdkZWZuYW1lJzogKCdcMDMzWzA7MzRtJywgJ1wwMzNbMG0nKSwKKyAgICAnb3BlcmF0b3InOiAoJ1wwMzNbMDszM20nLCAnXDAzM1swbScpLAorfQorCitkZWYgYW5zaV9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0LCBjb2xvcnM9ZGVmYXVsdF9hbnNpKToKKyAgICAnQWRkIHN5bnRheCBoaWdobGlnaHRpbmcgdG8gc291cmNlIGNvZGUgdXNpbmcgQU5TSSBlc2NhcGUgc2VxdWVuY2VzJworICAgICMgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BTlNJX2VzY2FwZV9jb2RlCisgICAgcmVzdWx0ID0gW10KKyAgICBmb3Iga2luZCwgdGV4dCBpbiBjbGFzc2lmaWVkX3RleHQ6CisgICAgICAgIG9wZW5lciwgY2xvc2VyID0gY29sb3JzLmdldChraW5kLCAoJycsICcnKSkKKyAgICAgICAgcmVzdWx0ICs9IFtvcGVuZXIsIHRleHQsIGNsb3Nlcl0KKyAgICByZXR1cm4gJycuam9pbihyZXN1bHQpCisKKyMjIyMgSFRNTCBPdXRwdXQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaHRtbF9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0LG9wZW5lcj0nPHByZSBjbGFzcz0icHl0aG9uIj5cbicsIGNsb3Nlcj0nPC9wcmU+XG4nKToKKyAgICAnQ29udmVydCBjbGFzc2lmaWVkIHRleHQgdG8gYW4gSFRNTCBmcmFnbWVudCcKKyAgICByZXN1bHQgPSBbb3BlbmVyXQorICAgIGZvciBraW5kLCB0ZXh0IGluIGNsYXNzaWZpZWRfdGV4dDoKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzxzcGFuIGNsYXNzPSIlcyI+JyAlIGtpbmQpCisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2dpLmVzY2FwZSh0ZXh0KSkKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzwvc3Bhbj4nKQorICAgIHJlc3VsdC5hcHBlbmQoY2xvc2VyKQorICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKKworZGVmYXVsdF9jc3MgPSB7CisgICAgJy5jb21tZW50JzogJ3tjb2xvcjogY3JpbXNvbjt9JywKKyAgICAnLnN0cmluZyc6ICAne2NvbG9yOiBmb3Jlc3RncmVlbjt9JywKKyAgICAnLmRvY3N0cmluZyc6ICd7Y29sb3I6IGZvcmVzdGdyZWVuOyBmb250LXN0eWxlOml0YWxpYzt9JywKKyAgICAnLmtleXdvcmQnOiAne2NvbG9yOiBkYXJrb3JhbmdlO30nLAorICAgICcuYnVpbHRpbic6ICd7Y29sb3I6IHB1cnBsZTt9JywKKyAgICAnLmRlZmluaXRpb24nOiAne2NvbG9yOiBkYXJrb3JhbmdlOyBmb250LXdlaWdodDpib2xkO30nLAorICAgICcuZGVmbmFtZSc6ICd7Y29sb3I6IGJsdWU7fScsCisgICAgJy5vcGVyYXRvcic6ICd7Y29sb3I6IGJyb3duO30nLAorfQorCitkZWZhdWx0X2h0bWwgPSAnJydcCis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iCisgICAgICAgICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sO2NoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPiB7dGl0bGV9IDwvdGl0bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgore2Nzc30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KK3tib2R5fQorPC9ib2R5PgorPC9odG1sPgorJycnCisKK2RlZiBidWlsZF9odG1sX3BhZ2UoY2xhc3NpZmllZF90ZXh0LCB0aXRsZT0ncHl0aG9uJywKKyAgICAgICAgICAgICAgICAgICAgY3NzPWRlZmF1bHRfY3NzLCBodG1sPWRlZmF1bHRfaHRtbCk6CisgICAgJ0NyZWF0ZSBhIGNvbXBsZXRlIEhUTUwgcGFnZSB3aXRoIGNvbG9yaXplZCBzb3VyY2UgY29kZScKKyAgICBjc3Nfc3RyID0gJ1xuJy5qb2luKFsnJXMgJXMnICUgaXRlbSBmb3IgaXRlbSBpbiBjc3MuaXRlbXMoKV0pCisgICAgcmVzdWx0ID0gaHRtbF9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KQorICAgIHRpdGxlID0gY2dpLmVzY2FwZSh0aXRsZSkKKyAgICByZXR1cm4gaHRtbC5mb3JtYXQodGl0bGU9dGl0bGUsIGNzcz1jc3Nfc3RyLCBib2R5PXJlc3VsdCkKKworIyMjIyBMYVRlWCBPdXRwdXQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZmF1bHRfbGF0ZXhfY29tbWFuZHMgPSB7CisgICAgJ2NvbW1lbnQnOiAne1xjb2xvcntyZWR9IzF9JywKKyAgICAnc3RyaW5nJzogJ3tcY29sb3J7Rm9yZXN0R3JlZW59IzF9JywKKyAgICAnZG9jc3RyaW5nJzogJ3tcZW1waHtcY29sb3J7Rm9yZXN0R3JlZW59IzF9fScsCisgICAgJ2tleXdvcmQnOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKKyAgICAnYnVpbHRpbic6ICd7XGNvbG9ye3B1cnBsZX0jMX0nLAorICAgICdkZWZpbml0aW9uJzogJ3tcY29sb3J7b3JhbmdlfSMxfScsCisgICAgJ2RlZm5hbWUnOiAne1xjb2xvcntibHVlfSMxfScsCisgICAgJ29wZXJhdG9yJzogJ3tcY29sb3J7YnJvd259IzF9JywKK30KKworZGVmYXVsdF9sYXRleF9kb2N1bWVudCA9IHInJycKK1xkb2N1bWVudGNsYXNze2FydGljbGV9CitcdXNlcGFja2FnZXthbGx0dH0KK1x1c2VwYWNrYWdle3VwcXVvdGV9CitcdXNlcGFja2FnZXtjb2xvcn0KK1x1c2VwYWNrYWdlW3VzZW5hbWVzLGR2aXBzbmFtZXNde3hjb2xvcn0KK1x1c2VwYWNrYWdlW2NtXXtmdWxscGFnZX0KKyUobWFjcm9zKXMKK1xiZWdpbntkb2N1bWVudH0KK1xjZW50ZXJ7XExBUkdFeyUodGl0bGUpc319CitcYmVnaW57YWxsdHR9CislKGJvZHkpcworXGVuZHthbGx0dH0KK1xlbmR7ZG9jdW1lbnR9CisnJycKKworZGVmIGFsbHR0X2VzY2FwZShzKToKKyAgICAnUmVwbGFjZSBiYWNrc2xhc2ggYW5kIGJyYWNlcyB3aXRoIHRoZWlyIGVzY2FwZWQgZXF1aXZhbGVudHMnCisgICAgeGxhdCA9IHsneyc6IHInXHsnLCAnfSc6IHInXH0nLCAnXFwnOiByJ1x0ZXh0YmFja3NsYXNoe30nfQorICAgIHJldHVybiByZS5zdWIocidbXFx7fV0nLCBsYW1iZGEgbW86IHhsYXRbbW8uZ3JvdXAoKV0sIHMpCisKK2RlZiBsYXRleF9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0LCB0aXRsZSA9ICdweXRob24nLAorICAgICAgICAgICAgICAgICAgICBjb21tYW5kcyA9IGRlZmF1bHRfbGF0ZXhfY29tbWFuZHMsCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50ID0gZGVmYXVsdF9sYXRleF9kb2N1bWVudCk6CisgICAgJ0NyZWF0ZSBhIGNvbXBsZXRlIExhVGVYIGRvY3VtZW50IHdpdGggY29sb3JpemVkIHNvdXJjZSBjb2RlJworICAgIG1hY3JvcyA9ICdcbicuam9pbihyJ1xuZXdjb21tYW5ke1xweSVzfVsxXXslc30nICUgYyBmb3IgYyBpbiBjb21tYW5kcy5pdGVtcygpKQorICAgIHJlc3VsdCA9IFtdCisgICAgZm9yIGtpbmQsIHRleHQgaW4gY2xhc3NpZmllZF90ZXh0OgorICAgICAgICBpZiBraW5kOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChyJ1xweSVzeycgJSBraW5kKQorICAgICAgICByZXN1bHQuYXBwZW5kKGFsbHR0X2VzY2FwZSh0ZXh0KSkKKyAgICAgICAgaWYga2luZDoKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJ30nKQorICAgIHJldHVybiBkZWZhdWx0X2xhdGV4X2RvY3VtZW50ICUgZGljdCh0aXRsZT10aXRsZSwgbWFjcm9zPW1hY3JvcywgYm9keT0nJy5qb2luKHJlc3VsdCkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lzLCBhcmdwYXJzZSwgd2ViYnJvd3Nlciwgb3MsIHRleHR3cmFwCisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gJ0FkZCBzeW50YXggaGlnaGxpZ2h0aW5nIHRvIFB5dGhvbiBzb3VyY2UgY29kZScsCisgICAgICAgICAgICBmb3JtYXR0ZXJfY2xhc3M9YXJncGFyc2UuUmF3RGVzY3JpcHRpb25IZWxwRm9ybWF0dGVyLAorICAgICAgICAgICAgZXBpbG9nID0gdGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgIGV4YW1wbGVzOgorCisgICAgICAgICAgICAgICAgICAjIFNob3cgc3ludGF4IGhpZ2hsaWdodGVkIGNvZGUgaW4gdGhlIHRlcm1pbmFsIHdpbmRvdworICAgICAgICAgICAgICAgICAgJCAuL2hpZ2hsaWdodC5weSBteWZpbGUucHkKKworICAgICAgICAgICAgICAgICAgIyBDb2xvcml6ZSBteWZpbGUucHkgYW5kIGRpc3BsYXkgaW4gYSBicm93c2VyCisgICAgICAgICAgICAgICAgICAkIC4vaGlnaGxpZ2h0LnB5IC1iIG15ZmlsZS5weQorCisgICAgICAgICAgICAgICAgICAjIENyZWF0ZSBhbiBIVE1MIHNlY3Rpb24gdG8gZW1iZWQgaW4gYW4gZXhpc3Rpbmcgd2VicGFnZQorICAgICAgICAgICAgICAgICAgLi9oaWdobGlnaHQucHkgLXMgbXlmaWxlLnB5CisKKyAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgY29tcGxldGUgSFRNTCBmaWxlCisgICAgICAgICAgICAgICAgICAkIC4vaGlnaGxpZ2h0LnB5IC1jIG15ZmlsZS5weSA+IG15ZmlsZS5odG1sCisKKyAgICAgICAgICAgICAgICAgICMgQ3JlYXRlIGEgUERGIHVzaW5nIExhVGVYCisgICAgICAgICAgICAgICAgICAkIC4vaGlnaGxpZ2h0LnB5IC1sIG15ZmlsZS5weSB8IHBkZmxhdGV4CisKKyAgICAgICAgICAgICcnJykpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnc291cmNlZmlsZScsIG1ldGF2YXIgPSAnU09VUkNFRklMRScsCisgICAgICAgICAgICBoZWxwID0gJ2ZpbGUgY29udGFpbmluZyBQeXRob24gc291cmNlY29kZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1icm93c2VyJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdsYXVuY2ggYSBicm93c2VyIHRvIHNob3cgcmVzdWx0cycpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWMnLCAnLS1jb21wbGV0ZScsIGFjdGlvbiA9ICdzdG9yZV90cnVlJywKKyAgICAgICAgICAgIGhlbHAgPSAnYnVpbGQgYSBjb21wbGV0ZSBodG1sIHdlYnBhZ2UnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1sJywgJy0tbGF0ZXgnLCBhY3Rpb24gPSAnc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwID0gJ2J1aWxkIGEgTGFUZVggZG9jdW1lbnQnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmF3JywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdyYXcgcGFyc2Ugb2YgY2F0ZWdvcml6ZWQgdGV4dCcpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXMnLCAnLS1zZWN0aW9uJywgYWN0aW9uID0gJ3N0b3JlX3RydWUnLAorICAgICAgICAgICAgaGVscCA9ICdzaG93IGFuIEhUTUwgc2VjdGlvbiByYXRoZXIgdGhhbiBhIGNvbXBsZXRlIHdlYnBhZ2UnKQorICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCisKKyAgICBpZiBhcmdzLnNlY3Rpb24gYW5kIChhcmdzLmJyb3dzZXIgb3IgYXJncy5jb21wbGV0ZSk6CisgICAgICAgIHBhcnNlci5lcnJvcignVGhlIC1zLy0tc2VjdGlvbiBvcHRpb24gaXMgaW5jb21wYXRpYmxlIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSAtYi8tLWJyb3dzZXIgb3IgLWMvLS1jb21wbGV0ZSBvcHRpb25zJykKKworICAgIHNvdXJjZWZpbGUgPSBhcmdzLnNvdXJjZWZpbGUKKyAgICB3aXRoIG9wZW4oc291cmNlZmlsZSkgYXMgZjoKKyAgICAgICAgc291cmNlID0gZi5yZWFkKCkKKyAgICBjbGFzc2lmaWVkX3RleHQgPSBhbmFseXplX3B5dGhvbihzb3VyY2UpCisKKyAgICBpZiBhcmdzLnJhdzoKKyAgICAgICAgZW5jb2RlZCA9IHJhd19oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KQorICAgIGVsaWYgYXJncy5jb21wbGV0ZSBvciBhcmdzLmJyb3dzZXI6CisgICAgICAgIGVuY29kZWQgPSBidWlsZF9odG1sX3BhZ2UoY2xhc3NpZmllZF90ZXh0LCB0aXRsZT1zb3VyY2VmaWxlKQorICAgIGVsaWYgYXJncy5zZWN0aW9uOgorICAgICAgICBlbmNvZGVkID0gaHRtbF9oaWdobGlnaHQoY2xhc3NpZmllZF90ZXh0KQorICAgIGVsaWYgYXJncy5sYXRleDoKKyAgICAgICAgZW5jb2RlZCA9IGxhdGV4X2hpZ2hsaWdodChjbGFzc2lmaWVkX3RleHQsIHRpdGxlPXNvdXJjZWZpbGUpCisgICAgZWxzZToKKyAgICAgICAgZW5jb2RlZCA9IGFuc2lfaGlnaGxpZ2h0KGNsYXNzaWZpZWRfdGV4dCkKKworICAgIGlmIGFyZ3MuYnJvd3NlcjoKKyAgICAgICAgaHRtbGZpbGUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoc291cmNlZmlsZSkpWzBdICsgJy5odG1sJworICAgICAgICB3aXRoIG9wZW4oaHRtbGZpbGUsICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZW5jb2RlZCkKKyAgICAgICAgd2ViYnJvd3Nlci5vcGVuKCdmaWxlOi8vJyArIG9zLnBhdGguYWJzcGF0aChodG1sZmlsZSkpCisgICAgZWxzZToKKyAgICAgICAgc3lzLnN0ZG91dC53cml0ZShlbmNvZGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9pbXBvcnRfZGlhZ25vc3RpY3MucHkgYi9Ub29scy9zY3JpcHRzL2ltcG9ydF9kaWFnbm9zdGljcy5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jOTA3MjIxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc2NyaXB0cy9pbXBvcnRfZGlhZ25vc3RpY3MucHkKQEAgLTAsMCArMSwzNyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIiIiTWlzY2VsbGFuZW91cyBkaWFnbm9zdGljcyBmb3IgdGhlIGltcG9ydCBzeXN0ZW0iIiIKKworaW1wb3J0IHN5cworaW1wb3J0IGFyZ3BhcnNlCitmcm9tIHBwcmludCBpbXBvcnQgcHByaW50CisKK2RlZiBfZHVtcF9zdGF0ZShhcmdzKToKKyAgICBwcmludChzeXMudmVyc2lvbikKKyAgICBmb3IgbmFtZSBpbiBhcmdzLmF0dHJpYnV0ZXM6CisgICAgICAgIHByaW50KCJzeXMue306Ii5mb3JtYXQobmFtZSkpCisgICAgICAgIHBwcmludChnZXRhdHRyKHN5cywgbmFtZSkpCisKK2RlZiBfYWRkX2R1bXBfYXJncyhjbWQpOgorICAgIGNtZC5hZGRfYXJndW1lbnQoImF0dHJpYnV0ZXMiLCBtZXRhdmFyPSJBVFRSIiwgbmFyZ3M9IisiLAorICAgICAgICAgICAgICAgICAgICAgaGVscD0ic3lzIG1vZHVsZSBhdHRyaWJ1dGUgdG8gZGlzcGxheSIpCisKK0NPTU1BTkRTID0gKAorICAoImR1bXAiLCAiRHVtcCBpbXBvcnQgc3RhdGUiLCBfZHVtcF9zdGF0ZSwgX2FkZF9kdW1wX2FyZ3MpLAorKQorCitkZWYgX21ha2VfcGFyc2VyKCk6CisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHN1YiA9IHBhcnNlci5hZGRfc3VicGFyc2Vycyh0aXRsZT0iQ29tbWFuZHMiKQorICAgIGZvciBuYW1lLCBkZXNjcmlwdGlvbiwgaW1wbGVtZW50YXRpb24sIGFkZF9hcmdzIGluIENPTU1BTkRTOgorICAgICAgICBjbWQgPSBzdWIuYWRkX3BhcnNlcihuYW1lLCBoZWxwPWRlc2NyaXB0aW9uKQorICAgICAgICBjbWQuc2V0X2RlZmF1bHRzKGNvbW1hbmQ9aW1wbGVtZW50YXRpb24pCisgICAgICAgIGFkZF9hcmdzKGNtZCkKKyAgICByZXR1cm4gcGFyc2VyCisKK2RlZiBtYWluKGFyZ3MpOgorICAgIHBhcnNlciA9IF9tYWtlX3BhcnNlcigpCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisgICAgcmV0dXJuIGFyZ3MuY29tbWFuZChhcmdzKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weSBiL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQppbmRleCAwZTE4ZGQ5Li41MDNjNjdhIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CkBAIC00OSwyOSArNDksMTUgQEAKIEBzdGF0dXMoIkdldHRpbmcgdGhlIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQvY2hhbmdlZCIsCiAgICAgICAgIGluZm89bGFtYmRhIHg6IG5fZmlsZXNfc3RyKGxlbih4KSkpCiBkZWYgY2hhbmdlZF9maWxlcygpOgotICAgICIiIkdldCB0aGUgbGlzdCBvZiBjaGFuZ2VkIG9yIGFkZGVkIGZpbGVzIGZyb20gdGhlIFZDUy4iIiIKLSAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihTUkNESVIsICcuaGcnKSk6Ci0gICAgICAgIHZjcyA9ICdoZycKLSAgICAgICAgY21kID0gJ2hnIHN0YXR1cyAtLWFkZGVkIC0tbW9kaWZpZWQgLS1uby1zdGF0dXMnCi0gICAgICAgIGlmIG1xX3BhdGNoZXNfYXBwbGllZCgpOgotICAgICAgICAgICAgY21kICs9ICcgLS1yZXYgcXBhcmVudCcKLSAgICBlbGlmIG9zLnBhdGguaXNkaXIoJy5zdm4nKToKLSAgICAgICAgdmNzID0gJ3N2bicKLSAgICAgICAgY21kID0gJ3N2biBzdGF0dXMgLS1xdWlldCAtLW5vbi1pbnRlcmFjdGl2ZSAtLWlnbm9yZS1leHRlcm5hbHMnCi0gICAgZWxzZToKKyAgICAiIiJHZXQgdGhlIGxpc3Qgb2YgY2hhbmdlZCBvciBhZGRlZCBmaWxlcyBmcm9tIE1lcmN1cmlhbC4iIiIKKyAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oU1JDRElSLCAnLmhnJykpOgogICAgICAgICBzeXMuZXhpdCgnbmVlZCBhIGNoZWNrb3V0IHRvIGdldCBtb2RpZmllZCBmaWxlcycpCiAKLSAgICBzdCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLnNwbGl0KCksIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgdHJ5OgotICAgICAgICBzdC53YWl0KCkKLSAgICAgICAgaWYgdmNzID09ICdoZyc6Ci0gICAgICAgICAgICByZXR1cm4gW3guZGVjb2RlKCkucnN0cmlwKCkgZm9yIHggaW4gc3Quc3Rkb3V0XQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0cHV0ID0gKHguZGVjb2RlKCkucnN0cmlwKCkucnNwbGl0KE5vbmUsIDEpWy0xXQotICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHN0LnN0ZG91dCBpZiB4WzBdIGluIGInQU0nKQotICAgICAgICByZXR1cm4gc2V0KHBhdGggZm9yIHBhdGggaW4gb3V0cHV0IGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN0LnN0ZG91dC5jbG9zZSgpCisgICAgY21kID0gJ2hnIHN0YXR1cyAtLWFkZGVkIC0tbW9kaWZpZWQgLS1uby1zdGF0dXMnCisgICAgaWYgbXFfcGF0Y2hlc19hcHBsaWVkKCk6CisgICAgICAgIGNtZCArPSAnIC0tcmV2IHFwYXJlbnQnCisgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGNtZC5zcGxpdCgpLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKSBhcyBzdDoKKyAgICAgICAgcmV0dXJuIFt4LmRlY29kZSgpLnJzdHJpcCgpIGZvciB4IGluIHN0LnN0ZG91dF0KIAogCiBkZWYgcmVwb3J0X21vZGlmaWVkX2ZpbGVzKGZpbGVfcGF0aHMpOgpAQCAtODksMTAgKzc1LDggQEAKIGRlZiBub3JtYWxpemVfd2hpdGVzcGFjZShmaWxlX3BhdGhzKToKICAgICAiIiJNYWtlIHN1cmUgdGhhdCB0aGUgd2hpdGVzcGFjZSBmb3IgLnB5IGZpbGVzIGhhdmUgYmVlbiBub3JtYWxpemVkLiIiIgogICAgIHJlaW5kZW50Lm1ha2ViYWNrdXAgPSBGYWxzZSAgIyBObyBuZWVkIHRvIGNyZWF0ZSBiYWNrdXBzLgotICAgIGZpeGVkID0gW10KLSAgICBmb3IgcGF0aCBpbiAoeCBmb3IgeCBpbiBmaWxlX3BhdGhzIGlmIHguZW5kc3dpdGgoJy5weScpKToKLSAgICAgICAgaWYgcmVpbmRlbnQuY2hlY2sob3MucGF0aC5qb2luKFNSQ0RJUiwgcGF0aCkpOgotICAgICAgICAgICAgZml4ZWQuYXBwZW5kKHBhdGgpCisgICAgZml4ZWQgPSBbcGF0aCBmb3IgcGF0aCBpbiBmaWxlX3BhdGhzIGlmIHBhdGguZW5kc3dpdGgoJy5weScpIGFuZAorICAgICAgICAgICAgIHJlaW5kZW50LmNoZWNrKG9zLnBhdGguam9pbihTUkNESVIsIHBhdGgpKV0KICAgICByZXR1cm4gZml4ZWQKIAogCkBAIC0xNDgsNiArMTMyLDIxIEBACiAgICAgIiIiQ2hlY2sgaWYgTWlzYy9ORVdTIGhhcyBiZWVuIGNoYW5nZWQuIiIiCiAgICAgcmV0dXJuICdNaXNjL05FV1MnIGluIGZpbGVfcGF0aHMKIAorQHN0YXR1cygiY29uZmlndXJlIHJlZ2VuZXJhdGVkIiwgbW9kYWw9VHJ1ZSwgaW5mbz1zdHIpCitkZWYgcmVnZW5lcmF0ZWRfY29uZmlndXJlKGZpbGVfcGF0aHMpOgorICAgICIiIkNoZWNrIGlmIGNvbmZpZ3VyZSBoYXMgYmVlbiByZWdlbmVyYXRlZC4iIiIKKyAgICBpZiAnY29uZmlndXJlLmFjJyBpbiBmaWxlX3BhdGhzOgorICAgICAgICByZXR1cm4gInllcyIgaWYgJ2NvbmZpZ3VyZScgaW4gZmlsZV9wYXRocyBlbHNlICJubyIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gIm5vdCBuZWVkZWQiCisKK0BzdGF0dXMoInB5Y29uZmlnLmguaW4gcmVnZW5lcmF0ZWQiLCBtb2RhbD1UcnVlLCBpbmZvPXN0cikKK2RlZiByZWdlbmVyYXRlZF9weWNvbmZpZ19oX2luKGZpbGVfcGF0aHMpOgorICAgICIiIkNoZWNrIGlmIHB5Y29uZmlnLmguaW4gaGFzIGJlZW4gcmVnZW5lcmF0ZWQuIiIiCisgICAgaWYgJ2NvbmZpZ3VyZS5hYycgaW4gZmlsZV9wYXRoczoKKyAgICAgICAgcmV0dXJuICJ5ZXMiIGlmICdweWNvbmZpZy5oLmluJyBpbiBmaWxlX3BhdGhzIGVsc2UgIm5vIgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAibm90IG5lZWRlZCIKIAogZGVmIG1haW4oKToKICAgICBmaWxlX3BhdGhzID0gY2hhbmdlZF9maWxlcygpCkBAIC0xNjcsNiArMTY2LDEwIEBACiAgICAgY3JlZGl0X2dpdmVuKHNwZWNpYWxfZmlsZXMpCiAgICAgIyBNaXNjL05FV1MgY2hhbmdlZC4KICAgICByZXBvcnRlZF9uZXdzKHNwZWNpYWxfZmlsZXMpCisgICAgIyBSZWdlbmVyYXRlZCBjb25maWd1cmUsIGlmIG5lY2Vzc2FyeS4KKyAgICByZWdlbmVyYXRlZF9jb25maWd1cmUoZmlsZV9wYXRocykKKyAgICAjIFJlZ2VuZXJhdGVkIHB5Y29uZmlnLmguaW4sIGlmIG5lY2Vzc2FyeS4KKyAgICByZWdlbmVyYXRlZF9weWNvbmZpZ19oX2luKGZpbGVfcGF0aHMpCiAKICAgICAjIFRlc3Qgc3VpdGUgcnVuIGFuZCBwYXNzZWQuCiAgICAgaWYgcHl0aG9uX2ZpbGVzIG9yIGNfZmlsZXM6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5IGIvVG9vbHMvc2NyaXB0cy9weXNvdXJjZS5weQppbmRleCAwNDgxMzFlLi42OWU4ZTBkIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3B5c291cmNlLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcHlzb3VyY2UucHkKQEAgLTIyLDcgKzIyLDcgQEAKIAogaW1wb3J0IG9zLCByZQogCi1iaW5hcnlfcmUgPSByZS5jb21waWxlKCdbXHgwMC1ceDA4XHgwRS1ceDFGXHg3Rl0nKQorYmluYXJ5X3JlID0gcmUuY29tcGlsZShicidbXHgwMC1ceDA4XHgwRS1ceDFGXHg3Rl0nKQogCiBkZWJ1ZyA9IEZhbHNlCiAKQEAgLTQyLDcgKzQyLDcgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIHRyeToKLSAgICAgICAgcmV0dXJuIG9wZW4oZnVsbHBhdGgsICdyVScpCisgICAgICAgIHJldHVybiBvcGVuKGZ1bGxwYXRoLCAicmIiKQogICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGVycjogIyBBY2Nlc3MgZGVuaWVkLCBvciBhIHNwZWNpYWwgZmlsZSAtIGlnbm9yZSBpdAogICAgICAgICBwcmludF9kZWJ1ZygiJXM6IGFjY2VzcyBkZW5pZWQ6ICVzIiAlIChmdWxscGF0aCwgZXJyKSkKICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTU1LDggKzU1LDggQEAKICAgICBpZiBpbmZpbGUgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBsaW5lID0gaW5maWxlLnJlYWRsaW5lKCkKLSAgICBpbmZpbGUuY2xvc2UoKQorICAgIHdpdGggaW5maWxlOgorICAgICAgICBsaW5lID0gaW5maWxlLnJlYWRsaW5lKCkKIAogICAgIGlmIGJpbmFyeV9yZS5zZWFyY2gobGluZSk6CiAgICAgICAgICMgZmlsZSBhcHBlYXJzIHRvIGJlIGJpbmFyeQpAQCAtNjUsNyArNjUsNyBAQAogCiAgICAgaWYgZnVsbHBhdGguZW5kc3dpdGgoIi5weSIpIG9yIGZ1bGxwYXRoLmVuZHN3aXRoKCIucHl3Iik6CiAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZWxpZiAicHl0aG9uIiBpbiBsaW5lOgorICAgIGVsaWYgYiJweXRob24iIGluIGxpbmU6CiAgICAgICAgICMgZGlzZ3Vpc2VkIFB5dGhvbiBzY3JpcHQgKGUuZy4gQ0dJKQogICAgICAgICByZXR1cm4gVHJ1ZQogCkBAIC03Niw4ICs3Niw4IEBACiAgICAgaWYgaW5maWxlIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgY29kZSA9IGluZmlsZS5yZWFkKCkKLSAgICBpbmZpbGUuY2xvc2UoKQorICAgIHdpdGggaW5maWxlOgorICAgICAgICBjb2RlID0gaW5maWxlLnJlYWQoKQogCiAgICAgdHJ5OgogICAgICAgICBjb21waWxlKGNvZGUsIGZ1bGxwYXRoLCAiZXhlYyIpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3B5dmVudiBiL1Rvb2xzL3NjcmlwdHMvcHl2ZW52Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk3OGQ2OTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL3B5dmVudgpAQCAtMCwwICsxLDExIEBACisjIS91c3IvYmluL2VudiBweXRob24zCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCBzeXMKKyAgICByYyA9IDEKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB2ZW52CisgICAgICAgIHZlbnYubWFpbigpCisgICAgICAgIHJjID0gMAorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgc3lzLmV4aXQocmMpCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IGIvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQppbmRleCBiMTg5OTNiLi40YTkxNmVhIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKQEAgLTgsNiArOCw4IEBACiAtciAoLS1yZWN1cnNlKSAgUmVjdXJzZS4gICBTZWFyY2ggZm9yIGFsbCAucHkgZmlsZXMgaW4gc3ViZGlyZWN0b3JpZXMgdG9vLgogLW4gKC0tbm9iYWNrdXApIE5vIGJhY2t1cC4gRG9lcyBub3QgbWFrZSBhICIuYmFrIiBmaWxlIGJlZm9yZSByZWluZGVudGluZy4KIC12ICgtLXZlcmJvc2UpICBWZXJib3NlLiAgIFByaW50IGluZm9ybWF0aXZlIG1zZ3M7IGVsc2Ugbm8gb3V0cHV0LgorICAgKC0tbmV3bGluZSkgIE5ld2xpbmUuICAgU3BlY2lmeSB0aGUgbmV3bGluZSBjaGFyYWN0ZXIgdG8gdXNlIChDUkxGLCBMRikuCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGlzIHRoZSBzYW1lIGFzIHRoZSBvcmlnaW5hbCBmaWxlLgogLWggKC0taGVscCkgICAgIEhlbHAuICAgICAgUHJpbnQgdGhpcyB1c2FnZSBpbmZvcm1hdGlvbiBhbmQgZXhpdC4KIAogQ2hhbmdlIFB5dGhvbiAoLnB5KSBmaWxlcyB0byB1c2UgNC1zcGFjZSBpbmRlbnRzIGFuZCBubyBoYXJkIHRhYiBjaGFyYWN0ZXJzLgpAQCAtNTAsNiArNTIsOCBAQAogcmVjdXJzZSA9IEZhbHNlCiBkcnlydW4gPSBGYWxzZQogbWFrZWJhY2t1cCA9IFRydWUKK3NwZWNfbmV3bGluZSA9IE5vbmUKKyIiIkEgc3BlY2lmaWVkIG5ld2xpbmUgdG8gYmUgdXNlZCBpbiB0aGUgb3V0cHV0IChzZXQgYnkgLS1uZXdsaW5lIG9wdGlvbikiIiIKIAogCiBkZWYgdXNhZ2UobXNnPU5vbmUpOgpAQCAtNjIsMTMgKzY2LDEyIEBACiAgICAgc3lzLnN0ZGVyci53cml0ZSgiICIuam9pbihzdHIoYXJnKSBmb3IgYXJnIGluIGFyZ3MpKQogICAgIHN5cy5zdGRlcnIud3JpdGUoIlxuIikKIAotCiBkZWYgbWFpbigpOgogICAgIGltcG9ydCBnZXRvcHQKLSAgICBnbG9iYWwgdmVyYm9zZSwgcmVjdXJzZSwgZHJ5cnVuLCBtYWtlYmFja3VwCisgICAgZ2xvYmFsIHZlcmJvc2UsIHJlY3Vyc2UsIGRyeXJ1biwgbWFrZWJhY2t1cCwgc3BlY19uZXdsaW5lCiAgICAgdHJ5OgogICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICJkcm52aCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBbImRyeXJ1biIsICJyZWN1cnNlIiwgIm5vYmFja3VwIiwgInZlcmJvc2UiLCAiaGVscCJdKQorICAgICAgICAgICAgWyJkcnlydW4iLCAicmVjdXJzZSIsICJub2JhY2t1cCIsICJ2ZXJib3NlIiwgIm5ld2xpbmU9IiwgImhlbHAiXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKICAgICAgICAgdXNhZ2UobXNnKQogICAgICAgICByZXR1cm4KQEAgLTgxLDYgKzg0LDExIEBACiAgICAgICAgICAgICBtYWtlYmFja3VwID0gRmFsc2UKICAgICAgICAgZWxpZiBvIGluICgnLXYnLCAnLS12ZXJib3NlJyk6CiAgICAgICAgICAgICB2ZXJib3NlID0gVHJ1ZQorICAgICAgICBlbGlmIG8gaW4gKCctLW5ld2xpbmUnLCk6CisgICAgICAgICAgICBpZiBub3QgYS51cHBlcigpIGluICgnQ1JMRicsICdMRicpOgorICAgICAgICAgICAgICAgIHVzYWdlKCkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNwZWNfbmV3bGluZSA9IGRpY3QoQ1JMRj0nXHJcbicsIExGPSdcbicpW2EudXBwZXIoKV0KICAgICAgICAgZWxpZiBvIGluICgnLWgnLCAnLS1oZWxwJyk6CiAgICAgICAgICAgICB1c2FnZSgpCiAgICAgICAgICAgICByZXR1cm4KQEAgLTExOCw5ICsxMjYsOSBAQAogICAgICAgICBlcnJwcmludCgiJXM6IEkvTyBFcnJvcjogJXMiICUgKGZpbGUsIHN0cihtc2cpKSkKICAgICAgICAgcmV0dXJuCiAKLSAgICBuZXdsaW5lID0gci5uZXdsaW5lcworICAgIG5ld2xpbmUgPSBzcGVjX25ld2xpbmUgaWYgc3BlY19uZXdsaW5lIGVsc2Ugci5uZXdsaW5lcwogICAgIGlmIGlzaW5zdGFuY2UobmV3bGluZSwgdHVwbGUpOgotICAgICAgICBlcnJwcmludCgiJXM6IG1peGVkIG5ld2xpbmVzIGRldGVjdGVkOyBjYW5ub3QgcHJvY2VzcyBmaWxlIiAlIGZpbGUpCisgICAgICAgIGVycnByaW50KCIlczogbWl4ZWQgbmV3bGluZXMgZGV0ZWN0ZWQ7IGNhbm5vdCBjb250aW51ZSB3aXRob3V0IC0tbmV3bGluZSIgJSBmaWxlKQogICAgICAgICByZXR1cm4KIAogICAgIGlmIHIucnVuKCk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weSBiL1Rvb2xzL3NjcmlwdHMvcnVuX3Rlc3RzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUyYTIwNTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9zY3JpcHRzL3J1bl90ZXN0cy5weQpAQCAtMCwwICsxLDUxIEBACisiIiJSdW4gUHl0aG9uJ3MgdGVzdCBzdWl0ZSBpbiBhIGZhc3QsIHJpZ29yb3VzIHdheS4KKworVGhlIGRlZmF1bHRzIGFyZSBtZWFudCB0byBiZSByZWFzb25hYmx5IHRob3JvdWdoLCB3aGlsZSBza2lwcGluZyBjZXJ0YWluCit0ZXN0cyB0aGF0IGNhbiBiZSB0aW1lLWNvbnN1bWluZyBvciByZXNvdXJjZS1pbnRlbnNpdmUgKGUuZy4gbGFyZ2VmaWxlKSwKK29yIGRpc3RyYWN0aW5nIChlLmcuIGF1ZGlvIGFuZCBndWkpLiBUaGVzZSBkZWZhdWx0cyBjYW4gYmUgb3ZlcnJpZGRlbiBieQorc2ltcGx5IHBhc3NpbmcgYSAtdSBvcHRpb24gdG8gdGhpcyBzY3JpcHQuCisKKyIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkaW5nCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkaW5nID0gTm9uZQorCisKK2RlZiBpc19tdWx0aXByb2Nlc3NfZmxhZyhhcmcpOgorICAgIHJldHVybiBhcmcuc3RhcnRzd2l0aCgnLWonKSBvciBhcmcuc3RhcnRzd2l0aCgnLS1tdWx0aXByb2Nlc3MnKQorCisKK2RlZiBpc19yZXNvdXJjZV91c2VfZmxhZyhhcmcpOgorICAgIHJldHVybiBhcmcuc3RhcnRzd2l0aCgnLXUnKSBvciBhcmcuc3RhcnRzd2l0aCgnLS11c2UnKQorCisKK2RlZiBtYWluKHJlZ3J0ZXN0X2FyZ3MpOgorICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsCisgICAgICAgICAgICAnLVcnLCAnZGVmYXVsdCcsICAgICAgIyBXYXJuaW5ncyBzZXQgdG8gJ2RlZmF1bHQnCisgICAgICAgICAgICAnLWJiJywgICAgICAgICAgICAgICAgIyBXYXJuaW5ncyBhYm91dCBieXRlcy9ieXRlYXJyYXkKKyAgICAgICAgICAgICctRScsICAgICAgICAgICAgICAgICAjIElnbm9yZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgICAgICAgIF0KKyAgICAjIEFsbG93IHVzZXItc3BlY2lmaWVkIGludGVycHJldGVyIG9wdGlvbnMgdG8gb3ZlcnJpZGUgb3VyIGRlZmF1bHRzLgorICAgIGFyZ3MuZXh0ZW5kKHRlc3Quc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKSkKKyAgICBhcmdzLmV4dGVuZChbJy1tJywgJ3Rlc3QnLCAgICAjIFJ1biB0aGUgdGVzdCBzdWl0ZQorICAgICAgICAgICAgICAgICAnLXInLCAgICAgICAgICAgICMgUmFuZG9taXplIHRlc3Qgb3JkZXIKKyAgICAgICAgICAgICAgICAgJy13JywgICAgICAgICAgICAjIFJlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlCisgICAgICAgICAgICAgICAgIF0pCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGFyZ3MuYXBwZW5kKCctbicpICAgICAgICAgIyBTaWxlbmNlIGFsZXJ0cyB1bmRlciBXaW5kb3dzCisgICAgaWYgdGhyZWFkaW5nIGFuZCBub3QgYW55KGlzX211bHRpcHJvY2Vzc19mbGFnKGFyZykgZm9yIGFyZyBpbiByZWdydGVzdF9hcmdzKToKKyAgICAgICAgYXJncy5leHRlbmQoWyctaicsICcwJ10pICAjIFVzZSBhbGwgQ1BVIGNvcmVzCisgICAgaWYgbm90IGFueShpc19yZXNvdXJjZV91c2VfZmxhZyhhcmcpIGZvciBhcmcgaW4gcmVncnRlc3RfYXJncyk6CisgICAgICAgIGFyZ3MuZXh0ZW5kKFsnLXUnLCAnYWxsLC1sYXJnZWZpbGUsLWF1ZGlvLC1ndWknXSkKKyAgICBhcmdzLmV4dGVuZChyZWdydGVzdF9hcmdzKQorICAgIHByaW50KCcgJy5qb2luKGFyZ3MpKQorICAgIG9zLmV4ZWN2KHN5cy5leGVjdXRhYmxlLCBhcmdzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbihzeXMuYXJndlsxOl0pCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weSBiL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CmluZGV4IGFmMjE0N2EuLjk5ODM1MjggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CkBAIC0zMTksNyArMzE5LDcgQEAKIAogICAgICMgU3RhcnQgc2F2aW5nIHRleHQgaW4gYSBidWZmZXIgaW5zdGVhZCBvZiB3cml0aW5nIGl0IHRvIGEgZmlsZQogICAgIGRlZiBzdGFydHNhdmluZyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zYXZldGV4dCAhPSBOb25lOgorICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5zYXZlc3RhY2suYXBwZW5kKHNlbGYuc2F2ZXRleHQpCiAgICAgICAgICAgICAjIHByaW50ICcqKiogUmVjdXJzaXZlbHkgc2F2aW5nIHRleHQsIGV4cGVjdCB0cm91YmxlJwogICAgICAgICBzZWxmLnNhdmV0ZXh0ID0gJycKQEAgLTM0MSw3ICszNDEsNyBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBwcmludChhcmdzKQogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yCi0gICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgIT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5zYXZldGV4dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuc2F2ZXRleHQgPSBzZWxmLnNhdmV0ZXh0ICsgdGV4dAogICAgICAgICBlbGlmIHNlbGYubm9kZWZwOgogICAgICAgICAgICAgc2VsZi5ub2RlZnAud3JpdGUodGV4dCkKQEAgLTM1MCw3ICszNTAsNyBAQAogCiAgICAgIyBDb21wbGV0ZSB0aGUgY3VycmVudCBub2RlIC0tIHdyaXRlIGZvb3Rub3RlcyBhbmQgY2xvc2UgZmlsZQogICAgIGRlZiBlbmRub2RlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnNhdmV0ZXh0ICE9IE5vbmU6CisgICAgICAgIGlmIHNlbGYuc2F2ZXRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBwcmludCgnKioqIFN0aWxsIHNhdmluZyB0ZXh0IGF0IGVuZCBvZiBub2RlJykKICAgICAgICAgICAgIGR1bW15ID0gc2VsZi5jb2xsZWN0c2F2aW5ncygpCiAgICAgICAgIGlmIHNlbGYuZm9vdG5vdGVzOgpAQCAtODA0LDcgKzgwNCw3IEBACiAgICAgZGVmIGNsb3NlX2koc2VsZik6IHNlbGYud3JpdGUoJzwvST4nKQogCiAgICAgZGVmIG9wZW5fZm9vdG5vdGUoc2VsZik6Ci0gICAgICAgICMgaWYgc2VsZi5zYXZldGV4dCA8PiBOb25lOgorICAgICAgICAjIGlmIHNlbGYuc2F2ZXRleHQgaXMgbm90IE5vbmU6CiAgICAgICAgICMgICAgICAgcHJpbnQgJyoqKiBSZWN1cnNpdmUgZm9vdG5vdGUgLS0gZXhwZWN0IHdlaXJkbmVzcycKICAgICAgICAgaWQgPSBsZW4oc2VsZi5mb290bm90ZXMpICsgMQogICAgICAgICBzZWxmLndyaXRlKHNlbGYuRk5fU09VUkNFX1BBVFRFUk4gJSB7J2lkJzogcmVwcihpZCl9KQpAQCAtMTQ0Miw3ICsxNDQyLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBzb21lIG90aGVyIGNoYXJhY3RlciwgZS5nLiAnLScKICAgICAgICAgICAgICAgICBhcmdzID0gc2VsZi5pdGVtYXJnICsgJyAnICsgYXJncwotICAgICAgICBpZiBzZWxmLml0ZW1udW1iZXIgIT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5pdGVtbnVtYmVyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYXJncyA9IHNlbGYuaXRlbW51bWJlciArICcuICcgKyBhcmdzCiAgICAgICAgICAgICBzZWxmLml0ZW1udW1iZXIgPSBpbmNyZW1lbnQoc2VsZi5pdGVtbnVtYmVyKQogICAgICAgICBpZiBzZWxmLnN0YWNrIGFuZCBzZWxmLnN0YWNrWy0xXSA9PSAndGFibGUnOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkgYi9Ub29scy9zc2wvbWFrZV9zc2xfZGF0YS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDI0NGQxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkKQEAgLTAsMCArMSw2OCBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKworIiIiCitUaGlzIHNjcmlwdCBzaG91bGQgYmUgY2FsbGVkICptYW51YWxseSogd2hlbiB3ZSB3YW50IHRvIHVwZ3JhZGUgU1NMRXJyb3IKK2BsaWJyYXJ5YCBhbmQgYHJlYXNvbmAgbW5lbW5vbmljcyB0byBhIG1vcmUgcmVjZW50IE9wZW5TU0wgdmVyc2lvbi4KKworSXQgdGFrZXMgdHdvIGFyZ3VtZW50czoKKy0gdGhlIHBhdGggdG8gdGhlIE9wZW5TU0wgaW5jbHVkZSBmaWxlcycgZGlyZWN0b3J5CisgIChlLmcuIG9wZW5zc2wtMS4wLjEtYmV0YTMvaW5jbHVkZS9vcGVuc3NsLykKKy0gdGhlIHBhdGggdG8gdGhlIEMgZmlsZSB0byBiZSBnZW5lcmF0ZWQKKyAgKHByb2JhYmx5IE1vZHVsZXMvX3NzbF9kYXRhLmgpCisiIiIKKworaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCisKK2RlZiBwYXJzZV9lcnJvcl9jb2RlcyhoX2ZpbGUsIHByZWZpeCk6CisgICAgcGF0ID0gcmUuY29tcGlsZShyIiNkZWZpbmVcVysoJXMoW1x3XSspKVxXKyhcZCspXGIiICUgcmUuZXNjYXBlKHByZWZpeCkpCisgICAgY29kZXMgPSBbXQorICAgIHdpdGggb3BlbihoX2ZpbGUsICJyIiwgZW5jb2Rpbmc9ImxhdGluMSIpIGFzIGY6CisgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICBtYXRjaCA9IHBhdC5zZWFyY2gobGluZSkKKyAgICAgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgICAgIGNvZGUsIG5hbWUsIG51bSA9IG1hdGNoLmdyb3VwcygpCisgICAgICAgICAgICAgICAgbnVtID0gaW50KG51bSkKKyAgICAgICAgICAgICAgICBjb2Rlcy5hcHBlbmQoKGNvZGUsIG5hbWUsIG51bSkpCisgICAgcmV0dXJuIGNvZGVzCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgb3BlbnNzbF9pbmMgPSBzeXMuYXJndlsxXQorICAgIG91dGZpbGUgPSBzeXMuYXJndlsyXQorICAgIHVzZV9zdGRvdXQgPSBvdXRmaWxlID09ICctJworICAgIGYgPSBzeXMuc3Rkb3V0IGlmIHVzZV9zdGRvdXQgZWxzZSBvcGVuKG91dGZpbGUsICJ3IikKKyAgICBlcnJvcl9saWJyYXJpZXMgPSAoCisgICAgICAgICMgKGxpYnJhcnkgY29kZSwgbW5lbW9uaWMsIGVycm9yIHByZWZpeCwgaGVhZGVyIGZpbGUpCisgICAgICAgICgnRVJSX0xJQl9QRU0nLCAnUEVNJywgJ1BFTV9SXycsICdwZW0uaCcpLAorICAgICAgICAoJ0VSUl9MSUJfU1NMJywgJ1NTTCcsICdTU0xfUl8nLCAnc3NsLmgnKSwKKyAgICAgICAgKCdFUlJfTElCX1g1MDknLCAnWDUwOScsICdYNTA5X1JfJywgJ3g1MDkuaCcpLAorICAgICAgICApCisgICAgZGVmIHcobCk6CisgICAgICAgIGYud3JpdGUobCArICJcbiIpCisgICAgdygiLyogRmlsZSBnZW5lcmF0ZWQgYnkgVG9vbHMvc3NsL21ha2Vfc3NsX2RhdGEucHkgKi8iKQorICAgIHcoIi8qIEdlbmVyYXRlZCBvbiAlcyAqLyIgJSBkYXRldGltZS5kYXRldGltZS5ub3coKS5pc29mb3JtYXQoKSkKKyAgICB3KCIiKQorCisgICAgdygic3RhdGljIHN0cnVjdCBweV9zc2xfbGlicmFyeV9jb2RlIGxpYnJhcnlfY29kZXNbXSA9IHsiKQorICAgIGZvciBsaWJjb2RlLCBtbmVtbywgXywgXyBpbiBlcnJvcl9saWJyYXJpZXM6CisgICAgICAgIHcoJyAgICB7IiVzIiwgJXN9LCcgJSAobW5lbW8sIGxpYmNvZGUpKQorICAgIHcoJyAgICB7IE5VTEwgfScpCisgICAgdygnfTsnKQorICAgIHcoIiIpCisKKyAgICB3KCJzdGF0aWMgc3RydWN0IHB5X3NzbF9lcnJvcl9jb2RlIGVycm9yX2NvZGVzW10gPSB7IikKKyAgICBmb3IgbGliY29kZSwgXywgcHJlZml4LCBoX2ZpbGUgaW4gZXJyb3JfbGlicmFyaWVzOgorICAgICAgICBjb2RlcyA9IHBhcnNlX2Vycm9yX2NvZGVzKG9zLnBhdGguam9pbihvcGVuc3NsX2luYywgaF9maWxlKSwgcHJlZml4KQorICAgICAgICBmb3IgY29kZSwgbmFtZSwgbnVtIGluIHNvcnRlZChjb2Rlcyk6CisgICAgICAgICAgICB3KCcgICNpZmRlZiAlcycgJSAoY29kZSkpCisgICAgICAgICAgICB3KCcgICAgeyIlcyIsICVzLCAlc30sJyAlIChuYW1lLCBsaWJjb2RlLCBjb2RlKSkKKyAgICAgICAgICAgIHcoJyAgI2Vsc2UnKQorICAgICAgICAgICAgdygnICAgIHsiJXMiLCAlcywgJWR9LCcgJSAobmFtZSwgbGliY29kZSwgbnVtKSkKKyAgICAgICAgICAgIHcoJyAgI2VuZGlmJykKKyAgICB3KCcgICAgeyBOVUxMIH0nKQorICAgIHcoJ307JykKKyAgICBpZiBub3QgdXNlX3N0ZG91dDoKKyAgICAgICAgZi5jbG9zZSgpCmRpZmYgLS1naXQgYS9Ub29scy9zdHJpbmdiZW5jaC9SRUFETUUgYi9Ub29scy9zdHJpbmdiZW5jaC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI3MWYxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3N0cmluZ2JlbmNoL1JFQURNRQpAQCAtMCwwICsxLDY4IEBACitzdHJpbmdiZW5jaCBpcyBhIHNldCBvZiBwZXJmb3JtYW5jZSB0ZXN0cyBjb21wYXJpbmcgYnl0ZSBzdHJpbmcKK29wZXJhdGlvbnMgd2l0aCB1bmljb2RlIG9wZXJhdGlvbnMuICBUaGUgdHdvIHN0cmluZyBpbXBsZW1lbnRhdGlvbnMKK2FyZSBsb29zZWx5IGJhc2VkIG9uIGVhY2ggb3RoZXIgYW5kIHNvbWV0aW1lcyB0aGUgYWxnb3JpdGhtIGZvciBvbmUgaXMKK2Zhc3RlciB0aGFuIHRoZSBvdGhlci4KKworVGhlc2UgdGVzdCBzZXQgd2FzIHN0YXJ0ZWQgYXQgdGhlIE5lZWQgRm9yIFNwZWVkIHNwcmludCBpbiBSZXlramF2aWsKK3RvIGlkZW50aWZ5IHdoaWNoIHN0cmluZyBtZXRob2RzIGNvdWxkIGJlIHNwZWQgdXAgcXVpY2tseSBhbmQgdG8KK2lkZW50aWZ5IG9idmlvdXMgcGxhY2VzIGZvciBpbXByb3ZlbWVudC4KKworSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgYmVuY2htYXJrCisKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBIiknLCAnc3RhcnRzd2l0aCBzaW5nbGUgY2hhcmFjdGVyJywgMTAwMCkKK2RlZiBzdGFydHN3aXRoX3NpbmdsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCitUaGUgYmVuY2ggZGVjb3JhdG9yIHRha2VzIHRocmVlIHBhcmFtZXRlcnMuICBUaGUgZmlyc3QgaXMgYSBzaG9ydAorZGVzY3JpcHRpb24gb2YgaG93IHRoZSBjb2RlIHdvcmtzLiAgSW4gbW9zdCBjYXNlcyB0aGlzIGlzIFB5dGhvbiBjb2RlCitzbmlwcGV0LiAgSXQgaXMgbm90IHRoZSBjb2RlIHdoaWNoIGlzIGFjdHVhbGx5IHJ1biBiZWNhdXNlIHRoZSByZWFsCitjb2RlIGlzIGhhbmQtb3B0aW1pemVkIHRvIGZvY3VzIG9uIHRoZSBtZXRob2QgYmVpbmcgdGVzdGVkLgorCitUaGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIGdyb3VwIHRpdGxlLiAgQWxsIGJlbmNobWFya3Mgd2l0aCB0aGUgc2FtZQorZ3JvdXAgdGl0bGUgYXJlIGxpc3RlZCB0b2dldGhlci4gIFRoaXMgbGV0cyB5b3UgY29tcGFyZSBkaWZmZXJlbnQKK2ltcGxlbWVudGF0aW9ucyBvZiB0aGUgc2FtZSBhbGdvcml0aG0sIHN1Y2ggYXMgInQgaW4gcyIKK3ZzLiAicy5maW5kKHQpIi4KKworVGhlIGxhc3QgaXMgYSBjb3VudC4gIEVhY2ggYmVuY2htYXJrIGxvb3BzIG92ZXIgdGhlIGFsZ29yaXRobSBlaXRoZXIKKzEwMCBvciAxMDAwIHRpbWVzLCBkZXBlbmRpbmcgb24gdGhlIGFsZ29yaXRobSBwZXJmb3JtYW5jZS4gIFRoZSBvdXRwdXQKK3RpbWUgaXMgdGhlIHRpbWUgcGVyIGJlbmNobWFyayBjYWxsIHNvIHRoZSByZWFkZXIgbmVlZHMgYSB3YXkgdG8ga25vdworaG93IHRvIHNjYWxlIHRoZSBwZXJmb3JtYW5jZS4KKworVGhlc2UgcGFyYW1ldGVycyBiZWNvbWUgZnVuY3Rpb24gYXR0cmlidXRlcy4KKworCitIZXJlIGlzIGFuIGV4YW1wbGUgb2YgdGhlIG91dHB1dAorCisKKz09PT09PT09PT0gY291bnQgbmV3bGluZXMKKzM4LjU0ICAgNDEuNjAgICA5Mi43ICAgIC4uLnRleHQud2l0aC4yMDAwLm5ld2xpbmVzLmNvdW50KCJcbiIpICgqMTAwKQorPT09PT09PT09PSBlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlcgorMS4xNCAgICAxLjE4ICAgIDk2LjggICAgKCJBIioxMDAwKS5maW5kKCJBIikgKCoxMDAwKQorMC40NCAgICAwLjQxICAgIDEwNS42ICAgIkEiIGluICJBIioxMDAwICgqMTAwMCkKKzEuMTUgICAgMS4xNyAgICA5OC4xICAgICgiQSIqMTAwMCkuaW5kZXgoIkEiKSAoKjEwMDApCisKK1RoZSBmaXJzdCBjb2x1bW4gaXMgdGhlIHJ1biB0aW1lIGluIG1pbGxpc2Vjb25kcyBmb3IgYnl0ZSBzdHJpbmdzLgorVGhlIHNlY29uZCBpcyB0aGUgcnVuIHRpbWUgZm9yIHVuaWNvZGUgc3RyaW5ncy4gIFRoZSB0aGlyZCBpcyBhCitwZXJjZW50YWdlOyBieXRlIHRpbWUgLyB1bmljb2RlIHRpbWUuICBJdCdzIHRoZSBwZXJjZW50YWdlIGJ5IHdoaWNoCit1bmljb2RlIGlzIGZhc3RlciB0aGFuIGJ5dGUgc3RyaW5ncy4KKworVGhlIGxhc3QgY29sdW1uIGNvbnRhaW5zIHRoZSBjb2RlIHNuaXBwZXQgYW5kIHRoZSByZXBlYXQgY291bnQgZm9yIHRoZQoraW50ZXJuYWwgYmVuY2htYXJrIGxvb3AuCisKK1RoZSB0aW1lcyBhcmUgY29tcHV0ZWQgd2l0aCAndGltZWl0LnB5JyB3aGljaCByZXBlYXRzIHRoZSB0ZXN0IG1vcmUKK2FuZCBtb3JlIHRpbWVzIHVudGlsIHRoZSB0b3RhbCB0aW1lIHRha2VzIG92ZXIgMC4yIHNlY29uZHMsIHJldHVybmluZwordGhlIGJlc3QgdGltZSBmb3IgYSBzaW5nbGUgaXRlcmF0aW9uLgorCitUaGUgZmluYWwgbGluZSBvZiB0aGUgb3V0cHV0IGlzIHRoZSBjdW11bGF0aXZlIHRpbWUgZm9yIGJ5dGUgYW5kCit1bmljb2RlIHN0cmluZ3MsIGFuZCB0aGUgb3ZlcmFsbCBwZXJmb3JtYW5jZSBvZiB1bmljb2RlIHJlbGF0aXZlIHRvCitieXRlcy4gIEZvciBleGFtcGxlCisKKzQwNzkuODMgNTQzMi4yNSA3NS4xICAgIFRPVEFMCisKK0hvd2V2ZXIsIHRoaXMgaGFzIG5vIG1lYW5pbmcgYXMgaXQgZXZlbmx5IHdlaWdodHMgZXZlcnkgdGVzdC4KKwpkaWZmIC0tZ2l0IGEvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkgYi9Ub29scy9zdHJpbmdiZW5jaC9zdHJpbmdiZW5jaC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMGEyMWZhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvc3RyaW5nYmVuY2gvc3RyaW5nYmVuY2gucHkKQEAgLTAsMCArMSwxNDgyIEBACisKKyMgVmFyaW91cyBtaWNyb2JlbmNobWFya3MgY29tcGFyaW5nIHVuaWNvZGUgYW5kIGJ5dGUgc3RyaW5nIHBlcmZvcm1hbmNlCisjIFBsZWFzZSBrZWVwIHRoaXMgZmlsZSBib3RoIDIueCBhbmQgMy54IGNvbXBhdGlibGUhCisKK2ltcG9ydCB0aW1laXQKK2ltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCBvcGVyYXRvcgoraW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcHRwYXJzZQorCitWRVJTSU9OID0gJzIuMCcKKworZGVmIHAoKmFyZ3MpOgorICAgIHN5cy5zdGRvdXQud3JpdGUoJyAnLmpvaW4oc3RyKHMpIGZvciBzIGluIGFyZ3MpICsgJ1xuJykKKworaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgIEJZVEVTID0gYnl0ZXNfZnJvbV9zdHIgPSBsYW1iZGEgeDogeC5lbmNvZGUoJ2FzY2lpJykKKyAgICBVTklDT0RFID0gdW5pY29kZV9mcm9tX3N0ciA9IGxhbWJkYSB4OiB4CitlbHNlOgorICAgIEJZVEVTID0gYnl0ZXNfZnJvbV9zdHIgPSBsYW1iZGEgeDogeAorICAgIFVOSUNPREUgPSB1bmljb2RlX2Zyb21fc3RyID0gbGFtYmRhIHg6IHguZGVjb2RlKCdhc2NpaScpCisKK2NsYXNzIFVuc3VwcG9ydGVkVHlwZShUeXBlRXJyb3IpOgorICAgIHBhc3MKKworCitwKCdzdHJpbmdiZW5jaCB2JXMnICUgVkVSU0lPTikKK3Aoc3lzLnZlcnNpb24pCitwKGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpKQorCitSRVBFQVQgPSAxCitSRVBFQVQgPSAzCisjUkVQRUFUID0gNworCitpZiBfX25hbWVfXyAhPSAiX19tYWluX18iOgorICAgIHJhaXNlIFN5c3RlbUV4aXQoIk11c3QgcnVuIGFzIG1haW4gcHJvZ3JhbSIpCisKK3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCitwYXJzZXIuYWRkX29wdGlvbigiLVIiLCAiLS1za2lwLXJlIiwgZGVzdD0ic2tpcF9yZSIsCisgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAgICAgaGVscD0ic2tpcCByZWd1bGFyIGV4cHJlc3Npb24gdGVzdHMiKQorcGFyc2VyLmFkZF9vcHRpb24oIi04IiwgIi0tOC1iaXQiLCBkZXN0PSJieXRlc19vbmx5IiwKKyAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IGRvIDgtYml0IHN0cmluZyBiZW5jaG1hcmtzIikKK3BhcnNlci5hZGRfb3B0aW9uKCItdSIsICItLXVuaWNvZGUiLCBkZXN0PSJ1bmljb2RlX29ubHkiLAorICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgIGhlbHA9Im9ubHkgZG8gVW5pY29kZSBzdHJpbmcgYmVuY2htYXJrcyIpCisKKworX1JBTkdFXzEwMDAgPSBsaXN0KHJhbmdlKDEwMDApKQorX1JBTkdFXzEwMCA9IGxpc3QocmFuZ2UoMTAwKSkKK19SQU5HRV8xMCA9IGxpc3QocmFuZ2UoMTApKQorCitkdXBzID0ge30KK2RlZiBiZW5jaChzLCBncm91cCwgcmVwZWF0X2NvdW50KToKKyAgICBkZWYgYmxhaChmKToKKyAgICAgICAgaWYgZi5fX25hbWVfXyBpbiBkdXBzOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIk11bHRpcGxlIGZ1bmN0aW9ucyB3aXRoIHNhbWUgbmFtZTogJXIiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmLl9fbmFtZV9fLCkpCisgICAgICAgIGR1cHNbZi5fX25hbWVfX10gPSAxCisgICAgICAgIGYuY29tbWVudCA9IHMKKyAgICAgICAgZi5pc19iZW5jaCA9IFRydWUKKyAgICAgICAgZi5ncm91cCA9IGdyb3VwCisgICAgICAgIGYucmVwZWF0X2NvdW50ID0gcmVwZWF0X2NvdW50CisgICAgICAgIHJldHVybiBmCisgICAgcmV0dXJuIGJsYWgKKworZGVmIHVzZXNfcmUoZik6CisgICAgZi51c2VzX3JlID0gVHJ1ZQorCisjIyMjIyMjICdpbicgY29tcGFyaXNvbnMKKworQGJlbmNoKCciQSIgaW4gIkEiKjEwMDAnLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIGluX3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJyJCIiBpbiAiQSIqMTAwMCcsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgaW5fdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMyIGluIHMxCisKKworQGJlbmNoKCciQUIiIGluICJBQiIqMTAwMCcsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGluX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJyJCQyIgaW4gIkFCIioxMDAwJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5fdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczIgaW4gczEKKworQGJlbmNoKCciQkMiIGluICgiQUIiKjMwMCsiQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBpbl90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMiBpbiBzMQorCitAYmVuY2goJ3M9IkFCQyIqMzM7IChzKyJFIikgaW4gKChzKyJEIikqMzAwK3MrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIGluX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSozMDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMyIGluIHMxCisKKyMgVHJ5IHdpdGggcmVnZXgKK0B1c2VzX3JlCitAYmVuY2goJ3M9IkFCQyIqMzM7IHJlLmNvbXBpbGUocysiRCIpLnNlYXJjaCgocysiRCIpKjMwMCtzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByZV90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqMzAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBwYXQgPSByZS5jb21waWxlKHMyKQorICAgIHNlYXJjaCA9IHBhdC5zZWFyY2gKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzZWFyY2goczEpCisKKworIyMjIyBzYW1lIHRlc3RzIGFzICdpbicgYnV0IHVzZSAnZmluZCcKKworQGJlbmNoKCcoIkEiKjEwMDApLmZpbmQoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgZmluZF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQSIqMTAwMCkuZmluZCgiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2ZpbmQoczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5maW5kKCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLmZpbmQoIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfbm9fbWF0Y2hfdHdvX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCQyIpCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5maW5kKCJDQSIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXJfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLmZpbmQoIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIGZpbmRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJygiQUIiKjMwMCsiQ0EiKS5maW5kKCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDQSIpCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9maW5kID0gczEuZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9maW5kKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikuZmluZChzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBmaW5kX3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSAobStkKSo1MDAgKyBtK2UKKyAgICBzMiA9IG0rZQorICAgIHMxX2ZpbmQgPSBzMS5maW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfZmluZChzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoKHMrIkQiKSo1MDArIkUiK3MpLmZpbmQoIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIGUrbQorICAgIHMyID0gZSttCisgICAgczFfZmluZCA9IHMxLmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9maW5kKHMyKQorCisKKyMjIyMgU2FtZSB0ZXN0cyBmb3IgJ3JmaW5kJworCitAYmVuY2goJygiQSIqMTAwMCkucmZpbmQoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcmZpbmRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLnJmaW5kKCJCIiknLCAibm8gbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfbm9fbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkIiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKKworQGJlbmNoKCcoIkFCIioxMDAwKS5yZmluZCgiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmZpbmQoIkJDIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmZpbmQoIkNBIiknLCAibm8gbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXJfYmlzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkNBIikKKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCitAYmVuY2goJygiQyIrIkFCIiozMDApLnJmaW5kKCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yZmluZChzMikKKworQGJlbmNoKCcoIkJDIisiQUIiKjMwMCkucmZpbmQoIkJDIiknLCAibGF0ZSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJmaW5kX3Rlc3Rfc2xvd19tYXRjaF90d29fY2hhcmFjdGVyc19iaXMoU1RSKToKKyAgICBzMSA9IFNUUigiQkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JmaW5kID0gczEucmZpbmQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5yZmluZCgiRSIrcyknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSttICsgKGQrbSkqNTAwCisgICAgczIgPSBlK20KKyAgICBzMV9yZmluZCA9IHMxLnJmaW5kCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfcmZpbmQoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKHMrIkUiKygiRCIrcykqNTAwKS5yZmluZChzKyJFIiknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiByZmluZF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnNfYmlzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IG0rZSArIChkK20pKjUwMAorICAgIHMyID0gbStlCisgICAgczFfcmZpbmQgPSBzMS5yZmluZAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX3JmaW5kKHMyKQorCisKKyMjIyMgTm93IHdpdGggaW5kZXguCisjIFNraXAgdGhlIG9uZXMgd2hpY2ggZmFpbCBiZWNhdXNlIHRoYXQgd291bGQgaW5jbHVkZSBleGNlcHRpb24gb3ZlcmhlYWQuCisKK0BiZW5jaCgnKCJBIioxMDAwKS5pbmRleCgiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBpbmRleF90ZXN0X3F1aWNrX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLmluZGV4KCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5kZXhfdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9pbmRleChzMikKKworQGJlbmNoKCcoIkFCIiozMDArIkMiKS5pbmRleCgiQkMiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgaW5kZXhfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9pbmRleCA9IHMxLmluZGV4CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikuaW5kZXgocysiRSIpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgaW5kZXhfdGVzdF9zbG93X21hdGNoXzEwMF9jaGFyYWN0ZXJzKFNUUik6CisgICAgbSA9IFNUUigiQUJDIiozMykKKyAgICBkID0gU1RSKCJEIikKKyAgICBlID0gU1RSKCJFIikKKyAgICBzMSA9IChtK2QpKjUwMCArIG0rZQorICAgIHMyID0gbStlCisgICAgczFfaW5kZXggPSBzMS5pbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDA6CisgICAgICAgIHMxX2luZGV4KHMyKQorCisKKyMjIyMgU2FtZSBmb3IgcmluZGV4CisKK0BiZW5jaCgnKCJBIioxMDAwKS5yaW5kZXgoIkEiKScsICJlYXJseSBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcmluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucmluZGV4KCJBQiIpJywgImVhcmx5IG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcmluZGV4X3Rlc3RfcXVpY2tfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQUIiKQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucmluZGV4KCJDQSIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByaW5kZXhfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JpbmRleCA9IHMxLnJpbmRleAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5yaW5kZXgoIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcmluZGV4X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlICsgbSArIChkK20pKjUwMAorICAgIHMyID0gZSArIG0KKyAgICBzMV9yaW5kZXggPSBzMS5yaW5kZXgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yaW5kZXgoczIpCisKKworIyMjIyBTYW1lIGZvciBwYXJ0aXRpb24KKworQGJlbmNoKCcoIkEiKjEwMDApLnBhcnRpdGlvbigiQSIpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLnBhcnRpdGlvbigiQiIpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcGFydGl0aW9uID0gczEucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3BhcnRpdGlvbihzMikKKworCitAYmVuY2goJygiQUIiKjEwMDApLnBhcnRpdGlvbigiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJygiQUIiKjEwMDApLnBhcnRpdGlvbigiQkMiKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3BhcnRpdGlvbiA9IHMxLnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJBQiIqMzAwKyJDIikucGFydGl0aW9uKCJCQyIpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBwYXJ0aXRpb25fdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDMwMCsiQyIpCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcGFydGl0aW9uKHMyKQorCitAYmVuY2goJ3M9IkFCQyIqMzM7ICgocysiRCIpKjUwMCtzKyJFIikucGFydGl0aW9uKHMrIkUiKScsCisgICAgICAgImxhdGUgbWF0Y2gsIDEwMCBjaGFyYWN0ZXJzIiwgMTAwKQorZGVmIHBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9wYXJ0aXRpb24gPSBzMS5wYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9wYXJ0aXRpb24oczIpCisKKworIyMjIyBTYW1lIGZvciBycGFydGl0aW9uCisKK0BiZW5jaCgnKCJBIioxMDAwKS5ycGFydGl0aW9uKCJBIiknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkEiKjEwMDApLnJwYXJ0aXRpb24oIkIiKScsICJubyBtYXRjaCwgc2luZ2xlIGNoYXJhY3RlciIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9ycGFydGl0aW9uID0gczEucnBhcnRpdGlvbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkucnBhcnRpdGlvbigiQUIiKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJwYXJ0aXRpb25fdGVzdF9xdWlja19tYXRjaF90d29fY2hhcmFjdGVycyhTVFIpOgorICAgIHMxID0gU1RSKCJBQiIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJBQiIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCcoIkFCIioxMDAwKS5ycGFydGl0aW9uKCJCQyIpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JwYXJ0aXRpb24gPSBzMS5ycGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JwYXJ0aXRpb24oczIpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucnBhcnRpdGlvbigiQ0EiKScsICJsYXRlIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQyIgKyAiQUIiICogMzAwKQorICAgIHMyID0gU1RSKCJDQSIpCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnBhcnRpdGlvbihzMikKKworQGJlbmNoKCdzPSJBQkMiKjMzOyAoIkUiK3MrKCJEIitzKSo1MDApLnJwYXJ0aXRpb24oIkUiK3MpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcnBhcnRpdGlvbl90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gZSArIG0gKyAoZCttKSo1MDAKKyAgICBzMiA9IGUgKyBtCisgICAgczFfcnBhcnRpdGlvbiA9IHMxLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9ycGFydGl0aW9uKHMyKQorCisKKyMjIyMgU2FtZSBmb3Igc3BsaXQocywgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnNwbGl0KCJBIiwgMSknLCAiZWFybHkgbWF0Y2gsIHNpbmdsZSBjaGFyYWN0ZXIiLCAxMDAwKQorZGVmIHNwbGl0X3Rlc3RfcXVpY2tfbWF0Y2hfc2luZ2xlX2NoYXJhY3RlcihTVFIpOgorICAgIHMxID0gU1RSKCJBIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkEiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJBIioxMDAwKS5zcGxpdCgiQiIsIDEpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X25vX21hdGNoX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQSIgKiAxMDAwKQorICAgIHMyID0gU1RSKCJCIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCisKK0BiZW5jaCgnKCJBQiIqMTAwMCkuc3BsaXQoIkFCIiwgMSknLCAiZWFybHkgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQUIiKjEwMDApLnNwbGl0KCJCQyIsIDEpJywgIm5vIG1hdGNoLCB0d28gY2hhcmFjdGVycyIsIDEwMDApCitkZWYgc3BsaXRfdGVzdF9ub19tYXRjaF90d29fY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkJDIikKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3NwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQUIiKjMwMCsiQyIpLnNwbGl0KCJCQyIsIDEpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiBzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfdHdvX2NoYXJhY3RlcnMoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMzAwKyJDIikKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3NwbGl0ID0gczEuc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKChzKyJEIikqNTAwK3MrIkUiKS5zcGxpdChzKyJFIiwgMSknLAorICAgICAgICJsYXRlIG1hdGNoLCAxMDAgY2hhcmFjdGVycyIsIDEwMCkKK2RlZiBzcGxpdF90ZXN0X3Nsb3dfbWF0Y2hfMTAwX2NoYXJhY3RlcnMoU1RSKToKKyAgICBtID0gU1RSKCJBQkMiKjMzKQorICAgIGQgPSBTVFIoIkQiKQorICAgIGUgPSBTVFIoIkUiKQorICAgIHMxID0gKG0rZCkqNTAwICsgbStlCisgICAgczIgPSBtK2UKKyAgICBzMV9zcGxpdCA9IHMxLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDoKKyAgICAgICAgczFfc3BsaXQoczIsIDEpCisKKworIyMjIyBTYW1lIGZvciByc3BsaXQocywgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnJzcGxpdCgiQSIsIDEpJywgImVhcmx5IG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9xdWlja19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQSIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworQGJlbmNoKCcoIkEiKjEwMDApLnJzcGxpdCgiQiIsIDEpJywgIm5vIG1hdGNoLCBzaW5nbGUgY2hhcmFjdGVyIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9ub19tYXRjaF9zaW5nbGVfY2hhcmFjdGVyKFNUUik6CisgICAgczEgPSBTVFIoIkEiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQiIpCisgICAgczFfcnNwbGl0ID0gczEucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX3JzcGxpdChzMiwgMSkKKworCitAYmVuY2goJygiQUIiKjEwMDApLnJzcGxpdCgiQUIiLCAxKScsICJlYXJseSBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X3F1aWNrX21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkFCIiAqIDEwMDApCisgICAgczIgPSBTVFIoIkFCIikKKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfcnNwbGl0KHMyLCAxKQorCitAYmVuY2goJygiQUIiKjEwMDApLnJzcGxpdCgiQkMiLCAxKScsICJubyBtYXRjaCwgdHdvIGNoYXJhY3RlcnMiLCAxMDAwKQorZGVmIHJzcGxpdF90ZXN0X25vX21hdGNoX3R3b19jaGFyYWN0ZXIoU1RSKToKKyAgICBzMSA9IFNUUigiQUIiICogMTAwMCkKKyAgICBzMiA9IFNUUigiQkMiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgnKCJDIisiQUIiKjMwMCkucnNwbGl0KCJDQSIsIDEpJywgImxhdGUgbWF0Y2gsIHR3byBjaGFyYWN0ZXJzIiwgMTAwMCkKK2RlZiByc3BsaXRfdGVzdF9zbG93X21hdGNoX3R3b19jaGFyYWN0ZXJzKFNUUik6CisgICAgczEgPSBTVFIoIkMiICsgIkFCIiAqIDMwMCkKKyAgICBzMiA9IFNUUigiQ0EiKQorICAgIHMxX3JzcGxpdCA9IHMxLnJzcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKK0BiZW5jaCgncz0iQUJDIiozMzsgKCJFIitzKygiRCIrcykqNTAwKS5yc3BsaXQoIkUiK3MsIDEpJywKKyAgICAgICAibGF0ZSBtYXRjaCwgMTAwIGNoYXJhY3RlcnMiLCAxMDApCitkZWYgcnNwbGl0X3Rlc3Rfc2xvd19tYXRjaF8xMDBfY2hhcmFjdGVycyhTVFIpOgorICAgIG0gPSBTVFIoIkFCQyIqMzMpCisgICAgZCA9IFNUUigiRCIpCisgICAgZSA9IFNUUigiRSIpCisgICAgczEgPSBlICsgbSArIChkK20pKjUwMAorICAgIHMyID0gZSArIG0KKyAgICBzMV9yc3BsaXQgPSBzMS5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzMV9yc3BsaXQoczIsIDEpCisKKworIyMjIyBCZW5jaG1hcmsgdGhlIG9wZXJhdG9yLWJhc2VkIG1ldGhvZHMKKworQGJlbmNoKCciQSIqMTAnLCAicmVwZWF0IDEgY2hhcmFjdGVyIDEwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfc2luZ2xlXzEwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMgKiAxMAorCitAYmVuY2goJyJBIioxMDAwJywgInJlcGVhdCAxIGNoYXJhY3RlciAxMDAwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfc2luZ2xlXzEwMDBfdGltZXMoU1RSKToKKyAgICBzID0gU1RSKCJBIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAqIDEwMDAKKworQGJlbmNoKCciQUJDREUiKjEwJywgInJlcGVhdCA1IGNoYXJhY3RlcnMgMTAgdGltZXMiLCAxMDAwKQorZGVmIHJlcGVhdF81XzEwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQUJDREUiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAKKworQGJlbmNoKCciQUJDREUiKjEwMDAnLCAicmVwZWF0IDUgY2hhcmFjdGVycyAxMDAwIHRpbWVzIiwgMTAwMCkKK2RlZiByZXBlYXRfNV8xMDAwX3RpbWVzKFNUUik6CisgICAgcyA9IFNUUigiQUJDREUiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzICogMTAwMAorCisjICsgZm9yIGNvbmNhdAorCitAYmVuY2goJyJBbmRyZXciKyJEYWxrZSInLCAiY29uY2F0IHR3byBzdHJpbmdzIiwgMTAwMCkKK2RlZiBjb25jYXRfdHdvX3N0cmluZ3MoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiRGFsa2UiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMStzMgorCitAYmVuY2goJ3MxK3MyK3MzK3M0Ky4uLitzMjAnLCAiY29uY2F0IDIwIHN0cmluZ3Mgb2Ygd29yZHMgbGVuZ3RoIDQgdG8gMTUiLAorICAgICAgIDEwMDApCitkZWYgY29uY2F0X21hbnlfc3RyaW5ncyhTVFIpOgorICAgIHMxPVNUUignVElYU0dZTlJFRENWQkhKJykKKyAgICBzMj1TVFIoJ1BVTVRMWEJaVkRPJykKKyAgICBzMz1TVFIoJ0ZWWk5KJykKKyAgICBzND1TVFIoJ09HRFhVVycpCisgICAgczU9U1RSKCdXRUlNUk5DT1lWR0hLQicpCisgICAgczY9U1RSKCdGQ1FUTk1YUFVaSCcpCisgICAgczc9U1RSKCdUSUNaSllSTEJOVlVFQUsnKQorICAgIHM4PVNUUignUkVZQicpCisgICAgczk9U1RSKCdQV1VPUScpCisgICAgczEwPVNUUignRVFIQ01LQlMnKQorICAgIHMxMT1TVFIoJ0FFVkRGT0gnKQorICAgIHMxMj1TVFIoJ0lGSFZEJykKKyAgICBzMTM9U1RSKCdKR1RDTkxYV09IUScpCisgICAgczE0PVNUUignSVRTS0VQWUxST1pBV1hGJykKKyAgICBzMTU9U1RSKCdUSEVLJykKKyAgICBzMTY9U1RSKCdHSFBaRkJVWUNLTU5KSVQnKQorICAgIHMxNz1TVFIoJ0pNVVonKQorICAgIHMxOD1TVFIoJ1dMWlFNVEInKQorICAgIHMxOT1TVFIoJ0tQQURDQlcnKQorICAgIHMyMD1TVFIoJ1ROSkhaUUFHQlUnKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICAoczEgKyBzMisgczMrIHM0KyBzNSsgczYrIHM3KyBzOCsgczkrczEwKworICAgICAgICAgczExK3MxMitzMTMrczE0K3MxNStzMTYrczE3K3MxOCtzMTkrczIwKQorCisKKyMjIyMgQmVuY2htYXJrIGpvaW4KKworZGVmIGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCBhcmcpOgorICAgIGlmIFNUUiBpcyBCWVRFUyBhbmQgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgICAgICByYWlzZSBVbnN1cHBvcnRlZFR5cGUKKyAgICByZXR1cm4gU1RSKGFyZykKKworQGJlbmNoKCciQSIuam9pbigiIiknLAorICAgICAgICJqb2luIGVtcHR5IHN0cmluZywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDApCitkZWYgam9pbl9lbXB0eV9zaW5nbGUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkEiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICIiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4oIiIpJywKKyAgICAgICAiam9pbiBlbXB0eSBzdHJpbmcsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwKQorZGVmIGpvaW5fZW1wdHlfNShTVFIpOgorICAgIHNlcCA9IFNUUigiQUJDREUiKQorICAgIHMyID0gZ2V0X2J5dGVzX3lpZWxkaW5nX3NlcShTVFIsICIiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQSIuam9pbigiQUJDLi5aIiknLAorICAgICAgICJqb2luIHN0cmluZyB3aXRoIDI2IGNoYXJhY3RlcnMsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0X3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBnZXRfYnl0ZXNfeWllbGRpbmdfc2VxKFNUUiwgIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIikKKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbigiQUJDLi5aIiknLAorICAgICAgICJqb2luIHN0cmluZyB3aXRoIDI2IGNoYXJhY3RlcnMsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0XzUoU1RSKToKKyAgICBzZXAgPSBTVFIoIkFCQ0RFIikKKyAgICBzMiA9IGdldF9ieXRlc195aWVsZGluZ19zZXEoU1RSLCAiQUJDREVGR0hJSktMTW5PUFFSU1RVVldYWVoiKQorICAgIHNlcF9qb2luID0gc2VwLmpvaW4KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc2VwX2pvaW4oczIpCisKK0BiZW5jaCgnIkEiLmpvaW4obGlzdCgiQUJDLi5aIikpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDI2IGNoYXJhY3RlcnMsIHdpdGggMSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luX2FscGhhYmV0X2xpc3Rfc2luZ2xlKFNUUik6CisgICAgc2VwID0gU1RSKCJBIikKKyAgICBzMiA9IFtTVFIoeCkgZm9yIHggaW4gIkFCQ0RFRkdISUpLTE1uT1BRUlNUVVZXWFlaIl0KKyAgICBzZXBfam9pbiA9IHNlcC5qb2luCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNlcF9qb2luKHMyKQorCitAYmVuY2goJyJBQkNERSIuam9pbihsaXN0KCJBQkMuLloiKSknLAorICAgICAgICJqb2luIGxpc3Qgb2YgMjYgY2hhcmFjdGVycywgd2l0aCA1IGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fYWxwaGFiZXRfbGlzdF9maXZlKFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBbU1RSKHgpIGZvciB4IGluICJBQkNERUZHSElKS0xNbk9QUVJTVFVWV1hZWiJdCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQSIuam9pbihbIkJvYiJdKjEwMCkpJywKKyAgICAgICAiam9pbiBsaXN0IG9mIDEwMCB3b3Jkcywgd2l0aCAxIGNoYXJhY3RlciBzZXAiLCAxMDAwKQorZGVmIGpvaW5fMTAwX3dvcmRzX3NpbmdsZShTVFIpOgorICAgIHNlcCA9IFNUUigiQSIpCisgICAgczIgPSBbU1RSKCJCb2IiKV0qMTAwCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworQGJlbmNoKCciQUJDREUiLmpvaW4oWyJCb2IiXSoxMDApKScsCisgICAgICAgImpvaW4gbGlzdCBvZiAxMDAgd29yZHMsIHdpdGggNSBjaGFyYWN0ZXIgc2VwIiwgMTAwMCkKK2RlZiBqb2luXzEwMF93b3Jkc181KFNUUik6CisgICAgc2VwID0gU1RSKCJBQkNERSIpCisgICAgczIgPSBbU1RSKCJCb2IiKV0qMTAwCisgICAgc2VwX2pvaW4gPSBzZXAuam9pbgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzZXBfam9pbihzMikKKworIyMjIyBzcGxpdCB0ZXN0cworCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5zcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKHNtYWxsKSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9zcGxpdChTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KCkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucnNwbGl0KCknLCAic3BsaXQgd2hpdGVzcGFjZSAoc21hbGwpIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3JzcGxpdChTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KCkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikuc3BsaXQoTm9uZSwgMSknLAorICAgICAgICJzcGxpdCAxIHdoaXRlc3BhY2UiLCAxMDAwKQorZGVmIHdoaXRlc3BhY2Vfc3BsaXRfMShTVFIpOgorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIE4gPSBOb25lCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoTiwgMSkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucnNwbGl0KE5vbmUsIDEpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3JzcGxpdF8xKFNUUik6CisgICAgcyA9IFNUUigiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBOID0gTm9uZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JzcGxpdChOLCAxKQorCitAYmVuY2goJygiSGVyZSBhcmUgc29tZSB3b3Jkcy4gIioyKS5wYXJ0aXRpb24oIiAiKScsCisgICAgICAgInNwbGl0IDEgd2hpdGVzcGFjZSIsIDEwMDApCitkZWYgd2hpdGVzcGFjZV9wYXJ0aXRpb24oU1RSKToKKyAgICBzZXAgPSBTVFIoIiAiKQorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3BhcnRpdGlvbiA9IHMucGFydGl0aW9uCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcGFydGl0aW9uKHNlcCkKKworQGJlbmNoKCcoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikucnBhcnRpdGlvbigiICIpJywKKyAgICAgICAic3BsaXQgMSB3aGl0ZXNwYWNlIiwgMTAwMCkKK2RlZiB3aGl0ZXNwYWNlX3JwYXJ0aXRpb24oU1RSKToKKyAgICBzZXAgPSBTVFIoIiAiKQorICAgIHMgPSBTVFIoIkhlcmUgYXJlIHNvbWUgd29yZHMuICIqMikKKyAgICBzX3JwYXJ0aXRpb24gPSBzLnJwYXJ0aXRpb24KKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19ycGFydGl0aW9uKHNlcCkKKworaHVtYW5fdGV4dCA9ICIiIlwKK1B5dGhvbiBpcyBhIGR5bmFtaWMgb2JqZWN0LW9yaWVudGVkIHByb2dyYW1taW5nIGxhbmd1YWdlIHRoYXQgY2FuIGJlCit1c2VkIGZvciBtYW55IGtpbmRzIG9mIHNvZnR3YXJlIGRldmVsb3BtZW50LiBJdCBvZmZlcnMgc3Ryb25nIHN1cHBvcnQKK2ZvciBpbnRlZ3JhdGlvbiB3aXRoIG90aGVyIGxhbmd1YWdlcyBhbmQgdG9vbHMsIGNvbWVzIHdpdGggZXh0ZW5zaXZlCitzdGFuZGFyZCBsaWJyYXJpZXMsIGFuZCBjYW4gYmUgbGVhcm5lZCBpbiBhIGZldyBkYXlzLiBNYW55IFB5dGhvbgorcHJvZ3JhbW1lcnMgcmVwb3J0IHN1YnN0YW50aWFsIHByb2R1Y3Rpdml0eSBnYWlucyBhbmQgZmVlbCB0aGUgbGFuZ3VhZ2UKK2VuY291cmFnZXMgdGhlIGRldmVsb3BtZW50IG9mIGhpZ2hlciBxdWFsaXR5LCBtb3JlIG1haW50YWluYWJsZSBjb2RlLgorCitQeXRob24gcnVucyBvbiBXaW5kb3dzLCBMaW51eC9Vbml4LCBNYWMgT1MgWCwgT1MvMiwgQW1pZ2EsIFBhbG0KK0hhbmRoZWxkcywgYW5kIE5va2lhIG1vYmlsZSBwaG9uZXMuIFB5dGhvbiBoYXMgYWxzbyBiZWVuIHBvcnRlZCB0byB0aGUKK0phdmEgYW5kIC5ORVQgdmlydHVhbCBtYWNoaW5lcy4KKworUHl0aG9uIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIGFuIE9TSS1hcHByb3ZlZCBvcGVuIHNvdXJjZSBsaWNlbnNlIHRoYXQKK21ha2VzIGl0IGZyZWUgdG8gdXNlLCBldmVuIGZvciBjb21tZXJjaWFsIHByb2R1Y3RzLgorIiIiKjI1CitodW1hbl90ZXh0X2J5dGVzID0gYnl0ZXNfZnJvbV9zdHIoaHVtYW5fdGV4dCkKK2h1bWFuX3RleHRfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoaHVtYW5fdGV4dCkKK2RlZiBfZ2V0X2h1bWFuX3RleHQoU1RSKToKKyAgICBpZiBTVFIgaXMgVU5JQ09ERToKKyAgICAgICAgcmV0dXJuIGh1bWFuX3RleHRfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgcmV0dXJuIGh1bWFuX3RleHRfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCitAYmVuY2goJ2h1bWFuX3RleHQuc3BsaXQoKScsICJzcGxpdCB3aGl0ZXNwYWNlIChodWdlKSIsIDEwKQorZGVmIHdoaXRlc3BhY2Vfc3BsaXRfaHVnZShTVFIpOgorICAgIHMgPSBfZ2V0X2h1bWFuX3RleHQoU1RSKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3NwbGl0KCkKKworQGJlbmNoKCdodW1hbl90ZXh0LnJzcGxpdCgpJywgInNwbGl0IHdoaXRlc3BhY2UgKGh1Z2UpIiwgMTApCitkZWYgd2hpdGVzcGFjZV9yc3BsaXRfaHVnZShTVFIpOgorICAgIHMgPSBfZ2V0X2h1bWFuX3RleHQoU1RSKQorICAgIHNfcnNwbGl0ID0gcy5yc3BsaXQKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfcnNwbGl0KCkKKworCisKK0BiZW5jaCgnInRoaXNcXG5pc1xcbmFcXG50ZXN0XFxuIi5zcGxpdCgiXFxuIiknLCAic3BsaXQgbmV3bGluZXMiLCAxMDAwKQorZGVmIG5ld2xpbmVzX3NwbGl0KFNUUik6CisgICAgcyA9IFNUUigidGhpc1xuaXNcbmFcbnRlc3RcbiIpCisgICAgc19zcGxpdCA9IHMuc3BsaXQKKyAgICBubCA9IFNUUigiXG4iKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KG5sKQorCisKK0BiZW5jaCgnInRoaXNcXG5pc1xcbmFcXG50ZXN0XFxuIi5yc3BsaXQoIlxcbiIpJywgInNwbGl0IG5ld2xpbmVzIiwgMTAwMCkKK2RlZiBuZXdsaW5lc19yc3BsaXQoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzXG5pc1xuYVxudGVzdFxuIikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3BsaXQobmwpCisKK0BiZW5jaCgnInRoaXNcXG5pc1xcbmFcXG50ZXN0XFxuIi5zcGxpdGxpbmVzKCknLCAic3BsaXQgbmV3bGluZXMiLCAxMDAwKQorZGVmIG5ld2xpbmVzX3NwbGl0bGluZXMoU1RSKToKKyAgICBzID0gU1RSKCJ0aGlzXG5pc1xuYVxudGVzdFxuIikKKyAgICBzX3NwbGl0bGluZXMgPSBzLnNwbGl0bGluZXMKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zcGxpdGxpbmVzKCkKKworIyMgc3BsaXQgdGV4dCB3aXRoIDIwMDAgbmV3bGluZXMKKworZGVmIF9tYWtlXzIwMDBfbGluZXMoKToKKyAgICBpbXBvcnQgcmFuZG9tCisgICAgciA9IHJhbmRvbS5SYW5kb20oMTAwKQorICAgIGNoYXJzID0gbGlzdChtYXAoY2hyLCByYW5nZSgzMiwgMTI4KSkpCisgICAgaSA9IDAKKyAgICB3aGlsZSBpIDwgbGVuKGNoYXJzKToKKyAgICAgICAgY2hhcnNbaV0gPSAiICIKKyAgICAgICAgaSArPSByLnJhbmRyYW5nZSg5KQorICAgIHMgPSAiIi5qb2luKGNoYXJzKQorICAgIHMgPSBzKjQKKyAgICB3b3JkcyA9IFtdCisgICAgZm9yIGkgaW4gcmFuZ2UoMjAwMCk6CisgICAgICAgIHN0YXJ0ID0gci5yYW5kcmFuZ2UoOTYpCisgICAgICAgIG4gPSByLnJhbmRpbnQoNSwgNjUpCisgICAgICAgIHdvcmRzLmFwcGVuZChzW3N0YXJ0OnN0YXJ0K25dKQorICAgIHJldHVybiAiXG4iLmpvaW4od29yZHMpKyJcbiIKKworX3RleHRfd2l0aF8yMDAwX2xpbmVzID0gX21ha2VfMjAwMF9saW5lcygpCitfdGV4dF93aXRoXzIwMDBfbGluZXNfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihfdGV4dF93aXRoXzIwMDBfbGluZXMpCitfdGV4dF93aXRoXzIwMDBfbGluZXNfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoX3RleHRfd2l0aF8yMDAwX2xpbmVzKQorZGVmIF9nZXRfMjAwMF9saW5lcyhTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX3RleHRfd2l0aF8yMDAwX2xpbmVzX3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIHJldHVybiBfdGV4dF93aXRoXzIwMDBfbGluZXNfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisKK0BiZW5jaCgnIi4uLnRleHQuLi4iLnNwbGl0KCJcXG4iKScsICJzcGxpdCAyMDAwIG5ld2xpbmVzIiwgMTApCitkZWYgbmV3bGluZXNfc3BsaXRfMjAwMChTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXQobmwpCisKK0BiZW5jaCgnIi4uLnRleHQuLi4iLnJzcGxpdCgiXFxuIiknLCAic3BsaXQgMjAwMCBuZXdsaW5lcyIsIDEwKQorZGVmIG5ld2xpbmVzX3JzcGxpdF8yMDAwKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIG5sID0gU1RSKCJcbiIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JzcGxpdChubCkKKworQGJlbmNoKCciLi4udGV4dC4uLiIuc3BsaXRsaW5lcygpJywgInNwbGl0IDIwMDAgbmV3bGluZXMiLCAxMCkKK2RlZiBuZXdsaW5lc19zcGxpdGxpbmVzXzIwMDAoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBzX3NwbGl0bGluZXMgPSBzLnNwbGl0bGluZXMKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfc3BsaXRsaW5lcygpCisKKworIyMgc3BsaXQgdGV4dCBvbiAiLS0iIGNoYXJhY3RlcnMKK0BiZW5jaCgKKyAgICAnInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIi5zcGxpdCgiLS0iKScsCisgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoc21hbGwpIiwgMTAwMCkKK2RlZiBzcGxpdF9tdWx0aWNoYXJfc2VwX3NtYWxsKFNUUik6CisgICAgcyA9IFNUUigidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgcGF0ID0gU1RSKCItLSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQocGF0KQorQGJlbmNoKAorICAgICcidGhpcy0taXMtLWEtLXRlc3QtLW9mLS10aGUtLWVtZXJnZW5jeS0tYnJvYWRjYXN0LS1zeXN0ZW0iLnJzcGxpdCgiLS0iKScsCisgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoc21hbGwpIiwgMTAwMCkKK2RlZiByc3BsaXRfbXVsdGljaGFyX3NlcF9zbWFsbChTVFIpOgorICAgIHMgPSBTVFIoInRoaXMtLWlzLS1hLS10ZXN0LS1vZi0tdGhlLS1lbWVyZ2VuY3ktLWJyb2FkY2FzdC0tc3lzdGVtIikKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgcGF0ID0gU1RSKCItLSIpCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KHBhdCkKKworIyMgc3BsaXQgZG5hIHRleHQgb24gIkFDVEFUIiBjaGFyYWN0ZXJzCitAYmVuY2goJ2RuYS5zcGxpdCgiQUNUQVQiKScsCisgICAgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoZG5hKSIsIDEwKQorZGVmIHNwbGl0X211bHRpY2hhcl9zZXBfZG5hKFNUUik6CisgICAgcyA9IF9nZXRfZG5hKFNUUikKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIHBhdCA9IFNUUigiQUNUQVQiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19zcGxpdChwYXQpCisKK0BiZW5jaCgnZG5hLnJzcGxpdCgiQUNUQVQiKScsCisgICAgICAgInNwbGl0IG9uIG11bHRpY2hhcmFjdGVyIHNlcGFyYXRvciAoZG5hKSIsIDEwKQorZGVmIHJzcGxpdF9tdWx0aWNoYXJfc2VwX2RuYShTVFIpOgorICAgIHMgPSBfZ2V0X2RuYShTVFIpCisgICAgc19yc3BsaXQgPSBzLnJzcGxpdAorICAgIHBhdCA9IFNUUigiQUNUQVQiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yc3BsaXQocGF0KQorCisKKworIyMgc3BsaXQgd2l0aCBsaW1pdHMKKworR0ZGM19leGFtcGxlID0gIlx0Ii5qb2luKFsKKyAgICAiSSIsICJHZW5vbWljX2Nhbm9uaWNhbCIsICJyZWdpb24iLCAiMzU3MjA4IiwgIjM5NjE4MyIsICIuIiwgIisiLCAiLiIsCisgICAgIklEPVNlcXVlbmNlOlIxMTk7bm90ZT1DbG9uZSBSMTE5JTNCIEdlbmJhbmsgQUYwNjMwMDc7TmFtZT1SMTE5Il0pCisKK0BiZW5jaCgnR0ZGM19leGFtcGxlLnNwbGl0KCJcXHQiKScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9zcGxpdF9ub19saW1pdChTVFIpOgorICAgIHNlcCA9IFNUUigiXHQiKQorICAgIHMgPSBTVFIoR0ZGM19leGFtcGxlKQorICAgIHNfc3BsaXQgPSBzLnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3BsaXQoc2VwKQorCitAYmVuY2goJ0dGRjNfZXhhbXBsZS5zcGxpdCgiXFx0IiwgOCknLCAidGFiIHNwbGl0IiwgMTAwMCkKK2RlZiB0YWJfc3BsaXRfbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3NwbGl0ID0gcy5zcGxpdAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3NwbGl0KHNlcCwgOCkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUucnNwbGl0KCJcXHQiKScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9yc3BsaXRfbm9fbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KHNlcCkKKworQGJlbmNoKCdHRkYzX2V4YW1wbGUucnNwbGl0KCJcXHQiLCA4KScsICJ0YWIgc3BsaXQiLCAxMDAwKQorZGVmIHRhYl9yc3BsaXRfbGltaXQoU1RSKToKKyAgICBzZXAgPSBTVFIoIlx0IikKKyAgICBzID0gU1RSKEdGRjNfZXhhbXBsZSkKKyAgICBzX3JzcGxpdCA9IHMucnNwbGl0CisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfcnNwbGl0KHNlcCwgOCkKKworIyMjIyBDb3VudCBjaGFyYWN0ZXJzCisKK0BiZW5jaCgnLi4udGV4dC53aXRoLjIwMDAubmV3bGluZXMuY291bnQoIlxcbiIpJywKKyAgICAgICAiY291bnQgbmV3bGluZXMiLCAxMCkKK2RlZiBjb3VudF9uZXdsaW5lcyhTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHNfY291bnQgPSBzLmNvdW50CisgICAgbmwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHNfY291bnQobmwpCisKKyMgT3JjaGlkIHNlcXVlbmNlcyBjb25jYXRlbmF0ZWQsIGZyb20gQmlvcHl0aG9uCitfZG5hID0gIiIiCitDR1RBQUNBQUdHVFRUQ0NHVEFHR1RHQUFDQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dHR1RUCitBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUVEdHVENBQ0NDQVRHQUdDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FBVFRHQ0NBVENHCitBR0NDVENDVFRHR0dBR0NUVFRDVFRHVFRHR0NHQUdBVENUQUFBQ0NDVFRHQ0NDR0dDR0NBR1RUVFRHQ1RDQ0FBR1RDR1RUCitUR0FDQUNBVEFBVFRHR1RHQUFHR0dHR1RHR0NBVENDVFRDQ0NUR0FDQ0NUQ0NDQ0NBQUNUQVRUVFRUVFRBQUNBQUNUQ1RDCitBR0NBQUNHR0FHQUNUQ0FHVENUVENHR0NBQUFUR0NHQVRBQUFUR0dUR1RHQUFUVEdDQUdBQVRDQ0NHVEdDQUNDQVRDR0FHCitUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0dDQ1RHQ0NUR0dHQ0FUVEdDR0FHVENBVEFUCitDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FUQUNUR1RUQ0FHQ0NHR1RHQ0dHQVRHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUCitUR0dUQUNHR0dHR0dUQ1RBQUdBR0NUR0NBVEdHR0NUVFRUR0FUR0dUQ0NUQUFBVEFDR0dDQUFHQUdHVEdHQUNHQUFDVEFUCitHQ1RBQ0FBQ0FBQUFUVEdUVEdUR0NBR0FHR0NDQ0NHR0dUVEdUQ0dUQVRUQUdBVEdHR0NDQUNDR1RBQVRDVEdBQUdBQ0NDCitUVFRUR0FBQ0NDQ0FUVEdHQUdHQ0NDQVRDQUFDQ0NBVEdBVENBR1RUR0FUR0dDQ0FUVFRHR1RUR0NHQUNDQ0NBR0dUQ0FHCitHVEdBR0NBQUNBR0NUR1RDR1RBQUNBQUdHVFRUQ0NHVEFHR0dUR0FBQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBCitBVEFBVFRHQVRDR0FHVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUR0dHVENBQ0NDQVRHR0dDQVRUVEdDVEdUVEdBQUdUR0FDCitDVEFHQVRUVEdDQ0FUQ0dBR0NDVENDVFRHR0dBR0NBVENDVFRHVFRHR0NHQVRBVENUQUFBQ0NDVENBQVRUVFRUQ0NDQ0NBCitBVENBQUFUVEFDQUNBQUFBVFRHR1RHR0FHR0dHR1RHR0NBVFRDVFRDQ0NUVEFDQ0NUQ0NDQ0NBQUFUQVRUVFRUVFRBQUNBCitBQ1RDVENBR0NBQUNHR0FUQVRDVENBR0NUQ1RUR0NBVENHQVRHQUFHQUFDQ0NBQ0NHQUFBVEdDR0FUQUFBVEdHVEdUR0FBCitUVEdDQUdBQVRDQ0NHVEdBQUNDQVRDR0FHVENUVFRHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHCitDQ1RHQ0NUR0dHQ0FUVEdDR0FHVENBVEFUQ1RDVENDQ1RUQUFDR0FHR0NUR1RDQ0FUQUNBVEFDVEdUVENBR0NDR0dUR0NHCitHQVRHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUVEdHVEFDR0dHR0dHVENUQUFHQUdBVEdDQVRHR0dDVFRUVEdBVEdHVENDVEFBCitBVEFDR0dDQUFHQUdHVEdHQUNHQUFDVEFUR0NUQUNBQUNBQUFBVFRHVFRHVEdDQUFBR0dDQ0NDR0dHVFRHVENHVEFUQUFHCitBVEdHR0NDQUNDR0FUQVRDVEdBQUdBQ0NDVFRUVEdHQUNDQ0NBVFRHR0FHQ0NDQVRDQUFDQ0NBVEdUQ0FHVFRHQVRHR0NDCitBVFRDR1RBQUNBQUdHVFRUQ0NHVEFHR1RHQUFDQ1RHQ0dHQUFHR0FUQ0FUVEdUVEdBR0FUQ0FDQVRBQVRBQVRUR0FUQ0dBCitHVFRBQVRDVEdHQUdHQVRDVEdUVFRBQ1RUR0dHVENBQ0NDQVRHR0dDQVRUVEdDVEdUVEdBQUdUR0FDQ1RBR0FUVFRHQ0NBCitUQ0dBR0NDVENDVFRHR0dBR0NUVFRDVFRHVFRHR0NHQVRBVENUQUFBQ0NDVFRHQ0NDR0dDQUdBR1RUVFRHR0dBQVRDQ0NHCitUR0FBQ0NBVENHQUdUQ1RUVEdBQUNHQ0FBR1RUR0NHQ0NDR0FHR0NDQVRDQUdHQ0NBQUdHR0NBQ0dDQ1RHQ0NUR0dHQ0FUCitUR0NHQUdUQ0FUQVRDVENUQ0NDVFRBQUNHQUdHQ1RHVENDQVRBQ0FDQUNDVEdUVENBR0NDR0dUR0NHR0FUR1RHQUdUVFRHCitHQ0NDQ1RUR1RUQ1RUVEdHVEFDR0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDVFRUVEdBVEdHVENDVEFBQVRBQ0dHQ0FBR0FHCitHVEdHQUNHQUFDVEFUR0NUQUNBQUNBQUFBVFRHVFRHVEdDQUFBR0dDQ0NDR0dHVFRHVENHVEFUVEFHQVRHR0dDQ0FDQ0FUCitBQVRDVEdBQUdBQ0NDVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEdHQ0NBVFRUR0dUVEdDCitHQUNDQ0FHVENBR0dUR0FHR0dUQUdHVEdBQUNDVEdDR0dBQUdHQVRDQVRUR1RUR0FHQVRDQUNBVEFBVEFBVFRHQVRDR0FHCitUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRUR0dUQ0FDQ0NBVEdHR0NBVFRUR0NUR1RUR0FBR1RHQUNDVEFHQVRUVEdDQ0FUCitDR0FHQ0NUQ0NUVEdHR0FHQ1RUVENUVEdUVEdHQ0dBR0FUQ1RBQUFDQ0NUVEdDQ0NHR0NHR0FHVFRUR0dDR0NDQUFHVENBCitUQVRHQUNBQ0FUQUFUVEdHVEdBQUdHR0dHVEdHQ0FUQ0NUR0NDQ1RHQUNDQ1RDQ0NDQUFBVFRBVFRUVFRUVEFBQ0FBQ1RDCitUQ0FHQ0FBQ0dHQVRBVENUQ0dHQ1RDVFRHQ0FUQ0dBVEdBQUdBQUNHQ0FHQ0dBQUFUR0NHQVRBQUFUR0dUR1RHQUFUVEdDCitBR0FBVENDQ0dUR0FBQ0NBVENHQUdUQ1RUVEdHQUFDR0NBQUdUVEdDR0NDQ0dBR0dDQ0FUQ0FHR0NDQUFHR0dDQUNHQ0NUCitHQ0NUR0dHQ0FUVEdHR0FBVENBVEFUQ1RDVENDQ0NUQUFDR0FHR0NUQVRDQ0FBQUNBVEFDVEdUVENBVENDR0dUR0NHR0FUCitHVEdBR1RUVEdHQ0NDQ1RUR1RUQ1RUVEdHVEFDQ0dHR0dHVENUQUFHQUdDVEdDQVRHR0dDQVRUVEdBVEdHVENDVENBQUFBCitDR0dDQUFHQUdHVEdHQUNHQUFDVEFUR0NDQUNBQUNBQUFBVFRHVFRHVENDQ0FBR0dDQ0NDR0dHVFRHVENHVEFUVEFHQVRHCitHR0NDQUNDR1RBQUNDVEdBQUdBQ0NDVFRUVEdBQUNDQ0NBVFRHR0FHR0NDQ0FUQ0FBQ0NDQVRHQVRDQUdUVEdBVEdBQ0NBCitUVFRHVFRHQ0dBQ0NDQ0FHVENBR0NUR0FHQ0FBQ0NDR0NUR0FHVEdHQUFHR1RDQVRUR0NDR0FUQVRDQUNBVEFBVEFBVFRHCitBVENHQUdUVEFBVENUR0dBR0dBVENUR1RUVEFDVFRHR1RDQUNDQ0FUR0FHQ0FUVFRHQ1RHVFRHQUFHVEdBQ0NUQUdBVFRUCitHQ0NBVENHQUdDQ1RDQ1RUR0dHQUdUVFRUQ1RUR1RUR0dDR0FHQVRDVEFBQUNDQ1RUR0NDQ0dHQ0dHQUdUVEdUR0NHQ0NBCitBR1RDQVRBVEdBQ0FDQVRBQVRUR0dUR0FBR0dHR0dUR0dDQVRDQ1RHQ0NDVEdBQ0NDVENDQ0NBQUFUVEFUVFRUVFRUQUFDCitBQUNUQ1RDQUdDQUFDR0dBVEFUQ1RDR0dDVENUVEdDQVRDR0FUR0FBR0FBQ0dDQUdDR0FBQVRHQ0dBVEFBQVRHR1RHVEdBCitBVFRHQ0FHQUFUQ0NDR1RHQUFDQ0FUQ0dBR1RDVFRUR0FBQ0dDQUFHVFRHQ0dDQ0NHQUdHQ0NBVENBR0dDQ0FBR0dHQ0FDCitHQ0NUR0NDVEdHR0NBVFRHQ0dBR1RDQVRBVENUQ1RDQ0NUVEFBQ0dBR0dDVEdUQ0NBVEFDQVRBQ1RHVFRDQVRDQ0dHVEdDCitHR0FUR1RHQUdUVFRHR0NDQ0NUVEdUVENUVFRHR1RBQ0dHR0dHR1RDVEFBR0FHQ1RHQ0FUR0dHQ0FUVFRHQVRHR1RDQ1RDCitBQUFBQ0dHQ0FBR0FHR1RHR0FDR0FBQ1RBVEdDVEFDQUFDQ0FBQVRUR1RUR1RDQ0NBQUdHQ0NDQ0dHR1RUR1RDR1RBVFRBCitHQVRHR0dDQ0FDQ0dUQUFDQ1RHQUFHQUNDQ1RUVFRHQUFDQ0NDQVRUR0dBR0dDQ0NBVENBQUNDQ0FUR0FUQ0FHVFRHQVRHCitBQ0NBVEdUR1RUR0NHQUNDQ0NBR1RDQUdDVEdBR0NBQUNHQ0dDVEdBR0NHVEFBQ0FBR0dUVFRDQ0dUQUdHVEdHQUNDVENDCitHR0dBR0dBVENBVFRHVFRHQUdBVENBQ0FUQUFUQUFUVEdBVENHQUdHVEFBVENUR0dBR0dBVENUR0NBVEFUVFRUR0dUQ0FDCisiIiIKK19kbmEgPSAiIi5qb2luKF9kbmEuc3BsaXRsaW5lcygpKQorX2RuYSA9IF9kbmEgKiAyNQorX2RuYV9ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKF9kbmEpCitfZG5hX3VuaWNvZGUgPSB1bmljb2RlX2Zyb21fc3RyKF9kbmEpCisKK2RlZiBfZ2V0X2RuYShTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOgorICAgICAgICByZXR1cm4gX2RuYV91bmljb2RlCisgICAgaWYgU1RSIGlzIEJZVEVTOgorICAgICAgICByZXR1cm4gX2RuYV9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKK0BiZW5jaCgnZG5hLmNvdW50KCJBQUNUIiknLCAiY291bnQgQUFDVCBzdWJzdHJpbmdzIGluIEROQSBleGFtcGxlIiwgMTApCitkZWYgY291bnRfYWFjdChTVFIpOgorICAgIHNlcSA9IF9nZXRfZG5hKFNUUikKKyAgICBzZXFfY291bnQgPSBzZXEuY291bnQKKyAgICBuZWVkbGUgPSBTVFIoIkFBQ1QiKQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc2VxX2NvdW50KG5lZWRsZSkKKworIyMjIyMgc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGgKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBIiknLCAnc3RhcnRzd2l0aCBzaW5nbGUgY2hhcmFjdGVyJywgMTAwMCkKK2RlZiBzdGFydHN3aXRoX3NpbmdsZShTVFIpOgorICAgIHMxID0gU1RSKCJBbmRyZXciKQorICAgIHMyID0gU1RSKCJBIikKKyAgICBzMV9zdGFydHN3aXRoID0gczEuc3RhcnRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9zdGFydHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLnN0YXJ0c3dpdGgoIkFuZHJldyIpJywgJ3N0YXJ0c3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycycsCisgICAgICAgMTAwMCkKK2RlZiBzdGFydHN3aXRoX211bHRpcGxlKFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZHJldyIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5zdGFydHN3aXRoKCJBbmRlcnMiKScsCisgICAgICAgJ3N0YXJ0c3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycyAtIG5vdCEnLCAxMDAwKQorZGVmIHN0YXJ0c3dpdGhfbXVsdGlwbGVfbm90KFNUUik6CisgICAgczEgPSBTVFIoIkFuZHJldyIpCisgICAgczIgPSBTVFIoIkFuZGVycyIpCisgICAgczFfc3RhcnRzd2l0aCA9IHMxLnN0YXJ0c3dpdGgKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgczFfc3RhcnRzd2l0aChzMikKKworCisjIGVuZHN3aXRoCisKK0BiZW5jaCgnIkFuZHJldyIuZW5kc3dpdGgoInciKScsICdlbmRzd2l0aCBzaW5nbGUgY2hhcmFjdGVyJywgMTAwMCkKK2RlZiBlbmRzd2l0aF9zaW5nbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigidyIpCisgICAgczFfZW5kc3dpdGggPSBzMS5lbmRzd2l0aAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzMV9lbmRzd2l0aChzMikKKworQGJlbmNoKCciQW5kcmV3Ii5lbmRzd2l0aCgiQW5kcmV3IiknLCAnZW5kc3dpdGggbXVsdGlwbGUgY2hhcmFjdGVycycsIDEwMDApCitkZWYgZW5kc3dpdGhfbXVsdGlwbGUoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kcmV3IikKKyAgICBzMV9lbmRzd2l0aCA9IHMxLmVuZHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2VuZHN3aXRoKHMyKQorCitAYmVuY2goJyJBbmRyZXciLmVuZHN3aXRoKCJBbmRlcnMiKScsCisgICAgICAgJ2VuZHN3aXRoIG11bHRpcGxlIGNoYXJhY3RlcnMgLSBub3QhJywgMTAwMCkKK2RlZiBlbmRzd2l0aF9tdWx0aXBsZV9ub3QoU1RSKToKKyAgICBzMSA9IFNUUigiQW5kcmV3IikKKyAgICBzMiA9IFNUUigiQW5kZXJzIikKKyAgICBzMV9lbmRzd2l0aCA9IHMxLmVuZHN3aXRoCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHMxX2VuZHN3aXRoKHMyKQorCisjIyMjIFN0cmlwCisKK0BiZW5jaCgnIkhlbGxvIVxcbiIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX3N0cmlwX3JpZ2h0KFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXG4iKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJIZWxsbyFcXG4iLnJzdHJpcCgpJywgJ3N0cmlwIHRlcm1pbmFsIG5ld2xpbmUnLCAxMDAwKQorZGVmIHRlcm1pbmFsX25ld2xpbmVfcnN0cmlwKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG8hXG4iKQorICAgIHNfcnN0cmlwID0gcy5yc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3RyaXAoKQorCitAYmVuY2goJyJcXG5IZWxsbyEiLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9zdHJpcF9sZWZ0KFNUUik6CisgICAgcyA9IFNUUigiXG5IZWxsbyEiKQorICAgIHNfc3RyaXAgPSBzLnN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfc3RyaXAoKQorCitAYmVuY2goJyJcXG5IZWxsbyFcXG4iLnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9zdHJpcF9ib3RoKFNUUik6CisgICAgcyA9IFNUUigiXG5IZWxsbyFcbiIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIlxcbkhlbGxvISIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgbmV3bGluZScsIDEwMDApCitkZWYgdGVybWluYWxfbmV3bGluZV9sc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJcbkhlbGxvISIpCisgICAgc19sc3RyaXAgPSBzLmxzdHJpcAorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX2xzdHJpcCgpCisKK0BiZW5jaCgncz0iSGVsbG8hXFxuIjsgc1s6LTFdIGlmIHNbLTFdPT0iXFxuIiBlbHNlIHMnLAorICAgICAgICdzdHJpcCB0ZXJtaW5hbCBuZXdsaW5lJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9uZXdsaW5lX2lmX2Vsc2UoU1RSKToKKyAgICBzID0gU1RSKCJIZWxsbyFcbiIpCisgICAgTkwgPSBTVFIoIlxuIikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc1s6LTFdIGlmIChzWy0xXSA9PSBOTCkgZWxzZSBzCisKKworIyBTdHJpcCBtdWx0aXBsZSBzcGFjZXMgb3IgdGFicworCitAYmVuY2goJyJIZWxsb1xcdCAgIFxcdCIuc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBzcGFjZXMgYW5kIHRhYnMnLCAxMDAwKQorZGVmIHRlcm1pbmFsX3NwYWNlX3N0cmlwKFNUUik6CisgICAgcyA9IFNUUigiSGVsbG9cdCAgIFx0ISIpCisgICAgc19zdHJpcCA9IHMuc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19zdHJpcCgpCisKK0BiZW5jaCgnIkhlbGxvXFx0ICAgXFx0Ii5yc3RyaXAoKScsICdzdHJpcCB0ZXJtaW5hbCBzcGFjZXMgYW5kIHRhYnMnLCAxMDAwKQorZGVmIHRlcm1pbmFsX3NwYWNlX3JzdHJpcChTVFIpOgorICAgIHMgPSBTVFIoIkhlbGxvIVx0ICAgXHQiKQorICAgIHNfcnN0cmlwID0gcy5yc3RyaXAKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yc3RyaXAoKQorCitAYmVuY2goJyJcXHQgICBcXHRIZWxsbyIucnN0cmlwKCknLCAnc3RyaXAgdGVybWluYWwgc3BhY2VzIGFuZCB0YWJzJywgMTAwMCkKK2RlZiB0ZXJtaW5hbF9zcGFjZV9sc3RyaXAoU1RSKToKKyAgICBzID0gU1RSKCJcdCAgIFx0SGVsbG8hIikKKyAgICBzX2xzdHJpcCA9IHMubHN0cmlwCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbHN0cmlwKCkKKworCisjIyMjIHJlcGxhY2UKK0BiZW5jaCgnIlRoaXMgaXMgYSB0ZXN0Ii5yZXBsYWNlKCIgIiwgIlxcdCIpJywgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlcicsCisgICAgICAgMTAwMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoU1RSKToKKyAgICBzID0gU1RSKCJUaGlzIGlzIGEgdGVzdCEiKQorICAgIGZyb21fc3RyID0gU1RSKCIgIikKKyAgICB0b19zdHIgPSBTVFIoIlx0IikKKyAgICBzX3JlcGxhY2UgPSBzLnJlcGxhY2UKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKK0B1c2VzX3JlCitAYmVuY2goJ3JlLnN1YigiICIsICJcXHQiLCAiVGhpcyBpcyBhIHRlc3QiJywgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlcicsCisgICAgICAgMTAwMCkKK2RlZiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfcmUoU1RSKToKKyAgICBzID0gU1RSKCJUaGlzIGlzIGEgdGVzdCEiKQorICAgIHBhdCA9IHJlLmNvbXBpbGUoU1RSKCIgIikpCisgICAgdG9fc3RyID0gU1RSKCJcdCIpCisgICAgcGF0X3N1YiA9IHBhdC5zdWIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcGF0X3N1Yih0b19zdHIsIHMpCisKK0BiZW5jaCgnIi4uLnRleHQud2l0aC4yMDAwLmxpbmVzLi4ucmVwbGFjZSgiXFxuIiwgIiAiKScsCisgICAgICAgJ3JlcGxhY2Ugc2luZ2xlIGNoYXJhY3RlciwgYmlnIHN0cmluZycsIDEwKQorZGVmIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9iaWcoU1RSKToKKyAgICBzID0gX2dldF8yMDAwX2xpbmVzKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiXG4iKQorICAgIHRvX3N0ciA9IFNUUigiICIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworQHVzZXNfcmUKK0BiZW5jaCgncmUuc3ViKCJcXG4iLCAiICIsICIuLi50ZXh0LndpdGguMjAwMC5saW5lcy4uLiIpJywKKyAgICAgICAncmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyLCBiaWcgc3RyaW5nJywgMTApCitkZWYgcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2JpZ19yZShTVFIpOgorICAgIHMgPSBfZ2V0XzIwMDBfbGluZXMoU1RSKQorICAgIHBhdCA9IHJlLmNvbXBpbGUoU1RSKCJcbiIpKQorICAgIHRvX3N0ciA9IFNUUigiICIpCisgICAgcGF0X3N1YiA9IHBhdC5zdWIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTA6CisgICAgICAgIHBhdF9zdWIodG9fc3RyLCBzKQorCisKK0BiZW5jaCgnZG5hLnJlcGxhY2UoIkFUQyIsICJBVFQiKScsCisgICAgICAgJ3JlcGxhY2UgbXVsdGlwbGUgY2hhcmFjdGVycywgZG5hJywgMTApCitkZWYgcmVwbGFjZV9tdWx0aXBsZV9jaGFyYWN0ZXJzX2RuYShTVFIpOgorICAgIHNlcSA9IF9nZXRfZG5hKFNUUikKKyAgICBmcm9tX3N0ciA9IFNUUigiQVRDIikKKyAgICB0b19zdHIgPSBTVFIoIkFUVCIpCisgICAgc2VxX3JlcGxhY2UgPSBzZXEucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc2VxX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworIyBUaGlzIGluY3JlYXNlcyB0aGUgY2hhcmFjdGVyIGNvdW50CitAYmVuY2goJyIuLi50ZXh0LndpdGguMjAwMC5uZXdsaW5lcy4uLnJlcGxhY2UoIlxcbiIsICJcXHJcXG4iKScsCisgICAgICAgJ3JlcGxhY2UgYW5kIGV4cGFuZCBtdWx0aXBsZSBjaGFyYWN0ZXJzLCBiaWcgc3RyaW5nJywgMTApCitkZWYgcmVwbGFjZV9tdWx0aXBsZV9jaGFyYWN0ZXJfYmlnKFNUUik6CisgICAgcyA9IF9nZXRfMjAwMF9saW5lcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIlxuIikKKyAgICB0b19zdHIgPSBTVFIoIlxyXG4iKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIpCisKKworIyBUaGlzIGRlY3JlYXNlcyB0aGUgY2hhcmFjdGVyIGNvdW50CitAYmVuY2goJyJXaGVuIHNoYWxsIHdlIHRocmVlIG1lZXQgYWdhaW4/Ii5yZXBsYWNlKCJlZSIsICIiKScsCisgICAgICAgJ3JlcGxhY2UvcmVtb3ZlIG11bHRpcGxlIGNoYXJhY3RlcnMnLCAxMDAwKQorZGVmIHJlcGxhY2VfbXVsdGlwbGVfY2hhcmFjdGVyX3JlbW92ZShTVFIpOgorICAgIHMgPSBTVFIoIldoZW4gc2hhbGwgd2UgdGhyZWUgbWVldCBhZ2Fpbj8iKQorICAgIGZyb21fc3RyID0gU1RSKCJlZSIpCisgICAgdG9fc3RyID0gU1RSKCIiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0cikKKworCitiaWdfcyA9ICJBIiArICgiWiIqMTI4KjEwMjQpCitiaWdfc19ieXRlcyA9IGJ5dGVzX2Zyb21fc3RyKGJpZ19zKQorYmlnX3NfdW5pY29kZSA9IHVuaWNvZGVfZnJvbV9zdHIoYmlnX3MpCitkZWYgX2dldF9iaWdfcyhTVFIpOgorICAgIGlmIFNUUiBpcyBVTklDT0RFOiByZXR1cm4gYmlnX3NfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzogcmV0dXJuIGJpZ19zX2J5dGVzCisgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IKKworIyBUaGUgb2xkZXIgcmVwbGFjZSBpbXBsZW1lbnRhdGlvbiBjb3VudGVkIGFsbCBtYXRjaGVzIGluCisjIHRoZSBzdHJpbmcgZXZlbiB3aGVuIGl0IG9ubHkgbmVlZWQgdG8gbWFrZSBvbmUgcmVwbGFjZW1lbnQuCitAYmVuY2goJygiQSIgKyAoIloiKjEyOCoxMDI0KSkucmVwbGFjZSgiQSIsICJCQiIsIDEpJywKKyAgICAgICAncXVpY2sgcmVwbGFjZSBzaW5nbGUgY2hhcmFjdGVyIG1hdGNoJywgMTApCitkZWYgcXVpY2tfcmVwbGFjZV9zaW5nbGVfbWF0Y2goU1RSKToKKyAgICBzID0gX2dldF9iaWdfcyhTVFIpCisgICAgZnJvbV9zdHIgPSBTVFIoIkEiKQorICAgIHRvX3N0ciA9IFNUUigiQkIiKQorICAgIHNfcmVwbGFjZSA9IHMucmVwbGFjZQorICAgIGZvciB4IGluIF9SQU5HRV8xMDoKKyAgICAgICAgc19yZXBsYWNlKGZyb21fc3RyLCB0b19zdHIsIDEpCisKK0BiZW5jaCgnKCJBIiArICgiWiIqMTI4KjEwMjQpKS5yZXBsYWNlKCJBWloiLCAiQkJaWiIsIDEpJywKKyAgICAgICAncXVpY2sgcmVwbGFjZSBtdWx0aXBsZSBjaGFyYWN0ZXIgbWF0Y2gnLCAxMCkKK2RlZiBxdWlja19yZXBsYWNlX211bHRpcGxlX21hdGNoKFNUUik6CisgICAgcyA9IF9nZXRfYmlnX3MoU1RSKQorICAgIGZyb21fc3RyID0gU1RSKCJBWloiKQorICAgIHRvX3N0ciA9IFNUUigiQkJaWiIpCisgICAgc19yZXBsYWNlID0gcy5yZXBsYWNlCisgICAgZm9yIHggaW4gX1JBTkdFXzEwOgorICAgICAgICBzX3JlcGxhY2UoZnJvbV9zdHIsIHRvX3N0ciwgMSkKKworCisjIyMjCisKKyMgQ0NQIGRvZXMgYSBsb3Qgb2YgdGhpcywgZm9yIGludGVybmF0aW9uYWxpc2F0aW9uIG9mIGluZ2FtZSBtZXNzYWdlcy4KK19mb3JtYXQgPSAiVGhlICUodGhpbmcpcyBpcyAlKHBsYWNlKXMgdGhlICUobG9jYXRpb24pcy4iCitfZm9ybWF0X2RpY3QgPSB7ICJ0aGluZyI6IlRISU5HIiwgInBsYWNlIjoiUExBQ0UiLCAibG9jYXRpb24iOiJMT0NBVElPTiIsIH0KK19mb3JtYXRfYnl0ZXMgPSBieXRlc19mcm9tX3N0cihfZm9ybWF0KQorX2Zvcm1hdF91bmljb2RlID0gdW5pY29kZV9mcm9tX3N0cihfZm9ybWF0KQorX2Zvcm1hdF9kaWN0X2J5dGVzID0gZGljdCgoYnl0ZXNfZnJvbV9zdHIoayksIGJ5dGVzX2Zyb21fc3RyKHYpKSBmb3IgKGssdikgaW4gX2Zvcm1hdF9kaWN0Lml0ZW1zKCkpCitfZm9ybWF0X2RpY3RfdW5pY29kZSA9IGRpY3QoKHVuaWNvZGVfZnJvbV9zdHIoayksIHVuaWNvZGVfZnJvbV9zdHIodikpIGZvciAoayx2KSBpbiBfZm9ybWF0X2RpY3QuaXRlbXMoKSkKKworZGVmIF9nZXRfZm9ybWF0KFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfZm9ybWF0X3VuaWNvZGUKKyAgICBpZiBTVFIgaXMgQllURVM6CisgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKToKKyAgICAgICAgICAgIHJhaXNlIFVuc3VwcG9ydGVkVHlwZQorICAgICAgICByZXR1cm4gX2Zvcm1hdF9ieXRlcworICAgIHJhaXNlIEFzc2VydGlvbkVycm9yCisKK2RlZiBfZ2V0X2Zvcm1hdF9kaWN0KFNUUik6CisgICAgaWYgU1RSIGlzIFVOSUNPREU6CisgICAgICAgIHJldHVybiBfZm9ybWF0X2RpY3RfdW5pY29kZQorICAgIGlmIFNUUiBpcyBCWVRFUzoKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywpOgorICAgICAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRUeXBlCisgICAgICAgIHJldHVybiBfZm9ybWF0X2RpY3RfYnl0ZXMKKyAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorCisjIEZvcm1hdHRpbmcuCitAYmVuY2goJyJUaGUgJShrMSlzIGlzICUoazIpcyB0aGUgJShrMylzLiIleyJrMSI6IngiLCJrMiI6InkiLCJrMyI6InoiLH0nLAorICAgICAgICdmb3JtYXR0aW5nIGEgc3RyaW5nIHR5cGUgd2l0aCBhIGRpY3QnLCAxMDAwKQorZGVmIGZvcm1hdF93aXRoX2RpY3QoU1RSKToKKyAgICBzID0gX2dldF9mb3JtYXQoU1RSKQorICAgIGQgPSBfZ2V0X2Zvcm1hdF9kaWN0KFNUUikKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgcyAlIGQKKworCisjIyMjIFVwcGVyLSBhbmQgbG93ZXItIGNhc2UgY29udmVyc2lvbgorCitAYmVuY2goJygiV2hlcmUgaW4gdGhlIHdvcmxkIGlzIENhcm1lbiBTYW4gRGVpZ28/IioxMCkubG93ZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSByYXJlIiwgMTAwMCkKK2RlZiBsb3dlcl9jb252ZXJzaW9uX3JhcmUoU1RSKToKKyAgICBzID0gU1RSKCJXaGVyZSBpbiB0aGUgd29ybGQgaXMgQ2FybWVuIFNhbiBEZWlnbz8iKjEwKQorICAgIHNfbG93ZXIgPSBzLmxvd2VyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfbG93ZXIoKQorCitAYmVuY2goJygiV0hFUkUgSU4gVEhFIFdPUkxEIElTIENBUk1FTiBTQU4gREVJR08/IioxMCkubG93ZXIoKScsCisgICAgICAgImNhc2UgY29udmVyc2lvbiAtLSBkZW5zZSIsIDEwMDApCitkZWYgbG93ZXJfY29udmVyc2lvbl9kZW5zZShTVFIpOgorICAgIHMgPSBTVFIoIldIRVJFIElOIFRIRSBXT1JMRCBJUyBDQVJNRU4gU0FOIERFSUdPPyIqMTApCisgICAgc19sb3dlciA9IHMubG93ZXIKKyAgICBmb3IgeCBpbiBfUkFOR0VfMTAwMDoKKyAgICAgICAgc19sb3dlcigpCisKKworQGJlbmNoKCcoIndIRVJFIElOIFRIRSBXT1JMRCBJUyBjQVJNRU4gc0FOIGRFSUdPPyIqMTApLnVwcGVyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gcmFyZSIsIDEwMDApCitkZWYgdXBwZXJfY29udmVyc2lvbl9yYXJlKFNUUik6CisgICAgcyA9IFNUUigiV2hlcmUgaW4gdGhlIHdvcmxkIGlzIENhcm1lbiBTYW4gRGVpZ28/IioxMCkKKyAgICBzX3VwcGVyID0gcy51cHBlcgorICAgIGZvciB4IGluIF9SQU5HRV8xMDAwOgorICAgICAgICBzX3VwcGVyKCkKKworQGJlbmNoKCcoIndoZXJlIGluIHRoZSB3b3JsZCBpcyBjYXJtZW4gc2FuIGRlaWdvPyIqMTApLnVwcGVyKCknLAorICAgICAgICJjYXNlIGNvbnZlcnNpb24gLS0gZGVuc2UiLCAxMDAwKQorZGVmIHVwcGVyX2NvbnZlcnNpb25fZGVuc2UoU1RSKToKKyAgICBzID0gU1RSKCJ3aGVyZSBpbiB0aGUgd29ybGQgaXMgY2FybWVuIHNhbiBkZWlnbz8iKjEwKQorICAgIHNfdXBwZXIgPSBzLnVwcGVyCisgICAgZm9yIHggaW4gX1JBTkdFXzEwMDA6CisgICAgICAgIHNfdXBwZXIoKQorCisKKyMgZW5kIG9mIGJlbmNobWFya3MKKworIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgQmVuY2hUaW1lcih0aW1laXQuVGltZXIpOgorICAgIGRlZiBiZXN0KHNlbGYsIHJlcGVhdD0xKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgorICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKKyAgICAgICAgICAgIHggPSBzZWxmLnRpbWVpdChudW1iZXIpCisgICAgICAgICAgICBpZiB4ID4gMC4wMjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICB0aW1lcyA9IFt4XQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxLCByZXBlYXQpOgorICAgICAgICAgICAgdGltZXMuYXBwZW5kKHNlbGYudGltZWl0KG51bWJlcikpCisgICAgICAgIHJldHVybiBtaW4odGltZXMpIC8gbnVtYmVyCisKK2RlZiBtYWluKCk6CisgICAgKG9wdGlvbnMsIHRlc3RfbmFtZXMpID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQorICAgIGlmIG9wdGlvbnMuYnl0ZXNfb25seSBhbmQgb3B0aW9ucy51bmljb2RlX29ubHk6CisgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQoIk9ubHkgb25lIG9mIC0tOC1iaXQgYW5kIC0tdW5pY29kZSBhcmUgYWxsb3dlZCIpCisKKyAgICBiZW5jaF9mdW5jdGlvbnMgPSBbXQorICAgIGZvciAoayx2KSBpbiBnbG9iYWxzKCkuaXRlbXMoKToKKyAgICAgICAgaWYgaGFzYXR0cih2LCAiaXNfYmVuY2giKToKKyAgICAgICAgICAgIGlmIHRlc3RfbmFtZXM6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gdGVzdF9uYW1lczoKKyAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSBpbiB2Lmdyb3VwOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIE5vdCBzZWxlY3RlZCwgaWdub3JlCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBvcHRpb25zLnNraXBfcmUgYW5kIGhhc2F0dHIodiwgInVzZXNfcmUiKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBiZW5jaF9mdW5jdGlvbnMuYXBwZW5kKCAodi5ncm91cCwgaywgdikgKQorICAgIGJlbmNoX2Z1bmN0aW9ucy5zb3J0KCkKKworICAgIHAoImJ5dGVzXHR1bmljb2RlIikKKyAgICBwKCIoaW4gbXMpXHQoaW4gbXMpXHQlXHRjb21tZW50IikKKworICAgIGJ5dGVzX3RvdGFsID0gdW5pX3RvdGFsID0gMC4wCisKKyAgICBmb3IgdGl0bGUsIGdyb3VwIGluIGl0ZXJ0b29scy5ncm91cGJ5KGJlbmNoX2Z1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3IuaXRlbWdldHRlcigwKSk6CisgICAgICAgICMgRmx1c2ggYnVmZmVyIGJlZm9yZSBlYWNoIGdyb3VwCisgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICBwKCI9IioxMCwgdGl0bGUpCisgICAgICAgIGZvciAoXywgaywgdikgaW4gZ3JvdXA6CisgICAgICAgICAgICBpZiBoYXNhdHRyKHYsICJpc19iZW5jaCIpOgorICAgICAgICAgICAgICAgIGJ5dGVzX3RpbWUgPSAwLjAKKyAgICAgICAgICAgICAgICBieXRlc190aW1lX3MgPSAiIC0gIgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcHRpb25zLnVuaWNvZGVfb25seToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZSA9IEJlbmNoVGltZXIoIl9fbWFpbl9fLiVzKF9fbWFpbl9fLkJZVEVTKSIgJSAoaywpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBfX21haW5fXyIpLmJlc3QoUkVQRUFUKQorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zID0gIiUuMmYiICUgKDEwMDAgKiBieXRlc190aW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdG90YWwgKz0gYnl0ZXNfdGltZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRUeXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zID0gIk4vQSIKKyAgICAgICAgICAgICAgICB1bmlfdGltZSA9IDAuMAorICAgICAgICAgICAgICAgIHVuaV90aW1lX3MgPSAiIC0gIgorICAgICAgICAgICAgICAgIGlmIG5vdCBvcHRpb25zLmJ5dGVzX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90aW1lID0gQmVuY2hUaW1lcigiX19tYWluX18uJXMoX19tYWluX18uVU5JQ09ERSkiICUgKGssKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IF9fbWFpbl9fIikuYmVzdChSRVBFQVQpCisgICAgICAgICAgICAgICAgICAgICAgICB1bmlfdGltZV9zID0gIiUuMmYiICUgKDEwMDAgKiB1bmlfdGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuaV90b3RhbCArPSB1bmlfdGltZQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVW5zdXBwb3J0ZWRUeXBlOgorICAgICAgICAgICAgICAgICAgICAgICAgdW5pX3RpbWVfcyA9ICJOL0EiCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBhdmVyYWdlID0gYnl0ZXNfdGltZS91bmlfdGltZQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVHlwZUVycm9yLCBaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICAgICAgICAgIGF2ZXJhZ2UgPSAwLjAKKyAgICAgICAgICAgICAgICBwKCIlc1x0JXNcdCUuMWZcdCVzICgqJWQpIiAlICgKKyAgICAgICAgICAgICAgICAgICAgYnl0ZXNfdGltZV9zLCB1bmlfdGltZV9zLCAxMDAuKmF2ZXJhZ2UsCisgICAgICAgICAgICAgICAgICAgIHYuY29tbWVudCwgdi5yZXBlYXRfY291bnQpKQorCisgICAgaWYgYnl0ZXNfdG90YWwgPT0gdW5pX3RvdGFsID09IDAuMDoKKyAgICAgICAgcCgiVGhhdCB3YXMgemlwcHkhIikKKyAgICBlbHNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYXRpbyA9IGJ5dGVzX3RvdGFsL3VuaV90b3RhbAorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICByYXRpbyA9IDAuMAorICAgICAgICBwKCIlLjJmXHQlLjJmXHQlLjFmXHQlcyIgJSAoCisgICAgICAgICAgICAxMDAwKmJ5dGVzX3RvdGFsLCAxMDAwKnVuaV90b3RhbCwgMTAwLipyYXRpbywKKyAgICAgICAgICAgICJUT1RBTCIpKQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5IGIvVG9vbHMvdW5pY29kZS9jb21wYXJlY29kZWNzLnB5CmluZGV4IDAxMzAzZGIuLjY1MjVkZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3VuaWNvZGUvY29tcGFyZWNvZGVjcy5weQorKysgYi9Ub29scy91bmljb2RlL2NvbXBhcmVjb2RlY3MucHkKQEAgLTE0LDcgKzE0LDcgQEAKICAgICBwcmludCgnQ29tcGFyaW5nIGVuY29kaW5nL2RlY29kaW5nIG9mICAgJXIgYW5kICAgJXInICUgKGVuY29kaW5nMSwgZW5jb2RpbmcyKSkKICAgICBtaXNtYXRjaCA9IDAKICAgICAjIENoZWNrIGVuY29kaW5nCi0gICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLm1heHVuaWNvZGUpOgorICAgIGZvciBpIGluIHJhbmdlKHN5cy5tYXh1bmljb2RlKzEpOgogICAgICAgICB1ID0gY2hyKGkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGMxID0gdS5lbmNvZGUoZW5jb2RpbmcxKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weSBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKaW5kZXggN2U3ZDZkMC4uZjVhMWFmMyAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQorKysgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CkBAIC0xMDIsNyArMTAyLDcgQEAKICAgICAgICAgICAgIGNvbW1lbnQgPSAnJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29tbWVudCA9IGNvbW1lbnRbMTpdLnN0cmlwKCkKLSAgICAgICAgaWYgZW5jIDwgMjU2OgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShlbmMsIHR1cGxlKSBhbmQgZW5jIDwgMjU2OgogICAgICAgICAgICAgaWYgZW5jIGluIHVubWFwcGVkOgogICAgICAgICAgICAgICAgIHVubWFwcGVkLnJlbW92ZShlbmMpCiAgICAgICAgICAgICBpZiBlbmMgPT0gdW5pOgpAQCAtMjAyLDExICsyMDIsMTAgQEAKICAgICAjIEFuYWx5emUgbWFwIGFuZCBjcmVhdGUgdGFibGUgZGljdAogICAgIG1hcHBpbmdzID0gc29ydGVkKG1hcC5pdGVtcygpKQogICAgIHRhYmxlID0ge30KLSAgICBtYXhrZXkgPSAwCisgICAgbWF4a2V5ID0gMjU1CiAgICAgaWYgJ0lERU5USVRZJyBpbiBtYXA6CiAgICAgICAgIGZvciBrZXkgaW4gcmFuZ2UoMjU2KToKICAgICAgICAgICAgIHRhYmxlW2tleV0gPSAoa2V5LCAnJykKLSAgICAgICAgbWF4a2V5ID0gMjU1CiAgICAgICAgIGRlbCBtYXBbJ0lERU5USVRZJ10KICAgICBmb3IgbWFwa2V5LCBtYXB2YWx1ZSBpbiBtYXBwaW5nczoKICAgICAgICAgbWFwY29tbWVudCA9ICcnCkBAIC0yMjQsNiArMjIzLDcgQEAKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICMgQ3JlYXRlIHRhYmxlIGNvZGUKKyAgICBtYXhjaGFyID0gMAogICAgIGZvciBrZXkgaW4gcmFuZ2UobWF4a2V5ICsgMSk6CiAgICAgICAgIGlmIGtleSBub3QgaW4gdGFibGU6CiAgICAgICAgICAgICBtYXB2YWx1ZSA9IE1JU1NJTkdfQ09ERQpAQCAtMjM4LDYgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbWFwY2hhciA9IGNocihtYXB2YWx1ZSkKKyAgICAgICAgbWF4Y2hhciA9IG1heChtYXhjaGFyLCBvcmQobWFwY2hhcikpCiAgICAgICAgIGlmIG1hcGNvbW1lbnQgYW5kIGNvbW1lbnRzOgogICAgICAgICAgICAgYXBwZW5kKCcgICAgJWEgXHQjICAlcyAtPiAlcycgJSAobWFwY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4cmVwcihrZXksIGtleV9wcmVjaXNpb24pLApAQCAtMjQ1LDYgKzI0Niw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhcHBlbmQoJyAgICAlYScgJSBtYXBjaGFyKQogCisgICAgaWYgbWF4Y2hhciA8IDI1NjoKKyAgICAgICAgYXBwZW5kKCcgICAgJWEgXHQjIyBXaWRlbiB0byBVQ1MyIGZvciBvcHRpbWl6YXRpb24nICUgVU5JX1VOREVGSU5FRCkKICAgICBhcHBlbmQoJyknKQogICAgIHJldHVybiBsCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKaW5kZXggZDUwMzE5MC4uZDgzY2Y2MyAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKKysrIGIvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkKQEAgLTIxLDE3ICsyMSwyMyBAQAogIyAyMDA0LTA1LTI5IHBlcmt5IGFkZCBlYXN0IGFzaWFuIHdpZHRoIGluZm9ybWF0aW9uCiAjIDIwMDYtMDMtMTAgbXZsICB1cGRhdGUgdG8gVW5pY29kZSA0LjE7IGFkZCBVQ0QgMy4yIGRlbHRhCiAjIDIwMDgtMDYtMTEgZ2IgICBhZGQgUFJJTlRBQkxFX01BU0sgZm9yIEF0c3VvIElzaGltb3RvJ3MgYXNjaWkoKSBwYXRjaAorIyAyMDExLTEwLTIxIGV6aW8gYWRkIHN1cHBvcnQgZm9yIG5hbWUgYWxpYXNlcyBhbmQgbmFtZWQgc2VxdWVuY2VzCisjIDIwMTItMDEgICAgYmVuamFtaW4gYWRkIGZ1bGwgY2FzZSBtYXBwaW5ncwogIwogIyB3cml0dGVuIGJ5IEZyZWRyaWsgTHVuZGggKGZyZWRyaWtAcHl0aG9ud2FyZS5jb20pCiAjCiAKLWltcG9ydCBzeXMsIG9zLCB6aXBmaWxlCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB6aXBmaWxlCisKK2Zyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAogCiBTQ1JJUFQgPSBzeXMuYXJndlswXQogVkVSU0lPTiA9ICIzLjIiCiAKICMgVGhlIFVuaWNvZGUgRGF0YWJhc2UKLVVOSURBVEFfVkVSU0lPTiA9ICI2LjAuMCIKK1VOSURBVEFfVkVSU0lPTiA9ICI2LjEuMCIKIFVOSUNPREVfREFUQSA9ICJVbmljb2RlRGF0YSVzLnR4dCIKIENPTVBPU0lUSU9OX0VYQ0xVU0lPTlMgPSAiQ29tcG9zaXRpb25FeGNsdXNpb25zJXMudHh0IgogRUFTVEFTSUFOX1dJRFRIID0gIkVhc3RBc2lhbldpZHRoJXMudHh0IgpAQCAtMzksNiArNDUsMTkgQEAKIERFUklWRURfQ09SRV9QUk9QRVJUSUVTID0gIkRlcml2ZWRDb3JlUHJvcGVydGllcyVzLnR4dCIKIERFUklWRUROT1JNQUxJWkFUSU9OX1BST1BTID0gIkRlcml2ZWROb3JtYWxpemF0aW9uUHJvcHMlcy50eHQiCiBMSU5FX0JSRUFLID0gIkxpbmVCcmVhayVzLnR4dCIKK05BTUVfQUxJQVNFUyA9ICJOYW1lQWxpYXNlcyVzLnR4dCIKK05BTUVEX1NFUVVFTkNFUyA9ICJOYW1lZFNlcXVlbmNlcyVzLnR4dCIKK1NQRUNJQUxfQ0FTSU5HID0gIlNwZWNpYWxDYXNpbmclcy50eHQiCitDQVNFX0ZPTERJTkcgPSAiQ2FzZUZvbGRpbmclcy50eHQiCisKKyMgUHJpdmF0ZSBVc2UgQXJlYXMgLS0gaW4gcGxhbmVzIDEsIDE1LCAxNgorUFVBXzEgPSByYW5nZSgweEUwMDAsIDB4RjkwMCkKK1BVQV8xNSA9IHJhbmdlKDB4RjAwMDAsIDB4RkZGRkUpCitQVUFfMTYgPSByYW5nZSgweDEwMDAwMCwgMHgxMEZGRkUpCisKKyMgd2UgdXNlIHRoaXMgcmFuZ2VzIG9mIFBVQV8xNSB0byBzdG9yZSBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcworTkFNRV9BTElBU0VTX1NUQVJUID0gMHhGMDAwMAorTkFNRURfU0VRVUVOQ0VTX1NUQVJUID0gMHhGMDIwMAogCiBvbGRfdmVyc2lvbnMgPSBbIjMuMi4wIl0KIApAQCAtNjcsMTMgKzg2LDE1IEBACiBYSURfU1RBUlRfTUFTSyA9IDB4MTAwCiBYSURfQ09OVElOVUVfTUFTSyA9IDB4MjAwCiBQUklOVEFCTEVfTUFTSyA9IDB4NDAwCi1OT0RFTFRBX01BU0sgPSAweDgwMAotTlVNRVJJQ19NQVNLID0gMHgxMDAwCitOVU1FUklDX01BU0sgPSAweDgwMAorQ0FTRV9JR05PUkFCTEVfTUFTSyA9IDB4MTAwMAorQ0FTRURfTUFTSyA9IDB4MjAwMAorRVhURU5ERURfQ0FTRV9NQVNLID0gMHg0MDAwCiAKICMgdGhlc2UgcmFuZ2VzIG5lZWQgdG8gbWF0Y2ggdW5pY29kZWRhdGEuYzppc191bmlmaWVkX2lkZW9ncmFwaAogY2prX3JhbmdlcyA9IFsKICAgICAoJzM0MDAnLCAnNERCNScpLAotICAgICgnNEUwMCcsICc5RkNCJyksCisgICAgKCc0RTAwJywgJzlGQ0MnKSwKICAgICAoJzIwMDAwJywgJzJBNkQ2JyksCiAgICAgKCcyQTcwMCcsICcyQjczNCcpLAogICAgICgnMkI3NDAnLCAnMkI4MUQnKQpAQCAtMzY3LDYgKzM4OCw3IEBACiAgICAgbnVtZXJpYyA9IHt9CiAgICAgc3BhY2VzID0gW10KICAgICBsaW5lYnJlYWtzID0gW10KKyAgICBleHRyYV9jYXNpbmcgPSBbXQogCiAgICAgZm9yIGNoYXIgaW4gdW5pY29kZS5jaGFyczoKICAgICAgICAgcmVjb3JkID0gdW5pY29kZS50YWJsZVtjaGFyXQpAQCAtMzc5LDcgKzQwMSw3IEBACiAgICAgICAgICAgICBkZWx0YSA9IFRydWUKICAgICAgICAgICAgIGlmIGNhdGVnb3J5IGluIFsiTG0iLCAiTHQiLCAiTHUiLCAiTGwiLCAiTG8iXToKICAgICAgICAgICAgICAgICBmbGFncyB8PSBBTFBIQV9NQVNLCi0gICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiTGwiOgorICAgICAgICAgICAgaWYgIkxvd2VyY2FzZSIgaW4gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBMT1dFUl9NQVNLCiAgICAgICAgICAgICBpZiAnTGluZV9CcmVhaycgaW4gcHJvcGVydGllcyBvciBiaWRpcmVjdGlvbmFsID09ICJCIjoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBMSU5FQlJFQUtfTUFTSwpAQCAtMzg5LDcgKzQxMSw3IEBACiAgICAgICAgICAgICAgICAgc3BhY2VzLmFwcGVuZChjaGFyKQogICAgICAgICAgICAgaWYgY2F0ZWdvcnkgPT0gIkx0IjoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBUSVRMRV9NQVNLCi0gICAgICAgICAgICBpZiBjYXRlZ29yeSA9PSAiTHUiOgorICAgICAgICAgICAgaWYgIlVwcGVyY2FzZSIgaW4gcHJvcGVydGllczoKICAgICAgICAgICAgICAgICBmbGFncyB8PSBVUFBFUl9NQVNLCiAgICAgICAgICAgICBpZiBjaGFyID09IG9yZCgiICIpIG9yIGNhdGVnb3J5WzBdIG5vdCBpbiAoIkMiLCAiWiIpOgogICAgICAgICAgICAgICAgIGZsYWdzIHw9IFBSSU5UQUJMRV9NQVNLCkBAIC0zOTcsNyArNDE5LDEyIEBACiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gWElEX1NUQVJUX01BU0sKICAgICAgICAgICAgIGlmICJYSURfQ29udGludWUiIGluIHByb3BlcnRpZXM6CiAgICAgICAgICAgICAgICAgZmxhZ3MgfD0gWElEX0NPTlRJTlVFX01BU0sKLSAgICAgICAgICAgICMgdXNlIGRlbHRhIHByZWRpY3RvciBmb3IgdXBwZXIvbG93ZXIvdGl0bGUgaWYgaXQgZml0cworICAgICAgICAgICAgaWYgIkNhc2VkIiBpbiBwcm9wZXJ0aWVzOgorICAgICAgICAgICAgICAgIGZsYWdzIHw9IENBU0VEX01BU0sKKyAgICAgICAgICAgIGlmICJDYXNlX0lnbm9yYWJsZSIgaW4gcHJvcGVydGllczoKKyAgICAgICAgICAgICAgICBmbGFncyB8PSBDQVNFX0lHTk9SQUJMRV9NQVNLCisgICAgICAgICAgICBzYyA9IHVuaWNvZGUuc3BlY2lhbF9jYXNpbmcuZ2V0KGNoYXIpCisgICAgICAgICAgICBjZiA9IHVuaWNvZGUuY2FzZV9mb2xkaW5nLmdldChjaGFyLCBbY2hhcl0pCiAgICAgICAgICAgICBpZiByZWNvcmRbMTJdOgogICAgICAgICAgICAgICAgIHVwcGVyID0gaW50KHJlY29yZFsxMl0sIDE2KQogICAgICAgICAgICAgZWxzZToKQEAgLTQwOSwyMyArNDM2LDM5IEBACiAgICAgICAgICAgICBpZiByZWNvcmRbMTRdOgogICAgICAgICAgICAgICAgIHRpdGxlID0gaW50KHJlY29yZFsxNF0sIDE2KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFVDRC5odG1sIHNheXMgdGhhdCBhIG1pc3NpbmcgdGl0bGUgY2hhciBtZWFucyB0aGF0Ci0gICAgICAgICAgICAgICAgIyBpdCBkZWZhdWx0cyB0byB0aGUgdXBwZXJjYXNlIGNoYXJhY3Rlciwgbm90IHRvIHRoZQotICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIGl0c2VsZi4gQXBwYXJlbnRseSwgaW4gdGhlIGN1cnJlbnQgVUNEICg1LngpCi0gICAgICAgICAgICAgICAgIyB0aGlzIGZlYXR1cmUgaXMgbmV2ZXIgdXNlZAogICAgICAgICAgICAgICAgIHRpdGxlID0gdXBwZXIKLSAgICAgICAgICAgIHVwcGVyX2QgPSB1cHBlciAtIGNoYXIKLSAgICAgICAgICAgIGxvd2VyX2QgPSBsb3dlciAtIGNoYXIKLSAgICAgICAgICAgIHRpdGxlX2QgPSB0aXRsZSAtIGNoYXIKLSAgICAgICAgICAgIGlmIC0zMjc2OCA8PSB1cHBlcl9kIDw9IDMyNzY3IGFuZCBcCi0gICAgICAgICAgICAgICAtMzI3NjggPD0gbG93ZXJfZCA8PSAzMjc2NyBhbmQgXAotICAgICAgICAgICAgICAgLTMyNzY4IDw9IHRpdGxlX2QgPD0gMzI3Njc6Ci0gICAgICAgICAgICAgICAgIyB1c2UgZGVsdGFzCi0gICAgICAgICAgICAgICAgdXBwZXIgPSB1cHBlcl9kICYgMHhmZmZmCi0gICAgICAgICAgICAgICAgbG93ZXIgPSBsb3dlcl9kICYgMHhmZmZmCi0gICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZV9kICYgMHhmZmZmCisgICAgICAgICAgICBpZiBzYyBpcyBOb25lIGFuZCBjZiAhPSBbbG93ZXJdOgorICAgICAgICAgICAgICAgIHNjID0gKFtsb3dlcl0sIFt0aXRsZV0sIFt1cHBlcl0pCisgICAgICAgICAgICBpZiBzYyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGlmIHVwcGVyID09IGxvd2VyID09IHRpdGxlOgorICAgICAgICAgICAgICAgICAgICB1cHBlciA9IGxvd2VyID0gdGl0bGUgPSAwCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdXBwZXIgPSB1cHBlciAtIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgbG93ZXIgPSBsb3dlciAtIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZSAtIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IChhYnModXBwZXIpIDw9IDIxNDc0ODM2NDcgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJzKGxvd2VyKSA8PSAyMTQ3NDgzNjQ3IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicyh0aXRsZSkgPD0gMjE0NzQ4MzY0NykKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmxhZ3MgfD0gTk9ERUxUQV9NQVNLCisgICAgICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgZWl0aGVyIHdoZW4gc29tZSBjaGFyYWN0ZXIgbWFwcyB0byBtb3JlIHRoYW4gb25lCisgICAgICAgICAgICAgICAgIyBjaGFyYWN0ZXIgaW4gdXBwZXJjYXNlLCBsb3dlcmNhc2UsIG9yIHRpdGxlY2FzZSBvciB0aGUKKyAgICAgICAgICAgICAgICAjIGNhc2Vmb2xkZWQgdmVyc2lvbiBvZiB0aGUgY2hhcmFjdGVyIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICMgbG93ZXJjYXNlLiBUaGUgZXh0cmEgY2hhcmFjdGVycyBhcmUgc3RvcmVkIGluIGEgZGlmZmVyZW50CisgICAgICAgICAgICAgICAgIyBhcnJheS4KKyAgICAgICAgICAgICAgICBmbGFncyB8PSBFWFRFTkRFRF9DQVNFX01BU0sKKyAgICAgICAgICAgICAgICBsb3dlciA9IGxlbihleHRyYV9jYXNpbmcpIHwgKGxlbihzY1swXSkgPDwgMjQpCisgICAgICAgICAgICAgICAgZXh0cmFfY2FzaW5nLmV4dGVuZChzY1swXSkKKyAgICAgICAgICAgICAgICBpZiBjZiAhPSBzY1swXToKKyAgICAgICAgICAgICAgICAgICAgbG93ZXIgfD0gbGVuKGNmKSA8PCAyMAorICAgICAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKGNmKQorICAgICAgICAgICAgICAgIHVwcGVyID0gbGVuKGV4dHJhX2Nhc2luZykgfCAobGVuKHNjWzJdKSA8PCAyNCkKKyAgICAgICAgICAgICAgICBleHRyYV9jYXNpbmcuZXh0ZW5kKHNjWzJdKQorICAgICAgICAgICAgICAgICMgVGl0bGUgaXMgcHJvYmFibHkgZXF1YWwgdG8gdXBwZXIuCisgICAgICAgICAgICAgICAgaWYgc2NbMV0gPT0gc2NbMl06CisgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gdXBwZXIKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IGxlbihleHRyYV9jYXNpbmcpIHwgKGxlbihzY1sxXSkgPDwgMjQpCisgICAgICAgICAgICAgICAgICAgIGV4dHJhX2Nhc2luZy5leHRlbmQoc2NbMV0pCiAgICAgICAgICAgICAjIGRlY2ltYWwgZGlnaXQsIGludGVnZXIgZGlnaXQKICAgICAgICAgICAgIGRlY2ltYWwgPSAwCiAgICAgICAgICAgICBpZiByZWNvcmRbNl06CkBAIC00NTIsNiArNDk1LDcgQEAKICAgICBwcmludChzdW0obWFwKGxlbiwgbnVtZXJpYy52YWx1ZXMoKSkpLCAibnVtZXJpYyBjb2RlIHBvaW50cyIpCiAgICAgcHJpbnQobGVuKHNwYWNlcyksICJ3aGl0ZXNwYWNlIGNvZGUgcG9pbnRzIikKICAgICBwcmludChsZW4obGluZWJyZWFrcyksICJsaW5lYnJlYWsgY29kZSBwb2ludHMiKQorICAgIHByaW50KGxlbihleHRyYV9jYXNpbmcpLCAiZXh0ZW5kZWQgY2FzZSBhcnJheSIpCiAKICAgICBwcmludCgiLS0tIFdyaXRpbmciLCBGSUxFLCAiLi4uIikKIApAQCAtNDY1LDYgKzUwOSwxNCBAQAogICAgIHByaW50KCJ9OyIsIGZpbGU9ZnApCiAgICAgcHJpbnQoZmlsZT1mcCkKIAorICAgIHByaW50KCIvKiBleHRlbmRlZCBjYXNlIG1hcHBpbmdzICovIiwgZmlsZT1mcCkKKyAgICBwcmludChmaWxlPWZwKQorICAgIHByaW50KCJjb25zdCBQeV9VQ1M0IF9QeVVuaWNvZGVfRXh0ZW5kZWRDYXNlW10gPSB7IiwgZmlsZT1mcCkKKyAgICBmb3IgYyBpbiBleHRyYV9jYXNpbmc6CisgICAgICAgIHByaW50KCIgICAgJWQsIiAlIGMsIGZpbGU9ZnApCisgICAgcHJpbnQoIn07IiwgZmlsZT1mcCkKKyAgICBwcmludChmaWxlPWZwKQorCiAgICAgIyBzcGxpdCBkZWNvbXBvc2l0aW9uIGluZGV4IHRhYmxlCiAgICAgaW5kZXgxLCBpbmRleDIsIHNoaWZ0ID0gc3BsaXRiaW5zKGluZGV4LCB0cmFjZSkKIApAQCAtNjkyLDYgKzc0NCwzOSBAQAogICAgIHByaW50KCIvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8iLCBmaWxlPWZwKQogICAgIGNvZGVoYXNoLmR1bXAoZnAsIHRyYWNlKQogCisgICAgcHJpbnQoZmlsZT1mcCkKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX3N0YXJ0ID0gJSN4OycgJQorICAgICAgICAgIE5BTUVfQUxJQVNFU19TVEFSVCwgZmlsZT1mcCkKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBhbGlhc2VzX2VuZCA9ICUjeDsnICUKKyAgICAgICAgICAoTkFNRV9BTElBU0VTX1NUQVJUICsgbGVuKHVuaWNvZGUuYWxpYXNlcykpLCBmaWxlPWZwKQorCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZV9hbGlhc2VzW10gPSB7JywgZmlsZT1mcCkKKyAgICBmb3IgbmFtZSwgY29kZXBvaW50IGluIHVuaWNvZGUuYWxpYXNlczoKKyAgICAgICAgcHJpbnQoJyAgICAweCUwNFgsJyAlIGNvZGVwb2ludCwgZmlsZT1mcCkKKyAgICBwcmludCgnfTsnLCBmaWxlPWZwKQorCisgICAgIyBJbiBVbmljb2RlIDYuMC4wLCB0aGUgc2VxdWVuY2VzIGNvbnRhaW4gYXQgbW9zdCA0IEJNUCBjaGFycywKKyAgICAjIHNvIHdlIGFyZSB1c2luZyBQeV9VQ1MyIHNlcVs0XS4gIFRoaXMgbmVlZHMgdG8gYmUgdXBkYXRlZCBpZiBsb25nZXIKKyAgICAjIHNlcXVlbmNlcyBvciBzZXF1ZW5jZXMgd2l0aCBub24tQk1QIGNoYXJzIGFyZSBhZGRlZC4KKyAgICAjIHVuaWNvZGVkYXRhX2xvb2t1cCBzaG91bGQgYmUgYWRhcHRlZCB0b28uCisgICAgcHJpbnQoZGVkZW50KCIiIgorICAgICAgICB0eXBlZGVmIHN0cnVjdCBOYW1lZFNlcXVlbmNlIHsKKyAgICAgICAgICAgIGludCBzZXFsZW47CisgICAgICAgICAgICBQeV9VQ1MyIHNlcVs0XTsKKyAgICAgICAgfSBuYW1lZF9zZXF1ZW5jZTsKKyAgICAgICAgIiIiKSwgZmlsZT1mcCkKKworICAgIHByaW50KCdzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG5hbWVkX3NlcXVlbmNlc19zdGFydCA9ICUjeDsnICUKKyAgICAgICAgICBOQU1FRF9TRVFVRU5DRVNfU1RBUlQsIGZpbGU9ZnApCisgICAgcHJpbnQoJ3N0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbmFtZWRfc2VxdWVuY2VzX2VuZCA9ICUjeDsnICUKKyAgICAgICAgICAoTkFNRURfU0VRVUVOQ0VTX1NUQVJUICsgbGVuKHVuaWNvZGUubmFtZWRfc2VxdWVuY2VzKSksIGZpbGU9ZnApCisKKyAgICBwcmludCgnc3RhdGljIGNvbnN0IG5hbWVkX3NlcXVlbmNlIG5hbWVkX3NlcXVlbmNlc1tdID0geycsIGZpbGU9ZnApCisgICAgZm9yIG5hbWUsIHNlcXVlbmNlIGluIHVuaWNvZGUubmFtZWRfc2VxdWVuY2VzOgorICAgICAgICBzZXFfc3RyID0gJywgJy5qb2luKCcweCUwNFgnICUgY3AgZm9yIGNwIGluIHNlcXVlbmNlKQorICAgICAgICBwcmludCgnICAgIHslZCwgeyVzfX0sJyAlIChsZW4oc2VxdWVuY2UpLCBzZXFfc3RyKSwgZmlsZT1mcCkKKyAgICBwcmludCgnfTsnLCBmaWxlPWZwKQorCiAgICAgZnAuY2xvc2UoKQogCiAKQEAgLTcyNiw3ICs4MTEsMTEgQEAKICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGxlbihvbGQudGFibGVbaV0pKToKICAgICAgICAgICAgICAgICBpZiBvbGQudGFibGVbaV1ba10gIT0gbmV3LnRhYmxlW2ldW2tdOgogICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG9sZC50YWJsZVtpXVtrXQotICAgICAgICAgICAgICAgICAgICBpZiBrID09IDI6CisgICAgICAgICAgICAgICAgICAgIGlmIGsgPT0gMSBhbmQgaSBpbiBQVUFfMTU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBuYW1lIGlzIG5vdCBzZXQgaW4gdGhlIG9sZC50YWJsZSwgYnV0IGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBuZXcudGFibGUgd2UgYXJlIHVzaW5nIGl0IGZvciBhbGlhc2VzIGFuZCBuYW1lZCBzZXEKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWx1ZSA9PSAnJworICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgICNwcmludCAiQ0FURUdPUlkiLGhleChpKSwgb2xkLnRhYmxlW2ldW2tdLCBuZXcudGFibGVbaV1ba10KICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X2NoYW5nZXNbaV0gPSBDQVRFR09SWV9OQU1FUy5pbmRleCh2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgZWxpZiBrID09IDQ6CkBAIC04MTYsMTUgKzkwNSwxNSBAQAogICAgICAgICAgICAgICAgICBleHBhbmQ9MSwKICAgICAgICAgICAgICAgICAgY2prX2NoZWNrPVRydWUpOgogICAgICAgICBzZWxmLmNoYW5nZWQgPSBbXQotICAgICAgICBmaWxlID0gb3Blbl9kYXRhKFVOSUNPREVfREFUQSwgdmVyc2lvbikKICAgICAgICAgdGFibGUgPSBbTm9uZV0gKiAweDExMDAwMAotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgcyA9IGZpbGUucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkuc3BsaXQoIjsiKQotICAgICAgICAgICAgY2hhciA9IGludChzWzBdLCAxNikKLSAgICAgICAgICAgIHRhYmxlW2NoYXJdID0gcworICAgICAgICB3aXRoIG9wZW5fZGF0YShVTklDT0RFX0RBVEEsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIHMgPSBmaWxlLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICBpZiBub3QgczoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpLnNwbGl0KCI7IikKKyAgICAgICAgICAgICAgICBjaGFyID0gaW50KHNbMF0sIDE2KQorICAgICAgICAgICAgICAgIHRhYmxlW2NoYXJdID0gcwogCiAgICAgICAgIGNqa19yYW5nZXNfZm91bmQgPSBbXQogCkBAIC04NTUsMzIgKzk0NCw3OSBAQAogICAgICAgICBzZWxmLnRhYmxlID0gdGFibGUKICAgICAgICAgc2VsZi5jaGFycyA9IGxpc3QocmFuZ2UoMHgxMTAwMDApKSAjIHVuaWNvZGUgMy4yCiAKLSAgICAgICAgZmlsZSA9IG9wZW5fZGF0YShDT01QT1NJVElPTl9FWENMVVNJT05TLCB2ZXJzaW9uKQorICAgICAgICAjIGNoZWNrIGZvciBuYW1lIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcywgc2VlICMxMjc1MworICAgICAgICAjIGFsaWFzZXMgYW5kIG5hbWVkIHNlcXVlbmNlcyBhcmUgbm90IGluIDMuMi4wCisgICAgICAgIGlmIHZlcnNpb24gIT0gJzMuMi4wJzoKKyAgICAgICAgICAgIHNlbGYuYWxpYXNlcyA9IFtdCisgICAgICAgICAgICAjIHN0b3JlIGFsaWFzZXMgaW4gdGhlIFByaXZhdGUgVXNlIEFyZWEgMTUsIGluIHJhbmdlIFUrRjAwMDAuLlUrRjAwRkYsCisgICAgICAgICAgICAjIGluIG9yZGVyIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBjb21wcmVzc2lvbiBhbmQgbG9va3VwCisgICAgICAgICAgICAjIGFsZ29yaXRobXMgdXNlZCBmb3IgdGhlIG90aGVyIGNoYXJhY3RlcnMKKyAgICAgICAgICAgIHB1YV9pbmRleCA9IE5BTUVfQUxJQVNFU19TVEFSVAorICAgICAgICAgICAgd2l0aCBvcGVuX2RhdGEoTkFNRV9BTElBU0VTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHMgb3Igcy5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBjaGFyLCBuYW1lLCBhYmJyZXYgPSBzLnNwbGl0KCc7JykKKyAgICAgICAgICAgICAgICAgICAgY2hhciA9IGludChjaGFyLCAxNikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hbGlhc2VzLmFwcGVuZCgobmFtZSwgY2hhcikpCisgICAgICAgICAgICAgICAgICAgICMgYWxzbyBzdG9yZSB0aGUgbmFtZSBpbiB0aGUgUFVBIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50YWJsZVtwdWFfaW5kZXhdWzFdID0gbmFtZQorICAgICAgICAgICAgICAgICAgICBwdWFfaW5kZXggKz0gMQorICAgICAgICAgICAgYXNzZXJ0IHB1YV9pbmRleCAtIE5BTUVfQUxJQVNFU19TVEFSVCA9PSBsZW4oc2VsZi5hbGlhc2VzKQorCisgICAgICAgICAgICBzZWxmLm5hbWVkX3NlcXVlbmNlcyA9IFtdCisgICAgICAgICAgICAjIHN0b3JlIG5hbWVkIHNlcWVuY2VzIGluIHRoZSBQVUEgMSwgaW4gcmFuZ2UgVStGMDEwMC4uLAorICAgICAgICAgICAgIyBpbiBvcmRlciB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY29tcHJlc3Npb24gYW5kIGxvb2t1cAorICAgICAgICAgICAgIyBhbGdvcml0aG1zIHVzZWQgZm9yIHRoZSBvdGhlciBjaGFyYWN0ZXJzLgorCisgICAgICAgICAgICBhc3NlcnQgcHVhX2luZGV4IDwgTkFNRURfU0VRVUVOQ0VTX1NUQVJUCisgICAgICAgICAgICBwdWFfaW5kZXggPSBOQU1FRF9TRVFVRU5DRVNfU1RBUlQKKyAgICAgICAgICAgIHdpdGggb3Blbl9kYXRhKE5BTUVEX1NFUVVFTkNFUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzIG9yIHMuc3RhcnRzd2l0aCgnIycpOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwgY2hhcnMgPSBzLnNwbGl0KCc7JykKKyAgICAgICAgICAgICAgICAgICAgY2hhcnMgPSB0dXBsZShpbnQoY2hhciwgMTYpIGZvciBjaGFyIGluIGNoYXJzLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCB0aGUgc3RydWN0dXJlIGRlZmluZWQgaW4gbWFrZXVuaWNvZGVuYW1lIGlzIE9LCisgICAgICAgICAgICAgICAgICAgIGFzc2VydCAyIDw9IGxlbihjaGFycykgPD0gNCwgImNoYW5nZSB0aGUgUHlfVUNTMiBhcnJheSBzaXplIgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKGMgPD0gMHhGRkZGIGZvciBjIGluIGNoYXJzKSwgKCJ1c2UgUHlfVUNTNCBpbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAidGhlIE5hbWVkU2VxdWVuY2Ugc3RydWN0IGFuZCBpbiB1bmljb2RlZGF0YV9sb29rdXAiKQorICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWVkX3NlcXVlbmNlcy5hcHBlbmQoKG5hbWUsIGNoYXJzKSkKKyAgICAgICAgICAgICAgICAgICAgIyBhbHNvIHN0b3JlIHRoZXNlIGluIHRoZSBQVUEgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLnRhYmxlW3B1YV9pbmRleF1bMV0gPSBuYW1lCisgICAgICAgICAgICAgICAgICAgIHB1YV9pbmRleCArPSAxCisgICAgICAgICAgICBhc3NlcnQgcHVhX2luZGV4IC0gTkFNRURfU0VRVUVOQ0VTX1NUQVJUID09IGxlbihzZWxmLm5hbWVkX3NlcXVlbmNlcykKKwogICAgICAgICBzZWxmLmV4Y2x1c2lvbnMgPSB7fQotICAgICAgICBmb3IgcyBpbiBmaWxlOgotICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQotICAgICAgICAgICAgaWYgbm90IHM6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBjaGFyID0gaW50KHMuc3BsaXQoKVswXSwxNikKLSAgICAgICAgICAgIHNlbGYuZXhjbHVzaW9uc1tjaGFyXSA9IDEKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoQ09NUE9TSVRJT05fRVhDTFVTSU9OUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMuc3RyaXAoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIHNbMF0gPT0gJyMnOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGNoYXIgPSBpbnQocy5zcGxpdCgpWzBdLDE2KQorICAgICAgICAgICAgICAgIHNlbGYuZXhjbHVzaW9uc1tjaGFyXSA9IDEKIAogICAgICAgICB3aWR0aHMgPSBbTm9uZV0gKiAweDExMDAwMAotICAgICAgICBmb3IgcyBpbiBvcGVuX2RhdGEoRUFTVEFTSUFOX1dJRFRILCB2ZXJzaW9uKToKLSAgICAgICAgICAgIHMgPSBzLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBzWzBdID09ICcjJzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcyA9IHMuc3BsaXQoKVswXS5zcGxpdCgnOycpCi0gICAgICAgICAgICBpZiAnLi4nIGluIHNbMF06Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hhcnMgPSBbaW50KHNbMF0sIDE2KV0KLSAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgotICAgICAgICAgICAgICAgIHdpZHRoc1tjaGFyXSA9IHNbMV0KKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoRUFTVEFTSUFOX1dJRFRILCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBzID0gcy5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgc1swXSA9PSAnIyc6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgcyA9IHMuc3BsaXQoKVswXS5zcGxpdCgnOycpCisgICAgICAgICAgICAgICAgaWYgJy4uJyBpbiBzWzBdOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQoc1swXSwgMTYpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgorICAgICAgICAgICAgICAgICAgICB3aWR0aHNbY2hhcl0gPSBzWzFdCisKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV0uYXBwZW5kKHdpZHRoc1tpXSkKQEAgLTg4OCwzNiArMTAyNCwzOSBAQAogICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAweDExMDAwMCk6CiAgICAgICAgICAgICBpZiB0YWJsZVtpXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0YWJsZVtpXS5hcHBlbmQoc2V0KCkpCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShERVJJVkVEX0NPUkVfUFJPUEVSVElFUywgdmVyc2lvbik6Ci0gICAgICAgICAgICBzID0gcy5zcGxpdCgnIycsIDEpWzBdLnN0cmlwKCkKLSAgICAgICAgICAgIGlmIG5vdCBzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIHIsIHAgPSBzLnNwbGl0KCI7IikKLSAgICAgICAgICAgIHIgPSByLnN0cmlwKCkKLSAgICAgICAgICAgIHAgPSBwLnN0cmlwKCkKLSAgICAgICAgICAgIGlmICIuLiIgaW4gcjoKLSAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHIuc3BsaXQoJy4uJyldCi0gICAgICAgICAgICAgICAgY2hhcnMgPSBsaXN0KHJhbmdlKGZpcnN0LCBsYXN0KzEpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQociwgMTYpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gY2hhcnM6Ci0gICAgICAgICAgICAgICAgaWYgdGFibGVbY2hhcl06Ci0gICAgICAgICAgICAgICAgICAgICMgU29tZSBwcm9wZXJ0aWVzIChlLmcuIERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQpCi0gICAgICAgICAgICAgICAgICAgICMgYXBwbHkgdG8gdW5hc3NpZ25lZCBjb2RlIHBvaW50czsgaWdub3JlIHRoZW0KLSAgICAgICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZChwKQorICAgICAgICB3aXRoIG9wZW5fZGF0YShERVJJVkVEX0NPUkVfUFJPUEVSVElFUywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMuc3BsaXQoJyMnLCAxKVswXS5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IHM6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgZm9yIHMgaW4gb3Blbl9kYXRhKExJTkVfQlJFQUssIHZlcnNpb24pOgotICAgICAgICAgICAgcyA9IHMucGFydGl0aW9uKCcjJylbMF0KLSAgICAgICAgICAgIHMgPSBbaS5zdHJpcCgpIGZvciBpIGluIHMuc3BsaXQoJzsnKV0KLSAgICAgICAgICAgIGlmIGxlbihzKSA8IDIgb3Igc1sxXSBub3QgaW4gTUFOREFUT1JZX0xJTkVfQlJFQUtTOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgotICAgICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IGludChzWzBdLCAxNikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gcmFuZ2UoZmlyc3QsIGxhc3QrMSk6Ci0gICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZCgnTGluZV9CcmVhaycpCisgICAgICAgICAgICAgICAgciwgcCA9IHMuc3BsaXQoIjsiKQorICAgICAgICAgICAgICAgIHIgPSByLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBwID0gcC5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgIi4uIiBpbiByOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHIuc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgICAgIGNoYXJzID0gbGlzdChyYW5nZShmaXJzdCwgbGFzdCsxKSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBjaGFycyA9IFtpbnQociwgMTYpXQorICAgICAgICAgICAgICAgIGZvciBjaGFyIGluIGNoYXJzOgorICAgICAgICAgICAgICAgICAgICBpZiB0YWJsZVtjaGFyXToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgU29tZSBwcm9wZXJ0aWVzIChlLmcuIERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcGx5IHRvIHVuYXNzaWduZWQgY29kZSBwb2ludHM7IGlnbm9yZSB0aGVtCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVtjaGFyXVstMV0uYWRkKHApCisKKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoTElORV9CUkVBSywgdmVyc2lvbikgYXMgZmlsZToKKyAgICAgICAgICAgIGZvciBzIGluIGZpbGU6CisgICAgICAgICAgICAgICAgcyA9IHMucGFydGl0aW9uKCcjJylbMF0KKyAgICAgICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCisgICAgICAgICAgICAgICAgaWYgbGVuKHMpIDwgMiBvciBzWzFdIG5vdCBpbiBNQU5EQVRPUllfTElORV9CUkVBS1M6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgaWYgJy4uJyBub3QgaW4gc1swXToKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBsYXN0ID0gaW50KHNbMF0sIDE2KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpcnN0LCBsYXN0ID0gW2ludChjLCAxNikgZm9yIGMgaW4gc1swXS5zcGxpdCgnLi4nKV0KKyAgICAgICAgICAgICAgICBmb3IgY2hhciBpbiByYW5nZShmaXJzdCwgbGFzdCsxKToKKyAgICAgICAgICAgICAgICAgICAgdGFibGVbY2hhcl1bLTFdLmFkZCgnTGluZV9CcmVhaycpCiAKICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdGhlIHF1aWNrY2hlY2sgcHJvcGVydGllcwogICAgICAgICAjIEZvcm1hdDogTkY/X1FDOyBZKGVzKS9OKG8pL00oYXliZSkKQEAgLTkyOCwzMSArMTA2NywzMyBAQAogICAgICAgICAjIGZvciBvbGRlciB2ZXJzaW9ucywgYW5kIG5vIGRlbHRhIHJlY29yZHMgd2lsbCBiZSBjcmVhdGVkLgogICAgICAgICBxdWlja2NoZWNrcyA9IFswXSAqIDB4MTEwMDAwCiAgICAgICAgIHFjX29yZGVyID0gJ05GRF9RQyBORktEX1FDIE5GQ19RQyBORktDX1FDJy5zcGxpdCgpCi0gICAgICAgIGZvciBzIGluIG9wZW5fZGF0YShERVJJVkVETk9STUFMSVpBVElPTl9QUk9QUywgdmVyc2lvbik6Ci0gICAgICAgICAgICBpZiAnIycgaW4gczoKLSAgICAgICAgICAgICAgICBzID0gc1s6cy5pbmRleCgnIycpXQotICAgICAgICAgICAgcyA9IFtpLnN0cmlwKCkgZm9yIGkgaW4gcy5zcGxpdCgnOycpXQotICAgICAgICAgICAgaWYgbGVuKHMpIDwgMiBvciBzWzFdIG5vdCBpbiBxY19vcmRlcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcXVpY2tjaGVjayA9ICdNTicuaW5kZXgoc1syXSkgKyAxICMgTWF5YmUgb3IgTm8KLSAgICAgICAgICAgIHF1aWNrY2hlY2tfc2hpZnQgPSBxY19vcmRlci5pbmRleChzWzFdKSoyCi0gICAgICAgICAgICBxdWlja2NoZWNrIDw8PSBxdWlja2NoZWNrX3NoaWZ0Ci0gICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBzWzBdOgotICAgICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IGludChzWzBdLCAxNikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmlyc3QsIGxhc3QgPSBbaW50KGMsIDE2KSBmb3IgYyBpbiBzWzBdLnNwbGl0KCcuLicpXQotICAgICAgICAgICAgZm9yIGNoYXIgaW4gcmFuZ2UoZmlyc3QsIGxhc3QrMSk6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCAocXVpY2tjaGVja3NbY2hhcl0+PnF1aWNrY2hlY2tfc2hpZnQpJjMKLSAgICAgICAgICAgICAgICBxdWlja2NoZWNrc1tjaGFyXSB8PSBxdWlja2NoZWNrCisgICAgICAgIHdpdGggb3Blbl9kYXRhKERFUklWRUROT1JNQUxJWkFUSU9OX1BST1BTLCB2ZXJzaW9uKSBhcyBmaWxlOgorICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICBpZiAnIycgaW4gczoKKyAgICAgICAgICAgICAgICAgICAgcyA9IHNbOnMuaW5kZXgoJyMnKV0KKyAgICAgICAgICAgICAgICBzID0gW2kuc3RyaXAoKSBmb3IgaSBpbiBzLnNwbGl0KCc7JyldCisgICAgICAgICAgICAgICAgaWYgbGVuKHMpIDwgMiBvciBzWzFdIG5vdCBpbiBxY19vcmRlcjoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBxdWlja2NoZWNrID0gJ01OJy5pbmRleChzWzJdKSArIDEgIyBNYXliZSBvciBObworICAgICAgICAgICAgICAgIHF1aWNrY2hlY2tfc2hpZnQgPSBxY19vcmRlci5pbmRleChzWzFdKSoyCisgICAgICAgICAgICAgICAgcXVpY2tjaGVjayA8PD0gcXVpY2tjaGVja19zaGlmdAorICAgICAgICAgICAgICAgIGlmICcuLicgbm90IGluIHNbMF06CisgICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IGludChzWzBdLCAxNikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmaXJzdCwgbGFzdCA9IFtpbnQoYywgMTYpIGZvciBjIGluIHNbMF0uc3BsaXQoJy4uJyldCisgICAgICAgICAgICAgICAgZm9yIGNoYXIgaW4gcmFuZ2UoZmlyc3QsIGxhc3QrMSk6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBub3QgKHF1aWNrY2hlY2tzW2NoYXJdPj5xdWlja2NoZWNrX3NoaWZ0KSYzCisgICAgICAgICAgICAgICAgICAgIHF1aWNrY2hlY2tzW2NoYXJdIHw9IHF1aWNrY2hlY2sKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgMHgxMTAwMDApOgogICAgICAgICAgICAgaWYgdGFibGVbaV0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgdGFibGVbaV0uYXBwZW5kKHF1aWNrY2hlY2tzW2ldKQogCi0gICAgICAgIHppcCA9IHppcGZpbGUuWmlwRmlsZShvcGVuX2RhdGEoVU5JSEFOLCB2ZXJzaW9uKSkKLSAgICAgICAgaWYgdmVyc2lvbiA9PSAnMy4yLjAnOgotICAgICAgICAgICAgZGF0YSA9IHppcC5vcGVuKCdVbmloYW4tMy4yLjAudHh0JykucmVhZCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkYXRhID0gemlwLm9wZW4oJ1VuaWhhbl9OdW1lcmljVmFsdWVzLnR4dCcpLnJlYWQoKQorICAgICAgICB3aXRoIG9wZW5fZGF0YShVTklIQU4sIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICB6aXAgPSB6aXBmaWxlLlppcEZpbGUoZmlsZSkKKyAgICAgICAgICAgIGlmIHZlcnNpb24gPT0gJzMuMi4wJzoKKyAgICAgICAgICAgICAgICBkYXRhID0gemlwLm9wZW4oJ1VuaWhhbi0zLjIuMC50eHQnKS5yZWFkKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGF0YSA9IHppcC5vcGVuKCdVbmloYW5fTnVtZXJpY1ZhbHVlcy50eHQnKS5yZWFkKCkKICAgICAgICAgZm9yIGxpbmUgaW4gZGF0YS5kZWNvZGUoInV0Zi04Iikuc3BsaXRsaW5lcygpOgogICAgICAgICAgICAgaWYgbm90IGxpbmUuc3RhcnRzd2l0aCgnVSsnKToKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtOTY1LDYgKzExMDYsMzQgQEAKICAgICAgICAgICAgICMgUGF0Y2ggdGhlIG51bWVyaWMgZmllbGQKICAgICAgICAgICAgIGlmIHRhYmxlW2ldIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRhYmxlW2ldWzhdID0gdmFsdWUKKyAgICAgICAgc2MgPSBzZWxmLnNwZWNpYWxfY2FzaW5nID0ge30KKyAgICAgICAgd2l0aCBvcGVuX2RhdGEoU1BFQ0lBTF9DQVNJTkcsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICBmb3IgcyBpbiBmaWxlOgorICAgICAgICAgICAgICAgIHMgPSBzWzotMV0uc3BsaXQoJyMnLCAxKVswXQorICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGRhdGEgPSBzLnNwbGl0KCI7ICIpCisgICAgICAgICAgICAgICAgaWYgZGF0YVs0XToKKyAgICAgICAgICAgICAgICAgICAgIyBXZSBpZ25vcmUgYWxsIGNvbmRpdGlvbmFscyAoc2luY2UgdGhleSBkZXBlbmQgb24KKyAgICAgICAgICAgICAgICAgICAgIyBsYW5ndWFnZXMpIGV4Y2VwdCBmb3Igb25lLCB3aGljaCBpcyBoYXJkY29kZWQuIFNlZQorICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZV9jYXBpdGFsX3NpZ21hIGluIHVuaWNvZGVvYmplY3QuYy4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBjID0gaW50KGRhdGFbMF0sIDE2KQorICAgICAgICAgICAgICAgIGxvd2VyID0gW2ludChjaGFyLCAxNikgZm9yIGNoYXIgaW4gZGF0YVsxXS5zcGxpdCgpXQorICAgICAgICAgICAgICAgIHRpdGxlID0gW2ludChjaGFyLCAxNikgZm9yIGNoYXIgaW4gZGF0YVsyXS5zcGxpdCgpXQorICAgICAgICAgICAgICAgIHVwcGVyID0gW2ludChjaGFyLCAxNikgZm9yIGNoYXIgaW4gZGF0YVszXS5zcGxpdCgpXQorICAgICAgICAgICAgICAgIHNjW2NdID0gKGxvd2VyLCB0aXRsZSwgdXBwZXIpCisgICAgICAgIGNmID0gc2VsZi5jYXNlX2ZvbGRpbmcgPSB7fQorICAgICAgICBpZiB2ZXJzaW9uICE9ICczLjIuMCc6CisgICAgICAgICAgICB3aXRoIG9wZW5fZGF0YShDQVNFX0ZPTERJTkcsIHZlcnNpb24pIGFzIGZpbGU6CisgICAgICAgICAgICAgICAgZm9yIHMgaW4gZmlsZToKKyAgICAgICAgICAgICAgICAgICAgcyA9IHNbOi0xXS5zcGxpdCgnIycsIDEpWzBdCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IHMuc3BsaXQoIjsgIikKKyAgICAgICAgICAgICAgICAgICAgaWYgZGF0YVsxXSBpbiAiQ0YiOgorICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGludChkYXRhWzBdLCAxNikKKyAgICAgICAgICAgICAgICAgICAgICAgIGNmW2NdID0gW2ludChjaGFyLCAxNikgZm9yIGNoYXIgaW4gZGF0YVsyXS5zcGxpdCgpXQogCiAgICAgZGVmIHVzZWxhdGluMShzZWxmKToKICAgICAgICAgIyByZXN0cmljdCBjaGFyYWN0ZXIgcmFuZ2UgdG8gSVNPIExhdGluIDEKZGlmZiAtLWdpdCBhL1Rvb2xzL3VuaXR0ZXN0Z3VpL3VuaXR0ZXN0Z3VpLnB5IGIvVG9vbHMvdW5pdHRlc3RndWkvdW5pdHRlc3RndWkucHkKaW5kZXggYjUyNjY0Ni4uMDlhMjBlMiAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pdHRlc3RndWkvdW5pdHRlc3RndWkucHkKKysrIGIvVG9vbHMvdW5pdHRlc3RndWkvdW5pdHRlc3RndWkucHkKQEAgLTI4LDcgKzI4LDYgQEAKICIiIgogCiBfX2F1dGhvcl9fID0gIlN0ZXZlIFB1cmNlbGwgKHN0ZXBoZW5fcHVyY2VsbEB5YWhvby5jb20pIgotX192ZXJzaW9uX18gPSAiJFJldmlzaW9uOiAxLjcgJCJbMTE6LTJdCiAKIGltcG9ydCBzeXMKIGltcG9ydCB0cmFjZWJhY2sKZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNjIyYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC0wLDAgKzEsMTUzMCBAQAorIyEgL2Jpbi9zaAorIyBBdHRlbXB0IHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lLgorIyAgIENvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAorIyAgIDIwMTEsIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK3RpbWVzdGFtcD0nMjAxMi0wMi0xMCcKKworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIworIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91CisjIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQorIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgorIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCisKKworIyBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuICBQbGVhc2Ugc2VuZCBwYXRjaGVzIChjb250ZXh0CisjIGRpZmYgZm9ybWF0KSB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4gYW5kIGluY2x1ZGUgYSBDaGFuZ2VMb2cKKyMgZW50cnkuCisjCisjIFRoaXMgc2NyaXB0IGF0dGVtcHRzIHRvIGd1ZXNzIGEgY2Fub25pY2FsIHN5c3RlbSBuYW1lIHNpbWlsYXIgdG8KKyMgY29uZmlnLnN1Yi4gIElmIGl0IHN1Y2NlZWRzLCBpdCBwcmludHMgdGhlIHN5c3RlbSBuYW1lIG9uIHN0ZG91dCwgYW5kCisjIGV4aXRzIHdpdGggMC4gIE90aGVyd2lzZSwgaXQgZXhpdHMgd2l0aCAxLgorIworIyBZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKKyMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5ndWVzcztoYj1IRUFECisKK21lPWBlY2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAorCit1c2FnZT0iXAorVXNhZ2U6ICQwIFtPUFRJT05dCisKK091dHB1dCB0aGUgY29uZmlndXJhdGlvbiBuYW1lIG9mIHRoZSBzeXN0ZW0gXGAkbWUnIGlzIHJ1biBvbi4KKworT3BlcmF0aW9uIG1vZGVzOgorICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKKyAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRhdGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhpdAorICAtdiwgLS12ZXJzaW9uICAgICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAorCitSZXBvcnQgYnVncyBhbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgorCit2ZXJzaW9uPSJcCitHTlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQorCitPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGVyIEJvdGhuZXIuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyCitGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KK3dhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKKworaGVscD0iCitUcnkgXGAkbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisKKyMgUGFyc2UgY29tbWFuZCBsaW5lCit3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC0tdGltZS1zdGFtcCB8IC0tdGltZSogfCAtdCApCisgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7CisgICAgLS12ZXJzaW9uIHwgLXYgKQorICAgICAgIGVjaG8gIiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQorICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAgICAtLSApICAgICAjIFN0b3Agb3B0aW9uIHByb2Nlc3NpbmcKKyAgICAgICBzaGlmdDsgYnJlYWsgOzsKKyAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCisgICAgICAgYnJlYWsgOzsKKyAgICAtKiApCisgICAgICAgZWNobyAiJG1lOiBpbnZhbGlkIG9wdGlvbiAkMSRoZWxwIiA+JjIKKyAgICAgICBleGl0IDEgOzsKKyAgICAqICkKKyAgICAgICBicmVhayA7OworICBlc2FjCitkb25lCisKK2lmIHRlc3QgJCMgIT0gMDsgdGhlbgorICBlY2hvICIkbWU6IHRvbyBtYW55IGFyZ3VtZW50cyRoZWxwIiA+JjIKKyAgZXhpdCAxCitmaQorCit0cmFwICdleGl0IDEnIDEgMiAxNQorCisjIENDX0ZPUl9CVUlMRCAtLSBjb21waWxlciB1c2VkIGJ5IHRoaXMgc2NyaXB0LiBOb3RlIHRoYXQgdGhlIHVzZSBvZiBhCisjIGNvbXBpbGVyIHRvIGFpZCBpbiBzeXN0ZW0gZGV0ZWN0aW9uIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IHJlcXVpcmVzCisjIHRlbXBvcmFyeSBmaWxlcyB0byBiZSBjcmVhdGVkIGFuZCwgYXMgeW91IGNhbiBzZWUgYmVsb3csIGl0IGlzIGEKKyMgaGVhZGFjaGUgdG8gZGVhbCB3aXRoIGluIGEgcG9ydGFibGUgZmFzaGlvbi4KKworIyBIaXN0b3JpY2FsbHksIGBDQ19GT1JfQlVJTEQnIHVzZWQgdG8gYmUgbmFtZWQgYEhPU1RfQ0MnLiBXZSBzdGlsbAorIyB1c2UgYEhPU1RfQ0MnIGlmIGRlZmluZWQsIGJ1dCBpdCBpcyBkZXByZWNhdGVkLgorCisjIFBvcnRhYmxlIHRtcCBkaXJlY3RvcnkgY3JlYXRpb24gaW5zcGlyZWQgYnkgdGhlIEF1dG9jb25mIHRlYW0uCisKK3NldF9jY19mb3JfYnVpbGQ9JwordHJhcCAiZXhpdGNvZGU9XCQ/OyAocm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGwpICYmIGV4aXQgXCRleGl0Y29kZSIgMCA7Cit0cmFwICJybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbDsgZXhpdCAxIiAxIDIgMTMgMTUgOworOiAke1RNUERJUj0vdG1wfSA7CisgeyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikgMj4vZGV2L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAorIHsgdGVzdCAtbiAiJFJBTkRPTSIgJiYgdG1wPSRUTVBESVIvY2ckJC0kUkFORE9NICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgOyB9IHx8CisgeyB0bXA9JFRNUERJUi9jZy0kJCAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICR0bXApICYmIGVjaG8gIldhcm5pbmc6IGNyZWF0aW5nIGluc2VjdXJlIHRlbXAgZGlyZWN0b3J5IiA+JjIgOyB9IHx8CisgeyBlY2hvICIkbWU6IGNhbm5vdCBjcmVhdGUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGluICRUTVBESVIiID4mMiA7IGV4aXQgMSA7IH0gOworZHVtbXk9JHRtcC9kdW1teSA7Cit0bXBmaWxlcz0iJGR1bW15LmMgJGR1bW15Lm8gJGR1bW15LnJlbCAkZHVtbXkiIDsKK2Nhc2UgJENDX0ZPUl9CVUlMRCwkSE9TVF9DQywkQ0MgaW4KKyAsLCkgICAgZWNobyAiaW50IHg7IiA+ICRkdW1teS5jIDsKKwlmb3IgYyBpbiBjYyBnY2MgYzg5IGM5OSA7IGRvCisJICBpZiAoJGMgLWMgLW8gJGR1bW15Lm8gJGR1bW15LmMpID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwkgICAgIENDX0ZPUl9CVUlMRD0iJGMiOyBicmVhayA7CisJICBmaSA7CisJZG9uZSA7CisJaWYgdGVzdCB4IiRDQ19GT1JfQlVJTEQiID0geCA7IHRoZW4KKwkgIENDX0ZPUl9CVUlMRD1ub19jb21waWxlcl9mb3VuZCA7CisJZmkKKwk7OworICwsKikgICBDQ19GT1JfQlVJTEQ9JENDIDs7CisgLCosKikgIENDX0ZPUl9CVUlMRD0kSE9TVF9DQyA7OworZXNhYyA7IHNldF9jY19mb3JfYnVpbGQ9IDsnCisKKyMgVGhpcyBpcyBuZWVkZWQgdG8gZmluZCB1bmFtZSBvbiBhIFB5cmFtaWQgT1N4IHdoZW4gcnVuIGluIHRoZSBCU0QgdW5pdmVyc2UuCisjIChnaGF6aUBub2MucnV0Z2Vycy5lZHUgMTk5NC0wOC0yNCkKK2lmICh0ZXN0IC1mIC8uYXR0YmluL3VuYW1lKSA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCisJUEFUSD0kUEFUSDovLmF0dGJpbiA7IGV4cG9ydCBQQVRICitmaQorCitVTkFNRV9NQUNISU5FPWAodW5hbWUgLW0pIDI+L2Rldi9udWxsYCB8fCBVTkFNRV9NQUNISU5FPXVua25vd24KK1VOQU1FX1JFTEVBU0U9YCh1bmFtZSAtcikgMj4vZGV2L251bGxgIHx8IFVOQU1FX1JFTEVBU0U9dW5rbm93bgorVU5BTUVfU1lTVEVNPWAodW5hbWUgLXMpIDI+L2Rldi9udWxsYCAgfHwgVU5BTUVfU1lTVEVNPXVua25vd24KK1VOQU1FX1ZFUlNJT049YCh1bmFtZSAtdikgMj4vZGV2L251bGxgIHx8IFVOQU1FX1ZFUlNJT049dW5rbm93bgorCisjIE5vdGU6IG9yZGVyIGlzIHNpZ25pZmljYW50IC0gdGhlIGNhc2UgYnJhbmNoZXMgYXJlIG5vdCBleGNsdXNpdmUuCisKK2Nhc2UgIiR7VU5BTUVfTUFDSElORX06JHtVTkFNRV9TWVNURU19OiR7VU5BTUVfUkVMRUFTRX06JHtVTkFNRV9WRVJTSU9OfSIgaW4KKyAgICAqOk5ldEJTRDoqOiopCisJIyBOZXRCU0QgKG5ic2QpIHRhcmdldHMgc2hvdWxkICh3aGVyZSBhcHBsaWNhYmxlKSBtYXRjaCBvbmUgb3IKKwkjIG1vcmUgb2YgdGhlIHR1cGxlczogKi0qLW5ldGJzZGVsZiosICotKi1uZXRic2Rhb3V0KiwKKwkjICotKi1uZXRic2RlY29mZiogYW5kICotKi1uZXRic2QqLiAgRm9yIHRhcmdldHMgdGhhdCByZWNlbnRseQorCSMgc3dpdGNoZWQgdG8gRUxGLCAqLSotbmV0YnNkKiB3b3VsZCBzZWxlY3QgdGhlIG9sZAorCSMgb2JqZWN0IGZpbGUgZm9ybWF0LiAgVGhpcyBwcm92aWRlcyBib3RoIGZvcndhcmQKKwkjIGNvbXBhdGliaWxpdHkgYW5kIGEgY29uc2lzdGVudCBtZWNoYW5pc20gZm9yIHNlbGVjdGluZyB0aGUKKwkjIG9iamVjdCBmaWxlIGZvcm1hdC4KKwkjCisJIyBOb3RlOiBOZXRCU0QgZG9lc24ndCBwYXJ0aWN1bGFybHkgY2FyZSBhYm91dCB0aGUgdmVuZG9yCisJIyBwb3J0aW9uIG9mIHRoZSBuYW1lLiAgV2UgYWx3YXlzIHNldCBpdCB0byAidW5rbm93biIuCisJc3lzY3RsPSJzeXNjdGwgLW4gaHcubWFjaGluZV9hcmNoIgorCVVOQU1FX01BQ0hJTkVfQVJDSD1gKC9zYmluLyRzeXNjdGwgMj4vZGV2L251bGwgfHwgXAorCSAgICAvdXNyL3NiaW4vJHN5c2N0bCAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd24pYAorCWNhc2UgIiR7VU5BTUVfTUFDSElORV9BUkNIfSIgaW4KKwkgICAgYXJtZWIpIG1hY2hpbmU9YXJtZWItdW5rbm93biA7OworCSAgICBhcm0qKSBtYWNoaW5lPWFybS11bmtub3duIDs7CisJICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7CisJICAgIHNoM2ViKSBtYWNoaW5lPXNoLXVua25vd24gOzsKKwkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUtdW5rbm93biA7OworCSAgICAqKSBtYWNoaW5lPSR7VU5BTUVfTUFDSElORV9BUkNIfS11bmtub3duIDs7CisJZXNhYworCSMgVGhlIE9wZXJhdGluZyBTeXN0ZW0gaW5jbHVkaW5nIG9iamVjdCBmb3JtYXQsIGlmIGl0IGhhcyBzd2l0Y2hlZAorCSMgdG8gRUxGIHJlY2VudGx5LCBvciB3aWxsIGluIHRoZSBmdXR1cmUuCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FX0FSQ0h9IiBpbgorCSAgICBhcm0qfGkzODZ8bTY4a3xuczMya3xzaDMqfHNwYXJjfHZheCkKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlpZiBlY2hvIF9fRUxGX18gfCAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwgXAorCQkJfCBncmVwIC1xIF9fRUxGX18KKwkJdGhlbgorCQkgICAgIyBPbmNlIGFsbCB1dGlsaXRpZXMgY2FuIGJlIEVDT0ZGIChuZXRic2RlY29mZikgb3IgYS5vdXQgKG5ldGJzZGFvdXQpLgorCQkgICAgIyBSZXR1cm4gbmV0YnNkIGZvciBlaXRoZXIuICBGSVg/CisJCSAgICBvcz1uZXRic2QKKwkJZWxzZQorCQkgICAgb3M9bmV0YnNkZWxmCisJCWZpCisJCTs7CisJICAgICopCisJCW9zPW5ldGJzZAorCQk7OworCWVzYWMKKwkjIFRoZSBPUyByZWxlYXNlCisJIyBEZWJpYW4gR05VL05ldEJTRCBtYWNoaW5lcyBoYXZlIGEgZGlmZmVyZW50IHVzZXJsYW5kLCBhbmQKKwkjIHRodXMsIG5lZWQgYSBkaXN0aW5jdCB0cmlwbGV0LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBuZWVkCisJIyBrZXJuZWwgdmVyc2lvbiBpbmZvcm1hdGlvbiwgc28gaXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggYQorCSMgc3VpdGFibGUgdGFnLCBpbiB0aGUgc3R5bGUgb2YgbGludXgtZ251LgorCWNhc2UgIiR7VU5BTUVfVkVSU0lPTn0iIGluCisJICAgIERlYmlhbiopCisJCXJlbGVhc2U9Jy1nbnUnCisJCTs7CisJICAgICopCisJCXJlbGVhc2U9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy1fXS4qL1wuLydgCisJCTs7CisJZXNhYworCSMgU2luY2UgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgorCSMgY29udGFpbnMgcmVkdW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgorCSMgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KKwllY2hvICIke21hY2hpbmV9LSR7b3N9JHtyZWxlYXNlfSIKKwlleGl0IDs7CisgICAgKjpPcGVuQlNEOio6KikKKwlVTkFNRV9NQUNISU5FX0FSQ0g9YGFyY2ggfCBzZWQgJ3MvT3BlbkJTRC4vLydgCisJZWNobyAke1VOQU1FX01BQ0hJTkVfQVJDSH0tdW5rbm93bi1vcGVuYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOmVra29CU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWVra29ic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6U29saWRCU0Q6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXNvbGlkYnNkJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtYWNwcGM6TWlyQlNEOio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1taXJic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6TWlyQlNEOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1taXJic2Qke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGFscGhhOk9TRjE6KjoqKQorCWNhc2UgJFVOQU1FX1JFTEVBU0UgaW4KKwkqNC4wKQorCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sgJ3twcmludCAkM30nYAorCQk7OworCSo1LiopCisJCVVOQU1FX1JFTEVBU0U9YC91c3Ivc2Jpbi9zaXplciAtdiB8IGF3ayAne3ByaW50ICQ0fSdgCisJCTs7CisJZXNhYworCSMgQWNjb3JkaW5nIHRvIENvbXBhcSwgL3Vzci9zYmluL3BzcmluZm8gaGFzIGJlZW4gYXZhaWxhYmxlIG9uCisJIyBPU0YvMSBhbmQgVHJ1NjQgc3lzdGVtcyBwcm9kdWNlZCBzaW5jZSAxOTk1LiAgSSBob3BlIHRoYXQKKwkjIGNvdmVycyBtb3N0IHN5c3RlbXMgcnVubmluZyB0b2RheS4gIFRoaXMgY29kZSBwaXBlcyB0aGUgQ1BVCisJIyB0eXBlcyB0aHJvdWdoIGhlYWQgLW4gMSwgc28gd2Ugb25seSBkZXRlY3QgdGhlIHR5cGUgb2YgQ1BVIDAuCisJQUxQSEFfQ1BVX1RZUEU9YC91c3Ivc2Jpbi9wc3JpbmZvIC12IHwgc2VkIC1uIC1lICdzL14gIFRoZSBhbHBoYSBcKC4qXCkgcHJvY2Vzc29yLiokL1wxL3AnIHwgaGVhZCAtbiAxYAorCWNhc2UgIiRBTFBIQV9DUFVfVFlQRSIgaW4KKwkgICAgIkVWNCAoMjEwNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CisJICAgICJFVjQuNSAoMjEwNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGEiIDs7CisJICAgICJMQ0E0ICgyMTA2Ni8yMTA2OCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYSIgOzsKKwkgICAgIkVWNSAoMjExNjQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjUiIDs7CisJICAgICJFVjUuNiAoMjExNjRBKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY1NiIgOzsKKwkgICAgIkVWNS42ICgyMTE2NFBDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhcGNhNTYiIDs7CisJICAgICJFVjUuNyAoMjExNjRQQykiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYXBjYTU3IiA7OworCSAgICAiRVY2ICgyMTI2NCkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NiIgOzsKKwkgICAgIkVWNi43ICgyMTI2NEEpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY3IiA7OworCSAgICAiRVY2LjhDQiAoMjEyNjRDKSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY2OCIgOzsKKwkgICAgIkVWNi44QUwgKDIxMjY0QikiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjgiIDs7CisJICAgICJFVjYuOENYICgyMTI2NEQpIikKKwkJVU5BTUVfTUFDSElORT0iYWxwaGFldjY4IiA7OworCSAgICAiRVY2LjlBICgyMTI2NC9FVjY5QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NjkiIDs7CisJICAgICJFVjcgKDIxMzY0KSIpCisJCVVOQU1FX01BQ0hJTkU9ImFscGhhZXY3IiA7OworCSAgICAiRVY3LjkgKDIxMzY0QSkiKQorCQlVTkFNRV9NQUNISU5FPSJhbHBoYWV2NzkiIDs7CisJZXNhYworCSMgQSBQbi5uIHZlcnNpb24gaXMgYSBwYXRjaGVkIHZlcnNpb24uCisJIyBBIFZuLm4gdmVyc2lvbiBpcyBhIHJlbGVhc2VkIHZlcnNpb24uCisJIyBBIFRuLm4gdmVyc2lvbiBpcyBhIHJlbGVhc2VkIGZpZWxkIHRlc3QgdmVyc2lvbi4KKwkjIEEgWG4ubiB2ZXJzaW9uIGlzIGFuIHVucmVsZWFzZWQgZXhwZXJpbWVudGFsIGJhc2VsZXZlbC4KKwkjIDEuMiB1c2VzICIxLjIiIGZvciB1bmFtZSAtci4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tZGVjLW9zZmBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvXltQVlRYXS8vJyB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J2AKKwkjIFJlc2V0IEVYSVQgdHJhcCBiZWZvcmUgZXhpdGluZyB0byBhdm9pZCBzcHVyaW91cyBub24temVybyBleGl0IGNvZGUuCisJZXhpdGNvZGU9JD8KKwl0cmFwICcnIDAKKwlleGl0ICRleGl0Y29kZSA7OworICAgIEFscGhhXCAqOldpbmRvd3NfTlQqOiopCisJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPworCSMgU2hvdWxkIHdlIGNoYW5nZSBVTkFNRV9NQUNISU5FIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5hbWUgaW5zdGVhZAorCSMgb2YgdGhlIHNwZWNpZmljIEFscGhhIG1vZGVsPworCWVjaG8gYWxwaGEtcGMtaW50ZXJpeAorCWV4aXQgOzsKKyAgICAyMTA2NDpXaW5kb3dzX05UOjUwOjMpCisJZWNobyBhbHBoYS1kZWMtd2lubnQzLjUKKwlleGl0IDs7CisgICAgQW1pZ2EqOlVOSVhfU3lzdGVtX1Y6NC4wOiopCisJZWNobyBtNjhrLXVua25vd24tc3lzdjQKKwlleGl0IDs7CisgICAgKjpbQWFdbWlnYVtPb11bU3NdOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1hbWlnYW9zCisJZXhpdCA7OworICAgICo6W01tXW9ycGhbT29dW1NzXToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbW9ycGhvcworCWV4aXQgOzsKKyAgICAqOk9TLzM5MDoqOiopCisJZWNobyBpMzcwLWlibS1vcGVuZWRpdGlvbgorCWV4aXQgOzsKKyAgICAqOnovVk06KjoqKQorCWVjaG8gczM5MC1pYm0tenZtb2UKKwlleGl0IDs7CisgICAgKjpPUzQwMDoqOiopCisJZWNobyBwb3dlcnBjLWlibS1vczQwMAorCWV4aXQgOzsKKyAgICBhcm06UklTQyo6MS5bMDEyXSo6Knxhcm06cmlzY2l4OjEuWzAxMl0qOiopCisJZWNobyBhcm0tYWNvcm4tcmlzY2l4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBhcm06cmlzY29zOio6Knxhcm06UklTQ09TOio6KikKKwllY2hvIGFybS11bmtub3duLXJpc2NvcworCWV4aXQgOzsKKyAgICBTUjI/MDE6SEktVVgvTVBQOio6KiB8IFNSODAwMDpISS1VWC9NUFA6KjoqKQorCWVjaG8gaHBwYTEuMS1oaXRhY2hpLWhpdXhtcHAKKwlleGl0IDs7CisgICAgUHlyYW1pZCo6T1N4KjoqOiogfCBNSVMqOk9TeCo6KjoqIHwgTUlTKjpTTVBfREMtT1N4KjoqOiopCisJIyBha2VlQHdwZGlzMDMud3BhZmIuYWYubWlsIChFYXJsZSBGLiBBa2UpIGNvbnRyaWJ1dGVkIE1JUyBhbmQgTklMRS4KKwlpZiB0ZXN0ICJgKC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYCIgPSBhdHQgOyB0aGVuCisJCWVjaG8gcHlyYW1pZC1weXJhbWlkLXN5c3YzCisJZWxzZQorCQllY2hvIHB5cmFtaWQtcHlyYW1pZC1ic2QKKwlmaQorCWV4aXQgOzsKKyAgICBOSUxFKjoqOio6ZGNvc3gpCisJZWNobyBweXJhbWlkLXB5cmFtaWQtc3ZyNAorCWV4aXQgOzsKKyAgICBEUlM/NjAwMDp1bml4OjQuMDo2KikKKwllY2hvIHNwYXJjLWljbC1ueDYKKwlleGl0IDs7CisgICAgRFJTPzYwMDA6VU5JWF9TVjo0LjIqOjcqIHwgRFJTPzYwMDA6aXNpczo0LjIqOjcqKQorCWNhc2UgYC91c3IvYmluL3VuYW1lIC1wYCBpbgorCSAgICBzcGFyYykgZWNobyBzcGFyYy1pY2wtbng3OyBleGl0IDs7CisJZXNhYyA7OworICAgIHMzOTB4OlN1bk9TOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjRIOlN1bk9TOjUuKjoqKQorCWVjaG8gc3BhcmMtaGFsLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOjUuKjoqIHwgdGFkcG9sZSo6U3VuT1M6NS4qOiopCisJZWNobyBzcGFyYy1zdW4tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgaTg2cGM6QXVyb3JhVVg6NS4qOiogfCBpODZ4ZW46QXVyb3JhVVg6NS4qOiopCisJZWNobyBpMzg2LXBjLWF1cm9yYXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBpODZwYzpTdW5PUzo1Lio6KiB8IGk4NnhlbjpTdW5PUzo1Lio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJU1VOX0FSQ0g9ImkzODYiCisJIyBJZiB0aGVyZSBpcyBhIGNvbXBpbGVyLCBzZWUgaWYgaXQgaXMgY29uZmlndXJlZCBmb3IgNjQtYml0IG9iamVjdHMuCisJIyBOb3RlIHRoYXQgdGhlIFN1biBjYyBkb2VzIG5vdCB0dXJuIF9fTFA2NF9fIGludG8gMSBsaWtlIGdjYyBkb2VzLgorCSMgVGhpcyB0ZXN0IHdvcmtzIGZvciBib3RoIGNvbXBpbGVycy4KKwlpZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSAnbm9fY29tcGlsZXJfZm91bmQnIF07IHRoZW4KKwkgICAgaWYgKGVjaG8gJyNpZmRlZiBfX2FtZDY0JzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKKwkJZ3JlcCBJU182NEJJVF9BUkNIID4vZGV2L251bGwKKwkgICAgdGhlbgorCQlTVU5fQVJDSD0ieDg2XzY0IgorCSAgICBmaQorCWZpCisJZWNobyAke1NVTl9BUkNIfS1wYy1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKKyAgICBzdW40KjpTdW5PUzo2KjoqKQorCSMgQWNjb3JkaW5nIHRvIGNvbmZpZy5zdWIsIHRoaXMgaXMgdGhlIHByb3BlciB3YXkgdG8gY2Fub25pY2FsaXplCisJIyBTdW5PUzYuICBIYXJkIHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKKwkjIGl0J3MgbGlrZWx5IHRvIGJlIG1vcmUgbGlrZSBTb2xhcmlzIHRoYW4gU3VuT1M0LgorCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMzYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXhpdCA7OworICAgIHN1bjQqOlN1bk9TOio6KikKKwljYXNlICJgL3Vzci9iaW4vYXJjaCAta2AiIGluCisJICAgIFNlcmllcyp8UzQqKQorCQlVTkFNRV9SRUxFQVNFPWB1bmFtZSAtdmAKKwkJOzsKKwllc2FjCisJIyBKYXBhbmVzZSBMYW5ndWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSBgNC4xLjMtSkwnLgorCWVjaG8gc3BhcmMtc3VuLXN1bm9zYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fLydgCisJZXhpdCA7OworICAgIHN1bjMqOlN1bk9TOio6KikKKwllY2hvIG02OGstc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBzdW4qOio6NC4yQlNEOiopCisJVU5BTUVfUkVMRUFTRT1gKHNlZCAxcSAvZXRjL21vdGQgfCBhd2sgJ3twcmludCBzdWJzdHIoJDUsMSwzKX0nKSAyPi9kZXYvbnVsbGAKKwl0ZXN0ICJ4JHtVTkFNRV9SRUxFQVNFfSIgPSAieCIgJiYgVU5BTUVfUkVMRUFTRT0zCisJY2FzZSAiYC9iaW4vYXJjaGAiIGluCisJICAgIHN1bjMpCisJCWVjaG8gbTY4ay1zdW4tc3Vub3Mke1VOQU1FX1JFTEVBU0V9CisJCTs7CisJICAgIHN1bjQpCisJCWVjaG8gc3BhcmMtc3VuLXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCQk7OworCWVzYWMKKwlleGl0IDs7CisgICAgYXVzaHA6U3VuT1M6KjoqKQorCWVjaG8gc3BhcmMtYXVzcGV4LXN1bm9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAjIFRoZSBzaXR1YXRpb24gZm9yIE1pTlQgaXMgYSBsaXR0bGUgY29uZnVzaW5nLiAgVGhlIG1hY2hpbmUgbmFtZQorICAgICMgY2FuIGJlIHZpcnR1YWxseSBldmVyeXRoaW5nIChldmVyeXRoaW5nIHdoaWNoIGlzIG5vdAorICAgICMgImF0YXJpc3QiIG9yICJhdGFyaXN0ZSIgYXQgbGVhc3Qgc2hvdWxkIGhhdmUgYSBwcm9jZXNzb3IKKyAgICAjID4gbTY4MDAwKS4gIFRoZSBzeXN0ZW0gbmFtZSByYW5nZXMgZnJvbSAiTWlOVCIgb3ZlciAiRnJlZU1pTlQiCisgICAgIyB0byB0aGUgbG93ZXJjYXNlIHZlcnNpb24gIm1pbnQiIChvciAiZnJlZW1pbnQiKS4gIEZpbmFsbHkKKyAgICAjIHRoZSBzeXN0ZW0gbmFtZSAiVE9TIiBkZW5vdGVzIGEgc3lzdGVtIHdoaWNoIGlzIGFjdHVhbGx5IG5vdAorICAgICMgTWlOVC4gIEJ1dCBNaU5UIGlzIGRvd253YXJkIGNvbXBhdGlibGUgdG8gVE9TLCBzbyB0aGlzIHNob3VsZAorICAgICMgYmUgbm8gcHJvYmxlbS4KKyAgICBhdGFyaXN0W2VdOipNaU5UOio6KiB8IGF0YXJpc3RbZV06Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgYXRhcmkqOipNaU5UOio6KiB8IGF0YXJpKjoqbWludDoqOiogfCBhdGFyaXN0W2VdOipUT1M6KjoqKQorCWVjaG8gbTY4ay1hdGFyaS1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqZmFsY29uKjoqTWlOVDoqOiogfCAqZmFsY29uKjoqbWludDoqOiogfCAqZmFsY29uKjoqVE9TOio6KikKKwllY2hvIG02OGstYXRhcmktbWludCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbWlsYW4qOipNaU5UOio6KiB8IG1pbGFuKjoqbWludDoqOiogfCAqbWlsYW4qOipUT1M6KjoqKQorCWVjaG8gbTY4ay1taWxhbi1taW50JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBoYWRlcyo6Kk1pTlQ6KjoqIHwgaGFkZXMqOiptaW50Oio6KiB8ICpoYWRlcyo6KlRPUzoqOiopCisJZWNobyBtNjhrLWhhZGVzLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6Kk1pTlQ6KjoqIHwgKjoqbWludDoqOiogfCAqOipUT1M6KjoqKQorCWVjaG8gbTY4ay11bmtub3duLW1pbnQke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIG02OGs6bWFjaHRlbjoqOiopCisJZWNobyBtNjhrLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHBvd2VycGM6bWFjaHRlbjoqOiopCisJZWNobyBwb3dlcnBjLWFwcGxlLW1hY2h0ZW4ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFJJU0MqOk1hY2g6KjoqKQorCWVjaG8gbWlwcy1kZWMtbWFjaF9ic2Q0LjMKKwlleGl0IDs7CisgICAgUklTQyo6VUxUUklYOio6KikKKwllY2hvIG1pcHMtZGVjLXVsdHJpeCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgVkFYKjpVTFRSSVgqOio6KikKKwllY2hvIHZheC1kZWMtdWx0cml4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAyMDIwOkNMSVg6KjoqIHwgMjQzMDpDTElYOio6KikKKwllY2hvIGNsaXBwZXItaW50ZXJncmFwaC1jbGl4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtaXBzOio6KjpVTUlQUyB8IG1pcHM6KjoqOlJJU0NvcykKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKyNpZmRlZiBfX2NwbHVzcGx1cworI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBmb3IgcHJpbnRmKCkgcHJvdG90eXBlICovCisJaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyNlbHNlCisJaW50IG1haW4gKGFyZ2MsIGFyZ3YpIGludCBhcmdjOyBjaGFyICphcmd2W107IHsKKyNlbmRpZgorCSNpZiBkZWZpbmVkIChob3N0X21pcHMpICYmIGRlZmluZWQgKE1JUFNFQikKKwkjaWYgZGVmaW5lZCAoU1lTVFlQRV9TWVNWKQorCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3lzdlxuIiwgYXJndlsxXSk7IGV4aXQgKDApOworCSNlbmRpZgorCSNpZiBkZWZpbmVkIChTWVNUWVBFX1NWUjQpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNzdnI0XG4iLCBhcmd2WzFdKTsgZXhpdCAoMCk7CisJI2VuZGlmCisJI2lmIGRlZmluZWQgKFNZU1RZUEVfQlNENDMpIHx8IGRlZmluZWQoU1lTVFlQRV9CU0QpCisJICBwcmludGYgKCJtaXBzLW1pcHMtcmlzY29zJXNic2RcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKKwkjZW5kaWYKKwkjZW5kaWYKKwkgIGV4aXQgKC0xKTsKKwl9CitFT0YKKwkkQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAmJgorCSAgZHVtbXlhcmc9YGVjaG8gIiR7VU5BTUVfUkVMRUFTRX0iIHwgc2VkIC1uICdzL1woWzAtOV0qXCkuKi9cMS9wJ2AgJiYKKwkgIFNZU1RFTV9OQU1FPWAkZHVtbXkgJGR1bW15YXJnYCAmJgorCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KKwllY2hvIG1pcHMtbWlwcy1yaXNjb3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIE1vdG9yb2xhOlBvd2VyTUFYX09TOio6KikKKwllY2hvIHBvd2VycGMtbW90b3JvbGEtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTW90b3JvbGE6Kjo0LjM6UEw4LSopCisJZWNobyBwb3dlcnBjLWhhcnJpcy1wb3dlcm1heAorCWV4aXQgOzsKKyAgICBOaWdodF9IYXdrOio6KjpQb3dlck1BWF9PUyB8IFN5bmVyZ3k6UG93ZXJNQVhfT1M6KjoqKQorCWVjaG8gcG93ZXJwYy1oYXJyaXMtcG93ZXJtYXgKKwlleGl0IDs7CisgICAgTmlnaHRfSGF3azpQb3dlcl9VTklYOio6KikKKwllY2hvIHBvd2VycGMtaGFycmlzLXBvd2VydW5peAorCWV4aXQgOzsKKyAgICBtODhrOkNYL1VYOjcqOiopCisJZWNobyBtODhrLWhhcnJpcy1jeHV4NworCWV4aXQgOzsKKyAgICBtODhrOio6NCo6UjQqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2NAorCWV4aXQgOzsKKyAgICBtODhrOio6Myo6UjMqKQorCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgOzsKKyAgICBBVmlpT046ZGd1eDoqOiopCisJIyBERy9VWCByZXR1cm5zIEFWaWlPTiBmb3IgYWxsIGFyY2hpdGVjdHVyZXMKKwlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorCWlmIFsgJFVOQU1FX1BST0NFU1NPUiA9IG1jODgxMDAgXSB8fCBbICRVTkFNRV9QUk9DRVNTT1IgPSBtYzg4MTEwIF0KKwl0aGVuCisJICAgIGlmIFsgJHtUQVJHRVRfQklOQVJZX0lOVEVSRkFDRX14ID0gbTg4a2RndXhlbGZ4IF0gfHwgXAorCSAgICAgICBbICR7VEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0V9eCA9IHggXQorCSAgICB0aGVuCisJCWVjaG8gbTg4ay1kZy1kZ3V4JHtVTkFNRV9SRUxFQVNFfQorCSAgICBlbHNlCisJCWVjaG8gbTg4ay1kZy1kZ3V4YmNzJHtVTkFNRV9SRUxFQVNFfQorCSAgICBmaQorCWVsc2UKKwkgICAgZWNobyBpNTg2LWRnLWRndXgke1VOQU1FX1JFTEVBU0V9CisJZmkKKwlleGl0IDs7CisgICAgTTg4KjpEb2xwaGluT1M6KjoqKQkjIERvbHBoaW5PUyAoU1ZSMykKKwllY2hvIG04OGstZG9scGhpbi1zeXN2MworCWV4aXQgOzsKKyAgICBNODgqOio6UjMqOiopCisJIyBEZWx0YSA4OGsgc3lzdGVtIHJ1bm5pbmcgU1ZSMworCWVjaG8gbTg4ay1tb3Rvcm9sYS1zeXN2MworCWV4aXQgOzsKKyAgICBYRDg4KjoqOio6KikgIyBUZWt0cm9uaXggWEQ4OCBzeXN0ZW0gcnVubmluZyBVVGVrViAoU1ZSMykKKwllY2hvIG04OGstdGVrdHJvbml4LXN5c3YzCisJZXhpdCA7OworICAgIFRlazQzWzAtOV1bMC05XTpVVGVrOio6KikgIyBUZWt0cm9uaXggNDMwMCBzeXN0ZW0gcnVubmluZyBVVGVrIChCU0QpCisJZWNobyBtNjhrLXRla3Ryb25peC1ic2QKKwlleGl0IDs7CisgICAgKjpJUklYKjoqOiopCisJZWNobyBtaXBzLXNnaS1pcml4YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvLS9fL2cnYAorCWV4aXQgOzsKKyAgICA/Pz8/Pz8/PzpBSVg/OlsxMl0uMToyKSAgICMgQUlYIDIuMi4xIG9yIEFJWCAyLjEuMSBpcyBSVC9QQyBBSVguCisJZWNobyByb21wLWlibS1haXggICAgICMgdW5hbWUgLW0gZ2l2ZXMgYW4gOCBoZXgtY29kZSBDUFUgaWQKKwlleGl0IDs7ICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQ6IGVjaG8gIidgdW5hbWUgLXNgJyIgZ2l2ZXMgJ0FJWCAnCisgICAgaSo4NjpBSVg6KjoqKQorCWVjaG8gaTM4Ni1pYm0tYWl4CisJZXhpdCA7OworICAgIGlhNjQ6QUlYOio6KikKKwlpZiBbIC14IC91c3IvYmluL29zbGV2ZWwgXSA7IHRoZW4KKwkJSUJNX1JFVj1gL3Vzci9iaW4vb3NsZXZlbGAKKwllbHNlCisJCUlCTV9SRVY9JHtVTkFNRV9WRVJTSU9OfS4ke1VOQU1FX1JFTEVBU0V9CisJZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0taWJtLWFpeCR7SUJNX1JFVn0KKwlleGl0IDs7CisgICAgKjpBSVg6MjozKQorCWlmIGdyZXAgYm9zMzI1IC91c3IvaW5jbHVkZS9zdGRpby5oID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCXNlZCAncy9eCQkvLycgPDwgRU9GID4kZHVtbXkuYworCQkjaW5jbHVkZSA8c3lzL3N5c3RlbWNmZy5oPgorCisJCW1haW4oKQorCQkJeworCQkJaWYgKCFfX3Bvd2VyX3BjKCkpCisJCQkJZXhpdCgxKTsKKwkJCXB1dHMoInBvd2VycGMtaWJtLWFpeDMuMi41Iik7CisJCQlleGl0KDApOworCQkJfQorRU9GCisJCWlmICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgCisJCXRoZW4KKwkJCWVjaG8gIiRTWVNURU1fTkFNRSIKKwkJZWxzZQorCQkJZWNobyByczYwMDAtaWJtLWFpeDMuMi41CisJCWZpCisJZWxpZiBncmVwIGJvczMyNCAvdXNyL2luY2x1ZGUvc3RkaW8uaCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkJZWNobyByczYwMDAtaWJtLWFpeDMuMi40CisJZWxzZQorCQllY2hvIHJzNjAwMC1pYm0tYWl4My4yCisJZmkKKwlleGl0IDs7CisgICAgKjpBSVg6KjpbNDU2N10pCisJSUJNX0NQVV9JRD1gL3Vzci9zYmluL2xzZGV2IC1DIC1jIHByb2Nlc3NvciAtUyBhdmFpbGFibGUgfCBzZWQgMXEgfCBhd2sgJ3sgcHJpbnQgJDEgfSdgCisJaWYgL3Vzci9zYmluL2xzYXR0ciAtRWwgJHtJQk1fQ1BVX0lEfSB8IGdyZXAgJyBQT1dFUicgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCUlCTV9BUkNIPXJzNjAwMAorCWVsc2UKKwkJSUJNX0FSQ0g9cG93ZXJwYworCWZpCisJaWYgWyAteCAvdXNyL2Jpbi9vc2xldmVsIF0gOyB0aGVuCisJCUlCTV9SRVY9YC91c3IvYmluL29zbGV2ZWxgCisJZWxzZQorCQlJQk1fUkVWPSR7VU5BTUVfVkVSU0lPTn0uJHtVTkFNRV9SRUxFQVNFfQorCWZpCisJZWNobyAke0lCTV9BUkNIfS1pYm0tYWl4JHtJQk1fUkVWfQorCWV4aXQgOzsKKyAgICAqOkFJWDoqOiopCisJZWNobyByczYwMDAtaWJtLWFpeAorCWV4aXQgOzsKKyAgICBpYm1ydDo0LjRCU0Q6Knxyb21wLWlibTpCU0Q6KikKKwllY2hvIHJvbXAtaWJtLWJzZDQuNAorCWV4aXQgOzsKKyAgICBpYm1ydDoqQlNEOip8cm9tcC1pYm06QlNEOiopICAgICAgICAgICAgIyBjb3ZlcnMgUlQvUEMgQlNEIGFuZAorCWVjaG8gcm9tcC1pYm0tYnNkJHtVTkFNRV9SRUxFQVNFfSAgICMgNC4zIHdpdGggdW5hbWUgYWRkZWQgdG8KKwlleGl0IDs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlcG9ydDogcm9tcC1pYm0gQlNEIDQuMworICAgICo6Qk9TWDoqOiopCisJZWNobyByczYwMDAtYnVsbC1ib3N4CisJZXhpdCA7OworICAgIERQWC8yPzAwOkIuTy5TLjoqOiopCisJZWNobyBtNjhrLWJ1bGwtc3lzdjMKKwlleGl0IDs7CisgICAgOTAwMC9bMzRdPz86NC4zYnNkOjEuKjoqKQorCWVjaG8gbTY4ay1ocC1ic2QKKwlleGl0IDs7CisgICAgaHAzMDA6NC40QlNEOio6KiB8IDkwMDAvWzM0XT8/OjQuM2JzZDoyLio6KikKKwllY2hvIG02OGstaHAtYnNkNC40CisJZXhpdCA7OworICAgIDkwMDAvWzM0Njc4XT8/OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwljYXNlICIke1VOQU1FX01BQ0hJTkV9IiBpbgorCSAgICA5MDAwLzMxPyApICAgICAgICAgICAgSFBfQVJDSD1tNjgwMDAgOzsKKwkgICAgOTAwMC9bMzRdPz8gKSAgICAgICAgIEhQX0FSQ0g9bTY4ayA7OworCSAgICA5MDAwL1s2NzhdWzAtOV1bMC05XSkKKwkJaWYgWyAteCAvdXNyL2Jpbi9nZXRjb25mIF07IHRoZW4KKwkJICAgIHNjX2NwdV92ZXJzaW9uPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0NQVV9WRVJTSU9OIDI+L2Rldi9udWxsYAorCQkgICAgc2Nfa2VybmVsX2JpdHM9YC91c3IvYmluL2dldGNvbmYgU0NfS0VSTkVMX0JJVFMgMj4vZGV2L251bGxgCisJCSAgICBjYXNlICIke3NjX2NwdV92ZXJzaW9ufSIgaW4KKwkJICAgICAgNTIzKSBIUF9BUkNIPSJocHBhMS4wIiA7OyAjIENQVV9QQV9SSVNDMV8wCisJCSAgICAgIDUyOCkgSFBfQVJDSD0iaHBwYTEuMSIgOzsgIyBDUFVfUEFfUklTQzFfMQorCQkgICAgICA1MzIpICAgICAgICAgICAgICAgICAgICAgICMgQ1BVX1BBX1JJU0MyXzAKKwkJCWNhc2UgIiR7c2Nfa2VybmVsX2JpdHN9IiBpbgorCQkJICAzMikgSFBfQVJDSD0iaHBwYTIuMG4iIDs7CisJCQkgIDY0KSBIUF9BUkNIPSJocHBhMi4wdyIgOzsKKwkJCSAgJycpIEhQX0FSQ0g9ImhwcGEyLjAiIDs7ICAgIyBIUC1VWCAxMC4yMAorCQkJZXNhYyA7OworCQkgICAgZXNhYworCQlmaQorCQlpZiBbICIke0hQX0FSQ0h9IiA9ICIiIF07IHRoZW4KKwkJICAgIGV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwkJICAgIHNlZCAncy9eCQkvLycgPDwgRU9GID4kZHVtbXkuYworCisJCSNkZWZpbmUgX0hQVVhfU09VUkNFCisJCSNpbmNsdWRlIDxzdGRsaWIuaD4KKwkJI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisJCWludCBtYWluICgpCisJCXsKKwkJI2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQorCQkgICAgbG9uZyBiaXRzID0gc3lzY29uZihfU0NfS0VSTkVMX0JJVFMpOworCQkjZW5kaWYKKwkJICAgIGxvbmcgY3B1ICA9IHN5c2NvbmYgKF9TQ19DUFVfVkVSU0lPTik7CisKKwkJICAgIHN3aXRjaCAoY3B1KQorCQkJeworCQkJY2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7CisJCQljYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMSIpOyBicmVhazsKKwkJCWNhc2UgQ1BVX1BBX1JJU0MyXzA6CisJCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKKwkJCSAgICBzd2l0Y2ggKGJpdHMpCisJCQkJeworCQkJCWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBicmVhazsKKwkJCQljYXNlIDMyOiBwdXRzICgiaHBwYTIuMG4iKTsgYnJlYWs7CisJCQkJZGVmYXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7CisJCQkJfSBicmVhazsKKwkJI2Vsc2UgIC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8KKwkJCSAgICBwdXRzICgiaHBwYTIuMCIpOyBicmVhazsKKwkJI2VuZGlmCisJCQlkZWZhdWx0OiBwdXRzICgiaHBwYTEuMCIpOyBicmVhazsKKwkJCX0KKwkJICAgIGV4aXQgKDApOworCQl9CitFT0YKKwkJICAgIChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jIDI+L2Rldi9udWxsKSAmJiBIUF9BUkNIPWAkZHVtbXlgCisJCSAgICB0ZXN0IC16ICIkSFBfQVJDSCIgJiYgSFBfQVJDSD1ocHBhCisJCWZpIDs7CisJZXNhYworCWlmIFsgJHtIUF9BUkNIfSA9ICJocHBhMi4wdyIgXQorCXRoZW4KKwkgICAgZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCisJICAgICMgaHBwYTIuMHctaHAtaHB1eCogaGFzIGEgNjQtYml0IGtlcm5lbCBhbmQgYSBjb21waWxlciBnZW5lcmF0aW5nCisJICAgICMgMzItYml0IGNvZGUuICBocHBhNjQtaHAtaHB1eCogaGFzIHRoZSBzYW1lIGtlcm5lbCBhbmQgYSBjb21waWxlcgorCSAgICAjIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUuICBHTlUgYW5kIEhQIHVzZSBkaWZmZXJlbnQgbm9tZW5jbGF0dXJlOgorCSAgICAjCisJICAgICMgJCBDQ19GT1JfQlVJTEQ9Y2MgLi9jb25maWcuZ3Vlc3MKKwkgICAgIyA9PiBocHBhMi4wdy1ocC1ocHV4MTEuMjMKKwkgICAgIyAkIENDX0ZPUl9CVUlMRD0iY2MgK0RBMi4wdyIgLi9jb25maWcuZ3Vlc3MKKwkgICAgIyA9PiBocHBhNjQtaHAtaHB1eDExLjIzCisKKwkgICAgaWYgZWNobyBfX0xQNjRfXyB8IChDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfAorCQlncmVwIC1xIF9fTFA2NF9fCisJICAgIHRoZW4KKwkJSFBfQVJDSD0iaHBwYTIuMHciCisJICAgIGVsc2UKKwkJSFBfQVJDSD0iaHBwYTY0IgorCSAgICBmaQorCWZpCisJZWNobyAke0hQX0FSQ0h9LWhwLWhwdXgke0hQVVhfUkVWfQorCWV4aXQgOzsKKyAgICBpYTY0OkhQLVVYOio6KikKKwlIUFVYX1JFVj1gZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi5bMEJdKi8vJ2AKKwllY2hvIGlhNjQtaHAtaHB1eCR7SFBVWF9SRVZ9CisJZXhpdCA7OworICAgIDMwNTAqOkhJLVVYOio6KikKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaW5jbHVkZSA8dW5pc3RkLmg+CisJaW50CisJbWFpbiAoKQorCXsKKwkgIGxvbmcgY3B1ID0gc3lzY29uZiAoX1NDX0NQVV9WRVJTSU9OKTsKKwkgIC8qIFRoZSBvcmRlciBtYXR0ZXJzLCBiZWNhdXNlIENQVV9JU19IUF9NQzY4SyBlcnJvbmVvdXNseSByZXR1cm5zCisJICAgICB0cnVlIGZvciBDUFVfUEFfUklTQzFfMC4gIENQVV9JU19QQV9SSVNDIHJldHVybnMgY29ycmVjdAorCSAgICAgcmVzdWx0cywgaG93ZXZlci4gICovCisJICBpZiAoQ1BVX0lTX1BBX1JJU0MgKGNwdSkpCisJICAgIHsKKwkgICAgICBzd2l0Y2ggKGNwdSkKKwkJeworCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzA6IHB1dHMgKCJocHBhMS4wLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJICBjYXNlIENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMS1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7CisJCSAgY2FzZSBDUFVfUEFfUklTQzJfMDogcHV0cyAoImhwcGEyLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOworCQkgIGRlZmF1bHQ6IHB1dHMgKCJocHBhLWhpdGFjaGktaGl1eHdlMiIpOyBicmVhazsKKwkJfQorCSAgICB9CisJICBlbHNlIGlmIChDUFVfSVNfSFBfTUM2OEsgKGNwdSkpCisJICAgIHB1dHMgKCJtNjhrLWhpdGFjaGktaGl1eHdlMiIpOworCSAgZWxzZSBwdXRzICgidW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIiKTsKKwkgIGV4aXQgKDApOworCX0KK0VPRgorCSRDQ19GT1JfQlVJTEQgLW8gJGR1bW15ICRkdW1teS5jICYmIFNZU1RFTV9OQU1FPWAkZHVtbXlgICYmCisJCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCWVjaG8gdW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIKKwlleGl0IDs7CisgICAgOTAwMC83Pz86NC4zYnNkOio6KiB8IDkwMDAvOD9bNzldOjQuM2JzZDoqOiogKQorCWVjaG8gaHBwYTEuMS1ocC1ic2QKKwlleGl0IDs7CisgICAgOTAwMC84Pz86NC4zYnNkOio6KikKKwllY2hvIGhwcGExLjAtaHAtYnNkCisJZXhpdCA7OworICAgICo5Pz8qOk1QRS9pWDoqOiogfCAqMzAwMCo6TVBFL2lYOio6KikKKwllY2hvIGhwcGExLjAtaHAtbXBlaXgKKwlleGl0IDs7CisgICAgaHA3Pz86T1NGMToqOiogfCBocDg/Wzc5XTpPU0YxOio6KiApCisJZWNobyBocHBhMS4xLWhwLW9zZgorCWV4aXQgOzsKKyAgICBocDg/PzpPU0YxOio6KikKKwllY2hvIGhwcGExLjAtaHAtb3NmCisJZXhpdCA7OworICAgIGkqODY6T1NGMToqOiopCisJaWYgWyAteCAvdXNyL3NiaW4vc3lzdmVyc2lvbiBdIDsgdGhlbgorCSAgICBlY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1vc2YxbWsKKwllbHNlCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLW9zZjEKKwlmaQorCWV4aXQgOzsKKyAgICBwYXJpc2MqOkxpdGVzKjoqOiopCisJZWNobyBocHBhMS4xLWhwLWxpdGVzCisJZXhpdCA7OworICAgIEMxKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzEqOiopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIEMyKjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzIqOiopCisJaWYgZ2V0c3lzaW5mbyAtZiBzY2FsYXJfYWNjCisJdGhlbiBlY2hvIGMzMi1jb252ZXgtYnNkCisJZWxzZSBlY2hvIGMyLWNvbnZleC1ic2QKKwlmaQorCWV4aXQgOzsKKyAgICBDMzQqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzQqOiopCisJZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMzgqOiopCisJZWNobyBjMzgtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDNCo6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9TOkM0KjoqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBDUkFZKlktTVA6KjoqOiopCisJZWNobyB5bXAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpbQS1aXTkwOio6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1jcmF5LXVuaWNvcyR7VU5BTUVfUkVMRUFTRX0gXAorCXwgc2VkIC1lICdzL0NSQVkuKlwoW0EtWl05MFwpL1wxLycgXAorCSAgICAgIC1lIHkvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovIFwKKwkgICAgICAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqVFM6KjoqOiopCisJZWNobyB0OTAtY3JheS11bmljb3Mke1VOQU1FX1JFTEVBU0V9IHwgc2VkIC1lICdzL1wuW14uXSokLy5YLycKKwlleGl0IDs7CisgICAgQ1JBWSpUM0U6KjoqOiopCisJZWNobyBhbHBoYWV2NS1jcmF5LXVuaWNvc21rJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIENSQVkqU1YxOio6KjoqKQorCWVjaG8gc3YxLWNyYXktdW5pY29zJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgICo6VU5JQ09TL21wOio6KikKKwllY2hvIGNyYXludi1jcmF5LXVuaWNvc21wJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nCisJZXhpdCA7OworICAgIEYzMFswMV06VU5JWF9TeXN0ZW1fVjoqOiogfCBGNzAwOlVOSVhfU3lzdGVtX1Y6KjoqKQorCUZVSklUU1VfUFJPQz1gdW5hbWUgLW0gfCB0ciAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eidgCisJRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzL1wvLy8nYAorCUZVSklUU1VfUkVMPWBlY2hvICR7VU5BTUVfUkVMRUFTRX0gfCBzZWQgLWUgJ3MvIC9fLydgCisJZWNobyAiJHtGVUpJVFNVX1BST0N9LWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDs7CisgICAgNTAwMDpVTklYX1N5c3RlbV9WOjQuKjoqKQorCUZVSklUU1VfU1lTPWB1bmFtZSAtcCB8IHRyICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyB8IHNlZCAtZSAncy9cLy8vJ2AKKwlGVUpJVFNVX1JFTD1gZWNobyAke1VOQU1FX1JFTEVBU0V9IHwgdHIgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJyAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonIHwgc2VkIC1lICdzLyAvXy8nYAorCWVjaG8gInNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVMfSIKKwlleGl0IDs7CisgICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNjZW5kXCBFbWJlZGRlZC9PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWJzZGkke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHNwYXJjKjpCU0QvT1M6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1ic2RpJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkJTRC9PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYnNkaSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpGcmVlQlNEOio6KikKKwlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAorCWNhc2UgJHtVTkFNRV9QUk9DRVNTT1J9IGluCisJICAgIGFtZDY0KQorCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7CisJICAgICopCisJCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwllc2FjCisJZXhpdCA7OworICAgIGkqOkNZR1dJTio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtY3lnd2luCisJZXhpdCA7OworICAgICo6TUlOR1cqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbmd3MzIKKwlleGl0IDs7CisgICAgaSo6TVNZUyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtbXN5cworCWV4aXQgOzsKKyAgICBpKjp3aW5kb3dzMzIqOiopCisJIyB1bmFtZSAtbSBpbmNsdWRlcyAiLXBjIiBvbiB0aGlzIHN5c3RlbS4KKwllY2hvICR7VU5BTUVfTUFDSElORX0tbWluZ3czMgorCWV4aXQgOzsKKyAgICBpKjpQVyo6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcHczMgorCWV4aXQgOzsKKyAgICAqOkludGVyaXgqOiopCisJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCisJICAgIHg4NikKKwkJZWNobyBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CisJCWV4aXQgOzsKKwkgICAgYXV0aGVudGljYW1kIHwgZ2VudWluZWludGVsIHwgRU02NFQpCisJCWVjaG8geDg2XzY0LXVua25vd24taW50ZXJpeCR7VU5BTUVfUkVMRUFTRX0KKwkJZXhpdCA7OworCSAgICBJQTY0KQorCQllY2hvIGlhNjQtdW5rbm93bi1pbnRlcml4JHtVTkFNRV9SRUxFQVNFfQorCQlleGl0IDs7CisJZXNhYyA7OworICAgIFszNDVdODY6V2luZG93c185NToqIHwgWzM0NV04NjpXaW5kb3dzXzk4OiogfCBbMzQ1XTg2OldpbmRvd3NfTlQ6KikKKwllY2hvIGkke1VOQU1FX01BQ0hJTkV9LXBjLW1rcworCWV4aXQgOzsKKyAgICA4NjY0OldpbmRvd3NfTlQ6KikKKwllY2hvIHg4Nl82NC1wYy1ta3MKKwlleGl0IDs7CisgICAgaSo6V2luZG93c19OVCo6KiB8IFBlbnRpdW0qOldpbmRvd3NfTlQqOiopCisJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPworCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCisJIyBVTkFNRV9NQUNISU5FIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YgdW5hbWUgaW5zdGVhZCBvZiBpMzg2PworCWVjaG8gaTU4Ni1wYy1pbnRlcml4CisJZXhpdCA7OworICAgIGkqOlVXSU4qOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXV3aW4KKwlleGl0IDs7CisgICAgYW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoqOiopCisJZWNobyB4ODZfNjQtdW5rbm93bi1jeWd3aW4KKwlleGl0IDs7CisgICAgcCo6Q1lHV0lOKjoqKQorCWVjaG8gcG93ZXJwY2xlLXVua25vd24tY3lnd2luCisJZXhpdCA7OworICAgIHByZXAqOlN1bk9TOjUuKjoqKQorCWVjaG8gcG93ZXJwY2xlLXVua25vd24tc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKKwlleGl0IDs7CisgICAgKjpHTlU6KjoqKQorCSMgdGhlIEdOVSBzeXN0ZW0KKwllY2hvIGBlY2hvICR7VU5BTUVfTUFDSElORX18c2VkIC1lICdzLFstL10uKiQsLCdgLXVua25vd24tZ251YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MsLy4qJCwsJ2AKKwlleGl0IDs7CisgICAgKjpHTlUvKjoqOiopCisJIyBvdGhlciBzeXN0ZW1zIHdpdGggR05VIGxpYmMgYW5kIHVzZXJsYW5kCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYGVjaG8gJHtVTkFNRV9TWVNURU19IHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAnW0EtWl0nICdbYS16XSdgYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYC1nbnUKKwlleGl0IDs7CisgICAgaSo4NjpNaW5peDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CisJZXhpdCA7OworICAgIGFhcmNoNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBhYXJjaDY0X2JlOkxpbnV4Oio6KikKKwlVTkFNRV9NQUNISU5FPWFhcmNoNjRfYmUKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgYWxwaGE6TGludXg6KjoqKQorCWNhc2UgYHNlZCAtbiAnL15jcHUgbW9kZWwvcy9eLio6IFwoLipcKS9cMS9wJyA8IC9wcm9jL2NwdWluZm9gIGluCisJICBFVjUpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NSA7OworCSAgRVY1NikgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjU2IDs7CisJICBQQ0E1NikgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBQQ0E1NykgVU5BTUVfTUFDSElORT1hbHBoYXBjYTU2IDs7CisJICBFVjYpICAgVU5BTUVfTUFDSElORT1hbHBoYWV2NiA7OworCSAgRVY2NykgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY3IDs7CisJICBFVjY4KikgVU5BTUVfTUFDSElORT1hbHBoYWV2NjggOzsKKwllc2FjCisJb2JqZHVtcCAtLXByaXZhdGUtaGVhZGVycyAvYmluL3NoIHwgZ3JlcCAtcSBsZC5zby4xCisJaWYgdGVzdCAiJD8iID0gMCA7IHRoZW4gTElCQz0ibGliYzEiIDsgZWxzZSBMSUJDPSIiIDsgZmkKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUke0xJQkN9CisJZXhpdCA7OworICAgIGFybSo6TGludXg6KjoqKQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlpZiBlY2hvIF9fQVJNX0VBQklfXyB8ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCisJICAgIHwgZ3JlcCAtcSBfX0FSTV9FQUJJX18KKwl0aGVuCisJICAgIGVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWVsc2UKKwkgICAgaWYgZWNobyBfX0FSTV9QQ1NfVkZQIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKKwkJfCBncmVwIC1xIF9fQVJNX1BDU19WRlAKKwkgICAgdGhlbgorCQllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnVlYWJpCisJICAgIGVsc2UKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251ZWFiaWhmCisJICAgIGZpCisJZmkKKwlleGl0IDs7CisgICAgYXZyMzIqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgY3JpczpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWF4aXMtbGludXgtZ251CisJZXhpdCA7OworICAgIGNyaXN2MzI6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1heGlzLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBmcnY6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBoZXhhZ29uOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgaSo4NjpMaW51eDoqOiopCisJTElCQz1nbnUKKwlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJc2VkICdzL14JLy8nIDw8IEVPRiA+JGR1bW15LmMKKwkjaWZkZWYgX19kaWV0bGliY19fCisJTElCQz1kaWV0bGliYworCSNlbmRpZgorRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15MSUJDJ2AKKwllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LSR7TElCQ30iCisJZXhpdCA7OworICAgIGlhNjQ6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtMzJyKjpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIG02OCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBtaXBzOkxpbnV4Oio6KiB8IG1pcHM2NDpMaW51eDoqOiopCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCisJI3VuZGVmIENQVQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9CisJI3VuZGVmICR7VU5BTUVfTUFDSElORX1lbAorCSNpZiBkZWZpbmVkKF9fTUlQU0VMX18pIHx8IGRlZmluZWQoX19NSVBTRUwpIHx8IGRlZmluZWQoX01JUFNFTCkgfHwgZGVmaW5lZChNSVBTRUwpCisJQ1BVPSR7VU5BTUVfTUFDSElORX1lbAorCSNlbHNlCisJI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKKwlDUFU9JHtVTkFNRV9NQUNISU5FfQorCSNlbHNlCisJQ1BVPQorCSNlbmRpZgorCSNlbmRpZgorRU9GCisJZXZhbCBgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IGdyZXAgJ15DUFUnYAorCXRlc3QgeCIke0NQVX0iICE9IHggJiYgeyBlY2hvICIke0NQVX0tdW5rbm93bi1saW51eC1nbnUiOyBleGl0OyB9CisJOzsKKyAgICBvcjMyOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcGFkcmU6TGludXg6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcGFyaXNjNjQ6TGludXg6KjoqIHwgaHBwYTY0OkxpbnV4Oio6KikKKwllY2hvIGhwcGE2NC11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBwYXJpc2M6TGludXg6KjoqIHwgaHBwYTpMaW51eDoqOiopCisJIyBMb29rIGZvciBDUFUgbGV2ZWwKKwljYXNlIGBncmVwICdeY3B1W15hLXpdKjonIC9wcm9jL2NwdWluZm8gMj4vZGV2L251bGwgfCBjdXQgLWQnICcgLWYyYCBpbgorCSAgUEE3KikgZWNobyBocHBhMS4xLXVua25vd24tbGludXgtZ251IDs7CisJICBQQTgqKSBlY2hvIGhwcGEyLjAtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgICopICAgIGVjaG8gaHBwYS11bmtub3duLWxpbnV4LWdudSA7OworCWVzYWMKKwlleGl0IDs7CisgICAgcHBjNjQ6TGludXg6KjoqKQorCWVjaG8gcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHBwYzpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHMzOTA6TGludXg6KjoqIHwgczM5MHg6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1pYm0tbGludXgKKwlleGl0IDs7CisgICAgc2g2NCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzaCo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBzcGFyYzpMaW51eDoqOiogfCBzcGFyYzY0OkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgdGlsZSo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICB2YXg6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CisJZXhpdCA7OworICAgIHg4Nl82NDpMaW51eDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CisJZXhpdCA7OworICAgIHh0ZW5zYSo6TGludXg6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudQorCWV4aXQgOzsKKyAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQorCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCisJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aAorCSMgc3lzbmFtZSBhbmQgbm9kZW5hbWUuCisJZWNobyBpMzg2LXNlcXVlbnQtc3lzdjQKKwlleGl0IDs7CisgICAgaSo4NjpVTklYX1NWOjQuMk1QOjIuKikKKwkjIFVuaXh3YXJlIGlzIGFuIG9mZnNob290IG9mIFNWUjQsIGJ1dCBpdCBoYXMgaXRzIG93biB2ZXJzaW9uCisJIyBudW1iZXIgc2VyaWVzIHN0YXJ0aW5nIHdpdGggMi4uLgorCSMgSSBhbSBub3QgcG9zaXRpdmUgdGhhdCBvdGhlciBTVlI0IHN5c3RlbXMgd29uJ3QgbWF0Y2ggdGhpcywKKwkjIEkganVzdCBoYXZlIHRvIGhvcGUuICAtLSBybXMuCisJIyBVc2Ugc3lzdjQuMnV3Li4uIHNvIHRoYXQgc3lzdjQqIG1hdGNoZXMgaXQuCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXN5c3Y0LjJ1dyR7VU5BTUVfVkVSU0lPTn0KKwlleGl0IDs7CisgICAgaSo4NjpPUy8yOio6KikKKwkjIElmIHdlIHdlcmUgYWJsZSB0byBmaW5kIGB1bmFtZScsIHRoZW4gRU1YIFVuaXggY29tcGF0aWJpbGl0eQorCSMgaXMgcHJvYmFibHkgaW5zdGFsbGVkLgorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1vczItZW14CisJZXhpdCA7OworICAgIGkqODY6WFRTLTMwMDoqOlNUT1ApCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tc3RvcAorCWV4aXQgOzsKKyAgICBpKjg2OmF0aGVvczoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tYXRoZW9zCisJZXhpdCA7OworICAgIGkqODY6c3lsbGFibGU6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeWxsYWJsZQorCWV4aXQgOzsKKyAgICBpKjg2Okx5bnhPUzoyLio6KiB8IGkqODY6THlueE9TOjMuWzAxXSo6KiB8IGkqODY6THlueE9TOjQuWzAyXSo6KikKKwllY2hvIGkzODYtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIGkqODY6KkRPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1zZG9zZGpncHAKKwlleGl0IDs7CisgICAgaSo4NjoqOjQuKjoqIHwgaSo4NjpTWVNURU1fVjo0Lio6KikKKwlVTkFNRV9SRUw9YGVjaG8gJHtVTkFNRV9SRUxFQVNFfSB8IHNlZCAncy9cL01QJC8vJ2AKKwlpZiBncmVwIE5vdmVsbCAvdXNyL2luY2x1ZGUvbGluay5oID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVuaXZlbC1zeXN2JHtVTkFNRV9SRUx9CisJZWxzZQorCQllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lzdiR7VU5BTUVfUkVMfQorCWZpCisJZXhpdCA7OworICAgIGkqODY6Kjo1Ols2NzhdKikKKwkjIFVuaXhXYXJlIDcueCwgT3BlblVOSVggYW5kIE9wZW5TZXJ2ZXIgNi4KKwljYXNlIGAvYmluL3VuYW1lIC1YIHwgZ3JlcCAiXk1hY2hpbmUiYCBpbgorCSAgICAqNDg2KikJICAgICBVTkFNRV9NQUNISU5FPWk0ODYgOzsKKwkgICAgKlBlbnRpdW0pCSAgICAgVU5BTUVfTUFDSElORT1pNTg2IDs7CisJICAgICpQZW50KnwqQ2VsZXJvbikgVU5BTUVfTUFDSElORT1pNjg2IDs7CisJZXNhYworCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9JHtVTkFNRV9TWVNURU19JHtVTkFNRV9WRVJTSU9OfQorCWV4aXQgOzsKKyAgICBpKjg2Oio6My4yOiopCisJaWYgdGVzdCAtZiAvdXNyL29wdGlvbnMvY2IubmFtZTsgdGhlbgorCQlVTkFNRV9SRUw9YHNlZCAtbiAncy8uKlZlcnNpb24gLy9wJyA8L3Vzci9vcHRpb25zL2NiLm5hbWVgCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1pc2MkVU5BTUVfUkVMCisJZWxpZiAvYmluL3VuYW1lIC1YIDI+L2Rldi9udWxsID4vZGV2L251bGwgOyB0aGVuCisJCVVOQU1FX1JFTD1gKC9iaW4vdW5hbWUgLVh8Z3JlcCBSZWxlYXNlfHNlZCAtZSAncy8uKj0gLy8nKWAKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCBpODA0ODYgPi9kZXYvbnVsbCkgJiYgVU5BTUVfTUFDSElORT1pNDg2CisJCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50aXVtJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk1ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnQgKklJJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk2ODYKKwkJKC9iaW4vdW5hbWUgLVh8Z3JlcCAnXk1hY2hpbmUuKlBlbnRpdW0gUHJvJyA+L2Rldi9udWxsKSBcCisJCQkmJiBVTkFNRV9NQUNISU5FPWk2ODYKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXNjbyRVTkFNRV9SRUwKKwllbHNlCisJCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1zeXN2MzIKKwlmaQorCWV4aXQgOzsKKyAgICBwYzoqOio6KikKKwkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKKwkjIHVuYW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90aGluZyBhYm91dAorCSMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGk1ODYuCisJIyBOb3RlOiB3aGF0ZXZlciB0aGlzIGlzLCBpdCBNVVNUIGJlIHRoZSBzYW1lIGFzIHdoYXQgY29uZmlnLnN1YgorCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0LCBvciBlbHNlIEdEQiBjb25maWd1cnkgd2lsbCBkZWNpZGUgdGhhdAorCSMgdGhpcyBpcyBhIGNyb3NzLWJ1aWxkLgorCWVjaG8gaTU4Ni1wYy1tc2Rvc2RqZ3BwCisJZXhpdCA7OworICAgIEludGVsOk1hY2g6Myo6KikKKwllY2hvIGkzODYtcGMtbWFjaDMKKwlleGl0IDs7CisgICAgcGFyYWdvbjoqOio6KikKKwllY2hvIGk4NjAtaW50ZWwtb3NmMQorCWV4aXQgOzsKKyAgICBpODYwOio6NC4qOiopICMgaTg2MC1TVlI0CisJaWYgZ3JlcCBTdGFyZGVudCAvdXNyL2luY2x1ZGUvc3lzL3VhZG1pbi5oID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKwkgIGVjaG8gaTg2MC1zdGFyZGVudC1zeXN2JHtVTkFNRV9SRUxFQVNFfSAjIFN0YXJkZW50IFZpc3RyYSBpODYwLVNWUjQKKwllbHNlICMgQWRkIG90aGVyIGk4NjAtU1ZSNCB2ZW5kb3JzIGJlbG93IGFzIHRoZXkgYXJlIGRpc2NvdmVyZWQuCisJICBlY2hvIGk4NjAtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSAgIyBVbmtub3duIGk4NjAtU1ZSNAorCWZpCisJZXhpdCA7OworICAgIG1pbmkqOkNUSVg6U1lTKjU6KikKKwkjICJtaW5pZnJhbWUiCisJZWNobyBtNjgwMTAtY29udmVyZ2VudC1zeXN2CisJZXhpdCA7OworICAgIG1jNjhrOlVOSVg6U1lTVEVNNTozLjUxbSkKKwllY2hvIG02OGstY29udmVyZ2VudC1zeXN2CisJZXhpdCA7OworICAgIE02ODA/MDpELU5JWDo1LjM6KikKKwllY2hvIG02OGstZGlhYi1kbml4CisJZXhpdCA7OworICAgIE02OCo6KjpSM1ZbNTY3OF0qOiopCisJdGVzdCAtciAvc3lzVjY4ICYmIHsgZWNobyAnbTY4ay1tb3Rvcm9sYS1zeXN2JzsgZXhpdDsgfSA7OworICAgIDNbMzQ1XT8/Oio6NC4wOjMuMCB8IDNbMzRdPz9BOio6NC4wOjMuMCB8IDNbMzRdPz8sKjoqOjQuMDozLjAgfCAzWzM0XT8/Lyo6Kjo0LjA6My4wIHwgNDQwMDoqOjQuMDozLjAgfCA0ODUwOio6NC4wOjMuMCB8IFNLQTQwOio6NC4wOjMuMCB8IFNEUzI6Kjo0LjA6My4wIHwgU0hHMjoqOjQuMDozLjAgfCBTNzUwMSo6Kjo0LjA6My4wKQorCU9TX1JFTD0nJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSYmIE9TX1JFTD0uYHNlZCAtbiAncy9bXiBdKiBbXiBdKiBcKFswLTldWzAtOV1cKS4qL1wxL3AnIDwgL2V0Yy8ucmVsaWRgCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgJiYgeyBlY2hvIGk1ODYtbmNyLXN5c3Y0LjMke09TX1JFTH07IGV4aXQ7IH0gOzsKKyAgICAzWzM0XT8/Oio6NC4wOiogfCAzWzM0XT8/LCo6Kjo0LjA6KikKKwkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKKwkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NDsgZXhpdDsgfSA7OworICAgIE5DUio6Kjo0LjI6KiB8IE1QUkFTKjoqOjQuMjoqKQorCU9TX1JFTD0nLjMnCisJdGVzdCAtciAvZXRjLy5yZWxpZCBcCisJICAgICYmIE9TX1JFTD0uYHNlZCAtbiAncy9bXiBdKiBbXiBdKiBcKFswLTldWzAtOV1cKS4qL1wxL3AnIDwgL2V0Yy8ucmVsaWRgCisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IGdyZXAgODYgPi9kZXYvbnVsbCBcCisJICAgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBlbnRpdW0gPi9kZXYvbnVsbCBcCisJICAgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9CisJL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBwdGVyb24gPi9kZXYvbnVsbCBcCisJICAgICYmIHsgZWNobyBpNTg2LW5jci1zeXN2NC4zJHtPU19SRUx9OyBleGl0OyB9IDs7CisgICAgbTY4KjpMeW54T1M6Mi4qOiogfCBtNjgqOkx5bnhPUzozLjAqOiopCisJZWNobyBtNjhrLXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBtYzY4MDMwOlVOSVhfU3lzdGVtX1Y6NC4qOiopCisJZWNobyBtNjhrLWF0YXJpLXN5c3Y0CisJZXhpdCA7OworICAgIFRTVU5BTUk6THlueE9TOjIuKjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCisJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC5bMDJdKjoqKQorCWVjaG8gcG93ZXJwYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU01bQkVdUzpVTklYX1NWOio6KikKKwllY2hvIG1pcHMtZGRlLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFJNKjpSZWxpYW50VU5JWC0qOio6KikKKwllY2hvIG1pcHMtc25pLXN5c3Y0CisJZXhpdCA7OworICAgIFJNKjpTSU5JWC0qOio6KikKKwllY2hvIG1pcHMtc25pLXN5c3Y0CisJZXhpdCA7OworICAgICo6U0lOSVgtKjoqOiopCisJaWYgdW5hbWUgLXAgMj4vZGV2L251bGwgPi9kZXYvbnVsbCA7IHRoZW4KKwkJVU5BTUVfTUFDSElORT1gKHVuYW1lIC1wKSAyPi9kZXYvbnVsbGAKKwkJZWNobyAke1VOQU1FX01BQ0hJTkV9LXNuaS1zeXN2NAorCWVsc2UKKwkJZWNobyBuczMyay1zbmktc3lzdgorCWZpCisJZXhpdCA7OworICAgIFBFTlRJVU06Kjo0LjAqOiopCSMgVW5pc3lzIGBDbGVhclBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0CisJCQkjIHNheXMgPFJpY2hhcmQuTS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+CisJZWNobyBpNTg2LXVuaXN5cy1zeXN2NAorCWV4aXQgOzsKKyAgICAqOlVOSVhfU3lzdGVtX1Y6NCo6RlRYKikKKwkjIEZyb20gR2VyYWxkIEhld2VzIDxoZXdlc0BvcGVubWFya2V0LmNvbT4uCisJIyBIb3cgYWJvdXQgZGlmZmVyZW50aWF0aW5nIGJldHdlZW4gc3RyYXR1cyBhcmNoaXRlY3R1cmVzPyAtZGptCisJZWNobyBocHBhMS4xLXN0cmF0dXMtc3lzdjQKKwlleGl0IDs7CisgICAgKjoqOio6RlRYKikKKwkjIEZyb20gc2VhbmZAc3dkYy5zdHJhdHVzLmNvbS4KKwllY2hvIGk4NjAtc3RyYXR1cy1zeXN2NAorCWV4aXQgOzsKKyAgICBpKjg2OlZPUzoqOiopCisJIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXN0cmF0dXMtdm9zCisJZXhpdCA7OworICAgICo6Vk9TOio6KikKKwkjIEZyb20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KKwllY2hvIGhwcGExLjEtc3RyYXR1cy12b3MKKwlleGl0IDs7CisgICAgbWM2OCo6QS9VWDoqOiopCisJZWNobyBtNjhrLWFwcGxlLWF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgbmV3cyo6TkVXUy1PUzo2KjoqKQorCWVjaG8gbWlwcy1zb255LW5ld3NvczYKKwlleGl0IDs7CisgICAgUlszNF0wMDA6KlN5c3RlbV9WKjoqOiogfCBSNDAwMDpVTklYX1NZU1Y6KjoqIHwgUiowMDA6VU5JWF9TVjoqOiopCisJaWYgWyAtZCAvdXNyL25lYyBdOyB0aGVuCisJCWVjaG8gbWlwcy1uZWMtc3lzdiR7VU5BTUVfUkVMRUFTRX0KKwllbHNlCisJCWVjaG8gbWlwcy11bmtub3duLXN5c3Yke1VOQU1FX1JFTEVBU0V9CisJZmkKKwlleGl0IDs7CisgICAgQmVCb3g6QmVPUzoqOiopCSMgQmVPUyBydW5uaW5nIG9uIGhhcmR3YXJlIG1hZGUgYnkgQmUsIFBQQyBvbmx5LgorCWVjaG8gcG93ZXJwYy1iZS1iZW9zCisJZXhpdCA7OworICAgIEJlTWFjOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBNYWMgb3IgTWFjIGNsb25lLCBQUEMgb25seS4KKwllY2hvIHBvd2VycGMtYXBwbGUtYmVvcworCWV4aXQgOzsKKyAgICBCZVBDOkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBJbnRlbCBQQyBjb21wYXRpYmxlLgorCWVjaG8gaTU4Ni1wYy1iZW9zCisJZXhpdCA7OworICAgIEJlUEM6SGFpa3U6KjoqKQkjIEhhaWt1IHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KKwllY2hvIGk1ODYtcGMtaGFpa3UKKwlleGl0IDs7CisgICAgU1gtNDpTVVBFUi1VWDoqOiopCisJZWNobyBzeDQtbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTU6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g1LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC02OlNVUEVSLVVYOio6KikKKwllY2hvIHN4Ni1uZWMtc3VwZXJ1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgU1gtNzpTVVBFUi1VWDoqOiopCisJZWNobyBzeDctbmVjLXN1cGVydXgke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgIFNYLTg6U1VQRVItVVg6KjoqKQorCWVjaG8gc3g4LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBTWC04UjpTVVBFUi1VWDoqOiopCisJZWNobyBzeDhyLW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBQb3dlcio6UmhhcHNvZHk6KjoqKQorCWVjaG8gcG93ZXJwYy1hcHBsZS1yaGFwc29keSR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpSaGFwc29keToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWFwcGxlLXJoYXBzb2R5JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkRhcndpbjoqOiopCisJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAgfHwgVU5BTUVfUFJPQ0VTU09SPXVua25vd24KKwljYXNlICRVTkFNRV9QUk9DRVNTT1IgaW4KKwkgICAgaTM4NikKKwkJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCQlpZiBbICIkQ0NfRk9SX0JVSUxEIiAhPSAnbm9fY29tcGlsZXJfZm91bmQnIF07IHRoZW4KKwkJICBpZiAoZWNobyAnI2lmZGVmIF9fTFA2NF9fJzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJICAgICAgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKKwkJICAgICAgZ3JlcCBJU182NEJJVF9BUkNIID4vZGV2L251bGwKKwkJICB0aGVuCisJCSAgICAgIFVOQU1FX1BST0NFU1NPUj0ieDg2XzY0IgorCQkgIGZpCisJCWZpIDs7CisJICAgIHVua25vd24pIFVOQU1FX1BST0NFU1NPUj1wb3dlcnBjIDs7CisJZXNhYworCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LWFwcGxlLWRhcndpbiR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpwcm9jbnRvKjoqOiogfCAqOlFOWDpbMDEyMzQ1Njc4OV0qOiopCisJVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAKKwlpZiB0ZXN0ICIkVU5BTUVfUFJPQ0VTU09SIiA9ICJ4ODYiOyB0aGVuCisJCVVOQU1FX1BST0NFU1NPUj1pMzg2CisJCVVOQU1FX01BQ0hJTkU9cGMKKwlmaQorCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LSR7VU5BTUVfTUFDSElORX0tbnRvLXFueCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgKjpRTlg6Kjo0KikKKwllY2hvIGkzODYtcGMtcW54CisJZXhpdCA7OworICAgIE5FTy0/Ok5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5lby10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICBOU0UtPzpOT05TVE9QX0tFUk5FTDoqOiopCisJZWNobyBuc2UtdGFuZGVtLW5zayR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CisgICAgTlNSLT86Tk9OU1RPUF9LRVJORUw6KjoqKQorCWVjaG8gbnNyLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6Tm9uU3RvcC1VWDoqOiopCisJZWNobyBtaXBzLWNvbXBhcS1ub25zdG9wdXgKKwlleGl0IDs7CisgICAgQlMyMDAwOlBPU0lYKjoqOiopCisJZWNobyBiczIwMDAtc2llbWVucy1zeXN2CisJZXhpdCA7OworICAgIERTLyo6VU5JWF9TeXN0ZW1fVjoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LSR7VU5BTUVfU1lTVEVNfS0ke1VOQU1FX1JFTEVBU0V9CisJZXhpdCA7OworICAgICo6UGxhbjk6KjoqKQorCSMgInVuYW1lIC1tIiBpcyBub3QgY29uc2lzdGVudCwgc28gdXNlICRjcHV0eXBlIGluc3RlYWQuIDM4NgorCSMgaXMgY29udmVydGVkIHRvIGkzODYgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgeDg2CisJIyBvcGVyYXRpbmcgc3lzdGVtcy4KKwlpZiB0ZXN0ICIkY3B1dHlwZSIgPSAiMzg2IjsgdGhlbgorCSAgICBVTkFNRV9NQUNISU5FPWkzODYKKwllbHNlCisJICAgIFVOQU1FX01BQ0hJTkU9IiRjcHV0eXBlIgorCWZpCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tcGxhbjkKKwlleGl0IDs7CisgICAgKjpUT1BTLTEwOio6KikKKwllY2hvIHBkcDEwLXVua25vd24tdG9wczEwCisJZXhpdCA7OworICAgICo6VEVORVg6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10ZW5leAorCWV4aXQgOzsKKyAgICBLUzEwOlRPUFMtMjA6KjoqIHwgS0wxMDpUT1BTLTIwOio6KiB8IFRZUEU0OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtZGVjLXRvcHMyMAorCWV4aXQgOzsKKyAgICBYS0wtMTpUT1BTLTIwOio6KiB8IFRZUEU1OlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAteGtsLXRvcHMyMAorCWV4aXQgOzsKKyAgICAqOlRPUFMtMjA6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi10b3BzMjAKKwlleGl0IDs7CisgICAgKjpJVFM6KjoqKQorCWVjaG8gcGRwMTAtdW5rbm93bi1pdHMKKwlleGl0IDs7CisgICAgU0VJOio6KjpTRUlVWCkKKwllY2hvIG1pcHMtc2VpLXNlaXV4JHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKKyAgICAqOkRyYWdvbkZseToqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZHJhZ29uZmx5YGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvWy0oXS4qLy8nYAorCWV4aXQgOzsKKyAgICAqOipWTVM6KjoqKQorCVVOQU1FX01BQ0hJTkU9YCh1bmFtZSAtcCkgMj4vZGV2L251bGxgCisJY2FzZSAiJHtVTkFNRV9NQUNISU5FfSIgaW4KKwkgICAgQSopIGVjaG8gYWxwaGEtZGVjLXZtcyA7IGV4aXQgOzsKKwkgICAgSSopIGVjaG8gaWE2NC1kZWMtdm1zIDsgZXhpdCA7OworCSAgICBWKikgZWNobyB2YXgtZGVjLXZtcyA7IGV4aXQgOzsKKwllc2FjIDs7CisgICAgKjpYRU5JWDoqOlN5c1YpCisJZWNobyBpMzg2LXBjLXhlbml4CisJZXhpdCA7OworICAgIGkqODY6c2t5b3M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1za3lvc2BlY2hvICR7VU5BTUVfUkVMRUFTRX1gIHwgc2VkIC1lICdzLyAuKiQvLycKKwlleGl0IDs7CisgICAgaSo4NjpyZG9zOio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtcmRvcworCWV4aXQgOzsKKyAgICBpKjg2OkFST1M6KjoqKQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1hcm9zCisJZXhpdCA7OworICAgIHg4Nl82NDpWTWtlcm5lbDoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tZXN4CisJZXhpdCA7OworZXNhYworCisjZWNobyAnKE5vIHVuYW1lIGNvbW1hbmQgb3IgdW5hbWUgb3V0cHV0IG5vdCByZWNvZ25pemVkLiknIDE+JjIKKyNlY2hvICIke1VOQU1FX01BQ0hJTkV9OiR7VU5BTUVfU1lTVEVNfToke1VOQU1FX1JFTEVBU0V9OiR7VU5BTUVfVkVSU0lPTn0iIDE+JjIKKworZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorY2F0ID4kZHVtbXkuYyA8PEVPRgorI2lmZGVmIF9TRVFVRU5UXworIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMgaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorbWFpbiAoKQoreworI2lmIGRlZmluZWQgKHNvbnkpCisjaWYgZGVmaW5lZCAoTUlQU0VCKQorICAvKiBCRkQgd2FudHMgImJzZCIgaW5zdGVhZCBvZiAibmV3c29zIi4gIFBlcmhhcHMgQkZEIHNob3VsZCBiZSBjaGFuZ2VkLAorICAgICBJIGRvbid0IGtub3cuLi4uICAqLworICBwcmludGYgKCJtaXBzLXNvbnktYnNkXG4iKTsgZXhpdCAoMCk7CisjZWxzZQorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorICBwcmludGYgKCJtNjhrLXNvbnktbmV3c29zJXNcbiIsCisjaWZkZWYgTkVXU09TNAorCSI0IgorI2Vsc2UKKwkiIgorI2VuZGlmCisJKTsgZXhpdCAoMCk7CisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX19hcm0pICYmIGRlZmluZWQgKF9fYWNvcm4pICYmIGRlZmluZWQgKF9fdW5peCkKKyAgcHJpbnRmICgiYXJtLWFjb3JuLXJpc2NpeFxuIik7IGV4aXQgKDApOworI2VuZGlmCisKKyNpZiBkZWZpbmVkIChocDMwMCkgJiYgIWRlZmluZWQgKGhwdXgpCisgIHByaW50ZiAoIm02OGstaHAtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworI2lmIGRlZmluZWQgKE5lWFQpCisjaWYgIWRlZmluZWQgKF9fQVJDSElURUNUVVJFX18pCisjZGVmaW5lIF9fQVJDSElURUNUVVJFX18gIm02OGsiCisjZW5kaWYKKyAgaW50IHZlcnNpb247CisgIHZlcnNpb249YChob3N0aW5mbyB8IHNlZCAtbiAncy8uKk5lWFQgTWFjaCBcKFswLTldKlwpLiovXDEvcCcpIDI+L2Rldi9udWxsYDsKKyAgaWYgKHZlcnNpb24gPCA0KQorICAgIHByaW50ZiAoIiVzLW5leHQtbmV4dHN0ZXAlZFxuIiwgX19BUkNISVRFQ1RVUkVfXywgdmVyc2lvbik7CisgIGVsc2UKKyAgICBwcmludGYgKCIlcy1uZXh0LW9wZW5zdGVwJWRcbiIsIF9fQVJDSElURUNUVVJFX18sIHZlcnNpb24pOworICBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoTVVMVElNQVgpIHx8IGRlZmluZWQgKG4xNikKKyNpZiBkZWZpbmVkIChVTUFYVikKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLXN5c3ZcbiIpOyBleGl0ICgwKTsKKyNlbHNlCisjaWYgZGVmaW5lZCAoQ01VKQorICBwcmludGYgKCJuczMyay1lbmNvcmUtbWFjaFxuIik7IGV4aXQgKDApOworI2Vsc2UKKyAgcHJpbnRmICgibnMzMmstZW5jb3JlLWJzZFxuIik7IGV4aXQgKDApOworI2VuZGlmCisjZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoX18zODZCU0RfXykKKyAgcHJpbnRmICgiaTM4Ni1wYy1ic2RcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZCAoc2VxdWVudCkKKyNpZiBkZWZpbmVkIChpMzg2KQorICBwcmludGYgKCJpMzg2LXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2lmIGRlZmluZWQgKG5zMzIwMDApCisgIHByaW50ZiAoIm5zMzJrLXNlcXVlbnQtZHluaXhcbiIpOyBleGl0ICgwKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChfU0VRVUVOVF8pCisgICAgc3RydWN0IHV0c25hbWUgdW47CisKKyAgICB1bmFtZSgmdW4pOworCisgICAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYyIiwgMikgPT0gMCkgeworCXByaW50ZiAoImkzODYtc2VxdWVudC1wdHgyXG4iKTsgZXhpdCAoMCk7CisgICAgfQorICAgIGlmIChzdHJuY21wKHVuLnZlcnNpb24sICJWMSIsIDIpID09IDApIHsgLyogWFhYIGlzIFYxIGNvcnJlY3Q/ICovCisJcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eDFcbiIpOyBleGl0ICgwKTsKKyAgICB9CisgICAgcHJpbnRmICgiaTM4Ni1zZXF1ZW50LXB0eFxuIik7IGV4aXQgKDApOworCisjZW5kaWYKKworI2lmIGRlZmluZWQgKHZheCkKKyMgaWYgIWRlZmluZWQgKHVsdHJpeCkKKyMgIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorIyAgaWYgZGVmaW5lZCAoQlNEKQorIyAgIGlmIEJTRCA9PSA0MworICAgICAgcHJpbnRmICgidmF4LWRlYy1ic2Q0LjNcbiIpOyBleGl0ICgwKTsKKyMgICBlbHNlCisjICAgIGlmIEJTRCA9PSAxOTkwMDYKKyAgICAgIHByaW50ZiAoInZheC1kZWMtYnNkNC4zcmVub1xuIik7IGV4aXQgKDApOworIyAgICBlbHNlCisgICAgICBwcmludGYgKCJ2YXgtZGVjLWJzZFxuIik7IGV4aXQgKDApOworIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbHNlCisgICAgcHJpbnRmICgidmF4LWRlYy1ic2RcbiIpOyBleGl0ICgwKTsKKyMgIGVuZGlmCisjIGVsc2UKKyAgICBwcmludGYgKCJ2YXgtZGVjLXVsdHJpeFxuIik7IGV4aXQgKDApOworIyBlbmRpZgorI2VuZGlmCisKKyNpZiBkZWZpbmVkIChhbGxpYW50KSAmJiBkZWZpbmVkIChpODYwKQorICBwcmludGYgKCJpODYwLWFsbGlhbnQtYnNkXG4iKTsgZXhpdCAoMCk7CisjZW5kaWYKKworICBleGl0ICgxKTsKK30KK0VPRgorCiskQ0NfRk9SX0JVSUxEIC1vICRkdW1teSAkZHVtbXkuYyAyPi9kZXYvbnVsbCAmJiBTWVNURU1fTkFNRT1gJGR1bW15YCAmJgorCXsgZWNobyAiJFNZU1RFTV9OQU1FIjsgZXhpdDsgfQorCisjIEFwb2xsb3MgcHV0IHRoZSBzeXN0ZW0gdHlwZSBpbiB0aGUgZW52aXJvbm1lbnQuCisKK3Rlc3QgLWQgL3Vzci9hcG9sbG8gJiYgeyBlY2hvICR7SVNQfS1hcG9sbG8tJHtTWVNUWVBFfTsgZXhpdDsgfQorCisjIENvbnZleCB2ZXJzaW9ucyB0aGF0IHByZWRhdGUgdW5hbWUgY2FuIHVzZSBnZXRzeXNpbmZvKDEpCisKK2lmIFsgLXggL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyBdCit0aGVuCisgICAgY2FzZSBgZ2V0c3lzaW5mbyAtZiBjcHVfdHlwZWAgaW4KKyAgICBjMSopCisJZWNobyBjMS1jb252ZXgtYnNkCisJZXhpdCA7OworICAgIGMyKikKKwlpZiBnZXRzeXNpbmZvIC1mIHNjYWxhcl9hY2MKKwl0aGVuIGVjaG8gYzMyLWNvbnZleC1ic2QKKwllbHNlIGVjaG8gYzItY29udmV4LWJzZAorCWZpCisJZXhpdCA7OworICAgIGMzNCopCisJZWNobyBjMzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBjMzgqKQorCWVjaG8gYzM4LWNvbnZleC1ic2QKKwlleGl0IDs7CisgICAgYzQqKQorCWVjaG8gYzQtY29udmV4LWJzZAorCWV4aXQgOzsKKyAgICBlc2FjCitmaQorCitjYXQgPiYyIDw8RU9GCiskMDogdW5hYmxlIHRvIGd1ZXNzIHN5c3RlbSB0eXBlCisKK1RoaXMgc2NyaXB0LCBsYXN0IG1vZGlmaWVkICR0aW1lc3RhbXAsIGhhcyBmYWlsZWQgdG8gcmVjb2duaXplCit0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UgYXJlIHVzaW5nLiBJdCBpcyBhZHZpc2VkIHRoYXQgeW91Citkb3dubG9hZCB0aGUgbW9zdCB1cCB0byBkYXRlIHZlcnNpb24gb2YgdGhlIGNvbmZpZyBzY3JpcHRzIGZyb20KKworICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKK2FuZAorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECisKK0lmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQorc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKK3BlcnRpbmVudCB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4gaW4gb3JkZXIgdG8gcHJvdmlkZSB0aGUgbmVlZGVkCitpbmZvcm1hdGlvbiB0byBoYW5kbGUgeW91ciBzeXN0ZW0uCisKK2NvbmZpZy5ndWVzcyB0aW1lc3RhbXAgPSAkdGltZXN0YW1wCisKK3VuYW1lIC1tID0gYCh1bmFtZSAtbSkgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAordW5hbWUgLXIgPSBgKHVuYW1lIC1yKSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCit1bmFtZSAtcyA9IGAodW5hbWUgLXMpIDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKK3VuYW1lIC12ID0gYCh1bmFtZSAtdikgMj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAorCisvdXNyL2Jpbi91bmFtZSAtcCA9IGAoL3Vzci9iaW4vdW5hbWUgLXApIDI+L2Rldi9udWxsYAorL2Jpbi91bmFtZSAtWCAgICAgPSBgKC9iaW4vdW5hbWUgLVgpIDI+L2Rldi9udWxsYAorCitob3N0aW5mbyAgICAgICAgICAgICAgID0gYChob3N0aW5mbykgMj4vZGV2L251bGxgCisvYmluL3VuaXZlcnNlICAgICAgICAgID0gYCgvYmluL3VuaXZlcnNlKSAyPi9kZXYvbnVsbGAKKy91c3IvYmluL2FyY2ggLWsgICAgICAgPSBgKC91c3IvYmluL2FyY2ggLWspIDI+L2Rldi9udWxsYAorL2Jpbi9hcmNoICAgICAgICAgICAgICA9IGAoL2Jpbi9hcmNoKSAyPi9kZXYvbnVsbGAKKy91c3IvYmluL29zbGV2ZWwgICAgICAgPSBgKC91c3IvYmluL29zbGV2ZWwpIDI+L2Rldi9udWxsYAorL3Vzci9jb252ZXgvZ2V0c3lzaW5mbyA9IGAoL3Vzci9jb252ZXgvZ2V0c3lzaW5mbykgMj4vZGV2L251bGxgCisKK1VOQU1FX01BQ0hJTkUgPSAke1VOQU1FX01BQ0hJTkV9CitVTkFNRV9SRUxFQVNFID0gJHtVTkFNRV9SRUxFQVNFfQorVU5BTUVfU1lTVEVNICA9ICR7VU5BTUVfU1lTVEVNfQorVU5BTUVfVkVSU0lPTiA9ICR7VU5BTUVfVkVSU0lPTn0KK0VPRgorCitleGl0IDEKKworIyBMb2NhbCB2YXJpYWJsZXM6CisjIGV2YWw6IChhZGQtaG9vayAnd3JpdGUtZmlsZS1ob29rcyAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgorIyB0aW1lLXN0YW1wLWZvcm1hdDogIiU6eS0lMDJtLSUwMmQiCisjIHRpbWUtc3RhbXAtZW5kOiAiJyIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvY29uZmlnLnN1YiBiL2NvbmZpZy5zdWIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzg5NGRhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZy5zdWIKQEAgLTAsMCArMSwxNzczIEBACisjISAvYmluL3NoCisjIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNjcmlwdC4KKyMgICBDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksCisjICAgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwKKyMgICAyMDExLCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCit0aW1lc3RhbXA9JzIwMTItMDItMTAnCisKKyMgVGhpcyBmaWxlIGlzIChpbiBwcmluY2lwbGUpIGNvbW1vbiB0byBBTEwgR05VIHNvZnR3YXJlLgorIyBUaGUgcHJlc2VuY2Ugb2YgYSBtYWNoaW5lIGluIHRoaXMgZmlsZSBzdWdnZXN0cyB0aGF0IFNPTUUgR05VIHNvZnR3YXJlCisjIGNhbiBoYW5kbGUgdGhhdCBtYWNoaW5lLiAgSXQgZG9lcyBub3QgaW1wbHkgQUxMIEdOVSBzb2Z0d2FyZSBjYW4uCisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKKyMgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCisjIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCisjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworCisjIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+LiAgU3VibWl0IGEgY29udGV4dAorIyBkaWZmIGFuZCBhIHByb3Blcmx5IGZvcm1hdHRlZCBHTlUgQ2hhbmdlTG9nIGVudHJ5LgorIworIyBDb25maWd1cmF0aW9uIHN1YnJvdXRpbmUgdG8gdmFsaWRhdGUgYW5kIGNhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gdHlwZS4KKyMgU3VwcGx5IHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiB0eXBlIGFzIGFuIGFyZ3VtZW50LgorIyBJZiBpdCBpcyBpbnZhbGlkLCB3ZSBwcmludCBhbiBlcnJvciBtZXNzYWdlIG9uIHN0ZGVyciBhbmQgZXhpdCB3aXRoIGNvZGUgMS4KKyMgT3RoZXJ3aXNlLCB3ZSBwcmludCB0aGUgY2Fub25pY2FsIGNvbmZpZyB0eXBlIG9uIHN0ZG91dCBhbmQgc3VjY2VlZC4KKworIyBZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKKyMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2dpdHdlYi8/cD1jb25maWcuZ2l0O2E9YmxvYl9wbGFpbjtmPWNvbmZpZy5zdWI7aGI9SEVBRAorCisjIFRoaXMgZmlsZSBpcyBzdXBwb3NlZCB0byBiZSB0aGUgc2FtZSBmb3IgYWxsIEdOVSBwYWNrYWdlcworIyBhbmQgcmVjb2duaXplIGFsbCB0aGUgQ1BVIHR5cGVzLCBzeXN0ZW0gdHlwZXMgYW5kIGFsaWFzZXMKKyMgdGhhdCBhcmUgbWVhbmluZ2Z1bCB3aXRoICphbnkqIEdOVSBzb2Z0d2FyZS4KKyMgRWFjaCBwYWNrYWdlIGlzIHJlc3BvbnNpYmxlIGZvciByZXBvcnRpbmcgd2hpY2ggdmFsaWQgY29uZmlndXJhdGlvbnMKKyMgaXQgZG9lcyBub3Qgc3VwcG9ydC4gIFRoZSB1c2VyIHNob3VsZCBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoCisjIGEgZmFpbHVyZSB0byBzdXBwb3J0IGEgdmFsaWQgY29uZmlndXJhdGlvbiBmcm9tIGEgbWVhbmluZ2xlc3MKKyMgY29uZmlndXJhdGlvbi4KKworIyBUaGUgZ29hbCBvZiB0aGlzIGZpbGUgaXMgdG8gbWFwIGFsbCB0aGUgdmFyaW91cyB2YXJpYXRpb25zIG9mIGEgZ2l2ZW4KKyMgbWFjaGluZSBzcGVjaWZpY2F0aW9uIGludG8gYSBzaW5nbGUgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybToKKyMJQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KKyMgb3IgaW4gc29tZSBjYXNlcywgdGhlIG5ld2VyIGZvdXItcGFydCBmb3JtOgorIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KKyMgSXQgaXMgd3JvbmcgdG8gZWNobyBhbnkgb3RoZXIgdHlwZSBvZiBzcGVjaWZpY2F0aW9uLgorCittZT1gZWNobyAiJDAiIHwgc2VkIC1lICdzLC4qLywsJ2AKKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXSBDUFUtTUZSLU9QU1lTCisgICAgICAgJDAgW09QVElPTl0gQUxJQVMKKworQ2Fub25pY2FsaXplIGEgY29uZmlndXJhdGlvbiBuYW1lLgorCitPcGVyYXRpb24gbW9kZXM6CisgIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhlbHAsIHRoZW4gZXhpdAorICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0CisgIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisKK1JlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRvIDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCisKK3ZlcnNpb249IlwKK0dOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQorCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyCitGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KK3dhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKKworaGVscD0iCitUcnkgXGAkbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisKKyMgUGFyc2UgY29tbWFuZCBsaW5lCit3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC0tdGltZS1zdGFtcCB8IC0tdGltZSogfCAtdCApCisgICAgICAgZWNobyAiJHRpbWVzdGFtcCIgOyBleGl0IDs7CisgICAgLS12ZXJzaW9uIHwgLXYgKQorICAgICAgIGVjaG8gIiR2ZXJzaW9uIiA7IGV4aXQgOzsKKyAgICAtLWhlbHAgfCAtLWgqIHwgLWggKQorICAgICAgIGVjaG8gIiR1c2FnZSI7IGV4aXQgOzsKKyAgICAtLSApICAgICAjIFN0b3Agb3B0aW9uIHByb2Nlc3NpbmcKKyAgICAgICBzaGlmdDsgYnJlYWsgOzsKKyAgICAtICkJIyBVc2Ugc3RkaW4gYXMgaW5wdXQuCisgICAgICAgYnJlYWsgOzsKKyAgICAtKiApCisgICAgICAgZWNobyAiJG1lOiBpbnZhbGlkIG9wdGlvbiAkMSRoZWxwIgorICAgICAgIGV4aXQgMSA7OworCisgICAgKmxvY2FsKikKKyAgICAgICAjIEZpcnN0IHBhc3MgdGhyb3VnaCBhbnkgbG9jYWwgbWFjaGluZSB0eXBlcy4KKyAgICAgICBlY2hvICQxCisgICAgICAgZXhpdCA7OworCisgICAgKiApCisgICAgICAgYnJlYWsgOzsKKyAgZXNhYworZG9uZQorCitjYXNlICQjIGluCisgMCkgZWNobyAiJG1lOiBtaXNzaW5nIGFyZ3VtZW50JGhlbHAiID4mMgorICAgIGV4aXQgMTs7CisgMSkgOzsKKyAqKSBlY2hvICIkbWU6IHRvbyBtYW55IGFyZ3VtZW50cyRoZWxwIiA+JjIKKyAgICBleGl0IDE7OworZXNhYworCisjIFNlcGFyYXRlIHdoYXQgdGhlIHVzZXIgZ2F2ZSBpbnRvIENQVS1DT01QQU5ZIGFuZCBPUyBvciBLRVJORUwtT1MgKGlmIGFueSkuCisjIEhlcmUgd2UgbXVzdCByZWNvZ25pemUgYWxsIHRoZSB2YWxpZCBLRVJORUwtT1MgY29tYmluYXRpb25zLgorbWF5YmVfb3M9YGVjaG8gJDEgfCBzZWQgJ3MvXlwoLipcKS1cKFteLV0qLVteLV0qXCkkL1wyLydgCitjYXNlICRtYXliZV9vcyBpbgorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCisgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKKyAgICBvcz0tJG1heWJlX29zCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKKyAgICA7OworICBhbmRyb2lkLWxpbnV4KQorICAgIG9zPS1saW51eC1hbmRyb2lkCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AtdW5rbm93bgorICAgIDs7CisgICopCisgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy8tW14tXSokLy8nYAorICAgIGlmIFsgJGJhc2ljX21hY2hpbmUgIT0gJDEgXQorICAgIHRoZW4gb3M9YGVjaG8gJDEgfCBzZWQgJ3MvLiotLy0vJ2AKKyAgICBlbHNlIG9zPTsgZmkKKyAgICA7OworZXNhYworCisjIyMgTGV0J3MgcmVjb2duaXplIGNvbW1vbiBtYWNoaW5lcyBhcyBub3QgYmVpbmcgb3BlcmF0aW5nIHN5c3RlbXMgc28KKyMjIyB0aGF0IHRoaW5ncyBsaWtlIGNvbmZpZy5zdWIgZGVjc3RhdGlvbi0zMTAwIHdvcmsuICBXZSBhbHNvCisjIyMgcmVjb2duaXplIHNvbWUgbWFudWZhY3R1cmVycyBhcyBub3QgYmVpbmcgb3BlcmF0aW5nIHN5c3RlbXMsIHNvIHdlCisjIyMgY2FuIHByb3ZpZGUgZGVmYXVsdCBvcGVyYXRpbmcgc3lzdGVtcyBiZWxvdy4KK2Nhc2UgJG9zIGluCisJLXN1bipvcyopCisJCSMgUHJldmVudCBmb2xsb3dpbmcgY2xhdXNlIGZyb20gaGFuZGxpbmcgdGhpcyBpbnZhbGlkIGlucHV0LgorCQk7OworCS1kZWMqIHwgLW1pcHMqIHwgLXNlcXVlbnQqIHwgLWVuY29yZSogfCAtcGM1MzIqIHwgLXNnaSogfCAtc29ueSogfCBcCisJLWF0dCogfCAtNzMwMCogfCAtMzMwMCogfCAtZGVsdGEqIHwgLW1vdG9yb2xhKiB8IC1zdW5bMjM0XSogfCBcCisJLXVuaWNvbSogfCAtaWJtKiB8IC1uZXh0IHwgLWhwIHwgLWlzaSogfCAtYXBvbGxvIHwgLWFsdG9zKiB8IFwKKwktY29udmVyZ2VudCogfCAtbmNyKiB8IC1uZXdzIHwgLTMyKiB8IC0zNjAwKiB8IC0zMTAwKiB8IC1oaXRhY2hpKiB8XAorCS1jWzEyM10qIHwgLWNvbnZleCogfCAtc3VuIHwgLWNyZHMgfCAtb21yb24qIHwgLWRnIHwgLXVsdHJhIHwgLXR0aSogfCBcCisJLWhhcnJpcyB8IC1kb2xwaGluIHwgLWhpZ2hsZXZlbCB8IC1nb3VsZCB8IC1jYm0gfCAtbnMgfCAtbWFzc2NvbXAgfCBcCisJLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSB8IC1taWNyb2JsYXplKQorCQlvcz0KKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1ibHVlZ2VuZSopCisJCW9zPS1jbmsKKwkJOzsKKwktc2ltIHwgLWNpc2NvIHwgLW9raSB8IC13ZWMgfCAtd2luYm9uZCkKKwkJb3M9CisJCWJhc2ljX21hY2hpbmU9JDEKKwkJOzsKKwktc2NvdXQpCisJCTs7CisJLXdycykKKwkJb3M9LXZ4d29ya3MKKwkJYmFzaWNfbWFjaGluZT0kMQorCQk7OworCS1jaG9ydXNvcyopCisJCW9zPS1jaG9ydXNvcworCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWNob3J1c3JkYikKKwkJb3M9LWNob3J1c3JkYgorCQliYXNpY19tYWNoaW5lPSQxCisJCTs7CisJLWhpdXgqKQorCQlvcz0taGl1eHdlMgorCQk7OworCS1zY282KQorCQlvcz0tc2NvNXY2CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNSkKKwkJb3M9LXNjbzMuMnY1CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNCkKKwkJb3M9LXNjbzMuMnY0CisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvMy4yLls0LTldKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzL3NjbzMuMi4vc2NvMy4ydi8nYAorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLXNjbzMuMnZbNC05XSopCisJCSMgRG9uJ3QgZm9yZ2V0IHZlcnNpb24gaWYgaXQgaXMgMy4ydjQgb3IgbmV3ZXIuCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtcGMvJ2AKKwkJOzsKKwktc2NvNXY2KikKKwkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBpcyAzLjJ2NCBvciBuZXdlci4KKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS1zY28qKQorCQlvcz0tc2NvMy4ydjIKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni0uKi84Ni1wYy8nYAorCQk7OworCS11ZGsqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWlzYykKKwkJb3M9LWlzYzIuMgorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWNsaXgqKQorCQliYXNpY19tYWNoaW5lPWNsaXBwZXItaW50ZXJncmFwaAorCQk7OworCS1pc2MqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LS4qLzg2LXBjLydgCisJCTs7CisJLWx5bngqKQorCQlvcz0tbHlueG9zCisJCTs7CisJLXB0eCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYtLiovODYtc2VxdWVudC8nYAorCQk7OworCS13aW5kb3dzbnQqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3Mvd2luZG93c250L3dpbm50LydgCisJCTs7CisJLXBzb3MqKQorCQlvcz0tcHNvcworCQk7OworCS1taW50IHwgLW1pbnRbMC05XSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hdGFyaQorCQlvcz0tbWludAorCQk7OworZXNhYworCisjIERlY29kZSBhbGlhc2VzIGZvciBjZXJ0YWluIENQVS1DT01QQU5ZIGNvbWJpbmF0aW9ucy4KK2Nhc2UgJGJhc2ljX21hY2hpbmUgaW4KKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhvdXQgY29tcGFueSBuYW1lLgorCSMgU29tZSBhcmUgb21pdHRlZCBoZXJlIGJlY2F1c2UgdGhleSBoYXZlIHNwZWNpYWwgbWVhbmluZ3MgYmVsb3cuCisJMTc1MGEgfCA1ODAgXAorCXwgYTI5ayBcCisJfCBhYXJjaDY0IHwgYWFyY2g2NF9iZSBcCisJfCBhbHBoYSB8IGFscGhhZXZbNC04XSB8IGFscGhhZXY1NiB8IGFscGhhZXY2Wzc4XSB8IGFscGhhcGNhNVs2N10gXAorCXwgYWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4XSB8IGFscGhhNjRwY2E1WzY3XSBcCisJfCBhbTMzXzIuMCBcCisJfCBhcmMgfCBhcm0gfCBhcm1bYmxdZSB8IGFybWVbbGJdIHwgYXJtdlsyMzQ1XSB8IGFybXZbMzQ1XVtsYl0gfCBhdnIgfCBhdnIzMiBcCisgICAgICAgIHwgYmUzMiB8IGJlNjQgXAorCXwgYmZpbiBcCisJfCBjNHggfCBjbGlwcGVyIFwKKwl8IGQxMHYgfCBkMzB2IHwgZGx4IHwgZHNwMTZ4eCBcCisJfCBlcGlwaGFueSBcCisJfCBmaWRvIHwgZnIzMCB8IGZydiBcCisJfCBoODMwMCB8IGg4NTAwIHwgaHBwYSB8IGhwcGExLlswMV0gfCBocHBhMi4wIHwgaHBwYTIuMFtud10gfCBocHBhNjQgXAorCXwgaGV4YWdvbiBcCisJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKKwl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbGUzMiB8IGxlNjQgXAorCXwgbG0zMiBcCisJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKKwl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCB8IG1ldGFnIFwKKwl8IG1pcHMgfCBtaXBzYmUgfCBtaXBzZWIgfCBtaXBzZWwgfCBtaXBzbGUgXAorCXwgbWlwczE2IFwKKwl8IG1pcHM2NCB8IG1pcHM2NGVsIFwKKwl8IG1pcHM2NG9jdGVvbiB8IG1pcHM2NG9jdGVvbmVsIFwKKwl8IG1pcHM2NG9yaW9uIHwgbWlwczY0b3Jpb25lbCBcCisJfCBtaXBzNjRyNTkwMCB8IG1pcHM2NHI1OTAwZWwgXAorCXwgbWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKKwl8IG1pcHM2NHZyNDEwMCB8IG1pcHM2NHZyNDEwMGVsIFwKKwl8IG1pcHM2NHZyNDMwMCB8IG1pcHM2NHZyNDMwMGVsIFwKKwl8IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZyNTAwMGVsIFwKKwl8IG1pcHM2NHZyNTkwMCB8IG1pcHM2NHZyNTkwMGVsIFwKKwl8IG1pcHNpc2EzMiB8IG1pcHNpc2EzMmVsIFwKKwl8IG1pcHNpc2EzMnIyIHwgbWlwc2lzYTMycjJlbCBcCisJfCBtaXBzaXNhNjQgfCBtaXBzaXNhNjRlbCBcCisJfCBtaXBzaXNhNjRyMiB8IG1pcHNpc2E2NHIyZWwgXAorCXwgbWlwc2lzYTY0c2IxIHwgbWlwc2lzYTY0c2IxZWwgXAorCXwgbWlwc2lzYTY0c3I3MWsgfCBtaXBzaXNhNjRzcjcxa2VsIFwKKwl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCisJfCBtbjEwMjAwIHwgbW4xMDMwMCBcCisJfCBtb3hpZSBcCisJfCBtdCBcCisJfCBtc3A0MzAgXAorCXwgbmRzMzIgfCBuZHMzMmxlIHwgbmRzMzJiZSBcCisJfCBuaW9zIHwgbmlvczIgXAorCXwgbnMxNmsgfCBuczMyayBcCisJfCBvcGVuOCBcCisJfCBvcjMyIFwKKwl8IHBkcDEwIHwgcGRwMTEgfCBwaiB8IHBqbCBcCisJfCBwb3dlcnBjIHwgcG93ZXJwYzY0IHwgcG93ZXJwYzY0bGUgfCBwb3dlcnBjbGUgXAorCXwgcHlyYW1pZCBcCisJfCBybDc4IHwgcnggXAorCXwgc2NvcmUgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKKwl8IHNoNjQgfCBzaDY0bGUgXAorCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAorCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKKwl8IHNwdSBcCisJfCB0YWhvZSB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAorCXwgdWJpY29tMzIgXAorCXwgdjg1MCB8IHY4NTBlIHwgdjg1MGUxIHwgdjg1MGUyIHwgdjg1MGVzIHwgdjg1MGUydjMgXAorCXwgd2UzMmsgXAorCXwgeDg2IHwgeGMxNnggfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAorCXwgejhrIHwgejgwKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJOzsKKwljNTR4KQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC11bmtub3duCisJCTs7CisJYzU1eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgorCQk7OworCWM2eCkKKwkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCisJCTs7CisJbTY4MTEgfCBtNjhoYzExIHwgbTY4MTIgfCBtNjhoYzEyIHwgbTY4aGNzMTJ4IHwgcGljb2NoaXApCisJCWJhc2ljX21hY2hpbmU9JGJhc2ljX21hY2hpbmUtdW5rbm93bgorCQlvcz0tbm9uZQorCQk7OworCW04ODExMCB8IG02ODBbMTIzNDZdMCB8IG02ODM/MiB8IG02ODM2MCB8IG01MjAwIHwgdjcwIHwgdzY1IHwgejhrKQorCQk7OworCW1zMSkKKwkJYmFzaWNfbWFjaGluZT1tdC11bmtub3duCisJCTs7CisKKwlzdHJvbmdhcm0gfCB0aHVtYiB8IHhzY2FsZSkKKwkJYmFzaWNfbWFjaGluZT1hcm0tdW5rbm93bgorCQk7OworCXhnYXRlKQorCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KKwkJb3M9LW5vbmUKKwkJOzsKKwl4c2NhbGVlYikKKwkJYmFzaWNfbWFjaGluZT1hcm1lYi11bmtub3duCisJCTs7CisKKwl4c2NhbGVlbCkKKwkJYmFzaWNfbWFjaGluZT1hcm1lbC11bmtub3duCisJCTs7CisKKwkjIFdlIHVzZSBgcGMnIHJhdGhlciB0aGFuIGB1bmtub3duJworCSMgYmVjYXVzZSAoMSkgdGhhdCdzIHdoYXQgdGhleSBub3JtYWxseSBhcmUsIGFuZAorCSMgKDIpIHRoZSB3b3JkICJ1bmtub3duIiB0ZW5kcyB0byBjb25mdXNlIGJlZ2lubmluZyB1c2Vycy4KKwlpKjg2IHwgeDg2XzY0KQorCSAgYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS1wYworCSAgOzsKKwkjIE9iamVjdCBpZiBtb3JlIHRoYW4gb25lIGNvbXBhbnkgbmFtZSB3b3JkLgorCSotKi0qKQorCQllY2hvIEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IG1hY2hpbmUgXGAkYmFzaWNfbWFjaGluZVwnIG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7CisJIyBSZWNvZ25pemUgdGhlIGJhc2ljIENQVSB0eXBlcyB3aXRoIGNvbXBhbnkgbmFtZS4KKwk1ODAtKiBcCisJfCBhMjlrLSogXAorCXwgYWFyY2g2NC0qIHwgYWFyY2g2NF9iZS0qIFwKKwl8IGFscGhhLSogfCBhbHBoYWV2WzQtOF0tKiB8IGFscGhhZXY1Ni0qIHwgYWxwaGFldjZbNzhdLSogXAorCXwgYWxwaGE2NC0qIHwgYWxwaGE2NGV2WzQtOF0tKiB8IGFscGhhNjRldjU2LSogfCBhbHBoYTY0ZXY2Wzc4XS0qIFwKKwl8IGFscGhhcGNhNVs2N10tKiB8IGFscGhhNjRwY2E1WzY3XS0qIHwgYXJjLSogXAorCXwgYXJtLSogIHwgYXJtYmUtKiB8IGFybWxlLSogfCBhcm1lYi0qIHwgYXJtdiotKiBcCisJfCBhdnItKiB8IGF2cjMyLSogXAorCXwgYmUzMi0qIHwgYmU2NC0qIFwKKwl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKKwl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIFwKKwl8IGNsaXBwZXItKiB8IGNyYXludi0qIHwgY3lkcmEtKiBcCisJfCBkMTB2LSogfCBkMzB2LSogfCBkbHgtKiBcCisJfCBlbHhzaS0qIFwKKwl8IGYzMFswMV0tKiB8IGY3MDAtKiB8IGZpZG8tKiB8IGZyMzAtKiB8IGZydi0qIHwgZng4MC0qIFwKKwl8IGg4MzAwLSogfCBoODUwMC0qIFwKKwl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCisJfCBoZXhhZ29uLSogXAorCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKKwl8IGlwMmstKiB8IGlxMjAwMC0qIFwKKwl8IGxlMzItKiB8IGxlNjQtKiBcCisJfCBsbTMyLSogXAorCXwgbTMyYy0qIHwgbTMyci0qIHwgbTMycmxlLSogXAorCXwgbTY4MDAwLSogfCBtNjgwWzAxMjM0Nl0wLSogfCBtNjgzNjAtKiB8IG02ODM/Mi0qIHwgbTY4ay0qIFwKKwl8IG04ODExMC0qIHwgbTg4ay0qIHwgbWF4cS0qIHwgbWNvcmUtKiB8IG1ldGFnLSogfCBtaWNyb2JsYXplLSogXAorCXwgbWlwcy0qIHwgbWlwc2JlLSogfCBtaXBzZWItKiB8IG1pcHNlbC0qIHwgbWlwc2xlLSogXAorCXwgbWlwczE2LSogXAorCXwgbWlwczY0LSogfCBtaXBzNjRlbC0qIFwKKwl8IG1pcHM2NG9jdGVvbi0qIHwgbWlwczY0b2N0ZW9uZWwtKiBcCisJfCBtaXBzNjRvcmlvbi0qIHwgbWlwczY0b3Jpb25lbC0qIFwKKwl8IG1pcHM2NHI1OTAwLSogfCBtaXBzNjRyNTkwMGVsLSogXAorCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjR2cjQxMDAtKiB8IG1pcHM2NHZyNDEwMGVsLSogXAorCXwgbWlwczY0dnI0MzAwLSogfCBtaXBzNjR2cjQzMDBlbC0qIFwKKwl8IG1pcHM2NHZyNTAwMC0qIHwgbWlwczY0dnI1MDAwZWwtKiBcCisJfCBtaXBzNjR2cjU5MDAtKiB8IG1pcHM2NHZyNTkwMGVsLSogXAorCXwgbWlwc2lzYTMyLSogfCBtaXBzaXNhMzJlbC0qIFwKKwl8IG1pcHNpc2EzMnIyLSogfCBtaXBzaXNhMzJyMmVsLSogXAorCXwgbWlwc2lzYTY0LSogfCBtaXBzaXNhNjRlbC0qIFwKKwl8IG1pcHNpc2E2NHIyLSogfCBtaXBzaXNhNjRyMmVsLSogXAorCXwgbWlwc2lzYTY0c2IxLSogfCBtaXBzaXNhNjRzYjFlbC0qIFwKKwl8IG1pcHNpc2E2NHNyNzFrLSogfCBtaXBzaXNhNjRzcjcxa2VsLSogXAorCXwgbWlwc3R4MzktKiB8IG1pcHN0eDM5ZWwtKiBcCisJfCBtbWl4LSogXAorCXwgbXQtKiBcCisJfCBtc3A0MzAtKiBcCisJfCBuZHMzMi0qIHwgbmRzMzJsZS0qIHwgbmRzMzJiZS0qIFwKKwl8IG5pb3MtKiB8IG5pb3MyLSogXAorCXwgbm9uZS0qIHwgbnAxLSogfCBuczE2ay0qIHwgbnMzMmstKiBcCisJfCBvcGVuOC0qIFwKKwl8IG9yaW9uLSogXAorCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCisJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiBcCisJfCBweXJhbWlkLSogXAorCXwgcmw3OC0qIHwgcm9tcC0qIHwgcnM2MDAwLSogfCByeC0qIFwKKwl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjRdYWViLSogfCBzaFsyM11lLSogfCBzaFszNF1lYi0qIHwgc2hlYi0qIHwgc2hiZS0qIFwKKwl8IHNobGUtKiB8IHNoWzEyMzRdbGUtKiB8IHNoM2VsZS0qIHwgc2g2NC0qIHwgc2g2NGxlLSogXAorCXwgc3BhcmMtKiB8IHNwYXJjNjQtKiB8IHNwYXJjNjRiLSogfCBzcGFyYzY0di0qIHwgc3BhcmM4NngtKiB8IHNwYXJjbGV0LSogXAorCXwgc3BhcmNsaXRlLSogXAorCXwgc3BhcmN2OC0qIHwgc3BhcmN2OS0qIHwgc3BhcmN2OWItKiB8IHNwYXJjdjl2LSogfCBzdjEtKiB8IHN4Py0qIFwKKwl8IHRhaG9lLSogXAorCXwgdGljMzAtKiB8IHRpYzR4LSogfCB0aWM1NHgtKiB8IHRpYzU1eC0qIHwgdGljNngtKiB8IHRpYzgwLSogXAorCXwgdGlsZSotKiBcCisJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCisJfCB2ODUwLSogfCB2ODUwZS0qIHwgdjg1MGUxLSogfCB2ODUwZXMtKiB8IHY4NTBlMi0qIHwgdjg1MGUydjMtKiBcCisJfCB2YXgtKiBcCisJfCB3ZTMyay0qIFwKKwl8IHg4Ni0qIHwgeDg2XzY0LSogfCB4YzE2eC0qIHwgeHBzMTAwLSogXAorCXwgeHN0b3JteTE2LSogfCB4dGVuc2EqLSogXAorCXwgeW1wLSogXAorCXwgejhrLSogfCB6ODAtKikKKwkJOzsKKwkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhvdXQgY29tcGFueSBuYW1lLCB3aXRoIGdsb2IgbWF0Y2guCisJeHRlbnNhKikKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCTs7CisJIyBSZWNvZ25pemUgdGhlIHZhcmlvdXMgbWFjaGluZSBuYW1lcyBhbmQgYWxpYXNlcyB3aGljaCBzdGFuZAorCSMgZm9yIGEgQ1BVIHR5cGUgYW5kIGEgY29tcGFueSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4gT1MuCisJMzg2YnNkKQorCQliYXNpY19tYWNoaW5lPWkzODYtdW5rbm93bgorCQlvcz0tYnNkCisJCTs7CisJM2IxIHwgNzMwMCB8IDczMDAtYXR0IHwgYXR0LTczMDAgfCBwYzczMDAgfCBzYWZhcmkgfCB1bml4cGMpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWF0dAorCQk7OworCTNiKikKKwkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKKwkJOzsKKwlhMjlraGlmKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwlhYmFjdXMpCisJCWJhc2ljX21hY2hpbmU9YWJhY3VzLXVua25vd24KKwkJOzsKKwlhZG9iZTY4aykKKwkJYmFzaWNfbWFjaGluZT1tNjgwMTAtYWRvYmUKKwkJb3M9LXNjb3V0CisJCTs7CisJYWxsaWFudCB8IGZ4ODApCisJCWJhc2ljX21hY2hpbmU9Zng4MC1hbGxpYW50CisJCTs7CisJYWx0b3MgfCBhbHRvczMwNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hbHRvcworCQk7OworCWFtMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstbm9uZQorCQlvcz0tYnNkCisJCTs7CisJYW1kNjQpCisJCWJhc2ljX21hY2hpbmU9eDg2XzY0LXBjCisJCTs7CisJYW1kNjQtKikKKwkJYmFzaWNfbWFjaGluZT14ODZfNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlhbWRhaGwpCisJCWJhc2ljX21hY2hpbmU9NTgwLWFtZGFobAorCQlvcz0tc3lzdgorCQk7OworCWFtaWdhIHwgYW1pZ2EtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJOzsKKwlhbWlnYW9zIHwgYW1pZ2Fkb3MpCisJCWJhc2ljX21hY2hpbmU9bTY4ay11bmtub3duCisJCW9zPS1hbWlnYW9zCisJCTs7CisJYW1pZ2F1bml4IHwgYW1peCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LXN5c3Y0CisJCTs7CisJYXBvbGxvNjgpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1hcG9sbG8KKwkJb3M9LXN5c3YKKwkJOzsKKwlhcG9sbG82OGJzZCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbworCQlvcz0tYnNkCisJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CisJYXV4KQorCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKKwkJb3M9LWF1eAorCQk7OworCWJhbGFuY2UpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwlibGFja2ZpbikKKwkJYmFzaWNfbWFjaGluZT1iZmluLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJYmxhY2tmaW4tKikKKwkJYmFzaWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM5MCkKKwkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY2VnY2MpCisJCWJhc2ljX21hY2hpbmU9YXJtLXVua25vd24KKwkJb3M9LWNlZ2NjCisJCTs7CisJY29udmV4LWMxKQorCQliYXNpY19tYWNoaW5lPWMxLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMyKQorCQliYXNpY19tYWNoaW5lPWMyLWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY29udmV4LWMzMikKKwkJYmFzaWNfbWFjaGluZT1jMzItY29udmV4CisJCW9zPS1ic2QKKwkJOzsKKwljb252ZXgtYzM0KQorCQliYXNpY19tYWNoaW5lPWMzNC1jb252ZXgKKwkJb3M9LWJzZAorCQk7OworCWNvbnZleC1jMzgpCisJCWJhc2ljX21hY2hpbmU9YzM4LWNvbnZleAorCQlvcz0tYnNkCisJCTs7CisJY3JheSB8IGo5MCkKKwkJYmFzaWNfbWFjaGluZT1qOTAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJY3JheW52KQorCQliYXNpY19tYWNoaW5lPWNyYXludi1jcmF5CisJCW9zPS11bmljb3NtcAorCQk7OworCWNyMTYgfCBjcjE2LSopCisJCWJhc2ljX21hY2hpbmU9Y3IxNi11bmtub3duCisJCW9zPS1lbGYKKwkJOzsKKwljcmRzIHwgdW5vcykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWNyZHMKKwkJOzsKKwljcmlzdjMyIHwgY3Jpc3YzMi0qIHwgZXRyYXhmcyopCisJCWJhc2ljX21hY2hpbmU9Y3Jpc3YzMi1heGlzCisJCTs7CisJY3JpcyB8IGNyaXMtKiB8IGV0cmF4KikKKwkJYmFzaWNfbWFjaGluZT1jcmlzLWF4aXMKKwkJOzsKKwljcngpCisJCWJhc2ljX21hY2hpbmU9Y3J4LXVua25vd24KKwkJb3M9LWVsZgorCQk7OworCWRhMzAgfCBkYTMwLSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1kYTMwCisJCTs7CisJZGVjc3RhdGlvbiB8IGRlY3N0YXRpb24tMzEwMCB8IHBtYXggfCBwbWF4LSogfCBwbWluIHwgZGVjMzEwMCB8IGRlY3N0YXRuKQorCQliYXNpY19tYWNoaW5lPW1pcHMtZGVjCisJCTs7CisJZGVjc3lzdGVtMTAqIHwgZGVjMTAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczEwCisJCTs7CisJZGVjc3lzdGVtMjAqIHwgZGVjMjAqKQorCQliYXNpY19tYWNoaW5lPXBkcDEwLWRlYworCQlvcz0tdG9wczIwCisJCTs7CisJZGVsdGEgfCAzMzAwIHwgbW90b3JvbGEtMzMwMCB8IG1vdG9yb2xhLWRlbHRhIFwKKwkgICAgICB8IDMzMDAtbW90b3JvbGEgfCBkZWx0YS1tb3Rvcm9sYSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW1vdG9yb2xhCisJCTs7CisJZGVsdGE4OCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLW1vdG9yb2xhCisJCW9zPS1zeXN2MworCQk7OworCWRpY29zKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJb3M9LWRpY29zCisJCTs7CisJZGpncHApCisJCWJhc2ljX21hY2hpbmU9aTU4Ni1wYworCQlvcz0tbXNkb3NkamdwcAorCQk7OworCWRweDIwIHwgZHB4MjAtKikKKwkJYmFzaWNfbWFjaGluZT1yczYwMDAtYnVsbAorCQlvcz0tYm9zeAorCQk7OworCWRweDIqIHwgZHB4MiotYnVsbCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWJ1bGwKKwkJb3M9LXN5c3YzCisJCTs7CisJZWJtb24yOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKKwkJb3M9LWVibW9uCisJCTs7CisJZWx4c2kpCisJCWJhc2ljX21hY2hpbmU9ZWx4c2ktZWx4c2kKKwkJb3M9LWJzZAorCQk7OworCWVuY29yZSB8IHVtYXggfCBtbWF4KQorCQliYXNpY19tYWNoaW5lPW5zMzJrLWVuY29yZQorCQk7OworCWVzMTgwMCB8IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9TRSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWVyaWNzc29uCisJCW9zPS1vc2UKKwkJOzsKKwlmeDI4MDApCisJCWJhc2ljX21hY2hpbmU9aTg2MC1hbGxpYW50CisJCTs7CisJZ2VuaXgpCisJCWJhc2ljX21hY2hpbmU9bnMzMmstbnMKKwkJOzsKKwlnbWljcm8pCisJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KKwkJb3M9LXN5c3YKKwkJOzsKKwlnbzMyKQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJb3M9LWdvMzIKKwkJOzsKKwloMzA1MHIqIHwgaGl1eCopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1oaXRhY2hpCisJCW9zPS1oaXV4d2UyCisJCTs7CisJaDgzMDBobXMpCisJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQorCQlvcz0taG1zCisJCTs7CisJaDgzMDB4cmF5KQorCQliYXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKKwkJb3M9LXhyYXkKKwkJOzsKKwloODUwMGhtcykKKwkJYmFzaWNfbWFjaGluZT1oODUwMC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwloYXJyaXMpCisJCWJhc2ljX21hY2hpbmU9bTg4ay1oYXJyaXMKKwkJb3M9LXN5c3YzCisJCTs7CisJaHAzMDAtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCisJCTs7CisJaHAzMDBic2QpCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQlvcz0tYnNkCisJCTs7CisJaHAzMDBocHV4KQorCQliYXNpY19tYWNoaW5lPW02OGstaHAKKwkJb3M9LWhwdXgKKwkJOzsKKwlocDNrOVswLTldWzAtOV0gfCBocDlbMC05XVswLTldKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjAtaHAKKwkJOzsKKwlocDlrMlswLTldWzAtOV0gfCBocDlrMzFbMC05XSkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtaHAKKwkJOzsKKwlocDlrM1syLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9bTY4ay1ocAorCQk7OworCWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03OV1bMC05XSkKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azc4WzAtOV0gfCBocDc4WzAtOV0pCisJCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0gfCBocDgwWzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKKwkJIyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCisJCTs7CisJaHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQk7OworCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTldWzAtOV0pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMC1ocAorCQk7OworCWhwcGEtbmV4dCkKKwkJb3M9LW5leHRzdGVwMworCQk7OworCWhwcGFvc2YpCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tb3NmCisJCTs7CisJaHBwcm8pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1ocAorCQlvcz0tcHJvZWxmCisJCTs7CisJaTM3MC1pYm0qIHwgaWJtKikKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQk7OworCWkqODZ2MzIpCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJDEgfCBzZWQgLWUgJ3MvODYuKi84Ni1wYy8nYAorCQlvcz0tc3lzdjMyCisJCTs7CisJaSo4NnY0KikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zeXN2NAorCQk7OworCWkqODZ2KQorCQliYXNpY19tYWNoaW5lPWBlY2hvICQxIHwgc2VkIC1lICdzLzg2LiovODYtcGMvJ2AKKwkJb3M9LXN5c3YKKwkJOzsKKwlpKjg2c29sMikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAtZSAncy84Ni4qLzg2LXBjLydgCisJCW9zPS1zb2xhcmlzMgorCQk7OworCWkzODZtYWNoKQorCQliYXNpY19tYWNoaW5lPWkzODYtbWFjaAorCQlvcz0tbWFjaAorCQk7OworCWkzODYtdnN0YSB8IHZzdGEpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni11bmtub3duCisJCW9zPS12c3RhCisJCTs7CisJaXJpcyB8IGlyaXM0ZCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLXNnaQorCQljYXNlICRvcyBpbgorCQkgICAgLWlyaXgqKQorCQkJOzsKKwkJICAgICopCisJCQlvcz0taXJpeDQKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwlpc2k2OCB8IGlzaSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWlzaQorCQlvcz0tc3lzdgorCQk7OworCW02OGtub21tdSkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KKwkJb3M9LWxpbnV4CisJCTs7CisJbTY4a25vbW11LSopCisJCWJhc2ljX21hY2hpbmU9bTY4ay1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQlvcz0tbGludXgKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJYmFzaWNfbWFjaGluZT1tODhrLW9tcm9uCisJCTs7CisJbWFnbnVtIHwgbTMyMzApCisJCWJhc2ljX21hY2hpbmU9bWlwcy1taXBzCisJCW9zPS1zeXN2CisJCTs7CisJbWVybGluKQorCQliYXNpY19tYWNoaW5lPW5zMzJrLXV0ZWsKKwkJb3M9LXN5c3YKKwkJOzsKKwltaWNyb2JsYXplKQorCQliYXNpY19tYWNoaW5lPW1pY3JvYmxhemUteGlsaW54CisJCTs7CisJbWluZ3czMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1taW5ndzMyCisJCTs7CisJbWluZ3czMmNlKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1taW5ndzMyY2UKKwkJOzsKKwltaW5pZnJhbWUpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLWNvbnZlcmdlbnQKKwkJOzsKKwkqbWludCB8IC1taW50WzAtOV0qIHwgKk1pTlQgfCAqTWlOVFswLTldKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWF0YXJpCisJCW9zPS1taW50CisJCTs7CisJbWlwczMqLSopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgLWUgJ3MvbWlwczMvbWlwczY0LydgCisJCTs7CisJbWlwczMqKQorCQliYXNpY19tYWNoaW5lPWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkIC1lICdzL21pcHMzL21pcHM2NC8nYC11bmtub3duCisJCTs7CisJbW9uaXRvcikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4aworCQlvcz0tY29mZgorCQk7OworCW1vcnBob3MpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy11bmtub3duCisJCW9zPS1tb3JwaG9zCisJCTs7CisJbXNkb3MpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tbXNkb3MKKwkJOzsKKwltczEtKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAtZSAncy9tczEtL210LS8nYAorCQk7OworCW1zeXMpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYworCQlvcz0tbXN5cworCQk7OworCW12cykKKwkJYmFzaWNfbWFjaGluZT1pMzcwLWlibQorCQlvcz0tbXZzCisJCTs7CisJbmFjbCkKKwkJYmFzaWNfbWFjaGluZT1sZTMyLXVua25vd24KKwkJb3M9LW5hY2wKKwkJOzsKKwluY3IzMDAwKQorCQliYXNpY19tYWNoaW5lPWk0ODYtbmNyCisJCW9zPS1zeXN2NAorCQk7OworCW5ldGJzZDM4NikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXVua25vd24KKwkJb3M9LW5ldGJzZAorCQk7OworCW5ldHdpbmRlcikKKwkJYmFzaWNfbWFjaGluZT1hcm12NGwtcmViZWwKKwkJb3M9LWxpbnV4CisJCTs7CisJbmV3cyB8IG5ld3M3MDAgfCBuZXdzODAwIHwgbmV3czkwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXNvbnkKKwkJb3M9LW5ld3NvcworCQk7OworCW5ld3MxMDAwKQorCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZXdzLTM2MDAgfCByaXNjLW5ld3MpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zb255CisJCW9zPS1uZXdzb3MKKwkJOzsKKwluZWN2NzApCisJCWJhc2ljX21hY2hpbmU9djcwLW5lYworCQlvcz0tc3lzdgorCQk7OworCW5leHQgfCBtKi1uZXh0ICkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLW5leHQKKwkJY2FzZSAkb3MgaW4KKwkJICAgIC1uZXh0c3RlcCogKQorCQkJOzsKKwkJICAgIC1uczIqKQorCQkgICAgICBvcz0tbmV4dHN0ZXAyCisJCQk7OworCQkgICAgKikKKwkJICAgICAgb3M9LW5leHRzdGVwMworCQkJOzsKKwkJZXNhYworCQk7OworCW5oMzAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5oWzQ1XTAwMCkKKwkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcworCQlvcz0tY3h1eAorCQk7OworCW5pbmR5OTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW5pbmR5CisJCTs7CisJbW9uOTYwKQorCQliYXNpY19tYWNoaW5lPWk5NjAtaW50ZWwKKwkJb3M9LW1vbjk2MAorCQk7OworCW5vbnN0b3B1eCkKKwkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQorCQlvcz0tbm9uc3RvcHV4CisJCTs7CisJbnAxKQorCQliYXNpY19tYWNoaW5lPW5wMS1nb3VsZAorCQk7OworCW5lby10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bmVvLXRhbmRlbQorCQk7OworCW5zZS10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNlLXRhbmRlbQorCQk7OworCW5zci10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnNyLXRhbmRlbQorCQk7OworCW9wNTBuLSogfCBvcDYwYy0qKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCisJCW9zPS1wcm9lbGYKKwkJOzsKKwlvcGVucmlzYyB8IG9wZW5yaXNjLSopCisJCWJhc2ljX21hY2hpbmU9b3IzMi11bmtub3duCisJCTs7CisJb3M0MDApCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1pYm0KKwkJb3M9LW9zNDAwCisJCTs7CisJT1NFNjgwMDAgfCBvc2U2ODAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjgwMDAtZXJpY3Nzb24KKwkJb3M9LW9zZQorCQk7OworCW9zNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstbm9uZQorCQlvcz0tb3M2OGsKKwkJOzsKKwlwYS1oaXRhY2hpKQorCQliYXNpY19tYWNoaW5lPWhwcGExLjEtaGl0YWNoaQorCQlvcz0taGl1eHdlMgorCQk7OworCXBhcmFnb24pCisJCWJhc2ljX21hY2hpbmU9aTg2MC1pbnRlbAorCQlvcz0tb3NmCisJCTs7CisJcGFyaXNjKQorCQliYXNpY19tYWNoaW5lPWhwcGEtdW5rbm93bgorCQlvcz0tbGludXgKKwkJOzsKKwlwYXJpc2MtKikKKwkJYmFzaWNfbWFjaGluZT1ocHBhLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCW9zPS1saW51eAorCQk7OworCXBiZCkKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy10dGkKKwkJOzsKKwlwYmIpCisJCWJhc2ljX21hY2hpbmU9bTY4ay10dGkKKwkJOzsKKwlwYzUzMiB8IHBjNTMyLSopCisJCWJhc2ljX21hY2hpbmU9bnMzMmstcGM1MzIKKwkJOzsKKwlwYzk4KQorCQliYXNpY19tYWNoaW5lPWkzODYtcGMKKwkJOzsKKwlwYzk4LSopCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBlbnRpdW0gfCBwNSB8IGs1IHwgazYgfCBuZXhnZW4gfCB2aWFjMykKKwkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCisJCTs7CisJcGVudGl1bXBybyB8IHA2IHwgNng4NiB8IGF0aGxvbiB8IGF0aGxvbl8qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJOzsKKwlwZW50aXVtaWkgfCBwZW50aXVtMiB8IHBlbnRpdW1paWkgfCBwZW50aXVtMykKKwkJYmFzaWNfbWFjaGluZT1pNjg2LXBjCisJCTs7CisJcGVudGl1bTQpCisJCWJhc2ljX21hY2hpbmU9aTc4Ni1wYworCQk7OworCXBlbnRpdW0tKiB8IHA1LSogfCBrNS0qIHwgazYtKiB8IG5leGdlbi0qIHwgdmlhYzMtKikKKwkJYmFzaWNfbWFjaGluZT1pNTg2LWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcGVudGl1bXByby0qIHwgcDYtKiB8IDZ4ODYtKiB8IGF0aGxvbi0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtaWktKiB8IHBlbnRpdW0yLSogfCBwZW50aXVtaWlpLSogfCBwZW50aXVtMy0qKQorCQliYXNpY19tYWNoaW5lPWk2ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwZW50aXVtNC0qKQorCQliYXNpY19tYWNoaW5lPWk3ODYtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwbikKKwkJYmFzaWNfbWFjaGluZT1wbi1nb3VsZAorCQk7OworCXBvd2VyKQliYXNpY19tYWNoaW5lPXBvd2VyLWlibQorCQk7OworCXBwYyB8IHBwY2JlKQliYXNpY19tYWNoaW5lPXBvd2VycGMtdW5rbm93bgorCQk7OworCXBwYy0qIHwgcHBjYmUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCisJCTs7CisJcHBjbGUgfCBwb3dlcnBjbGl0dGxlIHwgcHBjLWxlIHwgcG93ZXJwYy1saXR0bGUpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwY2xlLXVua25vd24KKwkJOzsKKwlwcGNsZS0qIHwgcG93ZXJwY2xpdHRsZS0qKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGNsZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBwYzY0KQliYXNpY19tYWNoaW5lPXBvd2VycGM2NC11bmtub3duCisJCTs7CisJcHBjNjQtKikgYmFzaWNfbWFjaGluZT1wb3dlcnBjNjQtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlwcGM2NGxlIHwgcG93ZXJwYzY0bGl0dGxlIHwgcHBjNjQtbGUgfCBwb3dlcnBjNjQtbGl0dGxlKQorCQliYXNpY19tYWNoaW5lPXBvd2VycGM2NGxlLXVua25vd24KKwkJOzsKKwlwcGM2NGxlLSogfCBwb3dlcnBjNjRsaXR0bGUtKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjNjRsZS1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCXBzMikKKwkJYmFzaWNfbWFjaGluZT1pMzg2LWlibQorCQk7OworCXB3MzIpCisJCWJhc2ljX21hY2hpbmU9aTU4Ni11bmtub3duCisJCW9zPS1wdzMyCisJCTs7CisJcmRvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1yZG9zCisJCTs7CisJcm9tNjhrKQorCQliYXNpY19tYWNoaW5lPW02OGstcm9tNjhrCisJCW9zPS1jb2ZmCisJCTs7CisJcm1bNDZdMDApCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zaWVtZW5zCisJCTs7CisJcnRwYyB8IHJ0cGMtKikKKwkJYmFzaWNfbWFjaGluZT1yb21wLWlibQorCQk7OworCXMzOTAgfCBzMzkwLSopCisJCWJhc2ljX21hY2hpbmU9czM5MC1pYm0KKwkJOzsKKwlzMzkweCB8IHMzOTB4LSopCisJCWJhc2ljX21hY2hpbmU9czM5MHgtaWJtCisJCTs7CisJc2EyOTIwMCkKKwkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAorCQlvcz0tdWRpCisJCTs7CisJc2IxKQorCQliYXNpY19tYWNoaW5lPW1pcHNpc2E2NHNiMS11bmtub3duCisJCTs7CisJc2IxZWwpCisJCWJhc2ljX21hY2hpbmU9bWlwc2lzYTY0c2IxZWwtdW5rbm93bgorCQk7OworCXNkZSkKKwkJYmFzaWNfbWFjaGluZT1taXBzaXNhMzItc2RlCisJCW9zPS1lbGYKKwkJOzsKKwlzZWkpCisJCWJhc2ljX21hY2hpbmU9bWlwcy1zZWkKKwkJb3M9LXNlaXV4CisJCTs7CisJc2VxdWVudCkKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKKwkJOzsKKwlzaCkKKwkJYmFzaWNfbWFjaGluZT1zaC1oaXRhY2hpCisJCW9zPS1obXMKKwkJOzsKKwlzaDVlbCkKKwkJYmFzaWNfbWFjaGluZT1zaDVsZS11bmtub3duCisJCTs7CisJc2g2NCkKKwkJYmFzaWNfbWFjaGluZT1zaDY0LXVua25vd24KKwkJOzsKKwlzcGFyY2xpdGUtd3JzIHwgc2ltc28td3JzKQorCQliYXNpY19tYWNoaW5lPXNwYXJjbGl0ZS13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwlzcHM3KQorCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAorCQlvcz0tc3lzdjIKKwkJOzsKKwlzcHVyKQorCQliYXNpY19tYWNoaW5lPXNwdXItdW5rbm93bgorCQk7OworCXN0MjAwMCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXRhbmRlbQorCQk7OworCXN0cmF0dXMpCisJCWJhc2ljX21hY2hpbmU9aTg2MC1zdHJhdHVzCisJCW9zPS1zeXN2NAorCQk7OworCXN0cm9uZ2FybS0qIHwgdGh1bWItKikKKwkJYmFzaWNfbWFjaGluZT1hcm0tYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwlzdW4yKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJOzsKKwlzdW4yb3MzKQorCQliYXNpY19tYWNoaW5lPW02ODAwMC1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjJvczQpCisJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuM29zMykKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQlvcz0tc3Vub3MzCisJCTs7CisJc3VuM29zNCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQlvcz0tc3Vub3M0CisJCTs7CisJc3VuNG9zMykKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXN1bm9zMworCQk7OworCXN1bjRvczQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCW9zPS1zdW5vczQKKwkJOzsKKwlzdW40c29sMikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJc3VuMyB8IHN1bjMtKikKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXN1bgorCQk7OworCXN1bjQpCisJCWJhc2ljX21hY2hpbmU9c3BhcmMtc3VuCisJCTs7CisJc3VuMzg2IHwgc3VuMzg2aSB8IHJvYWRydW5uZXIpCisJCWJhc2ljX21hY2hpbmU9aTM4Ni1zdW4KKwkJOzsKKwlzdjEpCisJCWJhc2ljX21hY2hpbmU9c3YxLWNyYXkKKwkJb3M9LXVuaWNvcworCQk7OworCXN5bW1ldHJ5KQorCQliYXNpY19tYWNoaW5lPWkzODYtc2VxdWVudAorCQlvcz0tZHluaXgKKwkJOzsKKwl0M2UpCisJCWJhc2ljX21hY2hpbmU9YWxwaGFldjUtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJdDkwKQorCQliYXNpY19tYWNoaW5lPXQ5MC1jcmF5CisJCW9zPS11bmljb3MKKwkJOzsKKwl0aWxlKikKKwkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCisJCW9zPS1saW51eC1nbnUKKwkJOzsKKwl0eDM5KQorCQliYXNpY19tYWNoaW5lPW1pcHN0eDM5LXVua25vd24KKwkJOzsKKwl0eDM5ZWwpCisJCWJhc2ljX21hY2hpbmU9bWlwc3R4MzllbC11bmtub3duCisJCTs7CisJdG9hZDEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTAteGtsCisJCW9zPS10b3BzMjAKKwkJOzsKKwl0b3dlciB8IHRvd2VyLTMyKQorCQliYXNpY19tYWNoaW5lPW02OGstbmNyCisJCTs7CisJdHBmKQorCQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQorCQlvcz0tdHBmCisJCTs7CisJdWRpMjlrKQorCQliYXNpY19tYWNoaW5lPWEyOWstYW1kCisJCW9zPS11ZGkKKwkJOzsKKwl1bHRyYTMpCisJCWJhc2ljX21hY2hpbmU9YTI5ay1ueXUKKwkJb3M9LXN5bTEKKwkJOzsKKwl2ODEwIHwgbmVjdjgxMCkKKwkJYmFzaWNfbWFjaGluZT12ODEwLW5lYworCQlvcz0tbm9uZQorCQk7OworCXZheHYpCisJCWJhc2ljX21hY2hpbmU9dmF4LWRlYworCQlvcz0tc3lzdgorCQk7OworCXZtcykKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCW9zPS12bXMKKwkJOzsKKwl2cHAqfHZ4fHZ4LSopCisJCWJhc2ljX21hY2hpbmU9ZjMwMS1mdWppdHN1CisJCTs7CisJdnh3b3Jrczk2MCkKKwkJYmFzaWNfbWFjaGluZT1pOTYwLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3M2OCkKKwkJYmFzaWNfbWFjaGluZT1tNjhrLXdycworCQlvcz0tdnh3b3JrcworCQk7OworCXZ4d29ya3MyOWspCisJCWJhc2ljX21hY2hpbmU9YTI5ay13cnMKKwkJb3M9LXZ4d29ya3MKKwkJOzsKKwl3NjUqKQorCQliYXNpY19tYWNoaW5lPXc2NS13ZGMKKwkJb3M9LW5vbmUKKwkJOzsKKwl3ODlrLSopCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS13aW5ib25kCisJCW9zPS1wcm9lbGYKKwkJOzsKKwl4Ym94KQorCQliYXNpY19tYWNoaW5lPWk2ODYtcGMKKwkJb3M9LW1pbmd3MzIKKwkJOzsKKwl4cHMgfCB4cHMxMDApCisJCWJhc2ljX21hY2hpbmU9eHBzMTAwLWhvbmV5d2VsbAorCQk7OworCXhzY2FsZS0qIHwgeHNjYWxlZVtibF0tKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eeHNjYWxlL2FybS8nYAorCQk7OworCXltcCkKKwkJYmFzaWNfbWFjaGluZT15bXAtY3JheQorCQlvcz0tdW5pY29zCisJCTs7CisJejhrLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16OGstdW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJejgwLSotY29mZikKKwkJYmFzaWNfbWFjaGluZT16ODAtdW5rbm93bgorCQlvcz0tc2ltCisJCTs7CisJbm9uZSkKKwkJYmFzaWNfbWFjaGluZT1ub25lLW5vbmUKKwkJb3M9LW5vbmUKKwkJOzsKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgZGVmYXVsdCBtYW51ZmFjdHVyZXIgb2YgY2VydGFpbiBDUFUgdHlwZXMuICBJdCBpcyBpbgorIyBzb21lIGNhc2VzIHRoZSBvbmx5IG1hbnVmYWN0dXJlciwgaW4gb3RoZXJzLCBpdCBpcyB0aGUgbW9zdCBwb3B1bGFyLgorCXc4OWspCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS13aW5ib25kCisJCTs7CisJb3A1MG4pCisJCWJhc2ljX21hY2hpbmU9aHBwYTEuMS1va2kKKwkJOzsKKwlvcDYwYykKKwkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLW9raQorCQk7OworCXJvbXApCisJCWJhc2ljX21hY2hpbmU9cm9tcC1pYm0KKwkJOzsKKwltbWl4KQorCQliYXNpY19tYWNoaW5lPW1taXgta251dGgKKwkJOzsKKwlyczYwMDApCisJCWJhc2ljX21hY2hpbmU9cnM2MDAwLWlibQorCQk7OworCXZheCkKKwkJYmFzaWNfbWFjaGluZT12YXgtZGVjCisJCTs7CisJcGRwMTApCisJCSMgdGhlcmUgYXJlIG1hbnkgY2xvbmVzLCBzbyBERUMgaXMgbm90IGEgc2FmZSBiZXQKKwkJYmFzaWNfbWFjaGluZT1wZHAxMC11bmtub3duCisJCTs7CisJcGRwMTEpCisJCWJhc2ljX21hY2hpbmU9cGRwMTEtZGVjCisJCTs7CisJd2UzMmspCisJCWJhc2ljX21hY2hpbmU9d2UzMmstYXR0CisJCTs7CisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQorCQliYXNpY19tYWNoaW5lPXNoLXVua25vd24KKwkJOzsKKwlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5dikKKwkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KKwkJOzsKKwljeWRyYSkKKwkJYmFzaWNfbWFjaGluZT1jeWRyYS1jeWRyb21lCisJCTs7CisJb3Jpb24pCisJCWJhc2ljX21hY2hpbmU9b3Jpb24taGlnaGxldmVsCisJCTs7CisJb3Jpb24xMDUpCisJCWJhc2ljX21hY2hpbmU9Y2xpcHBlci1oaWdobGV2ZWwKKwkJOzsKKwltYWMgfCBtcHcgfCBtYWMtbXB3KQorCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKKwkJOzsKKwlwbWFjIHwgcG1hYy1tcHcpCisJCWJhc2ljX21hY2hpbmU9cG93ZXJwYy1hcHBsZQorCQk7OworCSotdW5rbm93bikKKwkJIyBNYWtlIHN1cmUgdG8gbWF0Y2ggYW4gYWxyZWFkeS1jYW5vbmljYWxpemVkIG1hY2hpbmUgbmFtZS4KKwkJOzsKKwkqKQorCQllY2hvIEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IG1hY2hpbmUgXGAkYmFzaWNfbWFjaGluZVwnIG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7Citlc2FjCisKKyMgSGVyZSB3ZSBjYW5vbmljYWxpemUgY2VydGFpbiBhbGlhc2VzIGZvciBtYW51ZmFjdHVyZXJzLgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotZGlnaXRhbCopCisJCWJhc2ljX21hY2hpbmU9YGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvZGlnaXRhbC4qL2RlYy8nYAorCQk7OworCSotY29tbW9kb3JlKikKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9jb21tb2RvcmUuKi9jYm0vJ2AKKwkJOzsKKwkqKQorCQk7OworZXNhYworCisjIERlY29kZSBtYW51ZmFjdHVyZXItc3BlY2lmaWMgYWxpYXNlcyBmb3IgY2VydGFpbiBvcGVyYXRpbmcgc3lzdGVtcy4KKworaWYgWyB4IiRvcyIgIT0geCIiIF0KK3RoZW4KK2Nhc2UgJG9zIGluCisJIyBGaXJzdCBtYXRjaCBzb21lIHN5c3RlbSB0eXBlIGFsaWFzZXMKKwkjIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkIHdpdGggdmFsaWQgc3lzdGVtIHR5cGVzLgorCSMgLXNvbGFyaXMqIGlzIGEgYmFzaWMgc3lzdGVtIHR5cGUsIHdpdGggdGhpcyBvbmUgZXhjZXB0aW9uLgorCS1hdXJvcmF1eCkKKwkJb3M9LWF1cm9yYXV4CisJCTs7CisJLXNvbGFyaXMxIHwgLXNvbGFyaXMxLiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzb2xhcmlzMXxzdW5vczR8J2AKKwkJOzsKKwktc29sYXJpcykKKwkJb3M9LXNvbGFyaXMyCisJCTs7CisJLXN2cjQqKQorCQlvcz0tc3lzdjQKKwkJOzsKKwktdW5peHdhcmUqKQorCQlvcz0tc3lzdjQuMnV3CisJCTs7CisJLWdudS9saW51eCopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xnbnUvbGludXh8bGludXgtZ251fCdgCisJCTs7CisJIyBGaXJzdCBhY2NlcHQgdGhlIGJhc2ljIHN5c3RlbSB0eXBlcy4KKwkjIFRoZSBwb3J0YWJsZSBzeXN0ZW1zIGNvbWVzIGZpcnN0LgorCSMgRWFjaCBhbHRlcm5hdGl2ZSBNVVNUIEVORCBJTiBBICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCisJIyAtc3lzdiogaXMgbm90IGhlcmUgYmVjYXVzZSBpdCBjb21lcyBsYXRlciwgYWZ0ZXIgc3lzdnI0LgorCS1nbnUqIHwgLWJzZCogfCAtbWFjaCogfCAtbWluaXgqIHwgLWdlbml4KiB8IC11bHRyaXgqIHwgLWlyaXgqIFwKKwkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1jbmsqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCisJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCisJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCisJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKKwkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKKwkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCisJICAgICAgfCAtb3BlbmJzZCogfCAtc29saWRic2QqIFwKKwkgICAgICB8IC1la2tvYnNkKiB8IC1rZnJlZWJzZCogfCAtZnJlZWJzZCogfCAtcmlzY2l4KiB8IC1seW54b3MqIFwKKwkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCisJICAgICAgfCAtcHR4KiB8IC1jb2ZmKiB8IC1lY29mZiogfCAtd2lubnQqIHwgLWRvbWFpbiogfCAtdnN0YSogXAorCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAorCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIHwgLWNlZ2NjKiBcCisJICAgICAgfCAtY3lnd2luKiB8IC1tc3lzKiB8IC1wZSogfCAtcHNvcyogfCAtbW9zcyogfCAtcHJvZWxmKiB8IC1ydGVtcyogXAorCSAgICAgIHwgLW1pbmd3MzIqIHwgLWxpbnV4LWdudSogfCAtbGludXgtYW5kcm9pZCogXAorCSAgICAgIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAgICAgfCAtdXhwdiogfCAtYmVvcyogfCAtbXBlaXgqIHwgLXVkayogXAorCSAgICAgIHwgLWludGVyaXgqIHwgLXV3aW4qIHwgLW1rcyogfCAtcmhhcHNvZHkqIHwgLWRhcndpbiogfCAtb3BlbmVkKiBcCisJICAgICAgfCAtb3BlbnN0ZXAqIHwgLW9za2l0KiB8IC1jb25peCogfCAtcHczMiogfCAtbm9uc3RvcHV4KiBcCisJICAgICAgfCAtc3Rvcm0tY2hhb3MqIHwgLXRvcHMxMCogfCAtdGVuZXgqIHwgLXRvcHMyMCogfCAtaXRzKiBcCisJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAorCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAorCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqKQorCSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KKwkJOzsKKwktcW54KikKKwkJY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCQkgICAgeDg2LSogfCBpKjg2LSopCisJCQk7OworCQkgICAgKikKKwkJCW9zPS1udG8kb3MKKwkJCTs7CisJCWVzYWMKKwkJOzsKKwktbnRvLXFueCopCisJCTs7CisJLW50byopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xudG98bnRvLXFueHwnYAorCQk7OworCS1zaW0gfCAtZXMxODAwKiB8IC1obXMqIHwgLXhyYXkgfCAtb3M2OGsqIHwgLW5vbmUqIHwgLXY4OHIqIFwKKwkgICAgICB8IC13aW5kb3dzKiB8IC1vc3ggfCAtYWJ1ZyB8IC1uZXR3YXJlKiB8IC1vczkqIHwgLWJlb3MqIHwgLWhhaWt1KiBcCisJICAgICAgfCAtbWFjb3MqIHwgLW1wdyogfCAtbWFnaWMqIHwgLW1taXh3YXJlKiB8IC1tb245NjAqIHwgLWxuZXdzKikKKwkJOzsKKwktbWFjKikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfG1hY3xtYWNvc3wnYAorCQk7OworCS1saW51eC1kaWV0bGliYykKKwkJb3M9LWxpbnV4LWRpZXRsaWJjCisJCTs7CisJLWxpbnV4KikKKwkJb3M9YGVjaG8gJG9zIHwgc2VkIC1lICdzfGxpbnV4fGxpbnV4LWdudXwnYAorCQk7OworCS1zdW5vczUqKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c3Vub3M1fHNvbGFyaXMyfCdgCisJCTs7CisJLXN1bm9zNiopCisJCW9zPWBlY2hvICRvcyB8IHNlZCAtZSAnc3xzdW5vczZ8c29sYXJpczN8J2AKKwkJOzsKKwktb3BlbmVkKikKKwkJb3M9LW9wZW5lZGl0aW9uCisJCTs7CisJLW9zNDAwKikKKwkJb3M9LW9zNDAwCisJCTs7CisJLXdpbmNlKikKKwkJb3M9LXdpbmNlCisJCTs7CisJLW9zZnJvc2UqKQorCQlvcz0tb3Nmcm9zZQorCQk7OworCS1vc2YqKQorCQlvcz0tb3NmCisJCTs7CisJLXV0ZWsqKQorCQlvcz0tYnNkCisJCTs7CisJLWR5bml4KikKKwkJb3M9LWJzZAorCQk7OworCS1hY2lzKikKKwkJb3M9LWFvcworCQk7OworCS1hdGhlb3MqKQorCQlvcz0tYXRoZW9zCisJCTs7CisJLXN5bGxhYmxlKikKKwkJb3M9LXN5bGxhYmxlCisJCTs7CisJLTM4NmJzZCkKKwkJb3M9LWJzZAorCQk7OworCS1jdGl4KiB8IC11dHMqKQorCQlvcz0tc3lzdgorCQk7OworCS1ub3ZhKikKKwkJb3M9LXJ0bWstbm92YQorCQk7OworCS1uczIgKQorCQlvcz0tbmV4dHN0ZXAyCisJCTs7CisJLW5zayopCisJCW9zPS1uc2sKKwkJOzsKKwkjIFByZXNlcnZlIHRoZSB2ZXJzaW9uIG51bWJlciBvZiBzaW5peDUuCisJLXNpbml4NS4qKQorCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c2luaXh8c3lzdnwnYAorCQk7OworCS1zaW5peCopCisJCW9zPS1zeXN2NAorCQk7OworCS10cGYqKQorCQlvcz0tdHBmCisJCTs7CisJLXRyaXRvbiopCisJCW9zPS1zeXN2MworCQk7OworCS1vc3MqKQorCQlvcz0tc3lzdjMKKwkJOzsKKwktc3ZyNCkKKwkJb3M9LXN5c3Y0CisJCTs7CisJLXN2cjMpCisJCW9zPS1zeXN2MworCQk7OworCS1zeXN2cjQpCisJCW9zPS1zeXN2NAorCQk7OworCSMgVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgLXN5c3ZyNC4KKwktc3lzdiopCisJCTs7CisJLW9zZSopCisJCW9zPS1vc2UKKwkJOzsKKwktZXMxODAwKikKKwkJb3M9LW9zZQorCQk7OworCS14ZW5peCkKKwkJb3M9LXhlbml4CisJCTs7CisJLSptaW50IHwgLW1pbnRbMC05XSogfCAtKk1pTlQgfCAtTWlOVFswLTldKikKKwkJb3M9LW1pbnQKKwkJOzsKKwktYXJvcyopCisJCW9zPS1hcm9zCisJCTs7CisJLWthb3MqKQorCQlvcz0ta2FvcworCQk7OworCS16dm1vZSkKKwkJb3M9LXp2bW9lCisJCTs7CisJLWRpY29zKikKKwkJb3M9LWRpY29zCisJCTs7CisJLW5hY2wqKQorCQk7OworCS1ub25lKQorCQk7OworCSopCisJCSMgR2V0IHJpZCBvZiB0aGUgYC0nIGF0IHRoZSBiZWdpbm5pbmcgb2YgJG9zLgorCQlvcz1gZWNobyAkb3MgfCBzZWQgJ3MvW14tXSotLy8nYAorCQllY2hvIEludmFsaWQgY29uZmlndXJhdGlvbiBcYCQxXCc6IHN5c3RlbSBcYCRvc1wnIG5vdCByZWNvZ25pemVkIDE+JjIKKwkJZXhpdCAxCisJCTs7Citlc2FjCitlbHNlCisKKyMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBjb21lIHdpdGggdmFyaW91cyBtYWNoaW5lcy4KKyMgVGhlIHZhbHVlIHNob3VsZCBiZSB3aGF0IHRoZSB2ZW5kb3IgY3VycmVudGx5IHNoaXBzIG91dCB0aGUgZG9vciB3aXRoIHRoZWlyCisjIG1hY2hpbmUgb3IgcHV0IGFub3RoZXIgd2F5LCB0aGUgbW9zdCBwb3B1bGFyIG9zIHByb3ZpZGVkIHdpdGggdGhlIG1hY2hpbmUuCisKKyMgTm90ZSB0aGF0IGlmIHlvdSdyZSBnb2luZyB0byB0cnkgdG8gbWF0Y2ggIi1NQU5VRkFDVFVSRVIiIGhlcmUgKHNheSwKKyMgIi1zdW4iKSwgdGhlbiB5b3UgaGF2ZSB0byB0ZWxsIHRoZSBjYXNlIHN0YXRlbWVudCB1cCB0b3dhcmRzIHRoZSB0b3AKKyMgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nIHN5c3RlbS4gIE90aGVyd2lzZSwgY29kZSBhYm92ZQorIyB3aWxsIHNpZ25hbCBhbiBlcnJvciBzYXlpbmcgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nCisjIHN5c3RlbSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgorCitjYXNlICRiYXNpY19tYWNoaW5lIGluCisJc2NvcmUtKikKKwkJb3M9LWVsZgorCQk7OworCXNwdS0qKQorCQlvcz0tZWxmCisJCTs7CisJKi1hY29ybikKKwkJb3M9LXJpc2NpeDEuMgorCQk7OworCWFybSotcmViZWwpCisJCW9zPS1saW51eAorCQk7OworCWFybSotc2VtaSkKKwkJb3M9LWFvdXQKKwkJOzsKKwljNHgtKiB8IHRpYzR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTR4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNTV4LSopCisJCW9zPS1jb2ZmCisJCTs7CisJdGljNngtKikKKwkJb3M9LWNvZmYKKwkJOzsKKwkjIFRoaXMgbXVzdCBjb21lIGJlZm9yZSB0aGUgKi1kZWMgZW50cnkuCisJcGRwMTAtKikKKwkJb3M9LXRvcHMyMAorCQk7OworCXBkcDExLSopCisJCW9zPS1ub25lCisJCTs7CisJKi1kZWMgfCB2YXgtKikKKwkJb3M9LXVsdHJpeDQuMgorCQk7OworCW02OCotYXBvbGxvKQorCQlvcz0tZG9tYWluCisJCTs7CisJaTM4Ni1zdW4pCisJCW9zPS1zdW5vczQuMC4yCisJCTs7CisJbTY4MDAwLXN1bikKKwkJb3M9LXN1bm9zMworCQk7OworCW02OCotY2lzY28pCisJCW9zPS1hb3V0CisJCTs7CisJbWVwLSopCisJCW9zPS1lbGYKKwkJOzsKKwltaXBzKi1jaXNjbykKKwkJb3M9LWVsZgorCQk7OworCW1pcHMqLSopCisJCW9zPS1lbGYKKwkJOzsKKwlvcjMyLSopCisJCW9zPS1jb2ZmCisJCTs7CisJKi10dGkpCSMgbXVzdCBiZSBiZWZvcmUgc3BhcmMgZW50cnkgb3Igd2UgZ2V0IHRoZSB3cm9uZyBvcy4KKwkJb3M9LXN5c3YzCisJCTs7CisJc3BhcmMtKiB8ICotc3VuKQorCQlvcz0tc3Vub3M0LjEuMQorCQk7OworCSotYmUpCisJCW9zPS1iZW9zCisJCTs7CisJKi1oYWlrdSkKKwkJb3M9LWhhaWt1CisJCTs7CisJKi1pYm0pCisJCW9zPS1haXgKKwkJOzsKKwkqLWtudXRoKQorCQlvcz0tbW1peHdhcmUKKwkJOzsKKwkqLXdlYykKKwkJb3M9LXByb2VsZgorCQk7OworCSotd2luYm9uZCkKKwkJb3M9LXByb2VsZgorCQk7OworCSotb2tpKQorCQlvcz0tcHJvZWxmCisJCTs7CisJKi1ocCkKKwkJb3M9LWhwdXgKKwkJOzsKKwkqLWhpdGFjaGkpCisJCW9zPS1oaXV4CisJCTs7CisJaTg2MC0qIHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAqLW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQorCQlvcz0tc3lzdgorCQk7OworCSotY2JtKQorCQlvcz0tYW1pZ2FvcworCQk7OworCSotZGcpCisJCW9zPS1kZ3V4CisJCTs7CisJKi1kb2xwaGluKQorCQlvcz0tc3lzdjMKKwkJOzsKKwltNjhrLWNjdXIpCisJCW9zPS1ydHUKKwkJOzsKKwltODhrLW9tcm9uKikKKwkJb3M9LWx1bmEKKwkJOzsKKwkqLW5leHQgKQorCQlvcz0tbmV4dHN0ZXAKKwkJOzsKKwkqLXNlcXVlbnQpCisJCW9zPS1wdHgKKwkJOzsKKwkqLWNyZHMpCisJCW9zPS11bm9zCisJCTs7CisJKi1ucykKKwkJb3M9LWdlbml4CisJCTs7CisJaTM3MC0qKQorCQlvcz0tbXZzCisJCTs7CisJKi1uZXh0KQorCQlvcz0tbmV4dHN0ZXAzCisJCTs7CisJKi1nb3VsZCkKKwkJb3M9LXN5c3YKKwkJOzsKKwkqLWhpZ2hsZXZlbCkKKwkJb3M9LWJzZAorCQk7OworCSotZW5jb3JlKQorCQlvcz0tYnNkCisJCTs7CisJKi1zZ2kpCisJCW9zPS1pcml4CisJCTs7CisJKi1zaWVtZW5zKQorCQlvcz0tc3lzdjQKKwkJOzsKKwkqLW1hc3Njb21wKQorCQlvcz0tcnR1CisJCTs7CisJZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQorCQlvcz0tdXhwdgorCQk7OworCSotcm9tNjhrKQorCQlvcz0tY29mZgorCQk7OworCSotKmJ1ZykKKwkJb3M9LWNvZmYKKwkJOzsKKwkqLWFwcGxlKQorCQlvcz0tbWFjb3MKKwkJOzsKKwkqLWF0YXJpKikKKwkJb3M9LW1pbnQKKwkJOzsKKwkqKQorCQlvcz0tbm9uZQorCQk7OworZXNhYworZmkKKworIyBIZXJlIHdlIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSB3ZSBrbm93IHRoZSBvcywgYW5kIHRoZSBDUFUgdHlwZSwgYnV0IG5vdCB0aGUKKyMgbWFudWZhY3R1cmVyLiAgV2UgcGljayB0aGUgbG9naWNhbCBtYW51ZmFjdHVyZXIuCit2ZW5kb3I9dW5rbm93bgorY2FzZSAkYmFzaWNfbWFjaGluZSBpbgorCSotdW5rbm93bikKKwkJY2FzZSAkb3MgaW4KKwkJCS1yaXNjaXgqKQorCQkJCXZlbmRvcj1hY29ybgorCQkJCTs7CisJCQktc3Vub3MqKQorCQkJCXZlbmRvcj1zdW4KKwkJCQk7OworCQkJLWNuayp8LWFpeCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktYmVvcyopCisJCQkJdmVuZG9yPWJlCisJCQkJOzsKKwkJCS1ocHV4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLW1wZWl4KikKKwkJCQl2ZW5kb3I9aHAKKwkJCQk7OworCQkJLWhpdXgqKQorCQkJCXZlbmRvcj1oaXRhY2hpCisJCQkJOzsKKwkJCS11bm9zKikKKwkJCQl2ZW5kb3I9Y3JkcworCQkJCTs7CisJCQktZGd1eCopCisJCQkJdmVuZG9yPWRnCisJCQkJOzsKKwkJCS1sdW5hKikKKwkJCQl2ZW5kb3I9b21yb24KKwkJCQk7OworCQkJLWdlbml4KikKKwkJCQl2ZW5kb3I9bnMKKwkJCQk7OworCQkJLW12cyogfCAtb3BlbmVkKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS1vczQwMCopCisJCQkJdmVuZG9yPWlibQorCQkJCTs7CisJCQktcHR4KikKKwkJCQl2ZW5kb3I9c2VxdWVudAorCQkJCTs7CisJCQktdHBmKikKKwkJCQl2ZW5kb3I9aWJtCisJCQkJOzsKKwkJCS12eHNpbSogfCAtdnh3b3JrcyogfCAtd2luZGlzcyopCisJCQkJdmVuZG9yPXdycworCQkJCTs7CisJCQktYXV4KikKKwkJCQl2ZW5kb3I9YXBwbGUKKwkJCQk7OworCQkJLWhtcyopCisJCQkJdmVuZG9yPWhpdGFjaGkKKwkJCQk7OworCQkJLW1wdyogfCAtbWFjb3MqKQorCQkJCXZlbmRvcj1hcHBsZQorCQkJCTs7CisJCQktKm1pbnQgfCAtbWludFswLTldKiB8IC0qTWlOVCB8IC1NaU5UWzAtOV0qKQorCQkJCXZlbmRvcj1hdGFyaQorCQkJCTs7CisJCQktdm9zKikKKwkJCQl2ZW5kb3I9c3RyYXR1cworCQkJCTs7CisJCWVzYWMKKwkJYmFzaWNfbWFjaGluZT1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAicy91bmtub3duLyR2ZW5kb3IvImAKKwkJOzsKK2VzYWMKKworZWNobyAkYmFzaWNfbWFjaGluZSRvcworZXhpdAorCisjIExvY2FsIHZhcmlhYmxlczoKKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXN0YXJ0OiAidGltZXN0YW1wPSciCisjIHRpbWUtc3RhbXAtZm9ybWF0OiAiJTp5LSUwMm0tJTAyZCIKKyMgdGltZS1zdGFtcC1lbmQ6ICInIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggNzA4YTBlMS4uM2RkMTczYiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw3ICsxLDYgQEAKICMhIC9iaW4vc2gKLSMgRnJvbSBjb25maWd1cmUuYWMgUmV2aXNpb24uCiAjIEd1ZXNzIHZhbHVlcyBmb3Igc3lzdGVtLWRlcGVuZGVudCB2YXJpYWJsZXMgYW5kIGNyZWF0ZSBNYWtlZmlsZXMuCi0jIEdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OCBmb3IgcHl0aG9uIDMuMi4KKyMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4IGZvciBweXRob24gMy4zLgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2J1Z3MucHl0aG9uLm9yZy8+LgogIwpAQCAtNTYxLDggKzU2MCw4IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0ncHl0aG9uJwogUEFDS0FHRV9UQVJOQU1FPSdweXRob24nCi1QQUNLQUdFX1ZFUlNJT049JzMuMicKLVBBQ0tBR0VfU1RSSU5HPSdweXRob24gMy4yJworUEFDS0FHRV9WRVJTSU9OPSczLjMnCitQQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuMycKIFBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwOi8vYnVncy5weXRob24ub3JnLycKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY0NywxMyArNjQ2LDEwIEBACiBJTlNUQUxMX1BST0dSQU0KIFBZVEhPTgogQVNETEdFTgotSEFTX0hHCi1IR0JSQU5DSAotSEdUQUcKLUhHVkVSU0lPTgotQkFTRUNQUEZMQUdTCi1TVk5WRVJTSU9OCithY19jdF9SRUFERUxGCitSRUFERUxGCiBBUkZMQUdTCithY19jdF9BUgogQVIKIFJBTkxJQgogVVNFX0lOTElORQpAQCAtNjczLDYgKzY2OSw3IEBACiBHUkVQCiBDUFAKIE5PX0FTX05FRURFRAorYWNfY3RfQ1hYCiBNQUlOQ0MKIENYWAogT0JKRVhUCkBAIC02ODUsNiArNjgyLDcgQEAKIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQKIFNHSV9BQkkKK19QWVRIT05fSE9TVF9QTEFURk9STQogTUFDSERFUAogRlJBTUVXT1JLSU5TVEFMTEFQUFNQUkVGSVgKIEZSQU1FV09SS1VOSVhUT09MU1BSRUZJWApAQCAtNzAzLDYgKzcwMSwyMCBAQAogQ09ORklHX0FSR1MKIFNPVkVSU0lPTgogVkVSU0lPTgorUFlUSE9OX0ZPUl9CVUlMRAoraG9zdF9vcworaG9zdF92ZW5kb3IKK2hvc3RfY3B1Citob3N0CitidWlsZF9vcworYnVpbGRfdmVuZG9yCitidWlsZF9jcHUKK2J1aWxkCitIQVNfSEcKK0hHQlJBTkNICitIR1RBRworSEdWRVJTSU9OCitCQVNFQ1BQRkxBR1MKIHRhcmdldF9hbGlhcwogaG9zdF9hbGlhcwogYnVpbGRfYWxpYXMKQEAgLTc1NywxMCArNzY5LDEwIEBACiB3aXRoX2xpYnMKIHdpdGhfc3lzdGVtX2V4cGF0CiB3aXRoX3N5c3RlbV9mZmkKK3dpdGhfc3lzdGVtX2xpYm1wZGVjCiBlbmFibGVfbG9hZGFibGVfc3FsaXRlX2V4dGVuc2lvbnMKIHdpdGhfZGJtbGlib3JkZXIKIHdpdGhfc2lnbmFsX21vZHVsZQotd2l0aF9kZWNfdGhyZWFkcwogd2l0aF90aHJlYWRzCiB3aXRoX3RocmVhZAogZW5hYmxlX2lwdjYKQEAgLTc3Miw3ICs3ODQsNiBAQAogd2l0aF9saWJtCiB3aXRoX2xpYmMKIGVuYWJsZV9iaWdfZGlnaXRzCi13aXRoX3dpZGVfdW5pY29kZQogd2l0aF9jb21wdXRlZF9nb3RvcwogJwogICAgICAgYWNfcHJlY2lvdXNfdmFycz0nYnVpbGRfYWxpYXMKQEAgLTEzMjYsNyArMTMzNyw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuMiB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBweXRob24gMy4zIHRvIGFkYXB0IHRvIG1hbnkga2luZHMgb2Ygc3lzdGVtcy4KIAogVXNhZ2U6ICQwIFtPUFRJT05dLi4uIFtWQVI9VkFMVUVdLi4uCiAKQEAgLTEzODIsMTIgKzEzOTMsMTYgQEAKIF9BQ0VPRgogCiAgIGNhdCA8PFxfQUNFT0YKKworU3lzdGVtIHR5cGVzOgorICAtLWJ1aWxkPUJVSUxEICAgICBjb25maWd1cmUgZm9yIGJ1aWxkaW5nIG9uIEJVSUxEIFtndWVzc2VkXQorICAtLWhvc3Q9SE9TVCAgICAgICBjcm9zcy1jb21waWxlIHRvIGJ1aWxkIHByb2dyYW1zIHRvIHJ1biBvbiBIT1NUIFtCVUlMRF0KIF9BQ0VPRgogZmkKIAogaWYgdGVzdCAtbiAiJGFjX2luaXRfaGVscCI7IHRoZW4KICAgY2FzZSAkYWNfaW5pdF9oZWxwIGluCi0gICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy4yOiI7OworICAgICBzaG9ydCB8IHJlY3Vyc2l2ZSApIGVjaG8gIkNvbmZpZ3VyYXRpb24gb2YgcHl0aG9uIDMuMzoiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0xMzk2LDcgKzE0MTEsNyBAQAogICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCiAgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KICAgLS1lbmFibGUtdW5pdmVyc2Fsc2RrWz1TREtESVJdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIGFnYWluc3QgTWFjIE9TIFggMTAuNHUgU0RLIChwcGMvaTM4NikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgZmF0IGJpbmFyeSBhZ2FpbnN0IE1hYyBPUyBYIFNESwogICAtLWVuYWJsZS1mcmFtZXdvcmtbPUlOU1RBTExESVJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIChNYWNPU1h8RGFyd2luKSBmcmFtZXdvcmsKICAgLS1lbmFibGUtc2hhcmVkICAgICAgICAgZGlzYWJsZS9lbmFibGUgYnVpbGRpbmcgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5CkBAIC0xNDI3LDEyICsxNDQyLDEzIEBACiAgIC0td2l0aC1zeXN0ZW0tZXhwYXQgICAgIGJ1aWxkIHB5ZXhwYXQgbW9kdWxlIHVzaW5nIGFuIGluc3RhbGxlZCBleHBhdAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5CiAgIC0td2l0aC1zeXN0ZW0tZmZpICAgICAgIGJ1aWxkIF9jdHlwZXMgbW9kdWxlIHVzaW5nIGFuIGluc3RhbGxlZCBmZmkgbGlicmFyeQorICAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjICBidWlsZCBfZGVjaW1hbCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGxpYm1wZGVjCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKICAgLS13aXRoLWRibWxpYm9yZGVyPWRiMTpkYjI6Li4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRvIGNoZWNrIGRiIGJhY2tlbmRzIGZvciBkYm0uIFZhbGlkIHZhbHVlIGlzIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb24gc2VwYXJhdGVkIHN0cmluZyB3aXRoIHRoZSBiYWNrZW5kIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBuZGJtJywgYGdkYm0nIGFuZCBgYmRiJy4KICAgLS13aXRoLXNpZ25hbC1tb2R1bGUgICAgZGlzYWJsZS9lbmFibGUgc2lnbmFsIG1vZHVsZQotICAtLXdpdGgtZGVjLXRocmVhZHMgICAgICB1c2UgREVDIEFscGhhL09TRjEgdGhyZWFkLXNhZmUgbGlicmFyaWVzCiAgIC0td2l0aChvdXQpLXRocmVhZHNbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZS9lbmFibGUgdGhyZWFkIHN1cHBvcnQKICAgLS13aXRoKG91dCktdGhyZWFkWz1ESVJFQ1RPUlldCkBAIC0xNDQ0LDcgKzE0NjAsNiBAQAogICAtLXdpdGgtZnBlY3RsICAgICAgICAgICBlbmFibGUgU0lHRlBFIGNhdGNoaW5nCiAgIC0td2l0aC1saWJtPVNUUklORyAgICAgIG1hdGggbGlicmFyeQogICAtLXdpdGgtbGliYz1TVFJJTkcgICAgICBDIGxpYnJhcnkKLSAgLS13aXRoLXdpZGUtdW5pY29kZSAgICAgVXNlIDQtYnl0ZSBVbmljb2RlIGNoYXJhY3RlcnMgKGRlZmF1bHQgaXMgMiBieXRlcykKICAgLS13aXRoKG91dCktY29tcHV0ZWQtZ290b3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlIGNvbXB1dGVkIGdvdG9zIGluIGV2YWx1YXRpb24gbG9vcCAoZW5hYmxlZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IG9uIHN1cHBvcnRlZCBjb21waWxlcnMpCkBAIC0xNTI1LDcgKzE1NDAsNyBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLXB5dGhvbiBjb25maWd1cmUgMy4yCitweXRob24gY29uZmlndXJlIDMuMwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4CiAKIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTIzNTYsNyArMjM3MSw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjIsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjMsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMjcwNSw5ICsyNzIwLDIwOCBAQAogCiAKIAorCitpZiB0ZXN0ICIkYWJzX3NyY2RpciIgIT0gIiRhYnNfYnVpbGRkaXIiOyB0aGVuCisgICAgIyBJZiB3ZSdyZSBidWlsZGluZyBvdXQtb2YtdHJlZSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZworICAgICMgcmVzb3VyY2VzIGdldCBwaWNrZWQgdXAgYmVmb3JlIHRoZWlyICRzcmNkaXIgY291bnRlcnBhcnRzLgorICAgICMgICBPYmplY3RzLyAtPiB0eXBlc2xvdHMuaW5jCisgICAgIyAgIEluY2x1ZGUvIC0+IFB5dGhvbi1hc3QuaCwgZ3JhbWluaXQuaAorICAgICMgICBQeXRob24vICAtPiBpbXBvcnRsaWIuaAorICAgICMgKEEgc2lkZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0IHRoZXNlIHJlc291cmNlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUKKyAgICAjICByZWdlbmVyYXRlZCB3aGVuIGJ1aWxkaW5nIG91dC1vZi10cmVlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90CisgICAgIyAgdGhlICRzcmNkaXIgY291bnRlcnBhcnQgaXMgdXAtdG8tZGF0ZS4gIFRoaXMgaXMgYW4gYWNjZXB0YWJsZSB0cmFkZQorICAgICMgIG9mZi4pCisgICAgQkFTRUNQUEZMQUdTPSItSU9iamVjdHMgLUlJbmNsdWRlIC1JUHl0aG9uIgorZWxzZQorICAgIEJBU0VDUFBGTEFHUz0iIgorZmkKKworCisKKworCitpZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCit0aGVuCisjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImhnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBoZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3Byb2dfSEFTX0hHKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAtbiAiJEhBU19IRyI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19IQVNfSEc9IiRIQVNfSEciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorZWxzZQorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcHJvZ19IQVNfSEc9ImZvdW5kIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX0hBU19IRyIgJiYgYWNfY3ZfcHJvZ19IQVNfSEc9Im5vdC1mb3VuZCIKK2ZpCitmaQorSEFTX0hHPSRhY19jdl9wcm9nX0hBU19IRworaWYgdGVzdCAtbiAiJEhBU19IRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRIQVNfSEciID4mNQorJGFzX2VjaG8gIiRIQVNfSEciID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworZWxzZQorSEFTX0hHPW5vLXJlcG9zaXRvcnkKK2ZpCitpZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAordGhlbgorICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKKyAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKKyAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKK2Vsc2UKKyAgICBIR1ZFUlNJT049IiIKKyAgICBIR1RBRz0iIgorICAgIEhHQlJBTkNIPSIiCitmaQorCisKIGFjX2NvbmZpZ19oZWFkZXJzPSIkYWNfY29uZmlnX2hlYWRlcnMgcHljb25maWcuaCIKIAogCithY19hdXhfZGlyPQorZm9yIGFjX2RpciBpbiAiJHNyY2RpciIgIiRzcmNkaXIvLi4iICIkc3JjZGlyLy4uLy4uIjsgZG8KKyAgaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLXNoIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwtc2ggLWMiCisgICAgYnJlYWsKKyAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL2luc3RhbGwuc2giOyB0aGVuCisgICAgYWNfYXV4X2Rpcj0kYWNfZGlyCisgICAgYWNfaW5zdGFsbF9zaD0iJGFjX2F1eF9kaXIvaW5zdGFsbC5zaCAtYyIKKyAgICBicmVhaworICBlbGlmIHRlc3QgLWYgIiRhY19kaXIvc2h0b29sIjsgdGhlbgorICAgIGFjX2F1eF9kaXI9JGFjX2RpcgorICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL3NodG9vbCBpbnN0YWxsIC1jIgorICAgIGJyZWFrCisgIGZpCitkb25lCitpZiB0ZXN0IC16ICIkYWNfYXV4X2RpciI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNhbm5vdCBmaW5kIGluc3RhbGwtc2gsIGluc3RhbGwuc2gsIG9yIHNodG9vbCBpbiBcIiRzcmNkaXJcIiBcIiRzcmNkaXIvLi5cIiBcIiRzcmNkaXIvLi4vLi5cIiIgIiRMSU5FTk8iIDUKK2ZpCisKKyMgVGhlc2UgdGhyZWUgdmFyaWFibGVzIGFyZSB1bmRvY3VtZW50ZWQgYW5kIHVuc3VwcG9ydGVkLAorIyBhbmQgYXJlIGludGVuZGVkIHRvIGJlIHdpdGhkcmF3biBpbiBhIGZ1dHVyZSBBdXRvY29uZiByZWxlYXNlLgorIyBUaGV5IGNhbiBjYXVzZSBzZXJpb3VzIHByb2JsZW1zIGlmIGEgYnVpbGRlcidzIHNvdXJjZSB0cmVlIGlzIGluIGEgZGlyZWN0b3J5CisjIHdob3NlIGZ1bGwgbmFtZSBjb250YWlucyB1bnVzdWFsIGNoYXJhY3RlcnMuCithY19jb25maWdfZ3Vlc3M9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuZ3Vlc3MiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCithY19jb25maWdfc3ViPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KK2FjX2NvbmZpZ3VyZT0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZ3VyZSIgICMgUGxlYXNlIGRvbid0IHVzZSB0aGlzIHZhci4KKworCisjIE1ha2Ugc3VyZSB3ZSBjYW4gcnVuIGNvbmZpZy5zdWIuCiskU0hFTEwgIiRhY19hdXhfZGlyL2NvbmZpZy5zdWIiIHN1bjQgPi9kZXYvbnVsbCAyPiYxIHx8CisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgcnVuICRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAiJExJTkVOTyIgNQorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGJ1aWxkIHN5c3RlbSB0eXBlLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2J1aWxkKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCit0ZXN0ICJ4JGFjX2J1aWxkX2FsaWFzIiA9IHggJiYKKyAgYWNfYnVpbGRfYWxpYXM9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzImAKK3Rlc3QgIngkYWNfYnVpbGRfYWxpYXMiID0geCAmJgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGd1ZXNzIGJ1aWxkIHR5cGU7IHlvdSBtdXN0IHNwZWNpZnkgb25lIiAiJExJTkVOTyIgNQorYWNfY3ZfYnVpbGQ9YCRTSEVMTCAiJGFjX2F1eF9kaXIvY29uZmlnLnN1YiIgJGFjX2J1aWxkX2FsaWFzYCB8fAorICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGFjX2J1aWxkX2FsaWFzIGZhaWxlZCIgIiRMSU5FTk8iIDUKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfYnVpbGQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9idWlsZCIgPiY2OyB9CitjYXNlICRhY19jdl9idWlsZCBpbgorKi0qLSopIDs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgYnVpbGQiICIkTElORU5PIiA1OzsKK2VzYWMKK2J1aWxkPSRhY19jdl9idWlsZAorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworc2V0IHggJGFjX2N2X2J1aWxkCitzaGlmdAorYnVpbGRfY3B1PSQxCitidWlsZF92ZW5kb3I9JDIKK3NoaWZ0OyBzaGlmdAorIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6CitidWlsZF9vcz0kKgorSUZTPSRhY19zYXZlX0lGUworY2FzZSAkYnVpbGRfb3MgaW4gKlwgKikgYnVpbGRfb3M9YGVjaG8gIiRidWlsZF9vcyIgfCBzZWQgJ3MvIC8tL2cnYDs7IGVzYWMKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvc3Qgc3lzdGVtIHR5cGUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG9zdCBzeXN0ZW0gdHlwZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9ob3N0Kzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAieCRob3N0X2FsaWFzIiA9IHg7IHRoZW4KKyAgYWNfY3ZfaG9zdD0kYWNfY3ZfYnVpbGQKK2Vsc2UKKyAgYWNfY3ZfaG9zdD1gJFNIRUxMICIkYWNfYXV4X2Rpci9jb25maWcuc3ViIiAkaG9zdF9hbGlhc2AgfHwKKyAgICBhc19mbl9lcnJvciAkPyAiJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIgJGhvc3RfYWxpYXMgZmFpbGVkIiAiJExJTkVOTyIgNQorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaG9zdCIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2hvc3QiID4mNjsgfQorY2FzZSAkYWNfY3ZfaG9zdCBpbgorKi0qLSopIDs7CisqKSBhc19mbl9lcnJvciAkPyAiaW52YWxpZCB2YWx1ZSBvZiBjYW5vbmljYWwgaG9zdCIgIiRMSU5FTk8iIDU7OworZXNhYworaG9zdD0kYWNfY3ZfaG9zdAorYWNfc2F2ZV9JRlM9JElGUzsgSUZTPSctJworc2V0IHggJGFjX2N2X2hvc3QKK3NoaWZ0Citob3N0X2NwdT0kMQoraG9zdF92ZW5kb3I9JDIKK3NoaWZ0OyBzaGlmdAorIyBSZW1lbWJlciwgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBJRlMgaXMgdXNlZCB0byBjcmVhdGUgJCosCisjIGV4Y2VwdCB3aXRoIG9sZCBzaGVsbHM6Citob3N0X29zPSQqCitJRlM9JGFjX3NhdmVfSUZTCitjYXNlICRob3N0X29zIGluICpcICopIGhvc3Rfb3M9YGVjaG8gIiRob3N0X29zIiB8IHNlZCAncy8gLy0vZydgOzsgZXNhYworCisKKworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkLi4uICIgPiY2OyB9CisgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCisgICAgICAgIGZvciBpbnRlcnAgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbjsgZG8KKwkgICAgd2hpY2ggJGludGVycCA+L2Rldi9udWxsIDI+JjEgfHwgY29udGludWUKKwkgICAgaWYgJGludGVycCAtYyAnaW1wb3J0IHN5cztzeXMuZXhpdChub3Qgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsMykpJzsgdGhlbgorCSAgICAgICAgYnJlYWsKKwkgICAgZmkKKyAgICAgICAgICAgIGludGVycD0KKwlkb25lCisgICAgICAgIGlmIHRlc3QgeCRpbnRlcnAgPSB4OyB0aGVuCisJICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZCIgIiRMSU5FTk8iIDUKKwlmaQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGludGVycCIgPiY1CiskYXNfZWNobyAiJGludGVycCIgPiY2OyB9CisJUFlUSE9OX0ZPUl9CVUlMRD0iX1BZVEhPTl9QUk9KRUNUX0JBU0U9JHNyY2RpciInIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvcGxhdC0kKE1BQ0hERVApICckaW50ZXJwCisgICAgZmkKK2Vsc2UKKyAgICBQWVRIT05fRk9SX0JVSUxEPScuLyQoQlVJTERQWVRIT04pIC1FJworZmkKKworCiAKIGlmIHRlc3QgIiRwcmVmaXgiICE9ICIvIjsgdGhlbgogICAgIHByZWZpeD1gZWNobyAiJHByZWZpeCIgfCBzZWQgLWUgJ3MvXC8kLy9nJ2AKQEAgLTI3MjMsNyArMjkzNyw3IEBACiBtdiBjb25mZGVmcy5oLm5ldyBjb25mZGVmcy5oCiAKIAotVkVSU0lPTj0zLjIKK1ZFUlNJT049My4zCiAKICMgVmVyc2lvbiBudW1iZXIgb2YgUHl0aG9uJ3Mgb3duIHNoYXJlZCBsaWJyYXJ5IGZpbGUuCiAKQEAgLTI3NzYsMTAgKzI5OTAsMTYgQEAKICAgZW5hYmxldmFsPSRlbmFibGVfdW5pdmVyc2Fsc2RrOwogCWNhc2UgJGVuYWJsZXZhbCBpbgogCXllcykKLQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKLQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCSMgTG9jYXRlIHRoZSBiZXN0IHVzYWJsZSBTREssIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCQkjIGluZm9ybWF0aW9uCisJCWVuYWJsZXZhbD0iYC91c3IvYmluL3hjb2RlYnVpbGQgLXZlcnNpb24gLXNkayBtYWNvc3ggUGF0aCAyPi9kZXYvbnVsbGAiCisJCWlmIHRlc3QgLXogIiR7ZW5hYmxldmFsfSIKIAkJdGhlbgotCQkJZW5hYmxldmFsPS8KKwkJCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCisJCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJCXRoZW4KKwkJCQllbmFibGV2YWw9LworCQkJZmkKIAkJZmkKIAkJOzsKIAllc2FjCkBAIC0yODE3LDcgKzMwMzcsMjAgQEAKIAogCiAKKyMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBwcmVmZXIgdG8gc2VsZWN0ICczMi1iaXQnIGlmIGF2YWlsYWJsZSwKKyMgb3RoZXJ3aXNlIHVzZSAnaW50ZWwnCiBVTklWRVJTQUxfQVJDSFM9IjMyLWJpdCIKK2lmIHRlc3QgImB1bmFtZSAtc2AiID0gIkRhcndpbiIKK3RoZW4KKwlpZiB0ZXN0IC1uICIke1VOSVZFUlNBTFNES30iCisJdGhlbgorCQlpZiB0ZXN0IC16ICJgL3Vzci9iaW4vZmlsZSAiJHtVTklWRVJTQUxTREt9L3Vzci9saWIvbGliU3lzdGVtLmR5bGliIiB8IGdyZXAgcHBjYCIKKwkJdGhlbgorCQkJVU5JVkVSU0FMX0FSQ0hTPSJpbnRlbCIKKwkJZmkKKwlmaQorZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzLi4uICIgPiY2OyB9CkBAIC0yODMxLDggKzMwNjQsOCBAQAogCiBlbHNlCiAKLSAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IDMyLWJpdCIgPiY1Ci0kYXNfZWNobyAiMzItYml0IiA+JjY7IH0KKyAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7VU5JVkVSU0FMX0FSQ0hTfSIgPiY1CiskYXNfZWNobyAiJHtVTklWRVJTQUxfQVJDSFN9IiA+JjY7IH0KIAogZmkKIApAQCAtMjk4NSw2ICszMjE4LDI1IEBACiAkYXNfZWNob19uICJjaGVja2luZyBNQUNIREVQLi4uICIgPiY2OyB9CiBpZiB0ZXN0IC16ICIkTUFDSERFUCIKIHRoZW4KKyAgICAjIGF2b2lkIHVzaW5nIHVuYW1lIGZvciBjcm9zcyBidWlsZHMKKyAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgICAgICMgYWNfc3lzX3N5c3RlbSBhbmQgYWNfc3lzX3JlbGVhc2UgYXJlIG9ubHkgdXNlZCBmb3Igc2V0dGluZworICAgICAgICMgYGRlZmluZV94b3Blbl9zb3VyY2UnIGluIHRoZSBjYXNlIHN0YXRlbWVudCBiZWxvdy4gRm9yIHRoZQorICAgICAgICMgY3VycmVudCBzdXBwb3J0ZWQgY3Jvc3MgYnVpbGRzLCB0aGlzIG1hY3JvIGlzIG5vdCBhZGp1c3RlZC4KKwljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgqKQorCQlhY19zeXNfc3lzdGVtPUxpbnV4CisJCTs7CisJKi0qLWN5Z3dpbiopCisJCWFjX3N5c19zeXN0ZW09Q3lnd2luCisJCTs7CisJKikKKwkJIyBmb3Igbm93LCBsaW1pdCBjcm9zcyBidWlsZHMgdG8ga25vd24gY29uZmlndXJhdGlvbnMKKwkJTUFDSERFUD0idW5rbm93biIKKwkJYXNfZm5fZXJyb3IgJD8gImNyb3NzIGJ1aWxkIG5vdCBzdXBwb3J0ZWQgZm9yICRob3N0IiAiJExJTkVOTyIgNQorCWVzYWMKKwlhY19zeXNfcmVsZWFzZT0KKyAgICBlbHNlCiAJYWNfc3lzX3N5c3RlbT1gdW5hbWUgLXNgCiAJaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkFJWCIgXAogCS1vICIkYWNfc3lzX3N5c3RlbSIgPSAiVW5peFdhcmUiIC1vICIkYWNfc3lzX3N5c3RlbSIgPSAiT3BlblVOSVgiOyB0aGVuCkBAIC0yOTkyLDE5ICszMjQ0LDQzIEBACiAJZWxzZQogCQlhY19zeXNfcmVsZWFzZT1gdW5hbWUgLXJgCiAJZmkKLQlhY19tZF9zeXN0ZW09YGVjaG8gJGFjX3N5c19zeXN0ZW0gfAotCQkJICAgdHIgLWQgJy8gJyB8IHRyICdbQS1aXScgJ1thLXpdJ2AKLQlhY19tZF9yZWxlYXNlPWBlY2hvICRhY19zeXNfcmVsZWFzZSB8Ci0JCQkgICB0ciAtZCAnLyAnIHwgc2VkICdzL15bQS1aXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCi0JTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgorICAgIGZpCisgICAgYWNfbWRfc3lzdGVtPWBlY2hvICRhY19zeXNfc3lzdGVtIHwKKwkJCXRyIC1kICcvICcgfCB0ciAnW0EtWl0nICdbYS16XSdgCisgICAgYWNfbWRfcmVsZWFzZT1gZWNobyAkYWNfc3lzX3JlbGVhc2UgfAorCQkJdHIgLWQgJy8gJyB8IHNlZCAncy9eW0EtWl1cLi8vJyB8IHNlZCAncy9cLi4qLy8nYAorICAgIE1BQ0hERVA9IiRhY19tZF9zeXN0ZW0kYWNfbWRfcmVsZWFzZSIKIAotCWNhc2UgJE1BQ0hERVAgaW4KLQlsaW51eCopIE1BQ0hERVA9ImxpbnV4MiI7OworICAgIGNhc2UgJE1BQ0hERVAgaW4KKwlsaW51eCopIE1BQ0hERVA9ImxpbnV4Ijs7CiAJY3lnd2luKikgTUFDSERFUD0iY3lnd2luIjs7CiAJZGFyd2luKikgTUFDSERFUD0iZGFyd2luIjs7Ci0gICAgICAgIGlyaXg2NDYpIE1BQ0hERVA9ImlyaXg2Ijs7CisJaXJpeDY0NikgTUFDSERFUD0iaXJpeDYiOzsKIAknJykJTUFDSERFUD0idW5rbm93biI7OworICAgIGVzYWMKK2ZpCisKKworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwljYXNlICIkaG9zdCIgaW4KKwkqLSotbGludXgqKQorCQljYXNlICIkaG9zdF9jcHUiIGluCisJCWFybSopCisJCQlfaG9zdF9jcHU9YXJtCisJCQk7OworCQkqKQorCQkJX2hvc3RfY3B1PSRob3N0X2NwdQorCQllc2FjCisJCTs7CisJKi0qLWN5Z3dpbiopCisJCV9ob3N0X2NwdT0KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlhc19mbl9lcnJvciAkPyAiY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3QiICIkTElORU5PIiA1CiAJZXNhYworCV9QWVRIT05fSE9TVF9QTEFURk9STT0iJE1BQ0hERVAke19ob3N0X2NwdTorLSRfaG9zdF9jcHV9IgogZmkKIAogIyBTb21lIHN5c3RlbXMgY2Fubm90IHN0YW5kIF9YT1BFTl9TT1VSQ0UgYmVpbmcgZGVmaW5lZCBhdCBhbGw7IHRoZXkKQEAgLTMwOTUsOCArMzM3MSw5IEBACiAKIGlmIHRlc3QgJGRlZmluZV94b3Blbl9zb3VyY2UgPSB5ZXMKIHRoZW4KKyAgIyBYL09wZW4gNywgaW5jb3Jwb3JhdGluZyBQT1NJWC4xLTIwMDgKIAotJGFzX2VjaG8gIiNkZWZpbmUgX1hPUEVOX1NPVVJDRSA2MDAiID4+Y29uZmRlZnMuaAorJGFzX2VjaG8gIiNkZWZpbmUgX1hPUEVOX1NPVVJDRSA3MDAiID4+Y29uZmRlZnMuaAogCiAKICAgIyBPbiBUcnU2NCBVbml4IDQuMEYsIGRlZmluaW5nIF9YT1BFTl9TT1VSQ0UgYWxzbyByZXF1aXJlcwpAQCAtMzEwOCw4ICszMzg1LDcgQEAKIAogCiAKLSRhc19lY2hvICIjZGVmaW5lIF9QT1NJWF9DX1NPVVJDRSAyMDAxMTJMIiA+PmNvbmZkZWZzLmgKLQorJGFzX2VjaG8gIiNkZWZpbmUgX1BPU0lYX0NfU09VUkNFIDIwMDgwOUwiID4+Y29uZmRlZnMuaAogCiBmaQogCkBAIC0zMTQwLDEyICszNDE2LDYgQEAKIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9CiBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScjJwogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIG1hY2hpbmUgdHlwZSBhcyByZXBvcnRlZCBieSB1bmFtZSAtbSIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBtYWNoaW5lIHR5cGUgYXMgcmVwb3J0ZWQgYnkgdW5hbWUgLW0uLi4gIiA+JjY7IH0KLWFjX3N5c19tYWNoaW5lPWB1bmFtZSAtbWAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfc3lzX21hY2hpbmUiID4mNQotJGFzX2VjaG8gIiRhY19zeXNfbWFjaGluZSIgPiY2OyB9Ci0KICMgY2hlY2tzIGZvciBhbHRlcm5hdGl2ZSBwcm9ncmFtcwogCiAjIGNvbXBpbGVyIGZsYWdzIGFyZSBnZW5lcmF0ZWQgaW4gdHdvIHNldHMsIEJBU0VDRkxBR1MgYW5kIE9QVC4gIE9QVCBpcyBqdXN0CkBAIC0zMTk1LDYgKzM0NjUsNjYgQEAKIGlmIHRlc3QgLXogIiRDRkxBR1MiOyB0aGVuCiAgICAgICAgIENGTEFHUz0KIGZpCisKK2lmIHRlc3QgIiRhY19zeXNfc3lzdGVtIiA9ICJEYXJ3aW4iCit0aGVuCisJIyBDb21waWxlciBzZWxlY3Rpb24gb24gTWFjT1NYIGlzIG1vcmUgY29tcGxpY2F0ZWQgdGhhbgorCSMgQUNfUFJPR19DQyBjYW4gaGFuZGxlLCBzZWUgTWFjL1JFQURNRS50eHQgZm9yIG1vcmUKKwkjIGluZm9ybWF0aW9uCisJaWYgdGVzdCAteiAiJHtDQ30iCisJdGhlbgorCQlmb3VuZF9nY2M9CisJCWZvdW5kX2NsYW5nPQorCQlhc19zYXZlX0lGUz0kSUZTOyBJRlM9OgorCQlmb3IgYXNfZGlyIGluICRQQVRICisJCWRvCisJCQlJRlM9JGFzX3NhdmVfSUZTCisJCQlpZiB0ZXN0IC14ICRhc19kaXIvZ2NjOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9nY2N9IjsgdGhlbgorCQkJCQlmb3VuZF9nY2M9JGFzX2Rpci9nY2MKKwkJCQlmaQorCQkJZmkKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9jbGFuZzsgdGhlbgorCQkJCWlmIHRlc3QgLXogIiR7Zm91bmRfY2xhbmd9IjsgdGhlbgorCQkJCQlmb3VuZF9jbGFuZz0kYXNfZGlyL2NsYW5nCisJCQkJZmkKKwkJCWZpCisJCWRvbmUKKwkJSUZTPSRhc19zYXZlX0lGUworCisJCWlmIHRlc3QgLW4gIiRmb3VuZF9nY2MiIC1hIC1uICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCWlmIHRlc3QgLW4gImAiJGZvdW5kX2djYyIgLS12ZXJzaW9uIHwgZ3JlcCBsbHZtLWdjY2AiCisJCQl0aGVuCisJCQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBEZXRlY3RlZCBsbHZtLWdjYywgZmFsbGluZyBiYWNrIHRvIGNsYW5nIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IERldGVjdGVkIGxsdm0tZ2NjLCBmYWxsaW5nIGJhY2sgdG8gY2xhbmciID4mNjt9CisJCQkJQ0M9IiRmb3VuZF9jbGFuZyIKKwkJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCQkJZmkKKworCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBObyBHQ0MgZm91bmQsIHVzZSBDTEFORyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBObyBHQ0MgZm91bmQsIHVzZSBDTEFORyIgPiY2O30KKwkJCUNDPSIkZm91bmRfY2xhbmciCisJCQlDWFg9IiRmb3VuZF9jbGFuZysrIgorCisJCWVsaWYgdGVzdCAteiAiJGZvdW5kX2djYyIgLWEgLXogIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJZm91bmRfY2xhbmc9YC91c3IvYmluL3hjcnVuIC1maW5kIGNsYW5nIDI+L2Rldi9udWxsYAorCQkJaWYgdGVzdCAtbiAiJHtmb3VuZF9jbGFuZ30iCisJCQl0aGVuCisJCQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBVc2luZyBjbGFuZyBmcm9tIFhjb2RlLmFwcCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBVc2luZyBjbGFuZyBmcm9tIFhjb2RlLmFwcCIgPiY2O30KKwkJCQlDQz0iJHtmb3VuZF9jbGFuZ30iCisJCQkJQ1hYPSJgL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcrK2AiCisKKwkJCSMgZWxzZTogdXNlIGRlZmF1bHQgYmVoYXZpb3VyCisJCQlmaQorCQlmaQorCWZpCitmaQogYWNfZXh0PWMKIGFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCiBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCkBAIC00MDIxLDE2ICs0MzUxLDYwIEBACiBpZiB0ZXN0IC16ICIkQ1hYIgogdGhlbgogICAgICAgICBjYXNlICIkQ0MiIGluCi0gICAgICAgIGdjYykgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorICAgICAgICBnY2MpICAgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1nKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJENYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9DWFg9IiRDWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK0NYWD0kYWNfY3ZfcGF0aF9DWFgKK2lmIHRlc3QgLW4gIiRDWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1hYIiA+JjUKKyRhc19lY2hvICIkQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBnKys7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgY2FzZSAkQ1hYIGluCisgIGNhc2UgJGFjX3B0X0NYWCBpbgogICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9DWFg9IiRDWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFjX3B0X0NYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCiAgIDs7CiAgICopCiAgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKQEAgLTQwNDAsNyArNDQxNCw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wYXRoX0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKICAgICBicmVhayAyCiAgIGZpCkBAIC00MDQ4LDIyICs0NDIyLDM2IEBACiAgIGRvbmUKIElGUz0kYXNfc2F2ZV9JRlMKIAotICB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiICYmIGFjX2N2X3BhdGhfQ1hYPSJnKysiCiAgIDs7CiBlc2FjCiBmaQotQ1hYPSRhY19jdl9wYXRoX0NYWAotaWYgdGVzdCAtbiAiJENYWCI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDWFgiID4mNQotJGFzX2VjaG8gIiRDWFgiID4mNjsgfQorYWNfcHRfQ1hYPSRhY19jdl9wYXRoX2FjX3B0X0NYWAoraWYgdGVzdCAtbiAiJGFjX3B0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19wdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19wdF9DWFgiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKKyAgaWYgdGVzdCAieCRhY19wdF9DWFgiID0geDsgdGhlbgorICAgIENYWD0iZysrIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIENYWD0kYWNfcHRfQ1hYCisgIGZpCitlbHNlCisgIENYWD0iJGFjX2N2X3BhdGhfQ1hYIgorZmkKICA7OwotICAgICAgICBjYykgICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBjKys7IGFjX3dvcmQ9JDIKKyAgICAgICAgY2MpICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1jKysiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YysrOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfcGF0aF9DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtNDA4OSw3ICs0NDc3LDYgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wYXRoX0NYWCIgJiYgYWNfY3ZfcGF0aF9DWFg9ImMrKyIKICAgOzsKIGVzYWMKIGZpCkBAIC00MTAyLDYgKzQ0ODksMTYxIEBACiAkYXNfZWNobyAibm8iID4mNjsgfQogZmkKIAorCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfQ1hYIjsgdGhlbgorICBhY19wdF9DWFg9JENYWAorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImMrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgYysrOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9hY19wdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9DWFggaW4KKyAgW1xcL10qIHwgPzpbXFwvXSopCisgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYWNfcHRfQ1hYIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiBub3Rmb3VuZAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9DWFg9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQorZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKKyAgOzsKK2VzYWMKK2ZpCithY19wdF9DWFg9JGFjX2N2X3BhdGhfYWNfcHRfQ1hYCitpZiB0ZXN0IC1uICIkYWNfcHRfQ1hYIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X0NYWCIgPiY1CiskYXNfZWNobyAiJGFjX3B0X0NYWCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJjKysiCisgIGVsc2UKKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCit5ZXM6KQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorYWNfdG9vbF93YXJuZWQ9eWVzIDs7Citlc2FjCisgICAgQ1hYPSRhY19wdF9DWFgKKyAgZmkKK2Vsc2UKKyAgQ1hYPSIkYWNfY3ZfcGF0aF9DWFgiCitmaQorIDs7CisgICAgICAgIGNsYW5nfCovY2xhbmcpICAgICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1jbGFuZysrIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWNsYW5nKys7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJENYWCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9DWFg9IiRDWFgiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluIG5vdGZvdW5kCitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wYXRoX0NYWD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK0NYWD0kYWNfY3ZfcGF0aF9DWFgKK2lmIHRlc3QgLW4gIiRDWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ1hYIiA+JjUKKyRhc19lY2hvICIkQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKK2ZpCitpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9DWFgiOyB0aGVuCisgIGFjX3B0X0NYWD0kQ1hYCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiY2xhbmcrKyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgY2xhbmcrKzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfYWNfcHRfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkYWNfcHRfQ1hYIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X0NYWD0iJGFjX3B0X0NYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gbm90Zm91bmQKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3BhdGhfYWNfcHRfQ1hYPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorYWNfcHRfQ1hYPSRhY19jdl9wYXRoX2FjX3B0X0NYWAoraWYgdGVzdCAtbiAiJGFjX3B0X0NYWCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19wdF9DWFgiID4mNQorJGFzX2VjaG8gIiRhY19wdF9DWFgiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAieCRhY19wdF9DWFgiID0geDsgdGhlbgorICAgIENYWD0iY2xhbmcrKyIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX3B0X0NYWAorICBmaQorZWxzZQorICBDWFg9IiRhY19jdl9wYXRoX0NYWCIKK2ZpCiAgOzsKICAgICAgICAgZXNhYwogCWlmIHRlc3QgIiRDWFgiID0gIm5vdGZvdW5kIgpAQCAtNDExMSwxMCArNDY1MywxMSBAQAogZmkKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCi0JZm9yIGFjX3Byb2cgaW4gJENDQyBjKysgZysrIGdjYyBDQyBjeHggY2MrKyBjbAotZG8KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKwlpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgIGZvciBhY19wcm9nIGluICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3Byb2dfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTQxMzAsNyArNDY3Myw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KLSAgICBhY19jdl9wcm9nX0NYWD0iJGFjX3Byb2ciCisgICAgYWNfY3ZfcHJvZ19DWFg9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTQxNTAsOSArNDY5Myw2NSBAQAogZmkKIAogCi0gIHRlc3QgLW4gIiRDWFgiICYmIGJyZWFrCisgICAgdGVzdCAtbiAiJENYWCIgJiYgYnJlYWsKKyAgZG9uZQorZmkKK2lmIHRlc3QgLXogIiRDWFgiOyB0aGVuCisgIGFjX2N0X0NYWD0kQ1hYCisgIGZvciBhY19wcm9nIGluICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9DWFgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkYWNfY3RfQ1hYIjsgdGhlbgorICBhY19jdl9wcm9nX2FjX2N0X0NYWD0iJGFjX2N0X0NYWCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIHsgdGVzdCAtZiAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgJiYgJGFzX3Rlc3RfeCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IH07IHRoZW4KKyAgICBhY19jdl9wcm9nX2FjX2N0X0NYWD0iJGFjX3Byb2ciCisgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgYnJlYWsgMgorICBmaQogZG9uZQotdGVzdCAtbiAiJENYWCIgfHwgQ1hYPSJub3Rmb3VuZCIKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK2FjX2N0X0NYWD0kYWNfY3ZfcHJvZ19hY19jdF9DWFgKK2lmIHRlc3QgLW4gIiRhY19jdF9DWFgiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfQ1hYIiA+JjUKKyRhc19lY2hvICIkYWNfY3RfQ1hYIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJGFjX2N0X0NYWCIgJiYgYnJlYWsKK2RvbmUKKworICBpZiB0ZXN0ICJ4JGFjX2N0X0NYWCIgPSB4OyB0aGVuCisgICAgQ1hYPSJub3Rmb3VuZCIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBDWFg9JGFjX2N0X0NYWAorICBmaQorZmkKIAogCWlmIHRlc3QgIiRDWFgiID0gIm5vdGZvdW5kIgogCXRoZW4KQEAgLTQ4OTIsMzcgKzU0OTEsMzUgQEAKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLWVuYWJsZS1wcm9maWxpbmcuLi4gIiA+JjY7IH0KICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wcm9maWxpbmcgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfcHJvZmlsaW5nK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgZW5hYmxldmFsPSRlbmFibGVfcHJvZmlsaW5nOyBhY19zYXZlX2NjPSIkQ0MiCi0gQ0M9IiRDQyAtcGciCi0gaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBhY19lbmFibGVfcHJvZmlsaW5nPSJubyIKLWVsc2UKKyAgZW5hYmxldmFsPSRlbmFibGVfcHJvZmlsaW5nOworZmkKKworaWYgdGVzdCAieCRlbmFibGVfcHJvZmlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgYWNfc2F2ZV9jYz0iJENDIgorICBDQz0iJChDQykgLXBnIgogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBpbnQgbWFpbigpIHsgcmV0dXJuIDA7IH0KIF9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2VuYWJsZV9wcm9maWxpbmc9InllcyIKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKwogZWxzZQotICBhY19lbmFibGVfcHJvZmlsaW5nPSJubyIKKyAgZW5hYmxlX3Byb2ZpbGluZz1ubwogZmkKLXJtIC1mIGNvcmUgKi5jb3JlIGNvcmUuY29uZnRlc3QuKiBnbW9uLm91dCBiYi5vdXQgY29uZnRlc3QkYWNfZXhlZXh0IFwKLSAgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC5iZWFtIGNvbmZ0ZXN0LiRhY19leHQKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CisgIENDPSIkYWNfc2F2ZV9jYyIKK2Vsc2UKKyAgZW5hYmxlX3Byb2ZpbGluZz1ubwogZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZW5hYmxlX3Byb2ZpbGluZyIgPiY1CiskYXNfZWNobyAiJGVuYWJsZV9wcm9maWxpbmciID4mNjsgfQogCi0gQ0M9IiRhY19zYXZlX2NjIgoraWYgdGVzdCAieCRlbmFibGVfcHJvZmlsaW5nIiA9IHh5ZXM7IHRoZW4KKyAgQkFTRUNGTEFHUz0iLXBnICRCQVNFQ0ZMQUdTIgorICBMREZMQUdTPSItcGcgJExERkxBR1MiCiBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2VuYWJsZV9wcm9maWxpbmciID4mNQotJGFzX2VjaG8gIiRhY19lbmFibGVfcHJvZmlsaW5nIiA+JjY7IH0KLQotY2FzZSAiJGFjX2VuYWJsZV9wcm9maWxpbmciIGluCi0gICAgInllcyIpCi0JQkFTRUNGTEFHUz0iLXBnICRCQVNFQ0ZMQUdTIgotCUxERkxBR1M9Ii1wZyAkTERGTEFHUyIKLSAgICA7OwotZXNhYwotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIExETElCUkFSWSIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBMRExJQlJBUlkuLi4gIiA+JjY7IH0KIApAQCAtNDk4OCwxMSArNTU4NSw2IEBACiAJICBCTERMSUJSQVJZPSctV2wsK2IsJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKIAkgIFJVTlNIQVJFRD1TSExJQl9QQVRIPWBwd2RgOiR7U0hMSUJfUEFUSH0KIAkgIDs7Ci0gICAgT1NGKikKLQkgIExETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLnNvJwotCSAgQkxETElCUkFSWT0nLXJwYXRoICQoTElCRElSKSAtTC4gLWxweXRob24kKExEVkVSU0lPTiknCi0JICBSVU5TSEFSRUQ9TERfTElCUkFSWV9QQVRIPWBwd2RgOiR7TERfTElCUkFSWV9QQVRIfQotCSAgOzsKICAgICBEYXJ3aW4qKQogICAgIAlMRExJQlJBUlk9J2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYicKIAlCTERMSUJSQVJZPSctTC4gLWxweXRob24kKExEVkVSU0lPTiknCkBAIC01MDEzLDYgKzU2MDUsMTAgQEAKICAgZXNhYwogZmkKIAoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKwlSVU5TSEFSRUQ9CitmaQorCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJExETElCUkFSWSIgPiY1CiAkYXNfZWNobyAiJExETElCUkFSWSIgPiY2OyB9CiAKQEAgLTUxMDksMTAgKzU3MDUsMTEgQEAKIGZpCiAKIAotZm9yIGFjX3Byb2cgaW4gYXIgYWFsCi1kbwotICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBhciBhYWwKKyAgZG8KKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgpAQCAtNTEyOCw3ICs1NzI1LDcgQEAKICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KICAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotICAgIGFjX2N2X3Byb2dfQVI9IiRhY19wcm9nIgorICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTUxNDgsOSArNTc0NSw2NSBAQAogZmkKIAogCi0gIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisgIGRvbmUKK2ZpCitpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgIGFjX2N0X0FSPSRBUgorICBmb3IgYWNfcHJvZyBpbiBhciBhYWwKK2RvCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX2N0X0FSIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KK2Vsc2UKK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgorICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKIGRvbmUKLXRlc3QgLW4gIiRBUiIgfHwgQVI9ImFyIgorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisKK2ZpCitmaQorYWNfY3RfQVI9JGFjX2N2X3Byb2dfYWNfY3RfQVIKK2lmIHRlc3QgLW4gIiRhY19jdF9BUiI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9BUiIgPiY1CiskYXNfZWNobyAiJGFjX2N0X0FSIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgIEFSPSJhciIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBBUj0kYWNfY3RfQVIKKyAgZmkKK2ZpCiAKIAogIyB0d2VhayBBUkZMQUdTIG9ubHkgaWYgdGhlIHVzZXIgZGlkbid0IHNldCBpdCBvbiB0aGUgY29tbWFuZCBsaW5lCkBAIC01MTYwLDE2ICs1ODEzLDE4IEBACiAgICAgICAgIEFSRkxBR1M9InJjIgogZmkKIAotCi0jIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInN2bnZlcnNpb24iLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IHN2bnZlcnNpb247IGFjX3dvcmQ9JDIKK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKyAgZm9yIGFjX3Byb2cgaW4gcmVhZGVsZgorICBkbworICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfcHJvZ19TVk5WRVJTSU9OKzp9IGZhbHNlOyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19SRUFERUxGKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgaWYgdGVzdCAtbiAiJFNWTlZFUlNJT04iOyB0aGVuCi0gIGFjX2N2X3Byb2dfU1ZOVkVSU0lPTj0iJFNWTlZFUlNJT04iICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBpZiB0ZXN0IC1uICIkUkVBREVMRiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19SRUFERUxGPSIkUkVBREVMRiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCiBlbHNlCiBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiBmb3IgYXNfZGlyIGluICRQQVRICkBAIC01MTc4LDcgKzU4MzMsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSJmb3VuZCIKKyAgICBhY19jdl9wcm9nX1JFQURFTEY9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgogICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQogICAgIGJyZWFrIDIKICAgZmkKQEAgLTUxODYsNTcgKzU4NDEsMzQgQEAKICAgZG9uZQogSUZTPSRhc19zYXZlX0lGUwogCi0gIHRlc3QgLXogIiRhY19jdl9wcm9nX1NWTlZFUlNJT04iICYmIGFjX2N2X3Byb2dfU1ZOVkVSU0lPTj0ibm90LWZvdW5kIgogZmkKIGZpCi1TVk5WRVJTSU9OPSRhY19jdl9wcm9nX1NWTlZFUlNJT04KLWlmIHRlc3QgLW4gIiRTVk5WRVJTSU9OIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFNWTlZFUlNJT04iID4mNQotJGFzX2VjaG8gIiRTVk5WRVJTSU9OIiA+JjY7IH0KK1JFQURFTEY9JGFjX2N2X3Byb2dfUkVBREVMRgoraWYgdGVzdCAtbiAiJFJFQURFTEYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUkVBREVMRiIgPiY1CiskYXNfZWNobyAiJFJFQURFTEYiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIAotaWYgdGVzdCAkU1ZOVkVSU0lPTiA9IGZvdW5kCi10aGVuCi0JU1ZOVkVSU0lPTj0ic3ZudmVyc2lvbiBcJChzcmNkaXIpIgotZWxzZQotCVNWTlZFUlNJT049ImVjaG8gVW52ZXJzaW9uZWQgZGlyZWN0b3J5IgorICAgIHRlc3QgLW4gIiRSRUFERUxGIiAmJiBicmVhaworICBkb25lCiBmaQotCi0KLWlmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KLSAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCi0gICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCi0gICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKLSAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCi0gICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCi0gICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQotICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKLSAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCi0gICAgIyAgb2ZmLikKLSAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCi1lbHNlCi0gICAgQkFTRUNQUEZMQUdTPSIiCi1maQotCi0KLQotCi0KLWlmIHRlc3QgLWUgJHNyY2Rpci8uaGcvZGlyc3RhdGUKLXRoZW4KLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiaGciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IGhnOyBhY193b3JkPSQyCitpZiB0ZXN0IC16ICIkUkVBREVMRiI7IHRoZW4KKyAgYWNfY3RfUkVBREVMRj0kUkVBREVMRgorICBmb3IgYWNfcHJvZyBpbiByZWFkZWxmCitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3Byb2dfSEFTX0hHKzp9IGZhbHNlOyB0aGVuIDoKK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgaWYgdGVzdCAtbiAiJEhBU19IRyI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19IQVNfSEc9IiRIQVNfSEciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBpZiB0ZXN0IC1uICIkYWNfY3RfUkVBREVMRiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19hY19jdF9SRUFERUxGPSIkYWNfY3RfUkVBREVMRiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCiBlbHNlCiBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiBmb3IgYXNfZGlyIGluICRQQVRICkBAIC01MjQ1LDcgKzU4NzcsNyBAQAogICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgogICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwogICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0gICAgYWNfY3ZfcHJvZ19IQVNfSEc9ImZvdW5kIgorICAgIGFjX2N2X3Byb2dfYWNfY3RfUkVBREVMRj0iJGFjX3Byb2ciCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTI1MywzNCArNTg4NSw0NCBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfSEFTX0hHIiAmJiBhY19jdl9wcm9nX0hBU19IRz0ibm90LWZvdW5kIgogZmkKIGZpCi1IQVNfSEc9JGFjX2N2X3Byb2dfSEFTX0hHCi1pZiB0ZXN0IC1uICIkSEFTX0hHIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJEhBU19IRyIgPiY1Ci0kYXNfZWNobyAiJEhBU19IRyIgPiY2OyB9CithY19jdF9SRUFERUxGPSRhY19jdl9wcm9nX2FjX2N0X1JFQURFTEYKK2lmIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X1JFQURFTEYiID4mNQorJGFzX2VjaG8gIiRhY19jdF9SRUFERUxGIiA+JjY7IH0KIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQogCiAKLWVsc2UKLUhBU19IRz1uby1yZXBvc2l0b3J5CisgIHRlc3QgLW4gIiRhY19jdF9SRUFERUxGIiAmJiBicmVhaworZG9uZQorCisgIGlmIHRlc3QgIngkYWNfY3RfUkVBREVMRiIgPSB4OyB0aGVuCisgICAgUkVBREVMRj0iOiIKKyAgZWxzZQorICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KK3llczopCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CithY190b29sX3dhcm5lZD15ZXMgOzsKK2VzYWMKKyAgICBSRUFERUxGPSRhY19jdF9SRUFERUxGCisgIGZpCiBmaQotaWYgdGVzdCAkSEFTX0hHID0gZm91bmQKLXRoZW4KLSAgICBIR1ZFUlNJT049ImhnIGlkIC1pIFwkKHNyY2RpcikiCi0gICAgSEdUQUc9ImhnIGlkIC10IFwkKHNyY2RpcikiCi0gICAgSEdCUkFOQ0g9ImhnIGlkIC1iIFwkKHNyY2RpcikiCi1lbHNlCi0gICAgSEdWRVJTSU9OPSIiCi0gICAgSEdUQUc9IiIKLSAgICBIR0JSQU5DSD0iIgorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorICAgIGNhc2UgIiRSRUFERUxGIiBpbgorCXJlYWRlbGZ8OikKKwlhc19mbl9lcnJvciAkPyAicmVhZGVsZiBmb3IgdGhlIGhvc3QgaXMgcmVxdWlyZWQgZm9yIGNyb3NzIGJ1aWxkcyIgIiRMSU5FTk8iIDUKKwk7OworICAgIGVzYWMKIGZpCiAKIAorCiBmb3IgYWNfcHJvZyBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uCiBkbwogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KQEAgLTUzMzksMzUgKzU5ODEsNiBAQAogCQlJTlNUQUxMPSIke3NyY2Rpcn0vaW5zdGFsbC1zaCAtYyIKIAlmaQogZXNhYwotYWNfYXV4X2Rpcj0KLWZvciBhY19kaXIgaW4gIiRzcmNkaXIiICIkc3JjZGlyLy4uIiAiJHNyY2Rpci8uLi8uLiI7IGRvCi0gIGlmIHRlc3QgLWYgIiRhY19kaXIvaW5zdGFsbC1zaCI7IHRoZW4KLSAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9pbnN0YWxsLXNoIC1jIgotICAgIGJyZWFrCi0gIGVsaWYgdGVzdCAtZiAiJGFjX2Rpci9pbnN0YWxsLnNoIjsgdGhlbgotICAgIGFjX2F1eF9kaXI9JGFjX2RpcgotICAgIGFjX2luc3RhbGxfc2g9IiRhY19hdXhfZGlyL2luc3RhbGwuc2ggLWMiCi0gICAgYnJlYWsKLSAgZWxpZiB0ZXN0IC1mICIkYWNfZGlyL3NodG9vbCI7IHRoZW4KLSAgICBhY19hdXhfZGlyPSRhY19kaXIKLSAgICBhY19pbnN0YWxsX3NoPSIkYWNfYXV4X2Rpci9zaHRvb2wgaW5zdGFsbCAtYyIKLSAgICBicmVhawotICBmaQotZG9uZQotaWYgdGVzdCAteiAiJGFjX2F1eF9kaXIiOyB0aGVuCi0gIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgZmluZCBpbnN0YWxsLXNoLCBpbnN0YWxsLnNoLCBvciBzaHRvb2wgaW4gXCIkc3JjZGlyXCIgXCIkc3JjZGlyLy4uXCIgXCIkc3JjZGlyLy4uLy4uXCIiICIkTElORU5PIiA1Ci1maQotCi0jIFRoZXNlIHRocmVlIHZhcmlhYmxlcyBhcmUgdW5kb2N1bWVudGVkIGFuZCB1bnN1cHBvcnRlZCwKLSMgYW5kIGFyZSBpbnRlbmRlZCB0byBiZSB3aXRoZHJhd24gaW4gYSBmdXR1cmUgQXV0b2NvbmYgcmVsZWFzZS4KLSMgVGhleSBjYW4gY2F1c2Ugc2VyaW91cyBwcm9ibGVtcyBpZiBhIGJ1aWxkZXIncyBzb3VyY2UgdHJlZSBpcyBpbiBhIGRpcmVjdG9yeQotIyB3aG9zZSBmdWxsIG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzLgotYWNfY29uZmlnX2d1ZXNzPSIkU0hFTEwgJGFjX2F1eF9kaXIvY29uZmlnLmd1ZXNzIiAgIyBQbGVhc2UgZG9uJ3QgdXNlIHRoaXMgdmFyLgotYWNfY29uZmlnX3N1Yj0iJFNIRUxMICRhY19hdXhfZGlyL2NvbmZpZy5zdWIiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi1hY19jb25maWd1cmU9IiRTSEVMTCAkYWNfYXV4X2Rpci9jb25maWd1cmUiICAjIFBsZWFzZSBkb24ndCB1c2UgdGhpcyB2YXIuCi0KLQogIyBGaW5kIGEgZ29vZCBpbnN0YWxsIHByb2dyYW0uICBXZSBwcmVmZXIgYSBDIHByb2dyYW0gKGZhc3RlciksCiAjIHNvIG9uZSBzY3JpcHQgaXMgYXMgZ29vZCBhcyBhbm90aGVyLiAgQnV0IGF2b2lkIHRoZSBicm9rZW4gb3IKICMgaW5jb21wYXRpYmxlIHZlcnNpb25zOgpAQCAtNTY4MSwxMCArNjI5NCw1MyBAQAogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWZuby1zdHJpY3QtYWxpYXNpbmciCiAgICAgZmkKIAorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyB1bnVzZWQgcmVzdWx0IHdhcm5pbmcuLi4gIiA+JjY7IH0KKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XdW51c2VkLXJlc3VsdCAtV2Vycm9yIgorICAgICBzYXZlX0NGTEFHUz0iJENGTEFHUyIKKyAgICAgaWYgJHthY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz15ZXMKKworZWxzZQorCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPW5vCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK2ZpCisKKyAgICAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmciID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KLSAgICBjYXNlICRhY19zeXNfbWFjaGluZSBpbgorICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICAgIGFscGhhKikKICAgICAgICAgICAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCiAgICAgICAgICAgICAgICAgOzsKQEAgLTU3NjAsNyArNjQxNiw5IEBACiAJICAgICMgQ2FsY3VsYXRlIHRoZSByaWdodCBkZXBsb3ltZW50IHRhcmdldCBmb3IgdGhpcyBidWlsZC4KIAkgICAgIwogCSAgICBjdXJfdGFyZ2V0PWBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IHNlZCAncy9cKDEwXC5bMC05XSpcKS4qL1wxLydgCi0JICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMjsgdGhlbgorCSAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldH0gJz4nIDEwLjIgJiYgXAorCSAgICAgICB0ZXN0ICR7Y3VyX3RhcmdldH0gJzwnIDEwLjYKKwkgICAgdGhlbgogCQkgICAgY3VyX3RhcmdldD0xMC4zCiAJCSAgICBpZiB0ZXN0ICR7ZW5hYmxlX3VuaXZlcnNhbHNka307IHRoZW4KIAkJCSAgICBpZiB0ZXN0ICIke1VOSVZFUlNBTF9BUkNIU30iID0gImFsbCI7IHRoZW4KQEAgLTU3OTksOSArNjQ1Nyw2IEBACiAJICAgIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JycKIAogCSAgICA7OwotCU9TRiopCi0JICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1taWVlZSIKLQkgICAgOzsKICAgICBlc2FjCiAgICAgOzsKIApAQCAtNTgxMCw5ICs2NDY1LDYgQEAKICAgICBPcGVuVU5JWCp8VW5peFdhcmUqKQogCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1LIHBlbnRpdW0saG9zdCxpbmxpbmUsbG9vcF91bnJvbGwsYWxsb2NhICIKIAk7OwotICAgIE9TRiopCi0JQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWllZWUgLXN0ZCIKLSAgICAJOzsKICAgICBTQ09fU1YqKQogCUJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1iZWxmIC1LaTQ4NiAtRFNDTzUiCiAJOzsKQEAgLTYyMjIsMTcgKzY4NzQsMjAgQEAKIAogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKIGZvciBhY19oZWFkZXIgaW4gYXNtL3R5cGVzLmggY29uaW8uaCBjdXJzZXMuaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCi1pZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIG5jdXJzZXMuaCBwb2xsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIHRocmVhZC5oIFwKK2llZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAotc3lzL2F1ZGlvaW8uaCBzeXMvYnNkdHR5Lmggc3lzL2Vwb2xsLmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvbG9hZGF2Zy5oIFwKLXN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAotc3lzL3BhcmFtLmggc3lzL3BvbGwuaCBzeXMvc2VsZWN0Lmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3N0YXQuaCBcCi1zeXMvc3lzY2FsbC5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKLXN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBsaWJ1dGlsLmggXAotc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAorcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCitzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKK3N5cy9rZXJuX2NvbnRyb2wuaCBzeXMvbG9hZGF2Zy5oIHN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAorc3lzL3BhcmFtLmggc3lzL3NlbGVjdC5oIHN5cy9zZW5kZmlsZS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIFwKK3N5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKK3N5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAorbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKIGJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggc3Bhd24uaCB1dGlsLmgKIGRvIDoKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYApAQCAtNjI0Niw2ICs2OTAxLDcgQEAKIAogZG9uZQogCitDUFBGTEFHUz0kYWNfc2F2ZV9jcHBmbGFncwogYWNfaGVhZGVyX2RpcmVudD1ubwogZm9yIGFjX2hkciBpbiBkaXJlbnQuaCBzeXMvbmRpci5oIHN5cy9kaXIuaCBuZGlyLmg7IGRvCiAgIGFzX2FjX0hlYWRlcj1gJGFzX2VjaG8gImFjX2N2X2hlYWRlcl9kaXJlbnRfJGFjX2hkciIgfCAkYXNfdHJfc2hgCkBAIC02NDU1LDYgKzcxMTEsMzQgQEAKIGZpCiAKIAorIyBPbiBEYXJ3aW4gKE9TIFgpIG5ldC9pZi5oIHJlcXVpcmVzIHN5cy9zb2NrZXQuaCB0byBiZSBpbXBvcnRlZCBmaXJzdC4KK2ZvciBhY19oZWFkZXIgaW4gbmV0L2lmLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIm5ldC9pZi5oIiAiYWNfY3ZfaGVhZGVyX25ldF9pZl9oIiAiI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgU1REQ19IRUFERVJTCisjIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbHNlCisjIGlmZGVmIEhBVkVfU1RETElCX0gKKyMgIGluY2x1ZGUgPHN0ZGxpYi5oPgorIyBlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyMgaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX25ldF9pZl9oIiA9IHh5ZXM7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfTkVUX0lGX0ggMQorX0FDRU9GCisKK2ZpCisKK2RvbmUKKworCisKICMgT24gU29sYXJpcywgdGVybS5oIHJlcXVpcmVzIGN1cnNlcy5oCiBmb3IgYWNfaGVhZGVyIGluIHRlcm0uaAogZG8gOgpAQCAtNjQ5Niw2ICs3MTgwLDI2IEBACiBkb25lCiAKIAorIyBPbiBMaW51eCwgY2FuLmggYW5kIGNhbi9yYXcuaCByZXF1aXJlIHN5cy9zb2NrZXQuaAorZm9yIGFjX2hlYWRlciBpbiBsaW51eC9jYW4uaCBsaW51eC9jYW4vcmF3LmgKK2RvIDoKKyAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYAorYWNfZm5fY19jaGVja19oZWFkZXJfY29tcGlsZSAiJExJTkVOTyIgIiRhY19oZWFkZXIiICIkYXNfYWNfSGVhZGVyIiAiCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKworIgoraWYgZXZhbCB0ZXN0IFwieFwkIiRhc19hY19IZWFkZXIiXCIgPSB4InllcyI7IHRoZW4gOgorICBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIGAkYXNfZWNobyAiSEFWRV8kYWNfaGVhZGVyIiB8ICRhc190cl9jcHBgIDEKK19BQ0VPRgorCitmaQorCitkb25lCisKKwogIyBjaGVja3MgZm9yIHR5cGVkZWZzCiB3YXNfaXRfZGVmaW5lZD1ubwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfdCBpbiB0aW1lLmgiID4mNQpAQCAtNjUyMCw3ICs3MjI0LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2FzX2l0X2RlZmluZWQiID4mNQogJGFzX2VjaG8gIiR3YXNfaXRfZGVmaW5lZCIgPiY2OyB9CiAKLSMgQ2hlY2sgd2hldGhlciB1c2luZyBtYWtlZGV2IHJlcXVpcmVzIGRlZmluaW5nIF9PU0ZfU09VUkNFCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWtlZGV2IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWtlZGV2Li4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC02NTUxLDM1ICs3MjU0LDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJubyI7IHRoZW4KLSAgICAjIHdlIGRpZG4ndCBsaW5rLCB0cnkgaWYgX09TRl9TT1VSQ0Ugd2lsbCBhbGxvdyB1cyB0byBsaW5rCi0gICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0jZGVmaW5lIF9PU0ZfU09VUkNFIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotaW50Ci1tYWluICgpCi17Ci0gbWFrZWRldigwLCAwKQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhc19tYWtlZGV2PXllcwotZWxzZQotICBhY19jdl9oYXNfbWFrZWRldj1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gICAgaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJ5ZXMiOyB0aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIF9PU0ZfU09VUkNFIDEiID4+Y29uZmRlZnMuaAotCi0gICAgZmkKLWZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2hhc19tYWtlZGV2IiA+JjUKICRhc19lY2hvICIkYWNfY3ZfaGFzX21ha2VkZXYiID4mNjsgfQogaWYgdGVzdCAiJGFjX2N2X2hhc19tYWtlZGV2IiA9ICJ5ZXMiOyB0aGVuCkBAIC02Nzg3LDYgKzc0NjEsMTMgQEAKIAogZmkKIAorYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiX191aW50MTI4X3QiICJhY19jdl90eXBlX19fdWludDEyOF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfX191aW50MTI4X3QiID0geHllczsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfR0NDX1VJTlQxMjhfVCAxIiA+PmNvbmZkZWZzLmgKKworZmkKKwogCiAjIFNpemVzIG9mIHZhcmlvdXMgY29tbW9uIGJhc2ljIHR5cGVzCiAjIEFOU0kgQyByZXF1aXJlcyBzaXplb2YoY2hhcikgPT0gMSwgc28gbm8gbmVlZCB0byBjaGVjayBpdApAQCAtNzY2Nyw3ICs4MzQ4LDYgQEAKIAkJZWxzZQogCQkJTERTSEFSRUQ9J2xkIC1iJwogCQlmaSA7OwotCU9TRiopIExEU0hBUkVEPSJsZCAtc2hhcmVkIC1leHBlY3RfdW5yZXNvbHZlZCBcIipcIiI7OwogCURhcndpbi8xLjMqKQogCQlMRFNIQVJFRD0nJChDQykgLWJ1bmRsZScKIAkJTERDWFhTSEFSRUQ9JyQoQ1hYKSAtYnVuZGxlJwpAQCAtNzkwNiw2ICs4NTg2LDUxIEBACiAKIAogIyBjaGVja3MgZm9yIGxpYnJhcmllcworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc2VuZGZpbGUgaW4gLWxzZW5kZmlsZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3Igc2VuZGZpbGUgaW4gLWxzZW5kZmlsZS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfc2VuZGZpbGVfc2VuZGZpbGUrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHNlbmRmaWxlICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBzZW5kZmlsZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIHNlbmRmaWxlICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3NlbmRmaWxlX3NlbmRmaWxlPW5vCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMKK2ZpCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9zZW5kZmlsZV9zZW5kZmlsZSIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0xJQlNFTkRGSUxFIDEKK19BQ0VPRgorCisgIExJQlM9Ii1sc2VuZGZpbGUgJExJQlMiCisKK2ZpCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBkbG9wZW4gaW4gLWxkbC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9saWJfZGxfZGxvcGVuKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTgzNzQsNiArOTA5OSwyMSBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3N5c3RlbV9mZmkiID4mNQogJGFzX2VjaG8gIiR3aXRoX3N5c3RlbV9mZmkiID4mNjsgfQogCisjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJtcGRlYyBsaWJyYXJ5Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtc3lzdGVtLWxpYm1wZGVjLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtX2xpYm1wZGVjIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9zeXN0ZW1fbGlibXBkZWMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX3N5c3RlbV9saWJtcGRlYzsKK2Vsc2UKKyAgd2l0aF9zeXN0ZW1fbGlibXBkZWM9Im5vIgorZmkKKworCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfc3lzdGVtX2xpYm1wZGVjIiA+JjUKKyRhc19lY2hvICIkd2l0aF9zeXN0ZW1fbGlibXBkZWMiID4mNjsgfQorCiAjIENoZWNrIGZvciBzdXBwb3J0IGZvciBsb2FkYWJsZSBzcWxpdGUgZXh0ZW5zaW9ucwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0tZW5hYmxlLWxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zLi4uICIgPiY2OyB9CkBAIC04NDQxLDIzICs5MTgxLDYgQEAKIAogVVNFX1RIUkVBRF9NT0RVTEU9IiIKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLWRlYy10aHJlYWRzIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtZGVjLXRocmVhZHMuLi4gIiA+JjY7IH0KLQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLWRlYy10aHJlYWRzIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7d2l0aF9kZWNfdGhyZWFkcytzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZGVjX3RocmVhZHM7Ci17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGh2YWwiID4mNQotJGFzX2VjaG8gIiR3aXRodmFsIiA+JjY7IH0KLUxETEFTVD0tdGhyZWFkcwotaWYgdGVzdCAiJHt3aXRoX3RocmVhZCtzZXR9IiAhPSBzZXQ7IHRoZW4KLSAgIHdpdGhfdGhyZWFkPSIkd2l0aHZhbCI7Ci1maQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCiAKIAogIyBUZW1wbGF0ZXMgZm9yIHRoaW5ncyBBQ19ERUZJTkVkIG1vcmUgdGhhbiBvbmNlLgpAQCAtODQ2NSw3ICs5MTg4LDYgQEAKIAogCiAKLQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXRocmVhZHMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC10aHJlYWRzLi4uICIgPiY2OyB9CiAKQEAgLTg1NjcsMzEgKzkyODksNiBAQAogCiAgICAgJGFzX2VjaG8gIiNkZWZpbmUgX1JFRU5UUkFOVCAxIiA+PmNvbmZkZWZzLmgKIAotICAgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJjdGhyZWFkcy5oIiAiYWNfY3ZfaGVhZGVyX2N0aHJlYWRzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2N0aHJlYWRzX2giID0geHllczsgdGhlbiA6Ci0gICRhc19lY2hvICIjZGVmaW5lIFdJVEhfVEhSRUFEIDEiID4+Y29uZmRlZnMuaAotCi0gICAgJGFzX2VjaG8gIiNkZWZpbmUgQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhVUkRfQ19USFJFQURTIDEiID4+Y29uZmRlZnMuaAotCi0gICAgTElCUz0iJExJQlMgLWx0aHJlYWRzIgotICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIgotZWxzZQotCi0gICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm1hY2gvY3RocmVhZHMuaCIgImFjX2N2X2hlYWRlcl9tYWNoX2N0aHJlYWRzX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX21hY2hfY3RocmVhZHNfaCIgPSB4eWVzOyB0aGVuIDoKLSAgJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9USFJFQUQgMSIgPj5jb25mZGVmcy5oCi0KLSAgICAkYXNfZWNobyAiI2RlZmluZSBDX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLQotJGFzX2VjaG8gIiNkZWZpbmUgTUFDSF9DX1RIUkVBRFMgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyIKLWVsc2UKLQogICAgICMgSnVzdCBsb29raW5nIGZvciBwdGhyZWFkX2NyZWF0ZSBpbiBsaWJwdGhyZWFkIGlzIG5vdCBlbm91Z2g6CiAgICAgIyBvbiBIUC9VWCwgcHRocmVhZC5oIHJlbmFtZXMgcHRocmVhZF9jcmVhdGUgdG8gYSBkaWZmZXJlbnQgc3ltYm9sIG5hbWUuCiAgICAgIyBTbyB3ZSByZWFsbHkgaGF2ZSB0byBpbmNsdWRlIHB0aHJlYWQuaCwgYW5kIHRoZW4gbGluay4KQEAgLTg4MjMsMTIgKzk1MjAsNiBAQAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi0KLWZpCi0KLQogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdXNjb25maWcgaW4gLWxtcGMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHVzY29uZmlnIGluIC1sbXBjLi4uICIgPiY2OyB9CkBAIC04OTIxLDE1ICs5NjEyLDYgQEAKIGZpCiAKICAgICBmaQotCi0gICAgaWYgdGVzdCAiJFVTRV9USFJFQURfTU9EVUxFIiAhPSAiIyIKLSAgICB0aGVuCi0gICAgICAgICMgSWYgdGhlIGFib3ZlIGNoZWNrcyBkaWRuJ3QgZGlzYWJsZSB0aHJlYWRzLCAoYXQgbGVhc3QpIE9TRjEKLSAgICAgICAgIyBuZWVkcyB0aGlzICctdGhyZWFkcycgYXJndW1lbnQgZHVyaW5nIGxpbmtpbmcuCi0gICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgICAgICAgT1NGMSkgTERMQVNUPS10aHJlYWRzOzsKLSAgICAgICAgZXNhYwotICAgIGZpCiBmaQogCiBpZiB0ZXN0ICIkcG9zaXhfdGhyZWFkcyIgPSAieWVzIjsgdGhlbgpAQCAtOTM2NiwxMyArMTAwNDgsMTMgQEAKIGlmIHRlc3QgLXogIiR3aXRoX3B5bWFsbG9jIgogdGhlbgogICAgIHdpdGhfcHltYWxsb2M9InllcyIKLSAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIGlmIHRlc3QgIiR3aXRoX3B5bWFsbG9jIiAhPSAibm8iCiB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIFdJVEhfUFlNQUxMT0MgMSIgPj5jb25mZGVmcy5oCiAKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9weW1hbGxvYyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfcHltYWxsb2MiID4mNjsgfQpAQCAtOTQ3MCwyNCArMTAxNTIsMzcgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogTUFDSERFUF9PQkpTIiA+JjUKLSRhc19lY2hvICJNQUNIREVQX09CSlMiID4mNjsgfQoraWYgdGVzdCAteiAiJE1BQ0hERVBfT0JKUyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vbmUiID4mNQorJGFzX2VjaG8gIm5vbmUiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BQ0hERVBfT0JKUyIgPiY1CiskYXNfZWNobyAiJE1BQ0hERVBfT0JKUyIgPiY2OyB9CitmaQogCiAjIGNoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMKIGZvciBhY19mdW5jIGluIGFsYXJtIGFjY2VwdDQgc2V0aXRpbWVyIGdldGl0aW1lciBiaW5kX3RleHRkb21haW5fY29kZXNldCBjaG93biBcCi0gY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZjaG1vZCBmY2hvd24gZm9yayBmcGF0aGNvbmYgZnRpbWUgZnRydW5jYXRlIFwKLSBnYWlfc3RyZXJyb3IgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAorIGNsb2NrIGNvbmZzdHIgY3Rlcm1pZCBleGVjdiBmYWNjZXNzYXQgZmNobW9kIGZjaG1vZGF0IGZjaG93biBmY2hvd25hdCBcCisgZmV4ZWN2ZSBmZG9wZW5kaXIgZm9yayBmcGF0aGNvbmYgZnN0YXRhdCBmdGltZSBmdHJ1bmNhdGUgZnV0aW1lc2F0IFwKKyBmdXRpbWVucyBmdXRpbWVzIGdhaV9zdHJlcnJvciBcCisgZ2V0Z3JvdXBsaXN0IGdldGdyb3VwcyBnZXRsb2dpbiBnZXRsb2FkYXZnIGdldHBlZXJuYW1lIGdldHBnaWQgZ2V0cGlkIFwKICBnZXRwcmlvcml0eSBnZXRyZXN1aWQgZ2V0cmVzZ2lkIGdldHB3ZW50IGdldHNwbmFtIGdldHNwZW50IGdldHNpZCBnZXR3ZCBcCi0gaW5pdGdyb3VwcyBraWxsIGtpbGxwZyBsY2htb2QgbGNob3duIGxzdGF0IG1icnRvd2MgbWtmaWZvIG1rbm9kIG1rdGltZSBcCi0gbXJlbWFwIG5pY2UgcGF0aGNvbmYgcGF1c2UgcGxvY2sgcG9sbCBwdGhyZWFkX2luaXQgXAotIHB1dGVudiByZWFkbGluayByZWFscGF0aCBcCi0gc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2V0ZWdpZCBzZXRldWlkIFwKLSBzZXRnaWQgXAotIHNldGxvY2FsZSBzZXRyZWdpZCBzZXRyZXVpZCBzZXRyZXN1aWQgc2V0cmVzZ2lkIHNldHNpZCBzZXRwZ2lkIHNldHBncnAgc2V0dWlkIHNldHZidWYgXAotIHNpZ2FjdGlvbiBzaWdpbnRlcnJ1cHQgc2lncmVsc2Ugc25wcmludGYgc3RyZnRpbWUgc3RybGNweSBcCisgaWZfbmFtZWluZGV4IFwKKyBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbG9ja2YgbGlua2F0IGxzdGF0IGx1dGltZXMgbW1hcCBcCisgbWVtcmNociBtYnJ0b3djIG1rZGlyYXQgbWtmaWZvIFwKKyBta2ZpZm9hdCBta25vZCBta25vZGF0IG1rdGltZSBtcmVtYXAgbmljZSBvcGVuYXQgcGF0aGNvbmYgcGF1c2UgcGlwZTIgcGxvY2sgcG9sbCBcCisgcG9zaXhfZmFsbG9jYXRlIHBvc2l4X2ZhZHZpc2UgcHJlYWQgXAorIHB0aHJlYWRfaW5pdCBwdGhyZWFkX2tpbGwgcHV0ZW52IHB3cml0ZSByZWFkbGluayByZWFkbGlua2F0IHJlYWR2IHJlYWxwYXRoIHJlbmFtZWF0IFwKKyBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZW5kZmlsZSBzZXRlZ2lkIHNldGV1aWQgXAorIHNldGdpZCBzZXRob3N0bmFtZSBcCisgc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXRwcmlvcml0eSBzZXR1aWQgc2V0dmJ1ZiBcCisgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCBzY2hlZF9zZXRhZmZpbml0eSBzY2hlZF9zZXRzY2hlZHVsZXIgc2NoZWRfc2V0cGFyYW0gXAorIHNjaGVkX3JyX2dldF9pbnRlcnZhbCBcCisgc2lnYWN0aW9uIHNpZ2FsdHN0YWNrIHNpZ2ludGVycnVwdCBzaWdwZW5kaW5nIHNpZ3JlbHNlIFwKKyBzaWd0aW1lZHdhaXQgc2lnd2FpdCBzaWd3YWl0aW5mbyBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IHN5bWxpbmthdCBzeW5jIFwKICBzeXNjb25mIHRjZ2V0cGdycCB0Y3NldHBncnAgdGVtcG5hbSB0aW1lZ20gdGltZXMgdG1wZmlsZSB0bXBuYW0gdG1wbmFtX3IgXAotIHRydW5jYXRlIHVuYW1lIHVuc2V0ZW52IHV0aW1lcyB3YWl0cGlkIHdhaXQzIHdhaXQ0IFwKLSB3Y3Njb2xsIHdjc2Z0aW1lIHdjc3hmcm0gX2dldHB0eQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eQogZG8gOgogICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKQEAgLTk2ODcsNiArMTAzODIsMzEgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZXBvbGxfY3JlYXRlMS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPHN5cy9lcG9sbC5oPgoraW50CittYWluICgpCit7Cit2b2lkICp4PWVwb2xsX2NyZWF0ZTEKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0VQT0xMX0NSRUFURTEgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBrcXVldWUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGtxdWV1ZS4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA2NjEsNiArMTEzODEsMTI1IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19nZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19nZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19nZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX2dldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19nZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKKyRhc19lY2hvICIjZGVmaW5lIFRJTUVNT0RVTEVfTElCIHJ0IiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKK2ZpCitkb25lCisKKworZm9yIGFjX2Z1bmMgaW4gY2xvY2tfZ2V0cmVzCitkbyA6CisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImNsb2NrX2dldHJlcyIgImFjX2N2X2Z1bmNfY2xvY2tfZ2V0cmVzIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX2dldHJlcyIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0NMT0NLX0dFVFJFUyAxCitfQUNFT0YKKworZWxzZQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2xvY2tfZ2V0cmVzIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX2dldHJlcyBpbiAtbHJ0Li4uICIgPiY2OyB9CitpZiAke2FjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbHJ0ICAkTElCUyIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworLyogT3ZlcnJpZGUgYW55IEdDQyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisgICBVc2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBHQ0MKKyAgIGJ1aWx0aW4gYW5kIHRoZW4gaXRzIGFyZ3VtZW50IHByb3RvdHlwZSB3b3VsZCBzdGlsbCBhcHBseS4gICovCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIKKyNlbmRpZgorY2hhciBjbG9ja19nZXRyZXMgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19nZXRyZXMgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfZ2V0cmVzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3J0X2Nsb2NrX2dldHJlcyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9ydF9jbG9ja19nZXRyZXMiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19HRVRSRVMgMSIgPj5jb25mZGVmcy5oCisKKworZmkKKworCitmaQorZG9uZQorCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIG1ham9yIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBtYWpvci4uLiAiID4mNjsgfQogY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtMTA3MzgsNyArMTE1NzcsMTIgQEAKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorCitpZiB0ZXN0ICIke2VuYWJsZV9pcHY2K3NldH0iID0gc2V0OyB0aGVuCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPSJubyAtLSBjb25maWd1cmVkIHdpdGggLS0oZW58ZGlzKWFibGUtaXB2NiIKK2Vsc2UKICAgYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm89eWVzCitmaQogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0xMDg0Niw3ICsxMTY5MCw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID4mNjsgfQogCi1pZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gLW8gIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKK2lmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyB8fCB0ZXN0ICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCiB0aGVuCiAJaWYgdGVzdCAkaXB2NiA9IHllcwogCXRoZW4KQEAgLTExODE1LDYgKzEyNjU5LDQwIEBACiBmaQogCiAKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgKiBDaGVjayBmb3IgZ2NjIHg2NCBpbmxpbmUgYXNzZW1ibGVyICoKKyMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIuLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3ZxICVyY3gsICVyYXgiKTsKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfZ2NjX2FzbV9mb3JfeDY0PXllcworZWxzZQorICBoYXZlX2djY19hc21fZm9yX3g2ND1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2djY19hc21fZm9yX3g2NCIgPiY1CiskYXNfZWNobyAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA+JjY7IH0KK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g2NCIgPSB5ZXMKK3RoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9HQ0NfQVNNX0ZPUl9YNjQgMSIgPj5jb25mZGVmcy5oCisKK2ZpCisKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTEyMDY1LDcgKzEyOTQzLDcgQEAKIGZpCiBkb25lCiAKLWZvciBhY19mdW5jIGluIGh5cG90IGxnYW1tYSBsb2cxcCByb3VuZCB0Z2FtbWEKK2ZvciBhY19mdW5jIGluIGh5cG90IGxnYW1tYSBsb2cxcCBsb2cyIHJvdW5kIHRnYW1tYQogZG8gOgogICBhc19hY192YXI9YCRhc19lY2hvICJhY19jdl9mdW5jXyRhY19mdW5jIiB8ICRhc190cl9zaGAKIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgIiRhY19mdW5jIiAiJGFzX2FjX3ZhciIKQEAgLTEyNDcyLDY1ICsxMzM1MCwxOSBAQAogJGFzX2VjaG8gIiRhY19jdl93Y2hhcl90X3NpZ25lZCIgPiY2OyB9CiBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoYXQgdHlwZSB0byB1c2UgZm9yIHN0ciIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGF0IHR5cGUgdG8gdXNlIGZvciBzdHIuLi4gIiA+JjY7IH0KLQotIyBDaGVjayB3aGV0aGVyIC0td2l0aC13aWRlLXVuaWNvZGUgd2FzIGdpdmVuLgotaWYgdGVzdCAiJHt3aXRoX3dpZGVfdW5pY29kZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfd2lkZV91bmljb2RlOwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuIHVuaWNvZGVfc2l6ZT0iNCIKLWVsc2UgdW5pY29kZV9zaXplPSIyIgotZmkKLQotZWxzZQotCi1jYXNlICIkaGF2ZV91Y3M0X3RjbCIgaW4KLSAgeWVzKSB1bmljb2RlX3NpemU9IjQiOzsKLSAgKikgICB1bmljb2RlX3NpemU9IjIiIDs7Ci1lc2FjCi0KLWZpCi0KLQotCi1jYXNlICIkdW5pY29kZV9zaXplIiBpbgotICA0KQotICAgICAkYXNfZWNobyAiI2RlZmluZSBQeV9VTklDT0RFX1NJWkUgNCIgPj5jb25mZGVmcy5oCi0KLSAgICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9dSIKLSAgICAgOzsKLSAgKikgJGFzX2VjaG8gIiNkZWZpbmUgUHlfVU5JQ09ERV9TSVpFIDIiID4+Y29uZmRlZnMuaAotIDs7Ci1lc2FjCi0KLQotCiAjIHdjaGFyX3QgaXMgb25seSB1c2FibGUgaWYgaXQgbWFwcyB0byBhbiB1bnNpZ25lZCB0eXBlCi1pZiB0ZXN0ICIkdW5pY29kZV9zaXplIiA9ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIFwKK2lmIHRlc3QgIiRhY19jdl9zaXplb2Zfd2NoYXJfdCIgLWdlIDIgXAogICAgICAgICAgIC1hICIkYWNfY3Zfd2NoYXJfdF9zaWduZWQiID0gIm5vIgogdGhlbgotICBQWV9VTklDT0RFX1RZUEU9IndjaGFyX3QiCisgIEhBVkVfVVNBQkxFX1dDSEFSX1Q9InllcyIKIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9VU0FCTEVfV0NIQVJfVCAxIiA+PmNvbmZkZWZzLmgKIAotICAkYXNfZWNobyAiI2RlZmluZSBQWV9VTklDT0RFX1RZUEUgd2NoYXJfdCIgPj5jb25mZGVmcy5oCi0KLWVsaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9zaG9ydCIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBzaG9ydCIKLSAgICAgJGFzX2VjaG8gIiNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHVuc2lnbmVkIHNob3J0IiA+PmNvbmZkZWZzLmgKLQotZWxpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgbG9uZyIKLSAgICAgJGFzX2VjaG8gIiNkZWZpbmUgUFlfVU5JQ09ERV9UWVBFIHVuc2lnbmVkIGxvbmciID4+Y29uZmRlZnMuaAotCiBlbHNlCi0gICAgIFBZX1VOSUNPREVfVFlQRT0ibm8gdHlwZSBmb3VuZCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ibm8gdXNhYmxlIHdjaGFyX3QgZm91bmQiCiBmaQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRQWV9VTklDT0RFX1RZUEUiID4mNQotJGFzX2VjaG8gIiRQWV9VTklDT0RFX1RZUEUiID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRIQVZFX1VTQUJMRV9XQ0hBUl9UIiA+JjUKKyRhc19lY2hvICIkSEFWRV9VU0FCTEVfV0NIQVJfVCIgPiY2OyB9CiAKICMgY2hlY2sgZm9yIGVuZGlhbm5lc3MKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgYnl0ZSBvcmRlcmluZyBpcyBiaWdlbmRpYW4iID4mNQpAQCAtMTI5MTMsNyArMTM3NDUsNyBAQAogcHlfY3ZfbGliX3JlYWRsaW5lPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBsaW5rIHJlYWRsaW5lIGxpYnMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlicy4uLiAiID4mNjsgfQotZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KK2ZvciBweV9saWJ0ZXJtY2FwIGluICIiIHRpbmZvIG5jdXJzZXN3IG5jdXJzZXMgY3Vyc2VzIHRlcm1jYXA7IGRvCiAgIGlmIHRlc3QgLXogIiRweV9saWJ0ZXJtY2FwIjsgdGhlbgogICAgIFJFQURMSU5FX0xJQlM9Ii1scmVhZGxpbmUiCiAgIGVsc2UKQEAgLTEzNTQzLDYgKzE0Mzc1LDggQEAKIAogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIG12d2RlbGNoIGlzIGFuIGV4cHJlc3Npb24iID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBtdndkZWxjaCBpcyBhbiBleHByZXNzaW9uLi4uICIgPiY2OyB9CkBAIC0xMzY5NiwzNSArMTQ1MzAsNzYgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBjaGVja2luZyBmb3IgZGV2aWNlIGZpbGVzIiA+JjY7fQorCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm90IHNldCIgPiY1CiskYXNfZWNobyAibm90IHNldCIgPiY2OyB9CisgICAgYXNfZm5fZXJyb3IgJD8gInNldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorICBpZiB0ZXN0ICIke2FjX2N2X2ZpbGVfX2Rldl9wdGMrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdGMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRjLi4uICIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vdCBzZXQiID4mNQorJGFzX2VjaG8gIm5vdCBzZXQiID4mNjsgfQorICAgIGFzX2ZuX2Vycm9yICQ/ICJzZXQgYWNfY3ZfZmlsZV9fZGV2X3B0YyB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQorICBmaQorZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgL2Rldi9wdG14IiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAvZGV2L3B0bXguLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyAmJgorICBhc19mbl9lcnJvciAkPyAiY2Fubm90IGNoZWNrIGZvciBmaWxlIGV4aXN0ZW5jZSB3aGVuIGNyb3NzIGNvbXBpbGluZyIgIiRMSU5FTk8iIDUKK2lmIHRlc3QgLXIgIi9kZXYvcHRteCI7IHRoZW4KKyAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdG14PW5vCitmaQorZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZmlsZV9fZGV2X3B0bXgiID4mNQorJGFzX2VjaG8gIiRhY19jdl9maWxlX19kZXZfcHRteCIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4gOgogCi1pZiB0ZXN0IC1yIC9kZXYvcHRteAotdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQorZmkKKworaWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRteCIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUTVggMSIgPj5jb25mZGVmcy5oCiAKLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgL2Rldi9wdGMuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfZmlsZV9fZGV2X3B0Yys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzICYmCisgIGFzX2ZuX2Vycm9yICQ/ICJjYW5ub3QgY2hlY2sgZm9yIGZpbGUgZXhpc3RlbmNlIHdoZW4gY3Jvc3MgY29tcGlsaW5nIiAiJExJTkVOTyIgNQoraWYgdGVzdCAtciAiL2Rldi9wdGMiOyB0aGVuCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9eWVzCitlbHNlCisgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8KK2ZpCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9maWxlX19kZXZfcHRjIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdGMiID0geHllczsgdGhlbiA6CiAKLWlmIHRlc3QgLXIgL2Rldi9wdGMKLXRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KK2ZpCisKK2lmIHRlc3QgIngkYWNfY3ZfZmlsZV9fZGV2X3B0YyIgPSB4eWVzOyB0aGVuCiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfREVWX1BUQyAxIiA+PmNvbmZkZWZzLmgKIAotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTEzNzM1LDcgKzE0NjEwLDM2IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vCisgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCisgICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgorICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKKyAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CisgICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KKworaW50CittYWluICgpCit7CisKKyAgICAgIGNoYXIgKmJ1ZmZlcjsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKKyAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7CisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCisgICBmaQogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCkBAIC0xMzkyMyw0OSArMTQ4MjcsNiBAQAogCiBmaQogCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X2NvbXB1dGVkX2dvdG9zKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBhY19jdl9jb21wdXRlZF9nb3Rvcz1ubwotZWxzZQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLXsKLSAgICBzdGF0aWMgdm9pZCAqdGFyZ2V0c1sxXSA9IHsgJiZMQUJFTDEgfTsKLSAgICBnb3RvIExBQkVMMjsKLUxBQkVMMToKLSAgICByZXR1cm4gMDsKLUxBQkVMMjoKLSAgICBnb3RvICp0YXJnZXRzWzBdOwotICAgIHJldHVybiAxOwotfQotCi1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X3J1biAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9jb21wdXRlZF9nb3Rvcz15ZXMKLWVsc2UKLSAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9bm8KLWZpCi1ybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCi0gIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0Ci1maQotCi1maQotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID4mNjsgfQotaWYgdGVzdCAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA9IHllcwotdGhlbgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0NPTVBVVEVEX0dPVE9TIDEiID4+Y29uZmRlZnMuaAotCi1maQotCiAjIENoZWNrIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1jb21wdXRlZC1nb3RvcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zLi4uICIgPiY2OyB9CkBAIC0xMzk5Niw2ICsxNDg1Nyw1MiBAQAogZmkKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgJENDIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X2NvbXB1dGVkX2dvdG9zKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBpZiB0ZXN0ICIke3dpdGhfY29tcHV0ZWRfZ290b3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPSIkd2l0aF9jb21wdXRlZF9nb3RvcyAtLSBjb25maWd1cmVkIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zIgorIGVsc2UKKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCisgZmkKK2Vsc2UKKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgc3RhdGljIHZvaWQgKnRhcmdldHNbMV0gPSB7ICYmTEFCRUwxIH07CisgICAgZ290byBMQUJFTDI7CitMQUJFTDE6CisgICAgcmV0dXJuIDA7CitMQUJFTDI6CisgICAgZ290byAqdGFyZ2V0c1swXTsKKyAgICByZXR1cm4gMTsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfY29tcHV0ZWRfZ290b3M9eWVzCitlbHNlCisgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9jb21wdXRlZF9nb3RvcyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiA+JjY7IH0KK2Nhc2UgIiRhY19jdl9jb21wdXRlZF9nb3RvcyIgaW4geWVzKikKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DT01QVVRFRF9HT1RPUyAxIiA+PmNvbmZkZWZzLmgKKworZXNhYworCiBjYXNlICRhY19zeXNfc3lzdGVtIGluCiBBSVgqKQogCkBAIC0xNDAwNCwxOCArMTQ5MTEsNiBAQAogZXNhYwogCiAKLWNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KLSAgT1NGKikgYXNfZm5fZXJyb3IgJD8gIk9TRiogc3lzdGVtcyBhcmUgZGVwcmVjYXRlZCB1bmxlc3Mgc29tZWJvZHkgdm9sdW50ZWVycy4gQ2hlY2sgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTg2MDYiICIkTElORU5PIiA1IDs7Ci1lc2FjCi0KLWFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgInBpcGUyIiAiYWNfY3ZfZnVuY19waXBlMiIKLWlmIHRlc3QgIngkYWNfY3ZfZnVuY19waXBlMiIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9QSVBFMiAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotCiAKIAogZm9yIGggaW4gYChjZCAkc3JjZGlyO2VjaG8gUHl0aG9uL3RocmVhZF8qLmgpYApAQCAtMTQwMzUsNiArMTQ5MzAsMTM2IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogZG9uZSIgPiY1CiAkYXNfZWNobyAiZG9uZSIgPiY2OyB9CiAKKyMgQXZhaWxhYmlsaXR5IG9mIC1PMjoKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC1PMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgLU8yLi4uICIgPiY2OyB9CitzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCitDRkxBR1M9Ii1PMiIKK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CisKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfTzI9eWVzCitlbHNlCisgIGhhdmVfTzI9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9PMiIgPiY1CiskYXNfZWNobyAiJGhhdmVfTzIiID4mNjsgfQorQ0ZMQUdTPSIkc2F2ZWRfY2ZsYWdzIgorCisjIF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycyBmb3IgbWVtbW92ZSBhbmQgYmNvcHkgYXJlIGluY29ycmVjdDoKKyMgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2xpYmMtYWxwaGEvMjAxMC0xMi9tc2cwMDAwOS5odG1sCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBnbGliYyBfRk9SVElGWV9TT1VSQ0UvbWVtbW92ZSBidWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGdsaWJjIF9GT1JUSUZZX1NPVVJDRS9tZW1tb3ZlIGJ1Zy4uLiAiID4mNjsgfQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIgLURfRk9SVElGWV9TT1VSQ0U9MiIKK2lmIHRlc3QgIiRoYXZlX08yIiA9IG5vOyB0aGVuCisgICAgQ0ZMQUdTPSIiCitmaQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICBoYXZlX2dsaWJjX21lbW1vdmVfYnVnPXVuZGVmaW5lZAorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgordm9pZCBmb28odm9pZCAqcCwgdm9pZCAqcSkgeyBtZW1tb3ZlKHAsIHEsIDE5KTsgfQoraW50IG1haW4oKSB7CisgIGNoYXIgYVszMl0gPSAiMTIzNDU2Nzg5MDAwMDAwMDAwIjsKKyAgZm9vKCZhWzldLCBhKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgZm9vKGEsICZhWzldKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CisKK19BQ0VPRgoraWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6CisgIGhhdmVfZ2xpYmNfbWVtbW92ZV9idWc9bm8KK2Vsc2UKKyAgaGF2ZV9nbGliY19tZW1tb3ZlX2J1Zz15ZXMKK2ZpCitybSAtZiBjb3JlICouY29yZSBjb3JlLmNvbmZ0ZXN0LiogZ21vbi5vdXQgYmIub3V0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCBcCisgIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuYmVhbSBjb25mdGVzdC4kYWNfZXh0CitmaQorCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID4mNQorJGFzX2VjaG8gIiRoYXZlX2dsaWJjX21lbW1vdmVfYnVnIiA+JjY7IH0KK2lmIHRlc3QgIiRoYXZlX2dsaWJjX21lbW1vdmVfYnVnIiA9IHllczsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0dMSUJDX01FTU1PVkVfQlVHIDEiID4+Y29uZmRlZnMuaAorCitmaQorCitpZiB0ZXN0ICIkaGF2ZV9nY2NfYXNtX2Zvcl94ODciID0geWVzOyB0aGVuCisgICAgIyBTb21lIHZlcnNpb25zIG9mIGdjYyBtaXNjb21waWxlIGlubGluZSBhc206CisgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQ2NDkxCisgICAgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLzIwMTAtMTEvbXNnMDAzNjYuaHRtbAorICAgIGNhc2UgJENDIGluCisgICAgICAgICpnY2MqKQorICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1ZyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZ2NjIGlwYS1wdXJlLWNvbnN0IGJ1Zy4uLiAiID4mNjsgfQorICAgICAgICAgICAgc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorICAgICAgICAgICAgQ0ZMQUdTPSItTzIiCisgICAgICAgICAgICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXVuZGVmaW5lZAorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKyAgICAgICAgICAgIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgaW50CisgICAgICAgICAgICBmb28oaW50ICpwKSB7CisgICAgICAgICAgICAgIGludCByOworICAgICAgICAgICAgICBhc20gKCAibW92bCBcJDYsICglMSlcblx0IgorICAgICAgICAgICAgICAgICAgICAieG9ybCAlMCwgJTBcblx0IgorICAgICAgICAgICAgICAgICAgICA6ICI9ciIgKHIpIDogInIiIChwKSA6ICJtZW1vcnkiCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1haW4oKSB7CisgICAgICAgICAgICAgIGludCBwID0gODsKKyAgICAgICAgICAgICAgaWYgKChmb28oJnApID8gOiBwKSAhPSA2KQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9ydW4gIiRMSU5FTk8iOyB0aGVuIDoKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9bm8KK2Vsc2UKKyAgaGF2ZV9pcGFfcHVyZV9jb25zdF9idWc9eWVzCitmaQorcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAorICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAorZmkKKworICAgICAgICAgICAgQ0ZMQUdTPSIkc2F2ZWRfY2ZsYWdzIgorICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPiY1CiskYXNfZWNobyAiJGhhdmVfaXBhX3B1cmVfY29uc3RfYnVnIiA+JjY7IH0KKyAgICAgICAgICAgIGlmIHRlc3QgIiRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPSB5ZXM7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYworZmkKKwogIyBnZW5lcmF0ZSBvdXRwdXQgZmlsZXMKIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZS5wcmUgTW9kdWxlcy9TZXR1cC5jb25maWcgTWlzYy9weXRob24ucGMiCiAKQEAgLTE0NTU5LDcgKzE1NTg0LDcgQEAKICMgcmVwb3J0IGFjdHVhbCBpbnB1dCB2YWx1ZXMgb2YgQ09ORklHX0ZJTEVTIGV0Yy4gaW5zdGVhZCBvZiB0aGVpcgogIyB2YWx1ZXMgYWZ0ZXIgb3B0aW9ucyBoYW5kbGluZy4KIGFjX2xvZz0iCi1UaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy4yLCB3aGljaCB3YXMKK1RoaXMgZmlsZSB3YXMgZXh0ZW5kZWQgYnkgcHl0aG9uICRhc19tZSAzLjMsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY4LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgQ09ORklHX0ZJTEVTICAgID0gJENPTkZJR19GSUxFUwpAQCAtMTQ2MjEsNyArMTU2NDYsNyBAQAogY2F0ID4+JENPTkZJR19TVEFUVVMgPDxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCiBhY19jc19jb25maWc9ImAkYXNfZWNobyAiJGFjX2NvbmZpZ3VyZV9hcmdzIiB8IHNlZCAncy9eIC8vOyBzL1tcXCIiXGBcJF0vXFxcXCYvZydgIgogYWNfY3NfdmVyc2lvbj0iXFwKLXB5dGhvbiBjb25maWcuc3RhdHVzIDMuMgorcHl0aG9uIGNvbmZpZy5zdGF0dXMgMy4zCiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjgsCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggM2UwNTMwNC4uMjM2OTUxYyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMywyMiArMyw3NSBAQAogZG5sICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKICMgU2V0IFZFUlNJT04gc28gd2Ugb25seSBuZWVkIHRvIGVkaXQgaW4gb25lIHBsYWNlIChpLmUuLCBoZXJlKQotbTRfZGVmaW5lKFBZVEhPTl9WRVJTSU9OLCAzLjIpCittNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuMykKIAotZG5sIFNvbWUgbTQgbWFnaWMgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgaXMgZ2VuZXJhdGVkCi1kbmwgYnkgdGhlIGNvcnJlY3QgYXV0b2NvbmYgdmVyc2lvbi4KLW00X2RlZmluZShbdmVyc2lvbl9yZXF1aXJlZF0sCi1bbTRfaWYobTRfdmVyc2lvbl9jb21wYXJlKG00X2RlZm4oW200X1BBQ0tBR0VfVkVSU0lPTl0pLCBbJDFdKSwgMCwKLSAgICAgICBbXSwKLSAgICAgICBbbTRfZmF0YWwoW0F1dG9jb25mIHZlcnNpb24gJDEgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbl0sIDYzKV0pCi1dKQogQUNfUFJFUkVRKDIuNjUpCiAKLUFDX1JFVklTSU9OKCRSZXZpc2lvbiQpCiBBQ19JTklUKHB5dGhvbiwgUFlUSE9OX1ZFUlNJT04sIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvKQorCitBQ19TVUJTVChCQVNFQ1BQRkxBR1MpCitpZiB0ZXN0ICIkYWJzX3NyY2RpciIgIT0gIiRhYnNfYnVpbGRkaXIiOyB0aGVuCisgICAgIyBJZiB3ZSdyZSBidWlsZGluZyBvdXQtb2YtdHJlZSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZworICAgICMgcmVzb3VyY2VzIGdldCBwaWNrZWQgdXAgYmVmb3JlIHRoZWlyICRzcmNkaXIgY291bnRlcnBhcnRzLgorICAgICMgICBPYmplY3RzLyAtPiB0eXBlc2xvdHMuaW5jCisgICAgIyAgIEluY2x1ZGUvIC0+IFB5dGhvbi1hc3QuaCwgZ3JhbWluaXQuaAorICAgICMgICBQeXRob24vICAtPiBpbXBvcnRsaWIuaAorICAgICMgKEEgc2lkZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0IHRoZXNlIHJlc291cmNlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUKKyAgICAjICByZWdlbmVyYXRlZCB3aGVuIGJ1aWxkaW5nIG91dC1vZi10cmVlLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90CisgICAgIyAgdGhlICRzcmNkaXIgY291bnRlcnBhcnQgaXMgdXAtdG8tZGF0ZS4gIFRoaXMgaXMgYW4gYWNjZXB0YWJsZSB0cmFkZQorICAgICMgIG9mZi4pCisgICAgQkFTRUNQUEZMQUdTPSItSU9iamVjdHMgLUlJbmNsdWRlIC1JUHl0aG9uIgorZWxzZQorICAgIEJBU0VDUFBGTEFHUz0iIgorZmkKKworQUNfU1VCU1QoSEdWRVJTSU9OKQorQUNfU1VCU1QoSEdUQUcpCitBQ19TVUJTVChIR0JSQU5DSCkKKworaWYgdGVzdCAtZSAkc3JjZGlyLy5oZy9kaXJzdGF0ZQordGhlbgorQUNfQ0hFQ0tfUFJPRyhIQVNfSEcsIGhnLCBmb3VuZCwgbm90LWZvdW5kKQorZWxzZQorSEFTX0hHPW5vLXJlcG9zaXRvcnkKK2ZpCitpZiB0ZXN0ICRIQVNfSEcgPSBmb3VuZAordGhlbgorICAgIEhHVkVSU0lPTj0iaGcgaWQgLWkgXCQoc3JjZGlyKSIKKyAgICBIR1RBRz0iaGcgaWQgLXQgXCQoc3JjZGlyKSIKKyAgICBIR0JSQU5DSD0iaGcgaWQgLWIgXCQoc3JjZGlyKSIKK2Vsc2UKKyAgICBIR1ZFUlNJT049IiIKKyAgICBIR1RBRz0iIgorICAgIEhHQlJBTkNIPSIiCitmaQorCiBBQ19DT05GSUdfU1JDRElSKFtJbmNsdWRlL29iamVjdC5oXSkKIEFDX0NPTkZJR19IRUFERVIocHljb25maWcuaCkKIAorQUNfQ0FOT05JQ0FMX0hPU1QKKworaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkXSkKKyAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KKyAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbworCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQorCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvQDw6QDoyQDo+QCA+PSAoMywzKSknOyB0aGVuCisJICAgICAgICBicmVhaworCSAgICBmaQorICAgICAgICAgICAgaW50ZXJwPQorCWRvbmUKKyAgICAgICAgaWYgdGVzdCB4JGludGVycCA9IHg7IHRoZW4KKwkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCisJZmkKKyAgICAgICAgQUNfTVNHX1JFU1VMVCgkaW50ZXJwKQorCVBZVEhPTl9GT1JfQlVJTEQ9Il9QWVRIT05fUFJPSkVDVF9CQVNFPSRzcmNkaXIiJyBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliL3BsYXQtJChNQUNIREVQKSAnJGludGVycAorICAgIGZpCitlbHNlCisgICAgUFlUSE9OX0ZPUl9CVUlMRD0nLi8kKEJVSUxEUFlUSE9OKSAtRScKK2ZpCitBQ19TVUJTVChQWVRIT05fRk9SX0JVSUxEKQorCiBkbmwgRW5zdXJlIHRoYXQgaWYgcHJlZml4IGlzIHNwZWNpZmllZCwgaXQgZG9lcyBub3QgZW5kIGluIGEgc2xhc2guIElmCiBkbmwgaXQgZG9lcywgd2UgZ2V0IHBhdGggbmFtZXMgY29udGFpbmluZyAnLy8nIHdoaWNoIGlzIGJvdGggdWdseSBhbmQKIGRubCBjYW4gY2F1c2UgdHJvdWJsZS4KQEAgLTg4LDE0ICsxNDEsMjAgQEAKIAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgLS1lbmFibGUtdW5pdmVyc2Fsc2RrXSkKIEFDX0FSR19FTkFCTEUodW5pdmVyc2Fsc2RrLAotCUFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS11bml2ZXJzYWxzZGtAPDpAPVNES0RJUkA6PkBdLCBbQnVpbGQgYWdhaW5zdCBNYWMgT1MgWCAxMC40dSBTREsgKHBwYy9pMzg2KV0pLAorCUFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS11bml2ZXJzYWxzZGtAPDpAPVNES0RJUkA6PkBdLCBbQnVpbGQgZmF0IGJpbmFyeSBhZ2FpbnN0IE1hYyBPUyBYIFNES10pLAogWwogCWNhc2UgJGVuYWJsZXZhbCBpbgogCXllcykKLQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKLQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCSMgTG9jYXRlIHRoZSBiZXN0IHVzYWJsZSBTREssIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCQkjIGluZm9ybWF0aW9uCisJCWVuYWJsZXZhbD0iYC91c3IvYmluL3hjb2RlYnVpbGQgLXZlcnNpb24gLXNkayBtYWNvc3ggUGF0aCAyPi9kZXYvbnVsbGAiCisJCWlmIHRlc3QgLXogIiR7ZW5hYmxldmFsfSIKIAkJdGhlbgotCQkJZW5hYmxldmFsPS8KKwkJCWVuYWJsZXZhbD0vRGV2ZWxvcGVyL1NES3MvTWFjT1NYMTAuNHUuc2RrCisJCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJCXRoZW4KKwkJCQllbmFibGV2YWw9LworCQkJZmkKIAkJZmkKIAkJOzsKIAllc2FjCkBAIC0xMjcsNyArMTg2LDIwIEBACiAKIEFDX1NVQlNUKEFSQ0hfUlVOXzMyQklUKQogCisjIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2UgcHJlZmVyIHRvIHNlbGVjdCAnMzItYml0JyBpZiBhdmFpbGFibGUsCisjIG90aGVyd2lzZSB1c2UgJ2ludGVsJwogVU5JVkVSU0FMX0FSQ0hTPSIzMi1iaXQiCitpZiB0ZXN0ICJgdW5hbWUgLXNgIiA9ICJEYXJ3aW4iCit0aGVuCisJaWYgdGVzdCAtbiAiJHtVTklWRVJTQUxTREt9IgorCXRoZW4KKwkJaWYgdGVzdCAteiAiYC91c3IvYmluL2ZpbGUgIiR7VU5JVkVSU0FMU0RLfS91c3IvbGliL2xpYlN5c3RlbS5keWxpYiIgfCBncmVwIHBwY2AiCisJCXRoZW4KKwkJCVVOSVZFUlNBTF9BUkNIUz0iaW50ZWwiCisJCWZpCisJZmkKK2ZpCisKIEFDX1NVQlNUKExJUE9fMzJCSVRfRkxBR1MpCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC11bml2ZXJzYWwtYXJjaHMpCiBBQ19BUkdfV0lUSCh1bml2ZXJzYWwtYXJjaHMsCkBAIC0xMzcsNyArMjA5LDcgQEAKIAlVTklWRVJTQUxfQVJDSFM9IiR3aXRodmFsIgogXSwKIFsKLSAJQUNfTVNHX1JFU1VMVCgzMi1iaXQpCisgCUFDX01TR19SRVNVTFQoJHtVTklWRVJTQUxfQVJDSFN9KQogXSkKIAogCkBAIC0yNzYsNiArMzQ4LDI1IEBACiBBQ19NU0dfQ0hFQ0tJTkcoTUFDSERFUCkKIGlmIHRlc3QgLXogIiRNQUNIREVQIgogdGhlbgorICAgICMgYXZvaWQgdXNpbmcgdW5hbWUgZm9yIGNyb3NzIGJ1aWxkcworICAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisgICAgICAgIyBhY19zeXNfc3lzdGVtIGFuZCBhY19zeXNfcmVsZWFzZSBhcmUgb25seSB1c2VkIGZvciBzZXR0aW5nCisgICAgICAgIyBgZGVmaW5lX3hvcGVuX3NvdXJjZScgaW4gdGhlIGNhc2Ugc3RhdGVtZW50IGJlbG93LiBGb3IgdGhlCisgICAgICAgIyBjdXJyZW50IHN1cHBvcnRlZCBjcm9zcyBidWlsZHMsIHRoaXMgbWFjcm8gaXMgbm90IGFkanVzdGVkLgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWFjX3N5c19zeXN0ZW09TGludXgKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJYWNfc3lzX3N5c3RlbT1DeWd3aW4KKwkJOzsKKwkqKQorCQkjIGZvciBub3csIGxpbWl0IGNyb3NzIGJ1aWxkcyB0byBrbm93biBjb25maWd1cmF0aW9ucworCQlNQUNIREVQPSJ1bmtub3duIgorCQlBQ19NU0dfRVJST1IoW2Nyb3NzIGJ1aWxkIG5vdCBzdXBwb3J0ZWQgZm9yICRob3N0XSkKKwllc2FjCisJYWNfc3lzX3JlbGVhc2U9CisgICAgZWxzZQogCWFjX3N5c19zeXN0ZW09YHVuYW1lIC1zYAogCWlmIHRlc3QgIiRhY19zeXNfc3lzdGVtIiA9ICJBSVgiIFwKIAktbyAiJGFjX3N5c19zeXN0ZW0iID0gIlVuaXhXYXJlIiAtbyAiJGFjX3N5c19zeXN0ZW0iID0gIk9wZW5VTklYIjsgdGhlbgpAQCAtMjgzLDE5ICszNzQsNDMgQEAKIAllbHNlCiAJCWFjX3N5c19yZWxlYXNlPWB1bmFtZSAtcmAKIAlmaQotCWFjX21kX3N5c3RlbT1gZWNobyAkYWNfc3lzX3N5c3RlbSB8Ci0JCQkgICB0ciAtZCAnWy8gXScgfCB0ciAnW1tBLVpdXScgJ1tbYS16XV0nYAotCWFjX21kX3JlbGVhc2U9YGVjaG8gJGFjX3N5c19yZWxlYXNlIHwKLQkJCSAgIHRyIC1kICdbLyBdJyB8IHNlZCAncy9eW1tBLVpdXVwuLy8nIHwgc2VkICdzL1wuLiovLydgCi0JTUFDSERFUD0iJGFjX21kX3N5c3RlbSRhY19tZF9yZWxlYXNlIgorICAgIGZpCisgICAgYWNfbWRfc3lzdGVtPWBlY2hvICRhY19zeXNfc3lzdGVtIHwKKwkJCXRyIC1kICdbLyBdJyB8IHRyICdbW0EtWl1dJyAnW1thLXpdXSdgCisgICAgYWNfbWRfcmVsZWFzZT1gZWNobyAkYWNfc3lzX3JlbGVhc2UgfAorCQkJdHIgLWQgJ1svIF0nIHwgc2VkICdzL15bW0EtWl1dXC4vLycgfCBzZWQgJ3MvXC4uKi8vJ2AKKyAgICBNQUNIREVQPSIkYWNfbWRfc3lzdGVtJGFjX21kX3JlbGVhc2UiCiAKLQljYXNlICRNQUNIREVQIGluCi0JbGludXgqKSBNQUNIREVQPSJsaW51eDIiOzsKKyAgICBjYXNlICRNQUNIREVQIGluCisJbGludXgqKSBNQUNIREVQPSJsaW51eCI7OwogCWN5Z3dpbiopIE1BQ0hERVA9ImN5Z3dpbiI7OwogCWRhcndpbiopIE1BQ0hERVA9ImRhcndpbiI7OwotICAgICAgICBpcml4NjQ2KSBNQUNIREVQPSJpcml4NiI7OworCWlyaXg2NDYpIE1BQ0hERVA9ImlyaXg2Ijs7CiAJJycpCU1BQ0hERVA9InVua25vd24iOzsKKyAgICBlc2FjCitmaQorCitBQ19TVUJTVChfUFlUSE9OX0hPU1RfUExBVEZPUk0pCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgorCWNhc2UgIiRob3N0IiBpbgorCSotKi1saW51eCopCisJCWNhc2UgIiRob3N0X2NwdSIgaW4KKwkJYXJtKikKKwkJCV9ob3N0X2NwdT1hcm0KKwkJCTs7CisJCSopCisJCQlfaG9zdF9jcHU9JGhvc3RfY3B1CisJCWVzYWMKKwkJOzsKKwkqLSotY3lnd2luKikKKwkJX2hvc3RfY3B1PQorCQk7OworCSopCisJCSMgZm9yIG5vdywgbGltaXQgY3Jvc3MgYnVpbGRzIHRvIGtub3duIGNvbmZpZ3VyYXRpb25zCisJCU1BQ0hERVA9InVua25vd24iCisJCUFDX01TR19FUlJPUihbY3Jvc3MgYnVpbGQgbm90IHN1cHBvcnRlZCBmb3IgJGhvc3RdKQogCWVzYWMKKwlfUFlUSE9OX0hPU1RfUExBVEZPUk09IiRNQUNIREVQJHtfaG9zdF9jcHU6Ky0kX2hvc3RfY3B1fSIKIGZpCiAJCiAjIFNvbWUgc3lzdGVtcyBjYW5ub3Qgc3RhbmQgX1hPUEVOX1NPVVJDRSBiZWluZyBkZWZpbmVkIGF0IGFsbDsgdGhleQpAQCAtMzgzLDcgKzQ5OCw4IEBACiAKIGlmIHRlc3QgJGRlZmluZV94b3Blbl9zb3VyY2UgPSB5ZXMKIHRoZW4KLSAgQUNfREVGSU5FKF9YT1BFTl9TT1VSQ0UsIDYwMCwgCisgICMgWC9PcGVuIDcsIGluY29ycG9yYXRpbmcgUE9TSVguMS0yMDA4CisgIEFDX0RFRklORShfWE9QRU5fU09VUkNFLCA3MDAsCiAgICAgICAgICAgICBEZWZpbmUgdG8gdGhlIGxldmVsIG9mIFgvT3BlbiB0aGF0IHlvdXIgc3lzdGVtIHN1cHBvcnRzKQogCiAgICMgT24gVHJ1NjQgVW5peCA0LjBGLCBkZWZpbmluZyBfWE9QRU5fU09VUkNFIGFsc28gcmVxdWlyZXMKQEAgLTM5Myw4ICs1MDksNyBAQAogICBBQ19ERUZJTkUoX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCwgMSwKICAgIAkgICAgRGVmaW5lIHRvIGFjdGl2YXRlIFVuaXg5NS1hbmQtZWFybGllciBmZWF0dXJlcykKIAotICBBQ19ERUZJTkUoX1BPU0lYX0NfU09VUkNFLCAyMDAxMTJMLCBEZWZpbmUgdG8gYWN0aXZhdGUgZmVhdHVyZXMgZnJvbSBJRUVFIFN0ZHMgMTAwMy4xLTIwMDEpCi0gIAorICBBQ19ERUZJTkUoX1BPU0lYX0NfU09VUkNFLCAyMDA4MDlMLCBEZWZpbmUgdG8gYWN0aXZhdGUgZmVhdHVyZXMgZnJvbSBJRUVFIFN0ZHMgMTAwMy4xLTIwMDgpCiBmaQogCiAjCkBAIC00MjMsMTAgKzUzOCw2IEBACiBDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPQogRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nIycKIAotQUNfTVNHX0NIRUNLSU5HKG1hY2hpbmUgdHlwZSBhcyByZXBvcnRlZCBieSB1bmFtZSAtbSkKLWFjX3N5c19tYWNoaW5lPWB1bmFtZSAtbWAKLUFDX01TR19SRVNVTFQoJGFjX3N5c19tYWNoaW5lKQotCiAjIGNoZWNrcyBmb3IgYWx0ZXJuYXRpdmUgcHJvZ3JhbXMKIAogIyBjb21waWxlciBmbGFncyBhcmUgZ2VuZXJhdGVkIGluIHR3byBzZXRzLCBCQVNFQ0ZMQUdTIGFuZCBPUFQuICBPUFQgaXMganVzdApAQCAtNDY5LDYgKzU4MCw2MyBAQAogaWYgdGVzdCAteiAiJENGTEFHUyI7IHRoZW4KICAgICAgICAgQ0ZMQUdTPQogZmkKKworaWYgdGVzdCAiJGFjX3N5c19zeXN0ZW0iID0gIkRhcndpbiIKK3RoZW4KKwkjIENvbXBpbGVyIHNlbGVjdGlvbiBvbiBNYWNPU1ggaXMgbW9yZSBjb21wbGljYXRlZCB0aGFuCisJIyBBQ19QUk9HX0NDIGNhbiBoYW5kbGUsIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCSMgaW5mb3JtYXRpb24KKwlpZiB0ZXN0IC16ICIke0NDfSIKKwl0aGVuCisJCWZvdW5kX2djYz0KKwkJZm91bmRfY2xhbmc9CisJCWFzX3NhdmVfSUZTPSRJRlM7IElGUz06CisJCWZvciBhc19kaXIgaW4gJFBBVEgKKwkJZG8KKwkJCUlGUz0kYXNfc2F2ZV9JRlMKKwkJCWlmIHRlc3QgLXggJGFzX2Rpci9nY2M7IHRoZW4KKwkJCQlpZiB0ZXN0IC16ICIke2ZvdW5kX2djY30iOyB0aGVuCisJCQkJCWZvdW5kX2djYz0kYXNfZGlyL2djYworCQkJCWZpCisJCQlmaQorCQkJaWYgdGVzdCAteCAkYXNfZGlyL2NsYW5nOyB0aGVuCisJCQkJaWYgdGVzdCAteiAiJHtmb3VuZF9jbGFuZ30iOyB0aGVuCisJCQkJCWZvdW5kX2NsYW5nPSRhc19kaXIvY2xhbmcKKwkJCQlmaQorCQkJZmkKKwkJZG9uZQorCQlJRlM9JGFzX3NhdmVfSUZTCisKKwkJaWYgdGVzdCAtbiAiJGZvdW5kX2djYyIgLWEgLW4gIiRmb3VuZF9jbGFuZyIKKwkJdGhlbgorCQkJaWYgdGVzdCAtbiAiYCIkZm91bmRfZ2NjIiAtLXZlcnNpb24gfCBncmVwIGxsdm0tZ2NjYCIKKwkJCXRoZW4KKwkJCQlBQ19NU0dfTk9USUNFKFtEZXRlY3RlZCBsbHZtLWdjYywgZmFsbGluZyBiYWNrIHRvIGNsYW5nXSkKKwkJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJCUNYWD0iJGZvdW5kX2NsYW5nKysiCisJCQlmaQorCisKKwkJZWxpZiB0ZXN0IC16ICIkZm91bmRfZ2NjIiAtYSAtbiAiJGZvdW5kX2NsYW5nIgorCQl0aGVuCisJCQlBQ19NU0dfTk9USUNFKFtObyBHQ0MgZm91bmQsIHVzZSBDTEFOR10pCisJCQlDQz0iJGZvdW5kX2NsYW5nIgorCQkJQ1hYPSIkZm91bmRfY2xhbmcrKyIKKworCQllbGlmIHRlc3QgLXogIiRmb3VuZF9nY2MiIC1hIC16ICIkZm91bmRfY2xhbmciCisJCXRoZW4KKwkJCWZvdW5kX2NsYW5nPWAvdXNyL2Jpbi94Y3J1biAtZmluZCBjbGFuZyAyPi9kZXYvbnVsbGAKKwkJCWlmIHRlc3QgLW4gIiR7Zm91bmRfY2xhbmd9IgorCQkJdGhlbgorCQkJCUFDX01TR19OT1RJQ0UoW1VzaW5nIGNsYW5nIGZyb20gWGNvZGUuYXBwXSkKKwkJCQlDQz0iJHtmb3VuZF9jbGFuZ30iCisJCQkJQ1hYPSJgL3Vzci9iaW4veGNydW4gLWZpbmQgY2xhbmcrK2AiCisKKwkJCSMgZWxzZTogdXNlIGRlZmF1bHQgYmVoYXZpb3VyCisJCQlmaQorCQlmaQorCWZpCitmaQogQUNfUFJPR19DQwogCiBBQ19TVUJTVChDWFgpCkBAIC01MDAsOCArNjY4LDkgQEAKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCiAgICAgICAgIGNhc2UgIiRDQyIgaW4KLSAgICAgICAgZ2NjKSAgICBBQ19QQVRIX1BST0coQ1hYLCBbZysrXSwgW2crK10sIFtub3Rmb3VuZF0pIDs7Ci0gICAgICAgIGNjKSAgICAgQUNfUEFUSF9QUk9HKENYWCwgW2MrK10sIFtjKytdLCBbbm90Zm91bmRdKSA7OworICAgICAgICBnY2MpICAgIEFDX1BBVEhfVE9PTChDWFgsIFtnKytdLCBbZysrXSwgW25vdGZvdW5kXSkgOzsKKyAgICAgICAgY2MpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CisgICAgICAgIGNsYW5nfCovY2xhbmcpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbY2xhbmcrK10sIFtjbGFuZysrXSwgW25vdGZvdW5kXSkgOzsKICAgICAgICAgZXNhYwogCWlmIHRlc3QgIiRDWFgiID0gIm5vdGZvdW5kIgogCXRoZW4KQEAgLTUxMCw3ICs2NzksNyBAQAogZmkKIGlmIHRlc3QgLXogIiRDWFgiCiB0aGVuCi0JQUNfQ0hFQ0tfUFJPR1MoQ1hYLCAkQ0NDIGMrKyBnKysgZ2NjIENDIGN4eCBjYysrIGNsLCBub3Rmb3VuZCkKKwlBQ19DSEVDS19UT09MUyhDWFgsICRDQ0MgYysrIGcrKyBnY2MgQ0MgY3h4IGNjKysgY2wsIG5vdGZvdW5kKQogCWlmIHRlc3QgIiRDWFgiID0gIm5vdGZvdW5kIgogCXRoZW4KIAkJQ1hYPSIiCkBAIC03MDQsMjIgKzg3MywyMyBAQAogCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0tZW5hYmxlLXByb2ZpbGluZykKIEFDX0FSR19FTkFCTEUocHJvZmlsaW5nLAotICAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcHJvZmlsaW5nXSwgW2VuYWJsZSBDLWxldmVsIGNvZGUgcHJvZmlsaW5nXSksCi1bYWNfc2F2ZV9jYz0iJENDIgotIENDPSIkQ0MgLXBnIgotIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbaW50IG1haW4oKSB7IHJldHVybiAwOyB9XV0pXSwKLSAgIFthY19lbmFibGVfcHJvZmlsaW5nPSJ5ZXMiXSwKLSAgIFthY19lbmFibGVfcHJvZmlsaW5nPSJubyJdLAotICAgW2FjX2VuYWJsZV9wcm9maWxpbmc9Im5vIl0pCi0gQ0M9IiRhY19zYXZlX2NjIl0pCi1BQ19NU0dfUkVTVUxUKCRhY19lbmFibGVfcHJvZmlsaW5nKQorICAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcHJvZmlsaW5nXSwgW2VuYWJsZSBDLWxldmVsIGNvZGUgcHJvZmlsaW5nXSkpCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBhY19zYXZlX2NjPSIkQ0MiCisgIENDPSIkKENDKSAtcGciCisgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW2ludCBtYWluKCkgeyByZXR1cm4gMDsgfV1dKV0sCisgICAgW10sCisgICAgW2VuYWJsZV9wcm9maWxpbmc9bm9dKQorICBDQz0iJGFjX3NhdmVfY2MiCitlbHNlCisgIGVuYWJsZV9wcm9maWxpbmc9bm8KK2ZpCitBQ19NU0dfUkVTVUxUKCRlbmFibGVfcHJvZmlsaW5nKQogCi1jYXNlICIkYWNfZW5hYmxlX3Byb2ZpbGluZyIgaW4KLSAgICAieWVzIikKLQlCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCi0JTERGTEFHUz0iLXBnICRMREZMQUdTIgotICAgIDs7Ci1lc2FjCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcm9maWxpbmciID0geHllczsgdGhlbgorICBCQVNFQ0ZMQUdTPSItcGcgJEJBU0VDRkxBR1MiCisgIExERkxBR1M9Ii1wZyAkTERGTEFHUyIKK2ZpCiAKIEFDX01TR19DSEVDS0lORyhMRExJQlJBUlkpCiAKQEAgLTc4MywxMSArOTUzLDYgQEAKIAkgIEJMRExJQlJBUlk9Jy1XbCwrYiwkKExJQkRJUikgLUwuIC1scHl0aG9uJChMRFZFUlNJT04pJwogCSAgUlVOU0hBUkVEPVNITElCX1BBVEg9YHB3ZGA6JHtTSExJQl9QQVRIfQogCSAgOzsKLSAgICBPU0YqKQotCSAgTERMSUJSQVJZPSdsaWJweXRob24kKExEVkVSU0lPTikuc28nCi0JICBCTERMSUJSQVJZPSctcnBhdGggJChMSUJESVIpIC1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKLQkgIFJVTlNIQVJFRD1MRF9MSUJSQVJZX1BBVEg9YHB3ZGA6JHtMRF9MSUJSQVJZX1BBVEh9Ci0JICA7OwogICAgIERhcndpbiopCiAgICAgCUxETElCUkFSWT0nbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliJwogCUJMRExJQlJBUlk9Jy1MLiAtbHB5dGhvbiQoTERWRVJTSU9OKScKQEAgLTgwOCwxMSArOTczLDE1IEBACiAgIGVzYWMKIGZpCiAKK2lmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCisJUlVOU0hBUkVEPQorZmkKKwogQUNfTVNHX1JFU1VMVCgkTERMSUJSQVJZKQogCiBBQ19QUk9HX1JBTkxJQgogQUNfU1VCU1QoQVIpCi1BQ19DSEVDS19QUk9HUyhBUiwgYXIgYWFsLCBhcikKK0FDX0NIRUNLX1RPT0xTKEFSLCBhciBhYWwsIGFyKQogCiAjIHR3ZWFrIEFSRkxBR1Mgb25seSBpZiB0aGUgdXNlciBkaWRuJ3Qgc2V0IGl0IG9uIHRoZSBjb21tYW5kIGxpbmUKIEFDX1NVQlNUKEFSRkxBR1MpCkBAIC04MjEsNTEgKzk5MCwxNSBAQAogICAgICAgICBBUkZMQUdTPSJyYyIKIGZpCiAKLUFDX1NVQlNUKFNWTlZFUlNJT04pCi1BQ19DSEVDS19QUk9HKFNWTlZFUlNJT04sIHN2bnZlcnNpb24sIGZvdW5kLCBub3QtZm91bmQpCi1pZiB0ZXN0ICRTVk5WRVJTSU9OID0gZm91bmQKLXRoZW4KLQlTVk5WRVJTSU9OPSJzdm52ZXJzaW9uIFwkKHNyY2RpcikiCi1lbHNlCi0JU1ZOVkVSU0lPTj0iZWNobyBVbnZlcnNpb25lZCBkaXJlY3RvcnkiCitBQ19DSEVDS19UT09MUyhbUkVBREVMRl0sIFtyZWFkZWxmXSwgWzpdKQoraWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICIkUkVBREVMRiIgaW4KKwlyZWFkZWxmfDopCisJQUNfTVNHX0VSUk9SKFtyZWFkZWxmIGZvciB0aGUgaG9zdCBpcyByZXF1aXJlZCBmb3IgY3Jvc3MgYnVpbGRzXSkKKwk7OworICAgIGVzYWMKIGZpCi0KLUFDX1NVQlNUKEJBU0VDUFBGTEFHUykKLWlmIHRlc3QgIiRhYnNfc3JjZGlyIiAhPSAiJGFic19idWlsZGRpciI7IHRoZW4KLSAgICAjIElmIHdlJ3JlIGJ1aWxkaW5nIG91dC1vZi10cmVlLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nCi0gICAgIyByZXNvdXJjZXMgZ2V0IHBpY2tlZCB1cCBiZWZvcmUgdGhlaXIgJHNyY2RpciBjb3VudGVycGFydHMuCi0gICAgIyAgIE9iamVjdHMvIC0+IHR5cGVzbG90cy5pbmMKLSAgICAjICAgSW5jbHVkZS8gLT4gUHl0aG9uLWFzdC5oLCBncmFtaW5pdC5oCi0gICAgIyAgIFB5dGhvbi8gIC0+IGltcG9ydGxpYi5oCi0gICAgIyAoQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgcmVzb3VyY2VzIHdpbGwgYXV0b21hdGljYWxseSBiZQotICAgICMgIHJlZ2VuZXJhdGVkIHdoZW4gYnVpbGRpbmcgb3V0LW9mLXRyZWUsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QKLSAgICAjICB0aGUgJHNyY2RpciBjb3VudGVycGFydCBpcyB1cC10by1kYXRlLiAgVGhpcyBpcyBhbiBhY2NlcHRhYmxlIHRyYWRlCi0gICAgIyAgb2ZmLikKLSAgICBCQVNFQ1BQRkxBR1M9Ii1JT2JqZWN0cyAtSUluY2x1ZGUgLUlQeXRob24iCi1lbHNlCi0gICAgQkFTRUNQUEZMQUdTPSIiCi1maQotCi1BQ19TVUJTVChIR1ZFUlNJT04pCi1BQ19TVUJTVChIR1RBRykKLUFDX1NVQlNUKEhHQlJBTkNIKQotCi1pZiB0ZXN0IC1lICRzcmNkaXIvLmhnL2RpcnN0YXRlCi10aGVuCi1BQ19DSEVDS19QUk9HKEhBU19IRywgaGcsIGZvdW5kLCBub3QtZm91bmQpCi1lbHNlCi1IQVNfSEc9bm8tcmVwb3NpdG9yeQotZmkKLWlmIHRlc3QgJEhBU19IRyA9IGZvdW5kCi10aGVuCi0gICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgotICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgotICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgotZWxzZQotICAgIEhHVkVSU0lPTj0iIgotICAgIEhHVEFHPSIiCi0gICAgSEdCUkFOQ0g9IiIKLWZpCitBQ19TVUJTVChSRUFERUxGKQogCiBBQ19TVUJTVChBU0RMR0VOKQogQUNfQ0hFQ0tfUFJPR1MoUFlUSE9OLCBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uLCBub3QtZm91bmQpCkBAIC0xMDIwLDEwICsxMTUzLDMyIEBACiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIKICAgICBmaQogCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHJlc3VsdCB3YXJuaW5nKQorICAgICBhY19zYXZlX2NjPSIkQ0MiCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcmVzdWx0IC1XZXJyb3IiCisgICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcsCisgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICBbCisJICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisJIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz15ZXMKKwkgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nPW5vCisJIF0pKQorICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKKyAgICAgQ0M9IiRhY19zYXZlX2NjIgorICAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nKQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKKyAgICB0aGVuCisgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgZmkKKwogICAgICMgaWYgdXNpbmcgZ2NjIG9uIGFscGhhLCB1c2UgLW1pZWVlIHRvIGdldCAobmVhcikgZnVsbCBJRUVFIDc1NAogICAgICMgc3VwcG9ydC4gIFdpdGhvdXQgdGhpcywgdHJlYXRtZW50IG9mIHN1Ym5vcm1hbHMgZG9lc24ndCBmb2xsb3cKICAgICAjIHRoZSBzdGFuZGFyZC4KLSAgICBjYXNlICRhY19zeXNfbWFjaGluZSBpbgorICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICAgIGFscGhhKikKICAgICAgICAgICAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCiAgICAgICAgICAgICAgICAgOzsKQEAgLTEwOTcsNyArMTI1Miw5IEBACiAJICAgICMgQ2FsY3VsYXRlIHRoZSByaWdodCBkZXBsb3ltZW50IHRhcmdldCBmb3IgdGhpcyBidWlsZC4KIAkgICAgIwogCSAgICBjdXJfdGFyZ2V0PWBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IHNlZCAncy9cKDEwXC5bWzAtOV1dKlwpLiovXDEvJ2AKLQkgICAgaWYgdGVzdCAke2N1cl90YXJnZXR9ICc+JyAxMC4yOyB0aGVuCisJICAgIGlmIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPicgMTAuMiAmJiBcCisJICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0fSAnPCcgMTAuNgorCSAgICB0aGVuCiAJCSAgICBjdXJfdGFyZ2V0PTEwLjMKIAkJICAgIGlmIHRlc3QgJHtlbmFibGVfdW5pdmVyc2Fsc2RrfTsgdGhlbgogCQkJICAgIGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiYWxsIjsgdGhlbgpAQCAtMTEzNiw5ICsxMjkzLDYgQEAKIAkgICAgRVhQT1JUX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0nJwogCiAJICAgIDs7Ci0JT1NGKikKLQkgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLW1pZWVlIgotCSAgICA7OwogICAgIGVzYWMKICAgICA7OwogCkBAIC0xMTQ3LDkgKzEzMDEsNiBAQAogICAgIE9wZW5VTklYKnxVbml4V2FyZSopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLUsgcGVudGl1bSxob3N0LGlubGluZSxsb29wX3Vucm9sbCxhbGxvY2EgIgogCTs7Ci0gICAgT1NGKikKLQlCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtaWVlZSAtc3RkIgotICAgIAk7OwogICAgIFNDT19TViopCiAJQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLWJlbGYgLUtpNDg2IC1EU0NPNSIKIAk7OwpAQCAtMTM1MCwyMSArMTUwMSw0MiBAQAogCiAjIGNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzCiBBQ19IRUFERVJfU1REQworYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKIEFDX0NIRUNLX0hFQURFUlMoYXNtL3R5cGVzLmggY29uaW8uaCBjdXJzZXMuaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCi1pZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIG5jdXJzZXMuaCBwb2xsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIHRocmVhZC5oIFwKK2llZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggbmN1cnNlcy5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdGRpbnQuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAotc3lzL2F1ZGlvaW8uaCBzeXMvYnNkdHR5Lmggc3lzL2Vwb2xsLmggc3lzL2V2ZW50Lmggc3lzL2ZpbGUuaCBzeXMvbG9hZGF2Zy5oIFwKLXN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAotc3lzL3BhcmFtLmggc3lzL3BvbGwuaCBzeXMvc2VsZWN0Lmggc3lzL3NvY2tldC5oIHN5cy9zdGF0dmZzLmggc3lzL3N0YXQuaCBcCi1zeXMvc3lzY2FsbC5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKLXN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBsaWJ1dGlsLmggXAotc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAorcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCitzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKK3N5cy9rZXJuX2NvbnRyb2wuaCBzeXMvbG9hZGF2Zy5oIHN5cy9sb2NrLmggc3lzL21rZGV2Lmggc3lzL21vZGVtLmggXAorc3lzL3BhcmFtLmggc3lzL3NlbGVjdC5oIHN5cy9zZW5kZmlsZS5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIFwKK3N5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKK3N5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAorbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKIGJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggc3Bhd24uaCB1dGlsLmgpCitDUFBGTEFHUz0kYWNfc2F2ZV9jcHBmbGFncwogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKKyMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCitBQ19DSEVDS19IRUFERVJTKFtuZXQvaWYuaF0sIFtdLCBbXSwKK1sjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBTVERDX0hFQURFUlMKKyMgaW5jbHVkZSA8c3RkbGliLmg+CisjIGluY2x1ZGUgPHN0ZGRlZi5oPgorI2Vsc2UKKyMgaWZkZWYgSEFWRV9TVERMSUJfSAorIyAgaW5jbHVkZSA8c3RkbGliLmg+CisjIGVuZGlmCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKK10pCisKKwogIyBPbiBTb2xhcmlzLCB0ZXJtLmggcmVxdWlyZXMgY3Vyc2VzLmgKIEFDX0NIRUNLX0hFQURFUlModGVybS5oLCwsWwogI2lmZGVmIEhBVkVfQ1VSU0VTX0gKQEAgLTEzODIsNiArMTU1NCwxMyBAQAogI2VuZGlmCiBdKQogCisjIE9uIExpbnV4LCBjYW4uaCBhbmQgY2FuL3Jhdy5oIHJlcXVpcmUgc3lzL3NvY2tldC5oCitBQ19DSEVDS19IRUFERVJTKGxpbnV4L2Nhbi5oIGxpbnV4L2Nhbi9yYXcuaCwsLFsKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorXSkKKwogIyBjaGVja3MgZm9yIHR5cGVkZWZzCiB3YXNfaXRfZGVmaW5lZD1ubwogQUNfTVNHX0NIRUNLSU5HKGZvciBjbG9ja190IGluIHRpbWUuaCkKQEAgLTEzOTAsNyArMTU2OSw2IEBACiBdKQogQUNfTVNHX1JFU1VMVCgkd2FzX2l0X2RlZmluZWQpCiAKLSMgQ2hlY2sgd2hldGhlciB1c2luZyBtYWtlZGV2IHJlcXVpcmVzIGRlZmluaW5nIF9PU0ZfU09VUkNFCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTE0MDMsMTkgKzE1ODEsNiBAQAogXV0sIFtbCiAgIG1ha2VkZXYoMCwgMCkgXV0pCiBdLFthY19jdl9oYXNfbWFrZWRldj15ZXNdLFthY19jdl9oYXNfbWFrZWRldj1ub10pCi1pZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gIm5vIjsgdGhlbgotICAgICMgd2UgZGlkbid0IGxpbmssIHRyeSBpZiBfT1NGX1NPVVJDRSB3aWxsIGFsbG93IHVzIHRvIGxpbmsKLSAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCi0jZGVmaW5lIF9PU0ZfU09VUkNFIDEKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgICBdXSwKLSAgICBbWyBtYWtlZGV2KDAsIDApIF1dKV0sCi0gICAgW2FjX2N2X2hhc19tYWtlZGV2PXllc10sCi0gICAgW2FjX2N2X2hhc19tYWtlZGV2PW5vXSkKLSAgICBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KLSAgICAgICAgQUNfREVGSU5FKF9PU0ZfU09VUkNFLCAxLCBbRGVmaW5lIF9PU0ZfU09VUkNFIHRvIGdldCB0aGUgbWFrZWRldiBtYWNyby5dKQotICAgIGZpCi1maQogQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGFzX21ha2VkZXYpCiBpZiB0ZXN0ICIkYWNfY3ZfaGFzX21ha2VkZXYiID0gInllcyI7IHRoZW4KICAgICBBQ19ERUZJTkUoSEFWRV9NQUtFREVWLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIG1ha2VkZXYgbWFjcm8uXSkKQEAgLTE0NzUsNiArMTY0MCw4IEBACiBBQ19UWVBFX0lOVDY0X1QKIEFDX0NIRUNLX1RZUEUoc3NpemVfdCwKICAgQUNfREVGSU5FKEhBVkVfU1NJWkVfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHNzaXplX3RdKSwsKQorQUNfQ0hFQ0tfVFlQRShfX3VpbnQxMjhfdCwKKyAgQUNfREVGSU5FKEhBVkVfR0NDX1VJTlQxMjhfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90XSksLCkKIAogIyBTaXplcyBvZiB2YXJpb3VzIGNvbW1vbiBiYXNpYyB0eXBlcwogIyBBTlNJIEMgcmVxdWlyZXMgc2l6ZW9mKGNoYXIpID09IDEsIHNvIG5vIG5lZWQgdG8gY2hlY2sgaXQKQEAgLTE3MzUsNyArMTkwMiw2IEBACiAJCWVsc2UKIAkJCUxEU0hBUkVEPSdsZCAtYicKIAkJZmkgOzsKLQlPU0YqKSBMRFNIQVJFRD0ibGQgLXNoYXJlZCAtZXhwZWN0X3VucmVzb2x2ZWQgXCIqXCIiOzsKIAlEYXJ3aW4vMS4zKikKIAkJTERTSEFSRUQ9JyQoQ0MpIC1idW5kbGUnCiAJCUxEQ1hYU0hBUkVEPSckKENYWCkgLWJ1bmRsZScKQEAgLTE5NjUsNiArMjEzMSw3IEBACiAKIAogIyBjaGVja3MgZm9yIGxpYnJhcmllcworQUNfQ0hFQ0tfTElCKHNlbmRmaWxlLCBzZW5kZmlsZSkKIEFDX0NIRUNLX0xJQihkbCwgZGxvcGVuKQkjIER5bmFtaWMgbGlua2luZyBmb3IgU3VuT1MvU29sYXJpcyBhbmQgU1lTVgogQUNfQ0hFQ0tfTElCKGRsZCwgc2hsX2xvYWQpCSMgRHluYW1pYyBsaW5raW5nIGZvciBIUC1VWAogCkBAIC0yMDM4LDYgKzIyMDUsMTUgQEAKIAogQUNfTVNHX1JFU1VMVCgkd2l0aF9zeXN0ZW1fZmZpKQogCisjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJtcGRlYyBsaWJyYXJ5CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1zeXN0ZW0tbGlibXBkZWMpCitBQ19BUkdfV0lUSChzeXN0ZW1fbGlibXBkZWMsCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1saWJtcGRlY10sIFtidWlsZCBfZGVjaW1hbCBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGxpYm1wZGVjIGxpYnJhcnldKSwKKyAgICAgICAgICAgIFtdLAorICAgICAgICAgICAgW3dpdGhfc3lzdGVtX2xpYm1wZGVjPSJubyJdKQorCitBQ19NU0dfUkVTVUxUKCR3aXRoX3N5c3RlbV9saWJtcGRlYykKKwogIyBDaGVjayBmb3Igc3VwcG9ydCBmb3IgbG9hZGFibGUgc3FsaXRlIGV4dGVuc2lvbnMKIEFDX01TR19DSEVDS0lORyhmb3IgLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMpCiBBQ19BUkdfRU5BQkxFKGxvYWRhYmxlLXNxbGl0ZS1leHRlbnNpb25zLApAQCAtMjA4OSwyMSArMjI2NSwxMCBAQAogQUNfU1VCU1QoVVNFX1RIUkVBRF9NT0RVTEUpCiBVU0VfVEhSRUFEX01PRFVMRT0iIgogCi1BQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1kZWMtdGhyZWFkcykKIEFDX1NVQlNUKExETEFTVCkKLUFDX0FSR19XSVRIKGRlYy10aHJlYWRzLAotICAgICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kZWMtdGhyZWFkc10sIFt1c2UgREVDIEFscGhhL09TRjEgdGhyZWFkLXNhZmUgbGlicmFyaWVzXSksCi1bCi1BQ19NU0dfUkVTVUxUKCR3aXRodmFsKQotTERMQVNUPS10aHJlYWRzCi1pZiB0ZXN0ICIke3dpdGhfdGhyZWFkK3NldH0iICE9IHNldDsgdGhlbgotICAgd2l0aF90aHJlYWQ9IiR3aXRodmFsIjsKLWZpXSwKLVtBQ19NU0dfUkVTVUxUKG5vKV0pCiAKICMgVGVtcGxhdGVzIGZvciB0aGluZ3MgQUNfREVGSU5FZCBtb3JlIHRoYW4gb25jZS4KICMgRm9yIGEgc2luZ2xlIEFDX0RFRklORSwgbm8gdGVtcGxhdGUgaXMgbmVlZGVkLgotQUhfVEVNUExBVEUoQ19USFJFQURTLFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIE1hY2ggY3RocmVhZHMgcGFja2FnZV0pCiBBSF9URU1QTEFURShfUkVFTlRSQU5ULAogICBbRGVmaW5lIHRvIGZvcmNlIHVzZSBvZiB0aHJlYWQtc2FmZSBlcnJubywgaF9lcnJubywgYW5kIG90aGVyIGZ1bmN0aW9uc10pCiBBSF9URU1QTEFURShXSVRIX1RIUkVBRCwKQEAgLTIxODUsMTcgKzIzNTAsNiBAQAogICAgIEFDX01TR19SRVNVTFQoJHVuaXN0ZF9kZWZpbmVzX3B0aHJlYWRzKQogCiAgICAgQUNfREVGSU5FKF9SRUVOVFJBTlQpCi0gICAgQUNfQ0hFQ0tfSEVBREVSKGN0aHJlYWRzLmgsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCi0gICAgQUNfREVGSU5FKENfVEhSRUFEUykKLSAgICBBQ19ERUZJTkUoSFVSRF9DX1RIUkVBRFMsIDEsCi0gICAgW0RlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgZGlyZWN0bHkgdW5kZXIgL2luY2x1ZGVdKQotICAgIExJQlM9IiRMSUJTIC1sdGhyZWFkcyIKLSAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKLSAgICBBQ19DSEVDS19IRUFERVIobWFjaC9jdGhyZWFkcy5oLCBbQUNfREVGSU5FKFdJVEhfVEhSRUFEKQotICAgIEFDX0RFRklORShDX1RIUkVBRFMpCi0gICAgQUNfREVGSU5FKE1BQ0hfQ19USFJFQURTLCAxLAotICAgIFtEZWZpbmUgaWYgeW91IGFyZSB1c2luZyBNYWNoIGN0aHJlYWRzIHVuZGVyIG1hY2ggL10pCi0gICAgVEhSRUFET0JKPSJQeXRob24vdGhyZWFkLm8iXSxbCiAgICAgIyBKdXN0IGxvb2tpbmcgZm9yIHB0aHJlYWRfY3JlYXRlIGluIGxpYnB0aHJlYWQgaXMgbm90IGVub3VnaDoKICAgICAjIG9uIEhQL1VYLCBwdGhyZWFkLmggcmVuYW1lcyBwdGhyZWFkX2NyZWF0ZSB0byBhIGRpZmZlcmVudCBzeW1ib2wgbmFtZS4KICAgICAjIFNvIHdlIHJlYWxseSBoYXZlIHRvIGluY2x1ZGUgcHRocmVhZC5oLCBhbmQgdGhlbiBsaW5rLgpAQCAtMjIzMSw3ICsyMzg1LDcgQEAKICAgICBMSUJTPSIkTElCUyAtbGNtYSIKICAgICBUSFJFQURPQko9IlB5dGhvbi90aHJlYWQubyJdLFsKICAgICBVU0VfVEhSRUFEX01PRFVMRT0iIyJdKQotICAgIF0pXSldKV0pXSldKV0pCisgICAgXSldKV0pXSldKQogCiAgICAgQUNfQ0hFQ0tfTElCKG1wYywgdXNjb25maWcsIFtBQ19ERUZJTkUoV0lUSF9USFJFQUQpCiAgICAgTElCUz0iJExJQlMgLWxtcGMiCkBAIC0yMjQ0LDE1ICsyMzk4LDYgQEAKICAgICAgIFRIUkVBRE9CSj0iUHl0aG9uL3RocmVhZC5vIgogICAgICAgVVNFX1RIUkVBRF9NT0RVTEU9IiJdKQogICAgIGZpCi0KLSAgICBpZiB0ZXN0ICIkVVNFX1RIUkVBRF9NT0RVTEUiICE9ICIjIgotICAgIHRoZW4KLSAgICAgICAgIyBJZiB0aGUgYWJvdmUgY2hlY2tzIGRpZG4ndCBkaXNhYmxlIHRocmVhZHMsIChhdCBsZWFzdCkgT1NGMQotICAgICAgICAjIG5lZWRzIHRoaXMgJy10aHJlYWRzJyBhcmd1bWVudCBkdXJpbmcgbGlua2luZy4KLSAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotICAgICAgICBPU0YxKSBMRExBU1Q9LXRocmVhZHM7OwotICAgICAgICBlc2FjCi0gICAgZmkKIGZpCiAKIGlmIHRlc3QgIiRwb3NpeF90aHJlYWRzIiA9ICJ5ZXMiOyB0aGVuCkBAIC0yNTI2LDEyICsyNjcxLDEyIEBACiBpZiB0ZXN0IC16ICIkd2l0aF9weW1hbGxvYyIKIHRoZW4KICAgICB3aXRoX3B5bWFsbG9jPSJ5ZXMiCi0gICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9bSIKIGZpCiBpZiB0ZXN0ICIkd2l0aF9weW1hbGxvYyIgIT0gIm5vIgogdGhlbgogICAgIEFDX0RFRklORShXSVRIX1BZTUFMTE9DLCAxLCAKICAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIFB5dGhvbi1zcGVjaWZpYyBtYWxsb2NzXSkKKyAgICBBQklGTEFHUz0iJHtBQklGTEFHU31tIgogZmkKIEFDX01TR19SRVNVTFQoJHdpdGhfcHltYWxsb2MpCiAKQEAgLTI2MDAsMjMgKzI3NDUsMzUgQEAKIGVsc2UKIAlNQUNIREVQX09CSlM9IiRNQUNIREVQX09CSlMgJGV4dHJhX21hY2hkZXBfb2JqcyIKIGZpCi1BQ19NU0dfUkVTVUxUKE1BQ0hERVBfT0JKUykKK2lmIHRlc3QgLXogIiRNQUNIREVQX09CSlMiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoW25vbmVdKQorZWxzZQorICBBQ19NU0dfUkVTVUxUKFskTUFDSERFUF9PQkpTXSkKK2ZpCiAKICMgY2hlY2tzIGZvciBsaWJyYXJ5IGZ1bmN0aW9ucwogQUNfQ0hFQ0tfRlVOQ1MoYWxhcm0gYWNjZXB0NCBzZXRpdGltZXIgZ2V0aXRpbWVyIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGNob3duIFwKLSBjbG9jayBjb25mc3RyIGN0ZXJtaWQgZXhlY3YgZmNobW9kIGZjaG93biBmb3JrIGZwYXRoY29uZiBmdGltZSBmdHJ1bmNhdGUgXAotIGdhaV9zdHJlcnJvciBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCisgY2xvY2sgY29uZnN0ciBjdGVybWlkIGV4ZWN2IGZhY2Nlc3NhdCBmY2htb2QgZmNobW9kYXQgZmNob3duIGZjaG93bmF0IFwKKyBmZXhlY3ZlIGZkb3BlbmRpciBmb3JrIGZwYXRoY29uZiBmc3RhdGF0IGZ0aW1lIGZ0cnVuY2F0ZSBmdXRpbWVzYXQgXAorIGZ1dGltZW5zIGZ1dGltZXMgZ2FpX3N0cmVycm9yIFwKKyBnZXRncm91cGxpc3QgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbHN0YXQgbWJydG93YyBta2ZpZm8gbWtub2QgbWt0aW1lIFwKLSBtcmVtYXAgbmljZSBwYXRoY29uZiBwYXVzZSBwbG9jayBwb2xsIHB0aHJlYWRfaW5pdCBcCi0gcHV0ZW52IHJlYWRsaW5rIHJlYWxwYXRoIFwKLSBzZWxlY3Qgc2VtX29wZW4gc2VtX3RpbWVkd2FpdCBzZW1fZ2V0dmFsdWUgc2VtX3VubGluayBzZXRlZ2lkIHNldGV1aWQgXAotIHNldGdpZCBcCi0gc2V0bG9jYWxlIHNldHJlZ2lkIHNldHJldWlkIHNldHJlc3VpZCBzZXRyZXNnaWQgc2V0c2lkIHNldHBnaWQgc2V0cGdycCBzZXR1aWQgc2V0dmJ1ZiBcCi0gc2lnYWN0aW9uIHNpZ2ludGVycnVwdCBzaWdyZWxzZSBzbnByaW50ZiBzdHJmdGltZSBzdHJsY3B5IFwKKyBpZl9uYW1laW5kZXggXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsb2NrZiBsaW5rYXQgbHN0YXQgbHV0aW1lcyBtbWFwIFwKKyBtZW1yY2hyIG1icnRvd2MgbWtkaXJhdCBta2ZpZm8gXAorIG1rZmlmb2F0IG1rbm9kIG1rbm9kYXQgbWt0aW1lIG1yZW1hcCBuaWNlIG9wZW5hdCBwYXRoY29uZiBwYXVzZSBwaXBlMiBwbG9jayBwb2xsIFwKKyBwb3NpeF9mYWxsb2NhdGUgcG9zaXhfZmFkdmlzZSBwcmVhZCBcCisgcHRocmVhZF9pbml0IHB0aHJlYWRfa2lsbCBwdXRlbnYgcHdyaXRlIHJlYWRsaW5rIHJlYWRsaW5rYXQgcmVhZHYgcmVhbHBhdGggcmVuYW1lYXQgXAorIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNlbmRmaWxlIHNldGVnaWQgc2V0ZXVpZCBcCisgc2V0Z2lkIHNldGhvc3RuYW1lIFwKKyBzZXRsb2NhbGUgc2V0cmVnaWQgc2V0cmV1aWQgc2V0cmVzdWlkIHNldHJlc2dpZCBzZXRzaWQgc2V0cGdpZCBzZXRwZ3JwIHNldHByaW9yaXR5IHNldHVpZCBzZXR2YnVmIFwKKyBzY2hlZF9nZXRfcHJpb3JpdHlfbWF4IHNjaGVkX3NldGFmZmluaXR5IHNjaGVkX3NldHNjaGVkdWxlciBzY2hlZF9zZXRwYXJhbSBcCisgc2NoZWRfcnJfZ2V0X2ludGVydmFsIFwKKyBzaWdhY3Rpb24gc2lnYWx0c3RhY2sgc2lnaW50ZXJydXB0IHNpZ3BlbmRpbmcgc2lncmVsc2UgXAorIHNpZ3RpbWVkd2FpdCBzaWd3YWl0IHNpZ3dhaXRpbmZvIHNucHJpbnRmIHN0cmZ0aW1lIHN0cmxjcHkgc3ltbGlua2F0IHN5bmMgXAogIHN5c2NvbmYgdGNnZXRwZ3JwIHRjc2V0cGdycCB0ZW1wbmFtIHRpbWVnbSB0aW1lcyB0bXBmaWxlIHRtcG5hbSB0bXBuYW1fciBcCi0gdHJ1bmNhdGUgdW5hbWUgdW5zZXRlbnYgdXRpbWVzIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAotIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSBfZ2V0cHR5KQorIHRydW5jYXRlIHVuYW1lIHVubGlua2F0IHVuc2V0ZW52IHV0aW1lbnNhdCB1dGltZXMgd2FpdGlkIHdhaXRwaWQgd2FpdDMgd2FpdDQgXAorIHdjc2NvbGwgd2NzZnRpbWUgd2NzeGZybSB3cml0ZXYgX2dldHB0eSkKIAogQUNfQ0hFQ0tfREVDTChkaXJmZCwKICAgICBBQ19ERUZJTkUoSEFWRV9ESVJGRCwgMSwKQEAgLTI2NjgsNiArMjgyNSwxMiBAQAogICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKICAgW0FDX01TR19SRVNVTFQobm8pCiBdKQorQUNfTVNHX0NIRUNLSU5HKGZvciBlcG9sbF9jcmVhdGUxKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxzeXMvZXBvbGwuaD5dXSwgW1t2b2lkICp4PWVwb2xsX2NyZWF0ZTFdXSldLAorICBbQUNfREVGSU5FKEhBVkVfRVBPTExfQ1JFQVRFMSwgMSwgRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGxfY3JlYXRlMScgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pCitdKQogQUNfTVNHX0NIRUNLSU5HKGZvciBrcXVldWUpCiBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0yODk4LDYgKzMwNjEsMjAgQEAKICAgICBdKQogKQogCitBQ19DSEVDS19GVU5DUyhjbG9ja19nZXR0aW1lLCBbXSwgWworICAgIEFDX0NIRUNLX0xJQihydCwgY2xvY2tfZ2V0dGltZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19HRVRUSU1FLCAxKQorICAgICAgICBBQ19ERUZJTkUoVElNRU1PRFVMRV9MSUIsIFtydF0sCisgICAgICAgICAgICAgICAgICBbTGlicmFyeSBuZWVkZWQgYnkgdGltZW1vZHVsZS5jOiBsaWJydCBtYXkgYmUgbmVlZGVkIGZvciBjbG9ja19nZXR0aW1lKCldKQorICAgIF0pCitdKQorCitBQ19DSEVDS19GVU5DUyhjbG9ja19nZXRyZXMsIFtdLCBbCisgICAgQUNfQ0hFQ0tfTElCKHJ0LCBjbG9ja19nZXRyZXMsIFsKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfQ0xPQ0tfR0VUUkVTLCAxKQorICAgIF0pCitdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ham9yLCBtaW5vciwgYW5kIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTMwMjIsMTIgKzMxOTksMTcgQEAKIF1dXSldLAogW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPW5vXSwKIFthY19jdl9idWdneV9nZXRhZGRyaW5mbz15ZXNdLAotW2FjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllc10pKQorWworaWYgdGVzdCAiJHtlbmFibGVfaXB2NitzZXR9IiA9IHNldDsgdGhlbgorICBhY19jdl9idWdneV9nZXRhZGRyaW5mbz0ibm8gLS0gY29uZmlndXJlZCB3aXRoIC0tKGVufGRpcylhYmxlLWlwdjYiCitlbHNlCisgIGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvPXllcworZmldKSkKIGZpCiAKIEFDX01TR19SRVNVTFQoJGFjX2N2X2J1Z2d5X2dldGFkZHJpbmZvKQogCi1pZiB0ZXN0ICRoYXZlX2dldGFkZHJpbmZvID0gbm8gLW8gIiRhY19jdl9idWdneV9nZXRhZGRyaW5mbyIgPSB5ZXMKK2lmIHRlc3QgJGhhdmVfZ2V0YWRkcmluZm8gPSBubyB8fCB0ZXN0ICIkYWNfY3ZfYnVnZ3lfZ2V0YWRkcmluZm8iID0geWVzCiB0aGVuCiAJaWYgdGVzdCAkaXB2NiA9IHllcwogCXRoZW4KQEAgLTMzMTksNiArMzUwMSwyMSBAQAogZmldLAogW0FDX01TR19SRVNVTFQoZGVmYXVsdCBMSUJDPSIkTElCQyIpXSkKIAorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyAqIENoZWNrIGZvciBnY2MgeDY0IGlubGluZSBhc3NlbWJsZXIgKgorIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHg2NCBnY2MgaW5saW5lIGFzc2VtYmxlcikKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1sKKyAgX19hc21fXyBfX3ZvbGF0aWxlX18gKCJtb3ZxICVyY3gsICVyYXgiKTsKK11dKV0sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PXllc10sW2hhdmVfZ2NjX2FzbV9mb3JfeDY0PW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfZ2NjX2FzbV9mb3JfeDY0KQoraWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDY0IiA9IHllcwordGhlbgorICAgIEFDX0RFRklORShIQVZFX0dDQ19BU01fRk9SX1g2NCwgMSwKKyAgICBbRGVmaW5lIGlmIHdlIGNhbiB1c2UgeDY0IGdjYyBpbmxpbmUgYXNzZW1ibGVyXSkKK2ZpCisKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKICMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTM0NjcsNyArMzY2NCw3IEBACiBMSUJTPSIkTElCUyAkTElCTSIKIAogQUNfQ0hFQ0tfRlVOQ1MoW2Fjb3NoIGFzaW5oIGF0YW5oIGNvcHlzaWduIGVyZiBlcmZjIGV4cG0xIGZpbml0ZSBnYW1tYV0pCi1BQ19DSEVDS19GVU5DUyhbaHlwb3QgbGdhbW1hIGxvZzFwIHJvdW5kIHRnYW1tYV0pCitBQ19DSEVDS19GVU5DUyhbaHlwb3QgbGdhbW1hIGxvZzFwIGxvZzIgcm91bmQgdGdhbW1hXSkKIEFDX0NIRUNLX0RFQ0xTKFtpc2luZiwgaXNuYW4sIGlzZmluaXRlXSwgW10sIFtdLCBbWyNpbmNsdWRlIDxtYXRoLmg+XV0pCiAKICMgT24gRnJlZUJTRCA2LjIsIGl0IGFwcGVhcnMgdGhhdCB0YW5oKC0wLikgcmV0dXJucyAwLiBpbnN0ZWFkIG9mCkBAIC0zNjY1LDU3ICszODYyLDE5IEBACiAgIEFDX01TR19SRVNVTFQoJGFjX2N2X3djaGFyX3Rfc2lnbmVkKQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKHdoYXQgdHlwZSB0byB1c2UgZm9yIHN0cikKLUFDX0FSR19XSVRIKHdpZGUtdW5pY29kZSwgCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXdpZGUtdW5pY29kZV0sIFtVc2UgNC1ieXRlIFVuaWNvZGUgY2hhcmFjdGVycyAoZGVmYXVsdCBpcyAyIGJ5dGVzKV0pLAotWwotaWYgdGVzdCAiJHdpdGh2YWwiICE9IG5vCi10aGVuIHVuaWNvZGVfc2l6ZT0iNCIKLWVsc2UgdW5pY29kZV9zaXplPSIyIgotZmkKLV0sCi1bCi1jYXNlICIkaGF2ZV91Y3M0X3RjbCIgaW4KLSAgeWVzKSB1bmljb2RlX3NpemU9IjQiOzsKLSAgKikgICB1bmljb2RlX3NpemU9IjIiIDs7Ci1lc2FjCi1dKQotCi1BSF9URU1QTEFURShQeV9VTklDT0RFX1NJWkUsCi0gIFtEZWZpbmUgYXMgdGhlIHNpemUgb2YgdGhlIHVuaWNvZGUgdHlwZS5dKQotY2FzZSAiJHVuaWNvZGVfc2l6ZSIgaW4KLSAgNCkKLSAgICAgQUNfREVGSU5FKFB5X1VOSUNPREVfU0laRSwgNCkKLSAgICAgQUJJRkxBR1M9IiR7QUJJRkxBR1N9dSIKLSAgICAgOzsKLSAgKikgQUNfREVGSU5FKFB5X1VOSUNPREVfU0laRSwgMikgOzsKLWVzYWMKLQotQUhfVEVNUExBVEUoUFlfVU5JQ09ERV9UWVBFLAotICBbRGVmaW5lIGFzIHRoZSBpbnRlZ3JhbCB0eXBlIHVzZWQgZm9yIFVuaWNvZGUgcmVwcmVzZW50YXRpb24uXSkKLQogIyB3Y2hhcl90IGlzIG9ubHkgdXNhYmxlIGlmIGl0IG1hcHMgdG8gYW4gdW5zaWduZWQgdHlwZQotaWYgdGVzdCAiJHVuaWNvZGVfc2l6ZSIgPSAiJGFjX2N2X3NpemVvZl93Y2hhcl90IiBcCitpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX3djaGFyX3QiIC1nZSAyIFwKICAgICAgICAgICAtYSAiJGFjX2N2X3djaGFyX3Rfc2lnbmVkIiA9ICJubyIKIHRoZW4KLSAgUFlfVU5JQ09ERV9UWVBFPSJ3Y2hhcl90IgorICBIQVZFX1VTQUJMRV9XQ0hBUl9UPSJ5ZXMiCiAgIEFDX0RFRklORShIQVZFX1VTQUJMRV9XQ0hBUl9ULCAxLAogICBbRGVmaW5lIGlmIHlvdSBoYXZlIGEgdXNlYWJsZSB3Y2hhcl90IHR5cGUgZGVmaW5lZCBpbiB3Y2hhci5oOyB1c2VhYmxlCiAgICBtZWFucyB3Y2hhcl90IG11c3QgYmUgYW4gdW5zaWduZWQgdHlwZSB3aXRoIGF0IGxlYXN0IDE2IGJpdHMuIChzZWUKICAgIEluY2x1ZGUvdW5pY29kZW9iamVjdC5oKS5dKQotICBBQ19ERUZJTkUoUFlfVU5JQ09ERV9UWVBFLHdjaGFyX3QpCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2Zfc2hvcnQiID0gIiR1bmljb2RlX3NpemUiCi10aGVuCi0gICAgIFBZX1VOSUNPREVfVFlQRT0idW5zaWduZWQgc2hvcnQiCi0gICAgIEFDX0RFRklORShQWV9VTklDT0RFX1RZUEUsdW5zaWduZWQgc2hvcnQpCi1lbGlmIHRlc3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgPSAiJHVuaWNvZGVfc2l6ZSIKLXRoZW4KLSAgICAgUFlfVU5JQ09ERV9UWVBFPSJ1bnNpZ25lZCBsb25nIgotICAgICBBQ19ERUZJTkUoUFlfVU5JQ09ERV9UWVBFLHVuc2lnbmVkIGxvbmcpCiBlbHNlCi0gICAgIFBZX1VOSUNPREVfVFlQRT0ibm8gdHlwZSBmb3VuZCIKKyAgSEFWRV9VU0FCTEVfV0NIQVJfVD0ibm8gdXNhYmxlIHdjaGFyX3QgZm91bmQiCiBmaQotQUNfTVNHX1JFU1VMVCgkUFlfVU5JQ09ERV9UWVBFKQorQUNfTVNHX1JFU1VMVCgkSEFWRV9VU0FCTEVfV0NIQVJfVCkKIAogIyBjaGVjayBmb3IgZW5kaWFubmVzcwogQUNfQ19CSUdFTkRJQU4KQEAgLTM4MjIsNyArMzk4MSw3IEBACiAjIHdpdGggc2V0dXAucHkuCiBweV9jdl9saWJfcmVhZGxpbmU9bm8KIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgcmVhZGxpbmUgbGlic10pCi1mb3IgcHlfbGlidGVybWNhcCBpbiAiIiBuY3Vyc2VzdyBuY3Vyc2VzIGN1cnNlcyB0ZXJtY2FwOyBkbworZm9yIHB5X2xpYnRlcm1jYXAgaW4gIiIgdGluZm8gbmN1cnNlc3cgbmN1cnNlcyBjdXJzZXMgdGVybWNhcDsgZG8KICAgaWYgdGVzdCAteiAiJHB5X2xpYnRlcm1jYXAiOyB0aGVuCiAgICAgUkVBRExJTkVfTElCUz0iLWxyZWFkbGluZSIKICAgZWxzZQpAQCAtNDA2NSw2ICs0MjI0LDggQEAKICAgW0RlZmluZSBpZiB5b3UgaGF2ZSBzdHJ1Y3Qgc3RhdC5zdF9tdGltZW5zZWNdKQogZmkKIAorYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKICMgT24gSFAvVVggMTEuMCwgbXZ3ZGVsY2ggaXMgYSBibG9jayB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudAogQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgbXZ3ZGVsY2ggaXMgYW4gZXhwcmVzc2lvbikKIEFDX0NBQ0hFX1ZBTChhY19jdl9tdndkZWxjaF9pc19leHByZXNzaW9uLApAQCAtNDExOSwyNyArNDI4MCwzNCBAQAogICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKICAgW0FDX01TR19SRVNVTFQobm8pXQogKQorIyBsYXN0IGN1cnNlcyBjb25maWd1cmUgY2hlY2sKK0NQUEZMQUdTPSRhY19zYXZlX2NwcGZsYWdzCiAKLUFDX01TR19DSEVDS0lORyhmb3IgL2Rldi9wdG14KQorQUNfTVNHX05PVElDRShbY2hlY2tpbmcgZm9yIGRldmljZSBmaWxlc10pCiAKLWlmIHRlc3QgLXIgL2Rldi9wdG14Ci10aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQotICBBQ19ERUZJTkUoSEFWRV9ERVZfUFRNWCwgMSwKLSAgW0RlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRteC5dKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQorZG5sIE5PVEU6IEluZm9ybSB1c2VyIGhvdyB0byBwcm9jZWVkIHdpdGggZmlsZXMgd2hlbiBjcm9zcyBjb21waWxpbmcuCitpZiB0ZXN0ICJ4JGNyb3NzX2NvbXBpbGluZyIgPSB4eWVzOyB0aGVuCisgIGlmIHRlc3QgIiR7YWNfY3ZfZmlsZV9fZGV2X3B0bXgrc2V0fSIgIT0gc2V0OyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgL2Rldi9wdG14XSkKKyAgICBBQ19NU0dfUkVTVUxUKFtub3Qgc2V0XSkKKyAgICBBQ19NU0dfRVJST1IoW3NldCBhY19jdl9maWxlX19kZXZfcHRteCB0byB5ZXMvbm8gaW4geW91ciBDT05GSUdfU0lURSBmaWxlIHdoZW4gY3Jvc3MgY29tcGlsaW5nXSkKKyAgZmkKKyAgaWYgdGVzdCAiJHthY19jdl9maWxlX19kZXZfcHRjK3NldH0iICE9IHNldDsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIC9kZXYvcHRjXSkKKyAgICBBQ19NU0dfUkVTVUxUKFtub3Qgc2V0XSkKKyAgICBBQ19NU0dfRVJST1IoW3NldCBhY19jdl9maWxlX19kZXZfcHRjIHRvIHllcy9ubyBpbiB5b3VyIENPTkZJR19TSVRFIGZpbGUgd2hlbiBjcm9zcyBjb21waWxpbmddKQorICBmaQogZmkKIAotQUNfTVNHX0NIRUNLSU5HKGZvciAvZGV2L3B0YykKLQotaWYgdGVzdCAtciAvZGV2L3B0YwotdGhlbgotICBBQ19NU0dfUkVTVUxUKHllcykKK0FDX0NIRUNLX0ZJTEUoL2Rldi9wdG14LCBbXSwgW10pCitpZiB0ZXN0ICJ4JGFjX2N2X2ZpbGVfX2Rldl9wdG14IiA9IHh5ZXM7IHRoZW4KKyAgQUNfREVGSU5FKEhBVkVfREVWX1BUTVgsIDEsCisgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdG14IGRldmljZSBmaWxlLl0pCitmaQorQUNfQ0hFQ0tfRklMRSgvZGV2L3B0YywgW10sIFtdKQoraWYgdGVzdCAieCRhY19jdl9maWxlX19kZXZfcHRjIiA9IHh5ZXM7IHRoZW4KICAgQUNfREVGSU5FKEhBVkVfREVWX1BUQywgMSwKLSAgW0RlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRjLl0pCi1lbHNlCi0gIEFDX01TR19SRVNVTFQobm8pCisgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKIGlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKQEAgLTQxNzksNyArNDM0NywyMyBAQAogICBdXV0pXSwKICAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXNdLAogICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vXSwKLSAgW2FjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD1ub10pCisgIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9ImNyb3NzIC0tIGFzc3VtaW5nIG5vIgorICAgaWYgdGVzdCB4JEdDQyA9IHh5ZXM7IHRoZW4KKyAgICBzYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1XZXJyb3IgLVdmb3JtYXQiCisgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworICAgICAgICAjaW5jbHVkZSA8c3RkaW8uaD4KKyAgICAgICAgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICAgICAgXV0sIFtbCisgICAgICBjaGFyICpidWZmZXI7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKTEyMyk7CisgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpOworICAgICAgc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpOworICAgICAgXV0pXSwKKyAgICAgIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKKyAgICApCisgICAgQ0ZMQUdTPSRzYXZlX0NGTEFHUworICAgZmldKQogICApCiAgIEFDX01TR19SRVNVTFQoJGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdCkKIGZpCkBAIC00Mjc0LDMwICs0NDU4LDYgQEAKICAgIHdpZGUgY2hhcnMgdGhhdCB3b3VsZCBiZSBjb252ZXJ0ZWQuXSkKIGZpCiAKLUFDX01TR19DSEVDS0lORyh3aGV0aGVyICRDQyBzdXBwb3J0cyBjb21wdXRlZCBnb3RvcykKLUFDX0NBQ0hFX1ZBTChhY19jdl9jb21wdXRlZF9nb3RvcywKLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWwotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OwotICAgIGdvdG8gTEFCRUwyOwotTEFCRUwxOgotICAgIHJldHVybiAwOwotTEFCRUwyOgotICAgIGdvdG8gKnRhcmdldHNbMF07Ci0gICAgcmV0dXJuIDE7Ci19Ci1dXV0pXSwKLVthY19jdl9jb21wdXRlZF9nb3Rvcz15ZXNdLAotW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSwKLVthY19jdl9jb21wdXRlZF9nb3Rvcz1ub10pKQotQUNfTVNHX1JFU1VMVCgkYWNfY3ZfY29tcHV0ZWRfZ290b3MpCi1pZiB0ZXN0ICIkYWNfY3ZfY29tcHV0ZWRfZ290b3MiID0geWVzCi10aGVuCi0gIEFDX0RFRklORShIQVZFX0NPTVBVVEVEX0dPVE9TLCAxLAotICBbRGVmaW5lIGlmIHRoZSBDIGNvbXBpbGVyIHN1cHBvcnRzIGNvbXB1dGVkIGdvdG9zLl0pCi1maQotCiAjIENoZWNrIGZvciAtLXdpdGgtY29tcHV0ZWQtZ290b3MKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWNvbXB1dGVkLWdvdG9zKQogQUNfQVJHX1dJVEgoY29tcHV0ZWQtZ290b3MsCkBAIC00MzE5LDE4ICs0NDc5LDM5IEBACiBdLAogW0FDX01TR19SRVNVTFQobm8gdmFsdWUgc3BlY2lmaWVkKV0pCiAKK0FDX01TR19DSEVDS0lORyh3aGV0aGVyICRDQyBzdXBwb3J0cyBjb21wdXRlZCBnb3RvcykKK0FDX0NBQ0hFX1ZBTChhY19jdl9jb21wdXRlZF9nb3RvcywKK0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbWworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHN0YXRpYyB2b2lkICp0YXJnZXRzWzFdID0geyAmJkxBQkVMMSB9OworICAgIGdvdG8gTEFCRUwyOworTEFCRUwxOgorICAgIHJldHVybiAwOworTEFCRUwyOgorICAgIGdvdG8gKnRhcmdldHNbMF07CisgICAgcmV0dXJuIDE7Cit9CitdXV0pXSwKK1thY19jdl9jb21wdXRlZF9nb3Rvcz15ZXNdLAorW2FjX2N2X2NvbXB1dGVkX2dvdG9zPW5vXSwKK1tpZiB0ZXN0ICIke3dpdGhfY29tcHV0ZWRfZ290b3Mrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPSIkd2l0aF9jb21wdXRlZF9nb3RvcyAtLSBjb25maWd1cmVkIC0td2l0aChvdXQpLWNvbXB1dGVkLWdvdG9zIgorIGVsc2UKKyAgIGFjX2N2X2NvbXB1dGVkX2dvdG9zPW5vCisgZmldKSkKK0FDX01TR19SRVNVTFQoJGFjX2N2X2NvbXB1dGVkX2dvdG9zKQorY2FzZSAiJGFjX2N2X2NvbXB1dGVkX2dvdG9zIiBpbiB5ZXMqKQorICBBQ19ERUZJTkUoSEFWRV9DT01QVVRFRF9HT1RPUywgMSwKKyAgW0RlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy5dKQorZXNhYworCiBjYXNlICRhY19zeXNfc3lzdGVtIGluCiBBSVgqKSAgIAogICBBQ19ERUZJTkUoSEFWRV9CUk9LRU5fUElQRV9CVUYsIDEsIFtEZWZpbmUgaWYgdGhlIHN5c3RlbSByZXBvcnRzIGFuIGludmFsaWQgUElQRV9CVUYgdmFsdWUuXSkgOzsKIGVzYWMKIAogCi1jYXNlICRhY19zeXNfc3lzdGVtIGluCi0gIE9TRiopIEFDX01TR19FUlJPUihPU0YqIHN5c3RlbXMgYXJlIGRlcHJlY2F0ZWQgdW5sZXNzIHNvbWVib2R5IHZvbHVudGVlcnMuIENoZWNrIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWU4NjA2KSA7OwotZXNhYwotCi1BQ19DSEVDS19GVU5DKHBpcGUyLCBBQ19ERUZJTkUoSEFWRV9QSVBFMiwgMSwgW0RlZmluZSBpZiB0aGUgT1Mgc3VwcG9ydHMgcGlwZTIoKV0pLCApCi0KIEFDX1NVQlNUKFRIUkVBREhFQURFUlMpCiAKIGZvciBoIGluIGAoY2QgJHNyY2RpcjtlY2hvIFB5dGhvbi90aHJlYWRfKi5oKWAKQEAgLTQzNDgsNiArNDUyOSw4OSBAQAogZG9uZQogQUNfTVNHX1JFU1VMVChkb25lKQogCisjIEF2YWlsYWJpbGl0eSBvZiAtTzI6CitBQ19NU0dfQ0hFQ0tJTkcoZm9yIC1PMikKK3NhdmVkX2NmbGFncz0iJENGTEFHUyIKK0NGTEFHUz0iLU8yIgorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbWworXV0pXSxbaGF2ZV9PMj15ZXNdLFtoYXZlX08yPW5vXSkKK0FDX01TR19SRVNVTFQoJGhhdmVfTzIpCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisKKyMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKK0FDX01TR19DSEVDS0lORyhmb3IgZ2xpYmMgX0ZPUlRJRllfU09VUkNFL21lbW1vdmUgYnVnKQorc2F2ZWRfY2ZsYWdzPSIkQ0ZMQUdTIgorQ0ZMQUdTPSItTzIgLURfRk9SVElGWV9TT1VSQ0U9MiIKK2lmIHRlc3QgIiRoYXZlX08yIiA9IG5vOyB0aGVuCisgICAgQ0ZMQUdTPSIiCitmaQorQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgordm9pZCBmb28odm9pZCAqcCwgdm9pZCAqcSkgeyBtZW1tb3ZlKHAsIHEsIDE5KTsgfQoraW50IG1haW4oKSB7CisgIGNoYXIgYVszMl0gPSAiMTIzNDU2Nzg5MDAwMDAwMDAwIjsKKyAgZm9vKCZhWzldLCBhKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgZm9vKGEsICZhWzldKTsKKyAgaWYgKHN0cmNtcChhLCAiMTIzNDU2Nzg5MDAwMDAwMDAwIikgIT0gMCkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7Cit9CitdXSldLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9bm9dLAorW2hhdmVfZ2xpYmNfbWVtbW92ZV9idWc9eWVzXSwKK1toYXZlX2dsaWJjX21lbW1vdmVfYnVnPXVuZGVmaW5lZF0pCitDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCitBQ19NU0dfUkVTVUxUKCRoYXZlX2dsaWJjX21lbW1vdmVfYnVnKQoraWYgdGVzdCAiJGhhdmVfZ2xpYmNfbWVtbW92ZV9idWciID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfR0xJQkNfTUVNTU9WRV9CVUcsIDEsCisgICAgW0RlZmluZSBpZiBnbGliYyBoYXMgaW5jb3JyZWN0IF9GT1JUSUZZX1NPVVJDRSB3cmFwcGVycworICAgICBmb3IgbWVtbW92ZSBhbmQgYmNvcHkuXSkKK2ZpCisKK2lmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KKyAgICAjIFNvbWUgdmVyc2lvbnMgb2YgZ2NjIG1pc2NvbXBpbGUgaW5saW5lIGFzbToKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCisgICAgY2FzZSAkQ0MgaW4KKyAgICAgICAgKmdjYyopCisgICAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGdjYyBpcGEtcHVyZS1jb25zdCBidWcpCisgICAgICAgICAgICBzYXZlZF9jZmxhZ3M9IiRDRkxBR1MiCisgICAgICAgICAgICBDRkxBR1M9Ii1PMiIKKyAgICAgICAgICAgIEFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCisgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fKChub2lubGluZSkpIGludAorICAgICAgICAgICAgZm9vKGludCAqcCkgeworICAgICAgICAgICAgICBpbnQgcjsKKyAgICAgICAgICAgICAgYXNtICggIm1vdmwgXCQ2LCAoJTEpXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgInhvcmwgJTAsICUwXG5cdCIKKyAgICAgICAgICAgICAgICAgICAgOiAiPXIiIChyKSA6ICJyIiAocCkgOiAibWVtb3J5IgorICAgICAgICAgICAgICApOworICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBtYWluKCkgeworICAgICAgICAgICAgICBpbnQgcCA9IDg7CisgICAgICAgICAgICAgIGlmICgoZm9vKCZwKSA/IDogcCkgIT0gNikKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPW5vXSwKKyAgICAgICAgICAgIFtoYXZlX2lwYV9wdXJlX2NvbnN0X2J1Zz15ZXNdLAorICAgICAgICAgICAgW2hhdmVfaXBhX3B1cmVfY29uc3RfYnVnPXVuZGVmaW5lZF0pCisgICAgICAgICAgICBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZykKKyAgICAgICAgICAgIGlmIHRlc3QgIiRoYXZlX2lwYV9wdXJlX2NvbnN0X2J1ZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9JUEFfUFVSRV9DT05TVF9CVUcsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgaWYgZ2NjIGhhcyB0aGUgaXBhLXB1cmUtY29uc3QgYnVnLl0pCisgICAgICAgICAgICBmaQorICAgICAgICA7OworICAgIGVzYWMKK2ZpCisKICMgZ2VuZXJhdGUgb3V0cHV0IGZpbGVzCiBBQ19DT05GSUdfRklMRVMoTWFrZWZpbGUucHJlIE1vZHVsZXMvU2V0dXAuY29uZmlnIE1pc2MvcHl0aG9uLnBjKQogQUNfQ09ORklHX0ZJTEVTKFtNb2R1bGVzL2xkX3NvX2FpeF0sIFtjaG1vZCAreCBNb2R1bGVzL2xkX3NvX2FpeF0pCmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCBjYThjY2I2Li4zY2EzYTRmIDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEyLDkgKzEyLDYgQEAKICAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLwogI3VuZGVmIEFJWF9HRU5VSU5FX0NQTFVTUExVUwogCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIE1hY2ggY3RocmVhZHMgcGFja2FnZSAqLwotI3VuZGVmIENfVEhSRUFEUwotCiAvKiBEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkIGluIEFSTQogICAgbWl4ZWQtZW5kaWFuIG9yZGVyIChieXRlIG9yZGVyIDQ1NjcwMTIzKSAqLwogI3VuZGVmIERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQKQEAgLTExNiw2ICsxMTMsMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2snIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0xPQ0sKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9ja19nZXRyZXMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DTE9DS19HRVRUSU1FCisKIC8qIERlZmluZSBpZiB0aGUgQyBjb21waWxlciBzdXBwb3J0cyBjb21wdXRlZCBnb3Rvcy4gKi8KICN1bmRlZiBIQVZFX0NPTVBVVEVEX0dPVE9TCiAKQEAgLTE2NSwxMCArMTY4LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGV2aWNlIG1hY3Jvcy4gKi8KICN1bmRlZiBIQVZFX0RFVklDRV9NQUNST1MKIAotLyogRGVmaW5lIGlmIHdlIGhhdmUgL2Rldi9wdGMuICovCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ERVZfUFRDCiAKLS8qIERlZmluZSBpZiB3ZSBoYXZlIC9kZXYvcHRteC4gKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAvZGV2L3B0bXggZGV2aWNlIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ERVZfUFRNWAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KQEAgLTE5Niw2ICsxOTksOSBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZXBvbGwnIGZ1bmN0aW9ucy4gKi8KICN1bmRlZiBIQVZFX0VQT0xMCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2Vwb2xsX2NyZWF0ZTEnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRVBPTExfQ1JFQVRFMQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGVyZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9FUkYKIApAQCAtMjExLDIxICsyMTcsMzYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXhwbTEnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVhQTTEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmYWNjZXNzYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkFDQ0VTU0FUCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ZjaGRpcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9GQ0hESVIKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2htb2QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkNITU9ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNobW9kYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkNITU9EQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmY2hvd24nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRkNIT1dOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNob3duYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfRkNIT1dOQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZDTlRMX0gKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmRhdGFzeW5jJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZEQVRBU1lOQwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZkb3BlbmRpcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GRE9QRU5ESVIKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmZXhlY3ZlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZFWEVDVkUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmaW5pdGUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRklOSVRFCiAKQEAgLTI0Nyw2ICsyNjgsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmc2Vla28nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlNFRUtPCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnN0YXRhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GU1RBVEFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnN0YXR2ZnMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRlNUQVRWRlMKIApAQCAtMjY1LDE2ICsyODksMzEgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnRydW5jYXRlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZUUlVOQ0FURQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZ1dGltZW5zJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRU5TCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVVRJTUVTCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZnV0aW1lc2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0ZVVElNRVNBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhaV9zdHJlcnJvcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQUlfU1RSRVJST1IKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnYW1tYScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQU1NQQogCisvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSB4NjQgZ2NjIGlubGluZSBhc3NlbWJsZXIgKi8KKyN1bmRlZiBIQVZFX0dDQ19BU01fRk9SX1g2NAorCiAvKiBEZWZpbmUgaWYgd2UgY2FuIHVzZSBnY2MgaW5saW5lIGFzc2VtYmxlciB0byBnZXQgYW5kIHNldCB4ODcgY29udHJvbCB3b3JkCiAgICAqLwogI3VuZGVmIEhBVkVfR0NDX0FTTV9GT1JfWDg3CiAKKy8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIF9fdWludDEyOF90ICovCisjdW5kZWYgSEFWRV9HQ0NfVUlOVDEyOF9UCisKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0YWRkcmluZm8gZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRBRERSSU5GTwogCkBAIC0yODQsNiArMzIzLDkgQEAKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIGZsb2NrZmlsZSgpLCBnZXRjX3VubG9ja2VkKCksIGFuZCBmdW5sb2NrZmlsZSgpICovCiAjdW5kZWYgSEFWRV9HRVRDX1VOTE9DS0VECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JvdXBsaXN0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEdST1VQTElTVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGdyb3VwcycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRHUk9VUFMKIApAQCAtMzU2LDYgKzM5OCwxMCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXR3ZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRXRAogCisvKiBEZWZpbmUgaWYgZ2xpYmMgaGFzIGluY29ycmVjdCBfRk9SVElGWV9TT1VSQ0Ugd3JhcHBlcnMgZm9yIG1lbW1vdmUgYW5kCisgICBiY29weS4gKi8KKyN1bmRlZiBIQVZFX0dMSUJDX01FTU1PVkVfQlVHCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Z3JwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfR1JQX0gKIApAQCAtMzY4LDYgKzQxNCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGllZWVmcC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lFRUVGUF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaWZfbmFtZWluZGV4JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0lGX05BTUVJTkRFWAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdpbmV0X2F0b24nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfSU5FVF9BVE9OCiAKQEAgLTM4Myw2ICs0MzIsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lPX0gKIAorLyogRGVmaW5lIGlmIGdjYyBoYXMgdGhlIGlwYS1wdXJlLWNvbnN0IGJ1Zy4gKi8KKyN1bmRlZiBIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtpbGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS0lMTAogCkBAIC00MzEsMjEgKzQ4MywzOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZXNvbHYnIGxpYnJhcnkgKC1scmVzb2x2KS4gKi8KICN1bmRlZiBIQVZFX0xJQlJFU09MVgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbmRmaWxlJyBsaWJyYXJ5ICgtbHNlbmRmaWxlKS4gKi8KKyN1bmRlZiBIQVZFX0xJQlNFTkRGSUxFCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGlidXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJQlVUSUxfSAogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdsaW5rJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xJTksKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsaW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTElOS0FUCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvY2FuLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX0gKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW51eC9jYW4vcmF3Lmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTElOVVhfQ0FOX1JBV19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvbmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0xJTlVYX05FVExJTktfSAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L3RpcGMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9USVBDX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NrZicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0NLRgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxvZzFwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xPRzFQCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9nMicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MT0cyCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgZG91YmxlLiAqLwogI3VuZGVmIEhBVkVfTE9OR19ET1VCTEUKIApAQCAtNDU1LDYgKzUyNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xTVEFUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHV0aW1lcycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9MVVRJTUVTCisKIC8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSBtYWtlZGV2IG1hY3JvLiAqLwogI3VuZGVmIEhBVkVfTUFLRURFVgogCkBAIC00NjcsMTUgKzU0MCwzMCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NRU1PUllfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbXJjaHInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUVNUkNIUgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZGlyYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTUtESVJBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmbycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NS0ZJRk8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2ZpZm9hdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS0ZJRk9BVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rbm9kJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LTk9ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2RhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9NS05PREFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWt0aW1lJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX01LVElNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1tYXAnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfTU1BUAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1yZW1hcCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9NUkVNQVAKIApAQCAtNDg4LDkgKzU3NiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRwYWNrZXQvcGFja2V0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0L2lmLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUX0lGX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBuaWNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX05JQ0UKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVuYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfT1BFTkFUCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgb3BlbnB0eScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9PUEVOUFRZCiAKQEAgLTUwMyw3ICs1OTcsNyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwYXVzZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QQVVTRQogCi0vKiBEZWZpbmUgaWYgdGhlIE9TIHN1cHBvcnRzIHBpcGUyKCkgKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGlwZTInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUElQRTIKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwbG9jaycgZnVuY3Rpb24uICovCkBAIC01MTUsNiArNjA5LDE1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBvbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QT0xMX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWR2aXNlJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BPU0lYX0ZBRFZJU0UKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwb3NpeF9mYWxsb2NhdGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9TSVhfRkFMTE9DQVRFCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHJlYWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUFJFQUQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwcm9jZXNzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUFJPQ0VTU19ICiAKQEAgLTUzMCw2ICs2MzMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkX2luaXQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFRIUkVBRF9JTklUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHRocmVhZF9raWxsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BUSFJFQURfS0lMTAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB0aHJlYWRfc2lnbWFzaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QVEhSRUFEX1NJR01BU0sKIApAQCAtNTM5LDEyICs2NDUsMjQgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcHV0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BVVEVOVgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHB3cml0ZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9QV1JJVEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFkbGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9SRUFETElOSwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRsaW5rYXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRExJTktBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWR2JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1JFQURWCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmVhbHBhdGgnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVBTFBBVEgKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZW5hbWVhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9SRU5BTUVBVAorCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgcmVhZGxpbmUgMi4xICovCiAjdW5kZWYgSEFWRV9STF9DQUxMQkFDSwogCkBAIC01NjksNiArNjg3LDI0IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJvdW5kJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JPVU5ECiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfZ2V0X3ByaW9yaXR5X21heCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TQ0hFRF9HRVRfUFJJT1JJVFlfTUFYCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2NoZWQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TQ0hFRF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfcnJfZ2V0X2ludGVydmFsJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX1JSX0dFVF9JTlRFUlZBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjaGVkX3NldGFmZmluaXR5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NDSEVEX1NFVEFGRklOSVRZCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2NoZWRfc2V0cGFyYW0nIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUUEFSQU0KKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzY2hlZF9zZXRzY2hlZHVsZXInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTEVDVAogCkBAIC01ODQsNiArNzIwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VtX3VubGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TRU1fVU5MSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VuZGZpbGUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VOREZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRlZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVEVHSUQKIApAQCAtNTk2LDYgKzczNSw5IEBACiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdzZXRncm91cHMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUR1JPVVBTCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0aG9zdG5hbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0VUSE9TVE5BTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRpdGltZXInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU0VUSVRJTUVSCiAKQEAgLTYwOCw2ICs3NTAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwZ3JwJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVFBHUlAKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZXRwcmlvcml0eScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TRVRQUklPUklUWQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNldHJlZ2lkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVFJFR0lECiAKQEAgLTYzNSwxNSArNzgwLDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2FjdGlvbicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TSUdBQ1RJT04KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzaWdhbHRzdGFjaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TSUdBTFRTVEFDSworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ2ludGVycnVwdCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TSUdJTlRFUlJVUFQKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzaWduYWwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TSUdOQUxfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3BlbmRpbmcnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHUEVORElORworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3JlbHNlJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NJR1JFTFNFCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2lndGltZWR3YWl0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR1RJTUVEV0FJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3dhaXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU0lHV0FJVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNpZ3dhaXRpbmZvJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NJR1dBSVRJTkZPCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc25wcmludGYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU05QUklOVEYKIApAQCAtNzI3LDYgKzg4NywxMiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnc3ltbGluaycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TWU1MSU5LCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3ltbGlua2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1NZTUxJTktBVAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5bmMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfU1lOQworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN5c2NvbmYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1lTQ09ORgogCkBAIC03MzksNiArOTA1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2JzZHR0eS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19CU0RUVFlfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kZXZwb2xsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX0RFVlBPTExfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXIuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLgogICAgKi8KICN1bmRlZiBIQVZFX1NZU19ESVJfSApAQCAtNzUyLDYgKzkyMSwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZmlsZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19GSUxFX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvaW9jdGwuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfSU9DVExfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9rZXJuX2NvbnRyb2wuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfS0VSTl9DT05UUk9MX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvbG9hZGF2Zy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19MT0FEQVZHX0gKIApAQCAtNzgwLDYgKzk1NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zZWxlY3QuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU0VMRUNUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc2VuZGZpbGUuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfU0VOREZJTEVfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zb2NrZXQuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfU09DS0VUX0gKIApAQCAtNzkyLDYgKzk3MCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNjYWxsLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1NZU0NBTExfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNfZG9tYWluLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NZU19ET01BSU5fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90ZXJtaW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfVEVSTUlPX0gKIApAQCAtODA0LDYgKzk4NSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19UWVBFU19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Vpby5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19VSU9fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy91bi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19VTl9ICiAKQEAgLTgxMyw2ICs5OTcsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvd2FpdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19XQUlUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMveGF0dHIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9TWVNfWEFUVFJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHRjZ2V0cGdycCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9UQ0dFVFBHUlAKIApAQCAtODMxLDkgKzEwMTgsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0Z2FtbWEnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVEdBTU1BCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dGhyZWFkLmg+IGhlYWRlciBmaWxlLiAqLwotI3VuZGVmIEhBVkVfVEhSRUFEX0gKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB0aW1lZ20nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVElNRUdNCiAKQEAgLTg3Miw2ICsxMDU2LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmxpbmthdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VTkxJTktBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHVuc2V0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1VOU0VURU5WCiAKQEAgLTg4Myw2ICsxMDcwLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VUSUxfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHV0aW1lbnNhdCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9VVElNRU5TQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1dGltZXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVVRJTUVTCiAKQEAgLTg5NSw2ICsxMDg1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdDQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfV0FJVDQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3YWl0aWQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV0FJVElECisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgd2FpdHBpZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9XQUlUUElECiAKQEAgLTkxNCwyMSArMTEwNywxOCBAQAogICAgKi8KICN1bmRlZiBIQVZFX1dPUktJTkdfVFpTRVQKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3cml0ZXYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfV1JJVEVWCisKIC8qIERlZmluZSBpZiB0aGUgemxpYiBsaWJyYXJ5IGhhcyBpbmZsYXRlQ29weSAqLwogI3VuZGVmIEhBVkVfWkxJQl9DT1BZCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgX2dldHB0eScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9fR0VUUFRZCiAKLS8qIERlZmluZSBpZiB5b3UgYXJlIHVzaW5nIE1hY2ggY3RocmVhZHMgZGlyZWN0bHkgdW5kZXIgL2luY2x1ZGUgKi8KLSN1bmRlZiBIVVJEX0NfVEhSRUFEUwotCiAvKiBEZWZpbmUgaWYgbG9nMXAoLTAuKSBpcyAwLiByYXRoZXIgdGhhbiAtMC4gKi8KICN1bmRlZiBMT0cxUF9EUk9QU19aRVJPX1NJR04KIAotLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgTWFjaCBjdGhyZWFkcyB1bmRlciBtYWNoIC8gKi8KLSN1bmRlZiBNQUNIX0NfVEhSRUFEUwotCiAvKiBEZWZpbmUgdG8gMSBpZiBgbWFqb3InLCBgbWlub3InLCBhbmQgYG1ha2VkZXYnIGFyZSBkZWNsYXJlZCBpbiA8bWtkZXYuaD4uCiAgICAqLwogI3VuZGVmIE1BSk9SX0lOX01LREVWCkBAIC05NzMsMTggKzExNjMsMTIgQEAKIC8qIERlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBQeV9zc2l6ZV90ICovCiAjdW5kZWYgUFlfRk9STUFUX1NJWkVfVAogCi0vKiBEZWZpbmUgYXMgdGhlIGludGVncmFsIHR5cGUgdXNlZCBmb3IgVW5pY29kZSByZXByZXNlbnRhdGlvbi4gKi8KLSN1bmRlZiBQWV9VTklDT0RFX1RZUEUKLQogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIGFuIGludGVycHJldGVyIHdpdGggbWFueSBydW4tdGltZSBjaGVja3MuICovCiAjdW5kZWYgUHlfREVCVUcKIAogLyogRGVmaW5lZCBpZiBQeXRob24gaXMgYnVpbHQgYXMgYSBzaGFyZWQgbGlicmFyeS4gKi8KICN1bmRlZiBQeV9FTkFCTEVfU0hBUkVECiAKLS8qIERlZmluZSBhcyB0aGUgc2l6ZSBvZiB0aGUgdW5pY29kZSB0eXBlLiAqLwotI3VuZGVmIFB5X1VOSUNPREVfU0laRQotCiAvKiBhc3N1bWUgQzg5IHNlbWFudGljcyB0aGF0IFJFVFNJR1RZUEUgaXMgYWx3YXlzIHZvaWQgKi8KICN1bmRlZiBSRVRTSUdUWVBFCiAKQEAgLTEwNTgsNiArMTI0Miw5IEBACiAvKiBEZWZpbmUgaWYgdGFuaCgtMC4pIGlzIC0wLiwgb3IgaWYgcGxhdGZvcm0gZG9lc24ndCBoYXZlIHNpZ25lZCB6ZXJvcyAqLwogI3VuZGVmIFRBTkhfUFJFU0VSVkVTX1pFUk9fU0lHTgogCisvKiBMaWJyYXJ5IG5lZWRlZCBieSB0aW1lbW9kdWxlLmM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKSAqLworI3VuZGVmIFRJTUVNT0RVTEVfTElCCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAqLwogI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQogCkBAIC0xMTcwLDE0ICsxMzU3LDExIEBACiAvKiBEZWZpbmUgb24gTmV0QlNEIHRvIGFjdGl2YXRlIGFsbCBsaWJyYXJ5IGZlYXR1cmVzICovCiAjdW5kZWYgX05FVEJTRF9TT1VSQ0UKIAotLyogRGVmaW5lIF9PU0ZfU09VUkNFIHRvIGdldCB0aGUgbWFrZWRldiBtYWNyby4gKi8KLSN1bmRlZiBfT1NGX1NPVVJDRQotCiAvKiBEZWZpbmUgdG8gMiBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IHByb3ZpZGUgUE9TSVguMSBmZWF0dXJlcyBleGNlcHQgd2l0aAogICAgdGhpcyBkZWZpbmVkLiAqLwogI3VuZGVmIF9QT1NJWF8xX1NPVVJDRQogCi0vKiBEZWZpbmUgdG8gYWN0aXZhdGUgZmVhdHVyZXMgZnJvbSBJRUVFIFN0ZHMgMTAwMy4xLTIwMDEgKi8KKy8qIERlZmluZSB0byBhY3RpdmF0ZSBmZWF0dXJlcyBmcm9tIElFRUUgU3RkcyAxMDAzLjEtMjAwOCAqLwogI3VuZGVmIF9QT1NJWF9DX1NPVVJDRQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgbmVlZCB0byBpbiBvcmRlciBmb3IgYHN0YXQnIGFuZCBvdGhlciB0aGluZ3MgdG8gd29yay4gKi8KZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKaW5kZXggMGRlYTkyNDguLjhhOWJhNWYgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0xLDggKzEsNiBAQAogIyBBdXRvZGV0ZWN0aW5nIHNldHVwLnB5IHNjcmlwdCBmb3IgYnVpbGRpbmcgdGhlIFB5dGhvbiBleHRlbnNpb25zCiAjCiAKLV9fdmVyc2lvbl9fID0gIiRSZXZpc2lvbiQiCi0KIGltcG9ydCBzeXMsIG9zLCBpbXAsIHJlLCBvcHRwYXJzZQogZnJvbSBnbG9iIGltcG9ydCBnbG9iCiBpbXBvcnQgc3lzY29uZmlnCkBAIC0xNywxNiArMTUsMjQgQEAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfc2NyaXB0cyBpbXBvcnQgYnVpbGRfc2NyaXB0cwogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IGZpbmRfZXhlY3V0YWJsZQogCitjcm9zc19jb21waWxpbmcgPSAiX1BZVEhPTl9IT1NUX1BMQVRGT1JNIiBpbiBvcy5lbnZpcm9uCisKK2RlZiBnZXRfcGxhdGZvcm0oKToKKyAgICAjIGNyb3NzIGJ1aWxkCisgICAgaWYgIl9QWVRIT05fSE9TVF9QTEFURk9STSIgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgcmV0dXJuIG9zLmVudmlyb25bIl9QWVRIT05fSE9TVF9QTEFURk9STSJdCisgICAgIyBHZXQgdmFsdWUgb2Ygc3lzLnBsYXRmb3JtCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29zZjEnKToKKyAgICAgICAgcmV0dXJuICdvc2YxJworICAgIHJldHVybiBzeXMucGxhdGZvcm0KK2hvc3RfcGxhdGZvcm0gPSBnZXRfcGxhdGZvcm0oKQorCiAjIFdlcmUgd2UgY29tcGlsZWQgLS13aXRoLXB5ZGVidWcgb3Igd2l0aCAjZGVmaW5lIFB5X0RFQlVHPwotQ09NUElMRURfV0lUSF9QWURFQlVHID0gaGFzYXR0cihzeXMsICdnZXR0b3RhbHJlZmNvdW50JykKK0NPTVBJTEVEX1dJVEhfUFlERUJVRyA9ICgnLS13aXRoLXB5ZGVidWcnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKSkKIAogIyBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyB1c2VkIHRvIGhvbGQgdGhlIGxpc3Qgb2YgbW9kdWxlcyB0byBiZSBkaXNhYmxlZC4KIGRpc2FibGVkX21vZHVsZV9saXN0ID0gW10KIAotIyBGaWxlIHdoaWNoIGNvbnRhaW5zIHRoZSBkaXJlY3RvcnkgZm9yIHNoYXJlZCBtb2RzIChmb3Igc3lzLnBhdGggZml4dXAKLSMgd2hlbiBydW5uaW5nIGZyb20gdGhlIGJ1aWxkIGRpciwgc2VlIE1vZHVsZXMvZ2V0cGF0aC5jKQotX0JVSUxERElSX0NPT0tJRSA9ICJweWJ1aWxkZGlyLnR4dCIKLQogZGVmIGFkZF9kaXJfdG9fbGlzdChkaXJsaXN0LCBkaXIpOgogICAgICIiIkFkZCB0aGUgZGlyZWN0b3J5ICdkaXInIHRvIHRoZSBsaXN0ICdkaXJsaXN0JyAoYWZ0ZXIgYW55IHJlbGF0aXZlCiAgICAgZGlyZWN0b3JpZXMpIGlmOgpAQCAtNTksNyArNjUsNiBAQAogICAgICIiIgogICAgIFJldHVybnMgVHJ1ZSBpZiAncGF0aCcgY2FuIGJlIGxvY2F0ZWQgaW4gYW4gT1NYIFNESwogICAgICIiIgotICAgIHJldHVybiAocGF0aC5zdGFydHN3aXRoKCcvdXNyLycpIGFuZCBub3QgcGF0aC5zdGFydHN3aXRoKCcvdXNyL2xvY2FsJykpIG9yIHBhdGguc3RhcnRzd2l0aCgnL1N5c3RlbS8nKQogICAgIHJldHVybiAoIChwYXRoLnN0YXJ0c3dpdGgoJy91c3IvJykgYW5kIG5vdCBwYXRoLnN0YXJ0c3dpdGgoJy91c3IvbG9jYWwnKSkKICAgICAgICAgICAgICAgICBvciBwYXRoLnN0YXJ0c3dpdGgoJy9TeXN0ZW0vJykKICAgICAgICAgICAgICAgICBvciBwYXRoLnN0YXJ0c3dpdGgoJy9MaWJyYXJ5LycpICkKQEAgLTc1LDcgKzgwLDcgQEAKICAgICAncGF0aHMnIGlzIGEgbGlzdCBvZiBhZGRpdGlvbmFsIGxvY2F0aW9ucyB0byBjaGVjazsgaWYgdGhlIGZpbGUgaXMKICAgICAgICAgZm91bmQgaW4gb25lIG9mIHRoZW0sIHRoZSByZXN1bHRpbmcgbGlzdCB3aWxsIGNvbnRhaW4gdGhlIGRpcmVjdG9yeS4KICAgICAiIiIKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgIyBIb25vciB0aGUgTWFjT1NYIFNESyBzZXR0aW5nIHdoZW4gb25lIHdhcyBzcGVjaWZpZWQuCiAgICAgICAgICMgQW4gU0RLIGlzIGEgZGlyZWN0b3J5IHdpdGggdGhlIHNhbWUgc3RydWN0dXJlIGFzIGEgcmVhbAogICAgICAgICAjIHN5c3RlbSwgYnV0IHdpdGggb25seSBoZWFkZXIgZmlsZXMgYW5kIGxpYnJhcmllcy4KQEAgLTg1LDcgKzkwLDcgQEAKICAgICBmb3IgZGlyIGluIHN0ZF9kaXJzOgogICAgICAgICBmID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGRpcik6CiAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGRpclsxOl0sIGZpbGVuYW1lKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGYpOiByZXR1cm4gW10KQEAgLTk0LDcgKzk5LDcgQEAKICAgICBmb3IgZGlyIGluIHBhdGhzOgogICAgICAgICBmID0gb3MucGF0aC5qb2luKGRpciwgZmlsZW5hbWUpCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZGlyKToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGRpcik6CiAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGRpclsxOl0sIGZpbGVuYW1lKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGYpOgpAQCAtMTA4LDcgKzExMyw3IEBACiAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAjIENoZWNrIHdoZXRoZXIgdGhlIGZvdW5kIGZpbGUgaXMgaW4gb25lIG9mIHRoZSBzdGFuZGFyZCBkaXJlY3RvcmllcwpAQCAtMTE3LDcgKzEyMiw3IEBACiAgICAgICAgICMgRW5zdXJlIHBhdGggZG9lc24ndCBlbmQgd2l0aCBwYXRoIHNlcGFyYXRvcgogICAgICAgICBwID0gcC5yc3RyaXAob3Muc2VwKQogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKHApOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgcFsxOl0pID09IGRpcm5hbWU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFsgXQogCkBAIC0xMzAsNyArMTM1LDcgQEAKICAgICAgICAgIyBFbnN1cmUgcGF0aCBkb2Vzbid0IGVuZCB3aXRoIHBhdGggc2VwYXJhdG9yCiAgICAgICAgIHAgPSBwLnJzdHJpcChvcy5zZXApCiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgocCk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGlzX21hY29zeF9zZGtfcGF0aChwKToKICAgICAgICAgICAgIGlmIG9zLnBhdGguam9pbihzeXNyb290LCBwWzE6XSkgPT0gZGlybmFtZToKICAgICAgICAgICAgICAgICByZXR1cm4gWyBwIF0KIApAQCAtMTkxLDkgKzE5Niw2IEBACiAgICAgICAgIHNyY2RpciA9IG9zLnBhdGguYWJzcGF0aChzcmNkaXIpCiAgICAgICAgIG1vZGRpcmxpc3QgPSBbb3MucGF0aC5qb2luKHNyY2RpciwgJ01vZHVsZXMnKV0KIAotICAgICAgICAjIFBsYXRmb3JtLWRlcGVuZGVudCBtb2R1bGUgc291cmNlIGFuZCBpbmNsdWRlIGRpcmVjdG9yaWVzCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQotCiAgICAgICAgICMgRml4IHVwIHRoZSBwYXRocyBmb3Igc2NyaXB0cywgdG9vCiAgICAgICAgIHNlbGYuZGlzdHJpYnV0aW9uLnNjcmlwdHMgPSBbb3MucGF0aC5qb2luKHNyY2RpciwgZmlsZW5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuZGlzdHJpYnV0aW9uLnNjcmlwdHNdCkBAIC0yNDYsMTYgKzI0OCw2IEBACiAgICAgICAgICAgICBhcmdzWydjb21waWxlcl9zbyddID0gY29tcGlsZXIgKyAnICcgKyBjY3NoYXJlZCArICcgJyArIGNmbGFncwogICAgICAgICBzZWxmLmNvbXBpbGVyLnNldF9leGVjdXRhYmxlcygqKmFyZ3MpCiAKLSAgICAgICAgIyBOb3Qgb25seSBkbyB3ZSB3cml0ZSB0aGUgYnVpbGRkaXIgY29va2llLCBidXQgd2UgbWFudWFsbHkgaW5zdGFsbAotICAgICAgICAjIHRoZSBzaGFyZWQgbW9kdWxlcyBkaXJlY3RvcnkgaWYgaXQgaXNuJ3QgYWxyZWFkeSBpbiBzeXMucGF0aC4KLSAgICAgICAgIyBPdGhlcndpc2UgdHJ5aW5nIHRvIGltcG9ydCB0aGUgZXh0ZW5zaW9ucyBhZnRlciBidWlsZGluZyB0aGVtCi0gICAgICAgICMgd2lsbCBmYWlsLgotICAgICAgICB3aXRoIG9wZW4oX0JVSUxERElSX0NPT0tJRSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoc2VsZi5idWlsZF9saWIuZW5jb2RlKCd1dGYtOCcsICdzdXJyb2dhdGVlc2NhcGUnKSkKLSAgICAgICAgYWJzX2J1aWxkX2xpYiA9IG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc2VsZi5idWlsZF9saWIpCi0gICAgICAgIGlmIGFic19idWlsZF9saWIgbm90IGluIHN5cy5wYXRoOgotICAgICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGFic19idWlsZF9saWIpCi0KICAgICAgICAgYnVpbGRfZXh0LmJ1aWxkX2V4dGVuc2lvbnMoc2VsZikKIAogICAgICAgICBsb25nZXN0ID0gbWF4KFtsZW4oZS5uYW1lKSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdKQpAQCAtMzA4LDcgKzMwMCw3IEBACiAgICAgICAgICAgICAgICAgZXh0Lm5hbWUpCiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmdldF9wbGF0Zm9ybSgpID09ICdkYXJ3aW4nIGFuZCAoCisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICgKICAgICAgICAgICAgICAgICBzeXMubWF4c2l6ZSA+IDIqKjMyIGFuZCAnLWFyY2gnIGluIGV4dC5leHRyYV9saW5rX2FyZ3MpOgogICAgICAgICAgICAgIyBEb24ndCBib3RoZXIgZG9pbmcgYW4gaW1wb3J0IGNoZWNrIHdoZW4gYW4gZXh0ZW5zaW9uIHdhcwogICAgICAgICAgICAgIyBidWlsZCB3aXRoIGFuIGV4cGxpY2l0ICctYXJjaCcgZmxhZyBvbiBPU1guIFRoYXQncyBjdXJyZW50bHkKQEAgLTMyMiw3ICszMTQsNyBAQAogCiAgICAgICAgICMgV29ya2Fyb3VuZCBmb3IgQ3lnd2luOiBDeWd3aW4gY3VycmVudGx5IGhhcyBmb3JrIGlzc3VlcyB3aGVuIG1hbnkKICAgICAgICAgIyBtb2R1bGVzIGhhdmUgYmVlbiBpbXBvcnRlZAotICAgICAgICBpZiBzZWxmLmdldF9wbGF0Zm9ybSgpID09ICdjeWd3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdjeWd3aW4nOgogICAgICAgICAgICAgc2VsZi5hbm5vdW5jZSgnV0FSTklORzogc2tpcHBpbmcgaW1wb3J0IGNoZWNrIGZvciBDeWd3aW4tYmFzZWQgIiVzIicKICAgICAgICAgICAgICAgICAlIGV4dC5uYW1lKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0zMzUsNiArMzI3LDEwIEBACiAgICAgICAgICMgY2FjaGVkLiAgQ2xlYXIgdGhhdCBjYWNoZSBiZWZvcmUgdHJ5aW5nIHRvIGltcG9ydC4KICAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQogCisgICAgICAgICMgRG9uJ3QgdHJ5IHRvIGxvYWQgZXh0ZW5zaW9ucyBmb3IgY3Jvc3MgYnVpbGRzCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGltcC5sb2FkX2R5bmFtaWMoZXh0Lm5hbWUsIGV4dF9maWxlbmFtZSkKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIHdoeToKQEAgLTM2NiwxMyArMzYyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MykKICAgICAgICAgICAgIHNlbGYuZmFpbGVkLmFwcGVuZChleHQubmFtZSkKIAotICAgIGRlZiBnZXRfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAgICMgR2V0IHZhbHVlIG9mIHN5cy5wbGF0Zm9ybQotICAgICAgICBmb3IgcGxhdGZvcm0gaW4gWydjeWd3aW4nLCAnZGFyd2luJywgJ29zZjEnXToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKHBsYXRmb3JtKToKLSAgICAgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm0KLSAgICAgICAgcmV0dXJuIHN5cy5wbGF0Zm9ybQotCiAgICAgZGVmIGFkZF9tdWx0aWFyY2hfcGF0aHMoc2VsZik6CiAgICAgICAgICMgRGViaWFuL1VidW50dSBtdWx0aWFyY2ggc3VwcG9ydC4KICAgICAgICAgIyBodHRwczovL3dpa2kudWJ1bnR1LmNvbS9NdWx0aWFyY2hTcGVjCkBAIC0zOTksMTIgKzM4OCwxNSBAQAogCiAgICAgICAgIGlmIG5vdCBmaW5kX2V4ZWN1dGFibGUoJ2Rwa2ctYXJjaGl0ZWN0dXJlJyk6CiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgb3B0ID0gJycKKyAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgb3B0ID0gJy10JyArIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSE9TVF9HTlVfVFlQRScpCiAgICAgICAgIHRtcGZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5idWlsZF90ZW1wLCAnbXVsdGlhcmNoJykKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCiAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgKLSAgICAgICAgICAgICdkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9IT1NUX01VTFRJQVJDSCA+ICVzIDI+IC9kZXYvbnVsbCcgJQotICAgICAgICAgICAgdG1wZmlsZSkKKyAgICAgICAgICAgICdkcGtnLWFyY2hpdGVjdHVyZSAlcyAtcURFQl9IT1NUX01VTFRJQVJDSCA+ICVzIDI+IC9kZXYvbnVsbCcgJQorICAgICAgICAgICAgKG9wdCwgdG1wZmlsZSkpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHJldCA+PiA4ID09IDA6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHRtcGZpbGUpIGFzIGZwOgpAQCAtNDE2LDEyICs0MDgsNDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQogCisgICAgZGVmIGFkZF9nY2NfcGF0aHMoc2VsZik6CisgICAgICAgIGdjYyA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignQ0MnKQorICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfdGVtcCwgJ2djY3BhdGhzJykKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCisgICAgICAgIHJldCA9IG9zLnN5c3RlbSgnJXMgLUUgLXYgLSA8L2Rldi9udWxsIDI+JXMgMT4vZGV2L251bGwnICUgKGdjYywgdG1wZmlsZSkpCisgICAgICAgIGlzX2djYyA9IEZhbHNlCisgICAgICAgIGluX2luY2RpcnMgPSBGYWxzZQorICAgICAgICBpbmNfZGlycyA9IFtdCisgICAgICAgIGxpYl9kaXJzID0gW10KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgcmV0ID4+IDggPT0gMDoKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4odG1wZmlsZSkgYXMgZnA6CisgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGZwLnJlYWRsaW5lcygpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJnY2MgdmVyc2lvbiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2djYyA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCIjaW5jbHVkZSA8Li4uPiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2luY2RpcnMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGxpbmUuc3RhcnRzd2l0aCgiRW5kIG9mIHNlYXJjaCBsaXN0Iik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5faW5jZGlycyA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzX2djYyBhbmQgbGluZS5zdGFydHN3aXRoKCJMSUJSQVJZX1BBVEgiKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBsaW5lLnN0cmlwKCkuc3BsaXQoIj0iKVsxXS5zcGxpdCgiOiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gb3MucGF0aC5ub3JtcGF0aChkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAnL2djYy8nIG5vdCBpbiBkOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQpCisgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzX2djYyBhbmQgaW5faW5jZGlycyBhbmQgJy9nY2MvJyBub3QgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuc3RyaXAoKSkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLnVubGluayh0bXBmaWxlKQorCiAgICAgZGVmIGRldGVjdF9tb2R1bGVzKHNlbGYpOgogICAgICAgICAjIEVuc3VyZSB0aGF0IC91c3IvbG9jYWwgaXMgYWx3YXlzIHVzZWQsIGJ1dCB0aGUgbG9jYWwgYnVpbGQKICAgICAgICAgIyBkaXJlY3RvcmllcyAoaS5lLiAnLicgYW5kICdJbmNsdWRlJykgbXVzdCBiZSBmaXJzdC4gIFNlZSBpc3N1ZQogICAgICAgICAjIDEwNTIwLgotICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCi0gICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCisgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsICcvdXNyL2xvY2FsL2luY2x1ZGUnKQorICAgICAgICAjIG9ubHkgY2hhbmdlIHRoaXMgZm9yIGNyb3NzIGJ1aWxkcyBmb3IgMy4zLCBpc3N1ZXMgb24gTWFnZWlhCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIHNlbGYuYWRkX2djY19wYXRocygpCiAgICAgICAgIHNlbGYuYWRkX211bHRpYXJjaF9wYXRocygpCiAKICAgICAgICAgIyBBZGQgcGF0aHMgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgTERGTEFHUyBhbmQKQEAgLTQ1OCw3ICs0ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICBmb3IgZGlyZWN0b3J5IGluIHJldmVyc2VkKG9wdGlvbnMuZGlycyk6CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3QoZGlyX2xpc3QsIGRpcmVjdG9yeSkKIAotICAgICAgICBpZiBvcy5wYXRoLm5vcm1wYXRoKHN5cy5wcmVmaXgpICE9ICcvdXNyJyBcCisgICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLmJhc2VfcHJlZml4KSAhPSAnL3VzcicgXAogICAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKICAgICAgICAgICAgICMgT1NYIG5vdGU6IERvbid0IGFkZCBMSUJESVIgYW5kIElOQ0xVREVESVIgdG8gYnVpbGRpbmcgYSBmcmFtZXdvcmsKICAgICAgICAgICAgICMgKFBZVEhPTkZSQU1FV09SSyBpcyBzZXQpIHRvIGF2b2lkICMgbGlua2luZyBwcm9ibGVtcyB3aGVuCkBAIC00NzIsMTEgKzUwMCwxMiBAQAogICAgICAgICAjIGxpYl9kaXJzIGFuZCBpbmNfZGlycyBhcmUgdXNlZCB0byBzZWFyY2ggZm9yIGZpbGVzOwogICAgICAgICAjIGlmIGEgZmlsZSBpcyBmb3VuZCBpbiBvbmUgb2YgdGhvc2UgZGlyZWN0b3JpZXMsIGl0IGNhbgogICAgICAgICAjIGJlIGFzc3VtZWQgdGhhdCBubyBhZGRpdGlvbmFsIC1JLC1MIGRpcmVjdGl2ZXMgYXJlIG5lZWRlZC4KLSAgICAgICAgbGliX2RpcnMgPSBzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycyArIFsKLSAgICAgICAgICAgICcvbGliNjQnLCAnL3Vzci9saWI2NCcsCi0gICAgICAgICAgICAnL2xpYicsICcvdXNyL2xpYicsCi0gICAgICAgICAgICBdCi0gICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMgKyBbJy91c3IvaW5jbHVkZSddCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBsaWJfZGlycyA9IHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzICsgWworICAgICAgICAgICAgICAgICcvbGliNjQnLCAnL3Vzci9saWI2NCcsCisgICAgICAgICAgICAgICAgJy9saWInLCAnL3Vzci9saWInLAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIGluY19kaXJzID0gc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMgKyBbJy91c3IvaW5jbHVkZSddCiAgICAgICAgIGV4dHMgPSBbXQogICAgICAgICBtaXNzaW5nID0gW10KIApAQCAtNDg0LDE4ICs1MTMsMTcgQEAKICAgICAgICAgd2l0aCBvcGVuKGNvbmZpZ19oKSBhcyBmaWxlOgogICAgICAgICAgICAgY29uZmlnX2hfdmFycyA9IHN5c2NvbmZpZy5wYXJzZV9jb25maWdfaChmaWxlKQogCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRfcGxhdGZvcm0oKQogICAgICAgICBzcmNkaXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ3NyY2RpcicpCiAKICAgICAgICAgIyBPU0YvMSBhbmQgVW5peHdhcmUgaGF2ZSBzb21lIHN0dWZmIGluIC91c3IvY2NzL2xpYiAobGlrZSAtbGRiKQotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ29zZjEnLCAndW5peHdhcmU3JywgJ29wZW51bml4OCddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIGluIFsnb3NmMScsICd1bml4d2FyZTcnLCAnb3BlbnVuaXg4J106CiAgICAgICAgICAgICBsaWJfZGlycyArPSBbJy91c3IvY2NzL2xpYiddCiAKICAgICAgICAgIyBIUC1VWDExaXYzIGtlZXBzIGZpbGVzIGluIGxpYi9ocHV4IGZvbGRlcnMuCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdocC11eDExJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnaHAtdXgxMSc6CiAgICAgICAgICAgICBsaWJfZGlycyArPSBbJy91c3IvbGliL2hwdXg2NCcsICcvdXNyL2xpYi9ocHV4MzInXQogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgIyBUaGlzIHNob3VsZCB3b3JrIG9uIGFueSB1bml4eSBwbGF0Zm9ybSA7LSkKICAgICAgICAgICAgICMgSWYgdGhlIHVzZXIgaGFzIGJvdGhlcmVkIHNwZWNpZnlpbmcgYWRkaXRpb25hbCAtSSBhbmQgLUwgZmxhZ3MKICAgICAgICAgICAgICMgaW4gT1BUIGFuZCBMREZMQUdTIHdlIG1pZ2h0IGFzIHdlbGwgdXNlIHRoZW0gaGVyZS4KQEAgLTUxNSw3ICs1NDMsNyBAQAogCiAgICAgICAgICMgQ2hlY2sgZm9yIE1hY09TIFgsIHdoaWNoIGRvZXNuJ3QgbmVlZCBsaWJtLmEgYXQgYWxsCiAgICAgICAgIG1hdGhfbGlicyA9IFsnbSddCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgbWF0aF9saWJzID0gW10KIAogICAgICAgICAjIFhYWCBPbWl0dGVkIG1vZHVsZXM6IGdsLCBwdXJlLCBkbCwgU0dJLXNwZWNpZmljIG1vZHVsZXMKQEAgLTUzNSwxMSArNTYzLDE3IEBACiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ21hdGgnLCAgWydtYXRobW9kdWxlLmMnLCAnX21hdGguYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydfbWF0aC5oJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQorCisgICAgICAgICMgdGltZSBsaWJyYXJpZXM6IGxpYnJ0IG1heSBiZSBuZWVkZWQgZm9yIGNsb2NrX2dldHRpbWUoKQorICAgICAgICB0aW1lX2xpYnMgPSBbXQorICAgICAgICBsaWIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1RJTUVNT0RVTEVfTElCJykKKyAgICAgICAgaWYgbGliOgorICAgICAgICAgICAgdGltZV9saWJzLmFwcGVuZChsaWIpCisKICAgICAgICAgIyB0aW1lIG9wZXJhdGlvbnMgYW5kIHZhcmlhYmxlcwotICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd0aW1lJywgWyd0aW1lbW9kdWxlLmMnLCAnX3RpbWUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1tYXRoX2xpYnMpICkKLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2RhdGV0aW1lJywgWydfZGF0ZXRpbWVtb2R1bGUuYycsICdfdGltZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPW1hdGhfbGlicykgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd0aW1lJywgWyd0aW1lbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9dGltZV9saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19kYXRldGltZScsIFsnX2RhdGV0aW1lbW9kdWxlLmMnXSkgKQogICAgICAgICAjIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGltcGxlbWVudGVkIGluIEMKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigiX3JhbmRvbSIsIFsiX3JhbmRvbW1vZHVsZS5jIl0pICkKICAgICAgICAgIyBiaXNlY3QKQEAgLTU1NSw2ICs1ODksOCBAQAogICAgICAgICAjIFB5dGhvbiBDIEFQSSB0ZXN0IG1vZHVsZQogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfdGVzdGNhcGknLCBbJ190ZXN0Y2FwaW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ3Rlc3RjYXBpX2xvbmcuaCddKSApCisgICAgICAgICMgUHl0aG9uIFBFUC0zMTE4IChidWZmZXIgcHJvdG9jb2wpIHRlc3QgbW9kdWxlCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ190ZXN0YnVmZmVyJywgWydfdGVzdGJ1ZmZlci5jJ10pICkKICAgICAgICAgIyBwcm9maWxlciAoX2xzcHJvZiBpcyBmb3IgY1Byb2ZpbGUucHkpCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19sc3Byb2YnLCBbJ19sc3Byb2YuYycsICdyb3RhdGluZ3RyZWUuYyddKSApCiAgICAgICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCkBAIC02MTIsMTMgKzY0OCwyMCBAQAogICAgICAgICBkb19yZWFkbGluZSA9IHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICdyZWFkbGluZScpCiAgICAgICAgIHJlYWRsaW5lX3Rlcm1jYXBfbGlicmFyeSA9ICIiCiAgICAgICAgIGN1cnNlc19saWJyYXJ5ID0gIiIKKyAgICAgICAgIyBDYW5ub3QgdXNlIG9zLnBvcGVuIGhlcmUgaW4gcHkzay4KKyAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdyZWFkbGluZV90ZXJtY2FwX2xpYicpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLmJ1aWxkX3RlbXApOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5idWlsZF90ZW1wKQogICAgICAgICAjIERldGVybWluZSBpZiByZWFkbGluZSBpcyBhbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcyBvciB0aW5mby4KLSAgICAgICAgaWYgZG9fcmVhZGxpbmUgYW5kIGZpbmRfZXhlY3V0YWJsZSgnbGRkJyk6Ci0gICAgICAgICAgICAjIENhbm5vdCB1c2Ugb3MucG9wZW4gaGVyZSBpbiBweTNrLgotICAgICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdyZWFkbGluZV90ZXJtY2FwX2xpYicpCi0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5idWlsZF90ZW1wKToKLSAgICAgICAgICAgICAgICBvcy5tYWtlZGlycyhzZWxmLmJ1aWxkX3RlbXApCi0gICAgICAgICAgICByZXQgPSBvcy5zeXN0ZW0oImxkZCAlcyA+ICVzIiAlIChkb19yZWFkbGluZSwgdG1wZmlsZSkpCisgICAgICAgIGlmIGRvX3JlYWRsaW5lOgorICAgICAgICAgICAgaWYgY3Jvc3NfY29tcGlsaW5nOgorICAgICAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgiJXMgLWQgJXMgfCBncmVwICcoTkVFREVEKScgPiAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1JFQURFTEYnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9fcmVhZGxpbmUsIHRtcGZpbGUpKQorICAgICAgICAgICAgZWxpZiBmaW5kX2V4ZWN1dGFibGUoJ2xkZCcpOgorICAgICAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbSgibGRkICVzID4gJXMiICUgKGRvX3JlYWRsaW5lLCB0bXBmaWxlKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0ID0gMjU2CiAgICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgogICAgICAgICAgICAgICAgIHdpdGggb3Blbih0bXBmaWxlKSBhcyBmcDoKICAgICAgICAgICAgICAgICAgICAgZm9yIGxuIGluIGZwOgpAQCAtNjMxLDcgKzY3NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAndGluZm8nIGluIGxuOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRsaW5lX3Rlcm1jYXBfbGlicmFyeSA9ICd0aW5mbycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgb3MudW5saW5rKHRtcGZpbGUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0bXBmaWxlKToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsodG1wZmlsZSkKICAgICAgICAgIyBJc3N1ZSA3Mzg0OiBJZiByZWFkbGluZSBpcyBhbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcywKICAgICAgICAgIyB1c2UgdGhlIHNhbWUgbGlicmFyeSBmb3IgdGhlIHJlYWRsaW5lIGFuZCBjdXJzZXMgbW9kdWxlcy4KICAgICAgICAgaWYgJ2N1cnNlcycgaW4gcmVhZGxpbmVfdGVybWNhcF9saWJyYXJ5OgpAQCAtNjQzLDcgKzY4Nyw3IEBACiAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2N1cnNlcycpOgogICAgICAgICAgICAgY3Vyc2VzX2xpYnJhcnkgPSAnY3Vyc2VzJwogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgb3NfcmVsZWFzZSA9IGludChvcy51bmFtZSgpWzJdLnNwbGl0KCcuJylbMF0pCiAgICAgICAgICAgICBkZXBfdGFyZ2V0ID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQnKQogICAgICAgICAgICAgaWYgZGVwX3RhcmdldCBhbmQgZGVwX3RhcmdldC5zcGxpdCgnLicpIDwgWycxMCcsICc1J106CkBAIC02NTUsNyArNjk5LDcgQEAKICAgICAgICAgICAgICAgICBpZiBmaW5kX2ZpbGUoJ3JlYWRsaW5lL3JsY29uZi5oJywgaW5jX2RpcnMsIFtdKSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBkb19yZWFkbGluZSA9IEZhbHNlCiAgICAgICAgIGlmIGRvX3JlYWRsaW5lOgotICAgICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIG9zX3JlbGVhc2UgPCA5OgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgb3NfcmVsZWFzZSA8IDk6CiAgICAgICAgICAgICAgICAgIyBJbiBldmVyeSBkaXJlY3Rvcnkgb24gdGhlIHNlYXJjaCBwYXRoIHNlYXJjaCBmb3IgYSBkeW5hbWljCiAgICAgICAgICAgICAgICAgIyBsaWJyYXJ5IGFuZCB0aGVuIGEgc3RhdGljIGxpYnJhcnksIGluc3RlYWQgb2YgZmlyc3QgbG9va2luZwogICAgICAgICAgICAgICAgICMgZm9yIGR5bmFtaWMgbGlicmFyaWVzIG9uIHRoZSBlbnRpcmUgcGF0aC4KQEAgLTY4Nyw3ICs3MzEsNyBAQAogICAgICAgICAgICAgbGlicyA9IFsnY3J5cHQnXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGlicyA9IFtdCi0gICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2NyeXB0JywgWydjcnlwdG1vZHVsZS5jJ10sIGxpYnJhcmllcz1saWJzKSApCisgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19jcnlwdCcsIFsnX2NyeXB0bW9kdWxlLmMnXSwgbGlicmFyaWVzPWxpYnMpICkKIAogICAgICAgICAjIENTViBmaWxlcwogICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3N2JywgWydfY3N2LmMnXSkgKQpAQCAtNzM2LDcgKzc4MCw3IEBACiAgICAgICAgICAgICAgICAgaW5jX2RpcnMgKyBzZWFyY2hfZm9yX3NzbF9pbmNzX2luKQogICAgICAgICBpZiBvcGVuc3Nsdl9oOgogICAgICAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihvcGVuc3Nsdl9oWzBdLCAnb3BlbnNzbC9vcGVuc3Nsdi5oJykKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKG5hbWUpOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKG5hbWUpOgogICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5wYXRoLmpvaW4obWFjb3N4X3Nka19yb290KCksIG5hbWVbMTpdKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHdpdGggb3BlbihuYW1lLCAncicpIGFzIGluY2ZpbGU6CkBAIC03NjgsMjAgKzgxMiwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgIG9wZW5zc2xfdmVyKQogICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfaGFzaGxpYicpCiAKLSAgICAgICAgbWluX3NoYTJfb3BlbnNzbF92ZXIgPSAweDAwOTA4MDAwCi0gICAgICAgIGlmIENPTVBJTEVEX1dJVEhfUFlERUJVRyBvciBvcGVuc3NsX3ZlciA8IG1pbl9zaGEyX29wZW5zc2xfdmVyOgotICAgICAgICAgICAgIyBPcGVuU1NMIGRvZXNuJ3QgZG8gdGhlc2UgdW50aWwgMC45Ljggc28gd2UnbGwgYnJpbmcgb3VyIG93biBoYXNoCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMjU2JywgWydzaGEyNTZtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPVsnaGFzaGxpYi5oJ10pICkKLSAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19zaGE1MTInLCBbJ3NoYTUxMm1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQotCi0gICAgICAgIGlmIENPTVBJTEVEX1dJVEhfUFlERUJVRyBvciBub3QgaGF2ZV91c2FibGVfb3BlbnNzbDoKLSAgICAgICAgICAgICMgbm8gb3BlbnNzbCBhdCBhbGwsIHVzZSBvdXIgb3duIG1kNSBhbmQgc2hhMQotICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX21kNScsIFsnbWQ1bW9kdWxlLmMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICAjIFdlIGFsd2F5cyBjb21waWxlIHRoZXNlIGV2ZW4gd2hlbiBPcGVuU1NMIGlzIGF2YWlsYWJsZSAoaXNzdWUgIzE0NjkzKS4KKyAgICAgICAgIyBJdCdzIGhhcm1sZXNzIGFuZCB0aGUgb2JqZWN0IGNvZGUgaXMgdGlueSAoNDAtNTAgS0IgcGVyIG1vZHVsZSwKKyAgICAgICAgIyBvbmx5IGxvYWRlZCB3aGVuIGFjdHVhbGx5IHVzZWQpLgorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMjU2JywgWydzaGEyNTZtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhNTEyJywgWydzaGE1MTJtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbWQ1JywgWydtZDVtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMScsIFsnc2hhMW1vZHVsZS5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kcz1bJ2hhc2hsaWIuaCddKSApCiAKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCkBAIC03OTgsNyArODM5LDcgQEAKICAgICAgICAgIyBhIHJlbGVhc2UuICBNb3N0IG9wZW4gc291cmNlIE9TZXMgY29tZSB3aXRoIG9uZSBvciBtb3JlCiAgICAgICAgICMgdmVyc2lvbnMgb2YgQmVya2VsZXlEQiBhbHJlYWR5IGluc3RhbGxlZC4KIAotICAgICAgICBtYXhfZGJfdmVyID0gKDUsIDEpCisgICAgICAgIG1heF9kYl92ZXIgPSAoNSwgMykKICAgICAgICAgbWluX2RiX3ZlciA9ICgzLCAzKQogICAgICAgICBkYl9zZXR1cF9kZWJ1ZyA9IEZhbHNlICAgIyB2ZXJib3NlIGRlYnVnIHByaW50cyBmcm9tIHRoaXMgc2NyaXB0PwogCkBAIC04NTUsNiArODk2LDkgQEAKICAgICAgICAgICAgIGRiX2luY19wYXRocy5hcHBlbmQoJy9wa2cvZGItMy4lZC9pbmNsdWRlJyAlIHgpCiAgICAgICAgICAgICBkYl9pbmNfcGF0aHMuYXBwZW5kKCcvb3B0L2RiLTMuJWQvaW5jbHVkZScgJSB4KQogCisgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKKyAgICAgICAgICAgIGRiX2luY19wYXRocyA9IFtdCisKICAgICAgICAgIyBBZGQgc29tZSBjb21tb24gc3ViZGlyZWN0b3JpZXMgZm9yIFNsZWVweWNhdCBEQiB0byB0aGUgbGlzdCwKICAgICAgICAgIyBiYXNlZCBvbiB0aGUgc3RhbmRhcmQgaW5jbHVkZSBkaXJlY3Rvcmllcy4gVGhpcyB3YXkgREIzLzQgZ2V0cwogICAgICAgICAjIHBpY2tlZCB1cCB3aGVuIGl0IGlzIGluc3RhbGxlZCBpbiBhIG5vbi1zdGFuZGFyZCBwcmVmaXggYW5kCkBAIC04NzUsNyArOTE5LDcgQEAKIAogICAgICAgICBkYl92ZXJfaW5jX21hcCA9IHt9CiAKLSAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgc3lzcm9vdCA9IG1hY29zeF9zZGtfcm9vdCgpCiAKICAgICAgICAgY2xhc3MgZGJfZm91bmQoRXhjZXB0aW9uKTogcGFzcwpAQCAtODg0LDcgKzkyOCw3IEBACiAgICAgICAgICAgICAjIHNlYXJjaCBwYXRoLgogICAgICAgICAgICAgZm9yIGQgaW4gaW5jX2RpcnMgKyBkYl9pbmNfcGF0aHM6CiAgICAgICAgICAgICAgICAgZiA9IG9zLnBhdGguam9pbihkLCAiZGIuaCIpCi0gICAgICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZCBpc19tYWNvc3hfc2RrX3BhdGgoZCk6CisgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGQpOgogICAgICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGRbMTpdLCAiZGIuaCIpCiAKICAgICAgICAgICAgICAgICBpZiBkYl9zZXR1cF9kZWJ1ZzogcHJpbnQoImRiOiBsb29raW5nIGZvciBkYi5oIGluIiwgZikKQEAgLTkzNSw3ICs5NzksNyBAQAogICAgICAgICAgICAgICAgICAgICBkYl9pbmNkaXIucmVwbGFjZSgiaW5jbHVkZSIsICdsaWInKSwKICAgICAgICAgICAgICAgICBdCiAKLSAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICAgICAgZGJfZGlyc190b19jaGVjayA9IGxpc3QoZmlsdGVyKG9zLnBhdGguaXNkaXIsIGRiX2RpcnNfdG9fY2hlY2spKQogCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTk5MSw3ICsxMDM1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xvY2FsL2luY2x1ZGUvc3FsaXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy91c3IvbG9jYWwvaW5jbHVkZS9zcWxpdGUzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQorICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6CisgICAgICAgICAgICBzcWxpdGVfaW5jX3BhdGhzID0gW10KICAgICAgICAgTUlOX1NRTElURV9WRVJTSU9OX05VTUJFUiA9ICgzLCAwLCA4KQogICAgICAgICBNSU5fU1FMSVRFX1ZFUlNJT04gPSAiLiIuam9pbihbc3RyKHgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBNSU5fU1FMSVRFX1ZFUlNJT05fTlVNQkVSXSkKQEAgLTk5OSwxMiArMTA0NSwxMiBAQAogICAgICAgICAjIFNjYW4gdGhlIGRlZmF1bHQgaW5jbHVkZSBkaXJlY3RvcmllcyBiZWZvcmUgdGhlIFNRTGl0ZSBzcGVjaWZpYwogICAgICAgICAjIG9uZXMuIFRoaXMgYWxsb3dzIG9uZSB0byBvdmVycmlkZSB0aGUgY29weSBvZiBzcWxpdGUgb24gT1NYLAogICAgICAgICAjIHdoZXJlIC91c3IvaW5jbHVkZSBjb250YWlucyBhbiBvbGQgdmVyc2lvbiBvZiBzcWxpdGUuCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgIHN5c3Jvb3QgPSBtYWNvc3hfc2RrX3Jvb3QoKQogCiAgICAgICAgIGZvciBkXyBpbiBpbmNfZGlycyArIHNxbGl0ZV9pbmNfcGF0aHM6CiAgICAgICAgICAgICBkID0gZF8KLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGQpOgorICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQgaXNfbWFjb3N4X3Nka19wYXRoKGQpOgogICAgICAgICAgICAgICAgIGQgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZFsxOl0pCiAKICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmpvaW4oZCwgInNxbGl0ZTMuaCIpCkBAIC0xMDU1LDcgKzExMDEsNyBAQAogICAgICAgICAgICAgICAgICdfc3FsaXRlL3V0aWwuYycsIF0KIAogICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMgPSBbXQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJ3aW4zMiI6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtICE9ICJ3aW4zMiI6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgnTU9EVUxFX05BTUUnLCAnInNxbGl0ZTMiJykpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNxbGl0ZV9kZWZpbmVzLmFwcGVuZCgoJ01PRFVMRV9OQU1FJywgJ1xcInNxbGl0ZTNcXCInKSkKQEAgLTEwNjUsNyArMTExMSw3IEBACiAgICAgICAgICAgICBpZiAnLS1lbmFibGUtbG9hZGFibGUtc3FsaXRlLWV4dGVuc2lvbnMnIG5vdCBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6CiAgICAgICAgICAgICAgICAgc3FsaXRlX2RlZmluZXMuYXBwZW5kKCgiU1FMSVRFX09NSVRfTE9BRF9FWFRFTlNJT04iLCAiMSIpKQogCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgICMgSW4gZXZlcnkgZGlyZWN0b3J5IG9uIHRoZSBzZWFyY2ggcGF0aCBzZWFyY2ggZm9yIGEgZHluYW1pYwogICAgICAgICAgICAgICAgICMgbGlicmFyeSBhbmQgdGhlbiBhIHN0YXRpYyBsaWJyYXJ5LCBpbnN0ZWFkIG9mIGZpcnN0IGxvb2tpbmcKICAgICAgICAgICAgICAgICAjIGZvciBkeW5hbWljIGxpYnJhcmllcyBvbiB0aGUgZW50aXJlIHBhdGguCkBAIC0xMDc1LDEwICsxMTIxLDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNxbGl0ZV9leHRyYV9saW5rX2FyZ3MgPSAoKQogCisgICAgICAgICAgICBpbmNsdWRlX2RpcnMgPSBbIk1vZHVsZXMvX3NxbGl0ZSJdCisgICAgICAgICAgICAjIE9ubHkgaW5jbHVkZSB0aGUgZGlyZWN0b3J5IHdoZXJlIHNxbGl0ZSB3YXMgZm91bmQgaWYgaXQgZG9lcworICAgICAgICAgICAgIyBub3QgYWxyZWFkeSBleGlzdCBpbiBzZXQgaW5jbHVkZSBkaXJlY3Rvcmllcywgb3RoZXJ3aXNlIHlvdQorICAgICAgICAgICAgIyBjYW4gZW5kIHVwIHdpdGggYSBiYWQgc2VhcmNoIHBhdGggb3JkZXIuCisgICAgICAgICAgICBpZiBzcWxpdGVfaW5jZGlyIG5vdCBpbiBzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlyczoKKyAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKHNxbGl0ZV9pbmNkaXIpCiAgICAgICAgICAgICBleHRzLmFwcGVuZChFeHRlbnNpb24oJ19zcWxpdGUzJywgc3FsaXRlX3NyY3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1zcWxpdGVfZGVmaW5lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19zcWxpdGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlX2luY2Rpcl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWluY2x1ZGVfZGlycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9c3FsaXRlX2xpYmRpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1zcWxpdGVfbGliZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncz1zcWxpdGVfZXh0cmFfbGlua19hcmdzLApAQCAtMTA4Niw5ICsxMTM3LDEwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX3NxbGl0ZTMnKQogCisgICAgICAgIGRibV9zZXR1cF9kZWJ1ZyA9IEZhbHNlICAgIyB2ZXJib3NlIGRlYnVnIHByaW50cyBmcm9tIHRoaXMgc2NyaXB0PwogICAgICAgICBkYm1fb3JkZXIgPSBbJ2dkYm0nXQogICAgICAgICAjIFRoZSBzdGFuZGFyZCBVbml4IGRibSBtb2R1bGU6Ci0gICAgICAgIGlmIHBsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbiddOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbiddOgogICAgICAgICAgICAgY29uZmlnX2FyZ3MgPSBbYXJnLnN0cmlwKCInIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhcmcgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpLnNwbGl0KCldCiAgICAgICAgICAgICBkYm1fYXJncyA9IFthcmcgZm9yIGFyZyBpbiBjb25maWdfYXJncwpAQCAtMTExMSw3ICsxMTYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZGJtX2xpYnMgPSBbJ2dkYm1fY29tcGF0J10KICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRibV9saWJzID0gW10KLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgbmRibSIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgbmRibSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBkYm1leHQgPSBFeHRlbnNpb24oJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ0hBVkVfTkRCTV9IJyxOb25lKSwKQEAgLTExMjYsNyArMTE3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2RibV9jb21wYXQnKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJtX2xpYnMuYXBwZW5kKCdnZGJtX2NvbXBhdCcpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaW5kX2ZpbGUoImdkYm0vbmRibS5oIiwgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGRibV9zZXR1cF9kZWJ1ZzogcHJpbnQoImJ1aWxkaW5nIGRibSB1c2luZyBnZGJtIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYm1leHQgPSBFeHRlbnNpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZGJtJywgWydfZGJtbW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1bCkBAIC0xMTM1LDcgKzExODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBnZGJtX2xpYnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfZmlsZSgiZ2RibS1uZGJtLmgiLCBpbmNfZGlycywgW10pIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgZ2RibSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZGJtX3NldHVwX2RlYnVnOiBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGdkYm0iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19kYm0nLCBbJ19kYm1tb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPVsKQEAgLTExNDUsNyArMTE5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbGlmIGNhbmQgPT0gImJkYiI6CiAgICAgICAgICAgICAgICAgICAgIGlmIGRiX2luY3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiYnVpbGRpbmcgZGJtIHVzaW5nIGJkYiIpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBkYm1fc2V0dXBfZGVidWc6IHByaW50KCJidWlsZGluZyBkYm0gdXNpbmcgYmRiIikKICAgICAgICAgICAgICAgICAgICAgICAgIGRibWV4dCA9IEV4dGVuc2lvbignX2RibScsIFsnX2RibW1vZHVsZS5jJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPWRibGliX2RpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lX2xpYnJhcnlfZGlycz1kYmxpYl9kaXIsCkBAIC0xMTcwLDE0ICsxMjIyLDE0IEBACiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2dkYm0nKQogCiAgICAgICAgICMgVW5peC1vbmx5IG1vZHVsZXMKLSAgICAgICAgaWYgcGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSAhPSAnd2luMzInOgogICAgICAgICAgICAgIyBTdGVlbiBMdW1ob2x0J3MgdGVybWlvcyBtb2R1bGUKICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3Rlcm1pb3MnLCBbJ3Rlcm1pb3MuYyddKSApCiAgICAgICAgICAgICAjIEplcmVteSBIeWx0b24ncyBybGltaXQgaW50ZXJmYWNlCiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdyZXNvdXJjZScsIFsncmVzb3VyY2UuYyddKSApCiAKICAgICAgICAgICAgICMgU3VuIHllbGxvdyBwYWdlcy4gU29tZSBzeXN0ZW1zIGhhdmUgdGhlIGZ1bmN0aW9ucyBpbiBsaWJjLgotICAgICAgICAgICAgaWYgKHBsYXRmb3JtIG5vdCBpbiBbJ2N5Z3dpbicsICdxbng2J10gYW5kCisgICAgICAgICAgICBpZiAoaG9zdF9wbGF0Zm9ybSBub3QgaW4gWydjeWd3aW4nLCAncW54NiddIGFuZAogICAgICAgICAgICAgICAgIGZpbmRfZmlsZSgncnBjc3ZjL3lwX3Byb3QuaCcsIGluY19kaXJzLCBbXSkgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnbnNsJykpOgogICAgICAgICAgICAgICAgICAgICBsaWJzID0gWyduc2wnXQpAQCAtMTE5MiwxNiArMTI0NCwzNSBAQAogCiAgICAgICAgICMgQ3Vyc2VzIHN1cHBvcnQsIHJlcXVpcmluZyB0aGUgU3lzdGVtIFYgdmVyc2lvbiBvZiBjdXJzZXMsIG9mdGVuCiAgICAgICAgICMgcHJvdmlkZWQgYnkgdGhlIG5jdXJzZXMgbGlicmFyeS4KKyAgICAgICAgY3Vyc2VzX2RlZmluZXMgPSBbXQorICAgICAgICBjdXJzZXNfaW5jbHVkZXMgPSBbXQogICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsJworICAgICAgICBpZiBjdXJzZXNfbGlicmFyeSA9PSAnbmN1cnNlc3cnOgorICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnSEFWRV9OQ1VSU0VTVycsICcxJykpCisgICAgICAgICAgICBjdXJzZXNfaW5jbHVkZXMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvbmN1cnNlc3cnKQorICAgICAgICAgICAgIyBCdWcgMTQ2NDA1NjogSWYgX2N1cnNlcy5zbyBsaW5rcyB3aXRoIG5jdXJzZXN3LAorICAgICAgICAgICAgIyBfY3Vyc2VzX3BhbmVsLnNvIG11c3QgbGluayB3aXRoIHBhbmVsdy4KKyAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JworICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICAjIE9uIE9TIFgsIHRoZXJlIGlzIG5vIHNlcGFyYXRlIC91c3IvbGliL2xpYm5jdXJzZXN3IG5vcgorICAgICAgICAgICAgICAgICMgbGlicGFuZWx3LiAgSWYgd2UgYXJlIGhlcmUsIHdlIGZvdW5kIGEgbG9jYWxseS1zdXBwbGllZAorICAgICAgICAgICAgICAgICMgdmVyc2lvbiBvZiBsaWJuY3Vyc2Vzdy4gIFRoZXJlIHNob3VsZCBiZSBhbHNvIGJlIGEKKyAgICAgICAgICAgICAgICAjIGxpYnBhbmVsdy4gIF9YT1BFTl9TT1VSQ0UgZGVmaW5lcyBhcmUgdXN1YWxseSBleGNsdWRlZAorICAgICAgICAgICAgICAgICMgZm9yIE9TIFggYnV0IHdlIG5lZWQgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCBoZXJlIGZvcgorICAgICAgICAgICAgICAgICMgbmN1cnNlcyB3aWRlIGNoYXIgc3VwcG9ydAorICAgICAgICAgICAgICAgIGN1cnNlc19kZWZpbmVzLmFwcGVuZCgoJ19YT1BFTl9TT1VSQ0VfRVhURU5ERUQnLCAnMScpKQorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kIGN1cnNlc19saWJyYXJ5ID09ICduY3Vyc2VzJzoKKyAgICAgICAgICAgICMgQnVpbGRpbmcgd2l0aCB0aGUgc3lzdGVtLXN1cHBpZWQgY29tYmluZWQgbGlibmN1cnNlcy9saWJwYW5lbAorICAgICAgICAgICAgY3Vyc2VzX2RlZmluZXMuYXBwZW5kKCgnSEFWRV9OQ1VSU0VTVycsICcxJykpCisgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdfWE9QRU5fU09VUkNFX0VYVEVOREVEJywgJzEnKSkKKwogICAgICAgICBpZiBjdXJzZXNfbGlicmFyeS5zdGFydHN3aXRoKCduY3Vyc2VzJyk6Ci0gICAgICAgICAgICBpZiBjdXJzZXNfbGlicmFyeSA9PSAnbmN1cnNlc3cnOgotICAgICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKLSAgICAgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgotICAgICAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JwogICAgICAgICAgICAgY3Vyc2VzX2xpYnMgPSBbY3Vyc2VzX2xpYnJhcnldCiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzJywgWydfY3Vyc2VzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWN1cnNlc19pbmNsdWRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gY3Vyc2VzX2xpYnMpICkKLSAgICAgICAgZWxpZiBjdXJzZXNfbGlicmFyeSA9PSAnY3Vyc2VzJyBhbmQgcGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ2N1cnNlcycgYW5kIGhvc3RfcGxhdGZvcm0gIT0gJ2Rhcndpbic6CiAgICAgICAgICAgICAgICAgIyBPU1ggaGFzIGFuIG9sZCBCZXJrZWxleSBjdXJzZXMsIG5vdCBnb29kIGVub3VnaCBmb3IKICAgICAgICAgICAgICAgICAjIHRoZSBfY3Vyc2VzIG1vZHVsZS4KICAgICAgICAgICAgIGlmIChzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAndGVybWluZm8nKSk6CkBAIC0xMjEyLDYgKzEyODMsNyBAQAogICAgICAgICAgICAgICAgIGN1cnNlc19saWJzID0gWydjdXJzZXMnXQogCiAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfY3Vyc2VzJywgWydfY3Vyc2VzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1jdXJzZXNfZGVmaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gY3Vyc2VzX2xpYnMpICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY3Vyc2VzJykKQEAgLTEyMjAsNiArMTI5Miw4IEBACiAgICAgICAgIGlmIChtb2R1bGVfZW5hYmxlZChleHRzLCAnX2N1cnNlcycpIGFuZAogICAgICAgICAgICAgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgcGFuZWxfbGlicmFyeSkpOgogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2N1cnNlc19wYW5lbCcsIFsnX2N1cnNlc19wYW5lbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1jdXJzZXNfaW5jbHVkZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9Y3Vyc2VzX2RlZmluZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtwYW5lbF9saWJyYXJ5XSArIGN1cnNlc19saWJzKSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2N1cnNlc19wYW5lbCcpCkBAIC0xMjUyLDcgKzEzMjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIGlmIHZlcnNpb24gPj0gdmVyc2lvbl9yZXE6CiAgICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICd6JykpOgotICAgICAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6CisgICAgICAgICAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgICAgICAgICAgICB6bGliX2V4dHJhX2xpbmtfYXJncyA9ICgnLVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QnLCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHpsaWJfZXh0cmFfbGlua19hcmdzID0gKCkKQEAgLTEyODQsMTUgKzEzNTgsMjIgQEAKIAogICAgICAgICAjIEd1c3Rhdm8gTmllbWV5ZXIncyBiejIgbW9kdWxlLgogICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgJ2J6MicpKToKLSAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIjoKKyAgICAgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gImRhcndpbiI6CiAgICAgICAgICAgICAgICAgYnoyX2V4dHJhX2xpbmtfYXJncyA9ICgnLVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QnLCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYnoyX2V4dHJhX2xpbmtfYXJncyA9ICgpCi0gICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdiejInLCBbJ2J6Mm1vZHVsZS5jJ10sCisgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYnoyJywgWydfYnoybW9kdWxlLmMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gWydiejInXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzID0gYnoyX2V4dHJhX2xpbmtfYXJncykgKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ2J6MicpCisgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnX2J6MicpCisKKyAgICAgICAgIyBMWk1BIGNvbXByZXNzaW9uIHN1cHBvcnQuCisgICAgICAgIGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICdsem1hJyk6CisgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfbHptYScsIFsnX2x6bWFtb2R1bGUuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ2x6bWEnXSkgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19sem1hJykKIAogICAgICAgICAjIEludGVyZmFjZSB0byB0aGUgRXhwYXQgWE1MIHBhcnNlcgogICAgICAgICAjCkBAIC0xMzQ4LDMzICsxNDI5LDM2IEBACiAgICAgICAgICAgICBleHRzLmFwcGVuZChFeHRlbnNpb24oJ19jb2RlY3NfJXMnICUgbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnY2prY29kZWNzL19jb2RlY3NfJXMuYycgJSBsb2NdKSkKIAorICAgICAgICAjIFN0ZWZhbiBLcmFoJ3MgX2RlY2ltYWwgbW9kdWxlCisgICAgICAgIGV4dHMuYXBwZW5kKHNlbGYuX2RlY2ltYWxfZXh0KCkpCisKICAgICAgICAgIyBUaG9tYXMgSGVsbGVyJ3MgX2N0eXBlcyBtb2R1bGUKICAgICAgICAgc2VsZi5kZXRlY3RfY3R5cGVzKGluY19kaXJzLCBsaWJfZGlycykKIAogICAgICAgICAjIFJpY2hhcmQgT3Vka2VyaydzIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzogICAgICAgICAgICAgIyBXaW5kb3dzCisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3dpbjMyJzogICAgICAgICMgV2luZG93cwogICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCiAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3dzMl8zMiddCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSA9PSAnZGFyd2luJzogICAgICAgICAgIyBNYWMgT1NYCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzogICAgICMgTWFjIE9TWAogICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCiAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQogCi0gICAgICAgIGVsaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6ICAgICAgICAgICMgQ3lnd2luCisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnY3lnd2luJzogICAgICMgQ3lnd2luCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q0JywgJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JywgJ2ZyZWVic2Q4Jyk6CisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSBpbiAoJ2ZyZWVic2Q0JywgJ2ZyZWVic2Q1JywgJ2ZyZWVic2Q2JywgJ2ZyZWVic2Q3JywgJ2ZyZWVic2Q4Jyk6CiAgICAgICAgICAgICAjIEZyZWVCU0QncyBQMTAwMy4xYiBzZW1hcGhvcmUgc3VwcG9ydCBpcyB2ZXJ5IGV4cGVyaW1lbnRhbAogICAgICAgICAgICAgIyBhbmQgaGFzIG1hbnkga25vd24gcHJvYmxlbXMuIChhcyBvZiBKdW5lIDIwMDgpCiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCdvcGVuYnNkJyk6CiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFtdCiAKLSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ25ldGJzZCcpOgogICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCiAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQogCkBAIC0xMzgyLDE3ICsxNDY2LDEzIEBACiAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgIG11bHRpcHJvY2Vzc2luZ19zcmNzID0gWyAnX211bHRpcHJvY2Vzc2luZy9tdWx0aXByb2Nlc3NpbmcuYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19tdWx0aXByb2Nlc3Npbmcvc2VtYXBob3JlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3BpcGVfY29ubmVjdGlvbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy9zb2NrZXRfY29ubmVjdGlvbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX211bHRpcHJvY2Vzc2luZy93aW4zMl9mdW5jdGlvbnMuYycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQogCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtdWx0aXByb2Nlc3Npbmdfc3JjcyA9IFsgJ19tdWx0aXByb2Nlc3NpbmcvbXVsdGlwcm9jZXNzaW5nLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfbXVsdGlwcm9jZXNzaW5nL3NvY2tldF9jb25uZWN0aW9uLmMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIGlmIChzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfU0VNX09QRU4nKSBhbmQgbm90CiAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQT1NJWF9TRU1BUEhPUkVTX05PVF9FTkFCTEVEJykpOgpAQCAtMTQwNywxNCArMTQ4NywxMiBAQAogICAgICAgICAjIEVuZCBtdWx0aXByb2Nlc3NpbmcKIAogICAgICAgICAjIFBsYXRmb3JtLXNwZWNpZmljIGxpYnJhcmllcwotICAgICAgICBpZiAocGxhdGZvcm0gaW4gKCdsaW51eDInLCAnZnJlZWJzZDQnLCAnZnJlZWJzZDUnLCAnZnJlZWJzZDYnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2ZyZWVic2Q3JywgJ2ZyZWVic2Q4JykKLSAgICAgICAgICAgIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoImdudWtmcmVlYnNkIikpOgorICAgICAgICBpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJywgJ2dudWtmcmVlYnNkJykpOgogICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignb3NzYXVkaW9kZXYnLCBbJ29zc2F1ZGlvZGV2LmMnXSkgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ29zc2F1ZGlvZGV2JykKIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBleHRzLmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW5zaW9uKCdfZ2VzdGFsdCcsIFsnX2dlc3RhbHQuYyddLAogICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9WyctZnJhbWV3b3JrJywgJ0NhcmJvbiddKQpAQCAtMTUzMiw4ICsxNjEwLDcgQEAKICAgICAgICAgIyBSYXRoZXIgdGhhbiBjb21wbGljYXRlIHRoZSBjb2RlIGJlbG93LCBkZXRlY3RpbmcgYW5kIGJ1aWxkaW5nCiAgICAgICAgICMgQXF1YVRrIGlzIGEgc2VwYXJhdGUgbWV0aG9kLiBPbmx5IG9uZSBUa2ludGVyIHdpbGwgYmUgYnVpbHQgb24KICAgICAgICAgIyBEYXJ3aW4gLSBlaXRoZXIgQXF1YVRrLCBpZiBpdCBpcyBmb3VuZCwgb3IgWDExIGJhc2VkIFRrLgotICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0X3BsYXRmb3JtKCkKLSAgICAgICAgaWYgKHBsYXRmb3JtID09ICdkYXJ3aW4nIGFuZAorICAgICAgICBpZiAoaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJyBhbmQKICAgICAgICAgICAgIHNlbGYuZGV0ZWN0X3RraW50ZXJfZGFyd2luKGluY19kaXJzLCBsaWJfZGlycykpOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTE1NTYsNyArMTYzMyw3IEBACiAgICAgICAgICAgICAjIENoZWNrIGZvciB0aGUgaW5jbHVkZSBmaWxlcyBvbiBEZWJpYW4gYW5kIHtGcmVlLE9wZW59QlNELCB3aGVyZQogICAgICAgICAgICAgIyB0aGV5J3JlIHB1dCBpbiAvdXNyL2luY2x1ZGUve3RjbCx0a31YLlkKICAgICAgICAgICAgIGRvdHZlcnNpb24gPSB2ZXJzaW9uCi0gICAgICAgICAgICBpZiAnLicgbm90IGluIGRvdHZlcnNpb24gYW5kICJic2QiIGluIHN5cy5wbGF0Zm9ybS5sb3dlcigpOgorICAgICAgICAgICAgaWYgJy4nIG5vdCBpbiBkb3R2ZXJzaW9uIGFuZCAiYnNkIiBpbiBob3N0X3BsYXRmb3JtLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgIyBPcGVuQlNEIGFuZCBGcmVlQlNEIHVzZSBUY2wvVGsgbGlicmFyeSBuYW1lcyBsaWtlIGxpYnRjbDgzLmEsCiAgICAgICAgICAgICAgICAgIyBidXQgdGhlIGluY2x1ZGUgc3ViZGlycyBhcmUgbmFtZWQgbGlrZSAuLi4vaW5jbHVkZS90Y2w4LjMuCiAgICAgICAgICAgICAgICAgZG90dmVyc2lvbiA9IGRvdHZlcnNpb25bOi0xXSArICcuJyArIGRvdHZlcnNpb25bLTFdCkBAIC0xNTgyLDcgKzE2NTksNyBAQAogICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoZGlyKQogCiAgICAgICAgICMgQ2hlY2sgZm9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMgZGlyZWN0b3JpZXMKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ3N1bm9zNSc6CiAgICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL29wZW53aW4vaW5jbHVkZScpCiAgICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3Ivb3Blbndpbi9saWInKQogICAgICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKCcvdXNyL1gxMVI2L2luY2x1ZGUnKToKQEAgLTE1OTgsNyArMTY3NSw3IEBACiAgICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExL2xpYicpCiAKICAgICAgICAgIyBJZiBDeWd3aW4sIHRoZW4gdmVyaWZ5IHRoYXQgWCBpcyBpbnN0YWxsZWQgYmVmb3JlIHByb2NlZWRpbmcKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICB4MTFfaW5jID0gZmluZF9maWxlKCdYMTEvWGxpYi5oJywgW10sIGluY2x1ZGVfZGlycykKICAgICAgICAgICAgIGlmIHgxMV9pbmMgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4KQEAgLTE2MTcsMTEgKzE2OTQsMTEgQEAKICAgICAgICAgbGlicy5hcHBlbmQoJ3RrJysgdmVyc2lvbikKICAgICAgICAgbGlicy5hcHBlbmQoJ3RjbCcrIHZlcnNpb24pCiAKLSAgICAgICAgaWYgcGxhdGZvcm0gaW4gWydhaXgzJywgJ2FpeDQnXToKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSBpbiBbJ2FpeDMnLCAnYWl4NCddOgogICAgICAgICAgICAgbGlicy5hcHBlbmQoJ2xkJykKIAogICAgICAgICAjIEZpbmFsbHksIGxpbmsgd2l0aCB0aGUgWDExIGxpYnJhcmllcyAobm90IGFwcHJvcHJpYXRlIG9uIGN5Z3dpbikKLSAgICAgICAgaWYgcGxhdGZvcm0gIT0gImN5Z3dpbiI6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gIT0gImN5Z3dpbiI6CiAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnWDExJykKIAogICAgICAgICBleHQgPSBFeHRlbnNpb24oJ190a2ludGVyJywgWydfdGtpbnRlci5jJywgJ3RrYXBwaW5pdC5jJ10sCkBAIC0xNjc3LDcgKzE3NTQsNyBAQAogCiAgICAgZGVmIGNvbmZpZ3VyZV9jdHlwZXMoc2VsZiwgZXh0KToKICAgICAgICAgaWYgbm90IHNlbGYudXNlX3N5c3RlbV9saWJmZmk6Ci0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbmZpZ3VyZV9jdHlwZXNfZGFyd2luKGV4dCkKIAogICAgICAgICAgICAgc3JjZGlyID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQpAQCAtMTY5NSw3ICsxNzcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmZpX2NvbmZpZ2ZpbGUpOgogICAgICAgICAgICAgICAgIGZyb20gZGlzdHV0aWxzLmRpcl91dGlsIGltcG9ydCBta3BhdGgKICAgICAgICAgICAgICAgICBta3BhdGgoZmZpX2J1aWxkZGlyKQotICAgICAgICAgICAgICAgIGNvbmZpZ19hcmdzID0gW10KKyAgICAgICAgICAgICAgICBjb25maWdfYXJncyA9IFthcmcgZm9yIGFyZyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIikuc3BsaXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoJy0taG9zdD0nIGluIGFyZykgb3IgKCctLWJ1aWxkPScgaW4gYXJnKSldCiAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYudmVyYm9zZToKICAgICAgICAgICAgICAgICAgICAgY29uZmlnX2FyZ3MuYXBwZW5kKCItcSIpCiAKQEAgLTE3MzksNyArMTgxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgJ19jdHlwZXMvY2ZpZWxkLmMnXQogICAgICAgICBkZXBlbmRzID0gWydfY3R5cGVzL2N0eXBlcy5oJ10KIAotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBzb3VyY2VzLmFwcGVuZCgnX2N0eXBlcy9tYWxsb2NfY2xvc3VyZS5jJykKICAgICAgICAgICAgIHNvdXJjZXMuYXBwZW5kKCdfY3R5cGVzL2Rhcndpbi9kbGZjbl9zaW1wbGUuYycpCiAgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3MuYXBwZW5kKCctRE1BQ09TWCcpCkBAIC0xNzQ3LDcgKzE4MjUsNyBAQAogIyBYWFggSXMgdGhpcyBzdGlsbCBuZWVkZWQ/CiAjIyAgICAgICAgICAgIGV4dHJhX2xpbmtfYXJncy5leHRlbmQoWyctcmVhZF9vbmx5X3JlbG9jcycsICd3YXJuaW5nJ10pCiAKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3N1bm9zNSc6CisgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKICAgICAgICAgICAgICMgWFhYIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeTsgaXQgYXBwZWFycyB0aGF0IHNvbWUKICAgICAgICAgICAgICMgb2YgdGhlIGFzc2VtYmxlciBjb2RlIGlzIG5vbi1QSUMgKGkuZS4gaXQgaGFzIHJlbG9jYXRpb25zCiAgICAgICAgICAgICAjIHdoZW4gaXQgc2hvdWxkbid0LiBUaGUgcHJvcGVyIGZpeCB3b3VsZCBiZSB0byByZXdyaXRlCkBAIC0xNzU4LDcgKzE4MzYsNyBAQAogICAgICAgICAgICAgIyBmaW5kaW5nIHNvbWUgLXogb3B0aW9uIGZvciB0aGUgU3VuIGNvbXBpbGVyLgogICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzLmFwcGVuZCgnLW1pbXB1cmUtdGV4dCcpCiAKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnaHAtdXgnKToKKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoJ2hwLXV4Jyk6CiAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3MuYXBwZW5kKCctZlBJQycpCiAKICAgICAgICAgZXh0ID0gRXh0ZW5zaW9uKCdfY3R5cGVzJywKQEAgLTE3NzUsNyArMTg1Myw3IEBACiAgICAgICAgIGlmIG5vdCAnLS13aXRoLXN5c3RlbS1mZmknIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgICMgT1MgWCAxMC41IGNvbWVzIHdpdGggbGliZmZpLmR5bGliOyB0aGUgaW5jbHVkZSBmaWxlcyBhcmUKICAgICAgICAgICAgICMgaW4gL3Vzci9pbmNsdWRlL2ZmaQogICAgICAgICAgICAgaW5jX2RpcnMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvZmZpJykKQEAgLTE4MDUsNiArMTg4MywxMjggQEAKICAgICAgICAgICAgIGV4dC5saWJyYXJpZXMuYXBwZW5kKGZmaV9saWIpCiAgICAgICAgICAgICBzZWxmLnVzZV9zeXN0ZW1fbGliZmZpID0gVHJ1ZQogCisgICAgZGVmIF9kZWNpbWFsX2V4dChzZWxmKToKKyAgICAgICAgZXh0cmFfY29tcGlsZV9hcmdzID0gW10KKyAgICAgICAgdW5kZWZfbWFjcm9zID0gW10KKyAgICAgICAgaWYgJy0td2l0aC1zeXN0ZW0tbGlibXBkZWMnIGluIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiQ09ORklHX0FSR1MiKToKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFtdCisgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ21wZGVjJ10KKyAgICAgICAgICAgIHNvdXJjZXMgPSBbJ19kZWNpbWFsL19kZWNpbWFsLmMnXQorICAgICAgICAgICAgZGVwZW5kcyA9IFsnX2RlY2ltYWwvZG9jc3RyaW5ncy5oJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKKyAgICAgICAgICAgIGluY2x1ZGVfZGlycyA9IFtvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNb2R1bGVzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfZGVjaW1hbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlibXBkZWMnKSldCisgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQorICAgICAgICAgICAgc291cmNlcyA9IFsKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL19kZWNpbWFsLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvYmFzZWFyaXRoLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29uc3RhbnRzLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvY29udGV4dC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NvbnZvbHV0ZS5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2NydC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2RpZnJhZGl4Mi5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZudC5jJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2ZvdXJzdGVwLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvaW8uYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tZW1vcnkuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuYycsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmMnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvdHJhbnNwb3NlLmMnLAorICAgICAgICAgICAgICBdCisgICAgICAgICAgICBkZXBlbmRzID0gWworICAgICAgICAgICAgICAnX2RlY2ltYWwvZG9jc3RyaW5ncy5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2Jhc2Vhcml0aC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2JpdHMuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb25zdGFudHMuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jb252b2x1dGUuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9jcnQuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9kaWZyYWRpeDIuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mbnQuaCcsCisgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9mb3Vyc3RlcC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL2lvLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbWVtb3J5LmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbXBkZWNpbWFsLmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvbnVtYmVydGhlb3J5LmgnLAorICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvc2l4c3RlcC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3RyYW5zcG9zZS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3R5cGVhcml0aC5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL3Vtb2Rhcml0aC5oJywKKyAgICAgICAgICAgICAgXQorCisgICAgICAgIGNvbmZpZyA9IHsKKyAgICAgICAgICAneDY0JzogICAgIFsoJ0NPTkZJR182NCcsJzEnKSwgKCdBU00nLCcxJyldLAorICAgICAgICAgICd1aW50MTI4JzogWygnQ09ORklHXzY0JywnMScpLCAoJ0FOU0knLCcxJyksICgnSEFWRV9VSU5UMTI4X1QnLCcxJyldLAorICAgICAgICAgICdhbnNpNjQnOiAgWygnQ09ORklHXzY0JywnMScpLCAoJ0FOU0knLCcxJyldLAorICAgICAgICAgICdwcHJvJzogICAgWygnQ09ORklHXzMyJywnMScpLCAoJ1BQUk8nLCcxJyksICgnQVNNJywnMScpXSwKKyAgICAgICAgICAnYW5zaTMyJzogIFsoJ0NPTkZJR18zMicsJzEnKSwgKCdBTlNJJywnMScpXSwKKyAgICAgICAgICAnYW5zaS1sZWdhY3knOiBbKCdDT05GSUdfMzInLCcxJyksICgnQU5TSScsJzEnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdMRUdBQ1lfQ09NUElMRVInLCcxJyldLAorICAgICAgICAgICd1bml2ZXJzYWwnOiAgIFsoJ1VOSVZFUlNBTCcsJzEnKV0KKyAgICAgICAgfQorCisgICAgICAgIGNjID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdDQycpCisgICAgICAgIHNpemVvZl9zaXplX3QgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1NJWkVPRl9TSVpFX1QnKQorICAgICAgICBtYWNoaW5lID0gb3MuZW52aXJvbi5nZXQoJ1BZVEhPTl9ERUNJTUFMX1dJVEhfTUFDSElORScpCisKKyAgICAgICAgaWYgbWFjaGluZToKKyAgICAgICAgICAgICMgT3ZlcnJpZGUgYXV0b21hdGljIGNvbmZpZ3VyYXRpb24gdG8gZmFjaWxpdGF0ZSB0ZXN0aW5nLgorICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1ttYWNoaW5lXQorICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICAjIFVuaXZlcnNhbCBoZXJlIG1lYW5zOiBidWlsZCB3aXRoIHRoZSBzYW1lIG9wdGlvbnMgUHl0aG9uCisgICAgICAgICAgICAjIHdhcyBidWlsdCB3aXRoLgorICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sndW5pdmVyc2FsJ10KKyAgICAgICAgZWxpZiBzaXplb2Zfc2l6ZV90ID09IDg6CisgICAgICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0NDX0FTTV9GT1JfWDY0Jyk6CisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1sneDY0J10KKyAgICAgICAgICAgIGVsaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIQVZFX0dDQ19VSU5UMTI4X1QnKToKKyAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zID0gY29uZmlnWyd1aW50MTI4J10KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1snYW5zaTY0J10KKyAgICAgICAgZWxpZiBzaXplb2Zfc2l6ZV90ID09IDQ6CisgICAgICAgICAgICBwcHJvID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIQVZFX0dDQ19BU01fRk9SX1g4NycpCisgICAgICAgICAgICBpZiBwcHJvIGFuZCAoJ2djYycgaW4gY2Mgb3IgJ2NsYW5nJyBpbiBjYykgYW5kIFwKKyAgICAgICAgICAgICAgIG5vdCAnc3Vub3MnIGluIGhvc3RfcGxhdGZvcm06CisgICAgICAgICAgICAgICAgIyBzb2xhcmlzOiBwcm9ibGVtcyB3aXRoIHJlZ2lzdGVyIGFsbG9jYXRpb24uCisgICAgICAgICAgICAgICAgIyBpY2MgPj0gMTEuMCB3b3JrcyBhcyB3ZWxsLgorICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3MgPSBjb25maWdbJ3Bwcm8nXQorICAgICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5hcHBlbmQoJy1Xbm8tdW5rbm93bi1wcmFnbWFzJykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IGNvbmZpZ1snYW5zaTMyJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc0Vycm9yKCJfZGVjaW1hbDogdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIikKKworICAgICAgICAjIFdvcmthcm91bmRzIGZvciB0b29sY2hhaW4gYnVnczoKKyAgICAgICAgaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIQVZFX0lQQV9QVVJFX0NPTlNUX0JVRycpOgorICAgICAgICAgICAgIyBTb21lIHZlcnNpb25zIG9mIGdjYyBtaXNjb21waWxlIGlubGluZSBhc206CisgICAgICAgICAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDY0OTEKKyAgICAgICAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy8yMDEwLTExL21zZzAwMzY2Lmh0bWwKKyAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5hcHBlbmQoJy1mbm8taXBhLXB1cmUtY29uc3QnKQorICAgICAgICBpZiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0hBVkVfR0xJQkNfTUVNTU9WRV9CVUcnKToKKyAgICAgICAgICAgICMgX0ZPUlRJRllfU09VUkNFIHdyYXBwZXJzIGZvciBtZW1tb3ZlIGFuZCBiY29weSBhcmUgaW5jb3JyZWN0OgorICAgICAgICAgICAgIyBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDEwLTEyL21zZzAwMDA5Lmh0bWwKKyAgICAgICAgICAgIHVuZGVmX21hY3Jvcy5hcHBlbmQoJ19GT1JUSUZZX1NPVVJDRScpCisKKyAgICAgICAgIyBGYXN0ZXIgdmVyc2lvbiB3aXRob3V0IHRocmVhZCBsb2NhbCBjb250ZXh0czoKKyAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignV0lUSF9USFJFQUQnKToKKyAgICAgICAgICAgIGRlZmluZV9tYWNyb3MuYXBwZW5kKCgnV0lUSE9VVF9USFJFQURTJywgMSkpCisKKyAgICAgICAgIyBVbmNvbW1lbnQgZm9yIGV4dHJhIGZ1bmN0aW9uYWxpdHk6CisgICAgICAgICNkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ0VYVFJBX0ZVTkNUSU9OQUxJVFknLCAxKSkKKyAgICAgICAgZXh0ID0gRXh0ZW5zaW9uICgKKyAgICAgICAgICAgICdfZGVjaW1hbCcsCisgICAgICAgICAgICBpbmNsdWRlX2RpcnM9aW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcywKKyAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9ZGVmaW5lX21hY3JvcywKKyAgICAgICAgICAgIHVuZGVmX21hY3Jvcz11bmRlZl9tYWNyb3MsCisgICAgICAgICAgICBleHRyYV9jb21waWxlX2FyZ3M9ZXh0cmFfY29tcGlsZV9hcmdzLAorICAgICAgICAgICAgc291cmNlcz1zb3VyY2VzLAorICAgICAgICAgICAgZGVwZW5kcz1kZXBlbmRzCisgICAgICAgICkKKyAgICAgICAgcmV0dXJuIGV4dAogCiBjbGFzcyBQeUJ1aWxkSW5zdGFsbChpbnN0YWxsKToKICAgICAjIFN1cHByZXNzIHRoZSB3YXJuaW5nIGFib3V0IGluc3RhbGxhdGlvbiBpbnRvIHRoZSBsaWJfZHlubG9hZApAQCAtMTgxNCw2ICsyMDE0LDEzIEBACiAgICAgICAgIGluc3RhbGwuaW5pdGlhbGl6ZV9vcHRpb25zKHNlbGYpCiAgICAgICAgIHNlbGYud2Fybl9kaXI9MAogCisgICAgIyBDdXN0b21pemUgc3ViY29tbWFuZHMgdG8gbm90IGluc3RhbGwgYW4gZWdnLWluZm8gZmlsZSBmb3IgUHl0aG9uCisgICAgc3ViX2NvbW1hbmRzID0gWygnaW5zdGFsbF9saWInLCBpbnN0YWxsLmhhc19saWIpLAorICAgICAgICAgICAgICAgICAgICAoJ2luc3RhbGxfaGVhZGVycycsIGluc3RhbGwuaGFzX2hlYWRlcnMpLAorICAgICAgICAgICAgICAgICAgICAoJ2luc3RhbGxfc2NyaXB0cycsIGluc3RhbGwuaGFzX3NjcmlwdHMpLAorICAgICAgICAgICAgICAgICAgICAoJ2luc3RhbGxfZGF0YScsIGluc3RhbGwuaGFzX2RhdGEpXQorCisKIGNsYXNzIFB5QnVpbGRJbnN0YWxsTGliKGluc3RhbGxfbGliKToKICAgICAjIERvIGV4YWN0bHkgd2hhdCBpbnN0YWxsX2xpYiBkb2VzIGJ1dCBtYWtlIHN1cmUgY29ycmVjdCBhY2Nlc3MgbW9kZXMgZ2V0CiAgICAgIyBzZXQgb24gaW5zdGFsbGVkIGRpcmVjdG9yaWVzIGFuZCBmaWxlcy4gQWxsIGluc3RhbGxlZCBmaWxlcyB3aXRoIGdldApAQCAtMTg1OCw3ICsyMDY1LDcgQEAKICAgICAgICAgbmV3b3V0ZmlsZXMgPSBbXQogICAgICAgICBuZXd1cGRhdGVkX2ZpbGVzID0gW10KICAgICAgICAgZm9yIGZpbGVuYW1lIGluIG91dGZpbGVzOgotICAgICAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJzJ0bzMnKToKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCgnMnRvMycsICdweXZlbnYnKSk6CiAgICAgICAgICAgICAgICAgbmV3ZmlsZW5hbWUgPSBmaWxlbmFtZSArIGZ1bGx2ZXJzaW9uCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBtaW5vcm9ubHkKQEAgLTE5MjYsNyArMjEzMyw3IEBACiAgICAgICAgICAgIyBjaGVjayB0aGUgUHlCdWlsZFNjcmlwdHMgY29tbWFuZCBhYm92ZSwgYW5kIGNoYW5nZSB0aGUgbGlua3MKICAgICAgICAgICAjIGNyZWF0ZWQgYnkgdGhlIGJpbmluc3RhbGwgdGFyZ2V0IGluIE1ha2VmaWxlLnByZS5pbgogICAgICAgICAgIHNjcmlwdHMgPSBbIlRvb2xzL3NjcmlwdHMvcHlkb2MzIiwgIlRvb2xzL3NjcmlwdHMvaWRsZTMiLAotICAgICAgICAgICAgICAgICAgICAgIlRvb2xzL3NjcmlwdHMvMnRvMyJdCisgICAgICAgICAgICAgICAgICAgICAiVG9vbHMvc2NyaXB0cy8ydG8zIiwgIlRvb2xzL3NjcmlwdHMvcHl2ZW52Il0KICAgICAgICAgKQogCiAjIC0taW5zdGFsbC1wbGF0bGliCg==